Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.clang-format12
-rw-r--r--.gitattributes18
-rw-r--r--.gitignore5
-rw-r--r--.mvn/extensions.xml6
-rw-r--r--.project11
-rw-r--r--CONTRIBUTING.md72
-rw-r--r--LICENSE277
-rw-r--r--README.md192
-rw-r--r--build/org.eclipse.cdt.autotools-feature/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--build/org.eclipse.cdt.autotools-feature/feature.xml21
-rw-r--r--build/org.eclipse.cdt.autotools.core/.classpath2
-rw-r--r--build/org.eclipse.cdt.autotools.core/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--build/org.eclipse.cdt.autotools.core/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--build/org.eclipse.cdt.autotools.core/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--build/org.eclipse.cdt.autotools.core/META-INF/MANIFEST.MF6
-rw-r--r--build/org.eclipse.cdt.autotools.core/about.html14
-rw-r--r--build/org.eclipse.cdt.autotools.core/build.properties5
-rw-r--r--build/org.eclipse.cdt.autotools.core/css/e4-dark_autotools.css28
-rw-r--r--build/org.eclipse.cdt.autotools.core/plugin.xml11
-rw-r--r--build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/AutotoolsEnvironmentVariableSupplier.java10
-rw-r--r--build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/AutotoolsNewMakeGenerator.java105
-rw-r--r--build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/AutotoolsPropertyConstants.java6
-rw-r--r--build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/ErrorParser.java14
-rw-r--r--build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/PkgconfigErrorResolution.java6
-rw-r--r--build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/VersionComparator.java4
-rw-r--r--build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/AbstractConfigurationOption.java2
-rw-r--r--build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/AutotoolsConfiguration.java12
-rw-r--r--build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/AutotoolsConfigurationManager.java10
-rw-r--r--build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/AutotoolsOptionValueHandler.java4
-rw-r--r--build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/ConfigureMessages.java2
-rw-r--r--build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/ConfigureOptionCategory.java6
-rw-r--r--build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/FlagConfigureOption.java2
-rw-r--r--build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/FlagValueConfigureOption.java2
-rw-r--r--build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/InternalConfigureOption.java2
-rw-r--r--build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/StringConfigureOption.java2
-rw-r--r--build/org.eclipse.cdt.autotools.docs/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--build/org.eclipse.cdt.autotools.docs/.settings/org.eclipse.jdt.core.prefs464
-rw-r--r--build/org.eclipse.cdt.autotools.docs/.settings/org.eclipse.jdt.ui.prefs133
-rw-r--r--build/org.eclipse.cdt.autotools.docs/CDT/Autotools/User_Guide/Updating-This-Document.html2
-rw-r--r--build/org.eclipse.cdt.autotools.docs/CDT/Autotools/User_Guide/User-Guide.html4
-rw-r--r--build/org.eclipse.cdt.autotools.docs/META-INF/MANIFEST.MF2
-rw-r--r--build/org.eclipse.cdt.autotools.docs/about.html14
-rw-r--r--build/org.eclipse.cdt.autotools.docs/build-helper.xml4
-rw-r--r--build/org.eclipse.cdt.autotools.docs/build-index.xml2
-rw-r--r--build/org.eclipse.cdt.autotools.docs/pom.xml36
-rw-r--r--build/org.eclipse.cdt.autotools.docs/tools.xml10
-rw-r--r--build/org.eclipse.cdt.autotools.tests/.classpath8
-rw-r--r--build/org.eclipse.cdt.autotools.tests/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--build/org.eclipse.cdt.autotools.tests/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--build/org.eclipse.cdt.autotools.tests/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--build/org.eclipse.cdt.autotools.tests/META-INF/MANIFEST.MF8
-rw-r--r--build/org.eclipse.cdt.autotools.tests/about.html14
-rw-r--r--build/org.eclipse.cdt.autotools.tests/src/org/eclipse/cdt/autotools/tests/AutomatedIntegrationSuite.java8
-rw-r--r--build/org.eclipse.cdt.autotools.tests/src/org/eclipse/cdt/autotools/tests/AutotoolsProject0Test.java86
-rw-r--r--build/org.eclipse.cdt.autotools.tests/src/org/eclipse/cdt/autotools/tests/AutotoolsProject1Test.java89
-rw-r--r--build/org.eclipse.cdt.autotools.tests/src/org/eclipse/cdt/autotools/tests/AutotoolsProject2Test.java104
-rw-r--r--build/org.eclipse.cdt.autotools.tests/src/org/eclipse/cdt/autotools/tests/AutotoolsProjectTest0.java86
-rw-r--r--build/org.eclipse.cdt.autotools.tests/src/org/eclipse/cdt/autotools/tests/AutotoolsProjectTest1.java89
-rw-r--r--build/org.eclipse.cdt.autotools.tests/src/org/eclipse/cdt/autotools/tests/AutotoolsProjectTest2.java104
-rw-r--r--build/org.eclipse.cdt.autotools.tests/src/org/eclipse/cdt/autotools/tests/editors/EditorTestSuite.java22
-rw-r--r--build/org.eclipse.cdt.autotools.tests/src/org/eclipse/cdt/autotools/tests/editors/EditorTests.java22
-rw-r--r--build/org.eclipse.cdt.autotools.ui.tests/.classpath8
-rw-r--r--build/org.eclipse.cdt.autotools.ui.tests/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--build/org.eclipse.cdt.autotools.ui.tests/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--build/org.eclipse.cdt.autotools.ui.tests/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--build/org.eclipse.cdt.autotools.ui.tests/META-INF/MANIFEST.MF6
-rw-r--r--build/org.eclipse.cdt.autotools.ui.tests/about.html14
-rw-r--r--build/org.eclipse.cdt.autotools.ui.tests/src/org/eclipse/cdt/autotools/ui/tests/AutomatedIntegrationSuite.java27
-rw-r--r--build/org.eclipse.cdt.autotools.ui.tests/src/org/eclipse/cdt/autotools/ui/tests/SetConfigurationParameter.java485
-rw-r--r--build/org.eclipse.cdt.autotools.ui.tests/src/org/eclipse/cdt/autotools/ui/tests/SetConfigurationParameterTest.java487
-rw-r--r--build/org.eclipse.cdt.autotools.ui.tests/src/org/eclipse/cdt/autotools/ui/tests/TestEnvironmentVars.java2
-rw-r--r--build/org.eclipse.cdt.autotools.ui.tests/src/org/eclipse/cdt/autotools/ui/tests/TestMakeTargets.java2
-rw-r--r--build/org.eclipse.cdt.autotools.ui.tests/src/org/eclipse/cdt/autotools/ui/tests/TestToolActions.java2
-rw-r--r--build/org.eclipse.cdt.autotools.ui.tests/src/org/eclipse/cdt/autotools/ui/tests/autoconf/AutoconfTestSuite.java23
-rw-r--r--build/org.eclipse.cdt.autotools.ui.tests/src/org/eclipse/cdt/autotools/ui/tests/autoconf/AutoconfTests.java23
-rw-r--r--build/org.eclipse.cdt.autotools.ui.tests/src/org/eclipse/cdt/autotools/ui/tests/autoconf/BaseParserTest.java21
-rw-r--r--build/org.eclipse.cdt.autotools.ui.tests/src/org/eclipse/cdt/autotools/ui/tests/autoconf/TestTokenizer.java21
-rw-r--r--build/org.eclipse.cdt.autotools.ui/.classpath2
-rw-r--r--build/org.eclipse.cdt.autotools.ui/.settings/.api_filters9
-rw-r--r--build/org.eclipse.cdt.autotools.ui/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--build/org.eclipse.cdt.autotools.ui/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--build/org.eclipse.cdt.autotools.ui/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--build/org.eclipse.cdt.autotools.ui/META-INF/MANIFEST.MF29
-rw-r--r--build/org.eclipse.cdt.autotools.ui/about.html14
-rw-r--r--build/org.eclipse.cdt.autotools.ui/about.ini (renamed from lrparser/org.eclipse.cdt.core.lrparser/about.ini)0
-rw-r--r--build/org.eclipse.cdt.autotools.ui/about.mappings9
-rw-r--r--build/org.eclipse.cdt.autotools.ui/about.properties32
-rw-r--r--build/org.eclipse.cdt.autotools.ui/build.properties6
-rw-r--r--build/org.eclipse.cdt.autotools.ui/cdt_logo_icon32.png (renamed from lrparser/org.eclipse.cdt.core.lrparser/cdt_logo_icon32.png)bin1885 -> 1885 bytes
-rw-r--r--build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/AutotoolsUIPlugin.java3
-rw-r--r--build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/AcInitElement.java4
-rw-r--r--build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/AutoconfCodeScanner.java2
-rw-r--r--build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/AutoconfMacroCodeScanner.java4
-rw-r--r--build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/AutoconfPartitionScanner.java2
-rw-r--r--build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/InlineDataRule.java2
-rw-r--r--build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/outline/AutoconfContentProvider.java2
-rw-r--r--build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/outline/AutoconfLabelProvider.java10
-rw-r--r--build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/parser/AutoconfCaseConditionElement.java2
-rw-r--r--build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/parser/AutoconfMacroArgumentElement.java2
-rw-r--r--build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/parser/AutoconfOutlineErrorHandler.java2
-rw-r--r--build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/parser/AutoconfParser.java16
-rw-r--r--build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/parser/AutoconfTokenizer.java68
-rw-r--r--build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/parser/Token.java2
-rw-r--r--build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/LocationAdapter.java4
-rw-r--r--build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/actions/AbstractAutotoolsHandler.java2
-rw-r--r--build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/editors/automake/AutomakeConfigMacro.java2
-rw-r--r--build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/editors/automake/AutomakeErrorHandler.java8
-rw-r--r--build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/editors/automake/AutomakeTextHover.java6
-rw-r--r--build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/editors/automake/AutomakefileCodeScanner.java25
-rw-r--r--build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/editors/automake/AutomakefileContentOutlinePage.java6
-rw-r--r--build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/editors/automake/GNUAutomakefile.java4
-rw-r--r--build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/editors/automake/MakefilePartitionScanner.java2
-rw-r--r--build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/editors/automake/NullMakefile.java2
-rw-r--r--build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/preferences/AbstractEditorPreferencePage.java4
-rw-r--r--build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/preferences/AutoconfEditorPreferencePage.java23
-rw-r--r--build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/preferences/AutomakeEditorPreferencePage.java17
-rw-r--r--build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/preferences/AutotoolsEditorPreferenceConstants.java4
-rw-r--r--build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/properties/AutotoolsBuildPropertyPage.java2
-rw-r--r--build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/properties/AutotoolsCategoryPropertyOptionPage.java8
-rw-r--r--build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/properties/AutotoolsConfigurePrefStore.java2
-rw-r--r--build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/properties/AutotoolsConfigurePropertyTab.java2
-rw-r--r--build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/properties/AutotoolsEditorPropertyTab.java8
-rw-r--r--build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/properties/AutotoolsToolPropertyOptionPage.java2
-rw-r--r--build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/properties/AutotoolsToolsPropertyTab.java2
-rw-r--r--build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/text/hover/AutoconfTextHover.java20
-rw-r--r--build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/wizards/AutotoolsProjectImportWizard.java4
-rw-r--r--build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/wizards/AutotoolsProjectImportWizardPage.java10
-rw-r--r--build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/wizards/ConfigurationLabelProvider.java2
-rw-r--r--build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/wizards/ConvertToAutotoolsProjectWizardPage.java6
-rw-r--r--build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/wizards/ReferenceBlock.java2
-rw-r--r--build/org.eclipse.cdt.build.gcc.core/.classpath2
-rw-r--r--build/org.eclipse.cdt.build.gcc.core/.project6
-rw-r--r--build/org.eclipse.cdt.build.gcc.core/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--build/org.eclipse.cdt.build.gcc.core/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--build/org.eclipse.cdt.build.gcc.core/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--build/org.eclipse.cdt.build.gcc.core/META-INF/MANIFEST.MF12
-rw-r--r--build/org.eclipse.cdt.build.gcc.core/about.html14
-rw-r--r--build/org.eclipse.cdt.build.gcc.core/build.properties1
-rw-r--r--build/org.eclipse.cdt.build.gcc.core/plugin.properties14
-rw-r--r--build/org.eclipse.cdt.build.gcc.core/src/org/eclipse/cdt/build/gcc/core/GCCToolChain.java2
-rw-r--r--build/org.eclipse.cdt.build.gcc.core/src/org/eclipse/cdt/build/gcc/core/internal/GCCPathToolChainProvider.java4
-rw-r--r--build/org.eclipse.cdt.build.gcc.ui/.classpath2
-rw-r--r--build/org.eclipse.cdt.build.gcc.ui/.project6
-rw-r--r--build/org.eclipse.cdt.build.gcc.ui/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--build/org.eclipse.cdt.build.gcc.ui/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--build/org.eclipse.cdt.build.gcc.ui/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--build/org.eclipse.cdt.build.gcc.ui/META-INF/MANIFEST.MF10
-rw-r--r--build/org.eclipse.cdt.build.gcc.ui/about.html14
-rw-r--r--build/org.eclipse.cdt.build.gcc.ui/about.ini (renamed from upc/org.eclipse.cdt.core.parser.upc/about.ini)0
-rw-r--r--build/org.eclipse.cdt.build.gcc.ui/about.mappings9
-rw-r--r--build/org.eclipse.cdt.build.gcc.ui/about.properties32
-rw-r--r--build/org.eclipse.cdt.build.gcc.ui/build.properties7
-rw-r--r--build/org.eclipse.cdt.build.gcc.ui/cdt_logo_icon32.png (renamed from upc/org.eclipse.cdt.core.parser.upc/cdt_logo_icon32.png)bin1885 -> 1885 bytes
-rw-r--r--build/org.eclipse.cdt.build.gcc.ui/plugin.properties14
-rw-r--r--build/org.eclipse.cdt.cmake-feature/feature.xml44
-rw-r--r--build/org.eclipse.cdt.cmake.core/.classpath7
-rw-r--r--build/org.eclipse.cdt.cmake.core/.project28
-rw-r--r--build/org.eclipse.cdt.cmake.core/.settings/org.eclipse.jdt.core.prefs464
-rw-r--r--build/org.eclipse.cdt.cmake.core/.settings/org.eclipse.jdt.ui.prefs133
-rw-r--r--build/org.eclipse.cdt.cmake.core/META-INF/MANIFEST.MF19
-rw-r--r--build/org.eclipse.cdt.cmake.core/about.html36
-rw-r--r--build/org.eclipse.cdt.cmake.core/build.properties9
-rw-r--r--build/org.eclipse.cdt.cmake.core/plugin.xml22
-rw-r--r--build/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CMakeBuildConfiguration.java338
-rw-r--r--build/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CompileCommand.java31
-rw-r--r--build/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/Messages.java35
-rw-r--r--build/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/messages.properties21
-rw-r--r--build/org.eclipse.cdt.cmake.ui.tests/.classpath7
-rw-r--r--build/org.eclipse.cdt.cmake.ui.tests/.settings/org.eclipse.jdt.core.prefs464
-rw-r--r--build/org.eclipse.cdt.cmake.ui.tests/.settings/org.eclipse.jdt.ui.prefs133
-rw-r--r--build/org.eclipse.cdt.cmake.ui.tests/META-INF/MANIFEST.MF12
-rw-r--r--build/org.eclipse.cdt.cmake.ui.tests/about.html36
-rw-r--r--build/org.eclipse.cdt.cmake.ui.tests/build.properties7
-rw-r--r--build/org.eclipse.cdt.cmake.ui.tests/pom.xml43
-rw-r--r--build/org.eclipse.cdt.cmake.ui.tests/src/org/eclipse/cdt/cmake/ui/internal/tests/AutomatedIntegrationSuite.java20
-rw-r--r--build/org.eclipse.cdt.cmake.ui.tests/src/org/eclipse/cdt/cmake/ui/internal/tests/NewCMakeProjectTest.java107
-rw-r--r--build/org.eclipse.cdt.cmake.ui/.classpath7
-rw-r--r--build/org.eclipse.cdt.cmake.ui/.project28
-rw-r--r--build/org.eclipse.cdt.cmake.ui/.settings/org.eclipse.jdt.core.prefs464
-rw-r--r--build/org.eclipse.cdt.cmake.ui/.settings/org.eclipse.jdt.ui.prefs133
-rw-r--r--build/org.eclipse.cdt.cmake.ui/META-INF/MANIFEST.MF23
-rw-r--r--build/org.eclipse.cdt.cmake.ui/about.html36
-rw-r--r--build/org.eclipse.cdt.cmake.ui/plugin.properties12
-rw-r--r--build/org.eclipse.cdt.cmake.ui/plugin.xml78
-rw-r--r--build/org.eclipse.cdt.core.autotools-feature/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--build/org.eclipse.cdt.core.autotools-feature/feature.xml13
-rw-r--r--build/org.eclipse.cdt.core.autotools.core/.classpath2
-rw-r--r--build/org.eclipse.cdt.core.autotools.core/.project6
-rw-r--r--build/org.eclipse.cdt.core.autotools.core/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--build/org.eclipse.cdt.core.autotools.core/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--build/org.eclipse.cdt.core.autotools.core/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--build/org.eclipse.cdt.core.autotools.core/META-INF/MANIFEST.MF7
-rw-r--r--build/org.eclipse.cdt.core.autotools.core/about.html14
-rw-r--r--build/org.eclipse.cdt.core.autotools.core/plugin.properties1
-rw-r--r--build/org.eclipse.cdt.core.autotools.core/plugin.xml1
-rw-r--r--build/org.eclipse.cdt.core.autotools.core/src/org/eclipse/cdt/core/autotools/core/AutotoolsBuildConfiguration.java4
-rw-r--r--build/org.eclipse.cdt.core.autotools.core/src/org/eclipse/cdt/core/autotools/core/AutotoolsProjectGenerator.java2
-rw-r--r--build/org.eclipse.cdt.core.autotools.ui/.classpath2
-rw-r--r--build/org.eclipse.cdt.core.autotools.ui/.project6
-rw-r--r--build/org.eclipse.cdt.core.autotools.ui/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--build/org.eclipse.cdt.core.autotools.ui/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--build/org.eclipse.cdt.core.autotools.ui/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--build/org.eclipse.cdt.core.autotools.ui/META-INF/MANIFEST.MF5
-rw-r--r--build/org.eclipse.cdt.core.autotools.ui/about.html14
-rw-r--r--build/org.eclipse.cdt.core.autotools.ui/about.ini (renamed from upc/org.eclipse.cdt.managedbuilder.bupc.ui/about.ini)0
-rw-r--r--build/org.eclipse.cdt.core.autotools.ui/about.mappings9
-rw-r--r--build/org.eclipse.cdt.core.autotools.ui/about.properties32
-rw-r--r--build/org.eclipse.cdt.core.autotools.ui/build.properties6
-rw-r--r--build/org.eclipse.cdt.core.autotools.ui/cdt_logo_icon32.png (renamed from upc/org.eclipse.cdt.managedbuilder.bupc.ui/cdt_logo_icon32.png)bin1885 -> 1885 bytes
-rw-r--r--build/org.eclipse.cdt.gnu.build-feature/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--build/org.eclipse.cdt.gnu.build-feature/feature.xml13
-rw-r--r--build/org.eclipse.cdt.make.core.tests/.classpath8
-rw-r--r--build/org.eclipse.cdt.make.core.tests/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--build/org.eclipse.cdt.make.core.tests/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--build/org.eclipse.cdt.make.core.tests/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--build/org.eclipse.cdt.make.core.tests/META-INF/MANIFEST.MF7
-rw-r--r--build/org.eclipse.cdt.make.core.tests/about.html14
-rw-r--r--build/org.eclipse.cdt.make.core.tests/build.properties4
-rw-r--r--build/org.eclipse.cdt.make.core.tests/plugin.properties14
-rw-r--r--build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/builder/tests/CDataProviderTests.java1
-rw-r--r--build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/builder/tests/StandardBuildTests.java1
-rw-r--r--build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/core/tests/AutomatedIntegrationSuite.java4
-rw-r--r--build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/core/tests/MakeTestsPlugin.java1
-rw-r--r--build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/core/tests/MakefileReaderProviderTests.java1
-rw-r--r--build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/core/tests/StandardBuildTestHelper.java1
-rw-r--r--build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/scannerdiscovery/GCCPerFileBOPConsoleParserTests.java1
-rw-r--r--build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/scannerdiscovery/ScannerConfigDiscoveryTests.java1
-rw-r--r--build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/scannerdiscovery/ScannerConfigProfileTests.java1
-rw-r--r--build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/scannerdiscovery/ScannerDiscoveryTestSuite.java32
-rw-r--r--build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/scannerdiscovery/ScannerDiscoveryTests.java32
-rw-r--r--build/org.eclipse.cdt.make.core/.classpath4
-rw-r--r--build/org.eclipse.cdt.make.core/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--build/org.eclipse.cdt.make.core/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--build/org.eclipse.cdt.make.core/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--build/org.eclipse.cdt.make.core/META-INF/MANIFEST.MF7
-rw-r--r--build/org.eclipse.cdt.make.core/about.html14
-rw-r--r--build/org.eclipse.cdt.make.core/plugin.xml2
-rw-r--r--build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/BuildInfoFactory.java7
-rw-r--r--build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/MakeMessages.java5
-rw-r--r--build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/MakeTarget.java8
-rw-r--r--build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig/CDataDiscoveredInfoCalculator.java5
-rw-r--r--build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig/CDataDiscoveredInfoProcessor.java5
-rw-r--r--build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig/util/LogWriter.java7
-rw-r--r--build/org.eclipse.cdt.make.core/templates/simple/Makefile12
-rw-r--r--build/org.eclipse.cdt.make.ui.tests/.classpath8
-rw-r--r--build/org.eclipse.cdt.make.ui.tests/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--build/org.eclipse.cdt.make.ui.tests/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--build/org.eclipse.cdt.make.ui.tests/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--build/org.eclipse.cdt.make.ui.tests/META-INF/MANIFEST.MF7
-rw-r--r--build/org.eclipse.cdt.make.ui.tests/about.html14
-rw-r--r--build/org.eclipse.cdt.make.ui.tests/build.properties1
-rw-r--r--build/org.eclipse.cdt.make.ui.tests/plugin.properties14
-rw-r--r--build/org.eclipse.cdt.make.ui/.classpath2
-rw-r--r--build/org.eclipse.cdt.make.ui/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--build/org.eclipse.cdt.make.ui/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--build/org.eclipse.cdt.make.ui/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--build/org.eclipse.cdt.make.ui/META-INF/MANIFEST.MF9
-rw-r--r--build/org.eclipse.cdt.make.ui/about.html14
-rw-r--r--build/org.eclipse.cdt.make.ui/build.properties3
-rw-r--r--build/org.eclipse.cdt.make.ui/css/e4-dark_make.css21
-rw-r--r--build/org.eclipse.cdt.make.ui/plugin.xml9
-rw-r--r--build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/MakeEnvironmentBlock.java6
-rw-r--r--build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/MakeResources.properties15
-rw-r--r--build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/MakeUIPlugin.java5
-rw-r--r--build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/actions/FoldingMessages.java6
-rw-r--r--build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/dnd/MakeTargetDndUtil.java6
-rw-r--r--build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/dnd/TextTransferDropTargetListener.java6
-rw-r--r--build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/part/WizardCheckboxTablePart.java7
-rw-r--r--build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/preferences/AbstractMakefileEditorPreferencePage.java6
-rw-r--r--build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/preferences/ColorEditor.java22
-rw-r--r--build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/preferences/MakefileEditorPreferencePage.java17
-rw-r--r--build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/text/ColorManager.java9
-rw-r--r--build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/text/makefile/MakefileCompletionProcessor.java2
-rw-r--r--build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/IMakeHelpContextIds.java7
-rw-r--r--build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/MakeContentProvider.java2
-rw-r--r--build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/views/DeleteTargetAction.java6
-rw-r--r--build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/views/MakeView.java340
-rw-r--r--build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/wizards/ConvertToMakeProjectWizard.java123
-rw-r--r--build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/wizards/ConvertToMakeProjectWizardPage.java116
-rw-r--r--build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/wizards/MakeProjectWizardOptionPage.java139
-rw-r--r--build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/wizards/NewMakeCCProjectWizard.java67
-rw-r--r--build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/wizards/NewMakeCProjectWizard.java52
-rw-r--r--build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/wizards/NewMakeProjectWizard.java93
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/.classpath14
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/META-INF/MANIFEST.MF8
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/about.html14
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/plugin.properties4
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/plugin.xml338
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc2/Benchmarks/Sources/sub sources/subdir.mk17
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc2/Benchmarks/Sources/subdir.mk25
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc2/Benchmarks/makefile23
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc2/Benchmarks/sources.mk8
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc2/Benchmarks/subdir.mk17
-rw-r--r--[-rwxr-xr-x]build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc2/test1DepCalc2.zipbin3169 -> 3169 bytes
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc3/Benchmarks/Sources/sub sources/subdir.mk15
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc3/Benchmarks/Sources/subdir.mk19
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc3/Benchmarks/makefile23
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc3/Benchmarks/sources.mk8
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc3/Benchmarks/subdir.mk15
-rw-r--r--[-rwxr-xr-x]build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc3/test1DepCalc3.zipbin3197 -> 3197 bytes
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalcPreBuild/Benchmarks/Sources/sub sources/subdir.mk17
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalcPreBuild/Benchmarks/Sources/subdir.mk21
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalcPreBuild/Benchmarks/makefile23
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalcPreBuild/Benchmarks/sources.mk8
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalcPreBuild/Benchmarks/subdir.mk17
-rw-r--r--[-rwxr-xr-x]build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalcPreBuild/test1DepCalcPreBuild.zipbin3165 -> 3165 bytes
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/1.2/Benchmarks/makefile29
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/1.2/Benchmarks/sources.mk20
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/1.2/Benchmarks/subdir.mk17
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.0/Benchmarks/makefile31
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.0/Benchmarks/objects.mk4
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.0/Benchmarks/sources.mk20
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.0/Benchmarks/subdir.mk19
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1/Benchmarks/Functions/subdir.mk17
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1/Benchmarks/makefile23
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1/Benchmarks/sources.mk8
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1/Benchmarks/subdir.mk17
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1CPP/Benchmarks/Functions/subdir.mk17
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1CPP/Benchmarks/makefile29
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1CPP/Benchmarks/sources.mk20
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1CPP/Benchmarks/subdir.mk17
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/linkedFolder/Benchmarks/makefile23
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/linkedFolder/Benchmarks/objects.mk4
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/linkedFolder/Benchmarks/sources.mk6
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/linkedFolder/Benchmarks/subdir.mk17
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/linkedLib/Benchmarks/makefile23
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/linkedLib/Benchmarks/objects.mk4
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/linkedLib/Benchmarks/sources.mk4
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/linkedLib/Benchmarks/subdir.mk11
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/multiResConfig/Benchmarks/makefile29
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/multiResConfig/Benchmarks/source1/subdir.mk15
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/multiResConfig/Benchmarks/source2/source21/subdir.mk15
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/multiResConfig/Benchmarks/source2/subdir.mk15
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/multiResConfig/Benchmarks/sources.mk14
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/multiResConfig/Benchmarks/subdir.mk15
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/singleFileExe/Benchmarks/makefile23
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/singleFileExe/Benchmarks/sources.mk6
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/singleFileExe/Benchmarks/subdir.mk15
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/twoFileSO/Benchmarks/makefile29
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/twoFileSO/Benchmarks/sources.mk14
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/twoFileSO/Benchmarks/subdir.mk17
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/CDTFortranTest1/Benchmarks/makefile23
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/CDTFortranTest1/Benchmarks/sources.mk14
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/CDTFortranTest1/Benchmarks/subdir.mk9
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/CDTFortranTest2/Benchmarks/Sources/subdir.mk9
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/CDTFortranTest2/Benchmarks/makefile24
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/CDTFortranTest2/Benchmarks/module/subdir.mk9
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/CDTFortranTest2/Benchmarks/sources.mk14
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/TestATO/Benchmarks/makefile23
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/TestATO/Benchmarks/sources.mk6
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/TestATO/Benchmarks/subdir.mk15
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/copyandDeploy/Benchmarks/Functions/subdir.mk19
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/copyandDeploy/Benchmarks/makefile25
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/copyandDeploy/Benchmarks/sources.mk10
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/copyandDeploy/Benchmarks/subdir.mk19
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/deleteFile/Benchmarks/makefile29
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/deleteFile/Benchmarks/sources.mk14
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/deleteFile/Benchmarks/subdir.mk15
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/inputTypeOption/Benchmarks/makefile23
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/inputTypeOption/Benchmarks/subdir.mk13
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedFolder/Benchmarks/makefile23
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedFolder/Benchmarks/objects.mk4
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedFolder/Benchmarks/sources.mk6
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedFolder/Benchmarks/subdir.mk17
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedLib30/Benchmarks/makefile23
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedLib30/Benchmarks/objects.mk4
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedLib30/Benchmarks/sources.mk2
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedLib30/Benchmarks/subdir.mk15
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/multiResConfig/Benchmarks/makefile29
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/multiResConfig/Benchmarks/source1/subdir.mk15
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/multiResConfig/Benchmarks/source2/source21/subdir.mk15
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/multiResConfig/Benchmarks/source2/subdir.mk15
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/multiResConfig/Benchmarks/sources.mk14
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/multiResConfig/Benchmarks/subdir.mk15
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/preAndPostBuildSteps/Benchmarks/makefile26
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/preAndPostBuildSteps/Benchmarks/sources.mk14
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/preAndPostBuildSteps/Benchmarks/subdir.mk15
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/rcbsBasicTest/Benchmarks/makefile23
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/rcbsBasicTest/Benchmarks/sources.mk4
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/rcbsBasicTest/Benchmarks/subdir.mk9
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/singleFileExe/Benchmarks/makefile23
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/singleFileExe/Benchmarks/sources.mk4
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/singleFileExe/Benchmarks/subdir.mk15
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test with spaces/Benchmarks/makefile23
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test with spaces/Benchmarks/sub folder with spaces/subdir.mk11
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test with spaces/Benchmarks/subdir.mk11
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test30_1/Benchmarks/makefile25
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test30_1/Benchmarks/sources.mk16
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test30_1/Benchmarks/subdir.mk29
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test30_2/Benchmarks/makefile42
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test30_2/Benchmarks/sources.mk13
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test30_2/Benchmarks/subdir.mk6
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/testFileWithNoExtension/Benchmarks/makefile23
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/testFileWithNoExtension/Benchmarks/sources.mk8
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/testFileWithNoExtension/Benchmarks/subdir.mk17
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/testMacroSupportInBuildDefinitions/Benchmarks/makefile23
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/testMacroSupportInBuildDefinitions/Benchmarks/sources.mk4
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/testMacroSupportInBuildDefinitions/Benchmarks/subdir.mk9
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/twoFileSO/Benchmarks/makefile23
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/twoFileSO/Benchmarks/sources.mk4
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/twoFileSO/Benchmarks/subdir.mk17
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/d1/d2/d3/subdir.mk19
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/d1/d2/subdir.mk23
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/d1/subdir.mk21
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/d1_1/d2_1/subdir.mk19
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/d1_1/subdir.mk19
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/dir1/dd/excluded_c/asd/subdir.mk17
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/dir1/dd/excluded_c/subdir.mk17
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/dir1/dd/ff/subdir.mk31
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/makefile32
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/objects.mk4
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/sources.mk20
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/d1/d2/d3/subdir.mk19
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/d1/d2/subdir.mk23
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/d1/subdir.mk21
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/d1_1/d2_1/subdir.mk19
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/d1_1/subdir.mk19
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/dir1/dd/excluded_c/asd/subdir.mk17
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/dir1/dd/excluded_c/subdir.mk17
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/dir1/dd/ff/subdir.mk31
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/makefile32
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/objects.mk4
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/sources.mk18
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/suite/org/eclipse/cdt/managedbuilder/testplugin/AbstractBuilderTest.java33
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/suite/org/eclipse/cdt/managedbuilder/testplugin/DiffUtil.java57
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/suite/org/eclipse/cdt/managedbuilder/testplugin/ManagedBuildTestHelper.java73
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/suite/org/eclipse/cdt/managedbuilder/tests/suite/AutomatedIntegrationSuite.java25
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/suite/org/eclipse/cdt/managedbuilder/tests/suite/ManagedBuilderPreconditionsTests.java70
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/suite/org/eclipse/cdt/managedbuilder/tests/suite/Preconditions.java66
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/regressions/Bug_303953.java82
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/regressions/Bug_303953Test.java154
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/regressions/Bug_335476.java126
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/regressions/Bug_335476Test.java132
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/regressions/Bug_580441Test.java70
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/regressions/RegressionTestSuite.java41
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/regressions/RegressionTests.java41
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/BuildDescriptionModelTests.java13
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/BuildFileGenerator.java2
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/BuildSystem40Tests.java4
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/CustomOptionCommandGenerator2.java34
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedBuildClean.java84
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedBuildCleanTest.java91
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedBuildCore20Tests.java1950
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedBuildCoreTests.java2
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedBuildCoreTests20.java1950
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedBuildCoreTests_SharedToolOptions.java566
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedBuildCore_SharedToolOptionsTests.java566
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedBuildDependencyCalculatorTests.java12
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedBuildDependencyLibsTests.java47
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedBuildEnvironmentTests.java447
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedBuildMacrosTests.java566
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedCommandLineGeneratorTest.java205
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedProject21MakefileTests.java86
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedProject30MakefileTests.java89
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedProjectUpdateTests.java18
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/MultiVersionSupportTests.java27
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/PathConverterTest.java2
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ProjectConverter.java3
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ResourceBuildCoreTests.java138
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/TestPathConverter1.java2
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/TestPathConverter2.java2
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/TestPathConverter3.java2
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/TestPathConverter4.java2
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/language/settings/providers/tests/AllLanguageSettingsProvidersMBSTestSuite.java37
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/language/settings/providers/tests/AllLanguageSettingsProvidersMBSTests.java37
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/language/settings/providers/tests/BuiltinSpecsDetectorTest.java2
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/language/settings/providers/tests/CompilationDatabaseParserTest.java488
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/language/settings/providers/tests/GCCBuildCommandParserTest.java55
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/templateengine/tests/AllTemplateEngineTestSuite.java50
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/templateengine/tests/AllTemplateEngineTests.java50
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/projectmodel/tests/CProjectDescriptionSerializationTests.java1
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/projectmodel/tests/ProjectModelTests.java184
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/.classpath4
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/.settings/.api_filters11
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/META-INF/MANIFEST.MF14
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/about.html14
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/plugin.properties1
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/plugin.xml17
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/build/internal/core/scannerconfig/CfgScannerConfigUtil.java6
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/build/internal/core/scannerconfig/PerFileSettingsCalculator.java5
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IBuilder.java8
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IManagedCommandLineInfo.java2
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IOptionPathConverter.java2
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IResourceConfiguration.java5
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ITool.java7
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ManagedBuildManager.java77
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ManagedCommandLineGenerator.java168
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/OptionStringValue.java13
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/envvar/IEnvironmentVariableProvider.java6
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/buildmodel/BuildDescription.java10
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/buildmodel/BuildModelMessages.java6
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/AdditionalInput.java20
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Builder.java95
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/CommonBuilder.java36
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Configuration.java128
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/GeneratedMakefileBuilder.java6
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/HeadlessBuildMessages.java20
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/HeadlessBuildMessages.properties20
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/HeadlessBuilder.java243
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/HeadlessBuilderExternalSettingsProvider.java9
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ManagedBuildInfo.java6
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ManagedCommandLineGenerator.java69
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ManagedCommandLineInfo.java4
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ManagedMakeMessages.java6
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/MultiFileInfo.java6
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Option.java40
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/PluginResources.properties1
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ResourceConfiguration.java1
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Tool.java143
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ToolChain.java5
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/dataprovider/BuildLanguageData.java7
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/dataprovider/ConfigurationDataProvider.java1
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/dataprovider/DataProviderMessages.java6
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/envvar/EnvironmentVariableProvider.java5
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/envvar/StoredBuildPathEnvironmentContainer.java5
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/language/settings/providers/CompilationDatabaseParser.java181
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/language/settings/providers/CompileCommand.java4
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/language/settings/providers/Messages.java2
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/language/settings/providers/messages.properties3
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/macros/BuildfileMacroSubstitutor.java13
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/macros/MbsMacroSupplier.java2
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/scannerconfig/ManagedBuildCPathEntryContainer.java6
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/language/settings/providers/AbstractBuiltinSpecsDetector.java32
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/language/settings/providers/AbstractLanguageSettingsOutputScanner.java283
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/language/settings/providers/GCCBuildCommandParser.java129
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/language/settings/providers/ToolchainBuiltinSpecsDetector.java134
-rw-r--r--[-rwxr-xr-x]build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/IManagedDependencyCalculator.java0
-rw-r--r--[-rwxr-xr-x]build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/IManagedDependencyGeneratorType.java0
-rw-r--r--[-rwxr-xr-x]build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/IManagedDependencyInfo.java0
-rw-r--r--[-rwxr-xr-x]build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/IManagedDependencyPreBuild.java0
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/gnu/DefaultGCCDependencyCalculator.java2
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/gnu/DefaultGCCDependencyCalculator2Commands.java12
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/gnu/DefaultGCCDependencyCalculator3.java13
-rw-r--r--[-rwxr-xr-x]build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/gnu/GnuDependencyGroupInfo.java10
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/gnu/GnuMakefileGenerator.java268
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/gnu/IManagedBuildGnuToolInfo.java2
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/gnu/ManagedBuildGnuToolInfo.java2
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/gnu2/GnuMakefileGenerator.java4799
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/gnu2/ManagedBuildGnuToolInfo.java991
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/projectconverter/ConverterMessages.java16
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/newmake/core/IMakeCommonBuildInfo.java29
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/newmake/internal/core/MakeMessages.java6
-rw-r--r--build/org.eclipse.cdt.managedbuilder.gnu.ui/.classpath4
-rw-r--r--build/org.eclipse.cdt.managedbuilder.gnu.ui/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--build/org.eclipse.cdt.managedbuilder.gnu.ui/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--build/org.eclipse.cdt.managedbuilder.gnu.ui/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--build/org.eclipse.cdt.managedbuilder.gnu.ui/META-INF/MANIFEST.MF8
-rw-r--r--build/org.eclipse.cdt.managedbuilder.gnu.ui/about.html14
-rw-r--r--build/org.eclipse.cdt.managedbuilder.gnu.ui/plugin.properties33
-rw-r--r--build/org.eclipse.cdt.managedbuilder.gnu.ui/plugin.xml396
-rw-r--r--build/org.eclipse.cdt.managedbuilder.gnu.ui/src/org/eclipse/cdt/managedbuilder/gnu/cygwin/CygwinPathResolver.java2
-rw-r--r--build/org.eclipse.cdt.managedbuilder.headlessbuilderapp/.classpath7
-rw-r--r--build/org.eclipse.cdt.managedbuilder.headlessbuilderapp/.project34
-rw-r--r--build/org.eclipse.cdt.managedbuilder.headlessbuilderapp/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--build/org.eclipse.cdt.managedbuilder.headlessbuilderapp/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--build/org.eclipse.cdt.managedbuilder.headlessbuilderapp/.settings/org.eclipse.jdt.launching.prefs (renamed from build/org.eclipse.cdt.autotools.docs/.settings/org.eclipse.jdt.launching.prefs)0
-rw-r--r--build/org.eclipse.cdt.managedbuilder.headlessbuilderapp/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--build/org.eclipse.cdt.managedbuilder.headlessbuilderapp/.settings/org.eclipse.pde.api.tools.prefs (renamed from build/org.eclipse.cdt.cmake.core/.settings/org.eclipse.pde.api.tools.prefs)0
-rw-r--r--build/org.eclipse.cdt.managedbuilder.headlessbuilderapp/.settings/org.eclipse.pde.prefs (renamed from build/org.eclipse.cdt.cmake.core/.settings/org.eclipse.pde.prefs)0
-rw-r--r--build/org.eclipse.cdt.managedbuilder.headlessbuilderapp/META-INF/MANIFEST.MF13
-rw-r--r--build/org.eclipse.cdt.managedbuilder.headlessbuilderapp/about.html38
-rw-r--r--build/org.eclipse.cdt.managedbuilder.headlessbuilderapp/build.properties18
-rw-r--r--build/org.eclipse.cdt.managedbuilder.headlessbuilderapp/plugin.properties17
-rw-r--r--build/org.eclipse.cdt.managedbuilder.headlessbuilderapp/plugin.xml17
-rw-r--r--build/org.eclipse.cdt.managedbuilder.headlessbuilderapp/src/org/eclipse/cdt/managedbuilder/internal/headlessbuilderapp/HeadlessBuilderWrapper.java148
-rw-r--r--build/org.eclipse.cdt.managedbuilder.headlessbuilderapp/src/org/eclipse/cdt/managedbuilder/internal/headlessbuilderapp/messages.properties39
-rw-r--r--build/org.eclipse.cdt.managedbuilder.ui.tests/.classpath8
-rw-r--r--build/org.eclipse.cdt.managedbuilder.ui.tests/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--build/org.eclipse.cdt.managedbuilder.ui.tests/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--build/org.eclipse.cdt.managedbuilder.ui.tests/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--build/org.eclipse.cdt.managedbuilder.ui.tests/META-INF/MANIFEST.MF6
-rw-r--r--build/org.eclipse.cdt.managedbuilder.ui.tests/about.html14
-rw-r--r--build/org.eclipse.cdt.managedbuilder.ui.tests/build.properties1
-rw-r--r--build/org.eclipse.cdt.managedbuilder.ui.tests/plugin.properties14
-rw-r--r--build/org.eclipse.cdt.managedbuilder.ui/.classpath4
-rw-r--r--build/org.eclipse.cdt.managedbuilder.ui/.settings/.api_filters11
-rw-r--r--build/org.eclipse.cdt.managedbuilder.ui/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--build/org.eclipse.cdt.managedbuilder.ui/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--build/org.eclipse.cdt.managedbuilder.ui/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--build/org.eclipse.cdt.managedbuilder.ui/META-INF/MANIFEST.MF11
-rw-r--r--build/org.eclipse.cdt.managedbuilder.ui/about.html14
-rw-r--r--[-rwxr-xr-x]build/org.eclipse.cdt.managedbuilder.ui/plugin.properties0
-rw-r--r--build/org.eclipse.cdt.managedbuilder.ui/schema/buildDefinitionsUI.exsd2
-rw-r--r--build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/Messages.java8
-rw-r--r--build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/Messages.properties8
-rw-r--r--build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/commands/BuildConfigurationsJob.java7
-rw-r--r--[-rwxr-xr-x]build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/commands/Messages.properties0
-rw-r--r--build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/language/settings/providers/CompilationDatabaseParserOptionPage.java62
-rw-r--r--build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/language/settings/providers/Messages.java3
-rw-r--r--build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/language/settings/providers/messages.properties3
-rw-r--r--build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/wizards/Messages.java33
-rw-r--r--build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/wizards/messages.properties18
-rw-r--r--build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuildBehaviourTab.java218
-rw-r--r--build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuildOptionSettingsUI.java107
-rw-r--r--build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuildStepsTab.java49
-rw-r--r--build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuilderSettingsTab.java75
-rw-r--r--build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/DiscoveryTab.java10
-rw-r--r--build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/ICustomBuildOptionEditor.java3
-rw-r--r--build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/ICustomBuildOptionEditor2.java46
-rw-r--r--build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/ManagedBuilderUIPlugin.java5
-rw-r--r--build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/NewVarDialog.java8
-rw-r--r--build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/ToolChainEditTab.java10
-rw-r--r--build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/ConvertToMakeWizardPage.java25
-rw-r--r--build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/MBSCustomPageData.java27
-rw-r--r--build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/MBSCustomPageManager.java71
-rw-r--r--build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/MBSWizardHandler.java26
-rw-r--r--build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/NewMakeProjFromExisting.java4
-rw-r--r--build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/STDWizardHandler.java4
-rw-r--r--build/org.eclipse.cdt.meson-feature/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--build/org.eclipse.cdt.meson-feature/feature.xml21
-rw-r--r--build/org.eclipse.cdt.meson.core/.classpath2
-rw-r--r--build/org.eclipse.cdt.meson.core/.project6
-rw-r--r--build/org.eclipse.cdt.meson.core/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--build/org.eclipse.cdt.meson.core/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--build/org.eclipse.cdt.meson.core/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--build/org.eclipse.cdt.meson.core/META-INF/MANIFEST.MF6
-rw-r--r--build/org.eclipse.cdt.meson.core/about.html14
-rw-r--r--build/org.eclipse.cdt.meson.core/plugin.properties3
-rw-r--r--build/org.eclipse.cdt.meson.core/plugin.xml1
-rw-r--r--build/org.eclipse.cdt.meson.core/src/org/eclipse/cdt/internal/meson/core/MesonBuildConfiguration.java19
-rw-r--r--build/org.eclipse.cdt.meson.core/src/org/eclipse/cdt/internal/meson/core/Messages.java2
-rw-r--r--build/org.eclipse.cdt.meson.core/src/org/eclipse/cdt/internal/meson/core/messages.properties3
-rw-r--r--build/org.eclipse.cdt.meson.core/src/org/eclipse/cdt/meson/core/MesonProjectGenerator.java7
-rw-r--r--build/org.eclipse.cdt.meson.docs/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--build/org.eclipse.cdt.meson.docs/.settings/org.eclipse.jdt.core.prefs464
-rw-r--r--build/org.eclipse.cdt.meson.docs/.settings/org.eclipse.jdt.ui.prefs133
-rw-r--r--build/org.eclipse.cdt.meson.docs/CDT/Meson/User_Guide/Updating-This-Document.html2
-rw-r--r--build/org.eclipse.cdt.meson.docs/CDT/Meson/User_Guide/User-Guide.html2
-rw-r--r--build/org.eclipse.cdt.meson.docs/META-INF/MANIFEST.MF2
-rw-r--r--build/org.eclipse.cdt.meson.docs/about.html14
-rw-r--r--build/org.eclipse.cdt.meson.docs/build-helper.xml2
-rw-r--r--build/org.eclipse.cdt.meson.docs/build-index.xml2
-rw-r--r--build/org.eclipse.cdt.meson.docs/pom.xml36
-rw-r--r--build/org.eclipse.cdt.meson.ui.editor/.classpath3
-rw-r--r--build/org.eclipse.cdt.meson.ui.editor/.project6
-rw-r--r--build/org.eclipse.cdt.meson.ui.editor/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--build/org.eclipse.cdt.meson.ui.editor/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--build/org.eclipse.cdt.meson.ui.editor/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--build/org.eclipse.cdt.meson.ui.editor/META-INF/MANIFEST.MF4
-rw-r--r--build/org.eclipse.cdt.meson.ui.editor/about.html38
-rw-r--r--build/org.eclipse.cdt.meson.ui.editor/build.properties4
-rw-r--r--build/org.eclipse.cdt.meson.ui.editor/src/keep.txt1
-rw-r--r--build/org.eclipse.cdt.meson.ui.tests/.classpath8
-rw-r--r--build/org.eclipse.cdt.meson.ui.tests/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--build/org.eclipse.cdt.meson.ui.tests/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--build/org.eclipse.cdt.meson.ui.tests/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--build/org.eclipse.cdt.meson.ui.tests/META-INF/MANIFEST.MF13
-rw-r--r--build/org.eclipse.cdt.meson.ui.tests/about.html14
-rw-r--r--build/org.eclipse.cdt.meson.ui.tests/build.properties4
-rw-r--r--build/org.eclipse.cdt.meson.ui.tests/plugin.properties14
-rw-r--r--build/org.eclipse.cdt.meson.ui.tests/pom.xml12
-rw-r--r--build/org.eclipse.cdt.meson.ui.tests/src/org/eclipse/cdt/internal/meson/ui/tests/AutomatedIntegrationSuite.java23
-rw-r--r--build/org.eclipse.cdt.meson.ui.tests/src/org/eclipse/cdt/internal/meson/ui/tests/NewManualNinjaTest.java49
-rw-r--r--build/org.eclipse.cdt.meson.ui.tests/src/org/eclipse/cdt/internal/meson/ui/tests/NewMesonConfigureTest.java48
-rw-r--r--build/org.eclipse.cdt.meson.ui.tests/src/org/eclipse/cdt/internal/meson/ui/tests/NewMesonProjectTest.java48
-rw-r--r--build/org.eclipse.cdt.meson.ui.tests/src/org/eclipse/cdt/internal/meson/ui/tests/utils/CloseShellRule.java59
-rw-r--r--build/org.eclipse.cdt.meson.ui.tests/src/org/eclipse/cdt/internal/meson/ui/tests/utils/CloseWelcomePag.java65
-rw-r--r--build/org.eclipse.cdt.meson.ui.tests/src/org/eclipse/cdt/internal/meson/ui/tests/utils/CloseWelcomePageRule.java75
-rw-r--r--build/org.eclipse.cdt.meson.ui.tests/src/org/eclipse/cdt/internal/meson/ui/tests/utils/ConsoleViewRule.java39
-rw-r--r--build/org.eclipse.cdt.meson.ui.tests/src/org/eclipse/cdt/internal/meson/ui/tests/utils/ProjectExplorerViewRule.java52
-rw-r--r--build/org.eclipse.cdt.meson.ui.tests/src/org/eclipse/cdt/internal/meson/ui/tests/utils/SWTBotViewRule.java68
-rw-r--r--build/org.eclipse.cdt.meson.ui.tests/src/org/eclipse/cdt/internal/meson/ui/tests/utils/SWTUtils.java471
-rw-r--r--build/org.eclipse.cdt.meson.ui.tests/src/org/eclipse/cdt/internal/meson/ui/tests/utils/TestLoggerRule.java29
-rw-r--r--build/org.eclipse.cdt.meson.ui/.classpath2
-rw-r--r--build/org.eclipse.cdt.meson.ui/.project6
-rw-r--r--build/org.eclipse.cdt.meson.ui/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--build/org.eclipse.cdt.meson.ui/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--build/org.eclipse.cdt.meson.ui/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--build/org.eclipse.cdt.meson.ui/META-INF/MANIFEST.MF13
-rw-r--r--build/org.eclipse.cdt.meson.ui/about.html14
-rw-r--r--build/org.eclipse.cdt.meson.ui/about.ini (renamed from xlc/org.eclipse.cdt.managedbuilder.xlc.core/about.ini)0
-rw-r--r--build/org.eclipse.cdt.meson.ui/about.mappings9
-rw-r--r--build/org.eclipse.cdt.meson.ui/about.properties32
-rw-r--r--build/org.eclipse.cdt.meson.ui/build.properties6
-rw-r--r--build/org.eclipse.cdt.meson.ui/cdt_logo_icon32.png (renamed from xlc/org.eclipse.cdt.managedbuilder.xlc.core/cdt_logo_icon32.png)bin1885 -> 1885 bytes
-rw-r--r--build/org.eclipse.cdt.meson.ui/plugin.xml9
-rw-r--r--build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/internal/meson/ui/MesonBuildTab.java10
-rw-r--r--build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/internal/meson/ui/MesonProjectConfigurator.java38
-rw-r--r--build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/internal/meson/ui/SWTImagesFactory.java2
-rw-r--r--build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/internal/meson/ui/commands/RunNinjaCommandHandler.java2
-rw-r--r--build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/meson/ui/properties/MesonPropertyArgs.java3
-rw-r--r--build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/meson/ui/properties/MesonPropertyCheckbox.java11
-rw-r--r--build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/meson/ui/properties/MesonPropertyCombo.java3
-rw-r--r--build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/meson/ui/properties/MesonPropertyPage.java163
-rw-r--r--build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/meson/ui/properties/MesonPropertySpecialCheckbox.java4
-rw-r--r--build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/meson/ui/properties/MesonPropertyText.java6
-rw-r--r--build/pom.xml12
-rw-r--r--cmake/README.txt1
-rw-r--r--cmake/aggregator/.project17
-rw-r--r--cmake/aggregator/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--cmake/aggregator/.settings/org.eclipse.m2e.core.prefs (renamed from toolchains/arduino/org.eclipse.cdt.arduino-feature/.settings/org.eclipse.m2e.core.prefs)0
-rw-r--r--cmake/aggregator/cmake-aggregator.launch20
-rw-r--r--cmake/aggregator/pom.xml34
-rw-r--r--cmake/org.eclipse.cdt.cmake-feature/.project (renamed from build/org.eclipse.cdt.cmake-feature/.project)0
-rw-r--r--cmake/org.eclipse.cdt.cmake-feature/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--cmake/org.eclipse.cdt.cmake-feature/build.properties (renamed from build/org.eclipse.cdt.cmake-feature/build.properties)0
-rw-r--r--cmake/org.eclipse.cdt.cmake-feature/feature.properties (renamed from build/org.eclipse.cdt.cmake-feature/feature.properties)0
-rw-r--r--cmake/org.eclipse.cdt.cmake-feature/feature.xml67
-rw-r--r--cmake/org.eclipse.cdt.cmake.core.tests/.classpath11
-rw-r--r--cmake/org.eclipse.cdt.cmake.core.tests/.project28
-rw-r--r--cmake/org.eclipse.cdt.cmake.core.tests/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--cmake/org.eclipse.cdt.cmake.core.tests/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--cmake/org.eclipse.cdt.cmake.core.tests/.settings/org.eclipse.jdt.launching.prefs (renamed from build/org.eclipse.cdt.cmake.core/.settings/org.eclipse.jdt.launching.prefs)0
-rw-r--r--cmake/org.eclipse.cdt.cmake.core.tests/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--cmake/org.eclipse.cdt.cmake.core.tests/.settings/org.eclipse.m2e.core.prefs (renamed from toolchains/arduino/org.eclipse.cdt.arduino.core/.settings/org.eclipse.m2e.core.prefs)0
-rw-r--r--cmake/org.eclipse.cdt.cmake.core.tests/.settings/org.eclipse.pde.api.tools.prefs (renamed from build/org.eclipse.cdt.cmake.ui.tests/.settings/org.eclipse.pde.api.tools.prefs)0
-rw-r--r--cmake/org.eclipse.cdt.cmake.core.tests/.settings/org.eclipse.pde.prefs (renamed from build/org.eclipse.cdt.cmake.ui.tests/.settings/org.eclipse.pde.prefs)0
-rw-r--r--cmake/org.eclipse.cdt.cmake.core.tests/META-INF/MANIFEST.MF13
-rw-r--r--cmake/org.eclipse.cdt.cmake.core.tests/OSGI-INF/l10n/bundle.properties9
-rw-r--r--cmake/org.eclipse.cdt.cmake.core.tests/about.html38
-rw-r--r--cmake/org.eclipse.cdt.cmake.core.tests/build.properties7
-rw-r--r--cmake/org.eclipse.cdt.cmake.core.tests/src/org/eclipse/cdt/cmake/core/internal/CMakeErrorParserTest.java349
-rw-r--r--cmake/org.eclipse.cdt.cmake.core.tests/src/org/eclipse/cdt/cmake/core/internal/CMakePropertiesControllerTest.java103
-rw-r--r--cmake/org.eclipse.cdt.cmake.core.tests/src/org/eclipse/cdt/cmake/core/internal/CMakePropertiesEvolutionTest.java86
-rw-r--r--cmake/org.eclipse.cdt.cmake.core/.classpath7
-rw-r--r--cmake/org.eclipse.cdt.cmake.core/.project34
-rw-r--r--cmake/org.eclipse.cdt.cmake.core/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--cmake/org.eclipse.cdt.cmake.core/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--cmake/org.eclipse.cdt.cmake.core/.settings/org.eclipse.jdt.launching.prefs (renamed from build/org.eclipse.cdt.cmake.ui.tests/.settings/org.eclipse.jdt.launching.prefs)0
-rw-r--r--cmake/org.eclipse.cdt.cmake.core/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--cmake/org.eclipse.cdt.cmake.core/.settings/org.eclipse.pde.api.tools.prefs (renamed from build/org.eclipse.cdt.cmake.ui/.settings/org.eclipse.pde.api.tools.prefs)0
-rw-r--r--cmake/org.eclipse.cdt.cmake.core/.settings/org.eclipse.pde.prefs (renamed from build/org.eclipse.cdt.cmake.ui/.settings/org.eclipse.pde.prefs)0
-rw-r--r--cmake/org.eclipse.cdt.cmake.core/META-INF/MANIFEST.MF24
-rw-r--r--cmake/org.eclipse.cdt.cmake.core/about.html38
-rw-r--r--cmake/org.eclipse.cdt.cmake.core/build.properties10
-rw-r--r--cmake/org.eclipse.cdt.cmake.core/plugin.properties15
-rw-r--r--cmake/org.eclipse.cdt.cmake.core/plugin.xml32
-rw-r--r--cmake/org.eclipse.cdt.cmake.core/schema/toolChainProvider.exsd (renamed from build/org.eclipse.cdt.cmake.core/schema/toolChainProvider.exsd)0
-rw-r--r--cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/CMakeNature.java (renamed from build/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/CMakeNature.java)0
-rw-r--r--cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/CMakeProjectGenerator.java (renamed from build/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/CMakeProjectGenerator.java)0
-rw-r--r--cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/CMakeToolChainEvent.java (renamed from build/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/CMakeToolChainEvent.java)0
-rw-r--r--cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/ICMakeToolChainFile.java (renamed from build/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/ICMakeToolChainFile.java)0
-rw-r--r--cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/ICMakeToolChainListener.java (renamed from build/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/ICMakeToolChainListener.java)0
-rw-r--r--cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/ICMakeToolChainManager.java (renamed from build/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/ICMakeToolChainManager.java)0
-rw-r--r--cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/ICMakeToolChainProvider.java (renamed from build/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/ICMakeToolChainProvider.java)0
-rw-r--r--cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/Activator.java (renamed from build/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/Activator.java)0
-rw-r--r--cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CMakeBuildConfiguration.java563
-rw-r--r--cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CMakeBuildConfigurationProvider.java (renamed from build/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CMakeBuildConfigurationProvider.java)0
-rw-r--r--cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CMakeConsoleWrapper.java64
-rw-r--r--cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CMakeErrorParser.java436
-rw-r--r--cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CMakeExecutionMarkerFactory.java85
-rw-r--r--cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CMakePropertiesController.java145
-rw-r--r--cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CMakeToolChainFile.java (renamed from build/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CMakeToolChainFile.java)0
-rw-r--r--cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CMakeToolChainManager.java (renamed from build/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CMakeToolChainManager.java)0
-rw-r--r--cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CMakeUtils.java (renamed from build/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CMakeUtils.java)0
-rw-r--r--cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CommandDescriptorBuilder.java202
-rw-r--r--cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/ICMakeExecutionMarkerFactory.java56
-rw-r--r--cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/IOsOverridesSelector.java33
-rw-r--r--cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/Messages.java36
-rw-r--r--cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/ParsingConsoleOutputStream.java68
-rw-r--r--cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/messages.properties22
-rw-r--r--cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/properties/AbstractOsOverrides.java91
-rw-r--r--cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/properties/CMakePropertiesBean.java175
-rw-r--r--cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/properties/LinuxOverrides.java27
-rw-r--r--cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/properties/WindowsOverrides.java30
-rw-r--r--cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/properties/CMakeGenerator.java84
-rw-r--r--cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/properties/ICMakeProperties.java162
-rw-r--r--cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/properties/ICMakePropertiesController.java36
-rw-r--r--cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/properties/IGeneralProperties.java44
-rw-r--r--cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/properties/IOsOverrides.java66
-rw-r--r--cmake/org.eclipse.cdt.cmake.core/templates/simple/CMakeLists.txt (renamed from build/org.eclipse.cdt.cmake.core/templates/simple/CMakeLists.txt)0
-rw-r--r--cmake/org.eclipse.cdt.cmake.core/templates/simple/main.cpp (renamed from build/org.eclipse.cdt.cmake.core/templates/simple/main.cpp)0
-rw-r--r--cmake/org.eclipse.cdt.cmake.core/templates/simple/manifest.xml (renamed from build/org.eclipse.cdt.cmake.core/templates/simple/manifest.xml)0
-rw-r--r--cmake/org.eclipse.cdt.cmake.ui.tests/.classpath11
-rw-r--r--cmake/org.eclipse.cdt.cmake.ui.tests/.project (renamed from build/org.eclipse.cdt.cmake.ui.tests/.project)0
-rw-r--r--cmake/org.eclipse.cdt.cmake.ui.tests/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--cmake/org.eclipse.cdt.cmake.ui.tests/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--cmake/org.eclipse.cdt.cmake.ui.tests/.settings/org.eclipse.jdt.launching.prefs (renamed from build/org.eclipse.cdt.cmake.ui/.settings/org.eclipse.jdt.launching.prefs)0
-rw-r--r--cmake/org.eclipse.cdt.cmake.ui.tests/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--cmake/org.eclipse.cdt.cmake.ui.tests/.settings/org.eclipse.pde.api.tools.prefs (renamed from debug/org.eclipse.cdt.debug.application.product/.settings/org.eclipse.pde.api.tools.prefs)0
-rw-r--r--cmake/org.eclipse.cdt.cmake.ui.tests/.settings/org.eclipse.pde.prefs (renamed from lrparser/org.eclipse.cdt.core.lrparser.tests/.settings/org.eclipse.pde.prefs)0
-rw-r--r--cmake/org.eclipse.cdt.cmake.ui.tests/META-INF/MANIFEST.MF15
-rw-r--r--cmake/org.eclipse.cdt.cmake.ui.tests/about.html38
-rw-r--r--cmake/org.eclipse.cdt.cmake.ui.tests/build.properties10
-rw-r--r--cmake/org.eclipse.cdt.cmake.ui.tests/plugin.properties14
-rw-r--r--cmake/org.eclipse.cdt.cmake.ui.tests/pom.xml52
-rw-r--r--cmake/org.eclipse.cdt.cmake.ui.tests/projects/NestedProject/App1/CMakeLists.txt15
-rw-r--r--cmake/org.eclipse.cdt.cmake.ui.tests/projects/NestedProject/App1/app1.c8
-rw-r--r--cmake/org.eclipse.cdt.cmake.ui.tests/projects/NestedProject/App1/app1.h.in2
-rw-r--r--cmake/org.eclipse.cdt.cmake.ui.tests/projects/NestedProject/App2/CMakeLists.txt15
-rw-r--r--cmake/org.eclipse.cdt.cmake.ui.tests/projects/NestedProject/App2/app2.c8
-rw-r--r--cmake/org.eclipse.cdt.cmake.ui.tests/projects/NestedProject/App2/app2.h.in2
-rw-r--r--cmake/org.eclipse.cdt.cmake.ui.tests/projects/NestedProject/CMakeLists.txt18
-rw-r--r--cmake/org.eclipse.cdt.cmake.ui.tests/projects/SimpleProject/CMakeLists.txt15
-rw-r--r--cmake/org.eclipse.cdt.cmake.ui.tests/projects/SimpleProject/simple.c8
-rw-r--r--cmake/org.eclipse.cdt.cmake.ui.tests/projects/SimpleProject/simple.h.in2
-rw-r--r--cmake/org.eclipse.cdt.cmake.ui.tests/src/org/eclipse/cdt/cmake/ui/internal/tests/NewCMakeProjectTest.java244
-rw-r--r--cmake/org.eclipse.cdt.cmake.ui.tests/swtbot-test-plugin.properties (renamed from build/org.eclipse.cdt.cmake.ui.tests/swtbot-test-plugin.properties)0
-rw-r--r--cmake/org.eclipse.cdt.cmake.ui/.classpath7
-rw-r--r--cmake/org.eclipse.cdt.cmake.ui/.project34
-rw-r--r--cmake/org.eclipse.cdt.cmake.ui/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--cmake/org.eclipse.cdt.cmake.ui/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--cmake/org.eclipse.cdt.cmake.ui/.settings/org.eclipse.jdt.launching.prefs (renamed from build/org.eclipse.cdt.meson.docs/.settings/org.eclipse.jdt.launching.prefs)0
-rw-r--r--cmake/org.eclipse.cdt.cmake.ui/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--cmake/org.eclipse.cdt.cmake.ui/.settings/org.eclipse.pde.api.tools.prefs (renamed from lrparser/org.eclipse.cdt.core.lrparser.tests/.settings/org.eclipse.pde.api.tools.prefs)0
-rw-r--r--cmake/org.eclipse.cdt.cmake.ui/.settings/org.eclipse.pde.prefs (renamed from debug/org.eclipse.cdt.debug.application.product/.settings/org.eclipse.pde.prefs)0
-rw-r--r--cmake/org.eclipse.cdt.cmake.ui/META-INF/MANIFEST.MF26
-rw-r--r--cmake/org.eclipse.cdt.cmake.ui/about.html38
-rw-r--r--cmake/org.eclipse.cdt.cmake.ui/about.ini (renamed from xlc/org.eclipse.cdt.managedbuilder.xlc.ui/about.ini)0
-rw-r--r--cmake/org.eclipse.cdt.cmake.ui/about.mappings9
-rw-r--r--cmake/org.eclipse.cdt.cmake.ui/about.properties32
-rw-r--r--cmake/org.eclipse.cdt.cmake.ui/build.properties13
-rw-r--r--cmake/org.eclipse.cdt.cmake.ui/cdt_logo_icon32.png (renamed from xlc/org.eclipse.cdt.managedbuilder.xlc.ui/cdt_logo_icon32.png)bin1885 -> 1885 bytes
-rw-r--r--cmake/org.eclipse.cdt.cmake.ui/icons/cmake_logo-main.png (renamed from build/org.eclipse.cdt.cmake.ui/icons/cmake_logo-main.png)bin5140 -> 5140 bytes
-rw-r--r--cmake/org.eclipse.cdt.cmake.ui/plugin.properties15
-rw-r--r--cmake/org.eclipse.cdt.cmake.ui/plugin.xml85
-rw-r--r--cmake/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/internal/ui/properties/CMakePropertyPage.java (renamed from build/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/properties/CMakePropertyPage.java)16
-rw-r--r--cmake/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/Activator.java (renamed from build/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/Activator.java)0
-rw-r--r--cmake/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/CMakeBuildTab.java (renamed from build/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/CMakeBuildTab.java)0
-rw-r--r--cmake/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/CMakePreferencePage.java (renamed from build/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/CMakePreferencePage.java)3
-rw-r--r--cmake/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/CMakeProjectConfigurator.java38
-rw-r--r--cmake/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/CMakePropertyCombo.java (renamed from build/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/CMakePropertyCombo.java)0
-rw-r--r--cmake/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/CMakePropertyText.java (renamed from build/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/CMakePropertyText.java)0
-rw-r--r--cmake/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/EmptyCMakeProjectWizard.java (renamed from build/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/EmptyCMakeProjectWizard.java)0
-rw-r--r--cmake/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/ICMakePropertyPageControl.java (renamed from build/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/ICMakePropertyPageControl.java)0
-rw-r--r--cmake/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/Messages.java (renamed from build/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/Messages.java)0
-rw-r--r--cmake/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/NewCMakeProjectWizard.java (renamed from build/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/NewCMakeProjectWizard.java)0
-rw-r--r--cmake/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/NewCMakeToolChainFilePage.java (renamed from build/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/NewCMakeToolChainFilePage.java)0
-rw-r--r--cmake/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/NewCMakeToolChainFileWizard.java (renamed from build/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/NewCMakeToolChainFileWizard.java)0
-rw-r--r--cmake/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/messages.properties (renamed from build/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/messages.properties)0
-rw-r--r--cmake/pom.xml35
-rw-r--r--codan/org.eclipse.cdt.codan.checkers.ui.tests/.classpath8
-rw-r--r--codan/org.eclipse.cdt.codan.checkers.ui.tests/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--codan/org.eclipse.cdt.codan.checkers.ui.tests/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--codan/org.eclipse.cdt.codan.checkers.ui.tests/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--codan/org.eclipse.cdt.codan.checkers.ui.tests/META-INF/MANIFEST.MF17
-rw-r--r--codan/org.eclipse.cdt.codan.checkers.ui.tests/about.html14
-rw-r--r--codan/org.eclipse.cdt.codan.checkers.ui.tests/build.properties15
-rw-r--r--codan/org.eclipse.cdt.codan.checkers.ui.tests/src/org/eclipse/cdt/codan/checkers/ui/Activator.java38
-rw-r--r--codan/org.eclipse.cdt.codan.checkers.ui.tests/src/org/eclipse/cdt/codan/checkers/ui/quickfix/QuickFixCreateNewClassTest.java6
-rw-r--r--codan/org.eclipse.cdt.codan.checkers.ui/.classpath2
-rw-r--r--codan/org.eclipse.cdt.codan.checkers.ui/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--codan/org.eclipse.cdt.codan.checkers.ui/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--codan/org.eclipse.cdt.codan.checkers.ui/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--codan/org.eclipse.cdt.codan.checkers.ui/META-INF/MANIFEST.MF4
-rw-r--r--codan/org.eclipse.cdt.codan.checkers.ui/about.html14
-rw-r--r--codan/org.eclipse.cdt.codan.checkers/.classpath2
-rw-r--r--codan/org.eclipse.cdt.codan.checkers/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--codan/org.eclipse.cdt.codan.checkers/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--codan/org.eclipse.cdt.codan.checkers/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--codan/org.eclipse.cdt.codan.checkers/META-INF/MANIFEST.MF11
-rw-r--r--codan/org.eclipse.cdt.codan.checkers/OSGI-INF/l10n/bundle.properties20
-rw-r--r--codan/org.eclipse.cdt.codan.checkers/about.html14
-rw-r--r--codan/org.eclipse.cdt.codan.checkers/plugin.xml56
-rw-r--r--codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/AssignmentOperatorChecker.java2
-rw-r--r--codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/CStyleCastChecker.java22
-rw-r--r--codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/CaseBreakChecker.java36
-rw-r--r--codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/CheckersMessages.java7
-rw-r--r--codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/CheckersMessages.properties11
-rw-r--r--codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/ClassMembersInitializationChecker.java5
-rw-r--r--codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/FloatCompareChecker.java1
-rw-r--r--codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/MagicNumberChecker.java211
-rw-r--r--codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/NoDiscardChecker.java205
-rw-r--r--codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/NonVirtualDestructorChecker.java1
-rw-r--r--codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/ReturnChecker.java1
-rw-r--r--codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/ShallowCopyChecker.java272
-rw-r--r--codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/SwitchCaseChecker.java1
-rw-r--r--codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/SymbolShadowingChecker.java175
-rw-r--r--codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/UnusedSymbolInFileScopeChecker.java5
-rw-r--r--codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/VirtualMethodCallChecker.java1
-rw-r--r--codan/org.eclipse.cdt.codan.core.cxx/.classpath2
-rw-r--r--codan/org.eclipse.cdt.codan.core.cxx/.project6
-rw-r--r--codan/org.eclipse.cdt.codan.core.cxx/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--codan/org.eclipse.cdt.codan.core.cxx/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--codan/org.eclipse.cdt.codan.core.cxx/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--codan/org.eclipse.cdt.codan.core.cxx/META-INF/MANIFEST.MF4
-rw-r--r--codan/org.eclipse.cdt.codan.core.cxx/about.html14
-rw-r--r--codan/org.eclipse.cdt.codan.core.tests/.classpath8
-rw-r--r--codan/org.eclipse.cdt.codan.core.tests/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--codan/org.eclipse.cdt.codan.core.tests/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--codan/org.eclipse.cdt.codan.core.tests/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--codan/org.eclipse.cdt.codan.core.tests/META-INF/MANIFEST.MF2
-rw-r--r--codan/org.eclipse.cdt.codan.core.tests/about.html14
-rw-r--r--codan/org.eclipse.cdt.codan.core.tests/src/org/eclipse/cdt/codan/core/internal/checkers/AssignmentOperatorCheckerTest.java16
-rw-r--r--codan/org.eclipse.cdt.codan.core.tests/src/org/eclipse/cdt/codan/core/internal/checkers/CStyleCastCheckerTest.java27
-rw-r--r--codan/org.eclipse.cdt.codan.core.tests/src/org/eclipse/cdt/codan/core/internal/checkers/CaseBreakCheckerTest.java83
-rw-r--r--codan/org.eclipse.cdt.codan.core.tests/src/org/eclipse/cdt/codan/core/internal/checkers/MagicNumberCheckerTest.java248
-rw-r--r--codan/org.eclipse.cdt.codan.core.tests/src/org/eclipse/cdt/codan/core/internal/checkers/NoDiscardCheckerTest.java446
-rw-r--r--codan/org.eclipse.cdt.codan.core.tests/src/org/eclipse/cdt/codan/core/internal/checkers/ShallowCopyCheckerTest.java210
-rw-r--r--codan/org.eclipse.cdt.codan.core.tests/src/org/eclipse/cdt/codan/core/internal/checkers/UnusedSymbolInFileScopeCheckerTest.java8
-rw-r--r--codan/org.eclipse.cdt.codan.core.tests/src/org/eclipse/cdt/codan/core/internal/checkers/VariableShadowingCheckerTest.java234
-rw-r--r--codan/org.eclipse.cdt.codan.core.tests/src/org/eclipse/cdt/codan/core/tests/AutomatedIntegrationSuite.java8
-rw-r--r--codan/org.eclipse.cdt.codan.core.tests/src/org/eclipse/cdt/codan/core/tests/CheckerTestCase.java2
-rw-r--r--codan/org.eclipse.cdt.codan.core.tests/src/org/eclipse/cdt/codan/core/tests/CodanTestCase.java3
-rw-r--r--codan/org.eclipse.cdt.codan.core/.classpath2
-rw-r--r--codan/org.eclipse.cdt.codan.core/.settings/.api_filters55
-rw-r--r--codan/org.eclipse.cdt.codan.core/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--codan/org.eclipse.cdt.codan.core/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--codan/org.eclipse.cdt.codan.core/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--codan/org.eclipse.cdt.codan.core/META-INF/MANIFEST.MF6
-rw-r--r--codan/org.eclipse.cdt.codan.core/about.html14
-rw-r--r--codan/org.eclipse.cdt.codan.examples/.classpath2
-rw-r--r--codan/org.eclipse.cdt.codan.examples/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--codan/org.eclipse.cdt.codan.examples/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--codan/org.eclipse.cdt.codan.examples/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--codan/org.eclipse.cdt.codan.examples/META-INF/MANIFEST.MF4
-rw-r--r--codan/org.eclipse.cdt.codan.examples/about.html14
-rw-r--r--codan/org.eclipse.cdt.codan.examples/src/org/eclipse/cdt/codan/examples/checkers/CToolChecker.java24
-rw-r--r--codan/org.eclipse.cdt.codan.examples/src/org/eclipse/cdt/codan/examples/checkers/GrepChecker.java4
-rw-r--r--codan/org.eclipse.cdt.codan.examples/src/org/eclipse/cdt/codan/examples/uicontrib/FlexlintHelpLink.java6
-rw-r--r--codan/org.eclipse.cdt.codan.examples/src/org/eclipse/cdt/codan/examples/uicontrib/GrepCheckerExamplePreferenceChangeListener.java12
-rw-r--r--codan/org.eclipse.cdt.codan.examples/src/org/eclipse/cdt/codan/examples/uicontrib/GrepCheckerHelpLink.java6
-rw-r--r--codan/org.eclipse.cdt.codan.ui.cfgview/.classpath2
-rw-r--r--codan/org.eclipse.cdt.codan.ui.cfgview/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--codan/org.eclipse.cdt.codan.ui.cfgview/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--codan/org.eclipse.cdt.codan.ui.cfgview/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--codan/org.eclipse.cdt.codan.ui.cfgview/META-INF/MANIFEST.MF9
-rw-r--r--codan/org.eclipse.cdt.codan.ui.cfgview/about.html14
-rw-r--r--codan/org.eclipse.cdt.codan.ui.cfgview/build.properties1
-rw-r--r--codan/org.eclipse.cdt.codan.ui.cfgview/plugin.properties14
-rw-r--r--codan/org.eclipse.cdt.codan.ui.cfgview/src/org/eclipse/cdt/codan/ui/cfgview/views/ControlFlowGraphView.java26
-rw-r--r--codan/org.eclipse.cdt.codan.ui.cxx/.classpath2
-rw-r--r--codan/org.eclipse.cdt.codan.ui.cxx/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--codan/org.eclipse.cdt.codan.ui.cxx/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--codan/org.eclipse.cdt.codan.ui.cxx/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--codan/org.eclipse.cdt.codan.ui.cxx/META-INF/MANIFEST.MF5
-rw-r--r--codan/org.eclipse.cdt.codan.ui.cxx/about.html14
-rw-r--r--codan/org.eclipse.cdt.codan.ui.cxx/src/org/eclipse/cdt/codan/internal/ui/cxx/Activator.java84
-rw-r--r--codan/org.eclipse.cdt.codan.ui.cxx/src/org/eclipse/cdt/codan/ui/AbstractAstRewriteQuickFix.java6
-rw-r--r--codan/org.eclipse.cdt.codan.ui.cxx/src/org/eclipse/cdt/codan/ui/AbstractCodanCMarkerResolution.java9
-rw-r--r--codan/org.eclipse.cdt.codan.ui/.classpath2
-rw-r--r--codan/org.eclipse.cdt.codan.ui/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--codan/org.eclipse.cdt.codan.ui/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--codan/org.eclipse.cdt.codan.ui/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--codan/org.eclipse.cdt.codan.ui/META-INF/MANIFEST.MF4
-rw-r--r--codan/org.eclipse.cdt.codan.ui/about.html14
-rw-r--r--codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/widgets/CustomizeProblemComposite.java19
-rw-r--r--codan/pom.xml12
-rw-r--r--core/org.eclipse.cdt.core.linux.aarch64/.project22
-rw-r--r--core/org.eclipse.cdt.core.linux.aarch64/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--core/org.eclipse.cdt.core.linux.aarch64/.settings/org.eclipse.pde.api.tools.prefs (renamed from lrparser/org.eclipse.cdt.core.lrparser/.settings/org.eclipse.pde.api.tools.prefs)0
-rw-r--r--core/org.eclipse.cdt.core.linux.aarch64/.settings/org.eclipse.pde.prefs (renamed from lrparser/org.eclipse.cdt.core.lrparser/.settings/org.eclipse.pde.prefs)0
-rw-r--r--core/org.eclipse.cdt.core.linux.aarch64/META-INF/MANIFEST.MF9
-rw-r--r--core/org.eclipse.cdt.core.linux.aarch64/about.html38
-rw-r--r--core/org.eclipse.cdt.core.linux.aarch64/build.properties18
-rwxr-xr-xcore/org.eclipse.cdt.core.linux.aarch64/os/linux/aarch64/libpty.sobin0 -> 13880 bytes
-rwxr-xr-xcore/org.eclipse.cdt.core.linux.aarch64/os/linux/aarch64/libspawner.sobin0 -> 29056 bytes
-rw-r--r--core/org.eclipse.cdt.core.linux.aarch64/plugin.properties2
-rw-r--r--core/org.eclipse.cdt.core.linux.aarch64/pom.xml74
-rw-r--r--core/org.eclipse.cdt.core.linux.ppc64le/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--core/org.eclipse.cdt.core.linux.ppc64le/.settings/org.eclipse.jdt.core.prefs464
-rw-r--r--core/org.eclipse.cdt.core.linux.ppc64le/.settings/org.eclipse.jdt.ui.prefs133
-rw-r--r--core/org.eclipse.cdt.core.linux.ppc64le/META-INF/MANIFEST.MF4
-rw-r--r--core/org.eclipse.cdt.core.linux.ppc64le/about.html14
-rw-r--r--core/org.eclipse.cdt.core.linux.ppc64le/build.properties2
-rwxr-xr-xcore/org.eclipse.cdt.core.linux.ppc64le/os/linux/ppc64le/libpty.sobin14162 -> 71168 bytes
-rwxr-xr-xcore/org.eclipse.cdt.core.linux.ppc64le/os/linux/ppc64le/libspawner.sobin30292 -> 75168 bytes
-rw-r--r--core/org.eclipse.cdt.core.linux.ppc64le/pom.xml25
-rw-r--r--core/org.eclipse.cdt.core.linux.x86_64/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--core/org.eclipse.cdt.core.linux.x86_64/.settings/org.eclipse.jdt.core.prefs464
-rw-r--r--core/org.eclipse.cdt.core.linux.x86_64/.settings/org.eclipse.jdt.ui.prefs133
-rw-r--r--core/org.eclipse.cdt.core.linux.x86_64/META-INF/MANIFEST.MF4
-rw-r--r--core/org.eclipse.cdt.core.linux.x86_64/about.html14
-rw-r--r--core/org.eclipse.cdt.core.linux.x86_64/build.properties2
-rwxr-xr-x[-rw-r--r--]core/org.eclipse.cdt.core.linux.x86_64/os/linux/x86_64/libpty.sobin10374 -> 13280 bytes
-rwxr-xr-x[-rw-r--r--]core/org.eclipse.cdt.core.linux.x86_64/os/linux/x86_64/libspawner.sobin20471 -> 24040 bytes
-rw-r--r--core/org.eclipse.cdt.core.linux.x86_64/pom.xml25
-rw-r--r--core/org.eclipse.cdt.core.linux/.classpath4
-rw-r--r--core/org.eclipse.cdt.core.linux/.project6
-rw-r--r--core/org.eclipse.cdt.core.linux/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--core/org.eclipse.cdt.core.linux/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--core/org.eclipse.cdt.core.linux/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--core/org.eclipse.cdt.core.linux/META-INF/MANIFEST.MF6
-rw-r--r--core/org.eclipse.cdt.core.linux/about.html14
-rw-r--r--core/org.eclipse.cdt.core.linux/build.properties3
-rw-r--r--core/org.eclipse.cdt.core.linux/library/Makefile44
-rw-r--r--core/org.eclipse.cdt.core.linux/library/PTY.h29
-rw-r--r--core/org.eclipse.cdt.core.linux/library/PTYInputStream.h32
-rw-r--r--core/org.eclipse.cdt.core.linux/library/PTYOutputStream.h29
-rw-r--r--core/org.eclipse.cdt.core.linux/library/Spawner.h53
-rw-r--r--core/org.eclipse.cdt.core.linux/library/SpawnerInputStream.h32
-rw-r--r--core/org.eclipse.cdt.core.linux/library/SpawnerOutputStream.h29
-rw-r--r--core/org.eclipse.cdt.core.linux/library/exec0.h32
-rw-r--r--core/org.eclipse.cdt.core.linux/library/exec_pty.c189
-rw-r--r--core/org.eclipse.cdt.core.linux/library/exec_unix.c161
-rw-r--r--core/org.eclipse.cdt.core.linux/library/io.c117
-rw-r--r--core/org.eclipse.cdt.core.linux/library/openpty.c133
-rw-r--r--core/org.eclipse.cdt.core.linux/library/openpty.h21
-rw-r--r--core/org.eclipse.cdt.core.linux/library/pfind.c112
-rw-r--r--core/org.eclipse.cdt.core.linux/library/pty.c73
-rw-r--r--core/org.eclipse.cdt.core.linux/library/ptyio.c120
-rw-r--r--core/org.eclipse.cdt.core.linux/library/spawner.c305
-rw-r--r--core/org.eclipse.cdt.core.linux/pom.xml116
-rw-r--r--core/org.eclipse.cdt.core.macosx/.classpath4
-rw-r--r--core/org.eclipse.cdt.core.macosx/.project6
-rw-r--r--core/org.eclipse.cdt.core.macosx/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--core/org.eclipse.cdt.core.macosx/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--core/org.eclipse.cdt.core.macosx/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--core/org.eclipse.cdt.core.macosx/META-INF/MANIFEST.MF6
-rw-r--r--core/org.eclipse.cdt.core.macosx/about.html14
-rw-r--r--core/org.eclipse.cdt.core.macosx/build.properties3
-rw-r--r--core/org.eclipse.cdt.core.macosx/library/.gitignore2
-rw-r--r--core/org.eclipse.cdt.core.macosx/library/Makefile135
-rw-r--r--core/org.eclipse.cdt.core.macosx/library/PTY.h29
-rw-r--r--core/org.eclipse.cdt.core.macosx/library/PTYInputStream.h32
-rw-r--r--core/org.eclipse.cdt.core.macosx/library/PTYOutputStream.h29
-rw-r--r--core/org.eclipse.cdt.core.macosx/library/Spawner.h53
-rw-r--r--core/org.eclipse.cdt.core.macosx/library/SpawnerInputStream.h32
-rw-r--r--core/org.eclipse.cdt.core.macosx/library/SpawnerOutputStream.h29
-rw-r--r--core/org.eclipse.cdt.core.macosx/library/exec0.h29
-rw-r--r--core/org.eclipse.cdt.core.macosx/library/exec_pty.c189
-rw-r--r--core/org.eclipse.cdt.core.macosx/library/exec_unix.c161
-rw-r--r--core/org.eclipse.cdt.core.macosx/library/io.c116
-rw-r--r--core/org.eclipse.cdt.core.macosx/library/openpty.c134
-rw-r--r--core/org.eclipse.cdt.core.macosx/library/openpty.h19
-rw-r--r--core/org.eclipse.cdt.core.macosx/library/pfind.c112
-rw-r--r--core/org.eclipse.cdt.core.macosx/library/pty.c74
-rw-r--r--core/org.eclipse.cdt.core.macosx/library/ptyio.c120
-rw-r--r--core/org.eclipse.cdt.core.macosx/library/spawner.c305
-rwxr-xr-xcore/org.eclipse.cdt.core.macosx/os/macosx/aarch64/libpty.jnilibbin0 -> 51242 bytes
-rwxr-xr-xcore/org.eclipse.cdt.core.macosx/os/macosx/aarch64/libspawner.jnilibbin0 -> 53454 bytes
-rwxr-xr-xcore/org.eclipse.cdt.core.macosx/os/macosx/x86/libpty.jnilibbin9764 -> 0 bytes
-rwxr-xr-xcore/org.eclipse.cdt.core.macosx/os/macosx/x86/libspawner.jnilibbin19780 -> 0 bytes
-rwxr-xr-xcore/org.eclipse.cdt.core.macosx/os/macosx/x86_64/libpty.jnilibbin9796 -> 9792 bytes
-rwxr-xr-xcore/org.eclipse.cdt.core.macosx/os/macosx/x86_64/libspawner.jnilibbin19904 -> 20184 bytes
-rw-r--r--core/org.eclipse.cdt.core.macosx/plugin.properties2
-rw-r--r--core/org.eclipse.cdt.core.macosx/pom.xml30
-rw-r--r--core/org.eclipse.cdt.core.native/.classpath2
-rw-r--r--core/org.eclipse.cdt.core.native/.options9
-rw-r--r--core/org.eclipse.cdt.core.native/.project1
-rw-r--r--core/org.eclipse.cdt.core.native/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--core/org.eclipse.cdt.core.native/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--core/org.eclipse.cdt.core.native/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--core/org.eclipse.cdt.core.native/META-INF/MANIFEST.MF8
-rw-r--r--core/org.eclipse.cdt.core.native/about.html14
-rw-r--r--core/org.eclipse.cdt.core.native/about.ini24
-rw-r--r--core/org.eclipse.cdt.core.native/about.mappings9
-rw-r--r--core/org.eclipse.cdt.core.native/about.properties32
-rw-r--r--core/org.eclipse.cdt.core.native/build.properties12
-rw-r--r--core/org.eclipse.cdt.core.native/cdt_logo_icon32.pngbin0 -> 1885 bytes
-rw-r--r--core/org.eclipse.cdt.core.native/native_src/Makefile197
-rw-r--r--core/org.eclipse.cdt.core.native/native_src/include/org_eclipse_cdt_utils_pty_PTY.h43
-rw-r--r--core/org.eclipse.cdt.core.native/native_src/include/org_eclipse_cdt_utils_pty_PTYInputStream.h33
-rw-r--r--core/org.eclipse.cdt.core.native/native_src/include/org_eclipse_cdt_utils_pty_PTYOutputStream.h29
-rw-r--r--core/org.eclipse.cdt.core.native/native_src/include/org_eclipse_cdt_utils_spawner_Spawner.h73
-rw-r--r--core/org.eclipse.cdt.core.native/native_src/include/org_eclipse_cdt_utils_spawner_SpawnerInputStream.h41
-rw-r--r--core/org.eclipse.cdt.core.native/native_src/include/org_eclipse_cdt_utils_spawner_SpawnerOutputStream.h28
-rw-r--r--core/org.eclipse.cdt.core.native/native_src/unix/exec0.h27
-rw-r--r--core/org.eclipse.cdt.core.native/native_src/unix/exec_pty.c190
-rw-r--r--core/org.eclipse.cdt.core.native/native_src/unix/exec_unix.c157
-rw-r--r--core/org.eclipse.cdt.core.native/native_src/unix/io.c116
-rw-r--r--core/org.eclipse.cdt.core.native/native_src/unix/openpty.c134
-rw-r--r--core/org.eclipse.cdt.core.native/native_src/unix/openpty.h21
-rw-r--r--core/org.eclipse.cdt.core.native/native_src/unix/pfind.c111
-rw-r--r--core/org.eclipse.cdt.core.native/native_src/unix/pty.c71
-rw-r--r--core/org.eclipse.cdt.core.native/native_src/unix/ptyio.c99
-rw-r--r--core/org.eclipse.cdt.core.native/native_src/unix/spawner.c245
-rw-r--r--core/org.eclipse.cdt.core.native/native_src/win/Win32ProcessEx.c866
-rw-r--r--core/org.eclipse.cdt.core.native/native_src/win/include/winpty.h105
-rw-r--r--core/org.eclipse.cdt.core.native/native_src/win/iostream.c220
-rw-r--r--core/org.eclipse.cdt.core.native/native_src/win/pty.cpp382
-rw-r--r--core/org.eclipse.cdt.core.native/native_src/win/pty_dllmain.cpp47
-rw-r--r--core/org.eclipse.cdt.core.native/native_src/win/raise.c165
-rw-r--r--core/org.eclipse.cdt.core.native/native_src/win/spawner.c53
-rw-r--r--core/org.eclipse.cdt.core.native/native_src/win/starter.c491
-rw-r--r--core/org.eclipse.cdt.core.native/native_src/win/util.c189
-rw-r--r--core/org.eclipse.cdt.core.native/native_src/win/util.h54
-rw-r--r--[-rwxr-xr-x]core/org.eclipse.cdt.core.native/plugin.properties3
-rw-r--r--core/org.eclipse.cdt.core.native/plugin.xml5
-rw-r--r--core/org.eclipse.cdt.core.native/pom.xml163
-rw-r--r--core/org.eclipse.cdt.core.native/schema/WindowsRegistry.exsd66
-rw-r--r--core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/internal/core/natives/CNativePlugin.java37
-rw-r--r--core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/internal/core/natives/Messages.java2
-rw-r--r--core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/internal/core/natives/Messages.properties2
-rw-r--r--core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/WindowsArgumentQuoter.java75
-rw-r--r--core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/WindowsRegistry.java68
-rw-r--r--core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/pty/ConPTY.java357
-rw-r--r--core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/pty/ConPTYInputStream.java67
-rw-r--r--core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/pty/ConPTYKernel32.java69
-rw-r--r--core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/pty/ConPTYOutputStream.java51
-rw-r--r--core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/pty/PTY.java157
-rw-r--r--core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/pty/PTYInputStream.java5
-rw-r--r--core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/spawner/EnvironmentReader.java55
-rw-r--r--core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/spawner/ProcessFactory.java83
-rw-r--r--core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/spawner/Spawner.java265
-rw-r--r--core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/spawner/SpawnerInputStream.java27
-rw-r--r--core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/spawner/SpawnerOutputStream.java23
-rw-r--r--core/org.eclipse.cdt.core.tests/.classpath32
-rw-r--r--core/org.eclipse.cdt.core.tests/.project6
-rw-r--r--core/org.eclipse.cdt.core.tests/.settings/.api_filters12
-rw-r--r--core/org.eclipse.cdt.core.tests/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--core/org.eclipse.cdt.core.tests/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--core/org.eclipse.cdt.core.tests/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--core/org.eclipse.cdt.core.tests/META-INF/MANIFEST.MF16
-rw-r--r--core/org.eclipse.cdt.core.tests/about.html14
-rw-r--r--core/org.eclipse.cdt.core.tests/build.properties1
-rw-r--r--core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/cdescriptor/tests/CDescriptorTests.java151
-rw-r--r--core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/errorparsers/tests/ErrorParserTestSuite.java41
-rw-r--r--core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/errorparsers/tests/ErrorParserTests.java37
-rw-r--r--core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/errorparsers/tests/GCCErrorParserTests.java30
-rw-r--r--core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/errorparsers/tests/GLDErrorParserTests.java42
-rw-r--r--core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/errorparsers/tests/GenericErrorParserTests.java10
-rw-r--r--core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/preferences/tests/ScopeOfBuildConfigResourceChangesPreferenceTests.java77
-rw-r--r--core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/preferences/tests/TestScopeOfBuildConfigResourceChangesPreference.java77
-rw-r--r--core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/winreg/tests/WinRegTests.java4
-rw-r--r--core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/utils/CdtVariableResolverTest.java81
-rw-r--r--core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/utils/elf/ElfTest.java164
-rw-r--r--core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/AllLanguageTestSuite.java32
-rw-r--r--core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/AllLanguageTests.java31
-rw-r--r--core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/AllLanguageSettingsProvidersCoreTestSuite.java41
-rw-r--r--core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/AllLanguageSettingsProvidersCoreTests.java39
-rw-r--r--core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/LanguageSettingsPersistenceProjectTests.java97
-rw-r--r--core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/AllCoreTestSuite.java73
-rw-r--r--core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/AllCoreTests.java71
-rw-r--r--core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/AllLanguageInterfaceTestSuite.java54
-rw-r--r--core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/AllLanguageInterfaceTests.java52
-rw-r--r--core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/Bug311189.java94
-rw-r--r--core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/Bug311189Tests.java94
-rw-r--r--core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/CModelElementsTests.java93
-rw-r--r--core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/CModelTests.java307
-rw-r--r--core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/TranslationUnitBaseTest.java2
-rw-r--r--core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/settings/model/AllCProjectDescriptionTestSuite.java44
-rw-r--r--core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/settings/model/AllCProjectDescriptionTests.java40
-rw-r--r--core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/settings/model/CConfigurationDescriptionExportSettings.java499
-rw-r--r--core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/settings/model/CConfigurationDescriptionExportSettingsTests.java499
-rw-r--r--core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/settings/model/CProjectDescriptionDeltaTests.java2
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/FileBasePluginTestCase.java2
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ParserTestSuite.java2
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPSpecTest.java6
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java299
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2FileBasePluginTestCase.java2
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2KnRTests.java6
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TemplateLValueRValueTests.java878
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TemplateTests.java15
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TestBase.java15
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2Tests.java27
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/DOMFileBasePluginTest.java2
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/DOMGCCParserExtensionTestSuite.java3
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/DOMParserTestSuite.java2
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/VariableReadWriteFlagsTest.java68
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/AllConstexprEvalTestSuite.java76
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/AllConstexprEvalTests.java72
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/ArrayTests.java14
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/BinaryExpressionTests.java14
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/BinaryOperatorOverloadingTests.java14
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/CStringValueTests.java14
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/ClassTemplateTests.java14
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/ConstructorTests.java16
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/DoWhileStatementTests.java14
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/FloatingPointValueTests.java14
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/ForStatementTests.java14
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/FunctionTemplateTests.java14
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/FunctionTests.java30
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/IfStatementTests.java14
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/IntegralValueTests.java85
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/MemberFunctionTests.java14
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/MemberVariableTests.java14
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/PointerTests.java14
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/RangeBasedForStatementTests.java14
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/ReferenceTests.java14
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/StructuredBindingTests.java14
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/SwitchStatementTests.java14
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/TestBase.java13
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/TypeAliasTests.java14
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/UnaryExpressionTests.java14
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/UnaryOperatorOverloadingTests.java14
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/UserDefinedLiteralTests.java14
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/WhileStatementTests.java14
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx17/LambdaExpressionTests.java8
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx17/TemplateAutoTests.java33
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/prefix/CompletionTestSuite.java4
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/RewriteTestSuite.java37
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/RewriteTests.java33
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/astwriter/ASTWriterTest.java137
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/astwriter/ASTWriterTester.java137
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/astwriter/AstWriterTestSuite.java43
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/astwriter/SourceRewriteTest.java210
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/astwriter/SourceRewriteTester.java168
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/ChangeGeneratorTestSuite.java2
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/comenthandler/CommentHandlingTest.java10
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/comenthandler/CommentHandlingTestSuite.java9
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/comenthandler/CommentHandlingWithRewriteTest.java11
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/scanner/InclusionTests.java133
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/scanner/ScannerTestSuite.java4
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/scannerinfo/ExtendedScannerInfoSerializerDeserializerTest.java111
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCBindingResolutionBugs.java506
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCBindingResolutionBugsTest.java506
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCBindingResolutionTest.java18
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPBindingResolutionBugs.java1400
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPBindingResolutionBugsSingleProjectFirstAST.java48
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPBindingResolutionBugsSingleProjectFirstASTTest.java48
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPBindingResolutionBugsTest.java1400
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPBindingResolutionTest.java20
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPTemplateResolutionTest.java18
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPVariableTemplateResolutionTest.java18
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexGPPBindingResolutionTest.java16
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexIncludeTest.java144
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexTestSuite.java66
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexTests.java64
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/TeamSharedIndexTest.java1
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/BTreeExpensiveTests.java19
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/BTreeTests.java19
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/CPPFunctionTests.java14
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/ChangeConfigurationTests.java1
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/ClassTests.java10
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/EnumerationTests.java11
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/PDOMSearchTest.java2
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/PDOMTestBase.java1
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/PDOMTestSuite.java71
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/PDOMTests.java69
-rw-r--r--core/org.eclipse.cdt.core.tests/plugin.properties14
-rw-r--r--core/org.eclipse.cdt.core.tests/pom.xml26
-rw-r--r--core/org.eclipse.cdt.core.tests/regression/org/eclipse/cdt/core/tests/BaseTestFramework.java8
-rw-r--r--core/org.eclipse.cdt.core.tests/regression/org/eclipse/cdt/core/tests/FailingTest.java72
-rw-r--r--core/org.eclipse.cdt.core.tests/regression/org/eclipse/cdt/core/tests/FailingTester.java72
-rw-r--r--core/org.eclipse.cdt.core.tests/resources/cfiles/CModelElementsTestStart.h16
-rw-r--r--core/org.eclipse.cdt.core.tests/resources/elf/unit_test/Makefile2
-rw-r--r--core/org.eclipse.cdt.core.tests/resources/elf/unit_test/readme.txt23
-rw-r--r--core/org.eclipse.cdt.core.tests/resources/elf/unit_test/simple-be32.elfbin0 -> 69736 bytes
-rw-r--r--core/org.eclipse.cdt.core.tests/resources/elf/unit_test/simple-be64.elfbin0 -> 71144 bytes
-rw-r--r--core/org.eclipse.cdt.core.tests/resources/elf/unit_test/simple-le32.elfbin0 -> 8188 bytes
-rw-r--r--core/org.eclipse.cdt.core.tests/resources/elf/unit_test/simple-le64.elfbin0 -> 9576 bytes
-rw-r--r--core/org.eclipse.cdt.core.tests/resources/elf/unit_test/simple.c9
-rw-r--r--core/org.eclipse.cdt.core.tests/resources/pdomtests/classTests/class.cpp3
-rw-r--r--core/org.eclipse.cdt.core.tests/resources/pdomtests/enumerationTests/enumTest.cpp6
-rw-r--r--core/org.eclipse.cdt.core.tests/resources/pdomtests/functionTests/modifiers.cpp6
-rwxr-xr-x[-rw-r--r--]core/org.eclipse.cdt.core.tests/resources/testlib/x86/so.g/libtestlib_g.sobin10171 -> 10171 bytes
-rw-r--r--core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/suite/AutomatedIntegrationSuite.java43
-rw-r--r--core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/testplugin/util/BaseTestCase.java188
-rw-r--r--core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/testplugin/util/BaseTestCase5.java309
-rw-r--r--core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/testplugin/util/LogMonitoring.java90
-rw-r--r--core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/testplugin/util/ModelJoiner.java69
-rw-r--r--core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/testplugin/util/OneSourceMultipleHeadersTestCase.java2
-rw-r--r--core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/testplugin/util/TestSourceReader.java4
-rw-r--r--core/org.eclipse.cdt.core.win32.x86_64/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--core/org.eclipse.cdt.core.win32.x86_64/.settings/org.eclipse.jdt.core.prefs464
-rw-r--r--core/org.eclipse.cdt.core.win32.x86_64/.settings/org.eclipse.jdt.ui.prefs133
-rw-r--r--core/org.eclipse.cdt.core.win32.x86_64/META-INF/MANIFEST.MF4
-rw-r--r--core/org.eclipse.cdt.core.win32.x86_64/about.html14
-rw-r--r--core/org.eclipse.cdt.core.win32.x86_64/os/win32/x86_64/listtasks.exebin165888 -> 0 bytes
-rwxr-xr-x[-rw-r--r--]core/org.eclipse.cdt.core.win32.x86_64/os/win32/x86_64/pty.dllbin89088 -> 1039023 bytes
-rwxr-xr-x[-rw-r--r--]core/org.eclipse.cdt.core.win32.x86_64/os/win32/x86_64/spawner.dllbin68608 -> 335938 bytes
-rwxr-xr-x[-rw-r--r--]core/org.eclipse.cdt.core.win32.x86_64/os/win32/x86_64/starter.exebin60416 -> 403406 bytes
-rwxr-xr-x[-rw-r--r--]core/org.eclipse.cdt.core.win32.x86_64/os/win32/x86_64/winpty-agent.exebin154624 -> 154624 bytes
-rwxr-xr-x[-rw-r--r--]core/org.eclipse.cdt.core.win32.x86_64/os/win32/x86_64/winpty.dllbin183296 -> 183296 bytes
-rw-r--r--core/org.eclipse.cdt.core.win32.x86_64/os/win32/x86_64/winreg.dllbin39936 -> 0 bytes
-rw-r--r--core/org.eclipse.cdt.core.win32.x86_64/pom.xml25
-rw-r--r--core/org.eclipse.cdt.core.win32/.classpath4
-rw-r--r--core/org.eclipse.cdt.core.win32/.project6
-rw-r--r--core/org.eclipse.cdt.core.win32/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--core/org.eclipse.cdt.core.win32/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--core/org.eclipse.cdt.core.win32/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--core/org.eclipse.cdt.core.win32/META-INF/MANIFEST.MF8
-rw-r--r--core/org.eclipse.cdt.core.win32/about.html14
-rw-r--r--core/org.eclipse.cdt.core.win32/build.properties3
-rw-r--r--core/org.eclipse.cdt.core.win32/fragment.xml7
-rw-r--r--core/org.eclipse.cdt.core.win32/library/.gitignore8
-rw-r--r--core/org.eclipse.cdt.core.win32/library/Makefile34
-rw-r--r--core/org.eclipse.cdt.core.win32/library/Makefile_x86_64.mk76
-rw-r--r--core/org.eclipse.cdt.core.win32/library/Readme64.txt26
-rw-r--r--core/org.eclipse.cdt.core.win32/library/Spawner.h79
-rw-r--r--core/org.eclipse.cdt.core.win32/library/SpawnerInputStream.h50
-rw-r--r--core/org.eclipse.cdt.core.win32/library/SpawnerOutputStream.h46
-rw-r--r--core/org.eclipse.cdt.core.win32/library/StdAfx.c25
-rw-r--r--core/org.eclipse.cdt.core.win32/library/StdAfx.h44
-rw-r--r--core/org.eclipse.cdt.core.win32/library/Win32ProcessEx.c1009
-rw-r--r--core/org.eclipse.cdt.core.win32/library/build64.bat14
-rw-r--r--core/org.eclipse.cdt.core.win32/library/cdt-win32.sln33
-rw-r--r--core/org.eclipse.cdt.core.win32/library/iostream.c272
-rw-r--r--core/org.eclipse.cdt.core.win32/library/listtasks/StdAfx.cpp21
-rw-r--r--core/org.eclipse.cdt.core.win32/library/listtasks/StdAfx.h32
-rw-r--r--core/org.eclipse.cdt.core.win32/library/listtasks/listtasks.cpp349
-rw-r--r--core/org.eclipse.cdt.core.win32/library/listtasks/listtasks.dsp117
-rw-r--r--core/org.eclipse.cdt.core.win32/library/listtasks/listtasks.dsw29
-rw-r--r--core/org.eclipse.cdt.core.win32/library/listtasks/listtasks.h25
-rw-r--r--core/org.eclipse.cdt.core.win32/library/pty/jni/include/PTY.h45
-rw-r--r--core/org.eclipse.cdt.core.win32/library/pty/jni/include/PTYInputStream.h31
-rw-r--r--core/org.eclipse.cdt.core.win32/library/pty/jni/include/PTYOutputStream.h29
-rw-r--r--core/org.eclipse.cdt.core.win32/library/pty/jni/src/dllmain.cpp71
-rw-r--r--core/org.eclipse.cdt.core.win32/library/pty/jni/src/pty.cpp424
-rw-r--r--core/org.eclipse.cdt.core.win32/library/pty/pty.sln46
-rw-r--r--core/org.eclipse.cdt.core.win32/library/pty/pty.vcxproj177
-rw-r--r--core/org.eclipse.cdt.core.win32/library/pty/pty.vcxproj.filters30
-rw-r--r--core/org.eclipse.cdt.core.win32/library/pty/winpty-agent.vcxproj185
-rw-r--r--core/org.eclipse.cdt.core.win32/library/pty/winpty-agent.vcxproj.filters90
-rw-r--r--core/org.eclipse.cdt.core.win32/library/pty/winpty.vcxproj167
-rw-r--r--core/org.eclipse.cdt.core.win32/library/pty/winpty.vcxproj.filters39
-rw-r--r--core/org.eclipse.cdt.core.win32/library/raise.c194
-rw-r--r--core/org.eclipse.cdt.core.win32/library/setenv64.bat1
-rw-r--r--core/org.eclipse.cdt.core.win32/library/spawner.c57
-rw-r--r--core/org.eclipse.cdt.core.win32/library/starter/Makefile23
-rw-r--r--core/org.eclipse.cdt.core.win32/library/starter/starter.cpp526
-rw-r--r--core/org.eclipse.cdt.core.win32/library/winreg/.gitignore1
-rw-r--r--core/org.eclipse.cdt.core.win32/library/winreg/dllmain.cpp31
-rw-r--r--core/org.eclipse.cdt.core.win32/library/winreg/stdafx.cpp17
-rw-r--r--core/org.eclipse.cdt.core.win32/library/winreg/stdafx.h25
-rw-r--r--core/org.eclipse.cdt.core.win32/library/winreg/targetver.h21
-rw-r--r--core/org.eclipse.cdt.core.win32/library/winreg/winreg.cpp154
-rw-r--r--core/org.eclipse.cdt.core.win32/library/winreg/winreg.vcxproj175
-rw-r--r--core/org.eclipse.cdt.core.win32/library/winreg/winreg.vcxproj.filters36
-rw-r--r--core/org.eclipse.cdt.core.win32/plugin.properties2
-rw-r--r--core/org.eclipse.cdt.core.win32/pom.xml14
-rw-r--r--core/org.eclipse.cdt.core.win32/src/org/eclipse/cdt/internal/core/win32/ProcessList.java85
-rw-r--r--core/org.eclipse.cdt.core.win32/src/org/eclipse/cdt/internal/core/win32/WindowsRegistryImpl.java146
-rw-r--r--core/org.eclipse.cdt.core/.classpath3
-rw-r--r--core/org.eclipse.cdt.core/.project5
-rw-r--r--core/org.eclipse.cdt.core/.settings/.api_filters236
-rw-r--r--core/org.eclipse.cdt.core/.settings/org.eclipse.core.resources.prefs1
-rw-r--r--core/org.eclipse.cdt.core/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--core/org.eclipse.cdt.core/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--core/org.eclipse.cdt.core/.settings/org.eclipse.pde.ds.annotations.prefs8
-rw-r--r--core/org.eclipse.cdt.core/META-INF/MANIFEST.MF40
-rw-r--r--core/org.eclipse.cdt.core/OSGI-INF/org.eclipse.cdt.doxygen.internal.core.DoxygenPreferenceAccess.xml8
-rw-r--r--core/org.eclipse.cdt.core/about.html14
-rw-r--r--core/org.eclipse.cdt.core/browser/org/eclipse/cdt/core/browser/PathUtil.java178
-rw-r--r--core/org.eclipse.cdt.core/browser/org/eclipse/cdt/core/browser/TypeSearchScope.java4
-rw-r--r--core/org.eclipse.cdt.core/build.properties7
-rw-r--r--core/org.eclipse.cdt.core/doxygen/org/eclipse/cdt/doxygen/DoxygenMetadata.java78
-rw-r--r--core/org.eclipse.cdt.core/doxygen/org/eclipse/cdt/doxygen/DoxygenOptions.java52
-rw-r--r--core/org.eclipse.cdt.core/doxygen/org/eclipse/cdt/doxygen/core/DoxygenConfiguration.java40
-rw-r--r--core/org.eclipse.cdt.core/doxygen/org/eclipse/cdt/doxygen/core/DoxygenPreferences.java44
-rw-r--r--core/org.eclipse.cdt.core/doxygen/org/eclipse/cdt/doxygen/internal/core/DoxygenCoreMessages.java39
-rw-r--r--core/org.eclipse.cdt.core/doxygen/org/eclipse/cdt/doxygen/internal/core/DoxygenCoreMessages.properties26
-rw-r--r--core/org.eclipse.cdt.core/doxygen/org/eclipse/cdt/doxygen/internal/core/DoxygenMetadataDefaults.java85
-rw-r--r--core/org.eclipse.cdt.core/doxygen/org/eclipse/cdt/doxygen/internal/core/DoxygenOptionsAccess.java55
-rw-r--r--core/org.eclipse.cdt.core/doxygen/org/eclipse/cdt/doxygen/internal/core/DoxygenPreferenceAccess.java87
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/language/settings/providers/LanguageSettingsManager.java2
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/language/settings/providers/LanguageSettingsSerializableProvider.java2
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/CoreModel.java4
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/ICElement.java6
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/ICElementVisitor.java6
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/ILanguage.java4
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/IPathEntryContainerExtension.java4
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/IPragma.java54
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/ITranslationUnit.java12
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/IWorkingCopy.java4
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/LanguageMappingChangeEvent.java18
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/CLibraryFileEntry.java9
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/ICConfigurationDescription.java10
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/ICMacroEntry.java3
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/ICProjectDescriptionManager.java2
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/ICSettingEntry.java2
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/ICSettingsStorage.java2
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/MultiItemsHolder.java6
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/MultiLanguageSetting.java57
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/extension/CConfigurationDataProvider.java2
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/extension/impl/CDefaultBuildData.java4
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/extension/impl/CDefaultConfigurationData.java6
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/extension/impl/CDefaultFolderData.java4
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/extension/impl/CDefaultLanguageData.java3
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/util/CDataUtil.java9
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/util/ResourceChangeHandlerBase.java5
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/language/settings/providers/LanguageSettingsProvidersSerializer.java21
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/language/settings/providers/PathEntryScannerInfoLanguageSettingsProvider.java2
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/language/settings/providers/ReferencedProjectsLanguageSettingsProvider.java2
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/APathEntry.java3
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/Archive.java17
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/ArchiveContainer.java3
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/ArchiveContainerInfo.java9
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BatchOperation.java6
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/Binary.java31
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BinaryContainer.java3
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BinaryContainerInfo.java9
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BinaryElement.java36
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BinaryFunction.java29
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BinaryModule.java24
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BinaryRunner.java3
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BinaryVariable.java21
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CElement.java6
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CElementInfo.java10
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelBuilder2.java69
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CShiftData.java30
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CoreModelMessages.java6
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CreateFieldOperation.java12
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CreateMethodOperation.java12
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CreateSourceReferenceOperation.java9
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/DefaultPathEntryStore.java9
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/IncludeEntry.java6
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/IncludeFileEntry.java6
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/IncludeReference.java27
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/LibraryEntry.java6
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/LibraryReference.java15
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/LibraryReferenceArchive.java12
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/LibraryReferenceShared.java15
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/MacroEntry.java3
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/MacroFileEntry.java6
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/NullBinaryParser.java17
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/PathEntryContainerUpdatesOperation.java3
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/PathEntryStoreChangedOperation.java3
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/Pragma.java121
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/SetPathEntriesOperation.java3
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/SetPathEntryContainerOperation.java3
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/StructureDeclaration.java12
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/Using.java3
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/Util.java6
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/VariableTemplate.java12
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/AbstractCProjectDescriptionStorage.java9
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CConfigurationSpecSettings.java8
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionManager.java56
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionPreferences.java17
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionStorageManager.java3
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/ConfigBasedPathEntryStore.java12
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/MultiConfigDescription.java162
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/MultiFileDescription.java3
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/MultiFolderDescription.java24
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/MultiResourceDescription.java49
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/ResourceChangeHandler.java16
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/SetCProjectDescriptionOperation.java9
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/xml/XmlProjectDescriptionStorage.java16
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/xml/XmlStorageElement.java5
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/xml2/XmlProjectDescriptionStorage2.java4
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/ASTTypeUtil.java5
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTAlignmentSpecifier.java12
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTBinaryExpression.java26
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTBinaryTypeIdExpression.java6
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTElaboratedTypeSpecifier.java2
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTFieldReference.java4
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTMacroExpansion.java2
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTNode.java2
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTStandardFunctionDeclarator.java2
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTUnaryExpression.java10
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IFunction.java8
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IProblemBinding.java2
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPASTAliasDeclaration.java2
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPASTCastExpression.java8
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPASTFunctionDeclarator.java16
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPASTFunctionTryBlockDeclarator.java2
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPASTReferenceOperator.java4
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPASTStructuredBindingDeclaration.java14
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPASTTemplatedTypeTemplateParameter.java2
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPBasicType.java2
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPClassTemplatePartialSpecialization.java4
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPClassType.java7
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPEnumeration.java6
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPNodeFactory.java2
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPReferenceType.java2
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPTemplateNonTypeParameter.java2
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/gnu/IGNUASTGotoStatement.java2
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/gnu/c/ICASTKnRFunctionDeclarator.java6
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/gnu/cpp/IGPPASTBinaryExpression.java4
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/parser/AbstractCLikeLanguage.java4
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/parser/AbstractScannerExtensionConfiguration.java2
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/parser/GNUScannerExtensionConfiguration.java2
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/parser/c/GCCScannerExtensionConfiguration.java1
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/parser/c/ICParserExtensionConfiguration.java6
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/parser/cpp/GPPScannerExtensionConfiguration.java95
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/parser/cpp/ICPPParserExtensionConfiguration.java6
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/rewrite/MacroExpansionExplorer.java2
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/index/IIndex.java2
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/index/export/AbstractExportProjectProvider.java2
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/index/export/ExternalExportProjectProvider.java10
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/GCCKeywords.java14
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/IGCCToken.java8
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/IProblem.java7
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/IScanner.java2
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/Keywords.java8
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ScannerInfo.java6
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/util/ArrayUtil.java2
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/util/AttributeUtil.java10
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/util/CharArrayObjectMap.java2
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/util/CollectionUtils.java6
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/util/IContentAssistMatcher.java4
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/util/ObjectTable.java2
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/util/SegmentMatcher.java4
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ASTProblem.java8
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ASTTranslationUnit.java4
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/AbstractGNUSourceCodeParser.java3
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/CompositeValue.java2
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/GCCBuiltinSymbolProvider.java108
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ITypeMarshalBuffer.java2
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ProblemBinding.java7
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ValueFactory.java5
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/VariableReadWriteFlags.java184
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CEnumeration.java12
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CEnumerator.java9
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CFunction.java6
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CFunctionScope.java3
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CImplicitTypedef.java3
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CKnRParameter.java27
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CQualifierType.java9
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CVariable.java2
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CVariableReadWriteFlags.java31
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CVisitor.java24
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/GNUCSourceParser.java11
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/AbstractCPPClassSpecializationScope.java2
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTForStatement.java6
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTFunctionDeclarator.java13
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPBasicType.java72
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPBuiltinParameter.java10
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassSpecialization.java25
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassTemplate.java10
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassType.java15
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClosureType.java21
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPDeferredClassInstance.java5
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPDeferredFunction.java5
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPEnumeration.java20
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPEnumerationSpecialization.java5
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunction.java46
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunctionInstance.java3
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunctionSpecialization.java8
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunctionTemplate.java5
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPQualifierType.java14
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateTemplateParameter.java5
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateTemplateParameterSpecialization.java5
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPUnknownMemberClass.java5
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPUnknownMethod.java5
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPVariable.java2
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GNUCPPSourceParser.java33
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/InstantiationContext.java17
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/AutoTypeResolver.java5
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPFunctionSet.java5
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPSemantics.java17
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPTemplates.java11
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPVariableReadWriteFlags.java79
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPVisitor.java10
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/Conversions.java108
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalBinary.java5
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalBinaryTypeId.java1
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalBinding.java4
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalComma.java4
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalConditional.java9
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalFunctionCall.java2
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalUnary.java18
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalUtil.java2
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/ExecBuiltin.java195
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/ExecCompoundStatement.java4
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/LookupData.java1
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/SemanticUtil.java10
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/TemplateArgumentDeduction.java56
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/TypeInstantiationRequest.java13
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/c/CompositeCFunction.java5
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPClassSpecialization.java2
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPClassType.java5
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPEnumeration.java5
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPFunction.java5
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPTemplateTemplateParameter.java5
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/indexer/StandaloneIndexerTask.java6
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/EmptyIterator.java9
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/FileContentProviderAdapter.java3
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ParserMessages.java6
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ParserMessages.properties1
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/ASTPreprocessorName.java7
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/CPreprocessor.java53
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/ExpressionEvaluator.java49
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/InternalFileContent.java43
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/MacroExpander.java6
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/PreprocessorMacro.java6
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/SignificantMacros.java2
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/token/KeywordSets.java4
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/util/Profiler.java4
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/CModelListener.java2
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOM.java15
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMManager.java8
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMProxy.java5
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/db/BTree.java7
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/db/Database.java6
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMASTAdapter.java10
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMLinkage.java2
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMMacro.java5
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMMacroContainer.java5
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMName.java1
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCAnnotations.java12
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCFunction.java5
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCVariable.java8
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPAnnotations.java10
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassSpecialization.java13
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassType.java19
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPEnumeration.java26
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPEnumerationSpecialization.java13
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunction.java5
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunctionSpecialization.java5
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPLinkage.java7
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTemplateTemplateParameter.java5
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPVariable.java8
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/export/CLIUtil.java8
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/export/GeneratePDOM.java6
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/export/GeneratePDOMApplication.java10
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/PDOMIndexerTask.java6
-rw-r--r--[-rwxr-xr-x]core/org.eclipse.cdt.core/plugin.properties9
-rw-r--r--core/org.eclipse.cdt.core/plugin.xml25
-rw-r--r--core/org.eclipse.cdt.core/schema/templates.exsd2
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/CCorePlugin.java12
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/CommandLauncher.java27
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/CommandLauncherManager.java11
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/IAddress.java2
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/ICDescriptor.java15
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/ICDescriptorManager.java2
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/ICExtensionReference.java4
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/ICommandLauncherFactory3.java33
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/ISourceFinder.java4
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/build/CBuildConfiguration.java303
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/build/ICBuildConfiguration.java4
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/build/IToolChain.java2
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/build/IToolChainManager.java2
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/build/StandardBuildConfiguration.java6
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/cdtvariables/CdtVariable.java12
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/cdtvariables/CdtVariableStatus.java15
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/cdtvariables/ICdtVariableManager.java4
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/envvar/IEnvironmentVariable.java4
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/envvar/IEnvironmentVariableManager.java6
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/errorparsers/ErrorParserNamedWrapper.java21
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/errorparsers/FixitErrorParser.java3
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/errorparsers/RegexErrorParser.java6
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/errorparsers/RegexErrorPattern.java6
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/formatter/DefaultCodeFormatterConstants.java6
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/formatter/DefaultCodeFormatterOptions.java2
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/formatter/IndentManipulation.java2
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/resources/EFSFileStorage.java12
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/resources/IPathEntryStore.java1
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/resources/IPathEntryVariableManager.java14
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/resources/RefreshExclusion.java9
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/resources/ScannerProvider.java3
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CConfigBasedDescriptor.java18
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CConfigBasedDescriptorManager.java4
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CDTLogWriter.java8
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/PositionTrackerChain.java3
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/cdtvariables/CdtMacroSupplier.java8
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/cdtvariables/CdtVariableManager.java33
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/cdtvariables/CoreVariableSubstitutor.java5
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/cdtvariables/DefaultVariableContextInfo.java12
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/cdtvariables/EclipseVariablesVariableSupplier.java9
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/cdtvariables/EnvironmentVariableSupplier.java6
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/cdtvariables/UserDefinedVariableSupplier.java12
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/cdtvariables/UserVarSupplier.java18
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/dom/AbstractCodeReaderFactory.java5
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/dom/InternalASTServiceProvider.java12
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/dom/PartialWorkingCopyCodeReaderFactory.java18
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/dom/SavedCodeReaderFactory.java12
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/envvar/BuildSystemEnvironmentSupplier.java12
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/envvar/DefaultEnvironmentContextInfo.java9
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/envvar/EclipseEnvironmentSupplier.java6
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/envvar/EnvVarCollector.java7
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/envvar/EnvironmentVariableManager.java5
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/resources/LocationAdapter.java4
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/scannerinfo/ExtendedScannerInfoSerializer.java56
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/scannerinfo/IExtendedScannerInfoDeserializer.java62
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/scannerinfo/ShadowExtendedScannerInfo.java28
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/scannerinfo/ShadowIncludeExportPatterns.java26
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/scannerinfo/ShadowPattern.java31
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/errorparsers/VCErrorParser.java2
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/formatter/CodeFormatterVisitor.java83
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/formatter/scanner/SimpleScanner.java1
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/formatter/scanner/Token.java1
-rw-r--r--core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/TemplateCore.java6
-rw-r--r--core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/TemplateEngine.java6
-rw-r--r--core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/TemplateEngineUtil.java5
-rw-r--r--core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/process/ConditionalProcessGroup.java3
-rw-r--r--core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/process/Process.java3
-rw-r--r--core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/process/ProcessHelper.java6
-rw-r--r--core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/process/ProcessRunner.java9
-rw-r--r--core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/process/ProcessRunnerFactory.java9
-rw-r--r--core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/process/processes/CreateResourceIdentifier.java2
-rw-r--r--core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/process/processes/SetEnvironmentVariable.java18
-rw-r--r--core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/internal/core/templateengine/TemplateProcessTypes.java24
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/internal/core/Cygwin.java6
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/internal/core/MinGW.java8
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/internal/core/XmlUtil.java122
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/AR.java16
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/Addr32Factory.java24
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/Addr64Factory.java24
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/BinaryObjectAdapter.java3
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/CommandLineUtil.java21
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/DefaultGnuToolFactory.java15
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/ERandomAccessFile.java22
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/Platform.java114
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/Symbol.java12
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/cdtvariables/CdtVariableResolver.java54
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/cdtvariables/SupplierBasedCdtVariableSubstitutor.java15
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/Coff.java8
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/Coff64.java6
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/Exe.java15
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/PE.java16
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/PE64.java14
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/PEArchive.java7
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/CygwinPEBinaryArchive.java2
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/CygwinPEBinaryExecutable.java2
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/CygwinPEBinaryObject.java5
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/CygwinPEBinaryShared.java2
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/CygwinPEParser.java10
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/CygwinPEParser64.java8
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/CygwinSymbol.java11
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/CygwinSymbol64.java3
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/PEBinaryArchive.java6
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/PEBinaryArchive64.java4
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/PEBinaryExecutable.java2
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/PEBinaryObject.java32
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/PEBinaryObject64.java27
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/PEBinaryShared.java2
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/PEParser.java17
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/PEParser64.java12
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/debug/IDebugEntryRequestor.java13
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/debug/dwarf/Dwarf.java33
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/debug/dwarf/DwarfReader.java51
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/debug/stabs/Stabs.java10
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/debug/stabs/TypeNumber.java3
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/debug/tools/DebugAddr2line.java6
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/debug/tools/DebugDump.java6
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/debug/tools/DebugSymsRequestor.java48
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/elf/AR.java17
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/elf/Elf.java554
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/elf/ElfHelper.java7
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/elf/parser/ElfBinaryArchive.java13
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/elf/parser/ElfBinaryObject.java37
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/elf/parser/ElfParser.java25
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/elf/parser/GNUElfBinaryObject.java3
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/elf/parser/GNUElfParser.java21
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/elf/parser/GNUSymbol.java3
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/envvar/EnvVarOperationProcessor.java4
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/envvar/StorableEnvironment.java3
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/macho/AR.java7
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/macho/MachO.java2
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/macho/MachOHelper.java8
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/macho/parser/MachOBinaryArchive.java6
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/macho/parser/MachOBinaryArchive64.java5
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/macho/parser/MachOBinaryExecutable.java2
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/macho/parser/MachOBinaryObject.java14
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/macho/parser/MachOBinaryObject64.java12
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/macho/parser/MachOBinaryShared.java2
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/macho/parser/MachOParser.java17
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/macho/parser/MachOParser64.java15
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/som/AR.java7
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/som/parser/SOMBinaryArchive.java7
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/som/parser/SOMBinaryObject.java3
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/som/parser/SOMParser.java15
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/som/parser/SomSymbol.java3
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/xcoff/AR.java8
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/xcoff/XCoff32.java8
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/xcoff/parser/XCOFFBinaryArchive.java7
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/xcoff/parser/XCOFFBinaryObject.java6
-rw-r--r--core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/xcoff/parser/XCoffSymbol.java3
-rw-r--r--core/org.eclipse.cdt.ui.tests/.classpath14
-rw-r--r--core/org.eclipse.cdt.ui.tests/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--core/org.eclipse.cdt.ui.tests/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--core/org.eclipse.cdt.ui.tests/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--core/org.eclipse.cdt.ui.tests/META-INF/MANIFEST.MF13
-rw-r--r--core/org.eclipse.cdt.ui.tests/about.html14
-rw-r--r--core/org.eclipse.cdt.ui.tests/plugin.properties4
-rw-r--r--core/org.eclipse.cdt.ui.tests/pom.xml26
-rw-r--r--core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/reducer/RemoveUnusedDeclarationsRefactoring.java2
-rw-r--r--core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/templateengine/AllTemplateEngineTestSuite.java33
-rw-r--r--core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/templateengine/AllTemplateEngineTests.java33
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/AnnotationTestCase.java2
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/AutomatedSuite.java2
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/BaseUITestCase.java7
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/UITestCaseWithProject.java1
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/buildconsole/BuildConsolePartitionerEditDataTest.java2
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/callhierarchy/CallHierarchyBaseTest.java2
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/callhierarchy/CallHierarchyBugs.java506
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/callhierarchy/CallHierarchyBugsTest.java506
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/callhierarchy/CallHierarchyTestSuite.java2
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/includebrowser/BasicIncludeBrowserTest.java38
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/includebrowser/IncludeBrowserBaseTest.java12
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/outline/BasicOutlineTest.java21
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/RefactoringTestSuite.java11
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/gettersandsetters/GenerateGettersAndSettersTest.java99
-rw-r--r--[-rwxr-xr-x]core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/implementmethod/ImplementMethodRefactoringTest.java128
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/includes/BindingClassifierTest.java6
-rw-r--r--[-rwxr-xr-x]core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/overridemethods/OverrideMethodsRefactoringTest.java64
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/rename/RefactoringTests.java2
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/rename/RenameFunctionTests.java2
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/rename/RenameMacroTests.java2
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/rename/RenameRegressionTests.java9
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/rename/RenameTemplatesTests.java2
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/rename/RenameTypeTests.java2
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/rename/RenameVariableTests.java2
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/togglefunction/ToggleRefactoringTest.java2
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/utils/CorrectCaseTest.java89
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/utils/DigitFirstCaseTest.java50
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/utils/EmptyCaseTest.java41
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/utils/IdentifierHelperTest.java245
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/utils/IllegalCharCaseTest.java50
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/utils/KeywordCaseTest.java166
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/utils/NameComposerTest.java27
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/utils/UtilTestSuite.java2
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/AbstractAutoEditTest.java2
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/BreakIteratorTest.java7
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/CHeuristicScannerTest.java16
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/CIndenterTest.java58
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/CPartitionerTest.java12
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/CodeFormatterTest.java109
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/DefaultCCommentAutoEditStrategyTest.java17
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/FoldingCommentsTest.java2
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/NumberRuleTest.java21
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/TextTestSuite.java9
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist/CompletionProposalComputerPreferenceParserTest.java81
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist/ContentAssistTestSuite.java2
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/AbstractContentAssistTest.java4
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/AnonymousTypes_CompletionTest.java97
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/ArgumentType_Prefix2_CompletionTest.java103
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/ArgumentType_Prefix_CompletionTest.java103
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/ClassReference_NoPrefix_CompletionTest.java79
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/ClassReference_Prefix_CompletionTest.java79
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_AnonymousTypes.java97
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_ArgumentType_Prefix.java103
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_ArgumentType_Prefix2.java103
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_ClassReference_NoPrefix.java79
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_ClassReference_Prefix.java79
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_ConstructorReference.java112
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_ExceptionReference_NoPrefix.java104
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_ExceptionReference_Prefix.java104
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_FieldType_NoPrefix.java102
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_FieldType_NoPrefix2.java104
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_FieldType_Prefix.java102
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_FunctionReference_Prefix.java110
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_MacroRef_NoPrefix.java104
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_MacroRef_Prefix.java101
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_MemberReference_Arrow_NoPrefix.java103
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_MemberReference_Arrow_NoPrefix2.java96
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_MemberReference_Arrow_NoPrefix3.java96
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_MemberReference_Arrow_Prefix.java101
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_MemberReference_Arrow_Prefix2.java101
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_MemberReference_Dot_NoPrefix.java102
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_MemberReference_Dot_Prefix.java101
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_NamespaceRef_NoPrefix.java79
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_NamespaceRef_Prefix.java103
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_NewTypeReference_NoPrefix.java104
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_NewTypeReference_Prefix.java102
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_ScopedReference_NoPrefix.java101
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_ScopedReference_NonCodeScope.java101
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_ScopedReference_Prefix.java101
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_SingleName_Method_NoPrefix.java111
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_SingleName_Method_Prefix.java103
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_SingleName_NoPrefix.java105
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_SingleName_Prefix.java102
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_SingleName_Prefix2.java103
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_TypeDef_NoPrefix.java101
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_TypeDef_Prefix.java101
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_TypeRef_NoPrefix.java103
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_TypeRef_Prefix.java103
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_VariableType_NestedPrefix.java101
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_VariableType_NoPrefix.java102
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_VariableType_Prefix.java102
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTests_PlainC.java827
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/ConstructorReference_CompletionTest.java112
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/ContentAssist2TestSuite.java98
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/ExceptionReference_NoPrefix_CompletionTest.java104
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/ExceptionReference_Prefix_CompletionTest.java104
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/FieldType_NoPrefix2_CompletionTest.java104
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/FieldType_NoPrefix_CompletionTest.java102
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/FieldType_Prefix_CompletionTest.java102
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/FunctionReference_Prefix_CompletionTest.java110
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/MacroRef_NoPrefix_CompletionTest.java105
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/MacroRef_Prefix_CompletionTest.java101
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/MemberReference_Arrow_NoPrefix2_CompletionTest.java96
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/MemberReference_Arrow_NoPrefix3_CompletionTest.java96
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/MemberReference_Arrow_NoPrefix_CompletionTest.java103
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/MemberReference_Arrow_Prefix2_CompletionTest.java101
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/MemberReference_Arrow_Prefix_CompletionTest.java101
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/MemberReference_Dot_NoPrefix_CompletionTest.java102
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/MemberReference_Dot_Prefix_CompletionTest.java101
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/NamespaceRef_NoPrefix_CompletionTest.java79
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/NamespaceRef_Prefix_CompletionTest.java103
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/NewTypeReference_NoPrefix_CompletionTest.java104
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/NewTypeReference_Prefix_CompletionTest.java102
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/PlainC_CompletionTests.java827
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/ScopedReference_NoPrefix_CompletionTest.java101
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/ScopedReference_NonCodeScope_CompletionTest.java101
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/ScopedReference_Prefix_CompletionTest.java101
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/SingleName_Method_NoPrefix_CompletionTest.java111
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/SingleName_Method_Prefix_CompletionTest.java103
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/SingleName_NoPrefix_CompletionTest.java105
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/SingleName_Prefix2_CompletionTest.java103
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/SingleName_Prefix_CompletionTest.java102
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/TypeDef_NoPrefix_CompletionTest.java101
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/TypeDef_Prefix_CompletionTest.java101
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/TypeRef_NoPrefix_CompletionTest.java103
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/TypeRef_Prefix_CompletionTest.java103
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/VariableType_NestedPrefix_CompletionTest.java101
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/VariableType_NoPrefix_CompletionTest.java102
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/VariableType_Prefix_CompletionTest.java102
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/doctools/doxygen/DoxygenCCommentAutoEditStrategyTest.java147
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/doctools/doxygen/DoxygenCCommentSingleAutoEditStrategyTest.java48
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selection/CPPSelectionIndexerTests.java1417
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selection/CPPSelectionNoIndexerTests.java1450
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selection/CPPSelectionTestsIndexer.java1417
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selection/CPPSelectionTestsNoIndexer.java1450
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selection/CSelectionIndexerTests.java565
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selection/CSelectionNoIndexerTests.java648
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selection/CSelectionTestsIndexer.java565
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selection/CSelectionTestsNoIndexer.java648
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selection/SelectionTestSuite.java4
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/typehierarchy/TypeHierarchyBaseTest.java2
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/wizards/settingswizards/SettingsImportExportTest.java5
-rw-r--r--core/org.eclipse.cdt.ui/.classpath4
-rw-r--r--core/org.eclipse.cdt.ui/.settings/.api_filters16
-rw-r--r--core/org.eclipse.cdt.ui/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--core/org.eclipse.cdt.ui/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--core/org.eclipse.cdt.ui/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--core/org.eclipse.cdt.ui/META-INF/MANIFEST.MF50
-rw-r--r--core/org.eclipse.cdt.ui/about.html14
-rw-r--r--core/org.eclipse.cdt.ui/css/e4-dark_cdt.css27
-rw-r--r--core/org.eclipse.cdt.ui/icons/dlcl16/outline_mark.pngbin0 -> 142 bytes
-rw-r--r--core/org.eclipse.cdt.ui/icons/dlcl16/outline_mark@2x.pngbin0 -> 168 bytes
-rw-r--r--core/org.eclipse.cdt.ui/icons/elcl16/bring_console_to_top_on_build.pngbin0 -> 347 bytes
-rw-r--r--core/org.eclipse.cdt.ui/icons/elcl16/bring_console_to_top_on_build@2x.pngbin0 -> 735 bytes
-rw-r--r--core/org.eclipse.cdt.ui/icons/elcl16/outline_mark.pngbin0 -> 142 bytes
-rw-r--r--core/org.eclipse.cdt.ui/icons/elcl16/outline_mark@2x.pngbin0 -> 168 bytes
-rw-r--r--core/org.eclipse.cdt.ui/icons/obj16/asm_resource_obj.gifbin533 -> 531 bytes
-rw-r--r--core/org.eclipse.cdt.ui/icons/obj16/ch_resource_obj.gifbin956 -> 362 bytes
-rw-r--r--core/org.eclipse.cdt.ui/icons/obj16/hfolder_quote_obj.gifbin969 -> 577 bytes
-rw-r--r--core/org.eclipse.cdt.ui/icons/obj16/outline_mark.pngbin0 -> 142 bytes
-rw-r--r--core/org.eclipse.cdt.ui/icons/obj16/outline_mark@2x.pngbin0 -> 168 bytes
-rw-r--r--core/org.eclipse.cdt.ui/icons/obj16/structfo_obj.gifbin959 -> 257 bytes
-rw-r--r--core/org.eclipse.cdt.ui/icons/obj16/typedeffo_obj.gifbin947 -> 246 bytes
-rw-r--r--core/org.eclipse.cdt.ui/icons/obj16/unionfo_obj.gifbin957 -> 256 bytes
-rw-r--r--core/org.eclipse.cdt.ui/plugin.properties11
-rw-r--r--core/org.eclipse.cdt.ui/plugin.xml370
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/corext/codemanipulation/CdtTemplate.java72
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/corext/codemanipulation/IncludeInfo.java5
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/corext/codemanipulation/StubUtility.java56
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/corext/fix/LinkedProposalModel.java2
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/corext/refactoring/code/flow/FlowAnalyzer.java9
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/corext/template/c/FileTemplateContextType.java8
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/corext/util/Messages.java5
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/BaseCElementContentProvider.java80
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CPluginImages.java1
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/actions/ActionMessages.java3
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/actions/ActionMessages.properties4
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/actions/CreateParserLogAction.java2
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/actions/FoldingMessages.java6
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/actions/ManageConfigsHandler.java44
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/actions/WorkingSetConfigHandler.java53
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/BringToTopOnBuild.java48
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/BuildConsoleManager.java54
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/BuildConsolePage.java14
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/BuildConsolePartitionerEditData.java2
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/ConsoleMessages.java1
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/ConsoleMessages.properties7
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/CopyBuildLogAction.java3
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/GlobalBuildConsoleManager.java4
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/IBuildConsoleStreamDecorator.java2
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/callhierarchy/CHHistoryListAction.java2
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/callhierarchy/CHReferenceInfo.java2
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/cview/CViewAction.java4
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/cview/DividerLine.java48
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/DocCommentOwnerArea.java141
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/Messages.java8
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/Messages.properties8
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/TextFieldNavigationHandler.java6
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/AbstractPathOptionBlock.java28
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPElementLabelProvider.java3
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathIncludeSymbolEntryPage.java6
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathIncludeSymbolEntryPerFilePage.java6
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/ProjectContainerDescriptor.java4
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dnd/FileTransferDragAdapter.java34
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/AbstractCModelOutlinePage.java46
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/AddIncludeAction.java4
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CContentOutlinerProvider.java16
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CEditor.java6
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/ConstructedCEditorMessages.java6
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/OrganizeIncludesAction.java3
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/SortLinesAction.java6
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/filters/CustomFiltersDialog.java22
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/filters/FilterDescriptor.java6
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/includebrowser/IBConversions.java27
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/includebrowser/IBDropTargetListener.java14
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/includebrowser/IBHistoryListAction.java2
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/language/settings/providers/LanguageSettingsEntriesTab.java4
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/navigator/CNavigatorRenameResourceAction.java2
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/AppearancePreferencePage.java9
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/BooleanFieldEditor2.java2
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/BuildConsolePreferencePage.java2
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CEditorColoringConfigurationBlock.java20
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CEditorPreferencePage.java28
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CTemplatePreferencePage.java35
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CodeAssistAdvancedConfigurationBlock.java72
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/HeaderSubstitutionMapEditDialog.java8
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/IndexerStrategyBlock.java7
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/NameStyleBlock.java55
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/PreferencesMessages.java1
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/PreferencesMessages.properties1
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/TabConfigurationBlock.java9
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/formatter/LineWrappingTabPage.java2
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/formatter/ModifyDialog.java17
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/ChangeExceptionHandler.java11
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/NodeContainer.java6
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/RefactoringExecutionHelper.java133
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/changes/AbstractCElementRenameChange.java24
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/changes/CreateFileChange.java7
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/dialogs/ValidatingLabeledTextField.java21
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/gettersandsetters/AccessorDescriptor.java7
-rw-r--r--[-rwxr-xr-x]core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/implementmethod/ImplementMethodRefactoring.java64
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/implementmethod/InsertLocation.java2
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/implementmethod/MethodDefinitionInsertLocationFinder.java60
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/includes/IncludeCreator.java6
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/includes/IncludeOrganizer.java6
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/includes/SymbolExportMap.java10
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/rename/CRefactoringMatchStore.java2
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/rename/CRenameProcessorDelegate.java13
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/rename/CResourceRenameRefactoringInputPage.java101
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/rename/CResourceRenameRefactoringWizard.java6
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/rename/TextSearchWrapper.java14
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/togglefunction/ToggleFileCreator.java3
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/utils/NamespaceHelper.java22
-rw-r--r--[-rwxr-xr-x]core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/utils/NodeHelper.java0
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/CSearchListContentProvider.java6
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/CSearchUtil.java8
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/actions/SelectionParseAction.java7
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/CBreakIterator.java7
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/CHeuristicScanner.java21
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/CIndenter.java19
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/COutlineInformationControl.java4
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/CWordIterator.java7
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/FastCPartitionScanner.java12
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/NumberRule.java38
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/c/hover/AbstractAnnotationHover.java15
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/c/hover/AnnotationExpansionControl.java8
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/c/hover/CEditorTextHoverDescriptor.java6
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/c/hover/CHoverMessages.java1
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/c/hover/CHoverMessages.properties1
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/CContentAssistInvocationContext.java24
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/CompletionProposalComputerPreferenceParser.java78
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/CompletionProposalComputerRegistry.java49
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/ContentAssistProcessor.java2
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/CSelectAnnotationRulerAction.java2
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/proposals/ChangeCorrectionProposal.java7
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/doctools/DocCommentOwnerManager.java11
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/doctools/ProjectMap.java3
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/folding/DefaultCFoldingStructureProvider.java2
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/spelling/SpellCheckIterator.java6
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/template/TemplateVariableProcessor.java2
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/typehierarchy/THHistoryListAction.java2
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/typehierarchy/THInformationControl.java6
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/typehierarchy/THViewPart.java6
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/util/EditorUtility.java25
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/util/Messages.java7
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/util/NameComposer.java6
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/CElementImageProvider.java28
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/CElementLabelComposer.java52
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/CElementLabels.java12
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/DecoratingCOutlineLabelProvider.java77
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/SelectionListenerWithASTManager.java3
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/AbstractOpenWizardAction.java3
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/classwizard/NewClassCodeGenerator.java20
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/classwizard/NewClassWizardMessages.java1
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/classwizard/NewClassWizardMessages.properties2
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/filewizard/NewSourceFileGenerator.java26
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/filewizard/WizardNewFileFromTemplateCreationPage.java172
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/indexwizards/TeamProjectIndexExportWizardPage.java6
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/settingswizards/IncludePathsSettingsProcessor.java1
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/settingswizards/MacroSettingsProcessor.java3
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/settingswizards/ProjectSettingsExportStrategy.java35
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/settingswizards/SettingsProcessor.java26
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/workingsets/AbstractWorkingSetConfigsContribution.java8
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/workingsets/AbstractWorkingSetsContribution.java4
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/workingsets/ChangeBuildConfigContribution.java298
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/workingsets/HasManagedCdtProjectSelection.java50
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/workingsets/NonEmptyWorkingSetPropertyTester.java50
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/workingsets/WorkingSetConfigurationManager.java3
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/workingsets/WorkingSetProxy.java15
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/CDTSharedImages.java5
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/CElementContentProvider.java2
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/CUIPlugin.java17
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/PreferenceConstants.java26
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/actions/ChangeBuildConfigMenuAction.java3
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/actions/FormatAllAction.java100
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/actions/ManageConfigsAction.java3
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/actions/WorkingSetConfigAction.java6
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/build/ToolChainPreferencePage.java24
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/BinaryParserBlock.java25
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/DialogsMessages.java13
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/DialogsMessages.properties7
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/DocCommentOwnerBlock.java44
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/DocCommentOwnerCombo.java9
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/DocCommentOwnerComposite.java70
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/IndexerBlock.java6
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/ReferenceBlock.java18
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/RegexErrorParserOptionPage.java6
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/TabFolderOptionBlock.java42
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/AbstractCPropertyTab.java27
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/AbstractPage.java50
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/CLocationTab.java59
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/ErrorParsTab.java6
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/UIMessages.java6
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/CSourceViewerConfiguration.java16
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/doctools/DefaultMultilineCommentAutoEditStrategy.java244
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/doctools/IDocCommentViewerConfiguration.java12
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/doctools/doxygen/DoxygenMultilineAutoEditStrategy.java323
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/doctools/doxygen/DoxygenMultilineConfiguration.java11
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/doctools/doxygen/DoxygenSingleAutoEditStrategy.java17
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/doctools/doxygen/DoxygenSingleConfiguration.java11
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/doctools/generic/GenericTagDoubleClickStrategy.java6
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/CCProjectWizard.java15
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/CDTCommonProjectWizard.java50
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/CProjectWizard.java13
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/NewCProjectWizard.java18
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/NewClassCreationWizardPage.java116
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/conversion/ConvertProjectWizardPage.java43
-rw-r--r--core/org.eclipse.cdt.ui/templateengine/org/eclipse/cdt/ui/templateengine/uitree/UIElementTreeBuilderHelper.java6
-rw-r--r--core/org.eclipse.cdt.ui/templateengine/org/eclipse/cdt/ui/templateengine/uitree/uiwidgets/UISelectWidget.java6
-rw-r--r--core/org.eclipse.cdt.ui/templateengine/org/eclipse/cdt/ui/templateengine/uitree/uiwidgets/UIStringListWidget.java6
-rw-r--r--core/org.eclipse.cdt.ui/utils.ui/org/eclipse/cdt/utils/ui/controls/ControlFactory.java2
-rw-r--r--core/pom.xml12
-rw-r--r--cross/org.eclipse.cdt.build.crossgcc-feature/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--cross/org.eclipse.cdt.build.crossgcc-feature/feature.xml12
-rw-r--r--cross/org.eclipse.cdt.build.crossgcc-feature/pom.xml12
-rw-r--r--cross/org.eclipse.cdt.build.crossgcc/.classpath2
-rw-r--r--[-rwxr-xr-x]cross/org.eclipse.cdt.build.crossgcc/.project0
-rw-r--r--cross/org.eclipse.cdt.build.crossgcc/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--cross/org.eclipse.cdt.build.crossgcc/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--cross/org.eclipse.cdt.build.crossgcc/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--cross/org.eclipse.cdt.build.crossgcc/META-INF/MANIFEST.MF8
-rw-r--r--cross/org.eclipse.cdt.build.crossgcc/about.html14
-rw-r--r--cross/org.eclipse.cdt.build.crossgcc/about.mappings6
-rw-r--r--cross/org.eclipse.cdt.build.crossgcc/about.properties25
-rw-r--r--[-rwxr-xr-x]cross/org.eclipse.cdt.build.crossgcc/build.properties0
-rwxr-xr-xcross/org.eclipse.cdt.build.crossgcc/src/org/eclipse/cdt/internal/build/crossgcc/Activator.java80
-rw-r--r--[-rwxr-xr-x]cross/org.eclipse.cdt.build.crossgcc/src/org/eclipse/cdt/internal/build/crossgcc/CrossCommandLineGenerator.java11
-rw-r--r--cross/org.eclipse.cdt.build.crossgcc/src/org/eclipse/cdt/internal/build/crossgcc/CrossEnvironmentVariableSupplier.java4
-rw-r--r--cross/org.eclipse.cdt.build.crossgcc/src/org/eclipse/cdt/internal/build/crossgcc/SetCrossCommandWizardPage.java4
-rw-r--r--cross/org.eclipse.cdt.launch.remote-feature/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--cross/org.eclipse.cdt.launch.remote-feature/feature.xml12
-rw-r--r--cross/org.eclipse.cdt.launch.remote-feature/pom.xml12
-rw-r--r--cross/org.eclipse.cdt.launch.remote/.classpath2
-rw-r--r--cross/org.eclipse.cdt.launch.remote/.settings/org.eclipse.core.resources.prefs1
-rw-r--r--cross/org.eclipse.cdt.launch.remote/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--cross/org.eclipse.cdt.launch.remote/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--cross/org.eclipse.cdt.launch.remote/META-INF/MANIFEST.MF4
-rw-r--r--cross/org.eclipse.cdt.launch.remote/about.html14
-rw-r--r--cross/org.eclipse.cdt.launch.remote/about.ini7
-rw-r--r--cross/org.eclipse.cdt.launch.remote/about.mappings5
-rw-r--r--cross/org.eclipse.cdt.launch.remote/about.properties20
-rw-r--r--cross/org.eclipse.cdt.launch.remote/src/org/eclipse/cdt/launch/remote/tabs/RemoteDSFGDBDebuggerPage.java13
-rw-r--r--cross/org.eclipse.cdt.launch.serial-feature/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--cross/org.eclipse.cdt.launch.serial-feature/feature.xml13
-rw-r--r--cross/org.eclipse.cdt.launch.serial.core/.classpath2
-rw-r--r--cross/org.eclipse.cdt.launch.serial.core/.project6
-rw-r--r--cross/org.eclipse.cdt.launch.serial.core/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--cross/org.eclipse.cdt.launch.serial.core/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--cross/org.eclipse.cdt.launch.serial.core/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--cross/org.eclipse.cdt.launch.serial.core/META-INF/MANIFEST.MF9
-rw-r--r--cross/org.eclipse.cdt.launch.serial.core/about.html14
-rw-r--r--cross/org.eclipse.cdt.launch.serial.core/build.properties1
-rw-r--r--cross/org.eclipse.cdt.launch.serial.core/plugin.properties14
-rw-r--r--cross/org.eclipse.cdt.launch.serial.ui/.classpath2
-rw-r--r--cross/org.eclipse.cdt.launch.serial.ui/.project6
-rw-r--r--cross/org.eclipse.cdt.launch.serial.ui/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--cross/org.eclipse.cdt.launch.serial.ui/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--cross/org.eclipse.cdt.launch.serial.ui/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--cross/org.eclipse.cdt.launch.serial.ui/META-INF/MANIFEST.MF9
-rw-r--r--cross/org.eclipse.cdt.launch.serial.ui/about.html14
-rw-r--r--cross/org.eclipse.cdt.launch.serial.ui/about.ini24
-rw-r--r--cross/org.eclipse.cdt.launch.serial.ui/about.mappings9
-rw-r--r--cross/org.eclipse.cdt.launch.serial.ui/about.properties32
-rw-r--r--cross/org.eclipse.cdt.launch.serial.ui/build.properties7
-rw-r--r--cross/org.eclipse.cdt.launch.serial.ui/cdt_logo_icon32.pngbin0 -> 1885 bytes
-rw-r--r--cross/org.eclipse.cdt.launch.serial.ui/plugin.properties14
-rw-r--r--cross/pom.xml12
-rw-r--r--debug/org.eclipse.cdt.debug.application.doc/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--debug/org.eclipse.cdt.debug.application.doc/.settings/org.eclipse.jdt.core.prefs464
-rw-r--r--debug/org.eclipse.cdt.debug.application.doc/.settings/org.eclipse.jdt.ui.prefs133
-rw-r--r--debug/org.eclipse.cdt.debug.application.doc/META-INF/MANIFEST.MF2
-rw-r--r--debug/org.eclipse.cdt.debug.application.doc/about.html14
-rw-r--r--debug/org.eclipse.cdt.debug.application.doc/concepts/cdt_c_before_you_begin.htm6
-rw-r--r--debug/org.eclipse.cdt.debug.application.doc/concepts/cdt_c_build_over.htm2
-rw-r--r--debug/org.eclipse.cdt.debug.application.doc/concepts/cdt_c_over_cdt.htm10
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/concepts/cdt_c_templates.htm0
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/concepts/cdt_c_whatsnew.htm2
-rw-r--r--debug/org.eclipse.cdt.debug.application.doc/concepts/cdt_c_whatsnew_60.htm12
-rw-r--r--debug/org.eclipse.cdt.debug.application.doc/concepts/cdt_c_whatsnew_70.htm14
-rw-r--r--debug/org.eclipse.cdt.debug.application.doc/concepts/cdt_c_whatsnew_80.htm50
-rw-r--r--debug/org.eclipse.cdt.debug.application.doc/concepts/cdt_c_whatsnew_81.htm54
-rw-r--r--debug/org.eclipse.cdt.debug.application.doc/concepts/cdt_c_whatsnew_82.htm58
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/concepts/cdt_c_whatsnew_83.htm28
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/images/btn_columns.pngbin597 -> 597 bytes
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/images/btn_import_executables.pngbin606 -> 606 bytes
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/images/btn_restart.pngbin590 -> 590 bytes
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/images/c_exe_obj.pngbin736 -> 736 bytes
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/images/c_object_file.pngbin699 -> 699 bytes
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/images/cdt_dlg_define_build_var.pngbin11990 -> 11990 bytes
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/images/cdt_dlg_edit_build_var.pngbin12333 -> 12333 bytes
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/images/cdt_inline_rename.pngbin10406 -> 10406 bytes
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/images/cdt_menu_toggle_comments.pngbin4307 -> 4307 bytes
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/images/cdt_pref_build_vars.pngbin67229 -> 67229 bytes
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/images/cdt_pref_new_task_tag_dlg.pngbin9234 -> 9234 bytes
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/images/cdt_pref_task_tags.pngbin43487 -> 43487 bytes
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/images/cdt_rename_dialog.pngbin27868 -> 27868 bytes
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/images/cdt_t_toggle_selection.pngbin35657 -> 35657 bytes
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/images/cdt_t_toggle_selection2.pngbin12526 -> 12526 bytes
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/images/cdt_t_toggle_selection3.pngbin5316 -> 5316 bytes
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/images/command_link.pngbin455 -> 455 bytes
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/images/editor_general_preferences.pngbin70775 -> 70775 bytes
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/images/editor_mark_preferences.pngbin33550 -> 33550 bytes
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/images/editor_save_actions_preferences.pngbin33131 -> 33131 bytes
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/images/hierarchy_co.gifbin199 -> 199 bytes
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/images/history_list.gifbin586 -> 586 bytes
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/images/icon_build_make_target.pngbin826 -> 826 bytes
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/images/icon_clear_console.pngbin803 -> 803 bytes
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/images/icon_edit_make_target.pngbin883 -> 883 bytes
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/images/icon_expand_all.pngbin504 -> 504 bytes
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/images/icon_hide_inactive_includes.pngbin453 -> 453 bytes
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/images/icon_hide_make_targets.pngbin722 -> 722 bytes
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/images/icon_hide_sys_includes.pngbin426 -> 426 bytes
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/images/icon_new_make_target.pngbin885 -> 885 bytes
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/images/icon_next_error.pngbin602 -> 602 bytes
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/images/icon_open_console.pngbin782 -> 782 bytes
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/images/icon_pin.pngbin710 -> 710 bytes
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/images/icon_prev_error.pngbin598 -> 598 bytes
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/images/icon_repeat_search.pngbin871 -> 871 bytes
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/images/icon_save_output_file.pngbin795 -> 795 bytes
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/images/icon_show_error.pngbin599 -> 599 bytes
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/images/namespace_declared_obj.pngbin435 -> 435 bytes
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/images/new_proj_convert_candidate.pngbin35748 -> 35748 bytes
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/images/pref_panel_build.pngbin75511 -> 75511 bytes
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/images/pref_panel_code_templates.pngbin36054 -> 36054 bytes
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/images/pref_panel_edit_template_dlg.pngbin15489 -> 15489 bytes
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/images/pref_traditional_memory_prefs.pngbin45914 -> 45914 bytes
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/images/progress_stop.gifbin215 -> 215 bytes
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/images/refresh_nav.gifbin327 -> 327 bytes
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/images/sub_co.gifbin209 -> 209 bytes
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/images/super_co.gifbin208 -> 208 bytes
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/images/view_executables.pngbin24383 -> 24383 bytes
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/images/view_include_browser.pngbin13355 -> 13355 bytes
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/images/view_table_rendering.pngbin7924 -> 7924 bytes
-rw-r--r--debug/org.eclipse.cdt.debug.application.doc/pom.xml17
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/reference/cdt_o_menu.htm0
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/reference/cdt_o_mproj_pref.htm0
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/reference/cdt_o_mproj_pref_macro.htm0
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_c_editor_gen.htm0
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_m_edit.htm0
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_m_file.htm0
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_m_navigate.htm0
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_m_project.htm0
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_m_refactor.htm0
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_m_run.htm0
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_m_search.htm0
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_m_source.htm0
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_m_window.htm0
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_mfile_build.htm0
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_mfile_info.htm0
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_mfile_rcbs.htm0
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_mfile_tool_settings.htm0
-rw-r--r--debug/org.eclipse.cdt.debug.application.doc/tasks/cdt_t_comment_out.htm2
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/tasks/cdt_t_rename.htm0
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.application.doc/tasks/cdt_t_toggle.htm0
-rw-r--r--debug/org.eclipse.cdt.debug.application.product/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--debug/org.eclipse.cdt.debug.application.product/.settings/org.eclipse.jdt.core.prefs464
-rw-r--r--debug/org.eclipse.cdt.debug.application.product/.settings/org.eclipse.jdt.ui.prefs133
-rw-r--r--debug/org.eclipse.cdt.debug.application.product/README4
-rw-r--r--debug/org.eclipse.cdt.debug.application.product/about.html14
-rw-r--r--debug/org.eclipse.cdt.debug.application.product/debug.product75
-rw-r--r--debug/org.eclipse.cdt.debug.application.product/pom.xml16
-rw-r--r--debug/org.eclipse.cdt.debug.application.tests/.classpath8
-rw-r--r--debug/org.eclipse.cdt.debug.application.tests/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--debug/org.eclipse.cdt.debug.application.tests/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--debug/org.eclipse.cdt.debug.application.tests/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--debug/org.eclipse.cdt.debug.application.tests/META-INF/MANIFEST.MF2
-rw-r--r--debug/org.eclipse.cdt.debug.application.tests/StandaloneTests.launch42
-rw-r--r--debug/org.eclipse.cdt.debug.application.tests/about.html14
-rw-r--r--debug/org.eclipse.cdt.debug.application.tests/pom.xml8
-rw-r--r--debug/org.eclipse.cdt.debug.application.tests/src/org/eclipse/cdt/debug/application/tests/Utilities.java2
-rw-r--r--debug/org.eclipse.cdt.debug.application/.classpath4
-rw-r--r--debug/org.eclipse.cdt.debug.application/.project6
-rw-r--r--debug/org.eclipse.cdt.debug.application/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--debug/org.eclipse.cdt.debug.application/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--debug/org.eclipse.cdt.debug.application/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--debug/org.eclipse.cdt.debug.application/META-INF/MANIFEST.MF4
-rw-r--r--debug/org.eclipse.cdt.debug.application/about.html14
-rw-r--r--debug/org.eclipse.cdt.debug.application/about.ini24
-rw-r--r--debug/org.eclipse.cdt.debug.application/about.mappings9
-rw-r--r--debug/org.eclipse.cdt.debug.application/about.properties32
-rw-r--r--debug/org.eclipse.cdt.debug.application/build.properties6
-rw-r--r--debug/org.eclipse.cdt.debug.application/cdt_logo_icon32.pngbin0 -> 1885 bytes
-rw-r--r--debug/org.eclipse.cdt.debug.application/plugin.properties2
-rw-r--r--debug/org.eclipse.cdt.debug.application/pom.xml14
-rwxr-xr-x[-rw-r--r--]debug/org.eclipse.cdt.debug.application/scripts/cdtdebug.sh0
-rwxr-xr-x[-rw-r--r--]debug/org.eclipse.cdt.debug.application/scripts/install.sh0
-rw-r--r--debug/org.eclipse.cdt.debug.application/src/org/eclipse/cdt/debug/application/ApplicationWorkbenchWindowAdvisor.java2
-rw-r--r--debug/org.eclipse.cdt.debug.core/.classpath4
-rw-r--r--debug/org.eclipse.cdt.debug.core/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--debug/org.eclipse.cdt.debug.core/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--debug/org.eclipse.cdt.debug.core/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--debug/org.eclipse.cdt.debug.core/META-INF/MANIFEST.MF7
-rw-r--r--debug/org.eclipse.cdt.debug.core/about.html14
-rw-r--r--debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/CDebugUtils.java16
-rw-r--r--debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/DebugCoreMessages.java3
-rw-r--r--debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/DebugCoreMessages.properties1
-rw-r--r--debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/ICDTLaunchConfigurationConstants.java38
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/command/CCommandAdapterFactory.java0
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/command/CForEachCommand.java0
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/command/RestartCommand.java0
-rw-r--r--debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/executables/ExecutablesManager.java3
-rw-r--r--debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/BreakpointProblems.java4
-rw-r--r--debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CAddressBreakpoint.java3
-rw-r--r--debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CAddressDynamicPrintf.java3
-rw-r--r--debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CAddressTracepoint.java3
-rw-r--r--debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CBreakpoint.java3
-rw-r--r--debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CFunctionBreakpoint.java3
-rw-r--r--debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CFunctionDynamicPrintf.java3
-rw-r--r--debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CFunctionTracepoint.java3
-rw-r--r--debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CLineBreakpoint.java3
-rw-r--r--debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CLineDynamicPrintf.java3
-rw-r--r--debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CLineTracepoint.java3
-rw-r--r--debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CWatchpoint.java3
-rw-r--r--debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/CSourceLocator.java3
-rw-r--r--debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/CSourceLookupParticipant.java17
-rw-r--r--debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/MapEntrySourceContainer.java3
-rw-r--r--debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/SourceUtils.java3
-rw-r--r--debug/org.eclipse.cdt.debug.dap-feature/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--debug/org.eclipse.cdt.debug.dap-feature/build.properties2
-rw-r--r--debug/org.eclipse.cdt.debug.dap-feature/feature.properties4
-rw-r--r--debug/org.eclipse.cdt.debug.dap-feature/feature.xml12
-rw-r--r--debug/org.eclipse.cdt.debug.dap/.classpath2
-rw-r--r--debug/org.eclipse.cdt.debug.dap/.project6
-rw-r--r--debug/org.eclipse.cdt.debug.dap/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--debug/org.eclipse.cdt.debug.dap/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--debug/org.eclipse.cdt.debug.dap/BuildDebugServers.xml8
-rw-r--r--debug/org.eclipse.cdt.debug.dap/META-INF/MANIFEST.MF26
-rw-r--r--debug/org.eclipse.cdt.debug.dap/about.html38
-rw-r--r--debug/org.eclipse.cdt.debug.dap/about.ini24
-rw-r--r--debug/org.eclipse.cdt.debug.dap/about.mappings9
-rw-r--r--debug/org.eclipse.cdt.debug.dap/about.properties32
-rw-r--r--debug/org.eclipse.cdt.debug.dap/build.properties8
-rw-r--r--debug/org.eclipse.cdt.debug.dap/cdt_logo_icon32.pngbin0 -> 1885 bytes
-rw-r--r--debug/org.eclipse.cdt.debug.dap/debug-servers/package.json2
-rw-r--r--debug/org.eclipse.cdt.debug.dap/debug-servers/yarn.lock7
-rw-r--r--debug/org.eclipse.cdt.debug.dap/pom.xml34
-rw-r--r--debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/Activator.java2
-rw-r--r--debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/CDTDebugElement.java2
-rw-r--r--debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/CDTDebugProtocol.java2
-rw-r--r--debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/DAPPreferencePage.java2
-rw-r--r--debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/DapDebugTarget.java2
-rw-r--r--debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/DapDisassemblyBackend.java11
-rw-r--r--debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/DapLaunchDelegate.java2
-rw-r--r--debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/ICDTDebugProtocolClient.java2
-rw-r--r--debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/ICDTDebugProtocolServer.java2
-rw-r--r--debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/InitializeLaunchConfigurations.java24
-rw-r--r--debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/MemoryBlock.java4
-rw-r--r--debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/Messages.java2
-rw-r--r--debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/Messages.properties2
-rw-r--r--debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/PreferenceConstants.java2
-rw-r--r--debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/PreferenceInitializer.java2
-rw-r--r--debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/tabs/CArgumentsTab.java2
-rw-r--r--debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/tabs/CMainTab.java2
-rw-r--r--debug/org.eclipse.cdt.debug.standalone-feature/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--debug/org.eclipse.cdt.debug.standalone-feature/feature.xml13
-rw-r--r--debug/org.eclipse.cdt.debug.ui/.classpath4
-rw-r--r--debug/org.eclipse.cdt.debug.ui/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--debug/org.eclipse.cdt.debug.ui/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--debug/org.eclipse.cdt.debug.ui/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--debug/org.eclipse.cdt.debug.ui/META-INF/MANIFEST.MF9
-rw-r--r--debug/org.eclipse.cdt.debug.ui/about.html14
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.ui/icons/obj16/arraypartition_obj.gifbin370 -> 370 bytes
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.ui/icons/obj16/connect.gifbin189 -> 189 bytes
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.ui/icons/obj16/new_exec.gifbin949 -> 949 bytes
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.ui/icons/obj16/reverse_stepinto.gifbin197 -> 197 bytes
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.ui/icons/obj16/reverse_stepover.gifbin211 -> 211 bytes
-rw-r--r--[-rwxr-xr-x]debug/org.eclipse.cdt.debug.ui/icons/obj16/uncall.gifbin208 -> 208 bytes
-rw-r--r--debug/org.eclipse.cdt.debug.ui/plugin.xml1
-rw-r--r--debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDebugModelPresentation.java3
-rw-r--r--debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDebugUIUtils.java7
-rw-r--r--debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/RegisterGroupDialog.java3
-rw-r--r--debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/breakpoints/CBreakpointContext.java21
-rw-r--r--debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/breakpoints/CBreakpointPropertyPage.java14
-rw-r--r--debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/dialogfields/ListDialogField.java67
-rw-r--r--debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/disassembly/commands/SetSteppingModeHandler.java6
-rw-r--r--debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/disassembly/dsf/DisassemblyPosition.java11
-rw-r--r--debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/disassembly/dsf/IDisassemblyBackend.java6
-rw-r--r--debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/disassembly/dsf/IDisassemblyDocument.java19
-rw-r--r--debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/disassembly/dsf/IDisassemblyPartCallback.java5
-rw-r--r--debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/disassembly/editor/DisassemblyEditorManager.java7
-rw-r--r--debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/launch/LaunchMessages.java3
-rw-r--r--debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/preferences/CDebugPreferencePage.java3
-rw-r--r--debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/propertypages/SignalPropertyPage.java4
-rw-r--r--debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/executables/ExecutablesContentProvider.java3
-rw-r--r--debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/executables/SourceFilesLabelProvider.java3
-rw-r--r--debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/memory/AddMemoryBlocks.java5
-rw-r--r--debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/CDebugUIPlugin.java25
-rw-r--r--debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/ExternalToolAction.java3
-rw-r--r--debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/LogAction.java3
-rw-r--r--debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/ResumeAction.java3
-rw-r--r--debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/SoundAction.java3
-rw-r--r--debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpoints/AddWatchpointOnVariableActionDelegate.java4
-rw-r--r--debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpoints/CEventBreakpointsLabelProviderFactory.java3
-rw-r--r--debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/disassembly/rulers/RulerColumnRegistry.java5
-rw-r--r--debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/importexecutable/ImportExecutablePageOne.java3
-rw-r--r--debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/importexecutable/ImportExecutablePageTwo.java4
-rw-r--r--debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/sourcelookup/OldDefaultSourceLocator.java3
-rw-r--r--debug/org.eclipse.cdt.gdb-feature/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--debug/org.eclipse.cdt.gdb-feature/feature.xml12
-rw-r--r--debug/org.eclipse.cdt.gdb-feature/pom.xml12
-rw-r--r--debug/org.eclipse.cdt.gdb.ui/.classpath2
-rw-r--r--debug/org.eclipse.cdt.gdb.ui/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--debug/org.eclipse.cdt.gdb.ui/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--debug/org.eclipse.cdt.gdb.ui/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--debug/org.eclipse.cdt.gdb.ui/META-INF/MANIFEST.MF4
-rw-r--r--debug/org.eclipse.cdt.gdb.ui/about.html14
-rw-r--r--debug/org.eclipse.cdt.gdb/.classpath2
-rw-r--r--debug/org.eclipse.cdt.gdb/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--debug/org.eclipse.cdt.gdb/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--debug/org.eclipse.cdt.gdb/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--debug/org.eclipse.cdt.gdb/META-INF/MANIFEST.MF4
-rw-r--r--debug/org.eclipse.cdt.gdb/about.html14
-rw-r--r--debug/org.eclipse.cdt.gdb/about.mappings6
-rw-r--r--debug/org.eclipse.cdt.gdb/about.properties24
-rw-r--r--debug/org.eclipse.cdt.gnu.debug-feature/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--debug/org.eclipse.cdt.gnu.debug-feature/feature.xml13
-rw-r--r--debug/pom.xml12
-rw-r--r--doc/org.eclipse.cdt.doc.isv/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--doc/org.eclipse.cdt.doc.isv/.settings/org.eclipse.jdt.core.prefs464
-rw-r--r--doc/org.eclipse.cdt.doc.isv/.settings/org.eclipse.jdt.ui.prefs133
-rw-r--r--doc/org.eclipse.cdt.doc.isv/META-INF/MANIFEST.MF2
-rw-r--r--doc/org.eclipse.cdt.doc.isv/about.html14
-rw-r--r--doc/org.eclipse.cdt.doc.isv/book.css102
-rw-r--r--doc/org.eclipse.cdt.doc.isv/build.properties1
-rw-r--r--doc/org.eclipse.cdt.doc.isv/buildDoc.xml42
-rw-r--r--doc/org.eclipse.cdt.doc.isv/cdtOptions26
-rw-r--r--doc/org.eclipse.cdt.doc.isv/cdtOptions.txt26
-rw-r--r--doc/org.eclipse.cdt.doc.isv/guide/cdt_build_system/migration_guides/4.0/migration_guide_40.html4
-rw-r--r--doc/org.eclipse.cdt.doc.isv/guide/cdt_build_system/whats_new/4.0/whats_new_CBS_40.html4
-rw-r--r--doc/org.eclipse.cdt.doc.isv/guide/deprecated_API_removals.html608
-rw-r--r--doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/dsf_programming_intro.html8
-rw-r--r--doc/org.eclipse.cdt.doc.isv/guide/mbs/extensibilityGuide/Managed_Build_Extensibility.html6
-rw-r--r--doc/org.eclipse.cdt.doc.isv/guide/projectTemplateEngine/Howtodeveloptemplates.html2
-rw-r--r--doc/org.eclipse.cdt.doc.isv/guide/projectTemplateEngine/Howtoregistertemplates.html2
-rw-r--r--doc/org.eclipse.cdt.doc.isv/pom.xml74
-rw-r--r--doc/org.eclipse.cdt.doc.isv/reference/extension-points/index.html64
-rw-r--r--doc/org.eclipse.cdt.doc.isv/topics_Guide.xml1
-rw-r--r--doc/org.eclipse.cdt.doc.user/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--doc/org.eclipse.cdt.doc.user/.settings/org.eclipse.jdt.core.prefs464
-rw-r--r--doc/org.eclipse.cdt.doc.user/.settings/org.eclipse.jdt.ui.prefs133
-rw-r--r--doc/org.eclipse.cdt.doc.user/META-INF/MANIFEST.MF2
-rw-r--r--doc/org.eclipse.cdt.doc.user/about.html14
-rw-r--r--doc/org.eclipse.cdt.doc.user/concepts/cdt_c_before_you_begin.htm6
-rw-r--r--doc/org.eclipse.cdt.doc.user/concepts/cdt_c_build_over.htm2
-rw-r--r--doc/org.eclipse.cdt.doc.user/concepts/cdt_c_over_cdt.htm10
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/concepts/cdt_c_templates.htm0
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/concepts/cdt_c_whatsnew.htm2
-rw-r--r--doc/org.eclipse.cdt.doc.user/concepts/cdt_c_whatsnew_60.htm12
-rw-r--r--doc/org.eclipse.cdt.doc.user/concepts/cdt_c_whatsnew_70.htm14
-rw-r--r--doc/org.eclipse.cdt.doc.user/concepts/cdt_c_whatsnew_80.htm50
-rw-r--r--doc/org.eclipse.cdt.doc.user/concepts/cdt_c_whatsnew_81.htm54
-rw-r--r--doc/org.eclipse.cdt.doc.user/concepts/cdt_c_whatsnew_82.htm58
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/concepts/cdt_c_whatsnew_83.htm28
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/contexts_CDT.xml0
-rw-r--r--doc/org.eclipse.cdt.doc.user/getting_started/cdt_o_tutorial.htm1
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/getting_started/cdt_w_prepare_workbench.htm0
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/help.css0
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/images/btn_columns.pngbin597 -> 597 bytes
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/images/btn_import_executables.pngbin606 -> 606 bytes
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/images/btn_restart.pngbin590 -> 590 bytes
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/images/c_exe_obj.pngbin736 -> 736 bytes
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/images/c_object_file.pngbin699 -> 699 bytes
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/images/cdt_dlg_define_build_var.pngbin11990 -> 11990 bytes
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/images/cdt_dlg_edit_build_var.pngbin12333 -> 12333 bytes
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/images/cdt_inline_rename.pngbin10406 -> 10406 bytes
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/images/cdt_menu_toggle_comments.pngbin4307 -> 4307 bytes
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/images/cdt_pref_build_vars.pngbin67229 -> 67229 bytes
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/images/cdt_pref_new_task_tag_dlg.pngbin9234 -> 9234 bytes
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/images/cdt_pref_task_tags.pngbin43487 -> 43487 bytes
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/images/cdt_rename_dialog.pngbin27868 -> 27868 bytes
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/images/cdt_t_toggle_selection.pngbin35657 -> 35657 bytes
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/images/cdt_t_toggle_selection2.pngbin12526 -> 12526 bytes
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/images/cdt_t_toggle_selection3.pngbin5316 -> 5316 bytes
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/images/cdt_w_basic06a.pngbin31922 -> 31922 bytes
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/images/cdt_w_debug_configurations_01.pngbin73974 -> 73974 bytes
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/images/cdt_w_debug_configurations_02.pngbin83415 -> 83415 bytes
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/images/command_link.pngbin455 -> 455 bytes
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/images/editor_general_preferences.pngbin70775 -> 70775 bytes
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/images/editor_mark_preferences.pngbin33550 -> 33550 bytes
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/images/editor_save_actions_preferences.pngbin33131 -> 33131 bytes
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/images/hierarchy_co.gifbin199 -> 199 bytes
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/images/history_list.gifbin586 -> 586 bytes
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/images/icon_build_make_target.pngbin826 -> 826 bytes
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/images/icon_clear_console.pngbin803 -> 803 bytes
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/images/icon_edit_make_target.pngbin883 -> 883 bytes
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/images/icon_expand_all.pngbin504 -> 504 bytes
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/images/icon_hide_inactive_includes.pngbin453 -> 453 bytes
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/images/icon_hide_make_targets.pngbin722 -> 722 bytes
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/images/icon_hide_sys_includes.pngbin426 -> 426 bytes
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/images/icon_new_make_target.pngbin885 -> 885 bytes
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/images/icon_next_error.pngbin602 -> 602 bytes
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/images/icon_open_console.pngbin782 -> 782 bytes
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/images/icon_pin.pngbin710 -> 710 bytes
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/images/icon_prev_error.pngbin598 -> 598 bytes
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/images/icon_repeat_search.pngbin871 -> 871 bytes
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/images/icon_save_output_file.pngbin795 -> 795 bytes
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/images/icon_show_error.pngbin599 -> 599 bytes
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/images/namespace_declared_obj.pngbin435 -> 435 bytes
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/images/new_proj_convert_candidate.pngbin35748 -> 35748 bytes
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/images/pref_panel_build.pngbin75511 -> 75511 bytes
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/images/pref_panel_code_templates.pngbin36054 -> 36054 bytes
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/images/pref_panel_edit_template_dlg.pngbin15489 -> 15489 bytes
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/images/pref_traditional_memory_prefs.pngbin45914 -> 45914 bytes
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/images/progress_stop.gifbin215 -> 215 bytes
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/images/refresh_nav.gifbin327 -> 327 bytes
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/images/sub_co.gifbin209 -> 209 bytes
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/images/super_co.gifbin208 -> 208 bytes
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/images/view_executables.pngbin24383 -> 24383 bytes
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/images/view_include_browser.pngbin13355 -> 13355 bytes
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/images/view_table_rendering.pngbin7924 -> 7924 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/pom.xml17
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/reference/cdt_o_menu.htm0
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/reference/cdt_o_mproj_pref.htm0
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/reference/cdt_o_mproj_pref_macro.htm0
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/reference/cdt_u_c_editor_gen.htm0
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/reference/cdt_u_m_edit.htm0
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/reference/cdt_u_m_file.htm0
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/reference/cdt_u_m_navigate.htm0
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/reference/cdt_u_m_project.htm0
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/reference/cdt_u_m_refactor.htm0
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/reference/cdt_u_m_run.htm0
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/reference/cdt_u_m_search.htm0
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/reference/cdt_u_m_source.htm0
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/reference/cdt_u_m_window.htm0
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/reference/cdt_u_mfile_build.htm0
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/reference/cdt_u_mfile_info.htm0
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/reference/cdt_u_mfile_rcbs.htm0
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/reference/cdt_u_mfile_tool_settings.htm0
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/README1
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/Mingw5_1.pngbin0 -> 15313 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/Mingw5_2.pngbin0 -> 18573 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/Mingw5_3.pngbin0 -> 16533 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/autobuild.pngbin0 -> 13472 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/build.pngbin0 -> 14048 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/compiler.xml48
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/eclipse.xml361
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/eclipseDir.pngbin0 -> 13277 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/eclipsesu1.pngbin0 -> 8294 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/eclipsesu2.pngbin0 -> 11750 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/eclipsesu3.pngbin0 -> 2890 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/eclipsesu4.pngbin0 -> 12571 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/eclipsesu5.pngbin0 -> 9384 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/eclipsesu6.pngbin0 -> 6018 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/envwin.xml114
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/feedback.xml8
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/gdb.xml20
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/helloout.pngbin0 -> 23458 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/helloworld.pngbin0 -> 24010 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/index.dbk.xml11
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/info.xml39
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/introduction.xml91
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/macosx.xml119
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingw1.pngbin0 -> 4023 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingw41_1.pngbin0 -> 8445 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingw41_1_1.pngbin0 -> 8493 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingw41_1_2.pngbin0 -> 7254 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingw41_2.pngbin0 -> 7560 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingw41_3a.pngbin0 -> 9373 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingw41_3b.pngbin0 -> 9313 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingw41_4.pngbin0 -> 7998 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingw5.xml80
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingwgetinst.xml155
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingwgetinst1.pngbin0 -> 19488 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingwgetinst10.pngbin0 -> 33837 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingwgetinst11.pngbin0 -> 31284 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingwgetinst2.pngbin0 -> 23640 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingwgetinst3.pngbin0 -> 25285 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingwgetinst4.pngbin0 -> 28147 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingwgetinst5.pngbin0 -> 24984 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingwgetinst6.pngbin0 -> 25236 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingwgetinst7.pngbin0 -> 24184 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingwgetinst8.pngbin0 -> 24409 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingwgetinst9.pngbin0 -> 27205 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/msys1011.xml97
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/navigator.pngbin0 -> 10847 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/newcppproject.pngbin0 -> 34039 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/newcppproject2.pngbin0 -> 43942 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/newcppproject3.pngbin0 -> 24988 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/newcppproject4.pngbin0 -> 38269 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/newproject.pngbin0 -> 11164 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/newsource.pngbin0 -> 6324 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/older.xml497
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/other.xml23
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/perspective.pngbin0 -> 6019 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/problems.xml297
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/projectadd.pngbin0 -> 7388 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/projectname.pngbin0 -> 7488 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/projecttype.pngbin0 -> 8000 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/setup1.pngbin0 -> 3862 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/setup2.pngbin0 -> 8491 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/setup3.pngbin0 -> 10663 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/setup4.pngbin0 -> 11391 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/setup5.pngbin0 -> 8936 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/setup6.pngbin0 -> 6573 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/setup7.pngbin0 -> 8112 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/setup8.pngbin0 -> 8154 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/setup9.pngbin0 -> 8315 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/setupa.pngbin0 -> 8476 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/setupb.pngbin0 -> 9484 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/setupc.pngbin0 -> 8619 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/setupd.pngbin0 -> 7335 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/softwareupdateadd35.pngbin0 -> 72585 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/softwareupdatecdt.pngbin0 -> 78270 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/softwareupdatecdt35.pngbin0 -> 153614 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/softwareupdatemain.pngbin0 -> 52911 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/softwareupdatemenu.pngbin0 -> 8981 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/softwareupdatemenu35.pngbin0 -> 22009 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/softwareupdatesites.pngbin0 -> 59965 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/splash.pngbin0 -> 95543 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/splash35.pngbin0 -> 148888 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/splash36.pngbin0 -> 149656 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/splash37.pngbin0 -> 148414 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/systemproperties.pngbin0 -> 8092 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/systempropertiesw71.pngbin0 -> 67311 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/systempropertiesw72.pngbin0 -> 114297 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/systempropertiesw73.pngbin0 -> 39932 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/systempropertiesw74.pngbin0 -> 38254 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/systempropertiesxp.pngbin0 -> 7697 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/updatecallisto.pngbin0 -> 12765 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/welcome.pngbin0 -> 182213 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/workspace.pngbin0 -> 23769 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/xcode1.pngbin0 -> 72349 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/xcode2.pngbin0 -> 6311 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.user/tasks/cdt_t_comment_out.htm2
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/tasks/cdt_t_rename.htm0
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/tasks/cdt_t_toggle.htm0
-rw-r--r--[-rwxr-xr-x]doc/org.eclipse.cdt.doc.user/topics_Reference.xml0
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui.tests/.classpath8
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui.tests/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui.tests/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui.tests/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui.tests/META-INF/MANIFEST.MF8
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui.tests/about.html14
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui.tests/build.properties1
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui.tests/fragment.properties14
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/.classpath2
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/META-INF/MANIFEST.MF5
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/about.html14
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/about.ini24
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/about.mappings9
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/about.properties32
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/build.properties6
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/cdt_logo_icon32.pngbin0 -> 1885 bytes
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/MulticoreVisualizerUIPlugin.java5
-rw-r--r--[-rwxr-xr-x]dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/model/VisualizerCPU.java0
-rw-r--r--[-rwxr-xr-x]dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/model/VisualizerCore.java0
-rw-r--r--[-rwxr-xr-x]dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/model/VisualizerModel.java0
-rw-r--r--[-rwxr-xr-x]dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/model/VisualizerThread.java0
-rw-r--r--[-rwxr-xr-x]dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/view/MulticoreVisualizer.java0
-rw-r--r--[-rwxr-xr-x]dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/view/MulticoreVisualizerCPU.java0
-rw-r--r--[-rwxr-xr-x]dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/view/MulticoreVisualizerCanvas.java0
-rw-r--r--[-rwxr-xr-x]dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/view/MulticoreVisualizerCore.java0
-rw-r--r--[-rwxr-xr-x]dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/view/MulticoreVisualizerGraphicObject.java0
-rw-r--r--[-rwxr-xr-x]dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/view/MulticoreVisualizerThread.java0
-rw-r--r--[-rwxr-xr-x]dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/utils/DSFSessionState.java0
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/utils/DebugViewUtils.java2
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/.classpath8
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/META-INF/MANIFEST.MF7
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/about.html14
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/build.properties1
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/fragment.properties14
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/src/org/eclipse/cdt/dsf/gdb/service/GDBRegisterTest.java70
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/src/org/eclipse/cdt/dsf/gdb/service/GDBRegisterTest_NoContainerTest.java35
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/src/org/eclipse/cdt/dsf/gdb/service/GDBRegisterTest_WithAlternativeProcessIdTest.java22
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/src/org/eclipse/cdt/dsf/gdb/service/GDBRegisterTest_WithContainerDMContextTest.java20
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/src/org/eclipse/cdt/dsf/gdb/tests/AutomatedIntegrationSuite.java6
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/src/org/eclipse/cdt/dsf/gdb/tests/FilePartsTest.java2
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/.classpath4
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/META-INF/MANIFEST.MF9
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/about.html14
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/about.ini24
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/about.mappings9
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/about.properties32
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/build.properties6
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/cdt_logo_icon32.pngbin0 -> 1885 bytes
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/dlcl16/flatLayout.pngbin0 -> 131 bytes
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/dlcl16/flatLayout@2x.pngbin0 -> 180 bytes
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/dlcl16/hierarchicalLayout.pngbin0 -> 154 bytes
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/dlcl16/hierarchicalLayout@2x.pngbin0 -> 207 bytes
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/elcl16/collapse_all.gifbin0 -> 161 bytes
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/elcl16/existingFiles.gifbin0 -> 354 bytes
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/elcl16/expand_all.gifbin0 -> 167 bytes
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/elcl16/flatLayout.pngbin0 -> 123 bytes
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/elcl16/flatLayout@2x.pngbin0 -> 199 bytes
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/elcl16/hierarchicalLayout.pngbin0 -> 148 bytes
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/elcl16/hierarchicalLayout@2x.pngbin0 -> 230 bytes
-rw-r--r--[-rwxr-xr-x]dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/obj16/connect.gifbin189 -> 189 bytes
-rw-r--r--[-rwxr-xr-x]dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/obj16/reversestepinto.gifbin197 -> 197 bytes
-rw-r--r--[-rwxr-xr-x]dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/obj16/reversestepover.gifbin211 -> 211 bytes
-rw-r--r--[-rwxr-xr-x]dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/obj16/stop_visual_trace.gifbin961 -> 961 bytes
-rw-r--r--[-rwxr-xr-x]dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/obj16/uncall.gifbin208 -> 208 bytes
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/view16/debugsources_view.gifbin0 -> 353 bytes
-rw-r--r--[-rwxr-xr-x]dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/wizban/advtosettings_wiz.pngbin8548 -> 8548 bytes
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/refresh.gifbin0 -> 385 bytes
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/plugin.properties2
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/plugin.xml41
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/GdbPinProvider.java2
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/GdbUIPlugin.java5
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/actions/GdbSteppingModeTarget.java2
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbAbstractReverseStepCommand.java4
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbConnectCommand.java76
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbDebugNewExecutableCommand.java4
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbResumeWithoutSignalCommand.java2
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbReverseResumeCommand.java4
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbReverseToggleCommand.java8
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbSaveTraceDataCommand.java4
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbSelectNextTraceRecordCommand.java4
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbSelectPrevTraceRecordCommand.java4
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbStartTracingCommand.java4
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbStopTracingCommand.java4
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/debugsources/DebugSourcesLabelProvider.java119
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/debugsources/DebugSourcesMessages.java52
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/debugsources/DebugSourcesMessages.properties35
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/debugsources/DebugSourcesTreeContentProvider.java105
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/debugsources/DebugSourcesTreeElement.java220
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/debugsources/DebugSourcesView.java736
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/debugsources/DebugSourcesViewComparator.java85
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/debugsources/IDebugSourcesImagesConst.java30
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/debugsources/actions/DebugSourcesCollapseAction.java52
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/debugsources/actions/DebugSourcesExpandAction.java51
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/debugsources/actions/DebugSourcesFlattendedTree.java64
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/debugsources/actions/DebugSourcesNormalTree.java64
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/debugsources/actions/DebugSourcesShowExistingFilesOnly.java66
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/debugsources/actions/DebugSourcesViewRefresh.java93
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/CDebuggerTab.java23
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/GdbCoreDebuggerPage.java18
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/GdbDebuggerPage.java150
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/GdbServerDebuggerPage.java10
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/LaunchUIMessages.java3
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/LaunchUIMessages.properties9
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/ProcessPrompter.java6
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/ProcessPrompterDialog.java3
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/osview/AttachProcessHandler.java2
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/osview/OSResourcesView.java2
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/preferences/GdbDebugPreferencePage.java7
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/preferences/MessagesForPreferences.java2
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/preferences/MessagesForPreferences.properties2
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/tracepoints/TraceControlModel.java4
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/viewmodel/GdbVariableVMNode.java4
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/viewmodel/breakpoints/GdbBreakpointVMProvider.java23
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/.classpath4
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/META-INF/MANIFEST.MF9
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/about.html14
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/IGDBFlatpakLaunchConstants.java32
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/IGdbDebugPreferenceConstants.java14
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/internal/GdbPlugin.java2
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/internal/GdbPreferenceInitializer.java2
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/internal/launching/CoreBuildLocalDebugLaunchDelegate.java8
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/internal/launching/FlatpakLaunch.java315
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/internal/memory/GdbMemoryBlockRetrieval.java8
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/FinalLaunchSequence.java32
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/FinalLaunchSequence_7_12.java6
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/GdbLaunch.java81
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/GdbLaunchDelegate.java40
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/GdbSourceLookupDirector.java2
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/GdbSourceLookupParticipant.java2
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/InferiorRuntimeProcess.java3
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/LaunchMessages.java3
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/LaunchMessages.properties4
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/LaunchUtils.java11
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/DebugNewProcessSequence.java44
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBBackend.java33
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBBackend_7_12.java21
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBPatternMatchingExpressions.java3
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBProcesses.java5
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBProcesses_7_0.java3
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBProcesses_7_1.java30
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBProcesses_7_11.java2
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBProcesses_7_12.java8
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBProcesses_7_2.java35
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBRegisters.java20
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBRunControl_7_0_NS.java13
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBRunControl_7_12.java22
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBSourceLookup.java157
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/IDebugSourceFiles.java67
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/IGDBBackend.java21
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/IGDBSourceLookup.java2
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/StartOrRestartProcessSequence_7_0.java8
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIBreakpoints.java3
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIBreakpointsManager.java10
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIBreakpointsSynchronizer.java53
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIRunControl.java3
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIVariableManager.java2
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/breakpoint/actions/MILogActionEnabler.java2
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/AbstractMIControl.java121
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/CommandFactory.java19
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/MIBackendCLIProcess.java2
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/MIInferiorProcess.java2
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/Messages.java2
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/CLIUnsetSubstitutePath.java2
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/MIFileListExecSourceFiles.java39
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/MIGDBSetNewConsole.java2
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/MIGDBSetRemoteTimeout.java2
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/MIGDBSetStartupWithShell.java28
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/MIGDBShowNewConsole.java2
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/MISetSubstitutePath.java2
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/messages.properties2
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/output/MIGDBShowNewConsoleInfo.java2
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/output/MIInstruction.java14
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/output/MiSourceFilesInfo.java164
-rw-r--r--dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/.classpath2
-rw-r--r--dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/.project6
-rw-r--r--dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/META-INF/MANIFEST.MF9
-rw-r--r--dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/about.html14
-rw-r--r--dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/build.properties4
-rw-r--r--dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/plugin.properties14
-rw-r--r--dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/src/org/eclipse/cdt/examples/dsf/gdb/actions/GdbShowVersionHandler.java4
-rw-r--r--dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/src/org/eclipse/cdt/examples/dsf/gdb/commands/IShowVersionHandler.java2
-rw-r--r--dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/src/org/eclipse/cdt/examples/dsf/gdb/commands/ShowVersionHandler.java2
-rw-r--r--dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/src/org/eclipse/cdt/examples/dsf/gdb/launch/GdbExtendedFinalLaunchSequence.java2
-rw-r--r--dsf-gdb/org.eclipse.cdt.gnu.dsf-feature/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--dsf-gdb/org.eclipse.cdt.gnu.dsf-feature/feature.xml13
-rw-r--r--dsf-gdb/org.eclipse.cdt.gnu.multicorevisualizer-feature/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--[-rwxr-xr-x]dsf-gdb/org.eclipse.cdt.gnu.multicorevisualizer-feature/build.properties0
-rw-r--r--dsf-gdb/org.eclipse.cdt.gnu.multicorevisualizer-feature/feature.xml13
-rw-r--r--dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/.classpath8
-rw-r--r--dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/.project6
-rw-r--r--dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/META-INF/MANIFEST.MF11
-rw-r--r--dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/about.html14
-rw-r--r--dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/build.properties1
-rw-r--r--dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/data/launch/src/ExpressionTestApp.cc39
-rw-r--r--dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/data/launch/src/LaunchConfigurationAndRestartTestApp.cc11
-rw-r--r--dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/data/launch/src/Makefile8
-rw-r--r--dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/data/launch/src/MultiThread.cc2
-rw-r--r--dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/plugin.properties14
-rw-r--r--dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/pom.xml34
-rw-r--r--dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/framework/AsyncCompletionWaitor.java2
-rw-r--r--dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/framework/BaseParametrizedTestCase.java31
-rw-r--r--dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/framework/BaseTestCase.java107
-rw-r--r--dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/framework/Intermittent.java27
-rw-r--r--dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/framework/IntermittentRule.java91
-rw-r--r--dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/framework/SyncUtil.java631
-rw-r--r--dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/CommandLineArgsTest.java62
-rw-r--r--dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/CommandTimeoutTest.java4
-rw-r--r--dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/GDBConsoleBreakpointsTest.java4
-rw-r--r--dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/GDBConsoleSynchronizingTest.java16
-rw-r--r--dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/GDBPatternMatchingExpressionsTest.java22
-rw-r--r--dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/GDBProcessesTest.java17
-rw-r--r--dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/GDBRemoteTracepointsTest.java14
-rw-r--r--dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/GDBTestTest.java2
-rw-r--r--dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/ITestConstants.java22
-rw-r--r--dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/LaunchConfigurationAndRestartTest.java141
-rw-r--r--dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/MIBreakpointsTest.java16
-rw-r--r--dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/MICatchpointsTest.java15
-rw-r--r--dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/MIDisassemblyTest.java11
-rw-r--r--dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/MIExpressionsTest.java209
-rw-r--r--dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/MIMemoryTest.java2
-rw-r--r--dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/MIModifiedServicesTest.java74
-rw-r--r--dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/MIRegistersTest.java45
-rw-r--r--dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/MIRunControlReverseTest.java27
-rw-r--r--dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/MIRunControlTargetAvailableTest.java27
-rw-r--r--dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/MIRunControlTest.java94
-rw-r--r--dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/OperationsWhileTargetIsRunningTest.java7
-rw-r--r--dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/PostMortemCoreTest.java10
-rw-r--r--dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/SourceLookupTest.java67
-rw-r--r--dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/StepIntoSelectionTest.java9
-rw-r--r--dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/SuiteGdb.java2
-rw-r--r--dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/TraceFileTest.java6
-rw-r--r--dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/nonstop/GDBMultiNonStopRunControlTest.java96
-rw-r--r--dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/nonstop/MIExpressionsNonStopTest.java2
-rw-r--r--dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/nonstop/ThreadStackFrameSyncTest.java141
-rw-r--r--dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/mi/service/command/MIAsyncErrorProcessorTests.java2
-rw-r--r--dsf-gdb/pom.xml12
-rw-r--r--dsf/org.eclipse.cdt.dsf.ui/.classpath4
-rw-r--r--dsf/org.eclipse.cdt.dsf.ui/.settings/.api_filters11
-rw-r--r--dsf/org.eclipse.cdt.dsf.ui/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--dsf/org.eclipse.cdt.dsf.ui/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--dsf/org.eclipse.cdt.dsf.ui/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--dsf/org.eclipse.cdt.dsf.ui/META-INF/MANIFEST.MF4
-rw-r--r--dsf/org.eclipse.cdt.dsf.ui/about.html14
-rw-r--r--dsf/org.eclipse.cdt.dsf.ui/build.properties3
-rw-r--r--dsf/org.eclipse.cdt.dsf.ui/css/e4-dark_dsf.css22
-rw-r--r--dsf/org.eclipse.cdt.dsf.ui/plugin.properties6
-rw-r--r--dsf/org.eclipse.cdt.dsf.ui/plugin.xml34
-rw-r--r--dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/CSourceNotFoundDescriptionFactory.java2
-rw-r--r--dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/ExpressionInformationControlCreator.java50
-rw-r--r--dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/actions/AbstractDsfRegisterGroupActions.java8
-rw-r--r--dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/actions/MoveToLine.java8
-rw-r--r--dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/actions/ResumeAtLine.java8
-rw-r--r--dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/actions/RunToLine.java8
-rw-r--r--dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/DisassemblyBackendDsf.java76
-rw-r--r--dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/DisassemblyMessages.java4
-rw-r--r--dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/DisassemblyMessages.properties4
-rw-r--r--dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/DisassemblyPart.java16
-rw-r--r--dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/OpcodeRulerColumn.java55
-rw-r--r--dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/actions/RulerJumpToMemoryAction.java182
-rw-r--r--dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/actions/RulerJumpToMemoryActionDelegate.java32
-rw-r--r--dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/actions/RulerJumpToMemoryHandler.java43
-rw-r--r--dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/model/DisassemblyDocument.java66
-rw-r--r--dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/model/DisassemblyWithSourcePosition.java6
-rw-r--r--dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/preferences/DisassemblyPreferenceConstants.java2
-rw-r--r--dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/preferences/DisassemblyPreferencePage.java5
-rw-r--r--dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/provisional/DisassemblyRulerColumn.java51
-rw-r--r--dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/sourcelookup/DsfSourceSelectionResolver.java3
-rw-r--r--dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/viewmodel/actions/DsfViewMemoryHandler.java3
-rw-r--r--dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/AbstractDsfDebugTextHover.java2
-rw-r--r--dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/actions/DsfStepIntoSelectionCommand.java4
-rw-r--r--dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/sourcelookup/DsfSourceDisplayAdapter.java25
-rw-r--r--dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/AbstractDebugVMAdapter.java40
-rw-r--r--dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/breakpoints/BreakpointVMProvider.java12
-rw-r--r--dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/breakpoints/DataCache.java2
-rw-r--r--dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/expression/AbstractExpressionVMNode.java2
-rw-r--r--dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/expression/ExpressionManagerVMNode.java2
-rw-r--r--dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/expression/ExpressionVMProviderContentStragegy.java23
-rw-r--r--dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/expression/ExpressionVMProviderModelProxyStrategy.java32
-rw-r--r--dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/expression/SingleExpressionVMNode.java2
-rw-r--r--dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/expression/VMExpressionUpdate.java2
-rw-r--r--dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/expression/WatchExpressionCellModifier.java2
-rw-r--r--dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/launch/DefaultDsfSelectionPolicy.java4
-rw-r--r--dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/launch/StackFramesVMNode.java4
-rw-r--r--dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/numberformat/FormattedValueRetriever.java3
-rw-r--r--dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/numberformat/FormattedValueVMUtil.java6
-rw-r--r--dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/variable/VariableVMNode.java8
-rw-r--r--dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/internal/ui/DsfUIPlugin.java3
-rw-r--r--dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/concurrent/DisplayDsfExecutor.java2
-rw-r--r--dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/DefaultVMContentProviderStrategy.java2
-rw-r--r--dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/properties/VMPropertiesUpdate.java4
-rw-r--r--dsf/org.eclipse.cdt.dsf/.classpath4
-rw-r--r--dsf/org.eclipse.cdt.dsf/.settings/.api_filters31
-rw-r--r--dsf/org.eclipse.cdt.dsf/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--dsf/org.eclipse.cdt.dsf/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--dsf/org.eclipse.cdt.dsf/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--dsf/org.eclipse.cdt.dsf/META-INF/MANIFEST.MF4
-rw-r--r--dsf/org.eclipse.cdt.dsf/about.html14
-rw-r--r--dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/concurrent/RangeCache.java2
-rw-r--r--dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/concurrent/RequestCache.java2
-rw-r--r--dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/debug/model/DsfMemoryBlock.java16
-rw-r--r--dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/debug/model/DsfMemoryBlockRetrieval.java5
-rw-r--r--dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/debug/service/AbstractInstruction.java10
-rw-r--r--dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/debug/service/IInstructionWithRawOpcode.java33
-rw-r--r--dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/debug/service/IInstructionWithRawOpcodes.java2
-rw-r--r--dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/debug/service/command/ICommandControlService.java19
-rw-r--r--dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/debug/sourcelookup/DsfSourceLookupParticipant.java2
-rw-r--r--dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/service/AbstractDsfService.java32
-rw-r--r--dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/service/DsfServicesTracker.java83
-rw-r--r--dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/service/DsfSession.java3
-rw-r--r--dsf/org.eclipse.cdt.examples.dsf-feature/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--dsf/org.eclipse.cdt.examples.dsf-feature/feature.xml12
-rw-r--r--dsf/org.eclipse.cdt.examples.dsf-feature/pom.xml12
-rw-r--r--dsf/org.eclipse.cdt.examples.dsf.pda.ui/.classpath4
-rw-r--r--dsf/org.eclipse.cdt.examples.dsf.pda.ui/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--dsf/org.eclipse.cdt.examples.dsf.pda.ui/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--dsf/org.eclipse.cdt.examples.dsf.pda.ui/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--dsf/org.eclipse.cdt.examples.dsf.pda.ui/META-INF/MANIFEST.MF4
-rw-r--r--dsf/org.eclipse.cdt.examples.dsf.pda.ui/about.html14
-rw-r--r--dsf/org.eclipse.cdt.examples.dsf.pda/.classpath4
-rw-r--r--[-rwxr-xr-x]dsf/org.eclipse.cdt.examples.dsf.pda/.options0
-rw-r--r--dsf/org.eclipse.cdt.examples.dsf.pda/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--dsf/org.eclipse.cdt.examples.dsf.pda/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--dsf/org.eclipse.cdt.examples.dsf.pda/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--dsf/org.eclipse.cdt.examples.dsf.pda/META-INF/MANIFEST.MF5
-rw-r--r--dsf/org.eclipse.cdt.examples.dsf.pda/about.html14
-rw-r--r--dsf/org.eclipse.cdt.examples.dsf.pda/src/org/eclipse/cdt/examples/dsf/pda/PDAPlugin.java2
-rw-r--r--dsf/org.eclipse.cdt.examples.dsf.pda/src/org/eclipse/cdt/examples/dsf/pda/launch/PDALaunchDelegate.java4
-rw-r--r--dsf/org.eclipse.cdt.examples.dsf.pda/src/org/eclipse/cdt/examples/dsf/pda/service/PDABackend.java24
-rw-r--r--dsf/org.eclipse.cdt.examples.dsf/.classpath4
-rw-r--r--dsf/org.eclipse.cdt.examples.dsf/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--dsf/org.eclipse.cdt.examples.dsf/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--dsf/org.eclipse.cdt.examples.dsf/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--dsf/org.eclipse.cdt.examples.dsf/META-INF/MANIFEST.MF4
-rw-r--r--dsf/org.eclipse.cdt.examples.dsf/about.html14
-rw-r--r--dsf/org.eclipse.cdt.examples.dsf/about.mappings6
-rw-r--r--dsf/org.eclipse.cdt.examples.dsf/about.properties25
-rw-r--r--dsf/org.eclipse.cdt.examples.dsf/src/org/eclipse/cdt/examples/dsf/timers/TriggerCellModifier.java5
-rw-r--r--dsf/org.eclipse.cdt.examples.dsf/src_preprocess/org/eclipse/cdt/examples/dsf/dataviewer/AsyncSumDataGenerator.java4
-rw-r--r--dsf/org.eclipse.cdt.examples.dsf/src_preprocess/org/eclipse/cdt/examples/dsf/dataviewer/AsyncSumDataViewer.java2
-rw-r--r--dsf/org.eclipse.cdt.examples.dsf/src_preprocess/org/eclipse/cdt/examples/dsf/dataviewer/DataGeneratorCacheManager.java2
-rw-r--r--dsf/org.eclipse.cdt.examples.dsf/src_preprocess/org/eclipse/cdt/examples/dsf/dataviewer/SyncDataViewer.java2
-rw-r--r--dsf/org.eclipse.cdt.tests.dsf/.classpath8
-rw-r--r--dsf/org.eclipse.cdt.tests.dsf/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--dsf/org.eclipse.cdt.tests.dsf/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--dsf/org.eclipse.cdt.tests.dsf/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--dsf/org.eclipse.cdt.tests.dsf/META-INF/MANIFEST.MF4
-rw-r--r--dsf/org.eclipse.cdt.tests.dsf/about.html14
-rw-r--r--dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/breakpoints/BreakpointMediatorTests.java2
-rw-r--r--dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/concurrent/CacheTests.java4
-rw-r--r--dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/concurrent/DsfQueryTests.java16
-rw-r--r--dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/concurrent/TransactionTests.java4
-rw-r--r--dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/debug/vm/launch/VMTest1.java2
-rw-r--r--dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/pda/service/command/BasicTests.java4
-rw-r--r--dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/pda/service/command/CommandControlTestsBase.java2
-rw-r--r--dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/vm/FormattedValueTests.java4
-rw-r--r--dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/vm/TestModelUpdatesListener.java4
-rw-r--r--dsf/pom.xml12
-rw-r--r--jsoncdb/aggregator/.project17
-rw-r--r--jsoncdb/aggregator/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--jsoncdb/aggregator/.settings/org.eclipse.m2e.core.prefs (renamed from toolchains/arduino/org.eclipse.cdt.arduino.ui/.settings/org.eclipse.m2e.core.prefs)0
-rw-r--r--jsoncdb/aggregator/pom.xml33
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/.classpath15
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/.gitignore (renamed from toolchains/arduino/org.eclipse.cdt.arduino-feature/.gitignore)0
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/.project23
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/.settings/org.eclipse.jdt.launching.prefs (renamed from core/org.eclipse.cdt.core.linux.ppc64le/.settings/org.eclipse.jdt.launching.prefs)0
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/.settings/org.eclipse.m2e.core.prefs4
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/.settings/org.eclipse.pde.api.tools.prefs (renamed from releng/org.eclipse.cdt.repo/.settings/org.eclipse.pde.api.tools.prefs)0
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/.settings/org.eclipse.pde.prefs (renamed from toolchains/arduino/org.eclipse.cdt.arduino.core.tests/.settings/org.eclipse.pde.prefs)0
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/META-INF/MANIFEST.MF11
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/OSGI-INF/l10n/bundle.properties10
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/about.html38
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/build.properties7
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/src/org/eclipse/cdt/jsoncdb/arm/SystemIncludePathTest.java71
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/src/org/eclipse/cdt/jsoncdb/arm/ToolDetectionParticipantTest.java88
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.arm/.classpath11
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.arm/.gitignore (renamed from toolchains/arduino/org.eclipse.cdt.arduino.ui/.gitignore)0
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.arm/.project29
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.arm/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.arm/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.arm/.settings/org.eclipse.jdt.launching.prefs (renamed from core/org.eclipse.cdt.core.linux.x86_64/.settings/org.eclipse.jdt.launching.prefs)0
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.arm/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.arm/.settings/org.eclipse.m2e.core.prefs4
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.arm/.settings/org.eclipse.pde.api.tools.prefs (renamed from releng/org.eclipse.cdt.target/.settings/org.eclipse.pde.api.tools.prefs)0
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.arm/.settings/org.eclipse.pde.prefs (renamed from releng/org.eclipse.cdt.repo/.settings/org.eclipse.pde.prefs)0
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.arm/META-INF/MANIFEST.MF14
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.arm/about.html38
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.arm/build.properties10
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.arm/doc/compiler.xhtml95
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.arm/help_content_extension.xml7
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.arm/plugin.properties10
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.arm/plugin.xml16
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.arm/src/org/eclipse/cdt/jsoncdb/arm/ArmClangToolDetectionParticipant.java39
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.arm/src/org/eclipse/cdt/jsoncdb/arm/ArmccBuiltinDetectionBehavior.java46
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.arm/src/org/eclipse/cdt/jsoncdb/arm/ArmccToolDetectionParticipant.java62
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.doc/.project22
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.doc/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.doc/.settings/org.eclipse.pde.api.tools.prefs (renamed from releng/org.eclipse.cdt.testing.repo/.settings/org.eclipse.pde.api.tools.prefs)0
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.doc/.settings/org.eclipse.pde.prefs (renamed from releng/org.eclipse.cdt.target/.settings/org.eclipse.pde.prefs)0
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.doc/META-INF/MANIFEST.MF11
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.doc/about.html38
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.doc/build.properties9
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.doc/doc/html/builtins-detection.xhtml122
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.doc/doc/html/notices.html20
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.doc/doc/html/supported-compilers.xhtml125
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.doc/doc/toc.xml8
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.doc/doc/topics_Tasks.xml9
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.doc/plugin.properties11
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.doc/plugin.xml11
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/.classpath15
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/.gitignore1
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/.project28
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/.settings/org.eclipse.jdt.launching.prefs (renamed from core/org.eclipse.cdt.core.win32.x86_64/.settings/org.eclipse.jdt.launching.prefs)0
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/.settings/org.eclipse.m2e.core.prefs4
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/.settings/org.eclipse.pde.api.tools.prefs (renamed from releng/scripts/.settings/org.eclipse.pde.api.tools.prefs)0
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/.settings/org.eclipse.pde.prefs (renamed from upc/org.eclipse.cdt.core.parser.upc.tests/.settings/org.eclipse.pde.prefs)0
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/META-INF/MANIFEST.MF11
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/OSGI-INF/l10n/bundle.properties10
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/about.html38
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/build.properties8
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/src/org/eclipse/cdt/jsoncdb/core/internal/BuiltinsDetectLangStd_GCC_Test.java97
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/src/org/eclipse/cdt/jsoncdb/core/internal/BuiltinsDetectSysroot_GCC_Test.java111
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/src/org/eclipse/cdt/jsoncdb/core/internal/BuiltinsDetectTarget_Clang_Test.java58
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/src/org/eclipse/cdt/jsoncdb/core/internal/IncludeFile_GCCTest.java143
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/src/org/eclipse/cdt/jsoncdb/core/internal/IncludePath_C_POSIXTest.java174
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/src/org/eclipse/cdt/jsoncdb/core/internal/MacroDefine_C_POSIXTest.java311
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/src/org/eclipse/cdt/jsoncdb/core/internal/MacroUndefine_C_POSIXTest.java59
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/src/org/eclipse/cdt/jsoncdb/core/internal/MacrosFile_GCCTest.java143
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/src/org/eclipse/cdt/jsoncdb/core/internal/ParserDetectionTest.java233
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/src/org/eclipse/cdt/jsoncdb/core/internal/ParserLookupResultTest.java82
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/src/org/eclipse/cdt/jsoncdb/core/internal/SystemIncludePath_C_Test.java124
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/src/org/eclipse/cdt/jsoncdb/core/internal/ToolCommandlineParserTest.java108
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/src/org/eclipse/cdt/jsoncdb/core/internal/builtins/GccOutputProcessorTest.java67
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/src/org/eclipse/cdt/jsoncdb/core/internal/builtins/cbd-gcc.output.txt246
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/.classpath7
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/.project34
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/.settings/org.eclipse.jdt.launching.prefs (renamed from debug/org.eclipse.cdt.debug.application.doc/.settings/org.eclipse.jdt.launching.prefs)0
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/.settings/org.eclipse.m2e.core.prefs4
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/.settings/org.eclipse.pde.api.tools.prefs (renamed from toolchains/arduino/org.eclipse.cdt.arduino.core.tests/.settings/org.eclipse.pde.api.tools.prefs)0
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/.settings/org.eclipse.pde.prefs (renamed from releng/org.eclipse.cdt.testing.repo/.settings/org.eclipse.pde.prefs)0
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/META-INF/MANIFEST.MF14
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/OSGI-INF/l10n/bundle.properties12
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/about.html38
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/build.properties8
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/plugin.xml14
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/src/org/eclipse/cdt/jsoncdb/core/ui/internal/JsonCdbPreferencePage.java189
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/src/org/eclipse/cdt/jsoncdb/core/ui/internal/Messages.java33
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/src/org/eclipse/cdt/jsoncdb/core/ui/internal/messages.properties17
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/.classpath11
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/.gitignore1
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/.options10
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/.project39
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/.settings/.api_filters59
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/.settings/org.eclipse.jdt.launching.prefs (renamed from debug/org.eclipse.cdt.debug.application.product/.settings/org.eclipse.jdt.launching.prefs)0
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/.settings/org.eclipse.m2e.core.prefs4
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/.settings/org.eclipse.pde.api.tools.prefs (renamed from toolchains/arduino/org.eclipse.cdt.arduino.core/.settings/org.eclipse.pde.api.tools.prefs)0
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/.settings/org.eclipse.pde.ds.annotations.prefs8
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/.settings/org.eclipse.pde.prefs (renamed from releng/scripts/.settings/org.eclipse.pde.prefs)0
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/META-INF/MANIFEST.MF27
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/OSGI-INF/org.eclipse.cdt.jsoncdb.core.internal.ParserPreferencesAccess.xml7
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/about.html38
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/build.properties11
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/plugin.properties15
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/plugin.xml22
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/schema/participant.exsd163
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/CommandEntry.java55
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/CompileCommandsJsonParser.java535
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/IParserPreferences.java40
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/IParserPreferencesAccess.java33
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/IParserPreferencesMetadata.java42
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/ISourceFileInfoConsumer.java60
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/Messages.java38
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/ParseRequest.java76
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/Messages.java35
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/ParseContext.java37
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/ParserDetection.java423
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/ParserPreferences.java63
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/ParserPreferencesAccess.java70
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/ParserPreferencesMetadata.java51
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/Plugin.java83
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/builtins/AbstractConsole.java55
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/builtins/CompilerBuiltinsDetector.java256
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/builtins/DetectorConsole.java28
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/builtins/GccBuiltinDetectionBehavior.java25
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/builtins/MaybeGccBuiltinDetectionBehavior.java49
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/builtins/Messages.java34
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/builtins/RawSourceFileInfo.java137
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/builtins/messages.properties18
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/messages.properties19
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/messages.properties22
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/package-info.java18
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/Arglets.java544
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/DefaultToolCommandlineParser.java196
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/DefaultToolDetectionParticipant.java367
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/IArglet.java52
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/IParserHandler.java34
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/IRawSourceFileInfo.java56
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/IRawSourceFileInfoCollector.java69
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/IResponseFileArglet.java35
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/IToolCommandlineParser.java60
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/IToolDetectionParticipant.java147
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/ParticipantTestUtil.java45
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/ResponseFileArglets.java94
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/builtins/GccOutputProcessor.java175
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/builtins/IBuiltinsDetectionBehavior.java39
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/builtins/IBuiltinsOutputProcessor.java29
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/builtins/OutputSniffer.java106
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/package-info.java18
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop.tests/.classpath15
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop.tests/.gitignore1
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop.tests/.project23
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop.tests/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop.tests/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop.tests/.settings/org.eclipse.jdt.launching.prefs (renamed from doc/org.eclipse.cdt.doc.isv/.settings/org.eclipse.jdt.launching.prefs)0
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop.tests/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop.tests/.settings/org.eclipse.m2e.core.prefs4
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop.tests/.settings/org.eclipse.pde.api.tools.prefs (renamed from toolchains/arduino/org.eclipse.cdt.arduino.ui/.settings/org.eclipse.pde.api.tools.prefs)0
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop.tests/.settings/org.eclipse.pde.prefs (renamed from xlc/org.eclipse.cdt.core.lrparser.xlc.tests/.settings/org.eclipse.pde.prefs)0
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop.tests/META-INF/MANIFEST.MF11
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop.tests/OSGI-INF/l10n/bundle.properties10
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop.tests/about.html38
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop.tests/build.properties8
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop.tests/src/org/eclipse/cdt/jsoncdb/hpenonstop/ToolDetectionParticipantTest.java116
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/.classpath11
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/.gitignore1
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/.project29
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/.settings/org.eclipse.jdt.launching.prefs (renamed from doc/org.eclipse.cdt.doc.user/.settings/org.eclipse.jdt.launching.prefs)0
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/.settings/org.eclipse.m2e.core.prefs4
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/.settings/org.eclipse.pde.api.tools.prefs (renamed from upc/org.eclipse.cdt.core.parser.upc.tests/.settings/org.eclipse.pde.api.tools.prefs)0
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/.settings/org.eclipse.pde.prefs (renamed from toolchains/arduino/org.eclipse.cdt.arduino.core/.settings/org.eclipse.pde.prefs)0
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/META-INF/MANIFEST.MF14
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/about.html38
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/build.properties10
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/doc/compiler.xhtml98
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/help_content_extension.xml7
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/plugin.properties10
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/plugin.xml18
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/src/org/eclipse/cdt/jsoncdb/hpenonstop/HpeC11ToolDetectionParticipant.java38
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/src/org/eclipse/cdt/jsoncdb/hpenonstop/HpeC89ToolDetectionParticipant.java38
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/src/org/eclipse/cdt/jsoncdb/hpenonstop/HpeC99ToolDetectionParticipant.java38
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.intel/.classpath11
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.intel/.gitignore1
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.intel/.project29
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.intel/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.intel/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.intel/.settings/org.eclipse.jdt.launching.prefs (renamed from jtag/org.eclipse.cdt.debug.gdbjtag/.settings/org.eclipse.jdt.launching.prefs)0
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.intel/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.intel/.settings/org.eclipse.m2e.core.prefs4
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.intel/.settings/org.eclipse.pde.api.tools.prefs (renamed from upc/org.eclipse.cdt.core.parser.upc/.settings/org.eclipse.pde.api.tools.prefs)0
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.intel/.settings/org.eclipse.pde.prefs (renamed from toolchains/arduino/org.eclipse.cdt.arduino.ui/.settings/org.eclipse.pde.prefs)0
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.intel/META-INF/MANIFEST.MF14
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.intel/about.html38
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.intel/build.properties10
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.intel/doc/compiler.xhtml101
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.intel/help_content_extension.xml9
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.intel/plugin.properties10
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.intel/plugin.xml22
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.intel/src/org/eclipse/cdt/jsoncdb/intel/IccToolDetectionParticipant.java26
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.intel/src/org/eclipse/cdt/jsoncdb/intel/IclCandCppToolDetectionParticipant.java38
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.intel/src/org/eclipse/cdt/jsoncdb/intel/IclToolDetectionParticipant.java24
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.intel/src/org/eclipse/cdt/jsoncdb/intel/IcpcClangToolDetectionParticipant.java24
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.intel/src/org/eclipse/cdt/jsoncdb/intel/IcpcToolDetectionParticipant.java24
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.intel/src/org/eclipse/cdt/jsoncdb/intel/IntelCToolCommandlineParser.java30
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.intel/src/org/eclipse/cdt/jsoncdb/intel/IntelCppToolCommandlineParser.java30
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.microsoft.tests/.classpath15
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.microsoft.tests/.gitignore1
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.microsoft.tests/.project23
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.microsoft.tests/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.microsoft.tests/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.microsoft.tests/.settings/org.eclipse.jdt.launching.prefs (renamed from lrparser/org.eclipse.cdt.core.lrparser.tests/.settings/org.eclipse.jdt.launching.prefs)0
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.microsoft.tests/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.microsoft.tests/.settings/org.eclipse.m2e.core.prefs4
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.microsoft.tests/.settings/org.eclipse.pde.api.tools.prefs (renamed from upc/org.eclipse.cdt.managedbuilder.bupc.ui/.settings/org.eclipse.pde.api.tools.prefs)0
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.microsoft.tests/.settings/org.eclipse.pde.prefs (renamed from xlc/org.eclipse.cdt.errorparsers.xlc.tests/.settings/org.eclipse.pde.prefs)0
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.microsoft.tests/META-INF/MANIFEST.MF11
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.microsoft.tests/OSGI-INF/l10n/bundle.properties10
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.microsoft.tests/about.html38
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.microsoft.tests/build.properties8
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.microsoft.tests/src/org/eclipse/cdt/jsoncdb/microsoft/ToolDetectionParticipantTest.java55
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/.classpath11
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/.gitignore1
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/.project29
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/.settings/org.eclipse.jdt.launching.prefs (renamed from lrparser/org.eclipse.cdt.core.lrparser/.settings/org.eclipse.jdt.launching.prefs)0
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/.settings/org.eclipse.m2e.core.prefs4
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/.settings/org.eclipse.pde.api.tools.prefs (renamed from xlc/org.eclipse.cdt.core.lrparser.xlc.tests/.settings/org.eclipse.pde.api.tools.prefs)0
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/.settings/org.eclipse.pde.prefs (renamed from upc/org.eclipse.cdt.core.parser.upc/.settings/org.eclipse.pde.prefs)0
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/META-INF/MANIFEST.MF14
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/about.html38
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/build.properties10
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/doc/compiler.xhtml41
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/help_content_extension.xml5
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/plugin.properties10
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/plugin.xml14
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/src/org/eclipse/cdt/jsoncdb/microsoft/MsclToolCommandlineParser.java114
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/src/org/eclipse/cdt/jsoncdb/microsoft/MsclToolDetectionParticipant.java24
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/.classpath15
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/.gitignore1
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/.project23
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/.settings/org.eclipse.jdt.launching.prefs (renamed from releng/org.eclipse.cdt.repo/.settings/org.eclipse.jdt.launching.prefs)0
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/.settings/org.eclipse.m2e.core.prefs4
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/.settings/org.eclipse.pde.api.tools.prefs (renamed from xlc/org.eclipse.cdt.core.lrparser.xlc/.settings/org.eclipse.pde.api.tools.prefs)0
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/.settings/org.eclipse.pde.prefs35
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/META-INF/MANIFEST.MF12
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/OSGI-INF/l10n/bundle.properties10
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/about.html38
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/build.properties8
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/src/org/eclipse/cdt/jsoncdb/nvidia/NvccSystemIncludePathTest.java67
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/src/org/eclipse/cdt/jsoncdb/nvidia/ToolDetectionParticipantTest.java54
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/src/org/eclipse/cdt/jsoncdb/nvidia/builtins/NvccBuiltins_DetectLangStdTest.java114
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/src/org/eclipse/cdt/jsoncdb/nvidia/builtins/NvccOutputProcessorTest.java108
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/src/org/eclipse/cdt/jsoncdb/nvidia/builtins/cbd-nvcc.output.txt262
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/.classpath11
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/.gitignore1
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/.project29
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/.settings/org.eclipse.jdt.launching.prefs (renamed from releng/org.eclipse.cdt.sdk/.settings/org.eclipse.jdt.launching.prefs)0
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/.settings/org.eclipse.m2e.core.prefs4
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/.settings/org.eclipse.pde.api.tools.prefs (renamed from xlc/org.eclipse.cdt.errorparsers.xlc.tests/.settings/org.eclipse.pde.api.tools.prefs)0
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/.settings/org.eclipse.pde.prefs (renamed from upc/org.eclipse.cdt.managedbuilder.bupc.ui/.settings/org.eclipse.pde.prefs)0
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/META-INF/MANIFEST.MF14
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/about.html38
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/build.properties10
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/doc/compiler.xhtml109
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/help_content_extension.xml9
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/plugin.properties10
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/plugin.xml15
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/src/org/eclipse/cdt/jsoncdb/nvidia/NvccBuiltinDetectionBehavior.java46
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/src/org/eclipse/cdt/jsoncdb/nvidia/NvccLangStdArglet.java35
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/src/org/eclipse/cdt/jsoncdb/nvidia/NvccSystemIncludePathArglet.java39
-rw-r--r--jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/src/org/eclipse/cdt/jsoncdb/nvidia/NvccToolDetectionParticipant.java39
-rw-r--r--jsoncdb/pom.xml43
-rw-r--r--jtag/org.eclipse.cdt.debug.dap.gdbjtag-feature/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--jtag/org.eclipse.cdt.debug.dap.gdbjtag-feature/build.properties2
-rw-r--r--jtag/org.eclipse.cdt.debug.dap.gdbjtag-feature/feature.properties4
-rw-r--r--jtag/org.eclipse.cdt.debug.dap.gdbjtag-feature/feature.xml12
-rw-r--r--jtag/org.eclipse.cdt.debug.dap.gdbjtag/.classpath2
-rw-r--r--jtag/org.eclipse.cdt.debug.dap.gdbjtag/.project6
-rw-r--r--jtag/org.eclipse.cdt.debug.dap.gdbjtag/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--jtag/org.eclipse.cdt.debug.dap.gdbjtag/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--jtag/org.eclipse.cdt.debug.dap.gdbjtag/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--jtag/org.eclipse.cdt.debug.dap.gdbjtag/META-INF/MANIFEST.MF4
-rw-r--r--jtag/org.eclipse.cdt.debug.dap.gdbjtag/about.html38
-rw-r--r--jtag/org.eclipse.cdt.debug.dap.gdbjtag/about.ini24
-rw-r--r--jtag/org.eclipse.cdt.debug.dap.gdbjtag/about.mappings9
-rw-r--r--jtag/org.eclipse.cdt.debug.dap.gdbjtag/about.properties32
-rw-r--r--jtag/org.eclipse.cdt.debug.dap.gdbjtag/build.properties8
-rw-r--r--jtag/org.eclipse.cdt.debug.dap.gdbjtag/cdt_logo_icon32.pngbin0 -> 1885 bytes
-rw-r--r--jtag/org.eclipse.cdt.debug.dap.gdbjtag/src/org/eclipse/cdt/debug/dap/gdbjtag/DapGdbJtagLaunchDelegate.java50
-rw-r--r--jtag/org.eclipse.cdt.debug.dap.gdbjtag/src/org/eclipse/cdt/debug/dap/gdbjtag/tabs/CMainTab.java2
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag-feature/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag-feature/feature.xml12
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag-feature/pom.xml12
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/.classpath2
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/META-INF/MANIFEST.MF11
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/about.html14
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/build.properties1
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/plugin.properties14
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/pom.xml34
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/src/org/eclipse/cdt/debug/gdbjtag/core/tests/AutomatedSuite.java (renamed from jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/src/org/eclipse/cdt/debug/gdbjtag/core/tests/launch/AutomatedSuite.java)4
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/src/org/eclipse/cdt/debug/gdbjtag/core/tests/SuiteGDBJtag.java35
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/src/org/eclipse/cdt/debug/gdbjtag/core/tests/jtagdevice/GDBJtagDeviceContributionTest.java41
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/src/org/eclipse/cdt/debug/gdbjtag/core/tests/launch/GDBJtagLaunchTest.java15
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/src/org/eclipse/cdt/debug/gdbjtag/core/tests/launch/SuiteGDBJtag.java33
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag.core/.classpath2
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag.core/.settings/.api_filters23
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag.core/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag.core/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag.core/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag.core/META-INF/MANIFEST.MF4
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag.core/about.html14
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag.core/build.properties3
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag.core/plugin.properties12
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag.core/plugin.xml53
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag.core/schema/JTagDevice.exsd7
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/Activator.java2
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/GDBJtagDSFFinalLaunchSequence.java84
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/GDBJtagDSFFinalLaunchSequence_7_12.java20
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/IGDBJtagConnection.java59
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/IGDBJtagConstants.java22
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/Message.properties9
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/AbatronBDI2000.java15
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/DefaultGDBJtagConnectionImpl.java40
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/DefaultGDBJtagDeviceImpl.java72
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/GDBJtagDeviceContribution.java18
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/GDBJtagDeviceContributionFactory.java12
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/GenericDevice.java21
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/IGDBJtagDevice.java43
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/MacraigorUsb2Demon.java10
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/OpenOCDSocket.java10
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/PEMicro.java16
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/PyOCD.java36
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/STLink.java43
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/SeggerJLink.java10
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag.ui/.classpath2
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag.ui/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag.ui/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag.ui/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag.ui/META-INF/MANIFEST.MF6
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag.ui/about.html14
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag.ui/src/org/eclipse/cdt/debug/gdbjtag/internal/ui/GDBJtagDSFCMainTab.java20
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag.ui/src/org/eclipse/cdt/debug/gdbjtag/ui/Activator.java2
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag.ui/src/org/eclipse/cdt/debug/gdbjtag/ui/GDBJtagDSFDebuggerTab.java297
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag.ui/src/org/eclipse/cdt/debug/gdbjtag/ui/GDBJtagStartupTab.java125
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag.ui/src/org/eclipse/cdt/debug/gdbjtag/ui/JtagUi.properties13
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag/.settings/org.eclipse.jdt.core.prefs464
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag/.settings/org.eclipse.jdt.ui.prefs133
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag/META-INF/MANIFEST.MF2
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag/about.html14
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag/about.mappings6
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag/about.properties25
-rw-r--r--jtag/org.eclipse.cdt.debug.gdbjtag/pom.xml47
-rw-r--r--jtag/pom.xml12
-rw-r--r--launch/org.eclipse.cdt.docker.launcher-feature/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--launch/org.eclipse.cdt.docker.launcher-feature/feature.xml15
-rw-r--r--launch/org.eclipse.cdt.docker.launcher-feature/pom.xml12
-rw-r--r--launch/org.eclipse.cdt.docker.launcher/.classpath2
-rw-r--r--launch/org.eclipse.cdt.docker.launcher/.project6
-rw-r--r--launch/org.eclipse.cdt.docker.launcher/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--launch/org.eclipse.cdt.docker.launcher/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--launch/org.eclipse.cdt.docker.launcher/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--launch/org.eclipse.cdt.docker.launcher/META-INF/MANIFEST.MF8
-rw-r--r--launch/org.eclipse.cdt.docker.launcher/about.html14
-rw-r--r--launch/org.eclipse.cdt.docker.launcher/about.ini24
-rw-r--r--launch/org.eclipse.cdt.docker.launcher/about.mappings9
-rw-r--r--launch/org.eclipse.cdt.docker.launcher/about.properties32
-rw-r--r--launch/org.eclipse.cdt.docker.launcher/build.properties6
-rw-r--r--launch/org.eclipse.cdt.docker.launcher/cdt_logo_icon32.pngbin0 -> 1885 bytes
-rw-r--r--launch/org.eclipse.cdt.docker.launcher/plugin.xml5
-rw-r--r--launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/docker/launcher/ContainerCommandLauncher.java69
-rw-r--r--launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/docker/launcher/ContainerCommandLauncherFactory.java482
-rw-r--r--launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/docker/launcher/ContainerTargetTypeProvider.java19
-rw-r--r--launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/docker/launcher/DockerLaunchUIPlugin.java5
-rw-r--r--launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/ConnectionListener.java4
-rw-r--r--launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/ContainerLaunchConfigurationDelegate.java107
-rw-r--r--launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/ContainerLaunchUtils.java71
-rw-r--r--launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/ContainerPropertyTab.java13
-rw-r--r--launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/ContainerPropertyVolumesModel.java6
-rw-r--r--launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/ContainerTab.java18
-rw-r--r--launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/DataVolumeModel.java4
-rw-r--r--launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/ExposedPortModel.java6
-rw-r--r--launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/GdbDebuggerPage.java20
-rw-r--r--launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/Messages.java8
-rw-r--r--launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/RemoteDebuggerPage.java10
-rw-r--r--launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/SWTImagesFactory.java10
-rw-r--r--launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/messages.properties6
-rw-r--r--launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/ui/launchbar/ContainerGCCToolChain.java4
-rw-r--r--launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/ui/launchbar/NewContainerTargetWizardPage.java6
-rw-r--r--launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/ui/preferences/PreferenceInitializer.java2
-rw-r--r--launch/org.eclipse.cdt.flatpak.launcher-feature/.project17
-rw-r--r--launch/org.eclipse.cdt.flatpak.launcher-feature/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--launch/org.eclipse.cdt.flatpak.launcher-feature/build.properties (renamed from toolchains/arduino/org.eclipse.cdt.arduino-feature/build.properties)0
-rw-r--r--launch/org.eclipse.cdt.flatpak.launcher-feature/feature.properties22
-rw-r--r--launch/org.eclipse.cdt.flatpak.launcher-feature/feature.xml39
-rw-r--r--launch/org.eclipse.cdt.flatpak.launcher-feature/pom.xml27
-rw-r--r--launch/org.eclipse.cdt.flatpak.launcher/.classpath7
-rw-r--r--launch/org.eclipse.cdt.flatpak.launcher/.gitignore (renamed from lsp/org.eclipse.cdt.lsp.core/.gitignore)0
-rw-r--r--launch/org.eclipse.cdt.flatpak.launcher/.project34
-rw-r--r--launch/org.eclipse.cdt.flatpak.launcher/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--launch/org.eclipse.cdt.flatpak.launcher/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--launch/org.eclipse.cdt.flatpak.launcher/.settings/org.eclipse.jdt.launching.prefs (renamed from releng/org.eclipse.cdt.target/.settings/org.eclipse.jdt.launching.prefs)0
-rw-r--r--launch/org.eclipse.cdt.flatpak.launcher/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--launch/org.eclipse.cdt.flatpak.launcher/.settings/org.eclipse.pde.api.tools.prefs (renamed from xlc/org.eclipse.cdt.errorparsers.xlc/.settings/org.eclipse.pde.api.tools.prefs)0
-rw-r--r--launch/org.eclipse.cdt.flatpak.launcher/.settings/org.eclipse.pde.prefs (renamed from xlc/org.eclipse.cdt.core.lrparser.xlc/.settings/org.eclipse.pde.prefs)0
-rw-r--r--launch/org.eclipse.cdt.flatpak.launcher/META-INF/MANIFEST.MF34
-rw-r--r--launch/org.eclipse.cdt.flatpak.launcher/about.html38
-rw-r--r--launch/org.eclipse.cdt.flatpak.launcher/about.ini24
-rw-r--r--launch/org.eclipse.cdt.flatpak.launcher/about.mappings9
-rw-r--r--launch/org.eclipse.cdt.flatpak.launcher/about.properties32
-rw-r--r--launch/org.eclipse.cdt.flatpak.launcher/build.properties26
-rw-r--r--launch/org.eclipse.cdt.flatpak.launcher/cdt_logo_icon32.pngbin0 -> 1885 bytes
-rw-r--r--launch/org.eclipse.cdt.flatpak.launcher/plugin.properties19
-rw-r--r--launch/org.eclipse.cdt.flatpak.launcher/plugin.xml88
-rw-r--r--launch/org.eclipse.cdt.flatpak.launcher/schema/flatpakPreferencePages.exsd175
-rw-r--r--launch/org.eclipse.cdt.flatpak.launcher/src/org/eclipse/cdt/flatpak/launcher/FlatpakCommandLauncher.java22
-rw-r--r--launch/org.eclipse.cdt.flatpak.launcher/src/org/eclipse/cdt/flatpak/launcher/FlatpakCommandLauncherFactory.java371
-rw-r--r--launch/org.eclipse.cdt.flatpak.launcher/src/org/eclipse/cdt/flatpak/launcher/FlatpakLaunchPlugin.java148
-rw-r--r--launch/org.eclipse.cdt.flatpak.launcher/src/org/eclipse/cdt/internal/flatpak/launcher/ui/preferences/FlatpakHeaderPreferencePage.java311
-rw-r--r--launch/org.eclipse.cdt.flatpak.launcher/src/org/eclipse/cdt/internal/flatpak/launcher/ui/preferences/FlatpakPreferenceNode.java55
-rw-r--r--launch/org.eclipse.cdt.flatpak.launcher/src/org/eclipse/cdt/internal/flatpak/launcher/ui/preferences/Messages.java35
-rw-r--r--launch/org.eclipse.cdt.flatpak.launcher/src/org/eclipse/cdt/internal/flatpak/launcher/ui/preferences/messages.properties21
-rw-r--r--launch/org.eclipse.cdt.launch/.classpath4
-rw-r--r--launch/org.eclipse.cdt.launch/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--launch/org.eclipse.cdt.launch/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--launch/org.eclipse.cdt.launch/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--launch/org.eclipse.cdt.launch/META-INF/MANIFEST.MF9
-rw-r--r--launch/org.eclipse.cdt.launch/about.html14
-rw-r--r--launch/org.eclipse.cdt.launch/about.ini24
-rw-r--r--launch/org.eclipse.cdt.launch/about.mappings9
-rw-r--r--launch/org.eclipse.cdt.launch/about.properties32
-rw-r--r--launch/org.eclipse.cdt.launch/build.properties6
-rw-r--r--launch/org.eclipse.cdt.launch/cdt_logo_icon32.pngbin0 -> 1885 bytes
-rw-r--r--launch/org.eclipse.cdt.launch/plugin.properties4
-rw-r--r--launch/org.eclipse.cdt.launch/plugin.xml51
-rw-r--r--launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/AbstractCLaunchDelegate.java54
-rw-r--r--launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/AbstractCLaunchDelegate2.java10
-rw-r--r--launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/LaunchUtils.java43
-rw-r--r--launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/Messages.java2
-rw-r--r--launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/internal/LocalRunLaunchDelegate.java7
-rw-r--r--launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/internal/MultiLaunchConfigurationDelegate.java600
-rw-r--r--launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/internal/ui/LaunchMessages.java34
-rw-r--r--launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/internal/ui/LaunchMessages.properties35
-rw-r--r--launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/internal/ui/LaunchUIPlugin.java5
-rw-r--r--launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/internal/ui/MultiLaunchConfigurationSelectionDialog.java383
-rw-r--r--launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/internal/ui/MultiLaunchConfigurationTabGroup.java549
-rw-r--r--launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/messages.properties2
-rw-r--r--launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CAbstractArgumentsTab.java3
-rw-r--r--launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CEnvironmentTab.java3
-rw-r--r--launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CMainAttachTab.java37
-rw-r--r--launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CMainCoreTab.java24
-rw-r--r--launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CMainTab.java615
-rw-r--r--launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CMainTab2.java12
-rw-r--r--launch/pom.xml12
-rw-r--r--launchbar/org.eclipse.launchbar.core.tests/.classpath11
-rw-r--r--launchbar/org.eclipse.launchbar.core.tests/.gitignore (renamed from toolchains/arduino/org.eclipse.cdt.arduino.core.tests/.gitignore)0
-rw-r--r--launchbar/org.eclipse.launchbar.core.tests/.project28
-rw-r--r--launchbar/org.eclipse.launchbar.core.tests/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--launchbar/org.eclipse.launchbar.core.tests/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--launchbar/org.eclipse.launchbar.core.tests/.settings/org.eclipse.jdt.launching.prefs (renamed from releng/org.eclipse.cdt.testing.repo/.settings/org.eclipse.jdt.launching.prefs)0
-rw-r--r--launchbar/org.eclipse.launchbar.core.tests/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--launchbar/org.eclipse.launchbar.core.tests/.settings/org.eclipse.pde.api.tools.prefs (renamed from xlc/org.eclipse.cdt.make.xlc.core/.settings/org.eclipse.pde.api.tools.prefs)0
-rw-r--r--launchbar/org.eclipse.launchbar.core.tests/.settings/org.eclipse.pde.prefs35
-rw-r--r--launchbar/org.eclipse.launchbar.core.tests/META-INF/MANIFEST.MF12
-rw-r--r--launchbar/org.eclipse.launchbar.core.tests/about.html38
-rw-r--r--launchbar/org.eclipse.launchbar.core.tests/build.properties8
-rw-r--r--launchbar/org.eclipse.launchbar.core.tests/fragment.properties14
-rw-r--r--launchbar/org.eclipse.launchbar.core.tests/fragment.xml14
-rw-r--r--launchbar/org.eclipse.launchbar.core.tests/src/org/eclipse/launchbar/core/PerTargetLaunchConfigProviderTest.java309
-rw-r--r--launchbar/org.eclipse.launchbar.core.tests/src/org/eclipse/launchbar/core/internal/LaunchBarManager2Test.java969
-rw-r--r--launchbar/org.eclipse.launchbar.core.tests/src/org/eclipse/launchbar/core/internal/LaunchBarManagerTest.java323
-rw-r--r--launchbar/org.eclipse.launchbar.core.tests/src/org/eclipse/launchbar/core/internal/target/LaunchTargetTest.java113
-rw-r--r--launchbar/org.eclipse.launchbar.core.tests/src/org/eclipse/launchbar/core/tests/AutomatedIntegrationSuite.java25
-rw-r--r--launchbar/org.eclipse.launchbar.core.tests/src/org/eclipse/launchbar/core/tests/TargetAttributesTest.java46
-rw-r--r--launchbar/org.eclipse.launchbar.core/.classpath7
-rw-r--r--launchbar/org.eclipse.launchbar.core/.gitignore1
-rw-r--r--launchbar/org.eclipse.launchbar.core/.options2
-rw-r--r--launchbar/org.eclipse.launchbar.core/.project34
-rw-r--r--launchbar/org.eclipse.launchbar.core/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--launchbar/org.eclipse.launchbar.core/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--launchbar/org.eclipse.launchbar.core/.settings/org.eclipse.jdt.launching.prefs (renamed from releng/org.eclipse.cdt.testing/.settings/org.eclipse.jdt.launching.prefs)0
-rw-r--r--launchbar/org.eclipse.launchbar.core/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--launchbar/org.eclipse.launchbar.core/.settings/org.eclipse.pde.api.tools.prefs (renamed from xlc/org.eclipse.cdt.managedbuilder.xlc.core/.settings/org.eclipse.pde.api.tools.prefs)0
-rw-r--r--launchbar/org.eclipse.launchbar.core/.settings/org.eclipse.pde.prefs (renamed from xlc/org.eclipse.cdt.errorparsers.xlc/.settings/org.eclipse.pde.prefs)0
-rw-r--r--launchbar/org.eclipse.launchbar.core/META-INF/MANIFEST.MF18
-rw-r--r--launchbar/org.eclipse.launchbar.core/about.html38
-rw-r--r--launchbar/org.eclipse.launchbar.core/build.properties9
-rw-r--r--launchbar/org.eclipse.launchbar.core/plugin.properties14
-rw-r--r--launchbar/org.eclipse.launchbar.core/plugin.xml47
-rw-r--r--launchbar/org.eclipse.launchbar.core/schema/launchBarContributions.exsd208
-rw-r--r--launchbar/org.eclipse.launchbar.core/schema/launchTargetTypes.exsd109
-rw-r--r--launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/AbstractLaunchConfigProvider.java80
-rw-r--r--launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/DefaultLaunchConfigProvider.java82
-rw-r--r--launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/DefaultLaunchDescriptor.java59
-rw-r--r--launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/DefaultLaunchDescriptorType.java84
-rw-r--r--launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/ILaunchBarListener.java40
-rw-r--r--launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/ILaunchBarManager.java186
-rw-r--r--launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/ILaunchConfigurationProvider.java134
-rw-r--r--launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/ILaunchDescriptor.java39
-rw-r--r--launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/ILaunchDescriptorType.java59
-rw-r--r--launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/ILaunchObjectProvider.java38
-rw-r--r--launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/PerTargetLaunchConfigProvider.java171
-rw-r--r--launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/ProjectLaunchConfigProvider.java93
-rw-r--r--launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/ProjectLaunchDescriptor.java87
-rw-r--r--launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/ProjectPerTargetLaunchConfigProvider.java69
-rw-r--r--launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/Activator.java105
-rw-r--r--launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/ExecutableExtension.java68
-rw-r--r--launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/LaunchBarManager.java1036
-rw-r--r--launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/LaunchConfigProviderInfo.java116
-rw-r--r--launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/LaunchDescriptorTypeInfo.java99
-rw-r--r--launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/Messages.java34
-rw-r--r--launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/Pair.java74
-rw-r--r--launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/ProjectLaunchObjectProvider.java81
-rw-r--r--launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/messages.properties19
-rw-r--r--launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/target/LaunchTarget.java112
-rw-r--r--launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/target/LaunchTargetManager.java309
-rw-r--r--launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/target/LaunchTargetPropertyTester.java28
-rw-r--r--launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/target/LaunchTargetWorkingCopy.java113
-rw-r--r--launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/target/LocalLaunchTargetProvider.java41
-rw-r--r--launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/target/ILaunchTarget.java94
-rw-r--r--launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/target/ILaunchTargetListener.java46
-rw-r--r--launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/target/ILaunchTargetManager.java125
-rw-r--r--launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/target/ILaunchTargetManager2.java31
-rw-r--r--launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/target/ILaunchTargetProvider.java29
-rw-r--r--launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/target/ILaunchTargetWorkingCopy.java50
-rw-r--r--launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/target/TargetStatus.java42
-rw-r--r--launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/target/launch/ILaunchConfigurationTargetedDelegate.java133
-rw-r--r--launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/target/launch/ITargetedLaunch.java28
-rw-r--r--launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/target/launch/LaunchConfigurationTargetedDelegate.java90
-rw-r--r--launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/target/launch/TargetedLaunch.java37
-rw-r--r--launchbar/org.eclipse.launchbar.remote.core/.classpath7
-rw-r--r--launchbar/org.eclipse.launchbar.remote.core/.project34
-rw-r--r--launchbar/org.eclipse.launchbar.remote.core/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--launchbar/org.eclipse.launchbar.remote.core/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--launchbar/org.eclipse.launchbar.remote.core/.settings/org.eclipse.jdt.launching.prefs (renamed from releng/org.eclipse.cdt/.settings/org.eclipse.jdt.launching.prefs)0
-rw-r--r--launchbar/org.eclipse.launchbar.remote.core/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--launchbar/org.eclipse.launchbar.remote.core/.settings/org.eclipse.pde.api.tools.prefs (renamed from xlc/org.eclipse.cdt.managedbuilder.xlc.ui/.settings/org.eclipse.pde.api.tools.prefs)0
-rw-r--r--launchbar/org.eclipse.launchbar.remote.core/.settings/org.eclipse.pde.prefs (renamed from xlc/org.eclipse.cdt.make.xlc.core/.settings/org.eclipse.pde.prefs)0
-rw-r--r--launchbar/org.eclipse.launchbar.remote.core/META-INF/MANIFEST.MF17
-rw-r--r--launchbar/org.eclipse.launchbar.remote.core/about.html38
-rw-r--r--launchbar/org.eclipse.launchbar.remote.core/build.properties8
-rw-r--r--launchbar/org.eclipse.launchbar.remote.core/plugin.properties14
-rw-r--r--launchbar/org.eclipse.launchbar.remote.core/plugin.xml15
-rw-r--r--launchbar/org.eclipse.launchbar.remote.core/src/org/eclipse/launchbar/remote/core/RemoteLaunchTargetProvider.java108
-rw-r--r--launchbar/org.eclipse.launchbar.remote.core/src/org/eclipse/launchbar/remote/core/internal/Activator.java50
-rw-r--r--launchbar/org.eclipse.launchbar.remote.core/src/org/eclipse/launchbar/remote/core/internal/Messages.java26
-rw-r--r--launchbar/org.eclipse.launchbar.remote.core/src/org/eclipse/launchbar/remote/core/internal/RemoteTargetAdapterFactory.java41
-rw-r--r--launchbar/org.eclipse.launchbar.remote.core/src/org/eclipse/launchbar/remote/core/internal/messages.properties12
-rw-r--r--launchbar/org.eclipse.launchbar.remote.ui/.classpath7
-rw-r--r--launchbar/org.eclipse.launchbar.remote.ui/.project34
-rw-r--r--launchbar/org.eclipse.launchbar.remote.ui/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--launchbar/org.eclipse.launchbar.remote.ui/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--launchbar/org.eclipse.launchbar.remote.ui/.settings/org.eclipse.jdt.launching.prefs (renamed from releng/scripts/.settings/org.eclipse.jdt.launching.prefs)0
-rw-r--r--launchbar/org.eclipse.launchbar.remote.ui/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--launchbar/org.eclipse.launchbar.remote.ui/.settings/org.eclipse.pde.api.tools.prefs (renamed from xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/.settings/org.eclipse.pde.api.tools.prefs)0
-rw-r--r--launchbar/org.eclipse.launchbar.remote.ui/.settings/org.eclipse.pde.prefs (renamed from xlc/org.eclipse.cdt.managedbuilder.xlc.core/.settings/org.eclipse.pde.prefs)0
-rw-r--r--launchbar/org.eclipse.launchbar.remote.ui/META-INF/MANIFEST.MF19
-rw-r--r--launchbar/org.eclipse.launchbar.remote.ui/about.html38
-rw-r--r--launchbar/org.eclipse.launchbar.remote.ui/about.ini24
-rw-r--r--launchbar/org.eclipse.launchbar.remote.ui/about.mappings9
-rw-r--r--launchbar/org.eclipse.launchbar.remote.ui/about.properties32
-rw-r--r--launchbar/org.eclipse.launchbar.remote.ui/build.properties11
-rw-r--r--launchbar/org.eclipse.launchbar.remote.ui/cdt_logo_icon32.pngbin0 -> 1885 bytes
-rw-r--r--launchbar/org.eclipse.launchbar.remote.ui/plugin.properties14
-rw-r--r--launchbar/org.eclipse.launchbar.remote.ui/src/org/eclipse/launchbar/remote/ui/RemoteLaunchTargetLabelProvider.java51
-rw-r--r--launchbar/org.eclipse.launchbar.remote.ui/src/org/eclipse/launchbar/remote/ui/internal/Activator.java50
-rw-r--r--launchbar/org.eclipse.launchbar.remote/.project17
-rw-r--r--launchbar/org.eclipse.launchbar.remote/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--launchbar/org.eclipse.launchbar.remote/about.html38
-rw-r--r--launchbar/org.eclipse.launchbar.remote/build.properties3
-rw-r--r--launchbar/org.eclipse.launchbar.remote/feature.properties36
-rw-r--r--launchbar/org.eclipse.launchbar.remote/feature.xml47
-rw-r--r--launchbar/org.eclipse.launchbar.ui.controls/.classpath7
-rw-r--r--launchbar/org.eclipse.launchbar.ui.controls/.project34
-rw-r--r--launchbar/org.eclipse.launchbar.ui.controls/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--launchbar/org.eclipse.launchbar.ui.controls/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--launchbar/org.eclipse.launchbar.ui.controls/.settings/org.eclipse.jdt.launching.prefs (renamed from toolchains/arduino/org.eclipse.cdt.arduino.core.tests/.settings/org.eclipse.jdt.launching.prefs)0
-rw-r--r--launchbar/org.eclipse.launchbar.ui.controls/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--launchbar/org.eclipse.launchbar.ui.controls/.settings/org.eclipse.pde.api.tools.prefs184
-rw-r--r--launchbar/org.eclipse.launchbar.ui.controls/.settings/org.eclipse.pde.prefs (renamed from xlc/org.eclipse.cdt.managedbuilder.xlc.ui/.settings/org.eclipse.pde.prefs)0
-rw-r--r--launchbar/org.eclipse.launchbar.ui.controls/META-INF/MANIFEST.MF25
-rw-r--r--launchbar/org.eclipse.launchbar.ui.controls/about.html38
-rw-r--r--launchbar/org.eclipse.launchbar.ui.controls/build.properties (renamed from build/org.eclipse.cdt.cmake.ui/build.properties)0
-rw-r--r--launchbar/org.eclipse.launchbar.ui.controls/icons/bgButton.pngbin0 -> 1163 bytes
-rw-r--r--launchbar/org.eclipse.launchbar.ui.controls/icons/build.pngbin0 -> 625 bytes
-rw-r--r--launchbar/org.eclipse.launchbar.ui.controls/icons/build2_24.pngbin0 -> 1341 bytes
-rw-r--r--launchbar/org.eclipse.launchbar.ui.controls/icons/build2_hot_24.pngbin0 -> 1349 bytes
-rw-r--r--launchbar/org.eclipse.launchbar.ui.controls/icons/build_16.pngbin0 -> 3539 bytes
-rw-r--r--launchbar/org.eclipse.launchbar.ui.controls/icons/config_config.pngbin0 -> 1441 bytes
-rw-r--r--launchbar/org.eclipse.launchbar.ui.controls/icons/connected.pngbin0 -> 266 bytes
-rw-r--r--launchbar/org.eclipse.launchbar.ui.controls/icons/disconnected.pngbin0 -> 239 bytes
-rw-r--r--launchbar/org.eclipse.launchbar.ui.controls/icons/edit_cold.pngbin0 -> 574 bytes
-rw-r--r--launchbar/org.eclipse.launchbar.ui.controls/icons/icon_debug_32x32.pngbin0 -> 620 bytes
-rw-r--r--launchbar/org.eclipse.launchbar.ui.controls/icons/icon_profile_32x32.pngbin0 -> 2019 bytes
-rw-r--r--launchbar/org.eclipse.launchbar.ui.controls/icons/icon_run_32x32.pngbin0 -> 466 bytes
-rw-r--r--launchbar/org.eclipse.launchbar.ui.controls/icons/launch.pngbin0 -> 466 bytes
-rw-r--r--launchbar/org.eclipse.launchbar.ui.controls/icons/launch2_24.pngbin0 -> 1330 bytes
-rw-r--r--launchbar/org.eclipse.launchbar.ui.controls/icons/launch2_hot_24.pngbin0 -> 1328 bytes
-rw-r--r--launchbar/org.eclipse.launchbar.ui.controls/icons/launch_16.pngbin0 -> 620 bytes
-rw-r--r--launchbar/org.eclipse.launchbar.ui.controls/icons/launch_base_blank.pngbin0 -> 323 bytes
-rw-r--r--launchbar/org.eclipse.launchbar.ui.controls/icons/stop.pngbin0 -> 358 bytes
-rw-r--r--launchbar/org.eclipse.launchbar.ui.controls/icons/stop2_24.pngbin0 -> 1229 bytes
-rw-r--r--launchbar/org.eclipse.launchbar.ui.controls/icons/stop2_hot_24.pngbin0 -> 1229 bytes
-rw-r--r--launchbar/org.eclipse.launchbar.ui.controls/icons/stop_16.pngbin0 -> 330 bytes
-rw-r--r--launchbar/org.eclipse.launchbar.ui.controls/plugin.properties6
-rw-r--r--launchbar/org.eclipse.launchbar.ui.controls/plugin.xml38
-rw-r--r--launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/Activator.java89
-rw-r--r--launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/CButton.java137
-rw-r--r--launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/CSelector.java522
-rw-r--r--launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/ConfigSelector.java232
-rw-r--r--launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/EditButton.java27
-rw-r--r--launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/FilterControl.java460
-rw-r--r--launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/LaunchBarButtonImageDescriptor.java54
-rw-r--r--launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/LaunchBarControl.java250
-rw-r--r--launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/LaunchBarInjector.java138
-rw-r--r--launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/LaunchBarListViewer.java641
-rw-r--r--launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/LaunchBarPreferenceInitializer.java32
-rw-r--r--launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/LaunchBarPreferencePage.java45
-rw-r--r--launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/LaunchBarWidgetIds.java23
-rw-r--r--launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/Messages.java59
-rw-r--r--launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/ModeSelector.java251
-rw-r--r--launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/OpenLaunchSelector.java46
-rw-r--r--launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/TargetSelector.java265
-rw-r--r--launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/Transition.java59
-rw-r--r--launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/messages.properties39
-rw-r--r--launchbar/org.eclipse.launchbar.ui.tests/.classpath11
-rw-r--r--launchbar/org.eclipse.launchbar.ui.tests/.project28
-rw-r--r--launchbar/org.eclipse.launchbar.ui.tests/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--launchbar/org.eclipse.launchbar.ui.tests/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--launchbar/org.eclipse.launchbar.ui.tests/.settings/org.eclipse.jdt.launching.prefs (renamed from toolchains/arduino/org.eclipse.cdt.arduino.core/.settings/org.eclipse.jdt.launching.prefs)0
-rw-r--r--launchbar/org.eclipse.launchbar.ui.tests/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--launchbar/org.eclipse.launchbar.ui.tests/.settings/org.eclipse.pde.api.tools.prefs184
-rw-r--r--launchbar/org.eclipse.launchbar.ui.tests/.settings/org.eclipse.pde.prefs35
-rw-r--r--launchbar/org.eclipse.launchbar.ui.tests/META-INF/MANIFEST.MF17
-rw-r--r--launchbar/org.eclipse.launchbar.ui.tests/about.html38
-rw-r--r--launchbar/org.eclipse.launchbar.ui.tests/build.properties8
-rw-r--r--launchbar/org.eclipse.launchbar.ui.tests/plugin.properties14
-rw-r--r--launchbar/org.eclipse.launchbar.ui.tests/plugin.xml17
-rw-r--r--launchbar/org.eclipse.launchbar.ui.tests/pom.xml44
-rw-r--r--launchbar/org.eclipse.launchbar.ui.tests/src/org/eclipse/launchbar/ui/tests/SWTBotCSelector.java63
-rw-r--r--launchbar/org.eclipse.launchbar.ui.tests/src/org/eclipse/launchbar/ui/tests/SWTBotConfigSelector.java110
-rw-r--r--launchbar/org.eclipse.launchbar.ui.tests/src/org/eclipse/launchbar/ui/tests/internal/CreateLaunchConfigTests.java142
-rw-r--r--launchbar/org.eclipse.launchbar.ui.tests/src/org/eclipse/launchbar/ui/tests/internal/CustomLaunchConfigTab.java59
-rw-r--r--launchbar/org.eclipse.launchbar.ui.tests/swtbot-test-plugin.properties1
-rw-r--r--launchbar/org.eclipse.launchbar.ui/.classpath7
-rw-r--r--launchbar/org.eclipse.launchbar.ui/.gitignore1
-rw-r--r--launchbar/org.eclipse.launchbar.ui/.options2
-rw-r--r--launchbar/org.eclipse.launchbar.ui/.project34
-rw-r--r--launchbar/org.eclipse.launchbar.ui/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--launchbar/org.eclipse.launchbar.ui/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--launchbar/org.eclipse.launchbar.ui/.settings/org.eclipse.jdt.launching.prefs (renamed from toolchains/arduino/org.eclipse.cdt.arduino.ui/.settings/org.eclipse.jdt.launching.prefs)0
-rw-r--r--launchbar/org.eclipse.launchbar.ui/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--launchbar/org.eclipse.launchbar.ui/.settings/org.eclipse.pde.api.tools.prefs184
-rw-r--r--launchbar/org.eclipse.launchbar.ui/.settings/org.eclipse.pde.prefs (renamed from xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/.settings/org.eclipse.pde.prefs)0
-rw-r--r--launchbar/org.eclipse.launchbar.ui/META-INF/MANIFEST.MF21
-rw-r--r--launchbar/org.eclipse.launchbar.ui/about.html38
-rw-r--r--launchbar/org.eclipse.launchbar.ui/about.ini24
-rw-r--r--launchbar/org.eclipse.launchbar.ui/about.mappings9
-rw-r--r--launchbar/org.eclipse.launchbar.ui/about.properties32
-rw-r--r--launchbar/org.eclipse.launchbar.ui/build.properties15
-rw-r--r--launchbar/org.eclipse.launchbar.ui/cdt_logo_icon32.pngbin0 -> 1885 bytes
-rw-r--r--launchbar/org.eclipse.launchbar.ui/icons/localTarget.pngbin0 -> 452 bytes
-rw-r--r--launchbar/org.eclipse.launchbar.ui/plugin.properties6
-rw-r--r--launchbar/org.eclipse.launchbar.ui/plugin.xml63
-rw-r--r--launchbar/org.eclipse.launchbar.ui/schema/launchBarUIContributions.exsd178
-rw-r--r--launchbar/org.eclipse.launchbar.ui/schema/launchTargetTypeUI.exsd273
-rw-r--r--launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/DefaultDescriptorLabelProvider.java73
-rw-r--r--launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/ILaunchBarLaunchConfigDialog.java32
-rw-r--r--launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/ILaunchBarUIConstants.java31
-rw-r--r--launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/ILaunchBarUIManager.java24
-rw-r--r--launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/NewLaunchConfigWizard.java127
-rw-r--r--launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/NewLaunchConfigWizardDialog.java69
-rw-r--r--launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/Activator.java110
-rw-r--r--launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/LaunchBarLaunchConfigDialog.java515
-rw-r--r--launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/LaunchBarUIManager.java232
-rw-r--r--launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/Messages.java87
-rw-r--r--launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/commands/BuildActiveCommandHandler.java220
-rw-r--r--launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/commands/ConfigureActiveLaunchHandler.java36
-rw-r--r--launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/commands/LaunchActiveCommandHandler.java55
-rw-r--r--launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/commands/StopActiveCommandHandler.java107
-rw-r--r--launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/dialogs/NewLaunchConfigEditPage.java223
-rw-r--r--launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/dialogs/NewLaunchConfigModePage.java118
-rw-r--r--launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/dialogs/NewLaunchConfigTypePage.java97
-rw-r--r--launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/dialogs/NewLaunchConfigTypePage2.java199
-rw-r--r--launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/messages.properties66
-rw-r--r--launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/target/LaunchTargetUIManager.java162
-rw-r--r--launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/target/LaunchTargetWizardDialog.java47
-rw-r--r--launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/target/NewLaunchTargetWizard.java53
-rw-r--r--launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/target/NewLaunchTargetWizardSelectionPage.java166
-rw-r--r--launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/target/ILaunchTargetUIManager.java46
-rw-r--r--launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/target/LaunchTargetWizard.java36
-rw-r--r--launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/target/NewLaunchTargetWizardAction.java30
-rw-r--r--launchbar/org.eclipse.launchbar/.project17
-rw-r--r--launchbar/org.eclipse.launchbar/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--launchbar/org.eclipse.launchbar/about.html38
-rw-r--r--launchbar/org.eclipse.launchbar/build.properties15
-rw-r--r--launchbar/org.eclipse.launchbar/feature.properties36
-rw-r--r--launchbar/org.eclipse.launchbar/feature.xml54
-rw-r--r--launchbar/pom.xml25
-rw-r--r--llvm/org.eclipse.cdt.llvm.dsf.lldb-feature/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--llvm/org.eclipse.cdt.llvm.dsf.lldb-feature/feature.xml13
-rw-r--r--llvm/org.eclipse.cdt.llvm.dsf.lldb.core/.classpath2
-rw-r--r--llvm/org.eclipse.cdt.llvm.dsf.lldb.core/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--llvm/org.eclipse.cdt.llvm.dsf.lldb.core/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--llvm/org.eclipse.cdt.llvm.dsf.lldb.core/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--llvm/org.eclipse.cdt.llvm.dsf.lldb.core/META-INF/MANIFEST.MF4
-rw-r--r--llvm/org.eclipse.cdt.llvm.dsf.lldb.core/about.html14
-rw-r--r--llvm/org.eclipse.cdt.llvm.dsf.lldb.core/src/org/eclipse/cdt/llvm/dsf/lldb/core/internal/launching/LLDBLaunch.java99
-rw-r--r--llvm/org.eclipse.cdt.llvm.dsf.lldb.core/src/org/eclipse/cdt/llvm/dsf/lldb/core/internal/launching/LLDBLaunchDelegate.java18
-rw-r--r--llvm/org.eclipse.cdt.llvm.dsf.lldb.core/src/org/eclipse/cdt/llvm/dsf/lldb/core/internal/launching/Messages.java2
-rw-r--r--llvm/org.eclipse.cdt.llvm.dsf.lldb.core/src/org/eclipse/cdt/llvm/dsf/lldb/core/internal/launching/messages.properties2
-rw-r--r--llvm/org.eclipse.cdt.llvm.dsf.lldb.ui/.classpath4
-rw-r--r--llvm/org.eclipse.cdt.llvm.dsf.lldb.ui/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--llvm/org.eclipse.cdt.llvm.dsf.lldb.ui/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--llvm/org.eclipse.cdt.llvm.dsf.lldb.ui/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--llvm/org.eclipse.cdt.llvm.dsf.lldb.ui/META-INF/MANIFEST.MF4
-rw-r--r--llvm/org.eclipse.cdt.llvm.dsf.lldb.ui/about.html14
-rw-r--r--llvm/org.eclipse.cdt.llvm.dsf.lldb.ui/about.ini24
-rw-r--r--llvm/org.eclipse.cdt.llvm.dsf.lldb.ui/about.mappings9
-rw-r--r--llvm/org.eclipse.cdt.llvm.dsf.lldb.ui/about.properties32
-rw-r--r--llvm/org.eclipse.cdt.llvm.dsf.lldb.ui/build.properties6
-rw-r--r--llvm/org.eclipse.cdt.llvm.dsf.lldb.ui/cdt_logo_icon32.pngbin0 -> 1885 bytes
-rw-r--r--llvm/org.eclipse.cdt.managedbuilder.llvm-feature/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--llvm/org.eclipse.cdt.managedbuilder.llvm-feature/feature.xml12
-rw-r--r--llvm/org.eclipse.cdt.managedbuilder.llvm.tests/.classpath9
-rw-r--r--llvm/org.eclipse.cdt.managedbuilder.llvm.tests/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--llvm/org.eclipse.cdt.managedbuilder.llvm.tests/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--llvm/org.eclipse.cdt.managedbuilder.llvm.tests/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--llvm/org.eclipse.cdt.managedbuilder.llvm.tests/META-INF/MANIFEST.MF2
-rw-r--r--llvm/org.eclipse.cdt.managedbuilder.llvm.tests/about.html14
-rw-r--r--[-rwxr-xr-x]llvm/org.eclipse.cdt.managedbuilder.llvm.ui/.classpath2
-rw-r--r--[-rwxr-xr-x]llvm/org.eclipse.cdt.managedbuilder.llvm.ui/.euml20
-rw-r--r--[-rwxr-xr-x]llvm/org.eclipse.cdt.managedbuilder.llvm.ui/.project0
-rw-r--r--[-rwxr-xr-x]llvm/org.eclipse.cdt.managedbuilder.llvm.ui/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--llvm/org.eclipse.cdt.managedbuilder.llvm.ui/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--[-rwxr-xr-x]llvm/org.eclipse.cdt.managedbuilder.llvm.ui/.umlproject0
-rw-r--r--[-rwxr-xr-x]llvm/org.eclipse.cdt.managedbuilder.llvm.ui/META-INF/MANIFEST.MF4
-rw-r--r--[-rwxr-xr-x]llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/llvm.ui.preferences_package_class_dependencies.ucd0
-rw-r--r--[-rwxr-xr-x]llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/llvm.util_package_dependencies.ucd0
-rw-r--r--[-rwxr-xr-x]llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/llvm_package_dependencies.ucd0
-rw-r--r--[-rwxr-xr-x]llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/llvm_packages_with_eclipse_package_dependencies.ucd0
-rw-r--r--[-rwxr-xr-x]llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/llvm_project_dependencies.ucd0
-rw-r--r--[-rwxr-xr-x]llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/llvm_project_dependencies_low_level_with_class_dependencies.ucd0
-rw-r--r--[-rwxr-xr-x]llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/other/Toolchain Inheritance Schema.diabin1903 -> 1903 bytes
-rw-r--r--[-rwxr-xr-x]llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/other/Toolchain Inheritance Schema.pngbin14112 -> 14112 bytes
-rw-r--r--[-rwxr-xr-x]llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/other/buildDefinitions Schema.diabin4174 -> 4174 bytes
-rw-r--r--[-rwxr-xr-x]llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/other/buildDefinitions Schema.pngbin45523 -> 45523 bytes
-rw-r--r--[-rwxr-xr-x]llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/other/llvm.diabin3261 -> 3261 bytes
-rw-r--r--[-rwxr-xr-x]llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/other/llvm.pngbin22568 -> 22568 bytes
-rw-r--r--[-rwxr-xr-x]llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/preferences_package_class_inheritance.ucd0
-rw-r--r--[-rwxr-xr-x]llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/readme.txt0
-rw-r--r--llvm/org.eclipse.cdt.managedbuilder.llvm.ui/about.html14
-rw-r--r--llvm/org.eclipse.cdt.managedbuilder.llvm.ui/about.mappings6
-rw-r--r--llvm/org.eclipse.cdt.managedbuilder.llvm.ui/about.properties25
-rw-r--r--[-rwxr-xr-x]llvm/org.eclipse.cdt.managedbuilder.llvm.ui/build.properties0
-rw-r--r--[-rwxr-xr-x]llvm/org.eclipse.cdt.managedbuilder.llvm.ui/help/general.html0
-rw-r--r--[-rwxr-xr-x]llvm/org.eclipse.cdt.managedbuilder.llvm.ui/help/initial_configuration.html0
-rw-r--r--[-rwxr-xr-x]llvm/org.eclipse.cdt.managedbuilder.llvm.ui/help/llvm_specific.html0
-rw-r--r--[-rwxr-xr-x]llvm/org.eclipse.cdt.managedbuilder.llvm.ui/help/toc.xml0
-rw-r--r--[-rwxr-xr-x]llvm/org.eclipse.cdt.managedbuilder.llvm.ui/help/user_manual.html0
-rw-r--r--[-rwxr-xr-x]llvm/org.eclipse.cdt.managedbuilder.llvm.ui/patches/CDT_Bug_321040.patch0
-rw-r--r--[-rwxr-xr-x]llvm/org.eclipse.cdt.managedbuilder.llvm.ui/patches/MinGW_export_fix.patch0
-rw-r--r--[-rwxr-xr-x]llvm/org.eclipse.cdt.managedbuilder.llvm.ui/patches/readme.txt0
-rw-r--r--[-rwxr-xr-x]llvm/org.eclipse.cdt.managedbuilder.llvm.ui/patches/stack_overflow_fix_bug_317004.patch0
-rw-r--r--[-rwxr-xr-x]llvm/org.eclipse.cdt.managedbuilder.llvm.ui/plugin.properties12
-rw-r--r--[-rwxr-xr-x]llvm/org.eclipse.cdt.managedbuilder.llvm.ui/plugin.xml105
-rwxr-xr-x[-rw-r--r--]llvm/org.eclipse.cdt.managedbuilder.llvm.ui/scripts/find_path.bat0
-rwxr-xr-x[-rw-r--r--]llvm/org.eclipse.cdt.managedbuilder.llvm.ui/scripts/stdlib_path.sh0
-rw-r--r--[-rwxr-xr-x]llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/makegen/LlvmDependencyCalculator2.java0
-rw-r--r--[-rwxr-xr-x]llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/makegen/LlvmDependencyCalculator2Commands.java0
-rw-r--r--[-rwxr-xr-x]llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/LlvmBuildEnvironmentVariable.java0
-rw-r--r--[-rwxr-xr-x]llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/LlvmEnvironmentVariableSupplier.java0
-rw-r--r--[-rwxr-xr-x]llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/LlvmIsToolChainSupported.java0
-rw-r--r--[-rwxr-xr-x]llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/LlvmProjectNature.java0
-rw-r--r--[-rwxr-xr-x]llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/LlvmUIPlugin.java11
-rw-r--r--[-rwxr-xr-x]llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/preferences/IncludePathListEditor.java0
-rw-r--r--[-rwxr-xr-x]llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/preferences/LibraryListEditor.java0
-rw-r--r--[-rwxr-xr-x]llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/preferences/LibraryPathListEditor.java0
-rw-r--r--[-rwxr-xr-x]llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/preferences/LlvmListEditor.java0
-rwxr-xr-xllvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/preferences/LlvmPreferencePage.java97
-rw-r--r--[-rwxr-xr-x]llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/preferences/LlvmPreferenceStore.java0
-rw-r--r--[-rwxr-xr-x]llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/preferences/PreferenceConstants.java0
-rw-r--r--[-rwxr-xr-x]llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/preferences/PreferenceInitializer.java0
-rw-r--r--llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/util/LlvmResourceListener.java79
-rw-r--r--[-rwxr-xr-x]llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/util/LlvmToolOptionPathUtil.java0
-rw-r--r--[-rwxr-xr-x]llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/util/Separators.java0
-rw-r--r--llvm/pom.xml12
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.feature/.project17
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.feature/build.properties15
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.feature/feature.properties36
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.feature/feature.xml37
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.feature/sourceTemplateFeature/p2.inf1
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.sdk.feature/.project17
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.sdk.feature/build.properties17
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.sdk.feature/feature-no-source.properties1
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.sdk.feature/feature.properties36
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.sdk.feature/feature.xml31
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.tests/.classpath7
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.tests/.project28
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.tests/.settings/org.eclipse.jdt.core.prefs464
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.tests/.settings/org.eclipse.jdt.ui.prefs133
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.tests/META-INF/MANIFEST.MF16
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.tests/about.html36
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.tests/build.properties20
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.tests/plugin.properties18
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/AbstractLRHangingTest.java119
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/AutomatedIntegrationSuite.java65
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCPPImplicitNameTests.java62
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCPPSpecTest.java144
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCPPTests.java331
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCSpecTests.java100
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCommentTests.java77
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCompleteParser2Tests.java154
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCompletionBasicTest.java126
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCompletionHangingTest.java102
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCompletionParseTest.java347
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRDOMLocationMacroTests.java71
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRDOMLocationTests.java103
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRDOMPreprocessorInformationTest.java51
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRDigraphTrigraphTests.java174
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRGCCCompleteParseExtensionsTest.java63
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRGCCTests.java58
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRImageLocationTests.java60
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRInactiveCodeTests.java57
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRKnRTests.java91
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRNodeSelectorTest.java69
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRQuickParser2Tests.java184
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRSelectionParseTest.java106
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRSemanticsTests.java59
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRTaskParserTest.java58
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRTemplateTests.java212
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRTests.java253
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRUtilOldTests.java58
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRUtilTests.java59
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/ParseHelper.java289
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/.classpath8
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/.project34
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/.settings/org.eclipse.jdt.core.prefs464
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/.settings/org.eclipse.jdt.ui.prefs133
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/META-INF/MANIFEST.MF29
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/about.html36
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/about.mappings9
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/about.properties28
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/build.properties25
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/grammar/build.xml146
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/grammar/c99/C99ExpressionParser.g40
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/grammar/c99/C99Grammar.g1006
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/grammar/c99/C99NoCastExpressionParser.g42
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/grammar/c99/C99Parser.g27
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/grammar/c99/C99SizeofExpressionParser.g43
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/grammar/cpp/CPPExpressionParser.g39
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/grammar/cpp/CPPGrammar.g1832
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/grammar/cpp/CPPNoCastExpressionParser.g42
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/grammar/cpp/CPPNoFunctionDeclaratorParser.g49
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/grammar/cpp/CPPParser.g28
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/grammar/cpp/CPPSizeofExpressionParser.g46
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/grammar/cpp/CPPTemplateTypeParameterParser.g59
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/grammar/gcc/GCCGrammar.g114
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/grammar/gcc/GCCParser.g28
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/grammar/gcc/GCCSizeofExpressionParser.g45
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/grammar/generate.xml95
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/grammar/gnu/GNUExtensions.g207
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/grammar/gpp/GPPGrammar.g131
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/grammar/gpp/GPPParser.g28
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/grammar/gpp/GPPSizeofExpressionParser.g48
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/grammar/parserBuild.properties17
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/grammar/template/LRParserTemplate.g417
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/grammar/template/LRSecondaryParserTemplate.g68
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/action/deprecated/C99ResolveParserAction.java1625
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/action/deprecated/C99TypedefTrackerParserAction.java368
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/action/deprecated/DeclSpec.java185
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/action/deprecated/DeclaratorFrame.java147
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99ArrayType.java139
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99BasicType.java153
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99CompositeTypeScope.java39
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Enumeration.java135
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Enumerator.java89
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Field.java45
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Function.java184
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99FunctionScope.java48
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99FunctionType.java73
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Label.java80
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Parameter.java36
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99PointerType.java100
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99ProblemBinding.java34
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99QualifierType.java109
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Scope.java134
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Structure.java172
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Typedef.java120
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Variable.java137
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/IC99Binding.java22
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/IC99Scope.java33
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/ITypeable.java20
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/symboltable/C99SymbolTable.java113
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/symboltable/CImperativeSymbolTable.java149
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/symboltable/CNamespace.java32
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/symboltable/FunctionalMap.java279
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/symboltable/SymbolTableTests.java220
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/symboltable/TypedefSymbolTable.java69
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/plugin.properties21
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/plugin.xml31
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/BaseExtensibleLanguage.java482
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/CPreprocessorAdapter.java110
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/IDOMTokenMap.java42
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/IParser.java43
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/ISecondaryParser.java39
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/ITokenCollector.java38
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/LPGTokenAdapter.java144
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/LRParserPlugin.java92
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/LRParserProperties.java45
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/ScannerExtensionConfiguration.java51
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/ASTCompletionNode.java120
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/AbstractParserAction.java213
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/BuildASTParserAction.java1026
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/ISecondaryParserFactory.java47
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/ITokenMap.java30
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/ITokenStream.java70
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/ParserUtil.java107
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/ScopedStack.java206
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/TokenMap.java83
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/c99/C99BuildASTParserAction.java768
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/c99/C99SecondaryParserFactory.java50
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/cpp/CPPBuildASTParserAction.java1908
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/cpp/CPPSecondaryParserFactory.java66
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/cpp/ICPPSecondaryParserFactory.java36
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/gnu/GCCBuildASTParserAction.java90
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/gnu/GCCSecondaryParserFactory.java50
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/gnu/GNUBuildASTParserAction.java97
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/gnu/GPPBuildASTParserAction.java195
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/gnu/GPPSecondaryParserFactory.java67
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/c99/C99Language.java75
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/c99/DOMToC99TokenMap.java441
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/cpp/DOMToISOCPPTokenMap.java562
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/cpp/ISOCPPLanguage.java74
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/gnu/DOMToGCCTokenMap.java466
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/gnu/DOMToGPPTokenMap.java597
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/gnu/GCCLanguage.java73
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/gnu/GPPLanguage.java74
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/lpgextensions/AbstractTrialUndoActionProvider.java211
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/lpgextensions/FixedBacktrackingParser.java614
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/lpgextensions/ITrialUndoActionProvider.java46
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/lpgextensions/ParserState.java144
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/lpgextensions/Rule.java57
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/lpgextensions/TrialUndoParser.java671
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/lpgextensions/TrialUndoParserTemplate.g305
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99ExpressionParser.java1682
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99ExpressionParserprs.java706
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99ExpressionParsersym.java50
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99NoCastExpressionParser.java1675
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99NoCastExpressionParserprs.java700
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99NoCastExpressionParsersym.java50
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99Parser.java1654
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99Parserprs.java843
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99Parsersym.java50
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99SizeofExpressionParser.java1675
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99SizeofExpressionParserprs.java702
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99SizeofExpressionParsersym.java50
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPExpressionParser.java2864
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPExpressionParserprs.java1555
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPExpressionParsersym.java58
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoCastExpressionParser.java2859
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoCastExpressionParserprs.java1551
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoCastExpressionParsersym.java58
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoFunctionDeclaratorParser.java2859
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoFunctionDeclaratorParserprs.java1546
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoFunctionDeclaratorParsersym.java58
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPParser.java2829
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPParserAction.java22
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPParserprs.java1556
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPParsersym.java58
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPRules.java647
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPSizeofExpressionParser.java2850
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPSizeofExpressionParserprs.java1555
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPSizeofExpressionParsersym.java58
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPTemplateTypeParameterParser.java2867
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPTemplateTypeParameterParserprs.java1558
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPTemplateTypeParameterParsersym.java58
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gcc/GCCParser.java1812
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gcc/GCCParserprs.java1035
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gcc/GCCParsersym.java51
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gcc/GCCSizeofExpressionParser.java1818
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gcc/GCCSizeofExpressionParserprs.java989
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gcc/GCCSizeofExpressionParsersym.java51
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gpp/GPPParser.java3014
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gpp/GPPParserprs.java1889
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gpp/GPPParsersym.java60
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gpp/GPPSizeofExpressionParser.java3019
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gpp/GPPSizeofExpressionParserprs.java1850
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gpp/GPPSizeofExpressionParsersym.java60
-rw-r--r--lrparser/pom.xml15
-rw-r--r--lsp/org.eclipse.cdt.lsp-feature/build.properties14
-rw-r--r--lsp/org.eclipse.cdt.lsp-feature/feature.properties23
-rw-r--r--lsp/org.eclipse.cdt.lsp-feature/feature.xml24
-rw-r--r--lsp/org.eclipse.cdt.lsp.clangd/.classpath7
-rw-r--r--lsp/org.eclipse.cdt.lsp.clangd/.project39
-rw-r--r--lsp/org.eclipse.cdt.lsp.clangd/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--lsp/org.eclipse.cdt.lsp.clangd/.settings/org.eclipse.core.runtime.prefs2
-rw-r--r--lsp/org.eclipse.cdt.lsp.clangd/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--lsp/org.eclipse.cdt.lsp.clangd/.settings/org.eclipse.jdt.launching.prefs (renamed from upc/org.eclipse.cdt.core.parser.upc.tests/.settings/org.eclipse.jdt.launching.prefs)0
-rw-r--r--lsp/org.eclipse.cdt.lsp.clangd/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--lsp/org.eclipse.cdt.lsp.clangd/.settings/org.eclipse.pde.api.tools.prefs184
-rw-r--r--lsp/org.eclipse.cdt.lsp.clangd/.settings/org.eclipse.pde.ds.annotations.prefs8
-rw-r--r--lsp/org.eclipse.cdt.lsp.clangd/.settings/org.eclipse.pde.prefs35
-rw-r--r--lsp/org.eclipse.cdt.lsp.clangd/META-INF/MANIFEST.MF13
-rw-r--r--lsp/org.eclipse.cdt.lsp.clangd/OSGI-INF/l10n/bundle.properties13
-rw-r--r--lsp/org.eclipse.cdt.lsp.clangd/OSGI-INF/org.eclipse.cdt.lsp.internal.clangd.ClangdLanguageServer.xml7
-rw-r--r--lsp/org.eclipse.cdt.lsp.clangd/about.html38
-rw-r--r--lsp/org.eclipse.cdt.lsp.clangd/build.properties17
-rw-r--r--lsp/org.eclipse.cdt.lsp.clangd/src/org/eclipse/cdt/lsp/internal/clangd/ClangdLanguageServer.java37
-rw-r--r--lsp/org.eclipse.cdt.lsp.clangd/src/org/eclipse/cdt/lsp/internal/clangd/ClangdMessages.java31
-rw-r--r--lsp/org.eclipse.cdt.lsp.clangd/src/org/eclipse/cdt/lsp/internal/clangd/ClangdMessages.properties14
-rw-r--r--lsp/org.eclipse.cdt.lsp.core.tests/.classpath10
-rw-r--r--lsp/org.eclipse.cdt.lsp.core.tests/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--lsp/org.eclipse.cdt.lsp.core.tests/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--lsp/org.eclipse.cdt.lsp.core.tests/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--lsp/org.eclipse.cdt.lsp.core.tests/META-INF/MANIFEST.MF18
-rw-r--r--lsp/org.eclipse.cdt.lsp.core.tests/OSGI-INF/l10n/bundle.properties13
-rw-r--r--lsp/org.eclipse.cdt.lsp.core.tests/about.html38
-rw-r--r--lsp/org.eclipse.cdt.lsp.core.tests/build.properties17
-rw-r--r--lsp/org.eclipse.cdt.lsp.core.tests/pom.xml14
-rw-r--r--lsp/org.eclipse.cdt.lsp.core.tests/src/org/eclipse/cdt/lsp/internal/core/tests/ContributedProtocolExtensionsTest.java55
-rw-r--r--lsp/org.eclipse.cdt.lsp.core.tests/src/org/eclipse/cdt/lsp/internal/core/tests/FakeProtocolExtension.java31
-rw-r--r--lsp/org.eclipse.cdt.lsp.core.tests/src/org/eclipse/cdt/lsp/internal/core/tests/FakeServerConfiguration.java43
-rw-r--r--lsp/org.eclipse.cdt.lsp.core.tests/src/org/eclipse/cdt/lsp/internal/core/tests/ShowStatusTest.java41
-rw-r--r--lsp/org.eclipse.cdt.lsp.core.tests/src/org/eclipse/cdt/lsp/internal/core/workspace/tests/ResolveDocumentUriTest.java53
-rw-r--r--lsp/org.eclipse.cdt.lsp.core/.classpath2
-rw-r--r--lsp/org.eclipse.cdt.lsp.core/.project11
-rw-r--r--lsp/org.eclipse.cdt.lsp.core/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--lsp/org.eclipse.cdt.lsp.core/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--lsp/org.eclipse.cdt.lsp.core/.settings/org.eclipse.pde.ds.annotations.prefs8
-rw-r--r--lsp/org.eclipse.cdt.lsp.core/META-INF/MANIFEST.MF42
-rw-r--r--lsp/org.eclipse.cdt.lsp.core/OSGI-INF/l10n/bundle.properties17
-rw-r--r--lsp/org.eclipse.cdt.lsp.core/OSGI-INF/org.eclipse.cdt.lsp.internal.core.ContributedLanguageServers.xml8
-rw-r--r--lsp/org.eclipse.cdt.lsp.core/OSGI-INF/org.eclipse.cdt.lsp.internal.core.ContributedProtocolExtensions.xml8
-rw-r--r--lsp/org.eclipse.cdt.lsp.core/about.html38
-rw-r--r--lsp/org.eclipse.cdt.lsp.core/build.properties19
-rw-r--r--lsp/org.eclipse.cdt.lsp.core/plugin.xml75
-rw-r--r--lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/LanguageProtocolExtension.java34
-rw-r--r--lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/LanguageServerConfiguration.java31
-rw-r--r--lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/SupportedLanguageServers.java29
-rw-r--r--lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/SupportedProtocolExtensions.java29
-rw-r--r--lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/Activator.java31
-rw-r--r--lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/CPPLanguageServerPreferencePage.java73
-rw-r--r--lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/CPPResourceChangeListener.java20
-rw-r--r--lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/CPPStreamConnectionProvider.java57
-rw-r--r--lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/ClangdLanguageServer.java23
-rw-r--r--lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/CqueryLanguageServer.java43
-rw-r--r--lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/ICPPLanguageServer.java23
-rw-r--r--lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/Messages.java27
-rw-r--r--lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/Messages.properties17
-rw-r--r--lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/PreferenceInitializer.java12
-rw-r--r--lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/Server2ClientProtocolExtension.java246
-rw-r--r--lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/cquery/CquerySymbolKind.java43
-rw-r--r--lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/cquery/HighlightSymbol.java118
-rw-r--r--lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/cquery/StorageClass.java34
-rw-r--r--lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/cquery/SymbolRole.java27
-rw-r--r--lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/preferences/LanguageServerPreferenceMetadata.java33
-rw-r--r--lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/internal/core/ContributedLanguageServers.java75
-rw-r--r--lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/internal/core/ContributedProtocolExtensions.java74
-rw-r--r--lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/internal/core/DelegatingLauncherBuilder.java55
-rw-r--r--lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/internal/core/LspCoreMessages.java33
-rw-r--r--lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/internal/core/LspCoreMessages.properties17
-rw-r--r--lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/internal/core/ResolvePreferredServer.java31
-rw-r--r--lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/internal/core/ShowStatus.java42
-rw-r--r--lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/internal/core/UndefinedLanguageServer.java37
-rw-r--r--lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/internal/core/preferences/LanguageServerDefaults.java29
-rw-r--r--lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/internal/core/workspace/PreferLanguageServer.java62
-rw-r--r--lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/internal/core/workspace/ResolveDocumentBuffer.java30
-rw-r--r--lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/internal/core/workspace/ResolveDocumentFile.java40
-rw-r--r--lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/internal/core/workspace/ResolveDocumentPath.java36
-rw-r--r--lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/internal/core/workspace/ResolveDocumentUri.java40
-rw-r--r--lsp/org.eclipse.cdt.lsp.cquery.tests/.classpath11
-rw-r--r--lsp/org.eclipse.cdt.lsp.cquery.tests/.project28
-rw-r--r--lsp/org.eclipse.cdt.lsp.cquery.tests/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--lsp/org.eclipse.cdt.lsp.cquery.tests/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--lsp/org.eclipse.cdt.lsp.cquery.tests/.settings/org.eclipse.jdt.launching.prefs (renamed from upc/org.eclipse.cdt.core.parser.upc/.settings/org.eclipse.jdt.launching.prefs)0
-rw-r--r--lsp/org.eclipse.cdt.lsp.cquery.tests/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--lsp/org.eclipse.cdt.lsp.cquery.tests/.settings/org.eclipse.pde.api.tools.prefs184
-rw-r--r--lsp/org.eclipse.cdt.lsp.cquery.tests/.settings/org.eclipse.pde.prefs35
-rw-r--r--lsp/org.eclipse.cdt.lsp.cquery.tests/META-INF/MANIFEST.MF13
-rw-r--r--lsp/org.eclipse.cdt.lsp.cquery.tests/OSGI-INF/l10n/bundle.properties13
-rw-r--r--lsp/org.eclipse.cdt.lsp.cquery.tests/about.html38
-rw-r--r--lsp/org.eclipse.cdt.lsp.cquery.tests/build.properties17
-rw-r--r--lsp/org.eclipse.cdt.lsp.cquery.tests/pom.xml47
-rw-r--r--lsp/org.eclipse.cdt.lsp.cquery.tests/src/org/eclipse/cdt/lsp/cquery/tests/CqueryJsonParseTest.java (renamed from lsp/org.eclipse.cdt.lsp.core.tests/src/org/eclipse/cdt/lsp/core/tests/cquery/CqueryJsonParseTest.java)22
-rw-r--r--lsp/org.eclipse.cdt.lsp.cquery/.classpath7
-rw-r--r--lsp/org.eclipse.cdt.lsp.cquery/.project39
-rw-r--r--lsp/org.eclipse.cdt.lsp.cquery/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--lsp/org.eclipse.cdt.lsp.cquery/.settings/org.eclipse.core.runtime.prefs2
-rw-r--r--lsp/org.eclipse.cdt.lsp.cquery/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--lsp/org.eclipse.cdt.lsp.cquery/.settings/org.eclipse.jdt.launching.prefs (renamed from upc/org.eclipse.cdt.managedbuilder.bupc.ui/.settings/org.eclipse.jdt.launching.prefs)0
-rw-r--r--lsp/org.eclipse.cdt.lsp.cquery/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--lsp/org.eclipse.cdt.lsp.cquery/.settings/org.eclipse.pde.api.tools.prefs184
-rw-r--r--lsp/org.eclipse.cdt.lsp.cquery/.settings/org.eclipse.pde.ds.annotations.prefs8
-rw-r--r--lsp/org.eclipse.cdt.lsp.cquery/.settings/org.eclipse.pde.prefs35
-rw-r--r--lsp/org.eclipse.cdt.lsp.cquery/META-INF/MANIFEST.MF23
-rw-r--r--lsp/org.eclipse.cdt.lsp.cquery/OSGI-INF/l10n/bundle.properties13
-rw-r--r--lsp/org.eclipse.cdt.lsp.cquery/OSGI-INF/org.eclipse.cdt.lsp.internal.cquery.ui.CqueryLanguageServer.xml7
-rw-r--r--lsp/org.eclipse.cdt.lsp.cquery/OSGI-INF/org.eclipse.cdt.lsp.internal.cquery.ui.CqueryProtocolExtension.xml7
-rw-r--r--lsp/org.eclipse.cdt.lsp.cquery/about.html38
-rw-r--r--lsp/org.eclipse.cdt.lsp.cquery/build.properties17
-rw-r--r--lsp/org.eclipse.cdt.lsp.cquery/src/org/eclipse/cdt/lsp/internal/cquery/CqueryInactiveRegions.java (renamed from lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/cquery/CqueryInactiveRegions.java)4
-rw-r--r--lsp/org.eclipse.cdt.lsp.cquery/src/org/eclipse/cdt/lsp/internal/cquery/CqueryMessages.java29
-rw-r--r--lsp/org.eclipse.cdt.lsp.cquery/src/org/eclipse/cdt/lsp/internal/cquery/CqueryMessages.properties13
-rw-r--r--lsp/org.eclipse.cdt.lsp.cquery/src/org/eclipse/cdt/lsp/internal/cquery/CquerySemanticHighlights.java (renamed from lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/cquery/CquerySemanticHighlights.java)4
-rw-r--r--lsp/org.eclipse.cdt.lsp.cquery/src/org/eclipse/cdt/lsp/internal/cquery/CquerySymbolKind.java44
-rw-r--r--lsp/org.eclipse.cdt.lsp.cquery/src/org/eclipse/cdt/lsp/internal/cquery/ExtendedSymbolKindType.java (renamed from lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/cquery/ExtendedSymbolKindType.java)14
-rw-r--r--lsp/org.eclipse.cdt.lsp.cquery/src/org/eclipse/cdt/lsp/internal/cquery/HighlightSymbol.java59
-rw-r--r--lsp/org.eclipse.cdt.lsp.cquery/src/org/eclipse/cdt/lsp/internal/cquery/IndexingProgressStats.java (renamed from lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/cquery/IndexingProgressStats.java)4
-rw-r--r--lsp/org.eclipse.cdt.lsp.cquery/src/org/eclipse/cdt/lsp/internal/cquery/StorageClass.java35
-rw-r--r--lsp/org.eclipse.cdt.lsp.cquery/src/org/eclipse/cdt/lsp/internal/cquery/SymbolRole.java29
-rw-r--r--lsp/org.eclipse.cdt.lsp.cquery/src/org/eclipse/cdt/lsp/internal/cquery/ui/CqueryLanguageServer.java55
-rw-r--r--lsp/org.eclipse.cdt.lsp.cquery/src/org/eclipse/cdt/lsp/internal/cquery/ui/CqueryProtocolExtension.java58
-rw-r--r--lsp/org.eclipse.cdt.lsp.cquery/src/org/eclipse/cdt/lsp/internal/cquery/ui/HighlightingNames.java82
-rw-r--r--lsp/org.eclipse.cdt.lsp.cquery/src/org/eclipse/cdt/lsp/internal/cquery/ui/PublishSemanticHighlighting.java155
-rw-r--r--lsp/org.eclipse.cdt.lsp.ui/.classpath7
-rw-r--r--lsp/org.eclipse.cdt.lsp.ui/.project34
-rw-r--r--lsp/org.eclipse.cdt.lsp.ui/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--lsp/org.eclipse.cdt.lsp.ui/.settings/org.eclipse.core.runtime.prefs2
-rw-r--r--lsp/org.eclipse.cdt.lsp.ui/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--lsp/org.eclipse.cdt.lsp.ui/.settings/org.eclipse.jdt.launching.prefs (renamed from xlc/org.eclipse.cdt.core.lrparser.xlc.tests/.settings/org.eclipse.jdt.launching.prefs)0
-rw-r--r--lsp/org.eclipse.cdt.lsp.ui/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--lsp/org.eclipse.cdt.lsp.ui/.settings/org.eclipse.pde.api.tools.prefs184
-rw-r--r--lsp/org.eclipse.cdt.lsp.ui/.settings/org.eclipse.pde.prefs35
-rw-r--r--lsp/org.eclipse.cdt.lsp.ui/META-INF/MANIFEST.MF26
-rw-r--r--lsp/org.eclipse.cdt.lsp.ui/OSGI-INF/l10n/bundle.properties22
-rw-r--r--lsp/org.eclipse.cdt.lsp.ui/about.html38
-rw-r--r--lsp/org.eclipse.cdt.lsp.ui/about.ini24
-rw-r--r--lsp/org.eclipse.cdt.lsp.ui/about.mappings9
-rw-r--r--lsp/org.eclipse.cdt.lsp.ui/about.properties32
-rw-r--r--lsp/org.eclipse.cdt.lsp.ui/build.properties26
-rw-r--r--lsp/org.eclipse.cdt.lsp.ui/cdt_logo_icon32.pngbin0 -> 1885 bytes
-rw-r--r--lsp/org.eclipse.cdt.lsp.ui/plugin.xml85
-rw-r--r--lsp/org.eclipse.cdt.lsp.ui/src/org/eclipse/cdt/lsp/internal/ui/LspUiActivator.java51
-rw-r--r--lsp/org.eclipse.cdt.lsp.ui/src/org/eclipse/cdt/lsp/internal/ui/LspUiMessages.java35
-rw-r--r--lsp/org.eclipse.cdt.lsp.ui/src/org/eclipse/cdt/lsp/internal/ui/LspUiMessages.properties20
-rw-r--r--lsp/org.eclipse.cdt.lsp.ui/src/org/eclipse/cdt/lsp/internal/ui/StatusLineMessage.java55
-rw-r--r--lsp/org.eclipse.cdt.lsp.ui/src/org/eclipse/cdt/lsp/internal/ui/expressions/DocumentsTester.java42
-rw-r--r--lsp/org.eclipse.cdt.lsp.ui/src/org/eclipse/cdt/lsp/internal/ui/preferences/CPPLanguageServerPreferencePage.java99
-rw-r--r--lsp/org.eclipse.cdt.lsp.ui/src/org/eclipse/cdt/lsp/internal/ui/properties/LanguageServerPropertyPage.java139
-rw-r--r--lsp/org.eclipse.cdt.lsp.ui/src/org/eclipse/cdt/lsp/internal/ui/text/AutoIndentStrategyCPP.java (renamed from lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/AutoIndentStrategyCPP.java)2
-rw-r--r--lsp/org.eclipse.cdt.lsp.ui/src/org/eclipse/cdt/lsp/internal/ui/text/LineBackgroundListenerCPP.java (renamed from lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/LineBackgroundListenerCPP.java)7
-rw-r--r--lsp/org.eclipse.cdt.lsp.ui/src/org/eclipse/cdt/lsp/internal/ui/text/PresentationReconcilerCPP.java (renamed from lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/PresentationReconcilerCPP.java)17
-rw-r--r--lsp/org.eclipse.cdt.lsp.ui/src/org/eclipse/cdt/lsp/internal/ui/text/SetInactiveRegions.java84
-rw-r--r--lsp/pom.xml12
-rw-r--r--memory/org.eclipse.cdt.debug.core.memory.tests/.classpath11
-rw-r--r--memory/org.eclipse.cdt.debug.core.memory.tests/.project28
-rw-r--r--memory/org.eclipse.cdt.debug.core.memory.tests/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--memory/org.eclipse.cdt.debug.core.memory.tests/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--memory/org.eclipse.cdt.debug.core.memory.tests/.settings/org.eclipse.jdt.launching.prefs (renamed from xlc/org.eclipse.cdt.core.lrparser.xlc/.settings/org.eclipse.jdt.launching.prefs)0
-rw-r--r--memory/org.eclipse.cdt.debug.core.memory.tests/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--memory/org.eclipse.cdt.debug.core.memory.tests/.settings/org.eclipse.pde.api.tools.prefs184
-rw-r--r--memory/org.eclipse.cdt.debug.core.memory.tests/.settings/org.eclipse.pde.prefs35
-rw-r--r--memory/org.eclipse.cdt.debug.core.memory.tests/META-INF/MANIFEST.MF10
-rw-r--r--memory/org.eclipse.cdt.debug.core.memory.tests/OSGI-INF/l10n/bundle.properties17
-rw-r--r--memory/org.eclipse.cdt.debug.core.memory.tests/about.html38
-rw-r--r--memory/org.eclipse.cdt.debug.core.memory.tests/build.properties22
-rw-r--r--memory/org.eclipse.cdt.debug.core.memory.tests/data/memory_0ffff.binbin0 -> 65535 bytes
-rw-r--r--memory/org.eclipse.cdt.debug.core.memory.tests/data/memory_0ffff.srec4096
-rw-r--r--memory/org.eclipse.cdt.debug.core.memory.tests/data/memory_0ffff.txt2048
-rw-r--r--memory/org.eclipse.cdt.debug.core.memory.tests/data/memory_10000.binbin0 -> 65536 bytes
-rw-r--r--memory/org.eclipse.cdt.debug.core.memory.tests/data/memory_10000.srec4096
-rw-r--r--memory/org.eclipse.cdt.debug.core.memory.tests/data/memory_10000.txt2048
-rw-r--r--memory/org.eclipse.cdt.debug.core.memory.tests/data/memory_10001.binbin0 -> 65537 bytes
-rw-r--r--memory/org.eclipse.cdt.debug.core.memory.tests/data/memory_10001.srec4097
-rw-r--r--memory/org.eclipse.cdt.debug.core.memory.tests/data/memory_10001.txt2049
-rw-r--r--memory/org.eclipse.cdt.debug.core.memory.tests/src/org/eclipse/cdt/debug/core/memory/tests/AutomatedIntegrationSuite.java25
-rw-r--r--memory/org.eclipse.cdt.debug.core.memory.tests/src/org/eclipse/cdt/debug/core/memory/tests/CollectScrolls.java39
-rw-r--r--memory/org.eclipse.cdt.debug.core.memory.tests/src/org/eclipse/cdt/debug/core/memory/tests/EmulateMemory.java86
-rw-r--r--memory/org.eclipse.cdt.debug.core.memory.tests/src/org/eclipse/cdt/debug/core/memory/tests/InputFile.java34
-rw-r--r--memory/org.eclipse.cdt.debug.core.memory.tests/src/org/eclipse/cdt/debug/core/memory/tests/OutputFile.java35
-rw-r--r--memory/org.eclipse.cdt.debug.core.memory.tests/src/org/eclipse/cdt/debug/core/memory/tests/PlainTextTransportTest.java78
-rw-r--r--memory/org.eclipse.cdt.debug.core.memory.tests/src/org/eclipse/cdt/debug/core/memory/tests/RAWBinaryTransportTest.java77
-rw-r--r--memory/org.eclipse.cdt.debug.core.memory.tests/src/org/eclipse/cdt/debug/core/memory/tests/SRecordTransportTest.java87
-rw-r--r--memory/org.eclipse.cdt.debug.core.memory/.classpath7
-rw-r--r--memory/org.eclipse.cdt.debug.core.memory/.project34
-rw-r--r--memory/org.eclipse.cdt.debug.core.memory/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--memory/org.eclipse.cdt.debug.core.memory/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--memory/org.eclipse.cdt.debug.core.memory/.settings/org.eclipse.jdt.launching.prefs (renamed from xlc/org.eclipse.cdt.errorparsers.xlc.tests/.settings/org.eclipse.jdt.launching.prefs)0
-rw-r--r--memory/org.eclipse.cdt.debug.core.memory/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--memory/org.eclipse.cdt.debug.core.memory/.settings/org.eclipse.pde.api.tools.prefs184
-rw-r--r--memory/org.eclipse.cdt.debug.core.memory/.settings/org.eclipse.pde.prefs35
-rw-r--r--memory/org.eclipse.cdt.debug.core.memory/META-INF/MANIFEST.MF13
-rw-r--r--memory/org.eclipse.cdt.debug.core.memory/OSGI-INF/l10n/bundle.properties17
-rw-r--r--memory/org.eclipse.cdt.debug.core.memory/about.html38
-rw-r--r--memory/org.eclipse.cdt.debug.core.memory/build.properties21
-rw-r--r--memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/core/memory/transport/ExportRequest.java70
-rw-r--r--memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/core/memory/transport/FileExport.java129
-rw-r--r--memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/core/memory/transport/FileImport.java114
-rw-r--r--memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/core/memory/transport/IReadMemory.java43
-rw-r--r--memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/core/memory/transport/IScrollMemory.java25
-rw-r--r--memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/core/memory/transport/ImportRequest.java60
-rw-r--r--memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/core/memory/transport/WriteMemory.java42
-rw-r--r--memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/internal/core/memory/transport/Messages.java42
-rw-r--r--memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/internal/core/memory/transport/PlainTextExport.java88
-rw-r--r--memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/internal/core/memory/transport/PlainTextImport.java80
-rw-r--r--memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/internal/core/memory/transport/RAWBinaryExport.java65
-rw-r--r--memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/internal/core/memory/transport/RAWBinaryImport.java60
-rw-r--r--memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/internal/core/memory/transport/ReadMemoryBlock.java41
-rw-r--r--memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/internal/core/memory/transport/SRecordExport.java115
-rw-r--r--memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/internal/core/memory/transport/SRecordImport.java152
-rw-r--r--memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/internal/core/memory/transport/TransportJob.java46
-rw-r--r--memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/internal/core/memory/transport/messages.properties29
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory-feature/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory-feature/feature.xml20
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.floatingpoint/.classpath2
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.floatingpoint/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.floatingpoint/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.floatingpoint/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.floatingpoint/META-INF/MANIFEST.MF4
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.floatingpoint/about.html14
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.floatingpoint/src/org/eclipse/cdt/debug/ui/memory/floatingpoint/FPRendering.java2
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.floatingpoint/src/org/eclipse/cdt/debug/ui/memory/floatingpoint/Rendering.java34
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/.classpath2
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/META-INF/MANIFEST.MF4
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/about.html14
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/about.ini24
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/about.mappings9
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/about.properties32
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/build.properties6
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/cdt_logo_icon32.pngbin0 -> 1885 bytes
-rw-r--r--[-rwxr-xr-x]memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/icons/memorybrowser_view.gifbin325 -> 325 bytes
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/src/org/eclipse/cdt/debug/ui/memory/memorybrowser/GoToAddressBarWidget.java16
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/src/org/eclipse/cdt/debug/ui/memory/memorybrowser/MemoryBrowser.java18
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/src/org/eclipse/cdt/debug/ui/memory/memorybrowser/MemoryBrowserPreferenceInitializer.java2
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.search/.classpath4
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.search/.project17
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.search/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.search/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.search/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.search/META-INF/MANIFEST.MF13
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.search/about.html14
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.traditional/.classpath4
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.traditional/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.traditional/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.traditional/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.traditional/META-INF/MANIFEST.MF4
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.traditional/about.html14
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.traditional/src/org/eclipse/cdt/debug/ui/internal/MemorySpacePreferencesHelper.java9
-rw-r--r--[-rwxr-xr-x]memory/org.eclipse.cdt.debug.ui.memory.traditional/src/org/eclipse/cdt/debug/ui/memory/traditional/AbstractPane.java0
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.traditional/src/org/eclipse/cdt/debug/ui/memory/traditional/AddressPane.java2
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.traditional/src/org/eclipse/cdt/debug/ui/memory/traditional/ColorAndEffectFieldEditor.java6
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.traditional/src/org/eclipse/cdt/debug/ui/memory/traditional/DataPane.java15
-rw-r--r--[-rwxr-xr-x]memory/org.eclipse.cdt.debug.ui.memory.traditional/src/org/eclipse/cdt/debug/ui/memory/traditional/Rendering.java63
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.traditional/src/org/eclipse/cdt/debug/ui/memory/traditional/RenderingAddressInfo.java4
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.traditional/src/org/eclipse/cdt/debug/ui/memory/traditional/TraditionalRendering.java4
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.traditional/src/org/eclipse/cdt/debug/ui/memory/traditional/TraditionalRenderingPreferenceConstants.java46
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.traditional/src/org/eclipse/cdt/debug/ui/memory/traditional/TraditionalRenderingPreferenceInitializer.java20
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.transport/.classpath2
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.transport/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.transport/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.transport/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.transport/META-INF/MANIFEST.MF10
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.transport/about.html14
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/internal/ui/memory/transport/AddressableSize.java40
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/internal/ui/memory/transport/ScrollMemory.java34
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/internal/ui/memory/transport/WriteMemoryBlock.java47
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/ui/memory/transport/ExportMemoryDialog.java6
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/ui/memory/transport/ImportMemoryDialog.java4
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/ui/memory/transport/PlainTextExporter.java123
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/ui/memory/transport/PlainTextImporter.java137
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/ui/memory/transport/RAWBinaryExporter.java94
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/ui/memory/transport/RAWBinaryImporter.java120
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/ui/memory/transport/SRecordExporter.java137
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/ui/memory/transport/SRecordImporter.java209
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/ui/memory/transport/messages.properties18
-rw-r--r--memory/pom.xml12
-rw-r--r--native/org.eclipse.cdt.native.serial/.classpath2
-rw-r--r--native/org.eclipse.cdt.native.serial/.project7
-rw-r--r--native/org.eclipse.cdt.native.serial/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--native/org.eclipse.cdt.native.serial/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--native/org.eclipse.cdt.native.serial/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--native/org.eclipse.cdt.native.serial/META-INF/MANIFEST.MF10
-rw-r--r--native/org.eclipse.cdt.native.serial/about.html14
-rw-r--r--native/org.eclipse.cdt.native.serial/build.properties3
-rw-r--r--native/org.eclipse.cdt.native.serial/jni/Makefile66
-rw-r--r--native/org.eclipse.cdt.native.serial/jni/Readme.md21
-rw-r--r--native/org.eclipse.cdt.native.serial/jni/serial.c471
-rw-r--r--native/org.eclipse.cdt.native.serial/native_src/.gitignore (renamed from native/org.eclipse.cdt.native.serial/jni/.gitignore)0
-rw-r--r--native/org.eclipse.cdt.native.serial/native_src/Makefile101
-rw-r--r--native/org.eclipse.cdt.native.serial/native_src/Readme.md3
-rw-r--r--native/org.eclipse.cdt.native.serial/native_src/include/org_eclipse_cdt_serial_SerialPort.h56
-rw-r--r--native/org.eclipse.cdt.native.serial/native_src/serial.c522
-rwxr-xr-xnative/org.eclipse.cdt.native.serial/os/linux/aarch64/libserial.sobin0 -> 13744 bytes
-rwxr-xr-xnative/org.eclipse.cdt.native.serial/os/linux/ppc64le/libserial.sobin0 -> 71072 bytes
-rwxr-xr-xnative/org.eclipse.cdt.native.serial/os/linux/x86_64/libserial.sobin13192 -> 13224 bytes
-rwxr-xr-xnative/org.eclipse.cdt.native.serial/os/macosx/aarch64/libserial.jnilibbin0 -> 51101 bytes
-rwxr-xr-xnative/org.eclipse.cdt.native.serial/os/macosx/x86_64/libserial.jnilibbin13476 -> 9664 bytes
-rwxr-xr-xnative/org.eclipse.cdt.native.serial/os/win32/x86_64/serial.dllbin380597 -> 379016 bytes
-rw-r--r--native/org.eclipse.cdt.native.serial/plugin.properties14
-rw-r--r--native/org.eclipse.cdt.native.serial/pom.xml92
-rw-r--r--native/org.eclipse.cdt.native.serial/src/org/eclipse/cdt/serial/BaudRate.java135
-rw-r--r--native/org.eclipse.cdt.native.serial/src/org/eclipse/cdt/serial/SerialPort.java67
-rw-r--r--native/org.eclipse.cdt.native.serial/src/org/eclipse/cdt/serial/StandardBaudRates.java59
-rw-r--r--native/pom.xml12
-rw-r--r--pom.xml255
-rw-r--r--qt/org.eclipse.cdt.qt-feature/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--qt/org.eclipse.cdt.qt-feature/feature.xml23
-rw-r--r--qt/org.eclipse.cdt.qt.core.tests/.classpath8
-rw-r--r--qt/org.eclipse.cdt.qt.core.tests/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--qt/org.eclipse.cdt.qt.core.tests/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--qt/org.eclipse.cdt.qt.core.tests/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--qt/org.eclipse.cdt.qt.core.tests/META-INF/MANIFEST.MF7
-rw-r--r--qt/org.eclipse.cdt.qt.core.tests/about.html14
-rw-r--r--qt/org.eclipse.cdt.qt.core.tests/build.properties1
-rw-r--r--qt/org.eclipse.cdt.qt.core.tests/plugin.properties14
-rw-r--r--qt/org.eclipse.cdt.qt.core/.classpath2
-rw-r--r--qt/org.eclipse.cdt.qt.core/.project6
-rw-r--r--qt/org.eclipse.cdt.qt.core/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--qt/org.eclipse.cdt.qt.core/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--qt/org.eclipse.cdt.qt.core/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--qt/org.eclipse.cdt.qt.core/META-INF/MANIFEST.MF6
-rw-r--r--qt/org.eclipse.cdt.qt.core/about.html14
-rw-r--r--qt/org.eclipse.cdt.qt.core/plugin.properties1
-rw-r--r--qt/org.eclipse.cdt.qt.core/plugin.xml1
-rw-r--r--qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/ASTUtil.java6
-rw-r--r--qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/QMLAnalyzer.java25
-rw-r--r--qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/QtFunctionCallUtil.java4
-rw-r--r--qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/QtIncludePaths.java12
-rw-r--r--qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/QtIncludePathsProvider.java4
-rw-r--r--qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/QtKeywords.java48
-rw-r--r--qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/QtMethodReference.java3
-rw-r--r--qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/QtMethodUtil.java27
-rw-r--r--qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/QtNature.java2
-rw-r--r--qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/build/QtBuildConfiguration.java24
-rw-r--r--qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/index/IQProperty.java12
-rw-r--r--qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/index/QMakeInfo.java44
-rw-r--r--qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/index/QMakeParser.java32
-rw-r--r--qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/index/QMakeProjectInfo.java2
-rw-r--r--qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/index/QMakeVersion.java2
-rw-r--r--qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/index/QProperty.java2
-rw-r--r--qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/index/QmlRegistration.java4
-rw-r--r--qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/index/QtFactory.java10
-rw-r--r--qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/index/QtIndexImpl.java2
-rw-r--r--qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/parser/QtParser.java2
-rw-r--r--qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/pdom/QmlTypeRegistration.java4
-rw-r--r--qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/pdom/QtASTClass.java4
-rw-r--r--qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/pdom/QtASTVisitor.java20
-rw-r--r--qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/pdom/QtPDOMProperty.java4
-rw-r--r--qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/pdom/QtPDOMQObject.java2
-rw-r--r--qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/provider/LinuxQtInstallProvider.java2
-rw-r--r--qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/provider/QtInstallProvider.java2
-rw-r--r--qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/qt/core/IQMLAnalyzer.java8
-rw-r--r--qt/org.eclipse.cdt.qt.ui.tests/.classpath8
-rw-r--r--qt/org.eclipse.cdt.qt.ui.tests/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--qt/org.eclipse.cdt.qt.ui.tests/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--qt/org.eclipse.cdt.qt.ui.tests/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--qt/org.eclipse.cdt.qt.ui.tests/META-INF/MANIFEST.MF5
-rw-r--r--qt/org.eclipse.cdt.qt.ui.tests/about.html14
-rw-r--r--qt/org.eclipse.cdt.qt.ui.tests/src/org/eclipse/cdt/qt/tests/BaseQtTestCase.java2
-rw-r--r--qt/org.eclipse.cdt.qt.ui/.classpath2
-rw-r--r--qt/org.eclipse.cdt.qt.ui/.project6
-rw-r--r--qt/org.eclipse.cdt.qt.ui/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--qt/org.eclipse.cdt.qt.ui/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--qt/org.eclipse.cdt.qt.ui/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--qt/org.eclipse.cdt.qt.ui/META-INF/MANIFEST.MF4
-rw-r--r--qt/org.eclipse.cdt.qt.ui/about.html14
-rw-r--r--qt/org.eclipse.cdt.qt.ui/about.ini24
-rw-r--r--qt/org.eclipse.cdt.qt.ui/about.mappings9
-rw-r--r--qt/org.eclipse.cdt.qt.ui/about.properties32
-rw-r--r--qt/org.eclipse.cdt.qt.ui/build.properties6
-rw-r--r--qt/org.eclipse.cdt.qt.ui/cdt_logo_icon32.pngbin0 -> 1885 bytes
-rw-r--r--qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/QObjectConnectCompletion.java6
-rw-r--r--qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/QObjectDeclarationCompletion.java4
-rw-r--r--qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/QPropertyCompletion.java6
-rw-r--r--qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/assist/QPropertyAttributeProposal.java20
-rw-r--r--qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/assist/QPropertyExpansion.java26
-rw-r--r--qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/editor/QMLContentAssistProcessor.java3
-rw-r--r--qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/editor/QMLEditor.java16
-rw-r--r--qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/editor/QMLHyperlink.java4
-rw-r--r--qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/editor/QMLHyperlinkDetector.java7
-rw-r--r--qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/resources/QMLTernFileUpdateJob.java3
-rw-r--r--qt/pom.xml12
-rw-r--r--releng/CDT.setup328
-rw-r--r--releng/org.eclipse.cdt-feature/.project11
-rw-r--r--releng/org.eclipse.cdt-feature/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--releng/org.eclipse.cdt-feature/feature.xml12
-rw-r--r--releng/org.eclipse.cdt-feature/p2.inf4
-rw-r--r--releng/org.eclipse.cdt-feature/pom.xml12
-rw-r--r--releng/org.eclipse.cdt.native-feature/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--releng/org.eclipse.cdt.native-feature/feature.xml23
-rw-r--r--releng/org.eclipse.cdt.platform-feature/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--releng/org.eclipse.cdt.platform-feature/feature.xml30
-rw-r--r--releng/org.eclipse.cdt.platform.branding/.project22
-rw-r--r--releng/org.eclipse.cdt.platform.branding/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--releng/org.eclipse.cdt.platform.branding/.settings/org.eclipse.pde.api.tools.prefs184
-rw-r--r--releng/org.eclipse.cdt.platform.branding/.settings/org.eclipse.pde.prefs35
-rw-r--r--releng/org.eclipse.cdt.platform.branding/META-INF/MANIFEST.MF7
-rw-r--r--releng/org.eclipse.cdt.platform.branding/about.html38
-rw-r--r--releng/org.eclipse.cdt.platform.branding/about.ini24
-rw-r--r--releng/org.eclipse.cdt.platform.branding/about.mappings9
-rw-r--r--releng/org.eclipse.cdt.platform.branding/about.properties32
-rw-r--r--releng/org.eclipse.cdt.platform.branding/build.properties23
-rw-r--r--releng/org.eclipse.cdt.platform.branding/cdt_logo_icon32.pngbin0 -> 1885 bytes
-rw-r--r--releng/org.eclipse.cdt.platform.branding/epl-v20.html (renamed from lrparser/org.eclipse.cdt.core.lrparser.feature/rootfiles/notice.html)0
-rw-r--r--releng/org.eclipse.cdt.platform.branding/notice.html (renamed from upc/org.eclipse.cdt.core.parser.upc.feature/rootfiles/notice.html)0
-rw-r--r--releng/org.eclipse.cdt.platform.branding/plugin.properties15
-rw-r--r--releng/org.eclipse.cdt.repo/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--releng/org.eclipse.cdt.repo/.settings/org.eclipse.jdt.core.prefs464
-rw-r--r--releng/org.eclipse.cdt.repo/.settings/org.eclipse.jdt.ui.prefs133
-rw-r--r--releng/org.eclipse.cdt.repo/category.xml285
-rw-r--r--releng/org.eclipse.cdt.repo/pom.xml12
-rw-r--r--releng/org.eclipse.cdt.sdk-feature/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--releng/org.eclipse.cdt.sdk-feature/feature.xml12
-rw-r--r--releng/org.eclipse.cdt.sdk-feature/pom.xml12
-rw-r--r--releng/org.eclipse.cdt.sdk/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--releng/org.eclipse.cdt.sdk/.settings/org.eclipse.jdt.core.prefs464
-rw-r--r--releng/org.eclipse.cdt.sdk/.settings/org.eclipse.jdt.ui.prefs133
-rw-r--r--releng/org.eclipse.cdt.sdk/META-INF/MANIFEST.MF2
-rw-r--r--releng/org.eclipse.cdt.sdk/about.html14
-rw-r--r--releng/org.eclipse.cdt.sdk/about.mappings6
-rw-r--r--releng/org.eclipse.cdt.sdk/about.properties18
-rw-r--r--releng/org.eclipse.cdt.target/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--releng/org.eclipse.cdt.target/.settings/org.eclipse.jdt.core.prefs464
-rw-r--r--releng/org.eclipse.cdt.target/.settings/org.eclipse.jdt.ui.prefs133
-rw-r--r--releng/org.eclipse.cdt.target/cdt-baseline.target158
-rw-r--r--releng/org.eclipse.cdt.target/cdt.target191
-rw-r--r--releng/org.eclipse.cdt.target/pom.xml15
-rw-r--r--releng/org.eclipse.cdt.testing-feature/.project9
-rw-r--r--releng/org.eclipse.cdt.testing-feature/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--releng/org.eclipse.cdt.testing-feature/feature.xml12
-rw-r--r--releng/org.eclipse.cdt.testing-feature/pom.xml12
-rw-r--r--releng/org.eclipse.cdt.testing.repo/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--releng/org.eclipse.cdt.testing.repo/.settings/org.eclipse.jdt.core.prefs464
-rw-r--r--releng/org.eclipse.cdt.testing.repo/.settings/org.eclipse.jdt.ui.prefs133
-rw-r--r--releng/org.eclipse.cdt.testing.repo/pom.xml12
-rw-r--r--releng/org.eclipse.cdt.testing/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--releng/org.eclipse.cdt.testing/.settings/org.eclipse.jdt.core.prefs464
-rw-r--r--releng/org.eclipse.cdt.testing/.settings/org.eclipse.jdt.ui.prefs133
-rw-r--r--releng/org.eclipse.cdt.testing/META-INF/MANIFEST.MF2
-rw-r--r--releng/org.eclipse.cdt.testing/about.html14
-rw-r--r--releng/org.eclipse.cdt.testing/about.ini3
-rw-r--r--releng/org.eclipse.cdt.testing/about.mappings6
-rw-r--r--releng/org.eclipse.cdt.testing/about.properties18
-rw-r--r--releng/org.eclipse.cdt.testing/build.properties1
-rw-r--r--releng/org.eclipse.cdt.testing/pom.xml14
-rw-r--r--releng/org.eclipse.cdt.testing/test.xml36
-rw-r--r--releng/org.eclipse.cdt/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--releng/org.eclipse.cdt/.settings/org.eclipse.jdt.core.prefs464
-rw-r--r--releng/org.eclipse.cdt/.settings/org.eclipse.jdt.ui.prefs133
-rw-r--r--releng/org.eclipse.cdt/META-INF/MANIFEST.MF2
-rw-r--r--releng/org.eclipse.cdt/about.html14
-rw-r--r--releng/org.eclipse.cdt/about.mappings6
-rw-r--r--releng/org.eclipse.cdt/about.properties24
-rw-r--r--releng/org.eclipse.cdt/pom.xml13
-rw-r--r--releng/pom.xml12
-rw-r--r--releng/scripts/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--releng/scripts/.settings/org.eclipse.jdt.core.prefs464
-rw-r--r--releng/scripts/.settings/org.eclipse.jdt.ui.prefs133
-rwxr-xr-xreleng/scripts/ChangeJavaVersion.sh79
-rwxr-xr-xreleng/scripts/change_to_eplv2.sh10
-rwxr-xr-xreleng/scripts/check_code_cleanliness.sh105
-rwxr-xr-xreleng/scripts/check_dll_dependencies.sh33
-rwxr-xr-xreleng/scripts/check_features.sh109
-rwxr-xr-xreleng/scripts/check_glibc_dependencies.sh63
-rwxr-xr-xreleng/scripts/check_license.sh53
-rwxr-xr-x[-rw-r--r--]releng/scripts/cleanup.py13
-rwxr-xr-xreleng/scripts/do_add_all_file_types_to_gitattributes.sh24
-rwxr-xr-xreleng/scripts/do_all_code_cleanups.sh23
-rwxr-xr-xreleng/scripts/do_fix_file_permissions.sh31
-rwxr-xr-xreleng/scripts/do_format_code.sh33
-rwxr-xr-xreleng/scripts/do_project_settings.sh108
-rwxr-xr-xreleng/scripts/do_rebuild_natives.sh44
-rwxr-xr-xreleng/scripts/do_remove_trailing_whitespace.sh25
-rwxr-xr-xreleng/scripts/rebase_helper.sh14
-rwxr-xr-xreleng/scripts/reproducible_build_wrapper.py72
-rwxr-xr-xreleng/scripts/run_dash_licenses.sh46
-rwxr-xr-xreleng/scripts/update_legal_files.sh21
-rw-r--r--releng/templates/feature/about.ini24
-rw-r--r--releng/templates/feature/about.mappings9
-rw-r--r--releng/templates/feature/about.properties32
-rw-r--r--releng/templates/feature/about.with_welcome.ini27
-rw-r--r--releng/templates/feature/cdt_logo_icon32.pngbin0 -> 1885 bytes
-rw-r--r--remote/org.eclipse.cdt.remote.core/.classpath2
-rw-r--r--remote/org.eclipse.cdt.remote.core/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--remote/org.eclipse.cdt.remote.core/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--remote/org.eclipse.cdt.remote.core/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--remote/org.eclipse.cdt.remote.core/META-INF/MANIFEST.MF4
-rw-r--r--remote/org.eclipse.cdt.remote.core/about.html14
-rw-r--r--remote/org.eclipse.remote-feature/.project17
-rw-r--r--remote/org.eclipse.remote-feature/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--remote/org.eclipse.remote-feature/build.properties4
-rw-r--r--remote/org.eclipse.remote-feature/eclipse_update_120.jpgbin0 -> 21695 bytes
-rw-r--r--remote/org.eclipse.remote-feature/epl-v20.html (renamed from xlc/org.eclipse.cdt.xlc.feature/rootfiles/notice.html)0
-rw-r--r--remote/org.eclipse.remote-feature/feature.properties27
-rw-r--r--remote/org.eclipse.remote-feature/feature.xml58
-rw-r--r--remote/org.eclipse.remote.console-feature/.project17
-rw-r--r--remote/org.eclipse.remote.console-feature/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--remote/org.eclipse.remote.console-feature/build.properties4
-rw-r--r--remote/org.eclipse.remote.console-feature/eclipse_update_120.jpgbin0 -> 21695 bytes
-rw-r--r--remote/org.eclipse.remote.console-feature/epl-v20.html (renamed from xlc/org.eclipse.cdt.xlc.sdk-feature/rootfiles/notice.html)0
-rw-r--r--remote/org.eclipse.remote.console-feature/feature.properties27
-rw-r--r--remote/org.eclipse.remote.console-feature/feature.xml29
-rw-r--r--remote/org.eclipse.remote.console/.classpath7
-rw-r--r--remote/org.eclipse.remote.console/.project34
-rw-r--r--remote/org.eclipse.remote.console/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--remote/org.eclipse.remote.console/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--remote/org.eclipse.remote.console/.settings/org.eclipse.jdt.launching.prefs (renamed from xlc/org.eclipse.cdt.errorparsers.xlc/.settings/org.eclipse.jdt.launching.prefs)0
-rw-r--r--remote/org.eclipse.remote.console/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--remote/org.eclipse.remote.console/.settings/org.eclipse.pde.api.tools.prefs184
-rw-r--r--remote/org.eclipse.remote.console/.settings/org.eclipse.pde.prefs35
-rw-r--r--remote/org.eclipse.remote.console/META-INF/MANIFEST.MF38
-rw-r--r--remote/org.eclipse.remote.console/about.html38
-rw-r--r--remote/org.eclipse.remote.console/about.ini24
-rw-r--r--remote/org.eclipse.remote.console/about.mappings9
-rw-r--r--remote/org.eclipse.remote.console/about.properties32
-rw-r--r--remote/org.eclipse.remote.console/build.properties14
-rw-r--r--remote/org.eclipse.remote.console/cdt_logo_icon32.pngbin0 -> 1885 bytes
-rw-r--r--remote/org.eclipse.remote.console/icons/clcl16/command_input_field.gifbin0 -> 385 bytes
-rw-r--r--remote/org.eclipse.remote.console/icons/clcl16/connect_co.gifbin0 -> 139 bytes
-rw-r--r--remote/org.eclipse.remote.console/icons/clcl16/disconnect_co.gifbin0 -> 146 bytes
-rw-r--r--remote/org.eclipse.remote.console/icons/clcl16/lock_co.gifbin0 -> 626 bytes
-rw-r--r--remote/org.eclipse.remote.console/icons/clcl16/newterminal.gifbin0 -> 351 bytes
-rw-r--r--remote/org.eclipse.remote.console/icons/clcl16/properties_tsk.gifbin0 -> 118 bytes
-rw-r--r--remote/org.eclipse.remote.console/icons/cview16/terminal_view.gifbin0 -> 938 bytes
-rw-r--r--remote/org.eclipse.remote.console/icons/dlcl16/command_input_field.gifbin0 -> 239 bytes
-rw-r--r--remote/org.eclipse.remote.console/icons/dlcl16/connect_co.gifbin0 -> 874 bytes
-rw-r--r--remote/org.eclipse.remote.console/icons/dlcl16/disconnect_co.gifbin0 -> 90 bytes
-rw-r--r--remote/org.eclipse.remote.console/icons/dlcl16/lock_co.gifbin0 -> 588 bytes
-rw-r--r--remote/org.eclipse.remote.console/icons/dlcl16/newterminal.gifbin0 -> 351 bytes
-rw-r--r--remote/org.eclipse.remote.console/icons/dlcl16/properties_tsk.gifbin0 -> 90 bytes
-rw-r--r--remote/org.eclipse.remote.console/icons/dlcl16/rem_co.gifbin0 -> 159 bytes
-rw-r--r--remote/org.eclipse.remote.console/icons/elcl16/command_input_field.gifbin0 -> 239 bytes
-rw-r--r--remote/org.eclipse.remote.console/icons/elcl16/connect_co.gifbin0 -> 890 bytes
-rw-r--r--remote/org.eclipse.remote.console/icons/elcl16/disconnect_co.gifbin0 -> 118 bytes
-rw-r--r--remote/org.eclipse.remote.console/icons/elcl16/lock_co.gifbin0 -> 626 bytes
-rw-r--r--remote/org.eclipse.remote.console/icons/elcl16/newterminal.gifbin0 -> 351 bytes
-rw-r--r--remote/org.eclipse.remote.console/icons/elcl16/properties_tsk.gifbin0 -> 118 bytes
-rw-r--r--remote/org.eclipse.remote.console/icons/elcl16/rem_co.gifbin0 -> 163 bytes
-rw-r--r--remote/org.eclipse.remote.console/icons/eview16/terminal_view.gifbin0 -> 938 bytes
-rw-r--r--remote/org.eclipse.remote.console/plugin.properties14
-rw-r--r--remote/org.eclipse.remote.console/plugin.xml46
-rw-r--r--remote/org.eclipse.remote.console/schema/consoleToolbar.exsd137
-rw-r--r--remote/org.eclipse.remote.console/src/org/eclipse/remote/console/ITerminalConsole.java14
-rw-r--r--remote/org.eclipse.remote.console/src/org/eclipse/remote/console/TerminalConsoleUtility.java56
-rw-r--r--remote/org.eclipse.remote.console/src/org/eclipse/remote/console/actions/ConsoleAction.java118
-rw-r--r--remote/org.eclipse.remote.console/src/org/eclipse/remote/console/actions/IConsoleActionFactory.java34
-rw-r--r--remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/Activator.java150
-rw-r--r--remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/ConsoleMessages.java38
-rw-r--r--remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/ConsoleMessages.properties28
-rw-r--r--remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/ImageConsts.java54
-rw-r--r--remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/TerminalConsole.java88
-rw-r--r--remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/TerminalConsoleConnector.java308
-rw-r--r--remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/TerminalConsoleExtensionManager.java92
-rw-r--r--remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/TerminalConsoleFactory.java120
-rw-r--r--remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/TerminalConsolePage.java216
-rw-r--r--remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/TerminalConsoleSettingsDialog.java194
-rw-r--r--remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/actions/ActionMessages.java28
-rw-r--r--remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/actions/ActionMessages.properties16
-rw-r--r--remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/actions/ConsoleActionConnect.java36
-rw-r--r--remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/actions/ConsoleActionDisconnect.java36
-rw-r--r--remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/actions/ConsoleActionScrollLock.java38
-rw-r--r--remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/actions/OpenCommandShellHandler.java27
-rw-r--r--remote/org.eclipse.remote.core.tests/.classpath11
-rw-r--r--remote/org.eclipse.remote.core.tests/.project34
-rw-r--r--remote/org.eclipse.remote.core.tests/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--remote/org.eclipse.remote.core.tests/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--remote/org.eclipse.remote.core.tests/.settings/org.eclipse.jdt.launching.prefs (renamed from xlc/org.eclipse.cdt.make.xlc.core/.settings/org.eclipse.jdt.launching.prefs)0
-rw-r--r--remote/org.eclipse.remote.core.tests/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--remote/org.eclipse.remote.core.tests/.settings/org.eclipse.pde.api.tools.prefs184
-rw-r--r--remote/org.eclipse.remote.core.tests/.settings/org.eclipse.pde.prefs35
-rw-r--r--remote/org.eclipse.remote.core.tests/META-INF/MANIFEST.MF15
-rw-r--r--remote/org.eclipse.remote.core.tests/about.html38
-rw-r--r--remote/org.eclipse.remote.core.tests/build.properties6
-rw-r--r--remote/org.eclipse.remote.core.tests/plugin.properties16
-rw-r--r--remote/org.eclipse.remote.core.tests/src/org/eclipse/remote/core/tests/internal/Activator.java39
-rw-r--r--remote/org.eclipse.remote.core.tests/src/org/eclipse/remote/core/tests/internal/ServiceTests.java83
-rw-r--r--remote/org.eclipse.remote.core/.classpath7
-rw-r--r--remote/org.eclipse.remote.core/.options2
-rw-r--r--remote/org.eclipse.remote.core/.project34
-rw-r--r--remote/org.eclipse.remote.core/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--remote/org.eclipse.remote.core/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--remote/org.eclipse.remote.core/.settings/org.eclipse.jdt.launching.prefs (renamed from xlc/org.eclipse.cdt.managedbuilder.xlc.core/.settings/org.eclipse.jdt.launching.prefs)0
-rw-r--r--remote/org.eclipse.remote.core/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--remote/org.eclipse.remote.core/.settings/org.eclipse.pde.api.tools.prefs184
-rw-r--r--remote/org.eclipse.remote.core/.settings/org.eclipse.pde.prefs35
-rw-r--r--remote/org.eclipse.remote.core/META-INF/MANIFEST.MF29
-rw-r--r--remote/org.eclipse.remote.core/about.html38
-rw-r--r--remote/org.eclipse.remote.core/about.ini27
-rw-r--r--remote/org.eclipse.remote.core/about.mappings6
-rw-r--r--remote/org.eclipse.remote.core/about.properties25
-rw-r--r--remote/org.eclipse.remote.core/build.properties14
-rw-r--r--remote/org.eclipse.remote.core/plugin.properties14
-rw-r--r--remote/org.eclipse.remote.core/plugin.xml91
-rw-r--r--remote/org.eclipse.remote.core/ptp_logo_icon32.pngbin0 -> 53143 bytes
-rw-r--r--remote/org.eclipse.remote.core/schema/authenticator.exsd99
-rw-r--r--remote/org.eclipse.remote.core/schema/processFactory.exsd98
-rw-r--r--remote/org.eclipse.remote.core/schema/remoteResources.exsd113
-rw-r--r--remote/org.eclipse.remote.core/schema/remoteServices.exsd278
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/core/AbstractRemoteProcessBuilder.java135
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IProcessFactory.java35
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteCommandShellService.java47
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteConnection.java174
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteConnectionChangeListener.java37
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteConnectionControlService.java50
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteConnectionHostService.java152
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteConnectionPropertyService.java44
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteConnectionProviderService.java33
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteConnectionType.java206
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteConnectionWorkingCopy.java76
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteFileService.java99
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemotePortForwardingService.java106
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemotePreferenceConstants.java29
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteProcess.java136
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteProcessBuilder.java161
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteProcessControlService.java77
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteProcessService.java78
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteProcessSignalService.java51
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteProcessTerminalService.java36
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteResource.java78
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteServicesManager.java125
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IUserAuthenticatorService.java131
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/core/RemoteConnectionChangeEvent.java92
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/core/RemoteConnectionPropertyTester.java35
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/core/RemoteProcessAdapter.java64
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/core/RemoteServicesUtils.java118
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/core/exception/AddressInUseException.java46
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/core/exception/ConnectionExistsException.java31
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/core/exception/PrivilegedPortException.java45
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/core/exception/RemoteConnectionException.java49
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/core/exception/UnableToForwardPortException.java48
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/core/launch/IRemoteLaunchConfigService.java56
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/RemoteConnection.java214
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/RemoteConnectionType.java370
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/RemoteConnectionWorkingCopy.java314
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/RemoteCorePlugin.java142
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/RemoteDebugOptions.java115
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/RemotePath.java1216
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/RemoteProcess.java145
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/RemoteResourceAdapterFactory.java87
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/RemoteResourceFactory.java50
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/RemoteServicesManager.java220
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/launch/RemoteLaunchConfigService.java65
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/messages/Messages.java20
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/messages/messages.properties5
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/preferences/PreferenceInitializer.java31
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/preferences/Preferences.java495
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/services/local/LocalCommandShellService.java69
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/services/local/LocalConnectionHostService.java130
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/services/local/LocalConnectionPropertyService.java58
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/services/local/LocalConnectionProviderService.java59
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/services/local/LocalFileService.java87
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/services/local/LocalProcess.java209
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/services/local/LocalProcessBuilder.java183
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/services/local/LocalProcessService.java76
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/services/local/LocalResource.java49
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/services/local/Messages.java15
-rw-r--r--remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/services/local/messages.properties1
-rw-r--r--remote/org.eclipse.remote.doc.isv/.project22
-rw-r--r--remote/org.eclipse.remote.doc.isv/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--remote/org.eclipse.remote.doc.isv/.settings/org.eclipse.pde.api.tools.prefs184
-rw-r--r--remote/org.eclipse.remote.doc.isv/.settings/org.eclipse.pde.prefs35
-rw-r--r--remote/org.eclipse.remote.doc.isv/META-INF/MANIFEST.MF15
-rw-r--r--remote/org.eclipse.remote.doc.isv/about.html38
-rw-r--r--remote/org.eclipse.remote.doc.isv/build.properties12
-rw-r--r--remote/org.eclipse.remote.doc.isv/css/style.css17
-rw-r--r--remote/org.eclipse.remote.doc.isv/html/.gitignore1
-rw-r--r--remote/org.eclipse.remote.doc.isv/html/concepts/concepts.html76
-rw-r--r--remote/org.eclipse.remote.doc.isv/html/gettingstarted/intro.html46
-rw-r--r--remote/org.eclipse.remote.doc.isv/html/samples/examples.html112
-rw-r--r--remote/org.eclipse.remote.doc.isv/html/toc.html20
-rw-r--r--remote/org.eclipse.remote.doc.isv/plugin.xml25
-rw-r--r--remote/org.eclipse.remote.doc.isv/pom.xml126
-rw-r--r--remote/org.eclipse.remote.doc.isv/toc.xml17
-rw-r--r--remote/org.eclipse.remote.doc.isv/tocconcepts.xml7
-rw-r--r--remote/org.eclipse.remote.doc.isv/tocgettingstarted.xml7
-rw-r--r--remote/org.eclipse.remote.doc.isv/tocreference.xml6
-rw-r--r--remote/org.eclipse.remote.doc.isv/tocsamples.xml7
-rw-r--r--remote/org.eclipse.remote.jsch.core/.classpath7
-rw-r--r--remote/org.eclipse.remote.jsch.core/.project34
-rw-r--r--remote/org.eclipse.remote.jsch.core/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--remote/org.eclipse.remote.jsch.core/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--remote/org.eclipse.remote.jsch.core/.settings/org.eclipse.jdt.launching.prefs (renamed from xlc/org.eclipse.cdt.managedbuilder.xlc.ui/.settings/org.eclipse.jdt.launching.prefs)0
-rw-r--r--remote/org.eclipse.remote.jsch.core/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--remote/org.eclipse.remote.jsch.core/.settings/org.eclipse.pde.api.tools.prefs184
-rw-r--r--remote/org.eclipse.remote.jsch.core/.settings/org.eclipse.pde.prefs35
-rw-r--r--remote/org.eclipse.remote.jsch.core/META-INF/MANIFEST.MF22
-rw-r--r--remote/org.eclipse.remote.jsch.core/about.html38
-rw-r--r--remote/org.eclipse.remote.jsch.core/build.properties8
-rw-r--r--remote/org.eclipse.remote.jsch.core/plugin.properties14
-rw-r--r--remote/org.eclipse.remote.jsch.core/plugin.xml82
-rw-r--r--remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/Activator.java110
-rw-r--r--remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/ArgumentParser.java371
-rw-r--r--remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/JSchCommandShellService.java49
-rw-r--r--remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/JSchConnection.java897
-rw-r--r--remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/JSchConnectionProxyFactory.java268
-rw-r--r--remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/JSchFileManager.java101
-rw-r--r--remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/JSchFileSystem.java102
-rw-r--r--remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/JSchProcess.java217
-rw-r--r--remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/JSchProcessBuilder.java290
-rw-r--r--remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/JSchUserInfo.java148
-rw-r--r--remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/JschFileStore.java274
-rw-r--r--remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/commands/AbstractRemoteCommand.java479
-rw-r--r--remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/commands/ChildInfosCommand.java67
-rw-r--r--remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/commands/DeleteCommand.java30
-rw-r--r--remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/commands/ExecCommand.java60
-rw-r--r--remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/commands/FetchInfoCommand.java47
-rw-r--r--remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/commands/GetInputStreamCommand.java124
-rw-r--r--remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/commands/GetOutputStreamCommand.java73
-rw-r--r--remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/commands/MkdirCommand.java53
-rw-r--r--remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/commands/PutInfoCommand.java121
-rw-r--r--remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/messages/Messages.java70
-rw-r--r--remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/messages/messages.properties48
-rw-r--r--remote/org.eclipse.remote.jsch.tests/.classpath11
-rw-r--r--remote/org.eclipse.remote.jsch.tests/.project28
-rw-r--r--remote/org.eclipse.remote.jsch.tests/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--remote/org.eclipse.remote.jsch.tests/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--remote/org.eclipse.remote.jsch.tests/.settings/org.eclipse.jdt.launching.prefs (renamed from xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/.settings/org.eclipse.jdt.launching.prefs)0
-rw-r--r--remote/org.eclipse.remote.jsch.tests/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--remote/org.eclipse.remote.jsch.tests/.settings/org.eclipse.pde.api.tools.prefs184
-rw-r--r--remote/org.eclipse.remote.jsch.tests/.settings/org.eclipse.pde.prefs35
-rw-r--r--remote/org.eclipse.remote.jsch.tests/META-INF/MANIFEST.MF15
-rw-r--r--remote/org.eclipse.remote.jsch.tests/about.html38
-rw-r--r--remote/org.eclipse.remote.jsch.tests/build.properties6
-rw-r--r--remote/org.eclipse.remote.jsch.tests/src/org/eclipse/remote/jsch/tests/Activator.java57
-rw-r--r--remote/org.eclipse.remote.jsch.tests/src/org/eclipse/remote/jsch/tests/ConnectionTests.java152
-rw-r--r--remote/org.eclipse.remote.jsch.tests/src/org/eclipse/remote/jsch/tests/FileStoreTests.java257
-rw-r--r--remote/org.eclipse.remote.jsch.tests/src/org/eclipse/remote/jsch/tests/ProcessTests.java235
-rw-r--r--remote/org.eclipse.remote.jsch.tests/src/org/eclipse/remote/jsch/tests/RemoteCoreTestSuite.java16
-rw-r--r--remote/org.eclipse.remote.jsch.ui/.classpath7
-rw-r--r--remote/org.eclipse.remote.jsch.ui/.project34
-rw-r--r--remote/org.eclipse.remote.jsch.ui/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--remote/org.eclipse.remote.jsch.ui/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--remote/org.eclipse.remote.jsch.ui/.settings/org.eclipse.jdt.launching.prefs3
-rw-r--r--remote/org.eclipse.remote.jsch.ui/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--remote/org.eclipse.remote.jsch.ui/.settings/org.eclipse.pde.api.tools.prefs184
-rw-r--r--remote/org.eclipse.remote.jsch.ui/.settings/org.eclipse.pde.prefs35
-rw-r--r--remote/org.eclipse.remote.jsch.ui/META-INF/MANIFEST.MF42
-rw-r--r--remote/org.eclipse.remote.jsch.ui/about.html38
-rw-r--r--remote/org.eclipse.remote.jsch.ui/build.properties10
-rw-r--r--remote/org.eclipse.remote.jsch.ui/icons/full/obj16/connection.gifbin0 -> 160 bytes
-rw-r--r--remote/org.eclipse.remote.jsch.ui/icons/ssh.pngbin0 -> 512 bytes
-rw-r--r--remote/org.eclipse.remote.jsch.ui/plugin.properties16
-rw-r--r--remote/org.eclipse.remote.jsch.ui/plugin.xml56
-rw-r--r--remote/org.eclipse.remote.jsch.ui/src/org/eclipse/remote/internal/jsch/ui/Activator.java114
-rw-r--r--remote/org.eclipse.remote.jsch.ui/src/org/eclipse/remote/internal/jsch/ui/JSchFileSystemContributor.java66
-rw-r--r--remote/org.eclipse.remote.jsch.ui/src/org/eclipse/remote/internal/jsch/ui/JSchUIConnectionService.java111
-rw-r--r--remote/org.eclipse.remote.jsch.ui/src/org/eclipse/remote/internal/jsch/ui/JSchUserAuthenticator.java123
-rw-r--r--remote/org.eclipse.remote.jsch.ui/src/org/eclipse/remote/internal/jsch/ui/messages/Messages.java71
-rw-r--r--remote/org.eclipse.remote.jsch.ui/src/org/eclipse/remote/internal/jsch/ui/messages/messages.properties53
-rw-r--r--remote/org.eclipse.remote.jsch.ui/src/org/eclipse/remote/internal/jsch/ui/wizards/JSchConnectionPage.java585
-rw-r--r--remote/org.eclipse.remote.jsch.ui/src/org/eclipse/remote/internal/jsch/ui/wizards/JSchConnectionWizard.java82
-rw-r--r--remote/org.eclipse.remote.proxy-feature/.project17
-rw-r--r--remote/org.eclipse.remote.proxy-feature/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--remote/org.eclipse.remote.proxy-feature/build.properties4
-rw-r--r--remote/org.eclipse.remote.proxy-feature/eclipse_update_120.jpgbin0 -> 21695 bytes
-rw-r--r--remote/org.eclipse.remote.proxy-feature/epl-v20.html189
-rw-r--r--remote/org.eclipse.remote.proxy-feature/feature.properties28
-rw-r--r--remote/org.eclipse.remote.proxy-feature/feature.xml69
-rw-r--r--remote/org.eclipse.remote.proxy.core/.classpath7
-rw-r--r--remote/org.eclipse.remote.proxy.core/.project34
-rw-r--r--remote/org.eclipse.remote.proxy.core/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--remote/org.eclipse.remote.proxy.core/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--remote/org.eclipse.remote.proxy.core/.settings/org.eclipse.jdt.launching.prefs3
-rw-r--r--remote/org.eclipse.remote.proxy.core/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--remote/org.eclipse.remote.proxy.core/.settings/org.eclipse.pde.api.tools.prefs184
-rw-r--r--remote/org.eclipse.remote.proxy.core/.settings/org.eclipse.pde.prefs35
-rw-r--r--remote/org.eclipse.remote.proxy.core/META-INF/MANIFEST.MF27
-rw-r--r--remote/org.eclipse.remote.proxy.core/about.html38
-rwxr-xr-xremote/org.eclipse.remote.proxy.core/bootstrap.sh125
-rw-r--r--remote/org.eclipse.remote.proxy.core/build.properties11
-rw-r--r--remote/org.eclipse.remote.proxy.core/plugin.properties14
-rw-r--r--remote/org.eclipse.remote.proxy.core/plugin.xml77
-rw-r--r--remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/Activator.java101
-rw-r--r--remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/ProxyConnection.java440
-rw-r--r--remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/ProxyConnectionBootstrap.java331
-rw-r--r--remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/ProxyConnectionProviderService.java46
-rw-r--r--remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/ProxyFileManager.java88
-rw-r--r--remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/ProxyFileStore.java290
-rw-r--r--remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/ProxyFileSystem.java86
-rw-r--r--remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/ProxyProcess.java173
-rw-r--r--remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/ProxyProcessBuilder.java154
-rw-r--r--remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/commands/AbstractCommand.java86
-rw-r--r--remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/commands/ChildInfosCommand.java68
-rw-r--r--remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/commands/DeleteCommand.java55
-rw-r--r--remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/commands/ExecCommand.java83
-rw-r--r--remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/commands/FetchInfoCommand.java63
-rw-r--r--remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/commands/GetCwdCommand.java57
-rw-r--r--remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/commands/GetEnvCommand.java65
-rw-r--r--remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/commands/GetInputStreamCommand.java62
-rw-r--r--remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/commands/GetOutputStreamCommand.java62
-rw-r--r--remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/commands/GetPropertiesCommand.java65
-rw-r--r--remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/commands/MkdirCommand.java55
-rw-r--r--remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/commands/PutInfoCommand.java61
-rw-r--r--remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/commands/ShellCommand.java55
-rw-r--r--remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/messages/Messages.java118
-rw-r--r--remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/messages/messages.properties72
-rw-r--r--remote/org.eclipse.remote.proxy.protocol.core/.classpath7
-rw-r--r--remote/org.eclipse.remote.proxy.protocol.core/.project34
-rw-r--r--remote/org.eclipse.remote.proxy.protocol.core/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--remote/org.eclipse.remote.proxy.protocol.core/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--remote/org.eclipse.remote.proxy.protocol.core/.settings/org.eclipse.jdt.launching.prefs3
-rw-r--r--remote/org.eclipse.remote.proxy.protocol.core/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--remote/org.eclipse.remote.proxy.protocol.core/.settings/org.eclipse.pde.api.tools.prefs184
-rw-r--r--remote/org.eclipse.remote.proxy.protocol.core/.settings/org.eclipse.pde.prefs35
-rw-r--r--remote/org.eclipse.remote.proxy.protocol.core/META-INF/MANIFEST.MF16
-rw-r--r--remote/org.eclipse.remote.proxy.protocol.core/about.html38
-rw-r--r--remote/org.eclipse.remote.proxy.protocol.core/build.properties9
-rw-r--r--remote/org.eclipse.remote.proxy.protocol.core/plugin.properties14
-rw-r--r--remote/org.eclipse.remote.proxy.protocol.core/src/org/eclipse/remote/internal/proxy/protocol/core/Activator.java101
-rw-r--r--remote/org.eclipse.remote.proxy.protocol.core/src/org/eclipse/remote/proxy/protocol/core/Protocol.java44
-rw-r--r--remote/org.eclipse.remote.proxy.protocol.core/src/org/eclipse/remote/proxy/protocol/core/SerializableFileInfo.java93
-rw-r--r--remote/org.eclipse.remote.proxy.protocol.core/src/org/eclipse/remote/proxy/protocol/core/StreamChannel.java369
-rw-r--r--remote/org.eclipse.remote.proxy.protocol.core/src/org/eclipse/remote/proxy/protocol/core/StreamChannelManager.java567
-rw-r--r--remote/org.eclipse.remote.proxy.protocol.core/src/org/eclipse/remote/proxy/protocol/core/exceptions/ProxyException.java20
-rw-r--r--remote/org.eclipse.remote.proxy.server.core/.classpath7
-rw-r--r--remote/org.eclipse.remote.proxy.server.core/.project34
-rw-r--r--remote/org.eclipse.remote.proxy.server.core/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--remote/org.eclipse.remote.proxy.server.core/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--remote/org.eclipse.remote.proxy.server.core/.settings/org.eclipse.jdt.launching.prefs3
-rw-r--r--remote/org.eclipse.remote.proxy.server.core/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--remote/org.eclipse.remote.proxy.server.core/.settings/org.eclipse.pde.api.tools.prefs184
-rw-r--r--remote/org.eclipse.remote.proxy.server.core/.settings/org.eclipse.pde.core.prefs4
-rw-r--r--remote/org.eclipse.remote.proxy.server.core/.settings/org.eclipse.pde.prefs35
-rw-r--r--remote/org.eclipse.remote.proxy.server.core/META-INF/MANIFEST.MF18
-rw-r--r--remote/org.eclipse.remote.proxy.server.core/about.html38
-rw-r--r--remote/org.eclipse.remote.proxy.server.core/build.properties8
-rw-r--r--remote/org.eclipse.remote.proxy.server.core/plugin.properties14
-rw-r--r--remote/org.eclipse.remote.proxy.server.core/plugin.xml17
-rw-r--r--remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/Application.java44
-rw-r--r--remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/CommandServer.java295
-rw-r--r--remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/Server.java78
-rw-r--r--remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/commands/AbstractServerCommand.java17
-rw-r--r--remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/commands/AbstractServerExecCommand.java238
-rw-r--r--remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/commands/ServerChildInfosCommand.java63
-rw-r--r--remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/commands/ServerDeleteCommand.java37
-rw-r--r--remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/commands/ServerExecCommand.java72
-rw-r--r--remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/commands/ServerFetchInfoCommand.java60
-rw-r--r--remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/commands/ServerGetCwdCommand.java45
-rw-r--r--remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/commands/ServerGetEnvCommand.java49
-rw-r--r--remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/commands/ServerGetInputStreamCommand.java91
-rw-r--r--remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/commands/ServerGetOutputStreamCommand.java92
-rw-r--r--remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/commands/ServerGetPropertiesCommand.java65
-rw-r--r--remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/commands/ServerMkdirCommand.java37
-rw-r--r--remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/commands/ServerPutInfoCommand.java41
-rw-r--r--remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/commands/ServerShellCommand.java184
-rw-r--r--remote/org.eclipse.remote.proxy.server.linux.ppc64le/.gitignore1
-rw-r--r--remote/org.eclipse.remote.proxy.server.linux.ppc64le/.project22
-rw-r--r--remote/org.eclipse.remote.proxy.server.linux.ppc64le/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--remote/org.eclipse.remote.proxy.server.linux.ppc64le/.settings/org.eclipse.pde.api.tools.prefs184
-rw-r--r--remote/org.eclipse.remote.proxy.server.linux.ppc64le/.settings/org.eclipse.pde.core.prefs3
-rw-r--r--remote/org.eclipse.remote.proxy.server.linux.ppc64le/.settings/org.eclipse.pde.prefs35
-rw-r--r--remote/org.eclipse.remote.proxy.server.linux.ppc64le/META-INF/MANIFEST.MF7
-rw-r--r--remote/org.eclipse.remote.proxy.server.linux.ppc64le/about.html38
-rw-r--r--remote/org.eclipse.remote.proxy.server.linux.ppc64le/build.properties5
-rw-r--r--remote/org.eclipse.remote.proxy.server.linux.ppc64le/plugin.properties14
-rw-r--r--remote/org.eclipse.remote.proxy.server.linux.ppc64le/pom.xml50
-rw-r--r--remote/org.eclipse.remote.proxy.server.linux.x86_64/.gitignore1
-rw-r--r--remote/org.eclipse.remote.proxy.server.linux.x86_64/.project22
-rw-r--r--remote/org.eclipse.remote.proxy.server.linux.x86_64/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--remote/org.eclipse.remote.proxy.server.linux.x86_64/.settings/org.eclipse.pde.api.tools.prefs184
-rw-r--r--remote/org.eclipse.remote.proxy.server.linux.x86_64/.settings/org.eclipse.pde.core.prefs3
-rw-r--r--remote/org.eclipse.remote.proxy.server.linux.x86_64/.settings/org.eclipse.pde.prefs35
-rw-r--r--remote/org.eclipse.remote.proxy.server.linux.x86_64/META-INF/MANIFEST.MF7
-rw-r--r--remote/org.eclipse.remote.proxy.server.linux.x86_64/about.html38
-rw-r--r--remote/org.eclipse.remote.proxy.server.linux.x86_64/build.properties5
-rw-r--r--remote/org.eclipse.remote.proxy.server.linux.x86_64/plugin.properties14
-rw-r--r--remote/org.eclipse.remote.proxy.server.linux.x86_64/pom.xml50
-rw-r--r--remote/org.eclipse.remote.proxy.server.macosx.x86_64/.gitignore1
-rw-r--r--remote/org.eclipse.remote.proxy.server.macosx.x86_64/.project22
-rw-r--r--remote/org.eclipse.remote.proxy.server.macosx.x86_64/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--remote/org.eclipse.remote.proxy.server.macosx.x86_64/.settings/org.eclipse.pde.api.tools.prefs184
-rw-r--r--remote/org.eclipse.remote.proxy.server.macosx.x86_64/.settings/org.eclipse.pde.core.prefs3
-rw-r--r--remote/org.eclipse.remote.proxy.server.macosx.x86_64/.settings/org.eclipse.pde.prefs35
-rw-r--r--remote/org.eclipse.remote.proxy.server.macosx.x86_64/META-INF/MANIFEST.MF7
-rw-r--r--remote/org.eclipse.remote.proxy.server.macosx.x86_64/about.html38
-rw-r--r--remote/org.eclipse.remote.proxy.server.macosx.x86_64/build.properties5
-rw-r--r--remote/org.eclipse.remote.proxy.server.macosx.x86_64/plugin.properties14
-rw-r--r--remote/org.eclipse.remote.proxy.server.macosx.x86_64/pom.xml50
-rw-r--r--remote/org.eclipse.remote.proxy.server.product/.project11
-rw-r--r--remote/org.eclipse.remote.proxy.server.product/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--remote/org.eclipse.remote.proxy.server.product/pom.xml144
-rw-r--r--remote/org.eclipse.remote.proxy.server.product/product.entitlements18
-rw-r--r--remote/org.eclipse.remote.proxy.server.product/proxy.server.product73
-rw-r--r--remote/org.eclipse.remote.proxy.tests/.classpath11
-rw-r--r--remote/org.eclipse.remote.proxy.tests/.project28
-rw-r--r--remote/org.eclipse.remote.proxy.tests/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--remote/org.eclipse.remote.proxy.tests/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--remote/org.eclipse.remote.proxy.tests/.settings/org.eclipse.jdt.launching.prefs3
-rw-r--r--remote/org.eclipse.remote.proxy.tests/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--remote/org.eclipse.remote.proxy.tests/.settings/org.eclipse.pde.api.tools.prefs184
-rw-r--r--remote/org.eclipse.remote.proxy.tests/.settings/org.eclipse.pde.prefs35
-rw-r--r--remote/org.eclipse.remote.proxy.tests/META-INF/MANIFEST.MF19
-rw-r--r--remote/org.eclipse.remote.proxy.tests/about.html38
-rw-r--r--remote/org.eclipse.remote.proxy.tests/build.properties6
-rw-r--r--remote/org.eclipse.remote.proxy.tests/src/org/eclipse/remote/proxy/tests/Activator.java57
-rw-r--r--remote/org.eclipse.remote.proxy.tests/src/org/eclipse/remote/proxy/tests/ConnectionTests.java258
-rw-r--r--remote/org.eclipse.remote.proxy.tests/src/org/eclipse/remote/proxy/tests/FileStoreTests.java279
-rw-r--r--remote/org.eclipse.remote.proxy.tests/src/org/eclipse/remote/proxy/tests/MultiplexServerTests.java193
-rw-r--r--remote/org.eclipse.remote.proxy.tests/src/org/eclipse/remote/proxy/tests/MultiplexTests.java283
-rw-r--r--remote/org.eclipse.remote.proxy.tests/src/org/eclipse/remote/proxy/tests/ProcessTests.java259
-rw-r--r--remote/org.eclipse.remote.proxy.tests/src/org/eclipse/remote/proxy/tests/RemoteCoreTestSuite.java13
-rw-r--r--remote/org.eclipse.remote.proxy.ui/.classpath7
-rw-r--r--remote/org.eclipse.remote.proxy.ui/.project34
-rw-r--r--remote/org.eclipse.remote.proxy.ui/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--remote/org.eclipse.remote.proxy.ui/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--remote/org.eclipse.remote.proxy.ui/.settings/org.eclipse.jdt.launching.prefs3
-rw-r--r--remote/org.eclipse.remote.proxy.ui/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--remote/org.eclipse.remote.proxy.ui/.settings/org.eclipse.pde.api.tools.prefs184
-rw-r--r--remote/org.eclipse.remote.proxy.ui/.settings/org.eclipse.pde.prefs35
-rw-r--r--remote/org.eclipse.remote.proxy.ui/META-INF/MANIFEST.MF42
-rw-r--r--remote/org.eclipse.remote.proxy.ui/about.html38
-rw-r--r--remote/org.eclipse.remote.proxy.ui/about.ini24
-rw-r--r--remote/org.eclipse.remote.proxy.ui/about.mappings9
-rw-r--r--remote/org.eclipse.remote.proxy.ui/about.properties32
-rw-r--r--remote/org.eclipse.remote.proxy.ui/build.properties14
-rw-r--r--remote/org.eclipse.remote.proxy.ui/cdt_logo_icon32.pngbin0 -> 1885 bytes
-rw-r--r--remote/org.eclipse.remote.proxy.ui/icons/full/obj16/connection.gifbin0 -> 160 bytes
-rw-r--r--remote/org.eclipse.remote.proxy.ui/icons/ssh.pngbin0 -> 512 bytes
-rw-r--r--remote/org.eclipse.remote.proxy.ui/plugin.properties16
-rw-r--r--remote/org.eclipse.remote.proxy.ui/plugin.xml56
-rw-r--r--remote/org.eclipse.remote.proxy.ui/src/org/eclipse/remote/internal/proxy/ui/Activator.java114
-rw-r--r--remote/org.eclipse.remote.proxy.ui/src/org/eclipse/remote/internal/proxy/ui/ProxyFileSystemContributor.java50
-rw-r--r--remote/org.eclipse.remote.proxy.ui/src/org/eclipse/remote/internal/proxy/ui/ProxyUIConnectionService.java104
-rw-r--r--remote/org.eclipse.remote.proxy.ui/src/org/eclipse/remote/internal/proxy/ui/ProxyUserAuthenticator.java118
-rw-r--r--remote/org.eclipse.remote.proxy.ui/src/org/eclipse/remote/internal/proxy/ui/messages/Messages.java71
-rw-r--r--remote/org.eclipse.remote.proxy.ui/src/org/eclipse/remote/internal/proxy/ui/messages/messages.properties53
-rw-r--r--remote/org.eclipse.remote.proxy.ui/src/org/eclipse/remote/internal/proxy/ui/wizards/ProxyConnectionPage.java497
-rw-r--r--remote/org.eclipse.remote.proxy.ui/src/org/eclipse/remote/internal/proxy/ui/wizards/ProxyConnectionWizard.java78
-rw-r--r--remote/org.eclipse.remote.serial-feature/.project17
-rw-r--r--remote/org.eclipse.remote.serial-feature/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--remote/org.eclipse.remote.serial-feature/build.properties4
-rw-r--r--remote/org.eclipse.remote.serial-feature/eclipse_update_120.jpgbin0 -> 21695 bytes
-rw-r--r--remote/org.eclipse.remote.serial-feature/epl-v20.html189
-rw-r--r--remote/org.eclipse.remote.serial-feature/feature.properties27
-rw-r--r--remote/org.eclipse.remote.serial-feature/feature.xml37
-rw-r--r--remote/org.eclipse.remote.serial.core/.classpath7
-rw-r--r--remote/org.eclipse.remote.serial.core/.project34
-rw-r--r--remote/org.eclipse.remote.serial.core/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--remote/org.eclipse.remote.serial.core/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--remote/org.eclipse.remote.serial.core/.settings/org.eclipse.jdt.launching.prefs3
-rw-r--r--remote/org.eclipse.remote.serial.core/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--remote/org.eclipse.remote.serial.core/.settings/org.eclipse.pde.api.tools.prefs184
-rw-r--r--remote/org.eclipse.remote.serial.core/.settings/org.eclipse.pde.prefs35
-rw-r--r--remote/org.eclipse.remote.serial.core/META-INF/MANIFEST.MF16
-rw-r--r--remote/org.eclipse.remote.serial.core/about.html38
-rw-r--r--remote/org.eclipse.remote.serial.core/about.ini27
-rw-r--r--remote/org.eclipse.remote.serial.core/about.mappings6
-rw-r--r--remote/org.eclipse.remote.serial.core/about.properties25
-rw-r--r--remote/org.eclipse.remote.serial.core/build.properties12
-rw-r--r--remote/org.eclipse.remote.serial.core/plugin.properties2
-rw-r--r--remote/org.eclipse.remote.serial.core/plugin.xml22
-rw-r--r--remote/org.eclipse.remote.serial.core/ptp_logo_icon32.pngbin0 -> 53143 bytes
-rw-r--r--remote/org.eclipse.remote.serial.core/src/org/eclipse/remote/serial/core/ISerialPortService.java30
-rw-r--r--remote/org.eclipse.remote.serial.core/src/org/eclipse/remote/serial/core/SerialPortCommandShell.java115
-rw-r--r--remote/org.eclipse.remote.serial.core/src/org/eclipse/remote/serial/core/SerialPortConnection.java100
-rw-r--r--remote/org.eclipse.remote.serial.core/src/org/eclipse/remote/serial/internal/core/Activator.java49
-rw-r--r--remote/org.eclipse.remote.serial.core/src/org/eclipse/remote/serial/internal/core/Messages.java29
-rw-r--r--remote/org.eclipse.remote.serial.core/src/org/eclipse/remote/serial/internal/core/messages.properties14
-rw-r--r--remote/org.eclipse.remote.serial.ui/.classpath7
-rw-r--r--remote/org.eclipse.remote.serial.ui/.project34
-rw-r--r--remote/org.eclipse.remote.serial.ui/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--remote/org.eclipse.remote.serial.ui/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--remote/org.eclipse.remote.serial.ui/.settings/org.eclipse.jdt.launching.prefs3
-rw-r--r--remote/org.eclipse.remote.serial.ui/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--remote/org.eclipse.remote.serial.ui/.settings/org.eclipse.pde.api.tools.prefs184
-rw-r--r--remote/org.eclipse.remote.serial.ui/.settings/org.eclipse.pde.prefs35
-rw-r--r--remote/org.eclipse.remote.serial.ui/META-INF/MANIFEST.MF35
-rw-r--r--remote/org.eclipse.remote.serial.ui/about.html38
-rw-r--r--remote/org.eclipse.remote.serial.ui/about.ini24
-rw-r--r--remote/org.eclipse.remote.serial.ui/about.mappings9
-rw-r--r--remote/org.eclipse.remote.serial.ui/about.properties32
-rw-r--r--remote/org.eclipse.remote.serial.ui/build.properties13
-rw-r--r--remote/org.eclipse.remote.serial.ui/cdt_logo_icon32.pngbin0 -> 1885 bytes
-rw-r--r--remote/org.eclipse.remote.serial.ui/icons/serial.pngbin0 -> 410 bytes
-rw-r--r--remote/org.eclipse.remote.serial.ui/plugin.properties2
-rw-r--r--remote/org.eclipse.remote.serial.ui/plugin.xml28
-rw-r--r--remote/org.eclipse.remote.serial.ui/ptp_logo_icon32.pngbin0 -> 53143 bytes
-rw-r--r--remote/org.eclipse.remote.serial.ui/src/org/eclipse/remote/serial/internal/ui/Activator.java77
-rw-r--r--remote/org.eclipse.remote.serial.ui/src/org/eclipse/remote/serial/internal/ui/Messages.java36
-rw-r--r--remote/org.eclipse.remote.serial.ui/src/org/eclipse/remote/serial/internal/ui/SerialPortConnectionsUI.java85
-rw-r--r--remote/org.eclipse.remote.serial.ui/src/org/eclipse/remote/serial/internal/ui/messages.properties21
-rw-r--r--remote/org.eclipse.remote.serial.ui/src/org/eclipse/remote/serial/ui/NewSerialPortConnectionWizard.java100
-rw-r--r--remote/org.eclipse.remote.serial.ui/src/org/eclipse/remote/serial/ui/NewSerialPortConnectionWizardPage.java73
-rw-r--r--remote/org.eclipse.remote.serial.ui/src/org/eclipse/remote/serial/ui/SerialPortConnectionBlock.java254
-rw-r--r--remote/org.eclipse.remote.serial.ui/src/org/eclipse/remote/serial/ui/SerialPortConnectionPropertyPage.java84
-rw-r--r--remote/org.eclipse.remote.telnet-feature/.project17
-rw-r--r--remote/org.eclipse.remote.telnet-feature/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--remote/org.eclipse.remote.telnet-feature/build.properties4
-rw-r--r--remote/org.eclipse.remote.telnet-feature/eclipse_update_120.jpgbin0 -> 21695 bytes
-rw-r--r--remote/org.eclipse.remote.telnet-feature/epl-v20.html189
-rw-r--r--remote/org.eclipse.remote.telnet-feature/feature.properties27
-rw-r--r--remote/org.eclipse.remote.telnet-feature/feature.xml37
-rw-r--r--remote/org.eclipse.remote.telnet.core.tests/.classpath11
-rw-r--r--remote/org.eclipse.remote.telnet.core.tests/.project28
-rw-r--r--remote/org.eclipse.remote.telnet.core.tests/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--remote/org.eclipse.remote.telnet.core.tests/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--remote/org.eclipse.remote.telnet.core.tests/.settings/org.eclipse.jdt.launching.prefs3
-rw-r--r--remote/org.eclipse.remote.telnet.core.tests/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--remote/org.eclipse.remote.telnet.core.tests/.settings/org.eclipse.pde.api.tools.prefs184
-rw-r--r--remote/org.eclipse.remote.telnet.core.tests/.settings/org.eclipse.pde.prefs35
-rw-r--r--remote/org.eclipse.remote.telnet.core.tests/META-INF/MANIFEST.MF13
-rw-r--r--remote/org.eclipse.remote.telnet.core.tests/about.html38
-rw-r--r--remote/org.eclipse.remote.telnet.core.tests/build.properties6
-rw-r--r--remote/org.eclipse.remote.telnet.core.tests/src/org/eclipse/remote/telnet/core/tests/Activator.java50
-rw-r--r--remote/org.eclipse.remote.telnet.core.tests/src/org/eclipse/remote/telnet/core/tests/TelnetConnectionTests.java171
-rw-r--r--remote/org.eclipse.remote.telnet.core/.classpath7
-rw-r--r--remote/org.eclipse.remote.telnet.core/.project34
-rw-r--r--remote/org.eclipse.remote.telnet.core/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--remote/org.eclipse.remote.telnet.core/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--remote/org.eclipse.remote.telnet.core/.settings/org.eclipse.jdt.launching.prefs3
-rw-r--r--remote/org.eclipse.remote.telnet.core/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--remote/org.eclipse.remote.telnet.core/.settings/org.eclipse.pde.api.tools.prefs184
-rw-r--r--remote/org.eclipse.remote.telnet.core/.settings/org.eclipse.pde.prefs35
-rw-r--r--remote/org.eclipse.remote.telnet.core/META-INF/MANIFEST.MF18
-rw-r--r--remote/org.eclipse.remote.telnet.core/about.html38
-rw-r--r--remote/org.eclipse.remote.telnet.core/about.ini27
-rw-r--r--remote/org.eclipse.remote.telnet.core/about.mappings6
-rw-r--r--remote/org.eclipse.remote.telnet.core/about.properties25
-rw-r--r--remote/org.eclipse.remote.telnet.core/build.properties12
-rw-r--r--remote/org.eclipse.remote.telnet.core/plugin.properties2
-rw-r--r--remote/org.eclipse.remote.telnet.core/plugin.xml32
-rw-r--r--remote/org.eclipse.remote.telnet.core/ptp_logo_icon32.pngbin0 -> 53143 bytes
-rw-r--r--remote/org.eclipse.remote.telnet.core/src/org/eclipse/remote/telnet/core/TelnetCodes.java96
-rw-r--r--remote/org.eclipse.remote.telnet.core/src/org/eclipse/remote/telnet/core/TelnetCommandShell.java192
-rw-r--r--remote/org.eclipse.remote.telnet.core/src/org/eclipse/remote/telnet/core/TelnetConnection.java230
-rw-r--r--remote/org.eclipse.remote.telnet.core/src/org/eclipse/remote/telnet/core/TelnetOption.java727
-rw-r--r--remote/org.eclipse.remote.telnet.core/src/org/eclipse/remote/telnet/core/TelnetProtocol.java734
-rw-r--r--remote/org.eclipse.remote.telnet.core/src/org/eclipse/remote/telnet/internal/core/Activator.java55
-rw-r--r--remote/org.eclipse.remote.telnet.core/src/org/eclipse/remote/telnet/internal/core/Logger.java241
-rw-r--r--remote/org.eclipse.remote.telnet.core/src/org/eclipse/remote/telnet/internal/core/messages/Messages.java31
-rw-r--r--remote/org.eclipse.remote.telnet.core/src/org/eclipse/remote/telnet/internal/core/messages/messages.properties15
-rw-r--r--remote/org.eclipse.remote.telnet.ui/.classpath7
-rw-r--r--remote/org.eclipse.remote.telnet.ui/.project34
-rw-r--r--remote/org.eclipse.remote.telnet.ui/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--remote/org.eclipse.remote.telnet.ui/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--remote/org.eclipse.remote.telnet.ui/.settings/org.eclipse.jdt.launching.prefs3
-rw-r--r--remote/org.eclipse.remote.telnet.ui/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--remote/org.eclipse.remote.telnet.ui/.settings/org.eclipse.pde.api.tools.prefs184
-rw-r--r--remote/org.eclipse.remote.telnet.ui/.settings/org.eclipse.pde.prefs35
-rw-r--r--remote/org.eclipse.remote.telnet.ui/META-INF/MANIFEST.MF29
-rw-r--r--remote/org.eclipse.remote.telnet.ui/about.html38
-rw-r--r--remote/org.eclipse.remote.telnet.ui/about.ini24
-rw-r--r--remote/org.eclipse.remote.telnet.ui/about.mappings9
-rw-r--r--remote/org.eclipse.remote.telnet.ui/about.properties32
-rw-r--r--remote/org.eclipse.remote.telnet.ui/build.properties13
-rw-r--r--remote/org.eclipse.remote.telnet.ui/cdt_logo_icon32.pngbin0 -> 1885 bytes
-rw-r--r--remote/org.eclipse.remote.telnet.ui/icons/telnet.pngbin0 -> 51789 bytes
-rw-r--r--remote/org.eclipse.remote.telnet.ui/plugin.properties2
-rw-r--r--remote/org.eclipse.remote.telnet.ui/plugin.xml13
-rw-r--r--remote/org.eclipse.remote.telnet.ui/ptp_logo_icon32.pngbin0 -> 53143 bytes
-rw-r--r--remote/org.eclipse.remote.telnet.ui/src/org/eclipse/remote/telnet/internal/ui/Activator.java77
-rw-r--r--remote/org.eclipse.remote.telnet.ui/src/org/eclipse/remote/telnet/internal/ui/Messages.java41
-rw-r--r--remote/org.eclipse.remote.telnet.ui/src/org/eclipse/remote/telnet/internal/ui/TelnetConnectionWizard.java106
-rw-r--r--remote/org.eclipse.remote.telnet.ui/src/org/eclipse/remote/telnet/internal/ui/TelnetConnectionWizardPage.java145
-rw-r--r--remote/org.eclipse.remote.telnet.ui/src/org/eclipse/remote/telnet/internal/ui/TelnetConnectionsUI.java95
-rw-r--r--remote/org.eclipse.remote.telnet.ui/src/org/eclipse/remote/telnet/internal/ui/messages.properties26
-rw-r--r--remote/org.eclipse.remote.ui.tests/.classpath11
-rw-r--r--remote/org.eclipse.remote.ui.tests/.project28
-rw-r--r--remote/org.eclipse.remote.ui.tests/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--remote/org.eclipse.remote.ui.tests/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--remote/org.eclipse.remote.ui.tests/.settings/org.eclipse.jdt.launching.prefs3
-rw-r--r--remote/org.eclipse.remote.ui.tests/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--remote/org.eclipse.remote.ui.tests/.settings/org.eclipse.pde.api.tools.prefs184
-rw-r--r--remote/org.eclipse.remote.ui.tests/.settings/org.eclipse.pde.prefs35
-rw-r--r--remote/org.eclipse.remote.ui.tests/META-INF/MANIFEST.MF13
-rw-r--r--remote/org.eclipse.remote.ui.tests/about.html38
-rw-r--r--remote/org.eclipse.remote.ui.tests/build.properties6
-rw-r--r--remote/org.eclipse.remote.ui.tests/src/org/eclipse/remote/ui/tests/RemoteResourceBrowserTest.java215
-rw-r--r--remote/org.eclipse.remote.ui/.classpath7
-rw-r--r--remote/org.eclipse.remote.ui/.project34
-rw-r--r--remote/org.eclipse.remote.ui/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--remote/org.eclipse.remote.ui/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--remote/org.eclipse.remote.ui/.settings/org.eclipse.jdt.launching.prefs3
-rw-r--r--remote/org.eclipse.remote.ui/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--remote/org.eclipse.remote.ui/.settings/org.eclipse.pde.api.tools.prefs184
-rw-r--r--remote/org.eclipse.remote.ui/.settings/org.eclipse.pde.prefs35
-rw-r--r--remote/org.eclipse.remote.ui/META-INF/MANIFEST.MF52
-rw-r--r--remote/org.eclipse.remote.ui/about.html38
-rw-r--r--remote/org.eclipse.remote.ui/about.ini24
-rw-r--r--remote/org.eclipse.remote.ui/about.mappings9
-rw-r--r--remote/org.eclipse.remote.ui/about.properties32
-rw-r--r--remote/org.eclipse.remote.ui/build.properties13
-rw-r--r--remote/org.eclipse.remote.ui/cdt_logo_icon32.pngbin0 -> 1885 bytes
-rw-r--r--remote/org.eclipse.remote.ui/icons/connection.gifbin0 -> 160 bytes
-rw-r--r--remote/org.eclipse.remote.ui/icons/console.pngbin0 -> 452 bytes
-rw-r--r--remote/org.eclipse.remote.ui/icons/dlcl16/new_folder.gifbin0 -> 349 bytes
-rw-r--r--remote/org.eclipse.remote.ui/icons/dlcl16/up_nav.gifbin0 -> 563 bytes
-rw-r--r--remote/org.eclipse.remote.ui/icons/elcl16/new_folder.gifbin0 -> 349 bytes
-rw-r--r--remote/org.eclipse.remote.ui/icons/elcl16/up_nav.gifbin0 -> 563 bytes
-rw-r--r--remote/org.eclipse.remote.ui/icons/new_wiz.gifbin0 -> 612 bytes
-rw-r--r--remote/org.eclipse.remote.ui/icons/ovr16/symlink_ovr.gifbin0 -> 191 bytes
-rw-r--r--remote/org.eclipse.remote.ui/plugin.properties24
-rw-r--r--remote/org.eclipse.remote.ui/plugin.xml230
-rw-r--r--remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/DeferredFileStore.java240
-rw-r--r--remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/DeferredFileStoreComparer.java48
-rw-r--r--remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/Messages.java20
-rw-r--r--remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/OverlayImageDescriptor.java82
-rw-r--r--remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/PendingUpdateAdapter.java82
-rw-r--r--remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/RemoteContentProvider.java78
-rw-r--r--remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/RemoteResourceComparator.java46
-rw-r--r--remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/RemoteTreeContentManager.java345
-rw-r--r--remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/RemoteTreeViewer.java423
-rw-r--r--remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/RemoteUIImages.java158
-rw-r--r--remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/RemoteUIPlugin.java104
-rw-r--r--remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/ServicePropertyTester.java59
-rw-r--r--remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/messages.properties6
-rw-r--r--remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/messages/Messages.java134
-rw-r--r--remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/messages/messages.properties77
-rw-r--r--remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/preferences/ConnectionsPreferencePage.java631
-rw-r--r--remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/preferences/PreferencesAdapter.java339
-rw-r--r--remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/preferences/RemoteDevelopmentPreferencePage.java65
-rw-r--r--remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/services/local/LocalUIConnectionService.java53
-rw-r--r--remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/services/local/LocalUIFileService.java124
-rw-r--r--remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/views/CloseConnectionHandler.java65
-rw-r--r--remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/views/DeleteRemoteConnectionHandler.java77
-rw-r--r--remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/views/NewRemoteConnectionHandler.java22
-rw-r--r--remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/views/NewRemoteConnectionTypePage.java120
-rw-r--r--remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/views/NewRemoteConnectionWizard.java65
-rw-r--r--remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/views/OpenConnectionHandler.java70
-rw-r--r--remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/views/RemoteConnectionPropertyPage.java48
-rw-r--r--remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/views/RemoteConnectionsActionProvider.java17
-rw-r--r--remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/views/RemoteConnectionsContentProvider.java90
-rw-r--r--remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/views/RemoteConnectionsView.java28
-rw-r--r--remote/org.eclipse.remote.ui/src/org/eclipse/remote/ui/AbstractRemoteUIConnectionService.java103
-rw-r--r--remote/org.eclipse.remote.ui/src/org/eclipse/remote/ui/IRemoteUIConnectionService.java66
-rw-r--r--remote/org.eclipse.remote.ui/src/org/eclipse/remote/ui/IRemoteUIConnectionWizard.java68
-rw-r--r--remote/org.eclipse.remote.ui/src/org/eclipse/remote/ui/IRemoteUIConstants.java34
-rw-r--r--remote/org.eclipse.remote.ui/src/org/eclipse/remote/ui/IRemoteUIFileService.java113
-rw-r--r--remote/org.eclipse.remote.ui/src/org/eclipse/remote/ui/RemoteConnectionsLabelProvider.java92
-rw-r--r--remote/org.eclipse.remote.ui/src/org/eclipse/remote/ui/RemoteUIFileService.java127
-rw-r--r--remote/org.eclipse.remote.ui/src/org/eclipse/remote/ui/dialogs/RemoteResourceBrowser.java331
-rw-r--r--remote/org.eclipse.remote.ui/src/org/eclipse/remote/ui/widgets/RemoteConnectionWidget.java652
-rw-r--r--remote/org.eclipse.remote.ui/src/org/eclipse/remote/ui/widgets/RemoteDirectoryWidget.java281
-rw-r--r--remote/org.eclipse.remote.ui/src/org/eclipse/remote/ui/widgets/RemoteFileWidget.java300
-rw-r--r--remote/org.eclipse.remote.ui/src/org/eclipse/remote/ui/widgets/RemoteResourceBrowserWidget.java808
-rw-r--r--remote/pom.xml12
-rw-r--r--terminal/.gitignore17
-rw-r--r--terminal/CONTRIBUTING50
-rw-r--r--terminal/admin/findbugs-exclude.xml101
-rw-r--r--terminal/features/org.eclipse.tm.terminal.connector.cdtserial.feature/.project17
-rw-r--r--terminal/features/org.eclipse.tm.terminal.connector.cdtserial.feature/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--terminal/features/org.eclipse.tm.terminal.connector.cdtserial.feature/about.ini24
-rw-r--r--terminal/features/org.eclipse.tm.terminal.connector.cdtserial.feature/about.mappings9
-rw-r--r--terminal/features/org.eclipse.tm.terminal.connector.cdtserial.feature/about.properties32
-rw-r--r--terminal/features/org.eclipse.tm.terminal.connector.cdtserial.feature/build.properties17
-rw-r--r--terminal/features/org.eclipse.tm.terminal.connector.cdtserial.feature/cdt_logo_icon32.pngbin0 -> 1885 bytes
-rw-r--r--terminal/features/org.eclipse.tm.terminal.connector.cdtserial.feature/feature.properties38
-rw-r--r--terminal/features/org.eclipse.tm.terminal.connector.cdtserial.feature/feature.xml42
-rw-r--r--terminal/features/org.eclipse.tm.terminal.connector.local.feature/.project17
-rw-r--r--terminal/features/org.eclipse.tm.terminal.connector.local.feature/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--terminal/features/org.eclipse.tm.terminal.connector.local.feature/about.ini24
-rw-r--r--terminal/features/org.eclipse.tm.terminal.connector.local.feature/about.mappings9
-rw-r--r--terminal/features/org.eclipse.tm.terminal.connector.local.feature/about.properties32
-rw-r--r--terminal/features/org.eclipse.tm.terminal.connector.local.feature/build.properties17
-rw-r--r--terminal/features/org.eclipse.tm.terminal.connector.local.feature/cdt_logo_icon32.pngbin0 -> 1885 bytes
-rw-r--r--terminal/features/org.eclipse.tm.terminal.connector.local.feature/feature.properties38
-rw-r--r--terminal/features/org.eclipse.tm.terminal.connector.local.feature/feature.xml59
-rw-r--r--terminal/features/org.eclipse.tm.terminal.connector.local.feature/p2.inf22
-rw-r--r--terminal/features/org.eclipse.tm.terminal.connector.remote.feature/.project17
-rw-r--r--terminal/features/org.eclipse.tm.terminal.connector.remote.feature/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--terminal/features/org.eclipse.tm.terminal.connector.remote.feature/about.ini24
-rw-r--r--terminal/features/org.eclipse.tm.terminal.connector.remote.feature/about.mappings9
-rw-r--r--terminal/features/org.eclipse.tm.terminal.connector.remote.feature/about.properties32
-rw-r--r--terminal/features/org.eclipse.tm.terminal.connector.remote.feature/build.properties15
-rw-r--r--terminal/features/org.eclipse.tm.terminal.connector.remote.feature/cdt_logo_icon32.pngbin0 -> 1885 bytes
-rw-r--r--terminal/features/org.eclipse.tm.terminal.connector.remote.feature/feature.properties35
-rw-r--r--terminal/features/org.eclipse.tm.terminal.connector.remote.feature/feature.xml55
-rw-r--r--terminal/features/org.eclipse.tm.terminal.connector.ssh.feature/.project17
-rw-r--r--terminal/features/org.eclipse.tm.terminal.connector.ssh.feature/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--terminal/features/org.eclipse.tm.terminal.connector.ssh.feature/about.html38
-rw-r--r--terminal/features/org.eclipse.tm.terminal.connector.ssh.feature/build.properties15
-rw-r--r--terminal/features/org.eclipse.tm.terminal.connector.ssh.feature/feature.properties38
-rw-r--r--terminal/features/org.eclipse.tm.terminal.connector.ssh.feature/feature.xml54
-rw-r--r--terminal/features/org.eclipse.tm.terminal.connector.telnet.feature/.project17
-rw-r--r--terminal/features/org.eclipse.tm.terminal.connector.telnet.feature/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--terminal/features/org.eclipse.tm.terminal.connector.telnet.feature/about.ini24
-rw-r--r--terminal/features/org.eclipse.tm.terminal.connector.telnet.feature/about.mappings9
-rw-r--r--terminal/features/org.eclipse.tm.terminal.connector.telnet.feature/about.properties32
-rw-r--r--terminal/features/org.eclipse.tm.terminal.connector.telnet.feature/build.properties17
-rw-r--r--terminal/features/org.eclipse.tm.terminal.connector.telnet.feature/cdt_logo_icon32.pngbin0 -> 1885 bytes
-rw-r--r--terminal/features/org.eclipse.tm.terminal.connector.telnet.feature/feature.properties38
-rw-r--r--terminal/features/org.eclipse.tm.terminal.connector.telnet.feature/feature.xml51
-rw-r--r--terminal/features/org.eclipse.tm.terminal.control.feature/.project17
-rw-r--r--terminal/features/org.eclipse.tm.terminal.control.feature/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--terminal/features/org.eclipse.tm.terminal.control.feature/build.properties13
-rw-r--r--terminal/features/org.eclipse.tm.terminal.control.feature/feature.properties39
-rw-r--r--terminal/features/org.eclipse.tm.terminal.control.feature/feature.xml49
-rw-r--r--terminal/features/org.eclipse.tm.terminal.feature/.project28
-rw-r--r--terminal/features/org.eclipse.tm.terminal.feature/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--terminal/features/org.eclipse.tm.terminal.feature/build.properties15
-rw-r--r--terminal/features/org.eclipse.tm.terminal.feature/feature.properties40
-rw-r--r--terminal/features/org.eclipse.tm.terminal.feature/feature.xml40
-rw-r--r--terminal/features/org.eclipse.tm.terminal.feature/p2.inf5
-rw-r--r--terminal/features/org.eclipse.tm.terminal.view.feature/.project28
-rw-r--r--terminal/features/org.eclipse.tm.terminal.view.feature/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--terminal/features/org.eclipse.tm.terminal.view.feature/build.properties14
-rw-r--r--terminal/features/org.eclipse.tm.terminal.view.feature/feature.properties40
-rw-r--r--terminal/features/org.eclipse.tm.terminal.view.feature/feature.xml55
-rw-r--r--terminal/features/pom.xml42
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/.classpath7
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/.gitignore1
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/.options2
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/.project34
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/.settings/org.eclipse.jdt.launching.prefs3
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/.settings/org.eclipse.pde.api.tools.prefs184
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/.settings/org.eclipse.pde.prefs35
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/META-INF/MANIFEST.MF24
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/about.html38
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/build.properties19
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/plugin.properties22
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/plugin.xml32
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/activator/Activator.java122
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/connector/SerialConnector.java130
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/connector/SerialSettings.java169
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/controls/SerialConfigPanel.java112
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/controls/SerialSettingsPage.java267
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/launcher/SerialLauncherDelegate.java103
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/nls/Messages.java42
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/nls/Messages.properties19
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.local/.classpath7
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.local/.gitignore1
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.local/.options1
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.local/.project45
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.local/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.local/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.local/.settings/org.eclipse.jdt.launching.prefs3
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.local/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.local/.settings/org.eclipse.pde.api.tools.prefs184
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.local/.settings/org.eclipse.pde.prefs35
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.local/META-INF/MANIFEST.MF25
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.local/META-INF/p2.inf87
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.local/about.html38
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.local/build.properties20
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.local/icons/eview16/terminal_view.gifbin0 -> 938 bytes
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.local/plugin.properties27
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.local/plugin.xml200
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.local/src/org/eclipse/tm/terminal/connector/local/activator/UIPlugin.java120
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.local/src/org/eclipse/tm/terminal/connector/local/controls/LocalWizardConfigurationPanel.java187
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.local/src/org/eclipse/tm/terminal/connector/local/controls/Messages.java27
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.local/src/org/eclipse/tm/terminal/connector/local/controls/Messages.properties10
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.local/src/org/eclipse/tm/terminal/connector/local/launcher/LocalLauncherDelegate.java426
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.local/src/org/eclipse/tm/terminal/connector/local/launcher/LocalLauncherHandler.java79
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.local/src/org/eclipse/tm/terminal/connector/local/launcher/LocalMementoHandler.java64
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.process/.classpath7
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.process/.gitignore1
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.process/.options1
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.process/.project45
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.process/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.process/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.process/.settings/org.eclipse.jdt.launching.prefs3
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.process/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.process/.settings/org.eclipse.pde.api.tools.prefs184
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.process/.settings/org.eclipse.pde.prefs35
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.process/META-INF/MANIFEST.MF24
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.process/META-INF/p2.inf87
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.process/about.html38
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.process/build.properties19
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.process/plugin.properties24
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.process/plugin.xml34
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/ProcessConnector.java327
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/ProcessLauncherDelegate.java127
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/ProcessMonitor.java104
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/ProcessSettings.java305
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/ProcessSettingsPage.java191
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/activator/UIPlugin.java117
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/help/IContextHelpIds.java32
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/nls/Messages.java36
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/nls/Messages.properties14
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.remote/.classpath7
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.remote/.gitignore1
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.remote/.project34
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.remote/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.remote/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.remote/.settings/org.eclipse.jdt.launching.prefs3
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.remote/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.remote/.settings/org.eclipse.pde.api.tools.prefs184
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.remote/.settings/org.eclipse.pde.prefs35
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.remote/META-INF/MANIFEST.MF31
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.remote/about.html38
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.remote/build.properties19
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.remote/plugin.properties13
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.remote/plugin.xml45
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.remote/schema/parsers.exsd119
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/IRemoteSettings.java27
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/IRemoteTerminalConstants.java15
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/IRemoteTerminalParser.java37
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/controls/RemoteWizardConfigurationPanel.java192
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/internal/Activator.java125
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/internal/ArgumentParser.java364
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/internal/RemoteConnectionManager.java202
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/internal/RemoteConnector.java134
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/internal/RemoteSettings.java63
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/internal/RemoteSettingsPage.java99
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/internal/preferences/RemoteTerminalPreferenceInitializer.java28
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/internal/preferences/RemoteTerminalPreferencePage.java42
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/launcher/RemoteLauncherDelegate.java180
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/launcher/RemoteMementoHandler.java62
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/nls/Messages.java37
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/nls/Messages.properties19
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.classpath7
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.gitignore1
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.options1
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.project45
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.settings/org.eclipse.jdt.launching.prefs3
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.settings/org.eclipse.pde.api.tools.prefs184
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.settings/org.eclipse.pde.prefs35
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.ssh/META-INF/MANIFEST.MF25
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.ssh/about.html38
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.ssh/about.ini24
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.ssh/about.mappings9
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.ssh/about.properties32
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.ssh/build.properties23
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.ssh/cdt_logo_icon32.pngbin0 -> 1885 bytes
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.ssh/plugin.properties22
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.ssh/plugin.xml42
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/activator/UIPlugin.java145
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/ISshConstants.java27
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/ISshSettings.java81
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/KeyboardInteractiveDialog.java196
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/SshConnection.java382
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/SshConnector.java150
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/SshMessages.java99
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/SshMessages.properties55
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/SshSettings.java140
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/SshSettingsPage.java198
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/UserValidationDialog.java291
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/controls/SshWizardConfigurationPanel.java440
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/launcher/SshLauncherDelegate.java195
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/launcher/SshMementoHandler.java147
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/nls/Messages.java40
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/nls/Messages.properties17
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.classpath7
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.gitignore1
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.options1
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.project45
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.settings/.api_filters11
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.settings/org.eclipse.jdt.launching.prefs3
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.settings/org.eclipse.pde.api.tools.prefs184
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.settings/org.eclipse.pde.prefs35
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.telnet/META-INF/MANIFEST.MF23
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.telnet/about.html38
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.telnet/build.properties19
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.telnet/plugin.properties22
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.telnet/plugin.xml42
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/activator/UIPlugin.java105
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/ITelnetSettings.java48
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/NetworkPortMap.java62
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetCodes.java94
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetConnectWorker.java131
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetConnection.java704
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetConnector.java222
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetMessages.java31
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetMessages.properties23
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetOption.java686
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetProperties.java44
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetSettings.java109
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetSettingsPage.java248
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/controls/TelnetWizardConfigurationPanel.java202
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/launcher/TelnetLauncherDelegate.java165
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/launcher/TelnetMementoHandler.java60
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/nls/Messages.java37
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/nls/Messages.properties14
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/.classpath7
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/.gitignore1
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/.options4
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/.project34
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/.settings/org.eclipse.jdt.launching.prefs3
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/.settings/org.eclipse.pde.api.tools.prefs184
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/.settings/org.eclipse.pde.prefs35
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/HelpContexts.xml18
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/META-INF/MANIFEST.MF26
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/README.txt18
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/about.html38
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/about.ini24
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/about.mappings9
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/about.properties32
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/build.properties38
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/cdt_logo_icon32.pngbin0 -> 1885 bytes
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/icons/clcl16/clear_co.gifbin0 -> 595 bytes
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/icons/dlcl16/clear_co.gifbin0 -> 364 bytes
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/icons/elcl16/clear_co.gifbin0 -> 595 bytes
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/plugin.properties49
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/plugin.xml278
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/schema/connectors.exsd111
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/connector/TerminalConnector.java272
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/connector/TerminalToRemoteInjectionOutputStream.java208
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/CommandInputFieldWithHistory.java341
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/ICommandInputField.java36
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/ITerminalListener.java35
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/ITerminalListener2.java29
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/ITerminalMouseListener.java48
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/ITerminalMouseListener2.java74
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/ITerminalViewControl.java202
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/TerminalViewControlFactory.java46
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/actions/AbstractTerminalAction.java95
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/actions/ActionMessages.java35
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/actions/ActionMessages.properties27
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/actions/ImageConsts.java33
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/actions/TerminalActionClearAll.java53
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/actions/TerminalActionCopy.java69
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/actions/TerminalActionCut.java56
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/actions/TerminalActionPaste.java74
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/actions/TerminalActionSelectAll.java52
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/impl/ITerminalControlForText.java43
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/impl/TerminalMessages.java59
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/impl/TerminalMessages.properties56
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/impl/TerminalPlugin.java93
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/emulator/EditActionAccelerators.java70
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/emulator/IVT100EmulatorBackend.java230
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/emulator/LoggingOutputStream.java50
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/emulator/VT100BackendTraceDecorator.java214
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/emulator/VT100Emulator.java1600
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/emulator/VT100EmulatorBackend.java493
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/emulator/VT100TerminalControl.java1407
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/model/ISnapshotChanges.java96
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/model/SnapshotChanges.java421
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/model/SynchronizedTerminalTextData.java160
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/model/SystemDefaultColors.java113
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/model/TerminalTextData.java333
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataFastScroll.java302
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataSnapshot.java325
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataStore.java355
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataWindow.java259
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/preferences/ITerminalConstants.java50
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/preferences/TerminalColorPresets.java134
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/preferences/TerminalColorsFieldEditor.java227
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/preferences/TerminalPreferenceInitializer.java53
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/preferences/TerminalPreferencePage.java89
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/provisional/api/AbstractSettingsPage.java176
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/provisional/api/ISettingsPage.java82
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/provisional/api/ISettingsStore.java45
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/provisional/api/ITerminalConnector.java158
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/provisional/api/ITerminalControl.java203
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/provisional/api/Logger.java247
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/provisional/api/NullSettingsStore.java32
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/provisional/api/TerminalConnectorExtension.java100
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/provisional/api/TerminalState.java55
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/provisional/api/provider/TerminalConnectorImpl.java163
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/textcanvas/AbstractTextCanvasModel.java511
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/textcanvas/GridCanvas.java233
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/textcanvas/ILinelRenderer.java63
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/textcanvas/ITextCanvasModel.java143
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/textcanvas/ITextCanvasModelListener.java28
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/textcanvas/PipedInputStream.java335
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/textcanvas/PollingTextCanvasModel.java54
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/textcanvas/StyleMap.java278
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/textcanvas/TextCanvas.java572
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/textcanvas/TextLineRenderer.java248
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/textcanvas/VirtualCanvas.java357
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/terminal/model/ITerminalTextData.java159
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/terminal/model/ITerminalTextDataReadOnly.java93
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/terminal/model/ITerminalTextDataSnapshot.java234
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/terminal/model/LineSegment.java46
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/terminal/model/TerminalColor.java203
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/terminal/model/TerminalStyle.java285
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/terminal/model/TerminalTextDataFactory.java20
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/terminal/model/TextRange.java96
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/.classpath15
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/.gitignore1
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/.project28
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/.settings/org.eclipse.jdt.launching.prefs3
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/.settings/org.eclipse.pde.api.tools.prefs184
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/.settings/org.eclipse.pde.prefs35
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/META-INF/MANIFEST.MF24
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/about.html38
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/about.ini27
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/about.properties26
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/build.properties23
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/plugin.properties19
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/plugin.xml24
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/connector/TerminalConnectorFactoryTest.java317
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/connector/TerminalConnectorPluginTest.java64
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/connector/TerminalConnectorTest.java289
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/connector/TerminalToRemoteInjectionOutputStreamTest.java191
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/emulator/AllTestSuite.java38
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/emulator/MockTerminalControlForText.java60
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/emulator/VT100EmulatorBackendTest.java929
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/emulator/VT100EmulatorTest.java343
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/AbstractITerminalTextDataTest.java713
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/AllTestSuite.java47
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/SnapshotChangesTest.java692
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/SynchronizedTerminalTextDataTest.java21
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataFastScrollMaxHeightTest.java21
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataFastScrollTest.java21
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataPerformanceTest.java230
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataSnapshotTest.java1234
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataSnapshotWindowTest.java196
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataStoreTest.java21
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataTest.java21
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataWindowTest.java425
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextTestHelper.java113
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/speedtest/SpeedTestConnection.java120
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/speedtest/SpeedTestConnector.java113
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/speedtest/SpeedTestSettings.java71
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/terminalcanvas/Main.java37
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/terminalcanvas/Snippet48.java112
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/terminalcanvas/TerminalTextCanvas.java96
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/terminalcanvas/VirtualCanvas.java330
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/AbstractLineOrientedDataSource.java44
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/DataReader.java99
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/FastDataSource.java36
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/FileDataSource.java74
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/IDataSource.java21
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/IStatus.java15
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/LineCountingDataSource.java45
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/RandomDataSource.java48
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/TerminalTextUITest.java263
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/VT100DataSource.java239
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/textcanvas/PipedInputStreamPerformanceTest.java32
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/textcanvas/PipedStreamTest.java134
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/terminal/model/AllTestSuite.java40
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/terminal/model/StyleTest.java116
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/terminal/model/TerminalColorUITest.java154
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/terminal/test/AutomatedIntegrationSuite.java20
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/terminal/test/AutomatedPluginTestSuite.java39
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/terminal/test/AutomatedTestSuite.java46
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/teamConfig/Terminal All Unit Tests.launch16
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.test/teamConfig/Terminal AutomatedTests.launch16
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.core/.classpath7
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.core/.gitignore1
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.core/.options1
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.core/.project45
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.core/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.core/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.core/.settings/org.eclipse.jdt.launching.prefs3
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.core/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.core/.settings/org.eclipse.pde.api.tools.prefs184
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.core/.settings/org.eclipse.pde.prefs35
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.core/META-INF/MANIFEST.MF22
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.core/about.html38
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.core/about.ini24
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.core/about.mappings9
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.core/about.properties32
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.core/build.properties24
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.core/cdt_logo_icon32.pngbin0 -> 1885 bytes
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.core/plugin.properties16
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.core/plugin.xml27
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.core/schema/contextPropertiesProviders.exsd130
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/TerminalContextPropertiesProviderFactory.java230
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/TerminalServiceFactory.java53
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/activator/CoreBundleActivator.java52
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/interfaces/ITerminalContextPropertiesProvider.java55
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/interfaces/ITerminalService.java75
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/interfaces/ITerminalServiceOutputStreamMonitorListener.java29
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/interfaces/ITerminalTabListener.java29
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/interfaces/constants/IContextPropertiesConstants.java52
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/interfaces/constants/ILineSeparatorConstants.java34
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/interfaces/constants/ITerminalsConnectorConstants.java365
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/internal/PropertyTester.java34
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/nls/Messages.java37
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/nls/Messages.properties16
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/preferences/ScopedEclipsePreferences.java453
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/tracing/TraceHandler.java300
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/utils/Env.java111
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/.classpath7
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/.gitignore1
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/.options3
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/.project45
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/.settings/.api_filters35
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/.settings/org.eclipse.jdt.launching.prefs3
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/.settings/org.eclipse.pde.api.tools.prefs184
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/.settings/org.eclipse.pde.prefs35
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/META-INF/MANIFEST.MF45
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/about.html38
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/about.ini24
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/about.mappings9
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/about.properties32
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/build.properties26
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/cdt_logo_icon32.pngbin0 -> 1885 bytes
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/contexts.xml22
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/clcl16/command_input_field.gifbin0 -> 385 bytes
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/clcl16/lock_co.pngbin0 -> 560 bytes
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/clcl16/lock_co@2x.pngbin0 -> 1310 bytes
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/clcl16/new_terminal_view.gifbin0 -> 934 bytes
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/dlcl16/command_input_field.gifbin0 -> 239 bytes
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/dlcl16/disconnect.gifbin0 -> 139 bytes
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/dlcl16/lock_co.pngbin0 -> 462 bytes
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/dlcl16/lock_co@2x.pngbin0 -> 916 bytes
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/dlcl16/new_terminal_view.gifbin0 -> 175 bytes
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/elcl16/command_input_field.gifbin0 -> 239 bytes
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/elcl16/disconnect.gifbin0 -> 890 bytes
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/elcl16/lock_co.pngbin0 -> 560 bytes
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/elcl16/lock_co@2x.pngbin0 -> 1310 bytes
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/elcl16/new_terminal_view.gifbin0 -> 173 bytes
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/eview16/console_view.pngbin0 -> 452 bytes
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/eview16/console_view@2x.pngbin0 -> 729 bytes
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/eview16/terminal_view.gifbin0 -> 938 bytes
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/plugin.properties78
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/plugin.xml554
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/schema/launcherDelegates.exsd217
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/actions/AbstractAction.java183
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/actions/InvertColorsAction.java55
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/actions/NewTerminalViewAction.java76
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/actions/RenameTerminalAction.java65
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/actions/SelectEncodingAction.java66
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/actions/TabScrollLockAction.java54
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/actions/ToggleCommandFieldAction.java83
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/activator/UIPlugin.java276
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/controls/ConfigurationPanelControl.java413
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/controls/NoteCompositeHelper.java164
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/help/IContextHelpIds.java45
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/IConfigurationPanel.java146
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/IConfigurationPanelContainer.java38
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/IExternalExecutablesProperties.java47
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/ILauncherDelegate.java99
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/IMementoHandler.java38
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/IPreferenceKeys.java70
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/ITerminalsView.java42
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/IUIConstants.java26
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/ImageConsts.java104
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/tracing/ITraceIds.java31
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/ExternalExecutablesState.java55
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/PropertyTester.java57
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/SettingsStore.java60
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/dialogs/EncodingSelectionDialog.java221
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/dialogs/ErrorSettingsPanel.java56
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/dialogs/LaunchTerminalSettingsDialog.java696
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/handler/AbstractTriggerCommandHandler.java70
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/handler/DisconnectTerminalCommandHandler.java60
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/handler/LaunchTerminalCommandHandler.java160
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/handler/MaximizeViewHandler.java28
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/handler/NewTerminalViewHandler.java34
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/handler/QuickAccessHandler.java28
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/launcher/AbstractLauncherDelegate.java139
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/launcher/LauncherDelegateManager.java425
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/listeners/AbstractWindowListener.java123
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/listeners/WorkbenchPartListener.java90
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/listeners/WorkbenchWindowListener.java26
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/local/showin/DynamicContributionItems.java131
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/local/showin/ExternalExecutablesDialog.java446
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/local/showin/ExternalExecutablesManager.java216
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/local/showin/ExternalExecutablesUtils.java85
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/local/showin/IDetectExternalExecutable.java41
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/local/showin/detectors/DetectGitBash.java126
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/local/showin/detectors/DetectWSL.java167
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/manager/ConsoleManager.java664
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/nls/Messages.java166
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/nls/Messages.properties125
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/panels/AbstractConfigurationPanel.java159
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/panels/AbstractExtendedConfigurationPanel.java645
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/preferences/PreferencePage.java683
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/preferences/PreferencesInitializer.java38
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/services/TerminalService.java345
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/streams/AbstractStreamsConnector.java198
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/streams/InputStreamMonitor.java371
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/streams/OutputStreamMonitor.java336
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/streams/StreamsConnector.java99
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/streams/StreamsLauncherDelegate.java106
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/streams/StreamsSettings.java205
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/tabs/OpenFileMouseHandler.java271
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/tabs/TabCommandFieldHandler.java98
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/tabs/TabDisposeListener.java83
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/tabs/TabFolderManager.java878
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/tabs/TabFolderMenuHandler.java397
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/tabs/TabFolderSelectionListener.java51
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/tabs/TabFolderToolbarHandler.java343
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/tabs/TabTerminalListener.java178
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/view/OldTerminalsViewHandler.java124
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/view/TerminalsView.java759
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/view/TerminalsViewMementoHandler.java218
-rw-r--r--terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/view/showin/GitShowInContextHandler.java87
-rw-r--r--terminal/plugins/pom.xml42
-rw-r--r--terminal/pom.xml53
-rw-r--r--terminal/repo/.project11
-rw-r--r--terminal/repo/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--terminal/repo/README.md1
-rw-r--r--terminal/repo/category.xml67
-rw-r--r--terminal/repo/pom.xml31
-rw-r--r--testsrunner/org.eclipse.cdt.testsrunner.boost/.classpath4
-rw-r--r--testsrunner/org.eclipse.cdt.testsrunner.boost/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--testsrunner/org.eclipse.cdt.testsrunner.boost/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--testsrunner/org.eclipse.cdt.testsrunner.boost/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--testsrunner/org.eclipse.cdt.testsrunner.boost/META-INF/MANIFEST.MF4
-rw-r--r--testsrunner/org.eclipse.cdt.testsrunner.boost/about.html14
-rw-r--r--testsrunner/org.eclipse.cdt.testsrunner.feature/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--testsrunner/org.eclipse.cdt.testsrunner.feature/feature.xml13
-rw-r--r--testsrunner/org.eclipse.cdt.testsrunner.gtest/.classpath4
-rw-r--r--testsrunner/org.eclipse.cdt.testsrunner.gtest/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--testsrunner/org.eclipse.cdt.testsrunner.gtest/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--testsrunner/org.eclipse.cdt.testsrunner.gtest/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--testsrunner/org.eclipse.cdt.testsrunner.gtest/META-INF/MANIFEST.MF4
-rw-r--r--testsrunner/org.eclipse.cdt.testsrunner.gtest/about.html14
-rw-r--r--testsrunner/org.eclipse.cdt.testsrunner.qttest/.classpath4
-rw-r--r--testsrunner/org.eclipse.cdt.testsrunner.qttest/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--testsrunner/org.eclipse.cdt.testsrunner.qttest/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--testsrunner/org.eclipse.cdt.testsrunner.qttest/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--testsrunner/org.eclipse.cdt.testsrunner.qttest/META-INF/MANIFEST.MF4
-rw-r--r--testsrunner/org.eclipse.cdt.testsrunner.qttest/about.html14
-rw-r--r--testsrunner/org.eclipse.cdt.testsrunner.tap/.classpath4
-rw-r--r--testsrunner/org.eclipse.cdt.testsrunner.tap/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--testsrunner/org.eclipse.cdt.testsrunner.tap/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--testsrunner/org.eclipse.cdt.testsrunner.tap/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--testsrunner/org.eclipse.cdt.testsrunner.tap/META-INF/MANIFEST.MF4
-rw-r--r--testsrunner/org.eclipse.cdt.testsrunner.tap/about.html14
-rw-r--r--testsrunner/org.eclipse.cdt.testsrunner.tests/.classpath8
-rw-r--r--testsrunner/org.eclipse.cdt.testsrunner.tests/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--testsrunner/org.eclipse.cdt.testsrunner.tests/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--testsrunner/org.eclipse.cdt.testsrunner.tests/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--testsrunner/org.eclipse.cdt.testsrunner.tests/META-INF/MANIFEST.MF2
-rw-r--r--testsrunner/org.eclipse.cdt.testsrunner.tests/about.html14
-rw-r--r--testsrunner/org.eclipse.cdt.testsrunner/.classpath4
-rw-r--r--testsrunner/org.eclipse.cdt.testsrunner/.settings/.api_filters81
-rw-r--r--testsrunner/org.eclipse.cdt.testsrunner/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--testsrunner/org.eclipse.cdt.testsrunner/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--testsrunner/org.eclipse.cdt.testsrunner/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--testsrunner/org.eclipse.cdt.testsrunner/META-INF/MANIFEST.MF4
-rw-r--r--testsrunner/org.eclipse.cdt.testsrunner/about.html14
-rw-r--r--testsrunner/org.eclipse.cdt.testsrunner/about.ini24
-rw-r--r--testsrunner/org.eclipse.cdt.testsrunner/about.mappings9
-rw-r--r--testsrunner/org.eclipse.cdt.testsrunner/about.properties32
-rw-r--r--testsrunner/org.eclipse.cdt.testsrunner/build.properties6
-rw-r--r--testsrunner/org.eclipse.cdt.testsrunner/cdt_logo_icon32.pngbin0 -> 1885 bytes
-rw-r--r--testsrunner/org.eclipse.cdt.testsrunner/src/org/eclipse/cdt/testsrunner/internal/ui/view/ResultsView.java3
-rw-r--r--testsrunner/org.eclipse.cdt.testsrunner/src/org/eclipse/cdt/testsrunner/internal/ui/view/actions/HistoryDropDownAction.java2
-rw-r--r--testsrunner/org.eclipse.cdt.testsrunner/src/org/eclipse/cdt/testsrunner/launcher/BaseTestsLaunchDelegate.java6
-rw-r--r--testsrunner/pom.xml12
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino-feature/.project17
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino-feature/feature.properties35
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino-feature/feature.xml54
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino-feature/p2.inf3
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.core.tests/.classpath7
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.core.tests/.project28
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.core.tests/.settings/org.eclipse.jdt.core.prefs464
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.core.tests/.settings/org.eclipse.jdt.ui.prefs133
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.core.tests/META-INF/MANIFEST.MF10
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.core.tests/about.html36
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.core.tests/build.properties6
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.core.tests/src/org/eclipse/cdt/arduino/core/tests/BoardManagerTests.java26
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.core.tests/src/org/eclipse/cdt/arduino/core/tests/FullIntegration.java215
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.core.tests/src/org/eclipse/cdt/arduino/core/tests/SysoutProgressMonitor.java41
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.core/.classpath7
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.core/.gitignore2
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.core/.project28
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.core/.settings/org.eclipse.jdt.core.prefs464
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.core/.settings/org.eclipse.jdt.ui.prefs133
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.core/META-INF/MANIFEST.MF29
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.core/about.html36
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.core/build.properties8
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.core/plugin.properties16
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.core/plugin.xml109
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/Activator.java78
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/ArduinoPreferences.java97
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/ArduinoProjectGenerator.java56
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/ArduinoProjectNature.java53
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/HierarchicalProperties.java194
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/LinkedProperties.java39
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/Messages.java40
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/board/ArduinoBoard.java106
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/board/ArduinoHelp.java21
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/board/ArduinoLibrary.java335
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/board/ArduinoManager.java782
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/board/ArduinoPackage.java239
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/board/ArduinoPlatform.java421
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/board/ArduinoTool.java88
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/board/ArduinoToolSystem.java101
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/board/LibraryIndex.java23
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/board/PackageIndex.java24
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/board/ToolDependency.java50
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/build/ArduinoBuildConfiguration.java876
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/build/ArduinoBuildConfigurationProvider.java115
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/build/ArduinoToolChain.java44
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/build/ArduinoToolChainProvider.java14
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/launch/ArduinoLaunch.java70
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/launch/ArduinoLaunchConfigurationDelegate.java120
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/launch/ArduinoLaunchConfigurationProvider.java45
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/launch/ArduinoLaunchDescriptorType.java34
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/messages.properties22
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/remote/ArduinoLaunchTargetProvider.java22
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/remote/ArduinoRemoteConnection.java205
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.core/templates/Makefile240
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.core/templates/cppsketch/arduino.cpp9
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.core/templates/cppsketch/manifest.xml5
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.ui/.classpath7
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.ui/.project33
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.ui/.settings/org.eclipse.jdt.core.prefs464
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.ui/.settings/org.eclipse.jdt.ui.prefs133
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.ui/META-INF/MANIFEST.MF29
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.ui/about.html36
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.ui/build.properties8
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.ui/icons/arduino.pngbin913 -> 0 bytes
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.ui/icons/arduino48.pngbin4350 -> 0 bytes
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.ui/icons/cprojects.gifbin365 -> 0 bytes
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.ui/icons/list-add.gifbin551 -> 0 bytes
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.ui/icons/list-delete.gifbin564 -> 0 bytes
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.ui/icons/newcc_app.gifbin630 -> 0 bytes
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.ui/plugin.properties20
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.ui/plugin.xml187
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/Activator.java92
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/FormTextHoverManager.java365
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/LibraryTree.java303
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/Messages.java51
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/downloads/ArduinoDownloadsManager.java125
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/downloads/LibrariesTabControl.java287
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/downloads/OpenDownloadsManager.java26
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/downloads/PlatformsTabControl.java281
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/downloads/SelectLibrariesDialog.java103
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/downloads/SelectPlatformsDialog.java129
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/downloads/UpdateLibrariesDialog.java134
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/downloads/UpdatePlatformsDialog.java140
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/launch/ArduinoDescriptorLabelProvider.java35
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/launch/ArduinoLaunchConfigurationTabGroup.java27
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/messages.properties38
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/preferences/ArduinoPreferencePage.java110
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/project/ArduinoPropertyTester.java29
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/project/LibrariesPropertyPage.java74
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/project/NewArduinoCPPSketchWizard.java50
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/project/NewArduinoProjectWizard.java25
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/remote/ArduinoRemoteServicesUI.java90
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/remote/ArduinoTargetPropertyPage.java124
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/remote/BoardPropertyControl.java286
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/remote/NewArduinoTargetWizard.java121
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/remote/NewArduinoTargetWizardPage.java124
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/terminal/ArduinoTerminalConfigPanel.java107
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/terminal/ArduinoTerminalLauncher.java24
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/terminal/ArduinoTerminalSettings.java34
-rw-r--r--toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/terminal/ArduinoTerminalSettingsPage.java293
-rw-r--r--toolchains/arduino/pom.xml16
-rw-r--r--tools.templates/org.eclipse.tools.templates.core/.classpath7
-rw-r--r--tools.templates/org.eclipse.tools.templates.core/.project34
-rw-r--r--tools.templates/org.eclipse.tools.templates.core/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--tools.templates/org.eclipse.tools.templates.core/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--tools.templates/org.eclipse.tools.templates.core/.settings/org.eclipse.jdt.launching.prefs3
-rw-r--r--tools.templates/org.eclipse.tools.templates.core/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--tools.templates/org.eclipse.tools.templates.core/.settings/org.eclipse.pde.api.tools.prefs184
-rw-r--r--tools.templates/org.eclipse.tools.templates.core/.settings/org.eclipse.pde.prefs35
-rw-r--r--tools.templates/org.eclipse.tools.templates.core/META-INF/MANIFEST.MF13
-rw-r--r--tools.templates/org.eclipse.tools.templates.core/about.html38
-rw-r--r--tools.templates/org.eclipse.tools.templates.core/build.properties7
-rw-r--r--tools.templates/org.eclipse.tools.templates.core/plugin.properties13
-rw-r--r--tools.templates/org.eclipse.tools.templates.core/src/org/eclipse/tools/templates/core/IGenerator.java58
-rw-r--r--tools.templates/org.eclipse.tools.templates.freemarker/.classpath7
-rw-r--r--tools.templates/org.eclipse.tools.templates.freemarker/.project34
-rw-r--r--tools.templates/org.eclipse.tools.templates.freemarker/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--tools.templates/org.eclipse.tools.templates.freemarker/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--tools.templates/org.eclipse.tools.templates.freemarker/.settings/org.eclipse.jdt.launching.prefs3
-rw-r--r--tools.templates/org.eclipse.tools.templates.freemarker/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--tools.templates/org.eclipse.tools.templates.freemarker/.settings/org.eclipse.pde.api.tools.prefs184
-rw-r--r--tools.templates/org.eclipse.tools.templates.freemarker/.settings/org.eclipse.pde.prefs35
-rw-r--r--tools.templates/org.eclipse.tools.templates.freemarker/META-INF/MANIFEST.MF18
-rw-r--r--tools.templates/org.eclipse.tools.templates.freemarker/about.html38
-rw-r--r--tools.templates/org.eclipse.tools.templates.freemarker/build.properties7
-rw-r--r--tools.templates/org.eclipse.tools.templates.freemarker/plugin.properties13
-rw-r--r--tools.templates/org.eclipse.tools.templates.freemarker/src/org/eclipse/tools/templates/freemarker/FMGenerator.java243
-rw-r--r--tools.templates/org.eclipse.tools.templates.freemarker/src/org/eclipse/tools/templates/freemarker/FMProjectGenerator.java98
-rw-r--r--tools.templates/org.eclipse.tools.templates.freemarker/src/org/eclipse/tools/templates/freemarker/FileTemplate.java67
-rw-r--r--tools.templates/org.eclipse.tools.templates.freemarker/src/org/eclipse/tools/templates/freemarker/SourceRoot.java28
-rw-r--r--tools.templates/org.eclipse.tools.templates.freemarker/src/org/eclipse/tools/templates/freemarker/TemplateManifest.java42
-rw-r--r--tools.templates/org.eclipse.tools.templates.freemarker/src/org/eclipse/tools/templates/freemarker/internal/Messages.java28
-rw-r--r--tools.templates/org.eclipse.tools.templates.freemarker/src/org/eclipse/tools/templates/freemarker/internal/messages.properties4
-rw-r--r--tools.templates/org.eclipse.tools.templates.ui/.classpath7
-rw-r--r--tools.templates/org.eclipse.tools.templates.ui/.project34
-rw-r--r--tools.templates/org.eclipse.tools.templates.ui/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--tools.templates/org.eclipse.tools.templates.ui/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--tools.templates/org.eclipse.tools.templates.ui/.settings/org.eclipse.jdt.launching.prefs3
-rw-r--r--tools.templates/org.eclipse.tools.templates.ui/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--tools.templates/org.eclipse.tools.templates.ui/.settings/org.eclipse.pde.api.tools.prefs184
-rw-r--r--tools.templates/org.eclipse.tools.templates.ui/.settings/org.eclipse.pde.prefs35
-rw-r--r--tools.templates/org.eclipse.tools.templates.ui/META-INF/MANIFEST.MF18
-rw-r--r--tools.templates/org.eclipse.tools.templates.ui/about.html38
-rw-r--r--tools.templates/org.eclipse.tools.templates.ui/build.properties9
-rw-r--r--tools.templates/org.eclipse.tools.templates.ui/plugin.properties13
-rw-r--r--tools.templates/org.eclipse.tools.templates.ui/plugin.xml6
-rw-r--r--tools.templates/org.eclipse.tools.templates.ui/schema/templates.exsd187
-rw-r--r--tools.templates/org.eclipse.tools.templates.ui/src/org/eclipse/tools/templates/ui/Messages.java31
-rw-r--r--tools.templates/org.eclipse.tools.templates.ui/src/org/eclipse/tools/templates/ui/NewWizard.java83
-rw-r--r--tools.templates/org.eclipse.tools.templates.ui/src/org/eclipse/tools/templates/ui/ProjectImportConfigurator.java173
-rw-r--r--tools.templates/org.eclipse.tools.templates.ui/src/org/eclipse/tools/templates/ui/TemplateSelectionPage.java168
-rw-r--r--tools.templates/org.eclipse.tools.templates.ui/src/org/eclipse/tools/templates/ui/TemplateWizard.java135
-rw-r--r--tools.templates/org.eclipse.tools.templates.ui/src/org/eclipse/tools/templates/ui/internal/Activator.java41
-rw-r--r--tools.templates/org.eclipse.tools.templates.ui/src/org/eclipse/tools/templates/ui/internal/Tag.java54
-rw-r--r--tools.templates/org.eclipse.tools.templates.ui/src/org/eclipse/tools/templates/ui/internal/TagListViewer.java89
-rw-r--r--tools.templates/org.eclipse.tools.templates.ui/src/org/eclipse/tools/templates/ui/internal/Template.java93
-rw-r--r--tools.templates/org.eclipse.tools.templates.ui/src/org/eclipse/tools/templates/ui/internal/TemplateExtension.java88
-rw-r--r--tools.templates/org.eclipse.tools.templates.ui/src/org/eclipse/tools/templates/ui/internal/TemplateTable.java204
-rw-r--r--tools.templates/org.eclipse.tools.templates.ui/src/org/eclipse/tools/templates/ui/messages.properties6
-rw-r--r--tools.templates/pom.xml25
-rw-r--r--unittest/org.eclipse.cdt.unittest.feature/.project17
-rw-r--r--unittest/org.eclipse.cdt.unittest.feature/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--unittest/org.eclipse.cdt.unittest.feature/.settings/org.eclipse.core.runtime.prefs2
-rw-r--r--unittest/org.eclipse.cdt.unittest.feature/about.html38
-rw-r--r--unittest/org.eclipse.cdt.unittest.feature/about.ini24
-rw-r--r--unittest/org.eclipse.cdt.unittest.feature/about.mappings9
-rw-r--r--unittest/org.eclipse.cdt.unittest.feature/about.properties32
-rw-r--r--unittest/org.eclipse.cdt.unittest.feature/build.properties23
-rw-r--r--unittest/org.eclipse.cdt.unittest.feature/cdt_logo_icon32.pngbin0 -> 1885 bytes
-rw-r--r--unittest/org.eclipse.cdt.unittest.feature/feature.properties22
-rw-r--r--unittest/org.eclipse.cdt.unittest.feature/feature.xml61
-rw-r--r--unittest/org.eclipse.cdt.unittest/.classpath11
-rw-r--r--unittest/org.eclipse.cdt.unittest/.project34
-rw-r--r--unittest/org.eclipse.cdt.unittest/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--unittest/org.eclipse.cdt.unittest/.settings/org.eclipse.core.runtime.prefs2
-rw-r--r--unittest/org.eclipse.cdt.unittest/.settings/org.eclipse.jdt.core.prefs486
-rw-r--r--unittest/org.eclipse.cdt.unittest/.settings/org.eclipse.jdt.launching.prefs3
-rw-r--r--unittest/org.eclipse.cdt.unittest/.settings/org.eclipse.jdt.ui.prefs213
-rw-r--r--unittest/org.eclipse.cdt.unittest/.settings/org.eclipse.pde.api.tools.prefs184
-rw-r--r--unittest/org.eclipse.cdt.unittest/.settings/org.eclipse.pde.prefs35
-rw-r--r--unittest/org.eclipse.cdt.unittest/META-INF/MANIFEST.MF30
-rw-r--r--unittest/org.eclipse.cdt.unittest/about.html38
-rw-r--r--unittest/org.eclipse.cdt.unittest/about.ini24
-rw-r--r--unittest/org.eclipse.cdt.unittest/about.mappings9
-rw-r--r--unittest/org.eclipse.cdt.unittest/about.properties32
-rw-r--r--unittest/org.eclipse.cdt.unittest/build.properties29
-rw-r--r--unittest/org.eclipse.cdt.unittest/cdt_logo_icon32.pngbin0 -> 1885 bytes
-rw-r--r--unittest/org.eclipse.cdt.unittest/icons/eview16/cppunit.gifbin0 -> 219 bytes
-rw-r--r--unittest/org.eclipse.cdt.unittest/icons/obj16/test_notrun.gifbin0 -> 362 bytes
-rw-r--r--unittest/org.eclipse.cdt.unittest/plugin.properties31
-rw-r--r--unittest/org.eclipse.cdt.unittest/plugin.xml181
-rw-r--r--unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/CDTUnitTestPlugin.java89
-rw-r--r--unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/internal/launcher/CTestingTab.java205
-rw-r--r--unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/internal/launcher/DsfGdbRunTestsLaunchDelegate.java35
-rw-r--r--unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/internal/launcher/EmptyConfigurationTabGroup.java31
-rw-r--r--unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/internal/launcher/LauncherMessages.java37
-rw-r--r--unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/internal/launcher/LauncherMessages.properties21
-rw-r--r--unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/internal/launcher/RunTestsLaunchDelegate.java34
-rw-r--r--unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/internal/launcher/TestingProcessFactory.java50
-rw-r--r--unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/launcher/BaseTestsLaunchDelegate.java273
-rw-r--r--unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/launcher/CDTMessages.java32
-rw-r--r--unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/launcher/CDTMessages.properties19
-rw-r--r--unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/launcher/CDTTestRunnerClient.java408
-rw-r--r--unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/launcher/CDTTestViewSupport.java148
-rw-r--r--unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/ui/ActionsMessages.java37
-rw-r--r--unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/ui/ActionsMessages.properties23
-rw-r--r--unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/ui/OpenEditorAtLineAction.java176
-rw-r--r--unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/ui/OpenTestAction.java324
-rw-r--r--unittest/pom.xml25
-rw-r--r--upc/org.eclipse.cdt.bupc-feature/.project17
-rw-r--r--upc/org.eclipse.cdt.bupc-feature/build.properties15
-rw-r--r--upc/org.eclipse.cdt.bupc-feature/feature.properties36
-rw-r--r--upc/org.eclipse.cdt.bupc-feature/feature.xml29
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc.feature/.project17
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc.feature/build.properties15
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc.feature/feature.properties36
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc.feature/feature.xml34
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc.feature/sourceTemplateFeature/p2.inf1
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc.sdk.feature/.project17
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc.sdk.feature/build.properties16
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc.sdk.feature/feature-no-source.properties1
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc.sdk.feature/feature.properties36
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc.sdk.feature/feature.xml31
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc.tests/.classpath7
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc.tests/.project28
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc.tests/.settings/org.eclipse.jdt.core.prefs464
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc.tests/.settings/org.eclipse.jdt.ui.prefs133
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc.tests/META-INF/MANIFEST.MF18
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc.tests/about.html36
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc.tests/build.properties20
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc.tests/plugin.properties18
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/AutomatedIntegrationSuite.java44
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCCSpecTests.java34
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCCommentTests.java26
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCCompleteParser2Tests.java43
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCCompletionBasicTest.java30
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCCompletionParseTest.java33
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCDOMLocationMacroTests.java35
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCDOMLocationTests.java33
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCDOMPreprocessorInformationTest.java27
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCDigraphTrigraphTests.java33
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCGCCTests.java34
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCKnRTests.java30
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCLanguageExtensionTests.java506
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCSelectionParseTest.java33
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCTaskParserTest.java27
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCTests.java119
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCUtilOldTests.java27
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCUtilTests.java27
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/.classpath7
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/.project34
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/.settings/org.eclipse.jdt.core.prefs464
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/.settings/org.eclipse.jdt.ui.prefs133
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/META-INF/MANIFEST.MF18
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/about.html36
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/about.mappings9
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/about.properties28
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/build.properties26
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/grammar/build.xml60
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/grammar/parserBuild.properties18
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/grammar/upc/UPCExpressionParser.g25
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/grammar/upc/UPCGrammarExtensions.g223
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/grammar/upc/UPCNoCastExpressionParser.g25
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/grammar/upc/UPCParser.g26
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/grammar/upc/UPCSizeofExpressionParser.g32
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/plugin.properties18
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/plugin.xml29
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/parser/upc/DOMToUPCTokenMap.java441
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/parser/upc/IUPCNodeFactory.java58
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/parser/upc/UPCASTNodeFactory.java129
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/parser/upc/UPCKeyword.java93
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/parser/upc/UPCLanguageKeywords.java32
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/parser/upc/UPCParserAction.java216
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/parser/upc/UPCSecondaryParserFactory.java52
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/UPCLanguage.java90
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTCompositeTypeSpecifier.java22
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTDeclSpecifier.java55
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTElaboratedTypeSpecifier.java22
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTEnumerationSpecifier.java22
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTForallStatement.java60
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTKeywordExpression.java32
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTLayoutQualifier.java33
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTSimpleDeclSpecifier.java22
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTSynchronizationStatement.java43
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTTypeIdSizeofExpression.java32
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTTypedefNameSpecifier.java23
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTUnarySizeofExpression.java32
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCExpressionParser.java2060
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCExpressionParserprs.java764
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCExpressionParsersym.java55
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCNoCastExpressionParser.java2053
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCNoCastExpressionParserprs.java752
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCNoCastExpressionParsersym.java55
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCParser.java2032
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCParserprs.java1064
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCParsersym.java54
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCSizeofExpressionParser.java2029
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCSizeofExpressionParserprs.java741
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCSizeofExpressionParsersym.java55
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTCompositeTypeSpecifier.java127
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTElaboratedTypeSpecifier.java124
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTEnumerationSpecifier.java126
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTForallStatement.java120
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTKeywordExpression.java93
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTLayoutQualifier.java70
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTSimpleDeclSpecifier.java112
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTSynchronizationStatement.java98
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTTypeIdSizeofExpression.java61
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTTypedefNameSpecifier.java122
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTUnarySizeofExpression.java62
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/templates/default-templates.properties17
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/templates/default-templates.xml45
-rw-r--r--upc/org.eclipse.cdt.managedbuilder.bupc.ui/.classpath7
-rw-r--r--upc/org.eclipse.cdt.managedbuilder.bupc.ui/.project29
-rw-r--r--upc/org.eclipse.cdt.managedbuilder.bupc.ui/.settings/org.eclipse.jdt.core.prefs464
-rw-r--r--upc/org.eclipse.cdt.managedbuilder.bupc.ui/.settings/org.eclipse.jdt.ui.prefs133
-rw-r--r--upc/org.eclipse.cdt.managedbuilder.bupc.ui/.settings/org.eclipse.ltk.core.refactoring.prefs3
-rw-r--r--upc/org.eclipse.cdt.managedbuilder.bupc.ui/META-INF/MANIFEST.MF22
-rw-r--r--upc/org.eclipse.cdt.managedbuilder.bupc.ui/about.html36
-rw-r--r--upc/org.eclipse.cdt.managedbuilder.bupc.ui/about.mappings9
-rw-r--r--upc/org.eclipse.cdt.managedbuilder.bupc.ui/about.properties28
-rw-r--r--upc/org.eclipse.cdt.managedbuilder.bupc.ui/build.properties14
-rw-r--r--upc/org.eclipse.cdt.managedbuilder.bupc.ui/plugin.properties79
-rw-r--r--upc/org.eclipse.cdt.managedbuilder.bupc.ui/plugin.xml742
-rw-r--r--upc/org.eclipse.cdt.managedbuilder.bupc.ui/src/org/eclipse/cdt/managedbuilder/bupc/ui/UPCWizardsPlugin.java107
-rw-r--r--upc/org.eclipse.cdt.managedbuilder.bupc.ui/templates/src/Basename.upc15
-rw-r--r--upc/org.eclipse.cdt.managedbuilder.bupc.ui/templates/template.properties15
-rw-r--r--upc/org.eclipse.cdt.managedbuilder.bupc.ui/templates/template.xml65
-rw-r--r--upc/pom.xml15
-rw-r--r--util/org.eclipse.cdt.util/.classpath2
-rw-r--r--util/org.eclipse.cdt.util/.project6
-rw-r--r--util/org.eclipse.cdt.util/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--util/org.eclipse.cdt.util/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--util/org.eclipse.cdt.util/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--util/org.eclipse.cdt.util/META-INF/MANIFEST.MF4
-rw-r--r--util/org.eclipse.cdt.util/about.html14
-rw-r--r--util/org.eclipse.cdt.util/about.mappings6
-rw-r--r--util/org.eclipse.cdt.util/src/org/eclipse/cdt/internal/core/parser/util/DOMSearchUtil.java2
-rw-r--r--util/pom.xml12
-rw-r--r--[-rwxr-xr-x]visualizer/org.eclipse.cdt.visualizer-feature/.project0
-rw-r--r--visualizer/org.eclipse.cdt.visualizer-feature/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--[-rwxr-xr-x]visualizer/org.eclipse.cdt.visualizer-feature/build.properties0
-rw-r--r--visualizer/org.eclipse.cdt.visualizer-feature/feature.xml13
-rw-r--r--[-rwxr-xr-x]visualizer/org.eclipse.cdt.visualizer.core/.classpath2
-rw-r--r--[-rwxr-xr-x]visualizer/org.eclipse.cdt.visualizer.core/.project0
-rw-r--r--visualizer/org.eclipse.cdt.visualizer.core/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--[-rwxr-xr-x]visualizer/org.eclipse.cdt.visualizer.core/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--visualizer/org.eclipse.cdt.visualizer.core/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--[-rwxr-xr-x]visualizer/org.eclipse.cdt.visualizer.core/ABOUT.txt0
-rw-r--r--[-rwxr-xr-x]visualizer/org.eclipse.cdt.visualizer.core/META-INF/MANIFEST.MF4
-rw-r--r--visualizer/org.eclipse.cdt.visualizer.core/about.html14
-rw-r--r--[-rwxr-xr-x]visualizer/org.eclipse.cdt.visualizer.core/build.properties0
-rw-r--r--[-rwxr-xr-x]visualizer/org.eclipse.cdt.visualizer.core/src/org/eclipse/cdt/visualizer/core/ExtensionElement.java2
-rw-r--r--[-rwxr-xr-x]visualizer/org.eclipse.cdt.visualizer.core/src/org/eclipse/cdt/visualizer/core/ResourceManager.java10
-rw-r--r--[-rwxr-xr-x]visualizer/org.eclipse.cdt.visualizer.core/src/org/eclipse/cdt/visualizer/core/plugin/CDTVisualizerCorePlugin.java0
-rw-r--r--visualizer/org.eclipse.cdt.visualizer.examples/.classpath2
-rw-r--r--visualizer/org.eclipse.cdt.visualizer.examples/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--visualizer/org.eclipse.cdt.visualizer.examples/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--visualizer/org.eclipse.cdt.visualizer.examples/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--visualizer/org.eclipse.cdt.visualizer.examples/META-INF/MANIFEST.MF5
-rw-r--r--visualizer/org.eclipse.cdt.visualizer.examples/about.html14
-rw-r--r--visualizer/org.eclipse.cdt.visualizer.examples/build.properties4
-rw-r--r--[-rwxr-xr-x]visualizer/org.eclipse.cdt.visualizer.ui/.classpath2
-rw-r--r--[-rwxr-xr-x]visualizer/org.eclipse.cdt.visualizer.ui/.project0
-rw-r--r--visualizer/org.eclipse.cdt.visualizer.ui/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--[-rwxr-xr-x]visualizer/org.eclipse.cdt.visualizer.ui/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--visualizer/org.eclipse.cdt.visualizer.ui/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--[-rwxr-xr-x]visualizer/org.eclipse.cdt.visualizer.ui/ABOUT.txt0
-rw-r--r--[-rwxr-xr-x]visualizer/org.eclipse.cdt.visualizer.ui/META-INF/MANIFEST.MF4
-rw-r--r--visualizer/org.eclipse.cdt.visualizer.ui/about.html14
-rw-r--r--visualizer/org.eclipse.cdt.visualizer.ui/about.ini24
-rw-r--r--visualizer/org.eclipse.cdt.visualizer.ui/about.mappings9
-rw-r--r--visualizer/org.eclipse.cdt.visualizer.ui/about.properties32
-rw-r--r--[-rwxr-xr-x]visualizer/org.eclipse.cdt.visualizer.ui/build.properties6
-rw-r--r--visualizer/org.eclipse.cdt.visualizer.ui/cdt_logo_icon32.pngbin0 -> 1885 bytes
-rw-r--r--[-rwxr-xr-x]visualizer/org.eclipse.cdt.visualizer.ui/icons/full/view16/visualizer_view.pngbin2921 -> 2921 bytes
-rw-r--r--[-rwxr-xr-x]visualizer/org.eclipse.cdt.visualizer.ui/plugin.xml0
-rw-r--r--[-rwxr-xr-x]visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/Visualizer.java0
-rw-r--r--[-rwxr-xr-x]visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/VisualizerAction.java0
-rw-r--r--visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/VisualizerViewer.java6
-rw-r--r--[-rwxr-xr-x]visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/canvas/BufferedCanvas.java3
-rw-r--r--[-rwxr-xr-x]visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/canvas/GraphicCanvas.java0
-rw-r--r--[-rwxr-xr-x]visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/canvas/GraphicObject.java0
-rw-r--r--[-rwxr-xr-x]visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/canvas/IGraphicObject.java0
-rw-r--r--visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/canvas/VirtualBoundsGraphicObject.java10
-rw-r--r--visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/events/VisualizerViewerEvent.java4
-rw-r--r--[-rwxr-xr-x]visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/plugin/CDTVisualizerUIPlugin.java0
-rw-r--r--[-rwxr-xr-x]visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/test/TestCanvas.java2
-rw-r--r--visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/test/TestCanvasVisualizer.java4
-rw-r--r--[-rwxr-xr-x]visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/util/Colors.java0
-rw-r--r--[-rwxr-xr-x]visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/util/Event.java10
-rw-r--r--[-rwxr-xr-x]visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/util/GUIUtils.java0
-rw-r--r--[-rwxr-xr-x]visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/util/ListenerList.java0
-rw-r--r--[-rwxr-xr-x]visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/util/SelectionManager.java0
-rw-r--r--[-rwxr-xr-x]visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/util/SelectionProviderAdapter.java0
-rw-r--r--[-rwxr-xr-x]visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/util/Timer.java0
-rw-r--r--[-rwxr-xr-x]visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/util/UIResourceManager.java4
-rw-r--r--[-rwxr-xr-x]visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/util/WorkbenchSelectionAdapter.java0
-rw-r--r--visualizer/pom.xml12
-rw-r--r--windows/org.eclipse.cdt.msw-feature/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--windows/org.eclipse.cdt.msw-feature/feature.properties2
-rw-r--r--windows/org.eclipse.cdt.msw-feature/feature.xml17
-rw-r--r--windows/org.eclipse.cdt.msw.build.tests/.classpath2
-rw-r--r--windows/org.eclipse.cdt.msw.build.tests/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--windows/org.eclipse.cdt.msw.build.tests/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--windows/org.eclipse.cdt.msw.build.tests/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--windows/org.eclipse.cdt.msw.build.tests/META-INF/MANIFEST.MF7
-rw-r--r--windows/org.eclipse.cdt.msw.build.tests/about.html14
-rw-r--r--windows/org.eclipse.cdt.msw.build.tests/build.properties4
-rw-r--r--windows/org.eclipse.cdt.msw.build.tests/plugin.properties14
-rw-r--r--windows/org.eclipse.cdt.msw.build.tests/src/org/eclipse/cdt/internal/msw/build/tests/MSVCBuildCommandParserTests.java7
-rw-r--r--windows/org.eclipse.cdt.msw.build/.classpath4
-rw-r--r--windows/org.eclipse.cdt.msw.build/.project6
-rw-r--r--windows/org.eclipse.cdt.msw.build/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--windows/org.eclipse.cdt.msw.build/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--windows/org.eclipse.cdt.msw.build/.settings/org.eclipse.jdt.ui.prefs80
-rw-r--r--windows/org.eclipse.cdt.msw.build/META-INF/MANIFEST.MF8
-rw-r--r--windows/org.eclipse.cdt.msw.build/about.html14
-rw-r--r--windows/org.eclipse.cdt.msw.build/about.ini24
-rw-r--r--windows/org.eclipse.cdt.msw.build/about.mappings9
-rw-r--r--windows/org.eclipse.cdt.msw.build/about.properties32
-rw-r--r--windows/org.eclipse.cdt.msw.build/build.properties6
-rw-r--r--windows/org.eclipse.cdt.msw.build/cdt_logo_icon32.pngbin0 -> 1885 bytes
-rw-r--r--windows/org.eclipse.cdt.msw.build/plugin.properties4
-rw-r--r--windows/org.eclipse.cdt.msw.build/plugin.xml12
-rw-r--r--windows/org.eclipse.cdt.msw.build/src/org/eclipse/cdt/internal/msw/build/IVSVersionConstants.java19
-rw-r--r--windows/org.eclipse.cdt.msw.build/src/org/eclipse/cdt/internal/msw/build/MSVCToolChainInfo.java49
-rw-r--r--windows/org.eclipse.cdt.msw.build/src/org/eclipse/cdt/internal/msw/build/ProcessOutputUtil.java43
-rw-r--r--windows/org.eclipse.cdt.msw.build/src/org/eclipse/cdt/internal/msw/build/VSInstallation.java93
-rw-r--r--windows/org.eclipse.cdt.msw.build/src/org/eclipse/cdt/internal/msw/build/VSInstallationRegistry.java61
-rw-r--r--windows/org.eclipse.cdt.msw.build/src/org/eclipse/cdt/internal/msw/build/VSVersionNumber.java62
-rw-r--r--windows/org.eclipse.cdt.msw.build/src/org/eclipse/cdt/internal/msw/build/core/ClangClBuiltinSpecsDetector.java30
-rw-r--r--windows/org.eclipse.cdt.msw.build/src/org/eclipse/cdt/msw/build/Activator.java2
-rw-r--r--windows/org.eclipse.cdt.msw.build/src/org/eclipse/cdt/msw/build/WinEnvironmentVariableSupplier.java119
-rw-r--r--windows/org.eclipse.cdt.msw.build/src/org/eclipse/cdt/msw/build/core/MSVCBuildCommandParser.java105
-rw-r--r--windows/pom.xml12
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/.classpath7
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/.project28
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/.settings/org.eclipse.jdt.core.prefs464
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/.settings/org.eclipse.jdt.ui.prefs133
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/META-INF/MANIFEST.MF19
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/about.html36
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/build.properties20
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/VectorExtensionsTest.java146
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/XlcExtensionsTest.java218
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/XlcExtensionsTestSuite.java29
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/XlcTestBase.java49
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcCompletionHangingTest.java54
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCPPImplicitNameTests.java37
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCPPSpecTest.java37
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCPPTests.java46
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCSpecTests.java37
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCommentTests.java38
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCompleteParser2Tests.java38
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCompletionBasicTest.java37
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCompletionParseTest.java36
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRDOMLocationMacroTests.java37
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRDOMLocationTests.java37
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRDOMPreprocessorInformationTest.java37
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRDigraphTrigraphTests.java37
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRGCCCompleteParseExtensionsTest.java37
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRGCCTests.java37
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRImageLocationTests.java37
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRInactiveCodeTests.java37
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRKnRTests.java37
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRNodeSelectorTest.java37
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRParserTestSuite.java65
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRQuickParser2Tests.java37
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRSelectionParseTest.java45
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRSemanticsTests.java37
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRTaskParserTest.java37
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRTemplateTests.java37
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRTests.java44
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRUtilOldTests.java37
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRUtilTests.java37
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/suite/AutomatedIntegrationSuite.java32
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/.classpath8
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/.project28
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/.settings/org.eclipse.jdt.core.prefs464
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/.settings/org.eclipse.jdt.ui.prefs133
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/META-INF/MANIFEST.MF26
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/about.html36
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/build.properties23
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/grammar/build.xml62
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/grammar/parserBuild.properties17
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/grammar/xlc/XlcCPPParser.g110
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/grammar/xlc/XlcCParser.g69
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/grammar/xlc/XlcGrammarExtensions.g97
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCLanguage.java74
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCPPLanguage.java98
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCPPScannerExtensionConfiguration.java40
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCPPTokenMap.java599
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCScannerExtensionConfiguration.java40
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCTokenMap.java468
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcKeywords.java123
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/action/XlcCBuildASTParserAction.java64
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/action/XlcCPPBuildASTParserAction.java116
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/activator/XlcParserPlugin.java22
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCASTVectorTypeSpecifier.java28
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCNodeFactory.java21
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCPPASTModifiedArrayModifier.java104
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCPPASTVectorTypeSpecifier.java24
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCPPNodeFactory.java24
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/preferences/PreferenceInitializer.java25
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/preferences/XlcLanguagePreferences.java97
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/preferences/XlcPref.java30
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCASTVectorTypeSpecifier.java60
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCNodeFactory.java33
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCPPASTModifiedArrayModifier.java108
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCPPASTVectorTypeSpecifier.java50
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCPPNodeFactory.java40
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/c/XlcCParser.java1878
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/c/XlcCParserprs.java1146
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/c/XlcCParsersym.java54
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/cpp/XlcCPPParser.java3128
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/cpp/XlcCPPParserprs.java2110
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/cpp/XlcCPPParsersym.java62
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/plugin.properties23
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/plugin.xml50
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/ui/org/eclipse/cdt/internal/core/lrparser/xlc/ui/preferences/PrefCheckbox.java51
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/ui/org/eclipse/cdt/internal/core/lrparser/xlc/ui/preferences/PreferenceMessages.java52
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/ui/org/eclipse/cdt/internal/core/lrparser/xlc/ui/preferences/PreferenceMessages.properties22
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/ui/org/eclipse/cdt/internal/core/lrparser/xlc/ui/preferences/XlcLanguageOptionsPreferencePage.java127
-rw-r--r--xlc/org.eclipse.cdt.errorparsers.xlc.tests/.classpath7
-rw-r--r--xlc/org.eclipse.cdt.errorparsers.xlc.tests/.project28
-rw-r--r--xlc/org.eclipse.cdt.errorparsers.xlc.tests/.settings/org.eclipse.jdt.core.prefs464
-rw-r--r--xlc/org.eclipse.cdt.errorparsers.xlc.tests/.settings/org.eclipse.jdt.ui.prefs133
-rw-r--r--xlc/org.eclipse.cdt.errorparsers.xlc.tests/META-INF/MANIFEST.MF18
-rw-r--r--xlc/org.eclipse.cdt.errorparsers.xlc.tests/about.html36
-rw-r--r--xlc/org.eclipse.cdt.errorparsers.xlc.tests/build.properties18
-rw-r--r--xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/AutomatedIntegrationSuite.java56
-rw-r--r--xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestCommandOptionNotRecognized.java42
-rw-r--r--xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestCompatibility.java42
-rw-r--r--xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestError_1.java43
-rw-r--r--xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestInformationalMessage_1.java42
-rw-r--r--xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestInformationalMessage_2.java44
-rw-r--r--xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestInformationalMessage_3.java41
-rw-r--r--xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestLinkerCommandOptionNotRecognized.java43
-rw-r--r--xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestLinkerDuplicateSymbol.java43
-rw-r--r--xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestLinkerErrorWhileReading.java43
-rw-r--r--xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestLinkerInfo.java43
-rw-r--r--xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestLinkerSevereError.java43
-rw-r--r--xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestLinkerUndefinedSymbol.java43
-rw-r--r--xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestRedeclaration.java50
-rw-r--r--xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestRedefinition.java64
-rw-r--r--xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestSevereError_1.java42
-rw-r--r--xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestSevereError_2.java43
-rw-r--r--xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestSevereError_3.java43
-rw-r--r--xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestSevereError_4.java45
-rw-r--r--xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestSevereError_5.java42
-rw-r--r--xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestUnrecoverableError_1.java42
-rw-r--r--xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestUnrecoverableError_2.java43
-rw-r--r--xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestUnrecoverableError_3.java44
-rw-r--r--xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestWarning_1.java41
-rw-r--r--xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestsPlugin.java103
-rw-r--r--xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/XlcErrorParserTester.java160
-rw-r--r--xlc/org.eclipse.cdt.errorparsers.xlc/.classpath7
-rw-r--r--xlc/org.eclipse.cdt.errorparsers.xlc/.project28
-rw-r--r--xlc/org.eclipse.cdt.errorparsers.xlc/.settings/org.eclipse.jdt.core.prefs464
-rw-r--r--xlc/org.eclipse.cdt.errorparsers.xlc/.settings/org.eclipse.jdt.ui.prefs133
-rw-r--r--xlc/org.eclipse.cdt.errorparsers.xlc/META-INF/MANIFEST.MF16
-rw-r--r--xlc/org.eclipse.cdt.errorparsers.xlc/about.html36
-rw-r--r--xlc/org.eclipse.cdt.errorparsers.xlc/build.properties21
-rwxr-xr-xxlc/org.eclipse.cdt.errorparsers.xlc/plugin.properties58
-rw-r--r--xlc/org.eclipse.cdt.errorparsers.xlc/plugin.xml26
-rw-r--r--xlc/org.eclipse.cdt.errorparsers.xlc/src/org/eclipse/cdt/errorparsers/xlc/Activator.java58
-rw-r--r--xlc/org.eclipse.cdt.make.xlc.core/.classpath7
-rw-r--r--xlc/org.eclipse.cdt.make.xlc.core/.project28
-rw-r--r--xlc/org.eclipse.cdt.make.xlc.core/.settings/org.eclipse.jdt.core.prefs464
-rw-r--r--xlc/org.eclipse.cdt.make.xlc.core/.settings/org.eclipse.jdt.ui.prefs133
-rw-r--r--xlc/org.eclipse.cdt.make.xlc.core/META-INF/MANIFEST.MF20
-rw-r--r--xlc/org.eclipse.cdt.make.xlc.core/about.html36
-rw-r--r--xlc/org.eclipse.cdt.make.xlc.core/build.properties21
-rw-r--r--xlc/org.eclipse.cdt.make.xlc.core/plugin.properties17
-rw-r--r--xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/activator/Activator.java72
-rw-r--r--xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/messages/Messages.java35
-rw-r--r--xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/messages/Messages.properties17
-rw-r--r--xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/AbstractXLCBuildOutputParser.java415
-rw-r--r--xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/PerFileXLCScannerInfoCollector.java1664
-rw-r--r--xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/PerProjectXLCScannerInfoCollector.java24
-rw-r--r--xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/XLCBuildOutputParserUtility.java707
-rw-r--r--xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/XLCPerFileBuildOutputParser.java211
-rw-r--r--xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/XLCPerProjectBuildOutputParser.java173
-rw-r--r--xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/XlCSpecsConsoleParser.java187
-rw-r--r--xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/XlCSpecsRunSIProvider.java50
-rw-r--r--xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/util/XLCCommandDSC.java53
-rw-r--r--xlc/org.eclipse.cdt.managedbuilder.xlc.core/.classpath7
-rw-r--r--xlc/org.eclipse.cdt.managedbuilder.xlc.core/.project28
-rw-r--r--xlc/org.eclipse.cdt.managedbuilder.xlc.core/.settings/org.eclipse.jdt.core.prefs464
-rw-r--r--xlc/org.eclipse.cdt.managedbuilder.xlc.core/.settings/org.eclipse.jdt.ui.prefs133
-rw-r--r--xlc/org.eclipse.cdt.managedbuilder.xlc.core/META-INF/MANIFEST.MF19
-rw-r--r--xlc/org.eclipse.cdt.managedbuilder.xlc.core/about.html36
-rw-r--r--xlc/org.eclipse.cdt.managedbuilder.xlc.core/about.mappings9
-rw-r--r--xlc/org.eclipse.cdt.managedbuilder.xlc.core/about.properties27
-rw-r--r--xlc/org.eclipse.cdt.managedbuilder.xlc.core/build.properties26
-rw-r--r--xlc/org.eclipse.cdt.managedbuilder.xlc.core/plugin.properties25
-rw-r--r--xlc/org.eclipse.cdt.managedbuilder.xlc.core/plugin.xml98
-rw-r--r--xlc/org.eclipse.cdt.managedbuilder.xlc.core/src/org/eclipse/cdt/managedbuilder/xlc/core/XLCCorePlugin.java31
-rw-r--r--xlc/org.eclipse.cdt.managedbuilder.xlc.core/src/org/eclipse/cdt/managedbuilder/xlc/core/XlcBuiltinSpecsDetector.java96
-rw-r--r--xlc/org.eclipse.cdt.managedbuilder.xlc.ui/.classpath7
-rw-r--r--xlc/org.eclipse.cdt.managedbuilder.xlc.ui/.project28
-rw-r--r--xlc/org.eclipse.cdt.managedbuilder.xlc.ui/.settings/org.eclipse.jdt.core.prefs464
-rw-r--r--xlc/org.eclipse.cdt.managedbuilder.xlc.ui/.settings/org.eclipse.jdt.ui.prefs133
-rw-r--r--xlc/org.eclipse.cdt.managedbuilder.xlc.ui/META-INF/MANIFEST.MF26
-rw-r--r--xlc/org.eclipse.cdt.managedbuilder.xlc.ui/about.html36
-rw-r--r--xlc/org.eclipse.cdt.managedbuilder.xlc.ui/about.mappings9
-rw-r--r--xlc/org.eclipse.cdt.managedbuilder.xlc.ui/about.properties28
-rw-r--r--xlc/org.eclipse.cdt.managedbuilder.xlc.ui/build.properties25
-rw-r--r--xlc/org.eclipse.cdt.managedbuilder.xlc.ui/plugin.properties454
-rw-r--r--xlc/org.eclipse.cdt.managedbuilder.xlc.ui/plugin.xml3848
-rw-r--r--xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/aix/AixConfigurationEnvironmentSupplier.java58
-rw-r--r--xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/aix/AixPathResolver.java31
-rw-r--r--xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/Messages.java45
-rw-r--r--xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/XLCProjectMacroSupplier.java136
-rw-r--r--xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/XLCUIPlugin.java91
-rw-r--r--xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/messages.properties31
-rw-r--r--xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/preferences/PreferenceConstants.java60
-rw-r--r--xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/preferences/PreferenceInitializer.java33
-rw-r--r--xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/preferences/XLCompilerPreferencePage.java102
-rw-r--r--xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/properties/HiddenOptionApplicabilityCalculator.java59
-rw-r--r--xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/properties/XLCApplicabilityCalculator.java249
-rw-r--r--xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/properties/XLCompilerPropertyPage.java212
-rw-r--r--xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/properties/XLCv8ApplicabiltyCalculator.java119
-rw-r--r--xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/properties/XLCv9ApplicabilityCalculator.java122
-rw-r--r--xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/properties/applicability.properties49
-rw-r--r--xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/variables/DynamicVariableResolver.java43
-rw-r--r--xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/wizards/XLCSettingsWizardPage.java319
-rw-r--r--xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/wizards/XLCSettingsWizardRunnable.java68
-rw-r--r--xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/.classpath7
-rw-r--r--xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/.project28
-rw-r--r--xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/.settings/org.eclipse.jdt.core.prefs464
-rw-r--r--xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/.settings/org.eclipse.jdt.ui.prefs133
-rw-r--r--xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/META-INF/MANIFEST.MF24
-rw-r--r--xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/about.html36
-rw-r--r--xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/build.properties21
-rw-r--r--xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/icons/c-project.gifbin618 -> 0 bytes
-rw-r--r--xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/plugin.properties66
-rw-r--r--xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/plugin.xml499
-rw-r--r--xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/src/org/eclipse/cdt/managedbuilder/xlupc/ui/Activator.java44
-rw-r--r--xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/src/org/eclipse/cdt/managedbuilder/xlupc/ui/Messages.java34
-rw-r--r--xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/src/org/eclipse/cdt/managedbuilder/xlupc/ui/messages.properties19
-rw-r--r--xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/src/org/eclipse/cdt/managedbuilder/xlupc/ui/wizards/UpcProjectWizard.java104
-rw-r--r--xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/src/org/eclipse/cdt/managedbuilder/xlupc/ui/wizards/XLUpcSettingsWizardPage.java45
-rw-r--r--xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/src/org/eclipse/cdt/managedbuilder/xlupc/ui/wizards/XLUpcSettingsWizardRunnable.java79
-rw-r--r--xlc/org.eclipse.cdt.xlc.feature/.project17
-rw-r--r--xlc/org.eclipse.cdt.xlc.feature/build.properties16
-rw-r--r--xlc/org.eclipse.cdt.xlc.feature/feature.properties36
-rw-r--r--xlc/org.eclipse.cdt.xlc.feature/feature.xml65
-rw-r--r--xlc/org.eclipse.cdt.xlc.feature/sourceTemplateFeature/p2.inf1
-rw-r--r--xlc/org.eclipse.cdt.xlc.sdk-feature/.project17
-rw-r--r--xlc/org.eclipse.cdt.xlc.sdk-feature/build.properties17
-rw-r--r--xlc/org.eclipse.cdt.xlc.sdk-feature/feature-no-source.properties1
-rw-r--r--xlc/org.eclipse.cdt.xlc.sdk-feature/feature.properties36
-rw-r--r--xlc/org.eclipse.cdt.xlc.sdk-feature/feature.xml30
-rw-r--r--xlc/pom.xml15
6389 files changed, 290718 insertions, 201645 deletions
diff --git a/.clang-format b/.clang-format
new file mode 100644
index 00000000000..63f88092bc0
--- /dev/null
+++ b/.clang-format
@@ -0,0 +1,12 @@
+BasedOnStyle: LLVM
+
+# Set column width to 120
+ColumnLimit: 120
+
+# Sorting include statements will put "windows.h" last and result in build error.
+# To avoid unpredictable build errors, disable sorting.
+SortIncludes: false
+
+# Use 4 spaces as indentation
+IndentWidth: 4
+UseTab: Never
diff --git a/.gitattributes b/.gitattributes
index ad8bb8f989a..56063d762bb 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -6,6 +6,8 @@ ChangeLog text
COPYING text
NEWS text
README text
+CONTRIBUTING text
+LICENSE text
*.txt text
*.md text
*.zip binary
@@ -16,18 +18,22 @@ README text
*.cc text
*.cpp text
*.h text
+*.in text
*.s text
*.S text
+*.elf binary
# C-like configuration/scripts
*.ac text
*.am text
+# file permission +x
*.bat text
*.build text
*.incl text
makefile text
Makefile text
*.mk text
+# file permission +x
*.sh text
# Qt
@@ -46,12 +52,16 @@ Makefile text
# (These should not normally be checked in, exceptions for pre-compiled libraries and tests)
*.o binary
*.d text
+# file permission +x
*.dll binary diff=dll
*.a binary
+# file permission +x
*.exe binary
*.out binary
*.app binary
+# file permission +x
*.jnilib binary diff=hex
+# file permission +x
*.so binary
# Web/Javascript/Node
@@ -112,6 +122,7 @@ be32 binary
be32lib binary
be64 binary
be64lib binary
+*.bin binary
exe binary
exebig_g binary
exe_g binary
@@ -127,10 +138,12 @@ le64lib binary
output-1 text
*.pda text
*.rts text
+*.srec text eol=lf
test_commands text
# Other special files
cdtOptions text
+.clang-format text
.contentsettings text
*.csv text
*.dia binary
@@ -139,12 +152,15 @@ cdtOptions text
.euml2 text
.gitattributes text
.gitignore text
+.gitkeep text
*.patch text
*.src text
*.tmLanguage text
*.top text
*.ucd text
.umlproject text
-*.upc text
# remove trailing whitespace
+# file permission +x
*.py text
+*.xhtml text
+*.entitlements text
diff --git a/.gitignore b/.gitignore
index a2267a1d9bf..35b73bd2e49 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,8 +4,9 @@
/workspace/
.DS_Store
.nfs*
-.polyglot.build.properties
+.polyglot.*
check_code_cleanliness_workspace/
.META-INF_MANIFEST.MF
-.polyglot..META-INF_MANIFEST.MF
*.takari_issue_192
+*.log
+.tycho-consumer-pom.xml
diff --git a/.mvn/extensions.xml b/.mvn/extensions.xml
index c1a9cd6e995..8cac6c9235b 100644
--- a/.mvn/extensions.xml
+++ b/.mvn/extensions.xml
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<extensions>
<extension>
- <groupId>org.eclipse.tycho.extras</groupId>
- <artifactId>tycho-pomless</artifactId>
- <version>1.5.1</version>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-build</artifactId>
+ <version>2.7.1</version>
</extension>
</extensions>
diff --git a/.project b/.project
new file mode 100644
index 00000000000..d3a94771890
--- /dev/null
+++ b/.project
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.cdt.root</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ </buildSpec>
+ <natures>
+ </natures>
+</projectDescription>
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 00000000000..cb247fddaa8
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,72 @@
+# Contributing to Eclipse C/C++ Development Tools
+
+Thanks for your interest in this project.
+
+## Project description
+
+The Eclipse CDT Project provides a fully functional C and C++ Integrated
+Development Environment based on the Eclipse platform. Features include: support
+for project creation and managed build for various toolchains, standard make
+build, source navigation, various source knowledge tools, such as type
+hierarchy, call graph, include browser, macro definition browser, code editor
+with syntax highlighting, folding and hyperlink navigation, source code
+refactoring and code generation, visual debugging tools, including memory,
+registers, and disassembly viewers.
+
+* https://projects.eclipse.org/projects/tools.cdt
+
+## Developer resources
+
+### Building CDT
+
+The recommended flow for most users is to follow instructions on [getting started with CDT development](https://wiki.eclipse.org/Getting_started_with_CDT_development).
+
+For information on building CDT from the command line using maven, refer to the [README](README.md)'s Command-line Build instructions with Maven section.
+
+
+Additional information is available on:
+
+* https://github.com/eclipse-cdt/cdt-infra/wiki
+* https://projects.eclipse.org/projects/tools.cdt/developer
+
+The project maintains the following source code repositories
+
+* https://git.eclipse.org/r/plugins/gitiles/cdt/org.eclipse.cdt
+* https://git.eclipse.org/r/plugins/gitiles/cdt/org.eclipse.cdt.edc
+* http://git.eclipse.org/c/cdt/org.eclipse.cdt.master.git
+* https://git.eclipse.org/r/plugins/gitiles/cdt/org.eclipse.launchbar
+* https://git.eclipse.org/r/plugins/gitiles/cdt/org.eclipse.tools.templates
+* https://github.com/eclipse-cdt/cdt-gdb-adapter
+* https://github.com/eclipse-cdt/cdt-gdb-vscode
+* https://github.com/eclipse-cdt/cdt-vscode
+* https://github.com/eclipse-cdt/cdt-infra
+
+This project uses Bugzilla to track ongoing development and issues.
+
+* Search for issues: https://bugs.eclipse.org/bugs/buglist.cgi?product=CDT
+* Create a new report: https://bugs.eclipse.org/bugs/enter_bug.cgi?product=CDT
+
+Be sure to search for existing bugs before you create another one. Remember that
+contributions are always welcome!
+
+## Eclipse Contributor Agreement
+
+Before your contribution can be accepted by the project team contributors must
+electronically sign the Eclipse Contributor Agreement (ECA).
+
+* http://www.eclipse.org/legal/ECA.php
+
+Commits that are provided by non-committers must have a Signed-off-by field in
+the footer indicating that the author is aware of the terms by which the
+contribution has been provided to the project. The non-committer must
+additionally have an Eclipse Foundation account and must have a signed Eclipse
+Contributor Agreement (ECA) on file.
+
+For more information, please see the Eclipse Committer Handbook:
+https://www.eclipse.org/projects/handbook/#resources-commit
+
+## Contact
+
+Contact the project developers via the project's "dev" list.
+
+* https://dev.eclipse.org/mailman/listinfo/cdt-dev
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 00000000000..e23ece2c852
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,277 @@
+Eclipse Public License - v 2.0
+
+ THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+ PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION
+ OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+ a) in the case of the initial Contributor, the initial content
+ Distributed under this Agreement, and
+
+ b) in the case of each subsequent Contributor:
+ i) changes to the Program, and
+ ii) additions to the Program;
+ where such changes and/or additions to the Program originate from
+ and are Distributed by that particular Contributor. A Contribution
+ "originates" from a Contributor if it was added to the Program by
+ such Contributor itself or anyone acting on such Contributor's behalf.
+ Contributions do not include changes or additions to the Program that
+ are not Modified Works.
+
+"Contributor" means any person or entity that Distributes the Program.
+
+"Licensed Patents" mean patent claims licensable by a Contributor which
+are necessarily infringed by the use or sale of its Contribution alone
+or when combined with the Program.
+
+"Program" means the Contributions Distributed in accordance with this
+Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement
+or any Secondary License (as applicable), including Contributors.
+
+"Derivative Works" shall mean any work, whether in Source Code or other
+form, that is based on (or derived from) the Program and for which the
+editorial revisions, annotations, elaborations, or other modifications
+represent, as a whole, an original work of authorship.
+
+"Modified Works" shall mean any work in Source Code or other form that
+results from an addition to, deletion from, or modification of the
+contents of the Program, including, for purposes of clarity any new file
+in Source Code form that contains any contents of the Program. Modified
+Works shall not include works that contain only declarations,
+interfaces, types, classes, structures, or files of the Program solely
+in each case in order to link to, bind by name, or subclass the Program
+or Modified Works thereof.
+
+"Distribute" means the acts of a) distributing or b) making available
+in any manner that enables the transfer of a copy.
+
+"Source Code" means the form of a Program preferred for making
+modifications, including but not limited to software source code,
+documentation source, and configuration files.
+
+"Secondary License" means either the GNU General Public License,
+Version 2.0, or any later versions of that license, including any
+exceptions or additional permissions as identified by the initial
+Contributor.
+
+2. GRANT OF RIGHTS
+
+ a) Subject to the terms of this Agreement, each Contributor hereby
+ grants Recipient a non-exclusive, worldwide, royalty-free copyright
+ license to reproduce, prepare Derivative Works of, publicly display,
+ publicly perform, Distribute and sublicense the Contribution of such
+ Contributor, if any, and such Derivative Works.
+
+ b) Subject to the terms of this Agreement, each Contributor hereby
+ grants Recipient a non-exclusive, worldwide, royalty-free patent
+ license under Licensed Patents to make, use, sell, offer to sell,
+ import and otherwise transfer the Contribution of such Contributor,
+ if any, in Source Code or other form. This patent license shall
+ apply to the combination of the Contribution and the Program if, at
+ the time the Contribution is added by the Contributor, such addition
+ of the Contribution causes such combination to be covered by the
+ Licensed Patents. The patent license shall not apply to any other
+ combinations which include the Contribution. No hardware per se is
+ licensed hereunder.
+
+ c) Recipient understands that although each Contributor grants the
+ licenses to its Contributions set forth herein, no assurances are
+ provided by any Contributor that the Program does not infringe the
+ patent or other intellectual property rights of any other entity.
+ Each Contributor disclaims any liability to Recipient for claims
+ brought by any other entity based on infringement of intellectual
+ property rights or otherwise. As a condition to exercising the
+ rights and licenses granted hereunder, each Recipient hereby
+ assumes sole responsibility to secure any other intellectual
+ property rights needed, if any. For example, if a third party
+ patent license is required to allow Recipient to Distribute the
+ Program, it is Recipient's responsibility to acquire that license
+ before distributing the Program.
+
+ d) Each Contributor represents that to its knowledge it has
+ sufficient copyright rights in its Contribution, if any, to grant
+ the copyright license set forth in this Agreement.
+
+ e) Notwithstanding the terms of any Secondary License, no
+ Contributor makes additional grants to any Recipient (other than
+ those set forth in this Agreement) as a result of such Recipient's
+ receipt of the Program under the terms of a Secondary License
+ (if permitted under the terms of Section 3).
+
+3. REQUIREMENTS
+
+3.1 If a Contributor Distributes the Program in any form, then:
+
+ a) the Program must also be made available as Source Code, in
+ accordance with section 3.2, and the Contributor must accompany
+ the Program with a statement that the Source Code for the Program
+ is available under this Agreement, and informs Recipients how to
+ obtain it in a reasonable manner on or through a medium customarily
+ used for software exchange; and
+
+ b) the Contributor may Distribute the Program under a license
+ different than this Agreement, provided that such license:
+ i) effectively disclaims on behalf of all other Contributors all
+ warranties and conditions, express and implied, including
+ warranties or conditions of title and non-infringement, and
+ implied warranties or conditions of merchantability and fitness
+ for a particular purpose;
+
+ ii) effectively excludes on behalf of all other Contributors all
+ liability for damages, including direct, indirect, special,
+ incidental and consequential damages, such as lost profits;
+
+ iii) does not attempt to limit or alter the recipients' rights
+ in the Source Code under section 3.2; and
+
+ iv) requires any subsequent distribution of the Program by any
+ party to be under a license that satisfies the requirements
+ of this section 3.
+
+3.2 When the Program is Distributed as Source Code:
+
+ a) it must be made available under this Agreement, or if the
+ Program (i) is combined with other material in a separate file or
+ files made available under a Secondary License, and (ii) the initial
+ Contributor attached to the Source Code the notice described in
+ Exhibit A of this Agreement, then the Program may be made available
+ under the terms of such Secondary Licenses, and
+
+ b) a copy of this Agreement must be included with each copy of
+ the Program.
+
+3.3 Contributors may not remove or alter any copyright, patent,
+trademark, attribution notices, disclaimers of warranty, or limitations
+of liability ("notices") contained within the Program from any copy of
+the Program which they Distribute, provided that Contributors may add
+their own appropriate notices.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities
+with respect to end users, business partners and the like. While this
+license is intended to facilitate the commercial use of the Program,
+the Contributor who includes the Program in a commercial product
+offering should do so in a manner which does not create potential
+liability for other Contributors. Therefore, if a Contributor includes
+the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and indemnify every
+other Contributor ("Indemnified Contributor") against any losses,
+damages and costs (collectively "Losses") arising from claims, lawsuits
+and other legal actions brought by a third party against the Indemnified
+Contributor to the extent caused by the acts or omissions of such
+Commercial Contributor in connection with its distribution of the Program
+in a commercial product offering. The obligations in this section do not
+apply to any claims or Losses relating to any actual or alleged
+intellectual property infringement. In order to qualify, an Indemnified
+Contributor must: a) promptly notify the Commercial Contributor in
+writing of such claim, and b) allow the Commercial Contributor to control,
+and cooperate with the Commercial Contributor in, the defense and any
+related settlement negotiations. The Indemnified Contributor may
+participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those performance
+claims and warranties, and if a court requires any other Contributor to
+pay any damages as a result, the Commercial Contributor must pay
+those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT
+PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN "AS IS"
+BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR
+IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF
+TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR
+PURPOSE. Each Recipient is solely responsible for determining the
+appropriateness of using and distributing the Program and assumes all
+risks associated with its exercise of rights under this Agreement,
+including but not limited to the risks and costs of program errors,
+compliance with applicable laws, damage to or loss of data, programs
+or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT
+PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS
+SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST
+PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE
+EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further
+action by the parties hereto, such provision shall be reformed to the
+minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other software
+or hardware) infringes such Recipient's patent(s), then such Recipient's
+rights granted under Section 2(b) shall terminate as of the date such
+litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of
+time after becoming aware of such noncompliance. If all Recipient's
+rights under this Agreement terminate, Recipient agrees to cease use
+and distribution of the Program as soon as reasonably practicable.
+However, Recipient's obligations under this Agreement and any licenses
+granted by Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement,
+but in order to avoid inconsistency the Agreement is copyrighted and
+may only be modified in the following manner. The Agreement Steward
+reserves the right to publish new versions (including revisions) of
+this Agreement from time to time. No one other than the Agreement
+Steward has the right to modify this Agreement. The Eclipse Foundation
+is the initial Agreement Steward. The Eclipse Foundation may assign the
+responsibility to serve as the Agreement Steward to a suitable separate
+entity. Each new version of the Agreement will be given a distinguishing
+version number. The Program (including Contributions) may always be
+Distributed subject to the version of the Agreement under which it was
+received. In addition, after a new version of the Agreement is published,
+Contributor may elect to Distribute the Program (including its
+Contributions) under the new version.
+
+Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
+receives no rights or licenses to the intellectual property of any
+Contributor under this Agreement, whether expressly, by implication,
+estoppel or otherwise. All rights in the Program not expressly granted
+under this Agreement are reserved. Nothing in this Agreement is intended
+to be enforceable by any entity that is not a Contributor or Recipient.
+No third-party beneficiary rights are created under this Agreement.
+
+Exhibit A - Form of Secondary Licenses Notice
+
+"This Source Code may also be made available under the following
+Secondary Licenses when the conditions for such availability set forth
+in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
+version(s), and exceptions or additional permissions here}."
+
+ Simply including a copy of this Agreement, including this Exhibit A
+ is not sufficient to license the Source Code under Secondary Licenses.
+
+ If it is not possible or desirable to put the notice in a particular
+ file, then You may include the notice in a location (such as a LICENSE
+ file in a relevant directory) where a recipient would be likely to
+ look for such a notice.
+
+ You may add additional accurate notices of copyright ownership. \ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 00000000000..c94a7f3fd23
--- /dev/null
+++ b/README.md
@@ -0,0 +1,192 @@
+# Eclipse CDT
+
+## Contributing
+
+Please see [CONTRIBUTING.md](./CONTRIBUTING.md) for contributing information
+
+## Developing CDT
+
+Most developers, developing CDT in the Eclipse IDE, should use [Getting_started_with_CDT_development](https://wiki.eclipse.org/Getting_started_with_CDT_development).
+
+## Command-line Build instructions with Maven
+
+Eclipse CDT uses the standard Maven and Tycho workflow for building CDT using Maven 3.6.0 and Java 8. Therefore to package CDT do:
+
+```
+mvn package
+```
+
+and the resulting p2 repository will be in `releng/org.eclipse.cdt.repo/target/repository`
+
+The current set of options to Maven used for building on the CI can be seen in the Jenkinsfiles
+on [cdt-infra](https://github.com/eclipse-cdt/cdt-infra/tree/master/jenkins/pipelines/cdt)
+
+To build CDT plug-ins you need a standard Maven & Java developement environment. The Dockerfiles used for CDT's images are
+published in [cdt-infra](https://github.com/eclipse-cdt/cdt-infra/tree/master/docker). The requirements for running all tests
+successfully and for rebuilding non-Java parts of CDT are much more extensive than standard Maven & Java and include
+items such as GCC, GDB, yarn, Node, etc. Refer to the Dockerfiles for the current versions of those dependencies.
+
+### Profiles
+
+There are a number of profiles (-P to mvn) to control the behaviour of the build.
+
+#### cdtRepo, simrelRepo, defaultCdtTarget
+
+Individual p2 repos can be turned on and off to allow building CDT, or parts of CDT against
+different target platforms easily.
+For example, you can:
+- test CDT against a pre-built CDT by using the cdtRepo profile.
+- build the standalone rcp debugger against the latest simrel `mvn verify -DuseSimrelRepo -f debug/org.eclipse.cdt.debug.application.product`
+
+#### build-standalone-debugger-rcp
+
+Using the `build-standalone-debugger-rcp` profile will include the standalone debugger, located
+in `debug/org.eclipse.cdt.debug.application.product`
+
+#### skip-all-tests, skip-tests-except-cdt-ui, skip-tests-except-dsf-gdb, skip-tests-except-lsp, skip-tests-except-cdt-other
+
+Using any of the above profiles can skip large sets of tests. The CI build uses this to parallelize tests. See https://ci.eclipse.org/cdt/view/Gerrit/
+
+#### terminal-only
+
+The terminal directory has a special profile that enables only the terminal and its dependencies when used. The allows
+running maven like this `mvn -f terminal/pom.xml verify -P only-terminal` to build and test only the terminal
+and its dependencies. A special terminal only p2 site is created in `terminal/repo/target/repository`. The CI build
+uses this to speedup turnaround on changes only affecting the terminal. See https://ci.eclipse.org/cdt/view/Gerrit/
+
+#### baseline-compare-and-replace
+
+`baseline-compare-and-replace` profile controls whether baseline replace and compare
+is performed. On a local build you want to avoid baseline replace and compare,
+especially if you have different versions of Java than the baseline was built with.
+
+If you have the same version of Java as the build machine you can run baseline comparison and
+replace. To do that run with the `baseline-compare-and-replace` profile.
+
+Requires verify phase of maven to run, i.e. will not run with `mvn package` even if profile is specified.
+
+#### production
+
+Runs the production steps of the build. This profile can only be run on the CDT CI machines
+as access to Eclipse key signing server is needed to sign the jars.
+
+#### regenHelp
+
+Some of the help systems in Eclipse CDT require the `regenHelp` profile to rebuild their HTML from the source documents. For example, to regenerate the help
+for Autotools or Meson do:
+
+```
+mvn generate-resources -DuseSimrelRepo -f build/org.eclipse.cdt.meson.docs -PregenHelp
+```
+
+```
+mvn generate-resources -DuseSimrelRepo -f build/org.eclipse.cdt.autotools.docs -PregenHelp
+```
+
+#### jniheaders
+
+The `jniheaders` profile can be used on the `core/org.eclipse.cdt.core.native` and
+`native/org.eclipse.cdt.native.serial` to rebuild the header files for JNI natives.
+See also `native` property below.
+
+### Properties
+
+There are a number of properties (-D to mvn) to control the behaviour of the build. Refer to the
+pom.xml for the full list. Many of the properties are not intended to be set at the command
+line.
+
+#### skipDoc
+
+Documentation generation for CDT can be time consuming. For local builds this can be skipped
+with `-DskipDoc=true`
+
+#### skipTests
+
+Running tests for CDT can be time consuming. For local builds this can be skipped
+with `-DskipTests=true`.
+
+#### excludedGroups to skip slow or flaky tests
+
+Some tests in CDT are fairly slow to run and rarely are exercising actively changing code. Some tests in CDT are fairly flaky to run and rarely are exercising actively changing code. These tests are excluded from the main CDT builds (both master/branch and gerrit verify jobs) and are instead run in a special job. Therefore the Jenkinsfiles for master/branch and gerrit use excludedGroups by default.
+
+To skip slow tests use `-DexcludedGroups=slowTest`
+To skip flaky tests use `-DexcludedGroups=flakyTest`
+To skip both use `-DexcludedGroups=flakyTest,slowTest`
+
+See section below on marking tests for how to annotate a test properly.
+
+#### jgit.dirtyWorkingTree-cdtDefault
+
+Running a build with uncommitted changes will normally cause an error. To run a build with
+uncommited changes use `-Djgit.dirtyWorkingTree-cdtDefault=warning`
+
+#### dsf.gdb.tests.gdbPath
+
+For running CDT's DSF-GDB tests, this specifies the path to the location of gdb.
+
+#### cdt.tests.dsf.gdb.versions
+
+For running CDT's DSF-GDB tests, this specifies the executable names of the gdbs to run, comma-separated.
+
+There are a few special values that can be specified (see BaseParametrizedTestCase for source):
+
+- all: run all versions listed in ITestConstants.ALL_KNOWN_VERSIONS
+- supported: run all versions listed in ITestConstants.ALL_SUPPORTED_VERSIONS
+- unsupported: run all versions listed in ITestConstants.ALL_UNSUPPORTED_VERSIONS
+
+The default, defined in the root pom.xml, should be the most recent released version of gdb.
+
+To build all gdb versions for testing CDT see [download-build-gdb.sh](https://github.com/eclipse-cdt/cdt-infra/blob/master/docker/scripts/download-build-gdb.sh)
+
+#### native
+
+The `native` property can be used to build the native libraries. Defining the `native` property will activate profiles to add the extra steps to compile the natives libraries used by CDT. The main CDT build by default will not build the libraries, but instead use the versions of the libraries checked into git. Therefore when users modify the sources of the native libraries, they have to build and commit the changed library binaries as part of the commit.
+
+The `releng/scripts/check_code_cleanliness.sh`, which is run on the build machine as part of the gerrit and main build flows, will ensure that the libraries that are checked in are indeed up to date with their sources.
+
+The `native` property can be one of the following:
+
+- `linux.x86_64` - uses local tools and builds only linux.x86_64 libraries
+- `linux.ppc64le` - uses local tools and builds only linux.ppc64le libraries
+- `docker` - uses CDT's docker releng images to do the native builds for all platforms
+- `all` - uses local tools to do the native builds for all platforms
+
+Therefore to build all the natives using docker add `-Dnative=docker` to your maven command line (e.g. `mvn verify -Dnative=docker`).
+
+To build only the native libraries `mvn process-resources` can be used on the individual bundles with the simrel target platform, e.g.:
+
+- Serial library: `mvn process-resources -Dnative=docker -DuseSimrelRepo -f native/org.eclipse.cdt.native.serial`
+- Core library: `mvn process-resources -Dnative=docker -DuseSimrelRepo -f core/org.eclipse.cdt.core.native`
+
+However, the challenge is that dll files on Windows have a timestamp in them. To have reproducible builds, we need to have a reproducible timestamp. As [Microsoft](https://devblogs.microsoft.com/oldnewthing/20180103-00/?p=97705) has moved away from using a timestamp to rather use a hash of the source files as the value, we therefore hash the source files used by the library and the header files for the Java API and use that as the value.
+
+An additional tip is to set the following in `.gitconfig` to allow you to diff `.dll` files. This will show the timestamp of the DLL in the diff as part of the DLL headers.
+
+```
+[diff "dll"]
+ textconv = objdump -x
+ binary = true
+```
+
+When the host is Windows, getting docker to behave as encoded in the pom.xml may be challenging, instead a command like this will probably work (replace your path to git root). Note that running this in git bash causes problems because of the /work in the command line arguments. (TODO integrate this command line way of running into the pom.xml so the original instructions work.)
+
+`docker 'run' '--rm' '-t' '-v' 'D:\cdt\git\org.eclipse.cdt:/work' '-w' '/work/core/org.eclipse.cdt.core.native' 'quay.io/eclipse-cdt/cdt-infra-eclipse-full:latest' 'make' '-C' 'native_src' 'rebuild'`
+
+See also `jniheaders` profile above.
+
+### Marking tests as Slow or Flaky
+
+Tests in CDT can be marked as Slow or Flaky to prevent them running as part of the standard test suites. See excludedGroups to skip slow or flaky tests sections above.
+
+The proper way to mark a test as slow or flaky is to add a JUnit5 @Tag on the test with `flakyTest` or `slowTest`. The canonical values for these are in the JUnit5 base test `org.eclipse.cdt.core.testplugin.util.BaseTestCase5`.
+
+These tags can only be applied to JUnit5 (aka Jupiter) tests. If a test needs converting, do that in a separate commit before adding the tags so that the test refactoring can be verified before excluding the test from normal runs.
+
+### Converting tests to JUnit5
+
+To take advantage of new features, such as excluding flaky and slow tests, individual tests need to JUnit5 (aka Jupiter). If a test is currently written in JUnit4 or JUnit3 style it needs to be converted to JUnit5 first. Those tests that currently derive from `org.eclipse.cdt.core.testplugin.util.BaseTestCase` can change to `org.eclipse.cdt.core.testplugin.util.BaseTestCase5` and make further adjustments. Common adjustments are:
+- refactoring `setUp`/`tearDown` methods to use `@BeforeEach` and `@AfterEach` annotations
+- refactor complicated uses of TestSuites in JUnit3 that were workarounds for the lack of JUnit features like `@BeforeAll` and `@AfterAll`.
+- add `@Test` annotation (make sure to use `org.junit.jupiter.api.Test` and not JUnit4's `org.junit.Test`)
+- statically import assert methods from `org.junit.jupiter.api.Assertions` (note that in JUnit5 the message is now last instead of first, this generally leads to an error by changing the imports, except in the case of `assertEquals` where the first and third parameter are `String`)
+
diff --git a/build/org.eclipse.cdt.autotools-feature/.settings/org.eclipse.core.resources.prefs b/build/org.eclipse.cdt.autotools-feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools-feature/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/build/org.eclipse.cdt.autotools-feature/feature.xml b/build/org.eclipse.cdt.autotools-feature/feature.xml
index 7ea0f68d17f..86817325b08 100644
--- a/build/org.eclipse.cdt.autotools-feature/feature.xml
+++ b/build/org.eclipse.cdt.autotools-feature/feature.xml
@@ -1,9 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2008, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<feature
id="org.eclipse.cdt.autotools"
label="%featureName"
- version="9.10.0.qualifier"
+ version="10.7.0.qualifier"
provider-name="%provider"
+ plugin="org.eclipse.cdt.autotools.ui"
license-feature="org.eclipse.license"
license-feature-version="0.0.0">
@@ -62,12 +73,4 @@
install-size="0"
version="0.0.0"/>
- <plugin
- id="org.eclipse.tools.templates.freemarker.java11"
- download-size="0"
- install-size="0"
- version="0.0.0"
- fragment="true"
- unpack="false"/>
-
</feature>
diff --git a/build/org.eclipse.cdt.autotools.core/.classpath b/build/org.eclipse.cdt.autotools.core/.classpath
index eca7bdba8f0..e801ebfb468 100644
--- a/build/org.eclipse.cdt.autotools.core/.classpath
+++ b/build/org.eclipse.cdt.autotools.core/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/build/org.eclipse.cdt.autotools.core/.settings/org.eclipse.core.resources.prefs b/build/org.eclipse.cdt.autotools.core/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.core/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/build/org.eclipse.cdt.autotools.core/.settings/org.eclipse.jdt.core.prefs b/build/org.eclipse.cdt.autotools.core/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/build/org.eclipse.cdt.autotools.core/.settings/org.eclipse.jdt.core.prefs
+++ b/build/org.eclipse.cdt.autotools.core/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/build/org.eclipse.cdt.autotools.core/.settings/org.eclipse.jdt.ui.prefs b/build/org.eclipse.cdt.autotools.core/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/build/org.eclipse.cdt.autotools.core/.settings/org.eclipse.jdt.ui.prefs
+++ b/build/org.eclipse.cdt.autotools.core/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/build/org.eclipse.cdt.autotools.core/META-INF/MANIFEST.MF b/build/org.eclipse.cdt.autotools.core/META-INF/MANIFEST.MF
index 0f06b2ba8b9..83c3654619f 100644
--- a/build/org.eclipse.cdt.autotools.core/META-INF/MANIFEST.MF
+++ b/build/org.eclipse.cdt.autotools.core/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name.0
Bundle-SymbolicName: org.eclipse.cdt.autotools.core;singleton:=true
-Bundle-Version: 2.0.2.qualifier
+Bundle-Version: 2.1.300.qualifier
Bundle-Activator: org.eclipse.cdt.autotools.core.AutotoolsPlugin
Bundle-Localization: plugin
Require-Bundle: org.eclipse.ui;bundle-version="3.4.0",
@@ -28,9 +28,9 @@ Require-Bundle: org.eclipse.ui;bundle-version="3.4.0",
org.eclipse.cdt.remote.core;bundle-version="1.0.1"
Bundle-ActivationPolicy: lazy
Bundle-Vendor: %provider
-Export-Package: org.eclipse.cdt.autotools.core,
+Export-Package: org.eclipse.cdt.autotools.core;x-friends:="org.eclipse.cdt.autotools.ui",
org.eclipse.cdt.internal.autotools.core;x-friends:="org.eclipse.cdt.autotools.ui",
org.eclipse.cdt.internal.autotools.core.configure;x-friends:="org.eclipse.cdt.autotools.ui",
org.eclipse.cdt.internal.autotools.core.wizards;x-friends:="org.eclipse.cdt.autotools.ui"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Automatic-Module-Name: org.eclipse.cdt.autotools.core
diff --git a/build/org.eclipse.cdt.autotools.core/about.html b/build/org.eclipse.cdt.autotools.core/about.html
index 164f781a8fd..b3134865230 100644
--- a/build/org.eclipse.cdt.autotools.core/about.html
+++ b/build/org.eclipse.cdt.autotools.core/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/build/org.eclipse.cdt.autotools.core/build.properties b/build/org.eclipse.cdt.autotools.core/build.properties
index 70e82cc3ce5..afa7cc412cd 100644
--- a/build/org.eclipse.cdt.autotools.core/build.properties
+++ b/build/org.eclipse.cdt.autotools.core/build.properties
@@ -4,6 +4,7 @@ bin.includes = plugin.xml,\
META-INF/,\
.,\
html/,\
- about.html,\
- plugin.properties
+ about.html,\
+ plugin.properties,\
+ css/
src.includes = about.html
diff --git a/build/org.eclipse.cdt.autotools.core/css/e4-dark_autotools.css b/build/org.eclipse.cdt.autotools.core/css/e4-dark_autotools.css
new file mode 100644
index 00000000000..8283c9ad772
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.core/css/e4-dark_autotools.css
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2022 Kichwa Coders Canada Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ******************************************************************************/
+
+IEclipsePreferences#org-eclipse-cdt-autotools-core:org-eclipse-cdt-autotools-core {
+ preferences:
+ "org.eclipse.cdt.autotools.ui.autoconf.editor.comment=98,98,98"
+ "org.eclipse.cdt.autotools.ui.autoconf.editor.keyword=221,40,103"
+ "org.eclipse.cdt.autotools.ui.autoconf.editor.var_ref=121,171,255"
+ "org.eclipse.cdt.autotools.ui.autoconf.editor.var_set=255,191,38"
+ "org.eclipse.cdt.autotools.ui.autoconf.editor.acmacro=13,64,209"
+ "org.eclipse.cdt.autotools.ui.autoconf.editor.ammacro=13,209,64"
+ "org.eclipse.cdt.autotools.ui.autoconf.editor.codeseq=18,144,195"
+ "org.eclipse.cdt.autotools.ui.autoconf.editor.default=200,200,200"
+ "org.eclipse.cdt.autotools.ui.automake.editor.comment=98,98,98"
+ "org.eclipse.cdt.autotools.ui.automake.editor.keyword=221,40,103"
+ "org.eclipse.cdt.autotools.ui.automake.editor.macro_ref=121,171,255"
+ "org.eclipse.cdt.autotools.ui.automake.editor.macro_def=255,191,38"
+ "org.eclipse.cdt.autotools.ui.automake.editor.function=18,144,195"
+ "org.eclipse.cdt.autotools.ui.automake.editor.default=200,200,200"
+}
diff --git a/build/org.eclipse.cdt.autotools.core/plugin.xml b/build/org.eclipse.cdt.autotools.core/plugin.xml
index 27493675eeb..972dcb8e1b2 100644
--- a/build/org.eclipse.cdt.autotools.core/plugin.xml
+++ b/build/org.eclipse.cdt.autotools.core/plugin.xml
@@ -652,8 +652,17 @@
class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuildCommandParser"
id="org.eclipse.cdt.autotools.core.LibtoolGCCBuildCommandParser"
name="%LibtoolGCCBuildOutputParser.name"
- parameter="(libtool:\s+compile:\s+)?((g?cc)|([gc]\+\+)|(clang))"
+ parameter="(libtool:\s+compile:\s+)?([^/\\\\]*)((g?cc)|([gc]\+\+)|(clang))"
prefer-non-shared="true">
</provider>
</extension>
+ <extension
+ point="org.eclipse.e4.ui.css.swt.theme">
+ <stylesheet
+ uri="css/e4-dark_autotools.css">
+ <themeid
+ refid="org.eclipse.e4.ui.css.theme.e4_dark">
+ </themeid>
+ </stylesheet>
+ </extension>
</plugin>
diff --git a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/AutotoolsEnvironmentVariableSupplier.java b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/AutotoolsEnvironmentVariableSupplier.java
index ad37a2f5658..4bf233c64a9 100644
--- a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/AutotoolsEnvironmentVariableSupplier.java
+++ b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/AutotoolsEnvironmentVariableSupplier.java
@@ -19,7 +19,6 @@ import org.eclipse.cdt.managedbuilder.core.IConfiguration;
import org.eclipse.cdt.managedbuilder.envvar.IBuildEnvironmentVariable;
import org.eclipse.cdt.managedbuilder.envvar.IConfigurationEnvironmentVariableSupplier;
import org.eclipse.cdt.managedbuilder.envvar.IEnvironmentVariableProvider;
-import org.eclipse.core.runtime.Platform;
/**
* Supplies some default environment variables for the Autotools toolchain. For
@@ -32,18 +31,15 @@ import org.eclipse.core.runtime.Platform;
public class AutotoolsEnvironmentVariableSupplier implements IConfigurationEnvironmentVariableSupplier {
private static class VerboseEnvironmentVariable extends EnvironmentVariable implements IBuildEnvironmentVariable {
- private static final String VERBOSE_VAR_NAME = "V";
- private static final String VERBOSE_VAR_VALUE = "1";
+ private static final String VERBOSE_VAR_NAME = "V"; //$NON-NLS-1$
+ private static final String VERBOSE_VAR_VALUE = "1"; //$NON-NLS-1$
private VerboseEnvironmentVariable(String name, String value, int op, String delimiter) {
super(name, value, op, delimiter);
}
private static boolean isVar(String name) {
- // Windows has case insensitive env var names
- return Platform.getOS().equals(Platform.OS_WIN32)
- ? name.equalsIgnoreCase(VerboseEnvironmentVariable.VERBOSE_VAR_NAME)
- : name.equals(VerboseEnvironmentVariable.VERBOSE_VAR_NAME);
+ return name.equals(VerboseEnvironmentVariable.VERBOSE_VAR_NAME);
}
private static IBuildEnvironmentVariable create() {
diff --git a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/AutotoolsNewMakeGenerator.java b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/AutotoolsNewMakeGenerator.java
index 9d765ee3a8a..296fbfdf692 100644
--- a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/AutotoolsNewMakeGenerator.java
+++ b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/AutotoolsNewMakeGenerator.java
@@ -93,6 +93,8 @@ import org.eclipse.remote.core.exception.RemoteConnectionException;
@SuppressWarnings("deprecation")
public class AutotoolsNewMakeGenerator extends MarkerGenerator {
+ private static final String EMPTY_STRING = ""; //$NON-NLS-1$
+
public static final String CONFIG_STATUS = "config.status"; //$NON-NLS-1$
public static final String MAKEFILE = "Makefile"; //$NON-NLS-1$
public static final String MAKEFILE_CVS = "Makefile.cvs"; //$NON-NLS-1$
@@ -114,7 +116,7 @@ public class AutotoolsNewMakeGenerator extends MarkerGenerator {
private static final String TARGET_USE_DEFAULT_CMD = "useDefaultCommand"; //$NON-NLS-1$
private static final String TARGET_ARGUMENTS = "buildArguments"; //$NON-NLS-1$
private static final String TARGET_COMMAND = "buildCommand"; //$NON-NLS-1$
- private static final String TARGET_RUN_ALL_BUILDERS = "runAllBuilders";
+ private static final String TARGET_RUN_ALL_BUILDERS = "runAllBuilders"; //$NON-NLS-1$
private static final String TARGET = "buildTarget"; //$NON-NLS-1$
private static final String DEFAULT_AUTORECONF = "autoreconf"; //$NON-NLS-1$
@@ -127,7 +129,7 @@ public class AutotoolsNewMakeGenerator extends MarkerGenerator {
private IPath buildLocation;
private String buildDir;
private String srcDir;
- private String winOSType = "";
+ private String winOSType = EMPTY_STRING;
private IConfiguration cfg;
private ICConfigurationDescription cdesc;
@@ -154,7 +156,7 @@ public class AutotoolsNewMakeGenerator extends MarkerGenerator {
buildDir = buildDirectory.toString();
srcDir = a.getConfigToolDirectory();
try {
- String resolved = ManagedBuildManager.getBuildMacroProvider().resolveValue(srcDir, "", null,
+ String resolved = ManagedBuildManager.getBuildMacroProvider().resolveValue(srcDir, EMPTY_STRING, null,
IBuildMacroProvider.CONTEXT_CONFIGURATION, c);
srcDir = resolved;
} catch (BuildMacroException e) {
@@ -169,7 +171,7 @@ public class AutotoolsNewMakeGenerator extends MarkerGenerator {
this.cfg = info.getDefaultConfiguration();
this.builder = cfg.getBuilder();
this.monitor = monitor;
- CUIPlugin.getDefault().getPreferenceStore().getString("dummy");
+ CUIPlugin.getDefault().getPreferenceStore().getString("dummy"); //$NON-NLS-1$
}
@Override
@@ -250,7 +252,7 @@ public class AutotoolsNewMakeGenerator extends MarkerGenerator {
// Create or get the handle for the build directory
IPath path = new Path(dirName);
boolean rc = true;
- if (dirName.length() == 0 || dirName.equals("."))
+ if (dirName.length() == 0 || dirName.equals(".")) //$NON-NLS-1$
path = getProjectLocation().append(dirName);
File f = path.toFile();
if (!f.exists()) {
@@ -297,7 +299,8 @@ public class AutotoolsNewMakeGenerator extends MarkerGenerator {
Status rc = regenerateMakefiles(icfg, reconfigure);
if (!rc.isOK()) {
if (status == null) {
- status = new MultiStatus(AutotoolsPlugin.getUniqueIdentifier(), IStatus.ERROR, "", null);
+ status = new MultiStatus(AutotoolsPlugin.getUniqueIdentifier(), IStatus.ERROR, EMPTY_STRING,
+ null);
}
status.add(rc);
}
@@ -305,14 +308,12 @@ public class AutotoolsNewMakeGenerator extends MarkerGenerator {
} else {
Status rc = regenerateMakefiles(cfg, reconfigure);
if (!rc.isOK()) {
- if (status == null) {
- status = new MultiStatus(AutotoolsPlugin.getUniqueIdentifier(), IStatus.ERROR, "", null);
- }
+ status = new MultiStatus(AutotoolsPlugin.getUniqueIdentifier(), IStatus.ERROR, EMPTY_STRING, null);
status.add(rc);
}
}
if (status == null) {
- status = new MultiStatus(ManagedBuilderCorePlugin.getUniqueIdentifier(), IStatus.OK, "", null);
+ status = new MultiStatus(ManagedBuilderCorePlugin.getUniqueIdentifier(), IStatus.OK, EMPTY_STRING, null);
}
return status;
}
@@ -320,7 +321,7 @@ public class AutotoolsNewMakeGenerator extends MarkerGenerator {
private Status regenerateMakefiles(IConfiguration icfg, boolean reconfigure) throws CoreException {
MultiStatus status;
int rc = IStatus.OK;
- String errMsg = "";
+ String errMsg = EMPTY_STRING;
boolean needFullConfigure = false;
// See if the user has cancelled the build
@@ -645,46 +646,46 @@ public class AutotoolsNewMakeGenerator extends MarkerGenerator {
* @return stripped command
*/
public static String stripEnvVars(String command, List<String> envVars) {
- Pattern p1 = Pattern.compile("(\\w+[=]\\\".*?\\\"\\s+)\\w+.*");
- Pattern p2 = Pattern.compile("(\\w+[=]'.*?'\\s+)\\w+.*");
- Pattern p3 = Pattern.compile("(\\w+[=][^\\s]+\\s+)\\w+.*");
- Pattern p4 = Pattern.compile("\\w+\\s+(\\w+[=]\\\".*?\\\"\\s*)+.*");
- Pattern p5 = Pattern.compile("\\w+\\s+(\\w+[=]'.*?'\\s*)+.*");
- Pattern p6 = Pattern.compile("\\w+\\s+(\\w+[=][^\\s]+).*");
+ Pattern p1 = Pattern.compile("(\\w+[=]\\\".*?\\\"\\s+)\\w+.*"); //$NON-NLS-1$
+ Pattern p2 = Pattern.compile("(\\w+[=]'.*?'\\s+)\\w+.*"); //$NON-NLS-1$
+ Pattern p3 = Pattern.compile("(\\w+[=][^\\s]+\\s+)\\w+.*"); //$NON-NLS-1$
+ Pattern p4 = Pattern.compile("\\w+\\s+(\\w+[=]\\\".*?\\\"\\s*)+.*"); //$NON-NLS-1$
+ Pattern p5 = Pattern.compile("\\w+\\s+(\\w+[=]'.*?'\\s*)+.*"); //$NON-NLS-1$
+ Pattern p6 = Pattern.compile("\\w+\\s+(\\w+[=][^\\s]+).*"); //$NON-NLS-1$
boolean finished = false;
while (!finished) {
Matcher m1 = p1.matcher(command);
if (m1.matches()) {
- command = command.replaceFirst("\\w+[=]\\\".*?\\\"", "").trim();
+ command = command.replaceFirst("\\w+[=]\\\".*?\\\"", EMPTY_STRING).trim(); //$NON-NLS-1$
String s = m1.group(1).trim();
- envVars.add(s.replaceAll("\\\"", ""));
+ envVars.add(s.replaceAll("\\\"", EMPTY_STRING)); //$NON-NLS-1$
} else {
Matcher m2 = p2.matcher(command);
if (m2.matches()) {
- command = command.replaceFirst("\\w+[=]'.*?'", "").trim();
+ command = command.replaceFirst("\\w+[=]'.*?'", EMPTY_STRING).trim(); //$NON-NLS-1$
String s = m2.group(1).trim();
- envVars.add(s.replaceAll("'", ""));
+ envVars.add(s.replaceAll("'", EMPTY_STRING)); //$NON-NLS-1$
} else {
Matcher m3 = p3.matcher(command);
if (m3.matches()) {
- command = command.replaceFirst("\\w+[=][^\\s]+", "").trim();
+ command = command.replaceFirst("\\w+[=][^\\s]+", EMPTY_STRING).trim(); //$NON-NLS-1$
envVars.add(m3.group(1).trim());
} else {
Matcher m4 = p4.matcher(command);
if (m4.matches()) {
- command = command.replaceFirst("\\w+[=]\\\".*?\\\"", "").trim();
+ command = command.replaceFirst("\\w+[=]\\\".*?\\\"", EMPTY_STRING).trim(); //$NON-NLS-1$
String s = m4.group(1).trim();
- envVars.add(s.replaceAll("\\\"", ""));
+ envVars.add(s.replaceAll("\\\"", EMPTY_STRING)); //$NON-NLS-1$
} else {
Matcher m5 = p5.matcher(command);
if (m5.matches()) {
- command = command.replaceFirst("\\w+[=]'.*?'", "").trim();
+ command = command.replaceFirst("\\w+[=]'.*?'", EMPTY_STRING).trim(); //$NON-NLS-1$
String s = m5.group(1).trim();
- envVars.add(s.replaceAll("'", ""));
+ envVars.add(s.replaceAll("'", EMPTY_STRING)); //$NON-NLS-1$
} else {
Matcher m6 = p6.matcher(command);
if (m6.matches()) {
- command = command.replaceFirst("\\w+[=][^\\s+]+", "").trim();
+ command = command.replaceFirst("\\w+[=][^\\s+]+", EMPTY_STRING).trim(); //$NON-NLS-1$
envVars.add(m6.group(1).trim());
} else {
finished = true;
@@ -707,26 +708,26 @@ public class AutotoolsNewMakeGenerator extends MarkerGenerator {
* @return stripped option
*/
public static String stripEnvVarsFromOption(String str, List<String> envVars) {
- Pattern p1 = Pattern.compile("(\\w+[=]\\\".*?\\\"\\s*).*");
- Pattern p2 = Pattern.compile("(\\w+[=]'.*?'\\s*).*");
- Pattern p3 = Pattern.compile("(\\w+[=][^\\s]+).*");
+ Pattern p1 = Pattern.compile("(\\w+[=]\\\".*?\\\"\\s*).*"); //$NON-NLS-1$
+ Pattern p2 = Pattern.compile("(\\w+[=]'.*?'\\s*).*"); //$NON-NLS-1$
+ Pattern p3 = Pattern.compile("(\\w+[=][^\\s]+).*"); //$NON-NLS-1$
boolean finished = false;
while (!finished) {
Matcher m1 = p1.matcher(str);
if (m1.matches()) {
- str = str.replaceFirst("\\w+[=]\\\".*?\\\"", "").trim();
+ str = str.replaceFirst("\\w+[=]\\\".*?\\\"", EMPTY_STRING).trim(); //$NON-NLS-1$
String s = m1.group(1).trim();
- envVars.add(s.replaceAll("\\\"", ""));
+ envVars.add(s.replaceAll("\\\"", EMPTY_STRING)); //$NON-NLS-1$
} else {
Matcher m2 = p2.matcher(str);
if (m2.matches()) {
- str = str.replaceFirst("\\w+[=]'.*?'", "").trim();
+ str = str.replaceFirst("\\w+[=]'.*?'", EMPTY_STRING).trim(); //$NON-NLS-1$
String s = m2.group(1).trim();
- envVars.add(s.replaceAll("'", ""));
+ envVars.add(s.replaceAll("'", EMPTY_STRING)); //$NON-NLS-1$
} else {
Matcher m3 = p3.matcher(str);
if (m3.matches()) {
- str = str.replaceFirst("\\w+[=][^\\s]+", "").trim();
+ str = str.replaceFirst("\\w+[=][^\\s]+", EMPTY_STRING).trim(); //$NON-NLS-1$
envVars.add(m3.group(1).trim());
} else {
finished = true;
@@ -766,7 +767,7 @@ public class AutotoolsNewMakeGenerator extends MarkerGenerator {
if (configOption != null)
command = stripEnvVars(configOption.getValue().trim(), envVars);
- String[] tokens = command.split("\\s");
+ String[] tokens = command.split("\\s"); //$NON-NLS-1$
if (tokens.length > 1) {
command = tokens[0];
for (int i = 1; i < tokens.length; ++i)
@@ -798,7 +799,7 @@ public class AutotoolsNewMakeGenerator extends MarkerGenerator {
if (autogenOption != null)
command = stripEnvVars(autogenOption.getValue().trim(), envVars);
- String[] tokens = command.split("\\s");
+ String[] tokens = command.split("\\s"); //$NON-NLS-1$
if (tokens.length > 1) {
command = tokens[0];
for (int i = 1; i < tokens.length; ++i)
@@ -840,8 +841,7 @@ public class AutotoolsNewMakeGenerator extends MarkerGenerator {
// try to resolve the build macros in any argument
try {
String resolved = ManagedBuildManager.getBuildMacroProvider().resolveValueToMakefileFormat(
- configTargets[i], "", //$NON-NLS-1$
- " ", //$NON-NLS-1$
+ configTargets[i], EMPTY_STRING, " ", //$NON-NLS-1$
IBuildMacroProvider.CONTEXT_CONFIGURATION, cfg);
configTargets[i] = resolved;
} catch (BuildMacroException e) {
@@ -1062,10 +1062,10 @@ public class AutotoolsNewMakeGenerator extends MarkerGenerator {
private String getPathString(IPath path) {
String s = path.toString();
if (getOSName().equals(Platform.OS_WIN32)) {
- if (getWinOSType().equals("cygwin")) {
- s = s.replaceAll("^([a-zA-Z]):", "/cygdrive/$1");
+ if (getWinOSType().equals("cygwin")) { //$NON-NLS-1$
+ s = s.replaceAll("^([a-zA-Z]):", "/cygdrive/$1"); //$NON-NLS-1$ //$NON-NLS-2$
} else {
- s = s.replaceAll("^([a-zA-Z]):", "/$1");
+ s = s.replaceAll("^([a-zA-Z]):", "/$1"); //$NON-NLS-1$ //$NON-NLS-2$
}
}
return s;
@@ -1073,9 +1073,9 @@ public class AutotoolsNewMakeGenerator extends MarkerGenerator {
// Fix any escape characters in sh -c command arguments
private String fixEscapeChars(String s) {
- s = s.replaceAll("\\\\", "\\\\\\\\");
- s = s.replaceAll("\\(", "\\\\(");
- s = s.replaceAll("\\)", "\\\\)");
+ s = s.replaceAll("\\\\", "\\\\\\\\"); //$NON-NLS-1$ //$NON-NLS-2$
+ s = s.replaceAll("\\(", "\\\\("); //$NON-NLS-1$ //$NON-NLS-2$
+ s = s.replaceAll("\\)", "\\\\)"); //$NON-NLS-1$ //$NON-NLS-2$
return s;
}
@@ -1116,16 +1116,15 @@ public class AutotoolsNewMakeGenerator extends MarkerGenerator {
if (command == null)
command = arg;
else
- command += " " + arg;
+ command += " " + arg; //$NON-NLS-1$
}
- configTargets = new String[] { "-c", command };
+ configTargets = new String[] { "-c", command }; //$NON-NLS-1$
for (int i = 0; i < configTargets.length; ++i) {
// try to resolve the build macros in any argument
try {
String resolved = ManagedBuildManager.getBuildMacroProvider().resolveValueToMakefileFormat(
- configTargets[i], "", //$NON-NLS-1$
- " ", //$NON-NLS-1$
+ configTargets[i], EMPTY_STRING, " ", //$NON-NLS-1$
IBuildMacroProvider.CONTEXT_CONFIGURATION, cfg);
// strip any env-var settings from options
// fix for bug #356278
@@ -1161,12 +1160,12 @@ public class AutotoolsNewMakeGenerator extends MarkerGenerator {
// Display command-line environment variables that have been stripped by us
// because launch showCommand won't do this.
if (additionalEnvs != null && additionalEnvs.size() > 0) {
- buf.append(AutotoolsPlugin.getResourceString("MakeGenerator.commandline.envvars"));
+ buf.append(AutotoolsPlugin.getResourceString("MakeGenerator.commandline.envvars")); //$NON-NLS-1$
buf.append(System.getProperty("line.separator", "\n")); //$NON-NLS-1$ //$NON-NLS-2$
- buf.append("\t");
+ buf.append("\t"); //$NON-NLS-1$
for (int i = 0; i < additionalEnvs.size(); ++i) {
String envvar = additionalEnvs.get(i);
- buf.append(envvar.replaceFirst("(\\w+=)(.*)", " $1\"$2\""));
+ buf.append(envvar.replaceFirst("(\\w+=)(.*)", " $1\"$2\"")); //$NON-NLS-1$ //$NON-NLS-2$
}
buf.append(System.getProperty("line.separator", "\n")); //$NON-NLS-1$ //$NON-NLS-2$
buf.append(System.getProperty("line.separator", "\n")); //$NON-NLS-1$ //$NON-NLS-2$
@@ -1474,7 +1473,7 @@ public class AutotoolsNewMakeGenerator extends MarkerGenerator {
Class<? extends IMakeTargetManager> c = makeTargetManager.getClass();
boolean targetsAdded = false;
try {
- Method m = c.getMethod("setTargets", IContainer.class, IMakeTarget[].class);
+ Method m = c.getMethod("setTargets", IContainer.class, IMakeTarget[].class); //$NON-NLS-1$
m.invoke(makeTargetManager, project, makeTargetArray);
targetsAdded = true;
} catch (NoSuchMethodException | IllegalArgumentException | IllegalAccessException
diff --git a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/AutotoolsPropertyConstants.java b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/AutotoolsPropertyConstants.java
index 314e7ecf232..147d142afd7 100644
--- a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/AutotoolsPropertyConstants.java
+++ b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/AutotoolsPropertyConstants.java
@@ -37,12 +37,13 @@ public class AutotoolsPropertyConstants {
public static final QualifiedName LIBTOOLIZE_TOOL = new QualifiedName(PREFIX, "LibtoolizePath"); //$NON-NLS-1$
public static final QualifiedName CLEAN_DELETE = new QualifiedName(PREFIX, "CleanDelete"); //$NON-NLS-1$
public static final QualifiedName CLEAN_MAKE_TARGET = new QualifiedName(PREFIX, "CleanMakeTarget"); //$NON-NLS-1$
- public static final QualifiedName SCANNER_USE_MAKE_W = new QualifiedName(PREFIX, "ScannerUseMakeW");
+ public static final QualifiedName SCANNER_USE_MAKE_W = new QualifiedName(PREFIX, "ScannerUseMakeW"); //$NON-NLS-1$
public static final QualifiedName AUTO_BUILD_NAME = new QualifiedName(PREFIX, "AutoBuildName"); //$NON-NLS-1$
public static final QualifiedName OPEN_INCLUDE = new QualifiedName(PREFIX, "IncludeResourceMapping"); //$NON-NLS-1$
public static final QualifiedName OPEN_INCLUDE_P = new QualifiedName(PREFIX, "PersistentIncludeResourceMapping"); //$NON-NLS-1$
- public static final QualifiedName SCANNER_INFO_DIRTY = new QualifiedName(PREFIX, "ScannerInfoDirty"); // $NON-NLSp-1$
+ public static final QualifiedName SCANNER_INFO_DIRTY = new QualifiedName(PREFIX, "ScannerInfoDirty"); //$NON-NLS-1$
+ @SuppressWarnings("nls")
public static final String[] fACVersions = { "2.13", "2.59", "2.61", "2.67", "2.68" }; //$NON-NLS-1$
public static final String AC_VERSION_2_13 = fACVersions[0];
public static final String AC_VERSION_2_59 = fACVersions[1];
@@ -51,6 +52,7 @@ public class AutotoolsPropertyConstants {
public static final String AC_VERSION_2_68 = fACVersions[4];
public static final String LATEST_AC_VERSION = fACVersions[fACVersions.length - 1];
+ @SuppressWarnings("nls")
public static final String[] fAMVersions = { "1.4-p6", "1.9.5", "1.9.6", "1.11.1" }; //$NON-NLS-1$
public static final String LATEST_AM_VERSION = fAMVersions[fAMVersions.length - 1];
diff --git a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/ErrorParser.java b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/ErrorParser.java
index 5873edf923d..a8c2ed8a5da 100644
--- a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/ErrorParser.java
+++ b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/ErrorParser.java
@@ -71,7 +71,7 @@ public class ErrorParser extends MarkerGenerator implements IErrorParser {
if (marker != null) {
// Check to see if addProblemMarker exists.
try {
- Method method = eoParser.getClass().getMethod("addProblemMarker", ProblemMarkerInfo.class);
+ Method method = eoParser.getClass().getMethod("addProblemMarker", ProblemMarkerInfo.class); //$NON-NLS-1$
try {
method.invoke(eoParser, marker);
return true;
@@ -145,7 +145,7 @@ public class ErrorParser extends MarkerGenerator implements IErrorParser {
int lineNumber = getErrorConfigLineNumber(name);
// now open configure file.
- File file = new File(sourcePath + "/configure");
+ File file = new File(sourcePath + "/configure"); //$NON-NLS-1$
// If the log file is not present there is nothing we can do.
if (!file.exists())
return null;
@@ -166,13 +166,13 @@ public class ErrorParser extends MarkerGenerator implements IErrorParser {
Matcher m = errorPattern.matcher(line);
if (m.matches()) {
String typeString = m.group(1);
- if (typeString.equals("prog"))
+ if (typeString.equals("prog")) //$NON-NLS-1$
return AutotoolsProblemMarkerInfo.Type.PROG;
- if (typeString.equals("header"))
+ if (typeString.equals("header")) //$NON-NLS-1$
return AutotoolsProblemMarkerInfo.Type.HEADER;
- if (typeString.equals("file"))
+ if (typeString.equals("file")) //$NON-NLS-1$
return AutotoolsProblemMarkerInfo.Type.FILE;
- if (typeString.equals("lib"))
+ if (typeString.equals("lib")) //$NON-NLS-1$
return AutotoolsProblemMarkerInfo.Type.LIB;
return null;
@@ -194,7 +194,7 @@ public class ErrorParser extends MarkerGenerator implements IErrorParser {
* @return
*/
private int getErrorConfigLineNumber(String name) {
- File file = new File(buildDir + "/config.log");
+ File file = new File(buildDir + "/config.log"); //$NON-NLS-1$
// If the log file is not present there is nothing we can do.
if (!file.exists())
return -1;
diff --git a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/PkgconfigErrorResolution.java b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/PkgconfigErrorResolution.java
index 8fb79eb627e..624b401a1db 100644
--- a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/PkgconfigErrorResolution.java
+++ b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/PkgconfigErrorResolution.java
@@ -62,7 +62,7 @@ public class PkgconfigErrorResolution implements IMarkerResolution {
public PkgconfigErrorResolution(String pkgconfigRequirement) {
// Get the pkgconfig package name from the requirement message.
- Pattern p = Pattern.compile("(.*?)[\\s,>,<,=].*");
+ Pattern p = Pattern.compile("(.*?)[\\s,>,<,=].*"); //$NON-NLS-1$
Matcher m = p.matcher(pkgconfigRequirement);
if (m.matches()) {
pkgName = m.group(1);
@@ -98,7 +98,7 @@ public class PkgconfigErrorResolution implements IMarkerResolution {
// Use CDT launcher to run rpm to query the package that provides
// the pkgconfig .pc file for the package in question.
ConsoleOutputStream output = new ConsoleOutputStream();
- Process proc = launcher.execute(commandPath, commandArgs, null, new Path("."), new NullProgressMonitor());
+ Process proc = launcher.execute(commandPath, commandArgs, null, new Path("."), new NullProgressMonitor()); //$NON-NLS-1$
if (proc != null) {
try {
// Close the input of the process since we will never write to
@@ -111,7 +111,7 @@ public class PkgconfigErrorResolution implements IMarkerResolution {
} else {
String result = output.readBuffer();
if (!result.startsWith("error:")) //$NON-NLS-1$
- System.out.println("need to execute update of " + result);
+ System.out.println("need to execute update of " + result); //$NON-NLS-1$
}
}
diff --git a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/VersionComparator.java b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/VersionComparator.java
index b980ec8dfc2..8160469bbd3 100644
--- a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/VersionComparator.java
+++ b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/VersionComparator.java
@@ -31,8 +31,8 @@ public class VersionComparator {
* VersionComparator.compare("1.5.1", "1.5.1") returns 0
*/
public static int compare(String v1, String v2) {
- String[] v1digits = v1.split("\\.");
- String[] v2digits = v2.split("\\.");
+ String[] v1digits = v1.split("\\."); //$NON-NLS-1$
+ String[] v2digits = v2.split("\\."); //$NON-NLS-1$
for (int i = 0; i < v1digits.length && i < v2digits.length; i++) {
int d1 = Integer.valueOf(v1digits[i]);
diff --git a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/AbstractConfigurationOption.java b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/AbstractConfigurationOption.java
index 38916f0d45b..97d7e2a2ba2 100644
--- a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/AbstractConfigurationOption.java
+++ b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/AbstractConfigurationOption.java
@@ -64,7 +64,7 @@ public abstract class AbstractConfigurationOption implements IConfigureOption {
}
public String getParameterName() {
- return "--" + getName();
+ return "--" + getName(); //$NON-NLS-1$
}
@Override
diff --git a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/AutotoolsConfiguration.java b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/AutotoolsConfiguration.java
index 6e3ce526df5..0e5514fcbd5 100644
--- a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/AutotoolsConfiguration.java
+++ b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/AutotoolsConfiguration.java
@@ -133,11 +133,11 @@ public class AutotoolsConfiguration implements IAConfiguration {
IConfigureOption.BIN),
new Option(AutotoolsOptionConstants.FLAG_CFLAGS, "cflags", AutotoolsOptionConstants.FLAG_CFLAGS_FLAGS, //$NON-NLS-1$
IConfigureOption.FLAG),
- new Option(AutotoolsOptionConstants.OPT_CFLAGS_DEBUG, "cflags_debug", IConfigureOption.FLAGVALUE), //$NON-NLS-1$ //$NON-NLS-2$
- new Option(AutotoolsOptionConstants.OPT_CFLAGS_GPROF, "cflags_gprof", IConfigureOption.FLAGVALUE), //$NON-NLS-1$ //$NON-NLS-2$
- new Option(AutotoolsOptionConstants.OPT_CFLAGS_GCOV, "cflags_gcov", IConfigureOption.FLAGVALUE), //$NON-NLS-1$ //$NON-NLS-2$
+ new Option(AutotoolsOptionConstants.OPT_CFLAGS_DEBUG, "cflags_debug", IConfigureOption.FLAGVALUE), //$NON-NLS-1$
+ new Option(AutotoolsOptionConstants.OPT_CFLAGS_GPROF, "cflags_gprof", IConfigureOption.FLAGVALUE), //$NON-NLS-1$
+ new Option(AutotoolsOptionConstants.OPT_CFLAGS_GCOV, "cflags_gcov", IConfigureOption.FLAGVALUE), //$NON-NLS-1$
new Option(AutotoolsOptionConstants.OPT_USER, IConfigureOption.MULTIARG),
- new Option(AutotoolsOptionConstants.TOOL_AUTOGEN, "autogen", "autogen.sh", IConfigureOption.TOOL), //$NON-NLS-1$
+ new Option(AutotoolsOptionConstants.TOOL_AUTOGEN, "autogen", "autogen.sh", IConfigureOption.TOOL), //$NON-NLS-1$ //$NON-NLS-2$
new Option(AutotoolsOptionConstants.CATEGORY_OPTIONS, IConfigureOption.CATEGORY),
new Option(AutotoolsOptionConstants.OPT_AUTOGENOPTS, IConfigureOption.MULTIARG), };
@@ -406,12 +406,12 @@ public class AutotoolsConfiguration implements IAConfiguration {
@Override
public void setConfigToolDirectory(String configToolDirectory) {
- setOption("configdir", configToolDirectory);
+ setOption("configdir", configToolDirectory); //$NON-NLS-1$
}
@Override
public String getConfigToolDirectory() {
- IConfigureOption option = configOptions.get("configdir");
+ IConfigureOption option = configOptions.get("configdir"); //$NON-NLS-1$
return option.getValue();
}
diff --git a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/AutotoolsConfigurationManager.java b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/AutotoolsConfigurationManager.java
index c86e682eb0e..aa418c7c7a6 100644
--- a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/AutotoolsConfigurationManager.java
+++ b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/AutotoolsConfigurationManager.java
@@ -417,19 +417,19 @@ public class AutotoolsConfigurationManager implements IResourceChangeListener {
String childName = children.get(k);
IConfigureOption childopt = cfg.getOption(childName);
p.println("<flagvalue id=\"" + childopt.getName() + "\" value=\"" //$NON-NLS-1$ //$NON-NLS-2$
- + xmlEscape(childopt.getValue()) + "\"/>"); //$NON-NLS-3$
+ + xmlEscape(childopt.getValue()) + "\"/>"); //$NON-NLS-1$
}
p.println("</flag>"); //$NON-NLS-1$
} else if (!opt.isCategory() && !opt.isFlagValue())
p.println("<option id=\"" + option.getName() + "\" value=\"" + xmlEscape(opt.getValue()) //$NON-NLS-1$ //$NON-NLS-2$
- + "\"/>"); //$NON-NLS-3$
+ + "\"/>"); //$NON-NLS-1$
}
p.println("</configuration>"); //$NON-NLS-1$
// Sync name field as this configuration is now
// officially saved
syncNameField(cfgd);
}
- p.println("</configurations>");
+ p.println("</configurations>"); //$NON-NLS-1$
}
}
} catch (IOException e) {
@@ -503,7 +503,7 @@ public class AutotoolsConfigurationManager implements IResourceChangeListener {
p.println("</configuration>"); //$NON-NLS-1$
}
}
- p.println("</configurations>");
+ p.println("</configurations>"); //$NON-NLS-1$
}
}
} catch (IOException e) {
@@ -602,7 +602,7 @@ public class AutotoolsConfigurationManager implements IResourceChangeListener {
private String createDummyId() {
for (;;) {
- String id = "TEMP_" + rand.nextInt();
+ String id = "TEMP_" + rand.nextInt(); //$NON-NLS-1$
if (tmpConfigs.get(id) == null)
return id;
}
diff --git a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/AutotoolsOptionValueHandler.java b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/AutotoolsOptionValueHandler.java
index 53249c96f28..069a0fad1ec 100644
--- a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/AutotoolsOptionValueHandler.java
+++ b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/AutotoolsOptionValueHandler.java
@@ -49,7 +49,7 @@ public class AutotoolsOptionValueHandler extends ManagedOptionValueHandler imple
// SortedSet<Integer> nums = new TreeSet<Integer>();
IConfiguration configuration = (IConfiguration) buildObject;
ICConfigurationDescription cfgd = ManagedBuildManager.getDescriptionForConfiguration(configuration);
- if (option.getName().equals("Name") && cfgd != null) {
+ if (option.getName().equals("Name") && cfgd != null) { //$NON-NLS-1$
String cfgId = cfgd.getId();
if (!value.isEmpty() && !value.equals(cfgId)) {
// we have a cloned configuration and we know that the
@@ -95,7 +95,7 @@ public class AutotoolsOptionValueHandler extends ManagedOptionValueHandler imple
private String fixName(String cfgName) {
// Replace whitespace with underscores.
- return cfgName.replaceAll("\\s", "_");
+ return cfgName.replaceAll("\\s", "_"); //$NON-NLS-1$ //$NON-NLS-2$
}
// IOptionApplicability methods
diff --git a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/ConfigureMessages.java b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/ConfigureMessages.java
index b3d6d866785..55c5a4f3e03 100644
--- a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/ConfigureMessages.java
+++ b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/ConfigureMessages.java
@@ -26,7 +26,7 @@ public class ConfigureMessages {
}
public static String getConfigureDescription(String name) {
- return getString("Option.configure." + name); //$NON-NLS-11$
+ return getString("Option.configure." + name); //$NON-NLS-1$
}
public static String getConfigureTip(String name) {
diff --git a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/ConfigureOptionCategory.java b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/ConfigureOptionCategory.java
index 9fbdc8f9eea..235b393a7fb 100644
--- a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/ConfigureOptionCategory.java
+++ b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/ConfigureOptionCategory.java
@@ -40,7 +40,7 @@ public class ConfigureOptionCategory implements IConfigureOption {
@Override
public String getParameter() {
- return "";
+ return ""; //$NON-NLS-1$
}
@Override
@@ -50,12 +50,12 @@ public class ConfigureOptionCategory implements IConfigureOption {
@Override
public String getToolTip() {
- return "";
+ return ""; //$NON-NLS-1$
}
@Override
public String getValue() {
- return "null";
+ return "null"; //$NON-NLS-1$
}
@Override
diff --git a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/FlagConfigureOption.java b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/FlagConfigureOption.java
index a4a175fcd79..2b1b684e5e5 100644
--- a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/FlagConfigureOption.java
+++ b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/FlagConfigureOption.java
@@ -43,7 +43,7 @@ public class FlagConfigureOption extends AbstractConfigurationOption {
StringBuilder parms = new StringBuilder();
// Multiple flags are designated by putting multiple flags together using "|" as delimiter
String[] flagNames = getValue().split("\\|"); //$NON-NLS-1$
- String flagSeparator = "";
+ String flagSeparator = ""; //$NON-NLS-1$
for (String flagName : flagNames) {
parms.append(flagSeparator);
flagSeparator = " "; //$NON-NLS-1$
diff --git a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/FlagValueConfigureOption.java b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/FlagValueConfigureOption.java
index 8346f5595ff..aea788dbef1 100644
--- a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/FlagValueConfigureOption.java
+++ b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/FlagValueConfigureOption.java
@@ -37,7 +37,7 @@ public class FlagValueConfigureOption extends BinConfigureOption implements IFla
@Override
public String getParameter() {
- return "";
+ return ""; //$NON-NLS-1$
}
@Override
diff --git a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/InternalConfigureOption.java b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/InternalConfigureOption.java
index e2b337542b2..9c1b414cea3 100644
--- a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/InternalConfigureOption.java
+++ b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/InternalConfigureOption.java
@@ -52,7 +52,7 @@ public class InternalConfigureOption extends AbstractConfigurationOption {
@Override
public String getParameter() {
- return "";
+ return ""; //$NON-NLS-1$
}
@Override
diff --git a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/StringConfigureOption.java b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/StringConfigureOption.java
index 747269c184b..65ad0020fc0 100644
--- a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/StringConfigureOption.java
+++ b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/StringConfigureOption.java
@@ -54,7 +54,7 @@ public class StringConfigureOption extends AbstractConfigurationOption {
public String getParameter() {
if (isParmSet())
return getParameterName() + "=" + getValue(); //$NON-NLS-1$
- return "";
+ return ""; //$NON-NLS-1$
}
@Override
diff --git a/build/org.eclipse.cdt.autotools.docs/.settings/org.eclipse.core.resources.prefs b/build/org.eclipse.cdt.autotools.docs/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.docs/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/build/org.eclipse.cdt.autotools.docs/.settings/org.eclipse.jdt.core.prefs b/build/org.eclipse.cdt.autotools.docs/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 2b6ecff8a01..00000000000
--- a/build/org.eclipse.cdt.autotools.docs/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,464 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
-org.eclipse.jdt.core.codeComplete.argumentPrefixes=
-org.eclipse.jdt.core.codeComplete.argumentSuffixes=
-org.eclipse.jdt.core.codeComplete.fieldPrefixes=
-org.eclipse.jdt.core.codeComplete.fieldSuffixes=
-org.eclipse.jdt.core.codeComplete.localPrefixes=
-org.eclipse.jdt.core.codeComplete.localSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
-org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
-org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
-org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
-org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
-org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
-org.eclipse.jdt.core.compiler.problem.APILeak=warning
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
-org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
-org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
-org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
-org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
-org.eclipse.jdt.core.compiler.problem.nullReference=error
-org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
-org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
-org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
-org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
-org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
-org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
-org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
-org.eclipse.jdt.core.formatter.align_with_spaces=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
-org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
-org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
-org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
-org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=0
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
-org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
-org.eclipse.jdt.core.formatter.comment.format_block_comments=false
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
-org.eclipse.jdt.core.formatter.comment.format_line_comments=false
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
-org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
-org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
-org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.join_lines_in_comments=true
-org.eclipse.jdt.core.formatter.join_wrapped_lines=true
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=120
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_on_off_tags=true
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
-org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
-org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/build/org.eclipse.cdt.autotools.docs/.settings/org.eclipse.jdt.ui.prefs b/build/org.eclipse.cdt.autotools.docs/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index e44576346c4..00000000000
--- a/build/org.eclipse.cdt.autotools.docs/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,133 +0,0 @@
-cleanup.add_default_serial_version_id=true
-cleanup.add_generated_serial_version_id=false
-cleanup.add_missing_annotations=true
-cleanup.add_missing_deprecated_annotations=true
-cleanup.add_missing_methods=false
-cleanup.add_missing_nls_tags=false
-cleanup.add_missing_override_annotations=true
-cleanup.add_missing_override_annotations_interface_methods=true
-cleanup.add_serial_version_id=false
-cleanup.always_use_blocks=true
-cleanup.always_use_parentheses_in_expressions=false
-cleanup.always_use_this_for_non_static_field_access=false
-cleanup.always_use_this_for_non_static_method_access=false
-cleanup.convert_functional_interfaces=false
-cleanup.convert_to_enhanced_for_loop=false
-cleanup.correct_indentation=false
-cleanup.format_source_code=true
-cleanup.format_source_code_changes_only=false
-cleanup.insert_inferred_type_arguments=false
-cleanup.make_local_variable_final=true
-cleanup.make_parameters_final=false
-cleanup.make_private_fields_final=true
-cleanup.make_type_abstract_if_missing_method=false
-cleanup.make_variable_declarations_final=false
-cleanup.never_use_blocks=false
-cleanup.never_use_parentheses_in_expressions=true
-cleanup.organize_imports=true
-cleanup.qualify_static_field_accesses_with_declaring_class=false
-cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-cleanup.qualify_static_member_accesses_with_declaring_class=false
-cleanup.qualify_static_method_accesses_with_declaring_class=false
-cleanup.remove_private_constructors=true
-cleanup.remove_redundant_modifiers=false
-cleanup.remove_redundant_semicolons=true
-cleanup.remove_redundant_type_arguments=true
-cleanup.remove_trailing_whitespaces=true
-cleanup.remove_trailing_whitespaces_all=true
-cleanup.remove_trailing_whitespaces_ignore_empty=false
-cleanup.remove_unnecessary_casts=true
-cleanup.remove_unnecessary_nls_tags=false
-cleanup.remove_unused_imports=true
-cleanup.remove_unused_local_variables=false
-cleanup.remove_unused_private_fields=true
-cleanup.remove_unused_private_members=false
-cleanup.remove_unused_private_methods=true
-cleanup.remove_unused_private_types=true
-cleanup.sort_members=false
-cleanup.sort_members_all=false
-cleanup.use_anonymous_class_creation=false
-cleanup.use_blocks=false
-cleanup.use_blocks_only_for_return_and_throw=false
-cleanup.use_lambda=true
-cleanup.use_parentheses_in_expressions=false
-cleanup.use_this_for_non_static_field_access=false
-cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-cleanup.use_this_for_non_static_method_access=false
-cleanup.use_this_for_non_static_method_access_only_if_necessary=true
-cleanup_profile=_CDT
-cleanup_settings_version=2
-eclipse.preferences.version=1
-editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=_CDT
-formatter_settings_version=14
-internal.default.compliance=user
-org.eclipse.jdt.ui.exception.name=e
-org.eclipse.jdt.ui.gettersetter.use.is=true
-org.eclipse.jdt.ui.ignorelowercasenames=true
-org.eclipse.jdt.ui.importorder=java;javax;org;com;
-org.eclipse.jdt.ui.keywordthis=false
-org.eclipse.jdt.ui.ondemandthreshold=1000
-org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.staticondemandthreshold=1000
-org.eclipse.jdt.ui.text.custom_code_templates=
-sp_cleanup.add_default_serial_version_id=true
-sp_cleanup.add_generated_serial_version_id=false
-sp_cleanup.add_missing_annotations=true
-sp_cleanup.add_missing_deprecated_annotations=true
-sp_cleanup.add_missing_methods=false
-sp_cleanup.add_missing_nls_tags=false
-sp_cleanup.add_missing_override_annotations=true
-sp_cleanup.add_missing_override_annotations_interface_methods=true
-sp_cleanup.add_serial_version_id=false
-sp_cleanup.always_use_blocks=true
-sp_cleanup.always_use_parentheses_in_expressions=false
-sp_cleanup.always_use_this_for_non_static_field_access=false
-sp_cleanup.always_use_this_for_non_static_method_access=false
-sp_cleanup.convert_functional_interfaces=false
-sp_cleanup.convert_to_enhanced_for_loop=false
-sp_cleanup.correct_indentation=false
-sp_cleanup.format_source_code=true
-sp_cleanup.format_source_code_changes_only=false
-sp_cleanup.insert_inferred_type_arguments=false
-sp_cleanup.make_local_variable_final=true
-sp_cleanup.make_parameters_final=false
-sp_cleanup.make_private_fields_final=true
-sp_cleanup.make_type_abstract_if_missing_method=false
-sp_cleanup.make_variable_declarations_final=false
-sp_cleanup.never_use_blocks=false
-sp_cleanup.never_use_parentheses_in_expressions=true
-sp_cleanup.on_save_use_additional_actions=true
-sp_cleanup.organize_imports=true
-sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
-sp_cleanup.remove_private_constructors=true
-sp_cleanup.remove_redundant_modifiers=false
-sp_cleanup.remove_redundant_semicolons=true
-sp_cleanup.remove_redundant_type_arguments=true
-sp_cleanup.remove_trailing_whitespaces=true
-sp_cleanup.remove_trailing_whitespaces_all=true
-sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
-sp_cleanup.remove_unnecessary_casts=true
-sp_cleanup.remove_unnecessary_nls_tags=false
-sp_cleanup.remove_unused_imports=true
-sp_cleanup.remove_unused_local_variables=false
-sp_cleanup.remove_unused_private_fields=true
-sp_cleanup.remove_unused_private_members=false
-sp_cleanup.remove_unused_private_methods=true
-sp_cleanup.remove_unused_private_types=true
-sp_cleanup.sort_members=false
-sp_cleanup.sort_members_all=false
-sp_cleanup.use_anonymous_class_creation=false
-sp_cleanup.use_blocks=false
-sp_cleanup.use_blocks_only_for_return_and_throw=false
-sp_cleanup.use_lambda=true
-sp_cleanup.use_parentheses_in_expressions=false
-sp_cleanup.use_this_for_non_static_field_access=false
-sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-sp_cleanup.use_this_for_non_static_method_access=false
-sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/build/org.eclipse.cdt.autotools.docs/CDT/Autotools/User_Guide/Updating-This-Document.html b/build/org.eclipse.cdt.autotools.docs/CDT/Autotools/User_Guide/Updating-This-Document.html
index 8d9e2b496e2..be97848ade2 100644
--- a/build/org.eclipse.cdt.autotools.docs/CDT/Autotools/User_Guide/Updating-This-Document.html
+++ b/build/org.eclipse.cdt.autotools.docs/CDT/Autotools/User_Guide/Updating-This-Document.html
@@ -28,7 +28,7 @@
<h1 id="Updating_This_Document">Updating This Document</h1>
<p>This document is maintained in a collaborative wiki. If you wish to update or modify this document please visit
- <a href="http://wiki.eclipse.org/CDT/Autotools/User_Guide">http://wiki.eclipse.org/CDT/Autotools/User_Guide</a>
+ <a href="https://wiki.eclipse.org/CDT/Autotools/User_Guide">https://wiki.eclipse.org/CDT/Autotools/User_Guide</a>
</p><hr class="navigation-separator"/>
<table class="navigation" style="width: 100%;" border="0" summary="navigation">
<tr>
diff --git a/build/org.eclipse.cdt.autotools.docs/CDT/Autotools/User_Guide/User-Guide.html b/build/org.eclipse.cdt.autotools.docs/CDT/Autotools/User_Guide/User-Guide.html
index 7a67fc3ec07..24e76139ed7 100644
--- a/build/org.eclipse.cdt.autotools.docs/CDT/Autotools/User_Guide/User-Guide.html
+++ b/build/org.eclipse.cdt.autotools.docs/CDT/Autotools/User_Guide/User-Guide.html
@@ -37,9 +37,9 @@
exists or find the C compiler). The macros are written in a language called m4 and the developer is free to create their own macros to add to the repository. </p>
<p>The Autotools plug-in adds support for running the configure script prior to the build. As well, support is added for invoking the Autotools themselves as well as maintaining the files they use. An Autotools project extends a CDT Makefile project. Therefore, functionality in the CDT for supporting such a project applies to an Autotools project as well (e.g. C/C++ Property pages).</p>
<p>For more details on the GNU Autotools, see
- <a href="http://www.gnu.org/software/autoconf/">http://www.gnu.org/software/autoconf/</a> and
+ <a href="https://www.gnu.org/software/autoconf/">https://www.gnu.org/software/autoconf/</a> and
- <a href="http://www.gnu.org/software/automake/">http://www.gnu.org/software/automake/</a>
+ <a href="https://www.gnu.org/software/automake/">https://www.gnu.org/software/automake/</a>
</p><hr class="navigation-separator"/>
<table class="navigation" style="width: 100%;" border="0" summary="navigation">
<tr>
diff --git a/build/org.eclipse.cdt.autotools.docs/META-INF/MANIFEST.MF b/build/org.eclipse.cdt.autotools.docs/META-INF/MANIFEST.MF
index 705273e2fb9..d910f4d5f6d 100644
--- a/build/org.eclipse.cdt.autotools.docs/META-INF/MANIFEST.MF
+++ b/build/org.eclipse.cdt.autotools.docs/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %bundleName
Bundle-SymbolicName: org.eclipse.cdt.autotools.docs;singleton:=true
-Bundle-Version: 2.0.300.qualifier
+Bundle-Version: 2.0.1200.qualifier
Bundle-Vendor: %provider
Bundle-Localization: plugin
Require-Bundle: org.eclipse.help,
diff --git a/build/org.eclipse.cdt.autotools.docs/about.html b/build/org.eclipse.cdt.autotools.docs/about.html
index 164f781a8fd..b3134865230 100644
--- a/build/org.eclipse.cdt.autotools.docs/about.html
+++ b/build/org.eclipse.cdt.autotools.docs/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/build/org.eclipse.cdt.autotools.docs/build-helper.xml b/build/org.eclipse.cdt.autotools.docs/build-helper.xml
index 7831830028f..17fa72e1d7e 100644
--- a/build/org.eclipse.cdt.autotools.docs/build-helper.xml
+++ b/build/org.eclipse.cdt.autotools.docs/build-helper.xml
@@ -16,7 +16,7 @@
Generate Eclipse help content for the CDT autotools user guide
</description>
- <property name="autotools.help.doc.url.base" value="http://wiki.eclipse.org"/>
+ <property name="autotools.help.doc.url.base" value="https://wiki.eclipse.org"/>
<property name="autotools.wiki.url.base" value="${autotools.help.doc.url.base}/CDT/Autotools"/>
<property name="imageFolder" value="images"/>
@@ -29,7 +29,7 @@
= Updating This Document =
This document is maintained in a collaborative wiki. If you wish to update or modify this document please visit
-http://wiki.eclipse.org/CDT/Autotools/User_Guide
+https://wiki.eclipse.org/CDT/Autotools/User_Guide
</pageAppendum>
</mediawiki-to-eclipse-help>
<replace file="CDT/Autotools/User_Guide/User-Guide.html" token="{{#eclipseproject:tools.cdt}}" value=""/>
diff --git a/build/org.eclipse.cdt.autotools.docs/build-index.xml b/build/org.eclipse.cdt.autotools.docs/build-index.xml
index 717f473343c..23a8bf4de53 100644
--- a/build/org.eclipse.cdt.autotools.docs/build-index.xml
+++ b/build/org.eclipse.cdt.autotools.docs/build-index.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
- Copyright (c) 2012 Marc-Andre Laperle, Inc. and others
+ Copyright (c) 2012 Marc-Andre Laperle and others
This program and the accompanying materials
are made available under the terms of the Eclipse Public License 2.0
which accompanies this distribution, and is available at
diff --git a/build/org.eclipse.cdt.autotools.docs/pom.xml b/build/org.eclipse.cdt.autotools.docs/pom.xml
index 76e3a41c052..153d239866c 100644
--- a/build/org.eclipse.cdt.autotools.docs/pom.xml
+++ b/build/org.eclipse.cdt.autotools.docs/pom.xml
@@ -1,4 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2008, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
@@ -7,14 +17,33 @@
<parent>
<groupId>org.eclipse.cdt</groupId>
<artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
+ <version>10.7.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
- <version>2.0.300-SNAPSHOT</version>
+ <version>2.0.1200-SNAPSHOT</version>
<artifactId>org.eclipse.cdt.autotools.docs</artifactId>
<packaging>eclipse-plugin</packaging>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-source-plugin</artifactId>
+ <version>${tycho-version}</version>
+ <executions>
+ <execution>
+ <id>plugin-source</id>
+ <phase>none</phase>
+ </execution>
+ <execution>
+ <id>attach-source</id>
+ <phase>none</phase>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
<profiles>
<profile>
<id>build-doc</id>
@@ -28,7 +57,7 @@
<plugin>
<groupId>org.eclipse.tycho.extras</groupId>
<artifactId>tycho-eclipserun-plugin</artifactId>
- <version>${tycho-extras-version}</version>
+ <version>${tycho-version}</version>
<configuration>
<appArgLine>-application org.eclipse.ant.core.antRunner -buildfile build-index.xml build.index</appArgLine>
<dependencies>
@@ -104,7 +133,6 @@
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.8</version>
<executions>
<execution>
<phase>compile</phase>
diff --git a/build/org.eclipse.cdt.autotools.docs/tools.xml b/build/org.eclipse.cdt.autotools.docs/tools.xml
index 40c2720bbbc..d3e6fd9c054 100644
--- a/build/org.eclipse.cdt.autotools.docs/tools.xml
+++ b/build/org.eclipse.cdt.autotools.docs/tools.xml
@@ -2,10 +2,10 @@
<?NLS TYPE="org.eclipse.help.toc"?>
<toc label="GNU Tools On-line Documentation">
- <topic label="gcc" href="http://gcc.gnu.org/onlinedocs/"/>
- <topic label="binutils" href="http://sourceware.org/binutils/docs/"/>
- <topic label="autoconf" href="http://www.gnu.org/software/autoconf/manual/html_node/index.html"/>
- <topic label="automake" href="http://www.gnu.org/software/automake/manual/html_node/index.html"/>
- <topic label="pkg-config" href="http://people.freedesktop.org/~dbn/pkg-config-guide.html"/>
+ <topic label="gcc" href="https://gcc.gnu.org/onlinedocs/"/>
+ <topic label="binutils" href="https://sourceware.org/binutils/docs/"/>
+ <topic label="autoconf" href="https://www.gnu.org/software/autoconf/manual/html_node/index.html"/>
+ <topic label="automake" href="https://www.gnu.org/software/automake/manual/html_node/index.html"/>
+ <topic label="pkg-config" href="https://people.freedesktop.org/~dbn/pkg-config-guide.html"/>
<anchor id="moregnutools"/>
</toc>
diff --git a/build/org.eclipse.cdt.autotools.tests/.classpath b/build/org.eclipse.cdt.autotools.tests/.classpath
index c4a519dc515..763bbba0103 100644
--- a/build/org.eclipse.cdt.autotools.tests/.classpath
+++ b/build/org.eclipse.cdt.autotools.tests/.classpath
@@ -1,7 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry exported="true" kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="src" path="src"/>
+ <classpathentry kind="src" path="src">
+ <attributes>
+ <attribute name="test" value="true"/>
+ </attributes>
+ </classpathentry>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/build/org.eclipse.cdt.autotools.tests/.settings/org.eclipse.core.resources.prefs b/build/org.eclipse.cdt.autotools.tests/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.tests/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/build/org.eclipse.cdt.autotools.tests/.settings/org.eclipse.jdt.core.prefs b/build/org.eclipse.cdt.autotools.tests/.settings/org.eclipse.jdt.core.prefs
index ad05599159f..5b1c443114d 100644
--- a/build/org.eclipse.cdt.autotools.tests/.settings/org.eclipse.jdt.core.prefs
+++ b/build/org.eclipse.cdt.autotools.tests/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/build/org.eclipse.cdt.autotools.tests/.settings/org.eclipse.jdt.ui.prefs b/build/org.eclipse.cdt.autotools.tests/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/build/org.eclipse.cdt.autotools.tests/.settings/org.eclipse.jdt.ui.prefs
+++ b/build/org.eclipse.cdt.autotools.tests/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/build/org.eclipse.cdt.autotools.tests/META-INF/MANIFEST.MF b/build/org.eclipse.cdt.autotools.tests/META-INF/MANIFEST.MF
index f3769e6abb4..6273f22969a 100644
--- a/build/org.eclipse.cdt.autotools.tests/META-INF/MANIFEST.MF
+++ b/build/org.eclipse.cdt.autotools.tests/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %bundleName
Bundle-SymbolicName: org.eclipse.cdt.autotools.tests;singleton:=true
-Bundle-Version: 2.0.0.qualifier
+Bundle-Version: 2.1.0.qualifier
Bundle-Vendor: %provider
Bundle-Localization: plugin
Require-Bundle: org.eclipse.ui,
@@ -18,7 +18,7 @@ Require-Bundle: org.eclipse.ui,
org.eclipse.cdt.core.tests
Bundle-ActivationPolicy: lazy
Fragment-Host: org.eclipse.cdt.autotools.core
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Export-Package: org.eclipse.cdt.autotools.tests,
- org.eclipse.cdt.autotools.tests.editors
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Export-Package: org.eclipse.cdt.autotools.tests;x-internal:=true,
+ org.eclipse.cdt.autotools.tests.editors;x-internal:=true
Automatic-Module-Name: org.eclipse.cdt.autotools.tests
diff --git a/build/org.eclipse.cdt.autotools.tests/about.html b/build/org.eclipse.cdt.autotools.tests/about.html
index 164f781a8fd..b3134865230 100644
--- a/build/org.eclipse.cdt.autotools.tests/about.html
+++ b/build/org.eclipse.cdt.autotools.tests/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/build/org.eclipse.cdt.autotools.tests/src/org/eclipse/cdt/autotools/tests/AutomatedIntegrationSuite.java b/build/org.eclipse.cdt.autotools.tests/src/org/eclipse/cdt/autotools/tests/AutomatedIntegrationSuite.java
index c234c492750..d73d172b525 100644
--- a/build/org.eclipse.cdt.autotools.tests/src/org/eclipse/cdt/autotools/tests/AutomatedIntegrationSuite.java
+++ b/build/org.eclipse.cdt.autotools.tests/src/org/eclipse/cdt/autotools/tests/AutomatedIntegrationSuite.java
@@ -13,14 +13,14 @@
*******************************************************************************/
package org.eclipse.cdt.autotools.tests;
-import org.eclipse.cdt.autotools.tests.editors.EditorTests;
+import org.eclipse.cdt.autotools.tests.editors.EditorTestSuite;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
/** On Windows requires either Cygwin or MinGW to be in PATH */
@RunWith(Suite.class)
-@Suite.SuiteClasses({ AutotoolsProjectTest0.class, AutotoolsProjectNatureTest.class, AutotoolsProjectTest1.class,
- AutotoolsProjectTest2.class, AutotoolsVirtualFolderTest.class, AutotoolsEnvironmentVarTest.class,
- LibtoolGCCBuildCommandParserTest.class, UpdateConfigureTest.class, EditorTests.class })
+@Suite.SuiteClasses({ AutotoolsProject0Test.class, AutotoolsProjectNatureTest.class, AutotoolsProject1Test.class,
+ AutotoolsProject2Test.class, AutotoolsVirtualFolderTest.class, AutotoolsEnvironmentVarTest.class,
+ LibtoolGCCBuildCommandParserTest.class, UpdateConfigureTest.class, EditorTestSuite.class })
public class AutomatedIntegrationSuite {
}
diff --git a/build/org.eclipse.cdt.autotools.tests/src/org/eclipse/cdt/autotools/tests/AutotoolsProject0Test.java b/build/org.eclipse.cdt.autotools.tests/src/org/eclipse/cdt/autotools/tests/AutotoolsProject0Test.java
new file mode 100644
index 00000000000..cb3a95b6459
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.tests/src/org/eclipse/cdt/autotools/tests/AutotoolsProject0Test.java
@@ -0,0 +1,86 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2015 Red Hat Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Red Hat Incorporated - initial API and implementation
+ * Marc-Andre Laperle - Fix failing test on Windows
+ *******************************************************************************/
+package org.eclipse.cdt.autotools.tests;
+
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import org.eclipse.cdt.autotools.core.AutotoolsNewProjectNature;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Platform;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+public class AutotoolsProject0Test {
+
+ private IProject testProject;
+
+ @Before
+ public void setUp() throws Exception {
+ if (!ProjectTools.setup())
+ fail("could not perform basic project workspace setup");
+ testProject = ProjectTools.createProject("testProject0");
+ if (testProject == null) {
+ fail("Unable to create test project");
+ }
+ testProject.open(new NullProgressMonitor());
+ }
+
+ /**
+ * Test sample project which has a hello world program. The top-level
+ * configure is found in the top-level directory. The hello world source
+ * is found in sample/hello.c.
+ * @throws Exception
+ */
+ @Test
+ public void testAutotoolsProject0() throws Exception {
+ Path p = new Path("zip/project1.zip");
+ ProjectTools.addSourceContainerWithImport(testProject, null, p, true);
+ assertTrue(testProject.hasNature(AutotoolsNewProjectNature.AUTOTOOLS_NATURE_ID));
+ org.eclipse.core.runtime.Path x = new org.eclipse.core.runtime.Path("ChangeLog");
+ assertTrue(testProject.exists(x));
+ x = new org.eclipse.core.runtime.Path("configure");
+ ProjectTools.markExecutable(testProject, "configure");
+ ProjectTools.markExecutable(testProject, "config.guess");
+ ProjectTools.markExecutable(testProject, "config.sub");
+ ProjectTools.markExecutable(testProject, "missing");
+ ProjectTools.markExecutable(testProject, "mkinstalldirs");
+ ProjectTools.markExecutable(testProject, "install-sh");
+ assertTrue(ProjectTools.build());
+ x = new org.eclipse.core.runtime.Path("config.status");
+ assertTrue(testProject.exists(x));
+ x = new org.eclipse.core.runtime.Path("Makefile");
+ assertTrue(testProject.exists(x));
+ String extension = Platform.getOS().equals(Platform.OS_WIN32) ? ".exe" : "";
+ x = new org.eclipse.core.runtime.Path("sample/a.out" + extension);
+ assertTrue(testProject.exists(x));
+ x = new org.eclipse.core.runtime.Path("sample/Makefile");
+ assertTrue(testProject.exists(x));
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ testProject.refreshLocal(IResource.DEPTH_INFINITE, null);
+ try {
+ testProject.delete(true, true, null);
+ } catch (Exception e) {
+ //FIXME: Why does a ResourceException occur when deleting the project??
+ }
+ }
+}
diff --git a/build/org.eclipse.cdt.autotools.tests/src/org/eclipse/cdt/autotools/tests/AutotoolsProject1Test.java b/build/org.eclipse.cdt.autotools.tests/src/org/eclipse/cdt/autotools/tests/AutotoolsProject1Test.java
new file mode 100644
index 00000000000..07fb1dba23e
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.tests/src/org/eclipse/cdt/autotools/tests/AutotoolsProject1Test.java
@@ -0,0 +1,89 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2015 Red Hat Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Red Hat Incorporated - initial API and implementation
+ * Marc-Andre Laperle - Fix failing test on Windows
+ *******************************************************************************/
+package org.eclipse.cdt.autotools.tests;
+
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import org.eclipse.cdt.autotools.core.AutotoolsNewProjectNature;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Platform;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+public class AutotoolsProject1Test {
+
+ private IProject testProject;
+
+ @Before
+ public void setUp() throws Exception {
+ if (!ProjectTools.setup())
+ fail("could not perform basic project workspace setup");
+ testProject = ProjectTools.createProject("testProject1");
+ if (testProject == null) {
+ fail("Unable to create test project");
+ }
+ testProject.open(new NullProgressMonitor());
+ }
+
+ /**
+ * Test sample project which has a hello world program. The top-level
+ * configure is found in the subdirectory src which also contains the
+ * subdirectory sample. The hello world source is found in
+ * src/sample/hello.c so configuration must create multiple
+ * Makefiles.
+ * @throws Exception
+ */
+ @Test
+ public void testAutotoolsProject1() throws Exception {
+ Path p = new Path("zip/project1.zip");
+ ProjectTools.addSourceContainerWithImport(testProject, "src", p, true);
+ assertTrue(testProject.hasNature(AutotoolsNewProjectNature.AUTOTOOLS_NATURE_ID));
+ org.eclipse.core.runtime.Path x = new org.eclipse.core.runtime.Path("src/ChangeLog");
+ assertTrue(testProject.exists(x));
+ x = new org.eclipse.core.runtime.Path("src/configure");
+ ProjectTools.setConfigDir(testProject, "src");
+ ProjectTools.markExecutable(testProject, "src/configure");
+ ProjectTools.markExecutable(testProject, "src/config.guess");
+ ProjectTools.markExecutable(testProject, "src/config.sub");
+ ProjectTools.markExecutable(testProject, "src/missing");
+ ProjectTools.markExecutable(testProject, "src/mkinstalldirs");
+ ProjectTools.markExecutable(testProject, "src/install-sh");
+ assertTrue(ProjectTools.build());
+ x = new org.eclipse.core.runtime.Path("config.status");
+ assertTrue(testProject.exists(x));
+ x = new org.eclipse.core.runtime.Path("Makefile");
+ assertTrue(testProject.exists(x));
+ String extension = Platform.getOS().equals(Platform.OS_WIN32) ? ".exe" : "";
+ x = new org.eclipse.core.runtime.Path("sample/a.out" + extension);
+ assertTrue(testProject.exists(x));
+ x = new org.eclipse.core.runtime.Path("sample/Makefile");
+ assertTrue(testProject.exists(x));
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ testProject.refreshLocal(IResource.DEPTH_INFINITE, null);
+ try {
+ testProject.delete(true, true, null);
+ } catch (Exception e) {
+ //FIXME: Why does a ResourceException occur when deleting the project??
+ }
+ }
+}
diff --git a/build/org.eclipse.cdt.autotools.tests/src/org/eclipse/cdt/autotools/tests/AutotoolsProject2Test.java b/build/org.eclipse.cdt.autotools.tests/src/org/eclipse/cdt/autotools/tests/AutotoolsProject2Test.java
new file mode 100644
index 00000000000..832fa41b852
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.tests/src/org/eclipse/cdt/autotools/tests/AutotoolsProject2Test.java
@@ -0,0 +1,104 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2015 Red Hat Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Red Hat Incorporated - initial API and implementation
+ * Marc-Andre Laperle - Fix failing test on Windows
+ *******************************************************************************/
+package org.eclipse.cdt.autotools.tests;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import org.eclipse.cdt.autotools.core.AutotoolsNewProjectNature;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Platform;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+// This test verifies an autogen.sh project that builds configure, but
+// does not run it.
+public class AutotoolsProject2Test {
+
+ private IProject testProject;
+
+ @Before
+ public void setUp() throws Exception {
+ if (!ProjectTools.setup())
+ fail("could not perform basic project workspace setup");
+ testProject = ProjectTools.createProject("testProject2");
+ if (testProject == null) {
+ fail("Unable to create test project");
+ }
+ testProject.open(new NullProgressMonitor());
+ }
+
+ /**
+ * Test sample project which has a hello world program. The top-level
+ * contains autogen.sh which will build configure, but not run it.
+ * The hello world source is found in
+ * src/sample/hello.c so configuration must create multiple
+ * Makefiles.
+ * @throws Exception
+ */
+ @Test
+ public void testAutotoolsProject2() throws Exception {
+ Path p = new Path("zip/project2.zip");
+ ProjectTools.addSourceContainerWithImport(testProject, "src", p);
+ assertTrue(testProject.hasNature(AutotoolsNewProjectNature.AUTOTOOLS_NATURE_ID));
+ org.eclipse.core.runtime.Path x = new org.eclipse.core.runtime.Path("src/ChangeLog");
+ assertTrue(testProject.exists(x));
+ x = new org.eclipse.core.runtime.Path("src/configure");
+ ProjectTools.setConfigDir(testProject, "src");
+ ProjectTools.markExecutable(testProject, "src/autogen.sh");
+ x = new org.eclipse.core.runtime.Path("src/configure");
+ assertFalse(testProject.exists(x));
+ x = new org.eclipse.core.runtime.Path("src/Makefile.in");
+ assertFalse(testProject.exists(x));
+ x = new org.eclipse.core.runtime.Path("src/sample/Makefile.in");
+ assertFalse(testProject.exists(x));
+ x = new org.eclipse.core.runtime.Path("src/aclocal.m4");
+ assertFalse(testProject.exists(x));
+ assertTrue(ProjectTools.build());
+ x = new org.eclipse.core.runtime.Path("src/configure");
+ assertTrue(testProject.exists(x));
+ x = new org.eclipse.core.runtime.Path("src/Makefile.in");
+ assertTrue(testProject.exists(x));
+ x = new org.eclipse.core.runtime.Path("src/sample/Makefile.in");
+ assertTrue(testProject.exists(x));
+ x = new org.eclipse.core.runtime.Path("src/aclocal.m4");
+ assertTrue(testProject.exists(x));
+ x = new org.eclipse.core.runtime.Path("config.status");
+ assertTrue(testProject.exists(x));
+ x = new org.eclipse.core.runtime.Path("Makefile");
+ assertTrue(testProject.exists(x));
+ String extension = Platform.getOS().equals(Platform.OS_WIN32) ? ".exe" : "";
+ x = new org.eclipse.core.runtime.Path("sample/a.out" + extension);
+ assertTrue(testProject.exists(x));
+ x = new org.eclipse.core.runtime.Path("sample/Makefile");
+ assertTrue(testProject.exists(x));
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ testProject.refreshLocal(IResource.DEPTH_INFINITE, null);
+ try {
+ testProject.delete(true, true, null);
+ } catch (Exception e) {
+ //FIXME: Why does a ResourceException occur when deleting the project??
+ }
+ }
+
+}
diff --git a/build/org.eclipse.cdt.autotools.tests/src/org/eclipse/cdt/autotools/tests/AutotoolsProjectTest0.java b/build/org.eclipse.cdt.autotools.tests/src/org/eclipse/cdt/autotools/tests/AutotoolsProjectTest0.java
deleted file mode 100644
index 7fcbbbce0b5..00000000000
--- a/build/org.eclipse.cdt.autotools.tests/src/org/eclipse/cdt/autotools/tests/AutotoolsProjectTest0.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2015 Red Hat Inc. and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Red Hat Incorporated - initial API and implementation
- * Marc-Andre Laperle - Fix failing test on Windows
- *******************************************************************************/
-package org.eclipse.cdt.autotools.tests;
-
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import org.eclipse.cdt.autotools.core.AutotoolsNewProjectNature;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Platform;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-public class AutotoolsProjectTest0 {
-
- private IProject testProject;
-
- @Before
- public void setUp() throws Exception {
- if (!ProjectTools.setup())
- fail("could not perform basic project workspace setup");
- testProject = ProjectTools.createProject("testProject0");
- if (testProject == null) {
- fail("Unable to create test project");
- }
- testProject.open(new NullProgressMonitor());
- }
-
- /**
- * Test sample project which has a hello world program. The top-level
- * configure is found in the top-level directory. The hello world source
- * is found in sample/hello.c.
- * @throws Exception
- */
- @Test
- public void testAutotoolsProject0() throws Exception {
- Path p = new Path("zip/project1.zip");
- ProjectTools.addSourceContainerWithImport(testProject, null, p, true);
- assertTrue(testProject.hasNature(AutotoolsNewProjectNature.AUTOTOOLS_NATURE_ID));
- org.eclipse.core.runtime.Path x = new org.eclipse.core.runtime.Path("ChangeLog");
- assertTrue(testProject.exists(x));
- x = new org.eclipse.core.runtime.Path("configure");
- ProjectTools.markExecutable(testProject, "configure");
- ProjectTools.markExecutable(testProject, "config.guess");
- ProjectTools.markExecutable(testProject, "config.sub");
- ProjectTools.markExecutable(testProject, "missing");
- ProjectTools.markExecutable(testProject, "mkinstalldirs");
- ProjectTools.markExecutable(testProject, "install-sh");
- assertTrue(ProjectTools.build());
- x = new org.eclipse.core.runtime.Path("config.status");
- assertTrue(testProject.exists(x));
- x = new org.eclipse.core.runtime.Path("Makefile");
- assertTrue(testProject.exists(x));
- String extension = Platform.getOS().equals(Platform.OS_WIN32) ? ".exe" : "";
- x = new org.eclipse.core.runtime.Path("sample/a.out" + extension);
- assertTrue(testProject.exists(x));
- x = new org.eclipse.core.runtime.Path("sample/Makefile");
- assertTrue(testProject.exists(x));
- }
-
- @After
- public void tearDown() throws Exception {
- testProject.refreshLocal(IResource.DEPTH_INFINITE, null);
- try {
- testProject.delete(true, true, null);
- } catch (Exception e) {
- //FIXME: Why does a ResourceException occur when deleting the project??
- }
- }
-}
diff --git a/build/org.eclipse.cdt.autotools.tests/src/org/eclipse/cdt/autotools/tests/AutotoolsProjectTest1.java b/build/org.eclipse.cdt.autotools.tests/src/org/eclipse/cdt/autotools/tests/AutotoolsProjectTest1.java
deleted file mode 100644
index 44b99e9a190..00000000000
--- a/build/org.eclipse.cdt.autotools.tests/src/org/eclipse/cdt/autotools/tests/AutotoolsProjectTest1.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2015 Red Hat Inc. and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Red Hat Incorporated - initial API and implementation
- * Marc-Andre Laperle - Fix failing test on Windows
- *******************************************************************************/
-package org.eclipse.cdt.autotools.tests;
-
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import org.eclipse.cdt.autotools.core.AutotoolsNewProjectNature;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Platform;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-public class AutotoolsProjectTest1 {
-
- private IProject testProject;
-
- @Before
- public void setUp() throws Exception {
- if (!ProjectTools.setup())
- fail("could not perform basic project workspace setup");
- testProject = ProjectTools.createProject("testProject1");
- if (testProject == null) {
- fail("Unable to create test project");
- }
- testProject.open(new NullProgressMonitor());
- }
-
- /**
- * Test sample project which has a hello world program. The top-level
- * configure is found in the subdirectory src which also contains the
- * subdirectory sample. The hello world source is found in
- * src/sample/hello.c so configuration must create multiple
- * Makefiles.
- * @throws Exception
- */
- @Test
- public void testAutotoolsProject1() throws Exception {
- Path p = new Path("zip/project1.zip");
- ProjectTools.addSourceContainerWithImport(testProject, "src", p, true);
- assertTrue(testProject.hasNature(AutotoolsNewProjectNature.AUTOTOOLS_NATURE_ID));
- org.eclipse.core.runtime.Path x = new org.eclipse.core.runtime.Path("src/ChangeLog");
- assertTrue(testProject.exists(x));
- x = new org.eclipse.core.runtime.Path("src/configure");
- ProjectTools.setConfigDir(testProject, "src");
- ProjectTools.markExecutable(testProject, "src/configure");
- ProjectTools.markExecutable(testProject, "src/config.guess");
- ProjectTools.markExecutable(testProject, "src/config.sub");
- ProjectTools.markExecutable(testProject, "src/missing");
- ProjectTools.markExecutable(testProject, "src/mkinstalldirs");
- ProjectTools.markExecutable(testProject, "src/install-sh");
- assertTrue(ProjectTools.build());
- x = new org.eclipse.core.runtime.Path("config.status");
- assertTrue(testProject.exists(x));
- x = new org.eclipse.core.runtime.Path("Makefile");
- assertTrue(testProject.exists(x));
- String extension = Platform.getOS().equals(Platform.OS_WIN32) ? ".exe" : "";
- x = new org.eclipse.core.runtime.Path("sample/a.out" + extension);
- assertTrue(testProject.exists(x));
- x = new org.eclipse.core.runtime.Path("sample/Makefile");
- assertTrue(testProject.exists(x));
- }
-
- @After
- public void tearDown() throws Exception {
- testProject.refreshLocal(IResource.DEPTH_INFINITE, null);
- try {
- testProject.delete(true, true, null);
- } catch (Exception e) {
- //FIXME: Why does a ResourceException occur when deleting the project??
- }
- }
-}
diff --git a/build/org.eclipse.cdt.autotools.tests/src/org/eclipse/cdt/autotools/tests/AutotoolsProjectTest2.java b/build/org.eclipse.cdt.autotools.tests/src/org/eclipse/cdt/autotools/tests/AutotoolsProjectTest2.java
deleted file mode 100644
index 99c1ef2cd8f..00000000000
--- a/build/org.eclipse.cdt.autotools.tests/src/org/eclipse/cdt/autotools/tests/AutotoolsProjectTest2.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2015 Red Hat Inc. and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Red Hat Incorporated - initial API and implementation
- * Marc-Andre Laperle - Fix failing test on Windows
- *******************************************************************************/
-package org.eclipse.cdt.autotools.tests;
-
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import org.eclipse.cdt.autotools.core.AutotoolsNewProjectNature;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Platform;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-// This test verifies an autogen.sh project that builds configure, but
-// does not run it.
-public class AutotoolsProjectTest2 {
-
- private IProject testProject;
-
- @Before
- public void setUp() throws Exception {
- if (!ProjectTools.setup())
- fail("could not perform basic project workspace setup");
- testProject = ProjectTools.createProject("testProject2");
- if (testProject == null) {
- fail("Unable to create test project");
- }
- testProject.open(new NullProgressMonitor());
- }
-
- /**
- * Test sample project which has a hello world program. The top-level
- * contains autogen.sh which will build configure, but not run it.
- * The hello world source is found in
- * src/sample/hello.c so configuration must create multiple
- * Makefiles.
- * @throws Exception
- */
- @Test
- public void testAutotoolsProject2() throws Exception {
- Path p = new Path("zip/project2.zip");
- ProjectTools.addSourceContainerWithImport(testProject, "src", p);
- assertTrue(testProject.hasNature(AutotoolsNewProjectNature.AUTOTOOLS_NATURE_ID));
- org.eclipse.core.runtime.Path x = new org.eclipse.core.runtime.Path("src/ChangeLog");
- assertTrue(testProject.exists(x));
- x = new org.eclipse.core.runtime.Path("src/configure");
- ProjectTools.setConfigDir(testProject, "src");
- ProjectTools.markExecutable(testProject, "src/autogen.sh");
- x = new org.eclipse.core.runtime.Path("src/configure");
- assertFalse(testProject.exists(x));
- x = new org.eclipse.core.runtime.Path("src/Makefile.in");
- assertFalse(testProject.exists(x));
- x = new org.eclipse.core.runtime.Path("src/sample/Makefile.in");
- assertFalse(testProject.exists(x));
- x = new org.eclipse.core.runtime.Path("src/aclocal.m4");
- assertFalse(testProject.exists(x));
- assertTrue(ProjectTools.build());
- x = new org.eclipse.core.runtime.Path("src/configure");
- assertTrue(testProject.exists(x));
- x = new org.eclipse.core.runtime.Path("src/Makefile.in");
- assertTrue(testProject.exists(x));
- x = new org.eclipse.core.runtime.Path("src/sample/Makefile.in");
- assertTrue(testProject.exists(x));
- x = new org.eclipse.core.runtime.Path("src/aclocal.m4");
- assertTrue(testProject.exists(x));
- x = new org.eclipse.core.runtime.Path("config.status");
- assertTrue(testProject.exists(x));
- x = new org.eclipse.core.runtime.Path("Makefile");
- assertTrue(testProject.exists(x));
- String extension = Platform.getOS().equals(Platform.OS_WIN32) ? ".exe" : "";
- x = new org.eclipse.core.runtime.Path("sample/a.out" + extension);
- assertTrue(testProject.exists(x));
- x = new org.eclipse.core.runtime.Path("sample/Makefile");
- assertTrue(testProject.exists(x));
- }
-
- @After
- public void tearDown() throws Exception {
- testProject.refreshLocal(IResource.DEPTH_INFINITE, null);
- try {
- testProject.delete(true, true, null);
- } catch (Exception e) {
- //FIXME: Why does a ResourceException occur when deleting the project??
- }
- }
-
-}
diff --git a/build/org.eclipse.cdt.autotools.tests/src/org/eclipse/cdt/autotools/tests/editors/EditorTestSuite.java b/build/org.eclipse.cdt.autotools.tests/src/org/eclipse/cdt/autotools/tests/editors/EditorTestSuite.java
new file mode 100644
index 00000000000..6647e5de52c
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.tests/src/org/eclipse/cdt/autotools/tests/editors/EditorTestSuite.java
@@ -0,0 +1,22 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2015 Red Hat Inc..
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Red Hat Incorporated - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.autotools.tests.editors;
+
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+
+@RunWith(Suite.class)
+@Suite.SuiteClasses({ AutomakeColourizationTests.class, AutomakeTextHoverTest.class, AutomakeEditorTests.class })
+public class EditorTestSuite {
+}
diff --git a/build/org.eclipse.cdt.autotools.tests/src/org/eclipse/cdt/autotools/tests/editors/EditorTests.java b/build/org.eclipse.cdt.autotools.tests/src/org/eclipse/cdt/autotools/tests/editors/EditorTests.java
deleted file mode 100644
index 0a41b9b1968..00000000000
--- a/build/org.eclipse.cdt.autotools.tests/src/org/eclipse/cdt/autotools/tests/editors/EditorTests.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2015 Red Hat Inc..
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Red Hat Incorporated - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.autotools.tests.editors;
-
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-
-@RunWith(Suite.class)
-@Suite.SuiteClasses({ AutomakeColourizationTests.class, AutomakeTextHoverTest.class, AutomakeEditorTests.class })
-public class EditorTests {
-}
diff --git a/build/org.eclipse.cdt.autotools.ui.tests/.classpath b/build/org.eclipse.cdt.autotools.ui.tests/.classpath
index eca7bdba8f0..a42a828e04a 100644
--- a/build/org.eclipse.cdt.autotools.ui.tests/.classpath
+++ b/build/org.eclipse.cdt.autotools.ui.tests/.classpath
@@ -1,7 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="src" path="src"/>
+ <classpathentry kind="src" path="src">
+ <attributes>
+ <attribute name="test" value="true"/>
+ </attributes>
+ </classpathentry>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/build/org.eclipse.cdt.autotools.ui.tests/.settings/org.eclipse.core.resources.prefs b/build/org.eclipse.cdt.autotools.ui.tests/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.ui.tests/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/build/org.eclipse.cdt.autotools.ui.tests/.settings/org.eclipse.jdt.core.prefs b/build/org.eclipse.cdt.autotools.ui.tests/.settings/org.eclipse.jdt.core.prefs
index ad05599159f..5b1c443114d 100644
--- a/build/org.eclipse.cdt.autotools.ui.tests/.settings/org.eclipse.jdt.core.prefs
+++ b/build/org.eclipse.cdt.autotools.ui.tests/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/build/org.eclipse.cdt.autotools.ui.tests/.settings/org.eclipse.jdt.ui.prefs b/build/org.eclipse.cdt.autotools.ui.tests/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/build/org.eclipse.cdt.autotools.ui.tests/.settings/org.eclipse.jdt.ui.prefs
+++ b/build/org.eclipse.cdt.autotools.ui.tests/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/build/org.eclipse.cdt.autotools.ui.tests/META-INF/MANIFEST.MF b/build/org.eclipse.cdt.autotools.ui.tests/META-INF/MANIFEST.MF
index afcbfe0fc0c..b242db335dd 100644
--- a/build/org.eclipse.cdt.autotools.ui.tests/META-INF/MANIFEST.MF
+++ b/build/org.eclipse.cdt.autotools.ui.tests/META-INF/MANIFEST.MF
@@ -2,13 +2,15 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %bundleName
Bundle-SymbolicName: org.eclipse.cdt.autotools.ui.tests
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 1.1.0.qualifier
Bundle-Localization: plugin
Require-Bundle: org.eclipse.swtbot.go,
org.eclipse.core.resources,
org.eclipse.cdt.core
Bundle-ActivationPolicy: lazy
Fragment-Host: org.eclipse.cdt.autotools.ui
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-Vendor: %provider
Automatic-Module-Name: org.eclipse.cdt.autotools.ui.tests
+Export-Package: org.eclipse.cdt.autotools.ui.tests;x-internal:=true,
+ org.eclipse.cdt.autotools.ui.tests.autoconf;x-internal:=true
diff --git a/build/org.eclipse.cdt.autotools.ui.tests/about.html b/build/org.eclipse.cdt.autotools.ui.tests/about.html
index 164f781a8fd..b3134865230 100644
--- a/build/org.eclipse.cdt.autotools.ui.tests/about.html
+++ b/build/org.eclipse.cdt.autotools.ui.tests/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/build/org.eclipse.cdt.autotools.ui.tests/src/org/eclipse/cdt/autotools/ui/tests/AutomatedIntegrationSuite.java b/build/org.eclipse.cdt.autotools.ui.tests/src/org/eclipse/cdt/autotools/ui/tests/AutomatedIntegrationSuite.java
index 23582ac83c5..57740306baa 100644
--- a/build/org.eclipse.cdt.autotools.ui.tests/src/org/eclipse/cdt/autotools/ui/tests/AutomatedIntegrationSuite.java
+++ b/build/org.eclipse.cdt.autotools.ui.tests/src/org/eclipse/cdt/autotools/ui/tests/AutomatedIntegrationSuite.java
@@ -14,12 +14,7 @@
*******************************************************************************/
package org.eclipse.cdt.autotools.ui.tests;
-import java.io.IOException;
-
-import org.eclipse.cdt.autotools.ui.tests.autoconf.AutoconfTests;
-import org.eclipse.cdt.utils.spawner.ProcessFactory;
-import org.junit.Assume;
-import org.junit.BeforeClass;
+import org.eclipse.cdt.autotools.ui.tests.autoconf.AutoconfTestSuite;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
@@ -30,25 +25,9 @@ import org.junit.runners.Suite;
* TestToolActions.class,
* TestEnvironmentVars.class,
* TestMakeTargets.class,
- * SetConfigurationParameter.class,
+ * SetConfigurationParameterTest.class,
*/
- AutoconfTests.class })
+ AutoconfTestSuite.class })
public class AutomatedIntegrationSuite {
- // needed for this class to compile
- @BeforeClass
- public static void beforeClassMethod() {
- // Verify that the necessary binaries are available, and if they are not,
- // the tests will be ignored.
- String[] testBinaryCommands = { "libtool --version", "autoconf --version", "automake --version" };
- try {
- for (String cmd : testBinaryCommands) {
- Process process = ProcessFactory.getFactory().exec(cmd);
- process.destroy();
- }
- } catch (IOException e) {
- // If we cannot find any binary, just ignore the tests.
- Assume.assumeNoException(e);
- }
- }
}
diff --git a/build/org.eclipse.cdt.autotools.ui.tests/src/org/eclipse/cdt/autotools/ui/tests/SetConfigurationParameter.java b/build/org.eclipse.cdt.autotools.ui.tests/src/org/eclipse/cdt/autotools/ui/tests/SetConfigurationParameter.java
deleted file mode 100644
index fcf978d3718..00000000000
--- a/build/org.eclipse.cdt.autotools.ui.tests/src/org/eclipse/cdt/autotools/ui/tests/SetConfigurationParameter.java
+++ /dev/null
@@ -1,485 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010, 2016 Red Hat Inc. and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Red Hat Incorporated - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.autotools.ui.tests;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileReader;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IWorkspace;
-import org.eclipse.core.resources.IWorkspaceRoot;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.swtbot.swt.finder.junit.SWTBotJunit4ClassRunner;
-import org.eclipse.swtbot.swt.finder.waits.Conditions;
-import org.eclipse.swtbot.swt.finder.widgets.SWTBotCombo;
-import org.eclipse.swtbot.swt.finder.widgets.SWTBotShell;
-import org.eclipse.swtbot.swt.finder.widgets.SWTBotTable;
-import org.eclipse.swtbot.swt.finder.widgets.SWTBotText;
-import org.junit.BeforeClass;
-import org.junit.FixMethodOrder;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.MethodSorters;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-@RunWith(SWTBotJunit4ClassRunner.class)
-@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-public class SetConfigurationParameter extends AbstractTest {
-
- @BeforeClass
- public static void initClass() {
- initConfigParm();
- }
-
- // Prepare initial settings that will be tested.
- private static void initConfigParm() {
- // Set the configure parameters to be --enable-jeff via user-defined
- // options
- SWTBotShell shell = openProperties("Autotools", "Configure Settings");
- bot.treeWithLabel("Configure Settings").expandNode("configure").select("Advanced");
- SWTBotText text = bot.textWithLabel("Additional command-line options");
- text.typeText("--enable-jeff");
- bot.button("OK").click();
- bot.waitUntil(Conditions.shellCloses(shell), 120000);
-
- // Create new build configurations that will be used throughout tests
- projectExplorer.bot().tree().select(projectName);
- clickContextMenu(projectExplorer.bot().tree().select(projectName), "Build Configurations", "Manage...");
- shell = bot.shell(projectName + ": Manage Configurations");
- shell.activate();
- bot.button("New...").click();
- shell = bot.shell("Create New Configuration");
- shell.activate();
- SWTBotText t = bot.textWithLabel("Name:");
- t.setText("debug");
- AbstractTest.clickRadioButtonInGroup("Existing configuration", "Copy settings from");
- bot.button("OK").click();
- shell = bot.shell(projectName + ": Manage Configurations");
- shell.activate();
- bot.button("New...").click();
- shell = bot.shell("Create New Configuration");
- shell.activate();
- t = bot.textWithLabel("Name:");
- t.setText("default");
- AbstractTest.clickRadioButtonInGroup("Default configuration", "Copy settings from");
- bot.button("OK").click();
- shell = bot.shell(projectName + ": Manage Configurations");
- shell.activate();
- bot.button("OK").click();
- bot.waitUntil(Conditions.shellCloses(shell));
- }
-
- // Verify we can set a configuration parameter and that it is recorded in
- // the .autotools file for the project
- @Test
- public void t1canSetConfigParm() throws Exception {
- IProject project = checkProject();
- assertNotNull(project);
- IPath path = project.getLocation();
- path = path.append(".autotools");
- File f = new File(path.toOSString());
- assertTrue(f.exists());
-
- DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
- DocumentBuilder db = dbf.newDocumentBuilder();
- Document d = db.parse(f);
- Element e = d.getDocumentElement();
- // Get the stored configuration data
- NodeList cfgs = e.getElementsByTagName("configuration"); //$NON-NLS-1$
- assertTrue(cfgs.getLength() > 0);
- Node n = cfgs.item(0);
- NodeList l = n.getChildNodes();
- // Verify user field in .autotools file is set to --enable-jeff
- boolean foundUser = false;
- for (int y = 0; y < l.getLength(); ++y) {
- Node child = l.item(y);
- if (child.getNodeName().equals("option")) { //$NON-NLS-1$
- NamedNodeMap optionAttrs = child.getAttributes();
- Node idNode = optionAttrs.getNamedItem("id"); //$NON-NLS-1$
- Node valueNode = optionAttrs.getNamedItem("value"); //$NON-NLS-1$
- assertNotNull(idNode);
- assertNotNull(valueNode);
- String id = idNode.getNodeValue();
- String value = valueNode.getNodeValue();
- if (id.equals("user")) {
- foundUser = true;
- assertEquals(value, "--enable-jeff");
- }
- }
- }
- assertTrue(foundUser);
- }
-
- // Verify we can build the project with a configuration parameter and that
- // the configuration parameter can be found in the config.status file.
- @Test
- public void t2canBuildWithConfigParm() throws Exception {
- projectExplorer.bot().tree().select(projectName);
- clickContextMenu(projectExplorer.bot().tree().select(projectName), "Build Project");
-
- // Wait until the project is built
- SWTBotShell shell = bot.shell("Build Project");
- bot.waitUntil(Conditions.shellCloses(shell), 120000);
-
- IWorkspace workspace = ResourcesPlugin.getWorkspace();
- assertNotNull(workspace);
- IWorkspaceRoot root = workspace.getRoot();
- assertNotNull(root);
- IProject project = root.getProject(projectName);
- assertNotNull(project);
- IPath path = project.getLocation();
- File f = new File(path.append("src/a.out").toOSString());
- assertTrue(f.exists());
- f = new File(path.append("config.status").toOSString());
- assertTrue(f.exists());
-
- try (BufferedReader r = new BufferedReader(new FileReader(f))) {
- int ch;
- boolean optionFound = false;
- // Read config.status and look for the string --enable-jeff
- // which is a simple verification that the option was used in the
- // configure step.
- while ((ch = r.read()) != -1) {
- if (ch == '-') {
- char[] buf = new char[12];
- r.mark(100);
- int count = r.read(buf);
- if (count < 12) {
- break;
- }
- String s = new String(buf);
- if (s.equals("-enable-jeff")) {
- optionFound = true;
- break;
- } else {
- r.reset();
- }
- }
- }
- assertTrue(optionFound);
- }
-
- String output = viewConsole("Configure").bot().styledText().getText();
- // Verify we got some help output to the console
- Pattern p = Pattern.compile(".*WARNING:.*unrecognized.*--enable-jeff.*", Pattern.DOTALL);
- Matcher m = p.matcher(output);
- assertTrue(m.matches());
-
- // Verify that if we build again, we don't reconfigure.
- // Verifies fix for bug: #308261
- long oldDate = f.lastModified();
- projectExplorer.bot().tree().select(projectName);
- clickContextMenu(projectExplorer.bot().tree().select(projectName), "Build Project");
- path = project.getLocation();
- // We need to wait until the a.out file is created so
- // sleep a bit and look for it...give up after 120 seconds
- for (int i = 0; i < 240; ++i) {
- bot.sleep(500);
- f = new File(path.append("src/a.out").toOSString());
- if (f.exists()) {
- break;
- }
- }
- assertTrue(f.exists());
- f = new File(path.append("config.status").toOSString());
- assertTrue(f.exists());
- long newDate = f.lastModified();
- assertEquals(newDate, oldDate);
- }
-
- // Verify a new configuration will copy the configuration parameters
- // of its base configuration.
- @Test
- public void t3newConfigCopiesParms() throws Exception {
- projectExplorer.bot().tree().select(projectName);
- clickContextMenu(projectExplorer.bot().tree().select(projectName), "Build Configurations", "Manage...");
- SWTBotShell shell = bot.shell(projectName + ": Manage Configurations");
- shell.activate();
- shell = bot.shell(projectName + ": Manage Configurations");
- shell.activate();
- SWTBotTable table = bot.table();
- assertTrue(table.containsItem("debug"));
- table.getTableItem("debug").select();
- bot.button("Set Active").click();
- bot.button("OK").click();
- // Verify the debug configuration is active and has a user parameter:
- // --enable-jeff
- openProperties("Autotools", "Configure Settings");
- SWTBotCombo configs = bot.comboBoxWithLabel("Configuration: ");
- configs.setFocus();
- String[] items = configs.items();
- for (int i = 0; i < items.length; ++i) {
- if (items[i].contains("debug") && items[i].contains("Active")) {
- configs.setSelection(i);
- }
- }
- assertTrue(configs.getText().contains("debug"));
- bot.treeWithLabel("Configure Settings").expandNode("configure").select("Advanced");
- SWTBotText text = bot.textWithLabel("Additional command-line options");
- String val = text.getText();
- assertEquals("--enable-jeff", val);
- // Verify that the build directory for the new configuration has been
- // switched to build-debug
- shell = bot.shell("Properties for " + projectName);
- shell.activate();
- bot.text().setText("");
-
- bot.tree().select("C/C++ Build");
- String buildDir = bot.textWithLabel("Build directory:").getText();
- assertTrue(buildDir.endsWith("build-debug"));
- // Verify the default configuration has no user setting
- bot.tree().expandNode("Autotools").select("Configure Settings");
- configs = bot.comboBoxWithLabel("Configuration: ");
- configs.setSelection("default");
- bot.treeWithLabel("Configure Settings").expandNode("configure").select("Advanced");
- text = bot.textWithLabel("Additional command-line options");
- val = text.getText();
- assertEquals("", val);
- bot.button("OK").click();
- // Build the project again and verify we get a build-debug directory
- projectExplorer.bot().tree().select(projectName);
- clickContextMenu(projectExplorer.bot().tree().select(projectName), "Build Project");
- IWorkspace workspace = ResourcesPlugin.getWorkspace();
- assertNotNull(workspace);
- IWorkspaceRoot root = workspace.getRoot();
- assertNotNull(root);
- IProject project = root.getProject(projectName);
- assertNotNull(project);
- IPath path = project.getLocation();
- // We need to wait until the config.status file is created so
- // sleep a bit and look for it...give up after 20 seconds
- File f = null;
- for (int i = 0; i < 40; ++i) {
- bot.sleep(500);
- f = new File(path.append("build-debug/src/a.out").toOSString());
- if (f.exists()) {
- break;
- }
- }
- assertTrue(f.exists());
- f = new File(path.append("build-debug/config.status").toOSString());
- assertTrue(f.exists());
- try (BufferedReader r = new BufferedReader(new FileReader(f))) {
- int ch;
- boolean optionFound = false;
- // Read config.status and look for the string --enable-jeff
- // which is a simple verification that the option was used in the
- // configure step.
- while ((ch = r.read()) != -1) {
- if (ch == '-') {
- char[] buf = new char[12];
- r.mark(100);
- int count = r.read(buf);
- if (count < 12) {
- break;
- }
- String s = new String(buf);
- if (s.equals("-enable-jeff")) {
- optionFound = true;
- break;
- } else {
- r.reset();
- }
- }
- }
- assertTrue(optionFound);
- }
- // Verify we cleaned out the top-level build directory (i.e. that there
- // is no config.status there anymore).
- path = project.getLocation().append("config.status");
- f = new File(path.toOSString());
- assertTrue(!f.exists());
- path = project.getLocation().append(".autotools");
- f = new File(path.toOSString());
- assertTrue(f.exists());
- DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
- DocumentBuilder db = dbf.newDocumentBuilder();
- Document d = db.parse(f);
- Element e = d.getDocumentElement();
- // Get the stored configuration data
- NodeList cfgs = e.getElementsByTagName("configuration"); //$NON-NLS-1$
- assertEquals(4, cfgs.getLength());
- int foundUser = 0;
- for (int x = 0; x < cfgs.getLength(); ++x) {
- Node n = cfgs.item(x);
- NodeList l = n.getChildNodes();
- // Verify two of the user fields in .autotools file are set to
- // --enable-jeff
- for (int y = 0; y < l.getLength(); ++y) {
- Node child = l.item(y);
- if (child.getNodeName().equals("option")) { //$NON-NLS-1$
- NamedNodeMap optionAttrs = child.getAttributes();
- Node idNode = optionAttrs.getNamedItem("id"); //$NON-NLS-1$
- Node valueNode = optionAttrs.getNamedItem("value"); //$NON-NLS-1$
- assertNotNull(idNode);
- assertNotNull(valueNode);
- String id = idNode.getNodeValue();
- String value = valueNode.getNodeValue();
- if (id.equals("user")) {
- if (value.equals("--enable-jeff")) {
- ++foundUser;
- }
- }
- }
- }
- }
- assertEquals(2, foundUser);
-
- clickContextMenu(projectExplorer.bot().tree().select(projectName), "Build Configurations", "Manage...");
- shell = bot.shell(projectName + ": Manage Configurations");
- shell.activate();
- table = bot.table();
- assertTrue(table.containsItem("Build (GNU)"));
- table.getTableItem("Build (GNU)").select();
- bot.button("Set Active").click();
- bot.button("OK").click();
- bot.waitUntil(Conditions.shellCloses(shell));
- }
-
- // Verify we can do a double rename of configurations, renaming one
- // configuration to
- // another and then cancel without changing configuration settings.
- @Test
- public void t4doubleRenameCancel() throws Exception {
- openProperties("Autotools", "Configure Settings");
- SWTBotCombo configs = bot.comboBoxWithLabel("Configuration: ");
- bot.button("Manage Configurations...").click();
- // Rename "debug" to "release" and rename "default" to "debug".
- // The settings should follow the rename operation.
- renameConfiguration("debug", "release");
- renameConfiguration("default", "debug");
- bot.button("OK").click();
- // Verify that "release" has --enable-jeff set and that
- // the new "debug" configuration has no user setting.
- SWTBotShell shell = bot.shell("Properties for " + projectName);
- shell.activate();
- configs = bot.comboBoxWithLabel("Configuration: ");
- bot.treeWithLabel("Configure Settings").expandNode("configure").select("Advanced");
- SWTBotText text = bot.textWithLabel("Additional command-line options");
- String setting = text.getText();
- assertEquals("--enable-jeff", setting);
- configs.setFocus();
- configs.setSelection("debug");
- bot.treeWithLabel("Configure Settings").expandNode("configure").select("Advanced");
- text = bot.textWithLabel("Additional command-line options");
- setting = text.getText();
- assertEquals("", setting);
- bot.button("Cancel").click();
- // Cancel and then verify that "debug" is back to normal with
- // --enable-jeff set and that "default" is back to normal with
- // no user setting.
- openProperties("Autotools", "Configure Settings");
- configs = bot.comboBoxWithLabel("Configuration: ");
- configs.setSelection("debug");
- assertTrue(configs.getText().contains("debug"));
- bot.treeWithLabel("Configure Settings").expandNode("configure").select("Advanced");
- text = bot.textWithLabel("Additional command-line options");
- setting = text.getText();
- assertEquals("--enable-jeff", setting);
- configs.setFocus();
- configs.setSelection("default");
- assertTrue(configs.getText().contains("default"));
- bot.treeWithLabel("Configure Settings").expandNode("configure").select("Advanced");
- text = bot.textWithLabel("Additional command-line options");
- setting = text.getText();
- assertEquals("", setting);
- bot.button("OK").click();
- bot.waitUntil(Conditions.shellCloses(shell));
- }
-
- // Verify we can do a double rename of configurations, renaming one
- // configuration to
- // another and inheriting the settings properly.
- @Test
- public void t5doubleRenameOk() throws Exception {
- openProperties("Autotools", "Configure Settings");
- SWTBotCombo configs = bot.comboBoxWithLabel("Configuration: ");
- bot.button("Manage Configurations...").click();
- SWTBotShell shell = bot.shell(projectName + ": Manage Configurations");
- shell.activate();
- bot.table().select("debug");
- bot.button("Set Active").click();
- // Rename "debug" to "release" and rename "default" to "debug".
- // The settings should follow the rename operation.
- renameConfiguration("debug", "release");
- renameConfiguration("default", "debug");
- bot.button("OK").click();
- shell = bot.shell("Properties for " + projectName);
- shell.activate();
- bot.button("OK").click();
-
- // Verify changes have taken effect permanently
- openProperties("Autotools", "Configure Settings");
- configs = bot.comboBoxWithLabel("Configuration: ");
- assertTrue(configs.getText().contains("release"));
- assertTrue(configs.getText().contains("Active"));
- bot.treeWithLabel("Configure Settings").expandNode("configure").select("Advanced");
- SWTBotText text = bot.textWithLabel("Additional command-line options");
- String setting = text.getText();
- assertEquals("--enable-jeff", setting);
- configs.setFocus();
- configs.setSelection("debug");
- assertTrue(configs.getText().contains("debug"));
- bot.treeWithLabel("Configure Settings").expandNode("configure").select("Advanced");
- text = bot.textWithLabel("Additional command-line options");
- setting = text.getText();
- assertEquals("", setting);
-
- // Undo the changes made by this test
- configs = bot.comboBoxWithLabel("Configuration: ");
- bot.button("Manage Configurations...").click();
- shell = bot.shell(projectName + ": Manage Configurations");
- shell.activate();
- bot.table().select("Build (GNU)");
- bot.button("Set Active").click();
- renameConfiguration("debug", "default");
- renameConfiguration("release", "debug");
- bot.button("OK").click();
- shell = bot.shell("Properties for " + projectName);
- shell.activate();
- bot.button("OK").click();
- bot.waitUntil(Conditions.shellCloses(shell));
- }
-
- // Renames a configuration. Assumes the "Manage Configurations" dialog will
- // be open.
- private void renameConfiguration(String original, String newname) {
- SWTBotShell shell = bot.shell(projectName + ": Manage Configurations");
- shell.activate();
- bot.table().select(original);
- bot.button("Rename...").click();
- shell = bot.shell("Rename Configuration");
- shell.activate();
- bot.textWithLabel("Name:").setText(newname);
- bot.button("OK").click();
- shell = bot.shell(projectName + ": Manage Configurations");
- shell.activate();
- }
-
-}
diff --git a/build/org.eclipse.cdt.autotools.ui.tests/src/org/eclipse/cdt/autotools/ui/tests/SetConfigurationParameterTest.java b/build/org.eclipse.cdt.autotools.ui.tests/src/org/eclipse/cdt/autotools/ui/tests/SetConfigurationParameterTest.java
new file mode 100644
index 00000000000..19ca5536edf
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.ui.tests/src/org/eclipse/cdt/autotools/ui/tests/SetConfigurationParameterTest.java
@@ -0,0 +1,487 @@
+/*******************************************************************************
+ * Copyright (c) 2010, 2016 Red Hat Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Red Hat Incorporated - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.autotools.ui.tests;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.resources.IWorkspaceRoot;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.swtbot.swt.finder.junit.SWTBotJunit4ClassRunner;
+import org.eclipse.swtbot.swt.finder.waits.Conditions;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotCombo;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotShell;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotTable;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotText;
+import org.junit.BeforeClass;
+import org.junit.FixMethodOrder;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.MethodSorters;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+@Ignore("Unstable tests exluded from build. See Bug 509248 and Bug 564002")
+@RunWith(SWTBotJunit4ClassRunner.class)
+@FixMethodOrder(MethodSorters.NAME_ASCENDING)
+public class SetConfigurationParameterTest extends AbstractTest {
+
+ @BeforeClass
+ public static void initClass() {
+ initConfigParm();
+ }
+
+ // Prepare initial settings that will be tested.
+ private static void initConfigParm() {
+ // Set the configure parameters to be --enable-jeff via user-defined
+ // options
+ SWTBotShell shell = openProperties("Autotools", "Configure Settings");
+ bot.treeWithLabel("Configure Settings").expandNode("configure").select("Advanced");
+ SWTBotText text = bot.textWithLabel("Additional command-line options");
+ text.typeText("--enable-jeff");
+ bot.button("OK").click();
+ bot.waitUntil(Conditions.shellCloses(shell), 120000);
+
+ // Create new build configurations that will be used throughout tests
+ projectExplorer.bot().tree().select(projectName);
+ clickContextMenu(projectExplorer.bot().tree().select(projectName), "Build Configurations", "Manage...");
+ shell = bot.shell(projectName + ": Manage Configurations");
+ shell.activate();
+ bot.button("New...").click();
+ shell = bot.shell("Create New Configuration");
+ shell.activate();
+ SWTBotText t = bot.textWithLabel("Name:");
+ t.setText("debug");
+ AbstractTest.clickRadioButtonInGroup("Existing configuration", "Copy settings from");
+ bot.button("OK").click();
+ shell = bot.shell(projectName + ": Manage Configurations");
+ shell.activate();
+ bot.button("New...").click();
+ shell = bot.shell("Create New Configuration");
+ shell.activate();
+ t = bot.textWithLabel("Name:");
+ t.setText("default");
+ AbstractTest.clickRadioButtonInGroup("Default configuration", "Copy settings from");
+ bot.button("OK").click();
+ shell = bot.shell(projectName + ": Manage Configurations");
+ shell.activate();
+ bot.button("OK").click();
+ bot.waitUntil(Conditions.shellCloses(shell));
+ }
+
+ // Verify we can set a configuration parameter and that it is recorded in
+ // the .autotools file for the project
+ @Test
+ public void t1canSetConfigParm() throws Exception {
+ IProject project = checkProject();
+ assertNotNull(project);
+ IPath path = project.getLocation();
+ path = path.append(".autotools");
+ File f = new File(path.toOSString());
+ assertTrue(f.exists());
+
+ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+ DocumentBuilder db = dbf.newDocumentBuilder();
+ Document d = db.parse(f);
+ Element e = d.getDocumentElement();
+ // Get the stored configuration data
+ NodeList cfgs = e.getElementsByTagName("configuration"); //$NON-NLS-1$
+ assertTrue(cfgs.getLength() > 0);
+ Node n = cfgs.item(0);
+ NodeList l = n.getChildNodes();
+ // Verify user field in .autotools file is set to --enable-jeff
+ boolean foundUser = false;
+ for (int y = 0; y < l.getLength(); ++y) {
+ Node child = l.item(y);
+ if (child.getNodeName().equals("option")) { //$NON-NLS-1$
+ NamedNodeMap optionAttrs = child.getAttributes();
+ Node idNode = optionAttrs.getNamedItem("id"); //$NON-NLS-1$
+ Node valueNode = optionAttrs.getNamedItem("value"); //$NON-NLS-1$
+ assertNotNull(idNode);
+ assertNotNull(valueNode);
+ String id = idNode.getNodeValue();
+ String value = valueNode.getNodeValue();
+ if (id.equals("user")) {
+ foundUser = true;
+ assertEquals(value, "--enable-jeff");
+ }
+ }
+ }
+ assertTrue(foundUser);
+ }
+
+ // Verify we can build the project with a configuration parameter and that
+ // the configuration parameter can be found in the config.status file.
+ @Test
+ public void t2canBuildWithConfigParm() throws Exception {
+ projectExplorer.bot().tree().select(projectName);
+ clickContextMenu(projectExplorer.bot().tree().select(projectName), "Build Project");
+
+ // Wait until the project is built
+ SWTBotShell shell = bot.shell("Build Project");
+ bot.waitUntil(Conditions.shellCloses(shell), 120000);
+
+ IWorkspace workspace = ResourcesPlugin.getWorkspace();
+ assertNotNull(workspace);
+ IWorkspaceRoot root = workspace.getRoot();
+ assertNotNull(root);
+ IProject project = root.getProject(projectName);
+ assertNotNull(project);
+ IPath path = project.getLocation();
+ File f = new File(path.append("src/a.out").toOSString());
+ assertTrue(f.exists());
+ f = new File(path.append("config.status").toOSString());
+ assertTrue(f.exists());
+
+ try (BufferedReader r = new BufferedReader(new FileReader(f))) {
+ int ch;
+ boolean optionFound = false;
+ // Read config.status and look for the string --enable-jeff
+ // which is a simple verification that the option was used in the
+ // configure step.
+ while ((ch = r.read()) != -1) {
+ if (ch == '-') {
+ char[] buf = new char[12];
+ r.mark(100);
+ int count = r.read(buf);
+ if (count < 12) {
+ break;
+ }
+ String s = new String(buf);
+ if (s.equals("-enable-jeff")) {
+ optionFound = true;
+ break;
+ } else {
+ r.reset();
+ }
+ }
+ }
+ assertTrue(optionFound);
+ }
+
+ String output = viewConsole("Configure").bot().styledText().getText();
+ // Verify we got some help output to the console
+ Pattern p = Pattern.compile(".*WARNING:.*unrecognized.*--enable-jeff.*", Pattern.DOTALL);
+ Matcher m = p.matcher(output);
+ assertTrue(m.matches());
+
+ // Verify that if we build again, we don't reconfigure.
+ // Verifies fix for bug: #308261
+ long oldDate = f.lastModified();
+ projectExplorer.bot().tree().select(projectName);
+ clickContextMenu(projectExplorer.bot().tree().select(projectName), "Build Project");
+ path = project.getLocation();
+ // We need to wait until the a.out file is created so
+ // sleep a bit and look for it...give up after 120 seconds
+ for (int i = 0; i < 240; ++i) {
+ bot.sleep(500);
+ f = new File(path.append("src/a.out").toOSString());
+ if (f.exists()) {
+ break;
+ }
+ }
+ assertTrue(f.exists());
+ f = new File(path.append("config.status").toOSString());
+ assertTrue(f.exists());
+ long newDate = f.lastModified();
+ assertEquals(newDate, oldDate);
+ }
+
+ // Verify a new configuration will copy the configuration parameters
+ // of its base configuration.
+ @Test
+ public void t3newConfigCopiesParms() throws Exception {
+ projectExplorer.bot().tree().select(projectName);
+ clickContextMenu(projectExplorer.bot().tree().select(projectName), "Build Configurations", "Manage...");
+ SWTBotShell shell = bot.shell(projectName + ": Manage Configurations");
+ shell.activate();
+ shell = bot.shell(projectName + ": Manage Configurations");
+ shell.activate();
+ SWTBotTable table = bot.table();
+ assertTrue(table.containsItem("debug"));
+ table.getTableItem("debug").select();
+ bot.button("Set Active").click();
+ bot.button("OK").click();
+ // Verify the debug configuration is active and has a user parameter:
+ // --enable-jeff
+ openProperties("Autotools", "Configure Settings");
+ SWTBotCombo configs = bot.comboBoxWithLabel("Configuration: ");
+ configs.setFocus();
+ String[] items = configs.items();
+ for (int i = 0; i < items.length; ++i) {
+ if (items[i].contains("debug") && items[i].contains("Active")) {
+ configs.setSelection(i);
+ }
+ }
+ assertTrue(configs.getText().contains("debug"));
+ bot.treeWithLabel("Configure Settings").expandNode("configure").select("Advanced");
+ SWTBotText text = bot.textWithLabel("Additional command-line options");
+ String val = text.getText();
+ assertEquals("--enable-jeff", val);
+ // Verify that the build directory for the new configuration has been
+ // switched to build-debug
+ shell = bot.shell("Properties for " + projectName);
+ shell.activate();
+ bot.text().setText("");
+
+ bot.tree().select("C/C++ Build");
+ String buildDir = bot.textWithLabel("Build directory:").getText();
+ assertTrue(buildDir.endsWith("build-debug"));
+ // Verify the default configuration has no user setting
+ bot.tree().expandNode("Autotools").select("Configure Settings");
+ configs = bot.comboBoxWithLabel("Configuration: ");
+ configs.setSelection("default");
+ bot.treeWithLabel("Configure Settings").expandNode("configure").select("Advanced");
+ text = bot.textWithLabel("Additional command-line options");
+ val = text.getText();
+ assertEquals("", val);
+ bot.button("OK").click();
+ // Build the project again and verify we get a build-debug directory
+ projectExplorer.bot().tree().select(projectName);
+ clickContextMenu(projectExplorer.bot().tree().select(projectName), "Build Project");
+ IWorkspace workspace = ResourcesPlugin.getWorkspace();
+ assertNotNull(workspace);
+ IWorkspaceRoot root = workspace.getRoot();
+ assertNotNull(root);
+ IProject project = root.getProject(projectName);
+ assertNotNull(project);
+ IPath path = project.getLocation();
+ // We need to wait until the config.status file is created so
+ // sleep a bit and look for it...give up after 20 seconds
+ File f = null;
+ for (int i = 0; i < 40; ++i) {
+ bot.sleep(500);
+ f = new File(path.append("build-debug/src/a.out").toOSString());
+ if (f.exists()) {
+ break;
+ }
+ }
+ assertTrue(f.exists());
+ f = new File(path.append("build-debug/config.status").toOSString());
+ assertTrue(f.exists());
+ try (BufferedReader r = new BufferedReader(new FileReader(f))) {
+ int ch;
+ boolean optionFound = false;
+ // Read config.status and look for the string --enable-jeff
+ // which is a simple verification that the option was used in the
+ // configure step.
+ while ((ch = r.read()) != -1) {
+ if (ch == '-') {
+ char[] buf = new char[12];
+ r.mark(100);
+ int count = r.read(buf);
+ if (count < 12) {
+ break;
+ }
+ String s = new String(buf);
+ if (s.equals("-enable-jeff")) {
+ optionFound = true;
+ break;
+ } else {
+ r.reset();
+ }
+ }
+ }
+ assertTrue(optionFound);
+ }
+ // Verify we cleaned out the top-level build directory (i.e. that there
+ // is no config.status there anymore).
+ path = project.getLocation().append("config.status");
+ f = new File(path.toOSString());
+ assertTrue(!f.exists());
+ path = project.getLocation().append(".autotools");
+ f = new File(path.toOSString());
+ assertTrue(f.exists());
+ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+ DocumentBuilder db = dbf.newDocumentBuilder();
+ Document d = db.parse(f);
+ Element e = d.getDocumentElement();
+ // Get the stored configuration data
+ NodeList cfgs = e.getElementsByTagName("configuration"); //$NON-NLS-1$
+ assertEquals(4, cfgs.getLength());
+ int foundUser = 0;
+ for (int x = 0; x < cfgs.getLength(); ++x) {
+ Node n = cfgs.item(x);
+ NodeList l = n.getChildNodes();
+ // Verify two of the user fields in .autotools file are set to
+ // --enable-jeff
+ for (int y = 0; y < l.getLength(); ++y) {
+ Node child = l.item(y);
+ if (child.getNodeName().equals("option")) { //$NON-NLS-1$
+ NamedNodeMap optionAttrs = child.getAttributes();
+ Node idNode = optionAttrs.getNamedItem("id"); //$NON-NLS-1$
+ Node valueNode = optionAttrs.getNamedItem("value"); //$NON-NLS-1$
+ assertNotNull(idNode);
+ assertNotNull(valueNode);
+ String id = idNode.getNodeValue();
+ String value = valueNode.getNodeValue();
+ if (id.equals("user")) {
+ if (value.equals("--enable-jeff")) {
+ ++foundUser;
+ }
+ }
+ }
+ }
+ }
+ assertEquals(2, foundUser);
+
+ clickContextMenu(projectExplorer.bot().tree().select(projectName), "Build Configurations", "Manage...");
+ shell = bot.shell(projectName + ": Manage Configurations");
+ shell.activate();
+ table = bot.table();
+ assertTrue(table.containsItem("Build (GNU)"));
+ table.getTableItem("Build (GNU)").select();
+ bot.button("Set Active").click();
+ bot.button("OK").click();
+ bot.waitUntil(Conditions.shellCloses(shell));
+ }
+
+ // Verify we can do a double rename of configurations, renaming one
+ // configuration to
+ // another and then cancel without changing configuration settings.
+ @Test
+ public void t4doubleRenameCancel() throws Exception {
+ openProperties("Autotools", "Configure Settings");
+ SWTBotCombo configs = bot.comboBoxWithLabel("Configuration: ");
+ bot.button("Manage Configurations...").click();
+ // Rename "debug" to "release" and rename "default" to "debug".
+ // The settings should follow the rename operation.
+ renameConfiguration("debug", "release");
+ renameConfiguration("default", "debug");
+ bot.button("OK").click();
+ // Verify that "release" has --enable-jeff set and that
+ // the new "debug" configuration has no user setting.
+ SWTBotShell shell = bot.shell("Properties for " + projectName);
+ shell.activate();
+ configs = bot.comboBoxWithLabel("Configuration: ");
+ bot.treeWithLabel("Configure Settings").expandNode("configure").select("Advanced");
+ SWTBotText text = bot.textWithLabel("Additional command-line options");
+ String setting = text.getText();
+ assertEquals("--enable-jeff", setting);
+ configs.setFocus();
+ configs.setSelection("debug");
+ bot.treeWithLabel("Configure Settings").expandNode("configure").select("Advanced");
+ text = bot.textWithLabel("Additional command-line options");
+ setting = text.getText();
+ assertEquals("", setting);
+ bot.button("Cancel").click();
+ // Cancel and then verify that "debug" is back to normal with
+ // --enable-jeff set and that "default" is back to normal with
+ // no user setting.
+ openProperties("Autotools", "Configure Settings");
+ configs = bot.comboBoxWithLabel("Configuration: ");
+ configs.setSelection("debug");
+ assertTrue(configs.getText().contains("debug"));
+ bot.treeWithLabel("Configure Settings").expandNode("configure").select("Advanced");
+ text = bot.textWithLabel("Additional command-line options");
+ setting = text.getText();
+ assertEquals("--enable-jeff", setting);
+ configs.setFocus();
+ configs.setSelection("default");
+ assertTrue(configs.getText().contains("default"));
+ bot.treeWithLabel("Configure Settings").expandNode("configure").select("Advanced");
+ text = bot.textWithLabel("Additional command-line options");
+ setting = text.getText();
+ assertEquals("", setting);
+ bot.button("OK").click();
+ bot.waitUntil(Conditions.shellCloses(shell));
+ }
+
+ // Verify we can do a double rename of configurations, renaming one
+ // configuration to
+ // another and inheriting the settings properly.
+ @Test
+ public void t5doubleRenameOk() throws Exception {
+ openProperties("Autotools", "Configure Settings");
+ SWTBotCombo configs = bot.comboBoxWithLabel("Configuration: ");
+ bot.button("Manage Configurations...").click();
+ SWTBotShell shell = bot.shell(projectName + ": Manage Configurations");
+ shell.activate();
+ bot.table().select("debug");
+ bot.button("Set Active").click();
+ // Rename "debug" to "release" and rename "default" to "debug".
+ // The settings should follow the rename operation.
+ renameConfiguration("debug", "release");
+ renameConfiguration("default", "debug");
+ bot.button("OK").click();
+ shell = bot.shell("Properties for " + projectName);
+ shell.activate();
+ bot.button("OK").click();
+
+ // Verify changes have taken effect permanently
+ openProperties("Autotools", "Configure Settings");
+ configs = bot.comboBoxWithLabel("Configuration: ");
+ assertTrue(configs.getText().contains("release"));
+ assertTrue(configs.getText().contains("Active"));
+ bot.treeWithLabel("Configure Settings").expandNode("configure").select("Advanced");
+ SWTBotText text = bot.textWithLabel("Additional command-line options");
+ String setting = text.getText();
+ assertEquals("--enable-jeff", setting);
+ configs.setFocus();
+ configs.setSelection("debug");
+ assertTrue(configs.getText().contains("debug"));
+ bot.treeWithLabel("Configure Settings").expandNode("configure").select("Advanced");
+ text = bot.textWithLabel("Additional command-line options");
+ setting = text.getText();
+ assertEquals("", setting);
+
+ // Undo the changes made by this test
+ configs = bot.comboBoxWithLabel("Configuration: ");
+ bot.button("Manage Configurations...").click();
+ shell = bot.shell(projectName + ": Manage Configurations");
+ shell.activate();
+ bot.table().select("Build (GNU)");
+ bot.button("Set Active").click();
+ renameConfiguration("debug", "default");
+ renameConfiguration("release", "debug");
+ bot.button("OK").click();
+ shell = bot.shell("Properties for " + projectName);
+ shell.activate();
+ bot.button("OK").click();
+ bot.waitUntil(Conditions.shellCloses(shell));
+ }
+
+ // Renames a configuration. Assumes the "Manage Configurations" dialog will
+ // be open.
+ private void renameConfiguration(String original, String newname) {
+ SWTBotShell shell = bot.shell(projectName + ": Manage Configurations");
+ shell.activate();
+ bot.table().select(original);
+ bot.button("Rename...").click();
+ shell = bot.shell("Rename Configuration");
+ shell.activate();
+ bot.textWithLabel("Name:").setText(newname);
+ bot.button("OK").click();
+ shell = bot.shell(projectName + ": Manage Configurations");
+ shell.activate();
+ }
+
+}
diff --git a/build/org.eclipse.cdt.autotools.ui.tests/src/org/eclipse/cdt/autotools/ui/tests/TestEnvironmentVars.java b/build/org.eclipse.cdt.autotools.ui.tests/src/org/eclipse/cdt/autotools/ui/tests/TestEnvironmentVars.java
index 945753a967f..d5dca2a894e 100644
--- a/build/org.eclipse.cdt.autotools.ui.tests/src/org/eclipse/cdt/autotools/ui/tests/TestEnvironmentVars.java
+++ b/build/org.eclipse.cdt.autotools.ui.tests/src/org/eclipse/cdt/autotools/ui/tests/TestEnvironmentVars.java
@@ -29,10 +29,12 @@ import org.eclipse.swtbot.swt.finder.waits.Conditions;
import org.eclipse.swtbot.swt.finder.widgets.SWTBotShell;
import org.eclipse.swtbot.swt.finder.widgets.SWTBotText;
import org.junit.FixMethodOrder;
+import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.MethodSorters;
+@Ignore("Unstable tests exluded from build. See Bug 509248 and Bug 564002")
@RunWith(SWTBotJunit4ClassRunner.class)
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class TestEnvironmentVars extends AbstractTest {
diff --git a/build/org.eclipse.cdt.autotools.ui.tests/src/org/eclipse/cdt/autotools/ui/tests/TestMakeTargets.java b/build/org.eclipse.cdt.autotools.ui.tests/src/org/eclipse/cdt/autotools/ui/tests/TestMakeTargets.java
index 3c3cf0be8b1..bb89f85a905 100644
--- a/build/org.eclipse.cdt.autotools.ui.tests/src/org/eclipse/cdt/autotools/ui/tests/TestMakeTargets.java
+++ b/build/org.eclipse.cdt.autotools.ui.tests/src/org/eclipse/cdt/autotools/ui/tests/TestMakeTargets.java
@@ -29,10 +29,12 @@ import org.eclipse.swtbot.swt.finder.junit.SWTBotJunit4ClassRunner;
import org.eclipse.swtbot.swt.finder.waits.Conditions;
import org.eclipse.swtbot.swt.finder.widgets.SWTBotShell;
import org.junit.FixMethodOrder;
+import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.MethodSorters;
+@Ignore("Unstable tests exluded from build. See Bug 509248 and Bug 564002")
@RunWith(SWTBotJunit4ClassRunner.class)
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class TestMakeTargets extends AbstractTest {
diff --git a/build/org.eclipse.cdt.autotools.ui.tests/src/org/eclipse/cdt/autotools/ui/tests/TestToolActions.java b/build/org.eclipse.cdt.autotools.ui.tests/src/org/eclipse/cdt/autotools/ui/tests/TestToolActions.java
index ace227104b6..66e67582be9 100644
--- a/build/org.eclipse.cdt.autotools.ui.tests/src/org/eclipse/cdt/autotools/ui/tests/TestToolActions.java
+++ b/build/org.eclipse.cdt.autotools.ui.tests/src/org/eclipse/cdt/autotools/ui/tests/TestToolActions.java
@@ -24,10 +24,12 @@ import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotView;
import org.eclipse.swtbot.swt.finder.junit.SWTBotJunit4ClassRunner;
import org.eclipse.swtbot.swt.finder.widgets.SWTBotShell;
import org.junit.FixMethodOrder;
+import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.MethodSorters;
+@Ignore("Unstable tests exluded from build. See Bug 509248 and Bug 564002")
@RunWith(SWTBotJunit4ClassRunner.class)
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class TestToolActions extends AbstractTest {
diff --git a/build/org.eclipse.cdt.autotools.ui.tests/src/org/eclipse/cdt/autotools/ui/tests/autoconf/AutoconfTestSuite.java b/build/org.eclipse.cdt.autotools.ui.tests/src/org/eclipse/cdt/autotools/ui/tests/autoconf/AutoconfTestSuite.java
new file mode 100644
index 00000000000..bc987881a0c
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.ui.tests/src/org/eclipse/cdt/autotools/ui/tests/autoconf/AutoconfTestSuite.java
@@ -0,0 +1,23 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2015 Red Hat Inc..
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Red Hat Incorporated - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.autotools.ui.tests.autoconf;
+
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+
+@RunWith(Suite.class)
+@Suite.SuiteClasses({ TestMacroParser.class, TestTokenizer.class, TestShellParser.class })
+public class AutoconfTestSuite {
+
+}
diff --git a/build/org.eclipse.cdt.autotools.ui.tests/src/org/eclipse/cdt/autotools/ui/tests/autoconf/AutoconfTests.java b/build/org.eclipse.cdt.autotools.ui.tests/src/org/eclipse/cdt/autotools/ui/tests/autoconf/AutoconfTests.java
deleted file mode 100644
index 88e0a34a242..00000000000
--- a/build/org.eclipse.cdt.autotools.ui.tests/src/org/eclipse/cdt/autotools/ui/tests/autoconf/AutoconfTests.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2015 Red Hat Inc..
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Red Hat Incorporated - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.autotools.ui.tests.autoconf;
-
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-
-@RunWith(Suite.class)
-@Suite.SuiteClasses({ TestMacroParser.class, TestTokenizer.class, TestShellParser.class })
-public class AutoconfTests {
-
-}
diff --git a/build/org.eclipse.cdt.autotools.ui.tests/src/org/eclipse/cdt/autotools/ui/tests/autoconf/BaseParserTest.java b/build/org.eclipse.cdt.autotools.ui.tests/src/org/eclipse/cdt/autotools/ui/tests/autoconf/BaseParserTest.java
index 6f6e87b6638..485493b6648 100644
--- a/build/org.eclipse.cdt.autotools.ui.tests/src/org/eclipse/cdt/autotools/ui/tests/autoconf/BaseParserTest.java
+++ b/build/org.eclipse.cdt.autotools.ui.tests/src/org/eclipse/cdt/autotools/ui/tests/autoconf/BaseParserTest.java
@@ -18,6 +18,7 @@ import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.fail;
+import java.io.IOException;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
@@ -30,9 +31,12 @@ import org.eclipse.cdt.autotools.ui.editors.parser.AutoconfParser;
import org.eclipse.cdt.autotools.ui.editors.parser.IAutoconfErrorHandler;
import org.eclipse.cdt.autotools.ui.editors.parser.IAutoconfMacroValidator;
import org.eclipse.cdt.autotools.ui.editors.parser.ParseException;
+import org.eclipse.cdt.utils.spawner.ProcessFactory;
import org.eclipse.jface.text.Document;
import org.eclipse.jface.text.IDocument;
+import org.junit.Assume;
import org.junit.Before;
+import org.junit.BeforeClass;
public abstract class BaseParserTest {
@@ -42,6 +46,23 @@ public abstract class BaseParserTest {
private Set<String> macroNames;
private AutoconfMacroDetector macroDetector;
+ @BeforeClass
+ public static void beforeClassMethod() {
+ // Verify that the necessary binaries are available, and if they are not,
+ // the tests will be ignored.
+ String[][] testBinaryCommands = { { "libtool", "--version" }, { "autoconf", "--version" },
+ { "automake", "--version" } };
+ try {
+ for (String[] cmd : testBinaryCommands) {
+ Process process = ProcessFactory.getFactory().exec(cmd);
+ process.destroy();
+ }
+ } catch (IOException e) {
+ // If we cannot find any binary, just ignore the tests.
+ Assume.assumeNoException(e);
+ }
+ }
+
@Before
public void setUp() {
errors = new ArrayList<>();
diff --git a/build/org.eclipse.cdt.autotools.ui.tests/src/org/eclipse/cdt/autotools/ui/tests/autoconf/TestTokenizer.java b/build/org.eclipse.cdt.autotools.ui.tests/src/org/eclipse/cdt/autotools/ui/tests/autoconf/TestTokenizer.java
index b75d58f7be7..d1c59a75351 100644
--- a/build/org.eclipse.cdt.autotools.ui.tests/src/org/eclipse/cdt/autotools/ui/tests/autoconf/TestTokenizer.java
+++ b/build/org.eclipse.cdt.autotools.ui.tests/src/org/eclipse/cdt/autotools/ui/tests/autoconf/TestTokenizer.java
@@ -19,6 +19,7 @@ import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
+import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
@@ -26,8 +27,11 @@ import org.eclipse.cdt.autotools.ui.editors.parser.AutoconfTokenizer;
import org.eclipse.cdt.autotools.ui.editors.parser.ITokenConstants;
import org.eclipse.cdt.autotools.ui.editors.parser.ParseException;
import org.eclipse.cdt.autotools.ui.editors.parser.Token;
+import org.eclipse.cdt.utils.spawner.ProcessFactory;
import org.eclipse.jface.text.Document;
import org.eclipse.jface.text.IDocument;
+import org.junit.Assume;
+import org.junit.BeforeClass;
import org.junit.Test;
/**
@@ -40,6 +44,23 @@ public class TestTokenizer {
private ArrayList<ParseException> tokenizerErrors;
+ @BeforeClass
+ public static void beforeClassMethod() {
+ // Verify that the necessary binaries are available, and if they are not,
+ // the tests will be ignored.
+ String[][] testBinaryCommands = { { "libtool", "--version" }, { "autoconf", "--version" },
+ { "automake", "--version" } };
+ try {
+ for (String[] cmd : testBinaryCommands) {
+ Process process = ProcessFactory.getFactory().exec(cmd);
+ process.destroy();
+ }
+ } catch (IOException e) {
+ // If we cannot find any binary, just ignore the tests.
+ Assume.assumeNoException(e);
+ }
+ }
+
protected IDocument createDocument(String text) {
return new Document(text);
}
diff --git a/build/org.eclipse.cdt.autotools.ui/.classpath b/build/org.eclipse.cdt.autotools.ui/.classpath
index eca7bdba8f0..e801ebfb468 100644
--- a/build/org.eclipse.cdt.autotools.ui/.classpath
+++ b/build/org.eclipse.cdt.autotools.ui/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/build/org.eclipse.cdt.autotools.ui/.settings/.api_filters b/build/org.eclipse.cdt.autotools.ui/.settings/.api_filters
index f7d62077297..950216df09c 100644
--- a/build/org.eclipse.cdt.autotools.ui/.settings/.api_filters
+++ b/build/org.eclipse.cdt.autotools.ui/.settings/.api_filters
@@ -1,14 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<component id="org.eclipse.cdt.autotools.ui" version="2">
- <resource path="src/org/eclipse/cdt/autotools/ui/editors/IAutotoolsEditor.java" type="org.eclipse.cdt.autotools.ui.editors.IAutotoolsEditor">
- <filter id="643846161">
- <message_arguments>
- <message_argument value="IReconcilingParticipant"/>
- <message_argument value="IAutotoolsEditor"/>
- <message_argument value="addReconcilingParticipant(IReconcilingParticipant)"/>
- </message_arguments>
- </filter>
- </resource>
<resource path="src/org/eclipse/cdt/internal/autotools/ui/editors/automake/AbstractMakefile.java" type="org.eclipse.cdt.internal.autotools.ui.editors.automake.AbstractMakefile">
<filter id="574619656">
<message_arguments>
diff --git a/build/org.eclipse.cdt.autotools.ui/.settings/org.eclipse.core.resources.prefs b/build/org.eclipse.cdt.autotools.ui/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.ui/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/build/org.eclipse.cdt.autotools.ui/.settings/org.eclipse.jdt.core.prefs b/build/org.eclipse.cdt.autotools.ui/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/build/org.eclipse.cdt.autotools.ui/.settings/org.eclipse.jdt.core.prefs
+++ b/build/org.eclipse.cdt.autotools.ui/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/build/org.eclipse.cdt.autotools.ui/.settings/org.eclipse.jdt.ui.prefs b/build/org.eclipse.cdt.autotools.ui/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/build/org.eclipse.cdt.autotools.ui/.settings/org.eclipse.jdt.ui.prefs
+++ b/build/org.eclipse.cdt.autotools.ui/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/build/org.eclipse.cdt.autotools.ui/META-INF/MANIFEST.MF b/build/org.eclipse.cdt.autotools.ui/META-INF/MANIFEST.MF
index 1b73fcc4edb..67310121c63 100644
--- a/build/org.eclipse.cdt.autotools.ui/META-INF/MANIFEST.MF
+++ b/build/org.eclipse.cdt.autotools.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name.0
Bundle-SymbolicName: org.eclipse.cdt.autotools.ui;singleton:=true
-Bundle-Version: 2.0.300.qualifier
+Bundle-Version: 2.1.400.qualifier
Bundle-Activator: org.eclipse.cdt.autotools.ui.AutotoolsUIPlugin
Bundle-Localization: plugin
Bundle-Vendor: %provider
@@ -23,18 +23,19 @@ Require-Bundle: org.eclipse.ui,
org.eclipse.cdt.remote.core;bundle-version="1.0.0",
org.eclipse.swt,
org.eclipse.ui.genericeditor;bundle-version="1.0.0"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-ActivationPolicy: lazy
-Export-Package: org.eclipse.cdt.autotools.ui,
- org.eclipse.cdt.autotools.ui.editors,
- org.eclipse.cdt.autotools.ui.editors.outline,
- org.eclipse.cdt.autotools.ui.editors.parser,
- org.eclipse.cdt.internal.autotools.ui;x-friends:="org.eclipse.linuxtools.cdt.autotools.tests,org.eclipse.linuxtools.cdt.autotools",
- org.eclipse.cdt.internal.autotools.ui.actions;x-friends:="org.eclipse.linuxtools.cdt.autotools.tests,org.eclipse.linuxtools.cdt.autotools",
- org.eclipse.cdt.internal.autotools.ui.editors.autoconf;x-friends:="org.eclipse.linuxtools.cdt.autotools.tests,org.eclipse.linuxtools.cdt.autotools",
- org.eclipse.cdt.internal.autotools.ui.editors.automake;x-friends:="org.eclipse.linuxtools.cdt.autotools.tests,org.eclipse.linuxtools.cdt.autotools",
- org.eclipse.cdt.internal.autotools.ui.preferences;x-friends:="org.eclipse.linuxtools.cdt.autotools.tests,org.eclipse.linuxtools.cdt.autotools",
- org.eclipse.cdt.internal.autotools.ui.properties;x-friends:="org.eclipse.linuxtools.cdt.autotools.tests,org.eclipse.linuxtools.cdt.autotools",
- org.eclipse.cdt.internal.autotools.ui.text.hover;x-friends:="org.eclipse.linuxtools.cdt.autotools.tests,org.eclipse.linuxtools.cdt.autotools",
- org.eclipse.cdt.internal.autotools.ui.wizards;x-friends:="org.eclipse.linuxtools.cdt.autotools.tests,org.eclipse.linuxtools.cdt.autotools"
+Export-Package: org.eclipse.cdt.autotools.ui;x-friends:="org.eclipse.linuxtools.cdt.autotools",
+ org.eclipse.cdt.autotools.ui.editors;x-friends:="org.eclipse.linuxtools.cdt.autotools",
+ org.eclipse.cdt.autotools.ui.editors.outline;x-friends:="org.eclipse.linuxtools.cdt.autotools",
+ org.eclipse.cdt.autotools.ui.editors.parser;x-friends:="org.eclipse.linuxtools.cdt.autotools",
+ org.eclipse.cdt.internal.autotools.ui;x-friends:="org.eclipse.linuxtools.cdt.autotools",
+ org.eclipse.cdt.internal.autotools.ui.actions;x-friends:="org.eclipse.linuxtools.cdt.autotools",
+ org.eclipse.cdt.internal.autotools.ui.editors;x-friends:="org.eclipse.linuxtools.cdt.autotools",
+ org.eclipse.cdt.internal.autotools.ui.editors.autoconf;x-friends:="org.eclipse.linuxtools.cdt.autotools",
+ org.eclipse.cdt.internal.autotools.ui.editors.automake;x-friends:="org.eclipse.linuxtools.cdt.autotools",
+ org.eclipse.cdt.internal.autotools.ui.preferences;x-friends:="org.eclipse.linuxtools.cdt.autotools",
+ org.eclipse.cdt.internal.autotools.ui.properties;x-friends:="org.eclipse.linuxtools.cdt.autotools",
+ org.eclipse.cdt.internal.autotools.ui.text.hover;x-friends:="org.eclipse.linuxtools.cdt.autotools",
+ org.eclipse.cdt.internal.autotools.ui.wizards;x-friends:="org.eclipse.linuxtools.cdt.autotools"
Automatic-Module-Name: org.eclipse.cdt.autotools.ui
diff --git a/build/org.eclipse.cdt.autotools.ui/about.html b/build/org.eclipse.cdt.autotools.ui/about.html
index 164f781a8fd..b3134865230 100644
--- a/build/org.eclipse.cdt.autotools.ui/about.html
+++ b/build/org.eclipse.cdt.autotools.ui/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/about.ini b/build/org.eclipse.cdt.autotools.ui/about.ini
index e07a7bb377e..e07a7bb377e 100644
--- a/lrparser/org.eclipse.cdt.core.lrparser/about.ini
+++ b/build/org.eclipse.cdt.autotools.ui/about.ini
diff --git a/build/org.eclipse.cdt.autotools.ui/about.mappings b/build/org.eclipse.cdt.autotools.ui/about.mappings
new file mode 100644
index 00000000000..936a8039c3e
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.ui/about.mappings
@@ -0,0 +1,9 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+# The following should contain the build version.
+# e.g. "0=20200106-1728"
+# This value will be added automatically via the build scripts
+0=${buildId}
diff --git a/build/org.eclipse.cdt.autotools.ui/about.properties b/build/org.eclipse.cdt.autotools.ui/about.properties
new file mode 100644
index 00000000000..662eb132285
--- /dev/null
+++ b/build/org.eclipse.cdt.autotools.ui/about.properties
@@ -0,0 +1,32 @@
+###############################################################################
+# Copyright (c) 2012, 2022 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+# about.properties
+# contains externalized strings for about.ini
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# fill-ins are supplied by about.mappings
+# This file should be translated.
+# NOTE TO TRANSLATOR: Please do not translate the featureVersion variable.
+
+
+blurb=C/C++ Autotools support\n\
+\n\
+Version: {featureVersion}\n\
+Build id: {0}\n\
+\n\
+Copyright (c) 2012, 2022 Contributors to the Eclipse Foundation
+\n\
+See the NOTICE file(s) distributed with this work for additional\n\
+information regarding copyright ownership.\n\
+\n\
+Visit http://www.eclipse.org/cdt
diff --git a/build/org.eclipse.cdt.autotools.ui/build.properties b/build/org.eclipse.cdt.autotools.ui/build.properties
index 7984bd3b104..027c372bdb9 100644
--- a/build/org.eclipse.cdt.autotools.ui/build.properties
+++ b/build/org.eclipse.cdt.autotools.ui/build.properties
@@ -7,5 +7,9 @@ bin.includes = META-INF/,\
templates/,\
about.html,\
icons/,\
- macros/
+ macros/,\
+ cdt_logo_icon32.png,\
+ about.properties,\
+ about.mappings,\
+ about.ini
src.includes = about.html
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/cdt_logo_icon32.png b/build/org.eclipse.cdt.autotools.ui/cdt_logo_icon32.png
index 470ca81b327..470ca81b327 100644
--- a/lrparser/org.eclipse.cdt.core.lrparser/cdt_logo_icon32.png
+++ b/build/org.eclipse.cdt.autotools.ui/cdt_logo_icon32.png
Binary files differ
diff --git a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/AutotoolsUIPlugin.java b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/AutotoolsUIPlugin.java
index ce66521c174..7daee2a8020 100644
--- a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/AutotoolsUIPlugin.java
+++ b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/AutotoolsUIPlugin.java
@@ -26,6 +26,7 @@ import org.eclipse.core.runtime.Status;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.osgi.framework.BundleContext;
@@ -139,7 +140,7 @@ public class AutotoolsUIPlugin extends AbstractUIPlugin {
* Returns the active workbench window or <code>null</code> if none
*/
public static IWorkbenchWindow getActiveWorkbenchWindow() {
- return getDefault().getWorkbench().getActiveWorkbenchWindow();
+ return PlatformUI.getWorkbench().getActiveWorkbenchWindow();
}
/**
diff --git a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/AcInitElement.java b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/AcInitElement.java
index 1447e6b1727..988dedb21d1 100644
--- a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/AcInitElement.java
+++ b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/AcInitElement.java
@@ -22,7 +22,7 @@ import org.eclipse.cdt.internal.autotools.core.VersionComparator;
public class AcInitElement extends AutoconfMacroElement {
- private static final String BAD_VERSION_NUMBER = "AC_INIT_badVersionNumber";
+ private static final String BAD_VERSION_NUMBER = "AC_INIT_badVersionNumber"; //$NON-NLS-1$
public AcInitElement(String name) {
super(name);
@@ -56,7 +56,7 @@ public class AcInitElement extends AutoconfMacroElement {
AutoconfElement argument = this.getChildren()[1];
// match a digit followed by a dot zero or more times
// but always end with a digit
- if (!argument.getName().matches("(\\d*\\.)*((\\d+))")) {
+ if (!argument.getName().matches("(\\d*\\.)*((\\d+))")) { //$NON-NLS-1$
throw new InvalidMacroException(AutoconfEditorMessages.getString(BAD_VERSION_NUMBER), argument);
}
}
diff --git a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/AutoconfCodeScanner.java b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/AutoconfCodeScanner.java
index a6014b48cab..b53c868fe6d 100644
--- a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/AutoconfCodeScanner.java
+++ b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/AutoconfCodeScanner.java
@@ -120,7 +120,7 @@ public class AutoconfCodeScanner extends RuleBasedScanner {
rules.add(new AutoconfIdentifierRule(other));
// Make sure we don't treat "\#" as comment start.
- rules.add(new SingleLineRule("\\#", null, Token.UNDEFINED));
+ rules.add(new SingleLineRule("\\#", null, Token.UNDEFINED)); //$NON-NLS-1$
rules.add(new WhitespaceRule(new AutoconfWhitespaceDetector()));
diff --git a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/AutoconfMacroCodeScanner.java b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/AutoconfMacroCodeScanner.java
index f1300431f42..697d308e2c6 100644
--- a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/AutoconfMacroCodeScanner.java
+++ b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/AutoconfMacroCodeScanner.java
@@ -81,8 +81,8 @@ public class AutoconfMacroCodeScanner extends RuleBasedScanner {
List<IRule> rules = new ArrayList<>();
// Add rule for single line comments.
- rules.add(new RestrictedEndOfLineRule("dnl", "[]", comment)); //$NON-NLS-1$
- rules.add(new RestrictedEndOfLineRule("#", "[]", comment, '\\')); //$NON-NLS-1$
+ rules.add(new RestrictedEndOfLineRule("dnl", "[]", comment)); //$NON-NLS-1$ //$NON-NLS-2$
+ rules.add(new RestrictedEndOfLineRule("#", "[]", comment, '\\')); //$NON-NLS-1$ //$NON-NLS-2$
// Add special recursive rule for strings which allows variable
// references to be internally tokenized.
diff --git a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/AutoconfPartitionScanner.java b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/AutoconfPartitionScanner.java
index 58ede93f70c..8ce411beee1 100644
--- a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/AutoconfPartitionScanner.java
+++ b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/AutoconfPartitionScanner.java
@@ -43,7 +43,7 @@ public class AutoconfPartitionScanner extends RuleBasedPartitionScanner {
rules.add(new AutoconfMacroPartitionRule(macro));
rules.add(new EndOfLineRule("dnl", comment)); //$NON-NLS-1$
- rules.add(new SingleLineRule("\\#", null, Token.UNDEFINED));
+ rules.add(new SingleLineRule("\\#", null, Token.UNDEFINED)); //$NON-NLS-1$
rules.add(new EndOfLineRule("#", comment, '\\')); //$NON-NLS-1$
// We want to process identifiers that might have macro
diff --git a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/InlineDataRule.java b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/InlineDataRule.java
index 31a59f02742..7c1b85a59b4 100644
--- a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/InlineDataRule.java
+++ b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/InlineDataRule.java
@@ -39,7 +39,7 @@ public class InlineDataRule implements IRule {
/** Buffer used for pattern detection */
private StringBuilder fBuffer = new StringBuilder();
- private String fStartingSequence = "<<";
+ private String fStartingSequence = "<<"; //$NON-NLS-1$
public InlineDataRule(IToken inToken) {
token = inToken;
diff --git a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/outline/AutoconfContentProvider.java b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/outline/AutoconfContentProvider.java
index 7d198314853..29db2b4f159 100644
--- a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/outline/AutoconfContentProvider.java
+++ b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/outline/AutoconfContentProvider.java
@@ -28,7 +28,7 @@ public class AutoconfContentProvider implements ITreeContentProvider {
private IDocumentProvider documentProvider;
private AutoconfEditor editor;
- protected final static String SECTION_POSITIONS = "section_positions";
+ protected final static String SECTION_POSITIONS = "section_positions"; //$NON-NLS-1$
protected IPositionUpdater positionUpdater = new DefaultPositionUpdater(SECTION_POSITIONS);
public AutoconfContentProvider(ITextEditor editor) {
diff --git a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/outline/AutoconfLabelProvider.java b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/outline/AutoconfLabelProvider.java
index d7f92b41c91..89342d4abda 100644
--- a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/outline/AutoconfLabelProvider.java
+++ b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/outline/AutoconfLabelProvider.java
@@ -88,21 +88,21 @@ public class AutoconfLabelProvider implements ILabelProvider {
String result;
String name = e.getName();
if (name.length() > 31)
- name = name.substring(0, 31) + "...";
+ name = name.substring(0, 31) + "..."; //$NON-NLS-1$
String var = e.getVar();
if (var != null) {
if (var.length() > 15)
- var = var.substring(0, 15) + "...";
+ var = var.substring(0, 15) + "..."; //$NON-NLS-1$
var = " " + var; //$NON-NLS-1$
} else {
- var = "";
+ var = ""; //$NON-NLS-1$
}
- result = (name + var).replaceAll("(\r|\n| |\t|\f)+", " ");
+ result = (name + var).replaceAll("(\r|\n| |\t|\f)+", " "); //$NON-NLS-1$ //$NON-NLS-2$
return result;
} else if (element instanceof String) {
return (String) element;
}
- return "";
+ return ""; //$NON-NLS-1$
}
}
diff --git a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/parser/AutoconfCaseConditionElement.java b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/parser/AutoconfCaseConditionElement.java
index e20bb4c4d5a..77aca201956 100644
--- a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/parser/AutoconfCaseConditionElement.java
+++ b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/parser/AutoconfCaseConditionElement.java
@@ -16,7 +16,7 @@ package org.eclipse.cdt.autotools.ui.editors.parser;
public class AutoconfCaseConditionElement extends AutoconfElement {
public AutoconfCaseConditionElement() {
- super("");
+ super(""); //$NON-NLS-1$
}
public AutoconfCaseConditionElement(String name) {
diff --git a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/parser/AutoconfMacroArgumentElement.java b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/parser/AutoconfMacroArgumentElement.java
index 672401fb43a..5bae2d108cb 100644
--- a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/parser/AutoconfMacroArgumentElement.java
+++ b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/parser/AutoconfMacroArgumentElement.java
@@ -24,7 +24,7 @@ package org.eclipse.cdt.autotools.ui.editors.parser;
public class AutoconfMacroArgumentElement extends AutoconfElement {
public AutoconfMacroArgumentElement() {
- super(""); // //$NON-NLS-N$
+ super(""); // //$NON-NLS-1$
}
public AutoconfMacroArgumentElement(String name) {
diff --git a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/parser/AutoconfOutlineErrorHandler.java b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/parser/AutoconfOutlineErrorHandler.java
index 195bcbdd609..f8d29a38ae3 100644
--- a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/parser/AutoconfOutlineErrorHandler.java
+++ b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/parser/AutoconfOutlineErrorHandler.java
@@ -43,7 +43,7 @@ public class AutoconfOutlineErrorHandler {
try {
IPath absPath = input.getStorage().getFullPath();
IPath rootPath = root.getLocation();
- IPath relPath = new Path("");
+ IPath relPath = new Path(""); //$NON-NLS-1$
for (int i = 0; i < rootPath.segmentCount(); ++i) {
relPath = relPath.append("../"); //$NON-NLS-1$
diff --git a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/parser/AutoconfParser.java b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/parser/AutoconfParser.java
index 19fce55b7c9..ff80904550d 100644
--- a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/parser/AutoconfParser.java
+++ b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/parser/AutoconfParser.java
@@ -56,7 +56,8 @@ public class AutoconfParser {
private AutoconfTokenizer tokenizer;
private IAutoconfMacroDetector macroDetector;
- private static final String M4_BUILTINS = "define undefine defn pushdef popdef indir builtin ifdef ifelse shift reverse cond " //$NON-NLS-1$
+ @SuppressWarnings("nls")
+ private static final String M4_BUILTINS = "define undefine defn pushdef popdef indir builtin ifdef ifelse shift reverse cond "
+ "dumpdef traceon traceoff debugmode debugfile dnl changequote changecom changeword " + "m4wrap "
+ "include sinclude divert undivert divnum len index regexp substr translit patsubst "
+ "format incr decr eval syscmd esyscmd sysval mkstemp maketemp errprint m4exit "
@@ -240,9 +241,9 @@ public class AutoconfParser {
} else {
String exp;
if (block instanceof AutoconfIfElement || block instanceof AutoconfElifElement)
- exp = "then";
+ exp = "then"; //$NON-NLS-1$
else
- exp = "do";
+ exp = "do"; //$NON-NLS-1$
handleError(token, AutoconfEditorMessages.getFormattedString(MISSING_SPECIFIER, exp));
@@ -606,6 +607,7 @@ public class AutoconfParser {
// fall through
// 5. Abort on unexpected tokens
+ //$FALL-THROUGH$
case ITokenConstants.SH_DO:
case ITokenConstants.SH_THEN:
handleError(token, AutoconfEditorMessages.getFormattedString(INVALID_SPECIFIER, token.getText()));
@@ -863,11 +865,11 @@ public class AutoconfParser {
private void validateMacroParameterCount(AutoconfMacroElement macro, Token token, int count) {
if (macro.getParameterCount() < count) {
- handleError(token, AutoconfEditorMessages.getFormattedString("M4MacroArgsTooFew", macro.getName(),
- Integer.valueOf(2))); //$NON-NLS-1$
+ handleError(token, AutoconfEditorMessages.getFormattedString("M4MacroArgsTooFew", macro.getName(), //$NON-NLS-1$
+ Integer.valueOf(2)));
} else if (macro.getParameterCount() > count) {
- handleError(token, AutoconfEditorMessages.getFormattedString("M4MacroArgsTooMany", macro.getName(),
- Integer.valueOf(2))); //$NON-NLS-1$
+ handleError(token, AutoconfEditorMessages.getFormattedString("M4MacroArgsTooMany", macro.getName(), //$NON-NLS-1$
+ Integer.valueOf(2)));
}
}
diff --git a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/parser/AutoconfTokenizer.java b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/parser/AutoconfTokenizer.java
index 4cbb147f526..aa46faf31fc 100644
--- a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/parser/AutoconfTokenizer.java
+++ b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/parser/AutoconfTokenizer.java
@@ -69,7 +69,7 @@ public class AutoconfTokenizer {
this.chars = document.get().toCharArray();
this.offset = 0;
- this.eofToken = new Token(ITokenConstants.EOF, "", document, chars.length, 0);
+ this.eofToken = new Token(ITokenConstants.EOF, "", document, chars.length, 0); //$NON-NLS-1$
this.m4OpenQuote = "`"; //$NON-NLS-1$
this.m4CloseQuote = "'"; //$NON-NLS-1$
@@ -179,7 +179,7 @@ public class AutoconfTokenizer {
}
if (!found) {
handleError(startOffset, offset, AutoconfEditorMessages.getFormattedString(UNMATCHED_CLOSE_COMMENT,
- m4CloseComment.equals("\n") ? "newline" : m4CloseComment)); //$NON-NLS-1$
+ m4CloseComment.equals("\n") ? "newline" : m4CloseComment)); //$NON-NLS-1$ //$NON-NLS-2$
}
return makeToken(ITokenConstants.M4_COMMENT);
}
@@ -270,35 +270,39 @@ public class AutoconfTokenizer {
String text = buffer.toString();
if (!isM4Context) {
- // detect sh tokens
- if ("case".equals(text))
- return makeToken(ITokenConstants.SH_CASE, text);
- if ("in".equals(text))
- return makeToken(ITokenConstants.SH_IN, text);
- if ("esac".equals(text))
- return makeToken(ITokenConstants.SH_ESAC, text);
- if ("while".equals(text))
- return makeToken(ITokenConstants.SH_WHILE, text);
- if ("select".equals(text))
- return makeToken(ITokenConstants.SH_SELECT, text);
- if ("until".equals(text))
- return makeToken(ITokenConstants.SH_UNTIL, text);
- if ("for".equals(text))
- return makeToken(ITokenConstants.SH_FOR, text);
- if ("do".equals(text))
- return makeToken(ITokenConstants.SH_DO, text);
- if ("done".equals(text))
- return makeToken(ITokenConstants.SH_DONE, text);
- if ("if".equals(text))
- return makeToken(ITokenConstants.SH_IF, text);
- if ("then".equals(text))
- return makeToken(ITokenConstants.SH_THEN, text);
- if ("else".equals(text))
- return makeToken(ITokenConstants.SH_ELSE, text);
- if ("elif".equals(text))
- return makeToken(ITokenConstants.SH_ELIF, text);
- if ("fi".equals(text))
- return makeToken(ITokenConstants.SH_FI, text);
+ if (text != null) {
+ // detect sh tokens
+ switch (text) {
+ case "case": //$NON-NLS-1$
+ return makeToken(ITokenConstants.SH_CASE, text);
+ case "in": //$NON-NLS-1$
+ return makeToken(ITokenConstants.SH_IN, text);
+ case "esac": //$NON-NLS-1$
+ return makeToken(ITokenConstants.SH_ESAC, text);
+ case "while": //$NON-NLS-1$
+ return makeToken(ITokenConstants.SH_WHILE, text);
+ case "select": //$NON-NLS-1$
+ return makeToken(ITokenConstants.SH_SELECT, text);
+ case "until": //$NON-NLS-1$
+ return makeToken(ITokenConstants.SH_UNTIL, text);
+ case "for": //$NON-NLS-1$
+ return makeToken(ITokenConstants.SH_FOR, text);
+ case "do": //$NON-NLS-1$
+ return makeToken(ITokenConstants.SH_DO, text);
+ case "done": //$NON-NLS-1$
+ return makeToken(ITokenConstants.SH_DONE, text);
+ case "if": //$NON-NLS-1$
+ return makeToken(ITokenConstants.SH_IF, text);
+ case "then": //$NON-NLS-1$
+ return makeToken(ITokenConstants.SH_THEN, text);
+ case "else": //$NON-NLS-1$
+ return makeToken(ITokenConstants.SH_ELSE, text);
+ case "elif": //$NON-NLS-1$
+ return makeToken(ITokenConstants.SH_ELIF, text);
+ case "fi": //$NON-NLS-1$
+ return makeToken(ITokenConstants.SH_FI, text);
+ }
+ }
}
// other identifier-looking word
@@ -360,7 +364,7 @@ public class AutoconfTokenizer {
}
if (ch != terminal) {
- handleError(startOffset, offset, AutoconfEditorMessages.getFormattedString(UNTERMINATED_STRING, "" + ch));
+ handleError(startOffset, offset, AutoconfEditorMessages.getFormattedString(UNTERMINATED_STRING, "" + ch)); //$NON-NLS-1$
}
return makeToken(type, buffer.toString());
diff --git a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/parser/Token.java b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/parser/Token.java
index 16044448c6a..3a873a3af19 100644
--- a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/parser/Token.java
+++ b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/autotools/ui/editors/parser/Token.java
@@ -82,7 +82,7 @@ public class Token implements ITokenConstants {
char[] text = document.get().toCharArray();
if (offset == 0)
return false;
- return (" \t\r\n\f".indexOf(text[offset - 1]) >= 0);
+ return (" \t\r\n\f".indexOf(text[offset - 1]) >= 0); //$NON-NLS-1$
}
}
diff --git a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/LocationAdapter.java b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/LocationAdapter.java
index bb9e174631e..87addb2ee46 100644
--- a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/LocationAdapter.java
+++ b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/LocationAdapter.java
@@ -36,7 +36,7 @@ abstract class LocationAdapter<T> {
public abstract T getLocation(IFile file);
- public static final LocationAdapter<IPath> PATH = new LocationAdapter<IPath>() {
+ public static final LocationAdapter<IPath> PATH = new LocationAdapter<>() {
@Override
public String extractName(IPath location) {
String name = location.lastSegment();
@@ -68,7 +68,7 @@ abstract class LocationAdapter<T> {
}
};
- public static final LocationAdapter<URI> URI = new LocationAdapter<URI>() {
+ public static final LocationAdapter<URI> URI = new LocationAdapter<>() {
@Override
public String extractName(URI location) {
String path = location.getPath();
diff --git a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/actions/AbstractAutotoolsHandler.java b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/actions/AbstractAutotoolsHandler.java
index 6cdec5f7c93..be53d49b021 100644
--- a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/actions/AbstractAutotoolsHandler.java
+++ b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/actions/AbstractAutotoolsHandler.java
@@ -359,7 +359,7 @@ public abstract class AbstractAutotoolsHandler extends AbstractHandler {
for (String arg : argumentList) {
command1.append(' ').append(arg);
}
- newArgumentList = new String[] { "-c", command1.toString() };
+ newArgumentList = new String[] { "-c", command1.toString() }; //$NON-NLS-1$
OutputStream stdout = consoleOutStream;
OutputStream stderr = consoleOutStream;
diff --git a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/editors/automake/AutomakeConfigMacro.java b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/editors/automake/AutomakeConfigMacro.java
index 939265c2fa7..1b7592d60c8 100644
--- a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/editors/automake/AutomakeConfigMacro.java
+++ b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/editors/automake/AutomakeConfigMacro.java
@@ -28,6 +28,6 @@ public class AutomakeConfigMacro extends Directive {
@Override
public String toString() {
- return name + "\n";
+ return name + "\n"; //$NON-NLS-1$
}
}
diff --git a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/editors/automake/AutomakeErrorHandler.java b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/editors/automake/AutomakeErrorHandler.java
index 621f4d882be..352e8d4bad7 100644
--- a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/editors/automake/AutomakeErrorHandler.java
+++ b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/editors/automake/AutomakeErrorHandler.java
@@ -27,14 +27,14 @@ import org.eclipse.jface.text.source.AnnotationModel;
import org.eclipse.ui.IEditorInput;
public class AutomakeErrorHandler {
- public static final String AUTOMAKE_ERROR_MARKER_ID = AutotoolsUIPlugin.PLUGIN_ID + ".parsefileerror";
+ public static final String AUTOMAKE_ERROR_MARKER_ID = AutotoolsUIPlugin.PLUGIN_ID + ".parsefileerror"; //$NON-NLS-1$
private IDocument document;
private AnnotationModel fAnnotationModel;
- public static final String CDT_ANNOTATION_INFO = "org.eclipse.cdt.ui.info";
- public static final String CDT_ANNOTATION_WARNING = "org.eclipse.cdt.ui.warning";
- public static final String CDT_ANNOTATION_ERROR = "org.eclipse.cdt.ui.error";
+ public static final String CDT_ANNOTATION_INFO = "org.eclipse.cdt.ui.info"; //$NON-NLS-1$
+ public static final String CDT_ANNOTATION_WARNING = "org.eclipse.cdt.ui.warning"; //$NON-NLS-1$
+ public static final String CDT_ANNOTATION_ERROR = "org.eclipse.cdt.ui.error"; //$NON-NLS-1$
// TODO: no quickfixes yet implemented, but maybe in the future
private static class AutomakeAnnotation extends Annotation implements IQuickFixableAnnotation {
diff --git a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/editors/automake/AutomakeTextHover.java b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/editors/automake/AutomakeTextHover.java
index 24a0d3d0951..49727c3ed20 100644
--- a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/editors/automake/AutomakeTextHover.java
+++ b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/editors/automake/AutomakeTextHover.java
@@ -54,13 +54,13 @@ public class AutomakeTextHover implements ITextHover, ITextHoverExtension {
}
// Automatic variables
- if (hoverText.startsWith("$")) {
+ if (hoverText.startsWith("$")) { //$NON-NLS-1$
IDirective containingDirective = makefile.getDirectiveContainingLine(hoverLine);
if (containingDirective instanceof TargetRule) {
target = (TargetRule) containingDirective;
}
if (target == null)
- return "";
+ return ""; //$NON-NLS-1$
switch (hoverText.charAt(1)) {
case '@':
return target.getTarget().toString();
@@ -103,7 +103,7 @@ public class AutomakeTextHover implements ITextHover, ITextHoverExtension {
}
}
- return "";
+ return ""; //$NON-NLS-1$
}
@Override
diff --git a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/editors/automake/AutomakefileCodeScanner.java b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/editors/automake/AutomakefileCodeScanner.java
index 5c220704ded..ce0f48e64e5 100644
--- a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/editors/automake/AutomakefileCodeScanner.java
+++ b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/editors/automake/AutomakefileCodeScanner.java
@@ -33,20 +33,17 @@ import org.eclipse.jface.text.rules.WordRule;
public class AutomakefileCodeScanner extends AbstractMakefileCodeScanner {
- private final static String[] keywords = { "define", "endef", "ifdef", "ifndef", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
- "ifeq", "ifneq", "else", "endif", "include", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
- "-include", "sinclude", "override", "endef", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
- "export", "unexport", "vpath", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- "if", "@if", "@endif" }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-
- private final static String[] functions = { "subst", "patsubst", "strip", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- "findstring", "filter", "sort", "dir", "notdir", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
- "suffix", "basename", "addsuffix", "addprefix", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
- "join", "word", "words", "wordlist", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
- "firstword", "wildcard", "error", "warning", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
- "shell", "origin", "foreach", "call" //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
- };
+ @SuppressWarnings("nls")
+ private final static String[] keywords = { "define", "endef", "ifdef", "ifndef", "ifeq", "ifneq", "else", "endif",
+ "include", "-include", "sinclude", "override", "endef", "export", "unexport", "vpath", "if", "@if",
+ "@endif" };
+ @SuppressWarnings("nls")
+ private final static String[] functions = { "subst", "patsubst", "strip", "findstring", "filter", "sort", "dir",
+ "notdir", "suffix", "basename", "addsuffix", "addprefix", "join", "word", "words", "wordlist", "firstword",
+ "wildcard", "error", "warning", "shell", "origin", "foreach", "call" };
+
+ @SuppressWarnings("nls")
private final static String[] automaticVariables = { "$<", "$*", "$@", "$?", "$%" };
static final String[] fTokenProperties = new String[] { ColorManager.MAKE_COMMENT_COLOR,
@@ -117,7 +114,7 @@ public class AutomakefileCodeScanner extends AbstractMakefileCodeScanner {
rules.add(new AutoconfIdentifierRule(other));
// Make sure we don't treat "\#" as comment start.
- rules.add(new SingleLineRule("\\#", null, Token.UNDEFINED));
+ rules.add(new SingleLineRule("\\#", null, Token.UNDEFINED)); //$NON-NLS-1$
rules.add(new WhitespaceRule(new AutoconfWhitespaceDetector()));
diff --git a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/editors/automake/AutomakefileContentOutlinePage.java b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/editors/automake/AutomakefileContentOutlinePage.java
index 5e86a02d75d..3160bf7d118 100644
--- a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/editors/automake/AutomakefileContentOutlinePage.java
+++ b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/editors/automake/AutomakefileContentOutlinePage.java
@@ -189,10 +189,10 @@ public class AutomakefileContentOutlinePage extends ContentOutlinePage {
} else if (element instanceof AutomakeIfElse) {
AutomakeIfElse ifelse = (AutomakeIfElse) element;
// FIXME: make this not a string comparison
- if (ifelse.getType().equals("if")) {
- name = "if " + ifelse.getCondition();
+ if (ifelse.getType().equals("if")) { //$NON-NLS-1$
+ name = "if " + ifelse.getCondition(); //$NON-NLS-1$
} else
- name = "else";
+ name = "else"; //$NON-NLS-1$
} else if (element instanceof AutomakeConfigMacro) {
AutomakeConfigMacro macro = (AutomakeConfigMacro) element;
name = macro.getName();
diff --git a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/editors/automake/GNUAutomakefile.java b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/editors/automake/GNUAutomakefile.java
index 0ebd0f89875..e3d41e3588d 100644
--- a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/editors/automake/GNUAutomakefile.java
+++ b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/editors/automake/GNUAutomakefile.java
@@ -573,7 +573,7 @@ public class GNUAutomakefile extends AbstractMakefile implements IGNUMakefile {
* An Autoconf directive of the form @xxx@
*/
protected AutomakeConfigMacro parseConfigMacro(String line) {
- String extraChars = "_-";
+ String extraChars = "_-"; //$NON-NLS-1$
char[] ch = line.toCharArray();
int i = 1;
while (Character.isLetterOrDigit(ch[i]) || extraChars.indexOf(ch[i]) >= 0) {
@@ -646,7 +646,7 @@ public class GNUAutomakefile extends AbstractMakefile implements IGNUMakefile {
}
directories = dirs.toArray(new String[0]);
if (pattern == null) {
- pattern = "";
+ pattern = ""; //$NON-NLS-1$
}
return new VPath(this, pattern, directories);
}
diff --git a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/editors/automake/MakefilePartitionScanner.java b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/editors/automake/MakefilePartitionScanner.java
index cab5a77b6c3..0a0ef3acc2a 100644
--- a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/editors/automake/MakefilePartitionScanner.java
+++ b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/editors/automake/MakefilePartitionScanner.java
@@ -75,7 +75,7 @@ public class MakefilePartitionScanner extends RuleBasedPartitionScanner {
rules.add(new MultiLineRule("ifnneq", "endif", tIf)); //$NON-NLS-1$ //$NON-NLS-2$
// Last rule must be supplied with default token!
- rules.add(new MacroDefinitionRule(tMacro, tOther)); //$NON-NLS-1$
+ rules.add(new MacroDefinitionRule(tMacro, tOther));
IPredicateRule[] result = new IPredicateRule[rules.size()];
rules.toArray(result);
diff --git a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/editors/automake/NullMakefile.java b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/editors/automake/NullMakefile.java
index bd461cee641..3b832e0c511 100644
--- a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/editors/automake/NullMakefile.java
+++ b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/editors/automake/NullMakefile.java
@@ -59,7 +59,7 @@ public class NullMakefile extends AbstractMakefile {
@Override
public String toString() {
- return "";
+ return ""; //$NON-NLS-1$
}
@Override
diff --git a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/preferences/AbstractEditorPreferencePage.java b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/preferences/AbstractEditorPreferencePage.java
index 4ed3f92a270..f243f97dbb8 100644
--- a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/preferences/AbstractEditorPreferencePage.java
+++ b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/preferences/AbstractEditorPreferencePage.java
@@ -217,9 +217,9 @@ public abstract class AbstractEditorPreferencePage extends PreferencePage implem
try {
int value = Integer.parseInt(number);
if (value < 0)
- status.setError(MessageFormat.format(errorMessages[1], new Object[] { number })); //$NON-NLS-1$
+ status.setError(MessageFormat.format(errorMessages[1], new Object[] { number }));
} catch (NumberFormatException e) {
- status.setError(MessageFormat.format(errorMessages[1], new Object[] { number })); //$NON-NLS-1$
+ status.setError(MessageFormat.format(errorMessages[1], new Object[] { number }));
}
}
return status;
diff --git a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/preferences/AutoconfEditorPreferencePage.java b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/preferences/AutoconfEditorPreferencePage.java
index 424e1ee087b..bc375d8afac 100644
--- a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/preferences/AutoconfEditorPreferencePage.java
+++ b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/preferences/AutoconfEditorPreferencePage.java
@@ -18,7 +18,6 @@ package org.eclipse.cdt.internal.autotools.ui.preferences;
import java.util.ArrayList;
import java.util.List;
-import org.eclipse.cdt.autotools.ui.AutotoolsUIPlugin;
import org.eclipse.cdt.make.ui.IMakeHelpContextIds;
import org.eclipse.cdt.ui.PreferenceConstants;
import org.eclipse.jface.preference.IPreferenceStore;
@@ -31,6 +30,8 @@ import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CTabFolder;
+import org.eclipse.swt.custom.CTabItem;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Color;
@@ -42,8 +43,7 @@ import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.TabFolder;
-import org.eclipse.swt.widgets.TabItem;
+import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.model.WorkbenchViewerComparator;
/**
@@ -52,9 +52,11 @@ import org.eclipse.ui.model.WorkbenchViewerComparator;
*/
public class AutoconfEditorPreferencePage extends AbstractEditorPreferencePage {
+ @SuppressWarnings("nls")
private static String[] fACVersions = { "2.13", "2.59", "2.61", "2.68" };
public static final String LATEST_AC_VERSION = fACVersions[fACVersions.length - 1];
+ @SuppressWarnings("nls")
private static String[] fAMVersions = { "1.4-p6", "1.9.5", "1.9.6", "1.11.1" };
public static final String LATEST_AM_VERSION = fAMVersions[fAMVersions.length - 1];
@@ -252,26 +254,27 @@ public class AutoconfEditorPreferencePage extends AbstractEditorPreferencePage {
@Override
protected Control createContents(Composite parent) {
- AutotoolsUIPlugin.getDefault().getWorkbench().getHelpSystem().setHelp(getControl(),
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(getControl(),
IMakeHelpContextIds.MAKE_EDITOR_PREFERENCE_PAGE);
getOverlayStore().load();
getOverlayStore().start();
- TabFolder folder = new TabFolder(parent, SWT.NONE);
+ CTabFolder folder = new CTabFolder(parent, SWT.NONE);
folder.setLayout(new TabFolderLayout());
folder.setLayoutData(new GridData(GridData.FILL_BOTH));
- TabItem item = new TabItem(folder, SWT.NONE);
+ CTabItem item = new CTabItem(folder, SWT.NONE);
+ folder.setSelection(0);
item.setText(AutotoolsPreferencesMessages.getString("AutomakeEditorPreferencePage.syntax")); //$NON-NLS-1$
item.setControl(createSyntaxPage(folder));
- item = new TabItem(folder, SWT.NONE);
+ item = new CTabItem(folder, SWT.NONE);
item.setText(AutotoolsPreferencesMessages.getString("AutoconfEditorPreferencePage.folding")); //$NON-NLS-1$
item.setControl(createFoldingTabContent(folder));
// Allow end-user to select which version of autoconf to use for hover help
// and syntax checking of macros.
- item = new TabItem(folder, SWT.NONE);
+ item = new CTabItem(folder, SWT.NONE);
item.setText(AutotoolsPreferencesMessages.getString("AutoconfEditorPreferencePage.version")); //$NON-NLS-1$
item.setControl(createVersionTabContent(folder));
@@ -445,7 +448,7 @@ public class AutoconfEditorPreferencePage extends AbstractEditorPreferencePage {
return colorComposite;
}
- private Composite createFoldingTabContent(TabFolder folder) {
+ private Composite createFoldingTabContent(CTabFolder folder) {
Composite composite = new Composite(folder, SWT.NULL);
// assume parent page uses griddata
GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_CENTER | GridData.VERTICAL_ALIGN_FILL);
@@ -472,7 +475,7 @@ public class AutoconfEditorPreferencePage extends AbstractEditorPreferencePage {
return composite;
}
- private Composite createVersionTabContent(TabFolder folder) {
+ private Composite createVersionTabContent(CTabFolder folder) {
Composite composite = new Composite(folder, SWT.NULL);
// assume parent page uses griddata
GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_CENTER | GridData.VERTICAL_ALIGN_FILL);
diff --git a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/preferences/AutomakeEditorPreferencePage.java b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/preferences/AutomakeEditorPreferencePage.java
index c5c5aad6d8d..2d3e47358d0 100644
--- a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/preferences/AutomakeEditorPreferencePage.java
+++ b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/preferences/AutomakeEditorPreferencePage.java
@@ -18,7 +18,6 @@ package org.eclipse.cdt.internal.autotools.ui.preferences;
import java.util.ArrayList;
import java.util.List;
-import org.eclipse.cdt.autotools.ui.AutotoolsUIPlugin;
import org.eclipse.cdt.make.ui.IMakeHelpContextIds;
import org.eclipse.cdt.ui.PreferenceConstants;
import org.eclipse.jface.preference.IPreferenceStore;
@@ -31,6 +30,8 @@ import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CTabFolder;
+import org.eclipse.swt.custom.CTabItem;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Color;
@@ -41,8 +42,7 @@ import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.TabFolder;
-import org.eclipse.swt.widgets.TabItem;
+import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.model.WorkbenchViewerComparator;
/**
@@ -233,20 +233,21 @@ public class AutomakeEditorPreferencePage extends AbstractEditorPreferencePage {
@Override
protected Control createContents(Composite parent) {
- AutotoolsUIPlugin.getDefault().getWorkbench().getHelpSystem().setHelp(getControl(),
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(getControl(),
IMakeHelpContextIds.MAKE_EDITOR_PREFERENCE_PAGE);
getOverlayStore().load();
getOverlayStore().start();
- TabFolder folder = new TabFolder(parent, SWT.NONE);
+ CTabFolder folder = new CTabFolder(parent, SWT.NONE);
folder.setLayout(new TabFolderLayout());
folder.setLayoutData(new GridData(GridData.FILL_BOTH));
- TabItem item = new TabItem(folder, SWT.NONE);
+ CTabItem item = new CTabItem(folder, SWT.NONE);
+ folder.setSelection(0);
item.setText(AutotoolsPreferencesMessages.getString("AutomakeEditorPreferencePage.syntax")); //$NON-NLS-1$
item.setControl(createSyntaxPage(folder));
- item = new TabItem(folder, SWT.NONE);
+ item = new CTabItem(folder, SWT.NONE);
item.setText(AutotoolsPreferencesMessages.getString("AutomakeEditorPreferencePage.folding")); //$NON-NLS-1$
item.setControl(createFoldingTabContent(folder));
@@ -380,7 +381,7 @@ public class AutomakeEditorPreferencePage extends AbstractEditorPreferencePage {
return colorComposite;
}
- private Composite createFoldingTabContent(TabFolder folder) {
+ private Composite createFoldingTabContent(CTabFolder folder) {
Composite composite = new Composite(folder, SWT.NULL);
// assume parent page uses griddata
GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_CENTER | GridData.VERTICAL_ALIGN_FILL);
diff --git a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/preferences/AutotoolsEditorPreferenceConstants.java b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/preferences/AutotoolsEditorPreferenceConstants.java
index f25e4f793dd..ff52c98b411 100644
--- a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/preferences/AutotoolsEditorPreferenceConstants.java
+++ b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/preferences/AutotoolsEditorPreferenceConstants.java
@@ -59,9 +59,9 @@ public class AutotoolsEditorPreferenceConstants {
public static final String EDITOR_FOLDING_ENABLED = "editor_folding_enabled"; //$NON-NLS-1$
- public static final String AUTOCONF_VERSION = "autoconf_version";
+ public static final String AUTOCONF_VERSION = "autoconf_version"; //$NON-NLS-1$
- public static final String AUTOMAKE_VERSION = "automake_version";
+ public static final String AUTOMAKE_VERSION = "automake_version"; //$NON-NLS-1$
public static void initializeDefaultValues(IPreferenceStore store) {
diff --git a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/properties/AutotoolsBuildPropertyPage.java b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/properties/AutotoolsBuildPropertyPage.java
index b394401485e..96970d81c87 100644
--- a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/properties/AutotoolsBuildPropertyPage.java
+++ b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/properties/AutotoolsBuildPropertyPage.java
@@ -70,7 +70,7 @@ public class AutotoolsBuildPropertyPage extends AbstractCBuildPropertyTab {
composite.setLayout(layout);
Group g = new Group(composite, SWT.SHADOW_ETCHED_IN);
- g.setText(AutotoolsPropertyMessages.getString("CleanBehavior.title"));
+ g.setText(AutotoolsPropertyMessages.getString("CleanBehavior.title")); //$NON-NLS-1$
gd = new GridData(
GridData.HORIZONTAL_ALIGN_CENTER | GridData.VERTICAL_ALIGN_BEGINNING | GridData.FILL_HORIZONTAL);
gd.horizontalSpan = 2;
diff --git a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/properties/AutotoolsCategoryPropertyOptionPage.java b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/properties/AutotoolsCategoryPropertyOptionPage.java
index b0e137a947b..674c29cee97 100644
--- a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/properties/AutotoolsCategoryPropertyOptionPage.java
+++ b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/properties/AutotoolsCategoryPropertyOptionPage.java
@@ -43,7 +43,7 @@ import org.eclipse.swt.widgets.Text;
public class AutotoolsCategoryPropertyOptionPage extends AbstractConfigurePropertyOptionsPage {
private static final int MARGIN = 3;
- private String catName = "";
+ private String catName = ""; //$NON-NLS-1$
private IAConfiguration cfg;
// Label class for a preference page.
@@ -153,7 +153,7 @@ public class AutotoolsCategoryPropertyOptionPage extends AbstractConfigureProper
@Override
protected void configureShell(Shell newShell) {
super.configureShell(newShell);
- newShell.setText(AutotoolsPropertyMessages.getString("NewEnvVarDialog.title"));
+ newShell.setText(AutotoolsPropertyMessages.getString("NewEnvVarDialog.title")); //$NON-NLS-1$
}
@Override
@@ -171,7 +171,7 @@ public class AutotoolsCategoryPropertyOptionPage extends AbstractConfigureProper
int fieldWidthHint = convertWidthInCharsToPixels(metrics, 50);
Label label = new Label(composite, SWT.NONE);
- label.setText(AutotoolsPropertyMessages.getString("NewEnvVarDialog.name_field"));
+ label.setText(AutotoolsPropertyMessages.getString("NewEnvVarDialog.name_field")); //$NON-NLS-1$
fTextName = new Text(composite, SWT.SINGLE | SWT.BORDER);
GridData gd = new GridData(GridData.FILL_BOTH);
gd.grabExcessHorizontalSpace = true;
@@ -188,7 +188,7 @@ public class AutotoolsCategoryPropertyOptionPage extends AbstractConfigureProper
}
});
label = new Label(composite, SWT.NONE);
- label.setText(AutotoolsPropertyMessages.getString("NewEnvVarDialog.value_field"));
+ label.setText(AutotoolsPropertyMessages.getString("NewEnvVarDialog.value_field")); //$NON-NLS-1$
fTextValue = new Text(composite, SWT.SINGLE | SWT.BORDER);
gd = new GridData(GridData.FILL_BOTH);
gd.grabExcessHorizontalSpace = true;
diff --git a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/properties/AutotoolsConfigurePrefStore.java b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/properties/AutotoolsConfigurePrefStore.java
index 4630aa371b9..5cef750f1b5 100644
--- a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/properties/AutotoolsConfigurePrefStore.java
+++ b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/properties/AutotoolsConfigurePrefStore.java
@@ -26,7 +26,7 @@ import org.eclipse.jface.util.PropertyChangeEvent;
*/
public class AutotoolsConfigurePrefStore implements IPreferenceStore {
- public final static String EMPTY_STRING = "";
+ public final static String EMPTY_STRING = ""; //$NON-NLS-1$
public final static String ALL_OPTIONS_ID = EMPTY_STRING;
private static AutotoolsConfigurePrefStore instance = null;
diff --git a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/properties/AutotoolsConfigurePropertyTab.java b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/properties/AutotoolsConfigurePropertyTab.java
index 03a985a6636..5632d2c0b53 100644
--- a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/properties/AutotoolsConfigurePropertyTab.java
+++ b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/properties/AutotoolsConfigurePropertyTab.java
@@ -120,7 +120,7 @@ public class AutotoolsConfigurePropertyTab extends AbstractAutotoolsCPropertyTab
fTree.addSelectionChangedListener(event -> handleOptionSelection());
fTree.getControl().setLayoutData(new GridData(GridData.FILL_BOTH));
// Create a temporary default AutotoolsConfiguration to use for label info
- IAConfiguration tmp = AutotoolsConfigurationManager.getInstance().createDefaultConfiguration("");
+ IAConfiguration tmp = AutotoolsConfigurationManager.getInstance().createDefaultConfiguration(""); //$NON-NLS-1$
fTree.setLabelProvider(new ToolListLabelProvider(tmp));
}
diff --git a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/properties/AutotoolsEditorPropertyTab.java b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/properties/AutotoolsEditorPropertyTab.java
index 72d2963bc60..fd148b990a6 100644
--- a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/properties/AutotoolsEditorPropertyTab.java
+++ b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/properties/AutotoolsEditorPropertyTab.java
@@ -92,8 +92,8 @@ public class AutotoolsEditorPropertyTab extends AbstractAutotoolsCPropertyTab {
acVer = project.getPersistentProperty(AutotoolsPropertyConstants.AUTOCONF_VERSION);
amVer = project.getPersistentProperty(AutotoolsPropertyConstants.AUTOMAKE_VERSION);
} catch (CoreException e) {
- acVer = "";
- amVer = "";
+ acVer = ""; //$NON-NLS-1$
+ amVer = ""; //$NON-NLS-1$
}
int index = fACVersionCombo.getSelectionIndex();
String acVerSelected = fACVersionCombo.getItem(index);
@@ -179,7 +179,7 @@ public class AutotoolsEditorPropertyTab extends AbstractAutotoolsCPropertyTab {
}
void initializeACVersion() {
- String version = "";
+ String version = ""; //$NON-NLS-1$
try {
version = project.getPersistentProperty(AutotoolsPropertyConstants.AUTOCONF_VERSION);
if (version == null)
@@ -202,7 +202,7 @@ public class AutotoolsEditorPropertyTab extends AbstractAutotoolsCPropertyTab {
}
void initializeAMVersion() {
- String version = "";
+ String version = ""; //$NON-NLS-1$
try {
version = project.getPersistentProperty(AutotoolsPropertyConstants.AUTOMAKE_VERSION);
if (version == null)
diff --git a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/properties/AutotoolsToolPropertyOptionPage.java b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/properties/AutotoolsToolPropertyOptionPage.java
index c982fc7969f..541c2467a04 100644
--- a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/properties/AutotoolsToolPropertyOptionPage.java
+++ b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/properties/AutotoolsToolPropertyOptionPage.java
@@ -29,7 +29,7 @@ import org.eclipse.swt.widgets.Composite;
public class AutotoolsToolPropertyOptionPage extends AbstractConfigurePropertyOptionsPage {
private static final int MARGIN = 3;
- private String toolName = "";
+ private String toolName = ""; //$NON-NLS-1$
private IAConfiguration cfg;
public AutotoolsToolPropertyOptionPage(ToolListElement element, IAConfiguration cfg) {
diff --git a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/properties/AutotoolsToolsPropertyTab.java b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/properties/AutotoolsToolsPropertyTab.java
index 39931cc1419..d72ab455d91 100644
--- a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/properties/AutotoolsToolsPropertyTab.java
+++ b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/properties/AutotoolsToolsPropertyTab.java
@@ -89,7 +89,7 @@ public class AutotoolsToolsPropertyTab extends AbstractAutotoolsCPropertyTab {
/* text window for automake path */
fAutomakePath = new Text(composite, SWT.BORDER | SWT.SINGLE);
- fAutomakePath.setToolTipText(AutotoolsPropertyMessages.getString("Autotools.automakePath.tooltip")); //$NON-NLS-1#
+ fAutomakePath.setToolTipText(AutotoolsPropertyMessages.getString("Autotools.automakePath.tooltip")); //$NON-NLS-1$
gd = new GridData(
GridData.HORIZONTAL_ALIGN_BEGINNING | GridData.VERTICAL_ALIGN_BEGINNING | GridData.FILL_HORIZONTAL);
fAutomakePath.setLayoutData(gd);
diff --git a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/text/hover/AutoconfTextHover.java b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/text/hover/AutoconfTextHover.java
index 9217a88d08b..39ce54a840c 100644
--- a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/text/hover/AutoconfTextHover.java
+++ b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/text/hover/AutoconfTextHover.java
@@ -73,8 +73,8 @@ import org.xml.sax.SAXException;
public class AutoconfTextHover implements ITextHover, ITextHoverExtension {
- public static final String LOCAL_AUTOCONF_MACROS_DOC_NAME = "macros/acmacros";
- public static final String LOCAL_AUTOMAKE_MACROS_DOC_NAME = "macros/ammacros";
+ public static final String LOCAL_AUTOCONF_MACROS_DOC_NAME = "macros/acmacros"; //$NON-NLS-1$
+ public static final String LOCAL_AUTOMAKE_MACROS_DOC_NAME = "macros/ammacros"; //$NON-NLS-1$
public static final String AUTOCONF_MACROS_DOC_NAME = "http://www.sourceware.org/eclipse/autotools/acmacros"; //$NON-NLS-1$
public static final String AUTOMAKE_MACROS_DOC_NAME = "http://www.sourceware.org/eclipse/autotools/ammacros"; //$NON-NLS-1$
@@ -296,7 +296,7 @@ public class AutoconfTextHover implements ITextHover, ITextHoverExtension {
Element elem = document.getElementById(name);
if (null != elem) {
int prototypeCount = 0;
- buffer.append("<B>Macro:</B> ").append(name);
+ buffer.append("<B>Macro:</B> ").append(name); //$NON-NLS-1$
NodeList nl = elem.getChildNodes();
for (int i = 0; i < nl.getLength(); ++i) {
Node n = nl.item(i);
@@ -305,11 +305,11 @@ public class AutoconfTextHover implements ITextHover, ITextHoverExtension {
StringBuilder prototype = new StringBuilder();
++prototypeCount;
if (prototypeCount == 1) {
- buffer.append(" (");
+ buffer.append(" ("); //$NON-NLS-1$
} else {
- buffer.append(" <B>or</B> "); //$NON-NLS-2$
+ buffer.append(" <B>or</B> "); //$NON-NLS-1$
buffer.append(name);
- buffer.append(" (<I>"); //$NON-NLS-2$
+ buffer.append(" (<I>"); //$NON-NLS-1$
}
NodeList varList = n.getChildNodes();
for (int j = 0; j < varList.getLength(); ++j) {
@@ -322,14 +322,14 @@ public class AutoconfTextHover implements ITextHover, ITextHoverExtension {
if (prototype.length() == 0)
prototype.append(parm);
else
- prototype.append(", ").append(parm);
+ prototype.append(", ").append(parm); //$NON-NLS-1$
}
}
buffer.append(prototype).append("</I>)<br>"); //$NON-NLS-1$
}
if (nodeName.equals("synopsis")) { //$NON-NLS-1$
Node textNode = n.getLastChild();
- buffer.append("<br><B>Synopsis:</B> ");
+ buffer.append("<br><B>Synopsis:</B> "); //$NON-NLS-1$
buffer.append(textNode.getNodeValue());
}
}
@@ -444,11 +444,11 @@ public class AutoconfTextHover implements ITextHover, ITextHoverExtension {
String parm = parmNode.getNodeValue();
// Check for first optional parameter which means
// we know the minimum number of parameters needed.
- if (minParmCount < 0 && (parm.charAt(0) == '[' || parm.startsWith("...")))
+ if (minParmCount < 0 && (parm.charAt(0) == '[' || parm.startsWith("..."))) //$NON-NLS-1$
minParmCount = parmCount - 1;
// Old style documentation sometimes had '[' in
// prototypes so look for one at end of a parm too.
- else if (minParmCount < 0 && parm.endsWith("["))
+ else if (minParmCount < 0 && parm.endsWith("[")) //$NON-NLS-1$
minParmCount = parmCount;
p.setParmName(prototypeCount, parmCount - 1, parm);
}
diff --git a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/wizards/AutotoolsProjectImportWizard.java b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/wizards/AutotoolsProjectImportWizard.java
index 69b7c15ebb5..ab02f917558 100644
--- a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/wizards/AutotoolsProjectImportWizard.java
+++ b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/wizards/AutotoolsProjectImportWizard.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2015 Mentor Graphics Corporation.
+ * Copyright (c) 2015, 2020 Mentor Graphics Corporation.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -130,7 +130,7 @@ public class AutotoolsProjectImportWizard extends NewMakeProjFromExisting {
CfgHolder cfgHolder = new CfgHolder(toolChain, null);
String s = toolChain == null ? "0" : ((ToolChain) toolChain).getId(); //$NON-NLS-1$
- Configuration config = new Configuration(mProj, (ToolChain) toolChain,
+ Configuration config = new Configuration(mProj, toolChain,
ManagedBuildManager.calculateChildId(s, null), cfgHolder.getName());
IBuilder builder = config.getEditableBuilder();
builder.setManagedBuildOn(false);
diff --git a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/wizards/AutotoolsProjectImportWizardPage.java b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/wizards/AutotoolsProjectImportWizardPage.java
index 501032e3603..d71a7c1d37b 100644
--- a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/wizards/AutotoolsProjectImportWizardPage.java
+++ b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/wizards/AutotoolsProjectImportWizardPage.java
@@ -50,8 +50,8 @@ public class AutotoolsProjectImportWizardPage extends NewMakeProjFromExistingPag
private Button langcpp;
protected AutotoolsProjectImportWizardPage() {
- setTitle(AutotoolsWizardMessages.getResourceString("ImportWizardPage.title"));
- setDescription(AutotoolsWizardMessages.getResourceString("ImportWizardPage.description"));
+ setTitle(AutotoolsWizardMessages.getResourceString("ImportWizardPage.title")); //$NON-NLS-1$
+ setDescription(AutotoolsWizardMessages.getResourceString("ImportWizardPage.description")); //$NON-NLS-1$
}
protected IProjectType getProjectType() {
@@ -110,10 +110,10 @@ public class AutotoolsProjectImportWizardPage extends NewMakeProjFromExistingPag
AutotoolsUIPlugin.getResourceString("WizardMakeProjectConversion.monitor.convertingToMakeProject"), 7); //$NON-NLS-1$
IConfiguration defaultCfg = null;
try {
- monitor.subTask(AutotoolsUIPlugin.getResourceString("adding project nature"));
+ monitor.subTask(AutotoolsUIPlugin.getResourceString("adding project nature")); //$NON-NLS-1$
ManagedCProjectNature.addManagedNature(project, SubMonitor.convert(monitor, 1));
AutotoolsNewProjectNature.addAutotoolsNature(project, SubMonitor.convert(monitor, 1));
- monitor.subTask(AutotoolsUIPlugin.getResourceString("adding builder"));
+ monitor.subTask(AutotoolsUIPlugin.getResourceString("adding builder")); //$NON-NLS-1$
AutotoolsNewProjectNature.addAutotoolsBuilder(project, SubMonitor.convert(monitor, 1));
project.setPersistentProperty(AutotoolsPropertyConstants.SCANNER_USE_MAKE_W,
AutotoolsPropertyConstants.TRUE);
@@ -167,7 +167,7 @@ public class AutotoolsProjectImportWizardPage extends NewMakeProjFromExistingPag
}
// Save the build options
- monitor.subTask(AutotoolsUIPlugin.getResourceString("saving project"));
+ monitor.subTask(AutotoolsUIPlugin.getResourceString("saving project")); //$NON-NLS-1$
if (info != null) {
info.setValid(true);
ManagedBuildManager.saveBuildInfo(project, true);
diff --git a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/wizards/ConfigurationLabelProvider.java b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/wizards/ConfigurationLabelProvider.java
index 172691d0fc2..ef3d3a40c6c 100644
--- a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/wizards/ConfigurationLabelProvider.java
+++ b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/wizards/ConfigurationLabelProvider.java
@@ -34,7 +34,7 @@ public class ConfigurationLabelProvider extends LabelProvider implements ITableL
else
return (tmpConfig.getName() + " ( " + tmpConfig.getDescription() + " )"); //$NON-NLS-1$ //$NON-NLS-2$
}
- return "";
+ return ""; //$NON-NLS-1$
}
@Override
diff --git a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/wizards/ConvertToAutotoolsProjectWizardPage.java b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/wizards/ConvertToAutotoolsProjectWizardPage.java
index ef85c2263d3..282c4d9d633 100644
--- a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/wizards/ConvertToAutotoolsProjectWizardPage.java
+++ b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/wizards/ConvertToAutotoolsProjectWizardPage.java
@@ -55,9 +55,9 @@ import org.eclipse.ui.wizards.newresource.BasicNewResourceWizard;
*/
public class ConvertToAutotoolsProjectWizardPage extends ConvertProjectWizardPage {
- private static final String WZ_TITLE = "WizardAutotoolsProjectConversion.title"; //$NON-NLS-1$
- private static final String WZ_DESC = "WizardAutotoolsProjectConversion.description"; //$NON-NLS-1$
- private static final String PREFIX = "WizardAutotoolsProjectConversion";
+ private static final String PREFIX = "WizardAutotoolsProjectConversion"; //$NON-NLS-1$
+ private static final String WZ_TITLE = PREFIX + ".title"; //$NON-NLS-1$
+ private static final String WZ_DESC = PREFIX + ".description"; //$NON-NLS-1$
protected static final String MSG_ADD_NATURE = PREFIX + ".message.add_nature"; //$NON-NLS-1$
protected static final String MSG_ADD_BUILDER = PREFIX + ".message.add_builder"; //$NON-NLS-1$
protected static final String MSG_SAVE = PREFIX + ".message.save"; //$NON-NLS-1$
diff --git a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/wizards/ReferenceBlock.java b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/wizards/ReferenceBlock.java
index 6177dabacfe..928d4bc024b 100644
--- a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/wizards/ReferenceBlock.java
+++ b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/wizards/ReferenceBlock.java
@@ -171,7 +171,7 @@ public class ReferenceBlock extends AbstractCOptionPage {
if (monitor == null) {
monitor = new NullProgressMonitor();
}
- monitor.beginTask(AutotoolsWizardMessages.getResourceString("ReferenceBlock_task_ReferenceProjects"), 1);
+ monitor.beginTask(AutotoolsWizardMessages.getResourceString("ReferenceBlock_task_ReferenceProjects"), 1); //$NON-NLS-1$
try {
IProjectDescription description = project.getDescription();
description.setReferencedProjects(refProjects);
diff --git a/build/org.eclipse.cdt.build.gcc.core/.classpath b/build/org.eclipse.cdt.build.gcc.core/.classpath
index eca7bdba8f0..e801ebfb468 100644
--- a/build/org.eclipse.cdt.build.gcc.core/.classpath
+++ b/build/org.eclipse.cdt.build.gcc.core/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/build/org.eclipse.cdt.build.gcc.core/.project b/build/org.eclipse.cdt.build.gcc.core/.project
index 46346d9b6c1..64c0a4ab47c 100644
--- a/build/org.eclipse.cdt.build.gcc.core/.project
+++ b/build/org.eclipse.cdt.build.gcc.core/.project
@@ -20,9 +20,15 @@
<arguments>
</arguments>
</buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.pde.PluginNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
</natures>
</projectDescription>
diff --git a/build/org.eclipse.cdt.build.gcc.core/.settings/org.eclipse.core.resources.prefs b/build/org.eclipse.cdt.build.gcc.core/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/build/org.eclipse.cdt.build.gcc.core/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/build/org.eclipse.cdt.build.gcc.core/.settings/org.eclipse.jdt.core.prefs b/build/org.eclipse.cdt.build.gcc.core/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/build/org.eclipse.cdt.build.gcc.core/.settings/org.eclipse.jdt.core.prefs
+++ b/build/org.eclipse.cdt.build.gcc.core/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/build/org.eclipse.cdt.build.gcc.core/.settings/org.eclipse.jdt.ui.prefs b/build/org.eclipse.cdt.build.gcc.core/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/build/org.eclipse.cdt.build.gcc.core/.settings/org.eclipse.jdt.ui.prefs
+++ b/build/org.eclipse.cdt.build.gcc.core/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/build/org.eclipse.cdt.build.gcc.core/META-INF/MANIFEST.MF b/build/org.eclipse.cdt.build.gcc.core/META-INF/MANIFEST.MF
index d2a8e38ba5c..c087af01fa4 100644
--- a/build/org.eclipse.cdt.build.gcc.core/META-INF/MANIFEST.MF
+++ b/build/org.eclipse.cdt.build.gcc.core/META-INF/MANIFEST.MF
@@ -1,15 +1,17 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
-Bundle-Name: GCC support for CDT Build Core
+Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.build.gcc.core;singleton:=true
-Bundle-Version: 1.0.200.qualifier
+Bundle-Version: 1.1.100.qualifier
Bundle-Activator: org.eclipse.cdt.build.gcc.core.internal.Activator
-Bundle-Vendor: Eclipse CDT
+Bundle-Vendor: %providerName
Require-Bundle: org.eclipse.core.runtime,
org.eclipse.core.resources;bundle-version="3.10.0",
org.eclipse.cdt.core;bundle-version="5.12.0",
com.google.gson
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-ActivationPolicy: lazy
-Export-Package: org.eclipse.cdt.build.gcc.core
+Export-Package: org.eclipse.cdt.build.gcc.core,
+ org.eclipse.cdt.build.gcc.core.internal;x-internal:=true
Automatic-Module-Name: org.eclipse.cdt.build.gcc.core
+Bundle-Localization: plugin
diff --git a/build/org.eclipse.cdt.build.gcc.core/about.html b/build/org.eclipse.cdt.build.gcc.core/about.html
index 164f781a8fd..b3134865230 100644
--- a/build/org.eclipse.cdt.build.gcc.core/about.html
+++ b/build/org.eclipse.cdt.build.gcc.core/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/build/org.eclipse.cdt.build.gcc.core/build.properties b/build/org.eclipse.cdt.build.gcc.core/build.properties
index e5a949cc43c..7b3c227b84a 100644
--- a/build/org.eclipse.cdt.build.gcc.core/build.properties
+++ b/build/org.eclipse.cdt.build.gcc.core/build.properties
@@ -3,5 +3,6 @@ output.. = bin/
bin.includes = META-INF/,\
.,\
plugin.xml,\
+ plugin.properties,\
about.html
src.includes = about.html
diff --git a/build/org.eclipse.cdt.build.gcc.core/plugin.properties b/build/org.eclipse.cdt.build.gcc.core/plugin.properties
new file mode 100644
index 00000000000..bd22dec05f7
--- /dev/null
+++ b/build/org.eclipse.cdt.build.gcc.core/plugin.properties
@@ -0,0 +1,14 @@
+##################################################################################
+# Copyright (c) 2020 Torbjörn Svensson and others. All rights reserved.
+# This program and the accompanying materials are made available under the terms
+# of the Eclipse Public License 2.0 which accompanies this distribution, and is
+# available at https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Torbjörn Svensson - initial API and implementation
+##################################################################################
+
+pluginName = GCC support for CDT Build Core
+providerName = Eclipse CDT
diff --git a/build/org.eclipse.cdt.build.gcc.core/src/org/eclipse/cdt/build/gcc/core/GCCToolChain.java b/build/org.eclipse.cdt.build.gcc.core/src/org/eclipse/cdt/build/gcc/core/GCCToolChain.java
index 16fff2dd9bf..8b1631594f6 100644
--- a/build/org.eclipse.cdt.build.gcc.core/src/org/eclipse/cdt/build/gcc/core/GCCToolChain.java
+++ b/build/org.eclipse.cdt.build.gcc.core/src/org/eclipse/cdt/build/gcc/core/GCCToolChain.java
@@ -122,7 +122,7 @@ public class GCCToolChain extends PlatformObject implements IToolChain {
IEnvironmentVariable pathVar = null;
if (envVars != null) {
for (IEnvironmentVariable envVar : envVars) {
- if (envVar.getName().equalsIgnoreCase("PATH")) { //$NON-NLS-1$
+ if (envVar.getName().equals("PATH")) { //$NON-NLS-1$
pathVar = envVar;
}
}
diff --git a/build/org.eclipse.cdt.build.gcc.core/src/org/eclipse/cdt/build/gcc/core/internal/GCCPathToolChainProvider.java b/build/org.eclipse.cdt.build.gcc.core/src/org/eclipse/cdt/build/gcc/core/internal/GCCPathToolChainProvider.java
index 3ba8b73df42..9f4cedd39c6 100644
--- a/build/org.eclipse.cdt.build.gcc.core/src/org/eclipse/cdt/build/gcc/core/internal/GCCPathToolChainProvider.java
+++ b/build/org.eclipse.cdt.build.gcc.core/src/org/eclipse/cdt/build/gcc/core/internal/GCCPathToolChainProvider.java
@@ -77,10 +77,10 @@ public class GCCPathToolChainProvider implements IToolChainProvider {
break;
default:
switch (tuple[2]) {
- case "linux":
+ case "linux": //$NON-NLS-1$
gcc.setProperty(IToolChain.ATTR_OS, Platform.OS_LINUX);
break;
- case "elf":
+ case "elf": //$NON-NLS-1$
gcc.setProperty(IToolChain.ATTR_OS, tuple[1]);
break;
}
diff --git a/build/org.eclipse.cdt.build.gcc.ui/.classpath b/build/org.eclipse.cdt.build.gcc.ui/.classpath
index eca7bdba8f0..e801ebfb468 100644
--- a/build/org.eclipse.cdt.build.gcc.ui/.classpath
+++ b/build/org.eclipse.cdt.build.gcc.ui/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/build/org.eclipse.cdt.build.gcc.ui/.project b/build/org.eclipse.cdt.build.gcc.ui/.project
index 4142880ab75..85f34a22b81 100644
--- a/build/org.eclipse.cdt.build.gcc.ui/.project
+++ b/build/org.eclipse.cdt.build.gcc.ui/.project
@@ -20,9 +20,15 @@
<arguments>
</arguments>
</buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.pde.PluginNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
</natures>
</projectDescription>
diff --git a/build/org.eclipse.cdt.build.gcc.ui/.settings/org.eclipse.core.resources.prefs b/build/org.eclipse.cdt.build.gcc.ui/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/build/org.eclipse.cdt.build.gcc.ui/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/build/org.eclipse.cdt.build.gcc.ui/.settings/org.eclipse.jdt.core.prefs b/build/org.eclipse.cdt.build.gcc.ui/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/build/org.eclipse.cdt.build.gcc.ui/.settings/org.eclipse.jdt.core.prefs
+++ b/build/org.eclipse.cdt.build.gcc.ui/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/build/org.eclipse.cdt.build.gcc.ui/.settings/org.eclipse.jdt.ui.prefs b/build/org.eclipse.cdt.build.gcc.ui/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/build/org.eclipse.cdt.build.gcc.ui/.settings/org.eclipse.jdt.ui.prefs
+++ b/build/org.eclipse.cdt.build.gcc.ui/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/build/org.eclipse.cdt.build.gcc.ui/META-INF/MANIFEST.MF b/build/org.eclipse.cdt.build.gcc.ui/META-INF/MANIFEST.MF
index 1627c39fa20..0c15a8ae8d3 100644
--- a/build/org.eclipse.cdt.build.gcc.ui/META-INF/MANIFEST.MF
+++ b/build/org.eclipse.cdt.build.gcc.ui/META-INF/MANIFEST.MF
@@ -1,15 +1,17 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
-Bundle-Name: GCC ToolChain Support UI
+Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.build.gcc.ui;singleton:=true
-Bundle-Version: 1.0.100.qualifier
+Bundle-Version: 1.1.300.qualifier
Bundle-Activator: org.eclipse.cdt.build.gcc.ui.internal.Activator
-Bundle-Vendor: Eclipse CDT
+Bundle-Vendor: %providerName
Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime,
org.eclipse.cdt.ui;bundle-version="6.3.0",
org.eclipse.cdt.build.gcc.core;bundle-version="1.0.0",
org.eclipse.cdt.core;bundle-version="6.4.0"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-ActivationPolicy: lazy
Automatic-Module-Name: org.eclipse.cdt.build.gcc.ui
+Export-Package: org.eclipse.cdt.build.gcc.ui.internal;x-internal:=true
+Bundle-Localization: plugin
diff --git a/build/org.eclipse.cdt.build.gcc.ui/about.html b/build/org.eclipse.cdt.build.gcc.ui/about.html
index 164f781a8fd..b3134865230 100644
--- a/build/org.eclipse.cdt.build.gcc.ui/about.html
+++ b/build/org.eclipse.cdt.build.gcc.ui/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/upc/org.eclipse.cdt.core.parser.upc/about.ini b/build/org.eclipse.cdt.build.gcc.ui/about.ini
index e07a7bb377e..e07a7bb377e 100644
--- a/upc/org.eclipse.cdt.core.parser.upc/about.ini
+++ b/build/org.eclipse.cdt.build.gcc.ui/about.ini
diff --git a/build/org.eclipse.cdt.build.gcc.ui/about.mappings b/build/org.eclipse.cdt.build.gcc.ui/about.mappings
new file mode 100644
index 00000000000..936a8039c3e
--- /dev/null
+++ b/build/org.eclipse.cdt.build.gcc.ui/about.mappings
@@ -0,0 +1,9 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+# The following should contain the build version.
+# e.g. "0=20200106-1728"
+# This value will be added automatically via the build scripts
+0=${buildId}
diff --git a/build/org.eclipse.cdt.build.gcc.ui/about.properties b/build/org.eclipse.cdt.build.gcc.ui/about.properties
new file mode 100644
index 00000000000..049ff5d1575
--- /dev/null
+++ b/build/org.eclipse.cdt.build.gcc.ui/about.properties
@@ -0,0 +1,32 @@
+###############################################################################
+# Copyright (c) 2008, 2022 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+# about.properties
+# contains externalized strings for about.ini
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# fill-ins are supplied by about.mappings
+# This file should be translated.
+# NOTE TO TRANSLATOR: Please do not translate the featureVersion variable.
+
+
+blurb=C/C++ GNU Toolchain Build Support\n\
+\n\
+Version: {featureVersion}\n\
+Build id: {0}\n\
+\n\
+Copyright (c) 2008, 2022 Contributors to the Eclipse Foundation
+\n\
+See the NOTICE file(s) distributed with this work for additional\n\
+information regarding copyright ownership.\n\
+\n\
+Visit http://www.eclipse.org/cdt
diff --git a/build/org.eclipse.cdt.build.gcc.ui/build.properties b/build/org.eclipse.cdt.build.gcc.ui/build.properties
index e5a949cc43c..6751059433d 100644
--- a/build/org.eclipse.cdt.build.gcc.ui/build.properties
+++ b/build/org.eclipse.cdt.build.gcc.ui/build.properties
@@ -3,5 +3,10 @@ output.. = bin/
bin.includes = META-INF/,\
.,\
plugin.xml,\
- about.html
+ plugin.properties,\
+ about.html,\
+ cdt_logo_icon32.png,\
+ about.properties,\
+ about.mappings,\
+ about.ini
src.includes = about.html
diff --git a/upc/org.eclipse.cdt.core.parser.upc/cdt_logo_icon32.png b/build/org.eclipse.cdt.build.gcc.ui/cdt_logo_icon32.png
index 470ca81b327..470ca81b327 100644
--- a/upc/org.eclipse.cdt.core.parser.upc/cdt_logo_icon32.png
+++ b/build/org.eclipse.cdt.build.gcc.ui/cdt_logo_icon32.png
Binary files differ
diff --git a/build/org.eclipse.cdt.build.gcc.ui/plugin.properties b/build/org.eclipse.cdt.build.gcc.ui/plugin.properties
new file mode 100644
index 00000000000..1c265fb6a49
--- /dev/null
+++ b/build/org.eclipse.cdt.build.gcc.ui/plugin.properties
@@ -0,0 +1,14 @@
+##################################################################################
+# Copyright (c) 2020 Torbjörn Svensson and others. All rights reserved.
+# This program and the accompanying materials are made available under the terms
+# of the Eclipse Public License 2.0 which accompanies this distribution, and is
+# available at https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Torbjörn Svensson - initial API and implementation
+##################################################################################
+
+pluginName = GCC ToolChain Support UI
+providerName = Eclipse CDT
diff --git a/build/org.eclipse.cdt.cmake-feature/feature.xml b/build/org.eclipse.cdt.cmake-feature/feature.xml
deleted file mode 100644
index b17b4b97828..00000000000
--- a/build/org.eclipse.cdt.cmake-feature/feature.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
- id="org.eclipse.cdt.cmake"
- label="%featureName"
- version="9.10.0.qualifier"
- provider-name="%providerName"
- license-feature="org.eclipse.license"
- license-feature-version="0.0.0">
-
- <description>
- %description
- </description>
-
- <copyright>
- %copyright
- </copyright>
-
- <license url="%licenseURL">
- %license
- </license>
-
- <plugin
- id="org.eclipse.cdt.cmake.core"
- download-size="0"
- install-size="0"
- version="0.0.0"
- unpack="false"/>
-
- <plugin
- id="org.eclipse.cdt.cmake.ui"
- download-size="0"
- install-size="0"
- version="0.0.0"
- unpack="false"/>
-
- <plugin
- id="org.eclipse.tools.templates.freemarker.java11"
- download-size="0"
- install-size="0"
- version="0.0.0"
- fragment="true"
- unpack="false"/>
-
-</feature>
diff --git a/build/org.eclipse.cdt.cmake.core/.classpath b/build/org.eclipse.cdt.cmake.core/.classpath
deleted file mode 100644
index eca7bdba8f0..00000000000
--- a/build/org.eclipse.cdt.cmake.core/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
- <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/build/org.eclipse.cdt.cmake.core/.project b/build/org.eclipse.cdt.cmake.core/.project
deleted file mode 100644
index f5c8e485e7b..00000000000
--- a/build/org.eclipse.cdt.cmake.core/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.cdt.cmake.core</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.ManifestBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.SchemaBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.pde.PluginNature</nature>
- <nature>org.eclipse.jdt.core.javanature</nature>
- </natures>
-</projectDescription>
diff --git a/build/org.eclipse.cdt.cmake.core/.settings/org.eclipse.jdt.core.prefs b/build/org.eclipse.cdt.cmake.core/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 2b6ecff8a01..00000000000
--- a/build/org.eclipse.cdt.cmake.core/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,464 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
-org.eclipse.jdt.core.codeComplete.argumentPrefixes=
-org.eclipse.jdt.core.codeComplete.argumentSuffixes=
-org.eclipse.jdt.core.codeComplete.fieldPrefixes=
-org.eclipse.jdt.core.codeComplete.fieldSuffixes=
-org.eclipse.jdt.core.codeComplete.localPrefixes=
-org.eclipse.jdt.core.codeComplete.localSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
-org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
-org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
-org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
-org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
-org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
-org.eclipse.jdt.core.compiler.problem.APILeak=warning
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
-org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
-org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
-org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
-org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
-org.eclipse.jdt.core.compiler.problem.nullReference=error
-org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
-org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
-org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
-org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
-org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
-org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
-org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
-org.eclipse.jdt.core.formatter.align_with_spaces=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
-org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
-org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
-org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
-org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=0
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
-org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
-org.eclipse.jdt.core.formatter.comment.format_block_comments=false
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
-org.eclipse.jdt.core.formatter.comment.format_line_comments=false
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
-org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
-org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
-org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.join_lines_in_comments=true
-org.eclipse.jdt.core.formatter.join_wrapped_lines=true
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=120
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_on_off_tags=true
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
-org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
-org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/build/org.eclipse.cdt.cmake.core/.settings/org.eclipse.jdt.ui.prefs b/build/org.eclipse.cdt.cmake.core/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index e44576346c4..00000000000
--- a/build/org.eclipse.cdt.cmake.core/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,133 +0,0 @@
-cleanup.add_default_serial_version_id=true
-cleanup.add_generated_serial_version_id=false
-cleanup.add_missing_annotations=true
-cleanup.add_missing_deprecated_annotations=true
-cleanup.add_missing_methods=false
-cleanup.add_missing_nls_tags=false
-cleanup.add_missing_override_annotations=true
-cleanup.add_missing_override_annotations_interface_methods=true
-cleanup.add_serial_version_id=false
-cleanup.always_use_blocks=true
-cleanup.always_use_parentheses_in_expressions=false
-cleanup.always_use_this_for_non_static_field_access=false
-cleanup.always_use_this_for_non_static_method_access=false
-cleanup.convert_functional_interfaces=false
-cleanup.convert_to_enhanced_for_loop=false
-cleanup.correct_indentation=false
-cleanup.format_source_code=true
-cleanup.format_source_code_changes_only=false
-cleanup.insert_inferred_type_arguments=false
-cleanup.make_local_variable_final=true
-cleanup.make_parameters_final=false
-cleanup.make_private_fields_final=true
-cleanup.make_type_abstract_if_missing_method=false
-cleanup.make_variable_declarations_final=false
-cleanup.never_use_blocks=false
-cleanup.never_use_parentheses_in_expressions=true
-cleanup.organize_imports=true
-cleanup.qualify_static_field_accesses_with_declaring_class=false
-cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-cleanup.qualify_static_member_accesses_with_declaring_class=false
-cleanup.qualify_static_method_accesses_with_declaring_class=false
-cleanup.remove_private_constructors=true
-cleanup.remove_redundant_modifiers=false
-cleanup.remove_redundant_semicolons=true
-cleanup.remove_redundant_type_arguments=true
-cleanup.remove_trailing_whitespaces=true
-cleanup.remove_trailing_whitespaces_all=true
-cleanup.remove_trailing_whitespaces_ignore_empty=false
-cleanup.remove_unnecessary_casts=true
-cleanup.remove_unnecessary_nls_tags=false
-cleanup.remove_unused_imports=true
-cleanup.remove_unused_local_variables=false
-cleanup.remove_unused_private_fields=true
-cleanup.remove_unused_private_members=false
-cleanup.remove_unused_private_methods=true
-cleanup.remove_unused_private_types=true
-cleanup.sort_members=false
-cleanup.sort_members_all=false
-cleanup.use_anonymous_class_creation=false
-cleanup.use_blocks=false
-cleanup.use_blocks_only_for_return_and_throw=false
-cleanup.use_lambda=true
-cleanup.use_parentheses_in_expressions=false
-cleanup.use_this_for_non_static_field_access=false
-cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-cleanup.use_this_for_non_static_method_access=false
-cleanup.use_this_for_non_static_method_access_only_if_necessary=true
-cleanup_profile=_CDT
-cleanup_settings_version=2
-eclipse.preferences.version=1
-editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=_CDT
-formatter_settings_version=14
-internal.default.compliance=user
-org.eclipse.jdt.ui.exception.name=e
-org.eclipse.jdt.ui.gettersetter.use.is=true
-org.eclipse.jdt.ui.ignorelowercasenames=true
-org.eclipse.jdt.ui.importorder=java;javax;org;com;
-org.eclipse.jdt.ui.keywordthis=false
-org.eclipse.jdt.ui.ondemandthreshold=1000
-org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.staticondemandthreshold=1000
-org.eclipse.jdt.ui.text.custom_code_templates=
-sp_cleanup.add_default_serial_version_id=true
-sp_cleanup.add_generated_serial_version_id=false
-sp_cleanup.add_missing_annotations=true
-sp_cleanup.add_missing_deprecated_annotations=true
-sp_cleanup.add_missing_methods=false
-sp_cleanup.add_missing_nls_tags=false
-sp_cleanup.add_missing_override_annotations=true
-sp_cleanup.add_missing_override_annotations_interface_methods=true
-sp_cleanup.add_serial_version_id=false
-sp_cleanup.always_use_blocks=true
-sp_cleanup.always_use_parentheses_in_expressions=false
-sp_cleanup.always_use_this_for_non_static_field_access=false
-sp_cleanup.always_use_this_for_non_static_method_access=false
-sp_cleanup.convert_functional_interfaces=false
-sp_cleanup.convert_to_enhanced_for_loop=false
-sp_cleanup.correct_indentation=false
-sp_cleanup.format_source_code=true
-sp_cleanup.format_source_code_changes_only=false
-sp_cleanup.insert_inferred_type_arguments=false
-sp_cleanup.make_local_variable_final=true
-sp_cleanup.make_parameters_final=false
-sp_cleanup.make_private_fields_final=true
-sp_cleanup.make_type_abstract_if_missing_method=false
-sp_cleanup.make_variable_declarations_final=false
-sp_cleanup.never_use_blocks=false
-sp_cleanup.never_use_parentheses_in_expressions=true
-sp_cleanup.on_save_use_additional_actions=true
-sp_cleanup.organize_imports=true
-sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
-sp_cleanup.remove_private_constructors=true
-sp_cleanup.remove_redundant_modifiers=false
-sp_cleanup.remove_redundant_semicolons=true
-sp_cleanup.remove_redundant_type_arguments=true
-sp_cleanup.remove_trailing_whitespaces=true
-sp_cleanup.remove_trailing_whitespaces_all=true
-sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
-sp_cleanup.remove_unnecessary_casts=true
-sp_cleanup.remove_unnecessary_nls_tags=false
-sp_cleanup.remove_unused_imports=true
-sp_cleanup.remove_unused_local_variables=false
-sp_cleanup.remove_unused_private_fields=true
-sp_cleanup.remove_unused_private_members=false
-sp_cleanup.remove_unused_private_methods=true
-sp_cleanup.remove_unused_private_types=true
-sp_cleanup.sort_members=false
-sp_cleanup.sort_members_all=false
-sp_cleanup.use_anonymous_class_creation=false
-sp_cleanup.use_blocks=false
-sp_cleanup.use_blocks_only_for_return_and_throw=false
-sp_cleanup.use_lambda=true
-sp_cleanup.use_parentheses_in_expressions=false
-sp_cleanup.use_this_for_non_static_field_access=false
-sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-sp_cleanup.use_this_for_non_static_method_access=false
-sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/build/org.eclipse.cdt.cmake.core/META-INF/MANIFEST.MF b/build/org.eclipse.cdt.cmake.core/META-INF/MANIFEST.MF
deleted file mode 100644
index 0b2c2f5dad8..00000000000
--- a/build/org.eclipse.cdt.cmake.core/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,19 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: CDT CMake Core
-Bundle-SymbolicName: org.eclipse.cdt.cmake.core;singleton:=true
-Bundle-Version: 1.2.300.qualifier
-Bundle-Activator: org.eclipse.cdt.cmake.core.internal.Activator
-Bundle-Vendor: Eclipse CDT
-Require-Bundle: org.eclipse.core.runtime,
- org.eclipse.core.resources;bundle-version="3.11.0",
- org.eclipse.debug.core;bundle-version="3.10.0",
- org.eclipse.launchbar.core;bundle-version="2.0.0",
- org.eclipse.cdt.core;bundle-version="5.12.0",
- org.eclipse.tools.templates.freemarker;bundle-version="1.0.0";visibility:=reexport,
- com.google.gson
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Bundle-ActivationPolicy: lazy
-Export-Package: org.eclipse.cdt.cmake.core,
- org.eclipse.cdt.cmake.core.internal;x-friends:="org.eclipse.cdt.cmake.ui"
-Automatic-Module-Name: org.eclipse.cdt.cmake.core
diff --git a/build/org.eclipse.cdt.cmake.core/about.html b/build/org.eclipse.cdt.cmake.core/about.html
deleted file mode 100644
index 164f781a8fd..00000000000
--- a/build/org.eclipse.cdt.cmake.core/about.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
-</head>
-<body lang="EN-US">
- <h2>About This Content</h2>
-
- <p>November 30, 2017</p>
- <h3>License</h3>
-
- <p>
- The Eclipse Foundation makes available all content in this plug-in
- (&quot;Content&quot;). Unless otherwise indicated below, the Content
- is provided to you under the terms and conditions of the Eclipse
- Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
- For purposes of the EPL, &quot;Program&quot; will mean the Content.
- </p>
-
- <p>
- If you did not receive this Content directly from the Eclipse
- Foundation, the Content is being redistributed by another party
- (&quot;Redistributor&quot;) and different terms and conditions may
- apply to your use of any object code in the Content. Check the
- Redistributor's license that was provided with the Content. If no such
- license exists, contact the Redistributor. Unless otherwise indicated
- below, the terms and conditions of the EPL still apply to any source
- code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
- </p>
-
-</body>
-</html> \ No newline at end of file
diff --git a/build/org.eclipse.cdt.cmake.core/build.properties b/build/org.eclipse.cdt.cmake.core/build.properties
deleted file mode 100644
index 183351cbe19..00000000000
--- a/build/org.eclipse.cdt.cmake.core/build.properties
+++ /dev/null
@@ -1,9 +0,0 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
- .,\
- about.html,\
- plugin.xml,\
- schema/,\
- templates/
-src.includes = about.html
diff --git a/build/org.eclipse.cdt.cmake.core/plugin.xml b/build/org.eclipse.cdt.cmake.core/plugin.xml
deleted file mode 100644
index b907d39959a..00000000000
--- a/build/org.eclipse.cdt.cmake.core/plugin.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.4"?>
-<plugin>
- <extension-point id="toolChainProvider" name="CMake ToolChain File Provider" schema="schema/toolChainProvider.exsd"/>
- <extension
- id="cmakeNature"
- point="org.eclipse.core.resources.natures">
- <runtime>
- <run
- class="org.eclipse.cdt.cmake.core.CMakeNature">
- </run>
- </runtime>
- </extension>
- <extension
- point="org.eclipse.cdt.core.buildConfigProvider">
- <provider
- class="org.eclipse.cdt.cmake.core.internal.CMakeBuildConfigurationProvider"
- id="org.eclipse.cdt.cmake.core.provider"
- natureId="org.eclipse.cdt.cmake.core.cmakeNature">
- </provider>
- </extension>
-</plugin>
diff --git a/build/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CMakeBuildConfiguration.java b/build/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CMakeBuildConfiguration.java
deleted file mode 100644
index b695684af21..00000000000
--- a/build/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CMakeBuildConfiguration.java
+++ /dev/null
@@ -1,338 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015, 2016 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.cdt.cmake.core.internal;
-
-import java.io.File;
-import java.io.FileReader;
-import java.io.IOException;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.cdt.cmake.core.ICMakeToolChainFile;
-import org.eclipse.cdt.cmake.core.ICMakeToolChainManager;
-import org.eclipse.cdt.core.ConsoleOutputStream;
-import org.eclipse.cdt.core.ErrorParserManager;
-import org.eclipse.cdt.core.IConsoleParser;
-import org.eclipse.cdt.core.build.CBuildConfiguration;
-import org.eclipse.cdt.core.build.IToolChain;
-import org.eclipse.cdt.core.envvar.EnvironmentVariable;
-import org.eclipse.cdt.core.envvar.IEnvironmentVariable;
-import org.eclipse.cdt.core.model.ICModelMarker;
-import org.eclipse.cdt.core.resources.IConsole;
-import org.eclipse.cdt.utils.Platform;
-import org.eclipse.core.resources.IBuildConfiguration;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.jobs.Job;
-
-import com.google.gson.Gson;
-
-public class CMakeBuildConfiguration extends CBuildConfiguration {
-
- public static final String CMAKE_GENERATOR = "cmake.generator"; //$NON-NLS-1$
- public static final String CMAKE_ARGUMENTS = "cmake.arguments"; //$NON-NLS-1$
- public static final String CMAKE_ENV = "cmake.environment"; //$NON-NLS-1$
- public static final String BUILD_COMMAND = "cmake.command.build"; //$NON-NLS-1$
- public static final String CLEAN_COMMAND = "cmake.command.clean"; //$NON-NLS-1$
-
- private ICMakeToolChainFile toolChainFile;
-
- public CMakeBuildConfiguration(IBuildConfiguration config, String name) throws CoreException {
- super(config, name);
-
- ICMakeToolChainManager manager = Activator.getService(ICMakeToolChainManager.class);
- toolChainFile = manager.getToolChainFileFor(getToolChain());
- }
-
- public CMakeBuildConfiguration(IBuildConfiguration config, String name, IToolChain toolChain) {
- this(config, name, toolChain, null, "run"); //$NON-NLS-1$
- }
-
- public CMakeBuildConfiguration(IBuildConfiguration config, String name, IToolChain toolChain,
- ICMakeToolChainFile toolChainFile, String launchMode) {
- super(config, name, toolChain, launchMode);
- this.toolChainFile = toolChainFile;
- }
-
- public ICMakeToolChainFile getToolChainFile() {
- return toolChainFile;
- }
-
- private boolean isLocal() throws CoreException {
- IToolChain toolchain = getToolChain();
- return (Platform.getOS().equals(toolchain.getProperty(IToolChain.ATTR_OS))
- || "linux-container".equals(toolchain.getProperty(IToolChain.ATTR_OS))) //$NON-NLS-1$
- && (Platform.getOSArch().equals(toolchain.getProperty(IToolChain.ATTR_ARCH)));
- }
-
- @Override
- public IProject[] build(int kind, Map<String, String> args, IConsole console, IProgressMonitor monitor)
- throws CoreException {
- IProject project = getProject();
-
- try {
- String generator = getProperty(CMAKE_GENERATOR);
- if (generator == null) {
- generator = "Ninja"; //$NON-NLS-1$
- }
-
- project.deleteMarkers(ICModelMarker.C_MODEL_PROBLEM_MARKER, false, IResource.DEPTH_INFINITE);
-
- ConsoleOutputStream outStream = console.getOutputStream();
-
- Path buildDir = getBuildDirectory();
-
- outStream.write(String.format(Messages.CMakeBuildConfiguration_BuildingIn, buildDir.toString()));
-
- // Make sure we have a toolchain file if cross
- if (toolChainFile == null && !isLocal()) {
- ICMakeToolChainManager manager = Activator.getService(ICMakeToolChainManager.class);
- toolChainFile = manager.getToolChainFileFor(getToolChain());
-
- if (toolChainFile == null) {
- // error
- console.getErrorStream().write(Messages.CMakeBuildConfiguration_NoToolchainFile);
- return null;
- }
- }
-
- boolean runCMake;
- switch (generator) {
- case "Ninja": //$NON-NLS-1$
- runCMake = !Files.exists(buildDir.resolve("build.ninja")); //$NON-NLS-1$
- break;
- case "Unix Makefiles": //$NON-NLS-1$
- runCMake = !Files.exists(buildDir.resolve("Makefile")); //$NON-NLS-1$
- break;
- default:
- runCMake = !Files.exists(buildDir.resolve("CMakeFiles")); //$NON-NLS-1$
- }
-
- if (runCMake) { // $NON-NLS-1$
-
- console.getOutputStream().write(String.format(Messages.CMakeBuildConfiguration_Configuring, buildDir));
- // clean output to make sure there is no content
- // incompatible with current settings (cmake config would fail)
- cleanBuildDirectory(buildDir);
-
- List<String> command = new ArrayList<>();
-
- command.add("cmake"); //$NON-NLS-1$
- command.add("-G"); //$NON-NLS-1$
- command.add(generator);
-
- if (toolChainFile != null) {
- command.add("-DCMAKE_TOOLCHAIN_FILE=" + toolChainFile.getPath().toString()); //$NON-NLS-1$
- }
-
- switch (getLaunchMode()) {
- // TODO what to do with other modes
- case "debug": //$NON-NLS-1$
- command.add("-DCMAKE_BUILD_TYPE=Debug"); //$NON-NLS-1$
- break;
- case "run": //$NON-NLS-1$
- command.add("-DCMAKE_BUILD_TYPE=Release"); //$NON-NLS-1$
- break;
- }
- command.add("-DCMAKE_EXPORT_COMPILE_COMMANDS=ON"); //$NON-NLS-1$
-
- String userArgs = getProperty(CMAKE_ARGUMENTS);
- if (userArgs != null) {
- command.addAll(Arrays.asList(userArgs.trim().split("\\s+"))); //$NON-NLS-1$
- }
-
- command.add(new File(project.getLocationURI()).getAbsolutePath());
-
- outStream.write(String.join(" ", command) + '\n'); //$NON-NLS-1$
-
- org.eclipse.core.runtime.Path workingDir = new org.eclipse.core.runtime.Path(
- getBuildDirectory().toString());
- Process p = startBuildProcess(command, new IEnvironmentVariable[0], workingDir, console, monitor);
- if (p == null) {
- console.getErrorStream().write(String.format(Messages.CMakeBuildConfiguration_Failure, "")); //$NON-NLS-1$
- return null;
- }
-
- watchProcess(p, console);
- }
-
- try (ErrorParserManager epm = new ErrorParserManager(project, getBuildDirectoryURI(), this,
- getToolChain().getErrorParserIds())) {
- epm.setOutputStream(console.getOutputStream());
-
- List<String> command = new ArrayList<>();
-
- String envStr = getProperty(CMAKE_ENV);
- List<IEnvironmentVariable> envVars = new ArrayList<>();
- if (envStr != null) {
- List<String> envList = CMakeUtils.stripEnvVars(envStr);
- for (String s : envList) {
- int index = s.indexOf("="); //$NON-NLS-1$
- if (index == -1) {
- envVars.add(new EnvironmentVariable(s));
- } else {
- envVars.add(new EnvironmentVariable(s.substring(0, index), s.substring(index + 1)));
- }
- }
- }
-
- String buildCommand = getProperty(BUILD_COMMAND);
- if (buildCommand == null) {
- command.add("cmake"); //$NON-NLS-1$
- command.add("--build"); //$NON-NLS-1$
- command.add("."); //$NON-NLS-1$
- if ("Ninja".equals(generator)) { //$NON-NLS-1$
- command.add("--"); //$NON-NLS-1$
- command.add("-v"); //$NON-NLS-1$
- }
- } else {
- command.addAll(Arrays.asList(buildCommand.split(" "))); //$NON-NLS-1$
- }
-
- outStream.write(String.join(" ", command) + '\n'); //$NON-NLS-1$
-
- org.eclipse.core.runtime.Path workingDir = new org.eclipse.core.runtime.Path(
- getBuildDirectory().toString());
- Process p = startBuildProcess(command, envVars.toArray(new IEnvironmentVariable[0]), workingDir,
- console, monitor);
- if (p == null) {
- console.getErrorStream().write(String.format(Messages.CMakeBuildConfiguration_Failure, "")); //$NON-NLS-1$
- return null;
- }
-
- watchProcess(p, new IConsoleParser[] { epm });
-
- project.refreshLocal(IResource.DEPTH_INFINITE, monitor);
-
- // Load compile_commands.json file
- processCompileCommandsFile(monitor);
-
- outStream.write(String.format(Messages.CMakeBuildConfiguration_BuildingComplete, epm.getErrorCount(),
- epm.getWarningCount(), buildDir.toString()));
- }
-
- return new IProject[] { project };
- } catch (IOException e) {
- throw new CoreException(Activator
- .errorStatus(String.format(Messages.CMakeBuildConfiguration_Building, project.getName()), e));
- }
- }
-
- @Override
- public void clean(IConsole console, IProgressMonitor monitor) throws CoreException {
- IProject project = getProject();
- try {
- String generator = getProperty(CMAKE_GENERATOR);
-
- project.deleteMarkers(ICModelMarker.C_MODEL_PROBLEM_MARKER, false, IResource.DEPTH_INFINITE);
-
- ConsoleOutputStream outStream = console.getOutputStream();
-
- Path buildDir = getBuildDirectory();
-
- if (!Files.exists(buildDir.resolve("CMakeFiles"))) { //$NON-NLS-1$
- outStream.write(Messages.CMakeBuildConfiguration_NotFound);
- return;
- }
-
- List<String> command = new ArrayList<>();
- String cleanCommand = getProperty(CLEAN_COMMAND);
- if (cleanCommand == null) {
- if (generator == null || generator.equals("Ninja")) { //$NON-NLS-1$
- command.add("ninja"); //$NON-NLS-1$
- command.add("clean"); //$NON-NLS-1$
- } else {
- command.add("make"); //$NON-NLS-1$
- command.add("clean"); //$NON-NLS-1$
- }
- } else {
- command.addAll(Arrays.asList(cleanCommand.split(" "))); //$NON-NLS-1$
- }
-
- IEnvironmentVariable[] env = new IEnvironmentVariable[0];
-
- outStream.write(String.join(" ", command) + '\n'); //$NON-NLS-1$
-
- org.eclipse.core.runtime.Path workingDir = new org.eclipse.core.runtime.Path(
- getBuildDirectory().toString());
- Process p = startBuildProcess(command, env, workingDir, console, monitor);
- if (p == null) {
- console.getErrorStream().write(String.format(Messages.CMakeBuildConfiguration_Failure, "")); //$NON-NLS-1$
- return;
- }
-
- watchProcess(p, console);
-
- outStream.write(Messages.CMakeBuildConfiguration_BuildComplete);
-
- project.refreshLocal(IResource.DEPTH_INFINITE, monitor);
- } catch (IOException e) {
- throw new CoreException(Activator
- .errorStatus(String.format(Messages.CMakeBuildConfiguration_Cleaning, project.getName()), e));
- }
- }
-
- private void processCompileCommandsFile(IProgressMonitor monitor) throws CoreException {
- IProject project = getProject();
- Path commandsFile = getBuildDirectory().resolve("compile_commands.json"); //$NON-NLS-1$
- if (Files.exists(commandsFile)) {
- List<Job> jobsList = new ArrayList<>();
- monitor.setTaskName(Messages.CMakeBuildConfiguration_ProcCompJson);
- try (FileReader reader = new FileReader(commandsFile.toFile())) {
- Gson gson = new Gson();
- CompileCommand[] commands = gson.fromJson(reader, CompileCommand[].class);
- Map<String, CompileCommand> dedupedCmds = new HashMap<>();
- for (CompileCommand command : commands) {
- dedupedCmds.put(command.getFile(), command);
- }
- for (CompileCommand command : dedupedCmds.values()) {
- processLine(command.getCommand(), jobsList);
- }
- for (Job j : jobsList) {
- try {
- j.join();
- } catch (InterruptedException e) {
- // ignore
- }
- }
- shutdown();
- } catch (IOException e) {
- throw new CoreException(Activator.errorStatus(
- String.format(Messages.CMakeBuildConfiguration_ProcCompCmds, project.getName()), e));
- }
- }
- }
-
- private void cleanDirectory(Path dir) throws IOException {
- Path[] files = Files.list(dir).toArray(Path[]::new);
- for (Path file : files) {
- if (Files.isDirectory(file))
- cleanDirectory(file);
- else
- Files.delete(file);
- }
- }
-
- private void cleanBuildDirectory(Path buildDir) throws IOException {
- if (!Files.exists(buildDir))
- return;
- if (Files.isDirectory(buildDir))
- cleanDirectory(buildDir);
- // TODO: not a directory should we do something?
- }
-}
diff --git a/build/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CompileCommand.java b/build/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CompileCommand.java
deleted file mode 100644
index 81e7e95187a..00000000000
--- a/build/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CompileCommand.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.cdt.cmake.core.internal;
-
-public class CompileCommand {
-
- private String directory;
- private String command;
- private String file;
-
- public String getDirectory() {
- return directory;
- }
-
- public String getCommand() {
- return command;
- }
-
- public String getFile() {
- return file;
- }
-
-}
diff --git a/build/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/Messages.java b/build/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/Messages.java
deleted file mode 100644
index 18e2f1fddac..00000000000
--- a/build/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/Messages.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.cdt.cmake.core.internal;
-
-import org.eclipse.osgi.util.NLS;
-
-public class Messages extends NLS {
- private static final String BUNDLE_NAME = "org.eclipse.cdt.cmake.core.internal.messages"; //$NON-NLS-1$
- public static String CMakeBuildConfiguration_Building;
- public static String CMakeBuildConfiguration_BuildingIn;
- public static String CMakeBuildConfiguration_BuildingComplete;
- public static String CMakeBuildConfiguration_BuildComplete;
- public static String CMakeBuildConfiguration_Cleaning;
- public static String CMakeBuildConfiguration_Configuring;
- public static String CMakeBuildConfiguration_NotFound;
- public static String CMakeBuildConfiguration_NoToolchainFile;
- public static String CMakeBuildConfiguration_ProcCompCmds;
- public static String CMakeBuildConfiguration_ProcCompJson;
- public static String CMakeBuildConfiguration_Failure;
- static {
- // initialize resource bundle
- NLS.initializeMessages(BUNDLE_NAME, Messages.class);
- }
-
- private Messages() {
- }
-}
diff --git a/build/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/messages.properties b/build/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/messages.properties
deleted file mode 100644
index 7af6fa76592..00000000000
--- a/build/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/messages.properties
+++ /dev/null
@@ -1,21 +0,0 @@
-################################################################################
-# Copyright (c) 2016 QNX Software Systems and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-################################################################################
-CMakeBuildConfiguration_Building=Building %s
-CMakeBuildConfiguration_BuildingIn=Building in: %s\n
-CMakeBuildConfiguration_BuildingComplete=Build complete (%d errors, %d warnings): %s\n
-CMakeBuildConfiguration_BuildComplete=Build complete\n
-CMakeBuildConfiguration_Configuring=Configuring in: %s\n
-CMakeBuildConfiguration_Cleaning=Cleaning %s
-CMakeBuildConfiguration_NotFound=CMakeFiles not found. Assuming clean.
-CMakeBuildConfiguration_NoToolchainFile=No CMake toolchain file found for this target.
-CMakeBuildConfiguration_ProcCompCmds=Processing compile commands %s
-CMakeBuildConfiguration_ProcCompJson=Processing compile_commands.json
-CMakeBuildConfiguration_Failure=Failure running cmake: %s\n
diff --git a/build/org.eclipse.cdt.cmake.ui.tests/.classpath b/build/org.eclipse.cdt.cmake.ui.tests/.classpath
deleted file mode 100644
index eca7bdba8f0..00000000000
--- a/build/org.eclipse.cdt.cmake.ui.tests/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
- <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/build/org.eclipse.cdt.cmake.ui.tests/.settings/org.eclipse.jdt.core.prefs b/build/org.eclipse.cdt.cmake.ui.tests/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index ad05599159f..00000000000
--- a/build/org.eclipse.cdt.cmake.ui.tests/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,464 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
-org.eclipse.jdt.core.codeComplete.argumentPrefixes=
-org.eclipse.jdt.core.codeComplete.argumentSuffixes=
-org.eclipse.jdt.core.codeComplete.fieldPrefixes=
-org.eclipse.jdt.core.codeComplete.fieldSuffixes=
-org.eclipse.jdt.core.codeComplete.localPrefixes=
-org.eclipse.jdt.core.codeComplete.localSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
-org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
-org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
-org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
-org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
-org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
-org.eclipse.jdt.core.compiler.problem.APILeak=warning
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=ignore
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
-org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
-org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
-org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
-org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
-org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
-org.eclipse.jdt.core.compiler.problem.nullReference=error
-org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
-org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
-org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
-org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
-org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
-org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
-org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=ignore
-org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore
-org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
-org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
-org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
-org.eclipse.jdt.core.formatter.align_with_spaces=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
-org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
-org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
-org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
-org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=0
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
-org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
-org.eclipse.jdt.core.formatter.comment.format_block_comments=false
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
-org.eclipse.jdt.core.formatter.comment.format_line_comments=false
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
-org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
-org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
-org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.join_lines_in_comments=true
-org.eclipse.jdt.core.formatter.join_wrapped_lines=true
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=120
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_on_off_tags=true
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
-org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
-org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/build/org.eclipse.cdt.cmake.ui.tests/.settings/org.eclipse.jdt.ui.prefs b/build/org.eclipse.cdt.cmake.ui.tests/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index e44576346c4..00000000000
--- a/build/org.eclipse.cdt.cmake.ui.tests/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,133 +0,0 @@
-cleanup.add_default_serial_version_id=true
-cleanup.add_generated_serial_version_id=false
-cleanup.add_missing_annotations=true
-cleanup.add_missing_deprecated_annotations=true
-cleanup.add_missing_methods=false
-cleanup.add_missing_nls_tags=false
-cleanup.add_missing_override_annotations=true
-cleanup.add_missing_override_annotations_interface_methods=true
-cleanup.add_serial_version_id=false
-cleanup.always_use_blocks=true
-cleanup.always_use_parentheses_in_expressions=false
-cleanup.always_use_this_for_non_static_field_access=false
-cleanup.always_use_this_for_non_static_method_access=false
-cleanup.convert_functional_interfaces=false
-cleanup.convert_to_enhanced_for_loop=false
-cleanup.correct_indentation=false
-cleanup.format_source_code=true
-cleanup.format_source_code_changes_only=false
-cleanup.insert_inferred_type_arguments=false
-cleanup.make_local_variable_final=true
-cleanup.make_parameters_final=false
-cleanup.make_private_fields_final=true
-cleanup.make_type_abstract_if_missing_method=false
-cleanup.make_variable_declarations_final=false
-cleanup.never_use_blocks=false
-cleanup.never_use_parentheses_in_expressions=true
-cleanup.organize_imports=true
-cleanup.qualify_static_field_accesses_with_declaring_class=false
-cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-cleanup.qualify_static_member_accesses_with_declaring_class=false
-cleanup.qualify_static_method_accesses_with_declaring_class=false
-cleanup.remove_private_constructors=true
-cleanup.remove_redundant_modifiers=false
-cleanup.remove_redundant_semicolons=true
-cleanup.remove_redundant_type_arguments=true
-cleanup.remove_trailing_whitespaces=true
-cleanup.remove_trailing_whitespaces_all=true
-cleanup.remove_trailing_whitespaces_ignore_empty=false
-cleanup.remove_unnecessary_casts=true
-cleanup.remove_unnecessary_nls_tags=false
-cleanup.remove_unused_imports=true
-cleanup.remove_unused_local_variables=false
-cleanup.remove_unused_private_fields=true
-cleanup.remove_unused_private_members=false
-cleanup.remove_unused_private_methods=true
-cleanup.remove_unused_private_types=true
-cleanup.sort_members=false
-cleanup.sort_members_all=false
-cleanup.use_anonymous_class_creation=false
-cleanup.use_blocks=false
-cleanup.use_blocks_only_for_return_and_throw=false
-cleanup.use_lambda=true
-cleanup.use_parentheses_in_expressions=false
-cleanup.use_this_for_non_static_field_access=false
-cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-cleanup.use_this_for_non_static_method_access=false
-cleanup.use_this_for_non_static_method_access_only_if_necessary=true
-cleanup_profile=_CDT
-cleanup_settings_version=2
-eclipse.preferences.version=1
-editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=_CDT
-formatter_settings_version=14
-internal.default.compliance=user
-org.eclipse.jdt.ui.exception.name=e
-org.eclipse.jdt.ui.gettersetter.use.is=true
-org.eclipse.jdt.ui.ignorelowercasenames=true
-org.eclipse.jdt.ui.importorder=java;javax;org;com;
-org.eclipse.jdt.ui.keywordthis=false
-org.eclipse.jdt.ui.ondemandthreshold=1000
-org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.staticondemandthreshold=1000
-org.eclipse.jdt.ui.text.custom_code_templates=
-sp_cleanup.add_default_serial_version_id=true
-sp_cleanup.add_generated_serial_version_id=false
-sp_cleanup.add_missing_annotations=true
-sp_cleanup.add_missing_deprecated_annotations=true
-sp_cleanup.add_missing_methods=false
-sp_cleanup.add_missing_nls_tags=false
-sp_cleanup.add_missing_override_annotations=true
-sp_cleanup.add_missing_override_annotations_interface_methods=true
-sp_cleanup.add_serial_version_id=false
-sp_cleanup.always_use_blocks=true
-sp_cleanup.always_use_parentheses_in_expressions=false
-sp_cleanup.always_use_this_for_non_static_field_access=false
-sp_cleanup.always_use_this_for_non_static_method_access=false
-sp_cleanup.convert_functional_interfaces=false
-sp_cleanup.convert_to_enhanced_for_loop=false
-sp_cleanup.correct_indentation=false
-sp_cleanup.format_source_code=true
-sp_cleanup.format_source_code_changes_only=false
-sp_cleanup.insert_inferred_type_arguments=false
-sp_cleanup.make_local_variable_final=true
-sp_cleanup.make_parameters_final=false
-sp_cleanup.make_private_fields_final=true
-sp_cleanup.make_type_abstract_if_missing_method=false
-sp_cleanup.make_variable_declarations_final=false
-sp_cleanup.never_use_blocks=false
-sp_cleanup.never_use_parentheses_in_expressions=true
-sp_cleanup.on_save_use_additional_actions=true
-sp_cleanup.organize_imports=true
-sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
-sp_cleanup.remove_private_constructors=true
-sp_cleanup.remove_redundant_modifiers=false
-sp_cleanup.remove_redundant_semicolons=true
-sp_cleanup.remove_redundant_type_arguments=true
-sp_cleanup.remove_trailing_whitespaces=true
-sp_cleanup.remove_trailing_whitespaces_all=true
-sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
-sp_cleanup.remove_unnecessary_casts=true
-sp_cleanup.remove_unnecessary_nls_tags=false
-sp_cleanup.remove_unused_imports=true
-sp_cleanup.remove_unused_local_variables=false
-sp_cleanup.remove_unused_private_fields=true
-sp_cleanup.remove_unused_private_members=false
-sp_cleanup.remove_unused_private_methods=true
-sp_cleanup.remove_unused_private_types=true
-sp_cleanup.sort_members=false
-sp_cleanup.sort_members_all=false
-sp_cleanup.use_anonymous_class_creation=false
-sp_cleanup.use_blocks=false
-sp_cleanup.use_blocks_only_for_return_and_throw=false
-sp_cleanup.use_lambda=true
-sp_cleanup.use_parentheses_in_expressions=false
-sp_cleanup.use_this_for_non_static_field_access=false
-sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-sp_cleanup.use_this_for_non_static_method_access=false
-sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/build/org.eclipse.cdt.cmake.ui.tests/META-INF/MANIFEST.MF b/build/org.eclipse.cdt.cmake.ui.tests/META-INF/MANIFEST.MF
deleted file mode 100644
index da220c5bafd..00000000000
--- a/build/org.eclipse.cdt.cmake.ui.tests/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,12 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Tests
-Bundle-SymbolicName: org.eclipse.cdt.cmake.ui.tests
-Bundle-Version: 1.0.0.qualifier
-Bundle-Vendor: Eclipse CDT
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Require-Bundle: org.eclipse.swtbot.go;bundle-version="2.7.0",
- org.eclipse.cdt.core;bundle-version="6.4.0",
- org.eclipse.core.resources;bundle-version="3.12.0",
- org.eclipse.cdt.cmake.core;bundle-version="1.2.0"
-Automatic-Module-Name: org.eclipse.cdt.cmake.ui.tests
diff --git a/build/org.eclipse.cdt.cmake.ui.tests/about.html b/build/org.eclipse.cdt.cmake.ui.tests/about.html
deleted file mode 100644
index 164f781a8fd..00000000000
--- a/build/org.eclipse.cdt.cmake.ui.tests/about.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
-</head>
-<body lang="EN-US">
- <h2>About This Content</h2>
-
- <p>November 30, 2017</p>
- <h3>License</h3>
-
- <p>
- The Eclipse Foundation makes available all content in this plug-in
- (&quot;Content&quot;). Unless otherwise indicated below, the Content
- is provided to you under the terms and conditions of the Eclipse
- Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
- For purposes of the EPL, &quot;Program&quot; will mean the Content.
- </p>
-
- <p>
- If you did not receive this Content directly from the Eclipse
- Foundation, the Content is being redistributed by another party
- (&quot;Redistributor&quot;) and different terms and conditions may
- apply to your use of any object code in the Content. Check the
- Redistributor's license that was provided with the Content. If no such
- license exists, contact the Redistributor. Unless otherwise indicated
- below, the terms and conditions of the EPL still apply to any source
- code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
- </p>
-
-</body>
-</html> \ No newline at end of file
diff --git a/build/org.eclipse.cdt.cmake.ui.tests/build.properties b/build/org.eclipse.cdt.cmake.ui.tests/build.properties
deleted file mode 100644
index 8f7b5a7f00c..00000000000
--- a/build/org.eclipse.cdt.cmake.ui.tests/build.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
- .,\
- about.html,\
- swtbot-test-plugin.properties
-src.includes = about.html
diff --git a/build/org.eclipse.cdt.cmake.ui.tests/pom.xml b/build/org.eclipse.cdt.cmake.ui.tests/pom.xml
deleted file mode 100644
index 89cfaf7b340..00000000000
--- a/build/org.eclipse.cdt.cmake.ui.tests/pom.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
- xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <groupId>org.eclipse.cdt</groupId>
- <artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
- <relativePath>../../pom.xml</relativePath>
- </parent>
-
- <artifactId>org.eclipse.cdt.cmake.ui.tests</artifactId>
- <version>1.0.0-SNAPSHOT</version>
- <packaging>eclipse-test-plugin</packaging>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.eclipse.tycho</groupId>
- <artifactId>target-platform-configuration</artifactId>
- <version>${tycho-version}</version>
- <configuration>
- <dependency-resolution>
- <extraRequirements>
- <requirement>
- <type>p2-installable-unit</type>
- <id>org.eclipse.cdt.feature.group</id>
- <versionRange>0.0.0</versionRange>
- </requirement>
- <requirement>
- <type>p2-installable-unit</type>
- <id>org.eclipse.cdt.cmake.feature.group</id>
- <versionRange>0.0.0</versionRange>
- </requirement>
- </extraRequirements>
- </dependency-resolution>
- </configuration>
- </plugin>
- </plugins>
- </build>
-</project> \ No newline at end of file
diff --git a/build/org.eclipse.cdt.cmake.ui.tests/src/org/eclipse/cdt/cmake/ui/internal/tests/AutomatedIntegrationSuite.java b/build/org.eclipse.cdt.cmake.ui.tests/src/org/eclipse/cdt/cmake/ui/internal/tests/AutomatedIntegrationSuite.java
deleted file mode 100644
index 35460381c2f..00000000000
--- a/build/org.eclipse.cdt.cmake.ui.tests/src/org/eclipse/cdt/cmake/ui/internal/tests/AutomatedIntegrationSuite.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.cdt.cmake.ui.internal.tests;
-
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-
-@RunWith(Suite.class)
-@Suite.SuiteClasses({ NewCMakeProjectTest.class })
-public class AutomatedIntegrationSuite {
-
-}
diff --git a/build/org.eclipse.cdt.cmake.ui.tests/src/org/eclipse/cdt/cmake/ui/internal/tests/NewCMakeProjectTest.java b/build/org.eclipse.cdt.cmake.ui.tests/src/org/eclipse/cdt/cmake/ui/internal/tests/NewCMakeProjectTest.java
deleted file mode 100644
index 0f18d9b54ec..00000000000
--- a/build/org.eclipse.cdt.cmake.ui.tests/src/org/eclipse/cdt/cmake/ui/internal/tests/NewCMakeProjectTest.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.cdt.cmake.ui.internal.tests;
-
-import static org.eclipse.swtbot.eclipse.finder.matchers.WidgetMatcherFactory.withPartName;
-import static org.junit.Assert.assertTrue;
-
-import org.eclipse.cdt.cmake.core.CMakeNature;
-import org.eclipse.cdt.core.CCorePlugin;
-import org.eclipse.cdt.core.index.IIndexManager;
-import org.eclipse.cdt.core.model.CoreModel;
-import org.eclipse.cdt.core.model.ICProject;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.swtbot.eclipse.finder.SWTWorkbenchBot;
-import org.eclipse.swtbot.eclipse.finder.waits.Conditions;
-import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotView;
-import org.eclipse.swtbot.swt.finder.utils.SWTBotPreferences;
-import org.eclipse.swtbot.swt.finder.widgets.SWTBotShell;
-import org.eclipse.swtbot.swt.finder.widgets.SWTBotTable;
-import org.eclipse.swtbot.swt.finder.widgets.SWTBotTableItem;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-@SuppressWarnings("nls")
-public class NewCMakeProjectTest {
-
- private static SWTWorkbenchBot bot;
-
- @BeforeClass
- public static void beforeClass() {
- SWTBotPreferences.KEYBOARD_LAYOUT = "EN_US";
- SWTBotPreferences.TIMEOUT = 10000;
- bot = new SWTWorkbenchBot();
- }
-
- @Before
- public void before() {
- bot.resetWorkbench();
-
- for (SWTBotView view : bot.views(withPartName("Welcome"))) {
- view.close();
- }
- }
-
- @Test(timeout = 60000)
- public void createCMakeProject() throws Exception {
- // open C++ perspective
- if (!"C/C++".equals(bot.activePerspective().getLabel())) {
- bot.perspectiveByLabel("C/C++").activate();
- }
-
- // Activate C/C++ wizard
- bot.menu("File").menu("New").menu("C/C++ Project").click();
- bot.shell("New C/C++ Project").activate();
-
- // Double click on the template
- SWTBotTable templateTable = bot.table();
- bot.getDisplay().syncExec(() -> {
- for (int i = 0; i < templateTable.rowCount(); ++i) {
- SWTBotTableItem item = templateTable.getTableItem(i);
- if ("CMake Project".equals(item.widget.getData(SWTBotPreferences.DEFAULT_KEY))) {
- item.doubleClick();
- break;
- }
- }
- });
-
- // Select the shell again since magic wizardry happened
- SWTBotShell newProjectShell = bot.shell("New CMake Project").activate();
- bot.waitUntil(Conditions.shellIsActive("New CMake Project"));
- newProjectShell.setFocus();
-
- // Create the project
- String projectName = "CMakeTestProj";
- bot.textWithLabel("Project name:").setText(projectName);
- bot.button("Finish").click();
- bot.waitUntil(Conditions.shellCloses(newProjectShell));
-
- // Make sure it shows up in Project Explorer
- SWTBotView explorer = bot.viewByPartName("Project Explorer");
- explorer.show();
- explorer.setFocus();
- bot.tree().getTreeItem(projectName);
-
- // Make sure the project indexer completes. At that point we're stable.
- IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
- ICProject cproject = CoreModel.getDefault().create(project);
- IIndexManager indexManager = CCorePlugin.getIndexManager();
- while (!indexManager.isProjectContentSynced(cproject)) {
- Thread.sleep(1000);
- }
-
- // Make sure it has the right nature
- assertTrue(project.hasNature(CMakeNature.ID));
- }
-
-}
diff --git a/build/org.eclipse.cdt.cmake.ui/.classpath b/build/org.eclipse.cdt.cmake.ui/.classpath
deleted file mode 100644
index eca7bdba8f0..00000000000
--- a/build/org.eclipse.cdt.cmake.ui/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
- <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/build/org.eclipse.cdt.cmake.ui/.project b/build/org.eclipse.cdt.cmake.ui/.project
deleted file mode 100644
index c65bf192fcd..00000000000
--- a/build/org.eclipse.cdt.cmake.ui/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.cdt.cmake.ui</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.ManifestBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.SchemaBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.pde.PluginNature</nature>
- <nature>org.eclipse.jdt.core.javanature</nature>
- </natures>
-</projectDescription>
diff --git a/build/org.eclipse.cdt.cmake.ui/.settings/org.eclipse.jdt.core.prefs b/build/org.eclipse.cdt.cmake.ui/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 2b6ecff8a01..00000000000
--- a/build/org.eclipse.cdt.cmake.ui/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,464 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
-org.eclipse.jdt.core.codeComplete.argumentPrefixes=
-org.eclipse.jdt.core.codeComplete.argumentSuffixes=
-org.eclipse.jdt.core.codeComplete.fieldPrefixes=
-org.eclipse.jdt.core.codeComplete.fieldSuffixes=
-org.eclipse.jdt.core.codeComplete.localPrefixes=
-org.eclipse.jdt.core.codeComplete.localSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
-org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
-org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
-org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
-org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
-org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
-org.eclipse.jdt.core.compiler.problem.APILeak=warning
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
-org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
-org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
-org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
-org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
-org.eclipse.jdt.core.compiler.problem.nullReference=error
-org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
-org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
-org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
-org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
-org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
-org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
-org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
-org.eclipse.jdt.core.formatter.align_with_spaces=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
-org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
-org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
-org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
-org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=0
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
-org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
-org.eclipse.jdt.core.formatter.comment.format_block_comments=false
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
-org.eclipse.jdt.core.formatter.comment.format_line_comments=false
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
-org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
-org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
-org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.join_lines_in_comments=true
-org.eclipse.jdt.core.formatter.join_wrapped_lines=true
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=120
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_on_off_tags=true
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
-org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
-org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/build/org.eclipse.cdt.cmake.ui/.settings/org.eclipse.jdt.ui.prefs b/build/org.eclipse.cdt.cmake.ui/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index e44576346c4..00000000000
--- a/build/org.eclipse.cdt.cmake.ui/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,133 +0,0 @@
-cleanup.add_default_serial_version_id=true
-cleanup.add_generated_serial_version_id=false
-cleanup.add_missing_annotations=true
-cleanup.add_missing_deprecated_annotations=true
-cleanup.add_missing_methods=false
-cleanup.add_missing_nls_tags=false
-cleanup.add_missing_override_annotations=true
-cleanup.add_missing_override_annotations_interface_methods=true
-cleanup.add_serial_version_id=false
-cleanup.always_use_blocks=true
-cleanup.always_use_parentheses_in_expressions=false
-cleanup.always_use_this_for_non_static_field_access=false
-cleanup.always_use_this_for_non_static_method_access=false
-cleanup.convert_functional_interfaces=false
-cleanup.convert_to_enhanced_for_loop=false
-cleanup.correct_indentation=false
-cleanup.format_source_code=true
-cleanup.format_source_code_changes_only=false
-cleanup.insert_inferred_type_arguments=false
-cleanup.make_local_variable_final=true
-cleanup.make_parameters_final=false
-cleanup.make_private_fields_final=true
-cleanup.make_type_abstract_if_missing_method=false
-cleanup.make_variable_declarations_final=false
-cleanup.never_use_blocks=false
-cleanup.never_use_parentheses_in_expressions=true
-cleanup.organize_imports=true
-cleanup.qualify_static_field_accesses_with_declaring_class=false
-cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-cleanup.qualify_static_member_accesses_with_declaring_class=false
-cleanup.qualify_static_method_accesses_with_declaring_class=false
-cleanup.remove_private_constructors=true
-cleanup.remove_redundant_modifiers=false
-cleanup.remove_redundant_semicolons=true
-cleanup.remove_redundant_type_arguments=true
-cleanup.remove_trailing_whitespaces=true
-cleanup.remove_trailing_whitespaces_all=true
-cleanup.remove_trailing_whitespaces_ignore_empty=false
-cleanup.remove_unnecessary_casts=true
-cleanup.remove_unnecessary_nls_tags=false
-cleanup.remove_unused_imports=true
-cleanup.remove_unused_local_variables=false
-cleanup.remove_unused_private_fields=true
-cleanup.remove_unused_private_members=false
-cleanup.remove_unused_private_methods=true
-cleanup.remove_unused_private_types=true
-cleanup.sort_members=false
-cleanup.sort_members_all=false
-cleanup.use_anonymous_class_creation=false
-cleanup.use_blocks=false
-cleanup.use_blocks_only_for_return_and_throw=false
-cleanup.use_lambda=true
-cleanup.use_parentheses_in_expressions=false
-cleanup.use_this_for_non_static_field_access=false
-cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-cleanup.use_this_for_non_static_method_access=false
-cleanup.use_this_for_non_static_method_access_only_if_necessary=true
-cleanup_profile=_CDT
-cleanup_settings_version=2
-eclipse.preferences.version=1
-editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=_CDT
-formatter_settings_version=14
-internal.default.compliance=user
-org.eclipse.jdt.ui.exception.name=e
-org.eclipse.jdt.ui.gettersetter.use.is=true
-org.eclipse.jdt.ui.ignorelowercasenames=true
-org.eclipse.jdt.ui.importorder=java;javax;org;com;
-org.eclipse.jdt.ui.keywordthis=false
-org.eclipse.jdt.ui.ondemandthreshold=1000
-org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.staticondemandthreshold=1000
-org.eclipse.jdt.ui.text.custom_code_templates=
-sp_cleanup.add_default_serial_version_id=true
-sp_cleanup.add_generated_serial_version_id=false
-sp_cleanup.add_missing_annotations=true
-sp_cleanup.add_missing_deprecated_annotations=true
-sp_cleanup.add_missing_methods=false
-sp_cleanup.add_missing_nls_tags=false
-sp_cleanup.add_missing_override_annotations=true
-sp_cleanup.add_missing_override_annotations_interface_methods=true
-sp_cleanup.add_serial_version_id=false
-sp_cleanup.always_use_blocks=true
-sp_cleanup.always_use_parentheses_in_expressions=false
-sp_cleanup.always_use_this_for_non_static_field_access=false
-sp_cleanup.always_use_this_for_non_static_method_access=false
-sp_cleanup.convert_functional_interfaces=false
-sp_cleanup.convert_to_enhanced_for_loop=false
-sp_cleanup.correct_indentation=false
-sp_cleanup.format_source_code=true
-sp_cleanup.format_source_code_changes_only=false
-sp_cleanup.insert_inferred_type_arguments=false
-sp_cleanup.make_local_variable_final=true
-sp_cleanup.make_parameters_final=false
-sp_cleanup.make_private_fields_final=true
-sp_cleanup.make_type_abstract_if_missing_method=false
-sp_cleanup.make_variable_declarations_final=false
-sp_cleanup.never_use_blocks=false
-sp_cleanup.never_use_parentheses_in_expressions=true
-sp_cleanup.on_save_use_additional_actions=true
-sp_cleanup.organize_imports=true
-sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
-sp_cleanup.remove_private_constructors=true
-sp_cleanup.remove_redundant_modifiers=false
-sp_cleanup.remove_redundant_semicolons=true
-sp_cleanup.remove_redundant_type_arguments=true
-sp_cleanup.remove_trailing_whitespaces=true
-sp_cleanup.remove_trailing_whitespaces_all=true
-sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
-sp_cleanup.remove_unnecessary_casts=true
-sp_cleanup.remove_unnecessary_nls_tags=false
-sp_cleanup.remove_unused_imports=true
-sp_cleanup.remove_unused_local_variables=false
-sp_cleanup.remove_unused_private_fields=true
-sp_cleanup.remove_unused_private_members=false
-sp_cleanup.remove_unused_private_methods=true
-sp_cleanup.remove_unused_private_types=true
-sp_cleanup.sort_members=false
-sp_cleanup.sort_members_all=false
-sp_cleanup.use_anonymous_class_creation=false
-sp_cleanup.use_blocks=false
-sp_cleanup.use_blocks_only_for_return_and_throw=false
-sp_cleanup.use_lambda=true
-sp_cleanup.use_parentheses_in_expressions=false
-sp_cleanup.use_this_for_non_static_field_access=false
-sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-sp_cleanup.use_this_for_non_static_method_access=false
-sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/build/org.eclipse.cdt.cmake.ui/META-INF/MANIFEST.MF b/build/org.eclipse.cdt.cmake.ui/META-INF/MANIFEST.MF
deleted file mode 100644
index a758ce39a72..00000000000
--- a/build/org.eclipse.cdt.cmake.ui/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,23 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: CDT CMake UI
-Bundle-SymbolicName: org.eclipse.cdt.cmake.ui;singleton:=true
-Bundle-Version: 1.2.200.qualifier
-Bundle-Activator: org.eclipse.cdt.cmake.ui.internal.Activator
-Bundle-Vendor: Eclipse CDT
-Require-Bundle: org.eclipse.core.runtime,
- org.eclipse.core.resources;bundle-version="3.11.0",
- org.eclipse.ui,
- org.eclipse.ui.ide,
- org.eclipse.cdt.cmake.core,
- org.eclipse.tools.templates.ui;bundle-version="1.1.0",
- org.eclipse.cdt.core;bundle-version="6.1.0",
- org.eclipse.debug.ui;bundle-version="3.11.200",
- org.eclipse.cdt.launch;bundle-version="9.1.0",
- org.eclipse.cdt.debug.core;bundle-version="8.1.0",
- org.eclipse.cdt.ui;bundle-version="6.2.0",
- org.eclipse.launchbar.core
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Bundle-ActivationPolicy: lazy
-Bundle-Localization: plugin
-Automatic-Module-Name: org.eclipse.cdt.cmake.ui
diff --git a/build/org.eclipse.cdt.cmake.ui/about.html b/build/org.eclipse.cdt.cmake.ui/about.html
deleted file mode 100644
index 164f781a8fd..00000000000
--- a/build/org.eclipse.cdt.cmake.ui/about.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
-</head>
-<body lang="EN-US">
- <h2>About This Content</h2>
-
- <p>November 30, 2017</p>
- <h3>License</h3>
-
- <p>
- The Eclipse Foundation makes available all content in this plug-in
- (&quot;Content&quot;). Unless otherwise indicated below, the Content
- is provided to you under the terms and conditions of the Eclipse
- Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
- For purposes of the EPL, &quot;Program&quot; will mean the Content.
- </p>
-
- <p>
- If you did not receive this Content directly from the Eclipse
- Foundation, the Content is being redistributed by another party
- (&quot;Redistributor&quot;) and different terms and conditions may
- apply to your use of any object code in the Content. Check the
- Redistributor's license that was provided with the Content. If no such
- license exists, contact the Redistributor. Unless otherwise indicated
- below, the terms and conditions of the EPL still apply to any source
- code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
- </p>
-
-</body>
-</html> \ No newline at end of file
diff --git a/build/org.eclipse.cdt.cmake.ui/plugin.properties b/build/org.eclipse.cdt.cmake.ui/plugin.properties
deleted file mode 100644
index a6b63ff6661..00000000000
--- a/build/org.eclipse.cdt.cmake.ui/plugin.properties
+++ /dev/null
@@ -1,12 +0,0 @@
-###############################################################################
-# Copyright (c) 2016 QNX Software Systems and others
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-###############################################################################
-
-cmake.preferences.name = CMake
diff --git a/build/org.eclipse.cdt.cmake.ui/plugin.xml b/build/org.eclipse.cdt.cmake.ui/plugin.xml
deleted file mode 100644
index 042d05e8d13..00000000000
--- a/build/org.eclipse.cdt.cmake.ui/plugin.xml
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.4"?>
-<plugin>
- <extension
- point="org.eclipse.ui.propertyPages">
- <page
- class="org.eclipse.cdt.cmake.ui.properties.CMakePropertyPage"
- id="org.eclipse.cdt.cmake.ui.properties.cmakePropertyPage"
- name="CMake">
- <enabledWhen>
- <and>
- <instanceof
- value="org.eclipse.core.resources.IProject">
- </instanceof>
- <test
- property="org.eclipse.core.resources.projectNature"
- value="org.eclipse.cdt.cmake.core.cmakeNature">
- </test>
- </and>
- </enabledWhen>
- </page>
- </extension>
- <extension
- point="org.eclipse.ui.preferencePages">
- <page
- category="org.eclipse.cdt.ui.preferences.CPluginPreferencePage"
- class="org.eclipse.cdt.cmake.ui.internal.CMakePreferencePage"
- id="org.eclipse.cdt.cmake.ui.page1"
- name="%cmake.preferences.name">
- </page>
- </extension>
- <extension
- point="org.eclipse.tools.templates.ui.templates">
- <tag
- id="org.eclipse.cdt.cmake.ui.tag"
- label="CMake">
- </tag>
- <template
- icon="icons/cmake_logo-main.png"
- id="org.eclipse.cdt.cmake.ui.newProjectTemplate"
- label="CMake Project"
- wizard="org.eclipse.cdt.cmake.ui.internal.NewCMakeProjectWizard">
- <description>
- A CMake project with a Hello World executable to get started.
- </description>
- <tagReference
- id="org.eclipse.cdt.ui.cdtTag">
- </tagReference>
- <tagReference
- id="org.eclipse.cdt.cmake.ui.tag">
- </tagReference>
- </template>
- <template
- icon="icons/cmake_logo-main.png"
- id="org.eclipse.cdt.cmake.ui.emptyProjectTemplate"
- label="Empty or Existing CMake Project"
- wizard="org.eclipse.cdt.cmake.ui.internal.EmptyCMakeProjectWizard">
- <description>
- Create a CMake project with no files. Can be used to create one over existing content.
- </description>
- <tagReference
- id="org.eclipse.cdt.ui.cdtTag">
- </tagReference>
- <tagReference
- id="org.eclipse.cdt.cmake.ui.tag">
- </tagReference>
- </template>
- </extension>
- <extension
- point="org.eclipse.cdt.launch.coreBuildTab">
- <provider
- nature="org.eclipse.cdt.cmake.core.cmakeNature"
- priority="10"
- tabClass="org.eclipse.cdt.cmake.ui.internal.CMakeBuildTab">
- </provider>
- </extension>
-
-</plugin>
diff --git a/build/org.eclipse.cdt.core.autotools-feature/.settings/org.eclipse.core.resources.prefs b/build/org.eclipse.cdt.core.autotools-feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/build/org.eclipse.cdt.core.autotools-feature/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/build/org.eclipse.cdt.core.autotools-feature/feature.xml b/build/org.eclipse.cdt.core.autotools-feature/feature.xml
index 7f497109d80..1d68fc9e443 100644
--- a/build/org.eclipse.cdt.core.autotools-feature/feature.xml
+++ b/build/org.eclipse.cdt.core.autotools-feature/feature.xml
@@ -1,9 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2017, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<feature
id="org.eclipse.cdt.core.autotools"
label="%featureName"
- version="9.10.0.qualifier"
+ version="10.7.0.qualifier"
provider-name="%providerName"
+ plugin="org.eclipse.cdt.core.autotools.ui"
license-feature="org.eclipse.license"
license-feature-version="0.0.0">
diff --git a/build/org.eclipse.cdt.core.autotools.core/.classpath b/build/org.eclipse.cdt.core.autotools.core/.classpath
index eca7bdba8f0..e801ebfb468 100644
--- a/build/org.eclipse.cdt.core.autotools.core/.classpath
+++ b/build/org.eclipse.cdt.core.autotools.core/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/build/org.eclipse.cdt.core.autotools.core/.project b/build/org.eclipse.cdt.core.autotools.core/.project
index 5d2806ec0ed..1cc63f9a9c2 100644
--- a/build/org.eclipse.cdt.core.autotools.core/.project
+++ b/build/org.eclipse.cdt.core.autotools.core/.project
@@ -20,9 +20,15 @@
<arguments>
</arguments>
</buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.pde.PluginNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
</natures>
</projectDescription>
diff --git a/build/org.eclipse.cdt.core.autotools.core/.settings/org.eclipse.core.resources.prefs b/build/org.eclipse.cdt.core.autotools.core/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/build/org.eclipse.cdt.core.autotools.core/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/build/org.eclipse.cdt.core.autotools.core/.settings/org.eclipse.jdt.core.prefs b/build/org.eclipse.cdt.core.autotools.core/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/build/org.eclipse.cdt.core.autotools.core/.settings/org.eclipse.jdt.core.prefs
+++ b/build/org.eclipse.cdt.core.autotools.core/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/build/org.eclipse.cdt.core.autotools.core/.settings/org.eclipse.jdt.ui.prefs b/build/org.eclipse.cdt.core.autotools.core/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/build/org.eclipse.cdt.core.autotools.core/.settings/org.eclipse.jdt.ui.prefs
+++ b/build/org.eclipse.cdt.core.autotools.core/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/build/org.eclipse.cdt.core.autotools.core/META-INF/MANIFEST.MF b/build/org.eclipse.cdt.core.autotools.core/META-INF/MANIFEST.MF
index 5296abe0c37..8b6a7e9be18 100644
--- a/build/org.eclipse.cdt.core.autotools.core/META-INF/MANIFEST.MF
+++ b/build/org.eclipse.cdt.core.autotools.core/META-INF/MANIFEST.MF
@@ -2,15 +2,16 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.core.autotools.core;singleton:=true
-Bundle-Version: 1.1.200.qualifier
+Bundle-Version: 1.2.200.qualifier
Bundle-Activator: org.eclipse.cdt.core.autotools.core.internal.Activator
Require-Bundle: org.eclipse.core.runtime,
org.eclipse.tools.templates.freemarker;bundle-version="1.0.0",
org.eclipse.cdt.core;bundle-version="6.3.1",
org.eclipse.core.resources;bundle-version="3.12.0"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-ActivationPolicy: lazy
Bundle-Vendor: %providerName
-Export-Package: org.eclipse.cdt.core.autotools.core
+Export-Package: org.eclipse.cdt.core.autotools.core;x-friends:="org.eclipse.cdt.core.autotools.ui",
+ org.eclipse.cdt.core.autotools.core.internal;x-friends:="org.eclipse.cdt.core.autotools.ui"
Bundle-Localization: plugin
Automatic-Module-Name: org.eclipse.cdt.core.autotools.core
diff --git a/build/org.eclipse.cdt.core.autotools.core/about.html b/build/org.eclipse.cdt.core.autotools.core/about.html
index 164f781a8fd..b3134865230 100644
--- a/build/org.eclipse.cdt.core.autotools.core/about.html
+++ b/build/org.eclipse.cdt.core.autotools.core/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/build/org.eclipse.cdt.core.autotools.core/plugin.properties b/build/org.eclipse.cdt.core.autotools.core/plugin.properties
index d255905e522..fd906036c7e 100644
--- a/build/org.eclipse.cdt.core.autotools.core/plugin.properties
+++ b/build/org.eclipse.cdt.core.autotools.core/plugin.properties
@@ -12,3 +12,4 @@
pluginName=CDT Autotools Core
providerName=Eclipse CDT
extension-point.name = Autotools Core ToolChain File Provider
+autotoolsNature.name=Autotools Nature \ No newline at end of file
diff --git a/build/org.eclipse.cdt.core.autotools.core/plugin.xml b/build/org.eclipse.cdt.core.autotools.core/plugin.xml
index 58bd75b72d0..8b2cd3f7d72 100644
--- a/build/org.eclipse.cdt.core.autotools.core/plugin.xml
+++ b/build/org.eclipse.cdt.core.autotools.core/plugin.xml
@@ -3,6 +3,7 @@
<plugin>
<extension
id="autotoolsNature"
+ name="%autotoolsNature.name"
point="org.eclipse.core.resources.natures">
<runtime>
<run
diff --git a/build/org.eclipse.cdt.core.autotools.core/src/org/eclipse/cdt/core/autotools/core/AutotoolsBuildConfiguration.java b/build/org.eclipse.cdt.core.autotools.core/src/org/eclipse/cdt/core/autotools/core/AutotoolsBuildConfiguration.java
index f6497540771..4dc47efb12f 100644
--- a/build/org.eclipse.cdt.core.autotools.core/src/org/eclipse/cdt/core/autotools/core/AutotoolsBuildConfiguration.java
+++ b/build/org.eclipse.cdt.core.autotools.core/src/org/eclipse/cdt/core/autotools/core/AutotoolsBuildConfiguration.java
@@ -106,7 +106,7 @@ public class AutotoolsBuildConfiguration extends CBuildConfiguration {
try {
// TODO Error parsers
Process process = builder.start();
- watchProcess(process, console);
+ watchProcess(console, monitor);
} catch (IOException e) {
throw new CoreException(Activator.errorStatus("Error executing: " + String.join(" ", command), e)); //$NON-NLS-1$ //$NON-NLS-2$
}
@@ -153,7 +153,7 @@ public class AutotoolsBuildConfiguration extends CBuildConfiguration {
Activator.errorStatus("Error executing: " + String.join(" ", command), null)); //$NON-NLS-1$ //$NON-NLS-2$
}
- watchProcess(p, new IConsoleParser[] { epm });
+ watchProcess(new IConsoleParser[] { epm }, monitor);
}
project.refreshLocal(IResource.DEPTH_INFINITE, monitor);
diff --git a/build/org.eclipse.cdt.core.autotools.core/src/org/eclipse/cdt/core/autotools/core/AutotoolsProjectGenerator.java b/build/org.eclipse.cdt.core.autotools.core/src/org/eclipse/cdt/core/autotools/core/AutotoolsProjectGenerator.java
index 90f90e4c2e9..f17902ad057 100644
--- a/build/org.eclipse.cdt.core.autotools.core/src/org/eclipse/cdt/core/autotools/core/AutotoolsProjectGenerator.java
+++ b/build/org.eclipse.cdt.core.autotools.core/src/org/eclipse/cdt/core/autotools/core/AutotoolsProjectGenerator.java
@@ -80,7 +80,7 @@ public class AutotoolsProjectGenerator extends FMProjectGenerator {
}
}
- entries.add(CoreModel.newOutputEntry(getProject().getFullPath())); //$NON-NLS-1$
+ entries.add(CoreModel.newOutputEntry(getProject().getFullPath()));
CoreModel.getDefault().create(project).setRawPathEntries(entries.toArray(new IPathEntry[entries.size()]),
monitor);
diff --git a/build/org.eclipse.cdt.core.autotools.ui/.classpath b/build/org.eclipse.cdt.core.autotools.ui/.classpath
index eca7bdba8f0..e801ebfb468 100644
--- a/build/org.eclipse.cdt.core.autotools.ui/.classpath
+++ b/build/org.eclipse.cdt.core.autotools.ui/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/build/org.eclipse.cdt.core.autotools.ui/.project b/build/org.eclipse.cdt.core.autotools.ui/.project
index 8522cebb305..a6904cfd665 100644
--- a/build/org.eclipse.cdt.core.autotools.ui/.project
+++ b/build/org.eclipse.cdt.core.autotools.ui/.project
@@ -20,9 +20,15 @@
<arguments>
</arguments>
</buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.pde.PluginNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
</natures>
</projectDescription>
diff --git a/build/org.eclipse.cdt.core.autotools.ui/.settings/org.eclipse.core.resources.prefs b/build/org.eclipse.cdt.core.autotools.ui/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/build/org.eclipse.cdt.core.autotools.ui/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/build/org.eclipse.cdt.core.autotools.ui/.settings/org.eclipse.jdt.core.prefs b/build/org.eclipse.cdt.core.autotools.ui/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/build/org.eclipse.cdt.core.autotools.ui/.settings/org.eclipse.jdt.core.prefs
+++ b/build/org.eclipse.cdt.core.autotools.ui/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/build/org.eclipse.cdt.core.autotools.ui/.settings/org.eclipse.jdt.ui.prefs b/build/org.eclipse.cdt.core.autotools.ui/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/build/org.eclipse.cdt.core.autotools.ui/.settings/org.eclipse.jdt.ui.prefs
+++ b/build/org.eclipse.cdt.core.autotools.ui/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/build/org.eclipse.cdt.core.autotools.ui/META-INF/MANIFEST.MF b/build/org.eclipse.cdt.core.autotools.ui/META-INF/MANIFEST.MF
index e7d9f8ab3b2..5b735f79fdf 100644
--- a/build/org.eclipse.cdt.core.autotools.ui/META-INF/MANIFEST.MF
+++ b/build/org.eclipse.cdt.core.autotools.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.core.autotools.ui;singleton:=true
-Bundle-Version: 1.0.100.qualifier
+Bundle-Version: 1.1.300.qualifier
Bundle-Activator: org.eclipse.cdt.core.autotools.ui.internal.Activator
Bundle-Vendor: %providerName
Require-Bundle: org.eclipse.ui,
@@ -11,7 +11,8 @@ Require-Bundle: org.eclipse.ui,
org.eclipse.ui.ide;bundle-version="3.13.0",
org.eclipse.cdt.core.autotools.core;bundle-version="1.0.0",
org.eclipse.tools.templates.freemarker;bundle-version="1.0.0"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-ActivationPolicy: lazy
Bundle-Localization: plugin
Automatic-Module-Name: org.eclipse.cdt.core.autotools.ui
+Export-Package: org.eclipse.cdt.core.autotools.ui.internal;x-internal:=true
diff --git a/build/org.eclipse.cdt.core.autotools.ui/about.html b/build/org.eclipse.cdt.core.autotools.ui/about.html
index 164f781a8fd..b3134865230 100644
--- a/build/org.eclipse.cdt.core.autotools.ui/about.html
+++ b/build/org.eclipse.cdt.core.autotools.ui/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/upc/org.eclipse.cdt.managedbuilder.bupc.ui/about.ini b/build/org.eclipse.cdt.core.autotools.ui/about.ini
index e07a7bb377e..e07a7bb377e 100644
--- a/upc/org.eclipse.cdt.managedbuilder.bupc.ui/about.ini
+++ b/build/org.eclipse.cdt.core.autotools.ui/about.ini
diff --git a/build/org.eclipse.cdt.core.autotools.ui/about.mappings b/build/org.eclipse.cdt.core.autotools.ui/about.mappings
new file mode 100644
index 00000000000..936a8039c3e
--- /dev/null
+++ b/build/org.eclipse.cdt.core.autotools.ui/about.mappings
@@ -0,0 +1,9 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+# The following should contain the build version.
+# e.g. "0=20200106-1728"
+# This value will be added automatically via the build scripts
+0=${buildId}
diff --git a/build/org.eclipse.cdt.core.autotools.ui/about.properties b/build/org.eclipse.cdt.core.autotools.ui/about.properties
new file mode 100644
index 00000000000..53946f333aa
--- /dev/null
+++ b/build/org.eclipse.cdt.core.autotools.ui/about.properties
@@ -0,0 +1,32 @@
+###############################################################################
+# Copyright (c) 2017, 2022 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+# about.properties
+# contains externalized strings for about.ini
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# fill-ins are supplied by about.mappings
+# This file should be translated.
+# NOTE TO TRANSLATOR: Please do not translate the featureVersion variable.
+
+
+blurb=C/C++ Autotools Core Build Support - Experimental\n\
+\n\
+Version: {featureVersion}\n\
+Build id: {0}\n\
+\n\
+Copyright (c) 2017, 2022 Contributors to the Eclipse Foundation
+\n\
+See the NOTICE file(s) distributed with this work for additional\n\
+information regarding copyright ownership.\n\
+\n\
+Visit http://www.eclipse.org/cdt
diff --git a/build/org.eclipse.cdt.core.autotools.ui/build.properties b/build/org.eclipse.cdt.core.autotools.ui/build.properties
index 2b63999577f..3798be30af3 100644
--- a/build/org.eclipse.cdt.core.autotools.ui/build.properties
+++ b/build/org.eclipse.cdt.core.autotools.ui/build.properties
@@ -4,5 +4,9 @@ bin.includes = META-INF/,\
.,\
plugin.xml,\
about.html,\
- plugin.properties
+ plugin.properties,\
+ cdt_logo_icon32.png,\
+ about.properties,\
+ about.mappings,\
+ about.ini
src.includes = about.html
diff --git a/upc/org.eclipse.cdt.managedbuilder.bupc.ui/cdt_logo_icon32.png b/build/org.eclipse.cdt.core.autotools.ui/cdt_logo_icon32.png
index 470ca81b327..470ca81b327 100644
--- a/upc/org.eclipse.cdt.managedbuilder.bupc.ui/cdt_logo_icon32.png
+++ b/build/org.eclipse.cdt.core.autotools.ui/cdt_logo_icon32.png
Binary files differ
diff --git a/build/org.eclipse.cdt.gnu.build-feature/.settings/org.eclipse.core.resources.prefs b/build/org.eclipse.cdt.gnu.build-feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/build/org.eclipse.cdt.gnu.build-feature/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/build/org.eclipse.cdt.gnu.build-feature/feature.xml b/build/org.eclipse.cdt.gnu.build-feature/feature.xml
index 03611da0609..b909c38d875 100644
--- a/build/org.eclipse.cdt.gnu.build-feature/feature.xml
+++ b/build/org.eclipse.cdt.gnu.build-feature/feature.xml
@@ -1,9 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2008, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<feature
id="org.eclipse.cdt.gnu.build"
label="%featureName"
- version="9.10.0.qualifier"
+ version="10.7.0.qualifier"
provider-name="%providerName"
+ plugin="org.eclipse.cdt.build.gcc.ui"
license-feature="org.eclipse.license"
license-feature-version="0.0.0">
diff --git a/build/org.eclipse.cdt.make.core.tests/.classpath b/build/org.eclipse.cdt.make.core.tests/.classpath
index 01836c4842f..a42a828e04a 100644
--- a/build/org.eclipse.cdt.make.core.tests/.classpath
+++ b/build/org.eclipse.cdt.make.core.tests/.classpath
@@ -1,7 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="src" path="src">
+ <attributes>
+ <attribute name="test" value="true"/>
+ </attributes>
+ </classpathentry>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/build/org.eclipse.cdt.make.core.tests/.settings/org.eclipse.core.resources.prefs b/build/org.eclipse.cdt.make.core.tests/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/build/org.eclipse.cdt.make.core.tests/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/build/org.eclipse.cdt.make.core.tests/.settings/org.eclipse.jdt.core.prefs b/build/org.eclipse.cdt.make.core.tests/.settings/org.eclipse.jdt.core.prefs
index ad05599159f..5b1c443114d 100644
--- a/build/org.eclipse.cdt.make.core.tests/.settings/org.eclipse.jdt.core.prefs
+++ b/build/org.eclipse.cdt.make.core.tests/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/build/org.eclipse.cdt.make.core.tests/.settings/org.eclipse.jdt.ui.prefs b/build/org.eclipse.cdt.make.core.tests/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/build/org.eclipse.cdt.make.core.tests/.settings/org.eclipse.jdt.ui.prefs
+++ b/build/org.eclipse.cdt.make.core.tests/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/build/org.eclipse.cdt.make.core.tests/META-INF/MANIFEST.MF b/build/org.eclipse.cdt.make.core.tests/META-INF/MANIFEST.MF
index 50d39285a02..a27d314f9e5 100644
--- a/build/org.eclipse.cdt.make.core.tests/META-INF/MANIFEST.MF
+++ b/build/org.eclipse.cdt.make.core.tests/META-INF/MANIFEST.MF
@@ -1,6 +1,6 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
-Bundle-Name: Make Core Tests Plug-in
+Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.make.core.tests;singleton:=true
Bundle-Version: 7.0.0.qualifier
Bundle-Activator: org.eclipse.cdt.make.core.tests.MakeTestsPlugin
@@ -13,7 +13,8 @@ Require-Bundle: org.eclipse.core.runtime,
org.eclipse.core.resources,
org.eclipse.cdt.core.tests
Bundle-ActivationPolicy: lazy
-Bundle-Vendor: Eclipse.org
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-Vendor: %providerName
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Import-Package: org.eclipse.core.filesystem
Automatic-Module-Name: org.eclipse.cdt.make.core.tests
+Bundle-Localization: plugin
diff --git a/build/org.eclipse.cdt.make.core.tests/about.html b/build/org.eclipse.cdt.make.core.tests/about.html
index 164f781a8fd..b3134865230 100644
--- a/build/org.eclipse.cdt.make.core.tests/about.html
+++ b/build/org.eclipse.cdt.make.core.tests/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/build/org.eclipse.cdt.make.core.tests/build.properties b/build/org.eclipse.cdt.make.core.tests/build.properties
index 1eb4b524a16..efa26b4aeef 100644
--- a/build/org.eclipse.cdt.make.core.tests/build.properties
+++ b/build/org.eclipse.cdt.make.core.tests/build.properties
@@ -15,5 +15,7 @@ source.. = src/
output.. = bin/
bin.includes = .,\
META-INF/,\
- data/
+ plugin.properties,\
+ data/,\
+ about.html
src.includes = about.html
diff --git a/build/org.eclipse.cdt.make.core.tests/plugin.properties b/build/org.eclipse.cdt.make.core.tests/plugin.properties
new file mode 100644
index 00000000000..0deeb62c93d
--- /dev/null
+++ b/build/org.eclipse.cdt.make.core.tests/plugin.properties
@@ -0,0 +1,14 @@
+##################################################################################
+# Copyright (c) 2020 Torbjörn Svensson and others. All rights reserved.
+# This program and the accompanying materials are made available under the terms
+# of the Eclipse Public License 2.0 which accompanies this distribution, and is
+# available at https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Torbjörn Svensson - initial API and implementation
+##################################################################################
+
+pluginName = Make Core Tests Plug-in
+providerName = Eclipse.org
diff --git a/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/builder/tests/CDataProviderTests.java b/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/builder/tests/CDataProviderTests.java
index 9c8f6df033d..b058c29c43b 100644
--- a/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/builder/tests/CDataProviderTests.java
+++ b/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/builder/tests/CDataProviderTests.java
@@ -31,6 +31,7 @@ import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
+@SuppressWarnings("nls")
public class CDataProviderTests extends TestCase {
/**
* @param name
diff --git a/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/builder/tests/StandardBuildTests.java b/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/builder/tests/StandardBuildTests.java
index 946608453a6..d94a4269dd4 100644
--- a/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/builder/tests/StandardBuildTests.java
+++ b/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/builder/tests/StandardBuildTests.java
@@ -39,6 +39,7 @@ import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
+@SuppressWarnings("nls")
public class StandardBuildTests extends TestCase {
private static final boolean OFF = false;
private static final boolean ON = true;
diff --git a/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/core/tests/AutomatedIntegrationSuite.java b/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/core/tests/AutomatedIntegrationSuite.java
index be00630f21a..e5fbbf3e410 100644
--- a/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/core/tests/AutomatedIntegrationSuite.java
+++ b/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/core/tests/AutomatedIntegrationSuite.java
@@ -15,7 +15,7 @@
package org.eclipse.cdt.make.core.tests;
import org.eclipse.cdt.make.builder.tests.StandardBuildTests;
-import org.eclipse.cdt.make.scannerdiscovery.ScannerDiscoveryTests;
+import org.eclipse.cdt.make.scannerdiscovery.ScannerDiscoveryTestSuite;
import junit.framework.Test;
import junit.framework.TestCase;
@@ -42,7 +42,7 @@ public class AutomatedIntegrationSuite extends TestSuite {
final AutomatedIntegrationSuite suite = new AutomatedIntegrationSuite();
suite.addTest(StandardBuildTests.suite());
- suite.addTest(ScannerDiscoveryTests.suite());
+ suite.addTest(ScannerDiscoveryTestSuite.suite());
suite.addTest(MakefileReaderProviderTests.suite());
return suite;
}
diff --git a/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/core/tests/MakeTestsPlugin.java b/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/core/tests/MakeTestsPlugin.java
index e9d67f59bfb..243ae7c5a4d 100644
--- a/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/core/tests/MakeTestsPlugin.java
+++ b/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/core/tests/MakeTestsPlugin.java
@@ -22,6 +22,7 @@ import org.osgi.framework.BundleContext;
/**
* The main plugin class to be used in the desktop.
*/
+@SuppressWarnings("nls")
public class MakeTestsPlugin extends Plugin {
//The shared instance.
private static MakeTestsPlugin plugin;
diff --git a/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/core/tests/MakefileReaderProviderTests.java b/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/core/tests/MakefileReaderProviderTests.java
index 1bfae57911a..a155f7eaa86 100644
--- a/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/core/tests/MakefileReaderProviderTests.java
+++ b/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/core/tests/MakefileReaderProviderTests.java
@@ -39,6 +39,7 @@ import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
+@SuppressWarnings("nls")
public class MakefileReaderProviderTests extends TestCase {
private String[] inclDirs;
diff --git a/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/core/tests/StandardBuildTestHelper.java b/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/core/tests/StandardBuildTestHelper.java
index f45aa656278..553f6fa78ea 100644
--- a/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/core/tests/StandardBuildTestHelper.java
+++ b/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/core/tests/StandardBuildTestHelper.java
@@ -32,6 +32,7 @@ import org.eclipse.core.runtime.Path;
import junit.framework.Assert;
+@SuppressWarnings("nls")
public class StandardBuildTestHelper {
/* (non-Javadoc)
* Create a new project named <code>name</code> or return the project in
diff --git a/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/scannerdiscovery/GCCPerFileBOPConsoleParserTests.java b/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/scannerdiscovery/GCCPerFileBOPConsoleParserTests.java
index 76d5d99688d..a1fa688f8cd 100644
--- a/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/scannerdiscovery/GCCPerFileBOPConsoleParserTests.java
+++ b/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/scannerdiscovery/GCCPerFileBOPConsoleParserTests.java
@@ -33,6 +33,7 @@ import org.eclipse.core.runtime.Path;
import junit.framework.TestSuite;
+@SuppressWarnings("nls")
public class GCCPerFileBOPConsoleParserTests extends BaseBOPConsoleParserTests {
private final static IMarkerGenerator MARKER_GENERATOR = new IMarkerGenerator() {
@Override
diff --git a/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/scannerdiscovery/ScannerConfigDiscoveryTests.java b/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/scannerdiscovery/ScannerConfigDiscoveryTests.java
index c64067130f0..eca38bad4dd 100644
--- a/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/scannerdiscovery/ScannerConfigDiscoveryTests.java
+++ b/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/scannerdiscovery/ScannerConfigDiscoveryTests.java
@@ -38,6 +38,7 @@ import org.eclipse.core.runtime.NullProgressMonitor;
*
* @author vhirsl
*/
+@SuppressWarnings("nls")
public class ScannerConfigDiscoveryTests extends BaseTestCase {
private IProject fCProject = null;
private IFile fCFile = null;
diff --git a/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/scannerdiscovery/ScannerConfigProfileTests.java b/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/scannerdiscovery/ScannerConfigProfileTests.java
index 34055e1da26..0eb43d73dd1 100644
--- a/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/scannerdiscovery/ScannerConfigProfileTests.java
+++ b/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/scannerdiscovery/ScannerConfigProfileTests.java
@@ -31,6 +31,7 @@ import org.eclipse.core.runtime.NullProgressMonitor;
/**
* This class tests ScannerConfigProfileManager
*/
+@SuppressWarnings("nls")
public class ScannerConfigProfileTests extends BaseTestCase {
private IProject fCProject = null;
private IFile fCFile = null;
diff --git a/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/scannerdiscovery/ScannerDiscoveryTestSuite.java b/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/scannerdiscovery/ScannerDiscoveryTestSuite.java
new file mode 100644
index 00000000000..780c02936d1
--- /dev/null
+++ b/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/scannerdiscovery/ScannerDiscoveryTestSuite.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2009 Wind River Systems, Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Markus Schorn - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.cdt.make.scannerdiscovery;
+
+import junit.framework.TestSuite;
+
+public class ScannerDiscoveryTestSuite extends TestSuite {
+
+ public static TestSuite suite() {
+ return new ScannerDiscoveryTestSuite();
+ }
+
+ public ScannerDiscoveryTestSuite() {
+ super(ScannerDiscoveryTestSuite.class.getName());
+ addTestSuite(ScannerConfigDiscoveryTests.class);
+ addTest(GCCScannerInfoConsoleParserTests.suite());
+ addTest(GCCPerFileBOPConsoleParserTests.suite());
+ addTestSuite(ScannerConfigProfileTests.class);
+ }
+}
diff --git a/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/scannerdiscovery/ScannerDiscoveryTests.java b/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/scannerdiscovery/ScannerDiscoveryTests.java
deleted file mode 100644
index 30fb0266122..00000000000
--- a/build/org.eclipse.cdt.make.core.tests/src/org/eclipse/cdt/make/scannerdiscovery/ScannerDiscoveryTests.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2009 Wind River Systems, Inc. and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Markus Schorn - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.cdt.make.scannerdiscovery;
-
-import junit.framework.TestSuite;
-
-public class ScannerDiscoveryTests extends TestSuite {
-
- public static TestSuite suite() {
- return new ScannerDiscoveryTests();
- }
-
- public ScannerDiscoveryTests() {
- super(ScannerDiscoveryTests.class.getName());
- addTestSuite(ScannerConfigDiscoveryTests.class);
- addTest(GCCScannerInfoConsoleParserTests.suite());
- addTest(GCCPerFileBOPConsoleParserTests.suite());
- addTestSuite(ScannerConfigProfileTests.class);
- }
-}
diff --git a/build/org.eclipse.cdt.make.core/.classpath b/build/org.eclipse.cdt.make.core/.classpath
index 01836c4842f..e801ebfb468 100644
--- a/build/org.eclipse.cdt.make.core/.classpath
+++ b/build/org.eclipse.cdt.make.core/.classpath
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/build/org.eclipse.cdt.make.core/.settings/org.eclipse.core.resources.prefs b/build/org.eclipse.cdt.make.core/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/build/org.eclipse.cdt.make.core/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/build/org.eclipse.cdt.make.core/.settings/org.eclipse.jdt.core.prefs b/build/org.eclipse.cdt.make.core/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/build/org.eclipse.cdt.make.core/.settings/org.eclipse.jdt.core.prefs
+++ b/build/org.eclipse.cdt.make.core/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/build/org.eclipse.cdt.make.core/.settings/org.eclipse.jdt.ui.prefs b/build/org.eclipse.cdt.make.core/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/build/org.eclipse.cdt.make.core/.settings/org.eclipse.jdt.ui.prefs
+++ b/build/org.eclipse.cdt.make.core/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/build/org.eclipse.cdt.make.core/META-INF/MANIFEST.MF b/build/org.eclipse.cdt.make.core/META-INF/MANIFEST.MF
index bba11e9c22d..89697c3ac0a 100644
--- a/build/org.eclipse.cdt.make.core/META-INF/MANIFEST.MF
+++ b/build/org.eclipse.cdt.make.core/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.make.core; singleton:=true
-Bundle-Version: 7.4.100.qualifier
+Bundle-Version: 7.5.300.qualifier
Bundle-Activator: org.eclipse.cdt.make.core.MakeCorePlugin
Bundle-Vendor: %providerName
Bundle-Localization: plugin
@@ -19,7 +19,7 @@ Export-Package: org.eclipse.cdt.make.core,
org.eclipse.cdt.make.internal.core.scannerconfig.jobs;x-internal:=true,
org.eclipse.cdt.make.internal.core.scannerconfig.util;x-internal:=true,
org.eclipse.cdt.make.internal.core.scannerconfig2;x-internal:=true
-Require-Bundle: org.eclipse.cdt.core;bundle-version="[5.0.0,7.0.0)",
+Require-Bundle: org.eclipse.cdt.core;bundle-version="[7.0.0,8.0.0)",
org.eclipse.core.resources;bundle-version="[3.2.0,4.0.0)",
org.eclipse.core.variables;bundle-version="[3.1.100,4.0.0)",
org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)",
@@ -27,6 +27,5 @@ Require-Bundle: org.eclipse.cdt.core;bundle-version="[5.0.0,7.0.0)",
org.eclipse.tools.templates.core;bundle-version="1.1.0",
org.eclipse.tools.templates.freemarker;bundle-version="1.0.0"
Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Import-Package: com.ibm.icu.text
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Automatic-Module-Name: org.eclipse.cdt.make.core
diff --git a/build/org.eclipse.cdt.make.core/about.html b/build/org.eclipse.cdt.make.core/about.html
index 164f781a8fd..b3134865230 100644
--- a/build/org.eclipse.cdt.make.core/about.html
+++ b/build/org.eclipse.cdt.make.core/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/build/org.eclipse.cdt.make.core/plugin.xml b/build/org.eclipse.cdt.make.core/plugin.xml
index 5de1999d0e0..57d3b738efd 100644
--- a/build/org.eclipse.cdt.make.core/plugin.xml
+++ b/build/org.eclipse.cdt.make.core/plugin.xml
@@ -156,7 +156,7 @@
<file-association
content-type="org.eclipse.cdt.make.core.makefile"
file-names="Makefile,makefile,GNUMakefile"
- file-extensions="mk"/>
+ file-extensions="mk,mak"/>
</extension>
<extension
diff --git a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/BuildInfoFactory.java b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/BuildInfoFactory.java
index 162cdeb1229..6685e854c8f 100644
--- a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/BuildInfoFactory.java
+++ b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/BuildInfoFactory.java
@@ -46,7 +46,6 @@ import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.Preferences;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.variables.VariablesPlugin;
-import org.eclipse.osgi.service.environment.Constants;
public class BuildInfoFactory {
@@ -115,14 +114,8 @@ public class BuildInfoFactory {
public Map<String, String> getExpandedEnvironment() {
Map<String, String> env = getEnvironment();
HashMap<String, String> envMap = new HashMap<>(env.entrySet().size());
- boolean win32 = Platform.getOS().equals(Constants.OS_WIN32);
for (Map.Entry<String, String> entry : env.entrySet()) {
String key = entry.getKey();
- if (win32) {
- // Win32 vars are case insensitive. Uppercase everything so
- // that (for example) "pAtH" will correctly replace "PATH"
- key = key.toUpperCase();
- }
String value = entry.getValue();
// translate any string substitution variables
String translated = value;
diff --git a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/MakeMessages.java b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/MakeMessages.java
index d6726852aee..239d4f116a5 100644
--- a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/MakeMessages.java
+++ b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/MakeMessages.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2002, 2009 QNX Software Systems and others.
+ * Copyright (c) 2002, 2021 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -13,11 +13,10 @@
*******************************************************************************/
package org.eclipse.cdt.make.internal.core;
+import java.text.MessageFormat;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
-import com.ibm.icu.text.MessageFormat;
-
public class MakeMessages {
private static final String RESOURCE_BUNDLE = MakeMessages.class.getName();
diff --git a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/MakeTarget.java b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/MakeTarget.java
index 3648088fa56..6d6f2a485fb 100644
--- a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/MakeTarget.java
+++ b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/MakeTarget.java
@@ -33,11 +33,9 @@ import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.PlatformObject;
import org.eclipse.core.runtime.SubMonitor;
import org.eclipse.core.variables.VariablesPlugin;
-import org.eclipse.osgi.service.environment.Constants;
public class MakeTarget extends PlatformObject implements IMakeTarget {
private final static int USE_PROJECT_ENV_SETTING = 3;
@@ -245,14 +243,8 @@ public class MakeTarget extends PlatformObject implements IMakeTarget {
}
HashMap<String, String> envMap = new HashMap<>(env.entrySet().size());
- boolean win32 = Platform.getOS().equals(Constants.OS_WIN32);
for (Entry<String, String> entry : env.entrySet()) {
String key = entry.getKey();
- if (win32) {
- // Win32 vars are case insensitive. Uppercase everything so
- // that (for example) "pAtH" will correctly replace "PATH"
- key = key.toUpperCase();
- }
String value = entry.getValue();
// translate any string substitution variables
String translated = value;
diff --git a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig/CDataDiscoveredInfoCalculator.java b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig/CDataDiscoveredInfoCalculator.java
index 5700e094e00..92eda07cc8e 100644
--- a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig/CDataDiscoveredInfoCalculator.java
+++ b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig/CDataDiscoveredInfoCalculator.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2016 Intel Corporation and others.
+ * Copyright (c) 2007, 2020 Intel Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -21,6 +21,7 @@ import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
+import java.util.Objects;
import java.util.Set;
import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry;
@@ -270,7 +271,7 @@ public class CDataDiscoveredInfoCalculator {
if (!fExtsSet.equals(other.fExtsSet))
return false;
- if (!CDataUtil.objectsEqual(fMaxMatchInfo, other.fMaxMatchInfo))
+ if (!Objects.equals(fMaxMatchInfo, other.fMaxMatchInfo))
return false;
return true;
diff --git a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig/CDataDiscoveredInfoProcessor.java b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig/CDataDiscoveredInfoProcessor.java
index a3ab5b5cf0d..a96b16f4de5 100644
--- a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig/CDataDiscoveredInfoProcessor.java
+++ b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig/CDataDiscoveredInfoProcessor.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2010 Intel Corporation and others.
+ * Copyright (c) 2007, 2020 Intel Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -16,6 +16,7 @@ package org.eclipse.cdt.make.internal.core.scannerconfig;
import java.util.Arrays;
import java.util.Map;
import java.util.Map.Entry;
+import java.util.Objects;
import java.util.Set;
import org.eclipse.cdt.core.settings.model.ICSettingBase;
@@ -116,7 +117,7 @@ public abstract class CDataDiscoveredInfoProcessor {
}
protected boolean langDatasMatch(CLanguageData lData1, CLanguageData lData2) {
- if (!CDataUtil.objectsEqual(lData1.getLanguageId(), lData2.getLanguageId()))
+ if (!Objects.equals(lData1.getLanguageId(), lData2.getLanguageId()))
return false;
String[] tmp = lData1.getSourceContentTypeIds();
diff --git a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig/util/LogWriter.java b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig/util/LogWriter.java
index 7501751c391..9c5112e74a9 100644
--- a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig/util/LogWriter.java
+++ b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig/util/LogWriter.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004, 2009 IBM Corporation and others.
+ * Copyright (c) 2004, 2021 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -20,14 +20,13 @@ import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.Writer;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
import java.util.Date;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IStatus;
-import com.ibm.icu.text.DateFormat;
-import com.ibm.icu.text.SimpleDateFormat;
-
/**
* Log writer utility
*
diff --git a/build/org.eclipse.cdt.make.core/templates/simple/Makefile b/build/org.eclipse.cdt.make.core/templates/simple/Makefile
index 7fe5793f75b..a46f5dd2cea 100644
--- a/build/org.eclipse.cdt.make.core/templates/simple/Makefile
+++ b/build/org.eclipse.cdt.make.core/templates/simple/Makefile
@@ -6,14 +6,20 @@ ifeq ($(BUILD_MODE),debug)
CFLAGS += -g
else ifeq ($(BUILD_MODE),run)
CFLAGS += -O2
+else ifeq ($(BUILD_MODE),linuxtools)
+ CFLAGS += -g -pg -fprofile-arcs -ftest-coverage
+ LDFLAGS += -pg -fprofile-arcs -ftest-coverage
+ EXTRA_CLEAN += ${projectName}.gcda ${projectName}.gcno $(PROJECT_ROOT)gmon.out
+ EXTRA_CMDS = rm -rf ${projectName}.gcda
else
- $(error Build mode $(BUILD_MODE) not supported by this Makefile)
+ $(error Build mode $(BUILD_MODE) not supported by this Makefile)
endif
all: ${projectName}
${projectName}: $(OBJS)
- $(CXX) -o $@ $^
+ $(CXX) $(LDFLAGS) -o $@ $^
+ $(EXTRA_CMDS)
%.o: $(PROJECT_ROOT)%.cpp
$(CXX) -c $(CFLAGS) $(CXXFLAGS) $(CPPFLAGS) -o $@ $<
@@ -22,4 +28,4 @@ ${projectName}: $(OBJS)
$(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@ $<
clean:
- rm -fr ${projectName} $(OBJS)
+ rm -fr ${projectName} $(OBJS) $(EXTRA_CLEAN)
diff --git a/build/org.eclipse.cdt.make.ui.tests/.classpath b/build/org.eclipse.cdt.make.ui.tests/.classpath
index eca7bdba8f0..a42a828e04a 100644
--- a/build/org.eclipse.cdt.make.ui.tests/.classpath
+++ b/build/org.eclipse.cdt.make.ui.tests/.classpath
@@ -1,7 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="src" path="src"/>
+ <classpathentry kind="src" path="src">
+ <attributes>
+ <attribute name="test" value="true"/>
+ </attributes>
+ </classpathentry>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/build/org.eclipse.cdt.make.ui.tests/.settings/org.eclipse.core.resources.prefs b/build/org.eclipse.cdt.make.ui.tests/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/build/org.eclipse.cdt.make.ui.tests/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/build/org.eclipse.cdt.make.ui.tests/.settings/org.eclipse.jdt.core.prefs b/build/org.eclipse.cdt.make.ui.tests/.settings/org.eclipse.jdt.core.prefs
index ad05599159f..5b1c443114d 100644
--- a/build/org.eclipse.cdt.make.ui.tests/.settings/org.eclipse.jdt.core.prefs
+++ b/build/org.eclipse.cdt.make.ui.tests/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/build/org.eclipse.cdt.make.ui.tests/.settings/org.eclipse.jdt.ui.prefs b/build/org.eclipse.cdt.make.ui.tests/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/build/org.eclipse.cdt.make.ui.tests/.settings/org.eclipse.jdt.ui.prefs
+++ b/build/org.eclipse.cdt.make.ui.tests/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/build/org.eclipse.cdt.make.ui.tests/META-INF/MANIFEST.MF b/build/org.eclipse.cdt.make.ui.tests/META-INF/MANIFEST.MF
index 07aba7c53c2..b5b4a23f36a 100644
--- a/build/org.eclipse.cdt.make.ui.tests/META-INF/MANIFEST.MF
+++ b/build/org.eclipse.cdt.make.ui.tests/META-INF/MANIFEST.MF
@@ -1,6 +1,6 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
-Bundle-Name: org.eclipse.cdt.make.ui.tests
+Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.make.ui.tests;singleton:=true
Bundle-Version: 1.0.0.qualifier
Bundle-Activator: org.eclipse.cdt.make.ui.tests.MakeUITestsPlugin
@@ -10,6 +10,7 @@ Require-Bundle: org.eclipse.ui,
org.junit;bundle-version="4.10.0",
org.eclipse.cdt.core.tests
Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Bundle-Vendor: Eclipse.org
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Bundle-Vendor: %providerName
Automatic-Module-Name: org.eclipse.cdt.make.ui.tests
+Bundle-Localization: plugin
diff --git a/build/org.eclipse.cdt.make.ui.tests/about.html b/build/org.eclipse.cdt.make.ui.tests/about.html
index 164f781a8fd..b3134865230 100644
--- a/build/org.eclipse.cdt.make.ui.tests/about.html
+++ b/build/org.eclipse.cdt.make.ui.tests/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/build/org.eclipse.cdt.make.ui.tests/build.properties b/build/org.eclipse.cdt.make.ui.tests/build.properties
index 9cbab3c135e..2b112c46131 100644
--- a/build/org.eclipse.cdt.make.ui.tests/build.properties
+++ b/build/org.eclipse.cdt.make.ui.tests/build.properties
@@ -2,5 +2,6 @@ source.. = src/
output.. = bin/
bin.includes = META-INF/,\
.,\
+ plugin.properties,\
about.html
src.includes = about.html
diff --git a/build/org.eclipse.cdt.make.ui.tests/plugin.properties b/build/org.eclipse.cdt.make.ui.tests/plugin.properties
new file mode 100644
index 00000000000..15839497399
--- /dev/null
+++ b/build/org.eclipse.cdt.make.ui.tests/plugin.properties
@@ -0,0 +1,14 @@
+##################################################################################
+# Copyright (c) 2020 Torbjörn Svensson and others. All rights reserved.
+# This program and the accompanying materials are made available under the terms
+# of the Eclipse Public License 2.0 which accompanies this distribution, and is
+# available at https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Torbjörn Svensson - initial API and implementation
+##################################################################################
+
+pluginName = org.eclipse.cdt.make.ui.tests
+providerName = Eclipse.org
diff --git a/build/org.eclipse.cdt.make.ui/.classpath b/build/org.eclipse.cdt.make.ui/.classpath
index eca7bdba8f0..e801ebfb468 100644
--- a/build/org.eclipse.cdt.make.ui/.classpath
+++ b/build/org.eclipse.cdt.make.ui/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/build/org.eclipse.cdt.make.ui/.settings/org.eclipse.core.resources.prefs b/build/org.eclipse.cdt.make.ui/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/build/org.eclipse.cdt.make.ui/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/build/org.eclipse.cdt.make.ui/.settings/org.eclipse.jdt.core.prefs b/build/org.eclipse.cdt.make.ui/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/build/org.eclipse.cdt.make.ui/.settings/org.eclipse.jdt.core.prefs
+++ b/build/org.eclipse.cdt.make.ui/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/build/org.eclipse.cdt.make.ui/.settings/org.eclipse.jdt.ui.prefs b/build/org.eclipse.cdt.make.ui/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/build/org.eclipse.cdt.make.ui/.settings/org.eclipse.jdt.ui.prefs
+++ b/build/org.eclipse.cdt.make.ui/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/build/org.eclipse.cdt.make.ui/META-INF/MANIFEST.MF b/build/org.eclipse.cdt.make.ui/META-INF/MANIFEST.MF
index dae75ddd6c3..a22897a70e7 100644
--- a/build/org.eclipse.cdt.make.ui/META-INF/MANIFEST.MF
+++ b/build/org.eclipse.cdt.make.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.make.ui; singleton:=true
-Bundle-Version: 7.3.200.qualifier
+Bundle-Version: 8.1.200.qualifier
Bundle-Activator: org.eclipse.cdt.make.internal.ui.MakeUIPlugin
Bundle-Vendor: %providerName
Bundle-Localization: plugin
@@ -28,8 +28,8 @@ Require-Bundle: org.eclipse.ui.ide;bundle-version="[3.2.0,4.0.0)",
org.eclipse.ui.editors;bundle-version="[3.2.0,4.0.0)",
org.eclipse.core.resources;bundle-version="[3.2.0,4.0.0)",
org.eclipse.ui;bundle-version="[3.2.0,4.0.0)",
- org.eclipse.cdt.core;bundle-version="[5.0.0,7.0.0)",
- org.eclipse.cdt.ui;bundle-version="[6.0.0,7.0.0)",
+ org.eclipse.cdt.core;bundle-version="[7.0.0,8.0.0)",
+ org.eclipse.cdt.ui;bundle-version="[7.0.0,8.0.0)",
org.eclipse.cdt.make.core;bundle-version="[7.0.0,8.1.0)",
org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)",
org.eclipse.debug.ui;bundle-version="[3.2.0,4.0.0)",
@@ -40,6 +40,5 @@ Require-Bundle: org.eclipse.ui.ide;bundle-version="[3.2.0,4.0.0)",
org.eclipse.tools.templates.freemarker;bundle-version="1.0.0",
org.eclipse.cdt.launch;bundle-version="9.2.0"
Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Import-Package: com.ibm.icu.text
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Automatic-Module-Name: org.eclipse.cdt.make.ui
diff --git a/build/org.eclipse.cdt.make.ui/about.html b/build/org.eclipse.cdt.make.ui/about.html
index 164f781a8fd..b3134865230 100644
--- a/build/org.eclipse.cdt.make.ui/about.html
+++ b/build/org.eclipse.cdt.make.ui/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/build/org.eclipse.cdt.make.ui/build.properties b/build/org.eclipse.cdt.make.ui/build.properties
index d5f2c629194..8c88fa276b3 100644
--- a/build/org.eclipse.cdt.make.ui/build.properties
+++ b/build/org.eclipse.cdt.make.ui/build.properties
@@ -16,7 +16,8 @@ bin.includes = plugin.xml,\
about.html,\
plugin.properties,\
.,\
- META-INF/
+ META-INF/,\
+ css/
source.. = src/
src.includes = schema/,\
about.html
diff --git a/build/org.eclipse.cdt.make.ui/css/e4-dark_make.css b/build/org.eclipse.cdt.make.ui/css/e4-dark_make.css
new file mode 100644
index 00000000000..e9694f42dce
--- /dev/null
+++ b/build/org.eclipse.cdt.make.ui/css/e4-dark_make.css
@@ -0,0 +1,21 @@
+/*******************************************************************************
+ * Copyright (c) 2022 Kichwa Coders Canada Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ******************************************************************************/
+
+IEclipsePreferences#org-eclipse-cdt-make-ui:org-eclipse-cdt-make-ui {
+ preferences:
+ "org.eclipse.cdt.make.ui.editor.comment=98,98,98"
+ "org.eclipse.cdt.make.ui.editor.keyword=221,40,103"
+ "org.eclipse.cdt.make.ui.editor.macro_ref=121,171,255"
+ "org.eclipse.cdt.make.ui.editor.macro_def=255,191,38"
+ "org.eclipse.cdt.make.ui.editor.function=18,144,195"
+ "org.eclipse.cdt.make.ui.editor.default=200,200,200"
+ "org.eclipse.cdt.make.ui.editor.matching.brackets.color=170,170,170"
+}
diff --git a/build/org.eclipse.cdt.make.ui/plugin.xml b/build/org.eclipse.cdt.make.ui/plugin.xml
index 76e21adb9d2..69eaf7532e3 100644
--- a/build/org.eclipse.cdt.make.ui/plugin.xml
+++ b/build/org.eclipse.cdt.make.ui/plugin.xml
@@ -658,4 +658,13 @@
tabClass="org.eclipse.cdt.make.internal.ui.MakeBuildSettingsTab">
</provider>
</extension>
+ <extension
+ point="org.eclipse.e4.ui.css.swt.theme">
+ <stylesheet
+ uri="css/e4-dark_make.css">
+ <themeid
+ refid="org.eclipse.e4.ui.css.theme.e4_dark">
+ </themeid>
+ </stylesheet>
+ </extension>
</plugin>
diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/MakeEnvironmentBlock.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/MakeEnvironmentBlock.java
index de4e28f8d14..0965433fa65 100644
--- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/MakeEnvironmentBlock.java
+++ b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/MakeEnvironmentBlock.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004, 2015 QNX Software Systems and others.
+ * Copyright (c) 2004, 2020 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -10,9 +10,11 @@
*
* Contributors:
* QNX Software Systems - initial API and implementation
+ * Sergei Kovalchuk (NXP) - Switch dependency from com.ibm.icu to java.text
*******************************************************************************/
package org.eclipse.cdt.make.internal.ui;
+import java.text.MessageFormat;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Hashtable;
@@ -68,8 +70,6 @@ import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.ui.dialogs.ListSelectionDialog;
-import com.ibm.icu.text.MessageFormat;
-
/**
* @deprecated as of CDT 4.0. This tab was used to set preferences/properties
* for 3.X style projects.
diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/MakeResources.properties b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/MakeResources.properties
index 0b891312884..f6b7cc42994 100644
--- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/MakeResources.properties
+++ b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/MakeResources.properties
@@ -15,8 +15,6 @@
# IBM Corporation
###############################################################################
-MakeCWizard.title=C/Make Project
-MakeCWizard.description=Create a New C Project using 'make' to build it
MakeEnvironmentBlock.10=&Remove
MakeEnvironmentBlock.11=New Environment Variable
MakeEnvironmentBlock.12=Overwrite variable?
@@ -26,11 +24,7 @@ MakeEnvironmentBlock.15=Select Environment Variables
MakeEnvironmentBlock.16=Edit Environment Variable
MakeEnvironmentBlock.17=&Append environment to native environment
MakeEnvironmentBlock.18=Re&place native environment with specified environment
-MakeCWizard.task_name=Creating C project with Make builder...
-MakeCCWizard.title=C++/Make Project
-MakeCCWizard.description=Create a New C++ Project using 'make' to build it
-MakeCCWizard.task_name=Creating C++ project with Make builder...
MakeEnvironmentBlock.0=Variable
MakeEnvironmentBlock.1=Value
MakeEnvironmentBlock.2=&Name:
@@ -42,15 +36,6 @@ MakeEnvironmentBlock.7=N&ew...
MakeEnvironmentBlock.8=Se&lect...
MakeEnvironmentBlock.9=E&dit...
-MakeCWizardSettings.title=C/Make Project Settings
-MakeCWizardSettings.description=Define the project and 'make' builder settings
-
-MakeCCWizardSettings.title=C++/Make Project Settings
-MakeCCWizardSettings.description=Define the project and 'make' builder settings
-
-WizardMakeProjectConversion.title=Convert to a C/C++ project
-WizardMakeProjectConversion.description=The wizard adds C/C++ Nature to the selected projects to enable C/C++ Tools Support for them.
-WizardMakeProjectConversion.monitor.convertingToMakeProject=Converting to C/C++ Project...
WizardMakeProjectConversion.projectOptions.title=Project options
WizardMakeProjectConversion.projectOptions.projectType=Specify project type
WizardMakeProjectConversion.projectOptions.projectTypeTable=Project type:
diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/MakeUIPlugin.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/MakeUIPlugin.java
index 7811356737b..6549ae27c29 100644
--- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/MakeUIPlugin.java
+++ b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/MakeUIPlugin.java
@@ -39,6 +39,7 @@ import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.editors.text.EditorsUI;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.eclipse.ui.preferences.ScopedPreferenceStore;
@@ -104,7 +105,7 @@ public class MakeUIPlugin extends AbstractUIPlugin {
* Returns the active workbench window or <code>null</code> if none
*/
public static IWorkbenchWindow getActiveWorkbenchWindow() {
- return getDefault().getWorkbench().getActiveWorkbenchWindow();
+ return PlatformUI.getWorkbench().getActiveWorkbenchWindow();
}
/**
@@ -240,7 +241,7 @@ public class MakeUIPlugin extends AbstractUIPlugin {
if (getActiveWorkbenchShell() != null) {
return getActiveWorkbenchShell();
}
- IWorkbenchWindow[] windows = getDefault().getWorkbench().getWorkbenchWindows();
+ IWorkbenchWindow[] windows = PlatformUI.getWorkbench().getWorkbenchWindows();
return windows[0].getShell();
}
diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/actions/FoldingMessages.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/actions/FoldingMessages.java
index cf18a1f6ce0..60730ebe5a4 100644
--- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/actions/FoldingMessages.java
+++ b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/actions/FoldingMessages.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2010 IBM Corporation and others.
+ * Copyright (c) 2000, 2020 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -11,17 +11,17 @@
* Contributors:
* IBM Corporation - initial API and implementation
* Patrick Hofer - Bug 326265
+ * Sergei Kovalchuk (NXP) - Switch dependency from com.ibm.icu to java.text
*******************************************************************************/
// this file is based on org.eclipse.cdt.internal.ui.actions.FoldingMessages
package org.eclipse.cdt.make.internal.ui.actions;
+import java.text.MessageFormat;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
-import com.ibm.icu.text.MessageFormat;
-
/**
* Class that gives access to the folding messages resource bundle.
*/
diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/dnd/MakeTargetDndUtil.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/dnd/MakeTargetDndUtil.java
index 135321b5871..aae59fc88ec 100644
--- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/dnd/MakeTargetDndUtil.java
+++ b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/dnd/MakeTargetDndUtil.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2011 Andrew Gvozdev.
+ * Copyright (c) 2008, 2020 Andrew Gvozdev and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -10,11 +10,13 @@
*
* Contributors:
* Andrew Gvozdev (Quoin Inc.) - Initial implementation
+ * Sergei Kovalchuk (NXP) - Switch dependency from com.ibm.icu to java.text
*******************************************************************************/
package org.eclipse.cdt.make.internal.ui.dnd;
import java.lang.reflect.InvocationTargetException;
+import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.List;
@@ -43,8 +45,6 @@ import org.eclipse.swt.SWTException;
import org.eclipse.swt.dnd.DND;
import org.eclipse.swt.widgets.Shell;
-import com.ibm.icu.text.MessageFormat;
-
/**
* A collection of various functions for Make Target View drag and drop support.
*/
diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/dnd/TextTransferDropTargetListener.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/dnd/TextTransferDropTargetListener.java
index 2da17066acf..e29fd2ff4d0 100644
--- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/dnd/TextTransferDropTargetListener.java
+++ b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/dnd/TextTransferDropTargetListener.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2016 Andrew Gvozdev.
+ * Copyright (c) 2008, 2020 Andrew Gvozdev and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -10,10 +10,12 @@
*
* Contributors:
* Andrew Gvozdev (Quoin Inc.) - Initial implementation
+ * Sergei Kovalchuk (NXP) - Switch dependency from com.ibm.icu to java.text
*******************************************************************************/
package org.eclipse.cdt.make.internal.ui.dnd;
+import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.List;
@@ -28,8 +30,6 @@ import org.eclipse.swt.dnd.TextTransfer;
import org.eclipse.swt.dnd.Transfer;
import org.eclipse.swt.widgets.Shell;
-import com.ibm.icu.text.MessageFormat;
-
/**
* {@code TextTransferDropTargetListener} handles dropping of selected text to
* Make Target View. Each line of miltiline text passed is treated as separate
diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/part/WizardCheckboxTablePart.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/part/WizardCheckboxTablePart.java
index db8f2a27ddd..66d451977d7 100644
--- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/part/WizardCheckboxTablePart.java
+++ b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/part/WizardCheckboxTablePart.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2011 IBM Corporation and others.
+ * Copyright (c) 2000, 2020 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -10,9 +10,12 @@
*
* Contributors:
* IBM Corporation - initial API and implementation
+ * Sergei Kovalchuk (NXP) - Switch dependency from com.ibm.icu to java.text
*******************************************************************************/
package org.eclipse.cdt.make.internal.ui.part;
+import java.text.MessageFormat;
+
import org.eclipse.cdt.make.internal.ui.MakeUIPlugin;
import org.eclipse.jface.viewers.CheckboxTableViewer;
import org.eclipse.jface.viewers.StructuredViewer;
@@ -22,8 +25,6 @@ import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
-import com.ibm.icu.text.MessageFormat;
-
/**
* @version 1.0
*/
diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/preferences/AbstractMakefileEditorPreferencePage.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/preferences/AbstractMakefileEditorPreferencePage.java
index 9dfe6de71aa..9e893457641 100644
--- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/preferences/AbstractMakefileEditorPreferencePage.java
+++ b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/preferences/AbstractMakefileEditorPreferencePage.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2002, 2016 QNX Software Systems and others.
+ * Copyright (c) 2002, 2020 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -10,6 +10,7 @@
*
* Contributors:
* QNX Software Systems - Initial API and implementation
+ * Sergei Kovalchuk (NXP) - Switch dependency from com.ibm.icu to java.text
*******************************************************************************/
package org.eclipse.cdt.make.internal.ui.preferences;
@@ -17,6 +18,7 @@ package org.eclipse.cdt.make.internal.ui.preferences;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
+import java.text.MessageFormat;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
@@ -42,8 +44,6 @@ import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
-import com.ibm.icu.text.MessageFormat;
-
/**
* AbstraceMakeEditorPreferencePage
*/
diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/preferences/ColorEditor.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/preferences/ColorEditor.java
index df4f93a3f96..0e5a6118a67 100644
--- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/preferences/ColorEditor.java
+++ b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/preferences/ColorEditor.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2002, 2011 QNX Software Systems and others.
+ * Copyright (c) 2002, 2020 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -16,8 +16,6 @@ package org.eclipse.cdt.make.internal.ui.preferences;
import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Color;
@@ -68,17 +66,10 @@ public class ColorEditor {
}
});
- fButton.addDisposeListener(new DisposeListener() {
- @Override
- public void widgetDisposed(DisposeEvent event) {
- if (fImage != null) {
- fImage.dispose();
- fImage = null;
- }
- if (fColor != null) {
- fColor.dispose();
- fColor = null;
- }
+ fButton.addDisposeListener(event -> {
+ if (fImage != null) {
+ fImage.dispose();
+ fImage = null;
}
});
}
@@ -104,9 +95,6 @@ public class ColorEditor {
gc.setForeground(display.getSystemColor(SWT.COLOR_BLACK));
gc.drawRectangle(0, 2, fExtent.x - 1, fExtent.y - 4);
- if (fColor != null)
- fColor.dispose();
-
fColor = new Color(display, fColorValue);
gc.setBackground(fColor);
gc.fillRectangle(1, 3, fExtent.x - 2, fExtent.y - 5);
diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/preferences/MakefileEditorPreferencePage.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/preferences/MakefileEditorPreferencePage.java
index 4a353c19cfb..edeb8140b1d 100644
--- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/preferences/MakefileEditorPreferencePage.java
+++ b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/preferences/MakefileEditorPreferencePage.java
@@ -19,7 +19,6 @@ package org.eclipse.cdt.make.internal.ui.preferences;
import java.util.ArrayList;
import java.util.List;
-import org.eclipse.cdt.make.internal.ui.MakeUIPlugin;
import org.eclipse.cdt.make.internal.ui.preferences.OverlayPreferenceStore.OverlayKey;
import org.eclipse.cdt.make.internal.ui.text.ColorManager;
import org.eclipse.cdt.make.ui.IMakeHelpContextIds;
@@ -37,6 +36,8 @@ import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CTabFolder;
+import org.eclipse.swt.custom.CTabItem;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.Color;
@@ -47,8 +48,7 @@ import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.TabFolder;
-import org.eclipse.swt.widgets.TabItem;
+import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.model.WorkbenchViewerComparator;
/**
@@ -241,20 +241,21 @@ public class MakefileEditorPreferencePage extends AbstractMakefileEditorPreferen
@Override
protected Control createContents(Composite parent) {
- MakeUIPlugin.getDefault().getWorkbench().getHelpSystem().setHelp(getControl(),
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(getControl(),
IMakeHelpContextIds.MAKE_EDITOR_PREFERENCE_PAGE);
getOverlayStore().load();
getOverlayStore().start();
- TabFolder folder = new TabFolder(parent, SWT.NONE);
+ CTabFolder folder = new CTabFolder(parent, SWT.NONE);
folder.setLayout(new TabFolderLayout());
folder.setLayoutData(new GridData(GridData.FILL_BOTH));
- TabItem item = new TabItem(folder, SWT.NONE);
+ CTabItem item = new CTabItem(folder, SWT.NONE);
+ folder.setSelection(0);
item.setText(MakefilePreferencesMessages.getString("MakefileEditorPreferencePage.syntax")); //$NON-NLS-1$
item.setControl(createSyntaxPage(folder));
- item = new TabItem(folder, SWT.NONE);
+ item = new CTabItem(folder, SWT.NONE);
item.setText(MakefilePreferencesMessages.getString("MakefileEditorPreferencePage.folding")); //$NON-NLS-1$
item.setControl(createFoldingTabContent(folder));
@@ -406,7 +407,7 @@ public class MakefileEditorPreferencePage extends AbstractMakefileEditorPreferen
return colorComposite;
}
- private Composite createFoldingTabContent(TabFolder folder) {
+ private Composite createFoldingTabContent(CTabFolder folder) {
Composite composite = new Composite(folder, SWT.NULL);
// assume parent page uses griddata
GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_CENTER | GridData.VERTICAL_ALIGN_FILL);
diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/text/ColorManager.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/text/ColorManager.java
index a69e2ca3dba..e4a82572e23 100644
--- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/text/ColorManager.java
+++ b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/text/ColorManager.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2013 QNX Software Systems and others.
+ * Copyright (c) 2000, 2020 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -54,13 +54,6 @@ public class ColorManager implements ISharedTextColors {
protected Map<RGB, Color> fColorTable = new HashMap<>(10);
@Override
- public void dispose() {
- for (Color color : fColorTable.values()) {
- color.dispose();
- }
- }
-
- @Override
public Color getColor(RGB rgb) {
Color color = fColorTable.get(rgb);
if (color == null) {
diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/text/makefile/MakefileCompletionProcessor.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/text/makefile/MakefileCompletionProcessor.java
index 893142798d6..37cb79ed3fb 100644
--- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/text/makefile/MakefileCompletionProcessor.java
+++ b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/text/makefile/MakefileCompletionProcessor.java
@@ -78,7 +78,7 @@ public class MakefileCompletionProcessor implements IContentAssistProcessor {
protected IEditorPart fEditor;
protected IWorkingCopyManager fManager;
- private Comparator<IDirective> directivesComparator = new Comparator<IDirective>() {
+ private Comparator<IDirective> directivesComparator = new Comparator<>() {
@Override
public int compare(IDirective o1, IDirective o2) {
return o1.toString().compareToIgnoreCase(o2.toString());
diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/IMakeHelpContextIds.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/IMakeHelpContextIds.java
index 10c6557f44a..74f0991f05e 100644
--- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/IMakeHelpContextIds.java
+++ b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/IMakeHelpContextIds.java
@@ -28,13 +28,6 @@ public interface IMakeHelpContextIds {
public static final String SCANNER_CONFIG_DISCOVERY_OPTIONS = PREFIX + "discovery_preferences"; //$NON-NLS-1$
public static final String MAKE_PROP_DISCOVERY = PREFIX + "std_prop_discovery"; //$NON-NLS-1$
public static final String MAKE_VIEW = PREFIX + "make_targets_view"; //$NON-NLS-1$
- public static final String MAKE_PROJ_WIZ_NAME_PAGE = PREFIX + "new_proj_wiz_s_name"; //$NON-NLS-1$
- public static final String MAKE_PROJ_WIZ_PROJECTS_TAB = PREFIX + "new_proj_wiz_s_proj"; //$NON-NLS-1$
- public static final String MAKE_PROJ_WIZ_MAKEBUILDER_TAB = PREFIX + "new_proj_wiz_s_mbuilder"; //$NON-NLS-1$
- public static final String MAKE_PROJ_WIZ_ERRORPARSER_TAB = PREFIX + "new_proj_wiz_s_errorp"; //$NON-NLS-1$
- public static final String MAKE_PROJ_WIZ_BINARYPARSER_TAB = PREFIX + "new_proj_wiz_s_binary"; //$NON-NLS-1$
- public static final String MAKE_PROJ_WIZ_DISCOVERY_TAB = PREFIX + "new_proj_wiz_s_discovery"; //$NON-NLS-1$
- public static final String MAKE_PROJ_WIZ_INDEXER_TAB = PREFIX + "new_proj_wiz_s_cindexer"; //$NON-NLS-1$
public static final String MAKE_PROP_ERROR_PARSER = PREFIX + "std_prop_error"; //$NON-NLS-1$
public static final String MAKE_PROP_BINARY_PARSER = PREFIX + "std_prop_binary"; //$NON-NLS-1$
diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/MakeContentProvider.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/MakeContentProvider.java
index be6f23c2921..ebe8d1102ca 100644
--- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/MakeContentProvider.java
+++ b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/MakeContentProvider.java
@@ -422,7 +422,7 @@ public class MakeContentProvider implements ITreeContentProvider, IMakeTargetLis
/**
* Check if the resource is in the list of source entries.
-
+ *
* @param rc - resource to check.
* @return {@code true} if the resource is a source folder, {@code false} otherwise.
*
diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/views/DeleteTargetAction.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/views/DeleteTargetAction.java
index ce35cf9faad..4f3e4f98bc6 100644
--- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/views/DeleteTargetAction.java
+++ b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/views/DeleteTargetAction.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2016 QNX Software Systems and others.
+ * Copyright (c) 2000, 2020 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -10,9 +10,11 @@
*
* Contributors:
* QNX Software Systems - Initial API and implementation
+ * Sergei Kovalchuk (NXP) - Switch dependency from com.ibm.icu to java.text
*******************************************************************************/
package org.eclipse.cdt.make.ui.views;
+import java.text.MessageFormat;
import java.util.List;
import org.eclipse.cdt.make.core.IMakeTarget;
@@ -30,8 +32,6 @@ import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.actions.SelectionListenerAction;
-import com.ibm.icu.text.MessageFormat;
-
/**
* @noextend This class is not intended to be subclassed by clients.
* @noinstantiate This class is not intended to be instantiated by clients.
diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/views/MakeView.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/views/MakeView.java
index de3957e0071..66d69efa839 100644
--- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/views/MakeView.java
+++ b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/views/MakeView.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2015 QNX Software Systems and others.
+ * Copyright (c) 2000, 2021 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -15,6 +15,17 @@
*******************************************************************************/
package org.eclipse.cdt.make.ui.views;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.cdt.core.CCorePlugin;
+import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
+import org.eclipse.cdt.core.settings.model.ICProjectDescription;
+import org.eclipse.cdt.core.settings.model.ICProjectDescriptionManager;
+import org.eclipse.cdt.core.settings.model.ICSourceEntry;
+import org.eclipse.cdt.make.core.IMakeTarget;
+import org.eclipse.cdt.make.core.IMakeTargetManager;
+import org.eclipse.cdt.make.core.MakeCorePlugin;
import org.eclipse.cdt.make.internal.ui.MakeUIPlugin;
import org.eclipse.cdt.make.internal.ui.dnd.AbstractContainerAreaDropAdapter;
import org.eclipse.cdt.make.internal.ui.dnd.AbstractSelectionDragAdapter;
@@ -30,8 +41,13 @@ import org.eclipse.cdt.make.ui.IMakeHelpContextIds;
import org.eclipse.cdt.make.ui.MakeContentProvider;
import org.eclipse.cdt.make.ui.MakeLabelProvider;
import org.eclipse.cdt.make.ui.TargetSourceContainer;
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IWorkspaceRoot;
import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.Path;
import org.eclipse.jface.action.IMenuListener;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.IToolBarManager;
@@ -41,12 +57,16 @@ import org.eclipse.jface.bindings.BindingManagerEvent;
import org.eclipse.jface.bindings.IBindingManagerListener;
import org.eclipse.jface.util.DelegatingDragAdapter;
import org.eclipse.jface.util.DelegatingDropAdapter;
+import org.eclipse.jface.util.IPropertyChangeListener;
import org.eclipse.jface.util.LocalSelectionTransfer;
+import org.eclipse.jface.util.PropertyChangeEvent;
import org.eclipse.jface.viewers.DoubleClickEvent;
import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.ViewerComparator;
import org.eclipse.swt.SWT;
@@ -57,12 +77,21 @@ import org.eclipse.swt.dnd.TextTransfer;
import org.eclipse.swt.dnd.Transfer;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.ScrollBar;
import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Tree;
import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.IMemento;
+import org.eclipse.ui.IViewSite;
import org.eclipse.ui.IWorkbenchCommandConstants;
+import org.eclipse.ui.IWorkingSet;
+import org.eclipse.ui.IWorkingSetManager;
+import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.ResourceWorkingSetFilter;
import org.eclipse.ui.actions.ActionFactory;
import org.eclipse.ui.actions.TextActionHandler;
+import org.eclipse.ui.actions.WorkingSetFilterActionGroup;
import org.eclipse.ui.keys.IBindingService;
import org.eclipse.ui.part.DrillDownAdapter;
import org.eclipse.ui.part.ViewPart;
@@ -75,6 +104,17 @@ import org.eclipse.ui.part.ViewPart;
*/
public class MakeView extends ViewPart {
private static final String TARGET_BUILD_LAST_COMMAND = "org.eclipse.cdt.make.ui.targetBuildLastCommand"; //$NON-NLS-1$
+ // Persistance tags.
+ private static final String TAG_SELECTION = "selection"; //$NON-NLS-1$
+ private static final String TAG_EXPANDED = "expanded"; //$NON-NLS-1$
+ private static final String TAG_CONTAINER = "container"; //$NON-NLS-1$
+ private static final String TAG_PATH = "path"; //$NON-NLS-1$
+ private static final String TAG_MAKE_TARGET = "makeTarget"; //$NON-NLS-1$
+ private static final String TAG_SOURCE_CONTAINER = "sourceContainer"; //$NON-NLS-1$
+ private static final String TAG_NAME = "name"; //$NON-NLS-1$
+ private static final String TAG_VERTICAL_POSITION = "verticalPosition"; //$NON-NLS-1$
+ private static final String TAG_HORIZONTAL_POSITION = "horizontalPosition"; //$NON-NLS-1$
+ private static final String TAG_WORKINGSET = "workingSet"; //$NON-NLS-1$
private Clipboard clipboard;
@@ -89,6 +129,43 @@ public class MakeView extends ViewPart {
private DrillDownAdapter drillDownAdapter;
private FilterEmtpyFoldersAction trimEmptyFolderAction;
private IBindingService bindingService;
+ private ResourceWorkingSetFilter workingSetFilter = new ResourceWorkingSetFilter();
+ private WorkingSetFilterActionGroup workingSetGroup;
+ private IMemento memento;
+
+ private IPropertyChangeListener workingSetListener = ev -> {
+ String property = ev.getProperty();
+ Object newValue = ev.getNewValue();
+ Object oldValue = ev.getOldValue();
+ IWorkingSet filterWorkingSet = workingSetFilter.getWorkingSet();
+
+ if (property == null) {
+ return;
+ }
+ if (IWorkingSetManager.CHANGE_WORKING_SET_REMOVE.equals(property) && oldValue == filterWorkingSet) {
+ setWorkingSet(null);
+ } else if (IWorkingSetManager.CHANGE_WORKING_SET_CONTENT_CHANGE.equals(property)
+ && newValue == filterWorkingSet) {
+ fViewer.refresh();
+ }
+ };
+
+ IPropertyChangeListener workingSetUpdater = new IPropertyChangeListener() {
+ @Override
+ public void propertyChange(PropertyChangeEvent event) {
+ String property = event.getProperty();
+
+ if (WorkingSetFilterActionGroup.CHANGE_WORKING_SET.equals(property)) {
+ Object newValue = event.getNewValue();
+
+ if (newValue instanceof IWorkingSet) {
+ setWorkingSet((IWorkingSet) newValue);
+ } else if (newValue == null) {
+ setWorkingSet(null);
+ }
+ }
+ }
+ };
public MakeView() {
super();
@@ -101,11 +178,13 @@ public class MakeView extends ViewPart {
@Override
public void createPartControl(Composite parent) {
- MakeUIPlugin.getDefault().getWorkbench().getHelpSystem().setHelp(parent, IMakeHelpContextIds.MAKE_VIEW);
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, IMakeHelpContextIds.MAKE_VIEW);
fViewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
fViewer.setUseHashlookup(true);
fViewer.setContentProvider(new MakeContentProvider());
fViewer.setLabelProvider(new MakeLabelProvider());
+ initFilters(fViewer);
+
initDragAndDrop();
drillDownAdapter = new DrillDownAdapter(fViewer);
@@ -137,6 +216,17 @@ public class MakeView extends ViewPart {
}
});
fViewer.setInput(ResourcesPlugin.getWorkspace().getRoot());
+
+ if (memento != null) {
+ // The working set selection needs to be restored prior to making the actions
+ // and connecting to the manager
+ restoreStateWorkingSetSelection(memento);
+ }
+
+ //Add the property changes after all of the UI work has been done.
+ IWorkingSetManager wsmanager = getViewSite().getWorkbenchWindow().getWorkbench().getWorkingSetManager();
+ wsmanager.addPropertyChangeListener(workingSetListener);
+
getSite().setSelectionProvider(fViewer);
makeActions();
@@ -149,6 +239,11 @@ public class MakeView extends ViewPart {
if (bindingService != null) {
bindingService.addBindingManagerListener(bindingManagerListener);
}
+
+ if (memento != null) {
+ restoreState(memento);
+ }
+ memento = null;
}
/**
@@ -195,6 +290,8 @@ public class MakeView extends ViewPart {
deleteTargetAction = new DeleteTargetAction(shell);
editTargetAction = new EditTargetAction(shell);
trimEmptyFolderAction = new FilterEmtpyFoldersAction(fViewer);
+ workingSetGroup = new WorkingSetFilterActionGroup(shell, workingSetUpdater);
+ workingSetGroup.setWorkingSet(getWorkingSet());
}
private void contributeToActionBars() {
@@ -208,6 +305,8 @@ public class MakeView extends ViewPart {
textActionHandler.setDeleteAction(deleteTargetAction);
actionBars.setGlobalActionHandler(ActionFactory.RENAME.getId(), editTargetAction);
+
+ workingSetGroup.fillActionBars(actionBars);
}
private void fillLocalToolBar(IToolBarManager toolBar) {
@@ -272,6 +371,7 @@ public class MakeView extends ViewPart {
editTargetAction.selectionChanged(sel);
copyTargetAction.selectionChanged(sel);
pasteTargetAction.selectionChanged(sel);
+ workingSetGroup.updateActionBars();
}
/**
@@ -289,6 +389,12 @@ public class MakeView extends ViewPart {
bindingService = null;
}
+ IWorkingSetManager wsmanager = getViewSite().getWorkbenchWindow().getWorkbench().getWorkingSetManager();
+ if (workingSetListener != null) {
+ wsmanager.removePropertyChangeListener(workingSetListener);
+ workingSetListener = null;
+ }
+
super.dispose();
}
@@ -327,4 +433,234 @@ public class MakeView extends ViewPart {
}
};
+ /**
+ * Returns the working set filter for this view.
+ *
+ * @return the working set
+ * @since 8.1
+ */
+ public IWorkingSet getWorkingSet() {
+ return workingSetFilter.getWorkingSet();
+ }
+
+ /**
+ * Adds the filters to the viewer.
+ *
+ * @param viewer
+ * the viewer
+ */
+ void initFilters(TreeViewer viewer) {
+ viewer.addFilter(workingSetFilter);
+ }
+
+ private void saveState(IMemento memento, Object[] elements) {
+ for (Object element : elements) {
+ if (element instanceof IMakeTarget) {
+ IMakeTarget makeTarget = (IMakeTarget) element;
+ IContainer c = makeTarget.getContainer();
+ if (c.getFullPath() != null) {
+ IMemento elementMem = memento.createChild(TAG_MAKE_TARGET);
+ elementMem.putString(TAG_PATH, c.getFullPath().toPortableString());
+ elementMem.putString(TAG_NAME, makeTarget.getName());
+ }
+ } else if (element instanceof TargetSourceContainer) {
+ TargetSourceContainer targetSourceContainer = (TargetSourceContainer) element;
+ IContainer c = targetSourceContainer.getContainer();
+ if (c.getFullPath() != null) {
+ IMemento elementMem = memento.createChild(TAG_SOURCE_CONTAINER);
+ elementMem.putString(TAG_PATH, c.getFullPath().toPortableString());
+ }
+ } else if (element instanceof IContainer) {
+ IContainer c = (IContainer) element;
+ if (c.getLocation() != null) {
+ IMemento elementMem = memento.createChild(TAG_CONTAINER);
+ elementMem.putString(TAG_PATH, c.getFullPath().toPortableString());
+ }
+ } else {
+ // Unexpected/unknown type, expansion or selection of it will not be restored
+ }
+ }
+ }
+
+ private List<Object> restoreStateElements(IMemento memento) {
+ IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
+ IMakeTargetManager makeTargetManager = MakeCorePlugin.getDefault().getTargetManager();
+
+ List<Object> elements = new ArrayList<>();
+ IMemento[] makeTargetMementos = memento.getChildren(TAG_MAKE_TARGET);
+ for (IMemento mem : makeTargetMementos) {
+ String path = mem.getString(TAG_PATH);
+ String name = mem.getString(TAG_NAME);
+ if (path == null || name == null) {
+ continue;
+ }
+ IResource res = root.findMember(Path.fromPortableString(path));
+ if (res instanceof IContainer) {
+ IContainer container = (IContainer) res;
+ try {
+ IMakeTarget makeTarget = makeTargetManager.findTarget(container, name);
+ if (makeTarget != null) {
+ elements.add(makeTarget);
+ }
+ } catch (CoreException e) {
+ continue;
+ }
+ }
+ }
+
+ IMemento[] sourceContainerMementos = memento.getChildren(TAG_SOURCE_CONTAINER);
+ for (IMemento mem : sourceContainerMementos) {
+ String path = mem.getString(TAG_PATH);
+ if (path == null) {
+ continue;
+ }
+ IResource res = root.findMember(Path.fromPortableString(path));
+ if (res == null) {
+ continue;
+ }
+ IProject project = res.getProject();
+ ICSourceEntry[] srcEntries = getSourceEntries(project);
+ for (ICSourceEntry srcEntry : srcEntries) {
+ if (srcEntry.getFullPath().equals(res.getFullPath())) {
+ elements.add(new TargetSourceContainer(srcEntry));
+ }
+ }
+ }
+
+ IMemento[] containerMementos = memento.getChildren(TAG_CONTAINER);
+ for (IMemento mem : containerMementos) {
+ String path = mem.getString(TAG_PATH);
+ if (path == null) {
+ continue;
+ }
+ IResource res = root.findMember(Path.fromPortableString(path));
+ if (res == null) {
+ continue;
+ }
+ elements.add(res);
+ }
+
+ return elements;
+ }
+
+ @Override
+ public void saveState(IMemento memento) {
+ if (fViewer == null) {
+ if (this.memento != null) { //Keep the old state;
+ memento.putMemento(this.memento);
+ }
+ return;
+ }
+
+ //save expanded elements
+ Tree tree = fViewer.getTree();
+ Object[] expandedElements = fViewer.getExpandedElements();
+ if (expandedElements.length > 0) {
+ IMemento expandedMem = memento.createChild(TAG_EXPANDED);
+ saveState(expandedMem, expandedElements);
+ }
+
+ //save selection
+ Object[] elements = ((IStructuredSelection) fViewer.getSelection()).toArray();
+ if (elements.length > 0) {
+ IMemento selectionMem = memento.createChild(TAG_SELECTION);
+ saveState(selectionMem, elements);
+ }
+
+ //save vertical position
+ ScrollBar bar = tree.getVerticalBar();
+ int position = bar != null ? bar.getSelection() : 0;
+ memento.putInteger(TAG_VERTICAL_POSITION, position);
+ //save horizontal position
+ bar = tree.getHorizontalBar();
+ position = bar != null ? bar.getSelection() : 0;
+ memento.putInteger(TAG_HORIZONTAL_POSITION, position);
+
+ //Save the working set away
+ if (workingSetFilter.getWorkingSet() != null) {
+ String wsname = workingSetFilter.getWorkingSet().getName();
+ if (wsname != null) {
+ memento.putString(TAG_WORKINGSET, wsname);
+ }
+ }
+ }
+
+ private void restoreState(IMemento memento) {
+
+ IMemento expandedMemento = memento.getChild(TAG_EXPANDED);
+ if (expandedMemento != null) {
+ fViewer.setExpandedElements(restoreStateElements(expandedMemento).toArray());
+ }
+ IMemento selectionMemento = memento.getChild(TAG_SELECTION);
+ if (selectionMemento != null) {
+ fViewer.setSelection(new StructuredSelection(restoreStateElements(selectionMemento)));
+ }
+
+ Tree tree = fViewer.getTree();
+ ScrollBar bar = tree.getVerticalBar();
+ if (bar != null) {
+ Integer position = memento.getInteger(TAG_VERTICAL_POSITION);
+ if (position != null) {
+ bar.setSelection(position);
+ }
+ }
+ bar = tree.getHorizontalBar();
+ if (bar != null) {
+ Integer position = memento.getInteger(TAG_HORIZONTAL_POSITION);
+ if (position != null) {
+ bar.setSelection(position);
+ }
+ }
+ }
+
+ private void restoreStateWorkingSetSelection(IMemento memento) {
+ String wsname = memento.getString(TAG_WORKINGSET);
+ if (wsname != null && !wsname.isEmpty()) {
+ IWorkingSetManager wsmanager = getViewSite().getWorkbenchWindow().getWorkbench().getWorkingSetManager();
+ IWorkingSet workingSet = wsmanager.getWorkingSet(wsname);
+ if (workingSet != null) {
+ workingSetFilter.setWorkingSet(workingSet);
+ }
+ }
+ }
+
+ /**
+ * @since 8.1
+ */
+ public void setWorkingSet(IWorkingSet workingSet) {
+ Object[] expanded = fViewer.getExpandedElements();
+ ISelection selection = fViewer.getSelection();
+
+ workingSetFilter.setWorkingSet(workingSet);
+ fViewer.refresh();
+ fViewer.setExpandedElements(expanded);
+ if (selection.isEmpty() == false && selection instanceof IStructuredSelection) {
+ IStructuredSelection structuredSelection = (IStructuredSelection) selection;
+ fViewer.reveal(structuredSelection.getFirstElement());
+ }
+ }
+
+ @Override
+ public void init(IViewSite site, IMemento memento) throws PartInitException {
+ super.init(site, memento);
+ this.memento = memento;
+ }
+
+ /**
+ * Get source entries for default setting configuration (i.e. configuration shown in UI).
+ */
+ private static ICSourceEntry[] getSourceEntries(IProject project) {
+ ICProjectDescriptionManager mgr = CCorePlugin.getDefault().getProjectDescriptionManager();
+ ICProjectDescription prjDescription = mgr.getProjectDescription(project, false);
+ if (prjDescription != null) {
+ ICConfigurationDescription cfgDescription = prjDescription.getDefaultSettingConfiguration();
+ if (cfgDescription != null) {
+ ICSourceEntry[] srcEntries = cfgDescription.getResolvedSourceEntries();
+ return srcEntries;
+ }
+ }
+
+ return new ICSourceEntry[0];
+ }
+
}
diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/wizards/ConvertToMakeProjectWizard.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/wizards/ConvertToMakeProjectWizard.java
deleted file mode 100644
index 8d35034f16e..00000000000
--- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/wizards/ConvertToMakeProjectWizard.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2010 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.make.ui.wizards;
-
-import org.eclipse.cdt.make.core.MakeCorePlugin;
-import org.eclipse.cdt.make.internal.ui.MakeUIPlugin;
-import org.eclipse.cdt.ui.wizards.conversion.ConversionWizard;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.SubProgressMonitor;
-import org.eclipse.jface.wizard.Wizard;
-
-/**
- * This wizard provides a method by which the user can
- * add a C nature to a project that previously had no nature associated with it.
- *
- * This wizard was used for 3.X style projects. It is left here for compatibility
- * reasons only. The wizard is superseded by MBS Project Conversion Wizard,
- * class {@code org.eclipse.cdt.managedbuilder.ui.wizards.ConvertToMakeWizard}.
- *
- * @deprecated as of CDT 4.0.
- *
- * @noextend This class is not intended to be subclassed by clients.
- * @noinstantiate This class is not intended to be instantiated by clients.
- */
-@Deprecated
-public class ConvertToMakeProjectWizard extends ConversionWizard {
-
- private static final String WZ_TITLE = "WizardMakeProjectConversion.title"; //$NON-NLS-1$
- private static final String WZ_DESC = "WizardMakeProjectConversion.description"; //$NON-NLS-1$
- private static final String PREFIX = "WizardMakeConversion"; //$NON-NLS-1$
- private static final String WINDOW_TITLE = "WizardMakeConversion.windowTitle"; //$NON-NLS-1$
-
- /**
- * ConvertToStdMakeConversionWizard Wizard constructor
- */
- public ConvertToMakeProjectWizard() {
- this(getWindowTitleResource(), getWzDescriptionResource());
- }
-
- /**
- * ConvertToStdMakeConversionWizard Wizard constructor
- */
- public ConvertToMakeProjectWizard(String title, String desc) {
- super(title, desc);
- }
-
- /**
- * Method getWzDescriptionResource, allows Wizard description label value
- * to be changed by subclasses
- *
- * @return String
- */
- protected static String getWzDescriptionResource() {
- return MakeUIPlugin.getResourceString(WZ_DESC);
- }
-
- /**
- * Method getWzTitleResource, allows Wizard description label value
- * to be changed by subclasses
- *
- * @return String
- */
- protected static String getWzTitleResource() {
- return MakeUIPlugin.getResourceString(WZ_TITLE);
- }
-
- /**
- * Method getWindowTitleResource, allows Wizard Title label value to be
- * changed by subclasses
- *
- * @return String
- */
- protected static String getWindowTitleResource() {
- return MakeUIPlugin.getResourceString(WINDOW_TITLE);
- }
-
- /**
- * Method getPrefix, allows prefix value to be changed by subclasses
- *
- * @return String
- */
- protected static String getPrefix() {
- return PREFIX;
- }
-
- /**
- * Method addPages adds our Simple to C conversion Wizard page.
- *
- * @see Wizard#addPages
- */
- @Override
- public void addPages() {
- addPage(mainPage = new ConvertToMakeProjectWizardPage(getPrefix()));
- }
-
- @Override
- public String getProjectID() {
- return MakeCorePlugin.MAKE_PROJECT_ID;
- }
-
- @Override
- protected void doRun(IProgressMonitor monitor) throws CoreException {
- monitor.beginTask(MakeUIPlugin.getResourceString("WizardMakeProjectConversion.monitor.convertingToMakeProject"), //$NON-NLS-1$
- 2);
- try {
- super.doRun(new SubProgressMonitor(monitor, 1));
- } finally {
- monitor.done();
- }
- }
-}
diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/wizards/ConvertToMakeProjectWizardPage.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/wizards/ConvertToMakeProjectWizardPage.java
deleted file mode 100644
index df7effb66f1..00000000000
--- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/wizards/ConvertToMakeProjectWizardPage.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2010 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.make.ui.wizards;
-
-import org.eclipse.cdt.core.CCorePlugin;
-import org.eclipse.cdt.make.core.MakeProjectNature;
-import org.eclipse.cdt.make.core.scannerconfig.ScannerConfigNature;
-import org.eclipse.cdt.make.internal.ui.MakeUIPlugin;
-import org.eclipse.cdt.ui.wizards.conversion.ConvertProjectWizardPage;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.SubProgressMonitor;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.wizards.newresource.BasicNewResourceWizard;
-
-/**
- *
- * ConvertToStdMakeProjectWizardPage
- * Standard main page for a wizard that adds a C project Nature to a project with no nature associated with it.
- * This conversion is one way in that the project cannot be converted back (i.e have the nature removed).
- *
- * @author Judy N. Green
- * @since Aug 6, 2002
- *<p>
- * Example useage:
- * <pre>
- * mainPage = new ConvertToStdMakeProjectWizardPage("ConvertProjectPage");
- * mainPage.setTitle("Project Conversion");
- * mainPage.setDescription("Add C or C++ a Nature to a project.");
- * </pre>
- * </p>
- *
- * @deprecated as of CDT 4.0. This page was used for 3.X style projects.
- * It is left here for compatibility reasons only.
- *
- * @noextend This class is not intended to be subclassed by clients.
- * @noinstantiate This class is not intended to be instantiated by clients.
- */
-@Deprecated
-public class ConvertToMakeProjectWizardPage extends ConvertProjectWizardPage {
-
- private static final String WZ_TITLE = "WizardMakeProjectConversion.title"; //$NON-NLS-1$
- private static final String WZ_DESC = "WizardMakeProjectConversion.description"; //$NON-NLS-1$
-
- /**
- * Constructor for ConvertToStdMakeProjectWizardPage.
- */
- public ConvertToMakeProjectWizardPage(String pageName) {
- super(pageName);
- }
-
- /**
- * Method getWzTitleResource returns the correct Title Label for this class
- * overriding the default in the superclass.
- */
- @Override
- protected String getWzTitleResource() {
- return MakeUIPlugin.getResourceString(WZ_TITLE);
- }
-
- /**
- * Method getWzDescriptionResource returns the correct description
- * Label for this class overriding the default in the superclass.
- */
- @Override
- protected String getWzDescriptionResource() {
- return MakeUIPlugin.getResourceString(WZ_DESC);
- }
-
- /**
- * Method isCandidate returns true for all projects.
- */
- @Override
- public boolean isCandidate(IProject project) {
- return true; // all
- }
-
- @Override
- public void convertProject(IProject project, IProgressMonitor monitor, String projectID) throws CoreException {
- monitor.beginTask(MakeUIPlugin.getResourceString("WizardMakeProjectConversion.monitor.convertingToMakeProject"), //$NON-NLS-1$
- 3);
- try {
- super.convertProject(project, new SubProgressMonitor(monitor, 1), projectID);
- MakeProjectNature.addNature(project, new SubProgressMonitor(monitor, 1));
- ScannerConfigNature.addScannerConfigNature(project);
- ScannerConfigNature.initializeDiscoveryOptions(project);
- CCorePlugin.getDefault().mapCProjectOwner(project, projectID, true);
- } finally {
- monitor.done();
- }
- }
-
- @Override
- public void createControl(Composite parent) {
- super.createControl(parent);
- IStructuredSelection sel = ((BasicNewResourceWizard) getWizard()).getSelection();
- if (sel != null) {
- tableViewer.setCheckedElements(sel.toArray());
- setPageComplete(validatePage());
- }
- }
-
-}
diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/wizards/MakeProjectWizardOptionPage.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/wizards/MakeProjectWizardOptionPage.java
deleted file mode 100644
index 334470d109b..00000000000
--- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/wizards/MakeProjectWizardOptionPage.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2010 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- * QNX Software System
- *******************************************************************************/
-
-package org.eclipse.cdt.make.ui.wizards;
-
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.cdt.make.core.MakeCorePlugin;
-import org.eclipse.cdt.make.internal.ui.MakeProjectOptionBlock;
-import org.eclipse.cdt.make.internal.ui.MakeUIPlugin;
-import org.eclipse.cdt.make.ui.IMakeHelpContextIds;
-import org.eclipse.cdt.ui.dialogs.ICOptionContainer;
-import org.eclipse.cdt.ui.dialogs.ICOptionPage;
-import org.eclipse.cdt.ui.dialogs.IndexerBlock;
-import org.eclipse.cdt.ui.dialogs.ReferenceBlock;
-import org.eclipse.cdt.ui.dialogs.TabFolderOptionBlock;
-import org.eclipse.cdt.ui.wizards.NewCProjectWizard;
-import org.eclipse.cdt.ui.wizards.NewCProjectWizardOptionPage;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.Preferences;
-
-/**
- * Standard main page for a wizard that is creates a project resource.
- * <p>
- * This page may be used by clients as-is; it may be also be subclassed to suit.
- * </p>
- * <p>
- * Example usage:
- * <pre>
- * mainPage = new CProjectWizardPage("basicCProjectPage");
- * mainPage.setTitle("Project");
- * mainPage.setDescription("Create a new project resource.");
- * </pre>
- * </p>
- *
- * @deprecated as of CDT 4.0. This option page was used for New Project Wizard
- * for 3.X style projects.
- *
- * @noextend This class is not intended to be subclassed by clients.
- * @noinstantiate This class is not intended to be instantiated by clients.
- */
-@Deprecated
-public class MakeProjectWizardOptionPage extends NewCProjectWizardOptionPage {
- MakeWizardOptionBlock makeWizardBlock;
-
- public class MakeWizardOptionBlock extends MakeProjectOptionBlock {
- IndexerBlock indexBlock;
-
- public MakeWizardOptionBlock(ICOptionContainer parent) {
- super(parent);
- }
-
- @Override
- protected void addTabs() {
- addTab(new ReferenceBlock());
- super.addTabs();
- addTab(indexBlock = new IndexerBlock());
- }
-
- public void setupHelpContextIds() {
- List<ICOptionPage> pages = getOptionPages();
-
- Iterator<ICOptionPage> iter = pages.iterator();
- for (int i = 0; i < 6 && iter.hasNext(); i++) {
- ICOptionPage page = iter.next();
-
- String id = null;
- switch (i) {
- case 0:
- id = IMakeHelpContextIds.MAKE_PROJ_WIZ_PROJECTS_TAB;
- break;
- case 1:
- id = IMakeHelpContextIds.MAKE_PROJ_WIZ_MAKEBUILDER_TAB;
- break;
- case 2:
- id = IMakeHelpContextIds.MAKE_PROJ_WIZ_ERRORPARSER_TAB;
- break;
- case 3:
- id = IMakeHelpContextIds.MAKE_PROJ_WIZ_BINARYPARSER_TAB;
- break;
- case 4:
- id = IMakeHelpContextIds.MAKE_PROJ_WIZ_DISCOVERY_TAB;
- break;
- case 5:
- id = IMakeHelpContextIds.MAKE_PROJ_WIZ_INDEXER_TAB;
- break;
- }
- MakeUIPlugin.getDefault().getWorkbench().getHelpSystem().setHelp(page.getControl(), id);
- }
- }
- }
-
- public MakeProjectWizardOptionPage(String title, String description) {
- super("MakeProjectSettingsPage"); //$NON-NLS-1$
- setTitle(title);
- setDescription(description);
- }
-
- @Override
- protected TabFolderOptionBlock createOptionBlock() {
- return (makeWizardBlock = new MakeWizardOptionBlock(this));
- }
-
- @Override
- public IProject getProject() {
- return ((NewCProjectWizard) getWizard()).getNewProject();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.ui.dialogs.ICOptionContainer#getPreference()
- */
- @Override
- public Preferences getPreferences() {
- return MakeCorePlugin.getDefault().getPluginPreferences();
- }
-
- public boolean isIndexerEnabled() {
- // isIndexEnabled() * @deprecated always returns false
- // return makeWizardBlock.indexBlock.isIndexEnabled();
- return false;
- }
-
- public void setupHelpContextIds() {
- makeWizardBlock.setupHelpContextIds();
- }
-}
diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/wizards/NewMakeCCProjectWizard.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/wizards/NewMakeCCProjectWizard.java
deleted file mode 100644
index 514910e3646..00000000000
--- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/wizards/NewMakeCCProjectWizard.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2010 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.make.ui.wizards;
-
-import org.eclipse.cdt.core.CCorePlugin;
-import org.eclipse.cdt.make.internal.ui.MakeUIPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.SubProgressMonitor;
-
-/**
- * This wizard was used for 3.X style projects. It is left here for compatibility
- * reasons only. The wizard is superseded by MBS C++ Project Wizard,
- * class {@link org.eclipse.cdt.ui.wizards.CCProjectWizard}.
- *
- * @deprecated as of CDT 4.0.
- *
- * @noextend This class is not intended to be subclassed by clients.
- * @noinstantiate This class is not intended to be instantiated by clients.
- */
-@Deprecated
-public class NewMakeCCProjectWizard extends NewMakeProjectWizard {
-
- private static final String WZ_TITLE = "MakeCCWizard.title"; //$NON-NLS-1$
- private static final String WZ_DESC = "MakeCCWizard.description"; //$NON-NLS-1$
-
- private static final String WZ_SETTINGS_TITLE = "MakeCCWizard.title"; //$NON-NLS-1$
- private static final String WZ_SETTINGS_DESC = "MakeCCWizard.description"; //$NON-NLS-1$
-
- public NewMakeCCProjectWizard() {
- super(MakeUIPlugin.getResourceString(WZ_TITLE), MakeUIPlugin.getResourceString(WZ_DESC));
- }
-
- @Override
- public void addPages() {
- super.addPages();
- addPage(fOptionPage = new MakeProjectWizardOptionPage(MakeUIPlugin.getResourceString(WZ_SETTINGS_TITLE),
- MakeUIPlugin.getResourceString(WZ_SETTINGS_DESC)));
- }
-
- @Override
- protected void doRun(IProgressMonitor monitor) throws CoreException {
- if (monitor == null) {
- monitor = new NullProgressMonitor();
- }
- monitor.beginTask(MakeUIPlugin.getResourceString("MakeCCWizard.task_name"), 10); //$NON-NLS-1$
- super.doRun(new SubProgressMonitor(monitor, 9));
- // Add C++ Nature.
- if (newProject != null) {
- // Add C++ Nature to the newly created project.
- CCorePlugin.getDefault().convertProjectFromCtoCC(newProject, new SubProgressMonitor(monitor, 1));
- }
- monitor.done();
- }
-}
diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/wizards/NewMakeCProjectWizard.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/wizards/NewMakeCProjectWizard.java
deleted file mode 100644
index fff3b8c8202..00000000000
--- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/wizards/NewMakeCProjectWizard.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2010 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.make.ui.wizards;
-
-import org.eclipse.cdt.make.internal.ui.MakeUIPlugin;
-
-/**
- * This wizard was used for 3.X style projects. It is left here for compatibility
- * reasons only. The wizard is superseded by MBS C Project Wizard,
- * class {@link org.eclipse.cdt.ui.wizards.CProjectWizard}.
- *
- * @deprecated as of CDT 4.0.
- *
- * @noextend This class is not intended to be subclassed by clients.
- * @noinstantiate This class is not intended to be instantiated by clients.
- */
-@Deprecated
-public class NewMakeCProjectWizard extends NewMakeProjectWizard {
-
- private static final String WZ_TITLE = "MakeCWizard.title"; //$NON-NLS-1$
- private static final String WZ_DESC = "MakeCWizard.description"; //$NON-NLS-1$'
-
- private static final String WZ_SETTINGS_TITLE = "MakeCWizardSettings.title"; //$NON-NLS-1$
- private static final String WZ_SETTINGS_DESC = "MakeCWizardSettings.description"; //$NON-NLS-1$'
-
- public NewMakeCProjectWizard() {
- this(MakeUIPlugin.getResourceString(WZ_TITLE), MakeUIPlugin.getResourceString(WZ_DESC));
- }
-
- public NewMakeCProjectWizard(String title, String desc) {
- super(title, desc);
- }
-
- @Override
- public void addPages() {
- super.addPages();
- addPage(fOptionPage = new MakeProjectWizardOptionPage(MakeUIPlugin.getResourceString(WZ_SETTINGS_TITLE),
- MakeUIPlugin.getResourceString(WZ_SETTINGS_DESC)));
- }
-
-}
diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/wizards/NewMakeProjectWizard.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/wizards/NewMakeProjectWizard.java
deleted file mode 100644
index 2d72a9b8db8..00000000000
--- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/wizards/NewMakeProjectWizard.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2010 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.make.ui.wizards;
-
-import org.eclipse.cdt.make.core.MakeCorePlugin;
-import org.eclipse.cdt.make.core.MakeProjectNature;
-import org.eclipse.cdt.make.core.scannerconfig.ScannerConfigNature;
-import org.eclipse.cdt.make.internal.ui.MakeUIPlugin;
-import org.eclipse.cdt.make.ui.IMakeHelpContextIds;
-import org.eclipse.cdt.ui.wizards.NewCProjectWizard;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.SubProgressMonitor;
-import org.eclipse.jface.wizard.IWizardPage;
-import org.eclipse.swt.widgets.Composite;
-
-/**
- * This abstract wizard was used for 3.X style projects. It is left here for compatibility
- * reasons only. The wizards are superseded by MBS C++ Project Wizards.
- *
- * @deprecated as of CDT 4.0.
- *
- * @noextend This class is not intended to be subclassed by clients.
- */
-@Deprecated
-public abstract class NewMakeProjectWizard extends NewCProjectWizard {
-
- protected MakeProjectWizardOptionPage fOptionPage;
-
- public NewMakeProjectWizard(String title, String desc) {
- super(title, desc);
- }
-
- @Override
- protected void doRunPrologue(IProgressMonitor monitor) {
- }
-
- @Override
- protected void doRunEpilogue(IProgressMonitor monitor) {
- }
-
- @Override
- protected void doRun(IProgressMonitor monitor) throws CoreException {
- if (monitor == null) {
- monitor = new NullProgressMonitor();
- }
- monitor.beginTask(MakeUIPlugin.getResourceString("MakeCWizard.task_name"), 10); //$NON-NLS-1$
-
- // super.doRun() just creates the project and does not assign a builder to it.
- super.doRun(new SubProgressMonitor(monitor, 5));
-
- MakeProjectNature.addNature(getProjectHandle(), new SubProgressMonitor(monitor, 1));
- ScannerConfigNature.addScannerConfigNature(getProjectHandle());
-
- // Modify the project based on what the user has selected
- if (newProject != null) {
- fOptionPage.performApply(new SubProgressMonitor(monitor, 4));
- monitor.done();
- }
- }
-
- @Override
- public String getProjectID() {
- return MakeCorePlugin.MAKE_PROJECT_ID;
- }
-
- @Override
- public void createPageControls(Composite pageContainer) {
- super.createPageControls(pageContainer);
-
- IWizardPage[] pages = getPages();
-
- if (pages != null && pages.length == 2) {
- MakeUIPlugin.getDefault().getWorkbench().getHelpSystem().setHelp(pages[0].getControl(),
- IMakeHelpContextIds.MAKE_PROJ_WIZ_NAME_PAGE);
-
- MakeProjectWizardOptionPage optionPage = (MakeProjectWizardOptionPage) pages[1];
- optionPage.setupHelpContextIds();
- }
- }
-}
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/.classpath b/build/org.eclipse.cdt.managedbuilder.core.tests/.classpath
index 7478b7374d7..e2d45cfbd22 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/.classpath
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/.classpath
@@ -1,8 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="src" path="tests"/>
- <classpathentry kind="src" path="suite"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="tests">
+ <attributes>
+ <attribute name="test" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="src" path="suite">
+ <attributes>
+ <attribute name="test" value="true"/>
+ </attributes>
+ </classpathentry>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/.settings/org.eclipse.core.resources.prefs b/build/org.eclipse.cdt.managedbuilder.core.tests/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/.settings/org.eclipse.jdt.core.prefs b/build/org.eclipse.cdt.managedbuilder.core.tests/.settings/org.eclipse.jdt.core.prefs
index ad05599159f..5b1c443114d 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/.settings/org.eclipse.jdt.core.prefs
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/.settings/org.eclipse.jdt.ui.prefs b/build/org.eclipse.cdt.managedbuilder.core.tests/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/.settings/org.eclipse.jdt.ui.prefs
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/META-INF/MANIFEST.MF b/build/org.eclipse.cdt.managedbuilder.core.tests/META-INF/MANIFEST.MF
index 1ba05c98949..ccd8ad9d5b8 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/META-INF/MANIFEST.MF
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/META-INF/MANIFEST.MF
@@ -1,10 +1,10 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
-Bundle-Name: Tests
+Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.managedbuilder.core.tests; singleton:=true
-Bundle-Version: 8.2.1.qualifier
+Bundle-Version: 8.2.300.qualifier
Bundle-Activator: org.eclipse.cdt.managedbuilder.testplugin.CTestPlugin
-Bundle-Vendor: Eclipse CDT
+Bundle-Vendor: %providerName
Bundle-Localization: plugin
Export-Package: org.eclipse.cdt.managedbuilder.core.tests,
org.eclipse.cdt.managedbuilder.language.settings.providers.tests,
@@ -24,6 +24,6 @@ Require-Bundle: org.eclipse.core.runtime,
org.eclipse.cdt.core.tests;bundle-version="5.0.0",
org.eclipse.cdt.ui
Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Automatic-Module-Name: org.eclipse.cdt.managedbuilder.core.tests
Import-Package: com.google.gson
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/about.html b/build/org.eclipse.cdt.managedbuilder.core.tests/about.html
index 164f781a8fd..b3134865230 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/about.html
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/plugin.properties b/build/org.eclipse.cdt.managedbuilder.core.tests/plugin.properties
index 3ec7bbc986a..9ff55a2cd19 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/plugin.properties
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/plugin.properties
@@ -12,4 +12,8 @@
# QNX Software Systems - initial API and implementation
# IBM Corporation
###############################################################################
+
+pluginName = Tests
+providerName = Eclipse CDT
+
GNUMakeBuilder.name=Gnu Make Builder
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/plugin.xml b/build/org.eclipse.cdt.managedbuilder.core.tests/plugin.xml
index 3d4ea53d48c..4611ce2a8d0 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/plugin.xml
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/plugin.xml
@@ -1234,7 +1234,7 @@
name="Dbg Builder"
command="make"
arguments="-k"
- buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator">
+ buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator">
</builder>
<tool
id="cdt.managedbuild.tool.testgnu.c.compiler.exe.debug"
@@ -2603,7 +2603,7 @@
name="MBS30BuilderName.Dbg"
command="make"
arguments="-k"
- buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator">
+ buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator">
</builder>
<tool
id="cdt.managedbuild.tool.testgnu30.c.compiler.exe.debug"
@@ -2668,7 +2668,7 @@
name="MBS30BuilderName.Rel"
command="make"
arguments="-k"
- buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator">
+ buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator">
</builder>
<tool
id="cdt.managedbuild.tool.testgnu30.c.compiler.exe.release"
@@ -2741,7 +2741,7 @@
name="MBS30BuilderName.Dbg"
command="make"
arguments="-k"
- buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator">
+ buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator">
</builder>
<tool
id="cdt.managedbuild.tool.testgnu30.c.compiler.so.debug"
@@ -2831,7 +2831,7 @@
name="MBS30BuilderName.Rel"
command="make"
arguments="-k"
- buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator">
+ buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator">
</builder>
<tool
id="cdt.managedbuild.tool.testgnu30.c.compiler.so.release"
@@ -2928,7 +2928,7 @@
name="MBS30BuilderName.Dbg"
command="make"
arguments="-k"
- buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator">
+ buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator">
</builder>
<tool
id="cdt.managedbuild.tool.testgnu30.c.compiler.lib.debug"
@@ -2990,7 +2990,7 @@
name="MBS30BuilderName.Rel"
command="make"
arguments="-k"
- buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator">
+ buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator">
</builder>
<tool
id="cdt.managedbuild.tool.testgnu30.c.compiler.lib.release"
@@ -3093,7 +3093,7 @@
name="BuilderDbg"
command="make"
arguments="-k"
- buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator">
+ buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator">
</builder>
<tool
id="cdt.managedbuild.tool.Testprepost30.gnu.c.compiler.exe.debug"
@@ -3179,7 +3179,7 @@
<builder
id="test30_1.gnu.so.builder"
name="Builder for test30_1"
- buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator">
+ buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator">
</builder>
<tool
id="test30_1.gnu.so.c.compiler"
@@ -3393,7 +3393,7 @@
name="Platform for test30_sto"
osList="all"/>
<builder
- buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator"
+ buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator"
id="test30_sto.dummy.builder"
isAbstract="false"
name="Builder for test30_sto"/>
@@ -3513,7 +3513,7 @@
<builder
id="test30_2.tar.builder"
name="Builder for test30_2"
- buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator">
+ buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator">
</builder>
<tool
name="tar-create"
@@ -3613,6 +3613,42 @@
outputs="tmp">
</outputType>
</tool>
+ <tool
+ name="touch"
+ command="touch"
+ commandLinePattern="${COMMAND} -r ${INPUTS} ${FLAGS}"
+ id="test30_2.touch">
+ <optionCategory
+ name="Options"
+ id="test30_2.touch.category">
+ </optionCategory>
+ <option
+ name="Touched Files"
+ category="test30_2.touch.category"
+ command="&quot;${value}&quot;"
+ id="test30_2.touch.filenames"
+ valueType="stringList">
+ <listOptionValue value="these"/>
+ <listOptionValue value="file names"/>
+ <listOptionValue value="are"/>
+ <listOptionValue value="not"/>
+ <listOptionValue value="in"/>
+ <listOptionValue value="alphabetical"/>
+ <listOptionValue value="order"/>
+ </option>
+ <inputType
+ id="test30_2.touch.input1"
+ buildVariable="LOGFILE"
+ sources="log">
+ </inputType>
+ <outputType
+ id="test30_2.touch.output"
+ name="Touched files"
+ multipleOfType="true"
+ buildVariable="TOUCHEDFILES"
+ option="test30_2.touch.filenames">
+ </outputType>
+ </tool>
</toolChain>
</configuration>
</projectType>
@@ -3658,7 +3694,7 @@
variableFormat="@="
isVariableCaseSensitive="false"
reservedMacroNames="PATH"
- buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator">
+ buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator">
</builder>
<tool
id="cdt.managedbuild.tool.testenv.c.compiler.exe.debug"
@@ -4030,7 +4066,7 @@
variableFormat="@="
isVariableCaseSensitive="false"
reservedMacroNames="PATH"
- buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator">
+ buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator">
</builder>
<tool
id="cdt.managedbuild.tool.testMultipleVersions.c.compiler.exe.debug_1.1.0"
@@ -4171,7 +4207,7 @@
variableFormat="@="
isVariableCaseSensitive="false"
reservedMacroNames="PATH"
- buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator">
+ buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator">
</builder>
<tool
id="tool.testProjectConverterConvenienceRoutines.c.compiler.exe.debug_1.1.0"
@@ -4201,7 +4237,7 @@
targetTool="org.eclipse.cdt.managedbuilder.core.tests.BDMacroSupportBarTool">
<builder
arguments="-k"
- buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator"
+ buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator"
command="make"
id="org.eclipse.cdt.managedbuilder.core.tests.BDMacroSupportBuilder"
isAbstract="false"
@@ -4335,7 +4371,7 @@
name="Test Builder Version 1.0"
command="make"
arguments="-k"
- buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator">
+ buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator">
</builder>
<tool
id="test.tool1_1.0.0"
@@ -4378,7 +4414,7 @@
name="Test Builder Version 2.0"
command="make"
arguments="-k"
- buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator">
+ buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator">
</builder>
<tool
id="test.tool1_2.0.0"
@@ -4481,7 +4517,7 @@
name="Test Builder Version 1.0"
command="make"
arguments="-k"
- buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator">
+ buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator">
</builder>
<tool
id="testProject.tool1_1.0.0"
@@ -4522,7 +4558,7 @@
name="Test Builder Version 2.0"
command="make"
arguments="-k"
- buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator">
+ buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator">
</builder>
<tool
id="testProject.tool1_2.0.0"
@@ -4750,7 +4786,7 @@
name="Builder.Executable.Release"
command="make"
arguments="-k"
- buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator">
+ buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator">
</builder>
<tool
id="cdt.test.fortran.compilestep.executable.release"
@@ -4794,7 +4830,7 @@
name="Builder.Executable.Debug"
command="make"
arguments="-k"
- buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator">
+ buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator">
</builder>
<tool
id="cdt.test.fortran.compilestep.executable.debug"
@@ -4852,7 +4888,7 @@
name="AssignToOption Builder"
command="make"
arguments="-k"
- buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator">
+ buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator">
</builder>
</toolChain>
</configuration>
@@ -4944,21 +4980,23 @@
<configuration
id="cdt.test.customOptionCommand.one"
name="One">
- <toolChain isSystem="true"
+ <toolChain
id="cdt.test.customOptionCommand.Toolchain"
isAbstract="false"
- name="Tools">
+ isSystem="true"
+ name="Tools"
+ targetTool="cdt.test.customOptionCommand.Tool2">
<tool
command="xxx"
- id="cdt.test.customOptionCommand.Tool"
+ id="cdt.test.customOptionCommand.Tool1"
isAbstract="false"
- name="Tool"
+ name="Tool1"
natureFilter="both"
outputFlag="-o">
<optionCategory
id="cdt.test.customOptionCommand.optionCategory1"
name="Test Options"
- owner="cdt.test.customOptionCommand.Tool"/>
+ owner="cdt.test.customOptionCommand.Tool1"/>
<option
category="cdt.test.customOptionCommand.optionCategory1"
command="-opt1="
@@ -4987,12 +5025,184 @@
name="Option4"
valueType="string"/>
</tool>
+ <tool
+ command="xxx"
+ id="cdt.test.customOptionCommand.Tool2"
+ isAbstract="false"
+ name="Tool2"
+ natureFilter="both"
+ outputFlag="-o">
+ <optionCategory
+ id="cdt.test.customOptionCommand.optionCategory2"
+ name="Test Options"
+ owner="cdt.test.customOptionCommand.Tool2"/>
+ <option
+ category="cdt.test.customOptionCommand.optionCategory2"
+ command="-optString="
+ id="cdt.test.customOptionCommand.optionString"
+ name="OptionString"
+ commandGenerator="org.eclipse.cdt.managedbuilder.core.tests.CustomOptionCommandGenerator"
+ valueType="string"/>
+ <option
+ category="cdt.test.customOptionCommand.optionCategory2"
+ command="-optStringList="
+ id="cdt.test.customOptionCommand.optionStringList"
+ name="OptionStringList"
+ commandGenerator="org.eclipse.cdt.managedbuilder.core.tests.CustomOptionCommandGenerator"
+ valueType="stringList"/>
+ <option
+ category="cdt.test.customOptionCommand.optionCategory2"
+ command="-optBoolean=true"
+ commandFalse="-optBoolean=false"
+ commandGenerator="org.eclipse.cdt.managedbuilder.core.tests.CustomOptionCommandGenerator"
+ id="cdt.test.customOptionCommand.optionBoolean"
+ name="OptionBoolean"
+ valueType="boolean"/>
+ <option
+ category="cdt.test.customOptionCommand.optionCategory2"
+ command="-optEnumerated="
+ commandGenerator="org.eclipse.cdt.managedbuilder.core.tests.CustomOptionCommandGenerator"
+ id="cdt.test.customOptionCommand.optionEnumerated"
+ name="OptionEnumerated"
+ valueType="enumerated">
+ <enumeratedOptionValue
+ command="-optEnumerated=value1"
+ id="org.eclipse.cdt.managedbuilder.core.tests.enumeratedOptionValue1"
+ name="EnumeratedOptionValue1">
+ </enumeratedOptionValue>
+ <enumeratedOptionValue
+ command="-optEnumerated=value2"
+ id="org.eclipse.cdt.managedbuilder.core.tests.enumeratedOptionValue2"
+ name="EnumeratedOptionValue2">
+ </enumeratedOptionValue>
+ </option>
+ <option
+ category="cdt.test.customOptionCommand.optionCategory2"
+ command="-optIncludePath="
+ id="cdt.test.customOptionCommand.optionIncludePath"
+ name="OptionIncludePath"
+ commandGenerator="org.eclipse.cdt.managedbuilder.core.tests.CustomOptionCommandGenerator"
+ valueType="includePath"/>
+ <option
+ category="cdt.test.customOptionCommand.optionCategory2"
+ command="-optDefinedSymbols="
+ id="cdt.test.customOptionCommand.optionDefinedSymbols"
+ name="OptionDefinedSymbols"
+ commandGenerator="org.eclipse.cdt.managedbuilder.core.tests.CustomOptionCommandGenerator"
+ valueType="definedSymbols"/>
+ <option
+ category="cdt.test.customOptionCommand.optionCategory2"
+ command="-optLibs="
+ id="cdt.test.customOptionCommand.optionLibs"
+ name="OptionLibs"
+ commandGenerator="org.eclipse.cdt.managedbuilder.core.tests.CustomOptionCommandGenerator"
+ valueType="libs"/>
+ <option
+ category="cdt.test.customOptionCommand.optionCategory2"
+ command="-optUserObjs="
+ id="cdt.test.customOptionCommand.optionUserObjs"
+ name="OptionUserObjs"
+ commandGenerator="org.eclipse.cdt.managedbuilder.core.tests.CustomOptionCommandGenerator"
+ valueType="userObjs"/>
+ <option
+ category="cdt.test.customOptionCommand.optionCategory2"
+ command="-optSymbolFiles="
+ id="cdt.test.customOptionCommand.optionSymbolFiles"
+ name="OptionSymbolFiles"
+ commandGenerator="org.eclipse.cdt.managedbuilder.core.tests.CustomOptionCommandGenerator"
+ valueType="symbolFiles"/>
+ <option
+ category="cdt.test.customOptionCommand.optionCategory2"
+ command="-optIncludeFiles="
+ id="cdt.test.customOptionCommand.optionIncludeFiles"
+ name="OptionIncludeFiles"
+ commandGenerator="org.eclipse.cdt.managedbuilder.core.tests.CustomOptionCommandGenerator"
+ valueType="includeFiles"/>
+ <option
+ category="cdt.test.customOptionCommand.optionCategory2"
+ command="-optLibPaths="
+ id="cdt.test.customOptionCommand.optionLibPaths"
+ name="OptionLibPaths"
+ commandGenerator="org.eclipse.cdt.managedbuilder.core.tests.CustomOptionCommandGenerator"
+ valueType="libPaths"/>
+ <option
+ category="cdt.test.customOptionCommand.optionCategory2"
+ command="-optLibFiles="
+ id="cdt.test.customOptionCommand.optionLibFiles"
+ name="OptionLibFiles"
+ commandGenerator="org.eclipse.cdt.managedbuilder.core.tests.CustomOptionCommandGenerator"
+ valueType="libFiles"/>
+ <option
+ category="cdt.test.customOptionCommand.optionCategory2"
+ command="-optUndefIncludePath="
+ id="cdt.test.customOptionCommand.optionUndefIncludePath"
+ name="OptionUndefIncludePath"
+ commandGenerator="org.eclipse.cdt.managedbuilder.core.tests.CustomOptionCommandGenerator"
+ valueType="undefIncludePath"/>
+ <option
+ category="cdt.test.customOptionCommand.optionCategory2"
+ command="-optUndefDefinedSymbols="
+ id="cdt.test.customOptionCommand.optionUndefDefinedSymbols"
+ name="OptionUndefDefinedSymbols"
+ commandGenerator="org.eclipse.cdt.managedbuilder.core.tests.CustomOptionCommandGenerator"
+ valueType="undefDefinedSymbols"/>
+ <option
+ category="cdt.test.customOptionCommand.optionCategory2"
+ command="-optUndefLibPaths="
+ id="cdt.test.customOptionCommand.optionUndefLibPaths"
+ name="OptionUndefLibPaths"
+ commandGenerator="org.eclipse.cdt.managedbuilder.core.tests.CustomOptionCommandGenerator"
+ valueType="undefLibPaths"/>
+ <option
+ category="cdt.test.customOptionCommand.optionCategory2"
+ command="-optUndefLibFiles="
+ id="cdt.test.customOptionCommand.optionUndefLibFiles"
+ name="OptionUndefLibFiles"
+ commandGenerator="org.eclipse.cdt.managedbuilder.core.tests.CustomOptionCommandGenerator"
+ valueType="undefLibFiles"/>
+ <option
+ category="cdt.test.customOptionCommand.optionCategory2"
+ command="-optUndefIncludeFiles="
+ id="cdt.test.customOptionCommand.optionUndefIncludeFiles"
+ name="OptionUndefIncludeFiles"
+ commandGenerator="org.eclipse.cdt.managedbuilder.core.tests.CustomOptionCommandGenerator"
+ valueType="undefIncludeFiles"/>
+ <option
+ category="cdt.test.customOptionCommand.optionCategory2"
+ command="-optUndefSymbolFiles="
+ id="cdt.test.customOptionCommand.optionUndefSymbolFiles"
+ name="OptionUndefSymbolFiles"
+ commandGenerator="org.eclipse.cdt.managedbuilder.core.tests.CustomOptionCommandGenerator"
+ valueType="undefSymbolFiles"/>
+ <option
+ category="cdt.test.customOptionCommand.optionCategory2"
+ command="-optTree="
+ commandGenerator="org.eclipse.cdt.managedbuilder.core.tests.CustomOptionCommandGenerator"
+ id="cdt.test.customOptionCommand.optionTree"
+ name="OptionTree"
+ valueType="tree">
+ <treeOptionRoot
+ id="org.eclipse.cdt.managedbuilder.core.tests.treeOptionRoot1"
+ name="org.eclipse.cdt.managedbuilder.core.tests.treeOptionRoot1">
+ <treeOption
+ command="-optTree=value1"
+ id="org.eclipse.cdt.managedbuilder.core.tests.treeOption1"
+ name="TreeOption1">
+ </treeOption>
+ <treeOption
+ command="-optTree=value2"
+ id="org.eclipse.cdt.managedbuilder.core.tests.treeOption2"
+ name="TreeOption2">
+ </treeOption>
+ </treeOptionRoot>
+ </option>
+ </tool>
<builder
id="cdt.test.customOptionCommand.builder"
name="Builder"
command="make"
arguments="-k"
- buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator">
+ buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator">
</builder>
</toolChain>
</configuration>
@@ -5065,7 +5275,7 @@
name="Builder"
command="make"
arguments="-k"
- buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator">
+ buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator">
</builder>
</toolChain>
</configuration>
@@ -5109,7 +5319,7 @@
variableFormat="@="
isVariableCaseSensitive="false"
reservedMacroNames="PATH"
- buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator">
+ buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator">
</builder>
<tool
id="enablement.this.child_1.2.3"
@@ -6300,7 +6510,7 @@
name="MBS30BuilderName.Dbg"
command="make"
arguments="-k"
- buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator">
+ buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator">
</builder>
<tool
id="cdt.managedbuild.tool.bdm.c.compiler.exe.debug"
@@ -7977,7 +8187,7 @@
variableFormat="${=}"
isVariableCaseSensitive="true"
reservedMacroNames="ROOT,DEPS,OBJS,.*_SRCS,EXECUTABLES,SUBDIRS,LIBS,USER_OBJS,.*_INPUTS,.*_OUTPUTS"
- buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator"
+ buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator"
macroInputFileNameValue="$(notdir $&lt;)"
macroInputFileExtValue="$(suffix $(notdir $&lt;))"
macroInputFileBaseNameValue="$(basename $(notdir $&lt;))"
@@ -9569,5 +9779,69 @@
</configuration>
</projectType>
</extension>
+ <extension
+ point="org.eclipse.cdt.managedbuilder.core.buildDefinitions">
+ <tool
+ id="bug580009.tests.tool"
+ isAbstract="true"
+ isSystem="true"
+ outputs="o"
+ sources="c">
+ <option
+ category="bug580009.tests.tool.optionsCategory"
+ defaultValue="UNSET"
+ id="bug580009.tests.option.string"
+ isAbstract="false"
+ name="Test"
+ resourceFilter="all"
+ value="UNSET"
+ valueType="string">
+ </option>
+ <optionCategory
+ id="bug580009.tests.tool.optionsCategory"
+ name="name1">
+ </optionCategory>
+ </tool>
+ <projectType
+ id="bug580009.tests.ptype"
+ isAbstract="false"
+ isTest="true">
+ <configuration
+ id="bug580009.tests.cfg1"
+ name="cfg1">
+ <toolChain
+ id="bug580009.tests.cfg1.tc2"
+ isAbstract="false"
+ isSystem="false"
+ superClass="bug580009.tests.cfg1.tc">
+ </toolChain>
+ </configuration>
+ </projectType>
+ <toolChain
+ id="bug580009.tests.cfg1.tc"
+ isAbstract="true"
+ isSystem="true">
+ <tool
+ id="bug580009.tests.cfg1.tc.tool"
+ isAbstract="false"
+ superClass="bug580009.tests.tool">
+ </tool>
+ <builder
+ id="bug580009.tests.cfg1.tc.builder"
+ isAbstract="false"
+ isVariableCaseSensitive="false">
+ </builder>
+ <option
+ category="bug580009.tests.cfg1.tc.optionCategory1"
+ id="bug580009.tests.cfg1.tc.option.string"
+ isAbstract="false"
+ valueType="boolean">
+ </option>
+ <optionCategory
+ id="bug580009.tests.cfg1.tc.optionCategory1"
+ name="name">
+ </optionCategory>
+ </toolChain>
+ </extension>
</plugin>
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc2/Benchmarks/Sources/sub sources/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc2/Benchmarks/Sources/sub sources/subdir.mk
index 00d98255707..d36ac1efc40 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc2/Benchmarks/Sources/sub sources/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc2/Benchmarks/Sources/sub sources/subdir.mk
@@ -6,19 +6,26 @@
C_SRCS += \
../Sources/sub\ sources/func\ 3.c
-OBJS += \
-./Sources/sub\ sources/func\ 3.o
-
C_DEPS += \
./Sources/sub\ sources/func\ 3.d
+OBJS += \
+./Sources/sub\ sources/func\ 3.o
+
# Each subdirectory must supply rules for building sources it contributes
-Sources/sub\ sources/func\ 3.o: ../Sources/sub\ sources/func\ 3.c
+Sources/sub\ sources/func\ 3.o: ../Sources/sub\ sources/func\ 3.c Sources/sub\ sources/subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: GCC C Compiler'
- gcc -I../Headers -I../Sources/sub\ sources -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"Sources/sub sources/func 3.d" -MT"Sources/sub\ sources/func\ 3.d" -o "$@" "$<"
+ gcc -I../Headers -I../Sources/sub\ sources -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"Sources/sub sources/func 3.d" -MT"$@" -o "$@" "$<"
@echo 'Finished building: $<'
@echo ' '
+clean: clean-Sources-2f-sub-20-sources
+
+clean-Sources-2f-sub-20-sources:
+ -$(RM) ./Sources/sub\ sources/func\ 3.d ./Sources/sub\ sources/func\ 3.o
+
+.PHONY: clean-Sources-2f-sub-20-sources
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc2/Benchmarks/Sources/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc2/Benchmarks/Sources/subdir.mk
index 7a96aa150f8..0786e760ef4 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc2/Benchmarks/Sources/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc2/Benchmarks/Sources/subdir.mk
@@ -8,30 +8,37 @@ C_SRCS += \
../Sources/func2.c \
../Sources/func4.c
-OBJS += \
-./Sources/func1.o \
-./Sources/func2.o \
-./Sources/func4.o
-
C_DEPS += \
./Sources/func1.d \
./Sources/func2.d \
./Sources/func4.d
+OBJS += \
+./Sources/func1.o \
+./Sources/func2.o \
+./Sources/func4.o
+
# Each subdirectory must supply rules for building sources it contributes
-Sources/%.o: ../Sources/%.c
+Sources/%.o: ../Sources/%.c Sources/subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: GCC C Compiler'
- gcc -I../Headers -I../Sources/sub\ sources -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<"
+ gcc -I../Headers -I../Sources/sub\ sources -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
@echo 'Finished building: $<'
@echo ' '
-Sources/func2.o: ../Sources/func2.c
+Sources/func2.o: ../Sources/func2.c Sources/subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: GCC C Compiler'
- gcc -I../Headers -I../Sources/sub\ sources -O3 -g3 -Wall -c -MMD -MP -MF"$(@:%.o=%.d)" -MT"Sources/func2.d" -o "$@" "$<"
+ gcc -I../Headers -I../Sources/sub\ sources -O3 -g3 -Wall -c -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
@echo 'Finished building: $<'
@echo ' '
+clean: clean-Sources
+
+clean-Sources:
+ -$(RM) ./Sources/func1.d ./Sources/func1.o ./Sources/func2.d ./Sources/func2.o ./Sources/func4.d ./Sources/func4.o
+
+.PHONY: clean-Sources
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc2/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc2/Benchmarks/makefile
index 2ae2d70742b..647b5f43687 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc2/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc2/Benchmarks/makefile
@@ -11,7 +11,6 @@ RM := rm
-include Sources/sub\ sources/subdir.mk
-include Sources/subdir.mk
-include subdir.mk
--include objects.mk
ifneq ($(MAKECMDGOALS),clean)
ifneq ($(strip $(C_DEPS)),)
@@ -21,13 +20,27 @@ endif
-include ../makefile.defs
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
+BUILD_ARTIFACT_NAME := test1DepCalc2
+BUILD_ARTIFACT_EXTENSION :=
+BUILD_ARTIFACT_PREFIX :=
+BUILD_ARTIFACT := $(BUILD_ARTIFACT_PREFIX)$(BUILD_ARTIFACT_NAME)$(if $(BUILD_ARTIFACT_EXTENSION),.$(BUILD_ARTIFACT_EXTENSION),)
+
# Add inputs and outputs from these tool invocations to the build variables
# All Target
-all: test1DepCalc2
+all: main-build
+
+# Main-build Target
+main-build: test1DepCalc2
# Tool invocations
-test1DepCalc2: $(OBJS) $(USER_OBJS)
+test1DepCalc2: $(OBJS) $(USER_OBJS) makefile $(OPTIONAL_TOOL_DEPS)
@echo 'Building target: $@'
@echo 'Invoking: GCC C Linker'
gcc -o "test1DepCalc2" $(OBJS) $(USER_OBJS) $(LIBS)
@@ -36,9 +49,9 @@ test1DepCalc2: $(OBJS) $(USER_OBJS)
# Other Targets
clean:
- -$(RM) $(OBJS)$(C_DEPS)$(EXECUTABLES) test1DepCalc2
+ -$(RM) test1DepCalc2
-@echo ' '
-.PHONY: all clean dependents
+.PHONY: all clean dependents main-build
-include ../makefile.targets
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc2/Benchmarks/sources.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc2/Benchmarks/sources.mk
index 52a3d69926a..673630dd080 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc2/Benchmarks/sources.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc2/Benchmarks/sources.mk
@@ -2,14 +2,14 @@
# Automatically-generated file. Do not edit!
################################################################################
-O_SRCS :=
+ASM_SRCS :=
C_SRCS :=
-S_UPPER_SRCS :=
OBJ_SRCS :=
-ASM_SRCS :=
-OBJS :=
+O_SRCS :=
+S_UPPER_SRCS :=
C_DEPS :=
EXECUTABLES :=
+OBJS :=
# Every subdirectory with source files must be described here
SUBDIRS := \
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc2/Benchmarks/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc2/Benchmarks/subdir.mk
index 630ab45705d..b89b710c322 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc2/Benchmarks/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc2/Benchmarks/subdir.mk
@@ -6,19 +6,26 @@
C_SRCS += \
../main.c
-OBJS += \
-./main.o
-
C_DEPS += \
./main.d
+OBJS += \
+./main.o
+
# Each subdirectory must supply rules for building sources it contributes
-%.o: ../%.c
+%.o: ../%.c subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: GCC C Compiler'
- gcc -I../Headers -I../Sources/sub\ sources -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<"
+ gcc -I../Headers -I../Sources/sub\ sources -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
@echo 'Finished building: $<'
@echo ' '
+clean: clean--2e-
+
+clean--2e-:
+ -$(RM) ./main.d ./main.o
+
+.PHONY: clean--2e-
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc2/test1DepCalc2.zip b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc2/test1DepCalc2.zip
index a600287b301..a600287b301 100755..100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc2/test1DepCalc2.zip
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc2/test1DepCalc2.zip
Binary files differ
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc3/Benchmarks/Sources/sub sources/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc3/Benchmarks/Sources/sub sources/subdir.mk
index b57047e3c84..070abcca1f5 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc3/Benchmarks/Sources/sub sources/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc3/Benchmarks/Sources/sub sources/subdir.mk
@@ -6,15 +6,15 @@
C_SRCS += \
../Sources/sub\ sources/func\ 3.c
-OBJS += \
-./Sources/sub\ sources/func\ 3.o
-
C_DEPS += \
./Sources/sub\ sources/func\ 3.d
+OBJS += \
+./Sources/sub\ sources/func\ 3.o
+
# Each subdirectory must supply rules for building sources it contributes
-Sources/sub\ sources/func\ 3.o: ../Sources/sub\ sources/func\ 3.c
+Sources/sub\ sources/func\ 3.o: ../Sources/sub\ sources/func\ 3.c Sources/sub\ sources/subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: GCC C Compiler'
gcc -DFUN3 -I../Headers -I../Sources/sub\ sources -O0 -g3 -Wall -c -fmessage-length=0 -o "$@" "$<" && \
@@ -24,3 +24,10 @@ Sources/sub\ sources/func\ 3.o: ../Sources/sub\ sources/func\ 3.c
@echo ' '
+clean: clean-Sources-2f-sub-20-sources
+
+clean-Sources-2f-sub-20-sources:
+ -$(RM) ./Sources/sub\ sources/func\ 3.d ./Sources/sub\ sources/func\ 3.o
+
+.PHONY: clean-Sources-2f-sub-20-sources
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc3/Benchmarks/Sources/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc3/Benchmarks/Sources/subdir.mk
index d28149917bb..c9a57cf3b44 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc3/Benchmarks/Sources/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc3/Benchmarks/Sources/subdir.mk
@@ -8,19 +8,19 @@ C_SRCS += \
../Sources/func2.c \
../Sources/func4.c
-OBJS += \
-./Sources/func1.o \
-./Sources/func2.o \
-./Sources/func4.o
-
C_DEPS += \
./Sources/func1.d \
./Sources/func2.d \
./Sources/func4.d
+OBJS += \
+./Sources/func1.o \
+./Sources/func2.o \
+./Sources/func4.o
+
# Each subdirectory must supply rules for building sources it contributes
-Sources/%.o: ../Sources/%.c
+Sources/%.o: ../Sources/%.c Sources/subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: GCC C Compiler'
gcc -I../Headers -I../Sources/sub\ sources -O0 -g3 -Wall -c -fmessage-length=0 -o "$@" "$<" && \
@@ -30,3 +30,10 @@ Sources/%.o: ../Sources/%.c
@echo ' '
+clean: clean-Sources
+
+clean-Sources:
+ -$(RM) ./Sources/func1.d ./Sources/func1.o ./Sources/func2.d ./Sources/func2.o ./Sources/func4.d ./Sources/func4.o
+
+.PHONY: clean-Sources
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc3/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc3/Benchmarks/makefile
index a4230133880..83ab62c47a5 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc3/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc3/Benchmarks/makefile
@@ -11,7 +11,6 @@ RM := rm
-include Sources/sub\ sources/subdir.mk
-include Sources/subdir.mk
-include subdir.mk
--include objects.mk
ifneq ($(MAKECMDGOALS),clean)
ifneq ($(strip $(C_DEPS)),)
@@ -21,13 +20,27 @@ endif
-include ../makefile.defs
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
+BUILD_ARTIFACT_NAME := test1DepCalc3
+BUILD_ARTIFACT_EXTENSION :=
+BUILD_ARTIFACT_PREFIX :=
+BUILD_ARTIFACT := $(BUILD_ARTIFACT_PREFIX)$(BUILD_ARTIFACT_NAME)$(if $(BUILD_ARTIFACT_EXTENSION),.$(BUILD_ARTIFACT_EXTENSION),)
+
# Add inputs and outputs from these tool invocations to the build variables
# All Target
-all: test1DepCalc3
+all: main-build
+
+# Main-build Target
+main-build: test1DepCalc3
# Tool invocations
-test1DepCalc3: $(OBJS) $(USER_OBJS)
+test1DepCalc3: $(OBJS) $(USER_OBJS) makefile $(OPTIONAL_TOOL_DEPS)
@echo 'Building target: $@'
@echo 'Invoking: GCC C Linker'
gcc -o "test1DepCalc3" $(OBJS) $(USER_OBJS) $(LIBS)
@@ -36,9 +49,9 @@ test1DepCalc3: $(OBJS) $(USER_OBJS)
# Other Targets
clean:
- -$(RM) $(OBJS)$(C_DEPS)$(EXECUTABLES) test1DepCalc3
+ -$(RM) test1DepCalc3
-@echo ' '
-.PHONY: all clean dependents
+.PHONY: all clean dependents main-build
-include ../makefile.targets
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc3/Benchmarks/sources.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc3/Benchmarks/sources.mk
index 52a3d69926a..673630dd080 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc3/Benchmarks/sources.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc3/Benchmarks/sources.mk
@@ -2,14 +2,14 @@
# Automatically-generated file. Do not edit!
################################################################################
-O_SRCS :=
+ASM_SRCS :=
C_SRCS :=
-S_UPPER_SRCS :=
OBJ_SRCS :=
-ASM_SRCS :=
-OBJS :=
+O_SRCS :=
+S_UPPER_SRCS :=
C_DEPS :=
EXECUTABLES :=
+OBJS :=
# Every subdirectory with source files must be described here
SUBDIRS := \
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc3/Benchmarks/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc3/Benchmarks/subdir.mk
index cfe94fcc9b5..0010805ba99 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc3/Benchmarks/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc3/Benchmarks/subdir.mk
@@ -6,15 +6,15 @@
C_SRCS += \
../main.c
-OBJS += \
-./main.o
-
C_DEPS += \
./main.d
+OBJS += \
+./main.o
+
# Each subdirectory must supply rules for building sources it contributes
-%.o: ../%.c
+%.o: ../%.c subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: GCC C Compiler'
gcc -I../Headers -I../Sources/sub\ sources -O0 -g3 -Wall -c -fmessage-length=0 -o "$@" "$<" && \
@@ -24,3 +24,10 @@ C_DEPS += \
@echo ' '
+clean: clean--2e-
+
+clean--2e-:
+ -$(RM) ./main.d ./main.o
+
+.PHONY: clean--2e-
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc3/test1DepCalc3.zip b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc3/test1DepCalc3.zip
index 6ac4388506c..6ac4388506c 100755..100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc3/test1DepCalc3.zip
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc3/test1DepCalc3.zip
Binary files differ
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalcPreBuild/Benchmarks/Sources/sub sources/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalcPreBuild/Benchmarks/Sources/sub sources/subdir.mk
index 30264c8f857..b0c93542516 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalcPreBuild/Benchmarks/Sources/sub sources/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalcPreBuild/Benchmarks/Sources/sub sources/subdir.mk
@@ -6,24 +6,31 @@
C_SRCS += \
../Sources/sub\ sources/func\ 3.c
-OBJS += \
-./Sources/sub\ sources/func\ 3.o
-
C_DEPS += \
./Sources/sub\ sources/func\ 3.d
+OBJS += \
+./Sources/sub\ sources/func\ 3.o
+
# Each subdirectory must supply rules for building sources it contributes
-Sources/sub\ sources/func\ 3.o: ../Sources/sub\ sources/func\ 3.c
+Sources/sub\ sources/func\ 3.o: ../Sources/sub\ sources/func\ 3.c Sources/sub\ sources/subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: GCC C Compiler'
gcc -I../Headers -I../Sources/sub\ sources -O0 -g3 -Wall -c -fmessage-length=0 -o "$@" "$<"
@echo 'Finished building: $<'
@echo ' '
-Sources/sub\ sources/func\ 3.d: ../Sources/sub\ sources/func\ 3.c
+Sources/sub\ sources/func\ 3.d: ../Sources/sub\ sources/func\ 3.c Sources/sub\ sources/subdir.mk
@echo 'Regenerating dependency file: $@'
gcc -w -MM -MP -MT"Sources/sub\ sources/func\ 3.d" -MT"Sources/sub\ sources/func\ 3.o" -I../Headers -I../Sources/sub\ sources -MF "$@" "$<"
@echo ' '
+clean: clean-Sources-2f-sub-20-sources
+
+clean-Sources-2f-sub-20-sources:
+ -$(RM) ./Sources/sub\ sources/func\ 3.d ./Sources/sub\ sources/func\ 3.o
+
+.PHONY: clean-Sources-2f-sub-20-sources
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalcPreBuild/Benchmarks/Sources/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalcPreBuild/Benchmarks/Sources/subdir.mk
index 3a9269b7967..5a91030ea42 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalcPreBuild/Benchmarks/Sources/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalcPreBuild/Benchmarks/Sources/subdir.mk
@@ -8,28 +8,35 @@ C_SRCS += \
../Sources/func2.c \
../Sources/func4.c
-OBJS += \
-./Sources/func1.o \
-./Sources/func2.o \
-./Sources/func4.o
-
C_DEPS += \
./Sources/func1.d \
./Sources/func2.d \
./Sources/func4.d
+OBJS += \
+./Sources/func1.o \
+./Sources/func2.o \
+./Sources/func4.o
+
# Each subdirectory must supply rules for building sources it contributes
-Sources/%.o: ../Sources/%.c
+Sources/%.o: ../Sources/%.c Sources/subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: GCC C Compiler'
gcc -I../Headers -I../Sources/sub\ sources -O0 -g3 -Wall -c -fmessage-length=0 -o "$@" "$<"
@echo 'Finished building: $<'
@echo ' '
-Sources/%.d: ../Sources/%.c
+Sources/%.d: ../Sources/%.c Sources/subdir.mk
@echo 'Regenerating dependency file: $@'
gcc -w -MM -MP -MT"$@" -MT"$(@:%.d=%.o)" -I../Headers -I../Sources/sub\ sources -MF "$@" "$<"
@echo ' '
+clean: clean-Sources
+
+clean-Sources:
+ -$(RM) ./Sources/func1.d ./Sources/func1.o ./Sources/func2.d ./Sources/func2.o ./Sources/func4.d ./Sources/func4.o
+
+.PHONY: clean-Sources
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalcPreBuild/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalcPreBuild/Benchmarks/makefile
index 14d1b001361..ac4945ba609 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalcPreBuild/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalcPreBuild/Benchmarks/makefile
@@ -11,7 +11,6 @@ RM := rm
-include Sources/sub\ sources/subdir.mk
-include Sources/subdir.mk
-include subdir.mk
--include objects.mk
ifneq ($(MAKECMDGOALS),clean)
ifneq ($(strip $(C_DEPS)),)
@@ -21,13 +20,27 @@ endif
-include ../makefile.defs
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
+BUILD_ARTIFACT_NAME := test1DepCalcPreBuild
+BUILD_ARTIFACT_EXTENSION :=
+BUILD_ARTIFACT_PREFIX :=
+BUILD_ARTIFACT := $(BUILD_ARTIFACT_PREFIX)$(BUILD_ARTIFACT_NAME)$(if $(BUILD_ARTIFACT_EXTENSION),.$(BUILD_ARTIFACT_EXTENSION),)
+
# Add inputs and outputs from these tool invocations to the build variables
# All Target
-all: test1DepCalcPreBuild
+all: main-build
+
+# Main-build Target
+main-build: test1DepCalcPreBuild
# Tool invocations
-test1DepCalcPreBuild: $(OBJS) $(USER_OBJS)
+test1DepCalcPreBuild: $(OBJS) $(USER_OBJS) makefile $(OPTIONAL_TOOL_DEPS)
@echo 'Building target: $@'
@echo 'Invoking: GCC C Linker'
gcc -o "test1DepCalcPreBuild" $(OBJS) $(USER_OBJS) $(LIBS)
@@ -36,9 +49,9 @@ test1DepCalcPreBuild: $(OBJS) $(USER_OBJS)
# Other Targets
clean:
- -$(RM) $(OBJS)$(C_DEPS)$(EXECUTABLES) test1DepCalcPreBuild
+ -$(RM) test1DepCalcPreBuild
-@echo ' '
-.PHONY: all clean dependents
+.PHONY: all clean dependents main-build
-include ../makefile.targets
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalcPreBuild/Benchmarks/sources.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalcPreBuild/Benchmarks/sources.mk
index 52a3d69926a..673630dd080 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalcPreBuild/Benchmarks/sources.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalcPreBuild/Benchmarks/sources.mk
@@ -2,14 +2,14 @@
# Automatically-generated file. Do not edit!
################################################################################
-O_SRCS :=
+ASM_SRCS :=
C_SRCS :=
-S_UPPER_SRCS :=
OBJ_SRCS :=
-ASM_SRCS :=
-OBJS :=
+O_SRCS :=
+S_UPPER_SRCS :=
C_DEPS :=
EXECUTABLES :=
+OBJS :=
# Every subdirectory with source files must be described here
SUBDIRS := \
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalcPreBuild/Benchmarks/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalcPreBuild/Benchmarks/subdir.mk
index 54c7f597e00..4e286186ccd 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalcPreBuild/Benchmarks/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalcPreBuild/Benchmarks/subdir.mk
@@ -6,24 +6,31 @@
C_SRCS += \
../main.c
-OBJS += \
-./main.o
-
C_DEPS += \
./main.d
+OBJS += \
+./main.o
+
# Each subdirectory must supply rules for building sources it contributes
-main.o: ../main.c
+main.o: ../main.c subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: GCC C Compiler'
gcc -I../Headers -I../Sources/sub\ sources -O0 -g3 -c -o "$@" "$<"
@echo 'Finished building: $<'
@echo ' '
-main.d: ../main.c
+main.d: ../main.c subdir.mk
@echo 'Regenerating dependency file: $@'
gcc -w -MM -MP -MT"main.d" -MT"main.o" -I../Headers -I../Sources/sub\ sources -MF "$@" "$<"
@echo ' '
+clean: clean--2e-
+
+clean--2e-:
+ -$(RM) ./main.d ./main.o
+
+.PHONY: clean--2e-
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalcPreBuild/test1DepCalcPreBuild.zip b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalcPreBuild/test1DepCalcPreBuild.zip
index 9dfd7aaddec..9dfd7aaddec 100755..100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalcPreBuild/test1DepCalcPreBuild.zip
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalcPreBuild/test1DepCalcPreBuild.zip
Binary files differ
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/1.2/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/1.2/Benchmarks/makefile
index f1a25dab782..52846ad0ca0 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/1.2/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/1.2/Benchmarks/makefile
@@ -9,15 +9,11 @@ RM := rm -rf
# All of the sources participating in the build are defined here
-include sources.mk
-include subdir.mk
--include objects.mk
ifneq ($(MAKECMDGOALS),clean)
ifneq ($(strip $(C++_DEPS)),)
-include $(C++_DEPS)
endif
-ifneq ($(strip $(C_DEPS)),)
--include $(C_DEPS)
-endif
ifneq ($(strip $(CC_DEPS)),)
-include $(CC_DEPS)
endif
@@ -27,6 +23,9 @@ endif
ifneq ($(strip $(CXX_DEPS)),)
-include $(CXX_DEPS)
endif
+ifneq ($(strip $(C_DEPS)),)
+-include $(C_DEPS)
+endif
ifneq ($(strip $(C_UPPER_DEPS)),)
-include $(C_UPPER_DEPS)
endif
@@ -34,13 +33,27 @@ endif
-include ../makefile.defs
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
+BUILD_ARTIFACT_NAME := test12
+BUILD_ARTIFACT_EXTENSION := exe
+BUILD_ARTIFACT_PREFIX :=
+BUILD_ARTIFACT := $(BUILD_ARTIFACT_PREFIX)$(BUILD_ARTIFACT_NAME)$(if $(BUILD_ARTIFACT_EXTENSION),.$(BUILD_ARTIFACT_EXTENSION),)
+
# Add inputs and outputs from these tool invocations to the build variables
# All Target
-all: test12.exe
+all: main-build
+
+# Main-build Target
+main-build: test12.exe
# Tool invocations
-test12.exe: $(OBJS) $(USER_OBJS)
+test12.exe: $(OBJS) $(USER_OBJS) makefile $(OPTIONAL_TOOL_DEPS)
@echo 'Building target: $@'
@echo 'Invoking: Cygwin C++ Linker'
g++ -o "test12.exe" $(OBJS) $(USER_OBJS) $(LIBS)
@@ -49,9 +62,9 @@ test12.exe: $(OBJS) $(USER_OBJS)
# Other Targets
clean:
- -$(RM) $(C++_DEPS)$(OBJS)$(C_DEPS)$(CC_DEPS)$(CPP_DEPS)$(EXECUTABLES)$(CXX_DEPS)$(C_UPPER_DEPS) test12.exe
+ -$(RM) test12.exe
-@echo ' '
-.PHONY: all clean dependents
+.PHONY: all clean dependents main-build
-include ../makefile.targets
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/1.2/Benchmarks/sources.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/1.2/Benchmarks/sources.mk
index c1514fd5b49..c15c16c0447 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/1.2/Benchmarks/sources.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/1.2/Benchmarks/sources.mk
@@ -2,24 +2,24 @@
# Automatically-generated file. Do not edit!
################################################################################
-O_SRCS :=
-CPP_SRCS :=
-C_UPPER_SRCS :=
-C_SRCS :=
-S_UPPER_SRCS :=
-OBJ_SRCS :=
ASM_SRCS :=
-CXX_SRCS :=
C++_SRCS :=
CC_SRCS :=
+CPP_SRCS :=
+CXX_SRCS :=
+C_SRCS :=
+C_UPPER_SRCS :=
+OBJ_SRCS :=
+O_SRCS :=
+S_UPPER_SRCS :=
C++_DEPS :=
-OBJS :=
-C_DEPS :=
CC_DEPS :=
CPP_DEPS :=
-EXECUTABLES :=
CXX_DEPS :=
+C_DEPS :=
C_UPPER_DEPS :=
+EXECUTABLES :=
+OBJS :=
# Every subdirectory with source files must be described here
SUBDIRS := \
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/1.2/Benchmarks/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/1.2/Benchmarks/subdir.mk
index bb4b120c968..1b71e62830e 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/1.2/Benchmarks/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/1.2/Benchmarks/subdir.mk
@@ -6,19 +6,26 @@
CPP_SRCS += \
../test.cpp
-OBJS += \
-./test.o
-
CPP_DEPS += \
./test.d
+OBJS += \
+./test.o
+
# Each subdirectory must supply rules for building sources it contributes
-%.o: ../%.cpp
+%.o: ../%.cpp subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: Cygwin C++ Compiler'
- g++ -O3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<"
+ g++ -O3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
@echo 'Finished building: $<'
@echo ' '
+clean: clean--2e-
+
+clean--2e-:
+ -$(RM) ./test.d ./test.o
+
+.PHONY: clean--2e-
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.0/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.0/Benchmarks/makefile
index 71c8f61fd37..815689a4bf6 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.0/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.0/Benchmarks/makefile
@@ -9,7 +9,6 @@ RM := rm -rf
# All of the sources participating in the build are defined here
-include sources.mk
-include subdir.mk
--include objects.mk
ifneq ($(MAKECMDGOALS),clean)
ifneq ($(strip $(C++_DEPS)),)
@@ -18,15 +17,15 @@ endif
ifneq ($(strip $(CC_DEPS)),)
-include $(CC_DEPS)
endif
-ifneq ($(strip $(C_DEPS)),)
--include $(C_DEPS)
-endif
ifneq ($(strip $(CPP_DEPS)),)
-include $(CPP_DEPS)
endif
ifneq ($(strip $(CXX_DEPS)),)
-include $(CXX_DEPS)
endif
+ifneq ($(strip $(C_DEPS)),)
+-include $(C_DEPS)
+endif
ifneq ($(strip $(C_UPPER_DEPS)),)
-include $(C_UPPER_DEPS)
endif
@@ -34,24 +33,38 @@ endif
-include ../makefile.defs
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
+BUILD_ARTIFACT_NAME := test20
+BUILD_ARTIFACT_EXTENSION := exe
+BUILD_ARTIFACT_PREFIX :=
+BUILD_ARTIFACT := $(BUILD_ARTIFACT_PREFIX)$(BUILD_ARTIFACT_NAME)$(if $(BUILD_ARTIFACT_EXTENSION),.$(BUILD_ARTIFACT_EXTENSION),)
+
# Add inputs and outputs from these tool invocations to the build variables
# All Target
-all: test20.exe
+all: main-build
+
+# Main-build Target
+main-build: test20.exe
# Tool invocations
-test20.exe: $(OBJS) $(USER_OBJS)
+test20.exe: $(OBJS) $(USER_OBJS) makefile $(OPTIONAL_TOOL_DEPS)
@echo 'Building target: $@'
- @echo 'Invoking: GCC C++ Linker'
+ @echo 'Invoking: Cygwin C++ Linker'
g++ -o "test20.exe" $(OBJS) $(USER_OBJS) $(LIBS)
@echo 'Finished building target: $@'
@echo ' '
# Other Targets
clean:
- -$(RM) $(OBJS)$(C++_DEPS)$(EXECUTABLES)$(CC_DEPS)$(C_DEPS)$(CPP_DEPS)$(CXX_DEPS)$(C_UPPER_DEPS) test20.exe
+ -$(RM) test20.exe
-@echo ' '
-.PHONY: all clean dependents
+.PHONY: all clean dependents main-build
-include ../makefile.targets
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.0/Benchmarks/objects.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.0/Benchmarks/objects.mk
index b19ccc5913d..742c2da043f 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.0/Benchmarks/objects.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.0/Benchmarks/objects.mk
@@ -2,7 +2,7 @@
# Automatically-generated file. Do not edit!
################################################################################
-LIBS :=
-
USER_OBJS :=
+LIBS :=
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.0/Benchmarks/sources.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.0/Benchmarks/sources.mk
index c1514fd5b49..c15c16c0447 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.0/Benchmarks/sources.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.0/Benchmarks/sources.mk
@@ -2,24 +2,24 @@
# Automatically-generated file. Do not edit!
################################################################################
-O_SRCS :=
-CPP_SRCS :=
-C_UPPER_SRCS :=
-C_SRCS :=
-S_UPPER_SRCS :=
-OBJ_SRCS :=
ASM_SRCS :=
-CXX_SRCS :=
C++_SRCS :=
CC_SRCS :=
+CPP_SRCS :=
+CXX_SRCS :=
+C_SRCS :=
+C_UPPER_SRCS :=
+OBJ_SRCS :=
+O_SRCS :=
+S_UPPER_SRCS :=
C++_DEPS :=
-OBJS :=
-C_DEPS :=
CC_DEPS :=
CPP_DEPS :=
-EXECUTABLES :=
CXX_DEPS :=
+C_DEPS :=
C_UPPER_DEPS :=
+EXECUTABLES :=
+OBJS :=
# Every subdirectory with source files must be described here
SUBDIRS := \
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.0/Benchmarks/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.0/Benchmarks/subdir.mk
index 5f621ea0a2a..be29dcd74c4 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.0/Benchmarks/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.0/Benchmarks/subdir.mk
@@ -6,19 +6,26 @@
CPP_SRCS += \
../Test1.cpp
-OBJS += \
-./Test1.o
-
CPP_DEPS += \
./Test1.d
+OBJS += \
+./Test1.o
+
# Each subdirectory must supply rules for building sources it contributes
-%.o: ../%.cpp
+%.o: ../%.cpp subdir.mk
@echo 'Building file: $<'
- @echo 'Invoking: GCC C++ Compiler'
- g++ -O2 -g1 -pedantic -pedantic-errors -Wall -Werror -c -fmessage-length=0 -v -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<"
+ @echo 'Invoking: Cygwin C++ Compiler'
+ g++ -O2 -g1 -pedantic -pedantic-errors -Wall -Werror -c -fmessage-length=0 -v -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
@echo 'Finished building: $<'
@echo ' '
+clean: clean--2e-
+
+clean--2e-:
+ -$(RM) ./Test1.d ./Test1.o
+
+.PHONY: clean--2e-
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1/Benchmarks/Functions/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1/Benchmarks/Functions/subdir.mk
index a83733ab14f..74cdf3d739b 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1/Benchmarks/Functions/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1/Benchmarks/Functions/subdir.mk
@@ -6,19 +6,26 @@
C_SRCS += \
../Functions/Func1.c
-OBJS += \
-./Functions/Func1.o
-
C_DEPS += \
./Functions/Func1.d
+OBJS += \
+./Functions/Func1.o
+
# Each subdirectory must supply rules for building sources it contributes
-Functions/%.o: ../Functions/%.c
+Functions/%.o: ../Functions/%.c Functions/subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: GCC C Compiler'
- gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<"
+ gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
@echo 'Finished building: $<'
@echo ' '
+clean: clean-Functions
+
+clean-Functions:
+ -$(RM) ./Functions/Func1.d ./Functions/Func1.o
+
+.PHONY: clean-Functions
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1/Benchmarks/makefile
index 39aee3a5a53..e538af20c05 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1/Benchmarks/makefile
@@ -10,7 +10,6 @@ RM := rm -rf
-include sources.mk
-include Functions/subdir.mk
-include subdir.mk
--include objects.mk
ifneq ($(MAKECMDGOALS),clean)
ifneq ($(strip $(C_DEPS)),)
@@ -20,13 +19,27 @@ endif
-include ../makefile.defs
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
+BUILD_ARTIFACT_NAME := MBS2dot1
+BUILD_ARTIFACT_EXTENSION := exe
+BUILD_ARTIFACT_PREFIX :=
+BUILD_ARTIFACT := $(BUILD_ARTIFACT_PREFIX)$(BUILD_ARTIFACT_NAME)$(if $(BUILD_ARTIFACT_EXTENSION),.$(BUILD_ARTIFACT_EXTENSION),)
+
# Add inputs and outputs from these tool invocations to the build variables
# All Target
-all: MBS2dot1.exe
+all: main-build
+
+# Main-build Target
+main-build: MBS2dot1.exe
# Tool invocations
-MBS2dot1.exe: $(OBJS) $(USER_OBJS)
+MBS2dot1.exe: $(OBJS) $(USER_OBJS) makefile $(OPTIONAL_TOOL_DEPS)
@echo 'Building target: $@'
@echo 'Invoking: GCC C Linker'
gcc -o "MBS2dot1.exe" $(OBJS) $(USER_OBJS) $(LIBS)
@@ -35,9 +48,9 @@ MBS2dot1.exe: $(OBJS) $(USER_OBJS)
# Other Targets
clean:
- -$(RM) $(OBJS)$(C_DEPS)$(EXECUTABLES) MBS2dot1.exe
+ -$(RM) MBS2dot1.exe
-@echo ' '
-.PHONY: all clean dependents
+.PHONY: all clean dependents main-build
-include ../makefile.targets
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1/Benchmarks/sources.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1/Benchmarks/sources.mk
index fa1bbce179d..2daead33667 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1/Benchmarks/sources.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1/Benchmarks/sources.mk
@@ -2,14 +2,14 @@
# Automatically-generated file. Do not edit!
################################################################################
-O_SRCS :=
+ASM_SRCS :=
C_SRCS :=
-S_UPPER_SRCS :=
OBJ_SRCS :=
-ASM_SRCS :=
-OBJS :=
+O_SRCS :=
+S_UPPER_SRCS :=
C_DEPS :=
EXECUTABLES :=
+OBJS :=
# Every subdirectory with source files must be described here
SUBDIRS := \
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1/Benchmarks/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1/Benchmarks/subdir.mk
index e1156e1e8ae..9e39072d4e8 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1/Benchmarks/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1/Benchmarks/subdir.mk
@@ -6,19 +6,26 @@
C_SRCS += \
../main.c
-OBJS += \
-./main.o
-
C_DEPS += \
./main.d
+OBJS += \
+./main.o
+
# Each subdirectory must supply rules for building sources it contributes
-%.o: ../%.c
+%.o: ../%.c subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: GCC C Compiler'
- gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<"
+ gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
@echo 'Finished building: $<'
@echo ' '
+clean: clean--2e-
+
+clean--2e-:
+ -$(RM) ./main.d ./main.o
+
+.PHONY: clean--2e-
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1CPP/Benchmarks/Functions/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1CPP/Benchmarks/Functions/subdir.mk
index 69cb10267ce..ac441926eb3 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1CPP/Benchmarks/Functions/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1CPP/Benchmarks/Functions/subdir.mk
@@ -6,19 +6,26 @@
CPP_SRCS += \
../Functions/Func1.cpp
-OBJS += \
-./Functions/Func1.o
-
CPP_DEPS += \
./Functions/Func1.d
+OBJS += \
+./Functions/Func1.o
+
# Each subdirectory must supply rules for building sources it contributes
-Functions/%.o: ../Functions/%.cpp
+Functions/%.o: ../Functions/%.cpp Functions/subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: GCC C++ Compiler'
- g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<"
+ g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
@echo 'Finished building: $<'
@echo ' '
+clean: clean-Functions
+
+clean-Functions:
+ -$(RM) ./Functions/Func1.d ./Functions/Func1.o
+
+.PHONY: clean-Functions
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1CPP/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1CPP/Benchmarks/makefile
index dfb93611506..72baa7f19f5 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1CPP/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1CPP/Benchmarks/makefile
@@ -10,15 +10,11 @@ RM := rm -rf
-include sources.mk
-include Functions/subdir.mk
-include subdir.mk
--include objects.mk
ifneq ($(MAKECMDGOALS),clean)
ifneq ($(strip $(C++_DEPS)),)
-include $(C++_DEPS)
endif
-ifneq ($(strip $(C_DEPS)),)
--include $(C_DEPS)
-endif
ifneq ($(strip $(CC_DEPS)),)
-include $(CC_DEPS)
endif
@@ -28,6 +24,9 @@ endif
ifneq ($(strip $(CXX_DEPS)),)
-include $(CXX_DEPS)
endif
+ifneq ($(strip $(C_DEPS)),)
+-include $(C_DEPS)
+endif
ifneq ($(strip $(C_UPPER_DEPS)),)
-include $(C_UPPER_DEPS)
endif
@@ -35,13 +34,27 @@ endif
-include ../makefile.defs
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
+BUILD_ARTIFACT_NAME := Test21CXX
+BUILD_ARTIFACT_EXTENSION :=
+BUILD_ARTIFACT_PREFIX :=
+BUILD_ARTIFACT := $(BUILD_ARTIFACT_PREFIX)$(BUILD_ARTIFACT_NAME)$(if $(BUILD_ARTIFACT_EXTENSION),.$(BUILD_ARTIFACT_EXTENSION),)
+
# Add inputs and outputs from these tool invocations to the build variables
# All Target
-all: Test21CXX
+all: main-build
+
+# Main-build Target
+main-build: Test21CXX
# Tool invocations
-Test21CXX: $(OBJS) $(USER_OBJS)
+Test21CXX: $(OBJS) $(USER_OBJS) makefile $(OPTIONAL_TOOL_DEPS)
@echo 'Building target: $@'
@echo 'Invoking: GCC C++ Linker'
g++ -o "Test21CXX" $(OBJS) $(USER_OBJS) $(LIBS)
@@ -50,9 +63,9 @@ Test21CXX: $(OBJS) $(USER_OBJS)
# Other Targets
clean:
- -$(RM) $(OBJS)$(C++_DEPS)$(C_DEPS)$(CC_DEPS)$(CPP_DEPS)$(EXECUTABLES)$(CXX_DEPS)$(C_UPPER_DEPS) Test21CXX
+ -$(RM) Test21CXX
-@echo ' '
-.PHONY: all clean dependents
+.PHONY: all clean dependents main-build
-include ../makefile.targets
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1CPP/Benchmarks/sources.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1CPP/Benchmarks/sources.mk
index 1881eb751a7..dbbe731afad 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1CPP/Benchmarks/sources.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1CPP/Benchmarks/sources.mk
@@ -2,24 +2,24 @@
# Automatically-generated file. Do not edit!
################################################################################
-O_SRCS :=
-CPP_SRCS :=
-C_UPPER_SRCS :=
-C_SRCS :=
-S_UPPER_SRCS :=
-OBJ_SRCS :=
ASM_SRCS :=
-CXX_SRCS :=
C++_SRCS :=
CC_SRCS :=
-OBJS :=
+CPP_SRCS :=
+CXX_SRCS :=
+C_SRCS :=
+C_UPPER_SRCS :=
+OBJ_SRCS :=
+O_SRCS :=
+S_UPPER_SRCS :=
C++_DEPS :=
-C_DEPS :=
CC_DEPS :=
CPP_DEPS :=
-EXECUTABLES :=
CXX_DEPS :=
+C_DEPS :=
C_UPPER_DEPS :=
+EXECUTABLES :=
+OBJS :=
# Every subdirectory with source files must be described here
SUBDIRS := \
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1CPP/Benchmarks/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1CPP/Benchmarks/subdir.mk
index 160fd30d294..1e71ee90931 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1CPP/Benchmarks/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1CPP/Benchmarks/subdir.mk
@@ -6,19 +6,26 @@
C_SRCS += \
../main.c
-OBJS += \
-./main.o
-
C_DEPS += \
./main.d
+OBJS += \
+./main.o
+
# Each subdirectory must supply rules for building sources it contributes
-%.o: ../%.c
+%.o: ../%.c subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: GCC C++ Compiler'
- g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<"
+ g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
@echo 'Finished building: $<'
@echo ' '
+clean: clean--2e-
+
+clean--2e-:
+ -$(RM) ./main.d ./main.o
+
+.PHONY: clean--2e-
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/linkedFolder/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/linkedFolder/Benchmarks/makefile
index f709be10f04..0de58ca8a20 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/linkedFolder/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/linkedFolder/Benchmarks/makefile
@@ -9,7 +9,6 @@ RM := rm -rf
# All of the sources participating in the build are defined here
-include sources.mk
-include subdir.mk
--include objects.mk
ifneq ($(MAKECMDGOALS),clean)
ifneq ($(strip $(C_DEPS)),)
@@ -19,13 +18,27 @@ endif
-include ../makefile.defs
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
+BUILD_ARTIFACT_NAME := linkedFolder
+BUILD_ARTIFACT_EXTENSION := a
+BUILD_ARTIFACT_PREFIX := lib
+BUILD_ARTIFACT := $(BUILD_ARTIFACT_PREFIX)$(BUILD_ARTIFACT_NAME)$(if $(BUILD_ARTIFACT_EXTENSION),.$(BUILD_ARTIFACT_EXTENSION),)
+
# Add inputs and outputs from these tool invocations to the build variables
# All Target
-all: liblinkedFolder.a
+all: main-build
+
+# Main-build Target
+main-build: liblinkedFolder.a
# Tool invocations
-liblinkedFolder.a: $(OBJS) $(USER_OBJS)
+liblinkedFolder.a: $(OBJS) $(USER_OBJS) makefile $(OPTIONAL_TOOL_DEPS)
@echo 'Building target: $@'
@echo 'Invoking: archiver.gnu'
ar -r "liblinkedFolder.a" $(OBJS) $(USER_OBJS) $(LIBS)
@@ -34,9 +47,9 @@ liblinkedFolder.a: $(OBJS) $(USER_OBJS)
# Other Targets
clean:
- -$(RM) $(OBJS)$(C_DEPS) liblinkedFolder.a
+ -$(RM) liblinkedFolder.a
-@echo ' '
-.PHONY: all clean dependents
+.PHONY: all clean dependents main-build
-include ../makefile.targets
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/linkedFolder/Benchmarks/objects.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/linkedFolder/Benchmarks/objects.mk
index b19ccc5913d..742c2da043f 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/linkedFolder/Benchmarks/objects.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/linkedFolder/Benchmarks/objects.mk
@@ -2,7 +2,7 @@
# Automatically-generated file. Do not edit!
################################################################################
-LIBS :=
-
USER_OBJS :=
+LIBS :=
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/linkedFolder/Benchmarks/sources.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/linkedFolder/Benchmarks/sources.mk
index 2d6bdf5df20..b9165764518 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/linkedFolder/Benchmarks/sources.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/linkedFolder/Benchmarks/sources.mk
@@ -2,12 +2,12 @@
# Automatically-generated file. Do not edit!
################################################################################
-O_SRCS :=
C_SRCS :=
-S_UPPER_SRCS :=
+O_SRCS :=
S_SRCS :=
-OBJS :=
+S_UPPER_SRCS :=
C_DEPS :=
+OBJS :=
# Every subdirectory with source files must be described here
SUBDIRS := \
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/linkedFolder/Benchmarks/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/linkedFolder/Benchmarks/subdir.mk
index 0c0b84721bd..e2208b718ad 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/linkedFolder/Benchmarks/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/linkedFolder/Benchmarks/subdir.mk
@@ -7,17 +7,17 @@ C_SRCS += \
../f1.c \
../f2.c
-OBJS += \
-./f1.o \
-./f2.o
-
C_DEPS += \
./f1.d \
./f2.d
+OBJS += \
+./f1.o \
+./f2.o
+
# Each subdirectory must supply rules for building sources it contributes
-%.o: ../%.c
+%.o: ../%.c subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: compiler.gnu.c'
gcc -O0 -g3 -Wall -c -fmessage-length=0 -o "$@" "$<" && \
@@ -27,3 +27,10 @@ C_DEPS += \
@echo ' '
+clean: clean--2e-
+
+clean--2e-:
+ -$(RM) ./f1.d ./f1.o ./f2.d ./f2.o
+
+.PHONY: clean--2e-
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/linkedLib/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/linkedLib/Benchmarks/makefile
index 6de72f16943..393dcbbf012 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/linkedLib/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/linkedLib/Benchmarks/makefile
@@ -9,7 +9,6 @@ RM := rm -rf
# All of the sources participating in the build are defined here
-include sources.mk
-include subdir.mk
--include objects.mk
ifneq ($(MAKECMDGOALS),clean)
ifneq ($(strip $(C_DEPS)),)
@@ -19,13 +18,27 @@ endif
-include ../makefile.defs
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
+BUILD_ARTIFACT_NAME := linkedLib
+BUILD_ARTIFACT_EXTENSION := a
+BUILD_ARTIFACT_PREFIX := lib
+BUILD_ARTIFACT := $(BUILD_ARTIFACT_PREFIX)$(BUILD_ARTIFACT_NAME)$(if $(BUILD_ARTIFACT_EXTENSION),.$(BUILD_ARTIFACT_EXTENSION),)
+
# Add inputs and outputs from these tool invocations to the build variables
# All Target
-all: liblinkedLib.a
+all: main-build
+
+# Main-build Target
+main-build: liblinkedLib.a
# Tool invocations
-liblinkedLib.a: $(OBJS) $(USER_OBJS)
+liblinkedLib.a: $(OBJS) $(USER_OBJS) makefile $(OPTIONAL_TOOL_DEPS)
@echo 'Building target: $@'
@echo 'Invoking: archiver.gnu'
ar -r "liblinkedLib.a" $(OBJS) $(USER_OBJS) $(LIBS)
@@ -34,9 +47,9 @@ liblinkedLib.a: $(OBJS) $(USER_OBJS)
# Other Targets
clean:
- -$(RM) $(OBJS)$(C_DEPS) liblinkedLib.a
+ -$(RM) liblinkedLib.a
-@echo ' '
-.PHONY: all clean dependents
+.PHONY: all clean dependents main-build
-include ../makefile.targets
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/linkedLib/Benchmarks/objects.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/linkedLib/Benchmarks/objects.mk
index b19ccc5913d..742c2da043f 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/linkedLib/Benchmarks/objects.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/linkedLib/Benchmarks/objects.mk
@@ -2,7 +2,7 @@
# Automatically-generated file. Do not edit!
################################################################################
-LIBS :=
-
USER_OBJS :=
+LIBS :=
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/linkedLib/Benchmarks/sources.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/linkedLib/Benchmarks/sources.mk
index a7659979874..b9165764518 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/linkedLib/Benchmarks/sources.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/linkedLib/Benchmarks/sources.mk
@@ -3,11 +3,11 @@
################################################################################
C_SRCS :=
-S_UPPER_SRCS :=
O_SRCS :=
S_SRCS :=
-OBJS :=
+S_UPPER_SRCS :=
C_DEPS :=
+OBJS :=
# Every subdirectory with source files must be described here
SUBDIRS := \
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/linkedLib/Benchmarks/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/linkedLib/Benchmarks/subdir.mk
index f01f20660df..b5d3a08e215 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/linkedLib/Benchmarks/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/linkedLib/Benchmarks/subdir.mk
@@ -17,7 +17,7 @@ C_DEPS += \
# Each subdirectory must supply rules for building sources it contributes
-f1.o: C:/Documents\ and\ Settings/agvozdev/CDTMBSTest/f1.c
+f1.o: C:/Documents\ and\ Settings/agvozdev/CDTMBSTest/f1.c subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: compiler.gnu.c'
gcc -O0 -g3 -Wall -c -fmessage-length=0 -o "$@" "$<" && \
@@ -26,7 +26,7 @@ f1.o: C:/Documents\ and\ Settings/agvozdev/CDTMBSTest/f1.c
@echo 'Finished building: $<'
@echo ' '
-f2.o: C:/Documents\ and\ Settings/agvozdev/CDTMBSTest/f2.c
+f2.o: C:/Documents\ and\ Settings/agvozdev/CDTMBSTest/f2.c subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: compiler.gnu.c'
gcc -O0 -g3 -Wall -c -fmessage-length=0 -o "$@" "$<" && \
@@ -36,3 +36,10 @@ f2.o: C:/Documents\ and\ Settings/agvozdev/CDTMBSTest/f2.c
@echo ' '
+clean: clean--2e-
+
+clean--2e-:
+ -$(RM) ./f1.d ./f1.o ./f2.d ./f2.o
+
+.PHONY: clean--2e-
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/multiResConfig/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/multiResConfig/Benchmarks/makefile
index 57b9e8931e2..0eb1f4f0353 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/multiResConfig/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/multiResConfig/Benchmarks/makefile
@@ -12,12 +12,8 @@ RM := rm -rf
-include source2/subdir.mk
-include source1/subdir.mk
-include subdir.mk
--include objects.mk
ifneq ($(MAKECMDGOALS),clean)
-ifneq ($(strip $(C_DEPS)),)
--include $(C_DEPS)
-endif
ifneq ($(strip $(CC_DEPS)),)
-include $(CC_DEPS)
endif
@@ -27,6 +23,9 @@ endif
ifneq ($(strip $(CXX_DEPS)),)
-include $(CXX_DEPS)
endif
+ifneq ($(strip $(C_DEPS)),)
+-include $(C_DEPS)
+endif
ifneq ($(strip $(C_UPPER_DEPS)),)
-include $(C_UPPER_DEPS)
endif
@@ -34,13 +33,27 @@ endif
-include ../makefile.defs
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
+BUILD_ARTIFACT_NAME := testResCfg
+BUILD_ARTIFACT_EXTENSION :=
+BUILD_ARTIFACT_PREFIX :=
+BUILD_ARTIFACT := $(BUILD_ARTIFACT_PREFIX)$(BUILD_ARTIFACT_NAME)$(if $(BUILD_ARTIFACT_EXTENSION),.$(BUILD_ARTIFACT_EXTENSION),)
+
# Add inputs and outputs from these tool invocations to the build variables
# All Target
-all: testResCfg
+all: main-build
+
+# Main-build Target
+main-build: testResCfg
# Tool invocations
-testResCfg: $(OBJS) $(USER_OBJS)
+testResCfg: $(OBJS) $(USER_OBJS) makefile $(OPTIONAL_TOOL_DEPS)
@echo 'Building target: $@'
@echo 'Invoking: linker.gnu.cpp'
g++ --strip-all -o "testResCfg" $(OBJS) $(USER_OBJS) $(LIBS)
@@ -49,9 +62,9 @@ testResCfg: $(OBJS) $(USER_OBJS)
# Other Targets
clean:
- -$(RM) $(OBJS)$(C_DEPS)$(CC_DEPS)$(CPP_DEPS)$(CXX_DEPS)$(C_UPPER_DEPS) testResCfg
+ -$(RM) testResCfg
-@echo ' '
-.PHONY: all clean dependents
+.PHONY: all clean dependents main-build
-include ../makefile.targets
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/multiResConfig/Benchmarks/source1/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/multiResConfig/Benchmarks/source1/subdir.mk
index e3c307e75f5..30d32f56b98 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/multiResConfig/Benchmarks/source1/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/multiResConfig/Benchmarks/source1/subdir.mk
@@ -6,15 +6,15 @@
CPP_SRCS += \
../source1/Class1.cpp
-OBJS += \
-./source1/Class1.o
-
CPP_DEPS += \
./source1/Class1.d
+OBJS += \
+./source1/Class1.o
+
# Each subdirectory must supply rules for building sources it contributes
-source1/%.o: ../source1/%.cpp
+source1/%.o: ../source1/%.cpp source1/subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: compiler.gnu.cpp'
g++ -I../headers -O0 -g3 -Wall -c -fmessage-length=0 -o "$@" "$<" && \
@@ -24,3 +24,10 @@ source1/%.o: ../source1/%.cpp
@echo ' '
+clean: clean-source1
+
+clean-source1:
+ -$(RM) ./source1/Class1.d ./source1/Class1.o
+
+.PHONY: clean-source1
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/multiResConfig/Benchmarks/source2/source21/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/multiResConfig/Benchmarks/source2/source21/subdir.mk
index 5a1ad29cc54..430a3131c58 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/multiResConfig/Benchmarks/source2/source21/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/multiResConfig/Benchmarks/source2/source21/subdir.mk
@@ -6,15 +6,15 @@
CPP_SRCS += \
../source2/source21/Class21.cpp
-OBJS += \
-./source2/source21/Class21.o
-
CPP_DEPS += \
./source2/source21/Class21.d
+OBJS += \
+./source2/source21/Class21.o
+
# Each subdirectory must supply rules for building sources it contributes
-source2/source21/Class21.o: ../source2/source21/Class21.cpp
+source2/source21/Class21.o: ../source2/source21/Class21.cpp source2/source21/subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: compiler.gnu.cpp'
g++ -DRESSPEC -I../headers -O0 -g3 -Wall -c -o "$@" "$<" && \
@@ -24,3 +24,10 @@ source2/source21/Class21.o: ../source2/source21/Class21.cpp
@echo ' '
+clean: clean-source2-2f-source21
+
+clean-source2-2f-source21:
+ -$(RM) ./source2/source21/Class21.d ./source2/source21/Class21.o
+
+.PHONY: clean-source2-2f-source21
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/multiResConfig/Benchmarks/source2/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/multiResConfig/Benchmarks/source2/subdir.mk
index a612bf4fc07..81937df1541 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/multiResConfig/Benchmarks/source2/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/multiResConfig/Benchmarks/source2/subdir.mk
@@ -6,15 +6,15 @@
CPP_SRCS += \
../source2/Class2.cpp
-OBJS += \
-./source2/Class2.o
-
CPP_DEPS += \
./source2/Class2.d
+OBJS += \
+./source2/Class2.o
+
# Each subdirectory must supply rules for building sources it contributes
-source2/%.o: ../source2/%.cpp
+source2/%.o: ../source2/%.cpp source2/subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: compiler.gnu.cpp'
g++ -I../headers -O0 -g3 -Wall -c -fmessage-length=0 -o "$@" "$<" && \
@@ -24,3 +24,10 @@ source2/%.o: ../source2/%.cpp
@echo ' '
+clean: clean-source2
+
+clean-source2:
+ -$(RM) ./source2/Class2.d ./source2/Class2.o
+
+.PHONY: clean-source2
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/multiResConfig/Benchmarks/sources.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/multiResConfig/Benchmarks/sources.mk
index 9adc934fc62..047eb222b70 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/multiResConfig/Benchmarks/sources.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/multiResConfig/Benchmarks/sources.mk
@@ -2,20 +2,20 @@
# Automatically-generated file. Do not edit!
################################################################################
-O_SRCS :=
+CC_SRCS :=
CPP_SRCS :=
-C_UPPER_SRCS :=
+CXX_SRCS :=
C_SRCS :=
-S_UPPER_SRCS :=
+C_UPPER_SRCS :=
+O_SRCS :=
S_SRCS :=
-CXX_SRCS :=
-CC_SRCS :=
-OBJS :=
-C_DEPS :=
+S_UPPER_SRCS :=
CC_DEPS :=
CPP_DEPS :=
CXX_DEPS :=
+C_DEPS :=
C_UPPER_DEPS :=
+OBJS :=
# Every subdirectory with source files must be described here
SUBDIRS := \
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/multiResConfig/Benchmarks/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/multiResConfig/Benchmarks/subdir.mk
index 56c172ea389..06b849c326e 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/multiResConfig/Benchmarks/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/multiResConfig/Benchmarks/subdir.mk
@@ -6,15 +6,15 @@
CPP_SRCS += \
../main.cpp
-OBJS += \
-./main.o
-
CPP_DEPS += \
./main.d
+OBJS += \
+./main.o
+
# Each subdirectory must supply rules for building sources it contributes
-%.o: ../%.cpp
+%.o: ../%.cpp subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: compiler.gnu.cpp'
g++ -I../headers -O0 -g3 -Wall -c -fmessage-length=0 -o "$@" "$<" && \
@@ -24,3 +24,10 @@ CPP_DEPS += \
@echo ' '
+clean: clean--2e-
+
+clean--2e-:
+ -$(RM) ./main.d ./main.o
+
+.PHONY: clean--2e-
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/singleFileExe/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/singleFileExe/Benchmarks/makefile
index 1a68f795370..6247b44b330 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/singleFileExe/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/singleFileExe/Benchmarks/makefile
@@ -9,7 +9,6 @@ RM := rm -rf
# All of the sources participating in the build are defined here
-include sources.mk
-include subdir.mk
--include objects.mk
ifneq ($(MAKECMDGOALS),clean)
ifneq ($(strip $(C_DEPS)),)
@@ -19,13 +18,27 @@ endif
-include ../makefile.defs
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
+BUILD_ARTIFACT_NAME := testSingleExe
+BUILD_ARTIFACT_EXTENSION :=
+BUILD_ARTIFACT_PREFIX :=
+BUILD_ARTIFACT := $(BUILD_ARTIFACT_PREFIX)$(BUILD_ARTIFACT_NAME)$(if $(BUILD_ARTIFACT_EXTENSION),.$(BUILD_ARTIFACT_EXTENSION),)
+
# Add inputs and outputs from these tool invocations to the build variables
# All Target
-all: testSingleExe
+all: main-build
+
+# Main-build Target
+main-build: testSingleExe
# Tool invocations
-testSingleExe: $(OBJS) $(USER_OBJS)
+testSingleExe: $(OBJS) $(USER_OBJS) makefile $(OPTIONAL_TOOL_DEPS)
@echo 'Building target: $@'
@echo 'Invoking: linker.gnu.c'
gcc -o "testSingleExe" $(OBJS) $(USER_OBJS) $(LIBS)
@@ -34,9 +47,9 @@ testSingleExe: $(OBJS) $(USER_OBJS)
# Other Targets
clean:
- -$(RM) $(OBJS)$(C_DEPS) testSingleExe
+ -$(RM) testSingleExe
-@echo ' '
-.PHONY: all clean dependents
+.PHONY: all clean dependents main-build
-include ../makefile.targets
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/singleFileExe/Benchmarks/sources.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/singleFileExe/Benchmarks/sources.mk
index 2d6bdf5df20..b9165764518 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/singleFileExe/Benchmarks/sources.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/singleFileExe/Benchmarks/sources.mk
@@ -2,12 +2,12 @@
# Automatically-generated file. Do not edit!
################################################################################
-O_SRCS :=
C_SRCS :=
-S_UPPER_SRCS :=
+O_SRCS :=
S_SRCS :=
-OBJS :=
+S_UPPER_SRCS :=
C_DEPS :=
+OBJS :=
# Every subdirectory with source files must be described here
SUBDIRS := \
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/singleFileExe/Benchmarks/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/singleFileExe/Benchmarks/subdir.mk
index 902f1b1c8ac..4dcc61195ba 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/singleFileExe/Benchmarks/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/singleFileExe/Benchmarks/subdir.mk
@@ -6,15 +6,15 @@
C_SRCS += \
../main.c
-OBJS += \
-./main.o
-
C_DEPS += \
./main.d
+OBJS += \
+./main.o
+
# Each subdirectory must supply rules for building sources it contributes
-%.o: ../%.c
+%.o: ../%.c subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: compiler.gnu.c'
gcc -O0 -g3 -Wall -c -fmessage-length=0 -o "$@" "$<" && \
@@ -24,3 +24,10 @@ C_DEPS += \
@echo ' '
+clean: clean--2e-
+
+clean--2e-:
+ -$(RM) ./main.d ./main.o
+
+.PHONY: clean--2e-
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/twoFileSO/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/twoFileSO/Benchmarks/makefile
index b9624981de1..1b7921c3ca3 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/twoFileSO/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/twoFileSO/Benchmarks/makefile
@@ -9,12 +9,8 @@ RM := rm -rf
# All of the sources participating in the build are defined here
-include sources.mk
-include subdir.mk
--include objects.mk
ifneq ($(MAKECMDGOALS),clean)
-ifneq ($(strip $(C_DEPS)),)
--include $(C_DEPS)
-endif
ifneq ($(strip $(CC_DEPS)),)
-include $(CC_DEPS)
endif
@@ -24,6 +20,9 @@ endif
ifneq ($(strip $(CXX_DEPS)),)
-include $(CXX_DEPS)
endif
+ifneq ($(strip $(C_DEPS)),)
+-include $(C_DEPS)
+endif
ifneq ($(strip $(C_UPPER_DEPS)),)
-include $(C_UPPER_DEPS)
endif
@@ -31,13 +30,27 @@ endif
-include ../makefile.defs
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
+BUILD_ARTIFACT_NAME := testDoubleSO
+BUILD_ARTIFACT_EXTENSION := so
+BUILD_ARTIFACT_PREFIX := lib
+BUILD_ARTIFACT := $(BUILD_ARTIFACT_PREFIX)$(BUILD_ARTIFACT_NAME)$(if $(BUILD_ARTIFACT_EXTENSION),.$(BUILD_ARTIFACT_EXTENSION),)
+
# Add inputs and outputs from these tool invocations to the build variables
# All Target
-all: libtestDoubleSO.so
+all: main-build
+
+# Main-build Target
+main-build: libtestDoubleSO.so
# Tool invocations
-libtestDoubleSO.so: $(OBJS) $(USER_OBJS)
+libtestDoubleSO.so: $(OBJS) $(USER_OBJS) makefile $(OPTIONAL_TOOL_DEPS)
@echo 'Building target: $@'
@echo 'Invoking: linker.gnu.cpp'
g++ -shared -o "libtestDoubleSO.so" $(OBJS) $(USER_OBJS) $(LIBS)
@@ -46,9 +59,9 @@ libtestDoubleSO.so: $(OBJS) $(USER_OBJS)
# Other Targets
clean:
- -$(RM) $(OBJS)$(C_DEPS)$(CC_DEPS)$(CPP_DEPS)$(CXX_DEPS)$(C_UPPER_DEPS) libtestDoubleSO.so
+ -$(RM) libtestDoubleSO.so
-@echo ' '
-.PHONY: all clean dependents
+.PHONY: all clean dependents main-build
-include ../makefile.targets
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/twoFileSO/Benchmarks/sources.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/twoFileSO/Benchmarks/sources.mk
index 71808421af0..59afb7f9948 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/twoFileSO/Benchmarks/sources.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/twoFileSO/Benchmarks/sources.mk
@@ -2,20 +2,20 @@
# Automatically-generated file. Do not edit!
################################################################################
-O_SRCS :=
+CC_SRCS :=
CPP_SRCS :=
-C_UPPER_SRCS :=
+CXX_SRCS :=
C_SRCS :=
-S_UPPER_SRCS :=
+C_UPPER_SRCS :=
+O_SRCS :=
S_SRCS :=
-CXX_SRCS :=
-CC_SRCS :=
-OBJS :=
-C_DEPS :=
+S_UPPER_SRCS :=
CC_DEPS :=
CPP_DEPS :=
CXX_DEPS :=
+C_DEPS :=
C_UPPER_DEPS :=
+OBJS :=
# Every subdirectory with source files must be described here
SUBDIRS := \
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/twoFileSO/Benchmarks/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/twoFileSO/Benchmarks/subdir.mk
index 0e0b407c30d..8d11a6a5406 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/twoFileSO/Benchmarks/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/twoFileSO/Benchmarks/subdir.mk
@@ -7,17 +7,17 @@ C_SRCS += \
../so1.c \
../so2.c
-OBJS += \
-./so1.o \
-./so2.o
-
C_DEPS += \
./so1.d \
./so2.d
+OBJS += \
+./so1.o \
+./so2.o
+
# Each subdirectory must supply rules for building sources it contributes
-%.o: ../%.c
+%.o: ../%.c subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: compiler.gnu.cpp'
g++ -DXXX -O0 -g3 -Wall -c -o "$@" "$<" && \
@@ -27,3 +27,10 @@ C_DEPS += \
@echo ' '
+clean: clean--2e-
+
+clean--2e-:
+ -$(RM) ./so1.d ./so1.o ./so2.d ./so2.o
+
+.PHONY: clean--2e-
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/CDTFortranTest1/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/CDTFortranTest1/Benchmarks/makefile
index 50bc66e9c65..5682e95f052 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/CDTFortranTest1/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/CDTFortranTest1/Benchmarks/makefile
@@ -9,17 +9,30 @@ RM := rm -rf
# All of the sources participating in the build are defined here
-include sources.mk
-include subdir.mk
--include objects.mk
-include ../makefile.defs
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
+BUILD_ARTIFACT_NAME := CDTFortranTest1
+BUILD_ARTIFACT_EXTENSION := exe
+BUILD_ARTIFACT_PREFIX :=
+BUILD_ARTIFACT := $(BUILD_ARTIFACT_PREFIX)$(BUILD_ARTIFACT_NAME)$(if $(BUILD_ARTIFACT_EXTENSION),.$(BUILD_ARTIFACT_EXTENSION),)
+
# Add inputs and outputs from these tool invocations to the build variables
# All Target
-all: CDTFortranTest1.exe
+all: main-build
+
+# Main-build Target
+main-build: CDTFortranTest1.exe
# Tool invocations
-CDTFortranTest1.exe: $(OBJS) $(USER_OBJS)
+CDTFortranTest1.exe: $(OBJS) $(USER_OBJS) makefile $(OPTIONAL_TOOL_DEPS)
@echo 'Building target: $@'
@echo 'Invoking: Linker'
mylink -o "CDTFortranTest1.exe" $(OBJS) $(USER_OBJS) $(LIBS)
@@ -28,9 +41,9 @@ CDTFortranTest1.exe: $(OBJS) $(USER_OBJS)
# Other Targets
clean:
- -$(RM) $(OBJS)$(MODS)$(EXECUTABLES) CDTFortranTest1.exe
+ -$(RM) CDTFortranTest1.exe
-@echo ' '
-.PHONY: all clean dependents
+.PHONY: all clean dependents main-build
-include ../makefile.targets
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/CDTFortranTest1/Benchmarks/sources.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/CDTFortranTest1/Benchmarks/sources.mk
index 6536c4d22b4..f69508fcaae 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/CDTFortranTest1/Benchmarks/sources.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/CDTFortranTest1/Benchmarks/sources.mk
@@ -2,17 +2,17 @@
# Automatically-generated file. Do not edit!
################################################################################
-O_SRCS :=
+F90_SRCS :=
F90_UPPER_SRCS :=
-F_UPPER_SRCS :=
+FOR_SRCS :=
+FOR_UPPER_SRCS :=
F_SRCS :=
+F_UPPER_SRCS :=
OBJ_SRCS :=
-FOR_UPPER_SRCS :=
-FOR_SRCS :=
-F90_SRCS :=
-OBJS :=
-MODS :=
+O_SRCS :=
EXECUTABLES :=
+MODS :=
+OBJS :=
# Every subdirectory with source files must be described here
SUBDIRS := \
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/CDTFortranTest1/Benchmarks/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/CDTFortranTest1/Benchmarks/subdir.mk
index e1ac7090213..85c1aaf6288 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/CDTFortranTest1/Benchmarks/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/CDTFortranTest1/Benchmarks/subdir.mk
@@ -15,7 +15,7 @@ OBJS += \
# Each subdirectory must supply rules for building sources it contributes
-%.obj: ../%.F90
+%.obj: ../%.F90 subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: Test Fortran Compiler'
myfort -c -object:"$@" "$<"
@@ -27,3 +27,10 @@ MAIN.obj: AVE_CALCULATOR.mod ../MODULE.F90
./AVE_CALCULATOR.mod: MODULE.obj
+clean: clean--2e-
+
+clean--2e-:
+ -$(RM) ./AVE_CALCULATOR.mod ./AVERAGE.obj ./MAIN.obj ./MODULE.obj
+
+.PHONY: clean--2e-
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/CDTFortranTest2/Benchmarks/Sources/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/CDTFortranTest2/Benchmarks/Sources/subdir.mk
index ec92de6e7de..d76e9d1d52c 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/CDTFortranTest2/Benchmarks/Sources/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/CDTFortranTest2/Benchmarks/Sources/subdir.mk
@@ -87,7 +87,7 @@ OBJS += \
# Each subdirectory must supply rules for building sources it contributes
-Sources/%.obj: ../Sources/%.f90
+Sources/%.obj: ../Sources/%.f90 Sources/subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: Test Fortran Compiler'
myfort -c -object:"$@" "$<"
@@ -173,3 +173,10 @@ Sources/y.obj: D.mod ../module/d.f90 L_MODULE.mod ../module/l_module.f90 M1_MODU
Sources/z.obj: A_MODULE.mod ../module/a_module.f90 CBA_MODULE.mod ../module/cba_module.f90 D.mod ../module/d.f90 JJ_MODULE.mod ../module/jj_module.f90 MF_MODULE.mod ../module/mf_module.f90 XXX_MODULE.mod ../module/xxx_module.f90
+clean: clean-Sources
+
+clean-Sources:
+ -$(RM) ./Sources/a.obj ./Sources/ab.obj ./Sources/ac.obj ./Sources/c.obj ./Sources/ca.obj ./Sources/cd.obj ./Sources/ce.obj ./Sources/d1.obj ./Sources/e.obj ./Sources/et.obj ./Sources/f.obj ./Sources/fa.obj ./Sources/fex.obj ./Sources/ff.obj ./Sources/g.obj ./Sources/h.obj ./Sources/ha.obj ./Sources/i.obj ./Sources/ia.obj ./Sources/ii.obj ./Sources/is.obj ./Sources/l.obj ./Sources/m.obj ./Sources/ma.obj ./Sources/main.obj ./Sources/mo.obj ./Sources/o.obj ./Sources/p.obj ./Sources/r.obj ./Sources/rx.obj ./Sources/s.obj ./Sources/t.obj ./Sources/u.obj ./Sources/u1.obj ./Sources/v.obj ./Sources/w.obj ./Sources/x.obj ./Sources/y.obj ./Sources/z.obj
+
+.PHONY: clean-Sources
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/CDTFortranTest2/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/CDTFortranTest2/Benchmarks/makefile
index aab7347f2ab..3d87a2d4bc8 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/CDTFortranTest2/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/CDTFortranTest2/Benchmarks/makefile
@@ -10,18 +10,30 @@ RM := rm -rf
-include sources.mk
-include module/subdir.mk
-include Sources/subdir.mk
--include subdir.mk
--include objects.mk
-include ../makefile.defs
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
+BUILD_ARTIFACT_NAME := CDTFortranTest2
+BUILD_ARTIFACT_EXTENSION :=
+BUILD_ARTIFACT_PREFIX :=
+BUILD_ARTIFACT := $(BUILD_ARTIFACT_PREFIX)$(BUILD_ARTIFACT_NAME)$(if $(BUILD_ARTIFACT_EXTENSION),.$(BUILD_ARTIFACT_EXTENSION),)
+
# Add inputs and outputs from these tool invocations to the build variables
# All Target
-all: CDTFortranTest2
+all: main-build
+
+# Main-build Target
+main-build: CDTFortranTest2
# Tool invocations
-CDTFortranTest2: $(OBJS) $(USER_OBJS)
+CDTFortranTest2: $(OBJS) $(USER_OBJS) makefile $(OPTIONAL_TOOL_DEPS)
@echo 'Building target: $@'
@echo 'Invoking: Linker'
mylink -o "CDTFortranTest2" $(OBJS) $(USER_OBJS) $(LIBS)
@@ -30,9 +42,9 @@ CDTFortranTest2: $(OBJS) $(USER_OBJS)
# Other Targets
clean:
- -$(RM) $(OBJS)$(MODS)$(EXECUTABLES) CDTFortranTest2
+ -$(RM) CDTFortranTest2
-@echo ' '
-.PHONY: all clean dependents
+.PHONY: all clean dependents main-build
-include ../makefile.targets
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/CDTFortranTest2/Benchmarks/module/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/CDTFortranTest2/Benchmarks/module/subdir.mk
index 262ac77a261..d56c41b1b5e 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/CDTFortranTest2/Benchmarks/module/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/CDTFortranTest2/Benchmarks/module/subdir.mk
@@ -69,7 +69,7 @@ OBJS += \
# Each subdirectory must supply rules for building sources it contributes
-module/%.obj: ../module/%.f90
+module/%.obj: ../module/%.f90 module/subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: Test Fortran Compiler'
myfort -c -object:"$@" "$<"
@@ -164,3 +164,10 @@ module/yyy_module.obj: A2_MODULE.mod ../module/a2_module.f90 A_MODULE.mod ../mod
./YYY_MODULE.mod: module/yyy_module.obj A2_MODULE.mod ../module/a2_module.f90 A_MODULE.mod ../module/a_module.f90 B1_MODULE.mod ../module/b1_module.f90 D.mod ../module/d.f90 L1_MODULE.mod ../module/l1_module.f90 UN_MODULE.mod ../module/un_module.f90 XYZ_MODULE.mod ../module/xyz_module.f90
+clean: clean-module
+
+clean-module:
+ -$(RM) ./A1_MODULE.mod ./A2_MODULE.mod ./ABC_MODULE.mod ./A_MODULE.mod ./B1_MODULE.mod ./B2_MODULE.mod ./C1_MODULE.mod ./C2_MODULE.mod ./C3_MODULE.mod ./CBA_MODULE.mod ./CR_MODULE.mod ./D.mod ./ET_MODULE.mod ./F_MODULE.mod ./G_MOD.mod ./JJ_MODULE.mod ./K_MODULE.mod ./L1_MODULE.mod ./L_MODULE.mod ./M1_MODULE.mod ./MF_MODULE.mod ./MG_MODULE.mod ./P_MODULE.mod ./UN_MODULE.mod ./V_MODULE.mod ./W_MODULE.mod ./XXX_MODULE.mod ./XYZ_MODULE.mod ./YYY_MODULE.mod ./e_MODULE.mod ./module/F_module.obj ./module/a1_module.obj ./module/a2_module.obj ./module/a_module.obj ./module/abc_module.obj ./module/b1_module.obj ./module/b2_module.obj ./module/c1_module.obj ./module/c2_module.obj ./module/c3_module.obj ./module/cba_module.obj ./module/cr_module.obj ./module/d.obj ./module/e_module.obj ./module/et_module.obj ./module/g_module.obj ./module/jj_module.obj ./module/k_module.obj ./module/l1_module.obj ./module/l_module.obj ./module/m1_module.obj ./module/mf_module.obj ./module/mg_module.obj ./module/p_module.obj ./module/un_module.obj ./module/v_module.obj ./module/w_module.obj ./module/xxx_module.obj ./module/xyz_module.obj ./module/yyy_module.obj
+
+.PHONY: clean-module
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/CDTFortranTest2/Benchmarks/sources.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/CDTFortranTest2/Benchmarks/sources.mk
index e1d7d578abe..78300c360d4 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/CDTFortranTest2/Benchmarks/sources.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/CDTFortranTest2/Benchmarks/sources.mk
@@ -2,17 +2,17 @@
# Automatically-generated file. Do not edit!
################################################################################
-O_SRCS :=
+F90_SRCS :=
F90_UPPER_SRCS :=
-F_UPPER_SRCS :=
+FOR_SRCS :=
+FOR_UPPER_SRCS :=
F_SRCS :=
+F_UPPER_SRCS :=
OBJ_SRCS :=
-FOR_UPPER_SRCS :=
-FOR_SRCS :=
-F90_SRCS :=
-OBJS :=
-MODS :=
+O_SRCS :=
EXECUTABLES :=
+MODS :=
+OBJS :=
# Every subdirectory with source files must be described here
SUBDIRS := \
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/TestATO/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/TestATO/Benchmarks/makefile
index e63ad38c2b8..1d1ad19a3bb 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/TestATO/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/TestATO/Benchmarks/makefile
@@ -9,17 +9,30 @@ RM := rm -rf
# All of the sources participating in the build are defined here
-include sources.mk
-include subdir.mk
--include objects.mk
-include ../makefile.defs
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
+BUILD_ARTIFACT_NAME := TestATO
+BUILD_ARTIFACT_EXTENSION := out
+BUILD_ARTIFACT_PREFIX :=
+BUILD_ARTIFACT := $(BUILD_ARTIFACT_PREFIX)$(BUILD_ARTIFACT_NAME)$(if $(BUILD_ARTIFACT_EXTENSION),.$(BUILD_ARTIFACT_EXTENSION),)
+
# Add inputs and outputs from these tool invocations to the build variables
# All Target
-all: TestATO.out
+all: main-build
+
+# Main-build Target
+main-build: TestATO.out
# Tool invocations
-TestATO.out: $(OBJS) $(OPT_SRCS)
+TestATO.out: $(OBJS) $(OPT_SRCS) makefile $(OPTIONAL_TOOL_DEPS)
@echo 'Building target: $@'
@echo 'Invoking: AssignToOption Executable Linker'
ATOL -opt../TestATO1.opt -opt../TestATO2.opt -o "TestATO.out" $(OBJS)
@@ -28,9 +41,9 @@ TestATO.out: $(OBJS) $(OPT_SRCS)
# Other Targets
clean:
- -$(RM) $(ASSIGNTOOPTION_EXECUTABLE_OUTPUTS)$(OBJS) TestATO.out
+ -$(RM) TestATO.out
-@echo ' '
-.PHONY: all clean dependents
+.PHONY: all clean dependents main-build
-include ../makefile.targets
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/TestATO/Benchmarks/sources.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/TestATO/Benchmarks/sources.mk
index 07f0261a56e..a969660f720 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/TestATO/Benchmarks/sources.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/TestATO/Benchmarks/sources.mk
@@ -2,13 +2,13 @@
# Automatically-generated file. Do not edit!
################################################################################
+COP_SRCS :=
CPP_SRCS :=
-C_UPPER_SRCS :=
+CPP_UPPER_SRCS :=
C_SRCS :=
+C_UPPER_SRCS :=
OBJ_SRCS :=
OPT_SRCS :=
-COP_SRCS :=
-CPP_UPPER_SRCS :=
ASSIGNTOOPTION_EXECUTABLE_OUTPUTS :=
OBJS :=
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/TestATO/Benchmarks/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/TestATO/Benchmarks/subdir.mk
index a40307dddcd..69e5f34b411 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/TestATO/Benchmarks/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/TestATO/Benchmarks/subdir.mk
@@ -3,6 +3,9 @@
################################################################################
# Add inputs and outputs from these tool invocations to the build variables
+COP_SRCS += \
+../TestATO.cop
+
C_SRCS += \
../TestATO.c
@@ -10,15 +13,12 @@ OPT_SRCS += \
../TestATO1.opt \
../TestATO2.opt
-COP_SRCS += \
-../TestATO.cop
-
OBJS += \
./TestATO.obj
# Each subdirectory must supply rules for building sources it contributes
-%.obj: ../%.c
+%.obj: ../%.c subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: AssignToOption Compiler'
ATOC -opt../TestATO.cop "$@" "$<"
@@ -26,3 +26,10 @@ OBJS += \
@echo ' '
+clean: clean--2e-
+
+clean--2e-:
+ -$(RM) ./TestATO.obj
+
+.PHONY: clean--2e-
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/copyandDeploy/Benchmarks/Functions/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/copyandDeploy/Benchmarks/Functions/subdir.mk
index 11bdb3bda0b..d40fcd632ef 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/copyandDeploy/Benchmarks/Functions/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/copyandDeploy/Benchmarks/Functions/subdir.mk
@@ -6,25 +6,25 @@
X_SRCS += \
../Functions/Func1.x
-OBJS += \
-./Functions/Func1.o
+CS += \
+./Functions/Func1.c
C_DEPS += \
./Functions/Func1.d
-CS += \
-./Functions/Func1.c
+OBJS += \
+./Functions/Func1.o
# Each subdirectory must supply rules for building sources it contributes
-Functions/%.c: ../Functions/%.x
+Functions/%.c: ../Functions/%.x Functions/subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: Copy tool'
cp "$<" "$@"
@echo 'Finished building: $<'
@echo ' '
-Functions/%.o: ./Functions/%.c
+Functions/%.o: ./Functions/%.c Functions/subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: MBS30.compiler.gnu.c'
gcc -O0 -g3 -Wall -c -fmessage-length=0 -v -o "$@" "$<" && \
@@ -34,3 +34,10 @@ Functions/%.o: ./Functions/%.c
@echo ' '
+clean: clean-Functions
+
+clean-Functions:
+ -$(RM) ./Functions/Func1.c ./Functions/Func1.d ./Functions/Func1.o
+
+.PHONY: clean-Functions
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/copyandDeploy/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/copyandDeploy/Benchmarks/makefile
index 4ac750c9189..6efd87f2eb7 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/copyandDeploy/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/copyandDeploy/Benchmarks/makefile
@@ -10,7 +10,6 @@ RM := rm -rf
-include sources.mk
-include Functions/subdir.mk
-include subdir.mk
--include objects.mk
ifneq ($(MAKECMDGOALS),clean)
ifneq ($(strip $(C_DEPS)),)
@@ -20,23 +19,37 @@ endif
-include ../makefile.defs
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
+BUILD_ARTIFACT_NAME := TestCopyandDeploy
+BUILD_ARTIFACT_EXTENSION :=
+BUILD_ARTIFACT_PREFIX :=
+BUILD_ARTIFACT := $(BUILD_ARTIFACT_PREFIX)$(BUILD_ARTIFACT_NAME)$(if $(BUILD_ARTIFACT_EXTENSION),.$(BUILD_ARTIFACT_EXTENSION),)
+
# Add inputs and outputs from these tool invocations to the build variables
EXECUTABLES += \
USER_OBJS.foo \
# All Target
-all: TestCopyandDeploy
+all: main-build
+
+# Main-build Target
+main-build: TestCopyandDeploy
# Tool invocations
-TestCopyandDeploy: $(EXECUTABLES)
+TestCopyandDeploy: $(EXECUTABLES) makefile $(OPTIONAL_TOOL_DEPS)
@echo 'Building target: $@'
@echo 'Invoking: Deploy tool'
cp $(EXECUTABLES) "TestCopyandDeploy"
@echo 'Finished building target: $@'
@echo ' '
-USER_OBJS.foo: $(OBJS) $(USER_OBJS)
+USER_OBJS.foo: $(OBJS) $(USER_OBJS) makefile $(OPTIONAL_TOOL_DEPS)
@echo 'Invoking: MBS30.linker.gnu.c'
gcc -o "USER_OBJS.foo" $(OBJS) $(USER_OBJS) $(LIBS)
@echo 'Finished building: $@'
@@ -44,9 +57,9 @@ USER_OBJS.foo: $(OBJS) $(USER_OBJS)
# Other Targets
clean:
- -$(RM) $(OBJS)$(FINAL)$(C_DEPS)$(CS)$(EXECUTABLES) TestCopyandDeploy
+ -$(RM) TestCopyandDeploy USER_OBJS.foo
-@echo ' '
-.PHONY: all clean dependents
+.PHONY: all clean dependents main-build
-include ../makefile.targets
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/copyandDeploy/Benchmarks/sources.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/copyandDeploy/Benchmarks/sources.mk
index b20de370c83..3c25b17520b 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/copyandDeploy/Benchmarks/sources.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/copyandDeploy/Benchmarks/sources.mk
@@ -2,15 +2,15 @@
# Automatically-generated file. Do not edit!
################################################################################
-O_SRCS :=
-FOO_SRCS :=
C_SRCS :=
+FOO_SRCS :=
+O_SRCS :=
X_SRCS :=
-OBJS :=
-FINAL :=
-C_DEPS :=
CS :=
+C_DEPS :=
EXECUTABLES :=
+FINAL :=
+OBJS :=
# Every subdirectory with source files must be described here
SUBDIRS := \
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/copyandDeploy/Benchmarks/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/copyandDeploy/Benchmarks/subdir.mk
index 53d386b9c5e..d35b314e4a3 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/copyandDeploy/Benchmarks/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/copyandDeploy/Benchmarks/subdir.mk
@@ -6,25 +6,25 @@
X_SRCS += \
../main.x
-OBJS += \
-./main.o
+CS += \
+./main.c
C_DEPS += \
./main.d
-CS += \
-./main.c
+OBJS += \
+./main.o
# Each subdirectory must supply rules for building sources it contributes
-%.c: ../%.x
+%.c: ../%.x subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: Copy tool'
cp "$<" "$@"
@echo 'Finished building: $<'
@echo ' '
-%.o: ./%.c
+%.o: ./%.c subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: MBS30.compiler.gnu.c'
gcc -O0 -g3 -Wall -c -fmessage-length=0 -v -o "$@" "$<" && \
@@ -34,3 +34,10 @@ CS += \
@echo ' '
+clean: clean--2e-
+
+clean--2e-:
+ -$(RM) ./main.c ./main.d ./main.o
+
+.PHONY: clean--2e-
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/deleteFile/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/deleteFile/Benchmarks/makefile
index d2bdfef6d1f..3095d2f5d47 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/deleteFile/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/deleteFile/Benchmarks/makefile
@@ -9,12 +9,8 @@ RM := rm -rf
# All of the sources participating in the build are defined here
-include sources.mk
-include subdir.mk
--include objects.mk
ifneq ($(MAKECMDGOALS),clean)
-ifneq ($(strip $(C_DEPS)),)
--include $(C_DEPS)
-endif
ifneq ($(strip $(CC_DEPS)),)
-include $(CC_DEPS)
endif
@@ -24,6 +20,9 @@ endif
ifneq ($(strip $(CXX_DEPS)),)
-include $(CXX_DEPS)
endif
+ifneq ($(strip $(C_DEPS)),)
+-include $(C_DEPS)
+endif
ifneq ($(strip $(C_UPPER_DEPS)),)
-include $(C_UPPER_DEPS)
endif
@@ -31,13 +30,27 @@ endif
-include ../makefile.defs
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
+BUILD_ARTIFACT_NAME := DeleteFile
+BUILD_ARTIFACT_EXTENSION :=
+BUILD_ARTIFACT_PREFIX :=
+BUILD_ARTIFACT := $(BUILD_ARTIFACT_PREFIX)$(BUILD_ARTIFACT_NAME)$(if $(BUILD_ARTIFACT_EXTENSION),.$(BUILD_ARTIFACT_EXTENSION),)
+
# Add inputs and outputs from these tool invocations to the build variables
# All Target
-all: DeleteFile
+all: main-build
+
+# Main-build Target
+main-build: DeleteFile
# Tool invocations
-DeleteFile: $(OBJS) $(USER_OBJS)
+DeleteFile: $(OBJS) $(USER_OBJS) makefile $(OPTIONAL_TOOL_DEPS)
@echo 'Building target: $@'
@echo 'Invoking: MBS30.linker.gnu.cpp'
g++ -o "DeleteFile" $(OBJS) $(USER_OBJS) $(LIBS)
@@ -46,9 +59,9 @@ DeleteFile: $(OBJS) $(USER_OBJS)
# Other Targets
clean:
- -$(RM) $(OBJS)$(C_DEPS)$(CC_DEPS)$(CPP_DEPS)$(EXECUTABLES)$(CXX_DEPS)$(C_UPPER_DEPS) DeleteFile
+ -$(RM) DeleteFile
-@echo ' '
-.PHONY: all clean dependents
+.PHONY: all clean dependents main-build
-include ../makefile.targets
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/deleteFile/Benchmarks/sources.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/deleteFile/Benchmarks/sources.mk
index 253f5085594..20810b9d039 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/deleteFile/Benchmarks/sources.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/deleteFile/Benchmarks/sources.mk
@@ -2,19 +2,19 @@
# Automatically-generated file. Do not edit!
################################################################################
-O_SRCS :=
+CC_SRCS :=
CPP_SRCS :=
-C_UPPER_SRCS :=
-C_SRCS :=
CXX_SRCS :=
-CC_SRCS :=
-OBJS :=
-C_DEPS :=
+C_SRCS :=
+C_UPPER_SRCS :=
+O_SRCS :=
CC_DEPS :=
CPP_DEPS :=
-EXECUTABLES :=
CXX_DEPS :=
+C_DEPS :=
C_UPPER_DEPS :=
+EXECUTABLES :=
+OBJS :=
# Every subdirectory with source files must be described here
SUBDIRS := \
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/deleteFile/Benchmarks/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/deleteFile/Benchmarks/subdir.mk
index f904abd99d5..477292767e8 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/deleteFile/Benchmarks/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/deleteFile/Benchmarks/subdir.mk
@@ -6,15 +6,15 @@
CXX_SRCS += \
../main.cxx
-OBJS += \
-./main.o
-
CXX_DEPS += \
./main.d
+OBJS += \
+./main.o
+
# Each subdirectory must supply rules for building sources it contributes
-%.o: ../%.cxx
+%.o: ../%.cxx subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: MBS30.compiler.gnu.cpp'
g++ -O0 -g3 -Wall -c -fmessage-length=0 -o "$@" "$<" && \
@@ -24,3 +24,10 @@ CXX_DEPS += \
@echo ' '
+clean: clean--2e-
+
+clean--2e-:
+ -$(RM) ./main.d ./main.o
+
+.PHONY: clean--2e-
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/inputTypeOption/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/inputTypeOption/Benchmarks/makefile
index 02ec599a54a..35e7f1196c4 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/inputTypeOption/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/inputTypeOption/Benchmarks/makefile
@@ -9,7 +9,6 @@ RM := rm -rf
# All of the sources participating in the build are defined here
-include sources.mk
-include subdir.mk
--include objects.mk
ifneq ($(MAKECMDGOALS),clean)
ifneq ($(strip $(C_DEPS)),)
@@ -19,13 +18,27 @@ endif
-include ../makefile.defs
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
+BUILD_ARTIFACT_NAME := inputTypeOption
+BUILD_ARTIFACT_EXTENSION :=
+BUILD_ARTIFACT_PREFIX :=
+BUILD_ARTIFACT := $(BUILD_ARTIFACT_PREFIX)$(BUILD_ARTIFACT_NAME)$(if $(BUILD_ARTIFACT_EXTENSION),.$(BUILD_ARTIFACT_EXTENSION),)
+
# Add inputs and outputs from these tool invocations to the build variables
# All Target
-all: inputTypeOption
+all: main-build
+
+# Main-build Target
+main-build: inputTypeOption
# Tool invocations
-inputTypeOption: $(OBJS) C:\An\ Absolute\ Path\ With\ Spaces\foo.linker $(USER_OBJS)
+inputTypeOption: $(OBJS) C:\An\ Absolute\ Path\ With\ Spaces\foo.linker $(USER_OBJS) makefile $(OPTIONAL_TOOL_DEPS)
@echo 'Building target: $@'
@echo 'Invoking: org.eclipse.cdt.managedbuilder.core.tests.inputTypeOptionMakefileRenderingTest.c.linker'
gcc --linkerInputTypeOption="C:\An Absolute Path With Spaces\foo.linker" -o "inputTypeOption" $(OBJS) $(USER_OBJS) $(LIBS)
@@ -34,9 +47,9 @@ inputTypeOption: $(OBJS) C:\An\ Absolute\ Path\ With\ Spaces\foo.linker $(USER_O
# Other Targets
clean:
- -$(RM) $(OBJS)$(C_DEPS)$(EXECUTABLES) inputTypeOption
+ -$(RM) inputTypeOption
-@echo ' '
-.PHONY: all clean dependents
+.PHONY: all clean dependents main-build
-include ../makefile.targets
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/inputTypeOption/Benchmarks/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/inputTypeOption/Benchmarks/subdir.mk
index d12dc805385..3487d6cc2d2 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/inputTypeOption/Benchmarks/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/inputTypeOption/Benchmarks/subdir.mk
@@ -20,7 +20,7 @@ C_DEPS += \
# Each subdirectory must supply rules for building sources it contributes
-%.o: ../%.c C:/An\ Absolute\ Path\ With\ Spaces/foo.compiler C:/An\ Absolute\ Path\ With\ Spaces/foo.noquotes.compiler
+%.o: ../%.c C:/An\ Absolute\ Path\ With\ Spaces/foo.compiler C:/An\ Absolute\ Path\ With\ Spaces/foo.noquotes.compiler subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: org.eclipse.cdt.managedbuilder.core.tests.inputTypeOptionMakefileRenderingTest.c.compiler'
gcc -O3 -Wall -c -fmessage-length=0 -v --compilerInputTypeOption="C:\An Absolute Path With Spaces\foo.compiler" --compilerInputTypeOption=C:\An Absolute Path With Spaces\foo.noquotes.compiler -o "$@" "$<" && \
@@ -29,7 +29,7 @@ C_DEPS += \
@echo 'Finished building: $<'
@echo ' '
-resourceSettingAbsoluteCompiler.o: ../resourceSettingAbsoluteCompiler.c D:/An\ Absolute\ Path\ With\ Spaces/resource.foo.compiler D:/An\ Absolute\ Path\ With\ Spaces/resource.foo.noquotes.compiler
+resourceSettingAbsoluteCompiler.o: ../resourceSettingAbsoluteCompiler.c D:/An\ Absolute\ Path\ With\ Spaces/resource.foo.compiler D:/An\ Absolute\ Path\ With\ Spaces/resource.foo.noquotes.compiler subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: org.eclipse.cdt.managedbuilder.core.tests.inputTypeOptionMakefileRenderingTest.c.compiler'
gcc -O3 -Wall -c -fmessage-length=0 -v --compilerInputTypeOption="D:\An Absolute Path With Spaces\resource.foo.compiler" --compilerInputTypeOption=D:\An Absolute Path With Spaces\resource.foo.noquotes.compiler -o "$@" "$<" && \
@@ -38,7 +38,7 @@ resourceSettingAbsoluteCompiler.o: ../resourceSettingAbsoluteCompiler.c D:/An\ A
@echo 'Finished building: $<'
@echo ' '
-resourceSettingRelativeCompiler.o: ../resourceSettingRelativeCompiler.c ../A\ Folder\ With\ Spaces/foo.compiler ../A\ Folder\ With\ Spaces/foo.noquotes.compiler
+resourceSettingRelativeCompiler.o: ../resourceSettingRelativeCompiler.c ../A\ Folder\ With\ Spaces/foo.compiler ../A\ Folder\ With\ Spaces/foo.noquotes.compiler subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: org.eclipse.cdt.managedbuilder.core.tests.inputTypeOptionMakefileRenderingTest.c.compiler'
gcc -O3 -Wall -c -fmessage-length=0 -v --compilerInputTypeOption="A Folder With Spaces/foo.compiler" --compilerInputTypeOption=A Folder With Spaces/foo.noquotes.compiler -o "$@" "$<" && \
@@ -48,3 +48,10 @@ resourceSettingRelativeCompiler.o: ../resourceSettingRelativeCompiler.c ../A\ Fo
@echo ' '
+clean: clean--2e-
+
+clean--2e-:
+ -$(RM) ./picksUpGlobalAbsoluteInputOptionPath.d ./picksUpGlobalAbsoluteInputOptionPath.o ./resourceSettingAbsoluteCompiler.d ./resourceSettingAbsoluteCompiler.o ./resourceSettingRelativeCompiler.d ./resourceSettingRelativeCompiler.o
+
+.PHONY: clean--2e-
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedFolder/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedFolder/Benchmarks/makefile
index e9ef4847f98..98a60b6218c 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedFolder/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedFolder/Benchmarks/makefile
@@ -9,7 +9,6 @@ RM := rm -rf
# All of the sources participating in the build are defined here
-include sources.mk
-include subdir.mk
--include objects.mk
ifneq ($(MAKECMDGOALS),clean)
ifneq ($(strip $(C_DEPS)),)
@@ -19,13 +18,27 @@ endif
-include ../makefile.defs
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
+BUILD_ARTIFACT_NAME := linkedFolder
+BUILD_ARTIFACT_EXTENSION := a
+BUILD_ARTIFACT_PREFIX := lib
+BUILD_ARTIFACT := $(BUILD_ARTIFACT_PREFIX)$(BUILD_ARTIFACT_NAME)$(if $(BUILD_ARTIFACT_EXTENSION),.$(BUILD_ARTIFACT_EXTENSION),)
+
# Add inputs and outputs from these tool invocations to the build variables
# All Target
-all: liblinkedFolder.a
+all: main-build
+
+# Main-build Target
+main-build: liblinkedFolder.a
# Tool invocations
-liblinkedFolder.a: $(OBJS) $(USER_OBJS)
+liblinkedFolder.a: $(OBJS) $(USER_OBJS) makefile $(OPTIONAL_TOOL_DEPS)
@echo 'Building target: $@'
@echo 'Invoking: MBS30.archiver.gnu'
ar -r "liblinkedFolder.a" $(OBJS) $(USER_OBJS) $(LIBS)
@@ -34,9 +47,9 @@ liblinkedFolder.a: $(OBJS) $(USER_OBJS)
# Other Targets
clean:
- -$(RM) $(OBJS)$(C_DEPS)$(ARCHIVES) liblinkedFolder.a
+ -$(RM) liblinkedFolder.a
-@echo ' '
-.PHONY: all clean dependents
+.PHONY: all clean dependents main-build
-include ../makefile.targets
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedFolder/Benchmarks/objects.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedFolder/Benchmarks/objects.mk
index b19ccc5913d..742c2da043f 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedFolder/Benchmarks/objects.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedFolder/Benchmarks/objects.mk
@@ -2,7 +2,7 @@
# Automatically-generated file. Do not edit!
################################################################################
-LIBS :=
-
USER_OBJS :=
+LIBS :=
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedFolder/Benchmarks/sources.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedFolder/Benchmarks/sources.mk
index 99517232316..2da1fe64bf9 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedFolder/Benchmarks/sources.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedFolder/Benchmarks/sources.mk
@@ -2,11 +2,11 @@
# Automatically-generated file. Do not edit!
################################################################################
-O_SRCS :=
C_SRCS :=
-OBJS :=
-C_DEPS :=
+O_SRCS :=
ARCHIVES :=
+C_DEPS :=
+OBJS :=
# Every subdirectory with source files must be described here
SUBDIRS := \
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedFolder/Benchmarks/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedFolder/Benchmarks/subdir.mk
index cc179c7df35..bafd716118d 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedFolder/Benchmarks/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedFolder/Benchmarks/subdir.mk
@@ -7,17 +7,17 @@ C_SRCS += \
../f1.c \
../f2.c
-OBJS += \
-./f1.o \
-./f2.o
-
C_DEPS += \
./f1.d \
./f2.d
+OBJS += \
+./f1.o \
+./f2.o
+
# Each subdirectory must supply rules for building sources it contributes
-%.o: ../%.c
+%.o: ../%.c subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: MBS30.compiler.gnu.c'
gcc -O0 -g3 -Wall -c -fmessage-length=0 -v -o "$@" "$<" && \
@@ -27,3 +27,10 @@ C_DEPS += \
@echo ' '
+clean: clean--2e-
+
+clean--2e-:
+ -$(RM) ./f1.d ./f1.o ./f2.d ./f2.o
+
+.PHONY: clean--2e-
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedLib30/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedLib30/Benchmarks/makefile
index 68fbe25cc9b..409c34d5799 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedLib30/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedLib30/Benchmarks/makefile
@@ -9,7 +9,6 @@ RM := rm -rf
# All of the sources participating in the build are defined here
-include sources.mk
-include subdir.mk
--include objects.mk
ifneq ($(MAKECMDGOALS),clean)
ifneq ($(strip $(C_DEPS)),)
@@ -19,13 +18,27 @@ endif
-include ../makefile.defs
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
+BUILD_ARTIFACT_NAME := linkedLib
+BUILD_ARTIFACT_EXTENSION := a
+BUILD_ARTIFACT_PREFIX := lib
+BUILD_ARTIFACT := $(BUILD_ARTIFACT_PREFIX)$(BUILD_ARTIFACT_NAME)$(if $(BUILD_ARTIFACT_EXTENSION),.$(BUILD_ARTIFACT_EXTENSION),)
+
# Add inputs and outputs from these tool invocations to the build variables
# All Target
-all: liblinkedLib.a
+all: main-build
+
+# Main-build Target
+main-build: liblinkedLib.a
# Tool invocations
-liblinkedLib.a: $(OBJS) $(USER_OBJS)
+liblinkedLib.a: $(OBJS) $(USER_OBJS) makefile $(OPTIONAL_TOOL_DEPS)
@echo 'Building target: $@'
@echo 'Invoking: MBS30.archiver.gnu'
ar -r "liblinkedLib.a" $(OBJS) $(USER_OBJS) $(LIBS)
@@ -34,9 +47,9 @@ liblinkedLib.a: $(OBJS) $(USER_OBJS)
# Other Targets
clean:
- -$(RM) $(OBJS)$(ARCHIVES)$(C_DEPS) liblinkedLib.a
+ -$(RM) liblinkedLib.a
-@echo ' '
-.PHONY: all clean dependents
+.PHONY: all clean dependents main-build
-include ../makefile.targets
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedLib30/Benchmarks/objects.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedLib30/Benchmarks/objects.mk
index b19ccc5913d..742c2da043f 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedLib30/Benchmarks/objects.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedLib30/Benchmarks/objects.mk
@@ -2,7 +2,7 @@
# Automatically-generated file. Do not edit!
################################################################################
-LIBS :=
-
USER_OBJS :=
+LIBS :=
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedLib30/Benchmarks/sources.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedLib30/Benchmarks/sources.mk
index ca18ed70ecc..2da1fe64bf9 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedLib30/Benchmarks/sources.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedLib30/Benchmarks/sources.mk
@@ -4,9 +4,9 @@
C_SRCS :=
O_SRCS :=
-OBJS :=
ARCHIVES :=
C_DEPS :=
+OBJS :=
# Every subdirectory with source files must be described here
SUBDIRS := \
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedLib30/Benchmarks/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedLib30/Benchmarks/subdir.mk
index b0e33f4ed19..cb6a9d858ba 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedLib30/Benchmarks/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedLib30/Benchmarks/subdir.mk
@@ -23,7 +23,7 @@ C_DEPS += \
# Each subdirectory must supply rules for building sources it contributes
-f1.o: C:/Documents\ and\ Settings/ltreggia/CDTMBSTest/f1.c
+f1.o: C:/Documents\ and\ Settings/ltreggia/CDTMBSTest/f1.c subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: MBS30.compiler.gnu.c'
gcc -O0 -g3 -Wall -c -fmessage-length=0 -v -o "$@" "$<" && \
@@ -32,7 +32,7 @@ f1.o: C:/Documents\ and\ Settings/ltreggia/CDTMBSTest/f1.c
@echo 'Finished building: $<'
@echo ' '
-f1_30.o: C:/Documents\ and\ Settings/agvozdev/CDTMBSTest/f1_30.c
+f1_30.o: C:/Documents\ and\ Settings/agvozdev/CDTMBSTest/f1_30.c subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: MBS30.compiler.gnu.c'
gcc -O0 -g3 -Wall -c -fmessage-length=0 -v -o "$@" "$<" && \
@@ -41,7 +41,7 @@ f1_30.o: C:/Documents\ and\ Settings/agvozdev/CDTMBSTest/f1_30.c
@echo 'Finished building: $<'
@echo ' '
-f2.o: C:/Documents\ and\ Settings/ltreggia/CDTMBSTest/f2.c
+f2.o: C:/Documents\ and\ Settings/ltreggia/CDTMBSTest/f2.c subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: MBS30.compiler.gnu.c'
gcc -O0 -g3 -Wall -c -fmessage-length=0 -v -o "$@" "$<" && \
@@ -50,7 +50,7 @@ f2.o: C:/Documents\ and\ Settings/ltreggia/CDTMBSTest/f2.c
@echo 'Finished building: $<'
@echo ' '
-f2_30.o: C:/Documents\ and\ Settings/agvozdev/CDTMBSTest/f2_30.c
+f2_30.o: C:/Documents\ and\ Settings/agvozdev/CDTMBSTest/f2_30.c subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: MBS30.compiler.gnu.c'
gcc -O0 -g3 -Wall -c -fmessage-length=0 -v -o "$@" "$<" && \
@@ -60,3 +60,10 @@ f2_30.o: C:/Documents\ and\ Settings/agvozdev/CDTMBSTest/f2_30.c
@echo ' '
+clean: clean--2e-
+
+clean--2e-:
+ -$(RM) ./f1.d ./f1.o ./f1_30.d ./f1_30.o ./f2.d ./f2.o ./f2_30.d ./f2_30.o
+
+.PHONY: clean--2e-
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/multiResConfig/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/multiResConfig/Benchmarks/makefile
index fd44e9a10a8..02feb4ba926 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/multiResConfig/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/multiResConfig/Benchmarks/makefile
@@ -12,12 +12,8 @@ RM := rm -rf
-include source2/subdir.mk
-include source1/subdir.mk
-include subdir.mk
--include objects.mk
ifneq ($(MAKECMDGOALS),clean)
-ifneq ($(strip $(C_DEPS)),)
--include $(C_DEPS)
-endif
ifneq ($(strip $(CC_DEPS)),)
-include $(CC_DEPS)
endif
@@ -27,6 +23,9 @@ endif
ifneq ($(strip $(CXX_DEPS)),)
-include $(CXX_DEPS)
endif
+ifneq ($(strip $(C_DEPS)),)
+-include $(C_DEPS)
+endif
ifneq ($(strip $(C_UPPER_DEPS)),)
-include $(C_UPPER_DEPS)
endif
@@ -34,13 +33,27 @@ endif
-include ../makefile.defs
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
+BUILD_ARTIFACT_NAME := multiResConfig
+BUILD_ARTIFACT_EXTENSION :=
+BUILD_ARTIFACT_PREFIX :=
+BUILD_ARTIFACT := $(BUILD_ARTIFACT_PREFIX)$(BUILD_ARTIFACT_NAME)$(if $(BUILD_ARTIFACT_EXTENSION),.$(BUILD_ARTIFACT_EXTENSION),)
+
# Add inputs and outputs from these tool invocations to the build variables
# All Target
-all: multiResConfig
+all: main-build
+
+# Main-build Target
+main-build: multiResConfig
# Tool invocations
-multiResConfig: $(OBJS) $(USER_OBJS)
+multiResConfig: $(OBJS) $(USER_OBJS) makefile $(OPTIONAL_TOOL_DEPS)
@echo 'Building target: $@'
@echo 'Invoking: MBS30.linker.gnu.cpp'
g++ -o "multiResConfig" $(OBJS) $(USER_OBJS) $(LIBS)
@@ -49,9 +62,9 @@ multiResConfig: $(OBJS) $(USER_OBJS)
# Other Targets
clean:
- -$(RM) $(OBJS)$(C_DEPS)$(CC_DEPS)$(CPP_DEPS)$(EXECUTABLES)$(CXX_DEPS)$(C_UPPER_DEPS) multiResConfig
+ -$(RM) multiResConfig
-@echo ' '
-.PHONY: all clean dependents
+.PHONY: all clean dependents main-build
-include ../makefile.targets
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/multiResConfig/Benchmarks/source1/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/multiResConfig/Benchmarks/source1/subdir.mk
index c62e8751044..5f8ecc3f05a 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/multiResConfig/Benchmarks/source1/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/multiResConfig/Benchmarks/source1/subdir.mk
@@ -6,15 +6,15 @@
CPP_SRCS += \
../source1/Class1.cpp
-OBJS += \
-./source1/Class1.o
-
CPP_DEPS += \
./source1/Class1.d
+OBJS += \
+./source1/Class1.o
+
# Each subdirectory must supply rules for building sources it contributes
-source1/%.o: ../source1/%.cpp
+source1/%.o: ../source1/%.cpp source1/subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: MBS30.compiler.gnu.cpp'
g++ -I../headers -O0 -g3 -Wall -c -fmessage-length=0 -o "$@" "$<" && \
@@ -24,3 +24,10 @@ source1/%.o: ../source1/%.cpp
@echo ' '
+clean: clean-source1
+
+clean-source1:
+ -$(RM) ./source1/Class1.d ./source1/Class1.o
+
+.PHONY: clean-source1
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/multiResConfig/Benchmarks/source2/source21/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/multiResConfig/Benchmarks/source2/source21/subdir.mk
index 8a20f3227dc..a10b4863339 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/multiResConfig/Benchmarks/source2/source21/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/multiResConfig/Benchmarks/source2/source21/subdir.mk
@@ -6,15 +6,15 @@
CPP_SRCS += \
../source2/source21/Class21.cpp
-OBJS += \
-./source2/source21/Class21.o
-
CPP_DEPS += \
./source2/source21/Class21.d
+OBJS += \
+./source2/source21/Class21.o
+
# Each subdirectory must supply rules for building sources it contributes
-source2/source21/Class21.o: ../source2/source21/Class21.cpp
+source2/source21/Class21.o: ../source2/source21/Class21.cpp source2/source21/subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: MBS30.compiler.gnu.cpp'
g++ -DRESCFG -I../headers -O0 -g3 -Wall -c -fmessage-length=0 -o "$@" "$<" && \
@@ -24,3 +24,10 @@ source2/source21/Class21.o: ../source2/source21/Class21.cpp
@echo ' '
+clean: clean-source2-2f-source21
+
+clean-source2-2f-source21:
+ -$(RM) ./source2/source21/Class21.d ./source2/source21/Class21.o
+
+.PHONY: clean-source2-2f-source21
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/multiResConfig/Benchmarks/source2/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/multiResConfig/Benchmarks/source2/subdir.mk
index ff0ad8f01d1..56b081103b1 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/multiResConfig/Benchmarks/source2/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/multiResConfig/Benchmarks/source2/subdir.mk
@@ -6,15 +6,15 @@
CPP_SRCS += \
../source2/Class2.cpp
-OBJS += \
-./source2/Class2.o
-
CPP_DEPS += \
./source2/Class2.d
+OBJS += \
+./source2/Class2.o
+
# Each subdirectory must supply rules for building sources it contributes
-source2/%.o: ../source2/%.cpp
+source2/%.o: ../source2/%.cpp source2/subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: MBS30.compiler.gnu.cpp'
g++ -I../headers -O0 -g3 -Wall -c -fmessage-length=0 -o "$@" "$<" && \
@@ -24,3 +24,10 @@ source2/%.o: ../source2/%.cpp
@echo ' '
+clean: clean-source2
+
+clean-source2:
+ -$(RM) ./source2/Class2.d ./source2/Class2.o
+
+.PHONY: clean-source2
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/multiResConfig/Benchmarks/sources.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/multiResConfig/Benchmarks/sources.mk
index 4092a172734..a502fb13e32 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/multiResConfig/Benchmarks/sources.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/multiResConfig/Benchmarks/sources.mk
@@ -2,19 +2,19 @@
# Automatically-generated file. Do not edit!
################################################################################
-O_SRCS :=
+CC_SRCS :=
CPP_SRCS :=
-C_UPPER_SRCS :=
-C_SRCS :=
CXX_SRCS :=
-CC_SRCS :=
-OBJS :=
-C_DEPS :=
+C_SRCS :=
+C_UPPER_SRCS :=
+O_SRCS :=
CC_DEPS :=
CPP_DEPS :=
-EXECUTABLES :=
CXX_DEPS :=
+C_DEPS :=
C_UPPER_DEPS :=
+EXECUTABLES :=
+OBJS :=
# Every subdirectory with source files must be described here
SUBDIRS := \
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/multiResConfig/Benchmarks/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/multiResConfig/Benchmarks/subdir.mk
index d98430eacf9..4c4695e2e74 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/multiResConfig/Benchmarks/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/multiResConfig/Benchmarks/subdir.mk
@@ -6,15 +6,15 @@
CPP_SRCS += \
../main.cpp
-OBJS += \
-./main.o
-
CPP_DEPS += \
./main.d
+OBJS += \
+./main.o
+
# Each subdirectory must supply rules for building sources it contributes
-%.o: ../%.cpp
+%.o: ../%.cpp subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: MBS30.compiler.gnu.cpp'
g++ -I../headers -O0 -g3 -Wall -c -fmessage-length=0 -o "$@" "$<" && \
@@ -24,3 +24,10 @@ CPP_DEPS += \
@echo ' '
+clean: clean--2e-
+
+clean--2e-:
+ -$(RM) ./main.d ./main.o
+
+.PHONY: clean--2e-
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/preAndPostBuildSteps/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/preAndPostBuildSteps/Benchmarks/makefile
index e4d80dccdcf..a37db0b8b3d 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/preAndPostBuildSteps/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/preAndPostBuildSteps/Benchmarks/makefile
@@ -9,12 +9,8 @@ RM := rm -rf
# All of the sources participating in the build are defined here
-include sources.mk
-include subdir.mk
--include objects.mk
ifneq ($(MAKECMDGOALS),clean)
-ifneq ($(strip $(C_DEPS)),)
--include $(C_DEPS)
-endif
ifneq ($(strip $(CC_DEPS)),)
-include $(CC_DEPS)
endif
@@ -24,6 +20,9 @@ endif
ifneq ($(strip $(CXX_DEPS)),)
-include $(CXX_DEPS)
endif
+ifneq ($(strip $(C_DEPS)),)
+-include $(C_DEPS)
+endif
ifneq ($(strip $(C_UPPER_DEPS)),)
-include $(C_UPPER_DEPS)
endif
@@ -31,28 +30,37 @@ endif
-include ../makefile.defs
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
+BUILD_ARTIFACT_NAME := preAndPostBuildSteps
+BUILD_ARTIFACT_EXTENSION :=
+BUILD_ARTIFACT_PREFIX :=
+BUILD_ARTIFACT := $(BUILD_ARTIFACT_PREFIX)$(BUILD_ARTIFACT_NAME)$(if $(BUILD_ARTIFACT_EXTENSION),.$(BUILD_ARTIFACT_EXTENSION),)
+
# Add inputs and outputs from these tool invocations to the build variables
# All Target
all:
- $(MAKE) --no-print-directory pre-build
- $(MAKE) --no-print-directory main-build
+ +@$(MAKE) --no-print-directory pre-build && $(MAKE) --no-print-directory main-build && $(MAKE) --no-print-directory post-build
# Main-build Target
main-build: preAndPostBuildSteps
# Tool invocations
-preAndPostBuildSteps: $(OBJS) $(USER_OBJS)
+preAndPostBuildSteps: $(OBJS) $(USER_OBJS) makefile $(OPTIONAL_TOOL_DEPS)
@echo 'Building target: $@'
@echo 'Invoking: MBS30.linker.gnu.cpp'
g++ -o "preAndPostBuildSteps" $(OBJS) $(USER_OBJS) $(LIBS)
@echo 'Finished building target: $@'
@echo ' '
- $(MAKE) --no-print-directory post-build
# Other Targets
clean:
- -$(RM) $(OBJS)$(C_DEPS)$(CC_DEPS)$(CPP_DEPS)$(EXECUTABLES)$(CXX_DEPS)$(C_UPPER_DEPS) preAndPostBuildSteps
+ -$(RM) preAndPostBuildSteps
-@echo ' '
pre-build:
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/preAndPostBuildSteps/Benchmarks/sources.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/preAndPostBuildSteps/Benchmarks/sources.mk
index 253f5085594..20810b9d039 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/preAndPostBuildSteps/Benchmarks/sources.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/preAndPostBuildSteps/Benchmarks/sources.mk
@@ -2,19 +2,19 @@
# Automatically-generated file. Do not edit!
################################################################################
-O_SRCS :=
+CC_SRCS :=
CPP_SRCS :=
-C_UPPER_SRCS :=
-C_SRCS :=
CXX_SRCS :=
-CC_SRCS :=
-OBJS :=
-C_DEPS :=
+C_SRCS :=
+C_UPPER_SRCS :=
+O_SRCS :=
CC_DEPS :=
CPP_DEPS :=
-EXECUTABLES :=
CXX_DEPS :=
+C_DEPS :=
C_UPPER_DEPS :=
+EXECUTABLES :=
+OBJS :=
# Every subdirectory with source files must be described here
SUBDIRS := \
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/preAndPostBuildSteps/Benchmarks/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/preAndPostBuildSteps/Benchmarks/subdir.mk
index f904abd99d5..477292767e8 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/preAndPostBuildSteps/Benchmarks/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/preAndPostBuildSteps/Benchmarks/subdir.mk
@@ -6,15 +6,15 @@
CXX_SRCS += \
../main.cxx
-OBJS += \
-./main.o
-
CXX_DEPS += \
./main.d
+OBJS += \
+./main.o
+
# Each subdirectory must supply rules for building sources it contributes
-%.o: ../%.cxx
+%.o: ../%.cxx subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: MBS30.compiler.gnu.cpp'
g++ -O0 -g3 -Wall -c -fmessage-length=0 -o "$@" "$<" && \
@@ -24,3 +24,10 @@ CXX_DEPS += \
@echo ' '
+clean: clean--2e-
+
+clean--2e-:
+ -$(RM) ./main.d ./main.o
+
+.PHONY: clean--2e-
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/rcbsBasicTest/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/rcbsBasicTest/Benchmarks/makefile
index 6fd78dbc09e..778a733b655 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/rcbsBasicTest/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/rcbsBasicTest/Benchmarks/makefile
@@ -9,7 +9,6 @@ RM := rm -rf
# All of the sources participating in the build are defined here
-include sources.mk
-include subdir.mk
--include objects.mk
ifneq ($(MAKECMDGOALS),clean)
ifneq ($(strip $(C_DEPS)),)
@@ -19,13 +18,27 @@ endif
-include ../makefile.defs
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
+BUILD_ARTIFACT_NAME := rcbsBasicTest
+BUILD_ARTIFACT_EXTENSION :=
+BUILD_ARTIFACT_PREFIX :=
+BUILD_ARTIFACT := $(BUILD_ARTIFACT_PREFIX)$(BUILD_ARTIFACT_NAME)$(if $(BUILD_ARTIFACT_EXTENSION),.$(BUILD_ARTIFACT_EXTENSION),)
+
# Add inputs and outputs from these tool invocations to the build variables
# All Target
-all: rcbsBasicTest
+all: main-build
+
+# Main-build Target
+main-build: rcbsBasicTest
# Tool invocations
-rcbsBasicTest: $(OBJS) $(USER_OBJS)
+rcbsBasicTest: $(OBJS) $(USER_OBJS) makefile $(OPTIONAL_TOOL_DEPS)
@echo 'Building target: $@'
@echo 'Invoking: MBS30.linker.gnu.c'
gcc -o "rcbsBasicTest" $(OBJS) $(USER_OBJS) $(LIBS)
@@ -34,9 +47,9 @@ rcbsBasicTest: $(OBJS) $(USER_OBJS)
# Other Targets
clean:
- -$(RM) $(OBJS)$(C_DEPS)$(EXECUTABLES) rcbsBasicTest
+ -$(RM) rcbsBasicTest
-@echo ' '
-.PHONY: all clean dependents
+.PHONY: all clean dependents main-build
-include ../makefile.targets
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/rcbsBasicTest/Benchmarks/sources.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/rcbsBasicTest/Benchmarks/sources.mk
index 21967bbf479..1aff72a2810 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/rcbsBasicTest/Benchmarks/sources.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/rcbsBasicTest/Benchmarks/sources.mk
@@ -2,11 +2,11 @@
# Automatically-generated file. Do not edit!
################################################################################
-O_SRCS :=
C_SRCS :=
-OBJS :=
+O_SRCS :=
C_DEPS :=
EXECUTABLES :=
+OBJS :=
# Every subdirectory with source files must be described here
SUBDIRS := \
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/rcbsBasicTest/Benchmarks/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/rcbsBasicTest/Benchmarks/subdir.mk
index e2052920d5f..57c1b9017ae 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/rcbsBasicTest/Benchmarks/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/rcbsBasicTest/Benchmarks/subdir.mk
@@ -11,7 +11,7 @@ OBJS += \
# Each subdirectory must supply rules for building sources it contributes
-rcbsBasicTest.o: ../rcbsBasicTest.c
+rcbsBasicTest.o: ../rcbsBasicTest.c subdir.mk
@echo 'Building file: $<'
@echo 'Now executing custom build step for rcbsBasicTest debug config'
gcc -g -c ../rcbsBasicTest.c -o ./rcbsBasicTest.o
@@ -19,3 +19,10 @@ rcbsBasicTest.o: ../rcbsBasicTest.c
@echo ' '
+clean: clean--2e-
+
+clean--2e-:
+ -$(RM) ./rcbsBasicTest.o
+
+.PHONY: clean--2e-
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/singleFileExe/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/singleFileExe/Benchmarks/makefile
index 6275d8ddf09..65baeba7a69 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/singleFileExe/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/singleFileExe/Benchmarks/makefile
@@ -9,7 +9,6 @@ RM := rm -rf
# All of the sources participating in the build are defined here
-include sources.mk
-include subdir.mk
--include objects.mk
ifneq ($(MAKECMDGOALS),clean)
ifneq ($(strip $(C_DEPS)),)
@@ -19,13 +18,27 @@ endif
-include ../makefile.defs
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
+BUILD_ARTIFACT_NAME := singleFileExe
+BUILD_ARTIFACT_EXTENSION :=
+BUILD_ARTIFACT_PREFIX :=
+BUILD_ARTIFACT := $(BUILD_ARTIFACT_PREFIX)$(BUILD_ARTIFACT_NAME)$(if $(BUILD_ARTIFACT_EXTENSION),.$(BUILD_ARTIFACT_EXTENSION),)
+
# Add inputs and outputs from these tool invocations to the build variables
# All Target
-all: singleFileExe
+all: main-build
+
+# Main-build Target
+main-build: singleFileExe
# Tool invocations
-singleFileExe: $(OBJS) $(USER_OBJS)
+singleFileExe: $(OBJS) $(USER_OBJS) makefile $(OPTIONAL_TOOL_DEPS)
@echo 'Building target: $@'
@echo 'Invoking: MBS30.linker.gnu.c'
gcc -o "singleFileExe" $(OBJS) $(USER_OBJS) $(LIBS)
@@ -34,9 +47,9 @@ singleFileExe: $(OBJS) $(USER_OBJS)
# Other Targets
clean:
- -$(RM) $(OBJS)$(C_DEPS)$(EXECUTABLES) singleFileExe
+ -$(RM) singleFileExe
-@echo ' '
-.PHONY: all clean dependents
+.PHONY: all clean dependents main-build
-include ../makefile.targets
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/singleFileExe/Benchmarks/sources.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/singleFileExe/Benchmarks/sources.mk
index 21967bbf479..1aff72a2810 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/singleFileExe/Benchmarks/sources.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/singleFileExe/Benchmarks/sources.mk
@@ -2,11 +2,11 @@
# Automatically-generated file. Do not edit!
################################################################################
-O_SRCS :=
C_SRCS :=
-OBJS :=
+O_SRCS :=
C_DEPS :=
EXECUTABLES :=
+OBJS :=
# Every subdirectory with source files must be described here
SUBDIRS := \
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/singleFileExe/Benchmarks/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/singleFileExe/Benchmarks/subdir.mk
index f0e192379ca..efffe174739 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/singleFileExe/Benchmarks/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/singleFileExe/Benchmarks/subdir.mk
@@ -6,15 +6,15 @@
C_SRCS += \
../main.c
-OBJS += \
-./main.o
-
C_DEPS += \
./main.d
+OBJS += \
+./main.o
+
# Each subdirectory must supply rules for building sources it contributes
-%.o: ../%.c
+%.o: ../%.c subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: MBS30.compiler.gnu.c'
gcc -O0 -g3 -Wall -c -fmessage-length=0 -v -o "$@" "$<" && \
@@ -24,3 +24,10 @@ C_DEPS += \
@echo ' '
+clean: clean--2e-
+
+clean--2e-:
+ -$(RM) ./main.d ./main.o
+
+.PHONY: clean--2e-
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test with spaces/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test with spaces/Benchmarks/makefile
index 43113041e64..77591ae44be 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test with spaces/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test with spaces/Benchmarks/makefile
@@ -10,7 +10,6 @@ RM := rm -rf
-include sources.mk
-include sub\ folder\ with\ spaces/subdir.mk
-include subdir.mk
--include objects.mk
ifneq ($(MAKECMDGOALS),clean)
ifneq ($(strip $(C_DEPS)),)
@@ -20,13 +19,27 @@ endif
-include ../makefile.defs
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
+BUILD_ARTIFACT_NAME := testwithspaces
+BUILD_ARTIFACT_EXTENSION := a
+BUILD_ARTIFACT_PREFIX := lib
+BUILD_ARTIFACT := $(BUILD_ARTIFACT_PREFIX)$(BUILD_ARTIFACT_NAME)$(if $(BUILD_ARTIFACT_EXTENSION),.$(BUILD_ARTIFACT_EXTENSION),)
+
# Add inputs and outputs from these tool invocations to the build variables
# All Target
-all: testwithspaces.exe
+all: main-build
+
+# Main-build Target
+main-build: testwithspaces.exe
# Tool invocations
-testwithspaces.exe: $(OBJS) $(USER_OBJS)
+testwithspaces.exe: $(OBJS) $(USER_OBJS) makefile $(OPTIONAL_TOOL_DEPS)
@echo 'Building target: $@'
@echo 'Invoking: GCC C Linker'
gcc -o "testwithspaces.exe" $(OBJS) $(USER_OBJS) $(LIBS)
@@ -35,9 +48,9 @@ testwithspaces.exe: $(OBJS) $(USER_OBJS)
# Other Targets
clean:
- -$(RM) $(OBJS)$(C_DEPS)$(EXECUTABLES) testwithspaces.exe
+ -$(RM) testwithspaces.exe
-@echo ' '
-.PHONY: all clean dependents
+.PHONY: all clean dependents main-build
-include ../makefile.targets
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test with spaces/Benchmarks/sub folder with spaces/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test with spaces/Benchmarks/sub folder with spaces/subdir.mk
index 0394f4518d9..bb78f21d156 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test with spaces/Benchmarks/sub folder with spaces/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test with spaces/Benchmarks/sub folder with spaces/subdir.mk
@@ -14,11 +14,18 @@ C_DEPS += \
# Each subdirectory must supply rules for building sources it contributes
-sub\ folder\ with\ spaces/foo\ with\ spaces.o: ../sub\ folder\ with\ spaces/foo\ with\ spaces.c
+sub\ folder\ with\ spaces/foo\ with\ spaces.o: ../sub\ folder\ with\ spaces/foo\ with\ spaces.c sub\ folder\ with\ spaces/subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: GCC C Compiler'
- gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"sub folder with spaces/foo with spaces.d" -MT"sub\ folder\ with\ spaces/foo\ with\ spaces.d" -o "$@" "$<"
+ gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"sub folder with spaces/foo with spaces.d" -MT"$@" -o "$@" "$<"
@echo 'Finished building: $<'
@echo ' '
+clean: clean-sub-20-folder-20-with-20-spaces
+
+clean-sub-20-folder-20-with-20-spaces:
+ -$(RM) ./sub\ folder\ with\ spaces/foo\ with\ spaces.d ./sub\ folder\ with\ spaces/foo\ with\ spaces.o
+
+.PHONY: clean-sub-20-folder-20-with-20-spaces
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test with spaces/Benchmarks/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test with spaces/Benchmarks/subdir.mk
index 4214aab2931..6e4e95b59c5 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test with spaces/Benchmarks/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test with spaces/Benchmarks/subdir.mk
@@ -14,11 +14,18 @@ C_DEPS += \
# Each subdirectory must supply rules for building sources it contributes
-main\ with\ spaces.o: ../main\ with\ spaces.c
+main\ with\ spaces.o: ../main\ with\ spaces.c subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: GCC C Compiler'
- gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"main with spaces.d" -MT"main\ with\ spaces.d" -o "$@" "$<"
+ gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"main with spaces.d" -MT"$@" -o "$@" "$<"
@echo 'Finished building: $<'
@echo ' '
+clean: clean--2e-
+
+clean--2e-:
+ -$(RM) ./main\ with\ spaces.d ./main\ with\ spaces.o
+
+.PHONY: clean--2e-
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test30_1/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test30_1/Benchmarks/makefile
index c407f93fc40..643b0864fff 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test30_1/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test30_1/Benchmarks/makefile
@@ -9,7 +9,6 @@ RM := rm -rf
# All of the sources participating in the build are defined here
-include sources.mk
-include subdir.mk
--include objects.mk
ifneq ($(MAKECMDGOALS),clean)
ifneq ($(strip $(C_DEPS)),)
@@ -19,6 +18,17 @@ endif
-include ../makefile.defs
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
+BUILD_ARTIFACT_NAME := Test30_1
+BUILD_ARTIFACT_EXTENSION := so.4.5.6
+BUILD_ARTIFACT_PREFIX :=
+BUILD_ARTIFACT := $(BUILD_ARTIFACT_PREFIX)$(BUILD_ARTIFACT_NAME)$(if $(BUILD_ARTIFACT_EXTENSION),.$(BUILD_ARTIFACT_EXTENSION),)
+
# Add inputs and outputs from these tool invocations to the build variables
TEST30_1_GNU_SO_DEPLOY_OUTPUT_OUTPUTS += \
default.so.4.5.6 \
@@ -28,10 +38,13 @@ test30_1.so.1.2.3 \
# All Target
-all: Test30_1.so.4.5.6 secondary-outputs
+all: main-build
+
+# Main-build Target
+main-build: Test30_1.so.4.5.6 secondary-outputs
# Tool invocations
-Test30_1.so.4.5.6: $(EXECUTABLES)
+Test30_1.so.4.5.6: $(EXECUTABLES) makefile $(OPTIONAL_TOOL_DEPS)
@echo 'Building target: $@'
@echo 'Invoking: Deploy tool'
cp $(EXECUTABLES) "Test30_1.so.4.5.6"
@@ -40,7 +53,7 @@ Test30_1.so.4.5.6: $(EXECUTABLES)
default.so.4.5.6: Test30_1.so.4.5.6 $(EXECUTABLES)
-test30_1.so.1.2.3: $(STRIPPEDOBJS)
+test30_1.so.1.2.3: $(STRIPPEDOBJS) makefile $(OPTIONAL_TOOL_DEPS)
@echo 'Invoking: MBS30.linker.gnu.c'
gcc -shared -Wl,-soname=test30_1.so.1.2.3 -o "test30_1.so.1.2.3" $(STRIPPEDOBJS)
@echo 'Finished building: $@'
@@ -48,11 +61,11 @@ test30_1.so.1.2.3: $(STRIPPEDOBJS)
# Other Targets
clean:
- -$(RM) $(STRIPPEDOBJS)$(OBJS)$(FINAL)$(TEST30_1_GNU_SO_CJPEG_OUTPUT_OUTPUTS)$(C_DEPS)$(TEST30_1_GNU_SO_DEPLOY_OUTPUT_OUTPUTS)$(TEST30_1_GNU_SO_TAR_OUTPUTH_OUTPUTS)$(TEST30_1_GNU_SO_TAR_OUTPUTBMP_OUTPUTS)$(EXECUTABLES)$(TEST30_1_GNU_SO_TAR_OUTPUTC_OUTPUTS) Test30_1.so.4.5.6
+ -$(RM) Test30_1.so.4.5.6 default.so.4.5.6 test30_1.so.1.2.3
-@echo ' '
secondary-outputs: $(TEST30_1_GNU_SO_CJPEG_OUTPUT_OUTPUTS)
-.PHONY: all clean dependents
+.PHONY: all clean dependents main-build
-include ../makefile.targets
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test30_1/Benchmarks/sources.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test30_1/Benchmarks/sources.mk
index 363df6ba22a..f23b966b352 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test30_1/Benchmarks/sources.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test30_1/Benchmarks/sources.mk
@@ -2,23 +2,23 @@
# Automatically-generated file. Do not edit!
################################################################################
-O_SRCS :=
-FOO_SRCS :=
+BMP_SRCS :=
C_SRCS :=
+FOO_SRCS :=
OPRESTRIPPED_SRCS :=
+O_SRCS :=
SO.1.2.3_SRCS :=
-BMP_SRCS :=
TAR_SRCS :=
-STRIPPEDOBJS :=
-OBJS :=
+C_DEPS :=
+EXECUTABLES :=
FINAL :=
+OBJS :=
+STRIPPEDOBJS :=
TEST30_1_GNU_SO_CJPEG_OUTPUT_OUTPUTS :=
-C_DEPS :=
TEST30_1_GNU_SO_DEPLOY_OUTPUT_OUTPUTS :=
-TEST30_1_GNU_SO_TAR_OUTPUTH_OUTPUTS :=
TEST30_1_GNU_SO_TAR_OUTPUTBMP_OUTPUTS :=
-EXECUTABLES :=
TEST30_1_GNU_SO_TAR_OUTPUTC_OUTPUTS :=
+TEST30_1_GNU_SO_TAR_OUTPUTH_OUTPUTS :=
# Every subdirectory with source files must be described here
SUBDIRS := \
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test30_1/Benchmarks/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test30_1/Benchmarks/subdir.mk
index 8b2681ca4ca..f5b6ce1c4a5 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test30_1/Benchmarks/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test30_1/Benchmarks/subdir.mk
@@ -6,21 +6,21 @@
TAR_SRCS += \
../test.tar
-STRIPPEDOBJS += \
-./f1.o \
-./f2.o
+C_DEPS += \
+./f1.d \
+./f2.d
OBJS += \
./f1.oprestripped \
./f2.oprestripped
+STRIPPEDOBJS += \
+./f1.o \
+./f2.o
+
TEST30_1_GNU_SO_CJPEG_OUTPUT_OUTPUTS += \
./CDT.jpeg
-C_DEPS += \
-./f1.d \
-./f2.d
-
TEST30_1_GNU_SO_TAR_OUTPUTC_OUTPUTS += \
./f1.c \
./f2.c \
@@ -28,7 +28,7 @@ TEST30_1_GNU_SO_TAR_OUTPUTC_OUTPUTS += \
# Each subdirectory must supply rules for building sources it contributes
-f1.c: ../test.tar
+f1.c: ../test.tar subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: Un-tar'
tar -xf "$<"
@@ -39,7 +39,7 @@ f2.c: f1.c
test_ar.h: f1.c
CDT.bmp: f1.c
-%.oprestripped: ./%.c
+%.oprestripped: ./%.c subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: MBS30.compiler.gnu.c'
gcc -O2 -g -Wall -c -fmessage-length=0 -v -o "$@" "$<" && \
@@ -48,14 +48,14 @@ CDT.bmp: f1.c
@echo 'Finished building: $<'
@echo ' '
-%.o: ./%.oprestripped
+%.o: ./%.oprestripped subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: Strip object file'
strip --preserve-dates -o "$@" "$<"
@echo 'Finished building: $<'
@echo ' '
-%.jpeg: ./%.bmp
+%.jpeg: ./%.bmp subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: Convert to jpeg'
cjpeg -outfile "$@" "$<"
@@ -63,3 +63,10 @@ CDT.bmp: f1.c
@echo ' '
+clean: clean--2e-
+
+clean--2e-:
+ -$(RM) ./CDT.bmp ./CDT.jpeg ./f1.c ./f1.d ./f1.o ./f1.oprestripped ./f2.c ./f2.d ./f2.o ./f2.oprestripped ./test_ar.h
+
+.PHONY: clean--2e-
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test30_2/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test30_2/Benchmarks/makefile
index 55d615da734..147f9ceba79 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test30_2/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test30_2/Benchmarks/makefile
@@ -10,10 +10,20 @@ RM := rm -rf
-include sources.mk
-include ABC/subdir.mk
-include subdir.mk
--include objects.mk
-include ../makefile.defs
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
+BUILD_ARTIFACT_NAME := test30_2
+BUILD_ARTIFACT_EXTENSION := tmp
+BUILD_ARTIFACT_PREFIX :=
+BUILD_ARTIFACT := $(BUILD_ARTIFACT_PREFIX)$(BUILD_ARTIFACT_NAME)$(if $(BUILD_ARTIFACT_EXTENSION),.$(BUILD_ARTIFACT_EXTENSION),)
+
# Add inputs and outputs from these tool invocations to the build variables
TAROUT += \
new.tar \
@@ -21,35 +31,53 @@ new.tar \
LOGFILE += \
new.log \
+TOUCHEDFILES += \
+alphabetical \
+are \
+file\ names \
+in \
+not \
+order \
+these \
+
# All Target
-all: test30_2.tmp
+all: main-build
+
+# Main-build Target
+main-build: test30_2.tmp
# Tool invocations
-test30_2.tmp: $(LOGFILE)
+test30_2.tmp: $(LOGFILE) makefile $(OPTIONAL_TOOL_DEPS)
@echo 'Building target: $@'
@echo 'Invoking: cat'
cat $(LOGFILE)
@echo 'Finished building target: $@'
@echo ' '
-new.tar: $(CPP_SRCS) $(ASM_SRCS)
+new.tar: $(CPP_SRCS) $(ASM_SRCS) makefile $(OPTIONAL_TOOL_DEPS)
@echo 'Invoking: tar-create'
tar -cf new.tar $(CPP_SRCS) $(ASM_SRCS)
@echo 'Finished building: $@'
@echo ' '
-new.log: $(TAROUT)
+new.log: $(TAROUT) makefile $(OPTIONAL_TOOL_DEPS)
@echo 'Invoking: tar-list'
tar -tf $(TAROUT) > new.log
@echo 'Finished building: $@'
@echo ' '
+these file\ names are not in alphabetical order: $(LOGFILE) makefile $(OPTIONAL_TOOL_DEPS)
+ @echo 'Invoking: touch'
+ touch -r $(LOGFILE) "these" "file names" "are" "not" "in" "alphabetical" "order"
+ @echo 'Finished building: $@'
+ @echo ' '
+
# Other Targets
clean:
- -$(RM) $(TAROUT)$(TERMINAL__DUMMY_OUTPUT__OUTPUTS)$(LOGFILE) test30_2.tmp
+ -$(RM) alphabetical are file\ names in new.log new.tar not order test30_2.tmp these
-@echo ' '
-.PHONY: all clean dependents
+.PHONY: all clean dependents main-build
-include ../makefile.targets
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test30_2/Benchmarks/sources.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test30_2/Benchmarks/sources.mk
index e340efcf42b..16fbadf46ce 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test30_2/Benchmarks/sources.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test30_2/Benchmarks/sources.mk
@@ -2,18 +2,19 @@
# Automatically-generated file. Do not edit!
################################################################################
+ASM_SRCS :=
+C++_SRCS :=
+CC_SRCS :=
CPP_SRCS :=
+CXX_SRCS :=
C_UPPER_SRCS :=
-S_UPPER_SRCS :=
-ASM_SRCS :=
LOG_SRCS :=
+S_UPPER_SRCS :=
TAR_SRCS :=
-CXX_SRCS :=
-C++_SRCS :=
-CC_SRCS :=
+LOGFILE :=
TAROUT :=
TERMINAL__DUMMY_OUTPUT__OUTPUTS :=
-LOGFILE :=
+TOUCHEDFILES :=
# Every subdirectory with source files must be described here
SUBDIRS := \
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test30_2/Benchmarks/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test30_2/Benchmarks/subdir.mk
index f0088fffdc6..8db86e5f468 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test30_2/Benchmarks/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test30_2/Benchmarks/subdir.mk
@@ -3,13 +3,13 @@
################################################################################
# Add inputs and outputs from these tool invocations to the build variables
+ASM_SRCS += \
+../a1.asm
+
CPP_SRCS += \
../f1.cpp \
../f2.cpp
-ASM_SRCS += \
-../a1.asm
-
# Each subdirectory must supply rules for building sources it contributes
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/testFileWithNoExtension/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/testFileWithNoExtension/Benchmarks/makefile
index ffe40ca5682..2925c1d190c 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/testFileWithNoExtension/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/testFileWithNoExtension/Benchmarks/makefile
@@ -9,7 +9,6 @@ RM := rm -rf
# All of the sources participating in the build are defined here
-include sources.mk
-include subdir.mk
--include objects.mk
ifneq ($(MAKECMDGOALS),clean)
ifneq ($(strip $(C_DEPS)),)
@@ -19,13 +18,27 @@ endif
-include ../makefile.defs
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
+BUILD_ARTIFACT_NAME := test
+BUILD_ARTIFACT_EXTENSION := exe
+BUILD_ARTIFACT_PREFIX :=
+BUILD_ARTIFACT := $(BUILD_ARTIFACT_PREFIX)$(BUILD_ARTIFACT_NAME)$(if $(BUILD_ARTIFACT_EXTENSION),.$(BUILD_ARTIFACT_EXTENSION),)
+
# Add inputs and outputs from these tool invocations to the build variables
# All Target
-all: test.exe
+all: main-build
+
+# Main-build Target
+main-build: test.exe
# Tool invocations
-test.exe: $(OBJS) $(USER_OBJS)
+test.exe: $(OBJS) $(USER_OBJS) makefile $(OPTIONAL_TOOL_DEPS)
@echo 'Building target: $@'
@echo 'Invoking: GCC C Linker'
gcc -o "test.exe" $(OBJS) $(USER_OBJS) $(LIBS)
@@ -34,9 +47,9 @@ test.exe: $(OBJS) $(USER_OBJS)
# Other Targets
clean:
- -$(RM) $(OBJS)$(C_DEPS)$(EXECUTABLES) test.exe
+ -$(RM) test.exe
-@echo ' '
-.PHONY: all clean dependents
+.PHONY: all clean dependents main-build
-include ../makefile.targets
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/testFileWithNoExtension/Benchmarks/sources.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/testFileWithNoExtension/Benchmarks/sources.mk
index df1db101101..407d90a33a6 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/testFileWithNoExtension/Benchmarks/sources.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/testFileWithNoExtension/Benchmarks/sources.mk
@@ -2,14 +2,14 @@
# Automatically-generated file. Do not edit!
################################################################################
-O_SRCS :=
+ASM_SRCS :=
C_SRCS :=
-S_UPPER_SRCS :=
OBJ_SRCS :=
-ASM_SRCS :=
-OBJS :=
+O_SRCS :=
+S_UPPER_SRCS :=
C_DEPS :=
EXECUTABLES :=
+OBJS :=
# Every subdirectory with source files must be described here
SUBDIRS := \
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/testFileWithNoExtension/Benchmarks/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/testFileWithNoExtension/Benchmarks/subdir.mk
index 7cb015d64d6..cfbed2916e1 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/testFileWithNoExtension/Benchmarks/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/testFileWithNoExtension/Benchmarks/subdir.mk
@@ -6,19 +6,26 @@
C_SRCS += \
../test.c
-OBJS += \
-./test.o
-
C_DEPS += \
./test.d
+OBJS += \
+./test.o
+
# Each subdirectory must supply rules for building sources it contributes
-%.o: ../%.c
+%.o: ../%.c subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: GCC C Compiler'
- gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<"
+ gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
@echo 'Finished building: $<'
@echo ' '
+clean: clean--2e-
+
+clean--2e-:
+ -$(RM) ./test.d ./test.o
+
+.PHONY: clean--2e-
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/testMacroSupportInBuildDefinitions/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/testMacroSupportInBuildDefinitions/Benchmarks/makefile
index 0658a6bc051..1cc4d5a8424 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/testMacroSupportInBuildDefinitions/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/testMacroSupportInBuildDefinitions/Benchmarks/makefile
@@ -9,17 +9,30 @@ RM := rm
# All of the sources participating in the build are defined here
-include sources.mk
-include subdir.mk
--include objects.mk
-include ../makefile.defs
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
+BUILD_ARTIFACT_NAME := testMacroSupportInBuildDefinitions
+BUILD_ARTIFACT_EXTENSION := tar
+BUILD_ARTIFACT_PREFIX :=
+BUILD_ARTIFACT := $(BUILD_ARTIFACT_PREFIX)$(BUILD_ARTIFACT_NAME)$(if $(BUILD_ARTIFACT_EXTENSION),.$(BUILD_ARTIFACT_EXTENSION),)
+
# Add inputs and outputs from these tool invocations to the build variables
# All Target
-all: testMacroSupportInBuildDefinitions.tar
+all: main-build
+
+# Main-build Target
+main-build: testMacroSupportInBuildDefinitions.tar
# Tool invocations
-testMacroSupportInBuildDefinitions.tar: $(BAR_FILES)
+testMacroSupportInBuildDefinitions.tar: $(BAR_FILES) makefile $(OPTIONAL_TOOL_DEPS)
@echo 'Building target: $@'
@echo 'Invoking: Bar Tool'
tar cvf $@ $(BAR_FILES)
@@ -28,9 +41,9 @@ testMacroSupportInBuildDefinitions.tar: $(BAR_FILES)
# Other Targets
clean:
- -$(RM) $(TAR_FILE_OUTPUTS)$(BAR_FILES) testMacroSupportInBuildDefinitions.tar
+ -$(RM) testMacroSupportInBuildDefinitions.tar
-@echo ' '
-.PHONY: all clean dependents
+.PHONY: all clean dependents main-build
-include ../makefile.targets
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/testMacroSupportInBuildDefinitions/Benchmarks/sources.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/testMacroSupportInBuildDefinitions/Benchmarks/sources.mk
index 4f7408196b6..2b23bd4809a 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/testMacroSupportInBuildDefinitions/Benchmarks/sources.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/testMacroSupportInBuildDefinitions/Benchmarks/sources.mk
@@ -2,10 +2,10 @@
# Automatically-generated file. Do not edit!
################################################################################
-FOO_SRCS :=
BAR_SRCS :=
-TAR_FILE_OUTPUTS :=
+FOO_SRCS :=
BAR_FILES :=
+TAR_FILE_OUTPUTS :=
# Every subdirectory with source files must be described here
SUBDIRS := \
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/testMacroSupportInBuildDefinitions/Benchmarks/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/testMacroSupportInBuildDefinitions/Benchmarks/subdir.mk
index ac8fa98ea5c..dd9bf4f47e3 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/testMacroSupportInBuildDefinitions/Benchmarks/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/testMacroSupportInBuildDefinitions/Benchmarks/subdir.mk
@@ -11,7 +11,7 @@ BAR_FILES += \
# Each subdirectory must supply rules for building sources it contributes
-this_is_a_test_prefix_with_a_macro_for_the_project_name_between_here_testMacroSupportInBuildDefinitions_and_here%.bar: ../%.foo
+this_is_a_test_prefix_with_a_macro_for_the_project_name_between_here_testMacroSupportInBuildDefinitions_and_here%.bar: ../%.foo subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: Foo Tool'
cp "$<" "$@"
@@ -19,3 +19,10 @@ this_is_a_test_prefix_with_a_macro_for_the_project_name_between_here_testMacroSu
@echo ' '
+clean: clean--2e-
+
+clean--2e-:
+ -$(RM) ./this_is_a_test_prefix_with_a_macro_for_the_project_name_between_here_testMacroSupportInBuildDefinitions_and_heresomefile.bar
+
+.PHONY: clean--2e-
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/twoFileSO/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/twoFileSO/Benchmarks/makefile
index 369479a4f48..e66b39f916e 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/twoFileSO/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/twoFileSO/Benchmarks/makefile
@@ -9,7 +9,6 @@ RM := rm -rf
# All of the sources participating in the build are defined here
-include sources.mk
-include subdir.mk
--include objects.mk
ifneq ($(MAKECMDGOALS),clean)
ifneq ($(strip $(C_DEPS)),)
@@ -19,13 +18,27 @@ endif
-include ../makefile.defs
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
+BUILD_ARTIFACT_NAME := twoFileSO
+BUILD_ARTIFACT_EXTENSION := SOS
+BUILD_ARTIFACT_PREFIX := lib
+BUILD_ARTIFACT := $(BUILD_ARTIFACT_PREFIX)$(BUILD_ARTIFACT_NAME)$(if $(BUILD_ARTIFACT_EXTENSION),.$(BUILD_ARTIFACT_EXTENSION),)
+
# Add inputs and outputs from these tool invocations to the build variables
# All Target
-all: libtwoFileSO.SOS
+all: main-build
+
+# Main-build Target
+main-build: libtwoFileSO.SOS
# Tool invocations
-libtwoFileSO.SOS: $(OBJS) $(USER_OBJS)
+libtwoFileSO.SOS: $(OBJS) $(USER_OBJS) makefile $(OPTIONAL_TOOL_DEPS)
@echo 'Building target: $@'
@echo 'Invoking: MBS30.linker.gnu.c'
gcc -shared -o "libtwoFileSO.SOS" $(OBJS) $(USER_OBJS) $(LIBS)
@@ -34,9 +47,9 @@ libtwoFileSO.SOS: $(OBJS) $(USER_OBJS)
# Other Targets
clean:
- -$(RM) $(OBJS)$(C_DEPS)$(LIBRARIES) libtwoFileSO.SOS
+ -$(RM) libtwoFileSO.SOS
-@echo ' '
-.PHONY: all clean dependents
+.PHONY: all clean dependents main-build
-include ../makefile.targets
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/twoFileSO/Benchmarks/sources.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/twoFileSO/Benchmarks/sources.mk
index 6b64b2f411b..1ab95a436a3 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/twoFileSO/Benchmarks/sources.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/twoFileSO/Benchmarks/sources.mk
@@ -2,11 +2,11 @@
# Automatically-generated file. Do not edit!
################################################################################
-O_SRCS :=
C_SRCS :=
-OBJS :=
+O_SRCS :=
C_DEPS :=
LIBRARIES :=
+OBJS :=
# Every subdirectory with source files must be described here
SUBDIRS := \
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/twoFileSO/Benchmarks/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/twoFileSO/Benchmarks/subdir.mk
index 5662216c129..d962e1f9af1 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/twoFileSO/Benchmarks/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/twoFileSO/Benchmarks/subdir.mk
@@ -7,17 +7,17 @@ C_SRCS += \
../so1.c \
../so2.c
-OBJS += \
-./so1.o \
-./so2.o
-
C_DEPS += \
./so1.d \
./so2.d
+OBJS += \
+./so1.o \
+./so2.o
+
# Each subdirectory must supply rules for building sources it contributes
-%.o: ../%.c
+%.o: ../%.c subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: MBS30.compiler.gnu.c'
gcc -O0 -g3 -c -v -o "$@" "$<" && \
@@ -27,3 +27,10 @@ C_DEPS += \
@echo ' '
+clean: clean--2e-
+
+clean--2e-:
+ -$(RM) ./so1.d ./so1.o ./so2.d ./so2.o
+
+.PHONY: clean--2e-
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/d1/d2/d3/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/d1/d2/d3/subdir.mk
index fcbc9a5f03b..30efe94aa1e 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/d1/d2/d3/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/d1/d2/d3/subdir.mk
@@ -7,21 +7,28 @@ CPP_SRCS += \
../d1/d2/d3/t.cpp \
../d1/d2/d3/y.cpp
-OBJS += \
-./d1/d2/d3/t.o \
-./d1/d2/d3/y.o
-
CPP_DEPS += \
./d1/d2/d3/t.d \
./d1/d2/d3/y.d
+OBJS += \
+./d1/d2/d3/t.o \
+./d1/d2/d3/y.o
+
# Each subdirectory must supply rules for building sources it contributes
-d1/d2/d3/%.o: ../d1/d2/d3/%.cpp
+d1/d2/d3/%.o: ../d1/d2/d3/%.cpp d1/d2/d3/subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: Test 4.0 ToolName.compiler.gnu.cpp'
- g++ -Id3_rel/path -I/d3_abs/path -Ic:/d3_abs/path -I"D:\d3_docs\incs" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<"
+ g++ -Id3_rel/path -I/d3_abs/path -Ic:/d3_abs/path -I"D:\d3_docs\incs" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
@echo 'Finished building: $<'
@echo ' '
+clean: clean-d1-2f-d2-2f-d3
+
+clean-d1-2f-d2-2f-d3:
+ -$(RM) ./d1/d2/d3/t.d ./d1/d2/d3/t.o ./d1/d2/d3/y.d ./d1/d2/d3/y.o
+
+.PHONY: clean-d1-2f-d2-2f-d3
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/d1/d2/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/d1/d2/subdir.mk
index 774a57b76c9..e7d59b030fa 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/d1/d2/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/d1/d2/subdir.mk
@@ -7,28 +7,35 @@ CPP_SRCS += \
../d1/d2/e.cpp \
../d1/d2/r.cpp
-OBJS += \
-./d1/d2/e.o \
-./d1/d2/r.o
-
CPP_DEPS += \
./d1/d2/e.d \
./d1/d2/r.d
+OBJS += \
+./d1/d2/e.o \
+./d1/d2/r.o
+
# Each subdirectory must supply rules for building sources it contributes
-d1/d2/e.o: ../d1/d2/e.cpp
+d1/d2/e.o: ../d1/d2/e.cpp d1/d2/subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: Test 4.0 ToolName.compiler.gnu.cpp'
- g++ -Id2_ecpp_rel/path -I../d2_ecpp_proj/rel/path -I/d2_ecpp_abs/path -Ic:/d2_ecpp_abs/path -Id2_rel/path -I../d2_proj/rel/path -I/d2_abs/path -Ic:/d2_abs/path -Id1_rel/path -I../d1_proj/rel/path -I/d1_abs/path -Ic:/d1_abs/path -Irel/path -I../proj/rel/path -I/abs/path -Ic:/abs/path -I"${WorkspaceDirPath}/test_40/dir1/dir2/dir3" -I"${WorkspaceDirPath}/test_40" -I"D:\docs\incs" -I"D:\d1_docs\incs" -I"D:\d2_docs\incs" -I"D:\d2_ecpp_docs\incs" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"d1/d2/e.d" -o "$@" "$<"
+ g++ -Id2_ecpp_rel/path -I../d2_ecpp_proj/rel/path -I/d2_ecpp_abs/path -Ic:/d2_ecpp_abs/path -Id2_rel/path -I../d2_proj/rel/path -I/d2_abs/path -Ic:/d2_abs/path -Id1_rel/path -I../d1_proj/rel/path -I/d1_abs/path -Ic:/d1_abs/path -Irel/path -I../proj/rel/path -I/abs/path -Ic:/abs/path -I"${WorkspaceDirPath}/test_40/dir1/dir2/dir3" -I"${WorkspaceDirPath}/test_40" -I"D:\docs\incs" -I"D:\d1_docs\incs" -I"D:\d2_docs\incs" -I"D:\d2_ecpp_docs\incs" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
@echo 'Finished building: $<'
@echo ' '
-d1/d2/%.o: ../d1/d2/%.cpp
+d1/d2/%.o: ../d1/d2/%.cpp d1/d2/subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: Test 4.0 ToolName.compiler.gnu.cpp'
- g++ -Id2_rel/path -I../d2_proj/rel/path -I/d2_abs/path -Ic:/d2_abs/path -Id1_rel/path -I../d1_proj/rel/path -I/d1_abs/path -Ic:/d1_abs/path -Irel/path -I../proj/rel/path -I/abs/path -Ic:/abs/path -I"${WorkspaceDirPath}/test_40/dir1/dir2/dir3" -I"${WorkspaceDirPath}/test_40" -I"D:\docs\incs" -I"D:\d1_docs\incs" -I"D:\d2_docs\incs" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<"
+ g++ -Id2_rel/path -I../d2_proj/rel/path -I/d2_abs/path -Ic:/d2_abs/path -Id1_rel/path -I../d1_proj/rel/path -I/d1_abs/path -Ic:/d1_abs/path -Irel/path -I../proj/rel/path -I/abs/path -Ic:/abs/path -I"${WorkspaceDirPath}/test_40/dir1/dir2/dir3" -I"${WorkspaceDirPath}/test_40" -I"D:\docs\incs" -I"D:\d1_docs\incs" -I"D:\d2_docs\incs" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
@echo 'Finished building: $<'
@echo ' '
+clean: clean-d1-2f-d2
+
+clean-d1-2f-d2:
+ -$(RM) ./d1/d2/e.d ./d1/d2/e.o ./d1/d2/r.d ./d1/d2/r.o
+
+.PHONY: clean-d1-2f-d2
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/d1/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/d1/subdir.mk
index 4b55f739278..a0ac72b31f9 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/d1/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/d1/subdir.mk
@@ -8,23 +8,30 @@ CPP_SRCS += \
../d1/u.cpp \
../d1/w.cpp
-OBJS += \
-./d1/q.o \
-./d1/u.o \
-./d1/w.o
-
CPP_DEPS += \
./d1/q.d \
./d1/u.d \
./d1/w.d
+OBJS += \
+./d1/q.o \
+./d1/u.o \
+./d1/w.o
+
# Each subdirectory must supply rules for building sources it contributes
-d1/%.o: ../d1/%.cpp
+d1/%.o: ../d1/%.cpp d1/subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: Test 4.0 ToolName.compiler.gnu.cpp'
- g++ -Id1_rel/path -I../d1_proj/rel/path -I/d1_abs/path -Ic:/d1_abs/path -Irel/path -I../proj/rel/path -I/abs/path -Ic:/abs/path -I"${WorkspaceDirPath}/test_40/dir1/dir2/dir3" -I"${WorkspaceDirPath}/test_40" -I"D:\docs\incs" -I"D:\d1_docs\incs" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<"
+ g++ -Id1_rel/path -I../d1_proj/rel/path -I/d1_abs/path -Ic:/d1_abs/path -Irel/path -I../proj/rel/path -I/abs/path -Ic:/abs/path -I"${WorkspaceDirPath}/test_40/dir1/dir2/dir3" -I"${WorkspaceDirPath}/test_40" -I"D:\docs\incs" -I"D:\d1_docs\incs" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
@echo 'Finished building: $<'
@echo ' '
+clean: clean-d1
+
+clean-d1:
+ -$(RM) ./d1/q.d ./d1/q.o ./d1/u.d ./d1/u.o ./d1/w.d ./d1/w.o
+
+.PHONY: clean-d1
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/d1_1/d2_1/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/d1_1/d2_1/subdir.mk
index 68bd483943d..177ca5e2564 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/d1_1/d2_1/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/d1_1/d2_1/subdir.mk
@@ -7,21 +7,28 @@ CPP_SRCS += \
../d1_1/d2_1/a.cpp \
../d1_1/d2_1/p.cpp
-OBJS += \
-./d1_1/d2_1/a.o \
-./d1_1/d2_1/p.o
-
CPP_DEPS += \
./d1_1/d2_1/a.d \
./d1_1/d2_1/p.d
+OBJS += \
+./d1_1/d2_1/a.o \
+./d1_1/d2_1/p.o
+
# Each subdirectory must supply rules for building sources it contributes
-d1_1/d2_1/%.o: ../d1_1/d2_1/%.cpp
+d1_1/d2_1/%.o: ../d1_1/d2_1/%.cpp d1_1/d2_1/subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: Test 4.0 ToolName.compiler.gnu.cpp'
- g++ -Id2_1_rel/path -I/d2_1_abs/path -Ic:/d2_1_abs/path -Id1_1_rel/path -I/d1_1_abs/path -Ic:/d1_1_abs/path -Irel/path -I../proj/rel/path -I/abs/path -Ic:/abs/path -I"${WorkspaceDirPath}/test_40/dir1/dir2/dir3" -I"${WorkspaceDirPath}/test_40" -I"D:\docs\incs" -I"D:\d1_1_docs\incs" -I"D:\d2_1_docs\incs" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<"
+ g++ -Id2_1_rel/path -I/d2_1_abs/path -Ic:/d2_1_abs/path -Id1_1_rel/path -I/d1_1_abs/path -Ic:/d1_1_abs/path -Irel/path -I../proj/rel/path -I/abs/path -Ic:/abs/path -I"${WorkspaceDirPath}/test_40/dir1/dir2/dir3" -I"${WorkspaceDirPath}/test_40" -I"D:\docs\incs" -I"D:\d1_1_docs\incs" -I"D:\d2_1_docs\incs" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
@echo 'Finished building: $<'
@echo ' '
+clean: clean-d1_1-2f-d2_1
+
+clean-d1_1-2f-d2_1:
+ -$(RM) ./d1_1/d2_1/a.d ./d1_1/d2_1/a.o ./d1_1/d2_1/p.d ./d1_1/d2_1/p.o
+
+.PHONY: clean-d1_1-2f-d2_1
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/d1_1/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/d1_1/subdir.mk
index 6509ce74b70..f28473322c3 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/d1_1/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/d1_1/subdir.mk
@@ -7,21 +7,28 @@ CPP_SRCS += \
../d1_1/i.cpp \
../d1_1/o.cpp
-OBJS += \
-./d1_1/i.o \
-./d1_1/o.o
-
CPP_DEPS += \
./d1_1/i.d \
./d1_1/o.d
+OBJS += \
+./d1_1/i.o \
+./d1_1/o.o
+
# Each subdirectory must supply rules for building sources it contributes
-d1_1/%.o: ../d1_1/%.cpp
+d1_1/%.o: ../d1_1/%.cpp d1_1/subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: Test 4.0 ToolName.compiler.gnu.cpp'
- g++ -Id1_1_rel/path -I/d1_1_abs/path -Ic:/d1_1_abs/path -Irel/path -I../proj/rel/path -I/abs/path -Ic:/abs/path -I"${WorkspaceDirPath}/test_40/dir1/dir2/dir3" -I"${WorkspaceDirPath}/test_40" -I"D:\docs\incs" -I"D:\d1_1_docs\incs" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<"
+ g++ -Id1_1_rel/path -I/d1_1_abs/path -Ic:/d1_1_abs/path -Irel/path -I../proj/rel/path -I/abs/path -Ic:/abs/path -I"${WorkspaceDirPath}/test_40/dir1/dir2/dir3" -I"${WorkspaceDirPath}/test_40" -I"D:\docs\incs" -I"D:\d1_1_docs\incs" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
@echo 'Finished building: $<'
@echo ' '
+clean: clean-d1_1
+
+clean-d1_1:
+ -$(RM) ./d1_1/i.d ./d1_1/i.o ./d1_1/o.d ./d1_1/o.o
+
+.PHONY: clean-d1_1
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/dir1/dd/excluded_c/asd/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/dir1/dd/excluded_c/asd/subdir.mk
index eecb3021a59..5d3c5841a09 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/dir1/dd/excluded_c/asd/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/dir1/dd/excluded_c/asd/subdir.mk
@@ -6,19 +6,26 @@
CPP_SRCS += \
../dir1/dd/excluded_c/asd/s.cpp
-OBJS += \
-./dir1/dd/excluded_c/asd/s.o
-
CPP_DEPS += \
./dir1/dd/excluded_c/asd/s.d
+OBJS += \
+./dir1/dd/excluded_c/asd/s.o
+
# Each subdirectory must supply rules for building sources it contributes
-dir1/dd/excluded_c/asd/%.o: ../dir1/dd/excluded_c/asd/%.cpp
+dir1/dd/excluded_c/asd/%.o: ../dir1/dd/excluded_c/asd/%.cpp dir1/dd/excluded_c/asd/subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: Test 4.0 ToolName.compiler.gnu.cpp'
- g++ -Irel/path -I../proj/rel/path -I/abs/path -Ic:/abs/path -I"${WorkspaceDirPath}/test_40/dir1/dir2/dir3" -I"${WorkspaceDirPath}/test_40" -I"D:\docs\incs" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<"
+ g++ -Irel/path -I../proj/rel/path -I/abs/path -Ic:/abs/path -I"${WorkspaceDirPath}/test_40/dir1/dir2/dir3" -I"${WorkspaceDirPath}/test_40" -I"D:\docs\incs" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
@echo 'Finished building: $<'
@echo ' '
+clean: clean-dir1-2f-dd-2f-excluded_c-2f-asd
+
+clean-dir1-2f-dd-2f-excluded_c-2f-asd:
+ -$(RM) ./dir1/dd/excluded_c/asd/s.d ./dir1/dd/excluded_c/asd/s.o
+
+.PHONY: clean-dir1-2f-dd-2f-excluded_c-2f-asd
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/dir1/dd/excluded_c/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/dir1/dd/excluded_c/subdir.mk
index e805cffce9c..f1156f63d0e 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/dir1/dd/excluded_c/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/dir1/dd/excluded_c/subdir.mk
@@ -6,19 +6,26 @@
CPP_SRCS += \
../dir1/dd/excluded_c/inc.cpp
-OBJS += \
-./dir1/dd/excluded_c/inc.o
-
CPP_DEPS += \
./dir1/dd/excluded_c/inc.d
+OBJS += \
+./dir1/dd/excluded_c/inc.o
+
# Each subdirectory must supply rules for building sources it contributes
-dir1/dd/excluded_c/%.o: ../dir1/dd/excluded_c/%.cpp
+dir1/dd/excluded_c/%.o: ../dir1/dd/excluded_c/%.cpp dir1/dd/excluded_c/subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: Test 4.0 ToolName.compiler.gnu.cpp'
- g++ -Irel/path -I../proj/rel/path -I/abs/path -Ic:/abs/path -I"${WorkspaceDirPath}/test_40/dir1/dir2/dir3" -I"${WorkspaceDirPath}/test_40" -I"D:\docs\incs" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<"
+ g++ -Irel/path -I../proj/rel/path -I/abs/path -Ic:/abs/path -I"${WorkspaceDirPath}/test_40/dir1/dir2/dir3" -I"${WorkspaceDirPath}/test_40" -I"D:\docs\incs" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
@echo 'Finished building: $<'
@echo ' '
+clean: clean-dir1-2f-dd-2f-excluded_c
+
+clean-dir1-2f-dd-2f-excluded_c:
+ -$(RM) ./dir1/dd/excluded_c/inc.d ./dir1/dd/excluded_c/inc.o
+
+.PHONY: clean-dir1-2f-dd-2f-excluded_c
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/dir1/dd/ff/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/dir1/dd/ff/subdir.mk
index f99a34ec0e2..da9c1f47fdf 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/dir1/dd/ff/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/dir1/dd/ff/subdir.mk
@@ -3,36 +3,43 @@
################################################################################
# Add inputs and outputs from these tool invocations to the build variables
-C_SRCS += \
-../dir1/dd/ff/vbn.c
-
CPP_SRCS += \
../dir1/dd/ff/zxc.cpp
-OBJS += \
-./dir1/dd/ff/vbn.o \
-./dir1/dd/ff/zxc.o
+C_SRCS += \
+../dir1/dd/ff/vbn.c
+
+CPP_DEPS += \
+./dir1/dd/ff/zxc.d
C_DEPS += \
./dir1/dd/ff/vbn.d
-CPP_DEPS += \
-./dir1/dd/ff/zxc.d
+OBJS += \
+./dir1/dd/ff/vbn.o \
+./dir1/dd/ff/zxc.o
# Each subdirectory must supply rules for building sources it contributes
-dir1/dd/ff/%.o: ../dir1/dd/ff/%.c
+dir1/dd/ff/%.o: ../dir1/dd/ff/%.c dir1/dd/ff/subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: Test 4.0 ToolName.compiler.gnu.c'
- gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<"
+ gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
@echo 'Finished building: $<'
@echo ' '
-dir1/dd/ff/%.o: ../dir1/dd/ff/%.cpp
+dir1/dd/ff/%.o: ../dir1/dd/ff/%.cpp dir1/dd/ff/subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: Test 4.0 ToolName.compiler.gnu.cpp'
- g++ -Irel/path -I../proj/rel/path -I/abs/path -Ic:/abs/path -I"${WorkspaceDirPath}/test_40/dir1/dir2/dir3" -I"${WorkspaceDirPath}/test_40" -I"D:\docs\incs" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<"
+ g++ -Irel/path -I../proj/rel/path -I/abs/path -Ic:/abs/path -I"${WorkspaceDirPath}/test_40/dir1/dir2/dir3" -I"${WorkspaceDirPath}/test_40" -I"D:\docs\incs" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
@echo 'Finished building: $<'
@echo ' '
+clean: clean-dir1-2f-dd-2f-ff
+
+clean-dir1-2f-dd-2f-ff:
+ -$(RM) ./dir1/dd/ff/vbn.d ./dir1/dd/ff/vbn.o ./dir1/dd/ff/zxc.d ./dir1/dd/ff/zxc.o
+
+.PHONY: clean-dir1-2f-dd-2f-ff
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/makefile
index a7b11f751d7..353572bc2fc 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/makefile
@@ -16,8 +16,6 @@ RM := rm -rf
-include d1/d2/d3/subdir.mk
-include d1/d2/subdir.mk
-include d1/subdir.mk
--include subdir.mk
--include objects.mk
ifneq ($(MAKECMDGOALS),clean)
ifneq ($(strip $(C++_DEPS)),)
@@ -26,15 +24,15 @@ endif
ifneq ($(strip $(CC_DEPS)),)
-include $(CC_DEPS)
endif
-ifneq ($(strip $(C_DEPS)),)
--include $(C_DEPS)
-endif
ifneq ($(strip $(CPP_DEPS)),)
-include $(CPP_DEPS)
endif
ifneq ($(strip $(CXX_DEPS)),)
-include $(CXX_DEPS)
endif
+ifneq ($(strip $(C_DEPS)),)
+-include $(C_DEPS)
+endif
ifneq ($(strip $(C_UPPER_DEPS)),)
-include $(C_UPPER_DEPS)
endif
@@ -42,24 +40,38 @@ endif
-include ../makefile.defs
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
+BUILD_ARTIFACT_NAME := test_40
+BUILD_ARTIFACT_EXTENSION :=
+BUILD_ARTIFACT_PREFIX :=
+BUILD_ARTIFACT := $(BUILD_ARTIFACT_PREFIX)$(BUILD_ARTIFACT_NAME)$(if $(BUILD_ARTIFACT_EXTENSION),.$(BUILD_ARTIFACT_EXTENSION),)
+
# Add inputs and outputs from these tool invocations to the build variables
# All Target
-all: test_40
+all: main-build
+
+# Main-build Target
+main-build: test_40
# Tool invocations
-test_40: $(OBJS) $(USER_OBJS)
+test_40: $(OBJS) $(USER_OBJS) makefile $(OPTIONAL_TOOL_DEPS) uo1
@echo 'Building target: $@'
@echo 'Invoking: Test 4.0 ToolName.linker.gnu.cpp'
- g++ -Llib/path/1 -o "test_40" $(OBJS) $(USER_OBJS) $(LIBS)
+ g++ -Llib/path/1 -o "test_40" $(OBJS) $(USER_OBJS) $(LIBS) uo1 -llib1
@echo 'Finished building target: $@'
@echo ' '
# Other Targets
clean:
- -$(RM) $(OBJS)$(C++_DEPS)$(EXECUTABLES)$(CC_DEPS)$(C_DEPS)$(CPP_DEPS)$(CXX_DEPS)$(C_UPPER_DEPS) test_40
+ -$(RM) test_40
-@echo ' '
-.PHONY: all clean dependents
+.PHONY: all clean dependents main-build
-include ../makefile.targets
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/objects.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/objects.mk
index 5f594a8388a..742c2da043f 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/objects.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/objects.mk
@@ -2,7 +2,7 @@
# Automatically-generated file. Do not edit!
################################################################################
-LIBS := -llib1
+USER_OBJS :=
-USER_OBJS := uo1
+LIBS :=
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/sources.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/sources.mk
index 9d962fb5338..463597703f3 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/sources.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/sources.mk
@@ -2,24 +2,24 @@
# Automatically-generated file. Do not edit!
################################################################################
-O_SRCS :=
-CPP_SRCS :=
-C_UPPER_SRCS :=
-C_SRCS :=
-S_UPPER_SRCS :=
-OBJ_SRCS :=
ASM_SRCS :=
-CXX_SRCS :=
C++_SRCS :=
CC_SRCS :=
-OBJS :=
+CPP_SRCS :=
+CXX_SRCS :=
+C_SRCS :=
+C_UPPER_SRCS :=
+OBJ_SRCS :=
+O_SRCS :=
+S_UPPER_SRCS :=
C++_DEPS :=
-C_DEPS :=
CC_DEPS :=
CPP_DEPS :=
-EXECUTABLES :=
CXX_DEPS :=
+C_DEPS :=
C_UPPER_DEPS :=
+EXECUTABLES :=
+OBJS :=
# Every subdirectory with source files must be described here
SUBDIRS := \
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/d1/d2/d3/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/d1/d2/d3/subdir.mk
index fcbc9a5f03b..30efe94aa1e 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/d1/d2/d3/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/d1/d2/d3/subdir.mk
@@ -7,21 +7,28 @@ CPP_SRCS += \
../d1/d2/d3/t.cpp \
../d1/d2/d3/y.cpp
-OBJS += \
-./d1/d2/d3/t.o \
-./d1/d2/d3/y.o
-
CPP_DEPS += \
./d1/d2/d3/t.d \
./d1/d2/d3/y.d
+OBJS += \
+./d1/d2/d3/t.o \
+./d1/d2/d3/y.o
+
# Each subdirectory must supply rules for building sources it contributes
-d1/d2/d3/%.o: ../d1/d2/d3/%.cpp
+d1/d2/d3/%.o: ../d1/d2/d3/%.cpp d1/d2/d3/subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: Test 4.0 ToolName.compiler.gnu.cpp'
- g++ -Id3_rel/path -I/d3_abs/path -Ic:/d3_abs/path -I"D:\d3_docs\incs" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<"
+ g++ -Id3_rel/path -I/d3_abs/path -Ic:/d3_abs/path -I"D:\d3_docs\incs" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
@echo 'Finished building: $<'
@echo ' '
+clean: clean-d1-2f-d2-2f-d3
+
+clean-d1-2f-d2-2f-d3:
+ -$(RM) ./d1/d2/d3/t.d ./d1/d2/d3/t.o ./d1/d2/d3/y.d ./d1/d2/d3/y.o
+
+.PHONY: clean-d1-2f-d2-2f-d3
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/d1/d2/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/d1/d2/subdir.mk
index b0714f98f2b..81c1cc016e0 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/d1/d2/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/d1/d2/subdir.mk
@@ -7,28 +7,35 @@ CPP_SRCS += \
../d1/d2/e.cpp \
../d1/d2/r.cpp
-OBJS += \
-./d1/d2/e.o \
-./d1/d2/r.o
-
CPP_DEPS += \
./d1/d2/e.d \
./d1/d2/r.d
+OBJS += \
+./d1/d2/e.o \
+./d1/d2/r.o
+
# Each subdirectory must supply rules for building sources it contributes
-d1/d2/e.o: ../d1/d2/e.cpp
+d1/d2/e.o: ../d1/d2/e.cpp d1/d2/subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: Test 4.0 ToolName.compiler.gnu.cpp'
- g++ -Id2_ecpp_rel/path -I../d2_ecpp_proj/rel/path -I/d2_ecpp_abs/path -Ic:/d2_ecpp_abs/path -Id2_rel/path -I../d2_proj/rel/path -I/d2_abs/path -Ic:/d2_abs/path -Id1_rel/path -I../d1_proj/rel/path -I/d1_abs/path -Ic:/d1_abs/path -I"D:\d1_docs\incs" -I"D:\d2_docs\incs" -I"D:\d2_ecpp_docs\incs" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"d1/d2/e.d" -o "$@" "$<"
+ g++ -Id2_ecpp_rel/path -I../d2_ecpp_proj/rel/path -I/d2_ecpp_abs/path -Ic:/d2_ecpp_abs/path -Id2_rel/path -I../d2_proj/rel/path -I/d2_abs/path -Ic:/d2_abs/path -Id1_rel/path -I../d1_proj/rel/path -I/d1_abs/path -Ic:/d1_abs/path -I"D:\d1_docs\incs" -I"D:\d2_docs\incs" -I"D:\d2_ecpp_docs\incs" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
@echo 'Finished building: $<'
@echo ' '
-d1/d2/%.o: ../d1/d2/%.cpp
+d1/d2/%.o: ../d1/d2/%.cpp d1/d2/subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: Test 4.0 ToolName.compiler.gnu.cpp'
- g++ -Id2_rel/path -I../d2_proj/rel/path -I/d2_abs/path -Ic:/d2_abs/path -Id1_rel/path -I../d1_proj/rel/path -I/d1_abs/path -Ic:/d1_abs/path -I"D:\d1_docs\incs" -I"D:\d2_docs\incs" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<"
+ g++ -Id2_rel/path -I../d2_proj/rel/path -I/d2_abs/path -Ic:/d2_abs/path -Id1_rel/path -I../d1_proj/rel/path -I/d1_abs/path -Ic:/d1_abs/path -I"D:\d1_docs\incs" -I"D:\d2_docs\incs" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
@echo 'Finished building: $<'
@echo ' '
+clean: clean-d1-2f-d2
+
+clean-d1-2f-d2:
+ -$(RM) ./d1/d2/e.d ./d1/d2/e.o ./d1/d2/r.d ./d1/d2/r.o
+
+.PHONY: clean-d1-2f-d2
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/d1/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/d1/subdir.mk
index 90ae1275f04..ad8bd7f3c56 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/d1/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/d1/subdir.mk
@@ -8,23 +8,30 @@ CPP_SRCS += \
../d1/u.cpp \
../d1/w.cpp
-OBJS += \
-./d1/q.o \
-./d1/u.o \
-./d1/w.o
-
CPP_DEPS += \
./d1/q.d \
./d1/u.d \
./d1/w.d
+OBJS += \
+./d1/q.o \
+./d1/u.o \
+./d1/w.o
+
# Each subdirectory must supply rules for building sources it contributes
-d1/%.o: ../d1/%.cpp
+d1/%.o: ../d1/%.cpp d1/subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: Test 4.0 ToolName.compiler.gnu.cpp'
- g++ -Id1_rel/path -I../d1_proj/rel/path -I/d1_abs/path -Ic:/d1_abs/path -I"D:\d1_docs\incs" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<"
+ g++ -Id1_rel/path -I../d1_proj/rel/path -I/d1_abs/path -Ic:/d1_abs/path -I"D:\d1_docs\incs" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
@echo 'Finished building: $<'
@echo ' '
+clean: clean-d1
+
+clean-d1:
+ -$(RM) ./d1/q.d ./d1/q.o ./d1/u.d ./d1/u.o ./d1/w.d ./d1/w.o
+
+.PHONY: clean-d1
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/d1_1/d2_1/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/d1_1/d2_1/subdir.mk
index f23e95c434b..0682cb565b2 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/d1_1/d2_1/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/d1_1/d2_1/subdir.mk
@@ -7,21 +7,28 @@ CPP_SRCS += \
../d1_1/d2_1/a.cpp \
../d1_1/d2_1/p.cpp
-OBJS += \
-./d1_1/d2_1/a.o \
-./d1_1/d2_1/p.o
-
CPP_DEPS += \
./d1_1/d2_1/a.d \
./d1_1/d2_1/p.d
+OBJS += \
+./d1_1/d2_1/a.o \
+./d1_1/d2_1/p.o
+
# Each subdirectory must supply rules for building sources it contributes
-d1_1/d2_1/%.o: ../d1_1/d2_1/%.cpp
+d1_1/d2_1/%.o: ../d1_1/d2_1/%.cpp d1_1/d2_1/subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: Test 4.0 ToolName.compiler.gnu.cpp'
- g++ -Id2_1_rel/path -I/d2_1_abs/path -Ic:/d2_1_abs/path -Id1_1_rel/path -I/d1_1_abs/path -Ic:/d1_1_abs/path -I"D:\d1_1_docs\incs" -I"D:\d2_1_docs\incs" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<"
+ g++ -Id2_1_rel/path -I/d2_1_abs/path -Ic:/d2_1_abs/path -Id1_1_rel/path -I/d1_1_abs/path -Ic:/d1_1_abs/path -I"D:\d1_1_docs\incs" -I"D:\d2_1_docs\incs" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
@echo 'Finished building: $<'
@echo ' '
+clean: clean-d1_1-2f-d2_1
+
+clean-d1_1-2f-d2_1:
+ -$(RM) ./d1_1/d2_1/a.d ./d1_1/d2_1/a.o ./d1_1/d2_1/p.d ./d1_1/d2_1/p.o
+
+.PHONY: clean-d1_1-2f-d2_1
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/d1_1/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/d1_1/subdir.mk
index 6d71c53f46b..6a4559c5876 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/d1_1/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/d1_1/subdir.mk
@@ -7,21 +7,28 @@ CPP_SRCS += \
../d1_1/i.cpp \
../d1_1/o.cpp
-OBJS += \
-./d1_1/i.o \
-./d1_1/o.o
-
CPP_DEPS += \
./d1_1/i.d \
./d1_1/o.d
+OBJS += \
+./d1_1/i.o \
+./d1_1/o.o
+
# Each subdirectory must supply rules for building sources it contributes
-d1_1/%.o: ../d1_1/%.cpp
+d1_1/%.o: ../d1_1/%.cpp d1_1/subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: Test 4.0 ToolName.compiler.gnu.cpp'
- g++ -Id1_1_rel/path -I/d1_1_abs/path -Ic:/d1_1_abs/path -I"D:\d1_1_docs\incs" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<"
+ g++ -Id1_1_rel/path -I/d1_1_abs/path -Ic:/d1_1_abs/path -I"D:\d1_1_docs\incs" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
@echo 'Finished building: $<'
@echo ' '
+clean: clean-d1_1
+
+clean-d1_1:
+ -$(RM) ./d1_1/i.d ./d1_1/i.o ./d1_1/o.d ./d1_1/o.o
+
+.PHONY: clean-d1_1
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/dir1/dd/excluded_c/asd/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/dir1/dd/excluded_c/asd/subdir.mk
index 04dd2f5e0d5..b8165e9f841 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/dir1/dd/excluded_c/asd/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/dir1/dd/excluded_c/asd/subdir.mk
@@ -6,19 +6,26 @@
CPP_SRCS += \
../dir1/dd/excluded_c/asd/s.cpp
-OBJS += \
-./dir1/dd/excluded_c/asd/s.o
-
CPP_DEPS += \
./dir1/dd/excluded_c/asd/s.d
+OBJS += \
+./dir1/dd/excluded_c/asd/s.o
+
# Each subdirectory must supply rules for building sources it contributes
-dir1/dd/excluded_c/asd/%.o: ../dir1/dd/excluded_c/asd/%.cpp
+dir1/dd/excluded_c/asd/%.o: ../dir1/dd/excluded_c/asd/%.cpp dir1/dd/excluded_c/asd/subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: Test 4.0 ToolName.compiler.gnu.cpp'
- g++ -O2 -g -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<"
+ g++ -O2 -g -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
@echo 'Finished building: $<'
@echo ' '
+clean: clean-dir1-2f-dd-2f-excluded_c-2f-asd
+
+clean-dir1-2f-dd-2f-excluded_c-2f-asd:
+ -$(RM) ./dir1/dd/excluded_c/asd/s.d ./dir1/dd/excluded_c/asd/s.o
+
+.PHONY: clean-dir1-2f-dd-2f-excluded_c-2f-asd
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/dir1/dd/excluded_c/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/dir1/dd/excluded_c/subdir.mk
index 8154f02e09c..8d500793617 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/dir1/dd/excluded_c/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/dir1/dd/excluded_c/subdir.mk
@@ -6,19 +6,26 @@
CPP_SRCS += \
../dir1/dd/excluded_c/inc.cpp
-OBJS += \
-./dir1/dd/excluded_c/inc.o
-
CPP_DEPS += \
./dir1/dd/excluded_c/inc.d
+OBJS += \
+./dir1/dd/excluded_c/inc.o
+
# Each subdirectory must supply rules for building sources it contributes
-dir1/dd/excluded_c/%.o: ../dir1/dd/excluded_c/%.cpp
+dir1/dd/excluded_c/%.o: ../dir1/dd/excluded_c/%.cpp dir1/dd/excluded_c/subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: Test 4.0 ToolName.compiler.gnu.cpp'
- g++ -O2 -g -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<"
+ g++ -O2 -g -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
@echo 'Finished building: $<'
@echo ' '
+clean: clean-dir1-2f-dd-2f-excluded_c
+
+clean-dir1-2f-dd-2f-excluded_c:
+ -$(RM) ./dir1/dd/excluded_c/inc.d ./dir1/dd/excluded_c/inc.o
+
+.PHONY: clean-dir1-2f-dd-2f-excluded_c
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/dir1/dd/ff/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/dir1/dd/ff/subdir.mk
index 8fe554eb214..21ab628be91 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/dir1/dd/ff/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/dir1/dd/ff/subdir.mk
@@ -3,36 +3,43 @@
################################################################################
# Add inputs and outputs from these tool invocations to the build variables
-C_SRCS += \
-../dir1/dd/ff/vbn.c
-
CPP_SRCS += \
../dir1/dd/ff/zxc.cpp
-OBJS += \
-./dir1/dd/ff/vbn.o \
-./dir1/dd/ff/zxc.o
+C_SRCS += \
+../dir1/dd/ff/vbn.c
+
+CPP_DEPS += \
+./dir1/dd/ff/zxc.d
C_DEPS += \
./dir1/dd/ff/vbn.d
-CPP_DEPS += \
-./dir1/dd/ff/zxc.d
+OBJS += \
+./dir1/dd/ff/vbn.o \
+./dir1/dd/ff/zxc.o
# Each subdirectory must supply rules for building sources it contributes
-dir1/dd/ff/%.o: ../dir1/dd/ff/%.c
+dir1/dd/ff/%.o: ../dir1/dd/ff/%.c dir1/dd/ff/subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: Test 4.0 ToolName.compiler.gnu.c'
- gcc -O2 -g -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<"
+ gcc -O2 -g -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
@echo 'Finished building: $<'
@echo ' '
-dir1/dd/ff/%.o: ../dir1/dd/ff/%.cpp
+dir1/dd/ff/%.o: ../dir1/dd/ff/%.cpp dir1/dd/ff/subdir.mk
@echo 'Building file: $<'
@echo 'Invoking: Test 4.0 ToolName.compiler.gnu.cpp'
- g++ -O2 -g -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<"
+ g++ -O2 -g -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
@echo 'Finished building: $<'
@echo ' '
+clean: clean-dir1-2f-dd-2f-ff
+
+clean-dir1-2f-dd-2f-ff:
+ -$(RM) ./dir1/dd/ff/vbn.d ./dir1/dd/ff/vbn.o ./dir1/dd/ff/zxc.d ./dir1/dd/ff/zxc.o
+
+.PHONY: clean-dir1-2f-dd-2f-ff
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/makefile
index 273cd9dc6ce..841089e9c43 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/makefile
@@ -16,8 +16,6 @@ RM := rm -rf
-include d1/d2/d3/subdir.mk
-include d1/d2/subdir.mk
-include d1/subdir.mk
--include subdir.mk
--include objects.mk
ifneq ($(MAKECMDGOALS),clean)
ifneq ($(strip $(C++_DEPS)),)
@@ -26,15 +24,15 @@ endif
ifneq ($(strip $(CC_DEPS)),)
-include $(CC_DEPS)
endif
-ifneq ($(strip $(C_DEPS)),)
--include $(C_DEPS)
-endif
ifneq ($(strip $(CPP_DEPS)),)
-include $(CPP_DEPS)
endif
ifneq ($(strip $(CXX_DEPS)),)
-include $(CXX_DEPS)
endif
+ifneq ($(strip $(C_DEPS)),)
+-include $(C_DEPS)
+endif
ifneq ($(strip $(C_UPPER_DEPS)),)
-include $(C_UPPER_DEPS)
endif
@@ -42,24 +40,38 @@ endif
-include ../makefile.defs
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
+BUILD_ARTIFACT_NAME := test_40
+BUILD_ARTIFACT_EXTENSION :=
+BUILD_ARTIFACT_PREFIX :=
+BUILD_ARTIFACT := $(BUILD_ARTIFACT_PREFIX)$(BUILD_ARTIFACT_NAME)$(if $(BUILD_ARTIFACT_EXTENSION),.$(BUILD_ARTIFACT_EXTENSION),)
+
# Add inputs and outputs from these tool invocations to the build variables
# All Target
-all: test_40
+all: main-build
+
+# Main-build Target
+main-build: test_40
# Tool invocations
-test_40: $(OBJS) $(USER_OBJS)
+test_40: $(OBJS) $(USER_OBJS) makefile $(OPTIONAL_TOOL_DEPS) uo2
@echo 'Building target: $@'
@echo 'Invoking: Test 4.0 ToolName.linker.gnu.cpp'
- g++ -Llib/path/2 -o "test_40" $(OBJS) $(USER_OBJS) $(LIBS)
+ g++ -Llib/path/2 -o "test_40" $(OBJS) $(USER_OBJS) $(LIBS) uo2 -llib2
@echo 'Finished building target: $@'
@echo ' '
# Other Targets
clean:
- -$(RM) $(OBJS)$(C++_DEPS)$(EXECUTABLES)$(CC_DEPS)$(C_DEPS)$(CPP_DEPS)$(CXX_DEPS)$(C_UPPER_DEPS) test_40
+ -$(RM) test_40
-@echo ' '
-.PHONY: all clean dependents
+.PHONY: all clean dependents main-build
-include ../makefile.targets
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/objects.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/objects.mk
index 367436e715e..742c2da043f 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/objects.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/objects.mk
@@ -2,7 +2,7 @@
# Automatically-generated file. Do not edit!
################################################################################
-LIBS := -llib2
+USER_OBJS :=
-USER_OBJS := uo2
+LIBS :=
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/sources.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/sources.mk
index d2895268513..463597703f3 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/sources.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/sources.mk
@@ -2,24 +2,24 @@
# Automatically-generated file. Do not edit!
################################################################################
-C_UPPER_SRCS :=
-C_SRCS :=
-CPP_SRCS :=
-O_SRCS :=
ASM_SRCS :=
-S_UPPER_SRCS :=
C++_SRCS :=
-CXX_SRCS :=
CC_SRCS :=
+CPP_SRCS :=
+CXX_SRCS :=
+C_SRCS :=
+C_UPPER_SRCS :=
OBJ_SRCS :=
-OBJS :=
+O_SRCS :=
+S_UPPER_SRCS :=
C++_DEPS :=
-EXECUTABLES :=
CC_DEPS :=
-C_DEPS :=
CPP_DEPS :=
CXX_DEPS :=
+C_DEPS :=
C_UPPER_DEPS :=
+EXECUTABLES :=
+OBJS :=
# Every subdirectory with source files must be described here
SUBDIRS := \
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/suite/org/eclipse/cdt/managedbuilder/testplugin/AbstractBuilderTest.java b/build/org.eclipse.cdt.managedbuilder.core.tests/suite/org/eclipse/cdt/managedbuilder/testplugin/AbstractBuilderTest.java
index bc5a5db06c3..d0fcc4efed6 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/suite/org/eclipse/cdt/managedbuilder/testplugin/AbstractBuilderTest.java
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/suite/org/eclipse/cdt/managedbuilder/testplugin/AbstractBuilderTest.java
@@ -14,6 +14,9 @@
package org.eclipse.cdt.managedbuilder.testplugin;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
@@ -42,8 +45,9 @@ import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.jobs.Job;
-
-import junit.framework.TestCase;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.TestInfo;
/**
* Abstract builder test which provides utility methods for:
@@ -55,7 +59,7 @@ import junit.framework.TestCase;
* <li>Cleaning up the workspace at the end</li>
* </ul>
*/
-public abstract class AbstractBuilderTest extends TestCase {
+public abstract class AbstractBuilderTest {
private static final boolean WINDOWS = java.io.File.separatorChar == '\\';
static final String PATH = "builderTests";
@@ -63,16 +67,14 @@ public abstract class AbstractBuilderTest extends TestCase {
private String workspace;
private List<IProject> projects;
- @Override
- protected void setUp() throws Exception {
- super.setUp();
+ @BeforeEach
+ public void setUp() throws Exception {
setAutoBuilding(false);
}
- @Override
- protected void tearDown() throws Exception {
- super.tearDown();
- ResourceHelper.cleanUp(getName());
+ @AfterEach
+ public void tearDown(TestInfo testInfo) throws Exception {
+ ResourceHelper.cleanUp(testInfo.getDisplayName());
// Bug 327126 Stop the indexer before tearing down so we don't deadlock
Job.getJobManager().cancel(CCorePlugin.getPDOMManager());
Job.getJobManager().join(CCorePlugin.getPDOMManager(), null);
@@ -113,7 +115,7 @@ public abstract class AbstractBuilderTest extends TestCase {
};
getWorkspace().run(body, null);
} finally {
- assertTrue(verifier.getMessage(), verifier.isDeltaValid());
+ assertTrue(verifier.isDeltaValid(), verifier.getMessage());
getWorkspace().removeResourceChangeListener(verifier);
printAllMarkers();
}
@@ -217,7 +219,6 @@ public abstract class AbstractBuilderTest extends TestCase {
resources.add(buildDir);
if (externalBuilder) {
resources.add(buildDir.getFile("makefile"));
- resources.add(buildDir.getFile("objects.mk"));
resources.add(buildDir.getFile("sources.mk"));
}
for (String obj : objs) {
@@ -240,14 +241,6 @@ public abstract class AbstractBuilderTest extends TestCase {
return resources;
}
- public AbstractBuilderTest() {
- super();
- }
-
- public AbstractBuilderTest(String name) {
- super(name);
- }
-
protected void setWorkspace(String name) {
workspace = name;
projects = new ArrayList<>();
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/suite/org/eclipse/cdt/managedbuilder/testplugin/DiffUtil.java b/build/org.eclipse.cdt.managedbuilder.core.tests/suite/org/eclipse/cdt/managedbuilder/testplugin/DiffUtil.java
index 7c28815f94e..1e276b7839d 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/suite/org/eclipse/cdt/managedbuilder/testplugin/DiffUtil.java
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/suite/org/eclipse/cdt/managedbuilder/testplugin/DiffUtil.java
@@ -18,39 +18,23 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
-public class DiffUtil {
- private static final String DIFF_CMD = "diff -ub";
- private static DiffUtil fInstance;
-
- private DiffUtil() {
-
- }
-
- public static DiffUtil getInstance() {
- if (fInstance == null)
- fInstance = new DiffUtil();
- return fInstance;
- }
-
- private static String createCommand(String location1, String location2) {
- StringBuilder buf = new StringBuilder();
- buf.append(DIFF_CMD).append(" '").append(location1).append("' '").append(location2).append("'");
- return buf.toString();
- }
-
- public String diff(String location1, String location2) {
- InputStream in = invokeDiff(location1, location2);
- if (in == null)
- return null;
-
- BufferedReader br;
- br = new BufferedReader(new InputStreamReader(in));
- String line;
+public abstract class DiffUtil {
+ public static String diff(String location1, String location2) {
StringBuilder buf = new StringBuilder();
try {
- while ((line = br.readLine()) != null) {
- buf.append("\n");
- buf.append(line);
+ String[] command = new String[] { "diff", "-ub", location1, location2 };
+ Process p = Runtime.getRuntime().exec(command);
+ InputStream in = p.getInputStream();
+ if (in == null) {
+ return null;
+ }
+
+ try (BufferedReader br = new BufferedReader(new InputStreamReader(in))) {
+ String line;
+ while ((line = br.readLine()) != null) {
+ buf.append("\n");
+ buf.append(line);
+ }
}
} catch (IOException e) {
// TODO Auto-generated catch block
@@ -59,15 +43,4 @@ public class DiffUtil {
}
return buf.toString();
}
-
- private InputStream invokeDiff(String location1, String location2) {
- try {
- Process p = Runtime.getRuntime().exec(createCommand(location1, location2));
- return p.getInputStream();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- return null;
- }
}
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/suite/org/eclipse/cdt/managedbuilder/testplugin/ManagedBuildTestHelper.java b/build/org.eclipse.cdt.managedbuilder.core.tests/suite/org/eclipse/cdt/managedbuilder/testplugin/ManagedBuildTestHelper.java
index 58f3faecc86..c6df3aa9b1f 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/suite/org/eclipse/cdt/managedbuilder/testplugin/ManagedBuildTestHelper.java
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/suite/org/eclipse/cdt/managedbuilder/testplugin/ManagedBuildTestHelper.java
@@ -471,7 +471,7 @@ public class ManagedBuildTestHelper {
: getFileLocation(project, benchmarkFileLocation);
String location2 = testFileLocation.isAbsolute() ? testFileLocation.toString()
: getFileLocation(project, testFileLocation);
- String diff = DiffUtil.getInstance().diff(location1, location2);
+ String diff = DiffUtil.diff(location1, location2);
if (diff == null)
diff = "!diff failed!";
buffer.append(diff);
@@ -698,8 +698,7 @@ public class ManagedBuildTestHelper {
private static ArrayList<String> getContents(IPath fullPath) {
ArrayList<String> lines = new ArrayList<>();
- try {
- BufferedReader in = new BufferedReader(new FileReader(fullPath.toFile()));
+ try (BufferedReader in = new BufferedReader(new FileReader(fullPath.toFile()))) {
String line;
do {
line = in.readLine();
@@ -797,7 +796,7 @@ public class ManagedBuildTestHelper {
buffer.append(">>>>>>>>>>>>>>>start diff: \n");
String location1 = getFileLocation(bmFile.getProject(), bmFile.getProjectRelativePath());
String location2 = getFileLocation(tFile.getProject(), tFile.getProjectRelativePath());
- String diff = DiffUtil.getInstance().diff(location1, location2);
+ String diff = DiffUtil.diff(location1, location2);
if (diff == null)
diff = "!diff failed!";
buffer.append(diff);
@@ -876,7 +875,8 @@ public class ManagedBuildTestHelper {
return buff;
}
- static public IPath copyFilesToTempDir(IPath srcDir, IPath tmpRootDir, IPath tmpSubDir, IPath[] files) {
+ static public IPath copyFilesToTempDir(IPath srcDir, IPath tmpRootDir, IPath tmpSubDir, IPath[] files)
+ throws IOException {
IPath tmpSrcDir = null;
tmpSrcDir = tmpRootDir.append(tmpSubDir);
if (tmpRootDir.toString().equalsIgnoreCase(tmpSrcDir.toString())) {
@@ -898,46 +898,31 @@ public class ManagedBuildTestHelper {
for (int i = 0; i < files.length; i++) {
IPath file = files[i];
IPath srcFile = srcDir.append(file);
- FileReader srcReader = null;
- try {
- srcReader = new FileReader(srcFile.toFile());
- } catch (Exception e) {
- Assert.fail("File " + file.toString() + " could not be read.");
- return null;
- }
- if (file.segmentCount() > 1) {
- IPath newDir = tmpSrcDir;
- do {
- IPath dir = file.uptoSegment(1);
- newDir = newDir.append(dir);
- file = file.removeFirstSegments(1);
- newDir.toFile().mkdir();
- if (!newDir.toFile().exists()) {
- Assert.fail("Can't create temporary directory " + tmpSrcDirFile.toString());
- }
- } while (file.segmentCount() > 1);
- }
- IPath destFile = tmpSrcDir.append(files[i]);
- FileWriter writer = null;
- try {
- writer = new FileWriter(destFile.toFile());
- } catch (Exception e) {
- Assert.fail("File " + files[i].toString() + " could not be written.");
- return null;
- }
- try {
- int c;
- do {
- c = srcReader.read();
- if (c == -1)
- break;
- writer.write(c);
- } while (c != -1);
- srcReader.close();
- writer.close();
- } catch (Exception e) {
- Assert.fail("File " + file.toString() + " could not be copied.");
+ try (FileReader srcReader = new FileReader(srcFile.toFile())) {
+ if (file.segmentCount() > 1) {
+ IPath newDir = tmpSrcDir;
+ do {
+ IPath dir = file.uptoSegment(1);
+ newDir = newDir.append(dir);
+ file = file.removeFirstSegments(1);
+ newDir.toFile().mkdir();
+ if (!newDir.toFile().exists()) {
+ Assert.fail("Can't create temporary directory " + tmpSrcDirFile.toString());
+ }
+ } while (file.segmentCount() > 1);
+ }
+ IPath destFile = tmpSrcDir.append(files[i]);
+ try (FileWriter writer = new FileWriter(destFile.toFile())) {
+ int c;
+ do {
+ c = srcReader.read();
+ if (c == -1)
+ break;
+ writer.write(c);
+ } while (c != -1);
+ }
}
+
}
}
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/suite/org/eclipse/cdt/managedbuilder/tests/suite/AutomatedIntegrationSuite.java b/build/org.eclipse.cdt.managedbuilder.core.tests/suite/org/eclipse/cdt/managedbuilder/tests/suite/AutomatedIntegrationSuite.java
index 9be71132fd4..7c2dae81626 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/suite/org/eclipse/cdt/managedbuilder/tests/suite/AutomatedIntegrationSuite.java
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/suite/org/eclipse/cdt/managedbuilder/tests/suite/AutomatedIntegrationSuite.java
@@ -19,14 +19,13 @@ import org.eclipse.cdt.build.core.scannerconfig.tests.CfgScannerConfigProfileMan
import org.eclipse.cdt.build.core.scannerconfig.tests.GCCSpecsConsoleParserTest;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.dom.IPDOMManager;
-import org.eclipse.cdt.managedbuilder.core.regressions.RegressionTests;
+import org.eclipse.cdt.managedbuilder.core.regressions.RegressionTestSuite;
import org.eclipse.cdt.managedbuilder.core.tests.BuildDescriptionModelTests;
import org.eclipse.cdt.managedbuilder.core.tests.BuildSystem40Tests;
+import org.eclipse.cdt.managedbuilder.core.tests.ManagedBuildCore20Tests;
import org.eclipse.cdt.managedbuilder.core.tests.ManagedBuildCoreTests;
-import org.eclipse.cdt.managedbuilder.core.tests.ManagedBuildCoreTests20;
-import org.eclipse.cdt.managedbuilder.core.tests.ManagedBuildCoreTests_SharedToolOptions;
+import org.eclipse.cdt.managedbuilder.core.tests.ManagedBuildCore_SharedToolOptionsTests;
import org.eclipse.cdt.managedbuilder.core.tests.ManagedBuildDependencyCalculatorTests;
-import org.eclipse.cdt.managedbuilder.core.tests.ManagedBuildDependencyLibsTests;
import org.eclipse.cdt.managedbuilder.core.tests.ManagedBuildEnvironmentTests;
import org.eclipse.cdt.managedbuilder.core.tests.ManagedBuildMacrosTests;
import org.eclipse.cdt.managedbuilder.core.tests.ManagedBuildTCSupportedTest;
@@ -39,8 +38,8 @@ import org.eclipse.cdt.managedbuilder.core.tests.OptionCategoryEnablementTests;
import org.eclipse.cdt.managedbuilder.core.tests.OptionEnablementTests;
import org.eclipse.cdt.managedbuilder.core.tests.PathConverterTest;
import org.eclipse.cdt.managedbuilder.core.tests.ResourceBuildCoreTests;
-import org.eclipse.cdt.managedbuilder.language.settings.providers.tests.AllLanguageSettingsProvidersMBSTests;
-import org.eclipse.cdt.managedbuilder.templateengine.tests.AllTemplateEngineTests;
+import org.eclipse.cdt.managedbuilder.language.settings.providers.tests.AllLanguageSettingsProvidersMBSTestSuite;
+import org.eclipse.cdt.managedbuilder.templateengine.tests.AllTemplateEngineTestSuite;
import org.eclipse.cdt.projectmodel.tests.BackwardCompatiblityTests;
import org.eclipse.cdt.projectmodel.tests.CProjectDescriptionSerializationTests;
import org.eclipse.cdt.projectmodel.tests.OptionStringListValueTests;
@@ -64,18 +63,18 @@ public class AutomatedIntegrationSuite {
TestSuite suite = new TestSuite("Test for org.eclipse.cdt.managedbuild.core.tests");
//$JUnit-BEGIN$
// Preconditions
- suite.addTestSuite(Preconditions.class);
+ suite.addTestSuite(ManagedBuilderPreconditionsTests.class);
// build.core.scannerconfig.tests
suite.addTest(CfgScannerConfigProfileManagerTests.suite());
suite.addTestSuite(GCCSpecsConsoleParserTest.class);
// language settings providers tests
- suite.addTest(AllLanguageSettingsProvidersMBSTests.suite());
+ suite.addTest(AllLanguageSettingsProvidersMBSTestSuite.suite());
// managedbuilder.core.tests
- suite.addTest(ManagedBuildDependencyLibsTests.suite());
- suite.addTest(ManagedBuildCoreTests20.suite());
+ // Test converted to JUnit5: suite.addTest(ManagedBuildDependencyLibsTests.suite());
+ suite.addTest(ManagedBuildCore20Tests.suite());
suite.addTest(ManagedBuildCoreTests.suite());
suite.addTest(ManagedProjectUpdateTests.suite());
suite.addTest(ManagedCommandLineGeneratorTest.suite());
@@ -83,7 +82,7 @@ public class AutomatedIntegrationSuite {
suite.addTest(ManagedProject21MakefileTests.suite());
suite.addTest(ManagedProject30MakefileTests.suite());
suite.addTest(BuildSystem40Tests.suite());
- suite.addTest(ManagedBuildCoreTests_SharedToolOptions.suite());
+ suite.addTest(ManagedBuildCore_SharedToolOptionsTests.suite());
suite.addTest(ManagedBuildEnvironmentTests.suite());
suite.addTest(ManagedBuildMacrosTests.suite());
suite.addTest(ManagedBuildTCSupportedTest.suite());
@@ -95,7 +94,7 @@ public class AutomatedIntegrationSuite {
suite.addTest(PathConverterTest.suite());
// managedbuilder.templateengine.tests
- suite.addTest(AllTemplateEngineTests.suite());
+ suite.addTest(AllTemplateEngineTestSuite.suite());
// projectmodel.tests
suite.addTest(BackwardCompatiblityTests.suite());
@@ -104,7 +103,7 @@ public class AutomatedIntegrationSuite {
suite.addTest(ProjectModelTests.suite());
// regression tests
- suite.addTest(RegressionTests.suite());
+ suite.addTest(RegressionTestSuite.suite());
//$JUnit-END$
return suite;
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/suite/org/eclipse/cdt/managedbuilder/tests/suite/ManagedBuilderPreconditionsTests.java b/build/org.eclipse.cdt.managedbuilder.core.tests/suite/org/eclipse/cdt/managedbuilder/tests/suite/ManagedBuilderPreconditionsTests.java
new file mode 100644
index 00000000000..3a99f2e9b84
--- /dev/null
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/suite/org/eclipse/cdt/managedbuilder/tests/suite/ManagedBuilderPreconditionsTests.java
@@ -0,0 +1,70 @@
+/*******************************************************************************
+ * Copyright (c) 2012,2012 Andrew Gvozdev and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Andrew Gvozdev - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.managedbuilder.tests.suite;
+
+import java.util.Arrays;
+import java.util.Set;
+import java.util.TreeSet;
+
+import org.eclipse.cdt.core.CCorePlugin;
+import org.eclipse.cdt.utils.PathUtil;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.content.IContentType;
+import org.eclipse.core.runtime.content.IContentTypeManager;
+
+import junit.framework.TestCase;
+
+/**
+ * Check that preconditions for running managed builder tests are in place,
+ * see individual tests in this class for details.
+ */
+public class ManagedBuilderPreconditionsTests extends TestCase {
+ @Override
+ protected void setUp() throws Exception {
+ }
+
+ /**
+ * Many MBS tests run make and gcc and will inspect resulting artifacts of the build.
+ * Make sure GNU tool-chain is available for the tests.
+ */
+ public void testGnu() {
+ IPath make = PathUtil.findProgramLocation("make");
+ assertNotNull("Precodition FAILED - program 'make' is not found in path.", make);
+
+ IPath gcc = PathUtil.findProgramLocation("gcc");
+ assertNotNull("Precodition FAILED - program 'gcc' is not found in path.", gcc);
+ }
+
+ /**
+ * Generated makefiles will often contain dependency lines for all file extension
+ * corresponding content types set in preferences. Make sure that this set has not been
+ * changed when the tests are run.
+ */
+ public void testContentTypes() {
+ Set<String> fileExts = new TreeSet<>();
+ IContentTypeManager manager = Platform.getContentTypeManager();
+
+ IContentType contentTypeCpp = manager.getContentType(CCorePlugin.CONTENT_TYPE_CXXSOURCE);
+ fileExts.addAll(Arrays.asList(contentTypeCpp.getFileSpecs(IContentType.FILE_EXTENSION_SPEC)));
+
+ IContentType contentTypeC = manager.getContentType(CCorePlugin.CONTENT_TYPE_CSOURCE);
+ fileExts.addAll(Arrays.asList(contentTypeC.getFileSpecs(IContentType.FILE_EXTENSION_SPEC)));
+
+ Set<String> expectedExts = new TreeSet<>(Arrays.asList(new String[] { "C", "c", "c++", "cc", "cpp", "cxx" }));
+ assertEquals("Precodition FAILED - Content Types do not match expected defaults.", expectedExts.toString(),
+ fileExts.toString());
+ }
+
+}
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/suite/org/eclipse/cdt/managedbuilder/tests/suite/Preconditions.java b/build/org.eclipse.cdt.managedbuilder.core.tests/suite/org/eclipse/cdt/managedbuilder/tests/suite/Preconditions.java
deleted file mode 100644
index 68094517dae..00000000000
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/suite/org/eclipse/cdt/managedbuilder/tests/suite/Preconditions.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2012,2012 Andrew Gvozdev and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Andrew Gvozdev - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.managedbuilder.tests.suite;
-
-import java.util.Arrays;
-import java.util.Set;
-import java.util.TreeSet;
-
-import org.eclipse.cdt.core.CCorePlugin;
-import org.eclipse.cdt.utils.PathUtil;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.content.IContentType;
-import org.eclipse.core.runtime.content.IContentTypeManager;
-
-import junit.framework.TestCase;
-
-public class Preconditions extends TestCase {
- @Override
- protected void setUp() throws Exception {
- }
-
- /**
- * Many MBS tests run make and gcc and will inspect resulting artifacts of the build.
- * Make sure GNU tool-chain is available for the tests.
- */
- public void testGnu() {
- IPath make = PathUtil.findProgramLocation("make");
- assertNotNull("Precodition FAILED - program 'make' is not found in path.", make);
-
- IPath gcc = PathUtil.findProgramLocation("gcc");
- assertNotNull("Precodition FAILED - program 'gcc' is not found in path.", gcc);
- }
-
- /**
- * Generated makefiles will often contain dependency lines for all file extension
- * corresponding content types set in preferences. Make sure that this set has not been
- * changed when the tests are run.
- */
- public void testContentTypes() {
- Set<String> fileExts = new TreeSet<>();
- IContentTypeManager manager = Platform.getContentTypeManager();
-
- IContentType contentTypeCpp = manager.getContentType(CCorePlugin.CONTENT_TYPE_CXXSOURCE);
- fileExts.addAll(Arrays.asList(contentTypeCpp.getFileSpecs(IContentType.FILE_EXTENSION_SPEC)));
-
- IContentType contentTypeC = manager.getContentType(CCorePlugin.CONTENT_TYPE_CSOURCE);
- fileExts.addAll(Arrays.asList(contentTypeC.getFileSpecs(IContentType.FILE_EXTENSION_SPEC)));
-
- Set<String> expectedExts = new TreeSet<>(Arrays.asList(new String[] { "C", "c", "c++", "cc", "cpp", "cxx" }));
- assertEquals("Precodition FAILED - Content Types do not match expected defaults.", expectedExts.toString(),
- fileExts.toString());
- }
-
-}
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/regressions/Bug_303953.java b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/regressions/Bug_303953.java
deleted file mode 100644
index d032b63ecdd..00000000000
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/regressions/Bug_303953.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2011 Broadcom Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Broadcom Corporation - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.managedbuilder.core.regressions;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-
-import org.eclipse.cdt.managedbuilder.testplugin.AbstractBuilderTest;
-import org.eclipse.cdt.managedbuilder.testplugin.ResourceDeltaVerifier;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IResourceDelta;
-import org.eclipse.core.resources.IncrementalProjectBuilder;
-import org.eclipse.core.runtime.CoreException;
-
-/**
- * Tests that removing the last source file from a directory
- * causes the subdir.mk to be regenerated, and associated dervied
- * files should be deleted.
- */
-public class Bug_303953 extends AbstractBuilderTest {
-
- public void testBuildAfterSourcefileDelete() throws CoreException {
- setWorkspace("regressions");
- final IProject app = loadProject("helloworldC");
-
- List<IResource> buildOutputResources = new ArrayList<>();
- buildOutputResources.addAll(getProjectBuildExeResources("helloworldC", "Debug", "src/helloworldC"));
-
- // Ensure Debug is the active configuration
- setActiveConfigurationByName(app, "Debug");
-
- ResourceDeltaVerifier verifier = new ResourceDeltaVerifier();
- verifier.addExpectedChange(buildOutputResources.toArray(new IResource[buildOutputResources.size()]),
- IResourceDelta.ADDED, IResourceDelta.NO_CHANGE);
- verifier.addIgnore(new IResource[] { getWorkspace().getRoot(), app, app.getFile(".project") });
- verifyBuild(app, IncrementalProjectBuilder.FULL_BUILD, verifier);
-
- // Delete helloworldC
- IFile srcFile = app.getFile("src/helloworldC.c");
- assertTrue("1.1", srcFile.exists());
- srcFile.delete(false, null);
-
- // Build again
- // - derived files from helloworldC.c should be removed
- // - subdir.mk should be changed
- // - ignore other changes in the build tree (not the subject of this bug...)
-
- verifier = new ResourceDeltaVerifier();
- // These files should be removed
- IResource[] removed = new IResource[] { app.getFile("Debug/src/helloworldC.o"),
- app.getFile("Debug/src/helloworldC.d") };
- verifier.addExpectedChange(removed, IResourceDelta.REMOVED, IResourceDelta.NO_CHANGE);
- // subdir.mk has been updated
- IResource[] expected = new IResource[] { app.getFile("Debug/src/subdir.mk") };
- verifier.addExpectedChange(expected, IResourceDelta.CHANGED, IResourceDelta.CONTENT);
-
- // Ignore other resources
- Collection<IResource> ignored = getProjectBuildExeResources("helloworldC", "Debug", "src/helloworldC");
- ignored.removeAll(Arrays.asList(removed));
- ignored.removeAll(Arrays.asList(expected));
- ignored.add(getWorkspace().getRoot());
- ignored.add(app);
- verifier.addIgnore(ignored.toArray(new IResource[ignored.size()]));
- verifyBuild(app, IncrementalProjectBuilder.INCREMENTAL_BUILD, verifier);
- }
-
-}
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/regressions/Bug_303953Test.java b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/regressions/Bug_303953Test.java
new file mode 100644
index 00000000000..1211288aac8
--- /dev/null
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/regressions/Bug_303953Test.java
@@ -0,0 +1,154 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2021 Broadcom Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Broadcom Corporation - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.managedbuilder.core.regressions;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.io.ByteArrayInputStream;
+import java.io.UnsupportedEncodingException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.cdt.core.model.ICModelMarker;
+import org.eclipse.cdt.core.settings.model.CSourceEntry;
+import org.eclipse.cdt.core.settings.model.ICSourceEntry;
+import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
+import org.eclipse.cdt.managedbuilder.testplugin.AbstractBuilderTest;
+import org.eclipse.cdt.managedbuilder.testplugin.ResourceDeltaVerifier;
+import org.eclipse.core.resources.IBuildConfiguration;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceDelta;
+import org.eclipse.core.resources.IncrementalProjectBuilder;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.ICoreRunnable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.junit.jupiter.api.Test;
+
+/**
+ * Tests that removing the last source file from a directory
+ * causes the subdir.mk to be regenerated, and associated dervied
+ * files should be deleted.
+ */
+public class Bug_303953Test extends AbstractBuilderTest {
+
+ @Test
+ public void testBuildAfterSourcefileDelete() throws CoreException {
+ setWorkspace("regressions");
+ final IProject app = loadProject("helloworldC");
+
+ List<IResource> buildOutputResources = new ArrayList<>();
+ buildOutputResources.addAll(getProjectBuildExeResources("helloworldC", "Debug", "src/helloworldC"));
+
+ // Ensure Debug is the active configuration
+ setActiveConfigurationByName(app, "Debug");
+
+ ResourceDeltaVerifier verifier = new ResourceDeltaVerifier();
+ verifier.addExpectedChange(buildOutputResources.toArray(new IResource[buildOutputResources.size()]),
+ IResourceDelta.ADDED, IResourceDelta.NO_CHANGE);
+ verifier.addIgnore(
+ new IResource[] { getWorkspace().getRoot(), app, app.getFile(".project"), app.getFile(".cproject") });
+ verifyBuild(app, IncrementalProjectBuilder.FULL_BUILD, verifier);
+
+ // Delete helloworldC
+ IFile srcFile = app.getFile("src/helloworldC.c");
+ assertTrue(srcFile.exists(), "1.1");
+ srcFile.delete(false, null);
+
+ // Build again
+ // - derived files from helloworldC.c should be removed
+ // - subdir.mk should be changed
+ // - ignore other changes in the build tree (not the subject of this bug...)
+
+ verifier = new ResourceDeltaVerifier();
+ // These files should be removed
+ IResource[] removed = new IResource[] { app.getFile("Debug/src/helloworldC.o"),
+ app.getFile("Debug/src/helloworldC.d") };
+ verifier.addExpectedChange(removed, IResourceDelta.REMOVED, IResourceDelta.NO_CHANGE);
+ // subdir.mk has been updated
+ IResource[] expected = new IResource[] { app.getFile("Debug/src/subdir.mk") };
+ verifier.addExpectedChange(expected, IResourceDelta.CHANGED, IResourceDelta.CONTENT);
+
+ // Ignore other resources
+ Collection<IResource> ignored = getProjectBuildExeResources("helloworldC", "Debug", "src/helloworldC");
+ ignored.removeAll(Arrays.asList(removed));
+ ignored.removeAll(Arrays.asList(expected));
+ ignored.add(getWorkspace().getRoot());
+ ignored.add(app);
+ verifier.addIgnore(ignored.toArray(new IResource[ignored.size()]));
+ verifyBuild(app, IncrementalProjectBuilder.INCREMENTAL_BUILD, verifier);
+ }
+
+ /**
+ * Tests that source files in the root of the project are not treated
+ * specially with respect to removing the last of them (bug 575490).
+ */
+ @Test
+ public void testBuildAfterRootSourcefileDelete() throws CoreException, UnsupportedEncodingException {
+ setWorkspace("regressions");
+ final IProject app = loadProject("helloworldC");
+ setActiveConfigurationByName(app, "Debug");
+
+ // Change the source folder from /src to /
+ ManagedBuildManager.getBuildInfo(app).getDefaultConfiguration()
+ .setSourceEntries(new ICSourceEntry[] { new CSourceEntry(Path.ROOT, null, 0) });
+
+ // Add a new source file in the root
+ app.getFile("additional.c").create(new ByteArrayInputStream("int x = 42;\n".getBytes("UTF-8")), true, null);
+
+ // Build once: This will create a root subdir.mk referring to additional.c
+ ICoreRunnable build = new ICoreRunnable() {
+ @Override
+ public void run(IProgressMonitor monitor) throws CoreException {
+ getWorkspace().build(new IBuildConfiguration[] { app.getActiveBuildConfig() },
+ IncrementalProjectBuilder.FULL_BUILD, true, monitor);
+ }
+ };
+ getWorkspace().run(build, null);
+ IMarker[] markers = app.findMarkers(ICModelMarker.C_MODEL_PROBLEM_MARKER, true, IResource.DEPTH_INFINITE);
+ assertEquals(0, markers.length, "first build should succeed with no error markers");
+
+ // Remove additional.c behind Eclipse's back
+ app.getFile("additional.c").getLocation().toFile().delete();
+
+ // Build again: This is expected to fail because at the time the
+ // makefile is updated, the absence of additional.c hasn't been noticed
+ // yet. Only the refresh done at the end of this build will notice the
+ // removal.
+ getWorkspace().run(build, null);
+ markers = app.findMarkers(ICModelMarker.C_MODEL_PROBLEM_MARKER, true, IResource.DEPTH_INFINITE);
+ assertNotEquals(0, markers.length, "second build should produce an error marker");
+ // commented out because the exact wording may depend on the version of 'make' used
+ // assertEquals("make: *** No rule to make target '../additional.c', needed by 'additional.o'. Stop.",
+ // markers[0].getAttribute(IMarker.MESSAGE));
+
+ // Build again: The FULL_BUILD will ignore the delta indicating the
+ // removal of additional.c and therefore not regenerate the root
+ // subdir.mk (because now there are no source files in the root),
+ // leaving the stale one there that still refers to additional.c.
+ // This should succeed - before the fix, it would fail because the
+ // stale subdir.mk would still be included.
+ getWorkspace().run(build, null);
+ markers = app.findMarkers(ICModelMarker.C_MODEL_PROBLEM_MARKER, true, IResource.DEPTH_INFINITE);
+ assertEquals(0, markers.length, "final build should succeed with no error markers");
+ }
+
+}
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/regressions/Bug_335476.java b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/regressions/Bug_335476.java
deleted file mode 100644
index b2345a0f3a9..00000000000
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/regressions/Bug_335476.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2011 Broadcom Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Broadcom Corporation - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.managedbuilder.core.regressions;
-
-import java.io.BufferedReader;
-import java.io.InputStreamReader;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.eclipse.cdt.core.CCorePlugin;
-import org.eclipse.cdt.core.cdtvariables.ICdtVariableManager;
-import org.eclipse.cdt.core.envvar.IEnvironmentVariableManager;
-import org.eclipse.cdt.managedbuilder.testplugin.AbstractBuilderTest;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IncrementalProjectBuilder;
-import org.eclipse.core.runtime.Path;
-
-/**
- * This tests that an environment variable, which is part of the build
- * (in this case referenced by a -I), makes it through to makefile
- * correctly when it changes.
- */
-public class Bug_335476 extends AbstractBuilderTest {
-
- private final String VAR_NAME = "INC";
- IProject app;
- IEnvironmentVariableManager envManager = CCorePlugin.getDefault().getBuildEnvironmentManager();
- ICdtVariableManager buildMacroManager = CCorePlugin.getDefault().getCdtVariableManager();
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- setWorkspace("regressions");
- app = loadProject("bug_335476");
- // Ensure Debug is the active configuration
- setActiveConfigurationByName(app, "Debug");
- }
-
- /**
- * Build the project a few times, changing the value of the environment variable each time
- * @param build_kind
- * @throws Exception
- */
- public void runTest(int build_kind) throws Exception {
- // Environment containingg the "Lala" environment variable
- final IFile lala = app.getFile(new Path(".settings/org.eclipse.cdt.core.prefs.lala"));
- // Environment containing the "Foo" environment variable
- final IFile foo = app.getFile(new Path(".settings/org.eclipse.cdt.core.prefs.foo"));
-
- final IFile env = app.getFile(new Path(".settings/org.eclipse.cdt.core.prefs"));
-
- IFile current = foo;
- for (int i = 0; i < 5; i++) {
- // Actual expected value
- final String expected = current == foo ? "foo" : "lala";
- // Update the environment to reflect the new value.
- env.setContents(current.getContents(), IResource.NONE, null);
-
- // Ask for a full build
- app.build(build_kind, null);
-
- // Check the makefile for the correct environment
- IFile makefile = app.getFile("Debug/src/subdir.mk");
- BufferedReader reader = new BufferedReader(new InputStreamReader(makefile.getContents()));
- try {
- Pattern p = Pattern.compile(".*?-I.*?\"(.*?)\".*");
- boolean found = false;
- while (reader.ready()) {
- String line = reader.readLine();
- if (!line.contains("gcc"))
- continue;
- Matcher m = p.matcher(line);
- assertTrue(m.matches());
- String buildVar = m.group(1);
-
- // Check that the Environment manager + the build manager have the variable
- // (which tells us how far the variable has got through the system...)
- String value = envManager.getVariable(VAR_NAME,
- CCorePlugin.getDefault().getProjectDescription(app, false).getActiveConfiguration(), false)
- .getValue();
- String value2 = buildMacroManager.resolveValue("${" + VAR_NAME + "}", "", ";",
- CCorePlugin.getDefault().getProjectDescription(app, false).getActiveConfiguration());
-
- assertTrue(i + " EnvManager " + expected + " exepected, but was: " + value, expected.equals(value));
- assertTrue(i + " CdtVarManager " + expected + " exepected, but was: " + value2,
- expected.equals(value2));
- assertTrue(i + " Makefile: " + expected + " exepected, but was: " + buildVar,
- expected.equals(buildVar));
- found = true;
- }
- // Check that we at least matched
- assertTrue(found);
- } finally {
- reader.close();
- }
-
- // Change environment
- if (current == lala)
- current = foo;
- else
- current = lala;
- }
- }
-
- public void testChangingEnvironmentBuildSystem_FULL_BUILD() throws Exception {
- runTest(IncrementalProjectBuilder.FULL_BUILD);
- }
-
- public void testChangingEnvironmentBuildSystem_INC_BUILD() throws Exception {
- runTest(IncrementalProjectBuilder.INCREMENTAL_BUILD);
- }
-
-}
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/regressions/Bug_335476Test.java b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/regressions/Bug_335476Test.java
new file mode 100644
index 00000000000..0ade26c8aba
--- /dev/null
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/regressions/Bug_335476Test.java
@@ -0,0 +1,132 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Broadcom Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Broadcom Corporation - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.managedbuilder.core.regressions;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.eclipse.cdt.core.CCorePlugin;
+import org.eclipse.cdt.core.cdtvariables.ICdtVariableManager;
+import org.eclipse.cdt.core.envvar.IEnvironmentVariableManager;
+import org.eclipse.cdt.managedbuilder.testplugin.AbstractBuilderTest;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IncrementalProjectBuilder;
+import org.eclipse.core.runtime.Path;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
+
+/**
+ * This tests that an environment variable, which is part of the build
+ * (in this case referenced by a -I), makes it through to makefile
+ * correctly when it changes.
+ */
+@Disabled("This is a test for a known failure - see Bug 335476")
+public class Bug_335476Test extends AbstractBuilderTest {
+
+ private final String VAR_NAME = "INC";
+ IProject app;
+ IEnvironmentVariableManager envManager = CCorePlugin.getDefault().getBuildEnvironmentManager();
+ ICdtVariableManager buildMacroManager = CCorePlugin.getDefault().getCdtVariableManager();
+
+ @BeforeEach
+ public void setUpLocal() throws Exception {
+ setWorkspace("regressions");
+ app = loadProject("bug_335476");
+ // Ensure Debug is the active configuration
+ setActiveConfigurationByName(app, "Debug");
+ }
+
+ /**
+ * Build the project a few times, changing the value of the environment variable each time
+ * @param build_kind
+ * @throws Exception
+ */
+ public void runTest(int build_kind) throws Exception {
+ // Environment containingg the "Lala" environment variable
+ final IFile lala = app.getFile(new Path(".settings/org.eclipse.cdt.core.prefs.lala"));
+ // Environment containing the "Foo" environment variable
+ final IFile foo = app.getFile(new Path(".settings/org.eclipse.cdt.core.prefs.foo"));
+
+ final IFile env = app.getFile(new Path(".settings/org.eclipse.cdt.core.prefs"));
+
+ IFile current = foo;
+ for (int i = 0; i < 5; i++) {
+ // Actual expected value
+ final String expected = current == foo ? "foo" : "lala";
+ // Update the environment to reflect the new value.
+ env.setContents(current.getContents(), IResource.NONE, null);
+
+ // Ask for a full build
+ app.build(build_kind, null);
+
+ // Check the makefile for the correct environment
+ IFile makefile = app.getFile("Debug/src/subdir.mk");
+ BufferedReader reader = new BufferedReader(new InputStreamReader(makefile.getContents()));
+ try {
+ Pattern p = Pattern.compile(".*?-I.*?\"(.*?)\".*");
+ boolean found = false;
+ while (reader.ready()) {
+ String line = reader.readLine();
+ if (!line.contains("gcc"))
+ continue;
+ Matcher m = p.matcher(line);
+ assertTrue(m.matches());
+ String buildVar = m.group(1);
+
+ // Check that the Environment manager + the build manager have the variable
+ // (which tells us how far the variable has got through the system...)
+ String value = envManager.getVariable(VAR_NAME,
+ CCorePlugin.getDefault().getProjectDescription(app, false).getActiveConfiguration(), false)
+ .getValue();
+ String value2 = buildMacroManager.resolveValue("${" + VAR_NAME + "}", "", ";",
+ CCorePlugin.getDefault().getProjectDescription(app, false).getActiveConfiguration());
+
+ assertEquals(expected, value, i + " EnvManager " + expected + " exepected, but was: " + value);
+ assertEquals(expected, value2, i + " CdtVarManager " + expected + " exepected, but was: " + value2);
+ assertEquals(expected, buildVar, i + " Makefile: " + expected + " exepected, but was: " + buildVar);
+ found = true;
+ }
+ // Check that we at least matched
+ assertTrue(found);
+ } finally {
+ reader.close();
+ }
+
+ // Change environment
+ if (current == lala)
+ current = foo;
+ else
+ current = lala;
+ }
+ }
+
+ @Test
+ public void testChangingEnvironmentBuildSystem_FULL_BUILD() throws Exception {
+ runTest(IncrementalProjectBuilder.FULL_BUILD);
+ }
+
+ @Test
+ public void testChangingEnvironmentBuildSystem_INC_BUILD() throws Exception {
+ runTest(IncrementalProjectBuilder.INCREMENTAL_BUILD);
+ }
+
+}
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/regressions/Bug_580441Test.java b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/regressions/Bug_580441Test.java
new file mode 100644
index 00000000000..c5dbe8f8852
--- /dev/null
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/regressions/Bug_580441Test.java
@@ -0,0 +1,70 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2022 Broadcom Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Broadcom Corporation - Bug 303953 test
+ * John Dallaway - Initial implementation (derived from bug 303953 test)
+ *******************************************************************************/
+package org.eclipse.cdt.managedbuilder.core.regressions;
+
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.io.ByteArrayInputStream;
+
+import org.eclipse.cdt.managedbuilder.testplugin.AbstractBuilderTest;
+import org.eclipse.core.resources.IBuildConfiguration;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IWorkspaceRunnable;
+import org.eclipse.core.resources.IncrementalProjectBuilder;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.junit.jupiter.api.Test;
+
+/**
+ * Test that removal of a directory containing source file(s) is
+ * processed correctly by the default GnuMakefileGenerator.
+ */
+public class Bug_580441Test extends AbstractBuilderTest {
+
+ @Test
+ public void testBuildAfterPopulatedSourceFolderDelete() throws CoreException {
+ setWorkspace("regressions");
+ final IProject app = loadProject("helloworldC");
+
+ // Create additional source file at src/test/test.c
+ final IFolder testFolder = app.getFolder("src/test");
+ testFolder.create(false, false, null);
+ testFolder.getFile("test.c").create(new ByteArrayInputStream("int test;".getBytes()), false, null);
+
+ // Build debug configuration
+ setActiveConfigurationByName(app, "Debug");
+ buildConfig(app.getActiveBuildConfig());
+ assertTrue(app.getFile("Debug/src/test/test.o").exists(), "test.o not created");
+
+ // Delete folder containing test.c and build again
+ testFolder.delete(false, null);
+ buildConfig(app.getActiveBuildConfig());
+ assertFalse(app.getFolder("Debug/src/test").exists(), "test folder not deleted");
+ }
+
+ private void buildConfig(IBuildConfiguration config) throws CoreException {
+ ResourcesPlugin.getWorkspace().run(new IWorkspaceRunnable() {
+ @Override
+ public void run(IProgressMonitor monitor) throws CoreException {
+ ResourcesPlugin.getWorkspace().build(new IBuildConfiguration[] { config },
+ IncrementalProjectBuilder.INCREMENTAL_BUILD, true, monitor);
+ }
+ }, null);
+ }
+
+}
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/regressions/RegressionTestSuite.java b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/regressions/RegressionTestSuite.java
new file mode 100644
index 00000000000..94de1f2a43f
--- /dev/null
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/regressions/RegressionTestSuite.java
@@ -0,0 +1,41 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Broadcom Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Broadcom Corporation - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.managedbuilder.core.regressions;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * Regression tests for builder bugs
+ */
+public class RegressionTestSuite extends TestCase {
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(RegressionTestSuite.class.getName());
+
+ // Test that common builder does the correct amount of work.
+ // Test converted to JUnit5: suite.addTest(new JUnit4TestAdapter(Bug_303953Test.class));
+
+ return suite;
+ }
+
+ public RegressionTestSuite() {
+ super(null);
+ }
+
+ public RegressionTestSuite(String name) {
+ super(name);
+ }
+}
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/regressions/RegressionTests.java b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/regressions/RegressionTests.java
deleted file mode 100644
index 026d1055d7f..00000000000
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/regressions/RegressionTests.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2011 Broadcom Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Broadcom Corporation - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.managedbuilder.core.regressions;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-/**
- * Regression tests for builder bugs
- */
-public class RegressionTests extends TestCase {
-
- public static Test suite() {
- TestSuite suite = new TestSuite(RegressionTests.class.getName());
-
- // Test that common builder does the correct amount of work.
- suite.addTestSuite(Bug_303953.class);
-
- return suite;
- }
-
- public RegressionTests() {
- super(null);
- }
-
- public RegressionTests(String name) {
- super(name);
- }
-}
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/BuildDescriptionModelTests.java b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/BuildDescriptionModelTests.java
index 5cd67e38e39..ee09c004a19 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/BuildDescriptionModelTests.java
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/BuildDescriptionModelTests.java
@@ -55,6 +55,7 @@ import org.eclipse.cdt.managedbuilder.internal.buildmodel.DbgUtil;
import org.eclipse.cdt.managedbuilder.internal.core.Configuration;
import org.eclipse.cdt.managedbuilder.macros.BuildMacroException;
import org.eclipse.cdt.managedbuilder.macros.IBuildMacroProvider;
+import org.eclipse.cdt.managedbuilder.projectconverter.UpdateManagedProjectManager;
import org.eclipse.cdt.managedbuilder.testplugin.ManagedBuildTestHelper;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
@@ -62,6 +63,7 @@ import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Path;
+import org.eclipse.ui.dialogs.IOverwriteQuery;
import junit.framework.Test;
import junit.framework.TestCase;
@@ -877,6 +879,17 @@ public class BuildDescriptionModelTests extends TestCase {
}
private IProject createProject(String name, String id) {
+
+ // In case the projects need to be updated...
+ IOverwriteQuery queryALL = new IOverwriteQuery() {
+ @Override
+ public String queryOverwrite(String file) {
+ return ALL;
+ }
+ };
+ UpdateManagedProjectManager.setBackupFileOverwriteQuery(queryALL);
+ UpdateManagedProjectManager.setUpdateProjectQuery(queryALL);
+
IProject proj = ManagedBuildTestHelper.createProject(name, id);
if (proj != null)
fCompositeCleaner.addRunnable(new ProjectCleaner(proj));
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/BuildFileGenerator.java b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/BuildFileGenerator.java
index a7711b4af50..e93050dbdc3 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/BuildFileGenerator.java
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/BuildFileGenerator.java
@@ -15,7 +15,7 @@ package org.eclipse.cdt.managedbuilder.core.tests;
import org.eclipse.cdt.managedbuilder.core.IManagedBuildInfo;
import org.eclipse.cdt.managedbuilder.makegen.IManagedBuilderMakefileGenerator;
-import org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator;
+import org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IResourceDelta;
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/BuildSystem40Tests.java b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/BuildSystem40Tests.java
index ce593337ddd..320a0079d60 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/BuildSystem40Tests.java
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/BuildSystem40Tests.java
@@ -69,8 +69,8 @@ public class BuildSystem40Tests extends TestCase {
}
public void test40() throws Exception {
- String[] makefiles = { "makefile", "objects.mk", "sources.mk", "d1/subdir.mk", "d1/d2/subdir.mk",
- "d1/d2/d3/subdir.mk", "d1_1/subdir.mk", "d1_1/d2_1/subdir.mk", "dir1/dd/excluded_c/subdir.mk",
+ String[] makefiles = { "makefile", "sources.mk", "d1/subdir.mk", "d1/d2/subdir.mk", "d1/d2/d3/subdir.mk",
+ "d1_1/subdir.mk", "d1_1/d2_1/subdir.mk", "dir1/dd/excluded_c/subdir.mk",
"dir1/dd/excluded_c/asd/subdir.mk", "dir1/dd/ff/subdir.mk", };
IProject[] projects = createProjects("test_40", null, null, true);
ICProjectDescriptionManager mngr = CoreModel.getDefault().getProjectDescriptionManager();
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/CustomOptionCommandGenerator2.java b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/CustomOptionCommandGenerator2.java
new file mode 100644
index 00000000000..2d76300e07b
--- /dev/null
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/CustomOptionCommandGenerator2.java
@@ -0,0 +1,34 @@
+package org.eclipse.cdt.managedbuilder.core.tests;
+
+import org.eclipse.cdt.managedbuilder.core.BuildException;
+import org.eclipse.cdt.managedbuilder.core.IOption;
+import org.eclipse.cdt.utils.cdtvariables.IVariableSubstitutor;
+
+public class CustomOptionCommandGenerator2 extends CustomOptionCommandGenerator {
+
+ public CustomOptionCommandGenerator2() {
+ }
+
+ @Override
+ public String generateCommand(IOption option, IVariableSubstitutor macroSubstitutor) {
+ String command = super.generateCommand(option, macroSubstitutor);
+ if (command == null) {
+ try {
+ switch (option.getValueType()) {
+ case IOption.BOOLEAN:
+ return option.getBooleanValue() ? option.getCommand() : option.getCommandFalse();
+ case IOption.ENUMERATED:
+ return option.getEnumCommand(option.getSelectedEnum());
+ case IOption.TREE:
+ return option.getCommand(option.getStringValue());
+ default:
+ return option.getCommand() + option.getValue();
+ }
+ } catch (BuildException e) {
+ return "CustomOptionCommandGenerator2-error";
+ }
+ }
+ return command;
+ }
+
+}
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedBuildClean.java b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedBuildClean.java
deleted file mode 100644
index 84ce791e0e2..00000000000
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedBuildClean.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 20116 Kichwa Coders Ltd and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Jonah Graham (Kichwa Coders) - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.managedbuilder.core.tests;
-
-import java.util.Collection;
-
-import org.eclipse.cdt.managedbuilder.testplugin.AbstractBuilderTest;
-import org.eclipse.cdt.managedbuilder.testplugin.ManagedBuildTestHelper;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IWorkspaceDescription;
-import org.eclipse.core.resources.IncrementalProjectBuilder;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-
-public class ManagedBuildClean extends AbstractBuilderTest {
- private static final String PROJ_PATH = "testCleanProjects";
- private IProject fInternalBuilderProject;
- private IProject fExternalBuilderProject;
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- IWorkspaceDescription wsDescription = ResourcesPlugin.getWorkspace().getDescription();
- wsDescription.setAutoBuilding(false);
- ResourcesPlugin.getWorkspace().setDescription(wsDescription);
- assertNotNull("Cannot create testCleanInternal project",
- fInternalBuilderProject = ManagedBuildTestHelper.loadProject("testCleanInternal", PROJ_PATH));
- assertNotNull("Cannot create testCleanExternal project",
- fExternalBuilderProject = ManagedBuildTestHelper.loadProject("testCleanExternal", PROJ_PATH));
- }
-
- @Override
- protected void tearDown() throws Exception {
- super.tearDown();
- ManagedBuildTestHelper.removeProject(fInternalBuilderProject.getName());
- }
-
- public void testCleanInternal() throws Exception {
- helperTestClean(fInternalBuilderProject, false);
- }
-
- public void testCleanExternal() throws Exception {
- helperTestClean(fExternalBuilderProject, true);
- }
-
- private void helperTestClean(IProject project, boolean externalBuilder) throws CoreException {
-
- // do a build and ensure files are present
- project.build(IncrementalProjectBuilder.FULL_BUILD, null);
- Collection<IResource> resources = getProjectBuildExeResources(project.getName(), "Debug",
- "src/" + project.getName(), externalBuilder);
- for (IResource resource : resources) {
- assertTrue("Resource not found: " + resource, resource.exists());
- }
-
- // do a clean and make sure files are gone
- project.build(IncrementalProjectBuilder.CLEAN_BUILD, null);
- for (IResource resource : resources) {
- if (!(resource instanceof IFile)) {
- // Only files are removed by clean, not folders
- continue;
- }
- if (externalBuilder && (resource.getName().endsWith(".mk") || resource.getName().equals("makefile"))) {
- // makefiles are not removed when cleaning
- continue;
- }
- assertFalse("Resource not deleted: " + resource, resource.exists());
- }
- }
-
-}
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedBuildCleanTest.java b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedBuildCleanTest.java
new file mode 100644
index 00000000000..906ca2e218e
--- /dev/null
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedBuildCleanTest.java
@@ -0,0 +1,91 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Kichwa Coders Ltd and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Jonah Graham (Kichwa Coders) - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.managedbuilder.core.tests;
+
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.util.Collection;
+
+import org.eclipse.cdt.managedbuilder.testplugin.AbstractBuilderTest;
+import org.eclipse.cdt.managedbuilder.testplugin.ManagedBuildTestHelper;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IWorkspaceDescription;
+import org.eclipse.core.resources.IncrementalProjectBuilder;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+public class ManagedBuildCleanTest extends AbstractBuilderTest {
+ private static final String PROJ_PATH = "testCleanProjects";
+ private IProject fInternalBuilderProject;
+ private IProject fExternalBuilderProject;
+
+ @BeforeEach
+ public void setUpLocal() throws Exception {
+ IWorkspaceDescription wsDescription = ResourcesPlugin.getWorkspace().getDescription();
+ wsDescription.setAutoBuilding(false);
+ ResourcesPlugin.getWorkspace().setDescription(wsDescription);
+ assertNotNull(fInternalBuilderProject = ManagedBuildTestHelper.loadProject("testCleanInternal", PROJ_PATH),
+ "Cannot create testCleanInternal project");
+ assertNotNull(fExternalBuilderProject = ManagedBuildTestHelper.loadProject("testCleanExternal", PROJ_PATH),
+ "Cannot create testCleanExternal project");
+ }
+
+ @AfterEach
+ public void tearDownLocal() throws Exception {
+ ManagedBuildTestHelper.removeProject(fInternalBuilderProject.getName());
+ }
+
+ @Test
+ public void testCleanInternal() throws Exception {
+ helperTestClean(fInternalBuilderProject, false);
+ }
+
+ @Test
+ public void testCleanExternal() throws Exception {
+ helperTestClean(fExternalBuilderProject, true);
+ }
+
+ private void helperTestClean(IProject project, boolean externalBuilder) throws CoreException {
+
+ // do a build and ensure files are present
+ project.build(IncrementalProjectBuilder.FULL_BUILD, null);
+ Collection<IResource> resources = getProjectBuildExeResources(project.getName(), "Debug",
+ "src/" + project.getName(), externalBuilder);
+ for (IResource resource : resources) {
+ assertTrue(resource.exists(), "Resource not found: " + resource);
+ }
+
+ // do a clean and make sure files are gone
+ project.build(IncrementalProjectBuilder.CLEAN_BUILD, null);
+ for (IResource resource : resources) {
+ if (!(resource instanceof IFile)) {
+ // Only files are removed by clean, not folders
+ continue;
+ }
+ if (externalBuilder && (resource.getName().endsWith(".mk") || resource.getName().equals("makefile"))) {
+ // makefiles are not removed when cleaning
+ continue;
+ }
+ assertFalse(resource.exists(), "Resource not deleted: " + resource);
+ }
+ }
+
+}
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedBuildCore20Tests.java b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedBuildCore20Tests.java
new file mode 100644
index 00000000000..b92fdb2db5c
--- /dev/null
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedBuildCore20Tests.java
@@ -0,0 +1,1950 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2013 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.managedbuilder.core.tests;
+
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.Map;
+import java.util.Properties;
+
+import org.eclipse.cdt.core.CCorePlugin;
+import org.eclipse.cdt.core.parser.IScannerInfo;
+import org.eclipse.cdt.core.parser.IScannerInfoChangeListener;
+import org.eclipse.cdt.core.parser.IScannerInfoProvider;
+import org.eclipse.cdt.core.testplugin.ResourceHelper;
+import org.eclipse.cdt.managedbuilder.core.BuildException;
+import org.eclipse.cdt.managedbuilder.core.IConfiguration;
+import org.eclipse.cdt.managedbuilder.core.IManagedBuildInfo;
+import org.eclipse.cdt.managedbuilder.core.IManagedProject;
+import org.eclipse.cdt.managedbuilder.core.IOption;
+import org.eclipse.cdt.managedbuilder.core.IOptionCategory;
+import org.eclipse.cdt.managedbuilder.core.IProjectType;
+import org.eclipse.cdt.managedbuilder.core.ITargetPlatform;
+import org.eclipse.cdt.managedbuilder.core.ITool;
+import org.eclipse.cdt.managedbuilder.core.IToolChain;
+import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
+import org.eclipse.cdt.managedbuilder.core.ManagedBuilderCorePlugin;
+import org.eclipse.cdt.managedbuilder.core.ManagedCProjectNature;
+import org.eclipse.cdt.managedbuilder.internal.core.Option;
+import org.eclipse.cdt.managedbuilder.testplugin.BuildSystemTestHelper;
+import org.eclipse.cdt.managedbuilder.testplugin.ManagedBuildTestHelper;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IProjectDescription;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.resources.IWorkspaceDescription;
+import org.eclipse.core.resources.IWorkspaceRoot;
+import org.eclipse.core.resources.IWorkspaceRunnable;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Platform;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/*
+ * These tests exercise CDT 2.0 manifest file functionality
+ */
+public class ManagedBuildCore20Tests extends TestCase {
+ private static final boolean boolVal = true;
+ private static final String testConfigId = "test.config.override";
+ private static final String testConfigName = "Tester";
+ private static final String enumVal = "Another Enum";
+ private static final String[] listVal = { "_DEBUG", "/usr/include", "libglade.a" };
+ private static final String newExt = "wen";
+ private static final String projectName = "ManagedBuildTest";
+ private static final String projectName2 = "ManagedBuildTest2";
+ private static final String projectRename = "ManagedBuildRedux";
+ private static final String rootExt = "toor";
+ private static final String stringVal = "-c -Wall";
+ private static final String anotherStringVal = "thevalue";
+ private static final String subExt = "bus";
+
+ public ManagedBuildCore20Tests(String name) {
+ super(name);
+ }
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(ManagedBuildCore20Tests.class.getName());
+
+ // Note that some of the tests are dependent on others so run the suite as a whole
+ suite.addTest(new ManagedBuildCore20Tests("testExtensions"));
+ suite.addTest(new ManagedBuildCore20Tests("testProjectCreation"));
+ suite.addTest(new ManagedBuildCore20Tests("testConfigurations"));
+ suite.addTest(new ManagedBuildCore20Tests("testConfigurationReset"));
+ suite.addTest(new ManagedBuildCore20Tests("testConfigBuildArtifact"));
+ suite.addTest(new ManagedBuildCore20Tests("testMakeCommandManipulation"));
+ suite.addTest(new ManagedBuildCore20Tests("testScannerInfoInterface"));
+ suite.addTest(new ManagedBuildCore20Tests("testProjectRename"));
+ suite.addTest(new ManagedBuildCore20Tests("testErrorParsers"));
+ suite.addTest(new ManagedBuildCore20Tests("cleanup"));
+
+ return suite;
+ }
+
+ /**
+ * Convert path to OS specific representation
+ */
+ private String toOSLocation(String path) {
+ java.io.File file = new java.io.File(path);
+ try {
+ path = file.getCanonicalPath();
+ } catch (IOException e) {
+ }
+
+ return path;
+ }
+
+ /**
+ * Convert path to OS specific representation
+ */
+ private String toOSString(String path) {
+ return new Path(path).toOSString();
+ }
+
+ /**
+ * Navigates through the build info as defined in the extensions
+ * defined in this plugin
+ */
+ public void testExtensions() throws Exception {
+ IProjectType testRoot = null;
+ IProjectType testSub = null;
+ IProjectType testSubSub = null;
+ IProjectType testForwardChild = null;
+ IProjectType testForwardParent = null;
+ IProjectType testForwardGrandchild = null;
+ int numTypes = 0;
+
+ // Note secret null parameter which means just extensions
+ IProjectType[] projTypes = ManagedBuildManager.getDefinedProjectTypes();
+
+ for (int i = 0; i < projTypes.length; ++i) {
+ IProjectType type = projTypes[i];
+
+ if (type.getName().equals("Test Root")) {
+ testRoot = type;
+ checkRootProjectType(testRoot);
+ } else if (type.getName().equals("Test Sub")) {
+ testSub = type;
+ checkSubProjectType(testSub);
+ } else if (type.getName().equals("Test Sub Sub")) {
+ testSubSub = type;
+ checkSubSubProjectType(testSubSub);
+ } else if (type.getName().equals("Forward Child")) {
+ testForwardChild = type;
+ } else if (type.getName().equals("Forward Parent")) {
+ testForwardParent = type;
+ } else if (type.getName().equals("Forward Grandchild")) {
+ testForwardGrandchild = type;
+ } else if (type.getId().startsWith("test.provider.Test_")) {
+ numTypes++;
+ checkProviderProjectType(type);
+ }
+ }
+ // check that the forward references are properly resolved.
+ assertNotNull(testForwardChild);
+ assertNotNull(testForwardParent);
+ assertNotNull(testForwardGrandchild);
+ checkForwardProjectTypes(testForwardParent, testForwardChild, testForwardGrandchild);
+
+ // check that the proper number of projectTypes were dynamically provided
+ assertEquals(3, numTypes);
+
+ // All these project types are defines in the plugin files, so none
+ // of them should be null at this point
+ assertNotNull(testRoot);
+ assertNotNull(testSub);
+ assertNotNull(testSubSub);
+ }
+
+ /**
+ * This test exercises the interface the <code>IConfiguration</code> exposes to manipulate
+ * its make command.
+ */
+ public void testMakeCommandManipulation() {
+ String oldMakeCmd = "make";
+ String newMakeCmd = "Ant";
+
+ // Open the test project
+ IProject project = null;
+ try {
+ project = createProject(projectName);
+ IProjectDescription description = project.getDescription();
+ // Make sure it has a managed nature
+ if (description != null) {
+ assertTrue(description.hasNature(ManagedCProjectNature.MNG_NATURE_ID));
+ }
+ } catch (CoreException e) {
+ fail("Failed to open project in 'testMakeCommandManipulation': " + e.getLocalizedMessage());
+ }
+ assertNotNull(project);
+
+ // Now get the default configuration
+ IManagedBuildInfo info = ManagedBuildManager.getBuildInfo(project);
+ assertNotNull(info);
+ IManagedProject managedProj = info.getManagedProject();
+ assertNotNull(managedProj);
+ IConfiguration defaultConfig = info.getDefaultConfiguration();
+ assertNotNull(defaultConfig);
+
+ // Does it have a default build command
+ assertFalse(defaultConfig.hasOverriddenBuildCommand());
+ assertEquals(oldMakeCmd, defaultConfig.getBuildCommand());
+
+ // Change it
+ defaultConfig.setBuildCommand(newMakeCmd);
+ assertEquals(newMakeCmd, defaultConfig.getBuildCommand());
+ assertTrue(defaultConfig.hasOverriddenBuildCommand());
+
+ // Reset it
+ defaultConfig.setBuildCommand(null);
+ assertFalse(defaultConfig.hasOverriddenBuildCommand());
+ assertEquals(oldMakeCmd, defaultConfig.getBuildCommand());
+
+ ManagedBuildManager.saveBuildInfo(project, false);
+ }
+
+ /**
+ * The purpose of this test is to exercise the build path info interface.
+ * To get to that point, a new project/config has to be created in the test
+ * project and the default configuration changed.
+ */
+ public void testScannerInfoInterface() {
+ // Open the test project
+ IProject project = null;
+ try {
+ project = createProject(projectName);
+ IProjectDescription description = project.getDescription();
+ // Make sure it has a managed nature
+ if (description != null) {
+ assertTrue(description.hasNature(ManagedCProjectNature.MNG_NATURE_ID));
+ }
+ } catch (CoreException e) {
+ fail("Failed to open project in 'testScannerInfoInterface': " + e.getLocalizedMessage());
+ }
+
+ //These are the expected path settings
+ IPath buildCWD = project.getLocation().append("Sub Config");
+ final String[] expectedPaths;
+ if (new Path("C:\\home\\tester/include").isAbsolute()) {
+ // Windows
+ expectedPaths = new String[] { toOSLocation("/usr/include"), toOSLocation("/opt/gnome/include"),
+ toOSLocation("C:\\home\\tester/include"),
+ // relative paths from MBS will make 3 entries
+ project.getLocation().append("includes").toOSString(), buildCWD.append("includes").toOSString(),
+ toOSString("includes"), "/usr/gnu/include", // Not converted to OS string due to being flagged as ICSettingEntry.RESOLVED
+ };
+ } else {
+ // Unix
+ expectedPaths = new String[] { toOSLocation("/usr/include"), toOSLocation("/opt/gnome/include"),
+ // on unix "C:\\home\\tester/include" is relative path
+ // looks like nonsense but it this way due to MBS converting entry to keep "Sub Config/C:\\home\\tester/include" in its storage
+ project.getLocation().append("Sub Config/C:\\home\\tester/include").toOSString(),
+ buildCWD.append("Sub Config/C:\\home\\tester/include").toOSString(),
+ toOSString("Sub Config/C:\\home\\tester/include"),
+ // relative paths from MBS will make 3 entries
+ project.getLocation().append("includes").toOSString(), buildCWD.append("includes").toOSString(),
+ toOSString("includes"), "/usr/gnu/include", // Not converted to OS string due to being flagged as ICSettingEntry.RESOLVED
+ };
+ }
+
+ // Create a new managed project based on the sub project type
+ IProjectType projType = ManagedBuildManager.getExtensionProjectType("test.sub");
+ assertNotNull(projType);
+
+ // Create the managed-project for our project
+ IManagedProject newProject = null;
+ try {
+ newProject = ManagedBuildManager.createManagedProject(project, projType);
+ } catch (BuildException e) {
+ fail("Failed creating new project: " + e.getLocalizedMessage());
+ }
+ assertNotNull(newProject);
+ ManagedBuildManager.setNewProjectVersion(project);
+
+ // Copy over the configs
+ IConfiguration[] baseConfigs = projType.getConfigurations();
+ for (int i = 0; i < baseConfigs.length; ++i) {
+ newProject.createConfiguration(baseConfigs[i], baseConfigs[i].getId() + "." + i);
+ }
+
+ // Change the default configuration to the sub config
+ IConfiguration[] configs = newProject.getConfigurations();
+ assertEquals(4, configs.length);
+ IManagedBuildInfo buildInfo = ManagedBuildManager.getBuildInfo(project);
+ buildInfo.setDefaultConfiguration(newProject.getConfiguration(configs[0].getId()));
+ buildInfo.setValid(true);
+ // Save, close, reopen
+ ManagedBuildManager.saveBuildInfo(project, true);
+ ManagedBuildManager.removeBuildInfo(project);
+ try {
+ ResourceHelper.joinIndexerBeforeCleanup(getName());
+ project.close(null);
+ } catch (CoreException e) {
+ fail("Failed on project close: " + e.getLocalizedMessage());
+ }
+ try {
+ project.open(null);
+ } catch (CoreException e) {
+ fail("Failed on project open: " + e.getLocalizedMessage());
+ }
+ buildInfo = ManagedBuildManager.getBuildInfo(project);
+
+ // Use the plugin mechanism to discover the supplier of the path information
+ IExtensionPoint extensionPoint = Platform.getExtensionRegistry()
+ .getExtensionPoint(CCorePlugin.PLUGIN_ID + ".ScannerInfoProvider");
+ if (extensionPoint == null) {
+ fail("Failed to retrieve the extension point ScannerInfoProvider.");
+ }
+
+ // Find the first IScannerInfoProvider that supplies build info for the project
+ IScannerInfoProvider provider = CCorePlugin.getDefault().getScannerInfoProvider(project);
+ assertNotNull(provider);
+
+ // Now subscribe (note that the method will be called after a change
+ provider.subscribe(project, new IScannerInfoChangeListener() {
+ @Override
+ public void changeNotification(IResource project, IScannerInfo info) {
+ // Test the symbols: expect "BUILTIN" from the manifest, and "DEBUG" and "GNOME=ME"
+ // from the overidden settings
+ Map<String, String> definedSymbols = info.getDefinedSymbols();
+ assertTrue(definedSymbols.containsKey("BUILTIN"));
+ assertTrue(definedSymbols.containsKey("DEBUG"));
+ assertTrue(definedSymbols.containsKey("GNOME"));
+ assertTrue(definedSymbols.containsValue("ME"));
+ assertEquals(definedSymbols.get("BUILTIN"), "");
+ assertEquals(definedSymbols.get("DEBUG"), "");
+ assertEquals(definedSymbols.get("GNOME"), "ME");
+ // Test the includes path
+ String[] actualPaths = info.getIncludePaths();
+ BuildSystemTestHelper.checkDiff(expectedPaths, actualPaths);
+ }
+ });
+
+ // Check the build information before we change it
+ IScannerInfo currentSettings = provider.getScannerInformation(project);
+
+ Map<String, String> currentSymbols = currentSettings.getDefinedSymbols();
+ // It should simply contain the built-in
+ assertTrue(currentSymbols.containsKey("BUILTIN"));
+ assertEquals(currentSymbols.get("BUILTIN"), "");
+
+ String[] currentPaths = currentSettings.getIncludePaths();
+ BuildSystemTestHelper.checkDiff(expectedPaths, currentPaths);
+
+ // Add some defined symbols programmatically
+ String[] expectedSymbols = { "DEBUG", "GNOME = ME " };
+ IConfiguration defaultConfig = buildInfo.getDefaultConfiguration();
+ ITool[] tools = defaultConfig.getTools();
+ ITool subTool = null;
+ for (int i = 0; i < tools.length; i++) {
+ ITool tool = tools[i];
+ if ("tool.sub".equalsIgnoreCase(tool.getSuperClass().getId())) {
+ subTool = tool;
+ break;
+ }
+ }
+ assertNotNull(subTool);
+ IOption symbolOpt = null;
+ IOption[] opts = subTool.getOptions();
+ for (int i = 0; i < opts.length; i++) {
+ IOption option = opts[i];
+ try {
+ if (option.getValueType() == IOption.PREPROCESSOR_SYMBOLS) {
+ symbolOpt = option;
+ break;
+ }
+ } catch (BuildException e) {
+ fail("Failed getting option value-type: " + e.getLocalizedMessage());
+ }
+ }
+ assertNotNull(symbolOpt);
+ IManagedBuildInfo info = ManagedBuildManager.getBuildInfo(project);
+ assertFalse(info.isDirty());
+ ManagedBuildManager.setOption(defaultConfig, subTool, symbolOpt, expectedSymbols);
+ assertTrue(info.isDirty());
+ info.setDirty(false);
+ assertFalse(info.isDirty());
+ }
+
+ /**
+ * Create a new configuration based on one defined in the plugin file.
+ * Overrides all of the configuration settings. Saves, closes, and reopens
+ * the project. Then calls a method to check the overridden options.
+ *
+ * Tests creating a new configuration.
+ * Tests setting options.
+ * Tests persisting overridden options between project sessions.
+ *
+ */
+ public void testConfigurations() throws CoreException, BuildException {
+ final String rootName = "Root Config";
+ final String overrideName = "Root Override Config";
+ final String completeOverrideName = "Complete Override Config";
+ final String toolCmd = "doIt";
+ final String newCmd = "never";
+
+ // Open the test project
+ IProject project = createProject(projectName);
+ IProjectDescription description = project.getDescription();
+ // Make sure it has a managed nature
+ if (description != null) {
+ assertTrue(description.hasNature(ManagedCProjectNature.MNG_NATURE_ID));
+ }
+
+ // Make sure there is a ManagedProject with 3 configs
+ IManagedBuildInfo info = ManagedBuildManager.getBuildInfo(project);
+ IManagedProject managedProj = info.getManagedProject();
+ IConfiguration[] definedConfigs = managedProj.getConfigurations();
+ assertEquals(3, definedConfigs.length);
+ IConfiguration baseConfig = definedConfigs[0];
+ assertEquals(definedConfigs[0].getName(), rootName);
+ assertEquals(definedConfigs[1].getName(), overrideName);
+ assertEquals(definedConfigs[2].getName(), completeOverrideName);
+
+ // Create a new configuration and test the rename function
+ IConfiguration newConfig = managedProj.createConfigurationClone(baseConfig, testConfigId);
+ assertEquals(4, managedProj.getConfigurations().length);
+ newConfig.setName(testConfigName);
+ assertEquals(newConfig.getId(), testConfigId);
+ assertEquals(newConfig.getName(), testConfigName);
+
+ // There is only one tool
+ ITool[] definedTools = newConfig.getTools();
+ assertEquals(1, definedTools.length);
+ ITool rootTool = definedTools[0];
+
+ // Test changing its command
+ assertEquals(rootTool.getToolCommand(), toolCmd);
+ newConfig.setToolCommand(rootTool, newCmd);
+ assertEquals(rootTool.getToolCommand(), newCmd);
+
+ // Override options in the new configuration
+ IOptionCategory topCategory = rootTool.getTopOptionCategory();
+ assertEquals("Root Tool", topCategory.getName());
+ Object[][] options = topCategory.getOptions(newConfig);
+ int i;
+ for (i = 0; i < options.length; i++)
+ if (options[i][0] == null)
+ break;
+ assertEquals(2, i);
+ ITool tool = (ITool) options[0][0];
+ IOption option = (IOption) options[0][1];
+ ManagedBuildManager.setOption(newConfig, tool, option, listVal);
+ option = (IOption) options[1][1];
+ ManagedBuildManager.setOption(newConfig, tool, option, boolVal);
+
+ IOptionCategory[] categories = topCategory.getChildCategories();
+ assertEquals(1, categories.length);
+ options = categories[0].getOptions(newConfig);
+ for (i = 0; i < options.length; i++)
+ if (options[i][0] == null)
+ break;
+ assertEquals(4, i);
+ tool = (ITool) options[0][0];
+ option = (IOption) options[0][1];
+ ManagedBuildManager.setOption(newConfig, tool, option, stringVal);
+ option = (IOption) options[1][1];
+ ManagedBuildManager.setOption(newConfig, tool, option, anotherStringVal);
+ option = (IOption) options[2][1];
+ ManagedBuildManager.setOption(newConfig, tool, option, enumVal);
+ option = (IOption) options[3][1];
+ ManagedBuildManager.setOption(newConfig, tool, option, "False");
+
+ // Save, close, reopen and test again
+ ManagedBuildManager.saveBuildInfo(project, false);
+ ManagedBuildManager.removeBuildInfo(project);
+ ResourceHelper.joinIndexerBeforeCleanup(getName());
+ project.close(null);
+ project.open(null);
+
+ // Test the values in the new configuration
+ checkOptionReferences(project);
+
+ // Now delete the new configuration and test the managed project
+ info = ManagedBuildManager.getBuildInfo(project);
+ managedProj = info.getManagedProject();
+ definedConfigs = managedProj.getConfigurations();
+ assertEquals(4, definedConfigs.length);
+ managedProj.removeConfiguration(testConfigId);
+ definedConfigs = managedProj.getConfigurations();
+ assertEquals(3, definedConfigs.length);
+ assertEquals(definedConfigs[0].getName(), rootName);
+ assertEquals(definedConfigs[1].getName(), overrideName);
+ ManagedBuildManager.saveBuildInfo(project, false);
+ }
+
+ public void testConfigurationReset() {
+ // Open the test project
+ IProject project = null;
+ try {
+ project = createProject(projectName);
+ IProjectDescription description = project.getDescription();
+ // Make sure it has a managed nature
+ if (description != null) {
+ assertTrue(description.hasNature(ManagedCProjectNature.MNG_NATURE_ID));
+ }
+ } catch (CoreException e) {
+ fail("Failed to open project: " + e.getLocalizedMessage());
+ }
+
+ // Get the default configuration
+ IManagedBuildInfo info = ManagedBuildManager.getBuildInfo(project);
+ assertNotNull(info);
+ IManagedProject managedProj = info.getManagedProject();
+ assertNotNull(managedProj);
+ IConfiguration defaultConfig = info.getDefaultConfiguration();
+ assertNotNull(defaultConfig);
+
+ // See if it still contains the overridden values (see testProjectCreation())
+ try {
+ checkRootManagedProject(managedProj, "z");
+ } catch (BuildException e1) {
+ fail("Overridden root managed project check failed: " + e1.getLocalizedMessage());
+ }
+
+ // Reset the config and retest
+ ManagedBuildManager.resetConfiguration(project, defaultConfig);
+ ManagedBuildManager.saveBuildInfo(project, false);
+ try {
+ checkRootManagedProject(managedProj, "x");
+ } catch (BuildException e2) {
+ fail("Reset root managed project check failed: " + e2.getLocalizedMessage());
+ }
+ }
+
+ /**
+ * @throws BuildException
+ */
+ public void testProjectCreation() throws BuildException {
+ // Create new project
+ IProject project = null;
+ try {
+ project = createProject(projectName);
+ // Now associate the builder with the project
+ ManagedBuildTestHelper.addManagedBuildNature(project);
+ IProjectDescription description = project.getDescription();
+ // Make sure it has a managed nature
+ if (description != null) {
+ assertTrue(description.hasNature(ManagedCProjectNature.MNG_NATURE_ID));
+ }
+
+ } catch (CoreException e) {
+ fail("Test failed on project creation: " + e.getLocalizedMessage());
+ }
+
+ // Find the base project type definition
+ IProjectType projType = ManagedBuildManager.getExtensionProjectType("test.root");
+ assertNotNull(projType);
+
+ // Create the managed-project for our project that builds a dummy executable
+ IManagedProject newProject = ManagedBuildManager.createManagedProject(project, projType);
+ assertEquals(newProject.getName(), projType.getName());
+ assertFalse(newProject.equals(projType));
+ ManagedBuildManager.setNewProjectVersion(project);
+
+ // Copy over the configs
+ IConfiguration defaultConfig = null;
+ IConfiguration[] configs = projType.getConfigurations();
+ for (int i = 0; i < configs.length; ++i) {
+ // Make the first configuration the default
+ if (i == 0) {
+ defaultConfig = newProject.createConfiguration(configs[i], projType.getId() + "." + i);
+ } else {
+ newProject.createConfiguration(configs[i], projType.getId() + "." + i);
+ }
+ }
+ ManagedBuildManager.setDefaultConfiguration(project, defaultConfig);
+
+ String buildArtifactName = projectName;
+ defaultConfig.setArtifactName(buildArtifactName);
+ defaultConfig.setArtifactExtension(newExt);
+
+ ManagedBuildManager.getBuildInfo(project).setValid(true);
+
+ // Initialize the path entry container
+ IStatus initResult = ManagedBuildManager.initBuildInfoContainer(project);
+ if (initResult.getCode() != IStatus.OK) {
+ fail("Initializing build information failed for: " + project.getName() + " because: "
+ + initResult.getMessage());
+ }
+
+ // Now test the results out
+ checkRootManagedProject(newProject, "x");
+
+ // Override the "String Option in Category" option value
+ configs = newProject.getConfigurations();
+ ITool[] tools = configs[0].getTools();
+ IOptionCategory topCategory = tools[0].getTopOptionCategory();
+ IOptionCategory[] categories = topCategory.getChildCategories();
+ Object[][] options = categories[0].getOptions(configs[0]);
+ ITool tool = (ITool) options[0][0];
+ IOption option = (IOption) options[0][1];
+ configs[0].setOption(tool, option, "z");
+ options = categories[0].getOptions((IConfiguration) null);
+ tool = (ITool) options[0][0];
+ option = (IOption) options[0][1];
+ assertEquals("x", option.getStringValue());
+ options = categories[0].getOptions(configs[0]);
+ tool = (ITool) options[0][0];
+ option = (IOption) options[0][1];
+ assertEquals("z", option.getStringValue());
+
+ // Save, close, reopen and test again
+ ManagedBuildManager.saveBuildInfo(project, true);
+ ManagedBuildManager.removeBuildInfo(project);
+ try {
+ ResourceHelper.joinIndexerBeforeCleanup(getName());
+ project.close(null);
+ } catch (CoreException e) {
+ fail("Failed on project close: " + e.getLocalizedMessage());
+ }
+ try {
+ project.open(null);
+ } catch (CoreException e) {
+ fail("Failed on project open: " + e.getLocalizedMessage());
+ }
+
+ // Test that the default config was remembered
+ IManagedBuildInfo info = ManagedBuildManager.getBuildInfo(project);
+ assertEquals(defaultConfig.getId(), info.getDefaultConfiguration().getId());
+
+ // Check the rest of the default information
+ checkRootManagedProject(newProject, "z");
+
+ // Now test the information the makefile builder needs
+ checkBuildTestSettings(info);
+ ManagedBuildManager.removeBuildInfo(project);
+ }
+
+ /**
+ * Tests that bugzilla 44159 has been addressed. After a project was renamed, the
+ * build information mistakenly referred to the old project as its owner. This
+ * caused a number of searches on the information to fail. In this bug, it was the
+ * list of tools that could not be determined. In other cases, the information
+ * retrieval caused NPEs because the old owner no longer existed.
+ */
+ public void testProjectRename() {
+ // Open the test project
+ IProject project = null;
+ try {
+ project = createProject(projectName);
+ IProjectDescription description = project.getDescription();
+ // Make sure it has a managed nature
+ if (description != null) {
+ assertTrue(description.hasNature(ManagedCProjectNature.MNG_NATURE_ID));
+ }
+ } catch (CoreException e) {
+ fail("Failed to open project: " + e.getLocalizedMessage());
+ }
+
+ // Rename the project
+ IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot();
+ IResource newResource = workspaceRoot.findMember(projectRename);
+ if (newResource != null) {
+ try {
+ newResource.delete(IResource.KEEP_HISTORY, new NullProgressMonitor());
+ } catch (CoreException e) {
+ fail("Failed to delete old project " + projectRename + ": " + e.getLocalizedMessage());
+ }
+ }
+ IProjectDescription description = null;
+ try {
+ description = project.getDescription();
+ } catch (CoreException e) {
+ fail("Failed to find project descriptor for " + projectName + ": " + e.getLocalizedMessage());
+ }
+ description.setName(projectRename);
+ try {
+ project.move(description, IResource.FORCE | IResource.SHALLOW, new NullProgressMonitor());
+ } catch (CoreException e) {
+ fail("Failed to rename project: " + e.getLocalizedMessage());
+ }
+ try {
+ project = createProject(projectRename);
+ description = project.getDescription();
+ // Make sure it has a managed nature
+ if (description != null) {
+ assertTrue(description.hasNature(ManagedCProjectNature.MNG_NATURE_ID));
+ }
+ } catch (CoreException e) {
+ fail("Failed to open renamed project: " + e.getLocalizedMessage());
+ }
+
+ // By now the project should have 3 configs
+ IManagedBuildInfo info = ManagedBuildManager.getBuildInfo(project);
+ IManagedProject managedProj = info.getManagedProject();
+ IConfiguration[] definedConfigs = managedProj.getConfigurations();
+ assertEquals(4, definedConfigs.length);
+ IConfiguration baseConfig = definedConfigs[1];
+
+ // There is only one tool
+ ITool[] definedTools = baseConfig.getTools();
+ assertEquals(1, definedTools.length);
+ ITool rootTool = definedTools[0];
+
+ // Get the options (2) in top category and (4) in its child
+ IOptionCategory topCategory = rootTool.getTopOptionCategory();
+ assertEquals("Root Tool", topCategory.getName());
+ Object[][] options = topCategory.getOptions(baseConfig);
+ int i;
+ for (i = 0; i < options.length; i++)
+ if (options[i][0] == null)
+ break;
+ assertEquals(2, i);
+ IOptionCategory[] categories = topCategory.getChildCategories();
+ assertEquals(1, categories.length);
+ options = categories[0].getOptions(baseConfig);
+ for (i = 0; i < options.length; i++)
+ if (options[i][0] == null)
+ break;
+ assertEquals(4, i);
+
+ // Set the name back
+ newResource = workspaceRoot.findMember(projectName);
+ if (newResource != null) {
+ try {
+ newResource.delete(IResource.KEEP_HISTORY, new NullProgressMonitor());
+ } catch (CoreException e) {
+ fail("Failed to delete old project " + projectName + ": " + e.getLocalizedMessage());
+ }
+ }
+ try {
+ description = project.getDescription();
+ } catch (CoreException e) {
+ fail("Failed to find project descriptor for " + projectRename + ": " + e.getLocalizedMessage());
+ }
+ description.setName(projectName);
+ try {
+ project.move(description, IResource.FORCE | IResource.SHALLOW, new NullProgressMonitor());
+ } catch (CoreException e) {
+ fail("Failed to re-rename project: " + e.getLocalizedMessage());
+ }
+ try {
+ project = createProject(projectName);
+ description = project.getDescription();
+ // Make sure it has a managed nature
+ if (description != null) {
+ assertTrue(description.hasNature(ManagedCProjectNature.MNG_NATURE_ID));
+ }
+ } catch (CoreException e) {
+ fail("Failed to open re-renamed project: " + e.getLocalizedMessage());
+ }
+
+ // Do it all again
+ info = ManagedBuildManager.getBuildInfo(project);
+ managedProj = info.getManagedProject();
+ definedConfigs = managedProj.getConfigurations();
+ assertEquals(4, definedConfigs.length);
+ baseConfig = definedConfigs[1];
+ definedTools = baseConfig.getTools();
+ assertEquals(1, definedTools.length);
+ rootTool = definedTools[0];
+ topCategory = rootTool.getTopOptionCategory();
+ assertEquals("Root Tool", topCategory.getName());
+ options = topCategory.getOptions(baseConfig);
+ for (i = 0; i < options.length; i++)
+ if (options[i][0] == null)
+ break;
+ assertEquals(2, i);
+ categories = topCategory.getChildCategories();
+ assertEquals(1, categories.length);
+ options = categories[0].getOptions(baseConfig);
+ for (i = 0; i < options.length; i++)
+ if (options[i][0] == null)
+ break;
+ assertEquals(4, i);
+ }
+
+ /**
+ * Tests the tool settings through the interface the makefile generator
+ * uses.
+ *
+ * @param project
+ */
+ private void checkBuildTestSettings(IManagedBuildInfo info) {
+ String ext1 = "foo";
+ String ext2 = "bar";
+ String badExt = "cpp";
+ String expectedOutput = "toor";
+ String expectedCmd = "doIt";
+
+ assertNotNull(info);
+ assertEquals(info.getBuildArtifactName(), projectName);
+
+ // There should be a default configuration defined for the project
+ IManagedProject managedProj = info.getManagedProject();
+ assertNotNull(managedProj);
+ IConfiguration buildConfig = info.getDefaultConfiguration();
+ assertNotNull(buildConfig);
+
+ // Check that tool handles resources with extensions foo and bar by building a baz
+ assertEquals(info.getOutputExtension(ext1), expectedOutput);
+ assertEquals(info.getOutputExtension(ext2), expectedOutput);
+
+ // Check that it ignores others based on filename extensions
+ assertNull(info.getOutputExtension(badExt));
+
+ // Now see what the tool command line invocation is for foo and bar
+ assertEquals(info.getToolForSource(ext1), expectedCmd);
+ assertEquals(info.getToolForSource(ext2), expectedCmd);
+ // Make sure that there is no tool to build files of type foo and bar
+ assertNull(info.getToolForConfiguration(ext1));
+ assertNull(info.getToolForConfiguration(ext2));
+
+ // There is no tool that builds toor
+ assertNull(info.getToolForSource(expectedOutput));
+ // but there is one that produces it
+ assertEquals(info.getToolForConfiguration(expectedOutput), expectedCmd);
+
+ // Now check the build flags
+ assertEquals(info.getFlagsForSource(ext1), "-La -Lb z -e1 -nob");
+ assertEquals(info.getFlagsForSource(ext1), info.getFlagsForSource(ext2));
+
+ }
+
+ /**
+ * Tests that overridden options are properly read into build model.
+ * Test that option values that are not overridden remain the same.
+ *
+ * @param project The project to get build model information for.
+ * @throws BuildException
+ */
+ private void checkOptionReferences(IProject project) throws BuildException {
+ // Get the configs
+ IManagedBuildInfo info = ManagedBuildManager.getBuildInfo(project);
+ IManagedProject managedProj = info.getManagedProject();
+ IConfiguration[] definedConfigs = managedProj.getConfigurations();
+ assertEquals(4, definedConfigs.length);
+ IConfiguration newConfig = managedProj.getConfiguration(testConfigId);
+ assertNotNull(newConfig);
+
+ // Now get the tool options and make sure the values are correct
+ ITool[] definedTools = newConfig.getTools();
+ assertEquals(1, definedTools.length);
+ ITool rootTool = definedTools[0];
+
+ // Check that the options in the new config contain overridden values
+ IOption[] rootOptions = rootTool.getOptions();
+ assertEquals(6, rootOptions.length);
+ // First is the new list
+ assertEquals("List Option in Top", rootOptions[0].getName());
+ assertEquals(IOption.STRING_LIST, rootOptions[0].getValueType());
+ String[] list = rootOptions[0].getStringListValue();
+ assertEquals(3, list.length);
+ assertTrue(Arrays.equals(listVal, list));
+ assertEquals(rootOptions[0].getCommand(), "-L");
+ // Next option is a boolean in top
+ assertEquals("Boolean Option in Top", rootOptions[1].getName());
+ assertEquals(IOption.BOOLEAN, rootOptions[1].getValueType());
+ assertEquals(boolVal, rootOptions[1].getBooleanValue());
+ assertEquals("-b", rootOptions[1].getCommand());
+ // Next option is a string in category
+ assertEquals("String Option in Category", rootOptions[2].getName());
+ assertEquals(IOption.STRING, rootOptions[2].getValueType());
+ assertEquals(stringVal, rootOptions[2].getStringValue());
+ // Next option is a another string in category
+ assertEquals("Another String Option in Category", rootOptions[3].getName());
+ assertEquals(IOption.STRING, rootOptions[3].getValueType());
+ assertEquals(anotherStringVal, rootOptions[3].getStringValue());
+ assertEquals("-str", rootOptions[3].getCommand());
+ // Next option is an enumerated in category
+ assertEquals("Enumerated Option in Category", rootOptions[4].getName());
+ assertEquals(IOption.ENUMERATED, rootOptions[4].getValueType());
+ String selEnum = rootOptions[4].getSelectedEnum();
+ assertEquals(enumVal, selEnum);
+ String[] enums = rootOptions[4].getApplicableValues();
+ assertEquals(2, enums.length);
+ assertEquals("Default Enum", enums[0]);
+ assertEquals("Another Enum", enums[1]);
+ assertEquals("-e1", rootOptions[4].getEnumCommand(enums[0]));
+ assertEquals("-e2", rootOptions[4].getEnumCommand(enums[1]));
+ assertEquals("-e2", rootOptions[4].getEnumCommand(selEnum));
+ // Final option is a boolean in Category
+ assertEquals("Boolean Option in Category", rootOptions[5].getName());
+ assertEquals(IOption.BOOLEAN, rootOptions[5].getValueType());
+ assertEquals(false, rootOptions[5].getBooleanValue());
+ assertEquals("-nob", rootOptions[5].getCommandFalse());
+ }
+
+ /*
+ * Do a full sanity check on the root project type.
+ */
+ private void checkRootProjectType(IProjectType type) throws BuildException {
+ // Project stuff
+ String expectedCleanCmd = "del /myworld";
+ String expectedParserId = "org.eclipse.cdt.core.PE64";
+ String[] expectedOSList = { "win32" };
+ String[] expectedArchList = { "all" };
+ assertTrue(type.isTestProjectType());
+ IConfiguration[] configs = type.getConfigurations();
+ if (configs[0].getArtifactName().equals("ManagedBuildTest")) {
+ assertEquals(configs[0].getArtifactExtension(), newExt);
+ } else {
+ assertEquals(configs[0].getArtifactExtension(), rootExt);
+ }
+ assertEquals(expectedCleanCmd, configs[0].getCleanCommand());
+ assertEquals("make", configs[0].getBuildCommand());
+ IToolChain toolChain = configs[0].getToolChain();
+ ITargetPlatform targetPlatform = toolChain.getTargetPlatform();
+ String[] binaryParsers = targetPlatform.getBinaryParserList();
+ assertEquals(binaryParsers.length, 1);
+ assertEquals(binaryParsers[0], expectedParserId);
+ assertTrue(Arrays.equals(expectedOSList, toolChain.getOSList()));
+ assertTrue(Arrays.equals(expectedArchList, toolChain.getArchList()));
+ // This configuration defines no errors parsers.
+ assertNull(configs[0].getErrorParserIds());
+ assertTrue(Arrays.equals(configs[0].getErrorParserList(), CCorePlugin.getDefault().getAllErrorParsersIDs()));
+
+ // Tools
+ ITool[] tools = toolChain.getTools();
+ // Root Tool
+ ITool rootTool = tools[0];
+ assertEquals("Root Tool", rootTool.getName());
+ // 6 Options are defined in the root tool
+ IOption[] options = rootTool.getOptions();
+ assertEquals(6, options.length);
+ // First option is a 3-element list with 1 built-in
+ assertEquals("List Option in Top", options[0].getName());
+ assertEquals(IOption.STRING_LIST, options[0].getValueType());
+ String[] valueList = options[0].getStringListValue();
+ assertEquals(2, valueList.length);
+ assertEquals("a", valueList[0]);
+ assertEquals("b", valueList[1]);
+ String[] builtInList = options[0].getBuiltIns();
+ assertEquals(1, builtInList.length);
+ assertEquals("c", builtInList[0]);
+ assertEquals(options[0].getCommand(), "-L");
+ // Next option is a boolean in top
+ assertEquals("Boolean Option in Top", options[1].getName());
+ assertEquals(IOption.BOOLEAN, options[1].getValueType());
+ assertEquals(false, options[1].getBooleanValue());
+ assertEquals("-b", options[1].getCommand());
+ // Next option is a string category
+ assertEquals("String Option in Category", options[2].getName());
+ assertEquals(IOption.STRING, options[2].getValueType());
+ assertEquals("x", options[2].getStringValue());
+ // Next option is another string category
+ assertEquals("Another String Option in Category", options[3].getName());
+ assertEquals(IOption.STRING, options[3].getValueType());
+ assertEquals("", options[3].getStringValue());
+ assertEquals("-str", options[3].getCommand());
+ // Next option is an enumerated
+ assertEquals("Enumerated Option in Category", options[4].getName());
+ assertEquals(IOption.ENUMERATED, options[4].getValueType());
+ // Post-2.0 enums store the ID, not the string value
+ assertEquals("default.enum.option", options[4].getSelectedEnum());
+ assertEquals("-e1", options[4].getEnumCommand("default.enum.option"));
+ // Need this methof to populate the UI selection widget
+ valueList = options[4].getApplicableValues();
+ assertEquals(2, valueList.length);
+ assertEquals("Default Enum", valueList[0]);
+ assertEquals("Another Enum", valueList[1]);
+ // Test compatability with 1.2 scheme of getting the command from the name
+ assertEquals("-e1", options[4].getEnumCommand(valueList[0]));
+ assertEquals("-e2", options[4].getEnumCommand(valueList[1]));
+ // Final option is another boolean
+ assertEquals("Boolean Option in Category", options[5].getName());
+ assertEquals(IOption.BOOLEAN, options[5].getValueType());
+ assertEquals(false, options[5].getBooleanValue());
+ assertEquals("", options[5].getCommand());
+ assertEquals("-nob", options[5].getCommandFalse());
+
+ // Option Categories
+ IOptionCategory topCategory = rootTool.getTopOptionCategory();
+ assertEquals("Root Tool", topCategory.getName());
+ Object[][] catoptions = topCategory.getOptions(configs[0]);
+ int i;
+ for (i = 0; i < catoptions.length; i++)
+ if (catoptions[i][0] == null)
+ break;
+ assertEquals(2, i);
+ assertEquals("List Option in Top", ((IOption) catoptions[0][1]).getName());
+ assertEquals("Boolean Option in Top", ((IOption) catoptions[1][1]).getName());
+ IOptionCategory[] categories = topCategory.getChildCategories();
+ assertEquals(1, categories.length);
+ assertEquals("Category", categories[0].getName());
+ catoptions = categories[0].getOptions(configs[0]);
+ for (i = 0; i < catoptions.length; i++)
+ if (catoptions[i][0] == null)
+ break;
+ assertEquals(4, i);
+ assertEquals("String Option in Category", ((IOption) catoptions[0][1]).getName());
+ assertEquals("Another String Option in Category", ((IOption) catoptions[1][1]).getName());
+ assertEquals("Enumerated Option in Category", ((IOption) catoptions[2][1]).getName());
+ assertEquals("Boolean Option in Category", ((IOption) catoptions[3][1]).getName());
+
+ // There should be 3 defined configs
+ configs = type.getConfigurations();
+ assertEquals(3, configs.length);
+
+ // Root Config
+ IConfiguration rootConfig = configs[0];
+ assertEquals("Root Config", rootConfig.getName());
+
+ // Tool elements
+ tools = rootConfig.getTools();
+ assertEquals(1, tools.length);
+ assertEquals("Root Tool", tools[0].getName());
+ assertEquals("-r", tools[0].getOutputFlag());
+ assertTrue(tools[0].buildsFileType("foo"));
+ assertTrue(tools[0].buildsFileType("bar"));
+ assertTrue(tools[0].producesFileType("toor"));
+ assertEquals("doIt", tools[0].getToolCommand());
+ assertEquals("", tools[0].getOutputPrefix());
+ // The root tool defines one valid header file extension
+ assertTrue(rootTool.isHeaderFile("baz"));
+ assertTrue(tools[0].isHeaderFile("baz"));
+ assertEquals(ITool.FILTER_C, rootTool.getNatureFilter());
+
+ // Partially Overriden Configuration
+ assertEquals("Root Override Config", configs[1].getName());
+ tools = configs[1].getTools();
+ assertEquals(1, tools.length);
+ assertEquals("Root Tool", tools[0].getName());
+ topCategory = tools[0].getTopOptionCategory();
+ catoptions = topCategory.getOptions(configs[1]);
+ for (i = 0; i < catoptions.length; i++)
+ if (catoptions[i][0] == null)
+ break;
+ assertEquals(2, i);
+ assertEquals("List Option in Top", ((IOption) catoptions[0][1]).getName());
+ valueList = ((IOption) catoptions[0][1]).getStringListValue();
+ assertEquals("a", valueList[0]);
+ assertEquals("b", valueList[1]);
+ assertEquals("Boolean Option in Top", ((IOption) catoptions[1][1]).getName());
+ assertEquals(true, ((IOption) catoptions[1][1]).getBooleanValue());
+ assertEquals("-b", ((IOption) catoptions[1][1]).getCommand());
+ categories = topCategory.getChildCategories();
+ catoptions = categories[0].getOptions(configs[1]);
+ for (i = 0; i < catoptions.length; i++)
+ if (catoptions[i][0] == null)
+ break;
+ assertEquals(4, i);
+ assertEquals("String Option in Category", ((IOption) catoptions[0][1]).getName());
+ assertEquals("y", ((IOption) catoptions[0][1]).getStringValue());
+ assertEquals("Another String Option in Category", ((IOption) catoptions[1][1]).getName());
+ assertEquals("", ((IOption) catoptions[1][1]).getStringValue());
+ assertEquals("Enumerated Option in Category", ((IOption) catoptions[2][1]).getName());
+ valueList = ((IOption) catoptions[2][1]).getApplicableValues();
+ assertEquals(2, valueList.length);
+ assertEquals("Default Enum", valueList[0]);
+ assertEquals("Another Enum", valueList[1]);
+ assertEquals("-e1", ((IOption) catoptions[2][1]).getEnumCommand(valueList[0]));
+ assertEquals("-e2", ((IOption) catoptions[2][1]).getEnumCommand(valueList[1]));
+ assertEquals(1, tools.length);
+ assertEquals("Boolean Option in Category", ((IOption) catoptions[3][1]).getName());
+ assertEquals(false, ((IOption) catoptions[3][1]).getBooleanValue());
+ assertEquals("", ((IOption) catoptions[3][1]).getCommand());
+ assertEquals("-nob", ((IOption) catoptions[3][1]).getCommandFalse());
+ assertEquals(1, tools.length);
+ ITool tool = tools[0];
+ assertNotNull(tool);
+ assertEquals("Root Tool", tool.getName());
+ assertEquals("-r", tool.getOutputFlag());
+ assertTrue(tool.buildsFileType("foo"));
+ assertTrue(tool.buildsFileType("bar"));
+ assertTrue(tool.producesFileType("toor"));
+ assertTrue(tool.isHeaderFile("baz"));
+ assertEquals("doIt", tool.getToolCommand());
+ assertEquals("-La -Lb -b y -e1 -nob", tool.getToolFlags());
+
+ // Completely Overridden configuration
+ assertEquals("Complete Override Config", configs[2].getName());
+ tools = configs[2].getTools();
+ assertEquals(1, tools.length);
+ assertEquals("Root Tool", tools[0].getName());
+ topCategory = tools[0].getTopOptionCategory();
+ catoptions = topCategory.getOptions(configs[2]);
+ for (i = 0; i < catoptions.length; i++)
+ if (catoptions[i][0] == null)
+ break;
+ assertEquals(2, i);
+ // Check that there's an string list with totally new values
+ assertEquals("List Option in Top", ((IOption) catoptions[0][1]).getName());
+ assertEquals(IOption.STRING_LIST, ((IOption) catoptions[0][1]).getValueType());
+ valueList = ((IOption) catoptions[0][1]).getStringListValue();
+ assertTrue(valueList.length == 3);
+ assertEquals("d", valueList[0]);
+ assertEquals("e", valueList[1]);
+ assertEquals("f", valueList[2]);
+ assertEquals("-L", ((IOption) catoptions[0][1]).getCommand());
+ // and a true boolean (commands should not have changed)
+ assertEquals("Boolean Option in Top", ((IOption) catoptions[1][1]).getName());
+ assertEquals(IOption.BOOLEAN, ((IOption) catoptions[1][1]).getValueType());
+ assertEquals(true, ((IOption) catoptions[1][1]).getBooleanValue());
+ assertEquals("-b", ((IOption) catoptions[1][1]).getCommand());
+ // Check that there's an overridden enumeration and string
+ categories = topCategory.getChildCategories();
+ catoptions = categories[0].getOptions(configs[2]);
+ for (i = 0; i < catoptions.length; i++)
+ if (catoptions[i][0] == null)
+ break;
+ assertEquals(4, i);
+ assertEquals("String Option in Category", ((IOption) catoptions[0][1]).getName());
+ assertEquals(IOption.STRING, ((IOption) catoptions[0][1]).getValueType());
+ assertEquals("overridden", ((IOption) catoptions[0][1]).getStringValue());
+ assertEquals("Another String Option in Category", ((IOption) catoptions[1][1]).getName());
+ assertEquals(IOption.STRING, ((IOption) catoptions[1][1]).getValueType());
+ assertEquals("alsooverridden", ((IOption) catoptions[1][1]).getStringValue());
+ assertEquals("Enumerated Option in Category", ((IOption) catoptions[2][1]).getName());
+ assertEquals(IOption.ENUMERATED, ((IOption) catoptions[2][1]).getValueType());
+ assertEquals("another.enum.option", ((IOption) catoptions[2][1]).getSelectedEnum());
+ assertEquals("Boolean Option in Category", ((IOption) catoptions[3][1]).getName());
+ assertEquals(IOption.BOOLEAN, ((IOption) catoptions[3][1]).getValueType());
+ assertEquals(true, ((IOption) catoptions[3][1]).getBooleanValue());
+ tool = tools[0];
+ assertEquals("-Ld -Le -Lf -b overridden -stralsooverridden -e2", tool.getToolFlags());
+
+ // Make sure that the build manager returns the default makefile generator (not null)
+ assertNotNull(ManagedBuildManager.getBuildfileGenerator(configs[0]));
+ }
+
+ /*
+ * Do a full sanity check on the root managed project.
+ */
+ private void checkRootManagedProject(IManagedProject managedProj, String testValue) throws BuildException {
+ String expectedCleanCmd = "del /myworld";
+ String expectedParserId = "org.eclipse.cdt.core.PE64";
+ String[] expectedOSList = { "win32" };
+ String[] expectedArchList = { "all" };
+ assertTrue(managedProj.getProjectType().isTestProjectType());
+ IConfiguration[] configs = managedProj.getConfigurations();
+ if (configs[0].getArtifactName().equals("ManagedBuildTest")) {
+ assertEquals(configs[0].getArtifactExtension(), newExt);
+ } else {
+ assertEquals(configs[0].getArtifactExtension(), rootExt);
+ }
+ assertEquals(expectedCleanCmd, configs[0].getCleanCommand());
+ assertEquals("make", configs[0].getBuildCommand());
+ IToolChain toolChain = configs[0].getToolChain();
+ ITargetPlatform targetPlatform = toolChain.getTargetPlatform();
+ String[] binaryParsers = targetPlatform.getBinaryParserList();
+ assertEquals(binaryParsers.length, 1);
+ assertEquals(binaryParsers[0], expectedParserId);
+ assertTrue(Arrays.equals(expectedOSList, toolChain.getOSList()));
+ assertTrue(Arrays.equals(expectedArchList, toolChain.getArchList()));
+ // This configuration defines no errors parsers.
+ assertNull(configs[0].getErrorParserIds());
+ assertTrue(Arrays.equals(configs[0].getErrorParserList(), CCorePlugin.getDefault().getAllErrorParsersIDs()));
+
+ // Tools
+ ITool[] tools = configs[0].getTools();
+ // Root Tool
+ ITool rootTool = tools[0];
+ assertEquals("Root Tool", rootTool.getName());
+ // 6 Options are defined in the root tool
+ IOption[] options = rootTool.getOptions();
+ assertEquals(6, options.length);
+ // First option is a 3-element list with 1 built-in
+ assertEquals("List Option in Top", options[0].getName());
+ assertEquals(IOption.STRING_LIST, options[0].getValueType());
+ String[] valueList = options[0].getStringListValue();
+ assertEquals(2, valueList.length);
+ assertEquals("a", valueList[0]);
+ assertEquals("b", valueList[1]);
+ String[] builtInList = options[0].getBuiltIns();
+ assertEquals(1, builtInList.length);
+ assertEquals("c", builtInList[0]);
+ assertEquals(options[0].getCommand(), "-L");
+ // Next option is a boolean in top
+ assertEquals("Boolean Option in Top", options[1].getName());
+ assertEquals(IOption.BOOLEAN, options[1].getValueType());
+ assertEquals(false, options[1].getBooleanValue());
+ assertEquals("-b", options[1].getCommand());
+ // Next option is a string category
+ assertEquals("String Option in Category", options[2].getName());
+ assertEquals(IOption.STRING, options[2].getValueType());
+ assertEquals(testValue, options[2].getStringValue());
+ // Next option is another string category
+ assertEquals("Another String Option in Category", options[3].getName());
+ assertEquals(IOption.STRING, options[3].getValueType());
+ assertEquals("", options[3].getStringValue());
+ assertEquals("-str", options[3].getCommand());
+ // Next option is an enumerated
+ assertEquals("Enumerated Option in Category", options[4].getName());
+ assertEquals(IOption.ENUMERATED, options[4].getValueType());
+ // Post-2.0 enums store the ID, not the string value
+ assertEquals("default.enum.option", options[4].getSelectedEnum());
+ assertEquals("-e1", options[4].getEnumCommand("default.enum.option"));
+ // Need this methof to populate the UI selection widget
+ valueList = options[4].getApplicableValues();
+ assertEquals(2, valueList.length);
+ assertEquals("Default Enum", valueList[0]);
+ assertEquals("Another Enum", valueList[1]);
+ // Test compatability with 1.2 scheme of getting the command from the name
+ assertEquals("-e1", options[4].getEnumCommand(valueList[0]));
+ assertEquals("-e2", options[4].getEnumCommand(valueList[1]));
+ // Final option is another boolean
+ assertEquals("Boolean Option in Category", options[5].getName());
+ assertEquals(IOption.BOOLEAN, options[5].getValueType());
+ assertEquals(false, options[5].getBooleanValue());
+ assertEquals("", options[5].getCommand());
+ assertEquals("-nob", options[5].getCommandFalse());
+
+ // Option Categories
+ IOptionCategory topCategory = rootTool.getTopOptionCategory();
+ assertEquals("Root Tool", topCategory.getName());
+ Object[][] catoptions = topCategory.getOptions(configs[0]);
+ int i;
+ for (i = 0; i < catoptions.length; i++)
+ if (catoptions[i][0] == null)
+ break;
+ assertEquals(2, i);
+ IOption catOption = (IOption) catoptions[0][1];
+ assertEquals("List Option in Top", catOption.getName());
+ catOption = (IOption) catoptions[1][1];
+ assertEquals("Boolean Option in Top", catOption.getName());
+ IOptionCategory[] categories = topCategory.getChildCategories();
+ assertEquals(1, categories.length);
+ assertEquals("Category", categories[0].getName());
+ catoptions = categories[0].getOptions(configs[0]);
+ for (i = 0; i < catoptions.length; i++)
+ if (catoptions[i][0] == null)
+ break;
+ assertEquals(4, i);
+ catOption = (IOption) catoptions[0][1];
+ assertEquals("String Option in Category", catOption.getName());
+ catOption = (IOption) catoptions[1][1];
+ assertEquals("Another String Option in Category", catOption.getName());
+ catOption = (IOption) catoptions[2][1];
+ assertEquals("Enumerated Option in Category", catOption.getName());
+ catOption = (IOption) catoptions[3][1];
+ assertEquals("Boolean Option in Category", catOption.getName());
+
+ // There should be 3 defined configs
+ assertEquals(3, configs.length);
+
+ // Root Config
+ IConfiguration rootConfig = configs[0];
+ assertEquals("Root Config", rootConfig.getName());
+
+ // Tool elements
+ tools = rootConfig.getTools();
+ assertEquals(1, tools.length);
+ assertEquals("Root Tool", tools[0].getName());
+ assertEquals("-r", tools[0].getOutputFlag());
+ assertTrue(tools[0].buildsFileType("foo"));
+ assertTrue(tools[0].buildsFileType("bar"));
+ assertTrue(tools[0].producesFileType("toor"));
+ assertEquals("doIt", tools[0].getToolCommand());
+ assertEquals("", tools[0].getOutputPrefix());
+ // The root tool defines one valid header file extension
+ assertTrue(rootTool.isHeaderFile("baz"));
+ assertTrue(tools[0].isHeaderFile("baz"));
+ assertEquals(ITool.FILTER_C, rootTool.getNatureFilter());
+
+ // Partially Overriden Configuration
+ assertEquals("Root Override Config", configs[1].getName());
+ tools = configs[1].getTools();
+ assertEquals(1, tools.length);
+ assertEquals("Root Tool", tools[0].getName());
+ topCategory = tools[0].getTopOptionCategory();
+ catoptions = topCategory.getOptions(configs[1]);
+ for (i = 0; i < catoptions.length; i++)
+ if (catoptions[i][0] == null)
+ break;
+ assertEquals(2, i);
+ catOption = (IOption) catoptions[0][1];
+ assertEquals("List Option in Top", catOption.getName());
+ valueList = catOption.getStringListValue();
+ assertEquals("a", valueList[0]);
+ assertEquals("b", valueList[1]);
+ catOption = (IOption) catoptions[1][1];
+ assertEquals("Boolean Option in Top", catOption.getName());
+ assertEquals(true, catOption.getBooleanValue());
+ assertEquals("-b", catOption.getCommand());
+ categories = topCategory.getChildCategories();
+ catoptions = categories[0].getOptions(configs[1]);
+ for (i = 0; i < catoptions.length; i++)
+ if (catoptions[i][0] == null)
+ break;
+ assertEquals(4, i);
+ catOption = (IOption) catoptions[0][1];
+ assertEquals("String Option in Category", catOption.getName());
+ assertEquals("y", catOption.getStringValue());
+ catOption = (IOption) catoptions[1][1];
+ assertEquals("Another String Option in Category", catOption.getName());
+ assertEquals("", catOption.getStringValue());
+ catOption = (IOption) catoptions[2][1];
+ assertEquals("Enumerated Option in Category", catOption.getName());
+ valueList = catOption.getApplicableValues();
+ assertEquals(2, valueList.length);
+ assertEquals("Default Enum", valueList[0]);
+ assertEquals("Another Enum", valueList[1]);
+ catOption = (IOption) catoptions[2][1];
+ assertEquals("-e1", catOption.getEnumCommand(valueList[0]));
+ assertEquals("-e2", catOption.getEnumCommand(valueList[1]));
+ assertEquals(1, tools.length);
+ catOption = (IOption) catoptions[3][1];
+ assertEquals("Boolean Option in Category", catOption.getName());
+ assertEquals(false, catOption.getBooleanValue());
+ assertEquals("", catOption.getCommand());
+ assertEquals("-nob", catOption.getCommandFalse());
+ assertEquals(1, tools.length);
+ ITool tool = tools[0];
+ assertNotNull(tool);
+ assertEquals("Root Tool", tool.getName());
+ assertEquals("-r", tool.getOutputFlag());
+ assertTrue(tool.buildsFileType("foo"));
+ assertTrue(tool.buildsFileType("bar"));
+ assertTrue(tool.producesFileType("toor"));
+ assertTrue(tool.isHeaderFile("baz"));
+ assertEquals("doIt", tool.getToolCommand());
+ assertEquals("-La -Lb -b y -e1 -nob", tool.getToolFlags());
+
+ // Completely Overridden configuration
+ assertEquals("Complete Override Config", configs[2].getName());
+ tools = configs[2].getTools();
+ assertEquals(1, tools.length);
+ assertEquals("Root Tool", tools[0].getName());
+ topCategory = tools[0].getTopOptionCategory();
+ catoptions = topCategory.getOptions(configs[2]);
+ for (i = 0; i < catoptions.length; i++)
+ if (catoptions[i][0] == null)
+ break;
+ assertEquals(2, i);
+ // Check that there's an string list with totally new values
+ catOption = (IOption) catoptions[0][1];
+ assertEquals("List Option in Top", catOption.getName());
+ assertEquals(IOption.STRING_LIST, catOption.getValueType());
+ valueList = catOption.getStringListValue();
+ assertTrue(valueList.length == 3);
+ assertEquals("d", valueList[0]);
+ assertEquals("e", valueList[1]);
+ assertEquals("f", valueList[2]);
+ assertEquals("-L", catOption.getCommand());
+ // and a true boolean (commands should not have changed)
+ catOption = (IOption) catoptions[1][1];
+ assertEquals("Boolean Option in Top", catOption.getName());
+ assertEquals(IOption.BOOLEAN, catOption.getValueType());
+ assertEquals(true, catOption.getBooleanValue());
+ assertEquals("-b", catOption.getCommand());
+ // Check that there's an overridden enumeration and string
+ categories = topCategory.getChildCategories();
+ catoptions = categories[0].getOptions(configs[2]);
+ for (i = 0; i < catoptions.length; i++)
+ if (catoptions[i][0] == null)
+ break;
+ assertEquals(4, i);
+ catOption = (IOption) catoptions[0][1];
+ assertEquals("String Option in Category", catOption.getName());
+ assertEquals(IOption.STRING, catOption.getValueType());
+ assertEquals("overridden", catOption.getStringValue());
+ catOption = (IOption) catoptions[1][1];
+ assertEquals("Another String Option in Category", catOption.getName());
+ assertEquals(IOption.STRING, catOption.getValueType());
+ assertEquals("alsooverridden", catOption.getStringValue());
+ catOption = (IOption) catoptions[2][1];
+ assertEquals("Enumerated Option in Category", catOption.getName());
+ assertEquals(IOption.ENUMERATED, catOption.getValueType());
+ assertEquals("another.enum.option", catOption.getSelectedEnum());
+ catOption = (IOption) catoptions[3][1];
+ assertEquals("Boolean Option in Category", catOption.getName());
+ assertEquals(IOption.BOOLEAN, catOption.getValueType());
+ assertEquals(true, catOption.getBooleanValue());
+ tool = tools[0];
+ assertEquals("-Ld -Le -Lf -b overridden -stralsooverridden -e2", tool.getToolFlags());
+
+ // Make sure that the build manager returns the default makefile generator (not null)
+ assertNotNull(ManagedBuildManager.getBuildfileGenerator(configs[0]));
+ }
+
+ /*
+ * The Sub Sub project type has a reference to a tool that is defined
+ * independently from the project type itself. This is a common pattern
+ * for tools that are shared between many project types.
+ *
+ * The tool itself is defined as having two option categories, with
+ * one option in each category. To test that the reference is properly
+ * inheritted, the project type overrides the default value of the boolean
+ * option.
+ *
+ * The test confirms that the basic settings are inheritted through the
+ * reference, and that the overridden value is used instead of the
+ * default. It also tests that the command can be overidden through a
+ * tool reference.
+ *
+ * Finally, the string option in the configuration is overridden and the
+ * test confirms that it contains both the overridden boolean that the
+ * project type provides, and the overridden string that it provides.
+ *
+ * @param testSubSub
+ */
+ private void checkSubSubProjectType(IProjectType projType) {
+ final String indyToolName = "Target Independent Tool";
+ final String indyToolCommand = "RC.EXE";
+ final String indyToolInputExt = "rc";
+ final String indyToolOutputExt = "free";
+ final String indyToolOutFlag = "/fo";
+ final String indyToolHeader = "h";
+ final String indyToolHeaderNot = "j";
+ final String indyCatOne = "Free";
+ final String indyCatTwo = "Chained";
+ final String freeOptName = "String in Free";
+ final String chainedOptName = "Boolean in Chained";
+ final String freeOptValue = "Live free or die";
+ final String newCmd = "Let the Wookie win";
+ final String stringOverride = "The future language of slaves";
+
+ IConfiguration[] configs = projType.getConfigurations();
+ // Check the inherited clean command
+ assertEquals("rm -yourworld", configs[0].getCleanCommand());
+ // Check that the make command is overridden from parent
+ assertEquals("nmake", configs[0].getBuildCommand());
+ // Make sure we get the proper binary parser
+ IToolChain toolChain = configs[0].getToolChain();
+ ITargetPlatform targetPlatform = toolChain.getTargetPlatform();
+ assertEquals("org.eclipse.cdt.core.ELF", targetPlatform.getBinaryParserList()[0]);
+ // Make sure the os list is inherited
+ String[] expectedOSList = { "win32", "linux", "solaris" };
+ assertTrue(Arrays.equals(expectedOSList, toolChain.getOSList()));
+ // Make sure the arch list is inherited
+ String[] expectedArchList = { "x86", "ppc" };
+ assertTrue(Arrays.equals(expectedArchList, toolChain.getArchList()));
+
+ // Get the 5 configurations (3 from test, 1 from test sub and 1 from this)
+ assertEquals(5, configs.length);
+
+ // Check the tools. We should have 3 (1 from each parent and the one referenced).
+ ITool[] tools = configs[0].getTools();
+ assertEquals(3, tools.length);
+ ITool toolRef = tools[0];
+
+ // Make sure we get all the tool settings
+ assertEquals(toolRef.getName(), indyToolName);
+ assertEquals(toolRef.getToolCommand(), indyToolCommand);
+ assertTrue(toolRef.buildsFileType(indyToolInputExt));
+ assertEquals(toolRef.getOutputExtension(indyToolInputExt), indyToolOutputExt);
+ assertEquals(toolRef.getOutputFlag(), indyToolOutFlag);
+ assertTrue(toolRef.isHeaderFile(indyToolHeader));
+ assertFalse(toolRef.isHeaderFile(indyToolHeaderNot));
+ assertEquals(toolRef.getNatureFilter(), ITool.FILTER_BOTH);
+ // Check out the referenced tool and make sure we get all option categories
+ IOptionCategory topCategory = toolRef.getTopOptionCategory();
+ IOptionCategory[] categories = topCategory.getChildCategories();
+ assertEquals(1, categories.length);
+ assertEquals(categories[0].getName(), indyCatOne);
+ IOptionCategory[] subCategories = categories[0].getChildCategories();
+ // Is the chained category a subcategory
+ assertEquals(1, subCategories.length);
+ assertEquals(subCategories[0].getName(), indyCatTwo);
+ // Make sure the option in the top category is correct
+ Object[][] optsInCat = categories[0].getOptions(configs[0]);
+ int i;
+ for (i = 0; i < optsInCat.length; i++)
+ if (optsInCat[i][0] == null)
+ break;
+ assertEquals(1, i);
+ IOption optCat = (IOption) optsInCat[0][1];
+ assertEquals(freeOptName, optCat.getName());
+ try {
+ // We get the option categories and options from the tool itself, but the
+ // tool reference will have a set of 0 to n option references that contain
+ // overridden settings. In this case, the string is inheritted and should
+ // not be reference
+ assertEquals(IOption.STRING, optCat.getValueType());
+ IOption stringOpt = toolRef.getOptionById(optCat.getId());
+ assertTrue(stringOpt instanceof Option);
+ assertEquals(freeOptValue, stringOpt.getStringValue());
+ } catch (BuildException e1) {
+ fail("Failed getting string value in subsub :" + e1.getLocalizedMessage());
+ }
+
+ // Do the same for the options in the child cat
+ Object[][] optsInSubCat = subCategories[0].getOptions(configs[0]);
+ for (i = 0; i < optsInSubCat.length; i++)
+ if (optsInSubCat[i][0] == null)
+ break;
+ assertEquals(1, i);
+ IOption booleanRef = toolRef.getOptionById(((IOption) optsInSubCat[0][1]).getId());
+ assertEquals(chainedOptName, booleanRef.getName());
+ try {
+ assertEquals(IOption.BOOLEAN, booleanRef.getValueType());
+ assertTrue(booleanRef.getBooleanValue());
+ } catch (BuildException e) {
+ fail("Failure getting boolean value in subsub: " + e.getLocalizedMessage());
+ }
+
+ // Test that the tool command can be changed through the reference
+ toolRef.setToolCommand(newCmd);
+ assertEquals(toolRef.getToolCommand(), newCmd);
+
+ // Muck about with the options in the local config
+ IConfiguration subSubConfig = projType.getConfiguration("sub.sub.config");
+ assertNotNull(subSubConfig);
+ ITool[] configTools = subSubConfig.getTools();
+ // This tool ref is inherited from parent, so it does not belong to the config
+ ITool configToolRef = configTools[0];
+ assertNotNull(configToolRef);
+ optCat = (IOption) optsInCat[0][1];
+ IOption configStringOpt = configToolRef.getOptionById(optCat.getId());
+ assertNotNull(configStringOpt);
+ // Override the string option
+ try {
+ subSubConfig.setOption(configToolRef, configStringOpt, stringOverride);
+ } catch (BuildException e) {
+ fail("Failure setting string value in subsubconfiguration: " + e.getLocalizedMessage());
+ }
+ // Now the config should have a tool ref to the independent tool
+ configTools = subSubConfig.getTools();
+ configToolRef = configTools[0];
+ assertNotNull(configToolRef);
+
+ // Test that the string option is overridden in the configuration
+ optsInCat = categories[0].getOptions(configs[0]);
+ for (i = 0; i < optsInCat.length; i++)
+ if (optsInCat[i][0] == null)
+ break;
+ assertEquals(1, i);
+ optCat = (IOption) optsInCat[0][1];
+ assertEquals(freeOptName, optCat.getName());
+ configStringOpt = configToolRef.getOptionById(optCat.getId());
+ try {
+ assertEquals(stringOverride, configStringOpt.getStringValue());
+ } catch (BuildException e) {
+ fail("Failure getting string value in subsubconfiguration: " + e.getLocalizedMessage());
+ }
+ // The tool should also contain the boolean option set to true
+ IOption optSubCat = (IOption) optsInSubCat[0][1];
+ IOption configBoolOpt = configToolRef.getOptionById(optSubCat.getId());
+ assertNotNull(configBoolOpt);
+ try {
+ assertTrue(configBoolOpt.getBooleanValue());
+ } catch (BuildException e) {
+ fail("Failure getting boolean value in subsubconfiguration: " + e.getLocalizedMessage());
+ }
+
+ // Override it in config and retest
+ try {
+ subSubConfig.setOption(configToolRef, configBoolOpt, false);
+ } catch (BuildException e) {
+ fail("Failure setting boolean value in subsubconfiguration: " + e.getLocalizedMessage());
+ }
+ optsInSubCat = subCategories[0].getOptions(configs[0]);
+ for (i = 0; i < optsInSubCat.length; i++)
+ if (optsInSubCat[i][0] == null)
+ break;
+ assertEquals(1, i);
+ configBoolOpt = configToolRef.getOptionById(((IOption) optsInSubCat[0][1]).getId());
+ assertEquals(chainedOptName, booleanRef.getName());
+ try {
+ assertFalse(configBoolOpt.getBooleanValue());
+ } catch (BuildException e) {
+ fail("Failure getting boolean value in subsubconfiguration: " + e.getLocalizedMessage());
+ }
+ }
+
+ /*
+ * Do a sanity check on the values in the sub-project type. Most of the
+ * sanity on the how build model entries are read is performed in
+ * the root project type check, so these tests just verify that the the sub
+ * project type properly inherits from its parent. For the new options
+ * in the sub project type, the test does a sanity check just to be complete.
+ */
+ private void checkSubProjectType(IProjectType projType) throws BuildException {
+ final String expectedFlags = "-I/usr/include -I/opt/gnome/include -IC:\\home\\tester/include -I\"../includes\" x y z";
+
+ IConfiguration[] configs = projType.getConfigurations();
+ // Check the overridden clean command
+ assertEquals("rm -yourworld", configs[0].getCleanCommand());
+ // Make sure the projType inherits the make command
+ assertEquals("make", configs[0].getBuildCommand());
+ // Make sure the binary parser is hard-coded and available
+ IToolChain toolChain = configs[0].getToolChain();
+ ITargetPlatform targetPlatform = toolChain.getTargetPlatform();
+ assertEquals("org.eclipse.cdt.core.PE64", targetPlatform.getBinaryParserList()[0]);
+ String[] expectedOSList = { "win32", "linux", "solaris" };
+ assertTrue(Arrays.equals(expectedOSList, toolChain.getOSList()));
+ // Make sure the list is overridden
+ String[] expectedArchList = { "x86", "ppc" };
+ assertTrue(Arrays.equals(expectedArchList, toolChain.getArchList()));
+
+ // Make sure this is a test projType
+ assertTrue(projType.isTestProjectType());
+ // Make sure the build artifact extension is there
+ assertEquals(configs[0].getArtifactExtension(), subExt);
+
+ // Get the tools for this projType
+ ITool[] tools = configs[0].getTools();
+ // Do we inherit properly from parent
+ ITool rootTool = tools[0];
+ assertEquals("Root Tool", rootTool.getName());
+ // Now get the tool defined for this projType
+ ITool subTool = tools[1];
+ assertEquals("Sub Tool", subTool.getName());
+ // Confirm that it has four options
+ IOption[] subOpts = subTool.getOptions();
+ assertEquals(5, subOpts.length);
+ assertEquals("", subTool.getOutputFlag());
+ assertTrue(subTool.buildsFileType("yarf"));
+ assertTrue(subTool.producesFileType("bus"));
+ assertEquals("", subTool.getToolCommand());
+ assertEquals("lib", subTool.getOutputPrefix());
+ assertTrue(subTool.isHeaderFile("arf"));
+ assertTrue(subTool.isHeaderFile("barf"));
+ assertEquals(ITool.FILTER_BOTH, subTool.getNatureFilter());
+
+ // Do a sanity check on the options
+ assertEquals("Include Paths", subOpts[0].getName());
+ assertEquals(IOption.INCLUDE_PATH, subOpts[0].getValueType());
+ String[] incPath = subOpts[0].getIncludePaths();
+ assertEquals(2, incPath.length);
+ assertEquals("/usr/include", incPath[0]);
+ assertEquals("/opt/gnome/include", incPath[1]);
+ String[] builtInPaths = subOpts[0].getBuiltIns();
+ assertEquals(1, builtInPaths.length);
+ assertEquals("/usr/gnu/include", builtInPaths[0]);
+ assertEquals("-I", subOpts[0].getCommand());
+ assertEquals(IOption.BROWSE_DIR, subOpts[0].getBrowseType());
+
+ // There are no user-defined preprocessor symbols
+ assertEquals("Defined Symbols", subOpts[1].getName());
+ assertEquals(IOption.PREPROCESSOR_SYMBOLS, subOpts[1].getValueType());
+ String[] defdSymbols = subOpts[1].getDefinedSymbols();
+ assertEquals(0, defdSymbols.length);
+ assertEquals("-D", subOpts[1].getCommand());
+ // But there is a builtin
+ String[] builtInSymbols = subOpts[1].getBuiltIns();
+ assertEquals(1, builtInSymbols.length);
+ assertEquals("BUILTIN", builtInSymbols[0]);
+ // Broswe type should be none
+ assertEquals(IOption.BROWSE_NONE, subOpts[1].getBrowseType());
+
+ assertEquals("More Includes", subOpts[2].getName());
+ assertEquals(IOption.INCLUDE_PATH, subOpts[2].getValueType());
+ String[] moreIncPath = subOpts[2].getIncludePaths();
+ assertEquals(2, moreIncPath.length);
+ assertEquals("C:\\home\\tester/include", moreIncPath[0]);
+ assertEquals("-I", subOpts[2].getCommand());
+ assertEquals(IOption.BROWSE_DIR, subOpts[2].getBrowseType());
+
+ // Check the user object option
+ assertEquals("User Objects", subOpts[3].getName());
+ assertEquals(IOption.OBJECTS, subOpts[3].getValueType());
+ String[] objs = subOpts[3].getUserObjects();
+ assertEquals(2, objs.length);
+ assertEquals("obj1.o", objs[0]);
+ assertEquals("obj2.o", objs[1]);
+ assertEquals(IOption.BROWSE_FILE, subOpts[3].getBrowseType());
+ assertEquals("", subOpts[3].getCommand());
+
+ // There should be a string list with no command
+ assertEquals("No Command StringList", subOpts[4].getName());
+ assertEquals(IOption.STRING_LIST, subOpts[4].getValueType());
+
+ // Make sure the tool flags look right
+ assertEquals(subTool.getToolFlags(), expectedFlags);
+
+ // Get the configs for this projType; it should inherit all the configs defined for the parent
+ assertEquals(4, configs.length);
+ assertEquals("Sub Config", configs[0].getName());
+ assertEquals("Root Config", configs[1].getName());
+ assertEquals("Root Override Config", configs[2].getName());
+ assertEquals("Complete Override Config", configs[3].getName());
+ }
+
+ private void checkForwardProjectTypes(IProjectType parent, IProjectType child, IProjectType grandchild) {
+ // check that the projType parent reference has been resolved.
+ assertEquals(parent, child.getSuperClass());
+ assertEquals(child, grandchild.getSuperClass());
+
+ // get the parent tool
+ IConfiguration[] parentConfigs = parent.getConfigurations();
+ ITool[] parentTools = parentConfigs[0].getTools();
+ assertEquals(1, parentTools.length);
+ ITool parentTool = parentTools[0];
+ assertNotNull(parentTool);
+
+ // check option categories
+ IOption option = parentTool.getOptionById("test.forward.option");
+ assertNotNull(option);
+ IOptionCategory[] firstLevel = parentTool.getTopOptionCategory().getChildCategories();
+ assertEquals(1, firstLevel.length);
+ IOptionCategory[] secondLevel = firstLevel[0].getChildCategories();
+ assertEquals(1, secondLevel.length);
+ assertEquals(0, secondLevel[0].getChildCategories().length);
+ Object[][] optList = secondLevel[0].getOptions(parentConfigs[0]);
+ int i;
+ for (i = 0; i < optList.length; i++)
+ if (optList[i][0] == null)
+ break;
+ assertEquals(1, i);
+ assertEquals(option, optList[0][1]);
+
+ // get the tool reference from the child
+ IConfiguration[] childConfigs = child.getConfigurations();
+ ITool[] childTools = childConfigs[0].getTools();
+ assertEquals(1, childTools.length);
+ ITool childToolRef = childTools[0];
+ assertEquals(parentTool.getSuperClass(), childToolRef.getSuperClass());
+
+ // get and check the option reference
+ IOption optRef = childToolRef.getOptionById("test.forward.option");
+ assertEquals(option, optRef);
+
+ // get the tool reference from the grandchild
+ IConfiguration[] grandConfigs = grandchild.getConfigurations();
+ ITool[] grandTools = grandConfigs[0].getTools();
+ assertEquals(1, grandTools.length);
+ ITool grandToolRef = grandTools[0];
+ assertEquals(parentTool.getSuperClass(), grandToolRef.getSuperClass());
+
+ }
+
+ public void checkProviderProjectType(IProjectType projType) throws Exception {
+ Properties props = new Properties();
+ props.load(getClass().getResourceAsStream("test_commands"));
+
+ // check that this projType is in the file
+ String command = props.getProperty(projType.getId());
+ assertNotNull(command);
+
+ IProjectType parent = projType.getSuperClass();
+ assertNotNull(parent);
+ assertEquals("test.forward.parent.target", parent.getId());
+
+ IConfiguration[] configs = projType.getConfigurations();
+ ITool toolRef = configs[0].getFilteredTools()[0];
+ assertEquals(command, toolRef.getToolCommand());
+ }
+
+ /**
+ * Remove all the project information associated with the project used during test.
+ */
+ public void cleanup() throws CoreException, IOException {
+ ResourceHelper.cleanUp(getName());
+ removeProject(projectName);
+ removeProject(projectName2);
+ }
+
+ /* (non-Javadoc)
+ * Create a new project named <code>name</code> or return the project in
+ * the workspace of the same name if it exists.
+ *
+ * @param name The name of the project to create or retrieve.
+ * @return
+ * @throws CoreException
+ */
+ private IProject createProject(String name) throws CoreException {
+ IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
+ final IProject newProjectHandle = root.getProject(name);
+ IProject project = null;
+
+ if (!newProjectHandle.exists()) {
+ IWorkspace workspace = ResourcesPlugin.getWorkspace();
+ IWorkspaceDescription workspaceDesc = workspace.getDescription();
+ workspaceDesc.setAutoBuilding(false);
+ workspace.setDescription(workspaceDesc);
+ IProjectDescription description = workspace.newProjectDescription(newProjectHandle.getName());
+ //description.setLocation(root.getLocation());
+ project = CCorePlugin.getDefault().createCProject(description, newProjectHandle, new NullProgressMonitor(),
+ /*MakeCorePlugin.MAKE_PROJECT_ID*/ManagedBuilderCorePlugin.MANAGED_MAKE_PROJECT_ID);
+
+ // Now associate the builder with the project
+ ManagedBuildTestHelper.addManagedBuildNature(project);
+ } else {
+ IWorkspace workspace = ResourcesPlugin.getWorkspace();
+ IWorkspaceRunnable runnable = new IWorkspaceRunnable() {
+ @Override
+ public void run(IProgressMonitor monitor) throws CoreException {
+ newProjectHandle.refreshLocal(IResource.DEPTH_INFINITE, monitor);
+ }
+ };
+ NullProgressMonitor monitor = new NullProgressMonitor();
+ workspace.run(runnable, root, IWorkspace.AVOID_UPDATE, monitor);
+ project = newProjectHandle;
+ }
+
+ // Open the project if we have to
+ if (!project.isOpen()) {
+ project.open(new NullProgressMonitor());
+ }
+
+ return project;
+ }
+
+ /**
+ * Remove the <code>IProject</code> with the name specified in the argument from the
+ * receiver's workspace.
+ *
+ * @param name
+ */
+ private void removeProject(String name) {
+ IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
+ IProject project = root.getProject(name);
+ if (project.exists()) {
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException e1) {
+ } finally {
+ try {
+ System.gc();
+ System.runFinalization();
+ project.delete(true, true, null);
+ } catch (CoreException e2) {
+ assertTrue(false);
+ }
+ }
+ }
+ }
+
+ /**
+ * @throws BuildException
+ */
+ public void testErrorParsers() throws BuildException {
+ // Create new project
+ IProject project = null;
+ try {
+ project = createProject(projectName2);
+ // Now associate the builder with the project
+ ManagedBuildTestHelper.addManagedBuildNature(project);
+ IProjectDescription description = project.getDescription();
+ // Make sure it has a managed nature
+ if (description != null) {
+ assertTrue(description.hasNature(ManagedCProjectNature.MNG_NATURE_ID));
+ }
+ } catch (CoreException e) {
+ fail("Test failed on error parser project creation: " + e.getLocalizedMessage());
+ }
+
+ // Find the base project Type definition
+ IProjectType projType = ManagedBuildManager.getProjectType("test.error.parsers");
+ assertNotNull(projType);
+
+ // Create the target for our project that builds a dummy executable
+ IManagedProject newProj = ManagedBuildManager.createManagedProject(project, projType);
+ assertEquals(newProj.getName(), projType.getName());
+ ManagedBuildManager.setNewProjectVersion(project);
+
+ ManagedBuildManager.getBuildInfo(project).setValid(true);
+ // Initialize the path entry container
+ IStatus initResult = ManagedBuildManager.initBuildInfoContainer(project);
+ if (initResult.getCode() != IStatus.OK) {
+ fail("Initializing build information failed for: " + project.getName() + " because: "
+ + initResult.getMessage());
+ }
+
+ // Copy over the configs
+ IConfiguration[] baseConfigs = projType.getConfigurations();
+ for (int i = 0; i < baseConfigs.length; ++i) {
+ newProj.createConfiguration(baseConfigs[i], baseConfigs[i].getId() + "." + i);
+ }
+
+ // Test this out
+ checkErrorParsersProject(newProj);
+
+ // Save, close, reopen and test again
+ ManagedBuildManager.saveBuildInfo(project, true);
+ ManagedBuildManager.removeBuildInfo(project);
+ try {
+ ResourceHelper.joinIndexerBeforeCleanup(getName());
+ project.close(null);
+ } catch (CoreException e) {
+ fail("Failed on error parser project close: " + e.getLocalizedMessage());
+ }
+ try {
+ project.open(null);
+ } catch (CoreException e) {
+ fail("Failed on error parser project open: " + e.getLocalizedMessage());
+ }
+
+ // Test that the default config was remembered
+ IManagedBuildInfo info = ManagedBuildManager.getBuildInfo(project);
+
+ // Check the rest of the default information
+ checkErrorParsersProject(info.getManagedProject());
+ ManagedBuildManager.removeBuildInfo(project);
+ }
+
+ /*
+ * Do a sanity check on the error parsers target.
+ */
+ private void checkErrorParsersProject(IManagedProject proj) throws BuildException {
+ // Target stuff
+ String expectedBinParserId = "org.eclipse.cdt.core.PE64";
+ IConfiguration[] configs = proj.getConfigurations();
+ IToolChain toolChain = configs[0].getToolChain();
+ ITargetPlatform targetPlatform = toolChain.getTargetPlatform();
+ assertEquals(expectedBinParserId, targetPlatform.getBinaryParserList()[0]);
+ // This target defines errors parsers. Check that the error parsers
+ // have been assigned.
+ assertEquals(
+ "org.eclipse.cdt.core.CWDLocator;org.eclipse.cdt.core.GCCErrorParser;org.eclipse.cdt.core.GLDErrorParser;org.eclipse.cdt.core.GmakeErrorParser",
+ configs[0].getErrorParserIds());
+
+ // Tool
+ ITool[] tools = configs[0].getTools();
+ ITool rootTool = tools[0];
+ assertEquals(1, tools.length);
+ assertEquals("EP Tool", tools[0].getName());
+ assertEquals("-o", tools[0].getOutputFlag());
+ assertTrue(tools[0].buildsFileType("y"));
+ assertTrue(tools[0].buildsFileType("x"));
+ assertTrue(tools[0].producesFileType("xy"));
+ assertEquals("EP", tools[0].getToolCommand());
+ assertEquals(ITool.FILTER_C, rootTool.getNatureFilter());
+
+ // There should be one defined configs
+ assertEquals(1, configs.length);
+ }
+
+ /**
+ * Test that the build artifact of a <code>ITarget</code> can be modified
+ * programmatically.
+ */
+ public void testConfigBuildArtifact() throws CoreException {
+ // Open the test project
+ IProject project = createProject(projectName);
+ IManagedBuildInfo info = ManagedBuildManager.getBuildInfo(project);
+ assertNotNull(info);
+ IManagedProject managedProj = info.getManagedProject();
+ assertNotNull(managedProj);
+ IConfiguration defaultConfig = info.getDefaultConfiguration();
+ assertNotNull(defaultConfig);
+
+ // Set the build artifact of the configuration
+ String ext = defaultConfig.getArtifactExtension();
+ String name = project.getName() + "." + ext;
+ defaultConfig.setArtifactName(name);
+
+ // Save, close, reopen and test again
+ ManagedBuildManager.saveBuildInfo(project, false);
+ ManagedBuildManager.removeBuildInfo(project);
+ ResourceHelper.joinIndexerBeforeCleanup(getName());
+ project.close(null);
+ project.open(null);
+
+ // Check the artifact name
+ info = ManagedBuildManager.getBuildInfo(project);
+ assertNotNull(info);
+ managedProj = info.getManagedProject();
+ assertNotNull(managedProj);
+ defaultConfig = info.getDefaultConfiguration();
+ assertNotNull(defaultConfig);
+ assertEquals(name, defaultConfig.getArtifactName());
+ }
+
+ public void testThatAlwaysFails() {
+ assertTrue(false);
+ }
+
+}
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedBuildCoreTests.java b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedBuildCoreTests.java
index 65b84a4c73f..824d75d7362 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedBuildCoreTests.java
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedBuildCoreTests.java
@@ -85,7 +85,7 @@ public class ManagedBuildCoreTests extends TestCase {
String expectedCommand = "make";
String expectedArguments = "-k";
String[] expectedBuilderName = { "Dbg Builder", "Rel Builder" };
- String expectedBuilderInfo = "org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator";
+ String expectedBuilderInfo = "org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator";
String[] expectedToolId1 = { "cdt.managedbuild.tool.testgnu.c.compiler.exe.debug",
"cdt.managedbuild.tool.testgnu.c.compiler.exe.release" };
String expectedSuperToolId1 = "cdt.managedbuild.tool.testgnu.c.compiler";
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedBuildCoreTests20.java b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedBuildCoreTests20.java
deleted file mode 100644
index 70e2d552418..00000000000
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedBuildCoreTests20.java
+++ /dev/null
@@ -1,1950 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2013 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.managedbuilder.core.tests;
-
-import java.io.IOException;
-import java.util.Arrays;
-import java.util.Map;
-import java.util.Properties;
-
-import org.eclipse.cdt.core.CCorePlugin;
-import org.eclipse.cdt.core.parser.IScannerInfo;
-import org.eclipse.cdt.core.parser.IScannerInfoChangeListener;
-import org.eclipse.cdt.core.parser.IScannerInfoProvider;
-import org.eclipse.cdt.core.testplugin.ResourceHelper;
-import org.eclipse.cdt.managedbuilder.core.BuildException;
-import org.eclipse.cdt.managedbuilder.core.IConfiguration;
-import org.eclipse.cdt.managedbuilder.core.IManagedBuildInfo;
-import org.eclipse.cdt.managedbuilder.core.IManagedProject;
-import org.eclipse.cdt.managedbuilder.core.IOption;
-import org.eclipse.cdt.managedbuilder.core.IOptionCategory;
-import org.eclipse.cdt.managedbuilder.core.IProjectType;
-import org.eclipse.cdt.managedbuilder.core.ITargetPlatform;
-import org.eclipse.cdt.managedbuilder.core.ITool;
-import org.eclipse.cdt.managedbuilder.core.IToolChain;
-import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
-import org.eclipse.cdt.managedbuilder.core.ManagedBuilderCorePlugin;
-import org.eclipse.cdt.managedbuilder.core.ManagedCProjectNature;
-import org.eclipse.cdt.managedbuilder.internal.core.Option;
-import org.eclipse.cdt.managedbuilder.testplugin.BuildSystemTestHelper;
-import org.eclipse.cdt.managedbuilder.testplugin.ManagedBuildTestHelper;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IProjectDescription;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IWorkspace;
-import org.eclipse.core.resources.IWorkspaceDescription;
-import org.eclipse.core.resources.IWorkspaceRoot;
-import org.eclipse.core.resources.IWorkspaceRunnable;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IExtensionPoint;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Platform;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-/*
- * These tests exercise CDT 2.0 manifest file functionality
- */
-public class ManagedBuildCoreTests20 extends TestCase {
- private static final boolean boolVal = true;
- private static final String testConfigId = "test.config.override";
- private static final String testConfigName = "Tester";
- private static final String enumVal = "Another Enum";
- private static final String[] listVal = { "_DEBUG", "/usr/include", "libglade.a" };
- private static final String newExt = "wen";
- private static final String projectName = "ManagedBuildTest";
- private static final String projectName2 = "ManagedBuildTest2";
- private static final String projectRename = "ManagedBuildRedux";
- private static final String rootExt = "toor";
- private static final String stringVal = "-c -Wall";
- private static final String anotherStringVal = "thevalue";
- private static final String subExt = "bus";
-
- public ManagedBuildCoreTests20(String name) {
- super(name);
- }
-
- public static Test suite() {
- TestSuite suite = new TestSuite(ManagedBuildCoreTests20.class.getName());
-
- // Note that some of the tests are dependent on others so run the suite as a whole
- suite.addTest(new ManagedBuildCoreTests20("testExtensions"));
- suite.addTest(new ManagedBuildCoreTests20("testProjectCreation"));
- suite.addTest(new ManagedBuildCoreTests20("testConfigurations"));
- suite.addTest(new ManagedBuildCoreTests20("testConfigurationReset"));
- suite.addTest(new ManagedBuildCoreTests20("testConfigBuildArtifact"));
- suite.addTest(new ManagedBuildCoreTests20("testMakeCommandManipulation"));
- suite.addTest(new ManagedBuildCoreTests20("testScannerInfoInterface"));
- suite.addTest(new ManagedBuildCoreTests20("testProjectRename"));
- suite.addTest(new ManagedBuildCoreTests20("testErrorParsers"));
- suite.addTest(new ManagedBuildCoreTests20("cleanup"));
-
- return suite;
- }
-
- /**
- * Convert path to OS specific representation
- */
- private String toOSLocation(String path) {
- java.io.File file = new java.io.File(path);
- try {
- path = file.getCanonicalPath();
- } catch (IOException e) {
- }
-
- return path;
- }
-
- /**
- * Convert path to OS specific representation
- */
- private String toOSString(String path) {
- return new Path(path).toOSString();
- }
-
- /**
- * Navigates through the build info as defined in the extensions
- * defined in this plugin
- */
- public void testExtensions() throws Exception {
- IProjectType testRoot = null;
- IProjectType testSub = null;
- IProjectType testSubSub = null;
- IProjectType testForwardChild = null;
- IProjectType testForwardParent = null;
- IProjectType testForwardGrandchild = null;
- int numTypes = 0;
-
- // Note secret null parameter which means just extensions
- IProjectType[] projTypes = ManagedBuildManager.getDefinedProjectTypes();
-
- for (int i = 0; i < projTypes.length; ++i) {
- IProjectType type = projTypes[i];
-
- if (type.getName().equals("Test Root")) {
- testRoot = type;
- checkRootProjectType(testRoot);
- } else if (type.getName().equals("Test Sub")) {
- testSub = type;
- checkSubProjectType(testSub);
- } else if (type.getName().equals("Test Sub Sub")) {
- testSubSub = type;
- checkSubSubProjectType(testSubSub);
- } else if (type.getName().equals("Forward Child")) {
- testForwardChild = type;
- } else if (type.getName().equals("Forward Parent")) {
- testForwardParent = type;
- } else if (type.getName().equals("Forward Grandchild")) {
- testForwardGrandchild = type;
- } else if (type.getId().startsWith("test.provider.Test_")) {
- numTypes++;
- checkProviderProjectType(type);
- }
- }
- // check that the forward references are properly resolved.
- assertNotNull(testForwardChild);
- assertNotNull(testForwardParent);
- assertNotNull(testForwardGrandchild);
- checkForwardProjectTypes(testForwardParent, testForwardChild, testForwardGrandchild);
-
- // check that the proper number of projectTypes were dynamically provided
- assertEquals(3, numTypes);
-
- // All these project types are defines in the plugin files, so none
- // of them should be null at this point
- assertNotNull(testRoot);
- assertNotNull(testSub);
- assertNotNull(testSubSub);
- }
-
- /**
- * This test exercises the interface the <code>IConfiguration</code> exposes to manipulate
- * its make command.
- */
- public void testMakeCommandManipulation() {
- String oldMakeCmd = "make";
- String newMakeCmd = "Ant";
-
- // Open the test project
- IProject project = null;
- try {
- project = createProject(projectName);
- IProjectDescription description = project.getDescription();
- // Make sure it has a managed nature
- if (description != null) {
- assertTrue(description.hasNature(ManagedCProjectNature.MNG_NATURE_ID));
- }
- } catch (CoreException e) {
- fail("Failed to open project in 'testMakeCommandManipulation': " + e.getLocalizedMessage());
- }
- assertNotNull(project);
-
- // Now get the default configuration
- IManagedBuildInfo info = ManagedBuildManager.getBuildInfo(project);
- assertNotNull(info);
- IManagedProject managedProj = info.getManagedProject();
- assertNotNull(managedProj);
- IConfiguration defaultConfig = info.getDefaultConfiguration();
- assertNotNull(defaultConfig);
-
- // Does it have a default build command
- assertFalse(defaultConfig.hasOverriddenBuildCommand());
- assertEquals(oldMakeCmd, defaultConfig.getBuildCommand());
-
- // Change it
- defaultConfig.setBuildCommand(newMakeCmd);
- assertEquals(newMakeCmd, defaultConfig.getBuildCommand());
- assertTrue(defaultConfig.hasOverriddenBuildCommand());
-
- // Reset it
- defaultConfig.setBuildCommand(null);
- assertFalse(defaultConfig.hasOverriddenBuildCommand());
- assertEquals(oldMakeCmd, defaultConfig.getBuildCommand());
-
- ManagedBuildManager.saveBuildInfo(project, false);
- }
-
- /**
- * The purpose of this test is to exercise the build path info interface.
- * To get to that point, a new project/config has to be created in the test
- * project and the default configuration changed.
- */
- public void testScannerInfoInterface() {
- // Open the test project
- IProject project = null;
- try {
- project = createProject(projectName);
- IProjectDescription description = project.getDescription();
- // Make sure it has a managed nature
- if (description != null) {
- assertTrue(description.hasNature(ManagedCProjectNature.MNG_NATURE_ID));
- }
- } catch (CoreException e) {
- fail("Failed to open project in 'testScannerInfoInterface': " + e.getLocalizedMessage());
- }
-
- //These are the expected path settings
- IPath buildCWD = project.getLocation().append("Sub Config");
- final String[] expectedPaths;
- if (new Path("C:\\home\\tester/include").isAbsolute()) {
- // Windows
- expectedPaths = new String[] { toOSLocation("/usr/include"), toOSLocation("/opt/gnome/include"),
- toOSLocation("C:\\home\\tester/include"),
- // relative paths from MBS will make 3 entries
- project.getLocation().append("includes").toOSString(), buildCWD.append("includes").toOSString(),
- toOSString("includes"), "/usr/gnu/include", // Not converted to OS string due to being flagged as ICSettingEntry.RESOLVED
- };
- } else {
- // Unix
- expectedPaths = new String[] { toOSLocation("/usr/include"), toOSLocation("/opt/gnome/include"),
- // on unix "C:\\home\\tester/include" is relative path
- // looks like nonsense but it this way due to MBS converting entry to keep "Sub Config/C:\\home\\tester/include" in its storage
- project.getLocation().append("Sub Config/C:\\home\\tester/include").toOSString(),
- buildCWD.append("Sub Config/C:\\home\\tester/include").toOSString(),
- toOSString("Sub Config/C:\\home\\tester/include"),
- // relative paths from MBS will make 3 entries
- project.getLocation().append("includes").toOSString(), buildCWD.append("includes").toOSString(),
- toOSString("includes"), "/usr/gnu/include", // Not converted to OS string due to being flagged as ICSettingEntry.RESOLVED
- };
- }
-
- // Create a new managed project based on the sub project type
- IProjectType projType = ManagedBuildManager.getExtensionProjectType("test.sub");
- assertNotNull(projType);
-
- // Create the managed-project for our project
- IManagedProject newProject = null;
- try {
- newProject = ManagedBuildManager.createManagedProject(project, projType);
- } catch (BuildException e) {
- fail("Failed creating new project: " + e.getLocalizedMessage());
- }
- assertNotNull(newProject);
- ManagedBuildManager.setNewProjectVersion(project);
-
- // Copy over the configs
- IConfiguration[] baseConfigs = projType.getConfigurations();
- for (int i = 0; i < baseConfigs.length; ++i) {
- newProject.createConfiguration(baseConfigs[i], baseConfigs[i].getId() + "." + i);
- }
-
- // Change the default configuration to the sub config
- IConfiguration[] configs = newProject.getConfigurations();
- assertEquals(4, configs.length);
- IManagedBuildInfo buildInfo = ManagedBuildManager.getBuildInfo(project);
- buildInfo.setDefaultConfiguration(newProject.getConfiguration(configs[0].getId()));
- buildInfo.setValid(true);
- // Save, close, reopen
- ManagedBuildManager.saveBuildInfo(project, true);
- ManagedBuildManager.removeBuildInfo(project);
- try {
- ResourceHelper.joinIndexerBeforeCleanup(getName());
- project.close(null);
- } catch (CoreException e) {
- fail("Failed on project close: " + e.getLocalizedMessage());
- }
- try {
- project.open(null);
- } catch (CoreException e) {
- fail("Failed on project open: " + e.getLocalizedMessage());
- }
- buildInfo = ManagedBuildManager.getBuildInfo(project);
-
- // Use the plugin mechanism to discover the supplier of the path information
- IExtensionPoint extensionPoint = Platform.getExtensionRegistry()
- .getExtensionPoint(CCorePlugin.PLUGIN_ID + ".ScannerInfoProvider");
- if (extensionPoint == null) {
- fail("Failed to retrieve the extension point ScannerInfoProvider.");
- }
-
- // Find the first IScannerInfoProvider that supplies build info for the project
- IScannerInfoProvider provider = CCorePlugin.getDefault().getScannerInfoProvider(project);
- assertNotNull(provider);
-
- // Now subscribe (note that the method will be called after a change
- provider.subscribe(project, new IScannerInfoChangeListener() {
- @Override
- public void changeNotification(IResource project, IScannerInfo info) {
- // Test the symbols: expect "BUILTIN" from the manifest, and "DEBUG" and "GNOME=ME"
- // from the overidden settings
- Map<String, String> definedSymbols = info.getDefinedSymbols();
- assertTrue(definedSymbols.containsKey("BUILTIN"));
- assertTrue(definedSymbols.containsKey("DEBUG"));
- assertTrue(definedSymbols.containsKey("GNOME"));
- assertTrue(definedSymbols.containsValue("ME"));
- assertEquals(definedSymbols.get("BUILTIN"), "");
- assertEquals(definedSymbols.get("DEBUG"), "");
- assertEquals(definedSymbols.get("GNOME"), "ME");
- // Test the includes path
- String[] actualPaths = info.getIncludePaths();
- BuildSystemTestHelper.checkDiff(expectedPaths, actualPaths);
- }
- });
-
- // Check the build information before we change it
- IScannerInfo currentSettings = provider.getScannerInformation(project);
-
- Map<String, String> currentSymbols = currentSettings.getDefinedSymbols();
- // It should simply contain the built-in
- assertTrue(currentSymbols.containsKey("BUILTIN"));
- assertEquals(currentSymbols.get("BUILTIN"), "");
-
- String[] currentPaths = currentSettings.getIncludePaths();
- BuildSystemTestHelper.checkDiff(expectedPaths, currentPaths);
-
- // Add some defined symbols programmatically
- String[] expectedSymbols = { "DEBUG", "GNOME = ME " };
- IConfiguration defaultConfig = buildInfo.getDefaultConfiguration();
- ITool[] tools = defaultConfig.getTools();
- ITool subTool = null;
- for (int i = 0; i < tools.length; i++) {
- ITool tool = tools[i];
- if ("tool.sub".equalsIgnoreCase(tool.getSuperClass().getId())) {
- subTool = tool;
- break;
- }
- }
- assertNotNull(subTool);
- IOption symbolOpt = null;
- IOption[] opts = subTool.getOptions();
- for (int i = 0; i < opts.length; i++) {
- IOption option = opts[i];
- try {
- if (option.getValueType() == IOption.PREPROCESSOR_SYMBOLS) {
- symbolOpt = option;
- break;
- }
- } catch (BuildException e) {
- fail("Failed getting option value-type: " + e.getLocalizedMessage());
- }
- }
- assertNotNull(symbolOpt);
- IManagedBuildInfo info = ManagedBuildManager.getBuildInfo(project);
- assertFalse(info.isDirty());
- ManagedBuildManager.setOption(defaultConfig, subTool, symbolOpt, expectedSymbols);
- assertTrue(info.isDirty());
- info.setDirty(false);
- assertFalse(info.isDirty());
- }
-
- /**
- * Create a new configuration based on one defined in the plugin file.
- * Overrides all of the configuration settings. Saves, closes, and reopens
- * the project. Then calls a method to check the overridden options.
- *
- * Tests creating a new configuration.
- * Tests setting options.
- * Tests persisting overridden options between project sessions.
- *
- */
- public void testConfigurations() throws CoreException, BuildException {
- final String rootName = "Root Config";
- final String overrideName = "Root Override Config";
- final String completeOverrideName = "Complete Override Config";
- final String toolCmd = "doIt";
- final String newCmd = "never";
-
- // Open the test project
- IProject project = createProject(projectName);
- IProjectDescription description = project.getDescription();
- // Make sure it has a managed nature
- if (description != null) {
- assertTrue(description.hasNature(ManagedCProjectNature.MNG_NATURE_ID));
- }
-
- // Make sure there is a ManagedProject with 3 configs
- IManagedBuildInfo info = ManagedBuildManager.getBuildInfo(project);
- IManagedProject managedProj = info.getManagedProject();
- IConfiguration[] definedConfigs = managedProj.getConfigurations();
- assertEquals(3, definedConfigs.length);
- IConfiguration baseConfig = definedConfigs[0];
- assertEquals(definedConfigs[0].getName(), rootName);
- assertEquals(definedConfigs[1].getName(), overrideName);
- assertEquals(definedConfigs[2].getName(), completeOverrideName);
-
- // Create a new configuration and test the rename function
- IConfiguration newConfig = managedProj.createConfigurationClone(baseConfig, testConfigId);
- assertEquals(4, managedProj.getConfigurations().length);
- newConfig.setName(testConfigName);
- assertEquals(newConfig.getId(), testConfigId);
- assertEquals(newConfig.getName(), testConfigName);
-
- // There is only one tool
- ITool[] definedTools = newConfig.getTools();
- assertEquals(1, definedTools.length);
- ITool rootTool = definedTools[0];
-
- // Test changing its command
- assertEquals(rootTool.getToolCommand(), toolCmd);
- newConfig.setToolCommand(rootTool, newCmd);
- assertEquals(rootTool.getToolCommand(), newCmd);
-
- // Override options in the new configuration
- IOptionCategory topCategory = rootTool.getTopOptionCategory();
- assertEquals("Root Tool", topCategory.getName());
- Object[][] options = topCategory.getOptions(newConfig);
- int i;
- for (i = 0; i < options.length; i++)
- if (options[i][0] == null)
- break;
- assertEquals(2, i);
- ITool tool = (ITool) options[0][0];
- IOption option = (IOption) options[0][1];
- ManagedBuildManager.setOption(newConfig, tool, option, listVal);
- option = (IOption) options[1][1];
- ManagedBuildManager.setOption(newConfig, tool, option, boolVal);
-
- IOptionCategory[] categories = topCategory.getChildCategories();
- assertEquals(1, categories.length);
- options = categories[0].getOptions(newConfig);
- for (i = 0; i < options.length; i++)
- if (options[i][0] == null)
- break;
- assertEquals(4, i);
- tool = (ITool) options[0][0];
- option = (IOption) options[0][1];
- ManagedBuildManager.setOption(newConfig, tool, option, stringVal);
- option = (IOption) options[1][1];
- ManagedBuildManager.setOption(newConfig, tool, option, anotherStringVal);
- option = (IOption) options[2][1];
- ManagedBuildManager.setOption(newConfig, tool, option, enumVal);
- option = (IOption) options[3][1];
- ManagedBuildManager.setOption(newConfig, tool, option, "False");
-
- // Save, close, reopen and test again
- ManagedBuildManager.saveBuildInfo(project, false);
- ManagedBuildManager.removeBuildInfo(project);
- ResourceHelper.joinIndexerBeforeCleanup(getName());
- project.close(null);
- project.open(null);
-
- // Test the values in the new configuration
- checkOptionReferences(project);
-
- // Now delete the new configuration and test the managed project
- info = ManagedBuildManager.getBuildInfo(project);
- managedProj = info.getManagedProject();
- definedConfigs = managedProj.getConfigurations();
- assertEquals(4, definedConfigs.length);
- managedProj.removeConfiguration(testConfigId);
- definedConfigs = managedProj.getConfigurations();
- assertEquals(3, definedConfigs.length);
- assertEquals(definedConfigs[0].getName(), rootName);
- assertEquals(definedConfigs[1].getName(), overrideName);
- ManagedBuildManager.saveBuildInfo(project, false);
- }
-
- public void testConfigurationReset() {
- // Open the test project
- IProject project = null;
- try {
- project = createProject(projectName);
- IProjectDescription description = project.getDescription();
- // Make sure it has a managed nature
- if (description != null) {
- assertTrue(description.hasNature(ManagedCProjectNature.MNG_NATURE_ID));
- }
- } catch (CoreException e) {
- fail("Failed to open project: " + e.getLocalizedMessage());
- }
-
- // Get the default configuration
- IManagedBuildInfo info = ManagedBuildManager.getBuildInfo(project);
- assertNotNull(info);
- IManagedProject managedProj = info.getManagedProject();
- assertNotNull(managedProj);
- IConfiguration defaultConfig = info.getDefaultConfiguration();
- assertNotNull(defaultConfig);
-
- // See if it still contains the overridden values (see testProjectCreation())
- try {
- checkRootManagedProject(managedProj, "z");
- } catch (BuildException e1) {
- fail("Overridden root managed project check failed: " + e1.getLocalizedMessage());
- }
-
- // Reset the config and retest
- ManagedBuildManager.resetConfiguration(project, defaultConfig);
- ManagedBuildManager.saveBuildInfo(project, false);
- try {
- checkRootManagedProject(managedProj, "x");
- } catch (BuildException e2) {
- fail("Reset root managed project check failed: " + e2.getLocalizedMessage());
- }
- }
-
- /**
- * @throws BuildException
- */
- public void testProjectCreation() throws BuildException {
- // Create new project
- IProject project = null;
- try {
- project = createProject(projectName);
- // Now associate the builder with the project
- ManagedBuildTestHelper.addManagedBuildNature(project);
- IProjectDescription description = project.getDescription();
- // Make sure it has a managed nature
- if (description != null) {
- assertTrue(description.hasNature(ManagedCProjectNature.MNG_NATURE_ID));
- }
-
- } catch (CoreException e) {
- fail("Test failed on project creation: " + e.getLocalizedMessage());
- }
-
- // Find the base project type definition
- IProjectType projType = ManagedBuildManager.getExtensionProjectType("test.root");
- assertNotNull(projType);
-
- // Create the managed-project for our project that builds a dummy executable
- IManagedProject newProject = ManagedBuildManager.createManagedProject(project, projType);
- assertEquals(newProject.getName(), projType.getName());
- assertFalse(newProject.equals(projType));
- ManagedBuildManager.setNewProjectVersion(project);
-
- // Copy over the configs
- IConfiguration defaultConfig = null;
- IConfiguration[] configs = projType.getConfigurations();
- for (int i = 0; i < configs.length; ++i) {
- // Make the first configuration the default
- if (i == 0) {
- defaultConfig = newProject.createConfiguration(configs[i], projType.getId() + "." + i);
- } else {
- newProject.createConfiguration(configs[i], projType.getId() + "." + i);
- }
- }
- ManagedBuildManager.setDefaultConfiguration(project, defaultConfig);
-
- String buildArtifactName = projectName;
- defaultConfig.setArtifactName(buildArtifactName);
- defaultConfig.setArtifactExtension(newExt);
-
- ManagedBuildManager.getBuildInfo(project).setValid(true);
-
- // Initialize the path entry container
- IStatus initResult = ManagedBuildManager.initBuildInfoContainer(project);
- if (initResult.getCode() != IStatus.OK) {
- fail("Initializing build information failed for: " + project.getName() + " because: "
- + initResult.getMessage());
- }
-
- // Now test the results out
- checkRootManagedProject(newProject, "x");
-
- // Override the "String Option in Category" option value
- configs = newProject.getConfigurations();
- ITool[] tools = configs[0].getTools();
- IOptionCategory topCategory = tools[0].getTopOptionCategory();
- IOptionCategory[] categories = topCategory.getChildCategories();
- Object[][] options = categories[0].getOptions(configs[0]);
- ITool tool = (ITool) options[0][0];
- IOption option = (IOption) options[0][1];
- configs[0].setOption(tool, option, "z");
- options = categories[0].getOptions((IConfiguration) null);
- tool = (ITool) options[0][0];
- option = (IOption) options[0][1];
- assertEquals("x", option.getStringValue());
- options = categories[0].getOptions(configs[0]);
- tool = (ITool) options[0][0];
- option = (IOption) options[0][1];
- assertEquals("z", option.getStringValue());
-
- // Save, close, reopen and test again
- ManagedBuildManager.saveBuildInfo(project, true);
- ManagedBuildManager.removeBuildInfo(project);
- try {
- ResourceHelper.joinIndexerBeforeCleanup(getName());
- project.close(null);
- } catch (CoreException e) {
- fail("Failed on project close: " + e.getLocalizedMessage());
- }
- try {
- project.open(null);
- } catch (CoreException e) {
- fail("Failed on project open: " + e.getLocalizedMessage());
- }
-
- // Test that the default config was remembered
- IManagedBuildInfo info = ManagedBuildManager.getBuildInfo(project);
- assertEquals(defaultConfig.getId(), info.getDefaultConfiguration().getId());
-
- // Check the rest of the default information
- checkRootManagedProject(newProject, "z");
-
- // Now test the information the makefile builder needs
- checkBuildTestSettings(info);
- ManagedBuildManager.removeBuildInfo(project);
- }
-
- /**
- * Tests that bugzilla 44159 has been addressed. After a project was renamed, the
- * build information mistakenly referred to the old project as its owner. This
- * caused a number of searches on the information to fail. In this bug, it was the
- * list of tools that could not be determined. In other cases, the information
- * retrieval caused NPEs because the old owner no longer existed.
- */
- public void testProjectRename() {
- // Open the test project
- IProject project = null;
- try {
- project = createProject(projectName);
- IProjectDescription description = project.getDescription();
- // Make sure it has a managed nature
- if (description != null) {
- assertTrue(description.hasNature(ManagedCProjectNature.MNG_NATURE_ID));
- }
- } catch (CoreException e) {
- fail("Failed to open project: " + e.getLocalizedMessage());
- }
-
- // Rename the project
- IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot();
- IResource newResource = workspaceRoot.findMember(projectRename);
- if (newResource != null) {
- try {
- newResource.delete(IResource.KEEP_HISTORY, new NullProgressMonitor());
- } catch (CoreException e) {
- fail("Failed to delete old project " + projectRename + ": " + e.getLocalizedMessage());
- }
- }
- IProjectDescription description = null;
- try {
- description = project.getDescription();
- } catch (CoreException e) {
- fail("Failed to find project descriptor for " + projectName + ": " + e.getLocalizedMessage());
- }
- description.setName(projectRename);
- try {
- project.move(description, IResource.FORCE | IResource.SHALLOW, new NullProgressMonitor());
- } catch (CoreException e) {
- fail("Failed to rename project: " + e.getLocalizedMessage());
- }
- try {
- project = createProject(projectRename);
- description = project.getDescription();
- // Make sure it has a managed nature
- if (description != null) {
- assertTrue(description.hasNature(ManagedCProjectNature.MNG_NATURE_ID));
- }
- } catch (CoreException e) {
- fail("Failed to open renamed project: " + e.getLocalizedMessage());
- }
-
- // By now the project should have 3 configs
- IManagedBuildInfo info = ManagedBuildManager.getBuildInfo(project);
- IManagedProject managedProj = info.getManagedProject();
- IConfiguration[] definedConfigs = managedProj.getConfigurations();
- assertEquals(4, definedConfigs.length);
- IConfiguration baseConfig = definedConfigs[1];
-
- // There is only one tool
- ITool[] definedTools = baseConfig.getTools();
- assertEquals(1, definedTools.length);
- ITool rootTool = definedTools[0];
-
- // Get the options (2) in top category and (4) in its child
- IOptionCategory topCategory = rootTool.getTopOptionCategory();
- assertEquals("Root Tool", topCategory.getName());
- Object[][] options = topCategory.getOptions(baseConfig);
- int i;
- for (i = 0; i < options.length; i++)
- if (options[i][0] == null)
- break;
- assertEquals(2, i);
- IOptionCategory[] categories = topCategory.getChildCategories();
- assertEquals(1, categories.length);
- options = categories[0].getOptions(baseConfig);
- for (i = 0; i < options.length; i++)
- if (options[i][0] == null)
- break;
- assertEquals(4, i);
-
- // Set the name back
- newResource = workspaceRoot.findMember(projectName);
- if (newResource != null) {
- try {
- newResource.delete(IResource.KEEP_HISTORY, new NullProgressMonitor());
- } catch (CoreException e) {
- fail("Failed to delete old project " + projectName + ": " + e.getLocalizedMessage());
- }
- }
- try {
- description = project.getDescription();
- } catch (CoreException e) {
- fail("Failed to find project descriptor for " + projectRename + ": " + e.getLocalizedMessage());
- }
- description.setName(projectName);
- try {
- project.move(description, IResource.FORCE | IResource.SHALLOW, new NullProgressMonitor());
- } catch (CoreException e) {
- fail("Failed to re-rename project: " + e.getLocalizedMessage());
- }
- try {
- project = createProject(projectName);
- description = project.getDescription();
- // Make sure it has a managed nature
- if (description != null) {
- assertTrue(description.hasNature(ManagedCProjectNature.MNG_NATURE_ID));
- }
- } catch (CoreException e) {
- fail("Failed to open re-renamed project: " + e.getLocalizedMessage());
- }
-
- // Do it all again
- info = ManagedBuildManager.getBuildInfo(project);
- managedProj = info.getManagedProject();
- definedConfigs = managedProj.getConfigurations();
- assertEquals(4, definedConfigs.length);
- baseConfig = definedConfigs[1];
- definedTools = baseConfig.getTools();
- assertEquals(1, definedTools.length);
- rootTool = definedTools[0];
- topCategory = rootTool.getTopOptionCategory();
- assertEquals("Root Tool", topCategory.getName());
- options = topCategory.getOptions(baseConfig);
- for (i = 0; i < options.length; i++)
- if (options[i][0] == null)
- break;
- assertEquals(2, i);
- categories = topCategory.getChildCategories();
- assertEquals(1, categories.length);
- options = categories[0].getOptions(baseConfig);
- for (i = 0; i < options.length; i++)
- if (options[i][0] == null)
- break;
- assertEquals(4, i);
- }
-
- /**
- * Tests the tool settings through the interface the makefile generator
- * uses.
- *
- * @param project
- */
- private void checkBuildTestSettings(IManagedBuildInfo info) {
- String ext1 = "foo";
- String ext2 = "bar";
- String badExt = "cpp";
- String expectedOutput = "toor";
- String expectedCmd = "doIt";
-
- assertNotNull(info);
- assertEquals(info.getBuildArtifactName(), projectName);
-
- // There should be a default configuration defined for the project
- IManagedProject managedProj = info.getManagedProject();
- assertNotNull(managedProj);
- IConfiguration buildConfig = info.getDefaultConfiguration();
- assertNotNull(buildConfig);
-
- // Check that tool handles resources with extensions foo and bar by building a baz
- assertEquals(info.getOutputExtension(ext1), expectedOutput);
- assertEquals(info.getOutputExtension(ext2), expectedOutput);
-
- // Check that it ignores others based on filename extensions
- assertNull(info.getOutputExtension(badExt));
-
- // Now see what the tool command line invocation is for foo and bar
- assertEquals(info.getToolForSource(ext1), expectedCmd);
- assertEquals(info.getToolForSource(ext2), expectedCmd);
- // Make sure that there is no tool to build files of type foo and bar
- assertNull(info.getToolForConfiguration(ext1));
- assertNull(info.getToolForConfiguration(ext2));
-
- // There is no tool that builds toor
- assertNull(info.getToolForSource(expectedOutput));
- // but there is one that produces it
- assertEquals(info.getToolForConfiguration(expectedOutput), expectedCmd);
-
- // Now check the build flags
- assertEquals(info.getFlagsForSource(ext1), "-La -Lb z -e1 -nob");
- assertEquals(info.getFlagsForSource(ext1), info.getFlagsForSource(ext2));
-
- }
-
- /**
- * Tests that overridden options are properly read into build model.
- * Test that option values that are not overridden remain the same.
- *
- * @param project The project to get build model information for.
- * @throws BuildException
- */
- private void checkOptionReferences(IProject project) throws BuildException {
- // Get the configs
- IManagedBuildInfo info = ManagedBuildManager.getBuildInfo(project);
- IManagedProject managedProj = info.getManagedProject();
- IConfiguration[] definedConfigs = managedProj.getConfigurations();
- assertEquals(4, definedConfigs.length);
- IConfiguration newConfig = managedProj.getConfiguration(testConfigId);
- assertNotNull(newConfig);
-
- // Now get the tool options and make sure the values are correct
- ITool[] definedTools = newConfig.getTools();
- assertEquals(1, definedTools.length);
- ITool rootTool = definedTools[0];
-
- // Check that the options in the new config contain overridden values
- IOption[] rootOptions = rootTool.getOptions();
- assertEquals(6, rootOptions.length);
- // First is the new list
- assertEquals("List Option in Top", rootOptions[0].getName());
- assertEquals(IOption.STRING_LIST, rootOptions[0].getValueType());
- String[] list = rootOptions[0].getStringListValue();
- assertEquals(3, list.length);
- assertTrue(Arrays.equals(listVal, list));
- assertEquals(rootOptions[0].getCommand(), "-L");
- // Next option is a boolean in top
- assertEquals("Boolean Option in Top", rootOptions[1].getName());
- assertEquals(IOption.BOOLEAN, rootOptions[1].getValueType());
- assertEquals(boolVal, rootOptions[1].getBooleanValue());
- assertEquals("-b", rootOptions[1].getCommand());
- // Next option is a string in category
- assertEquals("String Option in Category", rootOptions[2].getName());
- assertEquals(IOption.STRING, rootOptions[2].getValueType());
- assertEquals(stringVal, rootOptions[2].getStringValue());
- // Next option is a another string in category
- assertEquals("Another String Option in Category", rootOptions[3].getName());
- assertEquals(IOption.STRING, rootOptions[3].getValueType());
- assertEquals(anotherStringVal, rootOptions[3].getStringValue());
- assertEquals("-str", rootOptions[3].getCommand());
- // Next option is an enumerated in category
- assertEquals("Enumerated Option in Category", rootOptions[4].getName());
- assertEquals(IOption.ENUMERATED, rootOptions[4].getValueType());
- String selEnum = rootOptions[4].getSelectedEnum();
- assertEquals(enumVal, selEnum);
- String[] enums = rootOptions[4].getApplicableValues();
- assertEquals(2, enums.length);
- assertEquals("Default Enum", enums[0]);
- assertEquals("Another Enum", enums[1]);
- assertEquals("-e1", rootOptions[4].getEnumCommand(enums[0]));
- assertEquals("-e2", rootOptions[4].getEnumCommand(enums[1]));
- assertEquals("-e2", rootOptions[4].getEnumCommand(selEnum));
- // Final option is a boolean in Category
- assertEquals("Boolean Option in Category", rootOptions[5].getName());
- assertEquals(IOption.BOOLEAN, rootOptions[5].getValueType());
- assertEquals(false, rootOptions[5].getBooleanValue());
- assertEquals("-nob", rootOptions[5].getCommandFalse());
- }
-
- /*
- * Do a full sanity check on the root project type.
- */
- private void checkRootProjectType(IProjectType type) throws BuildException {
- // Project stuff
- String expectedCleanCmd = "del /myworld";
- String expectedParserId = "org.eclipse.cdt.core.PE64";
- String[] expectedOSList = { "win32" };
- String[] expectedArchList = { "all" };
- assertTrue(type.isTestProjectType());
- IConfiguration[] configs = type.getConfigurations();
- if (configs[0].getArtifactName().equals("ManagedBuildTest")) {
- assertEquals(configs[0].getArtifactExtension(), newExt);
- } else {
- assertEquals(configs[0].getArtifactExtension(), rootExt);
- }
- assertEquals(expectedCleanCmd, configs[0].getCleanCommand());
- assertEquals("make", configs[0].getBuildCommand());
- IToolChain toolChain = configs[0].getToolChain();
- ITargetPlatform targetPlatform = toolChain.getTargetPlatform();
- String[] binaryParsers = targetPlatform.getBinaryParserList();
- assertEquals(binaryParsers.length, 1);
- assertEquals(binaryParsers[0], expectedParserId);
- assertTrue(Arrays.equals(expectedOSList, toolChain.getOSList()));
- assertTrue(Arrays.equals(expectedArchList, toolChain.getArchList()));
- // This configuration defines no errors parsers.
- assertNull(configs[0].getErrorParserIds());
- assertTrue(Arrays.equals(configs[0].getErrorParserList(), CCorePlugin.getDefault().getAllErrorParsersIDs()));
-
- // Tools
- ITool[] tools = toolChain.getTools();
- // Root Tool
- ITool rootTool = tools[0];
- assertEquals("Root Tool", rootTool.getName());
- // 6 Options are defined in the root tool
- IOption[] options = rootTool.getOptions();
- assertEquals(6, options.length);
- // First option is a 3-element list with 1 built-in
- assertEquals("List Option in Top", options[0].getName());
- assertEquals(IOption.STRING_LIST, options[0].getValueType());
- String[] valueList = options[0].getStringListValue();
- assertEquals(2, valueList.length);
- assertEquals("a", valueList[0]);
- assertEquals("b", valueList[1]);
- String[] builtInList = options[0].getBuiltIns();
- assertEquals(1, builtInList.length);
- assertEquals("c", builtInList[0]);
- assertEquals(options[0].getCommand(), "-L");
- // Next option is a boolean in top
- assertEquals("Boolean Option in Top", options[1].getName());
- assertEquals(IOption.BOOLEAN, options[1].getValueType());
- assertEquals(false, options[1].getBooleanValue());
- assertEquals("-b", options[1].getCommand());
- // Next option is a string category
- assertEquals("String Option in Category", options[2].getName());
- assertEquals(IOption.STRING, options[2].getValueType());
- assertEquals("x", options[2].getStringValue());
- // Next option is another string category
- assertEquals("Another String Option in Category", options[3].getName());
- assertEquals(IOption.STRING, options[3].getValueType());
- assertEquals("", options[3].getStringValue());
- assertEquals("-str", options[3].getCommand());
- // Next option is an enumerated
- assertEquals("Enumerated Option in Category", options[4].getName());
- assertEquals(IOption.ENUMERATED, options[4].getValueType());
- // Post-2.0 enums store the ID, not the string value
- assertEquals("default.enum.option", options[4].getSelectedEnum());
- assertEquals("-e1", options[4].getEnumCommand("default.enum.option"));
- // Need this methof to populate the UI selection widget
- valueList = options[4].getApplicableValues();
- assertEquals(2, valueList.length);
- assertEquals("Default Enum", valueList[0]);
- assertEquals("Another Enum", valueList[1]);
- // Test compatability with 1.2 scheme of getting the command from the name
- assertEquals("-e1", options[4].getEnumCommand(valueList[0]));
- assertEquals("-e2", options[4].getEnumCommand(valueList[1]));
- // Final option is another boolean
- assertEquals("Boolean Option in Category", options[5].getName());
- assertEquals(IOption.BOOLEAN, options[5].getValueType());
- assertEquals(false, options[5].getBooleanValue());
- assertEquals("", options[5].getCommand());
- assertEquals("-nob", options[5].getCommandFalse());
-
- // Option Categories
- IOptionCategory topCategory = rootTool.getTopOptionCategory();
- assertEquals("Root Tool", topCategory.getName());
- Object[][] catoptions = topCategory.getOptions(configs[0]);
- int i;
- for (i = 0; i < catoptions.length; i++)
- if (catoptions[i][0] == null)
- break;
- assertEquals(2, i);
- assertEquals("List Option in Top", ((IOption) catoptions[0][1]).getName());
- assertEquals("Boolean Option in Top", ((IOption) catoptions[1][1]).getName());
- IOptionCategory[] categories = topCategory.getChildCategories();
- assertEquals(1, categories.length);
- assertEquals("Category", categories[0].getName());
- catoptions = categories[0].getOptions(configs[0]);
- for (i = 0; i < catoptions.length; i++)
- if (catoptions[i][0] == null)
- break;
- assertEquals(4, i);
- assertEquals("String Option in Category", ((IOption) catoptions[0][1]).getName());
- assertEquals("Another String Option in Category", ((IOption) catoptions[1][1]).getName());
- assertEquals("Enumerated Option in Category", ((IOption) catoptions[2][1]).getName());
- assertEquals("Boolean Option in Category", ((IOption) catoptions[3][1]).getName());
-
- // There should be 3 defined configs
- configs = type.getConfigurations();
- assertEquals(3, configs.length);
-
- // Root Config
- IConfiguration rootConfig = configs[0];
- assertEquals("Root Config", rootConfig.getName());
-
- // Tool elements
- tools = rootConfig.getTools();
- assertEquals(1, tools.length);
- assertEquals("Root Tool", tools[0].getName());
- assertEquals("-r", tools[0].getOutputFlag());
- assertTrue(tools[0].buildsFileType("foo"));
- assertTrue(tools[0].buildsFileType("bar"));
- assertTrue(tools[0].producesFileType("toor"));
- assertEquals("doIt", tools[0].getToolCommand());
- assertEquals("", tools[0].getOutputPrefix());
- // The root tool defines one valid header file extension
- assertTrue(rootTool.isHeaderFile("baz"));
- assertTrue(tools[0].isHeaderFile("baz"));
- assertEquals(ITool.FILTER_C, rootTool.getNatureFilter());
-
- // Partially Overriden Configuration
- assertEquals("Root Override Config", configs[1].getName());
- tools = configs[1].getTools();
- assertEquals(1, tools.length);
- assertEquals("Root Tool", tools[0].getName());
- topCategory = tools[0].getTopOptionCategory();
- catoptions = topCategory.getOptions(configs[1]);
- for (i = 0; i < catoptions.length; i++)
- if (catoptions[i][0] == null)
- break;
- assertEquals(2, i);
- assertEquals("List Option in Top", ((IOption) catoptions[0][1]).getName());
- valueList = ((IOption) catoptions[0][1]).getStringListValue();
- assertEquals("a", valueList[0]);
- assertEquals("b", valueList[1]);
- assertEquals("Boolean Option in Top", ((IOption) catoptions[1][1]).getName());
- assertEquals(true, ((IOption) catoptions[1][1]).getBooleanValue());
- assertEquals("-b", ((IOption) catoptions[1][1]).getCommand());
- categories = topCategory.getChildCategories();
- catoptions = categories[0].getOptions(configs[1]);
- for (i = 0; i < catoptions.length; i++)
- if (catoptions[i][0] == null)
- break;
- assertEquals(4, i);
- assertEquals("String Option in Category", ((IOption) catoptions[0][1]).getName());
- assertEquals("y", ((IOption) catoptions[0][1]).getStringValue());
- assertEquals("Another String Option in Category", ((IOption) catoptions[1][1]).getName());
- assertEquals("", ((IOption) catoptions[1][1]).getStringValue());
- assertEquals("Enumerated Option in Category", ((IOption) catoptions[2][1]).getName());
- valueList = ((IOption) catoptions[2][1]).getApplicableValues();
- assertEquals(2, valueList.length);
- assertEquals("Default Enum", valueList[0]);
- assertEquals("Another Enum", valueList[1]);
- assertEquals("-e1", ((IOption) catoptions[2][1]).getEnumCommand(valueList[0]));
- assertEquals("-e2", ((IOption) catoptions[2][1]).getEnumCommand(valueList[1]));
- assertEquals(1, tools.length);
- assertEquals("Boolean Option in Category", ((IOption) catoptions[3][1]).getName());
- assertEquals(false, ((IOption) catoptions[3][1]).getBooleanValue());
- assertEquals("", ((IOption) catoptions[3][1]).getCommand());
- assertEquals("-nob", ((IOption) catoptions[3][1]).getCommandFalse());
- assertEquals(1, tools.length);
- ITool tool = tools[0];
- assertNotNull(tool);
- assertEquals("Root Tool", tool.getName());
- assertEquals("-r", tool.getOutputFlag());
- assertTrue(tool.buildsFileType("foo"));
- assertTrue(tool.buildsFileType("bar"));
- assertTrue(tool.producesFileType("toor"));
- assertTrue(tool.isHeaderFile("baz"));
- assertEquals("doIt", tool.getToolCommand());
- assertEquals("-La -Lb -b y -e1 -nob", tool.getToolFlags());
-
- // Completely Overridden configuration
- assertEquals("Complete Override Config", configs[2].getName());
- tools = configs[2].getTools();
- assertEquals(1, tools.length);
- assertEquals("Root Tool", tools[0].getName());
- topCategory = tools[0].getTopOptionCategory();
- catoptions = topCategory.getOptions(configs[2]);
- for (i = 0; i < catoptions.length; i++)
- if (catoptions[i][0] == null)
- break;
- assertEquals(2, i);
- // Check that there's an string list with totally new values
- assertEquals("List Option in Top", ((IOption) catoptions[0][1]).getName());
- assertEquals(IOption.STRING_LIST, ((IOption) catoptions[0][1]).getValueType());
- valueList = ((IOption) catoptions[0][1]).getStringListValue();
- assertTrue(valueList.length == 3);
- assertEquals("d", valueList[0]);
- assertEquals("e", valueList[1]);
- assertEquals("f", valueList[2]);
- assertEquals("-L", ((IOption) catoptions[0][1]).getCommand());
- // and a true boolean (commands should not have changed)
- assertEquals("Boolean Option in Top", ((IOption) catoptions[1][1]).getName());
- assertEquals(IOption.BOOLEAN, ((IOption) catoptions[1][1]).getValueType());
- assertEquals(true, ((IOption) catoptions[1][1]).getBooleanValue());
- assertEquals("-b", ((IOption) catoptions[1][1]).getCommand());
- // Check that there's an overridden enumeration and string
- categories = topCategory.getChildCategories();
- catoptions = categories[0].getOptions(configs[2]);
- for (i = 0; i < catoptions.length; i++)
- if (catoptions[i][0] == null)
- break;
- assertEquals(4, i);
- assertEquals("String Option in Category", ((IOption) catoptions[0][1]).getName());
- assertEquals(IOption.STRING, ((IOption) catoptions[0][1]).getValueType());
- assertEquals("overridden", ((IOption) catoptions[0][1]).getStringValue());
- assertEquals("Another String Option in Category", ((IOption) catoptions[1][1]).getName());
- assertEquals(IOption.STRING, ((IOption) catoptions[1][1]).getValueType());
- assertEquals("alsooverridden", ((IOption) catoptions[1][1]).getStringValue());
- assertEquals("Enumerated Option in Category", ((IOption) catoptions[2][1]).getName());
- assertEquals(IOption.ENUMERATED, ((IOption) catoptions[2][1]).getValueType());
- assertEquals("another.enum.option", ((IOption) catoptions[2][1]).getSelectedEnum());
- assertEquals("Boolean Option in Category", ((IOption) catoptions[3][1]).getName());
- assertEquals(IOption.BOOLEAN, ((IOption) catoptions[3][1]).getValueType());
- assertEquals(true, ((IOption) catoptions[3][1]).getBooleanValue());
- tool = tools[0];
- assertEquals("-Ld -Le -Lf -b overridden -stralsooverridden -e2", tool.getToolFlags());
-
- // Make sure that the build manager returns the default makefile generator (not null)
- assertNotNull(ManagedBuildManager.getBuildfileGenerator(configs[0]));
- }
-
- /*
- * Do a full sanity check on the root managed project.
- */
- private void checkRootManagedProject(IManagedProject managedProj, String testValue) throws BuildException {
- String expectedCleanCmd = "del /myworld";
- String expectedParserId = "org.eclipse.cdt.core.PE64";
- String[] expectedOSList = { "win32" };
- String[] expectedArchList = { "all" };
- assertTrue(managedProj.getProjectType().isTestProjectType());
- IConfiguration[] configs = managedProj.getConfigurations();
- if (configs[0].getArtifactName().equals("ManagedBuildTest")) {
- assertEquals(configs[0].getArtifactExtension(), newExt);
- } else {
- assertEquals(configs[0].getArtifactExtension(), rootExt);
- }
- assertEquals(expectedCleanCmd, configs[0].getCleanCommand());
- assertEquals("make", configs[0].getBuildCommand());
- IToolChain toolChain = configs[0].getToolChain();
- ITargetPlatform targetPlatform = toolChain.getTargetPlatform();
- String[] binaryParsers = targetPlatform.getBinaryParserList();
- assertEquals(binaryParsers.length, 1);
- assertEquals(binaryParsers[0], expectedParserId);
- assertTrue(Arrays.equals(expectedOSList, toolChain.getOSList()));
- assertTrue(Arrays.equals(expectedArchList, toolChain.getArchList()));
- // This configuration defines no errors parsers.
- assertNull(configs[0].getErrorParserIds());
- assertTrue(Arrays.equals(configs[0].getErrorParserList(), CCorePlugin.getDefault().getAllErrorParsersIDs()));
-
- // Tools
- ITool[] tools = configs[0].getTools();
- // Root Tool
- ITool rootTool = tools[0];
- assertEquals("Root Tool", rootTool.getName());
- // 6 Options are defined in the root tool
- IOption[] options = rootTool.getOptions();
- assertEquals(6, options.length);
- // First option is a 3-element list with 1 built-in
- assertEquals("List Option in Top", options[0].getName());
- assertEquals(IOption.STRING_LIST, options[0].getValueType());
- String[] valueList = options[0].getStringListValue();
- assertEquals(2, valueList.length);
- assertEquals("a", valueList[0]);
- assertEquals("b", valueList[1]);
- String[] builtInList = options[0].getBuiltIns();
- assertEquals(1, builtInList.length);
- assertEquals("c", builtInList[0]);
- assertEquals(options[0].getCommand(), "-L");
- // Next option is a boolean in top
- assertEquals("Boolean Option in Top", options[1].getName());
- assertEquals(IOption.BOOLEAN, options[1].getValueType());
- assertEquals(false, options[1].getBooleanValue());
- assertEquals("-b", options[1].getCommand());
- // Next option is a string category
- assertEquals("String Option in Category", options[2].getName());
- assertEquals(IOption.STRING, options[2].getValueType());
- assertEquals(testValue, options[2].getStringValue());
- // Next option is another string category
- assertEquals("Another String Option in Category", options[3].getName());
- assertEquals(IOption.STRING, options[3].getValueType());
- assertEquals("", options[3].getStringValue());
- assertEquals("-str", options[3].getCommand());
- // Next option is an enumerated
- assertEquals("Enumerated Option in Category", options[4].getName());
- assertEquals(IOption.ENUMERATED, options[4].getValueType());
- // Post-2.0 enums store the ID, not the string value
- assertEquals("default.enum.option", options[4].getSelectedEnum());
- assertEquals("-e1", options[4].getEnumCommand("default.enum.option"));
- // Need this methof to populate the UI selection widget
- valueList = options[4].getApplicableValues();
- assertEquals(2, valueList.length);
- assertEquals("Default Enum", valueList[0]);
- assertEquals("Another Enum", valueList[1]);
- // Test compatability with 1.2 scheme of getting the command from the name
- assertEquals("-e1", options[4].getEnumCommand(valueList[0]));
- assertEquals("-e2", options[4].getEnumCommand(valueList[1]));
- // Final option is another boolean
- assertEquals("Boolean Option in Category", options[5].getName());
- assertEquals(IOption.BOOLEAN, options[5].getValueType());
- assertEquals(false, options[5].getBooleanValue());
- assertEquals("", options[5].getCommand());
- assertEquals("-nob", options[5].getCommandFalse());
-
- // Option Categories
- IOptionCategory topCategory = rootTool.getTopOptionCategory();
- assertEquals("Root Tool", topCategory.getName());
- Object[][] catoptions = topCategory.getOptions(configs[0]);
- int i;
- for (i = 0; i < catoptions.length; i++)
- if (catoptions[i][0] == null)
- break;
- assertEquals(2, i);
- IOption catOption = (IOption) catoptions[0][1];
- assertEquals("List Option in Top", catOption.getName());
- catOption = (IOption) catoptions[1][1];
- assertEquals("Boolean Option in Top", catOption.getName());
- IOptionCategory[] categories = topCategory.getChildCategories();
- assertEquals(1, categories.length);
- assertEquals("Category", categories[0].getName());
- catoptions = categories[0].getOptions(configs[0]);
- for (i = 0; i < catoptions.length; i++)
- if (catoptions[i][0] == null)
- break;
- assertEquals(4, i);
- catOption = (IOption) catoptions[0][1];
- assertEquals("String Option in Category", catOption.getName());
- catOption = (IOption) catoptions[1][1];
- assertEquals("Another String Option in Category", catOption.getName());
- catOption = (IOption) catoptions[2][1];
- assertEquals("Enumerated Option in Category", catOption.getName());
- catOption = (IOption) catoptions[3][1];
- assertEquals("Boolean Option in Category", catOption.getName());
-
- // There should be 3 defined configs
- assertEquals(3, configs.length);
-
- // Root Config
- IConfiguration rootConfig = configs[0];
- assertEquals("Root Config", rootConfig.getName());
-
- // Tool elements
- tools = rootConfig.getTools();
- assertEquals(1, tools.length);
- assertEquals("Root Tool", tools[0].getName());
- assertEquals("-r", tools[0].getOutputFlag());
- assertTrue(tools[0].buildsFileType("foo"));
- assertTrue(tools[0].buildsFileType("bar"));
- assertTrue(tools[0].producesFileType("toor"));
- assertEquals("doIt", tools[0].getToolCommand());
- assertEquals("", tools[0].getOutputPrefix());
- // The root tool defines one valid header file extension
- assertTrue(rootTool.isHeaderFile("baz"));
- assertTrue(tools[0].isHeaderFile("baz"));
- assertEquals(ITool.FILTER_C, rootTool.getNatureFilter());
-
- // Partially Overriden Configuration
- assertEquals("Root Override Config", configs[1].getName());
- tools = configs[1].getTools();
- assertEquals(1, tools.length);
- assertEquals("Root Tool", tools[0].getName());
- topCategory = tools[0].getTopOptionCategory();
- catoptions = topCategory.getOptions(configs[1]);
- for (i = 0; i < catoptions.length; i++)
- if (catoptions[i][0] == null)
- break;
- assertEquals(2, i);
- catOption = (IOption) catoptions[0][1];
- assertEquals("List Option in Top", catOption.getName());
- valueList = catOption.getStringListValue();
- assertEquals("a", valueList[0]);
- assertEquals("b", valueList[1]);
- catOption = (IOption) catoptions[1][1];
- assertEquals("Boolean Option in Top", catOption.getName());
- assertEquals(true, catOption.getBooleanValue());
- assertEquals("-b", catOption.getCommand());
- categories = topCategory.getChildCategories();
- catoptions = categories[0].getOptions(configs[1]);
- for (i = 0; i < catoptions.length; i++)
- if (catoptions[i][0] == null)
- break;
- assertEquals(4, i);
- catOption = (IOption) catoptions[0][1];
- assertEquals("String Option in Category", catOption.getName());
- assertEquals("y", catOption.getStringValue());
- catOption = (IOption) catoptions[1][1];
- assertEquals("Another String Option in Category", catOption.getName());
- assertEquals("", catOption.getStringValue());
- catOption = (IOption) catoptions[2][1];
- assertEquals("Enumerated Option in Category", catOption.getName());
- valueList = catOption.getApplicableValues();
- assertEquals(2, valueList.length);
- assertEquals("Default Enum", valueList[0]);
- assertEquals("Another Enum", valueList[1]);
- catOption = (IOption) catoptions[2][1];
- assertEquals("-e1", catOption.getEnumCommand(valueList[0]));
- assertEquals("-e2", catOption.getEnumCommand(valueList[1]));
- assertEquals(1, tools.length);
- catOption = (IOption) catoptions[3][1];
- assertEquals("Boolean Option in Category", catOption.getName());
- assertEquals(false, catOption.getBooleanValue());
- assertEquals("", catOption.getCommand());
- assertEquals("-nob", catOption.getCommandFalse());
- assertEquals(1, tools.length);
- ITool tool = tools[0];
- assertNotNull(tool);
- assertEquals("Root Tool", tool.getName());
- assertEquals("-r", tool.getOutputFlag());
- assertTrue(tool.buildsFileType("foo"));
- assertTrue(tool.buildsFileType("bar"));
- assertTrue(tool.producesFileType("toor"));
- assertTrue(tool.isHeaderFile("baz"));
- assertEquals("doIt", tool.getToolCommand());
- assertEquals("-La -Lb -b y -e1 -nob", tool.getToolFlags());
-
- // Completely Overridden configuration
- assertEquals("Complete Override Config", configs[2].getName());
- tools = configs[2].getTools();
- assertEquals(1, tools.length);
- assertEquals("Root Tool", tools[0].getName());
- topCategory = tools[0].getTopOptionCategory();
- catoptions = topCategory.getOptions(configs[2]);
- for (i = 0; i < catoptions.length; i++)
- if (catoptions[i][0] == null)
- break;
- assertEquals(2, i);
- // Check that there's an string list with totally new values
- catOption = (IOption) catoptions[0][1];
- assertEquals("List Option in Top", catOption.getName());
- assertEquals(IOption.STRING_LIST, catOption.getValueType());
- valueList = catOption.getStringListValue();
- assertTrue(valueList.length == 3);
- assertEquals("d", valueList[0]);
- assertEquals("e", valueList[1]);
- assertEquals("f", valueList[2]);
- assertEquals("-L", catOption.getCommand());
- // and a true boolean (commands should not have changed)
- catOption = (IOption) catoptions[1][1];
- assertEquals("Boolean Option in Top", catOption.getName());
- assertEquals(IOption.BOOLEAN, catOption.getValueType());
- assertEquals(true, catOption.getBooleanValue());
- assertEquals("-b", catOption.getCommand());
- // Check that there's an overridden enumeration and string
- categories = topCategory.getChildCategories();
- catoptions = categories[0].getOptions(configs[2]);
- for (i = 0; i < catoptions.length; i++)
- if (catoptions[i][0] == null)
- break;
- assertEquals(4, i);
- catOption = (IOption) catoptions[0][1];
- assertEquals("String Option in Category", catOption.getName());
- assertEquals(IOption.STRING, catOption.getValueType());
- assertEquals("overridden", catOption.getStringValue());
- catOption = (IOption) catoptions[1][1];
- assertEquals("Another String Option in Category", catOption.getName());
- assertEquals(IOption.STRING, catOption.getValueType());
- assertEquals("alsooverridden", catOption.getStringValue());
- catOption = (IOption) catoptions[2][1];
- assertEquals("Enumerated Option in Category", catOption.getName());
- assertEquals(IOption.ENUMERATED, catOption.getValueType());
- assertEquals("another.enum.option", catOption.getSelectedEnum());
- catOption = (IOption) catoptions[3][1];
- assertEquals("Boolean Option in Category", catOption.getName());
- assertEquals(IOption.BOOLEAN, catOption.getValueType());
- assertEquals(true, catOption.getBooleanValue());
- tool = tools[0];
- assertEquals("-Ld -Le -Lf -b overridden -stralsooverridden -e2", tool.getToolFlags());
-
- // Make sure that the build manager returns the default makefile generator (not null)
- assertNotNull(ManagedBuildManager.getBuildfileGenerator(configs[0]));
- }
-
- /*
- * The Sub Sub project type has a reference to a tool that is defined
- * independently from the project type itself. This is a common pattern
- * for tools that are shared between many project types.
- *
- * The tool itself is defined as having two option categories, with
- * one option in each category. To test that the reference is properly
- * inheritted, the project type overrides the default value of the boolean
- * option.
- *
- * The test confirms that the basic settings are inheritted through the
- * reference, and that the overridden value is used instead of the
- * default. It also tests that the command can be overidden through a
- * tool reference.
- *
- * Finally, the string option in the configuration is overridden and the
- * test confirms that it contains both the overridden boolean that the
- * project type provides, and the overridden string that it provides.
- *
- * @param testSubSub
- */
- private void checkSubSubProjectType(IProjectType projType) {
- final String indyToolName = "Target Independent Tool";
- final String indyToolCommand = "RC.EXE";
- final String indyToolInputExt = "rc";
- final String indyToolOutputExt = "free";
- final String indyToolOutFlag = "/fo";
- final String indyToolHeader = "h";
- final String indyToolHeaderNot = "j";
- final String indyCatOne = "Free";
- final String indyCatTwo = "Chained";
- final String freeOptName = "String in Free";
- final String chainedOptName = "Boolean in Chained";
- final String freeOptValue = "Live free or die";
- final String newCmd = "Let the Wookie win";
- final String stringOverride = "The future language of slaves";
-
- IConfiguration[] configs = projType.getConfigurations();
- // Check the inherited clean command
- assertEquals("rm -yourworld", configs[0].getCleanCommand());
- // Check that the make command is overridden from parent
- assertEquals("nmake", configs[0].getBuildCommand());
- // Make sure we get the proper binary parser
- IToolChain toolChain = configs[0].getToolChain();
- ITargetPlatform targetPlatform = toolChain.getTargetPlatform();
- assertEquals("org.eclipse.cdt.core.ELF", targetPlatform.getBinaryParserList()[0]);
- // Make sure the os list is inherited
- String[] expectedOSList = { "win32", "linux", "solaris" };
- assertTrue(Arrays.equals(expectedOSList, toolChain.getOSList()));
- // Make sure the arch list is inherited
- String[] expectedArchList = { "x86", "ppc" };
- assertTrue(Arrays.equals(expectedArchList, toolChain.getArchList()));
-
- // Get the 5 configurations (3 from test, 1 from test sub and 1 from this)
- assertEquals(5, configs.length);
-
- // Check the tools. We should have 3 (1 from each parent and the one referenced).
- ITool[] tools = configs[0].getTools();
- assertEquals(3, tools.length);
- ITool toolRef = tools[0];
-
- // Make sure we get all the tool settings
- assertEquals(toolRef.getName(), indyToolName);
- assertEquals(toolRef.getToolCommand(), indyToolCommand);
- assertTrue(toolRef.buildsFileType(indyToolInputExt));
- assertEquals(toolRef.getOutputExtension(indyToolInputExt), indyToolOutputExt);
- assertEquals(toolRef.getOutputFlag(), indyToolOutFlag);
- assertTrue(toolRef.isHeaderFile(indyToolHeader));
- assertFalse(toolRef.isHeaderFile(indyToolHeaderNot));
- assertEquals(toolRef.getNatureFilter(), ITool.FILTER_BOTH);
- // Check out the referenced tool and make sure we get all option categories
- IOptionCategory topCategory = toolRef.getTopOptionCategory();
- IOptionCategory[] categories = topCategory.getChildCategories();
- assertEquals(1, categories.length);
- assertEquals(categories[0].getName(), indyCatOne);
- IOptionCategory[] subCategories = categories[0].getChildCategories();
- // Is the chained category a subcategory
- assertEquals(1, subCategories.length);
- assertEquals(subCategories[0].getName(), indyCatTwo);
- // Make sure the option in the top category is correct
- Object[][] optsInCat = categories[0].getOptions(configs[0]);
- int i;
- for (i = 0; i < optsInCat.length; i++)
- if (optsInCat[i][0] == null)
- break;
- assertEquals(1, i);
- IOption optCat = (IOption) optsInCat[0][1];
- assertEquals(freeOptName, optCat.getName());
- try {
- // We get the option categories and options from the tool itself, but the
- // tool reference will have a set of 0 to n option references that contain
- // overridden settings. In this case, the string is inheritted and should
- // not be reference
- assertEquals(IOption.STRING, optCat.getValueType());
- IOption stringOpt = toolRef.getOptionById(optCat.getId());
- assertTrue(stringOpt instanceof Option);
- assertEquals(freeOptValue, stringOpt.getStringValue());
- } catch (BuildException e1) {
- fail("Failed getting string value in subsub :" + e1.getLocalizedMessage());
- }
-
- // Do the same for the options in the child cat
- Object[][] optsInSubCat = subCategories[0].getOptions(configs[0]);
- for (i = 0; i < optsInSubCat.length; i++)
- if (optsInSubCat[i][0] == null)
- break;
- assertEquals(1, i);
- IOption booleanRef = toolRef.getOptionById(((IOption) optsInSubCat[0][1]).getId());
- assertEquals(chainedOptName, booleanRef.getName());
- try {
- assertEquals(IOption.BOOLEAN, booleanRef.getValueType());
- assertTrue(booleanRef.getBooleanValue());
- } catch (BuildException e) {
- fail("Failure getting boolean value in subsub: " + e.getLocalizedMessage());
- }
-
- // Test that the tool command can be changed through the reference
- toolRef.setToolCommand(newCmd);
- assertEquals(toolRef.getToolCommand(), newCmd);
-
- // Muck about with the options in the local config
- IConfiguration subSubConfig = projType.getConfiguration("sub.sub.config");
- assertNotNull(subSubConfig);
- ITool[] configTools = subSubConfig.getTools();
- // This tool ref is inherited from parent, so it does not belong to the config
- ITool configToolRef = configTools[0];
- assertNotNull(configToolRef);
- optCat = (IOption) optsInCat[0][1];
- IOption configStringOpt = configToolRef.getOptionById(optCat.getId());
- assertNotNull(configStringOpt);
- // Override the string option
- try {
- subSubConfig.setOption(configToolRef, configStringOpt, stringOverride);
- } catch (BuildException e) {
- fail("Failure setting string value in subsubconfiguration: " + e.getLocalizedMessage());
- }
- // Now the config should have a tool ref to the independent tool
- configTools = subSubConfig.getTools();
- configToolRef = configTools[0];
- assertNotNull(configToolRef);
-
- // Test that the string option is overridden in the configuration
- optsInCat = categories[0].getOptions(configs[0]);
- for (i = 0; i < optsInCat.length; i++)
- if (optsInCat[i][0] == null)
- break;
- assertEquals(1, i);
- optCat = (IOption) optsInCat[0][1];
- assertEquals(freeOptName, optCat.getName());
- configStringOpt = configToolRef.getOptionById(optCat.getId());
- try {
- assertEquals(stringOverride, configStringOpt.getStringValue());
- } catch (BuildException e) {
- fail("Failure getting string value in subsubconfiguration: " + e.getLocalizedMessage());
- }
- // The tool should also contain the boolean option set to true
- IOption optSubCat = (IOption) optsInSubCat[0][1];
- IOption configBoolOpt = configToolRef.getOptionById(optSubCat.getId());
- assertNotNull(configBoolOpt);
- try {
- assertTrue(configBoolOpt.getBooleanValue());
- } catch (BuildException e) {
- fail("Failure getting boolean value in subsubconfiguration: " + e.getLocalizedMessage());
- }
-
- // Override it in config and retest
- try {
- subSubConfig.setOption(configToolRef, configBoolOpt, false);
- } catch (BuildException e) {
- fail("Failure setting boolean value in subsubconfiguration: " + e.getLocalizedMessage());
- }
- optsInSubCat = subCategories[0].getOptions(configs[0]);
- for (i = 0; i < optsInSubCat.length; i++)
- if (optsInSubCat[i][0] == null)
- break;
- assertEquals(1, i);
- configBoolOpt = configToolRef.getOptionById(((IOption) optsInSubCat[0][1]).getId());
- assertEquals(chainedOptName, booleanRef.getName());
- try {
- assertFalse(configBoolOpt.getBooleanValue());
- } catch (BuildException e) {
- fail("Failure getting boolean value in subsubconfiguration: " + e.getLocalizedMessage());
- }
- }
-
- /*
- * Do a sanity check on the values in the sub-project type. Most of the
- * sanity on the how build model entries are read is performed in
- * the root project type check, so these tests just verify that the the sub
- * project type properly inherits from its parent. For the new options
- * in the sub project type, the test does a sanity check just to be complete.
- */
- private void checkSubProjectType(IProjectType projType) throws BuildException {
- final String expectedFlags = "-I/usr/include -I/opt/gnome/include -IC:\\home\\tester/include -I\"../includes\" x y z";
-
- IConfiguration[] configs = projType.getConfigurations();
- // Check the overridden clean command
- assertEquals("rm -yourworld", configs[0].getCleanCommand());
- // Make sure the projType inherits the make command
- assertEquals("make", configs[0].getBuildCommand());
- // Make sure the binary parser is hard-coded and available
- IToolChain toolChain = configs[0].getToolChain();
- ITargetPlatform targetPlatform = toolChain.getTargetPlatform();
- assertEquals("org.eclipse.cdt.core.PE64", targetPlatform.getBinaryParserList()[0]);
- String[] expectedOSList = { "win32", "linux", "solaris" };
- assertTrue(Arrays.equals(expectedOSList, toolChain.getOSList()));
- // Make sure the list is overridden
- String[] expectedArchList = { "x86", "ppc" };
- assertTrue(Arrays.equals(expectedArchList, toolChain.getArchList()));
-
- // Make sure this is a test projType
- assertTrue(projType.isTestProjectType());
- // Make sure the build artifact extension is there
- assertEquals(configs[0].getArtifactExtension(), subExt);
-
- // Get the tools for this projType
- ITool[] tools = configs[0].getTools();
- // Do we inherit properly from parent
- ITool rootTool = tools[0];
- assertEquals("Root Tool", rootTool.getName());
- // Now get the tool defined for this projType
- ITool subTool = tools[1];
- assertEquals("Sub Tool", subTool.getName());
- // Confirm that it has four options
- IOption[] subOpts = subTool.getOptions();
- assertEquals(5, subOpts.length);
- assertEquals("", subTool.getOutputFlag());
- assertTrue(subTool.buildsFileType("yarf"));
- assertTrue(subTool.producesFileType("bus"));
- assertEquals("", subTool.getToolCommand());
- assertEquals("lib", subTool.getOutputPrefix());
- assertTrue(subTool.isHeaderFile("arf"));
- assertTrue(subTool.isHeaderFile("barf"));
- assertEquals(ITool.FILTER_BOTH, subTool.getNatureFilter());
-
- // Do a sanity check on the options
- assertEquals("Include Paths", subOpts[0].getName());
- assertEquals(IOption.INCLUDE_PATH, subOpts[0].getValueType());
- String[] incPath = subOpts[0].getIncludePaths();
- assertEquals(2, incPath.length);
- assertEquals("/usr/include", incPath[0]);
- assertEquals("/opt/gnome/include", incPath[1]);
- String[] builtInPaths = subOpts[0].getBuiltIns();
- assertEquals(1, builtInPaths.length);
- assertEquals("/usr/gnu/include", builtInPaths[0]);
- assertEquals("-I", subOpts[0].getCommand());
- assertEquals(IOption.BROWSE_DIR, subOpts[0].getBrowseType());
-
- // There are no user-defined preprocessor symbols
- assertEquals("Defined Symbols", subOpts[1].getName());
- assertEquals(IOption.PREPROCESSOR_SYMBOLS, subOpts[1].getValueType());
- String[] defdSymbols = subOpts[1].getDefinedSymbols();
- assertEquals(0, defdSymbols.length);
- assertEquals("-D", subOpts[1].getCommand());
- // But there is a builtin
- String[] builtInSymbols = subOpts[1].getBuiltIns();
- assertEquals(1, builtInSymbols.length);
- assertEquals("BUILTIN", builtInSymbols[0]);
- // Broswe type should be none
- assertEquals(IOption.BROWSE_NONE, subOpts[1].getBrowseType());
-
- assertEquals("More Includes", subOpts[2].getName());
- assertEquals(IOption.INCLUDE_PATH, subOpts[2].getValueType());
- String[] moreIncPath = subOpts[2].getIncludePaths();
- assertEquals(2, moreIncPath.length);
- assertEquals("C:\\home\\tester/include", moreIncPath[0]);
- assertEquals("-I", subOpts[2].getCommand());
- assertEquals(IOption.BROWSE_DIR, subOpts[2].getBrowseType());
-
- // Check the user object option
- assertEquals("User Objects", subOpts[3].getName());
- assertEquals(IOption.OBJECTS, subOpts[3].getValueType());
- String[] objs = subOpts[3].getUserObjects();
- assertEquals(2, objs.length);
- assertEquals("obj1.o", objs[0]);
- assertEquals("obj2.o", objs[1]);
- assertEquals(IOption.BROWSE_FILE, subOpts[3].getBrowseType());
- assertEquals("", subOpts[3].getCommand());
-
- // There should be a string list with no command
- assertEquals("No Command StringList", subOpts[4].getName());
- assertEquals(IOption.STRING_LIST, subOpts[4].getValueType());
-
- // Make sure the tool flags look right
- assertEquals(subTool.getToolFlags(), expectedFlags);
-
- // Get the configs for this projType; it should inherit all the configs defined for the parent
- assertEquals(4, configs.length);
- assertEquals("Sub Config", configs[0].getName());
- assertEquals("Root Config", configs[1].getName());
- assertEquals("Root Override Config", configs[2].getName());
- assertEquals("Complete Override Config", configs[3].getName());
- }
-
- private void checkForwardProjectTypes(IProjectType parent, IProjectType child, IProjectType grandchild) {
- // check that the projType parent reference has been resolved.
- assertEquals(parent, child.getSuperClass());
- assertEquals(child, grandchild.getSuperClass());
-
- // get the parent tool
- IConfiguration[] parentConfigs = parent.getConfigurations();
- ITool[] parentTools = parentConfigs[0].getTools();
- assertEquals(1, parentTools.length);
- ITool parentTool = parentTools[0];
- assertNotNull(parentTool);
-
- // check option categories
- IOption option = parentTool.getOptionById("test.forward.option");
- assertNotNull(option);
- IOptionCategory[] firstLevel = parentTool.getTopOptionCategory().getChildCategories();
- assertEquals(1, firstLevel.length);
- IOptionCategory[] secondLevel = firstLevel[0].getChildCategories();
- assertEquals(1, secondLevel.length);
- assertEquals(0, secondLevel[0].getChildCategories().length);
- Object[][] optList = secondLevel[0].getOptions(parentConfigs[0]);
- int i;
- for (i = 0; i < optList.length; i++)
- if (optList[i][0] == null)
- break;
- assertEquals(1, i);
- assertEquals(option, optList[0][1]);
-
- // get the tool reference from the child
- IConfiguration[] childConfigs = child.getConfigurations();
- ITool[] childTools = childConfigs[0].getTools();
- assertEquals(1, childTools.length);
- ITool childToolRef = childTools[0];
- assertEquals(parentTool.getSuperClass(), childToolRef.getSuperClass());
-
- // get and check the option reference
- IOption optRef = childToolRef.getOptionById("test.forward.option");
- assertEquals(option, optRef);
-
- // get the tool reference from the grandchild
- IConfiguration[] grandConfigs = grandchild.getConfigurations();
- ITool[] grandTools = grandConfigs[0].getTools();
- assertEquals(1, grandTools.length);
- ITool grandToolRef = grandTools[0];
- assertEquals(parentTool.getSuperClass(), grandToolRef.getSuperClass());
-
- }
-
- public void checkProviderProjectType(IProjectType projType) throws Exception {
- Properties props = new Properties();
- props.load(getClass().getResourceAsStream("test_commands"));
-
- // check that this projType is in the file
- String command = props.getProperty(projType.getId());
- assertNotNull(command);
-
- IProjectType parent = projType.getSuperClass();
- assertNotNull(parent);
- assertEquals("test.forward.parent.target", parent.getId());
-
- IConfiguration[] configs = projType.getConfigurations();
- ITool toolRef = configs[0].getFilteredTools()[0];
- assertEquals(command, toolRef.getToolCommand());
- }
-
- /**
- * Remove all the project information associated with the project used during test.
- */
- public void cleanup() throws CoreException, IOException {
- ResourceHelper.cleanUp(getName());
- removeProject(projectName);
- removeProject(projectName2);
- }
-
- /* (non-Javadoc)
- * Create a new project named <code>name</code> or return the project in
- * the workspace of the same name if it exists.
- *
- * @param name The name of the project to create or retrieve.
- * @return
- * @throws CoreException
- */
- private IProject createProject(String name) throws CoreException {
- IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
- final IProject newProjectHandle = root.getProject(name);
- IProject project = null;
-
- if (!newProjectHandle.exists()) {
- IWorkspace workspace = ResourcesPlugin.getWorkspace();
- IWorkspaceDescription workspaceDesc = workspace.getDescription();
- workspaceDesc.setAutoBuilding(false);
- workspace.setDescription(workspaceDesc);
- IProjectDescription description = workspace.newProjectDescription(newProjectHandle.getName());
- //description.setLocation(root.getLocation());
- project = CCorePlugin.getDefault().createCProject(description, newProjectHandle, new NullProgressMonitor(),
- /*MakeCorePlugin.MAKE_PROJECT_ID*/ManagedBuilderCorePlugin.MANAGED_MAKE_PROJECT_ID);
-
- // Now associate the builder with the project
- ManagedBuildTestHelper.addManagedBuildNature(project);
- } else {
- IWorkspace workspace = ResourcesPlugin.getWorkspace();
- IWorkspaceRunnable runnable = new IWorkspaceRunnable() {
- @Override
- public void run(IProgressMonitor monitor) throws CoreException {
- newProjectHandle.refreshLocal(IResource.DEPTH_INFINITE, monitor);
- }
- };
- NullProgressMonitor monitor = new NullProgressMonitor();
- workspace.run(runnable, root, IWorkspace.AVOID_UPDATE, monitor);
- project = newProjectHandle;
- }
-
- // Open the project if we have to
- if (!project.isOpen()) {
- project.open(new NullProgressMonitor());
- }
-
- return project;
- }
-
- /**
- * Remove the <code>IProject</code> with the name specified in the argument from the
- * receiver's workspace.
- *
- * @param name
- */
- private void removeProject(String name) {
- IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
- IProject project = root.getProject(name);
- if (project.exists()) {
- try {
- Thread.sleep(1000);
- } catch (InterruptedException e1) {
- } finally {
- try {
- System.gc();
- System.runFinalization();
- project.delete(true, true, null);
- } catch (CoreException e2) {
- assertTrue(false);
- }
- }
- }
- }
-
- /**
- * @throws BuildException
- */
- public void testErrorParsers() throws BuildException {
- // Create new project
- IProject project = null;
- try {
- project = createProject(projectName2);
- // Now associate the builder with the project
- ManagedBuildTestHelper.addManagedBuildNature(project);
- IProjectDescription description = project.getDescription();
- // Make sure it has a managed nature
- if (description != null) {
- assertTrue(description.hasNature(ManagedCProjectNature.MNG_NATURE_ID));
- }
- } catch (CoreException e) {
- fail("Test failed on error parser project creation: " + e.getLocalizedMessage());
- }
-
- // Find the base project Type definition
- IProjectType projType = ManagedBuildManager.getProjectType("test.error.parsers");
- assertNotNull(projType);
-
- // Create the target for our project that builds a dummy executable
- IManagedProject newProj = ManagedBuildManager.createManagedProject(project, projType);
- assertEquals(newProj.getName(), projType.getName());
- ManagedBuildManager.setNewProjectVersion(project);
-
- ManagedBuildManager.getBuildInfo(project).setValid(true);
- // Initialize the path entry container
- IStatus initResult = ManagedBuildManager.initBuildInfoContainer(project);
- if (initResult.getCode() != IStatus.OK) {
- fail("Initializing build information failed for: " + project.getName() + " because: "
- + initResult.getMessage());
- }
-
- // Copy over the configs
- IConfiguration[] baseConfigs = projType.getConfigurations();
- for (int i = 0; i < baseConfigs.length; ++i) {
- newProj.createConfiguration(baseConfigs[i], baseConfigs[i].getId() + "." + i);
- }
-
- // Test this out
- checkErrorParsersProject(newProj);
-
- // Save, close, reopen and test again
- ManagedBuildManager.saveBuildInfo(project, true);
- ManagedBuildManager.removeBuildInfo(project);
- try {
- ResourceHelper.joinIndexerBeforeCleanup(getName());
- project.close(null);
- } catch (CoreException e) {
- fail("Failed on error parser project close: " + e.getLocalizedMessage());
- }
- try {
- project.open(null);
- } catch (CoreException e) {
- fail("Failed on error parser project open: " + e.getLocalizedMessage());
- }
-
- // Test that the default config was remembered
- IManagedBuildInfo info = ManagedBuildManager.getBuildInfo(project);
-
- // Check the rest of the default information
- checkErrorParsersProject(info.getManagedProject());
- ManagedBuildManager.removeBuildInfo(project);
- }
-
- /*
- * Do a sanity check on the error parsers target.
- */
- private void checkErrorParsersProject(IManagedProject proj) throws BuildException {
- // Target stuff
- String expectedBinParserId = "org.eclipse.cdt.core.PE64";
- IConfiguration[] configs = proj.getConfigurations();
- IToolChain toolChain = configs[0].getToolChain();
- ITargetPlatform targetPlatform = toolChain.getTargetPlatform();
- assertEquals(expectedBinParserId, targetPlatform.getBinaryParserList()[0]);
- // This target defines errors parsers. Check that the error parsers
- // have been assigned.
- assertEquals(
- "org.eclipse.cdt.core.CWDLocator;org.eclipse.cdt.core.GCCErrorParser;org.eclipse.cdt.core.GLDErrorParser;org.eclipse.cdt.core.GmakeErrorParser",
- configs[0].getErrorParserIds());
-
- // Tool
- ITool[] tools = configs[0].getTools();
- ITool rootTool = tools[0];
- assertEquals(1, tools.length);
- assertEquals("EP Tool", tools[0].getName());
- assertEquals("-o", tools[0].getOutputFlag());
- assertTrue(tools[0].buildsFileType("y"));
- assertTrue(tools[0].buildsFileType("x"));
- assertTrue(tools[0].producesFileType("xy"));
- assertEquals("EP", tools[0].getToolCommand());
- assertEquals(ITool.FILTER_C, rootTool.getNatureFilter());
-
- // There should be one defined configs
- assertEquals(1, configs.length);
- }
-
- /**
- * Test that the build artifact of a <code>ITarget</code> can be modified
- * programmatically.
- */
- public void testConfigBuildArtifact() throws CoreException {
- // Open the test project
- IProject project = createProject(projectName);
- IManagedBuildInfo info = ManagedBuildManager.getBuildInfo(project);
- assertNotNull(info);
- IManagedProject managedProj = info.getManagedProject();
- assertNotNull(managedProj);
- IConfiguration defaultConfig = info.getDefaultConfiguration();
- assertNotNull(defaultConfig);
-
- // Set the build artifact of the configuration
- String ext = defaultConfig.getArtifactExtension();
- String name = project.getName() + "." + ext;
- defaultConfig.setArtifactName(name);
-
- // Save, close, reopen and test again
- ManagedBuildManager.saveBuildInfo(project, false);
- ManagedBuildManager.removeBuildInfo(project);
- ResourceHelper.joinIndexerBeforeCleanup(getName());
- project.close(null);
- project.open(null);
-
- // Check the artifact name
- info = ManagedBuildManager.getBuildInfo(project);
- assertNotNull(info);
- managedProj = info.getManagedProject();
- assertNotNull(managedProj);
- defaultConfig = info.getDefaultConfiguration();
- assertNotNull(defaultConfig);
- assertEquals(name, defaultConfig.getArtifactName());
- }
-
- public void testThatAlwaysFails() {
- assertTrue(false);
- }
-
-}
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedBuildCoreTests_SharedToolOptions.java b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedBuildCoreTests_SharedToolOptions.java
deleted file mode 100644
index ff8afb403b1..00000000000
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedBuildCoreTests_SharedToolOptions.java
+++ /dev/null
@@ -1,566 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2011 Symbian Ltd and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Symbian - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.managedbuilder.core.tests;
-
-import java.net.URL;
-
-import org.eclipse.cdt.core.CCorePlugin;
-import org.eclipse.cdt.core.testplugin.ResourceHelper;
-import org.eclipse.cdt.managedbuilder.core.IConfiguration;
-import org.eclipse.cdt.managedbuilder.core.IManagedOptionValueHandler;
-import org.eclipse.cdt.managedbuilder.core.IManagedProject;
-import org.eclipse.cdt.managedbuilder.core.IOption;
-import org.eclipse.cdt.managedbuilder.core.IOptionCategory;
-import org.eclipse.cdt.managedbuilder.core.IProjectType;
-import org.eclipse.cdt.managedbuilder.core.ITool;
-import org.eclipse.cdt.managedbuilder.core.IToolChain;
-import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
-import org.eclipse.cdt.managedbuilder.core.ManagedBuilderCorePlugin;
-import org.eclipse.cdt.managedbuilder.core.ManagedCProjectNature;
-import org.eclipse.cdt.managedbuilder.core.ManagedOptionValueHandler;
-import org.eclipse.cdt.managedbuilder.testplugin.CTestPlugin;
-import org.eclipse.cdt.managedbuilder.testplugin.ManagedBuildTestHelper;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IProjectDescription;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IWorkspace;
-import org.eclipse.core.resources.IWorkspaceDescription;
-import org.eclipse.core.resources.IWorkspaceRoot;
-import org.eclipse.core.resources.IWorkspaceRunnable;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Platform;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-// TODO LK - write test for resource configurations + IOptionCategory.getOptions(config)
-// TODO LK - write tests for EVENT_OPEN call-backs
-// TODO LK - do not deprecate IOption.getParent() as suggested by Leo
-
-/*
- * These tests exercise CDT 3.0 shared tool options extensions
- */
-public class ManagedBuildCoreTests_SharedToolOptions extends TestCase {
-
- class IconComparator {
- static final int None = 0;
- static final int One = 1;
- static final int Two = 2;
-
- // The following uses a numbering scheme defined for
- // testCategory and testOption
-
- // Co-ordinates of option groups 2nd level that have icon 1
- int One_i[] = { 3, 2, 4, 7 };
- int One_j[] = { 1, 2, 1, 1 };
- // Co-ordinates of option groups 2nd level that have icon 1
- int Two_i[] = { 2, 6 };
- int Two_j[] = { 1, 1 };
-
- IconComparator() {
- assertEquals(One_i.length, One_j.length);
- assertEquals(Two_i.length, Two_j.length);
- }
-
- int Compare(int i, int j) {
- int k;
-
- // Check for icon 1
- for (k = 0; k < One_i.length; k++) {
- if ((i == One_i[k]) && (j == One_j[k])) {
- return One;
- }
- }
- // Check for icon 2
- for (k = 0; k < Two_i.length; k++) {
- if ((i == Two_i[k]) && (j == Two_j[k])) {
- return Two;
- }
- }
- // None of them
- return None;
- }
- }
-
- class ValueHandlerComparator {
- static final int MBS = 0;
- static final int TEST = 1;
-
- // The following uses a numbering scheme defined for
- // testCategory and testOption
-
- // Co-ordinates of option groups 2nd level that have a test value handler
- int Test_i[] = { 2, 2, 3, 5, 7 };
- int Test_j[] = { 1, 4, 2, 1, 1 };
- String Test_arg[] = { "Option2.1.1", "Option2.2.2", "Option3.1.2", "Option5.1", "Option7.1" };
- String last_arg;
-
- ValueHandlerComparator() {
- assertEquals(Test_i.length, Test_j.length);
- assertEquals(Test_i.length, Test_arg.length);
- last_arg = "";
- }
-
- int Compare(int i, int j) {
- int k;
-
- // Check for Test handler
- for (k = 0; k < Test_i.length; k++) {
- if ((i == Test_i[k]) && (j == Test_j[k])) {
- last_arg = Test_arg[k];
- return TEST;
- }
- }
- // None of them
- last_arg = "";
- return MBS;
- }
-
- String getArg() {
- return last_arg;
- }
- }
-
- // Constants
- private final String projectName = "test30_sto";
- private final String projectID = "test30_sto.dummy";
- private final String configID = "test30_sto.dummy.config";
- private final String configName = "Configuration for test30_sto";
-
- // Control variables
- private boolean testExtensionElements = true;
- private boolean testIsSetup = false;
-
- // Chain leading to tool, etc
- private IProjectType testProject;
- private IConfiguration testConfig;
- private IToolChain testToolChain;
-
- // Direct children of toolChain
- private ITool testTools[];
- private IOptionCategory testCategoryTop[];
- private IOption testOptionTop[];
-
- // 2nd level children (of toolChain and tool) mapped in the following pattern
- // onto the arrays:
- // tool_1: cat_1.1 cat_1.2 cat_1.3 ...
- // ...
- // tool_n: cat_n.1 catn.2
- // The same 2d-array is used to store top-level categories
- // n+1: topcat_1
- // ...
- // n+m: topcat_m
- private Object testCategory[][];
- private Object testOption[][];
-
- // Helper classes
- private IconComparator iconComparator;
- private ValueHandlerComparator valueHandlerComparator;
-
- public ManagedBuildCoreTests_SharedToolOptions(String name) {
- super(name);
-
- iconComparator = new IconComparator();
- valueHandlerComparator = new ValueHandlerComparator();
- }
-
- public static Test suite() {
- TestSuite suite = new TestSuite(ManagedBuildCoreTests_SharedToolOptions.class.getName());
-
- suite.addTest(new ManagedBuildCoreTests_SharedToolOptions("testIcons"));
- suite.addTest(new ManagedBuildCoreTests_SharedToolOptions("testValueHandlers"));
- suite.addTest(new ManagedBuildCoreTests_SharedToolOptions("testOptions"));
- suite.addTest(new ManagedBuildCoreTests_SharedToolOptions("testConfiguration"));
-
- return suite;
- }
-
- private void assertCorrectId(String s1, String s2) {
- if (testExtensionElements == true) {
- // A strict comparison is required
- assertTrue(s1.equals(s2));
- } else {
- // Compare for non-extension element Id's
- assertTrue(s1.startsWith(s2 + "."));
- }
- }
-
- private IProject createProject(String name) throws CoreException {
- IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
- final IProject newProjectHandle = root.getProject(name);
- IProject project = null;
-
- if (!newProjectHandle.exists()) {
- IWorkspace workspace = ResourcesPlugin.getWorkspace();
- IWorkspaceDescription workspaceDesc = workspace.getDescription();
- workspaceDesc.setAutoBuilding(false);
- workspace.setDescription(workspaceDesc);
- IProjectDescription description = workspace.newProjectDescription(newProjectHandle.getName());
- //description.setLocation(root.getLocation());
- project = CCorePlugin.getDefault().createCProject(description, newProjectHandle, new NullProgressMonitor(),
- ManagedBuilderCorePlugin.MANAGED_MAKE_PROJECT_ID);
- } else {
- IWorkspace workspace = ResourcesPlugin.getWorkspace();
- IWorkspaceRunnable runnable = new IWorkspaceRunnable() {
- @Override
- public void run(IProgressMonitor monitor) throws CoreException {
- newProjectHandle.refreshLocal(IResource.DEPTH_INFINITE, monitor);
- }
- };
- NullProgressMonitor monitor = new NullProgressMonitor();
- workspace.run(runnable, root, IWorkspace.AVOID_UPDATE, monitor);
- project = newProjectHandle;
- }
-
- // Open the project if we have to
- if (!project.isOpen()) {
- project.open(new NullProgressMonitor());
- }
-
- return project;
- }
-
- /**
- * Sets up the test environment for the default project
- */
- private void setupDefaultProject() throws Exception {
-
- // The assertCorrectId() call needs to be set up
- testExtensionElements = true;
- // Get all the key structures of our test and do some sanity checking
- //
- testProject = ManagedBuildManager.getProjectType(projectID);
- assertNotNull(testProject);
- assertTrue(testProject.isTestProjectType());
- assertFalse(testProject.isAbstract());
-
- // Get and check project configurations - only one
- //
- setupConfiguration();
- assertTrue(testConfig.isExtensionElement());
- }
-
- /**
- * Sets up the test configuration from the project set
- * in the test
- */
- private void setupConfiguration() throws Exception {
-
- IConfiguration[] configs = testProject.getConfigurations();
- assertNotNull(configs);
- assertEquals(configs.length, 1);
- testConfig = configs[0];
- assertEquals(testConfig.getId(), configID);
- assertEquals(testConfig.getName(), configName);
- }
-
- /**
- * Sets up the test environment for a project created from the
- * default project
- */
- private IProject setupProject() throws Exception {
-
- // The assertCorrectId() call needs to be set up
- testExtensionElements = false;
- // Create new project
- IProject project = null;
- try {
- project = createProject(projectName);
- // Now associate the builder with the project
- ManagedBuildTestHelper.addManagedBuildNature(project);
- IProjectDescription description = project.getDescription();
- // Make sure it has a managed nature
- if (description != null) {
- assertTrue(description.hasNature(ManagedCProjectNature.MNG_NATURE_ID));
- }
-
- } catch (CoreException e) {
- fail("Test failed on project creation: " + e.getLocalizedMessage());
- }
- // Find the base project type definition
- IProjectType projType = ManagedBuildManager.getProjectType(projectID);
- assertNotNull(projType);
- // Create a managed project
- IManagedProject newProject = ManagedBuildManager.createManagedProject(project, projType);
- assertEquals(newProject.getName(), projType.getName());
- assertFalse(newProject.equals(projType));
- ManagedBuildManager.setNewProjectVersion(project);
- // Set up the environment
- testProject = newProject.getProjectType();
- IConfiguration config = testProject.getConfiguration(configID);
- testConfig = newProject.createConfiguration(config, configID + ".12345678");
-
- return project;
- }
-
- /**
- * Sets up the test environment and does some initial checking.
- * Do not do this in the constructor, as it is part of the test.
- */
- private void setupTestEnvironment() throws Exception {
-
- int i;
-
- // Test ID's
- //
- // String configID = "test30_sto.dummy.config";
- // String configName = "Configuration for test30_sto";
- String toolChainID = "test30_sto.dummy.toolchain";
- String toolChainName = "Toolchain for test30_sto";
- // Toolchain Info
- int numTools = 4;
- String toolIDs = "test30_sto.dummy.tool.";
- int firstToolID = 1;
- // Top level option categories and groups
- // int numTopCategories = 3;
- String topCategoryIDs = "test30_sto.dummy.category.";
- int firstTopCategoryID = 5;
-
- // Sizes of some arrays
- int sizeCategoryTop = 0;
- int sizeOptionTop = 0;
- int sizeTools = 0;
-
- // Fetch toolchain
- //
- testToolChain = testConfig.getToolChain();
- assertNotNull(testToolChain);
- assertEquals(testToolChain.getName(), toolChainName);
- assertCorrectId(testToolChain.getId(), toolChainID);
-
- // Fetch and check tools list
- //
- testTools = testToolChain.getTools();
- assertNotNull(testTools);
- assertEquals(testTools.length, numTools);
- int toolNo = firstToolID;
- sizeTools = numTools;
- for (i = 0; i < sizeTools; i++) {
- assertCorrectId(testTools[i].getId(), toolIDs + toolNo);
- toolNo++;
- }
-
- // Fetch and check top level option categories and options
- //
- testCategoryTop = testToolChain.getChildCategories();
- testOptionTop = testToolChain.getOptions();
-
- if (testCategoryTop != null) {
- int categoryNo = firstTopCategoryID;
- sizeCategoryTop = testCategoryTop.length;
- for (i = 0; i < sizeCategoryTop; i++, categoryNo++) {
- String ID = testCategoryTop[i].getId();
- // Categories are always extension elements, so check
- // for an identical match
- assertEquals(ID, topCategoryIDs + categoryNo);
- }
- }
- if (testOptionTop != null) {
- sizeOptionTop = testOptionTop.length;
- }
-
- // Fetch and check 2nd level level option categories and options
- //
- testCategory = new Object[testTools.length + sizeCategoryTop][];
- testOption = new Object[testTools.length + sizeOptionTop][];
- for (i = 0; i < sizeTools; i++) {
- testCategory[i] = testTools[i].getChildCategories();
- testOption[i] = testTools[i].getOptions();
- // Make the arrays safe in case we have null references
- if (testCategory[i] == null) {
- testCategory[i] = new Object[0];
- }
- if (testOption[i] == null) {
- testOption[i] = new Object[0];
- }
- }
- // Add top level categories and options to test arrays
- //
- for (i = 0; i < sizeCategoryTop; i++) {
- testCategory[sizeTools + i] = new Object[1];
- testCategory[sizeTools + i][0] = testCategoryTop[i];
- }
- for (i = 0; i < sizeOptionTop; i++) {
- testOption[sizeTools + i] = new Object[1];
- testOption[sizeTools + i][0] = testOptionTop[i];
- }
- }
-
- /**
- * Check, whether icon paths in tool1 - tool3 have been created.
- * Check, whether icon paths in category 2.1 - 3.1 have been created
- */
- public void testIcons() throws Exception {
-
- // Set up the environment
- if (testIsSetup == false) {
- setupDefaultProject();
- setupTestEnvironment();
- }
-
- // Get path's of icons to compare against
- CTestPlugin me = CTestPlugin.getDefault();
- URL icon1 = Platform.asLocalURL(me.find(new Path("icons/one.gif"), null));
- URL icon2 = Platform.asLocalURL(me.find(new Path("icons/two.gif"), null));
-
- // Check the icons on tools
- assertToolIcon(testTools[0], icon1);
- assertToolIcon(testTools[1], null);
- assertToolIcon(testTools[2], icon2);
-
- // Check the top level and 2nd level categories
- int i;
- for (i = 0; i < testCategory.length; i++) {
-
- int j;
- for (j = 0; j < testCategory[i].length; j++) {
- URL url = ((IOptionCategory) testCategory[i][j]).getIconPath();
-
- switch (iconComparator.Compare(i + 1, j + 1)) {
- case IconComparator.None:
- assertEquals(url, null);
- break;
- case IconComparator.One:
- assertEquals(url, icon1);
- break;
- case IconComparator.Two:
- assertEquals(url, icon2);
- break;
- }
- }
- }
- }
-
- private void assertToolIcon(ITool tool, URL url) {
- assertTrue(tool instanceof IOptionCategory);
- IOptionCategory toolCategory = (IOptionCategory) tool;
- assertEquals(toolCategory.getIconPath(), url);
- }
-
- /**
- * Test whether option objects have value handlers as expected
- */
- public void testValueHandlers() throws Exception {
-
- // Set up the environment
- if (testIsSetup == false) {
- setupDefaultProject();
- setupTestEnvironment();
- }
-
- int i;
- for (i = 0; i < testOption.length; i++) {
-
- int j;
- for (j = 0; j < testOption[i].length; j++) {
- IOption option = (IOption) testOption[i][j];
- IManagedOptionValueHandler handler = option.getValueHandler();
- String handlerExtraArg = option.getValueHandlerExtraArgument();
-
- switch (valueHandlerComparator.Compare(i + 1, j + 1)) {
- case ValueHandlerComparator.MBS:
- assertEquals(ManagedOptionValueHandler.getManagedOptionValueHandler(), handler);
- break;
- case ValueHandlerComparator.TEST:
- assertTrue(handler instanceof TestValueHandler);
- assertEquals(valueHandlerComparator.getArg(), handlerExtraArg);
- break;
- }
- }
- }
- }
-
- /**
- * Test whether OptionCatgeory.getOptions(IConfiguration) works as expected
- */
- public void testOptions() throws Exception {
-
- // Set up the environment
- if (testIsSetup == false) {
- setupDefaultProject();
- setupTestEnvironment();
- }
- // Go over all option Categories
- int i;
- int j;
- Object[][] results;
- for (i = 0; i < testCategory.length; i++) {
- for (j = 0; j < testCategory[i].length; j++) {
- results = ((IOptionCategory) testCategory[i][j]).getOptions(testConfig);
- // Go over results and check the following:
- // A) results[k][0] must be the parent tool or toolChain
- // B) results[k][1] must be in testOption[i]
- for (int k = 0; k < results[0].length; k++) {
- if (results[k][0] == null) {
- assertNull(results[k][1]);
- break;
- }
- // A) results[k][0] must be the parent tool or toolChain
- switch (i) {
- case 0:
- case 1:
- case 2:
- case 3:
- // Tool
- assertTrue(results[k][0] instanceof ITool);
- assertEquals(results[k][0], testTools[i]);
- break;
- default:
- // ToolChain
- assertTrue(results[k][0] instanceof IToolChain);
- assertEquals(results[k][0], testToolChain);
- break;
- }
- // B) results[k][1] must be in testOption[i]
- // and its parent must be testCategory[i][j]
- boolean found = false;
- for (int l = 0; l < testOption[i].length; l++) {
- if (testOption[i][l] == results[k][1]) {
- found = true;
- break;
- }
- }
- assertTrue(found);
- assertEquals(((IOption) results[k][1]).getCategory(), testCategory[i][j]);
- }
- }
- }
- }
-
- /**
- * Test whether all the other tests work as expected for
- * non-extension configurations.
- */
- public void testConfiguration() throws Exception {
-
- // Set up the environment
- IProject project = setupProject();
- try {
- setupTestEnvironment();
- // Rerun the other tests, without setting the test up again
- testIsSetup = true;
- testIcons();
- testValueHandlers();
- testOptions();
- } finally {
- ResourceHelper.cleanUp(getName());
- project.delete(true, new NullProgressMonitor());
- }
- }
-}
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedBuildCore_SharedToolOptionsTests.java b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedBuildCore_SharedToolOptionsTests.java
new file mode 100644
index 00000000000..72b25cd1b9a
--- /dev/null
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedBuildCore_SharedToolOptionsTests.java
@@ -0,0 +1,566 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2011 Symbian Ltd and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Symbian - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.managedbuilder.core.tests;
+
+import java.net.URL;
+
+import org.eclipse.cdt.core.CCorePlugin;
+import org.eclipse.cdt.core.testplugin.ResourceHelper;
+import org.eclipse.cdt.managedbuilder.core.IConfiguration;
+import org.eclipse.cdt.managedbuilder.core.IManagedOptionValueHandler;
+import org.eclipse.cdt.managedbuilder.core.IManagedProject;
+import org.eclipse.cdt.managedbuilder.core.IOption;
+import org.eclipse.cdt.managedbuilder.core.IOptionCategory;
+import org.eclipse.cdt.managedbuilder.core.IProjectType;
+import org.eclipse.cdt.managedbuilder.core.ITool;
+import org.eclipse.cdt.managedbuilder.core.IToolChain;
+import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
+import org.eclipse.cdt.managedbuilder.core.ManagedBuilderCorePlugin;
+import org.eclipse.cdt.managedbuilder.core.ManagedCProjectNature;
+import org.eclipse.cdt.managedbuilder.core.ManagedOptionValueHandler;
+import org.eclipse.cdt.managedbuilder.testplugin.CTestPlugin;
+import org.eclipse.cdt.managedbuilder.testplugin.ManagedBuildTestHelper;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IProjectDescription;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.resources.IWorkspaceDescription;
+import org.eclipse.core.resources.IWorkspaceRoot;
+import org.eclipse.core.resources.IWorkspaceRunnable;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Platform;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+// TODO LK - write test for resource configurations + IOptionCategory.getOptions(config)
+// TODO LK - write tests for EVENT_OPEN call-backs
+// TODO LK - do not deprecate IOption.getParent() as suggested by Leo
+
+/*
+ * These tests exercise CDT 3.0 shared tool options extensions
+ */
+public class ManagedBuildCore_SharedToolOptionsTests extends TestCase {
+
+ class IconComparator {
+ static final int None = 0;
+ static final int One = 1;
+ static final int Two = 2;
+
+ // The following uses a numbering scheme defined for
+ // testCategory and testOption
+
+ // Co-ordinates of option groups 2nd level that have icon 1
+ int One_i[] = { 3, 2, 4, 7 };
+ int One_j[] = { 1, 2, 1, 1 };
+ // Co-ordinates of option groups 2nd level that have icon 1
+ int Two_i[] = { 2, 6 };
+ int Two_j[] = { 1, 1 };
+
+ IconComparator() {
+ assertEquals(One_i.length, One_j.length);
+ assertEquals(Two_i.length, Two_j.length);
+ }
+
+ int Compare(int i, int j) {
+ int k;
+
+ // Check for icon 1
+ for (k = 0; k < One_i.length; k++) {
+ if ((i == One_i[k]) && (j == One_j[k])) {
+ return One;
+ }
+ }
+ // Check for icon 2
+ for (k = 0; k < Two_i.length; k++) {
+ if ((i == Two_i[k]) && (j == Two_j[k])) {
+ return Two;
+ }
+ }
+ // None of them
+ return None;
+ }
+ }
+
+ class ValueHandlerComparator {
+ static final int MBS = 0;
+ static final int TEST = 1;
+
+ // The following uses a numbering scheme defined for
+ // testCategory and testOption
+
+ // Co-ordinates of option groups 2nd level that have a test value handler
+ int Test_i[] = { 2, 2, 3, 5, 7 };
+ int Test_j[] = { 1, 4, 2, 1, 1 };
+ String Test_arg[] = { "Option2.1.1", "Option2.2.2", "Option3.1.2", "Option5.1", "Option7.1" };
+ String last_arg;
+
+ ValueHandlerComparator() {
+ assertEquals(Test_i.length, Test_j.length);
+ assertEquals(Test_i.length, Test_arg.length);
+ last_arg = "";
+ }
+
+ int Compare(int i, int j) {
+ int k;
+
+ // Check for Test handler
+ for (k = 0; k < Test_i.length; k++) {
+ if ((i == Test_i[k]) && (j == Test_j[k])) {
+ last_arg = Test_arg[k];
+ return TEST;
+ }
+ }
+ // None of them
+ last_arg = "";
+ return MBS;
+ }
+
+ String getArg() {
+ return last_arg;
+ }
+ }
+
+ // Constants
+ private final String projectName = "test30_sto";
+ private final String projectID = "test30_sto.dummy";
+ private final String configID = "test30_sto.dummy.config";
+ private final String configName = "Configuration for test30_sto";
+
+ // Control variables
+ private boolean testExtensionElements = true;
+ private boolean testIsSetup = false;
+
+ // Chain leading to tool, etc
+ private IProjectType testProject;
+ private IConfiguration testConfig;
+ private IToolChain testToolChain;
+
+ // Direct children of toolChain
+ private ITool testTools[];
+ private IOptionCategory testCategoryTop[];
+ private IOption testOptionTop[];
+
+ // 2nd level children (of toolChain and tool) mapped in the following pattern
+ // onto the arrays:
+ // tool_1: cat_1.1 cat_1.2 cat_1.3 ...
+ // ...
+ // tool_n: cat_n.1 catn.2
+ // The same 2d-array is used to store top-level categories
+ // n+1: topcat_1
+ // ...
+ // n+m: topcat_m
+ private Object testCategory[][];
+ private Object testOption[][];
+
+ // Helper classes
+ private IconComparator iconComparator;
+ private ValueHandlerComparator valueHandlerComparator;
+
+ public ManagedBuildCore_SharedToolOptionsTests(String name) {
+ super(name);
+
+ iconComparator = new IconComparator();
+ valueHandlerComparator = new ValueHandlerComparator();
+ }
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(ManagedBuildCore_SharedToolOptionsTests.class.getName());
+
+ suite.addTest(new ManagedBuildCore_SharedToolOptionsTests("testIcons"));
+ suite.addTest(new ManagedBuildCore_SharedToolOptionsTests("testValueHandlers"));
+ suite.addTest(new ManagedBuildCore_SharedToolOptionsTests("testOptions"));
+ suite.addTest(new ManagedBuildCore_SharedToolOptionsTests("testConfiguration"));
+
+ return suite;
+ }
+
+ private void assertCorrectId(String s1, String s2) {
+ if (testExtensionElements == true) {
+ // A strict comparison is required
+ assertTrue(s1.equals(s2));
+ } else {
+ // Compare for non-extension element Id's
+ assertTrue(s1.startsWith(s2 + "."));
+ }
+ }
+
+ private IProject createProject(String name) throws CoreException {
+ IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
+ final IProject newProjectHandle = root.getProject(name);
+ IProject project = null;
+
+ if (!newProjectHandle.exists()) {
+ IWorkspace workspace = ResourcesPlugin.getWorkspace();
+ IWorkspaceDescription workspaceDesc = workspace.getDescription();
+ workspaceDesc.setAutoBuilding(false);
+ workspace.setDescription(workspaceDesc);
+ IProjectDescription description = workspace.newProjectDescription(newProjectHandle.getName());
+ //description.setLocation(root.getLocation());
+ project = CCorePlugin.getDefault().createCProject(description, newProjectHandle, new NullProgressMonitor(),
+ ManagedBuilderCorePlugin.MANAGED_MAKE_PROJECT_ID);
+ } else {
+ IWorkspace workspace = ResourcesPlugin.getWorkspace();
+ IWorkspaceRunnable runnable = new IWorkspaceRunnable() {
+ @Override
+ public void run(IProgressMonitor monitor) throws CoreException {
+ newProjectHandle.refreshLocal(IResource.DEPTH_INFINITE, monitor);
+ }
+ };
+ NullProgressMonitor monitor = new NullProgressMonitor();
+ workspace.run(runnable, root, IWorkspace.AVOID_UPDATE, monitor);
+ project = newProjectHandle;
+ }
+
+ // Open the project if we have to
+ if (!project.isOpen()) {
+ project.open(new NullProgressMonitor());
+ }
+
+ return project;
+ }
+
+ /**
+ * Sets up the test environment for the default project
+ */
+ private void setupDefaultProject() throws Exception {
+
+ // The assertCorrectId() call needs to be set up
+ testExtensionElements = true;
+ // Get all the key structures of our test and do some sanity checking
+ //
+ testProject = ManagedBuildManager.getProjectType(projectID);
+ assertNotNull(testProject);
+ assertTrue(testProject.isTestProjectType());
+ assertFalse(testProject.isAbstract());
+
+ // Get and check project configurations - only one
+ //
+ setupConfiguration();
+ assertTrue(testConfig.isExtensionElement());
+ }
+
+ /**
+ * Sets up the test configuration from the project set
+ * in the test
+ */
+ private void setupConfiguration() throws Exception {
+
+ IConfiguration[] configs = testProject.getConfigurations();
+ assertNotNull(configs);
+ assertEquals(configs.length, 1);
+ testConfig = configs[0];
+ assertEquals(testConfig.getId(), configID);
+ assertEquals(testConfig.getName(), configName);
+ }
+
+ /**
+ * Sets up the test environment for a project created from the
+ * default project
+ */
+ private IProject setupProject() throws Exception {
+
+ // The assertCorrectId() call needs to be set up
+ testExtensionElements = false;
+ // Create new project
+ IProject project = null;
+ try {
+ project = createProject(projectName);
+ // Now associate the builder with the project
+ ManagedBuildTestHelper.addManagedBuildNature(project);
+ IProjectDescription description = project.getDescription();
+ // Make sure it has a managed nature
+ if (description != null) {
+ assertTrue(description.hasNature(ManagedCProjectNature.MNG_NATURE_ID));
+ }
+
+ } catch (CoreException e) {
+ fail("Test failed on project creation: " + e.getLocalizedMessage());
+ }
+ // Find the base project type definition
+ IProjectType projType = ManagedBuildManager.getProjectType(projectID);
+ assertNotNull(projType);
+ // Create a managed project
+ IManagedProject newProject = ManagedBuildManager.createManagedProject(project, projType);
+ assertEquals(newProject.getName(), projType.getName());
+ assertFalse(newProject.equals(projType));
+ ManagedBuildManager.setNewProjectVersion(project);
+ // Set up the environment
+ testProject = newProject.getProjectType();
+ IConfiguration config = testProject.getConfiguration(configID);
+ testConfig = newProject.createConfiguration(config, configID + ".12345678");
+
+ return project;
+ }
+
+ /**
+ * Sets up the test environment and does some initial checking.
+ * Do not do this in the constructor, as it is part of the test.
+ */
+ private void setupTestEnvironment() throws Exception {
+
+ int i;
+
+ // Test ID's
+ //
+ // String configID = "test30_sto.dummy.config";
+ // String configName = "Configuration for test30_sto";
+ String toolChainID = "test30_sto.dummy.toolchain";
+ String toolChainName = "Toolchain for test30_sto";
+ // Toolchain Info
+ int numTools = 4;
+ String toolIDs = "test30_sto.dummy.tool.";
+ int firstToolID = 1;
+ // Top level option categories and groups
+ // int numTopCategories = 3;
+ String topCategoryIDs = "test30_sto.dummy.category.";
+ int firstTopCategoryID = 5;
+
+ // Sizes of some arrays
+ int sizeCategoryTop = 0;
+ int sizeOptionTop = 0;
+ int sizeTools = 0;
+
+ // Fetch toolchain
+ //
+ testToolChain = testConfig.getToolChain();
+ assertNotNull(testToolChain);
+ assertEquals(testToolChain.getName(), toolChainName);
+ assertCorrectId(testToolChain.getId(), toolChainID);
+
+ // Fetch and check tools list
+ //
+ testTools = testToolChain.getTools();
+ assertNotNull(testTools);
+ assertEquals(testTools.length, numTools);
+ int toolNo = firstToolID;
+ sizeTools = numTools;
+ for (i = 0; i < sizeTools; i++) {
+ assertCorrectId(testTools[i].getId(), toolIDs + toolNo);
+ toolNo++;
+ }
+
+ // Fetch and check top level option categories and options
+ //
+ testCategoryTop = testToolChain.getChildCategories();
+ testOptionTop = testToolChain.getOptions();
+
+ if (testCategoryTop != null) {
+ int categoryNo = firstTopCategoryID;
+ sizeCategoryTop = testCategoryTop.length;
+ for (i = 0; i < sizeCategoryTop; i++, categoryNo++) {
+ String ID = testCategoryTop[i].getId();
+ // Categories are always extension elements, so check
+ // for an identical match
+ assertEquals(ID, topCategoryIDs + categoryNo);
+ }
+ }
+ if (testOptionTop != null) {
+ sizeOptionTop = testOptionTop.length;
+ }
+
+ // Fetch and check 2nd level level option categories and options
+ //
+ testCategory = new Object[testTools.length + sizeCategoryTop][];
+ testOption = new Object[testTools.length + sizeOptionTop][];
+ for (i = 0; i < sizeTools; i++) {
+ testCategory[i] = testTools[i].getChildCategories();
+ testOption[i] = testTools[i].getOptions();
+ // Make the arrays safe in case we have null references
+ if (testCategory[i] == null) {
+ testCategory[i] = new Object[0];
+ }
+ if (testOption[i] == null) {
+ testOption[i] = new Object[0];
+ }
+ }
+ // Add top level categories and options to test arrays
+ //
+ for (i = 0; i < sizeCategoryTop; i++) {
+ testCategory[sizeTools + i] = new Object[1];
+ testCategory[sizeTools + i][0] = testCategoryTop[i];
+ }
+ for (i = 0; i < sizeOptionTop; i++) {
+ testOption[sizeTools + i] = new Object[1];
+ testOption[sizeTools + i][0] = testOptionTop[i];
+ }
+ }
+
+ /**
+ * Check, whether icon paths in tool1 - tool3 have been created.
+ * Check, whether icon paths in category 2.1 - 3.1 have been created
+ */
+ public void testIcons() throws Exception {
+
+ // Set up the environment
+ if (testIsSetup == false) {
+ setupDefaultProject();
+ setupTestEnvironment();
+ }
+
+ // Get path's of icons to compare against
+ CTestPlugin me = CTestPlugin.getDefault();
+ URL icon1 = Platform.asLocalURL(me.find(new Path("icons/one.gif"), null));
+ URL icon2 = Platform.asLocalURL(me.find(new Path("icons/two.gif"), null));
+
+ // Check the icons on tools
+ assertToolIcon(testTools[0], icon1);
+ assertToolIcon(testTools[1], null);
+ assertToolIcon(testTools[2], icon2);
+
+ // Check the top level and 2nd level categories
+ int i;
+ for (i = 0; i < testCategory.length; i++) {
+
+ int j;
+ for (j = 0; j < testCategory[i].length; j++) {
+ URL url = ((IOptionCategory) testCategory[i][j]).getIconPath();
+
+ switch (iconComparator.Compare(i + 1, j + 1)) {
+ case IconComparator.None:
+ assertEquals(url, null);
+ break;
+ case IconComparator.One:
+ assertEquals(url, icon1);
+ break;
+ case IconComparator.Two:
+ assertEquals(url, icon2);
+ break;
+ }
+ }
+ }
+ }
+
+ private void assertToolIcon(ITool tool, URL url) {
+ assertTrue(tool instanceof IOptionCategory);
+ IOptionCategory toolCategory = (IOptionCategory) tool;
+ assertEquals(toolCategory.getIconPath(), url);
+ }
+
+ /**
+ * Test whether option objects have value handlers as expected
+ */
+ public void testValueHandlers() throws Exception {
+
+ // Set up the environment
+ if (testIsSetup == false) {
+ setupDefaultProject();
+ setupTestEnvironment();
+ }
+
+ int i;
+ for (i = 0; i < testOption.length; i++) {
+
+ int j;
+ for (j = 0; j < testOption[i].length; j++) {
+ IOption option = (IOption) testOption[i][j];
+ IManagedOptionValueHandler handler = option.getValueHandler();
+ String handlerExtraArg = option.getValueHandlerExtraArgument();
+
+ switch (valueHandlerComparator.Compare(i + 1, j + 1)) {
+ case ValueHandlerComparator.MBS:
+ assertEquals(ManagedOptionValueHandler.getManagedOptionValueHandler(), handler);
+ break;
+ case ValueHandlerComparator.TEST:
+ assertTrue(handler instanceof TestValueHandler);
+ assertEquals(valueHandlerComparator.getArg(), handlerExtraArg);
+ break;
+ }
+ }
+ }
+ }
+
+ /**
+ * Test whether OptionCatgeory.getOptions(IConfiguration) works as expected
+ */
+ public void testOptions() throws Exception {
+
+ // Set up the environment
+ if (testIsSetup == false) {
+ setupDefaultProject();
+ setupTestEnvironment();
+ }
+ // Go over all option Categories
+ int i;
+ int j;
+ Object[][] results;
+ for (i = 0; i < testCategory.length; i++) {
+ for (j = 0; j < testCategory[i].length; j++) {
+ results = ((IOptionCategory) testCategory[i][j]).getOptions(testConfig);
+ // Go over results and check the following:
+ // A) results[k][0] must be the parent tool or toolChain
+ // B) results[k][1] must be in testOption[i]
+ for (int k = 0; k < results[0].length; k++) {
+ if (results[k][0] == null) {
+ assertNull(results[k][1]);
+ break;
+ }
+ // A) results[k][0] must be the parent tool or toolChain
+ switch (i) {
+ case 0:
+ case 1:
+ case 2:
+ case 3:
+ // Tool
+ assertTrue(results[k][0] instanceof ITool);
+ assertEquals(results[k][0], testTools[i]);
+ break;
+ default:
+ // ToolChain
+ assertTrue(results[k][0] instanceof IToolChain);
+ assertEquals(results[k][0], testToolChain);
+ break;
+ }
+ // B) results[k][1] must be in testOption[i]
+ // and its parent must be testCategory[i][j]
+ boolean found = false;
+ for (int l = 0; l < testOption[i].length; l++) {
+ if (testOption[i][l] == results[k][1]) {
+ found = true;
+ break;
+ }
+ }
+ assertTrue(found);
+ assertEquals(((IOption) results[k][1]).getCategory(), testCategory[i][j]);
+ }
+ }
+ }
+ }
+
+ /**
+ * Test whether all the other tests work as expected for
+ * non-extension configurations.
+ */
+ public void testConfiguration() throws Exception {
+
+ // Set up the environment
+ IProject project = setupProject();
+ try {
+ setupTestEnvironment();
+ // Rerun the other tests, without setting the test up again
+ testIsSetup = true;
+ testIcons();
+ testValueHandlers();
+ testOptions();
+ } finally {
+ ResourceHelper.cleanUp(getName());
+ project.delete(true, new NullProgressMonitor());
+ }
+ }
+}
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedBuildDependencyCalculatorTests.java b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedBuildDependencyCalculatorTests.java
index f1ce25d3ac6..c9d178f74a2 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedBuildDependencyCalculatorTests.java
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedBuildDependencyCalculatorTests.java
@@ -184,8 +184,8 @@ public class ManagedBuildDependencyCalculatorTests extends TestCase {
* test for dependency calculation as a side-effect of compilation
*/
public void test1DepCalc2() {
- IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("objects.mk"),
- Path.fromOSString("sources.mk"), Path.fromOSString("subdir.mk"),
+ IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("sources.mk"),
+ Path.fromOSString("subdir.mk"),
// This file is different using Cygwin vs GCC
//Path.fromOSString("main.d"),
Path.fromOSString("Sources/subdir.mk"), Path.fromOSString("Sources/func1.d"),
@@ -199,8 +199,8 @@ public class ManagedBuildDependencyCalculatorTests extends TestCase {
* test for dependency calculation using Echo, a 2nd conmpilation step, and post-processing
*/
public void test1DepCalc3() {
- IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("objects.mk"),
- Path.fromOSString("sources.mk"), Path.fromOSString("subdir.mk"),
+ IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("sources.mk"),
+ Path.fromOSString("subdir.mk"),
// This file is different using Cygwin vs GCC
//Path.fromOSString("main.d"),
Path.fromOSString("Sources/subdir.mk"), Path.fromOSString("Sources/func1.d"),
@@ -214,8 +214,8 @@ public class ManagedBuildDependencyCalculatorTests extends TestCase {
* test for dependency calculation that uses a separate, pre-build, step to generate dependency files
*/
public void test1DepCalcPreBuild() {
- IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("objects.mk"),
- Path.fromOSString("sources.mk"), Path.fromOSString("subdir.mk"),
+ IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("sources.mk"),
+ Path.fromOSString("subdir.mk"),
// This file is different using Cygwin vs GCC
//Path.fromOSString("main.d"),
Path.fromOSString("Sources/subdir.mk"), Path.fromOSString("Sources/func1.d"),
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedBuildDependencyLibsTests.java b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedBuildDependencyLibsTests.java
index 437cbeb2159..a304317667a 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedBuildDependencyLibsTests.java
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedBuildDependencyLibsTests.java
@@ -13,6 +13,10 @@
*******************************************************************************/
package org.eclipse.cdt.managedbuilder.core.tests;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.fail;
+
import java.util.ArrayList;
import java.util.List;
@@ -40,9 +44,9 @@ import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.OperationCanceledException;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
public class ManagedBuildDependencyLibsTests extends AbstractBuilderTest {
private static final String PROJ_PATH = "depLibsProjects";
@@ -52,19 +56,6 @@ public class ManagedBuildDependencyLibsTests extends AbstractBuilderTest {
private IToolChain[] allToolChains;
- public ManagedBuildDependencyLibsTests(String name) {
- super(name);
- }
-
- public static Test suite() {
- TestSuite suite = new TestSuite(ManagedBuildDependencyLibsTests.class.getName());
-
- suite.addTest(new ManagedBuildDependencyLibsTests("testDepLibs"));
- suite.addTest(new ManagedBuildDependencyLibsTests("testDepUObjs"));
- suite.addTest(new ManagedBuildDependencyLibsTests("testGetArtifactTimeStampEscapeURI_bug377295"));
- return suite;
- }
-
private void buildProject(IProject curProject) {
try {
@@ -84,27 +75,30 @@ public class ManagedBuildDependencyLibsTests extends AbstractBuilderTest {
}
@Override
- protected void setUp() throws Exception {
- super.setUp();
+ public void setUp() {
+ // Don't run super class setUp
+ }
+
+ @BeforeEach
+ public void setUpLocal() throws Exception {
allToolChains = ManagedBuildManager.getRealToolChains();
IWorkspaceDescription wsDescription = ResourcesPlugin.getWorkspace().getDescription();
wsDescription.setAutoBuilding(false);
ResourcesPlugin.getWorkspace().setDescription(wsDescription);
- assertNotNull("Cannot create tapp project", fTapp = ManagedBuildTestHelper.loadProject("tapp", PROJ_PATH));
- assertNotNull("Cannot create tlib project", fTlib = ManagedBuildTestHelper.loadProject("tlib", PROJ_PATH));
- assertNotNull("Cannot create tobjs project", fTobjs = ManagedBuildTestHelper.loadProject("tobjs", PROJ_PATH));
+ assertNotNull(fTapp = ManagedBuildTestHelper.loadProject("tapp", PROJ_PATH), "Cannot create tapp project");
+ assertNotNull(fTlib = ManagedBuildTestHelper.loadProject("tlib", PROJ_PATH), "Cannot create tlib project");
+ assertNotNull(fTobjs = ManagedBuildTestHelper.loadProject("tobjs", PROJ_PATH), "Cannot create tobjs project");
IProjectDescription projDescription = fTapp.getDescription();
projDescription.setReferencedProjects(new IProject[] { fTlib, fTobjs });
fTapp.setDescription(projDescription, new NullProgressMonitor());
IToolChain toolChain = setToolChain(fTapp, null);
- assertNotNull("No compatible tool chain.", toolChain);
+ assertNotNull(toolChain, "No compatible tool chain.");
setToolChain(fTlib, toolChain);
setToolChain(fTobjs, toolChain);
}
- @Override
- protected void tearDown() throws Exception {
- super.tearDown();
+ @AfterEach
+ public void tearDownLocal() throws Exception {
ManagedBuildTestHelper.removeProject(fTapp.getName());
ManagedBuildTestHelper.removeProject(fTlib.getName());
ManagedBuildTestHelper.removeProject(fTobjs.getName());
@@ -215,6 +209,7 @@ public class ManagedBuildDependencyLibsTests extends AbstractBuilderTest {
return name;
}
+ @Test
public void testDepLibs() {
buildProject(fTapp);
long timeStamp = getArtifactTimeStamp(fTapp);
@@ -238,6 +233,7 @@ public class ManagedBuildDependencyLibsTests extends AbstractBuilderTest {
}
}
+ @Test
public void testDepUObjs() {
buildProject(fTapp);
long timeStamp = getArtifactTimeStamp(fTapp);
@@ -264,6 +260,7 @@ public class ManagedBuildDependencyLibsTests extends AbstractBuilderTest {
// Tests that the URI used to get the time stamp of the artifact is escaped correctly
// See AdditionalInput.getArtifactTimeStamp(IToolChain toolChain)
+ @Test
public void testGetArtifactTimeStampEscapeURI_bug377295() throws CoreException {
setWorkspace("regressions");
final IProject project = loadProject("helloworldC");
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedBuildEnvironmentTests.java b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedBuildEnvironmentTests.java
index 6b707506294..09b0bee4a29 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedBuildEnvironmentTests.java
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedBuildEnvironmentTests.java
@@ -14,11 +14,11 @@
package org.eclipse.cdt.managedbuilder.core.tests;
+import org.eclipse.cdt.core.envvar.IEnvironmentVariable;
import org.eclipse.cdt.core.testplugin.ResourceHelper;
import org.eclipse.cdt.managedbuilder.core.IConfiguration;
import org.eclipse.cdt.managedbuilder.core.IManagedProject;
import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
-import org.eclipse.cdt.managedbuilder.envvar.IBuildEnvironmentVariable;
import org.eclipse.cdt.managedbuilder.envvar.IEnvironmentBuildPathsChangeListener;
import org.eclipse.cdt.managedbuilder.envvar.IEnvironmentVariableProvider;
import org.eclipse.core.resources.IProject;
@@ -32,29 +32,14 @@ import junit.framework.TestSuite;
*
* */
public class ManagedBuildEnvironmentTests extends TestCase {
- // final private String REQUIRED_TYPE = "cdt.managedbuild.target.testgnu.exe"; //$NON-NLS-1$
// test variable names
final private String NAME_CWD = "CWD"; //$NON-NLS-1$
final private String NAME_PWD = "PWD"; //$NON-NLS-1$
- // final private String NAME_CMN = "COMMON"; //$NON-NLS-1$
- // final private String NAME_WSP = "WSP"; //$NON-NLS-1$
- // final private String NAME_PRJI = "PRJI"; //$NON-NLS-1$
- // final private String NAME_PRJL = "PRJL"; //$NON-NLS-1$
- // final private String NAME_CFGI = "CFGI"; //$NON-NLS-1$
- // final private String NAME_CFGL = "CFGL"; //$NON-NLS-1$
- // final private String NAME_CFGX = "CFGX"; //$NON-NLS-1$
- // final private String NAME_CFG = "CFG"; //$NON-NLS-1$
- // final private String NAME_REM1 = "REMTST1";//$NON-NLS-1$
- // final private String NAME_REM2 = "REMTST2";//$NON-NLS-1$
// test variable values
final private String VAL_CWDPWD = "CWD_&_PWD_should not be changed"; //$NON-NLS-1$
- // final private String VAL_DUMMY1 = "/a/b/c"; //$NON-NLS-1$
- // final private String VAL_DUMMY2 = "/d/e/f"; //$NON-NLS-1$
final private String VAL_PRO_INC = "/project/inc"; //$NON-NLS-1$
final private String VAL_PRO_LIB = "/project/lib"; //$NON-NLS-1$
- // final private String LISTENER_DATA = "O1T1O1O2T2T1O1T1O2T2"; //$NON-NLS-1$
-
// delimiters
final private String DEL_WIN = ";"; //$NON-NLS-1$
final private String DEL_UNIX = ":"; //$NON-NLS-1$
@@ -82,16 +67,6 @@ public class ManagedBuildEnvironmentTests extends TestCase {
public static Test suite() {
TestSuite suite = new TestSuite(ManagedBuildEnvironmentTests.class/*.getName()*/);
- // suite.addTest(new ManagedBuildEnvironmentTests("testEnvNotDef")); //$NON-NLS-1$
- // suite.addTest(new ManagedBuildEnvironmentTests("testEnvUpper")); //$NON-NLS-1$
- // suite.addTest(new ManagedBuildEnvironmentTests("testEnvAppend")); //$NON-NLS-1$
- // suite.addTest(new ManagedBuildEnvironmentTests("testEnvCWDPWD")); //$NON-NLS-1$
- // suite.addTest(new ManagedBuildEnvironmentTests("testEnvSuppliers")); //$NON-NLS-1$
- // suite.addTest(new ManagedBuildEnvironmentTests("testEnvGetPath")); //$NON-NLS-1$
- // suite.addTest(new ManagedBuildEnvironmentTests("testEnvSubscribe")); //$NON-NLS-1$
- // suite.addTest(new ManagedBuildEnvironmentTests("testEnvGetParams")); //$NON-NLS-1$
- // suite.addTest(new ManagedBuildEnvironmentTests("testEnvRemove")); //$NON-NLS-1$
- // suite.addTest(new ManagedBuildEnvironmentTests("testEnvProvider")); //$NON-NLS-1$
return suite;
}
@@ -102,57 +77,6 @@ public class ManagedBuildEnvironmentTests extends TestCase {
super.tearDown();
}
- // Checking behaviour when vars are not defined (except system)
- public void testEnvNotDef() {
- doInit();
- assertNotNull("System vars", envProvider.getVariables(null, true, false)); //$NON-NLS-1$
- assertNotNull("Worksp. vars", envProvider.getVariables(worksp, true, false)); //$NON-NLS-1$
- assertNotNull("Project vars", envProvider.getVariables(mproj, true, false)); //$NON-NLS-1$
- IConfiguration[] cfgs = mproj.getConfigurations();
- for (int k = 0; k < cfgs.length; k++) {
- assertNotNull("Project vars[" + k + "]", //$NON-NLS-1$ //$NON-NLS-2$
- envProvider.getVariables(cfgs[k], true, false));
- }
- }
-
- /**
- * testEnvUpper - check uplevel variables
- * In each context, up-level vars should be returned
- */
- // public void testEnvUpper(){
- // doInit();
- // addTestVariables();
- // IBuildEnvironmentVariable[] a = envProvider.getVariables(null, true, false);
- // IBuildEnvironmentVariable[] b = envProvider.getVariables(worksp, true, false);
- // assertTrue(varListContainNames(a, b));
- // IBuildEnvironmentVariable[] c = envProvider.getVariables(mproj, true, false);
- // assertTrue(varListContainNames(b, c));
- //
- // IConfiguration[] cfgs = mproj.getConfigurations();
- // for (int k=0; k<cfgs.length; k++) {
- // IBuildEnvironmentVariable[] d = envProvider.getVariables(cfgs[k], true, false);
- // assertTrue(varListContainNames(c, d));
- // }
- // }
-
- /**
- *
- *
- */
- // public void testEnvAppend(){
- // doInit();
- //
- // IBuildEnvironmentVariable a = envProvider.getVariable(NAME_CMN, worksp, true, false);
- // assertEquals(NAME_WSP, a.getValue());
- //
- // assertNotNull(a = envProvider.getVariable(NAME_CMN, mproj, true, false));
- // assertEquals(NAME_WSP+DEL_UNIX+NAME_PRJI, a.getValue());
- //
- // IConfiguration cfg = mproj.getConfigurations()[0];
- // assertNotNull(a = envProvider.getVariable(NAME_CMN, cfg, true, false));
- // assertEquals(NAME_WSP+DEL_UNIX+NAME_PRJI+DEL_UNIX+NAME_CFGI, a.getValue());
- // }
-
/**
*
*
@@ -161,97 +85,18 @@ public class ManagedBuildEnvironmentTests extends TestCase {
doInit();
IConfiguration cfg = mproj.getConfigurations()[0];
// CWD/PWD vars should NOT be overwritten anywhere
- // assertNull(envProvider.getVariable(NAME_CWD, worksp, true, false));
- // assertNull(envProvider.getVariable(NAME_CWD, mproj, true, false));
- IBuildEnvironmentVariable a = envProvider.getVariable(NAME_CWD, cfg, true, false);
+ IEnvironmentVariable a = envProvider.getVariable(NAME_CWD, cfg, false);
assertNotNull(a);
if (VAL_CWDPWD.equals(a.getValue()))
fail("CWD should not be rewritten !"); //$NON-NLS-1$
- // assertNull(envProvider.getVariable(NAME_PWD, worksp, true, false));
- // assertNull(envProvider.getVariable(NAME_PWD, mproj, true, false));
- a = envProvider.getVariable(NAME_PWD, cfg, true, false);
+ a = envProvider.getVariable(NAME_PWD, cfg, false);
assertNotNull(a);
if (VAL_CWDPWD.equals(a.getValue()))
fail("PWD should not be rewritten !"); //$NON-NLS-1$
- // try to delete: should fail
- // UserDefinedEnvironmentSupplier usup = getSupplier(cfg, cfg.getName());
- // assertNull(usup.deleteVariable(NAME_CWD, cfg));
- // assertNull(usup.deleteVariable(NAME_PWD, cfg));
- // assertNotNull(envProvider.getVariable(NAME_CWD, cfg, true, false));
- // assertNotNull(envProvider.getVariable(NAME_PWD, cfg, true, false));
}
- /*
- public void testEnvSuppliers() {
- doInit();
-
- IEnvironmentVariableSupplier[] arrSupSys = envProvider.getSuppliers(null);
- assertEquals("System suppliers count not equal to 1", arrSupSys.length, 1); //$NON-NLS-1$
- IBuildEnvironmentVariable[] a = arrSupSys[0].getVariables(null);
- assertNotNull(a);
- IBuildEnvironmentVariable[] b = envProvider.getVariables(null, false, false);
- assertTrue(varListContainNames(a, b));
- assertTrue(varListContainNames(b, a));
-
- IEnvironmentVariableSupplier[] arrSupWrk = envProvider.getSuppliers(worksp);
- assertEquals("Workspace suppliers count not equal to 1", arrSupWrk.length, 1); //$NON-NLS-1$
- a = arrSupWrk[0].getVariables(worksp);
- assertNotNull(a);
- b = envProvider.getVariables(worksp, false, false);
- assertTrue(varListContainNames(a, b));
- assertTrue(varListContainNames(b, a));
-
- IEnvironmentVariableSupplier[] arrSupPro = envProvider.getSuppliers(mproj);
- assertEquals("Project suppliers count not equal to 2", arrSupPro.length, 2); //$NON-NLS-1$
-
- b = envProvider.getVariables(mproj, false, false);
- for (int k=0; k<arrSupPro.length; k++ ) {
- assertTrue(varListContainNames(arrSupPro[k].getVariables(mproj), b));
- }
-
- IConfiguration[] configs = mproj.getConfigurations();
- for (int j=0; j<configs.length; j++) {
- b = envProvider.getVariables(configs[j], false, false);
- IEnvironmentVariableSupplier[] arrSupCfg = envProvider.getSuppliers(configs[j]);
- assertEquals("Configuration suppliers count not equal to 3", arrSupCfg.length, 3); //$NON-NLS-1$
- for (int k=0; k<arrSupCfg.length; k++ ) {
- assertTrue(varListContainNames(arrSupCfg[k].getVariables(configs[j]), b));
- }
- }
- }
- */
- /*
- * plugin.xml contents:
- <projectType id="cdt.managedbuild.target.testgnu.exe">
- ...
- <configuration name="Dbg"
- ...
- <tool
- ...
- <envVarBuildPath
- pathType="buildpathInclude"
- variableList="CFGI,CFG0,PRJI">
- </envVarBuildPath>
- <envVarBuildPath
- pathType="buildpathLibrary"
- variableList="CFGL,PRJL">
- </envVarBuildPath>
- ...
- <configuration name="Rel"
- ...
- <tool
- ...
- <envVarBuildPath
- pathType="buildpathInclude"
- variableList="CFGI,CFG1,PRJI">
- </envVarBuildPath>
- <envVarBuildPath
- pathType="buildpathLibrary"
- variableList="CFGL,PRJL">
- </envVarBuildPath>
- */
public void rm_testEnvGetPath() {
doInit();
IConfiguration[] configs = mproj.getConfigurations();
@@ -276,85 +121,6 @@ public class ManagedBuildEnvironmentTests extends TestCase {
}
}
- // public void testEnvSubscribe(){
- // doInit();
- // IConfiguration[] configs = mproj.getConfigurations();
- //
- // IConfiguration cfg = configs[0];
- // UserDefinedEnvironmentSupplier usup = getSupplier(cfg, cfg.getName());
- // assertNotNull(usup);
- // try {
- //
- // usup.deleteVariable(NAME_CFGI,configs[0]);
- // usup.deleteVariable(NAME_CFGI,configs[1]);
- // usup.deleteVariable(NAME_CFG+"0",configs[0]);
- // usup.deleteVariable(NAME_CFG+"1",configs[0]);
- // usup.deleteVariable(NAME_CFG+"0",configs[1]);
- // usup.deleteVariable(NAME_CFG+"1",configs[1]);
- // usup.deleteVariable(NAME_CFGL,configs[0]);
- // usup.deleteVariable(NAME_CFGL,configs[1]);
- // usup.deleteVariable(NAME_PRJI,mproj);
- // usup.deleteVariable(NAME_PRJL,mproj);
- // usup.deleteVariable(NAME_CFGX,mproj);
- // listenerResult = ""; //$NON-NLS-1$
- //
- // envProvider.subscribe(listener);
- // // should affect config Deb
- // usup.createVariable(NAME_CFGI,VAL_DUMMY2,IBuildEnvironmentVariable.ENVVAR_REPLACE, DEL_UNIX, configs[0]);
- // assertEquals("Step 1", listenerResult, LISTENER_DATA.substring(0,2)); //$NON-NLS-1$
- // // should affect config Rel
- // usup.createVariable(NAME_CFGI,VAL_DUMMY2,IBuildEnvironmentVariable.ENVVAR_REPLACE, DEL_UNIX, configs[1]);
- // assertEquals("Step 2", listenerResult, LISTENER_DATA.substring(0,4)); //$NON-NLS-1$
- //
- // // should affect config Deb
- // usup.createVariable(NAME_CFG+"0",VAL_DUMMY2,IBuildEnvironmentVariable.ENVVAR_REPLACE, DEL_UNIX, configs[0]); //$NON-NLS-1$
- // assertEquals("Step 3", listenerResult, LISTENER_DATA.substring(0,6)); //$NON-NLS-1$
- // // should not affect anything - variable not in path of cfg 0
- // usup.createVariable(NAME_CFG+"1",VAL_DUMMY2,IBuildEnvironmentVariable.ENVVAR_REPLACE, DEL_UNIX, configs[0]); //$NON-NLS-1$
- // assertEquals("Step 4", listenerResult, LISTENER_DATA.substring(0,6)); //$NON-NLS-1$
- //
- // // should affect config Deb
- // usup.createVariable(NAME_CFGL,VAL_DUMMY2,IBuildEnvironmentVariable.ENVVAR_REPLACE, DEL_UNIX, configs[0]);
- // assertEquals("Step 5", listenerResult, LISTENER_DATA.substring(0,8)); //$NON-NLS-1$
- // // should affect config Rel
- // usup.createVariable(NAME_CFGL,VAL_DUMMY2,IBuildEnvironmentVariable.ENVVAR_REPLACE, DEL_UNIX, configs[1]);
- // assertEquals("Step 6", listenerResult, LISTENER_DATA.substring(0,10)); //$NON-NLS-1$
- //
- // // should not affect anything - variable not in path of cfg 1
- // usup.createVariable(NAME_CFG+"0",VAL_DUMMY2,IBuildEnvironmentVariable.ENVVAR_REPLACE, DEL_UNIX, configs[1]); //$NON-NLS-1$
- // assertEquals("Step 7", listenerResult, LISTENER_DATA.substring(0,10)); //$NON-NLS-1$
- // // should affect config Rel
- // usup.createVariable(NAME_CFG+"1",VAL_DUMMY2,IBuildEnvironmentVariable.ENVVAR_REPLACE, DEL_UNIX, configs[1]); //$NON-NLS-1$
- // assertEquals("Step 8", listenerResult, LISTENER_DATA.substring(0,12)); //$NON-NLS-1$
- //
- // // should affect both configurations
- // usup.createVariable(NAME_PRJI,VAL_DUMMY2,IBuildEnvironmentVariable.ENVVAR_REPLACE, DEL_UNIX, mproj);
- // assertEquals("Step 9", listenerResult, LISTENER_DATA.substring(0,16)); //$NON-NLS-1$
- // // should affect both configurations
- // usup.createVariable(NAME_PRJL,VAL_DUMMY2,IBuildEnvironmentVariable.ENVVAR_REPLACE, DEL_UNIX, mproj);
- // assertEquals("Step 10", listenerResult, LISTENER_DATA); //$NON-NLS-1$
- //
- //
- // // should not affect anything - no changes
- // usup.createVariable(NAME_PRJL,VAL_DUMMY2,IBuildEnvironmentVariable.ENVVAR_REPLACE, DEL_UNIX, mproj);
- // assertEquals("Step 11", listenerResult, LISTENER_DATA); //$NON-NLS-1$
- // // should not affect anything - variable not in path
- // usup.createVariable(NAME_CFGX,VAL_DUMMY2, IBuildEnvironmentVariable.ENVVAR_REPLACE, DEL_UNIX, mproj);
- // assertEquals("Step 12", listenerResult, LISTENER_DATA); //$NON-NLS-1$
- //
- // envProvider.unsubscribe(listener);
- //
- // // should NOT affect anything - subscription cancelled
- // usup.createVariable(NAME_PRJI,VAL_DUMMY1,IBuildEnvironmentVariable.ENVVAR_REPLACE, DEL_UNIX, mproj);
- // usup.createVariable(NAME_CFGI,VAL_DUMMY1,IBuildEnvironmentVariable.ENVVAR_REPLACE, DEL_UNIX, configs[0]);
- // usup.createVariable(NAME_CFGI,VAL_DUMMY1,IBuildEnvironmentVariable.ENVVAR_REPLACE, DEL_UNIX, configs[1]);
- // assertEquals("Step 13", listenerResult, LISTENER_DATA); //$NON-NLS-1$
- //
- // } catch (Exception e) {
- // fail("Failed to create configuration vars !"); //$NON-NLS-1$
- // }
- // }
-
/**
*
*
@@ -362,185 +128,43 @@ public class ManagedBuildEnvironmentTests extends TestCase {
public void testEnvGetParams() {
doInit();
IEnvironmentVariableProvider envProvider = ManagedBuildManager.getEnvironmentVariableProvider();
- IBuildEnvironmentVariable x = null;
- IBuildEnvironmentVariable y = null;
+
+ // if "path" and "PATH" exist they should be equal
+ IEnvironmentVariable x = envProvider.getVariable("PATH", mproj.getConfigurations()[0], false);
+ IEnvironmentVariable y = envProvider.getVariable("path", mproj.getConfigurations()[0], false);
+ assertNotNull(x);
+ if (y != null) {
+ assertFalse(x.getName().equals(y.getName()));
+ }
+
if (System.getProperty("os.name").toLowerCase().startsWith("windows")) { //$NON-NLS-1$ //$NON-NLS-2$
assertEquals(envProvider.getDefaultDelimiter(), DEL_WIN);
- assertFalse(envProvider.isVariableCaseSensitive());
- // these var instances are different although contents is equal.
- x = envProvider.getVariable("PATH", mproj.getConfigurations()[0], true, false);
- assertNotNull(x);
- y = envProvider.getVariable("path", mproj.getConfigurations()[0], true, false);
- assertNotNull(y);
- assertEquals(x.getName(), y.getName());
- assertEquals(x.getValue(), y.getValue());
} else {
assertEquals(envProvider.getDefaultDelimiter(), DEL_UNIX);
- assertTrue(envProvider.isVariableCaseSensitive());
- // "path" is different var (may absent);
- x = envProvider.getVariable("PATH", mproj.getConfigurations()[0], true, false);
- assertNotNull(x);
- y = envProvider.getVariable("path", mproj.getConfigurations()[0], true, false);
- if (y != null) {
- assertFalse(x.getName().equals(y.getName()));
- }
+
}
}
/**
- *
- *
- */
- // public void testEnvRemove(){
- // doInit();
- // IEnvironmentVariableProvider env = ManagedBuildManager.getEnvironmentVariableProvider();
- // UserDefinedEnvironmentSupplier usup = null;
- //
- // // create vars for removal tests
- // assertNotNull(usup = getSupplier(worksp, "Workspace")); //$NON-NLS-1$
- // try {
- // assertNotNull(usup.createVariable(NAME_REM1, VAL_DUMMY1, IBuildEnvironmentVariable.ENVVAR_REPLACE, DEL_UNIX, worksp));
- // assertNotNull(usup.createVariable(NAME_REM2, VAL_DUMMY1, IBuildEnvironmentVariable.ENVVAR_REPLACE, DEL_UNIX, worksp));
- // } catch (Exception e) { fail(e.getLocalizedMessage()); }
- //
- // assertNotNull(usup = getSupplier(mproj, "Project")); //$NON-NLS-1$
- // try {
- // assertNotNull(usup.createVariable(NAME_REM1, VAL_DUMMY2, IBuildEnvironmentVariable.ENVVAR_REMOVE, DEL_UNIX, mproj));
- // assertNotNull(usup.createVariable(NAME_REM2, VAL_DUMMY2, IBuildEnvironmentVariable.ENVVAR_APPEND, DEL_UNIX, mproj));
- // } catch (Exception e) { fail(e.getLocalizedMessage()); }
- //
- // IConfiguration cfg = mproj.getConfigurations()[0];
- // assertNotNull(usup = getSupplier(cfg, "Configuration 0")); //$NON-NLS-1$
- // try {
- // assertNotNull(usup.createVariable(NAME_REM1, VAL_CWDPWD, IBuildEnvironmentVariable.ENVVAR_REMOVE, DEL_UNIX, cfg));
- // assertNotNull(usup.createVariable(NAME_REM2, VAL_CWDPWD, IBuildEnvironmentVariable.ENVVAR_REMOVE, DEL_UNIX, cfg));
- // } catch (Exception e) { fail(e.getLocalizedMessage()); }
- //
- // // Check vars presence/absence on different levels
- // IBuildEnvironmentVariable a = env.getVariable(NAME_REM1, worksp, true, false);
- // IBuildEnvironmentVariable b = env.getVariable(NAME_REM2, worksp, true, false);
- // assertNotNull(a);
- // assertNotNull(b);
- // a = env.getVariable(NAME_REM1, mproj, true, false);
- // b = env.getVariable(NAME_REM2, mproj, true, false);
- // assertNull(a);
- // assertNotNull(b);
- // assertEquals(b.getValue(), VAL_DUMMY1 + DEL_UNIX + VAL_DUMMY2);
- // a = env.getVariable(NAME_REM1, cfg, true, false);
- // b = env.getVariable(NAME_REM2, cfg, true, false);
- // assertNull(a);
- // assertNull(b);
- // }
- /**
* testEnvProvider() -
*/
public void testEnvProvider() {
doInit();
- IBuildEnvironmentVariable a = envProvider.getVariable(TestMacro.PRJ_VAR, mproj.getConfigurations()[0], true,
- false);
+ IEnvironmentVariable a = envProvider.getVariable(TestMacro.PRJ_VAR, mproj.getConfigurations()[0], false);
assertNotNull(a);
assertEquals(TestMacro.PRJ_VAR + mproj.getName(), a.getValue());
IConfiguration[] cfgs = mproj.getConfigurations();
- a = envProvider.getVariable(TestMacro.CFG_VAR, cfgs[0], true, false);
+ a = envProvider.getVariable(TestMacro.CFG_VAR, cfgs[0], false);
assertNotNull(a);
assertEquals(TestMacro.CFG_VAR + cfgs[0].getName(), a.getValue());
// no provider for another configurations
- a = envProvider.getVariable(TestMacro.CFG_VAR, cfgs[1], true, false);
+ a = envProvider.getVariable(TestMacro.CFG_VAR, cfgs[1], false);
assertNull(a);
- // combination user-defined and provided variables
- // UserDefinedEnvironmentSupplier usup = getSupplier(cfgs[0], cfgs[0].getName());
- // usup.createVariable(TestMacro.PRJ_VAR, VAL_DUMMY1, IBuildEnvironmentVariable.ENVVAR_PREPEND, DEL_UNIX, cfgs[0]);
- // a = envProvider.getVariable(TestMacro.PRJ_VAR, cfgs[0], true, false);
- // assertNotNull(a);
- // assertEquals(VAL_DUMMY1+DEL_UNIX+TestMacro.PRJ_VAR+mproj.getName(), a.getValue());
}
- /**
- * This test is not used iun suite. It just prints variabes
- */
- // public void testEnvPrint(){
- // doInit();
- // printVar("s-Var", envProvider.getVariables(null, false, false)); //$NON-NLS-1$
- // printVar("w-Var", envProvider.getVariables(worksp, false, false)); //$NON-NLS-1$
- // printVar("p-Var", envProvider.getVariables(mproj, false, false)); //$NON-NLS-1$
- // IConfiguration[] cfgs = mproj.getConfigurations();
- // for (int k=0; k<cfgs.length; k++) {
- // printVar("c[" + k + "]-Var", envProvider.getVariables(cfgs[k], false, false)); //$NON-NLS-1$ //$NON-NLS-2$
- // }
- // }
-
- // Create all required user variables
-
- // public static UserDefinedEnvironmentSupplier getSupplier(Object obj, String objName) {
- // IEnvironmentVariableSupplier[] arrSup = null;
- // arrSup = ManagedBuildManager.getEnvironmentVariableProvider().getSuppliers(obj);
- // for (int i=0; i<arrSup.length; i++ ) {
- // if (arrSup[i] instanceof UserDefinedEnvironmentSupplier) {
- // return (UserDefinedEnvironmentSupplier) arrSup[i];
- // }
- // }
- // fail("Cannot access user variable supplier for " + objName); //$NON-NLS-1$
- // return null;
- // }
-
- /**
- *
- *
- * Note: CWD and PWD vars are not allowed to be added/changed
- */
- // private void addTestVariables() {
- // final int STD_MODE = IBuildEnvironmentVariable.ENVVAR_REPLACE;
- // UserDefinedEnvironmentSupplier usup = null;
- // usup = getSupplier(worksp, "Workspace"); //$NON-NLS-1$
- // try {
- // if (usup != null) {
- // assertNotNull(usup.createVariable(NAME_CMN, NAME_WSP, IBuildEnvironmentVariable.ENVVAR_APPEND, DEL_UNIX, worksp));
- // assertNotNull(usup.createVariable(NAME_WSP,VAL_DUMMY1, STD_MODE, DEL_UNIX, worksp));
- // assertNull(usup.createVariable(NAME_CWD,VAL_CWDPWD, STD_MODE, DEL_UNIX, worksp));
- // assertNull(usup.createVariable(NAME_PWD,VAL_CWDPWD, STD_MODE, DEL_UNIX, worksp));
- // }
- // } catch (Exception e) {
- // fail("Failed to create workspace vars " + e.getLocalizedMessage()); //$NON-NLS-1$
- // }
- //
- // usup = getSupplier(mproj, "Project"); //$NON-NLS-1$
- // try {
- // if (usup != null) {
- // assertNotNull(usup.createVariable(NAME_CMN, NAME_PRJI, IBuildEnvironmentVariable.ENVVAR_APPEND, DEL_UNIX, mproj));
- // assertNotNull(usup.createVariable(NAME_PRJI,VAL_PRO_INC, STD_MODE, DEL_UNIX, mproj));
- // assertNotNull(usup.createVariable(NAME_PRJL,VAL_PRO_LIB, STD_MODE, DEL_UNIX, mproj));
- // assertNull(usup.createVariable(NAME_CWD, VAL_CWDPWD, STD_MODE, DEL_UNIX, mproj));
- // assertNull(usup.createVariable(NAME_PWD, VAL_CWDPWD, STD_MODE, DEL_UNIX, mproj));
- // }
- // } catch (Exception e) {
- // fail("Failed to create project vars " + e.getLocalizedMessage()); //$NON-NLS-1$
- // }
- //
- // IConfiguration[] configs = mproj.getConfigurations();
- // for (int i = 0; i < 2; i++) { // only 2 first configs are affected
- // IConfiguration cfg = configs[i];
- // usup = getSupplier(cfg, "Configuration " + cfg.getName()); //$NON-NLS-1$
- // try {
- // if (usup != null) {
- // assertNotNull(usup.createVariable(NAME_CMN, NAME_CFGI, IBuildEnvironmentVariable.ENVVAR_APPEND, DEL_UNIX, cfg));
- // assertNotNull(usup.createVariable(NAME_CFGI, "/config/include/"+i, STD_MODE, DEL_UNIX, cfg)); //$NON-NLS-1$
- // assertNotNull(usup.createVariable(NAME_CFG+i,"/config"+i+"/include",STD_MODE, DEL_UNIX, cfg)); //$NON-NLS-1$ //$NON-NLS-2$
- // assertNotNull(usup.createVariable(NAME_CFGL, "/config/lib/"+i, STD_MODE, DEL_UNIX, cfg)); //$NON-NLS-1$
- // assertNotNull(usup.createVariable(NAME_CFGX, "/config/unused", STD_MODE, DEL_UNIX, cfg)); //$NON-NLS-1$
- // assertNull(usup.createVariable(NAME_CWD, VAL_CWDPWD, STD_MODE, DEL_UNIX, cfg));
- // assertNull(usup.createVariable(NAME_PWD, VAL_CWDPWD, STD_MODE, DEL_UNIX, cfg));
- // }
- // } catch (Exception e) {
- // fail("Failed to create configuration vars for <" + cfg.getName() + "> - "+ e.getLocalizedMessage()); //$NON-NLS-1$ //$NON-NLS-2$
- // }
- // }
- // try {
- // proj.build(IncrementalProjectBuilder.FULL_BUILD, null);
- // } catch (Exception e) {}
- // }
private void doInit() {
envProvider = ManagedBuildManager.getEnvironmentVariableProvider();
assertNotNull(envProvider);
@@ -553,45 +177,6 @@ public class ManagedBuildEnvironmentTests extends TestCase {
assertNotNull(worksp);
}
- /*
- * Print contents of env.var array, with given header.
- */
- // private void printVar(String head, IBuildEnvironmentVariable[] vars) {
- // if (vars != null) {
- // if (vars.length > 0) {
- // for (int i=0; i < vars.length; i++) {
- // System.out.println(head + "[" + i + "] " + //$NON-NLS-1$ //$NON-NLS-2$
- // vars[i].getName() + " = " + //$NON-NLS-1$
- // vars[i].getValue() + " / " + //$NON-NLS-1$
- // vars[i].getOperation() + vars[i].getDelimiter());
- // }
- // } else { System.out.println(head + ": array is empty"); } //$NON-NLS-1$
- // } else { System.out.println(head + ": array is null"); } //$NON-NLS-1$
- // }
-
- /*
- * check that ALL variables from list "a" have correspondence
- * in list "b"
- * empty list or null are treated as corresponding to anything
- */
- // private boolean varListContainNames(IBuildEnvironmentVariable[] a, IBuildEnvironmentVariable[] b) {
- // if (a == null) return true;
- // else if (a.length == 0) return true;
- // else if (b == null) return false;
- //
- // for (int i=0; i<a.length; i++) {
- // boolean found = false;
- // for (int j=0; j<b.length; j++) {
- // if (a[i].getName().equals(b[j].getName())) {
- // found = true;
- // break;
- // }
- // }
- // if (!found) return false;
- // }
- // return true;
- // }
-
/**
*
* @param head
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedBuildMacrosTests.java b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedBuildMacrosTests.java
index 72479b0b2aa..01d4bc5bd41 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedBuildMacrosTests.java
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedBuildMacrosTests.java
@@ -57,7 +57,6 @@ public class ManagedBuildMacrosTests extends TestCase {
IConfiguration[] cfgs = null;
IBuildMacroProvider mp = null;
IWorkspace worksp = null;
- boolean windows = false;
boolean print = false; // allows to print most of macros on console
boolean flag = false; // uplevel flag for getMacro/getMacros methods
@@ -92,24 +91,6 @@ public class ManagedBuildMacrosTests extends TestCase {
public static Test suite() {
TestSuite suite = new TestSuite(ManagedBuildMacrosTests.class);
- //$JUnit-BEGIN$
- // suite.addTest(new ManagedBuildMacrosTests("testMacroConf"));//$NON-NLS-1$
- // suite.addTest(new ManagedBuildMacrosTests("testMacroEEnv"));//$NON-NLS-1$
- // suite.addTest(new ManagedBuildMacrosTests("testMacroInst"));//$NON-NLS-1$
- // suite.addTest(new ManagedBuildMacrosTests("testMacroProj"));//$NON-NLS-1$
- // suite.addTest(new ManagedBuildMacrosTests("testMacroWrks"));//$NON-NLS-1$
- // suite.addTest(new ManagedBuildMacrosTests("testMacroOptS"));//$NON-NLS-1$
- // suite.addTest(new ManagedBuildMacrosTests("testMacroOptL"));//$NON-NLS-1$
- // suite.addTest(new ManagedBuildMacrosTests("testMacroFile"));//$NON-NLS-1$
- // suite.addTest(new ManagedBuildMacrosTests("testMacroContext"));//$NON-NLS-1$
- //
- // suite.addTest(new ManagedBuildMacrosTests("testMacroResolve"));//$NON-NLS-1$
- // suite.addTest(new ManagedBuildMacrosTests("testMacroResolveExceptions"));//$NON-NLS-1$
- // suite.addTest(new ManagedBuildMacrosTests("testMacroResolveLoop"));//$NON-NLS-1$
- // suite.addTest(new ManagedBuildMacrosTests("testMacroResolveMake"));//$NON-NLS-1$
- // suite.addTest(new ManagedBuildMacrosTests("testMacroResolveCase"));//$NON-NLS-1$
- // suite.addTest(new ManagedBuildMacrosTests("testMacroSave"));//$NON-NLS-1$
- //$JUnit-END$
return suite;
}
@@ -120,127 +101,6 @@ public class ManagedBuildMacrosTests extends TestCase {
super.tearDown();
}
- /**
- * testMacroConf()
- */
- /* public void testMacroConf(){
- doInit();
- ms = mp.getSuppliers(IBuildMacroProvider.CONTEXT_CONFIGURATION, cfgs[0]);
- assertNotNull(ms);
- assertEquals(ms.length, 4);
- assertTrue(addMacro(TEST, IBuildMacro.VALUE_TEXT, TST[IBuildMacroProvider.CONTEXT_CONFIGURATION],
- IBuildMacroProvider.CONTEXT_CONFIGURATION, cfgs[0]));
- functionCalled = 0;
- String[] a = printMacros(mp.getMacros(IBuildMacroProvider.CONTEXT_CONFIGURATION, cfgs[0], flag), "Configuration"); //$NON-NLS-1$
- assertEquals(GET_MANY_CONFIG, functionCalled);
- String[] b = {"ConfigName", "BuildArtifactFileExt", //$NON-NLS-1$ //$NON-NLS-2$
- "BuildArtifactFileBaseName", "TargetArchList", //$NON-NLS-1$ //$NON-NLS-2$
- "TargetOsList", "BuildArtifactFileName", //$NON-NLS-1$ //$NON-NLS-2$
- "PWD", "CWD", "ConfigDescription", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- TEST, "NEW_FOR_CFG" }; //$NON-NLS-1$
- assertTrue(arrayContains(b, a));
- }
- */
- /**
- * testMacroEEnv()
- */
- /* public void testMacroEEnv(){
- doInit();
- ms = mp.getSuppliers(IBuildMacroProvider.CONTEXT_ECLIPSEENV, null);
- assertNotNull(ms);
- assertEquals(ms.length, 1);
- assertFalse(addMacro(TEST, IBuildMacro.VALUE_TEXT, TST[IBuildMacroProvider.CONTEXT_ECLIPSEENV],
- IBuildMacroProvider.CONTEXT_ECLIPSEENV, null));
- String[] a = printMacros(mp.getMacros(IBuildMacroProvider.CONTEXT_ECLIPSEENV, null, flag), "EclipseEnv"); //$NON-NLS-1$
- // String[] b = {"PATH", "USERNAME"}; //$NON-NLS-1$ //$NON-NLS-2$
- // assertTrue(arrayContains(b, a));
- }
- */
- /**
- * testMacroInst()
- */
- /* public void testMacroInst(){
- doInit();
- ms = mp.getSuppliers(IBuildMacroProvider.CONTEXT_INSTALLATIONS, null);
- assertNotNull(ms);
- assertEquals(ms.length, 1);
- assertFalse(addMacro(TEST, IBuildMacro.VALUE_TEXT, TST[IBuildMacroProvider.CONTEXT_INSTALLATIONS],
- IBuildMacroProvider.CONTEXT_INSTALLATIONS, null));
- String[] a = printMacros(mp.getMacros(IBuildMacroProvider.CONTEXT_INSTALLATIONS, null, flag), "Installations "); //$NON-NLS-1$
- String[] b = {"HostArchName", "MBSVersion", //$NON-NLS-1$ //$NON-NLS-2$
- "EclipseVersion", "HostOsName", "CDTVersion"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- assertTrue(arrayContains(b, a));
- }
- */
- /**
- * testMacroProj()
- */
- // public void testMacroProj(){
- // doInit();
- // ms = mp.getSuppliers(IBuildMacroProvider.CONTEXT_PROJECT, mproj);
- // assertNotNull(ms);
- // assertEquals(ms.length, 4);
- // assertTrue(addMacro(TEST, IBuildMacro.VALUE_TEXT, TST[IBuildMacroProvider.CONTEXT_PROJECT],
- // IBuildMacroProvider.CONTEXT_PROJECT, mproj));
- // functionCalled = 0;
- // String[] a = printMacros(mp.getMacros(IBuildMacroProvider.CONTEXT_PROJECT, mproj, flag), "Project "); //$NON-NLS-1$
- // assertEquals(GET_MANY_PROJECT, functionCalled);
- // String[] b = {"ProjDirPath", "ProjName", //$NON-NLS-1$ //$NON-NLS-2$
- // TEST, "NEW_FOR_PRJ"}; //$NON-NLS-1$
- // assertTrue(arrayContains(b, a));
- // }
-
- /**
- * testMacroWrks()
- */
- // public void testMacroWrks(){
- // doInit();
- // ms = mp.getSuppliers(IBuildMacroProvider.CONTEXT_WORKSPACE, worksp);
- // assertNotNull(ms);
- // assertEquals(ms.length, 5);
- // assertTrue(addMacro(TEST, IBuildMacro.VALUE_TEXT, TST[IBuildMacroProvider.CONTEXT_WORKSPACE],
- // IBuildMacroProvider.CONTEXT_WORKSPACE, worksp));
- // String[] a = printMacros(mp.getMacros(IBuildMacroProvider.CONTEXT_WORKSPACE, worksp, flag), "Workspace "); //$NON-NLS-1$
- // String[] b = {"DirectoryDelimiter", "WorkspaceDirPath", //$NON-NLS-1$ //$NON-NLS-2$
- // "PathDelimiter", TEST}; //$NON-NLS-1$
- // assertTrue(arrayContains(b, a));
- // }
-
- /**
- * testMacroOptn()
- */
- // public void testMacroOptS(){
- // doInit();
- // IToolChain tc = cfgs[0].getToolChain();
- // ITool t = cfgs[0].getTools()[0];
- // IOption opt = t.getOptionById(OPT_IDS);
- // assertNotNull(opt);
- //
- // // standard check of suppliers # and attempt to add macro (should fail)
- // ms = mp.getSuppliers(IBuildMacroProvider.CONTEXT_OPTION, new OptionContextData(opt,t));
- // assertNotNull(ms);
- // assertEquals(ms.length, 1);
- // assertFalse(addMacro(TEST, IBuildMacro.VALUE_TEXT, TST[IBuildMacroProvider.CONTEXT_OPTION], IBuildMacroProvider.CONTEXT_OPTION, new OptionContextData(opt,t)));
- //
- // // modify value and check that macros is resolved
- // try {
- // opt = cfgs[0].setOption(t, opt, "222 " + INC_DEF); //$NON-NLS-1$
- // String a = mp.resolveValue(opt.getStringValue(), UNKNOWN, LISTSEP, IBuildMacroProvider.CONTEXT_OPTION, new OptionContextData(opt,t));
- // assertEquals(a, "222 111"); //$NON-NLS-1$
- // } catch (BuildMacroException e) { fail(e.getLocalizedMessage()); }
- // catch (BuildException e) { fail(e.getLocalizedMessage()); }
- //
- // // Create resource configuration
- // IResourceConfiguration rc = cfgs[0].createResourceConfiguration(getFile());
- // assertNotNull(rc);
- // IOption ropt = rc.getTools()[0].getOptionById(OPT_IDS);
- // try {
- // ropt = rc.setOption(rc.getTools()[0], ropt, "333 " + INC_DEF); //$NON-NLS-1$
- // String a = mp.resolveValue(ropt.getStringValue(), UNKNOWN, LISTSEP, IBuildMacroProvider.CONTEXT_OPTION, new OptionContextData(opt,t));
- // assertEquals(a, "333 111"); //$NON-NLS-1$
- // } catch (Exception e) { fail(e.getLocalizedMessage()); }
- // }
-
public void testMacroOptL() {
doInit();
ITool t = cfgs[0].getTools()[0];
@@ -294,128 +154,6 @@ public class ManagedBuildMacrosTests extends TestCase {
}
/**
- * testMacroFile()
- */
- // public void testMacroFile(){
- // final String EIN = "ein.c"; //$NON-NLS-1$
- // final String AUS = "aus.o"; //$NON-NLS-1$
- // final String UP2W = "..\\..\\"; //$NON-NLS-1$
- // final String UP2U = "../../"; //$NON-NLS-1$
- // final String KLMN = "\\k\\l\\m\\n\\o\\p\\"; //$NON-NLS-1$
- // final String[] names =
- // {"InputFileName", "InputFileExt", "InputFileBaseName", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- // "InputFileRelPath", "InputDirRelPath", //$NON-NLS-1$ //$NON-NLS-2$
- // "OutputFileName", "OutputFileExt", "OutputFileBaseName",//$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- // "OutputFileRelPath", "OutputDirRelPath"}; //$NON-NLS-1$ //$NON-NLS-2$
- // String[] values0wAbs =
- // {"a.f77", "f77", "a", "\\xz\\a.f77", "\\xz\\", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
- // "b.exe", "exe", "b", "\\tmp\\b.exe", "\\tmp\\"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
- // final String[] values0wRel =
- // {EIN, "c", "ein", UP2W+EIN, UP2W, //$NON-NLS-1$ //$NON-NLS-2$
- // AUS, "o", "aus", UP2W+AUS, UP2W}; //$NON-NLS-1$ //$NON-NLS-2$
- //
- // final String[] values0u =
- // {EIN, "c", "ein", UP2U+EIN, UP2U, //$NON-NLS-1$ //$NON-NLS-2$
- // AUS, "o", "aus", UP2U+AUS, UP2U}; //$NON-NLS-1$ //$NON-NLS-2$
- //
- // final String[] values1 =
- // {"$(notdir $<)", "$(suffix $(notdir $<))", //$NON-NLS-1$ //$NON-NLS-2$
- // "$(basename $(notdir $<))", "$<", "$(dir $<)", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- // "$(notdir $@)", "$(suffix $(notdir $@))", //$NON-NLS-1$ //$NON-NLS-2$
- // "$(basename $(notdir $@))", "$@", "$(dir $@)"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- //
- // FileContextData fd = null;
- //
- // doInit();
- // ITool t = cfgs[0].getTools()[0];
- // assertNotNull(t);
- // IOption opt = t.getOptionById(OPT_IDS);
- //
- // String dir=null;
- // try {
- // dir = mp.getMacro("WorkspaceDirPath", IBuildMacroProvider.CONTEXT_WORKSPACE, worksp, flag).getStringValue(); //$NON-NLS-1$
- // } catch (BuildMacroException e) { fail(e.getLocalizedMessage()); }
- // IPath p = (new Path(dir)).addTrailingSeparator();
- //
- // if (windows) {
- // // check behaviour in case of different disks usage
- //
- // // config #4 has changed BuilderMakeFileGenerator, #0 has standard one
- // IBuildEnvironmentVariable cwdvar = ManagedBuildManager.getEnvironmentVariableProvider().getVariable("CWD", cfgs[0], false, true); //$NON-NLS-1$
- // String dev0 = Path.fromOSString(cwdvar.getValue()).getDevice().toUpperCase();
- // String dev1 = (dev0.startsWith("C")) ? "D:" : "C:"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- // values0wAbs[3] = dev1 + values0wAbs[3];
- // values0wAbs[4] = dev1 + values0wAbs[4];
- // values0wAbs[8] = dev1 + values0wAbs[8];
- // values0wAbs[9] = dev1 + values0wAbs[9];
- //
- // fd = new FileContextData(new Path(values0wAbs[3]), new Path(values0wAbs[8]),opt,t);
- // for (int i=0; i<names.length; i++)
- // try {
- // assertEquals(values0wAbs[i], mp.getMacro(names[i], IBuildMacroProvider.CONTEXT_FILE, fd, flag).getStringValue());
- // } catch (BuildMacroException e) { fail(e.getLocalizedMessage()); }
- //
- // // check that relative path are reported OK
- // fd = new FileContextData(p.append(EIN), p.append(AUS),opt,t);
- // for (int i=0; i<names.length; i++)
- // try {
- // assertEquals(values0wRel[i], mp.getMacro(names[i], IBuildMacroProvider.CONTEXT_FILE, fd, flag).getStringValue());
- // } catch (BuildMacroException e) { fail(e.getLocalizedMessage()); }
- //
- //// //TODO:
- //// // check paths using changed BuilderMakeFileGenerator in cfg "Five"
- /////*
- //// int index = 4;
- //// ManagedBuildManager.setDefaultConfiguration(proj, cfgs[index]);
- //// OptionContextData op = new OptionContextData(cfgs[index].getTools()[0].getOptions()[0], cfgs[index].getToolChain());
- //// String p0 = dev0 + KLMN;
- //// fd = new FileContextData(new Path(p0+EIN), new Path(p0+AUS), op);
- //// assertNotNull(fd);
- //// //TODO: the same dir, upper dir, lower dir
- //// try {
- //// TestMacro.topBuildDir = Path.fromOSString(p0);
- //// assertEquals(p0+EIN, mp.getMacro(names[3], IBuildMacroProvider.CONTEXT_FILE, fd, flag).getStringValue());
- //// assertEquals(p0, mp.getMacro(names[4], IBuildMacroProvider.CONTEXT_FILE, fd, flag).getStringValue());
- //// assertEquals(p0+AUS, mp.getMacro(names[8], IBuildMacroProvider.CONTEXT_FILE, fd, flag).getStringValue());
- //// assertEquals(p0, mp.getMacro(names[9], IBuildMacroProvider.CONTEXT_FILE, fd, flag).getStringValue());
- ////// p0 = Path.fromOSString(p0).removeLastSegments(2).addTrailingSeparator().toOSString();
- ////// p0 = dev0+KLMN+"x\\";
- ////// TestMacro.topBuildDir = Path.fromOSString(p0);
- //// assertEquals(p0+EIN, mp.getMacro(names[3], IBuildMacroProvider.CONTEXT_FILE, fd, flag).getStringValue());
- //// assertEquals(p0, mp.getMacro(names[4], IBuildMacroProvider.CONTEXT_FILE, fd, flag).getStringValue());
- //// assertEquals(p0+AUS, mp.getMacro(names[8], IBuildMacroProvider.CONTEXT_FILE, fd, flag).getStringValue());
- //// assertEquals(p0, mp.getMacro(names[9], IBuildMacroProvider.CONTEXT_FILE, fd, flag).getStringValue());
- //// } catch (BuildMacroException e) { fail(e.getLocalizedMessage()); }
- ////// */
- //
- //
- // } else {
- // // check relative path only
- // fd = new FileContextData(p.append(EIN), p.append(AUS),opt,t);
- // for (int i=0; i<names.length; i++)
- // try {
- // assertEquals(values0u[i], mp.getMacro(names[i], IBuildMacroProvider.CONTEXT_FILE, fd, flag).getStringValue());
- // } catch (BuildMacroException e) { fail(e.getLocalizedMessage()); }
- // }
- //
- // // check supplier's parameters
- // assertNotNull(fd);
- // ms = mp.getSuppliers(IBuildMacroProvider.CONTEXT_FILE, fd);
- // assertNotNull(ms);
- // assertEquals(ms.length, 1);
- // assertFalse(addMacro(TEST, IBuildMacro.VALUE_TEXT,
- // TST[IBuildMacroProvider.CONTEXT_FILE], IBuildMacroProvider.CONTEXT_FILE, fd));
- //
- // // For config #3, macros should contain lines specified in plugin.xml
- // opt = cfgs[1].getTools()[0].getOptions()[0];
- // fd = new FileContextData(p.append(EIN), p.append(AUS),opt,cfgs[1].getTools()[0]);
- // for (int i=0; i<names.length; i++)
- // try {
- // assertEquals(values1[i], mp.getMacro(names[i], IBuildMacroProvider.CONTEXT_FILE, fd, flag).getStringValue());
- // } catch (BuildMacroException e) { fail(e.getLocalizedMessage()); }
- // }
-
- /**
* testMacroContext()
*/
public void rm_testMacroContext() {
@@ -436,62 +174,6 @@ public class ManagedBuildMacrosTests extends TestCase {
}
/**
- * testMacroResolve()
- */
- // public void testMacroResolve(){
- // doInit();
- // ms = mp.getSuppliers(IBuildMacroProvider.CONTEXT_WORKSPACE, worksp);
- // assertNotNull(ms);
- // String[] lst = {"AAA", "BBB", "CCC"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- // assertTrue(addMacro("LST", IBuildMacro.VALUE_TEXT_LIST, lst, //$NON-NLS-1$
- // IBuildMacroProvider.CONTEXT_WORKSPACE, worksp));
- // assertTrue(addMacro("ONE", IBuildMacro.VALUE_TEXT, "EIN", //$NON-NLS-1$ //$NON-NLS-2$
- // IBuildMacroProvider.CONTEXT_WORKSPACE, worksp));
- // //
- // assertTrue(addMacro("L1", IBuildMacro.VALUE_TEXT, "nested L1-${L2}-L1", //$NON-NLS-1$ //$NON-NLS-2$
- // IBuildMacroProvider.CONTEXT_WORKSPACE, worksp));
- // assertTrue(addMacro("L2", IBuildMacro.VALUE_TEXT, "L2-${L3}-L2", //$NON-NLS-1$ //$NON-NLS-2$
- // IBuildMacroProvider.CONTEXT_WORKSPACE, worksp));
- // assertTrue(addMacro("L3", IBuildMacro.VALUE_TEXT, "L3-${L4}-L3", //$NON-NLS-1$ //$NON-NLS-2$
- // IBuildMacroProvider.CONTEXT_WORKSPACE, worksp));
- // assertTrue(addMacro("L4", IBuildMacro.VALUE_TEXT, "L4", //$NON-NLS-1$ //$NON-NLS-2$
- // IBuildMacroProvider.CONTEXT_WORKSPACE, worksp));
- //
- // ms = mp.getSuppliers(IBuildMacroProvider.CONTEXT_PROJECT, mproj);
- // assertNotNull(ms);
- // assertTrue(addMacro("TWO", IBuildMacro.VALUE_TEXT, "ZWEI", //$NON-NLS-1$ //$NON-NLS-2$
- // IBuildMacroProvider.CONTEXT_PROJECT, mproj));
- // ms = mp.getSuppliers(IBuildMacroProvider.CONTEXT_CONFIGURATION, cfgs[0]);
- // assertNotNull(ms);
- // assertTrue(addMacro("three", IBuildMacro.VALUE_TEXT, "DREI", //$NON-NLS-1$ //$NON-NLS-2$
- // IBuildMacroProvider.CONTEXT_CONFIGURATION, cfgs[0]));
- //
- //
- // // check normal workflow
- // try {
- // final String pattern = "${ONE} - ${TWO} - ${three} -> ${LST}"; //$NON-NLS-1$
- // String a = mp.resolveValue(pattern, UNKNOWN, LISTSEP,
- // IBuildMacroProvider.CONTEXT_CONFIGURATION, cfgs[0]);
- // String b = mp.resolveValue(pattern, UNKNOWN, LISTSEP,
- // IBuildMacroProvider.CONTEXT_PROJECT, mproj);
- // String c = mp.resolveValue(pattern, UNKNOWN, LISTSEP,
- // IBuildMacroProvider.CONTEXT_WORKSPACE, worksp);
- // String d = mp.resolveValue("${L1}", UNKNOWN, LISTSEP, //$NON-NLS-1$
- // IBuildMacroProvider.CONTEXT_WORKSPACE, worksp);
- // String e = mp.resolveValue("${one} - ${Two} - ${THREE} -> ${lst}", UNKNOWN, LISTSEP, //$NON-NLS-1$
- // IBuildMacroProvider.CONTEXT_CONFIGURATION, cfgs[0]);
- //
- // assertEquals(a, "EIN - ZWEI - DREI -> AAA|BBB|CCC"); //$NON-NLS-1$
- // assertEquals(b, "EIN - ZWEI - <HZ> -> AAA|BBB|CCC"); //$NON-NLS-1$
- // assertEquals(c, "EIN - <HZ> - <HZ> -> AAA|BBB|CCC"); //$NON-NLS-1$
- // assertEquals(d, "nested L1-L2-L3-L4-L3-L2-L1"); //$NON-NLS-1$
- // assertEquals(e, "<HZ> - <HZ> - <HZ> -> <HZ>"); //$NON-NLS-1$
- // } catch (BuildMacroException e) {
- // fail("Exception while resolving: " + e.getLocalizedMessage()); //$NON-NLS-1$
- // }
- // }
-
- /**
* testMacroResolveExceptions()
*/
public void testMacroResolveExceptions() {
@@ -516,181 +198,6 @@ public class ManagedBuildMacrosTests extends TestCase {
assertTrue("Exception not raised for undefined delimiter", exceptionRaised); //$NON-NLS-1$
}
- /**
- * testMacroResolveLoop()
- */
- // public void testMacroResolveLoop() {
- // doInit();
- // int ctx = IBuildMacroProvider.CONTEXT_WORKSPACE;
- // Object obj = worksp;
- // ms = mp.getSuppliers(ctx, obj);
- // assertNotNull(ms);
- //
- // // check state before macros added (should be OK)
- // try {
- // mp.checkIntegrity(ctx, obj);
- // } catch (BuildMacroException e) {
- // fail("Macros integrity check is failed"); //$NON-NLS-1$
- // }
- //
- // // create macro which references to undefined macro
- // assertTrue(addMacro("B1", IBuildMacro.VALUE_TEXT, "B1-${B2}", ctx, obj)); //$NON-NLS-1$ //$NON-NLS-2$
- // rmMacro("B2", ctx, obj); // usually it does not exist, but to be sure... //$NON-NLS-1$
- //
- // // check state after macro added (should be exception)
- // try {
- // mp.checkIntegrity(ctx, obj);
- // fail("Macros misintegrity (ref to undefined) is not detected"); //$NON-NLS-1$
- // } catch (BuildMacroException e) {}
- //
- // // create "dead loop" of nested macros
- // assertTrue(addMacro("B2", IBuildMacro.VALUE_TEXT, "B2-${B3}", ctx, obj)); //$NON-NLS-1$ //$NON-NLS-2$
- // assertTrue(addMacro("B3", IBuildMacro.VALUE_TEXT, "B3-${B1}", ctx, obj)); //$NON-NLS-1$ //$NON-NLS-2$
- //
- // // check state after macros added (should be exception)
- // try {
- // mp.checkIntegrity(ctx, obj);
- // fail("Macros misintegrity (dead loop) is not detected"); //$NON-NLS-1$
- // } catch (BuildMacroException e) {}
- //
- // // remove "dead loop" of nested macros
- // assertTrue(rmMacro("B1", ctx, obj)); //$NON-NLS-1$
- // assertTrue(rmMacro("B2", ctx, obj)); //$NON-NLS-1$
- // assertTrue(rmMacro("B3", ctx, obj)); //$NON-NLS-1$
- //
- // // check state after macros removed (should be OK)
- // try {
- // mp.checkIntegrity(ctx, obj);
- // } catch (BuildMacroException e) {
- // fail("Macros integrity check is failed " + e.getLocalizedMessage()); //$NON-NLS-1$
- // }
- // }
- /**
- * testMacroResolveMake()
- */
- /*
- public void testMacroResolveMake(){
- final String p1 = "USERNAME: "; //$NON-NLS-1$
- final String p2 = "${USERNAME} "; //$NON-NLS-1$
- final String p3 = "PATH: "; //$NON-NLS-1$
- final String p4 = "${PATH} "; //$NON-NLS-1$
- final String p5 = "HostOsName: ${HostOsName} WorkspaceDirPath: ${WorkspaceDirPath}"; //$NON-NLS-1$
- final String ein1 = p1 + p2 + p3;
- final String ein2 = p4 + p5;
- final String ein = ein1 + ein2;
- final String aus1 = "@USERNAME "; //$NON-NLS-1$
- final String aus2 = "@PATH "; //$NON-NLS-1$
- doInit();
- // Config #0 contains "variableFormat" macro = "@=". Result: 2 first macros NOT resolved
- try {
- UserDefinedEnvironmentSupplier env = EnvironmentVariableProvider.fUserSupplier;
- env.createVariable("PATH","",IBuildEnvironmentVariable.ENVVAR_PREPEND,null,worksp);
- env.createVariable("USERNAME","",IBuildEnvironmentVariable.ENVVAR_PREPEND,null,worksp);
- functionCalled = 0;
- String a = mp.resolveValueToMakefileFormat(ein, UNKNOWN, LISTSEP, IBuildMacroProvider.CONTEXT_CONFIGURATION, cfgs[0]);
- String b = p1 + aus1 + p3 + mp.resolveValue(ein2, UNKNOWN, LISTSEP, IBuildMacroProvider.CONTEXT_CONFIGURATION, cfgs[0]);
- assertEquals(a, b); // Env var names should not be resolved but converted to Makefile format
- a = mp.resolveValueToMakefileFormat(ein, UNKNOWN, LISTSEP, IBuildMacroProvider.CONTEXT_PROJECT, mproj);
- assertEquals(a, b); // Project context should return the same as default configuration
- } catch (BuildMacroException e) {
- fail(e.getLocalizedMessage());
- }
- // Config #1 does not contain "variableFormat" macro. Result: all macros resolved.
- try {
- String a = mp.resolveValue(ein, UNKNOWN, LISTSEP, IBuildMacroProvider.CONTEXT_CONFIGURATION, cfgs[1]);
- String b = mp.resolveValueToMakefileFormat(ein, UNKNOWN, LISTSEP, IBuildMacroProvider.CONTEXT_CONFIGURATION, cfgs[1]);
- assertEquals(a, b);
- } catch (BuildMacroException e) {
- fail(e.getLocalizedMessage());
- }
- // check that "isReservedName" was not called before
- assertEquals(functionCalled & RESERVED_NAME, 0);
-
- // Config #2 contains "...Supplier" macro. Result: PATH unresolved, USERNAME resolved.
- try {
- String a = mp.resolveValue(p1 + p2, UNKNOWN, LISTSEP, IBuildMacroProvider.CONTEXT_CONFIGURATION, cfgs[2]);
- String b = mp.resolveValue(p5, UNKNOWN, LISTSEP, IBuildMacroProvider.CONTEXT_CONFIGURATION, cfgs[2]);
- a = a + p3 + aus2 + b; // USERNAME: xxx PATH: @PATH HostOsName: xxx ...
- b = mp.resolveValueToMakefileFormat(ein, UNKNOWN, LISTSEP, IBuildMacroProvider.CONTEXT_CONFIGURATION, cfgs[2]);
- assertEquals(a, b);
- // check that "isReservedName" has been called
- assertEquals(functionCalled & RESERVED_NAME, RESERVED_NAME);
- } catch (BuildMacroException e) {
- fail(e.getLocalizedMessage());
- }
- }
- */
-
- /**
- * testMacroResolveCase()
- */
- // public void testMacroResolveCase(){
- // doInit();
- // addVars();
- // final String winOut1 = "@CASETEST uppercase uppercase uppercase"; //$NON-NLS-1$
- // final String winOut2 = "@CASETEST @CASETEST @CASETEST @CASETEST"; //$NON-NLS-1$
- //
- // final String unixOut1 = "@CASETEST capitalize lowercase upper2low"; //$NON-NLS-1$
- // final String unixOut2 = "@CASETEST @CaseTest @casetest @CaSeTeSt"; //$NON-NLS-1$
- //
- // final String ein = "${CASETEST} ${CaseTest} ${casetest} ${CaSeTeSt}"; //$NON-NLS-1$
- // final int ctx = IBuildMacroProvider.CONTEXT_CONFIGURATION;
- // String a=null, b=null;
- // try {
- // // Config #0 contains isVariableCaseSensitive = false
- // a = mp.resolveValueToMakefileFormat(ein, UNKNOWN, LISTSEP, ctx, cfgs[0]);
- // // Config #3 contains isVariableCaseSensitive = true
- // b = mp.resolveValueToMakefileFormat(ein, UNKNOWN, LISTSEP, ctx, cfgs[3]);
- // } catch (BuildMacroException e) {
- // fail(e.getLocalizedMessage());
- // }
- // if (windows) {
- // assertEquals(a, winOut1);
- // assertEquals(b, winOut2);
- // } else { // linux
- // assertEquals(a, unixOut1);
- // assertEquals(b, unixOut2);
- // }
- // }
-
- /**
- * testMacroSave()
- */
-
- // public void testMacroSave(){
- // final String TO_SAVE_P = "TO_SAVE_P"; //$NON-NLS-1$
- // final String TO_SAVE_W = "TO_SAVE_W"; //$NON-NLS-1$
- // doInit();
- // ms = mp.getSuppliers(IBuildMacroProvider.CONTEXT_PROJECT, mproj);
- // assertNotNull(ms);
- // assertTrue(addMacro(TO_SAVE_P, IBuildMacro.VALUE_TEXT, TO_SAVE_P,
- // IBuildMacroProvider.CONTEXT_PROJECT, mproj));
- // ms = mp.getSuppliers(IBuildMacroProvider.CONTEXT_WORKSPACE, worksp);
- // assertNotNull(ms);
- // assertTrue(addMacro(TO_SAVE_W, IBuildMacro.VALUE_TEXT, TO_SAVE_W,
- // IBuildMacroProvider.CONTEXT_WORKSPACE, worksp));
- // try {
- // // Save the buildinfo, and then remove it, to be complete
- // ManagedBuildManager.saveBuildInfo(proj, true);
- // ManagedBuildManager.removeBuildInfo(proj);
- // proj.close(null);
- // proj.open(null);
- // } catch (CoreException e) {
- // fail("Failed on project close/open: " + e.getLocalizedMessage()); //$NON-NLS-1$
- // }
- // ms = mp.getSuppliers(IBuildMacroProvider.CONTEXT_PROJECT, mproj);
- // assertNotNull(ms);
- // String[] a = printMacros(mp.getMacros(IBuildMacroProvider.CONTEXT_PROJECT, mproj, flag), TO_SAVE_P);
- // String[] b1 = {TO_SAVE_P};
- // assertTrue(arrayContains(b1, a));
- //
- // ms = mp.getSuppliers(IBuildMacroProvider.CONTEXT_WORKSPACE, worksp);
- // assertNotNull(ms);
- // a = printMacros(mp.getMacros(IBuildMacroProvider.CONTEXT_WORKSPACE, worksp, flag), TO_SAVE_W);
- // String[] b2 = {TO_SAVE_W};
- // assertTrue(arrayContains(b2, a));
- // }
-
/*
* Below are service methods
*/
@@ -821,7 +328,6 @@ public class ManagedBuildMacrosTests extends TestCase {
assertNotNull(mp);
cfgs = mproj.getConfigurations();
assertNotNull(cfgs);
- windows = System.getProperty("os.name").toLowerCase().startsWith("windows"); //$NON-NLS-1$ //$NON-NLS-2$
}
/**
@@ -847,79 +353,7 @@ public class ManagedBuildMacrosTests extends TestCase {
}
return true;
}
- /**
- * addMacro
- * @param name
- * @param type
- * @param value
- * @param context
- * @param obj
- * @return
- */
- /*private boolean addMacro(String name, int type, String value, int context, Object obj) {
- assertNotNull(ms);
- for(int i=0; i<ms.length; i++) {
- if (ms[i] instanceof UserDefinedMacroSupplier) {
- return (((UserDefinedMacroSupplier)ms[i]).createMacro(name,type,value,context,obj) != null);
- }
- }
- return false;
- }*/
- /**
- * addMacro
- * @param name
- * @param type
- * @param value
- * @param context
- * @param obj
- * @return
- */
- /* private boolean addMacro(String name, int type, String[] value, int context, Object obj) {
- assertNotNull(ms);
- for(int i=0; i<ms.length; i++) {
- if (ms[i] instanceof UserDefinedMacroSupplier) {
- return (((UserDefinedMacroSupplier)ms[i]).createMacro(name,type,value,context,obj) != null);
- }
- }
- return false;
- }*/
- /**
- * rmMacro
- * @param name - name of macro
- * @param context
- * @param obj
- * @return
- */
- /* private boolean rmMacro(String name, int context, Object obj) {
- assertNotNull(ms);
- for(int i=0; i<ms.length; i++) {
- if (ms[i] instanceof UserDefinedMacroSupplier) {
- return (((UserDefinedMacroSupplier)ms[i]).deleteMacro(name,context,obj) != null);
- }
- }
- return false;
- }
- */
- /*
- * addVars() - adds macros for testMacroResolveCase
- */
- // private void addVars() {
- // int app = IBuildEnvironmentVariable.ENVVAR_APPEND;
- // String del = ""; //$NON-NLS-1$
- // UserDefinedEnvironmentSupplier usup = null;
- // usup = ManagedBuildEnvironmentTests.getSupplier(worksp, "Workspace"); //$NON-NLS-1$
- // if (usup != null) {
- // try {
- // usup.createVariable("casetest","lowercase", app, del, worksp ); //$NON-NLS-1$ //$NON-NLS-2$
- // usup.createVariable("CaseTest","capitalize", app, del, worksp ); //$NON-NLS-1$ //$NON-NLS-2$
- // usup.createVariable("CaSeTeSt","upper2low", app, del, worksp ); //$NON-NLS-1$ //$NON-NLS-2$
- // usup.createVariable("CASETEST","uppercase", app, del, worksp ); //$NON-NLS-1$ //$NON-NLS-2$
- // } catch (Exception e) {
- // fail("Failed to create workspace vars " + e.getLocalizedMessage()); //$NON-NLS-1$
- // }
- // }
- // }
/*
* getFile() - open or creates sample file in current project
*/
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedCommandLineGeneratorTest.java b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedCommandLineGeneratorTest.java
index 7d559a3222d..e46a393145c 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedCommandLineGeneratorTest.java
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedCommandLineGeneratorTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004, 2011 Intel Corporation and others.
+ * Copyright (c) 2004, 2022 Intel Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -15,7 +15,9 @@
package org.eclipse.cdt.managedbuilder.core.tests;
import java.util.ArrayList;
+import java.util.Arrays;
+import org.eclipse.cdt.managedbuilder.core.BuildException;
import org.eclipse.cdt.managedbuilder.core.IConfiguration;
import org.eclipse.cdt.managedbuilder.core.IManagedBuildInfo;
import org.eclipse.cdt.managedbuilder.core.IManagedCommandLineGenerator;
@@ -24,7 +26,7 @@ import org.eclipse.cdt.managedbuilder.core.IOption;
import org.eclipse.cdt.managedbuilder.core.IProjectType;
import org.eclipse.cdt.managedbuilder.core.ITool;
import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
-import org.eclipse.cdt.managedbuilder.internal.core.ManagedCommandLineGenerator;
+import org.eclipse.cdt.managedbuilder.core.ManagedCommandLineGenerator;
import org.eclipse.cdt.managedbuilder.makegen.IManagedBuilderMakefileGenerator;
import org.eclipse.cdt.managedbuilder.testplugin.ManagedBuildTestHelper;
import org.eclipse.core.resources.IProject;
@@ -41,7 +43,9 @@ public class ManagedCommandLineGeneratorTest extends TestCase {
"${COMMAND} ${FLAGS} ${OUTPUT_FLAG}${OUTPUT_PREFIX}${OUTPUT}",
"${COMMAND} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT}",
"${COMMAND} ${FLAGS} ${OUTPUT_FLAG}${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}",
+ "${COMMAND} ${FLAGS} ${OUTPUT_FLAG}${OUTPUT_PREFIX}${OUTPUT} ${INPUTS} ${EXTRA_FLAGS}",
"${command} ${flags} ${output_flag}${output_prefix}${output} ${WRONG_VAR_NAME}" };
+ private static String TEST_TOOL_ID = "test.four.dot.zero.cdt.managedbuild.tool.gnu.c.linker";
private static String COMMAND_VAL = "[command]";
private static String FLAGS_VAL = "[flags]";
private static String[] FLAGS_ARRAY_VAL = FLAGS_VAL.split("\\s");
@@ -50,9 +54,12 @@ public class ManagedCommandLineGeneratorTest extends TestCase {
private static String OUTPUT_VAL = "[output]";
private static String INPUTS_VAL = "[inputs]";
private static String[] INPUTS_ARRAY_VAL = INPUTS_VAL.split("\\s");
+ private static String[] OBJECTS_ARRAY_VAL = new String[] { "obj0", "obj1" };
+ private static String[] LIBRARIES_ARRAY_VAL = new String[] { "lib0", "lib1" };
+ private static String EXTRA_FLAGS = "obj0 obj1 -llib0 -llib1";
private static String[] commandLineEtalonesForPatterns = {
COMMAND_VAL + " " + FLAGS_VAL + " " + OUTPUT_FLAG_VAL + " " + OUTPUT_PREFIX_VAL + "\"" + OUTPUT_VAL + "\""
- + " " + "\"" + INPUTS_VAL + "\"",
+ + " " + "\"" + INPUTS_VAL + "\" " + EXTRA_FLAGS,
COMMAND_VAL, COMMAND_VAL + " " + FLAGS_VAL, COMMAND_VAL + " " + FLAGS_VAL + " " + OUTPUT_FLAG_VAL,
COMMAND_VAL + " " + FLAGS_VAL + " " + OUTPUT_FLAG_VAL + OUTPUT_PREFIX_VAL,
COMMAND_VAL + " " + FLAGS_VAL + " " + OUTPUT_FLAG_VAL + OUTPUT_PREFIX_VAL + "\"" + OUTPUT_VAL + "\"",
@@ -60,6 +67,8 @@ public class ManagedCommandLineGeneratorTest extends TestCase {
COMMAND_VAL + " " + FLAGS_VAL + " " + OUTPUT_FLAG_VAL + OUTPUT_PREFIX_VAL + "\"" + OUTPUT_VAL + "\"" + " "
+ "\"" + INPUTS_VAL + "\"",
COMMAND_VAL + " " + FLAGS_VAL + " " + OUTPUT_FLAG_VAL + OUTPUT_PREFIX_VAL + "\"" + OUTPUT_VAL + "\"" + " "
+ + "\"" + INPUTS_VAL + "\" " + EXTRA_FLAGS,
+ COMMAND_VAL + " " + FLAGS_VAL + " " + OUTPUT_FLAG_VAL + OUTPUT_PREFIX_VAL + "\"" + OUTPUT_VAL + "\"" + " "
+ "${WRONG_VAR_NAME}" };
public ManagedCommandLineGeneratorTest(String name) {
@@ -70,16 +79,14 @@ public class ManagedCommandLineGeneratorTest extends TestCase {
return new TestSuite(ManagedCommandLineGeneratorTest.class);
}
- public final void testGetCommandLineGenerator() {
- IManagedCommandLineGenerator gen = ManagedCommandLineGenerator.getCommandLineGenerator();
- assertNotNull(gen);
- }
-
- public final void testGenerateCommandLineInfoPatterns() {
- IManagedCommandLineGenerator gen = ManagedCommandLineGenerator.getCommandLineGenerator();
+ public final void testGenerateCommandLineInfoPatterns() throws BuildException {
+ ITool tool = ManagedBuildManager.getExtensionTool(TEST_TOOL_ID);
+ setToolOptionByType(tool, IOption.OBJECTS, OBJECTS_ARRAY_VAL);
+ setToolOptionByType(tool, IOption.LIBRARIES, LIBRARIES_ARRAY_VAL);
+ IManagedCommandLineGenerator gen = new ManagedCommandLineGenerator();
IManagedCommandLineInfo info = null;
for (int i = 0; i < testCommandLinePatterns.length; i++) {
- info = gen.generateCommandLineInfo(null, COMMAND_VAL, FLAGS_ARRAY_VAL, OUTPUT_FLAG_VAL, OUTPUT_PREFIX_VAL,
+ info = gen.generateCommandLineInfo(tool, COMMAND_VAL, FLAGS_ARRAY_VAL, OUTPUT_FLAG_VAL, OUTPUT_PREFIX_VAL,
OUTPUT_VAL, INPUTS_ARRAY_VAL, testCommandLinePatterns[i]);
assertNotNull(info);
if (i < commandLineEtalonesForPatterns.length) {
@@ -88,59 +95,63 @@ public class ManagedCommandLineGeneratorTest extends TestCase {
}
}
- public final void testGenerateCommandLineInfoDoublePattern() {
- IManagedCommandLineGenerator gen = ManagedCommandLineGenerator.getCommandLineGenerator();
+ public final void testGenerateCommandLineInfoDoublePattern() throws BuildException {
+ ITool tool = ManagedBuildManager.getExtensionTool(TEST_TOOL_ID);
+ IManagedCommandLineGenerator gen = new ManagedCommandLineGenerator();
- IManagedCommandLineInfo info = gen.generateCommandLineInfo(null, COMMAND_VAL, FLAGS_ARRAY_VAL, OUTPUT_FLAG_VAL,
+ IManagedCommandLineInfo info = gen.generateCommandLineInfo(tool, COMMAND_VAL, FLAGS_ARRAY_VAL, OUTPUT_FLAG_VAL,
OUTPUT_PREFIX_VAL, OUTPUT_VAL, INPUTS_ARRAY_VAL, "${OUTPUT_FLAG} ${OUTPUT_FLAG}");
assertNotNull(info);
assertEquals(OUTPUT_FLAG_VAL + " " + OUTPUT_FLAG_VAL, info.getCommandLine());
}
- public final void testGenerateCommandLineInfoParameters() {
- IManagedCommandLineGenerator gen = ManagedCommandLineGenerator.getCommandLineGenerator();
+ public final void testGenerateCommandLineInfoParameters() throws BuildException {
+ ITool tool = ManagedBuildManager.getExtensionTool(TEST_TOOL_ID);
+ setToolOptionByType(tool, IOption.OBJECTS, OBJECTS_ARRAY_VAL);
+ setToolOptionByType(tool, IOption.LIBRARIES, LIBRARIES_ARRAY_VAL);
+ IManagedCommandLineGenerator gen = new ManagedCommandLineGenerator();
- IManagedCommandLineInfo info = gen.generateCommandLineInfo(null, "", FLAGS_ARRAY_VAL, OUTPUT_FLAG_VAL,
+ IManagedCommandLineInfo info = gen.generateCommandLineInfo(tool, "", FLAGS_ARRAY_VAL, OUTPUT_FLAG_VAL,
OUTPUT_PREFIX_VAL, OUTPUT_VAL, INPUTS_ARRAY_VAL, null);
assertNotNull(info);
assertEquals(FLAGS_VAL + " " + OUTPUT_FLAG_VAL + " " + OUTPUT_PREFIX_VAL + "\"" + OUTPUT_VAL + "\"" + " " + "\""
- + INPUTS_VAL + "\"", info.getCommandLine());
+ + INPUTS_VAL + "\" " + EXTRA_FLAGS, info.getCommandLine());
- info = gen.generateCommandLineInfo(null, COMMAND_VAL, new String[0], OUTPUT_FLAG_VAL, OUTPUT_PREFIX_VAL,
+ info = gen.generateCommandLineInfo(tool, COMMAND_VAL, new String[0], OUTPUT_FLAG_VAL, OUTPUT_PREFIX_VAL,
OUTPUT_VAL, INPUTS_ARRAY_VAL, null);
assertNotNull(info);
assertEquals(COMMAND_VAL + " " + OUTPUT_FLAG_VAL + " " + OUTPUT_PREFIX_VAL + "\"" + OUTPUT_VAL + "\"" + " "
- + "\"" + INPUTS_VAL + "\"", info.getCommandLine());
+ + "\"" + INPUTS_VAL + "\" " + EXTRA_FLAGS, info.getCommandLine());
- info = gen.generateCommandLineInfo(null, COMMAND_VAL, FLAGS_ARRAY_VAL, "", OUTPUT_PREFIX_VAL, OUTPUT_VAL,
+ info = gen.generateCommandLineInfo(tool, COMMAND_VAL, FLAGS_ARRAY_VAL, "", OUTPUT_PREFIX_VAL, OUTPUT_VAL,
INPUTS_ARRAY_VAL, null);
assertNotNull(info);
assertEquals(COMMAND_VAL + " " + FLAGS_VAL + " " + OUTPUT_PREFIX_VAL + "\"" + OUTPUT_VAL + "\"" + " " + "\""
- + INPUTS_VAL + "\"", info.getCommandLine());
+ + INPUTS_VAL + "\" " + EXTRA_FLAGS, info.getCommandLine());
- info = gen.generateCommandLineInfo(null, COMMAND_VAL, FLAGS_ARRAY_VAL, OUTPUT_FLAG_VAL, "", OUTPUT_VAL,
+ info = gen.generateCommandLineInfo(tool, COMMAND_VAL, FLAGS_ARRAY_VAL, OUTPUT_FLAG_VAL, "", OUTPUT_VAL,
INPUTS_ARRAY_VAL, null);
assertNotNull(info);
assertEquals(COMMAND_VAL + " " + FLAGS_VAL + " " + OUTPUT_FLAG_VAL + " " + "\"" + OUTPUT_VAL + "\"" + " " + "\""
- + INPUTS_VAL + "\"", info.getCommandLine());
+ + INPUTS_VAL + "\" " + EXTRA_FLAGS, info.getCommandLine());
- info = gen.generateCommandLineInfo(null, COMMAND_VAL, FLAGS_ARRAY_VAL, OUTPUT_FLAG_VAL, OUTPUT_PREFIX_VAL, "",
+ info = gen.generateCommandLineInfo(tool, COMMAND_VAL, FLAGS_ARRAY_VAL, OUTPUT_FLAG_VAL, OUTPUT_PREFIX_VAL, "",
INPUTS_ARRAY_VAL, null);
assertNotNull(info);
assertEquals(COMMAND_VAL + " " + FLAGS_VAL + " " + OUTPUT_FLAG_VAL + " " + OUTPUT_PREFIX_VAL + " " + "\""
- + INPUTS_VAL + "\"", info.getCommandLine());
+ + INPUTS_VAL + "\" " + EXTRA_FLAGS, info.getCommandLine());
- info = gen.generateCommandLineInfo(null, COMMAND_VAL, FLAGS_ARRAY_VAL, OUTPUT_FLAG_VAL, OUTPUT_PREFIX_VAL,
+ info = gen.generateCommandLineInfo(tool, COMMAND_VAL, FLAGS_ARRAY_VAL, OUTPUT_FLAG_VAL, OUTPUT_PREFIX_VAL,
OUTPUT_VAL, new String[0], null);
assertNotNull(info);
assertEquals(COMMAND_VAL + " " + FLAGS_VAL + " " + OUTPUT_FLAG_VAL + " " + OUTPUT_PREFIX_VAL + "\"" + OUTPUT_VAL
- + "\"", info.getCommandLine());
+ + "\" " + EXTRA_FLAGS, info.getCommandLine());
- info = gen.generateCommandLineInfo(null, COMMAND_VAL, FLAGS_ARRAY_VAL, OUTPUT_FLAG_VAL, OUTPUT_PREFIX_VAL,
+ info = gen.generateCommandLineInfo(tool, COMMAND_VAL, FLAGS_ARRAY_VAL, OUTPUT_FLAG_VAL, OUTPUT_PREFIX_VAL,
OUTPUT_VAL, null, null);
assertNotNull(info);
assertEquals(COMMAND_VAL + " " + FLAGS_VAL + " " + OUTPUT_FLAG_VAL + " " + OUTPUT_PREFIX_VAL + "\"" + OUTPUT_VAL
- + "\"", info.getCommandLine());
+ + "\" " + EXTRA_FLAGS, info.getCommandLine());
}
public final void testCustomGenerator() {
@@ -194,8 +205,8 @@ public class ManagedCommandLineGeneratorTest extends TestCase {
"cdt.test.customOptionCommand.ProjectType");
IManagedBuildInfo info = ManagedBuildManager.getBuildInfo(project);
IConfiguration config = info.getDefaultConfiguration();
- ITool[] tools = config.getToolsBySuperClassId("cdt.test.customOptionCommand.Tool");
- assertEquals(tools.length, 1);
+ ITool[] tools = config.getToolsBySuperClassId("cdt.test.customOptionCommand.Tool1");
+ assertEquals(1, tools.length);
ITool tool = tools[0];
@@ -229,6 +240,128 @@ public class ManagedCommandLineGeneratorTest extends TestCase {
}
}
+ public final void testCustomOptionCommandGenerator2() {
+ try {
+ IProject project = ManagedBuildTestHelper.createProject("COCG2", null, (IPath) null,
+ "cdt.test.customOptionCommand.ProjectType");
+ IManagedBuildInfo info = ManagedBuildManager.getBuildInfo(project);
+ IConfiguration config = info.getDefaultConfiguration();
+
+ ITool[] tools = config.getToolsBySuperClassId("cdt.test.customOptionCommand.Tool2");
+ assertEquals(1, tools.length);
+
+ ITool tool = tools[0];
+
+ IOption optionString = tool.getOptionBySuperClassId("cdt.test.customOptionCommand.optionString");
+ IOption optionStringList = tool.getOptionBySuperClassId("cdt.test.customOptionCommand.optionStringList");
+ IOption optionBoolean = tool.getOptionBySuperClassId("cdt.test.customOptionCommand.optionBoolean");
+ IOption optionEnumerated = tool.getOptionBySuperClassId("cdt.test.customOptionCommand.optionEnumerated");
+ IOption optionIncludePath = tool.getOptionBySuperClassId("cdt.test.customOptionCommand.optionIncludePath");
+ IOption optionDefinedSymbols = tool
+ .getOptionBySuperClassId("cdt.test.customOptionCommand.optionDefinedSymbols");
+ IOption optionLibs = tool.getOptionBySuperClassId("cdt.test.customOptionCommand.optionLibs");
+ IOption optionUserObjs = tool.getOptionBySuperClassId("cdt.test.customOptionCommand.optionUserObjs");
+ IOption optionSymbolFiles = tool.getOptionBySuperClassId("cdt.test.customOptionCommand.optionSymbolFiles");
+ IOption optionIncludeFiles = tool
+ .getOptionBySuperClassId("cdt.test.customOptionCommand.optionIncludeFiles");
+ IOption optionLibPaths = tool.getOptionBySuperClassId("cdt.test.customOptionCommand.optionLibPaths");
+ IOption optionLibFiles = tool.getOptionBySuperClassId("cdt.test.customOptionCommand.optionLibFiles");
+ IOption optionUndefIncludePath = tool
+ .getOptionBySuperClassId("cdt.test.customOptionCommand.optionUndefIncludePath");
+ IOption optionUndefDefinedSymbols = tool
+ .getOptionBySuperClassId("cdt.test.customOptionCommand.optionUndefDefinedSymbols");
+ IOption optionUndefLibPaths = tool
+ .getOptionBySuperClassId("cdt.test.customOptionCommand.optionUndefLibPaths");
+ IOption optionUndefLibFiles = tool
+ .getOptionBySuperClassId("cdt.test.customOptionCommand.optionUndefLibFiles");
+ IOption optionUndefIncludeFiles = tool
+ .getOptionBySuperClassId("cdt.test.customOptionCommand.optionUndefIncludeFiles");
+ IOption optionUndefSymbolFiles = tool
+ .getOptionBySuperClassId("cdt.test.customOptionCommand.optionUndefSymbolFiles");
+ IOption optionTree = tool.getOptionBySuperClassId("cdt.test.customOptionCommand.optionTree");
+
+ assertTrue(optionString.getCommandGenerator() instanceof CustomOptionCommandGenerator);
+ assertTrue(optionStringList.getCommandGenerator() instanceof CustomOptionCommandGenerator);
+ assertTrue(optionBoolean.getCommandGenerator() instanceof CustomOptionCommandGenerator);
+ assertTrue(optionEnumerated.getCommandGenerator() instanceof CustomOptionCommandGenerator);
+ assertTrue(optionIncludePath.getCommandGenerator() instanceof CustomOptionCommandGenerator);
+ assertTrue(optionDefinedSymbols.getCommandGenerator() instanceof CustomOptionCommandGenerator);
+ assertTrue(optionLibs.getCommandGenerator() instanceof CustomOptionCommandGenerator);
+ assertTrue(optionUserObjs.getCommandGenerator() instanceof CustomOptionCommandGenerator);
+ assertTrue(optionSymbolFiles.getCommandGenerator() instanceof CustomOptionCommandGenerator);
+ assertTrue(optionIncludeFiles.getCommandGenerator() instanceof CustomOptionCommandGenerator);
+ assertTrue(optionLibPaths.getCommandGenerator() instanceof CustomOptionCommandGenerator);
+ assertTrue(optionLibFiles.getCommandGenerator() instanceof CustomOptionCommandGenerator);
+ assertTrue(optionUndefIncludePath.getCommandGenerator() instanceof CustomOptionCommandGenerator);
+ assertTrue(optionUndefDefinedSymbols.getCommandGenerator() instanceof CustomOptionCommandGenerator);
+ assertTrue(optionUndefLibPaths.getCommandGenerator() instanceof CustomOptionCommandGenerator);
+ assertTrue(optionUndefLibFiles.getCommandGenerator() instanceof CustomOptionCommandGenerator);
+ assertTrue(optionUndefIncludeFiles.getCommandGenerator() instanceof CustomOptionCommandGenerator);
+ assertTrue(optionUndefSymbolFiles.getCommandGenerator() instanceof CustomOptionCommandGenerator);
+ assertTrue(optionTree.getCommandGenerator() instanceof CustomOptionCommandGenerator);
+
+ optionString = config.setOption(tool, optionString, "${ProjName}");
+ optionStringList = config.setOption(tool, optionStringList, new String[] { "val1", "${ProjName}" });
+ optionBoolean = config.setOption(tool, optionBoolean, true);
+ optionEnumerated = config.setOption(tool, optionEnumerated,
+ "org.eclipse.cdt.managedbuilder.core.tests.enumeratedOptionValue2");
+ optionIncludePath = config.setOption(tool, optionIncludePath, new String[] { "val2", "${ProjName}" });
+ optionDefinedSymbols = config.setOption(tool, optionDefinedSymbols, new String[] { "val3", "${ProjName}" });
+ optionLibs = config.setOption(tool, optionLibs, new String[] { "val4", "${ProjName}" });
+ optionUserObjs = config.setOption(tool, optionUserObjs, new String[] { "val5", "${ProjName}" });
+ optionSymbolFiles = config.setOption(tool, optionSymbolFiles, new String[] { "val6", "${ProjName}" });
+ optionIncludeFiles = config.setOption(tool, optionIncludeFiles, new String[] { "val7", "${ProjName}" });
+ optionLibPaths = config.setOption(tool, optionLibPaths, new String[] { "val8", "${ProjName}" });
+ optionLibFiles = config.setOption(tool, optionLibFiles, new String[] { "val9", "${ProjName}" });
+ optionUndefIncludePath = config.setOption(tool, optionUndefIncludePath,
+ new String[] { "val10", "${ProjName}" });
+ optionUndefDefinedSymbols = config.setOption(tool, optionUndefDefinedSymbols,
+ new String[] { "val11", "${ProjName}" });
+ optionUndefLibPaths = config.setOption(tool, optionUndefLibPaths, new String[] { "val12", "${ProjName}" });
+ optionUndefLibFiles = config.setOption(tool, optionUndefLibFiles, new String[] { "val13", "${ProjName}" });
+ optionUndefIncludeFiles = config.setOption(tool, optionUndefIncludeFiles,
+ new String[] { "val14", "${ProjName}" });
+ optionUndefSymbolFiles = config.setOption(tool, optionUndefSymbolFiles,
+ new String[] { "val15", "${ProjName}" });
+ optionTree = config.setOption(tool, optionTree, "org.eclipse.cdt.managedbuilder.core.tests.treeOption2");
+
+ String command = tool.getToolCommandFlagsString(null, null);
+ assertEquals(String.join(" ", "-optString=COCG2", //
+ "-optStringList=\"val1;COCG2;\"", //
+ "-optBoolean=true", //
+ "-optEnumerated=value2", //
+ "-optIncludePath=\"val2;COCG2;\"", //
+ "-optDefinedSymbols=\"val3;COCG2;\"", //
+ "-optSymbolFiles=\"val6;COCG2;\"", //
+ "-optIncludeFiles=\"val7;COCG2;\"", //
+ "-optLibPaths=\"val8;COCG2;\"", //
+ "-optLibFiles=\"val9;COCG2;\"", //
+ "-optUndefIncludePath=\"val10;COCG2;\"", //
+ "-optUndefDefinedSymbols=\"val11;COCG2;\"", //
+ "-optUndefLibPaths=\"val12;COCG2;\"", //
+ "-optUndefLibFiles=\"val13;COCG2;\"", //
+ "-optUndefIncludeFiles=\"val14;COCG2;\"", //
+ "-optUndefSymbolFiles=\"val15;COCG2;\"", //
+ "-optTree=value2"), //
+ command);
+
+ String[] libs = config.getLibs(config.getArtifactExtension());
+ assertEquals(Arrays.asList("-optLibs=\"val4;COCG2;\"").toString(), Arrays.asList(libs).toString());
+ assertEquals(Arrays.asList(libs).toString(),
+ Arrays.asList(tool.getExtraFlags(IOption.LIBRARIES)).toString());
+
+ String[] userObjs = config.getUserObjects(config.getArtifactExtension());
+ assertEquals(Arrays.asList("-optUserObjs=\"val5;COCG2;\"").toString(), Arrays.asList(userObjs).toString());
+ assertEquals(Arrays.asList(userObjs).toString(),
+ Arrays.asList(tool.getExtraFlags(IOption.OBJECTS)).toString());
+
+ ManagedBuildTestHelper.removeProject("COCG2");
+ } catch (Exception e) {
+ e.printStackTrace();
+ fail("Test failed on project creation: " + e.getLocalizedMessage());
+ }
+ }
+
public final void testDollarValue() {
try {
IProject project = ManagedBuildTestHelper.createProject("CDV", null, (IPath) null,
@@ -287,4 +420,12 @@ public class ManagedCommandLineGeneratorTest extends TestCase {
}
}
+ private void setToolOptionByType(ITool tool, int valueType, String[] value) throws BuildException {
+ for (IOption option : tool.getOptions()) {
+ if (valueType == option.getValueType()) {
+ option.setValue(value);
+ }
+ }
+ }
+
}
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedProject21MakefileTests.java b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedProject21MakefileTests.java
index c0a0c689686..178634e3f03 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedProject21MakefileTests.java
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedProject21MakefileTests.java
@@ -156,42 +156,42 @@ public class ManagedProject21MakefileTests extends TestCase {
return false;
boolean succeeded = true;
- for (int i = 0; i < projects.length; i++) {
- IProject curProject = projects[i];
-
- IManagedBuildInfo info = ManagedBuildManager.getBuildInfo(curProject);
-
- //check whether the managed build info is converted
- boolean isCompatible = UpdateManagedProjectManager.isCompatibleProject(info);
- assertTrue(isCompatible);
-
- if (isCompatible) {
- // Build the project in order to generate the maekfiles
- try {
- curProject.build(IncrementalProjectBuilder.INCREMENTAL_BUILD, null);
- } catch (CoreException e) {
- fail(e.getStatus().getMessage());
- } catch (OperationCanceledException e) {
- fail("the project \"" + curProject.getName() + "\" build was cancelled, exception message: "
- + e.getMessage());
- }
+ try {
+ for (int i = 0; i < projects.length; i++) {
+ IProject curProject = projects[i];
+
+ IManagedBuildInfo info = ManagedBuildManager.getBuildInfo(curProject);
+
+ //check whether the managed build info is converted
+ boolean isCompatible = UpdateManagedProjectManager.isCompatibleProject(info);
+ assertTrue(isCompatible);
+
+ if (isCompatible) {
+ // Build the project in order to generate the maekfiles
+ try {
+ curProject.build(IncrementalProjectBuilder.INCREMENTAL_BUILD, null);
+ } catch (CoreException e) {
+ fail(e.getStatus().getMessage());
+ } catch (OperationCanceledException e) {
+ fail("the project \"" + curProject.getName() + "\" build was cancelled, exception message: "
+ + e.getMessage());
+ }
- //compare the generated makefiles to their benchmarks
- if (files != null && files.length > 0) {
- if (i == 0) {
- String configName = info.getDefaultConfiguration().getName();
- IPath buildDir = Path.fromOSString(configName);
- // succeeded = ManagedBuildTestHelper.compareBenchmarks(curProject, buildDir, files);
- IPath benchmarkLocationBase = resourcesLocation.append(benchmarkDir);
- IPath buildLocation = curProject.getLocation().append(buildDir);
- succeeded = ManagedBuildTestHelper.compareBenchmarks(curProject, buildLocation, files,
- benchmarkLocationBase);
+ //compare the generated makefiles to their benchmarks
+ if (files != null && files.length > 0) {
+ if (i == 0) {
+ String configName = info.getDefaultConfiguration().getName();
+ IPath buildDir = Path.fromOSString(configName);
+ // succeeded = ManagedBuildTestHelper.compareBenchmarks(curProject, buildDir, files);
+ IPath benchmarkLocationBase = resourcesLocation.append(benchmarkDir);
+ IPath buildLocation = curProject.getLocation().append(buildDir);
+ succeeded = ManagedBuildTestHelper.compareBenchmarks(curProject, buildLocation, files,
+ benchmarkLocationBase);
+ }
}
}
}
- }
-
- if (succeeded) { // Otherwise leave the projects around for comparison
+ } finally {
for (int i = 0; i < projects.length; i++)
ManagedBuildTestHelper.removeProject(projects[i].getName());
}
@@ -248,8 +248,8 @@ public class ManagedProject21MakefileTests extends TestCase {
* tests 2.1 style tool integration for a single file executable
*/
public void testSingleFileExe() {
- IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("objects.mk"),
- Path.fromOSString("sources.mk"), Path.fromOSString("subdir.mk") };
+ IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("sources.mk"),
+ Path.fromOSString("subdir.mk") };
IProject[] projects = createProjects("singleFileExe", null, null, true);
buildProjects("singleFileExe", projects, makefiles);
}
@@ -258,8 +258,8 @@ public class ManagedProject21MakefileTests extends TestCase {
* tests 2.1 style tool integration for a two file SO
*/
public void testTwoFileSO() {
- IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("objects.mk"),
- Path.fromOSString("sources.mk"), Path.fromOSString("subdir.mk") };
+ IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("sources.mk"),
+ Path.fromOSString("subdir.mk") };
IProject[] projects = createProjects("twoFileSO", null, null, true);
buildProjects("twoFileSO", projects, makefiles);
}
@@ -268,8 +268,8 @@ public class ManagedProject21MakefileTests extends TestCase {
* tests 2.1 style tool integration for multiple source files & a resource configuration
*/
public void testMultiResConfig() {
- IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("objects.mk"),
- Path.fromOSString("sources.mk"), Path.fromOSString("subdir.mk"), Path.fromOSString("source1/subdir.mk"),
+ IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("sources.mk"),
+ Path.fromOSString("subdir.mk"), Path.fromOSString("source1/subdir.mk"),
Path.fromOSString("source2/subdir.mk"), Path.fromOSString("source2/source21/subdir.mk") };
IProject[] projects = createProjects("multiResConfig", null, null, true);
buildProjects("multiResConfig", projects, makefiles);
@@ -280,7 +280,7 @@ public class ManagedProject21MakefileTests extends TestCase {
*/
public void testLinkedLib() throws IOException {
boolean succeeded = false;
- IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("objects.mk"),
+ IPath[] makefiles = { Path.fromOSString("makefile"),
//Path.fromOSString("subdir.mk") // Can't compare this yet since it contains absolute paths!
Path.fromOSString("sources.mk") };
IPath[] linkedFiles = { Path.fromOSString("f1.c"), Path.fromOSString("f2.c"), Path.fromOSString("test_ar.h") };
@@ -309,11 +309,11 @@ public class ManagedProject21MakefileTests extends TestCase {
*/
public void testLinkedFolder() throws IOException {
boolean succeeded = false;
- IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("objects.mk"),
- Path.fromOSString("subdir.mk"), Path.fromOSString("sources.mk") };
+ IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("subdir.mk"),
+ Path.fromOSString("sources.mk") };
IPath[] linkedFiles = { Path.fromOSString("f1.c"), Path.fromOSString("f2.c"), Path.fromOSString("test_ar.h"),
- Path.fromOSString("Benchmarks/makefile"), Path.fromOSString("Benchmarks/objects.mk"),
- Path.fromOSString("Benchmarks/subdir.mk"), Path.fromOSString("Benchmarks/sources.mk") };
+ Path.fromOSString("Benchmarks/makefile"), Path.fromOSString("Benchmarks/subdir.mk"),
+ Path.fromOSString("Benchmarks/sources.mk") };
File srcDirFile = CTestPlugin.getFileInPlugin(new Path("resources/test21Projects/linkedFolder/"));
IPath srcDir = Path.fromOSString(srcDirFile.toString());
IPath tmpSubDir = Path.fromOSString("CDTMBSTest");
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedProject30MakefileTests.java b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedProject30MakefileTests.java
index 9e95ee095f7..16175e57617 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedProject30MakefileTests.java
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedProject30MakefileTests.java
@@ -287,8 +287,8 @@ public class ManagedProject30MakefileTests extends TestCase {
* tests 3.0 style tool integration for a single file executable
*/
public void test30SingleFileExe() {
- IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("objects.mk"),
- Path.fromOSString("sources.mk"), Path.fromOSString("subdir.mk") };
+ IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("sources.mk"),
+ Path.fromOSString("subdir.mk") };
IProject[] projects = createProjects("singleFileExe", null, null, true);
buildProjects(projects, makefiles);
}
@@ -297,8 +297,8 @@ public class ManagedProject30MakefileTests extends TestCase {
* tests 3.0 style tool integration for a two file SO
*/
public void test30TwoFileSO() {
- IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("objects.mk"),
- Path.fromOSString("sources.mk"), Path.fromOSString("subdir.mk") };
+ IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("sources.mk"),
+ Path.fromOSString("subdir.mk") };
IProject[] projects = createProjects("twoFileSO", null, null, true);
buildProjects(projects, makefiles);
}
@@ -307,11 +307,11 @@ public class ManagedProject30MakefileTests extends TestCase {
* tests 3.0 style tool integration for multiple source files & a resource configuration
*/
public void test30MultiResConfig() {
- IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("objects.mk"),
- Path.fromOSString("sources.mk"), Path.fromOSString("subdir.mk"), Path.fromOSString("main.d"),
- Path.fromOSString("source1/subdir.mk"), Path.fromOSString("source1/Class1.d"),
- Path.fromOSString("source2/subdir.mk"), Path.fromOSString("source2/Class2.d"),
- Path.fromOSString("source2/source21/Class21.d"), Path.fromOSString("source2/source21/subdir.mk") };
+ IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("sources.mk"),
+ Path.fromOSString("subdir.mk"), Path.fromOSString("main.d"), Path.fromOSString("source1/subdir.mk"),
+ Path.fromOSString("source1/Class1.d"), Path.fromOSString("source2/subdir.mk"),
+ Path.fromOSString("source2/Class2.d"), Path.fromOSString("source2/source21/Class21.d"),
+ Path.fromOSString("source2/source21/subdir.mk") };
IProject[] projects = createProjects("multiResConfig", null, null, true);
buildProjects(projects, makefiles);
}
@@ -320,7 +320,7 @@ public class ManagedProject30MakefileTests extends TestCase {
* tests 3.0 style tool integration for linked files
*/
public void test30LinkedLib() throws IOException {
- IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("objects.mk"),
+ IPath[] makefiles = { Path.fromOSString("makefile"),
//Path.fromOSString("subdir.mk") // Can't compare this yet since it contains absolute paths!
Path.fromOSString("sources.mk") };
IPath[] linkedFiles = { Path.fromOSString("f1_30.c"), Path.fromOSString("f2_30.c"),
@@ -348,11 +348,11 @@ public class ManagedProject30MakefileTests extends TestCase {
* tests 3.0 style tool integration for a linked folder
*/
public void test30LinkedFolder() throws IOException {
- IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("objects.mk"),
- Path.fromOSString("subdir.mk"), Path.fromOSString("sources.mk") };
+ IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("subdir.mk"),
+ Path.fromOSString("sources.mk") };
IPath[] linkedFiles = { Path.fromOSString("f1.c"), Path.fromOSString("f2.c"), Path.fromOSString("test_ar.h"),
- Path.fromOSString("Benchmarks/makefile"), Path.fromOSString("Benchmarks/objects.mk"),
- Path.fromOSString("Benchmarks/subdir.mk"), Path.fromOSString("Benchmarks/sources.mk") };
+ Path.fromOSString("Benchmarks/makefile"), Path.fromOSString("Benchmarks/subdir.mk"),
+ Path.fromOSString("Benchmarks/sources.mk") };
File srcDirFile = CTestPlugin.getFileInPlugin(new Path("resources/test30Projects/linkedFolder/"));
IPath srcDir = Path.fromOSString(srcDirFile.toString());
IPath tmpRootDir = Path
@@ -377,9 +377,9 @@ public class ManagedProject30MakefileTests extends TestCase {
* tests 3.0 style tool integration with pre and post process steps added to typical compile & link
*/
public void test30CopyandDeploy() {
- IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("objects.mk"),
- Path.fromOSString("sources.mk"), Path.fromOSString("subdir.mk"), Path.fromOSString("main.d"),
- Path.fromOSString("Functions/subdir.mk"), Path.fromOSString("Functions/Func1.d") };
+ IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("sources.mk"),
+ Path.fromOSString("subdir.mk"), Path.fromOSString("main.d"), Path.fromOSString("Functions/subdir.mk"),
+ Path.fromOSString("Functions/Func1.d") };
IProject[] projects = createProjects("copyandDeploy", null, null, true);
buildProjects(projects, makefiles);
}
@@ -389,8 +389,8 @@ public class ManagedProject30MakefileTests extends TestCase {
* occurs in the managedbuild system
*/
public void test30DeleteFile() {
- IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("objects.mk"),
- Path.fromOSString("subdir.mk"), Path.fromOSString("sources.mk") };
+ IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("subdir.mk"),
+ Path.fromOSString("sources.mk") };
IProject[] projects = createProjects("deleteFile", null, null, true);
final IWorkspace workspace = ResourcesPlugin.getWorkspace();
@@ -419,8 +419,8 @@ public class ManagedProject30MakefileTests extends TestCase {
* "excluded from build" to see that this degenerative case is handled gracefully
*/
public void test30NoFilesToBuild() {
- IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("objects.mk"),
- Path.fromOSString("subdir.mk"), Path.fromOSString("sources.mk") };
+ IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("subdir.mk"),
+ Path.fromOSString("sources.mk") };
IProject[] projects = createProjects("noFilesToBuild", null, null, true);
IProject project = projects[0];
@@ -437,8 +437,8 @@ public class ManagedProject30MakefileTests extends TestCase {
* tests 3.0 managed build system with a project which has a file with no file extesnion
*/
public void testFileWithNoExtension() {
- IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("objects.mk"),
- Path.fromOSString("sources.mk"), Path.fromOSString("subdir.mk") };
+ IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("sources.mk"),
+ Path.fromOSString("subdir.mk") };
IProject[] projects = createProjects("testFileWithNoExtension", null, null, true);
buildProjects(projects, makefiles);
}
@@ -448,8 +448,8 @@ public class ManagedProject30MakefileTests extends TestCase {
* the proper commands are generated in the makefile which is created by the managedbuild system
*/
public void testPreAndPostProcessBuildSteps() {
- IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("objects.mk"),
- Path.fromOSString("subdir.mk"), Path.fromOSString("sources.mk") };
+ IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("subdir.mk"),
+ Path.fromOSString("sources.mk") };
IProject[] projects = createProjects("preAndPostBuildSteps", null, null, true);
IProject project = projects[0];
@@ -467,8 +467,8 @@ public class ManagedProject30MakefileTests extends TestCase {
* the proper commands are generated in the makefile which is created by the managedbuild system
*/
public void testResourceCustomBuildStep() {
- IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("objects.mk"),
- Path.fromOSString("subdir.mk"), Path.fromOSString("sources.mk") };
+ IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("subdir.mk"),
+ Path.fromOSString("sources.mk") };
ITool rcbsTool;
IInputType rcbsToolInputType;
IAdditionalInput rcbsToolInputTypeAdditionalInput;
@@ -497,8 +497,8 @@ public class ManagedProject30MakefileTests extends TestCase {
* tests 3.0 style tool integration with pre and post process steps added to typical compile & link
*/
public void test30_1() {
- IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("objects.mk"),
- Path.fromOSString("sources.mk"), Path.fromOSString("subdir.mk") };
+ IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("sources.mk"),
+ Path.fromOSString("subdir.mk") };
IProject[] projects = createProjects("test30_1", null, null, true);
buildProjects(projects, makefiles);
}
@@ -507,8 +507,8 @@ public class ManagedProject30MakefileTests extends TestCase {
* tests 3.0 style tool integration with multiple input types use Eclipse content types
*/
public void test30_2() {
- IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("objects.mk"),
- Path.fromOSString("sources.mk"), Path.fromOSString("subdir.mk") };
+ IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("sources.mk"),
+ Path.fromOSString("subdir.mk") };
IProject[] projects = createProjects("test30_2", null, null, true);
buildProjects(projects, makefiles);
}
@@ -543,8 +543,8 @@ public class ManagedProject30MakefileTests extends TestCase {
* tests external dependency calculation using Fortran modules
*/
public void CDTFortranTest1() {
- IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("objects.mk"),
- Path.fromOSString("sources.mk"), Path.fromOSString("subdir.mk") };
+ IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("sources.mk"),
+ Path.fromOSString("subdir.mk") };
IProject[] projects = createProjects("CDTFortranTest1", null, null, true);
buildProjects(projects, makefiles);
}
@@ -553,9 +553,8 @@ public class ManagedProject30MakefileTests extends TestCase {
* tests external dependency calculation using Fortran modules
*/
public void CDTFortranTest2() {
- IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("objects.mk"),
- Path.fromOSString("sources.mk"), Path.fromOSString("module/subdir.mk"),
- Path.fromOSString("Sources/subdir.mk") };
+ IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("sources.mk"),
+ Path.fromOSString("module/subdir.mk"), Path.fromOSString("Sources/subdir.mk") };
IProject[] projects = createProjects("CDTFortranTest2", null, null, true);
buildProjects(projects, makefiles);
}
@@ -564,15 +563,15 @@ public class ManagedProject30MakefileTests extends TestCase {
* tests the InputType assignToOption attribute
*/
public void TestATO() {
- IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("objects.mk"),
- Path.fromOSString("sources.mk"), Path.fromOSString("subdir.mk") };
+ IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("sources.mk"),
+ Path.fromOSString("subdir.mk") };
IProject[] projects = createProjects("TestATO", null, null, true);
buildProjects(projects, makefiles);
}
public void testMacroSupportInBuildDefinitions() {
- IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("objects.mk"),
- Path.fromOSString("sources.mk"), Path.fromOSString("subdir.mk") };
+ IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("sources.mk"),
+ Path.fromOSString("subdir.mk") };
IProject[] projects = createProjects("testMacroSupportInBuildDefinitions", null, null, true);
buildProjects(projects, makefiles);
}
@@ -582,9 +581,9 @@ public class ManagedProject30MakefileTests extends TestCase {
* tests managed build system with a project which has resources with spaces in their paths
*/
public void testSpaces() {
- IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("objects.mk"),
- Path.fromOSString("sources.mk"), Path.fromOSString("subdir.mk"),
- Path.fromOSString("main with spaces.d"), Path.fromOSString("sub folder with spaces/subdir.mk"),
+ IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("sources.mk"),
+ Path.fromOSString("subdir.mk"), Path.fromOSString("main with spaces.d"),
+ Path.fromOSString("sub folder with spaces/subdir.mk"),
Path.fromOSString("sub folder with spaces/foo with spaces.d") };
IProject[] projects = createProjects("test with spaces", null, null, true);
buildProjects(projects, makefiles);
@@ -595,8 +594,8 @@ public class ManagedProject30MakefileTests extends TestCase {
* tests managed build system with a project which has resources with spaces in their paths
*/
public void testInputTypeOption() {
- IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("objects.mk"),
- Path.fromOSString("sources.mk"), Path.fromOSString("subdir.mk"), };
+ IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("sources.mk"),
+ Path.fromOSString("subdir.mk"), };
IProject[] projects = createProjects("inputTypeOption", null, null, true);
buildProjects(projects, makefiles);
}
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedProjectUpdateTests.java b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedProjectUpdateTests.java
index 72b71808cfc..ef5e66cacf8 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedProjectUpdateTests.java
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedProjectUpdateTests.java
@@ -209,8 +209,8 @@ public class ManagedProjectUpdateTests extends TestCase {
* in case when user chooses to update the project
*/
public void testProjectUpdate12_Update() {
- IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("objects.mk"),
- Path.fromOSString("sources.mk"), Path.fromOSString("subdir.mk") };
+ IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("sources.mk"),
+ Path.fromOSString("subdir.mk") };
doTestProjectUpdate("1.2", true, true, makefiles);
}
@@ -219,8 +219,8 @@ public class ManagedProjectUpdateTests extends TestCase {
* in case when user chooses to update the project
*/
public void testProjectUpdate20_Update() {
- IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("objects.mk"),
- Path.fromOSString("sources.mk"), Path.fromOSString("subdir.mk") };
+ IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("sources.mk"),
+ Path.fromOSString("subdir.mk") };
doTestProjectUpdate("2.0", true, true, makefiles);
}
@@ -229,9 +229,8 @@ public class ManagedProjectUpdateTests extends TestCase {
* in case when user chooses to update the project
*/
public void testProjectUpdate21_Update() {
- IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("objects.mk"),
- Path.fromOSString("sources.mk"), Path.fromOSString("subdir.mk"),
- Path.fromOSString("Functions/subdir.mk") };
+ IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("sources.mk"),
+ Path.fromOSString("subdir.mk"), Path.fromOSString("Functions/subdir.mk") };
doTestProjectUpdate("2.1", true, true, makefiles);
}
@@ -239,9 +238,8 @@ public class ManagedProjectUpdateTests extends TestCase {
* tests project v2.1 update of a C++ project with C source files
*/
public void testProjectUpdate21CPP_Update() {
- IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("objects.mk"),
- Path.fromOSString("sources.mk"), Path.fromOSString("subdir.mk"),
- Path.fromOSString("Functions/subdir.mk") };
+ IPath[] makefiles = { Path.fromOSString("makefile"), Path.fromOSString("sources.mk"),
+ Path.fromOSString("subdir.mk"), Path.fromOSString("Functions/subdir.mk") };
doTestProjectUpdate("2.1CPP", true, true, makefiles);
}
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/MultiVersionSupportTests.java b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/MultiVersionSupportTests.java
index b8b42c3c01f..992f945880a 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/MultiVersionSupportTests.java
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/MultiVersionSupportTests.java
@@ -409,11 +409,12 @@ public class MultiVersionSupportTests extends TestCase {
String expectedContent = "Converter for CDT 2.0 Project is invoked"; //$NON-NLS-1$
- BufferedReader data = new BufferedReader(new FileReader(inputFile));
- String actualContent;
+ try (BufferedReader data = new BufferedReader(new FileReader(inputFile))) {
+ String actualContent;
- if ((actualContent = data.readLine()) != null) {
- assertEquals(actualContent, expectedContent);
+ if ((actualContent = data.readLine()) != null) {
+ assertEquals(actualContent, expectedContent);
+ }
}
} catch (IOException e) {
@@ -434,11 +435,12 @@ public class MultiVersionSupportTests extends TestCase {
String expectedContent = "Converter for CDT 2.1 Project is invoked"; //$NON-NLS-1$
- BufferedReader data = new BufferedReader(new FileReader(inputFile));
- String actualContent;
+ try (BufferedReader data = new BufferedReader(new FileReader(inputFile))) {
+ String actualContent;
- if ((actualContent = data.readLine()) != null) {
- assertEquals(actualContent, expectedContent);
+ if ((actualContent = data.readLine()) != null) {
+ assertEquals(actualContent, expectedContent);
+ }
}
} catch (IOException e) {
@@ -459,11 +461,12 @@ public class MultiVersionSupportTests extends TestCase {
String expectedContent = "The converter for the projectType testProject_1.0.0 is invoked"; //$NON-NLS-1$
- BufferedReader data = new BufferedReader(new FileReader(inputFile));
- String actualContent;
+ try (BufferedReader data = new BufferedReader(new FileReader(inputFile))) {
+ String actualContent;
- if ((actualContent = data.readLine()) != null) {
- assertEquals(actualContent, expectedContent);
+ if ((actualContent = data.readLine()) != null) {
+ assertEquals(actualContent, expectedContent);
+ }
}
} catch (IOException e) {
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/PathConverterTest.java b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/PathConverterTest.java
index b4483ac60b1..d1cb3d8b565 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/PathConverterTest.java
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/PathConverterTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (C) 2006, 2011 Siemens AG.
+ * Copyright (c) 2006, 2011 Siemens AG.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ProjectConverter.java b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ProjectConverter.java
index fbffdbc0a51..de243193a3f 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ProjectConverter.java
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ProjectConverter.java
@@ -28,8 +28,7 @@ public class ProjectConverter implements IConvertManagedBuildObject {
String tmpDir = System.getProperty("java.io.tmpdir");
File outputFile = new File(tmpDir + "/converterOutput.txt");
- try {
- FileWriter out = new FileWriter(outputFile);
+ try (FileWriter out = new FileWriter(outputFile)) {
out.write("---------- Start-------");
out.write("Converter for the build object : '" + buildObj.getName() + "' is invoked.");
out.write("From Id : " + fromId);
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ResourceBuildCoreTests.java b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ResourceBuildCoreTests.java
index 5adb0f5c1ed..5124f00b814 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ResourceBuildCoreTests.java
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ResourceBuildCoreTests.java
@@ -25,10 +25,12 @@ import org.eclipse.cdt.managedbuilder.core.IOption;
import org.eclipse.cdt.managedbuilder.core.IOptionCategory;
import org.eclipse.cdt.managedbuilder.core.IProjectType;
import org.eclipse.cdt.managedbuilder.core.IResourceConfiguration;
+import org.eclipse.cdt.managedbuilder.core.IResourceInfo;
import org.eclipse.cdt.managedbuilder.core.ITool;
import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
import org.eclipse.cdt.managedbuilder.core.ManagedBuilderCorePlugin;
import org.eclipse.cdt.managedbuilder.core.ManagedCProjectNature;
+import org.eclipse.cdt.managedbuilder.internal.core.ResourceInfo;
import org.eclipse.cdt.managedbuilder.internal.core.Tool;
import org.eclipse.cdt.managedbuilder.testplugin.ManagedBuildTestHelper;
import org.eclipse.core.resources.IFile;
@@ -45,6 +47,7 @@ import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.NullProgressMonitor;
+import org.junit.Assert;
import junit.framework.Test;
import junit.framework.TestCase;
@@ -68,6 +71,7 @@ public class ResourceBuildCoreTests extends TestCase {
TestSuite suite = new TestSuite(ResourceBuildCoreTests.class.getName());
suite.addTest(new ResourceBuildCoreTests("testResourceConfigurations"));
suite.addTest(new ResourceBuildCoreTests("testResourceConfigurationReset"));
+ suite.addTest(new ResourceBuildCoreTests("testResourceConfiguration_Bug580009"));
// suite.addTest(new ResourceBuildCoreTests("testResourceConfigurationBuildInfo"));
// suite.addTest(new ResourceBuildCoreTests("testResourceRename"));
return suite;
@@ -969,4 +973,138 @@ public class ResourceBuildCoreTests extends TestCase {
removeProject(renamedProjectName2);
}
+ protected IResourceInfo getResourceConfiguration(final IConfiguration config, final IResource resource) {
+
+ IResourceInfo resInfo = config.getResourceInfo(resource.getProjectRelativePath(), true); // 'true' to ensure exact path
+ if (resInfo == null) {
+ // Resource element for path may not yet exist, force-create it
+ resInfo = config.createFolderInfo(resource.getProjectRelativePath());
+ }
+ return resInfo;
+ }
+
+ /**
+ * Test that a folder level resource configuration correctly reloads from disk
+ * @throws Exception
+ */
+ public void testResourceConfiguration_Bug580009() throws Exception {
+
+ // Create a new project
+ IProject project = null;
+
+ try {
+ project = createProject(projectName);
+
+ // Now associate the builder with the project
+ ManagedBuildTestHelper.addManagedBuildNature(project);
+ IProjectDescription description = project.getDescription();
+ // Make sure it has a managed nature
+ if (description != null) {
+ assertTrue(description.hasNature(ManagedCProjectNature.MNG_NATURE_ID));
+ }
+
+ } catch (CoreException e) {
+ fail("Test failed on project creation: " + e.getLocalizedMessage());
+ }
+
+ // Find the base project type definition
+ IProjectType[] projTypes = ManagedBuildManager.getDefinedProjectTypes();
+ IProjectType projType = ManagedBuildManager.getProjectType("bug580009.tests.ptype");
+ assertNotNull(projType);
+
+ // Create the managed-project for our project
+ IManagedProject newProject = ManagedBuildManager.createManagedProject(project, projType);
+ assertEquals(newProject.getName(), projType.getName());
+ assertFalse(newProject.equals(projType));
+ ManagedBuildManager.setNewProjectVersion(project);
+
+ // Create a folder ('hello')
+ IFolder helloFolder = project.getProject().getFolder("hello");
+ if (!helloFolder.exists()) {
+ helloFolder.create(true, true, null);
+ }
+
+ // Get the configurations and make one of them as default configuration.
+ IConfiguration defaultConfig = null;
+ IConfiguration[] configs = projType.getConfigurations();
+ for (int i = 0; i < configs.length; ++i) {
+ // Make the first configuration the default
+ if (i == 0) {
+ defaultConfig = newProject.createConfiguration(configs[i], projType.getId() + "." + i);
+ } else {
+ newProject.createConfiguration(configs[i], projType.getId() + "." + i);
+ }
+ }
+ ManagedBuildManager.setDefaultConfiguration(project, defaultConfig);
+
+ //Set toolchain level option
+ IOption tcOption = defaultConfig.getToolChain().getOptionById("bug580009.tests.cfg1.tc.option.string");
+ ManagedBuildManager.setOption(defaultConfig, defaultConfig.getToolChain(), tcOption, true);
+ ManagedBuildManager.saveBuildInfo(project, true);
+ // Create Resource Configurations for hello.c
+ var resConfig = getResourceConfiguration(defaultConfig, helloFolder);
+
+ // Get the tools associated with the resource 'hello'.
+ ITool[] resTools = resConfig.getTools();
+ assertNotNull(resTools);
+ assertEquals(1, resTools.length);
+
+ // Get the build properties for the resource hello
+ ITool resTool = resTools[0];
+ String defaultResToolFlags = resTool.getToolFlags();
+
+ // Get the Test Option.
+ IOption resDebugOption = resTool.getOptionById("bug580009.tests.option.string");
+
+ // Get the default value of debug option for resource.
+ String defaultResDebugOptVal = resDebugOption.getStringValue();
+
+ // Now, override the value with "bug580009.tests.option.string"
+ IOption newResDebugOption = ManagedBuildManager.setOption(resConfig, resTool, resDebugOption, "SET");
+
+ // Get the overridden value of test option.
+ String newResDebugOptVal = newResDebugOption.getStringValue();
+ String newResToolFlags = resTool.getToolFlags();
+
+ // Make sure, default and overridden values are different.
+ assertNotSame(defaultResDebugOptVal, newResDebugOptVal);
+
+ //Check the config reports custom settings
+ Assert.assertTrue("hasCustomSettings should be true", ((ResourceInfo) resConfig).hasCustomSettings());
+
+ ManagedBuildManager.saveBuildInfo(project, true);
+
+ //Close project
+ project.close(null);
+ project.open(null);
+
+ //Reload configs
+ defaultConfig = ManagedBuildManager.getBuildInfo(project).getDefaultConfiguration();
+ var resInfo = defaultConfig.getResourceInfo(helloFolder.getProjectRelativePath(), true);
+
+ //Check the config still reports custom settings (sanity check)
+ Assert.assertTrue("hasCustomSettings should be true", ((ResourceInfo) resInfo).hasCustomSettings());
+
+ resTools = resInfo.getTools();
+ resTool = resTools[0];
+ resDebugOption = resTool.getOptionBySuperClassId("bug580009.tests.option.string");
+
+ // Set back to default value
+ IOption newResDebugOption2 = ManagedBuildManager.setOption(resInfo, resTool, resDebugOption, "UNSET");
+
+ //Check the config now reports no custom settings
+ Assert.assertFalse("hasCustomSettings should be false", ((ResourceInfo) resInfo).hasCustomSettings());
+
+ ManagedBuildManager.saveBuildInfo(project, true);
+
+ //Check the resource config no longer exists
+ resInfo = defaultConfig.getResourceInfo(helloFolder.getProjectRelativePath(), true);
+ Assert.assertNull("resInfo should be null", resInfo);
+
+ // Close and remove project.
+ ResourceHelper.joinIndexerBeforeCleanup(getName());
+ project.close(null);
+ removeProject(projectName);
+ }
+
}
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/TestPathConverter1.java b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/TestPathConverter1.java
index 3f9b3fdf5c0..fb49f381de3 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/TestPathConverter1.java
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/TestPathConverter1.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (C) 2006, 2011 Siemens AG.
+ * Copyright (c) 2006, 2011 Siemens AG.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/TestPathConverter2.java b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/TestPathConverter2.java
index abe6422b68b..e9de8ca427d 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/TestPathConverter2.java
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/TestPathConverter2.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (C) 2006 Siemens AG.
+ * Copyright (c) 2006 Siemens AG.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/TestPathConverter3.java b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/TestPathConverter3.java
index 394fe54bb0f..2d180a92fc2 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/TestPathConverter3.java
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/TestPathConverter3.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (C) 2006 Siemens AG.
+ * Copyright (c) 2006 Siemens AG.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/TestPathConverter4.java b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/TestPathConverter4.java
index bf745ac179f..d8af672d06d 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/TestPathConverter4.java
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/TestPathConverter4.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (C) 2006, 2010 Siemens AG.
+ * Copyright (c) 2006, 2010 Siemens AG.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/language/settings/providers/tests/AllLanguageSettingsProvidersMBSTestSuite.java b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/language/settings/providers/tests/AllLanguageSettingsProvidersMBSTestSuite.java
new file mode 100644
index 00000000000..87fc4cfe990
--- /dev/null
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/language/settings/providers/tests/AllLanguageSettingsProvidersMBSTestSuite.java
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ * Copyright (c) 2010, 2012 Andrew Gvozdev and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Andrew Gvozdev - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.cdt.managedbuilder.language.settings.providers.tests;
+
+import junit.framework.TestSuite;
+
+/**
+ * Test suite to test language settings providers defined in cdt.managedbuilder.core.
+ */
+public class AllLanguageSettingsProvidersMBSTestSuite extends TestSuite {
+
+ public static TestSuite suite() {
+ return new AllLanguageSettingsProvidersMBSTestSuite();
+ }
+
+ public AllLanguageSettingsProvidersMBSTestSuite() {
+ super(AllLanguageSettingsProvidersMBSTestSuite.class.getName());
+
+ addTestSuite(LanguageSettingsProvidersMBSTest.class);
+ addTestSuite(GCCBuildCommandParserTest.class);
+ addTestSuite(BuiltinSpecsDetectorTest.class);
+ addTestSuite(GCCBuiltinSpecsDetectorTest.class);
+ addTestSuite(CompilationDatabaseParserTest.class);
+ }
+}
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/language/settings/providers/tests/AllLanguageSettingsProvidersMBSTests.java b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/language/settings/providers/tests/AllLanguageSettingsProvidersMBSTests.java
deleted file mode 100644
index e638ee210a1..00000000000
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/language/settings/providers/tests/AllLanguageSettingsProvidersMBSTests.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010, 2012 Andrew Gvozdev and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Andrew Gvozdev - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.cdt.managedbuilder.language.settings.providers.tests;
-
-import junit.framework.TestSuite;
-
-/**
- * Test suite to test language settings providers defined in cdt.managedbuilder.core.
- */
-public class AllLanguageSettingsProvidersMBSTests extends TestSuite {
-
- public static TestSuite suite() {
- return new AllLanguageSettingsProvidersMBSTests();
- }
-
- public AllLanguageSettingsProvidersMBSTests() {
- super(AllLanguageSettingsProvidersMBSTests.class.getName());
-
- addTestSuite(LanguageSettingsProvidersMBSTest.class);
- addTestSuite(GCCBuildCommandParserTest.class);
- addTestSuite(BuiltinSpecsDetectorTest.class);
- addTestSuite(GCCBuiltinSpecsDetectorTest.class);
- addTestSuite(CompilationDatabaseParserTest.class);
- }
-}
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/language/settings/providers/tests/BuiltinSpecsDetectorTest.java b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/language/settings/providers/tests/BuiltinSpecsDetectorTest.java
index 4252f366330..7e643eb814b 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/language/settings/providers/tests/BuiltinSpecsDetectorTest.java
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/language/settings/providers/tests/BuiltinSpecsDetectorTest.java
@@ -223,7 +223,7 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
@Override
protected List<String> parseOptions(final String line) {
- return new ArrayList<String>() {
+ return new ArrayList<>() {
{
add(line);
}
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/language/settings/providers/tests/CompilationDatabaseParserTest.java b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/language/settings/providers/tests/CompilationDatabaseParserTest.java
index 4a0490c26f9..a67532ca43c 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/language/settings/providers/tests/CompilationDatabaseParserTest.java
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/language/settings/providers/tests/CompilationDatabaseParserTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2019 Marc-Andre Laperle.
+ * Copyright (c) 2019, 2020 Marc-Andre Laperle.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -10,6 +10,7 @@
*******************************************************************************/
package org.eclipse.cdt.managedbuilder.language.settings.providers.tests;
+import static org.junit.jupiter.api.Assertions.assertNotEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
import java.io.ByteArrayInputStream;
@@ -18,6 +19,7 @@ import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
import org.eclipse.cdt.core.CCorePlugin;
@@ -35,6 +37,7 @@ import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry;
import org.eclipse.cdt.core.settings.model.ICProjectDescription;
import org.eclipse.cdt.core.settings.model.ICProjectDescriptionManager;
+import org.eclipse.cdt.core.settings.model.ICSourceEntry;
import org.eclipse.cdt.core.settings.model.util.CDataUtil;
import org.eclipse.cdt.core.testplugin.ResourceHelper;
import org.eclipse.cdt.core.testplugin.util.BaseTestCase;
@@ -47,6 +50,7 @@ import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.jobs.Job;
@@ -71,6 +75,7 @@ public class CompilationDatabaseParserTest extends BaseTestCase {
private IFile fOutsideCdbSourceFile;
private IProject fProject;
private IFolder fFolder;
+ private IFolder fFolderAllExcluded;
@Override
protected void setUp() throws Exception {
@@ -80,7 +85,7 @@ public class CompilationDatabaseParserTest extends BaseTestCase {
@Override
protected void tearDown() throws Exception {
try {
- joingLanguageSettingsJobs();
+ joinLanguageSettingsJobs();
} catch (Exception e) {
// ignore
}
@@ -88,32 +93,40 @@ public class CompilationDatabaseParserTest extends BaseTestCase {
}
private void createTestProject() throws Exception {
- createTestProject(true, true, true, true, true);
+ createTestProject(true, true, true, true, true, false);
}
private void createTestProject(boolean useAbsoluteSourcePath, boolean haveCommandDir, boolean validCommandDir,
boolean haveCommandLine, boolean validCommandLine) throws Exception {
+ createTestProject(useAbsoluteSourcePath, haveCommandDir, validCommandDir, haveCommandLine, validCommandLine,
+ false);
+ }
+
+ private void createTestProject(boolean useAbsoluteSourcePath, boolean haveCommandDir, boolean validCommandDir,
+ boolean haveCommandLine, boolean validCommandLine, boolean haveCommandArguments) throws Exception {
fProject = ResourceHelper.createCDTProjectWithConfig(getName());
fFolder = ResourceHelper.createFolder(fProject, "folder");
-
- IFile sourceFile = fFolder.getFile("test.cpp");
- if (sourceFile.exists()) {
- sourceFile.delete(true, null);
- }
-
- IFile sourceFile2 = fProject.getFile("test.cpp");
- if (sourceFile2.exists()) {
- sourceFile2.delete(true, null);
- }
-
- fSourceFile = ResourceHelper.createFile(sourceFile, "//comment");
- fSourceFile2 = ResourceHelper.createFile(sourceFile2, "//comment2");
-
- IFile outsideSourceFile = fFolder.getFile("outside.cpp");
- if (outsideSourceFile.exists()) {
- outsideSourceFile.delete(true, null);
- }
- fOutsideCdbSourceFile = ResourceHelper.createFile(outsideSourceFile, "//comment");
+ fFolderAllExcluded = ResourceHelper.createFolder(fProject, "folder-all-excluded");
+ IFolder subfolderAllExcluded = fFolderAllExcluded.getFolder("subfolder-all-excluded");
+ subfolderAllExcluded.create(true, true, new NullProgressMonitor());
+
+ fSourceFile = fFolder.getFile("test.cpp");
+ fSourceFile2 = fProject.getFile("test.cpp");
+ fOutsideCdbSourceFile = fFolder.getFile("outside.cpp");
+ List<IFile> files = Arrays.asList(fSourceFile, fSourceFile2, fOutsideCdbSourceFile,
+ fFolderAllExcluded.getFile("file1.cpp"), fFolderAllExcluded.getFile("file2.cpp"),
+ subfolderAllExcluded.getFile("file3.cpp"));
+
+ files.forEach(file -> {
+ try {
+ if (file.exists()) {
+ file.delete(true, null);
+ }
+ ResourceHelper.createFile(file, "//comment " + file.getLocation());
+ } catch (CoreException e) {
+ throw new RuntimeException(e);
+ }
+ });
IFile file = fProject.getFile("compile_commands.json");
if (file.exists()) {
@@ -140,6 +153,10 @@ public class CompilationDatabaseParserTest extends BaseTestCase {
else
command.command = "foo";
}
+ if (haveCommandArguments) {
+ command.arguments = new String[] { "g++", "-I" + fFolder.getLocation().toOSString(), "-DFOO=2",
+ sourceFilePath };
+ }
// Command for proj/test.cpp
CompileCommand command2 = new CompileCommand();
@@ -162,6 +179,11 @@ public class CompilationDatabaseParserTest extends BaseTestCase {
command2.command = "foo";
}
+ if (haveCommandArguments) {
+ command2.arguments = new String[] { "g++", "-I" + fFolder.getLocation().toOSString(), "-DFOO=3",
+ sourceFilePath2 };
+ }
+
CompileCommand[] commands = new CompileCommand[2];
commands[0] = command;
commands[1] = command2;
@@ -180,7 +202,7 @@ public class CompilationDatabaseParserTest extends BaseTestCase {
cfgDescription.getProjectDescription());
}
- private void joingLanguageSettingsJobs() throws InterruptedException {
+ private void joinLanguageSettingsJobs() throws InterruptedException {
Job.getJobManager().join(CompilationDatabaseParser.JOB_FAMILY_COMPILATION_DATABASE_PARSER, null);
Job.getJobManager().join(AbstractBuildCommandParser.JOB_FAMILY_BUILD_COMMAND_PARSER, null);
Job.getJobManager().join(LanguageSettingsProvidersSerializer.JOB_FAMILY_SERIALIZE_LANGUAGE_SETTINGS_PROJECT,
@@ -204,18 +226,38 @@ public class CompilationDatabaseParserTest extends BaseTestCase {
return cfgDescriptions[0];
}
- private void addLanguageSettingsProvider(ILanguageSettingsProvider provider) throws CoreException {
- ICConfigurationDescription cfgDescription = getConfigurationDescription(fProject, true);
+ private ICConfigurationDescription getConfigurationDescription(IProject project, String configId,
+ boolean writable) {
+ CoreModel coreModel = CoreModel.getDefault();
+ ICProjectDescriptionManager mngr = coreModel.getProjectDescriptionManager();
+ // project description
+ ICProjectDescription projectDescription = mngr.getProjectDescription(project, writable);
+ assertNotNull(projectDescription);
+ return projectDescription.getConfigurationById(configId);
+ }
+
+ private void addLanguageSettingsProvider(ICConfigurationDescription cfgDescription,
+ ILanguageSettingsProvider provider) {
List<ILanguageSettingsProvider> providers = new ArrayList<>(
((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders());
providers.add(provider);
((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers);
- CoreModel.getDefault().setProjectDescription(cfgDescription.getProjectDescription().getProject(),
- cfgDescription.getProjectDescription());
+ }
+
+ private CompilationDatabaseParser createCompilationDatabaseParser() {
+ CompilationDatabaseParser parser = (CompilationDatabaseParser) LanguageSettingsManager
+ .getExtensionProviderCopy(COMPILATION_DATABASE_PARSER_EXT, true);
+ assertTrue(parser.isEmpty());
+ return parser;
}
private CompilationDatabaseParser getCompilationDatabaseParser() throws CoreException {
ICConfigurationDescription cfgDescription = getConfigurationDescription(fProject, false);
+ return getCompilationDatabaseParser(cfgDescription);
+ }
+
+ private CompilationDatabaseParser getCompilationDatabaseParser(ICConfigurationDescription cfgDescription)
+ throws CoreException {
List<ILanguageSettingsProvider> settingProviders = ((ILanguageSettingsProvidersKeeper) cfgDescription)
.getLanguageSettingProviders();
for (ILanguageSettingsProvider languageSettingsProvider : settingProviders) {
@@ -228,8 +270,12 @@ public class CompilationDatabaseParserTest extends BaseTestCase {
}
private void assertExpectedEntries(CompilationDatabaseParser parser) {
+ assertExpectedEntries(parser, getConfigurationDescription(fProject, false).getId());
+ }
+
+ private void assertExpectedEntries(CompilationDatabaseParser parser, String configId) {
assertFalse(parser.isEmpty());
- ICConfigurationDescription resCfgDescription = getConfigurationDescription(fProject, false);
+ ICConfigurationDescription resCfgDescription = getConfigurationDescription(fProject, configId, false);
List<ICLanguageSettingEntry> entries = parser.getSettingEntries(resCfgDescription, fSourceFile, GPPLanguage.ID);
CIncludePathEntry expected = new CIncludePathEntry("/${ProjName}/folder",
@@ -264,12 +310,9 @@ public class CompilationDatabaseParserTest extends BaseTestCase {
assertFalse(
CDataUtil.isExcluded(tu.getPath(), getConfigurationDescription(fProject, false).getSourceEntries()));
- CompilationDatabaseParser parser = (CompilationDatabaseParser) LanguageSettingsManager
- .getExtensionProviderCopy(COMPILATION_DATABASE_PARSER_EXT, true);
- assertTrue(parser.isEmpty());
+ CompilationDatabaseParser parser = createCompilationDatabaseParser();
parser.setBuildParserId(GCC_BUILD_COMMAND_PARSER_EXT);
- parser.setCompilationDataBasePath(fCdbFile.getLocation());
- addLanguageSettingsProvider(parser);
+ parser.setCompilationDataBasePathProperty(fCdbFile.getLocation().toOSString());
ICConfigurationDescription cfgDescription = getConfigurationDescription(fProject, true);
@@ -277,7 +320,7 @@ public class CompilationDatabaseParserTest extends BaseTestCase {
assertFalse(parser.isEmpty());
CoreModel.getDefault().setProjectDescription(cfgDescription.getProjectDescription().getProject(),
cfgDescription.getProjectDescription());
- joingLanguageSettingsJobs();
+ joinLanguageSettingsJobs();
ICConfigurationDescription resCfgDescription = getConfigurationDescription(fProject, false);
assertExpectedEntries(parser);
@@ -285,7 +328,7 @@ public class CompilationDatabaseParserTest extends BaseTestCase {
assertFalse(CDataUtil.isExcluded(tu.getPath(), resCfgDescription.getSourceEntries()));
}
- public void testParseCDB_ReadonlyConfigDesc() throws Exception {
+ public void testParseCDB_WithExclusions() throws Exception {
createTestProject();
ICProject cProject = CCorePlugin.getDefault().getCoreModel().create(fProject);
@@ -294,26 +337,31 @@ public class CompilationDatabaseParserTest extends BaseTestCase {
assertFalse(
CDataUtil.isExcluded(tu.getPath(), getConfigurationDescription(fProject, false).getSourceEntries()));
- CompilationDatabaseParser parser = (CompilationDatabaseParser) LanguageSettingsManager
- .getExtensionProviderCopy(COMPILATION_DATABASE_PARSER_EXT, true);
- assertTrue(parser.isEmpty());
+ CompilationDatabaseParser parser = createCompilationDatabaseParser();
parser.setBuildParserId(GCC_BUILD_COMMAND_PARSER_EXT);
- parser.setCompilationDataBasePath(fCdbFile.getLocation());
- addLanguageSettingsProvider(parser);
+ parser.setCompilationDataBasePathProperty(fCdbFile.getLocation().toOSString());
+ parser.setExcludeFiles(true);
- ICConfigurationDescription cfgDescription = getConfigurationDescription(fProject, false);
+ ICConfigurationDescription cfgDescription = getConfigurationDescription(fProject, true);
parser.processCompileCommandsFile(null, cfgDescription);
- // processCompileCommandsFile restarts itself in a WorkspaceJob with a writable config desc so we have to wait for the job.
- joingLanguageSettingsJobs();
+ CoreModel.getDefault().setProjectDescription(cfgDescription.getProjectDescription().getProject(),
+ cfgDescription.getProjectDescription());
+ joinLanguageSettingsJobs();
- ICConfigurationDescription resCfgDescription = getConfigurationDescription(fProject, false);
- assertExpectedEntries(getCompilationDatabaseParser());
+ assertExpectedEntries(parser);
- assertFalse(CDataUtil.isExcluded(tu.getPath(), resCfgDescription.getSourceEntries()));
+ ICConfigurationDescription resCfgDescription = getConfigurationDescription(fProject, false);
+ ICSourceEntry[] sourceEntries = resCfgDescription.getSourceEntries();
+ assertTrue(CDataUtil.isExcluded(tu.getPath(), sourceEntries));
+ assertTrue(CDataUtil.isExcluded(fFolderAllExcluded.getFullPath(), sourceEntries));
+ assertFalse(CDataUtil.isExcluded(fFolder.getFullPath(), sourceEntries));
+ assertFalse(CDataUtil.isExcluded(fProject.getFullPath(), sourceEntries));
+ assertFalse(CDataUtil.isExcluded(fSourceFile.getFullPath(), sourceEntries));
+ assertFalse(CDataUtil.isExcluded(fSourceFile2.getFullPath(), sourceEntries));
}
- public void testParseCDB_WithExclusions() throws Exception {
+ public void testParseCDB_NoBuildCommandParser() throws Exception {
createTestProject();
ICProject cProject = CCorePlugin.getDefault().getCoreModel().create(fProject);
@@ -322,28 +370,28 @@ public class CompilationDatabaseParserTest extends BaseTestCase {
assertFalse(
CDataUtil.isExcluded(tu.getPath(), getConfigurationDescription(fProject, false).getSourceEntries()));
- CompilationDatabaseParser parser = (CompilationDatabaseParser) LanguageSettingsManager
- .getExtensionProviderCopy(COMPILATION_DATABASE_PARSER_EXT, true);
- assertTrue(parser.isEmpty());
- parser.setBuildParserId(GCC_BUILD_COMMAND_PARSER_EXT);
- parser.setCompilationDataBasePath(fCdbFile.getLocation());
+ CompilationDatabaseParser parser = createCompilationDatabaseParser();
+ parser.setCompilationDataBasePathProperty(fCdbFile.getLocation().toOSString());
parser.setExcludeFiles(true);
- addLanguageSettingsProvider(parser);
ICConfigurationDescription cfgDescription = getConfigurationDescription(fProject, true);
+ addLanguageSettingsProvider(cfgDescription, parser);
- parser.processCompileCommandsFile(null, cfgDescription);
+ assertThrows(CoreException.class, () -> parser.processCompileCommandsFile(null, cfgDescription));
CoreModel.getDefault().setProjectDescription(cfgDescription.getProjectDescription().getProject(),
cfgDescription.getProjectDescription());
- joingLanguageSettingsJobs();
-
- assertExpectedEntries(parser);
+ joinLanguageSettingsJobs();
ICConfigurationDescription resCfgDescription = getConfigurationDescription(fProject, false);
- assertTrue(CDataUtil.isExcluded(tu.getPath(), resCfgDescription.getSourceEntries()));
+ CompilationDatabaseParser resultParser = getCompilationDatabaseParser();
+ assertTrue(resultParser.isEmpty());
+ List<ICLanguageSettingEntry> entries = resultParser.getSettingEntries(resCfgDescription, fSourceFile,
+ GPPLanguage.ID);
+ assertTrue(entries == null);
+ assertFalse(CDataUtil.isExcluded(tu.getPath(), resCfgDescription.getSourceEntries()));
}
- public void testParseCDB_ReadonlyConfigDescWithExclusions() throws Exception {
+ public void testParseCDB_InvalidBuildCommandParser() throws Exception {
createTestProject();
ICProject cProject = CCorePlugin.getDefault().getCoreModel().create(fProject);
@@ -352,27 +400,29 @@ public class CompilationDatabaseParserTest extends BaseTestCase {
assertFalse(
CDataUtil.isExcluded(tu.getPath(), getConfigurationDescription(fProject, false).getSourceEntries()));
- CompilationDatabaseParser parser = (CompilationDatabaseParser) LanguageSettingsManager
- .getExtensionProviderCopy(COMPILATION_DATABASE_PARSER_EXT, true);
- assertTrue(parser.isEmpty());
- parser.setBuildParserId(GCC_BUILD_COMMAND_PARSER_EXT);
- parser.setCompilationDataBasePath(fCdbFile.getLocation());
+ CompilationDatabaseParser parser = createCompilationDatabaseParser();
+ parser.setBuildParserId(GCC_BUILD_COMMAND_PARSER_EXT + "foo");
+ parser.setCompilationDataBasePathProperty(fCdbFile.getLocation().toOSString());
parser.setExcludeFiles(true);
- addLanguageSettingsProvider(parser);
- ICConfigurationDescription cfgDescription = getConfigurationDescription(fProject, false);
-
- parser.processCompileCommandsFile(null, cfgDescription);
- // processCompileCommandsFile restarts itself in a WorkspaceJob with a writable config desc so we have to wait for the job.
- joingLanguageSettingsJobs();
+ ICConfigurationDescription cfgDescription = getConfigurationDescription(fProject, true);
+ addLanguageSettingsProvider(cfgDescription, parser);
- assertExpectedEntries(getCompilationDatabaseParser());
+ assertThrows(CoreException.class, () -> parser.processCompileCommandsFile(null, cfgDescription));
+ CoreModel.getDefault().setProjectDescription(cfgDescription.getProjectDescription().getProject(),
+ cfgDescription.getProjectDescription());
+ joinLanguageSettingsJobs();
ICConfigurationDescription resCfgDescription = getConfigurationDescription(fProject, false);
- assertTrue(CDataUtil.isExcluded(tu.getPath(), resCfgDescription.getSourceEntries()));
+ CompilationDatabaseParser resultParser = getCompilationDatabaseParser();
+ assertTrue(resultParser.isEmpty());
+ List<ICLanguageSettingEntry> entries = resultParser.getSettingEntries(resCfgDescription, fSourceFile,
+ GPPLanguage.ID);
+ assertTrue(entries == null);
+ assertFalse(CDataUtil.isExcluded(tu.getPath(), resCfgDescription.getSourceEntries()));
}
- public void testParseCDB_NoBuildCommandParser() throws Exception {
+ public void testParseCDB_NonExistantCDB() throws Exception {
createTestProject();
ICProject cProject = CCorePlugin.getDefault().getCoreModel().create(fProject);
@@ -381,19 +431,18 @@ public class CompilationDatabaseParserTest extends BaseTestCase {
assertFalse(
CDataUtil.isExcluded(tu.getPath(), getConfigurationDescription(fProject, false).getSourceEntries()));
- CompilationDatabaseParser parser = (CompilationDatabaseParser) LanguageSettingsManager
- .getExtensionProviderCopy(COMPILATION_DATABASE_PARSER_EXT, true);
- assertTrue(parser.isEmpty());
- parser.setCompilationDataBasePath(fCdbFile.getLocation());
+ CompilationDatabaseParser parser = createCompilationDatabaseParser();
+ parser.setBuildParserId(GCC_BUILD_COMMAND_PARSER_EXT);
+ parser.setCompilationDataBasePathProperty(new Path("/testParseCDB_NonExistantCDB").toOSString());
parser.setExcludeFiles(true);
- addLanguageSettingsProvider(parser);
ICConfigurationDescription cfgDescription = getConfigurationDescription(fProject, true);
+ addLanguageSettingsProvider(cfgDescription, parser);
assertThrows(CoreException.class, () -> parser.processCompileCommandsFile(null, cfgDescription));
CoreModel.getDefault().setProjectDescription(cfgDescription.getProjectDescription().getProject(),
cfgDescription.getProjectDescription());
- joingLanguageSettingsJobs();
+ joinLanguageSettingsJobs();
ICConfigurationDescription resCfgDescription = getConfigurationDescription(fProject, false);
CompilationDatabaseParser resultParser = getCompilationDatabaseParser();
@@ -404,7 +453,7 @@ public class CompilationDatabaseParserTest extends BaseTestCase {
assertFalse(CDataUtil.isExcluded(tu.getPath(), resCfgDescription.getSourceEntries()));
}
- public void testParseCDB_InvalidBuildCommandParser() throws Exception {
+ public void testParseCDB_EmptyCDBPath() throws Exception {
createTestProject();
ICProject cProject = CCorePlugin.getDefault().getCoreModel().create(fProject);
@@ -413,20 +462,18 @@ public class CompilationDatabaseParserTest extends BaseTestCase {
assertFalse(
CDataUtil.isExcluded(tu.getPath(), getConfigurationDescription(fProject, false).getSourceEntries()));
- CompilationDatabaseParser parser = (CompilationDatabaseParser) LanguageSettingsManager
- .getExtensionProviderCopy(COMPILATION_DATABASE_PARSER_EXT, true);
- assertTrue(parser.isEmpty());
- parser.setBuildParserId(GCC_BUILD_COMMAND_PARSER_EXT + "foo");
- parser.setCompilationDataBasePath(fCdbFile.getLocation());
+ CompilationDatabaseParser parser = createCompilationDatabaseParser();
+ parser.setBuildParserId(GCC_BUILD_COMMAND_PARSER_EXT);
+ parser.setCompilationDataBasePathProperty("");
parser.setExcludeFiles(true);
- addLanguageSettingsProvider(parser);
ICConfigurationDescription cfgDescription = getConfigurationDescription(fProject, true);
+ addLanguageSettingsProvider(cfgDescription, parser);
assertThrows(CoreException.class, () -> parser.processCompileCommandsFile(null, cfgDescription));
CoreModel.getDefault().setProjectDescription(cfgDescription.getProjectDescription().getProject(),
cfgDescription.getProjectDescription());
- joingLanguageSettingsJobs();
+ joinLanguageSettingsJobs();
ICConfigurationDescription resCfgDescription = getConfigurationDescription(fProject, false);
CompilationDatabaseParser resultParser = getCompilationDatabaseParser();
@@ -437,7 +484,7 @@ public class CompilationDatabaseParserTest extends BaseTestCase {
assertFalse(CDataUtil.isExcluded(tu.getPath(), resCfgDescription.getSourceEntries()));
}
- public void testParseCDB_NonExistantCDB() throws Exception {
+ public void testParseCDB_DirectoryCDBPath() throws Exception {
createTestProject();
ICProject cProject = CCorePlugin.getDefault().getCoreModel().create(fProject);
@@ -446,20 +493,18 @@ public class CompilationDatabaseParserTest extends BaseTestCase {
assertFalse(
CDataUtil.isExcluded(tu.getPath(), getConfigurationDescription(fProject, false).getSourceEntries()));
- CompilationDatabaseParser parser = (CompilationDatabaseParser) LanguageSettingsManager
- .getExtensionProviderCopy(COMPILATION_DATABASE_PARSER_EXT, true);
- assertTrue(parser.isEmpty());
+ CompilationDatabaseParser parser = createCompilationDatabaseParser();
parser.setBuildParserId(GCC_BUILD_COMMAND_PARSER_EXT);
- parser.setCompilationDataBasePath(new Path("/testParseCDB_NonExistantCDB"));
+ parser.setCompilationDataBasePathProperty(fCdbFile.getParent().getLocation().toOSString());
parser.setExcludeFiles(true);
- addLanguageSettingsProvider(parser);
ICConfigurationDescription cfgDescription = getConfigurationDescription(fProject, true);
+ addLanguageSettingsProvider(cfgDescription, parser);
assertThrows(CoreException.class, () -> parser.processCompileCommandsFile(null, cfgDescription));
CoreModel.getDefault().setProjectDescription(cfgDescription.getProjectDescription().getProject(),
cfgDescription.getProjectDescription());
- joingLanguageSettingsJobs();
+ joinLanguageSettingsJobs();
ICConfigurationDescription resCfgDescription = getConfigurationDescription(fProject, false);
CompilationDatabaseParser resultParser = getCompilationDatabaseParser();
@@ -470,70 +515,59 @@ public class CompilationDatabaseParserTest extends BaseTestCase {
assertFalse(CDataUtil.isExcluded(tu.getPath(), resCfgDescription.getSourceEntries()));
}
- public void testParseCDB_EmptyCDBPath() throws Exception {
+ public void testParseCDB_ProjectRelativeCDBPath() throws Exception {
createTestProject();
ICProject cProject = CCorePlugin.getDefault().getCoreModel().create(fProject);
- ICElement ce = CCorePlugin.getDefault().getCoreModel().create(fOutsideCdbSourceFile.getFullPath());
- ITranslationUnit tu = (ITranslationUnit) ce;
- assertFalse(
- CDataUtil.isExcluded(tu.getPath(), getConfigurationDescription(fProject, false).getSourceEntries()));
CompilationDatabaseParser parser = (CompilationDatabaseParser) LanguageSettingsManager
.getExtensionProviderCopy(COMPILATION_DATABASE_PARSER_EXT, true);
assertTrue(parser.isEmpty());
parser.setBuildParserId(GCC_BUILD_COMMAND_PARSER_EXT);
- parser.setCompilationDataBasePath(new Path(""));
+ parser.setCompilationDataBasePathProperty(new Path("${ProjDirPath}")
+ .append(fCdbFile.getFullPath().makeRelativeTo(cProject.getProject().getFullPath())).toOSString());
parser.setExcludeFiles(true);
- addLanguageSettingsProvider(parser);
ICConfigurationDescription cfgDescription = getConfigurationDescription(fProject, true);
- assertThrows(CoreException.class, () -> parser.processCompileCommandsFile(null, cfgDescription));
+ parser.processCompileCommandsFile(null, cfgDescription);
+ assertFalse(parser.isEmpty());
CoreModel.getDefault().setProjectDescription(cfgDescription.getProjectDescription().getProject(),
cfgDescription.getProjectDescription());
- joingLanguageSettingsJobs();
+ joinLanguageSettingsJobs();
+
+ assertExpectedEntries(parser);
ICConfigurationDescription resCfgDescription = getConfigurationDescription(fProject, false);
- CompilationDatabaseParser resultParser = getCompilationDatabaseParser();
- assertTrue(resultParser.isEmpty());
- List<ICLanguageSettingEntry> entries = resultParser.getSettingEntries(resCfgDescription, fSourceFile,
- GPPLanguage.ID);
- assertTrue(entries == null);
- assertFalse(CDataUtil.isExcluded(tu.getPath(), resCfgDescription.getSourceEntries()));
}
- public void testParseCDB_DirectoryCDBPath() throws Exception {
+ public void testParseCDB_WorkspaceVarCDBPath() throws Exception {
createTestProject();
ICProject cProject = CCorePlugin.getDefault().getCoreModel().create(fProject);
- ICElement ce = CCorePlugin.getDefault().getCoreModel().create(fOutsideCdbSourceFile.getFullPath());
- ITranslationUnit tu = (ITranslationUnit) ce;
- assertFalse(
- CDataUtil.isExcluded(tu.getPath(), getConfigurationDescription(fProject, false).getSourceEntries()));
CompilationDatabaseParser parser = (CompilationDatabaseParser) LanguageSettingsManager
.getExtensionProviderCopy(COMPILATION_DATABASE_PARSER_EXT, true);
assertTrue(parser.isEmpty());
parser.setBuildParserId(GCC_BUILD_COMMAND_PARSER_EXT);
- parser.setCompilationDataBasePath(fCdbFile.getParent().getLocation());
+ parser.setCompilationDataBasePathProperty(
+ new Path("${WorkspaceDirPath}")
+ .append(fCdbFile.getFullPath()
+ .makeRelativeTo(cProject.getProject().getWorkspace().getRoot().getFullPath()))
+ .toOSString());
parser.setExcludeFiles(true);
- addLanguageSettingsProvider(parser);
ICConfigurationDescription cfgDescription = getConfigurationDescription(fProject, true);
- assertThrows(CoreException.class, () -> parser.processCompileCommandsFile(null, cfgDescription));
+ parser.processCompileCommandsFile(null, cfgDescription);
+ assertFalse(parser.isEmpty());
CoreModel.getDefault().setProjectDescription(cfgDescription.getProjectDescription().getProject(),
cfgDescription.getProjectDescription());
- joingLanguageSettingsJobs();
+ joinLanguageSettingsJobs();
+
+ assertExpectedEntries(parser);
ICConfigurationDescription resCfgDescription = getConfigurationDescription(fProject, false);
- CompilationDatabaseParser resultParser = getCompilationDatabaseParser();
- assertTrue(resultParser.isEmpty());
- List<ICLanguageSettingEntry> entries = resultParser.getSettingEntries(resCfgDescription, fSourceFile,
- GPPLanguage.ID);
- assertTrue(entries == null);
- assertFalse(CDataUtil.isExcluded(tu.getPath(), resCfgDescription.getSourceEntries()));
}
public void testParseCDB_InvalidJson() throws Exception {
@@ -562,17 +596,17 @@ public class CompilationDatabaseParserTest extends BaseTestCase {
.getExtensionProviderCopy(COMPILATION_DATABASE_PARSER_EXT, true);
assertTrue(parser.isEmpty());
parser.setBuildParserId(GCC_BUILD_COMMAND_PARSER_EXT);
- parser.setCompilationDataBasePath(fCdbFile.getLocation());
+ parser.setCompilationDataBasePathProperty(fCdbFile.getLocation().toOSString());
parser.setExcludeFiles(true);
- addLanguageSettingsProvider(parser);
ICConfigurationDescription cfgDescription = getConfigurationDescription(fProject, true);
+ addLanguageSettingsProvider(cfgDescription, parser);
assertThrows(CoreException.class, () -> parser.processCompileCommandsFile(null, cfgDescription));
CoreModel.getDefault().setProjectDescription(cfgDescription.getProjectDescription().getProject(),
cfgDescription.getProjectDescription());
- joingLanguageSettingsJobs();
+ joinLanguageSettingsJobs();
ICConfigurationDescription resCfgDescription = getConfigurationDescription(fProject, false);
CompilationDatabaseParser resultParser = getCompilationDatabaseParser();
@@ -592,12 +626,9 @@ public class CompilationDatabaseParserTest extends BaseTestCase {
assertFalse(
CDataUtil.isExcluded(tu.getPath(), getConfigurationDescription(fProject, false).getSourceEntries()));
- CompilationDatabaseParser parser = (CompilationDatabaseParser) LanguageSettingsManager
- .getExtensionProviderCopy(COMPILATION_DATABASE_PARSER_EXT, true);
- assertTrue(parser.isEmpty());
+ CompilationDatabaseParser parser = createCompilationDatabaseParser();
parser.setBuildParserId(GCC_BUILD_COMMAND_PARSER_EXT);
- parser.setCompilationDataBasePath(fCdbFile.getLocation());
- addLanguageSettingsProvider(parser);
+ parser.setCompilationDataBasePathProperty(fCdbFile.getLocation().toOSString());
ICConfigurationDescription cfgDescription = getConfigurationDescription(fProject, true);
@@ -605,7 +636,7 @@ public class CompilationDatabaseParserTest extends BaseTestCase {
assertFalse(parser.isEmpty());
CoreModel.getDefault().setProjectDescription(cfgDescription.getProjectDescription().getProject(),
cfgDescription.getProjectDescription());
- joingLanguageSettingsJobs();
+ joinLanguageSettingsJobs();
assertExpectedEntries(parser);
@@ -622,12 +653,9 @@ public class CompilationDatabaseParserTest extends BaseTestCase {
assertFalse(
CDataUtil.isExcluded(tu.getPath(), getConfigurationDescription(fProject, false).getSourceEntries()));
- CompilationDatabaseParser parser = (CompilationDatabaseParser) LanguageSettingsManager
- .getExtensionProviderCopy(COMPILATION_DATABASE_PARSER_EXT, true);
- assertTrue(parser.isEmpty());
+ CompilationDatabaseParser parser = createCompilationDatabaseParser();
parser.setBuildParserId(GCC_BUILD_COMMAND_PARSER_EXT);
- parser.setCompilationDataBasePath(fCdbFile.getLocation());
- addLanguageSettingsProvider(parser);
+ parser.setCompilationDataBasePathProperty(fCdbFile.getLocation().toOSString());
ICConfigurationDescription cfgDescription = getConfigurationDescription(fProject, true);
@@ -635,7 +663,7 @@ public class CompilationDatabaseParserTest extends BaseTestCase {
assertFalse(parser.isEmpty());
CoreModel.getDefault().setProjectDescription(cfgDescription.getProjectDescription().getProject(),
cfgDescription.getProjectDescription());
- joingLanguageSettingsJobs();
+ joinLanguageSettingsJobs();
ICConfigurationDescription resCfgDescription = getConfigurationDescription(fProject, false);
List<ICLanguageSettingEntry> entries = parser.getSettingEntries(resCfgDescription, fSourceFile2,
@@ -666,12 +694,9 @@ public class CompilationDatabaseParserTest extends BaseTestCase {
assertFalse(
CDataUtil.isExcluded(tu.getPath(), getConfigurationDescription(fProject, false).getSourceEntries()));
- CompilationDatabaseParser parser = (CompilationDatabaseParser) LanguageSettingsManager
- .getExtensionProviderCopy(COMPILATION_DATABASE_PARSER_EXT, true);
- assertTrue(parser.isEmpty());
+ CompilationDatabaseParser parser = createCompilationDatabaseParser();
parser.setBuildParserId(GCC_BUILD_COMMAND_PARSER_EXT);
- parser.setCompilationDataBasePath(fCdbFile.getLocation());
- addLanguageSettingsProvider(parser);
+ parser.setCompilationDataBasePathProperty(fCdbFile.getLocation().toOSString());
ICConfigurationDescription cfgDescription = getConfigurationDescription(fProject, true);
@@ -679,7 +704,7 @@ public class CompilationDatabaseParserTest extends BaseTestCase {
assertFalse(parser.isEmpty());
CoreModel.getDefault().setProjectDescription(cfgDescription.getProjectDescription().getProject(),
cfgDescription.getProjectDescription());
- joingLanguageSettingsJobs();
+ joinLanguageSettingsJobs();
ICConfigurationDescription resCfgDescription = getConfigurationDescription(fProject, false);
List<ICLanguageSettingEntry> entries = parser.getSettingEntries(resCfgDescription, fSourceFile2,
@@ -710,12 +735,9 @@ public class CompilationDatabaseParserTest extends BaseTestCase {
assertFalse(
CDataUtil.isExcluded(tu.getPath(), getConfigurationDescription(fProject, false).getSourceEntries()));
- CompilationDatabaseParser parser = (CompilationDatabaseParser) LanguageSettingsManager
- .getExtensionProviderCopy(COMPILATION_DATABASE_PARSER_EXT, true);
- assertTrue(parser.isEmpty());
+ CompilationDatabaseParser parser = createCompilationDatabaseParser();
parser.setBuildParserId(GCC_BUILD_COMMAND_PARSER_EXT);
- parser.setCompilationDataBasePath(fCdbFile.getLocation());
- addLanguageSettingsProvider(parser);
+ parser.setCompilationDataBasePathProperty(fCdbFile.getLocation().toOSString());
ICConfigurationDescription cfgDescription = getConfigurationDescription(fProject, true);
@@ -723,7 +745,7 @@ public class CompilationDatabaseParserTest extends BaseTestCase {
assertFalse(parser.isEmpty());
CoreModel.getDefault().setProjectDescription(cfgDescription.getProjectDescription().getProject(),
cfgDescription.getProjectDescription());
- joingLanguageSettingsJobs();
+ joinLanguageSettingsJobs();
ICConfigurationDescription resCfgDescription = getConfigurationDescription(fProject, false);
assertNull(parser.getSettingEntries(resCfgDescription, fSourceFile, GPPLanguage.ID));
@@ -741,12 +763,9 @@ public class CompilationDatabaseParserTest extends BaseTestCase {
assertFalse(
CDataUtil.isExcluded(tu.getPath(), getConfigurationDescription(fProject, false).getSourceEntries()));
- CompilationDatabaseParser parser = (CompilationDatabaseParser) LanguageSettingsManager
- .getExtensionProviderCopy(COMPILATION_DATABASE_PARSER_EXT, true);
- assertTrue(parser.isEmpty());
+ CompilationDatabaseParser parser = createCompilationDatabaseParser();
parser.setBuildParserId(GCC_BUILD_COMMAND_PARSER_EXT);
- parser.setCompilationDataBasePath(fCdbFile.getLocation());
- addLanguageSettingsProvider(parser);
+ parser.setCompilationDataBasePathProperty(fCdbFile.getLocation().toOSString());
ICConfigurationDescription cfgDescription = getConfigurationDescription(fProject, true);
@@ -754,7 +773,7 @@ public class CompilationDatabaseParserTest extends BaseTestCase {
assertFalse(parser.isEmpty());
CoreModel.getDefault().setProjectDescription(cfgDescription.getProjectDescription().getProject(),
cfgDescription.getProjectDescription());
- joingLanguageSettingsJobs();
+ joinLanguageSettingsJobs();
ICConfigurationDescription resCfgDescription = getConfigurationDescription(fProject, false);
assertNull(parser.getSettingEntries(resCfgDescription, fSourceFile, GPPLanguage.ID));
@@ -763,6 +782,29 @@ public class CompilationDatabaseParserTest extends BaseTestCase {
assertFalse(CDataUtil.isExcluded(tu.getPath(), resCfgDescription.getSourceEntries()));
}
+ public void testParseCDB_CommandArguments() throws Exception {
+ createTestProject(true, true, true, false, false, true);
+
+ ICProject cProject = CCorePlugin.getDefault().getCoreModel().create(fProject);
+ ICElement ce = CCorePlugin.getDefault().getCoreModel().create(fOutsideCdbSourceFile.getFullPath());
+ ITranslationUnit tu = (ITranslationUnit) ce;
+ assertFalse(
+ CDataUtil.isExcluded(tu.getPath(), getConfigurationDescription(fProject, false).getSourceEntries()));
+
+ CompilationDatabaseParser parser = createCompilationDatabaseParser();
+ parser.setBuildParserId(GCC_BUILD_COMMAND_PARSER_EXT);
+ parser.setCompilationDataBasePathProperty(fCdbFile.getLocation().toOSString());
+
+ ICConfigurationDescription cfgDescription = getConfigurationDescription(fProject, true);
+
+ parser.processCompileCommandsFile(null, cfgDescription);
+ CoreModel.getDefault().setProjectDescription(cfgDescription.getProjectDescription().getProject(),
+ cfgDescription.getProjectDescription());
+ joinLanguageSettingsJobs();
+
+ assertExpectedEntries(parser);
+ }
+
public void testClear() throws Exception {
createTestProject();
@@ -772,12 +814,9 @@ public class CompilationDatabaseParserTest extends BaseTestCase {
assertFalse(
CDataUtil.isExcluded(tu.getPath(), getConfigurationDescription(fProject, false).getSourceEntries()));
- CompilationDatabaseParser parser = (CompilationDatabaseParser) LanguageSettingsManager
- .getExtensionProviderCopy(COMPILATION_DATABASE_PARSER_EXT, true);
- assertTrue(parser.isEmpty());
+ CompilationDatabaseParser parser = createCompilationDatabaseParser();
parser.setBuildParserId(GCC_BUILD_COMMAND_PARSER_EXT);
- parser.setCompilationDataBasePath(fCdbFile.getLocation());
- addLanguageSettingsProvider(parser);
+ parser.setCompilationDataBasePathProperty(fCdbFile.getLocation().toOSString());
ICConfigurationDescription cfgDescription = getConfigurationDescription(fProject, true);
@@ -798,12 +837,9 @@ public class CompilationDatabaseParserTest extends BaseTestCase {
assertFalse(
CDataUtil.isExcluded(tu.getPath(), getConfigurationDescription(fProject, false).getSourceEntries()));
- CompilationDatabaseParser parser = (CompilationDatabaseParser) LanguageSettingsManager
- .getExtensionProviderCopy(COMPILATION_DATABASE_PARSER_EXT, true);
- assertTrue(parser.isEmpty());
+ CompilationDatabaseParser parser = createCompilationDatabaseParser();
parser.setBuildParserId(GCC_BUILD_COMMAND_PARSER_EXT);
- parser.setCompilationDataBasePath(fCdbFile.getLocation());
- addLanguageSettingsProvider(parser);
+ parser.setCompilationDataBasePathProperty(fCdbFile.getLocation().toOSString());
ICConfigurationDescription cfgDescription = getConfigurationDescription(fProject, true);
@@ -826,12 +862,9 @@ public class CompilationDatabaseParserTest extends BaseTestCase {
assertFalse(
CDataUtil.isExcluded(tu.getPath(), getConfigurationDescription(fProject, false).getSourceEntries()));
- CompilationDatabaseParser parser = (CompilationDatabaseParser) LanguageSettingsManager
- .getExtensionProviderCopy(COMPILATION_DATABASE_PARSER_EXT, true);
- assertTrue(parser.isEmpty());
+ CompilationDatabaseParser parser = createCompilationDatabaseParser();
parser.setBuildParserId(GCC_BUILD_COMMAND_PARSER_EXT);
- parser.setCompilationDataBasePath(fCdbFile.getLocation());
- addLanguageSettingsProvider(parser);
+ parser.setCompilationDataBasePathProperty(fCdbFile.getLocation().toOSString());
ICConfigurationDescription cfgDescription = getConfigurationDescription(fProject, true);
@@ -848,7 +881,16 @@ public class CompilationDatabaseParserTest extends BaseTestCase {
assertEquals(cloned.getProperty(ATTR_CDB_MODIFIED_TIME), parser.getProperty(ATTR_CDB_MODIFIED_TIME));
}
- public void testParseCDB_testUpdateWithModifiedCDB() throws Exception {
+ /*
+ * This test not only checks that the language settings are updated when the CDB file timestamp changes,
+ * it also tests the scenario where the parser is called with a read-only configuration description,
+ * which typically happens when the configuration gets first loaded. Testing the read-only case on
+ * its own is difficult because there is currently no way to clear the entries without reloading them when
+ * the project description is written so running the parser again after that with the read-only config
+ * would not yield any language settings differences. Updating the time-stamp allows us to see a
+ * difference before/after even running on a read-only config.
+ */
+ public void testParseCDB_UpdateWithModifiedCDB_ReadonlyConfig() throws Exception {
createTestProject();
ICProject cProject = CCorePlugin.getDefault().getCoreModel().create(fProject);
@@ -857,25 +899,22 @@ public class CompilationDatabaseParserTest extends BaseTestCase {
assertFalse(
CDataUtil.isExcluded(tu.getPath(), getConfigurationDescription(fProject, false).getSourceEntries()));
- CompilationDatabaseParser parser = (CompilationDatabaseParser) LanguageSettingsManager
- .getExtensionProviderCopy(COMPILATION_DATABASE_PARSER_EXT, true);
- assertTrue(parser.isEmpty());
+ CompilationDatabaseParser parser = createCompilationDatabaseParser();
parser.setBuildParserId(GCC_BUILD_COMMAND_PARSER_EXT);
- parser.setCompilationDataBasePath(fCdbFile.getLocation());
- addLanguageSettingsProvider(parser);
+ parser.setCompilationDataBasePathProperty(fCdbFile.getLocation().toOSString());
ICConfigurationDescription cfgDescription = getConfigurationDescription(fProject, true);
-
- parser.processCompileCommandsFile(null, cfgDescription);
- assertFalse(parser.isEmpty());
+ addLanguageSettingsProvider(cfgDescription, parser);
CoreModel.getDefault().setProjectDescription(cfgDescription.getProjectDescription().getProject(),
cfgDescription.getProjectDescription());
- joingLanguageSettingsJobs();
+ joinLanguageSettingsJobs();
+ parser = getCompilationDatabaseParser();
+ assertFalse(parser.isEmpty());
- ICConfigurationDescription resCfgDescription = getConfigurationDescription(fProject, false);
+ cfgDescription = getConfigurationDescription(fProject, false);
assertExpectedEntries(parser);
- assertFalse(CDataUtil.isExcluded(tu.getPath(), resCfgDescription.getSourceEntries()));
+ assertFalse(CDataUtil.isExcluded(tu.getPath(), cfgDescription.getSourceEntries()));
// Modify the CDB, only to contain one file with different macro definition.
String sourceFilePath = fSourceFile.getLocation().toOSString();
@@ -894,18 +933,19 @@ public class CompilationDatabaseParserTest extends BaseTestCase {
}
fCdbFile.setContents(inputStream, IFile.FORCE, null);
+ parser = getCompilationDatabaseParser(cfgDescription);
+ parser.setExcludeFiles(true);
+ // Intentionally using a read-only cfgDescription to test this case.
parser.processCompileCommandsFile(null, cfgDescription);
- assertFalse(parser.isEmpty());
- CoreModel.getDefault().setProjectDescription(cfgDescription.getProjectDescription().getProject(),
- cfgDescription.getProjectDescription());
- joingLanguageSettingsJobs();
+ joinLanguageSettingsJobs();
- resCfgDescription = getConfigurationDescription(fProject, false);
+ cfgDescription = getConfigurationDescription(fProject, false);
+ parser = getCompilationDatabaseParser(cfgDescription);
- assertFalse(CDataUtil.isExcluded(tu.getPath(), resCfgDescription.getSourceEntries()));
+ assertTrue(CDataUtil.isExcluded(tu.getPath(), cfgDescription.getSourceEntries()));
assertFalse(parser.isEmpty());
- List<ICLanguageSettingEntry> entries = parser.getSettingEntries(resCfgDescription, fSourceFile, GPPLanguage.ID);
+ List<ICLanguageSettingEntry> entries = parser.getSettingEntries(cfgDescription, fSourceFile, GPPLanguage.ID);
CIncludePathEntry expected = new CIncludePathEntry("/${ProjName}/folder",
CIncludePathEntry.VALUE_WORKSPACE_PATH);
@@ -918,7 +958,71 @@ public class CompilationDatabaseParserTest extends BaseTestCase {
assertEquals(new CMacroEntry("FOO", "200", 0), entries.get(1));
- entries = parser.getSettingEntries(resCfgDescription, fSourceFile2, GPPLanguage.ID);
+ entries = parser.getSettingEntries(cfgDescription, fSourceFile2, GPPLanguage.ID);
assertNull(entries);
}
+
+ public void testParseCDB_ReloadActiveConfigOnly() throws Exception {
+ createTestProject();
+
+ ICProject cProject = CCorePlugin.getDefault().getCoreModel().create(fProject);
+ ICElement ce = CCorePlugin.getDefault().getCoreModel().create(fOutsideCdbSourceFile.getFullPath());
+ ITranslationUnit tu = (ITranslationUnit) ce;
+ assertFalse(
+ CDataUtil.isExcluded(tu.getPath(), getConfigurationDescription(fProject, false).getSourceEntries()));
+
+ CompilationDatabaseParser config1Parser = createCompilationDatabaseParser();
+ config1Parser.setBuildParserId(GCC_BUILD_COMMAND_PARSER_EXT);
+ config1Parser.setCompilationDataBasePathProperty(fCdbFile.getLocation().toOSString());
+
+ ICConfigurationDescription cfgDescription = getConfigurationDescription(fProject, true);
+
+ addLanguageSettingsProvider(cfgDescription, config1Parser);
+ final String config1_id = cfgDescription.getId();
+
+ config1Parser.processCompileCommandsFile(null, cfgDescription);
+ ICProjectDescription projectDescription = cfgDescription.getProjectDescription();
+ CoreModel.getDefault().setProjectDescription(fProject, projectDescription);
+ joinLanguageSettingsJobs();
+
+ assertExpectedEntries(config1Parser);
+
+ // Add a second config with same language settings provider configuration
+ final String config2_id = "test.config2";
+ ICConfigurationDescription cfgDescription2 = projectDescription.createConfiguration(config2_id,
+ config2_id + " Name", cfgDescription);
+
+ CompilationDatabaseParser config2Parser = getCompilationDatabaseParser(cfgDescription2);
+ config2Parser.processCompileCommandsFile(null, cfgDescription2);
+
+ CoreModel.getDefault().setProjectDescription(fProject, projectDescription);
+ joinLanguageSettingsJobs();
+
+ assertExpectedEntries(config2Parser, config2_id);
+
+ // Touch the CDB to allow a reload.
+ while (fCdbFile.getLocalTimeStamp() / 1000 == System.currentTimeMillis() / 1000) {
+ // In case the system doesn't support milliseconds granularity.
+ Thread.sleep(5);
+ }
+ fCdbFile.setLocalTimeStamp(System.currentTimeMillis());
+
+ String oldTimeStampConfig1 = config1Parser.getProperty(ATTR_CDB_MODIFIED_TIME);
+ String oldTimeStampConfig2 = config2Parser.getProperty(ATTR_CDB_MODIFIED_TIME);
+ cfgDescription = getConfigurationDescription(fProject, config1_id, true);
+ ICConfigurationDescription defaultCfgDescription = cfgDescription.getProjectDescription()
+ .getDefaultSettingConfiguration();
+ assertEquals(defaultCfgDescription, cfgDescription);
+ cfgDescription2 = getConfigurationDescription(fProject, config2_id, true);
+ assertNotEquals(defaultCfgDescription, cfgDescription2);
+
+ // Each language settings provider register to their respective config description when a project description is reloaded, this simulates that.
+ config1Parser.processCompileCommandsFile(null, cfgDescription);
+ joinLanguageSettingsJobs();
+ config2Parser.processCompileCommandsFile(null, cfgDescription2);
+ joinLanguageSettingsJobs();
+
+ assertNotEquals(oldTimeStampConfig1, config1Parser.getProperty(ATTR_CDB_MODIFIED_TIME));
+ assertEquals(oldTimeStampConfig2, config2Parser.getProperty(ATTR_CDB_MODIFIED_TIME));
+ }
}
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/language/settings/providers/tests/GCCBuildCommandParserTest.java b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/language/settings/providers/tests/GCCBuildCommandParserTest.java
index 31877514bbc..e4b6f892b6e 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/language/settings/providers/tests/GCCBuildCommandParserTest.java
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/language/settings/providers/tests/GCCBuildCommandParserTest.java
@@ -20,6 +20,8 @@ import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
import org.eclipse.cdt.core.ErrorParserManager;
import org.eclipse.cdt.core.dom.ast.gnu.cpp.GPPLanguage;
@@ -407,6 +409,59 @@ public class GCCBuildCommandParserTest extends BaseTestCase {
}
/**
+ * Test that an option string containing extra characters after its pattern (often the source file name) gets trimmed properly.
+ */
+ public void testAbstractBuildCommandParser_FileNameRemovalInOption() throws Exception {
+ IProject project = ResourceHelper.createCDTProjectWithConfig(getName());
+ ICConfigurationDescription[] cfgDescriptions = getConfigurationDescriptions(project);
+ ICConfigurationDescription cfgDescription = cfgDescriptions[0];
+
+ final IFile file = ResourceHelper.createFile(project, "file.cpp");
+ final IFile file2 = ResourceHelper.createFile(project, "file2.cpp");
+
+ AbstractBuildCommandParser parser = new MockBuildCommandParser() {
+ final Pattern GENERIC_OPTION_PATTERN = Pattern.compile("-.*");
+
+ @Override
+ protected AbstractOptionParser[] getOptionParsers() {
+ return new AbstractOptionParser[] { new IncludePathOptionParser("-Isimple", "simple"),
+ new IncludePathOptionParser("-I(arg)withbackreference\\1", "willnotwork"),
+ new IncludePathOptionParser("-I(?<mygroup>arg)withbackreference\\k<mygroup>",
+ "backreferenceworks") };
+ }
+
+ @Override
+ protected List<String> parseOptions(String line) {
+ List<String> options = new ArrayList<>();
+ Matcher optionMatcher = GENERIC_OPTION_PATTERN.matcher(line);
+ while (optionMatcher.find()) {
+ String option = optionMatcher.group(0);
+ if (option != null) {
+ options.add(option);
+ }
+ }
+ return options;
+ }
+ };
+ parser.startup(cfgDescription, null);
+ parser.processLine("command -Iargwithbackreferencearg file.cpp");
+ parser.processLine("command -Isimple file2.cpp");
+ parser.shutdown();
+
+ ICLanguageSetting ls = cfgDescription.getLanguageSettingForFile(file.getProjectRelativePath(), true);
+ String languageId = ls.getLanguageId();
+
+ List<ICLanguageSettingEntry> entries = parser.getSettingEntries(cfgDescription, file, languageId);
+ assertEquals(1, entries.size());
+ assertEquals(new CIncludePathEntry("/${ProjName}/backreferenceworks", ICSettingEntry.VALUE_WORKSPACE_PATH),
+ entries.get(0));
+
+ entries = parser.getSettingEntries(cfgDescription, file2, languageId);
+ assertEquals(1, entries.size());
+ assertEquals(new CIncludePathEntry("/${ProjName}/simple", ICSettingEntry.VALUE_WORKSPACE_PATH), entries.get(0));
+ }
+
+ /**
* Test parsing of one typical entry.
*/
public void testOneEntry() throws Exception {
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/templateengine/tests/AllTemplateEngineTestSuite.java b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/templateengine/tests/AllTemplateEngineTestSuite.java
new file mode 100644
index 00000000000..ece48e30e79
--- /dev/null
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/templateengine/tests/AllTemplateEngineTestSuite.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2009 2008 Symbian Software Limited and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Bala Torati (Symbian) - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.managedbuilder.templateengine.tests;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * This is a TestSuite, the TestCases created to test Template engine are
+ * added to test-suite. The test suite will execute all the test cases added
+ * to the Suite.
+ *
+ * @since 4.0
+ */
+public class AllTemplateEngineTestSuite extends TestSuite {
+
+ public static void main(String[] args) {
+ junit.textui.TestRunner.run(AllTemplateEngineTestSuite.suite());
+ }
+
+ /**
+ * Since the TemplateEngine consists of UI(Wizard).
+ * A TestWizard is created to which the dynamically generated
+ * UIPages are added. The Wizard is launched from here.
+ * The TestCases created to test the TemplateEngine is initialized here.
+ * @return
+ *
+ * @since 4.0
+ */
+ public static Test suite() {
+ TestSuite suite = new TestSuite("Template engine tests"); //$NON-NLS-1$
+ //$JUnit-BEGIN$
+
+ suite.addTestSuite(TestProcesses.class);
+
+ //$JUnit-END$
+ return suite;
+ }
+}
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/templateengine/tests/AllTemplateEngineTests.java b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/templateengine/tests/AllTemplateEngineTests.java
deleted file mode 100644
index ba5313791b7..00000000000
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/templateengine/tests/AllTemplateEngineTests.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2009 2008 Symbian Software Limited and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Bala Torati (Symbian) - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.managedbuilder.templateengine.tests;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * This is a TestSuite, the TestCases created to test Template engine are
- * added to test-suite. The test suite will execute all the test cases added
- * to the Suite.
- *
- * @since 4.0
- */
-public class AllTemplateEngineTests extends TestSuite {
-
- public static void main(String[] args) {
- junit.textui.TestRunner.run(AllTemplateEngineTests.suite());
- }
-
- /**
- * Since the TemplateEngine consists of UI(Wizard).
- * A TestWizard is created to which the dynamically generated
- * UIPages are added. The Wizard is launched from here.
- * The TestCases created to test the TemplateEngine is initialized here.
- * @return
- *
- * @since 4.0
- */
- public static Test suite() {
- TestSuite suite = new TestSuite("Template engine tests"); //$NON-NLS-1$
- //$JUnit-BEGIN$
-
- suite.addTestSuite(TestProcesses.class);
-
- //$JUnit-END$
- return suite;
- }
-}
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/projectmodel/tests/CProjectDescriptionSerializationTests.java b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/projectmodel/tests/CProjectDescriptionSerializationTests.java
index f7d2fb39c40..dbe9223c266 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/projectmodel/tests/CProjectDescriptionSerializationTests.java
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/projectmodel/tests/CProjectDescriptionSerializationTests.java
@@ -172,6 +172,7 @@ public class CProjectDescriptionSerializationTests extends TestCase {
// Create model project and accompanied descriptions
IProject project = BuildSystemTestHelper.createProject(projectName);
ICProjectDescription des = coreModel.createProjectDescription(project, false);
+ des.setConfigurationRelations(ICProjectDescription.CONFIGS_INDEPENDENT);
Assert.assertNotNull("createDescription returned null!", des);
{
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/projectmodel/tests/ProjectModelTests.java b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/projectmodel/tests/ProjectModelTests.java
index d473bb553e7..db29e0a2383 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/projectmodel/tests/ProjectModelTests.java
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/projectmodel/tests/ProjectModelTests.java
@@ -574,126 +574,134 @@ public class ProjectModelTests extends TestCase implements IElementChangedListen
public void testMacroEntries() throws Exception {
final String projectName = "test3";
IProject project = createProject(projectName);
- CoreModel coreModel = CoreModel.getDefault();
- ICProjectDescription des = coreModel.getProjectDescription(project);
- assertNull("detDescription1 returned not null!", des);
+ try {
+ CoreModel coreModel = CoreModel.getDefault();
+ ICProjectDescription des = coreModel.getProjectDescription(project);
+ assertNull("detDescription1 returned not null!", des);
- des = coreModel.createProjectDescription(project, true);
- assertNotNull("createDescription returned null!", des);
+ des = coreModel.createProjectDescription(project, true);
+ assertNotNull("createDescription returned null!", des);
- assertNull("detDescription2 returned not null!", coreModel.getProjectDescription(project));
+ assertNull("detDescription2 returned not null!", coreModel.getProjectDescription(project));
- assertFalse("new des should be not valid", des.isValid());
+ assertFalse("new des should be not valid", des.isValid());
- assertEquals(0, des.getConfigurations().length);
+ assertEquals(0, des.getConfigurations().length);
- ManagedBuildInfo info = ManagedBuildManager.createBuildInfo(project);
- IProjectType type = ManagedBuildManager.getProjectType("cdt.managedbuild.target.gnu30.exe");
- assertNotNull("project type not found", type);
+ ManagedBuildInfo info = ManagedBuildManager.createBuildInfo(project);
+ IProjectType type = ManagedBuildManager.getProjectType("cdt.managedbuild.target.gnu30.exe");
+ assertNotNull("project type not found", type);
- ManagedProject mProj = new ManagedProject(project, type);
- info.setManagedProject(mProj);
+ ManagedProject mProj = new ManagedProject(project, type);
+ info.setManagedProject(mProj);
- IConfiguration cfgs[] = type.getConfigurations();
+ IConfiguration cfgs[] = type.getConfigurations();
- for (int i = 0; i < cfgs.length; i++) {
- String id = ManagedBuildManager.calculateChildId(cfgs[i].getId(), null);
- Configuration config = new Configuration(mProj, (Configuration) cfgs[i], id, false, true);
- CConfigurationData data = config.getConfigurationData();
- assertNotNull("data is null for created configuration", data);
- des.createConfiguration("org.eclipse.cdt.managedbuilder.core.configurationDataProvider", data);
- }
- coreModel.setProjectDescription(project, des);
-
- des = coreModel.getProjectDescription(project);
- assertNotNull("project description is null ", des);
- assertTrue("des should be valid ", des.isValid());
-
- ICConfigurationDescription cfgDess[] = des.getConfigurations();
-
- assertEquals(2, cfgDess.length);
-
- ICConfigurationDescription cfgDes = cfgDess[0];
- ICResourceDescription rcDess[] = cfgDes.getResourceDescriptions();
- assertEquals(1, rcDess.length);
- assertEquals(cfgDes.getRootFolderDescription(), rcDess[0]);
- assertFalse(cfgDes.isModified());
- assertEquals(cfgDes.getRootFolderDescription(), cfgDes.getResourceDescription(new Path(""), true));
- assertEquals(cfgDes.getRootFolderDescription(), cfgDes.getResourceDescription(new Path(""), false));
- assertEquals(cfgDes.getRootFolderDescription(), cfgDes.getResourceDescription(new Path(""), false));
- assertEquals(cfgDes.getRootFolderDescription(), cfgDes.getResourceDescription(new Path("ds/sd/sdf/"), false));
- assertEquals(cfgDes.getRootFolderDescription(), cfgDes.getResourceDescription(new Path(""), true));
- assertEquals(null, cfgDes.getResourceDescription(new Path("ds/sd/sdf/"), true));
+ for (int i = 0; i < cfgs.length; i++) {
+ String id = ManagedBuildManager.calculateChildId(cfgs[i].getId(), null);
+ Configuration config = new Configuration(mProj, (Configuration) cfgs[i], id, false, true);
+ CConfigurationData data = config.getConfigurationData();
+ assertNotNull("data is null for created configuration", data);
+ des.createConfiguration("org.eclipse.cdt.managedbuilder.core.configurationDataProvider", data);
+ }
+ coreModel.setProjectDescription(project, des);
- ICFolderDescription rf = cfgDes.getRootFolderDescription();
- ICLanguageSetting setting = rf.getLanguageSettingForFile("a.c");
- ICLanguageSettingEntry entries[] = setting.getSettingEntries(ICLanguageSettingEntry.MACRO);
+ des = coreModel.getProjectDescription(project);
+ assertNotNull("project description is null ", des);
+ assertTrue("des should be valid ", des.isValid());
+
+ ICConfigurationDescription cfgDess[] = des.getConfigurations();
+
+ assertEquals(2, cfgDess.length);
+
+ ICConfigurationDescription cfgDes = cfgDess[0];
+ ICResourceDescription rcDess[] = cfgDes.getResourceDescriptions();
+ assertEquals(1, rcDess.length);
+ assertEquals(cfgDes.getRootFolderDescription(), rcDess[0]);
+ assertFalse(cfgDes.isModified());
+ assertEquals(cfgDes.getRootFolderDescription(), cfgDes.getResourceDescription(new Path(""), true));
+ assertEquals(cfgDes.getRootFolderDescription(), cfgDes.getResourceDescription(new Path(""), false));
+ assertEquals(cfgDes.getRootFolderDescription(), cfgDes.getResourceDescription(new Path(""), false));
+ assertEquals(cfgDes.getRootFolderDescription(),
+ cfgDes.getResourceDescription(new Path("ds/sd/sdf/"), false));
+ assertEquals(cfgDes.getRootFolderDescription(), cfgDes.getResourceDescription(new Path(""), true));
+ assertEquals(null, cfgDes.getResourceDescription(new Path("ds/sd/sdf/"), true));
+
+ ICFolderDescription rf = cfgDes.getRootFolderDescription();
+ ICLanguageSetting setting = rf.getLanguageSettingForFile("a.c");
+ ICLanguageSettingEntry entries[] = setting.getSettingEntries(ICLanguageSettingEntry.MACRO);
- if (isPrint) {
- for (int i = 0; i < entries.length; i++) {
- System.out
- .println("name = \"" + entries[i].getName() + "\", value = \"" + entries[i].getValue() + "\"");
+ if (isPrint) {
+ for (int i = 0; i < entries.length; i++) {
+ System.out.println(
+ "name = \"" + entries[i].getName() + "\", value = \"" + entries[i].getValue() + "\"");
+ }
}
- }
- CMacroEntry entry = new CMacroEntry("a", "b", 0);
- List<ICLanguageSettingEntry> list = new ArrayList<>();
- list.add(entry);
- list.addAll(Arrays.asList(entries));
+ CMacroEntry entry = new CMacroEntry("a", "b", 0);
+ List<ICLanguageSettingEntry> list = new ArrayList<>();
+ list.add(entry);
+ list.addAll(Arrays.asList(entries));
- setting.setSettingEntries(ICLanguageSettingEntry.MACRO, list);
+ setting.setSettingEntries(ICLanguageSettingEntry.MACRO, list);
- ICLanguageSettingEntry updatedEntries[] = setting.getSettingEntries(ICLanguageSettingEntry.MACRO);
- assertEquals(entries.length + 1, updatedEntries.length);
+ ICLanguageSettingEntry updatedEntries[] = setting.getSettingEntries(ICLanguageSettingEntry.MACRO);
+ assertEquals(entries.length + 1, updatedEntries.length);
- boolean found = false;
- for (int i = 0; i < updatedEntries.length; i++) {
- if (updatedEntries[i].getName().equals("a") && updatedEntries[i].getValue().equals("b")) {
- found = true;
- break;
+ boolean found = false;
+ for (int i = 0; i < updatedEntries.length; i++) {
+ if (updatedEntries[i].getName().equals("a") && updatedEntries[i].getValue().equals("b")) {
+ found = true;
+ break;
+ }
}
- }
- assertTrue(found);
+ assertTrue(found);
+ } finally {
+ project.delete(true, null);
+ }
}
public void testActiveCfg() throws Exception {
final String projectName = "test8";
IProject project = createProject(projectName, "cdt.managedbuild.target.gnu30.exe");
- CoreModel coreModel = CoreModel.getDefault();
+ try {
+ CoreModel coreModel = CoreModel.getDefault();
- ICProjectDescription des = coreModel.getProjectDescription(project);
- ICConfigurationDescription cfgs[] = des.getConfigurations();
- String id1 = cfgs[0].getId();
- cfgs[1].getId();
+ ICProjectDescription des = coreModel.getProjectDescription(project);
+ ICConfigurationDescription cfgs[] = des.getConfigurations();
+ String id1 = cfgs[0].getId();
+ cfgs[1].getId();
- cfgs[0].setActive();
- assertEquals(cfgs[0], des.getActiveConfiguration());
+ cfgs[0].setActive();
+ assertEquals(cfgs[0], des.getActiveConfiguration());
- coreModel.setProjectDescription(project, des);
+ coreModel.setProjectDescription(project, des);
- des = coreModel.getProjectDescription(project);
- cfgs = des.getConfigurations();
- assertEquals(id1, des.getActiveConfiguration().getId());
+ des = coreModel.getProjectDescription(project);
+ cfgs = des.getConfigurations();
+ assertEquals(id1, des.getActiveConfiguration().getId());
- ICConfigurationDescription newActive = null;
- for (int i = 0; i < cfgs.length; i++) {
- if (!cfgs[i].getId().equals(id1)) {
- newActive = cfgs[i];
- break;
+ ICConfigurationDescription newActive = null;
+ for (int i = 0; i < cfgs.length; i++) {
+ if (!cfgs[i].getId().equals(id1)) {
+ newActive = cfgs[i];
+ break;
+ }
}
- }
-
- String newActiveId = newActive.getId();
- newActive.setActive();
- assertEquals(newActive, des.getActiveConfiguration());
- coreModel.setProjectDescription(project, des);
+ String newActiveId = newActive.getId();
+ newActive.setActive();
+ assertEquals(newActive, des.getActiveConfiguration());
- des = coreModel.getProjectDescription(project);
- assertEquals(newActiveId, des.getActiveConfiguration().getId());
+ coreModel.setProjectDescription(project, des);
+ des = coreModel.getProjectDescription(project);
+ assertEquals(newActiveId, des.getActiveConfiguration().getId());
+ } finally {
+ project.delete(true, null);
+ }
}
/**
diff --git a/build/org.eclipse.cdt.managedbuilder.core/.classpath b/build/org.eclipse.cdt.managedbuilder.core/.classpath
index 01836c4842f..e801ebfb468 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/.classpath
+++ b/build/org.eclipse.cdt.managedbuilder.core/.classpath
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/build/org.eclipse.cdt.managedbuilder.core/.settings/.api_filters b/build/org.eclipse.cdt.managedbuilder.core/.settings/.api_filters
new file mode 100644
index 00000000000..592beac0f73
--- /dev/null
+++ b/build/org.eclipse.cdt.managedbuilder.core/.settings/.api_filters
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<component id="org.eclipse.cdt.managedbuilder.core" version="2">
+ <resource path="src/org/eclipse/cdt/managedbuilder/makegen/gnu/ManagedBuildGnuToolInfo.java" type="org.eclipse.cdt.managedbuilder.makegen.gnu.ManagedBuildGnuToolInfo">
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
+ <message_arguments>
+ <message_argument value="IManagedBuildGnuToolInfo"/>
+ <message_argument value="ManagedBuildGnuToolInfo"/>
+ </message_arguments>
+ </filter>
+ </resource>
+</component>
diff --git a/build/org.eclipse.cdt.managedbuilder.core/.settings/org.eclipse.core.resources.prefs b/build/org.eclipse.cdt.managedbuilder.core/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/build/org.eclipse.cdt.managedbuilder.core/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/build/org.eclipse.cdt.managedbuilder.core/.settings/org.eclipse.jdt.core.prefs b/build/org.eclipse.cdt.managedbuilder.core/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/.settings/org.eclipse.jdt.core.prefs
+++ b/build/org.eclipse.cdt.managedbuilder.core/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/build/org.eclipse.cdt.managedbuilder.core/.settings/org.eclipse.jdt.ui.prefs b/build/org.eclipse.cdt.managedbuilder.core/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/.settings/org.eclipse.jdt.ui.prefs
+++ b/build/org.eclipse.cdt.managedbuilder.core/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/build/org.eclipse.cdt.managedbuilder.core/META-INF/MANIFEST.MF b/build/org.eclipse.cdt.managedbuilder.core/META-INF/MANIFEST.MF
index 7557234565c..e83988ef44e 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/META-INF/MANIFEST.MF
+++ b/build/org.eclipse.cdt.managedbuilder.core/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.managedbuilder.core; singleton:=true
-Bundle-Version: 8.7.300.qualifier
+Bundle-Version: 9.4.100.qualifier
Bundle-Activator: org.eclipse.cdt.managedbuilder.core.ManagedBuilderCorePlugin
Bundle-Vendor: %providerName
Bundle-Localization: plugin
@@ -14,7 +14,7 @@ Export-Package: org.eclipse.cdt.build.core.scannerconfig,
org.eclipse.cdt.managedbuilder.core,
org.eclipse.cdt.managedbuilder.envvar,
org.eclipse.cdt.managedbuilder.internal.buildmodel;x-friends:="org.eclipse.cdt.managedbuilder.ui",
- org.eclipse.cdt.managedbuilder.internal.core;x-friends:="org.eclipse.cdt.managedbuilder.ui",
+ org.eclipse.cdt.managedbuilder.internal.core;x-friends:="org.eclipse.cdt.managedbuilder.ui,org.eclipse.cdt.managedbuilder.headlessbuilderapp",
org.eclipse.cdt.managedbuilder.internal.dataprovider;x-internal:=true,
org.eclipse.cdt.managedbuilder.internal.envvar;x-internal:=true,
org.eclipse.cdt.managedbuilder.internal.language.settings.providers;x-friends:="org.eclipse.cdt.managedbuilder.ui",
@@ -24,6 +24,7 @@ Export-Package: org.eclipse.cdt.build.core.scannerconfig,
org.eclipse.cdt.managedbuilder.macros,
org.eclipse.cdt.managedbuilder.makegen,
org.eclipse.cdt.managedbuilder.makegen.gnu,
+ org.eclipse.cdt.managedbuilder.makegen.gnu2;x-internal:=true,
org.eclipse.cdt.managedbuilder.makegen.internal;x-internal:=true,
org.eclipse.cdt.managedbuilder.pdomdepgen,
org.eclipse.cdt.managedbuilder.projectconverter,
@@ -32,15 +33,14 @@ Export-Package: org.eclipse.cdt.build.core.scannerconfig,
org.eclipse.cdt.managedbuilder.templateengine,
org.eclipse.cdt.managedbuilder.templateengine.processes,
org.eclipse.cdt.newmake.core
-Require-Bundle: org.eclipse.cdt.core;bundle-version="[5.0.0,7.0.0)",
- org.eclipse.core.resources;bundle-version="[3.2.0,4.0.0)",
+Require-Bundle: org.eclipse.cdt.core;bundle-version="[7.0.0,8.0.0)",
+ org.eclipse.core.resources;bundle-version="[3.14.0,4.0.0)",
org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)",
org.eclipse.ui;bundle-version="[3.2.0,4.0.0)",
org.eclipse.core.variables;bundle-version="[3.1.100,4.0.0)",
org.eclipse.cdt.make.core;visibility:=reexport,
org.eclipse.core.filesystem;bundle-version="1.2.0"
Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Import-Package: com.google.gson;version="2.8.0",
- com.ibm.icu.text
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Import-Package: com.google.gson;version="2.8.0"
Automatic-Module-Name: org.eclipse.cdt.managedbuilder.core
diff --git a/build/org.eclipse.cdt.managedbuilder.core/about.html b/build/org.eclipse.cdt.managedbuilder.core/about.html
index 164f781a8fd..b3134865230 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/about.html
+++ b/build/org.eclipse.cdt.managedbuilder.core/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/build/org.eclipse.cdt.managedbuilder.core/plugin.properties b/build/org.eclipse.cdt.managedbuilder.core/plugin.properties
index 4c0da312928..05c1695ec50 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/plugin.properties
+++ b/build/org.eclipse.cdt.managedbuilder.core/plugin.properties
@@ -73,7 +73,6 @@ option.name.5 = Undefined Include Paths
option.name.6 = Undefined Symbols
option.name.7 = Undefined Symbol Files
option.name.8 = Undefined Include Files
-extension.name.7 = CDT Headless Build
extension-point.name = Managed Build Tools 2.0 (Deprecated)
extension-point.name.0 = Managed Build Definitions
extension-point.name.1 = Managed Build Project Converter
diff --git a/build/org.eclipse.cdt.managedbuilder.core/plugin.xml b/build/org.eclipse.cdt.managedbuilder.core/plugin.xml
index a9ebd32a791..f4892de8a22 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/plugin.xml
+++ b/build/org.eclipse.cdt.managedbuilder.core/plugin.xml
@@ -355,7 +355,7 @@
variableFormat="${=}"
isVariableCaseSensitive="true"
reservedMacroNames="ROOT,DEPS,OBJS,.*_SRCS,EXECUTABLES,SUBDIRS,LIBS,USER_OBJS,.*_INPUTS,.*_OUTPUTS"
- buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator"
+ buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator"
macroInputFileNameValue="$(notdir $&lt;)"
macroInputFileExtValue="$(suffix $(notdir $&lt;))"
macroInputFileBaseNameValue="$(basename $(notdir $&lt;))"
@@ -592,19 +592,6 @@
</processType>
</extension>
<extension
- id="headlessbuild"
- name="%extension.name.7"
- point="org.eclipse.core.runtime.applications">
- <application
- cardinality="singleton-global"
- thread="main"
- visible="true">
- <run
- class="org.eclipse.cdt.managedbuilder.internal.core.HeadlessBuilder">
- </run>
- </application>
- </extension>
- <extension
point="org.eclipse.cdt.core.LanguageSettingsProvider">
<provider
class="org.eclipse.cdt.managedbuilder.internal.language.settings.providers.MBSLanguageSettingsProvider"
@@ -642,7 +629,7 @@
class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuildCommandParser"
id="org.eclipse.cdt.managedbuilder.core.GCCBuildCommandParser"
name="%GCCBuildOutputParser.name"
- parameter="(g?cc)|([gc]\+\+)|(clang)"
+ parameter="([^/\\\\]*)((g?cc)|([gc]\+\+)|(clang))"
prefer-non-shared="true">
</provider>
<provider
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/build/internal/core/scannerconfig/CfgScannerConfigUtil.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/build/internal/core/scannerconfig/CfgScannerConfigUtil.java
index b0355bec955..2c0474b4c63 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/build/internal/core/scannerconfig/CfgScannerConfigUtil.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/build/internal/core/scannerconfig/CfgScannerConfigUtil.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2012 Intel Corporation and others.
+ * Copyright (c) 2007, 2020 Intel Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -10,9 +10,11 @@
*
* Contributors:
* Intel Corporation - Initial API and implementation
+ * Sergei Kovalchuk (NXP)
*******************************************************************************/
package org.eclipse.cdt.build.internal.core.scannerconfig;
+import java.text.MessageFormat;
import java.util.Set;
import java.util.TreeSet;
@@ -30,8 +32,6 @@ import org.eclipse.cdt.managedbuilder.internal.core.Tool;
import org.eclipse.cdt.managedbuilder.internal.core.ToolChain;
import org.eclipse.core.runtime.Assert;
-import com.ibm.icu.text.MessageFormat;
-
public class CfgScannerConfigUtil {
public static CfgInfoContext adjustPerRcTypeContext(CfgInfoContext context) {
if (((Configuration) context.getConfiguration()).isPreference())
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/build/internal/core/scannerconfig/PerFileSettingsCalculator.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/build/internal/core/scannerconfig/PerFileSettingsCalculator.java
index e6660e7ade1..f5311da24cd 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/build/internal/core/scannerconfig/PerFileSettingsCalculator.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/build/internal/core/scannerconfig/PerFileSettingsCalculator.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2016 Intel Corporation and others.
+ * Copyright (c) 2007, 2020 Intel Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -21,6 +21,7 @@ import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
+import java.util.Objects;
import java.util.Set;
import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry;
@@ -266,7 +267,7 @@ public class PerFileSettingsCalculator {
if (!fExtsSet.equals(other.fExtsSet))
return false;
- if (!CDataUtil.objectsEqual(fMaxMatchInfo, other.fMaxMatchInfo))
+ if (!Objects.equals(fMaxMatchInfo, other.fMaxMatchInfo))
return false;
return true;
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IBuilder.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IBuilder.java
index 756f1adb36a..7c21837bad7 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IBuilder.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IBuilder.java
@@ -46,7 +46,6 @@ public interface IBuilder extends IHoldsOptions, IMakeBuilderInfo {
public static final String CONVERT_TO_ID = "convertToId"; //$NON-NLS-1$
public static final String VARIABLE_FORMAT = "variableFormat"; //$NON-NLS-1$
- public static final String IS_VARIABLE_CASE_SENSITIVE = "isVariableCaseSensitive"; //$NON-NLS-1$
public static final String RESERVED_MACRO_NAMES = "reservedMacroNames"; //$NON-NLS-1$
public static final String RESERVED_MACRO_NAME_SUPPLIER = "reservedMacroNameSupplier"; //$NON-NLS-1$
public static final String IS_SYSTEM = "isSystem"; //$NON-NLS-1$
@@ -274,13 +273,6 @@ public interface IBuilder extends IHoldsOptions, IMakeBuilderInfo {
public String getBuilderVariablePattern();
/**
- * Returns whether the builder supports case sensitive variables or not
- *
- * @return boolean
- */
- public boolean isVariableCaseSensitive();
-
- /**
* Returns an array of Strings representing the patterns of the builder/buildfile-generator
* reserved variables
*
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IManagedCommandLineInfo.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IManagedCommandLineInfo.java
index 4cfce2cdbca..8fc0d3cb609 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IManagedCommandLineInfo.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IManagedCommandLineInfo.java
@@ -41,7 +41,9 @@ public interface IManagedCommandLineInfo {
/**
* provide list of resources used by tool for transformation
+ * @deprecated Useless method that does not handle whitespace properly.
*/
+ @Deprecated
public String getInputs();
/**
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IOptionPathConverter.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IOptionPathConverter.java
index 189d4e94441..02889fe188e 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IOptionPathConverter.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IOptionPathConverter.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (C) 2006, 2010 Siemens AG.
+ * Copyright (c) 2006, 2010 Siemens AG.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IResourceConfiguration.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IResourceConfiguration.java
index 83e88e6a084..0a3b9e2becb 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IResourceConfiguration.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IResourceConfiguration.java
@@ -228,4 +228,9 @@ public interface IResourceConfiguration extends IResourceInfo {
void setRebuildState(boolean rebuild);
void setTools(ITool[] tools);
+
+ /**
+ * @since 9.2
+ */
+ IToolChain getBaseToolChain();
}
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ITool.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ITool.java
index c4cd22e506b..72ab25837c5 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ITool.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ITool.java
@@ -714,4 +714,11 @@ public interface ITool extends IHoldsOptions {
void setHidden(boolean hidden);
String getUniqueRealName();
+
+ /**
+ * @since 9.4
+ */
+ default public String[] getExtraFlags(int optionType) {
+ return new String[0];
+ }
}
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ManagedBuildManager.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ManagedBuildManager.java
index a59d13da68d..36a52608c23 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ManagedBuildManager.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ManagedBuildManager.java
@@ -88,7 +88,6 @@ import org.eclipse.cdt.managedbuilder.internal.core.FolderInfo;
import org.eclipse.cdt.managedbuilder.internal.core.IMatchKeyProvider;
import org.eclipse.cdt.managedbuilder.internal.core.InputType;
import org.eclipse.cdt.managedbuilder.internal.core.ManagedBuildInfo;
-import org.eclipse.cdt.managedbuilder.internal.core.ManagedCommandLineGenerator;
import org.eclipse.cdt.managedbuilder.internal.core.ManagedMakeMessages;
import org.eclipse.cdt.managedbuilder.internal.core.ManagedProject;
import org.eclipse.cdt.managedbuilder.internal.core.MatchKey;
@@ -112,7 +111,7 @@ import org.eclipse.cdt.managedbuilder.internal.macros.BuildMacroProvider;
import org.eclipse.cdt.managedbuilder.internal.tcmodification.ToolChainModificationManager;
import org.eclipse.cdt.managedbuilder.macros.IBuildMacroProvider;
import org.eclipse.cdt.managedbuilder.makegen.IManagedBuilderMakefileGenerator;
-import org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator;
+import org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator;
import org.eclipse.cdt.managedbuilder.projectconverter.UpdateManagedProjectManager;
import org.eclipse.cdt.managedbuilder.tcmodification.IToolChainModificationManager;
import org.eclipse.core.resources.ICommand;
@@ -127,6 +126,7 @@ import org.eclipse.core.resources.IncrementalProjectBuilder;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.Assert;
import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IExtension;
import org.eclipse.core.runtime.IExtensionPoint;
@@ -313,24 +313,14 @@ public class ManagedBuildManager extends AbstractCExtension {
e.printStackTrace();
}
- // Get the project types for this project and all referenced projects
- List<IProjectType> definedTypes = null;
- // To Do
-
// Create the array and copy the elements over
int size = projectTypes != null ? projectTypes.size() : 0;
- size += definedTypes != null ? definedTypes.size() : 0;
IProjectType[] types = new IProjectType[size];
- if (size > 0) {
- int n = 0;
- for (int i = 0; i < projectTypes.size(); i++)
- types[n++] = projectTypes.get(i);
-
- if (definedTypes != null)
- for (int i = 0; i < definedTypes.size(); i++)
- types[n++] = definedTypes.get(i);
+ int n = 0;
+ for (IProjectType type : projectTypes) {
+ types[n++] = type;
}
return types;
@@ -797,7 +787,7 @@ public class ManagedBuildManager extends AbstractCExtension {
if (tool != null) {
return tool.getCommandLineGenerator();
}
- return ManagedCommandLineGenerator.getCommandLineGenerator();
+ return new ManagedCommandLineGenerator();
}
/**
@@ -1925,8 +1915,7 @@ public class ManagedBuildManager extends AbstractCExtension {
}
// So there is a project file, load the information there
- InputStream stream = new FileInputStream(cdtbuild);
- try {
+ try (InputStream stream = new FileInputStream(cdtbuild)) {
DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document document = parser.parse(stream);
String fileVersion = null;
@@ -1951,8 +1940,6 @@ public class ManagedBuildManager extends AbstractCExtension {
// o The major versions are equal, but the remainder of the .cdtbuild version # is
// greater than the MBS version #
boolean compatible = false;
- if (version == null)
- compatible = false;
if (buildInfoVersion.getMajor() != version.getMajor())
compatible = false;
if (buildInfoVersion.getMinor() > version.getMinor())
@@ -2042,11 +2029,11 @@ public class ManagedBuildManager extends AbstractCExtension {
//project.setSessionProperty(buildInfoProperty, buildInfo);
setLoaddedBuildInfo(project, buildInfo);
}
- } catch (Exception e) {
- throw e;
}
- buildInfo.setValid(true);
+ if (buildInfo != null) {
+ buildInfo.setValid(true);
+ }
return buildInfo;
}
@@ -2974,40 +2961,22 @@ public class ManagedBuildManager extends AbstractCExtension {
* plugin
*/
public static URL getURLInBuildDefinitions(DefaultManagedConfigElement element, IPath path) {
-
- IExtensionPoint extensionPoint = Platform.getExtensionRegistry().getExtensionPoint(EXTENSION_POINT_ID);
- if (extensionPoint != null) {
- IExtension[] extensions = extensionPoint.getExtensions();
- if (extensions != null) {
-
- // Iterate over all extensions that contribute to .buildDefinitions
- for (IExtension extension : extensions) {
- // Determine whether the configuration element that is
- // associated with the path, is valid for the extension that
- // we are currently processing.
- //
- // Note: If not done, icon file names would have to be unique
- // across several plug-ins.
- if (element.getExtension().getExtensionPointUniqueIdentifier() == extension
- .getExtensionPointUniqueIdentifier()) {
- // Get the path-name
- Bundle bundle = Platform.getBundle(extension.getNamespace());
- URL url = Platform.find(bundle, path);
- if (url != null) {
- try {
- return Platform.asLocalURL(url);
- } catch (IOException e) {
- // Ignore the exception
- return null;
- }
- } else {
- // Print a warning
- outputIconError(path.toString());
- }
- }
+ IExtension extension = element.getExtension();
+ if (extension != null) {
+ Bundle bundle = Platform.getBundle(extension.getContributor().getName());
+ URL url = FileLocator.find(bundle, path);
+ if (url != null) {
+ try {
+ return FileLocator.toFileURL(url);
+ } catch (IOException e) {
+ // Ignore the exception
}
}
}
+
+ // Print a warning
+ outputIconError(path.toString());
+
return null;
}
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ManagedCommandLineGenerator.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ManagedCommandLineGenerator.java
new file mode 100644
index 00000000000..1d5a6f715ec
--- /dev/null
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ManagedCommandLineGenerator.java
@@ -0,0 +1,168 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2016 Intel Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Intel Corporation - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.managedbuilder.core;
+
+import java.util.stream.Stream;
+
+import org.eclipse.cdt.managedbuilder.internal.core.Tool;
+
+/**
+ * @since 9.2
+ */
+public class ManagedCommandLineGenerator implements IManagedCommandLineGenerator {
+
+ private static final String DOUBLE_QUOTE = "\""; //$NON-NLS-1$
+ private static final String WHITESPACE = " "; //$NON-NLS-1$
+
+ private static final String CMD_LINE_PRM_NAME = "COMMAND"; //$NON-NLS-1$
+ private static final String FLAGS_PRM_NAME = "FLAGS"; //$NON-NLS-1$
+ private static final String OUTPUT_FLAG_PRM_NAME = "OUTPUT_FLAG"; //$NON-NLS-1$
+ private static final String OUTPUT_PREFIX_PRM_NAME = "OUTPUT_PREFIX"; //$NON-NLS-1$
+ private static final String OUTPUT_PRM_NAME = "OUTPUT"; //$NON-NLS-1$
+ private static final String INPUTS_PRM_NAME = "INPUTS"; //$NON-NLS-1$
+ private static final String EXTRA_FLAGS_PRM_NAME = "EXTRA_FLAGS"; //$NON-NLS-1$
+
+ private String makeVariable(String variableName) {
+ return "${" + variableName + "}"; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ @Override
+ public IManagedCommandLineInfo generateCommandLineInfo(ITool tool, String commandName, String[] flags,
+ String outputFlag, String outputPrefix, String outputName, String[] inputResources,
+ String commandLinePattern) {
+ if (commandLinePattern == null || commandLinePattern.length() <= 0) {
+ commandLinePattern = Tool.DEFAULT_PATTERN;
+ }
+
+ // if the output name isn't a variable then quote it
+ if (outputName.length() > 0 && outputName.indexOf("$(") != 0) { //$NON-NLS-1$
+ outputName = DOUBLE_QUOTE + outputName + DOUBLE_QUOTE;
+ }
+
+ String inputsStr = ""; //$NON-NLS-1$
+ if (inputResources != null) {
+ for (String inp : inputResources) {
+ if (inp != null && !inp.isEmpty()) {
+ // if the input resource isn't a variable then quote it
+ if (inp.indexOf("$(") != 0) { //$NON-NLS-1$
+ inp = DOUBLE_QUOTE + inp + DOUBLE_QUOTE;
+ }
+ inputsStr = inputsStr + inp + WHITESPACE;
+ }
+ }
+ inputsStr = inputsStr.trim();
+ }
+
+ String flagsStr = stringArrayToString(flags);
+
+ String command = commandLinePattern;
+
+ // Workaround GNU ld limitation that requires additional objects and libraries to be last on command line
+ String[] extraFlags = mergeArrays(tool.getExtraFlags(IOption.OBJECTS), tool.getExtraFlags(IOption.LIBRARIES));
+ String extraFlagsStr = stringArrayToString(extraFlags);
+
+ // Need to update "flags" in order to make the change visible outside the makefile generator.
+ // NOTE: Do not update the flagsStr as it would render the options listed twice!
+ flags = mergeArrays(flags, extraFlags);
+
+ command = command.replace(makeVariable(CMD_LINE_PRM_NAME), commandName);
+ command = command.replace(makeVariable(FLAGS_PRM_NAME), flagsStr);
+ command = command.replace(makeVariable(OUTPUT_FLAG_PRM_NAME), outputFlag);
+ command = command.replace(makeVariable(OUTPUT_PREFIX_PRM_NAME), outputPrefix);
+ command = command.replace(makeVariable(OUTPUT_PRM_NAME), outputName);
+ command = command.replace(makeVariable(INPUTS_PRM_NAME), inputsStr);
+ command = command.replace(makeVariable(EXTRA_FLAGS_PRM_NAME), extraFlagsStr);
+
+ command = command.replace(makeVariable(CMD_LINE_PRM_NAME.toLowerCase()), commandName);
+ command = command.replace(makeVariable(FLAGS_PRM_NAME.toLowerCase()), flagsStr);
+ command = command.replace(makeVariable(OUTPUT_FLAG_PRM_NAME.toLowerCase()), outputFlag);
+ command = command.replace(makeVariable(OUTPUT_PREFIX_PRM_NAME.toLowerCase()), outputPrefix);
+ command = command.replace(makeVariable(OUTPUT_PRM_NAME.toLowerCase()), outputName);
+ command = command.replace(makeVariable(INPUTS_PRM_NAME.toLowerCase()), inputsStr);
+ command = command.replace(makeVariable(EXTRA_FLAGS_PRM_NAME.toLowerCase()), extraFlagsStr);
+
+ return toManagedCommandLineInfo(tool, command.trim(), commandLinePattern, commandName, flags, outputFlag,
+ outputPrefix, outputName, inputResources);
+ }
+
+ @Deprecated(since = "9.2", forRemoval = true)
+ protected IManagedCommandLineInfo toManagedCommandLineInfo(String commandLine, String commandLinePattern,
+ String commandName, String[] flags, String outputFlag, String outputPrefix, String outputName,
+ String[] inputResources) {
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * @since 9.3
+ */
+ protected IManagedCommandLineInfo toManagedCommandLineInfo(ITool tool, String commandLine,
+ String commandLinePattern, String commandName, String[] flags, String outputFlag, String outputPrefix,
+ String outputName, String[] inputResources) {
+ String flagsStr = stringArrayToString(flags);
+ String inputResourcesStr = stringArrayToString(inputResources);
+
+ return new IManagedCommandLineInfo() {
+ @Override
+ public String getCommandLine() {
+ return commandLine;
+ }
+
+ @Override
+ public String getCommandLinePattern() {
+ return commandLinePattern;
+ }
+
+ @Override
+ public String getCommandName() {
+ return commandName;
+ }
+
+ @Override
+ public String getFlags() {
+ return flagsStr;
+ }
+
+ @Override
+ public String getOutputFlag() {
+ return outputFlag;
+ }
+
+ @Override
+ public String getOutputPrefix() {
+ return outputPrefix;
+ }
+
+ @Override
+ public String getOutput() {
+ return outputName;
+ }
+
+ @Override
+ public String getInputs() {
+ return inputResourcesStr;
+ }
+ };
+ }
+
+ private String stringArrayToString(String[] array) {
+ if (array == null) {
+ return ""; //$NON-NLS-1$
+ }
+ return String.join(WHITESPACE, array);
+ }
+
+ private String[] mergeArrays(String[]... arrays) {
+ return Stream.of(arrays).flatMap(Stream::of).toArray(String[]::new);
+ }
+}
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/OptionStringValue.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/OptionStringValue.java
index c5ffdabefe3..1ed9732ca14 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/OptionStringValue.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/OptionStringValue.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2016 Intel Corporation and others.
+ * Copyright (c) 2007, 2020 Intel Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -14,9 +14,10 @@
*******************************************************************************/
package org.eclipse.cdt.managedbuilder.core;
+import java.util.Objects;
+
import org.eclipse.cdt.core.settings.model.ICLibraryFileEntry;
import org.eclipse.cdt.core.settings.model.ICStorageElement;
-import org.eclipse.cdt.core.settings.model.util.CDataUtil;
import org.eclipse.cdt.internal.core.SafeStringInterner;
import org.eclipse.cdt.managedbuilder.internal.core.Option;
@@ -163,16 +164,16 @@ public final class OptionStringValue {
if (isBuiltIn != other.isBuiltIn)
return false;
- if (!CDataUtil.objectsEqual(value, other.value))
+ if (!Objects.equals(value, other.value))
return false;
- if (!CDataUtil.objectsEqual(srcPath, other.srcPath))
+ if (!Objects.equals(srcPath, other.srcPath))
return false;
- if (!CDataUtil.objectsEqual(srcRootPath, other.srcRootPath))
+ if (!Objects.equals(srcRootPath, other.srcRootPath))
return false;
- if (!CDataUtil.objectsEqual(srcPrefixMapping, other.srcPrefixMapping))
+ if (!Objects.equals(srcPrefixMapping, other.srcPrefixMapping))
return false;
return true;
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/envvar/IEnvironmentVariableProvider.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/envvar/IEnvironmentVariableProvider.java
index 09326b88c61..1ce5e814a91 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/envvar/IEnvironmentVariableProvider.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/envvar/IEnvironmentVariableProvider.java
@@ -102,12 +102,6 @@ public interface IEnvironmentVariableProvider {
public String getDefaultDelimiter();
/**
- * @return true if the OS supports case sensitive variables (Unix-like systems) or false
- * if it does not (Win32 systems)
- */
- public boolean isVariableCaseSensitive();
-
- /**
* This method is defined to be used basically by the UI classes and should not be used by the
* tool-integrator
* @return the array of the provider-internal suppliers for the given level
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/buildmodel/BuildDescription.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/buildmodel/BuildDescription.java
index 629c4a11d84..7be81a763d1 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/buildmodel/BuildDescription.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/buildmodel/BuildDescription.java
@@ -26,6 +26,7 @@ import java.util.Map.Entry;
import java.util.Set;
import java.util.Vector;
+import org.eclipse.cdt.core.envvar.IEnvironmentVariable;
import org.eclipse.cdt.core.settings.model.CSourceEntry;
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
import org.eclipse.cdt.core.settings.model.ICSettingEntry;
@@ -56,7 +57,6 @@ import org.eclipse.cdt.managedbuilder.core.ITool;
import org.eclipse.cdt.managedbuilder.core.IToolChain;
import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
import org.eclipse.cdt.managedbuilder.core.ManagedBuilderCorePlugin;
-import org.eclipse.cdt.managedbuilder.envvar.IBuildEnvironmentVariable;
import org.eclipse.cdt.managedbuilder.internal.core.Configuration;
import org.eclipse.cdt.managedbuilder.internal.macros.FileContextData;
import org.eclipse.cdt.managedbuilder.internal.macros.OptionContextData;
@@ -1424,7 +1424,7 @@ public class BuildDescription implements IBuildDescription {
depFiles = new IPath[1];
depFiles[0] = new Path(
buildRc.getLocation().segment(buildRc.getLocation().segmentCount() - 1))
- .removeFileExtension().addFileExtension("d"); //$NON-NLS-1$
+ .removeFileExtension().addFileExtension("d"); //$NON-NLS-1$
}
if (depFiles != null) {
@@ -1498,11 +1498,11 @@ public class BuildDescription implements IBuildDescription {
}
protected Map<String, String> calculateEnvironment() {
- IBuildEnvironmentVariable variables[] = ManagedBuildManager.getEnvironmentVariableProvider().getVariables(fCfg,
- true, true);
+ IEnvironmentVariable[] variables = ManagedBuildManager.getEnvironmentVariableProvider().getVariables(fCfg,
+ true);
Map<String, String> map = new HashMap<>();
- for (IBuildEnvironmentVariable var : variables) {
+ for (IEnvironmentVariable var : variables) {
map.put(var.getName(), var.getValue());
}
return map;
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/buildmodel/BuildModelMessages.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/buildmodel/BuildModelMessages.java
index 1c15980a3f0..4eb1fb944a2 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/buildmodel/BuildModelMessages.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/buildmodel/BuildModelMessages.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2011 Intel Corporation and others.
+ * Copyright (c) 2007, 2020 Intel Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -11,14 +11,14 @@
* Contributors:
* Intel Corporation - Initial API and implementation
* IBM Corporation
+ * Sergei Kovalchuk (NXP)
*******************************************************************************/
package org.eclipse.cdt.managedbuilder.internal.buildmodel;
+import java.text.MessageFormat;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
-import com.ibm.icu.text.MessageFormat;
-
public class BuildModelMessages {
private static final String BUNDLE_NAME = "org.eclipse.cdt.managedbuilder.internal.buildmodel.BuildModelMessages"; //$NON-NLS-1$
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/AdditionalInput.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/AdditionalInput.java
index dada8d82a19..f37f241e131 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/AdditionalInput.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/AdditionalInput.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2005, 2019 Intel Corporation and others.
+ * Copyright (c) 2005, 2020 Intel Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -21,6 +21,7 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
+import java.util.regex.Pattern;
import org.eclipse.cdt.core.cdtvariables.CdtVariableException;
import org.eclipse.cdt.core.settings.model.ICStorageElement;
@@ -493,6 +494,8 @@ public class AdditionalInput implements IAdditionalInput {
return dirs;
}
+ final static Pattern extPattern = Pattern.compile("(?!\\.)(\\d+(\\.\\d+(\\.\\d+)?)?)(?![\\d\\.])$"); //$NON-NLS-1$
+
private URI findLibrary(IToolChain toolChain, final String libName, List<String> dirs) throws CoreException {
final String libSO = getDynamicLibPrefix(toolChain) + libName + '.' + getDynamicLibExtension(toolChain);
final String libA = getStaticLibPrefix(toolChain) + libName + '.' + getStaticLibExtension(toolChain);
@@ -505,15 +508,14 @@ public class AdditionalInput implements IAdditionalInput {
return false;
if (libSO.length() == name.length())
return true; // we don't necessarily have a version extension
- if (name.charAt(libSO.length()) != '.')
- return false;
- String ext = libName.substring(libSO.length() + 1);
- try {
- Integer.parseInt(ext);
- return true;
- } catch (NumberFormatException e) {
+ if (name.length() <= libSO.length() + 1 || name.charAt(libSO.length()) != '.')
return false;
- }
+ String ext = name.substring(libSO.length() + 1);
+
+ // Check the version extension to be in form of "<Major>.<Minor>.<Build>",
+ // for example: "1.10.0", "1.10", "1" are the valid version extensions
+ //
+ return extPattern.matcher(ext).matches();
}
boolean equals(String a, String b) {
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Builder.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Builder.java
index 7098f24baf8..f3da4f8db5d 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Builder.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Builder.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004, 2016 Intel Corporation and others.
+ * Copyright (c) 2004, 2020 Intel Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -23,6 +23,7 @@ import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
+import java.util.Objects;
import java.util.Set;
import java.util.SortedMap;
import java.util.StringTokenizer;
@@ -66,7 +67,7 @@ import org.eclipse.cdt.managedbuilder.macros.IFileContextBuildMacroValues;
import org.eclipse.cdt.managedbuilder.macros.IReservedMacroNameSupplier;
import org.eclipse.cdt.managedbuilder.makegen.IManagedBuilderMakefileGenerator;
import org.eclipse.cdt.managedbuilder.makegen.IManagedBuilderMakefileGenerator2;
-import org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator;
+import org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IncrementalProjectBuilder;
import org.eclipse.core.runtime.Assert;
@@ -101,7 +102,6 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
private String convertToId;
private FileContextBuildMacroValues fileContextBuildMacroValues;
private String builderVariablePattern;
- private Boolean isVariableCaseSensitive;
private String[] reservedMacroNames;
private IReservedMacroNameSupplier reservedMacroNameSupplier;
private IConfigurationElement reservedMacroNameSupplierElement;
@@ -315,9 +315,6 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
builderVariablePattern = builder.builderVariablePattern;
- if (builder.isVariableCaseSensitive != null)
- isVariableCaseSensitive = builder.isVariableCaseSensitive;
-
if (builder.reservedMacroNames != null)
reservedMacroNames = builder.reservedMacroNames.clone();
@@ -412,14 +409,13 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
setCommand(builder.getCommand());
if (!getArgumentsAttribute().equals(builder.getArgumentsAttribute()))
setArgumentsAttribute(builder.getArgumentsAttribute());
- if (!CDataUtil.objectsEqual(getAutoBuildTargetAttribute(), builder.getAutoBuildTargetAttribute())) {
+ if (!Objects.equals(getAutoBuildTargetAttribute(), builder.getAutoBuildTargetAttribute())) {
autoBuildTarget = builder.getAutoBuildTargetAttribute();
}
- if (!CDataUtil.objectsEqual(getIncrementalBuildTargetAttribute(),
- builder.getIncrementalBuildTargetAttribute())) {
+ if (!Objects.equals(getIncrementalBuildTargetAttribute(), builder.getIncrementalBuildTargetAttribute())) {
incrementalBuildTarget = builder.getIncrementalBuildTargetAttribute();
}
- if (!CDataUtil.objectsEqual(getCleanBuildTargetAttribute(), builder.getCleanBuildTargetAttribute())) {
+ if (!Objects.equals(getCleanBuildTargetAttribute(), builder.getCleanBuildTargetAttribute())) {
cleanBuildTarget = builder.getCleanBuildTargetAttribute();
}
}
@@ -429,7 +425,6 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
/* public Builder(IToolChain parent, String Id, String name, Builder builder, ICStorageElement el) {
this(parent, Id, name, builder);
-
loadFromProject(el);
}
*/
@@ -473,11 +468,6 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
// get the 'variableFormat' attribute
builderVariablePattern = SafeStringInterner.safeIntern(element.getAttribute(VARIABLE_FORMAT));
- // get the 'isVariableCaseSensitive' attribute
- String isCS = element.getAttribute(IS_VARIABLE_CASE_SENSITIVE);
- if (isCS != null)
- isVariableCaseSensitive = Boolean.parseBoolean(isCS);
-
// get the reserved macro names
String reservedNames = element.getAttribute(RESERVED_MACRO_NAMES);
if (reservedNames != null)
@@ -1095,18 +1085,20 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
@Override
public String getArguments() {
String args = getArgumentsAttribute();
- String stopOnErrCmd = getStopOnErrCmd(isStopOnError());
- int parallelNum = getParallelizationNum();
- String parallelCmd = isParallelBuildOn() ? getParallelizationCmd(parallelNum) : EMPTY_STRING;
+ if (isDefaultBuildArgsOnly()) {
+ String stopOnErrCmd = getStopOnErrCmd(isStopOnError());
+ int parallelNum = getParallelizationNum();
+ String parallelCmd = isParallelBuildOn() ? getParallelizationCmd(parallelNum) : EMPTY_STRING;
- String reversedStopOnErrCmd = getStopOnErrCmd(!isStopOnError());
- String reversedParallelBuildCmd = !isParallelBuildOn() ? getParallelizationCmd(parallelNum) : EMPTY_STRING;
+ String reversedStopOnErrCmd = getStopOnErrCmd(!isStopOnError());
+ String reversedParallelBuildCmd = !isParallelBuildOn() ? getParallelizationCmd(parallelNum) : EMPTY_STRING;
- args = removeCmd(args, reversedStopOnErrCmd);
- args = removeCmd(args, reversedParallelBuildCmd);
+ args = removeCmd(args, reversedStopOnErrCmd);
+ args = removeCmd(args, reversedParallelBuildCmd);
- args = addCmd(args, stopOnErrCmd);
- args = addCmd(args, parallelCmd);
+ args = addCmd(args, stopOnErrCmd);
+ args = addCmd(args, parallelCmd);
+ }
return args != null ? args.trim() : null;
}
@@ -1303,16 +1295,6 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
@Override
public void setArguments(String newArgs) {
- if (getArguments().equals(newArgs))
- return;
-
- if (newArgs != null) {
- String stopOnErrCmd = getStopOnErrCmd(isStopOnError());
- String parallelCmd = isParallelBuildOn() ? getParallelizationCmd(getParallelizationNum()) : EMPTY_STRING;
-
- newArgs = removeCmd(newArgs, stopOnErrCmd);
- newArgs = removeCmd(newArgs, parallelCmd);
- }
setArgumentsAttribute(newArgs);
}
@@ -1485,16 +1467,6 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
}
@Override
- public boolean isVariableCaseSensitive() {
- if (isVariableCaseSensitive == null) {
- if (superClass != null)
- return getSuperClass().isVariableCaseSensitive();
- return true;
- }
- return isVariableCaseSensitive.booleanValue();
- }
-
- @Override
public String[] getReservedMacroNames() {
if (reservedMacroNames == null && superClass != null)
return getSuperClass().getReservedMacroNames();
@@ -1867,7 +1839,6 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
String path = getBuildPathAttribute();
if(path == null)
return true;
-
if(isWorkspaceBuildPath == null){
if(superClass != null)
return superClass.isWorkspaceBuildPath();
@@ -1899,6 +1870,16 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
}
@Override
+ public boolean isDefaultBuildCmdOnly() {
+ return isExtensionBuilder || (command == null && superClass != null);
+ }
+
+ @Override
+ public boolean isDefaultBuildArgsOnly() {
+ return isExtensionBuilder || (args == null && superClass != null);
+ }
+
+ @Override
public boolean isStopOnError() {
if (stopOnErr == null) {
if (superClass != null) {
@@ -1957,6 +1938,28 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
}
}
+ @Override
+ public void setUseDefaultBuildCmdOnly(boolean on) throws CoreException {
+ if (!isExtensionBuilder && superClass != null) {
+ if (on) {
+ command = null;
+ } else {
+ command = getCommand();
+ }
+ }
+ }
+
+ @Override
+ public void setUseDefaultBuildArgsOnly(boolean on) throws CoreException {
+ if (!isExtensionBuilder && superClass != null) {
+ if (on) {
+ args = null;
+ } else {
+ args = EMPTY_STRING;
+ }
+ }
+ }
+
public String getAutoBuildTargetAttribute() {
if (autoBuildTarget == null) {
if (superClass != null)
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/CommonBuilder.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/CommonBuilder.java
index f453a2c979f..2d6c149f7ce 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/CommonBuilder.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/CommonBuilder.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2019 Intel Corporation and others.
+ * Copyright (c) 2007, 2021 Intel Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -16,12 +16,14 @@
* Andrew Gvozdev (Quoin Inc) - Saving build output implemented in different way (bug 306222)
* Umair Sair (Mentor Graphics) - Project dependencies are not built in the correct order (bug 546407)
* Umair Sair (Mentor Graphics) - Setting current project for markers creation (bug 545976)
+ * Torbjörn Svensson (STMicroelectronics) - bug #571134
*******************************************************************************/
package org.eclipse.cdt.managedbuilder.internal.core;
import java.io.IOException;
import java.io.OutputStream;
import java.net.URI;
+import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
@@ -61,6 +63,7 @@ import org.eclipse.cdt.managedbuilder.makegen.IManagedBuilderMakefileGenerator;
import org.eclipse.cdt.managedbuilder.makegen.IManagedBuilderMakefileGenerator2;
import org.eclipse.cdt.newmake.core.IMakeBuilderInfo;
import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IIncrementalProjectBuilder2;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IResourceDelta;
@@ -83,7 +86,7 @@ import org.eclipse.core.runtime.SubProgressMonitor;
import org.eclipse.core.runtime.jobs.ISchedulingRule;
import org.eclipse.core.runtime.jobs.Job;
-public class CommonBuilder extends ACBuilder {
+public class CommonBuilder extends ACBuilder implements IIncrementalProjectBuilder2 {
public final static String BUILDER_ID = ManagedBuilderCorePlugin.getUniqueIdentifier() + ".genmakebuilder"; //$NON-NLS-1$
private static final String ERROR_HEADER = "GeneratedmakefileBuilder error ["; //$NON-NLS-1$
@@ -102,6 +105,7 @@ public class CommonBuilder extends ACBuilder {
private boolean fBuildErrOccured;
private Set<String> builtRefConfigIds = new HashSet<>();
+ private Set<String> scheduledConfigIds = new HashSet<>();
public CommonBuilder() {
}
@@ -436,6 +440,7 @@ public class CommonBuilder extends ACBuilder {
fBuildSet.start(this);
builtRefConfigIds.clear();
+ scheduledConfigIds.clear();
IProject project = getProject();
@@ -486,6 +491,7 @@ public class CommonBuilder extends ACBuilder {
if (status.getSeverity() != IStatus.OK)
throw new CoreException(status);
+ scheduledConfigIds.add(activeCfg.getId());
IConfiguration rcfgs[] = getReferencedConfigs(builders);
monitor.beginTask("", num + rcfgs.length); //$NON-NLS-1$
@@ -518,6 +524,8 @@ public class CommonBuilder extends ACBuilder {
build(kind, new CfgBuildInfo(builders[i], isForeground), new SubProgressMonitor(monitor, 1));
}
}
+
+ scheduledConfigIds.remove(activeCfg.getId());
}
if (isForeground)
@@ -580,6 +588,13 @@ public class CommonBuilder extends ACBuilder {
IProject project = cfg.getOwner().getProject();
fBuildSet.getCfgIdSet(project, true).add(cfg.getId());
+ if (scheduledConfigIds.contains(cfg.getId())) {
+ ManagedBuilderCorePlugin.log(new Status(IStatus.WARNING, ManagedBuilderCorePlugin.getUniqueIdentifier(),
+ MessageFormat.format(ManagedMakeMessages.getString("CommonBuilder.circular_dependency"), //$NON-NLS-1$
+ project.getName(), cfg.getName())));
+ continue;
+ }
+
if (!builtRefConfigIds.contains(cfg.getId())) {
if (VERBOSE) {
outputTrace(cfg.getOwner().getProject().getName(),
@@ -967,7 +982,7 @@ public class CommonBuilder extends ACBuilder {
//in case an error occured, make it behave in the old stile:
if (cfg.needsRebuild()) {
//make a full clean if an info needs a rebuild
- clean(new SubProgressMonitor(monitor, IProgressMonitor.UNKNOWN));
+ clean((Map<String, String>) null, new SubProgressMonitor(monitor, IProgressMonitor.UNKNOWN));
makefileRegenerationNeeded = true;
} else if (delta != null && !makefileRegenerationNeeded) {
// Create a delta visitor to detect the build type
@@ -975,7 +990,8 @@ public class CommonBuilder extends ACBuilder {
bInfo.getBuildInfo().getManagedProject().getConfigurations());
delta.accept(visitor);
if (visitor.shouldBuildFull()) {
- clean(new SubProgressMonitor(monitor, IProgressMonitor.UNKNOWN));
+ clean((Map<String, String>) null,
+ new SubProgressMonitor(monitor, IProgressMonitor.UNKNOWN));
makefileRegenerationNeeded = true;
}
}
@@ -1033,16 +1049,22 @@ public class CommonBuilder extends ACBuilder {
}
@Override
- protected void clean(IProgressMonitor monitor) throws CoreException {
+ protected final void clean(IProgressMonitor monitor) throws CoreException {
+ throw new IllegalStateException(
+ "Unexpected/incorrect call to old clean method. Client code must call clean(Map,IProgressMonitor)"); //$NON-NLS-1$
+ }
+
+ @Override
+ public void clean(Map<String, String> args, IProgressMonitor monitor) throws CoreException {
if (DEBUG_EVENTS)
- printEvent(IncrementalProjectBuilder.CLEAN_BUILD, null);
+ printEvent(IncrementalProjectBuilder.CLEAN_BUILD, args);
IProject curProject = getProject();
if (!isCdtProjectCreated(curProject))
return;
- IBuilder[] builders = ManagedBuilderCorePlugin.createBuilders(curProject, null);
+ IBuilder[] builders = ManagedBuilderCorePlugin.createBuilders(curProject, args);
for (IBuilder builder : builders) {
CfgBuildInfo bInfo = new CfgBuildInfo(builder, true);
clean(bInfo, monitor);
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Configuration.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Configuration.java
index 81d6821d0eb..bf4b762ffab 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Configuration.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Configuration.java
@@ -30,6 +30,7 @@ import java.util.Vector;
import org.eclipse.cdt.build.core.scannerconfig.ICfgScannerConfigBuilderInfo2Set;
import org.eclipse.cdt.build.internal.core.scannerconfig.CfgDiscoveredPathManager.PathInfoCache;
import org.eclipse.cdt.core.ErrorParserManager;
+import org.eclipse.cdt.core.cdtvariables.CdtVariableException;
import org.eclipse.cdt.core.settings.model.CSourceEntry;
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
import org.eclipse.cdt.core.settings.model.ICExternalSetting;
@@ -65,6 +66,7 @@ import org.eclipse.cdt.managedbuilder.core.IManagedOptionValueHandler;
import org.eclipse.cdt.managedbuilder.core.IManagedProject;
import org.eclipse.cdt.managedbuilder.core.IOption;
import org.eclipse.cdt.managedbuilder.core.IOptionApplicability;
+import org.eclipse.cdt.managedbuilder.core.IOptionCommandGenerator;
import org.eclipse.cdt.managedbuilder.core.IProjectType;
import org.eclipse.cdt.managedbuilder.core.IResourceConfiguration;
import org.eclipse.cdt.managedbuilder.core.IResourceInfo;
@@ -77,11 +79,15 @@ import org.eclipse.cdt.managedbuilder.envvar.IConfigurationEnvironmentVariableSu
import org.eclipse.cdt.managedbuilder.internal.dataprovider.BuildConfigurationData;
import org.eclipse.cdt.managedbuilder.internal.enablement.OptionEnablementExpression;
import org.eclipse.cdt.managedbuilder.internal.macros.BuildMacroProvider;
+import org.eclipse.cdt.managedbuilder.internal.macros.BuildfileMacroSubstitutor;
import org.eclipse.cdt.managedbuilder.internal.macros.FileContextData;
+import org.eclipse.cdt.managedbuilder.internal.macros.IMacroContextInfo;
+import org.eclipse.cdt.managedbuilder.internal.macros.IMacroContextInfoProvider;
import org.eclipse.cdt.managedbuilder.internal.macros.OptionContextData;
import org.eclipse.cdt.managedbuilder.macros.BuildMacroException;
import org.eclipse.cdt.managedbuilder.macros.IBuildMacroProvider;
import org.eclipse.cdt.managedbuilder.macros.IConfigurationBuildMacroSupplier;
+import org.eclipse.cdt.utils.cdtvariables.SupplierBasedCdtVariableSubstitutor;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IResourceDelta;
@@ -95,6 +101,7 @@ import org.osgi.framework.Version;
public class Configuration extends BuildObject implements IConfiguration, IBuildPropertiesRestriction,
IBuildPropertyChangeListener, IRealBuildObjectAssociation {
+ private static final String WHITE_SPACE = " "; //$NON-NLS-1$
private static final String EMPTY_STRING = ""; //$NON-NLS-1$
private static final String EMPTY_CFG_ID = "org.eclipse.cdt.build.core.emptycfg"; //$NON-NLS-1$
private static final String LANGUAGE_SETTINGS_PROVIDER_DELIMITER = ";"; //$NON-NLS-1$
@@ -2600,25 +2607,51 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
IOption option = opts[i];
try {
if (option.getValueType() == IOption.OBJECTS) {
- String unresolved[] = option.getUserObjects();
- if (unresolved != null && unresolved.length > 0) {
- for (int k = 0; k < unresolved.length; k++) {
- try {
- String resolved[] = ManagedBuildManager.getBuildMacroProvider()
- .resolveStringListValueToMakefileFormat(unresolved[k], "", //$NON-NLS-1$
- " ", //$NON-NLS-1$
- IBuildMacroProvider.CONTEXT_OPTION,
- new OptionContextData(option, tool));
- if (resolved != null && resolved.length > 0)
- objs.addAll(Arrays.asList(resolved));
- } catch (BuildMacroException e) {
- // TODO: report error
- continue;
+ // check to see if the option has an applicability calculator
+ IOptionApplicability applicabilityCalculator = option.getApplicabilityCalculator();
+
+ if (applicabilityCalculator == null
+ || applicabilityCalculator.isOptionUsedInCommandLine(this, tool, option)) {
+ boolean generateDefaultCommand = true;
+ IOptionCommandGenerator commandGenerator = option.getCommandGenerator();
+ if (commandGenerator != null) {
+ SupplierBasedCdtVariableSubstitutor macroSubstitutor = new BuildfileMacroSubstitutor(
+ null, EMPTY_STRING, WHITE_SPACE);
+ IMacroContextInfoProvider provider = BuildMacroProvider.getDefault();
+ IMacroContextInfo info = provider.getMacroContextInfo(BuildMacroProvider.CONTEXT_OPTION,
+ new OptionContextData(option, tool));
+ if (info != null) {
+ macroSubstitutor.setMacroContextInfo(info);
+ String command = commandGenerator.generateCommand(option, macroSubstitutor);
+ if (command != null) {
+ objs.add(command);
+ generateDefaultCommand = false;
+ }
+ }
+ }
+
+ if (generateDefaultCommand) {
+ String unresolved[] = option.getUserObjects();
+ if (unresolved != null && unresolved.length > 0) {
+ for (int k = 0; k < unresolved.length; k++) {
+ try {
+ String resolved[] = ManagedBuildManager.getBuildMacroProvider()
+ .resolveStringListValueToMakefileFormat(unresolved[k], "", //$NON-NLS-1$
+ " ", //$NON-NLS-1$
+ IBuildMacroProvider.CONTEXT_OPTION,
+ new OptionContextData(option, tool));
+ if (resolved != null && resolved.length > 0)
+ objs.addAll(Arrays.asList(resolved));
+ } catch (BuildMacroException e) {
+ // TODO: report error
+ continue;
+ }
+ }
}
}
}
}
- } catch (BuildException e) {
+ } catch (BuildException | CdtVariableException e) {
// TODO: report error
continue;
}
@@ -2643,35 +2676,54 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
if (option.getValueType() == IOption.LIBRARIES) {
// check to see if the option has an applicability calculator
- IOptionApplicability applicabilitytCalculator = option.getApplicabilityCalculator();
-
- if (applicabilitytCalculator == null
- || applicabilitytCalculator.isOptionUsedInCommandLine(this, tool, option)) {
- String command = option.getCommand();
- String[] allLibs = option.getLibraries();
- for (int j = 0; j < allLibs.length; j++) {
- try {
- String resolved[] = ManagedBuildManager.getBuildMacroProvider()
- .resolveStringListValueToMakefileFormat(allLibs[j], "", //$NON-NLS-1$
- " ", //$NON-NLS-1$
- IBuildMacroProvider.CONTEXT_OPTION,
- new OptionContextData(option, tool));
- if (resolved != null && resolved.length > 0) {
- for (int k = 0; k < resolved.length; k++) {
- String string = resolved[k];
- if (string.length() > 0)
- libs.add(command + string);
- }
+ IOptionApplicability applicabilityCalculator = option.getApplicabilityCalculator();
+
+ if (applicabilityCalculator == null
+ || applicabilityCalculator.isOptionUsedInCommandLine(this, tool, option)) {
+ boolean generateDefaultCommand = true;
+ IOptionCommandGenerator commandGenerator = option.getCommandGenerator();
+ if (commandGenerator != null) {
+ SupplierBasedCdtVariableSubstitutor macroSubstitutor = new BuildfileMacroSubstitutor(
+ null, EMPTY_STRING, WHITE_SPACE);
+ IMacroContextInfoProvider provider = BuildMacroProvider.getDefault();
+ IMacroContextInfo info = provider.getMacroContextInfo(BuildMacroProvider.CONTEXT_OPTION,
+ new OptionContextData(option, tool));
+ if (info != null) {
+ macroSubstitutor.setMacroContextInfo(info);
+ String command = commandGenerator.generateCommand(option, macroSubstitutor);
+ if (command != null) {
+ libs.add(command);
+ generateDefaultCommand = false;
}
- } catch (BuildMacroException e) {
- // TODO: report error
- continue;
}
+ }
+ if (generateDefaultCommand) {
+ String command = option.getCommand();
+ String[] allLibs = option.getLibraries();
+ for (int j = 0; j < allLibs.length; j++) {
+ try {
+ String resolved[] = ManagedBuildManager.getBuildMacroProvider()
+ .resolveStringListValueToMakefileFormat(allLibs[j], " ", //$NON-NLS-1$
+ " ", //$NON-NLS-1$
+ IBuildMacroProvider.CONTEXT_OPTION,
+ new OptionContextData(option, tool));
+ if (resolved != null && resolved.length > 0) {
+ for (int k = 0; k < resolved.length; k++) {
+ String string = resolved[k];
+ if (string.length() > 0)
+ libs.add(command + string);
+ }
+ }
+ } catch (BuildMacroException e) {
+ // TODO: report error
+ continue;
+ }
+ }
}
}
}
- } catch (BuildException e) {
+ } catch (BuildException | CdtVariableException e) {
// TODO: report error
continue;
}
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/GeneratedMakefileBuilder.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/GeneratedMakefileBuilder.java
index 64ac3c306df..6ae65299220 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/GeneratedMakefileBuilder.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/GeneratedMakefileBuilder.java
@@ -31,6 +31,7 @@ import org.eclipse.cdt.core.ConsoleOutputStream;
import org.eclipse.cdt.core.ErrorParserManager;
import org.eclipse.cdt.core.ICommandLauncher;
import org.eclipse.cdt.core.IMarkerGenerator;
+import org.eclipse.cdt.core.envvar.IEnvironmentVariable;
import org.eclipse.cdt.core.model.ICModelMarker;
import org.eclipse.cdt.core.resources.ACBuilder;
import org.eclipse.cdt.core.resources.IConsole;
@@ -47,7 +48,6 @@ import org.eclipse.cdt.managedbuilder.core.IConfiguration;
import org.eclipse.cdt.managedbuilder.core.IManagedBuildInfo;
import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
import org.eclipse.cdt.managedbuilder.core.ManagedBuilderCorePlugin;
-import org.eclipse.cdt.managedbuilder.envvar.IBuildEnvironmentVariable;
import org.eclipse.cdt.managedbuilder.internal.buildmodel.DescriptionBuilder;
import org.eclipse.cdt.managedbuilder.internal.buildmodel.IBuildModelBuilder;
import org.eclipse.cdt.managedbuilder.internal.buildmodel.ParallelBuilder;
@@ -978,8 +978,8 @@ public class GeneratedMakefileBuilder extends ACBuilder {
launcher.showCommand(true);
// Set the environmennt
- IBuildEnvironmentVariable variables[] = ManagedBuildManager.getEnvironmentVariableProvider()
- .getVariables(cfg, true, true);
+ IEnvironmentVariable[] variables = ManagedBuildManager.getEnvironmentVariableProvider().getVariables(cfg,
+ true);
String[] envp = null;
ArrayList<String> envList = new ArrayList<>();
if (variables != null) {
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/HeadlessBuildMessages.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/HeadlessBuildMessages.java
index a1e9bfecd75..d3a634dda7a 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/HeadlessBuildMessages.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/HeadlessBuildMessages.java
@@ -28,15 +28,8 @@ public class HeadlessBuildMessages extends NLS {
public static String HeadlessBuilder_CouldntLockWorkspace;
public static String HeadlessBuilder_Directory;
public static String HeadlessBuilder_encountered_errors;
- public static String HeadlessBuilder_EnvVar_Append;
- public static String HeadlessBuilder_EnvVar_Prepend;
- public static String HeadlessBuilder_EnvVar_Remove;
- public static String HeadlessBuilder_EnvVar_Replace;
public static String HeadlessBuilder_Error;
public static String HeadlessBuilder_help_requested;
- public static String HeadlessBuilder_importAll;
- public static String HeadlessBuilder_IncludeFile;
- public static String HeadlessBuilder_InlucdePath;
public static String HeadlessBuilder_invalid_argument;
public static String HeadlessBuilder_is_not_accessible;
public static String HeadlessBuilder_is_not_valid_in_workspace;
@@ -50,22 +43,9 @@ public class HeadlessBuildMessages extends NLS {
public static String HeadlessBuilder_RegExSyntaxError;
public static String HeadlessBuilder_Skipping;
public static String HeadlessBuilder_Skipping2;
- public static String HeadlessBuilder_ToolOption_Replace;
- public static String HeadlessBuilder_ToolOption_Append;
- public static String HeadlessBuilder_ToolOption_Prepend;
- public static String HeadlessBuilder_ToolOption_Remove;
- public static String HeadlessBuilder_ToolOption_Types;
public static String HeadlessBuilder_unknown_argument;
public static String HeadlessBuilder_URI;
- public static String HeadlessBuilder_usage;
- public static String HeadlessBuilder_usage_build;
- public static String HeadlessBuilder_usage_clean_build;
public static String HeadlessBuilder_invalid_uri;
- public static String HeadlessBuilder_PreprocessorDefine;
- public static String HeadlessBuilder_usage_import;
- public static String HeadlessBuilder_usage_marker_type;
- public static String HeadlessBuilder_usage_no_indexer;
- public static String HeadlessBuilder_usage_print_all_error_markers;
public static String HeadlessBuilder_Workspace;
public static String HeadlessBuilder_WorkspaceInUse;
static {
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/HeadlessBuildMessages.properties b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/HeadlessBuildMessages.properties
index a37862a7581..a883c3c089f 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/HeadlessBuildMessages.properties
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/HeadlessBuildMessages.properties
@@ -23,10 +23,6 @@ HeadlessBuilder_completed_successfully=Headless build completed successfully
HeadlessBuilder_CouldntLockWorkspace=Could not obtain lock for workspace location
HeadlessBuilder_Directory=Directory:\u0020
HeadlessBuilder_encountered_errors=Headless build encountered errors
-HeadlessBuilder_EnvVar_Append=\ \ \ -Ea {var=value} append value to environment variable when running all tools
-HeadlessBuilder_EnvVar_Prepend=\ \ \ -Ep {var=value} prepend value to environment variable when running all tools
-HeadlessBuilder_EnvVar_Remove=\ \ \ -Er {var} remove/unset the given environment variable
-HeadlessBuilder_EnvVar_Replace=\ \ \ -E {var=value} replace/add value to environment variable when running all tools
HeadlessBuilder_Error=Error:\u0020
HeadlessBuilder_help_requested=Help Requested
HeadlessBuilder_invalid_argument=Invalid Arguments:\u0020
@@ -43,23 +39,7 @@ HeadlessBuilder_Skipping=Skipping "
HeadlessBuilder_Skipping2=". Skipping...
HeadlessBuilder_unknown_argument=Unknown argument:\u0020
HeadlessBuilder_URI=URI:\u0020
-HeadlessBuilder_usage=Usage:\u0020
-HeadlessBuilder_usage_build=\ \ \ -build {project_name_reg_ex{/config_reg_ex} | all}
-HeadlessBuilder_usage_clean_build=\ \ \ -cleanBuild {project_name_reg_ex{/config_reg_ex} | all}
-HeadlessBuilder_usage_import=\ \ \ -import {[uri:/]/path/to/project}
-HeadlessBuilder_usage_marker_type=\ \ \ -markerType Marker types to fail build on {all | cdt | marker_id}
-HeadlessBuilder_usage_no_indexer=\ \ \ -no-indexer Disable indexer
-HeadlessBuilder_usage_print_all_error_markers=\ \ \ -printErrorMarkers Print all error markers
-HeadlessBuilder_importAll=\ \ \ -importAll {[uri:/]/path/to/projectTreeURI} Import all projects under URI
-HeadlessBuilder_IncludeFile=\ \ \ -include {include_file} additional include_file to pass to tools
-HeadlessBuilder_InlucdePath=\ \ \ -I {include_path} additional include_path to add to tools
HeadlessBuilder_invalid_uri=Invalid project URI:
HeadlessBuilder_MustSpecifyWorkspace=Must specify a location for the workspace. Restart with the '-data' switch.
-HeadlessBuilder_PreprocessorDefine=\ \ \ -D {prepoc_define} addition preprocessor defines to pass to the tools
-HeadlessBuilder_ToolOption_Replace=\ \ \ -T {toolid} {optionid=value} replace a tool option value in each configuration built
-HeadlessBuilder_ToolOption_Append=\ \ \ -Ta {toolid} {optionid=value} append to a tool option value in each configuration built
-HeadlessBuilder_ToolOption_Prepend=\ \ \ -Tp {toolid} {optionid=value} prepend to a tool option value in each configuration built
-HeadlessBuilder_ToolOption_Remove=\ \ \ -Tr {toolid} {optionid=value} remove a tool option value in each configuration built
-HeadlessBuilder_ToolOption_Types=\ \ \ Tool option values are parsed as a string, comma separated list of strings or a boolean based on the option's type\u0020
HeadlessBuilder_Workspace=Workspace\u0020
HeadlessBuilder_WorkspaceInUse=Workspace already in use\!
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/HeadlessBuilder.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/HeadlessBuilder.java
index a23612c389c..b630186246a 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/HeadlessBuilder.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/HeadlessBuilder.java
@@ -18,6 +18,7 @@
* R. Zulliger, C. Walther (Indel AG) - Bug 355609 Disable indexer
* John Dallaway - Bug 513763 Save workspace on conclusion
* Torbjörn Svensson (STMicroelectronics) - bug #330204
+ * Marc Siebenhaar (top-logic.com) - Bug #573512
*******************************************************************************/
package org.eclipse.cdt.managedbuilder.internal.core;
@@ -31,6 +32,7 @@ import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -84,6 +86,8 @@ import org.eclipse.osgi.service.datalocation.Location;
*
* IApplication ID: org.eclipse.cdt.managedbuilder.core.headlessbuild
* Provides:
+ * - Remove projects from workspace : -remove {[uri:/]/path/to/project}
+ * - Remove all projects in the tree : -removeAll {[uri:/]/path/to/projectTreeURI}
* - Import projects : -import {[uri:/]/path/to/project}
* - Import all projects in the tree : -importAll {[uri:/]/path/to/projectTreeURI}
* - Build projects / the workspace : -build {project_name_reg_ex/config_name_reg_ex | all}
@@ -100,6 +104,7 @@ import org.eclipse.osgi.service.datalocation.Location;
* - Prepend to a tool option value: -Tp {toolid} {optionid=value}
* - Remove a tool option: -Tr {toolid} {optionid=value}
* - Disable indexer: -no-indexer
+ * - Verbose progress updates: -verbose
* - Error marker types to consider: -markerType {all | cdt | marker_id}
* where:
* all is all markers -- default
@@ -116,10 +121,38 @@ public class HeadlessBuilder implements IApplication {
* IProgressMonitor to provide printing of task
*/
public static class PrintingProgressMonitor extends NullProgressMonitor {
+
+ /**
+ * During operations, such as remove projects, the subtask has useful
+ * information for users. However during a normal build there ends
+ * up being lots of output that is of little value.
+ */
+ private boolean printSubtasks;
+
+ /**
+ * The progress monitor some times received a subtask with the same
+ * name as the main task, in the UI that change is not visible,
+ * but at the command line it is an extra line of output, so
+ * suppress that case.
+ */
+ private String last;
+
+ public PrintingProgressMonitor(boolean printSubtasks) {
+ this.printSubtasks = printSubtasks;
+ }
+
@Override
public void beginTask(String name, int totalWork) {
if (name != null && name.length() > 0)
System.out.println(name);
+ last = name;
+ }
+
+ @Override
+ public void subTask(String name) {
+ if (printSubtasks && name != null && name.length() > 0 && !Objects.equals(last, name))
+ System.out.println(name);
+ last = name;
}
}
@@ -174,7 +207,13 @@ public class HeadlessBuilder implements IApplication {
public static final Integer ERROR = 1;
/** OK return status */
public static final Integer OK = IApplication.EXIT_OK;
+ /** Show usage return status */
+ public static final Integer SHOW_USAGE = 2;
+ /** Set of project URIs / paths to remove */
+ protected final Set<String> projectsToRemove = new HashSet<>();
+ /** Tree of projects to recursively remove */
+ protected final Set<String> projectTreeToRemove = new HashSet<>();
/** Set of project URIs / paths to import */
protected final Set<String> projectsToImport = new HashSet<>();
/** Tree of projects to recursively import */
@@ -186,6 +225,7 @@ public class HeadlessBuilder implements IApplication {
protected boolean buildAll = false;
protected boolean cleanAll = false;
protected boolean disableIndexer = false;
+ protected boolean verboseProgressMonitor = false;
/** List of Tool Option values being set */
protected List<ToolOption> toolOptions = new ArrayList<>();
@@ -269,18 +309,28 @@ public class HeadlessBuilder implements IApplication {
/*
* Build the given configurations using the specified build type (FULL, CLEAN, INCREMENTAL)
*/
- protected void buildConfigurations(Map<IProject, Set<ICConfigurationDescription>> projConfigs,
- final IProgressMonitor monitor, final int buildType) throws CoreException {
+ protected boolean buildConfigurations(Map<IProject, Set<ICConfigurationDescription>> projConfigs,
+ final IProgressMonitor monitor, final int buildType, List<String> allBuildErrors) throws CoreException {
+ boolean buildSuccessful = true;
for (Map.Entry<IProject, Set<ICConfigurationDescription>> entry : projConfigs.entrySet()) {
Set<ICConfigurationDescription> cfgDescs = entry.getValue();
- IConfiguration[] configs = new IConfiguration[cfgDescs.size()];
- int i = 0;
- for (ICConfigurationDescription cfgDesc : cfgDescs)
- configs[i++] = ManagedBuildManager.getConfigurationForDescription(cfgDesc);
+ for (ICConfigurationDescription cfgDesc : cfgDescs) {
+ IConfiguration[] configs = new IConfiguration[] {
+ ManagedBuildManager.getConfigurationForDescription(cfgDesc) };
+
+ ManagedBuildManager.buildConfigurations(configs, null, new SubProgressMonitor(monitor, 1), true,
+ buildType);
+
+ buildSuccessful = buildSuccessful && isProjectSuccesfullyBuild(entry.getKey());
+ if (printErrorMarkers) {
+ accumulateErrorMarkers(entry.getKey(), allBuildErrors);
+ }
+ }
- ManagedBuildManager.buildConfigurations(configs, null, new SubProgressMonitor(monitor, 1), true, buildType);
}
+
+ return buildSuccessful;
}
/**
@@ -291,7 +341,7 @@ public class HeadlessBuilder implements IApplication {
*/
protected int importProject(String projURIStr, boolean recurse) throws CoreException {
IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
- IProgressMonitor monitor = new PrintingProgressMonitor();
+ IProgressMonitor monitor = new PrintingProgressMonitor(verboseProgressMonitor);
InputStream in = null;
try {
URI project_uri = null;
@@ -389,6 +439,91 @@ public class HeadlessBuilder implements IApplication {
return OK;
}
+ /**
+ * Close and remove a project from the workspace
+ * @param projURIStr base URI string
+ * @param recurse should we recurse down the URI removing all projects?
+ * @return int OK / ERROR
+ */
+ protected int removeProject(String projURIStr, boolean recurse) throws CoreException {
+ IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
+ IProgressMonitor monitor = new PrintingProgressMonitor(true);
+ InputStream in = null;
+ try {
+ URI project_uri = null;
+ try {
+ project_uri = URI.create(projURIStr);
+ } catch (Exception e) {
+ // Will be treated as straightforward path in the case below
+ }
+
+ // Handle local paths as well
+ if (project_uri == null || project_uri.getScheme() == null) {
+ IPath p = new Path(projURIStr).addTrailingSeparator();
+ project_uri = URIUtil.toURI(p);
+
+ // Handle relative paths as relative to cwd
+ if (project_uri.getScheme() == null) {
+ String cwd = System.getProperty("user.dir"); //$NON-NLS-1$
+ p = new Path(cwd).addTrailingSeparator();
+ p = p.append(projURIStr);
+ project_uri = URIUtil.toURI(p);
+ }
+ if (project_uri.getScheme() == null) {
+ System.err.println(HeadlessBuildMessages.HeadlessBuilder_invalid_uri + project_uri);
+ return ERROR;
+ }
+ }
+
+ if (recurse) {
+ if (!EFS.getStore(project_uri).fetchInfo().exists()) {
+ System.err.println(HeadlessBuildMessages.HeadlessBuilder_Directory + project_uri
+ + HeadlessBuildMessages.HeadlessBuilder_cant_be_found);
+ return ERROR;
+ }
+ for (IFileStore info : EFS.getStore(project_uri).childStores(EFS.NONE, monitor)) {
+ if (!info.fetchInfo().isDirectory())
+ continue;
+ int status = removeProject(info.toURI().toString(), recurse);
+ if (status != OK)
+ return status;
+ }
+ }
+
+ // Load the project description
+ IFileStore fstore = EFS.getStore(project_uri).getChild(".project"); //$NON-NLS-1$
+ if (!fstore.fetchInfo().exists()) {
+ if (!recurse) {
+ System.err.println(HeadlessBuildMessages.HeadlessBuilder_project + project_uri
+ + HeadlessBuildMessages.HeadlessBuilder_cant_be_found);
+ return ERROR;
+ }
+ // .project not found; OK if we're not recursing
+ return OK;
+ }
+
+ in = fstore.openInputStream(EFS.NONE, monitor);
+ IProjectDescription desc = root.getWorkspace().loadProjectDescription(in);
+
+ // Check that a project with the name exist in the workspace, then close and remove the project gently from workspace
+ IProject project = root.getProject(desc.getName());
+ if (project.exists()) {
+ if (project.isOpen()) {
+ project.close(monitor);
+ }
+ project.delete(false, true, monitor);
+ return OK;
+ }
+ } finally {
+ try {
+ if (in != null)
+ in.close();
+ } catch (IOException e2) {
+ /* don't care */ }
+ }
+ return OK;
+ }
+
protected boolean isProjectSuccesfullyBuild(IProject project) {
try {
for (String markerType : markerTypes) {
@@ -432,7 +567,6 @@ public class HeadlessBuilder implements IApplication {
if (!checkInstanceLocation())
return ERROR;
- IProgressMonitor monitor = new PrintingProgressMonitor();
IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
final boolean isAutoBuilding = root.getWorkspace().isAutoBuilding();
@@ -452,7 +586,7 @@ public class HeadlessBuilder implements IApplication {
// Handle user provided arguments
if (!getArguments((String[]) context.getArguments().get(IApplicationContext.APPLICATION_ARGS)))
- return ERROR;
+ return SHOW_USAGE;
if (markerTypesDefault || markerTypesAll) {
markerTypes.clear();
@@ -479,17 +613,32 @@ public class HeadlessBuilder implements IApplication {
if (System.getProperty("org.eclipse.cdt.core.console") == null) //$NON-NLS-1$
System.setProperty("org.eclipse.cdt.core.console", "org.eclipse.cdt.core.systemConsole"); //$NON-NLS-1$ //$NON-NLS-2$
- /*
- * Perform the project import
- */
- // Import any projects that need importing
+ // Perform the import of list of project trees
+ projectTreeToImport.removeAll(projectTreeToRemove);
+ for (String projURIStr : projectTreeToImport) {
+ int status = importProject(projURIStr, true);
+ if (status != OK)
+ return status;
+ }
+
+ // Perform the removal of list of project trees
+ for (String projURIStr : projectTreeToRemove) {
+ int status = removeProject(projURIStr, true);
+ if (status != OK)
+ return status;
+ }
+
+ // Perform the import of list of single projects
+ projectsToImport.removeAll(projectsToRemove);
for (String projURIStr : projectsToImport) {
int status = importProject(projURIStr, false);
if (status != OK)
return status;
}
- for (String projURIStr : projectTreeToImport) {
- int status = importProject(projURIStr, true);
+
+ // Perform the removal of list of single projects
+ for (String projURIStr : projectsToRemove) {
+ int status = removeProject(projURIStr, false);
if (status != OK)
return status;
}
@@ -521,6 +670,8 @@ public class HeadlessBuilder implements IApplication {
ManagedBuildManager.saveBuildInfo(project, true);
}
+ IProgressMonitor monitor = new PrintingProgressMonitor(verboseProgressMonitor);
+
// Clean the projects
if (cleanAll) {
// Ensure we clean all the configurations
@@ -536,7 +687,8 @@ public class HeadlessBuilder implements IApplication {
for (String regEx : projectRegExToClean)
matchConfigurations(regEx, allProjects, configsToBuild);
// Clean the list of configurations
- buildConfigurations(configsToBuild, monitor, IncrementalProjectBuilder.CLEAN_BUILD);
+ buildConfigurations(configsToBuild, monitor, IncrementalProjectBuilder.CLEAN_BUILD,
+ new ArrayList<>());
}
// Build the projects the user wants building
@@ -545,26 +697,18 @@ public class HeadlessBuilder implements IApplication {
ACBuilder.setAllConfigBuild(true);
System.out.println(HeadlessBuildMessages.HeadlessBuilder_building_all);
- root.getWorkspace().build(IncrementalProjectBuilder.FULL_BUILD, monitor);
- for (IProject p : root.getProjects()) {
- buildSuccessful = buildSuccessful && isProjectSuccesfullyBuild(p);
- if (printErrorMarkers) {
- accumulateErrorMarkers(p, allBuildErrors);
- }
- }
+
+ // Collect build configurations for all projects in workspace
+ matchConfigurations(".*", allProjects, configsToBuild); //$NON-NLS-1$
} else {
// Resolve the regular expression project names to build configurations
for (String regEx : projectRegExToBuild)
matchConfigurations(regEx, allProjects, configsToBuild);
- // Build the list of configurations
- buildConfigurations(configsToBuild, monitor, IncrementalProjectBuilder.FULL_BUILD);
- for (IProject p : configsToBuild.keySet()) {
- buildSuccessful = buildSuccessful && isProjectSuccesfullyBuild(p);
- if (printErrorMarkers) {
- accumulateErrorMarkers(p, allBuildErrors);
- }
- }
}
+
+ // Build the list of configurations
+ buildSuccessful = buildConfigurations(configsToBuild, monitor, IncrementalProjectBuilder.FULL_BUILD,
+ allBuildErrors);
} finally {
// Reset the tool options
if (!savedToolOptions.isEmpty())
@@ -594,7 +738,7 @@ public class HeadlessBuilder implements IApplication {
root.getWorkspace().setDescription(desc);
// Save modified workspace (bug 513763)
- root.getWorkspace().save(true, monitor);
+ root.getWorkspace().save(true, new PrintingProgressMonitor(verboseProgressMonitor));
}
if (printErrorMarkers) {
if (buildSuccessful) {
@@ -643,6 +787,8 @@ public class HeadlessBuilder implements IApplication {
* Helper method to process expected arguments
*
* Arguments
+ * -remove {[uri:/]/path/to/project}
+ * -removeAll {[uri:/]/path/to/projectTreeURI} Remove all projects in the tree
* -import {[uri:/]/path/to/project}
* -importAll {[uri:/]/path/to/projectTreeURI} Import all projects in the tree
* -build {project_name_reg_ex/config_name_reg_ex | all}
@@ -659,6 +805,7 @@ public class HeadlessBuilder implements IApplication {
* -Tp {toolid} {optionid=value} prepend to a tool option value
* -Tr {toolid} {optionid=value} remove a tool option value
* -no-indexer Disable indexer
+ * -verbose Verbose progress monitor updates
* -markerType Which markers to consider
* -printErrorMarkers Print all error markers that caused build to fail
*
@@ -673,6 +820,10 @@ public class HeadlessBuilder implements IApplication {
for (int i = 0; i < args.length; i++) {
if ("-help".equals(args[i])) { //$NON-NLS-1$
throw new Exception(HeadlessBuildMessages.HeadlessBuilder_help_requested);
+ } else if ("-remove".equals(args[i])) { //$NON-NLS-1$
+ projectsToRemove.add(args[++i]);
+ } else if ("-removeAll".equals(args[i])) { //$NON-NLS-1$
+ projectTreeToRemove.add(args[++i]);
} else if ("-import".equals(args[i])) { //$NON-NLS-1$
projectsToImport.add(args[++i]);
} else if ("-importAll".equals(args[i])) { //$NON-NLS-1$
@@ -722,6 +873,8 @@ public class HeadlessBuilder implements IApplication {
addToolOption(toolId, option, ToolOption.REMOVE);
} else if ("-no-indexer".equals(args[i])) { //$NON-NLS-1$
disableIndexer = true;
+ } else if ("-verbose".equals(args[i])) { //$NON-NLS-1$
+ verboseProgressMonitor = true;
} else if ("-markerType".equals(args[i])) { //$NON-NLS-1$
addMarkerType(args[++i]);
} else if ("-printErrorMarkers".equals(args[i])) { //$NON-NLS-1$
@@ -731,30 +884,8 @@ public class HeadlessBuilder implements IApplication {
}
}
} catch (Exception e) {
- // Print usage
- System.err.println(
- HeadlessBuildMessages.HeadlessBuilder_invalid_argument + args != null ? Arrays.toString(args) : ""); //$NON-NLS-1$
+ System.err.println(HeadlessBuildMessages.HeadlessBuilder_invalid_argument + Arrays.toString(args));
System.err.println(HeadlessBuildMessages.HeadlessBuilder_Error + e.getMessage());
- System.err.println(HeadlessBuildMessages.HeadlessBuilder_usage);
- System.err.println(HeadlessBuildMessages.HeadlessBuilder_usage_import);
- System.err.println(HeadlessBuildMessages.HeadlessBuilder_importAll);
- System.err.println(HeadlessBuildMessages.HeadlessBuilder_usage_build);
- System.err.println(HeadlessBuildMessages.HeadlessBuilder_usage_clean_build);
- System.err.println(HeadlessBuildMessages.HeadlessBuilder_usage_no_indexer);
- System.err.println(HeadlessBuildMessages.HeadlessBuilder_usage_marker_type);
- System.err.println(HeadlessBuildMessages.HeadlessBuilder_usage_print_all_error_markers);
- System.err.println(HeadlessBuildMessages.HeadlessBuilder_InlucdePath);
- System.err.println(HeadlessBuildMessages.HeadlessBuilder_IncludeFile);
- System.err.println(HeadlessBuildMessages.HeadlessBuilder_PreprocessorDefine);
- System.err.println(HeadlessBuildMessages.HeadlessBuilder_EnvVar_Replace);
- System.err.println(HeadlessBuildMessages.HeadlessBuilder_EnvVar_Append);
- System.err.println(HeadlessBuildMessages.HeadlessBuilder_EnvVar_Prepend);
- System.err.println(HeadlessBuildMessages.HeadlessBuilder_EnvVar_Remove);
- System.err.println(HeadlessBuildMessages.HeadlessBuilder_ToolOption_Replace);
- System.err.println(HeadlessBuildMessages.HeadlessBuilder_ToolOption_Append);
- System.err.println(HeadlessBuildMessages.HeadlessBuilder_ToolOption_Prepend);
- System.err.println(HeadlessBuildMessages.HeadlessBuilder_ToolOption_Remove);
- System.err.println(HeadlessBuildMessages.HeadlessBuilder_ToolOption_Types);
return false;
}
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/HeadlessBuilderExternalSettingsProvider.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/HeadlessBuilderExternalSettingsProvider.java
index 46648561369..f0501865df9 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/HeadlessBuilderExternalSettingsProvider.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/HeadlessBuilderExternalSettingsProvider.java
@@ -58,16 +58,15 @@ public class HeadlessBuilderExternalSettingsProvider extends CExternalSettingPro
static void hookExternalSettingsProvider() {
if (additionalSettings.isEmpty())
return;
- // Remove the external settings providers from all the hooked projects
+ // hook the external settings providers to all projects
for (IProject project : ResourcesPlugin.getWorkspace().getRoot().getProjects()) {
ICProjectDescription desc = CCorePlugin.getDefault().getProjectDescription(project);
if (desc == null)
continue;
for (ICConfigurationDescription cfg : desc.getConfigurations()) {
- String[] extSettingIds = cfg.getExternalSettingsProviderIds();
- String[] newSettingIds = new String[extSettingIds.length + 1];
- System.arraycopy(extSettingIds, 0, newSettingIds, 0, extSettingIds.length);
- newSettingIds[extSettingIds.length] = ID;
+ List<String> settingIds = new ArrayList<>(Arrays.asList(cfg.getExternalSettingsProviderIds()));
+ settingIds.add(ID);
+ String[] newSettingIds = settingIds.toArray(String[]::new);
cfg.setExternalSettingsProviderIds(newSettingIds);
}
try {
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ManagedBuildInfo.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ManagedBuildInfo.java
index 043eab79113..c13311800e7 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ManagedBuildInfo.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ManagedBuildInfo.java
@@ -19,6 +19,7 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import org.eclipse.cdt.core.envvar.IEnvironmentVariable;
import org.eclipse.cdt.core.model.CModelException;
import org.eclipse.cdt.core.model.CoreModel;
import org.eclipse.cdt.core.model.ICProject;
@@ -50,7 +51,6 @@ import org.eclipse.cdt.managedbuilder.core.ITool;
import org.eclipse.cdt.managedbuilder.core.IToolChain;
import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
import org.eclipse.cdt.managedbuilder.core.ManagedBuilderCorePlugin;
-import org.eclipse.cdt.managedbuilder.envvar.IBuildEnvironmentVariable;
import org.eclipse.cdt.managedbuilder.envvar.IEnvironmentVariableProvider;
import org.eclipse.cdt.managedbuilder.internal.macros.OptionContextData;
import org.eclipse.cdt.managedbuilder.internal.scannerconfig.ManagedBuildCPathEntryContainer;
@@ -993,8 +993,8 @@ public class ManagedBuildInfo implements IManagedBuildInfo, IScannerInfo {
private String getCWD() {
String cwd = ""; //$NON-NLS-1$
- IBuildEnvironmentVariable cwdvar = ManagedBuildManager.getEnvironmentVariableProvider().getVariable("CWD", //$NON-NLS-1$
- getDefaultConfiguration(), false, true);
+ IEnvironmentVariable cwdvar = ManagedBuildManager.getEnvironmentVariableProvider().getVariable("CWD", //$NON-NLS-1$
+ getDefaultConfiguration(), true);
if (cwdvar != null) {
cwd = cwdvar.getValue().replace('\\', '/');
}
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ManagedCommandLineGenerator.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ManagedCommandLineGenerator.java
index 6e52fc3b789..d447167cf20 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ManagedCommandLineGenerator.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ManagedCommandLineGenerator.java
@@ -17,6 +17,10 @@ import org.eclipse.cdt.managedbuilder.core.IManagedCommandLineGenerator;
import org.eclipse.cdt.managedbuilder.core.IManagedCommandLineInfo;
import org.eclipse.cdt.managedbuilder.core.ITool;
+/**
+ * @deprecated Use {@link org.eclipse.cdt.managedbuilder.core.ManagedCommandLineGenerator}
+ */
+@Deprecated
public class ManagedCommandLineGenerator implements IManagedCommandLineGenerator {
public final String AT = "@"; //$NON-NLS-1$
@@ -51,7 +55,6 @@ public class ManagedCommandLineGenerator implements IManagedCommandLineGenerator
private static ManagedCommandLineGenerator cmdLineGen;
protected ManagedCommandLineGenerator() {
- cmdLineGen = null;
}
public static ManagedCommandLineGenerator getCommandLineGenerator() {
@@ -60,70 +63,12 @@ public class ManagedCommandLineGenerator implements IManagedCommandLineGenerator
return cmdLineGen;
}
- private String makeVariable(String variableName) {
- return "${" + variableName + "}"; //$NON-NLS-1$ //$NON-NLS-2$
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.core.IManagedCommandLineGenerator#getCommandLineInfo(org.eclipse.cdt.managedbuilder.core.ITool, java.lang.String, java.lang.String[], java.lang.String, java.lang.String, java.lang.String[], java.lang.String)
- */
@Override
public IManagedCommandLineInfo generateCommandLineInfo(ITool tool, String commandName, String[] flags,
String outputFlag, String outputPrefix, String outputName, String[] inputResources,
String commandLinePattern) {
- if (commandLinePattern == null || commandLinePattern.length() <= 0)
- commandLinePattern = Tool.DEFAULT_PATTERN;
-
- // if the output name isn't a variable then quote it
- if (outputName.length() > 0 && outputName.indexOf("$(") != 0) //$NON-NLS-1$
- outputName = DOUBLE_QUOTE + outputName + DOUBLE_QUOTE;
-
- String inputsStr = ""; //$NON-NLS-1$
- if (inputResources != null) {
- for (String inp : inputResources) {
- if (inp != null && inp.length() > 0) {
- // if the input resource isn't a variable then quote it
- if (inp.indexOf("$(") != 0) { //$NON-NLS-1$
- inp = DOUBLE_QUOTE + inp + DOUBLE_QUOTE;
- }
- inputsStr = inputsStr + inp + WHITESPACE;
- }
- }
- inputsStr = inputsStr.trim();
- }
-
- String flagsStr = stringArrayToString(flags);
-
- String command = commandLinePattern;
-
- command = command.replace(makeVariable(CMD_LINE_PRM_NAME), commandName);
- command = command.replace(makeVariable(FLAGS_PRM_NAME), flagsStr);
- command = command.replace(makeVariable(OUTPUT_FLAG_PRM_NAME), outputFlag);
- command = command.replace(makeVariable(OUTPUT_PREFIX_PRM_NAME), outputPrefix);
- command = command.replace(makeVariable(OUTPUT_PRM_NAME), outputName);
- command = command.replace(makeVariable(INPUTS_PRM_NAME), inputsStr);
-
- command = command.replace(makeVariable(CMD_LINE_PRM_NAME.toLowerCase()), commandName);
- command = command.replace(makeVariable(FLAGS_PRM_NAME.toLowerCase()), flagsStr);
- command = command.replace(makeVariable(OUTPUT_FLAG_PRM_NAME.toLowerCase()), outputFlag);
- command = command.replace(makeVariable(OUTPUT_PREFIX_PRM_NAME.toLowerCase()), outputPrefix);
- command = command.replace(makeVariable(OUTPUT_PRM_NAME.toLowerCase()), outputName);
- command = command.replace(makeVariable(INPUTS_PRM_NAME.toLowerCase()), inputsStr);
-
- return new ManagedCommandLineInfo(command.trim(), commandLinePattern, commandName, stringArrayToString(flags),
- outputFlag, outputPrefix, outputName, stringArrayToString(inputResources));
+ // Forward the call to the API implementation
+ return new org.eclipse.cdt.managedbuilder.core.ManagedCommandLineGenerator().generateCommandLineInfo(tool,
+ commandName, flags, outputFlag, outputPrefix, outputName, inputResources, commandLinePattern);
}
-
- private String stringArrayToString(String[] array) {
- if (array == null || array.length <= 0)
- return ""; //$NON-NLS-1$
- StringBuilder sb = new StringBuilder();
- for (int i = 0; i < array.length; i++) {
- if (i > 0) // we add whitespace after each but not first so .trim() is a no-op
- sb.append(WHITESPACE);
- sb.append(array[i]);
- }
- return sb.toString().trim();
- }
-
}
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ManagedCommandLineInfo.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ManagedCommandLineInfo.java
index c90d4e726ab..02f6d745354 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ManagedCommandLineInfo.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ManagedCommandLineInfo.java
@@ -15,6 +15,10 @@ package org.eclipse.cdt.managedbuilder.internal.core;
import org.eclipse.cdt.managedbuilder.core.IManagedCommandLineInfo;
+/**
+ * @deprecated Use {@link org.eclipse.cdt.managedbuilder.core.ManagedCommandLineGenerator}
+ */
+@Deprecated
public class ManagedCommandLineInfo implements IManagedCommandLineInfo {
private String commandLine;
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ManagedMakeMessages.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ManagedMakeMessages.java
index 0380c9cf5fb..053e7b3e906 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ManagedMakeMessages.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ManagedMakeMessages.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004, 2011 IBM Corporation and others.
+ * Copyright (c) 2004, 2020 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -10,14 +10,14 @@
*
* Contributors:
* IBM - Initial API and implementation
+ * Sergei Kovalchuk (NXP)
*******************************************************************************/
package org.eclipse.cdt.managedbuilder.internal.core;
+import java.text.MessageFormat;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
-import com.ibm.icu.text.MessageFormat;
-
/**
* @since 2.0
*/
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/MultiFileInfo.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/MultiFileInfo.java
index de509d8ab8b..c56e36347ac 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/MultiFileInfo.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/MultiFileInfo.java
@@ -18,6 +18,7 @@ import org.eclipse.cdt.managedbuilder.core.IConfiguration;
import org.eclipse.cdt.managedbuilder.core.IFileInfo;
import org.eclipse.cdt.managedbuilder.core.IResourceInfo;
import org.eclipse.cdt.managedbuilder.core.ITool;
+import org.eclipse.cdt.managedbuilder.core.IToolChain;
import org.eclipse.core.resources.IResource;
/**
@@ -160,4 +161,9 @@ public class MultiFileInfo extends MultiResourceInfo implements IFileInfo {
}
}
+ @Override
+ public IToolChain getBaseToolChain() {
+ return ((IFileInfo) fRis[curr]).getBaseToolChain();
+ }
+
}
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Option.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Option.java
index 6f4d9b20023..393df9fe958 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Option.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Option.java
@@ -17,6 +17,7 @@
*******************************************************************************/
package org.eclipse.cdt.managedbuilder.internal.core;
+import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
@@ -29,6 +30,7 @@ import org.eclipse.cdt.internal.core.SafeStringInterner;
import org.eclipse.cdt.managedbuilder.core.BuildException;
import org.eclipse.cdt.managedbuilder.core.IBuildObject;
import org.eclipse.cdt.managedbuilder.core.IBuildPropertiesRestriction;
+import org.eclipse.cdt.managedbuilder.core.IConfiguration;
import org.eclipse.cdt.managedbuilder.core.IHoldsOptions;
import org.eclipse.cdt.managedbuilder.core.IManagedConfigElement;
import org.eclipse.cdt.managedbuilder.core.IManagedOptionValueHandler;
@@ -54,10 +56,10 @@ import org.eclipse.core.runtime.Status;
import org.osgi.framework.Version;
public class Option extends BuildObject implements IOption, IBuildPropertiesRestriction {
- private static final String IS_BUILTIN_EMPTY = "IS_BUILTIN_EMPTY";
- private static final String IS_VALUE_EMPTY = "IS_VALUE_EMPTY";
+ private static final String IS_BUILTIN_EMPTY = "IS_BUILTIN_EMPTY"; //$NON-NLS-1$
+ private static final String IS_VALUE_EMPTY = "IS_VALUE_EMPTY"; //$NON-NLS-1$
// Static default return values
- public static final String EMPTY_STRING = "";
+ public static final String EMPTY_STRING = ""; //$NON-NLS-1$
public static final String[] EMPTY_STRING_ARRAY = new String[0];
public static final OptionStringValue[] EMPTY_LV_ARRAY = new OptionStringValue[0];
@@ -511,7 +513,37 @@ public class Option extends BuildObject implements IOption, IBuildPropertiesRest
if (superClassId != null && superClassId.length() > 0) {
superClass = ManagedBuildManager.getExtensionOption(superClassId);
if (superClass == null) {
- // TODO: Report error
+ /*
+ * This can happen when options are set at the resource level, for a project using a toolchain definition
+ * where there are options at the toolchain level & one or more of those options is set at a
+ * non-default value.
+ *
+ * In these cases the superclass is set to the option from the parent not the extension's ID
+ * Workaround this by searching for any missing superclass IDs at on the parent configs toolchain
+ *
+ * See the "bug580009.tests.cfg1.tc" definition in org.eclipse.cdt.managedbuilder.core.tests for an example
+ */
+ IBuildObject parent = this.getParent();
+ if (parent instanceof IToolChain) {
+ IConfiguration config = ((IToolChain) parent).getParent();
+ IOption foundOption = null;
+ //In rare cases the RootFolderInfo may not have loaded & will cause an NPE
+ if (config != null && config.getRootFolderInfo() != null) {
+ IToolChain parentToolchain = config.getToolChain();
+ if (parentToolchain != null) {
+ foundOption = parentToolchain.getOptionById(superClassId);
+ }
+ }
+ if (foundOption != null) {
+ superClass = foundOption;
+ } else {
+ ManagedBuilderCorePlugin.log(new Status(IStatus.ERROR, ManagedBuilderCorePlugin.PLUGIN_ID,
+ MessageFormat.format("Missing superclass \"{0}\" for \"{1}\"", superClassId, getId()))); //$NON-NLS-1$
+ }
+ } else {
+ ManagedBuilderCorePlugin.log(new Status(IStatus.ERROR, ManagedBuilderCorePlugin.PLUGIN_ID,
+ MessageFormat.format("Missing superclass \"{0}\" for \"{1}\"", superClassId, getId()))); //$NON-NLS-1$
+ }
}
}
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/PluginResources.properties b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/PluginResources.properties
index f56b381c147..92cd9a7fe09 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/PluginResources.properties
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/PluginResources.properties
@@ -164,6 +164,7 @@ CommonBuilder.13=can not clean programmatically: build folder is not accessible
CommonBuilder.22=Building referenced configurations..
CommonBuilder.23=Buildfile generation error occurred..
CommonBuilder.24=Build stopped..
+CommonBuilder.circular_dependency=Circular dependency detected in "Project Properties -> C/C++ General -> Path and Symbols -> References tab" for project {0} <{1}>. Build of dependency aborted to prevent infinite cyclic build.
ParallelBuilder.missingOutDir=Failed to create output directory {0}
MakeBuilder.buildError=
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ResourceConfiguration.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ResourceConfiguration.java
index 74ce5b7a7a7..5ee7e6c027a 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ResourceConfiguration.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ResourceConfiguration.java
@@ -918,6 +918,7 @@ public class ResourceConfiguration extends ResourceInfo implements IFileInfo {
return list.toArray(new BuildLanguageData[list.size()]);
}
+ @Override
public IToolChain getBaseToolChain() {
ITool tools[] = getToolsToInvoke();
ITool baseTool = null;
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Tool.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Tool.java
index 894a6c9eea6..9b01d256fa6 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Tool.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Tool.java
@@ -65,6 +65,7 @@ import org.eclipse.cdt.managedbuilder.core.ITool;
import org.eclipse.cdt.managedbuilder.core.IToolChain;
import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
import org.eclipse.cdt.managedbuilder.core.ManagedBuilderCorePlugin;
+import org.eclipse.cdt.managedbuilder.core.ManagedCommandLineGenerator;
import org.eclipse.cdt.managedbuilder.internal.dataprovider.BuildEntryStorage;
import org.eclipse.cdt.managedbuilder.internal.dataprovider.BuildLanguageData;
import org.eclipse.cdt.managedbuilder.internal.enablement.OptionEnablementExpression;
@@ -73,6 +74,8 @@ import org.eclipse.cdt.managedbuilder.internal.macros.BuildfileMacroSubstitutor;
import org.eclipse.cdt.managedbuilder.internal.macros.FileContextData;
import org.eclipse.cdt.managedbuilder.internal.macros.IMacroContextInfo;
import org.eclipse.cdt.managedbuilder.internal.macros.IMacroContextInfoProvider;
+import org.eclipse.cdt.managedbuilder.internal.macros.OptionContextData;
+import org.eclipse.cdt.managedbuilder.macros.BuildMacroException;
import org.eclipse.cdt.managedbuilder.macros.IBuildMacroProvider;
import org.eclipse.cdt.managedbuilder.makegen.IManagedDependencyGenerator;
import org.eclipse.cdt.managedbuilder.makegen.IManagedDependencyGeneratorType;
@@ -102,7 +105,7 @@ import org.osgi.framework.Version;
public class Tool extends HoldsOptions
implements ITool, IOptionCategory, IMatchKeyProvider<Tool>, IRealBuildObjectAssociation {
- public static final String DEFAULT_PATTERN = "${COMMAND} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}"; //$NON-NLS-1$
+ public static final String DEFAULT_PATTERN = "${COMMAND} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS} ${EXTRA_FLAGS}"; //$NON-NLS-1$
public static final String DEFAULT_CBS_PATTERN = "${COMMAND}"; //$NON-NLS-1$
//property name for holding the rebuild state
@@ -2190,7 +2193,7 @@ public class Tool extends HoldsOptions
} catch (CoreException e) {
}
}
- return ManagedCommandLineGenerator.getCommandLineGenerator();
+ return new ManagedCommandLineGenerator();
}
/* (non-Javadoc)
@@ -2655,15 +2658,37 @@ public class Tool extends HoldsOptions
boolean generateDefaultCommand = true;
IOptionCommandGenerator commandGenerator = option.getCommandGenerator();
if (commandGenerator != null) {
- IMacroContextInfo info = provider.getMacroContextInfo(BuildMacroProvider.CONTEXT_FILE,
- new FileContextData(inputFileLocation, outputFileLocation, option, this));
- if (info != null) {
- macroSubstitutor.setMacroContextInfo(info);
- String command = commandGenerator.generateCommand(option, macroSubstitutor);
- if (command != null) {
- sb.append(command);
- generateDefaultCommand = false;
+ switch (option.getValueType()) {
+ case IOption.BOOLEAN:
+ case IOption.ENUMERATED:
+ case IOption.TREE:
+ case IOption.STRING:
+ case IOption.STRING_LIST:
+ case IOption.INCLUDE_FILES:
+ case IOption.INCLUDE_PATH:
+ case IOption.LIBRARY_PATHS:
+ case IOption.LIBRARY_FILES:
+ case IOption.MACRO_FILES:
+ case IOption.UNDEF_INCLUDE_FILES:
+ case IOption.UNDEF_INCLUDE_PATH:
+ case IOption.UNDEF_LIBRARY_PATHS:
+ case IOption.UNDEF_LIBRARY_FILES:
+ case IOption.UNDEF_MACRO_FILES:
+ case IOption.PREPROCESSOR_SYMBOLS:
+ case IOption.UNDEF_PREPROCESSOR_SYMBOLS:
+ IMacroContextInfo info = provider.getMacroContextInfo(BuildMacroProvider.CONTEXT_FILE,
+ new FileContextData(inputFileLocation, outputFileLocation, option, this));
+ if (info != null) {
+ macroSubstitutor.setMacroContextInfo(info);
+ String command = commandGenerator.generateCommand(option, macroSubstitutor);
+ if (command != null) {
+ sb.append(command);
+ generateDefaultCommand = false;
+ }
}
+ break;
+ default:
+ break;
}
}
if (generateDefaultCommand) {
@@ -4228,4 +4253,102 @@ public class Tool extends HoldsOptions
// Tool does not have any ApplicabilityCalculator.
return null;
}
+
+ @Override
+ public String[] getExtraFlags(int optionType) {
+ if (optionType != IOption.LIBRARIES && optionType != IOption.OBJECTS) {
+ // Early exit to avoid performance penalty
+ return new String[0];
+ }
+
+ Vector<String> flags = new Vector<>();
+ for (IOption option : getOptions()) {
+ try {
+ if (option.getValueType() != optionType) {
+ continue;
+ }
+
+ // check to see if the option has an applicability calculator
+ IOptionApplicability applicabilityCalculator = option.getApplicabilityCalculator();
+
+ if (applicabilityCalculator == null
+ || applicabilityCalculator.isOptionUsedInCommandLine(this, this, option)) {
+ boolean generateDefaultCommand = true;
+ IOptionCommandGenerator commandGenerator = option.getCommandGenerator();
+ if (commandGenerator != null) {
+ SupplierBasedCdtVariableSubstitutor macroSubstitutor = new BuildfileMacroSubstitutor(null,
+ EMPTY_STRING, WHITE_SPACE);
+ IMacroContextInfoProvider provider = BuildMacroProvider.getDefault();
+ IMacroContextInfo info = provider.getMacroContextInfo(BuildMacroProvider.CONTEXT_OPTION,
+ new OptionContextData(option, this));
+ if (info != null) {
+ macroSubstitutor.setMacroContextInfo(info);
+ String command = commandGenerator.generateCommand(option, macroSubstitutor);
+ if (command != null) {
+ flags.add(command);
+ generateDefaultCommand = false;
+ }
+ }
+ }
+
+ if (generateDefaultCommand) {
+ switch (optionType) {
+ case IOption.LIBRARIES: {
+ String command = option.getCommand();
+ String[] libs = option.getLibraries();
+ for (String lib : libs) {
+ try {
+ String resolved[] = ManagedBuildManager.getBuildMacroProvider()
+ .resolveStringListValueToMakefileFormat(lib, " ", //$NON-NLS-1$
+ " ", //$NON-NLS-1$
+ IBuildMacroProvider.CONTEXT_OPTION,
+ new OptionContextData(option, this));
+ if (resolved != null && resolved.length > 0) {
+ for (String string : resolved) {
+ if (!string.isEmpty()) {
+ flags.add(command + string);
+ }
+ }
+ }
+ } catch (BuildMacroException e) {
+ // TODO: report error
+ continue;
+ }
+ }
+ break;
+ }
+ case IOption.OBJECTS: {
+ String userObjs[] = option.getUserObjects();
+ if (userObjs != null && userObjs.length > 0) {
+ for (String userObj : userObjs) {
+ try {
+ String resolved[] = ManagedBuildManager.getBuildMacroProvider()
+ .resolveStringListValueToMakefileFormat(userObj, "", //$NON-NLS-1$
+ " ", //$NON-NLS-1$
+ IBuildMacroProvider.CONTEXT_OPTION,
+ new OptionContextData(option, this));
+ if (resolved != null && resolved.length > 0) {
+ flags.addAll(Arrays.asList(resolved));
+ }
+ } catch (BuildMacroException e) {
+ // TODO: report error
+ continue;
+ }
+ }
+ }
+ break;
+ }
+ default:
+ // Cannot happen
+ break;
+ }
+ }
+ }
+ } catch (BuildException | CdtVariableException e) {
+ // TODO: report error
+ continue;
+ }
+ }
+ return flags.toArray(new String[flags.size()]);
+ }
}
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ToolChain.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ToolChain.java
index 523dca4c776..c2f09859f11 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ToolChain.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ToolChain.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004, 2016 Intel Corporation and others.
+ * Copyright (c) 2004, 2020 Intel Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -22,6 +22,7 @@ import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.Set;
import java.util.SortedMap;
import java.util.StringTokenizer;
@@ -2646,7 +2647,7 @@ public class ToolChain extends HoldsOptions
}
void setUnusedChildren(String children) {
- if (CDataUtil.objectsEqual(unusedChildren, children))
+ if (Objects.equals(unusedChildren, children))
return;
unusedChildrenSet = null;
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/dataprovider/BuildLanguageData.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/dataprovider/BuildLanguageData.java
index 9e4d91da569..68a0133508d 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/dataprovider/BuildLanguageData.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/dataprovider/BuildLanguageData.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2016 Intel Corporation and others.
+ * Copyright (c) 2007, 2020 Intel Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -18,6 +18,7 @@ import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry;
import org.eclipse.cdt.core.settings.model.extension.CLanguageData;
@@ -145,7 +146,6 @@ public class BuildLanguageData extends CLanguageData {
optValue = buf.toString();
}
return optValue;
-
}
*/
@Override
@@ -316,13 +316,12 @@ public class BuildLanguageData extends CLanguageData {
/* private IOption[] getOptionsForType(int type){
Map map = getTypeToOptionArrayMap();
return (IOption[])map.get(Integer.valueOf(type));
-
}
*/
@Override
public void setLanguageId(String id) {
- if (CDataUtil.objectsEqual(id, fInputType.getLanguageId(fTool))) {
+ if (Objects.equals(id, fInputType.getLanguageId(fTool))) {
// fInputType = fTool.getEdtableInputType(fInputType);
obtainEditableInputType();
fInputType.setLanguageIdAttribute(id);
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/dataprovider/ConfigurationDataProvider.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/dataprovider/ConfigurationDataProvider.java
index 33203750cc5..37b4064c516 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/dataprovider/ConfigurationDataProvider.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/dataprovider/ConfigurationDataProvider.java
@@ -355,7 +355,6 @@ public class ConfigurationDataProvider extends CConfigurationDataProvider implem
}
}
} catch (CoreException e) {
- mProj = null;
}
if (mProj == null) {
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/dataprovider/DataProviderMessages.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/dataprovider/DataProviderMessages.java
index 372edb43ed4..cb747980a31 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/dataprovider/DataProviderMessages.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/dataprovider/DataProviderMessages.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2011 Intel Corporation and others.
+ * Copyright (c) 2007, 2020 Intel Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -10,14 +10,14 @@
*
* Contributors:
* Intel Corporation - Initial API and implementation
+ * Sergei Kovalchuk (NXP)
*******************************************************************************/
package org.eclipse.cdt.managedbuilder.internal.dataprovider;
+import java.text.MessageFormat;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
-import com.ibm.icu.text.MessageFormat;
-
public class DataProviderMessages {
private static final String BUNDLE_NAME = "org.eclipse.cdt.managedbuilder.internal.dataprovider.DataProviderMessages"; //$NON-NLS-1$
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/envvar/EnvironmentVariableProvider.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/envvar/EnvironmentVariableProvider.java
index 6b84144f62c..0fee0afb75f 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/envvar/EnvironmentVariableProvider.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/envvar/EnvironmentVariableProvider.java
@@ -180,11 +180,6 @@ public class EnvironmentVariableProvider implements IEnvironmentVariableProvider
}
@Override
- public boolean isVariableCaseSensitive() {
- return fMngr.isVariableCaseSensitive();
- }
-
- @Override
public IEnvironmentVariableSupplier[] getSuppliers(Object level) {
return null;
}
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/envvar/StoredBuildPathEnvironmentContainer.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/envvar/StoredBuildPathEnvironmentContainer.java
index 4e18abf35da..bdcca87afb1 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/envvar/StoredBuildPathEnvironmentContainer.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/envvar/StoredBuildPathEnvironmentContainer.java
@@ -23,7 +23,6 @@ import org.eclipse.cdt.internal.core.envvar.EnvVarDescriptor;
import org.eclipse.cdt.managedbuilder.core.IConfiguration;
import org.eclipse.cdt.managedbuilder.core.IEnvVarBuildPath;
import org.eclipse.cdt.managedbuilder.core.ITool;
-import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
import org.eclipse.cdt.managedbuilder.core.ManagedBuilderCorePlugin;
import org.eclipse.cdt.managedbuilder.envvar.IBuildEnvironmentVariable;
import org.eclipse.cdt.utils.envvar.StorableEnvironment;
@@ -49,8 +48,6 @@ public class StoredBuildPathEnvironmentContainer extends StorableEnvironmentLoad
private IConfiguration fConfiguration;
private StorableEnvironment fEnvironment;
private int fPathType;
- private boolean fIsVariableCaseSensitive = ManagedBuildManager.getEnvironmentVariableProvider()
- .isVariableCaseSensitive();
public StoredBuildPathEnvironmentContainer(int pathType) {
fPathType = pathType == IEnvVarBuildPath.BUILDPATH_LIBRARY ? IEnvVarBuildPath.BUILDPATH_LIBRARY
@@ -190,7 +187,7 @@ public class StoredBuildPathEnvironmentContainer extends StorableEnvironmentLoad
* returns true if the variable names are equal and false otherwise
*/
private boolean varNamesEqual(String name1, String name2) {
- return fIsVariableCaseSensitive ? name1.equals(name2) : name1.equalsIgnoreCase(name2);
+ return name1.equals(name2);
}
/* (non-Javadoc)
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/language/settings/providers/CompilationDatabaseParser.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/language/settings/providers/CompilationDatabaseParser.java
index e8c1e8a4a1c..c543ae5a19e 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/language/settings/providers/CompilationDatabaseParser.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/language/settings/providers/CompilationDatabaseParser.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2019 Marc-Andre Laperle.
+ * Copyright (c) 2019, 2020 Marc-Andre Laperle and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -7,6 +7,10 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Marc-Andre Laperle - Initial API and implementation
+ * Sergei Kovalchuk (NXP)
*******************************************************************************/
package org.eclipse.cdt.managedbuilder.internal.language.settings.providers;
@@ -17,10 +21,14 @@ import java.net.URI;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.attribute.FileTime;
+import java.text.MessageFormat;
+import java.util.ArrayList;
import java.util.List;
import java.util.Set;
+import java.util.Stack;
import org.eclipse.cdt.core.CCorePlugin;
+import org.eclipse.cdt.core.cdtvariables.ICdtVariableManager;
import org.eclipse.cdt.core.language.settings.providers.ICListenerAgent;
import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsEditableProvider;
import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsProvider;
@@ -57,7 +65,6 @@ import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.SubMonitor;
import com.google.gson.Gson;
-import com.ibm.icu.text.MessageFormat;
/**
* This language settings provider takes a compile_commands.json file as input (aka, Compilation Database or CDB) and parses the commands
@@ -77,12 +84,32 @@ public class CompilationDatabaseParser extends LanguageSettingsSerializableProvi
private static final String ATTR_CDB_MODIFIED_TIME = "cdb-modified-time"; //$NON-NLS-1$
private static final String ATTR_EXCLUDE_FILES = "exclude-files"; //$NON-NLS-1$
- public IPath getCompilationDataBasePath() {
- return Path.fromOSString(getProperty(ATTR_CDB_PATH));
+ public String getCompilationDataBasePathProperty() {
+ return getProperty(ATTR_CDB_PATH);
+ }
+
+ /**
+ * Resolve the compilation database path property by expanding variables (if any) and check that the file exists and is readable.
+ *
+ * @param cfgDescription the configuration description used to resolved variables that depend on it
+ * @return the resolved, readable path of the compilation database
+ * @throws CoreException On failure to resolve variables or non readable path
+ */
+ public String resolveCompilationDataBasePath(ICConfigurationDescription cfgDescription) throws CoreException {
+ ICdtVariableManager varManager = CCorePlugin.getDefault().getCdtVariableManager();
+ String compilationDataBasePath = varManager.resolveValue(getCompilationDataBasePathProperty(), "", null, //$NON-NLS-1$
+ cfgDescription);
+
+ if (Files.isDirectory(Paths.get(compilationDataBasePath))
+ || !Files.isReadable(Paths.get(compilationDataBasePath)))
+ throw new CoreException(new Status(Status.ERROR, ManagedBuilderCorePlugin.PLUGIN_ID, MessageFormat
+ .format(Messages.CompilationDatabaseParser_CDBNotFound, getCompilationDataBasePathProperty())));
+
+ return compilationDataBasePath;
}
- public void setCompilationDataBasePath(IPath compilationDataBasePath) {
- setProperty(ATTR_CDB_PATH, compilationDataBasePath.toOSString());
+ public void setCompilationDataBasePathProperty(String compilationDataBasePathProperty) {
+ setProperty(ATTR_CDB_PATH, compilationDataBasePathProperty);
}
public void setExcludeFiles(boolean selection) {
@@ -106,39 +133,39 @@ public class CompilationDatabaseParser extends LanguageSettingsSerializableProvi
return lastModifiedTime.toMillis();
}
- // Wanted to use this as a base to also count the number of translation unit
- // for the progress monitor but it's too slow so only use it to exclude for now.
- private abstract class SourceFilesVisitor implements ICElementVisitor {
- @Override
- public boolean visit(ICElement element) throws CoreException {
- int elementType = element.getElementType();
- if (elementType != ICElement.C_UNIT) {
- return elementType == ICElement.C_CCONTAINER || elementType == ICElement.C_PROJECT;
- }
-
- ITranslationUnit tu = (ITranslationUnit) element;
- if (tu.isSourceUnit()) {
- handleTranslationUnit(tu);
- }
- return false;
- }
-
- abstract void handleTranslationUnit(ITranslationUnit tu) throws CoreException;
- }
-
- private final class ExcludeSourceFilesVisitor extends SourceFilesVisitor {
+ /**
+ * Visit all folders and exclude all files that do not have entries coming from the CDB.
+ * The algorithm detects when whole folders can be excluded to prevent a large number of
+ * individual file exclusions.
+ */
+ private final class ExcludeSourceFilesVisitor implements ICElementVisitor {
private final ICConfigurationDescription cfgDescription;
ICSourceEntry[] entries = null;
private final IProgressMonitor monitor;
private final int sourceFilesCount;
private int nbChecked = 0;
+ // Keep track of excluded files and folders as we visit each folder in a depth-first manner.
+ private Stack<FolderExclusionInfo> folderExclusionInfos = new Stack<>();
+
+ private class FolderExclusionInfo {
+ // In case not all files are excluded in this folder, we need to keep track of which folders we'll exclude individually.
+ private ArrayList<IPath> childrenFoldersWithAllFilesExcluded = new ArrayList<>();
+ // In case not all files are excluded in this folder, we need to keep track of which files we'll exclude individually.
+ private ArrayList<IPath> excludedSourceFiles = new ArrayList<>();
+ // True if all children of the folder are excluded, recursively.
+ // Children folders can set this to false on their parent when non-excluded files are detected.
+ // Therefore, this value is reliable only when all children are visited.
+ private boolean allFilesExcluded = true;
+ }
+
//Note: monitor already has ticks allocated for number of source files (not considering exclusions though)
private ExcludeSourceFilesVisitor(IProgressMonitor monitor, int sourceFilesCount,
ICConfigurationDescription cfgDescription) {
this.monitor = monitor;
this.sourceFilesCount = sourceFilesCount;
this.cfgDescription = cfgDescription;
+ this.entries = cfgDescription.getSourceEntries();
}
public ICSourceEntry[] getSourceEntries() {
@@ -146,18 +173,33 @@ public class CompilationDatabaseParser extends LanguageSettingsSerializableProvi
}
@Override
- void handleTranslationUnit(ITranslationUnit tu) throws CoreException {
- boolean isExcluded = CDataUtil.isExcluded(tu.getPath(), cfgDescription.getSourceEntries());
- if (!isExcluded) {
- List<ICLanguageSettingEntry> list = getSettingEntries(cfgDescription, tu.getResource(),
- tu.getLanguage().getId());
- if (list == null) {
- if (entries == null) {
- entries = cfgDescription.getSourceEntries();
- }
- entries = CDataUtil.setExcluded(tu.getResource().getFullPath(), false, true, entries);
+ public boolean visit(ICElement element) throws CoreException {
+ int elementType = element.getElementType();
+ if (elementType != ICElement.C_UNIT) {
+ boolean isSourceContainer = elementType == ICElement.C_CCONTAINER || elementType == ICElement.C_PROJECT;
+ if (isSourceContainer) {
+ folderExclusionInfos.push(new FolderExclusionInfo());
}
+ return isSourceContainer;
+ }
+
+ ITranslationUnit tu = (ITranslationUnit) element;
+ if (tu.isSourceUnit()) {
+ handleTranslationUnit(tu);
+ }
+ return false;
+ }
+
+ private void handleTranslationUnit(ITranslationUnit tu) throws CoreException {
+ FolderExclusionInfo folderInfo = folderExclusionInfos.peek();
+ List<ICLanguageSettingEntry> list = getSettingEntries(cfgDescription, tu.getResource(),
+ tu.getLanguage().getId());
+ if (list == null) {
+ folderInfo.excludedSourceFiles.add(tu.getResource().getFullPath());
+ } else {
+ folderInfo.allFilesExcluded = false;
}
+
monitor.worked(1);
if (nbChecked % 100 == 0) {
monitor.subTask(String.format(Messages.CompilationDatabaseParser_ProgressExcludingFiles, nbChecked,
@@ -165,6 +207,35 @@ public class CompilationDatabaseParser extends LanguageSettingsSerializableProvi
}
nbChecked++;
}
+
+ @Override
+ public void leave(ICElement element) throws CoreException {
+ int elementType = element.getElementType();
+ if (elementType == ICElement.C_CCONTAINER || elementType == ICElement.C_PROJECT) {
+
+ FolderExclusionInfo folderInfo = folderExclusionInfos.pop();
+
+ if (folderInfo.allFilesExcluded && !folderExclusionInfos.isEmpty()) {
+ // Consider this folder for exclusion later, maybe the parent will also be excluded
+ folderExclusionInfos.peek().childrenFoldersWithAllFilesExcluded.add(element.getPath());
+ } else {
+ if (!folderExclusionInfos.isEmpty()) {
+ folderExclusionInfos.peek().allFilesExcluded = false;
+ }
+
+ // Exclude all children folders previously considered for exclusion, since the parent
+ // (the currently visited element) cannot be excluded, we have to exclude them individually.
+ for (IPath excludedFolder : folderInfo.childrenFoldersWithAllFilesExcluded) {
+ entries = CDataUtil.setExcluded(excludedFolder, true, true, entries);
+ }
+
+ // Exclude all direct children files that need to be excluded.
+ for (IPath excludedFile : folderInfo.excludedSourceFiles) {
+ entries = CDataUtil.setExcluded(excludedFile, false, true, entries);
+ }
+ }
+ }
+ }
}
private static class CDBWorkingDirectoryTracker implements IWorkingDirectoryTracker {
@@ -206,19 +277,19 @@ public class CompilationDatabaseParser extends LanguageSettingsSerializableProvi
return false;
}
- if (getCompilationDataBasePath().isEmpty()) {
+ if (!cfgDescription.equals(cfgDescription.getProjectDescription().getDefaultSettingConfiguration()))
+ return false;
+
+ if (getCompilationDataBasePathProperty().isEmpty()) {
throw new CoreException(new Status(Status.ERROR, ManagedBuilderCorePlugin.PLUGIN_ID,
Messages.CompilationDatabaseParser_CDBNotConfigured));
}
- if (!Files.exists(Paths.get(getCompilationDataBasePath().toOSString()))) {
- throw new CoreException(new Status(Status.ERROR, ManagedBuilderCorePlugin.PLUGIN_ID, MessageFormat.format(
- Messages.CompilationDatabaseParser_CDBNotFound, getCompilationDataBasePath().toOSString())));
- }
+ String cdbPath = resolveCompilationDataBasePath(cfgDescription);
try {
- if (!getProperty(ATTR_CDB_MODIFIED_TIME).isEmpty() && getProperty(ATTR_CDB_MODIFIED_TIME)
- .equals(getCDBModifiedTime(getCompilationDataBasePath().toOSString()).toString())) {
+ if (!getProperty(ATTR_CDB_MODIFIED_TIME).isEmpty()
+ && getProperty(ATTR_CDB_MODIFIED_TIME).equals(getCDBModifiedTime(cdbPath).toString())) {
return false;
}
} catch (IOException e) {
@@ -228,14 +299,12 @@ public class CompilationDatabaseParser extends LanguageSettingsSerializableProvi
if (getBuildParserId().isEmpty()) {
throw new CoreException(new Status(Status.ERROR, ManagedBuilderCorePlugin.PLUGIN_ID,
- MessageFormat.format(Messages.CompilationDatabaseParser_BuildCommandParserNotConfigured,
- getCompilationDataBasePath().toOSString())));
+ MessageFormat.format(Messages.CompilationDatabaseParser_BuildCommandParserNotConfigured, cdbPath)));
}
if (!isEmpty()) {
clear();
}
- String cdbPath = getCompilationDataBasePath().toOSString();
Long cdbModifiedTime;
try {
cdbModifiedTime = getCDBModifiedTime(cdbPath);
@@ -260,6 +329,12 @@ public class CompilationDatabaseParser extends LanguageSettingsSerializableProvi
Messages.CompilationDatabaseParser_ErrorProcessingCompilationDatabase, e));
}
+ if (compileCommands == null) {
+ throw new CoreException(new Status(Status.ERROR, ManagedBuilderCorePlugin.PLUGIN_ID,
+ Messages.CompilationDatabaseParser_ErrorProcessingCompilationDatabase,
+ new NullPointerException(Messages.CompilationDatabaseParser_StillNull)));
+ }
+
AbstractBuildCommandParser outputParser;
try {
outputParser = getBuildCommandParser(cfgDescription, getBuildParserId());
@@ -289,7 +364,12 @@ public class CompilationDatabaseParser extends LanguageSettingsSerializableProvi
}
}
- outputParser.processLine(c.getCommand());
+ String command = c.getCommand();
+ if (command != null) {
+ outputParser.processLine(command);
+ } else if (c.getArguments() != null) {
+ outputParser.processLine(String.join(" ", c.getArguments())); //$NON-NLS-1$
+ }
parseCmdsMonitor.worked(1);
}
LanguageSettingsStorage storage = outputParser.copyStorage();
@@ -327,6 +407,11 @@ public class CompilationDatabaseParser extends LanguageSettingsSerializableProvi
// saved that is not stored in the project description (i.e. calls to setProperties) will be saved to the wrong instance so when we call setProjectDescription, our changes will be ignored.
// So instead, restart the whole thing with the corresponding CompilationDatabaseParser instance in the writable config.
IProject project = cfgDescription.getProjectDescription().getProject();
+ if (!project.isAccessible()) {
+ // Project was probably closed while the job was waiting to start.
+ return Status.CANCEL_STATUS;
+ }
+
ICProjectDescription projectDescription = CCorePlugin.getDefault().getCoreModel()
.getProjectDescription(project.getProject(), true);
ICConfigurationDescription writableCfg = projectDescription
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/language/settings/providers/CompileCommand.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/language/settings/providers/CompileCommand.java
index 3675d94dc07..fa58863dee4 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/language/settings/providers/CompileCommand.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/language/settings/providers/CompileCommand.java
@@ -18,6 +18,7 @@ public class CompileCommand {
public String directory;
public String command;
public String file;
+ public String[] arguments;
public String getDirectory() {
return directory;
@@ -31,4 +32,7 @@ public class CompileCommand {
return file;
}
+ public String[] getArguments() {
+ return arguments;
+ }
}
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/language/settings/providers/Messages.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/language/settings/providers/Messages.java
index 1a15eaff8f6..9eb07ef9370 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/language/settings/providers/Messages.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/language/settings/providers/Messages.java
@@ -27,6 +27,8 @@ public class Messages extends NLS {
public static String CompilationDatabaseParser_ProgressParsingBuildCommands;
public static String CompilationDatabaseParser_ProgressParsingJSONFile;
+ public static String CompilationDatabaseParser_StillNull;
+
static {
// initialize resource bundle
NLS.initializeMessages(BUNDLE_NAME, Messages.class);
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/language/settings/providers/messages.properties b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/language/settings/providers/messages.properties
index f5b2a80d63b..bf4d06bd974 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/language/settings/providers/messages.properties
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/language/settings/providers/messages.properties
@@ -18,4 +18,5 @@ CompilationDatabaseParser_Job=Discover Compilation Database language settings
CompilationDatabaseParser_ProgressApplyingEntries=Applying language setting entries
CompilationDatabaseParser_ProgressExcludingFiles=Excluding files not in compilation database. Checking %d/%d (Estimate)
CompilationDatabaseParser_ProgressParsingBuildCommands=Parsing build commands (%d/%d)
-CompilationDatabaseParser_ProgressParsingJSONFile=Parsing JSON file \ No newline at end of file
+CompilationDatabaseParser_ProgressParsingJSONFile=Parsing JSON file
+CompilationDatabaseParser_StillNull=Compilation database (usually compile_commands.json) appears to be empty
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/macros/BuildfileMacroSubstitutor.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/macros/BuildfileMacroSubstitutor.java
index a937b15f0e4..8b2c7359f51 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/macros/BuildfileMacroSubstitutor.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/macros/BuildfileMacroSubstitutor.java
@@ -53,7 +53,6 @@ public class BuildfileMacroSubstitutor extends SupplierBasedCdtVariableSubstitut
private static final String PATTERN_MACRO_NAME = "="; //$NON-NLS-1$
private IConfiguration fConfiguration;
private IBuilder fBuilder;
- private HashSet<String> fCaseInsensitiveReferencedNames;
private ICdtVariableManager fVarMngr;
private ICConfigurationDescription fCfgDes;
@@ -257,26 +256,16 @@ public class BuildfileMacroSubstitutor extends SupplierBasedCdtVariableSubstitut
String macroName = macro.getName();
String ref = null;
IReservedMacroNameSupplier supplier = getReservedMacroNameSupplier();
- //on win32 all environment variable names are converted to upper case
macroName = EnvVarOperationProcessor.normalizeName(macroName);
if (supplier == null || !supplier.isReservedName(macroName, fConfiguration)) {
String pattern = fBuilder.getBuilderVariablePattern();
if (pattern != null && pattern.indexOf(PATTERN_MACRO_NAME) != -1) {
- if (fBuilder.isVariableCaseSensitive()
- || getCaseInsensitiveReferencedNames().add(macroName.toUpperCase())) {
- ref = pattern.replaceAll(PATTERN_MACRO_NAME, macroName);
- }
+ ref = pattern.replaceAll(PATTERN_MACRO_NAME, macroName);
}
}
return ref;
}
- protected Set<String> getCaseInsensitiveReferencedNames() {
- if (fCaseInsensitiveReferencedNames == null)
- fCaseInsensitiveReferencedNames = new HashSet<>();
- return fCaseInsensitiveReferencedNames;
- }
-
/* (non-Javadoc)
* @see org.eclipse.cdt.managedbuilder.internal.macros.DefaultMacroSubstitutor#setMacroContextInfo(org.eclipse.cdt.managedbuilder.internal.macros.IMacroContextInfo)
*/
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/macros/MbsMacroSupplier.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/macros/MbsMacroSupplier.java
index 2872e375c94..ae90cf4a416 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/macros/MbsMacroSupplier.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/macros/MbsMacroSupplier.java
@@ -39,11 +39,11 @@ import org.eclipse.cdt.managedbuilder.macros.IBuildMacroProvider;
import org.eclipse.cdt.managedbuilder.macros.IFileContextBuildMacroValues;
import org.eclipse.cdt.managedbuilder.macros.IFileContextData;
import org.eclipse.cdt.managedbuilder.macros.IOptionContextData;
-import org.eclipse.cdt.utils.Platform;
import org.eclipse.cdt.utils.cdtvariables.CdtVariableResolver;
import org.eclipse.cdt.utils.cdtvariables.IVariableSubstitutor;
import org.eclipse.core.resources.IWorkspace;
import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Platform;
import org.osgi.framework.Bundle;
import org.osgi.framework.Version;
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/scannerconfig/ManagedBuildCPathEntryContainer.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/scannerconfig/ManagedBuildCPathEntryContainer.java
index f79826aaf91..2850c816fcb 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/scannerconfig/ManagedBuildCPathEntryContainer.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/scannerconfig/ManagedBuildCPathEntryContainer.java
@@ -21,6 +21,7 @@ import java.util.Set;
import java.util.Vector;
import org.eclipse.cdt.build.internal.core.scannerconfig2.CfgScannerConfigProfileManager;
+import org.eclipse.cdt.core.envvar.IEnvironmentVariable;
import org.eclipse.cdt.core.model.CoreModel;
import org.eclipse.cdt.core.model.IMacroEntry;
import org.eclipse.cdt.core.model.IPathEntry;
@@ -36,7 +37,6 @@ import org.eclipse.cdt.managedbuilder.core.IManagedBuildInfo;
import org.eclipse.cdt.managedbuilder.core.ITarget;
import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
import org.eclipse.cdt.managedbuilder.core.ManagedBuilderCorePlugin;
-import org.eclipse.cdt.managedbuilder.envvar.IBuildEnvironmentVariable;
import org.eclipse.cdt.managedbuilder.internal.core.ManagedBuildInfo;
import org.eclipse.cdt.managedbuilder.scannerconfig.IManagedScannerInfoCollector;
import org.eclipse.core.resources.IProject;
@@ -147,8 +147,8 @@ public class ManagedBuildCPathEntryContainer implements IPathEntryContainer {
IProgressMonitor monitor = new NullProgressMonitor();
IManagedBuildInfo info = ManagedBuildManager.getBuildInfo(project);
IConfiguration config = info.getDefaultConfiguration();
- IBuildEnvironmentVariable[] vars = ManagedBuildManager.getEnvironmentVariableProvider()
- .getVariables(config, true, true);
+ IEnvironmentVariable[] vars = ManagedBuildManager.getEnvironmentVariableProvider()
+ .getVariables(config, true);
Properties env = new Properties();
if (vars != null)
for (int i = 0; i < vars.length; ++i)
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/language/settings/providers/AbstractBuiltinSpecsDetector.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/language/settings/providers/AbstractBuiltinSpecsDetector.java
index c06d5a17c0c..507f5c6cce7 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/language/settings/providers/AbstractBuiltinSpecsDetector.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/language/settings/providers/AbstractBuiltinSpecsDetector.java
@@ -26,6 +26,7 @@ import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
+import java.util.Optional;
import java.util.Set;
import org.eclipse.cdt.core.CCorePlugin;
@@ -776,9 +777,6 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
Map<String, String> envMap = new HashMap<>();
for (IEnvironmentVariable var : getEnvironmentVariables()) {
String name = var.getName();
- if (!envMngr.isVariableCaseSensitive()) {
- name = name.toUpperCase();
- }
envMap.put(name, var.getValue());
}
return envMap;
@@ -894,23 +892,41 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
* @return file extension associated with the language or {@code null} if not found.
*/
protected String getSpecFileExtension(String languageId) {
- String ext = null;
+ Optional<String> extension = Optional.empty();
ILanguageDescriptor langDescriptor = LanguageManager.getInstance().getLanguageDescriptor(languageId);
if (langDescriptor != null) {
IContentType[] contentTypes = langDescriptor.getContentTypes();
if (contentTypes != null && contentTypes.length > 0) {
String[] fileExtensions = contentTypes[0].getFileSpecs(IContentType.FILE_EXTENSION_SPEC);
- if (fileExtensions != null && fileExtensions.length > 0) {
- ext = fileExtensions[0];
+ if (fileExtensions != null) {
+ List<String> extensions = Arrays.asList(fileExtensions);
+ extension = selectBestSpecFileExtension(extensions);
}
}
}
- if (ext == null) {
+ if (!extension.isPresent()) {
ManagedBuilderCorePlugin.log(new Status(IStatus.ERROR, ManagedBuilderCorePlugin.PLUGIN_ID,
"Unable to find file extension for language " + languageId)); //$NON-NLS-1$
+ return null;
}
- return ext;
+ return extension.get();
+ }
+
+ /**
+ * Return the best extension to use for calculating spec file from a list of extensions.
+ * @param extensions list of possible extensions to choose from
+ * @return one of the extensions deemed the best one to use from the list
+ * @since 9.0
+ */
+ protected Optional<String> selectBestSpecFileExtension(List<String> extensions) {
+ return extensions.stream().filter(s -> s != null && !s.isEmpty()).findFirst().map(ext -> {
+ // Bug 562452: Special case where we prefer not to use .C for c++ files.
+ if ("C".equals(ext) && extensions.contains("cpp")) { //$NON-NLS-1$//$NON-NLS-2$
+ return "cpp"; //$NON-NLS-1$
+ }
+ return ext;
+ });
}
/**
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/language/settings/providers/AbstractLanguageSettingsOutputScanner.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/language/settings/providers/AbstractLanguageSettingsOutputScanner.java
index 9f1540db227..ac877d93ebb 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/language/settings/providers/AbstractLanguageSettingsOutputScanner.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/language/settings/providers/AbstractLanguageSettingsOutputScanner.java
@@ -19,6 +19,7 @@ import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.List;
@@ -40,12 +41,14 @@ import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry;
import org.eclipse.cdt.core.settings.model.ICSettingEntry;
import org.eclipse.cdt.core.settings.model.util.CDataUtil;
+import org.eclipse.cdt.internal.core.LRUCache;
import org.eclipse.cdt.internal.core.XmlUtil;
import org.eclipse.cdt.managedbuilder.core.ManagedBuilderCorePlugin;
import org.eclipse.cdt.utils.EFSExtensionManager;
import org.eclipse.cdt.utils.cdtvariables.CdtVariableResolver;
import org.eclipse.core.filesystem.EFS;
import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
@@ -89,6 +92,64 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
protected String parsedResourceName = null;
protected boolean isResolvingPaths = true;
+ private static final int FIND_RESOURCES_CACHE_SIZE = 100;
+
+ private LRUCache<URI, IResource[]> workspaceRootFindContainersForLocationURICache = new LRUCache<>(
+ FIND_RESOURCES_CACHE_SIZE);
+ private LRUCache<URI, IResource[]> workspaceRootFindFilesForLocationURICache = new LRUCache<>(
+ FIND_RESOURCES_CACHE_SIZE);
+ private HashMap<IProject, LRUCache<IPath, List<IResource>>> findPathInProjectCache = new HashMap<>();
+
+ //String pathStr, URI baseURI -> URI
+ private static class MappedURIKey {
+ URI baseURI;
+ String pathStr;
+
+ public MappedURIKey(URI baseURI, String pathStr) {
+ super();
+ this.baseURI = baseURI;
+ this.pathStr = pathStr;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((baseURI == null) ? 0 : baseURI.hashCode());
+ result = prime * result + ((pathStr == null) ? 0 : pathStr.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ MappedURIKey other = (MappedURIKey) obj;
+ if (baseURI == null) {
+ if (other.baseURI != null)
+ return false;
+ } else if (!baseURI.equals(other.baseURI))
+ return false;
+ if (pathStr == null) {
+ if (other.pathStr != null)
+ return false;
+ } else if (!pathStr.equals(other.pathStr))
+ return false;
+ return true;
+ }
+ }
+
+ // Caches the result of determineMappedURI
+ private LRUCache<MappedURIKey, URI> mappedURICache = new LRUCache<>(FIND_RESOURCES_CACHE_SIZE);
+ // Caches the result of getFilesystemLocation
+ private LRUCache<URI, IPath> fileSystemLocationCache = new LRUCache<>(FIND_RESOURCES_CACHE_SIZE);
+ // Caches the result of new File(pathname).exists()
+ private LRUCache<IPath, Boolean> pathExistsCache = new LRUCache<>(FIND_RESOURCES_CACHE_SIZE);
+
/** @since 8.2 */
protected EFSExtensionProvider efsProvider = null;
@@ -135,33 +196,66 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
*/
protected static abstract class AbstractOptionParser {
private final int kind;
- private final String patternStr;
private final Pattern pattern;
- private final String nameExpression;
- private final String valueExpression;
private final int extraFlag;
private String parsedName;
private String parsedValue;
+ private final Pattern removeExtraFileNamePattern;
+
+ private static final Pattern numGroupPattern = Pattern.compile("\\$(\\d+)"); //$NON-NLS-1$
+ private final MatcherReplacement nameMatcherReplacement;
+ private final MatcherReplacement valueMatcherReplacement;
/**
* Constructor.
*
* @param kind - kind of language settings entries being parsed by the parser.
* @param pattern - regular expression pattern being parsed by the parser.
- * @param nameExpression - capturing group expression defining name of an entry.
- * @param valueExpression - capturing group expression defining value of an entry.
+ * The pattern may be embedded into another pattern for intermediate
+ * parsing so it is best to avoid using numbered group back-reference e.g. \1
+ * @param nameExpression - capturing group expression (numbered or named) defining name of an entry.
+ * @param valueExpression - capturing group expression (numbered or named) defining value of an entry.
* @param extraFlag - extra-flag to add while creating language settings entry.
*/
public AbstractOptionParser(int kind, String pattern, String nameExpression, String valueExpression,
int extraFlag) {
this.kind = kind;
- this.patternStr = pattern;
- this.nameExpression = nameExpression;
- this.valueExpression = valueExpression;
this.extraFlag = extraFlag;
this.pattern = Pattern.compile(pattern);
+ this.removeExtraFileNamePattern = Pattern.compile("(" + pattern + ").*"); //$NON-NLS-1$ //$NON-NLS-2$
+
+ nameMatcherReplacement = new MatcherReplacement(nameExpression);
+ valueMatcherReplacement = new MatcherReplacement(valueExpression);
+ }
+
+ // Represents a replacement to be applied on a matcher, pre-calculating the group number used in the replacement if possible.
+ private static class MatcherReplacement {
+ private final String replacementExpression;
+ private final int replacementGroupNum;
+
+ private MatcherReplacement(String replacementExpression) {
+ this.replacementExpression = replacementExpression;
+ int groupNum = -1;
+ if (replacementExpression != null) {
+ // If the expression is just a single numbered group reference (the common case), we can predetermine
+ // which group we will need to retrieve on the matcher when we will parse the option string.
+ Matcher numGroupMatcher = numGroupPattern.matcher(replacementExpression);
+ if (numGroupMatcher.matches())
+ groupNum = Integer.parseInt(numGroupMatcher.group(1));
+ }
+ replacementGroupNum = groupNum;
+ }
+
+ private String replace(Matcher matcher) {
+ if (replacementGroupNum != -1)
+ return matcher.group(replacementGroupNum);
+ // The expression is not a simple numbered group, fall-back to normal replacement (slow).
+ if (replacementExpression != null)
+ return matcher.replaceAll(replacementExpression);
+ return null;
+ }
}
/**
@@ -195,15 +289,6 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
}
/**
- * Return value represented by the capturing group expression.
- */
- private String parseStr(Matcher matcher, String str) {
- if (str != null)
- return matcher.replaceAll(str);
- return null;
- }
-
- /**
* Test for a match and parse a portion of input string representing a single option
* to retrieve name and value.
*
@@ -213,14 +298,18 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
*/
public boolean parseOption(String optionString) {
// get rid of extra text at the end (for example file name could be confused for an argument)
- @SuppressWarnings("nls")
- String option = optionString.replaceFirst("(" + patternStr + ").*", "$1");
+ Matcher matcherRemoveExtra = removeExtraFileNamePattern.matcher(optionString);
+ String option = optionString;
+ if (!matcherRemoveExtra.matches()) {
+ return false;
+ }
+ option = matcherRemoveExtra.group(1);
Matcher matcher = pattern.matcher(option);
boolean isMatch = matcher.matches();
if (isMatch) {
- parsedName = parseStr(matcher, nameExpression);
- parsedValue = parseStr(matcher, valueExpression);
+ parsedName = nameMatcherReplacement.replace(matcher);
+ parsedValue = valueMatcherReplacement.replace(matcher);
}
return isMatch;
}
@@ -402,6 +491,20 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
protected abstract AbstractOptionParser[] getOptionParsers();
/**
+ * @return array of option parsers defining how to parse a string to
+ * {@link ICLanguageSettingEntry}.
+ * See {@link AbstractOptionParser} and its specific extenders.
+ *
+ * @param optionToParse the option string to be parsed.
+ * This can be used as a hint in order to return a subset of parsers, for better performance.
+ *
+ * @since 9.1
+ */
+ protected AbstractOptionParser[] getOptionParsers(String optionToParse) {
+ return getOptionParsers();
+ }
+
+ /**
* @return {@code true} when the provider tries to resolve relative or remote paths
* to the existing paths in the workspace or local file-system using certain heuristics.
*/
@@ -438,6 +541,16 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
currentLanguageId = null;
currentResource = null;
cwdTracker = null;
+ clearCaches();
+ }
+
+ private void clearCaches() {
+ workspaceRootFindContainersForLocationURICache.clear();
+ workspaceRootFindFilesForLocationURICache.clear();
+ findPathInProjectCache.clear();
+ mappedURICache.clear();
+ fileSystemLocationCache.clear();
+ pathExistsCache.clear();
}
@Override
@@ -475,8 +588,8 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
List<String> options = parseOptions(line);
if (options != null) {
- AbstractOptionParser[] optionParsers = getOptionParsers();
for (String option : options) {
+ AbstractOptionParser[] optionParsers = getOptionParsers(option);
for (AbstractOptionParser optionParser : optionParsers) {
try {
if (optionParser.parseOption(option)) {
@@ -671,15 +784,16 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
* Find file resource in the workspace for a given URI with a preference for the resource
* to reside in the given project.
*/
- private static IResource findFileForLocationURI(URI uri, IProject preferredProject, boolean checkExistence) {
+ private IResource findFileForLocationURI(URI uri, IProject preferredProject, boolean checkExistence) {
if (!uri.isAbsolute()) {
// IWorkspaceRoot.findFilesForLocationURI(URI) below requires an absolute URI
// therefore we haven't/aren't going to find the file based on this URI.
return null;
}
IResource sourceFile = null;
- IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
- IResource[] resources = root.findFilesForLocationURI(uri);
+
+ IResource[] resources = workspaceRootFindFilesForLocationURICache.computeIfAbsent(uri,
+ key -> ResourcesPlugin.getWorkspace().getRoot().findFilesForLocationURI(key));
for (IResource rc : resources) {
if (!checkExistence || rc.isAccessible()) {
if (rc.getProject().equals(preferredProject)) {
@@ -698,9 +812,11 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
* Return a resource in workspace corresponding the given folder {@link URI} preferable residing in
* the provided project.
*/
- private static IResource findContainerForLocationURI(URI uri, IProject preferredProject, boolean checkExistence) {
+ private IResource findContainerForLocationURI(URI uri, IProject preferredProject, boolean checkExistence) {
IResource resource = null;
- IResource[] resources = ResourcesPlugin.getWorkspace().getRoot().findContainersForLocationURI(uri);
+
+ IResource[] resources = workspaceRootFindContainersForLocationURICache.computeIfAbsent(uri,
+ key -> ResourcesPlugin.getWorkspace().getRoot().findContainersForLocationURI(key));
for (IResource rc : resources) {
if ((rc instanceof IProject || rc instanceof IFolder) && (!checkExistence || rc.isAccessible())) { // treat IWorkspaceRoot as non-workspace path
if (rc.getProject().equals(preferredProject)) {
@@ -731,7 +847,20 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
}
// try to find absolute path in the workspace
- if (sourceFile == null && new Path(parsedResourceName).isAbsolute()) {
+ Path parsedPath = new Path(parsedResourceName);
+ if (sourceFile == null && parsedPath.isAbsolute()) {
+ // It will often happen that the file will be under the project and in the local file system, so check there first.
+ IPath projectLocation = currentProject != null ? currentProject.getLocation() : null;
+ if (projectLocation != null) {
+ IPath relativePath = parsedPath.makeRelativeTo(projectLocation);
+ if (!relativePath.equals(parsedPath)) {
+ IFile file = currentProject.getFile(relativePath);
+ if (file.isAccessible()) {
+ return file;
+ }
+ }
+ }
+
URI uri = org.eclipse.core.filesystem.URIUtil.toURI(parsedResourceName);
sourceFile = findFileForLocationURI(uri, currentProject, /*checkExistence*/ true);
}
@@ -882,34 +1011,45 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
* @return {@link URI} of the resource
*/
private URI determineMappedURI(String pathStr, URI baseURI) {
- URI uri = null;
+ return mappedURICache.computeIfAbsent(new MappedURIKey(baseURI, pathStr), key -> {
+ URI uri = null;
- if (baseURI == null) {
- if (new Path(pathStr).isAbsolute()) {
- uri = resolvePathFromBaseLocation(pathStr, Path.ROOT);
- }
- } else if (baseURI.getScheme().equals(EFS.SCHEME_FILE)) {
- // location on the local file-system
- IPath baseLocation = org.eclipse.core.filesystem.URIUtil.toPath(baseURI);
- // careful not to use Path here but 'pathStr' as String as we want to properly navigate symlinks
- uri = resolvePathFromBaseLocation(pathStr, baseLocation);
- } else {
- // location on a remote file-system
- IPath path = new Path(pathStr); // use canonicalized path here, in particular replace all '\' with '/' for Windows paths
- URI remoteUri = efsProvider.append(baseURI, path.toString());
- if (remoteUri != null) {
- String localPath = efsProvider.getMappedPath(remoteUri);
- if (localPath != null) {
- uri = org.eclipse.core.filesystem.URIUtil.toURI(localPath);
+ if (baseURI == null) {
+ if (new Path(pathStr).isAbsolute()) {
+ uri = resolvePathFromBaseLocation(pathStr, Path.ROOT);
+ }
+ } else if (baseURI.getScheme().equals(EFS.SCHEME_FILE)) {
+ // location on the local file-system
+ IPath baseLocation = org.eclipse.core.filesystem.URIUtil.toPath(baseURI);
+ // careful not to use Path here but 'pathStr' as String as we want to properly navigate symlinks
+ uri = resolvePathFromBaseLocation(pathStr, baseLocation);
+ } else {
+ // location on a remote file-system
+ IPath path = new Path(pathStr); // use canonicalized path here, in particular replace all '\' with '/' for Windows paths
+ URI remoteUri = efsProvider.append(baseURI, path.toString());
+ if (remoteUri != null) {
+ String localPath = efsProvider.getMappedPath(remoteUri);
+ if (localPath != null) {
+ uri = org.eclipse.core.filesystem.URIUtil.toURI(localPath);
+ }
}
}
- }
- if (uri == null) {
- // if everything fails just wrap string to URI
- uri = org.eclipse.core.filesystem.URIUtil.toURI(pathStr);
- }
- return uri;
+ if (uri == null) {
+ // if everything fails just wrap string to URI
+ uri = org.eclipse.core.filesystem.URIUtil.toURI(pathStr);
+ }
+ return uri;
+ });
+ }
+
+ /**
+ * Find all resources in the project which might be represented by relative path passed.
+ */
+ private List<IResource> findPathInProject(IPath path, IProject project) {
+ LRUCache<IPath, List<IResource>> cache = findPathInProjectCache.computeIfAbsent(project,
+ key -> new LRUCache<>(FIND_RESOURCES_CACHE_SIZE));
+ return cache.computeIfAbsent(path, key -> findPathInFolder(path, project));
}
/**
@@ -952,7 +1092,7 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
// prefer current project
if (currentProject != null) {
- List<IResource> result = findPathInFolder(path, currentProject);
+ List<IResource> result = findPathInProject(path, currentProject);
int size = result.size();
if (size == 1) { // found the one
return result.get(0);
@@ -969,7 +1109,7 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
for (String prjName : referencedProjectsNames) {
IProject prj = root.getProject(prjName);
if (prj.isOpen()) {
- List<IResource> result = findPathInFolder(path, prj);
+ List<IResource> result = findPathInProject(path, prj);
int size = result.size();
if (size == 1 && rc == null) {
rc = result.get(0);
@@ -991,7 +1131,7 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
IResource rc = null;
for (IProject prj : projects) {
if (!prj.equals(currentProject) && !referencedProjectsNames.contains(prj.getName()) && prj.isOpen()) {
- List<IResource> result = findPathInFolder(path, prj);
+ List<IResource> result = findPathInProject(path, prj);
int size = result.size();
if (size == 1 && rc == null) {
rc = result.get(0);
@@ -1018,22 +1158,24 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
if (uri == null)
return null;
- String pathStr = efsProvider.getMappedPath(uri);
- uri = org.eclipse.core.filesystem.URIUtil.toURI(pathStr);
+ return fileSystemLocationCache.computeIfAbsent(uri, (k) -> {
+ String pathStr = efsProvider.getMappedPath(uri);
+ URI resUri = org.eclipse.core.filesystem.URIUtil.toURI(pathStr);
- if (uri != null && uri.isAbsolute()) {
- try {
- File file = new java.io.File(uri);
- String canonicalPathStr = file.getCanonicalPath();
- if (new Path(pathStr).getDevice() == null) {
- return new Path(canonicalPathStr).setDevice(null);
+ if (resUri != null && resUri.isAbsolute()) {
+ try {
+ File file = new java.io.File(resUri);
+ String canonicalPathStr = file.getCanonicalPath();
+ if (new Path(pathStr).getDevice() == null) {
+ return new Path(canonicalPathStr).setDevice(null);
+ }
+ return new Path(canonicalPathStr);
+ } catch (Exception e) {
+ ManagedBuilderCorePlugin.log(e);
}
- return new Path(canonicalPathStr);
- } catch (Exception e) {
- ManagedBuilderCorePlugin.log(e);
}
- }
- return null;
+ return null;
+ });
}
/**
@@ -1114,7 +1256,10 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
IPath location = getFilesystemLocation(uri);
if (location != null) {
String loc = location.toString();
- if (new File(loc).exists()) {
+ boolean exists = pathExistsCache.computeIfAbsent(location, (s) -> {
+ return new File(loc).exists();
+ });
+ if (exists) {
return optionParser.createEntry(loc, loc, flag);
}
}
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/language/settings/providers/GCCBuildCommandParser.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/language/settings/providers/GCCBuildCommandParser.java
index 2548a73d152..64e6507df4b 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/language/settings/providers/GCCBuildCommandParser.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/language/settings/providers/GCCBuildCommandParser.java
@@ -13,6 +13,11 @@
*******************************************************************************/
package org.eclipse.cdt.managedbuilder.language.settings.providers;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
import org.eclipse.cdt.core.errorparsers.RegexErrorPattern;
import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsEditableProvider;
import org.eclipse.cdt.core.settings.model.ICSettingEntry;
@@ -32,32 +37,124 @@ import org.eclipse.cdt.core.settings.model.ICSettingEntry;
*/
public class GCCBuildCommandParser extends AbstractBuildCommandParser implements ILanguageSettingsEditableProvider {
@SuppressWarnings("nls")
- static final AbstractOptionParser[] optionParsers = { new IncludePathOptionParser("-I\\s*([\"'])(.*)\\1", "$2"),
- new IncludePathOptionParser("-I\\s*([^\\s\"']*)", "$1"),
- new IncludePathOptionParser("-isystem\\s*([\"'])(.*)\\1", "$2"),
- new IncludePathOptionParser("-isystem\\s*([^\\s\"']*)", "$1"),
- new IncludePathOptionParser("-(F|(iframework))\\s*([\"'])(.*)\\3", "$4", ICSettingEntry.FRAMEWORKS_MAC),
- new IncludePathOptionParser("-(F|(iframework))\\s*([^\\s\"']*)", "$3", ICSettingEntry.FRAMEWORKS_MAC),
- new IncludeFileOptionParser("-include\\s*([\"'])(.*)\\1", "$2"),
- new IncludeFileOptionParser("-include\\s*([^\\s\"']*)", "$1"),
- new MacroOptionParser("-D\\s*([\"'])([^=]*)(=(.*))?\\1", "$2", "$4"),
+ static final AbstractOptionParser[] includeOptionParsers = {
+ new IncludePathOptionParser("-I\\s*(?<quote>[\"'])(.*)\\k<quote>", "$2"),
+ new IncludePathOptionParser("-I\\s*([^\\s\"']*)", "$1"), };
+
+ @SuppressWarnings("nls")
+ static final AbstractOptionParser[] systemIncludeOptionParsers = {
+ new IncludePathOptionParser("-isystem\\s*(?<quote>[\"'])(.*)\\k<quote>", "$2"),
+ new IncludePathOptionParser("-isystem\\s*([^\\s\"']*)", "$1"), };
+
+ @SuppressWarnings("nls")
+ static final AbstractOptionParser[] frameworkOptionParsers = {
+ new IncludePathOptionParser("-(F|(iframework))\\s*(?<quote>[\"'])(.*)\\k<quote>", "$4",
+ ICSettingEntry.FRAMEWORKS_MAC),
+ new IncludePathOptionParser("-(F|(iframework))\\s*([^\\s\"']*)", "$3", ICSettingEntry.FRAMEWORKS_MAC), };
+
+ @SuppressWarnings("nls")
+ static final AbstractOptionParser[] forceIncludeOptionParsers = {
+ new IncludeFileOptionParser("-include\\s*(?<quote>[\"'])(.*)\\k<quote>", "$2"),
+ new IncludeFileOptionParser("-include\\s*([^\\s\"']*)", "$1"), };
+
+ @SuppressWarnings("nls")
+ static final AbstractOptionParser[] defineOptionParsers = {
+ new MacroOptionParser("-D\\s*(?<quote>[\"'])([^=]*)(=(.*))?\\k<quote>", "$2", "$4"),
new MacroOptionParser("-D\\s*([^\\s=\"']*)=(\"\\\\(\")(.*?)\\\\\"\")", "$1", "$3$4$3"),
- new MacroOptionParser("-D\\s*([^\\s=\"']*)=(\\\\([\"']))(.*?)\\2", "$1", "$3$4$3"),
- new MacroOptionParser("-D\\s*([^\\s=\"']*)=([\"'])(.*?)\\2", "$1", "$3"),
+ new MacroOptionParser("-D\\s*([^\\s=\"']*)=(?<quote>\\\\([\"']))(.*?)\\k<quote>", "$1", "$3$4$3"),
+ new MacroOptionParser("-D\\s*([^\\s=\"']*)=(?<quote>[\"'])(.*?)\\k<quote>", "$1", "$3"),
new MacroOptionParser("-D\\s*([^\\s=\"']*)=([^\\s\"']*)?", "$1", "$2"),
- new MacroOptionParser("-D\\s*([^\\s=\"']*)", "$1", "1"),
- new MacroOptionParser("-U\\s*([^\\s=\"']*)", "$1", ICSettingEntry.UNDEFINED),
- new MacroFileOptionParser("-imacros\\s*([\"'])(.*)\\1", "$2"),
- new MacroFileOptionParser("-imacros\\s*([^\\s\"']*)", "$1"),
- new LibraryPathOptionParser("-L\\s*([\"'])(.*)\\1", "$2"),
+ new MacroOptionParser("-D\\s*([^\\s=\"']*)", "$1", "1"), };
+
+ @SuppressWarnings("nls")
+ static final AbstractOptionParser[] undefineOptionParsers = {
+ new MacroOptionParser("-U\\s*([^\\s=\"']*)", "$1", ICSettingEntry.UNDEFINED), };
+
+ @SuppressWarnings("nls")
+ static final AbstractOptionParser[] macrosOptionParsers = {
+ new MacroFileOptionParser("-imacros\\s*(?<quote>[\"'])(.*)\\k<quote>", "$2"),
+ new MacroFileOptionParser("-imacros\\s*([^\\s\"']*)", "$1"), };
+
+ @SuppressWarnings("nls")
+ static final AbstractOptionParser[] libraryOptionParsers = {
+ new LibraryPathOptionParser("-L\\s*(?<quote>[\"'])(.*)\\k<quote>", "$2"),
new LibraryPathOptionParser("-L\\s*([^\\s\"']*)", "$1"),
new LibraryFileOptionParser("-l\\s*([^\\s\"']*)", "lib$1.a"), };
+ static final AbstractOptionParser[] emptyParsers = new AbstractOptionParser[0];
+
+ static final AbstractOptionParser[] optionParsers;
+ static {
+ List<AbstractOptionParser> parsers = new ArrayList<>(Arrays.asList(includeOptionParsers));
+ Collections.addAll(parsers, systemIncludeOptionParsers);
+ Collections.addAll(parsers, frameworkOptionParsers);
+ Collections.addAll(parsers, forceIncludeOptionParsers);
+ Collections.addAll(parsers, defineOptionParsers);
+ Collections.addAll(parsers, undefineOptionParsers);
+ Collections.addAll(parsers, macrosOptionParsers);
+ Collections.addAll(parsers, libraryOptionParsers);
+
+ optionParsers = parsers.toArray(new AbstractOptionParser[0]);
+ }
+
@Override
protected AbstractOptionParser[] getOptionParsers() {
return optionParsers;
}
+ @SuppressWarnings("nls")
+ @Override
+ protected AbstractOptionParser[] getOptionParsers(String optionToParse) {
+ if (optionToParse.length() <= 1) {
+ return emptyParsers;
+ }
+
+ // Skip -, we know it's there with the OPTIONS_PATTERN
+ String optionName = optionToParse.substring(1);
+
+ if (optionName.startsWith("I")) {
+ return includeOptionParsers;
+ }
+
+ if (optionName.startsWith("D")) {
+ return defineOptionParsers;
+ }
+
+ if (optionName.startsWith("l") || optionName.startsWith("L")) {
+ return libraryOptionParsers;
+ }
+
+ if (optionName.startsWith("i")) {
+ if (optionName.startsWith("include")) {
+ return forceIncludeOptionParsers;
+ }
+
+ if (optionName.startsWith("isystem")) {
+ return systemIncludeOptionParsers;
+ }
+
+ if (optionName.startsWith("imacros")) {
+ return macrosOptionParsers;
+ }
+
+ if (optionName.startsWith("iframework")) {
+ return frameworkOptionParsers;
+ }
+
+ return emptyParsers;
+ }
+
+ if (optionName.startsWith("F")) {
+ return frameworkOptionParsers;
+ }
+
+ if (optionName.startsWith("U")) {
+ return undefineOptionParsers;
+ }
+
+ return emptyParsers;
+ }
+
@Override
public GCCBuildCommandParser cloneShallow() throws CloneNotSupportedException {
return (GCCBuildCommandParser) super.cloneShallow();
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/language/settings/providers/ToolchainBuiltinSpecsDetector.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/language/settings/providers/ToolchainBuiltinSpecsDetector.java
index c8a64eeb283..59312318f0a 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/language/settings/providers/ToolchainBuiltinSpecsDetector.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/language/settings/providers/ToolchainBuiltinSpecsDetector.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009, 2013 Andrew Gvozdev and others.
+ * Copyright (c) 2009, 2020 Andrew Gvozdev and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -10,13 +10,17 @@
*
* Contributors:
* Andrew Gvozdev - initial API and implementation
+ * Alexander Fedorov <alexander.fedorov@arsysop.ru> - Bug 559707
*******************************************************************************/
package org.eclipse.cdt.managedbuilder.language.settings.providers;
+import java.util.Arrays;
+import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Optional;
import org.eclipse.cdt.core.envvar.IEnvironmentVariable;
import org.eclipse.cdt.managedbuilder.core.BuildException;
@@ -28,6 +32,7 @@ import org.eclipse.cdt.managedbuilder.core.IToolChain;
import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
import org.eclipse.cdt.managedbuilder.core.ManagedBuilderCorePlugin;
import org.eclipse.cdt.managedbuilder.internal.envvar.EnvironmentVariableManagerToolChain;
+import org.eclipse.osgi.util.NLS;
/**
* Abstract parser capable to execute compiler command printing built-in compiler
@@ -58,17 +63,18 @@ public abstract class ToolchainBuiltinSpecsDetector extends AbstractBuiltinSpecs
/**
* Finds a tool handling given language in the tool-chain of the provider.
- * This returns the first tool found.
+ * This returns the first tool found or empty {@link Optional}.
+ * @since 8.8
*/
- private ITool getTool(String languageId) {
+ protected Optional<ITool> languageTool(String languageId) {
if (languageId == null) {
- return null;
+ return Optional.empty();
}
if (currentCfgDescription == null) {
ITool tool = toolMap.get(languageId);
if (tool != null) {
- return tool;
+ return Optional.of(tool);
}
}
@@ -99,7 +105,7 @@ public abstract class ToolchainBuiltinSpecsDetector extends AbstractBuiltinSpecs
ManagedBuilderCorePlugin
.error("Unable to find tool in toolchain=" + toolchainId + " for language=" + languageId); //$NON-NLS-1$ //$NON-NLS-2$
}
- return tool;
+ return Optional.ofNullable(tool);
}
/**
@@ -122,79 +128,83 @@ public abstract class ToolchainBuiltinSpecsDetector extends AbstractBuiltinSpecs
@Override
protected String getCompilerCommand(String languageId) {
- ITool tool = getTool(languageId);
- String compilerCommand = tool != null ? tool.getToolCommand() : ""; //$NON-NLS-1$
- if (compilerCommand.isEmpty()) {
- ManagedBuilderCorePlugin.error("Unable to find compiler command in toolchain=" + getToolchainId()); //$NON-NLS-1$
+ Optional<String> found = languageTool(languageId)//
+ .flatMap(t -> Optional.of(t.getToolCommand()));
+ if (!found.isPresent()) {
+ ManagedBuilderCorePlugin
+ .error(NLS.bind("Unable to find compiler command in toolchain={0}", getToolchainId())); //$NON-NLS-1$
+ return ""; //$NON-NLS-1$
}
- return compilerCommand;
+ return found.get();
}
@Override
protected String getSpecFileExtension(String languageId) {
- String ext = null;
- ITool tool = getTool(languageId);
- String[] srcFileExtensions = tool != null ? tool.getAllInputExtensions() : null;
- if (srcFileExtensions != null && srcFileExtensions.length > 0) {
- ext = srcFileExtensions[0];
- }
- if (ext == null || ext.isEmpty()) {
- ManagedBuilderCorePlugin.error("Unable to find file extension for language " + languageId); //$NON-NLS-1$
+ Optional<String[]> optionalExtensions = languageTool(languageId)
+ .flatMap(t -> Optional.of(t.getAllInputExtensions()));
+ List<String> extensions = optionalExtensions.map(Arrays::asList).orElseGet(() -> Collections.emptyList());
+ Optional<String> extension = selectBestSpecFileExtension(extensions);
+
+ if (!extension.isPresent()) {
+ //this looks like either invalid configuration settings or API issue
+ ManagedBuilderCorePlugin.error(NLS.bind("Unable to find file extension for language {0}", languageId)); //$NON-NLS-1$
+ return null;
}
- return ext;
+ return extension.get();
}
@Override
protected String getToolOptions(String languageId) {
- String flags = ""; //$NON-NLS-1$
- ITool tool = getTool(languageId);
- if (tool != null) {
- IOption[] options = tool.getOptions();
- for (IOption option : options) {
- if (option.isForScannerDiscovery()) {
- try {
- String optionValue = null;
- switch (option.getBasicValueType()) {
- case IOption.BOOLEAN:
- if (option.getBooleanValue()) {
- optionValue = option.getCommand();
- } else {
- optionValue = option.getCommandFalse();
- }
- break;
- case IOption.ENUMERATED:
- optionValue = option.getEnumCommand(option.getSelectedEnum());
- break;
- case IOption.STRING:
- optionValue = option.getCommand() + option.getStringValue();
- break;
- case IOption.STRING_LIST:
- String[] values = option.getBasicStringListValue();
- if (values != null) {
- optionValue = ""; //$NON-NLS-1$
- String cmd = option.getCommand();
- for (String value : values) {
- if (!value.isEmpty() && !value.equals(EMPTY_QUOTED_STRING)) {
- optionValue = optionValue + cmd + value + ' ';
- }
+ Optional<IOption[]> found = languageTool(languageId).flatMap(t -> Optional.of(t.getOptions()));
+ if (!found.isPresent()) {
+ return ""; //$NON-NLS-1$
+ }
+ StringBuilder flags = new StringBuilder();
+ IOption[] options = found.get();
+ for (IOption option : options) {
+ if (option.isForScannerDiscovery()) {
+ try {
+ String optionValue = null;
+ switch (option.getBasicValueType()) {
+ case IOption.BOOLEAN:
+ if (option.getBooleanValue()) {
+ optionValue = option.getCommand();
+ } else {
+ optionValue = option.getCommandFalse();
+ }
+ break;
+ case IOption.ENUMERATED:
+ optionValue = option.getEnumCommand(option.getSelectedEnum());
+ break;
+ case IOption.STRING:
+ optionValue = option.getCommand() + option.getStringValue();
+ break;
+ case IOption.STRING_LIST:
+ String[] values = option.getBasicStringListValue();
+ if (values != null) {
+ optionValue = ""; //$NON-NLS-1$
+ String cmd = option.getCommand();
+ for (String value : values) {
+ if (!value.isEmpty() && !value.equals(EMPTY_QUOTED_STRING)) {
+ optionValue = optionValue + cmd + value + ' ';
}
}
- break;
- case IOption.TREE:
- optionValue = option.getCommand(option.getStringValue());
- break;
- default:
}
- if (optionValue != null) {
- flags = flags + ' ' + optionValue.trim();
- }
- } catch (BuildException e) {
- ManagedBuilderCorePlugin.log(e);
+ break;
+ case IOption.TREE:
+ optionValue = option.getCommand(option.getStringValue());
+ break;
+ default:
+ }
+ if (optionValue != null) {
+ flags.append(' ').append(optionValue.trim());
}
+ } catch (BuildException e) {
+ ManagedBuilderCorePlugin.log(e);
}
}
}
- return flags.trim();
+ return flags.toString().trim();
}
@Override
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/IManagedDependencyCalculator.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/IManagedDependencyCalculator.java
index e010eb83a4a..e010eb83a4a 100755..100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/IManagedDependencyCalculator.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/IManagedDependencyCalculator.java
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/IManagedDependencyGeneratorType.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/IManagedDependencyGeneratorType.java
index 6a480e56fac..6a480e56fac 100755..100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/IManagedDependencyGeneratorType.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/IManagedDependencyGeneratorType.java
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/IManagedDependencyInfo.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/IManagedDependencyInfo.java
index 7dbd7464ff4..7dbd7464ff4 100755..100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/IManagedDependencyInfo.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/IManagedDependencyInfo.java
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/IManagedDependencyPreBuild.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/IManagedDependencyPreBuild.java
index a8d0c5eccec..a8d0c5eccec 100755..100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/IManagedDependencyPreBuild.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/IManagedDependencyPreBuild.java
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/gnu/DefaultGCCDependencyCalculator.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/gnu/DefaultGCCDependencyCalculator.java
index 0ce05fd7bb0..dd090453622 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/gnu/DefaultGCCDependencyCalculator.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/gnu/DefaultGCCDependencyCalculator.java
@@ -103,7 +103,7 @@ public class DefaultGCCDependencyCalculator implements IManagedDependencyGenerat
+ IManagedBuilderMakefileGenerator.WHITESPACE + "-n" //$NON-NLS-1$
+ IManagedBuilderMakefileGenerator.WHITESPACE).append(depRule)
.append(IManagedBuilderMakefileGenerator.WHITESPACE + "$(dir $@)" //$NON-NLS-1$
- + IManagedBuilderMakefileGenerator.WHITESPACE + ">"
+ + IManagedBuilderMakefileGenerator.WHITESPACE + ">" //$NON-NLS-1$
+ IManagedBuilderMakefileGenerator.WHITESPACE)
.append(depRule)
.append(IManagedBuilderMakefileGenerator.WHITESPACE + IManagedBuilderMakefileGenerator.LOGICAL_AND
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/gnu/DefaultGCCDependencyCalculator2Commands.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/gnu/DefaultGCCDependencyCalculator2Commands.java
index e42586238ef..feb6995eba9 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/gnu/DefaultGCCDependencyCalculator2Commands.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/gnu/DefaultGCCDependencyCalculator2Commands.java
@@ -16,7 +16,6 @@ package org.eclipse.cdt.managedbuilder.makegen.gnu;
import org.eclipse.cdt.managedbuilder.core.IBuildObject;
import org.eclipse.cdt.managedbuilder.core.IConfiguration;
-import org.eclipse.cdt.managedbuilder.core.IResourceConfiguration;
import org.eclipse.cdt.managedbuilder.core.IResourceInfo;
import org.eclipse.cdt.managedbuilder.core.ITool;
import org.eclipse.cdt.managedbuilder.internal.macros.BuildMacroProvider;
@@ -175,15 +174,8 @@ public class DefaultGCCDependencyCalculator2Commands implements IManagedDependen
} else {
options[2] = "-MF\"$(@:%.o=%.d)\""; //$NON-NLS-1$
}
- if (buildContext instanceof IResourceConfiguration || needExplicitRuleForFile) {
- IPath outPath = getDependencyFiles()[0];
- // -MT"dependency-file-name"
- String optTxt = "-MT\"" + GnuMakefileGenerator.escapeWhitespaces(outPath.toString()) + "\""; //$NON-NLS-1$ //$NON-NLS-2$
- options[3] = optTxt;
- } else {
- // -MT"$(@:%.o=%.d) %.o"
- options[3] = "-MT\"$(@)\""; //$NON-NLS-1$
- }
+ // -MT"$@"
+ options[3] = "-MT\"$@\""; //$NON-NLS-1$
return options;
}
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/gnu/DefaultGCCDependencyCalculator3.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/gnu/DefaultGCCDependencyCalculator3.java
index dc3d5bb4419..d800377b861 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/gnu/DefaultGCCDependencyCalculator3.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/gnu/DefaultGCCDependencyCalculator3.java
@@ -97,12 +97,21 @@ public class DefaultGCCDependencyCalculator3 implements IManagedDependencyGenera
makefile = root.getFile(makefilePath);
IResourceInfo rcInfo = tool.getParentResourceInfo();
if (rcInfo != null)
- return GnuMakefileGenerator.populateDummyTargets(rcInfo, makefile, false);
- return GnuMakefileGenerator.populateDummyTargets(buildContext, makefile, false);
+ return createMakefileGenerator().generateDummyTargets(rcInfo, makefile, false);
+ return createMakefileGenerator().generateDummyTargets(buildContext, makefile, false);
} catch (CoreException e) {
} catch (IOException e) {
}
return false;
}
+ /**
+ * Return a GnuMakefileGenerator instance to use during post processing of dependency files
+ * @return an GnuMakefileGenerator instance
+ * @since 9.3
+ */
+ protected GnuMakefileGenerator createMakefileGenerator() {
+ return new GnuMakefileGenerator();
+ }
+
}
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/gnu/GnuDependencyGroupInfo.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/gnu/GnuDependencyGroupInfo.java
index 2284b7f3404..18445bbd704 100755..100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/gnu/GnuDependencyGroupInfo.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/gnu/GnuDependencyGroupInfo.java
@@ -23,8 +23,14 @@ package org.eclipse.cdt.managedbuilder.makegen.gnu;
public class GnuDependencyGroupInfo {
// Member Variables
- String groupBuildVar;
- boolean conditionallyInclude;
+ /**
+ * @noreference
+ */
+ public String groupBuildVar;
+ /**
+ * @noreference
+ */
+ public boolean conditionallyInclude;
// ArrayList groupFiles;
// Constructor
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/gnu/GnuMakefileGenerator.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/gnu/GnuMakefileGenerator.java
index 6e081c3e0e8..94dd491cc1c 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/gnu/GnuMakefileGenerator.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/gnu/GnuMakefileGenerator.java
@@ -106,10 +106,15 @@ import org.eclipse.core.runtime.SubProgressMonitor;
/**
* This is a specialized makefile generator that takes advantage of the
* extensions present in Gnu Make.
+ * <p>
+ * If sub-classing and using {@link DefaultGCCDependencyCalculator3}, make sure to also override
+ * {@link DefaultGCCDependencyCalculator3#createMakefileGenerator()} to return the appropriate result.
*
* @since 1.2
* @noinstantiate This class is not intended to be instantiated by clients.
+ * @deprecated Replaced by {@link org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator}
*/
+@Deprecated
public class GnuMakefileGenerator implements IManagedBuilderMakefileGenerator2 {
private static final IPath DOT_SLASH_PATH = new Path("./"); //$NON-NLS-1$
@@ -823,10 +828,19 @@ public class GnuMakefileGenerator implements IManagedBuilderMakefileGenerator2 {
bytes = buffer.toString().getBytes();
}
- ByteArrayInputStream stream = new ByteArrayInputStream(bytes);
- // use a platform operation to update the resource contents
- boolean force = true;
- file.setContents(stream, force, false, null); // Don't record history
+ byte[] oldBytes = null;
+ try (InputStream is = file.getContents(true)) {
+ oldBytes = is.readAllBytes();
+ } catch (IOException e) {
+ }
+
+ // Only write file if content differs
+ if (!Arrays.equals(oldBytes, bytes)) {
+ ByteArrayInputStream stream = new ByteArrayInputStream(bytes);
+ // use a platform operation to update the resource contents
+ boolean force = true;
+ file.setContents(stream, force, false, null); // Don't record history
+ }
}
/* (non-Javadoc)
@@ -1263,6 +1277,68 @@ public class GnuMakefileGenerator implements IManagedBuilderMakefileGenerator2 {
// Include makefile.defs supplemental makefile
buffer.append("-include ").append(reachProjectRoot()).append(SEPARATOR).append(MAKEFILE_DEFS).append(NEWLINE); //$NON-NLS-1$
+ final String wildcardFileFmt = "$(wildcard %s)" + WHITESPACE + LINEBREAK; //$NON-NLS-1$
+ buffer.append(NEWLINE).append("OPTIONAL_TOOL_DEPS :=").append(WHITESPACE).append(LINEBREAK); //$NON-NLS-1$
+ buffer.append(String.format(wildcardFileFmt, reachProjectRoot() + SEPARATOR + MAKEFILE_DEFS));
+ buffer.append(String.format(wildcardFileFmt, reachProjectRoot() + SEPARATOR + MAKEFILE_INIT));
+ buffer.append(String.format(wildcardFileFmt, reachProjectRoot() + SEPARATOR + MAKEFILE_TARGETS));
+ buffer.append(NEWLINE);
+
+ String ext = config.getArtifactExtension();
+ // try to resolve the build macros in the artifact extension
+ try {
+ ext = ManagedBuildManager.getBuildMacroProvider().resolveValueToMakefileFormat(ext, EMPTY_STRING,
+ WHITESPACE, IBuildMacroProvider.CONTEXT_CONFIGURATION, config);
+ } catch (BuildMacroException e) {
+ }
+
+ String name = config.getArtifactName();
+ // try to resolve the build macros in the artifact name
+ try {
+ String resolved = ManagedBuildManager.getBuildMacroProvider().resolveValueToMakefileFormat(name,
+ EMPTY_STRING, WHITESPACE, IBuildMacroProvider.CONTEXT_CONFIGURATION, config);
+ if ((resolved = resolved.trim()).length() > 0) {
+ name = resolved;
+ }
+ } catch (BuildMacroException e) {
+ }
+
+ String prefix = EMPTY_STRING;
+ ITool targetTool = config.calculateTargetTool();
+ if (targetTool != null) {
+ prefix = targetTool.getOutputPrefix();
+ if (prefix == null) {
+ prefix = EMPTY_STRING;
+ }
+ }
+ // try to resolve the build macros in the artifact prefix
+ try {
+ String resolved = ManagedBuildManager.getBuildMacroProvider().resolveValueToMakefileFormat(prefix,
+ EMPTY_STRING, WHITESPACE, IBuildMacroProvider.CONTEXT_CONFIGURATION, config);
+ if ((resolved = resolved.trim()).length() > 0) {
+ prefix = resolved;
+ }
+ } catch (BuildMacroException e) {
+ }
+
+ @SuppressWarnings("nls")
+ String[][] buildArtifactVars = new String[][] { //
+ { "BUILD_ARTIFACT_NAME", name }, //
+ { "BUILD_ARTIFACT_EXTENSION", ext }, //
+ { "BUILD_ARTIFACT_PREFIX", prefix }, //
+ { "BUILD_ARTIFACT",
+ "$(BUILD_ARTIFACT_PREFIX)$(BUILD_ARTIFACT_NAME)$(if $(BUILD_ARTIFACT_EXTENSION),.$(BUILD_ARTIFACT_EXTENSION),)" }, //
+ };
+
+ buffer.append(NEWLINE);
+ for (String[] var : buildArtifactVars) {
+ buffer.append(var[0]).append(" :="); //$NON-NLS-1$
+ if (!var[1].isEmpty()) {
+ buffer.append(WHITESPACE).append(var[1]);
+ }
+ buffer.append(NEWLINE);
+ }
+
return (buffer.append(NEWLINE));
}
@@ -1313,57 +1389,46 @@ public class GnuMakefileGenerator implements IManagedBuilderMakefileGenerator2 {
.equals(config.getBuildArtefactType().getId()))
refConfigs = ManagedBuildManager.getReferencedConfigurations(config);
- /* try {
- refdProjects = project.getReferencedProjects();
- } catch (CoreException e) {
- // There are 2 exceptions; the project does not exist or it is not open
- // and neither conditions apply if we are building for it ....
- }
- */
- // If a prebuild step exists, redefine the all target to be
- // all:
- // $(MAKE) pre-build
- // $(MAKE) main-build
- // and then reset the "traditional" all target to main-build
- // This will allow something meaningful to happen if the generated
- // makefile is
- // extracted and run standalone via "make all"
- //
- String defaultTarget = "all:"; //$NON-NLS-1$
- if (prebuildStep.length() > 0) {
+ // Add the comment for the "All" target
+ buffer.append(COMMENT_SYMBOL).append(WHITESPACE).append(ManagedMakeMessages.getResourceString(ALL_TARGET))
+ .append(NEWLINE);
- // Add the comment for the "All" target
- buffer.append(COMMENT_SYMBOL).append(WHITESPACE).append(ManagedMakeMessages.getResourceString(ALL_TARGET))
- .append(NEWLINE);
+ if (!prebuildStep.isEmpty() || !postbuildStep.isEmpty()) {
+ // all:
+ buffer.append("all").append(COLON).append(NEWLINE); //$NON-NLS-1$
+
+ String makeNoPrintDir = MAKE + WHITESPACE + NO_PRINT_DIR + WHITESPACE;
+ buffer.append(TAB).append("+@"); //$NON-NLS-1$
+ if (!prebuildStep.isEmpty()) {
+ buffer.append(makeNoPrintDir).append(PREBUILD).append(WHITESPACE).append(LOGICAL_AND)
+ .append(WHITESPACE);
+ }
+ buffer.append(makeNoPrintDir).append(MAINBUILD);
+ if (!postbuildStep.isEmpty()) {
+ buffer.append(WHITESPACE).append(LOGICAL_AND).append(WHITESPACE).append(makeNoPrintDir)
+ .append(POSTBUILD);
+ }
- // Invoke make multiple times to ensure pre-build is executed before main-build
- buffer.append(defaultTarget).append(NEWLINE);
- buffer.append(TAB).append(MAKE).append(WHITESPACE).append(NO_PRINT_DIR).append(WHITESPACE).append(PREBUILD)
- .append(NEWLINE);
- buffer.append(TAB).append(MAKE).append(WHITESPACE).append(NO_PRINT_DIR).append(WHITESPACE).append(MAINBUILD)
- .append(NEWLINE);
buffer.append(NEWLINE);
- // Update the defaultTarget, main-build, by adding a colon, which is
- // needed below
- defaultTarget = MAINBUILD.concat(COLON);
+ } else {
+ // all: main-build
+ buffer.append("all").append(COLON).append(WHITESPACE).append(MAINBUILD).append(NEWLINE); //$NON-NLS-1$
+ }
+ buffer.append(NEWLINE);
- // Add the comment for the "main-build" target
- buffer.append(COMMENT_SYMBOL).append(WHITESPACE)
- .append(ManagedMakeMessages.getResourceString(MAINBUILD_TARGET)).append(NEWLINE);
- } else
- // Add the comment for the "All" target
- buffer.append(COMMENT_SYMBOL).append(WHITESPACE).append(ManagedMakeMessages.getResourceString(ALL_TARGET))
- .append(NEWLINE);
+ // Add the comment for the "main-build" target
+ buffer.append(COMMENT_SYMBOL).append(WHITESPACE).append(ManagedMakeMessages.getResourceString(MAINBUILD_TARGET))
+ .append(NEWLINE);
- // Write out the all target first in case someone just runs make
- // all: <target_name> or mainbuild: <target_name>
+ // Write out the main-build target first in case someone just runs make
+ // main-build: <target_name>
String outputPrefix = EMPTY_STRING;
if (targetTool != null) {
outputPrefix = targetTool.getOutputPrefix();
}
- buffer.append(defaultTarget).append(WHITESPACE).append(outputPrefix)
+ buffer.append(MAINBUILD).append(COLON).append(WHITESPACE).append(outputPrefix)
.append(ensurePathIsGNUMakeTargetRuleCompatibleSyntax(buildTargetName));
if (buildTargetExt.length() > 0) {
buffer.append(DOT).append(buildTargetExt);
@@ -1448,8 +1513,7 @@ public class GnuMakefileGenerator implements IManagedBuilderMakefileGenerator2 {
}
// Add the targets tool rules
- buffer.append(addTargetsRules(targetTool, outputVarsAdditionsList, managedProjectOutputs,
- (postbuildStep.length() > 0)));
+ buffer.append(addTargetsRules(targetTool, outputVarsAdditionsList, managedProjectOutputs));
// Add the prebuild step target, if specified
if (prebuildStep.length() > 0) {
@@ -1482,9 +1546,9 @@ public class GnuMakefileGenerator implements IManagedBuilderMakefileGenerator2 {
}
// Add all the needed dummy and phony targets
- buffer.append(".PHONY: all clean dependents"); //$NON-NLS-1$
+ buffer.append(".PHONY: all clean dependents").append(WHITESPACE).append(MAINBUILD); //$NON-NLS-1$
if (prebuildStep.length() > 0) {
- buffer.append(WHITESPACE).append(MAINBUILD).append(WHITESPACE).append(PREBUILD);
+ buffer.append(WHITESPACE).append(PREBUILD);
}
if (postbuildStep.length() > 0) {
buffer.append(WHITESPACE).append(POSTBUILD);
@@ -1513,7 +1577,7 @@ public class GnuMakefileGenerator implements IManagedBuilderMakefileGenerator2 {
* @return StringBuffer
*/
private StringBuffer addTargetsRules(ITool targetTool, List<String> outputVarsAdditionsList,
- Vector<String> managedProjectOutputs, boolean postbuildStep) {
+ Vector<String> managedProjectOutputs) {
StringBuffer buffer = new StringBuffer();
// Add the comment
buffer.append(COMMENT_SYMBOL).append(WHITESPACE).append(ManagedMakeMessages.getResourceString(BUILD_TOP))
@@ -1528,7 +1592,7 @@ public class GnuMakefileGenerator implements IManagedBuilderMakefileGenerator2 {
// appear to be used there (and tool outputs are consulted directly), but
// we quote it anyway just in case it starts to use it in future.
if (addRuleForTool(targetTool, buffer, true, ensurePathIsGNUMakeTargetRuleCompatibleSyntax(buildTargetName),
- buildTargetExt, outputVarsAdditionsList, managedProjectOutputs, postbuildStep)) {
+ buildTargetExt, outputVarsAdditionsList, managedProjectOutputs, false)) {
// Mark the target tool as processed
for (int i = 0; i < buildTools.length; i++) {
if (targetTool == buildTools[i]) {
@@ -1588,6 +1652,17 @@ public class GnuMakefileGenerator implements IManagedBuilderMakefileGenerator2 {
}
/**
+ * @deprecated Use {@link #addRuleForTool(ITool, StringBuffer, boolean, String, String, List, Vector)}
+ */
+ @Deprecated
+ protected boolean addRuleForTool(ITool tool, StringBuffer buffer, boolean bTargetTool, String targetName,
+ String targetExt, List<String> outputVarsAdditionsList, Vector<String> managedProjectOutputs,
+ boolean bEmitPostBuildStepCall) {
+ return addRuleForTool(tool, buffer, bTargetTool, targetName, targetExt, outputVarsAdditionsList,
+ managedProjectOutputs);
+ }
+
+ /**
* Create the rule
*
* @param buffer Buffer to add makefile rules to
@@ -1596,11 +1671,10 @@ public class GnuMakefileGenerator implements IManagedBuilderMakefileGenerator2 {
* @param targetExt If this is the "targetTool", the target file extension, else <code>null</code>
* @param outputVarsAdditionsList list to add needed build output variables to
* @param managedProjectOutputs Other projects in the workspace that this project depends upon
- * @param bEmitPostBuildStepCall Emit post-build step invocation
+ * @since 9.3
*/
protected boolean addRuleForTool(ITool tool, StringBuffer buffer, boolean bTargetTool, String targetName,
- String targetExt, List<String> outputVarsAdditionsList, Vector<String> managedProjectOutputs,
- boolean bEmitPostBuildStepCall) {
+ String targetExt, List<String> outputVarsAdditionsList, Vector<String> managedProjectOutputs) {
// Get the tool's inputs and outputs
Vector<String> inputs = new Vector<>();
@@ -1656,6 +1730,9 @@ public class GnuMakefileGenerator implements IManagedBuilderMakefileGenerator2 {
calculatedDependencies += input;
}
buildRule += calculatedDependencies;
+ buildRule += WHITESPACE + MAKEFILE_NAME; // makefile itself
+ buildRule += WHITESPACE + OBJECTS_MAKFILE; // objects.mk
+ buildRule += WHITESPACE + "$(OPTIONAL_TOOL_DEPS)"; //$NON-NLS-1$ // Optional dep to generated makefile extension files
// We can't have duplicates in a makefile
if (getRuleList().contains(buildRule)) {
@@ -1731,16 +1808,8 @@ public class GnuMakefileGenerator implements IManagedBuilderMakefileGenerator2 {
escapedEcho((bTargetTool ? MESSAGE_FINISH_BUILD : MESSAGE_FINISH_FILE) + WHITESPACE + OUT_MACRO));
buffer.append(TAB).append(AT).append(ECHO_BLANK_LINE);
- // If there is a post build step, then add a recursive invocation of MAKE to invoke it after the main build
- // Note that $(MAKE) will instantiate in the recusive invocation to the make command that was used to invoke
- // the makefile originally
- if (bEmitPostBuildStepCall) {
- buffer.append(TAB).append(MAKE).append(WHITESPACE).append(NO_PRINT_DIR).append(WHITESPACE)
- .append(POSTBUILD).append(NEWLINE).append(NEWLINE);
- } else {
- // Just emit a blank line
- buffer.append(NEWLINE);
- }
+ // Just emit a blank line
+ buffer.append(NEWLINE);
}
// If we have secondary outputs, output dependency rules without commands
@@ -2538,7 +2607,8 @@ public class GnuMakefileGenerator implements IManagedBuilderMakefileGenerator2 {
patternBuildRuleDependencies += WHITESPACE + suitablePath;
}
- buildRule += COLON + WHITESPACE + (patternRule ? patternBuildRuleDependencies : buildRuleDependencies);
+ buildRule += COLON + WHITESPACE + (patternRule ? patternBuildRuleDependencies : buildRuleDependencies)
+ + WHITESPACE + escapeWhitespaces(relativePath + MODFILE_NAME);
// No duplicates in a makefile. If we already have this rule, don't add it or the commands to build the file
if (getRuleList().contains(buildRule)) {
@@ -2810,7 +2880,8 @@ public class GnuMakefileGenerator implements IManagedBuilderMakefileGenerator2 {
depLine += escapeWhitespaces((depFiles[i]).toString());
}
}
- depLine += COLON + WHITESPACE + (patternRule ? patternBuildRuleDependencies : buildRuleDependencies);
+ depLine += COLON + WHITESPACE + (patternRule ? patternBuildRuleDependencies : buildRuleDependencies)
+ + WHITESPACE + escapeWhitespaces(relativePath + MODFILE_NAME);
if (!getDepRuleList().contains(depLine)) {
getDepRuleList().add(depLine);
addedDepLines = true;
@@ -3417,6 +3488,15 @@ public class GnuMakefileGenerator implements IManagedBuilderMakefileGenerator2 {
}
/**
+ * @deprecated Use {@link GnuMakefileGenerator#generateDummyTargets(IConfiguration, IFile, boolean)}
+ */
+ @Deprecated
+ static public boolean populateDummyTargets(IConfiguration cfg, IFile makefile, boolean force)
+ throws CoreException, IOException {
+ return new GnuMakefileGenerator().generateDummyTargets(cfg, makefile, force);
+ }
+
+ /**
* This method postprocesses a .d file created by a build.
* It's main job is to add dummy targets for the header files dependencies.
* This prevents make from aborting the build if the header file does not exist.
@@ -3429,31 +3509,44 @@ public class GnuMakefileGenerator implements IManagedBuilderMakefileGenerator2 {
* checks for to determine if this dependency file has already been updated.
*
* @return a <code>true</code> if the dependency file is modified
+ * @since 9.3
*/
- static public boolean populateDummyTargets(IConfiguration cfg, IFile makefile, boolean force)
+ public boolean generateDummyTargets(IConfiguration cfg, IFile makefile, boolean force)
throws CoreException, IOException {
- return populateDummyTargets(cfg.getRootFolderInfo(), makefile, force);
+ return generateDummyTargets(cfg.getRootFolderInfo(), makefile, force);
}
+ /**
+ * @deprecated Use {@link GnuMakefileGenerator#generateDummyTargets(IResourceInfo, IFile, boolean)}
+ */
+ @Deprecated
static public boolean populateDummyTargets(IResourceInfo rcInfo, IFile makefile, boolean force)
throws CoreException, IOException {
+ return new GnuMakefileGenerator().generateDummyTargets(rcInfo, makefile, force);
+ }
+
+ /**
+ * @since 9.3
+ */
+ public boolean generateDummyTargets(IResourceInfo rcInfo, IFile makefile, boolean force)
+ throws CoreException, IOException {
if (makefile == null || !makefile.exists())
return false;
// Get the contents of the dependency file
+ StringBuffer inBuffer;
InputStream contentStream = makefile.getContents(false);
- Reader in = new InputStreamReader(contentStream);
- StringBuffer inBuffer = null;
- int chunkSize = contentStream.available();
- inBuffer = new StringBuffer(chunkSize);
- char[] readBuffer = new char[chunkSize];
- int n = in.read(readBuffer);
- while (n > 0) {
- inBuffer.append(readBuffer);
- n = in.read(readBuffer);
- }
- contentStream.close();
+ try (Reader in = new InputStreamReader(contentStream)) {
+ int chunkSize = contentStream.available();
+ inBuffer = new StringBuffer(chunkSize);
+ char[] readBuffer = new char[chunkSize];
+ int n = in.read(readBuffer);
+ while (n > 0) {
+ inBuffer.append(readBuffer);
+ n = in.read(readBuffer);
+ }
+ }
// The rest of this operation is equally expensive, so
// if we are doing an incremental build, only update the
@@ -3613,6 +3706,7 @@ public class GnuMakefileGenerator implements IManagedBuilderMakefileGenerator2 {
save(outBuffer, makefile);
return true;
}
+
return false;
}
@@ -3629,22 +3723,38 @@ public class GnuMakefileGenerator implements IManagedBuilderMakefileGenerator2 {
static public String ECHO_BLANK_LINE = ECHO + WHITESPACE + SINGLE_QUOTE + WHITESPACE + SINGLE_QUOTE + NEWLINE;
/**
+ * @deprecated Use {@link GnuMakefileGenerator#addGenericHeader()}
+ */
+ @Deprecated
+ static protected StringBuffer addDefaultHeader() {
+ return new GnuMakefileGenerator().addGenericHeader();
+ }
+
+ /**
* Outputs a comment formatted as follows:
* ##### ....... #####
* # <Comment message>
* ##### ....... #####
+ * @since 9.3
*/
- static protected StringBuffer addDefaultHeader() {
+ protected StringBuffer addGenericHeader() {
StringBuffer buffer = new StringBuffer();
outputCommentLine(buffer);
buffer.append(COMMENT_SYMBOL).append(WHITESPACE).append(ManagedMakeMessages.getResourceString(HEADER))
.append(NEWLINE);
+ addCustomHeader(buffer);
outputCommentLine(buffer);
buffer.append(NEWLINE);
return buffer;
}
/**
+ * @since 9.3
+ */
+ protected void addCustomHeader(StringBuffer buffer) {
+ }
+
+ /**
* Put COLS_PER_LINE comment charaters in the argument.
*/
static protected void outputCommentLine(StringBuffer buffer) {
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/gnu/IManagedBuildGnuToolInfo.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/gnu/IManagedBuildGnuToolInfo.java
index af854c47c40..a954e777a59 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/gnu/IManagedBuildGnuToolInfo.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/gnu/IManagedBuildGnuToolInfo.java
@@ -21,7 +21,9 @@ import java.util.Vector;
*
* @noextend This class is not intended to be subclassed by clients.
* @noimplement This interface is not intended to be implemented by clients.
+ * @deprecated Replaced by {@link org.eclipse.cdt.managedbuilder.makegen.gnu2.IManagedBuildGnuToolInfo}
*/
+@Deprecated
public interface IManagedBuildGnuToolInfo {
public final String DOT = "."; //$NON-NLS-1$
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/gnu/ManagedBuildGnuToolInfo.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/gnu/ManagedBuildGnuToolInfo.java
index d7e08aaf0c5..3aead3fdd1e 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/gnu/ManagedBuildGnuToolInfo.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/gnu/ManagedBuildGnuToolInfo.java
@@ -54,7 +54,9 @@ import org.eclipse.core.runtime.Path;
* and outputs while a Gnu makefile is being generated.
*
* @noextend This class is not intended to be subclassed by clients.
+ * @deprecated Replaced by {@link org.eclipse.cdt.managedbuilder.makegen.gnu2.ManagedBuildGnuToolInfo}
*/
+@Deprecated
public class ManagedBuildGnuToolInfo implements IManagedBuildGnuToolInfo {
/*
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/gnu2/GnuMakefileGenerator.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/gnu2/GnuMakefileGenerator.java
new file mode 100644
index 00000000000..327551719ca
--- /dev/null
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/gnu2/GnuMakefileGenerator.java
@@ -0,0 +1,4799 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2022 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Rational Software - Initial API and implementation
+ * ARM Ltd. - Minor changes to echo commands
+ * IBM Corporation
+ * Anna Dushistova (Mentor Graphics) - [307244] extend visibility of fields in GnuMakefileGenerator
+ * James Blackburn (Broadcom Corp.)
+ * Marc-Andre Laperle
+ * Liviu Ionescu - [322168]
+ * Dorothea Pilz-Roeder (Advantest Europe GmbH) - [180451]
+ * John Dallaway - [580441] fix processing on source folder deletion
+ *******************************************************************************/
+package org.eclipse.cdt.managedbuilder.makegen.gnu2;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.BitSet;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+import java.util.TreeMap;
+import java.util.TreeSet;
+import java.util.Vector;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import org.eclipse.cdt.core.CCorePlugin;
+import org.eclipse.cdt.core.settings.model.CSourceEntry;
+import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
+import org.eclipse.cdt.core.settings.model.ICSettingEntry;
+import org.eclipse.cdt.core.settings.model.ICSourceEntry;
+import org.eclipse.cdt.core.settings.model.util.CDataUtil;
+import org.eclipse.cdt.core.settings.model.util.IPathSettingsContainerVisitor;
+import org.eclipse.cdt.core.settings.model.util.PathSettingsContainer;
+import org.eclipse.cdt.managedbuilder.core.BuildException;
+import org.eclipse.cdt.managedbuilder.core.IBuildObject;
+import org.eclipse.cdt.managedbuilder.core.IBuilder;
+import org.eclipse.cdt.managedbuilder.core.IConfiguration;
+import org.eclipse.cdt.managedbuilder.core.IFileInfo;
+import org.eclipse.cdt.managedbuilder.core.IFolderInfo;
+import org.eclipse.cdt.managedbuilder.core.IInputType;
+import org.eclipse.cdt.managedbuilder.core.IManagedBuildInfo;
+import org.eclipse.cdt.managedbuilder.core.IManagedCommandLineGenerator;
+import org.eclipse.cdt.managedbuilder.core.IManagedCommandLineInfo;
+import org.eclipse.cdt.managedbuilder.core.IManagedOutputNameProvider;
+import org.eclipse.cdt.managedbuilder.core.IOption;
+import org.eclipse.cdt.managedbuilder.core.IOutputType;
+import org.eclipse.cdt.managedbuilder.core.IResourceInfo;
+import org.eclipse.cdt.managedbuilder.core.ITool;
+import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
+import org.eclipse.cdt.managedbuilder.core.ManagedBuilderCorePlugin;
+import org.eclipse.cdt.managedbuilder.internal.core.ManagedMakeMessages;
+import org.eclipse.cdt.managedbuilder.internal.core.Tool;
+import org.eclipse.cdt.managedbuilder.internal.macros.BuildMacroProvider;
+import org.eclipse.cdt.managedbuilder.internal.macros.FileContextData;
+import org.eclipse.cdt.managedbuilder.macros.BuildMacroException;
+import org.eclipse.cdt.managedbuilder.macros.IBuildMacroProvider;
+import org.eclipse.cdt.managedbuilder.makegen.IManagedBuilderMakefileGenerator;
+import org.eclipse.cdt.managedbuilder.makegen.IManagedBuilderMakefileGenerator2;
+import org.eclipse.cdt.managedbuilder.makegen.IManagedDependencyCalculator;
+import org.eclipse.cdt.managedbuilder.makegen.IManagedDependencyCommands;
+import org.eclipse.cdt.managedbuilder.makegen.IManagedDependencyGenerator;
+import org.eclipse.cdt.managedbuilder.makegen.IManagedDependencyGenerator2;
+import org.eclipse.cdt.managedbuilder.makegen.IManagedDependencyGeneratorType;
+import org.eclipse.cdt.managedbuilder.makegen.IManagedDependencyInfo;
+import org.eclipse.cdt.managedbuilder.makegen.IManagedDependencyPreBuild;
+import org.eclipse.cdt.managedbuilder.makegen.gnu.DefaultGCCDependencyCalculator3;
+import org.eclipse.cdt.managedbuilder.makegen.gnu.GnuDependencyGroupInfo;
+import org.eclipse.cdt.utils.EFSExtensionManager;
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceDelta;
+import org.eclipse.core.resources.IResourceDeltaVisitor;
+import org.eclipse.core.resources.IResourceProxy;
+import org.eclipse.core.resources.IResourceProxyVisitor;
+import org.eclipse.core.resources.IResourceStatus;
+import org.eclipse.core.resources.IWorkspaceRoot;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.MultiStatus;
+import org.eclipse.core.runtime.OperationCanceledException;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.SubProgressMonitor;
+
+/**
+ * This is a specialized makefile generator that takes advantage of the
+ * extensions present in Gnu Make.
+ * <p>
+ * If sub-classing and using {@link DefaultGCCDependencyCalculator3}, make sure to also override
+ * {@link DefaultGCCDependencyCalculator3#createMakefileGenerator()} to return the appropriate result.
+ *
+ * @since 1.2
+ * @noinstantiate This class is not intended to be instantiated by clients.
+ */
+public class GnuMakefileGenerator implements IManagedBuilderMakefileGenerator2 {
+ private static final IPath DOT_SLASH_PATH = new Path("./"); //$NON-NLS-1$
+
+ private Pattern doubleQuotedOption = Pattern.compile("--?[a-zA-Z]+.*?\\\".*?\\\".*"); //$NON-NLS-1$
+ private Pattern singleQuotedOption = Pattern.compile("--?[a-zA-Z]+.*?'.*?'.*"); //$NON-NLS-1$
+
+ /**
+ * This class walks the delta supplied by the build system to determine
+ * what resources have been changed. The logic is very simple. If a
+ * buildable resource (non-header) has been added or removed, the directories
+ * in which they are located are "dirty" so the makefile fragments for them
+ * have to be regenerated.
+ * <p>
+ * The actual dependencies are recalculated as a result of the build step
+ * itself. We are relying on make to do the right things when confronted
+ * with a dependency on a moved header file. That said, make will treat
+ * the missing header file in a dependency rule as a target it has to build
+ * unless told otherwise. These dummy targets are added to the makefile
+ * to avoid a missing target error.
+ */
+ public class ResourceDeltaVisitor implements IResourceDeltaVisitor {
+ private final GnuMakefileGenerator generator;
+ // private IManagedBuildInfo info;
+ private final IConfiguration config;
+
+ /**
+ * The constructor
+ */
+ public ResourceDeltaVisitor(GnuMakefileGenerator generator, IManagedBuildInfo info) {
+ this.generator = generator;
+ this.config = info.getDefaultConfiguration();
+ }
+
+ public ResourceDeltaVisitor(GnuMakefileGenerator generator, IConfiguration cfg) {
+ this.generator = generator;
+ this.config = cfg;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.core.resources.IResourceDeltaVisitor#visit(org.eclipse.core.resources.IResourceDelta)
+ */
+ @Override
+ public boolean visit(IResourceDelta delta) throws CoreException {
+ // Should the visitor keep iterating in current directory
+ boolean keepLooking = false;
+ IResource resource = delta.getResource();
+ IResourceInfo rcInfo = config.getResourceInfo(resource.getProjectRelativePath(), false);
+ IFolderInfo fo = null;
+ boolean isSource = isSource(resource.getProjectRelativePath());
+ if (rcInfo instanceof IFolderInfo) {
+ fo = (IFolderInfo) rcInfo;
+ }
+ // What kind of resource change has occurred
+ if (/*!rcInfo.isExcluded() && */isSource) {
+ if (resource.getType() == IResource.FILE) {
+ String ext = resource.getFileExtension();
+ switch (delta.getKind()) {
+ case IResourceDelta.ADDED:
+ if (!generator.isGeneratedResource(resource)) {
+ // This is a source file so just add its container
+ if (fo == null || fo.buildsFileType(ext)) {
+ generator.appendModifiedSubdirectory(resource);
+ }
+ }
+ break;
+ case IResourceDelta.REMOVED:
+ // we get this notification if a resource is moved too
+ if (!generator.isGeneratedResource(resource)) {
+ // This is a source file so just add its container
+ if (fo == null || fo.buildsFileType(ext)) {
+ generator.appendDeletedFile(resource);
+ if (resource.getParent().exists()) {
+ generator.appendModifiedSubdirectory(resource);
+ }
+ }
+ }
+ break;
+ default:
+ keepLooking = true;
+ break;
+ }
+ }
+
+ if (resource.getType() == IResource.FOLDER) {
+ // I only care about delete event
+ switch (delta.getKind()) {
+ case IResourceDelta.REMOVED:
+ if (!generator.isGeneratedResource(resource)) {
+ generator.appendDeletedSubdirectory((IContainer) resource);
+ }
+ break;
+ }
+ }
+ }
+ if (resource.getType() == IResource.PROJECT) {
+ // If there is a zero-length delta, something the project depends on has changed so just call make
+ IResourceDelta[] children = delta.getAffectedChildren();
+ if (children != null && children.length > 0) {
+ keepLooking = true;
+ }
+ } else {
+ // If the resource is part of the generated directory structure don't recurse
+ if (resource.getType() == IResource.ROOT || (isSource && !generator.isGeneratedResource(resource))) {
+ keepLooking = true;
+ }
+ }
+
+ return keepLooking;
+ }
+ }
+
+ /**
+ * This class is used to recursively walk the project and determine which
+ * modules contribute buildable source files.
+ */
+ protected class ResourceProxyVisitor implements IResourceProxyVisitor {
+ private final GnuMakefileGenerator generator;
+ private final IConfiguration config;
+ // private IManagedBuildInfo info;
+
+ /**
+ * Constructs a new resource proxy visitor to quickly visit project
+ * resources.
+ */
+ public ResourceProxyVisitor(GnuMakefileGenerator generator, IManagedBuildInfo info) {
+ this.generator = generator;
+ this.config = info.getDefaultConfiguration();
+ }
+
+ public ResourceProxyVisitor(GnuMakefileGenerator generator, IConfiguration cfg) {
+ this.generator = generator;
+ this.config = cfg;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.core.resources.IResourceProxyVisitor#visit(org.eclipse.core.resources.IResourceProxy)
+ */
+ @Override
+ public boolean visit(IResourceProxy proxy) throws CoreException {
+ // No point in proceeding, is there
+ if (generator == null) {
+ return false;
+ }
+
+ IResource resource = proxy.requestResource();
+ boolean isSource = isSource(resource.getProjectRelativePath());
+
+ // Is this a resource we should even consider
+ if (proxy.getType() == IResource.FILE) {
+ // If this resource has a Resource Configuration and is not excluded or
+ // if it has a file extension that one of the tools builds, add the sudirectory to the list
+ // boolean willBuild = false;
+ IResourceInfo rcInfo = config.getResourceInfo(resource.getProjectRelativePath(), false);
+ if (isSource/* && !rcInfo.isExcluded()*/) {
+ boolean willBuild = false;
+ if (rcInfo instanceof IFolderInfo) {
+ String ext = resource.getFileExtension();
+ if (((IFolderInfo) rcInfo).buildsFileType(ext) &&
+ // If this file resource is a generated resource, then it is uninteresting
+ !generator.isGeneratedResource(resource)) {
+ willBuild = true;
+ }
+ } else {
+ willBuild = true;
+ }
+
+ if (willBuild)
+ generator.appendBuildSubdirectory(resource);
+ }
+ // if (willBuild) {
+ // if ((resConfig == null) || (!(resConfig.isExcluded()))) {
+ // generator.appendBuildSubdirectory(resource);
+ // }
+ // }
+ return false;
+ } else if (proxy.getType() == IResource.FOLDER) {
+
+ if (!isSource || generator.isGeneratedResource(resource))
+ return false;
+ return true;
+ }
+
+ // Recurse into subdirectories
+ return true;
+ }
+
+ }
+
+ // String constants for makefile contents and messages
+ private static final String COMMENT = "MakefileGenerator.comment"; //$NON-NLS-1$
+ //private static final String AUTO_DEP = COMMENT + ".autodeps"; //$NON-NLS-1$
+ //private static final String MESSAGE = "ManagedMakeBuilder.message"; //$NON-NLS-1$
+ //private static final String BUILD_ERROR = MESSAGE + ".error"; //$NON-NLS-1$
+
+ //private static final String DEP_INCL = COMMENT + ".module.dep.includes"; //$NON-NLS-1$
+ private static final String HEADER = COMMENT + ".header"; //$NON-NLS-1$
+
+ protected static final String MESSAGE_FINISH_BUILD = ManagedMakeMessages
+ .getResourceString("MakefileGenerator.message.finish.build"); //$NON-NLS-1$
+ protected static final String MESSAGE_FINISH_FILE = ManagedMakeMessages
+ .getResourceString("MakefileGenerator.message.finish.file"); //$NON-NLS-1$
+ protected static final String MESSAGE_START_BUILD = ManagedMakeMessages
+ .getResourceString("MakefileGenerator.message.start.build"); //$NON-NLS-1$
+ protected static final String MESSAGE_START_FILE = ManagedMakeMessages
+ .getResourceString("MakefileGenerator.message.start.file"); //$NON-NLS-1$
+ protected static final String MESSAGE_START_DEPENDENCY = ManagedMakeMessages
+ .getResourceString("MakefileGenerator.message.start.dependency"); //$NON-NLS-1$
+ protected static final String MESSAGE_NO_TARGET_TOOL = ManagedMakeMessages
+ .getResourceString("MakefileGenerator.message.no.target"); //$NON-NLS-1$
+ //private static final String MOD_INCL = COMMENT + ".module.make.includes"; //$NON-NLS-1$
+ private static final String MOD_LIST = COMMENT + ".module.list"; //$NON-NLS-1$
+ private static final String MOD_VARS = COMMENT + ".module.variables"; //$NON-NLS-1$
+ private static final String MOD_RULES = COMMENT + ".build.rule"; //$NON-NLS-1$
+ private static final String BUILD_TOP = COMMENT + ".build.toprules"; //$NON-NLS-1$
+ private static final String ALL_TARGET = COMMENT + ".build.alltarget"; //$NON-NLS-1$
+ private static final String MAINBUILD_TARGET = COMMENT + ".build.mainbuildtarget"; //$NON-NLS-1$
+ private static final String BUILD_TARGETS = COMMENT + ".build.toptargets"; //$NON-NLS-1$
+ private static final String SRC_LISTS = COMMENT + ".source.list"; //$NON-NLS-1$
+
+ private static final String EMPTY_STRING = ""; //$NON-NLS-1$
+ private static final String[] EMPTY_STRING_ARRAY = new String[0];
+
+ private static final String OBJS_MACRO = "OBJS"; //$NON-NLS-1$
+ private static final String MACRO_ADDITION_ADDPREFIX_HEADER = "${addprefix "; //$NON-NLS-1$
+ private static final String MACRO_ADDITION_ADDPREFIX_SUFFIX = "," + WHITESPACE + LINEBREAK; //$NON-NLS-1$
+ private static final String MACRO_ADDITION_PREFIX_SUFFIX = "+=" + WHITESPACE + LINEBREAK; //$NON-NLS-1$
+ private static final String PREBUILD = "pre-build"; //$NON-NLS-1$
+ private static final String MAINBUILD = "main-build"; //$NON-NLS-1$
+ private static final String POSTBUILD = "post-build"; //$NON-NLS-1$
+ private static final String SECONDARY_OUTPUTS = "secondary-outputs"; //$NON-NLS-1$
+
+ /**
+ * On Windows XP and above, the maximum command line length is 8191, on Linux it is at least 131072, but
+ * that includes the environment. We want to limit the invocation of a single command to this number of
+ * characters, and we want to ensure that the number isn't so low as to slow down operation.
+ *
+ * Doing each rm in its own command would be very slow, especially on Windows.
+ */
+ private static final int MAX_CLEAN_LENGTH = 6000;
+
+ // Enumerations
+ public static final int PROJECT_RELATIVE = 1, PROJECT_SUBDIR_RELATIVE = 2, ABSOLUTE = 3;
+
+ class ToolInfoHolder {
+ ITool[] buildTools;
+ boolean[] buildToolsUsed;
+ ManagedBuildGnuToolInfo[] gnuToolInfos;
+ Set<String> outputExtensionsSet;
+ List<IPath> dependencyMakefiles;
+ }
+
+ // Local variables needed by generator
+ private String buildTargetName;
+ private String buildTargetExt;
+ private IConfiguration config;
+ private IBuilder builder;
+ // private ITool[] buildTools;
+ // private boolean[] buildToolsUsed;
+ // private ManagedBuildGnuToolInfo[] gnuToolInfos;
+ private PathSettingsContainer toolInfos;
+ private Vector<IResource> deletedFileList;
+ private Vector<IResource> deletedDirList;
+ // private IManagedBuildInfo info;
+ // private IConfiguration cfg
+ private Vector<IResource> invalidDirList;
+ /** Collection of Folders in which sources files have been modified */
+ private Collection<IContainer> modifiedList;
+ private IProgressMonitor monitor;
+ private IProject project;
+ private IResource[] projectResources;
+ private Vector<String> ruleList;
+ private Vector<String> depLineList; // String's of additional dependency lines
+ private Vector<String> depRuleList; // String's of rules for generating dependency files
+ /** Collection of Containers which contribute source files to the build */
+ private Collection<IContainer> subdirList;
+ private IPath topBuildDir; // Build directory - relative to the workspace
+ // private Set outputExtensionsSet;
+ //=== Maps of macro names (String) to values (List)
+ // These are TreeMaps to avoid nondeterministic output because the
+ // makefile output depends on their iteration order (bug 575702).
+ // Map of source file build variable names to a List of source file Path's
+ private final Map<String, List<IPath>> buildSrcVars = new TreeMap<>();
+ // Map of output file build variable names to a List of output file Path's
+ private final Map<String, List<IPath>> buildOutVars = new TreeMap<>();
+ // Map of dependency file build variable names to a List of GnuDependencyGroupInfo objects
+ private final Map<String, GnuDependencyGroupInfo> buildDepVars = new TreeMap<>();
+ private final Map<String, Set<String>> topBuildOutVars = new TreeMap<>();
+ // Dependency file variables
+ // private Vector dependencyMakefiles; // IPath's - relative to the top build directory or absolute
+
+ private ICSourceEntry srcEntries[];
+
+ public GnuMakefileGenerator() {
+ super();
+ }
+
+ /*************************************************************************
+ * IManagedBuilderMakefileGenerator M E T H O D S
+ ************************************************************************/
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.makegen.IManagedBuilderMakefileGenerator#initialize(IProject, IManagedBuildInfo, IProgressMonitor)
+ */
+ @Override
+ public void initialize(IProject project, IManagedBuildInfo info, IProgressMonitor monitor) {
+ // Save the project so we can get path and member information
+ this.project = project;
+ try {
+ projectResources = project.members();
+ } catch (CoreException e) {
+ projectResources = null;
+ }
+ // Save the monitor reference for reporting back to the user
+ this.monitor = monitor;
+ // Get the build info for the project
+ // this.info = info;
+ // Get the name of the build target
+ buildTargetName = info.getBuildArtifactName();
+ // Get its extension
+ buildTargetExt = info.getBuildArtifactExtension();
+
+ try {
+ //try to resolve the build macros in the target extension
+ buildTargetExt = ManagedBuildManager.getBuildMacroProvider().resolveValueToMakefileFormat(buildTargetExt,
+ "", //$NON-NLS-1$
+ " ", //$NON-NLS-1$
+ IBuildMacroProvider.CONTEXT_CONFIGURATION, info.getDefaultConfiguration());
+ } catch (BuildMacroException e) {
+ }
+
+ try {
+ //try to resolve the build macros in the target name
+ String resolved = ManagedBuildManager.getBuildMacroProvider().resolveValueToMakefileFormat(buildTargetName,
+ "", //$NON-NLS-1$
+ " ", //$NON-NLS-1$
+ IBuildMacroProvider.CONTEXT_CONFIGURATION, info.getDefaultConfiguration());
+ if (resolved != null && (resolved = resolved.trim()).length() > 0)
+ buildTargetName = resolved;
+ } catch (BuildMacroException e) {
+ }
+
+ if (buildTargetExt == null) {
+ buildTargetExt = ""; //$NON-NLS-1$
+ }
+ // Cache the build tools
+ config = info.getDefaultConfiguration();
+ builder = config.getEditableBuilder();
+ initToolInfos();
+ //set the top build dir path
+ initializeTopBuildDir(info.getConfigurationName());
+ }
+
+ /**
+ * This method calls the dependency postprocessors defined for the tool chain
+ */
+ private void callDependencyPostProcessors(IResourceInfo rcInfo, ToolInfoHolder h, IFile depFile,
+ IManagedDependencyGenerator2[] postProcessors, // This array is the same size as the buildTools array and has
+ // an entry set when the corresponding tool has a dependency calculator
+ boolean callPopulateDummyTargets, boolean force) throws CoreException {
+ try {
+ // IPath path = depFile.getFullPath();
+ // path = inFullPathFromOutFullPath(path);
+ // IResourceInfo rcInfo = config.getResourceInfo(path, false);
+ // IFolderInfo fo;
+ // if(rcInfo instanceof IFileInfo){
+ // fo = (IFolderInfo)config.getResourceInfo(path.removeLastSegments(1), false);
+ // } else {
+ // fo = (IFolderInfo)rcInfo;
+ // }
+ // ToolInfoHolder h = getToolInfo(fo.getPath());
+ updateMonitor(ManagedMakeMessages.getFormattedString("GnuMakefileGenerator.message.postproc.dep.file", //$NON-NLS-1$
+ depFile.getName()));
+ if (postProcessors != null) {
+ IPath absolutePath = new Path(
+ EFSExtensionManager.getDefault().getPathFromURI(depFile.getLocationURI()));
+ // Convert to build directory relative
+ IPath depPath = ManagedBuildManager.calculateRelativePath(getTopBuildDir(), absolutePath);
+ for (int i = 0; i < postProcessors.length; i++) {
+ IManagedDependencyGenerator2 depGen = postProcessors[i];
+ if (depGen != null) {
+ depGen.postProcessDependencyFile(depPath, config, h.buildTools[i], getTopBuildDir());
+ }
+ }
+ }
+ if (callPopulateDummyTargets) {
+ generateDummyTargets(rcInfo, depFile, force);
+ }
+ } catch (CoreException e) {
+ throw e;
+ } catch (IOException e) {
+ }
+ }
+
+ /**
+ * This method collects the dependency postprocessors and file extensions defined for the tool chain
+ */
+ private boolean collectDependencyGeneratorInformation(ToolInfoHolder h, Vector<String> depExts, // Vector of dependency file extensions
+ IManagedDependencyGenerator2[] postProcessors) {
+
+ boolean callPopulateDummyTargets = false;
+ for (int i = 0; i < h.buildTools.length; i++) {
+ ITool tool = h.buildTools[i];
+ IManagedDependencyGeneratorType depType = tool
+ .getDependencyGeneratorForExtension(tool.getDefaultInputExtension());
+ if (depType != null) {
+ int calcType = depType.getCalculatorType();
+ if (calcType <= IManagedDependencyGeneratorType.TYPE_OLD_TYPE_LIMIT) {
+ if (calcType == IManagedDependencyGeneratorType.TYPE_COMMAND) {
+ callPopulateDummyTargets = true;
+ depExts.add(DEP_EXT);
+ }
+ } else {
+ if (calcType == IManagedDependencyGeneratorType.TYPE_BUILD_COMMANDS
+ || calcType == IManagedDependencyGeneratorType.TYPE_PREBUILD_COMMANDS) {
+ IManagedDependencyGenerator2 depGen = (IManagedDependencyGenerator2) depType;
+ String depExt = depGen.getDependencyFileExtension(config, tool);
+ if (depExt != null) {
+ postProcessors[i] = depGen;
+ depExts.add(depExt);
+ }
+ }
+ }
+ }
+ }
+ return callPopulateDummyTargets;
+ }
+
+ protected boolean isSource(IPath path) {
+ return !CDataUtil.isExcluded(path, srcEntries);
+ // path = path.makeRelative();
+ // for(int i = 0; i < srcPaths.length; i++){
+ // if(srcPaths[i].isPrefixOf(path))
+ // return true;
+ // }
+ // return false;
+ }
+
+ private class DepInfo {
+ Vector<String> depExts;
+ IManagedDependencyGenerator2[] postProcessors;
+ boolean callPopulateDummyTargets;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.makegen.IManagedBuilderMakefileGenerator#generateDependencies()
+ */
+ @Override
+ public void generateDependencies() throws CoreException {
+ final PathSettingsContainer postProcs = PathSettingsContainer.createRootContainer();
+ // Note: PopulateDummyTargets is a hack for the pre-3.x GCC compilers
+
+ // Collect the methods that will need to be called
+ toolInfos.accept(new IPathSettingsContainerVisitor() {
+ @Override
+ public boolean visit(PathSettingsContainer container) {
+ ToolInfoHolder h = (ToolInfoHolder) container.getValue();
+ Vector<String> depExts = new Vector<>(); // Vector of dependency file extensions
+ IManagedDependencyGenerator2[] postProcessors = new IManagedDependencyGenerator2[h.buildTools.length];
+ boolean callPopulateDummyTargets = collectDependencyGeneratorInformation(h, depExts, postProcessors);
+
+ // Is there anyone to call if we do find dependency files?
+ if (!callPopulateDummyTargets) {
+ int i;
+ for (i = 0; i < postProcessors.length; i++) {
+ if (postProcessors[i] != null)
+ break;
+ }
+ if (i == postProcessors.length)
+ return true;
+ }
+
+ PathSettingsContainer child = postProcs.getChildContainer(container.getPath(), true, true);
+ DepInfo di = new DepInfo();
+ di.depExts = depExts;
+ di.postProcessors = postProcessors;
+ di.callPopulateDummyTargets = callPopulateDummyTargets;
+ child.setValue(di);
+
+ return true;
+ }
+ });
+
+ IWorkspaceRoot root = CCorePlugin.getWorkspace().getRoot();
+ for (IResource res : getSubdirList()) {
+ // The builder creates a subdir with same name as source in the build location
+ IContainer subDir = (IContainer) res;
+ IPath projectRelativePath = subDir.getProjectRelativePath();
+ IResourceInfo rcInfo = config.getResourceInfo(projectRelativePath, false);
+ PathSettingsContainer cr = postProcs.getChildContainer(rcInfo.getPath(), false, true);
+ if (cr == null || cr.getValue() == null)
+ continue;
+
+ DepInfo di = (DepInfo) cr.getValue();
+
+ ToolInfoHolder h = getToolInfo(projectRelativePath);
+ IPath buildRelativePath = topBuildDir.append(projectRelativePath);
+ IFolder buildFolder = root.getFolder(buildRelativePath);
+ if (buildFolder == null)
+ continue;
+
+ // Find all of the dep files in the generated subdirectories
+ IResource[] files = buildFolder.members();
+ for (IResource file : files) {
+ String fileExt = file.getFileExtension();
+ for (String ext : di.depExts) {
+ if (ext.equals(fileExt)) {
+ IFile depFile = root.getFile(file.getFullPath());
+ if (depFile == null)
+ continue;
+ callDependencyPostProcessors(rcInfo, h, depFile, di.postProcessors, di.callPopulateDummyTargets,
+ false);
+ }
+ }
+ }
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.makegen.IManagedBuilderMakefileGenerator#generateMakefiles(org.eclipse.core.resources.IResourceDelta)
+ */
+ @Override
+ public MultiStatus generateMakefiles(IResourceDelta delta) throws CoreException {
+ /*
+ * Let's do a sanity check right now.
+ *
+ * 1. This is an incremental build, so if the top-level directory is not
+ * there, then a rebuild is needed.
+ */
+ IFolder folder = project.getFolder(computeTopBuildDir(config.getName()));
+ if (!folder.exists()) {
+ return regenerateMakefiles();
+ }
+
+ // Return value
+ MultiStatus status;
+
+ // Visit the resources in the delta and compile a list of subdirectories to regenerate
+ updateMonitor(
+ ManagedMakeMessages.getFormattedString("MakefileGenerator.message.calc.delta", project.getName())); //$NON-NLS-1$
+ ResourceDeltaVisitor visitor = new ResourceDeltaVisitor(this, config);
+ delta.accept(visitor);
+ checkCancel();
+
+ // Get all the subdirectories participating in the build
+ updateMonitor(
+ ManagedMakeMessages.getFormattedString("MakefileGenerator.message.finding.sources", project.getName())); //$NON-NLS-1$
+ ResourceProxyVisitor resourceVisitor = new ResourceProxyVisitor(this, config);
+ project.accept(resourceVisitor, IResource.NONE);
+ checkCancel();
+
+ // Bug 303953: Ensure that if all resources have been removed from a folder, than the folder still
+ // appears in the subdir list so it's subdir.mk is correctly regenerated
+ getSubdirList().addAll(getModifiedList());
+
+ // Make sure there is something to build
+ if (getSubdirList().isEmpty()) {
+ String info = ManagedMakeMessages.getFormattedString("MakefileGenerator.warning.no.source", //$NON-NLS-1$
+ project.getName());
+ updateMonitor(info);
+ status = new MultiStatus(ManagedBuilderCorePlugin.getUniqueIdentifier(), IStatus.INFO, "", //$NON-NLS-1$
+ null);
+ status.add(new Status(IStatus.INFO, ManagedBuilderCorePlugin.getUniqueIdentifier(), NO_SOURCE_FOLDERS, info,
+ null));
+ return status;
+ }
+
+ // Make sure the build directory is available
+ ensureTopBuildDir();
+ checkCancel();
+
+ // Make sure that there is a makefile containing all the folders participating
+ IPath srcsFilePath = topBuildDir.append(SRCSFILE_NAME);
+ IFile srcsFileHandle = createFile(srcsFilePath);
+ buildSrcVars.clear();
+ buildOutVars.clear();
+ buildDepVars.clear();
+ topBuildOutVars.clear();
+ populateSourcesMakefile(srcsFileHandle);
+ checkCancel();
+
+ // Regenerate any fragments that are missing for the exisiting directories NOT modified
+ for (IResource res : getSubdirList()) {
+ IContainer subdirectory = (IContainer) res;
+ if (!getModifiedList().contains(subdirectory)) {
+ // Make sure the directory exists (it may have been deleted)
+ if (!subdirectory.exists()) {
+ appendDeletedSubdirectory(subdirectory);
+ continue;
+ }
+ // Make sure a fragment makefile exists
+ IPath fragmentPath = getBuildWorkingDir().append(subdirectory.getProjectRelativePath())
+ .append(MODFILE_NAME);
+ IFile makeFragment = project.getFile(fragmentPath);
+ if (!makeFragment.exists()) {
+ // If one or both are missing, then add it to the list to be generated
+ getModifiedList().add(subdirectory);
+ }
+ }
+ }
+
+ // Delete the old dependency files for any deleted resources
+ for (IResource deletedFile : getDeletedFileList()) {
+ deleteDepFile(deletedFile);
+ deleteBuildTarget(deletedFile);
+ }
+
+ // Regenerate any fragments for modified directories
+ for (IResource res : getModifiedList()) {
+ IContainer subDir = (IContainer) res;
+ // Make sure the directory exists (it may have been deleted)
+ if (!subDir.exists()) {
+ appendDeletedSubdirectory(subDir);
+ continue;
+ }
+ //populateFragmentMakefile(subDir); // See below
+ checkCancel();
+ }
+
+ // Recreate all module makefiles
+ // NOTE WELL: For now, always recreate all of the fragment makefile. This is necessary
+ // in order to re-populate the buildVariable lists. In the future, the list could
+ // possibly segmented by subdir so that all fragments didn't need to be
+ // regenerated
+ for (IResource res : getSubdirList()) {
+ IContainer subDir = (IContainer) res;
+ try {
+ populateFragmentMakefile(subDir);
+ } catch (CoreException e) {
+ // Probably should ask user if they want to continue
+ checkCancel();
+ continue;
+ }
+ checkCancel();
+ }
+
+ // Calculate the inputs and outputs of the Tools to be generated in the main makefile
+ calculateToolInputsOutputs();
+ checkCancel();
+
+ // Re-create the top-level makefile
+ IPath makefilePath = topBuildDir.append(MAKEFILE_NAME);
+ IFile makefileHandle = createFile(makefilePath);
+ populateTopMakefile(makefileHandle, false);
+ checkCancel();
+
+ // Remove deleted folders from generated build directory
+ for (IResource res : getDeletedDirList()) {
+ IContainer subDir = (IContainer) res;
+ removeGeneratedDirectory(subDir);
+ checkCancel();
+ }
+
+ // How did we do
+ if (!getInvalidDirList().isEmpty()) {
+ status = new MultiStatus(ManagedBuilderCorePlugin.getUniqueIdentifier(), IStatus.WARNING, "", //$NON-NLS-1$
+ null);
+ // Add a new status for each of the bad folders
+ // TODO: fix error message
+ for (IResource res : getInvalidDirList()) {
+ IContainer subDir = (IContainer) res;
+ status.add(new Status(IStatus.WARNING, ManagedBuilderCorePlugin.getUniqueIdentifier(), SPACES_IN_PATH,
+ subDir.getFullPath().toString(), null));
+ }
+ } else {
+ status = new MultiStatus(ManagedBuilderCorePlugin.getUniqueIdentifier(), IStatus.OK, "", //$NON-NLS-1$
+ null);
+ }
+
+ return status;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.makegen.IManagedBuilderMakefileGenerator#getBuildWorkingDir()
+ */
+ @Override
+ public IPath getBuildWorkingDir() {
+ if (topBuildDir != null) {
+ return topBuildDir.removeFirstSegments(1);
+ }
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.makegen.IManagedBuilderMakefileGenerator#getMakefileName()
+ */
+ @Override
+ public String getMakefileName() {
+ return MAKEFILE_NAME;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.makegen.IManagedBuilderMakefileGenerator#isGeneratedResource(org.eclipse.core.resources.IResource)
+ */
+ @Override
+ public boolean isGeneratedResource(IResource resource) {
+ // Is this a generated directory ...
+ IPath path = resource.getProjectRelativePath();
+ //TODO: fix to use builder output dir instead
+ String[] configNames = ManagedBuildManager.getBuildInfo(project).getConfigurationNames();
+ for (String name : configNames) {
+ IPath pathOfConfig = computeTopBuildDir(name);
+ if (pathOfConfig.isPrefixOf(path)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private static void save(StringBuffer buffer, IFile file) throws CoreException {
+ String encoding = null;
+ try {
+ encoding = file.getCharset();
+ } catch (CoreException ce) {
+ // use no encoding
+ }
+
+ byte[] bytes = null;
+ if (encoding != null) {
+ try {
+ bytes = buffer.toString().getBytes(encoding);
+ } catch (Exception e) {
+ }
+ } else {
+ bytes = buffer.toString().getBytes();
+ }
+
+ byte[] oldBytes = null;
+ try (InputStream is = file.getContents(true)) {
+ oldBytes = is.readAllBytes();
+ } catch (IOException e) {
+ }
+
+ // Only write file if content differs
+ if (!Arrays.equals(oldBytes, bytes)) {
+ ByteArrayInputStream stream = new ByteArrayInputStream(bytes);
+ // use a platform operation to update the resource contents
+ boolean force = true;
+ file.setContents(stream, force, false, null); // Don't record history
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.makegen.IManagedBuilderMakefileGenerator#regenerateDependencies()
+ */
+ @Override
+ public void regenerateDependencies(boolean force) throws CoreException {
+ // A hack for the pre-3.x GCC compilers is to put dummy targets for deps
+ final IWorkspaceRoot root = CCorePlugin.getWorkspace().getRoot();
+ final CoreException[] es = new CoreException[1];
+
+ toolInfos.accept(new IPathSettingsContainerVisitor() {
+ @Override
+ public boolean visit(PathSettingsContainer container) {
+ ToolInfoHolder h = (ToolInfoHolder) container.getValue();
+ // Collect the methods that will need to be called
+ Vector<String> depExts = new Vector<>(); // Vector of dependency file extensions
+ IManagedDependencyGenerator2[] postProcessors = new IManagedDependencyGenerator2[h.buildTools.length];
+ boolean callPopulateDummyTargets = collectDependencyGeneratorInformation(h, depExts, postProcessors);
+
+ // Is there anyone to call if we do find dependency files?
+ if (!callPopulateDummyTargets) {
+ int i;
+ for (i = 0; i < postProcessors.length; i++) {
+ if (postProcessors[i] != null)
+ break;
+ }
+ if (i == postProcessors.length)
+ return true;
+ }
+
+ IResourceInfo rcInfo = config.getResourceInfo(container.getPath(), false);
+ for (IPath path : getDependencyMakefiles(h)) {
+ // The path to search for the dependency makefile
+ IPath relDepFilePath = topBuildDir.append(path);
+ IFile depFile = root.getFile(relDepFilePath);
+ if (depFile == null || !depFile.isAccessible())
+ continue;
+ try {
+ callDependencyPostProcessors(rcInfo, h, depFile, postProcessors, callPopulateDummyTargets,
+ true);
+ } catch (CoreException e) {
+ es[0] = e;
+ return false;
+ }
+ }
+ return true;
+ }
+ });
+
+ if (es[0] != null)
+ throw es[0];
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.makegen.IManagedBuilderMakefileGenerator#regenerateMakefiles()
+ */
+ @Override
+ public MultiStatus regenerateMakefiles() throws CoreException {
+ MultiStatus status;
+ // Visit the resources in the project
+ ResourceProxyVisitor visitor = new ResourceProxyVisitor(this, config);
+ project.accept(visitor, IResource.NONE);
+
+ // See if the user has cancelled the build
+ checkCancel();
+
+ // Populate the makefile if any buildable source files have been found in the project
+ if (getSubdirList().isEmpty()) {
+ String info = ManagedMakeMessages.getFormattedString("MakefileGenerator.warning.no.source", //$NON-NLS-1$
+ project.getName());
+ updateMonitor(info);
+ status = new MultiStatus(ManagedBuilderCorePlugin.getUniqueIdentifier(), IStatus.INFO, "", //$NON-NLS-1$
+ null);
+ status.add(new Status(IStatus.INFO, ManagedBuilderCorePlugin.getUniqueIdentifier(), NO_SOURCE_FOLDERS, info,
+ null));
+ return status;
+ }
+
+ // Create the top-level directory for the build output
+ ensureTopBuildDir();
+ checkCancel();
+
+ // Get the list of subdirectories
+ IPath srcsFilePath = topBuildDir.append(SRCSFILE_NAME);
+ IFile srcsFileHandle = createFile(srcsFilePath);
+ buildSrcVars.clear();
+ buildOutVars.clear();
+ buildDepVars.clear();
+ topBuildOutVars.clear();
+ populateSourcesMakefile(srcsFileHandle);
+ checkCancel();
+
+ // Now populate the module makefiles
+ for (IResource res : getSubdirList()) {
+ IContainer subDir = (IContainer) res;
+ try {
+ populateFragmentMakefile(subDir);
+ } catch (CoreException e) {
+ // Probably should ask user if they want to continue
+ checkCancel();
+ continue;
+ }
+ checkCancel();
+ }
+
+ // Calculate the inputs and outputs of the Tools to be generated in the main makefile
+ calculateToolInputsOutputs();
+ checkCancel();
+
+ // Create the top-level makefile
+ IPath makefilePath = topBuildDir.append(MAKEFILE_NAME);
+ IFile makefileHandle = createFile(makefilePath);
+ populateTopMakefile(makefileHandle, true);
+ checkCancel();
+
+ // How did we do
+ if (!getInvalidDirList().isEmpty()) {
+ status = new MultiStatus(ManagedBuilderCorePlugin.getUniqueIdentifier(), IStatus.WARNING, "", //$NON-NLS-1$
+ null);
+ // Add a new status for each of the bad folders
+ // TODO: fix error message
+ for (IResource dir : getInvalidDirList()) {
+ status.add(new Status(IStatus.WARNING, ManagedBuilderCorePlugin.getUniqueIdentifier(), SPACES_IN_PATH,
+ dir.getFullPath().toString(), null));
+ }
+ } else {
+ status = new MultiStatus(ManagedBuilderCorePlugin.getUniqueIdentifier(), IStatus.OK, "", //$NON-NLS-1$
+ null);
+ }
+ return status;
+ }
+
+ /*************************************************************************
+ * M A K E F I L E S P O P U L A T I O N M E T H O D S
+ ************************************************************************/
+
+ /**
+ * This method generates a "fragment" make file (subdir.mk).
+ * One of these is generated for each project directory/subdirectory
+ * that contains source files.
+ */
+ protected void populateFragmentMakefile(IContainer module) throws CoreException {
+ // Calculate the new directory relative to the build output
+ IPath moduleRelativePath = module.getProjectRelativePath();
+ IPath buildRoot = getBuildWorkingDir();
+ if (buildRoot == null) {
+ return;
+ }
+
+ IPath moduleOutputPath = buildRoot.append(moduleRelativePath);
+ updateMonitor(ManagedMakeMessages.getFormattedString("MakefileGenerator.message.gen.source.makefile", //$NON-NLS-1$
+ moduleOutputPath.toString()));
+
+ // Now create the directory
+ IPath moduleOutputDir = createDirectory(moduleOutputPath.toString());
+
+ // Create a module makefile
+ IFile modMakefile = createFile(moduleOutputDir.append(MODFILE_NAME));
+ StringBuffer makeBuf = new StringBuffer();
+ makeBuf.append(addFragmentMakefileHeader());
+ makeBuf.append(addSources(module, toCleanTarget(moduleRelativePath)));
+
+ // Save the files
+ save(makeBuf, modMakefile);
+ }
+
+ protected void populateSourcesMakefile(IFile fileHandle) throws CoreException {
+ // Add the comment
+ StringBuffer buffer = addGenericHeader();
+
+ // Determine the set of macros
+ toolInfos.accept(new IPathSettingsContainerVisitor() {
+
+ @Override
+ public boolean visit(PathSettingsContainer container) {
+ ToolInfoHolder h = (ToolInfoHolder) container.getValue();
+ ITool[] buildTools = h.buildTools;
+ HashSet<String> handledInputExtensions = new HashSet<>();
+ String buildMacro;
+ for (ITool buildTool : buildTools) {
+ if (buildTool.getCustomBuildStep())
+ continue;
+ // Add the known sources macros
+ String[] extensionsList = buildTool.getAllInputExtensions();
+ for (String ext : extensionsList) {
+ // create a macro of the form "EXTENSION_SRCS :="
+ String extensionName = ext;
+ if (//!getOutputExtensions().contains(extensionName) &&
+ !handledInputExtensions.contains(extensionName)) {
+ handledInputExtensions.add(extensionName);
+ buildMacro = getSourceMacroName(extensionName).toString();
+ if (!buildSrcVars.containsKey(buildMacro)) {
+ buildSrcVars.put(buildMacro, new ArrayList<IPath>());
+ }
+ // Add any generated dependency file macros
+ IManagedDependencyGeneratorType depType = buildTool
+ .getDependencyGeneratorForExtension(extensionName);
+ if (depType != null) {
+ int calcType = depType.getCalculatorType();
+ if (calcType == IManagedDependencyGeneratorType.TYPE_COMMAND
+ || calcType == IManagedDependencyGeneratorType.TYPE_BUILD_COMMANDS
+ || calcType == IManagedDependencyGeneratorType.TYPE_PREBUILD_COMMANDS) {
+ buildMacro = getDepMacroName(extensionName).toString();
+ if (!buildDepVars.containsKey(buildMacro)) {
+ buildDepVars.put(buildMacro, new GnuDependencyGroupInfo(buildMacro,
+ (calcType != IManagedDependencyGeneratorType.TYPE_PREBUILD_COMMANDS)));
+ }
+ if (!buildOutVars.containsKey(buildMacro)) {
+ buildOutVars.put(buildMacro, new ArrayList<IPath>());
+ }
+ }
+ }
+ }
+ }
+ // Add the specified output build variables
+ IOutputType[] outTypes = buildTool.getOutputTypes();
+ if (outTypes != null && outTypes.length > 0) {
+ for (IOutputType outputType : outTypes) {
+ buildMacro = outputType.getBuildVariable();
+ if (!buildOutVars.containsKey(buildMacro)) {
+ buildOutVars.put(buildMacro, new ArrayList<IPath>());
+ }
+ }
+ } else {
+ // For support of pre-CDT 3.0 integrations.
+ buildMacro = OBJS_MACRO;
+ if (!buildOutVars.containsKey(buildMacro)) {
+ buildOutVars.put(buildMacro, new ArrayList<IPath>());
+ }
+ }
+ }
+ return true;
+ }
+ });
+ // Add the macros to the makefile
+ for (Entry<String, List<IPath>> entry : buildSrcVars.entrySet()) {
+ String macroName = entry.getKey();
+ buffer.append(macroName).append(WHITESPACE).append(":=").append(WHITESPACE).append(NEWLINE); //$NON-NLS-1$
+ }
+ Set<Entry<String, List<IPath>>> set = buildOutVars.entrySet();
+ for (Entry<String, List<IPath>> entry : set) {
+ String macroName = entry.getKey();
+ buffer.append(macroName).append(WHITESPACE).append(":=").append(WHITESPACE).append(NEWLINE); //$NON-NLS-1$
+ }
+
+ // Add a list of subdirectories to the makefile
+ buffer.append(NEWLINE).append(addSubdirectories());
+
+ // Save the file
+ save(buffer, fileHandle);
+ }
+
+ /**
+ * Create the entire contents of the makefile.
+ *
+ * @param fileHandle The file to place the contents in.
+ * @param rebuild FLag signaling that the user is doing a full rebuild
+ */
+ protected void populateTopMakefile(IFile fileHandle, boolean rebuild) throws CoreException {
+ StringBuffer buffer = new StringBuffer();
+
+ // Add the header
+ buffer.append(addTopHeader());
+
+ // Add the macro definitions
+ buffer.append(addMacros());
+
+ // List to collect needed build output variables
+ List<String> outputVarsAdditionsList = new ArrayList<>();
+
+ // Determine target rules
+ StringBuffer targetRules = addTargets(outputVarsAdditionsList, rebuild);
+
+ // Add outputMacros that were added to by the target rules
+ buffer.append(writeTopAdditionMacros(outputVarsAdditionsList, getTopBuildOutputVars()));
+
+ // Add target rules
+ buffer.append(targetRules);
+
+ // Save the file
+ save(buffer, fileHandle);
+ }
+
+ /*************************************************************************
+ * M A I N (makefile) M A K E F I L E M E T H O D S
+ ************************************************************************/
+
+ /**
+ * Answers a <code>StringBuffer</code> containing the comment(s)
+ * for the top-level makefile.
+ */
+ protected StringBuffer addTopHeader() {
+ return addGenericHeader();
+ }
+
+ /**
+ */
+ private StringBuffer addMacros() {
+ StringBuffer buffer = new StringBuffer();
+
+ // Add the ROOT macro
+ //buffer.append("ROOT := ..").append(NEWLINE); //$NON-NLS-1$
+ //buffer.append(NEWLINE);
+
+ // include makefile.init supplementary makefile
+ buffer.append("-include " + reachProjectRoot() + SEPARATOR + MAKEFILE_INIT).append(NEWLINE); //$NON-NLS-1$
+ buffer.append(NEWLINE);
+
+ // Get the clean command from the build model
+ buffer.append("RM := "); //$NON-NLS-1$
+
+ // support macros in the clean command
+ String cleanCommand = config.getCleanCommand();
+
+ try {
+ cleanCommand = ManagedBuildManager.getBuildMacroProvider().resolveValueToMakefileFormat(
+ config.getCleanCommand(), EMPTY_STRING, WHITESPACE, IBuildMacroProvider.CONTEXT_CONFIGURATION,
+ config);
+ } catch (BuildMacroException e) {
+ }
+
+ buffer.append(cleanCommand).append(NEWLINE);
+
+ buffer.append(NEWLINE);
+
+ // Now add the source providers
+ buffer.append(COMMENT_SYMBOL).append(WHITESPACE).append(ManagedMakeMessages.getResourceString(SRC_LISTS))
+ .append(NEWLINE);
+ buffer.append("-include sources.mk").append(NEWLINE); //$NON-NLS-1$
+
+ // Add includes for each subdir in child-subdir-first order (required for makefile rule matching to work).
+ List<String> subDirList = new ArrayList<>();
+ for (IContainer subDir : getSubdirList()) {
+ String projectRelativePath = subDir.getProjectRelativePath().toString();
+ subDirList.add(0, projectRelativePath);
+ }
+ Collections.sort(subDirList, Collections.reverseOrder());
+ for (String dir : subDirList) {
+ buffer.append("-include "); //$NON-NLS-1$
+ if (!dir.isEmpty())
+ buffer.append(escapeWhitespaces(dir)).append(SEPARATOR);
+ buffer.append(MODFILE_NAME).append(NEWLINE);
+ }
+
+ // Include generated dependency makefiles if non-empty AND a "clean" has not been requested
+ if (!buildDepVars.isEmpty()) {
+ buffer.append("ifneq ($(MAKECMDGOALS),clean)").append(NEWLINE); //$NON-NLS-1$
+
+ for (Entry<String, GnuDependencyGroupInfo> entry : buildDepVars.entrySet()) {
+ String depsMacro = entry.getKey();
+ GnuDependencyGroupInfo info = entry.getValue();
+ buffer.append("ifneq ($(strip $(").append(depsMacro).append(")),)").append(NEWLINE); //$NON-NLS-1$ //$NON-NLS-2$
+ if (info.conditionallyInclude) {
+ buffer.append("-include $(").append(depsMacro).append(')').append(NEWLINE); //$NON-NLS-1$
+ } else {
+ buffer.append("include $(").append(depsMacro).append(')').append(NEWLINE); //$NON-NLS-1$
+ }
+ buffer.append("endif").append(NEWLINE); //$NON-NLS-1$
+ }
+
+ buffer.append("endif").append(NEWLINE).append(NEWLINE); //$NON-NLS-1$
+ }
+
+ // Include makefile.defs supplemental makefile
+ buffer.append("-include ").append(reachProjectRoot()).append(SEPARATOR).append(MAKEFILE_DEFS).append(NEWLINE); //$NON-NLS-1$
+
+ final String wildcardFileFmt = "$(wildcard %s)" + WHITESPACE + LINEBREAK; //$NON-NLS-1$
+ buffer.append(NEWLINE).append("OPTIONAL_TOOL_DEPS :=").append(WHITESPACE).append(LINEBREAK); //$NON-NLS-1$
+ buffer.append(String.format(wildcardFileFmt, reachProjectRoot() + SEPARATOR + MAKEFILE_DEFS));
+ buffer.append(String.format(wildcardFileFmt, reachProjectRoot() + SEPARATOR + MAKEFILE_INIT));
+ buffer.append(String.format(wildcardFileFmt, reachProjectRoot() + SEPARATOR + MAKEFILE_TARGETS));
+ buffer.append(NEWLINE);
+
+ String ext = config.getArtifactExtension();
+ // try to resolve the build macros in the artifact extension
+ try {
+ ext = ManagedBuildManager.getBuildMacroProvider().resolveValueToMakefileFormat(ext, EMPTY_STRING,
+ WHITESPACE, IBuildMacroProvider.CONTEXT_CONFIGURATION, config);
+ } catch (BuildMacroException e) {
+ }
+
+ String name = config.getArtifactName();
+ // try to resolve the build macros in the artifact name
+ try {
+ String resolved = ManagedBuildManager.getBuildMacroProvider().resolveValueToMakefileFormat(name,
+ EMPTY_STRING, WHITESPACE, IBuildMacroProvider.CONTEXT_CONFIGURATION, config);
+ if ((resolved = resolved.trim()).length() > 0) {
+ name = resolved;
+ }
+ } catch (BuildMacroException e) {
+ }
+
+ String prefix = EMPTY_STRING;
+ ITool targetTool = config.calculateTargetTool();
+ if (targetTool != null) {
+ prefix = targetTool.getOutputPrefix();
+ if (prefix == null) {
+ prefix = EMPTY_STRING;
+ }
+ }
+ // try to resolve the build macros in the artifact prefix
+ try {
+ String resolved = ManagedBuildManager.getBuildMacroProvider().resolveValueToMakefileFormat(prefix,
+ EMPTY_STRING, WHITESPACE, IBuildMacroProvider.CONTEXT_CONFIGURATION, config);
+ if ((resolved = resolved.trim()).length() > 0) {
+ prefix = resolved;
+ }
+ } catch (BuildMacroException e) {
+ }
+
+ @SuppressWarnings("nls")
+ String[][] buildArtifactVars = new String[][] { //
+ { "BUILD_ARTIFACT_NAME", name }, //
+ { "BUILD_ARTIFACT_EXTENSION", ext }, //
+ { "BUILD_ARTIFACT_PREFIX", prefix }, //
+ { "BUILD_ARTIFACT",
+ "$(BUILD_ARTIFACT_PREFIX)$(BUILD_ARTIFACT_NAME)$(if $(BUILD_ARTIFACT_EXTENSION),.$(BUILD_ARTIFACT_EXTENSION),)" }, //
+ };
+
+ buffer.append(NEWLINE);
+ for (String[] var : buildArtifactVars) {
+ buffer.append(var[0]).append(" :="); //$NON-NLS-1$
+ if (!var[1].isEmpty()) {
+ buffer.append(WHITESPACE).append(var[1]);
+ }
+ buffer.append(NEWLINE);
+ }
+
+ return (buffer.append(NEWLINE));
+ }
+
+ /**
+ * Answers a <code>StringBuffer</code> containing all of the required targets to
+ * properly build the project.
+ *
+ * @param outputVarsAdditionsList list to add needed build output variables to
+ */
+ private StringBuffer addTargets(List<String> outputVarsAdditionsList, boolean rebuild) {
+ StringBuffer buffer = new StringBuffer();
+
+ // IConfiguration config = info.getDefaultConfiguration();
+
+ // Assemble the information needed to generate the targets
+ String prebuildStep = config.getPrebuildStep();
+ try {
+ //try to resolve the build macros in the prebuild step
+ prebuildStep = ManagedBuildManager.getBuildMacroProvider().resolveValueToMakefileFormat(prebuildStep,
+ EMPTY_STRING, WHITESPACE, IBuildMacroProvider.CONTEXT_CONFIGURATION, config);
+ } catch (BuildMacroException e) {
+ }
+ prebuildStep = prebuildStep.trim(); // Remove leading and trailing whitespace (and control characters)
+
+ String postbuildStep = config.getPostbuildStep();
+ try {
+ //try to resolve the build macros in the postbuild step
+ postbuildStep = ManagedBuildManager.getBuildMacroProvider().resolveValueToMakefileFormat(postbuildStep,
+ EMPTY_STRING, WHITESPACE, IBuildMacroProvider.CONTEXT_CONFIGURATION, config);
+
+ } catch (BuildMacroException e) {
+ }
+ postbuildStep = postbuildStep.trim(); // Remove leading and trailing whitespace (and control characters)
+ String preannouncebuildStep = config.getPreannouncebuildStep();
+ String postannouncebuildStep = config.getPostannouncebuildStep();
+ String targets = rebuild ? "clean all" : "all"; //$NON-NLS-1$ //$NON-NLS-2$
+
+ ITool targetTool = config.calculateTargetTool();
+ // if (targetTool == null) {
+ // targetTool = info.getToolFromOutputExtension(buildTargetExt);
+ // }
+
+ // Get all the projects the build target depends on
+ // If this configuration produces a static archive, building the archive doesn't depend on the output
+ // from any of the referenced configurations
+ IConfiguration[] refConfigs = new IConfiguration[0];
+ if (config.getBuildArtefactType() == null || !ManagedBuildManager.BUILD_ARTEFACT_TYPE_PROPERTY_STATICLIB
+ .equals(config.getBuildArtefactType().getId()))
+ refConfigs = ManagedBuildManager.getReferencedConfigurations(config);
+
+ // Add the comment for the "All" target
+ buffer.append(COMMENT_SYMBOL).append(WHITESPACE).append(ManagedMakeMessages.getResourceString(ALL_TARGET))
+ .append(NEWLINE);
+
+ if (!prebuildStep.isEmpty() || !postbuildStep.isEmpty()) {
+ // all:
+ buffer.append("all").append(COLON).append(NEWLINE); //$NON-NLS-1$
+
+ String makeNoPrintDir = MAKE + WHITESPACE + NO_PRINT_DIR + WHITESPACE;
+ buffer.append(TAB).append("+@"); //$NON-NLS-1$
+ if (!prebuildStep.isEmpty()) {
+ buffer.append(makeNoPrintDir).append(PREBUILD).append(WHITESPACE).append(LOGICAL_AND)
+ .append(WHITESPACE);
+ }
+ buffer.append(makeNoPrintDir).append(MAINBUILD);
+ if (!postbuildStep.isEmpty()) {
+ buffer.append(WHITESPACE).append(LOGICAL_AND).append(WHITESPACE).append(makeNoPrintDir)
+ .append(POSTBUILD);
+ }
+
+ buffer.append(NEWLINE);
+
+ } else {
+ // all: main-build
+ buffer.append("all").append(COLON).append(WHITESPACE).append(MAINBUILD).append(NEWLINE); //$NON-NLS-1$
+ }
+ buffer.append(NEWLINE);
+
+ // Add the comment for the "main-build" target
+ buffer.append(COMMENT_SYMBOL).append(WHITESPACE).append(ManagedMakeMessages.getResourceString(MAINBUILD_TARGET))
+ .append(NEWLINE);
+
+ // Write out the main-build target first in case someone just runs make
+ // main-build: <target_name>
+
+ String outputPrefix = EMPTY_STRING;
+ if (targetTool != null) {
+ outputPrefix = targetTool.getOutputPrefix();
+ }
+ buffer.append(MAINBUILD).append(COLON).append(WHITESPACE).append(outputPrefix)
+ .append(ensurePathIsGNUMakeTargetRuleCompatibleSyntax(buildTargetName));
+ if (buildTargetExt.length() > 0) {
+ buffer.append(DOT).append(buildTargetExt);
+ }
+
+ // Add the Secondary Outputs to the all target, if any
+ IOutputType[] secondaryOutputs = config.getToolChain().getSecondaryOutputs();
+ if (secondaryOutputs.length > 0) {
+ buffer.append(WHITESPACE).append(SECONDARY_OUTPUTS);
+ }
+
+ buffer.append(NEWLINE).append(NEWLINE);
+
+ /*
+ * The build target may depend on other projects in the workspace. These
+ * are captured in the deps target: deps: <cd <Proj_Dep_1/build_dir>;
+ * $(MAKE) [clean all | all]>
+ */
+ // Vector managedProjectOutputs = new Vector(refdProjects.length);
+ // if (refdProjects.length > 0) {
+ Vector<String> managedProjectOutputs = new Vector<>(refConfigs.length);
+ if (refConfigs.length > 0) {
+ boolean addDeps = true;
+ // if (refdProjects != null) {
+ for (IConfiguration depCfg : refConfigs) {
+ // IProject dep = refdProjects[i];
+ if (!depCfg.isManagedBuildOn())
+ continue;
+
+ // if (!dep.exists()) continue;
+ if (addDeps) {
+ buffer.append("dependents:").append(NEWLINE); //$NON-NLS-1$
+ addDeps = false;
+ }
+ String buildDir = depCfg.getOwner().getLocation().toString();
+ String depTargets = targets;
+ // if (ManagedBuildManager.manages(dep)) {
+ // Add the current configuration to the makefile path
+ // IManagedBuildInfo depInfo = ManagedBuildManager.getBuildInfo(dep);
+ buildDir += SEPARATOR + depCfg.getName();
+
+ // Extract the build artifact to add to the dependency list
+ String depTarget = depCfg.getArtifactName();
+ String depExt = depCfg.getArtifactExtension();
+
+ try {
+ //try to resolve the build macros in the artifact extension
+ depExt = ManagedBuildManager.getBuildMacroProvider().resolveValueToMakefileFormat(depExt, "", //$NON-NLS-1$
+ " ", //$NON-NLS-1$
+ IBuildMacroProvider.CONTEXT_CONFIGURATION, depCfg);
+ } catch (BuildMacroException e) {
+ }
+
+ try {
+ //try to resolve the build macros in the artifact name
+ String resolved = ManagedBuildManager.getBuildMacroProvider().resolveValueToMakefileFormat(
+ depTarget, "", //$NON-NLS-1$
+ " ", //$NON-NLS-1$
+ IBuildMacroProvider.CONTEXT_CONFIGURATION, depCfg);
+ if ((resolved = resolved.trim()).length() > 0)
+ depTarget = resolved;
+ } catch (BuildMacroException e) {
+ }
+
+ String depPrefix = depCfg.getOutputPrefix(depExt);
+ if (depCfg.needsRebuild()) {
+ depTargets = "clean all"; //$NON-NLS-1$
+ }
+ String dependency = buildDir + SEPARATOR + depPrefix + depTarget;
+ if (depExt.length() > 0) {
+ dependency += DOT + depExt;
+ }
+ dependency = escapeWhitespaces(dependency);
+ managedProjectOutputs.add(dependency);
+ //}
+ buffer.append(TAB).append("-cd").append(WHITESPACE).append(escapeWhitespaces(buildDir)) //$NON-NLS-1$
+ .append(WHITESPACE).append(LOGICAL_AND).append(WHITESPACE).append("$(MAKE) ").append(depTargets) //$NON-NLS-1$
+ .append(NEWLINE);
+ }
+ // }
+ buffer.append(NEWLINE);
+ }
+
+ // Add the targets tool rules
+ buffer.append(addTargetsRules(targetTool, outputVarsAdditionsList, managedProjectOutputs));
+
+ // Add the prebuild step target, if specified
+ if (prebuildStep.length() > 0) {
+ buffer.append(PREBUILD).append(COLON).append(NEWLINE);
+ if (preannouncebuildStep.length() > 0) {
+ buffer.append(TAB).append(DASH).append(AT).append(escapedEcho(preannouncebuildStep));
+ }
+ buffer.append(TAB).append(DASH).append(prebuildStep).append(NEWLINE);
+ buffer.append(TAB).append(DASH).append(AT).append(ECHO_BLANK_LINE).append(NEWLINE);
+ }
+
+ // Add the postbuild step, if specified
+ if (postbuildStep.length() > 0) {
+ buffer.append(POSTBUILD).append(COLON).append(NEWLINE);
+ if (postannouncebuildStep.length() > 0) {
+ buffer.append(TAB).append(DASH).append(AT).append(escapedEcho(postannouncebuildStep));
+ }
+ buffer.append(TAB).append(DASH).append(postbuildStep).append(NEWLINE);
+ buffer.append(TAB).append(DASH).append(AT).append(ECHO_BLANK_LINE).append(NEWLINE);
+ }
+
+ // Add the Secondary Outputs target, if needed
+ if (secondaryOutputs.length > 0) {
+ buffer.append(SECONDARY_OUTPUTS).append(COLON);
+ Vector<String> outs2 = calculateSecondaryOutputs(secondaryOutputs);
+ for (int i = 0; i < outs2.size(); i++) {
+ buffer.append(WHITESPACE).append("$(").append(outs2.get(i)).append(')'); //$NON-NLS-1$
+ }
+ buffer.append(NEWLINE).append(NEWLINE);
+ }
+
+ // Add all the needed dummy and phony targets
+ buffer.append(".PHONY: all clean dependents").append(WHITESPACE).append(MAINBUILD); //$NON-NLS-1$
+ if (prebuildStep.length() > 0) {
+ buffer.append(WHITESPACE).append(PREBUILD);
+ }
+ if (postbuildStep.length() > 0) {
+ buffer.append(WHITESPACE).append(POSTBUILD);
+ }
+ buffer.append(NEWLINE);
+ for (String output : managedProjectOutputs) {
+ buffer.append(output).append(COLON).append(NEWLINE);
+ }
+ buffer.append(NEWLINE);
+
+ // Include makefile.targets supplemental makefile
+ buffer.append("-include ").append(reachProjectRoot()).append(SEPARATOR).append(MAKEFILE_TARGETS) //$NON-NLS-1$
+ .append(NEWLINE);
+
+ return buffer;
+ }
+
+ /**
+ * Returns the targets rules. The targets make file (top makefile) contains:
+ * 1 the rule for the final target tool
+ * 2 the rules for all of the tools that use multipleOfType in their primary input type
+ * 3 the rules for all tools that use the output of #2 tools
+ *
+ * @param outputVarsAdditionsList list to add needed build output variables to
+ * @param managedProjectOutputs Other projects in the workspace that this project depends upon
+ * @return StringBuffer
+ */
+ private StringBuffer addTargetsRules(ITool targetTool, List<String> outputVarsAdditionsList,
+ Vector<String> managedProjectOutputs) {
+ StringBuffer buffer = new StringBuffer();
+ // Add the comment
+ buffer.append(COMMENT_SYMBOL).append(WHITESPACE).append(ManagedMakeMessages.getResourceString(BUILD_TOP))
+ .append(NEWLINE);
+
+ ToolInfoHolder h = (ToolInfoHolder) toolInfos.getValue();
+ ITool[] buildTools = h.buildTools;
+ boolean[] buildToolsUsed = h.buildToolsUsed;
+ // Get the target tool and generate the rule
+ if (targetTool != null) {
+ // Note that the name of the target we pass to addRuleForTool does not
+ // appear to be used there (and tool outputs are consulted directly), but
+ // we quote it anyway just in case it starts to use it in future.
+ if (addRuleForTool(targetTool, buffer, true, ensurePathIsGNUMakeTargetRuleCompatibleSyntax(buildTargetName),
+ buildTargetExt, outputVarsAdditionsList, managedProjectOutputs)) {
+ // Mark the target tool as processed
+ for (int i = 0; i < buildTools.length; i++) {
+ if (targetTool == buildTools[i]) {
+ buildToolsUsed[i] = true;
+ }
+ }
+ }
+ } else {
+ buffer.append(TAB).append(AT).append(escapedEcho(MESSAGE_NO_TARGET_TOOL + WHITESPACE + OUT_MACRO));
+ }
+
+ // Generate the rules for all Tools that specify InputType.multipleOfType, and any Tools that
+ // consume the output of those tools. This does not apply to pre-3.0 integrations, since
+ // the only "multipleOfType" tool is the "target" tool
+ for (int i = 0; i < buildTools.length; i++) {
+ ITool tool = buildTools[i];
+ IInputType type = tool.getPrimaryInputType();
+ if (type != null && type.getMultipleOfType()) {
+ if (!buildToolsUsed[i]) {
+ addRuleForTool(tool, buffer, false, null, null, outputVarsAdditionsList, null);
+ // Mark the target tool as processed
+ buildToolsUsed[i] = true;
+ // Look for tools that consume the output
+ generateRulesForConsumers(tool, outputVarsAdditionsList, buffer);
+ }
+ }
+ }
+
+ // Add the comment
+ buffer.append(COMMENT_SYMBOL).append(WHITESPACE).append(ManagedMakeMessages.getResourceString(BUILD_TARGETS))
+ .append(NEWLINE);
+
+ // Always add a clean target
+ buffer.append("clean:").append(NEWLINE); //$NON-NLS-1$
+
+ Set<String> filesToClean = new HashSet<>();
+ String outputPrefix = EMPTY_STRING;
+ if (targetTool != null) {
+ outputPrefix = targetTool.getOutputPrefix();
+ }
+ String completeBuildTargetName = outputPrefix + buildTargetName;
+ if (buildTargetExt.length() > 0) {
+ completeBuildTargetName = completeBuildTargetName + DOT + buildTargetExt;
+ }
+ completeBuildTargetName = ensurePathIsGNUMakeTargetRuleCompatibleSyntax(completeBuildTargetName);
+ filesToClean.add(completeBuildTargetName);
+
+ Map<String, Set<String>> map = getTopBuildOutputVars();
+ for (String macroName : outputVarsAdditionsList) {
+ Set<String> set = map.getOrDefault(macroName, Collections.emptySet());
+ filesToClean.addAll(set);
+ }
+
+ if (!filesToClean.isEmpty()) {
+ StringBuffer rmLineBuffer = new StringBuffer();
+ rmLineBuffer.append(TAB).append("-$(RM)"); //$NON-NLS-1$
+
+ // Convert the set to an ordered list. Without this "unneeded" sorting, the unit tests will fail
+ List<String> filesToCleanOrdered = new ArrayList<>(filesToClean);
+ filesToCleanOrdered.sort((p1, p2) -> p1.toString().compareTo(p2.toString()));
+
+ for (String path : filesToCleanOrdered) {
+ // Bug 417228, ilg@livius.net & freidin.alex@gmail.com
+ path = ensurePathIsGNUMakeTargetRuleCompatibleSyntax(path);
+
+ // There is a max length for a command line, wrap to multiple invocations if needed.
+ if (rmLineBuffer.length() + path.length() > MAX_CLEAN_LENGTH) {
+ // Terminate this RM line
+ buffer.append(rmLineBuffer).append(NEWLINE);
+
+ // Start a new RM line
+ rmLineBuffer = new StringBuffer();
+ rmLineBuffer.append(TAB).append("-$(RM)"); //$NON-NLS-1$
+ }
+ rmLineBuffer.append(WHITESPACE).append(path);
+ }
+
+ buffer.append(rmLineBuffer);
+ }
+
+ buffer.append(NEWLINE);
+ buffer.append(TAB).append(DASH).append(AT).append(ECHO_BLANK_LINE).append(NEWLINE);
+
+ return buffer;
+ }
+
+ /**
+ * Create the rule
+ *
+ * @param buffer Buffer to add makefile rules to
+ * @param bTargetTool True if this is the target tool
+ * @param targetName If this is the "targetTool", the target file name, else <code>null</code>
+ * @param targetExt If this is the "targetTool", the target file extension, else <code>null</code>
+ * @param outputVarsAdditionsList list to add needed build output variables to
+ * @param managedProjectOutputs Other projects in the workspace that this project depends upon
+ * @since 9.3
+ */
+ protected boolean addRuleForTool(ITool tool, StringBuffer buffer, boolean bTargetTool, String targetName,
+ String targetExt, List<String> outputVarsAdditionsList, Vector<String> managedProjectOutputs) {
+
+ // Get the tool's inputs and outputs
+ Vector<String> inputs = new Vector<>();
+ Vector<String> dependencies = new Vector<>();
+ Vector<String> outputs = new Vector<>();
+ Vector<String> enumeratedPrimaryOutputs = new Vector<>();
+ Vector<String> enumeratedSecondaryOutputs = new Vector<>();
+ Vector<String> outputVariables = new Vector<>();
+ Vector<String> additionalTargets = new Vector<>();
+ String outputPrefix = EMPTY_STRING;
+
+ if (!getToolInputsOutputs(tool, inputs, dependencies, outputs, enumeratedPrimaryOutputs,
+ enumeratedSecondaryOutputs, outputVariables, additionalTargets, bTargetTool, managedProjectOutputs)) {
+ return false;
+ }
+
+ // If we have no primary output, make all of the secondary outputs the primary output
+ if (enumeratedPrimaryOutputs.size() == 0) {
+ enumeratedPrimaryOutputs = enumeratedSecondaryOutputs;
+ enumeratedSecondaryOutputs.clear();
+ }
+
+ // Add the output variables for this tool to our list
+ outputVarsAdditionsList.addAll(outputVariables);
+
+ // Create the build rule
+ String buildRule = EMPTY_STRING;
+ String outflag = tool.getOutputFlag();
+
+ String primaryOutputs = EMPTY_STRING;
+ String primaryOutputsQuoted = EMPTY_STRING;
+ boolean first = true;
+ for (int i = 0; i < enumeratedPrimaryOutputs.size(); i++) {
+ String output = enumeratedPrimaryOutputs.get(i);
+ if (!first) {
+ primaryOutputs += WHITESPACE;
+ primaryOutputsQuoted += WHITESPACE;
+ }
+ first = false;
+ primaryOutputs += output;
+ primaryOutputsQuoted += ensurePathIsGNUMakeTargetRuleCompatibleSyntax(output);
+ }
+
+ buildRule += (primaryOutputsQuoted + COLON + WHITESPACE);
+
+ first = true;
+ String calculatedDependencies = EMPTY_STRING;
+ for (int i = 0; i < dependencies.size(); i++) {
+ String input = dependencies.get(i);
+ if (!first)
+ calculatedDependencies += WHITESPACE;
+ first = false;
+ calculatedDependencies += input;
+ }
+ buildRule += calculatedDependencies;
+ buildRule += WHITESPACE + MAKEFILE_NAME; // makefile itself
+ buildRule += WHITESPACE + "$(OPTIONAL_TOOL_DEPS)"; //$NON-NLS-1$ // Optional dep to generated makefile extension files
+
+ // Depend on additional object files for the tool, if any
+ String[] additionalObjects = tool.getExtraFlags(IOption.OBJECTS);
+ if (additionalObjects.length > 0) {
+ buildRule += WHITESPACE + Stream.of(additionalObjects) //
+ .map(this::ensurePathIsGNUMakeTargetRuleCompatibleSyntax) //
+ .collect(Collectors.joining(WHITESPACE));
+ }
+
+ // We can't have duplicates in a makefile
+ if (getRuleList().contains(buildRule)) {
+ } else {
+ getRuleList().add(buildRule);
+ buffer.append(buildRule).append(NEWLINE);
+ if (bTargetTool) {
+ buffer.append(TAB).append(AT).append(escapedEcho(MESSAGE_START_BUILD + WHITESPACE + OUT_MACRO));
+ }
+ buffer.append(TAB).append(AT).append(escapedEcho(tool.getAnnouncement()));
+
+ // Get the command line for this tool invocation
+ String[] flags;
+ try {
+ flags = tool.getToolCommandFlags(null, null);
+ } catch (BuildException ex) {
+ // TODO report error
+ flags = EMPTY_STRING_ARRAY;
+ }
+ String command = tool.getToolCommand();
+ try {
+ //try to resolve the build macros in the tool command
+ String resolvedCommand = ManagedBuildManager.getBuildMacroProvider().resolveValueToMakefileFormat(
+ command, EMPTY_STRING, WHITESPACE, IBuildMacroProvider.CONTEXT_FILE,
+ new FileContextData(null, null, null, tool));
+ if ((resolvedCommand = resolvedCommand.trim()).length() > 0)
+ command = resolvedCommand;
+
+ } catch (BuildMacroException e) {
+ }
+ String[] cmdInputs = inputs.toArray(new String[inputs.size()]);
+ IManagedCommandLineGenerator gen = tool.getCommandLineGenerator();
+ String commandLinePattern = tool.getCommandLinePattern();
+ if (!commandLinePattern.contains("${EXTRA_FLAGS}")) { //$NON-NLS-1$
+ String[] objs = tool.getExtraFlags(IOption.OBJECTS);
+ String[] libs = tool.getExtraFlags(IOption.LIBRARIES);
+ if (objs.length > 0 || libs.length > 0) {
+ // Tool command line pattern would expect legacy "$(USER_OBJS)" or "$(LIBS)" make-symbols to be appended.
+ commandLinePattern = commandLinePattern + " ${EXTRA_FLAGS}"; //$NON-NLS-1$
+ }
+ }
+ IManagedCommandLineInfo cmdLInfo = gen.generateCommandLineInfo(tool, command, flags, outflag, outputPrefix,
+ primaryOutputs, cmdInputs, commandLinePattern);
+
+ // The command to build
+ String buildCmd = null;
+ if (cmdLInfo == null) {
+ String toolFlags;
+ try {
+ toolFlags = tool.getToolCommandFlagsString(null, null);
+ } catch (BuildException ex) {
+ // TODO report error
+ toolFlags = EMPTY_STRING;
+ }
+ buildCmd = command + WHITESPACE + toolFlags + WHITESPACE + outflag + WHITESPACE + outputPrefix
+ + primaryOutputs + WHITESPACE + IN_MACRO;
+ } else
+ buildCmd = cmdLInfo.getCommandLine();
+
+ // resolve any remaining macros in the command after it has been
+ // generated
+ try {
+ String resolvedCommand = ManagedBuildManager.getBuildMacroProvider().resolveValueToMakefileFormat(
+ buildCmd, EMPTY_STRING, WHITESPACE, IBuildMacroProvider.CONTEXT_FILE,
+ new FileContextData(null, null, null, tool));
+ if ((resolvedCommand = resolvedCommand.trim()).length() > 0)
+ buildCmd = resolvedCommand;
+
+ } catch (BuildMacroException e) {
+ }
+
+ //buffer.append(TAB).append(AT).append(escapedEcho(buildCmd));
+ //buffer.append(TAB).append(AT).append(buildCmd);
+ buffer.append(TAB).append(buildCmd);
+
+ // TODO
+ // NOTE WELL: Dependency file generation is not handled for this type of Tool
+
+ // Echo finished message
+ buffer.append(NEWLINE);
+ buffer.append(TAB).append(AT).append(
+ escapedEcho((bTargetTool ? MESSAGE_FINISH_BUILD : MESSAGE_FINISH_FILE) + WHITESPACE + OUT_MACRO));
+ buffer.append(TAB).append(AT).append(ECHO_BLANK_LINE);
+
+ // Just emit a blank line
+ buffer.append(NEWLINE);
+ }
+
+ // If we have secondary outputs, output dependency rules without commands
+ if (enumeratedSecondaryOutputs.size() > 0 || additionalTargets.size() > 0) {
+ String primaryOutput = enumeratedPrimaryOutputs.get(0);
+ Vector<String> addlOutputs = new Vector<>();
+ addlOutputs.addAll(enumeratedSecondaryOutputs);
+ addlOutputs.addAll(additionalTargets);
+ for (int i = 0; i < addlOutputs.size(); i++) {
+ String output = addlOutputs.get(i);
+ String depLine = output + COLON + WHITESPACE + primaryOutput + WHITESPACE + calculatedDependencies
+ + NEWLINE;
+ if (!getDepLineList().contains(depLine)) {
+ getDepLineList().add(depLine);
+ buffer.append(depLine);
+ }
+ }
+ buffer.append(NEWLINE);
+ }
+ return true;
+ }
+
+ /**
+ * @param outputVarsAdditionsList list to add needed build output variables to
+ * @param buffer buffer to add rules to
+ */
+ private void generateRulesForConsumers(ITool generatingTool, List<String> outputVarsAdditionsList,
+ StringBuffer buffer) {
+ // Generate a build rule for any tool that consumes the output of this tool
+ ToolInfoHolder h = (ToolInfoHolder) toolInfos.getValue();
+ ITool[] buildTools = h.buildTools;
+ boolean[] buildToolsUsed = h.buildToolsUsed;
+ IOutputType[] outTypes = generatingTool.getOutputTypes();
+ for (IOutputType outType : outTypes) {
+ String[] outExts = outType.getOutputExtensions(generatingTool);
+ String outVariable = outType.getBuildVariable();
+ if (outExts != null) {
+ for (String outExt : outExts) {
+ for (int k = 0; k < buildTools.length; k++) {
+ ITool tool = buildTools[k];
+ if (!buildToolsUsed[k]) {
+ // Also has to match build variables if specified
+ IInputType inType = tool.getInputType(outExt);
+ if (inType != null) {
+ String inVariable = inType.getBuildVariable();
+ if ((outVariable == null && inVariable == null) || (outVariable != null
+ && inVariable != null && outVariable.equals(inVariable))) {
+ if (addRuleForTool(buildTools[k], buffer, false, null, null,
+ outputVarsAdditionsList, null)) {
+ buildToolsUsed[k] = true;
+ // Look for tools that consume the output
+ generateRulesForConsumers(buildTools[k], outputVarsAdditionsList, buffer);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ protected boolean getToolInputsOutputs(ITool tool, Vector<String> inputs, Vector<String> dependencies,
+ Vector<String> outputs, Vector<String> enumeratedPrimaryOutputs, Vector<String> enumeratedSecondaryOutputs,
+ Vector<String> outputVariables, Vector<String> additionalTargets, boolean bTargetTool,
+ Vector<String> managedProjectOutputs) {
+ ToolInfoHolder h = (ToolInfoHolder) toolInfos.getValue();
+ ITool[] buildTools = h.buildTools;
+ ManagedBuildGnuToolInfo[] gnuToolInfos = h.gnuToolInfos;
+ // Get the information regarding the tool's inputs and outputs from the objects
+ // created by calculateToolInputsOutputs
+ ManagedBuildGnuToolInfo toolInfo = null;
+ for (int i = 0; i < buildTools.length; i++) {
+ if (tool == buildTools[i]) {
+ toolInfo = gnuToolInfos[i];
+ break;
+ }
+ }
+ if (toolInfo == null)
+ return false;
+
+ // Populate the output Vectors
+ inputs.addAll(toolInfo.getCommandInputs());
+ outputs.addAll(toolInfo.getCommandOutputs());
+ enumeratedPrimaryOutputs.addAll(toolInfo.getEnumeratedPrimaryOutputs());
+ enumeratedSecondaryOutputs.addAll(toolInfo.getEnumeratedSecondaryOutputs());
+ outputVariables.addAll(toolInfo.getOutputVariables());
+
+ Vector<String> unprocessedDependencies = toolInfo.getCommandDependencies();
+ for (String path : unprocessedDependencies) {
+ dependencies.add(ensurePathIsGNUMakeTargetRuleCompatibleSyntax(path));
+ }
+ additionalTargets.addAll(toolInfo.getAdditionalTargets());
+
+ if (bTargetTool && managedProjectOutputs != null) {
+ for (String output : managedProjectOutputs) {
+ dependencies.add(output);
+ }
+ }
+ return true;
+ }
+
+ protected Vector<String> calculateSecondaryOutputs(IOutputType[] secondaryOutputs) {
+ ToolInfoHolder h = (ToolInfoHolder) toolInfos.getValue();
+ ITool[] buildTools = h.buildTools;
+ Vector<String> buildVars = new Vector<>();
+ for (int i = 0; i < buildTools.length; i++) {
+ // Add the specified output build variables
+ IOutputType[] outTypes = buildTools[i].getOutputTypes();
+ if (outTypes != null && outTypes.length > 0) {
+ for (int j = 0; j < outTypes.length; j++) {
+ IOutputType outType = outTypes[j];
+ // Is this one of the secondary outputs?
+ // Look for an outputType with this ID, or one with a superclass with this id
+ thisType: for (int k = 0; k < secondaryOutputs.length; k++) {
+ IOutputType matchType = outType;
+ do {
+ if (matchType.getId().equals(secondaryOutputs[k].getId())) {
+ buildVars.add(outType.getBuildVariable());
+ break thisType;
+ }
+ matchType = matchType.getSuperClass();
+ } while (matchType != null);
+ }
+ }
+ }
+ }
+ return buildVars;
+ }
+
+ protected boolean isSecondaryOutputVar(ToolInfoHolder h, IOutputType[] secondaryOutputs, String varName) {
+ ITool[] buildTools = h.buildTools;
+ for (ITool buildTool : buildTools) {
+ // Add the specified output build variables
+ IOutputType[] outTypes = buildTool.getOutputTypes();
+ if (outTypes != null && outTypes.length > 0) {
+ for (IOutputType outType : outTypes) {
+ // Is this one of the secondary outputs?
+ // Look for an outputType with this ID, or one with a superclass with this id
+ for (IOutputType secondaryOutput : secondaryOutputs) {
+ IOutputType matchType = outType;
+ do {
+ if (matchType.getId().equals(secondaryOutput.getId())) {
+ if (outType.getBuildVariable().equals(varName)) {
+ return true;
+ }
+ }
+ matchType = matchType.getSuperClass();
+ } while (matchType != null);
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ /*************************************************************************
+ * S O U R C E S (sources.mk) M A K E F I L E M E T H O D S
+ ************************************************************************/
+
+ private StringBuffer addSubdirectories() {
+ StringBuffer buffer = new StringBuffer();
+ // Add the comment
+ buffer.append(COMMENT_SYMBOL).append(WHITESPACE).append(ManagedMakeMessages.getResourceString(MOD_LIST))
+ .append(NEWLINE);
+
+ buffer.append("SUBDIRS := ").append(LINEBREAK); //$NON-NLS-1$
+
+ // Get all the module names
+ for (IResource container : getSubdirList()) {
+ updateMonitor(ManagedMakeMessages.getFormattedString("MakefileGenerator.message.adding.source.folder", //$NON-NLS-1$
+ container.getFullPath().toString()));
+ // Check the special case where the module is the project root
+ if (container.getFullPath() == project.getFullPath()) {
+ buffer.append(DOT).append(WHITESPACE).append(LINEBREAK);
+ } else {
+ IPath path = container.getProjectRelativePath();
+ buffer.append(escapeWhitespaces(path.toString())).append(WHITESPACE).append(LINEBREAK);
+ }
+ }
+
+ buffer.append(NEWLINE);
+ return buffer;
+ }
+
+ /*************************************************************************
+ * F R A G M E N T (subdir.mk) M A K E F I L E M E T H O D S
+ ************************************************************************/
+
+ /**
+ * Returns a <code>StringBuffer</code> containing the comment(s)
+ * for a fragment makefile (subdir.mk).
+ */
+ protected StringBuffer addFragmentMakefileHeader() {
+ return addGenericHeader();
+ }
+
+ /**
+ * Returns a <code>StringBuffer</code> containing makefile text for all of the sources
+ * contributed by a container (project directory/subdirectory) to the fragement makefile
+ *
+ * @param module project resource directory/subdirectory
+ * @return StringBuffer generated text for the fragement makefile
+ */
+ protected StringBuffer addSources(IContainer module, String cleanTarget) throws CoreException {
+ // Calculate the new directory relative to the build output
+ IPath moduleRelativePath = module.getProjectRelativePath();
+ String relativePath = moduleRelativePath.toString();
+ relativePath += relativePath.length() == 0 ? "" : SEPARATOR; //$NON-NLS-1$
+
+ // For build macros in the configuration, create a map which will map them
+ // to a string which holds its list of sources.
+ LinkedHashMap<String, String> buildVarToRuleStringMap = new LinkedHashMap<>();
+
+ // Add statements that add the source files in this folder,
+ // and generated source files, and generated dependency files
+ // to the build macros
+ for (Entry<String, List<IPath>> entry : buildSrcVars.entrySet()) {
+ String macroName = entry.getKey();
+ addMacroAdditionPrefix(buildVarToRuleStringMap, macroName, null, false);
+
+ }
+ for (Entry<String, List<IPath>> entry : buildOutVars.entrySet()) {
+ String macroName = entry.getKey();
+ addMacroAdditionPrefix(buildVarToRuleStringMap, macroName, "./" + relativePath, false); //$NON-NLS-1$
+ }
+
+ // String buffers
+ StringBuffer buffer = new StringBuffer(); // Return buffer
+ StringBuffer ruleBuffer = new StringBuffer(
+ COMMENT_SYMBOL + WHITESPACE + ManagedMakeMessages.getResourceString(MOD_RULES) + NEWLINE);
+
+ // Visit the resources in this folder and add each one to a sources macro, and generate a build rule, if appropriate
+ IResource[] resources = module.members();
+
+ IResourceInfo rcInfo;
+ IFolder folder = project.getFolder(computeTopBuildDir(config.getName()));
+ Set<IPath> filesToClean = new HashSet<>();
+
+ for (IResource resource : resources) {
+ if (resource.getType() == IResource.FILE) {
+ // Check whether this resource is excluded from build
+ IPath rcProjRelPath = resource.getProjectRelativePath();
+ if (!isSource(rcProjRelPath))
+ continue;
+ rcInfo = config.getResourceInfo(rcProjRelPath, false);
+ // if( (rcInfo.isExcluded()) )
+ // continue;
+ addFragmentMakefileEntriesForSource(buildVarToRuleStringMap, ruleBuffer, folder, relativePath, resource,
+ getPathForResource(resource), rcInfo, null, false, filesToClean);
+ }
+ }
+
+ // Write out the macro addition entries to the buffer
+ buffer.append(writeAdditionMacros(buildVarToRuleStringMap));
+ buffer.append(ruleBuffer).append(NEWLINE);
+
+ if (cleanTarget != null && !filesToClean.isEmpty()) {
+ buffer.append("clean: " + cleanTarget).append(NEWLINE).append(NEWLINE); //$NON-NLS-1$
+ buffer.append(cleanTarget + COLON).append(NEWLINE);
+
+ StringBuffer rmLineBuffer = new StringBuffer();
+ rmLineBuffer.append(TAB).append("-$(RM)"); //$NON-NLS-1$
+
+ // Convert the set to an ordered list. Without this "unneeded" sorting, the unit tests will fail
+ List<IPath> filesToCleanOrdered = new ArrayList<>(filesToClean);
+ filesToCleanOrdered.sort((p1, p2) -> p1.toString().compareTo(p2.toString()));
+
+ for (IPath fileToClean : filesToCleanOrdered) {
+ String path = escapeWhitespaces(
+ (fileToClean.isAbsolute() || fileToClean.segment(0).equals(".") ? EMPTY_STRING : "./") //$NON-NLS-1$ //$NON-NLS-2$
+ + fileToClean.toString());
+
+ // There is a max length for a command line, wrap to multiple invocations if needed.
+ if (rmLineBuffer.length() + path.length() > MAX_CLEAN_LENGTH) {
+ // Terminate this RM line
+ buffer.append(rmLineBuffer).append(NEWLINE);
+
+ // Start a new RM line
+ rmLineBuffer = new StringBuffer();
+ rmLineBuffer.append(TAB).append("-$(RM)"); //$NON-NLS-1$
+ }
+ rmLineBuffer.append(WHITESPACE).append(path);
+ }
+
+ buffer.append(rmLineBuffer).append(NEWLINE).append(NEWLINE);
+ buffer.append(".PHONY: ").append(cleanTarget).append(NEWLINE).append(NEWLINE); //$NON-NLS-1$
+ }
+
+ return buffer;
+ }
+
+ /**
+ * Adds the entries for a particular source file to the fragment makefile
+ *
+ * @param buildVarToRuleStringMap map of build variable names to the list of files assigned to the variable
+ * @param ruleBuffer buffer to add generated nmakefile text to
+ * @param folder the top level build output directory
+ * @param relativePath build output directory relative path of the current output directory
+ * @param resource the source file for this invocation of the tool - this may be null for a generated output
+ * @param sourceLocation the full path of the source
+ * @param resConfig the IResourceConfiguration associated with this file or null
+ * @param varName the build variable to add this invocation's outputs to
+ * if <code>null</code>, use the file extension to find the name
+ * @param generatedSource if <code>true</code>, this file was generated by another tool in the tool-chain
+ */
+ protected void addFragmentMakefileEntriesForSource(LinkedHashMap<String, String> buildVarToRuleStringMap,
+ StringBuffer ruleBuffer, IFolder folder, String relativePath, IResource resource, IPath sourceLocation,
+ IResourceInfo rcInfo, String varName, boolean generatedSource, Set<IPath> filesToClean) {
+
+ // Determine which tool, if any, builds files with this extension
+ String ext = sourceLocation.getFileExtension();
+ ITool tool = null;
+
+ //TODO: remove
+ // IResourceConfiguration resConfig = null;
+ // if(rcInfo instanceof IFileInfo){
+ // resConfig = (IFileInfo)rcInfo;
+ // }
+ //end remove
+
+ // Use the tool from the resource configuration if there is one
+ if (rcInfo instanceof IFileInfo) {
+ IFileInfo fi = (IFileInfo) rcInfo;
+ ITool[] tools = fi.getToolsToInvoke();
+ if (tools != null && tools.length > 0) {
+ tool = tools[0];
+ // if(!tool.getCustomBuildStep())
+ addToBuildVar(buildVarToRuleStringMap, ext, varName, relativePath, sourceLocation, generatedSource);
+ }
+ }
+
+ ToolInfoHolder h = getToolInfo(rcInfo.getPath());
+ ITool buildTools[] = h.buildTools;
+
+ // if(tool == null){
+ // for (int j=0; j<buildTools.length; j++) {
+ // if (buildTools[j].buildsFileType(ext)) {
+ // if (tool == null) {
+ // tool = buildTools[j];
+ // }
+ // addToBuildVar(buildVarToRuleStringMap, ext, varName, relativePath, sourceLocation, generatedSource);
+ // break;
+ // }
+ // }
+ // }
+ //
+ // if(tool == null && rcInfo.getPath().segmentCount() != 0){
+ if (tool == null) {
+ h = getToolInfo(Path.EMPTY);
+ buildTools = h.buildTools;
+
+ for (ITool buildTool : buildTools) {
+ if (buildTool.buildsFileType(ext)) {
+ tool = buildTool;
+ addToBuildVar(buildVarToRuleStringMap, ext, varName, relativePath, sourceLocation, generatedSource);
+ break;
+ }
+ }
+ }
+
+ if (tool != null) {
+ // Generate the rule to build this source file
+ IInputType primaryInputType = tool.getPrimaryInputType();
+ IInputType inputType = tool.getInputType(ext);
+ if ((primaryInputType != null && !primaryInputType.getMultipleOfType())
+ || (inputType == null && tool != config.calculateTargetTool())) {
+
+ // Try to add the rule for the file
+ Vector<IPath> generatedOutputs = new Vector<>(); // IPath's - build directory relative
+ Vector<IPath> generatedDepFiles = new Vector<>(); // IPath's - build directory relative or absolute
+ addRuleForSource(relativePath, ruleBuffer, resource, sourceLocation, rcInfo, generatedSource,
+ generatedDepFiles, generatedOutputs);
+
+ // If the rule generates a dependency file(s), add the file(s) to the variable
+ if (generatedDepFiles.size() > 0) {
+ for (int k = 0; k < generatedDepFiles.size(); k++) {
+ IPath generatedDepFile = generatedDepFiles.get(k);
+ addMacroAdditionFile(buildVarToRuleStringMap, getDepMacroName(ext).toString(),
+ (generatedDepFile.isAbsolute() ? "" : "./") + //$NON-NLS-1$ //$NON-NLS-2$
+ generatedDepFile.toString());
+ }
+ }
+
+ // If the generated outputs of this tool are input to another tool,
+ // 1. add the output to the appropriate macro
+ // 2. If the tool does not have multipleOfType input, generate the rule.
+
+ IOutputType outType = tool.getPrimaryOutputType();
+ String buildVariable = null;
+ if (outType != null) {
+ if (tool.getCustomBuildStep()) {
+ // TODO: This is somewhat of a hack since a custom build step
+ // tool does not currently define a build variable
+ if (generatedOutputs.size() > 0) {
+ IPath firstOutput = generatedOutputs.get(0);
+ String firstExt = firstOutput.getFileExtension();
+ ToolInfoHolder tmpH = getFolderToolInfo(rcInfo.getPath());
+ ITool[] tmpBuildTools = tmpH.buildTools;
+ for (ITool tmpBuildTool : tmpBuildTools) {
+ if (tmpBuildTool.buildsFileType(firstExt)) {
+ String bV = tmpBuildTool.getPrimaryInputType().getBuildVariable();
+ if (bV.length() > 0) {
+ buildVariable = bV;
+ break;
+ }
+ }
+ }
+ }
+ } else {
+ buildVariable = outType.getBuildVariable();
+ }
+ } else {
+ // For support of pre-CDT 3.0 integrations.
+ buildVariable = OBJS_MACRO;
+ }
+
+ for (int k = 0; k < generatedOutputs.size(); k++) {
+ IPath generatedOutput;
+ IResource generateOutputResource;
+ if (generatedOutputs.get(k).isAbsolute()) {
+ // TODO: Should we use relative paths when possible (e.g., see MbsMacroSupplier.calculateRelPath)
+ generatedOutput = generatedOutputs.get(k);
+ // If this file has an absolute path, then the generateOutputResource will not be correct
+ // because the file is not under the project. We use this resource in the calls to the dependency generator
+ generateOutputResource = project.getFile(generatedOutput);
+ } else {
+ generatedOutput = getPathForResource(project).append(getBuildWorkingDir())
+ .append(generatedOutputs.get(k));
+ generateOutputResource = project.getFile(getBuildWorkingDir().append(generatedOutputs.get(k)));
+ }
+ IResourceInfo nextRcInfo;
+ if (rcInfo instanceof IFileInfo) {
+ nextRcInfo = config.getResourceInfo(rcInfo.getPath().removeLastSegments(1), false);
+ } else {
+ nextRcInfo = rcInfo;
+ }
+ addFragmentMakefileEntriesForSource(buildVarToRuleStringMap, ruleBuffer, folder, relativePath,
+ generateOutputResource, generatedOutput, nextRcInfo, buildVariable, true, filesToClean);
+ }
+
+ filesToClean.addAll(generatedDepFiles);
+ filesToClean.addAll(generatedOutputs);
+ }
+ } else {
+ // If this is a secondary input, add it to build vars
+ if (varName == null) {
+ for (ITool buildTool : buildTools) {
+ if (buildTool.isInputFileType(ext)) {
+ addToBuildVar(buildVarToRuleStringMap, ext, varName, relativePath, sourceLocation,
+ generatedSource);
+ break;
+ }
+ }
+ }
+ // If this generated output is identified as a secondary output, add the file to the build variable
+ else {
+ IOutputType[] secondaryOutputs = config.getToolChain().getSecondaryOutputs();
+ if (secondaryOutputs.length > 0) {
+ if (isSecondaryOutputVar(h, secondaryOutputs, varName)) {
+ addMacroAdditionFile(buildVarToRuleStringMap, varName, relativePath, sourceLocation,
+ generatedSource);
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Gets a path for a resource by extracting the Path field from its
+ * location URI.
+ * @return IPath
+ * @since 6.0
+ */
+ protected IPath getPathForResource(IResource resource) {
+ return new Path(resource.getLocationURI().getPath());
+ }
+
+ /**
+ * Adds the source file to the appropriate build variable
+ *
+ * @param buildVarToRuleStringMap map of build variable names to the list of files assigned to the variable
+ * @param ext the file extension of the file
+ * @param varName the build variable to add this invocation's outputs to
+ * if <code>null</code>, use the file extension to find the name
+ * @param relativePath build output directory relative path of the current output directory
+ * @param sourceLocation the full path of the source
+ * @param generatedSource if <code>true</code>, this file was generated by another tool in the tool-chain
+ */
+ protected void addToBuildVar(LinkedHashMap<String, String> buildVarToRuleStringMap, String ext, String varName,
+ String relativePath, IPath sourceLocation, boolean generatedSource) {
+ List<IPath> varList = null;
+ if (varName == null) {
+ // Get the proper source build variable based upon the extension
+ varName = getSourceMacroName(ext).toString();
+ varList = buildSrcVars.get(varName);
+ } else {
+ varList = buildOutVars.get(varName);
+ }
+ // Add the resource to the list of all resources associated with a variable.
+ // Do not allow duplicates - there is no reason to and it can be 'bad' -
+ // e.g., having the same object in the OBJS list can cause duplicate symbol errors from the linker
+ if ((varList != null) && !(varList.contains(sourceLocation))) {
+ // Since we don't know how these files will be used, we store them using a "location"
+ // path rather than a relative path
+ varList.add(sourceLocation);
+ if (!buildVarToRuleStringMap.containsKey(varName)) {
+ // TODO - is this an error?
+ } else {
+ // Add the resource name to the makefile line that adds resources to the build variable
+ addMacroAdditionFile(buildVarToRuleStringMap, varName, relativePath, sourceLocation, generatedSource);
+ }
+ }
+ }
+
+ private IManagedCommandLineInfo generateToolCommandLineInfo(ITool tool, String sourceExtension, String[] flags,
+ String outputFlag, String outputPrefix, String outputName, String[] inputResources, IPath inputLocation,
+ IPath outputLocation) {
+
+ String cmd = tool.getToolCommand();
+ //try to resolve the build macros in the tool command
+ try {
+ String resolvedCommand = null;
+
+ if ((inputLocation != null && inputLocation.toString().indexOf(" ") != -1) || //$NON-NLS-1$
+ (outputLocation != null && outputLocation.toString().indexOf(" ") != -1)) //$NON-NLS-1$
+ {
+ resolvedCommand = ManagedBuildManager.getBuildMacroProvider().resolveValue(cmd, "", //$NON-NLS-1$
+ " ", //$NON-NLS-1$
+ IBuildMacroProvider.CONTEXT_FILE,
+ new FileContextData(inputLocation, outputLocation, null, tool));
+ }
+
+ else {
+ resolvedCommand = ManagedBuildManager.getBuildMacroProvider().resolveValueToMakefileFormat(cmd, "", //$NON-NLS-1$
+ " ", //$NON-NLS-1$
+ IBuildMacroProvider.CONTEXT_FILE,
+ new FileContextData(inputLocation, outputLocation, null, tool));
+ }
+ if ((resolvedCommand = resolvedCommand.trim()).length() > 0)
+ cmd = resolvedCommand;
+
+ } catch (BuildMacroException e) {
+ }
+
+ IManagedCommandLineGenerator gen = tool.getCommandLineGenerator();
+ return gen.generateCommandLineInfo(tool, cmd, flags, outputFlag, outputPrefix, outputName, inputResources,
+ tool.getCommandLinePattern());
+
+ }
+
+ /**
+ * Create a rule for this source file. We create a pattern rule if possible.
+ *
+ * This is an example of a pattern rule:
+ *
+ * <relative_path>/%.<outputExtension>: ../<relative_path>/%.<inputExtension>
+ * @echo Building file: $<
+ * @echo Invoking tool xxx
+ * @echo <tool> <flags> <output_flag><output_prefix>$@ $<
+ * @<tool> <flags> <output_flag><output_prefix>$@ $< && \
+ * echo -n $(@:%.o=%.d) ' <relative_path>/' >> $(@:%.o=%.d) && \
+ * <tool> -P -MM -MG <flags> $< >> $(@:%.o=%.d)
+ * @echo Finished building: $<
+ * @echo ' '
+ *
+ * Note that the macros all come from the build model and are
+ * resolved to a real command before writing to the module
+ * makefile, so a real command might look something like:
+ * source1/%.o: ../source1/%.cpp
+ * @echo Building file: $<
+ * @echo Invoking tool xxx
+ * @echo g++ -g -O2 -c -I/cygdrive/c/eclipse/workspace/Project/headers -o$@ $<
+ * @g++ -g -O2 -c -I/cygdrive/c/eclipse/workspace/Project/headers -o$@ $< && \
+ * echo -n $(@:%.o=%.d) ' source1/' >> $(@:%.o=%.d) && \
+ * g++ -P -MM -MG -g -O2 -c -I/cygdrive/c/eclipse/workspace/Project/headers $< >> $(@:%.o=%.d)
+ * @echo Finished building: $<
+ * @echo ' '
+ *
+ * @param relativePath top build output directory relative path of the current output directory
+ * @param buffer buffer to populate with the build rule
+ * @param resource the source file for this invocation of the tool
+ * @param sourceLocation the full path of the source
+ * @param rcInfo the IResourceInfo associated with this file or null
+ * @param generatedSource <code>true</code> if the resource is a generated output
+ * @param enumeratedOutputs vector of the filenames that are the output of this rule
+ */
+ protected void addRuleForSource(String relativePath, StringBuffer buffer, IResource resource, IPath sourceLocation,
+ IResourceInfo rcInfo, boolean generatedSource, Vector<IPath> generatedDepFiles,
+ Vector<IPath> enumeratedOutputs) {
+
+ String fileName = sourceLocation.removeFileExtension().lastSegment();
+ String inputExtension = sourceLocation.getFileExtension();
+ String outputExtension = null;
+
+ ITool tool = null;
+ if (rcInfo instanceof IFileInfo) {
+ IFileInfo fi = (IFileInfo) rcInfo;
+ ITool[] tools = fi.getToolsToInvoke();
+ if (tools != null && tools.length > 0) {
+ tool = tools[0];
+ }
+ } else {
+ IFolderInfo foInfo = (IFolderInfo) rcInfo;
+ tool = foInfo.getToolFromInputExtension(inputExtension);
+ }
+
+ ToolInfoHolder h = getToolInfo(rcInfo.getPath());
+
+ if (tool != null)
+ outputExtension = tool.getOutputExtension(inputExtension);
+ if (outputExtension == null)
+ outputExtension = EMPTY_STRING;
+
+ // Get the dependency generator information for this tool and file extension
+ IManagedDependencyGenerator oldDepGen = null; // This interface is deprecated but still supported
+ IManagedDependencyGenerator2 depGen = null; // This is the recommended interface
+ IManagedDependencyInfo depInfo = null;
+ IManagedDependencyCommands depCommands = null;
+ IManagedDependencyPreBuild depPreBuild = null;
+ IPath[] depFiles = null;
+ boolean doDepGen = false;
+ {
+ IManagedDependencyGeneratorType t = null;
+ if (tool != null)
+ t = tool.getDependencyGeneratorForExtension(inputExtension);
+ if (t != null) {
+ int calcType = t.getCalculatorType();
+ if (calcType <= IManagedDependencyGeneratorType.TYPE_OLD_TYPE_LIMIT) {
+ oldDepGen = (IManagedDependencyGenerator) t;
+ doDepGen = (calcType == IManagedDependencyGeneratorType.TYPE_COMMAND);
+ if (doDepGen) {
+ IPath depFile = Path.fromOSString(relativePath + fileName + DOT + DEP_EXT);
+ getDependencyMakefiles(h).add(depFile);
+ generatedDepFiles.add(depFile);
+ }
+ } else {
+ depGen = (IManagedDependencyGenerator2) t;
+ doDepGen = (calcType == IManagedDependencyGeneratorType.TYPE_BUILD_COMMANDS);
+ IBuildObject buildContext = rcInfo;//(resConfig != null) ? (IBuildObject)resConfig : (IBuildObject)config;
+
+ depInfo = depGen.getDependencySourceInfo(resource.getProjectRelativePath(), resource, buildContext,
+ tool, getBuildWorkingDir());
+
+ if (calcType == IManagedDependencyGeneratorType.TYPE_BUILD_COMMANDS) {
+ depCommands = (IManagedDependencyCommands) depInfo;
+ depFiles = depCommands.getDependencyFiles();
+ } else if (calcType == IManagedDependencyGeneratorType.TYPE_PREBUILD_COMMANDS) {
+ depPreBuild = (IManagedDependencyPreBuild) depInfo;
+ depFiles = depPreBuild.getDependencyFiles();
+ }
+ if (depFiles != null) {
+ for (IPath depFile : depFiles) {
+ getDependencyMakefiles(h).add(depFile);
+ generatedDepFiles.add(depFile);
+ }
+ }
+ }
+ }
+ }
+
+ // Figure out the output paths
+ String optDotExt = EMPTY_STRING;
+ if (outputExtension.length() > 0)
+ optDotExt = DOT + outputExtension;
+
+ Vector<IPath> ruleOutputs = new Vector<>();
+ Vector<IPath> enumeratedPrimaryOutputs = new Vector<>(); // IPaths relative to the top build directory
+ Vector<IPath> enumeratedSecondaryOutputs = new Vector<>(); // IPaths relative to the top build directory
+ calculateOutputsForSource(tool, relativePath, resource, sourceLocation, ruleOutputs, enumeratedPrimaryOutputs,
+ enumeratedSecondaryOutputs);
+ enumeratedOutputs.addAll(enumeratedPrimaryOutputs);
+ enumeratedOutputs.addAll(enumeratedSecondaryOutputs);
+ String primaryOutputName = null;
+ if (enumeratedPrimaryOutputs.size() > 0) {
+ primaryOutputName = escapeWhitespaces(enumeratedPrimaryOutputs.get(0).toString());
+ } else {
+ primaryOutputName = escapeWhitespaces(relativePath + fileName + optDotExt);
+ }
+ String otherPrimaryOutputs = EMPTY_STRING;
+ for (int i = 1; i < enumeratedPrimaryOutputs.size(); i++) { // Starting with 1 is intentional
+ otherPrimaryOutputs += WHITESPACE + escapeWhitespaces(enumeratedPrimaryOutputs.get(i).toString());
+ }
+
+ // Output file location needed for the file-specific build macros
+ IPath outputLocation = Path.fromOSString(primaryOutputName);
+ if (!outputLocation.isAbsolute()) {
+ outputLocation = getPathForResource(project).append(getBuildWorkingDir()).append(primaryOutputName);
+ }
+
+ // A separate rule is needed for the resource in the case where explicit file-specific macros
+ // are referenced, or if the resource contains special characters in its path (e.g., whitespace)
+
+ /* fix for 137674
+ *
+ * We only need an explicit rule if one of the following is true:
+ * - The resource is linked, and its full path to its real location contains special characters
+ * - The resource is not linked, but its project relative path contains special characters
+ */
+
+ boolean resourceNameRequiresExplicitRule = (resource.isLinked()
+ && containsSpecialCharacters(sourceLocation.toString()))
+ || (!resource.isLinked() && containsSpecialCharacters(resource.getProjectRelativePath().toString()));
+
+ boolean needExplicitRuleForFile = resourceNameRequiresExplicitRule
+ || BuildMacroProvider.getReferencedExplitFileMacros(tool).length > 0
+ || BuildMacroProvider.getReferencedExplitFileMacros(tool.getToolCommand(),
+ IBuildMacroProvider.CONTEXT_FILE,
+ new FileContextData(sourceLocation, outputLocation, null, tool)).length > 0;
+
+ // Get and resolve the command
+ String cmd = tool.getToolCommand();
+
+ try {
+ String resolvedCommand = null;
+ if (!needExplicitRuleForFile) {
+ resolvedCommand = ManagedBuildManager.getBuildMacroProvider().resolveValueToMakefileFormat(cmd,
+ EMPTY_STRING, WHITESPACE, IBuildMacroProvider.CONTEXT_FILE,
+ new FileContextData(sourceLocation, outputLocation, null, tool));
+ } else {
+ // if we need an explicit rule then don't use any builder
+ // variables, resolve everything
+ // to explicit strings
+ resolvedCommand = ManagedBuildManager.getBuildMacroProvider().resolveValue(cmd, EMPTY_STRING,
+ WHITESPACE, IBuildMacroProvider.CONTEXT_FILE,
+ new FileContextData(sourceLocation, outputLocation, null, tool));
+ }
+
+ if ((resolvedCommand = resolvedCommand.trim()).length() > 0)
+ cmd = resolvedCommand;
+
+ } catch (BuildMacroException e) {
+ }
+
+ String defaultOutputName = EMPTY_STRING;
+ String primaryDependencyName = EMPTY_STRING;
+ String patternPrimaryDependencyName = EMPTY_STRING;
+ String home = (generatedSource) ? DOT : reachProjectRoot();
+ String resourcePath = null;
+ boolean patternRule = true;
+ boolean isItLinked = false;
+ if (resource.isLinked(IResource.CHECK_ANCESTORS)) {
+ // it IS linked, so use the actual location
+ isItLinked = true;
+ resourcePath = sourceLocation.toString();
+ // Need a hardcoded rule, not a pattern rule, as a linked file
+ // can reside in any path
+ defaultOutputName = escapeWhitespaces(relativePath + fileName + optDotExt);
+ primaryDependencyName = escapeWhitespaces(resourcePath);
+ patternRule = false;
+ } else {
+ // Use the relative path (not really needed to store per se but in the future someone may want this)
+ resourcePath = relativePath;
+ // The rule and command to add to the makefile
+ if (rcInfo instanceof IFileInfo || needExplicitRuleForFile) {
+ // Need a hardcoded rule, not a pattern rule
+ defaultOutputName = escapeWhitespaces(resourcePath + fileName + optDotExt);
+ patternRule = false;
+ } else {
+ defaultOutputName = relativePath + WILDCARD + optDotExt;
+ }
+ primaryDependencyName = escapeWhitespaces(
+ home + SEPARATOR + resourcePath + fileName + DOT + inputExtension);
+ patternPrimaryDependencyName = home + SEPARATOR + resourcePath + WILDCARD + DOT + inputExtension;
+ } // end fix for PR 70491
+
+ // If the tool specifies a dependency calculator of TYPE_BUILD_COMMANDS, ask whether
+ // the dependency commands are "generic" (i.e., we can use a pattern rule)
+ boolean needExplicitDependencyCommands = false;
+ if (depCommands != null) {
+ needExplicitDependencyCommands = !depCommands.areCommandsGeneric();
+ }
+
+ // If we still think that we are using a pattern rule, check a few more things
+ if (patternRule) {
+ patternRule = false;
+ // Make sure that at least one of the rule outputs contains a %.
+ for (int i = 0; i < ruleOutputs.size(); i++) {
+ String ruleOutput = ruleOutputs.get(i).toString();
+ if (ruleOutput.indexOf('%') >= 0) {
+ patternRule = true;
+ break;
+ }
+ }
+ if (patternRule) {
+ patternRule = !needExplicitDependencyCommands;
+ }
+ }
+
+ // Begin building the rule for this source file
+ String buildRule = EMPTY_STRING;
+
+ if (patternRule) {
+ if (ruleOutputs.size() == 0) {
+ buildRule += defaultOutputName;
+ } else {
+ boolean first = true;
+ for (int i = 0; i < ruleOutputs.size(); i++) {
+ String ruleOutput = ruleOutputs.get(i).toString();
+ if (ruleOutput.indexOf('%') >= 0) {
+ if (first) {
+ first = false;
+ } else {
+ buildRule += WHITESPACE;
+ }
+ buildRule += ruleOutput;
+ }
+ }
+ }
+ } else {
+ buildRule += primaryOutputName;
+ }
+
+ String buildRuleDependencies = primaryDependencyName;
+ String patternBuildRuleDependencies = patternPrimaryDependencyName;
+
+ // Other additional inputs
+ // Get any additional dependencies specified for the tool in other InputType elements and AdditionalInput elements
+ IPath[] addlDepPaths = tool.getAdditionalDependencies();
+ for (IPath addlDepPath : addlDepPaths) {
+ // Translate the path from project relative to build directory relative
+ IPath addlPath = addlDepPath;
+ if (!(addlPath.toString().startsWith("$("))) { //$NON-NLS-1$
+ if (!addlPath.isAbsolute()) {
+ IPath tempPath = project.getLocation().append(new Path(ensureUnquoted(addlPath.toString())));
+ if (tempPath != null) {
+ addlPath = ManagedBuildManager.calculateRelativePath(getTopBuildDir(), tempPath);
+ }
+ }
+ }
+ String suitablePath = ensurePathIsGNUMakeTargetRuleCompatibleSyntax(addlPath.toString());
+ buildRuleDependencies += WHITESPACE + suitablePath;
+ patternBuildRuleDependencies += WHITESPACE + suitablePath;
+ }
+
+ buildRule += COLON + WHITESPACE + (patternRule ? patternBuildRuleDependencies : buildRuleDependencies)
+ + WHITESPACE + escapeWhitespaces(relativePath + MODFILE_NAME);
+
+ // No duplicates in a makefile. If we already have this rule, don't add it or the commands to build the file
+ if (getRuleList().contains(buildRule)) {
+ // TODO: Should we assert that this is a pattern rule?
+ } else {
+ getRuleList().add(buildRule);
+
+ // Echo starting message
+ buffer.append(buildRule).append(NEWLINE);
+ buffer.append(TAB).append(AT).append(escapedEcho(MESSAGE_START_FILE + WHITESPACE + IN_MACRO));
+ buffer.append(TAB).append(AT).append(escapedEcho(tool.getAnnouncement()));
+
+ // If the tool specifies a dependency calculator of TYPE_BUILD_COMMANDS, ask whether
+ // there are any pre-tool commands.
+ if (depCommands != null) {
+ String[] preToolCommands = depCommands.getPreToolDependencyCommands();
+ if (preToolCommands != null && preToolCommands.length > 0) {
+ for (String preCmd : preToolCommands) {
+ try {
+ String resolvedCommand;
+ IBuildMacroProvider provider = ManagedBuildManager.getBuildMacroProvider();
+ if (!needExplicitRuleForFile) {
+ resolvedCommand = provider.resolveValueToMakefileFormat(preCmd, EMPTY_STRING,
+ WHITESPACE, IBuildMacroProvider.CONTEXT_FILE,
+ new FileContextData(sourceLocation, outputLocation, null, tool));
+ } else {
+ // if we need an explicit rule then don't use any builder
+ // variables, resolve everything to explicit strings
+ resolvedCommand = provider.resolveValue(preCmd, EMPTY_STRING, WHITESPACE,
+ IBuildMacroProvider.CONTEXT_FILE,
+ new FileContextData(sourceLocation, outputLocation, null, tool));
+ }
+ if (resolvedCommand != null)
+ buffer.append(resolvedCommand).append(NEWLINE);
+ } catch (BuildMacroException e) {
+ }
+ }
+ }
+ }
+
+ // Generate the command line
+
+ Vector<String> inputs = new Vector<>();
+ inputs.add(IN_MACRO);
+
+ // Other additional inputs
+ // Get any additional dependencies specified for the tool in other InputType elements and AdditionalInput elements
+ IPath[] addlInputPaths = getAdditionalResourcesForSource(tool);
+ for (IPath addlInputPath : addlInputPaths) {
+ // Translate the path from project relative to build directory relative
+ IPath addlPath = addlInputPath;
+ if (!(addlPath.toString().startsWith("$("))) { //$NON-NLS-1$
+ if (!addlPath.isAbsolute()) {
+ IPath tempPath = getPathForResource(project).append(addlPath);
+ if (tempPath != null) {
+ addlPath = ManagedBuildManager.calculateRelativePath(getTopBuildDir(), tempPath);
+ }
+ }
+ }
+ inputs.add(addlPath.toString());
+ }
+ String[] inputStrings = inputs.toArray(new String[inputs.size()]);
+
+ String[] flags = null;
+ // Get the tool command line options
+ try {
+ flags = tool.getToolCommandFlags(sourceLocation, outputLocation);
+ } catch (BuildException ex) {
+ // TODO add some routines to catch this
+ flags = EMPTY_STRING_ARRAY;
+ }
+
+ // If we have a TYPE_BUILD_COMMANDS dependency generator, determine if there are any options that
+ // it wants added to the command line
+ if (depCommands != null) {
+ flags = addDependencyOptions(depCommands, flags);
+ }
+
+ IManagedCommandLineInfo cmdLInfo = null;
+ String outflag = null;
+ String outputPrefix = null;
+
+ if (rcInfo instanceof IFileInfo || needExplicitRuleForFile || needExplicitDependencyCommands) {
+ outflag = tool.getOutputFlag();
+ outputPrefix = tool.getOutputPrefix();
+
+ // Call the command line generator
+ IManagedCommandLineGenerator cmdLGen = tool.getCommandLineGenerator();
+ cmdLInfo = cmdLGen.generateCommandLineInfo(tool, cmd, flags, outflag, outputPrefix,
+ OUT_MACRO + otherPrimaryOutputs, inputStrings, tool.getCommandLinePattern());
+
+ } else {
+ outflag = tool.getOutputFlag();//config.getOutputFlag(outputExtension);
+ outputPrefix = tool.getOutputPrefix();//config.getOutputPrefix(outputExtension);
+
+ // Call the command line generator
+ cmdLInfo = generateToolCommandLineInfo(tool, inputExtension, flags, outflag, outputPrefix,
+ OUT_MACRO + otherPrimaryOutputs, inputStrings, sourceLocation, outputLocation);
+ }
+
+ // The command to build
+ String buildCmd;
+ if (cmdLInfo != null) {
+ buildCmd = cmdLInfo.getCommandLine();
+ } else {
+ StringBuffer buildFlags = new StringBuffer();
+ for (String flag : flags) {
+ if (flag != null) {
+ buildFlags.append(flag).append(WHITESPACE);
+ }
+ }
+ buildCmd = cmd + WHITESPACE + buildFlags.toString().trim() + WHITESPACE + outflag + WHITESPACE
+ + outputPrefix + OUT_MACRO + otherPrimaryOutputs + WHITESPACE + IN_MACRO;
+ }
+
+ // resolve any remaining macros in the command after it has been
+ // generated
+ try {
+ String resolvedCommand;
+ IBuildMacroProvider provider = ManagedBuildManager.getBuildMacroProvider();
+ if (!needExplicitRuleForFile) {
+ resolvedCommand = provider.resolveValueToMakefileFormat(buildCmd, EMPTY_STRING, WHITESPACE,
+ IBuildMacroProvider.CONTEXT_FILE,
+ new FileContextData(sourceLocation, outputLocation, null, tool));
+ } else {
+ // if we need an explicit rule then don't use any builder
+ // variables, resolve everything to explicit strings
+ resolvedCommand = provider.resolveValue(buildCmd, EMPTY_STRING, WHITESPACE,
+ IBuildMacroProvider.CONTEXT_FILE,
+ new FileContextData(sourceLocation, outputLocation, null, tool));
+ }
+
+ if ((resolvedCommand = resolvedCommand.trim()).length() > 0)
+ buildCmd = resolvedCommand;
+
+ } catch (BuildMacroException e) {
+ }
+
+ //buffer.append(TAB).append(AT).append(escapedEcho(buildCmd));
+ //buffer.append(TAB).append(AT).append(buildCmd);
+ buffer.append(TAB).append(buildCmd);
+
+ // Determine if there are any dependencies to calculate
+ if (doDepGen) {
+ // Get the dependency rule out of the generator
+ String[] depCmds = null;
+ if (oldDepGen != null) {
+ depCmds = new String[1];
+ depCmds[0] = oldDepGen.getDependencyCommand(resource, ManagedBuildManager.getBuildInfo(project));
+ } else {
+ if (depCommands != null) {
+ depCmds = depCommands.getPostToolDependencyCommands();
+ }
+ }
+
+ if (depCmds != null) {
+ for (String depCmd : depCmds) {
+ // Resolve any macros in the dep command after it has been generated.
+ // Note: do not trim the result because it will strip out necessary tab characters.
+ buffer.append(WHITESPACE).append(LOGICAL_AND).append(WHITESPACE).append(LINEBREAK);
+ try {
+ if (!needExplicitRuleForFile) {
+ depCmd = ManagedBuildManager.getBuildMacroProvider().resolveValueToMakefileFormat(
+ depCmd, EMPTY_STRING, WHITESPACE, IBuildMacroProvider.CONTEXT_FILE,
+ new FileContextData(sourceLocation, outputLocation, null, tool));
+ }
+
+ else {
+ depCmd = ManagedBuildManager.getBuildMacroProvider().resolveValue(depCmd, EMPTY_STRING,
+ WHITESPACE, IBuildMacroProvider.CONTEXT_FILE,
+ new FileContextData(sourceLocation, outputLocation, null, tool));
+ }
+
+ } catch (BuildMacroException e) {
+ }
+
+ buffer.append(depCmd);
+ }
+ }
+ }
+
+ // Echo finished message
+ buffer.append(NEWLINE);
+ buffer.append(TAB).append(AT).append(escapedEcho(MESSAGE_FINISH_FILE + WHITESPACE + IN_MACRO));
+ buffer.append(TAB).append(AT).append(ECHO_BLANK_LINE).append(NEWLINE);
+ }
+
+ // Determine if there are calculated dependencies
+ IPath[] addlDeps = null; // IPath's that are relative to the build directory
+ IPath[] addlTargets = null; // IPath's that are relative to the build directory
+ String calculatedDependencies = null;
+ boolean addedDepLines = false;
+ String depLine;
+ if (oldDepGen != null && oldDepGen.getCalculatorType() != IManagedDependencyGeneratorType.TYPE_COMMAND) {
+ addlDeps = oldCalculateDependenciesForSource(oldDepGen, tool, relativePath, resource);
+ } else {
+ if (depGen != null && depGen.getCalculatorType() == IManagedDependencyGeneratorType.TYPE_CUSTOM) {
+ if (depInfo instanceof IManagedDependencyCalculator) {
+ IManagedDependencyCalculator depCalculator = (IManagedDependencyCalculator) depInfo;
+ addlDeps = calculateDependenciesForSource(depCalculator);
+ addlTargets = depCalculator.getAdditionalTargets();
+ }
+ }
+ }
+
+ if (addlDeps != null && addlDeps.length > 0) {
+ calculatedDependencies = ""; //$NON-NLS-1$
+ for (IPath addlDep : addlDeps) {
+ calculatedDependencies += WHITESPACE + escapeWhitespaces(addlDep.toString());
+ }
+ }
+
+ if (calculatedDependencies != null) {
+ depLine = primaryOutputName + COLON + calculatedDependencies + NEWLINE;
+ if (!getDepLineList().contains(depLine)) {
+ getDepLineList().add(depLine);
+ addedDepLines = true;
+ buffer.append(depLine);
+ }
+ }
+
+ // Add any additional outputs here using dependency lines
+ Vector<IPath> addlOutputs = new Vector<>();
+ if (enumeratedPrimaryOutputs.size() > 1) {
+ // Starting with 1 is intentional in order to skip the primary output
+ for (int i = 1; i < enumeratedPrimaryOutputs.size(); i++)
+ addlOutputs.add(enumeratedPrimaryOutputs.get(i));
+ }
+ addlOutputs.addAll(enumeratedSecondaryOutputs);
+ if (addlTargets != null) {
+ for (IPath addlTarget : addlTargets)
+ addlOutputs.add(addlTarget);
+ }
+ for (int i = 0; i < addlOutputs.size(); i++) {
+ depLine = escapeWhitespaces(addlOutputs.get(i).toString()) + COLON + WHITESPACE + primaryOutputName;
+ if (calculatedDependencies != null)
+ depLine += calculatedDependencies;
+ depLine += NEWLINE;
+ if (!getDepLineList().contains(depLine)) {
+ getDepLineList().add(depLine);
+ addedDepLines = true;
+ buffer.append(depLine);
+ }
+ }
+ if (addedDepLines) {
+ buffer.append(NEWLINE);
+ }
+
+ // If we are using a dependency calculator of type TYPE_PREBUILD_COMMANDS,
+ // get the rule to build the dependency file
+ if (depPreBuild != null && depFiles != null) {
+ addedDepLines = false;
+ String[] preBuildCommands = depPreBuild.getDependencyCommands();
+ if (preBuildCommands != null) {
+ depLine = ""; //$NON-NLS-1$
+ // Can we use a pattern rule?
+ patternRule = !isItLinked && !needExplicitRuleForFile && depPreBuild.areCommandsGeneric();
+ // Begin building the rule
+ for (int i = 0; i < depFiles.length; i++) {
+ if (i > 0)
+ depLine += WHITESPACE;
+ if (patternRule) {
+ optDotExt = EMPTY_STRING;
+ String depExt = depFiles[i].getFileExtension();
+ if (depExt != null && depExt.length() > 0)
+ optDotExt = DOT + depExt;
+ depLine += escapeWhitespaces(relativePath + WILDCARD + optDotExt);
+ } else {
+ depLine += escapeWhitespaces((depFiles[i]).toString());
+ }
+ }
+ depLine += COLON + WHITESPACE + (patternRule ? patternBuildRuleDependencies : buildRuleDependencies)
+ + WHITESPACE + escapeWhitespaces(relativePath + MODFILE_NAME);
+ if (!getDepRuleList().contains(depLine)) {
+ getDepRuleList().add(depLine);
+ addedDepLines = true;
+ buffer.append(depLine).append(NEWLINE);
+ buffer.append(TAB).append(AT)
+ .append(escapedEcho(MESSAGE_START_DEPENDENCY + WHITESPACE + OUT_MACRO));
+ for (String preBuildCommand : preBuildCommands) {
+ depLine = preBuildCommand;
+ // Resolve macros
+ try {
+ if (!needExplicitRuleForFile) {
+ depLine = ManagedBuildManager.getBuildMacroProvider().resolveValueToMakefileFormat(
+ depLine, EMPTY_STRING, WHITESPACE, IBuildMacroProvider.CONTEXT_FILE,
+ new FileContextData(sourceLocation, outputLocation, null, tool));
+ }
+
+ else {
+ depLine = ManagedBuildManager.getBuildMacroProvider().resolveValue(depLine,
+ EMPTY_STRING, WHITESPACE, IBuildMacroProvider.CONTEXT_FILE,
+ new FileContextData(sourceLocation, outputLocation, null, tool));
+ }
+
+ } catch (BuildMacroException e) {
+ }
+ //buffer.append(TAB).append(AT).append(escapedEcho(depLine));
+ //buffer.append(TAB).append(AT).append(depLine).append(NEWLINE);
+ buffer.append(TAB).append(depLine).append(NEWLINE);
+ }
+ }
+ if (addedDepLines) {
+ buffer.append(TAB).append(AT).append(ECHO_BLANK_LINE).append(NEWLINE);
+ }
+ }
+ }
+ }
+
+ /*
+ * Add any dependency calculator options to the tool options
+ */
+ private String[] addDependencyOptions(IManagedDependencyCommands depCommands, String[] flags) {
+ String[] depOptions = depCommands.getDependencyCommandOptions();
+ if (depOptions != null && depOptions.length > 0) {
+ int flagsLen = flags.length;
+ String[] flagsCopy = new String[flags.length + depOptions.length];
+ for (int i = 0; i < flags.length; i++) {
+ flagsCopy[i] = flags[i];
+ }
+ for (int i = 0; i < depOptions.length; i++) {
+ flagsCopy[i + flagsLen] = depOptions[i];
+ }
+ flags = flagsCopy;
+ }
+ return flags;
+ }
+
+ /**
+ * Returns any additional resources specified for the tool in other InputType elements and AdditionalInput elements
+ */
+ protected IPath[] getAdditionalResourcesForSource(ITool tool) {
+ List<IPath> allRes = new ArrayList<>();
+ IInputType[] types = tool.getInputTypes();
+ for (IInputType type : types) {
+ // Additional resources come from 2 places.
+ // 1. From AdditionalInput childen
+ IPath[] res = type.getAdditionalResources();
+ for (IPath re : res) {
+ allRes.add(re);
+ }
+ // 2. From InputTypes that other than the primary input type
+ if (!type.getPrimaryInput() && type != tool.getPrimaryInputType()) {
+ String var = type.getBuildVariable();
+ if (var != null && var.length() > 0) {
+ allRes.add(Path.fromOSString("$(" + type.getBuildVariable() + ")")); //$NON-NLS-1$ //$NON-NLS-2$
+ } else {
+ // Use file extensions
+ String[] typeExts = type.getSourceExtensions(tool);
+ for (IResource projectResource : projectResources) {
+ if (projectResource.getType() == IResource.FILE) {
+ String fileExt = projectResource.getFileExtension();
+ if (fileExt == null) {
+ fileExt = ""; //$NON-NLS-1$
+ }
+ for (String typeExt : typeExts) {
+ if (fileExt.equals(typeExt)) {
+ allRes.add(projectResource.getProjectRelativePath());
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ // If an assignToOption has been specified, set the value of the option to the inputs
+ IOption assignToOption = tool.getOptionBySuperClassId(type.getAssignToOptionId());
+ IOption option = tool.getOptionBySuperClassId(type.getOptionId());
+ if (assignToOption != null && option == null) {
+ try {
+ int optType = assignToOption.getValueType();
+ IResourceInfo rcInfo = tool.getParentResourceInfo();
+ if (rcInfo != null) {
+ if (optType == IOption.STRING) {
+ String optVal = ""; //$NON-NLS-1$
+ for (int j = 0; j < allRes.size(); j++) {
+ if (j != 0) {
+ optVal += " "; //$NON-NLS-1$
+ }
+ String resPath = allRes.get(j).toString();
+ if (!resPath.startsWith("$(")) { //$NON-NLS-1$
+ IResource addlResource = project.getFile(resPath);
+ if (addlResource != null) {
+ IPath addlPath = addlResource.getLocation();
+ if (addlPath != null) {
+ resPath = ManagedBuildManager
+ .calculateRelativePath(getTopBuildDir(), addlPath).toString();
+ }
+ }
+ }
+ optVal += ManagedBuildManager
+ .calculateRelativePath(getTopBuildDir(), Path.fromOSString(resPath))
+ .toString();
+ }
+ ManagedBuildManager.setOption(rcInfo, tool, assignToOption, optVal);
+ } else if (optType == IOption.STRING_LIST || optType == IOption.LIBRARIES
+ || optType == IOption.OBJECTS || optType == IOption.INCLUDE_FILES
+ || optType == IOption.LIBRARY_PATHS || optType == IOption.LIBRARY_FILES
+ || optType == IOption.MACRO_FILES) {
+ //TODO: do we need to do anything with undefs here?
+ // Note that the path(s) must be translated from project relative
+ // to top build directory relative
+ String[] paths = new String[allRes.size()];
+ for (int j = 0; j < allRes.size(); j++) {
+ paths[j] = allRes.get(j).toString();
+ if (!paths[j].startsWith("$(")) { //$NON-NLS-1$
+ IResource addlResource = project.getFile(paths[j]);
+ if (addlResource != null) {
+ IPath addlPath = addlResource.getLocation();
+ if (addlPath != null) {
+ paths[j] = ManagedBuildManager
+ .calculateRelativePath(getTopBuildDir(), addlPath).toString();
+ }
+ }
+ }
+ }
+ ManagedBuildManager.setOption(rcInfo, tool, assignToOption, paths);
+ } else if (optType == IOption.BOOLEAN) {
+ boolean b = false;
+ if (allRes.size() > 0)
+ b = true;
+ ManagedBuildManager.setOption(rcInfo, tool, assignToOption, b);
+ } else if (optType == IOption.ENUMERATED || optType == IOption.TREE) {
+ if (allRes.size() > 0) {
+ String s = allRes.get(0).toString();
+ ManagedBuildManager.setOption(rcInfo, tool, assignToOption, s);
+ }
+ }
+ allRes.clear();
+ }
+ } catch (BuildException ex) {
+ }
+ }
+ }
+ }
+ return allRes.toArray(new IPath[allRes.size()]);
+ }
+
+ /**
+ * Returns the output <code>IPath</code>s for this invocation of the tool with the specified source file
+ *
+ * The priorities for determining the names of the outputs of a tool are:
+ * 1. If the tool is the build target and primary output, use artifact name & extension -
+ * This case does not apply here...
+ * 2. If an option is specified, use the value of the option
+ * 3. If a nameProvider is specified, call it
+ * 4. If outputNames is specified, use it
+ * 5. Use the name pattern to generate a transformation macro
+ * so that the source names can be transformed into the target names
+ * using the built-in string substitution functions of <code>make</code>.
+ *
+ * @param relativePath build output directory relative path of the current output directory
+ * @param ruleOutputs Vector of rule IPaths that are relative to the build directory
+ * @param enumeratedPrimaryOutputs Vector of IPaths of primary outputs
+ * that are relative to the build directory
+ * @param enumeratedSecondaryOutputs Vector of IPaths of secondary outputs
+ * that are relative to the build directory
+ */
+ protected void calculateOutputsForSource(ITool tool, String relativePath, IResource resource, IPath sourceLocation,
+ Vector<IPath> ruleOutputs, Vector<IPath> enumeratedPrimaryOutputs,
+ Vector<IPath> enumeratedSecondaryOutputs) {
+ String inExt = sourceLocation.getFileExtension();
+ String outExt = tool.getOutputExtension(inExt);
+ IResourceInfo rcInfo = tool.getParentResourceInfo();
+
+ IOutputType[] outTypes = tool.getOutputTypes();
+ if (outTypes != null && outTypes.length > 0) {
+ for (IOutputType type : outTypes) {
+ boolean primaryOutput = (type == tool.getPrimaryOutputType());
+ //if (primaryOutput && ignorePrimary) continue;
+ String outputPrefix = type.getOutputPrefix();
+
+ // Resolve any macros in the outputPrefix
+ // Note that we cannot use file macros because if we do a clean
+ // we need to know the actual name of the file to clean, and
+ // cannot use any builder variables such as $@. Hence we use the
+ // next best thing, i.e. configuration context.
+
+ // figure out the configuration we're using
+ // IBuildObject toolParent = tool.getParent();
+ // IConfiguration config = null;
+ // if the parent is a config then we're done
+ // if (toolParent instanceof IConfiguration)
+ // config = (IConfiguration) toolParent;
+ // else if (toolParent instanceof IToolChain) {
+ // // must be a toolchain
+ // config = (IConfiguration) ((IToolChain) toolParent)
+ // .getParent();
+ // }
+ //
+ // else if (toolParent instanceof IResourceConfiguration) {
+ // config = (IConfiguration) ((IResourceConfiguration) toolParent)
+ // .getParent();
+ // }
+
+ // else {
+ // // bad
+ // throw new AssertionError(
+ // "tool parent must be one of configuration, toolchain, or resource configuration");
+ // }
+
+ // if (config != null) {
+
+ try {
+
+ if (containsSpecialCharacters(sourceLocation.toString())) {
+ outputPrefix = ManagedBuildManager.getBuildMacroProvider().resolveValue(outputPrefix, "", //$NON-NLS-1$
+ " ", //$NON-NLS-1$
+ IBuildMacroProvider.CONTEXT_CONFIGURATION, config);
+ } else {
+ outputPrefix = ManagedBuildManager.getBuildMacroProvider().resolveValueToMakefileFormat(
+ outputPrefix, "", //$NON-NLS-1$
+ " ", //$NON-NLS-1$
+ IBuildMacroProvider.CONTEXT_CONFIGURATION, config);
+ }
+ }
+
+ catch (BuildMacroException e) {
+ }
+
+ // }
+
+ boolean multOfType = type.getMultipleOfType();
+ IOption option = tool.getOptionBySuperClassId(type.getOptionId());
+ IManagedOutputNameProvider nameProvider = type.getNameProvider();
+ String[] outputNames = type.getOutputNames();
+
+ // 1. If the tool is the build target and this is the primary output,
+ // use artifact name & extension
+ // Not appropriate here...
+ // 2. If an option is specified, use the value of the option
+ if (option != null) {
+ try {
+ List<String> outputList = new ArrayList<>();
+ int optType = option.getValueType();
+ if (optType == IOption.STRING) {
+ outputList.add(outputPrefix + option.getStringValue());
+ } else if (optType == IOption.STRING_LIST || optType == IOption.LIBRARIES
+ || optType == IOption.OBJECTS || optType == IOption.INCLUDE_FILES
+ || optType == IOption.LIBRARY_PATHS || optType == IOption.LIBRARY_FILES
+ || optType == IOption.MACRO_FILES) {
+ @SuppressWarnings("unchecked")
+ List<String> value = (List<String>) option.getValue();
+ outputList = value;
+ ((Tool) tool).filterValues(optType, outputList);
+ // Add outputPrefix to each if necessary
+ if (outputPrefix.length() > 0) {
+ for (int j = 0; j < outputList.size(); j++) {
+ outputList.set(j, outputPrefix + outputList.get(j));
+ }
+ }
+ }
+ for (int j = 0; j < outputList.size(); j++) {
+ String outputName = outputList.get(j);
+
+ // try to resolve the build macros in the output
+ // names
+ try {
+
+ String resolved = null;
+
+ if (containsSpecialCharacters(sourceLocation.toString())) {
+ resolved = ManagedBuildManager.getBuildMacroProvider().resolveValue(outputName, "", //$NON-NLS-1$
+ " ", //$NON-NLS-1$
+ IBuildMacroProvider.CONTEXT_FILE,
+ new FileContextData(sourceLocation, null, option, tool));
+ }
+
+ else {
+ resolved = ManagedBuildManager.getBuildMacroProvider().resolveValueToMakefileFormat(
+ outputName, "", //$NON-NLS-1$
+ " ", //$NON-NLS-1$
+ IBuildMacroProvider.CONTEXT_FILE,
+ new FileContextData(sourceLocation, null, option, tool));
+ }
+
+ if ((resolved = resolved.trim()).length() > 0)
+ outputName = resolved;
+ } catch (BuildMacroException e) {
+ }
+
+ IPath outPath = Path.fromOSString(outputName);
+ // If only a file name is specified, add the relative path of this output directory
+ if (outPath.segmentCount() == 1) {
+ outPath = Path.fromOSString(relativePath + outputList.get(j));
+ }
+ if (primaryOutput) {
+ ruleOutputs.add(j, outPath);
+ enumeratedPrimaryOutputs.add(j, resolvePercent(outPath, sourceLocation));
+ } else {
+ ruleOutputs.add(outPath);
+ enumeratedSecondaryOutputs.add(resolvePercent(outPath, sourceLocation));
+ }
+ }
+ } catch (BuildException ex) {
+ }
+ } else
+ // 3. If a nameProvider is specified, call it
+ if (nameProvider != null) {
+ IPath[] inPaths = new IPath[1];
+ inPaths[0] = sourceLocation;
+ IPath[] outPaths = nameProvider.getOutputNames(tool, inPaths);
+ if (outPaths != null) {
+ for (int j = 0; j < outPaths.length; j++) {
+ IPath outPath = outPaths[j];
+ String outputName = outPaths[j].toString();
+
+ // try to resolve the build macros in the output names
+ try {
+
+ String resolved = null;
+
+ if (containsSpecialCharacters(sourceLocation.toString())) {
+ resolved = ManagedBuildManager.getBuildMacroProvider().resolveValue(outputName, "", //$NON-NLS-1$
+ " ", //$NON-NLS-1$
+ IBuildMacroProvider.CONTEXT_FILE,
+ new FileContextData(sourceLocation, null, option, tool));
+ }
+
+ else {
+ resolved = ManagedBuildManager.getBuildMacroProvider().resolveValueToMakefileFormat(
+ outputName, "", //$NON-NLS-1$
+ " ", //$NON-NLS-1$
+ IBuildMacroProvider.CONTEXT_FILE,
+ new FileContextData(sourceLocation, null, option, tool));
+ }
+
+ if ((resolved = resolved.trim()).length() > 0)
+ outputName = resolved;
+ } catch (BuildMacroException e) {
+ }
+
+ // If only a file name is specified, add the relative path of this output directory
+ if (outPath.segmentCount() == 1) {
+ outPath = Path.fromOSString(relativePath + outPath.toString());
+ }
+ if (primaryOutput) {
+ ruleOutputs.add(j, outPath);
+ enumeratedPrimaryOutputs.add(j, resolvePercent(outPath, sourceLocation));
+ } else {
+ ruleOutputs.add(outPath);
+ enumeratedSecondaryOutputs.add(resolvePercent(outPath, sourceLocation));
+ }
+ }
+ }
+ } else
+ // 4. If outputNames is specified, use it
+ if (outputNames != null) {
+ for (int j = 0; j < outputNames.length; j++) {
+ String outputName = outputNames[j];
+ try {
+ //try to resolve the build macros in the output names
+ String resolved = ManagedBuildManager.getBuildMacroProvider().resolveValueToMakefileFormat(
+ outputName, "", //$NON-NLS-1$
+ " ", //$NON-NLS-1$
+ IBuildMacroProvider.CONTEXT_FILE,
+ new FileContextData(sourceLocation, null, option, tool));
+ if ((resolved = resolved.trim()).length() > 0)
+ outputName = resolved;
+ } catch (BuildMacroException e) {
+ }
+
+ IPath outPath = Path.fromOSString(outputName);
+ // If only a file name is specified, add the relative path of this output directory
+ if (outPath.segmentCount() == 1) {
+ outPath = Path.fromOSString(relativePath + outPath.toString());
+ }
+ if (primaryOutput) {
+ ruleOutputs.add(j, outPath);
+ enumeratedPrimaryOutputs.add(j, resolvePercent(outPath, sourceLocation));
+ } else {
+ ruleOutputs.add(outPath);
+ enumeratedSecondaryOutputs.add(resolvePercent(outPath, sourceLocation));
+ }
+ }
+ } else {
+ // 5. Use the name pattern to generate a transformation macro
+ // so that the source names can be transformed into the target names
+ // using the built-in string substitution functions of <code>make</code>.
+ if (multOfType) {
+ // This case is not handled - a nameProvider or outputNames must be specified
+ // TODO - report error
+ } else {
+ String namePattern = type.getNamePattern();
+ IPath namePatternPath = null;
+ if (namePattern == null || namePattern.length() == 0) {
+ namePattern = relativePath + outputPrefix + IManagedBuilderMakefileGenerator.WILDCARD;
+ if (outExt != null && outExt.length() > 0) {
+ namePattern += DOT + outExt;
+ }
+ namePatternPath = Path.fromOSString(namePattern);
+ } else {
+ if (outputPrefix.length() > 0) {
+ namePattern = outputPrefix + namePattern;
+ }
+ namePatternPath = Path.fromOSString(namePattern);
+ // If only a file name is specified, add the relative path of this output directory
+ if (namePatternPath.segmentCount() == 1) {
+ namePatternPath = Path.fromOSString(relativePath + namePatternPath.toString());
+ }
+ }
+
+ if (primaryOutput) {
+ ruleOutputs.add(0, namePatternPath);
+ enumeratedPrimaryOutputs.add(0, resolvePercent(namePatternPath, sourceLocation));
+ } else {
+ ruleOutputs.add(namePatternPath);
+ enumeratedSecondaryOutputs.add(resolvePercent(namePatternPath, sourceLocation));
+ }
+ }
+ }
+ }
+ } else {
+ // For support of pre-CDT 3.0 integrations.
+ // NOTE WELL: This only supports the case of a single "target tool"
+ // that consumes exactly all of the object files, $OBJS, produced
+ // by other tools in the build and produces a single output.
+ // In this case, the output file name is the input file name with
+ // the output extension.
+
+ //if (!ignorePrimary) {
+ String outPrefix = tool.getOutputPrefix();
+ IPath outPath = Path.fromOSString(relativePath + outPrefix + WILDCARD);
+ outPath = outPath.addFileExtension(outExt);
+ ruleOutputs.add(0, outPath);
+ enumeratedPrimaryOutputs.add(0, resolvePercent(outPath, sourceLocation));
+ //}
+ }
+ }
+
+ /**
+ * If the path contains a %, returns the path resolved using the resource name
+ *
+ */
+ protected IPath resolvePercent(IPath outPath, IPath sourceLocation) {
+ // Get the input file name
+ String fileName = sourceLocation.removeFileExtension().lastSegment();
+ // Replace the % with the file name
+ String outName = outPath.toOSString().replaceAll("%", fileName); //$NON-NLS-1$
+ IPath result = Path.fromOSString(outName);
+ return DOT_SLASH_PATH.isPrefixOf(outPath) ? DOT_SLASH_PATH.append(result) : result;
+ }
+
+ /**
+ * Returns the dependency <code>IPath</code>s for this invocation of the tool with the specified source file
+ *
+ * @param depGen the dependency calculator
+ * @param tool tool used to build the source file
+ * @param relativePath build output directory relative path of the current output directory
+ * @param resource source file to scan for dependencies
+ * @return Vector of IPaths that are relative to the build directory
+ */
+ protected IPath[] oldCalculateDependenciesForSource(IManagedDependencyGenerator depGen, ITool tool,
+ String relativePath, IResource resource) {
+ Vector<IPath> deps = new Vector<>();
+ int type = depGen.getCalculatorType();
+
+ switch (type) {
+
+ case IManagedDependencyGeneratorType.TYPE_INDEXER:
+ case IManagedDependencyGeneratorType.TYPE_EXTERNAL:
+ IResource[] res = depGen.findDependencies(resource, project);
+ if (res != null) {
+ for (IResource re : res) {
+ IPath dep = null;
+ if (re != null) {
+ IPath addlPath = re.getLocation();
+ if (addlPath != null) {
+ dep = ManagedBuildManager.calculateRelativePath(getTopBuildDir(), addlPath);
+ }
+ }
+ if (dep != null) {
+ deps.add(dep);
+ }
+ }
+ }
+ break;
+
+ case IManagedDependencyGeneratorType.TYPE_NODEPS:
+ default:
+ break;
+ }
+ return deps.toArray(new IPath[deps.size()]);
+ }
+
+ /**
+ * Returns the dependency <code>IPath</code>s relative to the build directory
+ *
+ * @param depCalculator the dependency calculator
+ * @return IPath[] that are relative to the build directory
+ */
+ protected IPath[] calculateDependenciesForSource(IManagedDependencyCalculator depCalculator) {
+ IPath[] addlDeps = depCalculator.getDependencies();
+ if (addlDeps != null) {
+ for (int i = 0; i < addlDeps.length; i++) {
+ if (!addlDeps[i].isAbsolute()) {
+ // Convert from project relative to build directory relative
+ IPath absolutePath = project.getLocation().append(addlDeps[i]);
+ addlDeps[i] = ManagedBuildManager.calculateRelativePath(getTopBuildDir(), absolutePath);
+ }
+ }
+ }
+ return addlDeps;
+ }
+
+ /*************************************************************************
+ * M A K E F I L E G E N E R A T I O N C O M M O N M E T H O D S
+ ************************************************************************/
+
+ /**
+ * Generates a source macro name from a file extension
+ */
+ public StringBuffer getSourceMacroName(String extensionName) {
+ StringBuffer macroName = new StringBuffer();
+
+ // We need to handle case sensitivity in file extensions (e.g. .c vs .C), so if the
+ // extension was already upper case, tack on an "UPPER_" to the macro name.
+ // In theory this means there could be a conflict if you had for example,
+ // extensions .c_upper, and .C, but realistically speaking the chances of this are
+ // practically nil so it doesn't seem worth the hassle of generating a truly
+ // unique name.
+ if (extensionName.equals(extensionName.toUpperCase())) {
+ macroName.append(extensionName.toUpperCase()).append("_UPPER"); //$NON-NLS-1$
+ } else {
+ // lower case... no need for "UPPER_"
+ macroName.append(extensionName.toUpperCase());
+ }
+ macroName.append("_SRCS"); //$NON-NLS-1$
+ return macroName;
+ }
+
+ /**
+ * Generates a generated dependency file macro name from a file extension
+ */
+ public StringBuffer getDepMacroName(String extensionName) {
+ StringBuffer macroName = new StringBuffer();
+
+ // We need to handle case sensitivity in file extensions (e.g. .c vs .C), so if the
+ // extension was already upper case, tack on an "UPPER_" to the macro name.
+ // In theory this means there could be a conflict if you had for example,
+ // extensions .c_upper, and .C, but realistically speaking the chances of this are
+ // practically nil so it doesn't seem worth the hassle of generating a truly
+ // unique name.
+ if (extensionName.equals(extensionName.toUpperCase())) {
+ macroName.append(extensionName.toUpperCase()).append("_UPPER"); //$NON-NLS-1$
+ } else {
+ // lower case... no need for "UPPER_"
+ macroName.append(extensionName.toUpperCase());
+ }
+ macroName.append("_DEPS"); //$NON-NLS-1$
+ return macroName;
+ }
+
+ /**
+ * Answers all of the output extensions that the target
+ * of the build has tools defined to work on.
+ *
+ * @return a <code>Set</code> containing all of the output extensions
+ */
+ public Set<String> getOutputExtensions(ToolInfoHolder h) {
+ if (h.outputExtensionsSet == null) {
+ // The set of output extensions which will be produced by this tool.
+ // It is presumed that this set is not very large (likely < 10) so
+ // a HashSet should provide good performance.
+ h.outputExtensionsSet = new HashSet<>();
+
+ // For each tool for the target, lookup the kinds of sources it outputs
+ // and add that to our list of output extensions.
+ for (ITool tool : h.buildTools) {
+ String[] outputs = tool.getAllOutputExtensions();
+ if (outputs != null) {
+ h.outputExtensionsSet.addAll(Arrays.asList(outputs));
+ }
+ }
+ }
+ return h.outputExtensionsSet;
+ }
+
+ /**
+ * This method postprocesses a .d file created by a build.
+ * It's main job is to add dummy targets for the header files dependencies.
+ * This prevents make from aborting the build if the header file does not exist.
+ *
+ * A secondary job is to work in tandem with the "echo" command that is used
+ * by some tool-chains in order to get the "targets" part of the dependency rule
+ * correct.
+ *
+ * This method adds a comment to the beginning of the dependency file which it
+ * checks for to determine if this dependency file has already been updated.
+ *
+ * @return a <code>true</code> if the dependency file is modified
+ * @since 9.3
+ */
+ public boolean generateDummyTargets(IConfiguration cfg, IFile makefile, boolean force)
+ throws CoreException, IOException {
+ return generateDummyTargets(cfg.getRootFolderInfo(), makefile, force);
+ }
+
+ /**
+ * @since 9.3
+ */
+ public boolean generateDummyTargets(IResourceInfo rcInfo, IFile makefile, boolean force)
+ throws CoreException, IOException {
+
+ if (makefile == null || !makefile.exists())
+ return false;
+
+ // Get the contents of the dependency file
+ StringBuffer inBuffer;
+ InputStream contentStream = makefile.getContents(false);
+ try (Reader in = new InputStreamReader(contentStream)) {
+ int chunkSize = contentStream.available();
+ inBuffer = new StringBuffer(chunkSize);
+ char[] readBuffer = new char[chunkSize];
+ int n = in.read(readBuffer);
+ while (n > 0) {
+ inBuffer.append(readBuffer);
+ n = in.read(readBuffer);
+ }
+ }
+
+ // The rest of this operation is equally expensive, so
+ // if we are doing an incremental build, only update the
+ // files that do not have a comment
+ String inBufferString = inBuffer.toString();
+ if (!force && inBufferString.startsWith(COMMENT_SYMBOL)) {
+ return false;
+ }
+
+ // Try to determine if this file already has dummy targets defined.
+ // If so, we will only add the comment.
+ String[] bufferLines = inBufferString.split("[\\r\\n]"); //$NON-NLS-1$
+ for (String bufferLine : bufferLines) {
+ if (bufferLine.endsWith(":")) { //$NON-NLS-1$
+ StringBuffer outBuffer = addGenericHeader();
+ outBuffer.append(inBuffer);
+ save(outBuffer, makefile);
+ return true;
+ }
+ }
+
+ // Reconstruct the buffer tokens into useful chunks of dependency information
+ Vector<String> bufferTokens = new Vector<>(Arrays.asList(inBufferString.split("\\s"))); //$NON-NLS-1$
+ Vector<String> deps = new Vector<>(bufferTokens.size());
+ Iterator<String> tokenIter = bufferTokens.iterator();
+ while (tokenIter.hasNext()) {
+ String token = tokenIter.next();
+ if (token.lastIndexOf("\\") == token.length() - 1 && token.length() > 1) { //$NON-NLS-1$
+ // This is escaped so keep adding to the token until we find the end
+ while (tokenIter.hasNext()) {
+ String nextToken = tokenIter.next();
+ token += WHITESPACE + nextToken;
+ if (!nextToken.endsWith("\\")) { //$NON-NLS-1$
+ //$NON-NLS-1$
+ break;
+ }
+ }
+ }
+ deps.add(token);
+ }
+ deps.trimToSize();
+
+ // Now find the header file dependencies and make dummy targets for them
+ boolean save = false;
+ StringBuffer outBuffer = null;
+
+ // If we are doing an incremental build, only update the files that do not have a comment
+ String firstToken;
+ try {
+ firstToken = deps.get(0);
+ } catch (ArrayIndexOutOfBoundsException e) {
+ // This makes no sense so bail
+ return false;
+ }
+
+ // Put the generated comments in the output buffer
+ if (!firstToken.startsWith(COMMENT_SYMBOL)) {
+ outBuffer = addGenericHeader();
+ } else {
+ outBuffer = new StringBuffer();
+ }
+
+ // Some echo implementations misbehave and put the -n and newline in the output
+ if (firstToken.startsWith("-n")) { //$NON-NLS-1$
+
+ // Now let's parse:
+ // Win32 outputs -n '<path>/<file>.d <path>/'
+ // POSIX outputs -n <path>/<file>.d <path>/
+ // Get the dep file name
+ String secondToken;
+ try {
+ secondToken = deps.get(1);
+ } catch (ArrayIndexOutOfBoundsException e) {
+ secondToken = ""; //$NON-NLS-1$
+ }
+ if (secondToken.startsWith("'")) { //$NON-NLS-1$
+ // This is the Win32 implementation of echo (MinGW without MSYS)
+ outBuffer.append(secondToken.substring(1)).append(WHITESPACE);
+ } else {
+ outBuffer.append(secondToken).append(WHITESPACE);
+ }
+
+ // The relative path to the build goal comes next
+ String thirdToken;
+ try {
+ thirdToken = deps.get(2);
+ } catch (ArrayIndexOutOfBoundsException e) {
+ thirdToken = ""; //$NON-NLS-1$
+ }
+ int lastIndex = thirdToken.lastIndexOf("'"); //$NON-NLS-1$
+ if (lastIndex != -1) {
+ if (lastIndex == 0) {
+ outBuffer.append(WHITESPACE);
+ } else {
+ outBuffer.append(thirdToken.substring(0, lastIndex - 1));
+ }
+ } else {
+ outBuffer.append(thirdToken);
+ }
+
+ // Followed by the target output by the compiler plus ':'
+ // If we see any empty tokens here, assume they are the result of
+ // a line feed output by "echo" and skip them
+ String fourthToken;
+ int nToken = 3;
+ try {
+ do {
+ fourthToken = deps.get(nToken++);
+ } while (fourthToken.length() == 0);
+
+ } catch (ArrayIndexOutOfBoundsException e) {
+ fourthToken = ""; //$NON-NLS-1$
+ }
+ outBuffer.append(fourthToken).append(WHITESPACE);
+
+ // Followed by the actual dependencies
+ try {
+ for (String nextElement : deps) {
+ if (nextElement.endsWith("\\")) { //$NON-NLS-1$
+ outBuffer.append(nextElement).append(NEWLINE).append(WHITESPACE);
+ } else {
+ outBuffer.append(nextElement).append(WHITESPACE);
+ }
+ }
+ } catch (IndexOutOfBoundsException e) {
+ }
+
+ } else {
+ outBuffer.append(inBuffer);
+ }
+
+ outBuffer.append(NEWLINE);
+ save = true;
+
+ IFolderInfo fo = null;
+ if (rcInfo instanceof IFolderInfo) {
+ fo = (IFolderInfo) rcInfo;
+ } else {
+ IConfiguration c = rcInfo.getParent();
+ fo = (IFolderInfo) c.getResourceInfo(rcInfo.getPath().removeLastSegments(1), false);
+ }
+ // Dummy targets to add to the makefile
+ for (String dummy : deps) {
+ IPath dep = new Path(dummy);
+ String extension = dep.getFileExtension();
+ if (fo.isHeaderFile(extension)) {
+ /*
+ * The formatting here is
+ * <dummy_target>:
+ */
+ outBuffer.append(dummy).append(COLON).append(NEWLINE).append(NEWLINE);
+ }
+ }
+
+ // Write them out to the makefile
+ if (save) {
+ save(outBuffer, makefile);
+ return true;
+ }
+
+ return false;
+ }
+
+ /**
+ * prepend all instanced of '\' or '"' with a backslash
+ *
+ * @return resulting string
+ */
+ static public String escapedEcho(String string) {
+ String escapedString = string.replaceAll("'", "'\"'\"'"); //$NON-NLS-1$ //$NON-NLS-2$
+ return ECHO + WHITESPACE + SINGLE_QUOTE + escapedString + SINGLE_QUOTE + NEWLINE;
+ }
+
+ static public String ECHO_BLANK_LINE = ECHO + WHITESPACE + SINGLE_QUOTE + WHITESPACE + SINGLE_QUOTE + NEWLINE;
+
+ /**
+ * Outputs a comment formatted as follows:
+ * ##### ....... #####
+ * # <Comment message>
+ * ##### ....... #####
+ * @since 9.3
+ */
+ protected StringBuffer addGenericHeader() {
+ StringBuffer buffer = new StringBuffer();
+ outputCommentLine(buffer);
+ buffer.append(COMMENT_SYMBOL).append(WHITESPACE).append(ManagedMakeMessages.getResourceString(HEADER))
+ .append(NEWLINE);
+ addCustomHeader(buffer);
+ outputCommentLine(buffer);
+ buffer.append(NEWLINE);
+ return buffer;
+ }
+
+ /**
+ * @since 9.3
+ */
+ protected void addCustomHeader(StringBuffer buffer) {
+ }
+
+ /**
+ * Put COLS_PER_LINE comment charaters in the argument.
+ */
+ static protected void outputCommentLine(StringBuffer buffer) {
+ for (int i = 0; i < COLS_PER_LINE; i++) {
+ buffer.append(COMMENT_SYMBOL);
+ }
+ buffer.append(NEWLINE);
+ }
+
+ static public boolean containsSpecialCharacters(String path) {
+ return path.matches(".*(\\s|[\\{\\}\\(\\)\\$\\@%=;]).*"); //$NON-NLS-1$
+ }
+
+ /**
+ * Answers the argument with all whitespaces replaced with an escape sequence.
+ */
+ static public String escapeWhitespaces(String path) {
+ // Escape the spaces in the path/filename if it has any
+ String[] segments = path.split("\\s"); //$NON-NLS-1$
+ if (segments.length > 1) {
+ StringBuffer escapedPath = new StringBuffer();
+ for (int index = 0; index < segments.length; ++index) {
+ escapedPath.append(segments[index]);
+ if (index + 1 < segments.length) {
+ escapedPath.append("\\ "); //$NON-NLS-1$
+ }
+ }
+ return escapedPath.toString().trim();
+ } else {
+ return path;
+ }
+ }
+
+ /**
+ * Adds a macro addition prefix to a map of macro names to entries.
+ * Entry prefixes look like:
+ * C_SRCS += \
+ * ${addprefix $(ROOT)/, \
+ */
+ // TODO fix comment
+ protected void addMacroAdditionPrefix(LinkedHashMap<String, String> map, String macroName, String relativePath,
+ boolean addPrefix) {
+ // there is no entry in the map, so create a buffer for this macro
+ StringBuffer tempBuffer = new StringBuffer();
+ tempBuffer.append(macroName).append(WHITESPACE).append(MACRO_ADDITION_PREFIX_SUFFIX);
+ if (addPrefix) {
+ tempBuffer.append(MACRO_ADDITION_ADDPREFIX_HEADER).append(relativePath)
+ .append(MACRO_ADDITION_ADDPREFIX_SUFFIX);
+ }
+
+ // have to store the buffer in String form as StringBuffer is not a sublcass of Object
+ map.put(macroName, tempBuffer.toString());
+ }
+
+ /**
+ * Adds a file to an entry in a map of macro names to entries.
+ * File additions look like:
+ * example.c, \
+ */
+ protected void addMacroAdditionFile(HashMap<String, String> map, String macroName, String filename) {
+ StringBuffer buffer = new StringBuffer();
+ buffer.append(map.get(macroName));
+
+ // escape whitespace in the filename
+ filename = escapeWhitespaces(filename);
+
+ buffer.append(filename).append(WHITESPACE).append(LINEBREAK);
+ // re-insert string in the map
+ map.put(macroName, buffer.toString());
+ }
+
+ /**
+ * Adds a file to an entry in a map of macro names to entries.
+ * File additions look like:
+ * example.c, \
+ */
+ protected void addMacroAdditionFile(HashMap<String, String> map, String macroName, String relativePath,
+ IPath sourceLocation, boolean generatedSource) {
+ // Add the source file path to the makefile line that adds source files to the build variable
+ String srcName;
+ IPath projectLocation = getPathForResource(project);
+ IPath dirLocation = projectLocation;
+ if (generatedSource) {
+ dirLocation = dirLocation.append(getBuildWorkingDir());
+ }
+ if (dirLocation.isPrefixOf(sourceLocation)) {
+ IPath srcPath = sourceLocation.removeFirstSegments(dirLocation.segmentCount()).setDevice(null);
+ if (generatedSource) {
+ srcName = "./" + srcPath.toString(); //$NON-NLS-1$
+ } else {
+ srcName = reachProjectRoot() + SEPARATOR + srcPath.toString();
+ }
+ } else {
+ if (generatedSource && !sourceLocation.isAbsolute()) {
+ srcName = "./" + relativePath + sourceLocation.lastSegment().toString(); //$NON-NLS-1$
+ } else {
+ // TODO: Should we use relative paths when possible (e.g., see MbsMacroSupplier.calculateRelPath)
+ srcName = sourceLocation.toString();
+ }
+ }
+ addMacroAdditionFile(map, macroName, srcName);
+ }
+
+ /**
+ * Adds file(s) to an entry in a map of macro names to entries.
+ */
+ public void addMacroAdditionFiles(Map<String, Set<String>> map, String macroName, Vector<String> filenames) {
+ Set<String> set = map.get(macroName);
+
+ for (String filename : filenames) {
+ if (!filename.isEmpty()) {
+ set.add(filename);
+ }
+ }
+ }
+
+ /**
+ * Write all macro addition entries in a map to the buffer
+ */
+ protected StringBuffer writeAdditionMacros(LinkedHashMap<String, String> map) {
+ StringBuffer buffer = new StringBuffer();
+ // Add the comment
+ buffer.append(COMMENT_SYMBOL).append(WHITESPACE).append(ManagedMakeMessages.getResourceString(MOD_VARS))
+ .append(NEWLINE);
+
+ for (String macroString : map.values()) {
+ // Check if we added any files to the rule
+ // Currently, we do this by comparing the end of the rule buffer to MACRO_ADDITION_PREFIX_SUFFIX
+ if (!(macroString.endsWith(MACRO_ADDITION_PREFIX_SUFFIX))) {
+ StringBuffer currentBuffer = new StringBuffer();
+
+ // Remove the final "/"
+ if (macroString.endsWith(LINEBREAK)) {
+ macroString = macroString.substring(0, (macroString.length() - 2)) + NEWLINE;
+ }
+ currentBuffer.append(macroString);
+
+ currentBuffer.append(NEWLINE);
+
+ // append the contents of the buffer to the master buffer for
+ // the whole file
+ buffer.append(currentBuffer);
+ }
+ }
+ return buffer.append(NEWLINE);
+ }
+
+ /**
+ * Write all macro addition entries in a map to the buffer
+ */
+ protected StringBuffer writeTopAdditionMacros(List<String> varList, Map<String, Set<String>> varMap) {
+ StringBuffer buffer = new StringBuffer();
+ // Add the comment
+ buffer.append(COMMENT_SYMBOL).append(WHITESPACE).append(ManagedMakeMessages.getResourceString(MOD_VARS))
+ .append(NEWLINE);
+
+ for (String macroName : varList) {
+ Set<String> files = varMap.get(macroName);
+
+ buffer.append(macroName).append(WHITESPACE).append(MACRO_ADDITION_PREFIX_SUFFIX);
+
+ for (String filename : files) {
+ // Bug 417228, ilg@livius.net & freidin.alex@gmail.com
+ filename = ensurePathIsGNUMakeTargetRuleCompatibleSyntax(filename);
+
+ buffer.append(filename).append(WHITESPACE).append(LINEBREAK);
+ }
+
+ buffer.append(NEWLINE);
+ }
+ return buffer.append(NEWLINE);
+ }
+
+ /**
+ * Calculates the inputs and outputs for tools that will be generated in the top makefile.
+ * This information is used by the top level makefile generation methods.
+ */
+ protected void calculateToolInputsOutputs() {
+
+ toolInfos.accept(new IPathSettingsContainerVisitor() {
+ @Override
+ public boolean visit(PathSettingsContainer container) {
+ ToolInfoHolder h = (ToolInfoHolder) container.getValue();
+ ITool[] buildTools = h.buildTools;
+ ManagedBuildGnuToolInfo[] gnuToolInfos = h.gnuToolInfos;
+ // We are "done" when the information for all tools has been calculated,
+ // or we are not making any progress
+ boolean done = false;
+ boolean lastChance = false;
+ int[] doneState = new int[buildTools.length];
+
+ // Identify the target tool
+ ITool targetTool = config.calculateTargetTool();
+ // if (targetTool == null) {
+ // targetTool = info.getToolFromOutputExtension(buildTargetExt);
+ // }
+
+ // Initialize the tool info array and the done state
+
+ if (buildTools.length != 0 && buildTools[0].getCustomBuildStep())
+ return true;
+
+ for (int i = 0; i < buildTools.length; i++) {
+ if ((buildTools[i] == targetTool)) {
+ String ext = config.getArtifactExtension();
+ //try to resolve the build macros in the artifact extension
+ try {
+ ext = ManagedBuildManager.getBuildMacroProvider().resolveValueToMakefileFormat(ext, "", //$NON-NLS-1$
+ " ", //$NON-NLS-1$
+ IBuildMacroProvider.CONTEXT_CONFIGURATION, config);
+ } catch (BuildMacroException e) {
+ }
+
+ String name = config.getArtifactName();
+ //try to resolve the build macros in the artifact name
+ try {
+ String resolved = ManagedBuildManager.getBuildMacroProvider().resolveValueToMakefileFormat(
+ name, "", //$NON-NLS-1$
+ " ", //$NON-NLS-1$
+ IBuildMacroProvider.CONTEXT_CONFIGURATION, config);
+ if ((resolved = resolved.trim()).length() > 0)
+ name = resolved;
+ } catch (BuildMacroException e) {
+ }
+
+ gnuToolInfos[i] = new ManagedBuildGnuToolInfo(project, buildTools[i], true, name, ext);
+ } else {
+ gnuToolInfos[i] = new ManagedBuildGnuToolInfo(project, buildTools[i], false, null, null);
+ }
+ doneState[i] = 0;
+ }
+
+ // Initialize the build output variable to file additions map
+ Map<String, Set<String>> map = getTopBuildOutputVars();
+ Set<Entry<String, List<IPath>>> set = buildOutVars.entrySet();
+ for (Entry<String, List<IPath>> entry : set) {
+ String macroName = entry.getKey();
+
+ // for projects with specific setting on folders/files do
+ // not clear the macro value on subsequent passes
+ // use TreeSet for deterministically sorted output
+ map.putIfAbsent(macroName, new TreeSet<>());
+ }
+
+ // Set of input extensions for which macros have been created so far
+ HashSet<String> handledDepsInputExtensions = new HashSet<>();
+ HashSet<String> handledOutsInputExtensions = new HashSet<>();
+
+ while (!done) {
+ int[] testState = new int[doneState.length];
+ for (int i = 0; i < testState.length; i++)
+ testState[i] = 0;
+
+ // Calculate inputs
+ for (int i = 0; i < gnuToolInfos.length; i++) {
+ if (gnuToolInfos[i].areInputsCalculated()) {
+ testState[i]++;
+ } else {
+ if (gnuToolInfos[i].calculateInputs(GnuMakefileGenerator.this, config, projectResources, h,
+ lastChance)) {
+ testState[i]++;
+ }
+ }
+ }
+ // Calculate dependencies
+ for (int i = 0; i < gnuToolInfos.length; i++) {
+ if (gnuToolInfos[i].areDependenciesCalculated()) {
+ testState[i]++;
+ } else {
+ if (gnuToolInfos[i].calculateDependencies(GnuMakefileGenerator.this, config,
+ handledDepsInputExtensions, h, lastChance)) {
+ testState[i]++;
+ }
+ }
+ }
+ // Calculate outputs
+ for (int i = 0; i < gnuToolInfos.length; i++) {
+ if (gnuToolInfos[i].areOutputsCalculated()) {
+ testState[i]++;
+ } else {
+ if (gnuToolInfos[i].calculateOutputs(GnuMakefileGenerator.this, config,
+ handledOutsInputExtensions, lastChance)) {
+ testState[i]++;
+ }
+ }
+ }
+ // Are all calculated? If so, done.
+ done = true;
+ for (int element : testState) {
+ if (element != 3) {
+ done = false;
+ break;
+ }
+ }
+
+ // Test our "done" state vs. the previous "done" state.
+ // If we have made no progress, give it a "last chance" and then quit
+ if (!done) {
+ done = true;
+ for (int i = 0; i < testState.length; i++) {
+ if (testState[i] != doneState[i]) {
+ done = false;
+ break;
+ }
+ }
+ }
+ if (done) {
+ if (!lastChance) {
+ lastChance = true;
+ done = false;
+ }
+ }
+ if (!done) {
+ doneState = testState;
+ }
+ }
+ return true;
+ }
+ });
+ }
+
+ /**
+ * Returns the (String) list of files associated with the build variable
+ *
+ * @param variable the variable name
+ * @param locationType the format in which we want the filenames returned
+ * @param directory project relative directory path used with locationType == DIRECTORY_RELATIVE
+ * @param getAll only return the list if all tools that are going to contrubute to this
+ * variable have done so.
+ * @return List
+ */
+ public List<String> getBuildVariableList(ToolInfoHolder h, String variable, int locationType, IPath directory,
+ boolean getAll) {
+ ManagedBuildGnuToolInfo[] gnuToolInfos = h.gnuToolInfos;
+ boolean done = true;
+ for (int i = 0; i < gnuToolInfos.length; i++) {
+ if (!gnuToolInfos[i].areOutputVariablesCalculated()) {
+ done = false;
+ }
+ }
+ if (!done && getAll)
+ return null;
+ List<IPath> list = buildSrcVars.get(variable);
+ if (list == null) {
+ list = buildOutVars.get(variable);
+ }
+
+ List<String> fileList = null;
+ if (list != null) {
+ // Convert the items in the list to the location-type wanted by the caller,
+ // and to a string list
+ IPath dirLocation = null;
+ if (locationType != ABSOLUTE) {
+ dirLocation = project.getLocation();
+ if (locationType == PROJECT_SUBDIR_RELATIVE) {
+ dirLocation = dirLocation.append(directory);
+ }
+ }
+ for (int i = 0; i < list.size(); i++) {
+ IPath path = list.get(i);
+ if (locationType != ABSOLUTE) {
+ if (dirLocation != null && dirLocation.isPrefixOf(path)) {
+ path = path.removeFirstSegments(dirLocation.segmentCount()).setDevice(null);
+ }
+ }
+ if (fileList == null) {
+ fileList = new Vector<>();
+ }
+ fileList.add(path.toString());
+ }
+ }
+
+ return fileList;
+ }
+
+ /**
+ * Returns the map of build variables to list of files
+ *
+ * @return HashMap
+ */
+ public Map<String, List<IPath>> getBuildOutputVars() {
+ return buildOutVars;
+ }
+
+ /**
+ * Returns the map of build variables used in the top makefile to list of files
+ */
+ public Map<String, Set<String>> getTopBuildOutputVars() {
+ return topBuildOutVars;
+ }
+
+ /**
+ * Returns the list of known build rules. This keeps me from generating duplicate
+ * rules for known file extensions.
+ *
+ * @return List
+ */
+ protected Vector<String> getRuleList() {
+ if (ruleList == null) {
+ ruleList = new Vector<>();
+ }
+ return ruleList;
+ }
+
+ /**
+ * Returns the list of known dependency lines. This keeps me from generating duplicate
+ * lines.
+ *
+ * @return List
+ */
+ protected Vector<String> getDepLineList() {
+ if (depLineList == null) {
+ depLineList = new Vector<>();
+ }
+ return depLineList;
+ }
+
+ /**
+ * Returns the list of known dependency file generation lines. This keeps me from
+ * generating duplicate lines.
+ *
+ * @return List
+ */
+ protected Vector<String> getDepRuleList() {
+ if (depRuleList == null) {
+ depRuleList = new Vector<>();
+ }
+ return depRuleList;
+ }
+
+ /*************************************************************************
+ * R E S O U R C E V I S I T O R M E T H O D S
+ ************************************************************************/
+
+ /**
+ * Adds the container of the argument to the list of folders in the project that
+ * contribute source files to the build. The resource visitor has already established
+ * that the build model knows how to build the files. It has also checked that
+ * the resource is not generated as part of the build.
+ */
+ protected void appendBuildSubdirectory(IResource resource) {
+ IContainer container = resource.getParent();
+ // Only add the container once
+ if (!getSubdirList().contains(container))
+ getSubdirList().add(container);
+ }
+
+ /**
+ * Adds the container of the argument to a list of subdirectories that are to be
+ * deleted. As a result, the directories that are generated for the output
+ * should be removed as well.
+ */
+ protected void appendDeletedSubdirectory(IContainer container) {
+ // No point in adding a folder if the parent is already there
+ IContainer parent = container.getParent();
+ if (!getDeletedDirList().contains(container) && !getDeletedDirList().contains(parent)) {
+ getDeletedDirList().add(container);
+ }
+ }
+
+ /**
+ * If a file is removed from a source folder (either because of a delete
+ * or move action on the part of the user), the makefilegenerator has to
+ * remove the dependency makefile along with the old build goal
+ */
+ protected void appendDeletedFile(IResource resource) {
+ // Cache this for now
+ getDeletedFileList().add(resource);
+ }
+
+ /**
+ * Adds the container of the argument to a list of subdirectories that are part
+ * of an incremental rebuild of the project. The makefile fragments for these
+ * directories will be regenerated as a result of the build.
+ */
+ protected void appendModifiedSubdirectory(IResource resource) {
+ IContainer container = resource.getParent();
+
+ if (!getModifiedList().contains(container)) {
+ getModifiedList().add(container);
+ }
+ }
+
+ /*************************************************************************
+ * O T H E R M E T H O D S
+ ************************************************************************/
+
+ protected void cancel(String message) {
+ if (monitor != null && !monitor.isCanceled()) {
+ throw new OperationCanceledException(message);
+ }
+ }
+
+ /**
+ * Check whether the build has been cancelled. Cancellation requests
+ * propagated to the caller by throwing <code>OperationCanceledException</code>.
+ *
+ * @see org.eclipse.core.runtime.OperationCanceledException#OperationCanceledException()
+ */
+ protected void checkCancel() {
+ if (monitor != null && monitor.isCanceled()) {
+ throw new OperationCanceledException();
+ }
+ }
+
+ /**
+ * Return or create the folder needed for the build output. If we are
+ * creating the folder, set the derived bit to true so the CM system
+ * ignores the contents. If the resource exists, respect the existing
+ * derived setting.
+ */
+ private IPath createDirectory(String dirName) throws CoreException {
+ // Create or get the handle for the build directory
+ IFolder folder = project.getFolder(dirName);
+ if (!folder.exists()) {
+ // Make sure that parent folders exist
+ IPath parentPath = (new Path(dirName)).removeLastSegments(1);
+ // Assume that the parent exists if the path is empty
+ if (!parentPath.isEmpty()) {
+ IFolder parent = project.getFolder(parentPath);
+ if (!parent.exists()) {
+ createDirectory(parentPath.toString());
+ }
+ }
+
+ // Now make the requested folder
+ try {
+ folder.create(true, true, null);
+ } catch (CoreException e) {
+ if (e.getStatus().getCode() == IResourceStatus.PATH_OCCUPIED)
+ folder.refreshLocal(IResource.DEPTH_ZERO, null);
+ else
+ throw e;
+ }
+
+ // Make sure the folder is marked as derived so it is not added to CM
+ if (!folder.isDerived()) {
+ folder.setDerived(true, null);
+ }
+ }
+
+ return folder.getFullPath();
+ }
+
+ /**
+ * Return or create the makefile needed for the build. If we are creating
+ * the resource, set the derived bit to true so the CM system ignores
+ * the contents. If the resource exists, respect the existing derived
+ * setting.
+ */
+ private IFile createFile(IPath makefilePath) throws CoreException {
+ // Create or get the handle for the makefile
+ IWorkspaceRoot root = CCorePlugin.getWorkspace().getRoot();
+ IFile newFile = root.getFileForLocation(makefilePath);
+ if (newFile == null) {
+ newFile = root.getFile(makefilePath);
+ }
+ // Create the file if it does not exist
+ ByteArrayInputStream contents = new ByteArrayInputStream(new byte[0]);
+ try {
+ newFile.create(contents, false, new SubProgressMonitor(monitor, 1));
+ // Make sure the new file is marked as derived
+ if (!newFile.isDerived()) {
+ newFile.setDerived(true, null);
+ }
+
+ } catch (CoreException e) {
+ // If the file already existed locally, just refresh to get contents
+ if (e.getStatus().getCode() == IResourceStatus.PATH_OCCUPIED)
+ newFile.refreshLocal(IResource.DEPTH_ZERO, null);
+ else
+ throw e;
+ }
+
+ return newFile;
+ }
+
+ private void deleteBuildTarget(IResource deletedFile) {
+ // Get the project relative path of the file
+ String fileName = getFileName(deletedFile);
+ String srcExtension = deletedFile.getFileExtension();
+ IPath folderPath = inFullPathFromOutFullPath(deletedFile.getFullPath().removeLastSegments(1));
+ if (folderPath != null) {
+ folderPath = folderPath.removeFirstSegments(1);
+ } else {
+ folderPath = new Path(""); //$NON-NLS-1$
+ }
+ IResourceInfo rcInfo = config.getResourceInfo(folderPath, false);
+ if (rcInfo instanceof IFileInfo) {
+ rcInfo = config.getResourceInfo(folderPath.removeLastSegments(1), false);
+ }
+ String targetExtension = ((IFolderInfo) rcInfo).getOutputExtension(srcExtension);
+ if (!targetExtension.isEmpty())
+ fileName += DOT + targetExtension;
+ IPath projectRelativePath = deletedFile.getProjectRelativePath().removeLastSegments(1);
+ IPath targetFilePath = getBuildWorkingDir().append(projectRelativePath).append(fileName);
+ IResource depFile = project.findMember(targetFilePath);
+ if (depFile != null && depFile.exists()) {
+ try {
+ depFile.delete(true, new SubProgressMonitor(monitor, 1));
+ } catch (CoreException e) {
+ // This had better be allowed during a build
+
+ }
+ }
+ }
+
+ private IPath inFullPathFromOutFullPath(IPath path) {
+ IPath inPath = null;
+ if (topBuildDir.isPrefixOf(path)) {
+ inPath = path.removeFirstSegments(topBuildDir.segmentCount());
+ inPath = project.getFullPath().append(path);
+ }
+ return inPath;
+ }
+
+ private void deleteDepFile(IResource deletedFile) {
+ // Calculate the top build directory relative paths of the dependency files
+ IPath[] depFilePaths = null;
+ ITool tool = null;
+ IManagedDependencyGeneratorType depType = null;
+ String sourceExtension = deletedFile.getFileExtension();
+ IPath folderPath = inFullPathFromOutFullPath(deletedFile.getFullPath().removeLastSegments(1));
+ if (folderPath != null) {
+ folderPath = folderPath.removeFirstSegments(1);
+ } else {
+ folderPath = new Path(""); //$NON-NLS-1$
+ }
+ ToolInfoHolder h = getToolInfo(folderPath);
+ ITool[] tools = h.buildTools;
+ for (int index = 0; index < tools.length; ++index) {
+ if (tools[index].buildsFileType(sourceExtension)) {
+ tool = tools[index];
+ depType = tool.getDependencyGeneratorForExtension(sourceExtension);
+ break;
+ }
+ }
+ if (depType != null) {
+ int calcType = depType.getCalculatorType();
+ if (calcType == IManagedDependencyGeneratorType.TYPE_COMMAND) {
+ depFilePaths = new IPath[1];
+ IPath absolutePath = deletedFile.getLocation();
+ depFilePaths[0] = ManagedBuildManager.calculateRelativePath(getTopBuildDir(), absolutePath);
+ depFilePaths[0] = depFilePaths[0].removeFileExtension().addFileExtension(DEP_EXT);
+ } else if (calcType == IManagedDependencyGeneratorType.TYPE_BUILD_COMMANDS
+ || calcType == IManagedDependencyGeneratorType.TYPE_PREBUILD_COMMANDS) {
+ IManagedDependencyGenerator2 depGen = (IManagedDependencyGenerator2) depType;
+ IManagedDependencyInfo depInfo = depGen.getDependencySourceInfo(deletedFile.getProjectRelativePath(),
+ deletedFile, config, tool, getBuildWorkingDir());
+ if (depInfo != null) {
+ if (calcType == IManagedDependencyGeneratorType.TYPE_BUILD_COMMANDS) {
+ IManagedDependencyCommands depCommands = (IManagedDependencyCommands) depInfo;
+ depFilePaths = depCommands.getDependencyFiles();
+ } else if (calcType == IManagedDependencyGeneratorType.TYPE_PREBUILD_COMMANDS) {
+ IManagedDependencyPreBuild depPreBuild = (IManagedDependencyPreBuild) depInfo;
+ depFilePaths = depPreBuild.getDependencyFiles();
+ }
+ }
+ }
+ }
+
+ // Delete the files if they exist
+ if (depFilePaths != null) {
+ for (IPath dfp : depFilePaths) {
+ IPath depFilePath = getBuildWorkingDir().append(dfp);
+ IResource depFile = project.findMember(depFilePath);
+ if (depFile != null && depFile.exists()) {
+ try {
+ depFile.delete(true, new SubProgressMonitor(monitor, 1));
+ } catch (CoreException e) {
+ // This had better be allowed during a build
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Returns the current build configuration.
+ *
+ * @return String
+ * @since 8.0
+ */
+ protected IConfiguration getConfig() {
+ return config;
+ }
+
+ /**
+ * Returns the build target extension.
+ *
+ * @return String
+ * @since 8.0
+ */
+ protected String getBuildTargetExt() {
+ return buildTargetExt;
+ }
+
+ /**
+ * Returns the build target name.
+ *
+ * @return String
+ * @since 8.0
+ */
+ protected String getBuildTargetName() {
+ return buildTargetName;
+ }
+
+ /**
+ * @return Returns the deletedDirList.
+ */
+ private Vector<IResource> getDeletedDirList() {
+ if (deletedDirList == null) {
+ deletedDirList = new Vector<>();
+ }
+ return deletedDirList;
+ }
+
+ private Vector<IResource> getDeletedFileList() {
+ if (deletedFileList == null) {
+ deletedFileList = new Vector<>();
+ }
+ return deletedFileList;
+ }
+
+ private List<IPath> getDependencyMakefiles(ToolInfoHolder h) {
+ if (h.dependencyMakefiles == null) {
+ h.dependencyMakefiles = new ArrayList<>();
+ }
+ return h.dependencyMakefiles;
+ }
+
+ /**
+ * Strips off the file extension from the argument and returns
+ * the name component in a <code>String</code>
+ */
+ private String getFileName(IResource file) {
+ String answer = ""; //$NON-NLS-1$
+ String lastSegment = file.getName();
+ int extensionSeparator = lastSegment.lastIndexOf(DOT);
+ if (extensionSeparator != -1) {
+ answer = lastSegment.substring(0, extensionSeparator);
+ }
+ return answer;
+ }
+
+ /**
+ * Answers a Vector containing a list of directories that are invalid for the
+ * build for some reason. At the moment, the only reason a directory would
+ * not be considered for the build is if it contains a space in the relative
+ * path from the project root.
+ *
+ * @return a a list of directories that are invalid for the build
+ */
+ private Vector<IResource> getInvalidDirList() {
+ if (invalidDirList == null) {
+ invalidDirList = new Vector<>();
+ }
+ return invalidDirList;
+ }
+
+ /**
+ * @return Collection of Containers which contain modified source files
+ */
+ private Collection<IContainer> getModifiedList() {
+ if (modifiedList == null)
+ modifiedList = new LinkedHashSet<>();
+ return modifiedList;
+ }
+
+ /**
+ * @return Collection of subdirectories (IContainers) contributing source code to the build
+ */
+ private Collection<IContainer> getSubdirList() {
+ if (subdirList == null)
+ subdirList = new LinkedHashSet<>();
+ return subdirList;
+ }
+
+ private void removeGeneratedDirectory(IContainer subDir) {
+ try {
+ // The source directory isn't empty
+ if (subDir.exists() && subDir.members().length > 0)
+ return;
+ } catch (CoreException e) {
+ // The resource doesn't exist so we should delete the output folder
+ }
+
+ // Figure out what the generated directory name is and delete it
+ IPath moduleRelativePath = subDir.getProjectRelativePath();
+ IPath buildRoot = getBuildWorkingDir();
+ if (buildRoot == null) {
+ return;
+ }
+ IPath moduleOutputPath = buildRoot.append(moduleRelativePath);
+ IFolder folder = project.getFolder(moduleOutputPath);
+ if (folder.exists()) {
+ try {
+ folder.delete(true, new SubProgressMonitor(monitor, 1));
+ } catch (CoreException e) {
+ // TODO Log this
+ }
+ }
+ }
+
+ protected void updateMonitor(String msg) {
+ if (monitor != null && !monitor.isCanceled()) {
+ monitor.subTask(msg);
+ monitor.worked(1);
+ }
+ }
+
+ /**
+ * Return the configuration's top build directory as an absolute path
+ */
+ public IPath getTopBuildDir() {
+ return getPathForResource(project).append(getBuildWorkingDir());
+ }
+
+ /**
+ * Process a String denoting a filepath in a way compatible for GNU Make rules, handling
+ * windows drive letters and whitespace appropriately.
+ * <p><p>
+ * The context these paths appear in is on the right hand side of a rule header. i.e.
+ * <p><p>
+ * target : dep1 dep2 dep3
+ * <p>
+ * @param path the String denoting the path to process
+ * @throws NullPointerException is path is null
+ * @return a suitable Make rule compatible path
+ */
+ /* see https://bugs.eclipse.org/bugs/show_bug.cgi?id=129782 */
+ public String ensurePathIsGNUMakeTargetRuleCompatibleSyntax(String path) {
+ boolean isQuotedOption = false;
+ if (path.startsWith("-")) { //$NON-NLS-1$
+ isQuotedOption = checkIfQuotedOption(path);
+ }
+ if (!isQuotedOption)
+ return escapeWhitespaces(ensureUnquoted(path));
+ return path;
+ }
+
+ private boolean checkIfQuotedOption(String path) {
+ Matcher m1 = doubleQuotedOption.matcher(path);
+ if (m1.matches())
+ return true;
+ Matcher m2 = singleQuotedOption.matcher(path);
+ if (m2.matches())
+ return true;
+ return false;
+ }
+
+ /**
+ * Strips outermost quotes of Strings of the form "a" and 'a' or returns the original
+ * string if the input is not of this form.
+ *
+ * @throws NullPointerException if path is null
+ * @return a String without the outermost quotes (if the input has them)
+ */
+ public static String ensureUnquoted(String path) {
+ boolean doubleQuoted = path.startsWith("\"") && path.endsWith("\""); //$NON-NLS-1$ //$NON-NLS-2$
+ boolean singleQuoted = path.startsWith("'") && path.endsWith("'"); //$NON-NLS-1$ //$NON-NLS-2$
+ return doubleQuoted || singleQuoted ? path.substring(1, path.length() - 1) : path;
+ }
+
+ @Override
+ public void initialize(int buildKind, IConfiguration cfg, IBuilder builder, IProgressMonitor monitor) {
+ // Save the project so we can get path and member information
+ this.project = cfg.getOwner().getProject();
+ if (builder == null) {
+ builder = cfg.getEditableBuilder();
+ }
+ try {
+ projectResources = project.members();
+ } catch (CoreException e) {
+ projectResources = null;
+ }
+ // Save the monitor reference for reporting back to the user
+ this.monitor = monitor;
+ // Get the build info for the project
+ // this.info = info;
+ // Get the name of the build target
+ buildTargetName = cfg.getArtifactName();
+ // Get its extension
+ buildTargetExt = cfg.getArtifactExtension();
+
+ try {
+ //try to resolve the build macros in the target extension
+ buildTargetExt = ManagedBuildManager.getBuildMacroProvider().resolveValueToMakefileFormat(buildTargetExt,
+ "", //$NON-NLS-1$
+ " ", //$NON-NLS-1$
+ IBuildMacroProvider.CONTEXT_CONFIGURATION, builder);
+ } catch (BuildMacroException e) {
+ }
+
+ try {
+ //try to resolve the build macros in the target name
+ String resolved = ManagedBuildManager.getBuildMacroProvider().resolveValueToMakefileFormat(buildTargetName,
+ "", //$NON-NLS-1$
+ " ", //$NON-NLS-1$
+ IBuildMacroProvider.CONTEXT_CONFIGURATION, builder);
+ if (resolved != null) {
+ resolved = resolved.trim();
+ if (resolved.length() > 0)
+ buildTargetName = resolved;
+ }
+ } catch (BuildMacroException e) {
+ }
+
+ if (buildTargetExt == null) {
+ buildTargetExt = ""; //$NON-NLS-1$
+ }
+ // Cache the build tools
+ config = cfg;
+ this.builder = builder;
+
+ initToolInfos();
+ //set the top build dir path
+ initializeTopBuildDir(cfg.getName());
+
+ srcEntries = config.getSourceEntries();
+ if (srcEntries.length == 0) {
+ srcEntries = new ICSourceEntry[] {
+ new CSourceEntry(Path.EMPTY, null, ICSettingEntry.RESOLVED | ICSettingEntry.VALUE_WORKSPACE_PATH) };
+ } else {
+ ICConfigurationDescription cfgDes = ManagedBuildManager.getDescriptionForConfiguration(config);
+ srcEntries = CDataUtil.resolveEntries(srcEntries, cfgDes);
+ }
+ }
+
+ private void initToolInfos() {
+ toolInfos = PathSettingsContainer.createRootContainer();
+
+ IResourceInfo rcInfos[] = config.getResourceInfos();
+ for (IResourceInfo rcInfo : rcInfos) {
+ if (rcInfo.isExcluded() /*&& !((ResourceInfo)rcInfo).isRoot()*/)
+ continue;
+
+ ToolInfoHolder h = getToolInfo(rcInfo.getPath(), true);
+ if (rcInfo instanceof IFolderInfo) {
+ IFolderInfo fo = (IFolderInfo) rcInfo;
+ h.buildTools = fo.getFilteredTools();
+ h.buildToolsUsed = new boolean[h.buildTools.length];
+ h.gnuToolInfos = new ManagedBuildGnuToolInfo[h.buildTools.length];
+ } else {
+ IFileInfo fi = (IFileInfo) rcInfo;
+ h.buildTools = fi.getToolsToInvoke();
+ h.buildToolsUsed = new boolean[h.buildTools.length];
+ h.gnuToolInfos = new ManagedBuildGnuToolInfo[h.buildTools.length];
+ }
+ }
+ }
+
+ private ToolInfoHolder getToolInfo(IPath path) {
+ return getToolInfo(path, false);
+ }
+
+ private ToolInfoHolder getFolderToolInfo(IPath path) {
+ IResourceInfo rcInfo = config.getResourceInfo(path, false);
+ while (rcInfo instanceof IFileInfo) {
+ path = path.removeLastSegments(1);
+ rcInfo = config.getResourceInfo(path, false);
+ }
+ return getToolInfo(path, false);
+ }
+
+ private ToolInfoHolder getToolInfo(IPath path, boolean create) {
+ PathSettingsContainer child = toolInfos.getChildContainer(path, create, create);
+ ToolInfoHolder h = null;
+ if (child != null) {
+ h = (ToolInfoHolder) child.getValue();
+ if (h == null && create) {
+ h = new ToolInfoHolder();
+ child.setValue(h);
+ }
+ }
+ return h;
+ }
+
+ private void ensureTopBuildDir() throws CoreException {
+ IPath buildWorkingDir = getBuildWorkingDir();
+ if (buildWorkingDir != null) {
+ createDirectory(buildWorkingDir.toString());
+ }
+ }
+
+ private void initializeTopBuildDir(String configName) {
+ topBuildDir = project.getFolder(computeTopBuildDir(configName)).getFullPath();
+ }
+
+ /**
+ * Can be overwritten by a subclass to specify the top build directory to be
+ * used. Default implementation simply returns configuration name.
+ * <p>
+ * <strong>Note</strong>: be careful by overriding this method - all places in the custom code and related
+ * scripts using or referencing top build directory must also be changed to use same logic.
+ *
+ * @param configName name of the configuration
+ * @return project relative path for top build directory
+ * @since 8.7
+ */
+ protected IPath computeTopBuildDir(String configName) {
+ return new Path(configName);
+ }
+
+ /**
+ * @return As many ".." as required to get from getBuildWorkingDir() to the project root.
+ *
+ * E.g. If getBuildWorkingDir() is "Debug", then the function returns "..". If
+ * getBuildWorkingDir() returns "x86/Debug" then "../.." is returned.
+ *
+ * @since 8.7
+ */
+ public String reachProjectRoot() {
+ IPath buildWorkingDir = getBuildWorkingDir();
+ if (buildWorkingDir == null) {
+ return ROOT;
+ }
+ String root = ROOT;
+ int segCnt = buildWorkingDir.segmentCount();
+ for (int i = 1; i < segCnt; i++) {
+ root += SEPARATOR + ROOT;
+ }
+ return root;
+ }
+
+ private String toCleanTarget(IPath path) {
+ final BitSet allowedCodePoints = new BitSet(128);
+ allowedCodePoints.set("A".codePointAt(0), "Z".codePointAt(0) + 1); //$NON-NLS-1$ //$NON-NLS-2$
+ allowedCodePoints.set("a".codePointAt(0), "z".codePointAt(0) + 1); //$NON-NLS-1$ //$NON-NLS-2$
+ allowedCodePoints.set("0".codePointAt(0), "9".codePointAt(0) + 1); //$NON-NLS-1$ //$NON-NLS-2$
+ allowedCodePoints.set("_".codePointAt(0)); //$NON-NLS-1$
+
+ StringBuilder sb = new StringBuilder("clean-"); //$NON-NLS-1$
+ (path.isEmpty() ? DOT : path.toString()).codePoints().forEach(c -> {
+ if (allowedCodePoints.get(c)) {
+ sb.append(Character.toChars(c));
+ } else {
+ sb.append("-"); //$NON-NLS-1$
+ sb.append(Long.toHexString(c));
+ sb.append("-"); //$NON-NLS-1$
+ }
+ });
+
+ return sb.toString();
+ }
+}
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/gnu2/ManagedBuildGnuToolInfo.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/gnu2/ManagedBuildGnuToolInfo.java
new file mode 100644
index 00000000000..8e65a0b908e
--- /dev/null
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/gnu2/ManagedBuildGnuToolInfo.java
@@ -0,0 +1,991 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2016 Intel Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Intel Corporation - Initial API and implementation
+ * IBM Corporation
+ *******************************************************************************/
+package org.eclipse.cdt.managedbuilder.makegen.gnu2;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+import java.util.Vector;
+
+import org.eclipse.cdt.managedbuilder.core.BuildException;
+import org.eclipse.cdt.managedbuilder.core.IAdditionalInput;
+import org.eclipse.cdt.managedbuilder.core.IConfiguration;
+import org.eclipse.cdt.managedbuilder.core.IInputType;
+import org.eclipse.cdt.managedbuilder.core.IManagedOutputNameProvider;
+import org.eclipse.cdt.managedbuilder.core.IOption;
+import org.eclipse.cdt.managedbuilder.core.IOutputType;
+import org.eclipse.cdt.managedbuilder.core.ITool;
+import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
+import org.eclipse.cdt.managedbuilder.internal.core.ManagedMakeMessages;
+import org.eclipse.cdt.managedbuilder.internal.core.Tool;
+import org.eclipse.cdt.managedbuilder.internal.macros.OptionContextData;
+import org.eclipse.cdt.managedbuilder.macros.BuildMacroException;
+import org.eclipse.cdt.managedbuilder.macros.IBuildMacroProvider;
+import org.eclipse.cdt.managedbuilder.makegen.IManagedBuilderMakefileGenerator;
+import org.eclipse.cdt.managedbuilder.makegen.IManagedDependencyCalculator;
+import org.eclipse.cdt.managedbuilder.makegen.IManagedDependencyGenerator;
+import org.eclipse.cdt.managedbuilder.makegen.IManagedDependencyGenerator2;
+import org.eclipse.cdt.managedbuilder.makegen.IManagedDependencyGeneratorType;
+import org.eclipse.cdt.managedbuilder.makegen.IManagedDependencyInfo;
+import org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator.ToolInfoHolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+
+/**
+ * This class represents information about a Tool's inputs
+ * and outputs while a Gnu makefile is being generated.
+ *
+ * @noextend This class is not intended to be subclassed by clients.
+ */
+public class ManagedBuildGnuToolInfo {
+ public final String DOT = "."; //$NON-NLS-1$
+
+ /*
+ * Members
+ */
+ private IProject project;
+ private Tool tool;
+ private boolean bIsTargetTool;
+ private String targetName;
+ private String targetExt;
+ private boolean inputsCalculated = false;
+ private boolean outputsCalculated = false;
+ private boolean outputVariablesCalculated = false;
+ private boolean dependenciesCalculated = false;
+ private Vector<String> commandInputs = new Vector<>();
+ private Vector<String> enumeratedInputs = new Vector<>();
+ private Vector<String> commandOutputs = new Vector<>();
+ private Vector<String> enumeratedPrimaryOutputs = new Vector<>();
+ private Vector<String> enumeratedSecondaryOutputs = new Vector<>();
+ private Vector<String> outputVariables = new Vector<>();
+ private Vector<String> commandDependencies = new Vector<>();
+ private Vector<String> additionalTargets = new Vector<>();
+ //private Vector enumeratedDependencies = new Vector();
+ // Map of macro names (String) to values (List)
+
+ /*
+ * Constructor
+ */
+ public ManagedBuildGnuToolInfo(IProject project, ITool tool, boolean targetTool, String name, String ext) {
+ this.project = project;
+ this.tool = (Tool) tool;
+ bIsTargetTool = targetTool;
+ if (bIsTargetTool) {
+ targetName = name;
+ targetExt = ext;
+ }
+ }
+
+ public boolean areInputsCalculated() {
+ return inputsCalculated;
+ }
+
+ // Command inputs are top build directory relative
+ public Vector<String> getCommandInputs() {
+ return commandInputs;
+ }
+
+ // Enumerated inputs are project relative
+ public Vector<String> getEnumeratedInputs() {
+ return enumeratedInputs;
+ }
+
+ public boolean areOutputsCalculated() {
+ return outputsCalculated;
+ }
+
+ // Command outputs are top build directory relative
+ public Vector<String> getCommandOutputs() {
+ return commandOutputs;
+ }
+
+ public Vector<String> getEnumeratedPrimaryOutputs() {
+ return enumeratedPrimaryOutputs;
+ }
+
+ public Vector<String> getEnumeratedSecondaryOutputs() {
+ return enumeratedSecondaryOutputs;
+ }
+
+ public Vector<String> getOutputVariables() {
+ return outputVariables;
+ }
+
+ public boolean areOutputVariablesCalculated() {
+ return outputVariablesCalculated;
+ }
+
+ public boolean areDependenciesCalculated() {
+ return dependenciesCalculated;
+ }
+
+ // Command dependencies are top build directory relative
+ public Vector<String> getCommandDependencies() {
+ return commandDependencies;
+ }
+
+ // Additional targets are top build directory relative
+ public Vector<String> getAdditionalTargets() {
+ return additionalTargets;
+ }
+
+ //public Vector getEnumeratedDependencies() {
+ // return enumeratedDependencies;
+ //}
+
+ public boolean isTargetTool() {
+ return bIsTargetTool;
+ }
+
+ /*
+ * Other Methods
+ */
+
+ public boolean calculateInputs(GnuMakefileGenerator makeGen, IConfiguration config, IResource[] projResources,
+ ToolInfoHolder h, boolean lastChance) {
+ // Get the inputs for this tool invocation
+ // Note that command inputs that are also dependencies are also added to the command dependencies list
+
+ /* The priorities for determining the names of the inputs of a tool are:
+ * 1. If an option is specified, use the value of the option.
+ * 2. If a build variable is specified, use the files that have been added to the build variable as
+ * the output(s) of other build steps.
+ * 3. Use the file extensions and the resources in the project
+ */
+ boolean done = true;
+ Vector<String> myCommandInputs = new Vector<>(); // Inputs for the tool command line
+ Vector<String> myCommandDependencies = new Vector<>(); // Dependencies for the make rule
+ Vector<String> myEnumeratedInputs = new Vector<>(); // Complete list of individual inputs
+
+ IInputType[] inTypes = tool.getInputTypes();
+ if (inTypes != null && inTypes.length > 0) {
+ for (IInputType type : inTypes) {
+ Vector<String> itCommandInputs = new Vector<>(); // Inputs for the tool command line for this input-type
+ Vector<String> itCommandDependencies = new Vector<>(); // Dependencies for the make rule for this input-type
+ Vector<String> itEnumeratedInputs = new Vector<>(); // Complete list of individual inputs for this input-type
+ String variable = type.getBuildVariable();
+ boolean primaryInput = type.getPrimaryInput();
+ boolean useFileExts = false;
+ IOption option = tool.getOptionBySuperClassId(type.getOptionId());
+ IOption assignToOption = tool.getOptionBySuperClassId(type.getAssignToOptionId());
+
+ // Option?
+ if (option != null) {
+ try {
+ List<String> inputs = new ArrayList<>();
+ int optType = option.getValueType();
+ if (optType == IOption.STRING) {
+ inputs.add(option.getStringValue());
+ } else if (optType == IOption.STRING_LIST || optType == IOption.LIBRARIES
+ || optType == IOption.OBJECTS || optType == IOption.INCLUDE_FILES
+ || optType == IOption.LIBRARY_PATHS || optType == IOption.LIBRARY_FILES
+ || optType == IOption.MACRO_FILES) {
+ @SuppressWarnings("unchecked")
+ List<String> valueList = (List<String>) option.getValue();
+ inputs = valueList;
+ tool.filterValues(optType, inputs);
+ tool.filterValues(optType, inputs);
+ }
+ for (int j = 0; j < inputs.size(); j++) {
+ String inputName = inputs.get(j);
+
+ try {
+ // try to resolve the build macros in the output
+ // names
+
+ String resolved = null;
+
+ // does the input name contain spaces?
+ // TODO: support other special characters
+ if (inputName.indexOf(" ") != -1) //$NON-NLS-1$
+ {
+ // resolve to string
+ resolved = ManagedBuildManager.getBuildMacroProvider().resolveValue(inputName, "", //$NON-NLS-1$
+ " ", //$NON-NLS-1$
+ IBuildMacroProvider.CONTEXT_OPTION, new OptionContextData(option, tool));
+ } else {
+
+ // resolve to makefile variable format
+ resolved = ManagedBuildManager.getBuildMacroProvider().resolveValueToMakefileFormat(
+ inputName, "", //$NON-NLS-1$
+ " ", //$NON-NLS-1$
+ IBuildMacroProvider.CONTEXT_OPTION, new OptionContextData(option, tool));
+ }
+
+ if ((resolved = resolved.trim()).length() > 0)
+ inputName = resolved;
+ } catch (BuildMacroException e) {
+ }
+
+ if (primaryInput) {
+ itCommandDependencies.add(j, inputName);
+ } else {
+ itCommandDependencies.add(inputName);
+ }
+ // NO - itCommandInputs.add(inputName);
+ // NO - itEnumeratedInputs.add(inputName);
+ }
+ } catch (BuildException ex) {
+ }
+
+ } else {
+
+ // Build Variable?
+ if (variable.length() > 0) {
+ String cmdVariable = variable = "$(" + variable + ")"; //$NON-NLS-1$ //$NON-NLS-2$
+ itCommandInputs.add(cmdVariable);
+ if (primaryInput) {
+ itCommandDependencies.add(0, cmdVariable);
+ } else {
+ itCommandDependencies.add(cmdVariable);
+ }
+ // If there is an output variable with the same name, get
+ // the files associated with it.
+ List<String> outMacroList = makeGen.getBuildVariableList(h, variable,
+ GnuMakefileGenerator.PROJECT_RELATIVE, null, true);
+ if (outMacroList != null) {
+ itEnumeratedInputs.addAll(outMacroList);
+ } else {
+ // If "last chance", then calculate using file extensions below
+ if (lastChance) {
+ useFileExts = true;
+ } else {
+ done = false;
+ break;
+ }
+ }
+ }
+
+ // Use file extensions
+ if (variable.length() == 0 || useFileExts) {
+ //if (type.getMultipleOfType()) {
+ // Calculate EnumeratedInputs using the file extensions and the resources in the project
+ // Note: This is only correct for tools with multipleOfType == true, but for other tools
+ // it gives us an input resource for generating default names
+ // Determine the set of source input macros to use
+ HashSet<String> handledInputExtensions = new HashSet<>();
+ String[] exts = type.getSourceExtensions(tool);
+ if (projResources != null) {
+ for (IResource rc : projResources) {
+ if (rc.getType() == IResource.FILE) {
+ String fileExt = rc.getFileExtension();
+
+ // fix for NPE, bugzilla 99483
+ if (fileExt == null) {
+ fileExt = ""; //$NON-NLS-1$
+ }
+
+ for (int k = 0; k < exts.length; k++) {
+ if (fileExt.equals(exts[k])) {
+ if (!useFileExts) {
+ if (!handledInputExtensions.contains(fileExt)) {
+ handledInputExtensions.add(fileExt);
+ String buildMacro = "$(" //$NON-NLS-1$
+ + makeGen.getSourceMacroName(fileExt).toString() + ")"; //$NON-NLS-1$
+ itCommandInputs.add(buildMacro);
+ if (primaryInput) {
+ itCommandDependencies.add(0, buildMacro);
+ } else {
+ itCommandDependencies.add(buildMacro);
+ }
+ }
+ }
+ if (type.getMultipleOfType() || itEnumeratedInputs.size() == 0) {
+ // Add a path that is relative to the project directory
+ itEnumeratedInputs.add(rc.getProjectRelativePath().toString());
+ }
+ break;
+ }
+ }
+ }
+ }
+ }
+ //}
+ }
+ }
+
+ // Get any additional inputs specified in the manifest file or the project file
+ IAdditionalInput[] addlInputs = type.getAdditionalInputs();
+ if (addlInputs != null) {
+ for (int j = 0; j < addlInputs.length; j++) {
+ IAdditionalInput addlInput = addlInputs[j];
+ int kind = addlInput.getKind();
+ if (kind == IAdditionalInput.KIND_ADDITIONAL_INPUT
+ || kind == IAdditionalInput.KIND_ADDITIONAL_INPUT_DEPENDENCY) {
+ String[] paths = addlInput.getPaths();
+ if (paths != null) {
+ for (int k = 0; k < paths.length; k++) {
+ String path = paths[k];
+ itEnumeratedInputs.add(path);
+ // Translate the path from project relative to build directory relative
+ if (!(path.startsWith("$("))) { //$NON-NLS-1$
+ IResource addlResource = project.getFile(path);
+ if (addlResource != null) {
+ IPath addlPath = addlResource.getLocation();
+ if (addlPath != null) {
+ path = ManagedBuildManager
+ .calculateRelativePath(makeGen.getTopBuildDir(), addlPath)
+ .toString();
+ }
+ }
+ }
+ itCommandInputs.add(path);
+ }
+ }
+ }
+ }
+ }
+
+ // If the assignToOption attribute is specified, set the input(s) as the value of that option
+ if (assignToOption != null && option == null) {
+ try {
+ int optType = assignToOption.getValueType();
+ if (optType == IOption.STRING) {
+ String optVal = ""; //$NON-NLS-1$
+ for (int j = 0; j < itCommandInputs.size(); j++) {
+ if (j != 0) {
+ optVal += " "; //$NON-NLS-1$
+ }
+ optVal += itCommandInputs.get(j);
+ }
+ ManagedBuildManager.setOption(config, tool, assignToOption, optVal);
+ } else if (optType == IOption.STRING_LIST || optType == IOption.LIBRARIES
+ || optType == IOption.OBJECTS || optType == IOption.INCLUDE_FILES
+ || optType == IOption.LIBRARY_PATHS || optType == IOption.LIBRARY_FILES
+ || optType == IOption.MACRO_FILES) {
+ //TODO: do we need to do anything with undefs here?
+ // Mote that when using the enumerated inputs, the path(s) must be translated from project relative
+ // to top build directory relative
+ String[] paths = new String[itEnumeratedInputs.size()];
+ for (int j = 0; j < itEnumeratedInputs.size(); j++) {
+ paths[j] = itEnumeratedInputs.get(j);
+ IResource enumResource = project.getFile(paths[j]);
+ if (enumResource != null) {
+ IPath enumPath = enumResource.getLocation();
+ if (enumPath != null) {
+ paths[j] = ManagedBuildManager
+ .calculateRelativePath(makeGen.getTopBuildDir(), enumPath).toString();
+ }
+ }
+ }
+ ManagedBuildManager.setOption(config, tool, assignToOption, paths);
+ } else if (optType == IOption.BOOLEAN) {
+ if (itEnumeratedInputs.size() > 0) {
+ ManagedBuildManager.setOption(config, tool, assignToOption, true);
+ } else {
+ ManagedBuildManager.setOption(config, tool, assignToOption, false);
+ }
+ } else if (optType == IOption.ENUMERATED || optType == IOption.TREE) {
+ if (itCommandInputs.size() > 0) {
+ ManagedBuildManager.setOption(config, tool, assignToOption,
+ itCommandInputs.firstElement());
+ }
+ }
+ itCommandInputs.removeAllElements();
+ //itEnumeratedInputs.removeAllElements();
+ } catch (BuildException ex) {
+ }
+ }
+
+ myCommandInputs.addAll(itCommandInputs);
+ myCommandDependencies.addAll(itCommandDependencies);
+ myEnumeratedInputs.addAll(itEnumeratedInputs);
+ }
+ } else {
+ // For support of pre-CDT 3.0 integrations.
+ if (bIsTargetTool) {
+ // NOTE WELL: This only supports the case of a single "target tool"
+ // with the following characteristics:
+ // 1. The tool consumes exactly all of the object files produced
+ // by other tools in the build and produces a single output
+ // 2. The target name comes from the configuration artifact name
+ // The rule looks like:
+ // <targ_prefix><target>.<extension>: $(OBJS) <refd_project_1 ... refd_project_n>
+ myCommandInputs.add("$(OBJS)"); //$NON-NLS-1$
+ myCommandInputs.add("$(USER_OBJS)"); //$NON-NLS-1$
+ myCommandInputs.add("$(LIBS)"); //$NON-NLS-1$
+ } else {
+ // Rule will be generated by addRuleForSource
+ }
+ }
+
+ if (done) {
+ commandInputs.addAll(myCommandInputs);
+ commandDependencies.addAll(0, myCommandDependencies);
+ enumeratedInputs.addAll(myEnumeratedInputs);
+ inputsCalculated = true;
+ return true;
+ }
+
+ return false;
+ }
+
+ /*
+ * The priorities for determining the names of the outputs of a tool are:
+ * 1. If the tool is the build target and primary output, use artifact name & extension
+ * 2. If an option is specified, use the value of the option
+ * 3. If a nameProvider is specified, call it
+ * 4. If outputNames is specified, use it
+ * 5. Use the name pattern to generate a transformation macro
+ * so that the source names can be transformed into the target names
+ * using the built-in string substitution functions of <code>make</code>.
+ *
+ * NOTE: If an option is not specified and this is not the primary output type, the outputs
+ * from the type are not added to the command line
+ */
+ public boolean calculateOutputs(GnuMakefileGenerator makeGen, IConfiguration config,
+ HashSet<String> handledInputExtensions, boolean lastChance) {
+
+ boolean done = true;
+ Vector<String> myCommandOutputs = new Vector<>();
+ Vector<String> myEnumeratedPrimaryOutputs = new Vector<>();
+ Vector<String> myEnumeratedSecondaryOutputs = new Vector<>();
+ HashMap<String, List<IPath>> myOutputMacros = new HashMap<>();
+ // The next two fields are used together
+ Vector<String> myBuildVars = new Vector<>();
+ Vector<Vector<String>> myBuildVarsValues = new Vector<>();
+
+ // Get the outputs for this tool invocation
+ IOutputType[] outTypes = tool.getOutputTypes();
+ if (outTypes != null && outTypes.length > 0) {
+ for (int i = 0; i < outTypes.length; i++) {
+ Vector<String> typeEnumeratedOutputs = new Vector<>();
+ IOutputType type = outTypes[i];
+ String outputPrefix = type.getOutputPrefix();
+
+ // Resolve any macros in the outputPrefix
+ // Note that we cannot use file macros because if we do a clean
+ // we need to know the actual name of the file to clean, and
+ // cannot use any builder variables such as $@. Hence we use the
+ // next best thing, i.e. configuration context.
+
+ if (config != null) {
+
+ try {
+ outputPrefix = ManagedBuildManager.getBuildMacroProvider().resolveValueToMakefileFormat(
+ outputPrefix, "", //$NON-NLS-1$
+ " ", //$NON-NLS-1$
+ IBuildMacroProvider.CONTEXT_CONFIGURATION, config);
+ }
+
+ catch (BuildMacroException e) {
+ }
+ }
+
+ String variable = type.getBuildVariable();
+ boolean multOfType = type.getMultipleOfType();
+ boolean primaryOutput = (type == tool.getPrimaryOutputType());
+ IOption option = tool.getOptionBySuperClassId(type.getOptionId());
+ IManagedOutputNameProvider nameProvider = type.getNameProvider();
+ String[] outputNames = type.getOutputNames();
+
+ // 1. If the tool is the build target and this is the primary output,
+ // use artifact name & extension
+ if (bIsTargetTool && primaryOutput) {
+ String outputName = outputPrefix + targetName;
+ if (targetExt.length() > 0) {
+ outputName += (DOT + targetExt);
+ }
+ myCommandOutputs.add(outputName);
+ typeEnumeratedOutputs.add(outputName);
+ // But this doesn't use any output macro...
+ } else
+ // 2. If an option is specified, use the value of the option
+ if (option != null) {
+ try {
+ List<String> outputs = new ArrayList<>();
+ int optType = option.getValueType();
+ if (optType == IOption.STRING) {
+ outputs.add(outputPrefix + option.getStringValue());
+ } else if (optType == IOption.STRING_LIST || optType == IOption.LIBRARIES
+ || optType == IOption.OBJECTS || optType == IOption.INCLUDE_FILES
+ || optType == IOption.LIBRARY_PATHS || optType == IOption.LIBRARY_FILES
+ || optType == IOption.MACRO_FILES) {
+ @SuppressWarnings("unchecked")
+ List<String> value = (List<String>) option.getValue();
+ outputs = value;
+ tool.filterValues(optType, outputs);
+ // Add outputPrefix to each if necessary
+ if (outputPrefix.length() > 0) {
+ for (int j = 0; j < outputs.size(); j++) {
+ outputs.set(j, outputPrefix + outputs.get(j));
+ }
+ }
+ }
+ for (int j = 0; j < outputs.size(); j++) {
+ String outputName = outputs.get(j);
+ try {
+ //try to resolve the build macros in the output names
+ String resolved = ManagedBuildManager.getBuildMacroProvider()
+ .resolveValueToMakefileFormat(outputName, "", //$NON-NLS-1$
+ " ", //$NON-NLS-1$
+ IBuildMacroProvider.CONTEXT_OPTION,
+ new OptionContextData(option, tool));
+ if ((resolved = resolved.trim()).length() > 0)
+ outputs.set(j, resolved);
+ } catch (BuildMacroException e) {
+ }
+ }
+
+ // NO - myCommandOutputs.addAll(outputs);
+ typeEnumeratedOutputs.addAll(outputs);
+ if (variable.length() > 0) {
+ List<IPath> outputPaths = new ArrayList<>();
+ for (int j = 0; j < outputs.size(); j++) {
+ outputPaths.add(Path.fromOSString(outputs.get(j)));
+ }
+ if (myOutputMacros.containsKey(variable)) {
+ List<IPath> currList = myOutputMacros.get(variable);
+ currList.addAll(outputPaths);
+ myOutputMacros.put(variable, currList);
+ } else {
+ myOutputMacros.put(variable, outputPaths);
+ }
+ }
+ } catch (BuildException ex) {
+ }
+ } else
+ // 3. If a nameProvider is specified, call it
+ if (nameProvider != null) {
+ // The inputs must have been calculated before we can do this
+ IPath[] outNames = null;
+ if (!inputsCalculated) {
+ done = false;
+ } else {
+ Vector<String> inputs = getEnumeratedInputs();
+ IPath[] inputPaths = new IPath[inputs.size()];
+ for (int j = 0; j < inputPaths.length; j++) {
+ inputPaths[j] = Path.fromOSString(inputs.get(j));
+ }
+ outNames = nameProvider.getOutputNames(tool, inputPaths);
+ if (outNames != null) {
+ for (int j = 0; j < outNames.length; j++) {
+ String outputName = outNames[j].toString();
+ try {
+ //try to resolve the build macros in the output names
+ String resolved = ManagedBuildManager.getBuildMacroProvider()
+ .resolveValueToMakefileFormat(outputName, "", //$NON-NLS-1$
+ " ", //$NON-NLS-1$
+ IBuildMacroProvider.CONTEXT_CONFIGURATION, config);
+ if ((resolved = resolved.trim()).length() > 0) {
+ outputName = resolved;
+ outNames[j] = Path.fromOSString(resolved);
+ }
+ } catch (BuildMacroException e) {
+ }
+
+ if (primaryOutput) {
+ myCommandOutputs.add(outputName);
+ }
+ typeEnumeratedOutputs.add(outputName);
+ }
+ }
+ }
+ if (variable.length() > 0 && outNames != null) {
+ if (myOutputMacros.containsKey(variable)) {
+ List<IPath> currList = myOutputMacros.get(variable);
+ currList.addAll(Arrays.asList(outNames));
+ myOutputMacros.put(variable, currList);
+ } else {
+ myOutputMacros.put(variable, new ArrayList<>(Arrays.asList(outNames)));
+ }
+ }
+ } else
+ // 4. If outputNames is specified, use it
+ if (outputNames != null) {
+ if (outputNames.length > 0) {
+ for (int j = 0; j < outputNames.length; j++) {
+ String outputName = outputNames[j];
+ try {
+ //try to resolve the build macros in the output names
+ String resolved = ManagedBuildManager.getBuildMacroProvider()
+ .resolveValueToMakefileFormat(outputName, "", //$NON-NLS-1$
+ " ", //$NON-NLS-1$
+ IBuildMacroProvider.CONTEXT_OPTION,
+ new OptionContextData(option, tool));
+ if ((resolved = resolved.trim()).length() > 0)
+ outputNames[j] = resolved;
+ } catch (BuildMacroException e) {
+ }
+ }
+ List<String> namesList = Arrays.asList(outputNames);
+ if (primaryOutput) {
+ myCommandOutputs.addAll(namesList);
+ }
+ typeEnumeratedOutputs.addAll(namesList);
+ if (variable.length() > 0) {
+ List<IPath> outputPaths = new ArrayList<>();
+ for (int j = 0; j < namesList.size(); j++) {
+ outputPaths.add(Path.fromOSString(namesList.get(j)));
+ }
+ if (myOutputMacros.containsKey(variable)) {
+ List<IPath> currList = myOutputMacros.get(variable);
+ currList.addAll(outputPaths);
+ myOutputMacros.put(variable, currList);
+ } else {
+ myOutputMacros.put(variable, outputPaths);
+ }
+ }
+ }
+ } else {
+ // 5. Use the name pattern to generate a transformation macro
+ // so that the source names can be transformed into the target names
+ // using the built-in string substitution functions of <code>make</code>.
+ if (multOfType) {
+ // This case is not handled - a nameProvider or outputNames must be specified
+ List<String> errList = new ArrayList<>();
+ errList.add(ManagedMakeMessages.getResourceString("MakefileGenerator.error.no.nameprovider")); //$NON-NLS-1$
+ myCommandOutputs.addAll(errList);
+ } else {
+ String namePattern = type.getNamePattern();
+ if (namePattern == null || namePattern.length() == 0) {
+ namePattern = outputPrefix + IManagedBuilderMakefileGenerator.WILDCARD;
+ String outExt = (type.getOutputExtensions(tool))[0];
+ if (outExt != null && outExt.length() > 0) {
+ namePattern += DOT + outExt;
+ }
+ } else if (outputPrefix.length() > 0) {
+ namePattern = outputPrefix + namePattern;
+ }
+
+ // Calculate the output name
+ // The inputs must have been calculated before we can do this
+ if (!inputsCalculated) {
+ done = false;
+ } else {
+ Vector<String> inputs = getEnumeratedInputs();
+ String fileName;
+ if (inputs.size() > 0) {
+ // Get the input file name
+ fileName = (Path.fromOSString(inputs.get(0))).removeFileExtension().lastSegment();
+ // Check if this is a build macro. If so, use the raw macro name.
+ if (fileName.startsWith("$(") && fileName.endsWith(")")) { //$NON-NLS-1$ //$NON-NLS-2$
+ fileName = fileName.substring(2, fileName.length() - 1);
+ }
+ } else {
+ fileName = "default"; //$NON-NLS-1$
+ }
+ // Replace the % with the file name
+ if (primaryOutput) {
+ myCommandOutputs.add(namePattern.replaceAll("%", fileName)); //$NON-NLS-1$
+ }
+ typeEnumeratedOutputs.add(namePattern.replaceAll("%", fileName)); //$NON-NLS-1$
+ if (variable.length() > 0) {
+ List<IPath> outputs = new ArrayList<>();
+ outputs.add(Path.fromOSString(fileName));
+ if (myOutputMacros.containsKey(variable)) {
+ List<IPath> currList = myOutputMacros.get(variable);
+ currList.addAll(outputs);
+ myOutputMacros.put(variable, currList);
+ } else {
+ myOutputMacros.put(variable, outputs);
+ }
+ }
+ }
+ }
+ }
+ if (variable.length() > 0) {
+ myBuildVars.add(variable);
+ myBuildVarsValues.add(typeEnumeratedOutputs);
+ }
+ if (primaryOutput) {
+ myEnumeratedPrimaryOutputs.addAll(typeEnumeratedOutputs);
+ } else {
+ myEnumeratedSecondaryOutputs.addAll(typeEnumeratedOutputs);
+ }
+ }
+ } else {
+ if (bIsTargetTool) {
+ String outputPrefix = tool.getOutputPrefix();
+ String outputName = outputPrefix + targetName;
+ if (targetExt.length() > 0) {
+ outputName += (DOT + targetExt);
+ }
+ myCommandOutputs.add(outputName);
+ myEnumeratedPrimaryOutputs.add(outputName);
+ } else {
+ // For support of pre-CDT 3.0 integrations.
+ // NOTE WELL: This only supports the case of a single "target tool"
+ // that consumes exactly all of the object files, $OBJS, produced
+ // by other tools in the build and produces a single output
+ }
+ }
+
+ // Add the output macros of this tool to the buildOutVars map
+ Set<Entry<String, List<IPath>>> entrySet = myOutputMacros.entrySet();
+ for (Entry<String, List<IPath>> entry : entrySet) {
+ String macroName = entry.getKey();
+ List<IPath> newMacroValue = entry.getValue();
+ Map<String, List<IPath>> map = makeGen.getBuildOutputVars();
+ if (map.containsKey(macroName)) {
+ List<IPath> macroValue = map.get(macroName);
+ macroValue.addAll(newMacroValue);
+ map.put(macroName, macroValue);
+ } else {
+ map.put(macroName, newMacroValue);
+ }
+ }
+ outputVariablesCalculated = true;
+
+ if (done) {
+ commandOutputs.addAll(myCommandOutputs);
+ enumeratedPrimaryOutputs.addAll(myEnumeratedPrimaryOutputs);
+ enumeratedSecondaryOutputs.addAll(myEnumeratedSecondaryOutputs);
+ outputVariables.addAll(myOutputMacros.keySet());
+ outputsCalculated = true;
+ Map<String, Set<String>> map = makeGen.getTopBuildOutputVars();
+ for (int i = 0; i < myBuildVars.size(); i++) {
+ makeGen.addMacroAdditionFiles(map, myBuildVars.get(i), myBuildVarsValues.get(i));
+ }
+ return true;
+ }
+
+ return false;
+ }
+
+ private boolean callDependencyCalculator(GnuMakefileGenerator makeGen, IConfiguration config,
+ HashSet<String> handledInputExtensions, IManagedDependencyGeneratorType depGen, String[] extensionsList,
+ Vector<String> myCommandDependencies, HashMap<String, List<IPath>> myOutputMacros,
+ Vector<String> myAdditionalTargets, ToolInfoHolder h, boolean done) {
+
+ int calcType = depGen.getCalculatorType();
+ switch (calcType) {
+ case IManagedDependencyGeneratorType.TYPE_COMMAND:
+ case IManagedDependencyGeneratorType.TYPE_BUILD_COMMANDS:
+ // iterate over all extensions that the tool knows how to handle
+ for (int i = 0; i < extensionsList.length; i++) {
+ String extensionName = extensionsList[i];
+
+ // Generated files should not appear in the list.
+ if (!makeGen.getOutputExtensions(h).contains(extensionName)
+ && !handledInputExtensions.contains(extensionName)) {
+ handledInputExtensions.add(extensionName);
+ String depExt = IManagedBuilderMakefileGenerator.DEP_EXT;
+ if (calcType == IManagedDependencyGeneratorType.TYPE_BUILD_COMMANDS) {
+ IManagedDependencyGenerator2 depGen2 = (IManagedDependencyGenerator2) depGen;
+ String xt = depGen2.getDependencyFileExtension(config, tool);
+ if (xt != null && xt.length() > 0)
+ depExt = xt;
+ }
+ String depsMacroEntry = calculateSourceMacro(makeGen, extensionName, depExt,
+ IManagedBuilderMakefileGenerator.WILDCARD);
+
+ List<IPath> depsList = new ArrayList<>();
+ depsList.add(Path.fromOSString(depsMacroEntry));
+ String depsMacro = makeGen.getDepMacroName(extensionName).toString();
+ if (myOutputMacros.containsKey(depsMacro)) {
+ List<IPath> currList = myOutputMacros.get(depsMacro);
+ currList.addAll(depsList);
+ myOutputMacros.put(depsMacro, currList);
+ } else {
+ myOutputMacros.put(depsMacro, depsList);
+ }
+ }
+ }
+ break;
+
+ case IManagedDependencyGeneratorType.TYPE_INDEXER:
+ case IManagedDependencyGeneratorType.TYPE_EXTERNAL:
+ case IManagedDependencyGeneratorType.TYPE_CUSTOM:
+ // The inputs must have been calculated before we can do this
+ if (!inputsCalculated) {
+ done = false;
+ } else {
+ Vector<String> inputs = getEnumeratedInputs();
+
+ if (calcType == IManagedDependencyGeneratorType.TYPE_CUSTOM) {
+ IManagedDependencyGenerator2 depGen2 = (IManagedDependencyGenerator2) depGen;
+ IManagedDependencyInfo depInfo = null;
+ for (int i = 0; i < inputs.size(); i++) {
+
+ depInfo = depGen2.getDependencySourceInfo(Path.fromOSString(inputs.get(i)), config, tool,
+ makeGen.getBuildWorkingDir());
+
+ if (depInfo instanceof IManagedDependencyCalculator) {
+ IManagedDependencyCalculator depCalc = (IManagedDependencyCalculator) depInfo;
+ IPath[] depPaths = depCalc.getDependencies();
+ if (depPaths != null) {
+ for (int j = 0; j < depPaths.length; j++) {
+ if (!depPaths[j].isAbsolute()) {
+ // Convert from project relative to build directory relative
+ IPath absolutePath = project.getLocation().append(depPaths[j]);
+ depPaths[j] = ManagedBuildManager
+ .calculateRelativePath(makeGen.getTopBuildDir(), absolutePath);
+ }
+ myCommandDependencies.add(depPaths[j].toString());
+ }
+ }
+ IPath[] targetPaths = depCalc.getAdditionalTargets();
+ if (targetPaths != null) {
+ for (int j = 0; j < targetPaths.length; j++) {
+ myAdditionalTargets.add(targetPaths[j].toString());
+ }
+ }
+ }
+ }
+ } else {
+ IManagedDependencyGenerator oldDepGen = (IManagedDependencyGenerator) depGen;
+ for (String input : inputs) {
+ IResource[] outNames = oldDepGen.findDependencies(project.getFile(input), project);
+ if (outNames != null) {
+ for (IResource outName : outNames) {
+ myCommandDependencies.add(outName.toString());
+ }
+ }
+ }
+ }
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ return done;
+ }
+
+ public boolean calculateDependencies(GnuMakefileGenerator makeGen, IConfiguration config,
+ HashSet<String> handledInputExtensions, ToolInfoHolder h, boolean lastChance) {
+ // Get the dependencies for this tool invocation
+ boolean done = true;
+ Vector<String> myCommandDependencies = new Vector<>();
+ Vector<String> myAdditionalTargets = new Vector<>();
+ //Vector myEnumeratedDependencies = new Vector();
+ HashMap<String, List<IPath>> myOutputMacros = new HashMap<>();
+
+ IInputType[] inTypes = tool.getInputTypes();
+ if (inTypes != null && inTypes.length > 0) {
+ for (int i = 0; i < inTypes.length; i++) {
+ IInputType type = inTypes[i];
+
+ // Handle dependencies from the dependencyCalculator
+ IManagedDependencyGeneratorType depGen = type.getDependencyGenerator();
+ String[] extensionsList = type.getSourceExtensions(tool);
+ if (depGen != null) {
+ done = callDependencyCalculator(makeGen, config, handledInputExtensions, depGen, extensionsList,
+ myCommandDependencies, myOutputMacros, myAdditionalTargets, h, done);
+ }
+
+ // Add additional dependencies specified in AdditionalInput elements
+ IAdditionalInput[] addlInputs = type.getAdditionalInputs();
+ if (addlInputs != null && addlInputs.length > 0) {
+ for (int j = 0; j < addlInputs.length; j++) {
+ IAdditionalInput addlInput = addlInputs[j];
+ int kind = addlInput.getKind();
+ if (kind == IAdditionalInput.KIND_ADDITIONAL_DEPENDENCY
+ || kind == IAdditionalInput.KIND_ADDITIONAL_INPUT_DEPENDENCY) {
+ String[] paths = addlInput.getPaths();
+ if (paths != null) {
+ for (int k = 0; k < paths.length; k++) {
+ // Translate the path from project relative to
+ // build directory relative
+ String path = paths[k];
+ if (!(path.startsWith("$("))) { //$NON-NLS-1$
+ IResource addlResource = project.getFile(path);
+ if (addlResource != null) {
+ IPath addlPath = addlResource.getLocation();
+ if (addlPath != null) {
+ path = ManagedBuildManager
+ .calculateRelativePath(makeGen.getTopBuildDir(), addlPath)
+ .toString();
+ }
+ }
+ }
+ myCommandDependencies.add(path);
+ //myEnumeratedInputs.add(path);
+ }
+ }
+ }
+ }
+ }
+ }
+ } else {
+ if (bIsTargetTool) {
+ // For support of pre-CDT 3.0 integrations.
+ // NOTE WELL: This only supports the case of a single "target tool"
+ // with the following characteristics:
+ // 1. The tool consumes exactly all of the object files produced
+ // by other tools in the build and produces a single output
+ // 2. The target name comes from the configuration artifact name
+ // The rule looks like:
+ // <targ_prefix><target>.<extension>: $(OBJS) <refd_project_1 ... refd_project_n>
+ myCommandDependencies.add("$(OBJS)"); //$NON-NLS-1$
+ myCommandDependencies.add("$(USER_OBJS)"); //$NON-NLS-1$
+ } else {
+ // Handle dependencies from the dependencyCalculator
+ IManagedDependencyGeneratorType depGen = tool.getDependencyGenerator();
+ String[] extensionsList = tool.getAllInputExtensions();
+ if (depGen != null) {
+ done = callDependencyCalculator(makeGen, config, handledInputExtensions, depGen, extensionsList,
+ myCommandDependencies, myOutputMacros, myAdditionalTargets, h, done);
+ }
+
+ }
+ }
+
+ // Add the output macros of this tool to the buildOutVars map
+ Set<Entry<String, List<IPath>>> entrySet = myOutputMacros.entrySet();
+ for (Entry<String, List<IPath>> entry : entrySet) {
+ String macroName = entry.getKey();
+ List<IPath> newMacroValue = entry.getValue();
+ Map<String, List<IPath>> map = makeGen.getBuildOutputVars();
+ if (map.containsKey(macroName)) {
+ List<IPath> macroValue = map.get(macroName);
+ macroValue.addAll(newMacroValue);
+ map.put(macroName, macroValue);
+ } else {
+ map.put(macroName, newMacroValue);
+ }
+ }
+
+ if (done) {
+ commandDependencies.addAll(myCommandDependencies);
+ additionalTargets.addAll(myAdditionalTargets);
+ //enumeratedDependencies.addAll(myEnumeratedDependencies);
+ dependenciesCalculated = true;
+ return true;
+ }
+
+ return false;
+ }
+
+ /*
+ * Calculate the source macro for the given extension
+ */
+ protected String calculateSourceMacro(GnuMakefileGenerator makeGen, String srcExtensionName,
+ String outExtensionName, String wildcard) {
+ StringBuffer macroName = makeGen.getSourceMacroName(srcExtensionName);
+ String OptDotExt = ""; //$NON-NLS-1$
+ if (outExtensionName != null) {
+ OptDotExt = DOT + outExtensionName;
+ } else if (!tool.getOutputExtension(srcExtensionName).isEmpty())
+ OptDotExt = DOT + tool.getOutputExtension(srcExtensionName);
+
+ // create rule of the form
+ // OBJS = $(macroName1: ../%.input1=%.output1) ... $(macroNameN: ../%.inputN=%.outputN)
+ return IManagedBuilderMakefileGenerator.WHITESPACE + "$(" + macroName + //$NON-NLS-1$
+ IManagedBuilderMakefileGenerator.COLON + makeGen.reachProjectRoot()
+ + IManagedBuilderMakefileGenerator.SEPARATOR + IManagedBuilderMakefileGenerator.WILDCARD + DOT
+ + srcExtensionName + "=" + wildcard + OptDotExt + ")"; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+}
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/projectconverter/ConverterMessages.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/projectconverter/ConverterMessages.java
index 6f446c40b0a..bbf7a3bff10 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/projectconverter/ConverterMessages.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/projectconverter/ConverterMessages.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004, 2011 Intel Corporation and others.
+ * Copyright (c) 2004, 2020 Intel Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -10,14 +10,14 @@
*
* Contributors:
* Intel Corporation - Initial API and implementation
+ * Sergei Kovalchuk (NXP)
*******************************************************************************/
package org.eclipse.cdt.managedbuilder.projectconverter;
+import java.text.MessageFormat;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
-import com.ibm.icu.text.MessageFormat;
-
/**
* @noextend This class is not intended to be subclassed by clients.
* @noinstantiate This class is not intended to be instantiated by clients.
@@ -30,16 +30,6 @@ public class ConverterMessages {
private ConverterMessages() {
}
- /*
- public static String getString(String key) {
- // TODO Auto-generated method stub
- try {
- return RESOURCE_BUNDLE.getString(key);
- } catch (MissingResourceException e) {
- return '!' + key + '!';
- }
- }
- */
public static String getResourceString(String key) {
try {
return RESOURCE_BUNDLE.getString(key);
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/newmake/core/IMakeCommonBuildInfo.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/newmake/core/IMakeCommonBuildInfo.java
index 5637fa7618e..9587d907cdd 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/newmake/core/IMakeCommonBuildInfo.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/newmake/core/IMakeCommonBuildInfo.java
@@ -83,13 +83,42 @@ public interface IMakeCommonBuildInfo {
*/
void setParallelBuildOn(boolean on) throws CoreException;
+ /**
+ * @deprecated Use the {@link #isDefaultBuildCmdOnly()} and {@link #isDefaultBuildArgsOnly()}
+ * @return
+ */
+ @Deprecated
boolean isDefaultBuildCmd();
+ /**
+ * @since 9.3
+ */
+ boolean isDefaultBuildCmdOnly();
+
+ /**
+ * @since 9.3
+ */
+ boolean isDefaultBuildArgsOnly();
+
+ /**
+ * @deprecated Use the {@link #setUseDefaultBuildCmdOnly(boolean)} and {@link #setUseDefaultBuildArgsOnly(boolean)}
+ */
+ @Deprecated
void setUseDefaultBuildCmd(boolean on) throws CoreException;
IPath getBuildCommand();
/**
+ * @since 9.3
+ */
+ void setUseDefaultBuildCmdOnly(boolean on) throws CoreException;
+
+ /**
+ * @since 9.3
+ */
+ void setUseDefaultBuildArgsOnly(boolean on) throws CoreException;
+
+ /**
* @deprecated - use setBuildString(BUILD_COMMAND...)
*/
@Deprecated
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/newmake/internal/core/MakeMessages.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/newmake/internal/core/MakeMessages.java
index ebf7b2ba9c1..95b7b1f79bd 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/newmake/internal/core/MakeMessages.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/newmake/internal/core/MakeMessages.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2002, 2009 QNX Software Systems and others.
+ * Copyright (c) 2002, 2020 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -10,14 +10,14 @@
*
* Contributors:
* QNX Software Systems - initial API and implementation
+ * Sergei Kovalchuk (NXP)
*******************************************************************************/
package org.eclipse.cdt.newmake.internal.core;
+import java.text.MessageFormat;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
-import com.ibm.icu.text.MessageFormat;
-
public class MakeMessages {
private static final String RESOURCE_BUNDLE = MakeMessages.class.getName();
diff --git a/build/org.eclipse.cdt.managedbuilder.gnu.ui/.classpath b/build/org.eclipse.cdt.managedbuilder.gnu.ui/.classpath
index 01836c4842f..e801ebfb468 100644
--- a/build/org.eclipse.cdt.managedbuilder.gnu.ui/.classpath
+++ b/build/org.eclipse.cdt.managedbuilder.gnu.ui/.classpath
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/build/org.eclipse.cdt.managedbuilder.gnu.ui/.settings/org.eclipse.core.resources.prefs b/build/org.eclipse.cdt.managedbuilder.gnu.ui/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/build/org.eclipse.cdt.managedbuilder.gnu.ui/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/build/org.eclipse.cdt.managedbuilder.gnu.ui/.settings/org.eclipse.jdt.core.prefs b/build/org.eclipse.cdt.managedbuilder.gnu.ui/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/build/org.eclipse.cdt.managedbuilder.gnu.ui/.settings/org.eclipse.jdt.core.prefs
+++ b/build/org.eclipse.cdt.managedbuilder.gnu.ui/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/build/org.eclipse.cdt.managedbuilder.gnu.ui/.settings/org.eclipse.jdt.ui.prefs b/build/org.eclipse.cdt.managedbuilder.gnu.ui/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/build/org.eclipse.cdt.managedbuilder.gnu.ui/.settings/org.eclipse.jdt.ui.prefs
+++ b/build/org.eclipse.cdt.managedbuilder.gnu.ui/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/build/org.eclipse.cdt.managedbuilder.gnu.ui/META-INF/MANIFEST.MF b/build/org.eclipse.cdt.managedbuilder.gnu.ui/META-INF/MANIFEST.MF
index 632c4dad847..01b7bacbbf5 100644
--- a/build/org.eclipse.cdt.managedbuilder.gnu.ui/META-INF/MANIFEST.MF
+++ b/build/org.eclipse.cdt.managedbuilder.gnu.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.managedbuilder.gnu.ui; singleton:=true
-Bundle-Version: 8.3.100.qualifier
+Bundle-Version: 8.4.300.qualifier
Bundle-Activator: org.eclipse.cdt.managedbuilder.gnu.ui.GnuUIPlugin
Bundle-Vendor: %providerName
Bundle-Localization: plugin
@@ -11,9 +11,9 @@ Export-Package: org.eclipse.cdt.managedbuilder.gnu.cygwin,
org.eclipse.cdt.managedbuilder.gnu.templates;x-internal:=true,
org.eclipse.cdt.managedbuilder.gnu.ui
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)",
- org.eclipse.cdt.managedbuilder.core;bundle-version="[8.1.0,9.0.0)",
- org.eclipse.cdt.core;bundle-version="[5.0.0,7.0.0)",
+ org.eclipse.cdt.managedbuilder.core;bundle-version="[9.0.0,10.0.0]",
+ org.eclipse.cdt.core;bundle-version="[7.0.0,8.0.0)",
org.eclipse.core.resources
Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Automatic-Module-Name: org.eclipse.cdt.managedbuilder.gnu.ui
diff --git a/build/org.eclipse.cdt.managedbuilder.gnu.ui/about.html b/build/org.eclipse.cdt.managedbuilder.gnu.ui/about.html
index 164f781a8fd..b3134865230 100644
--- a/build/org.eclipse.cdt.managedbuilder.gnu.ui/about.html
+++ b/build/org.eclipse.cdt.managedbuilder.gnu.ui/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/build/org.eclipse.cdt.managedbuilder.gnu.ui/plugin.properties b/build/org.eclipse.cdt.managedbuilder.gnu.ui/plugin.properties
index cf5d25fae5e..95a5857e601 100644
--- a/build/org.eclipse.cdt.managedbuilder.gnu.ui/plugin.properties
+++ b/build/org.eclipse.cdt.managedbuilder.gnu.ui/plugin.properties
@@ -120,8 +120,10 @@ Option.Posix.Dialect.c90=ISO C90 / ANSI C89 (-std=c90)
Option.Posix.Dialect.c99=ISO C99 (-std=c99)
Option.Posix.Dialect.c11=ISO C11 (-std=c11)
Option.Posix.Dialect.c++98=ISO C++98 (-std=c++98)
-Option.Posix.Dialect.c++11=ISO C++11 (-std=c++0x)
-Option.Posix.Dialect.c++1y=ISO C++1y (-std=c++1y)
+Option.Posix.Dialect.c++11=ISO C++11 (-std=c++11)
+Option.Posix.Dialect.c++14=ISO C++14 (-std=c++14)
+Option.Posix.Dialect.c++17=ISO C++17 (-std=c++17)
+Option.Posix.Dialect.c++2a=ISO C++20 (-std=c++2a)
Option.Posix.Dialect.Flags=Other dialect flags
Option.Posix.PreprocOnly=Preprocess only (-E)
@@ -149,6 +151,11 @@ Option.Posix.Debug.Max=Maximum (-g3)
Option.Posix.Debug.Other=Other debugging flags
Option.Posix.Debug.gprof=Generate gprof information (-pg)
Option.Posix.Debug.prof=Generate prof information (-p)
+Option.Posix.Debug.sanitaddress=Sanitize address (-fsanitize=address)
+Option.Posix.Debug.sanitpointers=Sanitize pointer operations (-fsanitize=pointer-compare -fsanitize=pointer-subtract)
+Option.Posix.Debug.sanitthread=Sanitize data race in multi-thread (-fsanitize=thread)
+Option.Posix.Debug.sanitleak=Sanitize memory leak (-fsanitize=leak)
+Option.Posix.Debug.sanitundefined=Sanitize undefined behavior (-fsanitize=undefined)
Option.Posix.Warn.Syntax=Check syntax only (-fsyntax-only)
Option.Posix.Warn.Pedandic=Pedantic (-pedantic)
@@ -158,6 +165,26 @@ Option.Posix.Warn.allwarn=All warnings (-Wall)
Option.Posix.Warn.extrawarn=Extra warnings (-Wextra)
Option.Posix.Warn.toerrs=Warnings as errors (-Werror)
Option.Posix.Warn.wconversion=Implicit conversion warnings (-Wconversion)
+Option.Posix.Warn.wfloatequal=Direct float equal check (-Wfloat-equal)
+Option.Posix.Warn.wcastalign=Pointer cast with different alignment (-Wcast-align)
+Option.Posix.Warn.wcastqual=Removing type qualifier from cast target type (-Wcast-qual)
+Option.Posix.Warn.wctordtorprivacy=All ctor and dtor private (-Wctor-dtor-privacy)
+Option.Posix.Warn.wdisabledopt=Requested optimization pass is disabled (-Wdisabled-optimization)
+Option.Posix.Warn.wlogicalop=Suspicious uses of logical operators (-Wlogical-op)
+Option.Posix.Warn.wmissingdecl=Global function without previous declaration (-Wmissing-declarations)
+Option.Posix.Warn.wmissingincdir=User-supplied include directory does not exist (-Wmissing-include-dirs)
+Option.Posix.Warn.wnoexccept=Noexcept false but never throw exception (-Wnoexcept)
+Option.Posix.Warn.woldstylecast=C-style cast used (-Wold-style-cast)
+Option.Posix.Warn.woverloadedvirtual=Function hides virtual functions from base class (-Woverloaded-virtual)
+Option.Posix.Warn.wredundantdecl=More than one declaration in the same scope (-Wredundant-decls)
+Option.Posix.Warn.wshadow=Local symbol shadows upper scope symbol (-Wshadow)
+Option.Posix.Warn.wsignconv=Implicit conversions that may change the sign (-Wsign-conversion)
+Option.Posix.Warn.wsignpromo=Overload resolution promotes unsigned to signed type (-Wsign-promo)
+Option.Posix.Warn.wstrictnullsent=Use of an uncasted NULL as sentinel (-Wstrict-null-sentinel)
+Option.Posix.Warn.wswitchdef=A switch statement does not have a default case (-Wswitch-default)
+Option.Posix.Warn.wundef=An undefined identifier is evaluated in an #if directive (-Wundef)
+Option.Posix.Warn.weffcpp=Effective C++ guidelines (-Weffc++)
+Option.Posix.Warn.wwritestring=Treat strings always as const (-Wwrite-strings)
Option.Posix.Verbose=Verbose (-v)
Option.OtherFlags=Other flags
@@ -168,6 +195,8 @@ Option.codecovTip="Check this flag if you want to enable Profile Code Coverage i
Option.Pthread=Support for pthread (-pthread)
Option.PthreadCompilerTip="If you select this option, you probably want to select -pthread in the linker settings."
Option.PthreadLinkerTip="If you select this option, you probably want to select -pthread in the compiler settings."
+Option.Security=Hardening options (-fstack-protector-all -Wformat=2 -Wformat-security -Wstrict-overflow)
+Option.Randomization=Address randomization (-fPIE)
Option.Posix.Linker.NoStartFiles=Do not use standard start files (-nostartfiles)
Option.Posix.Linker.NoDefLibs=Do not use default libraries (-nodefaultlibs)
diff --git a/build/org.eclipse.cdt.managedbuilder.gnu.ui/plugin.xml b/build/org.eclipse.cdt.managedbuilder.gnu.ui/plugin.xml
index 665913f5c7b..e35e6ee04c0 100644
--- a/build/org.eclipse.cdt.managedbuilder.gnu.ui/plugin.xml
+++ b/build/org.eclipse.cdt.managedbuilder.gnu.ui/plugin.xml
@@ -604,7 +604,6 @@
name="%ToolName.linker.macosx.c"
outputFlag="-o"
command="gcc"
- commandLinePattern="${COMMAND} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}"
id="cdt.managedbuild.tool.macosx.c.linker"
errorParsers="org.eclipse.cdt.core.GLDErrorParser">
<supportedProperties>
@@ -796,7 +795,6 @@
name="%ToolName.linker.macosx.cpp"
outputFlag="-o"
command="g++"
- commandLinePattern="${COMMAND} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}"
id="cdt.managedbuild.tool.macosx.cpp.linker"
errorParsers="org.eclipse.cdt.core.GLDErrorParser">
<supportedProperties>
@@ -1217,6 +1215,46 @@
tip="%Option.codecovTip"
valueType="boolean">
</option>
+ <option
+ defaultValue="false"
+ name="%Option.Posix.Debug.sanitaddress"
+ category="gnu.c.compiler.category.debug"
+ command="-fsanitize=address"
+ id="gnu.c.compiler.option.debugging.sanitaddress"
+ valueType="boolean">
+ </option>
+ <option
+ defaultValue="false"
+ name="%Option.Posix.Debug.sanitpointers"
+ category="gnu.c.compiler.category.debug"
+ command="-fsanitize=pointer-compare -fsanitize=pointer-subtract"
+ id="gnu.c.compiler.option.debugging.sanitpointers"
+ valueType="boolean">
+ </option>
+ <option
+ defaultValue="false"
+ name="%Option.Posix.Debug.sanitthread"
+ category="gnu.c.compiler.category.debug"
+ command="-fsanitize=thread"
+ id="gnu.c.compiler.option.debugging.sanitthread"
+ valueType="boolean">
+ </option>
+ <option
+ defaultValue="false"
+ name="%Option.Posix.Debug.sanitleak"
+ category="gnu.c.compiler.category.debug"
+ command="-fsanitize=leak"
+ id="gnu.c.compiler.option.debugging.sanitleak"
+ valueType="boolean">
+ </option>
+ <option
+ defaultValue="false"
+ name="%Option.Posix.Debug.sanitundefined"
+ category="gnu.c.compiler.category.debug"
+ command="-fsanitize=undefined"
+ id="gnu.c.compiler.option.debugging.sanitundef"
+ valueType="boolean">
+ </option>
<optionCategory
owner="cdt.managedbuild.tool.gnu.c.compiler"
name="%OptionCategory.Warn"
@@ -1286,6 +1324,110 @@
id="gnu.c.compiler.option.warnings.wconversion"
valueType="boolean">
</option>
+ <option
+ defaultValue="false"
+ name="%Option.Posix.Warn.wcastalign"
+ category="gnu.c.compiler.category.warnings"
+ command="-Wcast-align"
+ id="gnu.c.compiler.option.warnings.wcastalign"
+ valueType="boolean">
+ </option>
+ <option
+ defaultValue="false"
+ name="%Option.Posix.Warn.wcastqual"
+ category="gnu.c.compiler.category.warnings"
+ command="-Wcast-qual"
+ id="gnu.c.compiler.option.warnings.wcastqual"
+ valueType="boolean">
+ </option>
+ <option
+ defaultValue="false"
+ name="%Option.Posix.Warn.wdisabledopt"
+ category="gnu.c.compiler.category.warnings"
+ command="-Wdisabled-optimization"
+ id="gnu.c.compiler.option.warnings.wdisabledopt"
+ valueType="boolean">
+ </option>
+ <option
+ defaultValue="false"
+ name="%Option.Posix.Warn.wlogicalop"
+ category="gnu.c.compiler.category.warnings"
+ command="-Wlogical-op"
+ id="gnu.c.compiler.option.warnings.wlogicalop"
+ valueType="boolean">
+ </option>
+ <option
+ defaultValue="false"
+ name="%Option.Posix.Warn.wmissingdecl"
+ category="gnu.c.compiler.category.warnings"
+ command="-Wmissing-declarations"
+ id="gnu.c.compiler.option.warnings.wmissingdecl"
+ valueType="boolean">
+ </option>
+ <option
+ defaultValue="false"
+ name="%Option.Posix.Warn.wmissingincdir"
+ category="gnu.c.compiler.category.warnings"
+ command="-Wmissing-include-dirs"
+ id="gnu.c.compiler.option.warnings.wmissingincdir"
+ valueType="boolean">
+ </option>
+ <option
+ defaultValue="false"
+ name="%Option.Posix.Warn.wredundantdecl"
+ category="gnu.c.compiler.category.warnings"
+ command="-Wredundant-decls"
+ id="gnu.c.compiler.option.warnings.wredundantdecl"
+ valueType="boolean">
+ </option>
+ <option
+ defaultValue="false"
+ name="%Option.Posix.Warn.wshadow"
+ category="gnu.c.compiler.category.warnings"
+ command="-Wshadow"
+ id="gnu.c.compiler.option.warnings.wshadow"
+ valueType="boolean">
+ </option>
+ <option
+ defaultValue="false"
+ name="%Option.Posix.Warn.wsignconv"
+ category="gnu.c.compiler.category.warnings"
+ command="-Wsign-conversion"
+ id="gnu.c.compiler.option.warnings.wsignconv"
+ valueType="boolean">
+ </option>
+ <option
+ defaultValue="false"
+ name="%Option.Posix.Warn.wswitchdef"
+ category="gnu.c.compiler.category.warnings"
+ command="-Wswitch-default"
+ id="gnu.c.compiler.option.warnings.wswitchdef"
+ valueType="boolean">
+ </option>
+ <option
+ defaultValue="false"
+ name="%Option.Posix.Warn.wundef"
+ category="gnu.c.compiler.category.warnings"
+ command="-Wundef"
+ id="gnu.c.compiler.option.warnings.wundef"
+ valueType="boolean">
+ </option>
+ <option
+ defaultValue="false"
+ name="%Option.Posix.Warn.wwritestring"
+ category="gnu.c.compiler.category.warnings"
+ command="-Wwrite-strings"
+ id="gnu.c.compiler.option.warnings.wwritestrings"
+ valueType="boolean">
+ </option>
+ <option
+ defaultValue="false"
+ name="%Option.Posix.Warn.wfloatequal"
+ category="gnu.c.compiler.category.warnings"
+ command="-Wfloat-equal"
+ id="gnu.c.compiler.option.warnings.wfloatequal"
+ valueType="boolean">
+ </option>
<optionCategory
owner="cdt.managedbuild.tool.gnu.c.compiler"
name="%OptionCategory.Misc"
@@ -1322,6 +1464,22 @@
name="%Option.PIC"
valueType="boolean">
</option>
+ <option
+ category="gnu.c.compiler.category.other"
+ command="-fstack-protector-all -Wformat=2 -Wformat-security -Wstrict-overflow"
+ defaultValue="false"
+ id="gnu.c.compiler.option.misc.hardening"
+ name="%Option.Security"
+ valueType="boolean">
+ </option>
+ <option
+ category="gnu.c.compiler.category.other"
+ command="-fPIE"
+ defaultValue="false"
+ id="gnu.c.compiler.option.misc.randomization"
+ name="%Option.Randomization"
+ valueType="boolean">
+ </option>
<inputType
sourceContentType="org.eclipse.cdt.core.cSource"
sources="c"
@@ -1383,10 +1541,20 @@
id="gnu.cpp.compiler.dialect.c++11">
</enumeratedOptionValue>
<enumeratedOptionValue
- name="%Option.Posix.Dialect.c++1y"
+ name="%Option.Posix.Dialect.c++14"
command="-std=c++1y"
id="gnu.cpp.compiler.dialect.c++1y">
</enumeratedOptionValue>
+ <enumeratedOptionValue
+ name="%Option.Posix.Dialect.c++17"
+ command="-std=c++17"
+ id="gnu.cpp.compiler.dialect.c++17">
+ </enumeratedOptionValue>
+ <enumeratedOptionValue
+ name="%Option.Posix.Dialect.c++2a"
+ command="-std=c++2a"
+ id="gnu.cpp.compiler.dialect.c++2a">
+ </enumeratedOptionValue>
</option>
<option
name="%Option.Posix.Dialect.Flags"
@@ -1595,6 +1763,46 @@
tip="%Option.codecovTip"
valueType="boolean">
</option>
+ <option
+ defaultValue="false"
+ name="%Option.Posix.Debug.sanitaddress"
+ category="gnu.cpp.compiler.category.debug"
+ command="-fsanitize=address"
+ id="gnu.cpp.compiler.option.debugging.sanitaddress"
+ valueType="boolean">
+ </option>
+ <option
+ defaultValue="false"
+ name="%Option.Posix.Debug.sanitpointers"
+ category="gnu.cpp.compiler.category.debug"
+ command="-fsanitize=pointer-compare -fsanitize=pointer-subtract"
+ id="gnu.cpp.compiler.option.debugging.sanitpointers"
+ valueType="boolean">
+ </option>
+ <option
+ defaultValue="false"
+ name="%Option.Posix.Debug.sanitthread"
+ category="gnu.cpp.compiler.category.debug"
+ command="-fsanitize=thread"
+ id="gnu.cpp.compiler.option.debugging.sanitthread"
+ valueType="boolean">
+ </option>
+ <option
+ defaultValue="false"
+ name="%Option.Posix.Debug.sanitleak"
+ category="gnu.cpp.compiler.category.debug"
+ command="-fsanitize=leak"
+ id="gnu.cpp.compiler.option.debugging.sanitleak"
+ valueType="boolean">
+ </option>
+ <option
+ defaultValue="false"
+ name="%Option.Posix.Debug.sanitundefined"
+ category="gnu.cpp.compiler.category.debug"
+ command="-fsanitize=undefined"
+ id="gnu.cpp.compiler.option.debugging.sanitundef"
+ valueType="boolean">
+ </option>
<optionCategory
owner="cdt.managedbuild.tool.gnu.cpp.compiler"
name="%OptionCategory.Warn"
@@ -1664,6 +1872,158 @@
id="gnu.cpp.compiler.option.warnings.wconversion"
valueType="boolean">
</option>
+ <option
+ defaultValue="false"
+ name="%Option.Posix.Warn.wcastalign"
+ category="gnu.cpp.compiler.category.warnings"
+ command="-Wcast-align"
+ id="gnu.cpp.compiler.option.warnings.wcastalign"
+ valueType="boolean">
+ </option>
+ <option
+ defaultValue="false"
+ name="%Option.Posix.Warn.wcastqual"
+ category="gnu.cpp.compiler.category.warnings"
+ command="-Wcast-qual"
+ id="gnu.cpp.compiler.option.warnings.wcastqual"
+ valueType="boolean">
+ </option>
+ <option
+ defaultValue="false"
+ name="%Option.Posix.Warn.wctordtorprivacy"
+ category="gnu.cpp.compiler.category.warnings"
+ command="-Wctor-dtor-privacy"
+ id="gnu.cpp.compiler.option.warnings.wctordtorprivacy"
+ valueType="boolean">
+ </option>
+ <option
+ defaultValue="false"
+ name="%Option.Posix.Warn.wdisabledopt"
+ category="gnu.cpp.compiler.category.warnings"
+ command="-Wdisabled-optimization"
+ id="gnu.cpp.compiler.option.warnings.wdisabledopt"
+ valueType="boolean">
+ </option>
+ <option
+ defaultValue="false"
+ name="%Option.Posix.Warn.wlogicalop"
+ category="gnu.cpp.compiler.category.warnings"
+ command="-Wlogical-op"
+ id="gnu.cpp.compiler.option.warnings.wlogicalop"
+ valueType="boolean">
+ </option>
+ <option
+ defaultValue="false"
+ name="%Option.Posix.Warn.wmissingdecl"
+ category="gnu.cpp.compiler.category.warnings"
+ command="-Wmissing-declarations"
+ id="gnu.cpp.compiler.option.warnings.wmissingdecl"
+ valueType="boolean">
+ </option>
+ <option
+ defaultValue="false"
+ name="%Option.Posix.Warn.wmissingincdir"
+ category="gnu.cpp.compiler.category.warnings"
+ command="-Wmissing-include-dirs"
+ id="gnu.cpp.compiler.option.warnings.wmissingincdir"
+ valueType="boolean">
+ </option>
+ <option
+ defaultValue="false"
+ name="%Option.Posix.Warn.wnoexccept"
+ category="gnu.cpp.compiler.category.warnings"
+ command="-Wnoexcept"
+ id="gnu.cpp.compiler.option.warnings.wnoexccept"
+ valueType="boolean">
+ </option>
+ <option
+ defaultValue="false"
+ name="%Option.Posix.Warn.woldstylecast"
+ category="gnu.cpp.compiler.category.warnings"
+ command="-Wold-style-cast"
+ id="gnu.cpp.compiler.option.warnings.woldstylecast"
+ valueType="boolean">
+ </option>
+ <option
+ defaultValue="false"
+ name="%Option.Posix.Warn.woverloadedvirtual"
+ category="gnu.cpp.compiler.category.warnings"
+ command="-Woverloaded-virtual"
+ id="gnu.cpp.compiler.option.warnings.woverloadedvirtual"
+ valueType="boolean">
+ </option>
+ <option
+ defaultValue="false"
+ name="%Option.Posix.Warn.wredundantdecl"
+ category="gnu.cpp.compiler.category.warnings"
+ command="-Wredundant-decls"
+ id="gnu.cpp.compiler.option.warnings.wredundantdecl"
+ valueType="boolean">
+ </option>
+ <option
+ defaultValue="false"
+ name="%Option.Posix.Warn.wshadow"
+ category="gnu.cpp.compiler.category.warnings"
+ command="-Wshadow"
+ id="gnu.cpp.compiler.option.warnings.wshadow"
+ valueType="boolean">
+ </option>
+ <option
+ defaultValue="false"
+ name="%Option.Posix.Warn.wsignconv"
+ category="gnu.cpp.compiler.category.warnings"
+ command="-Wsign-conversion"
+ id="gnu.cpp.compiler.option.warnings.wsignconv"
+ valueType="boolean">
+ </option>
+ <option
+ defaultValue="false"
+ name="%Option.Posix.Warn.wsignpromo"
+ category="gnu.cpp.compiler.category.warnings"
+ command="-Wsign-promo"
+ id="gnu.cpp.compiler.option.warnings.wsignpromo"
+ valueType="boolean">
+ </option>
+ <option
+ defaultValue="false"
+ name="%Option.Posix.Warn.wstrictnullsent"
+ category="gnu.cpp.compiler.category.warnings"
+ command="-Wstrict-null-sentinel"
+ id="gnu.cpp.compiler.option.warnings.wstrictnullsent"
+ valueType="boolean">
+ </option>
+ <option
+ defaultValue="false"
+ name="%Option.Posix.Warn.wswitchdef"
+ category="gnu.cpp.compiler.category.warnings"
+ command="-Wswitch-default"
+ id="gnu.cpp.compiler.option.warnings.wswitchdef"
+ valueType="boolean">
+ </option>
+ <option
+ defaultValue="false"
+ name="%Option.Posix.Warn.wundef"
+ category="gnu.cpp.compiler.category.warnings"
+ command="-Wundef"
+ id="gnu.cpp.compiler.option.warnings.wundef"
+ valueType="boolean">
+ </option>
+ <option
+ defaultValue="false"
+ name="%Option.Posix.Warn.weffcpp"
+ category="gnu.cpp.compiler.category.warnings"
+ command="-Weffc++"
+ id="gnu.cpp.compiler.option.warnings.weffcpp"
+ valueType="boolean">
+ </option>
+ <option
+ defaultValue="false"
+ name="%Option.Posix.Warn.wfloatequal"
+ category="gnu.cpp.compiler.category.warnings"
+ command="-Wfloat-equal"
+ id="gnu.cpp.compiler.option.warnings.wfloatequal"
+ valueType="boolean">
+ </option>
<optionCategory
owner="cdt.managedbuild.tool.gnu.cpp.compiler"
name="%OptionCategory.Misc"
@@ -1692,6 +2052,22 @@
name="%Option.PIC"
valueType="boolean">
</option>
+ <option
+ category="gnu.cpp.compiler.category.other"
+ command="-fstack-protector-all -Wformat=2 -Wformat-security -Wstrict-overflow"
+ defaultValue="false"
+ id="gnu.cpp.compiler.option.misc.hardening"
+ name="%Option.Security"
+ valueType="boolean">
+ </option>
+ <option
+ category="gnu.cpp.compiler.category.other"
+ command="-fPIE"
+ defaultValue="false"
+ id="gnu.cpp.compiler.option.misc.randomization"
+ name="%Option.Randomization"
+ valueType="boolean">
+ </option>
<inputType
sourceContentType="org.eclipse.cdt.core.cxxSource"
sources="c,C,cc,cxx,cpp,cp,CPP"
@@ -1790,7 +2166,7 @@
variableFormat="${=}"
isVariableCaseSensitive="true"
reservedMacroNames="ROOT,DEPS,OBJS,.*_SRCS,EXECUTABLES,SUBDIRS,LIBS,USER_OBJS,.*_INPUTS,.*_OUTPUTS"
- buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator"
+ buildfileGenerator="org.eclipse.cdt.managedbuilder.makegen.gnu2.GnuMakefileGenerator"
macroInputFileNameValue="$(notdir $&lt;)"
macroInputFileExtValue="$(suffix $(notdir $&lt;))"
macroInputFileBaseNameValue="$(basename $(notdir $&lt;))"
@@ -2148,13 +2524,11 @@
</targetPlatform>
<tool
id="cdt.managedbuild.tool.gnu.solaris.cpp.compiler.base"
- superClass="cdt.managedbuild.tool.gnu.cpp.compiler.base"
- commandLinePattern="${COMMAND} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}">
+ superClass="cdt.managedbuild.tool.gnu.cpp.compiler.base">
</tool>
<tool
id="cdt.managedbuild.tool.gnu.solaris.c.compiler.base"
- superClass="cdt.managedbuild.tool.gnu.c.compiler.base"
- commandLinePattern="${COMMAND} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}">
+ superClass="cdt.managedbuild.tool.gnu.c.compiler.base">
</tool>
<tool
id="cdt.managedbuild.tool.gnu.solaris.archiver.base"
@@ -2219,14 +2593,12 @@
<tool
id="cdt.managedbuild.tool.gnu.solaris.cpp.compiler.base"
name="%ToolName.compiler.solaris.cpp"
- superClass="cdt.managedbuild.tool.gnu.cpp.compiler.base"
- commandLinePattern="${COMMAND} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}">
+ superClass="cdt.managedbuild.tool.gnu.cpp.compiler.base">
</tool>
<tool
id="cdt.managedbuild.tool.gnu.solaris.c.compiler.base"
name="%ToolName.compiler.solaris.c"
- superClass="cdt.managedbuild.tool.gnu.c.compiler.base"
- commandLinePattern="${COMMAND} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}">
+ superClass="cdt.managedbuild.tool.gnu.c.compiler.base">
</tool>
</toolChain>
diff --git a/build/org.eclipse.cdt.managedbuilder.gnu.ui/src/org/eclipse/cdt/managedbuilder/gnu/cygwin/CygwinPathResolver.java b/build/org.eclipse.cdt.managedbuilder.gnu.ui/src/org/eclipse/cdt/managedbuilder/gnu/cygwin/CygwinPathResolver.java
index 297cd23644e..a408bc85ea1 100644
--- a/build/org.eclipse.cdt.managedbuilder.gnu.ui/src/org/eclipse/cdt/managedbuilder/gnu/cygwin/CygwinPathResolver.java
+++ b/build/org.eclipse.cdt.managedbuilder.gnu.ui/src/org/eclipse/cdt/managedbuilder/gnu/cygwin/CygwinPathResolver.java
@@ -250,7 +250,7 @@ public class CygwinPathResolver implements IBuildPathResolver {
}
} catch (IOException e) {
GnuUIPlugin.getDefault()
- .log(new Status(IStatus.ERROR, GnuUIPlugin.PLUGIN_ID, "Error executing program [" + cmd + "]", e));
+ .log(new Status(IStatus.ERROR, GnuUIPlugin.PLUGIN_ID, "Error executing program [" + cmd + "]", e)); //$NON-NLS-1$ //$NON-NLS-2$
}
return result;
}
diff --git a/build/org.eclipse.cdt.managedbuilder.headlessbuilderapp/.classpath b/build/org.eclipse.cdt.managedbuilder.headlessbuilderapp/.classpath
new file mode 100644
index 00000000000..e801ebfb468
--- /dev/null
+++ b/build/org.eclipse.cdt.managedbuilder.headlessbuilderapp/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/build/org.eclipse.cdt.managedbuilder.headlessbuilderapp/.project b/build/org.eclipse.cdt.managedbuilder.headlessbuilderapp/.project
new file mode 100644
index 00000000000..03163523d77
--- /dev/null
+++ b/build/org.eclipse.cdt.managedbuilder.headlessbuilderapp/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.cdt.managedbuilder.headlessbuilderapp</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+ </natures>
+</projectDescription>
diff --git a/build/org.eclipse.cdt.managedbuilder.headlessbuilderapp/.settings/org.eclipse.core.resources.prefs b/build/org.eclipse.cdt.managedbuilder.headlessbuilderapp/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/build/org.eclipse.cdt.managedbuilder.headlessbuilderapp/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/build/org.eclipse.cdt.managedbuilder.headlessbuilderapp/.settings/org.eclipse.jdt.core.prefs b/build/org.eclipse.cdt.managedbuilder.headlessbuilderapp/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..e3a8104f9ca
--- /dev/null
+++ b/build/org.eclipse.cdt.managedbuilder.headlessbuilderapp/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/build/org.eclipse.cdt.autotools.docs/.settings/org.eclipse.jdt.launching.prefs b/build/org.eclipse.cdt.managedbuilder.headlessbuilderapp/.settings/org.eclipse.jdt.launching.prefs
index f8a131b56e0..f8a131b56e0 100644
--- a/build/org.eclipse.cdt.autotools.docs/.settings/org.eclipse.jdt.launching.prefs
+++ b/build/org.eclipse.cdt.managedbuilder.headlessbuilderapp/.settings/org.eclipse.jdt.launching.prefs
diff --git a/build/org.eclipse.cdt.managedbuilder.headlessbuilderapp/.settings/org.eclipse.jdt.ui.prefs b/build/org.eclipse.cdt.managedbuilder.headlessbuilderapp/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/build/org.eclipse.cdt.managedbuilder.headlessbuilderapp/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/build/org.eclipse.cdt.cmake.core/.settings/org.eclipse.pde.api.tools.prefs b/build/org.eclipse.cdt.managedbuilder.headlessbuilderapp/.settings/org.eclipse.pde.api.tools.prefs
index ec9fbf321d0..ec9fbf321d0 100644
--- a/build/org.eclipse.cdt.cmake.core/.settings/org.eclipse.pde.api.tools.prefs
+++ b/build/org.eclipse.cdt.managedbuilder.headlessbuilderapp/.settings/org.eclipse.pde.api.tools.prefs
diff --git a/build/org.eclipse.cdt.cmake.core/.settings/org.eclipse.pde.prefs b/build/org.eclipse.cdt.managedbuilder.headlessbuilderapp/.settings/org.eclipse.pde.prefs
index d2dc703ba9e..d2dc703ba9e 100644
--- a/build/org.eclipse.cdt.cmake.core/.settings/org.eclipse.pde.prefs
+++ b/build/org.eclipse.cdt.managedbuilder.headlessbuilderapp/.settings/org.eclipse.pde.prefs
diff --git a/build/org.eclipse.cdt.managedbuilder.headlessbuilderapp/META-INF/MANIFEST.MF b/build/org.eclipse.cdt.managedbuilder.headlessbuilderapp/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..2b1e33067e4
--- /dev/null
+++ b/build/org.eclipse.cdt.managedbuilder.headlessbuilderapp/META-INF/MANIFEST.MF
@@ -0,0 +1,13 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.cdt.managedbuilder.headlessbuilderapp;singleton:=true
+Bundle-Version: 1.0.200.qualifier
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Require-Bundle: org.eclipse.cdt.managedbuilder.core;bundle-version="[9.2.0,10.0.0)",
+ org.eclipse.core.runtime,
+ org.eclipse.core.resources;bundle-version="[3.13.700,4.0.0)"
+Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.cdt.managedbuilder.core.headlessbuilderapp
diff --git a/build/org.eclipse.cdt.managedbuilder.headlessbuilderapp/about.html b/build/org.eclipse.cdt.managedbuilder.headlessbuilderapp/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/build/org.eclipse.cdt.managedbuilder.headlessbuilderapp/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/build/org.eclipse.cdt.managedbuilder.headlessbuilderapp/build.properties b/build/org.eclipse.cdt.managedbuilder.headlessbuilderapp/build.properties
new file mode 100644
index 00000000000..c6981b2f39f
--- /dev/null
+++ b/build/org.eclipse.cdt.managedbuilder.headlessbuilderapp/build.properties
@@ -0,0 +1,18 @@
+###############################################################################
+# Copyright (c) 2021 STMicroelectronics and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ plugin.properties,\
+ about.html
+src.includes = about.html
diff --git a/build/org.eclipse.cdt.managedbuilder.headlessbuilderapp/plugin.properties b/build/org.eclipse.cdt.managedbuilder.headlessbuilderapp/plugin.properties
new file mode 100644
index 00000000000..aa73fb1fa3f
--- /dev/null
+++ b/build/org.eclipse.cdt.managedbuilder.headlessbuilderapp/plugin.properties
@@ -0,0 +1,17 @@
+###############################################################################
+# Copyright (c) 2021 STMicroelectronics and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# STMicroelectronics - initial API and implementation
+###############################################################################
+pluginName=CDT Headless Builder Application
+providerName=Eclipse CDT
+
+extension.name.0 = CDT Headless Build \ No newline at end of file
diff --git a/build/org.eclipse.cdt.managedbuilder.headlessbuilderapp/plugin.xml b/build/org.eclipse.cdt.managedbuilder.headlessbuilderapp/plugin.xml
new file mode 100644
index 00000000000..b13b394761f
--- /dev/null
+++ b/build/org.eclipse.cdt.managedbuilder.headlessbuilderapp/plugin.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension
+ id="org.eclipse.cdt.managedbuilder.core.headlessbuild"
+ name="%extension.name.0"
+ point="org.eclipse.core.runtime.applications">
+ <application
+ cardinality="singleton-global"
+ thread="main"
+ visible="true">
+ <run
+ class="org.eclipse.cdt.managedbuilder.internal.headlessbuilderapp.HeadlessBuilderWrapper">
+ </run>
+ </application>
+ </extension>
+</plugin>
diff --git a/build/org.eclipse.cdt.managedbuilder.headlessbuilderapp/src/org/eclipse/cdt/managedbuilder/internal/headlessbuilderapp/HeadlessBuilderWrapper.java b/build/org.eclipse.cdt.managedbuilder.headlessbuilderapp/src/org/eclipse/cdt/managedbuilder/internal/headlessbuilderapp/HeadlessBuilderWrapper.java
new file mode 100644
index 00000000000..fc5e4e1ea66
--- /dev/null
+++ b/build/org.eclipse.cdt.managedbuilder.headlessbuilderapp/src/org/eclipse/cdt/managedbuilder/internal/headlessbuilderapp/HeadlessBuilderWrapper.java
@@ -0,0 +1,148 @@
+/*******************************************************************************
+ * Copyright (c) 2019, 2020 Kichwa Coders Canada Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Kichwa Coders Canada, Inc - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.managedbuilder.internal.headlessbuilderapp;
+
+import java.text.MessageFormat;
+import java.util.Arrays;
+import java.util.List;
+
+import org.eclipse.cdt.managedbuilder.internal.core.HeadlessBuilder;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.equinox.app.IApplication;
+import org.eclipse.equinox.app.IApplicationContext;
+import org.eclipse.osgi.util.NLS;
+import org.osgi.framework.BundleException;
+
+/**
+ * Wraps original {@code CodeFormatterApplication} for better error diagnostic message if user does not specify workspace location.
+ *
+ * @author Jonah Graham <jonah@kichwacoders.com>
+ * @since 1.0
+ * @noinstantiate This class is not intended to be instantiated by clients.
+ * @noextend This class is not intended to be subclassed by clients.
+ */
+public class HeadlessBuilderWrapper implements IApplication {
+ /**
+ * Deals with the messages in the properties file (cut n' pasted from a generated class).
+ */
+ private final static class Messages extends NLS {
+ private static final String BUNDLE_NAME = "org.eclipse.cdt.managedbuilder.internal.headlessbuilderapp.messages";//$NON-NLS-1$
+ public static String CommandLineUsage;
+ public static String WorkspaceRequired;
+ static {
+ NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+ }
+
+ /**
+ * Bind the given message's substitution locations with the given string values.
+ *
+ * @param message
+ * the message to be manipulated
+ * @return the manipulated String
+ */
+ public static String bind(String message) {
+ return bind(message, null);
+ }
+
+ /**
+ * Bind the given message's substitution locations with the given string values.
+ *
+ * @param message
+ * the message to be manipulated
+ * @param binding
+ * the object to be inserted into the message
+ * @return the manipulated String
+ */
+ public static String bind(String message, Object binding) {
+ return bind(message, new Object[] { binding });
+ }
+
+ /**
+ * Bind the given message's substitution locations with the given string values.
+ *
+ * @param message
+ * the message to be manipulated
+ * @param binding1
+ * An object to be inserted into the message
+ * @param binding2
+ * A second object to be inserted into the message
+ * @return the manipulated String
+ */
+ public static String bind(String message, Object binding1, Object binding2) {
+ return bind(message, new Object[] { binding1, binding2 });
+ }
+
+ /**
+ * Bind the given message's substitution locations with the given string values.
+ *
+ * @param message
+ * the message to be manipulated
+ * @param bindings
+ * An array of objects to be inserted into the message
+ * @return the manipulated String
+ */
+ public static String bind(String message, Object[] bindings) {
+ return MessageFormat.format(message, bindings);
+ }
+ }
+
+ @Override
+ public Object start(IApplicationContext context) throws Exception {
+ String[] arguments = (String[]) context.getArguments().get(IApplicationContext.APPLICATION_ARGS);
+ List<String> args = Arrays.asList(arguments);
+ if (args.isEmpty() || args.contains("-help") || args.contains("--help")) { //$NON-NLS-1$ //$NON-NLS-2$
+ showUsage(context);
+ return IApplication.EXIT_OK;
+ }
+ try {
+ // Try to see if the workspace is available. If it is not available we'll
+ // get a NoClassDefFoundError wrapping a ClassNotFoundException which
+ // has a BundleException in it, whose cause was the original
+ // IllegalStateException raised by
+ // org.eclipse.core.internal.runtime.DataArea.assertLocationInitialized()
+ ResourcesPlugin.getWorkspace();
+ } catch (NoClassDefFoundError noClassError) {
+ if (noClassError.getCause() instanceof ClassNotFoundException) {
+ ClassNotFoundException classNotFoundException = (ClassNotFoundException) noClassError.getCause();
+ if (classNotFoundException.getException() instanceof BundleException) {
+ BundleException bundleException = (BundleException) classNotFoundException.getException();
+ if (bundleException.getCause() instanceof IllegalStateException) {
+ System.err.println(Messages.bind(Messages.WorkspaceRequired));
+ showUsage(context);
+ return 1;
+ }
+ }
+ }
+ throw noClassError;
+ }
+
+ // Workspace is available, so launch the original Headless Builder
+ Object res = new HeadlessBuilder().start(context);
+ if (res == HeadlessBuilder.SHOW_USAGE) {
+ showUsage(context);
+ return HeadlessBuilder.ERROR;
+ }
+ return res;
+ }
+
+ private void showUsage(IApplicationContext context) {
+ String binaryName = System.getProperty("eclipse.launcher", "PROGRAM"); //$NON-NLS-1$ //$NON-NLS-2$
+ System.out.println(NLS.bind(Messages.CommandLineUsage, binaryName));
+ }
+
+ @Override
+ public void stop() {
+ // do nothing
+ }
+} \ No newline at end of file
diff --git a/build/org.eclipse.cdt.managedbuilder.headlessbuilderapp/src/org/eclipse/cdt/managedbuilder/internal/headlessbuilderapp/messages.properties b/build/org.eclipse.cdt.managedbuilder.headlessbuilderapp/src/org/eclipse/cdt/managedbuilder/internal/headlessbuilderapp/messages.properties
new file mode 100644
index 00000000000..3a7aedd8679
--- /dev/null
+++ b/build/org.eclipse.cdt.managedbuilder.headlessbuilderapp/src/org/eclipse/cdt/managedbuilder/internal/headlessbuilderapp/messages.properties
@@ -0,0 +1,39 @@
+###############################################################################
+# Copyright (c) 2021 STMicroelectronics and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+
+CommandLineUsage=Usage: {0} -data <workspace> -application org.eclipse.cdt.managedbuilder.core.headlessbuild [ OPTIONS ]\n\
+'\n\
+\ -data {/path/to/workspace}\n\
+\ -remove {[uri:/]/path/to/project}\n\
+\ -removeAll {[uri:/]/path/to/projectTreeURI} Remove all projects under URI\n\
+\ -import {[uri:/]/path/to/project}\n\
+\ -importAll {[uri:/]/path/to/projectTreeURI} Import all projects under URI\n\
+\ -build {project_name_reg_ex{/config_reg_ex} | all}\n\
+\ -cleanBuild {project_name_reg_ex{/config_reg_ex} | all}\n\
+\ -markerType Marker types to fail build on {all | cdt | marker_id}\n\
+\ -no-indexer Disable indexer\n\
+\ -verbose Verbose progress monitor updates\n\
+\ -printErrorMarkers Print all error markers\n\
+\ -I {include_path} additional include_path to add to tools\n\
+\ -include {include_file} additional include_file to pass to tools\n\
+\ -D {prepoc_define} addition preprocessor defines to pass to the tools\n\
+\ -E {var=value} replace/add value to environment variable when running all tools\n\
+\ -Ea {var=value} append value to environment variable when running all tools\n\
+\ -Ep {var=value} prepend value to environment variable when running all tools\n\
+\ -Er {var} remove/unset the given environment variable\n\
+\ -T {toolid} {optionid=value} replace a tool option value in each configuration built\n\
+\ -Ta {toolid} {optionid=value} append to a tool option value in each configuration built\n\
+\ -Tp {toolid} {optionid=value} prepend to a tool option value in each configuration built\n\
+\ -Tr {toolid} {optionid=value} remove a tool option value in each configuration built\n\
+\ Tool option values are parsed as a string, comma separated list of strings or a boolean based on the option''s type\n\
+'
+
+WorkspaceRequired=A workspace is required to use of the headless builder application.\n
diff --git a/build/org.eclipse.cdt.managedbuilder.ui.tests/.classpath b/build/org.eclipse.cdt.managedbuilder.ui.tests/.classpath
index eca7bdba8f0..a42a828e04a 100644
--- a/build/org.eclipse.cdt.managedbuilder.ui.tests/.classpath
+++ b/build/org.eclipse.cdt.managedbuilder.ui.tests/.classpath
@@ -1,7 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="src" path="src"/>
+ <classpathentry kind="src" path="src">
+ <attributes>
+ <attribute name="test" value="true"/>
+ </attributes>
+ </classpathentry>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/build/org.eclipse.cdt.managedbuilder.ui.tests/.settings/org.eclipse.core.resources.prefs b/build/org.eclipse.cdt.managedbuilder.ui.tests/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/build/org.eclipse.cdt.managedbuilder.ui.tests/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/build/org.eclipse.cdt.managedbuilder.ui.tests/.settings/org.eclipse.jdt.core.prefs b/build/org.eclipse.cdt.managedbuilder.ui.tests/.settings/org.eclipse.jdt.core.prefs
index ad05599159f..5b1c443114d 100644
--- a/build/org.eclipse.cdt.managedbuilder.ui.tests/.settings/org.eclipse.jdt.core.prefs
+++ b/build/org.eclipse.cdt.managedbuilder.ui.tests/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/build/org.eclipse.cdt.managedbuilder.ui.tests/.settings/org.eclipse.jdt.ui.prefs b/build/org.eclipse.cdt.managedbuilder.ui.tests/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/build/org.eclipse.cdt.managedbuilder.ui.tests/.settings/org.eclipse.jdt.ui.prefs
+++ b/build/org.eclipse.cdt.managedbuilder.ui.tests/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/build/org.eclipse.cdt.managedbuilder.ui.tests/META-INF/MANIFEST.MF b/build/org.eclipse.cdt.managedbuilder.ui.tests/META-INF/MANIFEST.MF
index f254ecc7d39..5e6fbc608dc 100644
--- a/build/org.eclipse.cdt.managedbuilder.ui.tests/META-INF/MANIFEST.MF
+++ b/build/org.eclipse.cdt.managedbuilder.ui.tests/META-INF/MANIFEST.MF
@@ -1,10 +1,10 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
-Bundle-Name: Managed Build UI Tests Plug-in
+Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.managedbuilder.ui.tests; singleton:=true
Bundle-Version: 8.2.1.qualifier
Bundle-Activator: org.eclipse.cdt.managedbuilder.ui.tests.testplugin.TestsPlugin
-Bundle-Vendor: Eclipse CDT
+Bundle-Vendor: %providerName
Bundle-Localization: plugin
Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime,
@@ -16,7 +16,7 @@ Require-Bundle: org.eclipse.ui,
org.eclipse.core.resources,
org.eclipse.cdt.managedbuilder.core.tests
Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Export-Package: org.eclipse.cdt.managedbuilder.ui.tests,
org.eclipse.cdt.managedbuilder.ui.tests.suite,
org.eclipse.cdt.managedbuilder.ui.tests.testplugin,
diff --git a/build/org.eclipse.cdt.managedbuilder.ui.tests/about.html b/build/org.eclipse.cdt.managedbuilder.ui.tests/about.html
index 164f781a8fd..b3134865230 100644
--- a/build/org.eclipse.cdt.managedbuilder.ui.tests/about.html
+++ b/build/org.eclipse.cdt.managedbuilder.ui.tests/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/build/org.eclipse.cdt.managedbuilder.ui.tests/build.properties b/build/org.eclipse.cdt.managedbuilder.ui.tests/build.properties
index ab8f20d2598..c4dee840643 100644
--- a/build/org.eclipse.cdt.managedbuilder.ui.tests/build.properties
+++ b/build/org.eclipse.cdt.managedbuilder.ui.tests/build.properties
@@ -15,6 +15,7 @@ source.. = src/
output.. = bin/
bin.includes = plugin.xml,\
.,\
+ plugin.properties,\
about.html,\
META-INF/
src.includes = about.html
diff --git a/build/org.eclipse.cdt.managedbuilder.ui.tests/plugin.properties b/build/org.eclipse.cdt.managedbuilder.ui.tests/plugin.properties
new file mode 100644
index 00000000000..d5ace30a63f
--- /dev/null
+++ b/build/org.eclipse.cdt.managedbuilder.ui.tests/plugin.properties
@@ -0,0 +1,14 @@
+##################################################################################
+# Copyright (c) 2020 Torbjörn Svensson and others. All rights reserved.
+# This program and the accompanying materials are made available under the terms
+# of the Eclipse Public License 2.0 which accompanies this distribution, and is
+# available at https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Torbjörn Svensson - initial API and implementation
+##################################################################################
+
+pluginName = Managed Build UI Tests Plug-in
+providerName = Eclipse CDT
diff --git a/build/org.eclipse.cdt.managedbuilder.ui/.classpath b/build/org.eclipse.cdt.managedbuilder.ui/.classpath
index 01836c4842f..e801ebfb468 100644
--- a/build/org.eclipse.cdt.managedbuilder.ui/.classpath
+++ b/build/org.eclipse.cdt.managedbuilder.ui/.classpath
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/build/org.eclipse.cdt.managedbuilder.ui/.settings/.api_filters b/build/org.eclipse.cdt.managedbuilder.ui/.settings/.api_filters
new file mode 100644
index 00000000000..bf30b59e2c2
--- /dev/null
+++ b/build/org.eclipse.cdt.managedbuilder.ui/.settings/.api_filters
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<component id="org.eclipse.cdt.managedbuilder.ui" version="2">
+ <resource path="src/org/eclipse/cdt/managedbuilder/ui/properties/DiscoveryTab.java" type="org.eclipse.cdt.managedbuilder.ui.properties.DiscoveryTab">
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
+ <message_arguments>
+ <message_argument value="IBuildInfoContainer"/>
+ <message_argument value="DiscoveryTab"/>
+ </message_arguments>
+ </filter>
+ </resource>
+</component>
diff --git a/build/org.eclipse.cdt.managedbuilder.ui/.settings/org.eclipse.core.resources.prefs b/build/org.eclipse.cdt.managedbuilder.ui/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/build/org.eclipse.cdt.managedbuilder.ui/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/build/org.eclipse.cdt.managedbuilder.ui/.settings/org.eclipse.jdt.core.prefs b/build/org.eclipse.cdt.managedbuilder.ui/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/build/org.eclipse.cdt.managedbuilder.ui/.settings/org.eclipse.jdt.core.prefs
+++ b/build/org.eclipse.cdt.managedbuilder.ui/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/build/org.eclipse.cdt.managedbuilder.ui/.settings/org.eclipse.jdt.ui.prefs b/build/org.eclipse.cdt.managedbuilder.ui/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/build/org.eclipse.cdt.managedbuilder.ui/.settings/org.eclipse.jdt.ui.prefs
+++ b/build/org.eclipse.cdt.managedbuilder.ui/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/build/org.eclipse.cdt.managedbuilder.ui/META-INF/MANIFEST.MF b/build/org.eclipse.cdt.managedbuilder.ui/META-INF/MANIFEST.MF
index f8f7c4b19b5..522af639b69 100644
--- a/build/org.eclipse.cdt.managedbuilder.ui/META-INF/MANIFEST.MF
+++ b/build/org.eclipse.cdt.managedbuilder.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.managedbuilder.ui; singleton:=true
-Bundle-Version: 9.1.400.qualifier
+Bundle-Version: 9.3.200.qualifier
Bundle-Activator: org.eclipse.cdt.managedbuilder.ui.properties.ManagedBuilderUIPlugin
Bundle-Vendor: %providerName
Bundle-Localization: plugin
@@ -14,17 +14,16 @@ Export-Package: org.eclipse.cdt.managedbuilder.internal.ui.commands;x-internal:=
Require-Bundle: org.eclipse.core.resources;bundle-version="[3.2.0,4.0.0)",
org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)",
org.eclipse.core.variables;bundle-version="[3.1.100,4.0.0)",
- org.eclipse.cdt.core;bundle-version="[5.0.0,7.0.0)",
+ org.eclipse.cdt.core;bundle-version="[7.0.0,8.0.0)",
org.eclipse.cdt.make.core,
org.eclipse.cdt.make.ui,
- org.eclipse.cdt.managedbuilder.core;bundle-version="[8.7.0,9.0.0)",
- org.eclipse.cdt.ui;bundle-version="[6.0.0,7.0.0)",
+ org.eclipse.cdt.managedbuilder.core;bundle-version="[9.0.0,10.0.0]",
+ org.eclipse.cdt.ui;bundle-version="[7.0.0,8.0.0)",
org.eclipse.ui;bundle-version="[3.2.0,4.0.0)",
org.eclipse.ui.console;bundle-version="[3.5.100,4.0.0)",
org.eclipse.ui.ide;bundle-version="[3.2.0,4.0.0)",
org.eclipse.ui.navigator;bundle-version="[3.2.0,4.0.0)";resolution:=optional,
org.eclipse.core.expressions
Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Import-Package: com.ibm.icu.text
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Automatic-Module-Name: org.eclipse.cdt.managedbuilder.ui
diff --git a/build/org.eclipse.cdt.managedbuilder.ui/about.html b/build/org.eclipse.cdt.managedbuilder.ui/about.html
index 164f781a8fd..b3134865230 100644
--- a/build/org.eclipse.cdt.managedbuilder.ui/about.html
+++ b/build/org.eclipse.cdt.managedbuilder.ui/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/build/org.eclipse.cdt.managedbuilder.ui/plugin.properties b/build/org.eclipse.cdt.managedbuilder.ui/plugin.properties
index 14a4812b3e0..14a4812b3e0 100755..100644
--- a/build/org.eclipse.cdt.managedbuilder.ui/plugin.properties
+++ b/build/org.eclipse.cdt.managedbuilder.ui/plugin.properties
diff --git a/build/org.eclipse.cdt.managedbuilder.ui/schema/buildDefinitionsUI.exsd b/build/org.eclipse.cdt.managedbuilder.ui/schema/buildDefinitionsUI.exsd
index d0515d1a9ac..e7a6e9941a3 100644
--- a/build/org.eclipse.cdt.managedbuilder.ui/schema/buildDefinitionsUI.exsd
+++ b/build/org.eclipse.cdt.managedbuilder.ui/schema/buildDefinitionsUI.exsd
@@ -64,7 +64,7 @@
<attribute name="class" type="string" use="required">
<annotation>
<documentation>
- Specifies the Java class which implements the custom field-editor. This class must extend JFace&apos;s &lt;code&gt;FieldEditor&lt;/code&gt; abstract class, and implement the &lt;code&gt;ICustomBuildOptionEditor&lt;/code&gt; interface.
+ Specifies the Java class which implements the custom field-editor. This class must extend JFace&apos;s &lt;code&gt;FieldEditor&lt;/code&gt; abstract class, and implement the &lt;code&gt;ICustomBuildOptionEditor2&lt;/code&gt; interface.
</documentation>
<appInfo>
<meta.attribute kind="java" basedOn="org.eclipse.jface.preference.FieldEditor:org.eclipse.cdt.managedbuilder.ui.properties.ICustomBuildOptionEditor"/>
diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/Messages.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/Messages.java
index 3a388ebe293..1832851d0f3 100644
--- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/Messages.java
+++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/Messages.java
@@ -23,6 +23,9 @@ public class Messages extends NLS {
public static String ArtifactTab_1;
public static String ArtifactTab_2;
public static String ArtifactTab_3;
+ public static String BuildBehaviourTab_Build_arguments;
+ public static String BuildBehaviourTab_Use_custom_build_arguments;
+ public static String BuildBehaviourTab_Use_standard_build_arguments;
public static String BuilderSettingsTab_0;
public static String BuilderSettingsTab_1;
public static String BuilderSettingsTab_10;
@@ -47,6 +50,7 @@ public class Messages extends NLS {
public static String BuilderSettingsTab_7;
public static String BuilderSettingsTab_8;
public static String BuilderSettingsTab_9;
+ public static String BuilderSettingsTab_Configure_Build_Arguments_In_the_Behavior_tab;
public static String BuildOptionSettingsUI_0;
public static String BuildPropertyPage_error_Unknown_tree_element;
public static String BuildStepsTab_0;
@@ -282,6 +286,10 @@ public class Messages extends NLS {
public static String WizardDefaultsTab_0;
public static String WizardDefaultsTab_1;
public static String RefreshPolicyTab_resourcesTreeLabel;
+ public static String BuilderSettingsTab_23;
+ public static String BuilderSettingsTab_24;
+ public static String BuilderSettingsTab_25;
+ public static String BuilderSettingsTab_26;
static {
// Initialize resource bundle.
diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/Messages.properties b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/Messages.properties
index 2ef411bac4d..65a03e53d28 100644
--- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/Messages.properties
+++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/Messages.properties
@@ -14,6 +14,9 @@
# Roberto Oliveira - Removed an unused message
###############################################################################
+BuildBehaviourTab_Use_custom_build_arguments=Use custom build arguments
+BuildBehaviourTab_Use_standard_build_arguments=Use standard build arguments
+BuildBehaviourTab_Build_arguments=Build arguments:\u0020
BuilderSettingsTab_0=Builder
BuilderSettingsTab_1=Builder &type:
BuilderSettingsTab_2=External builder
@@ -38,6 +41,11 @@ BuilderSettingsTab_19=Build (Incremental build)
BuilderSettingsTab_20=Clean
BuilderSettingsTab_21=Build location
BuilderSettingsTab_22=Build &directory:
+BuilderSettingsTab_23=Confirm toolchain change
+BuilderSettingsTab_24=Changing toolchain will reset all tool settings to default values. Existing settings will be unrecoverable.
+BuilderSettingsTab_25=Continue
+BuilderSettingsTab_26=Cancel
+BuilderSettingsTab_Configure_Build_Arguments_In_the_Behavior_tab=Configure build arguments in the Behavior tab.
BuildStepsTab_0=Command:
BuildStepsTab_1=Description:
BuildStepsTab_2=Pre-build steps
diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/commands/BuildConfigurationsJob.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/commands/BuildConfigurationsJob.java
index 82683d692be..b0a9dcc5ca0 100644
--- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/commands/BuildConfigurationsJob.java
+++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/commands/BuildConfigurationsJob.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010, 2014 Andrew Gvozdev and others.
+ * Copyright (c) 2010, 2020 Andrew Gvozdev and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -10,9 +10,12 @@
*
* Contributors:
* Andrew Gvozdev (Quoin Inc) - initial API and implementation
+ * Sergei Kovalchuk (NXP USA Inc)
*******************************************************************************/
package org.eclipse.cdt.managedbuilder.internal.ui.commands;
+import java.text.MessageFormat;
+
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
import org.eclipse.cdt.managedbuilder.core.IConfiguration;
import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
@@ -25,8 +28,6 @@ import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.Job;
-import com.ibm.icu.text.MessageFormat;
-
/**
* A job to build CDT build configurations.
*/
diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/commands/Messages.properties b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/commands/Messages.properties
index 7dc301b4501..7dc301b4501 100755..100644
--- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/commands/Messages.properties
+++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/commands/Messages.properties
diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/language/settings/providers/CompilationDatabaseParserOptionPage.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/language/settings/providers/CompilationDatabaseParserOptionPage.java
index 391fe05fdc8..4063eaaca25 100644
--- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/language/settings/providers/CompilationDatabaseParserOptionPage.java
+++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/language/settings/providers/CompilationDatabaseParserOptionPage.java
@@ -10,8 +10,6 @@
*******************************************************************************/
package org.eclipse.cdt.managedbuilder.internal.ui.language.settings.providers;
-import java.nio.file.Files;
-import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
@@ -23,6 +21,7 @@ import org.eclipse.cdt.managedbuilder.internal.language.settings.providers.Compi
import org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuildCommandParser;
import org.eclipse.cdt.managedbuilder.ui.properties.ManagedBuilderUIPlugin;
import org.eclipse.cdt.ui.language.settings.providers.AbstractLanguageSettingProviderOptionPage;
+import org.eclipse.cdt.ui.newui.AbstractCPropertyTab;
import org.eclipse.cdt.utils.ui.controls.ControlFactory;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
@@ -77,7 +76,7 @@ public final class CompilationDatabaseParserOptionPage extends AbstractLanguageS
private Composite createCompositeForPageArea(Composite parent) {
Composite composite = new Composite(parent, SWT.NONE);
GridLayout layout = new GridLayout();
- layout.numColumns = 2;
+ layout.numColumns = 3;
layout.marginWidth = 1;
layout.marginHeight = 1;
layout.marginRight = 1;
@@ -86,7 +85,7 @@ public final class CompilationDatabaseParserOptionPage extends AbstractLanguageS
Dialog.applyDialogFont(composite);
GridData gd = new GridData(GridData.FILL_HORIZONTAL);
- gd.horizontalSpan = 2;
+ gd.horizontalSpan = 3;
composite.setLayoutData(gd);
return composite;
}
@@ -95,12 +94,12 @@ public final class CompilationDatabaseParserOptionPage extends AbstractLanguageS
Label label = ControlFactory.createLabel(composite,
Messages.CompilationDatabaseParserOptionPage_CompileCommandsPath);
GridData gd = new GridData();
- gd.horizontalSpan = 2;
+ gd.horizontalSpan = 3;
label.setLayoutData(gd);
label.setEnabled(fEditable);
fCompileCommandsPath = ControlFactory.createTextField(composite, SWT.SINGLE | SWT.BORDER);
- String command = provider.getCompilationDataBasePath().toOSString();
+ String command = provider.getCompilationDataBasePathProperty();
fCompileCommandsPath.setText(command != null ? command : ""); //$NON-NLS-1$
fCompileCommandsPath.setEnabled(fEditable);
fCompileCommandsPath.addModifyListener(new ModifyListener() {
@@ -108,10 +107,10 @@ public final class CompilationDatabaseParserOptionPage extends AbstractLanguageS
public void modifyText(ModifyEvent e) {
String text = fCompileCommandsPath.getText();
CompilationDatabaseParser provider = (CompilationDatabaseParser) getProvider();
- if (provider.getCompilationDataBasePath() == null
- || !text.equals(provider.getCompilationDataBasePath().toOSString())) {
+ if (provider.getCompilationDataBasePathProperty() == null
+ || !text.equals(provider.getCompilationDataBasePathProperty())) {
CompilationDatabaseParser selectedProvider = (CompilationDatabaseParser) getProviderWorkingCopy();
- selectedProvider.setCompilationDataBasePath(Path.fromOSString(text));
+ selectedProvider.setCompilationDataBasePathProperty(text);
refreshItem(selectedProvider);
validate();
}
@@ -120,19 +119,33 @@ public final class CompilationDatabaseParserOptionPage extends AbstractLanguageS
}
private void createBrowseButton(Composite composite) {
- Button button = ControlFactory.createPushButton(composite, Messages.CompilationDatabaseParserOptionPage_Browse);
- button.setEnabled(fEditable);
- button.addSelectionListener(new SelectionAdapter() {
+ Button fileSystemButton = ControlFactory.createPushButton(composite,
+ Messages.CompilationDatabaseParserOptionPage_FileSystem);
+ fileSystemButton.setEnabled(fEditable);
+ fileSystemButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent evt) {
- FileDialog dialog = new FileDialog(getShell(), SWT.NONE);
+ FileDialog dialog = new FileDialog(getShell(), SWT.OPEN | SWT.SHEET);
dialog.setText(Messages.CompilationDatabaseParserOptionPage_ChooseFile);
String fileName = fCompileCommandsPath.getText();
IPath folder = new Path(fileName).removeLastSegments(1);
dialog.setFilterPath(folder.toOSString());
String chosenFile = dialog.open();
if (chosenFile != null) {
- fCompileCommandsPath.insert(chosenFile);
+ fCompileCommandsPath.setText(chosenFile);
+ }
+ }
+ });
+
+ Button variablesButton = ControlFactory.createPushButton(composite,
+ Messages.CompilationDatabaseParserOptionPage_Variables);
+ variablesButton.setEnabled(fEditable);
+ variablesButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ String result = AbstractCPropertyTab.getVariableDialog(getShell(), getConfigurationDescription());
+ if (result != null) {
+ fCompileCommandsPath.setText(result);
}
}
});
@@ -155,13 +168,13 @@ public final class CompilationDatabaseParserOptionPage extends AbstractLanguageS
Label parserLabel = ControlFactory.createLabel(composite,
Messages.CompilationDatabaseParserOptionPage_BuildParser);
GridData gd = new GridData(SWT.BEGINNING);
- gd.horizontalSpan = 2;
+ gd.horizontalSpan = 3;
parserLabel.setLayoutData(gd);
fBuildOutputParserCombo = new Combo(composite, SWT.READ_ONLY);
fBuildOutputParserCombo.setEnabled(fEditable);
gd = new GridData(GridData.FILL_HORIZONTAL);
- gd.horizontalSpan = 2;
+ gd.horizontalSpan = 3;
fBuildOutputParserCombo.setLayoutData(gd);
if (buildParsers.isEmpty()) {
fBuildOutputParserCombo.add(Messages.CompilationDatabaseParserOptionPage_NoBuildOutputParserError);
@@ -207,10 +220,11 @@ public final class CompilationDatabaseParserOptionPage extends AbstractLanguageS
Button keepExclusion = new Button(parent, SWT.CHECK);
keepExclusion.setText(Messages.CompilationDatabaseParserOptionPage_ExcludeFiles);
GridData gd = new GridData(SWT.BEGINNING);
- gd.horizontalSpan = 2;
+ gd.horizontalSpan = 3;
keepExclusion.setLayoutData(gd);
keepExclusion.setSelection(((CompilationDatabaseParser) getProvider()).getExcludeFiles());
+ keepExclusion.setEnabled(fEditable);
keepExclusion.addSelectionListener(new SelectionListener() {
@Override
@@ -238,8 +252,8 @@ public final class CompilationDatabaseParserOptionPage extends AbstractLanguageS
CompilationDatabaseParser compilationDatabaseParser = (CompilationDatabaseParser) provider;
ILanguageSettingsProvider initialProvider = providerTab.getInitialProvider(providerId);
if (!(initialProvider instanceof CompilationDatabaseParser)
- || !((CompilationDatabaseParser) initialProvider).getCompilationDataBasePath()
- .equals(compilationDatabaseParser.getCompilationDataBasePath())
+ || !((CompilationDatabaseParser) initialProvider).getCompilationDataBasePathProperty()
+ .equals(compilationDatabaseParser.getCompilationDataBasePathProperty())
|| !((CompilationDatabaseParser) initialProvider).getBuildParserId()
.equals(compilationDatabaseParser.getBuildParserId())
|| ((CompilationDatabaseParser) initialProvider).getExcludeFiles() != compilationDatabaseParser
@@ -261,10 +275,10 @@ public final class CompilationDatabaseParserOptionPage extends AbstractLanguageS
}
CompilationDatabaseParser provider = (CompilationDatabaseParser) getProvider();
- if (provider.getCompilationDataBasePath() == null || provider.getCompilationDataBasePath().isEmpty()
- || !Files.exists(Paths.get(provider.getCompilationDataBasePath().toOSString()))) {
- fStatusLine.setErrorStatus(new Status(IStatus.ERROR, ManagedBuilderUIPlugin.getUniqueIdentifier(),
- Messages.CompilationDatabaseParserOptionPage_CompileCommandsPathError));
+ try {
+ provider.resolveCompilationDataBasePath(getConfigurationDescription());
+ } catch (CoreException e) {
+ fStatusLine.setErrorStatus(e.getStatus());
return;
}
@@ -288,7 +302,7 @@ public final class CompilationDatabaseParserOptionPage extends AbstractLanguageS
@Override
public void setVisible(boolean visible) {
super.setVisible(visible);
- if (visible) {
+ if (visible && fEditable) {
validate();
}
}
diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/language/settings/providers/Messages.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/language/settings/providers/Messages.java
index 1b0d061dc91..7bd2de6cb2f 100644
--- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/language/settings/providers/Messages.java
+++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/language/settings/providers/Messages.java
@@ -14,7 +14,7 @@ import org.eclipse.osgi.util.NLS;
public class Messages extends NLS {
private static final String BUNDLE_NAME = "org.eclipse.cdt.managedbuilder.internal.ui.language.settings.providers.messages"; //$NON-NLS-1$
- public static String CompilationDatabaseParserOptionPage_Browse;
+ public static String CompilationDatabaseParserOptionPage_FileSystem;
public static String CompilationDatabaseParserOptionPage_BuildOutputParserError;
public static String CompilationDatabaseParserOptionPage_BuildParser;
public static String CompilationDatabaseParserOptionPage_ChooseFile;
@@ -22,6 +22,7 @@ public class Messages extends NLS {
public static String CompilationDatabaseParserOptionPage_CompileCommandsPathError;
public static String CompilationDatabaseParserOptionPage_ExcludeFiles;
public static String CompilationDatabaseParserOptionPage_NoBuildOutputParserError;
+ public static String CompilationDatabaseParserOptionPage_Variables;
static {
// initialize resource bundle
NLS.initializeMessages(BUNDLE_NAME, Messages.class);
diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/language/settings/providers/messages.properties b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/language/settings/providers/messages.properties
index c9657a74420..a4598825ec2 100644
--- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/language/settings/providers/messages.properties
+++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/language/settings/providers/messages.properties
@@ -9,7 +9,7 @@
# SPDX-License-Identifier: EPL-2.0
################################################################################
-CompilationDatabaseParserOptionPage_Browse=Browse...
+CompilationDatabaseParserOptionPage_FileSystem=File &System...
CompilationDatabaseParserOptionPage_BuildOutputParserError=Invalid build parser
CompilationDatabaseParserOptionPage_BuildParser=Build parser:
CompilationDatabaseParserOptionPage_ChooseFile=Choose File
@@ -17,3 +17,4 @@ CompilationDatabaseParserOptionPage_CompileCommandsPath=Compilation Database pat
CompilationDatabaseParserOptionPage_CompileCommandsPathError=Compilation Database path does not exist
CompilationDatabaseParserOptionPage_ExcludeFiles=Exclude files not in the Compilation Database
CompilationDatabaseParserOptionPage_NoBuildOutputParserError=No build output parser enabled in "Providers"
+CompilationDatabaseParserOptionPage_Variables=Variables...
diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/wizards/Messages.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/wizards/Messages.java
new file mode 100644
index 00000000000..b9c0506d206
--- /dev/null
+++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/wizards/Messages.java
@@ -0,0 +1,33 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Marc-Andre Laperle.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.managedbuilder.internal.ui.wizards;
+
+import org.eclipse.osgi.util.NLS;
+
+public class Messages extends NLS {
+ private static final String BUNDLE_NAME = "org.eclipse.cdt.managedbuilder.internal.ui.wizards.messages"; //$NON-NLS-1$
+ public static String WizardMakeProjectConversion_title;
+ public static String WizardMakeProjectConversion_description;
+ public static String WizardMakeProjectConversion_monitor_convertingToMakeProject;
+ public static String WizardMakeProjectConversion_projectOptions_title;
+ public static String WizardMakeProjectConversion_projectOptions_projectType;
+ public static String WizardMakeProjectConversion_projectOptions_projectTypeTable;
+ public static String WizardMakeProjectConversion_projectOptions_showSuppressed;
+
+ static {
+ // initialize resource bundle
+ NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+ }
+
+ private Messages() {
+ }
+}
diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/wizards/messages.properties b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/wizards/messages.properties
new file mode 100644
index 00000000000..9310ffef0fe
--- /dev/null
+++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/wizards/messages.properties
@@ -0,0 +1,18 @@
+###############################################################################
+# Copyright (c) 2020 Marc-Andre Laperle and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+
+WizardMakeProjectConversion_title=Convert to a C/C++ project
+WizardMakeProjectConversion_description=The wizard adds C/C++ Nature to the selected projects to enable C/C++ Tools Support for them.
+WizardMakeProjectConversion_monitor_convertingToMakeProject=Converting to C/C++ Project...
+WizardMakeProjectConversion_projectOptions_title=Project options
+WizardMakeProjectConversion_projectOptions_projectType=Specify project type
+WizardMakeProjectConversion_projectOptions_projectTypeTable=Project type:
+WizardMakeProjectConversion_projectOptions_showSuppressed=Show project types and toolchains only if they are supported on the platform
diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuildBehaviourTab.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuildBehaviourTab.java
index af690ef55ef..2151ada3d06 100644
--- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuildBehaviourTab.java
+++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuildBehaviourTab.java
@@ -58,8 +58,12 @@ public class BuildBehaviourTab extends AbstractCBuildPropertyTab {
private static final int SPINNER_MAX_VALUE = 10000;
private static final int SPINNER_MIN_VALUE = 2;
- private static final int TRI_STATES_SIZE = 4;
+ private static final int TRI_STATES_SIZE = 7;
// Widgets
+ private Button r_useStandardBuildArguments;
+ private Button r_useCustomBuildArguments;
+ private Text t_buildArguments;
+
//3
private Button b_stopOnError; // 3
private Button b_parallel; // 3
@@ -69,6 +73,8 @@ public class BuildBehaviourTab extends AbstractCBuildPropertyTab {
private Button b_parallelUnlimited;
private Spinner s_parallelNumber;
+ private Group grp_buildSettings;
+
private Label title2;
private Button b_autoBuild; //3
private Text t_autoBuild;
@@ -89,37 +95,35 @@ public class BuildBehaviourTab extends AbstractCBuildPropertyTab {
usercomp.setLayout(new GridLayout(1, false));
// Build setting group
- Group g3 = setupGroup(usercomp, Messages.BuilderSettingsTab_9, 2, GridData.FILL_HORIZONTAL);
+ grp_buildSettings = setupGroup(usercomp, Messages.BuilderSettingsTab_9, 2, GridData.FILL_HORIZONTAL);
GridLayout gl = new GridLayout(2, true);
gl.verticalSpacing = 0;
gl.marginWidth = 0;
- g3.setLayout(gl);
+ grp_buildSettings.setLayout(gl);
- Composite c1 = new Composite(g3, SWT.NONE);
+ r_useStandardBuildArguments = setupRadio(grp_buildSettings,
+ Messages.BuildBehaviourTab_Use_standard_build_arguments, 3, GridData.BEGINNING);
+
+ Composite c1 = new Composite(grp_buildSettings, SWT.NONE);
setupControl(c1, 1, GridData.FILL_BOTH);
GridData gd = (GridData) c1.getLayoutData();
gd.verticalSpan = 2;
gd.verticalIndent = 0;
c1.setLayoutData(gd);
gl = new GridLayout(1, false);
- gl.verticalSpacing = 0;
- gl.marginWidth = 0;
- gl.marginHeight = 0;
c1.setLayout(gl);
b_stopOnError = setupCheck(c1, Messages.BuilderSettingsTab_10, 1, GridData.BEGINNING);
+ ((GridData) (b_stopOnError.getLayoutData())).horizontalIndent = 15;
- Composite c2 = new Composite(g3, SWT.NONE);
+ Composite c2 = new Composite(grp_buildSettings, SWT.NONE);
setupControl(c2, 1, GridData.FILL_BOTH);
gl = new GridLayout(1, false);
- gl.verticalSpacing = 0;
- gl.marginWidth = 0;
- gl.marginHeight = 0;
c2.setLayout(gl);
b_parallel = setupCheck(c2, Messages.BuilderSettingsTab_EnableParallelBuild, 1, GridData.BEGINNING);
- Composite c3 = new Composite(g3, SWT.NONE);
+ Composite c3 = new Composite(grp_buildSettings, SWT.NONE);
setupControl(c3, 1, GridData.FILL_BOTH);
gl = new GridLayout(2, false);
gl.verticalSpacing = 0;
@@ -191,6 +195,24 @@ public class BuildBehaviourTab extends AbstractCBuildPropertyTab {
}
});
+ r_useCustomBuildArguments = setupRadio(grp_buildSettings, Messages.BuildBehaviourTab_Use_custom_build_arguments,
+ 3, GridData.BEGINNING);
+ Composite c0 = setupComposite(grp_buildSettings, 3, GridData.FILL_BOTH);
+ setupControl(c0, 2, GridData.FILL_BOTH);
+ setupLabel(c0, Messages.BuildBehaviourTab_Build_arguments, 1, GridData.BEGINNING);
+ t_buildArguments = setupBlock(c0, r_useCustomBuildArguments);
+ t_buildArguments.addModifyListener(new ModifyListener() {
+ @Override
+ public void modifyText(ModifyEvent e) {
+ if (!canModify)
+ return;
+ String buildArgs = t_buildArguments.getText().trim();
+ if (!buildArgs.equals(bldr.getArguments())) {
+ setArguments(buildArgs);
+ }
+ }
+ });
+
// Workbench behaviour group
AccessibleListener makeTargetLabelAccessibleListener = new AccessibleAdapter() {
@Override
@@ -240,19 +262,28 @@ public class BuildBehaviourTab extends AbstractCBuildPropertyTab {
* @return:
* Mode 0:
* 0: bld.isManagedBuildOn()
- * 1: bld.isDefaultBuildCmd()
+ * 1: N/A
* 2: bld.canKeepEnvironmentVariablesInBuildfile()
* 3: bld.keepEnvironmentVariablesInBuildfile()
+ * 4: bld.isDefaultBuildCmdOnly()
+ * 5: bld.isDefaultBuildArgsOnly()
+ * 6: !bld.isDefaultBuildArgsOnly()
* Mode 1:
* 0: isStopOnError
* 1: supportsStopOnError(true)
* 2: bld.supportsStopOnError(false)
* 3: N/A
+ * 4: N/A
+ * 5: bld.isDefaultBuildArgsOnly()
+ * 6: !bld.isDefaultBuildArgsOnly()
* Mode 2:
* 0: b.isAutoBuildEnable()
* 1: b.isIncrementalBuildEnabled()
* 2: b.isCleanBuildEnabled()
* 3: N/A
+ * 4: N/A
+ * 5: N/A
+ * 6: N/A
*/
static int[] calc3states(ICPropertyProvider p, IConfiguration mcfg, int mode) {
if (p.isMultiCfg() && mcfg instanceof ICMultiItemsHolder) {
@@ -264,17 +295,18 @@ public class BuildBehaviourTab extends AbstractCBuildPropertyTab {
int[] res = new int[TRI_STATES_SIZE];
boolean[] b = new boolean[TRI_STATES_SIZE];
b[0] = m0 ? bldr0.isManagedBuildOn() : (m1 ? bldr0.isStopOnError() : bldr0.isAutoBuildEnable());
- b[1] = m0 ? bldr0.isDefaultBuildCmd()
- : (m1 ? bldr0.supportsStopOnError(true) : bldr0.isIncrementalBuildEnabled());
+ b[1] = m0 ? true : (m1 ? bldr0.supportsStopOnError(true) : bldr0.isIncrementalBuildEnabled());
b[2] = m0 ? bldr0.canKeepEnvironmentVariablesInBuildfile()
: (m1 ? bldr0.supportsStopOnError(false) : bldr0.isCleanBuildEnabled());
b[3] = m0 ? bldr0.keepEnvironmentVariablesInBuildfile() : false;
+ b[4] = m0 ? bldr0.isDefaultBuildCmdOnly() : false;
+ b[5] = (m0 || m1) ? bldr0.isDefaultBuildArgsOnly() : false;
+ b[6] = (m0 || m1) ? !bldr0.isDefaultBuildArgsOnly() : false;
for (int i = 1; i < cfgs.length; i++) {
IBuilder bldr = cfgs[i].getBuilder();
if (b[0] != (m0 ? bldr.isManagedBuildOn() : (m1 ? bldr.isStopOnError() : bldr.isAutoBuildEnable())))
res[0] = TRI_UNKNOWN;
- if (b[1] != (m0 ? bldr.isDefaultBuildCmd()
- : (m1 ? bldr.supportsStopOnError(true) : bldr.isIncrementalBuildEnabled())))
+ if (b[1] != (m0 ? true : (m1 ? bldr.supportsStopOnError(true) : bldr.isIncrementalBuildEnabled())))
res[1] = TRI_UNKNOWN;
if (b[2] != (m0 ? bldr.canKeepEnvironmentVariablesInBuildfile()
: (m1 ? bldr.supportsStopOnError(false) : bldr.isCleanBuildEnabled())))
@@ -282,6 +314,15 @@ public class BuildBehaviourTab extends AbstractCBuildPropertyTab {
if (b[3] != (m0 ? bldr.keepEnvironmentVariablesInBuildfile() : false)) {
res[3] = TRI_UNKNOWN;
}
+ if (b[4] != (m0 ? bldr.isDefaultBuildCmdOnly() : false)) {
+ res[4] = TRI_UNKNOWN;
+ }
+ if (b[5] != ((m0 || m1) ? bldr.isDefaultBuildArgsOnly() : false)) {
+ res[5] = TRI_UNKNOWN;
+ }
+ if (b[6] != ((m0 || m1) ? !bldr.isDefaultBuildArgsOnly() : false)) {
+ res[6] = TRI_UNKNOWN;
+ }
}
for (int i = 0; i < TRI_STATES_SIZE; i++) {
if (res[i] != TRI_UNKNOWN)
@@ -301,17 +342,45 @@ public class BuildBehaviourTab extends AbstractCBuildPropertyTab {
bldr = (Builder) icfg.getEditableBuilder();
canModify = false;
int[] extStates = calc3states(page, icfg, 1);
+ boolean external = !isInternalBuilderEnabled();
+
+ // use standard build args
+ if (extStates == null) { // no extended states available
+ setTriSelection(r_useStandardBuildArguments, bldr.isDefaultBuildArgsOnly());
+ setTriSelection(r_useCustomBuildArguments, !bldr.isDefaultBuildArgsOnly());
+ } else {
+ int standardTri = extStates[5];
+ int customTri = extStates[6];
+ if (standardTri == TRI_UNKNOWN || customTri == TRI_UNKNOWN) {
+ setTriSelection(r_useStandardBuildArguments, TRI_UNKNOWN);
+ setTriSelection(r_useCustomBuildArguments, TRI_UNKNOWN);
+ } else {
+ setTriSelection(r_useStandardBuildArguments, standardTri);
+ setTriSelection(r_useCustomBuildArguments, customTri);
+ }
+ }
+ t_buildArguments.setText(nonNull(icfg.getBuildArguments()));
+ r_useStandardBuildArguments.setEnabled(external);
+ r_useCustomBuildArguments.setEnabled(external);
+ if (external) {
+ checkPressed(r_useCustomBuildArguments, false); // do not update
+ }
// Stop on error
- if (extStates != null) {
- setTriSelection(b_stopOnError, extStates[0]);
- b_stopOnError.setEnabled(extStates[1] == TRI_YES && extStates[2] == TRI_YES);
+ boolean defaultBuildArguments = bldr.isDefaultBuildArgsOnly();
+ if (defaultBuildArguments) {
+ if (extStates != null) {
+ setTriSelection(b_stopOnError, extStates[0]);
+ b_stopOnError.setEnabled(extStates[1] == TRI_YES && extStates[2] == TRI_YES);
+ } else {
+ setTriSelection(b_stopOnError, bldr.isStopOnError());
+ b_stopOnError.setEnabled(bldr.supportsStopOnError(true) && bldr.supportsStopOnError(false));
+ }
} else {
- setTriSelection(b_stopOnError, bldr.isStopOnError());
- b_stopOnError.setEnabled(bldr.supportsStopOnError(true) && bldr.supportsStopOnError(false));
+ b_stopOnError.setEnabled(defaultBuildArguments);
}
- updateParallelBlock();
+ updateParallelBlock(defaultBuildArguments);
// Build commands
extStates = calc3states(page, icfg, 2);
@@ -337,7 +406,6 @@ public class BuildBehaviourTab extends AbstractCBuildPropertyTab {
t_cmdClean.setText(bldr.getBuildAttribute(IBuilder.BUILD_TARGET_CLEAN, EMPTY_STR));
}
- boolean external = !isInternalBuilderEnabled();
title2.setVisible(external);
t_autoBuild.setVisible(external);
((Control) t_autoBuild.getData()).setVisible(external);
@@ -354,7 +422,7 @@ public class BuildBehaviourTab extends AbstractCBuildPropertyTab {
canModify = true;
}
- private void updateParallelBlock() {
+ private void updateParallelBlock(boolean defaultBuildArguments) {
// note: for multi-config selection bldr is from Active cfg
boolean isParallelSupported = bldr.supportsParallelBuild();
@@ -399,30 +467,42 @@ public class BuildBehaviourTab extends AbstractCBuildPropertyTab {
s_parallelNumber.setVisible(isParallelSupported);
if (isParallelSupported) {
- setTriSelection(b_parallel, triSelection);
- boolean isParallelSelected = b_parallel.getSelection();
-
- b_parallelOptimal
- .setText(MessageFormat.format(Messages.BuilderSettingsTab_UseOptimalJobs, optimalParallelNumber));
- b_parallelOptimal.setEnabled(isParallelSelected);
- b_parallelSpecific.setEnabled(isParallelSelected);
- b_parallelUnlimited.setEnabled(isParallelSelected);
-
- if (isParallelSelected) {
- boolean isOptimal = parallelizationNumInternal <= 0;
- boolean isUnlimited = parallelizationNumInternal == Builder.UNLIMITED_JOBS;
-
- b_parallelOptimal.setSelection(isOptimal);
- b_parallelSpecific.setSelection(!isOptimal && !isUnlimited);
- b_parallelUnlimited.setSelection(isUnlimited);
- s_parallelNumber.setEnabled(b_parallelSpecific.getEnabled() && b_parallelSpecific.getSelection());
- s_parallelNumber.setSelection(s_parallelNumber.isEnabled() ? parallelNumber : optimalParallelNumber);
+ if (defaultBuildArguments) {
+ b_parallel.setEnabled(true);
+ s_parallelNumber.setEnabled(true);
+
+ setTriSelection(b_parallel, triSelection);
+ boolean isParallelSelected = b_parallel.getSelection();
+
+ b_parallelOptimal.setText(
+ MessageFormat.format(Messages.BuilderSettingsTab_UseOptimalJobs, optimalParallelNumber));
+ b_parallelOptimal.setEnabled(isParallelSelected);
+ b_parallelSpecific.setEnabled(isParallelSelected);
+ b_parallelUnlimited.setEnabled(isParallelSelected);
+
+ if (isParallelSelected) {
+ boolean isOptimal = parallelizationNumInternal <= 0;
+ boolean isUnlimited = parallelizationNumInternal == Builder.UNLIMITED_JOBS;
+
+ b_parallelOptimal.setSelection(isOptimal);
+ b_parallelSpecific.setSelection(!isOptimal && !isUnlimited);
+ b_parallelUnlimited.setSelection(isUnlimited);
+ s_parallelNumber.setEnabled(b_parallelSpecific.getEnabled() && b_parallelSpecific.getSelection());
+ s_parallelNumber
+ .setSelection(s_parallelNumber.isEnabled() ? parallelNumber : optimalParallelNumber);
+ } else {
+ b_parallelOptimal.setSelection(true);
+ b_parallelSpecific.setSelection(false);
+ b_parallelUnlimited.setSelection(false);
+ s_parallelNumber.setEnabled(false);
+ s_parallelNumber.setSelection(optimalParallelNumber);
+ }
} else {
- b_parallelOptimal.setSelection(true);
- b_parallelSpecific.setSelection(false);
- b_parallelUnlimited.setSelection(false);
+ b_parallel.setEnabled(false);
+ b_parallelOptimal.setEnabled(false);
+ b_parallelSpecific.setEnabled(false);
+ b_parallelUnlimited.setEnabled(false);
s_parallelNumber.setEnabled(false);
- s_parallelNumber.setSelection(optimalParallelNumber);
}
}
}
@@ -527,12 +607,16 @@ public class BuildBehaviourTab extends AbstractCBuildPropertyTab {
static void copyBuilders(IBuilder b1, IBuilder b2) {
try {
- b2.setUseDefaultBuildCmd(b1.isDefaultBuildCmd());
- if (!b1.isDefaultBuildCmd()) {
+ b2.setUseDefaultBuildCmdOnly(b1.isDefaultBuildCmdOnly());
+ b2.setUseDefaultBuildArgsOnly(b1.isDefaultBuildArgsOnly());
+ if (!b1.isDefaultBuildCmdOnly()) {
b2.setCommand(b1.getCommand());
- b2.setArguments(b1.getArguments());
} else {
b2.setCommand(null);
+ }
+ if (!b1.isDefaultBuildArgsOnly()) {
+ b2.setArguments(b1.getArguments());
+ } else {
b2.setArguments(null);
}
b2.setStopOnError(b1.isStopOnError());
@@ -582,6 +666,18 @@ public class BuildBehaviourTab extends AbstractCBuildPropertyTab {
updateData(getResDesc());
}
+ private void setArguments(String makeArgs) {
+ if (icfg instanceof IMultiConfiguration) {
+ IConfiguration[] cfs = (IConfiguration[]) ((IMultiConfiguration) icfg).getItems();
+ for (int i = 0; i < cfs.length; i++) {
+ IBuilder b = cfs[i].getEditableBuilder();
+ b.setArguments(makeArgs);
+ }
+ } else {
+ icfg.getEditableBuilder().setArguments(makeArgs);
+ }
+ }
+
private void setParallelDef(boolean def) {
if (icfg instanceof Configuration)
((Configuration) icfg).setParallelDef(def);
@@ -626,7 +722,11 @@ public class BuildBehaviourTab extends AbstractCBuildPropertyTab {
IConfiguration[] cfs = (IConfiguration[]) ((IMultiConfiguration) icfg).getItems();
for (int i = 0; i < cfs.length; i++) {
IBuilder bld = cfs[i].getEditableBuilder();
- if (b == b_autoBuild) {
+ if (b == r_useStandardBuildArguments) {
+ bld.setUseDefaultBuildArgsOnly(val);
+ } else if (b == r_useCustomBuildArguments) {
+ bld.setUseDefaultBuildArgsOnly(!val);
+ } else if (b == b_autoBuild) {
bld.setAutoBuildEnable(val);
} else if (b == b_cmdBuild) {
bld.setIncrementalBuildEnable(val);
@@ -639,7 +739,11 @@ public class BuildBehaviourTab extends AbstractCBuildPropertyTab {
}
}
} else {
- if (b == b_autoBuild) {
+ if (b == r_useStandardBuildArguments) {
+ bldr.setUseDefaultBuildArgsOnly(val);
+ } else if (b == r_useCustomBuildArguments) {
+ bldr.setUseDefaultBuildArgsOnly(!val);
+ } else if (b == b_autoBuild) {
bldr.setAutoBuildEnable(val);
} else if (b == b_cmdBuild) {
bldr.setIncrementalBuildEnable(val);
@@ -655,4 +759,14 @@ public class BuildBehaviourTab extends AbstractCBuildPropertyTab {
ManagedBuilderUIPlugin.log(e);
}
}
+
+ /**
+ * Return an empty string is parameter is null
+ */
+ private String nonNull(String maybeNullString) {
+ if (maybeNullString == null) {
+ return EMPTY_STR;
+ }
+ return maybeNullString;
+ }
}
diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuildOptionSettingsUI.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuildOptionSettingsUI.java
index d20ac18b21c..991aa0d9e3e 100644
--- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuildOptionSettingsUI.java
+++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuildOptionSettingsUI.java
@@ -808,59 +808,66 @@ public class BuildOptionSettingsUI extends AbstractToolSettingUI {
changedOption = (IOption) option[1];
changedHolder = (IHoldsOptions) option[0];
try {
- switch (changedOption.getValueType()) {
- case IOption.STRING:
- if (fe instanceof StringFieldEditor) {
- String val = ((StringFieldEditor) fe).getStringValue();
- ManagedBuildManager.setOption(fInfo, changedHolder, changedOption, val);
- }
- break;
- case IOption.BOOLEAN:
- if (fe instanceof BooleanFieldEditor) {
- boolean val = ((BooleanFieldEditor) fe).getBooleanValue();
- ManagedBuildManager.setOption(fInfo, changedHolder, changedOption, val);
- }
- break;
- case IOption.ENUMERATED:
- if (fe instanceof BuildOptionComboFieldEditor) {
- String name = ((BuildOptionComboFieldEditor) fe).getSelection();
- String enumId = changedOption.getEnumeratedId(name);
- ManagedBuildManager.setOption(fInfo, changedHolder, changedOption,
- (enumId != null && enumId.length() > 0) ? enumId : name);
+ boolean saved = false;
+ if (fe instanceof ICustomBuildOptionEditor2) {
+ saved = ((ICustomBuildOptionEditor2) fe).save(fInfo, changedHolder, changedOption);
+ }
- }
- break;
- case IOption.TREE:
- if (fe instanceof TreeBrowseFieldEditor) {
- String name = ((TreeBrowseFieldEditor) fe).getStringValue();
- String treeId = changedOption.getId(name);
- ManagedBuildManager.setOption(fInfo, changedHolder, changedOption,
- (treeId != null && treeId.length() > 0) ? treeId : name);
+ if (!saved) {
+ switch (changedOption.getValueType()) {
+ case IOption.STRING:
+ if (fe instanceof StringFieldEditor) {
+ String val = ((StringFieldEditor) fe).getStringValue();
+ ManagedBuildManager.setOption(fInfo, changedHolder, changedOption, val);
+ }
+ break;
+ case IOption.BOOLEAN:
+ if (fe instanceof BooleanFieldEditor) {
+ boolean val = ((BooleanFieldEditor) fe).getBooleanValue();
+ ManagedBuildManager.setOption(fInfo, changedHolder, changedOption, val);
+ }
+ break;
+ case IOption.ENUMERATED:
+ if (fe instanceof BuildOptionComboFieldEditor) {
+ String name = ((BuildOptionComboFieldEditor) fe).getSelection();
+ String enumId = changedOption.getEnumeratedId(name);
+ ManagedBuildManager.setOption(fInfo, changedHolder, changedOption,
+ (enumId != null && enumId.length() > 0) ? enumId : name);
+ }
+ break;
+ case IOption.TREE:
+ if (fe instanceof TreeBrowseFieldEditor) {
+ String name = ((TreeBrowseFieldEditor) fe).getStringValue();
+ String treeId = changedOption.getId(name);
+ ManagedBuildManager.setOption(fInfo, changedHolder, changedOption,
+ (treeId != null && treeId.length() > 0) ? treeId : name);
+
+ }
+ break;
+ case IOption.INCLUDE_PATH:
+ case IOption.STRING_LIST:
+ case IOption.PREPROCESSOR_SYMBOLS:
+ case IOption.LIBRARIES:
+ case IOption.OBJECTS:
+ case IOption.INCLUDE_FILES:
+ case IOption.LIBRARY_PATHS:
+ case IOption.LIBRARY_FILES:
+ case IOption.MACRO_FILES:
+ case IOption.UNDEF_INCLUDE_PATH:
+ case IOption.UNDEF_PREPROCESSOR_SYMBOLS:
+ case IOption.UNDEF_INCLUDE_FILES:
+ case IOption.UNDEF_LIBRARY_PATHS:
+ case IOption.UNDEF_LIBRARY_FILES:
+ case IOption.UNDEF_MACRO_FILES:
+ if (fe instanceof FileListControlFieldEditor) {
+ String val[] = ((FileListControlFieldEditor) fe).getStringListValue();
+ ManagedBuildManager.setOption(fInfo, changedHolder, changedOption, val);
+ }
+ break;
+ default:
+ break;
}
- break;
- case IOption.INCLUDE_PATH:
- case IOption.STRING_LIST:
- case IOption.PREPROCESSOR_SYMBOLS:
- case IOption.LIBRARIES:
- case IOption.OBJECTS:
- case IOption.INCLUDE_FILES:
- case IOption.LIBRARY_PATHS:
- case IOption.LIBRARY_FILES:
- case IOption.MACRO_FILES:
- case IOption.UNDEF_INCLUDE_PATH:
- case IOption.UNDEF_PREPROCESSOR_SYMBOLS:
- case IOption.UNDEF_INCLUDE_FILES:
- case IOption.UNDEF_LIBRARY_PATHS:
- case IOption.UNDEF_LIBRARY_FILES:
- case IOption.UNDEF_MACRO_FILES:
- if (fe instanceof FileListControlFieldEditor) {
- String val[] = ((FileListControlFieldEditor) fe).getStringListValue();
- ManagedBuildManager.setOption(fInfo, changedHolder, changedOption, val);
- }
- break;
- default:
- break;
}
} catch (BuildException e) {
}
diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuildStepsTab.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuildStepsTab.java
index a5207a2dbe7..c5965880e80 100644
--- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuildStepsTab.java
+++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuildStepsTab.java
@@ -466,31 +466,44 @@ public class BuildStepsTab extends AbstractCBuildPropertyTab {
boolean prj = page.isForProject();
if (prj || tool != null) {
for (ICConfigurationDescription cf : page.getCfgsEditable()) {
- IConfiguration c = null;
- ITool t = null;
+ String s = null;
if (prj) {
- c = getCfg(cf);
+ IConfiguration c = getCfg(cf);
+ switch (field) {
+ case PRECMD:
+ s = c.getPrebuildStep();
+ break;
+ case PREANN:
+ s = c.getPreannouncebuildStep();
+ break;
+ case PSTCMD:
+ s = c.getPostbuildStep();
+ break;
+ case PSTANN:
+ s = c.getPostannouncebuildStep();
+ break;
+ }
} else {
+ ITool t = null;
ICResourceDescription r = cf.getResourceDescription(cfgdescr.getPath(), true);
if (r != null && r instanceof ICFileDescription)
t = getRcbsTool((IFileInfo) getResCfg(r));
if (t == null)
continue; // there's no specific resconfig for this configuration
- }
- String s = null;
- switch (field) {
- case PRECMD:
- s = prj ? c.getPrebuildStep() : getInputTypes(t);
- break;
- case PREANN:
- s = prj ? c.getPreannouncebuildStep() : getOutputNames(t);
- break;
- case PSTCMD:
- s = prj ? c.getPostbuildStep() : t.getToolCommand();
- break;
- case PSTANN:
- s = prj ? c.getPostannouncebuildStep() : t.getAnnouncement();
- break;
+ switch (field) {
+ case PRECMD:
+ s = getInputTypes(t);
+ break;
+ case PREANN:
+ s = getOutputNames(t);
+ break;
+ case PSTCMD:
+ s = t.getToolCommand();
+ break;
+ case PSTANN:
+ s = t.getAnnouncement();
+ break;
+ }
}
if (s != null && s.trim().length() > 0)
set.add(s.trim());
diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuilderSettingsTab.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuilderSettingsTab.java
index 569c6c6d026..f246a2c7820 100644
--- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuilderSettingsTab.java
+++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuilderSettingsTab.java
@@ -48,7 +48,7 @@ import org.eclipse.swt.widgets.Widget;
public class BuilderSettingsTab extends AbstractCBuildPropertyTab {
// Widgets
//1
- private Button b_useDefault;
+ private Button b_useDefaultBuildCommand;
private Combo c_builderType;
private Text t_buildCmd;
//2
@@ -85,25 +85,25 @@ public class BuilderSettingsTab extends AbstractCBuildPropertyTab {
}
});
- b_useDefault = setupCheck(g1, Messages.BuilderSettingsTab_4, 3, GridData.BEGINNING);
+ b_useDefaultBuildCommand = setupCheck(g1, Messages.BuilderSettingsTab_4, 3, GridData.BEGINNING);
setupLabel(g1, Messages.BuilderSettingsTab_5, 1, GridData.BEGINNING);
- t_buildCmd = setupBlock(g1, b_useDefault);
+ t_buildCmd = setupBlock(g1, b_useDefaultBuildCommand);
t_buildCmd.addModifyListener(new ModifyListener() {
@Override
public void modifyText(ModifyEvent e) {
if (!canModify)
return;
- String fullCommand = t_buildCmd.getText().trim();
- String buildCommand = parseMakeCommand(fullCommand);
- String buildArgs = fullCommand.substring(buildCommand.length()).trim();
- if (!buildCommand.equals(bldr.getCommand()) || !buildArgs.equals(bldr.getArguments())) {
+ String buildCommand = t_buildCmd.getText().trim();
+ if (!buildCommand.equals(bldr.getCommand())) {
setCommand(buildCommand);
- setArguments(buildArgs);
}
}
});
+ setupLabel(g1, Messages.BuilderSettingsTab_Configure_Build_Arguments_In_the_Behavior_tab, 2,
+ GridData.BEGINNING);
+
Group g2 = setupGroup(usercomp, Messages.BuilderSettingsTab_6, 2, GridData.FILL_HORIZONTAL);
((GridLayout) (g2.getLayout())).makeColumnsEqualWidth = true;
@@ -151,7 +151,7 @@ public class BuilderSettingsTab extends AbstractCBuildPropertyTab {
b_genMakefileAuto.setEnabled(icfg.supportsBuild(true));
if (extStates == null) { // no extended states available
BuildBehaviourTab.setTriSelection(b_genMakefileAuto, bldr.isManagedBuildOn());
- BuildBehaviourTab.setTriSelection(b_useDefault, bldr.isDefaultBuildCmd());
+ BuildBehaviourTab.setTriSelection(b_useDefaultBuildCommand, bldr.isDefaultBuildCmdOnly());
// b_expandVars.setGrayed(false);
if (!bldr.canKeepEnvironmentVariablesInBuildfile())
b_expandVars.setEnabled(false);
@@ -161,7 +161,7 @@ public class BuilderSettingsTab extends AbstractCBuildPropertyTab {
}
} else {
BuildBehaviourTab.setTriSelection(b_genMakefileAuto, extStates[0]);
- BuildBehaviourTab.setTriSelection(b_useDefault, extStates[1]);
+ BuildBehaviourTab.setTriSelection(b_useDefaultBuildCommand, extStates[4]);
if (extStates[2] != BuildBehaviourTab.TRI_YES)
b_expandVars.setEnabled(false);
else {
@@ -172,7 +172,7 @@ public class BuilderSettingsTab extends AbstractCBuildPropertyTab {
c_builderType.select(isInternalBuilderEnabled() ? 1 : 0);
c_builderType.setEnabled(canEnableInternalBuilder(true) && canEnableInternalBuilder(false));
- t_buildCmd.setText(getMakeCommand());
+ t_buildCmd.setText(nonNull(icfg.getBuildCommand()));
if (page.isMultiCfg()) {
group_dir.setVisible(false);
@@ -187,16 +187,16 @@ public class BuilderSettingsTab extends AbstractCBuildPropertyTab {
}
boolean external = (c_builderType.getSelectionIndex() == 0);
- b_useDefault.setEnabled(external);
+ b_useDefaultBuildCommand.setEnabled(external);
t_buildCmd.setEnabled(external);
- ((Control) t_buildCmd.getData()).setEnabled(external & !b_useDefault.getSelection());
+ ((Control) t_buildCmd.getData()).setEnabled(external & !b_useDefaultBuildCommand.getSelection());
b_genMakefileAuto.setEnabled(external && icfg.supportsBuild(true));
if (b_expandVars.getEnabled())
b_expandVars.setEnabled(external && b_genMakefileAuto.getSelection());
if (external) { // just set relatet text widget state,
- checkPressed(b_useDefault, false); // do not update
+ checkPressed(b_useDefaultBuildCommand, false); // do not update
}
canModify = true;
}
@@ -278,7 +278,7 @@ public class BuilderSettingsTab extends AbstractCBuildPropertyTab {
if (b.getData() instanceof Text) {
Text t = (Text) b.getData();
- if (b == b_useDefault) {
+ if (b == b_useDefaultBuildCommand) {
val = !val;
}
t.setEnabled(val);
@@ -292,7 +292,7 @@ public class BuilderSettingsTab extends AbstractCBuildPropertyTab {
if (!needUpdate)
return;
- if (b == b_useDefault) {
+ if (b == b_useDefaultBuildCommand) {
setUseDefaultBuildCmd(!val);
} else if (b == b_genMakefileAuto) {
setManagedBuild(val);
@@ -303,16 +303,13 @@ public class BuilderSettingsTab extends AbstractCBuildPropertyTab {
}
/**
- * @return make command
+ * Return an empty string is parameter is null
*/
- private String getMakeCommand() {
- String makeCommand = icfg.getBuildCommand();
- String makeArgs = icfg.getBuildArguments();
-
- if (!makeCommand.isEmpty() && makeArgs != null) {
- return makeCommand + " " + makeArgs; //$NON-NLS-1$
+ private String nonNull(String maybeNullString) {
+ if (maybeNullString == null) {
+ return EMPTY_STR;
}
- return EMPTY_STR;
+ return maybeNullString;
}
/**
@@ -332,20 +329,6 @@ public class BuilderSettingsTab extends AbstractCBuildPropertyTab {
BuildBehaviourTab.apply(src, dst, page.isMultiCfg());
}
- /* (non-Javadoc)
- *
- * @param string
- * @return
- */
- private String parseMakeCommand(String rawCommand) {
- String[] result = rawCommand.split("\\s"); //$NON-NLS-1$
- if (result != null && result.length > 0)
- return result[0];
- else
- return rawCommand;
-
- }
-
// This page can be displayed for project only
@Override
public boolean canBeVisible() {
@@ -400,10 +383,10 @@ public class BuilderSettingsTab extends AbstractCBuildPropertyTab {
for (int i = 0; i < cfs.length; i++) {
IBuilder b = cfs[i].getEditableBuilder();
if (b != null)
- b.setUseDefaultBuildCmd(val);
+ b.setUseDefaultBuildCmdOnly(val);
}
} else {
- icfg.getEditableBuilder().setUseDefaultBuildCmd(val);
+ icfg.getEditableBuilder().setUseDefaultBuildCmdOnly(val);
}
} catch (CoreException e) {
ManagedBuilderUIPlugin.log(e);
@@ -435,18 +418,6 @@ public class BuilderSettingsTab extends AbstractCBuildPropertyTab {
}
}
- private void setArguments(String makeArgs) {
- if (icfg instanceof IMultiConfiguration) {
- IConfiguration[] cfs = (IConfiguration[]) ((IMultiConfiguration) icfg).getItems();
- for (int i = 0; i < cfs.length; i++) {
- IBuilder b = cfs[i].getEditableBuilder();
- b.setArguments(makeArgs);
- }
- } else {
- icfg.getEditableBuilder().setArguments(makeArgs);
- }
- }
-
private void setBuildPath(String path) {
if (icfg instanceof IMultiConfiguration) {
IConfiguration[] cfs = (IConfiguration[]) ((IMultiConfiguration) icfg).getItems();
diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/DiscoveryTab.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/DiscoveryTab.java
index 055459411f0..87be6667330 100644
--- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/DiscoveryTab.java
+++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/DiscoveryTab.java
@@ -19,6 +19,7 @@ import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.Set;
import java.util.TreeSet;
@@ -31,7 +32,6 @@ import org.eclipse.cdt.core.language.settings.providers.ScannerDiscoveryLegacySu
import org.eclipse.cdt.core.model.util.CDTListComparator;
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
import org.eclipse.cdt.core.settings.model.ICResourceDescription;
-import org.eclipse.cdt.core.settings.model.util.CDataUtil;
import org.eclipse.cdt.internal.ui.language.settings.providers.LanguageSettingsProvidersPage;
import org.eclipse.cdt.internal.ui.newui.StatusMessageLine;
import org.eclipse.cdt.make.core.MakeCorePlugin;
@@ -734,13 +734,13 @@ public class DiscoveryTab extends AbstractCBuildPropertyTab implements IBuildInf
}
private boolean settingsEqual(IScannerConfigBuilderInfo2 info1, IScannerConfigBuilderInfo2 info2) {
- if (!CDataUtil.objectsEqual(info1.getSelectedProfileId(), info2.getSelectedProfileId()))
+ if (!Objects.equals(info1.getSelectedProfileId(), info2.getSelectedProfileId()))
return false;
- if (!CDataUtil.objectsEqual(info1.getBuildOutputFilePath(), info2.getBuildOutputFilePath()))
+ if (!Objects.equals(info1.getBuildOutputFilePath(), info2.getBuildOutputFilePath()))
return false;
- if (!CDataUtil.objectsEqual(info1.getContext(), info2.getContext()))
+ if (!Objects.equals(info1.getContext(), info2.getContext()))
return false;
- if (!CDataUtil.objectsEqual(info1.getSelectedProfileId(), info2.getSelectedProfileId()))
+ if (!Objects.equals(info1.getSelectedProfileId(), info2.getSelectedProfileId()))
return false;
if (info1.isAutoDiscoveryEnabled() != info2.isAutoDiscoveryEnabled()
|| info1.isBuildOutputFileActionEnabled() != info2.isBuildOutputFileActionEnabled()
diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/ICustomBuildOptionEditor.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/ICustomBuildOptionEditor.java
index ee7d49f25e9..0a4d7f9cb98 100644
--- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/ICustomBuildOptionEditor.java
+++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/ICustomBuildOptionEditor.java
@@ -29,6 +29,7 @@ import org.eclipse.swt.widgets.Control;
* org.eclipse.cdt.managedbuilder.core.buildDefinitions extension-point.
*
* @since 8.0
+ * @see {@link ICustomBuildOptionEditor2}
*/
public interface ICustomBuildOptionEditor {
/**
@@ -39,7 +40,7 @@ public interface ICustomBuildOptionEditor {
* for the field-editor. May be {@code null}.
* @param preferenceName the name of the preference this field editor binds to.
* @param parent the parent of the field editor's control.
- * @return {@code true} iff the custom field-editor can be successfully displayed. Returning {@code false}
+ * @return {@code true} if the custom field-editor can be successfully displayed. Returning {@code false}
* would cause the built-in field-editor to be displayed based on the option's {@link IOption#getValueType() valueType}.
*/
boolean init(IOption option, String extraArgument, String preferenceName, Composite parent);
diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/ICustomBuildOptionEditor2.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/ICustomBuildOptionEditor2.java
new file mode 100644
index 00000000000..1232f34acef
--- /dev/null
+++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/ICustomBuildOptionEditor2.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Torbjörn Svensson, and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Torbjörn Svensson - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.managedbuilder.ui.properties;
+
+import org.eclipse.cdt.managedbuilder.core.IHoldsOptions;
+import org.eclipse.cdt.managedbuilder.core.IOption;
+import org.eclipse.cdt.managedbuilder.core.IResourceInfo;
+
+/**
+ * This interface can be implemented by clients to contribute custom build-option
+ * editors to the CDT Build Settings page in the project Properties dialog.
+ *
+ * In addition to implementing this interface, the custom build-option editor class
+ * must also extend the {@link org.eclipse.jface.preference.FieldEditor} class. The
+ * custom build-option editor class should be contributed through the <fieldEditor>
+ * element of the org.eclipse.cdt.managedbuilder.ui.buildDefinitionsUI extension-point,
+ * and then referenced, by its ID, from the <option>/fieldEditorId attribute of the
+ * org.eclipse.cdt.managedbuilder.core.buildDefinitions extension-point.
+ *
+ * @since 9.3
+ */
+public interface ICustomBuildOptionEditor2 extends ICustomBuildOptionEditor {
+ /**
+ * Save the option value to the resource info
+ * Typical usage is:
+ * <code>ManagedBuildManager.setOption(resConfig, holder, option, theValue);</code>
+ *
+ * @param resConfig The resource configuration the option belongs to.
+ * @param holder The holder/parent of the option.
+ * @param option The option to set the value for.
+ * @return {@code true} if the save was successful. Returning {@code false}
+ * to fall back to generic save implementation.
+ */
+ boolean save(IResourceInfo resConfig, IHoldsOptions holder, IOption option);
+}
diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/ManagedBuilderUIPlugin.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/ManagedBuilderUIPlugin.java
index 2810036b3c5..fbdfff83436 100644
--- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/ManagedBuilderUIPlugin.java
+++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/ManagedBuilderUIPlugin.java
@@ -23,6 +23,7 @@ import org.eclipse.core.runtime.Status;
import org.eclipse.jface.dialogs.ErrorDialog;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.plugin.AbstractUIPlugin;
public class ManagedBuilderUIPlugin extends AbstractUIPlugin {
@@ -54,7 +55,7 @@ public class ManagedBuilderUIPlugin extends AbstractUIPlugin {
* Returns the active workbench window or <code>null</code> if none
*/
public static IWorkbenchWindow getActiveWorkbenchWindow() {
- return getDefault().getWorkbench().getActiveWorkbenchWindow();
+ return PlatformUI.getWorkbench().getActiveWorkbenchWindow();
}
/**
@@ -121,7 +122,7 @@ public class ManagedBuilderUIPlugin extends AbstractUIPlugin {
if (getActiveWorkbenchShell() != null) {
return getActiveWorkbenchShell();
} else {
- IWorkbenchWindow[] windows = getDefault().getWorkbench().getWorkbenchWindows();
+ IWorkbenchWindow[] windows = PlatformUI.getWorkbench().getWorkbenchWindows();
return windows[0].getShell();
}
}
diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/NewVarDialog.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/NewVarDialog.java
index 52da2e22d56..404d2ce80d4 100644
--- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/NewVarDialog.java
+++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/NewVarDialog.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2005, 2016 Intel Corporation and others.
+ * Copyright (c) 2005, 2020 Intel Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -10,9 +10,11 @@
*
* Contributors:
* Intel Corporation - Initial API and implementation
+ * Sergei Kovalchuk (NXP USA Inc)
*******************************************************************************/
package org.eclipse.cdt.managedbuilder.ui.properties;
+import java.text.Collator;
import java.util.Arrays;
import java.util.Comparator;
@@ -49,8 +51,6 @@ import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
-import com.ibm.icu.text.Collator;
-
/**
* the dialog used to create or edit the build macro
*
@@ -383,7 +383,7 @@ public class NewVarDialog extends Dialog {
private boolean macroNamesEqual(String name1, String name2) {
name1 = name1.trim();
name2 = name2.trim();
- return name1.equalsIgnoreCase(name2);
+ return name1.equals(name2);
}
/*
diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/ToolChainEditTab.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/ToolChainEditTab.java
index b1b3383c375..96539cfe806 100644
--- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/ToolChainEditTab.java
+++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/ToolChainEditTab.java
@@ -44,6 +44,7 @@ import org.eclipse.cdt.managedbuilder.tcmodification.IToolModification;
import org.eclipse.cdt.ui.CDTSharedImages;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IStatus;
+import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
@@ -113,7 +114,14 @@ public class ToolChainEditTab extends AbstractCBuildPropertyTab {
c_toolchain.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
- modifyToolchain();
+ if (MessageDialog.open(MessageDialog.WARNING, c_toolchain.getShell(), Messages.BuilderSettingsTab_23,
+ Messages.BuilderSettingsTab_24, SWT.NONE, Messages.BuilderSettingsTab_25,
+ Messages.BuilderSettingsTab_26) == MessageDialog.OK) {
+ modifyToolchain();
+ } else {
+ e.doit = false;
+ fillToolChainCombo();
+ }
}
});
c_toolchain.setEnabled(!page.isForFile());
diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/ConvertToMakeWizardPage.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/ConvertToMakeWizardPage.java
index 35f04bdaf6c..a2e266b558d 100644
--- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/ConvertToMakeWizardPage.java
+++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/ConvertToMakeWizardPage.java
@@ -20,7 +20,7 @@ import java.util.ArrayList;
import java.util.List;
import org.eclipse.cdt.core.CCProjectNature;
-import org.eclipse.cdt.make.internal.ui.MakeUIPlugin;
+import org.eclipse.cdt.managedbuilder.internal.ui.wizards.Messages;
import org.eclipse.cdt.ui.newui.AbstractPage;
import org.eclipse.cdt.ui.newui.CDTPrefUtil;
import org.eclipse.cdt.ui.newui.PageLayout;
@@ -53,9 +53,6 @@ import org.eclipse.ui.wizards.newresource.BasicNewResourceWizard;
* @noinstantiate This class is not intended to be instantiated by clients.
*/
public class ConvertToMakeWizardPage extends ConvertProjectWizardPage {
- private static final String WZ_TITLE = "WizardMakeProjectConversion.title"; //$NON-NLS-1$
- private static final String WZ_DESC = "WizardMakeProjectConversion.description"; //$NON-NLS-1$
-
/**
* @since 5.1
*/
@@ -96,14 +93,13 @@ public class ConvertToMakeWizardPage extends ConvertProjectWizardPage {
layoutData.heightHint = 200;
optionsGroup.setLayoutData(layoutData);
optionsGroup.setLayout(new GridLayout(1, true));
- optionsGroup.setText(MakeUIPlugin.getResourceString("WizardMakeProjectConversion.projectOptions.title")); //$NON-NLS-1$
+ optionsGroup.setText(Messages.WizardMakeProjectConversion_projectOptions_title);
Composite c = new Composite(optionsGroup, SWT.NONE);
c.setLayoutData(new GridData(GridData.FILL_BOTH));
c.setLayout(new GridLayout(2, true));
specifyProjectTypeButton = new Button(c, SWT.CHECK);
- specifyProjectTypeButton
- .setText(MakeUIPlugin.getResourceString("WizardMakeProjectConversion.projectOptions.projectType")); //$NON-NLS-1$
+ specifyProjectTypeButton.setText(Messages.WizardMakeProjectConversion_projectOptions_projectType);
GridData gd = new GridData(GridData.FILL_HORIZONTAL);
gd.horizontalSpan = 2;
specifyProjectTypeButton.setLayoutData(gd);
@@ -115,8 +111,7 @@ public class ConvertToMakeWizardPage extends ConvertProjectWizardPage {
});
left_label = new Label(c, SWT.NONE);
- left_label
- .setText(MakeUIPlugin.getResourceString("WizardMakeProjectConversion.projectOptions.projectTypeTable")); //$NON-NLS-1$
+ left_label.setText(Messages.WizardMakeProjectConversion_projectOptions_projectTypeTable);
left_label.setFont(container.getFont());
left_label.setLayoutData(new GridData(GridData.BEGINNING));
@@ -141,7 +136,7 @@ public class ConvertToMakeWizardPage extends ConvertProjectWizardPage {
show_sup = new Button(c, SWT.CHECK);
show_sup.setSelection(true);
- show_sup.setText(MakeUIPlugin.getResourceString("WizardMakeProjectConversion.projectOptions.showSuppressed")); //$NON-NLS-1$
+ show_sup.setText(Messages.WizardMakeProjectConversion_projectOptions_showSuppressed);
gd = new GridData(GridData.FILL_HORIZONTAL);
gd.horizontalSpan = 2;
show_sup.setLayoutData(gd);
@@ -233,7 +228,7 @@ public class ConvertToMakeWizardPage extends ConvertProjectWizardPage {
*/
@Override
protected String getWzTitleResource() {
- return MakeUIPlugin.getResourceString(WZ_TITLE);
+ return Messages.WizardMakeProjectConversion_title;
}
/**
@@ -242,7 +237,7 @@ public class ConvertToMakeWizardPage extends ConvertProjectWizardPage {
*/
@Override
protected String getWzDescriptionResource() {
- return MakeUIPlugin.getResourceString(WZ_DESC);
+ return Messages.WizardMakeProjectConversion_description;
}
/**
@@ -265,8 +260,7 @@ public class ConvertToMakeWizardPage extends ConvertProjectWizardPage {
@Override
public void convertProject(IProject project, String bsId, IProgressMonitor monitor) throws CoreException {
- monitor.beginTask(MakeUIPlugin.getResourceString("WizardMakeProjectConversion.monitor.convertingToMakeProject"), //$NON-NLS-1$
- 3);
+ monitor.beginTask(Messages.WizardMakeProjectConversion_monitor_convertingToMakeProject, 3);
try {
boolean wasCDTProject = AbstractPage.isCDTPrj(project);
super.convertProject(project, bsId, new SubProgressMonitor(monitor, 1));
@@ -280,8 +274,7 @@ public class ConvertToMakeWizardPage extends ConvertProjectWizardPage {
@Override
public void convertProject(IProject project, IProgressMonitor monitor, String projectID) throws CoreException {
- monitor.beginTask(MakeUIPlugin.getResourceString("WizardMakeProjectConversion.monitor.convertingToMakeProject"), //$NON-NLS-1$
- 3);
+ monitor.beginTask(Messages.WizardMakeProjectConversion_monitor_convertingToMakeProject, 3);
try {
boolean wasCDTProject = AbstractPage.isCDTPrj(project);
super.convertProject(project, new SubProgressMonitor(monitor, 1), projectID);
diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/MBSCustomPageData.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/MBSCustomPageData.java
index 61fdc83f44b..2cb9815e408 100644
--- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/MBSCustomPageData.java
+++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/MBSCustomPageData.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2005, 2011 Texas Instruments Incorporated and others.
+ * Copyright (c) 2005, 2020 Texas Instruments Incorporated and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -11,6 +11,7 @@
* Contributors:
* Texas Instruments - initial API and implementation
* IBM Corporation
+ * ArSysOp - rework to typed collections to fix type safety warnings
*******************************************************************************/
package org.eclipse.cdt.managedbuilder.ui.wizards;
@@ -29,11 +30,11 @@ import org.eclipse.jface.wizard.IWizardPage;
*/
public final class MBSCustomPageData {
- private Set natureSet = null;
+ private Set<String> natureSet = null;
- private Set toolchainSet = null;
+ private Set<ToolchainData> toolchainSet = null;
- private Set projectTypeSet = null;
+ private Set<String> projectTypeSet = null;
private IWizardPage wizardPage = null;
@@ -185,7 +186,7 @@ public final class MBSCustomPageData {
if (nature instanceof String) // old style
return hasNature((String) nature);
else if (nature instanceof Set) {
- Iterator it = ((Set) nature).iterator();
+ Iterator<?> it = ((Set<?>) nature).iterator();
while (it.hasNext()) {
String s = it.next().toString();
if (hasNature(s))
@@ -229,9 +230,9 @@ public final class MBSCustomPageData {
if (toolchainSet.size() == 0)
return true;
- Iterator iterator = toolchainSet.iterator();
+ Iterator<ToolchainData> iterator = toolchainSet.iterator();
while (iterator.hasNext()) {
- ToolchainData tcd = (ToolchainData) iterator.next();
+ ToolchainData tcd = iterator.next();
// look for toolchain with same id. The id in the tool-chain data should never
// contain a version suffix.
if (tcd.getId().equals(id)) {
@@ -259,12 +260,12 @@ public final class MBSCustomPageData {
ToolchainData[] tcd = new ToolchainData[toolchainSet.size()];
- Iterator iterator = toolchainSet.iterator();
+ Iterator<ToolchainData> iterator = toolchainSet.iterator();
int k = 0;
while (iterator.hasNext()) {
- tcd[k++] = (ToolchainData) iterator.next();
+ tcd[k++] = iterator.next();
}
if (tcd.length > 0)
return tcd;
@@ -303,7 +304,7 @@ public final class MBSCustomPageData {
return;
if (natureSet == null)
- natureSet = new TreeSet();
+ natureSet = new TreeSet<>();
natureSet.add(nature);
}
@@ -322,7 +323,7 @@ public final class MBSCustomPageData {
return;
if (toolchainSet == null)
- toolchainSet = new TreeSet();
+ toolchainSet = new TreeSet<>();
ToolchainData toolchainData = new ToolchainData();
toolchainData.setId(toolchainID);
@@ -350,7 +351,7 @@ public final class MBSCustomPageData {
if (projectType instanceof String)
return projectTypeSet.contains(projectType);
else if (projectType instanceof Set) {
- Iterator it = ((Set) projectType).iterator();
+ Iterator<?> it = ((Set<?>) projectType).iterator();
while (it.hasNext()) {
String s = it.next().toString();
if (projectTypeSet.contains(s))
@@ -372,7 +373,7 @@ public final class MBSCustomPageData {
return;
if (projectTypeSet == null)
- projectTypeSet = new TreeSet();
+ projectTypeSet = new TreeSet<>();
projectTypeSet.add(projectType);
}
diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/MBSCustomPageManager.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/MBSCustomPageManager.java
index 05d5fd7ef0a..43622f8efaa 100644
--- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/MBSCustomPageManager.java
+++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/MBSCustomPageManager.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2005, 2010 Texas Instruments Incorporated and others.
+ * Copyright (c) 2005, 2020 Texas Instruments Incorporated and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -12,6 +12,7 @@
* Texas Instruments - initial API and implementation
* Intel Corporation - adaptation to new project model
* IBM Corporation
+ * ArSysOp - rework to typed collections to fix type safety warnings
*******************************************************************************/
package org.eclipse.cdt.managedbuilder.ui.wizards;
@@ -105,21 +106,21 @@ public final class MBSCustomPageManager {
/**
* Maps String IDs to IWizardPages
*/
- private static Map idToPageDataMap = null;
+ private static Map<String, MBSCustomPageData> idToPageDataMap = null;
/**
* The set of pages that this manager knows about.
*/
- private static Set pageSet = null;
+ private static Set<MBSCustomPageData> pageSet = null;
/**
* Maps page IDs to the properties that page has set.
*/
- private static java.util.Map pageIDtoPagePropertiesMap = null;
+ private static Map<String, Map<String, Object>> pageIDtoPagePropertiesMap = null;
private static final String EXTENSION_POINT_ID = "org.eclipse.cdt.managedbuilder.ui.newWizardPages"; //$NON-NLS-1$
- private static List hiddenList;
+ private static List<String> hiddenList;
/**
*
@@ -293,7 +294,7 @@ public final class MBSCustomPageManager {
* @since 3.0
*/
public static MBSCustomPageData getPageData(String pageID) {
- return (MBSCustomPageData) idToPageDataMap.get(pageID);
+ return idToPageDataMap.get(pageID);
}
/**
@@ -311,10 +312,10 @@ public final class MBSCustomPageManager {
return false;
// first, find out what project type, toolchain, and nature have been set
- Map pagePropertiesMap = (Map) pageIDtoPagePropertiesMap.get(PAGE_ID);
+ Map<String, Object> pagePropertiesMap = pageIDtoPagePropertiesMap.get(PAGE_ID);
Object projectType = pagePropertiesMap.get(PROJECT_TYPE);
- List toolchainList = (List) pagePropertiesMap.get(TOOLCHAIN);
+ List<IToolChain> toolchainList = (List<IToolChain>) pagePropertiesMap.get(TOOLCHAIN);
Object nature = pagePropertiesMap.get(NATURE);
// does the page follow nature and project type constraints?
@@ -327,9 +328,9 @@ public final class MBSCustomPageManager {
// otherwise, iterate through the toolchains to see if one matches
for (int k = 0; k < toolchainData.length; k++) {
// check all toolchains, see if there is one for which we should be present
- Iterator toolchainIterator = toolchainList.iterator();
+ Iterator<IToolChain> toolchainIterator = toolchainList.iterator();
while (toolchainIterator.hasNext()) {
- IToolChain toolchain = (IToolChain) toolchainIterator.next();
+ IToolChain toolchain = toolchainIterator.next();
if (toolchain != null) {
String id = ManagedBuildManager.getIdFromIdAndVersion(toolchain.getId());
String version = ManagedBuildManager.getVersionFromIdAndVersion(toolchain.getId());
@@ -360,10 +361,10 @@ public final class MBSCustomPageManager {
* @see org.eclipse.cdt.managedbuilder.ui.wizards.MBSCustomPageManager#getPageProperty(String, String)
*/
public static void addPageProperty(String pageID, String key, Object data) {
- Map propertiesMap = (Map) pageIDtoPagePropertiesMap.get(pageID);
+ Map<String, Object> propertiesMap = pageIDtoPagePropertiesMap.get(pageID);
if (propertiesMap == null) {
- propertiesMap = new TreeMap();
+ propertiesMap = new TreeMap<>();
pageIDtoPagePropertiesMap.put(pageID, propertiesMap);
}
@@ -391,7 +392,7 @@ public final class MBSCustomPageManager {
* @since 3.0
*/
public static Object getPageProperty(String pageID, String key) {
- Map propertiesMap = (Map) pageIDtoPagePropertiesMap.get(pageID);
+ Map<String, Object> propertiesMap = pageIDtoPagePropertiesMap.get(pageID);
if (propertiesMap != null) {
return propertiesMap.get(key);
@@ -412,12 +413,12 @@ public final class MBSCustomPageManager {
public static IWizardPage getNextPage(String currentPageID) {
// find the current page in the set of pages
MBSCustomPageData pageData = getPageData(currentPageID);
- Iterator iterator = pageSet.iterator();
+ Iterator<MBSCustomPageData> iterator = pageSet.iterator();
while (iterator.hasNext()) {
if (pageData.equals(iterator.next())) {
IWizardPage nextPage = null;
while (iterator.hasNext() && nextPage == null) {
- MBSCustomPageData potentialPage = (MBSCustomPageData) iterator.next();
+ MBSCustomPageData potentialPage = iterator.next();
if (isPageVisible(potentialPage.getID()))
nextPage = potentialPage.getWizardPage();
}
@@ -455,14 +456,14 @@ public final class MBSCustomPageManager {
MBSCustomPageData pageData = getPageData(currentPageID);
MBSCustomPageData currentData = null;
- Iterator iterator = pageSet.iterator();
+ Iterator<MBSCustomPageData> iterator = pageSet.iterator();
// since Java has no concept of a reverse-iterator yet, we must keep a stack of the
// pages we have visited, so that we can get them in reverse chronological order
- Stack pageDataStack = new Stack();
+ Stack<MBSCustomPageData> pageDataStack = new Stack<>();
while (iterator.hasNext()) {
- currentData = (MBSCustomPageData) iterator.next();
+ currentData = iterator.next();
if (currentData == pageData) {
@@ -494,7 +495,7 @@ public final class MBSCustomPageManager {
// use the stack to visit the previous pages
while (pageDataStack.size() != 0 && !pageFound) {
- MBSCustomPageData potentialPage = (MBSCustomPageData) pageDataStack.pop();
+ MBSCustomPageData potentialPage = pageDataStack.pop();
if (isPageVisible(potentialPage.getID())) {
pageFound = true;
@@ -524,12 +525,12 @@ public final class MBSCustomPageManager {
public static IWizardPage[] getPages() {
IWizardPage[] pages = new IWizardPage[pageSet.size()];
- Iterator iterator = pageSet.iterator();
+ Iterator<MBSCustomPageData> iterator = pageSet.iterator();
int k = 0;
while (iterator.hasNext()) {
- MBSCustomPageData page = (MBSCustomPageData) iterator.next();
+ MBSCustomPageData page = iterator.next();
pages[k++] = page.getWizardPage();
}
@@ -548,12 +549,12 @@ public final class MBSCustomPageManager {
* @see getPages()
*/
public static IWizardPage[] getCustomPages() {
- Set customPageSet = new LinkedHashSet();
+ Set<IWizardPage> customPageSet = new LinkedHashSet<>();
- Iterator pageIterator = pageSet.iterator();
+ Iterator<MBSCustomPageData> pageIterator = pageSet.iterator();
while (pageIterator.hasNext()) {
- MBSCustomPageData page = (MBSCustomPageData) pageIterator.next();
+ MBSCustomPageData page = pageIterator.next();
if (!page.isStockPage()) {
customPageSet.add(page.getWizardPage());
@@ -561,13 +562,13 @@ public final class MBSCustomPageManager {
}
- Iterator iterator = customPageSet.iterator();
+ Iterator<IWizardPage> iterator = customPageSet.iterator();
IWizardPage[] pages = new IWizardPage[customPageSet.size()];
int k = 0;
while (iterator.hasNext()) {
- pages[k++] = (IWizardPage) iterator.next();
+ pages[k++] = iterator.next();
}
return pages;
@@ -581,12 +582,12 @@ public final class MBSCustomPageManager {
* @since 3.0
*/
public static IRunnableWithProgress[] getOperations() {
- Set operationSet = new LinkedHashSet();
+ Set<IRunnableWithProgress> operationSet = new LinkedHashSet<>();
- Iterator pageIterator = pageSet.iterator();
+ Iterator<MBSCustomPageData> pageIterator = pageSet.iterator();
while (pageIterator.hasNext()) {
- MBSCustomPageData page = (MBSCustomPageData) pageIterator.next();
+ MBSCustomPageData page = pageIterator.next();
if (!page.isStockPage() && isPageVisible(page.getID())) {
if (page.getOperation() != null) {
@@ -599,13 +600,13 @@ public final class MBSCustomPageManager {
if (operationSet.size() == 0)
return null;
- Iterator iterator = operationSet.iterator();
+ Iterator<IRunnableWithProgress> iterator = operationSet.iterator();
IRunnableWithProgress[] operations = new IRunnableWithProgress[operationSet.size()];
int k = 0;
while (iterator.hasNext()) {
- operations[k++] = (IRunnableWithProgress) iterator.next();
+ operations[k++] = iterator.next();
}
return operations;
@@ -621,10 +622,10 @@ public final class MBSCustomPageManager {
* @since 3.0
*/
public static void init() {
- idToPageDataMap = new TreeMap();
- pageIDtoPagePropertiesMap = new TreeMap();
- pageSet = new LinkedHashSet();
- hiddenList = new ArrayList();
+ idToPageDataMap = new TreeMap<>();
+ pageIDtoPagePropertiesMap = new TreeMap<>();
+ pageSet = new LinkedHashSet<>();
+ hiddenList = new ArrayList<>();
}
// singleton class - do not use
diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/MBSWizardHandler.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/MBSWizardHandler.java
index 066ba6fba3e..0af8672ff60 100644
--- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/MBSWizardHandler.java
+++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/MBSWizardHandler.java
@@ -61,6 +61,7 @@ import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.SubMonitor;
import org.eclipse.jface.operation.IRunnableWithProgress;
import org.eclipse.jface.wizard.IWizard;
import org.eclipse.jface.wizard.IWizardPage;
@@ -576,15 +577,11 @@ public class MBSWizardHandler extends CWizardHandler {
@Override
public void createProject(IProject project, boolean defaults, boolean onFinish, IProgressMonitor monitor)
throws CoreException {
- try {
- monitor.beginTask("", 100); //$NON-NLS-1$
- setProjectDescription(project, defaults, onFinish, monitor);
- doTemplatesPostProcess(project);
- doCustom(project);
- monitor.worked(30);
- } finally {
- monitor.done();
- }
+ SubMonitor subMonitor = SubMonitor.convert(monitor, 100);
+ setProjectDescription(project, defaults, onFinish, subMonitor.split(70));
+ doTemplatesPostProcess(project);
+ doCustom(project);
+ subMonitor.worked(30);
}
@Override
@@ -594,10 +591,11 @@ public class MBSWizardHandler extends CWizardHandler {
private void setProjectDescription(IProject project, boolean defaults, boolean onFinish, IProgressMonitor monitor)
throws CoreException {
+ SubMonitor subMonitor = SubMonitor.convert(monitor, 3);
ICProjectDescriptionManager mngr = CoreModel.getDefault().getProjectDescriptionManager();
ICProjectDescription des = mngr.createProjectDescription(project, false, !onFinish);
ManagedBuildInfo info = ManagedBuildManager.createBuildInfo(project);
- monitor.worked(10);
+ subMonitor.worked(1);
cfgs = getCfgItems(false);
if (cfgs == null || cfgs.length == 0)
cfgs = CDTConfigWizardPage.getDefaultCfgs(this);
@@ -609,15 +607,15 @@ public class MBSWizardHandler extends CWizardHandler {
Configuration cf = (Configuration) cfgs[0].getConfiguration();
ManagedProject mProj = new ManagedProject(project, cf.getProjectType());
info.setManagedProject(mProj);
- monitor.worked(10);
+
cfgs = CfgHolder.unique(cfgs);
cfgs = CfgHolder.reorder(cfgs);
ICConfigurationDescription cfgDebug = null;
ICConfigurationDescription cfgFirst = null;
+ subMonitor.worked(1);
- int work = 50 / cfgs.length;
-
+ SubMonitor cfgMonitor = SubMonitor.convert(subMonitor.split(1), cfgs.length);
for (CfgHolder cfg : cfgs) {
cf = (Configuration) cfg.getConfiguration();
String id = ManagedBuildManager.calculateChildId(cf.getId(), null);
@@ -640,7 +638,7 @@ public class MBSWizardHandler extends CWizardHandler {
cfgDebug = cfgDes;
if (cfgFirst == null) // select at least first configuration
cfgFirst = cfgDes;
- monitor.worked(work);
+ cfgMonitor.worked(1);
}
mngr.setProjectDescription(project, des);
}
diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/NewMakeProjFromExisting.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/NewMakeProjFromExisting.java
index ef201eb64cf..532a8259083 100644
--- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/NewMakeProjFromExisting.java
+++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/NewMakeProjFromExisting.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010, 2018 Wind River Systems and others.
+ * Copyright (c) 2010, 2020 Wind River Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -109,7 +109,7 @@ public class NewMakeProjFromExisting extends Wizard implements IImportWizard, IN
CfgHolder cfgHolder = new CfgHolder(toolChain, null);
String s = toolChain == null ? "0" : ((ToolChain) toolChain).getId(); //$NON-NLS-1$
- Configuration config = new Configuration(mProj, (ToolChain) toolChain,
+ Configuration config = new Configuration(mProj, toolChain,
ManagedBuildManager.calculateChildId(s, null), cfgHolder.getName());
IBuilder builder = config.getEditableBuilder();
builder.setManagedBuildOn(false);
diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/STDWizardHandler.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/STDWizardHandler.java
index 006b1ea217b..2b065fefe25 100644
--- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/STDWizardHandler.java
+++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/STDWizardHandler.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2018 Intel Corporation and others.
+ * Copyright (c) 2007, 2020 Intel Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -88,7 +88,7 @@ public class STDWizardHandler extends MBSWizardHandler {
int work = 50 / cfgs.length;
for (int i = 0; i < cfgs.length; i++) {
String s = (cfgs[i].getToolChain() == null) ? "0" : ((ToolChain) (cfgs[i].getToolChain())).getId(); //$NON-NLS-1$
- Configuration cfg = new Configuration(mProj, (ToolChain) cfgs[i].getToolChain(),
+ Configuration cfg = new Configuration(mProj, cfgs[i].getToolChain(),
ManagedBuildManager.calculateChildId(s, null), cfgs[i].getName());
cfgs[i].setConfiguration(cfg);
IBuilder bld = cfg.getEditableBuilder();
diff --git a/build/org.eclipse.cdt.meson-feature/.settings/org.eclipse.core.resources.prefs b/build/org.eclipse.cdt.meson-feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/build/org.eclipse.cdt.meson-feature/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/build/org.eclipse.cdt.meson-feature/feature.xml b/build/org.eclipse.cdt.meson-feature/feature.xml
index 5a9c3269387..329e7b80d84 100644
--- a/build/org.eclipse.cdt.meson-feature/feature.xml
+++ b/build/org.eclipse.cdt.meson-feature/feature.xml
@@ -1,9 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2018, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<feature
id="org.eclipse.cdt.meson"
label="%featureName"
- version="9.10.0.qualifier"
+ version="10.7.0.qualifier"
provider-name="%providerName"
+ plugin="org.eclipse.cdt.meson.ui"
license-feature="org.eclipse.license"
license-feature-version="0.0.0">
@@ -46,12 +57,4 @@
version="0.0.0"
unpack="false"/>
- <plugin
- id="org.eclipse.tools.templates.freemarker.java11"
- download-size="0"
- install-size="0"
- version="0.0.0"
- fragment="true"
- unpack="false"/>
-
</feature>
diff --git a/build/org.eclipse.cdt.meson.core/.classpath b/build/org.eclipse.cdt.meson.core/.classpath
index eca7bdba8f0..e801ebfb468 100644
--- a/build/org.eclipse.cdt.meson.core/.classpath
+++ b/build/org.eclipse.cdt.meson.core/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/build/org.eclipse.cdt.meson.core/.project b/build/org.eclipse.cdt.meson.core/.project
index 88c2a4d72fe..bc31fea93ce 100644
--- a/build/org.eclipse.cdt.meson.core/.project
+++ b/build/org.eclipse.cdt.meson.core/.project
@@ -25,9 +25,15 @@
<arguments>
</arguments>
</buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.pde.PluginNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
</natures>
</projectDescription>
diff --git a/build/org.eclipse.cdt.meson.core/.settings/org.eclipse.core.resources.prefs b/build/org.eclipse.cdt.meson.core/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/build/org.eclipse.cdt.meson.core/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/build/org.eclipse.cdt.meson.core/.settings/org.eclipse.jdt.core.prefs b/build/org.eclipse.cdt.meson.core/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/build/org.eclipse.cdt.meson.core/.settings/org.eclipse.jdt.core.prefs
+++ b/build/org.eclipse.cdt.meson.core/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/build/org.eclipse.cdt.meson.core/.settings/org.eclipse.jdt.ui.prefs b/build/org.eclipse.cdt.meson.core/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/build/org.eclipse.cdt.meson.core/.settings/org.eclipse.jdt.ui.prefs
+++ b/build/org.eclipse.cdt.meson.core/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/build/org.eclipse.cdt.meson.core/META-INF/MANIFEST.MF b/build/org.eclipse.cdt.meson.core/META-INF/MANIFEST.MF
index e055877f05c..822699dd66c 100644
--- a/build/org.eclipse.cdt.meson.core/META-INF/MANIFEST.MF
+++ b/build/org.eclipse.cdt.meson.core/META-INF/MANIFEST.MF
@@ -2,14 +2,14 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name.0
Bundle-SymbolicName: org.eclipse.cdt.meson.core;singleton:=true
-Bundle-Version: 1.0.200.qualifier
+Bundle-Version: 1.1.400.qualifier
Bundle-Activator: org.eclipse.cdt.meson.core.Activator
Bundle-Vendor: %provider
Require-Bundle: org.eclipse.core.runtime,
org.eclipse.core.resources,
org.eclipse.cdt.core;bundle-version="6.4.0",
- org.eclipse.tools.templates.freemarker
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+ org.eclipse.tools.templates.freemarker;bundle-version="1.2.200"
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-ActivationPolicy: lazy
Bundle-Localization: plugin
Import-Package: com.google.gson
diff --git a/build/org.eclipse.cdt.meson.core/about.html b/build/org.eclipse.cdt.meson.core/about.html
index 164f781a8fd..b3134865230 100644
--- a/build/org.eclipse.cdt.meson.core/about.html
+++ b/build/org.eclipse.cdt.meson.core/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/build/org.eclipse.cdt.meson.core/plugin.properties b/build/org.eclipse.cdt.meson.core/plugin.properties
index 2064aebe936..aeb955d2b82 100644
--- a/build/org.eclipse.cdt.meson.core/plugin.properties
+++ b/build/org.eclipse.cdt.meson.core/plugin.properties
@@ -1,4 +1,5 @@
edHatVendor.name = Red Hat
Bundle-Name.0 = Meson Plug-in
provider=Eclipse CDT
-extension-point.name = Meson ToolChain File Provider \ No newline at end of file
+extension-point.name = Meson ToolChain File Provider
+mesonnature.name=Meson Nature \ No newline at end of file
diff --git a/build/org.eclipse.cdt.meson.core/plugin.xml b/build/org.eclipse.cdt.meson.core/plugin.xml
index b1243ae4a85..0bb0d2fe8c2 100644
--- a/build/org.eclipse.cdt.meson.core/plugin.xml
+++ b/build/org.eclipse.cdt.meson.core/plugin.xml
@@ -4,6 +4,7 @@
<extension-point id="toolChainProvider" name="%extension-point.name" schema="schema/toolChainProvider.exsd"/>
<extension
id="mesonNature"
+ name="%mesonnature.name"
point="org.eclipse.core.resources.natures">
<runtime>
<run
diff --git a/build/org.eclipse.cdt.meson.core/src/org/eclipse/cdt/internal/meson/core/MesonBuildConfiguration.java b/build/org.eclipse.cdt.meson.core/src/org/eclipse/cdt/internal/meson/core/MesonBuildConfiguration.java
index 6e9d56bb7f4..0be025a4838 100644
--- a/build/org.eclipse.cdt.meson.core/src/org/eclipse/cdt/internal/meson/core/MesonBuildConfiguration.java
+++ b/build/org.eclipse.cdt.meson.core/src/org/eclipse/cdt/internal/meson/core/MesonBuildConfiguration.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2015, 2018 QNX Software Systems and others.
+ * Copyright (c) 2015, 2022 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -34,13 +34,13 @@ import org.eclipse.cdt.meson.core.Activator;
import org.eclipse.cdt.meson.core.IMesonConstants;
import org.eclipse.cdt.meson.core.IMesonToolChainFile;
import org.eclipse.cdt.meson.core.IMesonToolChainManager;
-import org.eclipse.cdt.utils.Platform;
import org.eclipse.core.resources.IBuildConfiguration;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.Job;
import org.osgi.service.prefs.BackingStoreException;
@@ -159,11 +159,11 @@ public class MesonBuildConfiguration extends CBuildConfiguration {
String userArgs = getProperty(IMesonConstants.MESON_ARGUMENTS);
if (userArgs != null && !userArgs.isEmpty()) {
- commandList.addAll(Arrays.asList(userArgs.split(" ")));
+ commandList.addAll(Arrays.asList(userArgs.split(" "))); //$NON-NLS-1$
}
String projOptions = getProperty(IMesonConstants.MESON_PROJECT_OPTIONS);
if (projOptions != null && !projOptions.isEmpty()) {
- commandList.addAll(Arrays.asList(projOptions.split(" ")));
+ commandList.addAll(Arrays.asList(projOptions.split(" "))); //$NON-NLS-1$
}
commandList.add(getBuildDirectory().toString());
@@ -183,7 +183,7 @@ public class MesonBuildConfiguration extends CBuildConfiguration {
return null;
}
- watchProcess(p, console);
+ watchProcess(console, monitor);
}
if (!Files.exists(buildDir.resolve("build.ninja"))) { //$NON-NLS-1$
@@ -238,7 +238,7 @@ public class MesonBuildConfiguration extends CBuildConfiguration {
return null;
}
- watchProcess(p, new IConsoleParser[] { epm });
+ watchProcess(new IConsoleParser[] { epm }, monitor);
}
project.refreshLocal(IResource.DEPTH_INFINITE, monitor);
@@ -298,7 +298,7 @@ public class MesonBuildConfiguration extends CBuildConfiguration {
return;
}
- watchProcess(p, console);
+ watchProcess(console, monitor);
}
outStream.write(String.format(Messages.MesonBuildConfiguration_BuildingComplete, buildDir.toString()));
@@ -336,6 +336,11 @@ public class MesonBuildConfiguration extends CBuildConfiguration {
try (FileReader reader = new FileReader(commandsFile.toFile())) {
Gson gson = new Gson();
CompileCommand[] commands = gson.fromJson(reader, CompileCommand[].class);
+ if (commands == null) {
+ throw new CoreException(Activator.errorStatus(
+ String.format(Messages.MesonBuildConfiguration_ProcCompCmds, project.getName()),
+ new NullPointerException(Messages.MesonBuildConfiguration_StillNull)));
+ }
Map<String, CompileCommand> dedupedCmds = new HashMap<>();
for (CompileCommand command : commands) {
dedupedCmds.put(command.getFile(), command);
diff --git a/build/org.eclipse.cdt.meson.core/src/org/eclipse/cdt/internal/meson/core/Messages.java b/build/org.eclipse.cdt.meson.core/src/org/eclipse/cdt/internal/meson/core/Messages.java
index 33ba2f73fd1..7103bfcc2dc 100644
--- a/build/org.eclipse.cdt.meson.core/src/org/eclipse/cdt/internal/meson/core/Messages.java
+++ b/build/org.eclipse.cdt.meson.core/src/org/eclipse/cdt/internal/meson/core/Messages.java
@@ -32,6 +32,8 @@ public class Messages extends NLS {
public static String MesonBuildConfiguration_ProcCompCmds;
public static String MesonBuildConfiguration_ProcCompJson;
+ public static String MesonBuildConfiguration_StillNull;
+
static {
// initialize resource bundle
NLS.initializeMessages(BUNDLE_NAME, Messages.class);
diff --git a/build/org.eclipse.cdt.meson.core/src/org/eclipse/cdt/internal/meson/core/messages.properties b/build/org.eclipse.cdt.meson.core/src/org/eclipse/cdt/internal/meson/core/messages.properties
index 2ed915078df..8aaef0b02bb 100644
--- a/build/org.eclipse.cdt.meson.core/src/org/eclipse/cdt/internal/meson/core/messages.properties
+++ b/build/org.eclipse.cdt.meson.core/src/org/eclipse/cdt/internal/meson/core/messages.properties
@@ -24,5 +24,4 @@ MesonBuildConfiguration_RunningMesonFailure=Failure running meson: %s
MesonBuildConfiguration_RunningNinjaFailure=Failure running ninja: %s
MesonBuildConfiguration_NoNinjaFileToClean=No ninja.build file so clean has nothing to do
MesonBuildConfiguration_NoNinjaFile=Meson did not create a ninja.build file so build cannot complete
-
-
+MesonBuildConfiguration_StillNull=Compilation database (usually compile_commands.json) appears to be empty
diff --git a/build/org.eclipse.cdt.meson.core/src/org/eclipse/cdt/meson/core/MesonProjectGenerator.java b/build/org.eclipse.cdt.meson.core/src/org/eclipse/cdt/meson/core/MesonProjectGenerator.java
index 6b0179c5b1c..e107c93e0bc 100644
--- a/build/org.eclipse.cdt.meson.core/src/org/eclipse/cdt/meson/core/MesonProjectGenerator.java
+++ b/build/org.eclipse.cdt.meson.core/src/org/eclipse/cdt/meson/core/MesonProjectGenerator.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2015, 2018 QNX Software Systems and others.
+ * Copyright (c) 2015, 2021 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -28,6 +28,7 @@ import org.eclipse.core.resources.IProjectDescription;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.Path;
import org.eclipse.tools.templates.freemarker.FMProjectGenerator;
import org.eclipse.tools.templates.freemarker.SourceRoot;
import org.eclipse.tools.templates.freemarker.TemplateManifest;
@@ -81,8 +82,8 @@ public class MesonProjectGenerator extends FMProjectGenerator {
}
}
- entries.add(CoreModel.newOutputEntry(buildFolder.getFullPath(), // $NON-NLS-1$
- new IPath[] {})); //$NON-NLS-1$
+ entries.add(
+ CoreModel.newOutputEntry(buildFolder.getFullPath(), new IPath[] { new Path("**/meson-private/**") })); //$NON-NLS-1$
CoreModel.getDefault().create(project).setRawPathEntries(entries.toArray(new IPathEntry[entries.size()]),
monitor);
}
diff --git a/build/org.eclipse.cdt.meson.docs/.settings/org.eclipse.core.resources.prefs b/build/org.eclipse.cdt.meson.docs/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/build/org.eclipse.cdt.meson.docs/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/build/org.eclipse.cdt.meson.docs/.settings/org.eclipse.jdt.core.prefs b/build/org.eclipse.cdt.meson.docs/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 2b6ecff8a01..00000000000
--- a/build/org.eclipse.cdt.meson.docs/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,464 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
-org.eclipse.jdt.core.codeComplete.argumentPrefixes=
-org.eclipse.jdt.core.codeComplete.argumentSuffixes=
-org.eclipse.jdt.core.codeComplete.fieldPrefixes=
-org.eclipse.jdt.core.codeComplete.fieldSuffixes=
-org.eclipse.jdt.core.codeComplete.localPrefixes=
-org.eclipse.jdt.core.codeComplete.localSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
-org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
-org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
-org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
-org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
-org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
-org.eclipse.jdt.core.compiler.problem.APILeak=warning
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
-org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
-org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
-org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
-org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
-org.eclipse.jdt.core.compiler.problem.nullReference=error
-org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
-org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
-org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
-org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
-org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
-org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
-org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
-org.eclipse.jdt.core.formatter.align_with_spaces=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
-org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
-org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
-org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
-org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=0
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
-org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
-org.eclipse.jdt.core.formatter.comment.format_block_comments=false
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
-org.eclipse.jdt.core.formatter.comment.format_line_comments=false
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
-org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
-org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
-org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.join_lines_in_comments=true
-org.eclipse.jdt.core.formatter.join_wrapped_lines=true
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=120
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_on_off_tags=true
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
-org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
-org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/build/org.eclipse.cdt.meson.docs/.settings/org.eclipse.jdt.ui.prefs b/build/org.eclipse.cdt.meson.docs/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index e44576346c4..00000000000
--- a/build/org.eclipse.cdt.meson.docs/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,133 +0,0 @@
-cleanup.add_default_serial_version_id=true
-cleanup.add_generated_serial_version_id=false
-cleanup.add_missing_annotations=true
-cleanup.add_missing_deprecated_annotations=true
-cleanup.add_missing_methods=false
-cleanup.add_missing_nls_tags=false
-cleanup.add_missing_override_annotations=true
-cleanup.add_missing_override_annotations_interface_methods=true
-cleanup.add_serial_version_id=false
-cleanup.always_use_blocks=true
-cleanup.always_use_parentheses_in_expressions=false
-cleanup.always_use_this_for_non_static_field_access=false
-cleanup.always_use_this_for_non_static_method_access=false
-cleanup.convert_functional_interfaces=false
-cleanup.convert_to_enhanced_for_loop=false
-cleanup.correct_indentation=false
-cleanup.format_source_code=true
-cleanup.format_source_code_changes_only=false
-cleanup.insert_inferred_type_arguments=false
-cleanup.make_local_variable_final=true
-cleanup.make_parameters_final=false
-cleanup.make_private_fields_final=true
-cleanup.make_type_abstract_if_missing_method=false
-cleanup.make_variable_declarations_final=false
-cleanup.never_use_blocks=false
-cleanup.never_use_parentheses_in_expressions=true
-cleanup.organize_imports=true
-cleanup.qualify_static_field_accesses_with_declaring_class=false
-cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-cleanup.qualify_static_member_accesses_with_declaring_class=false
-cleanup.qualify_static_method_accesses_with_declaring_class=false
-cleanup.remove_private_constructors=true
-cleanup.remove_redundant_modifiers=false
-cleanup.remove_redundant_semicolons=true
-cleanup.remove_redundant_type_arguments=true
-cleanup.remove_trailing_whitespaces=true
-cleanup.remove_trailing_whitespaces_all=true
-cleanup.remove_trailing_whitespaces_ignore_empty=false
-cleanup.remove_unnecessary_casts=true
-cleanup.remove_unnecessary_nls_tags=false
-cleanup.remove_unused_imports=true
-cleanup.remove_unused_local_variables=false
-cleanup.remove_unused_private_fields=true
-cleanup.remove_unused_private_members=false
-cleanup.remove_unused_private_methods=true
-cleanup.remove_unused_private_types=true
-cleanup.sort_members=false
-cleanup.sort_members_all=false
-cleanup.use_anonymous_class_creation=false
-cleanup.use_blocks=false
-cleanup.use_blocks_only_for_return_and_throw=false
-cleanup.use_lambda=true
-cleanup.use_parentheses_in_expressions=false
-cleanup.use_this_for_non_static_field_access=false
-cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-cleanup.use_this_for_non_static_method_access=false
-cleanup.use_this_for_non_static_method_access_only_if_necessary=true
-cleanup_profile=_CDT
-cleanup_settings_version=2
-eclipse.preferences.version=1
-editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=_CDT
-formatter_settings_version=14
-internal.default.compliance=user
-org.eclipse.jdt.ui.exception.name=e
-org.eclipse.jdt.ui.gettersetter.use.is=true
-org.eclipse.jdt.ui.ignorelowercasenames=true
-org.eclipse.jdt.ui.importorder=java;javax;org;com;
-org.eclipse.jdt.ui.keywordthis=false
-org.eclipse.jdt.ui.ondemandthreshold=1000
-org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.staticondemandthreshold=1000
-org.eclipse.jdt.ui.text.custom_code_templates=
-sp_cleanup.add_default_serial_version_id=true
-sp_cleanup.add_generated_serial_version_id=false
-sp_cleanup.add_missing_annotations=true
-sp_cleanup.add_missing_deprecated_annotations=true
-sp_cleanup.add_missing_methods=false
-sp_cleanup.add_missing_nls_tags=false
-sp_cleanup.add_missing_override_annotations=true
-sp_cleanup.add_missing_override_annotations_interface_methods=true
-sp_cleanup.add_serial_version_id=false
-sp_cleanup.always_use_blocks=true
-sp_cleanup.always_use_parentheses_in_expressions=false
-sp_cleanup.always_use_this_for_non_static_field_access=false
-sp_cleanup.always_use_this_for_non_static_method_access=false
-sp_cleanup.convert_functional_interfaces=false
-sp_cleanup.convert_to_enhanced_for_loop=false
-sp_cleanup.correct_indentation=false
-sp_cleanup.format_source_code=true
-sp_cleanup.format_source_code_changes_only=false
-sp_cleanup.insert_inferred_type_arguments=false
-sp_cleanup.make_local_variable_final=true
-sp_cleanup.make_parameters_final=false
-sp_cleanup.make_private_fields_final=true
-sp_cleanup.make_type_abstract_if_missing_method=false
-sp_cleanup.make_variable_declarations_final=false
-sp_cleanup.never_use_blocks=false
-sp_cleanup.never_use_parentheses_in_expressions=true
-sp_cleanup.on_save_use_additional_actions=true
-sp_cleanup.organize_imports=true
-sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
-sp_cleanup.remove_private_constructors=true
-sp_cleanup.remove_redundant_modifiers=false
-sp_cleanup.remove_redundant_semicolons=true
-sp_cleanup.remove_redundant_type_arguments=true
-sp_cleanup.remove_trailing_whitespaces=true
-sp_cleanup.remove_trailing_whitespaces_all=true
-sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
-sp_cleanup.remove_unnecessary_casts=true
-sp_cleanup.remove_unnecessary_nls_tags=false
-sp_cleanup.remove_unused_imports=true
-sp_cleanup.remove_unused_local_variables=false
-sp_cleanup.remove_unused_private_fields=true
-sp_cleanup.remove_unused_private_members=false
-sp_cleanup.remove_unused_private_methods=true
-sp_cleanup.remove_unused_private_types=true
-sp_cleanup.sort_members=false
-sp_cleanup.sort_members_all=false
-sp_cleanup.use_anonymous_class_creation=false
-sp_cleanup.use_blocks=false
-sp_cleanup.use_blocks_only_for_return_and_throw=false
-sp_cleanup.use_lambda=true
-sp_cleanup.use_parentheses_in_expressions=false
-sp_cleanup.use_this_for_non_static_field_access=false
-sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-sp_cleanup.use_this_for_non_static_method_access=false
-sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/build/org.eclipse.cdt.meson.docs/CDT/Meson/User_Guide/Updating-This-Document.html b/build/org.eclipse.cdt.meson.docs/CDT/Meson/User_Guide/Updating-This-Document.html
index c18c44a58b1..8db463650cf 100644
--- a/build/org.eclipse.cdt.meson.docs/CDT/Meson/User_Guide/Updating-This-Document.html
+++ b/build/org.eclipse.cdt.meson.docs/CDT/Meson/User_Guide/Updating-This-Document.html
@@ -28,7 +28,7 @@
<h1 id="Updating_This_Document">Updating This Document</h1>
<p>This document is maintained in a collaborative wiki. If you wish to update or modify this document please visit
- <a href="http://wiki.eclipse.org/CDT/Meson/User_Guide">http://wiki.eclipse.org/CDT/Meson/User_Guide</a>
+ <a href="https://wiki.eclipse.org/CDT/Meson/User_Guide">https://wiki.eclipse.org/CDT/Meson/User_Guide</a>
</p><hr class="navigation-separator"/>
<table class="navigation" style="width: 100%;" border="0" summary="navigation">
<tr>
diff --git a/build/org.eclipse.cdt.meson.docs/CDT/Meson/User_Guide/User-Guide.html b/build/org.eclipse.cdt.meson.docs/CDT/Meson/User_Guide/User-Guide.html
index caa7687d8dd..0049833145c 100644
--- a/build/org.eclipse.cdt.meson.docs/CDT/Meson/User_Guide/User-Guide.html
+++ b/build/org.eclipse.cdt.meson.docs/CDT/Meson/User_Guide/User-Guide.html
@@ -39,7 +39,7 @@
<p>This file tells <i>meson</i> that the project name hello is a C project and that it creates a single executable called <i>hello</i> which is formed from <i>hello.c</i>. Meson will find the C compiler, etc.. needed to build this project on this build machine.</p>
<p>Running meson in the directory containing <i>meson.build</i> will create a <i>ninja.build</i> file in the <b>build</b> directory (or specified build directory).</p>
<p>For more details see:
- <a href="http://mesonbuild.com/">http://mesonbuild.com/</a>
+ <a href="https://mesonbuild.com/">https://mesonbuild.com/</a>
</p><hr class="navigation-separator"/>
<table class="navigation" style="width: 100%;" border="0" summary="navigation">
<tr>
diff --git a/build/org.eclipse.cdt.meson.docs/META-INF/MANIFEST.MF b/build/org.eclipse.cdt.meson.docs/META-INF/MANIFEST.MF
index 4ab3988a918..92bbfcaf4aa 100644
--- a/build/org.eclipse.cdt.meson.docs/META-INF/MANIFEST.MF
+++ b/build/org.eclipse.cdt.meson.docs/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %bundleName
Bundle-SymbolicName: org.eclipse.cdt.meson.docs;singleton:=true
-Bundle-Version: 1.0.300.qualifier
+Bundle-Version: 1.0.1200.qualifier
Bundle-Vendor: %provider
Bundle-Localization: plugin
Require-Bundle: org.eclipse.help,
diff --git a/build/org.eclipse.cdt.meson.docs/about.html b/build/org.eclipse.cdt.meson.docs/about.html
index 164f781a8fd..b3134865230 100644
--- a/build/org.eclipse.cdt.meson.docs/about.html
+++ b/build/org.eclipse.cdt.meson.docs/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/build/org.eclipse.cdt.meson.docs/build-helper.xml b/build/org.eclipse.cdt.meson.docs/build-helper.xml
index bfa7504a91b..d013909f9a3 100644
--- a/build/org.eclipse.cdt.meson.docs/build-helper.xml
+++ b/build/org.eclipse.cdt.meson.docs/build-helper.xml
@@ -29,7 +29,7 @@
= Updating This Document =
This document is maintained in a collaborative wiki. If you wish to update or modify this document please visit
-http://wiki.eclipse.org/CDT/Meson/User_Guide
+https://wiki.eclipse.org/CDT/Meson/User_Guide
</pageAppendum>
</mediawiki-to-eclipse-help>
<replace file="CDT/Meson/User_Guide/User-Guide.html" token="{{#eclipseproject:tools.cdt}}" value=""/>
diff --git a/build/org.eclipse.cdt.meson.docs/build-index.xml b/build/org.eclipse.cdt.meson.docs/build-index.xml
index 717f473343c..23a8bf4de53 100644
--- a/build/org.eclipse.cdt.meson.docs/build-index.xml
+++ b/build/org.eclipse.cdt.meson.docs/build-index.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
- Copyright (c) 2012 Marc-Andre Laperle, Inc. and others
+ Copyright (c) 2012 Marc-Andre Laperle and others
This program and the accompanying materials
are made available under the terms of the Eclipse Public License 2.0
which accompanies this distribution, and is available at
diff --git a/build/org.eclipse.cdt.meson.docs/pom.xml b/build/org.eclipse.cdt.meson.docs/pom.xml
index 401049e2779..a9bdfa9dc24 100644
--- a/build/org.eclipse.cdt.meson.docs/pom.xml
+++ b/build/org.eclipse.cdt.meson.docs/pom.xml
@@ -1,4 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2018, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
@@ -7,14 +17,33 @@
<parent>
<groupId>org.eclipse.cdt</groupId>
<artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
+ <version>10.7.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
- <version>1.0.300-SNAPSHOT</version>
+ <version>1.0.1200-SNAPSHOT</version>
<artifactId>org.eclipse.cdt.meson.docs</artifactId>
<packaging>eclipse-plugin</packaging>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-source-plugin</artifactId>
+ <version>${tycho-version}</version>
+ <executions>
+ <execution>
+ <id>plugin-source</id>
+ <phase>none</phase>
+ </execution>
+ <execution>
+ <id>attach-source</id>
+ <phase>none</phase>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
<profiles>
<profile>
<id>build-doc</id>
@@ -28,7 +57,7 @@
<plugin>
<groupId>org.eclipse.tycho.extras</groupId>
<artifactId>tycho-eclipserun-plugin</artifactId>
- <version>${tycho-extras-version}</version>
+ <version>${tycho-version}</version>
<configuration>
<appArgLine>-application org.eclipse.ant.core.antRunner -buildfile build-index.xml build.index</appArgLine>
<dependencies>
@@ -104,7 +133,6 @@
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.8</version>
<executions>
<execution>
<phase>compile</phase>
diff --git a/build/org.eclipse.cdt.meson.ui.editor/.classpath b/build/org.eclipse.cdt.meson.ui.editor/.classpath
index 075009d7745..edc8895124d 100644
--- a/build/org.eclipse.cdt.meson.ui.editor/.classpath
+++ b/build/org.eclipse.cdt.meson.ui.editor/.classpath
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src/"/>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/build/org.eclipse.cdt.meson.ui.editor/.project b/build/org.eclipse.cdt.meson.ui.editor/.project
index da493162cda..0ee660f0e86 100644
--- a/build/org.eclipse.cdt.meson.ui.editor/.project
+++ b/build/org.eclipse.cdt.meson.ui.editor/.project
@@ -20,9 +20,15 @@
<arguments>
</arguments>
</buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.pde.PluginNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
</natures>
</projectDescription>
diff --git a/build/org.eclipse.cdt.meson.ui.editor/.settings/org.eclipse.core.resources.prefs b/build/org.eclipse.cdt.meson.ui.editor/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/build/org.eclipse.cdt.meson.ui.editor/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/build/org.eclipse.cdt.meson.ui.editor/.settings/org.eclipse.jdt.core.prefs b/build/org.eclipse.cdt.meson.ui.editor/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/build/org.eclipse.cdt.meson.ui.editor/.settings/org.eclipse.jdt.core.prefs
+++ b/build/org.eclipse.cdt.meson.ui.editor/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/build/org.eclipse.cdt.meson.ui.editor/.settings/org.eclipse.jdt.ui.prefs b/build/org.eclipse.cdt.meson.ui.editor/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/build/org.eclipse.cdt.meson.ui.editor/.settings/org.eclipse.jdt.ui.prefs
+++ b/build/org.eclipse.cdt.meson.ui.editor/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/build/org.eclipse.cdt.meson.ui.editor/META-INF/MANIFEST.MF b/build/org.eclipse.cdt.meson.ui.editor/META-INF/MANIFEST.MF
index 3fe9757c69c..607cfed4221 100644
--- a/build/org.eclipse.cdt.meson.ui.editor/META-INF/MANIFEST.MF
+++ b/build/org.eclipse.cdt.meson.ui.editor/META-INF/MANIFEST.MF
@@ -2,9 +2,9 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name
Bundle-SymbolicName: org.eclipse.cdt.meson.ui.editor;singleton:=true
-Bundle-Version: 1.0.1.qualifier
+Bundle-Version: 1.1.200.qualifier
Bundle-Vendor: %vendorName
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Require-Bundle: org.eclipse.ui.genericeditor;bundle-version="1.0.0",
org.eclipse.tm4e.ui;bundle-version="0.1.0",
org.eclipse.ui.editors;bundle-version="3.11.0",
diff --git a/build/org.eclipse.cdt.meson.ui.editor/about.html b/build/org.eclipse.cdt.meson.ui.editor/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/build/org.eclipse.cdt.meson.ui.editor/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/build/org.eclipse.cdt.meson.ui.editor/build.properties b/build/org.eclipse.cdt.meson.ui.editor/build.properties
index 3f23145208f..dd69371a41e 100644
--- a/build/org.eclipse.cdt.meson.ui.editor/build.properties
+++ b/build/org.eclipse.cdt.meson.ui.editor/build.properties
@@ -4,4 +4,6 @@ bin.includes = META-INF/,\
.,\
syntaxes/,\
plugin.xml,\
- OSGI-INF/
+ OSGI-INF/,\
+ about.html
+src.includes = about.html
diff --git a/build/org.eclipse.cdt.meson.ui.editor/src/keep.txt b/build/org.eclipse.cdt.meson.ui.editor/src/keep.txt
new file mode 100644
index 00000000000..0099f362938
--- /dev/null
+++ b/build/org.eclipse.cdt.meson.ui.editor/src/keep.txt
@@ -0,0 +1 @@
+This file is here just to keep this otherwise empty directory.
diff --git a/build/org.eclipse.cdt.meson.ui.tests/.classpath b/build/org.eclipse.cdt.meson.ui.tests/.classpath
index eca7bdba8f0..a42a828e04a 100644
--- a/build/org.eclipse.cdt.meson.ui.tests/.classpath
+++ b/build/org.eclipse.cdt.meson.ui.tests/.classpath
@@ -1,7 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="src" path="src"/>
+ <classpathentry kind="src" path="src">
+ <attributes>
+ <attribute name="test" value="true"/>
+ </attributes>
+ </classpathentry>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/build/org.eclipse.cdt.meson.ui.tests/.settings/org.eclipse.core.resources.prefs b/build/org.eclipse.cdt.meson.ui.tests/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/build/org.eclipse.cdt.meson.ui.tests/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/build/org.eclipse.cdt.meson.ui.tests/.settings/org.eclipse.jdt.core.prefs b/build/org.eclipse.cdt.meson.ui.tests/.settings/org.eclipse.jdt.core.prefs
index ad05599159f..5b1c443114d 100644
--- a/build/org.eclipse.cdt.meson.ui.tests/.settings/org.eclipse.jdt.core.prefs
+++ b/build/org.eclipse.cdt.meson.ui.tests/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/build/org.eclipse.cdt.meson.ui.tests/.settings/org.eclipse.jdt.ui.prefs b/build/org.eclipse.cdt.meson.ui.tests/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/build/org.eclipse.cdt.meson.ui.tests/.settings/org.eclipse.jdt.ui.prefs
+++ b/build/org.eclipse.cdt.meson.ui.tests/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/build/org.eclipse.cdt.meson.ui.tests/META-INF/MANIFEST.MF b/build/org.eclipse.cdt.meson.ui.tests/META-INF/MANIFEST.MF
index 1fb9b376720..7b9273943cd 100644
--- a/build/org.eclipse.cdt.meson.ui.tests/META-INF/MANIFEST.MF
+++ b/build/org.eclipse.cdt.meson.ui.tests/META-INF/MANIFEST.MF
@@ -1,26 +1,27 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
-Bundle-Name: Tests
+Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.meson.ui.tests
-Bundle-Vendor: Eclipse CDT
+Bundle-Vendor: %providerName
Bundle-Version: 1.0.1.qualifier
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Require-Bundle: org.eclipse.cdt.meson.core;bundle-version="1.0.0",
org.eclipse.cdt.meson.ui;bundle-version="1.0.0",
org.eclipse.swtbot.junit4_x;bundle-version="2.6.0",
- org.junit,
org.eclipse.cdt.core,
org.eclipse.swtbot.eclipse.finder,
org.eclipse.core.resources,
org.eclipse.core.runtime;bundle-version="3.13.0",
org.eclipse.ui;bundle-version="3.109.0",
org.apache.log4j;bundle-version="1.2.15",
- org.eclipse.epp.logging.aeri.core;bundle-version="2.0.6",
org.hamcrest.library;bundle-version="1.3.0",
org.eclipse.launchbar.ui;bundle-version="2.2.0",
org.eclipse.launchbar.ui.controls;bundle-version="1.0.1",
org.eclipse.ui.console;bundle-version="3.8.0",
org.eclipse.ui.views;bundle-version="3.9.100",
org.eclipse.ui.views.properties.tabbed;bundle-version="3.8.100"
-Import-Package: org.assertj.core.api;version="1.7.1"
+Import-Package: org.assertj.core.api;version="1.7.1",
+ org.junit.jupiter.api;version="5.7.1",
+ org.junit.jupiter.api.extension;version="5.7.1"
Automatic-Module-Name: org.eclipse.cdt.meson.ui.tests
+Bundle-Localization: plugin
diff --git a/build/org.eclipse.cdt.meson.ui.tests/about.html b/build/org.eclipse.cdt.meson.ui.tests/about.html
index 164f781a8fd..b3134865230 100644
--- a/build/org.eclipse.cdt.meson.ui.tests/about.html
+++ b/build/org.eclipse.cdt.meson.ui.tests/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/build/org.eclipse.cdt.meson.ui.tests/build.properties b/build/org.eclipse.cdt.meson.ui.tests/build.properties
index 774eb143934..86cda4414f3 100644
--- a/build/org.eclipse.cdt.meson.ui.tests/build.properties
+++ b/build/org.eclipse.cdt.meson.ui.tests/build.properties
@@ -1,5 +1,7 @@
source.. = src/
output.. = bin/
bin.includes = META-INF/,\
- .
+ plugin.properties,\
+ .,\
+ about.html
src.includes = about.html
diff --git a/build/org.eclipse.cdt.meson.ui.tests/plugin.properties b/build/org.eclipse.cdt.meson.ui.tests/plugin.properties
new file mode 100644
index 00000000000..1f398852583
--- /dev/null
+++ b/build/org.eclipse.cdt.meson.ui.tests/plugin.properties
@@ -0,0 +1,14 @@
+##################################################################################
+# Copyright (c) 2020 Torbjörn Svensson and others. All rights reserved.
+# This program and the accompanying materials are made available under the terms
+# of the Eclipse Public License 2.0 which accompanies this distribution, and is
+# available at https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Torbjörn Svensson - initial API and implementation
+##################################################################################
+
+pluginName = Tests
+providerName = Eclipse CDT
diff --git a/build/org.eclipse.cdt.meson.ui.tests/pom.xml b/build/org.eclipse.cdt.meson.ui.tests/pom.xml
index 125b2c6c2de..01da0ba17e1 100644
--- a/build/org.eclipse.cdt.meson.ui.tests/pom.xml
+++ b/build/org.eclipse.cdt.meson.ui.tests/pom.xml
@@ -1,4 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2018, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
@@ -7,7 +17,7 @@
<parent>
<groupId>org.eclipse.cdt</groupId>
<artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
+ <version>10.7.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
diff --git a/build/org.eclipse.cdt.meson.ui.tests/src/org/eclipse/cdt/internal/meson/ui/tests/AutomatedIntegrationSuite.java b/build/org.eclipse.cdt.meson.ui.tests/src/org/eclipse/cdt/internal/meson/ui/tests/AutomatedIntegrationSuite.java
deleted file mode 100644
index 103de2cdf54..00000000000
--- a/build/org.eclipse.cdt.meson.ui.tests/src/org/eclipse/cdt/internal/meson/ui/tests/AutomatedIntegrationSuite.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017, 2018 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Red Hat Inc. - modified for use in Meson testing
- *******************************************************************************/
-package org.eclipse.cdt.internal.meson.ui.tests;
-
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-
-@RunWith(Suite.class)
-@Suite.SuiteClasses({ NewMesonProjectTest.class, NewMesonConfigureTest.class, NewManualNinjaTest.class })
-public class AutomatedIntegrationSuite {
-
-}
diff --git a/build/org.eclipse.cdt.meson.ui.tests/src/org/eclipse/cdt/internal/meson/ui/tests/NewManualNinjaTest.java b/build/org.eclipse.cdt.meson.ui.tests/src/org/eclipse/cdt/internal/meson/ui/tests/NewManualNinjaTest.java
index 2d1ff80c66d..637ada6637a 100644
--- a/build/org.eclipse.cdt.meson.ui.tests/src/org/eclipse/cdt/internal/meson/ui/tests/NewManualNinjaTest.java
+++ b/build/org.eclipse.cdt.meson.ui.tests/src/org/eclipse/cdt/internal/meson/ui/tests/NewManualNinjaTest.java
@@ -13,25 +13,23 @@
*******************************************************************************/
package org.eclipse.cdt.internal.meson.ui.tests;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
import java.util.List;
+import java.util.concurrent.TimeUnit;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.index.IIndexManager;
import org.eclipse.cdt.core.model.CoreModel;
import org.eclipse.cdt.core.model.IBinary;
import org.eclipse.cdt.core.model.ICProject;
-import org.eclipse.cdt.internal.meson.ui.tests.utils.CloseWelcomePageRule;
+import org.eclipse.cdt.internal.meson.ui.tests.utils.CloseWelcomePag;
import org.eclipse.cdt.meson.core.MesonNature;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.IPath;
-import org.eclipse.epp.logging.aeri.core.ISystemSettings;
-import org.eclipse.epp.logging.aeri.core.SendMode;
-import org.eclipse.epp.logging.aeri.core.SystemControl;
import org.eclipse.swtbot.eclipse.finder.SWTWorkbenchBot;
import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotView;
import org.eclipse.swtbot.swt.finder.SWTBot;
@@ -42,26 +40,24 @@ import org.eclipse.swtbot.swt.finder.widgets.SWTBotTable;
import org.eclipse.swtbot.swt.finder.widgets.SWTBotTableItem;
import org.eclipse.swtbot.swt.finder.widgets.SWTBotText;
import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.FixMethodOrder;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.junit.runners.MethodSorters;
-
-@SuppressWarnings("nls")
-@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-@Ignore
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.MethodOrderer.MethodName;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestMethodOrder;
+import org.junit.jupiter.api.Timeout;
+import org.junit.jupiter.api.extension.ExtendWith;
+
+@TestMethodOrder(MethodName.class)
+@ExtendWith(CloseWelcomePag.class)
+@Tag("flakyTest"/*BaseTestCase5.FLAKY_TEST_TAG*/)
+@Tag("slowTest"/*BaseTestCase5.SLOW_TEST_TAG*/)
public class NewManualNinjaTest {
private static SWTWorkbenchBot bot;
- @ClassRule
- public static CloseWelcomePageRule closeWelcomePage = new CloseWelcomePageRule(
- CloseWelcomePageRule.CDT_PERSPECTIVE_ID);
-
- @BeforeClass
+ @BeforeAll
public static void beforeClass() {
SWTBotPreferences.TIMEOUT = 50000;
SWTBotPreferences.KEYBOARD_LAYOUT = "EN_US";
@@ -69,14 +65,13 @@ public class NewManualNinjaTest {
bot = new SWTWorkbenchBot();
}
- @Before
+ @BeforeEach
public void before() {
- ISystemSettings settings = SystemControl.getSystemSettings();
- settings.setSendMode(SendMode.NEVER);
bot.resetWorkbench();
}
- @Test(timeout = 120000)
+ @Test
+ @Timeout(value = 2, unit = TimeUnit.MINUTES)
public void addNewMesonProject() throws Exception {
// open C++ perspective
if (!"C/C++".equals(bot.activePerspective().getLabel())) {
diff --git a/build/org.eclipse.cdt.meson.ui.tests/src/org/eclipse/cdt/internal/meson/ui/tests/NewMesonConfigureTest.java b/build/org.eclipse.cdt.meson.ui.tests/src/org/eclipse/cdt/internal/meson/ui/tests/NewMesonConfigureTest.java
index f01ff98a7e0..e14fb92b57b 100644
--- a/build/org.eclipse.cdt.meson.ui.tests/src/org/eclipse/cdt/internal/meson/ui/tests/NewMesonConfigureTest.java
+++ b/build/org.eclipse.cdt.meson.ui.tests/src/org/eclipse/cdt/internal/meson/ui/tests/NewMesonConfigureTest.java
@@ -14,22 +14,21 @@
package org.eclipse.cdt.internal.meson.ui.tests;
import static org.eclipse.swtbot.swt.finder.matchers.WidgetMatcherFactory.withRegex;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.util.concurrent.TimeUnit;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.index.IIndexManager;
import org.eclipse.cdt.core.model.CoreModel;
import org.eclipse.cdt.core.model.IBinary;
import org.eclipse.cdt.core.model.ICProject;
-import org.eclipse.cdt.internal.meson.ui.tests.utils.CloseWelcomePageRule;
+import org.eclipse.cdt.internal.meson.ui.tests.utils.CloseWelcomePag;
import org.eclipse.cdt.meson.core.MesonNature;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.IPath;
-import org.eclipse.epp.logging.aeri.core.ISystemSettings;
-import org.eclipse.epp.logging.aeri.core.SendMode;
-import org.eclipse.epp.logging.aeri.core.SystemControl;
import org.eclipse.swtbot.eclipse.finder.SWTWorkbenchBot;
import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotView;
import org.eclipse.swtbot.swt.finder.utils.SWTBotPreferences;
@@ -39,26 +38,24 @@ import org.eclipse.swtbot.swt.finder.widgets.SWTBotTable;
import org.eclipse.swtbot.swt.finder.widgets.SWTBotTableItem;
import org.eclipse.swtbot.swt.finder.widgets.SWTBotText;
import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.FixMethodOrder;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.junit.runners.MethodSorters;
-
-@SuppressWarnings("nls")
-@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-@Ignore
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.MethodOrderer.MethodName;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestMethodOrder;
+import org.junit.jupiter.api.Timeout;
+import org.junit.jupiter.api.extension.ExtendWith;
+
+@TestMethodOrder(MethodName.class)
+@ExtendWith(CloseWelcomePag.class)
+@Tag("flakyTest"/*BaseTestCase5.FLAKY_TEST_TAG*/)
+@Tag("slowTest"/*BaseTestCase5.SLOW_TEST_TAG*/)
public class NewMesonConfigureTest {
private static SWTWorkbenchBot bot;
- @ClassRule
- public static CloseWelcomePageRule closeWelcomePage = new CloseWelcomePageRule(
- CloseWelcomePageRule.CDT_PERSPECTIVE_ID);
-
- @BeforeClass
+ @BeforeAll
public static void beforeClass() {
SWTBotPreferences.TIMEOUT = 50000;
SWTBotPreferences.KEYBOARD_LAYOUT = "EN_US";
@@ -66,14 +63,13 @@ public class NewMesonConfigureTest {
bot = new SWTWorkbenchBot();
}
- @Before
+ @BeforeEach
public void before() {
- ISystemSettings settings = SystemControl.getSystemSettings();
- settings.setSendMode(SendMode.NEVER);
bot.resetWorkbench();
}
- @Test(timeout = 120000)
+ @Test
+ @Timeout(value = 2, unit = TimeUnit.MINUTES)
public void addNewMesonProject() throws Exception {
// open C++ perspective
if (!"C/C++".equals(bot.activePerspective().getLabel())) {
diff --git a/build/org.eclipse.cdt.meson.ui.tests/src/org/eclipse/cdt/internal/meson/ui/tests/NewMesonProjectTest.java b/build/org.eclipse.cdt.meson.ui.tests/src/org/eclipse/cdt/internal/meson/ui/tests/NewMesonProjectTest.java
index 93730b9d7a0..5019e71e0fd 100644
--- a/build/org.eclipse.cdt.meson.ui.tests/src/org/eclipse/cdt/internal/meson/ui/tests/NewMesonProjectTest.java
+++ b/build/org.eclipse.cdt.meson.ui.tests/src/org/eclipse/cdt/internal/meson/ui/tests/NewMesonProjectTest.java
@@ -14,22 +14,21 @@
package org.eclipse.cdt.internal.meson.ui.tests;
import static org.eclipse.swtbot.swt.finder.matchers.WidgetMatcherFactory.withRegex;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.util.concurrent.TimeUnit;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.index.IIndexManager;
import org.eclipse.cdt.core.model.CoreModel;
import org.eclipse.cdt.core.model.IBinary;
import org.eclipse.cdt.core.model.ICProject;
-import org.eclipse.cdt.internal.meson.ui.tests.utils.CloseWelcomePageRule;
+import org.eclipse.cdt.internal.meson.ui.tests.utils.CloseWelcomePag;
import org.eclipse.cdt.meson.core.MesonNature;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.IPath;
-import org.eclipse.epp.logging.aeri.core.ISystemSettings;
-import org.eclipse.epp.logging.aeri.core.SendMode;
-import org.eclipse.epp.logging.aeri.core.SystemControl;
import org.eclipse.swtbot.eclipse.finder.SWTWorkbenchBot;
import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotView;
import org.eclipse.swtbot.swt.finder.utils.SWTBotPreferences;
@@ -39,26 +38,24 @@ import org.eclipse.swtbot.swt.finder.widgets.SWTBotTable;
import org.eclipse.swtbot.swt.finder.widgets.SWTBotTableItem;
import org.eclipse.swtbot.swt.finder.widgets.SWTBotText;
import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.FixMethodOrder;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.junit.runners.MethodSorters;
-
-@SuppressWarnings("nls")
-@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-@Ignore
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.MethodOrderer.MethodName;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestMethodOrder;
+import org.junit.jupiter.api.Timeout;
+import org.junit.jupiter.api.extension.ExtendWith;
+
+@TestMethodOrder(MethodName.class)
+@ExtendWith(CloseWelcomePag.class)
+@Tag("flakyTest"/*BaseTestCase5.FLAKY_TEST_TAG*/)
+@Tag("slowTest"/*BaseTestCase5.SLOW_TEST_TAG*/)
public class NewMesonProjectTest {
private static SWTWorkbenchBot bot;
- @ClassRule
- public static CloseWelcomePageRule closeWelcomePage = new CloseWelcomePageRule(
- CloseWelcomePageRule.CDT_PERSPECTIVE_ID);
-
- @BeforeClass
+ @BeforeAll
public static void beforeClass() {
SWTBotPreferences.TIMEOUT = 50000;
SWTBotPreferences.KEYBOARD_LAYOUT = "EN_US";
@@ -66,14 +63,13 @@ public class NewMesonProjectTest {
bot = new SWTWorkbenchBot();
}
- @Before
+ @BeforeEach
public void before() {
- ISystemSettings settings = SystemControl.getSystemSettings();
- settings.setSendMode(SendMode.NEVER);
bot.resetWorkbench();
}
- @Test(timeout = 120000)
+ @Test
+ @Timeout(value = 2, unit = TimeUnit.MINUTES)
public void addNewMesonProject() throws Exception {
// open C++ perspective
if (!"C/C++".equals(bot.activePerspective().getLabel())) {
diff --git a/build/org.eclipse.cdt.meson.ui.tests/src/org/eclipse/cdt/internal/meson/ui/tests/utils/CloseShellRule.java b/build/org.eclipse.cdt.meson.ui.tests/src/org/eclipse/cdt/internal/meson/ui/tests/utils/CloseShellRule.java
deleted file mode 100644
index 2bda34a4587..00000000000
--- a/build/org.eclipse.cdt.meson.ui.tests/src/org/eclipse/cdt/internal/meson/ui/tests/utils/CloseShellRule.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015 Red Hat.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Red Hat - Initial Contribution
- *******************************************************************************/
-
-package org.eclipse.cdt.internal.meson.ui.tests.utils;
-
-import org.eclipse.swtbot.eclipse.finder.SWTWorkbenchBot;
-import org.eclipse.swtbot.swt.finder.exceptions.WidgetNotFoundException;
-import org.eclipse.swtbot.swt.finder.widgets.SWTBotButton;
-import org.eclipse.swtbot.swt.finder.widgets.SWTBotShell;
-import org.eclipse.ui.PlatformUI;
-import org.junit.rules.ExternalResource;
-
-/**
- * Closes the wizard(s) after each test, if the "Cancel" button is available
- */
-public class CloseShellRule extends ExternalResource {
-
- private final String buttonLabel;
-
- public CloseShellRule(final String buttonLabel) {
- this.buttonLabel = buttonLabel;
- }
-
- @Override
- protected void after() {
- final SWTWorkbenchBot bot = new SWTWorkbenchBot();
- try {
- while (isInDialog(bot) && getButton(bot, this.buttonLabel) != null) {
- getButton(bot, this.buttonLabel).click();
- }
-
- } catch (WidgetNotFoundException e) {
- // ignoring
- }
- }
-
- private static boolean isInDialog(final SWTWorkbenchBot bot) {
- final SWTBotShell activeShell = bot.activeShell();
- final String text = SWTUtils
- .syncExec(() -> PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell().getText());
- final String shellText = activeShell.getText();
- return text != null && !text.equals(shellText);
- }
-
- private static SWTBotButton getButton(final SWTWorkbenchBot bot, final String buttonLabel) {
- return bot.button(buttonLabel);
- }
-}
diff --git a/build/org.eclipse.cdt.meson.ui.tests/src/org/eclipse/cdt/internal/meson/ui/tests/utils/CloseWelcomePag.java b/build/org.eclipse.cdt.meson.ui.tests/src/org/eclipse/cdt/internal/meson/ui/tests/utils/CloseWelcomePag.java
new file mode 100644
index 00000000000..c286684fe70
--- /dev/null
+++ b/build/org.eclipse.cdt.meson.ui.tests/src/org/eclipse/cdt/internal/meson/ui/tests/utils/CloseWelcomePag.java
@@ -0,0 +1,65 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Red Hat.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Red Hat - Initial Contribution
+ *******************************************************************************/
+
+package org.eclipse.cdt.internal.meson.ui.tests.utils;
+
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.WorkbenchException;
+import org.junit.jupiter.api.extension.BeforeEachCallback;
+import org.junit.jupiter.api.extension.ExtensionContext;
+
+/**
+ * Closes the Welcome page and optionally opens a given perspective
+ */
+public class CloseWelcomePag implements BeforeEachCallback {
+
+ public static final String CDT_PERSPECTIVE_ID = "org.eclipse.cdt.ui.CPerspective";
+
+ /** the Id of the perspective to open. */
+ private final String defaultPerspectiveId;
+
+ public CloseWelcomePag() {
+ this.defaultPerspectiveId = CloseWelcomePag.CDT_PERSPECTIVE_ID;
+ }
+
+ @Override
+ public void beforeEach(ExtensionContext context) throws Exception {
+ Display.getDefault().syncExec(() -> {
+ final IWorkbench workbench = PlatformUI.getWorkbench();
+ if (workbench.getIntroManager().getIntro() != null) {
+ workbench.getIntroManager().closeIntro(workbench.getIntroManager().getIntro());
+ }
+ try {
+ workbench.showPerspective(defaultPerspectiveId, workbench.getActiveWorkbenchWindow());
+ } catch (WorkbenchException e) {
+ e.printStackTrace();
+ }
+ });
+ final String PREF_ENABLE_LAUNCHBAR = "enableLaunchBar"; //$NON-NLS-1$
+ final String PREF_ENABLE_TARGETSELECTOR = "enableTargetSelector"; //$NON-NLS-1$
+ final String PREF_ENABLE_BUILDBUTTON = "enableBuildButton"; //$NON-NLS-1$
+
+ Display.getDefault().asyncExec(() -> {
+ final IPreferenceStore store = org.eclipse.launchbar.ui.controls.internal.Activator.getDefault()
+ .getPreferenceStore();
+ store.setValue(PREF_ENABLE_LAUNCHBAR, false);
+ store.setValue(PREF_ENABLE_TARGETSELECTOR, false);
+ store.setValue(PREF_ENABLE_BUILDBUTTON, false);
+ });
+ }
+
+}
diff --git a/build/org.eclipse.cdt.meson.ui.tests/src/org/eclipse/cdt/internal/meson/ui/tests/utils/CloseWelcomePageRule.java b/build/org.eclipse.cdt.meson.ui.tests/src/org/eclipse/cdt/internal/meson/ui/tests/utils/CloseWelcomePageRule.java
deleted file mode 100644
index a7f214d559d..00000000000
--- a/build/org.eclipse.cdt.meson.ui.tests/src/org/eclipse/cdt/internal/meson/ui/tests/utils/CloseWelcomePageRule.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015 Red Hat.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Red Hat - Initial Contribution
- *******************************************************************************/
-
-package org.eclipse.cdt.internal.meson.ui.tests.utils;
-
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.WorkbenchException;
-import org.junit.rules.ExternalResource;
-
-/**
- * Closes the Welcome page and optionally opens a given perspective
- */
-public class CloseWelcomePageRule extends ExternalResource {
-
- public static final String DOCKER_PERSPECTIVE_ID = "org.eclipse.linuxtools.docker.ui.perspective";
-
- public static final String CDT_PERSPECTIVE_ID = "org.eclipse.cdt.ui.CPerspective";
-
- public static final String JAVA_PERSPECTIVE_ID = "org.eclipse.jdt.ui.JavaPerspective";
-
- /** the Id of the perspective to open. */
- private final String defaultPerspectiveId;
-
- /**
- * Custom constructor with the id of the perspective to open once the
- * welcome page was closed.
- *
- * @param perspectiveId
- * the id of the perspective to open.
- */
- public CloseWelcomePageRule(final String perspectiveId) {
- this.defaultPerspectiveId = perspectiveId;
- }
-
- @Override
- protected void before() {
- Display.getDefault().syncExec(() -> {
- final IWorkbench workbench = PlatformUI.getWorkbench();
- if (workbench.getIntroManager().getIntro() != null) {
- workbench.getIntroManager().closeIntro(workbench.getIntroManager().getIntro());
- }
- try {
- workbench.showPerspective(defaultPerspectiveId, workbench.getActiveWorkbenchWindow());
- } catch (WorkbenchException e) {
- e.printStackTrace();
- }
- });
- final String PREF_ENABLE_LAUNCHBAR = "enableLaunchBar"; //$NON-NLS-1$
- final String PREF_ENABLE_TARGETSELECTOR = "enableTargetSelector"; //$NON-NLS-1$
- final String PREF_ENABLE_BUILDBUTTON = "enableBuildButton"; //$NON-NLS-1$
-
- Display.getDefault().asyncExec(() -> {
- final IPreferenceStore store = org.eclipse.launchbar.ui.controls.internal.Activator.getDefault()
- .getPreferenceStore();
- store.setValue(PREF_ENABLE_LAUNCHBAR, false);
- store.setValue(PREF_ENABLE_TARGETSELECTOR, false);
- store.setValue(PREF_ENABLE_BUILDBUTTON, false);
- });
- }
-
-}
diff --git a/build/org.eclipse.cdt.meson.ui.tests/src/org/eclipse/cdt/internal/meson/ui/tests/utils/ConsoleViewRule.java b/build/org.eclipse.cdt.meson.ui.tests/src/org/eclipse/cdt/internal/meson/ui/tests/utils/ConsoleViewRule.java
deleted file mode 100644
index 7a64cc93b15..00000000000
--- a/build/org.eclipse.cdt.meson.ui.tests/src/org/eclipse/cdt/internal/meson/ui/tests/utils/ConsoleViewRule.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 Red Hat.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Red Hat - Initial Contribution
- *******************************************************************************/
-
-package org.eclipse.cdt.internal.meson.ui.tests.utils;
-
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swtbot.eclipse.finder.SWTWorkbenchBot;
-import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotView;
-import org.eclipse.ui.console.IConsoleConstants;
-import org.junit.rules.ExternalResource;
-
-/**
- * An {@link ExternalResource} to close the Console view.
- */
-public class ConsoleViewRule extends ExternalResource {
-
- @Override
- protected void before() {
- Display.getDefault().syncExec(() -> {
- final SWTBotView consoleView = SWTUtils.getSWTBotView(new SWTWorkbenchBot(),
- IConsoleConstants.ID_CONSOLE_VIEW);
- if (consoleView != null) {
- consoleView.close();
- }
- });
- }
-
-}
diff --git a/build/org.eclipse.cdt.meson.ui.tests/src/org/eclipse/cdt/internal/meson/ui/tests/utils/ProjectExplorerViewRule.java b/build/org.eclipse.cdt.meson.ui.tests/src/org/eclipse/cdt/internal/meson/ui/tests/utils/ProjectExplorerViewRule.java
deleted file mode 100644
index 99933555779..00000000000
--- a/build/org.eclipse.cdt.meson.ui.tests/src/org/eclipse/cdt/internal/meson/ui/tests/utils/ProjectExplorerViewRule.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 Red Hat.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Red Hat - Initial Contribution
- *******************************************************************************/
-
-package org.eclipse.cdt.internal.meson.ui.tests.utils;
-
-import org.eclipse.swtbot.eclipse.finder.SWTWorkbenchBot;
-import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotView;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-import org.junit.Rule;
-import org.junit.rules.ExternalResource;
-
-/**
- * A JUnit {@link Rule} to open the Project Explorer view.
- */
-public class ProjectExplorerViewRule extends ExternalResource {
-
- private SWTBotView projectExplorerBotView;
-
- public static final String PROJECT_EXPLORER_VIEW_ID = "org.eclipse.ui.navigator.ProjectExplorer";
-
- @Override
- protected void before() {
- final SWTWorkbenchBot bot = new SWTWorkbenchBot();
- SWTUtils.syncExec(() -> {
- try {
- return PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()
- .showView(PROJECT_EXPLORER_VIEW_ID);
- } catch (PartInitException e) {
- e.printStackTrace();
- return null;
- }
- });
- this.projectExplorerBotView = bot.viewById(PROJECT_EXPLORER_VIEW_ID);
- this.projectExplorerBotView.setFocus();
- }
-
- public SWTBotView getProjectExplorerBotView() {
- return this.projectExplorerBotView;
- }
-}
diff --git a/build/org.eclipse.cdt.meson.ui.tests/src/org/eclipse/cdt/internal/meson/ui/tests/utils/SWTBotViewRule.java b/build/org.eclipse.cdt.meson.ui.tests/src/org/eclipse/cdt/internal/meson/ui/tests/utils/SWTBotViewRule.java
deleted file mode 100644
index 42ed786baff..00000000000
--- a/build/org.eclipse.cdt.meson.ui.tests/src/org/eclipse/cdt/internal/meson/ui/tests/utils/SWTBotViewRule.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 Red Hat.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Red Hat - Initial Contribution
- *******************************************************************************/
-
-package org.eclipse.cdt.internal.meson.ui.tests.utils;
-
-import org.eclipse.swtbot.eclipse.finder.SWTWorkbenchBot;
-import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotView;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.PlatformUI;
-import org.junit.Assert;
-import org.junit.rules.ExternalResource;
-
-/**
- *
- */
-public class SWTBotViewRule extends ExternalResource {
-
- private final SWTWorkbenchBot bot = new SWTWorkbenchBot();
-
- private final String viewId;
-
- private SWTBotView botView = null;
-
- private IViewPart view = null;
-
- public SWTBotViewRule(final String viewId) {
- this.viewId = viewId;
- }
-
- @Override
- protected void before() {
- SWTUtils.asyncExec(() -> {
- try {
- PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView(this.viewId);
- } catch (Exception e) {
- e.printStackTrace();
- Assert.fail("Failed to open view with id '" + this.viewId + "': " + e.getMessage());
- }
- });
- this.botView = this.bot.viewById(this.viewId);
- this.botView.show();
- this.view = this.botView.getViewReference().getView(true);
- }
-
- public SWTBotView bot() {
- return this.botView;
- }
-
- @SuppressWarnings("unchecked")
- public <T> T view() {
- return (T) view;
- }
-
- public void close() {
- this.botView.close();
- }
-}
diff --git a/build/org.eclipse.cdt.meson.ui.tests/src/org/eclipse/cdt/internal/meson/ui/tests/utils/SWTUtils.java b/build/org.eclipse.cdt.meson.ui.tests/src/org/eclipse/cdt/internal/meson/ui/tests/utils/SWTUtils.java
index faf04a9e62b..dda4d836f16 100644
--- a/build/org.eclipse.cdt.meson.ui.tests/src/org/eclipse/cdt/internal/meson/ui/tests/utils/SWTUtils.java
+++ b/build/org.eclipse.cdt.meson.ui.tests/src/org/eclipse/cdt/internal/meson/ui/tests/utils/SWTUtils.java
@@ -13,47 +13,11 @@
*******************************************************************************/
package org.eclipse.cdt.internal.meson.ui.tests.utils;
-import static org.assertj.core.api.Assertions.fail;
-
-import java.util.List;
import java.util.Queue;
import java.util.concurrent.ArrayBlockingQueue;
-import java.util.concurrent.TimeUnit;
import java.util.function.Supplier;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.IJobChangeEvent;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.core.runtime.jobs.JobChangeAdapter;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.SWTException;
-import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.Tree;
-import org.eclipse.swtbot.eclipse.finder.SWTWorkbenchBot;
-import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotView;
-import org.eclipse.swtbot.swt.finder.exceptions.WidgetNotFoundException;
-import org.eclipse.swtbot.swt.finder.finders.ContextMenuHelper;
-import org.eclipse.swtbot.swt.finder.finders.UIThreadRunnable;
-import org.eclipse.swtbot.swt.finder.results.Result;
-import org.eclipse.swtbot.swt.finder.results.VoidResult;
-import org.eclipse.swtbot.swt.finder.widgets.AbstractSWTBot;
-import org.eclipse.swtbot.swt.finder.widgets.SWTBotMenu;
-import org.eclipse.swtbot.swt.finder.widgets.SWTBotTable;
-import org.eclipse.swtbot.swt.finder.widgets.SWTBotTableItem;
-import org.eclipse.swtbot.swt.finder.widgets.SWTBotToolbarButton;
-import org.eclipse.swtbot.swt.finder.widgets.SWTBotTree;
-import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem;
-import org.eclipse.ui.console.IConsoleConstants;
-import org.eclipse.ui.progress.UIJob;
-import org.junit.Assert;
-import org.junit.ComparisonFailure;
/**
* Utility class for SWT
@@ -73,439 +37,4 @@ public class SWTUtils {
Display.getDefault().syncExec(() -> result.add(supplier.get()));
return result.poll();
}
-
- /**
- * Executes <strong>synchronously</strong> the given {@link Runnable} in the
- * default Display
- *
- * @param runnable
- * the {@link Runnable} to execute
- */
- public static void syncExec(final Runnable runnable) {
- Display.getDefault().syncExec(runnable);
- }
-
- /**
- * Executes <strong>synchronously</strong> the given {@link Runnable} in the
- * default Display. The given {@link Runnable} is ran into a rapping
- * {@link Runnable} that will catch the {@link ComparisonFailure} that may
- * be raised during an assertion.
- *
- * @param runnable
- * the {@link Runnable} to execute
- * @throws ComparisonFailure
- * if an assertion failed.
- * @throws SWTException
- * if an {@link SWTException} occurred
- */
- public static void syncAssert(final Runnable runnable) throws SWTException, ComparisonFailure {
- final Queue<ComparisonFailure> failure = new ArrayBlockingQueue<>(1);
- final Queue<SWTException> swtException = new ArrayBlockingQueue<>(1);
- Display.getDefault().syncExec(() -> {
- try {
- runnable.run();
- } catch (ComparisonFailure e1) {
- failure.add(e1);
- } catch (SWTException e2) {
- swtException.add(e2);
- }
- });
- if (!failure.isEmpty()) {
- throw failure.poll();
- }
- if (!swtException.isEmpty()) {
- throw swtException.poll();
- }
- }
-
- /**
- * Executes the given {@link Runnable} <strong>asynchronously</strong> in
- * the default {@link Display} and waits until all jobs are done before
- * completing.
- *
- * @param runnable
- * @throws InterruptedException
- */
- public static void asyncExec(final Runnable runnable) {
- asyncExec(runnable, true);
- }
-
- /**
- * Executes the given {@link Runnable} <strong>asynchronously</strong> in
- * the default {@link Display} and waits until all jobs are done before
- * completing.
- *
- * @param runnable
- * the {@link Runnable} to execute
- * @param waitForJobsToComplete
- * boolean flag to indicate if the method should wait for all
- * jobs to complete before finishing
- * @throws InterruptedException
- */
- public static void asyncExec(final Runnable runnable, final boolean waitForJobsToComplete) {
- final Queue<ComparisonFailure> failure = new ArrayBlockingQueue<>(1);
- final Queue<SWTException> swtException = new ArrayBlockingQueue<>(1);
- Display.getDefault().asyncExec(() -> {
- try {
- runnable.run();
- } catch (ComparisonFailure e1) {
- failure.add(e1);
- } catch (SWTException e2) {
- swtException.add(e2);
- }
- });
- if (waitForJobsToComplete) {
- waitForJobsToComplete();
- }
- if (!failure.isEmpty()) {
- throw failure.poll();
- }
- if (!swtException.isEmpty()) {
- throw swtException.poll();
- }
- }
-
- /**
- * Waits for all {@link Job} to complete.
- *
- * @throws InterruptedException
- */
- public static void waitForJobsToComplete() {
- wait(1, TimeUnit.SECONDS);
- while (!Job.getJobManager().isIdle()) {
- wait(1, TimeUnit.SECONDS);
- }
- }
-
- /**
- * @param viewBot
- * the {@link SWTBotView} containing the {@link Tree} to traverse
- * @param paths
- * the node path in the {@link SWTBotTree} associated with the
- * given {@link SWTBotView}
- * @return the first {@link SWTBotTreeItem} matching the given node names
- */
- public static SWTBotTreeItem getTreeItem(final SWTBotView viewBot, final String... paths) {
- final SWTBotTree tree = viewBot.bot().tree();
- return getTreeItem(tree.getAllItems(), paths);
- }
-
- /**
- *
- * @param parentTreeItem
- * the parent tree item from which to start
- * @param paths
- * the relative path to the item to return
- * @return the {@link SWTBotTreeItem} that matches the given path from the
- * given parent tree item
- */
- public static SWTBotTreeItem getTreeItem(final SWTBotTreeItem parentTreeItem, final String... paths) {
- if (paths.length == 1) {
- return getTreeItem(parentTreeItem, paths[0]);
- }
- final String[] remainingPaths = new String[paths.length - 1];
- System.arraycopy(paths, 1, remainingPaths, 0, paths.length - 1);
- return getTreeItem(getTreeItem(parentTreeItem, paths[0]), remainingPaths);
- }
-
- /**
- * Returns the first child node in the given parent tree item whose text
- * matches (ie, begins with) the given path argument.
- *
- * @param parentTree
- * the parent tree item
- * @param path
- * the text of the node that should match
- * @return the first matching node or <code>null</code> if none could be
- * found
- */
- public static SWTBotTreeItem getTreeItem(final SWTBotTree parentTree, final String path) {
- for (SWTBotTreeItem child : parentTree.getAllItems()) {
- if (child.getText().startsWith(path)) {
- return child;
- }
- }
- return null;
- }
-
- /**
- * Returns the first child node in the given parent tree item whose text
- * matches (ie, begins with) the given path argument.
- *
- * @param parentTreeItem
- * the parent tree item
- * @param path
- * the text of the node that should match
- * @return the first matching node or <code>null</code> if none could be
- * found
- */
- public static SWTBotTreeItem getTreeItem(final SWTBotTreeItem parentTreeItem, final String path) {
- for (SWTBotTreeItem child : parentTreeItem.getItems()) {
- if (child.getText().startsWith(path)) {
- return child;
- }
- }
- return null;
- }
-
- private static SWTBotTreeItem getTreeItem(final SWTBotTreeItem[] treeItems, final String[] paths) {
- final SWTBotTreeItem swtBotTreeItem = Stream.of(treeItems).filter(item -> item.getText().startsWith(paths[0]))
- .findFirst().orElseThrow(() -> new RuntimeException("Only available items: "
- + Stream.of(treeItems).map(item -> item.getText()).collect(Collectors.joining(", "))));
- if (paths.length > 1) {
- syncExec(() -> swtBotTreeItem.expand());
- final String[] remainingPath = new String[paths.length - 1];
- System.arraycopy(paths, 1, remainingPath, 0, remainingPath.length);
- return getTreeItem(swtBotTreeItem.getItems(), remainingPath);
- }
- return swtBotTreeItem;
- }
-
- public static SWTBotTableItem getListItem(final SWTBotTable table, final String name) {
- return Stream.iterate(0, i -> i + 1).limit(table.rowCount()).map(rowNumber -> table.getTableItem(rowNumber))
- .filter(rowItem -> {
- return Stream.iterate(0, j -> j + 1).limit(table.columnCount())
- .map(colNum -> rowItem.getText(colNum)).anyMatch(colValue -> colValue.contains(name));
- }).findFirst().orElse(null);
- }
-
- /**
- * Waits for the given duration
- *
- * @param duration
- * the duration
- * @param unit
- * the duration unit
- */
- public static void wait(final int duration, final TimeUnit unit) {
- try {
- Thread.sleep(unit.toMillis(duration));
- } catch (InterruptedException e) {
- fail("Failed to wait for a " + unit.toMillis(duration) + "ms", e);
- }
- }
-
- /**
- * Selects <strong> all child items</strong> in the given
- * <code>parentTreeItem</code> whose labels match the given
- * <code>items</code>.
- *
- * @param parentTreeItem
- * the parent tree item
- * @param matchItems
- * the items to select
- * @return
- */
- public static SWTBotTreeItem select(final SWTBotTreeItem parentTreeItem, final String... matchItems) {
- final List<String> fullyQualifiedItems = Stream.of(parentTreeItem.getItems()).filter(
- treeItem -> Stream.of(matchItems).anyMatch(matchItem -> treeItem.getText().startsWith(matchItem)))
- .map(item -> item.getText()).collect(Collectors.toList());
- return parentTreeItem.select(fullyQualifiedItems.toArray(new String[0]));
- }
-
- /**
- * Selects <strong> all child items</strong> in the given
- * <code>parentTreeItem</code> whose labels match the given
- * <code>items</code>.
- *
- * @param parentTree
- * the parent tree
- * @param matchItems
- * the items to select
- * @return
- */
- public static SWTBotTree select(final SWTBotTree parentTree, final String... matchItems) {
- final List<String> fullyQualifiedItems = Stream.of(parentTree.getAllItems()).filter(
- treeItem -> Stream.of(matchItems).anyMatch(matchItem -> treeItem.getText().startsWith(matchItem)))
- .map(item -> item.getText()).collect(Collectors.toList());
- return parentTree.select(fullyQualifiedItems.toArray(new String[0]));
- }
-
- /**
- * Selects the given <code>treeItem</code> whose labels match the given
- * <code>items</code>.
- *
- * @param treeItem
- * the parent tree item
- * @param matchItems
- * the items to select
- */
- public static void select(SWTBotTreeItem treeItem) {
- treeItem.select();
- }
-
- /**
- * @param tree
- * the root {@link SWTBotTree}
- * @param path
- * the path for the menu
- * @return the child {@link SWTBotMenu} named with the first item in the
- * given <code>path</code> from the given {@link SWTBotTree}
- */
- public static SWTBotMenu getContextMenu(final SWTBotTree tree, String... path) {
- final SWTBotMenu contextMenu = tree.contextMenu(path[0]);
- if (contextMenu == null) {
- Assert.fail("Failed to find context menu '" + path[0] + "'.");
- }
- if (path.length == 1) {
- return contextMenu;
- }
- final String[] remainingPath = new String[path.length - 1];
- System.arraycopy(path, 1, remainingPath, 0, remainingPath.length);
- return getSubMenu(contextMenu, remainingPath);
- }
-
- /**
- * Hides the menu for the given <code>tree</code>
- *
- * @param tree
- * the tree whose {@link Menu} should be hidden
- */
- public static void hideMenu(final SWTBotTree tree) {
- try {
- final Menu menu = UIThreadRunnable.syncExec((Result<Menu>) () -> tree.widget.getMenu());
- UIThreadRunnable.syncExec(new VoidResult() {
-
- @Override
- public void run() {
- hide(menu);
- }
-
- private void hide(final Menu menu) {
- menu.notifyListeners(SWT.Hide, new Event());
- if (menu.getParentMenu() != null) {
- hide(menu.getParentMenu());
- }
- }
- });
- } catch (WidgetNotFoundException e) {
- // ignore if widget is not found, that's probably because there's no
- // tree in the
- // Docker Explorer view for the test that just ran.
- }
- }
-
- /**
- * @param menu
- * the parent menu
- * @param path
- * the path for the menu
- * @return the child {@link SWTBotMenu} named with the first item in the
- * given <code>path</code> from the given {@link SWTBotMenu}
- */
- public static SWTBotMenu getSubMenu(final SWTBotMenu menu, String... path) {
- final SWTBotMenu subMenu = menu.menu(path[0]);
- if (subMenu == null) {
- Assert.fail("Failed to find submenu '" + path[0] + "'.");
- }
- if (path.length == 1) {
- return subMenu;
- }
- final String[] remainingPath = new String[path.length - 1];
- System.arraycopy(path, 1, remainingPath, 0, remainingPath.length);
- return getSubMenu(subMenu, remainingPath);
- }
-
- public static SWTBotTreeItem expand(final SWTBotTree tree, final String... paths) {
- final SWTBotTreeItem rootItem = getTreeItem(tree, paths[0]);
- expandTreeItem(rootItem);
- if (paths.length > 1) {
- final String[] remainingPath = new String[paths.length - 1];
- System.arraycopy(paths, 1, remainingPath, 0, remainingPath.length);
- return expand(rootItem, remainingPath);
- }
- return rootItem;
- }
-
- public static SWTBotTreeItem expand(final SWTBotTreeItem treeItem, final String... paths) {
- final SWTBotTreeItem childItem = getTreeItem(treeItem, paths[0]);
- expandTreeItem(childItem);
- if (paths.length > 1) {
- final String[] remainingPath = new String[paths.length - 1];
- System.arraycopy(paths, 1, remainingPath, 0, remainingPath.length);
- return expand(childItem, remainingPath);
- }
- return getTreeItem(treeItem, paths[0]);
- }
-
- private static SWTBotTreeItem expandTreeItem(final SWTBotTreeItem treeItem) {
- final UIJob expandJob = new UIJob("expanding tree") {
-
- @Override
- public IStatus runInUIThread(IProgressMonitor monitor) {
- treeItem.expand();
- return Status.OK_STATUS;
- }
- };
- expandJob.addJobChangeListener(new JobChangeAdapter() {
- @Override
- public void done(IJobChangeEvent event) {
- final int maxAttempts = 30;
- int currentAttempt = 0;
- while (currentAttempt < maxAttempts && treeItem.getItems().length == 1
- && treeItem.getItems()[0].getText().isEmpty()) {
- SWTUtils.wait(1, TimeUnit.SECONDS);
- currentAttempt++;
- }
-
- }
- });
- expandJob.schedule();
- SWTUtils.wait(1, TimeUnit.SECONDS);
- return treeItem;
- }
-
- public static SWTBotView getSWTBotView(final SWTWorkbenchBot bot, final String viewId) {
- return bot.views().stream().filter(v -> v.getViewReference().getId().equals(viewId)).findFirst().orElse(null);
- }
-
- @SuppressWarnings("unchecked")
- public static <T> T getView(final SWTWorkbenchBot bot, final String viewId) {
- return (T) getView(bot, viewId, false);
- }
-
- @SuppressWarnings("unchecked")
- public static <T> T getView(final SWTWorkbenchBot bot, final String viewId, final boolean restore) {
- final SWTBotView viewBot = bot.viewById(viewId);
- viewBot.setFocus();
- return (T) viewBot.getReference().getView(restore);
- }
-
- /**
- * @return <code>true</code> if the Console view is visible in the active
- * page, <code>false</code> otherwise.
- * @throws InterruptedException
- */
- public static boolean isConsoleViewVisible(final SWTWorkbenchBot bot) {
- return bot.views().stream()
- .anyMatch(v -> v.getViewReference().getId().equals(IConsoleConstants.ID_CONSOLE_VIEW));
- }
-
- public static SWTBotToolbarButton getConsoleToolbarButtonWithTooltipText(final SWTWorkbenchBot bot,
- final String tooltipText) {
- return bot.viewById(IConsoleConstants.ID_CONSOLE_VIEW).getToolbarButtons().stream()
- .filter(button -> button.getToolTipText().equals(tooltipText)).findFirst().get();
- }
-
- public static void closeView(final SWTWorkbenchBot bot, final String viewId) {
- bot.views().stream().filter(v -> v.getReference().getId().equals(viewId)).forEach(v -> v.close());
- }
-
- /**
- * Creates a new {@link SWTBotMenu} from the context. This avoids some
- * unexpected "Widget is disposed" errors.
- *
- * @param bot
- * the bot
- * @param menuName
- * the name of the menu to find
- * @return the context menu
- * @see <a href=
- * "https://www.eclipse.org/forums/index.php?t=msg&th=11863&start=0&">Eclipse
- * forum</a>
- */
- public static SWTBotMenu getContextMenu(final AbstractSWTBot<? extends Control> bot, final String menuName) {
- return new SWTBotMenu(ContextMenuHelper.contextMenu(bot, menuName));
- }
-
}
diff --git a/build/org.eclipse.cdt.meson.ui.tests/src/org/eclipse/cdt/internal/meson/ui/tests/utils/TestLoggerRule.java b/build/org.eclipse.cdt.meson.ui.tests/src/org/eclipse/cdt/internal/meson/ui/tests/utils/TestLoggerRule.java
deleted file mode 100644
index 663f77a0d7c..00000000000
--- a/build/org.eclipse.cdt.meson.ui.tests/src/org/eclipse/cdt/internal/meson/ui/tests/utils/TestLoggerRule.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015 Red Hat.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Red Hat - Initial Contribution
- *******************************************************************************/
-
-package org.eclipse.cdt.internal.meson.ui.tests.utils;
-
-import org.junit.rules.TestWatcher;
-import org.junit.runner.Description;
-
-/**
- *
- */
-public class TestLoggerRule extends TestWatcher {
-
- @Override
- protected void starting(final Description description) {
- System.out.println("Starting " + description.getClassName() + "." + description.getMethodName());
- }
-}
diff --git a/build/org.eclipse.cdt.meson.ui/.classpath b/build/org.eclipse.cdt.meson.ui/.classpath
index eca7bdba8f0..e801ebfb468 100644
--- a/build/org.eclipse.cdt.meson.ui/.classpath
+++ b/build/org.eclipse.cdt.meson.ui/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/build/org.eclipse.cdt.meson.ui/.project b/build/org.eclipse.cdt.meson.ui/.project
index e70361cee48..09581b90499 100644
--- a/build/org.eclipse.cdt.meson.ui/.project
+++ b/build/org.eclipse.cdt.meson.ui/.project
@@ -20,9 +20,15 @@
<arguments>
</arguments>
</buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.pde.PluginNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
</natures>
</projectDescription>
diff --git a/build/org.eclipse.cdt.meson.ui/.settings/org.eclipse.core.resources.prefs b/build/org.eclipse.cdt.meson.ui/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/build/org.eclipse.cdt.meson.ui/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/build/org.eclipse.cdt.meson.ui/.settings/org.eclipse.jdt.core.prefs b/build/org.eclipse.cdt.meson.ui/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/build/org.eclipse.cdt.meson.ui/.settings/org.eclipse.jdt.core.prefs
+++ b/build/org.eclipse.cdt.meson.ui/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/build/org.eclipse.cdt.meson.ui/.settings/org.eclipse.jdt.ui.prefs b/build/org.eclipse.cdt.meson.ui/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/build/org.eclipse.cdt.meson.ui/.settings/org.eclipse.jdt.ui.prefs
+++ b/build/org.eclipse.cdt.meson.ui/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/build/org.eclipse.cdt.meson.ui/META-INF/MANIFEST.MF b/build/org.eclipse.cdt.meson.ui/META-INF/MANIFEST.MF
index 04180e512a7..2328dfcb6ee 100644
--- a/build/org.eclipse.cdt.meson.ui/META-INF/MANIFEST.MF
+++ b/build/org.eclipse.cdt.meson.ui/META-INF/MANIFEST.MF
@@ -2,22 +2,23 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name.0
Bundle-SymbolicName: org.eclipse.cdt.meson.ui;singleton:=true
-Bundle-Version: 1.0.200.qualifier
+Bundle-Version: 1.1.500.qualifier
Bundle-Vendor: %vendorName
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-Activator: org.eclipse.cdt.meson.ui.Activator
Bundle-ActivationPolicy: lazy
Bundle-Localization: plugin
Require-Bundle: org.eclipse.core.runtime;bundle-version="3.13.0",
org.eclipse.ui;bundle-version="3.109.0",
org.eclipse.cdt.meson.core;bundle-version="1.0.0",
- org.eclipse.tools.templates.core;bundle-version="1.1.0",
- org.eclipse.tools.templates.ui;bundle-version="1.1.1",
+ org.eclipse.tools.templates.ui;bundle-version="1.3.0",
+ org.eclipse.tools.templates.freemarker;bundle-version="1.2.200",
org.eclipse.ui.ide;bundle-version="3.13.1",
- org.eclipse.tools.templates.freemarker;bundle-version="1.0.0",
org.eclipse.cdt.core;bundle-version="6.4.0",
org.eclipse.core.resources;bundle-version="3.12.0",
org.eclipse.debug.core;bundle-version="3.11.0",
org.eclipse.cdt.launch;bundle-version="9.2.0",
- org.eclipse.debug.ui;bundle-version="3.12.50"
+ org.eclipse.debug.ui;bundle-version="3.12.50",
+ com.fasterxml.jackson.core.jackson-databind;bundle-version="2.9.93",
+ com.fasterxml.jackson.core.jackson-core;bundle-version="2.9.9"
Automatic-Module-Name: org.eclipse.cdt.meson.ui
diff --git a/build/org.eclipse.cdt.meson.ui/about.html b/build/org.eclipse.cdt.meson.ui/about.html
index 164f781a8fd..b3134865230 100644
--- a/build/org.eclipse.cdt.meson.ui/about.html
+++ b/build/org.eclipse.cdt.meson.ui/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.core/about.ini b/build/org.eclipse.cdt.meson.ui/about.ini
index e07a7bb377e..e07a7bb377e 100644
--- a/xlc/org.eclipse.cdt.managedbuilder.xlc.core/about.ini
+++ b/build/org.eclipse.cdt.meson.ui/about.ini
diff --git a/build/org.eclipse.cdt.meson.ui/about.mappings b/build/org.eclipse.cdt.meson.ui/about.mappings
new file mode 100644
index 00000000000..936a8039c3e
--- /dev/null
+++ b/build/org.eclipse.cdt.meson.ui/about.mappings
@@ -0,0 +1,9 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+# The following should contain the build version.
+# e.g. "0=20200106-1728"
+# This value will be added automatically via the build scripts
+0=${buildId}
diff --git a/build/org.eclipse.cdt.meson.ui/about.properties b/build/org.eclipse.cdt.meson.ui/about.properties
new file mode 100644
index 00000000000..05af348fff3
--- /dev/null
+++ b/build/org.eclipse.cdt.meson.ui/about.properties
@@ -0,0 +1,32 @@
+###############################################################################
+# Copyright (c) 2018, 2022 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+# about.properties
+# contains externalized strings for about.ini
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# fill-ins are supplied by about.mappings
+# This file should be translated.
+# NOTE TO TRANSLATOR: Please do not translate the featureVersion variable.
+
+
+blurb=C/C++ Meson Build Support - Preview\n\
+\n\
+Version: {featureVersion}\n\
+Build id: {0}\n\
+\n\
+Copyright (c) 2018, 2022 Contributors to the Eclipse Foundation
+\n\
+See the NOTICE file(s) distributed with this work for additional\n\
+information regarding copyright ownership.\n\
+\n\
+Visit http://www.eclipse.org/cdt
diff --git a/build/org.eclipse.cdt.meson.ui/build.properties b/build/org.eclipse.cdt.meson.ui/build.properties
index 9edaa633726..905d070d39b 100644
--- a/build/org.eclipse.cdt.meson.ui/build.properties
+++ b/build/org.eclipse.cdt.meson.ui/build.properties
@@ -5,5 +5,9 @@ bin.includes = META-INF/,\
icons/,\
plugin.xml,\
plugin.properties,\
- about.html
+ about.html,\
+ cdt_logo_icon32.png,\
+ about.properties,\
+ about.mappings,\
+ about.ini
src.includes = about.html
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.core/cdt_logo_icon32.png b/build/org.eclipse.cdt.meson.ui/cdt_logo_icon32.png
index 470ca81b327..470ca81b327 100644
--- a/xlc/org.eclipse.cdt.managedbuilder.xlc.core/cdt_logo_icon32.png
+++ b/build/org.eclipse.cdt.meson.ui/cdt_logo_icon32.png
Binary files differ
diff --git a/build/org.eclipse.cdt.meson.ui/plugin.xml b/build/org.eclipse.cdt.meson.ui/plugin.xml
index a517f8ec1cf..9c788aaff3c 100644
--- a/build/org.eclipse.cdt.meson.ui/plugin.xml
+++ b/build/org.eclipse.cdt.meson.ui/plugin.xml
@@ -147,7 +147,12 @@
</command>
</menuContribution>
</extension>
-
-
+ <extension
+ point="org.eclipse.ui.ide.projectConfigurators">
+ <projectConfigurator
+ class="org.eclipse.cdt.internal.meson.ui.MesonProjectConfigurator"
+ label="Meson Project">
+ </projectConfigurator>
+ </extension>
</plugin>
diff --git a/build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/internal/meson/ui/MesonBuildTab.java b/build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/internal/meson/ui/MesonBuildTab.java
index 0e2359d1ed3..8840b3dfc1e 100644
--- a/build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/internal/meson/ui/MesonBuildTab.java
+++ b/build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/internal/meson/ui/MesonBuildTab.java
@@ -34,7 +34,7 @@ import org.eclipse.swt.widgets.Text;
public class MesonBuildTab extends CommonBuildTab {
- private static final String NINJA = "Ninja";
+ private static final String NINJA = "Ninja"; //$NON-NLS-1$
private Button unixGenButton;
private Button ninjaGenButton;
private Text mesonArgsText;
@@ -135,7 +135,7 @@ public class MesonBuildTab extends CommonBuildTab {
}
private void updateGeneratorButtons(String generator) {
- if (generator == null || generator.equals(NINJA)) { //$NON-NLS-1$
+ if (generator == null || generator.equals(NINJA)) {
ninjaGenButton.setSelection(true);
} else {
unixGenButton.setSelection(true);
@@ -149,7 +149,7 @@ public class MesonBuildTab extends CommonBuildTab {
ICBuildConfiguration buildConfig = getBuildConfiguration();
buildConfig.setProperty(IMesonConstants.MESON_GENERATOR,
- ninjaGenButton.getSelection() ? NINJA : "Unix Makefiles"); //$NON-NLS-1$ //$NON-NLS-2$
+ ninjaGenButton.getSelection() ? NINJA : "Unix Makefiles"); //$NON-NLS-1$
String mesonArgs = mesonArgsText.getText().trim();
if (!mesonArgs.isEmpty()) {
@@ -176,7 +176,7 @@ public class MesonBuildTab extends CommonBuildTab {
@Override
protected void saveProperties(Map<String, String> properties) {
super.saveProperties(properties);
- properties.put(IMesonConstants.MESON_GENERATOR, ninjaGenButton.getSelection() ? NINJA : "Unix Makefiles"); //$NON-NLS-1$ //$NON-NLS-2$
+ properties.put(IMesonConstants.MESON_GENERATOR, ninjaGenButton.getSelection() ? NINJA : "Unix Makefiles"); //$NON-NLS-1$
properties.put(IMesonConstants.MESON_ARGUMENTS, mesonArgsText.getText().trim());
properties.put(IMesonConstants.BUILD_COMMAND, buildCommandText.getText().trim());
@@ -190,7 +190,7 @@ public class MesonBuildTab extends CommonBuildTab {
String gen = properties.get(IMesonConstants.MESON_GENERATOR);
if (gen != null) {
switch (gen) {
- case NINJA: //$NON-NLS-1$
+ case NINJA:
ninjaGenButton.setSelection(true);
unixGenButton.setSelection(false);
break;
diff --git a/build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/internal/meson/ui/MesonProjectConfigurator.java b/build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/internal/meson/ui/MesonProjectConfigurator.java
new file mode 100644
index 00000000000..3c38675aa16
--- /dev/null
+++ b/build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/internal/meson/ui/MesonProjectConfigurator.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * Copyright (c) 2021 Mat Booth and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.internal.meson.ui;
+
+import java.util.List;
+
+import org.eclipse.cdt.meson.core.MesonProjectGenerator;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.tools.templates.core.IGenerator;
+import org.eclipse.tools.templates.ui.ProjectImportConfigurator;
+
+/**
+ * Smart-import strategy for importing pre-existing Meson projects.
+ */
+public class MesonProjectConfigurator extends ProjectImportConfigurator {
+
+ @Override
+ protected List<String> getProjectFileNames() {
+ return List.of("meson.build"); //$NON-NLS-1$
+ }
+
+ @Override
+ protected IGenerator getGenerator(IProject project) {
+ // Don't pass any template to the generator, we are importing an existing project
+ MesonProjectGenerator generator = new MesonProjectGenerator(null);
+ generator.setProjectName(project.getName());
+ generator.setLocationURI(project.getLocationURI());
+ return generator;
+ }
+}
diff --git a/build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/internal/meson/ui/SWTImagesFactory.java b/build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/internal/meson/ui/SWTImagesFactory.java
index 5c56c670950..0995fed8283 100644
--- a/build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/internal/meson/ui/SWTImagesFactory.java
+++ b/build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/internal/meson/ui/SWTImagesFactory.java
@@ -40,7 +40,7 @@ public class SWTImagesFactory {
private static final String NAME_PREFIX = Activator.PLUGIN_ID + '.';
private static final int NAME_PREFIX_LENGTH = NAME_PREFIX.length();
public static final String IMG_MESON = NAME_PREFIX + "meson-logo.png"; //$NON-NLS-1$
- public static final ImageDescriptor DESC_MESON = createManaged("", IMG_MESON);
+ public static final ImageDescriptor DESC_MESON = createManaged("", IMG_MESON); //$NON-NLS-1$
private static ImageDescriptor createManaged(String prefix, String name) {
return createManaged(imageRegistry, prefix, name);
diff --git a/build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/internal/meson/ui/commands/RunNinjaCommandHandler.java b/build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/internal/meson/ui/commands/RunNinjaCommandHandler.java
index 8e79f194cba..22a4f477056 100644
--- a/build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/internal/meson/ui/commands/RunNinjaCommandHandler.java
+++ b/build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/internal/meson/ui/commands/RunNinjaCommandHandler.java
@@ -79,7 +79,7 @@ public class RunNinjaCommandHandler extends AbstractMesonCommandHandler {
String[] ninjaArgs = null;
if (argString != null) {
List<String> ninjaArgList = new ArrayList<>();
- Matcher m = Pattern.compile("([^\"]\\S*|\".+?\")\\s*").matcher(argString);
+ Matcher m = Pattern.compile("([^\"]\\S*|\".+?\")\\s*").matcher(argString); //$NON-NLS-1$
while (m.find()) {
ninjaArgList.add(m.group(1));
}
diff --git a/build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/meson/ui/properties/MesonPropertyArgs.java b/build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/meson/ui/properties/MesonPropertyArgs.java
index 1d90412dee3..cce190ee8c6 100644
--- a/build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/meson/ui/properties/MesonPropertyArgs.java
+++ b/build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/meson/ui/properties/MesonPropertyArgs.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2018 Red Hat Inc. and others.
+ * Copyright (c) 2018, 2020 Red Hat Inc. and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -23,7 +23,6 @@ public class MesonPropertyArgs extends MesonPropertyText {
@Override
public String getConfiguredString() {
- // TODO Auto-generated method stub
return "-D" + getFieldName() + "='" + getFieldValue() + "'"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
}
diff --git a/build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/meson/ui/properties/MesonPropertyCheckbox.java b/build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/meson/ui/properties/MesonPropertyCheckbox.java
index 1fd22d73650..2b713d683ed 100644
--- a/build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/meson/ui/properties/MesonPropertyCheckbox.java
+++ b/build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/meson/ui/properties/MesonPropertyCheckbox.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2018 Red Hat Inc. and others.
+ * Copyright (c) 2018, 2020 Red Hat Inc. and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -40,7 +40,14 @@ public class MesonPropertyCheckbox implements IMesonPropertyPageControl {
data2.grabExcessHorizontalSpace = true;
data2.horizontalSpan = 1;
Label label = new Label(composite, SWT.NONE);
- label.setText(tooltip);
+ String labelText = tooltip;
+ if (tooltip.length() > 15) {
+ int period = labelText.indexOf("."); //$NON-NLS-1$
+ if (period > 0 && period < tooltip.length() - 1) {
+ labelText = tooltip.substring(0, period + 1);
+ }
+ }
+ label.setText(labelText);
label.setLayoutData(data2);
}
diff --git a/build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/meson/ui/properties/MesonPropertyCombo.java b/build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/meson/ui/properties/MesonPropertyCombo.java
index bff5d38fa5e..433eab9da91 100644
--- a/build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/meson/ui/properties/MesonPropertyCombo.java
+++ b/build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/meson/ui/properties/MesonPropertyCombo.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2018 Red Hat Inc. and others.
+ * Copyright (c) 2018, 2020 Red Hat Inc. and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -30,6 +30,7 @@ public class MesonPropertyCombo implements IMesonPropertyPageControl {
this.initialValue = initialValue;
Label label = new Label(composite, SWT.NONE);
label.setText(name);
+ label.setToolTipText(tooltip);
label.setLayoutData(new GridData());
combo = new Combo(composite, SWT.BORDER | SWT.DROP_DOWN | SWT.READ_ONLY);
GridData data = new GridData(GridData.FILL_BOTH);
diff --git a/build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/meson/ui/properties/MesonPropertyPage.java b/build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/meson/ui/properties/MesonPropertyPage.java
index 9007fcd215b..9b7faf40ad2 100644
--- a/build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/meson/ui/properties/MesonPropertyPage.java
+++ b/build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/meson/ui/properties/MesonPropertyPage.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2016,2018 IAR Systems AB
+ * Copyright (c) 2016,2020 IAR Systems AB
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -53,6 +53,10 @@ import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.dialogs.PropertyPage;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
/**
* Property page for Meson projects. For unconfigured projects, we use the meson command and parse
* the output of the --help option. Otherwise, we use the meson configure command to find current
@@ -89,28 +93,40 @@ public class MesonPropertyPage extends PropertyPage {
configured = buildPath.toFile().exists();
if (configured) {
- ICommandLauncher launcher = CommandLauncherManager.getInstance()
- .getCommandLauncher(project.getActiveBuildConfig().getAdapter(ICBuildConfiguration.class));
- launcher.setProject(project);
- if (launcher instanceof ICBuildCommandLauncher) {
- ((ICBuildCommandLauncher) launcher).setBuildConfiguration(buildConfig);
- }
- Process p = launcher.execute(new Path("meson"), new String[] { "configure", buildDir }, //$NON-NLS-1$ //$NON-NLS-2$
- new String[0], sourceDir, new NullProgressMonitor());
- if (p != null) {
- ByteArrayOutputStream stdout = new ByteArrayOutputStream();
- ByteArrayOutputStream stderr = new ByteArrayOutputStream();
- int rc = -1;
- try {
- if (launcher.waitAndRead(stdout, stderr, new NullProgressMonitor()) == ICommandLauncher.OK) {
- p.waitFor();
- }
- rc = p.exitValue();
- } catch (InterruptedException e) {
- // ignore for now
+ IPath infoPath = new Path(buildDir).append("meson-info"); //$NON-NLS-1$
+ boolean newerMeson = infoPath.toFile().exists();
+ if (newerMeson) {
+ IPath optionsPath = infoPath.append("intro-buildoptions.json"); //$NON-NLS-1$
+ if (optionsPath.toFile().exists()) {
+ componentList = parseInfoOptions(optionsPath, composite);
+ } else {
+ return null;
+ }
+ } else {
+ ICommandLauncher launcher = CommandLauncherManager.getInstance()
+ .getCommandLauncher(project.getActiveBuildConfig().getAdapter(ICBuildConfiguration.class));
+ launcher.setProject(project);
+ if (launcher instanceof ICBuildCommandLauncher) {
+ ((ICBuildCommandLauncher) launcher).setBuildConfiguration(buildConfig);
}
- if (rc == 0) {
- componentList = parseConfigureOutput(stdout, composite);
+ Process p = launcher.execute(new Path("meson"), new String[] { "configure", buildDir }, //$NON-NLS-1$ //$NON-NLS-2$
+ new String[0], sourceDir, new NullProgressMonitor());
+ if (p != null) {
+ ByteArrayOutputStream stdout = new ByteArrayOutputStream();
+ ByteArrayOutputStream stderr = new ByteArrayOutputStream();
+ int rc = -1;
+ try {
+ if (launcher.waitAndRead(stdout, stderr,
+ new NullProgressMonitor()) == ICommandLauncher.OK) {
+ p.waitFor();
+ }
+ rc = p.exitValue();
+ } catch (InterruptedException e) {
+ // ignore for now
+ }
+ if (rc == 0) {
+ componentList = parseConfigureOutput(stdout, composite);
+ }
}
}
} else {
@@ -249,10 +265,10 @@ public class MesonPropertyPage extends PropertyPage {
args.add("configure"); //$NON-NLS-1$
for (IMesonPropertyPageControl control : componentList) {
if (control.isValueChanged()) {
- args.add(control.getConfiguredString()); //$NON-NLS-1$ //$NON-NLS-2$
+ args.add(control.getConfiguredString());
}
}
- if (args.size() == 2) {
+ if (args.size() == 1) {
return true;
}
try {
@@ -268,7 +284,7 @@ public class MesonPropertyPage extends PropertyPage {
}
args.add(buildDir);
Process p = launcher.execute(new Path("meson"), args.toArray(new String[0]), new String[0], sourceDir, //$NON-NLS-1$
- new NullProgressMonitor()); //$NON-NLS-2$
+ new NullProgressMonitor());
int rc = -1;
IConsole console = CCorePlugin.getDefault().getConsole();
console.start(project);
@@ -345,12 +361,12 @@ public class MesonPropertyPage extends PropertyPage {
try {
String output = stdout.toString(StandardCharsets.UTF_8.name()).replaceAll("\\r?\\n\\s+", " "); //$NON-NLS-1$ //$NON-NLS-2$
String[] lines = output.split("--"); //$NON-NLS-1$
- Pattern optionPattern = Pattern.compile("(([a-z-]+)\\s+(([A-Z_][A-Z_]+))?\\s*(\\{.*?\\})?([^\\[\\]]*))");
- Pattern descPattern1 = Pattern.compile("([^\\.]+).*");
- Pattern descPattern = Pattern.compile("([^\\(]*)(\\(default\\:\\s+([^\\)]+)\\).*)");
+ Pattern optionPattern = Pattern.compile("(([a-z-]+)\\s+(([A-Z_][A-Z_]+))?\\s*(\\{.*?\\})?([^\\[\\]]*))"); //$NON-NLS-1$
+ Pattern descPattern1 = Pattern.compile("([^\\.]+).*"); //$NON-NLS-1$
+ Pattern descPattern = Pattern.compile("([^\\(]*)(\\(default\\:\\s+([^\\)]+)\\).*)"); //$NON-NLS-1$
for (String line : lines) {
Matcher optionMatcher = optionPattern.matcher(line);
- if (optionMatcher.matches() && !optionMatcher.group(2).equals("help")) {
+ if (optionMatcher.matches() && !optionMatcher.group(2).equals("help")) { //$NON-NLS-1$
if (optionMatcher.group(3) != null) {
String defaultValue = argMap.get(optionMatcher.group(2));
String description = optionMatcher.group(6);
@@ -409,7 +425,7 @@ public class MesonPropertyPage extends PropertyPage {
Pattern optionWithValuesPattern = Pattern.compile(Messages.MesonPropertyPage_option_with_values_pattern);
Pattern optionLine = Pattern.compile("(\\w+)\\s+([\\w,\\-,/]+)\\s+(.*)$"); //$NON-NLS-1$
Pattern optionWithValuesLine = Pattern
- .compile("(\\w+)\\s+([\\w,\\-,/]+)\\s+\\[([\\w,\\-,/]+)((,\\s+[\\w,\\-]+)*)\\]\\s+(.*)$");
+ .compile("(\\w+)\\s+([\\w,\\-,/]+)\\s+\\[([\\w,\\-,/]+)((,\\s+[\\w,\\-]+)*)\\]\\s+(.*)$"); //$NON-NLS-1$
Pattern compilerOrLinkerArgs = Pattern.compile(Messages.MesonPropertyPage_compiler_or_link_args);
Pattern argLine = Pattern.compile("(\\w+)\\s+\\[([^\\]]*)\\]"); //$NON-NLS-1$
Pattern groupPattern = Pattern.compile("(([^:]*)):"); //$NON-NLS-1$
@@ -550,7 +566,7 @@ public class MesonPropertyPage extends PropertyPage {
String description = m4.group(6);
String[] values = new String[] { possibleValue };
if (!extraValues.isEmpty()) {
- values = extraValues.split(",\\s+");
+ values = extraValues.split(",\\s+"); //$NON-NLS-1$
values[0] = possibleValue;
}
IMesonPropertyPageControl control = new MesonPropertyCombo(parent, name, values, value,
@@ -576,4 +592,89 @@ public class MesonPropertyPage extends PropertyPage {
return controls;
}
+ List<IMesonPropertyPageControl> parseInfoOptions(IPath optionsPath, Composite composite) {
+ List<IMesonPropertyPageControl> controls = new ArrayList<>();
+ ObjectMapper mapper = new ObjectMapper();
+ Composite parent = composite;
+ try {
+ JsonNode root = mapper.readTree(optionsPath.toFile());
+ if (!root.isArray()) {
+ return null;
+ }
+ String lastSection = ""; //$NON-NLS-1$
+ for (JsonNode node : root) {
+ IMesonPropertyPageControl control = null;
+ String type = node.path("type").asText(); //$NON-NLS-1$
+ String section = node.path("section").asText(); //$NON-NLS-1$
+ String name = null;
+ String value = null;
+ String description = null;
+ if (!section.equals(lastSection)) {
+ Group group = new Group(composite, SWT.BORDER);
+ group.setLayout(new GridLayout(2, true));
+ group.setLayoutData(new GridData(GridData.FILL_BOTH));
+ String sectionName = section + " options:"; //$NON-NLS-1$
+ sectionName = sectionName.substring(0, 1).toUpperCase() + sectionName.substring(1);
+ group.setText(sectionName);
+ parent = group;
+ lastSection = section;
+ }
+ switch (type) {
+ case "combo": //$NON-NLS-1$
+ name = node.path("name").asText(); //$NON-NLS-1$
+ value = node.path("value").asText(); //$NON-NLS-1$
+ description = node.path("description").asText(); //$NON-NLS-1$
+ JsonNode choices = node.path("choices"); //$NON-NLS-1$
+ ArrayList<String> choiceList = new ArrayList<>();
+ for (JsonNode choiceNode : choices) {
+ String choice = choiceNode.asText();
+ choiceList.add(choice);
+ }
+ control = new MesonPropertyCombo(parent, name, choiceList.toArray(new String[0]), value,
+ description);
+ controls.add(control);
+ break;
+ case "boolean": //$NON-NLS-1$
+ name = node.path("name").asText(); //$NON-NLS-1$
+ value = node.path("value").asText(); //$NON-NLS-1$
+ description = node.path("description").asText(); //$NON-NLS-1$
+ control = new MesonPropertyCheckbox(parent, name, Boolean.getBoolean(value), description);
+ controls.add(control);
+ break;
+ case "string": //$NON-NLS-1$
+ name = node.path("name").asText(); //$NON-NLS-1$
+ value = node.path("value").asText(); //$NON-NLS-1$
+ description = node.path("description").asText(); //$NON-NLS-1$
+ control = new MesonPropertyText(parent, name, value, description);
+ controls.add(control);
+ break;
+ case "array": //$NON-NLS-1$
+ name = node.path("name").asText(); //$NON-NLS-1$
+ value = new String(""); //$NON-NLS-1$
+ for (JsonNode val : node.path("value")) { ////$NON-NLS-1$
+ if (!value.isEmpty()) {
+ value += ","; //$NON-NLS-1$
+ }
+ value += val.asText();
+ }
+ description = node.path("description").asText(); //$NON-NLS-1$
+ control = new MesonPropertyText(parent, name, value, description);
+ controls.add(control);
+ break;
+ case "integer": //$NON-NLS-1$
+ name = node.path("name").asText(); //$NON-NLS-1$
+ value = node.path("value").asText(); //$NON-NLS-1$
+ description = node.path("description").asText(); //$NON-NLS-1$
+ control = new MesonPropertyInteger(parent, this, name, value, description);
+ controls.add(control);
+ break;
+ }
+ }
+ } catch (JsonProcessingException e) {
+ Activator.log(e);
+ } catch (IOException e) {
+ Activator.log(e);
+ }
+ return controls;
+ }
} \ No newline at end of file
diff --git a/build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/meson/ui/properties/MesonPropertySpecialCheckbox.java b/build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/meson/ui/properties/MesonPropertySpecialCheckbox.java
index 1bd5e1c3f27..ef15e16d0c0 100644
--- a/build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/meson/ui/properties/MesonPropertySpecialCheckbox.java
+++ b/build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/meson/ui/properties/MesonPropertySpecialCheckbox.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2018 Red Hat Inc. and others.
+ * Copyright (c) 2018, 2020 Red Hat Inc. and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -26,7 +26,7 @@ public class MesonPropertySpecialCheckbox extends MesonPropertyCheckbox {
if (checkbox.getSelection()) {
return "--" + getFieldName(); //$NON-NLS-1$
}
- return "";
+ return ""; //$NON-NLS-1$
}
}
diff --git a/build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/meson/ui/properties/MesonPropertyText.java b/build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/meson/ui/properties/MesonPropertyText.java
index 951ce10b46e..ac819882650 100644
--- a/build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/meson/ui/properties/MesonPropertyText.java
+++ b/build/org.eclipse.cdt.meson.ui/src/org/eclipse/cdt/meson/ui/properties/MesonPropertyText.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2018 Red Hat Inc. and others.
+ * Copyright (c) 2018, 2020 Red Hat Inc. and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -33,13 +33,13 @@ public class MesonPropertyText implements IMesonPropertyPageControl {
this.initialValue = initialValue;
Label label = new Label(composite, SWT.NONE);
label.setText(name);
+ label.setToolTipText(tooltip);
label.setLayoutData(new GridData());
text = new Text(composite, SWT.SINGLE | SWT.BORDER);
GridData data = new GridData(GridData.FILL_BOTH);
data.grabExcessHorizontalSpace = true;
text.setLayoutData(data);
text.setText(initialValue);
- text.setToolTipText(tooltip);
}
@Override
@@ -68,7 +68,7 @@ public class MesonPropertyText implements IMesonPropertyPageControl {
if (value != null && !value.isEmpty()) {
return "--" + getFieldName() + "=" + getFieldValue(); //$NON-NLS-1$ //$NON-NLS-2$
}
- return "";
+ return ""; //$NON-NLS-1$
}
@Override
diff --git a/build/pom.xml b/build/pom.xml
index 30adc4e75a1..e83e53bfb42 100644
--- a/build/pom.xml
+++ b/build/pom.xml
@@ -1,4 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2017, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
@@ -7,7 +17,7 @@
<parent>
<groupId>org.eclipse.cdt</groupId>
<artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
+ <version>10.7.0-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.cdt.build-parent</artifactId>
diff --git a/cmake/README.txt b/cmake/README.txt
new file mode 100644
index 00000000000..144d93c5a96
--- /dev/null
+++ b/cmake/README.txt
@@ -0,0 +1 @@
+Files in this directory tree provide CMake support for the CDT core build.
diff --git a/cmake/aggregator/.project b/cmake/aggregator/.project
new file mode 100644
index 00000000000..2f9f1ca34d1
--- /dev/null
+++ b/cmake/aggregator/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.cdt.cmake-aggregator</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ </natures>
+</projectDescription>
diff --git a/cmake/aggregator/.settings/org.eclipse.core.resources.prefs b/cmake/aggregator/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/cmake/aggregator/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino-feature/.settings/org.eclipse.m2e.core.prefs b/cmake/aggregator/.settings/org.eclipse.m2e.core.prefs
index f897a7f1cb2..f897a7f1cb2 100644
--- a/toolchains/arduino/org.eclipse.cdt.arduino-feature/.settings/org.eclipse.m2e.core.prefs
+++ b/cmake/aggregator/.settings/org.eclipse.m2e.core.prefs
diff --git a/cmake/aggregator/cmake-aggregator.launch b/cmake/aggregator/cmake-aggregator.launch
new file mode 100644
index 00000000000..b1d59513964
--- /dev/null
+++ b/cmake/aggregator/cmake-aggregator.launch
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.m2e.Maven2LaunchConfigurationType">
+<booleanAttribute key="M2_DEBUG_OUTPUT" value="false"/>
+<stringAttribute key="M2_GOALS" value="-f cmake/aggregator verify"/>
+<booleanAttribute key="M2_NON_RECURSIVE" value="false"/>
+<booleanAttribute key="M2_OFFLINE" value="false"/>
+<stringAttribute key="M2_PROFILES" value=""/>
+<listAttribute key="M2_PROPERTIES">
+<listEntry value="jgit.dirtyWorkingTree-cdtDefault=warning"/>
+</listAttribute>
+<stringAttribute key="M2_RUNTIME" value="EMBEDDED"/>
+<booleanAttribute key="M2_SKIP_TESTS" value="false"/>
+<intAttribute key="M2_THREADS" value="1"/>
+<booleanAttribute key="M2_UPDATE_SNAPSHOTS" value="false"/>
+<stringAttribute key="M2_USER_SETTINGS" value=""/>
+<booleanAttribute key="M2_WORKSPACE_RESOLUTION" value="false"/>
+<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_CLASSPATH_ONLY_JAR" value="false"/>
+<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/CDC-1.0%Foundation-1.0"/>
+<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${workspace_loc:/org.eclipse.cdt.cmake-aggregator}/../.."/>
+</launchConfiguration>
diff --git a/cmake/aggregator/pom.xml b/cmake/aggregator/pom.xml
new file mode 100644
index 00000000000..b3d2f1476f1
--- /dev/null
+++ b/cmake/aggregator/pom.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2020, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.cdt</groupId>
+ <artifactId>cmake-parent</artifactId>
+ <version>10.7.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>cmake-aggregator</artifactId>
+ <packaging>pom</packaging>
+ <!-- aggregates just the cmake bundles
+ Convenient if you focus on working on the cmake bundles only.
+ -->
+
+ <modules>
+ <module>../../releng/org.eclipse.cdt.target</module>
+ <module>../../jsoncdb</module>
+ <module>..</module>
+ </modules>
+</project>
diff --git a/build/org.eclipse.cdt.cmake-feature/.project b/cmake/org.eclipse.cdt.cmake-feature/.project
index 4bfc1eda8ff..4bfc1eda8ff 100644
--- a/build/org.eclipse.cdt.cmake-feature/.project
+++ b/cmake/org.eclipse.cdt.cmake-feature/.project
diff --git a/cmake/org.eclipse.cdt.cmake-feature/.settings/org.eclipse.core.resources.prefs b/cmake/org.eclipse.cdt.cmake-feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake-feature/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/build/org.eclipse.cdt.cmake-feature/build.properties b/cmake/org.eclipse.cdt.cmake-feature/build.properties
index b3a611b5c93..b3a611b5c93 100644
--- a/build/org.eclipse.cdt.cmake-feature/build.properties
+++ b/cmake/org.eclipse.cdt.cmake-feature/build.properties
diff --git a/build/org.eclipse.cdt.cmake-feature/feature.properties b/cmake/org.eclipse.cdt.cmake-feature/feature.properties
index 1297a790fed..1297a790fed 100644
--- a/build/org.eclipse.cdt.cmake-feature/feature.properties
+++ b/cmake/org.eclipse.cdt.cmake-feature/feature.properties
diff --git a/cmake/org.eclipse.cdt.cmake-feature/feature.xml b/cmake/org.eclipse.cdt.cmake-feature/feature.xml
new file mode 100644
index 00000000000..c8308326cfd
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake-feature/feature.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2020, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
+<feature
+ id="org.eclipse.cdt.cmake"
+ label="%featureName"
+ version="10.7.0.qualifier"
+ provider-name="%providerName"
+ plugin="org.eclipse.cdt.cmake.ui"
+ license-feature="org.eclipse.license"
+ license-feature-version="0.0.0">
+
+ <description>
+ %description
+ </description>
+
+ <copyright>
+ %copyright
+ </copyright>
+
+ <license url="%licenseURL">
+ %license
+ </license>
+
+ <plugin
+ id="org.eclipse.cdt.cmake.core"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.cdt.cmake.ui"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.cdt.jsoncdb.core"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.cdt.jsoncdb.core.doc"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"/>
+
+ <plugin
+ id="org.eclipse.cdt.jsoncdb.core.ui"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+</feature>
diff --git a/cmake/org.eclipse.cdt.cmake.core.tests/.classpath b/cmake/org.eclipse.cdt.cmake.core.tests/.classpath
new file mode 100644
index 00000000000..581705c96a9
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.core.tests/.classpath
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src">
+ <attributes>
+ <attribute name="test" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/cmake/org.eclipse.cdt.cmake.core.tests/.project b/cmake/org.eclipse.cdt.cmake.core.tests/.project
new file mode 100644
index 00000000000..d87b0546a8d
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.core.tests/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.cdt.cmake.core.tests</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/cmake/org.eclipse.cdt.cmake.core.tests/.settings/org.eclipse.core.resources.prefs b/cmake/org.eclipse.cdt.cmake.core.tests/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.core.tests/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/cmake/org.eclipse.cdt.cmake.core.tests/.settings/org.eclipse.jdt.core.prefs b/cmake/org.eclipse.cdt.cmake.core.tests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..5b1c443114d
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.core.tests/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=ignore
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
+org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=ignore
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/build/org.eclipse.cdt.cmake.core/.settings/org.eclipse.jdt.launching.prefs b/cmake/org.eclipse.cdt.cmake.core.tests/.settings/org.eclipse.jdt.launching.prefs
index f8a131b56e0..f8a131b56e0 100644
--- a/build/org.eclipse.cdt.cmake.core/.settings/org.eclipse.jdt.launching.prefs
+++ b/cmake/org.eclipse.cdt.cmake.core.tests/.settings/org.eclipse.jdt.launching.prefs
diff --git a/cmake/org.eclipse.cdt.cmake.core.tests/.settings/org.eclipse.jdt.ui.prefs b/cmake/org.eclipse.cdt.cmake.core.tests/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.core.tests/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/.settings/org.eclipse.m2e.core.prefs b/cmake/org.eclipse.cdt.cmake.core.tests/.settings/org.eclipse.m2e.core.prefs
index f897a7f1cb2..f897a7f1cb2 100644
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core/.settings/org.eclipse.m2e.core.prefs
+++ b/cmake/org.eclipse.cdt.cmake.core.tests/.settings/org.eclipse.m2e.core.prefs
diff --git a/build/org.eclipse.cdt.cmake.ui.tests/.settings/org.eclipse.pde.api.tools.prefs b/cmake/org.eclipse.cdt.cmake.core.tests/.settings/org.eclipse.pde.api.tools.prefs
index ec9fbf321d0..ec9fbf321d0 100644
--- a/build/org.eclipse.cdt.cmake.ui.tests/.settings/org.eclipse.pde.api.tools.prefs
+++ b/cmake/org.eclipse.cdt.cmake.core.tests/.settings/org.eclipse.pde.api.tools.prefs
diff --git a/build/org.eclipse.cdt.cmake.ui.tests/.settings/org.eclipse.pde.prefs b/cmake/org.eclipse.cdt.cmake.core.tests/.settings/org.eclipse.pde.prefs
index 51a63ec9988..51a63ec9988 100644
--- a/build/org.eclipse.cdt.cmake.ui.tests/.settings/org.eclipse.pde.prefs
+++ b/cmake/org.eclipse.cdt.cmake.core.tests/.settings/org.eclipse.pde.prefs
diff --git a/cmake/org.eclipse.cdt.cmake.core.tests/META-INF/MANIFEST.MF b/cmake/org.eclipse.cdt.cmake.core.tests/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..bc6a7e6aa49
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.core.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,13 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %Bundle-Name
+Bundle-SymbolicName: org.eclipse.cdt.cmake.core.tests
+Bundle-Version: 1.0.0.qualifier
+Fragment-Host: org.eclipse.cdt.cmake.core;bundle-version="1.3.0"
+Automatic-Module-Name: org.eclipse.cdt.cmake.core.tests
+Bundle-Vendor: %Bundle-Vendor
+Bundle-Copyright: %Bundle-Copyright
+Require-Bundle: org.junit,
+ org.junit.jupiter.api,
+ org.assertj;bundle-version="3.14.0"
+
diff --git a/cmake/org.eclipse.cdt.cmake.core.tests/OSGI-INF/l10n/bundle.properties b/cmake/org.eclipse.cdt.cmake.core.tests/OSGI-INF/l10n/bundle.properties
new file mode 100644
index 00000000000..df5da1813d3
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.core.tests/OSGI-INF/l10n/bundle.properties
@@ -0,0 +1,9 @@
+Bundle-Name = org.eclipse.cdt.cmake.core.tests
+Bundle-Vendor = Eclipse CDT
+Bundle-Copyright = 2020 Martin Weber\n\
+\n\
+This program and the accompanying materials are made\n\
+available under the terms of the Eclipse Public License 2.0\n\
+which is available at https://www.eclipse.org/legal/epl-2.0/\n\
+\n\
+SPDX-License-Identifier: EPL-2.0\n\ \ No newline at end of file
diff --git a/cmake/org.eclipse.cdt.cmake.core.tests/about.html b/cmake/org.eclipse.cdt.cmake.core.tests/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.core.tests/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/cmake/org.eclipse.cdt.cmake.core.tests/build.properties b/cmake/org.eclipse.cdt.cmake.core.tests/build.properties
new file mode 100644
index 00000000000..30c35d74ee2
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.core.tests/build.properties
@@ -0,0 +1,7 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ OSGI-INF/,\
+ about.html
+src.includes = about.html
diff --git a/cmake/org.eclipse.cdt.cmake.core.tests/src/org/eclipse/cdt/cmake/core/internal/CMakeErrorParserTest.java b/cmake/org.eclipse.cdt.cmake.core.tests/src/org/eclipse/cdt/cmake/core/internal/CMakeErrorParserTest.java
new file mode 100644
index 00000000000..268fef30c8c
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.core.tests/src/org/eclipse/cdt/cmake/core/internal/CMakeErrorParserTest.java
@@ -0,0 +1,349 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Martin Weber.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.cmake.core.internal;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.util.Map;
+import java.util.Objects;
+
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.runtime.CoreException;
+import org.junit.Assert;
+import org.junit.Test;
+
+/**
+ * @author Martin Weber
+ *
+ */
+public class CMakeErrorParserTest {
+
+ @SuppressWarnings("resource")
+ @Test
+ public void testCtorNPE() {
+ try {
+ new CMakeErrorParser(null);
+ Assert.fail("NullPointerException expected");
+ } catch (NullPointerException expected) {
+ }
+ }
+
+ /**
+ * Test method for {@link org.eclipse.cdt.cmake.core.internal.CMakeErrorParser#addInput(java.lang.CharSequence)}.
+ * Just tests whether the call survives.
+ */
+ @Test
+ public void testAddInput() {
+ ICMakeExecutionMarkerFactory f = (m, s, fi, a) -> {
+ };
+ try (CMakeErrorParser testee = new CMakeErrorParser(f)) {
+ testee.addInput("c f g b\n blah");
+ }
+ }
+
+ /**
+ * Test method for {@link org.eclipse.cdt.cmake.core.internal.CMakeErrorParser#close()}.
+ * Just tests whether the call survives.
+ */
+ @Test
+ public void testClose() {
+ ICMakeExecutionMarkerFactory f = (m, s, fi, a) -> {
+ };
+ CMakeErrorParser testee = new CMakeErrorParser(f);
+ testee.close();
+ }
+
+ /**
+ * test "CMake Error"
+ */
+ @Test
+ public void testError() {
+ String msgStart = "CMake Error";
+ String fmt = "%1$s%2$s\n" + "-- ignored lkjdfflgjd an" + "\n%1$s%2$s\n";
+ String fmt2 = "\n%1$s%2$s\n" + "\n%1$s%2$s" + "\n%1$s%2$s";
+ String msgContent = " at xyz:123\n some message";
+ String input = String.format(fmt, msgStart, msgContent);
+
+ CountingCMakeExecutionMarkerFactory f = new CountingCMakeExecutionMarkerFactory();
+ try (CMakeErrorParser testee = new CMakeErrorParser(f)) {
+ testee.addInput("ignored leading\njunk adlasdj\n");
+ testee.addInput(input);
+ testee.addInput(input);
+ testee.addInput(String.format(fmt2, msgStart, msgContent));
+ testee.addInput("-- ignored lkjdfflgjd an");
+ }
+ assertEquals(7, f.markerCnt);
+ }
+
+ /**
+ * test "CMake Error (dev)"
+ */
+ @Test
+ public void testErrorDev() {
+ String msgStart = "CMake Error (dev)";
+ String fmt = "%1$s%2$s\n" + "-- ignored lkjdfflgjd an" + "\n%1$s%2$s\n";
+ String fmt2 = "\n%1$s%2$s\n" + "\n%1$s%2$s" + "\n%1$s%2$s";
+ String msgContent = " at xyz:123\n some message";
+ String input = String.format(fmt, msgStart, msgContent);
+
+ CountingCMakeExecutionMarkerFactory f = new CountingCMakeExecutionMarkerFactory();
+ try (CMakeErrorParser testee = new CMakeErrorParser(f)) {
+ testee.addInput("ignored leading\njunk adlasdj\n");
+ testee.addInput(input);
+ testee.addInput(input);
+ testee.addInput(String.format(fmt2, msgStart, msgContent));
+ testee.addInput("-- ignored lkjdfflgjd an");
+ }
+ assertEquals(7, f.markerCnt);
+ }
+
+ /**
+ * test "CMake Internal Error (please report a bug)"
+ */
+ @Test
+ public void testInternalError() {
+ String msgStart = "CMake Internal Error (please report a bug)";
+ String fmt = "%1$s%2$s\n" + "-- ignored lkjdfflgjd an" + "\n%1$s%2$s\n";
+ String fmt2 = "\n%1$s%2$s\n" + "\n%1$s%2$s" + "\n%1$s%2$s";
+ String msgContent = " at xyz:123\n some message";
+ String input = String.format(fmt, msgStart, msgContent);
+
+ CountingCMakeExecutionMarkerFactory f = new CountingCMakeExecutionMarkerFactory();
+ try (CMakeErrorParser testee = new CMakeErrorParser(f)) {
+ testee.addInput("ignored leading\njunk adlasdj\n");
+ testee.addInput(input);
+ testee.addInput(input);
+ testee.addInput(String.format(fmt2, msgStart, msgContent));
+ testee.addInput("-- ignored lkjdfflgjd an");
+ }
+ assertEquals(7, f.markerCnt);
+ }
+
+ /**
+ * test "CMake Deprecation Error"
+ */
+ @Test
+ public void testDeprecationError() {
+ String msgStart = "CMake Deprecation Error";
+ String fmt = "%1$s%2$s\n" + "-- ignored lkjdfflgjd an" + "\n%1$s%2$s\n";
+ String fmt2 = "\n%1$s%2$s\n" + "\n%1$s%2$s" + "\n%1$s%2$s";
+ String msgContent = " at xyz:123\n some message";
+ String input = String.format(fmt, msgStart, msgContent);
+
+ CountingCMakeExecutionMarkerFactory f = new CountingCMakeExecutionMarkerFactory();
+ try (CMakeErrorParser testee = new CMakeErrorParser(f)) {
+ testee.addInput("ignored leading\njunk adlasdj\n");
+ testee.addInput(input);
+ testee.addInput(input);
+ testee.addInput(String.format(fmt2, msgStart, msgContent));
+ testee.addInput("-- ignored lkjdfflgjd an");
+ }
+ assertEquals(7, f.markerCnt);
+ }
+
+ /**
+ * test "CMake Deprecation Warning"
+ */
+ @Test
+ public void testDeprecationWarning() {
+ String msgStart = "CMake Deprecation Warning";
+ String fmt = "%1$s%2$s\n" + "-- ignored lkjdfflgjd an" + "\n%1$s%2$s\n";
+ String fmt2 = "\n%1$s%2$s\n" + "\n%1$s%2$s" + "\n%1$s%2$s";
+ String msgContent = " at xyz:123\n some message";
+ String input = String.format(fmt, msgStart, msgContent);
+
+ CountingCMakeExecutionMarkerFactory f = new CountingCMakeExecutionMarkerFactory();
+ try (CMakeErrorParser testee = new CMakeErrorParser(f)) {
+ testee.addInput("ignored leading\njunk adlasdj\n");
+ testee.addInput(input);
+ testee.addInput(input);
+ testee.addInput(String.format(fmt2, msgStart, msgContent));
+ testee.addInput("-- ignored lkjdfflgjd an");
+ }
+ assertEquals(7, f.markerCnt);
+ }
+
+ /**
+ * test "CMake Warning"
+ */
+ @Test
+ public void testCMakeWarning() {
+ String msgStart = "CMake Warning";
+ String fmt = "%1$s%2$s\n" + "-- ignored lkjdfflgjd an" + "\n%1$s%2$s\n";
+ String fmt2 = "\n%1$s%2$s\n" + "\n%1$s%2$s" + "\n%1$s%2$s";
+ String msgContent = " at xyz:123\n some message";
+ String input = String.format(fmt, msgStart, msgContent);
+
+ CountingCMakeExecutionMarkerFactory f = new CountingCMakeExecutionMarkerFactory();
+ try (CMakeErrorParser testee = new CMakeErrorParser(f)) {
+ testee.addInput("ignored leading\njunk adlasdj\n");
+ testee.addInput(input);
+ testee.addInput(input);
+ testee.addInput(String.format(fmt2, msgStart, msgContent));
+ testee.addInput("-- ignored lkjdfflgjd an");
+ }
+ assertEquals(7, f.markerCnt);
+ }
+
+ /**
+ * test "CMake Warning (dev)"
+ */
+ @Test
+ public void testCMakeWarningDev() {
+ String msgStart = "CMake Warning (dev)";
+ String fmt = "%1$s%2$s\n" + "-- ignored lkjdfflgjd an" + "\n%1$s%2$s\n";
+ String fmt2 = "\n%1$s%2$s\n" + "\n%1$s%2$s" + "\n%1$s%2$s";
+ String msgContent = " at xyz:123\n some message";
+ String input = String.format(fmt, msgStart, msgContent);
+
+ CountingCMakeExecutionMarkerFactory f = new CountingCMakeExecutionMarkerFactory();
+ try (CMakeErrorParser testee = new CMakeErrorParser(f)) {
+ testee.addInput("ignored leading\njunk adlasdj\n");
+ testee.addInput(input);
+ testee.addInput(input);
+ testee.addInput(String.format(fmt2, msgStart, msgContent));
+ testee.addInput("-- ignored lkjdfflgjd an");
+ }
+ assertEquals(7, f.markerCnt);
+ }
+
+ /**
+ * Tests whether the file name and line number are extracted from the message.
+ */
+ @Test
+ public void testFilenameLineNo() {
+ final String msgStart = "CMake Warning";
+ final String filename = "FileWithError.ext";
+ final Integer lineNumber = Integer.valueOf(505);
+ {
+ String fmt = "%1$s at %2$s:%3$d Have\n some message text\n until here";
+ HasFilenameAndLineNumberCEMFactory f = new HasFilenameAndLineNumberCEMFactory();
+ try (CMakeErrorParser testee = new CMakeErrorParser(f)) {
+ String input = String.format(fmt, msgStart, filename, lineNumber);
+ testee.addInput(input);
+ }
+ assertEquals(1, f.markerCnt);
+ assertEquals(filename, f.filePath);
+ assertEquals(lineNumber, f.lineNumber);
+ }
+ {
+ String fmt = "%1$s: Error in cmake code at %2$s:%3$d Have\n some message text\n until here";
+ HasFilenameAndLineNumberCEMFactory f = new HasFilenameAndLineNumberCEMFactory();
+ try (CMakeErrorParser testee = new CMakeErrorParser(f)) {
+ String input = String.format(fmt, msgStart, filename, lineNumber);
+ testee.addInput(input);
+ }
+ assertEquals(1, f.markerCnt);
+ assertEquals(filename, f.filePath);
+ assertEquals(lineNumber, f.lineNumber);
+ }
+ {
+ String fmt = "%1$s at %2$s:%3$d Have\n some message text\n until here";
+ HasFilenameAndLineNumberCEMFactory f = new HasFilenameAndLineNumberCEMFactory();
+ try (CMakeErrorParser testee = new CMakeErrorParser(f)) {
+ String input = String.format(fmt, msgStart, filename, lineNumber);
+ testee.addInput(input);
+ }
+ assertEquals(1, f.markerCnt);
+ assertEquals(filename, f.filePath);
+ assertEquals(lineNumber, f.lineNumber);
+ }
+ {
+ String fmt = "%1$s in %2$s:%3$d Have\n some message text\n until here";
+ HasFilenameAndLineNumberCEMFactory f = new HasFilenameAndLineNumberCEMFactory();
+ try (CMakeErrorParser testee = new CMakeErrorParser(f)) {
+ String input = String.format(fmt, msgStart, filename, lineNumber);
+ testee.addInput(input);
+ }
+ assertEquals(1, f.markerCnt);
+ assertEquals(filename, f.filePath);
+ assertEquals(lineNumber, f.lineNumber);
+ }
+ }
+
+ /**
+ * Tests whether the file name is extracted from the message.
+ */
+ @Test
+ public void testFilename() {
+ final String msgStart = "CMake Warning";
+ final String filename = "FileWithError.ext";
+ {
+ String fmt = "%1$s in %2$s: Have\n some message text\n until here";
+ HasFilenameAndLineNumberCEMFactory f = new HasFilenameAndLineNumberCEMFactory();
+ try (CMakeErrorParser testee = new CMakeErrorParser(f)) {
+ String input = String.format(fmt, msgStart, filename);
+ testee.addInput(input);
+ }
+ assertEquals(1, f.markerCnt);
+ assertEquals(filename, f.filePath);
+ }
+ }
+
+ /**
+ * Tests without the file name.
+ */
+ @Test
+ public void testNoFilename() {
+ final String msgStart = "CMake Warning";
+ final String message = " Have\\n some message text\\n until here";
+ {
+ String fmt = "%1$s:%2$s";
+ HasMessageCEMFactory f = new HasMessageCEMFactory();
+ try (CMakeErrorParser testee = new CMakeErrorParser(f)) {
+ String input = String.format(fmt, msgStart, message);
+ testee.addInput(input);
+ }
+ assertEquals(1, f.markerCnt);
+ assertTrue("mgsStart", f.message.startsWith(msgStart));
+ assertTrue("message", f.message.endsWith(message));
+ }
+ }
+
+ /////////////////////////////////////////////////////////////////////////////
+ private static class CountingCMakeExecutionMarkerFactory implements ICMakeExecutionMarkerFactory {
+ int markerCnt = 0;
+
+ @Override
+ public void createMarker(String message, int severity, String filePath, Map<String, Object> mandatoryAttributes)
+ throws CoreException {
+ Objects.requireNonNull(message, "message");
+ Objects.requireNonNull(mandatoryAttributes, "mandatoryAttributes");
+ markerCnt++;
+ }
+ }
+
+ private static class HasFilenameAndLineNumberCEMFactory extends CountingCMakeExecutionMarkerFactory {
+ private String filePath;
+ private Object lineNumber;
+
+ @Override
+ public void createMarker(String message, int severity, String filePath, Map<String, Object> mandatoryAttributes)
+ throws CoreException {
+ super.createMarker(message, severity, filePath, mandatoryAttributes);
+ this.filePath = filePath;
+ this.lineNumber = mandatoryAttributes.get(IMarker.LINE_NUMBER);
+ }
+ }
+
+ private static class HasMessageCEMFactory extends CountingCMakeExecutionMarkerFactory {
+ private String message;
+
+ @Override
+ public void createMarker(String message, int severity, String filePath, Map<String, Object> mandatoryAttributes)
+ throws CoreException {
+ super.createMarker(message, severity, filePath, mandatoryAttributes);
+ this.message = message;
+ }
+ }
+}
diff --git a/cmake/org.eclipse.cdt.cmake.core.tests/src/org/eclipse/cdt/cmake/core/internal/CMakePropertiesControllerTest.java b/cmake/org.eclipse.cdt.cmake.core.tests/src/org/eclipse/cdt/cmake/core/internal/CMakePropertiesControllerTest.java
new file mode 100644
index 00000000000..66f61d86b0d
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.core.tests/src/org/eclipse/cdt/cmake/core/internal/CMakePropertiesControllerTest.java
@@ -0,0 +1,103 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Martin Weber.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.cmake.core.internal;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.Assert.assertNotNull;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Path;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
+
+import org.eclipse.cdt.cmake.core.properties.CMakeGenerator;
+import org.eclipse.cdt.cmake.core.properties.ICMakeProperties;
+import org.eclipse.cdt.cmake.core.properties.IOsOverrides;
+import org.junit.Test;
+
+/**
+ * @author Martin Weber
+ */
+public class CMakePropertiesControllerTest {
+
+ /**
+ * Test method for {@link org.eclipse.cdt.cmake.core.internal.CMakePropertiesController#load()}.
+ * @throws IOException
+ */
+ @Test
+ public void testLoad() throws IOException {
+ CMakePropertiesController testee;
+ // test with non-existing file
+ Path file = Path.of(new File("does-not-exist" + UUID.randomUUID().toString()).toURI());
+ testee = new CMakePropertiesController(file, () -> {
+ });
+ assertNotNull(testee.load());
+
+ // test with empty file
+ File f = File.createTempFile("CMakePropertiesControllerTest", null);
+ f.deleteOnExit();
+ file = Path.of(f.toURI());
+ testee = new CMakePropertiesController(file, () -> {
+ });
+ assertNotNull(testee.load());
+ }
+
+ /**
+ * Test method for {@link org.eclipse.cdt.cmake.core.internal.CMakePropertiesController#save(org.eclipse.cdt.cmake.core.properties.ICMakeProperties)}.
+ * @throws IOException
+ */
+ @Test
+ public void testSaveLoad() throws IOException {
+ Path file = Path.of(File.createTempFile("CMakePropertiesControllerTest", null).toURI());
+ CMakePropertiesController testee = new CMakePropertiesController(file, () -> {
+ });
+ ICMakeProperties props = testee.load();
+ assertNotNull(props);
+
+ props.setCacheFile("cacheFile");
+ props.setClearCache(true);
+ props.setDebugOutput(true);
+ props.setDebugTryCompile(true);
+ props.setTrace(true);
+ props.setWarnNoDev(true);
+ props.setWarnUnitialized(true);
+ props.setWarnUnused(true);
+ {
+ IOsOverrides overrides = props.getLinuxOverrides();
+ overrides.setGenerator(CMakeGenerator.Ninja);
+ List<String> extraArgs = new ArrayList<>();
+ extraArgs.add("arg1l=1");
+ extraArgs.add("arg2l=2");
+ overrides.setExtraArguments(extraArgs);
+ }
+ {
+ IOsOverrides overrides = props.getWindowsOverrides();
+ overrides.setGenerator(CMakeGenerator.BorlandMakefiles);
+ List<String> extraArgs = new ArrayList<>();
+ extraArgs.add("arg1w=1");
+ extraArgs.add("arg2w=2");
+ overrides.setExtraArguments(extraArgs);
+ }
+
+ List<String> extraArgs = new ArrayList<>();
+ extraArgs.add("arg1");
+ extraArgs.add("arg2");
+ props.setExtraArguments(extraArgs);
+
+ testee.save(props);
+
+ ICMakeProperties in = testee.load();
+ assertThat(in).usingRecursiveComparison().isEqualTo(props);
+ }
+}
diff --git a/cmake/org.eclipse.cdt.cmake.core.tests/src/org/eclipse/cdt/cmake/core/internal/CMakePropertiesEvolutionTest.java b/cmake/org.eclipse.cdt.cmake.core.tests/src/org/eclipse/cdt/cmake/core/internal/CMakePropertiesEvolutionTest.java
new file mode 100644
index 00000000000..3062a12f050
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.core.tests/src/org/eclipse/cdt/cmake/core/internal/CMakePropertiesEvolutionTest.java
@@ -0,0 +1,86 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Martin Weber.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.cmake.core.internal;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.cdt.cmake.core.internal.properties.CMakePropertiesBean;
+import org.eclipse.cdt.cmake.core.properties.CMakeGenerator;
+import org.junit.Test;
+import org.yaml.snakeyaml.Yaml;
+import org.yaml.snakeyaml.constructor.CustomClassLoaderConstructor;
+
+/**
+ * @author Martin Weber
+ */
+public class CMakePropertiesEvolutionTest {
+
+ private static final String VALUE_OF_EVOLVED_PROPERTY = "value of evolvedProperty";
+
+ /** Tests whether properties persisted by a previous version of our bundle can be loaded by
+ * a newer version of our bundle.
+ */
+ @Test
+ public void testSaveLoadEvolution_1() throws IOException {
+ CMakePropertiesBean propsAtDefault = new CMakePropertiesBean();
+ propsAtDefault.reset(true);
+
+ CMakePropertiesBean props = new CMakePropertiesBean();
+ props.setCacheFile("cacheFile");
+ props.setClearCache(true);
+ props.setDebugOutput(true);
+ props.setDebugTryCompile(true);
+ props.setTrace(true);
+ props.setWarnNoDev(true);
+ props.setWarnUnitialized(true);
+ props.setWarnUnused(true);
+ props.getLinuxOverrides().setGenerator(CMakeGenerator.Ninja);
+
+ List<String> extraArgs = new ArrayList<>();
+ extraArgs.add("arg1");
+ extraArgs.add("arg2");
+ props.setExtraArguments(extraArgs);
+
+ Yaml yaml = new Yaml(new CustomClassLoaderConstructor(this.getClass().getClassLoader()));
+ String output = yaml.dump(props);
+
+ // try to load as evolved properties..
+ CMakePropertiesBean_1 in = yaml.loadAs(output, CMakePropertiesBean_1.class);
+ assertNotNull(in);
+ assertEquals(CMakePropertiesEvolutionTest.VALUE_OF_EVOLVED_PROPERTY, in.getEvolvedProperty());
+ assertThat(props).usingRecursiveComparison().isEqualTo(in);
+ }
+
+ private static class CMakePropertiesBean_1 extends CMakePropertiesBean {
+ private String evolvedProperty;
+
+ @Override
+ public void reset(boolean resetOsOverrides) {
+ super.reset(resetOsOverrides);
+ evolvedProperty = CMakePropertiesEvolutionTest.VALUE_OF_EVOLVED_PROPERTY;
+ }
+
+ public String getEvolvedProperty() {
+ return evolvedProperty;
+ }
+
+ public void setEvolvedProperty(String evolvedProperty) {
+ this.evolvedProperty = evolvedProperty;
+ }
+ }
+}
diff --git a/cmake/org.eclipse.cdt.cmake.core/.classpath b/cmake/org.eclipse.cdt.cmake.core/.classpath
new file mode 100644
index 00000000000..e801ebfb468
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.core/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/cmake/org.eclipse.cdt.cmake.core/.project b/cmake/org.eclipse.cdt.cmake.core/.project
new file mode 100644
index 00000000000..da03bf59cb7
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.core/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.cdt.cmake.core</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+ </natures>
+</projectDescription>
diff --git a/cmake/org.eclipse.cdt.cmake.core/.settings/org.eclipse.core.resources.prefs b/cmake/org.eclipse.cdt.cmake.core/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.core/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/cmake/org.eclipse.cdt.cmake.core/.settings/org.eclipse.jdt.core.prefs b/cmake/org.eclipse.cdt.cmake.core/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..e3a8104f9ca
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.core/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/build/org.eclipse.cdt.cmake.ui.tests/.settings/org.eclipse.jdt.launching.prefs b/cmake/org.eclipse.cdt.cmake.core/.settings/org.eclipse.jdt.launching.prefs
index f8a131b56e0..f8a131b56e0 100644
--- a/build/org.eclipse.cdt.cmake.ui.tests/.settings/org.eclipse.jdt.launching.prefs
+++ b/cmake/org.eclipse.cdt.cmake.core/.settings/org.eclipse.jdt.launching.prefs
diff --git a/cmake/org.eclipse.cdt.cmake.core/.settings/org.eclipse.jdt.ui.prefs b/cmake/org.eclipse.cdt.cmake.core/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.core/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/build/org.eclipse.cdt.cmake.ui/.settings/org.eclipse.pde.api.tools.prefs b/cmake/org.eclipse.cdt.cmake.core/.settings/org.eclipse.pde.api.tools.prefs
index ec9fbf321d0..ec9fbf321d0 100644
--- a/build/org.eclipse.cdt.cmake.ui/.settings/org.eclipse.pde.api.tools.prefs
+++ b/cmake/org.eclipse.cdt.cmake.core/.settings/org.eclipse.pde.api.tools.prefs
diff --git a/build/org.eclipse.cdt.cmake.ui/.settings/org.eclipse.pde.prefs b/cmake/org.eclipse.cdt.cmake.core/.settings/org.eclipse.pde.prefs
index d2dc703ba9e..d2dc703ba9e 100644
--- a/build/org.eclipse.cdt.cmake.ui/.settings/org.eclipse.pde.prefs
+++ b/cmake/org.eclipse.cdt.cmake.core/.settings/org.eclipse.pde.prefs
diff --git a/cmake/org.eclipse.cdt.cmake.core/META-INF/MANIFEST.MF b/cmake/org.eclipse.cdt.cmake.core/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..bcd9ed8b4bc
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.core/META-INF/MANIFEST.MF
@@ -0,0 +1,24 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.cdt.cmake.core;singleton:=true
+Bundle-Version: 1.4.400.qualifier
+Bundle-Activator: org.eclipse.cdt.cmake.core.internal.Activator
+Bundle-Vendor: %providerName
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.core.resources;bundle-version="3.11.0",
+ org.eclipse.debug.core;bundle-version="3.10.0",
+ org.eclipse.launchbar.core;bundle-version="2.0.0",
+ org.eclipse.cdt.core;bundle-version="5.12.0",
+ org.eclipse.tools.templates.freemarker;bundle-version="1.2.200",
+ com.google.gson,
+ org.eclipse.cdt.jsoncdb.core,
+ org.yaml.snakeyaml;bundle-version="1.14.0"
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.cdt.cmake.core,
+ org.eclipse.cdt.cmake.core.internal;x-friends:="org.eclipse.cdt.cmake.ui",
+ org.eclipse.cdt.cmake.core.properties
+Automatic-Module-Name: org.eclipse.cdt.cmake.core
+Bundle-Localization: plugin
+Import-Package: org.eclipse.core.variables
diff --git a/cmake/org.eclipse.cdt.cmake.core/about.html b/cmake/org.eclipse.cdt.cmake.core/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.core/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/cmake/org.eclipse.cdt.cmake.core/build.properties b/cmake/org.eclipse.cdt.cmake.core/build.properties
new file mode 100644
index 00000000000..b698ce671b0
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.core/build.properties
@@ -0,0 +1,10 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ about.html,\
+ plugin.xml,\
+ schema/,\
+ templates/,\
+ plugin.properties
+src.includes = about.html
diff --git a/cmake/org.eclipse.cdt.cmake.core/plugin.properties b/cmake/org.eclipse.cdt.cmake.core/plugin.properties
new file mode 100644
index 00000000000..ce4e40cac1c
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.core/plugin.properties
@@ -0,0 +1,15 @@
+###############################################################################
+# Copyright (c) 2019 Kichwa Coders Canada Inc. and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+pluginName=CDT CMake Core
+providerName=Eclipse CDT
+cmakenature.name=CMake Nature
+cmaketoolChainProvider.name=CMake ToolChain File Provider
+cmakeproblem=CMake Problem \ No newline at end of file
diff --git a/cmake/org.eclipse.cdt.cmake.core/plugin.xml b/cmake/org.eclipse.cdt.cmake.core/plugin.xml
new file mode 100644
index 00000000000..2eddfcaddac
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.core/plugin.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension-point id="toolChainProvider" name="%cmaketoolChainProvider.name" schema="schema/toolChainProvider.exsd"/>
+ <extension
+ id="cmakeNature"
+ name="%cmakenature.name"
+ point="org.eclipse.core.resources.natures">
+ <runtime>
+ <run
+ class="org.eclipse.cdt.cmake.core.CMakeNature">
+ </run>
+ </runtime>
+ </extension>
+ <extension
+ point="org.eclipse.cdt.core.buildConfigProvider">
+ <provider
+ class="org.eclipse.cdt.cmake.core.internal.CMakeBuildConfigurationProvider"
+ id="org.eclipse.cdt.cmake.core.provider"
+ natureId="org.eclipse.cdt.cmake.core.cmakeNature">
+ </provider>
+ </extension>
+ <extension
+ id="cmakeproblem"
+ name="%cmakeproblem"
+ point="org.eclipse.core.resources.markers">
+ <super type="org.eclipse.core.resources.problemmarker">
+ </super>
+ <super type="org.eclipse.core.resources.textmarker">
+ </super>
+ </extension>
+</plugin>
diff --git a/build/org.eclipse.cdt.cmake.core/schema/toolChainProvider.exsd b/cmake/org.eclipse.cdt.cmake.core/schema/toolChainProvider.exsd
index 19d844273e3..19d844273e3 100644
--- a/build/org.eclipse.cdt.cmake.core/schema/toolChainProvider.exsd
+++ b/cmake/org.eclipse.cdt.cmake.core/schema/toolChainProvider.exsd
diff --git a/build/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/CMakeNature.java b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/CMakeNature.java
index 29729d5f193..29729d5f193 100644
--- a/build/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/CMakeNature.java
+++ b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/CMakeNature.java
diff --git a/build/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/CMakeProjectGenerator.java b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/CMakeProjectGenerator.java
index ab554a9ef95..ab554a9ef95 100644
--- a/build/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/CMakeProjectGenerator.java
+++ b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/CMakeProjectGenerator.java
diff --git a/build/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/CMakeToolChainEvent.java b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/CMakeToolChainEvent.java
index b118da5616c..b118da5616c 100644
--- a/build/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/CMakeToolChainEvent.java
+++ b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/CMakeToolChainEvent.java
diff --git a/build/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/ICMakeToolChainFile.java b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/ICMakeToolChainFile.java
index 89ef37746fd..89ef37746fd 100644
--- a/build/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/ICMakeToolChainFile.java
+++ b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/ICMakeToolChainFile.java
diff --git a/build/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/ICMakeToolChainListener.java b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/ICMakeToolChainListener.java
index 93d5b79efb8..93d5b79efb8 100644
--- a/build/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/ICMakeToolChainListener.java
+++ b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/ICMakeToolChainListener.java
diff --git a/build/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/ICMakeToolChainManager.java b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/ICMakeToolChainManager.java
index f78a496bce2..f78a496bce2 100644
--- a/build/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/ICMakeToolChainManager.java
+++ b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/ICMakeToolChainManager.java
diff --git a/build/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/ICMakeToolChainProvider.java b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/ICMakeToolChainProvider.java
index d8d18ce1050..d8d18ce1050 100644
--- a/build/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/ICMakeToolChainProvider.java
+++ b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/ICMakeToolChainProvider.java
diff --git a/build/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/Activator.java b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/Activator.java
index a0a6be95a41..a0a6be95a41 100644
--- a/build/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/Activator.java
+++ b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/Activator.java
diff --git a/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CMakeBuildConfiguration.java b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CMakeBuildConfiguration.java
new file mode 100644
index 00000000000..0827caca307
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CMakeBuildConfiguration.java
@@ -0,0 +1,563 @@
+/*******************************************************************************
+ * Copyright (c) 2015, 2022 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.cmake.core.internal;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.FileVisitResult;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.SimpleFileVisitor;
+import java.nio.file.attribute.BasicFileAttributes;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.function.Consumer;
+
+import org.eclipse.cdt.cmake.core.ICMakeToolChainFile;
+import org.eclipse.cdt.cmake.core.ICMakeToolChainManager;
+import org.eclipse.cdt.cmake.core.internal.CommandDescriptorBuilder.CommandDescriptor;
+import org.eclipse.cdt.cmake.core.properties.CMakeGenerator;
+import org.eclipse.cdt.cmake.core.properties.ICMakeProperties;
+import org.eclipse.cdt.cmake.core.properties.ICMakePropertiesController;
+import org.eclipse.cdt.cmake.core.properties.IOsOverrides;
+import org.eclipse.cdt.core.CommandLauncherManager;
+import org.eclipse.cdt.core.ConsoleOutputStream;
+import org.eclipse.cdt.core.ErrorParserManager;
+import org.eclipse.cdt.core.IConsoleParser;
+import org.eclipse.cdt.core.IMarkerGenerator;
+import org.eclipse.cdt.core.ProblemMarkerInfo;
+import org.eclipse.cdt.core.build.CBuildConfiguration;
+import org.eclipse.cdt.core.build.IToolChain;
+import org.eclipse.cdt.core.envvar.EnvironmentVariable;
+import org.eclipse.cdt.core.envvar.IEnvironmentVariable;
+import org.eclipse.cdt.core.model.ElementChangedEvent;
+import org.eclipse.cdt.core.model.ICElementDelta;
+import org.eclipse.cdt.core.model.ICModelMarker;
+import org.eclipse.cdt.core.parser.ExtendedScannerInfo;
+import org.eclipse.cdt.core.parser.IScannerInfo;
+import org.eclipse.cdt.core.resources.IConsole;
+import org.eclipse.cdt.jsoncdb.core.CompileCommandsJsonParser;
+import org.eclipse.cdt.jsoncdb.core.ISourceFileInfoConsumer;
+import org.eclipse.cdt.jsoncdb.core.ParseRequest;
+import org.eclipse.core.resources.IBuildConfiguration;
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceDelta;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.jobs.Job;
+
+public class CMakeBuildConfiguration extends CBuildConfiguration {
+
+ public static final String CMAKE_GENERATOR = "cmake.generator"; //$NON-NLS-1$
+ public static final String CMAKE_ARGUMENTS = "cmake.arguments"; //$NON-NLS-1$
+ public static final String CMAKE_ENV = "cmake.environment"; //$NON-NLS-1$
+ public static final String BUILD_COMMAND = "cmake.command.build"; //$NON-NLS-1$
+ public static final String CLEAN_COMMAND = "cmake.command.clean"; //$NON-NLS-1$
+
+ private ICMakeToolChainFile toolChainFile;
+
+ // lazily instantiated..
+ private CMakePropertiesController pc;
+
+ private Map<IResource, IScannerInfo> infoPerResource;
+ /**
+ * whether one of the CMakeLists.txt files in the project has been modified and saved by the
+ * user since the last build.<br>
+ * Cmake-generated build scripts re-run cmake if one of the CMakeLists.txt files was modified,
+ * but that output goes through ErrorParserManager and is impossible to parse because cmake
+ * outputs to both stderr and stdout and ErrorParserManager intermixes these streams making it
+ * impossible to parse for errors.<br>
+ * To work around that, we run cmake in advance with its dedicated working error parser.
+ */
+ private boolean cmakeListsModified;
+ /**
+ * whether we have to delete file CMakeCache.txt to avoid complaints by cmake
+ */
+ private boolean deleteCMakeCache;
+
+ public CMakeBuildConfiguration(IBuildConfiguration config, String name) throws CoreException {
+ super(config, name);
+
+ ICMakeToolChainManager manager = Activator.getService(ICMakeToolChainManager.class);
+ toolChainFile = manager.getToolChainFileFor(getToolChain());
+ }
+
+ public CMakeBuildConfiguration(IBuildConfiguration config, String name, IToolChain toolChain) {
+ this(config, name, toolChain, null, "run"); //$NON-NLS-1$
+ }
+
+ public CMakeBuildConfiguration(IBuildConfiguration config, String name, IToolChain toolChain,
+ ICMakeToolChainFile toolChainFile, String launchMode) {
+ super(config, name, toolChain, launchMode);
+ this.toolChainFile = toolChainFile;
+ }
+
+ /**
+ * Gets the tool-chain description file to pass to the cmake command-line.
+ *
+ * @return the tool-chain file or <code>null</code> if cmake should take the native (i.e. the
+ * tools first found on the executable search path aka $path)
+ */
+ public ICMakeToolChainFile getToolChainFile() {
+ return toolChainFile;
+ }
+
+ @SuppressWarnings("unused") // kept for reference of the property names
+ private boolean isLocal() throws CoreException {
+ IToolChain toolchain = getToolChain();
+ return (Platform.getOS().equals(toolchain.getProperty(IToolChain.ATTR_OS))
+ || "linux-container".equals(toolchain.getProperty(IToolChain.ATTR_OS))) //$NON-NLS-1$
+ && (Platform.getOSArch().equals(toolchain.getProperty(IToolChain.ATTR_ARCH)));
+ }
+
+ @Override
+ public IProject[] build(int kind, Map<String, String> args, IConsole console, IProgressMonitor monitor)
+ throws CoreException {
+ IProject project = getProject();
+
+ project.deleteMarkers(ICModelMarker.C_MODEL_PROBLEM_MARKER, false, IResource.DEPTH_INFINITE);
+
+ try {
+
+ ConsoleOutputStream infoStream = console.getInfoStream();
+
+ Path buildDir = getBuildDirectory();
+
+ boolean runCMake = cmakeListsModified;
+ if (deleteCMakeCache) {
+ Files.deleteIfExists(buildDir.resolve("CMakeCache.txt")); //$NON-NLS-1$
+ deleteCMakeCache = false;
+ runCMake = true;
+ }
+
+ ICMakeProperties cmakeProperties = getPropertiesController().load();
+ runCMake |= !Files.exists(buildDir.resolve("CMakeCache.txt")); //$NON-NLS-1$
+
+ final SimpleOsOverridesSelector overridesSelector = new SimpleOsOverridesSelector();
+ if (!runCMake) {
+ CMakeGenerator generator = overridesSelector.getOsOverrides(cmakeProperties).getGenerator();
+ runCMake |= !Files.exists(buildDir.resolve(generator.getMakefileName()));
+ }
+ CommandDescriptorBuilder cmdBuilder = new CommandDescriptorBuilder(cmakeProperties, overridesSelector);
+ if (runCMake) {
+ CMakeBuildConfiguration.deleteCMakeErrorMarkers(project);
+
+ infoStream.write(String.format(Messages.CMakeBuildConfiguration_Configuring, buildDir));
+ CommandDescriptor command = cmdBuilder
+ .makeCMakeCommandline(toolChainFile != null ? toolChainFile.getPath() : null);
+ // tell cmake where its script is located..
+ IContainer srcFolder = project;
+ command.getArguments().add(new File(srcFolder.getLocationURI()).getAbsolutePath());
+
+ infoStream.write(String.join(" ", command.getArguments()) + '\n'); //$NON-NLS-1$
+
+ org.eclipse.core.runtime.Path workingDir = new org.eclipse.core.runtime.Path(
+ getBuildDirectory().toString());
+ // hook in cmake error parsing
+ try (CMakeErrorParser errorParser = new CMakeErrorParser(new CMakeExecutionMarkerFactory(srcFolder))) {
+ ParsingConsoleOutputStream errStream = new ParsingConsoleOutputStream(console.getErrorStream(),
+ errorParser);
+ IConsole errConsole = new CMakeConsoleWrapper(console, errStream);
+ Process p = startBuildProcess(command.getArguments(), new IEnvironmentVariable[0], workingDir,
+ errConsole, monitor);
+ String arg0 = command.getArguments().get(0);
+ if (p == null) {
+ // process start failed
+ String msg = String.format(Messages.CMakeBuildConfiguration_Failure, ""); //$NON-NLS-1$
+ addMarker(new ProblemMarkerInfo(srcFolder.getProject(), -1, msg,
+ IMarkerGenerator.SEVERITY_ERROR_BUILD, null, new org.eclipse.core.runtime.Path(arg0)));
+ return null;
+ }
+
+ // check cmake exit status
+ final int exitValue = watchProcess(errConsole, monitor);
+ if (exitValue != 0) {
+ // cmake had errors...
+ String msg = String.format(Messages.CMakeBuildConfiguration_ExitFailure, arg0, exitValue);
+ addMarker(srcFolder.getProject(), -1, msg, IMarkerGenerator.SEVERITY_ERROR_BUILD, null);
+ return null;
+ }
+ }
+ cmakeListsModified = false;
+ }
+
+ // parse compile_commands.json file
+ processCompileCommandsFile(console, monitor);
+
+ infoStream.write(String.format(Messages.CMakeBuildConfiguration_BuildingIn, buildDir.toString()));
+ // run the build tool...
+ try (ErrorParserManager epm = new ErrorParserManager(project, getBuildDirectoryURI(), this,
+ getToolChain().getErrorParserIds())) {
+ epm.setOutputStream(console.getOutputStream());
+
+ String envStr = getProperty(CMAKE_ENV);
+ List<IEnvironmentVariable> envVars = new ArrayList<>();
+ if (envStr != null) {
+ List<String> envList = CMakeUtils.stripEnvVars(envStr);
+ for (String s : envList) {
+ int index = s.indexOf("="); //$NON-NLS-1$
+ if (index == -1) {
+ envVars.add(new EnvironmentVariable(s));
+ } else {
+ envVars.add(new EnvironmentVariable(s.substring(0, index), s.substring(index + 1)));
+ }
+ }
+ }
+
+ CommandDescriptor commandDescr = cmdBuilder.makeCMakeBuildCommandline("all"); //$NON-NLS-1$
+ List<String> command = commandDescr.getArguments();
+ infoStream.write(String.join(" ", command) + '\n'); //$NON-NLS-1$
+
+ org.eclipse.core.runtime.Path workingDir = new org.eclipse.core.runtime.Path(
+ getBuildDirectory().toString());
+ // TODO pass envvars from CommandDescriptor once we use ICommandLauncher
+ Process p = startBuildProcess(command, envVars.toArray(new IEnvironmentVariable[0]), workingDir,
+ console, monitor);
+ if (p == null) {
+ console.getErrorStream().write(String.format(Messages.CMakeBuildConfiguration_Failure, "")); //$NON-NLS-1$
+ return null;
+ }
+
+ // check exit status
+ final int exitValue = watchProcess(new IConsoleParser[] { epm }, monitor);
+ if (exitValue != 0) {
+ // had errors...
+ String msg2 = String.format(Messages.CMakeBuildConfiguration_ExitFailure, command.get(0),
+ exitValue);
+ addMarker(project, -1, msg2, IMarkerGenerator.SEVERITY_ERROR_BUILD, null);
+ }
+
+ project.refreshLocal(IResource.DEPTH_INFINITE, monitor);
+
+ infoStream.write(String.format(Messages.CMakeBuildConfiguration_BuildingComplete, epm.getErrorCount(),
+ epm.getWarningCount(), buildDir.toString()));
+ }
+
+ return new IProject[] { project };
+ } catch (IOException e) {
+ throw new CoreException(Activator
+ .errorStatus(String.format(Messages.CMakeBuildConfiguration_Building, project.getName()), e));
+ }
+ }
+
+ @Override
+ public void clean(IConsole console, IProgressMonitor monitor) throws CoreException {
+ IProject project = getProject();
+ try {
+
+ project.deleteMarkers(ICModelMarker.C_MODEL_PROBLEM_MARKER, false, IResource.DEPTH_INFINITE);
+
+ ICMakeProperties cmakeProperties = getPropertiesController().load();
+ CommandDescriptorBuilder cmdBuilder = new CommandDescriptorBuilder(cmakeProperties,
+ new SimpleOsOverridesSelector());
+ CommandDescriptor command = cmdBuilder.makeCMakeBuildCommandline("clean"); //$NON-NLS-1$
+ ConsoleOutputStream outStream = console.getOutputStream();
+
+ Path buildDir = getBuildDirectory();
+
+ if (!Files.exists(buildDir.resolve("CMakeFiles"))) { //$NON-NLS-1$
+ outStream.write(Messages.CMakeBuildConfiguration_NotFound);
+ return;
+ }
+
+ outStream.write(String.join(" ", command.getArguments()) + '\n'); //$NON-NLS-1$
+
+ org.eclipse.core.runtime.Path workingDir = new org.eclipse.core.runtime.Path(
+ getBuildDirectory().toString());
+ Process p = startBuildProcess(command.getArguments(), new IEnvironmentVariable[0], workingDir, console,
+ monitor);
+ if (p == null) {
+ // process start failed
+ String msg = String.format(Messages.CMakeBuildConfiguration_Failure, ""); //$NON-NLS-1$
+ addMarker(new ProblemMarkerInfo(project, -1, msg, IMarkerGenerator.SEVERITY_ERROR_BUILD, null,
+ new org.eclipse.core.runtime.Path(command.getArguments().get(0))));
+ return;
+ }
+
+ // check exit status
+ final int exitValue = watchProcess(console, monitor);
+ if (exitValue != 0) {
+ // had errors...
+ String msg = String.format(Messages.CMakeBuildConfiguration_ExitFailure, command.getArguments().get(0),
+ exitValue);
+ addMarker(project, -1, msg, IMarkerGenerator.SEVERITY_ERROR_BUILD, null);
+ }
+
+ outStream.write(Messages.CMakeBuildConfiguration_BuildComplete);
+
+ project.refreshLocal(IResource.DEPTH_INFINITE, monitor);
+ } catch (IOException e) {
+ throw new CoreException(Activator
+ .errorStatus(String.format(Messages.CMakeBuildConfiguration_Cleaning, project.getName()), e));
+ }
+ }
+
+ /**
+ * @param console the console to print the compiler output during built-ins detection to or
+ * <code>null</code> if no separate console is to be allocated. Ignored if
+ * workspace preferences indicate that no console output is wanted.
+ * @param monitor the job's progress monitor
+ */
+ private void processCompileCommandsFile(IConsole console, IProgressMonitor monitor) throws CoreException {
+ IFile file = getBuildContainer().getFile(new org.eclipse.core.runtime.Path("compile_commands.json")); //$NON-NLS-1$
+ CompileCommandsJsonParser parser = new CompileCommandsJsonParser(
+ new ParseRequest(file, new CMakeIndexerInfoConsumer(this::setScannerInformation),
+ CommandLauncherManager.getInstance().getCommandLauncher(this), console));
+ parser.parse(monitor);
+ }
+
+ /**
+ * Recursively removes any files and directories found below the specified Path.
+ */
+ private static void cleanDirectory(Path dir) throws IOException {
+ SimpleFileVisitor<Path> deltor = new SimpleFileVisitor<>() {
+ @Override
+ public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
+ Files.delete(file);
+ return FileVisitResult.CONTINUE;
+ }
+
+ @Override
+ public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {
+ super.postVisitDirectory(dir, exc);
+ Files.delete(dir);
+ return FileVisitResult.CONTINUE;
+ }
+ };
+ Path[] files = Files.list(dir).toArray(Path[]::new);
+ for (Path file : files) {
+ Files.walkFileTree(file, deltor);
+ }
+ }
+
+ /** Lazily creates the CMakePropertiesController for the project.
+ */
+ private CMakePropertiesController getPropertiesController() {
+ if (pc == null) {
+ final Path filePath = Path.of(getProject().getFile(".settings/CDT-cmake.yaml").getLocationURI()); //$NON-NLS-1$
+ pc = new CMakePropertiesController(filePath, () -> {
+ deleteCMakeCache = true;
+ // TODO delete cache file here for the case a user restarts the workbench
+ // prior to running a new build
+ });
+ }
+ return pc;
+ }
+
+ // interface IAdaptable
+ @Override
+ @SuppressWarnings("unchecked")
+ public <T> T getAdapter(Class<T> adapter) {
+ if (ICMakePropertiesController.class.equals(adapter)) {
+ return (T) pc;
+ }
+ return super.getAdapter(adapter);
+ }
+
+ /**
+ * Overridden since the ScannerInfoCache mechanism does not satisfy our needs.
+ */
+ // interface IScannerInfoProvider
+ @Override
+ public IScannerInfo getScannerInformation(IResource resource) {
+ if (infoPerResource == null) {
+ // no build was run yet, nothing detected
+ try {
+ processCompileCommandsFile(null, new NullProgressMonitor());
+ } catch (CoreException e) {
+ Activator.log(e);
+ }
+ }
+ return infoPerResource == null ? null : infoPerResource.get(resource);
+ }
+
+ private void setScannerInformation(Map<IResource, IScannerInfo> infoPerResource) {
+ this.infoPerResource = infoPerResource;
+ }
+
+ /**
+ * Overwritten to detect whether one of the CMakeLists.txt files in the project was modified
+ * since the last build.
+ */
+ @Override
+ public void elementChanged(ElementChangedEvent event) {
+ super.elementChanged(event);
+ // Only respond to post change events
+ if (event.getType() != ElementChangedEvent.POST_CHANGE)
+ return;
+ if (!cmakeListsModified) {
+ processElementDelta(event.getDelta());
+ }
+ }
+
+ /**
+ * Processes the delta in order to detect whether one of the CMakeLists.txt files in the project
+ * has been modified and saved by the user since the last build.
+ *
+ * @return <code>true</code> to continue with delta processing, otherwise <code>false</code>
+ */
+ private boolean processElementDelta(ICElementDelta delta) {
+ if (delta == null) {
+ return true;
+ }
+
+ if (delta.getKind() == ICElementDelta.CHANGED) {
+ // check for modified CMakeLists.txt file
+ if (0 != (delta.getFlags() & ICElementDelta.F_CONTENT)) {
+ IResourceDelta[] resourceDeltas = delta.getResourceDeltas();
+ if (resourceDeltas != null) {
+ for (IResourceDelta resourceDelta : resourceDeltas) {
+ IResource resource = resourceDelta.getResource();
+ if (resource.getType() == IResource.FILE) {
+ String name = resource.getName();
+ if (!resource.isDerived(IResource.CHECK_ANCESTORS)
+ && (name.equals("CMakeLists.txt") || name.endsWith(".cmake"))) { //$NON-NLS-1$ //$NON-NLS-2$
+ cmakeListsModified = true;
+ return false; // stop processing
+ }
+ }
+ }
+ }
+ }
+ }
+
+ // recurse...
+ for (ICElementDelta child : delta.getAffectedChildren()) {
+ if (!processElementDelta(child)) {
+ return false; // stop processing
+ }
+ }
+ return true;
+ }
+
+ /**
+ * Overwritten since we do not parse console output to get scanner information.
+ */
+ // interface IConsoleParser2
+ @Override
+ public boolean processLine(String line) {
+ return true;
+ }
+
+ /**
+ * Overwritten since we do not parse console output to get scanner information.
+ */
+ // interface IConsoleParser2
+ @Override
+ public boolean processLine(String line, List<Job> jobsArray) {
+ return true;
+ }
+
+ /**
+ * Overwritten since we do not parse console output to get scanner information.
+ */
+ // interface IConsoleParser2
+ @Override
+ public void shutdown() {
+ }
+
+ /**
+ * Deletes all CMake error markers on the specified project.
+ *
+ * @param project the project where to remove the error markers.
+ * @throws CoreException
+ */
+ private static void deleteCMakeErrorMarkers(IProject project) throws CoreException {
+ project.deleteMarkers(ICMakeExecutionMarkerFactory.CMAKE_PROBLEM_MARKER_ID, false, IResource.DEPTH_INFINITE);
+ }
+
+ private static class CMakeIndexerInfoConsumer implements ISourceFileInfoConsumer {
+ /**
+ * gathered IScannerInfo objects or <code>null</code> if no new IScannerInfo was received
+ */
+ private Map<IResource, IScannerInfo> infoPerResource = new HashMap<>();
+ private boolean haveUpdates;
+ private final Consumer<Map<IResource, IScannerInfo>> resultSetter;
+
+ /**
+ * @param resultSetter receives the all scanner information when processing is finished
+ */
+ public CMakeIndexerInfoConsumer(Consumer<Map<IResource, IScannerInfo>> resultSetter) {
+ this.resultSetter = Objects.requireNonNull(resultSetter);
+ }
+
+ @Override
+ public void acceptSourceFileInfo(String sourceFileName, List<String> systemIncludePaths,
+ Map<String, String> definedSymbols, List<String> includePaths, List<String> macroFiles,
+ List<String> includeFiles) {
+ IFile file = getFileForCMakePath(sourceFileName);
+ if (file != null) {
+ ExtendedScannerInfo info = new ExtendedScannerInfo(definedSymbols,
+ systemIncludePaths.stream().toArray(String[]::new), macroFiles.stream().toArray(String[]::new),
+ includeFiles.stream().toArray(String[]::new), includePaths.stream().toArray(String[]::new));
+ infoPerResource.put(file, info);
+ haveUpdates = true;
+ }
+ }
+
+ /**
+ * Gets an IFile object that corresponds to the source file name given in CMake notation.
+ *
+ * @param sourceFileName the name of the source file, in CMake notation. Note that on
+ * windows, CMake writes filenames with forward slashes (/) such as
+ * {@code H://path//to//source.c}.
+ * @return a IFile object or <code>null</code>
+ */
+ private IFile getFileForCMakePath(String sourceFileName) {
+ org.eclipse.core.runtime.Path path = new org.eclipse.core.runtime.Path(sourceFileName);
+ IFile file = ResourcesPlugin.getWorkspace().getRoot().getFileForLocation(path);
+ // TODO maybe we need to introduce a strategy here to get the workbench resource
+ // Possible build scenarios:
+ // 1) linux native: should be OK as is
+ // 2) linux host, building in container: should be OK as is
+ // 3) windows native: Path.fromOSString()?
+ // 4) windows host, building in linux container: ??? needs testing on windows
+ return file;
+ }
+
+ @Override
+ public void shutdown() {
+ if (haveUpdates) {
+ // we received updates
+ resultSetter.accept(infoPerResource);
+ infoPerResource = null;
+ haveUpdates = false;
+ }
+ }
+ } // CMakeIndexerInfoConsumer
+
+ private static class SimpleOsOverridesSelector implements IOsOverridesSelector {
+
+ @Override
+ public IOsOverrides getOsOverrides(ICMakeProperties cmakeProperties) {
+ IOsOverrides overrides;
+ // get overrides. Simplistic approach ATM, probably a strategy might fit better.
+ // see comment in CMakeIndexerInfoConsumer#getFileForCMakePath()
+ final String os = Platform.getOS();
+ if (Platform.OS_WIN32.equals(os)) {
+ overrides = cmakeProperties.getWindowsOverrides();
+ } else {
+ // fall back to linux, if OS is unknown
+ overrides = cmakeProperties.getLinuxOverrides();
+ }
+ return overrides;
+ }
+ } // SimpleOsOverridesSelector
+}
diff --git a/build/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CMakeBuildConfigurationProvider.java b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CMakeBuildConfigurationProvider.java
index 4775a04a234..4775a04a234 100644
--- a/build/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CMakeBuildConfigurationProvider.java
+++ b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CMakeBuildConfigurationProvider.java
diff --git a/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CMakeConsoleWrapper.java b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CMakeConsoleWrapper.java
new file mode 100644
index 00000000000..05a9263ff1f
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CMakeConsoleWrapper.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Martin Weber.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.cmake.core.internal;
+
+import java.util.Objects;
+
+import org.eclipse.cdt.core.ConsoleOutputStream;
+import org.eclipse.cdt.core.resources.IConsole;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+
+/** Intercepts output to a console and forwards its error stream to a stream that does error parsing for processing.
+
+ * @author Martin Weber
+ *
+ */
+class CMakeConsoleWrapper implements IConsole {
+ private final IConsole delegate;
+ private final ConsoleOutputStream err;
+
+ /**
+ * @param delegate
+ * the console to wrap
+ * @param parsingConsoleOutputStream
+ * the replacement of the error output stream of the wrapped console that parses for errors
+ */
+ public CMakeConsoleWrapper(IConsole delegate, ConsoleOutputStream parsingConsoleErrOutputStream)
+ throws CoreException {
+ this.delegate = Objects.requireNonNull(delegate);
+ // NOTE: we need one parser for each stream, since the output streams are not synchronized
+ // when the process is started via o.e.c.core.CommandLauncher, causing loss of
+ // the internal parser state
+ err = Objects.requireNonNull(parsingConsoleErrOutputStream);
+ }
+
+ @Override
+ public void start(IProject project) {
+ delegate.start(project);
+ }
+
+ @Override
+ public ConsoleOutputStream getInfoStream() throws CoreException {
+ return delegate.getInfoStream();
+ }
+
+ @Override
+ public ConsoleOutputStream getOutputStream() throws CoreException {
+ return delegate.getOutputStream();
+ }
+
+ @Override
+ public ConsoleOutputStream getErrorStream() throws CoreException {
+ return err;
+ }
+}
diff --git a/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CMakeErrorParser.java b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CMakeErrorParser.java
new file mode 100644
index 00000000000..b4f8e935220
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CMakeErrorParser.java
@@ -0,0 +1,436 @@
+/*******************************************************************************
+ * Copyright (c) 2013-2020 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.cmake.core.internal;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+
+/** Parses the error output stream of cmake and reports errors and warnings as problem markers.<p>
+ * As long as cmake keeps printing the output we are interested in to the standard error stream,
+ * attaching an instance of this class to cmake's standard <b>output</b>
+ * stream will have no positive effect.
+ * </p>
+ * <p>
+ * NOTE: There is no way properly handle output emitted by the cmake
+ * {@code MESSAGE(NOTICE "text")} or {@code MESSAGE("text")} command
+ * since that output is arbitrary text w/o any indication of the message type
+ * nor filename/line-number information.
+ * </p>
+ *
+ * @author Martin Weber
+ */
+/* package */ class CMakeErrorParser implements AutoCloseable {
+
+ /** matches the Start of a message, also ending the previous message */
+ private static final Pattern PTN_MSG_START;
+
+ private static Map<String, MessageHandler> handlersByMessageStart = new HashMap<>();
+
+ /** the handler for the message we are currently gathering output for */
+ private MessageHandler currentHandler = new MhNull();
+ private final ICMakeExecutionMarkerFactory markerFactory;
+ private final StringBuilder buffer;
+
+ static {
+ // setup regex to match the start of a message...
+ StringBuilder ptnbuf = new StringBuilder("^"); //$NON-NLS-1$
+
+ List<MessageHandler> markerHandlers = Arrays.asList(new MhStartLog(), new MhStatus(), new MhDeprError(),
+ new MhDeprWarning(), new MhErrorDev(), new MhError(), new MhInternalError(), new MhWarningDev(),
+ new MhWarning());
+ for (Iterator<MessageHandler> it = markerHandlers.iterator(); it.hasNext();) {
+ MessageHandler h = it.next();
+ handlersByMessageStart.put(h.getMessageStart(), h);
+ ptnbuf.append(Pattern.quote(h.getMessageStart()));
+ if (it.hasNext()) {
+ ptnbuf.append('|');
+ }
+ }
+
+ PTN_MSG_START = Pattern.compile(ptnbuf.toString());
+ }
+
+ ////////////////////////////////////////////////////////////////////
+ /**
+ * @param markerFactory
+ * the object responsible for creating problem marker objects for the project being built
+ */
+ public CMakeErrorParser(ICMakeExecutionMarkerFactory markerFactory) {
+ this.markerFactory = Objects.requireNonNull(markerFactory);
+ buffer = new StringBuilder(512);
+ }
+
+ /** Adds text from the output stream to parse.
+ *
+ * @param input
+ * text from the output stream to parse
+ */
+ public void addInput(CharSequence input) {
+ buffer.append(input);
+ processBuffer();
+ }
+
+ /** Closes this parser. Any remaining buffered input will be parsed.
+ */
+ @Override
+ public void close() {
+ // process remaining bytes
+ processMessage(currentHandler, buffer.toString().trim());
+ buffer.delete(0, buffer.length());
+ }
+
+ private void processBuffer() {
+ Matcher matcher = PTN_MSG_START.matcher(""); //$NON-NLS-1$
+ while (true) {
+ matcher.reset(buffer.subSequence(currentHandler.getMessageStart().length(), buffer.length()));
+ if (matcher.find()) {
+ String handlerId = matcher.group();
+ MessageHandler newHandler = handlersByMessageStart.get(handlerId);
+ int end = matcher.start() + currentHandler.getMessageStart().length();
+ String message = buffer.substring(0, end);
+ processMessage(currentHandler, message.trim());
+ currentHandler = newHandler;
+ buffer.delete(0, end); // delete processed message
+ continue; // proceed with follow-up messages
+ } else {
+ // NO message arrived in buffer
+ return; // wait for more input
+ }
+ }
+ }
+
+ /**
+ * @param handler
+ * message handler
+ * @param fullMessage
+ * the complete message, including the string the message starts with
+ */
+ private void processMessage(MessageHandler handler, String fullMessage) {
+ try {
+ handler.processMessage(markerFactory, fullMessage);
+ } catch (CoreException e) {
+ Activator.getPlugin().getLog()
+ .log(new Status(IStatus.WARNING, Activator.getId(), "CMake output error parsing failed", e)); //$NON-NLS-1$
+ }
+ }
+
+ ////////////////////////////////////////////////////////////////////
+ // inner classes
+ ////////////////////////////////////////////////////////////////////
+ /**
+ * Message handler base class. Extracts the source-file name and line-number of errors from the output stream.<p>
+ * Message matching regexes are taken from cmake code in
+ * cmMessenger.cxx#printMessagePreamble: <code>
+ * <pre>
+ if (t == cmake::FATAL_ERROR) {
+ msg << "CMake Error";
+ } else if (t == cmake::INTERNAL_ERROR) {
+ msg << "CMake Internal Error (please report a bug)";
+ } else if (t == cmake::LOG) {
+ msg << "CMake Debug Log";
+ } else if (t == cmake::DEPRECATION_ERROR) {
+ msg << "CMake Deprecation Error";
+ } else if (t == cmake::DEPRECATION_WARNING) {
+ msg << "CMake Deprecation Warning";
+ } else if (t == cmake::AUTHOR_WARNING) {
+ msg << "CMake Warning (dev)";
+ } else if (t == cmake::AUTHOR_ERROR) {
+ msg << "CMake Error (dev)";
+ } else {
+ msg << "CMake Warning";
+ * </pre>
+ *
+ * <code><br>
+ * NOTE: We cannot properly handle output emitted by the cmake MESSAGE(NOTICE ...) command since
+ * the output is arbitrary text w/o any indication of the message type nor filename/line-number information.
+ * </p>
+ *
+ * @author Martin Weber
+ */
+ private static abstract class MessageHandler {
+
+ /** patterns used to extract file-name and line number information */
+ private static final Pattern[] PTN_LOCATION;
+
+ /** Name of the named-capturing group that holds a file name. */
+ private static final String GRP_FILE = "File"; //$NON-NLS-1$
+ /** Name of the named-capturing group that holds a line number. */
+ private static final String GRP_LINE = "Lineno"; //$NON-NLS-1$
+
+ static {
+ PTN_LOCATION = new Pattern[] {
+ Pattern.compile("(?m)^ at (?<" + GRP_FILE + ">.+):(?<" + GRP_LINE + ">\\d+).*$"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ Pattern.compile(
+ "(?s)^: Error in cmake code at.(?<" + GRP_FILE + ">.+):(?<" + GRP_LINE + ">\\d+).*$"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ Pattern.compile("(?m)^ in (?<" + GRP_FILE + ">.+):(?<" + GRP_LINE + ">\\d+).*$"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ Pattern.compile("(?m)^ in (?<" + GRP_FILE + ">.+?):.*$"), //$NON-NLS-1$ //$NON-NLS-2$
+ Pattern.compile("(?m)^:\\s.+$"), }; //$NON-NLS-1$
+ }
+
+ /**
+ * Gets the string the error message is supposed to start with.
+ */
+ abstract String getMessageStart();
+
+ /**
+ * @return the severity of the problem, see {@link IMarker} for acceptable severity values
+ */
+ abstract int getSeverity();
+
+ /**
+ * Creates the {@link IMarker marker object} that reflects the message.
+ *
+ * @param markerFactory
+ * the object responsible for creating problem marker objects for the project being built
+ * @param fullMessage
+ * the complete message, including the string the message starts with
+ * @throws CoreException
+ */
+ public void processMessage(ICMakeExecutionMarkerFactory markerFactory, String fullMessage)
+ throws CoreException {
+ String content = fullMessage.substring(getMessageStart().length());
+ // mandatory attributes for the marker
+ Map<String, Object> attributes = new HashMap<>(3);
+ attributes.put(IMarker.LOCATION, getClass().getSimpleName());
+
+ // filename is normally project source root relative but may be absolute FS path
+ String filename = null;
+ for (Pattern ptn : PTN_LOCATION) {
+ final Matcher matcher = ptn.matcher(content);
+ // try to extract filename and/or line number from message
+ if (matcher.find()) {
+ try {
+ filename = matcher.group(GRP_FILE);
+ } catch (IllegalArgumentException expected) {
+ // no file name in message
+ }
+ // attach additional info to marker...
+ try {
+ String lineno = matcher.group(GRP_LINE);
+ Integer lineNumber = Integer.parseInt(lineno);
+ attributes.put(IMarker.LINE_NUMBER, lineNumber);
+ } catch (IllegalArgumentException expected) {
+ // no line number in message
+ }
+ break;
+ }
+ }
+ markerFactory.createMarker(fullMessage, getSeverity(), filename, attributes);
+ }
+ } // MessageHandler
+
+ ////////////////////////////////////////////////////////////////////
+ private static class MhNull extends MessageHandler {
+
+ @Override
+ public void processMessage(ICMakeExecutionMarkerFactory markerFactory, String fullMessage)
+ throws CoreException {
+ }
+
+ @Override
+ String getMessageStart() {
+ return ""; //$NON-NLS-1$
+ }
+
+ @Override
+ int getSeverity() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public String toString() {
+ return super.toString() + ": " + getMessageStart(); //$NON-NLS-1$
+ }
+ }
+
+ ////////////////////////////////////////////////////////////////////
+ private static class MhStartLog extends MhNull {
+ private static final String START_LOG = "CMake Debug Log"; //$NON-NLS-1$
+
+ @Override
+ String getMessageStart() {
+ return START_LOG;
+ }
+
+ @Override
+ int getSeverity() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public String toString() {
+ return super.toString() + ": " + getMessageStart(); //$NON-NLS-1$
+ }
+ }
+
+ ////////////////////////////////////////////////////////////////////
+ private static class MhStatus extends MhNull {
+ private static final String START_STATUS = "-- "; //$NON-NLS-1$
+
+ @Override
+ String getMessageStart() {
+ return START_STATUS;
+ }
+
+ @Override
+ int getSeverity() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public String toString() {
+ return super.toString() + ": " + getMessageStart(); //$NON-NLS-1$
+ }
+ }
+
+ ////////////////////////////////////////////////////////////////////
+ private static class MhDeprError extends MessageHandler {
+ private static final String START_DERROR = "CMake Deprecation Error"; //$NON-NLS-1$
+
+ @Override
+ String getMessageStart() {
+ return START_DERROR;
+ }
+
+ @Override
+ int getSeverity() {
+ return IMarker.SEVERITY_ERROR;
+ }
+
+ @Override
+ public String toString() {
+ return super.toString() + ": " + getMessageStart(); //$NON-NLS-1$
+ }
+ }
+
+ private static class MhDeprWarning extends MessageHandler {
+ private static final String START_DWARNING = "CMake Deprecation Warning"; //$NON-NLS-1$
+
+ @Override
+ String getMessageStart() {
+ return START_DWARNING;
+ }
+
+ @Override
+ int getSeverity() {
+ return IMarker.SEVERITY_WARNING;
+ }
+
+ @Override
+ public String toString() {
+ return super.toString() + ": " + getMessageStart(); //$NON-NLS-1$
+ }
+ }
+
+ private static class MhError extends MessageHandler {
+ private static final String START_ERROR = "CMake Error"; //$NON-NLS-1$
+
+ @Override
+ String getMessageStart() {
+ return START_ERROR;
+ }
+
+ @Override
+ int getSeverity() {
+ return IMarker.SEVERITY_ERROR;
+ }
+
+ @Override
+ public String toString() {
+ return super.toString() + ": " + getMessageStart(); //$NON-NLS-1$
+ }
+ }
+
+ private static class MhErrorDev extends MessageHandler {
+ private static final String START_ERROR_DEV = "CMake Error (dev)"; //$NON-NLS-1$
+
+ @Override
+ String getMessageStart() {
+ return START_ERROR_DEV;
+ }
+
+ @Override
+ int getSeverity() {
+ return IMarker.SEVERITY_ERROR;
+ }
+
+ @Override
+ public String toString() {
+ return super.toString() + ": " + getMessageStart(); //$NON-NLS-1$
+ }
+ }
+
+ private static class MhInternalError extends MessageHandler {
+ private static final String START_IERROR = "CMake Internal Error (please report a bug)"; //$NON-NLS-1$
+
+ @Override
+ String getMessageStart() {
+ return START_IERROR;
+ }
+
+ @Override
+ int getSeverity() {
+ return IMarker.SEVERITY_ERROR;
+ }
+
+ @Override
+ public String toString() {
+ return super.toString() + ": " + getMessageStart(); //$NON-NLS-1$
+ }
+ }
+
+ private static class MhWarning extends MessageHandler {
+ private static final String START_WARNING = "CMake Warning"; //$NON-NLS-1$
+
+ @Override
+ String getMessageStart() {
+ return START_WARNING;
+ }
+
+ @Override
+ int getSeverity() {
+ return IMarker.SEVERITY_WARNING;
+ }
+
+ @Override
+ public String toString() {
+ return super.toString() + ": " + getMessageStart(); //$NON-NLS-1$
+ }
+ }
+
+ private static class MhWarningDev extends MessageHandler {
+ private static final String START_WARNING_DEV = "CMake Warning (dev)"; //$NON-NLS-1$
+
+ @Override
+ String getMessageStart() {
+ return START_WARNING_DEV;
+ }
+
+ @Override
+ int getSeverity() {
+ return IMarker.SEVERITY_WARNING;
+ }
+
+ @Override
+ public String toString() {
+ return super.toString() + ": " + getMessageStart(); //$NON-NLS-1$
+ }
+ }
+}
diff --git a/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CMakeExecutionMarkerFactory.java b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CMakeExecutionMarkerFactory.java
new file mode 100644
index 00000000000..dd17e02ffc5
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CMakeExecutionMarkerFactory.java
@@ -0,0 +1,85 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Martin Weber.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.cmake.core.internal;
+
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Objects;
+
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Status;
+
+/**
+ * Default implementation of {@code ICMakeExecutionMarkerFactory}.
+ *
+ * @author Martin Weber
+ */
+public class CMakeExecutionMarkerFactory implements ICMakeExecutionMarkerFactory {
+
+ private final IContainer srcFolder;
+
+ /**
+ * @param srcFolder
+ * source-folder ofthe project currently being build.
+ *
+ */
+ public CMakeExecutionMarkerFactory(IContainer srcFolder) {
+ this.srcFolder = Objects.requireNonNull(srcFolder);
+ }
+
+ @Override
+ public final void createMarker(String message, int severity, String filePath,
+ Map<String, Object> mandatoryAttributes) throws CoreException {
+ IMarker marker;
+ if (filePath == null) {
+ marker = srcFolder.createMarker(CMAKE_PROBLEM_MARKER_ID);
+ } else {
+ // NOTE normally, cmake reports the file name relative to source root.
+ // BUT some messages give an absolute file-system path which is problematic when the build
+ // runs in a docker container
+ // So we do some heuristics here...
+ IPath path = new Path(filePath);
+ try {
+ // normal case: file is rel. to source root
+ marker = srcFolder.getFile(path).createMarker(CMAKE_PROBLEM_MARKER_ID);
+ } catch (CoreException ign) {
+ // try abs. path
+ IPath srcLocation = srcFolder.getLocation();
+ if (srcLocation.isPrefixOf(path)) {
+ // can resolve the cmake file
+ int segmentsToRemove = srcLocation.segmentCount();
+ path = path.removeFirstSegments(segmentsToRemove);
+ marker = srcFolder.getFile(path).createMarker(CMAKE_PROBLEM_MARKER_ID);
+ } else {
+ // possibly a build in docker container. we would reach this if the source-dir path inside
+ // the container is NOT the same as the one in the host/IDE.
+ // for now, just add the markers to the source dir and lets users file issues:-)
+ marker = srcFolder.createMarker(CMAKE_PROBLEM_MARKER_ID);
+ Activator.getPlugin().getLog().log(new Status(IStatus.INFO, Activator.getId(),
+ String.format(Messages.CMakeErrorParser_NotAWorkspaceResource, filePath)));
+ // Extra case: IDE runs on Linux, build runs on Windows, or vice versa...
+ }
+ }
+ }
+ marker.setAttribute(IMarker.MESSAGE, message);
+ marker.setAttribute(IMarker.SEVERITY, severity);
+ for (Entry<String, Object> elem : mandatoryAttributes.entrySet()) {
+ marker.setAttribute(elem.getKey(), elem.getValue());
+ }
+ }
+
+}
diff --git a/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CMakePropertiesController.java b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CMakePropertiesController.java
new file mode 100644
index 00000000000..9997f85e3f8
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CMakePropertiesController.java
@@ -0,0 +1,145 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Martin Weber.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.cmake.core.internal;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
+import java.nio.file.FileAlreadyExistsException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.List;
+import java.util.Objects;
+import java.util.function.BinaryOperator;
+import java.util.function.Predicate;
+
+import org.eclipse.cdt.cmake.core.internal.properties.CMakePropertiesBean;
+import org.eclipse.cdt.cmake.core.properties.CMakeGenerator;
+import org.eclipse.cdt.cmake.core.properties.ICMakeProperties;
+import org.eclipse.cdt.cmake.core.properties.ICMakePropertiesController;
+import org.yaml.snakeyaml.Yaml;
+import org.yaml.snakeyaml.constructor.CustomClassLoaderConstructor;
+
+/**
+ * A {@code ICMakePropertiesController} that monitors modifications to the project properties that force
+ * us to delete file CMakeCache.txt to avoid complaints by cmake.
+ * @author Martin Weber
+ */
+class CMakePropertiesController implements ICMakePropertiesController {
+
+ private final Path storageFile;
+ private final Runnable cmakeCacheDirtyMarker;
+
+ private String cacheFile;
+ private List<String> extraArguments;
+ private CMakeGenerator generatorLinux;
+ private List<String> extraArgumentsLinux;
+ private CMakeGenerator generatorWindows;
+ private List<String> extraArgumentsWindows;
+ private String buildType;
+
+ /** Creates a new CMakePropertiesController object.
+ *
+ * @param storageFile
+ * the file where to persist the properties. The file may not exist, but its parent directory is supposed to exist.
+ * @param cmakeCacheDirtyMarker
+ * the object to notify when modifications to the project properties force
+ * us to delete file CMakeCache.txt to avoid complaints by cmake
+ */
+ CMakePropertiesController(Path storageFile, Runnable cmakeCacheDirtyMarker) {
+ this.storageFile = Objects.requireNonNull(storageFile);
+ this.cmakeCacheDirtyMarker = Objects.requireNonNull(cmakeCacheDirtyMarker);
+ }
+
+ @Override
+ public ICMakeProperties load() throws IOException {
+ CMakePropertiesBean props = null;
+ if (Files.exists(storageFile)) {
+ try (InputStream is = Files.newInputStream(storageFile)) {
+ props = new Yaml(new CustomClassLoaderConstructor(this.getClass().getClassLoader())).loadAs(is,
+ CMakePropertiesBean.class);
+ // props is null here if if no document was available in the file
+ }
+ }
+ if (props == null) {
+ // nothing was persisted, return default properties
+ props = new CMakePropertiesBean();
+ }
+
+ setupModifyDetection(props);
+ return props;
+ }
+
+ @Override
+ public void save(ICMakeProperties properties) throws IOException {
+ // detect whether changes force us to delete file CMakeCache.txt to avoid complaints by cmake
+ if (isPropertyModified(properties) || isExtraArgumentsPropertyModified(properties)) {
+ cmakeCacheDirtyMarker.run(); // mark cmake cache file for removal
+ }
+ if (!Files.exists(storageFile)) {
+ try {
+ Files.createFile(storageFile);
+ } catch (FileAlreadyExistsException ignore) {
+ }
+ }
+ try (Writer wr = new OutputStreamWriter(Files.newOutputStream(storageFile))) {
+ new Yaml().dump(properties, wr);
+ }
+
+ setupModifyDetection(properties);
+ }
+
+ /** Gets whether changes in one of the basic properties force us to delete file CMakeCache.txt
+ * to avoid complaints by cmake.
+ */
+ private boolean isPropertyModified(ICMakeProperties properties) {
+ return !Objects.equals(buildType, properties.getBuildType())
+ || !Objects.equals(cacheFile, properties.getCacheFile())
+ || !Objects.equals(generatorLinux, properties.getLinuxOverrides().getGenerator())
+ || !Objects.equals(generatorWindows, properties.getWindowsOverrides().getGenerator());
+ }
+
+ /** Gets whether changes in one of the extra arguments properties force us to delete file CMakeCache.txt
+ * to avoid complaints by cmake.
+ */
+ private boolean isExtraArgumentsPropertyModified(ICMakeProperties properties) {
+ return hasExtraArgumentChanged(extraArguments, properties.getExtraArguments())
+ || hasExtraArgumentChanged(extraArgumentsLinux, properties.getLinuxOverrides().getExtraArguments())
+ || hasExtraArgumentChanged(extraArgumentsWindows, properties.getWindowsOverrides().getExtraArguments());
+ }
+
+ /** Sets up detection of modifications that force us to delete file CMakeCache.txt to avoid complaints by cmake
+ */
+ private void setupModifyDetection(ICMakeProperties properties) {
+ buildType = properties.getBuildType();
+ cacheFile = properties.getCacheFile();
+ extraArguments = properties.getExtraArguments();
+ generatorLinux = properties.getLinuxOverrides().getGenerator();
+ extraArgumentsLinux = properties.getLinuxOverrides().getExtraArguments();
+ generatorWindows = properties.getWindowsOverrides().getGenerator();
+ extraArgumentsWindows = properties.getWindowsOverrides().getExtraArguments();
+ }
+
+ private boolean hasExtraArgumentChanged(List<String> expected, List<String> actual) {
+ String wanted = "CMAKE_TOOLCHAIN_FILE"; //$NON-NLS-1$
+ // extract the last arguments that contain String wanted..
+ Predicate<? super String> predContains = a -> a.contains(wanted);
+ BinaryOperator<String> keepLast = (first, second) -> second;
+ String a1 = expected.stream().filter(predContains).reduce(keepLast).orElse(null);
+ String a2 = actual.stream().filter(predContains).reduce(keepLast).orElse(null);
+ if (!Objects.equals(a1, a2)) {
+ return true;
+ }
+ return false;
+ }
+} \ No newline at end of file
diff --git a/build/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CMakeToolChainFile.java b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CMakeToolChainFile.java
index b99b792451c..b99b792451c 100644
--- a/build/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CMakeToolChainFile.java
+++ b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CMakeToolChainFile.java
diff --git a/build/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CMakeToolChainManager.java b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CMakeToolChainManager.java
index f7f2088e983..f7f2088e983 100644
--- a/build/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CMakeToolChainManager.java
+++ b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CMakeToolChainManager.java
diff --git a/build/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CMakeUtils.java b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CMakeUtils.java
index 3b85f39c5a7..3b85f39c5a7 100644
--- a/build/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CMakeUtils.java
+++ b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CMakeUtils.java
diff --git a/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CommandDescriptorBuilder.java b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CommandDescriptorBuilder.java
new file mode 100644
index 00000000000..81702a28391
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/CommandDescriptorBuilder.java
@@ -0,0 +1,202 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Martin Weber.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.cmake.core.internal;
+
+import java.nio.file.Path;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+
+import org.eclipse.cdt.cmake.core.properties.CMakeGenerator;
+import org.eclipse.cdt.cmake.core.properties.ICMakeProperties;
+import org.eclipse.cdt.cmake.core.properties.IOsOverrides;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.variables.IStringVariableManager;
+import org.eclipse.core.variables.VariablesPlugin;
+
+/**
+ * Builds lists of command-line arguments and environment variables for build-script generation
+ * and/or for performing the actual build of a project.
+ *
+ * @author Martin Weber
+ */
+class CommandDescriptorBuilder {
+
+ private final ICMakeProperties cmakeProperties;
+ private final IOsOverridesSelector overridesSelector;
+
+ /**
+ * @param cmakeProperties the project properties related to the cmake command
+ */
+ CommandDescriptorBuilder(ICMakeProperties cmakeProperties, IOsOverridesSelector overridesSelector) {
+ this.cmakeProperties = Objects.requireNonNull(cmakeProperties);
+ this.overridesSelector = Objects.requireNonNull(overridesSelector);
+ }
+
+ /**
+ * Builds the command-line for cmake to generate the build-scripts.
+ *
+ * @param toolChainFile the cmake toolchain file or {@code null} if cmake should use the native
+ * tools it will find in the PATH environment variable
+ *
+ * @return the command-line arguments and environment to invoke cmake.
+ * @throws CoreException
+ */
+ CommandDescriptor makeCMakeCommandline(Path toolChainFile) throws CoreException {
+ List<String> args = new ArrayList<>();
+ List<String> env = new ArrayList<>();
+
+ // defaults for all OSes...
+ args.add("cmake"); //$NON-NLS-1$
+ /* add general settings */
+ if (cmakeProperties.isWarnNoDev())
+ args.add("-Wno-dev"); //$NON-NLS-1$
+ if (cmakeProperties.isDebugTryCompile())
+ args.add("--debug-trycompile"); //$NON-NLS-1$
+ if (cmakeProperties.isDebugOutput())
+ args.add("--debug-output"); //$NON-NLS-1$
+ if (cmakeProperties.isTrace())
+ args.add("--trace"); //$NON-NLS-1$
+ if (cmakeProperties.isWarnUnitialized())
+ args.add("--warn-unitialized"); //$NON-NLS-1$
+ if (cmakeProperties.isWarnUnused())
+ args.add("--warn-unused"); //$NON-NLS-1$
+ {
+ String file = cmakeProperties.getCacheFile();
+ if (!(file == null || file.isBlank())) {
+ args.add("-C"); //$NON-NLS-1$
+ args.add(file);
+ }
+ }
+ CommandDescriptorBuilder.appendCMakeArguments(args, cmakeProperties.getExtraArguments());
+ /* add settings for the operating system we are running under */
+ CommandDescriptorBuilder.appendCMakeOsOverrideArgs(args, overridesSelector.getOsOverrides(cmakeProperties));
+
+ /* at last, add our requirements that override extra args specified by the user... */
+ {
+ // set argument for build type..
+ String bt = cmakeProperties.getBuildType();
+ if (!(bt == null || bt.isBlank())) {
+ args.add("-DCMAKE_BUILD_TYPE=" + bt); //$NON-NLS-1$
+ }
+ // tell cmake to write compile commands to a JSON file
+ args.add("-DCMAKE_EXPORT_COMPILE_COMMANDS=ON"); //$NON-NLS-1$
+ }
+ if (toolChainFile != null) {
+ args.add("-DCMAKE_TOOLCHAIN_FILE=" + toolChainFile.toString()); //$NON-NLS-1$
+ }
+
+ return new CommandDescriptor(args, env);
+ }
+
+ /**
+ * Builds the command-line for cmake to build the project. The first argument will be the
+ * cmake-command.
+ *
+ * @return the command-line arguments and environment to invoke cmake.
+ * @throws CoreException
+ */
+ CommandDescriptor makeCMakeBuildCommandline(String buildscriptTarget) throws CoreException {
+ List<String> args = new ArrayList<>();
+ List<String> env = new ArrayList<>();
+
+ IOsOverrides osOverrides = overridesSelector.getOsOverrides(cmakeProperties);
+ if (osOverrides.getUseDefaultCommand()) {
+ args.add("cmake"); //$NON-NLS-1$
+ } else {
+ IStringVariableManager varManager = VariablesPlugin.getDefault().getStringVariableManager();
+ String cmd = varManager.performStringSubstitution(osOverrides.getCommand());
+ args.add(cmd);
+ }
+ args.add("--build"); //$NON-NLS-1$
+ args.add("."); //$NON-NLS-1$
+ args.add("--target"); //$NON-NLS-1$
+ args.add(buildscriptTarget);
+ // TODO parallel build: use CMAKE_BUILD_PARALLEL_LEVEL envvar (since cmake 3.12)
+ // TODO verbose build: use VERBOSE envvar (since cmake 3.14)
+ // TODO stop on first error: query CMakeGenerator object for argument
+ return new CommandDescriptor(args, env);
+ }
+
+ /**
+ * Appends the additional arguments to pass on the cmake command-line. Performs variable
+ * substitutions.
+ *
+ * @param argList the list to append cmake-arguments to
+ * @param moreArgs the arguments to substitute and append
+ * @throws CoreException if unable to resolve the value of one or more variables
+ */
+ private static void appendCMakeArguments(List<String> argList, final List<String> moreArgs) throws CoreException {
+ IStringVariableManager mgr = VariablesPlugin.getDefault().getStringVariableManager();
+ for (String arg : moreArgs) {
+ String expanded = mgr.performStringSubstitution(arg);
+ argList.add(expanded);
+ }
+ }
+
+ /**
+ * Appends arguments specific to the given OS preferences for build-script generation. The first
+ * argument in the list will be replaced by the cmake command from the specified preferences, if
+ * given.
+ *
+ * @param args the list to append cmake-arguments to.
+ * @param prefs the generic OS specific cmake build properties to convert and append.
+ * @throws CoreException if unable to resolve the value of one or more variables
+ */
+ private static void appendCMakeOsOverrideArgs(List<String> args, final IOsOverrides prefs) throws CoreException {
+ // replace cmake command, if given
+ if (!prefs.getUseDefaultCommand()) {
+ IStringVariableManager varManager = VariablesPlugin.getDefault().getStringVariableManager();
+ String cmd = varManager.performStringSubstitution(prefs.getCommand());
+ args.set(0, cmd);
+ }
+ args.add("-G"); //$NON-NLS-1$
+ final CMakeGenerator generator = prefs.getGenerator();
+ args.add(generator.getCMakeName());
+ appendCMakeArguments(args, prefs.getExtraArguments());
+ }
+
+ /**
+ * Command-line arguments and additional environment variables to be used to run a process.
+ * @author Martin Weber
+ */
+ static final class CommandDescriptor {
+ private final List<String> arguments;
+ private final List<String> environment;
+
+ /**
+ * @param arguments
+ * @param environment the list of environment variables in variable=value format to pass to
+ * the process.
+ */
+ CommandDescriptor(List<String> arguments, List<String> environment) {
+ this.arguments = Objects.requireNonNull(arguments);
+ this.environment = Objects.requireNonNull(environment);
+ }
+
+ /**
+ * Gets the command-line arguments for the process.
+ *
+ * @return a non-empty list containing at least the name of the command to invoke.
+ */
+ public List<String> getArguments() {
+ return arguments;
+ }
+
+ /**
+ * Gets the list of environment variables in variable=value format to pass to the process.
+ */
+ public List<String> getEnvironment() {
+ return environment;
+ }
+ }
+}
diff --git a/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/ICMakeExecutionMarkerFactory.java b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/ICMakeExecutionMarkerFactory.java
new file mode 100644
index 00000000000..b6283f2c517
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/ICMakeExecutionMarkerFactory.java
@@ -0,0 +1,56 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Martin Weber.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.cmake.core.internal;
+
+import java.util.Map;
+
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.CoreException;
+
+/** Responsible for creating problem marker objects related to errors in cmake's output for the project currently being
+ * build.
+ *
+ * @author Martin Weber
+ */
+@FunctionalInterface
+interface ICMakeExecutionMarkerFactory {
+
+ /** ID for error markers related to execution of the cmake tool.
+ * @see IResource#createMarker(String)
+ */
+ String CMAKE_PROBLEM_MARKER_ID = Activator.getId() + ".cmakeproblem"; //$NON-NLS-1$
+
+ /**
+ * Creates a problem marker and/or text marker object related to errors in cmake's output.
+ *
+ * @param message
+ * the complete error message, including the string the message starts with
+ * @param severity
+ * the severity of the problem, see {@link IMarker} for acceptable severity values
+ * @param filePath
+ * the name of the file where the problem occurred, extracted from the error message.
+ * This is a String denoting a location in the file system.<br>
+ * If <code>null</code>, no file information is present in the error message; the marker should be created
+ * then for the project being build.<br>
+ * If it is relative, it is relative to the source-root of the project being build (and thus can be
+ * converted to an {@code IResource}).<br>
+ * If absolute, the file might not be a workspace resource (e.g. one of cmake's module files).<br>
+ * @param mandatoryAttributes
+ * mandatory attributes to add to the marker. Attribute keys must be one of those defined in {@link IMarker}
+ *
+ * @throws CoreException
+ */
+ // TODO pass in the extra attributes here then return void
+ void createMarker(String message, int severity, String filePath, Map<String, Object> mandatoryAttributes)
+ throws CoreException;
+} \ No newline at end of file
diff --git a/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/IOsOverridesSelector.java b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/IOsOverridesSelector.java
new file mode 100644
index 00000000000..4154551728c
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/IOsOverridesSelector.java
@@ -0,0 +1,33 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Martin Weber.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.cmake.core.internal;
+
+import org.eclipse.cdt.cmake.core.properties.ICMakeProperties;
+import org.eclipse.cdt.cmake.core.properties.IOsOverrides;
+
+/**
+ * Responsible for retrieving the {@link IOsOverrides} that match the target operating system of a
+ * project build.
+ *
+ * @author Martin Weber
+ */
+interface IOsOverridesSelector {
+ /**
+ * Gets the overrides from the specified {@code ICMakeProperties} object that match the target
+ * operating system. <br>
+ * Intended to get the command-line arguments to generate build-scripts or perform the build if
+ * the platform the eclipse workbench is running on differs from the platform the build
+ * artifacts are to be build for. (E.g.: The workbench runs on windows but the build is to run
+ * in a container that runs linux.)
+ */
+ IOsOverrides getOsOverrides(ICMakeProperties cmakeProperties);
+}
diff --git a/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/Messages.java b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/Messages.java
new file mode 100644
index 00000000000..03e52d66e9f
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/Messages.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2016 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.cmake.core.internal;
+
+import org.eclipse.osgi.util.NLS;
+
+public class Messages extends NLS {
+ private static final String BUNDLE_NAME = "org.eclipse.cdt.cmake.core.internal.messages"; //$NON-NLS-1$
+ public static String CMakeBuildConfiguration_Building;
+ public static String CMakeBuildConfiguration_BuildingIn;
+ public static String CMakeBuildConfiguration_BuildingComplete;
+ public static String CMakeBuildConfiguration_BuildComplete;
+ public static String CMakeBuildConfiguration_Cleaning;
+ public static String CMakeBuildConfiguration_Configuring;
+ public static String CMakeBuildConfiguration_ExitFailure;
+ public static String CMakeBuildConfiguration_NotFound;
+ public static String CMakeBuildConfiguration_ProcCompCmds;
+ public static String CMakeBuildConfiguration_ProcCompJson;
+ public static String CMakeBuildConfiguration_Failure;
+ public static String CMakeErrorParser_NotAWorkspaceResource;
+ static {
+ // initialize resource bundle
+ NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+ }
+
+ private Messages() {
+ }
+}
diff --git a/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/ParsingConsoleOutputStream.java b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/ParsingConsoleOutputStream.java
new file mode 100644
index 00000000000..8a1ef1ad25c
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/ParsingConsoleOutputStream.java
@@ -0,0 +1,68 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Martin Weber.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.cmake.core.internal;
+
+import java.io.IOException;
+import java.util.Objects;
+
+import org.eclipse.cdt.core.ConsoleOutputStream;
+
+/**
+ * Intercepts output to a console output stream and forwards it to a CMakeErrorParser for processing.
+ *
+ * @author Martin Weber
+ */
+class ParsingConsoleOutputStream extends ConsoleOutputStream {
+
+ private final ConsoleOutputStream os;
+ private final CMakeErrorParser parser;
+
+ /**
+ * @param outputStream
+ * the OutputStream to write to
+ * @param cmakeErrorParser
+ * the CMakeErrorParser for processing the output
+ */
+ public ParsingConsoleOutputStream(ConsoleOutputStream outputStream, CMakeErrorParser cmakeErrorParser) {
+ this.os = Objects.requireNonNull(outputStream);
+ this.parser = Objects.requireNonNull(cmakeErrorParser);
+ }
+
+ @Override
+ public void write(int c) throws IOException {
+ write(new byte[] { (byte) c }, 0, 1);
+ }
+
+ @Override
+ public void write(byte[] b, int off, int len) throws IOException {
+ os.write(b, off, len);
+ parser.addInput(new String(b, off, len));
+ }
+
+ // interface ConsoleOutputStream
+ @Override
+ public synchronized void write(String msg) throws IOException {
+ os.write(msg);
+ parser.addInput(msg);
+ }
+
+ @Override
+ public void flush() throws IOException {
+ os.flush();
+ }
+
+ @Override
+ public void close() throws IOException {
+ os.close();
+ parser.close();
+ }
+}
diff --git a/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/messages.properties b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/messages.properties
new file mode 100644
index 00000000000..caf58d32a5b
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/messages.properties
@@ -0,0 +1,22 @@
+################################################################################
+# Copyright (c) 2016 QNX Software Systems and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+################################################################################
+CMakeBuildConfiguration_Building=Building %s
+CMakeBuildConfiguration_BuildingIn=Building in: %s\n
+CMakeBuildConfiguration_BuildingComplete=Build complete (%d errors, %d warnings): %s\n
+CMakeBuildConfiguration_BuildComplete=Build complete\n
+CMakeBuildConfiguration_Configuring=Configuring in: %s\n
+CMakeBuildConfiguration_Cleaning=Cleaning %s
+CMakeBuildConfiguration_ExitFailure=%1$s exited with status %2$d. See CDT build console for details.
+CMakeBuildConfiguration_NotFound=CMakeFiles not found. Assuming clean.
+CMakeBuildConfiguration_ProcCompCmds=Processing compile commands %s
+CMakeBuildConfiguration_ProcCompJson=Processing compile_commands.json
+CMakeBuildConfiguration_Failure=Failure running cmake: %s\n
+CMakeErrorParser_NotAWorkspaceResource=Could not map %s to a workspace resource. Did the build run in a container?
diff --git a/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/properties/AbstractOsOverrides.java b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/properties/AbstractOsOverrides.java
new file mode 100644
index 00000000000..4451ca6ad69
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/properties/AbstractOsOverrides.java
@@ -0,0 +1,91 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Martin Weber.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.cmake.core.internal.properties;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+
+import org.eclipse.cdt.cmake.core.properties.CMakeGenerator;
+import org.eclipse.cdt.cmake.core.properties.IOsOverrides;
+
+/**
+ * Preferences that override/augment the generic properties when running under a
+ * specific OS.
+ *
+ * @author Martin Weber
+ */
+public abstract class AbstractOsOverrides implements IOsOverrides {
+
+ private String command;
+ private boolean useDefaultCommand;
+ private CMakeGenerator generator;
+ private List<String> extraArguments = new ArrayList<>(0);
+
+ /**
+ * Creates a new object, initialized with all default values.
+ */
+ public AbstractOsOverrides() {
+ reset();
+ }
+
+ /**
+ * Sets each value to its default.
+ */
+ public void reset() {
+ setCommand("cmake"); //$NON-NLS-1$
+ useDefaultCommand = true;
+ setGenerator(CMakeGenerator.UnixMakefiles);
+ extraArguments.clear();
+ }
+
+ @Override
+ public final boolean getUseDefaultCommand() {
+ return useDefaultCommand;
+ }
+
+ @Override
+ public void setUseDefaultCommand(boolean useDefaultCommand) {
+ this.useDefaultCommand = useDefaultCommand;
+ }
+
+ @Override
+ public final String getCommand() {
+ return command;
+ }
+
+ @Override
+ public void setCommand(String command) {
+ this.command = Objects.requireNonNull(command, "command"); //$NON-NLS-1$
+ }
+
+ @Override
+ public final CMakeGenerator getGenerator() {
+ return generator;
+ }
+
+ @Override
+ public void setGenerator(CMakeGenerator generator) {
+ this.generator = Objects.requireNonNull(generator, "generator"); //$NON-NLS-1$
+ }
+
+ @Override
+ public final List<String> getExtraArguments() {
+ return List.copyOf(extraArguments);
+ }
+
+ @Override
+ public void setExtraArguments(List<String> extraArguments) {
+ this.extraArguments = extraArguments;
+ }
+
+} \ No newline at end of file
diff --git a/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/properties/CMakePropertiesBean.java b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/properties/CMakePropertiesBean.java
new file mode 100644
index 00000000000..e24b40c8e66
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/properties/CMakePropertiesBean.java
@@ -0,0 +1,175 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Martin Weber.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.cmake.core.internal.properties;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.cdt.cmake.core.properties.ICMakeProperties;
+
+/**
+ * Holds project Properties for cmake. Follows the Java-Beans pattern to make (de-)serialization easier.
+ *
+ * @author Martin Weber
+ */
+public class CMakePropertiesBean implements ICMakeProperties {
+
+ private boolean warnNoDev, debugTryCompile, debugOutput, trace, warnUnitialized, warnUnused;
+ private String cacheFile;
+ private boolean clearCache;
+ private List<String> extraArguments = new ArrayList<>(0);
+ private LinuxOverrides linuxOverrides = new LinuxOverrides();
+ private WindowsOverrides windowsOverrides = new WindowsOverrides();
+ private String buildType;
+
+ /**
+ * Creates a new object, initialized with all default values.
+ */
+ public CMakePropertiesBean() {
+ reset(true);
+ }
+
+ @Override
+ public boolean isWarnNoDev() {
+ return warnNoDev;
+ }
+
+ @Override
+ public void setWarnNoDev(boolean warnNoDev) {
+ this.warnNoDev = warnNoDev;
+ }
+
+ @Override
+ public boolean isDebugTryCompile() {
+ return debugTryCompile;
+ }
+
+ @Override
+ public void setDebugTryCompile(boolean debugTryCompile) {
+ this.debugTryCompile = debugTryCompile;
+ }
+
+ @Override
+ public boolean isDebugOutput() {
+ return debugOutput;
+ }
+
+ @Override
+ public void setDebugOutput(boolean debugOutput) {
+ this.debugOutput = debugOutput;
+ }
+
+ @Override
+ public boolean isTrace() {
+ return trace;
+ }
+
+ @Override
+ public void setTrace(boolean trace) {
+ this.trace = trace;
+ }
+
+ @Override
+ public boolean isWarnUnitialized() {
+ return warnUnitialized;
+ }
+
+ @Override
+ public void setWarnUnitialized(boolean warnUnitialized) {
+ this.warnUnitialized = warnUnitialized;
+ }
+
+ @Override
+ public boolean isWarnUnused() {
+ return warnUnused;
+ }
+
+ @Override
+ public void setWarnUnused(boolean warnUnused) {
+ this.warnUnused = warnUnused;
+ }
+
+ @Override
+ public String getBuildType() {
+ return buildType;
+ }
+
+ @Override
+ public void setBuildType(String buildType) {
+ this.buildType = buildType;
+ }
+
+ @Override
+ public List<String> getExtraArguments() {
+ return List.copyOf(extraArguments);
+ }
+
+ @Override
+ public void setExtraArguments(List<String> extraArguments) {
+ this.extraArguments = extraArguments;
+ }
+
+ @Override
+ public LinuxOverrides getLinuxOverrides() {
+ return linuxOverrides;
+ }
+
+ public void setLinuxOverrides(LinuxOverrides linuxOverrides) {
+ this.linuxOverrides = linuxOverrides;
+ }
+
+ @Override
+ public WindowsOverrides getWindowsOverrides() {
+ return windowsOverrides;
+ }
+
+ public void setWindowsOverrides(WindowsOverrides windowsOverrides) {
+ this.windowsOverrides = windowsOverrides;
+ }
+
+ @Override
+ public String getCacheFile() {
+ return cacheFile;
+ }
+
+ @Override
+ public void setCacheFile(String cacheFile) {
+ this.cacheFile = cacheFile;
+ }
+
+ @Override
+ public boolean isClearCache() {
+ return clearCache;
+ }
+
+ @Override
+ public void setClearCache(boolean clearCache) {
+ this.clearCache = clearCache;
+ }
+
+ @Override
+ public void reset(boolean resetOsOverrides) {
+ warnNoDev = false;
+ debugTryCompile = false;
+ debugOutput = false;
+ trace = false;
+ warnUnitialized = false;
+ warnUnused = false;
+ extraArguments.clear();
+ cacheFile = ""; //$NON-NLS-1$
+
+ if (resetOsOverrides) {
+ linuxOverrides.reset();
+ windowsOverrides.reset();
+ }
+ }
+}
diff --git a/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/properties/LinuxOverrides.java b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/properties/LinuxOverrides.java
new file mode 100644
index 00000000000..d07699089d1
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/properties/LinuxOverrides.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Martin Weber.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.cmake.core.internal.properties;
+
+/**
+ * Preferences that override/augment the generic properties when running under
+ * Linux.
+ *
+ * @author Martin Weber
+ */
+public class LinuxOverrides extends AbstractOsOverrides {
+
+ /**
+ * Creates a new object, initialized with all default values.
+ */
+ public LinuxOverrides() {
+ }
+}
diff --git a/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/properties/WindowsOverrides.java b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/properties/WindowsOverrides.java
new file mode 100644
index 00000000000..4e79f113d70
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/internal/properties/WindowsOverrides.java
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Martin Weber.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.cmake.core.internal.properties;
+
+import org.eclipse.cdt.cmake.core.properties.CMakeGenerator;
+
+/**
+ * Preferences that override/augment the generic properties when running under
+ * Windows.
+ *
+ * @author Martin Weber
+ */
+public class WindowsOverrides extends AbstractOsOverrides {
+
+ /** Overridden to set a sensible generator. */
+ @Override
+ public void reset() {
+ super.reset();
+ setGenerator(CMakeGenerator.MinGWMakefiles);
+ }
+}
diff --git a/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/properties/CMakeGenerator.java b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/properties/CMakeGenerator.java
new file mode 100644
index 00000000000..553cb0767d5
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/properties/CMakeGenerator.java
@@ -0,0 +1,84 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Martin Weber.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.cmake.core.properties;
+
+/**
+ * Represents a cmake build-script generator including information about the
+ * makefile (build-script) processor that builds from the generated script.
+ *
+ * @author Martin Weber
+ * @since 1.4
+ */
+public enum CMakeGenerator {
+ /*
+ * Implementation Note: Please do not include generators for IDE project files,
+ * such as "Eclipse CDT4 - Unix Makefiles".
+ */
+
+ // linux generators
+ UnixMakefiles("Unix Makefiles"), //$NON-NLS-1$
+ // Ninja
+ Ninja("Ninja", "-k 0") { //$NON-NLS-1$ //$NON-NLS-2$
+ @Override
+ public String getMakefileName() {
+ return "build.ninja"; //$NON-NLS-1$
+ }
+ },
+ // windows generators
+ NMakeMakefilesJOM("NMake Makefiles JOM"), //$NON-NLS-1$
+ MinGWMakefiles("MinGW Makefiles"), //$NON-NLS-1$
+ MSYSMakefiles("MSYS Makefiles"), //$NON-NLS-1$
+ NMakeMakefiles("NMake Makefiles"), //$NON-NLS-1$
+ BorlandMakefiles("Borland Makefiles"), //$NON-NLS-1$
+ WatcomWMake("Watcom WMake"); //$NON-NLS-1$
+
+ private final String name;
+ private String ignoreErrOption;
+
+ private CMakeGenerator(String name, String ignoreErrOption) {
+ this.name = name;
+ this.ignoreErrOption = ignoreErrOption;
+ }
+
+ private CMakeGenerator(String name) {
+ this(name, "-k"); //$NON-NLS-1$
+ }
+
+ /**
+ * Gets the cmake argument that specifies the build-script generator.
+ *
+ * @return a non-empty string, which must be a valid argument for cmake's -G
+ * option.
+ */
+ public String getCMakeName() {
+ return name;
+ }
+
+ /**
+ * Gets the name of the top-level makefile (build-script) which is interpreted
+ * by the build-script processor.
+ *
+ * @return name of the makefile.
+ */
+ public String getMakefileName() {
+ return "Makefile"; //$NON-NLS-1$
+ }
+
+ /**
+ * Gets the build-script processor´s command argument(s) to ignore build errors.
+ *
+ * @return the command option string or {@code null} if no argument is needed.
+ */
+ public String getIgnoreErrOption() {
+ return ignoreErrOption;
+ }
+}
diff --git a/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/properties/ICMakeProperties.java b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/properties/ICMakeProperties.java
new file mode 100644
index 00000000000..a817efc78b2
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/properties/ICMakeProperties.java
@@ -0,0 +1,162 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Martin Weber.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.cmake.core.properties;
+
+import java.util.List;
+
+/**
+ * Holds project Properties for cmake.
+ *
+ * @author Martin Weber
+ *
+ * @noimplement This interface is not intended to be implemented by clients.
+ * @noextend This interface is not intended to be extended by clients.
+ * @since 1.4
+ */
+public interface ICMakeProperties {
+
+ /**
+ * {@code -Wno-dev}
+ */
+ boolean isWarnNoDev();
+
+ /**
+ * {@code -Wno-dev}
+ */
+ void setWarnNoDev(boolean warnNoDev);
+
+ /**
+ * {@code --debug-trycompile}
+ */
+ boolean isDebugTryCompile();
+
+ /**
+ * {@code --debug-trycompile}
+ */
+ void setDebugTryCompile(boolean debugTryCompile);
+
+ /**
+ * {@code --debug-output}
+ */
+ boolean isDebugOutput();
+
+ /**
+ * {@code --debug-output}
+ */
+ void setDebugOutput(boolean debugOutput);
+
+ /**
+ * {@code --trace}
+ */
+ boolean isTrace();
+
+ /**
+ * {@code --trace}
+ */
+ void setTrace(boolean trace);
+
+ /**
+ * {@code --warn-uninitialized}
+ */
+ boolean isWarnUnitialized();
+
+ /**
+ * {@code --warn-uninitialized}
+ */
+ void setWarnUnitialized(boolean warnUnitialized);
+
+ /**
+ * {@code --warn-unused-vars}
+ */
+ boolean isWarnUnused();
+
+ /**
+ * {@code --warn-unused-vars}
+ */
+ void setWarnUnused(boolean warnUnused);
+
+ /** Gets the build type ({@code Debug}, {@code Release}, ...). The returned value is passed to cmake
+ * as the {@code CMAKE_BUILD_TYPE} symbol on the command-line.
+ *
+ * @return the build type String. If <code>null</code> or {@link String#isBlank() blank}, no
+ * {@code CMAKE_BUILD_TYPE} symbol argument will be given to cmake, causing it to use its
+ * default build-type.
+ */
+ String getBuildType();
+
+ /** Sets the build type.
+ * @param buildType the build type to set. May be <code>null</code> or {@link String#isBlank() blank}.
+ * @see #getBuildType()
+ */
+ void setBuildType(String buildType);
+
+ /**
+ * Gets the list of extra arguments to pass on the cmake command-line.
+ *
+ * @return a unmodifiable list, never {@code null}
+ *
+ */
+ List<String> getExtraArguments();
+
+ /**
+ * Sets the list of extra arguments to pass on the cmake command-line.
+ */
+ void setExtraArguments(List<String> extraArguments);
+
+ /**
+ * Gets the name of the file that is used to pre-populate the cmake cache.
+ * {@code -C}
+ *
+ * @return the file name to set. If <code>null</code> or {@link String#isBlank() blank}, the cmake cache shall not be
+ * pre-populated.
+ */
+ String getCacheFile();
+
+ /**
+ * Sets the name of the file that is used to pre-populate the cmake cache.
+ * {@code -C}
+ *
+ * @param cacheFile
+ * the file name. May be <code>null</code> or {@link String#isBlank() blank}.
+ * @see #getCacheFile()
+ */
+ void setCacheFile(String cacheFile);
+
+ /** Gets whether to clear the cmake-cache before build. If set to <code>true</code>, this will force to run cmake
+ * prior to each build.
+ */
+ boolean isClearCache();
+
+ /** Sets whether to clear the cmake-cache before build.
+ */
+ void setClearCache(boolean clearCache);
+
+ /**
+ * Gets the override/augmenting properties to apply when the build runs on linux.
+ */
+ IOsOverrides getLinuxOverrides();
+
+ /**
+ * Gets the override/augmenting properties to apply when the build runs on windows.
+ */
+ IOsOverrides getWindowsOverrides();
+
+ /**
+ * Sets each property to its default value. This is intended for UIs that wish to implement a restore-defaults feature.<br>
+ *
+ * @param resetOsOverrides
+ * whether to also reset the OS-specific overrides ({@link #getLinuxOverrides()},
+ * {@link #getWindowsOverrides()}). If the overrides are displayed in separate tabs in the UI, <code>false</code>
+ * should be specified.
+ */
+ void reset(boolean resetOsOverrides);
+} \ No newline at end of file
diff --git a/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/properties/ICMakePropertiesController.java b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/properties/ICMakePropertiesController.java
new file mode 100644
index 00000000000..09a6e717fee
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/properties/ICMakePropertiesController.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Martin Weber.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.cmake.core.properties;
+
+import java.io.IOException;
+
+/**
+ * Responsible for loading and persisting {@code ICMakeProperties} objects.
+ *
+ * @author Martin Weber
+ * @since 1.4
+ */
+public interface ICMakePropertiesController {
+
+ /** Creates a new {@code ICMakeProperties} object, initialized from the persistence store.
+ * If the persistence store does not exist, an object initialized to the default values is returned.
+ *
+ * @throws IOException if the persistence store exists but could not be read
+ */
+ ICMakeProperties load() throws IOException;
+
+ /** Saves the specified {@code ICMakeProperties} object to the persistence store.
+ *
+ * @throws IOException if the persistence store could not be written to
+ */
+ void save(ICMakeProperties properties) throws IOException;
+}
diff --git a/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/properties/IGeneralProperties.java b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/properties/IGeneralProperties.java
new file mode 100644
index 00000000000..cfb15021c0c
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/properties/IGeneralProperties.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Martin Weber.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.cmake.core.properties;
+
+/**
+ * General, non-cmake related project settings.
+ *
+ * @author Martin Weber
+ *
+ * @noimplement This interface is not intended to be implemented by clients.
+ * @noextend This interface is not intended to be extended by clients.
+ * @since 1.4
+ */
+public interface IGeneralProperties {
+
+ /**
+ * Gets the name of the top-level directory relative to the project root.
+ */
+ String getSourceDirectory();
+
+ /**
+ * Sets the name of the top-level directory relative to the project root.
+ */
+ void setSourceDirectory(String sourceDirectory);
+
+ /**
+ * Gets the name of the build directory.
+ */
+ String getBuildDirectory();
+
+ /**
+ * Sets the name of the build directory.
+ */
+ void setBuildDirectory(String buildDirectory);
+} \ No newline at end of file
diff --git a/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/properties/IOsOverrides.java b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/properties/IOsOverrides.java
new file mode 100644
index 00000000000..37f4dfe801b
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.core/src/org/eclipse/cdt/cmake/core/properties/IOsOverrides.java
@@ -0,0 +1,66 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Martin Weber.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.cmake.core.properties;
+
+import java.util.List;
+
+/**
+ * Properties that override/augment the generic properties when running under/building for a
+ * specific OS.
+ *
+ * @author Martin Weber
+ * @since 1.4
+ */
+public interface IOsOverrides {
+
+ /**
+ * Gets whether to use the default cmake command.
+ */
+ boolean getUseDefaultCommand();
+
+ /**
+ * Sets whether to use the default cmake command.
+ */
+ void setUseDefaultCommand(boolean useDefaultCommand);
+
+ /**
+ * Gets the cmake command. Has no effect if {@link #getUseDefaultCommand()} returns <code>false</code>.
+ */
+ String getCommand();
+
+ /**
+ * Sets the cmake command.
+ */
+ void setCommand(String command);
+
+ /**
+ * Gets the cmake buildscript generator.
+ */
+ CMakeGenerator getGenerator();
+
+ /**
+ * Sets the cmake build-script generator.
+ */
+ void setGenerator(CMakeGenerator generator);
+
+ /**
+ * Gets the list of extra arguments to pass on the cmake command-line.
+ *
+ * @return an unmodifiable list, never {@code null}
+ */
+ List<String> getExtraArguments();
+
+ /**
+ * Sets the list of extra arguments to pass on the cmake command-line.
+ */
+ void setExtraArguments(List<String> extraArguments);
+} \ No newline at end of file
diff --git a/build/org.eclipse.cdt.cmake.core/templates/simple/CMakeLists.txt b/cmake/org.eclipse.cdt.cmake.core/templates/simple/CMakeLists.txt
index 6ee2edbbdc6..6ee2edbbdc6 100644
--- a/build/org.eclipse.cdt.cmake.core/templates/simple/CMakeLists.txt
+++ b/cmake/org.eclipse.cdt.cmake.core/templates/simple/CMakeLists.txt
diff --git a/build/org.eclipse.cdt.cmake.core/templates/simple/main.cpp b/cmake/org.eclipse.cdt.cmake.core/templates/simple/main.cpp
index f1d3a296cb5..f1d3a296cb5 100644
--- a/build/org.eclipse.cdt.cmake.core/templates/simple/main.cpp
+++ b/cmake/org.eclipse.cdt.cmake.core/templates/simple/main.cpp
diff --git a/build/org.eclipse.cdt.cmake.core/templates/simple/manifest.xml b/cmake/org.eclipse.cdt.cmake.core/templates/simple/manifest.xml
index 708c005910b..708c005910b 100644
--- a/build/org.eclipse.cdt.cmake.core/templates/simple/manifest.xml
+++ b/cmake/org.eclipse.cdt.cmake.core/templates/simple/manifest.xml
diff --git a/cmake/org.eclipse.cdt.cmake.ui.tests/.classpath b/cmake/org.eclipse.cdt.cmake.ui.tests/.classpath
new file mode 100644
index 00000000000..a42a828e04a
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.ui.tests/.classpath
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src">
+ <attributes>
+ <attribute name="test" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/build/org.eclipse.cdt.cmake.ui.tests/.project b/cmake/org.eclipse.cdt.cmake.ui.tests/.project
index 737f5d08009..737f5d08009 100644
--- a/build/org.eclipse.cdt.cmake.ui.tests/.project
+++ b/cmake/org.eclipse.cdt.cmake.ui.tests/.project
diff --git a/cmake/org.eclipse.cdt.cmake.ui.tests/.settings/org.eclipse.core.resources.prefs b/cmake/org.eclipse.cdt.cmake.ui.tests/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.ui.tests/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/cmake/org.eclipse.cdt.cmake.ui.tests/.settings/org.eclipse.jdt.core.prefs b/cmake/org.eclipse.cdt.cmake.ui.tests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..5b1c443114d
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.ui.tests/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=ignore
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
+org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=ignore
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/build/org.eclipse.cdt.cmake.ui/.settings/org.eclipse.jdt.launching.prefs b/cmake/org.eclipse.cdt.cmake.ui.tests/.settings/org.eclipse.jdt.launching.prefs
index f8a131b56e0..f8a131b56e0 100644
--- a/build/org.eclipse.cdt.cmake.ui/.settings/org.eclipse.jdt.launching.prefs
+++ b/cmake/org.eclipse.cdt.cmake.ui.tests/.settings/org.eclipse.jdt.launching.prefs
diff --git a/cmake/org.eclipse.cdt.cmake.ui.tests/.settings/org.eclipse.jdt.ui.prefs b/cmake/org.eclipse.cdt.cmake.ui.tests/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.ui.tests/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/debug/org.eclipse.cdt.debug.application.product/.settings/org.eclipse.pde.api.tools.prefs b/cmake/org.eclipse.cdt.cmake.ui.tests/.settings/org.eclipse.pde.api.tools.prefs
index ec9fbf321d0..ec9fbf321d0 100644
--- a/debug/org.eclipse.cdt.debug.application.product/.settings/org.eclipse.pde.api.tools.prefs
+++ b/cmake/org.eclipse.cdt.cmake.ui.tests/.settings/org.eclipse.pde.api.tools.prefs
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/.settings/org.eclipse.pde.prefs b/cmake/org.eclipse.cdt.cmake.ui.tests/.settings/org.eclipse.pde.prefs
index 51a63ec9988..51a63ec9988 100644
--- a/lrparser/org.eclipse.cdt.core.lrparser.tests/.settings/org.eclipse.pde.prefs
+++ b/cmake/org.eclipse.cdt.cmake.ui.tests/.settings/org.eclipse.pde.prefs
diff --git a/cmake/org.eclipse.cdt.cmake.ui.tests/META-INF/MANIFEST.MF b/cmake/org.eclipse.cdt.cmake.ui.tests/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..0e122f34b15
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.ui.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,15 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.cdt.cmake.ui.tests
+Bundle-Version: 1.0.0.qualifier
+Bundle-Vendor: %providerName
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Require-Bundle: org.eclipse.swtbot.go;bundle-version="2.7.0",
+ org.eclipse.cdt.core;bundle-version="6.4.0",
+ org.eclipse.core.resources;bundle-version="3.12.0",
+ org.eclipse.cdt.cmake.core;bundle-version="1.2.0"
+Automatic-Module-Name: org.eclipse.cdt.cmake.ui.tests
+Bundle-Localization: plugin
+Import-Package: org.junit.jupiter.api;version="5.8.1",
+ org.junit.jupiter.api.io;version="5.8.1"
diff --git a/cmake/org.eclipse.cdt.cmake.ui.tests/about.html b/cmake/org.eclipse.cdt.cmake.ui.tests/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.ui.tests/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/cmake/org.eclipse.cdt.cmake.ui.tests/build.properties b/cmake/org.eclipse.cdt.cmake.ui.tests/build.properties
new file mode 100644
index 00000000000..132ade6351a
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.ui.tests/build.properties
@@ -0,0 +1,10 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.properties,\
+ about.html,\
+ swtbot-test-plugin.properties,\
+ projects/
+src.includes = about.html,\
+ projects/
diff --git a/cmake/org.eclipse.cdt.cmake.ui.tests/plugin.properties b/cmake/org.eclipse.cdt.cmake.ui.tests/plugin.properties
new file mode 100644
index 00000000000..1f398852583
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.ui.tests/plugin.properties
@@ -0,0 +1,14 @@
+##################################################################################
+# Copyright (c) 2020 Torbjörn Svensson and others. All rights reserved.
+# This program and the accompanying materials are made available under the terms
+# of the Eclipse Public License 2.0 which accompanies this distribution, and is
+# available at https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Torbjörn Svensson - initial API and implementation
+##################################################################################
+
+pluginName = Tests
+providerName = Eclipse CDT
diff --git a/cmake/org.eclipse.cdt.cmake.ui.tests/pom.xml b/cmake/org.eclipse.cdt.cmake.ui.tests/pom.xml
new file mode 100644
index 00000000000..0bb8bded4bf
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.ui.tests/pom.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2020, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
+<project
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+ xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.cdt</groupId>
+ <artifactId>cdt-parent</artifactId>
+ <version>10.7.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent>
+
+ <artifactId>org.eclipse.cdt.cmake.ui.tests</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <packaging>eclipse-test-plugin</packaging>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>target-platform-configuration</artifactId>
+ <configuration>
+ <dependency-resolution>
+ <extraRequirements>
+ <requirement>
+ <type>p2-installable-unit</type>
+ <id>org.eclipse.cdt.feature.group</id>
+ <versionRange>0.0.0</versionRange>
+ </requirement>
+ <requirement>
+ <type>p2-installable-unit</type>
+ <id>org.eclipse.cdt.cmake.feature.group</id>
+ <versionRange>0.0.0</versionRange>
+ </requirement>
+ </extraRequirements>
+ </dependency-resolution>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/cmake/org.eclipse.cdt.cmake.ui.tests/projects/NestedProject/App1/CMakeLists.txt b/cmake/org.eclipse.cdt.cmake.ui.tests/projects/NestedProject/App1/CMakeLists.txt
new file mode 100644
index 00000000000..9cdcf22c485
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.ui.tests/projects/NestedProject/App1/CMakeLists.txt
@@ -0,0 +1,15 @@
+cmake_minimum_required(VERSION 3.10)
+
+# Set the project name and version
+project(App1 VERSION 1.0)
+
+set(CMAKE_EXPORT_COMPILE_COMMANDS "true")
+
+# Configuration header
+configure_file(app1.h.in app1.h)
+
+# Add project executable
+add_executable(${PROJECT_NAME} app1.c)
+
+# Include the configuration header
+target_include_directories(${PROJECT_NAME} PUBLIC "${PROJECT_BINARY_DIR}")
diff --git a/cmake/org.eclipse.cdt.cmake.ui.tests/projects/NestedProject/App1/app1.c b/cmake/org.eclipse.cdt.cmake.ui.tests/projects/NestedProject/App1/app1.c
new file mode 100644
index 00000000000..3c835fdd007
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.ui.tests/projects/NestedProject/App1/app1.c
@@ -0,0 +1,8 @@
+#include <stdio.h>
+#include "app1.h"
+
+int main() {
+ printf("Welcome to App1\n");
+ printf("v%d.%d\n", App1_VERSION_MAJOR, App1_VERSION_MINOR);
+ return 0;
+}
diff --git a/cmake/org.eclipse.cdt.cmake.ui.tests/projects/NestedProject/App1/app1.h.in b/cmake/org.eclipse.cdt.cmake.ui.tests/projects/NestedProject/App1/app1.h.in
new file mode 100644
index 00000000000..fd3a262863f
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.ui.tests/projects/NestedProject/App1/app1.h.in
@@ -0,0 +1,2 @@
+#define App1_VERSION_MAJOR @App1_VERSION_MAJOR@
+#define App1_VERSION_MINOR @App1_VERSION_MINOR@
diff --git a/cmake/org.eclipse.cdt.cmake.ui.tests/projects/NestedProject/App2/CMakeLists.txt b/cmake/org.eclipse.cdt.cmake.ui.tests/projects/NestedProject/App2/CMakeLists.txt
new file mode 100644
index 00000000000..09be2e33ff1
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.ui.tests/projects/NestedProject/App2/CMakeLists.txt
@@ -0,0 +1,15 @@
+cmake_minimum_required(VERSION 3.10)
+
+# Set the project name and version
+project(App2 VERSION 2.0)
+
+set(CMAKE_EXPORT_COMPILE_COMMANDS "true")
+
+# Configuration header
+configure_file(app2.h.in app2.h)
+
+# Add project executable
+add_executable(${PROJECT_NAME} app2.c)
+
+# Include the configuration header
+target_include_directories(${PROJECT_NAME} PUBLIC "${PROJECT_BINARY_DIR}")
diff --git a/cmake/org.eclipse.cdt.cmake.ui.tests/projects/NestedProject/App2/app2.c b/cmake/org.eclipse.cdt.cmake.ui.tests/projects/NestedProject/App2/app2.c
new file mode 100644
index 00000000000..7657f365c00
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.ui.tests/projects/NestedProject/App2/app2.c
@@ -0,0 +1,8 @@
+#include <stdio.h>
+#include "app2.h"
+
+int main() {
+ printf("Welcome to App2\n");
+ printf("v%d.%d\n", App2_VERSION_MAJOR, App2_VERSION_MINOR);
+ return 0;
+}
diff --git a/cmake/org.eclipse.cdt.cmake.ui.tests/projects/NestedProject/App2/app2.h.in b/cmake/org.eclipse.cdt.cmake.ui.tests/projects/NestedProject/App2/app2.h.in
new file mode 100644
index 00000000000..48cbed16ac5
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.ui.tests/projects/NestedProject/App2/app2.h.in
@@ -0,0 +1,2 @@
+#define App2_VERSION_MAJOR @App2_VERSION_MAJOR@
+#define App2_VERSION_MINOR @App2_VERSION_MINOR@
diff --git a/cmake/org.eclipse.cdt.cmake.ui.tests/projects/NestedProject/CMakeLists.txt b/cmake/org.eclipse.cdt.cmake.ui.tests/projects/NestedProject/CMakeLists.txt
new file mode 100644
index 00000000000..2f985a02c20
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.ui.tests/projects/NestedProject/CMakeLists.txt
@@ -0,0 +1,18 @@
+cmake_minimum_required(VERSION 3.10)
+
+# Set the project name
+project(NestedProject)
+
+include(ExternalProject)
+ExternalProject_Add(
+ App1
+ SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/App1"
+ PREFIX App1
+ INSTALL_COMMAND ""
+)
+ExternalProject_Add(
+ App2
+ SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/App2"
+ PREFIX App2
+ INSTALL_COMMAND ""
+)
diff --git a/cmake/org.eclipse.cdt.cmake.ui.tests/projects/SimpleProject/CMakeLists.txt b/cmake/org.eclipse.cdt.cmake.ui.tests/projects/SimpleProject/CMakeLists.txt
new file mode 100644
index 00000000000..33079324d57
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.ui.tests/projects/SimpleProject/CMakeLists.txt
@@ -0,0 +1,15 @@
+cmake_minimum_required(VERSION 3.10)
+
+# Set the project name and version
+project(SimpleProject VERSION 1.0)
+
+set(CMAKE_EXPORT_COMPILE_COMMANDS "true")
+
+# Configuration header
+configure_file(simple.h.in simple.h)
+
+# Add project executable
+add_executable(${PROJECT_NAME} simple.c)
+
+# Include the configuration header
+target_include_directories(${PROJECT_NAME} PUBLIC "${PROJECT_BINARY_DIR}")
diff --git a/cmake/org.eclipse.cdt.cmake.ui.tests/projects/SimpleProject/simple.c b/cmake/org.eclipse.cdt.cmake.ui.tests/projects/SimpleProject/simple.c
new file mode 100644
index 00000000000..88de1dcd6f4
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.ui.tests/projects/SimpleProject/simple.c
@@ -0,0 +1,8 @@
+#include <stdio.h>
+#include "simple.h"
+
+int main() {
+ printf("Hello, World!\n");
+ printf("v%d.%d\n", SimpleProject_VERSION_MAJOR, SimpleProject_VERSION_MINOR);
+ return 0;
+}
diff --git a/cmake/org.eclipse.cdt.cmake.ui.tests/projects/SimpleProject/simple.h.in b/cmake/org.eclipse.cdt.cmake.ui.tests/projects/SimpleProject/simple.h.in
new file mode 100644
index 00000000000..6b3ff6931d3
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.ui.tests/projects/SimpleProject/simple.h.in
@@ -0,0 +1,2 @@
+#define SimpleProject_VERSION_MAJOR @SimpleProject_VERSION_MAJOR@
+#define SimpleProject_VERSION_MINOR @SimpleProject_VERSION_MINOR@
diff --git a/cmake/org.eclipse.cdt.cmake.ui.tests/src/org/eclipse/cdt/cmake/ui/internal/tests/NewCMakeProjectTest.java b/cmake/org.eclipse.cdt.cmake.ui.tests/src/org/eclipse/cdt/cmake/ui/internal/tests/NewCMakeProjectTest.java
new file mode 100644
index 00000000000..d53ceb8f112
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.ui.tests/src/org/eclipse/cdt/cmake/ui/internal/tests/NewCMakeProjectTest.java
@@ -0,0 +1,244 @@
+/*******************************************************************************
+ * Copyright (c) 2017, 2021 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.cmake.ui.internal.tests;
+
+import static org.eclipse.swtbot.eclipse.finder.matchers.WidgetMatcherFactory.withPartName;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
+
+import java.io.IOException;
+import java.net.URL;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.concurrent.TimeUnit;
+
+import org.eclipse.cdt.cmake.core.CMakeNature;
+import org.eclipse.cdt.core.CCorePlugin;
+import org.eclipse.cdt.core.index.IIndexManager;
+import org.eclipse.cdt.core.model.CoreModel;
+import org.eclipse.cdt.core.model.ICProject;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.ICoreRunnable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.swtbot.eclipse.finder.SWTWorkbenchBot;
+import org.eclipse.swtbot.eclipse.finder.waits.Conditions;
+import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotPerspective;
+import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotView;
+import org.eclipse.swtbot.swt.finder.utils.SWTBotPreferences;
+import org.eclipse.swtbot.swt.finder.waits.DefaultCondition;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotShell;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotTable;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotTableItem;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotTree;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.Timeout;
+import org.junit.jupiter.api.io.TempDir;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.FrameworkUtil;
+
+public class NewCMakeProjectTest {
+
+ private static SWTWorkbenchBot bot;
+
+ @TempDir
+ public static Path TEMP_DIR;
+
+ @BeforeAll
+ public static void beforeClass() {
+ SWTBotPreferences.KEYBOARD_LAYOUT = "EN_US";
+ SWTBotPreferences.TIMEOUT = 10000;
+ bot = new SWTWorkbenchBot();
+ }
+
+ @BeforeEach
+ public void before() {
+ bot.resetWorkbench();
+
+ for (SWTBotView view : bot.views(withPartName("Welcome"))) {
+ view.close();
+ }
+ SWTBotPerspective perspective = bot.perspectiveById("org.eclipse.cdt.ui.CPerspective");
+ perspective.activate();
+ bot.shell().activate();
+ }
+
+ @AfterEach
+ public void after() {
+ // Delete created projects after we are done with them
+ IWorkspace workspace = ResourcesPlugin.getWorkspace();
+ IProject[] projects = workspace.getRoot().getProjects();
+ ICoreRunnable runnable = new ICoreRunnable() {
+ @Override
+ public void run(IProgressMonitor monitor) throws CoreException {
+ for (IProject project : projects) {
+ project.delete(true, true, null);
+ }
+ }
+ };
+ try {
+ workspace.run(runnable, workspace.getRoot(), IWorkspace.AVOID_UPDATE, new NullProgressMonitor());
+ } catch (CoreException e) {
+ fail(e);
+ }
+ }
+
+ @Test
+ @Timeout(value = 2, unit = TimeUnit.MINUTES)
+ void createCMakeProject() throws Exception {
+
+ // Activate C/C++ wizard
+ bot.menu("File").menu("New").menu("C/C++ Project").click();
+ bot.shell("New C/C++ Project").activate();
+
+ // Double click on the template
+ SWTBotTable templateTable = bot.table();
+ bot.getDisplay().syncExec(() -> {
+ for (int i = 0; i < templateTable.rowCount(); ++i) {
+ SWTBotTableItem item = templateTable.getTableItem(i);
+ if ("CMake Project".equals(item.widget.getData(SWTBotPreferences.DEFAULT_KEY))) {
+ item.doubleClick();
+ break;
+ }
+ }
+ });
+
+ // Select the shell again since magic wizardry happened
+ SWTBotShell newProjectShell = bot.shell("New CMake Project").activate();
+ bot.waitUntil(Conditions.shellIsActive("New CMake Project"));
+ newProjectShell.setFocus();
+
+ // Create the project
+ String projectName = "CMakeTestProj";
+ bot.textWithLabel("Project name:").setText(projectName);
+ bot.button("Finish").click();
+ bot.waitUntil(Conditions.shellCloses(newProjectShell));
+
+ verifyProjectInExplorer(projectName);
+ }
+
+ @Test
+ @Timeout(value = 2, unit = TimeUnit.MINUTES)
+ void importSimpleCMakeProject() throws Exception {
+ importCMakeProject("SimpleProject", "SimpleProject");
+ }
+
+ @Test
+ @Timeout(value = 2, unit = TimeUnit.MINUTES)
+ void importNestedCMakeProject() throws Exception {
+ importCMakeProject("NestedProject", "NestedProject", "NestedProject/App1", "NestedProject/App2");
+ }
+
+ private void importCMakeProject(String projectDir, String... expectedProjects) throws Exception {
+ // Copy test project out of the bundle to a temp location first
+ Bundle bundle = FrameworkUtil.getBundle(getClass());
+ URL url = FileLocator
+ .toFileURL(FileLocator.find(bundle, new org.eclipse.core.runtime.Path("projects/" + projectDir), null));
+ copyDir(Paths.get(url.getPath()), TEMP_DIR.resolve(projectDir));
+
+ // Activate import wizard
+ bot.menu("File").menu("Import...").click();
+ bot.shell("Import").activate();
+
+ // Open the smart import wizard
+ SWTBotTree wizTree = bot.tree();
+ SWTBotTreeItem generalItem = wizTree.getTreeItem("General").expand();
+ generalItem.getNode("Projects from Folder or Archive").doubleClick();
+
+ // Select path that contains projects to import and check the project type detection works
+ bot.comboBox().setText(TEMP_DIR.resolve(projectDir).toString());
+ SWTBotTree projectProposalTree = bot.tree();
+ assertEquals(expectedProjects.length, projectProposalTree.getAllItems().length);
+ for (SWTBotTreeItem item : projectProposalTree.getAllItems()) {
+ assertEquals("CMake Project", item.cell(1), "Project type was not detected");
+ }
+
+ // Import and verify the project(s)
+ SWTBotShell wizShell = bot.activeShell();
+ bot.button("Finish").click();
+ bot.waitUntil(Conditions.shellCloses(wizShell));
+ for (String expectedProject : expectedProjects) {
+ verifyProjectInExplorer(expectedProject);
+ }
+ }
+
+ private void verifyProjectInExplorer(String projectName) throws Exception {
+ // Make sure it shows up in Project Explorer
+ SWTBotView explorer = bot.viewByPartName("Project Explorer");
+ explorer.show();
+ explorer.setFocus();
+
+ // If the project name is a path with >1 segment it was nested, so we need expand the
+ // parent project node to make the child project nodes visible
+ Path path = Paths.get(projectName);
+ SWTBotTreeItem projectNode;
+ if (path.getNameCount() > 1) {
+ SWTBotTreeItem node = explorer.bot().tree().expandNode(path.getName(0).toString());
+ projectNode = node.getNode(path.getFileName().toString());
+ } else {
+ projectNode = explorer.bot().tree().getTreeItem(path.getFileName().toString());
+ }
+
+ // Tests can be unstable if we are too quick, so make sure the project indexer completes
+ // and project natures have been assigned before continuing with post-creation verification.
+ IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectNode.getText());
+ bot.waitUntil(new DefaultCondition() {
+
+ @Override
+ public boolean test() throws Exception {
+ int natures = project.getDescription().getNatureIds().length;
+ ICProject cproject = CoreModel.getDefault().create(project);
+ IIndexManager indexManager = CCorePlugin.getIndexManager();
+ return natures > 0 && indexManager.isProjectContentSynced(cproject);
+ }
+
+ @Override
+ public String getFailureMessage() {
+ return "Indexer never finished or natures never assigned for project " + project.getName();
+ }
+ });
+
+ // Make sure it has the right nature
+ assertTrue(project.hasNature(CMakeNature.ID), "Project does not have expected nature");
+
+ // Ensure CMakeLists exists
+ assertTrue(project.getFile("CMakeLists.txt").exists(), "Project does not have a build file");
+ }
+
+ /**
+ * Utility to perform a depth-first copy of a directory tree.
+ */
+ private static void copyDir(Path src, Path dest) throws IOException {
+ Files.walk(src).forEach(a -> {
+ if (!a.equals(src)) {
+ Path b = dest.resolve(a.subpath(src.getNameCount(), a.getNameCount()));
+ try {
+ if (!Files.isDirectory(a)) {
+ Files.createDirectories(b.getParent());
+ Files.copy(a, b);
+ }
+ } catch (IOException e) {
+ fail(e);
+ }
+ }
+ });
+ }
+}
diff --git a/build/org.eclipse.cdt.cmake.ui.tests/swtbot-test-plugin.properties b/cmake/org.eclipse.cdt.cmake.ui.tests/swtbot-test-plugin.properties
index 338038b9345..338038b9345 100644
--- a/build/org.eclipse.cdt.cmake.ui.tests/swtbot-test-plugin.properties
+++ b/cmake/org.eclipse.cdt.cmake.ui.tests/swtbot-test-plugin.properties
diff --git a/cmake/org.eclipse.cdt.cmake.ui/.classpath b/cmake/org.eclipse.cdt.cmake.ui/.classpath
new file mode 100644
index 00000000000..e801ebfb468
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.ui/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/cmake/org.eclipse.cdt.cmake.ui/.project b/cmake/org.eclipse.cdt.cmake.ui/.project
new file mode 100644
index 00000000000..0c8bc14b239
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.ui/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.cdt.cmake.ui</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+ </natures>
+</projectDescription>
diff --git a/cmake/org.eclipse.cdt.cmake.ui/.settings/org.eclipse.core.resources.prefs b/cmake/org.eclipse.cdt.cmake.ui/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.ui/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/cmake/org.eclipse.cdt.cmake.ui/.settings/org.eclipse.jdt.core.prefs b/cmake/org.eclipse.cdt.cmake.ui/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..e3a8104f9ca
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.ui/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/build/org.eclipse.cdt.meson.docs/.settings/org.eclipse.jdt.launching.prefs b/cmake/org.eclipse.cdt.cmake.ui/.settings/org.eclipse.jdt.launching.prefs
index f8a131b56e0..f8a131b56e0 100644
--- a/build/org.eclipse.cdt.meson.docs/.settings/org.eclipse.jdt.launching.prefs
+++ b/cmake/org.eclipse.cdt.cmake.ui/.settings/org.eclipse.jdt.launching.prefs
diff --git a/cmake/org.eclipse.cdt.cmake.ui/.settings/org.eclipse.jdt.ui.prefs b/cmake/org.eclipse.cdt.cmake.ui/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.ui/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/.settings/org.eclipse.pde.api.tools.prefs b/cmake/org.eclipse.cdt.cmake.ui/.settings/org.eclipse.pde.api.tools.prefs
index ec9fbf321d0..ec9fbf321d0 100644
--- a/lrparser/org.eclipse.cdt.core.lrparser.tests/.settings/org.eclipse.pde.api.tools.prefs
+++ b/cmake/org.eclipse.cdt.cmake.ui/.settings/org.eclipse.pde.api.tools.prefs
diff --git a/debug/org.eclipse.cdt.debug.application.product/.settings/org.eclipse.pde.prefs b/cmake/org.eclipse.cdt.cmake.ui/.settings/org.eclipse.pde.prefs
index d2dc703ba9e..d2dc703ba9e 100644
--- a/debug/org.eclipse.cdt.debug.application.product/.settings/org.eclipse.pde.prefs
+++ b/cmake/org.eclipse.cdt.cmake.ui/.settings/org.eclipse.pde.prefs
diff --git a/cmake/org.eclipse.cdt.cmake.ui/META-INF/MANIFEST.MF b/cmake/org.eclipse.cdt.cmake.ui/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..0f8480b9521
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,26 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.cdt.cmake.ui;singleton:=true
+Bundle-Version: 1.3.500.qualifier
+Bundle-Activator: org.eclipse.cdt.cmake.ui.internal.Activator
+Bundle-Vendor: %providerName
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.core.resources;bundle-version="3.11.0",
+ org.eclipse.ui,
+ org.eclipse.ui.ide,
+ org.eclipse.cdt.cmake.core,
+ org.eclipse.tools.templates.ui;bundle-version="1.3.0",
+ org.eclipse.tools.templates.freemarker;bundle-version="1.2.200",
+ org.eclipse.cdt.core;bundle-version="6.1.0",
+ org.eclipse.debug.ui;bundle-version="3.11.200",
+ org.eclipse.cdt.launch;bundle-version="9.1.0",
+ org.eclipse.cdt.debug.core;bundle-version="8.1.0",
+ org.eclipse.cdt.ui;bundle-version="6.2.0",
+ org.eclipse.launchbar.core
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Bundle-ActivationPolicy: lazy
+Bundle-Localization: plugin
+Automatic-Module-Name: org.eclipse.cdt.cmake.ui
+Export-Package: org.eclipse.cdt.cmake.internal.ui.properties;x-internal:=true,
+ org.eclipse.cdt.cmake.ui.internal;x-internal:=true
diff --git a/cmake/org.eclipse.cdt.cmake.ui/about.html b/cmake/org.eclipse.cdt.cmake.ui/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.ui/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/about.ini b/cmake/org.eclipse.cdt.cmake.ui/about.ini
index e07a7bb377e..e07a7bb377e 100644
--- a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/about.ini
+++ b/cmake/org.eclipse.cdt.cmake.ui/about.ini
diff --git a/cmake/org.eclipse.cdt.cmake.ui/about.mappings b/cmake/org.eclipse.cdt.cmake.ui/about.mappings
new file mode 100644
index 00000000000..936a8039c3e
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.ui/about.mappings
@@ -0,0 +1,9 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+# The following should contain the build version.
+# e.g. "0=20200106-1728"
+# This value will be added automatically via the build scripts
+0=${buildId}
diff --git a/cmake/org.eclipse.cdt.cmake.ui/about.properties b/cmake/org.eclipse.cdt.cmake.ui/about.properties
new file mode 100644
index 00000000000..38de0e8a6a7
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.ui/about.properties
@@ -0,0 +1,32 @@
+###############################################################################
+# Copyright (c) 2015, 2022 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+# about.properties
+# contains externalized strings for about.ini
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# fill-ins are supplied by about.mappings
+# This file should be translated.
+# NOTE TO TRANSLATOR: Please do not translate the featureVersion variable.
+
+
+blurb=C/C++ CMake Build Support - Preview\n\
+\n\
+Version: {featureVersion}\n\
+Build id: {0}\n\
+\n\
+Copyright (c) 2015, 2022 Contributors to the Eclipse Foundation
+\n\
+See the NOTICE file(s) distributed with this work for additional\n\
+information regarding copyright ownership.\n\
+\n\
+Visit http://www.eclipse.org/cdt
diff --git a/cmake/org.eclipse.cdt.cmake.ui/build.properties b/cmake/org.eclipse.cdt.cmake.ui/build.properties
new file mode 100644
index 00000000000..e25cc9115d2
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.ui/build.properties
@@ -0,0 +1,13 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ about.html,\
+ plugin.xml,\
+ plugin.properties,\
+ icons/,\
+ about.ini,\
+ about.mappings,\
+ about.properties,\
+ cdt_logo_icon32.png
+src.includes = about.html
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/cdt_logo_icon32.png b/cmake/org.eclipse.cdt.cmake.ui/cdt_logo_icon32.png
index 470ca81b327..470ca81b327 100644
--- a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/cdt_logo_icon32.png
+++ b/cmake/org.eclipse.cdt.cmake.ui/cdt_logo_icon32.png
Binary files differ
diff --git a/build/org.eclipse.cdt.cmake.ui/icons/cmake_logo-main.png b/cmake/org.eclipse.cdt.cmake.ui/icons/cmake_logo-main.png
index f31af16c272..f31af16c272 100644
--- a/build/org.eclipse.cdt.cmake.ui/icons/cmake_logo-main.png
+++ b/cmake/org.eclipse.cdt.cmake.ui/icons/cmake_logo-main.png
Binary files differ
diff --git a/cmake/org.eclipse.cdt.cmake.ui/plugin.properties b/cmake/org.eclipse.cdt.cmake.ui/plugin.properties
new file mode 100644
index 00000000000..3e6af6a3941
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.ui/plugin.properties
@@ -0,0 +1,15 @@
+###############################################################################
+# Copyright (c) 2016 QNX Software Systems and others
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+
+pluginName = CDT CMake UI
+providerName = Eclipse CDT
+
+cmake.preferences.name = CMake
diff --git a/cmake/org.eclipse.cdt.cmake.ui/plugin.xml b/cmake/org.eclipse.cdt.cmake.ui/plugin.xml
new file mode 100644
index 00000000000..24251a4843b
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.ui/plugin.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension
+ point="org.eclipse.ui.propertyPages">
+ <page
+ class="org.eclipse.cdt.cmake.internal.ui.properties.CMakePropertyPage"
+ id="org.eclipse.cdt.cmake.ui.properties.cmakePropertyPage"
+ name="CMake">
+ <enabledWhen>
+ <and>
+ <instanceof
+ value="org.eclipse.core.resources.IProject">
+ </instanceof>
+ <test
+ property="org.eclipse.core.resources.projectNature"
+ value="org.eclipse.cdt.cmake.core.cmakeNature">
+ </test>
+ </and>
+ </enabledWhen>
+ </page>
+ </extension>
+ <extension
+ point="org.eclipse.ui.preferencePages">
+ <page
+ category="org.eclipse.cdt.ui.preferences.CPluginPreferencePage"
+ class="org.eclipse.cdt.cmake.ui.internal.CMakePreferencePage"
+ id="org.eclipse.cdt.cmake.ui.page1"
+ name="%cmake.preferences.name">
+ </page>
+ </extension>
+ <extension
+ point="org.eclipse.tools.templates.ui.templates">
+ <tag
+ id="org.eclipse.cdt.cmake.ui.tag"
+ label="CMake">
+ </tag>
+ <template
+ icon="icons/cmake_logo-main.png"
+ id="org.eclipse.cdt.cmake.ui.newProjectTemplate"
+ label="CMake Project"
+ wizard="org.eclipse.cdt.cmake.ui.internal.NewCMakeProjectWizard">
+ <description>
+ A CMake project with a Hello World executable to get started.
+ </description>
+ <tagReference
+ id="org.eclipse.cdt.ui.cdtTag">
+ </tagReference>
+ <tagReference
+ id="org.eclipse.cdt.cmake.ui.tag">
+ </tagReference>
+ </template>
+ <template
+ icon="icons/cmake_logo-main.png"
+ id="org.eclipse.cdt.cmake.ui.emptyProjectTemplate"
+ label="Empty or Existing CMake Project"
+ wizard="org.eclipse.cdt.cmake.ui.internal.EmptyCMakeProjectWizard">
+ <description>
+ Create a CMake project with no files. Can be used to create one over existing content.
+ </description>
+ <tagReference
+ id="org.eclipse.cdt.ui.cdtTag">
+ </tagReference>
+ <tagReference
+ id="org.eclipse.cdt.cmake.ui.tag">
+ </tagReference>
+ </template>
+ </extension>
+ <extension
+ point="org.eclipse.cdt.launch.coreBuildTab">
+ <provider
+ nature="org.eclipse.cdt.cmake.core.cmakeNature"
+ priority="10"
+ tabClass="org.eclipse.cdt.cmake.ui.internal.CMakeBuildTab">
+ </provider>
+ </extension>
+ <extension
+ point="org.eclipse.ui.ide.projectConfigurators">
+ <projectConfigurator
+ class="org.eclipse.cdt.cmake.ui.internal.CMakeProjectConfigurator"
+ label="CMake Project">
+ </projectConfigurator>
+ </extension>
+
+</plugin>
diff --git a/build/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/properties/CMakePropertyPage.java b/cmake/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/internal/ui/properties/CMakePropertyPage.java
index 078cb09be8c..290aa8af8c8 100644
--- a/build/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/properties/CMakePropertyPage.java
+++ b/cmake/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/internal/ui/properties/CMakePropertyPage.java
@@ -11,7 +11,7 @@
* Contributors:
* IAR Systems - initial API and implementation
*******************************************************************************/
-package org.eclipse.cdt.cmake.ui.properties;
+package org.eclipse.cdt.cmake.internal.ui.properties;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
@@ -95,7 +95,7 @@ public class CMakePropertyPage extends PropertyPage {
if (launcher instanceof ICBuildCommandLauncher) {
((ICBuildCommandLauncher) launcher).setBuildConfiguration(cconfig);
}
- IPath buildPath = project.getLocation().append("build")
+ IPath buildPath = project.getLocation().append("build") //$NON-NLS-1$
.append(((CBuildConfiguration) cconfig).getName());
Process p = launcher.execute(new Path("cmake"), new String[] { "-LAH", "." }, //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
new String[0], buildPath, new NullProgressMonitor());
@@ -153,7 +153,7 @@ public class CMakePropertyPage extends PropertyPage {
args.add("-LAH"); //$NON-NLS-1$
for (ICMakePropertyPageControl control : componentList) {
if (control.isValueChanged()) {
- args.add(control.getConfiguredString()); //$NON-NLS-1$ //$NON-NLS-2$
+ args.add(control.getConfiguredString());
}
}
if (args.size() == 2) {
@@ -170,7 +170,7 @@ public class CMakePropertyPage extends PropertyPage {
if (launcher instanceof ICBuildCommandLauncher) {
((ICBuildCommandLauncher) launcher).setBuildConfiguration(buildConfig);
}
- args.add(".");
+ args.add("."); //$NON-NLS-1$
Process p = launcher.execute(new Path("cmake"), args.toArray(new String[0]), new String[0], buildDir, //$NON-NLS-1$
new NullProgressMonitor());
int rc = -1;
@@ -259,19 +259,19 @@ public class CMakePropertyPage extends PropertyPage {
String optionString = optionMatcher.group(1).trim();
String[] options = optionString.split("\\s+"); //$NON-NLS-1$
for (int i = 0; i < options.length; ++i) {
- options[i] = options[i].replaceAll("\\(.*?\\)", "").trim(); //$NON-NLS-1$
+ options[i] = options[i].replaceAll("\\(.*?\\)", "").trim(); //$NON-NLS-1$ //$NON-NLS-2$
}
ICMakePropertyPageControl control = new CMakePropertyCombo(composite, name, options,
initialValue, lastComment);
controls.add(control);
} else {
- if ("BOOL".equals(type)) {
- if ("ON".equals(initialValue) || ("OFF".equals(initialValue))) {
+ if ("BOOL".equals(type)) { //$NON-NLS-1$
+ if ("ON".equals(initialValue) || ("OFF".equals(initialValue))) { //$NON-NLS-1$ //$NON-NLS-2$
ICMakePropertyPageControl control = new CMakePropertyCombo(composite, name,
new String[] { "ON", "OFF" }, //$NON-NLS-1$ //$NON-NLS-2$
initialValue, lastComment);
controls.add(control);
- } else if ("YES".equals(initialValue) || "NO".equals(initialValue)) {
+ } else if ("YES".equals(initialValue) || "NO".equals(initialValue)) { //$NON-NLS-1$ //$NON-NLS-2$
ICMakePropertyPageControl control = new CMakePropertyCombo(composite, name,
new String[] { "YES", "NO" }, //$NON-NLS-1$ //$NON-NLS-2$
initialValue, lastComment);
diff --git a/build/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/Activator.java b/cmake/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/Activator.java
index 76e693bc804..76e693bc804 100644
--- a/build/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/Activator.java
+++ b/cmake/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/Activator.java
diff --git a/build/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/CMakeBuildTab.java b/cmake/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/CMakeBuildTab.java
index 24636bb0a36..24636bb0a36 100644
--- a/build/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/CMakeBuildTab.java
+++ b/cmake/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/CMakeBuildTab.java
diff --git a/build/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/CMakePreferencePage.java b/cmake/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/CMakePreferencePage.java
index 4c85aab6ae4..162955e6889 100644
--- a/build/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/CMakePreferencePage.java
+++ b/cmake/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/CMakePreferencePage.java
@@ -43,6 +43,9 @@ import org.eclipse.swt.widgets.TableItem;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
+/**
+ * GUI page to configure workbench preferences for cmake.
+ */
public class CMakePreferencePage extends PreferencePage implements IWorkbenchPreferencePage {
private ICMakeToolChainManager manager;
diff --git a/cmake/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/CMakeProjectConfigurator.java b/cmake/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/CMakeProjectConfigurator.java
new file mode 100644
index 00000000000..ed704582c5b
--- /dev/null
+++ b/cmake/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/CMakeProjectConfigurator.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * Copyright (c) 2021 Mat Booth and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.cmake.ui.internal;
+
+import java.util.List;
+
+import org.eclipse.cdt.cmake.core.CMakeProjectGenerator;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.tools.templates.core.IGenerator;
+import org.eclipse.tools.templates.ui.ProjectImportConfigurator;
+
+/**
+ * Smart-import strategy for importing pre-existing CMake projects.
+ */
+public class CMakeProjectConfigurator extends ProjectImportConfigurator {
+
+ @Override
+ protected List<String> getProjectFileNames() {
+ return List.of("CMakeLists.txt"); //$NON-NLS-1$
+ }
+
+ @Override
+ protected IGenerator getGenerator(IProject project) {
+ // Don't pass any template to the generator, we are importing an existing project
+ CMakeProjectGenerator generator = new CMakeProjectGenerator(null);
+ generator.setProjectName(project.getName());
+ generator.setLocationURI(project.getLocationURI());
+ return generator;
+ }
+}
diff --git a/build/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/CMakePropertyCombo.java b/cmake/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/CMakePropertyCombo.java
index 7aed63e268b..7aed63e268b 100644
--- a/build/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/CMakePropertyCombo.java
+++ b/cmake/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/CMakePropertyCombo.java
diff --git a/build/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/CMakePropertyText.java b/cmake/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/CMakePropertyText.java
index aeca9fa44f0..aeca9fa44f0 100644
--- a/build/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/CMakePropertyText.java
+++ b/cmake/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/CMakePropertyText.java
diff --git a/build/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/EmptyCMakeProjectWizard.java b/cmake/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/EmptyCMakeProjectWizard.java
index ea5a27669b0..ea5a27669b0 100644
--- a/build/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/EmptyCMakeProjectWizard.java
+++ b/cmake/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/EmptyCMakeProjectWizard.java
diff --git a/build/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/ICMakePropertyPageControl.java b/cmake/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/ICMakePropertyPageControl.java
index 97e95099c21..97e95099c21 100644
--- a/build/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/ICMakePropertyPageControl.java
+++ b/cmake/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/ICMakePropertyPageControl.java
diff --git a/build/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/Messages.java b/cmake/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/Messages.java
index 5593767532a..5593767532a 100644
--- a/build/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/Messages.java
+++ b/cmake/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/Messages.java
diff --git a/build/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/NewCMakeProjectWizard.java b/cmake/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/NewCMakeProjectWizard.java
index 1ca61d35d2d..1ca61d35d2d 100644
--- a/build/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/NewCMakeProjectWizard.java
+++ b/cmake/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/NewCMakeProjectWizard.java
diff --git a/build/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/NewCMakeToolChainFilePage.java b/cmake/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/NewCMakeToolChainFilePage.java
index 9fddd8e91e7..9fddd8e91e7 100644
--- a/build/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/NewCMakeToolChainFilePage.java
+++ b/cmake/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/NewCMakeToolChainFilePage.java
diff --git a/build/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/NewCMakeToolChainFileWizard.java b/cmake/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/NewCMakeToolChainFileWizard.java
index 19e4e2b7a74..19e4e2b7a74 100644
--- a/build/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/NewCMakeToolChainFileWizard.java
+++ b/cmake/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/NewCMakeToolChainFileWizard.java
diff --git a/build/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/messages.properties b/cmake/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/messages.properties
index c1588d15a4f..c1588d15a4f 100644
--- a/build/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/messages.properties
+++ b/cmake/org.eclipse.cdt.cmake.ui/src/org/eclipse/cdt/cmake/ui/internal/messages.properties
diff --git a/cmake/pom.xml b/cmake/pom.xml
new file mode 100644
index 00000000000..a0df51f2e7b
--- /dev/null
+++ b/cmake/pom.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2020, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
+<project
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+ xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.cdt</groupId>
+ <artifactId>cdt-parent</artifactId>
+ <version>10.7.0-SNAPSHOT</version>
+ </parent>
+
+ <groupId>org.eclipse.cdt</groupId>
+ <artifactId>cmake-parent</artifactId>
+ <version>10.7.0-SNAPSHOT</version>
+ <packaging>pom</packaging>
+
+ <modules>
+ <module>org.eclipse.cdt.cmake.core</module>
+ <module>org.eclipse.cdt.cmake.core.tests</module>
+ <module>org.eclipse.cdt.cmake.ui</module>
+ <module>org.eclipse.cdt.cmake.ui.tests</module>
+ <module>org.eclipse.cdt.cmake-feature</module>
+ </modules>
+</project>
diff --git a/codan/org.eclipse.cdt.codan.checkers.ui.tests/.classpath b/codan/org.eclipse.cdt.codan.checkers.ui.tests/.classpath
index eca7bdba8f0..a42a828e04a 100644
--- a/codan/org.eclipse.cdt.codan.checkers.ui.tests/.classpath
+++ b/codan/org.eclipse.cdt.codan.checkers.ui.tests/.classpath
@@ -1,7 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="src" path="src"/>
+ <classpathentry kind="src" path="src">
+ <attributes>
+ <attribute name="test" value="true"/>
+ </attributes>
+ </classpathentry>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/codan/org.eclipse.cdt.codan.checkers.ui.tests/.settings/org.eclipse.core.resources.prefs b/codan/org.eclipse.cdt.codan.checkers.ui.tests/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/codan/org.eclipse.cdt.codan.checkers.ui.tests/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/codan/org.eclipse.cdt.codan.checkers.ui.tests/.settings/org.eclipse.jdt.core.prefs b/codan/org.eclipse.cdt.codan.checkers.ui.tests/.settings/org.eclipse.jdt.core.prefs
index ad05599159f..5b1c443114d 100644
--- a/codan/org.eclipse.cdt.codan.checkers.ui.tests/.settings/org.eclipse.jdt.core.prefs
+++ b/codan/org.eclipse.cdt.codan.checkers.ui.tests/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/codan/org.eclipse.cdt.codan.checkers.ui.tests/.settings/org.eclipse.jdt.ui.prefs b/codan/org.eclipse.cdt.codan.checkers.ui.tests/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/codan/org.eclipse.cdt.codan.checkers.ui.tests/.settings/org.eclipse.jdt.ui.prefs
+++ b/codan/org.eclipse.cdt.codan.checkers.ui.tests/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/codan/org.eclipse.cdt.codan.checkers.ui.tests/META-INF/MANIFEST.MF b/codan/org.eclipse.cdt.codan.checkers.ui.tests/META-INF/MANIFEST.MF
index e3a90dc02fc..d2d862da31e 100644
--- a/codan/org.eclipse.cdt.codan.checkers.ui.tests/META-INF/MANIFEST.MF
+++ b/codan/org.eclipse.cdt.codan.checkers.ui.tests/META-INF/MANIFEST.MF
@@ -2,23 +2,16 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name
Bundle-SymbolicName: org.eclipse.cdt.codan.checkers.ui.tests
-Bundle-Version: 3.2.0.qualifier
-Bundle-Activator: org.eclipse.cdt.codan.checkers.ui.Activator
+Bundle-Version: 3.3.0.qualifier
Require-Bundle: org.eclipse.core.runtime,
- org.eclipse.cdt.codan.checkers.ui,
org.eclipse.core.resources,
- org.eclipse.cdt.codan.ui,
org.eclipse.cdt.codan.ui.cxx,
- org.eclipse.ui,
- org.eclipse.ui.ide,
org.junit,
org.mockito,
- org.hamcrest,
- org.eclipse.cdt.core,
- org.eclipse.jface.text,
- org.eclipse.ui.workbench.texteditor,
- org.eclipse.ui.editors
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+ org.eclipse.cdt.core
+Fragment-Host: org.eclipse.cdt.codan.checkers.ui
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-ActivationPolicy: lazy
Bundle-Vendor: %Bundle-Vendor
Automatic-Module-Name: org.eclipse.cdt.codan.checkers.ui.tests
+Export-Package: org.eclipse.cdt.codan.checkers.ui.quickfix;x-internal:=true
diff --git a/codan/org.eclipse.cdt.codan.checkers.ui.tests/about.html b/codan/org.eclipse.cdt.codan.checkers.ui.tests/about.html
index 164f781a8fd..b3134865230 100644
--- a/codan/org.eclipse.cdt.codan.checkers.ui.tests/about.html
+++ b/codan/org.eclipse.cdt.codan.checkers.ui.tests/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/codan/org.eclipse.cdt.codan.checkers.ui.tests/build.properties b/codan/org.eclipse.cdt.codan.checkers.ui.tests/build.properties
index 32ba2c04917..2e4c2456d4b 100644
--- a/codan/org.eclipse.cdt.codan.checkers.ui.tests/build.properties
+++ b/codan/org.eclipse.cdt.codan.checkers.ui.tests/build.properties
@@ -1,7 +1,22 @@
+###############################################################################
+# Copyright (c) 2016, 2020 COSEDA Technologies GmbH and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Dominic Scharfe (COSEDA Technologies GmbH) - initial API and implementation
+# Alexander Fedorov (alexander.fedorov@arsysop.ru) - Bug 561582
+###############################################################################
source.. = src/
output.. = bin/
bin.includes = META-INF/,\
.,\
+ OSGI-INF/,\
about.html,\
ui-test-plugin.properties
src.includes = about.html
diff --git a/codan/org.eclipse.cdt.codan.checkers.ui.tests/src/org/eclipse/cdt/codan/checkers/ui/Activator.java b/codan/org.eclipse.cdt.codan.checkers.ui.tests/src/org/eclipse/cdt/codan/checkers/ui/Activator.java
deleted file mode 100644
index ab07e237c5b..00000000000
--- a/codan/org.eclipse.cdt.codan.checkers.ui.tests/src/org/eclipse/cdt/codan/checkers/ui/Activator.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 COSEDA Technologies GmbH
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Dominic Scharfe (COSEDA Technologies GmbH) - initial implementation
- *
- *******************************************************************************/
-package org.eclipse.cdt.codan.checkers.ui;
-
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-
-public class Activator implements BundleActivator {
-
- private static BundleContext context;
-
- static BundleContext getContext() {
- return context;
- }
-
- @Override
- public void start(BundleContext bundleContext) throws Exception {
- Activator.context = bundleContext;
- }
-
- @Override
- public void stop(BundleContext bundleContext) throws Exception {
- Activator.context = null;
- }
-
-}
diff --git a/codan/org.eclipse.cdt.codan.checkers.ui.tests/src/org/eclipse/cdt/codan/checkers/ui/quickfix/QuickFixCreateNewClassTest.java b/codan/org.eclipse.cdt.codan.checkers.ui.tests/src/org/eclipse/cdt/codan/checkers/ui/quickfix/QuickFixCreateNewClassTest.java
index 8d8e276ede2..9e597070cd3 100644
--- a/codan/org.eclipse.cdt.codan.checkers.ui.tests/src/org/eclipse/cdt/codan/checkers/ui/quickfix/QuickFixCreateNewClassTest.java
+++ b/codan/org.eclipse.cdt.codan.checkers.ui.tests/src/org/eclipse/cdt/codan/checkers/ui/quickfix/QuickFixCreateNewClassTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2016 COSEDA Technologies GmbH
+ * Copyright (c) 2016, 2020 COSEDA Technologies GmbH and others
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -10,7 +10,7 @@
*
* Contributors:
* Dominic Scharfe (COSEDA Technologies GmbH) - initial implementation
- *
+ * Alexander Fedorov (alexander.fedorov@arsysop.ru) - Bug 561582
*******************************************************************************/
package org.eclipse.cdt.codan.checkers.ui.quickfix;
@@ -34,7 +34,7 @@ import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
-import org.mockito.runners.MockitoJUnitRunner;
+import org.mockito.junit.MockitoJUnitRunner;
@RunWith(MockitoJUnitRunner.class)
public class QuickFixCreateNewClassTest {
diff --git a/codan/org.eclipse.cdt.codan.checkers.ui/.classpath b/codan/org.eclipse.cdt.codan.checkers.ui/.classpath
index eca7bdba8f0..e801ebfb468 100644
--- a/codan/org.eclipse.cdt.codan.checkers.ui/.classpath
+++ b/codan/org.eclipse.cdt.codan.checkers.ui/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/codan/org.eclipse.cdt.codan.checkers.ui/.settings/org.eclipse.core.resources.prefs b/codan/org.eclipse.cdt.codan.checkers.ui/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/codan/org.eclipse.cdt.codan.checkers.ui/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/codan/org.eclipse.cdt.codan.checkers.ui/.settings/org.eclipse.jdt.core.prefs b/codan/org.eclipse.cdt.codan.checkers.ui/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/codan/org.eclipse.cdt.codan.checkers.ui/.settings/org.eclipse.jdt.core.prefs
+++ b/codan/org.eclipse.cdt.codan.checkers.ui/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/codan/org.eclipse.cdt.codan.checkers.ui/.settings/org.eclipse.jdt.ui.prefs b/codan/org.eclipse.cdt.codan.checkers.ui/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/codan/org.eclipse.cdt.codan.checkers.ui/.settings/org.eclipse.jdt.ui.prefs
+++ b/codan/org.eclipse.cdt.codan.checkers.ui/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/codan/org.eclipse.cdt.codan.checkers.ui/META-INF/MANIFEST.MF b/codan/org.eclipse.cdt.codan.checkers.ui/META-INF/MANIFEST.MF
index 9724352eaf2..d1f535491eb 100644
--- a/codan/org.eclipse.cdt.codan.checkers.ui/META-INF/MANIFEST.MF
+++ b/codan/org.eclipse.cdt.codan.checkers.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name
Bundle-SymbolicName: org.eclipse.cdt.codan.checkers.ui;singleton:=true
-Bundle-Version: 3.2.100.qualifier
+Bundle-Version: 3.3.100.qualifier
Bundle-Activator: org.eclipse.cdt.codan.internal.checkers.ui.CheckersUiActivator
Require-Bundle: org.eclipse.core.resources,
org.eclipse.core.runtime,
@@ -17,7 +17,7 @@ Require-Bundle: org.eclipse.core.resources,
org.eclipse.ui,
org.eclipse.ui.ide
Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-Vendor: %Bundle-Vendor
Export-Package: org.eclipse.cdt.codan.internal.checkers.ui;x-internal:=true,
org.eclipse.cdt.codan.internal.checkers.ui.quickfix;x-friends:="org.eclipse.cdt.codan.checkers.ui.tests"
diff --git a/codan/org.eclipse.cdt.codan.checkers.ui/about.html b/codan/org.eclipse.cdt.codan.checkers.ui/about.html
index 164f781a8fd..b3134865230 100644
--- a/codan/org.eclipse.cdt.codan.checkers.ui/about.html
+++ b/codan/org.eclipse.cdt.codan.checkers.ui/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/codan/org.eclipse.cdt.codan.checkers/.classpath b/codan/org.eclipse.cdt.codan.checkers/.classpath
index eca7bdba8f0..e801ebfb468 100644
--- a/codan/org.eclipse.cdt.codan.checkers/.classpath
+++ b/codan/org.eclipse.cdt.codan.checkers/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/codan/org.eclipse.cdt.codan.checkers/.settings/org.eclipse.core.resources.prefs b/codan/org.eclipse.cdt.codan.checkers/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/codan/org.eclipse.cdt.codan.checkers/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/codan/org.eclipse.cdt.codan.checkers/.settings/org.eclipse.jdt.core.prefs b/codan/org.eclipse.cdt.codan.checkers/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/codan/org.eclipse.cdt.codan.checkers/.settings/org.eclipse.jdt.core.prefs
+++ b/codan/org.eclipse.cdt.codan.checkers/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/codan/org.eclipse.cdt.codan.checkers/.settings/org.eclipse.jdt.ui.prefs b/codan/org.eclipse.cdt.codan.checkers/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/codan/org.eclipse.cdt.codan.checkers/.settings/org.eclipse.jdt.ui.prefs
+++ b/codan/org.eclipse.cdt.codan.checkers/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/codan/org.eclipse.cdt.codan.checkers/META-INF/MANIFEST.MF b/codan/org.eclipse.cdt.codan.checkers/META-INF/MANIFEST.MF
index 33f0bb7b929..596621d5fda 100644
--- a/codan/org.eclipse.cdt.codan.checkers/META-INF/MANIFEST.MF
+++ b/codan/org.eclipse.cdt.codan.checkers/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name
Bundle-SymbolicName: org.eclipse.cdt.codan.checkers;singleton:=true
-Bundle-Version: 3.3.300.qualifier
+Bundle-Version: 3.4.200.qualifier
Bundle-Activator: org.eclipse.cdt.codan.checkers.CodanCheckersActivator
Require-Bundle: org.eclipse.core.runtime,
org.eclipse.core.resources,
@@ -10,10 +10,9 @@ Require-Bundle: org.eclipse.core.runtime,
org.eclipse.cdt.core,
org.eclipse.cdt.codan.core.cxx
Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-Vendor: %Bundle-Vendor
-Export-Package: org.eclipse.cdt.codan.checkers,
- org.eclipse.cdt.codan.internal.checkers;
- x-friends:="org.eclipse.cdt.codan.checkers.ui,
- org.eclipse.cdt.codan.core.test"
+Export-Package: org.eclipse.cdt.codan.checkers;x-internal:=true,
+ org.eclipse.cdt.codan.internal.checkers;x-friends:="org.eclipse.cdt.codan.checkers.ui,org.eclipse.cdt.codan.core.test",
+ org.eclipse.cdt.codan.internal.checkers.fs;x-internal:=true
Automatic-Module-Name: org.eclipse.cdt.codan.checkers
diff --git a/codan/org.eclipse.cdt.codan.checkers/OSGI-INF/l10n/bundle.properties b/codan/org.eclipse.cdt.codan.checkers/OSGI-INF/l10n/bundle.properties
index 92c33fd3abe..7654d0e4098 100644
--- a/codan/org.eclipse.cdt.codan.checkers/OSGI-INF/l10n/bundle.properties
+++ b/codan/org.eclipse.cdt.codan.checkers/OSGI-INF/l10n/bundle.properties
@@ -197,3 +197,23 @@ checker.name.FloatCompareChecker = Float compare checker
problem.name.FloatCompareProblem = Direct float comparison
problem.messagePattern.FloatCompareProblem = Float numbers should be compared using an epsilon
problem.description.FloatCompareProblem = This rule will flag direct float or double comparison
+
+checker.name.SymbolShadowing = Symbol shadowing checker
+problem.description.SymbolShadowing = This rule will flag symbols, like local variables, class fields or method parameters, shadowing another symbol in upper scope
+problem.messagePattern.SymbolShadowing = Symbol "{0}" is masking symbol declared in upper scope
+problem.name.SymbolShadowing = Symbol shadowing
+
+checker.name.ShallowCopyChecker = Copy ctor and assignment operator checker
+problem.name.ShallowCopyProblem = Miss copy constructor or assignment operator
+problem.messagePattern.ShallowCopyProblem = Shallow copy can have negative run-time effects, explicit copy constructors/assignment operators for classes with references/pointers should be used
+problem.description.ShallowCopyProblem = This rule will flag classes with pointer members without copy constructor or assignment operator
+
+checker.name.MagicNumberChecker = Magic numbers checker
+problem.name.MagicNumberProblem = Avoid magic numbers
+problem.messagePattern.MagicNumberProblem = Avoid constant literals
+problem.description.MagicNumberProblem = This rule will flag all constant literals numbers
+
+checker.name.NoDiscard = NoDiscardChecker
+problem.description.NoDiscard = This rule will flag the use of functions marked as 'no discard' without taking into account return value
+problem.messagePattern.NoDiscard = Return value from ''{0}'' not evaluated
+problem.name.NoDiscard = Return value not evaluated
diff --git a/codan/org.eclipse.cdt.codan.checkers/about.html b/codan/org.eclipse.cdt.codan.checkers/about.html
index 164f781a8fd..b3134865230 100644
--- a/codan/org.eclipse.cdt.codan.checkers/about.html
+++ b/codan/org.eclipse.cdt.codan.checkers/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/codan/org.eclipse.cdt.codan.checkers/plugin.xml b/codan/org.eclipse.cdt.codan.checkers/plugin.xml
index 9a1a0ab2c83..08c0b921af2 100644
--- a/codan/org.eclipse.cdt.codan.checkers/plugin.xml
+++ b/codan/org.eclipse.cdt.codan.checkers/plugin.xml
@@ -601,6 +601,21 @@
markerType="org.eclipse.cdt.codan.core.codanProblem"
messagePattern="%problem.messagePattern.BlacklistProblem"
name="%problem.name.BlacklistProblem">
+ </problem>
+ </checker>
+ <checker
+ class="org.eclipse.cdt.codan.internal.checkers.ShallowCopyChecker"
+ id="org.eclipse.cdt.codan.internal.checkers.ShallowCopyChecker"
+ name="%checker.name.ShallowCopyChecker">
+ <problem
+ category="org.eclipse.cdt.codan.core.categories.ProgrammingProblems"
+ defaultEnabled="false"
+ defaultSeverity="Warning"
+ description="%problem.description.ShallowCopyProblem"
+ id="org.eclipse.cdt.codan.internal.checkers.ShallowCopyProblem"
+ markerType="org.eclipse.cdt.codan.core.codanProblem"
+ messagePattern="%problem.messagePattern.ShallowCopyProblem"
+ name="%problem.name.ShallowCopyProblem">
</problem>
</checker>
<checker
@@ -628,5 +643,46 @@
name="%problem.name.MultipleDeclarationsProblem">
</problem>
</checker>
+ <checker
+ class="org.eclipse.cdt.codan.internal.checkers.SymbolShadowingChecker"
+ id="org.eclipse.cdt.codan.internal.checkers.SymbolShadowing"
+ name="%checker.name.SymbolShadowing">
+ <problem
+ category="org.eclipse.cdt.codan.core.categories.ProgrammingProblems"
+ defaultEnabled="false"
+ defaultSeverity="Warning"
+ description="%problem.description.SymbolShadowing"
+ id="org.eclipse.cdt.codan.internal.checkers.SymbolShadowingProblem"
+ messagePattern="%problem.messagePattern.SymbolShadowing"
+ name="%problem.name.SymbolShadowing">
+ </problem>
+ </checker>
+ <checker
+ class="org.eclipse.cdt.codan.internal.checkers.MagicNumberChecker"
+ id="org.eclipse.cdt.codan.internal.checkers.MagicNumberChecker"
+ name="%checker.name.MagicNumberChecker">
+ <problem
+ category="org.eclipse.cdt.codan.core.categories.CodeStyle"
+ defaultEnabled="false"
+ defaultSeverity="Warning"
+ description="%problem.description.MagicNumberProblem"
+ id="org.eclipse.cdt.codan.internal.checkers.MagicNumberProblem"
+ markerType="org.eclipse.cdt.codan.core.codanProblem"
+ messagePattern="%problem.messagePattern.MagicNumberProblem"
+ name="%problem.name.MagicNumberProblem">
+ </problem>
+ </checker>
+ <checker
+ class="org.eclipse.cdt.codan.internal.checkers.NoDiscardChecker"
+ id="org.eclipse.cdt.codan.internal.checkers.NoDiscardChecker"
+ name="%checker.name.NoDiscard">
+ <problem
+ category="org.eclipse.cdt.codan.core.categories.ProgrammingProblems"
+ defaultSeverity="Warning"
+ description="%problem.description.NoDiscard"
+ id="org.eclipse.cdt.codan.internal.checkers.NoDiscardProblem"
+ messagePattern="%problem.messagePattern.NoDiscard"
+ name="%problem.name.NoDiscard"/>
+ </checker>
</extension>
</plugin>
diff --git a/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/AssignmentOperatorChecker.java b/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/AssignmentOperatorChecker.java
index c3196b940fe..167b6dd0bfd 100644
--- a/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/AssignmentOperatorChecker.java
+++ b/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/AssignmentOperatorChecker.java
@@ -112,7 +112,7 @@ public class AssignmentOperatorChecker extends AbstractIndexAstChecker {
reportProblem(MISS_SELF_CHECK_ID, info.decl);
}
info.decl = null;
- } else {
+ } else if (expression.getPropertyInParent() != ICPPASTFunctionDeclarator.NOEXCEPT_EXPRESSION) {
reportProblem(MISS_SELF_CHECK_ID, info.decl);
info.decl = null;
}
diff --git a/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/CStyleCastChecker.java b/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/CStyleCastChecker.java
index 6a3130babb7..54ccfc8b593 100644
--- a/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/CStyleCastChecker.java
+++ b/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/CStyleCastChecker.java
@@ -11,17 +11,36 @@
package org.eclipse.cdt.codan.internal.checkers;
import org.eclipse.cdt.codan.core.cxx.model.AbstractIndexAstChecker;
+import org.eclipse.cdt.codan.core.model.IProblem;
+import org.eclipse.cdt.codan.core.model.IProblemWorkingCopy;
import org.eclipse.cdt.core.dom.ILinkage;
import org.eclipse.cdt.core.dom.ast.ASTVisitor;
import org.eclipse.cdt.core.dom.ast.IASTCastExpression;
import org.eclipse.cdt.core.dom.ast.IASTExpression;
+import org.eclipse.cdt.core.dom.ast.IASTMacroExpansionLocation;
+import org.eclipse.cdt.core.dom.ast.IASTNodeLocation;
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
public class CStyleCastChecker extends AbstractIndexAstChecker {
public static final String ERR_ID = "org.eclipse.cdt.codan.internal.checkers.CStyleCastProblem"; //$NON-NLS-1$
+ public static final String PARAM_MACRO = "checkMacro"; //$NON-NLS-1$
+ private boolean checkMacro = true;
+
+ @Override
+ public void initPreferences(IProblemWorkingCopy problem) {
+ super.initPreferences(problem);
+ addPreference(problem, PARAM_MACRO, CheckersMessages.CStyleCastCheck_checkInMacro, true);
+ }
+
+ private boolean enclosedInMacroExpansion(IASTExpression statement) {
+ IASTNodeLocation[] locations = statement.getNodeLocations();
+ return locations.length == 1 && locations[0] instanceof IASTMacroExpansionLocation;
+ }
@Override
public void processAst(IASTTranslationUnit ast) {
+ final IProblem pt = getProblemById(ERR_ID, getFile());
+ checkMacro = (boolean) getPreference(pt, PARAM_MACRO);
if (ast.getLinkage().getLinkageID() == ILinkage.CPP_LINKAGE_ID) {
ast.accept(new ASTVisitor() {
{
@@ -30,7 +49,8 @@ public class CStyleCastChecker extends AbstractIndexAstChecker {
@Override
public int visit(IASTExpression expression) {
- if (expression instanceof IASTCastExpression) {
+ if (expression instanceof IASTCastExpression
+ && (checkMacro || !enclosedInMacroExpansion(expression))) {
if (((IASTCastExpression) expression).getOperator() == IASTCastExpression.op_cast)
reportProblem(ERR_ID, expression);
}
diff --git a/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/CaseBreakChecker.java b/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/CaseBreakChecker.java
index a46d5a8733f..47b81571868 100644
--- a/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/CaseBreakChecker.java
+++ b/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/CaseBreakChecker.java
@@ -31,8 +31,10 @@ import org.eclipse.cdt.core.dom.ast.IASTComment;
import org.eclipse.cdt.core.dom.ast.IASTCompoundStatement;
import org.eclipse.cdt.core.dom.ast.IASTContinueStatement;
import org.eclipse.cdt.core.dom.ast.IASTDefaultStatement;
+import org.eclipse.cdt.core.dom.ast.IASTDoStatement;
import org.eclipse.cdt.core.dom.ast.IASTExpressionStatement;
import org.eclipse.cdt.core.dom.ast.IASTFileLocation;
+import org.eclipse.cdt.core.dom.ast.IASTForStatement;
import org.eclipse.cdt.core.dom.ast.IASTGotoStatement;
import org.eclipse.cdt.core.dom.ast.IASTIfStatement;
import org.eclipse.cdt.core.dom.ast.IASTMacroExpansionLocation;
@@ -43,6 +45,7 @@ import org.eclipse.cdt.core.dom.ast.IASTReturnStatement;
import org.eclipse.cdt.core.dom.ast.IASTStatement;
import org.eclipse.cdt.core.dom.ast.IASTSwitchStatement;
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
+import org.eclipse.cdt.core.dom.ast.IASTWhileStatement;
import org.eclipse.cdt.core.parser.StandardAttributes;
import org.eclipse.cdt.core.parser.util.AttributeUtil;
@@ -80,8 +83,12 @@ public class CaseBreakChecker extends AbstractIndexAstChecker {
* - "exit"
*/
protected boolean isBreakOrExitStatement(IASTStatement statement) {
- return (statement instanceof IASTBreakStatement) || statement instanceof IASTReturnStatement
- || statement instanceof IASTContinueStatement || statement instanceof IASTGotoStatement
+ return (statement instanceof IASTBreakStatement) || statement instanceof IASTContinueStatement
+ || isExitStatement(statement);
+ }
+
+ protected boolean isExitStatement(IASTStatement statement) {
+ return statement instanceof IASTReturnStatement || statement instanceof IASTGotoStatement
|| CxxAstUtils.isThrowStatement(statement) || CxxAstUtils.isExitStatement(statement);
}
@@ -127,7 +134,7 @@ public class CaseBreakChecker extends AbstractIndexAstChecker {
if (curr instanceof IASTNullStatement && (prev != prevCase)) {
curr = prev;
}
- if (!isProducedByMacroExpansion(prevCase) && isFallThroughStamement(curr)) {
+ if (!isProducedByMacroExpansion(prevCase) && isFallThroughStamement(curr, false)) {
IASTComment comment = null;
if (next != null) {
comment = getLeadingComment(next);
@@ -168,22 +175,37 @@ public class CaseBreakChecker extends AbstractIndexAstChecker {
* @param body
* @return
*/
- public boolean isFallThroughStamement(IASTStatement body) {
+ public boolean isFallThroughStamement(IASTStatement body, boolean checkOnlyExit) {
if (body == null)
return true;
if (body instanceof IASTCompoundStatement) {
IASTStatement[] statements = ((IASTCompoundStatement) body).getStatements();
if (statements.length > 0) {
- return isFallThroughStamement(statements[statements.length - 1]);
+ return isFallThroughStamement(statements[statements.length - 1], checkOnlyExit);
}
return true;
- } else if (isBreakOrExitStatement(body)) {
+ } else if (body instanceof IASTDoStatement) {
+ IASTDoStatement dos = (IASTDoStatement) body;
+ return isFallThroughStamement(dos.getBody(), true);
+ } else if (body instanceof IASTSwitchStatement) {
+ IASTSwitchStatement switchs = (IASTSwitchStatement) body;
+ return isFallThroughStamement(switchs.getBody(), true);
+ } else if (body instanceof IASTForStatement) {
+ IASTForStatement fors = (IASTForStatement) body;
+ return isFallThroughStamement(fors.getBody(), true);
+ } else if (body instanceof IASTWhileStatement) {
+ IASTWhileStatement whiles = (IASTWhileStatement) body;
+ return isFallThroughStamement(whiles.getBody(), true);
+ } else if (checkOnlyExit && isExitStatement(body)) {
+ return false;
+ } else if (!checkOnlyExit && isBreakOrExitStatement(body)) {
return false;
} else if (body instanceof IASTExpressionStatement) {
return true;
} else if (body instanceof IASTIfStatement) {
IASTIfStatement ifs = (IASTIfStatement) body;
- return isFallThroughStamement(ifs.getThenClause()) || isFallThroughStamement(ifs.getElseClause());
+ return isFallThroughStamement(ifs.getThenClause(), checkOnlyExit)
+ || isFallThroughStamement(ifs.getElseClause(), checkOnlyExit);
}
return true; // TODO
}
diff --git a/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/CheckersMessages.java b/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/CheckersMessages.java
index f8d630c241f..d231288b155 100644
--- a/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/CheckersMessages.java
+++ b/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/CheckersMessages.java
@@ -38,10 +38,15 @@ public class CheckersMessages extends NLS {
public static String SwitchCaseChecker_ParameterDefaultAllEnums;
public static String BlacklistChecker_list;
public static String BlacklistChecker_list_item;
+ public static String MagicNumberChecker_ParameterArray;
+ public static String MagicNumberChecker_ParameterOperatorParen;
public static String UnusedSymbolInFileScopeChecker_CharacterSequence;
public static String UnusedSymbolInFileScopeChecker_Exceptions;
-
+ public static String SymbolShadowingChecker_CheckFunctionParameters;
public static String Copyright_regex;
+ public static String ShallowCopyChecker_OnlyNew;
+ public static String CStyleCastCheck_checkInMacro;
+ public static String NoDiscardChecker_ParameterMacro;
static {
NLS.initializeMessages(CheckersMessages.class.getName(), CheckersMessages.class);
diff --git a/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/CheckersMessages.properties b/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/CheckersMessages.properties
index 105eec2d977..b9d4819f34c 100644
--- a/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/CheckersMessages.properties
+++ b/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/CheckersMessages.properties
@@ -23,17 +23,24 @@ ReturnChecker_Param0=Also check functions with implicit return value
GenericParameter_ParameterExceptions=Exceptions (value of the problem argument)
GenericParameter_ParameterExceptionsItem=Value of the argument
StatementHasNoEffectChecker_ParameterMacro=Report problem in statements that come from macro expansion
+CStyleCastCheck_checkInMacro=Report problem in expressions that come from macro expansion
SuggestedParenthesisChecker_SuggestParanthesesAroundNot=Suggest parenthesis around 'not' operator
SuspiciousSemicolonChecker_ParamAfterElse=Report an error if semicolon is right after 'else' statement
SuspiciousSemicolonChecker_ParamElse=Do not report an error after 'if' when 'else' exists
-
+MagicNumberChecker_ParameterArray=Check literals in array expressions
+MagicNumberChecker_ParameterOperatorParen=Check literals in calls of class operator()
+NoDiscardChecker_ParameterMacro=Report problem in statements that come from macro expansion
SwitchCaseChecker_ParameterDefaultAllEnums=Mark even switches with complete enum items
BlacklistChecker_list=List of methods/functions to be checked
BlacklistChecker_list_item=Fully qualified method name or function name
+ShallowCopyChecker_OnlyNew=Check only classes using operator 'new' in constructor
+
ProblemBindingChecker_Candidates=Candidates are:
UnusedSymbolInFileScopeChecker_CharacterSequence=Identifier character sequence:
UnusedSymbolInFileScopeChecker_Exceptions=Exceptions (identifier character sequence)
-Copyright_regex=Regex to search for copyright information \ No newline at end of file
+Copyright_regex=Regex to search for copyright information
+
+SymbolShadowingChecker_CheckFunctionParameters=Check even function/method parameters
diff --git a/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/ClassMembersInitializationChecker.java b/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/ClassMembersInitializationChecker.java
index f0ffaa5f35a..1821d129cbd 100644
--- a/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/ClassMembersInitializationChecker.java
+++ b/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/ClassMembersInitializationChecker.java
@@ -17,6 +17,7 @@
package org.eclipse.cdt.codan.internal.checkers;
import java.util.HashSet;
+import java.util.Optional;
import java.util.Set;
import java.util.Stack;
@@ -59,7 +60,6 @@ import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPDeferredClassInstance;
import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPSemantics;
import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPVariableReadWriteFlags;
import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPVisitor;
-import org.eclipse.cdt.internal.core.pdom.dom.PDOMName;
/**
* Checks that class members of simple types (int, float, pointers,
@@ -212,7 +212,8 @@ public class ClassMembersInitializationChecker extends AbstractIndexAstChecker {
IField equivalentFieldBinding = getContainedEquivalentBinding(actualConstructorFields, binding,
name.getTranslationUnit().getIndex());
if (equivalentFieldBinding != null) {
- if ((CPPVariableReadWriteFlags.getReadWriteFlags(name) & PDOMName.WRITE_ACCESS) != 0) {
+ Optional<Integer> res = CPPVariableReadWriteFlags.getReadWriteFlags(name);
+ if (CPPVariableReadWriteFlags.mayBeWriteAccess(res)) {
actualConstructorFields.remove(equivalentFieldBinding);
}
}
diff --git a/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/FloatCompareChecker.java b/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/FloatCompareChecker.java
index 10dd018b0cb..eb5680df934 100644
--- a/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/FloatCompareChecker.java
+++ b/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/FloatCompareChecker.java
@@ -26,7 +26,6 @@ import org.eclipse.cdt.internal.core.dom.parser.ValueFactory;
import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPVisitor;
import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.SemanticUtil;
-@SuppressWarnings("restriction")
public class FloatCompareChecker extends AbstractIndexAstChecker {
public static final String ERR_ID = "org.eclipse.cdt.codan.internal.checkers.FloatCompareProblem"; //$NON-NLS-1$
diff --git a/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/MagicNumberChecker.java b/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/MagicNumberChecker.java
new file mode 100644
index 00000000000..abb8e9fb196
--- /dev/null
+++ b/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/MagicNumberChecker.java
@@ -0,0 +1,211 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Marco Stornelli
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.codan.internal.checkers;
+
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.eclipse.cdt.codan.core.cxx.model.AbstractIndexAstChecker;
+import org.eclipse.cdt.codan.core.model.IProblem;
+import org.eclipse.cdt.codan.core.model.IProblemWorkingCopy;
+import org.eclipse.cdt.codan.core.param.ListProblemPreference;
+import org.eclipse.cdt.core.dom.ast.ASTVisitor;
+import org.eclipse.cdt.core.dom.ast.IASTArrayDeclarator;
+import org.eclipse.cdt.core.dom.ast.IASTArrayModifier;
+import org.eclipse.cdt.core.dom.ast.IASTArraySubscriptExpression;
+import org.eclipse.cdt.core.dom.ast.IASTEnumerationSpecifier.IASTEnumerator;
+import org.eclipse.cdt.core.dom.ast.IASTExpression;
+import org.eclipse.cdt.core.dom.ast.IASTIdExpression;
+import org.eclipse.cdt.core.dom.ast.IASTInitializer;
+import org.eclipse.cdt.core.dom.ast.IASTLiteralExpression;
+import org.eclipse.cdt.core.dom.ast.IASTNode;
+import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
+import org.eclipse.cdt.core.dom.ast.IASTUnaryExpression;
+import org.eclipse.cdt.core.dom.ast.IType;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTFieldReference;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTFunctionCallExpression;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTUnaryExpression;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassType;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPMethod;
+import org.eclipse.cdt.internal.core.dom.parser.ASTQueries;
+import org.eclipse.cdt.internal.core.dom.parser.ValueFactory;
+import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.SemanticUtil;
+
+public class MagicNumberChecker extends AbstractIndexAstChecker {
+ public static final String ERR_ID = "org.eclipse.cdt.codan.internal.checkers.MagicNumberProblem"; //$NON-NLS-1$
+ private static final String OPERATOR_PAREN = "operator ()"; //$NON-NLS-1$
+ public static final String PARAM_ARRAY = "checkArray"; //$NON-NLS-1$
+ public static final String PARAM_EXCEPTIONS = "exceptions"; //$NON-NLS-1$
+ /**
+ * Operator() is often used for matrix manipulation
+ */
+ public static final String PARAM_OPERATOR_PAREN = "checkOperatorParen"; //$NON-NLS-1$
+ /**
+ * As default we allow the use of zero, one, minus one and two (used often as modulo value and other bit operations) as int
+ */
+ private Set<Long> allowedLongValues = new HashSet<>();
+ /**
+ * As default we allow the use of zero, one, minus one as float
+ */
+ private Set<Double> allowedDoubleValues = new HashSet<>();
+ private boolean checkArray;
+ private boolean checkOperatorParen;
+
+ @Override
+ public void initPreferences(IProblemWorkingCopy problem) {
+ super.initPreferences(problem);
+ addPreference(problem, PARAM_ARRAY, CheckersMessages.MagicNumberChecker_ParameterArray, Boolean.TRUE);
+ addPreference(problem, PARAM_OPERATOR_PAREN, CheckersMessages.MagicNumberChecker_ParameterOperatorParen,
+ Boolean.TRUE);
+ ListProblemPreference list = addListPreference(problem, PARAM_EXCEPTIONS,
+ CheckersMessages.GenericParameter_ParameterExceptions,
+ CheckersMessages.GenericParameter_ParameterExceptionsItem);
+ list.addChildValue("1"); //$NON-NLS-1$
+ list.addChildValue("0"); //$NON-NLS-1$
+ list.addChildValue("-1"); //$NON-NLS-1$
+ list.addChildValue("2"); //$NON-NLS-1$
+ list.addChildValue("1.0"); //$NON-NLS-1$
+ list.addChildValue("0.0"); //$NON-NLS-1$
+ list.addChildValue("-1.0"); //$NON-NLS-1$
+ }
+
+ private void initExceptions() {
+ allowedLongValues.clear();
+ allowedDoubleValues.clear();
+ Object[] arr = (Object[]) getPreference(getProblemById(ERR_ID, getFile()), PARAM_EXCEPTIONS);
+ for (Object o : arr) {
+ String s = (String) o;
+ try {
+ allowedLongValues.add(Long.parseLong(s));
+ } catch (NumberFormatException e) {
+ try {
+ allowedDoubleValues.add(Double.parseDouble(s));
+ } catch (NumberFormatException e1) {
+ }
+ }
+ }
+ }
+
+ @Override
+ public void processAst(IASTTranslationUnit ast) {
+ final IProblem pt = getProblemById(ERR_ID, getFile());
+ checkArray = (Boolean) getPreference(pt, PARAM_ARRAY);
+ checkOperatorParen = (Boolean) getPreference(pt, PARAM_OPERATOR_PAREN);
+ initExceptions();
+ ast.accept(new ASTVisitor() {
+ {
+ shouldVisitExpressions = true;
+ }
+
+ @Override
+ public int visit(IASTExpression expression) {
+ if (expression instanceof IASTLiteralExpression) {
+ /**
+ * Check if the expression is already inside a macro, if so it's ok
+ */
+ if (enclosedInMacroExpansion(expression))
+ return PROCESS_CONTINUE;
+ /**
+ * Check if we are inside an initializer, if so it's ok
+ */
+ IASTInitializer node = ASTQueries.findAncestorWithType(expression, IASTInitializer.class);
+ if (node != null)
+ return PROCESS_CONTINUE;
+ /**
+ * Check if the literal is used for an array
+ */
+ IASTNode parent = expression.getParent();
+ if (!checkArray && (parent instanceof IASTArrayModifier || parent instanceof IASTArrayDeclarator
+ || parent instanceof IASTArraySubscriptExpression))
+ return PROCESS_CONTINUE;
+ /**
+ * Check if the literal is just a value assigned to an enum
+ */
+ IASTEnumerator enums = ASTQueries.findAncestorWithType(expression, IASTEnumerator.class);
+ if (enums != null)
+ return PROCESS_CONTINUE;
+ /**
+ * Check if the literal is used in operator() of a class instance
+ */
+ if (!checkOperatorParen && isOperatorParen(expression)) {
+ return PROCESS_CONTINUE;
+ }
+ IASTLiteralExpression literal = (IASTLiteralExpression) expression;
+ int kind = literal.getKind();
+ Number value;
+ switch (kind) {
+ case IASTLiteralExpression.lk_float_constant:
+ value = ValueFactory.getConstantNumericalValue(expression);
+ if (!allowedDoubleValues.contains(value.doubleValue()))
+ reportProblem(ERR_ID, expression);
+ break;
+ case IASTLiteralExpression.lk_integer_constant:
+ value = ValueFactory.getConstantNumericalValue(expression);
+ if (!allowedLongValues.contains(value.longValue()))
+ reportProblem(ERR_ID, expression);
+ break;
+ default:
+ return PROCESS_CONTINUE;
+ }
+ }
+ return PROCESS_CONTINUE;
+ }
+ });
+ }
+
+ /**
+ * Checks whether expression references this (directly, by pointer or by reference)
+ */
+ private boolean referencesThis(IASTNode expr) {
+ if (expr instanceof IASTLiteralExpression) {
+ IASTLiteralExpression litArg = (IASTLiteralExpression) expr;
+ if (litArg.getKind() == IASTLiteralExpression.lk_this) {
+ return true;
+ }
+ } else if (expr instanceof ICPPASTUnaryExpression) {
+ ICPPASTUnaryExpression unExpr = (ICPPASTUnaryExpression) expr;
+ switch (unExpr.getOperator()) {
+ case IASTUnaryExpression.op_amper:
+ case IASTUnaryExpression.op_star:
+ case IASTUnaryExpression.op_bracketedPrimary:
+ return referencesThis(unExpr.getOperand());
+ }
+ }
+ return false;
+ }
+
+ private boolean isOperatorParen(IASTExpression expression) {
+ ICPPASTFunctionCallExpression func = ASTQueries.findAncestorWithType(expression,
+ ICPPASTFunctionCallExpression.class);
+ if (func == null)
+ return false;
+
+ IASTExpression funcName = func.getFunctionNameExpression();
+ if (funcName instanceof ICPPASTFieldReference && Arrays.equals(OPERATOR_PAREN.toCharArray(),
+ ((ICPPASTFieldReference) funcName).getFieldName().getSimpleID()))
+ return true;
+
+ if (!(funcName instanceof IASTIdExpression) && !referencesThis(funcName))
+ return false;
+
+ IType type = SemanticUtil.getUltimateType(funcName.getExpressionType(), true);
+ if (type instanceof ICPPClassType) {
+ ICPPMethod[] methods = ((ICPPClassType) type).getAllDeclaredMethods();
+ for (ICPPMethod m : methods) {
+ if (OPERATOR_PAREN.equals(m.getName())) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+}
diff --git a/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/NoDiscardChecker.java b/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/NoDiscardChecker.java
new file mode 100644
index 00000000000..4c56d0ddcf6
--- /dev/null
+++ b/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/NoDiscardChecker.java
@@ -0,0 +1,205 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Marco Stornelli
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ *******************************************************************************/
+package org.eclipse.cdt.codan.internal.checkers;
+
+import java.util.Optional;
+
+import org.eclipse.cdt.codan.core.cxx.model.AbstractAstFunctionChecker;
+import org.eclipse.cdt.codan.core.model.IProblemWorkingCopy;
+import org.eclipse.cdt.core.dom.ast.ASTVisitor;
+import org.eclipse.cdt.core.dom.ast.IASTExpression;
+import org.eclipse.cdt.core.dom.ast.IASTExpressionList;
+import org.eclipse.cdt.core.dom.ast.IASTExpressionStatement;
+import org.eclipse.cdt.core.dom.ast.IASTFieldReference;
+import org.eclipse.cdt.core.dom.ast.IASTFunctionCallExpression;
+import org.eclipse.cdt.core.dom.ast.IASTFunctionDefinition;
+import org.eclipse.cdt.core.dom.ast.IASTIdExpression;
+import org.eclipse.cdt.core.dom.ast.IASTName;
+import org.eclipse.cdt.core.dom.ast.IASTNode;
+import org.eclipse.cdt.core.dom.ast.IASTUnaryExpression;
+import org.eclipse.cdt.core.dom.ast.IBinding;
+import org.eclipse.cdt.core.dom.ast.IFunction;
+import org.eclipse.cdt.core.dom.ast.IPointerType;
+import org.eclipse.cdt.core.dom.ast.IType;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCastExpression;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTExpression;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassType;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPEnumeration;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPFunction;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPFunctionType;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPReferenceType;
+import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPEvaluation;
+import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPTemplates;
+import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.EvalFunctionCall;
+import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.EvalTypeId;
+import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.SemanticUtil;
+
+public class NoDiscardChecker extends AbstractAstFunctionChecker {
+ public static final String ER_ID = "org.eclipse.cdt.codan.internal.checkers.NoDiscardProblem"; //$NON-NLS-1$
+ public static final String PARAM_MACRO_ID = "macro"; //$NON-NLS-1$
+
+ @Override
+ protected void processFunction(IASTFunctionDefinition func) {
+ func.accept(new FunctionCallVisitor());
+ }
+
+ class FunctionCallVisitor extends ASTVisitor {
+
+ FunctionCallVisitor() {
+ shouldVisitExpressions = true;
+ }
+
+ @Override
+ public int visit(IASTExpression expr) {
+ if (!shouldReportInMacro() && enclosedInMacroExpansion(expr))
+ return PROCESS_SKIP;
+ if (isDiscardedValueExpression(expr)) {
+ Optional<IASTNode> res = getNodiscardFunction(expr);
+ if (res.isPresent()) {
+ reportProblem(ER_ID, expr, res.get());
+ }
+ }
+ return PROCESS_CONTINUE;
+ }
+
+ private boolean isDiscardedValueExpression(IASTExpression expr) {
+ IASTNode parent = expr.getParent();
+ IASTNode child = expr;
+
+ while (parent instanceof IASTUnaryExpression) {
+ int operator = ((IASTUnaryExpression) parent).getOperator();
+ if (operator != IASTUnaryExpression.op_bracketedPrimary) {
+ return false;
+ }
+ child = parent;
+ parent = parent.getParent();
+ }
+ if (parent instanceof IASTExpressionStatement) {
+ return true;
+ }
+
+ if (child instanceof IASTExpression && checkNestedLeftSide((IASTExpression) child)) {
+ return true;
+ }
+
+ return false;
+ }
+
+ private Optional<IASTNode> getNodiscardFunction(IASTExpression expr) {
+ if (expr instanceof IASTFunctionCallExpression) {
+ IASTFunctionCallExpression func = (IASTFunctionCallExpression) expr;
+ IASTExpression functionNameExpression = func.getFunctionNameExpression();
+
+ IASTName name;
+ if (functionNameExpression instanceof IASTIdExpression) {
+ name = ((IASTIdExpression) functionNameExpression).getName();
+ } else if (functionNameExpression instanceof IASTFieldReference) {
+ name = ((IASTFieldReference) functionNameExpression).getFieldName();
+ } else {
+ return Optional.empty();
+ }
+
+ if (expr instanceof ICPPASTExpression) {
+ if (checkEvaluation((ICPPASTExpression) expr)) {
+ return Optional.of(name);
+ }
+ return Optional.empty();
+ }
+
+ // For C, the only thing we need to check is IFunction
+ IBinding binding = name.resolveBinding();
+ if (binding instanceof IFunction && ((IFunction) binding).isNoDiscard()) {
+ return Optional.of(name);
+ }
+
+ return Optional.empty();
+ } else if (expr instanceof ICPPASTCastExpression) {
+ ICPPASTCastExpression cast = (ICPPASTCastExpression) expr;
+ if (cast.getOperator() != ICPPASTCastExpression.op_static_cast) {
+ return Optional.empty();
+ }
+ if (checkEvaluation(cast)) {
+ return Optional.of(cast.getTypeId());
+ }
+ return Optional.empty();
+ } else
+ return Optional.empty();
+ }
+
+ /**
+ * Check if the expression is 'nodiscard' looking for its evaluation
+ * @param expr A cpp expression
+ * @return True if nodiscard, false otherwise
+ */
+ private boolean checkEvaluation(ICPPASTExpression expr) {
+ ICPPEvaluation eval = expr.getEvaluation();
+ if (eval instanceof EvalTypeId) {
+ ICPPFunction evalFunc = ((EvalTypeId) eval).getConstructor();
+ if (evalFunc != null && evalFunc.isNoDiscard()) {
+ return true;
+ }
+ } else if (eval instanceof EvalFunctionCall) {
+ ICPPFunction evalFunc = ((EvalFunctionCall) eval).resolveFunctionBinding();
+ if (evalFunc == null)
+ return false;
+ if (evalFunc.isNoDiscard()) {
+ return true;
+ } else {
+ ICPPFunctionType fType = evalFunc.getType();
+ IType retType = SemanticUtil.getNestedType(fType.getReturnType(), SemanticUtil.TDEF);
+ if (CPPTemplates.isDependentType(retType)) {
+ return false;
+ }
+ if (retType instanceof ICPPReferenceType || retType instanceof IPointerType)
+ return false;
+ retType = SemanticUtil.getUltimateType(retType, true);
+ if (retType instanceof ICPPClassType) {
+ return ((ICPPClassType) retType).isNoDiscard();
+ } else if (retType instanceof ICPPEnumeration) {
+ return ((ICPPEnumeration) retType).isNoDiscard();
+ }
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Check if the function call is a left side of a nested expression. If it's a
+ * left side we need to go ahead and we need to evaluate the expression since it
+ * can be a discarded expression.
+ * @param func The expression list
+ * @return True if it's a nested expression and it's the left side, false otherwise
+ */
+ private boolean checkNestedLeftSide(IASTExpression expr) {
+ if (expr.getPropertyInParent() == IASTExpressionList.NESTED_EXPRESSION) {
+ IASTExpressionList list = (IASTExpressionList) expr.getParent();
+ IASTExpression[] allExpr = list.getExpressions();
+ if (expr != allExpr[allExpr.length - 1])
+ return true;
+ }
+ return false;
+ }
+ }
+
+ @Override
+ public void initPreferences(IProblemWorkingCopy problem) {
+ super.initPreferences(problem);
+ addPreference(problem, PARAM_MACRO_ID, CheckersMessages.NoDiscardChecker_ParameterMacro, Boolean.TRUE);
+ }
+
+ /**
+ * @return
+ */
+ private boolean shouldReportInMacro() {
+ return (Boolean) getPreference(getProblemById(ER_ID, getFile()), PARAM_MACRO_ID);
+ }
+}
diff --git a/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/NonVirtualDestructorChecker.java b/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/NonVirtualDestructorChecker.java
index 9895b75b2e4..6e22ce60363 100644
--- a/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/NonVirtualDestructorChecker.java
+++ b/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/NonVirtualDestructorChecker.java
@@ -42,7 +42,6 @@ import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPTemplates;
*
* @author Alena Laskavaia
*/
-@SuppressWarnings("restriction")
public class NonVirtualDestructorChecker extends AbstractIndexAstChecker {
public static final String PROBLEM_ID = "org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem"; //$NON-NLS-1$
diff --git a/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/ReturnChecker.java b/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/ReturnChecker.java
index 55918a2ca65..77ec28aa489 100644
--- a/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/ReturnChecker.java
+++ b/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/ReturnChecker.java
@@ -83,7 +83,6 @@ import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.SemanticUtil;
* <li>Function declared as returning void has non-void return
* <li>Function declared as returning non-void has no return (requires control flow graph)
*/
-@SuppressWarnings("restriction")
public class ReturnChecker extends AbstractAstFunctionChecker {
public static final String PARAM_IMPLICIT = "implicit"; //$NON-NLS-1$
public static final String RET_NO_VALUE_ID = "org.eclipse.cdt.codan.checkers.noreturn"; //$NON-NLS-1$
diff --git a/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/ShallowCopyChecker.java b/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/ShallowCopyChecker.java
new file mode 100644
index 00000000000..e524d20ee9b
--- /dev/null
+++ b/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/ShallowCopyChecker.java
@@ -0,0 +1,272 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Marco Stornelli
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ *******************************************************************************/
+package org.eclipse.cdt.codan.internal.checkers;
+
+import java.util.Stack;
+
+import org.eclipse.cdt.codan.core.cxx.model.AbstractIndexAstChecker;
+import org.eclipse.cdt.codan.core.model.IProblemWorkingCopy;
+import org.eclipse.cdt.core.dom.ast.ASTVisitor;
+import org.eclipse.cdt.core.dom.ast.IASTBinaryExpression;
+import org.eclipse.cdt.core.dom.ast.IASTDeclSpecifier;
+import org.eclipse.cdt.core.dom.ast.IASTDeclaration;
+import org.eclipse.cdt.core.dom.ast.IASTExpression;
+import org.eclipse.cdt.core.dom.ast.IASTIdExpression;
+import org.eclipse.cdt.core.dom.ast.IASTName;
+import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
+import org.eclipse.cdt.core.dom.ast.IBinding;
+import org.eclipse.cdt.core.dom.ast.ICompositeType;
+import org.eclipse.cdt.core.dom.ast.IPointerType;
+import org.eclipse.cdt.core.dom.ast.IType;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCompositeTypeSpecifier;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTConstructorChainInitializer;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTFieldReference;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTFunctionDefinition;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTNewExpression;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassType;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPConstructor;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPField;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPMethod;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPReferenceType;
+import org.eclipse.cdt.core.dom.ast.cpp.SemanticQueries;
+import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPDeferredClassInstance;
+import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPSemantics;
+import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.SemanticUtil;
+
+/**
+ * Checker to find that class has pointers but no copy constructor
+ */
+public class ShallowCopyChecker extends AbstractIndexAstChecker {
+ public static final String PROBLEM_ID = "org.eclipse.cdt.codan.internal.checkers.ShallowCopyProblem"; //$NON-NLS-1$
+ public static final String PARAM_ONLY_NEW = "onlynew"; //$NON-NLS-1$
+ private boolean fOnlyNew = false;
+
+ @Override
+ public void initPreferences(IProblemWorkingCopy problem) {
+ super.initPreferences(problem);
+ addPreference(problem, PARAM_ONLY_NEW, CheckersMessages.ShallowCopyChecker_OnlyNew, Boolean.FALSE);
+ }
+
+ @Override
+ public void processAst(IASTTranslationUnit ast) {
+ fOnlyNew = (Boolean) getPreference(getProblemById(PROBLEM_ID, getFile()), PARAM_ONLY_NEW);
+ if (fOnlyNew) {
+ ast.accept(new OnlyNewVisitor());
+ } else {
+ ast.accept(new AllPtrsVisitor());
+ }
+ }
+
+ private boolean isPointerType(IType type) {
+ type = SemanticUtil.getNestedType(type, SemanticUtil.TDEF);
+ return type instanceof IPointerType;
+ }
+
+ private boolean isReferenceType(IType type) {
+ type = SemanticUtil.getNestedType(type, SemanticUtil.TDEF);
+ return type instanceof ICPPReferenceType;
+ }
+
+ private static boolean hasCopyMethods(ICPPClassType classType) {
+ boolean hasCopyCtor = false;
+ boolean hasCopyAssignment = false;
+ for (ICPPMethod method : classType.getDeclaredMethods()) {
+ if (!hasCopyCtor && method instanceof ICPPConstructor
+ && SemanticQueries.isCopyConstructor((ICPPConstructor) method)) {
+ hasCopyCtor = true;
+ } else if (!hasCopyAssignment && SemanticQueries.isCopyAssignmentOperator(method)) {
+ hasCopyAssignment = true;
+ }
+ if (hasCopyAssignment && hasCopyCtor)
+ return true;
+ }
+ return false;
+ }
+
+ private static class CtorInfo {
+ ICPPConstructor ctor;
+ boolean hasProblem;
+ boolean hasCopyMethods;
+
+ CtorInfo() {
+ hasProblem = false;
+ hasCopyMethods = false;
+ ctor = null;
+ }
+ }
+
+ class OnlyNewVisitor extends ASTVisitor {
+ // NOTE: Classes can be nested and even can be declared in constructors of the other classes
+ private final Stack<CtorInfo> constructorsStack = new Stack<>();
+
+ OnlyNewVisitor() {
+ shouldVisitDeclarations = true;
+ shouldVisitNames = true;
+ shouldVisitExpressions = true;
+ }
+
+ @Override
+ public int visit(IASTDeclaration declaration) {
+ ICPPConstructor constructor = getConstructor(declaration);
+ if (constructor != null) {
+ CtorInfo info = constructorsStack.push(new CtorInfo());
+ info.ctor = constructor;
+ info.hasProblem = false;
+ try {
+ CPPSemantics.pushLookupPoint(declaration);
+ ICPPClassType classType = constructor.getClassOwner();
+ info.hasCopyMethods = hasCopyMethods(classType);
+ return PROCESS_CONTINUE;
+ } finally {
+ CPPSemantics.popLookupPoint();
+ }
+ }
+ return PROCESS_CONTINUE;
+ }
+
+ @Override
+ public int leave(IASTDeclaration declaration) {
+ if (getConstructor(declaration) != null) {
+ CtorInfo info = constructorsStack.pop();
+ if (info.hasProblem) {
+ reportProblem(PROBLEM_ID, declaration);
+ }
+ }
+ return PROCESS_CONTINUE;
+ }
+
+ @Override
+ public int visit(IASTExpression expression) {
+ if (!constructorsStack.isEmpty() && expression instanceof IASTBinaryExpression
+ && ((IASTBinaryExpression) expression).getOperator() == IASTBinaryExpression.op_assign) {
+ CtorInfo info = constructorsStack.peek();
+ if (info.hasCopyMethods)
+ return PROCESS_CONTINUE;
+ IASTExpression exp1 = ((IASTBinaryExpression) expression).getOperand1();
+ IASTExpression exp2 = ((IASTBinaryExpression) expression).getOperand2();
+ if (exp1 instanceof ICPPASTNewExpression) {
+ IBinding fBinding = null;
+ if (exp2 instanceof IASTIdExpression) {
+ IASTIdExpression fName = (IASTIdExpression) exp2;
+ fBinding = fName.getName().resolveBinding();
+ } else if (exp2 instanceof ICPPASTFieldReference) {
+ ICPPASTFieldReference fName = (ICPPASTFieldReference) exp2;
+ fBinding = fName.getFieldName().resolveBinding();
+ }
+ if (fBinding != null && fBinding instanceof ICPPField) {
+ ICPPField field = (ICPPField) fBinding;
+ if (info.ctor.getClassOwner().equals(field.getClassOwner())) {
+ info.hasProblem = true;
+ }
+ }
+ } else if (exp2 instanceof ICPPASTNewExpression) {
+ IBinding fBinding = null;
+ if (exp1 instanceof IASTIdExpression) {
+ IASTIdExpression fName = (IASTIdExpression) exp1;
+ fBinding = fName.getName().resolveBinding();
+ } else if (exp1 instanceof ICPPASTFieldReference) {
+ ICPPASTFieldReference fName = (ICPPASTFieldReference) exp1;
+ fBinding = fName.getFieldName().resolveBinding();
+ }
+ if (fBinding != null && fBinding instanceof ICPPField) {
+ ICPPField field = (ICPPField) fBinding;
+ if (info.ctor.getClassOwner().equals(field.getClassOwner())) {
+ info.hasProblem = true;
+ }
+ }
+ }
+ }
+ return PROCESS_CONTINUE;
+ }
+
+ /**
+ * Checks that specified declaration is a class constructor
+ * (it is a class member and its name is equal to the class name)
+ */
+ private ICPPConstructor getConstructor(IASTDeclaration decl) {
+ if (decl instanceof ICPPASTFunctionDefinition) {
+ ICPPASTFunctionDefinition functionDefinition = (ICPPASTFunctionDefinition) decl;
+ if (functionDefinition.isDeleted())
+ return null;
+ IBinding binding = functionDefinition.getDeclarator().getName().resolveBinding();
+ if (binding instanceof ICPPConstructor) {
+ ICPPConstructor constructor = (ICPPConstructor) binding;
+ // Skip defaulted copy and move constructors.
+ if (functionDefinition.isDefaulted() && SemanticQueries.isCopyOrMoveConstructor(constructor))
+ return null;
+ if (constructor.getClassOwner().getKey() == ICompositeType.k_union)
+ return null;
+ // Skip delegating constructors.
+ for (ICPPASTConstructorChainInitializer memberInitializer : functionDefinition
+ .getMemberInitializers()) {
+ IASTName memberName = memberInitializer.getMemberInitializerId();
+ if (memberName != null) {
+ IBinding memberBinding = memberName.resolveBinding();
+ ICPPClassType classType = null;
+ if (memberBinding instanceof ICPPClassType) {
+ classType = (ICPPClassType) memberBinding;
+ } else if (memberBinding instanceof ICPPConstructor) {
+ classType = ((ICPPConstructor) memberBinding).getClassOwner();
+ }
+ if (classType instanceof ICPPDeferredClassInstance) {
+ classType = ((ICPPDeferredClassInstance) classType).getClassTemplate();
+ }
+ if (classType != null && classType.isSameType(constructor.getClassOwner()))
+ return null;
+ }
+ }
+ return constructor;
+ }
+ }
+
+ return null;
+ }
+ }
+
+ private class AllPtrsVisitor extends ASTVisitor {
+
+ AllPtrsVisitor() {
+ shouldVisitDeclSpecifiers = true;
+ }
+
+ @Override
+ public int visit(IASTDeclSpecifier decl) {
+ if (decl instanceof ICPPASTCompositeTypeSpecifier) {
+ ICPPASTCompositeTypeSpecifier spec = (ICPPASTCompositeTypeSpecifier) decl;
+ IASTName className = spec.getName();
+ IBinding binding = className.resolveBinding();
+ if (!(binding instanceof ICPPClassType)) {
+ return PROCESS_CONTINUE;
+ }
+ try {
+ CPPSemantics.pushLookupPoint(className);
+ ICPPClassType classType = (ICPPClassType) binding;
+ boolean hasCopyMethods = hasCopyMethods(classType);
+ ICPPField[] fields = classType.getDeclaredFields();
+ boolean hasPointers = false;
+ for (ICPPField f : fields) {
+ if (isPointerType(f.getType()) || isReferenceType(f.getType())) {
+ hasPointers = true;
+ break;
+ }
+ }
+ if (!hasCopyMethods && hasPointers)
+ reportProblem(PROBLEM_ID, decl);
+ return PROCESS_CONTINUE;
+ } finally {
+ CPPSemantics.popLookupPoint();
+ }
+ }
+ return PROCESS_CONTINUE;
+ }
+ }
+}
diff --git a/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/SwitchCaseChecker.java b/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/SwitchCaseChecker.java
index 8844a11085b..4768c4ac80a 100644
--- a/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/SwitchCaseChecker.java
+++ b/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/SwitchCaseChecker.java
@@ -37,7 +37,6 @@ import org.eclipse.cdt.core.dom.ast.IType;
import org.eclipse.cdt.internal.core.dom.parser.ValueFactory;
import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.SemanticUtil;
-@SuppressWarnings("restriction")
public class SwitchCaseChecker extends AbstractIndexAstChecker {
public static final String MISS_CASE_ID = "org.eclipse.cdt.codan.internal.checkers.MissCaseProblem"; //$NON-NLS-1$
public static final String MISS_DEFAULT_ID = "org.eclipse.cdt.codan.internal.checkers.MissDefaultProblem"; //$NON-NLS-1$
diff --git a/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/SymbolShadowingChecker.java b/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/SymbolShadowingChecker.java
new file mode 100644
index 00000000000..8955d049cd9
--- /dev/null
+++ b/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/SymbolShadowingChecker.java
@@ -0,0 +1,175 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Marco Stornelli
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Marco Stornelli - Initial implementation
+ *******************************************************************************/
+
+package org.eclipse.cdt.codan.internal.checkers;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.eclipse.cdt.codan.checkers.CodanCheckersActivator;
+import org.eclipse.cdt.codan.core.cxx.model.AbstractIndexAstChecker;
+import org.eclipse.cdt.codan.core.model.IProblemLocation;
+import org.eclipse.cdt.codan.core.model.IProblemWorkingCopy;
+import org.eclipse.cdt.core.dom.ast.ASTVisitor;
+import org.eclipse.cdt.core.dom.ast.DOMException;
+import org.eclipse.cdt.core.dom.ast.EScopeKind;
+import org.eclipse.cdt.core.dom.ast.IASTDeclarator;
+import org.eclipse.cdt.core.dom.ast.IASTFileLocation;
+import org.eclipse.cdt.core.dom.ast.IASTImageLocation;
+import org.eclipse.cdt.core.dom.ast.IASTName;
+import org.eclipse.cdt.core.dom.ast.IASTNode;
+import org.eclipse.cdt.core.dom.ast.IASTParameterDeclaration;
+import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
+import org.eclipse.cdt.core.dom.ast.IBinding;
+import org.eclipse.cdt.core.dom.ast.IField;
+import org.eclipse.cdt.core.dom.ast.IParameter;
+import org.eclipse.cdt.core.dom.ast.IProblemBinding;
+import org.eclipse.cdt.core.dom.ast.IScope;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPVariableInstance;
+import org.eclipse.cdt.core.index.IIndex;
+import org.eclipse.cdt.core.index.IIndexName;
+import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPInternalVariable;
+import org.eclipse.cdt.internal.core.pdom.dom.PDOMGlobalScope;
+import org.eclipse.core.runtime.CoreException;
+
+public class SymbolShadowingChecker extends AbstractIndexAstChecker {
+
+ public static final String ERR_ID = "org.eclipse.cdt.codan.internal.checkers.SymbolShadowingProblem"; //$NON-NLS-1$
+ public static final String PARAM_FUNC_PARAM = "paramFuncParameters"; //$NON-NLS-1$
+
+ private IASTTranslationUnit ast;
+ private IIndex index;
+
+ private boolean checkFuncParams;
+
+ @Override
+ public void initPreferences(IProblemWorkingCopy problem) {
+ super.initPreferences(problem);
+ addPreference(problem, PARAM_FUNC_PARAM, CheckersMessages.SymbolShadowingChecker_CheckFunctionParameters,
+ Boolean.TRUE);
+ }
+
+ @Override
+ public void processAst(IASTTranslationUnit ast) {
+ this.ast = ast;
+ index = ast.getIndex();
+ checkFuncParams = (Boolean) getPreference(getProblemById(ERR_ID, getFile()), PARAM_FUNC_PARAM);
+ ast.accept(new VariableDeclarationVisitor());
+ }
+
+ /**
+ * This visitor looks for variable declarations.
+ */
+ class VariableDeclarationVisitor extends ASTVisitor {
+
+ VariableDeclarationVisitor() {
+ shouldVisitDeclarators = true;
+ }
+
+ /**
+ * Check if it's the type we want. We check for fields, variables and parameters.
+ * @param binding The binding to be checked
+ * @return True if it's a field or variable, false otherwise
+ */
+ private boolean validBinding(IBinding binding) {
+ return binding instanceof IField || binding instanceof ICPPInternalVariable
+ || binding instanceof ICPPVariableInstance || (checkFuncParams && binding instanceof IParameter);
+ }
+
+ private void report(String id, IASTNode astNode, Set<IProblemLocation> cache, Object... args) {
+ IProblemLocation loc = getProblemLocation(astNode);
+ if (loc != null && !cache.contains(loc)) {
+ reportProblem(id, loc, args);
+ cache.add(loc);
+ }
+ }
+
+ private int getLocation(IASTNode astNode, IASTFileLocation astLocation) {
+ if (enclosedInMacroExpansion(astNode) && astNode instanceof IASTName) {
+ IASTImageLocation imageLocation = ((IASTName) astNode).getImageLocation();
+ if (imageLocation != null) {
+ return imageLocation.getNodeOffset();
+ }
+ }
+ return astLocation.getNodeOffset();
+ }
+
+ /**
+ * Check if at least one of declNames is declared before our declarator, if they
+ * are all declared after our declarator then there's no shadowing.
+ * @param declarator The declarator in lower scope to be checked
+ * @param declNames The declarator names in upper scope
+ * @return True if at least of upper scopes is declared before declarator, false otherwise
+ */
+ private boolean isParentDeclaredBefore(IASTDeclarator declarator, IASTName[] declNames) {
+ int start = getLocation(declarator, declarator.getFileLocation());
+ for (IASTName n : declNames) {
+ if (getLocation(n, n.getFileLocation()) < start)
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public int visit(IASTDeclarator declarator) {
+ if (!checkFuncParams && declarator.getParent() instanceof IASTParameterDeclaration)
+ return PROCESS_CONTINUE;
+ IBinding binding = declarator.getName().resolveBinding();
+
+ if (binding == null || binding instanceof IProblemBinding)
+ return PROCESS_CONTINUE;
+
+ /**
+ * We need a cache here to avoid to report same problem multiple times.
+ */
+ Set<IProblemLocation> cache = new HashSet<>();
+ IScope scope;
+ try {
+ scope = binding.getScope();
+ if (scope.getKind() != EScopeKind.eLocal)
+ return PROCESS_CONTINUE;
+ scope = scope.getParent();
+ while (scope != null && !(scope instanceof IProblemBinding) && !(scope instanceof PDOMGlobalScope)) {
+ IBinding[] scopeBindings = scope.find(declarator.getName().toString(),
+ declarator.getTranslationUnit());
+
+ IScope current = scope;
+ scope = scope.getParent();
+ for (IBinding scopeBinding : scopeBindings) {
+ if (scopeBinding != null && validBinding(scopeBinding)) {
+ IASTName[] declNames = ast.getDeclarationsInAST(scopeBinding);
+ if (declNames != null && declNames.length != 0) {
+ if (scope != null && current.getKind() == scope.getKind()
+ && current.getKind() == EScopeKind.eLocal
+ && isParentDeclaredBefore(declarator, declNames)) {
+ report(ERR_ID, declarator, cache, declarator.getName());
+ } else if (scope == null || current.getKind() != scope.getKind()) {
+ report(ERR_ID, declarator, cache, declarator.getName());
+ }
+ } else {
+ IIndexName[] indexNames = index.findDeclarations(scopeBinding);
+ if (indexNames != null && indexNames.length != 0)
+ report(ERR_ID, declarator, cache, declarator.getName());
+ }
+ break;
+ }
+ }
+ }
+ } catch (DOMException | CoreException e) {
+ CodanCheckersActivator.log(e);
+ }
+ return PROCESS_CONTINUE;
+ }
+ }
+} \ No newline at end of file
diff --git a/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/UnusedSymbolInFileScopeChecker.java b/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/UnusedSymbolInFileScopeChecker.java
index 1a32fb61fd7..69b8f5f3e2e 100644
--- a/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/UnusedSymbolInFileScopeChecker.java
+++ b/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/UnusedSymbolInFileScopeChecker.java
@@ -57,6 +57,7 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassType;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPDeferredFunction;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPFunction;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPMethod;
+import org.eclipse.cdt.core.parser.StandardAttributes;
import org.eclipse.cdt.core.parser.util.AttributeUtil;
/**
@@ -72,7 +73,7 @@ public class UnusedSymbolInFileScopeChecker extends AbstractIndexAstChecker {
* Various attributes that when present for a symbol should make it considered as used.
*/
private static final String[] USAGE_ATTRIBUTES = new String[] { "__unused__", "unused", "constructor", //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
- "destructor" }; //$NON-NLS-1$
+ "destructor", StandardAttributes.MAYBE_UNUSED }; //$NON-NLS-1$
private Map<IBinding, IASTDeclarator> externFunctionDeclarations = new HashMap<>();
private Map<IBinding, IASTDeclarator> staticFunctionDeclarations = new HashMap<>();
@@ -145,7 +146,7 @@ public class UnusedSymbolInFileScopeChecker extends AbstractIndexAstChecker {
IASTSimpleDeclaration simpleDeclaration = (IASTSimpleDeclaration) element;
IASTDeclSpecifier declSpec = simpleDeclaration.getDeclSpecifier();
- boolean hasUsageAttrib = hasUsageAttribute(declSpec);
+ boolean hasUsageAttrib = hasUsageAttribute(declSpec) || hasUsageAttribute(simpleDeclaration);
IASTDeclarator[] declarators = simpleDeclaration.getDeclarators();
for (IASTDeclarator decl : declarators) {
IASTName astName = decl.getName();
diff --git a/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/VirtualMethodCallChecker.java b/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/VirtualMethodCallChecker.java
index c35e70a40ae..7567e0951f9 100644
--- a/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/VirtualMethodCallChecker.java
+++ b/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/VirtualMethodCallChecker.java
@@ -40,7 +40,6 @@ import org.eclipse.cdt.core.dom.ast.cpp.SemanticQueries;
import org.eclipse.cdt.internal.core.dom.parser.cpp.ClassTypeHelper;
import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPDeferredClassInstance;
-@SuppressWarnings("restriction")
public class VirtualMethodCallChecker extends AbstractIndexAstChecker {
public static final String VIRTUAL_CALL_ID = "org.eclipse.cdt.codan.internal.checkers.VirtualMethodCallProblem"; //$NON-NLS-1$
diff --git a/codan/org.eclipse.cdt.codan.core.cxx/.classpath b/codan/org.eclipse.cdt.codan.core.cxx/.classpath
index eca7bdba8f0..e801ebfb468 100644
--- a/codan/org.eclipse.cdt.codan.core.cxx/.classpath
+++ b/codan/org.eclipse.cdt.codan.core.cxx/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/codan/org.eclipse.cdt.codan.core.cxx/.project b/codan/org.eclipse.cdt.codan.core.cxx/.project
index e7f17756d70..0ddb3f303ea 100644
--- a/codan/org.eclipse.cdt.codan.core.cxx/.project
+++ b/codan/org.eclipse.cdt.codan.core.cxx/.project
@@ -20,9 +20,15 @@
<arguments>
</arguments>
</buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.pde.PluginNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
</natures>
</projectDescription>
diff --git a/codan/org.eclipse.cdt.codan.core.cxx/.settings/org.eclipse.core.resources.prefs b/codan/org.eclipse.cdt.codan.core.cxx/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/codan/org.eclipse.cdt.codan.core.cxx/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/codan/org.eclipse.cdt.codan.core.cxx/.settings/org.eclipse.jdt.core.prefs b/codan/org.eclipse.cdt.codan.core.cxx/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/codan/org.eclipse.cdt.codan.core.cxx/.settings/org.eclipse.jdt.core.prefs
+++ b/codan/org.eclipse.cdt.codan.core.cxx/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/codan/org.eclipse.cdt.codan.core.cxx/.settings/org.eclipse.jdt.ui.prefs b/codan/org.eclipse.cdt.codan.core.cxx/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/codan/org.eclipse.cdt.codan.core.cxx/.settings/org.eclipse.jdt.ui.prefs
+++ b/codan/org.eclipse.cdt.codan.core.cxx/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/codan/org.eclipse.cdt.codan.core.cxx/META-INF/MANIFEST.MF b/codan/org.eclipse.cdt.codan.core.cxx/META-INF/MANIFEST.MF
index ec656dde9f7..cbd9f2d1f15 100644
--- a/codan/org.eclipse.cdt.codan.core.cxx/META-INF/MANIFEST.MF
+++ b/codan/org.eclipse.cdt.codan.core.cxx/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name
Bundle-SymbolicName: org.eclipse.cdt.codan.core.cxx;singleton:=true
-Bundle-Version: 3.4.200.qualifier
+Bundle-Version: 3.5.200.qualifier
Bundle-Activator: org.eclipse.cdt.codan.core.cxx.Activator
Require-Bundle: org.eclipse.core.runtime,
org.eclipse.cdt.core,
@@ -16,6 +16,6 @@ Export-Package: org.eclipse.cdt.codan.core.cxx,
org.eclipse.cdt.codan.core.cxx.internal.model;x-friends:="org.eclipse.cdt.codan.checkers.ui,org.eclipse.cdt.codan.ui,org.eclipse.cdt.codan.ui.cxx",
org.eclipse.cdt.codan.core.cxx.internal.model.cfg;x-friends:="org.eclipse.cdt.codan.core.test",
org.eclipse.cdt.codan.core.cxx.model
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-Vendor: %Bundle-Vendor
Automatic-Module-Name: org.eclipse.cdt.codan.core.cxx
diff --git a/codan/org.eclipse.cdt.codan.core.cxx/about.html b/codan/org.eclipse.cdt.codan.core.cxx/about.html
index 164f781a8fd..b3134865230 100644
--- a/codan/org.eclipse.cdt.codan.core.cxx/about.html
+++ b/codan/org.eclipse.cdt.codan.core.cxx/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/codan/org.eclipse.cdt.codan.core.tests/.classpath b/codan/org.eclipse.cdt.codan.core.tests/.classpath
index eca7bdba8f0..a42a828e04a 100644
--- a/codan/org.eclipse.cdt.codan.core.tests/.classpath
+++ b/codan/org.eclipse.cdt.codan.core.tests/.classpath
@@ -1,7 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="src" path="src"/>
+ <classpathentry kind="src" path="src">
+ <attributes>
+ <attribute name="test" value="true"/>
+ </attributes>
+ </classpathentry>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/codan/org.eclipse.cdt.codan.core.tests/.settings/org.eclipse.core.resources.prefs b/codan/org.eclipse.cdt.codan.core.tests/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/codan/org.eclipse.cdt.codan.core.tests/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/codan/org.eclipse.cdt.codan.core.tests/.settings/org.eclipse.jdt.core.prefs b/codan/org.eclipse.cdt.codan.core.tests/.settings/org.eclipse.jdt.core.prefs
index ad05599159f..5b1c443114d 100644
--- a/codan/org.eclipse.cdt.codan.core.tests/.settings/org.eclipse.jdt.core.prefs
+++ b/codan/org.eclipse.cdt.codan.core.tests/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/codan/org.eclipse.cdt.codan.core.tests/.settings/org.eclipse.jdt.ui.prefs b/codan/org.eclipse.cdt.codan.core.tests/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/codan/org.eclipse.cdt.codan.core.tests/.settings/org.eclipse.jdt.ui.prefs
+++ b/codan/org.eclipse.cdt.codan.core.tests/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/codan/org.eclipse.cdt.codan.core.tests/META-INF/MANIFEST.MF b/codan/org.eclipse.cdt.codan.core.tests/META-INF/MANIFEST.MF
index cc49ba67ce0..5eec7e404f1 100644
--- a/codan/org.eclipse.cdt.codan.core.tests/META-INF/MANIFEST.MF
+++ b/codan/org.eclipse.cdt.codan.core.tests/META-INF/MANIFEST.MF
@@ -20,7 +20,7 @@ Require-Bundle: org.eclipse.core.runtime,
org.eclipse.ui.ide;bundle-version="3.6.0",
org.eclipse.cdt.codan.ui.cxx;bundle-version="2.0.0"
Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-Vendor: %Bundle-Vendor
Export-Package: org.eclipse.cdt.codan.core.cfg,
org.eclipse.cdt.codan.core.cxx,
diff --git a/codan/org.eclipse.cdt.codan.core.tests/about.html b/codan/org.eclipse.cdt.codan.core.tests/about.html
index 164f781a8fd..b3134865230 100644
--- a/codan/org.eclipse.cdt.codan.core.tests/about.html
+++ b/codan/org.eclipse.cdt.codan.core.tests/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/codan/org.eclipse.cdt.codan.core.tests/src/org/eclipse/cdt/codan/core/internal/checkers/AssignmentOperatorCheckerTest.java b/codan/org.eclipse.cdt.codan.core.tests/src/org/eclipse/cdt/codan/core/internal/checkers/AssignmentOperatorCheckerTest.java
index 3d687bd8c8c..1185530036a 100644
--- a/codan/org.eclipse.cdt.codan.core.tests/src/org/eclipse/cdt/codan/core/internal/checkers/AssignmentOperatorCheckerTest.java
+++ b/codan/org.eclipse.cdt.codan.core.tests/src/org/eclipse/cdt/codan/core/internal/checkers/AssignmentOperatorCheckerTest.java
@@ -49,6 +49,22 @@ public class AssignmentOperatorCheckerTest extends CheckerTestCase {
//class Foo {
//public:
+ //Foo& operator=(Foo& f) noexcept (false);
+ //};
+ //Foo& Foo::operator=(Foo& f) noexcept (false) {
+ // if (this != &f) {
+ // return *this;
+ // }
+ // return *this;
+ //}
+ public void testWithNoErrorNoexcept() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkNoErrorsOfKind(MISS_REF_ID);
+ checkNoErrorsOfKind(MISS_SELF_ID);
+ }
+
+ //class Foo {
+ //public:
//Foo operator=(const Foo& f);
//};
//Foo Foo::operator=(const Foo& f) {
diff --git a/codan/org.eclipse.cdt.codan.core.tests/src/org/eclipse/cdt/codan/core/internal/checkers/CStyleCastCheckerTest.java b/codan/org.eclipse.cdt.codan.core.tests/src/org/eclipse/cdt/codan/core/internal/checkers/CStyleCastCheckerTest.java
index e4102e047ed..ceef770005d 100644
--- a/codan/org.eclipse.cdt.codan.core.tests/src/org/eclipse/cdt/codan/core/internal/checkers/CStyleCastCheckerTest.java
+++ b/codan/org.eclipse.cdt.codan.core.tests/src/org/eclipse/cdt/codan/core/internal/checkers/CStyleCastCheckerTest.java
@@ -10,6 +10,7 @@
*******************************************************************************/
package org.eclipse.cdt.codan.core.internal.checkers;
+import org.eclipse.cdt.codan.core.param.IProblemPreference;
import org.eclipse.cdt.codan.core.tests.CheckerTestCase;
import org.eclipse.cdt.codan.internal.checkers.CStyleCastChecker;
import org.eclipse.cdt.codan.internal.checkers.UsingInHeaderChecker;
@@ -27,6 +28,11 @@ public class CStyleCastCheckerTest extends CheckerTestCase {
enableProblems(ERR_ID);
}
+ private void setCheckInMacro(boolean val) {
+ IProblemPreference pref = getPreference(CStyleCastChecker.ERR_ID, CStyleCastChecker.PARAM_MACRO);
+ pref.setValue(val);
+ }
+
@Override
public boolean isCpp() {
return true;
@@ -47,4 +53,25 @@ public class CStyleCastCheckerTest extends CheckerTestCase {
loadCodeAndRun(getAboveComment());
checkNoErrorsOfKind(ERR_ID);
}
+
+ //#define CAST(X) (void)X
+ //void bar() {
+ // int b;
+ // CAST(b);
+ //};
+ public void testInMacro() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkErrorLine(4, ERR_ID);
+ }
+
+ //#define CAST(X) (void)X
+ //void bar() {
+ // int b;
+ // CAST(b);
+ //};
+ public void testInMacroOptionOff() throws Exception {
+ setCheckInMacro(false);
+ loadCodeAndRun(getAboveComment());
+ checkNoErrorsOfKind(ERR_ID);
+ }
}
diff --git a/codan/org.eclipse.cdt.codan.core.tests/src/org/eclipse/cdt/codan/core/internal/checkers/CaseBreakCheckerTest.java b/codan/org.eclipse.cdt.codan.core.tests/src/org/eclipse/cdt/codan/core/internal/checkers/CaseBreakCheckerTest.java
index 072e91615b2..4c215f517ad 100644
--- a/codan/org.eclipse.cdt.codan.core.tests/src/org/eclipse/cdt/codan/core/internal/checkers/CaseBreakCheckerTest.java
+++ b/codan/org.eclipse.cdt.codan.core.tests/src/org/eclipse/cdt/codan/core/internal/checkers/CaseBreakCheckerTest.java
@@ -809,4 +809,87 @@ public class CaseBreakCheckerTest extends CheckerTestCase {
loadCodeAndRun(getAboveComment());
checkErrorLines(9, 14);
}
+
+ //int main(int argc) {
+ // switch(argc)
+ // {
+ // case 12:
+ // for(;;) {
+ // throw 12;
+ // }
+ // default:
+ // break;
+ // }
+ // return 0;
+ //}
+ public void testWithForInCase_Bug515464() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkNoErrorsOfKind(ER_ID);
+ }
+
+ //int main(int argc) {
+ // switch(argc)
+ // {
+ // case 12:
+ // while(1) {
+ // throw 12;
+ // }
+ // default:
+ // break;
+ // }
+ // return 0;
+ //}
+ public void testWithWhileInCase_Bug515464() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkNoErrorsOfKind(ER_ID);
+ }
+
+ //int main(int argc) {
+ // switch(argc)
+ // {
+ // case 12:
+ // do {
+ // throw 12;
+ // } while(0);
+ // default:
+ // break;
+ // }
+ // return 0;
+ //}
+ public void testWithDoInCase_Bug515464() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkNoErrorsOfKind(ER_ID);
+ }
+
+ //int main() {
+ // int a, b;
+ //
+ // switch (a) {
+ // case 0:
+ // switch (b) {
+ // default: return 1;
+ // }
+ // case 1:
+ // switch (b) {
+ // case 1: return 1;
+ // case 2: return 1;
+ // case 3: return 1;
+ // }
+ // case 2:
+ // switch (b) {
+ // case 1: return 1;
+ // case 2: return 1;
+ // case 3: return 1;
+ // default: return 1;
+ // }
+ // default:
+ // return 1;
+ // }
+ // return 0;
+ //}
+ public void testWithSwitchInCase_Bug485246() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkNoErrorsOfKind(ER_ID);
+ }
+
}
diff --git a/codan/org.eclipse.cdt.codan.core.tests/src/org/eclipse/cdt/codan/core/internal/checkers/MagicNumberCheckerTest.java b/codan/org.eclipse.cdt.codan.core.tests/src/org/eclipse/cdt/codan/core/internal/checkers/MagicNumberCheckerTest.java
new file mode 100644
index 00000000000..52d3fdbeb1c
--- /dev/null
+++ b/codan/org.eclipse.cdt.codan.core.tests/src/org/eclipse/cdt/codan/core/internal/checkers/MagicNumberCheckerTest.java
@@ -0,0 +1,248 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Marco Stornelli
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.codan.core.internal.checkers;
+
+import org.eclipse.cdt.codan.core.tests.CheckerTestCase;
+import org.eclipse.cdt.codan.internal.checkers.MagicNumberChecker;
+
+/**
+ * Test for {@link MagicNumberChecker} class
+ */
+public class MagicNumberCheckerTest extends CheckerTestCase {
+
+ public static final String ERR_ID = MagicNumberChecker.ERR_ID;
+
+ @Override
+ public void setUp() throws Exception {
+ super.setUp();
+ enableProblems(ERR_ID);
+ }
+
+ @Override
+ public boolean isCpp() {
+ return true;
+ }
+
+ //void bar() {
+ // int a = -18;
+ //}
+ public void testWithInit() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkNoErrorsOfKind(ERR_ID);
+ }
+
+ //void bar() {
+ // int a = -18;
+ // a = 15;
+ //}
+ public void testMagicNumberAssignment() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkErrorLine(3, ERR_ID);
+ }
+
+ //void foo(int p) {
+ //}
+ //void bar() {
+ // int a = -18;
+ // foo(15);
+ //}
+ public void testMagicNumberFunctionCall() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkErrorLine(5, ERR_ID);
+ }
+
+ //void bar() {
+ // int a[100];
+ //}
+ public void testMagicNumberArray() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkErrorLine(2, ERR_ID);
+ }
+
+ //void bar() {
+ // int a = -18;
+ // a = 2;
+ //}
+ public void testException() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkNoErrorsOfKind(ERR_ID);
+ }
+
+ //void bar() {
+ // int a = -18;
+ // a = 238;
+ //}
+ public void tesCustomException() throws Exception {
+ setPreferenceValue(ERR_ID, MagicNumberChecker.PARAM_EXCEPTIONS, new String[] { "238" });
+ loadCodeAndRun(getAboveComment());
+ checkNoErrorsOfKind(ERR_ID);
+ }
+
+ //void bar() {
+ // int a[100];
+ // ++a[8];
+ //}
+ public void testArrayDisabled() throws Exception {
+ setPreferenceValue(ERR_ID, MagicNumberChecker.PARAM_ARRAY, false);
+ loadCodeAndRun(getAboveComment());
+ checkNoErrorsOfKind(ERR_ID);
+ }
+
+ //class Foo {
+ //private:
+ // int a[2];
+ //public:
+ // Foo(int val) {
+ // a[0] = val;
+ // }
+ // int operator()(int idx) const {
+ // return a[idx];
+ // }
+ //};
+ //void bar() {
+ // Foo f(111);
+ // f(88);
+ //}
+ public void testOperatorParenDisabled() throws Exception {
+ setPreferenceValue(ERR_ID, MagicNumberChecker.PARAM_OPERATOR_PAREN, false);
+ loadCodeAndRun(getAboveComment());
+ checkNoErrorsOfKind(ERR_ID);
+ }
+
+ //class Foo {
+ //private:
+ // int a[2];
+ //public:
+ // Foo(int val) {
+ // a[0] = val;
+ // }
+ // int operator()(int idx) const {
+ // return a[idx];
+ // }
+ //};
+ //void bar() {
+ // Foo f(111);
+ // f(88);
+ //}
+ public void testOperatorParenEnabled() throws Exception {
+ setPreferenceValue(ERR_ID, MagicNumberChecker.PARAM_OPERATOR_PAREN, true);
+ loadCodeAndRun(getAboveComment());
+ checkErrorLine(14, ERR_ID);
+ }
+
+ //class Foo {
+ //private:
+ // int a[2];
+ //public:
+ // Foo(int val) {
+ // a[0] = val;
+ // }
+ // int operator()(int idx) const {
+ // return a[idx];
+ // }
+ //};
+ //class Baz : public Foo {}
+ //void bar() {
+ // Baz f(111);
+ // f(88);
+ //}
+ public void testOperatorParenDisabledHierarchy() throws Exception {
+ setPreferenceValue(ERR_ID, MagicNumberChecker.PARAM_OPERATOR_PAREN, false);
+ loadCodeAndRun(getAboveComment());
+ checkNoErrorsOfKind(ERR_ID);
+ }
+
+ //class Foo {
+ //private:
+ // int a[2];
+ //public:
+ // Foo(int val) {
+ // a[0] = val;
+ // }
+ // int operator()(int idx) const {
+ // return a[idx];
+ // }
+ //};
+ //class Baz : public Foo {}
+ //void bar() {
+ // Baz f(111);
+ // f.operator()(88);
+ //}
+ public void testOperatorParenExplicitDisabledHierarchy() throws Exception {
+ setPreferenceValue(ERR_ID, MagicNumberChecker.PARAM_OPERATOR_PAREN, false);
+ loadCodeAndRun(getAboveComment());
+ checkNoErrorsOfKind(ERR_ID);
+ }
+
+ //class Foo {
+ //private:
+ // int a[2];
+ //public:
+ // Foo(int val) {
+ // a[0] = val;
+ // }
+ // int operator()(int idx) const {
+ // return a[idx];
+ // }
+ // int set(int idx) const {
+ // a[idx] = 0;
+ // }
+ //};
+ //class Baz : public Foo {}
+ //void bar() {
+ // Baz f(111);
+ // f.set(9999);
+ //}
+ public void testClassMethod() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkErrorLine(18, ERR_ID);
+ }
+
+ //class Foo {
+ //public:
+ // int operator()(int idx) {
+ // return 0;
+ // }
+ // void pippo(int i) {
+ // (*this)(111111);
+ // }
+ //};
+ //int main() {
+ // Foo* f = new Foo();
+ // f->operator ()(11111);
+ // Foo f2;
+ // f2.operator ()(11111);
+ // return 0;
+ //}
+ public void testImplicitOperatorParenMethod() throws Exception {
+ setPreferenceValue(ERR_ID, MagicNumberChecker.PARAM_OPERATOR_PAREN, false);
+ loadCodeAndRun(getAboveComment());
+ checkNoErrorsOfKind(ERR_ID);
+ }
+
+ //enum Foo {
+ // BAR = 11
+ //}
+ public void testWithEnum() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkNoErrorsOfKind(ERR_ID);
+ }
+
+ //#define MACRO 44
+ //void foo() {
+ // int a = 0;
+ // a = MACRO;
+ //}
+ public void testWithMacro() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkNoErrorsOfKind(ERR_ID);
+ }
+}
diff --git a/codan/org.eclipse.cdt.codan.core.tests/src/org/eclipse/cdt/codan/core/internal/checkers/NoDiscardCheckerTest.java b/codan/org.eclipse.cdt.codan.core.tests/src/org/eclipse/cdt/codan/core/internal/checkers/NoDiscardCheckerTest.java
new file mode 100644
index 00000000000..4b420d1f833
--- /dev/null
+++ b/codan/org.eclipse.cdt.codan.core.tests/src/org/eclipse/cdt/codan/core/internal/checkers/NoDiscardCheckerTest.java
@@ -0,0 +1,446 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Marco Stornelli
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.codan.core.internal.checkers;
+
+import org.eclipse.cdt.codan.core.tests.CheckerTestCase;
+import org.eclipse.cdt.codan.internal.checkers.NoDiscardChecker;
+import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTNameBase;
+
+/**
+ * Test for {@link NoDiscardChecker} class
+ */
+public class NoDiscardCheckerTest extends CheckerTestCase {
+
+ public static final String ER_ID = NoDiscardChecker.ER_ID;
+
+ @Override
+ public void setUp() throws Exception {
+ super.setUp();
+ enableProblems(ER_ID);
+ }
+
+ @Override
+ public boolean isCpp() {
+ return true;
+ }
+
+ //[[nodiscard]] int test() {
+ // return 2;
+ //}
+ //int main() {
+ // test();
+ // return 0;
+ //}
+ public void testCppSimpleCall() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkErrorLine(5, ER_ID);
+ }
+
+ //[[nodiscard]] int test() {
+ // return 2;
+ //}
+ //int main() {
+ // return test();
+ //}
+ public void testCppInReturn() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkNoErrorsOfKind(ER_ID);
+ }
+
+ //[[nodiscard]] int test() {
+ // return 2;
+ //}
+ //int main() {
+ // return test() ? 0 : 1;
+ //}
+ public void testCppInTernaryReturn() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkNoErrorsOfKind(ER_ID);
+ }
+
+ //[[nodiscard]] int test() {
+ // return 2;
+ //}
+ //void process(int v) {}
+ //int main() {
+ // process(test());
+ // return 0;
+ //}
+ public void testCppInOtherCall() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkNoErrorsOfKind(ER_ID);
+ }
+
+ //[[nodiscard]] int test() {
+ // return 2;
+ //}
+ //void process(int v) {}
+ //int main() {
+ // if (test()) {
+ // }
+ // return 0;
+ //}
+ public void testCppInCondition() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkNoErrorsOfKind(ER_ID);
+ }
+
+ //class Test {
+ //public:
+ // Test() {}
+ // [[nodiscard]] int foo() {
+ // return 2;
+ // }
+ //};
+ //
+ //int main() {
+ // Test t;
+ // t.foo();
+ // return 0;
+ //}
+ public void testCppNoDiscardMethod() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkErrorLine(11, ER_ID);
+ }
+
+ //int test() __attribute__((warn_unused_result)) {
+ // return 2;
+ //}
+ //int main() {
+ // test();
+ // return 0;
+ //}
+ public void testCSimpleCall() throws Exception {
+ loadCodeAndRunC(getAboveComment());
+ checkErrorLine(5, ER_ID);
+ }
+
+ //int test() __attribute__((warn_unused_result)) {
+ // return 2;
+ //}
+ //int main() {
+ // return test();
+ //}
+ public void testCInReturn() throws Exception {
+ loadCodeAndRunC(getAboveComment());
+ checkNoErrorsOfKind(ER_ID);
+ }
+
+ //int test() __attribute__((warn_unused_result)) {
+ // return 2;
+ //}
+ //int main() {
+ // return test() ? 0 : 1;
+ //}
+ public void testCInTernaryReturn() throws Exception {
+ loadCodeAndRunC(getAboveComment());
+ checkNoErrorsOfKind(ER_ID);
+ }
+
+ //int test() __attribute__((warn_unused_result)) {
+ // return 2;
+ //}
+ //void process(int v) {}
+ //int main() {
+ // process(test());
+ // return 0;
+ //}
+ public void testCInOtherCall() throws Exception {
+ loadCodeAndRunC(getAboveComment());
+ checkNoErrorsOfKind(ER_ID);
+ }
+
+ //int test() __attribute__((warn_unused_result)) {
+ // return 2;
+ //}
+ //void process(int v) {}
+ //int main() {
+ // if (test()) {
+ // }
+ // return 0;
+ //}
+ public void testCInCondition() throws Exception {
+ loadCodeAndRunC(getAboveComment());
+ checkNoErrorsOfKind(ER_ID);
+ }
+
+ //class Test {
+ //public:
+ // Test() {}
+ // int foo() __attribute__((warn_unused_result)) {
+ // return 2;
+ // }
+ //};
+ //
+ //int main() {
+ // Test t;
+ // t.foo();
+ // return 0;
+ //}
+ public void testCppUnusedNoDiscardMethod() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkErrorLine(11, ER_ID);
+ }
+
+ //[[nodiscard]] int foo() {
+ // return 2;
+ //}
+ //int main() {
+ // ((((foo()))));
+ // return 0;
+ //}
+ public void testInParenNoDiscardMethod() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkErrorLine(5, ER_ID);
+ }
+
+ //[[nodiscard]] int foo() {
+ // return 2;
+ //}
+ //#define MACRO(X) X()
+ //int main() {
+ // MACRO(foo);
+ // return 0;
+ //}
+ public void testInMacroEnabled() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkErrorLine(6, ER_ID);
+ }
+
+ //[[nodiscard]] int foo() {
+ // return 2;
+ //}
+ //#define MACRO(X) X()
+ //int main() {
+ // MACRO(foo);
+ // return 0;
+ //}
+ public void testInMacroDisabled() throws Exception {
+ setPreferenceValue(ER_ID, NoDiscardChecker.PARAM_MACRO_ID, false);
+ loadCodeAndRun(getAboveComment());
+ checkNoErrorsOfKind(ER_ID);
+ }
+
+ //[[nodiscard]] int foo() {
+ // return 2;
+ //}
+ //int main() {
+ // (void) foo();
+ // return 0;
+ //}
+ public void testVoidCast() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkNoErrorsOfKind(ER_ID);
+ }
+
+ //[[nodiscard]] int foo() {
+ // return 2;
+ //}
+ //int main() {
+ // static_cast<void>(foo());
+ // return 0;
+ //}
+ public void testStaticVoidCast() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkNoErrorsOfKind(ER_ID);
+ }
+
+ //[[nodiscard]] int foo() {
+ // return 2;
+ //}
+ //int process() {
+ // return foo(), 2;
+ //}
+ //int main() {
+ // process();
+ // return 0;
+ //}
+ public void testCommaLeftHandSide() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkErrorLine(5, ER_ID);
+ }
+
+ //[[nodiscard]] int foo() {
+ // return 2;
+ //}
+ //int bar() {
+ // return 4;
+ //}
+ //int process() {
+ // return (foo()), bar();
+ //}
+ //int main() {
+ // process();
+ // return 0;
+ //}
+ public void testCommaLeftHandSide2() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkErrorLine(8, ER_ID);
+ }
+
+ //[[nodiscard]] int foo() {
+ // return 2;
+ //}
+ //int bar() {
+ // return 4;
+ //}
+ //int main() {
+ // (foo()), bar();
+ // return 0;
+ //}
+ public void testCommaLeftHandSide3() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkErrorLine(8, ER_ID);
+ }
+
+ //[[nodiscard]] int foo() {
+ // return 2;
+ //}
+ //int process() {
+ // return 2, foo();
+ //}
+ //int main() {
+ // process();
+ // return 0;
+ //}
+ public void testCommaRightHandSide() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkNoErrorsOfKind(ER_ID);
+ }
+
+ //[[nodiscard]] int foo() {
+ // return 2;
+ //}
+ //int main() {
+ // int vv = 0;
+ // vv = 2, foo();
+ // return 0;
+ //}
+ public void testCommaRightHandSide2() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkNoErrorsOfKind(ER_ID);
+ }
+
+ //class Test {
+ //public:
+ // Test(double v) {}
+ // [[nodiscard]] Test(int v) {}
+ //};
+ //int main() {
+ // Test(42);
+ // Test(42.0);
+ // return 0;
+ //}
+ public void testCppNoDiscardCtor() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkErrorLine(7, ER_ID);
+ }
+
+ //class Test {
+ //public:
+ // Test(double v) {}
+ // [[nodiscard]] Test(int v) {}
+ //};
+ //int main() {
+ // static_cast<Test>(42);
+ // static_cast<Test>(42.0);
+ // return 0;
+ //}
+ public void testCppNoDiscardCtorStaticCast() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkErrorLine(7, ER_ID);
+ }
+
+ //class Test {
+ //public:
+ // Test(double v) {}
+ // [[nodiscard]] Test(int v) {}
+ //};
+ //int main() {
+ // reinterpret_cast<Test>(42);
+ // (Test) 42;
+ // return 0;
+ //}
+ public void testCppNoDiscardCtorOtherCast() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkNoErrorsOfKind(ER_ID);
+ }
+
+ //struct Foo {
+ // [[nodiscard]] bool operator()() { return true; }
+ //};
+ //int main() {
+ // Foo foo1;
+ // foo1();
+ //}
+ public void testCppFunctor() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkErrorLine(6, ER_ID);
+ }
+
+ //struct [[nodiscard]] error_info { };
+ //error_info enable_missile_safety_mode();
+ //void launch_missiles();
+ //void test_missiles() {
+ // enable_missile_safety_mode();
+ // launch_missiles();
+ //}
+ public void testClassNoDiscardType() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkErrorLine(5, ER_ID);
+ }
+
+ //struct [[nodiscard]] error_type {};
+ //error_info& foo();
+ //void f1() {
+ // foo();
+ //}
+ public void testClassNoDiscardTypesByRef() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkNoErrorsOfKind(ER_ID);
+ }
+
+ //struct [[nodiscard]] error_type { error_type(int) {} };
+ //template<class T>
+ //typename T::E foo() {return static_cast<typename T::E>(0);}
+ //template<class F>
+ //struct trait { typedef typename F E; }
+ //void f1() {
+ // foo<trait<error_type>>();
+ //}
+ public void testClassNoDiscardTypesTemplate() throws Exception {
+ CPPASTNameBase.sAllowNameComputation = true;
+ loadCodeAndRun(getAboveComment());
+ checkNoErrorsOfKind(ER_ID);
+ }
+
+ //enum [[nodiscard]] error_type { FAILURE };
+ //error_type enable_missile_safety_mode();
+ //void launch_missiles();
+ //void test_missiles() {
+ // enable_missile_safety_mode();
+ // launch_missiles();
+ //}
+ public void testEnumNoDiscardType() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkErrorLine(5, ER_ID);
+ }
+
+ //enum [[nodiscard]] error_type { FAILURE };
+ //error_type& foo();
+ //void f1() {
+ // foo();
+ //}
+ public void testEnumNoDiscardTypesByRef() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkNoErrorsOfKind(ER_ID);
+ }
+}
diff --git a/codan/org.eclipse.cdt.codan.core.tests/src/org/eclipse/cdt/codan/core/internal/checkers/ShallowCopyCheckerTest.java b/codan/org.eclipse.cdt.codan.core.tests/src/org/eclipse/cdt/codan/core/internal/checkers/ShallowCopyCheckerTest.java
new file mode 100644
index 00000000000..d27e677239b
--- /dev/null
+++ b/codan/org.eclipse.cdt.codan.core.tests/src/org/eclipse/cdt/codan/core/internal/checkers/ShallowCopyCheckerTest.java
@@ -0,0 +1,210 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Marco Stornelli
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.codan.core.internal.checkers;
+
+import org.eclipse.cdt.codan.core.param.IProblemPreference;
+import org.eclipse.cdt.codan.core.tests.CheckerTestCase;
+import org.eclipse.cdt.codan.internal.checkers.ShallowCopyChecker;
+
+/**
+ * Test for {@link ShallowCopyChecker} class
+ */
+public class ShallowCopyCheckerTest extends CheckerTestCase {
+
+ public static final String ERR_ID = ShallowCopyChecker.PROBLEM_ID;
+
+ @Override
+ public void setUp() throws Exception {
+ super.setUp();
+ enableProblems(ERR_ID);
+ }
+
+ private void setOnlyNew(boolean val) {
+ IProblemPreference pref = getPreference(ShallowCopyChecker.PROBLEM_ID, ShallowCopyChecker.PARAM_ONLY_NEW);
+ pref.setValue(val);
+ }
+
+ @Override
+ public boolean isCpp() {
+ return true;
+ }
+
+ @Override
+ public boolean isHeader() {
+ return true;
+ }
+
+ //class Foo {
+ //public:
+ //void* p;
+ //};
+ public void testWithPointerOnly() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkErrorLine(1, ERR_ID);
+ }
+
+ //class Foo {
+ //public:
+ //Foo(const Foo& o);
+ //void* p;
+ //};
+ public void testWithCopyConstrOnly() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkErrorLine(1, ERR_ID);
+ }
+
+ //class Foo {
+ //public:
+ //Foo& operator=(const Foo& f);
+ //void* p;
+ //};
+ public void testWithAssignOnly() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkErrorLine(1, ERR_ID);
+ }
+
+ //class Foo {
+ //public:
+ //Foo(const Foo& o);
+ //Foo& operator=(const Foo& f);
+ //void* p;
+ //};
+ public void testWithCopyMethods() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkNoErrorsOfKind(ERR_ID);
+ }
+
+ //class Foo {
+ //public:
+ //Foo();
+ //};
+ public void testWithoutPointers() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkNoErrorsOfKind(ERR_ID);
+ }
+
+ /****************/
+ //class Foo {
+ //public:
+ //Foo(int& f);
+ //int& p;
+ //};
+ public void testWithRefOnly() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkErrorLine(1, ERR_ID);
+ }
+
+ //class Foo {
+ //public:
+ //Foo(const Foo& o);
+ //Foo(int& f);
+ //int& p;
+ //};
+ public void testWithRefCopyConstrOnly() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkErrorLine(1, ERR_ID);
+ }
+
+ //class Foo {
+ //public:
+ //Foo& operator=(const Foo& f);
+ //Foo(int& f);
+ //int& p;
+ //};
+ public void testWithRefAssignOnly() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkErrorLine(1, ERR_ID);
+ }
+
+ //class Foo {
+ //public:
+ //Foo(const Foo& o);
+ //Foo& operator=(const Foo& f);
+ //Foo(int& f);
+ //int& p;
+ //};
+ public void testWithRefCopyMethods() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkNoErrorsOfKind(ERR_ID);
+ }
+
+ //class Foo {
+ //public:
+ //Foo();
+ //int* p;
+ //};
+ //Foo::Foo() {
+ //p = new int;
+ //}
+ public void testOnlyNewWithFieldPtr() throws Exception {
+ setOnlyNew(true);
+ loadCodeAndRun(getAboveComment());
+ checkErrorLine(6, ERR_ID);
+ }
+
+ //class Foo {
+ //public:
+ //Foo();
+ //};
+ //Foo::Foo() {
+ //int* p = new int;
+ //}
+ public void testOnlyNewNoField() throws Exception {
+ setOnlyNew(true);
+ loadCodeAndRun(getAboveComment());
+ checkNoErrorsOfKind(ERR_ID);
+ }
+
+ //class Foo {
+ //public:
+ //Foo();
+ //Foo(const Foo& e);
+ //Foo& operator=(const Foo& e);
+ //int* p;
+ //};
+ //Foo::Foo() {
+ //p = new int;
+ //}
+ public void testOnlyNewWithFieldPtrCopyPresent() throws Exception {
+ setOnlyNew(true);
+ loadCodeAndRun(getAboveComment());
+ checkNoErrorsOfKind(ERR_ID);
+ }
+
+ //class Foo {
+ //public:
+ //Foo();
+ //Foo(const Foo& e);
+ //Foo& operator=(const int& e);
+ //int* p;
+ //};
+ //Foo::Foo() {
+ //p = new int;
+ //}
+ public void testOnlyNewWithOtherCopyAssignment() throws Exception {
+ setOnlyNew(true);
+ loadCodeAndRun(getAboveComment());
+ checkErrorLine(8, ERR_ID);
+ }
+
+ //class Foo {
+ //public:
+ //Foo();
+ //Foo(const Foo& e);
+ //Foo& operator=(const int& e);
+ //int* p;
+ //};
+ public void testWithOtherCopyAssignment() throws Exception {
+ setOnlyNew(false);
+ loadCodeAndRun(getAboveComment());
+ checkErrorLine(1, ERR_ID);
+ }
+}
diff --git a/codan/org.eclipse.cdt.codan.core.tests/src/org/eclipse/cdt/codan/core/internal/checkers/UnusedSymbolInFileScopeCheckerTest.java b/codan/org.eclipse.cdt.codan.core.tests/src/org/eclipse/cdt/codan/core/internal/checkers/UnusedSymbolInFileScopeCheckerTest.java
index 9da91a4b5ae..184d80048ef 100644
--- a/codan/org.eclipse.cdt.codan.core.tests/src/org/eclipse/cdt/codan/core/internal/checkers/UnusedSymbolInFileScopeCheckerTest.java
+++ b/codan/org.eclipse.cdt.codan.core.tests/src/org/eclipse/cdt/codan/core/internal/checkers/UnusedSymbolInFileScopeCheckerTest.java
@@ -384,4 +384,12 @@ public class UnusedSymbolInFileScopeCheckerTest extends CheckerTestCase {
loadCodeAndRunCpp(getAboveComment());
checkNoErrors();
}
+
+ // [[maybe_unused]] static int v1;
+ // [[maybe_unused]] int f1();
+ // [[maybe_unused]] extern int f2();
+ public void testAttributeCpp17Unused() throws Exception {
+ loadCodeAndRunCpp(getAboveComment());
+ checkNoErrors();
+ }
}
diff --git a/codan/org.eclipse.cdt.codan.core.tests/src/org/eclipse/cdt/codan/core/internal/checkers/VariableShadowingCheckerTest.java b/codan/org.eclipse.cdt.codan.core.tests/src/org/eclipse/cdt/codan/core/internal/checkers/VariableShadowingCheckerTest.java
new file mode 100644
index 00000000000..42e64bb74c2
--- /dev/null
+++ b/codan/org.eclipse.cdt.codan.core.tests/src/org/eclipse/cdt/codan/core/internal/checkers/VariableShadowingCheckerTest.java
@@ -0,0 +1,234 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Marco Stornelli
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Marco Stornelli - Initial implementation
+ *******************************************************************************/
+package org.eclipse.cdt.codan.core.internal.checkers;
+
+import org.eclipse.cdt.codan.core.tests.CheckerTestCase;
+import org.eclipse.cdt.codan.internal.checkers.SymbolShadowingChecker;
+
+/**
+ * Test for {@link#VariableShadowingChecker} class
+ */
+public class VariableShadowingCheckerTest extends CheckerTestCase {
+
+ public static final String ERR_ID = SymbolShadowingChecker.ERR_ID;
+
+ @Override
+ public void setUp() throws Exception {
+ super.setUp();
+ enableProblems(ERR_ID);
+ }
+
+ @Override
+ public boolean isCpp() {
+ return true;
+ }
+
+ //int a;
+ //void foo(void) {
+ // int a;
+ //}
+ public void testGlobalFuncLoc() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkErrorLine(3, ERR_ID);
+ }
+
+ //int a;
+ //void foo(void) {
+ // for( int a = 1; a < 2; a++ ) {
+ // }
+ //}
+ public void testGlobalFor() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkErrorLine(3, ERR_ID);
+ }
+
+ //class Fpp {
+ // int a;
+ // void foo() {
+ // int a;
+ // }
+ //};
+ public void testClassVSFuncLoc() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkErrorLine(4, ERR_ID);
+ }
+
+ //class Fpp {
+ // int a;
+ // void foo() {
+ // for( int a = 1; a < 2; a++ ) {
+ // }
+ // }
+ //};
+ public void testClassVSFor() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkErrorLine(4, ERR_ID);
+ }
+
+ //class Fpp {
+ // int a;
+ // void foo() {
+ // }
+ //};
+ //class Bar {
+ // void foo() {
+ // int a;
+ // }
+ //};
+ public void testOtherClassVSFuncLoc() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkNoErrorsOfKind(ERR_ID);
+ }
+
+ //void foo() {
+ // int a;
+ // for( int a = 1; a < 2; a++ ) {
+ // }
+ //}
+ public void testFuncLocVSFor() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkErrorLine(3, ERR_ID);
+ }
+
+ //void bar(int a) {
+ //}
+ //void foo(void) {
+ // for( int a = 1; a < 2; a++ ) {
+ // }
+ //}
+ public void testFuncLocVSForOK() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkNoErrorsOfKind(ERR_ID);
+ }
+
+ //void foo() {
+ // for( int a = 1; a < 2; a++ ) {
+ // }
+ // for( int a = 1; a < 2; a++ ) {
+ // }
+ //}
+ public void test2ForOK() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkNoErrorsOfKind(ERR_ID);
+ }
+
+ //void foo() {
+ // for( int a = 1; a < 2; a++ ) {
+ // for( int a = 1; a < 2; a++ ) {
+ // }
+ // }
+ //}
+ public void testInnerFor() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkErrorLine(3, ERR_ID);
+ }
+
+ //int a;
+ //class Foo {
+ // int a;
+ // void foo() {
+ // int a;
+ // for( int a = 1; a < 2; a++ ) {
+ // }
+ // }
+ //};
+ public void test5Hirarchies() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkErrorLine(6, ERR_ID);
+ }
+
+ //class Foo {
+ // int a;
+ // void foo(int a) {
+ // a = 1;
+ // }
+ //};
+ public void testParameter() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkErrorLine(3, ERR_ID);
+ }
+
+ //class Foo {
+ // void foo(int a) {
+ // a = 1;
+ // }
+ // void bar(int a) {
+ // a = 1;
+ // }
+ //};
+ public void testParameterTwoMethods() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkNoErrorsOfKind(ERR_ID);
+ }
+
+ //class Foo {
+ // int a;
+ // Foo() {
+ // class Local {
+ // void localMethod(int a) {
+ // }
+ // };
+ // }
+ //};
+ public void testParameterLocalClassMethod() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkErrorLine(5, ERR_ID);
+ }
+
+ //class Foo {
+ // int a;
+ // Foo() {
+ // class Local {
+ // void localMethod() {
+ // int a = 1;
+ // }
+ // };
+ // }
+ //};
+ public void testLocalClassAfter() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkErrorLine(6, ERR_ID);
+ }
+
+ //class Foo {
+ // Foo() {
+ // class Local {
+ // void localMethod() {
+ // int a = 1;
+ // }
+ // };
+ // }
+ // int a;
+ //};
+ public void testLocalClassBefore() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkErrorLine(5, ERR_ID);
+ }
+
+ //int foo() {
+ // int c = 0;
+ // switch(c) {
+ // case default: {
+ // int a = c;
+ // a++;
+ // }
+ // }
+ // int a = c + 1;
+ // return a;
+ //};
+ public void testSwitch() throws Exception {
+ loadCodeAndRun(getAboveComment());
+ checkNoErrorsOfKind(ERR_ID);
+ }
+}
diff --git a/codan/org.eclipse.cdt.codan.core.tests/src/org/eclipse/cdt/codan/core/tests/AutomatedIntegrationSuite.java b/codan/org.eclipse.cdt.codan.core.tests/src/org/eclipse/cdt/codan/core/tests/AutomatedIntegrationSuite.java
index 35b3f3237b4..5f516245bc7 100644
--- a/codan/org.eclipse.cdt.codan.core.tests/src/org/eclipse/cdt/codan/core/tests/AutomatedIntegrationSuite.java
+++ b/codan/org.eclipse.cdt.codan.core.tests/src/org/eclipse/cdt/codan/core/tests/AutomatedIntegrationSuite.java
@@ -29,16 +29,20 @@ import org.eclipse.cdt.codan.core.internal.checkers.DecltypeAutoCheckerTest;
import org.eclipse.cdt.codan.core.internal.checkers.FloatCompareCheckerTest;
import org.eclipse.cdt.codan.core.internal.checkers.FormatStringCheckerTest;
import org.eclipse.cdt.codan.core.internal.checkers.GotoStatementCheckerTest;
+import org.eclipse.cdt.codan.core.internal.checkers.MagicNumberCheckerTest;
+import org.eclipse.cdt.codan.core.internal.checkers.NoDiscardCheckerTest;
import org.eclipse.cdt.codan.core.internal.checkers.NonVirtualDestructorCheckerTest;
import org.eclipse.cdt.codan.core.internal.checkers.ProblemBindingCheckerTest;
import org.eclipse.cdt.codan.core.internal.checkers.ReturnCheckerTest;
import org.eclipse.cdt.codan.core.internal.checkers.ReturnStyleCheckerTest;
+import org.eclipse.cdt.codan.core.internal.checkers.ShallowCopyCheckerTest;
import org.eclipse.cdt.codan.core.internal.checkers.StatementHasNoEffectCheckerTest;
import org.eclipse.cdt.codan.core.internal.checkers.SuggestedParenthesisCheckerTest;
import org.eclipse.cdt.codan.core.internal.checkers.SuspiciousSemicolonCheckerTest;
import org.eclipse.cdt.codan.core.internal.checkers.SwitchCaseCheckerTest;
import org.eclipse.cdt.codan.core.internal.checkers.UnusedSymbolInFileScopeCheckerTest;
import org.eclipse.cdt.codan.core.internal.checkers.UsingInHeaderCheckerTest;
+import org.eclipse.cdt.codan.core.internal.checkers.VariableShadowingCheckerTest;
import org.eclipse.cdt.codan.core.internal.checkers.VariablesCheckerTest;
import org.eclipse.cdt.codan.core.internal.checkers.VirtualMethodCallCheckerTest;
import org.eclipse.cdt.codan.internal.checkers.ui.quickfix.AssignmentInConditionQuickFixTest;
@@ -103,6 +107,10 @@ public class AutomatedIntegrationSuite extends TestSuite {
suite.addTestSuite(VariablesCheckerTest.class);
suite.addTestSuite(UsingInHeaderCheckerTest.class);
suite.addTestSuite(FloatCompareCheckerTest.class);
+ suite.addTestSuite(VariableShadowingCheckerTest.class);
+ suite.addTestSuite(ShallowCopyCheckerTest.class);
+ suite.addTestSuite(MagicNumberCheckerTest.class);
+ suite.addTestSuite(NoDiscardCheckerTest.class);
// framework
suite.addTest(CodanFastTestSuite.suite());
// quick fixes
diff --git a/codan/org.eclipse.cdt.codan.core.tests/src/org/eclipse/cdt/codan/core/tests/CheckerTestCase.java b/codan/org.eclipse.cdt.codan.core.tests/src/org/eclipse/cdt/codan/core/tests/CheckerTestCase.java
index 7f89a01f939..ab52c1f11b1 100644
--- a/codan/org.eclipse.cdt.codan.core.tests/src/org/eclipse/cdt/codan/core/tests/CheckerTestCase.java
+++ b/codan/org.eclipse.cdt.codan.core.tests/src/org/eclipse/cdt/codan/core/tests/CheckerTestCase.java
@@ -42,7 +42,7 @@ import org.eclipse.core.runtime.NullProgressMonitor;
*
*/
@SuppressWarnings("nls")
-public class CheckerTestCase extends CodanTestCase {
+public abstract class CheckerTestCase extends CodanTestCase {
protected IMarker[] markers;
public IMarker checkErrorLine(int i) {
diff --git a/codan/org.eclipse.cdt.codan.core.tests/src/org/eclipse/cdt/codan/core/tests/CodanTestCase.java b/codan/org.eclipse.cdt.codan.core.tests/src/org/eclipse/cdt/codan/core/tests/CodanTestCase.java
index b7b5b3a9d00..d6989fe3746 100644
--- a/codan/org.eclipse.cdt.codan.core.tests/src/org/eclipse/cdt/codan/core/tests/CodanTestCase.java
+++ b/codan/org.eclipse.cdt.codan.core.tests/src/org/eclipse/cdt/codan/core/tests/CodanTestCase.java
@@ -27,6 +27,7 @@ import org.eclipse.cdt.core.model.ICElement;
import org.eclipse.cdt.core.model.ICProject;
import org.eclipse.cdt.core.testplugin.CProjectHelper;
import org.eclipse.cdt.core.testplugin.util.BaseTestCase;
+import org.eclipse.cdt.core.testplugin.util.ModelJoiner;
import org.eclipse.cdt.core.testplugin.util.TestSourceReader;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
@@ -44,7 +45,7 @@ import org.eclipse.core.runtime.Plugin;
* TODO: add description
*/
@SuppressWarnings("nls")
-public class CodanTestCase extends BaseTestCase {
+public abstract class CodanTestCase extends BaseTestCase {
ArrayList<File> tempFiles = new ArrayList<>();
protected File tmpDir;
protected ICProject cproject;
diff --git a/codan/org.eclipse.cdt.codan.core/.classpath b/codan/org.eclipse.cdt.codan.core/.classpath
index 4f83b2397ec..e801ebfb468 100644
--- a/codan/org.eclipse.cdt.codan.core/.classpath
+++ b/codan/org.eclipse.cdt.codan.core/.classpath
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/codan/org.eclipse.cdt.codan.core/.settings/.api_filters b/codan/org.eclipse.cdt.codan.core/.settings/.api_filters
new file mode 100644
index 00000000000..f46dbc36f3e
--- /dev/null
+++ b/codan/org.eclipse.cdt.codan.core/.settings/.api_filters
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<component id="org.eclipse.cdt.codan.core" version="2">
+ <resource path="src/org/eclipse/cdt/codan/core/model/AbstractChecker.java" type="org.eclipse.cdt.codan.core.model.AbstractChecker">
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
+ <message_arguments>
+ <message_argument value="IChecker"/>
+ <message_argument value="AbstractChecker"/>
+ </message_arguments>
+ </filter>
+ </resource>
+ <resource path="src/org/eclipse/cdt/codan/core/model/AbstractProblemLocation.java" type="org.eclipse.cdt.codan.core.model.AbstractProblemLocation">
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
+ <message_arguments>
+ <message_argument value="IProblemLocation"/>
+ <message_argument value="AbstractProblemLocation"/>
+ </message_arguments>
+ </filter>
+ </resource>
+ <resource path="src/org/eclipse/cdt/codan/core/param/AbstractProblemPreference.java" type="org.eclipse.cdt.codan.core.param.AbstractProblemPreference">
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
+ <message_arguments>
+ <message_argument value="IProblemPreference"/>
+ <message_argument value="AbstractProblemPreference"/>
+ </message_arguments>
+ </filter>
+ </resource>
+ <resource path="src/org/eclipse/cdt/codan/core/param/ListProblemPreference.java" type="org.eclipse.cdt.codan.core.param.ListProblemPreference">
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
+ <message_arguments>
+ <message_argument value="IProblemPreferenceCompositeDescriptor"/>
+ <message_argument value="ListProblemPreference"/>
+ </message_arguments>
+ </filter>
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
+ <message_arguments>
+ <message_argument value="IProblemPreferenceCompositeValue"/>
+ <message_argument value="ListProblemPreference"/>
+ </message_arguments>
+ </filter>
+ </resource>
+ <resource path="src/org/eclipse/cdt/codan/core/param/MapProblemPreference.java" type="org.eclipse.cdt.codan.core.param.MapProblemPreference">
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
+ <message_arguments>
+ <message_argument value="IProblemPreferenceCompositeDescriptor"/>
+ <message_argument value="MapProblemPreference"/>
+ </message_arguments>
+ </filter>
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
+ <message_arguments>
+ <message_argument value="IProblemPreferenceCompositeValue"/>
+ <message_argument value="MapProblemPreference"/>
+ </message_arguments>
+ </filter>
+ </resource>
+</component>
diff --git a/codan/org.eclipse.cdt.codan.core/.settings/org.eclipse.core.resources.prefs b/codan/org.eclipse.cdt.codan.core/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/codan/org.eclipse.cdt.codan.core/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/codan/org.eclipse.cdt.codan.core/.settings/org.eclipse.jdt.core.prefs b/codan/org.eclipse.cdt.codan.core/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/codan/org.eclipse.cdt.codan.core/.settings/org.eclipse.jdt.core.prefs
+++ b/codan/org.eclipse.cdt.codan.core/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/codan/org.eclipse.cdt.codan.core/.settings/org.eclipse.jdt.ui.prefs b/codan/org.eclipse.cdt.codan.core/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/codan/org.eclipse.cdt.codan.core/.settings/org.eclipse.jdt.ui.prefs
+++ b/codan/org.eclipse.cdt.codan.core/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/codan/org.eclipse.cdt.codan.core/META-INF/MANIFEST.MF b/codan/org.eclipse.cdt.codan.core/META-INF/MANIFEST.MF
index fc5928b29f4..f36b9799e76 100644
--- a/codan/org.eclipse.cdt.codan.core/META-INF/MANIFEST.MF
+++ b/codan/org.eclipse.cdt.codan.core/META-INF/MANIFEST.MF
@@ -2,13 +2,13 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name
Bundle-SymbolicName: org.eclipse.cdt.codan.core;singleton:=true
-Bundle-Version: 4.0.200.qualifier
+Bundle-Version: 4.1.200.qualifier
Bundle-Activator: org.eclipse.cdt.codan.core.CodanCorePlugin
Bundle-Vendor: %Bundle-Vendor
Require-Bundle: org.eclipse.core.runtime,
org.eclipse.core.resources
Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Export-Package: org.eclipse.cdt.codan.core,
org.eclipse.cdt.codan.core.model,
org.eclipse.cdt.codan.core.model.cfg;x-friends:="org.eclipse.cdt.codan.core.cxx,org.eclipse.cdt.codan.checkers",
@@ -19,7 +19,7 @@ Export-Package: org.eclipse.cdt.codan.core,
org.eclipse.cdt.codan.core.test,
org.eclipse.cdt.codan.ui,
org.eclipse.cdt.codan.ui.cxx",
- org.eclipse.cdt.codan.internal.core.cfg;x-friends:="org.eclipse.cdt.codan.core.cxx",
+ org.eclipse.cdt.codan.internal.core.cfg;x-friends:="org.eclipse.cdt.codan.core.cxx,org.eclipse.cdt.codan.checkers",
org.eclipse.cdt.codan.internal.core.model;
x-friends:="org.eclipse.cdt.codan.core.cxx,
org.eclipse.cdt.codan.core.test,
diff --git a/codan/org.eclipse.cdt.codan.core/about.html b/codan/org.eclipse.cdt.codan.core/about.html
index 164f781a8fd..b3134865230 100644
--- a/codan/org.eclipse.cdt.codan.core/about.html
+++ b/codan/org.eclipse.cdt.codan.core/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/codan/org.eclipse.cdt.codan.examples/.classpath b/codan/org.eclipse.cdt.codan.examples/.classpath
index 4f83b2397ec..e801ebfb468 100644
--- a/codan/org.eclipse.cdt.codan.examples/.classpath
+++ b/codan/org.eclipse.cdt.codan.examples/.classpath
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/codan/org.eclipse.cdt.codan.examples/.settings/org.eclipse.core.resources.prefs b/codan/org.eclipse.cdt.codan.examples/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/codan/org.eclipse.cdt.codan.examples/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/codan/org.eclipse.cdt.codan.examples/.settings/org.eclipse.jdt.core.prefs b/codan/org.eclipse.cdt.codan.examples/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/codan/org.eclipse.cdt.codan.examples/.settings/org.eclipse.jdt.core.prefs
+++ b/codan/org.eclipse.cdt.codan.examples/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/codan/org.eclipse.cdt.codan.examples/.settings/org.eclipse.jdt.ui.prefs b/codan/org.eclipse.cdt.codan.examples/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/codan/org.eclipse.cdt.codan.examples/.settings/org.eclipse.jdt.ui.prefs
+++ b/codan/org.eclipse.cdt.codan.examples/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/codan/org.eclipse.cdt.codan.examples/META-INF/MANIFEST.MF b/codan/org.eclipse.cdt.codan.examples/META-INF/MANIFEST.MF
index 0ef154fe08b..07921911dd7 100644
--- a/codan/org.eclipse.cdt.codan.examples/META-INF/MANIFEST.MF
+++ b/codan/org.eclipse.cdt.codan.examples/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name
Bundle-SymbolicName: org.eclipse.cdt.codan.examples;singleton:=true
-Bundle-Version: 3.2.0.qualifier
+Bundle-Version: 3.2.100.qualifier
Bundle-Activator: org.eclipse.cdt.codan.examples.Activator
Bundle-Vendor: %Bundle-Vendor
Require-Bundle: org.eclipse.core.runtime,
@@ -11,7 +11,7 @@ Require-Bundle: org.eclipse.core.runtime,
org.eclipse.cdt.core,
org.eclipse.core.resources,
org.eclipse.cdt.codan.ui;bundle-version="1.0.0"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-ActivationPolicy: lazy
Export-Package: org.eclipse.cdt.codan.examples,
org.eclipse.cdt.codan.examples.checkers,
diff --git a/codan/org.eclipse.cdt.codan.examples/about.html b/codan/org.eclipse.cdt.codan.examples/about.html
index 164f781a8fd..b3134865230 100644
--- a/codan/org.eclipse.cdt.codan.examples/about.html
+++ b/codan/org.eclipse.cdt.codan.examples/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/codan/org.eclipse.cdt.codan.examples/src/org/eclipse/cdt/codan/examples/checkers/CToolChecker.java b/codan/org.eclipse.cdt.codan.examples/src/org/eclipse/cdt/codan/examples/checkers/CToolChecker.java
index ed4d5687901..221a04248e5 100644
--- a/codan/org.eclipse.cdt.codan.examples/src/org/eclipse/cdt/codan/examples/checkers/CToolChecker.java
+++ b/codan/org.eclipse.cdt.codan.examples/src/org/eclipse/cdt/codan/examples/checkers/CToolChecker.java
@@ -41,7 +41,7 @@ import org.eclipse.core.runtime.Path;
*
*/
public class CToolChecker extends AbstractCElementChecker {
- public final static String ID = "org.eclipse.cdt.codan.examples.checkers.CToolChecker.error";
+ public final static String ID = "org.eclipse.cdt.codan.examples.checkers.CToolChecker.error"; //$NON-NLS-1$
public static final String MAKE_PLUGIN_ID = "org.eclipse.cdt.make.core"; //$NON-NLS-1$
final ExternalToolInvoker externalToolInvoker = new ExternalToolInvoker();
@@ -56,16 +56,16 @@ public class CToolChecker extends AbstractCElementChecker {
public void processUnit(ITranslationUnit unit) {
IScannerInfo scannerInfo = unit.getScannerInfo(true);
List<String> res = getCompilerOptionsList(scannerInfo);
- res.add("-c");
- res.add("-o/dev/null");
- res.add("-O2");
- res.add("-Wall");
- res.add("-Werror");
+ res.add("-c"); //$NON-NLS-1$
+ res.add("-o/dev/null"); //$NON-NLS-1$
+ res.add("-O2"); //$NON-NLS-1$
+ res.add("-Wall"); //$NON-NLS-1$
+ res.add("-Werror"); //$NON-NLS-1$
res.add(unit.getFile().getLocation().toPortableString());
String args[] = res.toArray(new String[res.size()]);
try {
externalToolInvoker.launchOnBuildConsole(unit.getResource().getProject(),
- new IConsoleParser[] { getConsoleParser(unit) }, "check", getToolPath(), args, new String[] {},
+ new IConsoleParser[] { getConsoleParser(unit) }, "check", getToolPath(), args, new String[] {}, //$NON-NLS-1$
getWorkingDirectory(), new NullProgressMonitor());
} catch (CoreException | InvocationFailure e) {
Activator.log(e);
@@ -76,24 +76,24 @@ public class CToolChecker extends AbstractCElementChecker {
final Map<String, String> symbols = scannerInfo.getDefinedSymbols();
List<String> res = new ArrayList<>();
for (String macro : symbols.keySet()) {
- if (macro.startsWith("_")) {
+ if (macro.startsWith("_")) { //$NON-NLS-1$
continue; // likely embedded macro
}
String value = symbols.get(macro);
if (value.isEmpty()) {
- res.add("-D" + macro);
+ res.add("-D" + macro); //$NON-NLS-1$
} else {
- res.add("-D" + macro + "=" + value);
+ res.add("-D" + macro + "=" + value); //$NON-NLS-1$ //$NON-NLS-2$
}
}
for (String inc : scannerInfo.getIncludePaths()) {
- res.add("-I" + inc);
+ res.add("-I" + inc); //$NON-NLS-1$
}
return res;
}
protected Path getToolPath() {
- return new Path("gcc");
+ return new Path("gcc"); //$NON-NLS-1$
}
protected IConsoleParser getConsoleParser(ITranslationUnit unit) {
diff --git a/codan/org.eclipse.cdt.codan.examples/src/org/eclipse/cdt/codan/examples/checkers/GrepChecker.java b/codan/org.eclipse.cdt.codan.examples/src/org/eclipse/cdt/codan/examples/checkers/GrepChecker.java
index 5f7c0fa3e97..c84273206d1 100644
--- a/codan/org.eclipse.cdt.codan.examples/src/org/eclipse/cdt/codan/examples/checkers/GrepChecker.java
+++ b/codan/org.eclipse.cdt.codan.examples/src/org/eclipse/cdt/codan/examples/checkers/GrepChecker.java
@@ -35,8 +35,8 @@ import org.eclipse.core.runtime.CoreException;
* This checker is parametrized by the search strings
*/
public class GrepChecker extends AbstractCheckerWithProblemPreferences {
- public final static String ID = "org.eclipse.cdt.codan.examples.checkers.GrepCheckerProblemError";
- private static final String PARAM_STRING_LIST = "searchlist";
+ public final static String ID = "org.eclipse.cdt.codan.examples.checkers.GrepCheckerProblemError"; //$NON-NLS-1$
+ private static final String PARAM_STRING_LIST = "searchlist"; //$NON-NLS-1$
@Override
public synchronized boolean processResource(IResource resource) {
diff --git a/codan/org.eclipse.cdt.codan.examples/src/org/eclipse/cdt/codan/examples/uicontrib/FlexlintHelpLink.java b/codan/org.eclipse.cdt.codan.examples/src/org/eclipse/cdt/codan/examples/uicontrib/FlexlintHelpLink.java
index 267fde1f431..5692277cd9d 100644
--- a/codan/org.eclipse.cdt.codan.examples/src/org/eclipse/cdt/codan/examples/uicontrib/FlexlintHelpLink.java
+++ b/codan/org.eclipse.cdt.codan.examples/src/org/eclipse/cdt/codan/examples/uicontrib/FlexlintHelpLink.java
@@ -17,6 +17,7 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.eclipse.cdt.codan.ui.AbstractCodanProblemDetailsProvider;
+import org.eclipse.osgi.util.NLS;
/**
* Example of codan problem details provider for flexlint integration
@@ -45,7 +46,8 @@ public class FlexlintHelpLink extends AbstractCodanProblemDetailsProvider {
@Override
public String getStyledProblemDescription() {
String helpId = parseHelpId(getProblemMessage());
- String url = "http://www.gimpel-online.com/MsgRef.html#" + helpId;
- return "<a href=\"" + url + "\">" + url + "</a>";
+ return NLS.bind(
+ "<a href=\"http://www.gimpel-online.com/MsgRef.html#{0}\">http://www.gimpel-online.com/MsgRef.html#{0}</a>",
+ helpId);
}
}
diff --git a/codan/org.eclipse.cdt.codan.examples/src/org/eclipse/cdt/codan/examples/uicontrib/GrepCheckerExamplePreferenceChangeListener.java b/codan/org.eclipse.cdt.codan.examples/src/org/eclipse/cdt/codan/examples/uicontrib/GrepCheckerExamplePreferenceChangeListener.java
index a22e0c0c85f..a0a6560c2ea 100644
--- a/codan/org.eclipse.cdt.codan.examples/src/org/eclipse/cdt/codan/examples/uicontrib/GrepCheckerExamplePreferenceChangeListener.java
+++ b/codan/org.eclipse.cdt.codan.examples/src/org/eclipse/cdt/codan/examples/uicontrib/GrepCheckerExamplePreferenceChangeListener.java
@@ -68,11 +68,11 @@ public class GrepCheckerExamplePreferenceChangeListener implements INodeChangeLi
if (GrepChecker.ID.equals(event.getKey())) {
// severity or enablement has changed
String val = (String) event.getNewValue();
- String fors = (" for " + ((project == null) ? "workspace" : project.getName()));
- if (val != null && !val.startsWith("-")) {
- trace("grep checker enabled :)" + fors);
+ String fors = (" for " + ((project == null) ? "workspace" : project.getName())); //$NON-NLS-1$ //$NON-NLS-2$
+ if (val != null && !val.startsWith("-")) { //$NON-NLS-1$
+ trace("grep checker enabled :)" + fors); //$NON-NLS-1$
} else {
- trace("grep checker disabled :(" + fors);
+ trace("grep checker disabled :(" + fors); //$NON-NLS-1$
}
}
@@ -86,12 +86,12 @@ public class GrepCheckerExamplePreferenceChangeListener implements INodeChangeLi
@Override
public void added(NodeChangeEvent event) {
- trace("node added " + event);
+ trace("node added " + event); //$NON-NLS-1$
}
@Override
public void removed(NodeChangeEvent event) {
- trace("node removed " + event);
+ trace("node removed " + event); //$NON-NLS-1$
}
/**
diff --git a/codan/org.eclipse.cdt.codan.examples/src/org/eclipse/cdt/codan/examples/uicontrib/GrepCheckerHelpLink.java b/codan/org.eclipse.cdt.codan.examples/src/org/eclipse/cdt/codan/examples/uicontrib/GrepCheckerHelpLink.java
index db46b87aaaf..325c5917c15 100644
--- a/codan/org.eclipse.cdt.codan.examples/src/org/eclipse/cdt/codan/examples/uicontrib/GrepCheckerHelpLink.java
+++ b/codan/org.eclipse.cdt.codan.examples/src/org/eclipse/cdt/codan/examples/uicontrib/GrepCheckerHelpLink.java
@@ -15,6 +15,7 @@ package org.eclipse.cdt.codan.examples.uicontrib;
import org.eclipse.cdt.codan.internal.core.model.CodanProblemMarker;
import org.eclipse.cdt.codan.ui.AbstractCodanProblemDetailsProvider;
+import org.eclipse.osgi.util.NLS;
/**
* Example of codan problem details provider for string search integration
@@ -22,13 +23,12 @@ import org.eclipse.cdt.codan.ui.AbstractCodanProblemDetailsProvider;
public class GrepCheckerHelpLink extends AbstractCodanProblemDetailsProvider {
@Override
public boolean isApplicable(String id) {
- return id.startsWith("org.eclipse.cdt.codan.examples.checkers.GrepCheckerProblem");
+ return id.startsWith("org.eclipse.cdt.codan.examples.checkers.GrepCheckerProblem"); //$NON-NLS-1$
}
@Override
public String getStyledProblemDescription() {
String arg = CodanProblemMarker.getProblemArgument(marker, 0);
- String url = "http://www.google.ca/search?q=" + arg;
- return "Google " + "<a href=\"" + url + "\">" + arg + "</a>";
+ return NLS.bind("Google <a href=\"http://www.google.ca/search?q={0}\">{0}</a>", arg);
}
}
diff --git a/codan/org.eclipse.cdt.codan.ui.cfgview/.classpath b/codan/org.eclipse.cdt.codan.ui.cfgview/.classpath
index eca7bdba8f0..e801ebfb468 100644
--- a/codan/org.eclipse.cdt.codan.ui.cfgview/.classpath
+++ b/codan/org.eclipse.cdt.codan.ui.cfgview/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/codan/org.eclipse.cdt.codan.ui.cfgview/.settings/org.eclipse.core.resources.prefs b/codan/org.eclipse.cdt.codan.ui.cfgview/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/codan/org.eclipse.cdt.codan.ui.cfgview/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/codan/org.eclipse.cdt.codan.ui.cfgview/.settings/org.eclipse.jdt.core.prefs b/codan/org.eclipse.cdt.codan.ui.cfgview/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/codan/org.eclipse.cdt.codan.ui.cfgview/.settings/org.eclipse.jdt.core.prefs
+++ b/codan/org.eclipse.cdt.codan.ui.cfgview/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/codan/org.eclipse.cdt.codan.ui.cfgview/.settings/org.eclipse.jdt.ui.prefs b/codan/org.eclipse.cdt.codan.ui.cfgview/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/codan/org.eclipse.cdt.codan.ui.cfgview/.settings/org.eclipse.jdt.ui.prefs
+++ b/codan/org.eclipse.cdt.codan.ui.cfgview/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/codan/org.eclipse.cdt.codan.ui.cfgview/META-INF/MANIFEST.MF b/codan/org.eclipse.cdt.codan.ui.cfgview/META-INF/MANIFEST.MF
index 57959189d41..7f45cc2eca3 100644
--- a/codan/org.eclipse.cdt.codan.ui.cfgview/META-INF/MANIFEST.MF
+++ b/codan/org.eclipse.cdt.codan.ui.cfgview/META-INF/MANIFEST.MF
@@ -1,10 +1,10 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
-Bundle-Name: Control Flow Graph
+Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.codan.ui.cfgview;singleton:=true
-Bundle-Version: 3.2.0.qualifier
+Bundle-Version: 3.2.100.qualifier
Bundle-Activator: org.eclipse.cdt.codan.ui.cfgview.ControlFlowGraphPlugin
-Bundle-Vendor: Eclipse CDT
+Bundle-Vendor: %providerName
Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime,
org.eclipse.cdt.codan.core;bundle-version="1.0.0",
@@ -13,8 +13,9 @@ Require-Bundle: org.eclipse.ui,
org.eclipse.cdt.ui;bundle-version="5.2.0",
org.eclipse.core.resources;bundle-version="3.6.0",
org.eclipse.ui.editors;bundle-version="3.6.0"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-ActivationPolicy: lazy
Export-Package: org.eclipse.cdt.codan.ui.cfgview;x-internal:=true,
org.eclipse.cdt.codan.ui.cfgview.views;x-internal:=true
Automatic-Module-Name: org.eclipse.cdt.codan.ui.cfgview
+Bundle-Localization: plugin
diff --git a/codan/org.eclipse.cdt.codan.ui.cfgview/about.html b/codan/org.eclipse.cdt.codan.ui.cfgview/about.html
index 164f781a8fd..b3134865230 100644
--- a/codan/org.eclipse.cdt.codan.ui.cfgview/about.html
+++ b/codan/org.eclipse.cdt.codan.ui.cfgview/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/codan/org.eclipse.cdt.codan.ui.cfgview/build.properties b/codan/org.eclipse.cdt.codan.ui.cfgview/build.properties
index c5f6323d811..9a982cb723a 100644
--- a/codan/org.eclipse.cdt.codan.ui.cfgview/build.properties
+++ b/codan/org.eclipse.cdt.codan.ui.cfgview/build.properties
@@ -17,6 +17,7 @@ output.. = bin/
bin.includes = META-INF/,\
.,\
plugin.xml,\
+ plugin.properties,\
about.html,\
icons/
src.includes = about.html
diff --git a/codan/org.eclipse.cdt.codan.ui.cfgview/plugin.properties b/codan/org.eclipse.cdt.codan.ui.cfgview/plugin.properties
new file mode 100644
index 00000000000..1177cc15162
--- /dev/null
+++ b/codan/org.eclipse.cdt.codan.ui.cfgview/plugin.properties
@@ -0,0 +1,14 @@
+##################################################################################
+# Copyright (c) 2020 Torbjörn Svensson and others. All rights reserved.
+# This program and the accompanying materials are made available under the terms
+# of the Eclipse Public License 2.0 which accompanies this distribution, and is
+# available at https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Torbjörn Svensson - initial API and implementation
+##################################################################################
+
+pluginName = Control Flow Graph
+providerName = Eclipse CDT
diff --git a/codan/org.eclipse.cdt.codan.ui.cfgview/src/org/eclipse/cdt/codan/ui/cfgview/views/ControlFlowGraphView.java b/codan/org.eclipse.cdt.codan.ui.cfgview/src/org/eclipse/cdt/codan/ui/cfgview/views/ControlFlowGraphView.java
index 108e4f05849..e10332c9048 100644
--- a/codan/org.eclipse.cdt.codan.ui.cfgview/src/org/eclipse/cdt/codan/ui/cfgview/views/ControlFlowGraphView.java
+++ b/codan/org.eclipse.cdt.codan.ui.cfgview/src/org/eclipse/cdt/codan/ui/cfgview/views/ControlFlowGraphView.java
@@ -93,7 +93,7 @@ public class ControlFlowGraphView extends ViewPart {
/**
* The ID of the view as specified by the extension.
*/
- public static final String ID = "org.eclipse.cdt.codan.ui.cfgview.views.ControlFlowGraphView";
+ public static final String ID = "org.eclipse.cdt.codan.ui.cfgview.views.ControlFlowGraphView"; //$NON-NLS-1$
private TreeViewer viewer;
private DrillDownAdapter drillDownAdapter;
private Action actionSync;
@@ -188,7 +188,7 @@ public class ControlFlowGraphView extends ViewPart {
public String getText(Object obj) {
if (obj == null)
return null;
- String strdata = "";
+ String strdata = ""; //$NON-NLS-1$
if (obj instanceof ICfgData) {
strdata = ((AbstractBasicBlock) obj).toStringData();
}
@@ -205,25 +205,25 @@ public class ControlFlowGraphView extends ViewPart {
* @return
*/
protected String blockHexLabel(Object obj) {
- return "0x" + Integer.toHexString(System.identityHashCode(obj));
+ return "0x" + Integer.toHexString(System.identityHashCode(obj)); //$NON-NLS-1$
}
@Override
public Image getImage(Object obj) {
- String imageKey = "task.png";
+ String imageKey = "task.png"; //$NON-NLS-1$
if (obj instanceof IDecisionNode || obj instanceof IControlFlowGraph)
- imageKey = "decision.png";
+ imageKey = "decision.png"; //$NON-NLS-1$
else if (obj instanceof IExitNode)
- imageKey = "exit.png";
+ imageKey = "exit.png"; //$NON-NLS-1$
else if (obj instanceof IStartNode)
- imageKey = "start.png";
+ imageKey = "start.png"; //$NON-NLS-1$
else if (obj instanceof IJumpNode)
- imageKey = "jump.png";
+ imageKey = "jump.png"; //$NON-NLS-1$
else if (obj instanceof IBranchNode)
- imageKey = "labeled.png";
+ imageKey = "labeled.png"; //$NON-NLS-1$
else if (obj instanceof IConnectorNode)
- imageKey = "connector.png";
- return ControlFlowGraphPlugin.getDefault().getImage("icons/" + imageKey);
+ imageKey = "connector.png"; //$NON-NLS-1$
+ return ControlFlowGraphPlugin.getDefault().getImage("icons/" + imageKey); //$NON-NLS-1$
}
}
@@ -251,7 +251,7 @@ public class ControlFlowGraphView extends ViewPart {
}
private void hookContextMenu() {
- MenuManager menuMgr = new MenuManager("#PopupMenu");
+ MenuManager menuMgr = new MenuManager("#PopupMenu"); //$NON-NLS-1$
menuMgr.setRemoveAllWhenShown(true);
menuMgr.addMenuListener(manager -> ControlFlowGraphView.this.fillContextMenu(manager));
Menu menu = menuMgr.createContextMenu(viewer.getControl());
@@ -305,7 +305,7 @@ public class ControlFlowGraphView extends ViewPart {
};
actionSync.setText("Synchronize");
actionSync.setToolTipText("Synchronize");
- actionSync.setImageDescriptor(ControlFlowGraphPlugin.getDefault().getImageDescriptor("icons/refresh_view.gif"));
+ actionSync.setImageDescriptor(ControlFlowGraphPlugin.getDefault().getImageDescriptor("icons/refresh_view.gif")); //$NON-NLS-1$
}
protected void processAst(IASTTranslationUnit ast) {
diff --git a/codan/org.eclipse.cdt.codan.ui.cxx/.classpath b/codan/org.eclipse.cdt.codan.ui.cxx/.classpath
index eca7bdba8f0..e801ebfb468 100644
--- a/codan/org.eclipse.cdt.codan.ui.cxx/.classpath
+++ b/codan/org.eclipse.cdt.codan.ui.cxx/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/codan/org.eclipse.cdt.codan.ui.cxx/.settings/org.eclipse.core.resources.prefs b/codan/org.eclipse.cdt.codan.ui.cxx/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/codan/org.eclipse.cdt.codan.ui.cxx/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/codan/org.eclipse.cdt.codan.ui.cxx/.settings/org.eclipse.jdt.core.prefs b/codan/org.eclipse.cdt.codan.ui.cxx/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/codan/org.eclipse.cdt.codan.ui.cxx/.settings/org.eclipse.jdt.core.prefs
+++ b/codan/org.eclipse.cdt.codan.ui.cxx/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/codan/org.eclipse.cdt.codan.ui.cxx/.settings/org.eclipse.jdt.ui.prefs b/codan/org.eclipse.cdt.codan.ui.cxx/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/codan/org.eclipse.cdt.codan.ui.cxx/.settings/org.eclipse.jdt.ui.prefs
+++ b/codan/org.eclipse.cdt.codan.ui.cxx/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/codan/org.eclipse.cdt.codan.ui.cxx/META-INF/MANIFEST.MF b/codan/org.eclipse.cdt.codan.ui.cxx/META-INF/MANIFEST.MF
index 213ec4dc694..696a753368d 100644
--- a/codan/org.eclipse.cdt.codan.ui.cxx/META-INF/MANIFEST.MF
+++ b/codan/org.eclipse.cdt.codan.ui.cxx/META-INF/MANIFEST.MF
@@ -2,8 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name
Bundle-SymbolicName: org.eclipse.cdt.codan.ui.cxx;singleton:=true
-Bundle-Version: 3.5.100.qualifier
-Bundle-Activator: org.eclipse.cdt.codan.internal.ui.cxx.Activator
+Bundle-Version: 3.6.100.qualifier
Bundle-Vendor: %Bundle-Vendor
Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime,
@@ -16,7 +15,7 @@ Require-Bundle: org.eclipse.ui,
org.eclipse.cdt.codan.ui,
org.eclipse.jface.text,
org.eclipse.ui.ide
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-ActivationPolicy: lazy
Export-Package: org.eclipse.cdt.codan.internal.ui.cxx;x-internal:=true,
org.eclipse.cdt.codan.ui
diff --git a/codan/org.eclipse.cdt.codan.ui.cxx/about.html b/codan/org.eclipse.cdt.codan.ui.cxx/about.html
index 164f781a8fd..b3134865230 100644
--- a/codan/org.eclipse.cdt.codan.ui.cxx/about.html
+++ b/codan/org.eclipse.cdt.codan.ui.cxx/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/codan/org.eclipse.cdt.codan.ui.cxx/src/org/eclipse/cdt/codan/internal/ui/cxx/Activator.java b/codan/org.eclipse.cdt.codan.ui.cxx/src/org/eclipse/cdt/codan/internal/ui/cxx/Activator.java
deleted file mode 100644
index 6597696f1f1..00000000000
--- a/codan/org.eclipse.cdt.codan.ui.cxx/src/org/eclipse/cdt/codan/internal/ui/cxx/Activator.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010, 2012 Alena Laskavaia and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Alena Laskavaia - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.codan.internal.ui.cxx;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-import org.osgi.framework.BundleContext;
-
-/**
- * The activator class controls the plug-in life cycle
- */
-public class Activator extends AbstractUIPlugin {
- // The plug-in ID
- public static final String PLUGIN_ID = "org.eclipse.cdt.codan.internal.ui.cxx"; //$NON-NLS-1$
- // The shared instance
- private static Activator plugin;
-
- /**
- * The constructor
- */
- public Activator() {
- }
-
- @Override
- public void start(BundleContext context) throws Exception {
- super.start(context);
- plugin = this;
- }
-
- @Override
- public void stop(BundleContext context) throws Exception {
- plugin = null;
- super.stop(context);
- }
-
- /**
- * Returns the shared instance
- *
- * @return the shared instance
- */
- public static Activator getDefault() {
- return plugin;
- }
-
- /**
- * Logs the specified status with this plug-in's log.
- *
- * @param status the status to log
- */
- public static void log(IStatus status) {
- getDefault().getLog().log(status);
- }
-
- /**
- * Logs an internal error with the specified throwable
- *
- * @param e the exception to be logged
- */
- public static void log(Throwable e) {
- log(new Status(IStatus.ERROR, PLUGIN_ID, 1, Messages.Activatior_Error, e));
- }
-
- /**
- * Logs an internal error with the specified message.
- *
- * @param message
- * the error message to log
- */
- public static void log(String message) {
- log(new Status(IStatus.ERROR, PLUGIN_ID, 1, message, null));
- }
-}
diff --git a/codan/org.eclipse.cdt.codan.ui.cxx/src/org/eclipse/cdt/codan/ui/AbstractAstRewriteQuickFix.java b/codan/org.eclipse.cdt.codan.ui.cxx/src/org/eclipse/cdt/codan/ui/AbstractAstRewriteQuickFix.java
index 5711e00f035..2ec41a21fee 100644
--- a/codan/org.eclipse.cdt.codan.ui.cxx/src/org/eclipse/cdt/codan/ui/AbstractAstRewriteQuickFix.java
+++ b/codan/org.eclipse.cdt.codan.ui.cxx/src/org/eclipse/cdt/codan/ui/AbstractAstRewriteQuickFix.java
@@ -13,13 +13,13 @@
*******************************************************************************/
package org.eclipse.cdt.codan.ui;
-import org.eclipse.cdt.codan.internal.ui.cxx.Activator;
import org.eclipse.cdt.core.dom.ast.IASTName;
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.index.IIndex;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Platform;
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.FindReplaceDocumentAdapter;
import org.eclipse.jface.text.IDocument;
@@ -42,7 +42,7 @@ public abstract class AbstractAstRewriteQuickFix extends AbstractCodanCMarkerRes
try {
index = getIndexFromMarker(marker);
} catch (CoreException e) {
- Activator.log(e);
+ Platform.getLog(getClass()).log(e.getStatus());
return;
}
// lock the index for read access
@@ -57,7 +57,7 @@ public abstract class AbstractAstRewriteQuickFix extends AbstractCodanCMarkerRes
index.releaseReadLock();
}
} catch (Exception e) {
- Activator.log(e);
+ Platform.getLog(getClass()).error(e.getMessage(), e);
}
}
diff --git a/codan/org.eclipse.cdt.codan.ui.cxx/src/org/eclipse/cdt/codan/ui/AbstractCodanCMarkerResolution.java b/codan/org.eclipse.cdt.codan.ui.cxx/src/org/eclipse/cdt/codan/ui/AbstractCodanCMarkerResolution.java
index a4380223c53..4a6c5b4f2ba 100644
--- a/codan/org.eclipse.cdt.codan.ui.cxx/src/org/eclipse/cdt/codan/ui/AbstractCodanCMarkerResolution.java
+++ b/codan/org.eclipse.cdt.codan.ui.cxx/src/org/eclipse/cdt/codan/ui/AbstractCodanCMarkerResolution.java
@@ -35,6 +35,7 @@ import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.Adapters;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.jface.text.BadLocationException;
@@ -177,12 +178,8 @@ public abstract class AbstractCodanCMarkerResolution implements ICodanMarkerReso
* @return the document of that part
*/
protected IDocument openDocument(IEditorPart editorPart) {
- if (editorPart instanceof ITextEditor) {
- ITextEditor editor = (ITextEditor) editorPart;
- IDocument doc = editor.getDocumentProvider().getDocument(editor.getEditorInput());
- return doc;
- }
- return null;
+ ITextEditor textEditor = Adapters.adapt(editorPart, ITextEditor.class);
+ return textEditor == null ? null : textEditor.getDocumentProvider().getDocument(textEditor.getEditorInput());
}
/**
diff --git a/codan/org.eclipse.cdt.codan.ui/.classpath b/codan/org.eclipse.cdt.codan.ui/.classpath
index eca7bdba8f0..e801ebfb468 100644
--- a/codan/org.eclipse.cdt.codan.ui/.classpath
+++ b/codan/org.eclipse.cdt.codan.ui/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/codan/org.eclipse.cdt.codan.ui/.settings/org.eclipse.core.resources.prefs b/codan/org.eclipse.cdt.codan.ui/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/codan/org.eclipse.cdt.codan.ui/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/codan/org.eclipse.cdt.codan.ui/.settings/org.eclipse.jdt.core.prefs b/codan/org.eclipse.cdt.codan.ui/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/codan/org.eclipse.cdt.codan.ui/.settings/org.eclipse.jdt.core.prefs
+++ b/codan/org.eclipse.cdt.codan.ui/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/codan/org.eclipse.cdt.codan.ui/.settings/org.eclipse.jdt.ui.prefs b/codan/org.eclipse.cdt.codan.ui/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/codan/org.eclipse.cdt.codan.ui/.settings/org.eclipse.jdt.ui.prefs
+++ b/codan/org.eclipse.cdt.codan.ui/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/codan/org.eclipse.cdt.codan.ui/META-INF/MANIFEST.MF b/codan/org.eclipse.cdt.codan.ui/META-INF/MANIFEST.MF
index 4e111794517..bc48bf6dafb 100644
--- a/codan/org.eclipse.cdt.codan.ui/META-INF/MANIFEST.MF
+++ b/codan/org.eclipse.cdt.codan.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name
Bundle-SymbolicName: org.eclipse.cdt.codan.ui; singleton:=true
-Bundle-Version: 3.3.400.qualifier
+Bundle-Version: 3.4.200.qualifier
Bundle-Activator: org.eclipse.cdt.codan.internal.ui.CodanUIActivator
Bundle-Vendor: %Bundle-Vendor
Require-Bundle: org.eclipse.cdt.codan.core,
@@ -17,7 +17,7 @@ Require-Bundle: org.eclipse.cdt.codan.core,
org.eclipse.ui.editors,
org.eclipse.ui.ide,
org.eclipse.ui.workbench.texteditor
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-ActivationPolicy: lazy
Export-Package: org.eclipse.cdt.codan.internal.ui;x-friends:="org.eclipse.cdt.codan.ui.cxx",
org.eclipse.cdt.codan.internal.ui.actions;x-friends:="org.eclipse.cdt.codan.ui.cxx",
diff --git a/codan/org.eclipse.cdt.codan.ui/about.html b/codan/org.eclipse.cdt.codan.ui/about.html
index 164f781a8fd..b3134865230 100644
--- a/codan/org.eclipse.cdt.codan.ui/about.html
+++ b/codan/org.eclipse.cdt.codan.ui/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/widgets/CustomizeProblemComposite.java b/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/widgets/CustomizeProblemComposite.java
index 564153e2ca6..c272b62d159 100644
--- a/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/widgets/CustomizeProblemComposite.java
+++ b/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/widgets/CustomizeProblemComposite.java
@@ -18,11 +18,11 @@ import org.eclipse.cdt.codan.core.model.IProblemWorkingCopy;
import org.eclipse.cdt.codan.internal.ui.CodanUIMessages;
import org.eclipse.core.resources.IResource;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CTabFolder;
+import org.eclipse.swt.custom.CTabItem;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.TabFolder;
-import org.eclipse.swt.widgets.TabItem;
/**
* Composite for problem customisable parameters
@@ -47,12 +47,13 @@ public class CustomizeProblemComposite extends Composite {
this.setLayout(new GridLayout(1, false));
this.problem = selectedProblem;
this.resource = resource;
- final TabFolder tabFolder = new TabFolder(this, SWT.TOP);
+ final CTabFolder tabFolder = new CTabFolder(this, SWT.TOP);
tabFolder.setLayoutData(new GridData(GridData.FILL_BOTH));
// createMainTab(tabFolder);
createParamtersTab(tabFolder, combined);
createScopeTab(tabFolder);
createLaunchingTab(tabFolder);
+ tabFolder.setSelection(0);
}
public void save(IProblemWorkingCopy problem) {
@@ -64,8 +65,8 @@ public class CustomizeProblemComposite extends Composite {
/**
* @param tabFolder
*/
- private void createParamtersTab(TabFolder tabFolder, boolean combined) {
- TabItem tabItem1 = new TabItem(tabFolder, SWT.NULL);
+ private void createParamtersTab(CTabFolder tabFolder, boolean combined) {
+ CTabItem tabItem1 = new CTabItem(tabFolder, SWT.NULL);
tabItem1.setText(CodanUIMessages.CustomizeProblemComposite_TabParameters);
parametersTab = new Composite(tabFolder, SWT.NONE);
tabItem1.setControl(parametersTab);
@@ -77,8 +78,8 @@ public class CustomizeProblemComposite extends Composite {
/**
* @param tabFolder
*/
- private void createScopeTab(TabFolder tabFolder) {
- TabItem tabItem1 = new TabItem(tabFolder, SWT.NULL);
+ private void createScopeTab(CTabFolder tabFolder) {
+ CTabItem tabItem1 = new CTabItem(tabFolder, SWT.NULL);
tabItem1.setText(CodanUIMessages.CustomizeProblemComposite_TabScope);
Composite comp = new Composite(tabFolder, SWT.NONE);
tabItem1.setControl(comp);
@@ -87,8 +88,8 @@ public class CustomizeProblemComposite extends Composite {
scopeComposite.setLayoutData(new GridData(SWT.BEGINNING, SWT.BEGINNING, true, false));
}
- private void createLaunchingTab(TabFolder tabFolder) {
- TabItem tabItem1 = new TabItem(tabFolder, SWT.NULL);
+ private void createLaunchingTab(CTabFolder tabFolder) {
+ CTabItem tabItem1 = new CTabItem(tabFolder, SWT.NULL);
tabItem1.setText(CodanUIMessages.CustomizeProblemComposite_LaunchingTab);
Composite comp = new Composite(tabFolder, SWT.NONE);
tabItem1.setControl(comp);
diff --git a/codan/pom.xml b/codan/pom.xml
index a83cea6ed14..623011f4c6e 100644
--- a/codan/pom.xml
+++ b/codan/pom.xml
@@ -1,4 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2017, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
@@ -7,7 +17,7 @@
<parent>
<groupId>org.eclipse.cdt</groupId>
<artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
+ <version>10.7.0-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.cdt.codan-parent</artifactId>
diff --git a/core/org.eclipse.cdt.core.linux.aarch64/.project b/core/org.eclipse.cdt.core.linux.aarch64/.project
new file mode 100644
index 00000000000..c0e42ebeb4a
--- /dev/null
+++ b/core/org.eclipse.cdt.core.linux.aarch64/.project
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.cdt.core.linux.aarch64</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ </natures>
+</projectDescription>
diff --git a/core/org.eclipse.cdt.core.linux.aarch64/.settings/org.eclipse.core.resources.prefs b/core/org.eclipse.cdt.core.linux.aarch64/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/core/org.eclipse.cdt.core.linux.aarch64/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/.settings/org.eclipse.pde.api.tools.prefs b/core/org.eclipse.cdt.core.linux.aarch64/.settings/org.eclipse.pde.api.tools.prefs
index ec9fbf321d0..ec9fbf321d0 100644
--- a/lrparser/org.eclipse.cdt.core.lrparser/.settings/org.eclipse.pde.api.tools.prefs
+++ b/core/org.eclipse.cdt.core.linux.aarch64/.settings/org.eclipse.pde.api.tools.prefs
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/.settings/org.eclipse.pde.prefs b/core/org.eclipse.cdt.core.linux.aarch64/.settings/org.eclipse.pde.prefs
index d2dc703ba9e..d2dc703ba9e 100644
--- a/lrparser/org.eclipse.cdt.core.lrparser/.settings/org.eclipse.pde.prefs
+++ b/core/org.eclipse.cdt.core.linux.aarch64/.settings/org.eclipse.pde.prefs
diff --git a/core/org.eclipse.cdt.core.linux.aarch64/META-INF/MANIFEST.MF b/core/org.eclipse.cdt.core.linux.aarch64/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..ea7bfc7d50a
--- /dev/null
+++ b/core/org.eclipse.cdt.core.linux.aarch64/META-INF/MANIFEST.MF
@@ -0,0 +1,9 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %fragmentName.linux.aarch64
+Bundle-SymbolicName: org.eclipse.cdt.core.linux.aarch64;singleton:=true
+Bundle-Version: 6.0.600.qualifier
+Bundle-Vendor: %providerName
+Fragment-Host: org.eclipse.cdt.core.native;bundle-version="[6.0.0,7.0.0)"
+Bundle-Localization: plugin
+Eclipse-PlatformFilter: (&(osgi.os=linux)(osgi.arch=aarch64))
diff --git a/core/org.eclipse.cdt.core.linux.aarch64/about.html b/core/org.eclipse.cdt.core.linux.aarch64/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/core/org.eclipse.cdt.core.linux.aarch64/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/core/org.eclipse.cdt.core.linux.aarch64/build.properties b/core/org.eclipse.cdt.core.linux.aarch64/build.properties
new file mode 100644
index 00000000000..d5cafe61924
--- /dev/null
+++ b/core/org.eclipse.cdt.core.linux.aarch64/build.properties
@@ -0,0 +1,18 @@
+###############################################################################
+# Copyright (c) 2005, 2009 IBM Corporation and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# IBM Corporation - initial API and implementation
+###############################################################################
+bin.includes = os/,\
+ about.html,\
+ META-INF/,\
+ plugin.properties
+src.includes = about.html
diff --git a/core/org.eclipse.cdt.core.linux.aarch64/os/linux/aarch64/libpty.so b/core/org.eclipse.cdt.core.linux.aarch64/os/linux/aarch64/libpty.so
new file mode 100755
index 00000000000..3c2ec1047da
--- /dev/null
+++ b/core/org.eclipse.cdt.core.linux.aarch64/os/linux/aarch64/libpty.so
Binary files differ
diff --git a/core/org.eclipse.cdt.core.linux.aarch64/os/linux/aarch64/libspawner.so b/core/org.eclipse.cdt.core.linux.aarch64/os/linux/aarch64/libspawner.so
new file mode 100755
index 00000000000..a9919b4ca52
--- /dev/null
+++ b/core/org.eclipse.cdt.core.linux.aarch64/os/linux/aarch64/libspawner.so
Binary files differ
diff --git a/core/org.eclipse.cdt.core.linux.aarch64/plugin.properties b/core/org.eclipse.cdt.core.linux.aarch64/plugin.properties
new file mode 100644
index 00000000000..9737accb85d
--- /dev/null
+++ b/core/org.eclipse.cdt.core.linux.aarch64/plugin.properties
@@ -0,0 +1,2 @@
+fragmentName.linux.aarch64=C/C++ Development Tools Core for Linux Aarch64
+providerName=Eclipse CDT
diff --git a/core/org.eclipse.cdt.core.linux.aarch64/pom.xml b/core/org.eclipse.cdt.core.linux.aarch64/pom.xml
new file mode 100644
index 00000000000..fa2d447bccf
--- /dev/null
+++ b/core/org.eclipse.cdt.core.linux.aarch64/pom.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2020, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
+<project
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+ xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.cdt</groupId>
+ <artifactId>cdt-parent</artifactId>
+ <version>10.7.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent>
+
+ <version>6.0.600-SNAPSHOT</version>
+ <artifactId>org.eclipse.cdt.core.linux.aarch64</artifactId>
+ <packaging>eclipse-plugin</packaging>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>target-platform-configuration</artifactId>
+ <version>${tycho-version}</version>
+ <configuration>
+ <resolver>p2</resolver>
+ <pomDependencies>consider</pomDependencies>
+ <environments>
+ <environment>
+ <os>linux</os>
+ <ws>gtk</ws>
+ <arch>aarch64</arch>
+ </environment>
+ </environments>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-source-plugin</artifactId>
+ <version>${tycho-version}</version>
+ <executions>
+ <execution>
+ <id>plugin-source</id>
+ <phase>none</phase>
+ </execution>
+ <execution>
+ <id>attach-source</id>
+ <phase>none</phase>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-packaging-plugin</artifactId>
+ <configuration>
+ <!-- When signing binaries, the result is not checked into repo, so the
+ jgit timestamp provider cannot be used. This has the side effect
+ that the version of this bundle needs to be incremented on each
+ CDT release. -->
+ <timestampProvider>default</timestampProvider>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/core/org.eclipse.cdt.core.linux.ppc64le/.settings/org.eclipse.core.resources.prefs b/core/org.eclipse.cdt.core.linux.ppc64le/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/core/org.eclipse.cdt.core.linux.ppc64le/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/core/org.eclipse.cdt.core.linux.ppc64le/.settings/org.eclipse.jdt.core.prefs b/core/org.eclipse.cdt.core.linux.ppc64le/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 2b6ecff8a01..00000000000
--- a/core/org.eclipse.cdt.core.linux.ppc64le/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,464 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
-org.eclipse.jdt.core.codeComplete.argumentPrefixes=
-org.eclipse.jdt.core.codeComplete.argumentSuffixes=
-org.eclipse.jdt.core.codeComplete.fieldPrefixes=
-org.eclipse.jdt.core.codeComplete.fieldSuffixes=
-org.eclipse.jdt.core.codeComplete.localPrefixes=
-org.eclipse.jdt.core.codeComplete.localSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
-org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
-org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
-org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
-org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
-org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
-org.eclipse.jdt.core.compiler.problem.APILeak=warning
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
-org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
-org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
-org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
-org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
-org.eclipse.jdt.core.compiler.problem.nullReference=error
-org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
-org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
-org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
-org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
-org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
-org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
-org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
-org.eclipse.jdt.core.formatter.align_with_spaces=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
-org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
-org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
-org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
-org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=0
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
-org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
-org.eclipse.jdt.core.formatter.comment.format_block_comments=false
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
-org.eclipse.jdt.core.formatter.comment.format_line_comments=false
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
-org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
-org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
-org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.join_lines_in_comments=true
-org.eclipse.jdt.core.formatter.join_wrapped_lines=true
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=120
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_on_off_tags=true
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
-org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
-org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/core/org.eclipse.cdt.core.linux.ppc64le/.settings/org.eclipse.jdt.ui.prefs b/core/org.eclipse.cdt.core.linux.ppc64le/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index e44576346c4..00000000000
--- a/core/org.eclipse.cdt.core.linux.ppc64le/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,133 +0,0 @@
-cleanup.add_default_serial_version_id=true
-cleanup.add_generated_serial_version_id=false
-cleanup.add_missing_annotations=true
-cleanup.add_missing_deprecated_annotations=true
-cleanup.add_missing_methods=false
-cleanup.add_missing_nls_tags=false
-cleanup.add_missing_override_annotations=true
-cleanup.add_missing_override_annotations_interface_methods=true
-cleanup.add_serial_version_id=false
-cleanup.always_use_blocks=true
-cleanup.always_use_parentheses_in_expressions=false
-cleanup.always_use_this_for_non_static_field_access=false
-cleanup.always_use_this_for_non_static_method_access=false
-cleanup.convert_functional_interfaces=false
-cleanup.convert_to_enhanced_for_loop=false
-cleanup.correct_indentation=false
-cleanup.format_source_code=true
-cleanup.format_source_code_changes_only=false
-cleanup.insert_inferred_type_arguments=false
-cleanup.make_local_variable_final=true
-cleanup.make_parameters_final=false
-cleanup.make_private_fields_final=true
-cleanup.make_type_abstract_if_missing_method=false
-cleanup.make_variable_declarations_final=false
-cleanup.never_use_blocks=false
-cleanup.never_use_parentheses_in_expressions=true
-cleanup.organize_imports=true
-cleanup.qualify_static_field_accesses_with_declaring_class=false
-cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-cleanup.qualify_static_member_accesses_with_declaring_class=false
-cleanup.qualify_static_method_accesses_with_declaring_class=false
-cleanup.remove_private_constructors=true
-cleanup.remove_redundant_modifiers=false
-cleanup.remove_redundant_semicolons=true
-cleanup.remove_redundant_type_arguments=true
-cleanup.remove_trailing_whitespaces=true
-cleanup.remove_trailing_whitespaces_all=true
-cleanup.remove_trailing_whitespaces_ignore_empty=false
-cleanup.remove_unnecessary_casts=true
-cleanup.remove_unnecessary_nls_tags=false
-cleanup.remove_unused_imports=true
-cleanup.remove_unused_local_variables=false
-cleanup.remove_unused_private_fields=true
-cleanup.remove_unused_private_members=false
-cleanup.remove_unused_private_methods=true
-cleanup.remove_unused_private_types=true
-cleanup.sort_members=false
-cleanup.sort_members_all=false
-cleanup.use_anonymous_class_creation=false
-cleanup.use_blocks=false
-cleanup.use_blocks_only_for_return_and_throw=false
-cleanup.use_lambda=true
-cleanup.use_parentheses_in_expressions=false
-cleanup.use_this_for_non_static_field_access=false
-cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-cleanup.use_this_for_non_static_method_access=false
-cleanup.use_this_for_non_static_method_access_only_if_necessary=true
-cleanup_profile=_CDT
-cleanup_settings_version=2
-eclipse.preferences.version=1
-editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=_CDT
-formatter_settings_version=14
-internal.default.compliance=user
-org.eclipse.jdt.ui.exception.name=e
-org.eclipse.jdt.ui.gettersetter.use.is=true
-org.eclipse.jdt.ui.ignorelowercasenames=true
-org.eclipse.jdt.ui.importorder=java;javax;org;com;
-org.eclipse.jdt.ui.keywordthis=false
-org.eclipse.jdt.ui.ondemandthreshold=1000
-org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.staticondemandthreshold=1000
-org.eclipse.jdt.ui.text.custom_code_templates=
-sp_cleanup.add_default_serial_version_id=true
-sp_cleanup.add_generated_serial_version_id=false
-sp_cleanup.add_missing_annotations=true
-sp_cleanup.add_missing_deprecated_annotations=true
-sp_cleanup.add_missing_methods=false
-sp_cleanup.add_missing_nls_tags=false
-sp_cleanup.add_missing_override_annotations=true
-sp_cleanup.add_missing_override_annotations_interface_methods=true
-sp_cleanup.add_serial_version_id=false
-sp_cleanup.always_use_blocks=true
-sp_cleanup.always_use_parentheses_in_expressions=false
-sp_cleanup.always_use_this_for_non_static_field_access=false
-sp_cleanup.always_use_this_for_non_static_method_access=false
-sp_cleanup.convert_functional_interfaces=false
-sp_cleanup.convert_to_enhanced_for_loop=false
-sp_cleanup.correct_indentation=false
-sp_cleanup.format_source_code=true
-sp_cleanup.format_source_code_changes_only=false
-sp_cleanup.insert_inferred_type_arguments=false
-sp_cleanup.make_local_variable_final=true
-sp_cleanup.make_parameters_final=false
-sp_cleanup.make_private_fields_final=true
-sp_cleanup.make_type_abstract_if_missing_method=false
-sp_cleanup.make_variable_declarations_final=false
-sp_cleanup.never_use_blocks=false
-sp_cleanup.never_use_parentheses_in_expressions=true
-sp_cleanup.on_save_use_additional_actions=true
-sp_cleanup.organize_imports=true
-sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
-sp_cleanup.remove_private_constructors=true
-sp_cleanup.remove_redundant_modifiers=false
-sp_cleanup.remove_redundant_semicolons=true
-sp_cleanup.remove_redundant_type_arguments=true
-sp_cleanup.remove_trailing_whitespaces=true
-sp_cleanup.remove_trailing_whitespaces_all=true
-sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
-sp_cleanup.remove_unnecessary_casts=true
-sp_cleanup.remove_unnecessary_nls_tags=false
-sp_cleanup.remove_unused_imports=true
-sp_cleanup.remove_unused_local_variables=false
-sp_cleanup.remove_unused_private_fields=true
-sp_cleanup.remove_unused_private_members=false
-sp_cleanup.remove_unused_private_methods=true
-sp_cleanup.remove_unused_private_types=true
-sp_cleanup.sort_members=false
-sp_cleanup.sort_members_all=false
-sp_cleanup.use_anonymous_class_creation=false
-sp_cleanup.use_blocks=false
-sp_cleanup.use_blocks_only_for_return_and_throw=false
-sp_cleanup.use_lambda=true
-sp_cleanup.use_parentheses_in_expressions=false
-sp_cleanup.use_this_for_non_static_field_access=false
-sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-sp_cleanup.use_this_for_non_static_method_access=false
-sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/core/org.eclipse.cdt.core.linux.ppc64le/META-INF/MANIFEST.MF b/core/org.eclipse.cdt.core.linux.ppc64le/META-INF/MANIFEST.MF
index abb80d661c4..f8488d7e43d 100644
--- a/core/org.eclipse.cdt.core.linux.ppc64le/META-INF/MANIFEST.MF
+++ b/core/org.eclipse.cdt.core.linux.ppc64le/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@ Bundle-SymbolicName: org.eclipse.cdt.core.linux.ppc64le;singleton:=true
Bundle-ManifestVersion: 2
Bundle-Localization: plugin
Bundle-Name: %fragmentName.linux.ppc64le
-Bundle-Version: 1.0.1.qualifier
-Fragment-Host: org.eclipse.cdt.core.native;bundle-version="[5.7.0,6.0.0)"
+Bundle-Version: 6.0.600.qualifier
+Fragment-Host: org.eclipse.cdt.core.native;bundle-version="[6.0.0,7.0.0)"
Bundle-Vendor: %providerName
Eclipse-PlatformFilter: (&(osgi.os=linux)(osgi.arch=ppc64le))
diff --git a/core/org.eclipse.cdt.core.linux.ppc64le/about.html b/core/org.eclipse.cdt.core.linux.ppc64le/about.html
index 164f781a8fd..b3134865230 100644
--- a/core/org.eclipse.cdt.core.linux.ppc64le/about.html
+++ b/core/org.eclipse.cdt.core.linux.ppc64le/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/core/org.eclipse.cdt.core.linux.ppc64le/build.properties b/core/org.eclipse.cdt.core.linux.ppc64le/build.properties
index ab271c792ff..345f7ca9fb0 100644
--- a/core/org.eclipse.cdt.core.linux.ppc64le/build.properties
+++ b/core/org.eclipse.cdt.core.linux.ppc64le/build.properties
@@ -13,6 +13,6 @@
###############################################################################
bin.includes = os/,\
about.html,\
- META-INF/\,
+ META-INF/,\
plugin.properties
src.includes = about.html
diff --git a/core/org.eclipse.cdt.core.linux.ppc64le/os/linux/ppc64le/libpty.so b/core/org.eclipse.cdt.core.linux.ppc64le/os/linux/ppc64le/libpty.so
index 1d73a55cb16..d59d51b7452 100755
--- a/core/org.eclipse.cdt.core.linux.ppc64le/os/linux/ppc64le/libpty.so
+++ b/core/org.eclipse.cdt.core.linux.ppc64le/os/linux/ppc64le/libpty.so
Binary files differ
diff --git a/core/org.eclipse.cdt.core.linux.ppc64le/os/linux/ppc64le/libspawner.so b/core/org.eclipse.cdt.core.linux.ppc64le/os/linux/ppc64le/libspawner.so
index 524114fa73a..cddfefcb258 100755
--- a/core/org.eclipse.cdt.core.linux.ppc64le/os/linux/ppc64le/libspawner.so
+++ b/core/org.eclipse.cdt.core.linux.ppc64le/os/linux/ppc64le/libspawner.so
Binary files differ
diff --git a/core/org.eclipse.cdt.core.linux.ppc64le/pom.xml b/core/org.eclipse.cdt.core.linux.ppc64le/pom.xml
index 2e7b02062cd..ed762c94e10 100644
--- a/core/org.eclipse.cdt.core.linux.ppc64le/pom.xml
+++ b/core/org.eclipse.cdt.core.linux.ppc64le/pom.xml
@@ -1,4 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2014, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
@@ -7,11 +17,11 @@
<parent>
<groupId>org.eclipse.cdt</groupId>
<artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
+ <version>10.7.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
- <version>1.0.1-SNAPSHOT</version>
+ <version>6.0.600-SNAPSHOT</version>
<artifactId>org.eclipse.cdt.core.linux.ppc64le</artifactId>
<packaging>eclipse-plugin</packaging>
@@ -48,6 +58,17 @@
</execution>
</executions>
</plugin>
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-packaging-plugin</artifactId>
+ <configuration>
+ <!-- When signing binaries, the result is not checked into repo, so the
+ jgit timestamp provider cannot be used. This has the side effect
+ that the version of this bundle needs to be incremented on each
+ CDT release. -->
+ <timestampProvider>default</timestampProvider>
+ </configuration>
+ </plugin>
</plugins>
</build>
</project>
diff --git a/core/org.eclipse.cdt.core.linux.x86_64/.settings/org.eclipse.core.resources.prefs b/core/org.eclipse.cdt.core.linux.x86_64/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/core/org.eclipse.cdt.core.linux.x86_64/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/core/org.eclipse.cdt.core.linux.x86_64/.settings/org.eclipse.jdt.core.prefs b/core/org.eclipse.cdt.core.linux.x86_64/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 2b6ecff8a01..00000000000
--- a/core/org.eclipse.cdt.core.linux.x86_64/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,464 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
-org.eclipse.jdt.core.codeComplete.argumentPrefixes=
-org.eclipse.jdt.core.codeComplete.argumentSuffixes=
-org.eclipse.jdt.core.codeComplete.fieldPrefixes=
-org.eclipse.jdt.core.codeComplete.fieldSuffixes=
-org.eclipse.jdt.core.codeComplete.localPrefixes=
-org.eclipse.jdt.core.codeComplete.localSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
-org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
-org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
-org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
-org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
-org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
-org.eclipse.jdt.core.compiler.problem.APILeak=warning
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
-org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
-org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
-org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
-org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
-org.eclipse.jdt.core.compiler.problem.nullReference=error
-org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
-org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
-org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
-org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
-org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
-org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
-org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
-org.eclipse.jdt.core.formatter.align_with_spaces=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
-org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
-org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
-org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
-org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=0
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
-org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
-org.eclipse.jdt.core.formatter.comment.format_block_comments=false
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
-org.eclipse.jdt.core.formatter.comment.format_line_comments=false
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
-org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
-org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
-org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.join_lines_in_comments=true
-org.eclipse.jdt.core.formatter.join_wrapped_lines=true
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=120
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_on_off_tags=true
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
-org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
-org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/core/org.eclipse.cdt.core.linux.x86_64/.settings/org.eclipse.jdt.ui.prefs b/core/org.eclipse.cdt.core.linux.x86_64/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index e44576346c4..00000000000
--- a/core/org.eclipse.cdt.core.linux.x86_64/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,133 +0,0 @@
-cleanup.add_default_serial_version_id=true
-cleanup.add_generated_serial_version_id=false
-cleanup.add_missing_annotations=true
-cleanup.add_missing_deprecated_annotations=true
-cleanup.add_missing_methods=false
-cleanup.add_missing_nls_tags=false
-cleanup.add_missing_override_annotations=true
-cleanup.add_missing_override_annotations_interface_methods=true
-cleanup.add_serial_version_id=false
-cleanup.always_use_blocks=true
-cleanup.always_use_parentheses_in_expressions=false
-cleanup.always_use_this_for_non_static_field_access=false
-cleanup.always_use_this_for_non_static_method_access=false
-cleanup.convert_functional_interfaces=false
-cleanup.convert_to_enhanced_for_loop=false
-cleanup.correct_indentation=false
-cleanup.format_source_code=true
-cleanup.format_source_code_changes_only=false
-cleanup.insert_inferred_type_arguments=false
-cleanup.make_local_variable_final=true
-cleanup.make_parameters_final=false
-cleanup.make_private_fields_final=true
-cleanup.make_type_abstract_if_missing_method=false
-cleanup.make_variable_declarations_final=false
-cleanup.never_use_blocks=false
-cleanup.never_use_parentheses_in_expressions=true
-cleanup.organize_imports=true
-cleanup.qualify_static_field_accesses_with_declaring_class=false
-cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-cleanup.qualify_static_member_accesses_with_declaring_class=false
-cleanup.qualify_static_method_accesses_with_declaring_class=false
-cleanup.remove_private_constructors=true
-cleanup.remove_redundant_modifiers=false
-cleanup.remove_redundant_semicolons=true
-cleanup.remove_redundant_type_arguments=true
-cleanup.remove_trailing_whitespaces=true
-cleanup.remove_trailing_whitespaces_all=true
-cleanup.remove_trailing_whitespaces_ignore_empty=false
-cleanup.remove_unnecessary_casts=true
-cleanup.remove_unnecessary_nls_tags=false
-cleanup.remove_unused_imports=true
-cleanup.remove_unused_local_variables=false
-cleanup.remove_unused_private_fields=true
-cleanup.remove_unused_private_members=false
-cleanup.remove_unused_private_methods=true
-cleanup.remove_unused_private_types=true
-cleanup.sort_members=false
-cleanup.sort_members_all=false
-cleanup.use_anonymous_class_creation=false
-cleanup.use_blocks=false
-cleanup.use_blocks_only_for_return_and_throw=false
-cleanup.use_lambda=true
-cleanup.use_parentheses_in_expressions=false
-cleanup.use_this_for_non_static_field_access=false
-cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-cleanup.use_this_for_non_static_method_access=false
-cleanup.use_this_for_non_static_method_access_only_if_necessary=true
-cleanup_profile=_CDT
-cleanup_settings_version=2
-eclipse.preferences.version=1
-editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=_CDT
-formatter_settings_version=14
-internal.default.compliance=user
-org.eclipse.jdt.ui.exception.name=e
-org.eclipse.jdt.ui.gettersetter.use.is=true
-org.eclipse.jdt.ui.ignorelowercasenames=true
-org.eclipse.jdt.ui.importorder=java;javax;org;com;
-org.eclipse.jdt.ui.keywordthis=false
-org.eclipse.jdt.ui.ondemandthreshold=1000
-org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.staticondemandthreshold=1000
-org.eclipse.jdt.ui.text.custom_code_templates=
-sp_cleanup.add_default_serial_version_id=true
-sp_cleanup.add_generated_serial_version_id=false
-sp_cleanup.add_missing_annotations=true
-sp_cleanup.add_missing_deprecated_annotations=true
-sp_cleanup.add_missing_methods=false
-sp_cleanup.add_missing_nls_tags=false
-sp_cleanup.add_missing_override_annotations=true
-sp_cleanup.add_missing_override_annotations_interface_methods=true
-sp_cleanup.add_serial_version_id=false
-sp_cleanup.always_use_blocks=true
-sp_cleanup.always_use_parentheses_in_expressions=false
-sp_cleanup.always_use_this_for_non_static_field_access=false
-sp_cleanup.always_use_this_for_non_static_method_access=false
-sp_cleanup.convert_functional_interfaces=false
-sp_cleanup.convert_to_enhanced_for_loop=false
-sp_cleanup.correct_indentation=false
-sp_cleanup.format_source_code=true
-sp_cleanup.format_source_code_changes_only=false
-sp_cleanup.insert_inferred_type_arguments=false
-sp_cleanup.make_local_variable_final=true
-sp_cleanup.make_parameters_final=false
-sp_cleanup.make_private_fields_final=true
-sp_cleanup.make_type_abstract_if_missing_method=false
-sp_cleanup.make_variable_declarations_final=false
-sp_cleanup.never_use_blocks=false
-sp_cleanup.never_use_parentheses_in_expressions=true
-sp_cleanup.on_save_use_additional_actions=true
-sp_cleanup.organize_imports=true
-sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
-sp_cleanup.remove_private_constructors=true
-sp_cleanup.remove_redundant_modifiers=false
-sp_cleanup.remove_redundant_semicolons=true
-sp_cleanup.remove_redundant_type_arguments=true
-sp_cleanup.remove_trailing_whitespaces=true
-sp_cleanup.remove_trailing_whitespaces_all=true
-sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
-sp_cleanup.remove_unnecessary_casts=true
-sp_cleanup.remove_unnecessary_nls_tags=false
-sp_cleanup.remove_unused_imports=true
-sp_cleanup.remove_unused_local_variables=false
-sp_cleanup.remove_unused_private_fields=true
-sp_cleanup.remove_unused_private_members=false
-sp_cleanup.remove_unused_private_methods=true
-sp_cleanup.remove_unused_private_types=true
-sp_cleanup.sort_members=false
-sp_cleanup.sort_members_all=false
-sp_cleanup.use_anonymous_class_creation=false
-sp_cleanup.use_blocks=false
-sp_cleanup.use_blocks_only_for_return_and_throw=false
-sp_cleanup.use_lambda=true
-sp_cleanup.use_parentheses_in_expressions=false
-sp_cleanup.use_this_for_non_static_field_access=false
-sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-sp_cleanup.use_this_for_non_static_method_access=false
-sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/core/org.eclipse.cdt.core.linux.x86_64/META-INF/MANIFEST.MF b/core/org.eclipse.cdt.core.linux.x86_64/META-INF/MANIFEST.MF
index 2ea46aac389..1f09d4b0134 100644
--- a/core/org.eclipse.cdt.core.linux.x86_64/META-INF/MANIFEST.MF
+++ b/core/org.eclipse.cdt.core.linux.x86_64/META-INF/MANIFEST.MF
@@ -2,8 +2,8 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %fragmentName.linux.x86_64
Bundle-SymbolicName: org.eclipse.cdt.core.linux.x86_64;singleton:=true
-Bundle-Version: 5.3.1.qualifier
+Bundle-Version: 6.0.600.qualifier
Bundle-Vendor: %providerName
-Fragment-Host: org.eclipse.cdt.core.native;bundle-version="[5.7.0,6.0.0)"
+Fragment-Host: org.eclipse.cdt.core.native;bundle-version="[6.0.0,7.0.0)"
Bundle-Localization: plugin
Eclipse-PlatformFilter: (&(osgi.os=linux)(osgi.arch=x86_64))
diff --git a/core/org.eclipse.cdt.core.linux.x86_64/about.html b/core/org.eclipse.cdt.core.linux.x86_64/about.html
index 164f781a8fd..b3134865230 100644
--- a/core/org.eclipse.cdt.core.linux.x86_64/about.html
+++ b/core/org.eclipse.cdt.core.linux.x86_64/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/core/org.eclipse.cdt.core.linux.x86_64/build.properties b/core/org.eclipse.cdt.core.linux.x86_64/build.properties
index 1ad6c2e0ed7..d5cafe61924 100644
--- a/core/org.eclipse.cdt.core.linux.x86_64/build.properties
+++ b/core/org.eclipse.cdt.core.linux.x86_64/build.properties
@@ -13,6 +13,6 @@
###############################################################################
bin.includes = os/,\
about.html,\
- META-INF/\,
+ META-INF/,\
plugin.properties
src.includes = about.html
diff --git a/core/org.eclipse.cdt.core.linux.x86_64/os/linux/x86_64/libpty.so b/core/org.eclipse.cdt.core.linux.x86_64/os/linux/x86_64/libpty.so
index 587fa695259..cfd41f315e8 100644..100755
--- a/core/org.eclipse.cdt.core.linux.x86_64/os/linux/x86_64/libpty.so
+++ b/core/org.eclipse.cdt.core.linux.x86_64/os/linux/x86_64/libpty.so
Binary files differ
diff --git a/core/org.eclipse.cdt.core.linux.x86_64/os/linux/x86_64/libspawner.so b/core/org.eclipse.cdt.core.linux.x86_64/os/linux/x86_64/libspawner.so
index 18736e10a2c..476ea56bdc0 100644..100755
--- a/core/org.eclipse.cdt.core.linux.x86_64/os/linux/x86_64/libspawner.so
+++ b/core/org.eclipse.cdt.core.linux.x86_64/os/linux/x86_64/libspawner.so
Binary files differ
diff --git a/core/org.eclipse.cdt.core.linux.x86_64/pom.xml b/core/org.eclipse.cdt.core.linux.x86_64/pom.xml
index 4d5a1d04d38..0afb2ce29c6 100644
--- a/core/org.eclipse.cdt.core.linux.x86_64/pom.xml
+++ b/core/org.eclipse.cdt.core.linux.x86_64/pom.xml
@@ -1,4 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2011, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
@@ -7,11 +17,11 @@
<parent>
<groupId>org.eclipse.cdt</groupId>
<artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
+ <version>10.7.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
- <version>5.3.1-SNAPSHOT</version>
+ <version>6.0.600-SNAPSHOT</version>
<artifactId>org.eclipse.cdt.core.linux.x86_64</artifactId>
<packaging>eclipse-plugin</packaging>
@@ -48,6 +58,17 @@
</execution>
</executions>
</plugin>
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-packaging-plugin</artifactId>
+ <configuration>
+ <!-- When signing binaries, the result is not checked into repo, so the
+ jgit timestamp provider cannot be used. This has the side effect
+ that the version of this bundle needs to be incremented on each
+ CDT release. -->
+ <timestampProvider>default</timestampProvider>
+ </configuration>
+ </plugin>
</plugins>
</build>
</project>
diff --git a/core/org.eclipse.cdt.core.linux/.classpath b/core/org.eclipse.cdt.core.linux/.classpath
index 01836c4842f..e801ebfb468 100644
--- a/core/org.eclipse.cdt.core.linux/.classpath
+++ b/core/org.eclipse.cdt.core.linux/.classpath
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/core/org.eclipse.cdt.core.linux/.project b/core/org.eclipse.cdt.core.linux/.project
index 8e8b3560544..eeec452f97b 100644
--- a/core/org.eclipse.cdt.core.linux/.project
+++ b/core/org.eclipse.cdt.core.linux/.project
@@ -20,9 +20,15 @@
<arguments>
</arguments>
</buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
</natures>
</projectDescription>
diff --git a/core/org.eclipse.cdt.core.linux/.settings/org.eclipse.core.resources.prefs b/core/org.eclipse.cdt.core.linux/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/core/org.eclipse.cdt.core.linux/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/core/org.eclipse.cdt.core.linux/.settings/org.eclipse.jdt.core.prefs b/core/org.eclipse.cdt.core.linux/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/core/org.eclipse.cdt.core.linux/.settings/org.eclipse.jdt.core.prefs
+++ b/core/org.eclipse.cdt.core.linux/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/core/org.eclipse.cdt.core.linux/.settings/org.eclipse.jdt.ui.prefs b/core/org.eclipse.cdt.core.linux/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/core/org.eclipse.cdt.core.linux/.settings/org.eclipse.jdt.ui.prefs
+++ b/core/org.eclipse.cdt.core.linux/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/core/org.eclipse.cdt.core.linux/META-INF/MANIFEST.MF b/core/org.eclipse.cdt.core.linux/META-INF/MANIFEST.MF
index 56d4dd9a773..c5eb9f3d7e4 100644
--- a/core/org.eclipse.cdt.core.linux/META-INF/MANIFEST.MF
+++ b/core/org.eclipse.cdt.core.linux/META-INF/MANIFEST.MF
@@ -2,10 +2,10 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %fragmentName.linux
Bundle-SymbolicName: org.eclipse.cdt.core.linux; singleton:=true
-Bundle-Version: 5.3.1.qualifier
+Bundle-Version: 6.0.100.qualifier
Bundle-Vendor: %providerName
-Fragment-Host: org.eclipse.cdt.core.native;bundle-version="[5.7.0,6.0.0)"
+Fragment-Host: org.eclipse.cdt.core.native;bundle-version="[6.0.0,7.0.0)"
Bundle-Localization: plugin
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Eclipse-PlatformFilter: (osgi.os=linux)
Automatic-Module-Name: org.eclipse.cdt.core.linux
diff --git a/core/org.eclipse.cdt.core.linux/about.html b/core/org.eclipse.cdt.core.linux/about.html
index 164f781a8fd..b3134865230 100644
--- a/core/org.eclipse.cdt.core.linux/about.html
+++ b/core/org.eclipse.cdt.core.linux/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/core/org.eclipse.cdt.core.linux/build.properties b/core/org.eclipse.cdt.core.linux/build.properties
index 587895eb060..833b5a7e6f6 100644
--- a/core/org.eclipse.cdt.core.linux/build.properties
+++ b/core/org.eclipse.cdt.core.linux/build.properties
@@ -16,6 +16,5 @@ bin.includes = fragment.xml,\
.,\
META-INF/,\
plugin.properties
-src.includes = about.html,\
- library/
+src.includes = about.html
source.. = src/
diff --git a/core/org.eclipse.cdt.core.linux/library/Makefile b/core/org.eclipse.cdt.core.linux/library/Makefile
deleted file mode 100644
index 6e67977b98d..00000000000
--- a/core/org.eclipse.cdt.core.linux/library/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-# makefile for libspawner.so
-
-ifeq ($(JAVA_HOME),)
-$(warning JAVA_HOME not set in environment)
-endif
-
-# Defaults which can be overridden.
-OS = linux
-ARCH = x86
-
-JDK_INCLUDES= $(JAVA_HOME)/include
-JDK_OS_INCLUDES= $(JAVA_HOME)/include/$(OS)
-
-CC=gcc
-CPPFLAGS = -I. -I$(JDK_INCLUDES) -I$(JDK_OS_INCLUDES)
-CFLAGS +=-fpic -D_REENTRANT -D_GNU_SOURCE
-
-INSTALL_DIR = ../../org.eclipse.cdt.core.linux.$(ARCH)/os/$(OS)/$(ARCH)
-
-LIB_NAME_SPAWNER = libspawner.so
-LIB_NAME_FULL_SPAWNER = $(INSTALL_DIR)/libspawner.so
-OBJS_SPAWNER=spawner.o io.o exec_unix.o exec_pty.o pfind.o openpty.o
-
-LIB_NAME_PTY = libpty.so
-LIB_NAME_FULL_PTY = $(INSTALL_DIR)/libpty.so
-OBJS_PTY= openpty.o pty.o ptyio.o
-
-OBJS = $(OBJS_SPAWNER) $(OBJS_PTY)
-
-all: $(LIB_NAME_FULL_SPAWNER) $(LIB_NAME_FULL_PTY)
-
-rebuild: clean all
-
-$(LIB_NAME_FULL_SPAWNER) : $(OBJS_SPAWNER)
- mkdir -p $(INSTALL_DIR)
- $(CC) -g -shared -Wl,-soname,$(LIB_NAME_SPAWNER) $(LDFLAGS) -o $(LIB_NAME_FULL_SPAWNER) $(OBJS_SPAWNER) -lc
-
-$(LIB_NAME_FULL_PTY): $(OBJS_PTY)
- mkdir -p $(INSTALL_DIR)
- $(CC) -g -shared -Wl,-soname,$(LIB_NAME_PTY) $(LDFLAGS) -o $(LIB_NAME_FULL_PTY) $(OBJS_PTY)
-
-clean :
- $(RM) $(OBJS_SPAWNER) $(LIB_NAME_FULL_SPAWNER)
- $(RM) $(OBJS_PTY) $(LIB_NAME_FULL_PTY)
diff --git a/core/org.eclipse.cdt.core.linux/library/PTY.h b/core/org.eclipse.cdt.core.linux/library/PTY.h
deleted file mode 100644
index f717942a01d..00000000000
--- a/core/org.eclipse.cdt.core.linux/library/PTY.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/* DO NOT EDIT THIS FILE - it is machine generated */
-#include <jni.h>
-/* Header for class org_eclipse_cdt_utils_pty_PTY */
-
-#ifndef _Included_org_eclipse_cdt_utils_pty_PTY
-#define _Included_org_eclipse_cdt_utils_pty_PTY
-#ifdef __cplusplus
-extern "C" {
-#endif
-/*
- * Class: org_eclipse_cdt_utils_pty_PTY
- * Method: openMaster
- * Signature: (Z)Ljava/lang/String;
- */
-JNIEXPORT jstring JNICALL Java_org_eclipse_cdt_utils_pty_PTY_openMaster
- (JNIEnv *, jobject, jboolean);
-
-/*
- * Class: org_eclipse_cdt_utils_pty_PTY
- * Method: change_window_size
- * Signature: (III)I
- */
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTY_change_1window_1size
- (JNIEnv *, jobject, jint, jint, jint);
-
-#ifdef __cplusplus
-}
-#endif
-#endif
diff --git a/core/org.eclipse.cdt.core.linux/library/PTYInputStream.h b/core/org.eclipse.cdt.core.linux/library/PTYInputStream.h
deleted file mode 100644
index e7349272b56..00000000000
--- a/core/org.eclipse.cdt.core.linux/library/PTYInputStream.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/* DO NOT EDIT THIS FILE - it is machine generated */
-#include <jni.h>
-/* Header for class org_eclipse_cdt_utils_pty_PTYInputStream */
-
-#ifndef _Included_org_eclipse_cdt_utils_pty_PTYInputStream
-#define _Included_org_eclipse_cdt_utils_pty_PTYInputStream
-#ifdef __cplusplus
-extern "C" {
-#endif
-#undef org_eclipse_cdt_utils_pty_PTYInputStream_SKIP_BUFFER_SIZE
-#define org_eclipse_cdt_utils_pty_PTYInputStream_SKIP_BUFFER_SIZE 2048L
-/* Inaccessible static: skipBuffer */
-/*
- * Class: org_eclipse_cdt_utils_pty_PTYInputStream
- * Method: read0
- * Signature: (I[BI)I
- */
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTYInputStream_read0
- (JNIEnv *, jobject, jint, jbyteArray, jint);
-
-/*
- * Class: org_eclipse_cdt_utils_pty_PTYInputStream
- * Method: close0
- * Signature: (I)I
- */
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTYInputStream_close0
- (JNIEnv *, jobject, jint);
-
-#ifdef __cplusplus
-}
-#endif
-#endif
diff --git a/core/org.eclipse.cdt.core.linux/library/PTYOutputStream.h b/core/org.eclipse.cdt.core.linux/library/PTYOutputStream.h
deleted file mode 100644
index fb28491060e..00000000000
--- a/core/org.eclipse.cdt.core.linux/library/PTYOutputStream.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/* DO NOT EDIT THIS FILE - it is machine generated */
-#include <jni.h>
-/* Header for class org_eclipse_cdt_utils_pty_PTYOutputStream */
-
-#ifndef _Included_org_eclipse_cdt_utils_pty_PTYOutputStream
-#define _Included_org_eclipse_cdt_utils_pty_PTYOutputStream
-#ifdef __cplusplus
-extern "C" {
-#endif
-/*
- * Class: org_eclipse_cdt_utils_pty_PTYOutputStream
- * Method: write0
- * Signature: (I[BI)I
- */
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTYOutputStream_write0
- (JNIEnv *, jobject, jint, jbyteArray, jint);
-
-/*
- * Class: org_eclipse_cdt_utils_pty_PTYOutputStream
- * Method: close0
- * Signature: (I)I
- */
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTYOutputStream_close0
- (JNIEnv *, jobject, jint);
-
-#ifdef __cplusplus
-}
-#endif
-#endif
diff --git a/core/org.eclipse.cdt.core.linux/library/Spawner.h b/core/org.eclipse.cdt.core.linux/library/Spawner.h
deleted file mode 100644
index 02727f98a88..00000000000
--- a/core/org.eclipse.cdt.core.linux/library/Spawner.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/* DO NOT EDIT THIS FILE - it is machine generated */
-#include <jni.h>
-/* Header for class org_eclipse_cdt_utils_spawner_Spawner */
-
-#ifndef _Included_org_eclipse_cdt_utils_spawner_Spawner
-#define _Included_org_eclipse_cdt_utils_spawner_Spawner
-#ifdef __cplusplus
-extern "C" {
-#endif
-/*
- * Class: org_eclipse_cdt_utils_spawner_Spawner
- * Method: exec0
- * Signature: ([Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[I)I
- */
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_exec0
- (JNIEnv *, jobject, jobjectArray, jobjectArray, jstring, jintArray);
-
-/*
- * Class: org_eclipse_cdt_utils_spawner_Spawner
- * Method: exec1
- * Signature: ([Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)I
- */
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_exec1
- (JNIEnv *, jobject, jobjectArray, jobjectArray, jstring);
-
-/*
- * Class: org_eclipse_cdt_utils_spawner_Spawner
- * Method: exec2
- * Signature: ([Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[ILjava/lang/String;IZ)I
- */
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_exec2
- (JNIEnv *, jobject, jobjectArray, jobjectArray, jstring, jintArray, jstring, jint, jboolean);
-
-/*
- * Class: org_eclipse_cdt_utils_spawner_Spawner
- * Method: raise
- * Signature: (II)I
- */
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_raise
- (JNIEnv *, jobject, jint, jint);
-
-/*
- * Class: org_eclipse_cdt_utils_spawner_Spawner
- * Method: waitFor
- * Signature: (I)I
- */
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_waitFor
- (JNIEnv *, jobject, jint);
-
-#ifdef __cplusplus
-}
-#endif
-#endif
diff --git a/core/org.eclipse.cdt.core.linux/library/SpawnerInputStream.h b/core/org.eclipse.cdt.core.linux/library/SpawnerInputStream.h
deleted file mode 100644
index ecf8f8c6a78..00000000000
--- a/core/org.eclipse.cdt.core.linux/library/SpawnerInputStream.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/* DO NOT EDIT THIS FILE - it is machine generated */
-#include <jni.h>
-/* Header for class com_qnx_tools_utils_spawner_SpawnerInputStream */
-
-#ifndef _Included_com_qnx_tools_utils_spawner_SpawnerInputStream
-#define _Included_com_qnx_tools_utils_spawner_SpawnerInputStream
-#ifdef __cplusplus
-extern "C" {
-#endif
-#undef com_qnx_tools_utils_spawner_SpawnerInputStream_SKIP_BUFFER_SIZE
-#define com_qnx_tools_utils_spawner_SpawnerInputStream_SKIP_BUFFER_SIZE 2048L
-/* Inaccessible static: skipBuffer */
-/*
- * Class: org_elipse_cdt_utils_spawner_SpawnerInputStream
- * Method: read0
- * Signature: (I[BI)I
- */
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_SpawnerInputStream_read0
- (JNIEnv *, jobject, jint, jbyteArray, jint);
-
-/*
- * Class: org_eclipse_cdt_utils_spawner_SpawnerInputStream
- * Method: close0
- * Signature: (I)I
- */
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_SpawnerInputStream_close0
- (JNIEnv *, jobject, jint);
-
-#ifdef __cplusplus
-}
-#endif
-#endif
diff --git a/core/org.eclipse.cdt.core.linux/library/SpawnerOutputStream.h b/core/org.eclipse.cdt.core.linux/library/SpawnerOutputStream.h
deleted file mode 100644
index 444d71c698c..00000000000
--- a/core/org.eclipse.cdt.core.linux/library/SpawnerOutputStream.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/* DO NOT EDIT THIS FILE - it is machine generated */
-#include <jni.h>
-/* Header for class com_qnx_tools_utils_spawner_SpawnerOutputStream */
-
-#ifndef _Included_com_qnx_tools_utils_spawner_SpawnerOutputStream
-#define _Included_com_qnx_tools_utils_spawner_SpawnerOutputStream
-#ifdef __cplusplus
-extern "C" {
-#endif
-/*
- * Class: org_eclipse_cdt_utils_spawner_SpawnerOutputStream
- * Method: write0
- * Signature: (I[BI)I
- */
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_SpawnerOutputStream_write0
- (JNIEnv *, jobject, jint, jbyteArray, jint);
-
-/*
- * Class: org_eclipse_cdt_utils_spawner_SpawnerOutputStream
- * Method: close0
- * Signature: (I)I
- */
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_SpawnerOutputStream_close0
- (JNIEnv *, jobject, jint);
-
-#ifdef __cplusplus
-}
-#endif
-#endif
diff --git a/core/org.eclipse.cdt.core.linux/library/exec0.h b/core/org.eclipse.cdt.core.linux/library/exec0.h
deleted file mode 100644
index 04f363d5e53..00000000000
--- a/core/org.eclipse.cdt.core.linux/library/exec0.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2010 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - initial API and implementation
- * Wind River Systems, Inc.
- * Mikhail Zabaluev (Nokia) - bug 82744
- *******************************************************************************/
-#include <unistd.h>
-#include <sys/wait.h>
-#include <sys/types.h>
-#include <signal.h>
-#include <errno.h>
-
-extern pid_t exec0(const char *path, char *const argv[],
- char *const envp[], const char *dirpath,
- int channels[3]);
-
-
-extern pid_t exec_pty(const char *path, char *const argv[],
- char *const envp[], const char *dirpath,
- int channels[3], const char *pts_name, int fdm,
- int console);
-
-extern int wait0(pid_t pid);
diff --git a/core/org.eclipse.cdt.core.linux/library/exec_pty.c b/core/org.eclipse.cdt.core.linux/library/exec_pty.c
deleted file mode 100644
index e020053db41..00000000000
--- a/core/org.eclipse.cdt.core.linux/library/exec_pty.c
+++ /dev/null
@@ -1,189 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2010 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - initial API and implementation
- * Wind River Systems, Inc.
- * Mikhail Zabaluev (Nokia) - bug 82744
- * Mikhail Sennikovsky - bug 145737
- *******************************************************************************/
-#include "exec0.h"
-#include "openpty.h"
-#include <unistd.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <errno.h>
-#include <string.h>
-#include <libgen.h>
-#include <stdlib.h>
-#include <termios.h>
-
-/* from pfind.c */
-extern char *pfind(const char *name, char * const envp[]);
-
-pid_t
-exec_pty(const char *path, char *const argv[], char *const envp[],
- const char *dirpath, int channels[3], const char *pts_name, int fdm, int console)
-{
- int pipe2[2];
- pid_t childpid;
- char *full_path;
-
- /*
- * We use pfind() to check that the program exists and is an executable.
- * If not pass the error up. Also execve() wants a full path.
- */
- full_path = pfind(path, envp);
- if (full_path == NULL) {
- fprintf(stderr, "Unable to find full path for \"%s\"\n", (path) ? path : "");
- return -1;
- }
-
- /*
- * Make sure we can create our pipes before forking.
- */
- if (channels != NULL && console) {
- if (pipe(pipe2) < 0) {
- fprintf(stderr, "%s(%d): returning due to error: %s\n", __FUNCTION__, __LINE__, strerror(errno));
- free(full_path);
- return -1;
- }
- }
-
- childpid = fork();
-
- if (childpid < 0) {
- fprintf(stderr, "%s(%d): returning due to error: %s\n", __FUNCTION__, __LINE__, strerror(errno));
- free(full_path);
- return -1;
- } else if (childpid == 0) { /* child */
-
- chdir(dirpath);
-
- if (channels != NULL) {
- int fds;
-
- if (!console && setsid() < 0) {
- perror("setsid()");
- return -1;
- }
-
- fds = ptys_open(fdm, pts_name);
- if (fds < 0) {
- fprintf(stderr, "%s(%d): returning due to error: %s\n", __FUNCTION__, __LINE__, strerror(errno));
- return -1;
- }
-
- /* Close the read end of pipe2 */
- if (console && close(pipe2[0]) == -1) {
- perror("close(pipe2[0]))");
- }
-
- /* close the master, no need in the child */
- close(fdm);
-
- if (console) {
- set_noecho(fds);
- if (setpgid(getpid(), getpid()) < 0) {
- perror("setpgid()");
- return -1;
- }
- }
-
- /* redirections */
- dup2(fds, STDIN_FILENO); /* dup stdin */
- dup2(fds, STDOUT_FILENO); /* dup stdout */
- if (console) {
- dup2(pipe2[1], STDERR_FILENO); /* dup stderr */
- } else {
- dup2(fds, STDERR_FILENO); /* dup stderr */
- }
- close(fds); /* done with fds. */
- }
-
- /* Close all the fd's in the child */
- {
- int fdlimit = sysconf(_SC_OPEN_MAX);
- int fd = 3;
-
- while (fd < fdlimit)
- close(fd++);
- }
-
- if (envp[0] == NULL) {
- execv(full_path, argv);
- } else {
- execve(full_path, argv, envp);
- }
-
- _exit(127);
-
- } else if (childpid != 0) { /* parent */
- if (console) {
- set_noecho(fdm);
- }
- if (channels != NULL) {
- channels[0] = fdm; /* Input Stream. */
- channels[1] = fdm; /* Output Stream. */
- if (console) {
- /* close the write end of pipe1 */
- if (close(pipe2[1]) == -1)
- perror("close(pipe2[1])");
- channels[2] = pipe2[0]; /* stderr Stream. */
- } else {
- channels[2] = fdm; /* Error Stream. */
- }
- }
-
- free(full_path);
- return childpid;
- }
-
- free(full_path);
- return -1; /*NOT REACHED */
-}
-#ifdef __STAND_ALONE__
-int main(int argc, char **argv, char **envp) {
- const char *path = "./bufferring_test";
- int channels[3] = { -1, -1, -1};
- int status;
- FILE *app_stdin;
- FILE *app_stdout;
- FILE *app_stderr;
- char pts_name[32];
- int fdm;
- char buffer[32];
-
- fdm = ptym_open(pts_name);
- status = exec_pty(path, argv, envp, ".", channels, pts_name, fdm);
- if (status >= 0) {
- app_stdin = fdopen(channels[0], "w");
- app_stdout = fdopen(channels[1], "r");
- app_stderr = fdopen(channels[2], "r");
- if (app_stdout == NULL || app_stderr == NULL || app_stdin == NULL) {
- fprintf(stderr, "PROBLEMS\n");
- } else {
- fputs("foo\n", app_stdin);
- fputs("bar\n", app_stdin);
- while(fgets(buffer, sizeof buffer, app_stdout) != NULL) {
- fprintf(stdout, "STDOUT: %s\n", buffer);
- }
- while(fgets(buffer, sizeof buffer, app_stderr) != NULL) {
- fprintf(stdout, "STDERR: %s\n", buffer);
- }
- }
- }
- fputs("bye\n", stdout);
- close(channels[0]);
- close(channels[1]);
- close(channels[2]);
- return 0;
-}
-#endif
diff --git a/core/org.eclipse.cdt.core.linux/library/exec_unix.c b/core/org.eclipse.cdt.core.linux/library/exec_unix.c
deleted file mode 100644
index 4feb805f15d..00000000000
--- a/core/org.eclipse.cdt.core.linux/library/exec_unix.c
+++ /dev/null
@@ -1,161 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2010 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - initial API and implementation
- * Wind River Systems, Inc.
- * Mikhail Sennikovsky - bug 145737
- *******************************************************************************/
-#include "exec0.h"
-#include <unistd.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <errno.h>
-#include <string.h>
-#include <libgen.h>
-#include <stdlib.h>
-
-/* from pfind.c */
-extern char *pfind(const char *name, char * const envp[]);
-
-pid_t
-exec0(const char *path, char *const argv[], char *const envp[],
- const char *dirpath, int channels[3])
-{
- int pipe0[2], pipe1[2], pipe2[2];
- pid_t childpid;
- char *full_path;
-
- /*
- * We use pfind() to check that the program exists and is an executable.
- * If not pass the error up. Also execve() wants a full path.
- */
- full_path = pfind(path, envp);
- if (full_path == NULL) {
- fprintf(stderr, "Unable to find full path for \"%s\"\n", (path) ? path : "");
- return -1;
- }
-
- /*
- * Make sure we can create our pipes before forking.
- */
- if (channels != NULL) {
- if (pipe(pipe0) < 0 || pipe(pipe1) < 0 || pipe(pipe2) < 0) {
- fprintf(stderr, "%s(%d): returning due to error.\n",
- __FUNCTION__, __LINE__);
- free(full_path);
- return -1;
- }
- }
-
- childpid = fork();
-
- if (childpid < 0) {
- fprintf(stderr, "%s(%d): returning due to error: %s\n",
- __FUNCTION__, __LINE__, strerror(errno));
- free(full_path);
- return -1;
- } else if (childpid == 0) { /* child */
- char *ptr;
-
- chdir(dirpath);
-
- if (channels != NULL) {
- /* Close the write end of pipe0 */
- if (close(pipe0[1]) == -1)
- perror("close(pipe0[1])");
-
- /* Close the read end of pipe1 */
- if (close(pipe1[0]) == -1)
- perror("close(pipe1[0])");
-
- /* Close the read end of pipe2 */
- if (close(pipe2[0]) == -1)
- perror("close(pipe2[0]))");
-
- /* redirections */
- dup2(pipe0[0], STDIN_FILENO); /* dup stdin */
- dup2(pipe1[1], STDOUT_FILENO); /* dup stdout */
- dup2(pipe2[1], STDERR_FILENO); /* dup stderr */
- }
-
- /* Close all the fd's in the child */
- {
- int fdlimit = sysconf(_SC_OPEN_MAX);
- int fd = 3;
-
- while (fd < fdlimit)
- close(fd++);
- }
-
- setpgid(getpid(), getpid());
-
- if (envp[0] == NULL) {
- execv(full_path, argv);
- } else {
- execve(full_path, argv, envp);
- }
-
- _exit(127);
-
- } else if (childpid != 0) { /* parent */
-
- char b;
-
- if (channels != NULL) {
- /* close the read end of pipe1 */
- if (close(pipe0[0]) == -1)
- perror("close(pipe0[0])");
-
- /* close the write end of pipe2 */
- if (close(pipe1[1]) == -1)
- perror("close(pipe1[1])");
-
- /* close the write end of pipe2 */
- if (close(pipe2[1]) == -1)
- perror("close(pipe2[1])");
-
- channels[0] = pipe0[1]; /* Output Stream. */
- channels[1] = pipe1[0]; /* Input Stream. */
- channels[2] = pipe2[0]; /* Input Stream. */
- }
-
- free(full_path);
- return childpid;
- }
-
- free(full_path);
- return -1; /*NOT REACHED */
-}
-
-
-int wait0(pid_t pid)
-{
- int status;
- int val = -1;
-
- if (pid < 0)
- return -1;
-
- for (;;) {
- if (waitpid(pid, &status, 0) < 0) {
- if (errno == EINTR) {
- // interrupted system call - retry
- continue;
- }
- }
- break;
- }
- if (WIFEXITED(status)) {
- val = WEXITSTATUS(status);
- }
-
- return val;
-}
diff --git a/core/org.eclipse.cdt.core.linux/library/io.c b/core/org.eclipse.cdt.core.linux/library/io.c
deleted file mode 100644
index 94f03d63935..00000000000
--- a/core/org.eclipse.cdt.core.linux/library/io.c
+++ /dev/null
@@ -1,117 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2006 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - initial API and implementation
- * Wind River Systems, Inc.
- *******************************************************************************/
-#include <jni.h>
-#include <stdio.h>
-#include <SpawnerInputStream.h>
-#include <SpawnerOutputStream.h>
-#include <unistd.h>
-
-/* Header for class _org_eclipse_cdt_utils_spawner_SpawnerInputStream */
-/* Header for class _org_eclipse_cdt_utils_spawner_SpawnerOutputStream */
-
-/*
- * Class: org_eclipse_cdt_utils_spawner_SpawnerInputStream
- * Method: read0
- * Signature: (I)I
- */
-JNIEXPORT jint JNICALL
-Java_org_eclipse_cdt_utils_spawner_SpawnerInputStream_read0(JNIEnv * env,
- jobject jobj,
- jint jfd,
- jbyteArray buf,
- jint buf_len)
-{
- int fd;
- int status;
- jbyte *data;
- int data_len;
-
- data = (*env)->GetByteArrayElements(env, buf, 0);
- data_len = buf_len;
- fd = jfd;
-
- status = read( fd, data, data_len );
- (*env)->ReleaseByteArrayElements(env, buf, data, 0);
-
- if (status == 0) {
- /* EOF. */
- status = -1;
- } else if (status == -1) {
- /* Error, toss an exception */
- jclass exception = (*env)->FindClass(env, "java/io/IOException");
- if (exception == NULL) {
- /* Give up. */
- return -1;
- }
- (*env)->ThrowNew(env, exception, "read error");
- }
-
- return status;
-}
-
-
-/*
- * Class: org_eclipse_cdt_utils_spawner_SpawnerInputStream
- * Method: close0
- * Signature: (I)I
- */
-JNIEXPORT jint JNICALL
-Java_org_eclipse_cdt_utils_spawner_SpawnerInputStream_close0(JNIEnv * env,
- jobject jobj,
- jint fd)
-{
- return close(fd);
-}
-
-/*
- * Class: org_eclipse_cdt_utils_spawner_SpawnerOutputStream
- * Method: write0
- * Signature: (II)I
- */
-JNIEXPORT jint JNICALL
-Java_org_eclipse_cdt_utils_spawner_SpawnerOutputStream_write0(JNIEnv * env,
- jobject jobj,
- jint jfd,
- jbyteArray buf,
- jint buf_len)
-{
- int status;
- int fd;
- jbyte *data;
- int data_len;
-
- data = (*env)->GetByteArrayElements(env, buf, 0);
- data_len = buf_len;
- fd = jfd;
-
- status = write(fd, data, data_len);
- (*env)->ReleaseByteArrayElements(env, buf, data, 0);
-
- return status;
-}
-
-
-/*
- * Class: org_eclipse_cdt_utils_spawner_SpawnerOutputStream
- * Method: close0
- * Signature: (I)I
- */
-JNIEXPORT jint JNICALL
-Java_org_eclipse_cdt_utils_spawner_SpawnerOutputStream_close0(JNIEnv * env,
- jobject jobj,
- jint fd)
-{
- return close(fd);
-}
diff --git a/core/org.eclipse.cdt.core.linux/library/openpty.c b/core/org.eclipse.cdt.core.linux/library/openpty.c
deleted file mode 100644
index cae7dd5684a..00000000000
--- a/core/org.eclipse.cdt.core.linux/library/openpty.c
+++ /dev/null
@@ -1,133 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2010 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - initial API and implementation
- * Wind River Systems, Inc.
- * Mikhail Zabaluev (Nokia) - bug 82744
- * Corey Ashford (IBM) - bug 272370, bug 272372
- *******************************************************************************/
-
-/* _XOPEN_SOURCE is needed to bring in the header for ptsname */
-#define _XOPEN_SOURCE
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/ioctl.h>
-#include <fcntl.h>
-#include <termios.h>
-#include <errno.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <string.h>
-#include <grp.h>
-
-#include <stdlib.h>
-
-/**
- * This is taken from R. W. Stevens book.
- * Alain Magloire.
- */
-
-int ptym_open (char *pts_name);
-int ptys_open (int fdm, const char * pts_name);
-void set_noecho(int fd);
-
-int
-openpty(int *amaster, int *aslave, char *name, struct termios *termp, struct winsize *winp)
-{
- char line[20];
- line[0]=0;
- *amaster = ptym_open(line);
- if (*amaster < 0)
- return -1;
- *aslave = ptys_open(*amaster, line);
- if (*aslave < 0) {
- close(*amaster);
- return -1;
- }
-
- if (name)
- strcpy(name, line);
-#ifndef TCSAFLUSH
-#define TCSAFLUSH TCSETAF
-#endif
- if (termp)
- (void) tcsetattr(*aslave, TCSAFLUSH, termp);
-#ifdef TIOCSWINSZ
- if (winp)
- (void) ioctl(*aslave, TIOCSWINSZ, (char *)winp);
-#endif
- return 0;
-}
-
-void
-set_noecho(int fd)
-{
- struct termios stermios;
- if (tcgetattr(fd, &stermios) < 0) {
- return ;
- }
-
- /* turn off echo */
- stermios.c_lflag &= ~(ECHO | ECHOE | ECHOK | ECHONL);
- /* Turn off the NL to CR/NL mapping ou output. */
- /*stermios.c_oflag &= ~(ONLCR);*/
-
- stermios.c_iflag |= (IGNCR);
-
- tcsetattr(fd, TCSANOW, &stermios);
-}
-
-int
-ptym_open(char * pts_name)
-{
- int fdm;
- char *ptr;
-
- strcpy(pts_name, "/dev/ptmx");
- fdm = getpt();
- if (fdm < 0)
- return -1;
- if (grantpt(fdm) < 0) { /* grant access to slave */
- close(fdm);
- return -2;
- }
- if (unlockpt(fdm) < 0) { /* clear slave's lock flag */
- close(fdm);
- return -3;
- }
- ptr = ptsname(fdm);
- if (ptr == NULL) { /* get slave's name */
- close (fdm);
- return -4;
- }
- strcpy(pts_name, ptr); /* return name of slave */
- return fdm; /* return fd of master */
-}
-
-int
-ptys_open(int fdm, const char * pts_name)
-{
- int fds;
- /* following should allocate controlling terminal */
- fds = open(pts_name, O_RDWR);
- if (fds < 0) {
- close(fdm);
- return -5;
- }
-
-#if defined(TIOCSCTTY)
- /* TIOCSCTTY is the BSD way to acquire a controlling terminal. */
- if (ioctl(fds, TIOCSCTTY, (char *)0) < 0) {
- // ignore error: this is expected in console-mode
- }
-#endif
- return fds;
-}
diff --git a/core/org.eclipse.cdt.core.linux/library/openpty.h b/core/org.eclipse.cdt.core.linux/library/openpty.h
deleted file mode 100644
index 234a306415d..00000000000
--- a/core/org.eclipse.cdt.core.linux/library/openpty.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2010 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - initial API and implementation
- * Wind River Systems, Inc.
- * Mikhail Zabaluev (Nokia) - bug 82744
- *******************************************************************************/
-#ifndef _OPENPTY_H
-#define _OPENPTY_H
-int ptym_open (char *pts_name);
-int ptys_open (int fdm, const char * pts_name);
-void set_noecho(int fd);
-#endif
diff --git a/core/org.eclipse.cdt.core.linux/library/pfind.c b/core/org.eclipse.cdt.core.linux/library/pfind.c
deleted file mode 100644
index dd7abddf2f6..00000000000
--- a/core/org.eclipse.cdt.core.linux/library/pfind.c
+++ /dev/null
@@ -1,112 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2010 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - initial API and implementation
- * Wind River Systems, Inc.
- * Mikhail Sennikovsky - bug 145737
- * Everton Rufino Constantino (IBM) - bug 237611
- *******************************************************************************/
-/*
- * pfind.c - Search for a binary in $PATH.
- */
-
-#include <stdio.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <string.h>
-#include <limits.h>
-
-#ifndef PATH_MAX
-#define PATH_MAX 1024
-#endif
-
-#define PATH_DEF "PATH="
-const int path_def_len = 5; /* strlen(PATH_DEF); */
-
-char * path_val(char * const envp[])
-{
- int i;
- if (envp == NULL || envp[0] == NULL)
- return getenv("PATH" );
-
- for(i = 0; envp[i] != NULL; i++){
- char* p = envp[i];
- if(!strncmp(PATH_DEF, p, path_def_len)){
- return p + path_def_len;
- }
- }
-
- return NULL;
-}
-
-char * pfind(const char *name, char * const envp[])
-{
- char *tok;
- char *sp;
- char *path;
- char fullpath[PATH_MAX+1];
-
- /* Sanity check. */
- if (name == NULL) {
- fprintf(stderr, "pfind(): Null argument.\n");
- return NULL;
- }
-
- /* For absolute name or name with a path, check if it is an executable. */
- if (name[0] == '/' || name[0] == '.') {
- if (access(name, X_OK) == 0) {
- return strdup(name);
- }
- return NULL;
- }
-
- /* Search in the PATH environment. */
- path = path_val( envp );
-
- if (path == NULL || strlen(path) <= 0) {
- fprintf(stderr, "Unable to get $PATH.\n");
- return NULL;
- }
-
- /* The value return by getenv() is readonly */
- path = strdup(path);
-
- tok = strtok_r(path, ":", &sp);
- while (tok != NULL) {
- snprintf(fullpath, sizeof(fullpath) - 1, "%s/%s", tok, name);
-
- if (access(fullpath, X_OK) == 0) {
- free(path);
- return strdup(fullpath);
- }
-
- tok = strtok_r( NULL, ":", &sp );
- }
-
- free(path);
- return NULL;
-}
-
-#ifdef BUILD_WITH_MAIN
-int main(int argc, char **argv)
-{
- int i;
- char *fullpath;
-
- for (i=1; i<argc; i++) {
- fullpath = pfind(argv[i], NULL);
- if (fullpath == NULL)
- printf("Unable to find %s in $PATH.\n", argv[i]);
- else
- printf("Found %s @ %s.\n", argv[i], fullpath);
- }
-}
-#endif
diff --git a/core/org.eclipse.cdt.core.linux/library/pty.c b/core/org.eclipse.cdt.core.linux/library/pty.c
deleted file mode 100644
index ce25c965919..00000000000
--- a/core/org.eclipse.cdt.core.linux/library/pty.c
+++ /dev/null
@@ -1,73 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2010 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - initial API and implementation
- * Wind River Systems, Inc.
- *******************************************************************************/
-#include <sys/ioctl.h>
-#include "PTY.h"
-#include "openpty.h"
-
-/*
- * Class: org_eclipse_cdt_utils_pty_PTY
- * Method: forkpty
- * Signature: ()I
- */
-JNIEXPORT jstring JNICALL
-Java_org_eclipse_cdt_utils_pty_PTY_openMaster (JNIEnv *env, jobject jobj, jboolean console) {
- jfieldID fid; /* Store the field ID */
- jstring jstr = NULL;
- int master = -1;
- char line[1024]; /* FIXME: Should be enough */
- jclass cls;
-
- line[0] = '\0';
-
- master = ptym_open(line);
- if (master >= 0) {
- // turn off echo
- if (console) {
- set_noecho(master);
- }
-
- /* Get a reference to the obj's class */
- cls = (*env)->GetObjectClass(env, jobj);
-
- /* Set the master fd. */
- fid = (*env)->GetFieldID(env, cls, "master", "I");
- if (fid == NULL) {
- return NULL;
- }
- (*env)->SetIntField(env, jobj, fid, (jint)master);
-
- /* Create a new String for the slave. */
- jstr = (*env)->NewStringUTF(env, line);
- }
- return jstr;
-}
-
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTY_change_1window_1size
- (JNIEnv *env, jobject jobj, jint fdm, jint width, jint height)
-{
-#ifdef TIOCGWINSZ
- struct winsize win;
-
- win.ws_col = width;
- win.ws_row = height;
- win.ws_xpixel = 0;
- win.ws_ypixel = 0;
-
- return ioctl(fdm, TIOCSWINSZ, &win);
-#else
- return 0;
-#endif
-}
-
diff --git a/core/org.eclipse.cdt.core.linux/library/ptyio.c b/core/org.eclipse.cdt.core.linux/library/ptyio.c
deleted file mode 100644
index e022db11f99..00000000000
--- a/core/org.eclipse.cdt.core.linux/library/ptyio.c
+++ /dev/null
@@ -1,120 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002 - 2005 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - initial API and implementation
- *******************************************************************************/
-#include <jni.h>
-#include <stdio.h>
-#include <PTYInputStream.h>
-#include <PTYOutputStream.h>
-#include <unistd.h>
-
-/* Header for class _org_eclipse_cdt_utils_pty_PTYInputStream */
-/* Header for class _org_eclipse_cdt_utils_pty_PTYOutputStream */
-
-/*
- * Class: org_eclipse_cdt_utils_pty_PTYInputStream
- * Method: read0
- * Signature: (I)I
- */
-JNIEXPORT jint JNICALL
-Java_org_eclipse_cdt_utils_pty_PTYInputStream_read0(JNIEnv * env,
- jobject jobj,
- jint jfd,
- jbyteArray buf,
- jint buf_len)
-{
- int fd;
- int status;
- jbyte *data;
- int data_len;
-
- data = (*env)->GetByteArrayElements(env, buf, 0);
- data_len = buf_len;
- fd = jfd;
-
- status = read( fd, data, data_len );
- (*env)->ReleaseByteArrayElements(env, buf, data, 0);
-
- if (status == 0) {
- /* EOF. */
- status = -1;
- } else if (status == -1) {
- /* Error, toss an exception */
- /* Ignore the error for now, the debugger will attempt
- * to close this multiple time. */
-#if 0
- jclass exception = (*env)->FindClass(env, "java/io/IOException");
- if (exception == NULL) {
- /* Give up. */
- return -1;
- }
- (*env)->ThrowNew(env, exception, "read error");
-#endif
- }
-
- return status;
-}
-
-
-/*
- * Class: org_eclipse_cdt_utils_pty_PTYInputStream
- * Method: close0
- * Signature: (I)I
- */
-JNIEXPORT jint JNICALL
-Java_org_eclipse_cdt_utils_pty_PTYInputStream_close0(JNIEnv * env,
- jobject jobj,
- jint fd)
-{
- return close(fd);
-}
-
-/*
- * Class: org_eclipse_cdt_utils_pty_PTYOutputStream
- * Method: write0
- * Signature: (II)I
- */
-JNIEXPORT jint JNICALL
-Java_org_eclipse_cdt_utils_pty_PTYOutputStream_write0(JNIEnv * env,
- jobject jobj,
- jint jfd,
- jbyteArray buf,
- jint buf_len)
-{
- int status;
- int fd;
- jbyte *data;
- int data_len;
-
- data = (*env)->GetByteArrayElements(env, buf, 0);
- data_len = buf_len;
- fd = jfd;
-
- status = write(fd, data, data_len);
- (*env)->ReleaseByteArrayElements(env, buf, data, 0);
-
- return status;
-}
-
-
-/*
- * Class: org_eclipse_cdt_utils_pty_PTYOutputStream
- * Method: close0
- * Signature: (I)I
- */
-JNIEXPORT jint JNICALL
-Java_org_eclipse_cdt_utils_pty_PTYOutputStream_close0(JNIEnv * env,
- jobject jobj,
- jint fd)
-{
- return close(fd);
-}
diff --git a/core/org.eclipse.cdt.core.linux/library/spawner.c b/core/org.eclipse.cdt.core.linux/library/spawner.c
deleted file mode 100644
index 623b1382cf8..00000000000
--- a/core/org.eclipse.cdt.core.linux/library/spawner.c
+++ /dev/null
@@ -1,305 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2010 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - initial API and implementation
- * Wind River Systems, Inc.
- * Mikhail Zabaluev (Nokia) - bug 82744
- *******************************************************************************/
-#include <unistd.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <signal.h>
-#include <string.h>
-#include <jni.h>
-
-#include "exec0.h"
-#include <Spawner.h>
-
-
-#define DEBUGIT 0
-
-
-/*
- * Header for class org_eclipse_cdt_utils_spawner_Spawner
- */
-
-
-#if DEBUGIT
-static void print_array(char **c_array)
-{
- if (c_array) {
- char **p = c_array;
- for (; *p; p++) {
- if (*p) {
- fprintf(stderr, " %s", *p);
- }
- }
- } else {
- fprintf(stderr, "null");
- }
- fprintf(stderr, "\n");
-}
-#endif
-
-
-static char **alloc_c_array(JNIEnv * env, jobjectArray j_array)
-{
- int i;
- jint c_array_size = (*env)->GetArrayLength(env, j_array);
- char **c_array = calloc(c_array_size + 1, sizeof(*c_array));
-
- if (c_array == NULL)
- return NULL;
-
- for (i = 0; i < c_array_size; i++) {
- jstring j_str =
- (jstring) (*env)->GetObjectArrayElement(env, j_array, i);
- const char *c_str = (*env)->GetStringUTFChars(env, j_str, NULL);
- c_array[i] = (char *) strdup(c_str);
- (*env)->ReleaseStringUTFChars(env, j_str, c_str);
- (*env)->DeleteLocalRef(env, j_str);
- }
-
- return c_array;
-}
-
-
-static void free_c_array(char **c_array)
-{
- if (c_array) {
- char **p = c_array;
- for (; *p; p++) {
- if (*p) {
- free(*p);
- }
- }
- free(c_array);
- }
-}
-
-
-/*
- * Class: org_eclipse_cdt_utils_spawner_Spawner
- * Method: exec2
- * Signature: ([Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[ILorg/eclipse/cdt/utils/pty/PTY;)I
- */
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_exec2
- (JNIEnv *env, jobject jobj, jobjectArray jcmd, jobjectArray jenv, jstring jdir, jintArray jchannels,
- jstring jslaveName, jint masterFD, jboolean console)
-{
- jint *channels = (*env)->GetIntArrayElements(env, jchannels, 0);
- const char *dirpath = (*env)->GetStringUTFChars(env, jdir, NULL);
- const char *pts_name = (*env)->GetStringUTFChars(env, jslaveName, NULL);
- char **cmd = NULL;
- char **envp = NULL;
- int fd[3];
- pid_t pid = -1;
-
- if (channels == NULL)
- goto bail_out;
-
- cmd = alloc_c_array(env, jcmd);
- if (cmd == NULL)
- goto bail_out;
-
- envp = alloc_c_array(env, jenv);
- if (envp == NULL)
- goto bail_out;
-
-#if DEBUGIT
- fprintf(stderr, "command:");
- print_array(cmd);
- fprintf(stderr, "Envp:");
- print_array(envp);
- fprintf(stderr, "dirpath: %s\n", dirpath);
- fprintf(stderr, "pts_name: %s\n", pts_name);
-#endif
-
- pid = exec_pty(cmd[0], cmd, envp, dirpath, fd, pts_name, masterFD, console);
- if (pid < 0)
- goto bail_out;
-
- channels[0] = fd[0];
- channels[1] = fd[1];
- channels[2] = fd[2];
-
- bail_out:
- (*env)->ReleaseIntArrayElements(env, jchannels, channels, 0);
- (*env)->ReleaseStringUTFChars(env, jdir, dirpath);
- (*env)->ReleaseStringUTFChars(env, jslaveName, pts_name);
- if (cmd)
- free_c_array(cmd);
- if (envp)
- free_c_array(envp);
- return pid;
-}
-
-
-JNIEXPORT jint JNICALL
-Java_org_eclipse_cdt_utils_spawner_Spawner_exec1(JNIEnv * env, jobject jobj,
- jobjectArray jcmd,
- jobjectArray jenv,
- jstring jdir)
-{
- const char *dirpath = (*env)->GetStringUTFChars(env, jdir, NULL);
- char **cmd = NULL;
- char **envp = NULL;
- pid_t pid = -1;
-
- cmd = alloc_c_array(env, jcmd);
- if (cmd == NULL)
- goto bail_out;
-
- envp = alloc_c_array(env, jenv);
- if (envp == NULL)
- goto bail_out;
-
-#if DEBUGIT
- fprintf(stderr, "command:");
- print_array(cmd);
- fprintf(stderr, "Envp:");
- print_array(envp);
- fprintf(stderr, "dirpath: %s\n", dirpath);
-#endif
-
- pid = exec0(cmd[0], cmd, envp, dirpath, NULL);
- if (pid < 0)
- goto bail_out;
-
- bail_out:
- (*env)->ReleaseStringUTFChars(env, jdir, dirpath);
- if (cmd)
- free_c_array(cmd);
- if (envp)
- free_c_array(envp);
- return pid;
-}
-
-/*
- * Class: org_eclipse_cdt_utils_spawner_Spawner
- * Method: exec0
- * Signature: ([Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[I)I
- */
-JNIEXPORT jint JNICALL
-Java_org_eclipse_cdt_utils_spawner_Spawner_exec0(JNIEnv * env, jobject jobj,
- jobjectArray jcmd,
- jobjectArray jenv,
- jstring jdir,
- jintArray jchannels)
-{
- jint *channels = (*env)->GetIntArrayElements(env, jchannels, 0);
- const char *dirpath = (*env)->GetStringUTFChars(env, jdir, NULL);
- char **cmd = NULL;
- char **envp = NULL;
- int fd[3];
- pid_t pid = -1;
-
- if (channels == NULL)
- goto bail_out;
-
- cmd = alloc_c_array(env, jcmd);
- if (cmd == NULL)
- goto bail_out;
-
- envp = alloc_c_array(env, jenv);
- if (envp == NULL)
- goto bail_out;
-
-#if DEBUGIT
- fprintf(stderr, "command:");
- print_array(cmd);
- fprintf(stderr, "Envp:");
- print_array(envp);
- fprintf(stderr, "dirpath: %s\n", dirpath);
-#endif
-
- pid = exec0(cmd[0], cmd, envp, dirpath, fd);
- if (pid < 0)
- goto bail_out;
-
- channels[0] = fd[0];
- channels[1] = fd[1];
- channels[2] = fd[2];
-
- bail_out:
- (*env)->ReleaseIntArrayElements(env, jchannels, channels, 0);
- (*env)->ReleaseStringUTFChars(env, jdir, dirpath);
- if (cmd)
- free_c_array(cmd);
- if (envp)
- free_c_array(envp);
- return pid;
-}
-
-/*
- * Class: org_eclipse_cdt_utils_spawner_Spawner
- * Method: raise
- * Signature: (II)I
- */
-JNIEXPORT jint JNICALL
-Java_org_eclipse_cdt_utils_spawner_Spawner_raise(JNIEnv * env, jobject jobj,
- jint pid, jint sig)
-{
- int status = -1;
-
- switch (sig) {
- case 0: /* NOOP */
- status = killpg(pid, 0);
- if(status == -1) {
- status = kill(pid, 0);
- }
- break;
-
- case 2: /* INTERRUPT */
- status = killpg(pid, SIGINT);
- if(status == -1) {
- status = kill(pid, SIGINT);
- }
- break;
-
- case 9: /* KILL */
- status = killpg(pid, SIGKILL);
- if(status == -1) {
- status = kill(pid, SIGKILL);
- }
- break;
-
- case 15: /* TERM */
- status = killpg(pid, SIGTERM);
- if(status == -1) {
- status = kill(pid, SIGTERM);
- }
- break;
-
- default:
- status = killpg(pid, sig); /* WHAT ?? */
- if(status == -1) {
- status = kill(pid, sig); /* WHAT ?? */
- }
- break;
- }
-
- return status;
-}
-
-
-
-/*
- * Class: org_eclipse_cdt_utils_spawner_Spawner
- * Method: waitFor
- * Signature: (I)I
- */
-JNIEXPORT jint JNICALL
-Java_org_eclipse_cdt_utils_spawner_Spawner_waitFor(JNIEnv * env,
- jobject jobj, jint pid)
-{
- return wait0(pid);
-}
diff --git a/core/org.eclipse.cdt.core.linux/pom.xml b/core/org.eclipse.cdt.core.linux/pom.xml
index 607ec82a4c7..437c92c60dd 100644
--- a/core/org.eclipse.cdt.core.linux/pom.xml
+++ b/core/org.eclipse.cdt.core.linux/pom.xml
@@ -1,4 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2017, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
@@ -7,111 +17,14 @@
<parent>
<groupId>org.eclipse.cdt</groupId>
<artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
+ <version>10.7.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
- <version>5.3.1-SNAPSHOT</version>
+ <version>6.0.100-SNAPSHOT</version>
<artifactId>org.eclipse.cdt.core.linux</artifactId>
<packaging>eclipse-plugin</packaging>
- <profiles>
- <profile>
- <id>build-native.linux.x86_64</id>
- <activation>
- <property>
- <name>native</name>
- <value>linux.x86_64</value>
- </property>
- </activation>
- <build>
- <plugins>
- <plugin>
- <artifactId>maven-antrun-plugin</artifactId>
- <executions>
- <execution>
- <id>natives</id>
- <phase>process-resources</phase>
- <configuration>
- <target>
- <exec executable="make" newenvironment="false" dir="./library">
- <arg value="ARCH=x86_64" />
- </exec>
- </target>
- </configuration>
- <goals>
- <goal>run</goal>
- </goals>
- </execution>
- <execution>
- <id>clean-natives</id>
- <phase>clean</phase>
- <configuration>
- <target>
- <exec executable="make" newenvironment="false" dir="./library">
- <arg value="ARCH=x86_64" />
- <arg value="clean" />
- </exec>
- </target>
- </configuration>
- <goals>
- <goal>run</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
- </profile>
- <profile>
- <id>build-native.linux.ppc64le</id>
- <activation>
- <property>
- <name>native</name>
- <value>linux.ppc64le</value>
- </property>
- </activation>
- <build>
- <plugins>
- <plugin>
- <artifactId>maven-antrun-plugin</artifactId>
- <executions>
- <execution>
- <id>natives</id>
- <phase>process-resources</phase>
- <configuration>
- <target>
- <exec executable="make" newenvironment="false" dir="./library">
- <arg value="ARCH=ppc64le" />
- </exec>
- </target>
- </configuration>
- <goals>
- <goal>run</goal>
- </goals>
- </execution>
- <execution>
- <id>clean-natives</id>
- <phase>clean</phase>
- <configuration>
- <target>
- <exec executable="make" newenvironment="false" dir="./library">
- <arg value="ARCH=ppc64le" />
- <arg value="clean" />
- </exec>
- </target>
- </configuration>
- <goals>
- <goal>run</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
- </profile>
- </profiles>
-
<build>
<plugins>
<plugin>
@@ -130,6 +43,11 @@
<environment>
<os>linux</os>
<ws>gtk</ws>
+ <arch>aarch64</arch>
+ </environment>
+ <environment>
+ <os>linux</os>
+ <ws>gtk</ws>
<arch>ppc64le</arch>
</environment>
</environments>
diff --git a/core/org.eclipse.cdt.core.macosx/.classpath b/core/org.eclipse.cdt.core.macosx/.classpath
index 01836c4842f..e801ebfb468 100644
--- a/core/org.eclipse.cdt.core.macosx/.classpath
+++ b/core/org.eclipse.cdt.core.macosx/.classpath
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/core/org.eclipse.cdt.core.macosx/.project b/core/org.eclipse.cdt.core.macosx/.project
index d56d04e05eb..da4e1b0ada8 100644
--- a/core/org.eclipse.cdt.core.macosx/.project
+++ b/core/org.eclipse.cdt.core.macosx/.project
@@ -20,9 +20,15 @@
<arguments>
</arguments>
</buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
</natures>
</projectDescription>
diff --git a/core/org.eclipse.cdt.core.macosx/.settings/org.eclipse.core.resources.prefs b/core/org.eclipse.cdt.core.macosx/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/core/org.eclipse.cdt.core.macosx/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/core/org.eclipse.cdt.core.macosx/.settings/org.eclipse.jdt.core.prefs b/core/org.eclipse.cdt.core.macosx/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/core/org.eclipse.cdt.core.macosx/.settings/org.eclipse.jdt.core.prefs
+++ b/core/org.eclipse.cdt.core.macosx/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/core/org.eclipse.cdt.core.macosx/.settings/org.eclipse.jdt.ui.prefs b/core/org.eclipse.cdt.core.macosx/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/core/org.eclipse.cdt.core.macosx/.settings/org.eclipse.jdt.ui.prefs
+++ b/core/org.eclipse.cdt.core.macosx/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/core/org.eclipse.cdt.core.macosx/META-INF/MANIFEST.MF b/core/org.eclipse.cdt.core.macosx/META-INF/MANIFEST.MF
index 36b40a4f96f..8f49113c8bd 100644
--- a/core/org.eclipse.cdt.core.macosx/META-INF/MANIFEST.MF
+++ b/core/org.eclipse.cdt.core.macosx/META-INF/MANIFEST.MF
@@ -2,10 +2,10 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %fragmentName.macosx
Bundle-SymbolicName: org.eclipse.cdt.core.macosx; singleton:=true
-Bundle-Version: 5.3.1.qualifier
+Bundle-Version: 6.0.600.qualifier
Bundle-Vendor: %providerName
-Fragment-Host: org.eclipse.cdt.core.native;bundle-version="[5.7.0,6.0.0)"
+Fragment-Host: org.eclipse.cdt.core.native;bundle-version="[6.0.0,7.0.0)"
Bundle-Localization: plugin
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Eclipse-PlatformFilter: (osgi.os=macosx)
Automatic-Module-Name: org.eclipse.cdt.core.macosx
diff --git a/core/org.eclipse.cdt.core.macosx/about.html b/core/org.eclipse.cdt.core.macosx/about.html
index 164f781a8fd..b3134865230 100644
--- a/core/org.eclipse.cdt.core.macosx/about.html
+++ b/core/org.eclipse.cdt.core.macosx/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/core/org.eclipse.cdt.core.macosx/build.properties b/core/org.eclipse.cdt.core.macosx/build.properties
index 424f3017722..3630460b11f 100644
--- a/core/org.eclipse.cdt.core.macosx/build.properties
+++ b/core/org.eclipse.cdt.core.macosx/build.properties
@@ -17,6 +17,5 @@ bin.includes = fragment.xml,\
os/,\
META-INF/,\
plugin.properties
-src.includes = about.html,\
- library/
+src.includes = about.html
source.. = src/
diff --git a/core/org.eclipse.cdt.core.macosx/library/.gitignore b/core/org.eclipse.cdt.core.macosx/library/.gitignore
deleted file mode 100644
index f9e528a2229..00000000000
--- a/core/org.eclipse.cdt.core.macosx/library/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-*.o
-/ltmain.sh
diff --git a/core/org.eclipse.cdt.core.macosx/library/Makefile b/core/org.eclipse.cdt.core.macosx/library/Makefile
deleted file mode 100644
index 62eeec8cdb3..00000000000
--- a/core/org.eclipse.cdt.core.macosx/library/Makefile
+++ /dev/null
@@ -1,135 +0,0 @@
-#*******************************************************************************
-# Copyright (c) 2002, 2015 QNX Software Systems and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# QNX Software Systems - initial API and implementation
-# Alex Blewitt - MacOSX with a 64-bit vm
-# Martin Oberhuber (Wind River) - Bug 476709 - Fix change_window_size()
-#*******************************************************************************/
-
-# makefile for libspawner.so
-# See http://developer.apple.com/documentation/Java/Conceptual/Java141Development/Core_APIs/chapter_6_section_4.html
-
-JAVA_HOME = $(shell echo /Library/Java/JavaVirtualMachines/jdk1.[78].0_*.jdk/Contents/Home)
-
-# Defaults which can be overridden.
-OS = macosx
-ARCH_X86 = x86
-ARCH_X86_64 = x86_64
-
-CC=gcc
-LD=libtool
-CPPFLAGS = -I. -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/darwin
-CFLAGS +=-fPIC -D_REENTRANT
-
-ARCH_FLAG_X86 = -arch i386
-ARCH_FLAG_X86_64 = -arch x86_64
-
-INSTALL_DIR_X86 = ../os/$(OS)/$(ARCH_X86)
-INSTALL_DIR_X86_64 = ../os/$(OS)/$(ARCH_X86_64)
-
-LIB_NAME_FULL_SPAWNER_X86 = $(INSTALL_DIR_X86)/libspawner.jnilib
-LIB_NAME_FULL_SPAWNER_X86_64 = $(INSTALL_DIR_X86_64)/libspawner.jnilib
-OBJS_SPAWNER_X86 = spawner_$(ARCH_X86).o \
- io_$(ARCH_X86).o \
- exec_unix_$(ARCH_X86).o \
- exec_pty_$(ARCH_X86).o \
- openpty_$(ARCH_X86).o \
- pfind_$(ARCH_X86).o
-OBJS_SPAWNER_X86_64 = spawner_$(ARCH_X86_64).o \
- io_$(ARCH_X86_64).o \
- exec_unix_$(ARCH_X86_64).o \
- exec_pty_$(ARCH_X86_64).o \
- openpty_$(ARCH_X86_64).o \
- pfind_$(ARCH_X86_64).o
-
-LIB_NAME_FULL_PTY_X86 = $(INSTALL_DIR_X86)/libpty.jnilib
-LIB_NAME_FULL_PTY_X86_64 = $(INSTALL_DIR_X86_64)/libpty.jnilib
-OBJS_PTY_X86 = openpty_$(ARCH_X86).o pty_$(ARCH_X86).o ptyio_$(ARCH_X86).o
-OBJS_PTY_X86_64 = openpty_$(ARCH_X86_64).o pty_$(ARCH_X86_64).o ptyio_$(ARCH_X86_64).o
-
-OBJS_X86 = $(OBJS_SPAWNER_X86) $(OBJS_PTY_X86) $(OBJS_SERIAL_X86)
-OBJS_X86_64 = $(OBJS_SPAWNER_X86_64) $(OBJS_PTY_X86_64) $(OBJS_SERIAL_X86_64)
-
-all: x86 x86_64
-
-x86: $(LIB_NAME_FULL_SPAWNER_X86) $(LIB_NAME_FULL_PTY_X86)
-
-x86_64: $(LIB_NAME_FULL_SPAWNER_X86_64) $(LIB_NAME_FULL_PTY_X86_64)
-
-rebuild: clean all
-
-$(LIB_NAME_FULL_SPAWNER_X86) : $(OBJS_SPAWNER_X86)
- mkdir -p $(INSTALL_DIR_X86)
- $(CC) -dynamiclib $(ARCH_FLAG_X86) -o $(LIB_NAME_FULL_SPAWNER_X86) $(OBJS_SPAWNER_X86) -lc -framework JavaVM
-
-$(LIB_NAME_FULL_SPAWNER_X86_64) : $(OBJS_SPAWNER_X86_64)
- mkdir -p $(INSTALL_DIR_X86_64)
- $(CC) -dynamiclib $(ARCH_FLAG_X86_64) -o $(LIB_NAME_FULL_SPAWNER_X86_64) $(OBJS_SPAWNER_X86_64) -lc -framework JavaVM
-
-$(LIB_NAME_FULL_PTY_X86): $(OBJS_PTY_X86)
- mkdir -p $(INSTALL_DIR_X86)
- $(CC) -dynamiclib $(ARCH_FLAG_X86) -o $(LIB_NAME_FULL_PTY_X86) $(OBJS_PTY_X86) -lc -framework JavaVM
-
-$(LIB_NAME_FULL_PTY_X86_64): $(OBJS_PTY_X86_64)
- mkdir -p $(INSTALL_DIR_X86_64)
- $(CC) -dynamiclib $(ARCH_FLAG_X86_64) -o $(LIB_NAME_FULL_PTY_X86_64) $(OBJS_PTY_X86_64) -lc -framework JavaVM
-
-spawner_$(ARCH_X86).o: spawner.c
- $(CC) $(CFLAGS) $(ARCH_FLAG_X86) $(CPPFLAGS) -c -o $@ spawner.c
-
-io_$(ARCH_X86).o: io.c
- $(CC) $(CFLAGS) $(ARCH_FLAG_X86) $(CPPFLAGS) -c -o $@ io.c
-
-exec_unix_$(ARCH_X86).o: exec_unix.c
- $(CC) $(CFLAGS) $(ARCH_FLAG_X86) $(CPPFLAGS) -c -o $@ exec_unix.c
-
-exec_pty_$(ARCH_X86).o: exec_pty.c
- $(CC) $(CFLAGS) $(ARCH_FLAG_X86) $(CPPFLAGS) -c -o $@ exec_pty.c
-
-openpty_$(ARCH_X86).o: openpty.c
- $(CC) $(CFLAGS) $(ARCH_FLAG_X86) $(CPPFLAGS) -c -o $@ openpty.c
-
-pfind_$(ARCH_X86).o: pfind.c
- $(CC) $(CFLAGS) $(ARCH_FLAG_X86) $(CPPFLAGS) -c -o $@ pfind.c
-
-pty_$(ARCH_X86).o: pty.c
- $(CC) $(CFLAGS) $(ARCH_FLAG_X86) $(CPPFLAGS) -c -o $@ pty.c
-
-ptyio_$(ARCH_X86).o: ptyio.c
- $(CC) $(CFLAGS) $(ARCH_FLAG_X86) $(CPPFLAGS) -c -o $@ ptyio.c
-
-spawner_$(ARCH_X86_64).o: spawner.c
- $(CC) $(CFLAGS) $(ARCH_FLAG_X86_64) $(CPPFLAGS) -c -o $@ spawner.c
-
-io_$(ARCH_X86_64).o: io.c
- $(CC) $(CFLAGS) $(ARCH_FLAG_X86_64) $(CPPFLAGS) -c -o $@ io.c
-
-exec_unix_$(ARCH_X86_64).o: exec_unix.c
- $(CC) $(CFLAGS) $(ARCH_FLAG_X86_64) $(CPPFLAGS) -c -o $@ exec_unix.c
-
-exec_pty_$(ARCH_X86_64).o: exec_pty.c
- $(CC) $(CFLAGS) $(ARCH_FLAG_X86_64) $(CPPFLAGS) -c -o $@ exec_pty.c
-
-openpty_$(ARCH_X86_64).o: openpty.c
- $(CC) $(CFLAGS) $(ARCH_FLAG_X86_64) $(CPPFLAGS) -c -o $@ openpty.c
-
-pfind_$(ARCH_X86_64).o: pfind.c
- $(CC) $(CFLAGS) $(ARCH_FLAG_X86_64) $(CPPFLAGS) -c -o $@ pfind.c
-
-pty_$(ARCH_X86_64).o: pty.c
- $(CC) $(CFLAGS) $(ARCH_FLAG_X86_64) $(CPPFLAGS) -c -o $@ pty.c
-
-ptyio_$(ARCH_X86_64).o: ptyio.c
- $(CC) $(CFLAGS) $(ARCH_FLAG_X86_64) $(CPPFLAGS) -c -o $@ ptyio.c
-
-clean :
- $(RM) $(OBJS_X86) $(LIB_NAME_FULL_SPAWNER_X86) $(LIB_NAME_FULL_PTY_X86)
- $(RM) $(OBJS_X86_64) $(LIB_NAME_FULL_SPAWNER_X86_64) $(LIB_NAME_FULL_PTY_X86_64)
diff --git a/core/org.eclipse.cdt.core.macosx/library/PTY.h b/core/org.eclipse.cdt.core.macosx/library/PTY.h
deleted file mode 100644
index f717942a01d..00000000000
--- a/core/org.eclipse.cdt.core.macosx/library/PTY.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/* DO NOT EDIT THIS FILE - it is machine generated */
-#include <jni.h>
-/* Header for class org_eclipse_cdt_utils_pty_PTY */
-
-#ifndef _Included_org_eclipse_cdt_utils_pty_PTY
-#define _Included_org_eclipse_cdt_utils_pty_PTY
-#ifdef __cplusplus
-extern "C" {
-#endif
-/*
- * Class: org_eclipse_cdt_utils_pty_PTY
- * Method: openMaster
- * Signature: (Z)Ljava/lang/String;
- */
-JNIEXPORT jstring JNICALL Java_org_eclipse_cdt_utils_pty_PTY_openMaster
- (JNIEnv *, jobject, jboolean);
-
-/*
- * Class: org_eclipse_cdt_utils_pty_PTY
- * Method: change_window_size
- * Signature: (III)I
- */
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTY_change_1window_1size
- (JNIEnv *, jobject, jint, jint, jint);
-
-#ifdef __cplusplus
-}
-#endif
-#endif
diff --git a/core/org.eclipse.cdt.core.macosx/library/PTYInputStream.h b/core/org.eclipse.cdt.core.macosx/library/PTYInputStream.h
deleted file mode 100644
index e7349272b56..00000000000
--- a/core/org.eclipse.cdt.core.macosx/library/PTYInputStream.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/* DO NOT EDIT THIS FILE - it is machine generated */
-#include <jni.h>
-/* Header for class org_eclipse_cdt_utils_pty_PTYInputStream */
-
-#ifndef _Included_org_eclipse_cdt_utils_pty_PTYInputStream
-#define _Included_org_eclipse_cdt_utils_pty_PTYInputStream
-#ifdef __cplusplus
-extern "C" {
-#endif
-#undef org_eclipse_cdt_utils_pty_PTYInputStream_SKIP_BUFFER_SIZE
-#define org_eclipse_cdt_utils_pty_PTYInputStream_SKIP_BUFFER_SIZE 2048L
-/* Inaccessible static: skipBuffer */
-/*
- * Class: org_eclipse_cdt_utils_pty_PTYInputStream
- * Method: read0
- * Signature: (I[BI)I
- */
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTYInputStream_read0
- (JNIEnv *, jobject, jint, jbyteArray, jint);
-
-/*
- * Class: org_eclipse_cdt_utils_pty_PTYInputStream
- * Method: close0
- * Signature: (I)I
- */
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTYInputStream_close0
- (JNIEnv *, jobject, jint);
-
-#ifdef __cplusplus
-}
-#endif
-#endif
diff --git a/core/org.eclipse.cdt.core.macosx/library/PTYOutputStream.h b/core/org.eclipse.cdt.core.macosx/library/PTYOutputStream.h
deleted file mode 100644
index fb28491060e..00000000000
--- a/core/org.eclipse.cdt.core.macosx/library/PTYOutputStream.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/* DO NOT EDIT THIS FILE - it is machine generated */
-#include <jni.h>
-/* Header for class org_eclipse_cdt_utils_pty_PTYOutputStream */
-
-#ifndef _Included_org_eclipse_cdt_utils_pty_PTYOutputStream
-#define _Included_org_eclipse_cdt_utils_pty_PTYOutputStream
-#ifdef __cplusplus
-extern "C" {
-#endif
-/*
- * Class: org_eclipse_cdt_utils_pty_PTYOutputStream
- * Method: write0
- * Signature: (I[BI)I
- */
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTYOutputStream_write0
- (JNIEnv *, jobject, jint, jbyteArray, jint);
-
-/*
- * Class: org_eclipse_cdt_utils_pty_PTYOutputStream
- * Method: close0
- * Signature: (I)I
- */
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTYOutputStream_close0
- (JNIEnv *, jobject, jint);
-
-#ifdef __cplusplus
-}
-#endif
-#endif
diff --git a/core/org.eclipse.cdt.core.macosx/library/Spawner.h b/core/org.eclipse.cdt.core.macosx/library/Spawner.h
deleted file mode 100644
index 02727f98a88..00000000000
--- a/core/org.eclipse.cdt.core.macosx/library/Spawner.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/* DO NOT EDIT THIS FILE - it is machine generated */
-#include <jni.h>
-/* Header for class org_eclipse_cdt_utils_spawner_Spawner */
-
-#ifndef _Included_org_eclipse_cdt_utils_spawner_Spawner
-#define _Included_org_eclipse_cdt_utils_spawner_Spawner
-#ifdef __cplusplus
-extern "C" {
-#endif
-/*
- * Class: org_eclipse_cdt_utils_spawner_Spawner
- * Method: exec0
- * Signature: ([Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[I)I
- */
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_exec0
- (JNIEnv *, jobject, jobjectArray, jobjectArray, jstring, jintArray);
-
-/*
- * Class: org_eclipse_cdt_utils_spawner_Spawner
- * Method: exec1
- * Signature: ([Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)I
- */
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_exec1
- (JNIEnv *, jobject, jobjectArray, jobjectArray, jstring);
-
-/*
- * Class: org_eclipse_cdt_utils_spawner_Spawner
- * Method: exec2
- * Signature: ([Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[ILjava/lang/String;IZ)I
- */
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_exec2
- (JNIEnv *, jobject, jobjectArray, jobjectArray, jstring, jintArray, jstring, jint, jboolean);
-
-/*
- * Class: org_eclipse_cdt_utils_spawner_Spawner
- * Method: raise
- * Signature: (II)I
- */
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_raise
- (JNIEnv *, jobject, jint, jint);
-
-/*
- * Class: org_eclipse_cdt_utils_spawner_Spawner
- * Method: waitFor
- * Signature: (I)I
- */
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_waitFor
- (JNIEnv *, jobject, jint);
-
-#ifdef __cplusplus
-}
-#endif
-#endif
diff --git a/core/org.eclipse.cdt.core.macosx/library/SpawnerInputStream.h b/core/org.eclipse.cdt.core.macosx/library/SpawnerInputStream.h
deleted file mode 100644
index ecf8f8c6a78..00000000000
--- a/core/org.eclipse.cdt.core.macosx/library/SpawnerInputStream.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/* DO NOT EDIT THIS FILE - it is machine generated */
-#include <jni.h>
-/* Header for class com_qnx_tools_utils_spawner_SpawnerInputStream */
-
-#ifndef _Included_com_qnx_tools_utils_spawner_SpawnerInputStream
-#define _Included_com_qnx_tools_utils_spawner_SpawnerInputStream
-#ifdef __cplusplus
-extern "C" {
-#endif
-#undef com_qnx_tools_utils_spawner_SpawnerInputStream_SKIP_BUFFER_SIZE
-#define com_qnx_tools_utils_spawner_SpawnerInputStream_SKIP_BUFFER_SIZE 2048L
-/* Inaccessible static: skipBuffer */
-/*
- * Class: org_elipse_cdt_utils_spawner_SpawnerInputStream
- * Method: read0
- * Signature: (I[BI)I
- */
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_SpawnerInputStream_read0
- (JNIEnv *, jobject, jint, jbyteArray, jint);
-
-/*
- * Class: org_eclipse_cdt_utils_spawner_SpawnerInputStream
- * Method: close0
- * Signature: (I)I
- */
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_SpawnerInputStream_close0
- (JNIEnv *, jobject, jint);
-
-#ifdef __cplusplus
-}
-#endif
-#endif
diff --git a/core/org.eclipse.cdt.core.macosx/library/SpawnerOutputStream.h b/core/org.eclipse.cdt.core.macosx/library/SpawnerOutputStream.h
deleted file mode 100644
index 444d71c698c..00000000000
--- a/core/org.eclipse.cdt.core.macosx/library/SpawnerOutputStream.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/* DO NOT EDIT THIS FILE - it is machine generated */
-#include <jni.h>
-/* Header for class com_qnx_tools_utils_spawner_SpawnerOutputStream */
-
-#ifndef _Included_com_qnx_tools_utils_spawner_SpawnerOutputStream
-#define _Included_com_qnx_tools_utils_spawner_SpawnerOutputStream
-#ifdef __cplusplus
-extern "C" {
-#endif
-/*
- * Class: org_eclipse_cdt_utils_spawner_SpawnerOutputStream
- * Method: write0
- * Signature: (I[BI)I
- */
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_SpawnerOutputStream_write0
- (JNIEnv *, jobject, jint, jbyteArray, jint);
-
-/*
- * Class: org_eclipse_cdt_utils_spawner_SpawnerOutputStream
- * Method: close0
- * Signature: (I)I
- */
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_SpawnerOutputStream_close0
- (JNIEnv *, jobject, jint);
-
-#ifdef __cplusplus
-}
-#endif
-#endif
diff --git a/core/org.eclipse.cdt.core.macosx/library/exec0.h b/core/org.eclipse.cdt.core.macosx/library/exec0.h
deleted file mode 100644
index b1e24c44fd6..00000000000
--- a/core/org.eclipse.cdt.core.macosx/library/exec0.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2010 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - initial API and implementation
- *******************************************************************************/
-#include <unistd.h>
-#include <sys/wait.h>
-#include <sys/types.h>
-#include <signal.h>
-#include <errno.h>
-
-extern pid_t exec0(const char *path, char *const argv[],
- char *const envp[], const char *dirpath,
- int channels[3] );
-
-extern pid_t exec_pty(const char *path, char *const argv[],
- char *const envp[], const char *dirpath,
- int channels[3], const char *pts_name, int fdm,
- int console);
-
-extern int wait0(pid_t pid);
diff --git a/core/org.eclipse.cdt.core.macosx/library/exec_pty.c b/core/org.eclipse.cdt.core.macosx/library/exec_pty.c
deleted file mode 100644
index e020053db41..00000000000
--- a/core/org.eclipse.cdt.core.macosx/library/exec_pty.c
+++ /dev/null
@@ -1,189 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2010 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - initial API and implementation
- * Wind River Systems, Inc.
- * Mikhail Zabaluev (Nokia) - bug 82744
- * Mikhail Sennikovsky - bug 145737
- *******************************************************************************/
-#include "exec0.h"
-#include "openpty.h"
-#include <unistd.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <errno.h>
-#include <string.h>
-#include <libgen.h>
-#include <stdlib.h>
-#include <termios.h>
-
-/* from pfind.c */
-extern char *pfind(const char *name, char * const envp[]);
-
-pid_t
-exec_pty(const char *path, char *const argv[], char *const envp[],
- const char *dirpath, int channels[3], const char *pts_name, int fdm, int console)
-{
- int pipe2[2];
- pid_t childpid;
- char *full_path;
-
- /*
- * We use pfind() to check that the program exists and is an executable.
- * If not pass the error up. Also execve() wants a full path.
- */
- full_path = pfind(path, envp);
- if (full_path == NULL) {
- fprintf(stderr, "Unable to find full path for \"%s\"\n", (path) ? path : "");
- return -1;
- }
-
- /*
- * Make sure we can create our pipes before forking.
- */
- if (channels != NULL && console) {
- if (pipe(pipe2) < 0) {
- fprintf(stderr, "%s(%d): returning due to error: %s\n", __FUNCTION__, __LINE__, strerror(errno));
- free(full_path);
- return -1;
- }
- }
-
- childpid = fork();
-
- if (childpid < 0) {
- fprintf(stderr, "%s(%d): returning due to error: %s\n", __FUNCTION__, __LINE__, strerror(errno));
- free(full_path);
- return -1;
- } else if (childpid == 0) { /* child */
-
- chdir(dirpath);
-
- if (channels != NULL) {
- int fds;
-
- if (!console && setsid() < 0) {
- perror("setsid()");
- return -1;
- }
-
- fds = ptys_open(fdm, pts_name);
- if (fds < 0) {
- fprintf(stderr, "%s(%d): returning due to error: %s\n", __FUNCTION__, __LINE__, strerror(errno));
- return -1;
- }
-
- /* Close the read end of pipe2 */
- if (console && close(pipe2[0]) == -1) {
- perror("close(pipe2[0]))");
- }
-
- /* close the master, no need in the child */
- close(fdm);
-
- if (console) {
- set_noecho(fds);
- if (setpgid(getpid(), getpid()) < 0) {
- perror("setpgid()");
- return -1;
- }
- }
-
- /* redirections */
- dup2(fds, STDIN_FILENO); /* dup stdin */
- dup2(fds, STDOUT_FILENO); /* dup stdout */
- if (console) {
- dup2(pipe2[1], STDERR_FILENO); /* dup stderr */
- } else {
- dup2(fds, STDERR_FILENO); /* dup stderr */
- }
- close(fds); /* done with fds. */
- }
-
- /* Close all the fd's in the child */
- {
- int fdlimit = sysconf(_SC_OPEN_MAX);
- int fd = 3;
-
- while (fd < fdlimit)
- close(fd++);
- }
-
- if (envp[0] == NULL) {
- execv(full_path, argv);
- } else {
- execve(full_path, argv, envp);
- }
-
- _exit(127);
-
- } else if (childpid != 0) { /* parent */
- if (console) {
- set_noecho(fdm);
- }
- if (channels != NULL) {
- channels[0] = fdm; /* Input Stream. */
- channels[1] = fdm; /* Output Stream. */
- if (console) {
- /* close the write end of pipe1 */
- if (close(pipe2[1]) == -1)
- perror("close(pipe2[1])");
- channels[2] = pipe2[0]; /* stderr Stream. */
- } else {
- channels[2] = fdm; /* Error Stream. */
- }
- }
-
- free(full_path);
- return childpid;
- }
-
- free(full_path);
- return -1; /*NOT REACHED */
-}
-#ifdef __STAND_ALONE__
-int main(int argc, char **argv, char **envp) {
- const char *path = "./bufferring_test";
- int channels[3] = { -1, -1, -1};
- int status;
- FILE *app_stdin;
- FILE *app_stdout;
- FILE *app_stderr;
- char pts_name[32];
- int fdm;
- char buffer[32];
-
- fdm = ptym_open(pts_name);
- status = exec_pty(path, argv, envp, ".", channels, pts_name, fdm);
- if (status >= 0) {
- app_stdin = fdopen(channels[0], "w");
- app_stdout = fdopen(channels[1], "r");
- app_stderr = fdopen(channels[2], "r");
- if (app_stdout == NULL || app_stderr == NULL || app_stdin == NULL) {
- fprintf(stderr, "PROBLEMS\n");
- } else {
- fputs("foo\n", app_stdin);
- fputs("bar\n", app_stdin);
- while(fgets(buffer, sizeof buffer, app_stdout) != NULL) {
- fprintf(stdout, "STDOUT: %s\n", buffer);
- }
- while(fgets(buffer, sizeof buffer, app_stderr) != NULL) {
- fprintf(stdout, "STDERR: %s\n", buffer);
- }
- }
- }
- fputs("bye\n", stdout);
- close(channels[0]);
- close(channels[1]);
- close(channels[2]);
- return 0;
-}
-#endif
diff --git a/core/org.eclipse.cdt.core.macosx/library/exec_unix.c b/core/org.eclipse.cdt.core.macosx/library/exec_unix.c
deleted file mode 100644
index 4feb805f15d..00000000000
--- a/core/org.eclipse.cdt.core.macosx/library/exec_unix.c
+++ /dev/null
@@ -1,161 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2010 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - initial API and implementation
- * Wind River Systems, Inc.
- * Mikhail Sennikovsky - bug 145737
- *******************************************************************************/
-#include "exec0.h"
-#include <unistd.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <errno.h>
-#include <string.h>
-#include <libgen.h>
-#include <stdlib.h>
-
-/* from pfind.c */
-extern char *pfind(const char *name, char * const envp[]);
-
-pid_t
-exec0(const char *path, char *const argv[], char *const envp[],
- const char *dirpath, int channels[3])
-{
- int pipe0[2], pipe1[2], pipe2[2];
- pid_t childpid;
- char *full_path;
-
- /*
- * We use pfind() to check that the program exists and is an executable.
- * If not pass the error up. Also execve() wants a full path.
- */
- full_path = pfind(path, envp);
- if (full_path == NULL) {
- fprintf(stderr, "Unable to find full path for \"%s\"\n", (path) ? path : "");
- return -1;
- }
-
- /*
- * Make sure we can create our pipes before forking.
- */
- if (channels != NULL) {
- if (pipe(pipe0) < 0 || pipe(pipe1) < 0 || pipe(pipe2) < 0) {
- fprintf(stderr, "%s(%d): returning due to error.\n",
- __FUNCTION__, __LINE__);
- free(full_path);
- return -1;
- }
- }
-
- childpid = fork();
-
- if (childpid < 0) {
- fprintf(stderr, "%s(%d): returning due to error: %s\n",
- __FUNCTION__, __LINE__, strerror(errno));
- free(full_path);
- return -1;
- } else if (childpid == 0) { /* child */
- char *ptr;
-
- chdir(dirpath);
-
- if (channels != NULL) {
- /* Close the write end of pipe0 */
- if (close(pipe0[1]) == -1)
- perror("close(pipe0[1])");
-
- /* Close the read end of pipe1 */
- if (close(pipe1[0]) == -1)
- perror("close(pipe1[0])");
-
- /* Close the read end of pipe2 */
- if (close(pipe2[0]) == -1)
- perror("close(pipe2[0]))");
-
- /* redirections */
- dup2(pipe0[0], STDIN_FILENO); /* dup stdin */
- dup2(pipe1[1], STDOUT_FILENO); /* dup stdout */
- dup2(pipe2[1], STDERR_FILENO); /* dup stderr */
- }
-
- /* Close all the fd's in the child */
- {
- int fdlimit = sysconf(_SC_OPEN_MAX);
- int fd = 3;
-
- while (fd < fdlimit)
- close(fd++);
- }
-
- setpgid(getpid(), getpid());
-
- if (envp[0] == NULL) {
- execv(full_path, argv);
- } else {
- execve(full_path, argv, envp);
- }
-
- _exit(127);
-
- } else if (childpid != 0) { /* parent */
-
- char b;
-
- if (channels != NULL) {
- /* close the read end of pipe1 */
- if (close(pipe0[0]) == -1)
- perror("close(pipe0[0])");
-
- /* close the write end of pipe2 */
- if (close(pipe1[1]) == -1)
- perror("close(pipe1[1])");
-
- /* close the write end of pipe2 */
- if (close(pipe2[1]) == -1)
- perror("close(pipe2[1])");
-
- channels[0] = pipe0[1]; /* Output Stream. */
- channels[1] = pipe1[0]; /* Input Stream. */
- channels[2] = pipe2[0]; /* Input Stream. */
- }
-
- free(full_path);
- return childpid;
- }
-
- free(full_path);
- return -1; /*NOT REACHED */
-}
-
-
-int wait0(pid_t pid)
-{
- int status;
- int val = -1;
-
- if (pid < 0)
- return -1;
-
- for (;;) {
- if (waitpid(pid, &status, 0) < 0) {
- if (errno == EINTR) {
- // interrupted system call - retry
- continue;
- }
- }
- break;
- }
- if (WIFEXITED(status)) {
- val = WEXITSTATUS(status);
- }
-
- return val;
-}
diff --git a/core/org.eclipse.cdt.core.macosx/library/io.c b/core/org.eclipse.cdt.core.macosx/library/io.c
deleted file mode 100644
index 17d12ae639d..00000000000
--- a/core/org.eclipse.cdt.core.macosx/library/io.c
+++ /dev/null
@@ -1,116 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002 - 2005 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - initial API and implementation
- *******************************************************************************/
-#include <jni.h>
-#include <stdio.h>
-#include <SpawnerInputStream.h>
-#include <SpawnerOutputStream.h>
-#include <unistd.h>
-
-/* Header for class _org_eclipse_cdt_utils_spawner_SpawnerInputStream */
-/* Header for class _org_eclipse_cdt_utils_spawner_SpawnerOutputStream */
-
-/*
- * Class: org_eclipse_cdt_utils_spawner_SpawnerInputStream
- * Method: read0
- * Signature: (I)I
- */
-JNIEXPORT jint JNICALL
-Java_org_eclipse_cdt_utils_spawner_SpawnerInputStream_read0(JNIEnv * env,
- jobject jobj,
- jint jfd,
- jbyteArray buf,
- jint buf_len)
-{
- int fd;
- int status;
- jbyte *data;
- int data_len;
-
- data = (*env)->GetByteArrayElements(env, buf, 0);
- data_len = buf_len;
- fd = jfd;
-
- status = read( fd, data, data_len );
- (*env)->ReleaseByteArrayElements(env, buf, data, 0);
-
- if (status == 0) {
- /* EOF. */
- status = -1;
- } else if (status == -1) {
- /* Error, toss an exception */
- jclass exception = (*env)->FindClass(env, "java/io/IOException");
- if (exception == NULL) {
- /* Give up. */
- return -1;
- }
- (*env)->ThrowNew(env, exception, "read error");
- }
-
- return status;
-}
-
-
-/*
- * Class: org_eclipse_cdt_utils_spawner_SpawnerInputStream
- * Method: close0
- * Signature: (I)I
- */
-JNIEXPORT jint JNICALL
-Java_org_eclipse_cdt_utils_spawner_SpawnerInputStream_close0(JNIEnv * env,
- jobject jobj,
- jint fd)
-{
- return close(fd);
-}
-
-/*
- * Class: org_eclipse_cdt_utils_spawner_SpawnerOutputStream
- * Method: write0
- * Signature: (II)I
- */
-JNIEXPORT jint JNICALL
-Java_org_eclipse_cdt_utils_spawner_SpawnerOutputStream_write0(JNIEnv * env,
- jobject jobj,
- jint jfd,
- jbyteArray buf,
- jint buf_len)
-{
- int status;
- int fd;
- jbyte *data;
- int data_len;
-
- data = (*env)->GetByteArrayElements(env, buf, 0);
- data_len = buf_len;
- fd = jfd;
-
- status = write(fd, data, data_len);
- (*env)->ReleaseByteArrayElements(env, buf, data, 0);
-
- return status;
-}
-
-
-/*
- * Class: org_eclipse_cdt_utils_spawner_SpawnerOutputStream
- * Method: close0
- * Signature: (I)I
- */
-JNIEXPORT jint JNICALL
-Java_org_eclipse_cdt_utils_spawner_SpawnerOutputStream_close0(JNIEnv * env,
- jobject jobj,
- jint fd)
-{
- return close(fd);
-}
diff --git a/core/org.eclipse.cdt.core.macosx/library/openpty.c b/core/org.eclipse.cdt.core.macosx/library/openpty.c
deleted file mode 100644
index 933349220f9..00000000000
--- a/core/org.eclipse.cdt.core.macosx/library/openpty.c
+++ /dev/null
@@ -1,134 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2017 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - initial API and implementation
- * Wind River Systems, Inc.
- * Mikhail Zabaluev (Nokia) - bug 82744
- * Corey Ashford (IBM) - bug 272370, bug 272372
- * Martin Oberhuber - [519886] align w/ Linux, support OSX 10.13
- *******************************************************************************/
-
-/* _XOPEN_SOURCE is needed to bring in the header for ptsname */
-#define _XOPEN_SOURCE
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/ioctl.h>
-#include <fcntl.h>
-#include <termios.h>
-#include <errno.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <string.h>
-#include <grp.h>
-
-#include <stdlib.h>
-
-/**
- * This is taken from R. W. Stevens book.
- * Alain Magloire.
- */
-
-int ptym_open (char *pts_name);
-int ptys_open (int fdm, const char * pts_name);
-void set_noecho(int fd);
-
-int
-openpty(int *amaster, int *aslave, char *name, struct termios *termp, struct winsize *winp)
-{
- char line[20];
- line[0]=0;
- *amaster = ptym_open(line);
- if (*amaster < 0)
- return -1;
- *aslave = ptys_open(*amaster, line);
- if (*aslave < 0) {
- close(*amaster);
- return -1;
- }
-
- if (name)
- strcpy(name, line);
-#ifndef TCSAFLUSH
-#define TCSAFLUSH TCSETAF
-#endif
- if (termp)
- (void) tcsetattr(*aslave, TCSAFLUSH, termp);
-#ifdef TIOCSWINSZ
- if (winp)
- (void) ioctl(*aslave, TIOCSWINSZ, (char *)winp);
-#endif
- return 0;
-}
-
-void
-set_noecho(int fd)
-{
- struct termios stermios;
- if (tcgetattr(fd, &stermios) < 0) {
- return ;
- }
-
- /* turn off echo */
- stermios.c_lflag &= ~(ECHO | ECHOE | ECHOK | ECHONL);
- /* Turn off the NL to CR/NL mapping ou output. */
- /*stermios.c_oflag &= ~(ONLCR);*/
-
- stermios.c_iflag |= (IGNCR);
-
- tcsetattr(fd, TCSANOW, &stermios);
-}
-
-int
-ptym_open(char * pts_name)
-{
- int fdm;
- char *ptr;
-
- strcpy(pts_name, "/dev/ptmx");
- fdm = posix_openpt(O_RDWR|O_NOCTTY);
- if (fdm < 0)
- return -1;
- if (grantpt(fdm) < 0) { /* grant access to slave */
- close(fdm);
- return -2;
- }
- if (unlockpt(fdm) < 0) { /* clear slave's lock flag */
- close(fdm);
- return -3;
- }
- ptr = ptsname(fdm);
- if (ptr == NULL) { /* get slave's name */
- close (fdm);
- return -4;
- }
- strcpy(pts_name, ptr); /* return name of slave */
- return fdm; /* return fd of master */
-}
-
-int
-ptys_open(int fdm, const char * pts_name)
-{
- int fds;
- /* following should allocate controlling terminal */
- fds = open(pts_name, O_RDWR);
- if (fds < 0) {
- close(fdm);
- return -5;
- }
-
-#if defined(TIOCSCTTY)
- /* TIOCSCTTY is the BSD way to acquire a controlling terminal. */
- if (ioctl(fds, TIOCSCTTY, (char *)0) < 0) {
- // ignore error: this is expected in console-mode
- }
-#endif
- return fds;
-}
diff --git a/core/org.eclipse.cdt.core.macosx/library/openpty.h b/core/org.eclipse.cdt.core.macosx/library/openpty.h
deleted file mode 100644
index 43d2b8bcb97..00000000000
--- a/core/org.eclipse.cdt.core.macosx/library/openpty.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2010 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - initial API and implementation
- *******************************************************************************/
-#ifndef _OPENPTY_H
-#define _OPENPTY_H
-int ptym_open (char *pts_name);
-int ptys_open (int fdm, const char * pts_name);
-void set_noecho(int fd);
-#endif
diff --git a/core/org.eclipse.cdt.core.macosx/library/pfind.c b/core/org.eclipse.cdt.core.macosx/library/pfind.c
deleted file mode 100644
index 01b9e5cc054..00000000000
--- a/core/org.eclipse.cdt.core.macosx/library/pfind.c
+++ /dev/null
@@ -1,112 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2011 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - initial API and implementation
- * Wind River Systems, Inc.
- * Mikhail Sennikovsky - bug 145737
- * Everton Rufino Constantino (IBM) - bug 237611
- *******************************************************************************/
-/*
- * pfind.c - Search for a binary in $PATH.
- */
-
-#include <stdio.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <string.h>
-#include <limits.h>
-
-#ifndef PATH_MAX
-#define PATH_MAX 1024
-#endif
-
-#define PATH_DEF "PATH="
-const int path_def_len = 5; /* strlen(PATH_DEF); */
-
-char * path_val(char * const envp[])
-{
- int i;
- if (envp == NULL || envp[0] == NULL)
- return getenv("PATH" );
-
- for(i = 0; envp[i] != NULL; i++){
- char* p = envp[i];
- if(!strncmp(PATH_DEF, p, path_def_len)){
- return p + path_def_len;
- }
- }
-
- return NULL;
-}
-
-char * pfind(const char *name, char * const envp[])
-{
- char *tok;
- char *sp;
- char *path;
- char fullpath[PATH_MAX+1];
-
- /* Sanity check. */
- if (name == NULL) {
- fprintf(stderr, "pfind(): Null argument.\n");
- return NULL;
- }
-
- /* For absolute name or name with a path, check if it is an executable. */
- if (name[0] == '/' || name[0] == '.') {
- if (access(name, X_OK) == 0) {
- return strdup(name);
- }
- return NULL;
- }
-
- /* Search in the PATH environment. */
- path = path_val( envp );
-
- if (path == NULL || strlen(path) <= 0) {
- fprintf(stderr, "Unable to get $PATH.\n");
- return NULL;
- }
-
- /* The value return by getenv() is readonly */
- path = strdup(path);
-
- tok = strtok_r(path, ":", &sp);
- while (tok != NULL) {
- snprintf(fullpath, sizeof(fullpath) - 1, "%s/%s", tok, name);
-
- if (access(fullpath, X_OK) == 0) {
- free(path);
- return strdup(fullpath);
- }
-
- tok = strtok_r( NULL, ":", &sp );
- }
-
- free(path);
- return NULL;
-}
-
-#ifdef BUILD_WITH_MAIN
-int main(int argc, char **argv)
-{
- int i;
- char *fullpath;
-
- for (i=1; i<argc; i++) {
- fullpath = pfind(argv[i], NULL);
- if (fullpath == NULL)
- printf("Unable to find %s in $PATH.\n", argv[i]);
- else
- printf("Found %s @ %s.\n", argv[i], fullpath);
- }
-}
-#endif
diff --git a/core/org.eclipse.cdt.core.macosx/library/pty.c b/core/org.eclipse.cdt.core.macosx/library/pty.c
deleted file mode 100644
index e6ebd9015a2..00000000000
--- a/core/org.eclipse.cdt.core.macosx/library/pty.c
+++ /dev/null
@@ -1,74 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2015 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - initial API and implementation
- * Martin Oberhuber (Wind River) - Bug 476709 - Fix change_window_size()
- *******************************************************************************/
-#include "PTY.h"
-#include "openpty.h"
-
-#include <sys/ioctl.h>
-
-/*
- * Class: org_eclipse_cdt_utils_pty_PTY
- * Method: forkpty
- * Signature: ()I
- */
-JNIEXPORT jstring JNICALL
-Java_org_eclipse_cdt_utils_pty_PTY_openMaster (JNIEnv *env, jobject jobj, jboolean console) {
- jfieldID fid; /* Store the field ID */
- jstring jstr = NULL;
- int master = -1;
- char line[1024]; /* FIXME: Should be enough */
- jclass cls;
-
- line[0] = '\0';
-
- master = ptym_open(line);
- if (master >= 0) {
- if (console) {
- // turn off echo
- set_noecho(master);
- }
-
- /* Get a reference to the obj's class */
- cls = (*env)->GetObjectClass(env, jobj);
-
- /* Set the master fd. */
- fid = (*env)->GetFieldID(env, cls, "master", "I");
- if (fid == NULL) {
- return NULL;
- }
- (*env)->SetIntField(env, jobj, fid, (jint)master);
-
- /* Create a new String for the slave. */
- jstr = (*env)->NewStringUTF(env, line);
- }
- return jstr;
-}
-
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTY_change_1window_1size
- (JNIEnv *env, jobject jobj, jint fdm, jint width, jint height)
-{
-#ifdef TIOCSWINSZ
- struct winsize win;
-
- win.ws_col = width;
- win.ws_row = height;
- win.ws_xpixel = 0;
- win.ws_ypixel = 0;
-
- return ioctl(fdm, TIOCSWINSZ, &win);
-#else
-#error no TIOCSWINSZ
- return 0;
-#endif
-}
diff --git a/core/org.eclipse.cdt.core.macosx/library/ptyio.c b/core/org.eclipse.cdt.core.macosx/library/ptyio.c
deleted file mode 100644
index e022db11f99..00000000000
--- a/core/org.eclipse.cdt.core.macosx/library/ptyio.c
+++ /dev/null
@@ -1,120 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002 - 2005 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - initial API and implementation
- *******************************************************************************/
-#include <jni.h>
-#include <stdio.h>
-#include <PTYInputStream.h>
-#include <PTYOutputStream.h>
-#include <unistd.h>
-
-/* Header for class _org_eclipse_cdt_utils_pty_PTYInputStream */
-/* Header for class _org_eclipse_cdt_utils_pty_PTYOutputStream */
-
-/*
- * Class: org_eclipse_cdt_utils_pty_PTYInputStream
- * Method: read0
- * Signature: (I)I
- */
-JNIEXPORT jint JNICALL
-Java_org_eclipse_cdt_utils_pty_PTYInputStream_read0(JNIEnv * env,
- jobject jobj,
- jint jfd,
- jbyteArray buf,
- jint buf_len)
-{
- int fd;
- int status;
- jbyte *data;
- int data_len;
-
- data = (*env)->GetByteArrayElements(env, buf, 0);
- data_len = buf_len;
- fd = jfd;
-
- status = read( fd, data, data_len );
- (*env)->ReleaseByteArrayElements(env, buf, data, 0);
-
- if (status == 0) {
- /* EOF. */
- status = -1;
- } else if (status == -1) {
- /* Error, toss an exception */
- /* Ignore the error for now, the debugger will attempt
- * to close this multiple time. */
-#if 0
- jclass exception = (*env)->FindClass(env, "java/io/IOException");
- if (exception == NULL) {
- /* Give up. */
- return -1;
- }
- (*env)->ThrowNew(env, exception, "read error");
-#endif
- }
-
- return status;
-}
-
-
-/*
- * Class: org_eclipse_cdt_utils_pty_PTYInputStream
- * Method: close0
- * Signature: (I)I
- */
-JNIEXPORT jint JNICALL
-Java_org_eclipse_cdt_utils_pty_PTYInputStream_close0(JNIEnv * env,
- jobject jobj,
- jint fd)
-{
- return close(fd);
-}
-
-/*
- * Class: org_eclipse_cdt_utils_pty_PTYOutputStream
- * Method: write0
- * Signature: (II)I
- */
-JNIEXPORT jint JNICALL
-Java_org_eclipse_cdt_utils_pty_PTYOutputStream_write0(JNIEnv * env,
- jobject jobj,
- jint jfd,
- jbyteArray buf,
- jint buf_len)
-{
- int status;
- int fd;
- jbyte *data;
- int data_len;
-
- data = (*env)->GetByteArrayElements(env, buf, 0);
- data_len = buf_len;
- fd = jfd;
-
- status = write(fd, data, data_len);
- (*env)->ReleaseByteArrayElements(env, buf, data, 0);
-
- return status;
-}
-
-
-/*
- * Class: org_eclipse_cdt_utils_pty_PTYOutputStream
- * Method: close0
- * Signature: (I)I
- */
-JNIEXPORT jint JNICALL
-Java_org_eclipse_cdt_utils_pty_PTYOutputStream_close0(JNIEnv * env,
- jobject jobj,
- jint fd)
-{
- return close(fd);
-}
diff --git a/core/org.eclipse.cdt.core.macosx/library/spawner.c b/core/org.eclipse.cdt.core.macosx/library/spawner.c
deleted file mode 100644
index 623b1382cf8..00000000000
--- a/core/org.eclipse.cdt.core.macosx/library/spawner.c
+++ /dev/null
@@ -1,305 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2010 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - initial API and implementation
- * Wind River Systems, Inc.
- * Mikhail Zabaluev (Nokia) - bug 82744
- *******************************************************************************/
-#include <unistd.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <signal.h>
-#include <string.h>
-#include <jni.h>
-
-#include "exec0.h"
-#include <Spawner.h>
-
-
-#define DEBUGIT 0
-
-
-/*
- * Header for class org_eclipse_cdt_utils_spawner_Spawner
- */
-
-
-#if DEBUGIT
-static void print_array(char **c_array)
-{
- if (c_array) {
- char **p = c_array;
- for (; *p; p++) {
- if (*p) {
- fprintf(stderr, " %s", *p);
- }
- }
- } else {
- fprintf(stderr, "null");
- }
- fprintf(stderr, "\n");
-}
-#endif
-
-
-static char **alloc_c_array(JNIEnv * env, jobjectArray j_array)
-{
- int i;
- jint c_array_size = (*env)->GetArrayLength(env, j_array);
- char **c_array = calloc(c_array_size + 1, sizeof(*c_array));
-
- if (c_array == NULL)
- return NULL;
-
- for (i = 0; i < c_array_size; i++) {
- jstring j_str =
- (jstring) (*env)->GetObjectArrayElement(env, j_array, i);
- const char *c_str = (*env)->GetStringUTFChars(env, j_str, NULL);
- c_array[i] = (char *) strdup(c_str);
- (*env)->ReleaseStringUTFChars(env, j_str, c_str);
- (*env)->DeleteLocalRef(env, j_str);
- }
-
- return c_array;
-}
-
-
-static void free_c_array(char **c_array)
-{
- if (c_array) {
- char **p = c_array;
- for (; *p; p++) {
- if (*p) {
- free(*p);
- }
- }
- free(c_array);
- }
-}
-
-
-/*
- * Class: org_eclipse_cdt_utils_spawner_Spawner
- * Method: exec2
- * Signature: ([Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[ILorg/eclipse/cdt/utils/pty/PTY;)I
- */
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_exec2
- (JNIEnv *env, jobject jobj, jobjectArray jcmd, jobjectArray jenv, jstring jdir, jintArray jchannels,
- jstring jslaveName, jint masterFD, jboolean console)
-{
- jint *channels = (*env)->GetIntArrayElements(env, jchannels, 0);
- const char *dirpath = (*env)->GetStringUTFChars(env, jdir, NULL);
- const char *pts_name = (*env)->GetStringUTFChars(env, jslaveName, NULL);
- char **cmd = NULL;
- char **envp = NULL;
- int fd[3];
- pid_t pid = -1;
-
- if (channels == NULL)
- goto bail_out;
-
- cmd = alloc_c_array(env, jcmd);
- if (cmd == NULL)
- goto bail_out;
-
- envp = alloc_c_array(env, jenv);
- if (envp == NULL)
- goto bail_out;
-
-#if DEBUGIT
- fprintf(stderr, "command:");
- print_array(cmd);
- fprintf(stderr, "Envp:");
- print_array(envp);
- fprintf(stderr, "dirpath: %s\n", dirpath);
- fprintf(stderr, "pts_name: %s\n", pts_name);
-#endif
-
- pid = exec_pty(cmd[0], cmd, envp, dirpath, fd, pts_name, masterFD, console);
- if (pid < 0)
- goto bail_out;
-
- channels[0] = fd[0];
- channels[1] = fd[1];
- channels[2] = fd[2];
-
- bail_out:
- (*env)->ReleaseIntArrayElements(env, jchannels, channels, 0);
- (*env)->ReleaseStringUTFChars(env, jdir, dirpath);
- (*env)->ReleaseStringUTFChars(env, jslaveName, pts_name);
- if (cmd)
- free_c_array(cmd);
- if (envp)
- free_c_array(envp);
- return pid;
-}
-
-
-JNIEXPORT jint JNICALL
-Java_org_eclipse_cdt_utils_spawner_Spawner_exec1(JNIEnv * env, jobject jobj,
- jobjectArray jcmd,
- jobjectArray jenv,
- jstring jdir)
-{
- const char *dirpath = (*env)->GetStringUTFChars(env, jdir, NULL);
- char **cmd = NULL;
- char **envp = NULL;
- pid_t pid = -1;
-
- cmd = alloc_c_array(env, jcmd);
- if (cmd == NULL)
- goto bail_out;
-
- envp = alloc_c_array(env, jenv);
- if (envp == NULL)
- goto bail_out;
-
-#if DEBUGIT
- fprintf(stderr, "command:");
- print_array(cmd);
- fprintf(stderr, "Envp:");
- print_array(envp);
- fprintf(stderr, "dirpath: %s\n", dirpath);
-#endif
-
- pid = exec0(cmd[0], cmd, envp, dirpath, NULL);
- if (pid < 0)
- goto bail_out;
-
- bail_out:
- (*env)->ReleaseStringUTFChars(env, jdir, dirpath);
- if (cmd)
- free_c_array(cmd);
- if (envp)
- free_c_array(envp);
- return pid;
-}
-
-/*
- * Class: org_eclipse_cdt_utils_spawner_Spawner
- * Method: exec0
- * Signature: ([Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[I)I
- */
-JNIEXPORT jint JNICALL
-Java_org_eclipse_cdt_utils_spawner_Spawner_exec0(JNIEnv * env, jobject jobj,
- jobjectArray jcmd,
- jobjectArray jenv,
- jstring jdir,
- jintArray jchannels)
-{
- jint *channels = (*env)->GetIntArrayElements(env, jchannels, 0);
- const char *dirpath = (*env)->GetStringUTFChars(env, jdir, NULL);
- char **cmd = NULL;
- char **envp = NULL;
- int fd[3];
- pid_t pid = -1;
-
- if (channels == NULL)
- goto bail_out;
-
- cmd = alloc_c_array(env, jcmd);
- if (cmd == NULL)
- goto bail_out;
-
- envp = alloc_c_array(env, jenv);
- if (envp == NULL)
- goto bail_out;
-
-#if DEBUGIT
- fprintf(stderr, "command:");
- print_array(cmd);
- fprintf(stderr, "Envp:");
- print_array(envp);
- fprintf(stderr, "dirpath: %s\n", dirpath);
-#endif
-
- pid = exec0(cmd[0], cmd, envp, dirpath, fd);
- if (pid < 0)
- goto bail_out;
-
- channels[0] = fd[0];
- channels[1] = fd[1];
- channels[2] = fd[2];
-
- bail_out:
- (*env)->ReleaseIntArrayElements(env, jchannels, channels, 0);
- (*env)->ReleaseStringUTFChars(env, jdir, dirpath);
- if (cmd)
- free_c_array(cmd);
- if (envp)
- free_c_array(envp);
- return pid;
-}
-
-/*
- * Class: org_eclipse_cdt_utils_spawner_Spawner
- * Method: raise
- * Signature: (II)I
- */
-JNIEXPORT jint JNICALL
-Java_org_eclipse_cdt_utils_spawner_Spawner_raise(JNIEnv * env, jobject jobj,
- jint pid, jint sig)
-{
- int status = -1;
-
- switch (sig) {
- case 0: /* NOOP */
- status = killpg(pid, 0);
- if(status == -1) {
- status = kill(pid, 0);
- }
- break;
-
- case 2: /* INTERRUPT */
- status = killpg(pid, SIGINT);
- if(status == -1) {
- status = kill(pid, SIGINT);
- }
- break;
-
- case 9: /* KILL */
- status = killpg(pid, SIGKILL);
- if(status == -1) {
- status = kill(pid, SIGKILL);
- }
- break;
-
- case 15: /* TERM */
- status = killpg(pid, SIGTERM);
- if(status == -1) {
- status = kill(pid, SIGTERM);
- }
- break;
-
- default:
- status = killpg(pid, sig); /* WHAT ?? */
- if(status == -1) {
- status = kill(pid, sig); /* WHAT ?? */
- }
- break;
- }
-
- return status;
-}
-
-
-
-/*
- * Class: org_eclipse_cdt_utils_spawner_Spawner
- * Method: waitFor
- * Signature: (I)I
- */
-JNIEXPORT jint JNICALL
-Java_org_eclipse_cdt_utils_spawner_Spawner_waitFor(JNIEnv * env,
- jobject jobj, jint pid)
-{
- return wait0(pid);
-}
diff --git a/core/org.eclipse.cdt.core.macosx/os/macosx/aarch64/libpty.jnilib b/core/org.eclipse.cdt.core.macosx/os/macosx/aarch64/libpty.jnilib
new file mode 100755
index 00000000000..a8028f753b0
--- /dev/null
+++ b/core/org.eclipse.cdt.core.macosx/os/macosx/aarch64/libpty.jnilib
Binary files differ
diff --git a/core/org.eclipse.cdt.core.macosx/os/macosx/aarch64/libspawner.jnilib b/core/org.eclipse.cdt.core.macosx/os/macosx/aarch64/libspawner.jnilib
new file mode 100755
index 00000000000..1b2ebe73c12
--- /dev/null
+++ b/core/org.eclipse.cdt.core.macosx/os/macosx/aarch64/libspawner.jnilib
Binary files differ
diff --git a/core/org.eclipse.cdt.core.macosx/os/macosx/x86/libpty.jnilib b/core/org.eclipse.cdt.core.macosx/os/macosx/x86/libpty.jnilib
deleted file mode 100755
index 50ba6991d48..00000000000
--- a/core/org.eclipse.cdt.core.macosx/os/macosx/x86/libpty.jnilib
+++ /dev/null
Binary files differ
diff --git a/core/org.eclipse.cdt.core.macosx/os/macosx/x86/libspawner.jnilib b/core/org.eclipse.cdt.core.macosx/os/macosx/x86/libspawner.jnilib
deleted file mode 100755
index bde561aed62..00000000000
--- a/core/org.eclipse.cdt.core.macosx/os/macosx/x86/libspawner.jnilib
+++ /dev/null
Binary files differ
diff --git a/core/org.eclipse.cdt.core.macosx/os/macosx/x86_64/libpty.jnilib b/core/org.eclipse.cdt.core.macosx/os/macosx/x86_64/libpty.jnilib
index b18de5e480c..f3827e81292 100755
--- a/core/org.eclipse.cdt.core.macosx/os/macosx/x86_64/libpty.jnilib
+++ b/core/org.eclipse.cdt.core.macosx/os/macosx/x86_64/libpty.jnilib
Binary files differ
diff --git a/core/org.eclipse.cdt.core.macosx/os/macosx/x86_64/libspawner.jnilib b/core/org.eclipse.cdt.core.macosx/os/macosx/x86_64/libspawner.jnilib
index 8d8c80bac6e..f5fc0ca37d4 100755
--- a/core/org.eclipse.cdt.core.macosx/os/macosx/x86_64/libspawner.jnilib
+++ b/core/org.eclipse.cdt.core.macosx/os/macosx/x86_64/libspawner.jnilib
Binary files differ
diff --git a/core/org.eclipse.cdt.core.macosx/plugin.properties b/core/org.eclipse.cdt.core.macosx/plugin.properties
index 3ea2577f208..fb9494360d3 100644
--- a/core/org.eclipse.cdt.core.macosx/plugin.properties
+++ b/core/org.eclipse.cdt.core.macosx/plugin.properties
@@ -1,2 +1,2 @@
-fragmentName.linux=C/C++ Development Tools Core for Mac OS X
+fragmentName.macosx=C/C++ Development Tools Core for Mac OS X
providerName=Eclipse CDT
diff --git a/core/org.eclipse.cdt.core.macosx/pom.xml b/core/org.eclipse.cdt.core.macosx/pom.xml
index b086fc3708b..faa08aa814f 100644
--- a/core/org.eclipse.cdt.core.macosx/pom.xml
+++ b/core/org.eclipse.cdt.core.macosx/pom.xml
@@ -1,4 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2011, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
@@ -7,11 +17,11 @@
<parent>
<groupId>org.eclipse.cdt</groupId>
<artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
+ <version>10.7.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
- <version>5.3.1-SNAPSHOT</version>
+ <version>6.0.600-SNAPSHOT</version>
<artifactId>org.eclipse.cdt.core.macosx</artifactId>
<packaging>eclipse-plugin</packaging>
@@ -30,9 +40,25 @@
<ws>cocoa</ws>
<arch>x86_64</arch>
</environment>
+ <environment>
+ <os>macosx</os>
+ <ws>cocoa</ws>
+ <arch>aarch64</arch>
+ </environment>
</environments>
</configuration>
</plugin>
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-packaging-plugin</artifactId>
+ <configuration>
+ <!-- When signing binaries, the result is not checked into repo, so the
+ jgit timestamp provider cannot be used. This has the side effect
+ that the version of this bundle needs to be incremented on each
+ CDT release. -->
+ <timestampProvider>default</timestampProvider>
+ </configuration>
+ </plugin>
</plugins>
</build>
diff --git a/core/org.eclipse.cdt.core.native/.classpath b/core/org.eclipse.cdt.core.native/.classpath
index eca7bdba8f0..e801ebfb468 100644
--- a/core/org.eclipse.cdt.core.native/.classpath
+++ b/core/org.eclipse.cdt.core.native/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/core/org.eclipse.cdt.core.native/.options b/core/org.eclipse.cdt.core.native/.options
new file mode 100644
index 00000000000..fe17ebc0cbf
--- /dev/null
+++ b/core/org.eclipse.cdt.core.native/.options
@@ -0,0 +1,9 @@
+org.eclipse.cdt.core.native/debug=false
+
+org.eclipse.cdt.core.native/debug/spawner=false
+org.eclipse.cdt.core.native/debug/spawner/details=false
+org.eclipse.cdt.core.native/debug/spawner/starter=false
+org.eclipse.cdt.core.native/debug/spawner/read_report=false
+
+# Used by org.eclipse.cdt.core.win32 fragment
+org.eclipse.cdt.core.native/debug/win32/registry=false
diff --git a/core/org.eclipse.cdt.core.native/.project b/core/org.eclipse.cdt.core.native/.project
index 16748cc2a7f..7b153603502 100644
--- a/core/org.eclipse.cdt.core.native/.project
+++ b/core/org.eclipse.cdt.core.native/.project
@@ -30,5 +30,6 @@
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.pde.PluginNature</nature>
<nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+ <nature>org.eclipse.cdt.core.cnature</nature>
</natures>
</projectDescription>
diff --git a/core/org.eclipse.cdt.core.native/.settings/org.eclipse.core.resources.prefs b/core/org.eclipse.cdt.core.native/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/core/org.eclipse.cdt.core.native/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/core/org.eclipse.cdt.core.native/.settings/org.eclipse.jdt.core.prefs b/core/org.eclipse.cdt.core.native/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/core/org.eclipse.cdt.core.native/.settings/org.eclipse.jdt.core.prefs
+++ b/core/org.eclipse.cdt.core.native/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/core/org.eclipse.cdt.core.native/.settings/org.eclipse.jdt.ui.prefs b/core/org.eclipse.cdt.core.native/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/core/org.eclipse.cdt.core.native/.settings/org.eclipse.jdt.ui.prefs
+++ b/core/org.eclipse.cdt.core.native/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/core/org.eclipse.cdt.core.native/META-INF/MANIFEST.MF b/core/org.eclipse.cdt.core.native/META-INF/MANIFEST.MF
index d621d34bad7..db1b4c25598 100644
--- a/core/org.eclipse.cdt.core.native/META-INF/MANIFEST.MF
+++ b/core/org.eclipse.cdt.core.native/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.core.native;singleton:=true
-Bundle-Version: 5.10.300.qualifier
+Bundle-Version: 6.2.200.qualifier
Bundle-Activator: org.eclipse.cdt.internal.core.natives.CNativePlugin
Bundle-Vendor: %providerName
Bundle-Localization: plugin
@@ -10,7 +10,9 @@ Export-Package: org.eclipse.cdt.core;native=split;mandatory:=native,
org.eclipse.cdt.utils;native=split;mandatory:=native,
org.eclipse.cdt.utils.pty;version="5.7",
org.eclipse.cdt.utils.spawner;version="5.7"
-Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.1.0,4.0.0)"
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.1.0,4.0.0)",
+ com.sun.jna;bundle-version="[5.6.0,6.0.0)";resolution:=optional,
+ com.sun.jna.platform;bundle-version="[5.6.0,6.0.0)";resolution:=optional
Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Automatic-Module-Name: org.eclipse.cdt.core.native
diff --git a/core/org.eclipse.cdt.core.native/about.html b/core/org.eclipse.cdt.core.native/about.html
index 164f781a8fd..b3134865230 100644
--- a/core/org.eclipse.cdt.core.native/about.html
+++ b/core/org.eclipse.cdt.core.native/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/core/org.eclipse.cdt.core.native/about.ini b/core/org.eclipse.cdt.core.native/about.ini
new file mode 100644
index 00000000000..e07a7bb377e
--- /dev/null
+++ b/core/org.eclipse.cdt.core.native/about.ini
@@ -0,0 +1,24 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%blurb
+
+# Property "windowImage" contains path to window icon (16x16)
+# needed for primary features only
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=cdt_logo_icon32.png
+
+# Property "aboutImage" contains path to product image (500x330 or 115x164)
+# needed for primary features only
+
+# Property "appName" contains name of the application (translated)
+# needed for primary features only
+
+# Property "welcomePerspective" contains the id of the perspective in which the
+# welcome page is to be opened.
+# optional
diff --git a/core/org.eclipse.cdt.core.native/about.mappings b/core/org.eclipse.cdt.core.native/about.mappings
new file mode 100644
index 00000000000..936a8039c3e
--- /dev/null
+++ b/core/org.eclipse.cdt.core.native/about.mappings
@@ -0,0 +1,9 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+# The following should contain the build version.
+# e.g. "0=20200106-1728"
+# This value will be added automatically via the build scripts
+0=${buildId}
diff --git a/core/org.eclipse.cdt.core.native/about.properties b/core/org.eclipse.cdt.core.native/about.properties
new file mode 100644
index 00000000000..b911cf839b4
--- /dev/null
+++ b/core/org.eclipse.cdt.core.native/about.properties
@@ -0,0 +1,32 @@
+###############################################################################
+# Copyright (c) 2014, 2022 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+# about.properties
+# contains externalized strings for about.ini
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# fill-ins are supplied by about.mappings
+# This file should be translated.
+# NOTE TO TRANSLATOR: Please do not translate the featureVersion variable.
+
+
+blurb=C/C++ Development Tooling Native Utilities\n\
+\n\
+Version: {featureVersion}\n\
+Build id: {0}\n\
+\n\
+Copyright (c) 2014, 2022 Contributors to the Eclipse Foundation
+\n\
+See the NOTICE file(s) distributed with this work for additional\n\
+information regarding copyright ownership.\n\
+\n\
+Visit http://www.eclipse.org/cdt
diff --git a/core/org.eclipse.cdt.core.native/build.properties b/core/org.eclipse.cdt.core.native/build.properties
index d0cc82bf6e6..641b4f3e264 100644
--- a/core/org.eclipse.cdt.core.native/build.properties
+++ b/core/org.eclipse.cdt.core.native/build.properties
@@ -15,8 +15,16 @@
bin.includes = plugin.properties,\
about.html,\
.,\
- META-INF/
-src.includes = about.html
+ META-INF/,\
+ about.ini,\
+ about.mappings,\
+ cdt_logo_icon32.png,\
+ about.properties,\
+ plugin.xml,\
+ .options
+src.includes = about.html,\
+ schema/,\
+ native_src/
javadoc.packages = org.eclipse.cdt.utils.*,\
org.eclipse.cdt.utils.pty.*,\
org.eclipse.cdt.utils.spawner.*
diff --git a/core/org.eclipse.cdt.core.native/cdt_logo_icon32.png b/core/org.eclipse.cdt.core.native/cdt_logo_icon32.png
new file mode 100644
index 00000000000..470ca81b327
--- /dev/null
+++ b/core/org.eclipse.cdt.core.native/cdt_logo_icon32.png
Binary files differ
diff --git a/core/org.eclipse.cdt.core.native/native_src/Makefile b/core/org.eclipse.cdt.core.native/native_src/Makefile
new file mode 100644
index 00000000000..e697a513efc
--- /dev/null
+++ b/core/org.eclipse.cdt.core.native/native_src/Makefile
@@ -0,0 +1,197 @@
+#*******************************************************************************
+# Copyright (c) 2002, 2015, 2020 QNX Software Systems and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# QNX Software Systems - initial API and implementation
+# Torbjörn Svensson - Bug 521515 - Adopted jenkins build
+#*******************************************************************************/
+SHELL=/bin/bash -o pipefail
+ifeq ($(JAVA_HOME),)
+$(error JAVA_HOME not set in environment)
+endif
+
+REPRODUCIBLE_BUILD_WRAPPER := $(shell git rev-parse --show-toplevel)/releng/scripts/reproducible_build_wrapper.py
+
+OS_DIR_WIN32_X86_64 := ../../org.eclipse.cdt.core.win32.x86_64/os/win32/x86_64
+OS_DIR_LINUX_X86_64 := ../../org.eclipse.cdt.core.linux.x86_64/os/linux/x86_64
+OS_DIR_LINUX_AARCH64 := ../../org.eclipse.cdt.core.linux.aarch64/os/linux/aarch64
+OS_DIR_LINUX_PPC64LE := ../../org.eclipse.cdt.core.linux.ppc64le/os/linux/ppc64le
+OS_DIR_MACOS_X86_64 := ../../org.eclipse.cdt.core.macosx/os/macosx/x86_64
+OS_DIR_MACOS_AARCH64 := ../../org.eclipse.cdt.core.macosx/os/macosx/aarch64
+
+COMMON_CFLAGS := -Wall -pedantic -Werror
+
+UNAME = $(shell uname)
+ifeq ($(UNAME),Linux)
+LIBS = \
+ $(OS_DIR_WIN32_X86_64)/starter.exe \
+ $(OS_DIR_WIN32_X86_64)/spawner.dll \
+ $(OS_DIR_WIN32_X86_64)/pty.dll \
+ $(OS_DIR_LINUX_X86_64)/libspawner.so \
+ $(OS_DIR_LINUX_X86_64)/libpty.so \
+ $(OS_DIR_LINUX_AARCH64)/libspawner.so \
+ $(OS_DIR_LINUX_AARCH64)/libpty.so \
+ $(OS_DIR_LINUX_PPC64LE)/libspawner.so \
+ $(OS_DIR_LINUX_PPC64LE)/libpty.so \
+ $(OS_DIR_MACOS_X86_64)/libspawner.jnilib \
+ $(OS_DIR_MACOS_X86_64)/libpty.jnilib \
+ $(OS_DIR_MACOS_AARCH64)/libspawner.jnilib \
+ $(OS_DIR_MACOS_AARCH64)/libpty.jnilib
+else
+ifeq ($(UNAME),Darwin)
+LIBS = \
+ $(OS_DIR_MACOS_X86_64)/libspawner.jnilib \
+ $(OS_DIR_MACOS_X86_64)/libpty.jnilib \
+ $(OS_DIR_MACOS_AARCH64)/libspawner.jnilib \
+ $(OS_DIR_MACOS_AARCH64)/libpty.jnilib
+else
+LIBS = \
+ $(OS_DIR_WIN32_X86_64)/starter.exe \
+ $(OS_DIR_WIN32_X86_64)/spawner.dll \
+ $(OS_DIR_WIN32_X86_64)/pty.dll
+endif
+endif
+
+all: $(LIBS)
+
+clean :
+ $(RM) $(LIBS)
+
+rebuild: clean all
+
+MAC_TO_SIGN=$(OS_DIR_MACOS_X86_64)/libspawner.jnilib \
+ $(OS_DIR_MACOS_X86_64)/libpty.jnilib \
+ $(OS_DIR_MACOS_AARCH64)/libspawner.jnilib \
+ $(OS_DIR_MACOS_AARCH64)/libpty.jnilib
+WIN_TO_SIGN=$(OS_DIR_WIN32_X86_64)/starter.exe \
+ $(OS_DIR_WIN32_X86_64)/spawner.dll \
+ $(OS_DIR_WIN32_X86_64)/pty.dll
+### This block of code also exists in native/org.eclipse.cdt.native.serial/native_src/Makefile
+TMPDIR := $(shell mktemp -d -t production-XXXXXXXXXX)
+.PHONY: production
+production: $(MAC_TO_SIGN) $(WIN_TO_SIGN)
+ set -x ; $(foreach tosign,$(MAC_TO_SIGN),\
+ temp=$(TMPDIR)/$(shell basename $(tosign)) && \
+ mv $(tosign) $$temp && \
+ curl -f --silent --show-error -o $(tosign) -F file=@$$temp https://cbi.eclipse.org/macos/codesign/sign && \
+ rm $$temp && \
+ ) true
+ set -x ; $(foreach tosign,$(WIN_TO_SIGN),\
+ temp=$(TMPDIR)/$(shell basename $(tosign)) && \
+ mv $(tosign) $$temp && \
+ curl -f --silent --show-error -o $(tosign) -F file=@$$temp https://cbi.eclipse.org/authenticode/sign && \
+ rm $$temp && \
+ ) true
+ rmdir $(TMPDIR)
+
+
+# Windows x86_64
+# Windows DLLs have a build timestamp in them. This makes it impossible to have reproducible builds.
+# However, x86_64-w64-mingw32-ld on Debian/Ubuntu has a patch that overrides the current date
+# using the SOURCE_DATE_EPOCH environment variable. Call REPRODUCIBLE_BUILD_WRAPPER to make sure the
+# same binary is produced for the same source each time.
+$(OS_DIR_WIN32_X86_64)/starter.exe: win/starter.c win/util.c
+ mkdir -p $(dir $@) && \
+ $(REPRODUCIBLE_BUILD_WRAPPER) \
+ x86_64-w64-mingw32-gcc $(COMMON_CFLAGS) -o $@ -Iinclude -I"$(JAVA_HOME)/include" -I"$(JAVA_HOME)/include/win32" \
+ -DUNICODE \
+ $^ \
+ -lpsapi
+
+$(OS_DIR_WIN32_X86_64)/spawner.dll: win/iostream.c win/raise.c win/spawner.c win/Win32ProcessEx.c win/util.c
+ mkdir -p $(dir $@) && \
+ $(REPRODUCIBLE_BUILD_WRAPPER) \
+ x86_64-w64-mingw32-gcc $(COMMON_CFLAGS) -o $@ -Iinclude -I"$(JAVA_HOME)/include" -I"$(JAVA_HOME)/include/win32" \
+ -DUNICODE \
+ $^ \
+ -Wl,--kill-at --shared
+
+$(OS_DIR_WIN32_X86_64)/pty.dll: win/pty.cpp win/pty_dllmain.cpp win/util.c
+ mkdir -p $(dir $@) && \
+ $(REPRODUCIBLE_BUILD_WRAPPER) \
+ x86_64-w64-mingw32-g++ $(COMMON_CFLAGS) -o $@ -Iinclude -Iwin/include -I"$(JAVA_HOME)/include" -I"$(JAVA_HOME)/include/win32" \
+ -DUNICODE \
+ $^ \
+ -Wl,--kill-at --shared -L$(OS_DIR_WIN32_X86_64) -lwinpty -static-libstdc++ -static-libgcc
+
+# Linux x86_64
+$(OS_DIR_LINUX_X86_64)/libspawner.so: unix/spawner.c unix/io.c unix/exec_unix.c unix/exec_pty.c unix/openpty.c unix/pfind.c
+ mkdir -p $(dir $@) && \
+ x86_64-linux-gnu-gcc $(COMMON_CFLAGS) -m64 -o $@ -Wl,-soname,$(notdir $@) -Iinclude -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux -fpic \
+ -D_REENTRANT -D_GNU_SOURCE \
+ $^ \
+ -shared -lc
+
+$(OS_DIR_LINUX_X86_64)/libpty.so: unix/openpty.c unix/pty.c unix/ptyio.c
+ mkdir -p $(dir $@) && \
+ x86_64-linux-gnu-gcc $(COMMON_CFLAGS) -m64 -o $@ -Wl,-soname,$(notdir $@) -Iinclude -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux -fpic \
+ -D_REENTRANT -D_GNU_SOURCE \
+ $^ \
+ -shared -lc
+
+# Linux aarch64
+$(OS_DIR_LINUX_AARCH64)/libspawner.so: unix/spawner.c unix/io.c unix/exec_unix.c unix/exec_pty.c unix/openpty.c unix/pfind.c
+ mkdir -p $(dir $@) && \
+ aarch64-linux-gnu-gcc $(COMMON_CFLAGS) -o $@ -Wl,-soname,$(notdir $@) -Iinclude -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux -fpic \
+ -D_REENTRANT -D_GNU_SOURCE \
+ $^ \
+ -shared -lc
+
+$(OS_DIR_LINUX_AARCH64)/libpty.so: unix/openpty.c unix/pty.c unix/ptyio.c
+ mkdir -p $(dir $@) && \
+ aarch64-linux-gnu-gcc $(COMMON_CFLAGS) -o $@ -Wl,-soname,$(notdir $@) -Iinclude -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux -fpic \
+ -D_REENTRANT -D_GNU_SOURCE \
+ $^ \
+ -shared -lc
+
+# Linux ppc64le
+$(OS_DIR_LINUX_PPC64LE)/libspawner.so: unix/spawner.c unix/io.c unix/exec_unix.c unix/exec_pty.c unix/openpty.c unix/pfind.c
+ mkdir -p $(dir $@) && \
+ powerpc64le-linux-gnu-gcc $(COMMON_CFLAGS) -m64 -o $@ -Wl,-soname,$(notdir $@) -Iinclude -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux -fpic \
+ -D_REENTRANT -D_GNU_SOURCE \
+ $^ \
+ -shared -lc
+
+$(OS_DIR_LINUX_PPC64LE)/libpty.so: unix/openpty.c unix/pty.c unix/ptyio.c
+ mkdir -p $(dir $@) && \
+ powerpc64le-linux-gnu-gcc -m64 -o $@ -Wl,-soname,$(notdir $@) -Iinclude -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux -fpic \
+ -D_REENTRANT -D_GNU_SOURCE \
+ $^ \
+ -shared -lc
+
+# macos x86_64
+$(OS_DIR_MACOS_X86_64)/libspawner.jnilib: unix/spawner.c unix/io.c unix/exec_unix.c unix/exec_pty.c unix/openpty.c unix/pfind.c
+ mkdir -p $(dir $@) && \
+ x86_64-apple-darwin21.1-clang $(COMMON_CFLAGS) -o $@ -arch x86_64 -Iinclude -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/darwin -fPIC \
+ -D_REENTRANT \
+ $^ \
+ -dynamiclib -lc
+
+$(OS_DIR_MACOS_X86_64)/libpty.jnilib: unix/openpty.c unix/pty.c unix/ptyio.c
+ mkdir -p $(dir $@) && \
+ x86_64-apple-darwin21.1-clang $(COMMON_CFLAGS) -o $@ -arch x86_64 -Iinclude -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/darwin -fPIC \
+ -D_REENTRANT \
+ $^ \
+ -dynamiclib -lc
+
+# macos aarch64
+$(OS_DIR_MACOS_AARCH64)/libspawner.jnilib: unix/spawner.c unix/io.c unix/exec_unix.c unix/exec_pty.c unix/openpty.c unix/pfind.c
+ mkdir -p $(dir $@) && \
+ arm64-apple-darwin21.1-clang $(COMMON_CFLAGS) -o $@ -arch arm64 -Iinclude -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/darwin -fPIC \
+ -D_REENTRANT \
+ $^ \
+ -dynamiclib -lc
+
+$(OS_DIR_MACOS_AARCH64)/libpty.jnilib: unix/openpty.c unix/pty.c unix/ptyio.c
+ mkdir -p $(dir $@) && \
+ arm64-apple-darwin21.1-clang $(COMMON_CFLAGS) -o $@ -arch arm64 -Iinclude -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/darwin -fPIC \
+ -D_REENTRANT \
+ $^ \
+ -dynamiclib -lc
diff --git a/core/org.eclipse.cdt.core.native/native_src/include/org_eclipse_cdt_utils_pty_PTY.h b/core/org.eclipse.cdt.core.native/native_src/include/org_eclipse_cdt_utils_pty_PTY.h
new file mode 100644
index 00000000000..cdeb5ad662b
--- /dev/null
+++ b/core/org.eclipse.cdt.core.native/native_src/include/org_eclipse_cdt_utils_pty_PTY.h
@@ -0,0 +1,43 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+/* Header for class org_eclipse_cdt_utils_pty_PTY */
+
+#ifndef _Included_org_eclipse_cdt_utils_pty_PTY
+#define _Included_org_eclipse_cdt_utils_pty_PTY
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+ * Class: org_eclipse_cdt_utils_pty_PTY
+ * Method: openMaster
+ * Signature: (Z)Ljava/lang/String;
+ */
+JNIEXPORT jstring JNICALL Java_org_eclipse_cdt_utils_pty_PTY_openMaster(JNIEnv *, jobject, jboolean);
+
+/*
+ * Class: org_eclipse_cdt_utils_pty_PTY
+ * Method: change_window_size
+ * Signature: (III)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTY_change_1window_1size(JNIEnv *, jobject, jint, jint, jint);
+
+/*
+ * Class: org_eclipse_cdt_utils_pty_PTY
+ * Method: exec2
+ * Signature:
+ * ([Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Lorg/eclipse/cdt/utils/spawner/Spawner/IChannel;Ljava/lang/String;IZ)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTY_exec2(JNIEnv *, jobject, jobjectArray, jobjectArray, jstring,
+ jobjectArray, jstring, jint, jboolean);
+
+/*
+ * Class: org_eclipse_cdt_utils_pty_PTY
+ * Method: waitFor
+ * Signature: (II)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTY_waitFor(JNIEnv *, jobject, jint, jint);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/core/org.eclipse.cdt.core.native/native_src/include/org_eclipse_cdt_utils_pty_PTYInputStream.h b/core/org.eclipse.cdt.core.native/native_src/include/org_eclipse_cdt_utils_pty_PTYInputStream.h
new file mode 100644
index 00000000000..29fae6fd63e
--- /dev/null
+++ b/core/org.eclipse.cdt.core.native/native_src/include/org_eclipse_cdt_utils_pty_PTYInputStream.h
@@ -0,0 +1,33 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+/* Header for class org_eclipse_cdt_utils_pty_PTYInputStream */
+
+#ifndef _Included_org_eclipse_cdt_utils_pty_PTYInputStream
+#define _Included_org_eclipse_cdt_utils_pty_PTYInputStream
+#ifdef __cplusplus
+extern "C" {
+#endif
+#undef org_eclipse_cdt_utils_pty_PTYInputStream_MAX_SKIP_BUFFER_SIZE
+#define org_eclipse_cdt_utils_pty_PTYInputStream_MAX_SKIP_BUFFER_SIZE 2048L
+#undef org_eclipse_cdt_utils_pty_PTYInputStream_DEFAULT_BUFFER_SIZE
+#define org_eclipse_cdt_utils_pty_PTYInputStream_DEFAULT_BUFFER_SIZE 8192L
+#undef org_eclipse_cdt_utils_pty_PTYInputStream_MAX_BUFFER_SIZE
+#define org_eclipse_cdt_utils_pty_PTYInputStream_MAX_BUFFER_SIZE 2147483639L
+/*
+ * Class: org_eclipse_cdt_utils_pty_PTYInputStream
+ * Method: read0
+ * Signature: (I[BI)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTYInputStream_read0(JNIEnv *, jobject, jint, jbyteArray, jint);
+
+/*
+ * Class: org_eclipse_cdt_utils_pty_PTYInputStream
+ * Method: close0
+ * Signature: (I)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTYInputStream_close0(JNIEnv *, jobject, jint);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/core/org.eclipse.cdt.core.native/native_src/include/org_eclipse_cdt_utils_pty_PTYOutputStream.h b/core/org.eclipse.cdt.core.native/native_src/include/org_eclipse_cdt_utils_pty_PTYOutputStream.h
new file mode 100644
index 00000000000..2473324b419
--- /dev/null
+++ b/core/org.eclipse.cdt.core.native/native_src/include/org_eclipse_cdt_utils_pty_PTYOutputStream.h
@@ -0,0 +1,29 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+/* Header for class org_eclipse_cdt_utils_pty_PTYOutputStream */
+
+#ifndef _Included_org_eclipse_cdt_utils_pty_PTYOutputStream
+#define _Included_org_eclipse_cdt_utils_pty_PTYOutputStream
+#ifdef __cplusplus
+extern "C" {
+#endif
+#undef org_eclipse_cdt_utils_pty_PTYOutputStream_EOT
+#define org_eclipse_cdt_utils_pty_PTYOutputStream_EOT 4L
+/*
+ * Class: org_eclipse_cdt_utils_pty_PTYOutputStream
+ * Method: write0
+ * Signature: (I[BI)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTYOutputStream_write0(JNIEnv *, jobject, jint, jbyteArray, jint);
+
+/*
+ * Class: org_eclipse_cdt_utils_pty_PTYOutputStream
+ * Method: close0
+ * Signature: (I)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTYOutputStream_close0(JNIEnv *, jobject, jint);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/core/org.eclipse.cdt.core.native/native_src/include/org_eclipse_cdt_utils_spawner_Spawner.h b/core/org.eclipse.cdt.core.native/native_src/include/org_eclipse_cdt_utils_spawner_Spawner.h
new file mode 100644
index 00000000000..d487596c364
--- /dev/null
+++ b/core/org.eclipse.cdt.core.native/native_src/include/org_eclipse_cdt_utils_spawner_Spawner.h
@@ -0,0 +1,73 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+/* Header for class org_eclipse_cdt_utils_spawner_Spawner */
+
+#ifndef _Included_org_eclipse_cdt_utils_spawner_Spawner
+#define _Included_org_eclipse_cdt_utils_spawner_Spawner
+#ifdef __cplusplus
+extern "C" {
+#endif
+#undef org_eclipse_cdt_utils_spawner_Spawner_SIG_NOOP
+#define org_eclipse_cdt_utils_spawner_Spawner_SIG_NOOP 0L
+#undef org_eclipse_cdt_utils_spawner_Spawner_SIG_HUP
+#define org_eclipse_cdt_utils_spawner_Spawner_SIG_HUP 1L
+#undef org_eclipse_cdt_utils_spawner_Spawner_SIG_KILL
+#define org_eclipse_cdt_utils_spawner_Spawner_SIG_KILL 9L
+#undef org_eclipse_cdt_utils_spawner_Spawner_SIG_TERM
+#define org_eclipse_cdt_utils_spawner_Spawner_SIG_TERM 15L
+#undef org_eclipse_cdt_utils_spawner_Spawner_SIG_INT
+#define org_eclipse_cdt_utils_spawner_Spawner_SIG_INT 2L
+#undef org_eclipse_cdt_utils_spawner_Spawner_SIG_CTRLC
+#define org_eclipse_cdt_utils_spawner_Spawner_SIG_CTRLC 1000L
+/*
+ * Class: org_eclipse_cdt_utils_spawner_Spawner
+ * Method: exec0
+ * Signature:
+ * ([Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Lorg/eclipse/cdt/utils/spawner/Spawner/IChannel;)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_exec0(JNIEnv *, jobject, jobjectArray, jobjectArray,
+ jstring, jobjectArray);
+
+/*
+ * Class: org_eclipse_cdt_utils_spawner_Spawner
+ * Method: exec1
+ * Signature: ([Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_exec1(JNIEnv *, jobject, jobjectArray, jobjectArray,
+ jstring);
+
+/*
+ * Class: org_eclipse_cdt_utils_spawner_Spawner
+ * Method: exec2
+ * Signature:
+ * ([Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Lorg/eclipse/cdt/utils/spawner/Spawner/IChannel;Ljava/lang/String;IZ)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_exec2(JNIEnv *, jobject, jobjectArray, jobjectArray,
+ jstring, jobjectArray, jstring, jint, jboolean);
+
+/*
+ * Class: org_eclipse_cdt_utils_spawner_Spawner
+ * Method: raise
+ * Signature: (II)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_raise(JNIEnv *, jobject, jint, jint);
+
+/*
+ * Class: org_eclipse_cdt_utils_spawner_Spawner
+ * Method: waitFor
+ * Signature: (I)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_waitFor(JNIEnv *, jobject, jint);
+
+/*
+ * Class: org_eclipse_cdt_utils_spawner_Spawner
+ * Method: configureNativeTrace
+ * Signature: (ZZZZ)V
+ */
+JNIEXPORT void JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_configureNativeTrace(JNIEnv *, jclass, jboolean,
+ jboolean, jboolean, jboolean);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/core/org.eclipse.cdt.core.native/native_src/include/org_eclipse_cdt_utils_spawner_SpawnerInputStream.h b/core/org.eclipse.cdt.core.native/native_src/include/org_eclipse_cdt_utils_spawner_SpawnerInputStream.h
new file mode 100644
index 00000000000..76662bb4d63
--- /dev/null
+++ b/core/org.eclipse.cdt.core.native/native_src/include/org_eclipse_cdt_utils_spawner_SpawnerInputStream.h
@@ -0,0 +1,41 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+/* Header for class org_eclipse_cdt_utils_spawner_SpawnerInputStream */
+
+#ifndef _Included_org_eclipse_cdt_utils_spawner_SpawnerInputStream
+#define _Included_org_eclipse_cdt_utils_spawner_SpawnerInputStream
+#ifdef __cplusplus
+extern "C" {
+#endif
+#undef org_eclipse_cdt_utils_spawner_SpawnerInputStream_MAX_SKIP_BUFFER_SIZE
+#define org_eclipse_cdt_utils_spawner_SpawnerInputStream_MAX_SKIP_BUFFER_SIZE 2048L
+#undef org_eclipse_cdt_utils_spawner_SpawnerInputStream_DEFAULT_BUFFER_SIZE
+#define org_eclipse_cdt_utils_spawner_SpawnerInputStream_DEFAULT_BUFFER_SIZE 8192L
+#undef org_eclipse_cdt_utils_spawner_SpawnerInputStream_MAX_BUFFER_SIZE
+#define org_eclipse_cdt_utils_spawner_SpawnerInputStream_MAX_BUFFER_SIZE 2147483639L
+/*
+ * Class: org_eclipse_cdt_utils_spawner_SpawnerInputStream
+ * Method: read0
+ * Signature: (Lorg/eclipse/cdt/utils/spawner/Spawner/IChannel;[BI)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_SpawnerInputStream_read0(JNIEnv *, jobject, jobject,
+ jbyteArray, jint);
+
+/*
+ * Class: org_eclipse_cdt_utils_spawner_SpawnerInputStream
+ * Method: close0
+ * Signature: (Lorg/eclipse/cdt/utils/spawner/Spawner/IChannel;)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_SpawnerInputStream_close0(JNIEnv *, jobject, jobject);
+
+/*
+ * Class: org_eclipse_cdt_utils_spawner_SpawnerInputStream
+ * Method: available0
+ * Signature: (Lorg/eclipse/cdt/utils/spawner/Spawner/IChannel;)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_SpawnerInputStream_available0(JNIEnv *, jobject, jobject);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/core/org.eclipse.cdt.core.native/native_src/include/org_eclipse_cdt_utils_spawner_SpawnerOutputStream.h b/core/org.eclipse.cdt.core.native/native_src/include/org_eclipse_cdt_utils_spawner_SpawnerOutputStream.h
new file mode 100644
index 00000000000..bb94be6c533
--- /dev/null
+++ b/core/org.eclipse.cdt.core.native/native_src/include/org_eclipse_cdt_utils_spawner_SpawnerOutputStream.h
@@ -0,0 +1,28 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+/* Header for class org_eclipse_cdt_utils_spawner_SpawnerOutputStream */
+
+#ifndef _Included_org_eclipse_cdt_utils_spawner_SpawnerOutputStream
+#define _Included_org_eclipse_cdt_utils_spawner_SpawnerOutputStream
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+ * Class: org_eclipse_cdt_utils_spawner_SpawnerOutputStream
+ * Method: write0
+ * Signature: (Lorg/eclipse/cdt/utils/spawner/Spawner/IChannel;[BI)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_SpawnerOutputStream_write0(JNIEnv *, jobject, jobject,
+ jbyteArray, jint);
+
+/*
+ * Class: org_eclipse_cdt_utils_spawner_SpawnerOutputStream
+ * Method: close0
+ * Signature: (Lorg/eclipse/cdt/utils/spawner/Spawner/IChannel;)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_SpawnerOutputStream_close0(JNIEnv *, jobject, jobject);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/core/org.eclipse.cdt.core.native/native_src/unix/exec0.h b/core/org.eclipse.cdt.core.native/native_src/unix/exec0.h
new file mode 100644
index 00000000000..fb272ea9101
--- /dev/null
+++ b/core/org.eclipse.cdt.core.native/native_src/unix/exec0.h
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2002, 2010 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - initial API and implementation
+ * Wind River Systems, Inc.
+ * Mikhail Zabaluev (Nokia) - bug 82744
+ *******************************************************************************/
+#include <unistd.h>
+#include <sys/wait.h>
+#include <sys/types.h>
+#include <signal.h>
+#include <errno.h>
+
+extern pid_t exec0(const char *path, char *const argv[], char *const envp[], const char *dirpath, int channels[3]);
+
+extern pid_t exec_pty(const char *path, char *const argv[], char *const envp[], const char *dirpath, int channels[3],
+ const char *pts_name, int fdm, int console);
+
+extern int wait0(pid_t pid);
diff --git a/core/org.eclipse.cdt.core.native/native_src/unix/exec_pty.c b/core/org.eclipse.cdt.core.native/native_src/unix/exec_pty.c
new file mode 100644
index 00000000000..fb669736037
--- /dev/null
+++ b/core/org.eclipse.cdt.core.native/native_src/unix/exec_pty.c
@@ -0,0 +1,190 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2010 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - initial API and implementation
+ * Wind River Systems, Inc.
+ * Mikhail Zabaluev (Nokia) - bug 82744
+ * Mikhail Sennikovsky - bug 145737
+ *******************************************************************************/
+#include "exec0.h"
+#include "openpty.h"
+#include <unistd.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <errno.h>
+#include <string.h>
+#include <libgen.h>
+#include <stdlib.h>
+#include <termios.h>
+
+/* from pfind.c */
+extern char *pfind(const char *name, char *const envp[]);
+
+pid_t exec_pty(const char *path, char *const argv[], char *const envp[], const char *dirpath, int channels[3],
+ const char *pts_name, int fdm, int console) {
+ int pipe2[2];
+ pid_t childpid;
+ char *full_path;
+
+ /*
+ * We use pfind() to check that the program exists and is an executable.
+ * If not pass the error up. Also execve() wants a full path.
+ */
+ full_path = pfind(path, envp);
+ if (full_path == NULL) {
+ fprintf(stderr, "Unable to find full path for \"%s\"\n", (path) ? path : "");
+ return -1;
+ }
+
+ /*
+ * Make sure we can create our pipes before forking.
+ */
+ if (channels != NULL && console) {
+ if (pipe(pipe2) < 0) {
+ fprintf(stderr, "%s(%d): returning due to error: %s\n", __func__, __LINE__, strerror(errno));
+ free(full_path);
+ return -1;
+ }
+ }
+
+ childpid = fork();
+
+ if (childpid < 0) {
+ fprintf(stderr, "%s(%d): returning due to error: %s\n", __func__, __LINE__, strerror(errno));
+ free(full_path);
+ return -1;
+ } else if (childpid == 0) { /* child */
+
+ chdir(dirpath);
+
+ if (channels) {
+ int fds;
+
+ if (!console && setsid() < 0) {
+ perror("setsid()");
+ return -1;
+ }
+
+ fds = ptys_open(fdm, pts_name);
+ if (fds < 0) {
+ fprintf(stderr, "%s(%d): returning due to error: %s\n", __func__, __LINE__, strerror(errno));
+ return -1;
+ }
+
+ /* Close the read end of pipe2 */
+ if (console && close(pipe2[0]) == -1) {
+ perror("close(pipe2[0]))");
+ }
+
+ /* close the master, no need in the child */
+ close(fdm);
+
+ if (console) {
+ set_noecho(fds);
+ if (setpgid(getpid(), getpid()) < 0) {
+ perror("setpgid()");
+ return -1;
+ }
+ }
+
+ /* redirections */
+ dup2(fds, STDIN_FILENO); /* dup stdin */
+ dup2(fds, STDOUT_FILENO); /* dup stdout */
+ if (console) {
+ dup2(pipe2[1], STDERR_FILENO); /* dup stderr */
+ } else {
+ dup2(fds, STDERR_FILENO); /* dup stderr */
+ }
+ close(fds); /* done with fds. */
+ }
+
+ /* Close all the fd's in the child */
+ {
+ int fdlimit = sysconf(_SC_OPEN_MAX);
+ int fd = 3;
+
+ while (fd < fdlimit) {
+ close(fd++);
+ }
+ }
+
+ if (envp && envp[0]) {
+ execve(full_path, argv, envp);
+ } else {
+ execv(full_path, argv);
+ }
+
+ _exit(127);
+
+ } else if (childpid != 0) { /* parent */
+ if (console) {
+ set_noecho(fdm);
+ }
+ if (channels) {
+ channels[0] = fdm; /* Input Stream. */
+ channels[1] = fdm; /* Output Stream. */
+ if (console) {
+ /* close the write end of pipe1 */
+ if (close(pipe2[1]) == -1) {
+ perror("close(pipe2[1])");
+ }
+ channels[2] = pipe2[0]; /* stderr Stream. */
+ } else {
+ channels[2] = fdm; /* Error Stream. */
+ }
+ }
+
+ free(full_path);
+ return childpid;
+ }
+
+ free(full_path);
+ return -1; /*NOT REACHED */
+}
+
+#ifdef __STAND_ALONE__
+int main(int argc, char **argv, char **envp) {
+ const char *path = "./bufferring_test";
+ int channels[3] = {-1, -1, -1};
+ int status;
+ FILE *app_stdin;
+ FILE *app_stdout;
+ FILE *app_stderr;
+ char pts_name[32];
+ int fdm;
+ char buffer[32];
+
+ fdm = ptym_open(pts_name);
+ status = exec_pty(path, argv, envp, ".", channels, pts_name, fdm);
+ if (status >= 0) {
+ app_stdin = fdopen(channels[0], "w");
+ app_stdout = fdopen(channels[1], "r");
+ app_stderr = fdopen(channels[2], "r");
+ if (app_stdout == NULL || app_stderr == NULL || app_stdin == NULL) {
+ fprintf(stderr, "PROBLEMS\n");
+ } else {
+ fputs("foo\n", app_stdin);
+ fputs("bar\n", app_stdin);
+ while (fgets(buffer, sizeof buffer, app_stdout)) {
+ fprintf(stdout, "STDOUT: %s\n", buffer);
+ }
+ while (fgets(buffer, sizeof buffer, app_stderr)) {
+ fprintf(stdout, "STDERR: %s\n", buffer);
+ }
+ }
+ }
+ fputs("bye\n", stdout);
+ close(channels[0]);
+ close(channels[1]);
+ close(channels[2]);
+ return 0;
+}
+#endif
diff --git a/core/org.eclipse.cdt.core.native/native_src/unix/exec_unix.c b/core/org.eclipse.cdt.core.native/native_src/unix/exec_unix.c
new file mode 100644
index 00000000000..e393cfff6a0
--- /dev/null
+++ b/core/org.eclipse.cdt.core.native/native_src/unix/exec_unix.c
@@ -0,0 +1,157 @@
+/*******************************************************************************
+ * Copyright (c) 2002, 2010 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - initial API and implementation
+ * Wind River Systems, Inc.
+ * Mikhail Sennikovsky - bug 145737
+ *******************************************************************************/
+#include "exec0.h"
+#include <unistd.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <errno.h>
+#include <string.h>
+#include <libgen.h>
+#include <stdlib.h>
+
+/* from pfind.c */
+extern char *pfind(const char *name, char *const envp[]);
+
+pid_t exec0(const char *path, char *const argv[], char *const envp[], const char *dirpath, int channels[3]) {
+ int pipe0[2], pipe1[2], pipe2[2];
+ pid_t childpid;
+ char *full_path;
+
+ /*
+ * We use pfind() to check that the program exists and is an executable.
+ * If not pass the error up. Also execve() wants a full path.
+ */
+ full_path = pfind(path, envp);
+ if (full_path == NULL) {
+ fprintf(stderr, "Unable to find full path for \"%s\"\n", (path) ? path : "");
+ return -1;
+ }
+
+ /*
+ * Make sure we can create our pipes before forking.
+ */
+ if (channels) {
+ if (pipe(pipe0) < 0 || pipe(pipe1) < 0 || pipe(pipe2) < 0) {
+ fprintf(stderr, "%s(%d): returning due to error.\n", __func__, __LINE__);
+ free(full_path);
+ return -1;
+ }
+ }
+
+ childpid = fork();
+
+ if (childpid < 0) {
+ fprintf(stderr, "%s(%d): returning due to error: %s\n", __func__, __LINE__, strerror(errno));
+ free(full_path);
+ return -1;
+ } else if (childpid == 0) { /* child */
+ chdir(dirpath);
+
+ if (channels) {
+ /* Close the write end of pipe0 */
+ if (close(pipe0[1]) == -1) {
+ perror("close(pipe0[1])");
+ }
+
+ /* Close the read end of pipe1 */
+ if (close(pipe1[0]) == -1) {
+ perror("close(pipe1[0])");
+ }
+
+ /* Close the read end of pipe2 */
+ if (close(pipe2[0]) == -1) {
+ perror("close(pipe2[0]))");
+ }
+
+ /* redirections */
+ dup2(pipe0[0], STDIN_FILENO); /* dup stdin */
+ dup2(pipe1[1], STDOUT_FILENO); /* dup stdout */
+ dup2(pipe2[1], STDERR_FILENO); /* dup stderr */
+ }
+
+ /* Close all the fd's in the child */
+ {
+ int fdlimit = sysconf(_SC_OPEN_MAX);
+ int fd = 3;
+
+ while (fd < fdlimit) {
+ close(fd++);
+ }
+ }
+
+ setpgid(getpid(), getpid());
+
+ if (envp && envp[0]) {
+ execve(full_path, argv, envp);
+ } else {
+ execv(full_path, argv);
+ }
+
+ _exit(127);
+
+ } else if (childpid != 0) { /* parent */
+ if (channels) {
+ /* close the read end of pipe1 */
+ if (close(pipe0[0]) == -1) {
+ perror("close(pipe0[0])");
+ }
+
+ /* close the write end of pipe2 */
+ if (close(pipe1[1]) == -1) {
+ perror("close(pipe1[1])");
+ }
+
+ /* close the write end of pipe2 */
+ if (close(pipe2[1]) == -1) {
+ perror("close(pipe2[1])");
+ }
+
+ channels[0] = pipe0[1]; /* Output Stream. */
+ channels[1] = pipe1[0]; /* Input Stream. */
+ channels[2] = pipe2[0]; /* Input Stream. */
+ }
+
+ free(full_path);
+ return childpid;
+ }
+
+ free(full_path);
+ return -1; /*NOT REACHED */
+}
+
+int wait0(pid_t pid) {
+ int status;
+ int val = -1;
+
+ if (pid < 0) {
+ return -1;
+ }
+
+ for (;;) {
+ if (waitpid(pid, &status, 0) < 0) {
+ if (errno == EINTR) {
+ // interrupted system call - retry
+ continue;
+ }
+ }
+ break;
+ }
+ if (WIFEXITED(status)) {
+ val = WEXITSTATUS(status);
+ }
+
+ return val;
+}
diff --git a/core/org.eclipse.cdt.core.native/native_src/unix/io.c b/core/org.eclipse.cdt.core.native/native_src/unix/io.c
new file mode 100644
index 00000000000..b29c4357b5a
--- /dev/null
+++ b/core/org.eclipse.cdt.core.native/native_src/unix/io.c
@@ -0,0 +1,116 @@
+/*******************************************************************************
+ * Copyright (c) 2002, 2006 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - initial API and implementation
+ * Wind River Systems, Inc.
+ *******************************************************************************/
+#include <jni.h>
+#include <stdio.h>
+#include <org_eclipse_cdt_utils_spawner_SpawnerInputStream.h>
+#include <org_eclipse_cdt_utils_spawner_SpawnerOutputStream.h>
+#include <unistd.h>
+
+/* Header for class _org_eclipse_cdt_utils_spawner_SpawnerInputStream */
+/* Header for class _org_eclipse_cdt_utils_spawner_SpawnerOutputStream */
+
+static void ThrowByName(JNIEnv *env, const char *name, const char *msg) {
+ jclass cls = (*env)->FindClass(env, name);
+
+ if (cls) { /* Otherwise an exception has already been thrown */
+ (*env)->ThrowNew(env, cls, msg);
+ }
+
+ /* It's a good practice to clean up the local references. */
+ (*env)->DeleteLocalRef(env, cls);
+}
+
+static int channelToFileDesc(JNIEnv *env, jobject channel) {
+ if (channel == 0) {
+ ThrowByName(env, "java/io/IOException", "Invalid channel object");
+ return -1;
+ }
+
+ jclass cls = (*env)->GetObjectClass(env, channel);
+ if (cls == 0) {
+ ThrowByName(env, "java/io/IOException", "Unable to get channel class");
+ return -1;
+ }
+
+ jfieldID fid = (*env)->GetFieldID(env, cls, "fd", "I");
+ if (fid == 0) {
+ ThrowByName(env, "java/io/IOException", "Unable to find fd");
+ return -1;
+ }
+
+ jint fd = (*env)->GetIntField(env, channel, fid);
+ return fd;
+}
+
+JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_SpawnerInputStream_read0(JNIEnv *env, jobject jobj,
+ jobject channel, jbyteArray buf,
+ jint buf_len) {
+ int fd;
+ int status;
+ jbyte *data;
+ int data_len;
+
+ data = (*env)->GetByteArrayElements(env, buf, 0);
+ data_len = buf_len;
+ fd = channelToFileDesc(env, channel);
+
+ status = read(fd, data, data_len);
+ (*env)->ReleaseByteArrayElements(env, buf, data, 0);
+
+ if (status == 0) {
+ /* EOF. */
+ status = -1;
+ } else if (status == -1) {
+ /* Error, toss an exception */
+ jclass exception = (*env)->FindClass(env, "java/io/IOException");
+ if (exception == NULL) {
+ /* Give up. */
+ return -1;
+ }
+ (*env)->ThrowNew(env, exception, "read error");
+ }
+
+ return status;
+}
+
+JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_SpawnerInputStream_close0(JNIEnv *env, jobject jobj,
+ jobject channel) {
+ int fd = channelToFileDesc(env, channel);
+ return close(fd);
+}
+
+JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_SpawnerOutputStream_write0(JNIEnv *env, jobject jobj,
+ jobject channel, jbyteArray buf,
+ jint buf_len) {
+ int status;
+ int fd;
+ jbyte *data;
+ int data_len;
+
+ data = (*env)->GetByteArrayElements(env, buf, 0);
+ data_len = buf_len;
+ fd = channelToFileDesc(env, channel);
+
+ status = write(fd, data, data_len);
+ (*env)->ReleaseByteArrayElements(env, buf, data, 0);
+
+ return status;
+}
+
+JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_SpawnerOutputStream_close0(JNIEnv *env, jobject jobj,
+ jobject channel) {
+ int fd = channelToFileDesc(env, channel);
+ return close(fd);
+}
diff --git a/core/org.eclipse.cdt.core.native/native_src/unix/openpty.c b/core/org.eclipse.cdt.core.native/native_src/unix/openpty.c
new file mode 100644
index 00000000000..f5f763112ee
--- /dev/null
+++ b/core/org.eclipse.cdt.core.native/native_src/unix/openpty.c
@@ -0,0 +1,134 @@
+/*******************************************************************************
+ * Copyright (c) 2002, 2010 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - initial API and implementation
+ * Wind River Systems, Inc.
+ * Mikhail Zabaluev (Nokia) - bug 82744
+ * Corey Ashford (IBM) - bug 272370, bug 272372
+ *******************************************************************************/
+
+/* _XOPEN_SOURCE is needed to bring in the header for ptsname */
+#define _XOPEN_SOURCE
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/ioctl.h>
+#include <fcntl.h>
+#include <termios.h>
+#include <errno.h>
+#include <unistd.h>
+#include <stdio.h>
+#include <string.h>
+#include <grp.h>
+
+#include <stdlib.h>
+
+/**
+ * This is taken from R. W. Stevens book.
+ * Alain Magloire.
+ */
+
+int ptym_open(char *pts_name);
+int ptys_open(int fdm, const char *pts_name);
+void set_noecho(int fd);
+
+int openpty(int *amaster, int *aslave, char *name, struct termios *termp, struct winsize *winp) {
+ char line[20];
+ line[0] = 0;
+ *amaster = ptym_open(line);
+ if (*amaster < 0) {
+ return -1;
+ }
+ *aslave = ptys_open(*amaster, line);
+ if (*aslave < 0) {
+ close(*amaster);
+ return -1;
+ }
+
+ if (name) {
+ strcpy(name, line);
+ }
+#ifndef TCSAFLUSH
+#define TCSAFLUSH TCSETAF
+#endif
+ if (termp) {
+ (void)tcsetattr(*aslave, TCSAFLUSH, termp);
+ }
+#ifdef TIOCSWINSZ
+ if (winp) {
+ (void)ioctl(*aslave, TIOCSWINSZ, (char *)winp);
+ }
+#endif
+ return 0;
+}
+
+void set_noecho(int fd) {
+ struct termios stermios;
+ if (tcgetattr(fd, &stermios) < 0) {
+ return;
+ }
+
+ /* turn off echo */
+ stermios.c_lflag &= ~(ECHO | ECHOE | ECHOK | ECHONL);
+ /* Turn off the NL to CR/NL mapping ou output. */
+ /*stermios.c_oflag &= ~(ONLCR);*/
+
+ stermios.c_iflag |= (IGNCR);
+
+ tcsetattr(fd, TCSANOW, &stermios);
+}
+
+int ptym_open(char *pts_name) {
+ int fdm;
+ char *ptr;
+
+ strcpy(pts_name, "/dev/ptmx");
+#ifdef __APPLE__
+ fdm = posix_openpt(O_RDWR | O_NOCTTY);
+#else
+ fdm = getpt();
+#endif
+ if (fdm < 0) {
+ return -1;
+ }
+ if (grantpt(fdm) < 0) { /* grant access to slave */
+ close(fdm);
+ return -2;
+ }
+ if (unlockpt(fdm) < 0) { /* clear slave's lock flag */
+ close(fdm);
+ return -3;
+ }
+ ptr = ptsname(fdm);
+ if (ptr == NULL) { /* get slave's name */
+ close(fdm);
+ return -4;
+ }
+ strcpy(pts_name, ptr); /* return name of slave */
+ return fdm; /* return fd of master */
+}
+
+int ptys_open(int fdm, const char *pts_name) {
+ int fds;
+ /* following should allocate controlling terminal */
+ fds = open(pts_name, O_RDWR);
+ if (fds < 0) {
+ close(fdm);
+ return -5;
+ }
+
+#if defined(TIOCSCTTY)
+ /* TIOCSCTTY is the BSD way to acquire a controlling terminal. */
+ if (ioctl(fds, TIOCSCTTY, (char *)0) < 0) {
+ // ignore error: this is expected in console-mode
+ }
+#endif
+ return fds;
+}
diff --git a/core/org.eclipse.cdt.core.native/native_src/unix/openpty.h b/core/org.eclipse.cdt.core.native/native_src/unix/openpty.h
new file mode 100644
index 00000000000..036233db08e
--- /dev/null
+++ b/core/org.eclipse.cdt.core.native/native_src/unix/openpty.h
@@ -0,0 +1,21 @@
+/*******************************************************************************
+ * Copyright (c) 2002, 2010 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - initial API and implementation
+ * Wind River Systems, Inc.
+ * Mikhail Zabaluev (Nokia) - bug 82744
+ *******************************************************************************/
+#ifndef _OPENPTY_H
+#define _OPENPTY_H
+int ptym_open(char *pts_name);
+int ptys_open(int fdm, const char *pts_name);
+void set_noecho(int fd);
+#endif
diff --git a/core/org.eclipse.cdt.core.native/native_src/unix/pfind.c b/core/org.eclipse.cdt.core.native/native_src/unix/pfind.c
new file mode 100644
index 00000000000..bf96c882895
--- /dev/null
+++ b/core/org.eclipse.cdt.core.native/native_src/unix/pfind.c
@@ -0,0 +1,111 @@
+/*******************************************************************************
+ * Copyright (c) 2002, 2010 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - initial API and implementation
+ * Wind River Systems, Inc.
+ * Mikhail Sennikovsky - bug 145737
+ * Everton Rufino Constantino (IBM) - bug 237611
+ *******************************************************************************/
+/*
+ * pfind.c - Search for a binary in $PATH.
+ */
+
+#include <stdio.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <string.h>
+#include <limits.h>
+#include <sys/stat.h>
+
+#ifndef PATH_MAX
+#define PATH_MAX 1024
+#endif
+
+#define PATH_DEF "PATH="
+const int path_def_len = 5; /* strlen(PATH_DEF); */
+
+char *path_val(char *const envp[]) {
+ if (!envp || !envp[0]) {
+ return getenv("PATH");
+ }
+
+ for (int i = 0; envp[i]; i++) {
+ char *p = envp[i];
+ if (!strncmp(PATH_DEF, p, path_def_len)) {
+ return p + path_def_len;
+ }
+ }
+
+ return NULL;
+}
+
+char *pfind(const char *name, char *const envp[]) {
+ char *tok;
+ char *sp;
+ char *path;
+ char fullpath[PATH_MAX + 1];
+ struct stat sb;
+
+ /* Sanity check. */
+ if (!name) {
+ fprintf(stderr, "pfind(): Null argument.\n");
+ return NULL;
+ }
+
+ /* For absolute name or name with a path, check if it is an executable. */
+ if (name[0] == '/' || name[0] == '.') {
+ if (access(name, X_OK) == 0) {
+ return strdup(name);
+ }
+ return NULL;
+ }
+
+ /* Search in the PATH environment. */
+ path = path_val(envp);
+
+ if (!path || strlen(path) <= 0) {
+ fprintf(stderr, "Unable to get $PATH.\n");
+ return NULL;
+ }
+
+ /* The value return by getenv() is read-only */
+ path = strdup(path);
+
+ tok = strtok_r(path, ":", &sp);
+ while (tok) {
+ snprintf(fullpath, sizeof(fullpath) - 1, "%s/%s", tok, name);
+
+ if (stat(fullpath, &sb) == 0 && S_ISREG(sb.st_mode)) { /* fullpath is a file */
+ if (access(fullpath, X_OK) == 0) { /* fullpath is executable */
+ free(path);
+ return strdup(fullpath);
+ }
+ }
+
+ tok = strtok_r(NULL, ":", &sp);
+ }
+
+ free(path);
+ return NULL;
+}
+
+#ifdef BUILD_WITH_MAIN
+int main(int argc, char **argv) {
+ for (int i = 1; i < argc; i++) {
+ char *fullpath = pfind(argv[i], NULL);
+ if (fullpath) {
+ printf("Found %s @ %s.\n", argv[i], fullpath);
+ } else {
+ printf("Unable to find %s in $PATH.\n", argv[i]);
+ }
+ }
+}
+#endif
diff --git a/core/org.eclipse.cdt.core.native/native_src/unix/pty.c b/core/org.eclipse.cdt.core.native/native_src/unix/pty.c
new file mode 100644
index 00000000000..a0800620ef8
--- /dev/null
+++ b/core/org.eclipse.cdt.core.native/native_src/unix/pty.c
@@ -0,0 +1,71 @@
+/*******************************************************************************
+ * Copyright (c) 2002, 2010 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - initial API and implementation
+ * Wind River Systems, Inc.
+ *******************************************************************************/
+#include <sys/ioctl.h>
+#include "org_eclipse_cdt_utils_pty_PTY.h"
+#include "openpty.h"
+
+/*
+ * Class: org_eclipse_cdt_utils_pty_PTY
+ * Method: forkpty
+ * Signature: ()I
+ */
+JNIEXPORT jstring JNICALL Java_org_eclipse_cdt_utils_pty_PTY_openMaster(JNIEnv *env, jobject jobj, jboolean console) {
+ jfieldID fid; /* Store the field ID */
+ jstring jstr = NULL;
+ int master = -1;
+ char line[1024]; /* FIXME: Should be enough */
+ jclass cls;
+
+ line[0] = '\0';
+
+ master = ptym_open(line);
+ if (master >= 0) {
+ // turn off echo
+ if (console) {
+ set_noecho(master);
+ }
+
+ /* Get a reference to the obj's class */
+ cls = (*env)->GetObjectClass(env, jobj);
+
+ /* Set the master fd. */
+ fid = (*env)->GetFieldID(env, cls, "master", "I");
+ if (!fid) {
+ return NULL;
+ }
+ (*env)->SetIntField(env, jobj, fid, (jint)master);
+
+ /* Create a new String for the slave. */
+ jstr = (*env)->NewStringUTF(env, line);
+ }
+ return jstr;
+}
+
+JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTY_change_1window_1size(JNIEnv *env, jobject jobj, jint fdm,
+ jint width, jint height) {
+#ifdef TIOCSWINSZ
+ struct winsize win;
+
+ win.ws_col = width;
+ win.ws_row = height;
+ win.ws_xpixel = 0;
+ win.ws_ypixel = 0;
+
+ return ioctl(fdm, TIOCSWINSZ, &win);
+#else
+#error no TIOCSWINSZ
+ return 0;
+#endif
+}
diff --git a/core/org.eclipse.cdt.core.native/native_src/unix/ptyio.c b/core/org.eclipse.cdt.core.native/native_src/unix/ptyio.c
new file mode 100644
index 00000000000..44e879cd48c
--- /dev/null
+++ b/core/org.eclipse.cdt.core.native/native_src/unix/ptyio.c
@@ -0,0 +1,99 @@
+/*******************************************************************************
+ * Copyright (c) 2002 - 2005 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - initial API and implementation
+ *******************************************************************************/
+#include <jni.h>
+#include <stdio.h>
+#include <org_eclipse_cdt_utils_pty_PTYInputStream.h>
+#include <org_eclipse_cdt_utils_pty_PTYOutputStream.h>
+#include <unistd.h>
+
+/* Header for class _org_eclipse_cdt_utils_pty_PTYInputStream */
+/* Header for class _org_eclipse_cdt_utils_pty_PTYOutputStream */
+
+/*
+ * Class: org_eclipse_cdt_utils_pty_PTYInputStream
+ * Method: read0
+ * Signature: (I)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTYInputStream_read0(JNIEnv *env, jobject jobj, jint jfd,
+ jbyteArray buf, jint buf_len) {
+ int fd;
+ int status;
+ jbyte *data;
+ int data_len;
+
+ data = (*env)->GetByteArrayElements(env, buf, 0);
+ data_len = buf_len;
+ fd = jfd;
+
+ status = read(fd, data, data_len);
+ (*env)->ReleaseByteArrayElements(env, buf, data, 0);
+
+ if (status == 0) {
+ /* EOF. */
+ status = -1;
+ } else if (status == -1) {
+ /* Error, toss an exception */
+ /* Ignore the error for now, the debugger will attempt to close this multiple time. */
+#if 0
+ jclass exception = (*env)->FindClass(env, "java/io/IOException");
+ if (exception == NULL) {
+ /* Give up. */
+ return -1;
+ }
+ (*env)->ThrowNew(env, exception, "read error");
+#endif
+ }
+
+ return status;
+}
+
+/*
+ * Class: org_eclipse_cdt_utils_pty_PTYInputStream
+ * Method: close0
+ * Signature: (I)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTYInputStream_close0(JNIEnv *env, jobject jobj, jint fd) {
+ return close(fd);
+}
+
+/*
+ * Class: org_eclipse_cdt_utils_pty_PTYOutputStream
+ * Method: write0
+ * Signature: (II)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTYOutputStream_write0(JNIEnv *env, jobject jobj, jint jfd,
+ jbyteArray buf, jint buf_len) {
+ int status;
+ int fd;
+ jbyte *data;
+ int data_len;
+
+ data = (*env)->GetByteArrayElements(env, buf, 0);
+ data_len = buf_len;
+ fd = jfd;
+
+ status = write(fd, data, data_len);
+ (*env)->ReleaseByteArrayElements(env, buf, data, 0);
+
+ return status;
+}
+
+/*
+ * Class: org_eclipse_cdt_utils_pty_PTYOutputStream
+ * Method: close0
+ * Signature: (I)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTYOutputStream_close0(JNIEnv *env, jobject jobj, jint fd) {
+ return close(fd);
+}
diff --git a/core/org.eclipse.cdt.core.native/native_src/unix/spawner.c b/core/org.eclipse.cdt.core.native/native_src/unix/spawner.c
new file mode 100644
index 00000000000..5b74f1c0a0f
--- /dev/null
+++ b/core/org.eclipse.cdt.core.native/native_src/unix/spawner.c
@@ -0,0 +1,245 @@
+/*******************************************************************************
+ * Copyright (c) 2002, 2010 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - initial API and implementation
+ * Wind River Systems, Inc.
+ * Mikhail Zabaluev (Nokia) - bug 82744
+ *******************************************************************************/
+#include <unistd.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <signal.h>
+#include <string.h>
+#include <jni.h>
+#include <stdbool.h>
+
+#include "exec0.h"
+#include <org_eclipse_cdt_utils_spawner_Spawner.h>
+
+static bool trace_enabled = false;
+
+static void print_array(FILE *stream, const char *str, char **c_array) {
+ if (c_array) {
+ bool hasElement = false;
+
+ fprintf(stream, "%s [", str);
+
+ for (char **p = c_array; *p; p++) {
+ if (*p) {
+ if (hasElement) {
+ fprintf(stream, ",");
+ }
+ hasElement = true;
+ fprintf(stream, "\n \"%s\"", *p);
+ }
+ }
+
+ if (hasElement) {
+ fprintf(stream, "\n");
+ }
+
+ fprintf(stream, "]\n");
+ } else {
+ fprintf(stream, "%s null\n", str);
+ }
+}
+
+static char **alloc_c_array(JNIEnv *env, jobjectArray j_array) {
+ jint c_array_size = (*env)->GetArrayLength(env, j_array);
+ char **c_array = calloc(c_array_size + 1, sizeof(char *));
+
+ if (c_array == NULL) {
+ return NULL;
+ }
+
+ for (int i = 0; i < c_array_size; i++) {
+ jstring j_str = (jstring)(*env)->GetObjectArrayElement(env, j_array, i);
+ const char *c_str = (*env)->GetStringUTFChars(env, j_str, NULL);
+ c_array[i] = (char *)strdup(c_str);
+ (*env)->ReleaseStringUTFChars(env, j_str, c_str);
+ (*env)->DeleteLocalRef(env, j_str);
+ }
+
+ return c_array;
+}
+
+static void free_c_array(char **c_array) {
+ if (c_array) {
+ for (char **p = c_array; *p; p++) {
+ free(*p);
+ }
+ free(c_array);
+ }
+}
+
+JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_exec2(JNIEnv *env, jobject jobj, jobjectArray jcmd,
+ jobjectArray jenv, jstring jdir,
+ jobjectArray jchannels, jstring jslaveName,
+ jint masterFD, jboolean console) {
+ const char *dirpath = (*env)->GetStringUTFChars(env, jdir, NULL);
+ const char *pts_name = (*env)->GetStringUTFChars(env, jslaveName, NULL);
+ char **cmd = NULL;
+ char **envp = NULL;
+ int fd[3];
+ pid_t pid = -1;
+
+ if (!jchannels) {
+ goto bail_out;
+ }
+
+ cmd = alloc_c_array(env, jcmd);
+ if (!cmd) {
+ goto bail_out;
+ }
+
+ envp = alloc_c_array(env, jenv);
+ if (!envp) {
+ goto bail_out;
+ }
+
+ if (trace_enabled) {
+ print_array(stderr, "command:", cmd);
+ print_array(stderr, "Envp:", envp);
+ fprintf(stderr, "dirpath: %s\n", dirpath);
+ fprintf(stderr, "pts_name: %s\n", pts_name);
+ }
+
+ pid = exec_pty(cmd[0], cmd, envp, dirpath, fd, pts_name, masterFD, console);
+ if (pid < 0) {
+ goto bail_out;
+ }
+
+ jobject cls = (*env)->FindClass(env, "org/eclipse/cdt/utils/spawner/Spawner$UnixChannel");
+ jmethodID constructor = (*env)->GetMethodID(env, cls, "<init>", "(I)V");
+ for (jsize i = 0; i < 3; i++) {
+ jobject chan = (*env)->NewObject(env, cls, constructor, fd[i]);
+ (*env)->SetObjectArrayElement(env, jchannels, i, chan);
+ }
+
+bail_out:
+ (*env)->ReleaseStringUTFChars(env, jdir, dirpath);
+ (*env)->ReleaseStringUTFChars(env, jslaveName, pts_name);
+ free_c_array(cmd);
+ free_c_array(envp);
+ return pid;
+}
+
+JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_exec1(JNIEnv *env, jobject jobj, jobjectArray jcmd,
+ jobjectArray jenv, jstring jdir) {
+ const char *dirpath = (*env)->GetStringUTFChars(env, jdir, NULL);
+ char **cmd = NULL;
+ char **envp = NULL;
+ pid_t pid = -1;
+
+ cmd = alloc_c_array(env, jcmd);
+ if (!cmd) {
+ goto bail_out;
+ }
+
+ envp = alloc_c_array(env, jenv);
+ if (!envp) {
+ goto bail_out;
+ }
+
+ if (trace_enabled) {
+ print_array(stderr, "command:", cmd);
+ print_array(stderr, "Envp:", envp);
+ fprintf(stderr, "dirpath: %s\n", dirpath);
+ }
+
+ pid = exec0(cmd[0], cmd, envp, dirpath, NULL);
+ if (pid < 0) {
+ goto bail_out;
+ }
+
+bail_out:
+ (*env)->ReleaseStringUTFChars(env, jdir, dirpath);
+ free_c_array(cmd);
+ free_c_array(envp);
+ return pid;
+}
+
+JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_exec0(JNIEnv *env, jobject jobj, jobjectArray jcmd,
+ jobjectArray jenv, jstring jdir,
+ jobjectArray jchannels) {
+ const char *dirpath = (*env)->GetStringUTFChars(env, jdir, NULL);
+ char **cmd = NULL;
+ char **envp = NULL;
+ int fd[3];
+ pid_t pid = -1;
+ jclass channelClass = NULL;
+ jmethodID channelConstructor = NULL;
+
+ if (!jchannels) {
+ goto bail_out;
+ }
+
+ channelClass = (*env)->FindClass(env, "org/eclipse/cdt/utils/spawner/Spawner$UnixChannel");
+ if (channelClass == 0) {
+ goto bail_out;
+ }
+
+ channelConstructor = (*env)->GetMethodID(env, channelClass, "<init>", "(I)V");
+ if (!channelConstructor) {
+ goto bail_out;
+ }
+
+ cmd = alloc_c_array(env, jcmd);
+ if (!cmd) {
+ goto bail_out;
+ }
+
+ envp = alloc_c_array(env, jenv);
+ if (!envp) {
+ goto bail_out;
+ }
+
+ if (trace_enabled) {
+ print_array(stderr, "command:", cmd);
+ print_array(stderr, "Envp:", envp);
+ fprintf(stderr, "dirpath: %s\n", dirpath);
+ }
+ pid = exec0(cmd[0], cmd, envp, dirpath, fd);
+ if (pid < 0) {
+ goto bail_out;
+ }
+
+ for (jsize i = 0; i < 3; i++) {
+ jobject chan = (*env)->NewObject(env, channelClass, channelConstructor, fd[i]);
+ (*env)->SetObjectArrayElement(env, jchannels, i, chan);
+ }
+
+bail_out:
+ (*env)->ReleaseStringUTFChars(env, jdir, dirpath);
+ free_c_array(cmd);
+ free_c_array(envp);
+ return pid;
+}
+
+JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_raise(JNIEnv *env, jobject jobj, jint pid, jint sig) {
+ int status = killpg(pid, sig);
+ if (status == -1) {
+ status = kill(pid, sig);
+ }
+
+ return status;
+}
+
+JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_waitFor(JNIEnv *env, jobject jobj, jint pid) {
+ return wait0(pid);
+}
+
+JNIEXPORT void JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_configureNativeTrace(
+ JNIEnv *env, jclass cls, jboolean spawner, jboolean spawnerDetails, jboolean starter, jboolean readReport) {
+ if (spawner) {
+ trace_enabled = true;
+ }
+}
diff --git a/core/org.eclipse.cdt.core.native/native_src/win/Win32ProcessEx.c b/core/org.eclipse.cdt.core.native/native_src/win/Win32ProcessEx.c
new file mode 100644
index 00000000000..5a7740edbe7
--- /dev/null
+++ b/core/org.eclipse.cdt.core.native/native_src/win/Win32ProcessEx.c
@@ -0,0 +1,866 @@
+/*******************************************************************************
+ * Copyright (c) 2002, 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - initial API and implementation
+ * Wind River Systems, Inc.
+ *
+ * Win32ProcessEx.c
+ *
+ * This is a JNI implementation of spawner
+ *******************************************************************************/
+
+#include <string.h>
+#include <stdlib.h>
+#include <process.h>
+#include <tchar.h>
+#include <windows.h>
+#include <jni.h>
+
+#include "util.h"
+
+#include <org_eclipse_cdt_utils_spawner_Spawner.h>
+
+#define PIPE_SIZE 512 // Size of pipe buffer
+#define MAX_CMD_SIZE 2049 // Initial size of command line
+#define MAX_ENV_SIZE 4096 // Initial size of environment block
+#define PIPE_NAME_LENGTH 100 // Size of pipe name buffer
+#define PIPE_TIMEOUT 10000 // Default time-out value, in milliseconds.
+
+#define MAX_PROCS (100) // Maximum number of simultaneously running processes
+
+typedef struct _eventInfo {
+ HANDLE handle;
+ wchar_t *name;
+} EventInfo_t;
+
+// Process description block. Should be created for each launched process
+typedef struct _procInfo {
+ int pid; // Process ID
+ int uid; // quasi-unique process ID; we have to create it to avoid duplicated pid
+ // (actually this impossible from OS point of view but it is still possible
+ // a clash of new created and already finished process with one and the same PID.
+ // 4 events connected to this process (see starter)
+ EventInfo_t eventBreak; // signaled when Spawner.interrupt() is called; mildest of the terminate requests (SIGINT
+ // signal in UNIX world)
+ EventInfo_t eventWait;
+ EventInfo_t eventTerminate; // signaled when Spawner.terminate() is called; more forceful terminate request (SIGTERM
+ // signal in UNIX world)
+ EventInfo_t eventKill; // signaled when Spawner.kill() is called; most forceful terminate request (SIGKILL signal in
+ // UNIX world)
+ EventInfo_t eventCtrlc; // signaled when Spawner.interruptCTRLC() is called; like interrupt() but sends CTRL-C in
+ // all cases, even when inferior is a Cygwin program
+} procInfo_t, *pProcInfo_t;
+
+static int procCounter = 0; // Number of running processes
+
+// This is a VM helper
+void ThrowByName(JNIEnv *env, const char *name, const wchar_t *msg);
+
+// Creates _procInfo block for every launched process
+pProcInfo_t createProcInfo();
+
+// Find process description for this pid
+pProcInfo_t findProcInfo(int pid);
+
+// We launch separate thread for each project to trap it termination
+void _cdecl waitProcTermination(void *pv);
+
+// Use this function to clean project descriptor and return it to the pool of available blocks.
+static void cleanUpProcBlock(pProcInfo_t pCurProcInfo);
+
+int interruptProcess(int pid);
+
+extern CRITICAL_SECTION cs;
+
+extern wchar_t path[MAX_PATH]; // Directory where spawner.dll is located
+
+static pProcInfo_t pInfo = NULL;
+
+static int nCounter = 0; // We use it to build unique synchronization object names
+
+/////////////////////////////////////////////////////////////////////////////////////
+// Launcher; launchess process and traps its termination
+// Arguments: (see Spawner.java)
+// [in] cmdarray - array of command line elements
+// [in] envp - array of environment variables
+// [in] dir - working directory
+// [out] channels - streams handlers
+/////////////////////////////////////////////////////////////////////////////////////
+
+#ifdef __cplusplus
+extern "C"
+#endif
+ JNIEXPORT jint JNICALL
+ Java_org_eclipse_cdt_utils_spawner_Spawner_exec2(JNIEnv *env, jobject process, jobjectArray cmdarray,
+ jobjectArray envp, jstring dir, jobjectArray channels,
+ jstring slaveName, jint fdm, jboolean console) {
+ return -1;
+}
+
+static bool createStandardNamedPipe(HANDLE *handle, DWORD stdHandle, int pid, int counter) {
+ wchar_t pipeName[PIPE_NAME_LENGTH];
+ DWORD dwOpenMode;
+
+ switch (stdHandle) {
+ case STD_INPUT_HANDLE:
+ BUILD_PIPE_NAME(pipeName, L"stdin", pid, counter);
+ dwOpenMode = PIPE_ACCESS_OUTBOUND;
+ break;
+ case STD_OUTPUT_HANDLE:
+ BUILD_PIPE_NAME(pipeName, L"stdout", pid, counter);
+ dwOpenMode = PIPE_ACCESS_INBOUND | FILE_FLAG_OVERLAPPED;
+ break;
+ case STD_ERROR_HANDLE:
+ BUILD_PIPE_NAME(pipeName, L"stderr", pid, counter);
+ dwOpenMode = PIPE_ACCESS_INBOUND | FILE_FLAG_OVERLAPPED;
+ break;
+ default:
+ if (isTraceEnabled(CDT_TRACE_SPAWNER)) {
+ cdtTrace(L"Invalid STD handle given %i", stdHandle);
+ }
+ return false;
+ }
+
+ HANDLE pipe = CreateNamedPipeW(pipeName, dwOpenMode, PIPE_TYPE_BYTE | PIPE_READMODE_BYTE | PIPE_WAIT,
+ PIPE_UNLIMITED_INSTANCES, PIPE_SIZE, PIPE_SIZE, PIPE_TIMEOUT, NULL);
+ if (INVALID_HANDLE_VALUE == pipe) {
+ if (isTraceEnabled(CDT_TRACE_SPAWNER)) {
+ cdtTrace(L"Failed to create named pipe: %s\n", pipeName);
+ }
+ return false;
+ }
+
+ SetHandleInformation(pipe, HANDLE_FLAG_INHERIT, TRUE);
+
+ if (isTraceEnabled(CDT_TRACE_SPAWNER)) {
+ cdtTrace(L"Successfully created pipe %s -> %p\n", pipeName, pipe);
+ }
+
+ *handle = pipe;
+ return true;
+}
+
+static bool createNamedEvent(EventInfo_t *eventInfo, BOOL manualReset, const wchar_t *prefix, int pid, int counter) {
+ wchar_t eventName[50];
+ swprintf(eventName, sizeof(eventName) / sizeof(eventName[0]), L"%s%04x%08x", prefix, pid, counter);
+
+ HANDLE event = CreateEventW(NULL, manualReset, FALSE, eventName);
+ if (!event) {
+ if (isTraceEnabled(CDT_TRACE_SPAWNER)) {
+ cdtTrace(L"Failed to create event %s -> %i\n", eventName, GetLastError());
+ }
+ return false;
+ } else if (GetLastError() == ERROR_ALREADY_EXISTS) {
+ if (isTraceEnabled(CDT_TRACE_SPAWNER)) {
+ cdtTrace(L"Event %s already exist -> %p\n", eventName, event);
+ }
+ return false;
+ }
+
+ eventInfo->handle = event;
+ eventInfo->name = wcsdup(eventName);
+
+ if (!eventInfo->name) {
+ if (isTraceEnabled(CDT_TRACE_SPAWNER)) {
+ cdtTrace(L"Failed to allocate memory for event %s -> %p\n", eventName, event);
+ }
+ return false;
+ }
+
+ if (isTraceEnabled(CDT_TRACE_SPAWNER)) {
+ cdtTrace(L"Successfully created event %s -> %p\n", eventName, event);
+ }
+
+ return true;
+}
+
+static bool createCommandLine(JNIEnv *env, jobjectArray cmdarray, wchar_t **cmdLine, const wchar_t *fmt, ...) {
+ va_list ap;
+
+ va_start(ap, fmt);
+
+ wchar_t *buffer = NULL;
+ int size = MAX_CMD_SIZE;
+ int required = 0;
+ do {
+ // Free previous buffer
+ free(buffer);
+
+ size *= 2;
+ buffer = (wchar_t *)malloc(size * sizeof(wchar_t));
+
+ if (buffer) {
+ // Try to format the string
+ required = vswprintf(buffer, size, fmt, ap);
+ } else {
+ // malloc failed, clean up and return
+ va_end(ap);
+ ThrowByName(env, "java/io/IOException", L"Not enough memory");
+ return false;
+ }
+ } while (size <= required);
+ va_end(ap);
+
+ int nPos = wcslen(buffer);
+ int nCmdTokens = (*env)->GetArrayLength(env, cmdarray);
+ for (int i = 0; i < nCmdTokens; ++i) {
+ jstring item = (jstring)(*env)->GetObjectArrayElement(env, cmdarray, i);
+ jsize len = (*env)->GetStringLength(env, item);
+ const jchar *str = (*env)->GetStringChars(env, item, NULL);
+ if (str) {
+ required = nPos + len + 2; // 2 => space + \0
+ if (required > 32 * 1024) {
+ free(buffer);
+ ThrowByName(env, "java/io/IOException", L"Command line too long");
+ return false;
+ }
+
+ while (1) {
+ // Ensure enough space in buffer
+ if (required > size) {
+ size *= 2;
+ if (size < required) {
+ size = required;
+ }
+
+ wchar_t *tmp = (wchar_t *)realloc(buffer, size * sizeof(wchar_t));
+ if (tmp) {
+ // Allocation successful
+ buffer = tmp;
+ } else {
+ // Failed to realloc memory
+ free(buffer);
+ ThrowByName(env, "java/io/IOException", L"Not enough memory");
+ return false;
+ }
+ }
+
+ int nCpyLen = copyTo(buffer + nPos, (const wchar_t *)str, len, size - nPos);
+ if (nCpyLen < 0) { // Buffer too small
+ // Do a real count of number of chars required
+ required = nPos + copyTo(NULL, (const wchar_t *)str, len, INT_MAX) + 2; // 2 => space + \0
+ continue;
+ }
+
+ // Buffer was big enough.
+ nPos += nCpyLen;
+ break;
+ }
+
+ buffer[nPos++] = _T(' ');
+ buffer[nPos] = _T('\0');
+ (*env)->ReleaseStringChars(env, item, str);
+ } else {
+ free(buffer);
+ ThrowByName(env, "java/io/IOException", L"Command line contained null string");
+ return false;
+ }
+ }
+
+ *cmdLine = buffer;
+ return true;
+}
+
+static bool createEnvironmentBlock(JNIEnv *env, jobjectArray envp, wchar_t **block) {
+ int nEnvVars = (*env)->GetArrayLength(env, envp);
+
+ if (isTraceEnabled(CDT_TRACE_SPAWNER)) {
+ cdtTrace(L"There are %i environment variables \n", nEnvVars);
+ }
+
+ if (nEnvVars == 0) {
+ *block = NULL;
+ return true;
+ }
+
+ int nPos = 0;
+ int bufferSize = MAX_ENV_SIZE;
+ wchar_t *buffer = (wchar_t *)malloc(bufferSize * sizeof(wchar_t));
+ for (int i = 0; i < nEnvVars; ++i) {
+ jstring item = (jstring)(*env)->GetObjectArrayElement(env, envp, i);
+ const jchar *str = (*env)->GetStringChars(env, item, 0);
+ if (str) {
+ int len = wcslen(str);
+ while (bufferSize - nPos <= len + 2) { // +2 for two '\0'
+ bufferSize += MAX_ENV_SIZE;
+ wchar_t *tmp = (wchar_t *)realloc(buffer, bufferSize * sizeof(wchar_t));
+ if (tmp) {
+ buffer = tmp;
+ } else {
+ free(buffer);
+ (*env)->ReleaseStringChars(env, item, str);
+ ThrowByName(env, "java/io/IOException", L"Not enough memory");
+ return false;
+ }
+ if (isTraceEnabled(CDT_TRACE_SPAWNER)) {
+ cdtTrace(L"Realloc environment block; new length is %i \n", bufferSize);
+ }
+ }
+ if (isTraceEnabled(CDT_TRACE_SPAWNER)) {
+ cdtTrace(L"%s\n", (const wchar_t *)str);
+ }
+ wcsncpy(buffer + nPos, str, len);
+ nPos += len;
+ buffer[nPos++] = _T('\0');
+
+ (*env)->ReleaseStringChars(env, item, str);
+ }
+ }
+
+ buffer[nPos] = _T('\0');
+ *block = buffer;
+
+ return true;
+}
+
+#ifdef __cplusplus
+extern "C"
+#endif
+ JNIEXPORT jint JNICALL
+ Java_org_eclipse_cdt_utils_spawner_Spawner_exec0(JNIEnv *env, jobject process, jobjectArray cmdarray,
+ jobjectArray envp, jstring dir, jobjectArray channels) {
+ if (!channels) {
+ ThrowByName(env, "java/io/IOException", L"Channels can't be null");
+ return 0;
+ }
+
+ jclass channelClass = (*env)->FindClass(env, "org/eclipse/cdt/utils/spawner/Spawner$WinChannel");
+ if (!channelClass) {
+ ThrowByName(env, "java/io/IOException", L"Unable to find channel class");
+ return 0;
+ }
+
+ jmethodID channelConstructor = (*env)->GetMethodID(env, channelClass, "<init>", "(J)V");
+ if (!channelConstructor) {
+ ThrowByName(env, "java/io/IOException", L"Unable to find channel constructor");
+ return 0;
+ }
+
+ if ((HIBYTE(LOWORD(GetVersion()))) & 0x80) {
+ ThrowByName(env, "java/io/IOException", L"Does not support Windows 3.1/95/98/Me");
+ return 0;
+ }
+
+ if (!cmdarray) {
+ ThrowByName(env, "java/lang/NullPointerException", L"No command line specified");
+ return 0;
+ }
+
+ DWORD pid = GetCurrentProcessId();
+
+ // Create pipe names
+ EnterCriticalSection(&cs);
+ int nLocalCounter = nCounter++;
+ LeaveCriticalSection(&cs);
+
+ HANDLE stdHandles[] = {INVALID_HANDLE_VALUE, INVALID_HANDLE_VALUE, INVALID_HANDLE_VALUE};
+ if (!createStandardNamedPipe(&stdHandles[0], STD_INPUT_HANDLE, pid, nLocalCounter) ||
+ !createStandardNamedPipe(&stdHandles[1], STD_OUTPUT_HANDLE, pid, nLocalCounter) ||
+ !createStandardNamedPipe(&stdHandles[2], STD_ERROR_HANDLE, pid, nLocalCounter)) {
+ CLOSE_HANDLES(stdHandles);
+ ThrowByName(env, "java/io/IOException", L"CreatePipe");
+ return 0;
+ }
+
+ pProcInfo_t pCurProcInfo = createProcInfo();
+ if (!pCurProcInfo) {
+ CLOSE_HANDLES(stdHandles);
+ ThrowByName(env, "java/io/IOException", L"Too many processes");
+ return 0;
+ }
+
+ // Create events
+ if (!createNamedEvent(&pCurProcInfo->eventBreak, FALSE, L"SABreak", pid, nLocalCounter) ||
+ !createNamedEvent(&pCurProcInfo->eventWait, TRUE, L"SAWait", pid, nLocalCounter) ||
+ !createNamedEvent(&pCurProcInfo->eventTerminate, FALSE, L"SATerm", pid, nLocalCounter) ||
+ !createNamedEvent(&pCurProcInfo->eventKill, FALSE, L"SAKill", pid, nLocalCounter) ||
+ !createNamedEvent(&pCurProcInfo->eventCtrlc, FALSE, L"SACtrlc", pid, nLocalCounter)) {
+ cleanUpProcBlock(pCurProcInfo);
+ CLOSE_HANDLES(stdHandles);
+ ThrowByName(env, "java/io/IOException", L"Cannot create event");
+ return 0;
+ }
+
+ // Prepare command line
+ wchar_t *cmdLine = NULL;
+ if (!createCommandLine(env, cmdarray, &cmdLine, L"\"%sstarter.exe\" %i %i %s %s %s %s %s %i ", path, //
+ pid, //
+ nLocalCounter, //
+ pCurProcInfo->eventBreak.name, //
+ pCurProcInfo->eventWait.name, //
+ pCurProcInfo->eventTerminate.name, //
+ pCurProcInfo->eventKill.name, //
+ pCurProcInfo->eventCtrlc.name, //
+ isTraceEnabled(CDT_TRACE_SPAWNER_STARTER))) {
+ // Exception already thrown, just clean up
+ cleanUpProcBlock(pCurProcInfo);
+ CLOSE_HANDLES(stdHandles);
+ return 0;
+ }
+
+ // Prepare environment block
+ wchar_t *envBlock = NULL;
+ if (!createEnvironmentBlock(env, envp, &envBlock)) {
+ // Exception already thrown, just clean up
+ free(cmdLine);
+ cleanUpProcBlock(pCurProcInfo);
+ CLOSE_HANDLES(stdHandles);
+ return 0;
+ }
+
+ wchar_t *cwd = NULL;
+ if (dir) {
+ const jchar *str = (*env)->GetStringChars(env, dir, NULL);
+ if (str) {
+ cwd = wcsdup((const wchar_t *)str);
+ (*env)->ReleaseStringChars(env, dir, str);
+ }
+ }
+
+ STARTUPINFOW si;
+ ZeroMemory(&si, sizeof(si));
+ si.cb = sizeof(si);
+ si.dwFlags |= STARTF_USESHOWWINDOW;
+ si.wShowWindow = SW_HIDE; // Processes in the Process Group are hidden
+
+ DWORD flags = CREATE_NEW_CONSOLE;
+ flags |= CREATE_NO_WINDOW;
+ flags |= CREATE_UNICODE_ENVIRONMENT;
+
+ if (isTraceEnabled(CDT_TRACE_SPAWNER)) {
+ cdtTrace(cmdLine);
+ }
+
+ // launches starter; we need it to create another console group to correctly process
+ // emulation of SYSint signal (Ctrl-C)
+ PROCESS_INFORMATION pi = {0};
+ int ret = CreateProcessW(NULL, /* executable name */
+ cmdLine, /* command line */
+ 0, /* process security attribute */
+ 0, /* thread security attribute */
+ FALSE, /* inherits system handles */
+ flags, /* normal attached process */
+ envBlock, /* environment block */
+ cwd, /* change to the new current directory */
+ &si, /* (in) startup information */
+ &pi); /* (out) process information */
+
+ const DWORD error_CreateProcessW = GetLastError();
+
+ free(cwd);
+ free(envBlock);
+ free(cmdLine);
+
+ if (ret) {
+ HANDLE h[2];
+
+ EnterCriticalSection(&cs);
+
+ pCurProcInfo->pid = pi.dwProcessId;
+ h[0] = pCurProcInfo->eventWait.handle;
+ h[1] = pi.hProcess;
+
+ int what = WaitForMultipleObjects(2, h, FALSE, INFINITE);
+ if (what != WAIT_OBJECT_0) { // CreateProcess failed
+ if (isTraceEnabled(CDT_TRACE_SPAWNER)) {
+ cdtTrace(L"Process %i failed\n", pi.dwProcessId);
+ }
+ cleanUpProcBlock(pCurProcInfo);
+ CLOSE_HANDLES(stdHandles);
+ ThrowByName(env, "java/io/IOException", L"Launching failed");
+ if (isTraceEnabled(CDT_TRACE_SPAWNER)) {
+ cdtTrace(L"Process failed\n");
+ }
+ } else {
+ ret = (long)(pCurProcInfo->uid);
+
+ // Prepare stream handlers to return to java program
+ for (jsize i = 0; i < 3; i++) {
+ jobject chan = (*env)->NewObject(env, channelClass, channelConstructor, (jlong)stdHandles[i]);
+ (*env)->SetObjectArrayElement(env, channels, i, chan);
+ }
+
+ // do the cleanup so launch the according thread
+ // create a copy of the PROCESS_INFORMATION as this might get destroyed
+ PROCESS_INFORMATION *piCopy = (PROCESS_INFORMATION *)malloc(sizeof(PROCESS_INFORMATION));
+ memcpy(piCopy, &pi, sizeof(PROCESS_INFORMATION));
+ _beginthread(waitProcTermination, 0, (void *)piCopy);
+
+ if (isTraceEnabled(CDT_TRACE_SPAWNER)) {
+ cdtTrace(L"Process started\n");
+ }
+ }
+ LeaveCriticalSection(&cs);
+ } else { // Launching error
+ wchar_t *lpMsgBuf;
+ CLOSE_HANDLES(stdHandles);
+ lpMsgBuf = formatWinErrorCode(error_CreateProcessW);
+ ThrowByName(env, "java/io/IOException", lpMsgBuf);
+ // Free the buffer.
+ free(lpMsgBuf);
+ cleanUpProcBlock(pCurProcInfo);
+ ret = -1;
+ }
+
+ CloseHandle(pi.hThread);
+
+ return ret;
+}
+
+/////////////////////////////////////////////////////////////////////////////////////
+// Launcher; just launches process and don't care about it any more
+// Arguments: (see Spawner.java)
+// [in] cmdarray - array of command line elements
+// [in] envp - array of environment variables
+// [in] dir - working directory
+/////////////////////////////////////////////////////////////////////////////////////
+#ifdef __cplusplus
+extern "C"
+#endif
+ JNIEXPORT jint JNICALL
+ Java_org_eclipse_cdt_utils_spawner_Spawner_exec1(JNIEnv *env, jobject process, jobjectArray cmdarray,
+ jobjectArray envp, jstring dir) {
+
+ // Prepare command line
+ wchar_t *cmdLine = NULL;
+ if (!createCommandLine(env, cmdarray, &cmdLine, L"")) {
+ // Exception already thrown
+ return 0;
+ }
+
+ // Prepare environment block
+ wchar_t *envBlock = NULL;
+ if (!createEnvironmentBlock(env, envp, &envBlock)) {
+ free(cmdLine);
+ return 0;
+ }
+
+ wchar_t *cwd = NULL;
+ if (dir) {
+ const jchar *str = (*env)->GetStringChars(env, dir, NULL);
+ if (str) {
+ cwd = wcsdup((const wchar_t *)str);
+ (*env)->ReleaseStringChars(env, dir, str);
+ }
+ }
+
+ STARTUPINFOW si;
+ ZeroMemory(&si, sizeof(si));
+ si.cb = sizeof(si);
+
+ DWORD flags = CREATE_NEW_CONSOLE;
+ flags |= CREATE_UNICODE_ENVIRONMENT;
+
+ PROCESS_INFORMATION pi = {0};
+ int ret = CreateProcessW(NULL, /* executable name */
+ cmdLine, /* command line */
+ 0, /* process security attribute */
+ 0, /* thread security attribute */
+ TRUE, /* inherits system handles */
+ flags, /* normal attached process */
+ envBlock, /* environment block */
+ cwd, /* change to the new current directory */
+ &si, /* (in) startup information */
+ &pi); /* (out) process information */
+ const DWORD error_CreateProcessW = GetLastError();
+
+ free(cwd);
+ free(cmdLine);
+ free(envBlock);
+
+ if (ret) {
+ // Clean-up
+ CloseHandle(pi.hThread);
+ CloseHandle(pi.hProcess);
+ ret = (long)pi.dwProcessId; // hProcess;
+ } else { // error
+ wchar_t *lpMsgBuf = formatWinErrorCode(error_CreateProcessW);
+ ThrowByName(env, "java/io/IOException", lpMsgBuf);
+ // Free the buffer.
+ free(lpMsgBuf);
+ ret = -1;
+ }
+
+ return ret;
+}
+
+/////////////////////////////////////////////////////////////////////////////////////
+// Emulation of the signal raising
+// Arguments: (see Spawner.java)
+// [in] uid - unique process ID
+// [in] signal - signal to raise
+/////////////////////////////////////////////////////////////////////////////////////
+#ifdef __cplusplus
+extern "C"
+#endif
+ JNIEXPORT jint JNICALL
+ Java_org_eclipse_cdt_utils_spawner_Spawner_raise(JNIEnv *env, jobject process, jint uid, jint signal) {
+ jint ret = 0;
+
+ HANDLE hProc;
+ pProcInfo_t pCurProcInfo = findProcInfo(uid);
+
+ if (!pCurProcInfo) {
+ if (org_eclipse_cdt_utils_spawner_Spawner_SIG_INT == signal) { // Try another way
+ return interruptProcess(uid);
+ }
+ return -1;
+ }
+
+ if (isTraceEnabled(CDT_TRACE_SPAWNER)) {
+ cdtTrace(L"Spawner received signal %i for process %i\n", signal, pCurProcInfo->pid);
+ }
+
+ hProc = OpenProcess(SYNCHRONIZE, 0, pCurProcInfo->pid);
+
+ if (!hProc) {
+ return -1;
+ }
+
+ switch (signal) {
+ case org_eclipse_cdt_utils_spawner_Spawner_SIG_NOOP:
+ // Wait 0 msec -just check if the process has been still running
+ ret = ((WAIT_TIMEOUT == WaitForSingleObject(hProc, 0)) ? 0 : -1);
+ break;
+ case org_eclipse_cdt_utils_spawner_Spawner_SIG_HUP:
+ // Temporary do nothing
+ ret = 0;
+ break;
+ case org_eclipse_cdt_utils_spawner_Spawner_SIG_TERM:
+ if (isTraceEnabled(CDT_TRACE_SPAWNER)) {
+ cdtTrace(L"Spawner received TERM signal for process %i\n", pCurProcInfo->pid);
+ }
+ SetEvent(pCurProcInfo->eventTerminate.handle);
+ if (isTraceEnabled(CDT_TRACE_SPAWNER)) {
+ cdtTrace(L"Spawner signaled TERM event\n");
+ }
+ ret = 0;
+ break;
+
+ case org_eclipse_cdt_utils_spawner_Spawner_SIG_KILL:
+ if (isTraceEnabled(CDT_TRACE_SPAWNER)) {
+ cdtTrace(L"Spawner received KILL signal for process %i\n", pCurProcInfo->pid);
+ }
+ SetEvent(pCurProcInfo->eventKill.handle);
+ if (isTraceEnabled(CDT_TRACE_SPAWNER)) {
+ cdtTrace(L"Spawner signaled KILL event\n");
+ }
+ ret = 0;
+ break;
+ case org_eclipse_cdt_utils_spawner_Spawner_SIG_INT:
+ ResetEvent(pCurProcInfo->eventWait.handle);
+ SetEvent(pCurProcInfo->eventBreak.handle);
+ ret = (WaitForSingleObject(pCurProcInfo->eventWait.handle, 100) == WAIT_OBJECT_0);
+ break;
+ case org_eclipse_cdt_utils_spawner_Spawner_SIG_CTRLC:
+ ResetEvent(pCurProcInfo->eventWait.handle);
+ SetEvent(pCurProcInfo->eventCtrlc.handle);
+ ret = (WaitForSingleObject(pCurProcInfo->eventWait.handle, 100) == WAIT_OBJECT_0);
+ break;
+ default:
+ if (isTraceEnabled(CDT_TRACE_SPAWNER)) {
+ cdtTrace(L"Spawner does not support custom signals on Windows\n");
+ }
+ ret = -1;
+ break;
+ }
+
+ CloseHandle(hProc);
+ return ret;
+}
+
+/////////////////////////////////////////////////////////////////////////////////////
+// Wait for process termination
+// Arguments: (see Spawner.java)
+// [in] uid - unique process ID
+/////////////////////////////////////////////////////////////////////////////////////
+#ifdef __cplusplus
+extern "C"
+#endif
+ JNIEXPORT jint JNICALL
+ Java_org_eclipse_cdt_utils_spawner_Spawner_waitFor(JNIEnv *env, jobject process, jint uid) {
+ DWORD exit_code = -1;
+ int what = 0;
+ HANDLE hProc;
+ pProcInfo_t pCurProcInfo = findProcInfo(uid);
+
+ if (!pCurProcInfo) {
+ return -1;
+ }
+
+ hProc = OpenProcess(SYNCHRONIZE | PROCESS_QUERY_INFORMATION, 0, pCurProcInfo->pid);
+
+ if (!hProc) {
+ return -1;
+ }
+
+ what = WaitForSingleObject(hProc, INFINITE);
+
+ if (what == WAIT_OBJECT_0) {
+ GetExitCodeProcess(hProc, &exit_code);
+ }
+
+ if (hProc) {
+ CloseHandle(hProc);
+ }
+
+ return exit_code;
+}
+
+// Utilities
+
+/////////////////////////////////////////////////////////////////////////////////////
+// Throws Java exception (will be trapped by VM).
+// Arguments:
+// [in] name - name of exception class
+// [in] message to assign the event
+/////////////////////////////////////////////////////////////////////////////////////
+void ThrowByName(JNIEnv *env, const char *name, const wchar_t *msg) {
+ jclass cls = (*env)->FindClass(env, name);
+
+ if (cls) { /* Otherwise an exception has already been thrown */
+ size_t msgLen = wcslen(msg);
+ int nChars = WideCharToMultiByte(CP_UTF8, 0, msg, msgLen, NULL, 0, NULL, NULL);
+ if (nChars == 0) {
+ (*env)->ThrowNew(env, cls, "");
+ } else {
+ // ThrowNew expects message to be encoded in "modified UTF-8"
+ char *buf = (char *)calloc(nChars + 1, sizeof(char));
+ WideCharToMultiByte(CP_UTF8, 0, msg, msgLen, buf, nChars, NULL, NULL);
+ (*env)->ThrowNew(env, cls, buf);
+ free(buf);
+ }
+ }
+
+ /* It's a good practice to clean up the local references. */
+ (*env)->DeleteLocalRef(env, cls);
+}
+
+/////////////////////////////////////////////////////////////////////////////////////
+// Create process description block.
+// Arguments: no
+// Return : pointer to the process descriptor
+/////////////////////////////////////////////////////////////////////////////////////
+pProcInfo_t createProcInfo() {
+ pProcInfo_t p = NULL;
+
+ EnterCriticalSection(&cs);
+
+ if (!pInfo) {
+ pInfo = (pProcInfo_t)malloc(sizeof(procInfo_t) * MAX_PROCS);
+ ZeroMemory(pInfo, sizeof(procInfo_t) * MAX_PROCS);
+ }
+
+ for (int i = 0; i < MAX_PROCS; ++i) {
+ if (pInfo[i].pid == 0) {
+ pInfo[i].pid = -1;
+ pInfo[i].uid = ++procCounter;
+ p = pInfo + i;
+ break;
+ }
+ }
+
+ LeaveCriticalSection(&cs);
+
+ return p;
+}
+
+/////////////////////////////////////////////////////////////////////////////////////
+// Using unique process ID finds process descriptor
+// Arguments: no
+// Return : pointer to the process descriptor
+/////////////////////////////////////////////////////////////////////////////////////
+pProcInfo_t findProcInfo(int uid) {
+ if (pInfo) {
+ for (int i = 0; i < MAX_PROCS; ++i) {
+ if (pInfo[i].uid == uid) {
+ return pInfo + i;
+ }
+ }
+ }
+
+ return NULL;
+}
+
+/////////////////////////////////////////////////////////////////////////////////////
+// Cleans up vacant process descriptor
+// Arguments:
+// pCurProcInfo - pointer to descriptor to clean up
+// Return : no
+void cleanUpProcBlock(pProcInfo_t pCurProcInfo) {
+ EventInfo_t *eventInfos[] = {
+ &pCurProcInfo->eventBreak, &pCurProcInfo->eventWait, &pCurProcInfo->eventTerminate,
+ &pCurProcInfo->eventKill, &pCurProcInfo->eventCtrlc,
+ };
+
+ for (int i = 0; i < sizeof(eventInfos) / sizeof(eventInfos[0]); i++) {
+ EventInfo_t *p = eventInfos[i];
+ if (p->handle) {
+ CloseHandle(p->handle);
+ p->handle = NULL;
+ }
+
+ free(p->name);
+ p->name = NULL;
+ }
+
+ pCurProcInfo->pid = 0;
+}
+
+/////////////////////////////////////////////////////////////////////////////////////
+// Running in separate thread and waiting for the process termination
+// Arguments:
+// pv - pointer to PROCESS_INFORMATION struct
+// Return : no
+/////////////////////////////////////////////////////////////////////////////////////
+void _cdecl waitProcTermination(void *pv) {
+ PROCESS_INFORMATION *pi = (PROCESS_INFORMATION *)pv;
+
+ // wait for process termination
+ WaitForSingleObject(pi->hProcess, INFINITE);
+
+ for (int i = 0; i < MAX_PROCS; i++) {
+ if (pInfo[i].pid == pi->dwProcessId) {
+ cleanUpProcBlock(pInfo + i);
+ if (isTraceEnabled(CDT_TRACE_SPAWNER)) {
+ cdtTrace(L"waitProcTermination: set PID %i to 0\n", pi->dwProcessId);
+ }
+ }
+ }
+ CloseHandle(pi->hProcess);
+
+ free(pi);
+}
+
+#ifdef __cplusplus
+extern "C"
+#endif
+ JNIEXPORT void JNICALL
+ Java_org_eclipse_cdt_utils_spawner_Spawner_configureNativeTrace(JNIEnv *env, jclass cls, jboolean spawner,
+ jboolean spawnerDetails, jboolean starter,
+ jboolean readReport) {
+
+ if (spawner) {
+ enableTraceFor(CDT_TRACE_SPAWNER);
+ }
+
+ if (spawnerDetails) {
+ enableTraceFor(CDT_TRACE_SPAWNER_DETAILS);
+ }
+
+ if (starter) {
+ enableTraceFor(CDT_TRACE_SPAWNER_STARTER);
+ }
+
+ if (readReport) {
+ enableTraceFor(CDT_TRACE_SPAWNER_READ_REPORT);
+ }
+}
diff --git a/core/org.eclipse.cdt.core.native/native_src/win/include/winpty.h b/core/org.eclipse.cdt.core.native/native_src/win/include/winpty.h
new file mode 100644
index 00000000000..7987c4de1fe
--- /dev/null
+++ b/core/org.eclipse.cdt.core.native/native_src/win/include/winpty.h
@@ -0,0 +1,105 @@
+/*
+ * Copyright (c) 2011-2012 Ryan Prichard
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ */
+
+#ifndef WINPTY_H
+#define WINPTY_H
+
+#include <stdlib.h>
+#include <windows.h>
+
+#ifdef WINPTY
+#define WINPTY_API __declspec(dllexport)
+#else
+#define WINPTY_API __declspec(dllimport)
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct winpty_s winpty_t;
+
+/*
+ * winpty API.
+ */
+
+/*
+ * Starts a new winpty instance with the given size.
+ *
+ * This function creates a new agent process and connects to it.
+ */
+WINPTY_API winpty_t *winpty_open(int cols, int rows);
+
+/*
+ * Start a child process. Either (but not both) of appname and cmdline may
+ * be NULL. cwd and env may be NULL. env is a pointer to an environment
+ * block like that passed to CreateProcess.
+ *
+ * This function never modifies the cmdline, unlike CreateProcess.
+ *
+ * Only one child process may be started. After the child process exits, the
+ * agent will scrape the console output one last time, then close the data pipe
+ * once all remaining data has been sent.
+ *
+ * Returns 0 on success or a Win32 error code on failure.
+ */
+WINPTY_API int winpty_start_process(winpty_t *pc, const wchar_t *appname, const wchar_t *cmdline, const wchar_t *cwd,
+ const wchar_t *env);
+
+/*
+ * Returns the exit code of the process started with winpty_start_process,
+ * or -1 none is available.
+ */
+WINPTY_API int winpty_get_exit_code(winpty_t *pc);
+
+/*
+ * Returns the process id of the process started with winpty_start_process,
+ * or -1 none is available.
+ */
+WINPTY_API int winpty_get_process_id(winpty_t *pc);
+
+/*
+ * Returns an overlapped-mode pipe handle that can be read and written
+ * like a Unix terminal.
+ */
+WINPTY_API HANDLE winpty_get_data_pipe(winpty_t *pc);
+
+/*
+ * Change the size of the Windows console.
+ */
+WINPTY_API int winpty_set_size(winpty_t *pc, int cols, int rows);
+
+/*
+ * Toggle the console mode. If in console mode, no terminal escape sequences are send.
+ */
+WINPTY_API int winpty_set_console_mode(winpty_t *pc, int mode);
+
+/*
+ * Closes the winpty.
+ */
+WINPTY_API void winpty_close(winpty_t *pc);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* WINPTY_H */
diff --git a/core/org.eclipse.cdt.core.native/native_src/win/iostream.c b/core/org.eclipse.cdt.core.native/native_src/win/iostream.c
new file mode 100644
index 00000000000..64d63415774
--- /dev/null
+++ b/core/org.eclipse.cdt.core.native/native_src/win/iostream.c
@@ -0,0 +1,220 @@
+/*******************************************************************************
+ * Copyright (c) 2002, 2009 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - initial API and implementation
+ *
+ * raise.c
+ *
+ * This is a part of JNI implementation of spawner
+ * Includes implementation of JNI methods (see Spawner.java)
+ *******************************************************************************/
+#include <string.h>
+#include <stdlib.h>
+#include <jni.h>
+#include <windows.h>
+
+#include "util.h"
+
+#include <org_eclipse_cdt_utils_spawner_Spawner.h>
+
+void ThrowByName(JNIEnv *env, const char *name, const wchar_t *msg);
+
+#define BUFF_SIZE (1024)
+
+static HANDLE channelToHandle(JNIEnv *env, jobject channel) {
+ if (!channel) {
+ ThrowByName(env, "java/io/IOException", L"Invalid channel object");
+ return NULL;
+ }
+
+ jclass cls = (*env)->GetObjectClass(env, channel);
+ if (!cls) {
+ ThrowByName(env, "java/io/IOException", L"Unable to get channel class");
+ return NULL;
+ }
+
+ jfieldID fid = (*env)->GetFieldID(env, cls, "handle", "J");
+ if (!fid) {
+ ThrowByName(env, "java/io/IOException", L"Unable to find handle");
+ return NULL;
+ }
+
+ jlong handle = (*env)->GetLongField(env, channel, fid);
+ return (HANDLE)handle;
+}
+
+/* Inaccessible static: skipBuffer */
+#ifdef __cplusplus
+extern "C"
+#endif
+ JNIEXPORT jint JNICALL
+ Java_org_eclipse_cdt_utils_spawner_SpawnerInputStream_read0(JNIEnv *env, jobject proc, jobject channel,
+ jbyteArray buf, jint len) {
+ jbyte tmpBuf[BUFF_SIZE];
+ int nBuffOffset = 0;
+ HANDLE handle = channelToHandle(env, channel);
+ OVERLAPPED overlapped;
+ overlapped.Offset = 0;
+ overlapped.OffsetHigh = 0;
+ overlapped.hEvent = CreateEvent(NULL, // no security attribute
+ TRUE, // manual-reset event
+ TRUE, // initial state = signaled
+ NULL); // unnamed event object
+
+ if (!overlapped.hEvent) {
+ wchar_t *lpMsgBuf = formatWinErrorCode(GetLastError());
+ ThrowByName(env, "java/io/IOException", lpMsgBuf);
+ // Free the buffer.
+ free(lpMsgBuf);
+ }
+
+ if (isTraceEnabled(CDT_TRACE_SPAWNER) && isTraceEnabled(CDT_TRACE_SPAWNER_READ_REPORT)) {
+ cdtTrace(L"Start read %p\n", handle);
+ }
+
+ while (len > nBuffOffset) {
+ DWORD nNumberOfBytesToRead = min(len - nBuffOffset, BUFF_SIZE);
+ DWORD nNumberOfBytesRead;
+ if (0 == ReadFile(handle, tmpBuf, nNumberOfBytesToRead, &nNumberOfBytesRead, &overlapped)) {
+ int err = GetLastError();
+
+ if (err == ERROR_IO_PENDING) {
+ // asynchronous i/o is still in progress
+ // check on the results of the asynchronous read
+ if (GetOverlappedResult(handle, &overlapped, &nNumberOfBytesRead, TRUE)) {
+ err = 0;
+ } else { // if there was a problem ...
+ err = GetLastError();
+ }
+ }
+ if (err == ERROR_BROKEN_PIPE) { // Pipe was closed
+ break;
+ }
+ if (err != 0) {
+ if (isTraceEnabled(CDT_TRACE_SPAWNER)) {
+ cdtTrace(L"Read failed - %p, error %i\n", handle, err);
+ }
+ if (err !=
+ ERROR_MORE_DATA) { // Otherwise error means just that there are more data than buffer can accept
+ wchar_t *lpMsgBuf = formatWinErrorCode(err);
+ ThrowByName(env, "java/io/IOException", lpMsgBuf);
+ free(lpMsgBuf);
+ nBuffOffset = 0;
+ break;
+ } else {
+ // buffer overflow?
+ // according to msdn this happens in message read mode only
+ if (isTraceEnabled(CDT_TRACE_SPAWNER)) {
+ cdtTrace(L"Buffer full - %p, bytes read: %i\n", handle, nNumberOfBytesRead);
+ }
+ // nNumberOfBytesRead can be 0 here for unknown reason (bug 269223)
+ nNumberOfBytesRead = nNumberOfBytesToRead;
+ }
+ }
+ }
+ if (nNumberOfBytesRead > 0) {
+ (*env)->SetByteArrayRegion(env, buf, nBuffOffset, nNumberOfBytesRead, tmpBuf);
+ } else {
+ break;
+ }
+ nBuffOffset += nNumberOfBytesRead;
+ if (nNumberOfBytesRead != nNumberOfBytesToRead) {
+ break;
+ } else {
+ // Is there data left in the pipe?
+ DWORD bytesAvailable = 0;
+ if (!PeekNamedPipe(handle, NULL, 0, NULL, &bytesAvailable, NULL) || bytesAvailable == 0) {
+ // No bytes left
+ break;
+ }
+ }
+ }
+ CloseHandle(overlapped.hEvent);
+ if (isTraceEnabled(CDT_TRACE_SPAWNER) && isTraceEnabled(CDT_TRACE_SPAWNER_READ_REPORT)) {
+ cdtTrace(L"End read %p - bytes read: %d\n", handle, nBuffOffset);
+ }
+ return nBuffOffset; // This is a real full readed length
+}
+
+#ifdef __cplusplus
+extern "C"
+#endif
+ JNIEXPORT jint JNICALL
+ Java_org_eclipse_cdt_utils_spawner_SpawnerInputStream_close0(JNIEnv *env, jobject proc, jobject channel) {
+ int rc;
+ HANDLE handle = channelToHandle(env, channel);
+ if (isTraceEnabled(CDT_TRACE_SPAWNER)) {
+ cdtTrace(L"Close %p\n", handle);
+ }
+ rc = (CloseHandle(handle) ? 0 : -1);
+ if (isTraceEnabled(CDT_TRACE_SPAWNER)) {
+ cdtTrace(L"Closed %p\n", handle);
+ }
+ return (rc ? GetLastError() : 0);
+}
+
+#ifdef __cplusplus
+extern "C"
+#endif
+ JNIEXPORT jint JNICALL
+ Java_org_eclipse_cdt_utils_spawner_SpawnerInputStream_available0(JNIEnv *env, jobject proc, jobject channel) {
+ DWORD nAvail = 0;
+ HANDLE handle = channelToHandle(env, channel);
+
+ if (0 == PeekNamedPipe(handle, NULL, 0, NULL, &nAvail, NULL)) {
+ // error
+ return 0;
+ }
+ return nAvail;
+}
+
+#ifdef __cplusplus
+extern "C"
+#endif
+ JNIEXPORT jint JNICALL
+ Java_org_eclipse_cdt_utils_spawner_SpawnerOutputStream_write0(JNIEnv *env, jobject proc, jobject channel,
+ jbyteArray buf, jint len) {
+ jbyte tmpBuf[BUFF_SIZE];
+ int nBuffOffset = 0;
+ HANDLE handle = channelToHandle(env, channel);
+
+ while (len > nBuffOffset) {
+ DWORD nNumberOfBytesToWrite = min(len - nBuffOffset, BUFF_SIZE);
+ DWORD nNumberOfBytesWritten;
+ (*env)->GetByteArrayRegion(env, buf, nBuffOffset, nNumberOfBytesToWrite, tmpBuf);
+ if (0 == WriteFile(handle, tmpBuf, nNumberOfBytesToWrite, &nNumberOfBytesWritten, NULL)) {
+ wchar_t *lpMsgBuf = formatWinErrorCode(GetLastError());
+ ThrowByName(env, "java/io/IOException", lpMsgBuf);
+ free(lpMsgBuf);
+ return 0;
+ }
+ nBuffOffset += nNumberOfBytesWritten;
+ }
+ return 0;
+}
+
+#ifdef __cplusplus
+extern "C"
+#endif
+ JNIEXPORT jint JNICALL
+ Java_org_eclipse_cdt_utils_spawner_SpawnerOutputStream_close0(JNIEnv *env, jobject proc, jobject channel) {
+ int rc;
+ HANDLE handle = channelToHandle(env, channel);
+ if (isTraceEnabled(CDT_TRACE_SPAWNER)) {
+ cdtTrace(L"Close %p\n", handle);
+ }
+ FlushFileBuffers(handle);
+ rc = (CloseHandle(handle) ? 0 : -1);
+ if (isTraceEnabled(CDT_TRACE_SPAWNER)) {
+ cdtTrace(L"Closed %p\n", handle);
+ }
+ return (rc ? GetLastError() : 0);
+}
diff --git a/core/org.eclipse.cdt.core.native/native_src/win/pty.cpp b/core/org.eclipse.cdt.core.native/native_src/win/pty.cpp
new file mode 100644
index 00000000000..a974f68bb38
--- /dev/null
+++ b/core/org.eclipse.cdt.core.native/native_src/win/pty.cpp
@@ -0,0 +1,382 @@
+/*******************************************************************************
+ * Copyright (c) 2013, 2016 Wind River Systems, Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+
+#include "org_eclipse_cdt_utils_pty_PTY.h"
+#include "org_eclipse_cdt_utils_pty_PTYInputStream.h"
+#include "org_eclipse_cdt_utils_pty_PTYOutputStream.h"
+#include "winpty.h"
+
+#include <string>
+#include <vector>
+#include <map>
+#include <stdlib.h>
+#include <assert.h>
+#include <ctime>
+
+static std::map<int, winpty_t *> fd2pty;
+static std::map<int, int> fd2rc;
+
+JNIEXPORT jstring JNICALL Java_org_eclipse_cdt_utils_pty_PTY_openMaster(JNIEnv *env, jobject jobj, jboolean console) {
+ jfieldID fid; /* Store the field ID */
+ jstring jstr = NULL;
+ jclass cls;
+
+ int master = -1;
+ char line[1024];
+
+ line[0] = '\0';
+
+ /* Open new winpty handle */
+ winpty_t *winpty = winpty_open(80, 40);
+ if (!winpty) {
+ return NULL;
+ }
+
+ /* Configure console mode */
+ if (console) {
+ winpty_set_console_mode(winpty, 1);
+ }
+
+ /* Generate masterFD based on current system time */
+ srand((unsigned int)time(NULL));
+ master = rand();
+
+ /* Make sure masterFD does not exist */
+ while (fd2pty.find(master) != fd2pty.end()) {
+ master++;
+ }
+
+ sprintf(line, "winpty_%i", master);
+
+ /* Remember the winpty handle for the generated masterFD */
+ fd2pty.insert(std::pair<int, winpty_t *>(master, winpty));
+
+ /* Get a reference to the obj's class */
+ cls = env->GetObjectClass(jobj);
+
+ /* Set the master fd. */
+ fid = env->GetFieldID(cls, "master", "I");
+ if (!fid) {
+ return NULL;
+ }
+ env->SetIntField(jobj, fid, (jint)master);
+
+ /* Create a new String for the slave. */
+ jstr = env->NewStringUTF(line);
+
+ return jstr;
+}
+
+JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTY_change_1window_1size(JNIEnv *env, jobject jobj, jint fdm,
+ jint width, jint height) {
+ int fd;
+ std::map<int, winpty_t *>::const_iterator fd2pty_Iter;
+
+ fd = fdm;
+ fd2pty_Iter = fd2pty.find(fd);
+ if (fd2pty_Iter != fd2pty.end()) {
+ winpty_t *winpty = fd2pty_Iter->second;
+ if (winpty) {
+ return winpty_set_size(winpty, width, height);
+ }
+ }
+
+ return 0;
+}
+
+JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTYInputStream_read0(JNIEnv *env, jobject jobj, jint jfd,
+ jbyteArray buf, jint buf_len) {
+ DWORD amount = -1;
+ OVERLAPPED over;
+ int fd;
+ std::map<int, winpty_t *>::const_iterator fd2pty_Iter;
+
+ fd = jfd;
+ fd2pty_Iter = fd2pty.find(fd);
+ if (fd2pty_Iter != fd2pty.end()) {
+ winpty_t *winpty = fd2pty_Iter->second;
+ if (winpty) {
+ /* Get the pipe handle */
+ HANDLE handle = winpty_get_data_pipe(winpty);
+
+ memset(&over, 0, sizeof(over));
+ over.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
+
+ char *buffer = new char[buf_len];
+ memset(buffer, 0, sizeof(*buffer));
+
+ jbyte *data = env->GetByteArrayElements(buf, 0);
+ memset(data, 0, sizeof(*data));
+
+ amount = 0;
+ BOOL ret = ReadFile(handle, buffer, buf_len, &amount, &over);
+ if (!ret) {
+ DWORD error = GetLastError();
+ if (error == ERROR_IO_PENDING) {
+ ret = GetOverlappedResult(handle, &over, &amount, TRUE);
+ }
+ }
+
+ if (ret && amount > 0) {
+ memcpy(data, buffer, amount);
+ }
+
+ if (!ret || amount == 0) {
+ amount = -1;
+ }
+
+ if (!ret && fd2pty.find(fd) != fd2pty.end()) {
+ int rc = winpty_get_exit_code(winpty);
+ fd2rc.insert(std::pair<int, int>(fd, rc));
+ }
+
+ delete[] buffer;
+ env->ReleaseByteArrayElements(buf, data, 0);
+ ResetEvent(over.hEvent);
+ }
+ }
+
+ return amount;
+}
+
+JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTYInputStream_close0(JNIEnv *env, jobject jobj, jint jfd) {
+ int fd;
+ std::map<int, winpty_t *>::iterator fd2pty_Iter;
+
+ fd = jfd;
+ fd2pty_Iter = fd2pty.find(fd);
+ if (fd2pty_Iter != fd2pty.end()) {
+ winpty_t *winpty = fd2pty_Iter->second;
+ fd2pty.erase(fd2pty_Iter);
+ if (winpty) {
+ winpty_close(winpty);
+ winpty = NULL;
+ }
+ }
+
+ return 0;
+}
+
+JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTYOutputStream_write0(JNIEnv *env, jobject jobj, jint jfd,
+ jbyteArray buf, jint buf_len) {
+ DWORD written = -1;
+ OVERLAPPED over;
+ int fd;
+ std::map<int, winpty_t *>::iterator fd2pty_Iter;
+
+ fd = jfd;
+ fd2pty_Iter = fd2pty.find(fd);
+ if (fd2pty_Iter != fd2pty.end()) {
+ winpty_t *winpty = fd2pty_Iter->second;
+ if (winpty) {
+ /* Get the pipe handle */
+ HANDLE handle = winpty_get_data_pipe(winpty);
+
+ memset(&over, 0, sizeof(over));
+ over.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
+
+ char *buffer = new char[buf_len];
+ memset(buffer, 0, sizeof(*buffer));
+
+ jbyte *data = env->GetByteArrayElements(buf, 0);
+ memcpy(buffer, data, buf_len);
+
+ BOOL ret = WriteFile(handle, buffer, buf_len, &written, &over);
+ env->ReleaseByteArrayElements(buf, data, 0);
+
+ if (!ret && GetLastError() == ERROR_IO_PENDING) {
+ ret = GetOverlappedResult(handle, &over, &written, TRUE);
+ }
+ if (!ret || (int)written != buf_len) {
+ written = -1;
+ }
+
+ delete[] buffer;
+ }
+ }
+
+ return written;
+}
+
+JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTYOutputStream_close0(JNIEnv *env, jobject jobj, jint jfd) {
+ int fd;
+ std::map<int, winpty_t *>::iterator fd2pty_Iter;
+
+ fd = jfd;
+ fd2pty_Iter = fd2pty.find(fd);
+ if (fd2pty_Iter != fd2pty.end()) {
+ winpty_t *winpty = fd2pty_Iter->second;
+ fd2pty.erase(fd2pty_Iter);
+ if (winpty) {
+ winpty_close(winpty);
+ winpty = NULL;
+ }
+ }
+
+ return 0;
+}
+
+/*
+ * Convert convert slashes to backslashes.
+ */
+static std::wstring convertSlashes(const wchar_t *path) {
+ std::wstring ret;
+
+ for (int i = 0; path[i] != L'\0'; ++i) {
+ if (path[i] == L'/') {
+ ret.push_back(L'\\');
+ } else {
+ ret.push_back(path[i]);
+ }
+ }
+
+ return ret;
+}
+
+// Convert argc/argv into a Win32 command-line following the escaping convention
+// documented on MSDN. (e.g. see CommandLineToArgvW documentation)
+static std::wstring argvToCommandLine(const std::vector<std::wstring> &argv) {
+ std::wstring result;
+ for (size_t argIndex = 0; argIndex < argv.size(); ++argIndex) {
+ if (argIndex > 0) {
+ result.push_back(L' ');
+ }
+ const wchar_t *arg = argv[argIndex].c_str();
+ const bool quote = wcschr(arg, L' ') || wcschr(arg, L'\t') || *arg == L'\0';
+ if (quote) {
+ result.push_back(L'\"');
+ }
+ int bsCount = 0;
+ for (const wchar_t *p = arg; *p != L'\0'; ++p) {
+ if (*p == L'\\') {
+ bsCount++;
+ } else if (*p == L'\"') {
+ result.append(bsCount * 2 + 1, L'\\');
+ result.push_back(L'\"');
+ bsCount = 0;
+ } else {
+ result.append(bsCount, L'\\');
+ bsCount = 0;
+ result.push_back(*p);
+ }
+ }
+ if (quote) {
+ result.append(bsCount * 2, L'\\');
+ result.push_back(L'\"');
+ } else {
+ result.append(bsCount, L'\\');
+ }
+ }
+ return result;
+}
+
+JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTY_exec2(JNIEnv *env, jobject jobj, jobjectArray jcmd,
+ jobjectArray jenv, jstring jdir, jobjectArray jchannels,
+ jstring jslaveName, jint masterFD, jboolean console) {
+ int fd;
+ std::map<int, winpty_t *>::iterator fd2pty_Iter;
+
+ const wchar_t *cwdW = (const wchar_t *)env->GetStringChars(jdir, NULL);
+ const char *pts_name = env->GetStringUTFChars(jslaveName, NULL);
+
+ int pid = -1;
+
+ jint argc = env->GetArrayLength(jcmd);
+ jint envc = env->GetArrayLength(jenv);
+
+ if (!jchannels || env->GetArrayLength(jchannels) != 3) {
+ goto bail_out;
+ }
+
+ fd = masterFD;
+ fd2pty_Iter = fd2pty.find(fd);
+ if (fd2pty_Iter != fd2pty.end()) {
+ winpty_t *winpty = fd2pty_Iter->second;
+ if (winpty) {
+ std::vector<std::wstring> argVector;
+
+ for (int i = 0; i < argc; i++) {
+ jstring j_str = (jstring)env->GetObjectArrayElement(jcmd, i);
+ const wchar_t *w_str = (const wchar_t *)env->GetStringChars(j_str, NULL);
+ if (i == 0) {
+ argVector.push_back(convertSlashes(w_str));
+ } else {
+ argVector.push_back(w_str);
+ }
+ env->ReleaseStringChars(j_str, (const jchar *)w_str);
+ env->DeleteLocalRef(j_str);
+ }
+
+ std::wstring envp;
+
+ for (int i = 0; i < envc; i++) {
+ jstring j_str = (jstring)env->GetObjectArrayElement(jenv, i);
+ const wchar_t *w_str = (const wchar_t *)env->GetStringChars(j_str, NULL);
+ envp.append(w_str);
+ envp.push_back(L'\0');
+ env->ReleaseStringChars(j_str, (const jchar *)w_str);
+ env->DeleteLocalRef(j_str);
+ }
+
+ std::wstring cmdLine = argvToCommandLine(argVector);
+ const wchar_t *cmdLineW = cmdLine.c_str();
+
+ int ret = winpty_start_process(winpty, NULL, cmdLineW, cwdW, envp.c_str());
+
+ if (ret == 0) {
+ // Success. Get the process id.
+ pid = winpty_get_process_id(winpty);
+ }
+ }
+ }
+
+bail_out:
+ env->ReleaseStringChars(jdir, (const jchar *)cwdW);
+ env->ReleaseStringUTFChars(jslaveName, pts_name);
+
+ return pid;
+}
+
+JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTY_waitFor(JNIEnv *env, jobject jobj, jint masterFD, jint pid) {
+ int status = -1;
+ DWORD flags;
+
+ int fd;
+ std::map<int, winpty_t *>::iterator fd2pty_Iter;
+ std::map<int, int>::iterator fd2rc_Iter;
+
+ fd = masterFD;
+ fd2pty_Iter = fd2pty.find(fd);
+ if (fd2pty_Iter != fd2pty.end()) {
+ winpty_t *winpty = fd2pty_Iter->second;
+ if (winpty) {
+ HANDLE handle = winpty_get_data_pipe(winpty);
+ BOOL success;
+ do {
+ success = GetHandleInformation(handle, &flags);
+ if (success) {
+ Sleep(500);
+ }
+ } while (success);
+
+ fd2rc_Iter = fd2rc.find(fd);
+ if (fd2rc_Iter != fd2rc.end()) {
+ status = fd2rc_Iter->second;
+ fd2rc.erase(fd2rc_Iter);
+ }
+ }
+ }
+
+ return status;
+}
diff --git a/core/org.eclipse.cdt.core.native/native_src/win/pty_dllmain.cpp b/core/org.eclipse.cdt.core.native/native_src/win/pty_dllmain.cpp
new file mode 100644
index 00000000000..79e230e78ec
--- /dev/null
+++ b/core/org.eclipse.cdt.core.native/native_src/win/pty_dllmain.cpp
@@ -0,0 +1,47 @@
+// dllmain.cpp : Defines the entry point for the DLL application.
+#include <windows.h>
+#include <delayimp.h>
+#include <assert.h>
+
+static HMODULE getCurrentModule() {
+ HMODULE module;
+ if (!GetModuleHandleEx(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS | GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT,
+ (LPCTSTR)getCurrentModule, &module)) {
+ assert(false);
+ }
+ return module;
+}
+
+HMODULE PTYExplicitLoadLibrary(LPCSTR pszModuleName) {
+ if (lstrcmpiA(pszModuleName, "winpty.dll") == 0) {
+ CHAR szPath[MAX_PATH] = "";
+ //_hdllInstance is the HMODULE of *this* module
+ DWORD cchPath = GetModuleFileNameA(getCurrentModule(), szPath, MAX_PATH);
+ while (cchPath > 0) {
+ switch (szPath[cchPath - 1]) {
+ case '\\':
+ case '/':
+ case ':':
+ break;
+ default:
+ --cchPath;
+ continue;
+ }
+ break; // stop searching; found path separator
+ }
+ lstrcpynA(szPath + cchPath, pszModuleName, MAX_PATH - cchPath);
+ return LoadLibraryA(szPath); // call with full path to dependent DLL
+ }
+ return NULL;
+}
+
+FARPROC WINAPI PTYDliNotifyHook(unsigned dliNotify, PDelayLoadInfo pdli) {
+ if (dliNotify == dliNotePreLoadLibrary) {
+ return (FARPROC)PTYExplicitLoadLibrary(pdli->szDll);
+ }
+ return NULL;
+}
+
+extern "C" {
+PfnDliHook __pfnDliNotifyHook2 = PTYDliNotifyHook;
+}
diff --git a/core/org.eclipse.cdt.core.native/native_src/win/raise.c b/core/org.eclipse.cdt.core.native/native_src/win/raise.c
new file mode 100644
index 00000000000..32ad071406e
--- /dev/null
+++ b/core/org.eclipse.cdt.core.native/native_src/win/raise.c
@@ -0,0 +1,165 @@
+/*******************************************************************************
+ * Copyright (c) 2002, 2011 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - initial API and implementation
+ *
+ * raise.c
+ *
+ * This is a part of JNI implementation of spawner
+ *******************************************************************************/
+#include <jni.h>
+#include <windows.h>
+
+#include "util.h"
+
+#include <org_eclipse_cdt_utils_spawner_Spawner.h>
+
+static HWND consoleHWND;
+
+/////////////////////////////////////////////////////////////////////////////////////
+// Check if window is a console of process with pid
+// Arguments:
+// hwnd - window handler
+// arg - process PID
+// Return : TRUE if yes
+/////////////////////////////////////////////////////////////////////////////////////
+static BOOL CALLBACK find_child_console(HWND hwnd, LPARAM arg) {
+ DWORD process_id;
+ DWORD pid = arg;
+
+ GetWindowThreadProcessId(hwnd, &process_id);
+ if (process_id == pid) {
+ wchar_t window_class[32];
+
+ GetClassName(hwnd, window_class, sizeof(window_class));
+ if (wcscmp(window_class, L"ConsoleWindowClass") == 0) {
+ consoleHWND = hwnd;
+ return FALSE;
+ }
+ }
+ /* keep looking */
+ return TRUE;
+}
+
+// Need to declare this Win32 prototype ourselves. _WIN32_WINNT is getting
+// defined to a Windows NT value, thus we don't get this. Can't assume
+// we're running on XP, anyway (or can we by now?)
+#if (_WIN32_WINNT < 0x0501) || defined(_MSC_VER)
+typedef BOOL(WINAPI *DebugBreakProcessFunc)(HANDLE);
+#endif
+
+/////////////////////////////////////////////////////////////////////////////////////
+// Called to interrupt a process that we didn't launch (and thus does not share our
+// console). Windows XP introduced the function 'DebugBreakProcess', which allows
+// a process to interrupt another process even if if the two do not share a console.
+// If we're running on 2000 or earlier, we have to resort to simulating a CTRL-C
+// in the console by firing keyboard events. This will work only if the process
+// has its own console. That means, e.g., the process should have been started at
+// the cmdline with 'start myprogram.exe' instead of 'myprogram.exe'.
+//
+// Arguments:
+// pid - process' pid
+// Return : 0 if OK or error code
+/////////////////////////////////////////////////////////////////////////////////////
+int interruptProcess(int pid) {
+ // See if DebugBreakProcess is available (XP and beyond)
+ HMODULE hmod = LoadLibrary(L"Kernel32.dll");
+ if (hmod) {
+ BOOL success = FALSE;
+ FARPROC procaddr = GetProcAddress(hmod, "DebugBreakProcess");
+ if (procaddr != NULL) {
+ HANDLE proc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, (DWORD)pid);
+ if (proc != NULL) {
+ typedef BOOL WINAPI (*DebugBreakProcessFunc)(HANDLE);
+ DebugBreakProcessFunc pDebugBreakProcess = (DebugBreakProcessFunc)procaddr;
+ success = (*pDebugBreakProcess)(proc);
+ CloseHandle(proc);
+ }
+ }
+ FreeLibrary(hmod);
+ hmod = NULL;
+
+ if (success) {
+ return 0; // 0 == OK; if not, try old-school way
+ }
+ }
+
+ int rc = 0;
+ consoleHWND = NULL;
+
+ if (isTraceEnabled(CDT_TRACE_SPAWNER)) {
+ cdtTrace(L"Try to interrupt process %i\n", pid);
+ }
+ // Find console
+ EnumWindows(find_child_console, (LPARAM)pid);
+
+ if (consoleHWND) { // Yes, we found out it
+ // We are going to switch focus to console,
+ // send Ctrl-C and then restore focus
+ BYTE control_scan_code = (BYTE)MapVirtualKey(VK_CONTROL, 0);
+ /* Fake Ctrl-C for SIGINT, and Ctrl-Break for SIGQUIT. */
+ BYTE vk_break_code = VK_CANCEL;
+ BYTE break_scan_code = (BYTE)MapVirtualKey(vk_break_code, 0);
+ HWND foreground_window;
+
+ foreground_window = GetForegroundWindow();
+ if (foreground_window) {
+ /* NT 5.0, and apparently also Windows 98, will not allow
+ * a Window to be set to foreground directly without the
+ * user's involvement. The workaround is to attach
+ * ourselves to the thread that owns the foreground
+ * window, since that is the only thread that can set the
+ * foreground window.
+ */
+ DWORD foreground_thread, child_thread;
+ foreground_thread = GetWindowThreadProcessId(foreground_window, NULL);
+ if (foreground_thread == GetCurrentThreadId() ||
+ !AttachThreadInput(GetCurrentThreadId(), foreground_thread, TRUE)) {
+ foreground_thread = 0;
+ }
+
+ child_thread = GetWindowThreadProcessId(consoleHWND, NULL);
+ if (child_thread == GetCurrentThreadId() || !AttachThreadInput(GetCurrentThreadId(), child_thread, TRUE)) {
+ child_thread = 0;
+ }
+
+ /* Set the foreground window to the child. */
+ if (SetForegroundWindow(consoleHWND)) {
+ if (0 != break_scan_code) {
+ /* Generate keystrokes as if user had typed Ctrl-Break */
+ keybd_event(VK_CONTROL, control_scan_code, 0, 0);
+ keybd_event(vk_break_code, break_scan_code, KEYEVENTF_EXTENDEDKEY, 0);
+ keybd_event(vk_break_code, break_scan_code, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
+ keybd_event(VK_CONTROL, control_scan_code, KEYEVENTF_KEYUP, 0);
+ }
+
+ /* Sleep for a bit to give time for respond */
+ Sleep(100);
+
+ SetForegroundWindow(foreground_window);
+ }
+ /* Detach from the foreground and child threads now that the foreground switching is over. */
+ if (foreground_thread) {
+ AttachThreadInput(GetCurrentThreadId(), foreground_thread, FALSE);
+ }
+ if (child_thread) {
+ AttachThreadInput(GetCurrentThreadId(), child_thread, FALSE);
+ }
+ if (isTraceEnabled(CDT_TRACE_SPAWNER)) {
+ cdtTrace(L"Sent Ctrl-C & Ctrl-Break to process %i\n", pid);
+ }
+ }
+ } else if (isTraceEnabled(CDT_TRACE_SPAWNER)) {
+ cdtTrace(L"Cannot find console for process %i\n", pid);
+ }
+
+ return rc;
+}
diff --git a/core/org.eclipse.cdt.core.native/native_src/win/spawner.c b/core/org.eclipse.cdt.core.native/native_src/win/spawner.c
new file mode 100644
index 00000000000..adf5ccc3e24
--- /dev/null
+++ b/core/org.eclipse.cdt.core.native/native_src/win/spawner.c
@@ -0,0 +1,53 @@
+/*******************************************************************************
+ * Copyright (c) 2002, 2007 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - initial API and implementation
+ *
+ * spawner.c
+ *
+ * This is a part of JNI implementation of spawner
+ *******************************************************************************/
+
+#include <tchar.h>
+#include <windows.h>
+
+#include "org_eclipse_cdt_utils_spawner_Spawner.h"
+
+CRITICAL_SECTION cs;
+
+wchar_t path[MAX_PATH + 1] = {_T('\0')}; // Directory where spawner.dll is located
+
+#if __cplusplus
+extern "C"
+#endif
+ BOOL APIENTRY
+ DllMain(HINSTANCE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) {
+ switch (ul_reason_for_call) {
+ case DLL_PROCESS_ATTACH: {
+ wchar_t *p;
+ InitializeCriticalSection(&cs);
+ GetModuleFileNameW(hModule, path, MAX_PATH);
+ p = wcsrchr(path, _T('\\'));
+ if (p) {
+ *(p + 1) = _T('\0');
+ } else {
+ wcscat(path, L"\\");
+ }
+ } break;
+ case DLL_THREAD_ATTACH:
+ case DLL_THREAD_DETACH:
+ break;
+ case DLL_PROCESS_DETACH:
+ DeleteCriticalSection(&cs);
+ break;
+ }
+ return TRUE;
+}
diff --git a/core/org.eclipse.cdt.core.native/native_src/win/starter.c b/core/org.eclipse.cdt.core.native/native_src/win/starter.c
new file mode 100644
index 00000000000..690c21246b9
--- /dev/null
+++ b/core/org.eclipse.cdt.core.native/native_src/win/starter.c
@@ -0,0 +1,491 @@
+/*******************************************************************************
+ * Copyright (c) 2002, 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - initial API and implementation
+ * Wind River Systems, Inc.
+ *
+ * starter.cpp
+ *
+ * This is a small utility for windows spawner
+ *******************************************************************************/
+
+#define STRICT
+#define _WIN32_WINNT 0x0500
+#include <windows.h>
+#include <process.h>
+#include <tchar.h>
+#include <stdio.h>
+#include <psapi.h>
+#include <stdbool.h>
+
+#include "util.h"
+
+#define MAX_CMD_LINE_LENGTH (2049)
+#define PIPE_NAME_LENGTH 100
+
+int copyTo(wchar_t *target, const wchar_t *source, int cpyLength, int availSpace);
+void DisplayErrorMessage();
+
+// BOOL KillProcessEx(DWORD dwProcessId); // Handle of the process
+
+///////////////////////////////////////////////////////////////////////////////
+BOOL WINAPI HandlerRoutine(DWORD dwCtrlType) { // control signal type
+ BOOL ret = TRUE;
+ switch (dwCtrlType) {
+ case CTRL_C_EVENT:
+ break;
+ case CTRL_BREAK_EVENT:
+ break;
+ case CTRL_CLOSE_EVENT:
+ ret = FALSE;
+ break;
+ case CTRL_LOGOFF_EVENT:
+ ret = FALSE;
+ break;
+ case CTRL_SHUTDOWN_EVENT:
+ ret = FALSE;
+ break;
+ default:
+ break;
+ }
+ return ret;
+}
+
+// The default here means we haven't checked yet
+// i.e. cygwin is true but the bin dir hasn't been captured
+wchar_t *cygwinBin = NULL;
+bool _isCygwin = true;
+
+bool isCygwin(HANDLE process) {
+ // Have we checked before?
+ if (cygwinBin || !_isCygwin) {
+ return _isCygwin;
+ }
+
+ // See if this process loaded cygwin, need a different SIGINT for them
+ HMODULE mods[1024];
+ DWORD needed;
+ if (EnumProcessModules(process, mods, sizeof(mods), &needed)) {
+ int i;
+ needed /= sizeof(HMODULE);
+ for (i = 0; i < needed; ++i) {
+ wchar_t modName[MAX_PATH];
+ if (GetModuleFileNameEx(process, mods[i], modName, MAX_PATH)) {
+ wchar_t *p = wcsrchr(modName, L'\\');
+ if (p) {
+ *p = 0; // Null terminate there for future reference
+ if (!wcscmp(++p, L"cygwin1.dll")) {
+ _isCygwin = true;
+ // Store away the bind dir
+ cygwinBin = wcsdup(modName);
+ return _isCygwin;
+ }
+ }
+ }
+ }
+ }
+
+ _isCygwin = false;
+ return _isCygwin;
+}
+
+bool runCygwinCommand(wchar_t *command) {
+ wchar_t cygcmd[1024];
+ swprintf(cygcmd, sizeof(cygcmd) / sizeof(cygcmd[0]), L"%s\\%s", cygwinBin, command);
+
+ STARTUPINFO si;
+ ZeroMemory(&si, sizeof(si));
+ si.cb = sizeof(si);
+ PROCESS_INFORMATION pi;
+ ZeroMemory(&pi, sizeof(pi));
+ if (CreateProcess(NULL, cygcmd, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
+ WaitForSingleObject(pi.hProcess, INFINITE);
+ CloseHandle(pi.hThread);
+ CloseHandle(pi.hProcess);
+ return true;
+ } else if (CreateProcess(NULL, command, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
+ WaitForSingleObject(pi.hProcess, INFINITE);
+ CloseHandle(pi.hThread);
+ CloseHandle(pi.hProcess);
+ return true;
+ }
+ return false;
+}
+
+static bool openNamedPipeAsStdHandle(HANDLE *handle, DWORD stdHandle, int parentPid, int counter,
+ SECURITY_ATTRIBUTES *sa) {
+ wchar_t pipeName[PIPE_NAME_LENGTH];
+ DWORD dwDesiredAccess;
+ DWORD dwShareMode;
+
+ switch (stdHandle) {
+ case STD_INPUT_HANDLE:
+ BUILD_PIPE_NAME(pipeName, L"stdin", parentPid, counter);
+ dwDesiredAccess = GENERIC_READ;
+ dwShareMode = FILE_SHARE_READ;
+ break;
+ case STD_OUTPUT_HANDLE:
+ BUILD_PIPE_NAME(pipeName, L"stdout", parentPid, counter);
+ dwDesiredAccess = GENERIC_WRITE;
+ dwShareMode = FILE_SHARE_WRITE;
+ break;
+ case STD_ERROR_HANDLE:
+ BUILD_PIPE_NAME(pipeName, L"stderr", parentPid, counter);
+ dwDesiredAccess = GENERIC_WRITE;
+ dwShareMode = FILE_SHARE_WRITE;
+ break;
+ default:
+ if (isTraceEnabled(CDT_TRACE_SPAWNER)) {
+ cdtTrace(L"Invalid STD handle given %i", stdHandle);
+ }
+ return false;
+ }
+
+ *handle = CreateFileW(pipeName, dwDesiredAccess, dwShareMode, NULL, OPEN_EXISTING, 0, sa);
+ if (INVALID_HANDLE_VALUE == *handle) {
+ if (isTraceEnabled(CDT_TRACE_SPAWNER)) {
+ cdtTrace(L"Failed to open pipe: %s -> %p\n", pipeName, handle);
+ }
+ return false;
+ }
+
+ SetHandleInformation(*handle, HANDLE_FLAG_INHERIT, TRUE);
+
+ if (!SetStdHandle(stdHandle, *handle)) {
+ if (isTraceEnabled(CDT_TRACE_SPAWNER)) {
+ cdtTrace(L"Failed to reassign standard stream to pipe %s: %i\n", pipeName, GetLastError());
+ }
+ return false;
+ }
+
+ if (isTraceEnabled(CDT_TRACE_SPAWNER)) {
+ cdtTrace(L"Successfully assigned pipe %s -> %p\n", pipeName, *handle);
+ }
+
+ return true;
+}
+
+bool createCommandLine(int argc, wchar_t **argv, wchar_t **cmdLine) {
+ int size = MAX_CMD_LINE_LENGTH;
+ wchar_t *buffer = (wchar_t *)malloc(size * sizeof(wchar_t));
+
+ if (!buffer) {
+ // malloc failed
+ cdtTrace(L"Not enough memory to build cmd line!\n");
+ return false;
+ }
+
+ int nPos = 0;
+ for (int i = 0; i < argc; ++i) {
+ wchar_t *str = *(argv + i);
+ int len = wcslen(str);
+ if (str) {
+ int required = nPos + len + 2; // 2 => space + \0
+ if (required > 32 * 1024) {
+ free(buffer);
+ if (isTraceEnabled(CDT_TRACE_SPAWNER)) {
+ cdtTrace(L"Command line too long!\n");
+ }
+ return false;
+ }
+
+ while (1) {
+ // Ensure enough space in buffer
+ if (required > size) {
+ size *= 2;
+ if (size < required) {
+ size = required;
+ }
+
+ wchar_t *tmp = (wchar_t *)realloc(buffer, size * sizeof(wchar_t));
+ if (tmp) {
+ // realloc successful
+ buffer = tmp;
+ } else {
+ // Failed to realloc memory
+ free(buffer);
+ if (isTraceEnabled(CDT_TRACE_SPAWNER)) {
+ cdtTrace(L"Not enough memory to build cmd line!\n");
+ }
+ return false;
+ }
+ }
+
+ int nCpyLen = copyTo(buffer + nPos, (const wchar_t *)str, len, size - nPos);
+ if (nCpyLen < 0) { // Buffer too small
+ // Do a real count of number of chars required
+ required = nPos + copyTo(NULL, (const wchar_t *)str, len, INT_MAX) + 2; // 2 => space + \0
+ continue;
+ }
+
+ // Buffer was big enough.
+ nPos += nCpyLen;
+ break;
+ }
+
+ buffer[nPos++] = _T(' ');
+ buffer[nPos] = _T('\0');
+ } else {
+ free(buffer);
+ if (isTraceEnabled(CDT_TRACE_SPAWNER)) {
+ cdtTrace(L"Invalid argument!\n");
+ }
+ return false;
+ }
+ }
+
+ *cmdLine = buffer;
+ return true;
+}
+
+void raiseSignal(HANDLE h, int pid, const wchar_t *signal) {
+ if (isCygwin(h)) {
+ // Need to issue a kill command
+ wchar_t kill[1024];
+ swprintf(kill, sizeof(kill) / sizeof(kill[0]), L"kill -%s %d", signal, pid);
+ if (!runCygwinCommand(kill)) {
+ // fall back to console event
+ GenerateConsoleCtrlEvent(CTRL_C_EVENT, 0);
+ }
+ } else {
+ GenerateConsoleCtrlEvent(CTRL_C_EVENT, 0);
+ }
+}
+
+int main() {
+
+ int argc;
+ wchar_t **argv = CommandLineToArgvW(GetCommandLine(), &argc);
+
+ // Make sure that we've been passed the right number of arguments
+ if (argc < 9) {
+ wprintf(
+ L"Usage: %s (parent pid) (counter) (four inheritable event handles) (trace enable) (CommandLineToSpawn)\n",
+ argv[0]);
+ return 0;
+ }
+
+ // Activate tracing...
+ if (wcstol(argv[8], NULL, 2)) {
+ for (int i = 0; i < sizeof(ALL_TRACE_KINDS) / sizeof(ALL_TRACE_KINDS[0]); i++) {
+ enableTraceFor(ALL_TRACE_KINDS[i]);
+ }
+ }
+
+ STARTUPINFOW si = {sizeof(si)};
+ PROCESS_INFORMATION pi = {0};
+ DWORD dwExitCode = 0;
+
+ BOOL exitProc = FALSE;
+ HANDLE waitEvent = OpenEventW(EVENT_ALL_ACCESS, TRUE, argv[4]);
+ HANDLE h[5];
+ h[0] = OpenEventW(EVENT_ALL_ACCESS, TRUE, argv[3]); // simulated SIGINT (CTRL-C or Cygwin 'kill -SIGINT')
+ // h[1] we reserve for the process handle
+ h[2] = OpenEventW(EVENT_ALL_ACCESS, TRUE, argv[5]); // simulated SIGTERM
+ h[3] = OpenEventW(EVENT_ALL_ACCESS, TRUE, argv[6]); // simulated SIGKILL
+ h[4] = OpenEventW(EVENT_ALL_ACCESS, TRUE, argv[7]); // CTRL-C, in all cases
+
+ SetConsoleCtrlHandler(HandlerRoutine, TRUE);
+
+ int parentPid = wcstol(argv[1], NULL, 10);
+ int nCounter = wcstol(argv[2], NULL, 10);
+
+ HANDLE stdHandles[] = {
+ INVALID_HANDLE_VALUE, // STDIN
+ INVALID_HANDLE_VALUE, // STDOUT
+ INVALID_HANDLE_VALUE // STDERR
+ };
+
+ SECURITY_ATTRIBUTES sa;
+ sa.nLength = sizeof(SECURITY_ATTRIBUTES);
+ sa.bInheritHandle = TRUE;
+ sa.lpSecurityDescriptor = NULL;
+
+ if (!openNamedPipeAsStdHandle(&stdHandles[0], STD_INPUT_HANDLE, parentPid, nCounter, &sa) ||
+ !openNamedPipeAsStdHandle(&stdHandles[1], STD_OUTPUT_HANDLE, parentPid, nCounter, &sa) ||
+ !openNamedPipeAsStdHandle(&stdHandles[2], STD_ERROR_HANDLE, parentPid, nCounter, &sa)) {
+ CLOSE_HANDLES(stdHandles);
+ return -1;
+ }
+
+ if (isTraceEnabled(CDT_TRACE_SPAWNER_DETAILS)) {
+ wchar_t *lpvEnv = GetEnvironmentStringsW();
+
+ if (lpvEnv) {
+ // Variable strings are separated by NULL byte, and the block is
+ // terminated by a NULL byte.
+
+ cdtTrace(L"Starter: Environment\n");
+ for (wchar_t *lpszVariable = lpvEnv; *lpszVariable; lpszVariable += wcslen(lpszVariable) + 1) {
+ cdtTrace(L"%s\n", lpszVariable);
+ }
+
+ FreeEnvironmentStringsW(lpvEnv);
+ } else {
+ // If the returned pointer is NULL, exit.
+ cdtTrace(L"Cannot Read Environment\n");
+ }
+ }
+
+ // Create job object
+ HANDLE hJob = CreateJobObject(NULL, NULL);
+ if (hJob) {
+ // Configure job to
+ // - terminate all associated processes when the last handle to it is closed
+ // - allow child processes to break away from the job.
+ JOBOBJECT_EXTENDED_LIMIT_INFORMATION jobInfo;
+ ZeroMemory(&jobInfo, sizeof(jobInfo));
+ jobInfo.BasicLimitInformation.LimitFlags = JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE | JOB_OBJECT_LIMIT_BREAKAWAY_OK;
+ if (!SetInformationJobObject(hJob, JobObjectExtendedLimitInformation, &jobInfo, sizeof(jobInfo))) {
+ if (isTraceEnabled(CDT_TRACE_SPAWNER)) {
+ cdtTrace(L"Cannot set job information\n");
+ DisplayErrorMessage();
+ }
+ }
+ } else if (isTraceEnabled(CDT_TRACE_SPAWNER)) {
+ cdtTrace(L"Cannot create job object\n");
+ DisplayErrorMessage();
+ }
+
+ // Construct the full command line
+ wchar_t *cmdLine = NULL;
+ if (!createCommandLine(argc - 9, &argv[9], &cmdLine)) {
+ return 0;
+ }
+
+ if (isTraceEnabled(CDT_TRACE_SPAWNER)) {
+ cdtTrace(L"Starting: %s\n", cmdLine);
+ }
+
+ // Spawn the other processes as part of this Process Group
+ // If this process is already part of a job, the flag CREATE_BREAKAWAY_FROM_JOB
+ // makes the child process detach from the job, such that we can assign it
+ // to our own job object.
+ BOOL f = CreateProcessW(NULL, cmdLine, NULL, NULL, TRUE, CREATE_BREAKAWAY_FROM_JOB, NULL, NULL, &si, &pi);
+ // If breaking away from job is not permitted, retry without breakaway flag
+ if (!f) {
+ f = CreateProcessW(NULL, cmdLine, NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi);
+ }
+
+ // We don't need them any more
+ CLOSE_HANDLES(stdHandles);
+
+ if (f) {
+ free(cmdLine);
+ cmdLine = NULL;
+
+ if (isTraceEnabled(CDT_TRACE_SPAWNER)) {
+ cdtTrace(L"Process %i started\n", pi.dwProcessId);
+ }
+ SetEvent(waitEvent); // Means that process has been spawned
+ CloseHandle(pi.hThread);
+ h[1] = pi.hProcess;
+
+ if (hJob) {
+ if (!AssignProcessToJobObject(hJob, pi.hProcess)) {
+ if (isTraceEnabled(CDT_TRACE_SPAWNER)) {
+ cdtTrace(L"Cannot assign process %i to a job\n", pi.dwProcessId);
+ DisplayErrorMessage();
+ }
+ }
+ }
+
+#define SIGINT_EVENT (WAIT_OBJECT_0 + 0)
+#define EXIT_EVENT (WAIT_OBJECT_0 + 1)
+#define SIGTERM_EVENT (WAIT_OBJECT_0 + 2)
+#define SIGKILL_EVENT (WAIT_OBJECT_0 + 3)
+#define CTRLC_EVENT (WAIT_OBJECT_0 + 4)
+ while (!exitProc) {
+ // Wait for the spawned-process to die or for the event
+ // indicating that the processes should be forcibly killed.
+ DWORD event = WaitForMultipleObjects(5, h, FALSE, INFINITE);
+ switch (event) {
+ case SIGINT_EVENT:
+ case CTRLC_EVENT:
+ if (isTraceEnabled(CDT_TRACE_SPAWNER)) {
+ cdtTrace(L"starter (PID %i) received CTRL-C event\n", GetCurrentProcessId());
+ }
+ if (event == SIGINT_EVENT) {
+ raiseSignal(h[1], pi.dwProcessId, L"SIGINT");
+ } else {
+ GenerateConsoleCtrlEvent(CTRL_C_EVENT, 0);
+ }
+
+ SetEvent(waitEvent);
+ break;
+
+ case EXIT_EVENT: // App terminated normally
+ // Make it's exit code our exit code
+ if (isTraceEnabled(CDT_TRACE_SPAWNER)) {
+ cdtTrace(L"starter: launched process has been terminated(PID %i)\n", pi.dwProcessId);
+ }
+ GetExitCodeProcess(pi.hProcess, &dwExitCode);
+ exitProc = TRUE;
+ break;
+
+ case SIGTERM_EVENT:
+ if (isTraceEnabled(CDT_TRACE_SPAWNER)) {
+ cdtTrace(L"starter received TERM event (PID %i)\n", GetCurrentProcessId());
+ }
+
+ raiseSignal(h[1], pi.dwProcessId, L"TERM");
+ SetEvent(waitEvent);
+
+ // Note that we keep trucking until the child process terminates (case EXIT_EVENT)
+ break;
+
+ case SIGKILL_EVENT:
+ if (isTraceEnabled(CDT_TRACE_SPAWNER)) {
+ cdtTrace(L"starter received KILL event (PID %i)\n", GetCurrentProcessId());
+ }
+
+ raiseSignal(h[1], pi.dwProcessId, L"KILL");
+ SetEvent(waitEvent);
+
+ if (hJob && !TerminateJobObject(hJob, (DWORD)-1)) {
+ if (isTraceEnabled(CDT_TRACE_SPAWNER)) {
+ cdtTrace(L"Cannot terminate job\n");
+ DisplayErrorMessage();
+ }
+ }
+
+ // Note that we keep trucking until the child process terminates (case EXIT_EVENT)
+ break;
+
+ default:
+ // Unexpected code
+ if (isTraceEnabled(CDT_TRACE_SPAWNER)) {
+ DisplayErrorMessage();
+ }
+ exitProc = TRUE;
+ break;
+ }
+ }
+ } else if (isTraceEnabled(CDT_TRACE_SPAWNER)) {
+ cdtTrace(L"Cannot start: %s\n", cmdLine);
+ free(cmdLine);
+
+ DisplayErrorMessage();
+ }
+
+ CloseHandle(waitEvent);
+ CLOSE_HANDLES(h);
+
+ return dwExitCode;
+}
+
+void DisplayErrorMessage() {
+ wchar_t *lpMsgBuf = formatWinErrorCode(GetLastError());
+ OutputDebugStringW(lpMsgBuf);
+ // Free the buffer.
+ free(lpMsgBuf);
+}
+//////////////////////////////// End of File //////////////////////////////////
diff --git a/core/org.eclipse.cdt.core.native/native_src/win/util.c b/core/org.eclipse.cdt.core.native/native_src/win/util.c
new file mode 100644
index 00000000000..13041c39be6
--- /dev/null
+++ b/core/org.eclipse.cdt.core.native/native_src/win/util.c
@@ -0,0 +1,189 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Torbjörn Svensson and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Torbjörn Svensson - initial API and implementation
+ *******************************************************************************/
+
+#include "util.h"
+
+#include <stdio.h>
+#include <tchar.h>
+
+static bool spawner = false;
+static bool spawnerDetails = false;
+static bool spawnerStarter = false;
+static bool readReport = false;
+
+void enableTraceFor(const TraceKind_t traceKind) {
+ switch (traceKind) {
+ case CDT_TRACE_SPAWNER:
+ spawner = true;
+ break;
+ case CDT_TRACE_SPAWNER_DETAILS:
+ spawnerDetails = true;
+ break;
+ case CDT_TRACE_SPAWNER_STARTER:
+ spawnerStarter = true;
+ break;
+ case CDT_TRACE_SPAWNER_READ_REPORT:
+ readReport = true;
+ break;
+ default:
+ cdtTrace(L"%S: Invalid trace kind supplied: %d\n", __func__, traceKind);
+ break;
+ }
+}
+
+bool isTraceEnabled(const TraceKind_t traceKind) {
+ switch (traceKind) {
+ case CDT_TRACE_SPAWNER:
+ return spawner;
+ case CDT_TRACE_SPAWNER_DETAILS:
+ return spawnerDetails;
+ case CDT_TRACE_SPAWNER_STARTER:
+ return spawnerStarter;
+ case CDT_TRACE_SPAWNER_READ_REPORT:
+ return readReport;
+ default:
+ cdtTrace(L"%S: Invalid trace kind supplied: %d\n", __func__, traceKind);
+ return false;
+ }
+}
+
+void cdtTrace(const wchar_t *fmt, ...) {
+ va_list ap;
+ wchar_t *buffer = NULL;
+ int size = 0;
+
+ va_start(ap, fmt);
+
+ do {
+ // Free previous buffer
+ free(buffer);
+
+ // Allocate a slightly larger buffer
+ size += 256;
+ buffer = (wchar_t *)malloc(size * sizeof(wchar_t));
+
+ if (!buffer) {
+ // malloc failed
+ OutputDebugStringW(L"Failed to allocate buffer to format message into.\n");
+ va_end(ap);
+ return;
+ }
+ } while (-1 == vswprintf(buffer, size, fmt, ap) && errno == ERANGE);
+ va_end(ap);
+
+ // Send the output
+ OutputDebugStringW(buffer);
+
+ // Clean up
+ free(buffer);
+}
+
+int copyTo(wchar_t *target, const wchar_t *source, int cpyLength, int availSpace) {
+ bool bSlash = false;
+ int i = 0, j = 0;
+
+ enum { QUOTATION_DO, QUOTATION_DONE, QUOTATION_NONE } nQuotationMode = QUOTATION_DO;
+
+ if (availSpace <= cpyLength) { // = to reserve space for final '\0'
+ return -1;
+ }
+
+ if ((_T('\"') == *source) && (_T('\"') == *(source + cpyLength - 1))) {
+ nQuotationMode = QUOTATION_DONE;
+ } else if (wcschr(source, _T(' '))) {
+ // Needs to be quoted
+ nQuotationMode = QUOTATION_DO;
+ if (target) {
+ *target = _T('\"');
+ }
+ ++j;
+ } else {
+ // No reason to quote term because it doesn't have embedded spaces
+ nQuotationMode = QUOTATION_NONE;
+ }
+
+ for (; i < cpyLength; ++i, ++j) {
+ if (source[i] == _T('\\')) {
+ bSlash = true;
+ } else {
+ // Don't escape embracing quotation marks
+ if ((source[i] == _T('\"')) &&
+ !((nQuotationMode == QUOTATION_DONE) && ((i == 0) || (i == (cpyLength - 1))))) {
+ if (!bSlash) { // If still not escaped
+ if (j == availSpace) {
+ return -1;
+ }
+ target[j] = _T('\\');
+ ++j;
+ }
+ }
+ bSlash = false;
+ }
+
+ if (j == availSpace) {
+ return -1;
+ }
+ if (target) {
+ target[j] = source[i];
+ }
+ }
+
+ if (nQuotationMode == QUOTATION_DO) {
+ if (j == availSpace) {
+ return -1;
+ }
+ if (target) {
+ target[j] = _T('\"');
+ }
+ ++j;
+ }
+
+ return j;
+}
+
+wchar_t *formatWinErrorCode(DWORD messageId) {
+ const wchar_t *NULL_STR = L"(null)";
+ size_t size = 0;
+ wchar_t *msg = NULL;
+
+ DWORD langId[] = {
+ MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), // US English
+ MAKELANGID(LANG_ENGLISH, SUBLANG_DEFAULT), // Any English
+ MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // User default language
+ 0 // Let FormatMessage lookup the right language
+ };
+ wchar_t *winBuf = NULL;
+
+ /* Format the message */
+ for (size_t i = 0; i < sizeof(langId) / sizeof(langId[0]); i++) {
+ if (FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
+ NULL, messageId, langId[i], (wchar_t *)&winBuf, 0, NULL) == 0) {
+ winBuf = NULL;
+ }
+
+ if (winBuf != NULL) {
+ break;
+ }
+ }
+
+ /* Prefix the message */
+ size = 100 + wcslen(winBuf ? winBuf : NULL_STR);
+ msg = (wchar_t *)calloc(size + 1, sizeof(wchar_t));
+ if (msg) {
+ snwprintf(msg, size, L"Code 0x%lx: %s", (unsigned long)messageId, (winBuf ? winBuf : NULL_STR));
+ }
+
+ LocalFree(winBuf);
+ return msg;
+}
diff --git a/core/org.eclipse.cdt.core.native/native_src/win/util.h b/core/org.eclipse.cdt.core.native/native_src/win/util.h
new file mode 100644
index 00000000000..1fa1ffd4ffb
--- /dev/null
+++ b/core/org.eclipse.cdt.core.native/native_src/win/util.h
@@ -0,0 +1,54 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Torbjörn Svensson and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Torbjörn Svensson - initial API and implementation
+ *******************************************************************************/
+
+#ifndef UTIL_H
+#define UTIL_H
+
+#include <stdbool.h>
+#include <windows.h>
+
+typedef enum {
+ CDT_TRACE_SPAWNER,
+ CDT_TRACE_SPAWNER_DETAILS,
+ CDT_TRACE_SPAWNER_STARTER,
+ CDT_TRACE_SPAWNER_READ_REPORT
+} TraceKind_t;
+static const TraceKind_t ALL_TRACE_KINDS[] = {CDT_TRACE_SPAWNER, CDT_TRACE_SPAWNER_DETAILS, CDT_TRACE_SPAWNER_STARTER,
+ CDT_TRACE_SPAWNER_READ_REPORT};
+
+void enableTraceFor(const TraceKind_t traceKind);
+bool isTraceEnabled(const TraceKind_t traceKind);
+void cdtTrace(const wchar_t *fmt, ...);
+
+#define BUILD_PIPE_NAME(pipe, name, pid, counter) \
+ do { \
+ swprintf(pipe, sizeof(pipe) / sizeof(pipe[0]), L"\\\\.\\pipe\\%s%08i%010i", name, pid, counter); \
+ } while (0)
+
+#define CLOSE_HANDLES(handles) \
+ do { \
+ for (int i = 0; i < sizeof(handles) / sizeof(handles[0]); i++) { \
+ if (INVALID_HANDLE_VALUE != handles[i]) { \
+ CloseHandle(handles[i]); \
+ handles[i] = INVALID_HANDLE_VALUE; \
+ } \
+ } \
+ } while (0)
+
+int copyTo(wchar_t *target, const wchar_t *source, int cpyLength, int availSpace);
+
+// Returned pointer shall be freed with free().
+wchar_t *formatWinErrorCode(DWORD messageId);
+
+#endif /* UTIL_H */
diff --git a/core/org.eclipse.cdt.core.native/plugin.properties b/core/org.eclipse.cdt.core.native/plugin.properties
index 40d7fc25cea..b78918fe964 100755..100644
--- a/core/org.eclipse.cdt.core.native/plugin.properties
+++ b/core/org.eclipse.cdt.core.native/plugin.properties
@@ -16,9 +16,12 @@
pluginName=C/C++ Development Tools Core Native Utilities
providerName=Eclipse CDT
+WindowsRegistry.name=Windows Registry
+
fragmentName.linux = C/C++ Development Tools Core Native Utilities for Linux
fragmentName.linux.ppc64le = C/C++ Development Tools Core Native Utilities for Linux (ppc64le)
fragmentName.linux.x86_64 = C/C++ Development Tools Core Native Utilities for Linux (x86_64)
+fragmentName.linux.aarch64 = C/C++ Development Tools Core Native Utilities for Linux (aarch64)
fragmentName.win32 = C/C++ Development Tools Core Native Utilities for Windows
fragmentName.win32.x86_64 = C/C++ Development Tools Core Native Utilities for Windows (x86_64)
fragmentName.macosx = C/C++ Development Tools Core Native Utilities for MacOS X
diff --git a/core/org.eclipse.cdt.core.native/plugin.xml b/core/org.eclipse.cdt.core.native/plugin.xml
new file mode 100644
index 00000000000..174452ec9f4
--- /dev/null
+++ b/core/org.eclipse.cdt.core.native/plugin.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+<plugin>
+ <extension-point id="WindowsRegistry" name="%WindowsRegistry.name" schema="schema/WindowsRegistry.exsd"/>
+</plugin>
diff --git a/core/org.eclipse.cdt.core.native/pom.xml b/core/org.eclipse.cdt.core.native/pom.xml
new file mode 100644
index 00000000000..e682bb34f5d
--- /dev/null
+++ b/core/org.eclipse.cdt.core.native/pom.xml
@@ -0,0 +1,163 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2014, 2021 Red Hat, Inc. and others.
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+
+ Contributors:
+ Mat Booth (Red Hat) - initial implementation
+-->
+<project
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+ xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.cdt</groupId>
+ <artifactId>cdt-parent</artifactId>
+ <version>10.7.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent>
+
+ <version>6.2.200-SNAPSHOT</version>
+ <artifactId>org.eclipse.cdt.core.native</artifactId>
+ <packaging>eclipse-plugin</packaging>
+
+ <profiles>
+ <profile>
+ <id>build-native.all</id>
+ <activation>
+ <property>
+ <name>native</name>
+ <value>all</value>
+ </property>
+ </activation>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-antrun-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>natives</id>
+ <phase>process-resources</phase>
+ <configuration>
+ <target>
+ <exec executable="make" newenvironment="false" failOnError="true" dir="./native_src">
+ <arg value="rebuild" />
+ </exec>
+ </target>
+ </configuration>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ <profile>
+ <id>build-native.docker</id>
+ <activation>
+ <property>
+ <name>native</name>
+ <value>docker</value>
+ </property>
+ </activation>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-antrun-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>natives</id>
+ <phase>process-resources</phase>
+ <configuration>
+ <target>
+ <exec executable="docker" newenvironment="false" failOnError="true">
+ <!-- docker run -\-rm -t -v $(git rev-parse -\-show-toplevel):/work -w /work/$(git rev-parse -\-show-prefix) quay.io/eclipse-cdt/cdt-infra-eclipse-full:latest make -C native_src rebuild -->
+ <arg value="run" />
+ <arg value="--rm" />
+ <arg value="-t" />
+ <arg value="-v" />
+ <arg value="${project.basedir}/../..:/work" />
+ <arg value="-w" />
+ <arg value="/work/core/org.eclipse.cdt.core.native" />
+ <arg value="quay.io/eclipse-cdt/cdt-infra-eclipse-full:latest" />
+ <arg value="make" />
+ <arg value="-C" />
+ <arg value="native_src" />
+ <arg value="rebuild" />
+ </exec>
+ </target>
+ </configuration>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ <profile>
+ <id>jniheaders</id>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>3.8.1</version>
+ <executions>
+ <execution>
+ <id>headers</id>
+ <phase>process-resources</phase>
+ <configuration>
+ <compilerArgs>
+ <arg>-h</arg>
+ <arg>${project.basedir}/native_src/include</arg>
+ </compilerArgs>
+ <source>11</source>
+ <target>11</target>
+ <encoding>UTF-8</encoding>
+ </configuration>
+ <goals>
+ <goal>compile</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ <profile>
+ <id>production</id>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-antrun-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>natives</id>
+ <phase>process-resources</phase>
+ <configuration>
+ <target>
+ <exec executable="make" newenvironment="false" failOnError="true" dir="./native_src">
+ <arg value="production" />
+ </exec>
+ </target>
+ </configuration>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+</project>
diff --git a/core/org.eclipse.cdt.core.native/schema/WindowsRegistry.exsd b/core/org.eclipse.cdt.core.native/schema/WindowsRegistry.exsd
new file mode 100644
index 00000000000..eabfd78bfe0
--- /dev/null
+++ b/core/org.eclipse.cdt.core.native/schema/WindowsRegistry.exsd
@@ -0,0 +1,66 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.cdt.core" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+ <appInfo>
+ <meta.schema plugin="org.eclipse.cdt.core.native" id="WindowsRegistry" name="Windows Registry Query Exentsion"/>
+ </appInfo>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ <element name="extension">
+ <annotation>
+ <appInfo>
+ <meta.element />
+ </appInfo>
+ </annotation>
+ <complexType>
+ <sequence>
+ <element ref="windowsRegistry"/>
+ </sequence>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+ <element name="windowsRegistry">
+ <complexType>
+ <attribute name="class" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute kind="java" basedOn="org.eclipse.cdt.utils.WindowsRegistry"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ <attribute name="platform" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+</schema>
diff --git a/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/internal/core/natives/CNativePlugin.java b/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/internal/core/natives/CNativePlugin.java
index 976fa95387e..db2a72763b3 100644
--- a/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/internal/core/natives/CNativePlugin.java
+++ b/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/internal/core/natives/CNativePlugin.java
@@ -14,7 +14,13 @@
*******************************************************************************/
package org.eclipse.cdt.internal.core.natives;
+import org.eclipse.cdt.utils.WindowsRegistry;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtension;
+import org.eclipse.core.runtime.IExtensionPoint;
import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.Plugin;
import org.eclipse.core.runtime.Status;
@@ -92,4 +98,35 @@ public class CNativePlugin extends Plugin {
getDefault().getLog().log(status);
}
+ /**
+ * Get the WindowsRegistry contributed class for the platform.
+ */
+ public WindowsRegistry getWindowsRegistry() throws CoreException {
+ IExtensionPoint extension = Platform.getExtensionRegistry().getExtensionPoint(PLUGIN_ID, "WindowsRegistry"); //$NON-NLS-1$
+ if (extension != null) {
+ IExtension[] extensions = extension.getExtensions();
+ IConfigurationElement defaultContributor = null;
+ for (IExtension extension2 : extensions) {
+ IConfigurationElement[] configElements = extension2.getConfigurationElements();
+ for (IConfigurationElement configElement : configElements) {
+ if (configElement.getName().equals("windowsRegistry")) { //$NON-NLS-1$
+ String platform = configElement.getAttribute("platform"); //$NON-NLS-1$
+ if (platform == null) { // first contributor found with
+ // not platform will be default.
+ if (defaultContributor == null) {
+ defaultContributor = configElement;
+ }
+ } else if (platform.equals(Platform.getOS())) {
+ // found explicit contributor for this platform.
+ return (WindowsRegistry) configElement.createExecutableExtension("class"); //$NON-NLS-1$
+ }
+ }
+ }
+ }
+ if (defaultContributor != null) {
+ return (WindowsRegistry) defaultContributor.createExecutableExtension("class"); //$NON-NLS-1$
+ }
+ }
+ return null;
+ }
}
diff --git a/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/internal/core/natives/Messages.java b/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/internal/core/natives/Messages.java
index 5874288e568..b72519e70cb 100644
--- a/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/internal/core/natives/Messages.java
+++ b/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/internal/core/natives/Messages.java
@@ -16,6 +16,8 @@ package org.eclipse.cdt.internal.core.natives;
import org.eclipse.osgi.util.NLS;
public class Messages extends NLS {
+ public static String PTY_FailedToStartConPTY;
+ public static String PTY_NoClassDefFoundError;
public static String Util_exception_cannotCreatePty;
public static String Util_exception_cannotSetTerminalSize;
public static String Util_error_cannotRun;
diff --git a/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/internal/core/natives/Messages.properties b/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/internal/core/natives/Messages.properties
index 9eb988affc0..8e91c7b37f8 100644
--- a/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/internal/core/natives/Messages.properties
+++ b/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/internal/core/natives/Messages.properties
@@ -13,6 +13,8 @@
# Martin Oberhuber (Wind River) - [303083] Split from CCorePluginResources.properties
###############################################################################
+PTY_FailedToStartConPTY=Failed start a new style ConPTY. This is expected on Windows machines before Windows 10 1904 version and will fall back to WinPTY. Please consider upgrading to a newer version of Windows 10 to take advantage of the new improved console behavior.
+PTY_NoClassDefFoundError=Failed start a new style ConPTY due to NoClassDefFoundError which probably means that the optional dependency on JNA is not available. Consider updating your product to include JNA to enable the ConPTY.
Util_exception_cannotCreatePty=Cannot create pty
Util_exception_closeError=close error
Util_exception_cannotSetTerminalSize=Setting terminal size is not supported
diff --git a/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/WindowsArgumentQuoter.java b/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/WindowsArgumentQuoter.java
new file mode 100644
index 00000000000..fcfda8ed670
--- /dev/null
+++ b/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/WindowsArgumentQuoter.java
@@ -0,0 +1,75 @@
+/*******************************************************************************
+ * Copyright (c) 2021 Kichwa Coders Canada Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.utils;
+
+import java.util.regex.Pattern;
+
+/**
+ * Implementation of proper Windows quoting based on blog post:
+ * https://docs.microsoft.com/en-ca/archive/blogs/twistylittlepassagesallalike/everyone-quotes-command-line-arguments-the-wrong-way
+ *
+ * @noreference This class is not intended to be referenced by clients.
+ */
+public class WindowsArgumentQuoter {
+
+ public static String quoteArgv(String[] cmdarray, boolean force) {
+ StringBuilder quoted = new StringBuilder();
+ for (String arg : cmdarray) {
+ quoteArg(arg, quoted, force);
+ quoted.append(' ');
+ }
+ quoted.deleteCharAt(quoted.length() - 1);
+ return quoted.toString();
+ }
+
+ private static Pattern spaces = Pattern.compile(".*\\s.*"); //$NON-NLS-1$
+
+ private static void quoteArg(String arg, StringBuilder quoted, boolean force) {
+
+ // Unless we're told otherwise, don't quote unless we actually
+ // need to do so --- hopefully avoid problems if programs won't
+ // parse quotes properly
+
+ if (!force && !arg.isEmpty() && !spaces.matcher(arg).matches()) {
+ quoted.append(arg);
+ } else {
+ quoted.append('"');
+ for (int i = 0; i < arg.length(); i++) {
+ int numberBackslashes = 0;
+
+ while (i < arg.length() && arg.charAt(i) == '\\') {
+ i++;
+ numberBackslashes++;
+ }
+
+ if (i == arg.length()) {
+ // Escape all backslashes, but let the terminating
+ // double quotation mark we add below be interpreted
+ // as a metacharacter.
+ quoted.append("\\".repeat(numberBackslashes * 2)); //$NON-NLS-1$
+ break;
+ } else if (arg.charAt(i) == '"') {
+
+ // Escape all backslashes and the following
+ // double quotation mark.
+ quoted.append("\\".repeat(numberBackslashes)); //$NON-NLS-1$
+ quoted.append('"');
+ } else {
+ // Backslashes aren't special here.
+ quoted.append("\\".repeat(numberBackslashes)); //$NON-NLS-1$
+ quoted.append(arg.charAt(i));
+ }
+ }
+ quoted.append('"');
+ }
+ }
+
+}
diff --git a/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/WindowsRegistry.java b/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/WindowsRegistry.java
index 31d31cd6d93..27dbe96fa4c 100644
--- a/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/WindowsRegistry.java
+++ b/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/WindowsRegistry.java
@@ -11,41 +11,42 @@
* Contributors:
* QNX Software Systems - initial API and implementation
*******************************************************************************/
-/**
- *
- */
package org.eclipse.cdt.utils;
+import java.util.Map;
+
+import org.eclipse.cdt.internal.core.natives.CNativePlugin;
+import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.Platform;
/**
* @author DSchaefer
* @noextend This class is not intended to be subclassed by clients.
- * @noinstantiate This class is not intended to be instantiated by clients.
*/
-public class WindowsRegistry {
+public abstract class WindowsRegistry {
- private static boolean failed = false;
private static WindowsRegistry registry;
- private WindowsRegistry() {
+ /**
+ * @since 6.0
+ */
+ protected WindowsRegistry() {
}
public static WindowsRegistry getRegistry() {
- if (registry == null && !failed) {
- if (Platform.getOS().equals(Platform.OS_WIN32)) {
+ if (Platform.getOS().equals(Platform.OS_WIN32)) {
+ if (registry == null) {
try {
- System.loadLibrary("winreg"); //$NON-NLS-1$
- registry = new WindowsRegistry();
- } catch (UnsatisfiedLinkError e) {
- failed = true;
- return null;
+ registry = CNativePlugin.getDefault().getWindowsRegistry();
+ } catch (CoreException e) {
+ CNativePlugin.log("Failed to load WindowsRegistry", e); //$NON-NLS-1$
}
- } else
- failed = true;
+ }
+ return registry;
+ } else {
+ return null;
}
- return registry;
}
/**
@@ -56,7 +57,16 @@ public class WindowsRegistry {
* @param name name of the registry value
* @return registry value or null if not found
*/
- public native String getLocalMachineValue(String subkey, String name);
+ public abstract String getLocalMachineValue(String subkey, String name);
+
+ /**
+ * Given a subkey of HKEY_LOCAL_MACHINE, return the map of valueName =gt; value.
+ * The return value is an empty map on error or when the subkey does not exist.
+ * @param subkey subkey of HKEY_LOCAL_MACHINE
+ * @return valueName =&gt; value map of the entries in subkey
+ * @since 6.1
+ */
+ public abstract Map<String, Object> getLocalMachineValues(String subkey);
/**
* Given a subkey of HKEY_LOCAL_MACHINE, and an index (starting from 0)
@@ -68,7 +78,7 @@ public class WindowsRegistry {
* @param index index to the subkey's array of values, starting from 0.
* @return name of registry value or null if not found
*/
- public native String getLocalMachineValueName(String subkey, int index);
+ public abstract String getLocalMachineValueName(String subkey, int index);
/**
* Given a subkey of HKEY_LOCAL_MACHINE, and an index (starting from 0)
@@ -76,11 +86,11 @@ public class WindowsRegistry {
* The return value is null on any error or when the index is invalid.
* The key name can be used in the above getLocalMachineValueName()
* to retrieve value names.
- * @param subkey subkey of HKEY_CURRENT_USER
+ * @param subkey subkey of HKEY_LOCAL_MACHINE
* @param index index to the subkey's array of values, starting from 0.
* @return name of registry value or null if not found
*/
- public native String getLocalMachineKeyName(String subkey, int index);
+ public abstract String getLocalMachineKeyName(String subkey, int index);
/**
* Gets the registry value for the subkey of HKEY_CURRENT_USER with the
@@ -90,7 +100,16 @@ public class WindowsRegistry {
* @param name name of the registry value
* @return registry value or null if not found
*/
- public native String getCurrentUserValue(String subkey, String name);
+ public abstract String getCurrentUserValue(String subkey, String name);
+
+ /**
+ * Given a subkey of HKEY_CURRENT_USER, return the map of valueName =&gt; value.
+ * The return value is an empty map on error or when the subkey does not exist.
+ * @param subkey subkey of HKEY_CURRENT_USER
+ * @return valueName =&gt; value map of the entries in subkey
+ * @since 6.1
+ */
+ public abstract Map<String, Object> getCurrentUserValues(String subkey);
/**
* Given a subkey of HKEY_CURRENT_USER, and an index (starting from 0)
@@ -102,7 +121,7 @@ public class WindowsRegistry {
* @param index index to the subkey's array of values, starting from 0.
* @return name of registry value or null if not found
*/
- public native String getCurrentUserValueName(String subkey, int index);
+ public abstract String getCurrentUserValueName(String subkey, int index);
/**
* Given a subkey of HKEY_CURRENT_USER, and an index (starting from 0)
@@ -114,6 +133,5 @@ public class WindowsRegistry {
* @param index index to the subkey's array of values, starting from 0.
* @return name of registry value or null if not found
*/
- public native String getCurrentUserKeyName(String subkey, int index);
-
+ public abstract String getCurrentUserKeyName(String subkey, int index);
}
diff --git a/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/pty/ConPTY.java b/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/pty/ConPTY.java
new file mode 100644
index 00000000000..22f2e4c738d
--- /dev/null
+++ b/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/pty/ConPTY.java
@@ -0,0 +1,357 @@
+/*******************************************************************************
+ * Copyright (c) 2021 Kichwa Coders Canada Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.utils.pty;
+
+import static com.sun.jna.platform.win32.WinBase.CREATE_UNICODE_ENVIRONMENT;
+import static com.sun.jna.platform.win32.WinBase.EXTENDED_STARTUPINFO_PRESENT;
+import static com.sun.jna.platform.win32.WinBase.INFINITE;
+import static com.sun.jna.platform.win32.WinBase.STARTF_USESTDHANDLES;
+import static com.sun.jna.platform.win32.WinBase.WAIT_OBJECT_0;
+import static com.sun.jna.platform.win32.WinError.S_OK;
+import static com.sun.jna.platform.win32.WinNT.PROCESS_QUERY_INFORMATION;
+import static com.sun.jna.platform.win32.WinNT.SYNCHRONIZE;
+import static org.eclipse.cdt.utils.pty.ConPTYKernel32.PROC_THREAD_ATTRIBUTE_PSEUDOCONSOLE;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.nio.charset.StandardCharsets;
+
+import org.eclipse.cdt.utils.WindowsArgumentQuoter;
+
+import com.sun.jna.Memory;
+import com.sun.jna.Native;
+import com.sun.jna.Pointer;
+import com.sun.jna.platform.win32.BaseTSD.DWORD_PTR;
+import com.sun.jna.platform.win32.BaseTSD.SIZE_T;
+import com.sun.jna.platform.win32.Kernel32;
+import com.sun.jna.platform.win32.Kernel32Util;
+import com.sun.jna.platform.win32.WinBase;
+import com.sun.jna.platform.win32.WinBase.PROCESS_INFORMATION;
+import com.sun.jna.platform.win32.WinDef;
+import com.sun.jna.platform.win32.WinDef.DWORD;
+import com.sun.jna.platform.win32.WinDef.PVOID;
+import com.sun.jna.platform.win32.WinError;
+import com.sun.jna.platform.win32.WinNT;
+import com.sun.jna.platform.win32.WinNT.HANDLE;
+import com.sun.jna.platform.win32.WinNT.HANDLEByReference;
+import com.sun.jna.platform.win32.WinNT.HRESULT;
+import com.sun.jna.ptr.IntByReference;
+
+/**
+ * A JNA implementation for ConPTY to provide a Windows native (as opposed to WinPTY)
+ * implementation of a PTY.
+ *
+ * This class should be accessed/created via the PTY class which will use ConPTY when it
+ * is available.
+ *
+ * @noreference This class is not intended to be referenced by clients.
+ */
+public class ConPTY {
+
+ private Handles handles = new Handles();
+
+ /**
+ * The handles that need to be closed when the PTY is done
+ */
+ private static class Handles {
+ private HANDLEByReference pseudoConsole;
+ private ConPTYKernel32.STARTUPINFOEX startupInfo;
+ private Memory threadAttributeListMemory;
+ private WinBase.PROCESS_INFORMATION processInformation;
+ private HANDLEByReference pipeOut;
+ private HANDLEByReference pipeIn;
+
+ /** Saved for convenience to make it easier to identify/find the process in process explorer */
+ public int pid;
+ }
+
+ /**
+ * Create a new Windows Pseudo Console (ConPTY) that an application can be attached to.
+ */
+ public ConPTY() throws IOException {
+ handles.pseudoConsole = new HANDLEByReference();
+ handles.pipeIn = new HANDLEByReference();
+ handles.pipeOut = new HANDLEByReference();
+
+ var phPipePTYIn = new WinNT.HANDLEByReference();
+ var phPipePTYOut = new WinNT.HANDLEByReference();
+
+ boolean res;
+ res = ConPTYKernel32.INSTANCE.CreatePipe(phPipePTYIn, handles.pipeOut, null, 0);
+ checkErr(res, "CreatePipe"); //$NON-NLS-1$
+
+ res = ConPTYKernel32.INSTANCE.CreatePipe(handles.pipeIn, phPipePTYOut, null, 0);
+ checkErr(res, "CreatePipe"); //$NON-NLS-1$
+
+ // The console will be resized later with ResizePseudoConsole, start with the old classic size!
+ var consoleSize = new ConPTYKernel32.COORD_ByValue();
+ consoleSize.X = (short) 80;
+ consoleSize.Y = (short) 24;
+
+ var hr = ConPTYKernel32.INSTANCE.CreatePseudoConsole(consoleSize, phPipePTYIn.getValue(),
+ phPipePTYOut.getValue(), new WinDef.DWORD(0), handles.pseudoConsole);
+ checkErr(hr, "CreatePseudoConsole"); //$NON-NLS-1$
+
+ res = ConPTYKernel32.INSTANCE.CloseHandle(phPipePTYOut.getValue());
+ checkErr(res, "CloseHandle"); //$NON-NLS-1$
+ res = ConPTYKernel32.INSTANCE.CloseHandle(phPipePTYIn.getValue());
+ checkErr(res, "CloseHandle"); //$NON-NLS-1$
+ }
+
+ /**
+ * Executes the given process in the PTY
+ *
+ * @param cmdarray Command and arguments that will be quotes using standard Windows rules to make a
+ * command line. See {@link WindowsArgumentQuoter}
+ * @param envp
+ * @param dir
+ * @return the PID
+ * @throws IOException
+ */
+ public int exec(String[] cmdarray, String[] envp, String dir) throws IOException {
+ String quoted = WindowsArgumentQuoter.quoteArgv(cmdarray, false);
+ handles.startupInfo = new ConPTYKernel32.STARTUPINFOEX();
+ handles.threadAttributeListMemory = PrepareStartupInformation(handles.startupInfo, handles.pseudoConsole);
+ handles.processInformation = new PROCESS_INFORMATION();
+
+ var status = ConPTYKernel32.INSTANCE.CreateProcess(null, quoted, null, null, false,
+ new DWORD(CREATE_UNICODE_ENVIRONMENT | EXTENDED_STARTUPINFO_PRESENT), toByteArray(envp), dir,
+ handles.startupInfo, handles.processInformation);
+ checkErr(status, "CreateProcess"); //$NON-NLS-1$
+ return getPID();
+ }
+
+ /**
+ * Convert envp to a byte array, encoding UTF_16LE. Remember to pass CREATE_UNICODE_ENVIRONMENT
+ * to CreateProcess
+ */
+ public static Memory toByteArray(String[] envp) throws IOException {
+ if (envp == null) {
+ return null;
+ }
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ for (String string : envp) {
+ bos.write(string.getBytes(StandardCharsets.UTF_16LE));
+ // Terminate each variable with two zero bytes
+ bos.write(0);
+ bos.write(0);
+ }
+ // Terminate the whole block with two additional zero bytes
+ bos.write(0);
+ bos.write(0);
+ byte[] byteArray = bos.toByteArray();
+ Memory memory = new Memory(byteArray.length);
+ memory.write(0, byteArray, 0, byteArray.length);
+ return memory;
+
+ }
+
+ public int getPID() {
+ handles.pid = handles.processInformation.dwProcessId.intValue();
+ return handles.pid;
+ }
+
+ private static Memory PrepareStartupInformation(ConPTYKernel32.STARTUPINFOEX pStartupInfo, HANDLEByReference phPC)
+ throws IOException {
+ pStartupInfo.StartupInfo.cb = new DWORD(pStartupInfo.size());
+
+ pStartupInfo.StartupInfo.hStdOutput = new HANDLE();
+ pStartupInfo.StartupInfo.hStdError = new HANDLE();
+ pStartupInfo.StartupInfo.hStdInput = new HANDLE();
+ pStartupInfo.StartupInfo.dwFlags = STARTF_USESTDHANDLES;
+
+ boolean res;
+
+ var attrListSize = new ConPTYKernel32.SIZE_TByReference();
+ res = ConPTYKernel32.INSTANCE.InitializeProcThreadAttributeList(Pointer.NULL, new DWORD(1), new DWORD(0),
+ attrListSize);
+ Kernel32.INSTANCE.SetLastError(0);
+ var memory = new Memory(attrListSize.getValue().longValue());
+
+ res = ConPTYKernel32.INSTANCE.InitializeProcThreadAttributeList(memory, new DWORD(1), new DWORD(0),
+ attrListSize);
+ checkErr(res, "InitializeProcThreadAttributeList"); //$NON-NLS-1$
+
+ var dwPROC_THREAD_ATTRIBUTE_PSEUDOCONSOLE = new DWORD_PTR(PROC_THREAD_ATTRIBUTE_PSEUDOCONSOLE);
+
+ res = ConPTYKernel32.INSTANCE.UpdateProcThreadAttribute(memory, new DWORD(0),
+ dwPROC_THREAD_ATTRIBUTE_PSEUDOCONSOLE, new PVOID(phPC.getValue().getPointer()),
+ new SIZE_T(Native.POINTER_SIZE), null, null);
+ checkErr(res, "UpdateProcThreadAttribute"); //$NON-NLS-1$
+
+ pStartupInfo.lpAttributeList = memory.share(0);
+ return memory;
+ }
+
+ /**
+ * Implements the contract of {@link Process#waitFor()}. This is used by {@link PTY#waitFor(org.eclipse.cdt.utils.spawner.Spawner, int)},
+ * but in the Spawner case the PID is passed around unnecessarily. This method therefore waits for the process it created only,
+ * like how Process#waitFor() behaves.
+ *
+ * @see Process#waitFor()
+ * @see PTY#waitFor(org.eclipse.cdt.utils.spawner.Spawner, int)
+ */
+ public int waitFor() {
+ try {
+ int what = 0;
+ HANDLE hProc;
+
+ hProc = Kernel32.INSTANCE.OpenProcess(SYNCHRONIZE | PROCESS_QUERY_INFORMATION, false, getPID());
+ checkErr(hProc, "OpenProcess"); //$NON-NLS-1$
+
+ what = Kernel32.INSTANCE.WaitForSingleObject(hProc, INFINITE);
+
+ IntByReference exit_code = new IntByReference(0);
+ if (what == WAIT_OBJECT_0) {
+ Kernel32.INSTANCE.GetExitCodeProcess(hProc, exit_code);
+ }
+
+ boolean closeHandle = Kernel32.INSTANCE.CloseHandle(hProc);
+ checkErr(closeHandle, "CloseHandle"); //$NON-NLS-1$
+ return exit_code.getValue();
+ } catch (IOException e) {
+ // Returning -1 is the equivalent of what was done
+ // in error handling in the JNI versions of waitFor
+ return -1;
+ }
+ }
+
+ /**
+ * Closes the entire PTY session. This will have the side effect of closing all the IO
+ * channels at once. The process will also be terminated when the console is closed if
+ * it isn't closed already. If the console's host (conhost) is closed then the process
+ * won't be automatically terminated. This happens if conhost crashes and the behaviour
+ * with winpty is the same in that case.
+ */
+ public synchronized void close() throws IOException {
+ if (handles == null) {
+ return;
+ }
+ boolean res;
+
+ res = ConPTYKernel32.INSTANCE.CloseHandle(handles.processInformation.hThread);
+ checkErr(res, "CloseHandle processInformation.hThread"); //$NON-NLS-1$
+
+ res = ConPTYKernel32.INSTANCE.CloseHandle(handles.processInformation.hProcess);
+ checkErr(res, "CloseHandle processInformation.hProcess"); //$NON-NLS-1$
+
+ ConPTYKernel32.INSTANCE.DeleteProcThreadAttributeList(handles.startupInfo.lpAttributeList);
+ handles.threadAttributeListMemory.clear();
+
+ ConPTYKernel32.INSTANCE.ClosePseudoConsole(handles.pseudoConsole.getValue());
+
+ res = ConPTYKernel32.INSTANCE.CancelIoEx(handles.pipeIn.getValue(), Pointer.NULL);
+ int err = Native.getLastError();
+ if (err != WinError.ERROR_NOT_FOUND) {
+ checkErr(res, "CancelIoEx"); //$NON-NLS-1$
+ }
+
+ res = ConPTYKernel32.INSTANCE.CloseHandle(handles.pipeOut.getValue());
+ checkErr(res, "CloseHandle pipeOut"); //$NON-NLS-1$
+
+ res = ConPTYKernel32.INSTANCE.CloseHandle(handles.pipeIn.getValue());
+ checkErr(res, "CloseHandle pipeIn"); //$NON-NLS-1$
+
+ handles = null;
+ }
+
+ /**
+ * Implements contract of {@link InputStream#read(byte[])}
+ * @see InputStream#read(byte[])
+ */
+ public int read(byte[] buf) throws IOException {
+ if (handles == null) {
+ throw new IOException("ConPTY is closed."); //$NON-NLS-1$
+ }
+
+ var pipe = handles.pipeIn;
+
+ IntByReference dwBytesRead = new IntByReference(0);
+ boolean fRead = false;
+
+ fRead = Kernel32.INSTANCE.ReadFile(pipe.getValue(), buf, buf.length, dwBytesRead, null);
+ checkErr(fRead, "ReadFile"); //$NON-NLS-1$
+ int value = dwBytesRead.getValue();
+ if (value == 0) {
+ // We are at EOF because we are doing Synchronous and non-overlapped operation
+ // Implementation note: I don't know how to get this with terminal programs, so
+ // I have not seen this happen in development.
+ return -1;
+ }
+ return value;
+ }
+
+ /**
+ * Implements the contract of {@link OutputStream#write(byte[])}
+ * @see OutputStream#write(byte[])
+ */
+ public void write(byte[] buf) throws IOException {
+ if (handles == null) {
+ throw new IOException("ConPTY is closed."); //$NON-NLS-1$
+ }
+ IntByReference dwBytesWritten = new IntByReference(0);
+ boolean fWritten = false;
+ fWritten = Kernel32.INSTANCE.WriteFile(handles.pipeOut.getValue(), buf, buf.length, dwBytesWritten, null);
+ checkErr(fWritten, "WriteFile"); //$NON-NLS-1$
+ }
+
+ /**
+ * Implements the contract of {@link PTY#setTerminalSize(int, int)}, but throws exceptions
+ * that PTY logs.
+ * @see PTY#setTerminalSize(int, int)
+ */
+ public void setTerminalSize(int width, int height) throws IOException {
+ if (handles == null) {
+ throw new IOException("ConPTY is closed."); //$NON-NLS-1$
+ }
+
+ var consoleSize = new ConPTYKernel32.COORD_ByValue();
+ consoleSize.X = (short) width;
+ consoleSize.Y = (short) height;
+
+ HRESULT result = ConPTYKernel32.INSTANCE.ResizePseudoConsole(handles.pseudoConsole.getValue(), consoleSize);
+ checkErr(result, "ResizePseudoConsole"); //$NON-NLS-1$
+
+ }
+
+ /**
+ * Throw an IOException if hr is not S_OK.
+ */
+ private static void checkErr(WinNT.HRESULT hr, String method) throws IOException {
+ if (!S_OK.equals(hr)) {
+ String msg = Kernel32Util.getLastErrorMessage();
+ throw new IOException(String.format("%s: %s", method, msg)); //$NON-NLS-1$
+ }
+ }
+
+ /**
+ * Throw an IOException if status is false.
+ */
+ private static void checkErr(boolean status, String method) throws IOException {
+ if (!status) {
+ int lastError = Native.getLastError();
+ String msg = Kernel32Util.formatMessage(lastError);
+ throw new IOException(String.format("%s: %s: %s", method, lastError, msg)); //$NON-NLS-1$
+ }
+ }
+
+ /**
+ * Throw an IOException if handle is null.
+ */
+ private static void checkErr(HANDLE handle, String method) throws IOException {
+ if (handle == null) {
+ String msg = Kernel32Util.getLastErrorMessage();
+ throw new IOException(String.format("%s: %s", method, msg)); //$NON-NLS-1$
+ }
+ }
+}
diff --git a/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/pty/ConPTYInputStream.java b/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/pty/ConPTYInputStream.java
new file mode 100644
index 00000000000..3274ec5d40c
--- /dev/null
+++ b/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/pty/ConPTYInputStream.java
@@ -0,0 +1,67 @@
+/*******************************************************************************
+ * Copyright (c) 2021 Kichwa Coders Canada Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.utils.pty;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+/**
+ * @noreference This class is not intended to be referenced by clients.
+ */
+public class ConPTYInputStream extends PTYInputStream {
+
+ private ConPTY conPty;
+
+ public ConPTYInputStream(ConPTY conPty) {
+ super(null);
+ this.conPty = conPty;
+ }
+
+ /**
+ * @see InputStream#read(byte[], int, int)
+ */
+ @Override
+ public int read(byte[] buf, int off, int len) throws IOException {
+ if (buf == null) {
+ throw new NullPointerException();
+ } else if ((off < 0) || (off > buf.length) || (len < 0) || ((off + len) > buf.length) || ((off + len) < 0)) {
+ throw new IndexOutOfBoundsException();
+ } else if (len == 0) {
+ return 0;
+ }
+ byte[] tmpBuf = new byte[len];
+
+ len = conPty.read(tmpBuf);
+ if (len <= 0)
+ return -1;
+
+ System.arraycopy(tmpBuf, 0, buf, off, len);
+ return len;
+ }
+
+ /**
+ * Close the Reader
+ * @exception IOException on error.
+ */
+ @Override
+ public void close() throws IOException {
+ if (conPty == null) {
+ return;
+ }
+ try {
+ conPty.close();
+ } finally {
+ conPty = null;
+ }
+
+ }
+
+}
diff --git a/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/pty/ConPTYKernel32.java b/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/pty/ConPTYKernel32.java
new file mode 100644
index 00000000000..bbcdb2db25a
--- /dev/null
+++ b/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/pty/ConPTYKernel32.java
@@ -0,0 +1,69 @@
+/*******************************************************************************
+ * Copyright (c) 2021 Kichwa Coders Canada Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.utils.pty;
+
+import com.sun.jna.Native;
+import com.sun.jna.Pointer;
+import com.sun.jna.Structure;
+import com.sun.jna.platform.win32.Kernel32;
+
+/**
+ * This class is an extension of JNA and everything here needs to be contributed back
+ * to JNA. This class was written against JNA 5.6
+ *
+ * @noreference This interface is not intended to be referenced by clients.
+ * @noimplement This interface is not intended to be implemented by clients.
+ * @noextend This interface is not intended to be extended by clients.
+ */
+public interface ConPTYKernel32 extends Kernel32 {
+ ConPTYKernel32 INSTANCE = Native.load("kernel32", ConPTYKernel32.class, //$NON-NLS-1$
+ com.sun.jna.win32.W32APIOptions.DEFAULT_OPTIONS);
+
+ int PROC_THREAD_ATTRIBUTE_PSEUDOCONSOLE = 0x00020016;
+
+ class SIZE_TByReference extends ULONG_PTRByReference {
+ @Override
+ public SIZE_T getValue() {
+ return new SIZE_T(super.getValue().longValue());
+ }
+ }
+
+ boolean CancelIoEx(HANDLE hFile, Pointer lpOverlapped);
+
+ public static class COORD_ByValue extends COORD implements Structure.ByValue {
+ }
+
+ @Structure.FieldOrder({ "StartupInfo", "lpAttributeList" })
+ class STARTUPINFOEX extends Structure {
+ public STARTUPINFO StartupInfo;
+ public Pointer lpAttributeList;
+ }
+
+ HRESULT CreatePseudoConsole(COORD.ByValue size, HANDLE hInput, HANDLE hOutput, DWORD dwFlags,
+ HANDLEByReference phPC);
+
+ HRESULT ResizePseudoConsole(HANDLE hPC, COORD.ByValue size);
+
+ void ClosePseudoConsole(HANDLE hPC);
+
+ boolean InitializeProcThreadAttributeList(Pointer lpAttributeList, DWORD dwAttributeCount, DWORD dwFlags,
+ SIZE_TByReference lpSize);
+
+ boolean UpdateProcThreadAttribute(Pointer lpAttributeList, DWORD dwFlags, DWORD_PTR Attribute, PVOID lpValue,
+ SIZE_T cbSize, PVOID lpPreviousValue, SIZE_TByReference lpReturnSize);
+
+ void DeleteProcThreadAttributeList(Pointer lpAttributeList);
+
+ boolean CreateProcess(String lpApplicationName, String lpCommandLine, SECURITY_ATTRIBUTES lpProcessAttributes,
+ SECURITY_ATTRIBUTES lpThreadAttributes, boolean bInheritHandles, DWORD dwCreationFlags,
+ Pointer lpEnvironment, String lpCurrentDirectory, STARTUPINFOEX lpStartupInfo,
+ PROCESS_INFORMATION lpProcessInformation);
+} \ No newline at end of file
diff --git a/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/pty/ConPTYOutputStream.java b/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/pty/ConPTYOutputStream.java
new file mode 100644
index 00000000000..5d6239d161f
--- /dev/null
+++ b/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/pty/ConPTYOutputStream.java
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * Copyright (c) 2021 Kichwa Coders Canada Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.utils.pty;
+
+import java.io.IOException;
+
+/**
+ * @noreference This class is not intended to be referenced by clients.
+ */
+public class ConPTYOutputStream extends PTYOutputStream {
+ private ConPTY conPty;
+
+ public ConPTYOutputStream(ConPTY conPty) {
+ super(null, false);
+ this.conPty = conPty;
+ }
+
+ @Override
+ public void write(byte[] b, int off, int len) throws IOException {
+ if (b == null) {
+ throw new NullPointerException();
+ } else if ((off < 0) || (off > b.length) || (len < 0) || ((off + len) > b.length) || ((off + len) < 0)) {
+ throw new IndexOutOfBoundsException();
+ } else if (len == 0) {
+ return;
+ }
+ byte[] tmpBuf = new byte[len];
+ System.arraycopy(b, off, tmpBuf, 0, len);
+ conPty.write(tmpBuf);
+ }
+
+ @Override
+ public void close() throws IOException {
+ if (conPty == null) {
+ return;
+ }
+ try {
+ conPty.close();
+ } finally {
+ conPty = null;
+ }
+ }
+}
diff --git a/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/pty/PTY.java b/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/pty/PTY.java
index a92f5a06ace..ad169aadd22 100644
--- a/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/pty/PTY.java
+++ b/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/pty/PTY.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2002, 2015 QNX Software Systems and others.
+ * Copyright (c) 2002, 2021 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -20,6 +20,7 @@ import java.io.IOException;
import org.eclipse.cdt.internal.core.natives.CNativePlugin;
import org.eclipse.cdt.internal.core.natives.Messages;
import org.eclipse.cdt.utils.spawner.Spawner;
+import org.eclipse.cdt.utils.spawner.Spawner.IChannel;
import org.eclipse.core.runtime.Platform;
/**
@@ -38,20 +39,37 @@ public class PTY {
TERMINAL
}
- final boolean console;
+ final Mode mode;
+ /**
+ * Unused in conPTY.
+ * Created, but never read in winPTY.
+ * Important for Posix PTY.
+ */
final String slave;
final PTYInputStream in;
final PTYOutputStream out;
/**
* NOTE: Field is accessed by the native layer. Do not refactor!
+ * This field is NOT used by ConPTY layer.
*/
int master;
private static boolean hasPTY;
+
+ private enum IS_CONPTY {
+ CONPTY_UNKNOWN, CONPTY_YES, CONPTY_NO;
+ }
+
+ /**
+ * We don't know if we have conpty until we try - so this starts
+ * null and will be true or false once it is determined.
+ */
+ private static IS_CONPTY isConPTY = IS_CONPTY.CONPTY_UNKNOWN;
private static boolean isWinPTY;
private static boolean isConsoleModeSupported;
private static boolean setTerminalSizeErrorAlreadyLogged;
+ private ConPTY conPTY;
/**
* The master fd is used on two streams. We need to wrap the fd
@@ -71,6 +89,7 @@ public class PTY {
/**
* @return whether PTY support for console mode is available on this platform
*/
+ @Deprecated
public static boolean isSupported() {
return isSupported(Mode.CONSOLE);
}
@@ -85,7 +104,7 @@ public class PTY {
/**
* Create PTY for use with Eclipse console.
- * Identical to {@link PTY#PTY(boolean) PTY(Mode.CONSOLE)}.
+ * Identical to <code>PTY(Mode.CONSOLE)</code>.
*/
public PTY() throws IOException {
this(Mode.CONSOLE);
@@ -113,46 +132,44 @@ public class PTY {
* @since 5.6
*/
public PTY(Mode mode) throws IOException {
- this(mode == Mode.CONSOLE);
- }
-
- /**
- * Create pseudo terminal.
- *
- * <p>
- * The provided flag indicates whether the pseudo terminal is used with the interactive
- * Eclipse console:
- * <ul>
- * <li>If <code>true</code> the terminal is configured with no echo and stderr is
- * redirected to a pipe instead of the PTY. This mode is not supported on windows</li>
- * <li>If <code>false</code> the terminal is configured with echo and stderr is
- * connected to the PTY. This mode is best suited for use with a proper terminal emulation.
- * Note that this mode might not be supported on all platforms.
- * Known platforms which support this mode are:
- * <code>linux-x86</code>, <code>linux-x86_64</code>, <code>solaris-sparc</code>, <code>macosx</code>.
- * </li>
- * </ul>
- * </p>
- *
- * @param console whether terminal is used with Eclipse console
- * @throws IOException if the PTY could not be created
- * @deprecated Use {@link #PTY(Mode)} instead
- * @since 5.2
- */
- @Deprecated
- public PTY(boolean console) throws IOException {
- this.console = console;
- if (console && !isConsoleModeSupported) {
+ this.mode = mode;
+ if (isConsole() && !isConsoleModeSupported) {
throw new IOException(Messages.Util_exception_cannotCreatePty);
}
- slave = hasPTY ? openMaster(console) : null;
-
- if (slave == null) {
- throw new IOException(Messages.Util_exception_cannotCreatePty);
+ PTYInputStream inInit = null;
+ PTYOutputStream outInit = null;
+ String slaveInit = null;
+ if (isConPTY != IS_CONPTY.CONPTY_NO) {
+ try {
+ conPTY = new ConPTY();
+ isConPTY = IS_CONPTY.CONPTY_YES;
+ slaveInit = "conpty"; //$NON-NLS-1$
+ inInit = new ConPTYInputStream(conPTY);
+ outInit = new ConPTYOutputStream(conPTY);
+ } catch (NoClassDefFoundError e) {
+ isConPTY = IS_CONPTY.CONPTY_NO;
+ CNativePlugin.log(Messages.PTY_NoClassDefFoundError, e);
+ } catch (Throwable e) {
+ isConPTY = IS_CONPTY.CONPTY_NO;
+ CNativePlugin.log(Messages.PTY_FailedToStartConPTY, e);
+ }
}
- in = new PTYInputStream(new MasterFD());
- out = new PTYOutputStream(new MasterFD(), !isWinPTY);
+ // fall through in exception case as well as normal non-conPTY
+ if (isConPTY == IS_CONPTY.CONPTY_NO) {
+
+ slaveInit = hasPTY ? openMaster(isConsole()) : null;
+
+ if (slaveInit == null) {
+ throw new IOException(Messages.Util_exception_cannotCreatePty);
+ }
+
+ inInit = new PTYInputStream(new MasterFD());
+ outInit = new PTYOutputStream(new MasterFD(), !isWinPTY);
+ }
+ slave = slaveInit;
+ in = inInit;
+ out = outInit;
}
/**
@@ -164,8 +181,9 @@ public class PTY {
public void validateSlaveName() throws IOException {
// on windows the slave name is just an internal identifier
// and does not represent a real device
- if (isWinPTY)
+ if (isWinPTY) {
throw new IOException("Slave name is not valid"); //$NON-NLS-1$
+ }
}
public String getSlaveName() {
@@ -182,7 +200,7 @@ public class PTY {
* @since 5.2
*/
public final boolean isConsole() {
- return console;
+ return mode == Mode.CONSOLE;
}
public PTYOutputStream getOutputStream() {
@@ -210,12 +228,17 @@ public class PTY {
*/
public final void setTerminalSize(int width, int height) {
try {
- change_window_size(master, width, height);
- } catch (UnsatisfiedLinkError ule) {
+ if (isConPTY == IS_CONPTY.CONPTY_YES) {
+ conPTY.setTerminalSize(width, height);
+ } else {
+ change_window_size(master, width, height);
+ }
+ } catch (UnsatisfiedLinkError | IOException e) {
if (!setTerminalSizeErrorAlreadyLogged) {
setTerminalSizeErrorAlreadyLogged = true;
- CNativePlugin.log(Messages.Util_exception_cannotSetTerminalSize, ule);
+ CNativePlugin.log(Messages.Util_exception_cannotSetTerminalSize, e);
}
+
}
}
@@ -223,11 +246,14 @@ public class PTY {
* @noreference This method is not intended to be referenced by clients.
* @since 5.6
*/
- public int exec_pty(Spawner spawner, String[] cmdarray, String[] envp, String dir, int[] chan) throws IOException {
- if (isWinPTY) {
- return exec2(cmdarray, envp, dir, chan, slave, master, console);
+ public int exec_pty(Spawner spawner, String[] cmdarray, String[] envp, String dir, IChannel[] chan)
+ throws IOException {
+ if (isConPTY == IS_CONPTY.CONPTY_YES) {
+ return conPTY.exec(cmdarray, envp, dir);
+ } else if (isWinPTY) {
+ return exec2(cmdarray, envp, dir, chan, slave, master, isConsole());
} else {
- return spawner.exec2(cmdarray, envp, dir, chan, slave, master, console);
+ return spawner.exec2(cmdarray, envp, dir, chan, slave, master, isConsole());
}
}
@@ -236,7 +262,9 @@ public class PTY {
* @since 5.6
*/
public int waitFor(Spawner spawner, int pid) {
- if (isWinPTY) {
+ if (isConPTY == IS_CONPTY.CONPTY_YES) {
+ return conPTY.waitFor();
+ } else if (isWinPTY) {
return waitFor(master, pid);
} else {
return spawner.waitFor(pid);
@@ -250,7 +278,7 @@ public class PTY {
/**
* Native method when executing with a terminal emulation (winpty only).
*/
- native int exec2(String[] cmdarray, String[] envp, String dir, int[] chan, String slaveName, int masterFD,
+ native int exec2(String[] cmdarray, String[] envp, String dir, IChannel[] chan, String slaveName, int masterFD,
boolean console) throws IOException;
/**
@@ -260,18 +288,33 @@ public class PTY {
static {
try {
+ boolean isWindows = Platform.OS_WIN32.equals(Platform.getOS());
+ if (!isWindows) {
+ isConPTY = IS_CONPTY.CONPTY_NO;
+ }
+ // Disable ConPTY if the user needs to
+ boolean conPtyEnabled = Boolean
+ .parseBoolean(System.getProperty("org.eclipse.cdt.core.conpty_enabled", "true")); //$NON-NLS-1$ //$NON-NLS-2$
+ if (!conPtyEnabled) {
+ isConPTY = IS_CONPTY.CONPTY_NO;
+ }
+
+ isWinPTY = isWindows;
+ if (isWindows) {
+ // When we used to build with VC++ we used DelayLoadDLLs (See Gerrit 167674 and Bug 521515) so that the winpty
+ // could be found. When we ported to mingw we didn't port across this feature because it was simpler to just
+ // manually load winpty first.
+ System.loadLibrary("winpty"); //$NON-NLS-1$
+ }
System.loadLibrary("pty"); //$NON-NLS-1$
hasPTY = true;
- isWinPTY = Platform.OS_WIN32.equals(Platform.getOS());
// on windows console mode is not supported except for experimental use
// to enable it, set system property org.eclipse.cdt.core.winpty_console_mode=true
isConsoleModeSupported = !isWinPTY || Boolean.getBoolean("org.eclipse.cdt.core.winpty_console_mode"); //$NON-NLS-1$
- } catch (SecurityException e) {
- // Comment out it worries the users too much
- //CCorePlugin.log(e);
- } catch (UnsatisfiedLinkError e) {
- // Comment out it worries the users too much
- //CCorePlugin.log(e);
+ } catch (SecurityException | UnsatisfiedLinkError e) {
+ CNativePlugin.log(
+ "Failed to load the PTY library. This may indicate a configuration problem, but can be ignored if no further problems are observed.", //$NON-NLS-1$
+ e);
}
}
diff --git a/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/pty/PTYInputStream.java b/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/pty/PTYInputStream.java
index eeebd1a097c..ed0410a2310 100644
--- a/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/pty/PTYInputStream.java
+++ b/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/pty/PTYInputStream.java
@@ -20,7 +20,10 @@ import java.io.InputStream;
import org.eclipse.cdt.utils.pty.PTY.MasterFD;
-class PTYInputStream extends InputStream {
+/**
+ * @since 6.0
+ */
+public class PTYInputStream extends InputStream {
MasterFD master;
diff --git a/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/spawner/EnvironmentReader.java b/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/spawner/EnvironmentReader.java
index 6e0adcf8a8f..b602d556b53 100644
--- a/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/spawner/EnvironmentReader.java
+++ b/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/spawner/EnvironmentReader.java
@@ -13,51 +13,42 @@
*******************************************************************************/
package org.eclipse.cdt.utils.spawner;
-import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
import java.util.Map;
import java.util.Properties;
import org.eclipse.core.runtime.Platform;
/**
- * This class provides environment variables supplied as {@link Properties} class.
+ * This class provides OS owned environment variables supplied as {@link Properties} class.
*
* @noextend This class is not intended to be subclassed by clients.
* @noinstantiate This class is not intended to be instantiated by clients.
*/
public class EnvironmentReader {
- private static Properties envVars = null;
- private static Properties envVarsNormalized = null;
- private static ArrayList<String> rawVars = null;
+ private static Properties envVars;
+ @SuppressWarnings("nls")
+ private static List<String> toUppercaseEnvironmentVars = Arrays.asList("PATH", "CYGWIN_HOME", "LANG");
- private static synchronized void init() {
- if (envVars == null) {
- envVars = new Properties();
- // on Windows environment variable names are case-insensitive
- if (Platform.getOS().equals(Platform.OS_WIN32)) {
- envVarsNormalized = new Properties();
- } else {
- envVarsNormalized = envVars;
+ static {
+ boolean isWindows = Platform.OS_WIN32.equals(Platform.getOS());
+ envVars = new Properties();
+ Map<String, String> envMap = System.getenv();
+ for (Map.Entry<String, String> curEnvVar : envMap.entrySet()) {
+ String key = curEnvVar.getKey();
+ String value = curEnvVar.getValue();
+ if (isWindows && toUppercaseEnvironmentVars.contains(key.toUpperCase())) {
+ key = key.toUpperCase();
}
- rawVars = new ArrayList<>();
- Map<String, String> envMap = System.getenv();
- for (String var : envMap.keySet()) {
- String value = envMap.get(var);
- envVars.setProperty(var, value);
- if (envVarsNormalized != envVars) {
- envVarsNormalized.setProperty(var.toUpperCase(), value);
- }
- rawVars.add(var + "=" + value); //$NON-NLS-1$
- }
- rawVars.trimToSize();
+ envVars.setProperty(key, value);
}
}
/**
- * @return list of environment variables.
+ * @return a clone of the list of environment variables.
*/
public static Properties getEnvVars() {
- init();
return (Properties) envVars.clone();
}
@@ -66,16 +57,6 @@ public class EnvironmentReader {
* @return value of environment variable.
*/
public static String getEnvVar(String key) {
- init();
- return envVarsNormalized.getProperty(key);
- }
-
- /**
- * @deprecated since CDT 6.1. {@link #getEnvVars()} provides all the data.
- */
- @Deprecated
- public static String[] getRawEnvVars() {
- init();
- return rawVars.toArray(new String[rawVars.size()]);
+ return envVars.getProperty(key);
}
}
diff --git a/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/spawner/ProcessFactory.java b/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/spawner/ProcessFactory.java
index f032d545af3..cab299b909e 100644
--- a/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/spawner/ProcessFactory.java
+++ b/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/spawner/ProcessFactory.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2014 QNX Software Systems and others.
+ * Copyright (c) 2000, 2020 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -11,6 +11,7 @@
* Contributors:
* QNX Software Systems - Initial API and implementation
* Martin Oberhuber (Wind River) - [303083] Split out the Spawner
+ * Red Hat Inc. - add flatpak support
*******************************************************************************/
package org.eclipse.cdt.utils.spawner;
@@ -30,6 +31,7 @@ public class ProcessFactory {
static private ProcessFactory instance;
private boolean hasSpawner;
private Runtime runtime;
+ private final static String FLATPAK_CMD = "flatpak-spawn --host --watch-bus "; //$NON-NLS-1$
private ProcessFactory() {
hasSpawner = false;
@@ -56,45 +58,124 @@ public class ProcessFactory {
return instance;
}
+ /**
+ * @deprecated Do not use this method it splits command line arguments on whitespace with no regard to quoting rules. See Bug 573677
+ */
+ @Deprecated
public Process exec(String cmd) throws IOException {
+ cmd = modifyCmdIfFlatpak(cmd);
if (hasSpawner)
return new Spawner(cmd);
return runtime.exec(cmd);
}
public Process exec(String[] cmdarray) throws IOException {
+ cmdarray = modifyCmdArrayIfFlatpak(cmdarray);
if (hasSpawner)
return new Spawner(cmdarray);
return runtime.exec(cmdarray);
}
+ /**
+ * @since 6.2
+ */
+ public Process exec(String[] cmdarray, int gracefulExitTimeMs) throws IOException {
+ cmdarray = modifyCmdArrayIfFlatpak(cmdarray);
+ if (hasSpawner)
+ return new Spawner(cmdarray, gracefulExitTimeMs);
+ return runtime.exec(cmdarray);
+ }
+
public Process exec(String[] cmdarray, String[] envp) throws IOException {
+ cmdarray = modifyCmdArrayIfFlatpak(cmdarray);
if (hasSpawner)
return new Spawner(cmdarray, envp);
return runtime.exec(cmdarray, envp);
}
+ /**
+ * @since 6.2
+ */
+ public Process exec(String[] cmdarray, String[] envp, int gracefulExitTimeMs) throws IOException {
+ cmdarray = modifyCmdArrayIfFlatpak(cmdarray);
+ if (hasSpawner)
+ return new Spawner(cmdarray, envp, gracefulExitTimeMs);
+ return runtime.exec(cmdarray, envp);
+ }
+
+ /**
+ * @deprecated Do not use this method it splits command line arguments on whitespace with no regard to quoting rules. See Bug 573677
+ */
+ @Deprecated
public Process exec(String cmd, String[] envp) throws IOException {
+ cmd = modifyCmdIfFlatpak(cmd);
if (hasSpawner)
return new Spawner(cmd, envp);
return runtime.exec(cmd, envp);
}
+ /**
+ * @deprecated Do not use this method it splits command line arguments on whitespace with no regard to quoting rules. See Bug 573677
+ */
+ @Deprecated
public Process exec(String cmd, String[] envp, File dir) throws IOException {
+ cmd = modifyCmdIfFlatpak(cmd);
if (hasSpawner)
return new Spawner(cmd, envp, dir);
return runtime.exec(cmd, envp, dir);
}
public Process exec(String cmdarray[], String[] envp, File dir) throws IOException {
+ cmdarray = modifyCmdArrayIfFlatpak(cmdarray);
if (hasSpawner)
return new Spawner(cmdarray, envp, dir);
return runtime.exec(cmdarray, envp, dir);
}
+ /**
+ * @since 6.2
+ */
+ public Process exec(String cmdarray[], String[] envp, File dir, int gracefulExitTimeMs) throws IOException {
+ cmdarray = modifyCmdArrayIfFlatpak(cmdarray);
+ if (hasSpawner)
+ return new Spawner(cmdarray, envp, dir, gracefulExitTimeMs);
+ return runtime.exec(cmdarray, envp, dir);
+ }
+
public Process exec(String cmdarray[], String[] envp, File dir, PTY pty) throws IOException {
+ cmdarray = modifyCmdArrayIfFlatpak(cmdarray);
if (hasSpawner)
return new Spawner(cmdarray, envp, dir, pty);
throw new UnsupportedOperationException(Messages.Util_exception_cannotCreatePty);
}
+
+ /**
+ * @since 6.2
+ */
+ public Process exec(String cmdarray[], String[] envp, File dir, PTY pty, int gracefulExitTimeMs)
+ throws IOException {
+ cmdarray = modifyCmdArrayIfFlatpak(cmdarray);
+ if (hasSpawner)
+ return new Spawner(cmdarray, envp, dir, pty, gracefulExitTimeMs);
+ throw new UnsupportedOperationException(Messages.Util_exception_cannotCreatePty);
+ }
+
+ private String modifyCmdIfFlatpak(String cmd) {
+ if (System.getenv("FLATPAK_SANDBOX_DIR") != null) { //$NON-NLS-1$
+ cmd = FLATPAK_CMD + cmd;
+ }
+ return cmd;
+ }
+
+ private String[] modifyCmdArrayIfFlatpak(String[] cmdarray) {
+ if (System.getenv("FLATPAK_SANDBOX_DIR") != null) { //$NON-NLS-1$
+ String[] newArray = new String[cmdarray.length + 3];
+ System.arraycopy(cmdarray, 0, newArray, 3, cmdarray.length);
+ newArray[0] = "flatpak-spawn"; //$NON-NLS-1$
+ newArray[1] = "--host"; //$NON-NLS-1$
+ newArray[2] = "--watch-bus"; //$NON-NLS-1$
+ cmdarray = newArray;
+ }
+ return cmdarray;
+ }
}
diff --git a/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/spawner/Spawner.java b/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/spawner/Spawner.java
index c5249b99cb0..172a93aca0e 100644
--- a/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/spawner/Spawner.java
+++ b/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/spawner/Spawner.java
@@ -29,10 +29,31 @@ import org.eclipse.osgi.util.NLS;
public class Spawner extends Process {
- public int NOOP = 0;
- public int HUP = 1;
- public int KILL = 9;
- public int TERM = 15;
+ @Deprecated(forRemoval = true)
+ public int NOOP = SIG_NOOP;
+
+ @Deprecated(forRemoval = true)
+ public int HUP = SIG_HUP;
+
+ @Deprecated(forRemoval = true)
+ public int KILL = SIG_KILL;
+
+ @Deprecated(forRemoval = true)
+ public int TERM = SIG_TERM;
+
+ @Deprecated(forRemoval = true)
+ public int INT = SIG_INT;
+
+ /**
+ * @since 5.2
+ */
+ @Deprecated(forRemoval = true)
+ public int CTRLC = SIG_CTRLC;
+
+ private final static int SIG_NOOP = 0;
+ private final static int SIG_HUP = 1;
+ private final static int SIG_KILL = 9;
+ private final static int SIG_TERM = 15;
/**
* On Windows, what this does is far from easy to explain.
@@ -51,28 +72,54 @@ public class Spawner extends Process {
* </ul>
*
* On non-Windows, raising this just raises a POSIX SIGINT
- *
*/
- public int INT = 2;
+ private final static int SIG_INT = 2;
/**
* A fabricated signal number for use on Windows only. Tells the starter program to send a CTRL-C
* regardless of whether the process is a Cygwin one or not.
- *
- * @since 5.2
*/
- public int CTRLC = 1000; // arbitrary high number to avoid collision
+ private final static int SIG_CTRLC = 1000; // arbitrary high number to avoid collision
+
+ private final static int DEFAULT_GRACEFUL_EXIT_TIME_MS;
+
+ static {
+ String timeStr = System.getProperty("org.eclipse.cdt.core.graceful_exit_time_ms"); //$NON-NLS-1$
+ int time = 1000;
+ if (timeStr != null) {
+ try {
+ time = Integer.parseInt(timeStr);
+ } catch (NumberFormatException e) {
+ CNativePlugin.log(
+ "Failed to parse system property. Falling back to " + time + " ms graceful exit time.", //$NON-NLS-1$ //$NON-NLS-2$
+ e);
+ }
+ }
+ DEFAULT_GRACEFUL_EXIT_TIME_MS = time;
+ }
int pid = 0;
int status;
- final int[] fChannels = { -1, -1, -1 };
- boolean isDone;
+ final IChannel[] fChannels = { null, null, null };
OutputStream out;
InputStream in;
InputStream err;
private PTY fPty;
+ private final int fGracefulExitTimeMs;
+
+ private static enum State {
+ RUNNING, DESTROYING, DONE
+ }
+
+ private State fState = State.RUNNING;
+
+ /**
+ * @deprecated Do not use this method it splits command line arguments on whitespace with no regard to quoting rules. See Bug 573677
+ */
+ @Deprecated
public Spawner(String command, boolean bNoRedirect) throws IOException {
+ fGracefulExitTimeMs = DEFAULT_GRACEFUL_EXIT_TIME_MS;
StringTokenizer tokenizer = new StringTokenizer(command);
String[] cmdarray = new String[tokenizer.countTokens()];
for (int n = 0; tokenizer.hasMoreTokens(); n++)
@@ -83,11 +130,17 @@ public class Spawner extends Process {
exec(cmdarray, new String[0], "."); //$NON-NLS-1$
}
+ protected Spawner(String[] cmdarray, String[] envp, File dir) throws IOException {
+ this(cmdarray, envp, dir, DEFAULT_GRACEFUL_EXIT_TIME_MS);
+ }
+
/**
* Executes the specified command and arguments in a separate process with the
* specified environment and working directory.
+ * @since 6.2
**/
- protected Spawner(String[] cmdarray, String[] envp, File dir) throws IOException {
+ protected Spawner(String[] cmdarray, String[] envp, File dir, int gracefulExitTimeMs) throws IOException {
+ fGracefulExitTimeMs = gracefulExitTimeMs;
String dirpath = "."; //$NON-NLS-1$
if (dir != null)
dirpath = dir.getAbsolutePath();
@@ -95,6 +148,14 @@ public class Spawner extends Process {
}
protected Spawner(String[] cmdarray, String[] envp, File dir, PTY pty) throws IOException {
+ this(cmdarray, envp, dir, pty, DEFAULT_GRACEFUL_EXIT_TIME_MS);
+ }
+
+ /**
+ * @since 6.2
+ */
+ protected Spawner(String[] cmdarray, String[] envp, File dir, PTY pty, int gracefulExitTimeMs) throws IOException {
+ fGracefulExitTimeMs = gracefulExitTimeMs;
String dirpath = "."; //$NON-NLS-1$
if (dir != null)
dirpath = dir.getAbsolutePath();
@@ -104,7 +165,9 @@ public class Spawner extends Process {
/**
* Executes the specified string command in a separate process.
- **/
+ * @deprecated Do not use this method it splits command line arguments on whitespace with no regard to quoting rules. See Bug 573677
+ */
+ @Deprecated
protected Spawner(String command) throws IOException {
this(command, null);
}
@@ -117,6 +180,13 @@ public class Spawner extends Process {
}
/**
+ * @since 6.2
+ */
+ protected Spawner(String[] cmdarray, int gracefulExitTimeMs) throws IOException {
+ this(cmdarray, null, gracefulExitTimeMs);
+ }
+
+ /**
* Executes the specified command and arguments in a separate process with the
* specified environment.
**/
@@ -125,9 +195,18 @@ public class Spawner extends Process {
}
/**
+ * @since 6.2
+ */
+ protected Spawner(String[] cmdarray, String[] envp, int gracefulExitTimeMs) throws IOException {
+ this(cmdarray, envp, null, gracefulExitTimeMs);
+ }
+
+ /**
* Executes the specified string command in a separate process with the specified
* environment.
- **/
+ * @deprecated Do not use this method it splits command line arguments on whitespace with no regard to quoting rules. See Bug 573677
+ */
+ @Deprecated
protected Spawner(String cmd, String[] envp) throws IOException {
this(cmd, envp, null);
}
@@ -135,8 +214,11 @@ public class Spawner extends Process {
/**
* Executes the specified string command in a separate process with the specified
* environment and working directory.
- **/
+ * @deprecated Do not use this method it splits command line arguments on whitespace with no regard to quoting rules. See Bug 573677
+ */
+ @Deprecated
protected Spawner(String command, String[] envp, File dir) throws IOException {
+ fGracefulExitTimeMs = DEFAULT_GRACEFUL_EXIT_TIME_MS;
StringTokenizer tokenizer = new StringTokenizer(command);
String[] cmdarray = new String[tokenizer.countTokens()];
for (int n = 0; tokenizer.hasMoreTokens(); n++)
@@ -213,7 +295,7 @@ public class Spawner extends Process {
**/
@Override
public synchronized int waitFor() throws InterruptedException {
- while (!isDone) {
+ while (fState != State.DONE) {
wait();
}
@@ -235,7 +317,7 @@ public class Spawner extends Process {
**/
@Override
public synchronized int exitValue() {
- if (!isDone) {
+ if (fState != State.DONE) {
throw new IllegalThreadStateException("Process not Terminated"); //$NON-NLS-1$
}
return status;
@@ -250,49 +332,65 @@ public class Spawner extends Process {
**/
@Override
public synchronized void destroy() {
- // Sends the TERM
- terminate();
-
- // Close the streams on this side.
- //
- // We only close the streams that were
- // never used by any client.
- // So, if the stream was not created yet,
- // we create it ourselves and close it
- // right away, so as to release the pipe.
- // Note that even if the stream was never
- // created, the pipe has been allocated in
- // native code, so we need to create the
- // stream and explicitly close it.
- //
- // We don't close streams the clients have
- // created because we don't know when the
- // client will be finished using them.
- // It is up to the client to close those
- // streams.
- //
- // But 345164
- closeUnusedStreams();
-
- // Grace before using the heavy gone.
- if (!isDone) {
- try {
- wait(1000);
- } catch (InterruptedException e) {
+ switch (fState) {
+ case RUNNING:
+ fState = State.DESTROYING;
+
+ // Sends the TERM
+ terminate();
+
+ // Close the streams on this side.
+ //
+ // We only close the streams that were
+ // never used by any client.
+ // So, if the stream was not created yet,
+ // we create it ourselves and close it
+ // right away, so as to release the pipe.
+ // Note that even if the stream was never
+ // created, the pipe has been allocated in
+ // native code, so we need to create the
+ // stream and explicitly close it.
+ //
+ // We don't close streams the clients have
+ // created because we don't know when the
+ // client will be finished using them.
+ // It is up to the client to close those
+ // streams.
+ //
+ // But 345164
+ closeUnusedStreams();
+
+ // Grace before using the heavy gun.
+ if (fState != State.DONE) {
+ try {
+ wait(fGracefulExitTimeMs);
+ } catch (InterruptedException e) {
+ }
}
- }
- if (!isDone) {
- kill();
+ if (fState != State.DONE) {
+ kill();
+ }
+ break;
+
+ case DESTROYING:
+ case DONE:
+ // Nothing to do
+ break;
}
}
+ @Override
+ public long pid() {
+ return pid;
+ }
+
/**
* On Windows, interrupt the spawned program by using Cygwin's utility 'kill -SIGINT' if it's a Cgywin
* program, otherwise send it a CTRL-C. If Cygwin's 'kill' command is not available, send a CTRL-C. On
* linux, interrupt it by raising a SIGINT.
*/
public int interrupt() {
- return raise(pid, INT);
+ return raise(pid, SIG_INT);
}
/**
@@ -303,26 +401,26 @@ public class Spawner extends Process {
*/
public int interruptCTRLC() {
if (Platform.getOS().equals(Platform.OS_WIN32)) {
- return raise(pid, CTRLC);
+ return raise(pid, SIG_CTRLC);
} else {
return interrupt();
}
}
public int hangup() {
- return raise(pid, HUP);
+ return raise(pid, SIG_HUP);
}
public int kill() {
- return raise(pid, KILL);
+ return raise(pid, SIG_KILL);
}
public int terminate() {
- return raise(pid, TERM);
+ return raise(pid, SIG_TERM);
}
public boolean isRunning() {
- return (raise(pid, NOOP) == 0);
+ return (raise(pid, SIG_NOOP) == 0);
}
private void exec(String[] cmdarray, String[] envp, String dirpath) throws IOException {
@@ -363,7 +461,7 @@ public class Spawner extends Process {
Reaper reaper = new Reaper(cmdarray, envp, dirpath) {
@Override
- int execute(String[] cmd, String[] env, String dir, int[] channels) throws IOException {
+ int execute(String[] cmd, String[] env, String dir, IChannel[] channels) throws IOException {
return pty.exec_pty(Spawner.this, cmd, env, dir, channels);
}
@@ -429,7 +527,7 @@ public class Spawner extends Process {
/**
* Native method use in normal exec() calls.
*/
- native int exec0(String[] cmdarray, String[] envp, String dir, int[] chan) throws IOException;
+ native int exec0(String[] cmdarray, String[] envp, String dir, IChannel[] chan) throws IOException;
/**
* Native method use in no redirect meaning to streams will created.
@@ -440,8 +538,8 @@ public class Spawner extends Process {
* Native method when executing with a terminal emulation.
* @noreference This method is not intended to be referenced by clients.
*/
- public native int exec2(String[] cmdarray, String[] envp, String dir, int[] chan, String slaveName, int masterFD,
- boolean console) throws IOException;
+ public native int exec2(String[] cmdarray, String[] envp, String dir, IChannel[] chan, String slaveName,
+ int masterFD, boolean console) throws IOException;
/**
* Native method to drop a signal on the process with pid.
@@ -449,6 +547,13 @@ public class Spawner extends Process {
public native int raise(int processID, int sig);
/**
+ * @since 6.2
+ */
+ public int raise(int sig) {
+ return raise(pid, sig);
+ }
+
+ /**
* Native method to wait(3) for process to terminate.
* @noreference This method is not intended to be referenced by clients.
*/
@@ -457,6 +562,10 @@ public class Spawner extends Process {
static {
try {
System.loadLibrary("spawner"); //$NON-NLS-1$
+ configureNativeTrace(Platform.getDebugBoolean(CNativePlugin.PLUGIN_ID + "/debug/spawner"), //$NON-NLS-1$
+ Platform.getDebugBoolean(CNativePlugin.PLUGIN_ID + "/debug/spawner/details"), //$NON-NLS-1$
+ Platform.getDebugBoolean(CNativePlugin.PLUGIN_ID + "/debug/spawner/starter"), //$NON-NLS-1$
+ Platform.getDebugBoolean(CNativePlugin.PLUGIN_ID + "/debug/spawner/read_report")); //$NON-NLS-1$
} catch (SecurityException e) {
CNativePlugin.log(e);
} catch (UnsatisfiedLinkError e) {
@@ -464,6 +573,40 @@ public class Spawner extends Process {
}
}
+ /**
+ * @since 6.0
+ */
+ private static native void configureNativeTrace(boolean spawner, boolean spawnerDetails, boolean starter,
+ boolean readReport);
+
+ /**
+ * @since 6.0
+ */
+ public static interface IChannel {
+ }
+
+ /**
+ * @since 6.0
+ */
+ public static class WinChannel implements IChannel {
+ final long handle;
+
+ public WinChannel(long handle) {
+ this.handle = handle;
+ }
+ }
+
+ /**
+ * @since 6.0
+ */
+ public static class UnixChannel implements IChannel {
+ final int fd;
+
+ public UnixChannel(int fd) {
+ this.fd = fd;
+ }
+ }
+
// Spawn a thread to handle the forking and waiting
// We do it this way because on linux the SIGCHLD is
// send to the one thread. So do the forking and
@@ -482,7 +625,7 @@ public class Spawner extends Process {
fException = null;
}
- int execute(String[] cmdarray, String[] envp, String dir, int[] channels) throws IOException {
+ int execute(String[] cmdarray, String[] envp, String dir, IChannel[] channels) throws IOException {
return exec0(cmdarray, envp, dir, channels);
}
@@ -510,7 +653,7 @@ public class Spawner extends Process {
// Sync with spawner and notify when done.
status = waitFor(pid);
synchronized (Spawner.this) {
- isDone = true;
+ fState = Spawner.State.DONE;
Spawner.this.notifyAll();
}
}
diff --git a/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/spawner/SpawnerInputStream.java b/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/spawner/SpawnerInputStream.java
index 5e8e2926cc1..27533cc5fda 100644
--- a/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/spawner/SpawnerInputStream.java
+++ b/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/spawner/SpawnerInputStream.java
@@ -18,16 +18,17 @@ import java.io.IOException;
import java.io.InputStream;
import org.eclipse.cdt.internal.core.natives.Messages;
+import org.eclipse.cdt.utils.spawner.Spawner.IChannel;
class SpawnerInputStream extends InputStream {
- private int fd;
+ private IChannel channel;
/**
* From a Unix valid file descriptor set a Reader.
* @param fd file descriptor.
*/
- public SpawnerInputStream(int fd) {
- this.fd = fd;
+ public SpawnerInputStream(IChannel channel) {
+ this.channel = channel;
}
/**
@@ -48,7 +49,7 @@ class SpawnerInputStream extends InputStream {
*/
@Override
public int read(byte[] buf, int off, int len) throws IOException {
- if (fd == -1) {
+ if (channel == null) {
return -1;
}
if (buf == null) {
@@ -60,7 +61,7 @@ class SpawnerInputStream extends InputStream {
}
byte[] tmpBuf = off > 0 ? new byte[len] : buf;
- len = read0(fd, tmpBuf, len);
+ len = read0(channel, tmpBuf, len);
if (len <= 0)
return -1;
@@ -76,21 +77,21 @@ class SpawnerInputStream extends InputStream {
*/
@Override
public void close() throws IOException {
- if (fd == -1)
+ if (channel == null)
return;
- int status = close0(fd);
+ int status = close0(channel);
if (status == -1)
throw new IOException(Messages.Util_exception_closeError);
- fd = -1;
+ channel = null;
}
@Override
public int available() throws IOException {
- if (fd == -1) {
+ if (channel == null) {
return 0;
}
try {
- return available0(fd);
+ return available0(channel);
} catch (UnsatisfiedLinkError e) {
// for those platforms that do not implement available0
return super.available();
@@ -102,11 +103,11 @@ class SpawnerInputStream extends InputStream {
close();
}
- private native int read0(int fileDesc, byte[] buf, int len) throws IOException;
+ private native int read0(IChannel channel, byte[] buf, int len) throws IOException;
- private native int close0(int fileDesc) throws IOException;
+ private native int close0(IChannel channel) throws IOException;
- private native int available0(int fileDesc) throws IOException;
+ private native int available0(IChannel channel) throws IOException;
static {
System.loadLibrary("spawner"); //$NON-NLS-1$
diff --git a/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/spawner/SpawnerOutputStream.java b/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/spawner/SpawnerOutputStream.java
index 01863b491f0..a6e51e824da 100644
--- a/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/spawner/SpawnerOutputStream.java
+++ b/core/org.eclipse.cdt.core.native/src/org/eclipse/cdt/utils/spawner/SpawnerOutputStream.java
@@ -16,19 +16,22 @@ package org.eclipse.cdt.utils.spawner;
import java.io.IOException;
import java.io.OutputStream;
+import org.eclipse.cdt.utils.spawner.Spawner.IChannel;
+
/**
* @noextend This class is not intended to be subclassed by clients.
* @noinstantiate This class is not intended to be instantiated by clients.
*/
public class SpawnerOutputStream extends OutputStream {
- private int fd;
+ private IChannel channel;
/**
* From a Unix valid file descriptor set a Reader.
- * @param fd file descriptor.
+ * @param channel file descriptor.
+ * @since 6.0
*/
- public SpawnerOutputStream(int fd) {
- this.fd = fd;
+ public SpawnerOutputStream(IChannel channel) {
+ this.channel = channel;
}
/**
@@ -45,7 +48,7 @@ public class SpawnerOutputStream extends OutputStream {
}
byte[] tmpBuf = new byte[len];
System.arraycopy(b, off, tmpBuf, off, len);
- write0(fd, tmpBuf, len);
+ write0(channel, tmpBuf, len);
}
/**
@@ -66,12 +69,12 @@ public class SpawnerOutputStream extends OutputStream {
*/
@Override
public void close() throws IOException {
- if (fd == -1)
+ if (channel == null)
return;
- int status = close0(fd);
+ int status = close0(channel);
if (status == -1)
throw new IOException("close error"); //$NON-NLS-1$
- fd = -1;
+ channel = null;
}
@Override
@@ -79,9 +82,9 @@ public class SpawnerOutputStream extends OutputStream {
close();
}
- private native int write0(int fd, byte[] b, int len) throws IOException;
+ private native int write0(IChannel channel, byte[] b, int len) throws IOException;
- private native int close0(int fd);
+ private native int close0(IChannel channel);
static {
System.loadLibrary("spawner"); //$NON-NLS-1$
diff --git a/core/org.eclipse.cdt.core.tests/.classpath b/core/org.eclipse.cdt.core.tests/.classpath
index ead01df4a83..e38958c5cae 100644
--- a/core/org.eclipse.cdt.core.tests/.classpath
+++ b/core/org.eclipse.cdt.core.tests/.classpath
@@ -1,11 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="src" path="misc"/>
- <classpathentry kind="src" path="model"/>
- <classpathentry kind="src" path="parser"/>
- <classpathentry kind="src" path="suite"/>
- <classpathentry kind="src" path="regression"/>
+ <classpathentry kind="src" path="misc">
+ <attributes>
+ <attribute name="test" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="src" path="model">
+ <attributes>
+ <attribute name="test" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="src" path="parser">
+ <attributes>
+ <attribute name="test" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="src" path="suite">
+ <attributes>
+ <attribute name="test" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="src" path="regression">
+ <attributes>
+ <attribute name="test" value="true"/>
+ </attributes>
+ </classpathentry>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/core/org.eclipse.cdt.core.tests/.project b/core/org.eclipse.cdt.core.tests/.project
index 466f1c10b80..06a4ddffc04 100644
--- a/core/org.eclipse.cdt.core.tests/.project
+++ b/core/org.eclipse.cdt.core.tests/.project
@@ -20,11 +20,17 @@
<arguments>
</arguments>
</buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.pde.PluginNature</nature>
<nature>org.eclipse.cdt.core.cnature</nature>
<nature>org.eclipse.cdt.core.ccnature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
</natures>
</projectDescription>
diff --git a/core/org.eclipse.cdt.core.tests/.settings/.api_filters b/core/org.eclipse.cdt.core.tests/.settings/.api_filters
new file mode 100644
index 00000000000..3015faeefa9
--- /dev/null
+++ b/core/org.eclipse.cdt.core.tests/.settings/.api_filters
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<component id="org.eclipse.cdt.core.tests" version="2">
+ <resource path="parser/org/eclipse/cdt/core/parser/tests/scannerinfo/ExtendedScannerInfoSerializerDeserializerTest.java" type="org.eclipse.cdt.core.parser.tests.scannerinfo.ExtendedScannerInfoSerializerDeserializerTest">
+ <filter comment="This is ok - there is just no way of marking @noreference as having friends." id="640712815">
+ <message_arguments>
+ <message_argument value="ExtendedScannerInfo"/>
+ <message_argument value="ExtendedScannerInfoSerializerDeserializerTest"/>
+ <message_argument value="getIncludeExportPatterns()"/>
+ </message_arguments>
+ </filter>
+ </resource>
+</component>
diff --git a/core/org.eclipse.cdt.core.tests/.settings/org.eclipse.core.resources.prefs b/core/org.eclipse.cdt.core.tests/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/core/org.eclipse.cdt.core.tests/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/core/org.eclipse.cdt.core.tests/.settings/org.eclipse.jdt.core.prefs b/core/org.eclipse.cdt.core.tests/.settings/org.eclipse.jdt.core.prefs
index ad05599159f..5b1c443114d 100644
--- a/core/org.eclipse.cdt.core.tests/.settings/org.eclipse.jdt.core.prefs
+++ b/core/org.eclipse.cdt.core.tests/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/core/org.eclipse.cdt.core.tests/.settings/org.eclipse.jdt.ui.prefs b/core/org.eclipse.cdt.core.tests/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/core/org.eclipse.cdt.core.tests/.settings/org.eclipse.jdt.ui.prefs
+++ b/core/org.eclipse.cdt.core.tests/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/core/org.eclipse.cdt.core.tests/META-INF/MANIFEST.MF b/core/org.eclipse.cdt.core.tests/META-INF/MANIFEST.MF
index 4c051c50dca..80281c25445 100644
--- a/core/org.eclipse.cdt.core.tests/META-INF/MANIFEST.MF
+++ b/core/org.eclipse.cdt.core.tests/META-INF/MANIFEST.MF
@@ -1,8 +1,8 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
-Bundle-Name: org.eclipse.cdt.core.tests
+Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.core.tests; singleton:=true
-Bundle-Version: 5.4.0.qualifier
+Bundle-Version: 5.4.100.qualifier
Bundle-Activator: org.eclipse.cdt.core.testplugin.CTestPlugin
Export-Package: org.eclipse.cdt.core.cdescriptor.tests,
org.eclipse.cdt.core.envvar,
@@ -22,6 +22,7 @@ Export-Package: org.eclipse.cdt.core.cdescriptor.tests,
org.eclipse.cdt.core.parser.tests.rewrite.changegenerator,
org.eclipse.cdt.core.parser.tests.rewrite.comenthandler,
org.eclipse.cdt.core.parser.tests.scanner,
+ org.eclipse.cdt.core.parser.tests.scannerinfo,
org.eclipse.cdt.core.resources.tests,
org.eclipse.cdt.core.settings.model,
org.eclipse.cdt.core.suite,
@@ -35,14 +36,19 @@ Export-Package: org.eclipse.cdt.core.cdescriptor.tests,
Require-Bundle: org.eclipse.core.resources,
org.eclipse.cdt.core,
org.junit,
+ org.eclipse.jdt.junit4.runtime,
org.eclipse.core.runtime,
org.eclipse.ui.ide,
org.eclipse.ui,
org.eclipse.jface.text,
org.eclipse.core.filesystem,
org.eclipse.ltk.core.refactoring;bundle-version="3.4.0",
- org.hamcrest
+ org.hamcrest.core,
+ org.hamcrest.library,
+ com.google.gson;bundle-version="[2.8.6,3.0.0)"
Bundle-ActivationPolicy: lazy
-Bundle-Vendor: Eclipse CDT
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-Vendor: %providerName
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Automatic-Module-Name: org.eclipse.cdt.core.tests
+Bundle-Localization: plugin
+Import-Package: org.junit.jupiter.api;version="5.7.0"
diff --git a/core/org.eclipse.cdt.core.tests/about.html b/core/org.eclipse.cdt.core.tests/about.html
index 164f781a8fd..b3134865230 100644
--- a/core/org.eclipse.cdt.core.tests/about.html
+++ b/core/org.eclipse.cdt.core.tests/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/core/org.eclipse.cdt.core.tests/build.properties b/core/org.eclipse.cdt.core.tests/build.properties
index fe05959b56d..edc11222857 100644
--- a/core/org.eclipse.cdt.core.tests/build.properties
+++ b/core/org.eclipse.cdt.core.tests/build.properties
@@ -12,6 +12,7 @@
# IBM Corporation - initial API and implementation
###############################################################################
bin.includes = plugin.xml,\
+ plugin.properties,\
about.html,\
.,\
test.xml,\
diff --git a/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/cdescriptor/tests/CDescriptorTests.java b/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/cdescriptor/tests/CDescriptorTests.java
index 8c8b42f6f05..472d3650315 100644
--- a/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/cdescriptor/tests/CDescriptorTests.java
+++ b/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/cdescriptor/tests/CDescriptorTests.java
@@ -16,6 +16,12 @@
***********************************************************************/
package org.eclipse.cdt.core.cdescriptor.tests;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
+
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
@@ -32,7 +38,7 @@ import org.eclipse.cdt.core.ICOwnerInfo;
import org.eclipse.cdt.core.settings.model.ICProjectDescription;
import org.eclipse.cdt.core.settings.model.ICStorageElement;
import org.eclipse.cdt.core.testplugin.CTestPlugin;
-import org.eclipse.cdt.core.testplugin.util.BaseTestCase;
+import org.eclipse.cdt.core.testplugin.util.BaseTestCase5;
import org.eclipse.cdt.internal.core.pdom.PDOMManager;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
@@ -42,33 +48,20 @@ import org.eclipse.core.resources.IWorkspaceRoot;
import org.eclipse.core.resources.IWorkspaceRunnable;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
-import org.junit.Assert;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
-public class CDescriptorTests extends BaseTestCase {
+@Tag(BaseTestCase5.FLAKY_TEST_TAG)
+public class CDescriptorTests extends BaseTestCase5 {
static String projectId = CTestPlugin.PLUGIN_ID + ".TestProject";
static IProject fProject;
static CDescriptorListener listener = new CDescriptorListener();
static volatile CDescriptorEvent fLastEvent;
- /**
- * Constructor for CDescriptorTest.
- *
- * @param name
- */
- public CDescriptorTests(String name) {
- super(name);
- }
-
- public static Test suite() {
- TestSuite suite = new TestSuite(CDescriptorTests.class);
- return suite;
- }
-
- @Override
- protected void setUp() throws Exception {
+ @BeforeEach
+ protected void setUpLocal() throws Exception {
CTestPlugin.getWorkspace().run(new IWorkspaceRunnable() {
@Override
public void run(IProgressMonitor monitor) throws CoreException {
@@ -97,8 +90,8 @@ public class CDescriptorTests extends BaseTestCase {
}, null);
}
- @Override
- protected void tearDown() throws Exception {
+ @AfterEach
+ protected void tearDownLocal() throws Exception {
fProject.delete(true, true, null);
}
@@ -120,29 +113,32 @@ public class CDescriptorTests extends BaseTestCase {
}
}
+ @Test
public void testDescriptorCreation() throws Exception {
ICDescriptor desc = CCorePlugin.getDefault().getCProjectDescription(fProject, true);
- Assert.assertNotNull(fLastEvent);
- Assert.assertEquals(fLastEvent.getDescriptor(), desc);
- Assert.assertEquals(fLastEvent.getType(), CDescriptorEvent.CDTPROJECT_ADDED);
- Assert.assertEquals(fLastEvent.getFlags(), 0);
+ assertNotNull(fLastEvent);
+ assertEquals(fLastEvent.getDescriptor(), desc);
+ assertEquals(fLastEvent.getType(), CDescriptorEvent.CDTPROJECT_ADDED);
+ assertEquals(fLastEvent.getFlags(), 0);
fLastEvent = null;
- Assert.assertEquals(fProject, desc.getProject());
- Assert.assertEquals("*", desc.getPlatform());
+ assertEquals(fProject, desc.getProject());
+ assertEquals("*", desc.getPlatform());
}
+ @Test
public void testDescriptorOwner() throws Exception {
ICDescriptor desc = CCorePlugin.getDefault().getCProjectDescription(fProject, true);
ICOwnerInfo owner = desc.getProjectOwner();
- Assert.assertEquals(projectId, owner.getID());
- Assert.assertEquals("*", owner.getPlatform());
- Assert.assertEquals("C/C++ Test Project", owner.getName());
+ assertEquals(projectId, owner.getID());
+ assertEquals("*", owner.getPlatform());
+ assertEquals("C/C++ Test Project", owner.getName());
}
// Disabled this test because it fails every now and then and it tests deprecated API
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=340123
+ // @Test
public void _testConcurrentDescriptorCreation() throws Exception {
for (int i = 0; i < 100; i++) {
fProject.close(null);
@@ -179,6 +175,7 @@ public class CDescriptorTests extends BaseTestCase {
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=185930
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=193503
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=196118
+ @Test
public void testConcurrentDescriptorModification() throws Exception {
int lastLength = 0;
for (int i = 0; i < 100; ++i) {
@@ -230,12 +227,12 @@ public class CDescriptorTests extends BaseTestCase {
} catch (InterruptedException e) {
}
}
- assertNull("Exception occurred: " + exception[j], exception[j]);
+ assertNull(exception[j], "Exception occurred: " + exception[j]);
}
ICDescriptor desc = CCorePlugin.getDefault().getCProjectDescription(fProject, true);
int lengthAfter = desc.getProjectStorageElement("testElement").getChildren().length;
lastLength += threads.length; // Update last lengths to what we expect
- assertEquals("Iteration count: " + i, lastLength, lengthAfter);
+ assertEquals(lastLength, lengthAfter, "Iteration count: " + i);
fLastEvent = null;
}
@@ -245,6 +242,7 @@ public class CDescriptorTests extends BaseTestCase {
* This test should pass as two threads, operating on the different storage elements
* (outside of an operation) should be safe.
*/
+ @Test
public void testConcurrentDifferentStorageElementModification() throws Exception {
for (int i = 0; i < 100; ++i) {
Thread t = new Thread() {
@@ -273,15 +271,16 @@ public class CDescriptorTests extends BaseTestCase {
fLastEvent = null;
}
- Assert.assertEquals(100, CCorePlugin.getDefault().getCProjectDescription(fProject, false)
+ assertEquals(100, CCorePlugin.getDefault().getCProjectDescription(fProject, false)
.getProjectStorageElement("testElement4").getChildren().length);
- Assert.assertEquals(100, CCorePlugin.getDefault().getCProjectDescription(fProject, false)
+ assertEquals(100, CCorePlugin.getDefault().getCProjectDescription(fProject, false)
.getProjectStorageElement("testElement5").getChildren().length);
}
/*
* Tests that (non-structural) changes to the storage element tree work as expected.
*/
+ @Test
public void testConcurrentSameStorageElementModification() throws Exception {
for (int i = 0; i < 100; ++i) {
Thread t = new Thread() {
@@ -310,17 +309,18 @@ public class CDescriptorTests extends BaseTestCase {
fLastEvent = null;
}
- Assert.assertEquals(200, CCorePlugin.getDefault().getCProjectDescription(fProject, false)
+ assertEquals(200, CCorePlugin.getDefault().getCProjectDescription(fProject, false)
.getProjectStorageElement("testElement6").getChildren().length);
}
/*
* Tests deadlock when accessing c project description concurrently from two threads
*/
+ @Test
public void testDeadlockDuringProjectCreation() throws Exception {
for (int i = 0; i < 10; ++i) {
- tearDown();
- setUp();
+ tearDownLocal();
+ setUpLocal();
Thread t = new Thread() {
@Override
public void run() {
@@ -348,33 +348,37 @@ public class CDescriptorTests extends BaseTestCase {
}
}
+ @Test
public void testDescriptorConversion() {
}
+ @Test
public void testExtensionCreation() throws Exception {
ICDescriptor desc = CCorePlugin.getDefault().getCProjectDescription(fProject, true);
ICExtensionReference extRef = desc.create("org.eclipse.cdt.testextension", "org.eclipse.cdt.testextensionID");
- Assert.assertNotNull(fLastEvent);
- Assert.assertEquals(fLastEvent.getDescriptor(), desc);
- Assert.assertEquals(fLastEvent.getType(), CDescriptorEvent.CDTPROJECT_CHANGED);
- Assert.assertEquals(fLastEvent.getFlags(), CDescriptorEvent.EXTENSION_CHANGED);
+ assertNotNull(fLastEvent);
+ assertEquals(fLastEvent.getDescriptor(), desc);
+ assertEquals(fLastEvent.getType(), CDescriptorEvent.CDTPROJECT_CHANGED);
+ assertEquals(fLastEvent.getFlags(), CDescriptorEvent.EXTENSION_CHANGED);
fLastEvent = null;
- Assert.assertEquals("org.eclipse.cdt.testextension", extRef.getExtension());
- Assert.assertEquals("org.eclipse.cdt.testextensionID", extRef.getID());
+ assertEquals("org.eclipse.cdt.testextension", extRef.getExtension());
+ assertEquals("org.eclipse.cdt.testextensionID", extRef.getID());
}
+ @Test
public void testExtensionGet() throws Exception {
ICDescriptor desc = CCorePlugin.getDefault().getCProjectDescription(fProject, true);
desc.create("org.eclipse.cdt.testextension", "org.eclipse.cdt.testextensionID");
ICExtensionReference extRef[] = desc.get("org.eclipse.cdt.testextension");
- Assert.assertEquals("org.eclipse.cdt.testextension", extRef[0].getExtension());
- Assert.assertEquals("org.eclipse.cdt.testextensionID", extRef[0].getID());
+ assertEquals("org.eclipse.cdt.testextension", extRef[0].getExtension());
+ assertEquals("org.eclipse.cdt.testextensionID", extRef[0].getID());
}
+ @Test
public void testExtensionData() throws Exception {
ICDescriptor desc = CCorePlugin.getDefault().getCProjectDescription(fProject, true);
desc.create("org.eclipse.cdt.testextension", "org.eclipse.cdt.testextensionID");
@@ -382,17 +386,18 @@ public class CDescriptorTests extends BaseTestCase {
ICExtensionReference extRef[] = desc.get("org.eclipse.cdt.testextension");
extRef[0].setExtensionData("testKey", "testValue");
- Assert.assertNotNull(fLastEvent);
- Assert.assertEquals(fLastEvent.getDescriptor(), desc);
- Assert.assertEquals(fLastEvent.getType(), CDescriptorEvent.CDTPROJECT_CHANGED);
- Assert.assertEquals(fLastEvent.getFlags(), 0);
+ assertNotNull(fLastEvent);
+ assertEquals(fLastEvent.getDescriptor(), desc);
+ assertEquals(fLastEvent.getType(), CDescriptorEvent.CDTPROJECT_CHANGED);
+ assertEquals(fLastEvent.getFlags(), 0);
fLastEvent = null;
- Assert.assertEquals("testValue", extRef[0].getExtensionData("testKey"));
+ assertEquals("testValue", extRef[0].getExtensionData("testKey"));
extRef[0].setExtensionData("testKey", null);
- Assert.assertEquals(null, extRef[0].getExtensionData("testKey"));
+ assertEquals(null, extRef[0].getExtensionData("testKey"));
}
+ @Test
public void testExtensionRemove() throws Exception {
ICDescriptor desc = CCorePlugin.getDefault().getCProjectDescription(fProject, true);
desc.create("org.eclipse.cdt.testextension", "org.eclipse.cdt.testextensionID");
@@ -400,43 +405,46 @@ public class CDescriptorTests extends BaseTestCase {
ICExtensionReference extRef[] = desc.get("org.eclipse.cdt.testextension");
desc.remove(extRef[0]);
- Assert.assertNotNull(fLastEvent);
- Assert.assertEquals(fLastEvent.getDescriptor(), desc);
- Assert.assertEquals(fLastEvent.getType(), CDescriptorEvent.CDTPROJECT_CHANGED);
- Assert.assertEquals(fLastEvent.getFlags(), CDescriptorEvent.EXTENSION_CHANGED);
+ assertNotNull(fLastEvent);
+ assertEquals(fLastEvent.getDescriptor(), desc);
+ assertEquals(fLastEvent.getType(), CDescriptorEvent.CDTPROJECT_CHANGED);
+ assertEquals(fLastEvent.getFlags(), CDescriptorEvent.EXTENSION_CHANGED);
fLastEvent = null;
}
+ @Test
public void testProjectDataCreate() throws Exception {
ICDescriptor desc = CCorePlugin.getDefault().getCProjectDescription(fProject, true);
ICStorageElement data = desc.getProjectStorageElement("testElement");
data.createChild("test");
desc.saveProjectData();
- Assert.assertNotNull(fLastEvent);
- Assert.assertEquals(fLastEvent.getDescriptor(), desc);
- Assert.assertEquals(fLastEvent.getType(), CDescriptorEvent.CDTPROJECT_CHANGED);
- Assert.assertEquals(fLastEvent.getFlags(), 0);
+ assertNotNull(fLastEvent);
+ assertEquals(fLastEvent.getDescriptor(), desc);
+ assertEquals(fLastEvent.getType(), CDescriptorEvent.CDTPROJECT_CHANGED);
+ assertEquals(fLastEvent.getFlags(), 0);
fLastEvent = null;
}
+ @Test
public void testProjectDataDelete() throws Exception {
ICDescriptor desc = CCorePlugin.getDefault().getCProjectDescription(fProject, true);
ICStorageElement data = desc.getProjectStorageElement("testElement");
data.createChild("test");
ICStorageElement[] list = data.getChildrenByName("test");
- Assert.assertEquals(1, list.length);
+ assertEquals(1, list.length);
data.removeChild(list[0]);
desc.saveProjectData();
- Assert.assertNotNull(fLastEvent);
- Assert.assertEquals(fLastEvent.getDescriptor(), desc);
- Assert.assertEquals(fLastEvent.getType(), CDescriptorEvent.CDTPROJECT_CHANGED);
- Assert.assertEquals(fLastEvent.getFlags(), 0);
+ assertNotNull(fLastEvent);
+ assertEquals(fLastEvent.getDescriptor(), desc);
+ assertEquals(fLastEvent.getType(), CDescriptorEvent.CDTPROJECT_CHANGED);
+ assertEquals(fLastEvent.getFlags(), 0);
fLastEvent = null;
}
+ @Test
public void testCProjectDescriptionDescriptorInteraction() throws Exception {
for (int i = 1; i < 100; i++) {
// Create a descriptor with some test data
@@ -469,6 +477,7 @@ public class CDescriptorTests extends BaseTestCase {
}
}
+ @Test
public void testAccumulatingBlankLinesInProjectData() throws Exception {
ICDescriptor desc = CCorePlugin.getDefault().getCProjectDescription(fProject, true);
ICStorageElement data = desc.getProjectStorageElement("testElement");
@@ -491,8 +500,8 @@ public class CDescriptorTests extends BaseTestCase {
String dotCProject2 = readDotCProjectFile(fProject);
long mtime2 = fProject.getFile(".cproject").getLocalTimeStamp();
- assertEquals("Difference in .cproject file", dotCProject1, dotCProject2);
- assertTrue(".cproject file has been written", mtime1 == mtime2);
+ assertEquals(dotCProject1, dotCProject2, "Difference in .cproject file");
+ assertTrue(mtime1 == mtime2, ".cproject file has been written");
// do it a second time - just to be sure
fProject.close(null);
@@ -508,8 +517,8 @@ public class CDescriptorTests extends BaseTestCase {
String dotCProject3 = readDotCProjectFile(fProject);
long mtime3 = fProject.getFile(".cproject").getLocalTimeStamp();
- assertEquals("Difference in .cproject file", dotCProject2, dotCProject3);
- assertTrue(".cproject file has been written", mtime2 == mtime3);
+ assertEquals(dotCProject2, dotCProject3, "Difference in .cproject file");
+ assertTrue(mtime2 == mtime3, ".cproject file has been written");
}
/**
diff --git a/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/errorparsers/tests/ErrorParserTestSuite.java b/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/errorparsers/tests/ErrorParserTestSuite.java
new file mode 100644
index 00000000000..1fa2c479292
--- /dev/null
+++ b/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/errorparsers/tests/ErrorParserTestSuite.java
@@ -0,0 +1,41 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2010 QNX Software Systems
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.internal.errorparsers.tests;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * @deprecated In preparation for moving to JUnit5 test suites are deprecated. See Bug 569839
+ */
+@Deprecated
+public class ErrorParserTestSuite {
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(ErrorParserTestSuite.class.getName());
+
+ // Just add more test cases here as you create them for
+ // each class being tested
+ suite.addTest(GCCErrorParserTests.suite());
+ suite.addTest(GLDErrorParserTests.suite());
+ suite.addTest(MakeErrorParserTests.suite());
+ suite.addTest(FileBasedErrorParserTests.suite());
+ suite.addTest(ErrorParserManagerTest.suite());
+ suite.addTest(ErrorParserFileMatchingTest.suite());
+ suite.addTest(ErrorParserEfsFileMatchingTest.suite());
+ suite.addTest(RegexErrorParserTests.suite());
+ return suite;
+ }
+
+}
diff --git a/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/errorparsers/tests/ErrorParserTests.java b/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/errorparsers/tests/ErrorParserTests.java
deleted file mode 100644
index b2c9e0762dc..00000000000
--- a/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/errorparsers/tests/ErrorParserTests.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2010 QNX Software Systems
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.internal.errorparsers.tests;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-public class ErrorParserTests {
-
- public static Test suite() {
- TestSuite suite = new TestSuite(ErrorParserTests.class.getName());
-
- // Just add more test cases here as you create them for
- // each class being tested
- suite.addTest(GCCErrorParserTests.suite());
- suite.addTest(GLDErrorParserTests.suite());
- suite.addTest(MakeErrorParserTests.suite());
- suite.addTest(FileBasedErrorParserTests.suite());
- suite.addTest(ErrorParserManagerTest.suite());
- suite.addTest(ErrorParserFileMatchingTest.suite());
- suite.addTest(ErrorParserEfsFileMatchingTest.suite());
- suite.addTest(RegexErrorParserTests.suite());
- return suite;
- }
-
-}
diff --git a/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/errorparsers/tests/GCCErrorParserTests.java b/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/errorparsers/tests/GCCErrorParserTests.java
index 1514d2fde78..e18f30268f7 100644
--- a/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/errorparsers/tests/GCCErrorParserTests.java
+++ b/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/errorparsers/tests/GCCErrorParserTests.java
@@ -206,4 +206,34 @@ public class GCCErrorParserTests extends GenericErrorParserTests {
new String[] { GCC_ERROR_PARSER_ID });
}
+ public void testGccErrorMessages_TemplateInstantiation_bug500798() throws IOException {
+ runParserTest(new String[] {
+ "test.hpp:309:18: [ skipping 2 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]",
+ "test2.hpp:83:60: required from here",
+ "test3.hpp:78:38: warning: conversion from 'long int' to 'float' may change value [-Wconversion]" }, 0, // errors
+ 1, //warnings
+ 2, //infos
+ new String[] { "test.hpp", "test2.hpp", "test3.hpp" },
+ new String[] { "[ skipping 2 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]",
+ "required from here", "conversion from 'long int' to 'float' may change value [-Wconversion]" },
+ new String[] { GCC_ERROR_PARSER_ID });
+ }
+
+ public void testGccErrorMessages_InConstexprExpansion() throws IOException {
+ runParserTest(
+ new String[] { "../can/CANBus.h: In instantiation of 'constexpr void Test::setupBitrate(T)':",
+ "../can/CANBus.h:113:6: required from 'static auto& Test::getInstance()'",
+ "../can/CAN.cpp:19:27: required from here",
+ "../can/CANBus.h:72:17: in 'constexpr' expansion of 'instance.Test::Test()'",
+ "../can/CANBus.h:173:92: warning: unused parameter 'bitrate' [-Wunused-parameter]",
+ " 173 | constexpr void setupBitrate(T bitrate) noexcept {" },
+ 0, // errors
+ 1, //warnings
+ 3, //infos
+ new String[] { "CAN.cpp", "CANBus.h" },
+ new String[] { "required from 'static auto& Test::getInstance()'", "required from here",
+ "in 'constexpr' expansion of 'instance.Test::Test()'",
+ "unused parameter 'bitrate' [-Wunused-parameter]" },
+ new String[] { GCC_ERROR_PARSER_ID });
+ }
}
diff --git a/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/errorparsers/tests/GLDErrorParserTests.java b/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/errorparsers/tests/GLDErrorParserTests.java
index 599de3c4d5c..277a293137e 100644
--- a/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/errorparsers/tests/GLDErrorParserTests.java
+++ b/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/errorparsers/tests/GLDErrorParserTests.java
@@ -38,12 +38,13 @@ public class GLDErrorParserTests extends GenericErrorParserTests {
new String[] { "make -k all", "gcc -o hallo.o main.c libfoo.a",
"main.c(.text+0x14): undefined reference to `foo()'",
"main.o(.rodata+0x14): undefined reference to `something'",
+ "(.text.myfunc+0x42): undefined reference to `bar'",
"make: Target `all' not remade because of errors.", },
- 2, // errors
+ 3, // errors
0, // warnings
0, // Infos
- new String[] { "main.c", "main.o" },
- new String[] { "undefined reference to `foo()'", "undefined reference to `something'" },
+ new String[] { "main.c", "main.o", "project" }, new String[] { "undefined reference to `foo()'",
+ "undefined reference to `something'", "undefined reference to `bar'" },
new String[] { GLD_ERROR_PARSER_ID });
}
@@ -53,12 +54,13 @@ public class GLDErrorParserTests extends GenericErrorParserTests {
new String[] { "make -k all", "gcc -o hallo.o main.c libfoo.a",
"main.c:(.text+0x14): undefined reference to `foo()'",
"main.o:(.rodata+0x14): undefined reference to `something'",
+ "(.text.myfunc+0x42): undefined reference to `bar'",
"make: Target `all' not remade because of errors.", },
- 2, // errors
+ 3, // errors
0, // warnings
0, // Infos
- new String[] { "main.c", "main.o" },
- new String[] { "undefined reference to `foo()'", "undefined reference to `something'" },
+ new String[] { "main.c", "main.o", "project" }, new String[] { "undefined reference to `foo()'",
+ "undefined reference to `something'", "undefined reference to `bar'" },
new String[] { GLD_ERROR_PARSER_ID });
}
@@ -104,4 +106,32 @@ public class GLDErrorParserTests extends GenericErrorParserTests {
"cannot find -ljpeg", },
new String[] { GLD_ERROR_PARSER_ID });
}
+
+ public void testLinkerMessages_bug495661() throws IOException {
+ runParserTest(
+ // new style: colons before sections
+ new String[] { "make all ",
+ // @formatter:off
+ "Building file: ../src/a.cpp",
+ "Invoking: GCC C++ Compiler",
+ "g++ -std=c++0x -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF\"src/a.d\" -MT\"src/a.o\" -o \"src/a.o\" \"../src/a.cpp\"",
+ "Finished building: ../src/a.cpp",
+ " ",
+ "Building target: parser",
+ "Invoking: GCC C++ Linker",
+ "g++ -o \"a\" ./src/a.o ",
+ "/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: ./src/a.o: in function `TLS wrapper function for A::max_compatdb_time':",
+ "a.cpp:(.text._ZTWN1A17max_compatdb_timeE[_ZTWN1A17max_compatdb_timeE]+0x21): undefined reference to `A::max_compatdb_time'",
+ "collect2: error: ld returned 1 exit status",
+ "make: *** [makefile:47: parser] Error 1",
+ "\"make all\" terminated with exit code 2. Build might be incomplete.", },
+ // @formatter:on
+ 2, // errors
+ 0, // warnings
+ 0, // Infos
+ new String[] { "a.cpp", "project" },
+ new String[] { "./src/a.o: in function `TLS wrapper function for A::max_compatdb_time':",
+ "undefined reference to `A::max_compatdb_time'" },
+ new String[] { GLD_ERROR_PARSER_ID });
+ }
}
diff --git a/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/errorparsers/tests/GenericErrorParserTests.java b/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/errorparsers/tests/GenericErrorParserTests.java
index d7f3eeba67b..48e9054ecd7 100644
--- a/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/errorparsers/tests/GenericErrorParserTests.java
+++ b/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/errorparsers/tests/GenericErrorParserTests.java
@@ -140,9 +140,13 @@ public abstract class GenericErrorParserTests extends TestCase {
if (expectedFileNames != null) {
assertEquals(expectedFileNames.length, markerGenerator.uniqFiles.size());
for (int i = 0; i < expectedFileNames.length; i++) {
- // Keep in mind that uniqFiles get alphabetically sorted
- IPath path = ((IFile) markerGenerator.uniqFiles.get(i)).getLocation();
- assertEquals(expectedFileNames[i], path.lastSegment());
+ IResource resource = markerGenerator.uniqFiles.get(i);
+ // Markers for errors without source file has resource of type IProject
+ if (!(resource instanceof IProject)) {
+ assertTrue(resource instanceof IFile);
+ // Keep in mind that uniqFiles get alphabetically sorted
+ assertEquals(expectedFileNames[i], resource.getLocation().lastSegment());
+ }
}
}
diff --git a/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/preferences/tests/ScopeOfBuildConfigResourceChangesPreferenceTests.java b/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/preferences/tests/ScopeOfBuildConfigResourceChangesPreferenceTests.java
new file mode 100644
index 00000000000..e65d53c0792
--- /dev/null
+++ b/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/preferences/tests/ScopeOfBuildConfigResourceChangesPreferenceTests.java
@@ -0,0 +1,77 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Simeon Andreev and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Simeon Andreev - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.preferences.tests;
+
+import org.eclipse.cdt.core.CCorePlugin;
+import org.eclipse.cdt.core.CCorePreferenceConstants;
+import org.eclipse.cdt.core.resources.ACBuilder;
+import org.eclipse.core.runtime.preferences.DefaultScope;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * Test case for Bug 529023: Cannot set build.proj.ref.configs.enabled via
+ * plugin_customization.ini.
+ *
+ * @author Simeon Andreev
+ */
+public class ScopeOfBuildConfigResourceChangesPreferenceTests extends TestCase {
+
+ private static final String PREFERENCE_NAME = CCorePreferenceConstants.PREF_BUILD_CONFIGS_RESOURCE_CHANGES;
+
+ private boolean oldInstanceScopeValue;
+ private boolean oldDefaultScopeValue;
+
+ public static Test suite() {
+ return new TestSuite(ScopeOfBuildConfigResourceChangesPreferenceTests.class);
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ oldInstanceScopeValue = ACBuilder.buildConfigResourceChanges();
+ IEclipsePreferences defaultScopePreferences = defaultScopePreferences();
+ oldDefaultScopeValue = defaultScopePreferences.getBoolean(PREFERENCE_NAME, oldInstanceScopeValue);
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ ACBuilder.setBuildConfigResourceChanges(oldInstanceScopeValue);
+ IEclipsePreferences defaultScopePreferences = defaultScopePreferences();
+ defaultScopePreferences.putBoolean(PREFERENCE_NAME, oldDefaultScopeValue);
+
+ super.tearDown();
+ }
+
+ private static IEclipsePreferences defaultScopePreferences() {
+ return DefaultScope.INSTANCE.getNode(CCorePlugin.PLUGIN_ID);
+ }
+
+ /**
+ * Validates that {@link ACBuilder#buildConfigResourceChanges()} also takes
+ * {@link DefaultScope} into account.
+ */
+ public void testSettingPreferenceViaDefaultScope() throws Exception {
+ IEclipsePreferences defaultScopePreferences = defaultScopePreferences();
+ defaultScopePreferences.putBoolean(PREFERENCE_NAME, true);
+
+ boolean buildConfigResourceChanges = ACBuilder.buildConfigResourceChanges();
+ assertTrue("unable to set preference \"" + PREFERENCE_NAME + "\" via default scope",
+ buildConfigResourceChanges);
+ }
+}
diff --git a/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/preferences/tests/TestScopeOfBuildConfigResourceChangesPreference.java b/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/preferences/tests/TestScopeOfBuildConfigResourceChangesPreference.java
deleted file mode 100644
index 8d681ce381d..00000000000
--- a/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/preferences/tests/TestScopeOfBuildConfigResourceChangesPreference.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 Simeon Andreev and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Simeon Andreev - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.preferences.tests;
-
-import org.eclipse.cdt.core.CCorePlugin;
-import org.eclipse.cdt.core.CCorePreferenceConstants;
-import org.eclipse.cdt.core.resources.ACBuilder;
-import org.eclipse.core.runtime.preferences.DefaultScope;
-import org.eclipse.core.runtime.preferences.IEclipsePreferences;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-/**
- * Test case for Bug 529023: Cannot set build.proj.ref.configs.enabled via
- * plugin_customization.ini.
- *
- * @author Simeon Andreev
- */
-public class TestScopeOfBuildConfigResourceChangesPreference extends TestCase {
-
- private static final String PREFERENCE_NAME = CCorePreferenceConstants.PREF_BUILD_CONFIGS_RESOURCE_CHANGES;
-
- private boolean oldInstanceScopeValue;
- private boolean oldDefaultScopeValue;
-
- public static Test suite() {
- return new TestSuite(TestScopeOfBuildConfigResourceChangesPreference.class);
- }
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
-
- oldInstanceScopeValue = ACBuilder.buildConfigResourceChanges();
- IEclipsePreferences defaultScopePreferences = defaultScopePreferences();
- oldDefaultScopeValue = defaultScopePreferences.getBoolean(PREFERENCE_NAME, oldInstanceScopeValue);
- }
-
- @Override
- protected void tearDown() throws Exception {
- ACBuilder.setBuildConfigResourceChanges(oldInstanceScopeValue);
- IEclipsePreferences defaultScopePreferences = defaultScopePreferences();
- defaultScopePreferences.putBoolean(PREFERENCE_NAME, oldDefaultScopeValue);
-
- super.tearDown();
- }
-
- private static IEclipsePreferences defaultScopePreferences() {
- return DefaultScope.INSTANCE.getNode(CCorePlugin.PLUGIN_ID);
- }
-
- /**
- * Validates that {@link ACBuilder#buildConfigResourceChanges()} also takes
- * {@link DefaultScope} into account.
- */
- public void testSettingPreferenceViaDefaultScope() throws Exception {
- IEclipsePreferences defaultScopePreferences = defaultScopePreferences();
- defaultScopePreferences.putBoolean(PREFERENCE_NAME, true);
-
- boolean buildConfigResourceChanges = ACBuilder.buildConfigResourceChanges();
- assertTrue("unable to set preference \"" + PREFERENCE_NAME + "\" via default scope",
- buildConfigResourceChanges);
- }
-}
diff --git a/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/winreg/tests/WinRegTests.java b/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/winreg/tests/WinRegTests.java
index b0c3d005b5c..d9be3a28dab 100644
--- a/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/winreg/tests/WinRegTests.java
+++ b/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/winreg/tests/WinRegTests.java
@@ -30,7 +30,7 @@ public class WinRegTests extends TestCase {
assertEquals("C:\\Program Files", value);
} else {
// Should be null on non-Windows platforms
- assertNotNull(registry);
+ assertNull(registry);
}
}
@@ -43,7 +43,7 @@ public class WinRegTests extends TestCase {
assertNull(value);
} else {
// Should be null on non-Windows platforms
- assertNotNull(registry);
+ assertNull(registry);
}
}
}
diff --git a/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/utils/CdtVariableResolverTest.java b/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/utils/CdtVariableResolverTest.java
index 362336f1c6a..5d202c7894a 100644
--- a/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/utils/CdtVariableResolverTest.java
+++ b/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/utils/CdtVariableResolverTest.java
@@ -13,6 +13,8 @@
*******************************************************************************/
package org.eclipse.cdt.utils;
+import static org.junit.Assert.assertNotEquals;
+
import org.eclipse.cdt.core.cdtvariables.CdtVariableException;
import org.eclipse.cdt.core.cdtvariables.ICdtVariableStatus;
import org.eclipse.cdt.utils.cdtvariables.CdtVariableResolver;
@@ -23,6 +25,7 @@ import junit.framework.TestCase;
import junit.framework.TestSuite;
public class CdtVariableResolverTest extends TestCase {
+ private static String acceptedChars = "\\<>&é\"'(§è!çà|@#^¨* []?./+,;:=~)";
public static Test suite() {
return new TestSuite(CdtVariableResolverTest.class);
@@ -35,12 +38,30 @@ public class CdtVariableResolverTest extends TestCase {
if (macroName.equals("null")) {
return null;
}
+ if (macroName.equals("op")) {
+ return "op";
+ }
+ if (macroName.equals("ro")) {
+ return "ro";
+ }
if (macroName.equals("loop")) {
return "${LOOP}";
}
if (macroName.equals("LOOP")) {
return "${loop}";
}
+ if (macroName.equals("VAR1")) {
+ return "var1";
+ }
+ if (macroName.equals("VAR2")) {
+ return "var\n2";
+ }
+ if (macroName.equals("VAR3")) {
+ return "var3";
+ }
+ if (macroName.equals(acceptedChars)) {
+ return "OK";
+ }
if (macroName.equals("throw")) {
throw new CdtVariableException(ICdtVariableStatus.TYPE_MACRO_UNDEFINED, null, null, null);
}
@@ -64,50 +85,62 @@ public class CdtVariableResolverTest extends TestCase {
private MockSubstitutor mockSubstitutor = new MockSubstitutor();
+ //wrapper method to make code easier to read
+ private String resolveToString(String key) throws CdtVariableException {
+ return CdtVariableResolver.resolveToString(key, mockSubstitutor);
+ }
+
public void testResolveToString() throws CdtVariableException {
- assertEquals("", CdtVariableResolver.resolveToString(null, mockSubstitutor));
- assertEquals("", CdtVariableResolver.resolveToString("", mockSubstitutor));
- assertEquals("Text", CdtVariableResolver.resolveToString("Text", mockSubstitutor));
- assertEquals("#Macro#", CdtVariableResolver.resolveToString("${Macro}", mockSubstitutor));
- assertEquals("", CdtVariableResolver.resolveToString("${}", mockSubstitutor));
- assertEquals("${Nomacro", CdtVariableResolver.resolveToString("${Nomacro", mockSubstitutor));
- assertEquals("Nomacro}", CdtVariableResolver.resolveToString("Nomacro}", mockSubstitutor));
- assertEquals("Text/#Macro#", CdtVariableResolver.resolveToString("Text/${Macro}", mockSubstitutor));
- assertEquals("#Macro#/Text", CdtVariableResolver.resolveToString("${Macro}/Text", mockSubstitutor));
- assertEquals("#Macro1#/#Macro2#", CdtVariableResolver.resolveToString("${Macro1}/${Macro2}", mockSubstitutor));
- assertEquals("${Macro}", CdtVariableResolver.resolveToString("\\${Macro}", mockSubstitutor));
- assertEquals("${Macro}:#Macro#", CdtVariableResolver.resolveToString("\\${Macro}:${Macro}", mockSubstitutor));
- assertEquals("\\#Macro#", CdtVariableResolver.resolveToString("\\\\${Macro}", mockSubstitutor));
- assertEquals("\\${Macro}", CdtVariableResolver.resolveToString("\\\\\\${Macro}", mockSubstitutor));
- assertEquals("C:\\tmp\\", CdtVariableResolver.resolveToString("C:\\tmp\\", mockSubstitutor));
-
- assertEquals("#workspace_loc:#Macro##",
- CdtVariableResolver.resolveToString("${workspace_loc:${Macro}}", mockSubstitutor));
- assertEquals("#workspace_loc:#Macro1#/#Macro2##",
- CdtVariableResolver.resolveToString("${workspace_loc:${Macro1}/${Macro2}}", mockSubstitutor));
+ assertEquals("", resolveToString(null));
+ assertEquals("", resolveToString(""));
+ assertEquals("Text", resolveToString("Text"));
+ assertEquals("#Macro#", resolveToString("${Macro}"));
+ assertEquals("", resolveToString("${}"));
+ assertEquals("${Nomacro", resolveToString("${Nomacro"));
+ assertEquals("Nomacro}", resolveToString("Nomacro}"));
+ assertEquals("Text/#Macro#", resolveToString("Text/${Macro}"));
+ assertEquals("#Macro#/Text", resolveToString("${Macro}/Text"));
+ assertEquals("#Macro1#/#Macro2#", resolveToString("${Macro1}/${Macro2}"));
+ assertEquals("#=Macro#", resolveToString("${=Macro}"));
+ assertEquals("#=Macro#:#Macro#", resolveToString("${=Macro}:${Macro}"));
+ assertEquals("\\#Macro#", resolveToString("\\${Macro}"));
+ assertEquals("\\#=Macro#", resolveToString("\\${=Macro}"));
+ assertEquals("Text/#=Macro#", resolveToString("Text/${=Macro}"));
+ assertEquals("Text/#=Macro#text", resolveToString("Text/${=Macro}text"));
+ assertEquals("Text/#Macro#text", resolveToString("Text/${Macro}text"));
+ assertEquals("Text/#Macro#text", resolveToString("Text/${Mac${ro}}text"));
+ assertEquals("C:\\tmp\\", resolveToString("C:\\tmp\\"));
+ assertEquals("OK", resolveToString("${" + acceptedChars + "}"));
+ //resolve should only resolve 1 level deep
+ assertNotEquals(resolveToString("${LOOP}"), resolveToString(resolveToString("${LOOP}")));
+
+ assertEquals("#workspace_loc:#Macro##", resolveToString("${workspace_loc:${Macro}}"));
+ assertEquals("#workspace_loc:#Macro1#/#Macro2##", resolveToString("${workspace_loc:${Macro1}/${Macro2}}"));
assertEquals("#workspace_loc:#project_loc:/#Macro###",
- CdtVariableResolver.resolveToString("${workspace_loc:${project_loc:/${Macro}}}", mockSubstitutor));
+ resolveToString("${workspace_loc:${project_loc:/${Macro}}}"));
+ assertEquals("${ignored}\n${multiline}", resolveToString("${ignored}\n${multiline}"));
+ assertEquals("var1 var\n2 var3", resolveToString("${VAR1} ${VAR2} ${VAR3}"));
}
public void testExceptions() throws CdtVariableException {
// test exceptions
try {
- assertEquals("Unreacheable", CdtVariableResolver.resolveToString("${null}", mockSubstitutor));
+ assertEquals("Unreacheable", resolveToString("${null}"));
fail("Exception expected");
} catch (CdtVariableException e) {
// expected behavior
}
try {
- assertEquals("Unreacheable", CdtVariableResolver.resolveToString("${throw}", mockSubstitutor));
+ assertEquals("Unreacheable", resolveToString("${throw}"));
fail("Exception expected");
} catch (CdtVariableException e) {
// expected behavior
}
// make sure there is no infinite loop
- assertEquals("${LOOP}", CdtVariableResolver.resolveToString("${loop}", mockSubstitutor));
+ assertEquals("${LOOP}", resolveToString("${loop}"));
}
public void testAsList() throws CdtVariableException {
diff --git a/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/utils/elf/ElfTest.java b/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/utils/elf/ElfTest.java
new file mode 100644
index 00000000000..ba525d7db01
--- /dev/null
+++ b/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/utils/elf/ElfTest.java
@@ -0,0 +1,164 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Ericsson
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.utils.elf;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import java.io.IOException;
+import java.math.BigInteger;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import org.eclipse.cdt.core.ISymbolReader;
+import org.eclipse.cdt.utils.elf.Elf.Attribute;
+import org.eclipse.cdt.utils.elf.Elf.Section;
+import org.eclipse.cdt.utils.elf.Elf.Symbol;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameters;
+
+/**
+ * Elf reader test
+ * @author Matthew Khouzam
+ */
+@RunWith(Parameterized.class)
+public class ElfTest {
+
+ private static final String SYMTAB_NAME = ".symtab";
+
+ @Parameters(name = "{0}")
+ public static Collection<Object[]> elfArchitectures() {
+ return Arrays.asList(new Object[][] {
+ { "BE32", "ppc", "resources/elf/unit_test/simple-be32.elf", 35, "0x00000000", "0x100001a8", 75,
+ "0x10000518" },
+ { "BE64", "ppc64", "resources/elf/unit_test/simple-be64.elf", 34, "0x0000000000000000",
+ "0x0000000010000240", 69, "0x000000001001fea0" },
+ { "LE32", "x86", "resources/elf/unit_test/simple-le32.elf", 36, "0x00000000", "0x080481cc", 70,
+ "0x080483e5" },
+ { "LE64", "x86_64", "resources/elf/unit_test/simple-le64.elf", 36, "0x0000000000000000",
+ "0x00000000004002b8", 68, "0x00000000004004e4" }, });
+ }
+
+ private static final Collection<String> functions = Arrays.asList("", "crtstuff.c", "simple.c", "crtstuff.c",
+ "_ITM_deregisterTMCloneTable", "__gmon_start__", "_Jv_RegisterClasses", "_ITM_registerTMCloneTable",
+ "_init", "_start", "deregister_tm_clones", "register_tm_clones", "__do_global_dtors_aux", "frame_dummy",
+ "function", "main", "__libc_csu_init", "__libc_csu_fini", "_fini", "_IO_stdin_used", "__FRAME_END__",
+ "__JCR_LIST__", "__JCR_END__", "_DYNAMIC", "data_start", "__data_start", "__dso_handle", "_edata",
+ "__bss_start", "__TMC_END__", "_end");
+
+ private final String memoryArchitecture;
+ private final String arch;
+ private final Elf elf;
+ private final int nbSections;
+ private final String symtabBaseAddress;
+ private final String dynsymBaseAddress;
+ private final int nbSymbols;
+ private final String mainAddress;
+
+ public ElfTest(String mArch, String architecture, String path, int sections, String symBaseAddress,
+ String dynBaseAddress, int symbolCount, String mainAddr) throws IOException {
+ memoryArchitecture = mArch;
+ nbSections = sections;
+ elf = new Elf(path);
+ arch = architecture;
+ symtabBaseAddress = symBaseAddress;
+ dynsymBaseAddress = dynBaseAddress;
+ nbSymbols = symbolCount;
+ mainAddress = mainAddr;
+ }
+
+ /**
+ * Test getting the sections
+ * @throws IOException
+ */
+ @Test
+ public void testGetSections() throws IOException {
+ assertEquals(arch + ": " + "Number of sections", nbSections, elf.getSections().length);
+ Section sectionByName = elf.getSectionByName(SYMTAB_NAME);
+ assertNotNull(sectionByName);
+ assertEquals(arch + ": " + "symbol table", SYMTAB_NAME, sectionByName.toString());
+ assertEquals(arch + ": " + "binary address", symtabBaseAddress, sectionByName.sh_addr.toHexAddressString());
+ assertEquals(arch + ": " + "sh_name", 1, sectionByName.sh_name);
+ sectionByName = elf.getSectionByName(".dynsym");
+ assertNotNull(sectionByName);
+ assertEquals(arch + ": " + "dynamic symbols", ".dynsym", sectionByName.toString());
+ assertEquals(arch + ": " + "binary address", dynsymBaseAddress, sectionByName.sh_addr.toHexAddressString());
+ assertEquals(arch + ": " + "sh_name", 78L, sectionByName.sh_name);
+ }
+
+ /**
+ * Test getting symbols, this loads the symbols so it modifies the state of elf.
+ * @throws IOException
+ */
+ @Test
+ public void testGetSymbols() throws IOException {
+ Section sectionByName = elf.getSectionByName(SYMTAB_NAME);
+ assertNotNull(sectionByName);
+ // never call Elf#LoadSymbols before this point
+ assertNull(arch + ": " + "Null symbols", elf.getSymbols());
+ elf.loadSymbols();
+ Symbol[] symbols = elf.getSymbols();
+ assertNotNull(arch + ": " + "Symbols are set", symbols);
+ assertEquals(nbSymbols, symbols.length);
+ List<String> functionList = Arrays.asList(symbols).stream().map(Symbol::toString).collect(Collectors.toList());
+ for (String function : functions) {
+ assertTrue(arch + ": " + "Symbols does not contain \"" + function + '"', functionList.contains(function));
+ }
+ Symbol symbol = null;
+ for (int i = 0; i < symbols.length; i++) {
+ if (symbols[i].toString().equals("main")) {
+ symbol = symbols[i];
+ break;
+ }
+ }
+ assertNotNull(symbol);
+ assertEquals(arch + ": " + "Main address", mainAddress, symbol.st_value.toHexAddressString());
+ }
+
+ @Test
+ public void testGetAttributes() throws IOException {
+ Attribute attributes = elf.getAttributes();
+ assertEquals(arch + ": " + "CPU Architecture", arch, attributes.getCPU());
+ assertTrue(arch + ": " + "is debuggable", attributes.hasDebug());
+ assertEquals(arch + ": " + "is Little Endian", memoryArchitecture.startsWith("LE"),
+ attributes.isLittleEndian());
+
+ /*
+ * Big integer math
+ *
+ * max 32 = 0xffffffff (2^32 -1)
+ * max 64 = 0xffffffffffffffff (2^64 -1) (larger than a long)
+ */
+ BigInteger twoThirtyTwo = BigInteger.valueOf((1L << 32));
+ BigInteger unsigned32BitAddress = twoThirtyTwo.subtract(BigInteger.ONE);
+ BigInteger unsigned64BitAddress = twoThirtyTwo.multiply(twoThirtyTwo).subtract(BigInteger.ONE);
+ assertEquals(arch + ": " + "get Address factory",
+ memoryArchitecture.endsWith("32") ? unsigned32BitAddress : unsigned64BitAddress,
+ attributes.getAddressFactory().getMax().getValue());
+ assertEquals(arch + ": " + "debug type", Attribute.DEBUG_TYPE_DWARF, attributes.getDebugType());
+ assertEquals(arch + ": " + "elf type", Attribute.ELF_TYPE_EXE, attributes.getType());
+ }
+
+ @Test
+ public void testSymbolReader() {
+ ISymbolReader symbolReader = elf.getSymbolReader();
+ String[] sourceFiles = symbolReader.getSourceFiles();
+ assertEquals(arch + ": " + "Number of Source files", 1, sourceFiles.length);
+ assertTrue(arch + ": " + "Source file name", sourceFiles[0].endsWith("simple.c"));
+ }
+
+}
diff --git a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/AllLanguageTestSuite.java b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/AllLanguageTestSuite.java
new file mode 100644
index 00000000000..2301e0d436c
--- /dev/null
+++ b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/AllLanguageTestSuite.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2007 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.language;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * @author crecoskie
+ * @deprecated In preparation for moving to JUnit5 test suites are deprecated. See Bug 569839
+ */
+@Deprecated
+public class AllLanguageTestSuite extends TestSuite {
+ public static Test suite() {
+ TestSuite suite = new AllLanguageTestSuite();
+
+ suite.addTest(LanguageInheritanceTests.suite());
+
+ return suite;
+ }
+}
diff --git a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/AllLanguageTests.java b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/AllLanguageTests.java
deleted file mode 100644
index 79c5dc7fe4d..00000000000
--- a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/AllLanguageTests.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.language;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * @author crecoskie
- *
- */
-public class AllLanguageTests extends TestSuite {
- public static Test suite() {
- TestSuite suite = new AllLanguageTests();
-
- suite.addTest(LanguageInheritanceTests.suite());
-
- return suite;
- }
-}
diff --git a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/AllLanguageSettingsProvidersCoreTestSuite.java b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/AllLanguageSettingsProvidersCoreTestSuite.java
new file mode 100644
index 00000000000..e8c6498023e
--- /dev/null
+++ b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/AllLanguageSettingsProvidersCoreTestSuite.java
@@ -0,0 +1,41 @@
+/*******************************************************************************
+ * Copyright (c) 2010, 2013 Andrew Gvozdev and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Andrew Gvozdev - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.language.settings.providers;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * Test suite to cover core Language Settings Providers functionality.
+ * @deprecated In preparation for moving to JUnit5 test suites are deprecated. See Bug 569839
+ */
+@Deprecated
+public class AllLanguageSettingsProvidersCoreTestSuite {
+ public static void main(String[] args) {
+ junit.textui.TestRunner.run(suite());
+ }
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(AllLanguageSettingsProvidersCoreTestSuite.class.getName());
+
+ suite.addTest(LanguageSettingsExtensionsTests.suite());
+ suite.addTest(LanguageSettingsManagerTests.suite());
+ suite.addTest(LanguageSettingsSerializableProviderTests.suite());
+ // Test converted to JUnit5: suite.addTest(LanguageSettingsPersistenceProjectTests.suite());
+ suite.addTest(LanguageSettingsListenersTests.suite());
+ suite.addTest(LanguageSettingsScannerInfoProviderTests.suite());
+ suite.addTest(LanguageSettingsProviderReferencedProjectsTests.suite());
+ return suite;
+ }
+}
diff --git a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/AllLanguageSettingsProvidersCoreTests.java b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/AllLanguageSettingsProvidersCoreTests.java
deleted file mode 100644
index 126b115341c..00000000000
--- a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/AllLanguageSettingsProvidersCoreTests.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010, 2013 Andrew Gvozdev and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Andrew Gvozdev - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.language.settings.providers;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * Test suite to cover core Language Settings Providers functionality.
- */
-public class AllLanguageSettingsProvidersCoreTests {
- public static void main(String[] args) {
- junit.textui.TestRunner.run(suite());
- }
-
- public static Test suite() {
- TestSuite suite = new TestSuite(AllLanguageSettingsProvidersCoreTests.class.getName());
-
- suite.addTest(LanguageSettingsExtensionsTests.suite());
- suite.addTest(LanguageSettingsManagerTests.suite());
- suite.addTest(LanguageSettingsSerializableProviderTests.suite());
- suite.addTest(LanguageSettingsPersistenceProjectTests.suite());
- suite.addTest(LanguageSettingsListenersTests.suite());
- suite.addTest(LanguageSettingsScannerInfoProviderTests.suite());
- suite.addTest(LanguageSettingsProviderReferencedProjectsTests.suite());
- return suite;
- }
-}
diff --git a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/LanguageSettingsPersistenceProjectTests.java b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/LanguageSettingsPersistenceProjectTests.java
index 9ff5fd507b6..c2825c761d9 100644
--- a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/LanguageSettingsPersistenceProjectTests.java
+++ b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/language/settings/providers/LanguageSettingsPersistenceProjectTests.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009, 2013 Andrew Gvozdev and others.
+ * Copyright (c) 2009, 2020 Andrew Gvozdev and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -14,6 +14,13 @@
package org.eclipse.cdt.core.language.settings.providers;
+import static org.junit.Assert.assertNull;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
+
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -26,7 +33,7 @@ import org.eclipse.cdt.core.settings.model.ICProjectDescription;
import org.eclipse.cdt.core.settings.model.WriteAccessException;
import org.eclipse.cdt.core.testplugin.CModelMock;
import org.eclipse.cdt.core.testplugin.ResourceHelper;
-import org.eclipse.cdt.core.testplugin.util.BaseTestCase;
+import org.eclipse.cdt.core.testplugin.util.BaseTestCase5;
import org.eclipse.cdt.internal.core.XmlUtil;
import org.eclipse.cdt.internal.core.language.settings.providers.LanguageSettingsProvidersSerializer;
import org.eclipse.cdt.internal.core.settings.model.CProjectDescriptionManager;
@@ -34,15 +41,16 @@ import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.IPath;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
-import junit.framework.TestSuite;
-
/**
* Test cases testing LanguageSettingsProvider functionality related to persistence.
*/
-public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
+public class LanguageSettingsPersistenceProjectTests extends BaseTestCase5 {
// These should match extension points defined in plugin.xml
private static final String EXTENSION_BASE_PROVIDER_ID = LanguageSettingsExtensionsTests.EXTENSION_BASE_PROVIDER_ID;
private static final String EXTENSION_BASE_PROVIDER_NAME = LanguageSettingsExtensionsTests.EXTENSION_BASE_PROVIDER_NAME;
@@ -130,39 +138,9 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
}
}
- /**
- * Constructor.
- * @param name - name of the test.
- */
- public LanguageSettingsPersistenceProjectTests(String name) {
- super(name);
- }
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- }
-
- @Override
- protected void tearDown() throws Exception {
+ @AfterEach
+ protected void tearDownLocal() throws Exception {
LanguageSettingsManager.setWorkspaceProviders(null);
- super.tearDown(); // includes ResourceHelper cleanup
- }
-
- /**
- * @return - new TestSuite.
- */
- public static TestSuite suite() {
- return new TestSuite(LanguageSettingsPersistenceProjectTests.class);
- }
-
- /**
- * main function of the class.
- *
- * @param args - arguments
- */
- public static void main(String[] args) {
- junit.textui.TestRunner.run(suite());
}
/**
@@ -195,6 +173,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
/**
* Persist and reload when no customized providers are defined in the workspace.
*/
+ @Test
public void testWorkspacePersistence_NoProviders() throws Exception {
// serialize language settings of user defined providers (on workspace level)
LanguageSettingsProvidersSerializer.serializeLanguageSettingsWorkspace();
@@ -206,6 +185,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
/**
* Make sure providers in configuration cannot be modified accidentally outside of API.
*/
+ @Test
public void testProjectDescription_PreventBackDoorAccess() throws Exception {
// create a project
IProject project = ResourceHelper.createCDTProjectWithConfig(getName());
@@ -239,6 +219,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
/**
* Test assigning providers to read-only vs. writable configuration descriptions.
*/
+ @Test
public void testProjectDescription_ReadWriteDescription() throws Exception {
// create a project
IProject project = ResourceHelper.createCDTProjectWithConfig(getName());
@@ -367,6 +348,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
/**
* Persist and reload a customized provider defined in the workspace.
*/
+ @Test
public void testWorkspacePersistence_ModifiedExtensionProvider() throws Exception {
List<ICLanguageSettingEntry> entries = new ArrayList<>();
entries.add(new CIncludePathEntry("path0", 0));
@@ -416,6 +398,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
/**
* Check persistence of unmodified extension provider in the workspace.
*/
+ @Test
public void testWorkspacePersistence_UnmodifiedExtensionProvider() throws Exception {
List<ICLanguageSettingEntry> extensionEntries = new ArrayList<>();
extensionEntries.add(EXTENSION_SERIALIZABLE_PROVIDER_ENTRY);
@@ -463,6 +446,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
/**
* Test persistence of global providers in the workspace.
*/
+ @Test
public void testWorkspacePersistence_GlobalProvider() throws Exception {
{
// get the raw extension provider
@@ -498,6 +482,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
/**
* Test persistence of global providers with ID matching an extension provider in the workspace.
*/
+ @Test
public void testWorkspacePersistence_ShadowedExtensionProvider() throws Exception {
{
// get the raw extension provider
@@ -569,6 +554,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
/**
* Test serialization of providers to project storage.
*/
+ @Test
public void testProjectPersistence_SerializableProviderDOM() throws Exception {
Element rootElement = null;
@@ -631,6 +617,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
/**
* Test User language settings provider defined as extension in cdt.ui.
*/
+ @Test
public void testProjectPersistence_UserProviderDOM() throws Exception {
Element rootElement = null;
@@ -695,6 +682,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
/**
* Test serialization of providers to project storage where the project has multiple configurations.
*/
+ @Test
public void testProjectPersistence_TwoConfigurationsDOM() throws Exception {
Element rootElement = null;
@@ -837,6 +825,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
/**
* Test serialization of providers subclassing {@link LanguageSettingsSerializableProvider}.
*/
+ @Test
public void testProjectPersistence_SubclassedSerializableProviderDOM() throws Exception {
Element rootElement = null;
@@ -898,6 +887,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
/**
* Serialization of providers exactly equal extension providers.
*/
+ @Test
public void testProjectPersistence_ReferenceExtensionProviderDOM() throws Exception {
Element rootElement = null;
@@ -953,6 +943,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
/**
* Test serialization of providers overriding/shadowing extension providers.
*/
+ @Test
public void testProjectPersistence_OverrideExtensionProviderDOM() throws Exception {
Element rootElement = null;
@@ -1013,6 +1004,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
/**
* Test serialization flavors in one storage.
*/
+ @Test
public void testProjectPersistence_MixedProvidersDOM() throws Exception {
Element rootElement = null;
@@ -1107,6 +1099,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
/**
* Test serialization of real project.
*/
+ @Test
public void testProjectPersistence_RealProject() throws Exception {
IProject project = ResourceHelper.createCDTProjectWithConfig(this.getName());
IFile xmlStorageFilePrj = project.getFile(LANGUAGE_SETTINGS_PROJECT_XML);
@@ -1224,17 +1217,17 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
String xmlStorageFileLocation = xmlStorageFilePrj.getLocation().toOSString();
java.io.File xmlFile = new java.io.File(xmlStorageFileLocation);
xmlFile.delete();
- assertFalse("File " + xmlFile + " still exist", xmlFile.exists());
+ assertNotExists(xmlFile);
java.io.File xmlFileOut = new java.io.File(xmlPrjOutOfTheWay);
xmlFileOut.renameTo(xmlFile);
- assertTrue("File " + xmlFile + " does not exist", xmlFile.exists());
- assertFalse("File " + xmlFileOut + " still exist", xmlFileOut.exists());
+ assertExists(xmlFile);
+ assertNotExists(xmlFileOut);
// Wait out in case indexer thread hijacks refreshLocal(), see bug 415970
waitForIndexer(CCorePlugin.getDefault().getCoreModel().create(project));
// Refresh storage in workspace
xmlStorageFilePrj.refreshLocal(IResource.DEPTH_ZERO, null);
- assertTrue("File " + xmlStorageFilePrj + " does not exist", xmlStorageFilePrj.exists());
+ assertExists(xmlStorageFilePrj);
// and close
project.close(null);
@@ -1266,6 +1259,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
/**
* Test case when the storage is split between project and workspace area.
*/
+ @Test
public void testProjectPersistence_SplitStorageDOM() throws Exception {
Element prjStorageElement = null;
Element wspStorageElement = null;
@@ -1343,6 +1337,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
/**
* Test split storage in a real project.
*/
+ @Test
public void testProjectPersistence_RealProjectSplitStorage() throws Exception {
IProject project = ResourceHelper.createCDTProjectWithConfig(this.getName());
IFile xmlStorageFilePrj;
@@ -1472,17 +1467,17 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
String xmlStorageFilePrjLocation = xmlStorageFilePrj.getLocation().toOSString();
java.io.File xmlFile = new java.io.File(xmlStorageFilePrjLocation);
xmlFile.delete();
- assertFalse("File " + xmlFile + " still exist", xmlFile.exists());
+ assertNotExists(xmlFile);
java.io.File xmlFileOut = new java.io.File(xmlPrjOutOfTheWay);
xmlFileOut.renameTo(xmlFile);
- assertTrue("File " + xmlFile + " does not exist", xmlFile.exists());
- assertFalse("File " + xmlFileOut + " still exist", xmlFileOut.exists());
+ assertExists(xmlFile);
+ assertNotExists(xmlFileOut);
// Wait out in case indexer thread hijacks refreshLocal(), see bug 415970
waitForIndexer(CCorePlugin.getDefault().getCoreModel().create(project));
// Refresh storage in workspace
xmlStorageFilePrj.refreshLocal(IResource.DEPTH_ZERO, null);
- assertTrue("File " + xmlStorageFilePrj + " does not exist", xmlStorageFilePrj.exists());
+ assertExists(xmlStorageFilePrj);
// and close
project.close(null);
@@ -1492,11 +1487,11 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
// Move workspace storage back
java.io.File xmlWspFile = new java.io.File(xmlStorageFileWspLocation);
xmlWspFile.delete();
- assertFalse("File " + xmlWspFile + " still exist", xmlWspFile.exists());
+ assertNotExists(xmlWspFile);
java.io.File xmlWspFileOut = new java.io.File(xmlWspOutOfTheWay);
xmlWspFileOut.renameTo(xmlWspFile);
- assertTrue("File " + xmlWspFile + " does not exist", xmlWspFile.exists());
- assertFalse("File " + xmlWspFileOut + " still exist", xmlWspFileOut.exists());
+ assertExists(xmlWspFile);
+ assertNotExists(xmlWspFileOut);
}
{
@@ -1525,6 +1520,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
/**
* Test serialization of providers referring to global shared instance.
*/
+ @Test
public void testProjectPersistence_ProviderExtensionReferenceDOM() throws Exception {
Document doc = XmlUtil.newDocument();
Element storageElement = XmlUtil.appendElement(doc, ELEM_TEST);
@@ -1582,6 +1578,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
/**
* Walk the scenario when a provider is cloned to a configuration from extension.
*/
+ @Test
public void testProjectPersistence_ProviderExtensionCopyDOM() throws Exception {
Document doc = XmlUtil.newDocument();
Element storageElement = XmlUtil.appendElement(doc, ELEM_TEST);
@@ -1639,6 +1636,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
/**
* Test that default settings do not cause the files to appear in the project or file-system.
*/
+ @Test
public void testProjectPersistence_Defaults() throws Exception {
IProject project = ResourceHelper.createCDTProjectWithConfig(this.getName());
IFile xmlStorageFilePrj = project.getFile(LANGUAGE_SETTINGS_PROJECT_XML);
@@ -1653,6 +1651,8 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
/**
* Test serialization of global providers exactly equal extension in workspace area.
*/
+ @Test
+ @Tag(FLAKY_TEST_TAG)
public void testWorkspacePersistence_ProviderExtensionCopy() throws Exception {
List<ICLanguageSettingEntry> entries = new ArrayList<>();
List<ILanguageSettingsProvider> providers = new ArrayList<>();
@@ -1698,6 +1698,7 @@ public class LanguageSettingsPersistenceProjectTests extends BaseTestCase {
/**
* Test that default settings do not cause the file to appear on the file-system.
*/
+ @Test
public void testWorkspacePersistence_Defaults() throws Exception {
// reset and serialize workspace providers
LanguageSettingsManager.setWorkspaceProviders(null);
diff --git a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/AllCoreTestSuite.java b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/AllCoreTestSuite.java
new file mode 100644
index 00000000000..997bf019ad6
--- /dev/null
+++ b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/AllCoreTestSuite.java
@@ -0,0 +1,73 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2012 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - Initial API and implementation
+ * Markus Schorn (Wind River Systems)
+ *******************************************************************************/
+package org.eclipse.cdt.core.model.tests;
+
+import org.eclipse.cdt.core.language.settings.providers.AllLanguageSettingsProvidersCoreTestSuite;
+import org.eclipse.cdt.core.settings.model.AllCProjectDescriptionTestSuite;
+import org.eclipse.cdt.core.settings.model.PathSettingsContainerTests;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ *
+ * AllTests.java
+ * This is the main entry point for running this suite of JUnit tests
+ * for all tests within the package "org.eclipse.cdt.core.model"
+ *
+ * @author Judy N. Green
+ * @since Jul 19, 2002
+ * @deprecated In preparation for moving to JUnit5 test suites are deprecated. See Bug 569839
+ */
+@Deprecated
+public class AllCoreTestSuite {
+
+ public static void main(String[] args) {
+ junit.textui.TestRunner.run(suite());
+ }
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(AllCoreTestSuite.class.getName());
+
+ // Just add more test cases here as you create them for
+ // each class being tested
+ suite.addTest(AllLanguageInterfaceTestSuite.suite());
+ suite.addTest(CModelTests.suite());
+ suite.addTest(CModelElementsTests.suite());
+ suite.addTest(CModelIdentifierTests.suite());
+ suite.addTest(CModelExceptionTest.suite());
+ suite.addTest(CModelBuilderInactiveCodeTest.suite());
+ suite.addTest(FlagTests.suite());
+ suite.addTest(ArchiveTests.suite());
+ suite.addTest(BinaryTests.suite());
+ suite.addTest(TranslationUnitTests.suite());
+ suite.addTest(DeclaratorsTests.suite());
+ suite.addTest(MacroTests.suite());
+ // suite.addTest(FailedMacroTests.suite());
+ suite.addTest(CPathEntryTest.suite());
+ //the CProjectDescriptionTests now groups all New Project Model related tests
+ //which includes the CConfigurationDescriptionReferenceTests
+ suite.addTest(AllCProjectDescriptionTestSuite.suite());
+ suite.addTest(PathSettingsContainerTests.suite());
+ suite.addTest(ASTCacheTests.suite());
+ suite.addTest(AsmModelBuilderTest.suite());
+ suite.addTest(CModelBuilderBugsTest.suite());
+ suite.addTest(Bug311189Tests.suite());
+
+ suite.addTest(AllLanguageSettingsProvidersCoreTestSuite.suite());
+ return suite;
+
+ }
+} // End of AllCoreTests.java
diff --git a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/AllCoreTests.java b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/AllCoreTests.java
deleted file mode 100644
index 9cd2ac2735f..00000000000
--- a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/AllCoreTests.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2012 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - Initial API and implementation
- * Markus Schorn (Wind River Systems)
- *******************************************************************************/
-package org.eclipse.cdt.core.model.tests;
-
-import org.eclipse.cdt.core.language.settings.providers.AllLanguageSettingsProvidersCoreTests;
-import org.eclipse.cdt.core.settings.model.AllCProjectDescriptionTests;
-import org.eclipse.cdt.core.settings.model.PathSettingsContainerTests;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- *
- * AllTests.java
- * This is the main entry point for running this suite of JUnit tests
- * for all tests within the package "org.eclipse.cdt.core.model"
- *
- * @author Judy N. Green
- * @since Jul 19, 2002
- */
-public class AllCoreTests {
-
- public static void main(String[] args) {
- junit.textui.TestRunner.run(suite());
- }
-
- public static Test suite() {
- TestSuite suite = new TestSuite(AllCoreTests.class.getName());
-
- // Just add more test cases here as you create them for
- // each class being tested
- suite.addTest(AllLanguageInterfaceTests.suite());
- suite.addTest(CModelTests.suite());
- suite.addTest(CModelElementsTests.suite());
- suite.addTest(CModelIdentifierTests.suite());
- suite.addTest(CModelExceptionTest.suite());
- suite.addTest(CModelBuilderInactiveCodeTest.suite());
- suite.addTest(FlagTests.suite());
- suite.addTest(ArchiveTests.suite());
- suite.addTest(BinaryTests.suite());
- suite.addTest(TranslationUnitTests.suite());
- suite.addTest(DeclaratorsTests.suite());
- suite.addTest(MacroTests.suite());
- // suite.addTest(FailedMacroTests.suite());
- suite.addTest(CPathEntryTest.suite());
- //the CProjectDescriptionTests now groups all New Project Model related tests
- //which includes the CConfigurationDescriptionReferenceTests
- suite.addTest(AllCProjectDescriptionTests.suite());
- suite.addTest(PathSettingsContainerTests.suite());
- suite.addTest(ASTCacheTests.suite());
- suite.addTest(AsmModelBuilderTest.suite());
- suite.addTest(CModelBuilderBugsTest.suite());
- suite.addTest(Bug311189.suite());
-
- suite.addTest(AllLanguageSettingsProvidersCoreTests.suite());
- return suite;
-
- }
-} // End of AllCoreTests.java
diff --git a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/AllLanguageInterfaceTestSuite.java b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/AllLanguageInterfaceTestSuite.java
new file mode 100644
index 00000000000..32ce5922982
--- /dev/null
+++ b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/AllLanguageInterfaceTestSuite.java
@@ -0,0 +1,54 @@
+/*******************************************************************************
+ * Copyright (c) 2005 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+/*
+ * Created on Jun 9, 2003
+ * by bnicolle
+ */
+package org.eclipse.cdt.core.model.tests;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * LanguageInterfaceTests
+ * lists all parts of the C/C++ language interface objects
+ * to be tested.
+ * @author bnicolle
+ *
+ * @deprecated In preparation for moving to JUnit5 test suites are deprecated. See Bug 569839
+ */
+@Deprecated
+public class AllLanguageInterfaceTestSuite {
+
+ /**
+ *
+ */
+ public static Test suite() {
+ TestSuite suite = new TestSuite(AllLanguageInterfaceTestSuite.class.getName());
+
+ // Just add more test cases here as you create them for
+ // each class being tested
+
+ suite.addTest(IIncludeTests.suite());
+ suite.addTest(IMacroTests.suite());
+ suite.addTest(StructuralMacroTests.suite());
+ suite.addTest(IStructureTests.suite());
+ suite.addTest(StructuralStructureTests.suite());
+ suite.addTest(ITemplateTests.suite());
+ suite.addTest(StructuralTemplateTests.suite());
+ return suite;
+
+ }
+
+}
diff --git a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/AllLanguageInterfaceTests.java b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/AllLanguageInterfaceTests.java
deleted file mode 100644
index 795a7d8f123..00000000000
--- a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/AllLanguageInterfaceTests.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-/*
- * Created on Jun 9, 2003
- * by bnicolle
- */
-package org.eclipse.cdt.core.model.tests;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * LanguageInterfaceTests
- * lists all parts of the C/C++ language interface objects
- * to be tested.
- * @author bnicolle
- *
- */
-public class AllLanguageInterfaceTests {
-
- /**
- *
- */
- public static Test suite() {
- TestSuite suite = new TestSuite(AllLanguageInterfaceTests.class.getName());
-
- // Just add more test cases here as you create them for
- // each class being tested
-
- suite.addTest(IIncludeTests.suite());
- suite.addTest(IMacroTests.suite());
- suite.addTest(StructuralMacroTests.suite());
- suite.addTest(IStructureTests.suite());
- suite.addTest(StructuralStructureTests.suite());
- suite.addTest(ITemplateTests.suite());
- suite.addTest(StructuralTemplateTests.suite());
- return suite;
-
- }
-
-}
diff --git a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/Bug311189.java b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/Bug311189.java
deleted file mode 100644
index 4370373a8b0..00000000000
--- a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/Bug311189.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010, 2012 Broadcom Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * James Blackburn (Broadcom Corp) - initial API and implementation
- * Wind River Systems - Bug 348569
- *******************************************************************************/
-package org.eclipse.cdt.core.model.tests;
-
-import java.util.Arrays;
-
-import org.eclipse.cdt.core.model.CoreModel;
-import org.eclipse.cdt.core.model.IPathEntry;
-import org.eclipse.cdt.core.resources.IPathEntryStore;
-import org.eclipse.cdt.core.testplugin.ResourceHelper;
-import org.eclipse.cdt.core.testplugin.util.BaseTestCase;
-import org.eclipse.cdt.internal.core.model.SourceEntry;
-import org.eclipse.core.resources.IFolder;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IWorkspaceRunnable;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.jobs.Job;
-
-import junit.framework.Test;
-
-/**
- * Regression test for Bug 311189.
- * When a Team Project Set is imported, replacing an existing CDT Project
- * we must ensure that we don't corrupt the set of includes in the incoming
- * project's metadata
- */
-public class Bug311189 extends BaseTestCase {
-
- public static Test suite() {
- return suite(Bug311189.class, "_");
- }
-
- private IProject project;
-
- @Override
- protected void setUp() throws Exception {
- project = ResourceHelper.createCDTProjectWithConfig("bug311189");
- }
-
- /**
- * If a source folder is deleted and re-created in a separate Job, ensure that we don't
- * delete the source folder from the C Model.
- */
- public void testPathSettingLost() throws Exception {
- IFolder srcFolder = project.getFolder("src");
- final IPathEntry sourceEntry = new SourceEntry(srcFolder.getFullPath(), new IPath[0]);
-
- // create a source folder and set it as a source entry
- srcFolder.create(true, true, null);
- CoreModel.setRawPathEntries(CoreModel.getDefault().create(project), new IPathEntry[] { sourceEntry }, null);
- IPathEntry[] rawEntries = CoreModel.getPathEntryStore(project).getRawPathEntries();
- assertTrue("Path entry unset!", Arrays.asList(rawEntries).contains(sourceEntry));
-
- try {
- // None-batched resource change, though we do hold a scheduling rule
- // on the full project. While team operations are batched, doing this
- // is
- Job.getJobManager().beginRule(project, null);
- // Delete the source folder, and re-recreate it
- srcFolder.delete(true, null);
- srcFolder.create(true, true, null);
- } finally {
- Job.getJobManager().endRule(project);
- }
-
- // Path entry update should now be running...
- // Tick a workspace job through the workspace so we get when it's finished
- ResourcesPlugin.getWorkspace().run(new IWorkspaceRunnable() {
- @Override
- public void run(IProgressMonitor monitor) throws CoreException {
- }
- }, null);
-
- IPathEntryStore store = CoreModel.getPathEntryStore(project);
- rawEntries = store.getRawPathEntries();
- assertTrue("Path entry gone!", Arrays.asList(rawEntries).contains(sourceEntry));
- }
-
-}
diff --git a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/Bug311189Tests.java b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/Bug311189Tests.java
new file mode 100644
index 00000000000..e696740ec97
--- /dev/null
+++ b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/Bug311189Tests.java
@@ -0,0 +1,94 @@
+/*******************************************************************************
+ * Copyright (c) 2010, 2012 Broadcom Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * James Blackburn (Broadcom Corp) - initial API and implementation
+ * Wind River Systems - Bug 348569
+ *******************************************************************************/
+package org.eclipse.cdt.core.model.tests;
+
+import java.util.Arrays;
+
+import org.eclipse.cdt.core.model.CoreModel;
+import org.eclipse.cdt.core.model.IPathEntry;
+import org.eclipse.cdt.core.resources.IPathEntryStore;
+import org.eclipse.cdt.core.testplugin.ResourceHelper;
+import org.eclipse.cdt.core.testplugin.util.BaseTestCase;
+import org.eclipse.cdt.internal.core.model.SourceEntry;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IWorkspaceRunnable;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.jobs.Job;
+
+import junit.framework.Test;
+
+/**
+ * Regression test for Bug 311189.
+ * When a Team Project Set is imported, replacing an existing CDT Project
+ * we must ensure that we don't corrupt the set of includes in the incoming
+ * project's metadata
+ */
+public class Bug311189Tests extends BaseTestCase {
+
+ public static Test suite() {
+ return suite(Bug311189Tests.class, "_");
+ }
+
+ private IProject project;
+
+ @Override
+ protected void setUp() throws Exception {
+ project = ResourceHelper.createCDTProjectWithConfig("bug311189");
+ }
+
+ /**
+ * If a source folder is deleted and re-created in a separate Job, ensure that we don't
+ * delete the source folder from the C Model.
+ */
+ public void testPathSettingLost() throws Exception {
+ IFolder srcFolder = project.getFolder("src");
+ final IPathEntry sourceEntry = new SourceEntry(srcFolder.getFullPath(), new IPath[0]);
+
+ // create a source folder and set it as a source entry
+ srcFolder.create(true, true, null);
+ CoreModel.setRawPathEntries(CoreModel.getDefault().create(project), new IPathEntry[] { sourceEntry }, null);
+ IPathEntry[] rawEntries = CoreModel.getPathEntryStore(project).getRawPathEntries();
+ assertTrue("Path entry unset!", Arrays.asList(rawEntries).contains(sourceEntry));
+
+ try {
+ // None-batched resource change, though we do hold a scheduling rule
+ // on the full project. While team operations are batched, doing this
+ // is
+ Job.getJobManager().beginRule(project, null);
+ // Delete the source folder, and re-recreate it
+ srcFolder.delete(true, null);
+ srcFolder.create(true, true, null);
+ } finally {
+ Job.getJobManager().endRule(project);
+ }
+
+ // Path entry update should now be running...
+ // Tick a workspace job through the workspace so we get when it's finished
+ ResourcesPlugin.getWorkspace().run(new IWorkspaceRunnable() {
+ @Override
+ public void run(IProgressMonitor monitor) throws CoreException {
+ }
+ }, null);
+
+ IPathEntryStore store = CoreModel.getPathEntryStore(project);
+ rawEntries = store.getRawPathEntries();
+ assertTrue("Path entry gone!", Arrays.asList(rawEntries).contains(sourceEntry));
+ }
+
+}
diff --git a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/CModelElementsTests.java b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/CModelElementsTests.java
index 00920e6bb1a..04772796b82 100644
--- a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/CModelElementsTests.java
+++ b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/CModelElementsTests.java
@@ -35,6 +35,7 @@ import org.eclipse.cdt.core.model.IMethodDeclaration;
import org.eclipse.cdt.core.model.IMethodTemplateDeclaration;
import org.eclipse.cdt.core.model.INamespace;
import org.eclipse.cdt.core.model.IParent;
+import org.eclipse.cdt.core.model.IPragma;
import org.eclipse.cdt.core.model.ISourceRange;
import org.eclipse.cdt.core.model.ISourceReference;
import org.eclipse.cdt.core.model.IStructure;
@@ -137,6 +138,98 @@ public class CModelElementsTests extends BaseTestCase {
checkBug180815(tu);
checkBug352350(tu);
+
+ checkPragmas(tu);
+ }
+
+ private void checkPragmas(ITranslationUnit tu) throws CModelException {
+ List pragmas = tu.getChildrenOfType(ICElement.C_PRAGMA);
+
+ int line = 0;
+ {
+ IPragma pragma = (IPragma) pragmas.get(line++);
+ assertEquals("mark - before and after -", pragma.getElementName());
+ assertEquals(true, pragma.getPragmaMarkInfo().get().isDividerBeforeMark());
+ assertEquals(true, pragma.getPragmaMarkInfo().get().isDividerAfterMark());
+ assertEquals("before and after", pragma.getPragmaMarkInfo().get().getMarkName());
+ }
+ {
+ IPragma pragma = (IPragma) pragmas.get(line++);
+ assertEquals("mark - before", pragma.getElementName());
+ assertEquals(true, pragma.getPragmaMarkInfo().get().isDividerBeforeMark());
+ assertEquals(false, pragma.getPragmaMarkInfo().get().isDividerAfterMark());
+ assertEquals("before", pragma.getPragmaMarkInfo().get().getMarkName());
+ }
+ {
+ IPragma pragma = (IPragma) pragmas.get(line++);
+ assertEquals("mark after -", pragma.getElementName());
+ assertEquals(false, pragma.getPragmaMarkInfo().get().isDividerBeforeMark());
+ assertEquals(true, pragma.getPragmaMarkInfo().get().isDividerAfterMark());
+ assertEquals("after", pragma.getPragmaMarkInfo().get().getMarkName());
+ }
+ {
+ IPragma pragma = (IPragma) pragmas.get(line++);
+ assertEquals("mark neither", pragma.getElementName());
+ assertEquals(false, pragma.getPragmaMarkInfo().get().isDividerBeforeMark());
+ assertEquals(false, pragma.getPragmaMarkInfo().get().isDividerAfterMark());
+ assertEquals("neither", pragma.getPragmaMarkInfo().get().getMarkName());
+ }
+ {
+ IPragma pragma = (IPragma) pragmas.get(line++);
+ assertEquals("mark -", pragma.getElementName());
+ assertEquals(true, pragma.getPragmaMarkInfo().get().isDividerBeforeMark());
+ assertEquals(false, pragma.getPragmaMarkInfo().get().isDividerAfterMark());
+ assertEquals("", pragma.getPragmaMarkInfo().get().getMarkName());
+ }
+ {
+ IPragma pragma = (IPragma) pragmas.get(line++);
+ assertEquals("mark", pragma.getElementName());
+ assertEquals(false, pragma.getPragmaMarkInfo().get().isDividerBeforeMark());
+ assertEquals(false, pragma.getPragmaMarkInfo().get().isDividerAfterMark());
+ assertEquals("", pragma.getPragmaMarkInfo().get().getMarkName());
+ }
+ {
+ // region no name
+ IPragma pragma = (IPragma) pragmas.get(line++);
+ assertEquals("region", pragma.getElementName());
+ assertEquals(true, pragma.getPragmaMarkInfo().get().isDividerBeforeMark());
+ assertEquals(false, pragma.getPragmaMarkInfo().get().isDividerAfterMark());
+ assertEquals("", pragma.getPragmaMarkInfo().get().getMarkName());
+ }
+ {
+ IPragma pragma = (IPragma) pragmas.get(line++);
+ assertEquals("region named", pragma.getElementName());
+ assertEquals(true, pragma.getPragmaMarkInfo().get().isDividerBeforeMark());
+ assertEquals(true, pragma.getPragmaMarkInfo().get().isDividerAfterMark());
+ assertEquals("named", pragma.getPragmaMarkInfo().get().getMarkName());
+ }
+ {
+ IPragma pragma = (IPragma) pragmas.get(line++);
+ assertEquals("endregion", pragma.getElementName());
+ assertEquals(true, pragma.getPragmaMarkInfo().get().isDividerBeforeMark());
+ assertEquals(false, pragma.getPragmaMarkInfo().get().isDividerAfterMark());
+ assertEquals("", pragma.getPragmaMarkInfo().get().getMarkName());
+ }
+ {
+ IPragma pragma = (IPragma) pragmas.get(line++);
+ assertEquals("endregion endnamed", pragma.getElementName());
+ assertEquals(true, pragma.getPragmaMarkInfo().get().isDividerBeforeMark());
+ assertEquals(true, pragma.getPragmaMarkInfo().get().isDividerAfterMark());
+ assertEquals("endnamed", pragma.getPragmaMarkInfo().get().getMarkName());
+ }
+ {
+ IPragma pragma = (IPragma) pragmas.get(line++);
+ assertEquals("ms_struct on", pragma.getElementName());
+ assertEquals(true, pragma.getPragmaMarkInfo().isEmpty());
+ assertEquals(false, pragma.isPragmaOperator());
+ }
+ {
+ IPragma pragma = (IPragma) pragmas.get(line++);
+ assertEquals("_Pragma(\"once\")", pragma.getElementName());
+ assertEquals(true, pragma.getPragmaMarkInfo().isEmpty());
+ assertEquals(true, pragma.isPragmaOperator());
+ }
+ assertEquals(line, pragmas.size());
}
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=180815
diff --git a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/CModelTests.java b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/CModelTests.java
index 8cd92f7767f..1c71311173e 100644
--- a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/CModelTests.java
+++ b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/CModelTests.java
@@ -17,6 +17,7 @@ import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -29,6 +30,7 @@ import org.eclipse.cdt.core.model.IBinaryContainer;
import org.eclipse.cdt.core.model.ICContainer;
import org.eclipse.cdt.core.model.ICElement;
import org.eclipse.cdt.core.model.ICElementDelta;
+import org.eclipse.cdt.core.model.ICElementVisitor;
import org.eclipse.cdt.core.model.ICProject;
import org.eclipse.cdt.core.model.IElementChangedListener;
import org.eclipse.cdt.core.model.ISourceRoot;
@@ -270,12 +272,10 @@ public class CModelTests extends TestCase {
assertTrue("Valid C file", CoreModel.isValidTranslationUnitName(null, "areal.c"));
}
- // bug 275609
- public void testSourceExclusionFilters_275609() throws Exception {
+ public void testCElementVisitorLeave() throws Exception {
ICProject testProject;
- testProject = CProjectHelper.createCProject("bug257609", "none", IPDOMManager.ID_NO_INDEXER);
- if (testProject == null)
- fail("Unable to create project");
+ String projectName = "bug257609";
+ testProject = CProjectHelper.createCProject(projectName, "none", IPDOMManager.ID_NO_INDEXER);
IFolder testFolder = testProject.getProject().getFolder("test");
testFolder.create(true, true, monitor);
@@ -283,158 +283,213 @@ public class CModelTests extends TestCase {
subFolder1.create(true, true, monitor);
IFolder subFolder2 = testFolder.getFolder("2");
subFolder2.create(true, true, monitor);
+ IFolder subFolder3 = subFolder2.getFolder("3");
+ subFolder3.create(true, true, monitor);
IFile file0 = testFolder.getFile("test0.c");
file0.create(new ByteArrayInputStream(new byte[0]), true, monitor);
- IFile file1 = subFolder1.getFile("test1.c");
- file1.create(new ByteArrayInputStream(new byte[0]), true, monitor);
- IFile file2 = subFolder2.getFile("test2.c");
- file2.create(new ByteArrayInputStream(new byte[0]), true, monitor);
-
- List<ICElement> cSourceRoots = testProject.getChildrenOfType(ICElement.C_CCONTAINER);
- assertEquals(1, cSourceRoots.size());
- assertEquals(testProject.getElementName(), cSourceRoots.get(0).getElementName());
-
- ISourceRoot sourceRoot = (ISourceRoot) cSourceRoots.get(0);
-
- List<ICElement> cContainers = sourceRoot.getChildrenOfType(ICElement.C_CCONTAINER);
- assertEquals(1, cContainers.size());
- assertEquals("test", cContainers.get(0).getElementName());
- ICContainer testContainer = (ICContainer) cContainers.get(0);
-
- List<ICElement> subContainers = testContainer.getChildrenOfType(ICElement.C_CCONTAINER);
- assertEquals(2, subContainers.size());
- assertEquals("1", subContainers.get(0).getElementName());
- assertEquals("2", subContainers.get(1).getElementName());
- Object[] nonCResources = testContainer.getNonCResources();
- assertEquals(0, nonCResources.length);
-
- List<ICElement> tUnits = testContainer.getChildrenOfType(ICElement.C_UNIT);
- assertEquals(1, tUnits.size());
- assertEquals("test0.c", tUnits.get(0).getElementName());
-
- ICProjectDescription prjDesc = CoreModel.getDefault().getProjectDescription(testProject.getProject(), true);
- ICConfigurationDescription activeCfg = prjDesc.getActiveConfiguration();
- assertNotNull(activeCfg);
-
- // add filter to source entry
- ICSourceEntry[] entries = activeCfg.getSourceEntries();
- final String sourceEntryName = entries[0].getName();
- final IPath[] exclusionPatterns = new IPath[] { new Path("test/*") };
-
- ICSourceEntry entry = new CSourceEntry(sourceEntryName, exclusionPatterns, entries[0].getFlags());
- activeCfg.setSourceEntries(new ICSourceEntry[] { entry });
-
- // store the changed configuration
- CoreModel.getDefault().setProjectDescription(testProject.getProject(), prjDesc);
-
- cSourceRoots = testProject.getChildrenOfType(ICElement.C_CCONTAINER);
- assertEquals(1, cSourceRoots.size());
- assertEquals(testProject.getElementName(), cSourceRoots.get(0).getElementName());
-
- sourceRoot = (ISourceRoot) cSourceRoots.get(0);
-
- cContainers = sourceRoot.getChildrenOfType(ICElement.C_CCONTAINER);
- assertEquals(1, cContainers.size());
- assertEquals("test", cContainers.get(0).getElementName());
-
- testContainer = (ICContainer) cContainers.get(0);
-
- tUnits = testContainer.getChildrenOfType(ICElement.C_UNIT);
- assertEquals(0, tUnits.size());
+ List<String> expected = Arrays.asList("visit " + projectName, "visit " + projectName, "visit test", "visit 1",
+ "leave 1", "visit 2", "visit 3", "leave 3", "leave 2", "visit test0.c", "leave test0.c", "leave test",
+ "leave " + projectName, "leave " + projectName);
+ final List<String> actual = new ArrayList<>();
+ testProject.accept(new ICElementVisitor() {
+ @Override
+ public boolean visit(ICElement element) throws CoreException {
+ if (".settings".equals(element.getElementName())) {
+ return false;
+ }
+ actual.add("visit " + element.getResource().getName());
+ return true;
+ }
- subContainers = testContainer.getChildrenOfType(ICElement.C_CCONTAINER);
- assertEquals(0, subContainers.size());
- nonCResources = testContainer.getNonCResources();
- assertEquals(3, nonCResources.length);
- assertEquals(subFolder1, nonCResources[0]);
- assertEquals(subFolder2, nonCResources[1]);
- assertEquals(file0, nonCResources[2]);
+ @Override
+ public void leave(ICElement element) throws CoreException {
+ if (".settings".equals(element.getElementName())) {
+ return;
+ }
+ actual.add("leave " + element.getResource().getName());
+ }
+ });
+ assertEquals(expected, actual);
+ }
+ // bug 275609
+ public void testSourceExclusionFilters_275609() throws Exception {
+ ICProject testProject = null;
try {
- testProject.getProject().delete(true, true, monitor);
- } catch (CoreException e) {
+ testProject = CProjectHelper.createCProject("bug257609", "none", IPDOMManager.ID_NO_INDEXER);
+ if (testProject == null)
+ fail("Unable to create project");
+
+ IFolder testFolder = testProject.getProject().getFolder("test");
+ testFolder.create(true, true, monitor);
+ IFolder subFolder1 = testFolder.getFolder("1");
+ subFolder1.create(true, true, monitor);
+ IFolder subFolder2 = testFolder.getFolder("2");
+ subFolder2.create(true, true, monitor);
+ IFile file0 = testFolder.getFile("test0.c");
+ file0.create(new ByteArrayInputStream(new byte[0]), true, monitor);
+ IFile file1 = subFolder1.getFile("test1.c");
+ file1.create(new ByteArrayInputStream(new byte[0]), true, monitor);
+ IFile file2 = subFolder2.getFile("test2.c");
+ file2.create(new ByteArrayInputStream(new byte[0]), true, monitor);
+
+ List<ICElement> cSourceRoots = testProject.getChildrenOfType(ICElement.C_CCONTAINER);
+ assertEquals(1, cSourceRoots.size());
+ assertEquals(testProject.getElementName(), cSourceRoots.get(0).getElementName());
+
+ ISourceRoot sourceRoot = (ISourceRoot) cSourceRoots.get(0);
+
+ List<ICElement> cContainers = sourceRoot.getChildrenOfType(ICElement.C_CCONTAINER);
+ cContainers.removeIf(element -> ".settings".equals(element.getElementName()));
+ assertEquals(1, cContainers.size());
+ assertEquals("test", cContainers.get(0).getElementName());
+
+ ICContainer testContainer = (ICContainer) cContainers.get(0);
+
+ List<ICElement> subContainers = testContainer.getChildrenOfType(ICElement.C_CCONTAINER);
+ assertEquals(2, subContainers.size());
+ assertEquals("1", subContainers.get(0).getElementName());
+ assertEquals("2", subContainers.get(1).getElementName());
+ Object[] nonCResources = testContainer.getNonCResources();
+ assertEquals(0, nonCResources.length);
+
+ List<ICElement> tUnits = testContainer.getChildrenOfType(ICElement.C_UNIT);
+ assertEquals(1, tUnits.size());
+ assertEquals("test0.c", tUnits.get(0).getElementName());
+
+ ICProjectDescription prjDesc = CoreModel.getDefault().getProjectDescription(testProject.getProject(), true);
+ ICConfigurationDescription activeCfg = prjDesc.getActiveConfiguration();
+ assertNotNull(activeCfg);
+
+ // add filter to source entry
+ ICSourceEntry[] entries = activeCfg.getSourceEntries();
+ final String sourceEntryName = entries[0].getName();
+ final IPath[] exclusionPatterns = new IPath[] { new Path("test/*") };
+
+ ICSourceEntry entry = new CSourceEntry(sourceEntryName, exclusionPatterns, entries[0].getFlags());
+ activeCfg.setSourceEntries(new ICSourceEntry[] { entry });
+
+ // store the changed configuration
+ CoreModel.getDefault().setProjectDescription(testProject.getProject(), prjDesc);
+
+ cSourceRoots = testProject.getChildrenOfType(ICElement.C_CCONTAINER);
+ assertEquals(1, cSourceRoots.size());
+ assertEquals(testProject.getElementName(), cSourceRoots.get(0).getElementName());
+
+ sourceRoot = (ISourceRoot) cSourceRoots.get(0);
+
+ cContainers = sourceRoot.getChildrenOfType(ICElement.C_CCONTAINER);
+ cContainers.removeIf(element -> ".settings".equals(element.getElementName()));
+ assertEquals(1, cContainers.size());
+ assertEquals("test", cContainers.get(0).getElementName());
+
+ testContainer = (ICContainer) cContainers.get(0);
+
+ tUnits = testContainer.getChildrenOfType(ICElement.C_UNIT);
+ assertEquals(0, tUnits.size());
+
+ subContainers = testContainer.getChildrenOfType(ICElement.C_CCONTAINER);
+ assertEquals(0, subContainers.size());
+ nonCResources = testContainer.getNonCResources();
+ assertEquals(3, nonCResources.length);
+ assertEquals(subFolder1, nonCResources[0]);
+ assertEquals(subFolder2, nonCResources[1]);
+ assertEquals(file0, nonCResources[2]);
+ } finally {
+ try {
+ if (testProject != null) {
+ testProject.getProject().delete(true, true, monitor);
+ }
+ } catch (CoreException e) {
+ }
}
}
// bug 179474
public void testSourceExclusionFilters_179474() throws Exception {
- ICProject testProject;
- testProject = CProjectHelper.createCProject("bug179474", "none", IPDOMManager.ID_NO_INDEXER);
- if (testProject == null)
- fail("Unable to create project");
-
- IFolder subFolder = testProject.getProject().getFolder("sub");
- subFolder.create(true, true, monitor);
- IFile fileA = testProject.getProject().getFile("a.cpp");
- fileA.create(new ByteArrayInputStream(new byte[0]), true, monitor);
- IFile fileB = subFolder.getFile("b.cpp");
- fileB.create(new ByteArrayInputStream(new byte[0]), true, monitor);
+ ICProject testProject = null;
+ try {
+ testProject = CProjectHelper.createCProject("bug179474", "none", IPDOMManager.ID_NO_INDEXER);
+ if (testProject == null)
+ fail("Unable to create project");
- List<ICElement> cSourceRoots = testProject.getChildrenOfType(ICElement.C_CCONTAINER);
- assertEquals(1, cSourceRoots.size());
- assertEquals(testProject.getElementName(), cSourceRoots.get(0).getElementName());
+ IFolder subFolder = testProject.getProject().getFolder("sub");
+ subFolder.create(true, true, monitor);
+ IFile fileA = testProject.getProject().getFile("a.cpp");
+ fileA.create(new ByteArrayInputStream(new byte[0]), true, monitor);
+ IFile fileB = subFolder.getFile("b.cpp");
+ fileB.create(new ByteArrayInputStream(new byte[0]), true, monitor);
- ISourceRoot sourceRoot = (ISourceRoot) cSourceRoots.get(0);
+ List<ICElement> cSourceRoots = testProject.getChildrenOfType(ICElement.C_CCONTAINER);
+ assertEquals(1, cSourceRoots.size());
+ assertEquals(testProject.getElementName(), cSourceRoots.get(0).getElementName());
- List<ICElement> cContainers = sourceRoot.getChildrenOfType(ICElement.C_CCONTAINER);
- assertEquals(1, cContainers.size());
- assertEquals(subFolder.getName(), cContainers.get(0).getElementName());
+ ISourceRoot sourceRoot = (ISourceRoot) cSourceRoots.get(0);
- ICContainer subContainer = (ICContainer) cContainers.get(0);
+ List<ICElement> cContainers = sourceRoot.getChildrenOfType(ICElement.C_CCONTAINER);
+ cContainers.removeIf(element -> ".settings".equals(element.getElementName()));
+ assertEquals(1, cContainers.size());
+ assertEquals(subFolder.getName(), cContainers.get(0).getElementName());
- List<ICElement> tUnits = subContainer.getChildrenOfType(ICElement.C_UNIT);
- assertEquals(1, tUnits.size());
- assertEquals(fileB.getName(), tUnits.get(0).getElementName());
+ ICContainer subContainer = (ICContainer) cContainers.get(0);
- tUnits = sourceRoot.getChildrenOfType(ICElement.C_UNIT);
- assertEquals(1, tUnits.size());
- assertEquals(fileA.getName(), tUnits.get(0).getElementName());
+ List<ICElement> tUnits = subContainer.getChildrenOfType(ICElement.C_UNIT);
+ assertEquals(1, tUnits.size());
+ assertEquals(fileB.getName(), tUnits.get(0).getElementName());
- ICProjectDescription prjDesc = CoreModel.getDefault().getProjectDescription(testProject.getProject(), true);
- ICConfigurationDescription activeCfg = prjDesc.getActiveConfiguration();
- assertNotNull(activeCfg);
+ tUnits = sourceRoot.getChildrenOfType(ICElement.C_UNIT);
+ assertEquals(1, tUnits.size());
+ assertEquals(fileA.getName(), tUnits.get(0).getElementName());
- // add filter to source entry
- ICSourceEntry[] entries = activeCfg.getSourceEntries();
- final String sourceEntryName = entries[0].getName();
- final IPath[] exclusionPatterns = new IPath[] { new Path("**/*.cpp") };
+ ICProjectDescription prjDesc = CoreModel.getDefault().getProjectDescription(testProject.getProject(), true);
+ ICConfigurationDescription activeCfg = prjDesc.getActiveConfiguration();
+ assertNotNull(activeCfg);
- ICSourceEntry entry = new CSourceEntry(sourceEntryName, exclusionPatterns, entries[0].getFlags());
- activeCfg.setSourceEntries(new ICSourceEntry[] { entry });
+ // add filter to source entry
+ ICSourceEntry[] entries = activeCfg.getSourceEntries();
+ final String sourceEntryName = entries[0].getName();
+ final IPath[] exclusionPatterns = new IPath[] { new Path("**/*.cpp") };
- // store the changed configuration
- CoreModel.getDefault().setProjectDescription(testProject.getProject(), prjDesc);
+ ICSourceEntry entry = new CSourceEntry(sourceEntryName, exclusionPatterns, entries[0].getFlags());
+ activeCfg.setSourceEntries(new ICSourceEntry[] { entry });
- cSourceRoots = testProject.getChildrenOfType(ICElement.C_CCONTAINER);
- assertEquals(1, cSourceRoots.size());
- assertEquals(testProject.getElementName(), cSourceRoots.get(0).getElementName());
+ // store the changed configuration
+ CoreModel.getDefault().setProjectDescription(testProject.getProject(), prjDesc);
- sourceRoot = (ISourceRoot) cSourceRoots.get(0);
+ cSourceRoots = testProject.getChildrenOfType(ICElement.C_CCONTAINER);
+ assertEquals(1, cSourceRoots.size());
+ assertEquals(testProject.getElementName(), cSourceRoots.get(0).getElementName());
- cContainers = sourceRoot.getChildrenOfType(ICElement.C_CCONTAINER);
- assertEquals(1, cContainers.size());
- assertEquals(subFolder.getName(), cContainers.get(0).getElementName());
+ sourceRoot = (ISourceRoot) cSourceRoots.get(0);
- subContainer = (ICContainer) cContainers.get(0);
+ cContainers = sourceRoot.getChildrenOfType(ICElement.C_CCONTAINER);
+ cContainers.removeIf(element -> ".settings".equals(element.getElementName()));
+ assertEquals(1, cContainers.size());
+ assertEquals(subFolder.getName(), cContainers.get(0).getElementName());
- tUnits = subContainer.getChildrenOfType(ICElement.C_UNIT);
- assertEquals(0, tUnits.size());
+ subContainer = (ICContainer) cContainers.get(0);
- tUnits = sourceRoot.getChildrenOfType(ICElement.C_UNIT);
- assertEquals(0, tUnits.size());
+ tUnits = subContainer.getChildrenOfType(ICElement.C_UNIT);
+ assertEquals(0, tUnits.size());
- Object[] nonCResources = subContainer.getNonCResources();
- assertEquals(1, nonCResources.length);
- assertEquals(fileB, nonCResources[0]);
+ tUnits = sourceRoot.getChildrenOfType(ICElement.C_UNIT);
+ assertEquals(0, tUnits.size());
- nonCResources = sourceRoot.getNonCResources();
- assertTrue(Arrays.asList(nonCResources).contains(fileA));
+ Object[] nonCResources = subContainer.getNonCResources();
+ assertEquals(1, nonCResources.length);
+ assertEquals(fileB, nonCResources[0]);
- try {
- testProject.getProject().delete(true, true, monitor);
- } catch (CoreException e) {
+ nonCResources = sourceRoot.getNonCResources();
+ assertTrue(Arrays.asList(nonCResources).contains(fileA));
+ } finally {
+ try {
+ if (testProject != null) {
+ testProject.getProject().delete(true, true, monitor);
+ }
+ } catch (CoreException e) {
+ }
}
}
diff --git a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/TranslationUnitBaseTest.java b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/TranslationUnitBaseTest.java
index 398ac110b33..ccd886b751e 100644
--- a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/TranslationUnitBaseTest.java
+++ b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/TranslationUnitBaseTest.java
@@ -34,7 +34,7 @@ import junit.framework.TestCase;
* @author jcamelon
*
*/
-public class TranslationUnitBaseTest extends TestCase {
+public abstract class TranslationUnitBaseTest extends TestCase {
/**
*
*/
diff --git a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/settings/model/AllCProjectDescriptionTestSuite.java b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/settings/model/AllCProjectDescriptionTestSuite.java
new file mode 100644
index 00000000000..8019a4a7733
--- /dev/null
+++ b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/settings/model/AllCProjectDescriptionTestSuite.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2010 Intel Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Intel Corporation - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.settings.model;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * @deprecated In preparation for moving to JUnit5 test suites are deprecated. See Bug 569839
+ */
+@Deprecated
+public class AllCProjectDescriptionTestSuite {
+ public static void main(String[] args) {
+ junit.textui.TestRunner.run(suite());
+ }
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(AllCProjectDescriptionTestSuite.class.getName());
+
+ // Just add more test cases here as you create them for
+ // each class being tested
+ suite.addTest(CConfigurationDescriptionReferenceTests.suite());
+ suite.addTest(CConfigurationDescriptionExportSettingsTests.suite());
+ suite.addTest(ExternalSettingsProviderTests.suite());
+ suite.addTest(CfgSettingsTests.suite());
+ suite.addTest(CProjectDescriptionDeltaTests.suite());
+ suite.addTest(ProjectCreationStateTests.suite());
+ suite.addTest(BackwardCompatibilityTests.suite());
+ suite.addTest(CProjectDescriptionBasicTests.suite());
+ suite.addTest(CProjectDescriptionStorageTests.suite());
+ return suite;
+ }
+}
diff --git a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/settings/model/AllCProjectDescriptionTests.java b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/settings/model/AllCProjectDescriptionTests.java
deleted file mode 100644
index 632ec266b32..00000000000
--- a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/settings/model/AllCProjectDescriptionTests.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2010 Intel Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Intel Corporation - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.settings.model;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-public class AllCProjectDescriptionTests {
- public static void main(String[] args) {
- junit.textui.TestRunner.run(suite());
- }
-
- public static Test suite() {
- TestSuite suite = new TestSuite(AllCProjectDescriptionTests.class.getName());
-
- // Just add more test cases here as you create them for
- // each class being tested
- suite.addTest(CConfigurationDescriptionReferenceTests.suite());
- suite.addTest(CConfigurationDescriptionExportSettings.suite());
- suite.addTest(ExternalSettingsProviderTests.suite());
- suite.addTest(CfgSettingsTests.suite());
- suite.addTest(CProjectDescriptionDeltaTests.suite());
- suite.addTest(ProjectCreationStateTests.suite());
- suite.addTest(BackwardCompatibilityTests.suite());
- suite.addTest(CProjectDescriptionBasicTests.suite());
- suite.addTest(CProjectDescriptionStorageTests.suite());
- return suite;
- }
-}
diff --git a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/settings/model/CConfigurationDescriptionExportSettings.java b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/settings/model/CConfigurationDescriptionExportSettings.java
deleted file mode 100644
index a5a3751e864..00000000000
--- a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/settings/model/CConfigurationDescriptionExportSettings.java
+++ /dev/null
@@ -1,499 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010, 2012 Broadcom Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * James Blackburn (Broadcom Corp.)
- *******************************************************************************/
-
-package org.eclipse.cdt.core.settings.model;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.cdt.core.model.CoreModel;
-import org.eclipse.cdt.core.testplugin.ResourceHelper;
-import org.eclipse.cdt.core.testplugin.util.BaseTestCase;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IWorkspaceRunnable;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-
-import junit.framework.TestSuite;
-
-/**
- * Class for testing exported settings and project references.
- * This functionality is provided by the CfgExportSettingContainerFactory which plugins
- * into the CExternalSettingsManager
- */
-public class CConfigurationDescriptionExportSettings extends BaseTestCase {
-
- CoreModel coreModel = CoreModel.getDefault();
-
- public static TestSuite suite() {
- return suite(CConfigurationDescriptionExportSettings.class, "_");
- }
-
- // Setting entries 1
- final ICLanguageSettingEntry entries[] = new ICLanguageSettingEntry[] { new CMacroEntry("a", "b", 0),
- new CMacroEntry("c", "d", 0), new CIncludePathEntry("a/b/c", 0), new CIncludePathEntry("d/e/f", 0), };
-
- // Setting entries 2
- final ICLanguageSettingEntry entries2[] = new ICLanguageSettingEntry[] { new CMacroEntry("a2", "b2", 0),
- new CMacroEntry("c2", "d2", 0), new CIncludePathEntry("a/b/c/2", 0), new CIncludePathEntry("d/e/f/2", 0), };
-
- /**
- * This tests for simple reference propagation.
- * It used to live in the Managedbuild testsuite in ProjectModelTests.java
- * but is moved here as it doesn't test any managedbuilder specific functionality
- */
- public void testReferences() throws Exception {
- final String projectName4 = "test4";
- final String projectName5 = "test5";
-
- IProject project4 = ResourceHelper.createCDTProjectWithConfig(projectName4);
- IProject project5 = ResourceHelper.createCDTProjectWithConfig(projectName5);
-
- ICProjectDescription des4 = coreModel.getProjectDescription(project4);
- ICProjectDescription des5 = coreModel.getProjectDescription(project5);
- ICConfigurationDescription dess[] = des5.getConfigurations();
-
- dess[0].createExternalSetting(null, null, null, entries);
- dess[0].setActive();
-
- ICExternalSetting extSettings[] = dess[0].getExternalSettings();
- assertEquals(extSettings.length, 1);
-
- checkEquivContents(extSettings[0].getEntries(), entries);
- List<ICLanguageSettingEntry> list = new ArrayList<>(Arrays.asList(entries));
- list.remove(3);
- list.remove(2);
- checkEquivContents(extSettings[0].getEntries(ICSettingEntry.MACRO), list.toArray());
- list = new ArrayList<>(Arrays.asList(entries));
- list.remove(0);
- list.remove(0);
- checkEquivContents(extSettings[0].getEntries(ICSettingEntry.INCLUDE_PATH), list.toArray());
- coreModel.setProjectDescription(project5, des5);
-
- extSettings = coreModel.getProjectDescription(project5).getActiveConfiguration().getExternalSettings();
- assertEquals(extSettings.length, 1);
-
- checkEquivContents(extSettings[0].getEntries(), entries);
- list = new ArrayList<>(Arrays.asList(entries));
- list.remove(3);
- list.remove(2);
- checkEquivContents(extSettings[0].getEntries(ICSettingEntry.MACRO), list.toArray());
- list = new ArrayList<>(Arrays.asList(entries));
- list.remove(0);
- list.remove(0);
- checkEquivContents(extSettings[0].getEntries(ICSettingEntry.INCLUDE_PATH), list.toArray());
-
- dess = des4.getConfigurations();
- ICLanguageSetting ls = dess[0].getRootFolderDescription().getLanguageSettingForFile("a.c");
- ICLanguageSettingEntry macros[] = ls.getSettingEntries(ICSettingEntry.MACRO);
- ICLanguageSettingEntry includes[] = ls.getSettingEntries(ICSettingEntry.INCLUDE_PATH);
- assertFalse(Arrays.asList(macros).contains(entries[0]));
- assertFalse(Arrays.asList(macros).contains(entries[1]));
- assertFalse(Arrays.asList(includes).contains(entries[2]));
- assertFalse(Arrays.asList(includes).contains(entries[3]));
- Map<String, String> map = new HashMap<>();
- map.put(projectName5, "");
- dess[0].setReferenceInfo(map);
- ICLanguageSettingEntry updatedMacros[] = ls.getSettingEntries(ICSettingEntry.MACRO);
- ICLanguageSettingEntry udatedIncludes[] = ls.getSettingEntries(ICSettingEntry.INCLUDE_PATH);
- assertTrue(Arrays.asList(updatedMacros).contains(entries[0]));
- assertTrue(Arrays.asList(updatedMacros).contains(entries[1]));
- assertTrue(Arrays.asList(udatedIncludes).contains(entries[2]));
- assertTrue(Arrays.asList(udatedIncludes).contains(entries[3]));
- }
-
- /**
- * This tests importing projects with references works even if the projects are
- * imported in opposite order
- * @throws Exception
- */
- public void testProjectImport() throws Exception {
- final IProject libProj = ResourceHelper.createCDTProjectWithConfig("libProj");
- final IProject mainProj = ResourceHelper.createCDTProjectWithConfig("mainProj");
-
- // set the settings on the lib config; reference it from the main config
- {
- ICProjectDescription desLib = coreModel.getProjectDescription(libProj);
- ICProjectDescription desMain = coreModel.getProjectDescription(mainProj);
- ICConfigurationDescription cfgLib = desLib.getActiveConfiguration();
- ICConfigurationDescription cfgMain = desMain.getActiveConfiguration();
-
- cfgLib.createExternalSetting(null, null, null, entries);
- coreModel.setProjectDescription(libProj, desLib);
-
- // Main Project references lib project
- cfgMain.setReferenceInfo(new HashMap<String, String>() {
- {
- put(libProj.getName(), "");
- }
- });
- coreModel.setProjectDescription(mainProj, desMain);
-
- // Referenced settings have been picked up
- for (ICLanguageSettingEntry e : entries) {
- assertTrue(cfgMain.getRootFolderDescription().getLanguageSettingForFile("a.c")
- .getSettingEntriesList(e.getKind()).contains(e));
- }
- }
-
- // Now delete the two projects, import main first
- // then lib and check we're A-Ok
- libProj.delete(false, false, null);
- mainProj.delete(false, false, null);
-
- // project description obviously no longer eixsts
- assertNull(coreModel.getProjectDescription(mainProj));
- assertNull(coreModel.getProjectDescription(libProj));
-
- // Re-import the main project first
- mainProj.create(null);
- mainProj.open(null);
-
- // Now re-open the lib project
- assertFalse(libProj.exists());
- libProj.create(null);
- libProj.open(null);
-
- // Referenced settings should still exist
- ICConfigurationDescription cfgMain = coreModel.getProjectDescription(mainProj, false).getActiveConfiguration();
- ICConfigurationDescription cfgLib = coreModel.getProjectDescription(libProj, false).getActiveConfiguration();
-
- checkEquivContents(cfgLib.getExternalSettings()[0].getEntries(), entries);
- for (ICLanguageSettingEntry e : entries) {
- assertTrue(cfgMain.getRootFolderDescription().getLanguageSettingForFile("a.c")
- .getSettingEntriesList(e.getKind()).contains(e));
- }
- }
-
- /**
- * Tests that updating the exported settings on the active configuration, without updating the set
- * of references, is correctly picked up in referencing projects.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=312575
- */
- public void testUpdateExportedSettingsActiveCfg() throws Exception {
- final IProject libProj = ResourceHelper.createCDTProjectWithConfig("libUpdateExtSettings");
- final IProject mainProj = ResourceHelper.createCDTProjectWithConfig("mainProjUpdateExtSettings");
-
- {
- // set the settings on the lib config; reference it from the main config
- ICProjectDescription desLib = coreModel.getProjectDescription(libProj);
- ICProjectDescription desMain = coreModel.getProjectDescription(mainProj);
- ICConfigurationDescription cfgLib = desLib.getActiveConfiguration();
- ICConfigurationDescription cfgMain = desMain.getActiveConfiguration();
-
- cfgLib.createExternalSetting(null, null, null, entries);
- coreModel.setProjectDescription(libProj, desLib);
-
- // Main Project references lib project
- cfgMain.setReferenceInfo(new HashMap<String, String>() {
- {
- put(libProj.getName(), "");
- }
- });
- coreModel.setProjectDescription(mainProj, desMain);
-
- // Referenced settings have been picked up
- for (ICLanguageSettingEntry e : entries) {
- assertTrue(cfgMain.getRootFolderDescription().getLanguageSettingForFile("a.c")
- .getSettingEntriesList(e.getKind()).contains(e));
- }
- }
-
- {
- // Now apply different language setting entries
- ICProjectDescription desLib = coreModel.getProjectDescription(libProj);
- ICConfigurationDescription cfgLib = desLib.getActiveConfiguration();
- cfgLib.removeExternalSetting(cfgLib.getExternalSettings()[0]);
- cfgLib.createExternalSetting(null, null, null, entries2);
- coreModel.setProjectDescription(libProj, desLib);
-
- // Check the exported settings is correct
- checkEquivContents(entries2, cfgLib.getExternalSettings()[0].getEntries());
- // Fetch the configuration a-fresh to pick up the settings
- ICConfigurationDescription cfgMain = coreModel.getProjectDescription(mainProj, false)
- .getActiveConfiguration();
- assertTrue(cfgMain.getReferenceInfo().containsKey(libProj.getName()));
-
- // Referenced settings have changed from entries -> entries2
- for (ICLanguageSettingEntry e : entries)
- assertTrue(!cfgMain.getRootFolderDescription().getLanguageSettingForFile("a.c")
- .getSettingEntriesList(e.getKind()).contains(e));
- for (ICLanguageSettingEntry e : entries2)
- assertTrue(cfgMain.getRootFolderDescription().getLanguageSettingForFile("a.c")
- .getSettingEntriesList(e.getKind()).contains(e));
- }
- }
-
- /**
- * This is the same as testeUpdateExprtedSettingsActiveCfg except we explicitly name the
- * referenced configuration.
- * Tests that updating the exported settings on a name configuration, without updating the set
- * of references, is correctly picked up in referencing projects
- */
- public void testUpdateExportedSettingsNamedConfig() throws Exception {
- final IProject libProj = ResourceHelper.createCDTProjectWithConfig("libUpdateExpSettingsNamed");
- final IProject mainProj = ResourceHelper.createCDTProjectWithConfig("mainProjUpdateExpSettingsNamed");
-
- {
- // set the settings on the lib config; reference it from the main config
- ICProjectDescription desLib = coreModel.getProjectDescription(libProj);
- ICProjectDescription desMain = coreModel.getProjectDescription(mainProj);
- final ICConfigurationDescription cfgLib = desLib.getActiveConfiguration();
- ICConfigurationDescription cfgMain = desMain.getActiveConfiguration();
-
- cfgLib.createExternalSetting(null, null, null, entries);
- coreModel.setProjectDescription(libProj, desLib);
-
- // Main Project references lib project
- cfgMain.setReferenceInfo(new HashMap<String, String>() {
- {
- put(libProj.getName(), cfgLib.getId());
- }
- });
- coreModel.setProjectDescription(mainProj, desMain);
-
- // Referenced settings have been picked up
- for (ICLanguageSettingEntry e : entries) {
- assertTrue(cfgMain.getRootFolderDescription().getLanguageSettingForFile("a.c")
- .getSettingEntriesList(e.getKind()).contains(e));
- }
- }
-
- {
- // Now apply different language setting entries
- ICProjectDescription desLib = coreModel.getProjectDescription(libProj);
- ICConfigurationDescription cfgLib = desLib.getActiveConfiguration();
- cfgLib.removeExternalSetting(cfgLib.getExternalSettings()[0]);
- cfgLib.createExternalSetting(null, null, null, entries2);
- coreModel.setProjectDescription(libProj, desLib);
-
- // Check the exported settings is correct
- checkEquivContents(entries2, cfgLib.getExternalSettings()[0].getEntries());
- // Fetch the configuration a-fresh to pick up the settings
- ICConfigurationDescription cfgMain = coreModel.getProjectDescription(mainProj, false)
- .getActiveConfiguration();
- assertTrue(cfgMain.getReferenceInfo().get(libProj.getName()).equals(cfgLib.getId()));
-
- // Referenced settings have changed from entries -> entries2
- for (ICLanguageSettingEntry e : entries)
- assertTrue(!cfgMain.getRootFolderDescription().getLanguageSettingForFile("a.c")
- .getSettingEntriesList(e.getKind()).contains(e));
- for (ICLanguageSettingEntry e : entries2)
- assertTrue(cfgMain.getRootFolderDescription().getLanguageSettingForFile("a.c")
- .getSettingEntriesList(e.getKind()).contains(e));
- }
- }
-
- /**
- * Bug 312575 tests that updating a .cproject external (e.g. via a repository update)
- * causes referencing projects to correctly pick up changes to the project exports.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=312575
- */
- public void testExportedSettingsExternalUpdate() throws Exception {
- final IProject libProj = ResourceHelper.createCDTProjectWithConfig("libProj312575");
- final IProject mainProj = ResourceHelper.createCDTProjectWithConfig("mainProj312575");
-
- // .cproject file and its backup
- IFile libCproject = libProj.getFile(".cproject");
- IFile libCproject_back = libProj.getFile(".cproject_back");
-
- // set the settings on the lib config; reference it from the main config
- {
- ICProjectDescription desLib = coreModel.getProjectDescription(libProj);
- ICProjectDescription desMain = coreModel.getProjectDescription(mainProj);
- final ICConfigurationDescription cfgLib = desLib.getActiveConfiguration();
- ICConfigurationDescription cfgMain = desMain.getActiveConfiguration();
-
- cfgLib.createExternalSetting(null, null, null, entries);
- coreModel.setProjectDescription(libProj, desLib);
-
- // Main Project references lib project
- cfgMain.setReferenceInfo(new HashMap<String, String>() {
- {
- put(libProj.getName(), cfgLib.getId());
- }
- });
- coreModel.setProjectDescription(mainProj, desMain);
- checkEquivContents(entries, cfgLib.getExternalSettings()[0].getEntries());
-
- // Referenced settings have been picked up
- for (ICLanguageSettingEntry e : entries) {
- assertTrue(cfgMain.getRootFolderDescription().getLanguageSettingForFile("a.c")
- .getSettingEntriesList(e.getKind()).contains(e));
- }
-
- // Backup the .cproject
- libCproject_back.create(libCproject.getContents(), false, null);
-
- // Now apply different language setting entries
- cfgLib.removeExternalSetting(cfgLib.getExternalSettings()[0]);
- cfgLib.createExternalSetting(null, null, null, entries2);
- coreModel.setProjectDescription(libProj, desLib);
- checkEquivContents(entries2, cfgLib.getExternalSettings()[0].getEntries());
- // Referenced settings have been picked up
- for (ICLanguageSettingEntry e : entries2) {
- assertTrue(coreModel.getProjectDescription(mainProj).getActiveConfiguration().getRootFolderDescription()
- .getLanguageSettingForFile("a.c").getSettingEntriesList(e.getKind()).contains(e));
- }
- }
-
- // Now replace the .cproject with .cproject_back. The exported settings should be picked up in the referenced config
- libCproject.setContents(libCproject_back.getContents(), IResource.NONE, null);
-
- // Referenced settings should still exist
- ICConfigurationDescription cfgLib = coreModel.getProjectDescription(libProj, false).getActiveConfiguration();
- ICConfigurationDescription cfgMain = coreModel.getProjectDescription(mainProj, false).getActiveConfiguration();
-
- checkEquivContents(entries, cfgLib.getExternalSettings()[0].getEntries());
- // Referencing project contains entries and not entries2
- for (ICLanguageSettingEntry e : entries) {
- assertTrue(cfgMain.getRootFolderDescription().getLanguageSettingForFile("a.c")
- .getSettingEntriesList(e.getKind()).contains(e));
- }
- for (ICLanguageSettingEntry e : entries2) {
- assertTrue(!cfgMain.getRootFolderDescription().getLanguageSettingForFile("a.c")
- .getSettingEntriesList(e.getKind()).contains(e));
- }
- }
-
- /**
- * Two configurations in two projects reference each other.
- * Test that the system is happy with this and updates each correctly on
- * the other's change.
- */
- public void _testExportedSettingsCyclicExternalUpdate() throws Exception {
- final IProject libProj = ResourceHelper.createCDTProjectWithConfig("libProjCyclic");
- final IProject mainProj = ResourceHelper.createCDTProjectWithConfig("libProjCyclic2");
-
- // .cproject file and its backup
- final IFile libCproject = libProj.getFile(".cproject");
- final IFile libCproject_back = libProj.getFile(".cproject_back");
- final IFile mainCproject = mainProj.getFile(".cproject");
- final IFile mainCproject_back = mainProj.getFile(".cproject_back");
-
- // set the settings on the lib config; reference it from the main config & vice versa
- {
- ICProjectDescription desLib = coreModel.getProjectDescription(libProj);
- ICProjectDescription desMain = coreModel.getProjectDescription(mainProj);
- final ICConfigurationDescription cfgLib = desLib.getActiveConfiguration();
- final ICConfigurationDescription cfgMain = desMain.getActiveConfiguration();
-
- // Lib Exports entries
- cfgLib.createExternalSetting(null, null, null, entries);
- // Main Exports entries2
- cfgMain.createExternalSetting(null, null, null, entries2);
-
- // Main Project references lib project
- cfgMain.setReferenceInfo(new HashMap<String, String>() {
- {
- put(libProj.getName(), cfgLib.getId());
- }
- });
- cfgLib.setReferenceInfo(new HashMap<String, String>() {
- {
- put(mainProj.getName(), cfgMain.getId());
- }
- });
- coreModel.setProjectDescription(libProj, desLib);
- coreModel.setProjectDescription(mainProj, desMain);
-
- checkEquivContents(entries, cfgLib.getExternalSettings()[0].getEntries());
- checkEquivContents(entries2, cfgMain.getExternalSettings()[0].getEntries());
-
- // Backup the .cproject
- libCproject_back.create(libCproject.getContents(), false, null);
- mainCproject_back.create(mainCproject.getContents(), false, null);
-
- // Now apply different language setting entries
- cfgLib.removeExternalSetting(cfgLib.getExternalSettings()[0]);
- cfgLib.createExternalSetting(null, null, null, entries2);
- coreModel.setProjectDescription(libProj, desLib);
- cfgMain.removeExternalSetting(cfgMain.getExternalSettings()[0]);
- cfgMain.createExternalSetting(null, null, null, entries);
- coreModel.setProjectDescription(mainProj, desMain);
-
- checkEquivContents(entries2, cfgLib.getExternalSettings()[0].getEntries());
- checkEquivContents(entries, cfgMain.getExternalSettings()[0].getEntries());
-
- }
- ICConfigurationDescription cfgLib = coreModel.getProjectDescription(libProj).getActiveConfiguration();
- ICConfigurationDescription cfgMain = coreModel.getProjectDescription(mainProj).getActiveConfiguration();
-
- // Tests the exports are now the right way round
- for (ICLanguageSettingEntry e : entries) {
- assertTrue(!cfgMain.getRootFolderDescription().getLanguageSettingForFile("a.c")
- .getSettingEntriesList(e.getKind()).contains(e));
- assertTrue(cfgLib.getRootFolderDescription().getLanguageSettingForFile("a.c")
- .getSettingEntriesList(e.getKind()).contains(e));
- }
- for (ICLanguageSettingEntry e : entries2) {
- assertTrue(cfgMain.getRootFolderDescription().getLanguageSettingForFile("a.c")
- .getSettingEntriesList(e.getKind()).contains(e));
- assertTrue(!cfgLib.getRootFolderDescription().getLanguageSettingForFile("a.c")
- .getSettingEntriesList(e.getKind()).contains(e));
- }
-
- // Now replace the .cproject with .cproject_back. The exported settings should be picked up in the referenced config
- ResourcesPlugin.getWorkspace().run(new IWorkspaceRunnable() {
- @Override
- public void run(IProgressMonitor monitor) throws CoreException {
- libCproject.setContents(libCproject_back.getContents(), IResource.NONE, null);
- mainCproject.setContents(mainCproject_back.getContents(), IResource.NONE, null);
- }
- }, null);
-
- // Referenced settings should still exist
- cfgLib = coreModel.getProjectDescription(libProj).getActiveConfiguration();
- cfgMain = coreModel.getProjectDescription(mainProj).getActiveConfiguration();
-
- checkEquivContents(entries, cfgLib.getExternalSettings()[0].getEntries());
- checkEquivContents(entries2, cfgMain.getExternalSettings()[0].getEntries());
- // Referencing project contains entries and not entries2
- for (ICLanguageSettingEntry e : entries) {
- assertTrue(cfgMain.getRootFolderDescription().getLanguageSettingForFile("a.c")
- .getSettingEntriesList(e.getKind()).contains(e));
- assertTrue(!cfgLib.getRootFolderDescription().getLanguageSettingForFile("a.c")
- .getSettingEntriesList(e.getKind()).contains(e));
- }
- for (ICLanguageSettingEntry e : entries2) {
- assertTrue(!cfgMain.getRootFolderDescription().getLanguageSettingForFile("a.c")
- .getSettingEntriesList(e.getKind()).contains(e));
- assertTrue(cfgLib.getRootFolderDescription().getLanguageSettingForFile("a.c")
- .getSettingEntriesList(e.getKind()).contains(e));
- }
- }
-
- private void checkEquivContents(Object[] expected, Object[] actual) {
- if (expected == null) {
- assertTrue(actual == null);
- return;
- }
- assertTrue(actual != null);
- assertEquals(expected.length, actual.length);
-
- Set s1 = new HashSet(Arrays.asList(expected));
- Set s2 = new HashSet(Arrays.asList(actual));
- assertEquals(expected.length, s1.size());
- assertEquals(s1, s2);
- }
-
-}
diff --git a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/settings/model/CConfigurationDescriptionExportSettingsTests.java b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/settings/model/CConfigurationDescriptionExportSettingsTests.java
new file mode 100644
index 00000000000..add611d7b67
--- /dev/null
+++ b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/settings/model/CConfigurationDescriptionExportSettingsTests.java
@@ -0,0 +1,499 @@
+/*******************************************************************************
+ * Copyright (c) 2010, 2012 Broadcom Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * James Blackburn (Broadcom Corp.)
+ *******************************************************************************/
+
+package org.eclipse.cdt.core.settings.model;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.cdt.core.model.CoreModel;
+import org.eclipse.cdt.core.testplugin.ResourceHelper;
+import org.eclipse.cdt.core.testplugin.util.BaseTestCase;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IWorkspaceRunnable;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+
+import junit.framework.TestSuite;
+
+/**
+ * Class for testing exported settings and project references.
+ * This functionality is provided by the CfgExportSettingContainerFactory which plugins
+ * into the CExternalSettingsManager
+ */
+public class CConfigurationDescriptionExportSettingsTests extends BaseTestCase {
+
+ CoreModel coreModel = CoreModel.getDefault();
+
+ public static TestSuite suite() {
+ return suite(CConfigurationDescriptionExportSettingsTests.class, "_");
+ }
+
+ // Setting entries 1
+ final ICLanguageSettingEntry entries[] = new ICLanguageSettingEntry[] { new CMacroEntry("a", "b", 0),
+ new CMacroEntry("c", "d", 0), new CIncludePathEntry("a/b/c", 0), new CIncludePathEntry("d/e/f", 0), };
+
+ // Setting entries 2
+ final ICLanguageSettingEntry entries2[] = new ICLanguageSettingEntry[] { new CMacroEntry("a2", "b2", 0),
+ new CMacroEntry("c2", "d2", 0), new CIncludePathEntry("a/b/c/2", 0), new CIncludePathEntry("d/e/f/2", 0), };
+
+ /**
+ * This tests for simple reference propagation.
+ * It used to live in the Managedbuild testsuite in ProjectModelTests.java
+ * but is moved here as it doesn't test any managedbuilder specific functionality
+ */
+ public void testReferences() throws Exception {
+ final String projectName4 = "test4";
+ final String projectName5 = "test5";
+
+ IProject project4 = ResourceHelper.createCDTProjectWithConfig(projectName4);
+ IProject project5 = ResourceHelper.createCDTProjectWithConfig(projectName5);
+
+ ICProjectDescription des4 = coreModel.getProjectDescription(project4);
+ ICProjectDescription des5 = coreModel.getProjectDescription(project5);
+ ICConfigurationDescription dess[] = des5.getConfigurations();
+
+ dess[0].createExternalSetting(null, null, null, entries);
+ dess[0].setActive();
+
+ ICExternalSetting extSettings[] = dess[0].getExternalSettings();
+ assertEquals(extSettings.length, 1);
+
+ checkEquivContents(extSettings[0].getEntries(), entries);
+ List<ICLanguageSettingEntry> list = new ArrayList<>(Arrays.asList(entries));
+ list.remove(3);
+ list.remove(2);
+ checkEquivContents(extSettings[0].getEntries(ICSettingEntry.MACRO), list.toArray());
+ list = new ArrayList<>(Arrays.asList(entries));
+ list.remove(0);
+ list.remove(0);
+ checkEquivContents(extSettings[0].getEntries(ICSettingEntry.INCLUDE_PATH), list.toArray());
+ coreModel.setProjectDescription(project5, des5);
+
+ extSettings = coreModel.getProjectDescription(project5).getActiveConfiguration().getExternalSettings();
+ assertEquals(extSettings.length, 1);
+
+ checkEquivContents(extSettings[0].getEntries(), entries);
+ list = new ArrayList<>(Arrays.asList(entries));
+ list.remove(3);
+ list.remove(2);
+ checkEquivContents(extSettings[0].getEntries(ICSettingEntry.MACRO), list.toArray());
+ list = new ArrayList<>(Arrays.asList(entries));
+ list.remove(0);
+ list.remove(0);
+ checkEquivContents(extSettings[0].getEntries(ICSettingEntry.INCLUDE_PATH), list.toArray());
+
+ dess = des4.getConfigurations();
+ ICLanguageSetting ls = dess[0].getRootFolderDescription().getLanguageSettingForFile("a.c");
+ ICLanguageSettingEntry macros[] = ls.getSettingEntries(ICSettingEntry.MACRO);
+ ICLanguageSettingEntry includes[] = ls.getSettingEntries(ICSettingEntry.INCLUDE_PATH);
+ assertFalse(Arrays.asList(macros).contains(entries[0]));
+ assertFalse(Arrays.asList(macros).contains(entries[1]));
+ assertFalse(Arrays.asList(includes).contains(entries[2]));
+ assertFalse(Arrays.asList(includes).contains(entries[3]));
+ Map<String, String> map = new HashMap<>();
+ map.put(projectName5, "");
+ dess[0].setReferenceInfo(map);
+ ICLanguageSettingEntry updatedMacros[] = ls.getSettingEntries(ICSettingEntry.MACRO);
+ ICLanguageSettingEntry udatedIncludes[] = ls.getSettingEntries(ICSettingEntry.INCLUDE_PATH);
+ assertTrue(Arrays.asList(updatedMacros).contains(entries[0]));
+ assertTrue(Arrays.asList(updatedMacros).contains(entries[1]));
+ assertTrue(Arrays.asList(udatedIncludes).contains(entries[2]));
+ assertTrue(Arrays.asList(udatedIncludes).contains(entries[3]));
+ }
+
+ /**
+ * This tests importing projects with references works even if the projects are
+ * imported in opposite order
+ * @throws Exception
+ */
+ public void testProjectImport() throws Exception {
+ final IProject libProj = ResourceHelper.createCDTProjectWithConfig("libProj");
+ final IProject mainProj = ResourceHelper.createCDTProjectWithConfig("mainProj");
+
+ // set the settings on the lib config; reference it from the main config
+ {
+ ICProjectDescription desLib = coreModel.getProjectDescription(libProj);
+ ICProjectDescription desMain = coreModel.getProjectDescription(mainProj);
+ ICConfigurationDescription cfgLib = desLib.getActiveConfiguration();
+ ICConfigurationDescription cfgMain = desMain.getActiveConfiguration();
+
+ cfgLib.createExternalSetting(null, null, null, entries);
+ coreModel.setProjectDescription(libProj, desLib);
+
+ // Main Project references lib project
+ cfgMain.setReferenceInfo(new HashMap<String, String>() {
+ {
+ put(libProj.getName(), "");
+ }
+ });
+ coreModel.setProjectDescription(mainProj, desMain);
+
+ // Referenced settings have been picked up
+ for (ICLanguageSettingEntry e : entries) {
+ assertTrue(cfgMain.getRootFolderDescription().getLanguageSettingForFile("a.c")
+ .getSettingEntriesList(e.getKind()).contains(e));
+ }
+ }
+
+ // Now delete the two projects, import main first
+ // then lib and check we're A-Ok
+ libProj.delete(false, false, null);
+ mainProj.delete(false, false, null);
+
+ // project description obviously no longer eixsts
+ assertNull(coreModel.getProjectDescription(mainProj));
+ assertNull(coreModel.getProjectDescription(libProj));
+
+ // Re-import the main project first
+ mainProj.create(null);
+ mainProj.open(null);
+
+ // Now re-open the lib project
+ assertFalse(libProj.exists());
+ libProj.create(null);
+ libProj.open(null);
+
+ // Referenced settings should still exist
+ ICConfigurationDescription cfgMain = coreModel.getProjectDescription(mainProj, false).getActiveConfiguration();
+ ICConfigurationDescription cfgLib = coreModel.getProjectDescription(libProj, false).getActiveConfiguration();
+
+ checkEquivContents(cfgLib.getExternalSettings()[0].getEntries(), entries);
+ for (ICLanguageSettingEntry e : entries) {
+ assertTrue(cfgMain.getRootFolderDescription().getLanguageSettingForFile("a.c")
+ .getSettingEntriesList(e.getKind()).contains(e));
+ }
+ }
+
+ /**
+ * Tests that updating the exported settings on the active configuration, without updating the set
+ * of references, is correctly picked up in referencing projects.
+ * https://bugs.eclipse.org/bugs/show_bug.cgi?id=312575
+ */
+ public void testUpdateExportedSettingsActiveCfg() throws Exception {
+ final IProject libProj = ResourceHelper.createCDTProjectWithConfig("libUpdateExtSettings");
+ final IProject mainProj = ResourceHelper.createCDTProjectWithConfig("mainProjUpdateExtSettings");
+
+ {
+ // set the settings on the lib config; reference it from the main config
+ ICProjectDescription desLib = coreModel.getProjectDescription(libProj);
+ ICProjectDescription desMain = coreModel.getProjectDescription(mainProj);
+ ICConfigurationDescription cfgLib = desLib.getActiveConfiguration();
+ ICConfigurationDescription cfgMain = desMain.getActiveConfiguration();
+
+ cfgLib.createExternalSetting(null, null, null, entries);
+ coreModel.setProjectDescription(libProj, desLib);
+
+ // Main Project references lib project
+ cfgMain.setReferenceInfo(new HashMap<String, String>() {
+ {
+ put(libProj.getName(), "");
+ }
+ });
+ coreModel.setProjectDescription(mainProj, desMain);
+
+ // Referenced settings have been picked up
+ for (ICLanguageSettingEntry e : entries) {
+ assertTrue(cfgMain.getRootFolderDescription().getLanguageSettingForFile("a.c")
+ .getSettingEntriesList(e.getKind()).contains(e));
+ }
+ }
+
+ {
+ // Now apply different language setting entries
+ ICProjectDescription desLib = coreModel.getProjectDescription(libProj);
+ ICConfigurationDescription cfgLib = desLib.getActiveConfiguration();
+ cfgLib.removeExternalSetting(cfgLib.getExternalSettings()[0]);
+ cfgLib.createExternalSetting(null, null, null, entries2);
+ coreModel.setProjectDescription(libProj, desLib);
+
+ // Check the exported settings is correct
+ checkEquivContents(entries2, cfgLib.getExternalSettings()[0].getEntries());
+ // Fetch the configuration a-fresh to pick up the settings
+ ICConfigurationDescription cfgMain = coreModel.getProjectDescription(mainProj, false)
+ .getActiveConfiguration();
+ assertTrue(cfgMain.getReferenceInfo().containsKey(libProj.getName()));
+
+ // Referenced settings have changed from entries -> entries2
+ for (ICLanguageSettingEntry e : entries)
+ assertTrue(!cfgMain.getRootFolderDescription().getLanguageSettingForFile("a.c")
+ .getSettingEntriesList(e.getKind()).contains(e));
+ for (ICLanguageSettingEntry e : entries2)
+ assertTrue(cfgMain.getRootFolderDescription().getLanguageSettingForFile("a.c")
+ .getSettingEntriesList(e.getKind()).contains(e));
+ }
+ }
+
+ /**
+ * This is the same as testeUpdateExprtedSettingsActiveCfg except we explicitly name the
+ * referenced configuration.
+ * Tests that updating the exported settings on a name configuration, without updating the set
+ * of references, is correctly picked up in referencing projects
+ */
+ public void testUpdateExportedSettingsNamedConfig() throws Exception {
+ final IProject libProj = ResourceHelper.createCDTProjectWithConfig("libUpdateExpSettingsNamed");
+ final IProject mainProj = ResourceHelper.createCDTProjectWithConfig("mainProjUpdateExpSettingsNamed");
+
+ {
+ // set the settings on the lib config; reference it from the main config
+ ICProjectDescription desLib = coreModel.getProjectDescription(libProj);
+ ICProjectDescription desMain = coreModel.getProjectDescription(mainProj);
+ final ICConfigurationDescription cfgLib = desLib.getActiveConfiguration();
+ ICConfigurationDescription cfgMain = desMain.getActiveConfiguration();
+
+ cfgLib.createExternalSetting(null, null, null, entries);
+ coreModel.setProjectDescription(libProj, desLib);
+
+ // Main Project references lib project
+ cfgMain.setReferenceInfo(new HashMap<String, String>() {
+ {
+ put(libProj.getName(), cfgLib.getId());
+ }
+ });
+ coreModel.setProjectDescription(mainProj, desMain);
+
+ // Referenced settings have been picked up
+ for (ICLanguageSettingEntry e : entries) {
+ assertTrue(cfgMain.getRootFolderDescription().getLanguageSettingForFile("a.c")
+ .getSettingEntriesList(e.getKind()).contains(e));
+ }
+ }
+
+ {
+ // Now apply different language setting entries
+ ICProjectDescription desLib = coreModel.getProjectDescription(libProj);
+ ICConfigurationDescription cfgLib = desLib.getActiveConfiguration();
+ cfgLib.removeExternalSetting(cfgLib.getExternalSettings()[0]);
+ cfgLib.createExternalSetting(null, null, null, entries2);
+ coreModel.setProjectDescription(libProj, desLib);
+
+ // Check the exported settings is correct
+ checkEquivContents(entries2, cfgLib.getExternalSettings()[0].getEntries());
+ // Fetch the configuration a-fresh to pick up the settings
+ ICConfigurationDescription cfgMain = coreModel.getProjectDescription(mainProj, false)
+ .getActiveConfiguration();
+ assertTrue(cfgMain.getReferenceInfo().get(libProj.getName()).equals(cfgLib.getId()));
+
+ // Referenced settings have changed from entries -> entries2
+ for (ICLanguageSettingEntry e : entries)
+ assertTrue(!cfgMain.getRootFolderDescription().getLanguageSettingForFile("a.c")
+ .getSettingEntriesList(e.getKind()).contains(e));
+ for (ICLanguageSettingEntry e : entries2)
+ assertTrue(cfgMain.getRootFolderDescription().getLanguageSettingForFile("a.c")
+ .getSettingEntriesList(e.getKind()).contains(e));
+ }
+ }
+
+ /**
+ * Bug 312575 tests that updating a .cproject external (e.g. via a repository update)
+ * causes referencing projects to correctly pick up changes to the project exports.
+ * https://bugs.eclipse.org/bugs/show_bug.cgi?id=312575
+ */
+ public void testExportedSettingsExternalUpdate() throws Exception {
+ final IProject libProj = ResourceHelper.createCDTProjectWithConfig("libProj312575");
+ final IProject mainProj = ResourceHelper.createCDTProjectWithConfig("mainProj312575");
+
+ // .cproject file and its backup
+ IFile libCproject = libProj.getFile(".cproject");
+ IFile libCproject_back = libProj.getFile(".cproject_back");
+
+ // set the settings on the lib config; reference it from the main config
+ {
+ ICProjectDescription desLib = coreModel.getProjectDescription(libProj);
+ ICProjectDescription desMain = coreModel.getProjectDescription(mainProj);
+ final ICConfigurationDescription cfgLib = desLib.getActiveConfiguration();
+ ICConfigurationDescription cfgMain = desMain.getActiveConfiguration();
+
+ cfgLib.createExternalSetting(null, null, null, entries);
+ coreModel.setProjectDescription(libProj, desLib);
+
+ // Main Project references lib project
+ cfgMain.setReferenceInfo(new HashMap<String, String>() {
+ {
+ put(libProj.getName(), cfgLib.getId());
+ }
+ });
+ coreModel.setProjectDescription(mainProj, desMain);
+ checkEquivContents(entries, cfgLib.getExternalSettings()[0].getEntries());
+
+ // Referenced settings have been picked up
+ for (ICLanguageSettingEntry e : entries) {
+ assertTrue(cfgMain.getRootFolderDescription().getLanguageSettingForFile("a.c")
+ .getSettingEntriesList(e.getKind()).contains(e));
+ }
+
+ // Backup the .cproject
+ libCproject_back.create(libCproject.getContents(), false, null);
+
+ // Now apply different language setting entries
+ cfgLib.removeExternalSetting(cfgLib.getExternalSettings()[0]);
+ cfgLib.createExternalSetting(null, null, null, entries2);
+ coreModel.setProjectDescription(libProj, desLib);
+ checkEquivContents(entries2, cfgLib.getExternalSettings()[0].getEntries());
+ // Referenced settings have been picked up
+ for (ICLanguageSettingEntry e : entries2) {
+ assertTrue(coreModel.getProjectDescription(mainProj).getActiveConfiguration().getRootFolderDescription()
+ .getLanguageSettingForFile("a.c").getSettingEntriesList(e.getKind()).contains(e));
+ }
+ }
+
+ // Now replace the .cproject with .cproject_back. The exported settings should be picked up in the referenced config
+ libCproject.setContents(libCproject_back.getContents(), IResource.NONE, null);
+
+ // Referenced settings should still exist
+ ICConfigurationDescription cfgLib = coreModel.getProjectDescription(libProj, false).getActiveConfiguration();
+ ICConfigurationDescription cfgMain = coreModel.getProjectDescription(mainProj, false).getActiveConfiguration();
+
+ checkEquivContents(entries, cfgLib.getExternalSettings()[0].getEntries());
+ // Referencing project contains entries and not entries2
+ for (ICLanguageSettingEntry e : entries) {
+ assertTrue(cfgMain.getRootFolderDescription().getLanguageSettingForFile("a.c")
+ .getSettingEntriesList(e.getKind()).contains(e));
+ }
+ for (ICLanguageSettingEntry e : entries2) {
+ assertTrue(!cfgMain.getRootFolderDescription().getLanguageSettingForFile("a.c")
+ .getSettingEntriesList(e.getKind()).contains(e));
+ }
+ }
+
+ /**
+ * Two configurations in two projects reference each other.
+ * Test that the system is happy with this and updates each correctly on
+ * the other's change.
+ */
+ public void _testExportedSettingsCyclicExternalUpdate() throws Exception {
+ final IProject libProj = ResourceHelper.createCDTProjectWithConfig("libProjCyclic");
+ final IProject mainProj = ResourceHelper.createCDTProjectWithConfig("libProjCyclic2");
+
+ // .cproject file and its backup
+ final IFile libCproject = libProj.getFile(".cproject");
+ final IFile libCproject_back = libProj.getFile(".cproject_back");
+ final IFile mainCproject = mainProj.getFile(".cproject");
+ final IFile mainCproject_back = mainProj.getFile(".cproject_back");
+
+ // set the settings on the lib config; reference it from the main config & vice versa
+ {
+ ICProjectDescription desLib = coreModel.getProjectDescription(libProj);
+ ICProjectDescription desMain = coreModel.getProjectDescription(mainProj);
+ final ICConfigurationDescription cfgLib = desLib.getActiveConfiguration();
+ final ICConfigurationDescription cfgMain = desMain.getActiveConfiguration();
+
+ // Lib Exports entries
+ cfgLib.createExternalSetting(null, null, null, entries);
+ // Main Exports entries2
+ cfgMain.createExternalSetting(null, null, null, entries2);
+
+ // Main Project references lib project
+ cfgMain.setReferenceInfo(new HashMap<String, String>() {
+ {
+ put(libProj.getName(), cfgLib.getId());
+ }
+ });
+ cfgLib.setReferenceInfo(new HashMap<String, String>() {
+ {
+ put(mainProj.getName(), cfgMain.getId());
+ }
+ });
+ coreModel.setProjectDescription(libProj, desLib);
+ coreModel.setProjectDescription(mainProj, desMain);
+
+ checkEquivContents(entries, cfgLib.getExternalSettings()[0].getEntries());
+ checkEquivContents(entries2, cfgMain.getExternalSettings()[0].getEntries());
+
+ // Backup the .cproject
+ libCproject_back.create(libCproject.getContents(), false, null);
+ mainCproject_back.create(mainCproject.getContents(), false, null);
+
+ // Now apply different language setting entries
+ cfgLib.removeExternalSetting(cfgLib.getExternalSettings()[0]);
+ cfgLib.createExternalSetting(null, null, null, entries2);
+ coreModel.setProjectDescription(libProj, desLib);
+ cfgMain.removeExternalSetting(cfgMain.getExternalSettings()[0]);
+ cfgMain.createExternalSetting(null, null, null, entries);
+ coreModel.setProjectDescription(mainProj, desMain);
+
+ checkEquivContents(entries2, cfgLib.getExternalSettings()[0].getEntries());
+ checkEquivContents(entries, cfgMain.getExternalSettings()[0].getEntries());
+
+ }
+ ICConfigurationDescription cfgLib = coreModel.getProjectDescription(libProj).getActiveConfiguration();
+ ICConfigurationDescription cfgMain = coreModel.getProjectDescription(mainProj).getActiveConfiguration();
+
+ // Tests the exports are now the right way round
+ for (ICLanguageSettingEntry e : entries) {
+ assertTrue(!cfgMain.getRootFolderDescription().getLanguageSettingForFile("a.c")
+ .getSettingEntriesList(e.getKind()).contains(e));
+ assertTrue(cfgLib.getRootFolderDescription().getLanguageSettingForFile("a.c")
+ .getSettingEntriesList(e.getKind()).contains(e));
+ }
+ for (ICLanguageSettingEntry e : entries2) {
+ assertTrue(cfgMain.getRootFolderDescription().getLanguageSettingForFile("a.c")
+ .getSettingEntriesList(e.getKind()).contains(e));
+ assertTrue(!cfgLib.getRootFolderDescription().getLanguageSettingForFile("a.c")
+ .getSettingEntriesList(e.getKind()).contains(e));
+ }
+
+ // Now replace the .cproject with .cproject_back. The exported settings should be picked up in the referenced config
+ ResourcesPlugin.getWorkspace().run(new IWorkspaceRunnable() {
+ @Override
+ public void run(IProgressMonitor monitor) throws CoreException {
+ libCproject.setContents(libCproject_back.getContents(), IResource.NONE, null);
+ mainCproject.setContents(mainCproject_back.getContents(), IResource.NONE, null);
+ }
+ }, null);
+
+ // Referenced settings should still exist
+ cfgLib = coreModel.getProjectDescription(libProj).getActiveConfiguration();
+ cfgMain = coreModel.getProjectDescription(mainProj).getActiveConfiguration();
+
+ checkEquivContents(entries, cfgLib.getExternalSettings()[0].getEntries());
+ checkEquivContents(entries2, cfgMain.getExternalSettings()[0].getEntries());
+ // Referencing project contains entries and not entries2
+ for (ICLanguageSettingEntry e : entries) {
+ assertTrue(cfgMain.getRootFolderDescription().getLanguageSettingForFile("a.c")
+ .getSettingEntriesList(e.getKind()).contains(e));
+ assertTrue(!cfgLib.getRootFolderDescription().getLanguageSettingForFile("a.c")
+ .getSettingEntriesList(e.getKind()).contains(e));
+ }
+ for (ICLanguageSettingEntry e : entries2) {
+ assertTrue(!cfgMain.getRootFolderDescription().getLanguageSettingForFile("a.c")
+ .getSettingEntriesList(e.getKind()).contains(e));
+ assertTrue(cfgLib.getRootFolderDescription().getLanguageSettingForFile("a.c")
+ .getSettingEntriesList(e.getKind()).contains(e));
+ }
+ }
+
+ private void checkEquivContents(Object[] expected, Object[] actual) {
+ if (expected == null) {
+ assertTrue(actual == null);
+ return;
+ }
+ assertTrue(actual != null);
+ assertEquals(expected.length, actual.length);
+
+ Set s1 = new HashSet(Arrays.asList(expected));
+ Set s2 = new HashSet(Arrays.asList(actual));
+ assertEquals(expected.length, s1.size());
+ assertEquals(s1, s2);
+ }
+
+}
diff --git a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/settings/model/CProjectDescriptionDeltaTests.java b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/settings/model/CProjectDescriptionDeltaTests.java
index 3b864e88416..c6ff685dfa3 100644
--- a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/settings/model/CProjectDescriptionDeltaTests.java
+++ b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/settings/model/CProjectDescriptionDeltaTests.java
@@ -971,6 +971,8 @@ public class CProjectDescriptionDeltaTests extends BaseTestCase {
assertNotNull(prjDescription);
assertEquals(2, prjDescription.getConfigurations().length);
+ prjDescription.setConfigurationRelations(ICProjectDescription.CONFIGS_INDEPENDENT);
+
ICConfigurationDescription cfgDescription0 = prjDescription.getConfigurations()[0];
assertNotNull(cfgDescription0);
assertSame(cfgDescription0, prjDescription.getDefaultSettingConfiguration());
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/FileBasePluginTestCase.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/FileBasePluginTestCase.java
index c906818fd72..2166dc55452 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/FileBasePluginTestCase.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/FileBasePluginTestCase.java
@@ -35,7 +35,7 @@ import junit.framework.TestCase;
/**
* @author dsteffle
*/
-public class FileBasePluginTestCase extends TestCase {
+public abstract class FileBasePluginTestCase extends TestCase {
static NullProgressMonitor monitor;
static IWorkspace workspace;
static IProject project;
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ParserTestSuite.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ParserTestSuite.java
index f74906d08d7..753508e692e 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ParserTestSuite.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ParserTestSuite.java
@@ -27,7 +27,9 @@ import junit.framework.TestSuite;
/**
* Combines all tests for the parsers.
+ * @deprecated In preparation for moving to JUnit5 test suites are deprecated. See Bug 569839
*/
+@Deprecated
public class ParserTestSuite extends TestCase {
public static Test suite() {
TestSuite suite = new TestSuite(ParserTestSuite.class.getName());
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPSpecTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPSpecTest.java
index b84af24aa38..63edd1505b0 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPSpecTest.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPSpecTest.java
@@ -3669,7 +3669,7 @@ public class AST2CPPSpecTest extends AST2SpecTestBase {
// B_ptr->~B(); //2 // calls D's destructor
// B_ptr->~B_alias(); //3 // calls D's destructor
// B_ptr->B_alias::~B(); //4 // calls B's destructor
- // B_ptr->B_alias::~B_alias(); //5 // error, no B_alias in class B
+ // B_ptr->B_alias::~B_alias(); //5 // calls B's destructor
// }
public void test12_4s12() throws Exception {
final String code = getAboveComment();
@@ -3685,8 +3685,8 @@ public class AST2CPPSpecTest extends AST2SpecTestBase {
assertSame(dtor, d);
d = bh.assertNonProblem("~B(); //4", 2);
assertSame(dtor, d);
-
- bh.assertProblem("~B_alias(); //5", 8);
+ d = bh.assertNonProblem("~B_alias(); //5", 8);
+ assertSame(dtor, d);
}
// void* operator new(size_t, void* p) { return p; }
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java
index d27cea8328e..3290710927f 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java
@@ -145,15 +145,20 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPVariable;
import org.eclipse.cdt.core.dom.ast.cpp.SemanticQueries;
import org.eclipse.cdt.core.parser.IProblem;
import org.eclipse.cdt.core.parser.ParserLanguage;
+import org.eclipse.cdt.core.parser.util.AttributeUtil;
import org.eclipse.cdt.core.parser.util.CharArrayUtils;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTNameBase;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPBasicType;
+import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPClassInstance;
+import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPClassTemplate;
+import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPClassTemplatePartialSpecialization;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPClassType;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPConstructor;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPFunctionType;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPMethod;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPPointerType;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPQualifierType;
+import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPVariable;
import org.eclipse.cdt.internal.core.dom.parser.cpp.ClassTypeHelper;
import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPInternalBinding;
import org.eclipse.cdt.internal.core.dom.parser.cpp.OverloadableOperator;
@@ -4711,7 +4716,7 @@ public class AST2CPPTests extends AST2CPPTestBase {
IASTTranslationUnit tu = parse(getAboveComment(), CPP);
ICPPASTCastExpression dynamic_cast = (ICPPASTCastExpression) ((IASTEqualsInitializer) ((IASTSimpleDeclaration) ((IASTDeclarationStatement) ((IASTCompoundStatement) ((IASTFunctionDefinition) tu
.getDeclarations()[2]).getBody()).getStatements()[0]).getDeclaration()).getDeclarators()[0]
- .getInitializer()).getInitializerClause();
+ .getInitializer()).getInitializerClause();
assertEquals(dynamic_cast.getOperator(), ICPPASTCastExpression.op_dynamic_cast);
}
@@ -11377,6 +11382,19 @@ public class AST2CPPTests extends AST2CPPTestBase {
parseAndCheckBindings(getAboveComment(), CPP, true /* use GNU extensions */);
}
+ // enum class TestEnum : char {
+ // };
+ //
+ // void bar(__underlying_type(TestEnum) as) {
+ // }
+ //
+ // void foo() {
+ // bar('a'); // Invalid arguments 'Candidates are: void bar(@120932903)'
+ // }
+ public void testUnderlyingType_568625() throws Exception {
+ parseAndCheckBindings(getAboveComment(), CPP, true /* use GNU extensions */);
+ }
+
// void ptrFunc(void*);
// void intFunc(int);
// void foo(int* pi, unsigned i) {
@@ -13426,4 +13444,283 @@ public class AST2CPPTests extends AST2CPPTestBase {
ICPPASTExpression f = helper.assertNode("f[] = \"waldo\"", "\"waldo\"");
assertTrue(e.getEvaluation().isEquivalentTo(f.getEvaluation()));
}
+
+ // struct Base {
+ // };
+ // struct [[nodiscard]] S : public Base {
+ // };
+ public void testNoDiscardClass_Bug534420() throws Exception {
+ String code = getAboveComment();
+ parseAndCheckBindings(code);
+
+ BindingAssertionHelper bh = new AST2AssertionHelper(code, true);
+
+ CPPClassType structBase = bh.assertNonProblem("Base {", 4);
+ assertFalse(structBase.isNoDiscard());
+ IASTNode baseDefinitionName = structBase.getDefinition();
+ IASTNode baseDefinition = baseDefinitionName.getParent();
+ assertInstance(baseDefinition, ICPPASTCompositeTypeSpecifier.class);
+ assertFalse(AttributeUtil.hasNodiscardAttribute(((ICPPASTCompositeTypeSpecifier) baseDefinition)));
+
+ CPPClassType structS = bh.assertNonProblem("S", 1);
+ assertTrue(structS.isNoDiscard());
+ IASTNode sDefinitionName = structS.getDefinition();
+ IASTNode sDefinition = sDefinitionName.getParent();
+ assertInstance(sDefinition, ICPPASTCompositeTypeSpecifier.class);
+ assertTrue(AttributeUtil.hasNodiscardAttribute(((ICPPASTCompositeTypeSpecifier) sDefinition)));
+ }
+
+ //template <typename T>
+ //struct Foo {};
+ //template <typename T>
+ //struct [[nodiscard]] Foo<T*> {};
+ //template <>
+ //struct [[nodiscard]] Foo<int> {};
+ //
+ //Foo<double> var1;
+ //Foo<int*> var2;
+ //Foo<int> var3;
+ public void testNoDiscardTemplateSpecialization_Bug534420() throws Exception {
+ String code = getAboveComment();
+ parseAndCheckBindings(code);
+
+ BindingAssertionHelper bh = new AST2AssertionHelper(code, true);
+
+ CPPClassTemplate structFoo = bh.assertNonProblem("Foo {", 3);
+ assertFalse(structFoo.isNoDiscard());
+ IASTNode fooDefinitionName = structFoo.getDefinition();
+ IASTNode fooDefinition = fooDefinitionName.getParent();
+ assertInstance(fooDefinition, ICPPASTCompositeTypeSpecifier.class);
+ assertFalse(AttributeUtil.hasNodiscardAttribute(((ICPPASTCompositeTypeSpecifier) fooDefinition)));
+
+ CPPClassTemplatePartialSpecialization structSpec = bh.assertNonProblem("Foo<T*> {", 7);
+ assertTrue(structSpec.isNoDiscard());
+ IASTNode specDefinitionName = structSpec.getDefinition();
+ IASTNode specDefinition = specDefinitionName.getParent();
+ assertInstance(specDefinition, ICPPASTCompositeTypeSpecifier.class);
+ assertTrue(AttributeUtil.hasNodiscardAttribute(((ICPPASTCompositeTypeSpecifier) specDefinition)));
+
+ CPPClassInstance structFullSpec = bh.assertNonProblem("Foo<int> {", 8);
+ assertTrue(structSpec.isNoDiscard());
+ IASTNode specFullDefinitionName = structFullSpec.getDefinition();
+ IASTNode specFullDefinition = specFullDefinitionName.getParent();
+ assertInstance(specFullDefinition, ICPPASTCompositeTypeSpecifier.class);
+ assertTrue(AttributeUtil.hasNodiscardAttribute(((ICPPASTCompositeTypeSpecifier) specFullDefinition)));
+
+ CPPVariable var1Base = bh.assertNonProblem("var1", 4);
+ CPPVariable var2Spec = bh.assertNonProblem("var2", 4);
+ CPPVariable var3Spec = bh.assertNonProblem("var3", 4);
+ assertFalse(((CPPClassInstance) var1Base.getType()).isNoDiscard());
+ assertTrue(((CPPClassInstance) var2Spec.getType()).isNoDiscard());
+ assertTrue(((CPPClassInstance) var3Spec.getType()).isNoDiscard());
+ }
+
+ //template <typename T>
+ //struct Foo {};
+ //template <typename T>
+ //struct Foo<T*> final {};
+ //template <>
+ //struct Foo<int> final {};
+ //
+ //Foo<double> var1;
+ //Foo<int*> var2;
+ //Foo<int> var3;
+ public void testFinalTemplateSpecialization_Bug561631() throws Exception {
+ String code = getAboveComment();
+ parseAndCheckBindings(code);
+
+ BindingAssertionHelper bh = new AST2AssertionHelper(code, true);
+
+ CPPClassTemplate structFoo = bh.assertNonProblem("Foo {", 3);
+ assertFalse(structFoo.isFinal());
+ IASTNode fooDefinitionName = structFoo.getDefinition();
+ IASTNode fooDefinition = fooDefinitionName.getParent();
+ assertInstance(fooDefinition, ICPPASTCompositeTypeSpecifier.class);
+ assertFalse((((ICPPASTCompositeTypeSpecifier) fooDefinition)).isFinal());
+
+ CPPClassTemplatePartialSpecialization structSpec = bh.assertNonProblem("Foo<T*>", 7);
+ assertTrue(structSpec.isFinal());
+ IASTNode specDefinitionName = structSpec.getDefinition();
+ IASTNode specDefinition = specDefinitionName.getParent();
+ assertInstance(specDefinition, ICPPASTCompositeTypeSpecifier.class);
+ assertTrue((((ICPPASTCompositeTypeSpecifier) specDefinition)).isFinal());
+
+ CPPClassInstance structFullSpec = bh.assertNonProblem("Foo<int>", 8);
+ assertTrue(structSpec.isFinal());
+ IASTNode specFullDefinitionName = structFullSpec.getDefinition();
+ IASTNode specFullDefinition = specFullDefinitionName.getParent();
+ assertInstance(specFullDefinition, ICPPASTCompositeTypeSpecifier.class);
+ assertTrue((((ICPPASTCompositeTypeSpecifier) specFullDefinition)).isFinal());
+
+ CPPVariable var1Base = bh.assertNonProblem("var1", 4);
+ CPPVariable var2Spec = bh.assertNonProblem("var2", 4);
+ CPPVariable var3Spec = bh.assertNonProblem("var3", 4);
+ assertFalse(((CPPClassInstance) var1Base.getType()).isFinal());
+ assertTrue(((CPPClassInstance) var2Spec.getType()).isFinal());
+ assertTrue(((CPPClassInstance) var3Spec.getType()).isFinal());
+ }
+
+ // enum [[nodiscard]] hue { red, blue, green };
+ // enum fruit { apple, banana };
+ // enum hue col;
+ // enum fruit f;
+ public void testEnumerations_Bug534420() throws Exception {
+ IASTTranslationUnit tu = parse(getAboveComment(), CPP);
+ NameCollector collector = new NameCollector();
+ tu.accept(collector);
+
+ ICPPEnumeration hue = (ICPPEnumeration) collector.getName(0).resolveBinding();
+ ICPPEnumeration fruit = (ICPPEnumeration) collector.getName(4).resolveBinding();
+ ICPPVariable col = (ICPPVariable) collector.getName(8).resolveBinding();
+ ICPPVariable f = (ICPPVariable) collector.getName(10).resolveBinding();
+ assertTrue(((ICPPEnumeration) col.getType()).isNoDiscard());
+ assertFalse(((ICPPEnumeration) f.getType()).isNoDiscard());
+ }
+
+ // template <typename T>
+ // void waldo(const T&) {}
+ //
+ // typedef int* IntPtr;
+ //
+ // template <>
+ // void waldo(const IntPtr&) {}
+ public void testExplicitSpecPointerType_562697() throws Exception {
+ parseAndCheckBindings();
+ }
+
+ // using MyBool = bool;
+ //
+ // class Foo {
+ // };
+ //
+ // template<typename T = void>
+ // class Templated {
+ // };
+ //
+ // template<bool>
+ // class Test {
+ // public:
+ // constexpr static int false_val = 0;
+ // };
+ //
+ // template<>
+ // class Test<true> {
+ // public:
+ // constexpr static int true_val = 0;
+ // };
+ //
+ // enum Enum {
+ // };
+ //
+ // enum EnumChar : char {
+ // };
+ //
+ // template<typename T, typename U>
+ // class TemplateArgs {
+ // public:
+ // constexpr static bool Value = __is_same(T, U);
+ // };
+ //
+ // int main() {
+ // Test<__is_same(bool, bool)>::true_val;
+ // Test<__is_same_as(bool, bool)>::true_val;
+ // Test<__is_same(bool, bool&)>::false_val;
+ // Test<__is_same(bool, bool*)>::false_val;
+ // Test<__is_same(bool*, bool*)>::true_val;
+ // Test<__is_same(bool&, bool&)>::true_val;
+ // Test<__is_same(bool[], bool[])>::true_val;
+ // Test<__is_same(bool[], bool*)>::false_val;
+ // Test<__is_same(bool, const volatile MyBool)>::false_val;
+ // Test<__is_same(bool, MyBool)>::true_val;
+ // Test<__is_same(bool, Foo)>::false_val;
+ // Test<__is_same(Templated<bool>, Templated<Foo>)>::false_val;
+ // Test<__is_same(Templated<>, Templated<void>)>::true_val;
+ //
+ // auto func = []() {
+ // };
+ // auto func2 = []() {
+ // };
+ // Test<__is_same(decltype(func), decltype(func))>::true_val;
+ // Test<__is_same(decltype(func), decltype(func2))>::false_val;
+ //
+ // Test<__is_same(void (*)(int), void (*)(int))>::true_val;
+ // Test<__is_same(void (*)(bool), void (*)(MyBool))>::true_val;
+ //
+ // Test<__is_same(Enum, Enum)>::true_val;
+ // Test<__is_same(Enum, int)>::false_val;
+ // Test<__is_same(EnumChar, char)>::false_val;
+ // Test<__is_same(__underlying_type(EnumChar), char)>::true_val;
+ //
+ // Test<TemplateArgs<int, bool>::Value>::false_val;
+ // Test<TemplateArgs<int, int>::Value>::true_val;
+ // }
+ public void testIsSame() throws Exception {
+ parseAndCheckBindings(getAboveComment(), CPP, true);
+ }
+
+ // void function(int * a) { }
+ // void function(unsigned int b) { }
+ //
+ // void functionPtr(decltype(nullptr) c) { }
+ //
+ // int main()
+ // {
+ // function(0); // 0
+ // function(nullptr); // 1
+ // functionPtr(0); // 2
+ // functionPtr(nullptr); // 3
+ //
+ // function(0 & 1); // 4
+ // functionPtr(0 & 1); // 5
+ //
+ // function(0 << 1); // 6
+ // functionPtr(0 << 1); // 7
+ //
+ // function((0,0)); // 8
+ // functionPtr((0,0)); // 9
+ //
+ // function(int{0}); // 10
+ // functionPtr(int{0}); // 11
+ //
+ // function(true ? 0 : 0); // 12
+ // functionPtr(true ? 0 : 0); // 13
+ // }
+ public void testNullPointerConstantConversion_573764() throws Exception {
+ IASTTranslationUnit tu = parse(getAboveComment(), CPP);
+ NameCollector collector = new NameCollector();
+ tu.accept(collector);
+
+ IBinding funcDeclA = collector.getName(0).resolveBinding();
+ IBinding funcDeclB = collector.getName(2).resolveBinding();
+ IBinding funcDeclC = collector.getName(4).resolveBinding();
+
+ int callIndexStart = 7;
+ // Ambiguous
+ assertTrue(collector.getName(callIndexStart + 0).resolveBinding() instanceof IProblemBinding);
+ assertEquals(funcDeclA, collector.getName(callIndexStart + 1).resolveBinding());
+ assertEquals(funcDeclC, collector.getName(callIndexStart + 2).resolveBinding());
+ assertEquals(funcDeclC, collector.getName(callIndexStart + 3).resolveBinding());
+
+ assertEquals(funcDeclB, collector.getName(callIndexStart + 4).resolveBinding());
+ // Invalid argument (not null pointer constant)
+ assertTrue(collector.getName(callIndexStart + 5).resolveBinding() instanceof IProblemBinding);
+
+ assertEquals(funcDeclB, collector.getName(callIndexStart + 6).resolveBinding());
+ // Invalid argument (not null pointer constant)
+ assertTrue(collector.getName(callIndexStart + 7).resolveBinding() instanceof IProblemBinding);
+
+ // EvalComma
+ assertEquals(funcDeclB, collector.getName(callIndexStart + 8).resolveBinding());
+ // Invalid argument (not null pointer constant)
+ assertTrue(collector.getName(callIndexStart + 9).resolveBinding() instanceof IProblemBinding);
+
+ assertEquals(funcDeclB, collector.getName(callIndexStart + 10).resolveBinding());
+ // Invalid argument (not null pointer constant)
+ assertTrue(collector.getName(callIndexStart + 11).resolveBinding() instanceof IProblemBinding);
+
+ // EvalConditional
+ assertEquals(funcDeclB, collector.getName(callIndexStart + 12).resolveBinding());
+ // Invalid argument (not null pointer constant)
+ assertTrue(collector.getName(callIndexStart + 13).resolveBinding() instanceof IProblemBinding);
+ }
}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2FileBasePluginTestCase.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2FileBasePluginTestCase.java
index 66b7a246221..0f5f7a74f6f 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2FileBasePluginTestCase.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2FileBasePluginTestCase.java
@@ -38,7 +38,7 @@ import junit.framework.TestCase;
/**
* @author dsteffle
*/
-public class AST2FileBasePluginTestCase extends TestCase {
+public abstract class AST2FileBasePluginTestCase extends TestCase {
static NullProgressMonitor monitor;
static IWorkspace workspace;
static IProject project;
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2KnRTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2KnRTests.java
index 81ca1ccb5c7..0f2aef8f87f 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2KnRTests.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2KnRTests.java
@@ -595,7 +595,7 @@ public class AST2KnRTests extends AST2TestBase {
.getParameterDeclarations()[0]).getDeclarators()[1].getName();
IASTName list3 = ((IASTIdExpression) ((IASTArraySubscriptExpression) ((IASTUnaryExpression) ((IASTBinaryExpression) ((IASTExpressionStatement) ((IASTCompoundStatement) getinp
.getBody()).getStatements()[0]).getExpression()).getOperand1()).getOperand()).getArrayExpression())
- .getName();
+ .getName();
assertEquals(prompt1.resolveBinding(), prompt2.resolveBinding());
assertEquals(list1.resolveBinding(), list2.resolveBinding());
@@ -673,10 +673,10 @@ public class AST2KnRTests extends AST2TestBase {
.getParameterDeclarations()[0]).getDeclarators()[0].getName();
IASTName lemp_name3 = ((IASTIdExpression) ((IASTFieldReference) ((IASTArraySubscriptExpression) ((IASTFieldReference) ((IASTBinaryExpression) ((IASTExpressionStatement) ((IASTCompoundStatement) f_def
.getBody()).getStatements()[0]).getExpression()).getOperand1()).getFieldOwner()).getArrayExpression())
- .getFieldOwner()).getName();
+ .getFieldOwner()).getName();
IASTName symbols_name2 = ((IASTFieldReference) ((IASTArraySubscriptExpression) ((IASTFieldReference) ((IASTBinaryExpression) ((IASTExpressionStatement) ((IASTCompoundStatement) f_def
.getBody()).getStatements()[0]).getExpression()).getOperand1()).getFieldOwner()).getArrayExpression())
- .getFieldName();
+ .getFieldName();
IASTName lambda_name2 = ((IASTFieldReference) ((IASTBinaryExpression) ((IASTExpressionStatement) ((IASTCompoundStatement) f_def
.getBody()).getStatements()[0]).getExpression()).getOperand1()).getFieldName();
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TemplateLValueRValueTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TemplateLValueRValueTests.java
new file mode 100644
index 00000000000..a0598857c48
--- /dev/null
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TemplateLValueRValueTests.java
@@ -0,0 +1,878 @@
+package org.eclipse.cdt.core.parser.tests.ast2;
+
+import static org.eclipse.cdt.core.parser.ParserLanguage.CPP;
+
+import java.io.IOException;
+
+import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
+import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPFunction;
+import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPFunctionInstance;
+import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPFunctionTemplate;
+import org.eclipse.cdt.internal.core.parser.ParserException;
+
+public class AST2TemplateLValueRValueTests extends AST2CPPTestBase {
+
+ public AST2TemplateLValueRValueTests() {
+ }
+
+ public AST2TemplateLValueRValueTests(String name) {
+ super(name);
+ }
+
+ // class clazz {
+ // };
+ //
+ // template<class C> void demo(C &&cont)
+ // {
+ // }
+ //
+ // template<class C> void demo(C &cont)
+ // {
+ // }
+ //
+ // clazz getClazz()
+ // {
+ // clazz c;
+ // return c;
+ // }
+ //
+ // void testLValue()
+ // {
+ // clazz c;
+ // demo(c);
+ // }
+ //
+ // void testRValue()
+ // {
+ // demo(getClazz());
+ // }
+ public void test_lvalue_rvalue_caller_templateLvalue_templateRvalue_function() throws Exception {
+ parseAndCheckBindings();
+ BindingAssertionHelper helper = getAssertionHelper();
+ CPPFunctionTemplate targetLvalue = helper.assertNonProblem("demo(C &cont)", "demo");
+ CPPFunctionTemplate targetRvalue = helper.assertNonProblem("demo(C &&cont)", "demo");
+ CPPFunctionInstance actualTargetLvalue = helper.assertNonProblem("demo(c)", "demo");
+ CPPFunctionInstance actualTargetRvalue = helper.assertNonProblem("demo(getClazz())", "demo");
+ assertEquals(targetLvalue, actualTargetLvalue.getTemplateDefinition());
+ assertEquals(targetRvalue, actualTargetRvalue.getTemplateDefinition());
+ }
+
+ // class clazz {
+ // };
+ //
+ // typedef clazz clazzz;
+ //
+ // template<class C> void demo(C &&cont)
+ // {
+ // }
+ //
+ // template<class C> void demo(C &cont)
+ // {
+ // }
+ //
+ // clazz getClazz()
+ // {
+ // clazzz c;
+ // return c;
+ // }
+ //
+ // void testLValue()
+ // {
+ // clazzz c;
+ // demo(c);
+ // }
+ //
+ // void testRValue()
+ // {
+ // demo(getClazz());
+ // }
+ public void test_lvalueTypedef_rvalueTypedef_caller_templateLvalue_templateRvalue_function() throws Exception {
+ parseAndCheckBindings();
+
+ BindingAssertionHelper helper = getAssertionHelper();
+ CPPFunctionTemplate targetLvalue = helper.assertNonProblem("demo(C &cont)", "demo");
+ CPPFunctionTemplate targetRvalue = helper.assertNonProblem("demo(C &&cont)", "demo");
+ CPPFunctionInstance actualTargetLvalue = helper.assertNonProblem("demo(c)", "demo");
+ CPPFunctionInstance actualTargetRvalue = helper.assertNonProblem("demo(getClazz())", "demo");
+ assertEquals(targetLvalue, actualTargetLvalue.getTemplateDefinition());
+ assertEquals(targetRvalue, actualTargetRvalue.getTemplateDefinition());
+ }
+
+ // class clazz {
+ // };
+ //
+ // template <class C>
+ // using Ref = C&;
+ //
+ // template<class C> void demo(C &&cont)
+ // {
+ // }
+ //
+ // template<class C> void demo(Ref<C> cont)
+ // {
+ // }
+ //
+ // clazz getClazz()
+ // {
+ // clazz c;
+ // return c;
+ // }
+ //
+ // void testLValue()
+ // {
+ // clazz c;
+ // demo(c);
+ // }
+ //
+ // void testRValue()
+ // {
+ // demo(getClazz());
+ // }
+ public void test_lvalueTypedefRef_rvalueTypedefRef_caller_templateLvalue_templateRvalue_function()
+ throws Exception {
+ parseAndCheckBindings();
+
+ BindingAssertionHelper helper = getAssertionHelper();
+ CPPFunctionTemplate targetLvalue = helper.assertNonProblem("demo(Ref<C> cont)", "demo");
+ CPPFunctionTemplate targetRvalue = helper.assertNonProblem("demo(C &&cont)", "demo");
+ CPPFunctionInstance actualTargetLvalue = helper.assertNonProblem("demo(c)", "demo");
+ CPPFunctionInstance actualTargetRvalue = helper.assertNonProblem("demo(getClazz())", "demo");
+ assertEquals(targetLvalue, actualTargetLvalue.getTemplateDefinition());
+ assertEquals(targetRvalue, actualTargetRvalue.getTemplateDefinition());
+ }
+
+ // class clazz {
+ // };
+ //
+ // typedef clazz & clazzRef;
+ //
+ // template<class C> void demo(C &&cont)
+ // {
+ // }
+ //
+ // template<class C> void demo(clazzRef cont)
+ // {
+ // }
+ //
+ // clazz getClazz()
+ // {
+ // clazz c;
+ // return c;
+ // }
+ //
+ // void testLValue()
+ // {
+ // clazz c;
+ // demo<clazz>(c);
+ // }
+ //
+ // void testRValue()
+ // {
+ // demo(getClazz());
+ // }
+ public void test_lvalueTypedefRef_rvalueTypedefRef_caller_templateTpedefLvalue_templateRvalue_function()
+ throws Exception {
+ parseAndCheckBindings();
+
+ BindingAssertionHelper helper = getAssertionHelper();
+ CPPFunctionTemplate targetLvalue = helper.assertNonProblem("demo(clazzRef cont)", "demo");
+ CPPFunctionTemplate targetRvalue = helper.assertNonProblem("demo(C &&cont)", "demo");
+ CPPFunctionTemplate actualTargetLvalue = helper.assertNonProblem("demo<clazz>(c)", "demo");
+ CPPFunctionInstance actualTargetRvalue = helper.assertNonProblem("demo(getClazz())", "demo");
+ assertEquals(targetLvalue, actualTargetLvalue);
+ assertEquals(targetRvalue, actualTargetRvalue.getTemplateDefinition());
+ }
+
+ // template<class C> void demo(C &&cont)
+ // {
+ // }
+ //
+ // template<class C> void demo(C &cont)
+ // {
+ // }
+ //
+ // void demo(int &&cont)
+ // {
+ // }
+ //
+ // void demo(int &cont)
+ // {
+ // }
+ //
+ // int main()
+ // {
+ // int c;
+ // demo(c);
+ // }
+ public void test_lvalue_rvalue_caller_templateLvalue_templateRvalue_lvalue_function() throws Exception {
+ parseAndCheckBindings();
+
+ BindingAssertionHelper helper = getAssertionHelper();
+ CPPFunction intendedTarget = helper.assertNonProblem("demo(int &cont)", "demo");
+ CPPFunction actualTarget = helper.assertNonProblem("demo(c)", "demo");
+ assertEquals(intendedTarget, actualTarget);
+ }
+
+ // class clazz {
+ // };
+ //
+ // void demo(clazz &&cont)
+ // {
+ // }
+ //
+ // void testLValue()
+ // {
+ // clazz c;
+ // demo(c);
+ // }
+ public void test_lvalue_caller_rvalue_function() throws Exception {
+ parseAndCheckBindingsForOneProblem();
+ }
+
+ // class clazz {
+ // };
+ //
+ // void demo(clazz &cont)
+ // {
+ // }
+ //
+ // void testLValue()
+ // {
+ // clazz c;
+ // demo(c);
+ // }
+ public void test_lvalue_caller_lvalue_function() throws Exception {
+ parseAndCheckBindings();
+ }
+
+ // class clazz {
+ // };
+ //
+ // void demo(clazz &&cont)
+ // {
+ // }
+ //
+ // void demo(clazz &cont)
+ // {
+ // }
+ //
+ //
+ // clazz getClazz()
+ // {
+ // clazz c;
+ // return c;
+ // }
+ //
+ // void testRValue()
+ // {
+ // demo(getClazz());
+ // }
+ public void test_rvalue_caller_lvalue_rvalue_function() throws Exception {
+ parseAndCheckBindings();
+ }
+
+ // class clazz {
+ // };
+ //
+ // template<class C> void demo(C &&cont)
+ // {
+ // }
+ //
+ // void demo(clazz &cont)
+ // {
+ // }
+ //
+ // void testLValue()
+ // {
+ // clazz c;
+ // demo(c);
+ // }
+ public void test_lvalue_caller_templateRvalue_lvalue_function() throws Exception {
+ parseAndCheckBindings();
+ }
+
+ // class clazz {
+ // };
+ //
+ // template<class C> void demo(C &&cont)
+ // {
+ // }
+ //
+ // void demo(clazz &cont)
+ // {
+ // }
+ //
+ // clazz getClazz()
+ // {
+ // clazz c;
+ // return c;
+ // }
+ //
+ // void testRValue()
+ // {
+ // demo(getClazz());
+ // }
+ public void test_rvalue_caller_templateRvalue_lvalue_function() throws Exception {
+ parseAndCheckBindings();
+ }
+
+ // class clazz {
+ // };
+ //
+ // void demo(clazz &cont)
+ // {
+ // }
+ // clazz getClazz()
+ // {
+ // clazz c;
+ // return c;
+ // }
+ //
+ // void testRValue()
+ // {
+ // demo(getClazz());
+ // }
+ public void test_rvalue_caller_lvalue_function() throws Exception {
+ parseAndCheckBindingsForOneProblem();
+ }
+
+ // class clazz {
+ // };
+ //
+ // void demo(clazz &&cont)
+ // {
+ // }
+ // clazz getClazz()
+ // {
+ // clazz c;
+ // return c;
+ // }
+ //
+ // void testRValue()
+ // {
+ // demo(getClazz());
+ // }
+ public void test_rvalue_caller_rvalue_function() throws Exception {
+ parseAndCheckBindings();
+ }
+
+ // class clazz {
+ // };
+ //
+ // template<class C> void demo(C &cont)
+ // {
+ // }
+ // clazz getClazz()
+ // {
+ // clazz c;
+ // return c;
+ // }
+ //
+ // void testRValue()
+ // {
+ // demo(getClazz());
+ // }
+ public void test_rvalue_caller_templateLvalue_function() throws Exception {
+ parseAndCheckBindingsForOneProblem();
+ }
+
+ // class clazz {
+ // };
+ //
+ // template<class C> void demo(C &&cont)
+ // {
+ // }
+ //
+ // clazz getClazz()
+ // {
+ // clazz c;
+ // return c;
+ // }
+ //
+ // void testRValue()
+ // {
+ // demo(getClazz());
+ // }
+ public void test_rvalue_caller_templateRvalue_function() throws Exception {
+ parseAndCheckBindings();
+ }
+
+ // class clazz {
+ // };
+ //
+ // template<class C> void demo(C &&cont)
+ // {
+ // }
+ //
+ // clazz getClazz()
+ // {
+ // clazz c;
+ // return c;
+ // }
+ //
+ // void testRValue()
+ // {
+ // demo<clazz>(getClazz());
+ // }
+ public void test_templatedRvalue_caller__templateRvalue_lvalue_function() throws Exception {
+ parseAndCheckBindings();
+ }
+
+ // class clazz {
+ // };
+ //
+ // template<class C> void demo(C &&cont)
+ // {
+ // }
+ //
+ // void demo(clazz &cont) {
+ // }
+ //
+ // void testLValue()
+ // {
+ // clazz c;
+ // demo<clazz>(c);
+ // }
+ public void test_templatedLvalue_caller__templateRvalue_lvalue_function() throws Exception {
+ parseAndCheckBindingsForProblem();
+ }
+
+ // class clazz {
+ // };
+ //
+ // template<class C> void demo(C &cont)
+ // {
+ // }
+ //
+ // void demo(clazz &cont) {
+ // }
+ //
+ // void testLValue()
+ // {
+ // clazz c;
+ // demo(c);
+ // }
+ public void test_lvalue_caller_templateLvalue_lvalue_function() throws Exception {
+ parseAndCheckBindings();
+ }
+
+ // class clazz {
+ // };
+ //
+ // template<class C> void demo(C &cont)
+ // {
+ // }
+ //
+ // void demo(clazz &cont) {
+ // }
+ //
+ // clazz getClazz()
+ // {
+ // clazz c;
+ // return c;
+ // }
+ //
+ // void testRValue()
+ // {
+ // demo(getClazz());
+ // }
+ public void test_rvalue_caller_templateLvalue_lvalue_function() throws Exception {
+ parseAndCheckBindingsForOneProblem();
+ }
+
+ // class clazz {
+ // };
+ //
+ // template<class C> void demo(C &cont)
+ // {
+ // }
+ //
+ // void demo(clazz &cont) {
+ // }
+ //
+ // clazz getClazz()
+ // {
+ // clazz c;
+ // return c;
+ // }
+ //
+ // void testRValue()
+ // {
+ // demo<clazz>(getClazz());
+ // }
+ public void test_templatedRvalue_caller_templatedLValue_lvalAST2TemplateRValueRValueTestsue_function()
+ throws Exception {
+ parseAndCheckBindingsForProblem();
+ }
+
+ // class clazz {
+ // };
+ //
+ // template<class C> void demo(C &cont)
+ // {
+ // }
+ //
+ // void demo(clazz &cont) {
+ // }
+ //
+ // void testRValue()
+ // {
+ // clazz c;
+ // demo<clazz>(c);
+ // }
+ public void test_templatedLvalue_caller_templatedLValue_lvalue_function() throws Exception {
+ parseAndCheckBindings();
+ }
+
+ // class clazz {
+ // };
+ //
+ // template<class C> void demo(C &&cont)
+ // {
+ // }
+ //
+ // void demo(clazz &&cont) {
+ // }
+ //
+ // void testLValue()
+ // {
+ // clazz c;
+ // demo(c);
+ // }
+ public void test_lvalue_caller_templatedRvalue_rvalue_function() throws Exception {
+ parseAndCheckBindings();
+ }
+
+ // class clazz {
+ // };
+ //
+ // template<class C> void demo(C &&cont)
+ // {
+ // }
+ //
+ // void demo(clazz &&cont) {
+ // }
+ //
+ // clazz getClazz()
+ // {
+ // clazz c;
+ // return c;
+ // }
+ //
+ // void testRValue()
+ // {
+ // demo(getClazz());
+ // }
+ public void test_rvalue_caller_templatedRvalue_rvalue_function() throws Exception {
+ parseAndCheckBindings();
+ }
+
+ // class clazz {
+ // };
+ //
+ // template<class C> void demo(C &&cont)
+ // {
+ // }
+ //
+ // void demo(clazz &&cont) {
+ // }
+ //
+ // clazz getClazz()
+ // {
+ // clazz c;
+ // return c;
+ // }
+ //
+ // void testRValue()
+ // {
+ // demo<clazz>(getClazz());
+ // }
+ public void test_templatedRvalue_caller_templatedRvalue_rvalue_function() throws Exception {
+ parseAndCheckBindings();
+ }
+
+ // class clazz {
+ // };
+ //
+ // template<class C> void demo(C &&cont)
+ // {
+ // }
+ //
+ // void demo(clazz &&cont) {
+ // }
+ //
+ // void testLValue()
+ // {
+ // clazz c;
+ // demo<clazz>(c);
+ // }
+ public void test_templatedLvalue_caller_templatedRvalue_rvalue_function() throws Exception {
+ parseAndCheckBindingsForProblem();
+ }
+
+ // class clazz {
+ // };
+ //
+ // template<class C> void demo(C &cont)
+ // {
+ // }
+ //
+ // void demo(clazz &&cont) {
+ // }
+ //
+ // void testLValue()
+ // {
+ // clazz c;
+ // demo(c);
+ // }
+ public void test_lvalue_caller_templatedLvalue_rvalue_function() throws Exception {
+ parseAndCheckBindings();
+ }
+
+ // class clazz {
+ // };
+ //
+ // template<class C> void demo(C &cont)
+ // {
+ // }
+ //
+ // void demo(clazz &&cont) {
+ // }
+ //
+ // clazz getClazz()
+ // {
+ // clazz c;
+ // return c;
+ // }
+ //
+ // void testRValue()
+ // {
+ // demo(getClazz());
+ // }
+ public void test_rvalue_caller_templatedLvalue_rvalue_function() throws Exception {
+ parseAndCheckBindings();
+ }
+
+ // class clazz {
+ // };
+ //
+ // template<class C> void demo(C &cont)
+ // {
+ // }
+ //
+ // void demo(clazz &&cont) {
+ // }
+ //
+ // clazz getClazz()
+ // {
+ // clazz c;
+ // return c;
+ // }
+ //
+ // void testRValue()
+ // {
+ // demo<clazz>(getClazz());
+ // }
+ public void test_templatedRvalue_caller_templatedLvalue_rvalue_function() throws Exception {
+ parseAndCheckBindingsForProblem();
+ }
+
+ // class clazz {
+ // };
+ //
+ // template<class C> void demo(C &cont)
+ // {
+ // }
+ //
+ // void demo(clazz &&cont) {
+ // }
+ //
+ // void testRValue()
+ // {
+ // clazz c;
+ // demo<clazz>(c);
+ // }
+ public void test_templatedLvalue_caller_templatedLvalue_rvalue_function() throws Exception {
+ parseAndCheckBindings();
+ }
+
+ // class clazz {
+ // };
+ //
+ // template<class C> void demo(C &cont)
+ // {
+ // }
+ //
+ // template<class C> void demo(C &&cont)
+ // {
+ // }
+ //
+ // void testLValue()
+ // {
+ // clazz c;
+ // demo(c);
+ // }
+ public void test_lvalue_caller_templatedLvalue_templatedRvalue_function() throws Exception {
+ parseAndCheckBindings();
+ }
+
+ // class clazz {
+ // };
+ //
+ // template<class C> void demo(C &cont)
+ // {
+ // }
+ //
+ // template<class C> void demo(C &&cont)
+ // {
+ // }
+ //
+ // clazz getClazz()
+ // {
+ // clazz c;
+ // return c;
+ // }
+ //
+ // void testRValue()
+ // {
+ // demo(getClazz());
+ // }
+ public void test_rvalue_caller_templatedLvalue_templatedRvalue_function() throws Exception {
+ parseAndCheckBindings();
+ }
+
+ // class clazz {
+ // };
+ //
+ // template<class C> void demo(C &cont)
+ // {
+ // }
+ //
+ // template<class C> void demo(C &&cont)
+ // {
+ // }
+ //
+ // clazz getClazz()
+ // {
+ // clazz c;
+ // return c;
+ // }
+ //
+ // void testRValue()
+ // {
+ // demo<clazz>(getClazz());
+ // }
+ public void test_templatedRvalue_caller_templatedLvalue_templatedRvalue_function() throws Exception {
+ parseAndCheckBindings();
+ }
+
+ // class clazz {
+ // };
+ //
+ // template<class C> void demo(C &cont)
+ // {
+ // }
+ //
+ // template<class C> void demo(C &&cont)
+ // {
+ // }
+ //
+ // void testLValue()
+ // {
+ // clazz c;
+ // demo<clazz>(c);
+ // }
+ public void test_templatedLvalue_caller_templatedLvalue_templatedRvalue_function() throws Exception {
+ parseAndCheckBindings();
+ }
+
+ // class clazz {
+ // };
+ //
+ // template<class C> void demo(C &cont)
+ // {
+ // }
+ //
+ // clazz getClazz()
+ // {
+ // clazz c;
+ // return c;
+ // }
+ //
+ // void testRValue()
+ // {
+ // demo<clazz>(getClazz());
+ // }
+ public void test_templatedRvalue_caller_templatedLvalue_function() throws Exception {
+ parseAndCheckBindingsForProblem();
+ }
+
+ // class clazz {
+ // };
+ //
+ // template<class C> void demo(C &&cont)
+ // {
+ // }
+ //
+ // clazz getClazz()
+ // {
+ // clazz c;
+ // return c;
+ // }
+ //
+ // void testRValue()
+ // {
+ // demo<clazz>(getClazz());
+ // }
+ public void test_templatedRvalue_caller_templatedRvalue_function() throws Exception {
+ parseAndCheckBindings();
+ }
+
+ // class clazz {
+ // };
+ //
+ // template<class C> void demo(C &cont)
+ // {
+ // }
+ //
+ // void testLValue()
+ // {
+ // clazz c;
+ // demo<clazz>(c);
+ // }
+ public void test_templatedLvalue_caller_templatedLvalue_function() throws Exception {
+ parseAndCheckBindings();
+ }
+
+ // class clazz {
+ // };
+ //
+ // template<class C> void demo(C &&cont)
+ // {
+ // }
+ //
+ // void testLValue()
+ // {
+ // clazz c;
+ // demo<clazz>(c);
+ // }
+ public void test_templatedLvalue_caller_templatedRvalue_function() throws Exception {
+ parseAndCheckBindingsForProblem();
+ }
+
+ private void parseAndCheckBindingsForOneProblem() throws IOException, ParserException {
+ final String code = getAboveComment();
+ IASTTranslationUnit tu = parse(code, CPP, true, false);
+ NameCollector nc = new NameCollector();
+ tu.accept(nc);
+ assertProblemBindings(nc, 1);
+ }
+
+ private void parseAndCheckBindingsForProblem() throws IOException, ParserException {
+ final String code = getAboveComment();
+ IASTTranslationUnit tu = parse(code, CPP, true, false);
+ NameCollector nc = new NameCollector();
+ tu.accept(nc);
+ assertProblemBindings(nc);
+ }
+} \ No newline at end of file
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TemplateTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TemplateTests.java
index bada355b7d4..ab237d266b2 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TemplateTests.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TemplateTests.java
@@ -11385,4 +11385,19 @@ public class AST2TemplateTests extends AST2CPPTestBase {
public void testStringLiteralOperatorTemplate_536986() throws Exception {
parseAndCheckImplicitNameBindings();
}
+
+ // template <int...>
+ // struct integer_sequence {};
+ //
+ // template <int N>
+ // using make_integer_sequence = integer_sequence<__integer_pack(N)...>;
+ //
+ // using type1 = integer_sequence<0, 1, 2>;
+ // using type2 = make_integer_sequence<3>;
+ public void testIntegerPack_553794() throws Exception {
+ BindingAssertionHelper helper = getAssertionHelper();
+ ITypedef type1 = helper.assertNonProblem("type1");
+ ITypedef type2 = helper.assertNonProblem("type2");
+ assertSameType(type1, type2);
+ }
}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TestBase.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TestBase.java
index 569c4fbdede..755bf7bafea 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TestBase.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TestBase.java
@@ -113,6 +113,7 @@ public class AST2TestBase extends SemanticTestBase {
map.put("__SIZEOF_SHORT__", "2");
map.put("__SIZEOF_INT__", "4");
map.put("__SIZEOF_LONG__", "8");
+ map.put("__SIZEOF_LONG_LONG__", "8");
map.put("__SIZEOF_DOUBLE__", "8");
map.put("__SIZEOF_POINTER__", "8");
return map;
@@ -123,6 +124,7 @@ public class AST2TestBase extends SemanticTestBase {
map.put("__SIZEOF_SHORT__", "2");
map.put("__SIZEOF_INT__", "4");
map.put("__SIZEOF_LONG__", "8");
+ map.put("__SIZEOF_LONG_LONG__", "8");
map.put("__SIZEOF_DOUBLE__", "8");
map.put("__SIZEOF_POINTER__", "8");
return map;
@@ -532,12 +534,23 @@ public class AST2TestBase extends SemanticTestBase {
final protected void assertProblemBindings(NameCollector col, int count) {
int sum = 0;
for (IASTName n : col.nameList) {
- if (n.resolveBinding() instanceof IProblemBinding)
+ if (n.resolveBinding() instanceof IProblemBinding) {
++sum;
+ }
}
assertEquals(count, sum);
}
+ final protected void assertProblemBindings(NameCollector col) {
+ int sum = 0;
+ for (IASTName n : col.nameList) {
+ if (n.resolveBinding() instanceof IProblemBinding) {
+ ++sum;
+ }
+ }
+ assertTrue(sum > 0);
+ }
+
final protected <T extends IASTDeclaration> T getDeclaration(IASTTranslationUnit tu, int i_decl) {
Class<T> tclass;
IASTDeclaration[] decls = tu.getDeclarations();
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2Tests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2Tests.java
index 381c576ce28..571fa566393 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2Tests.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2Tests.java
@@ -2533,7 +2533,7 @@ public class AST2Tests extends AST2TestBase {
public void testBug80978() throws Exception {
ICASTArrayModifier mod = (ICASTArrayModifier) ((IASTArrayDeclarator) ((IASTStandardFunctionDeclarator) ((IASTSimpleDeclaration) parse(
getAboveComment(), C).getDeclarations()[0]).getDeclarators()[0]).getParameters()[0].getDeclarator())
- .getArrayModifiers()[0];
+ .getArrayModifiers()[0];
assertTrue(mod.isConst());
assertTrue(mod.isVariableSized());
assertFalse(mod.isStatic());
@@ -2846,7 +2846,7 @@ public class AST2Tests extends AST2TestBase {
public void testBug84250() throws Exception {
assertTrue(((IASTDeclarationStatement) ((IASTCompoundStatement) ((IASTFunctionDefinition) parse(
"void f() { int (*p) [2]; }", C).getDeclarations()[0]).getBody()).getStatements()[0]) //$NON-NLS-1$
- .getDeclaration() instanceof IASTSimpleDeclaration);
+ .getDeclaration() instanceof IASTSimpleDeclaration);
}
// struct s1 { struct s2 *s2p; /* ... */ }; // D1
@@ -5421,6 +5421,29 @@ public class AST2Tests extends AST2TestBase {
}
}
+ // using MyType = __declspec(dllexport) int;
+ //
+ // template <typename T>
+ // class Vector {
+ // };
+ // void test() {
+ // Vector <__declspec(dllexport) int> a;
+ // }
+ public void testDeclspecTypeId_574578() throws Exception {
+ parseAndCheckBindings(getAboveComment(), CPP, true);
+ }
+
+ //typedef struct _MyStruct {
+ //} MyStruct;
+ //
+ //MyStruct __declspec(dllexport) foo;
+ //MyStruct __declspec(dllexport) __declspec(deprecated) bar;
+ public void testDeclspecAfterDeclSpecifierIdentifier_464624() throws Exception {
+ for (ParserLanguage lang : ParserLanguage.values()) {
+ parseAndCheckBindings(getAboveComment(), lang, true);
+ }
+ }
+
// struct Outer {
// struct {int a1;};
// struct {int a2;} a3;
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/DOMFileBasePluginTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/DOMFileBasePluginTest.java
index c068e99b690..3e643a48c93 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/DOMFileBasePluginTest.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/DOMFileBasePluginTest.java
@@ -39,7 +39,7 @@ import junit.framework.TestCase;
/**
* @author dsteffle
*/
-public class DOMFileBasePluginTest extends TestCase {
+public abstract class DOMFileBasePluginTest extends TestCase {
static NullProgressMonitor monitor;
static IWorkspace workspace;
static IProject project;
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/DOMGCCParserExtensionTestSuite.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/DOMGCCParserExtensionTestSuite.java
index e07a843f9fd..577a1167d78 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/DOMGCCParserExtensionTestSuite.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/DOMGCCParserExtensionTestSuite.java
@@ -19,8 +19,9 @@ import junit.framework.TestSuite;
/**
* @author jcamelon
- *
+ * @deprecated In preparation for moving to JUnit5 test suites are deprecated. See Bug 569839
*/
+@Deprecated
public class DOMGCCParserExtensionTestSuite extends TestCase {
public static Test suite() {
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/DOMParserTestSuite.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/DOMParserTestSuite.java
index 5f17ae73f30..dbe0749d5b0 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/DOMParserTestSuite.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/DOMParserTestSuite.java
@@ -31,7 +31,9 @@ import junit.framework.TestSuite;
/**
* @author jcamelon
+ * @deprecated In preparation for moving to JUnit5 test suites are deprecated. See Bug 569839
*/
+@Deprecated
public class DOMParserTestSuite extends TestCase {
public static Test suite() {
TestSuite suite = new TestSuite(DOMParserTestSuite.class.getName());
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/VariableReadWriteFlagsTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/VariableReadWriteFlagsTest.java
index 5eb63ee3714..a39ecccaded 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/VariableReadWriteFlagsTest.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/VariableReadWriteFlagsTest.java
@@ -14,6 +14,7 @@
package org.eclipse.cdt.core.parser.tests.ast2;
import java.io.IOException;
+import java.util.Optional;
import org.eclipse.cdt.core.dom.ast.IASTName;
import org.eclipse.cdt.internal.core.dom.parser.c.CVariableReadWriteFlags;
@@ -35,27 +36,34 @@ public class VariableReadWriteFlagsTest extends AST2TestBase {
super(contents, isCPP);
}
- void assertReadWriteFlags(String context, String name, int expectedFlags) throws Exception {
+ void assertReadWriteFlags(String context, String name, Optional<Integer> expectedFlags) throws Exception {
IASTName variable = findName(context, name);
assertNotNull(variable);
assertEquals(flagsToString(expectedFlags), flagsToString(getReadWriteFlags(variable)));
}
- void assertReadWriteFlags(String name, int expectedFlags) throws Exception {
- assertReadWriteFlags(null, name, expectedFlags);
+ void assertReadWriteFlags(String context, String name, int expectedFlags) throws Exception {
+ assertReadWriteFlags(context, name, Optional.of(expectedFlags));
+ }
+
+ void assertReadWriteFlags(String context, String name) throws Exception {
+ assertReadWriteFlags(context, name, Optional.empty());
}
- int getReadWriteFlags(IASTName variable) {
+ Optional<Integer> getReadWriteFlags(IASTName variable) {
return isCPP ? CPPVariableReadWriteFlags.getReadWriteFlags(variable)
: CVariableReadWriteFlags.getReadWriteFlags(variable);
}
- private String flagsToString(int flags) {
+ private String flagsToString(Optional<Integer> flags) {
StringBuilder buf = new StringBuilder();
- if ((flags & READ) != 0) {
+ if (!flags.isPresent()) {
+ buf.append("UNK");
+ }
+ if (flags.isPresent() && (flags.get() & READ) != 0) {
buf.append("READ");
}
- if ((flags & WRITE) != 0) {
+ if (flags.isPresent() && (flags.get() & WRITE) != 0) {
if (buf.length() != 0)
buf.append(" | ");
buf.append("WRITE");
@@ -153,8 +161,8 @@ public class VariableReadWriteFlagsTest extends AST2TestBase {
// };
public void testFunctionCall() throws Exception {
AssertionHelper a = getCPPAssertionHelper();
- a.assertReadWriteFlags("f(&a, b)", "a", READ | WRITE);
- a.assertReadWriteFlags("f(&a, b)", "b", READ | WRITE);
+ a.assertReadWriteFlags("f(&a, b)", "a");
+ a.assertReadWriteFlags("f(&a, b)", "b");
a.assertReadWriteFlags("f(&a, b)", "f", READ);
a.assertReadWriteFlags("g(&a, b, c)", "a", READ);
a.assertReadWriteFlags("g(&a, b, c)", "b", READ);
@@ -176,12 +184,12 @@ public class VariableReadWriteFlagsTest extends AST2TestBase {
// };
public void testConstructorCall_393068() throws Exception {
AssertionHelper a = getCPPAssertionHelper();
- a.assertReadWriteFlags("= A(&a, b)", "a", READ | WRITE);
- a.assertReadWriteFlags("= A(&a, b)", "b", READ | WRITE);
- a.assertReadWriteFlags("new A(&a, b)", "a", READ | WRITE);
- a.assertReadWriteFlags("new A(&a, b)", "b", READ | WRITE);
- a.assertReadWriteFlags("w(&a, b)", "a", READ | WRITE);
- a.assertReadWriteFlags("w(&a, b)", "b", READ | WRITE);
+ a.assertReadWriteFlags("= A(&a, b)", "a");
+ a.assertReadWriteFlags("= A(&a, b)", "b");
+ a.assertReadWriteFlags("new A(&a, b)", "a");
+ a.assertReadWriteFlags("new A(&a, b)", "b");
+ a.assertReadWriteFlags("w(&a, b)", "a");
+ a.assertReadWriteFlags("w(&a, b)", "b");
a.assertReadWriteFlags("w(&a, b)", "w", WRITE);
a.assertReadWriteFlags("= A(&a, b, c)", "a", READ);
a.assertReadWriteFlags("= A(&a, b, c)", "b", READ);
@@ -227,7 +235,7 @@ public class VariableReadWriteFlagsTest extends AST2TestBase {
public void testVariadicFunctionCall_452416() throws Exception {
AssertionHelper a = getCPPAssertionHelper();
a.assertReadWriteFlags("variadic(waldo)", "waldo", READ);
- a.assertReadWriteFlags("variadic(&waldo)", "waldo", READ | WRITE);
+ a.assertReadWriteFlags("variadic(&waldo)", "waldo");
}
// int arr[5];
@@ -245,4 +253,32 @@ public class VariableReadWriteFlagsTest extends AST2TestBase {
a.assertReadWriteFlags("a = arr[0];", "arr", READ);
a.assertReadWriteFlags("return arr[0];", "arr", READ);
}
+
+ // class Test {
+ // public:
+ // int v;
+ // void test() const {
+ // decltype(v) o = 14;
+ // }
+ // };
+ public void testDeclType() throws Exception {
+ AssertionHelper a = getCPPAssertionHelper();
+ a.assertReadWriteFlags("decltype(v) o = 14;", "v", READ);
+ }
+
+ //template <typename S, typename T>
+ //void g(S, T);
+ //
+ //struct A {
+ // int field;
+ //
+ // template <typename S>
+ // void method3(S s) const {
+ // g(s, field);
+ // }
+ //};
+ public void testDependentType() throws Exception {
+ AssertionHelper a = getCPPAssertionHelper();
+ a.assertReadWriteFlags("g(s, field);", "field");
+ }
}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/AllConstexprEvalTestSuite.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/AllConstexprEvalTestSuite.java
new file mode 100644
index 00000000000..2909cec8fa8
--- /dev/null
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/AllConstexprEvalTestSuite.java
@@ -0,0 +1,76 @@
+/*******************************************************************************
+* Copyright (c) 2016 Institute for Software, HSR Hochschule fuer Technik
+* Rapperswil, University of applied sciences and others
+*
+* This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License 2.0
+* which accompanies this distribution, and is available at
+* https://www.eclipse.org/legal/epl-2.0/
+*
+* SPDX-License-Identifier: EPL-2.0
+*******************************************************************************/
+package org.eclipse.cdt.core.parser.tests.ast2.cxx14.constexpr;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * @deprecated In preparation for moving to JUnit5 test suites are deprecated. See Bug 569839
+ */
+@Deprecated
+public class AllConstexprEvalTestSuite {
+ public static Test suite() throws Exception {
+ final TestSuite suite = new TestSuite();
+ suite.addTest(ConstructorTests.NonIndexingTests.suite());
+ suite.addTest(ConstructorTests.SingleProjectTests.suite());
+ suite.addTest(MemberFunctionTests.NonIndexingTests.suite());
+ suite.addTest(MemberFunctionTests.SingleProjectTests.suite());
+ suite.addTest(MemberVariableTests.NonIndexingTests.suite());
+ suite.addTest(MemberVariableTests.SingleProjectTests.suite());
+ suite.addTest(FunctionTests.NonIndexingTests.suite());
+ suite.addTest(FunctionTests.SingleProjectTests.suite());
+ suite.addTest(FunctionTemplateTests.NonIndexingTests.suite());
+ suite.addTest(FunctionTemplateTests.SingleProjectTests.suite());
+ suite.addTest(ClassTemplateTests.NonIndexingTests.suite());
+ suite.addTest(ClassTemplateTests.SingleProjectTests.suite());
+ suite.addTest(IfStatementTests.NonIndexingTests.suite());
+ suite.addTest(IfStatementTests.SingleProjectTests.suite());
+ suite.addTest(SwitchStatementTests.NonIndexingTests.suite());
+ suite.addTest(SwitchStatementTests.SingleProjectTests.suite());
+ suite.addTest(WhileStatementTests.NonIndexingTests.suite());
+ suite.addTest(WhileStatementTests.SingleProjectTests.suite());
+ suite.addTest(DoWhileStatementTests.NonIndexingTests.suite());
+ suite.addTest(DoWhileStatementTests.SingleProjectTests.suite());
+ suite.addTest(ForStatementTests.NonIndexingTests.suite());
+ suite.addTest(ForStatementTests.SingleProjectTests.suite());
+ suite.addTest(RangeBasedForStatementTests.NonIndexingTests.suite());
+ suite.addTest(RangeBasedForStatementTests.SingleProjectTests.suite());
+ suite.addTest(BinaryOperatorOverloadingTests.NonIndexingTests.suite());
+ suite.addTest(BinaryOperatorOverloadingTests.SingleProjectTests.suite());
+ suite.addTest(UnaryOperatorOverloadingTests.NonIndexingTests.suite());
+ suite.addTest(UnaryOperatorOverloadingTests.SingleProjectTests.suite());
+ suite.addTest(ArrayTests.NonIndexingTests.suite());
+ suite.addTest(ArrayTests.SingleProjectTests.suite());
+ suite.addTest(BinaryExpressionTests.NonIndexingTests.suite());
+ suite.addTest(BinaryExpressionTests.SingleProjectTests.suite());
+ suite.addTest(UnaryExpressionTests.NonIndexingTests.suite());
+ suite.addTest(UnaryExpressionTests.SingleProjectTests.suite());
+ suite.addTest(ReferenceTests.NonIndexingTests.suite());
+ suite.addTest(ReferenceTests.SingleProjectTests.suite());
+ suite.addTest(TypeAliasTests.NonIndexingTests.suite());
+ suite.addTest(TypeAliasTests.SingleProjectTests.suite());
+ suite.addTest(PointerTests.NonIndexingTests.suite());
+ suite.addTest(PointerTests.SingleProjectTests.suite());
+ suite.addTest(UserDefinedLiteralTests.NonIndexingTests.suite());
+ suite.addTest(UserDefinedLiteralTests.SingleProjectTests.suite());
+ suite.addTest(IntegralValueTests.NonIndexingTests.suite());
+ suite.addTest(IntegralValueTests.SingleProjectTests.suite());
+ suite.addTest(FloatingPointValueTests.NonIndexingTests.suite());
+ suite.addTest(FloatingPointValueTests.SingleProjectTests.suite());
+ suite.addTest(CStringValueTests.NonIndexingTests.suite());
+ suite.addTest(CStringValueTests.SingleProjectTests.suite());
+ suite.addTest(StructuredBindingTests.NonIndexingTests.suite());
+ suite.addTest(StructuredBindingTests.SingleProjectTests.suite());
+ return suite;
+ }
+}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/AllConstexprEvalTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/AllConstexprEvalTests.java
deleted file mode 100644
index 79eb731d114..00000000000
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/AllConstexprEvalTests.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2016 Institute for Software, HSR Hochschule fuer Technik
-* Rapperswil, University of applied sciences and others
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*******************************************************************************/
-package org.eclipse.cdt.core.parser.tests.ast2.cxx14.constexpr;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-public class AllConstexprEvalTests {
- public static Test suite() throws Exception {
- final TestSuite suite = new TestSuite();
- suite.addTest(ConstructorTests.NonIndexing.suite());
- suite.addTest(ConstructorTests.SingleProject.suite());
- suite.addTest(MemberFunctionTests.NonIndexing.suite());
- suite.addTest(MemberFunctionTests.SingleProject.suite());
- suite.addTest(MemberVariableTests.NonIndexing.suite());
- suite.addTest(MemberVariableTests.SingleProject.suite());
- suite.addTest(FunctionTests.NonIndexing.suite());
- suite.addTest(FunctionTests.SingleProject.suite());
- suite.addTest(FunctionTemplateTests.NonIndexing.suite());
- suite.addTest(FunctionTemplateTests.SingleProject.suite());
- suite.addTest(ClassTemplateTests.NonIndexing.suite());
- suite.addTest(ClassTemplateTests.SingleProject.suite());
- suite.addTest(IfStatementTests.NonIndexing.suite());
- suite.addTest(IfStatementTests.SingleProject.suite());
- suite.addTest(SwitchStatementTests.NonIndexing.suite());
- suite.addTest(SwitchStatementTests.SingleProject.suite());
- suite.addTest(WhileStatementTests.NonIndexing.suite());
- suite.addTest(WhileStatementTests.SingleProject.suite());
- suite.addTest(DoWhileStatementTests.NonIndexing.suite());
- suite.addTest(DoWhileStatementTests.SingleProject.suite());
- suite.addTest(ForStatementTests.NonIndexing.suite());
- suite.addTest(ForStatementTests.SingleProject.suite());
- suite.addTest(RangeBasedForStatementTests.NonIndexing.suite());
- suite.addTest(RangeBasedForStatementTests.SingleProject.suite());
- suite.addTest(BinaryOperatorOverloadingTests.NonIndexing.suite());
- suite.addTest(BinaryOperatorOverloadingTests.SingleProject.suite());
- suite.addTest(UnaryOperatorOverloadingTests.NonIndexing.suite());
- suite.addTest(UnaryOperatorOverloadingTests.SingleProject.suite());
- suite.addTest(ArrayTests.NonIndexing.suite());
- suite.addTest(ArrayTests.SingleProject.suite());
- suite.addTest(BinaryExpressionTests.NonIndexing.suite());
- suite.addTest(BinaryExpressionTests.SingleProject.suite());
- suite.addTest(UnaryExpressionTests.NonIndexing.suite());
- suite.addTest(UnaryExpressionTests.SingleProject.suite());
- suite.addTest(ReferenceTests.NonIndexing.suite());
- suite.addTest(ReferenceTests.SingleProject.suite());
- suite.addTest(TypeAliasTests.NonIndexing.suite());
- suite.addTest(TypeAliasTests.SingleProject.suite());
- suite.addTest(PointerTests.NonIndexing.suite());
- suite.addTest(PointerTests.SingleProject.suite());
- suite.addTest(UserDefinedLiteralTests.NonIndexing.suite());
- suite.addTest(UserDefinedLiteralTests.SingleProject.suite());
- suite.addTest(IntegralValueTests.NonIndexing.suite());
- suite.addTest(IntegralValueTests.SingleProject.suite());
- suite.addTest(FloatingPointValueTests.NonIndexing.suite());
- suite.addTest(FloatingPointValueTests.SingleProject.suite());
- suite.addTest(CStringValueTests.NonIndexing.suite());
- suite.addTest(CStringValueTests.SingleProject.suite());
- suite.addTest(StructuredBindingTests.NonIndexing.suite());
- suite.addTest(StructuredBindingTests.SingleProject.suite());
- return suite;
- }
-}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/ArrayTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/ArrayTests.java
index 7d33789eed2..929b6d29d85 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/ArrayTests.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/ArrayTests.java
@@ -13,24 +13,24 @@ package org.eclipse.cdt.core.parser.tests.ast2.cxx14.constexpr;
import junit.framework.TestSuite;
-public class ArrayTests extends TestBase {
- public static class NonIndexing extends ArrayTests {
- public NonIndexing() {
+public abstract class ArrayTests extends TestBase {
+ public static class NonIndexingTests extends ArrayTests {
+ public NonIndexingTests() {
setStrategy(new NonIndexingTestStrategy());
}
public static TestSuite suite() {
- return suite(NonIndexing.class);
+ return suite(NonIndexingTests.class);
}
}
- public static class SingleProject extends ArrayTests {
- public SingleProject() {
+ public static class SingleProjectTests extends ArrayTests {
+ public SingleProjectTests() {
setStrategy(new SinglePDOMTestStrategy(true, false));
}
public static TestSuite suite() {
- return suite(SingleProject.class);
+ return suite(SingleProjectTests.class);
}
}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/BinaryExpressionTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/BinaryExpressionTests.java
index abe0a57b9fa..5a675a92f2c 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/BinaryExpressionTests.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/BinaryExpressionTests.java
@@ -13,24 +13,24 @@ package org.eclipse.cdt.core.parser.tests.ast2.cxx14.constexpr;
import junit.framework.TestSuite;
-public class BinaryExpressionTests extends TestBase {
- public static class NonIndexing extends BinaryExpressionTests {
- public NonIndexing() {
+public abstract class BinaryExpressionTests extends TestBase {
+ public static class NonIndexingTests extends BinaryExpressionTests {
+ public NonIndexingTests() {
setStrategy(new NonIndexingTestStrategy());
}
public static TestSuite suite() {
- return suite(NonIndexing.class);
+ return suite(NonIndexingTests.class);
}
}
- public static class SingleProject extends BinaryExpressionTests {
- public SingleProject() {
+ public static class SingleProjectTests extends BinaryExpressionTests {
+ public SingleProjectTests() {
setStrategy(new SinglePDOMTestStrategy(true, false));
}
public static TestSuite suite() {
- return suite(SingleProject.class);
+ return suite(SingleProjectTests.class);
}
}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/BinaryOperatorOverloadingTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/BinaryOperatorOverloadingTests.java
index 2052811815a..7b9b1b2db12 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/BinaryOperatorOverloadingTests.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/BinaryOperatorOverloadingTests.java
@@ -13,24 +13,24 @@ package org.eclipse.cdt.core.parser.tests.ast2.cxx14.constexpr;
import junit.framework.TestSuite;
-public class BinaryOperatorOverloadingTests extends TestBase {
- public static class NonIndexing extends BinaryOperatorOverloadingTests {
- public NonIndexing() {
+public abstract class BinaryOperatorOverloadingTests extends TestBase {
+ public static class NonIndexingTests extends BinaryOperatorOverloadingTests {
+ public NonIndexingTests() {
setStrategy(new NonIndexingTestStrategy());
}
public static TestSuite suite() {
- return suite(NonIndexing.class);
+ return suite(NonIndexingTests.class);
}
}
- public static class SingleProject extends BinaryOperatorOverloadingTests {
- public SingleProject() {
+ public static class SingleProjectTests extends BinaryOperatorOverloadingTests {
+ public SingleProjectTests() {
setStrategy(new SinglePDOMTestStrategy(true, false));
}
public static TestSuite suite() {
- return suite(SingleProject.class);
+ return suite(SingleProjectTests.class);
}
}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/CStringValueTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/CStringValueTests.java
index 12cf893691d..1c5c084c712 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/CStringValueTests.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/CStringValueTests.java
@@ -13,24 +13,24 @@ package org.eclipse.cdt.core.parser.tests.ast2.cxx14.constexpr;
import junit.framework.TestSuite;
-public class CStringValueTests extends TestBase {
- public static class NonIndexing extends CStringValueTests {
- public NonIndexing() {
+public abstract class CStringValueTests extends TestBase {
+ public static class NonIndexingTests extends CStringValueTests {
+ public NonIndexingTests() {
setStrategy(new NonIndexingTestStrategy());
}
public static TestSuite suite() {
- return suite(NonIndexing.class);
+ return suite(NonIndexingTests.class);
}
}
- public static class SingleProject extends CStringValueTests {
- public SingleProject() {
+ public static class SingleProjectTests extends CStringValueTests {
+ public SingleProjectTests() {
setStrategy(new SinglePDOMTestStrategy(true, false));
}
public static TestSuite suite() {
- return suite(SingleProject.class);
+ return suite(SingleProjectTests.class);
}
}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/ClassTemplateTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/ClassTemplateTests.java
index 85853da3d15..56f7f718c56 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/ClassTemplateTests.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/ClassTemplateTests.java
@@ -13,24 +13,24 @@ package org.eclipse.cdt.core.parser.tests.ast2.cxx14.constexpr;
import junit.framework.TestSuite;
-public class ClassTemplateTests extends TestBase {
- public static class NonIndexing extends ClassTemplateTests {
- public NonIndexing() {
+public abstract class ClassTemplateTests extends TestBase {
+ public static class NonIndexingTests extends ClassTemplateTests {
+ public NonIndexingTests() {
setStrategy(new NonIndexingTestStrategy());
}
public static TestSuite suite() {
- return suite(NonIndexing.class);
+ return suite(NonIndexingTests.class);
}
}
- public static class SingleProject extends ClassTemplateTests {
- public SingleProject() {
+ public static class SingleProjectTests extends ClassTemplateTests {
+ public SingleProjectTests() {
setStrategy(new SinglePDOMTestStrategy(true, false));
}
public static TestSuite suite() {
- return suite(SingleProject.class);
+ return suite(SingleProjectTests.class);
}
}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/ConstructorTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/ConstructorTests.java
index bd597e750b2..4f3f3933f03 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/ConstructorTests.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/ConstructorTests.java
@@ -15,24 +15,24 @@ import org.eclipse.cdt.internal.core.dom.parser.IntegralValue;
import junit.framework.TestSuite;
-public class ConstructorTests extends TestBase {
- public static class NonIndexing extends ConstructorTests {
- public NonIndexing() {
+public abstract class ConstructorTests extends TestBase {
+ public static class NonIndexingTests extends ConstructorTests {
+ public NonIndexingTests() {
setStrategy(new NonIndexingTestStrategy());
}
public static TestSuite suite() {
- return suite(NonIndexing.class);
+ return suite(NonIndexingTests.class);
}
}
- public static class SingleProject extends ConstructorTests {
- public SingleProject() {
+ public static class SingleProjectTests extends ConstructorTests {
+ public SingleProjectTests() {
setStrategy(new SinglePDOMTestStrategy(true, false));
}
public static TestSuite suite() {
- return suite(SingleProject.class);
+ return suite(SingleProjectTests.class);
}
}
@@ -41,7 +41,7 @@ public class ConstructorTests extends TestBase {
}
public static TestSuite suite() {
- return suite(NonIndexing.class);
+ return suite(NonIndexingTests.class);
}
// struct S {
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/DoWhileStatementTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/DoWhileStatementTests.java
index c0f21f23527..1d1c5712bc6 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/DoWhileStatementTests.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/DoWhileStatementTests.java
@@ -15,24 +15,24 @@ import org.eclipse.cdt.internal.core.dom.parser.IntegralValue;
import junit.framework.TestSuite;
-public class DoWhileStatementTests extends TestBase {
- public static class NonIndexing extends DoWhileStatementTests {
- public NonIndexing() {
+public abstract class DoWhileStatementTests extends TestBase {
+ public static class NonIndexingTests extends DoWhileStatementTests {
+ public NonIndexingTests() {
setStrategy(new NonIndexingTestStrategy());
}
public static TestSuite suite() {
- return suite(NonIndexing.class);
+ return suite(NonIndexingTests.class);
}
}
- public static class SingleProject extends DoWhileStatementTests {
- public SingleProject() {
+ public static class SingleProjectTests extends DoWhileStatementTests {
+ public SingleProjectTests() {
setStrategy(new SinglePDOMTestStrategy(true, false));
}
public static TestSuite suite() {
- return suite(SingleProject.class);
+ return suite(SingleProjectTests.class);
}
}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/FloatingPointValueTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/FloatingPointValueTests.java
index 2727a202128..10466ca6a59 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/FloatingPointValueTests.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/FloatingPointValueTests.java
@@ -13,24 +13,24 @@ package org.eclipse.cdt.core.parser.tests.ast2.cxx14.constexpr;
import junit.framework.TestSuite;
-public class FloatingPointValueTests extends TestBase {
- public static class NonIndexing extends FloatingPointValueTests {
- public NonIndexing() {
+public abstract class FloatingPointValueTests extends TestBase {
+ public static class NonIndexingTests extends FloatingPointValueTests {
+ public NonIndexingTests() {
setStrategy(new NonIndexingTestStrategy());
}
public static TestSuite suite() {
- return suite(NonIndexing.class);
+ return suite(NonIndexingTests.class);
}
}
- public static class SingleProject extends FloatingPointValueTests {
- public SingleProject() {
+ public static class SingleProjectTests extends FloatingPointValueTests {
+ public SingleProjectTests() {
setStrategy(new SinglePDOMTestStrategy(true, false));
}
public static TestSuite suite() {
- return suite(SingleProject.class);
+ return suite(SingleProjectTests.class);
}
}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/ForStatementTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/ForStatementTests.java
index 81257e33b9e..f1f15bbd867 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/ForStatementTests.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/ForStatementTests.java
@@ -15,24 +15,24 @@ import org.eclipse.cdt.internal.core.dom.parser.IntegralValue;
import junit.framework.TestSuite;
-public class ForStatementTests extends TestBase {
- public static class NonIndexing extends ForStatementTests {
- public NonIndexing() {
+public abstract class ForStatementTests extends TestBase {
+ public static class NonIndexingTests extends ForStatementTests {
+ public NonIndexingTests() {
setStrategy(new NonIndexingTestStrategy());
}
public static TestSuite suite() {
- return suite(NonIndexing.class);
+ return suite(NonIndexingTests.class);
}
}
- public static class SingleProject extends ForStatementTests {
- public SingleProject() {
+ public static class SingleProjectTests extends ForStatementTests {
+ public SingleProjectTests() {
setStrategy(new SinglePDOMTestStrategy(true, false));
}
public static TestSuite suite() {
- return suite(SingleProject.class);
+ return suite(SingleProjectTests.class);
}
}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/FunctionTemplateTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/FunctionTemplateTests.java
index 24e530ba9e8..beb16f03c28 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/FunctionTemplateTests.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/FunctionTemplateTests.java
@@ -13,24 +13,24 @@ package org.eclipse.cdt.core.parser.tests.ast2.cxx14.constexpr;
import junit.framework.TestSuite;
-public class FunctionTemplateTests extends TestBase {
- public static class NonIndexing extends FunctionTemplateTests {
- public NonIndexing() {
+public abstract class FunctionTemplateTests extends TestBase {
+ public static class NonIndexingTests extends FunctionTemplateTests {
+ public NonIndexingTests() {
setStrategy(new NonIndexingTestStrategy());
}
public static TestSuite suite() {
- return suite(NonIndexing.class);
+ return suite(NonIndexingTests.class);
}
}
- public static class SingleProject extends FunctionTemplateTests {
- public SingleProject() {
+ public static class SingleProjectTests extends FunctionTemplateTests {
+ public SingleProjectTests() {
setStrategy(new SinglePDOMTestStrategy(true, false));
}
public static TestSuite suite() {
- return suite(SingleProject.class);
+ return suite(SingleProjectTests.class);
}
}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/FunctionTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/FunctionTests.java
index 63fb951fef9..e93634e893d 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/FunctionTests.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/FunctionTests.java
@@ -20,24 +20,24 @@ import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPExecution;
import junit.framework.TestSuite;
-public class FunctionTests extends TestBase {
- public static class NonIndexing extends FunctionTests {
- public NonIndexing() {
+public abstract class FunctionTests extends TestBase {
+ public static class NonIndexingTests extends FunctionTests {
+ public NonIndexingTests() {
setStrategy(new NonIndexingTestStrategy());
}
public static TestSuite suite() {
- return suite(NonIndexing.class);
+ return suite(NonIndexingTests.class);
}
}
- public static class SingleProject extends FunctionTests {
- public SingleProject() {
+ public static class SingleProjectTests extends FunctionTests {
+ public SingleProjectTests() {
setStrategy(new SinglePDOMTestStrategy(true, false));
}
public static TestSuite suite() {
- return suite(SingleProject.class);
+ return suite(SingleProjectTests.class);
}
}
@@ -274,4 +274,20 @@ public class FunctionTests extends TestBase {
// .m(21).m(22).m(23).m(24).m(25).m(26).m(27).m(28).m(29).m(30);
public void testLongCallChain_505606() throws Exception {
}
+
+ // auto f = []() constexpr -> int {return 58;};
+
+ // constexpr int x = f();
+ public void testLambdaExpression_560483() throws Exception {
+ assertEvaluationEquals(58);
+ }
+
+ // constexpr int f() {
+ // return ([]() constexpr -> int {return 58;})();
+ // }
+
+ // constexpr int x = f();
+ public void testLambdaExpression2_560483() throws Exception {
+ assertEvaluationEquals(58);
+ }
} \ No newline at end of file
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/IfStatementTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/IfStatementTests.java
index e8c32fe5320..cac71883df0 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/IfStatementTests.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/IfStatementTests.java
@@ -13,24 +13,24 @@ package org.eclipse.cdt.core.parser.tests.ast2.cxx14.constexpr;
import junit.framework.TestSuite;
-public class IfStatementTests extends TestBase {
- public static class NonIndexing extends IfStatementTests {
- public NonIndexing() {
+public abstract class IfStatementTests extends TestBase {
+ public static class NonIndexingTests extends IfStatementTests {
+ public NonIndexingTests() {
setStrategy(new NonIndexingTestStrategy());
}
public static TestSuite suite() {
- return suite(NonIndexing.class);
+ return suite(NonIndexingTests.class);
}
}
- public static class SingleProject extends IfStatementTests {
- public SingleProject() {
+ public static class SingleProjectTests extends IfStatementTests {
+ public SingleProjectTests() {
setStrategy(new SinglePDOMTestStrategy(true, false));
}
public static TestSuite suite() {
- return suite(SingleProject.class);
+ return suite(SingleProjectTests.class);
}
}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/IntegralValueTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/IntegralValueTests.java
index 641fdfc411f..226ac681328 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/IntegralValueTests.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/IntegralValueTests.java
@@ -11,31 +11,42 @@
*******************************************************************************/
package org.eclipse.cdt.core.parser.tests.ast2.cxx14.constexpr;
+import org.eclipse.cdt.core.testplugin.TestScannerProvider;
import org.eclipse.cdt.internal.core.dom.parser.IntegralValue;
import junit.framework.TestSuite;
-public class IntegralValueTests extends TestBase {
- public static class NonIndexing extends IntegralValueTests {
- public NonIndexing() {
+public abstract class IntegralValueTests extends TestBase {
+ public static class NonIndexingTests extends IntegralValueTests {
+ public NonIndexingTests() {
setStrategy(new NonIndexingTestStrategy());
}
public static TestSuite suite() {
- return suite(NonIndexing.class);
+ return suite(NonIndexingTests.class);
}
}
- public static class SingleProject extends IntegralValueTests {
- public SingleProject() {
+ public static class SingleProjectTests extends IntegralValueTests {
+ public SingleProjectTests() {
setStrategy(new SinglePDOMTestStrategy(true, false));
}
public static TestSuite suite() {
- return suite(SingleProject.class);
+ return suite(SingleProjectTests.class);
}
}
+ @Override
+ protected void setUp() throws Exception {
+ TestScannerProvider.sDefinedSymbols.put("__SIZEOF_SHORT__", "2");
+ TestScannerProvider.sDefinedSymbols.put("__SIZEOF_INT__", "4");
+ TestScannerProvider.sDefinedSymbols.put("__SIZEOF_LONG__", "8");
+ TestScannerProvider.sDefinedSymbols.put("__SIZEOF_LONG_LONG__", "8");
+ TestScannerProvider.sDefinedSymbols.put("__SIZEOF_POINTER__", "8");
+ super.setUp();
+ }
+
// constexpr auto x = int{} + int();
public void testIntDefaultValue() throws Exception {
assertEvaluationEquals(0);
@@ -269,4 +280,64 @@ public class IntegralValueTests extends TestBase {
public void testHexLiteral() throws Exception {
assertEvaluationEquals(42);
}
+
+ // constexpr int x = __builtin_ffs(0) + __builtin_ffs(16);
+ public void testBuiltinFfs() throws Exception {
+ assertEvaluationEquals(5);
+ }
+
+ // constexpr int x = __builtin_ffs(0x100000000);
+ public void testBuiltinFfsNarrowing() throws Exception {
+ assertEvaluationEquals(0);
+ }
+
+ // constexpr int x = __builtin_ffsl(0x100000000);
+ public void testBuiltinFfsl() throws Exception {
+ assertEvaluationEquals(33);
+ }
+
+ // constexpr int x = __builtin_ctz(16);
+ public void testBuiltinCtz() throws Exception {
+ assertEvaluationEquals(4);
+ }
+
+ // constexpr int x = __builtin_popcount(128 + 32 + 8 + 4 + 2);
+ public void testBuiltinPopcount() throws Exception {
+ assertEvaluationEquals(5);
+ }
+
+ // constexpr int x = __builtin_popcountl(0x80000001);
+ public void testBuiltinPopcountHighBitSet() throws Exception {
+ assertEvaluationEquals(2);
+ }
+
+ // constexpr int x = __builtin_popcountl(0x8000000000000001);
+ public void testBuiltinPopcountlHighBitSet() throws Exception {
+ assertEvaluationEquals(2);
+ }
+
+ // constexpr int x = __builtin_popcountll(0x8000000000000001);
+ public void testBuiltinPopcountllHighBitSet() throws Exception {
+ assertEvaluationEquals(2);
+ }
+
+ // constexpr int x = __builtin_parity(128 + 32 + 8 + 4 + 2) + __builtin_parity(64) + __builtin_parity(0);
+ public void testBuiltinParity() throws Exception {
+ assertEvaluationEquals(2);
+ }
+
+ // constexpr int x = __builtin_abs(700) + __builtin_abs(50);
+ public void testBuiltinAbs() throws Exception {
+ assertEvaluationEquals(750);
+ }
+
+ // constexpr int x = __builtin_abs(-1);
+ public void testBuiltinAbsNegativeInput() throws Exception {
+ assertEvaluationEquals(1);
+ }
+
+ // constexpr int x = __builtin_abs(0xFFFFFFFF);
+ public void testBuiltinAbsNarrowing() throws Exception {
+ assertEvaluationEquals(1);
+ }
} \ No newline at end of file
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/MemberFunctionTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/MemberFunctionTests.java
index a9d192722f4..652c8bf8c31 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/MemberFunctionTests.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/MemberFunctionTests.java
@@ -13,24 +13,24 @@ package org.eclipse.cdt.core.parser.tests.ast2.cxx14.constexpr;
import junit.framework.TestSuite;
-public class MemberFunctionTests extends TestBase {
- public static class NonIndexing extends MemberFunctionTests {
- public NonIndexing() {
+public abstract class MemberFunctionTests extends TestBase {
+ public static class NonIndexingTests extends MemberFunctionTests {
+ public NonIndexingTests() {
setStrategy(new NonIndexingTestStrategy());
}
public static TestSuite suite() {
- return suite(NonIndexing.class);
+ return suite(NonIndexingTests.class);
}
}
- public static class SingleProject extends MemberFunctionTests {
- public SingleProject() {
+ public static class SingleProjectTests extends MemberFunctionTests {
+ public SingleProjectTests() {
setStrategy(new SinglePDOMTestStrategy(true, false));
}
public static TestSuite suite() {
- return suite(SingleProject.class);
+ return suite(SingleProjectTests.class);
}
}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/MemberVariableTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/MemberVariableTests.java
index ab09b0b55ff..cee47b77829 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/MemberVariableTests.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/MemberVariableTests.java
@@ -13,24 +13,24 @@ package org.eclipse.cdt.core.parser.tests.ast2.cxx14.constexpr;
import junit.framework.TestSuite;
-public class MemberVariableTests extends TestBase {
- public static class NonIndexing extends MemberVariableTests {
- public NonIndexing() {
+public abstract class MemberVariableTests extends TestBase {
+ public static class NonIndexingTests extends MemberVariableTests {
+ public NonIndexingTests() {
setStrategy(new NonIndexingTestStrategy());
}
public static TestSuite suite() {
- return suite(NonIndexing.class);
+ return suite(NonIndexingTests.class);
}
}
- public static class SingleProject extends MemberVariableTests {
- public SingleProject() {
+ public static class SingleProjectTests extends MemberVariableTests {
+ public SingleProjectTests() {
setStrategy(new SinglePDOMTestStrategy(true, false));
}
public static TestSuite suite() {
- return suite(SingleProject.class);
+ return suite(SingleProjectTests.class);
}
}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/PointerTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/PointerTests.java
index 789684cc470..4ca449e1299 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/PointerTests.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/PointerTests.java
@@ -15,24 +15,24 @@ import org.eclipse.cdt.internal.core.dom.parser.IntegralValue;
import junit.framework.TestSuite;
-public class PointerTests extends TestBase {
- public static class NonIndexing extends PointerTests {
- public NonIndexing() {
+public abstract class PointerTests extends TestBase {
+ public static class NonIndexingTests extends PointerTests {
+ public NonIndexingTests() {
setStrategy(new NonIndexingTestStrategy());
}
public static TestSuite suite() {
- return suite(NonIndexing.class);
+ return suite(NonIndexingTests.class);
}
}
- public static class SingleProject extends PointerTests {
- public SingleProject() {
+ public static class SingleProjectTests extends PointerTests {
+ public SingleProjectTests() {
setStrategy(new SinglePDOMTestStrategy(true, false));
}
public static TestSuite suite() {
- return suite(SingleProject.class);
+ return suite(SingleProjectTests.class);
}
}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/RangeBasedForStatementTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/RangeBasedForStatementTests.java
index 35d5b3af90f..aebe27f1777 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/RangeBasedForStatementTests.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/RangeBasedForStatementTests.java
@@ -15,24 +15,24 @@ import org.eclipse.cdt.internal.core.dom.parser.IntegralValue;
import junit.framework.TestSuite;
-public class RangeBasedForStatementTests extends TestBase {
- public static class NonIndexing extends RangeBasedForStatementTests {
- public NonIndexing() {
+public abstract class RangeBasedForStatementTests extends TestBase {
+ public static class NonIndexingTests extends RangeBasedForStatementTests {
+ public NonIndexingTests() {
setStrategy(new NonIndexingTestStrategy());
}
public static TestSuite suite() {
- return suite(NonIndexing.class);
+ return suite(NonIndexingTests.class);
}
}
- public static class SingleProject extends RangeBasedForStatementTests {
- public SingleProject() {
+ public static class SingleProjectTests extends RangeBasedForStatementTests {
+ public SingleProjectTests() {
setStrategy(new SinglePDOMTestStrategy(true, false));
}
public static TestSuite suite() {
- return suite(SingleProject.class);
+ return suite(SingleProjectTests.class);
}
}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/ReferenceTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/ReferenceTests.java
index 7a790030299..35a2ad0be0e 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/ReferenceTests.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/ReferenceTests.java
@@ -13,24 +13,24 @@ package org.eclipse.cdt.core.parser.tests.ast2.cxx14.constexpr;
import junit.framework.TestSuite;
-public class ReferenceTests extends TestBase {
- public static class NonIndexing extends ReferenceTests {
- public NonIndexing() {
+public abstract class ReferenceTests extends TestBase {
+ public static class NonIndexingTests extends ReferenceTests {
+ public NonIndexingTests() {
setStrategy(new NonIndexingTestStrategy());
}
public static TestSuite suite() {
- return suite(NonIndexing.class);
+ return suite(NonIndexingTests.class);
}
}
- public static class SingleProject extends ReferenceTests {
- public SingleProject() {
+ public static class SingleProjectTests extends ReferenceTests {
+ public SingleProjectTests() {
setStrategy(new SinglePDOMTestStrategy(true, false));
}
public static TestSuite suite() {
- return suite(SingleProject.class);
+ return suite(SingleProjectTests.class);
}
}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/StructuredBindingTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/StructuredBindingTests.java
index dd6b20c6cb9..93a3eb4029b 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/StructuredBindingTests.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/StructuredBindingTests.java
@@ -13,24 +13,24 @@ package org.eclipse.cdt.core.parser.tests.ast2.cxx14.constexpr;
import junit.framework.TestSuite;
-public class StructuredBindingTests extends TestBase {
- public static class NonIndexing extends StructuredBindingTests {
- public NonIndexing() {
+public abstract class StructuredBindingTests extends TestBase {
+ public static class NonIndexingTests extends StructuredBindingTests {
+ public NonIndexingTests() {
setStrategy(new NonIndexingTestStrategy());
}
public static TestSuite suite() {
- return suite(NonIndexing.class);
+ return suite(NonIndexingTests.class);
}
}
- public static class SingleProject extends StructuredBindingTests {
- public SingleProject() {
+ public static class SingleProjectTests extends StructuredBindingTests {
+ public SingleProjectTests() {
setStrategy(new SinglePDOMTestStrategy(true, false));
}
public static TestSuite suite() {
- return suite(SingleProject.class);
+ return suite(SingleProjectTests.class);
}
}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/SwitchStatementTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/SwitchStatementTests.java
index 678263064f1..5712181043d 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/SwitchStatementTests.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/SwitchStatementTests.java
@@ -13,24 +13,24 @@ package org.eclipse.cdt.core.parser.tests.ast2.cxx14.constexpr;
import junit.framework.TestSuite;
-public class SwitchStatementTests extends TestBase {
- public static class NonIndexing extends SwitchStatementTests {
- public NonIndexing() {
+public abstract class SwitchStatementTests extends TestBase {
+ public static class NonIndexingTests extends SwitchStatementTests {
+ public NonIndexingTests() {
setStrategy(new NonIndexingTestStrategy());
}
public static TestSuite suite() {
- return suite(NonIndexing.class);
+ return suite(NonIndexingTests.class);
}
}
- public static class SingleProject extends SwitchStatementTests {
- public SingleProject() {
+ public static class SingleProjectTests extends SwitchStatementTests {
+ public SingleProjectTests() {
setStrategy(new SinglePDOMTestStrategy(true, false));
}
public static TestSuite suite() {
- return suite(SingleProject.class);
+ return suite(SingleProjectTests.class);
}
}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/TestBase.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/TestBase.java
index 1c473cfbfda..81ef2344c50 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/TestBase.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/TestBase.java
@@ -21,7 +21,7 @@ import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.dom.ast.IValue;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTInitializerClause;
import org.eclipse.cdt.core.dom.parser.IScannerExtensionConfiguration;
-import org.eclipse.cdt.core.dom.parser.cpp.ANSICPPParserExtensionConfiguration;
+import org.eclipse.cdt.core.dom.parser.cpp.GPPParserExtensionConfiguration;
import org.eclipse.cdt.core.dom.parser.cpp.GPPScannerExtensionConfiguration;
import org.eclipse.cdt.core.dom.parser.cpp.ICPPParserExtensionConfiguration;
import org.eclipse.cdt.core.index.IIndex;
@@ -50,16 +50,23 @@ import org.eclipse.cdt.internal.core.parser.ParserException;
import org.eclipse.cdt.internal.core.parser.scanner.CPreprocessor;
import org.eclipse.cdt.internal.index.tests.IndexBindingResolutionTestBase;
-public class TestBase extends IndexBindingResolutionTestBase {
+public abstract class TestBase extends IndexBindingResolutionTestBase {
private static final String TEST_CODE = "<testcode>";
private static final IParserLogService NULL_LOG = new NullLogService();
private static final ScannerInfo SCANNER_INFO = new ScannerInfo(getStdMap());
+ public TestBase() {
+ // Pick a default startegy, just so that we can run test cases individually
+ // for debugging purposes.
+ setStrategy(new NonIndexingTestStrategy());
+ }
+
private static Map<String, String> getStdMap() {
Map<String, String> map = new HashMap<>();
map.put("__SIZEOF_SHORT__", "2");
map.put("__SIZEOF_INT__", "4");
map.put("__SIZEOF_LONG__", "8");
+ map.put("__SIZEOF_LONG_LONG__", "8");
map.put("__SIZEOF_POINTER__", "8");
return map;
}
@@ -188,7 +195,7 @@ public class TestBase extends IndexBindingResolutionTestBase {
IScanner scanner = createScanner(FileContent.create(TEST_CODE, code.toCharArray()), ParserLanguage.CPP,
ParserMode.COMPLETE_PARSE, SCANNER_INFO);
AbstractGNUSourceCodeParser parser = null;
- ICPPParserExtensionConfiguration config = new ANSICPPParserExtensionConfiguration();
+ ICPPParserExtensionConfiguration config = new GPPParserExtensionConfiguration();
parser = new GNUCPPSourceParser(scanner, ParserMode.COMPLETE_PARSE, NULL_LOG, config, null);
parser.setMaximumTrivialExpressionsInAggregateInitializers(Integer.MAX_VALUE);
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/TypeAliasTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/TypeAliasTests.java
index f8bfe848d71..fba57b250bd 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/TypeAliasTests.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/TypeAliasTests.java
@@ -13,24 +13,24 @@ package org.eclipse.cdt.core.parser.tests.ast2.cxx14.constexpr;
import junit.framework.TestSuite;
-public class TypeAliasTests extends TestBase {
- public static class NonIndexing extends TypeAliasTests {
- public NonIndexing() {
+public abstract class TypeAliasTests extends TestBase {
+ public static class NonIndexingTests extends TypeAliasTests {
+ public NonIndexingTests() {
setStrategy(new NonIndexingTestStrategy());
}
public static TestSuite suite() {
- return suite(NonIndexing.class);
+ return suite(NonIndexingTests.class);
}
}
- public static class SingleProject extends TypeAliasTests {
- public SingleProject() {
+ public static class SingleProjectTests extends TypeAliasTests {
+ public SingleProjectTests() {
setStrategy(new SinglePDOMTestStrategy(true, false));
}
public static TestSuite suite() {
- return suite(SingleProject.class);
+ return suite(SingleProjectTests.class);
}
}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/UnaryExpressionTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/UnaryExpressionTests.java
index d75d427392b..cf9d4108e99 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/UnaryExpressionTests.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/UnaryExpressionTests.java
@@ -13,24 +13,24 @@ package org.eclipse.cdt.core.parser.tests.ast2.cxx14.constexpr;
import junit.framework.TestSuite;
-public class UnaryExpressionTests extends TestBase {
- public static class NonIndexing extends UnaryExpressionTests {
- public NonIndexing() {
+public abstract class UnaryExpressionTests extends TestBase {
+ public static class NonIndexingTests extends UnaryExpressionTests {
+ public NonIndexingTests() {
setStrategy(new NonIndexingTestStrategy());
}
public static TestSuite suite() {
- return suite(NonIndexing.class);
+ return suite(NonIndexingTests.class);
}
}
- public static class SingleProject extends UnaryExpressionTests {
- public SingleProject() {
+ public static class SingleProjectTests extends UnaryExpressionTests {
+ public SingleProjectTests() {
setStrategy(new SinglePDOMTestStrategy(true, false));
}
public static TestSuite suite() {
- return suite(SingleProject.class);
+ return suite(SingleProjectTests.class);
}
}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/UnaryOperatorOverloadingTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/UnaryOperatorOverloadingTests.java
index 854f2abafca..ff78ad19ba1 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/UnaryOperatorOverloadingTests.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/UnaryOperatorOverloadingTests.java
@@ -13,24 +13,24 @@ package org.eclipse.cdt.core.parser.tests.ast2.cxx14.constexpr;
import junit.framework.TestSuite;
-public class UnaryOperatorOverloadingTests extends TestBase {
- public static class NonIndexing extends UnaryOperatorOverloadingTests {
- public NonIndexing() {
+public abstract class UnaryOperatorOverloadingTests extends TestBase {
+ public static class NonIndexingTests extends UnaryOperatorOverloadingTests {
+ public NonIndexingTests() {
setStrategy(new NonIndexingTestStrategy());
}
public static TestSuite suite() {
- return suite(NonIndexing.class);
+ return suite(NonIndexingTests.class);
}
}
- public static class SingleProject extends UnaryOperatorOverloadingTests {
- public SingleProject() {
+ public static class SingleProjectTests extends UnaryOperatorOverloadingTests {
+ public SingleProjectTests() {
setStrategy(new SinglePDOMTestStrategy(true, false));
}
public static TestSuite suite() {
- return suite(SingleProject.class);
+ return suite(SingleProjectTests.class);
}
}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/UserDefinedLiteralTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/UserDefinedLiteralTests.java
index cf32d1a7a2f..34ec4b7d5e2 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/UserDefinedLiteralTests.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/UserDefinedLiteralTests.java
@@ -15,24 +15,24 @@ import org.eclipse.cdt.internal.core.dom.parser.IntegralValue;
import junit.framework.TestSuite;
-public class UserDefinedLiteralTests extends TestBase {
- public static class NonIndexing extends UserDefinedLiteralTests {
- public NonIndexing() {
+public abstract class UserDefinedLiteralTests extends TestBase {
+ public static class NonIndexingTests extends UserDefinedLiteralTests {
+ public NonIndexingTests() {
setStrategy(new NonIndexingTestStrategy());
}
public static TestSuite suite() {
- return suite(NonIndexing.class);
+ return suite(NonIndexingTests.class);
}
}
- public static class SingleProject extends UserDefinedLiteralTests {
- public SingleProject() {
+ public static class SingleProjectTests extends UserDefinedLiteralTests {
+ public SingleProjectTests() {
setStrategy(new SinglePDOMTestStrategy(true, false));
}
public static TestSuite suite() {
- return suite(SingleProject.class);
+ return suite(SingleProjectTests.class);
}
}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/WhileStatementTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/WhileStatementTests.java
index ba5c5fe33e8..050cce97de0 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/WhileStatementTests.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx14/constexpr/WhileStatementTests.java
@@ -15,24 +15,24 @@ import org.eclipse.cdt.internal.core.dom.parser.IntegralValue;
import junit.framework.TestSuite;
-public class WhileStatementTests extends TestBase {
- public static class NonIndexing extends WhileStatementTests {
- public NonIndexing() {
+public abstract class WhileStatementTests extends TestBase {
+ public static class NonIndexingTests extends WhileStatementTests {
+ public NonIndexingTests() {
setStrategy(new NonIndexingTestStrategy());
}
public static TestSuite suite() {
- return suite(NonIndexing.class);
+ return suite(NonIndexingTests.class);
}
}
- public static class SingleProject extends WhileStatementTests {
- public SingleProject() {
+ public static class SingleProjectTests extends WhileStatementTests {
+ public SingleProjectTests() {
setStrategy(new SinglePDOMTestStrategy(true, false));
}
public static TestSuite suite() {
- return suite(SingleProject.class);
+ return suite(SingleProjectTests.class);
}
}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx17/LambdaExpressionTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx17/LambdaExpressionTests.java
index 398a6ef19c9..f1552bbc02b 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx17/LambdaExpressionTests.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx17/LambdaExpressionTests.java
@@ -50,4 +50,12 @@ public class LambdaExpressionTests extends AST2CPPTestBase {
public void testLambdaCaptures_535196_3() throws Exception {
parseAndCheckBindings();
}
+
+ //int main() {
+ // auto f = []() constexpr {return 2;};
+ // return 0;
+ //}
+ public void testLambdaConstexpr_560483() throws Exception {
+ parseAndCheckBindings();
+ }
}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx17/TemplateAutoTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx17/TemplateAutoTests.java
index 17d86ac772e..c44bce54333 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx17/TemplateAutoTests.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/cxx17/TemplateAutoTests.java
@@ -75,4 +75,37 @@ public class TemplateAutoTests extends AST2CPPTestBase {
public void testTemplateNontypeParameterTypeDeductionParsing_519361_3() throws Exception {
parseAndCheckBindings();
}
+
+ // template <typename T, T>
+ // struct meta { using type = int; };
+ //
+ // template <typename T>
+ // struct remove_noexcept { using type = T; };
+ //
+ // template <typename T>
+ // using remove_noexcept_t = typename remove_noexcept<T>::type;
+ //
+ // template <auto Key>
+ // struct K : meta<remove_noexcept_t<decltype(Key)>,Key>{};
+ //
+ // template <auto Key>
+ // struct W {
+ // using type = typename K<Key>::type;
+ // };
+ //
+ // template <typename T>
+ // struct M {};
+ //
+ // struct A {
+ // int foo;
+ // };
+ // typedef M<W<&A::foo>::type> M1; // typedef #1
+ //
+ // struct B {
+ // int foo;
+ // };
+ // typedef M<W<&B::foo>::type> M2; // typedef #2
+ public void testInstantiationCacheConflict_553141() throws Exception {
+ parseAndCheckBindings();
+ }
}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/prefix/CompletionTestSuite.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/prefix/CompletionTestSuite.java
index 370a6efeb7b..c21d9d4798a 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/prefix/CompletionTestSuite.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/prefix/CompletionTestSuite.java
@@ -17,6 +17,10 @@ import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
+/**
+ * @deprecated In preparation for moving to JUnit5 test suites are deprecated. See Bug 569839
+ */
+@Deprecated
public class CompletionTestSuite extends TestCase {
public static Test suite() {
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/RewriteTestSuite.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/RewriteTestSuite.java
new file mode 100644
index 00000000000..27dca43e533
--- /dev/null
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/RewriteTestSuite.java
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2011 Institute for Software, HSR Hochschule fuer Technik
+ * Rapperswil, University of applied sciences and others
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Institute for Software - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.parser.tests.rewrite;
+
+import org.eclipse.cdt.core.parser.tests.rewrite.astwriter.AstWriterTestSuite;
+import org.eclipse.cdt.core.parser.tests.rewrite.changegenerator.ChangeGeneratorTestSuite;
+import org.eclipse.cdt.core.parser.tests.rewrite.comenthandler.CommentHandlingTestSuite;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * @deprecated In preparation for moving to JUnit5 test suites are deprecated. See Bug 569839
+ */
+@Deprecated
+public class RewriteTestSuite extends TestSuite {
+
+ public static Test suite() throws Exception {
+ TestSuite suite = new TestSuite(RewriteTestSuite.class.getName());
+ suite.addTest(AstWriterTestSuite.suite());
+ suite.addTest(CommentHandlingTestSuite.suite());
+ suite.addTest(ChangeGeneratorTestSuite.suite());
+ return suite;
+ }
+}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/RewriteTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/RewriteTests.java
deleted file mode 100644
index 61fbef38589..00000000000
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/RewriteTests.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2011 Institute for Software, HSR Hochschule fuer Technik
- * Rapperswil, University of applied sciences and others
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Institute for Software - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.parser.tests.rewrite;
-
-import org.eclipse.cdt.core.parser.tests.rewrite.astwriter.AstWriterTestSuite;
-import org.eclipse.cdt.core.parser.tests.rewrite.changegenerator.ChangeGeneratorTestSuite;
-import org.eclipse.cdt.core.parser.tests.rewrite.comenthandler.CommentHandlingTestSuite;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-public class RewriteTests extends TestSuite {
-
- public static Test suite() throws Exception {
- TestSuite suite = new TestSuite(RewriteTests.class.getName());
- suite.addTest(AstWriterTestSuite.suite());
- suite.addTest(CommentHandlingTestSuite.suite());
- suite.addTest(ChangeGeneratorTestSuite.suite());
- return suite;
- }
-}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/astwriter/ASTWriterTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/astwriter/ASTWriterTest.java
deleted file mode 100644
index 2cf218d0ba9..00000000000
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/astwriter/ASTWriterTest.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2013 Institute for Software, HSR Hochschule fuer Technik
- * Rapperswil, University of applied sciences and others
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Institute for Software - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.parser.tests.rewrite.astwriter;
-
-import java.util.Map;
-
-import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
-import org.eclipse.cdt.core.dom.parser.ISourceCodeParser;
-import org.eclipse.cdt.core.dom.parser.c.ANSICParserExtensionConfiguration;
-import org.eclipse.cdt.core.dom.parser.c.GCCParserExtensionConfiguration;
-import org.eclipse.cdt.core.dom.parser.c.ICParserExtensionConfiguration;
-import org.eclipse.cdt.core.dom.parser.cpp.ANSICPPParserExtensionConfiguration;
-import org.eclipse.cdt.core.dom.parser.cpp.GPPParserExtensionConfiguration;
-import org.eclipse.cdt.core.dom.parser.cpp.ICPPParserExtensionConfiguration;
-import org.eclipse.cdt.core.parser.FileContent;
-import org.eclipse.cdt.core.parser.IParserLogService;
-import org.eclipse.cdt.core.parser.IScanner;
-import org.eclipse.cdt.core.parser.NullLogService;
-import org.eclipse.cdt.core.parser.ParserLanguage;
-import org.eclipse.cdt.core.parser.ParserMode;
-import org.eclipse.cdt.core.parser.ScannerInfo;
-import org.eclipse.cdt.core.parser.tests.ast2.AST2TestBase;
-import org.eclipse.cdt.core.parser.tests.rewrite.RewriteBaseTest;
-import org.eclipse.cdt.core.parser.tests.rewrite.TestHelper;
-import org.eclipse.cdt.core.parser.tests.rewrite.TestSourceFile;
-import org.eclipse.cdt.internal.core.dom.parser.c.GNUCSourceParser;
-import org.eclipse.cdt.internal.core.dom.parser.cpp.GNUCPPSourceParser;
-import org.eclipse.cdt.internal.core.dom.rewrite.ASTModificationMap;
-import org.eclipse.cdt.internal.core.dom.rewrite.astwriter.ASTWriter;
-import org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.ASTCommenter;
-import org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.NodeCommentMap;
-import org.eclipse.core.resources.IFile;
-
-/**
- * @author Guido Zgraggen
- */
-public class ASTWriterTest extends RewriteBaseTest {
- private static final IParserLogService NULL_LOG = new NullLogService();
-
- private IFile file;
-
- public ASTWriterTest(String name, ASTWriterTestSourceFile file) {
- super(name);
- fileMap.put(file.getName(), file);
- }
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- for (TestSourceFile testFile : fileMap.values()) {
- if (testFile.getSource().length() > 0) {
- file = importFile(testFile.getName(), testFile.getSource());
- }
- }
- }
-
- @Override
- protected void runTest() throws Throwable {
- file = project.getFile("ASTWritterTest.h"); //$NON-NLS-1$
- compareFiles(fileMap);
- }
-
- @Override
- protected void compareFiles(Map<String, TestSourceFile> testResourceFiles) throws Exception {
- for (String fileName : testResourceFiles.keySet()) {
- TestSourceFile testFile = testResourceFiles.get(fileName);
- String code = generateSource(testFile);
- assertEquals(TestHelper.unifyNewLines(testFile.getExpectedSource()),
- TestHelper.unifyNewLines(code + System.getProperty("line.separator"))); //$NON-NLS-1$
- }
- }
-
- public String generateSource(TestSourceFile testFile) throws Exception {
- IASTTranslationUnit unit = getParser(testFile).parse();
- NodeCommentMap commentMap = ASTCommenter.getCommentedNodeMap(unit);
- ASTModificationMap map = new ASTModificationMap();
- map.getModificationsForNode(unit.getDeclarations()[0]);
- ASTWriter writer = new ASTWriter();
- return writer.write(unit, commentMap);
- }
-
- protected ISourceCodeParser getParser(TestSourceFile testFile) throws Exception {
- FileContent codeReader = FileContent.create(file);
-
- ScannerInfo scannerInfo = new ScannerInfo();
- ParserLanguage language = getLanguage(testFile);
- boolean useGNUExtensions = getGNUExtension(testFile);
-
- IScanner scanner = AST2TestBase.createScanner(codeReader, language, ParserMode.COMPLETE_PARSE, scannerInfo);
-
- ISourceCodeParser parser = null;
- if (language == ParserLanguage.CPP) {
- ICPPParserExtensionConfiguration config = null;
- if (useGNUExtensions) {
- config = new GPPParserExtensionConfiguration();
- } else {
- config = new ANSICPPParserExtensionConfiguration();
- }
- parser = new GNUCPPSourceParser(scanner, ParserMode.COMPLETE_PARSE, NULL_LOG, config);
- } else {
- ICParserExtensionConfiguration config = null;
-
- if (useGNUExtensions) {
- config = new GCCParserExtensionConfiguration();
- } else {
- config = new ANSICParserExtensionConfiguration();
- }
-
- parser = new GNUCSourceParser(scanner, ParserMode.COMPLETE_PARSE, NULL_LOG, config);
- }
- return parser;
- }
-
- private boolean getGNUExtension(TestSourceFile file) {
- if (file instanceof ASTWriterTestSourceFile)
- return ((ASTWriterTestSourceFile) file).isUseGNUExtensions();
- return false;
- }
-
- private ParserLanguage getLanguage(TestSourceFile file) {
- if (file instanceof ASTWriterTestSourceFile)
- return ((ASTWriterTestSourceFile) file).getParserLanguage();
- return ParserLanguage.CPP;
- }
-}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/astwriter/ASTWriterTester.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/astwriter/ASTWriterTester.java
new file mode 100644
index 00000000000..5818791bef3
--- /dev/null
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/astwriter/ASTWriterTester.java
@@ -0,0 +1,137 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2013 Institute for Software, HSR Hochschule fuer Technik
+ * Rapperswil, University of applied sciences and others
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Institute for Software - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.parser.tests.rewrite.astwriter;
+
+import java.util.Map;
+
+import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
+import org.eclipse.cdt.core.dom.parser.ISourceCodeParser;
+import org.eclipse.cdt.core.dom.parser.c.ANSICParserExtensionConfiguration;
+import org.eclipse.cdt.core.dom.parser.c.GCCParserExtensionConfiguration;
+import org.eclipse.cdt.core.dom.parser.c.ICParserExtensionConfiguration;
+import org.eclipse.cdt.core.dom.parser.cpp.ANSICPPParserExtensionConfiguration;
+import org.eclipse.cdt.core.dom.parser.cpp.GPPParserExtensionConfiguration;
+import org.eclipse.cdt.core.dom.parser.cpp.ICPPParserExtensionConfiguration;
+import org.eclipse.cdt.core.parser.FileContent;
+import org.eclipse.cdt.core.parser.IParserLogService;
+import org.eclipse.cdt.core.parser.IScanner;
+import org.eclipse.cdt.core.parser.NullLogService;
+import org.eclipse.cdt.core.parser.ParserLanguage;
+import org.eclipse.cdt.core.parser.ParserMode;
+import org.eclipse.cdt.core.parser.ScannerInfo;
+import org.eclipse.cdt.core.parser.tests.ast2.AST2TestBase;
+import org.eclipse.cdt.core.parser.tests.rewrite.RewriteBaseTest;
+import org.eclipse.cdt.core.parser.tests.rewrite.TestHelper;
+import org.eclipse.cdt.core.parser.tests.rewrite.TestSourceFile;
+import org.eclipse.cdt.internal.core.dom.parser.c.GNUCSourceParser;
+import org.eclipse.cdt.internal.core.dom.parser.cpp.GNUCPPSourceParser;
+import org.eclipse.cdt.internal.core.dom.rewrite.ASTModificationMap;
+import org.eclipse.cdt.internal.core.dom.rewrite.astwriter.ASTWriter;
+import org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.ASTCommenter;
+import org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.NodeCommentMap;
+import org.eclipse.core.resources.IFile;
+
+/**
+ * @author Guido Zgraggen
+ */
+public class ASTWriterTester extends RewriteBaseTest {
+ private static final IParserLogService NULL_LOG = new NullLogService();
+
+ private IFile file;
+
+ public ASTWriterTester(String name, ASTWriterTestSourceFile file) {
+ super(name);
+ fileMap.put(file.getName(), file);
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ for (TestSourceFile testFile : fileMap.values()) {
+ if (testFile.getSource().length() > 0) {
+ file = importFile(testFile.getName(), testFile.getSource());
+ }
+ }
+ }
+
+ @Override
+ protected void runTest() throws Throwable {
+ file = project.getFile("ASTWritterTest.h"); //$NON-NLS-1$
+ compareFiles(fileMap);
+ }
+
+ @Override
+ protected void compareFiles(Map<String, TestSourceFile> testResourceFiles) throws Exception {
+ for (String fileName : testResourceFiles.keySet()) {
+ TestSourceFile testFile = testResourceFiles.get(fileName);
+ String code = generateSource(testFile);
+ assertEquals(TestHelper.unifyNewLines(testFile.getExpectedSource()),
+ TestHelper.unifyNewLines(code + System.getProperty("line.separator"))); //$NON-NLS-1$
+ }
+ }
+
+ public String generateSource(TestSourceFile testFile) throws Exception {
+ IASTTranslationUnit unit = getParser(testFile).parse();
+ NodeCommentMap commentMap = ASTCommenter.getCommentedNodeMap(unit);
+ ASTModificationMap map = new ASTModificationMap();
+ map.getModificationsForNode(unit.getDeclarations()[0]);
+ ASTWriter writer = new ASTWriter();
+ return writer.write(unit, commentMap);
+ }
+
+ protected ISourceCodeParser getParser(TestSourceFile testFile) throws Exception {
+ FileContent codeReader = FileContent.create(file);
+
+ ScannerInfo scannerInfo = new ScannerInfo();
+ ParserLanguage language = getLanguage(testFile);
+ boolean useGNUExtensions = getGNUExtension(testFile);
+
+ IScanner scanner = AST2TestBase.createScanner(codeReader, language, ParserMode.COMPLETE_PARSE, scannerInfo);
+
+ ISourceCodeParser parser = null;
+ if (language == ParserLanguage.CPP) {
+ ICPPParserExtensionConfiguration config = null;
+ if (useGNUExtensions) {
+ config = new GPPParserExtensionConfiguration();
+ } else {
+ config = new ANSICPPParserExtensionConfiguration();
+ }
+ parser = new GNUCPPSourceParser(scanner, ParserMode.COMPLETE_PARSE, NULL_LOG, config);
+ } else {
+ ICParserExtensionConfiguration config = null;
+
+ if (useGNUExtensions) {
+ config = new GCCParserExtensionConfiguration();
+ } else {
+ config = new ANSICParserExtensionConfiguration();
+ }
+
+ parser = new GNUCSourceParser(scanner, ParserMode.COMPLETE_PARSE, NULL_LOG, config);
+ }
+ return parser;
+ }
+
+ private boolean getGNUExtension(TestSourceFile file) {
+ if (file instanceof ASTWriterTestSourceFile)
+ return ((ASTWriterTestSourceFile) file).isUseGNUExtensions();
+ return false;
+ }
+
+ private ParserLanguage getLanguage(TestSourceFile file) {
+ if (file instanceof ASTWriterTestSourceFile)
+ return ((ASTWriterTestSourceFile) file).getParserLanguage();
+ return ParserLanguage.CPP;
+ }
+}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/astwriter/AstWriterTestSuite.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/astwriter/AstWriterTestSuite.java
index 46215cffe46..78a4bd634e7 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/astwriter/AstWriterTestSuite.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/astwriter/AstWriterTestSuite.java
@@ -20,49 +20,14 @@ import junit.framework.TestSuite;
/**
* @author Emanuel Graf
+ * @deprecated In preparation for moving to JUnit5 test suites are deprecated. See Bug 569839
*/
+@Deprecated
public class AstWriterTestSuite {
public static Test suite() throws Exception {
- TestSuite suite = new TestSuite("AstWriterTests");
- suite.addTest(
- SourceRewriteTester.suite("ExpressionTests", "resources/rewrite/ASTWriterExpressionTestSource.awts"));
-
- suite.addTest(
- SourceRewriteTester.suite("DelcSpecifierTests", "resources/rewrite/ASTWriterDeclSpecTestSource.awts"));
- suite.addTest(SourceRewriteTester.suite("Commented DelcSpecifierTests",
- "resources/rewrite/ASTWriterCommentedDeclSpecTestSource.awts"));
-
- suite.addTest(
- SourceRewriteTester.suite("DeclaratorTests", "resources/rewrite/ASTWriterDeclaratorTestSource.awts"));
- suite.addTest(SourceRewriteTester.suite("Commented DeclaratorTests",
- "resources/rewrite/ASTWriterCommentedDeclaratorTestSource.awts"));
-
- suite.addTest(
- SourceRewriteTester.suite("StatementsTests", "resources/rewrite/ASTWriterStatementTestSource.awts"));
- suite.addTest(SourceRewriteTester.suite("Commented StatementsTests",
- "resources/rewrite/ASTWriterCommentedStatementTestSource.awts"));
-
- suite.addTest(SourceRewriteTester.suite("NameTests", "resources/rewrite/ASTWriterNameTestSource.awts"));
- suite.addTest(SourceRewriteTester.suite("Commented NameTests",
- "resources/rewrite/ASTWriterCommentedNameTestSource.awts"));
-
- suite.addTest(
- SourceRewriteTester.suite("InitializerTests", "resources/rewrite/ASTWriterInitializerTestSource.awts"));
-
- suite.addTest(
- SourceRewriteTester.suite("DeclarationTests", "resources/rewrite/ASTWriterDeclarationTestSource.awts"));
- suite.addTest(SourceRewriteTester.suite("Commented DeclarationTests",
- "resources/rewrite/ASTWriterCommentedDeclarationTestSource.awts"));
-
- suite.addTest(
- SourceRewriteTester.suite("TemplatesTests", "resources/rewrite/ASTWriterTemplateTestSource.awts"));
-
- suite.addTest(SourceRewriteTester.suite("CommentTests", "resources/rewrite/ASTWriterCommentedTestSource.awts"));
- suite.addTest(
- SourceRewriteTester.suite("NewCommentTests", "resources/rewrite/ASTWriterCommentedTestSource2.awts"));
- suite.addTest(
- SourceRewriteTester.suite("AttributeTests", "resources/rewrite/ASTWriterAttributeTestSource.awts"));
+ TestSuite suite = new TestSuite("AstWriterTestSuite");
+ suite.addTest(SourceRewriteTest.suite());
suite.addTestSuite(ExpressionWriterTest.class);
return suite;
}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/astwriter/SourceRewriteTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/astwriter/SourceRewriteTest.java
new file mode 100644
index 00000000000..bcccc29f09a
--- /dev/null
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/astwriter/SourceRewriteTest.java
@@ -0,0 +1,210 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2011 Institute for Software, HSR Hochschule fuer Technik
+ * Rapperswil, University of applied sciences and others
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Institute for Software - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.parser.tests.rewrite.astwriter;
+
+import java.io.BufferedReader;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.eclipse.cdt.core.parser.ParserLanguage;
+import org.eclipse.cdt.core.parser.tests.rewrite.RewriteBaseTest;
+import org.eclipse.cdt.core.testplugin.CTestPlugin;
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.jface.text.TextSelection;
+import org.osgi.framework.Bundle;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+public class SourceRewriteTest extends TestSuite {
+ private static final String testRegexp = "//!(.*)\\s*(\\w*)*$"; //$NON-NLS-1$
+ private static final String codeTypeRegexp = "//%(C|CPP)( GNU)?$"; //$NON-NLS-1$
+ private static final String resultRegexp = "//=.*$"; //$NON-NLS-1$
+
+ enum MatcherState {
+ skip, inTest, inSource, inExpectedResult
+ }
+
+ protected static BufferedReader createReader(String file) throws IOException {
+ Bundle bundle = CTestPlugin.getDefault().getBundle();
+ Path path = new Path(file);
+ file = FileLocator.toFileURL(FileLocator.find(bundle, path, null)).getFile();
+ return new BufferedReader(new FileReader(file));
+ }
+
+ public static Test suite() throws Exception {
+ TestSuite suite = new TestSuite("AstWriterTests");
+ suite.addTest(
+ SourceRewriteTest.suite("ExpressionTests", "resources/rewrite/ASTWriterExpressionTestSource.awts"));
+
+ suite.addTest(
+ SourceRewriteTest.suite("DelcSpecifierTests", "resources/rewrite/ASTWriterDeclSpecTestSource.awts"));
+ suite.addTest(SourceRewriteTest.suite("Commented DelcSpecifierTests",
+ "resources/rewrite/ASTWriterCommentedDeclSpecTestSource.awts"));
+
+ suite.addTest(
+ SourceRewriteTest.suite("DeclaratorTests", "resources/rewrite/ASTWriterDeclaratorTestSource.awts"));
+ suite.addTest(SourceRewriteTest.suite("Commented DeclaratorTests",
+ "resources/rewrite/ASTWriterCommentedDeclaratorTestSource.awts"));
+
+ suite.addTest(
+ SourceRewriteTest.suite("StatementsTests", "resources/rewrite/ASTWriterStatementTestSource.awts"));
+ suite.addTest(SourceRewriteTest.suite("Commented StatementsTests",
+ "resources/rewrite/ASTWriterCommentedStatementTestSource.awts"));
+
+ suite.addTest(SourceRewriteTest.suite("NameTests", "resources/rewrite/ASTWriterNameTestSource.awts"));
+ suite.addTest(SourceRewriteTest.suite("Commented NameTests",
+ "resources/rewrite/ASTWriterCommentedNameTestSource.awts"));
+
+ suite.addTest(
+ SourceRewriteTest.suite("InitializerTests", "resources/rewrite/ASTWriterInitializerTestSource.awts"));
+
+ suite.addTest(
+ SourceRewriteTest.suite("DeclarationTests", "resources/rewrite/ASTWriterDeclarationTestSource.awts"));
+ suite.addTest(SourceRewriteTest.suite("Commented DeclarationTests",
+ "resources/rewrite/ASTWriterCommentedDeclarationTestSource.awts"));
+
+ suite.addTest(SourceRewriteTest.suite("TemplatesTests", "resources/rewrite/ASTWriterTemplateTestSource.awts"));
+
+ suite.addTest(SourceRewriteTest.suite("CommentTests", "resources/rewrite/ASTWriterCommentedTestSource.awts"));
+ suite.addTest(
+ SourceRewriteTest.suite("NewCommentTests", "resources/rewrite/ASTWriterCommentedTestSource2.awts"));
+ suite.addTest(SourceRewriteTest.suite("AttributeTests", "resources/rewrite/ASTWriterAttributeTestSource.awts"));
+ suite.addTestSuite(ExpressionWriterTest.class);
+ return suite;
+ }
+
+ public static Test suite(String name, String file) throws Exception {
+ BufferedReader in = createReader(file);
+ ArrayList<RewriteBaseTest> testCases = createTests(in);
+ in.close();
+ return createSuite(testCases, name);
+ }
+
+ private static TestSuite createSuite(ArrayList<RewriteBaseTest> testCases, String name) {
+ TestSuite suite = new TestSuite(name);
+ for (RewriteBaseTest subject : testCases) {
+ suite.addTest(subject);
+ }
+ return suite;
+ }
+
+ protected static boolean lineMatchesBeginOfTest(String line) {
+ return createMatcherFromString(testRegexp, line).find();
+ }
+
+ protected static boolean lineMatchesCodeType(String line) {
+ return createMatcherFromString(codeTypeRegexp, line).find();
+ }
+
+ protected static Matcher createMatcherFromString(String pattern, String line) {
+ return Pattern.compile(pattern).matcher(line);
+ }
+
+ protected static String getNameOfTest(String line) {
+ Matcher matcherBeginOfTest = createMatcherFromString(testRegexp, line);
+ if (matcherBeginOfTest.find()) {
+ return matcherBeginOfTest.group(1);
+ } else {
+ return "Not Named";
+ }
+ }
+
+ protected static boolean lineMatchesBeginOfResult(String line) {
+ return createMatcherFromString(resultRegexp, line).find();
+ }
+
+ private static ArrayList<RewriteBaseTest> createTests(BufferedReader inputReader) throws Exception {
+ ASTWriterTestSourceFile file = null;
+ MatcherState matcherState = MatcherState.skip;
+ ArrayList<RewriteBaseTest> testCases = new ArrayList<>();
+
+ String line;
+ while ((line = inputReader.readLine()) != null) {
+ if (lineMatchesBeginOfTest(line)) {
+ matcherState = MatcherState.inTest;
+ file = new ASTWriterTestSourceFile("ASTWritterTest.h"); //$NON-NLS-1$
+ testCases.add(createTestClass(getNameOfTest(line), file));
+ continue;
+ } else if (lineMatchesBeginOfResult(line)) {
+ matcherState = MatcherState.inExpectedResult;
+ continue;
+ } else if (lineMatchesCodeType(line)) {
+ matcherState = MatcherState.inSource;
+ if (file != null) {
+ file.setParserLanguage(getParserLanguage(line));
+ file.setUseGNUExtensions(useGNUExtensions(line));
+ }
+ continue;
+ }
+
+ switch (matcherState) {
+ case inSource:
+ if (file != null) {
+ file.addLineToSource(line);
+ }
+ break;
+ case inExpectedResult:
+ if (file != null) {
+ file.addLineToExpectedSource(line);
+ }
+ break;
+ default:
+ break;
+ }
+ }
+ return testCases;
+ }
+
+ protected static boolean useGNUExtensions(String line) {
+ Matcher matcherBeginOfTest = createMatcherFromString(codeTypeRegexp, line);
+ if (matcherBeginOfTest.find()) {
+ String codeType = matcherBeginOfTest.group(2);
+ if (codeType == null) {
+ return false;
+ } else {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ protected static ParserLanguage getParserLanguage(String line) {
+ Matcher matcherBeginOfTest = createMatcherFromString(codeTypeRegexp, line);
+ if (matcherBeginOfTest.find()) {
+ String codeType = matcherBeginOfTest.group(1);
+ if (codeType.equalsIgnoreCase("CPP")) { //$NON-NLS-1$
+ return ParserLanguage.CPP;
+ } else {
+ return ParserLanguage.C;
+ }
+ }
+ return ParserLanguage.C;
+ }
+
+ private static RewriteBaseTest createTestClass(String testName, ASTWriterTestSourceFile file) throws Exception {
+ ASTWriterTester test = new ASTWriterTester(testName, file);
+ TextSelection sel = file.getSelection();
+ if (sel != null) {
+ test.setFileWithSelection(file.getName());
+ test.setSelection(sel);
+ }
+ return test;
+ }
+}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/astwriter/SourceRewriteTester.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/astwriter/SourceRewriteTester.java
deleted file mode 100644
index 384f4f0add7..00000000000
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/astwriter/SourceRewriteTester.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2011 Institute for Software, HSR Hochschule fuer Technik
- * Rapperswil, University of applied sciences and others
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Institute for Software - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.parser.tests.rewrite.astwriter;
-
-import java.io.BufferedReader;
-import java.io.FileReader;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.eclipse.cdt.core.parser.ParserLanguage;
-import org.eclipse.cdt.core.parser.tests.rewrite.RewriteBaseTest;
-import org.eclipse.cdt.core.testplugin.CTestPlugin;
-import org.eclipse.core.runtime.FileLocator;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.jface.text.TextSelection;
-import org.osgi.framework.Bundle;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-public class SourceRewriteTester extends TestSuite {
- private static final String testRegexp = "//!(.*)\\s*(\\w*)*$"; //$NON-NLS-1$
- private static final String codeTypeRegexp = "//%(C|CPP)( GNU)?$"; //$NON-NLS-1$
- private static final String resultRegexp = "//=.*$"; //$NON-NLS-1$
-
- enum MatcherState {
- skip, inTest, inSource, inExpectedResult
- }
-
- protected static BufferedReader createReader(String file) throws IOException {
- Bundle bundle = CTestPlugin.getDefault().getBundle();
- Path path = new Path(file);
- file = FileLocator.toFileURL(FileLocator.find(bundle, path, null)).getFile();
- return new BufferedReader(new FileReader(file));
- }
-
- public static Test suite(String name, String file) throws Exception {
- BufferedReader in = createReader(file);
- ArrayList<RewriteBaseTest> testCases = createTests(in);
- in.close();
- return createSuite(testCases, name);
- }
-
- private static TestSuite createSuite(ArrayList<RewriteBaseTest> testCases, String name) {
- TestSuite suite = new TestSuite(name);
- for (RewriteBaseTest subject : testCases) {
- suite.addTest(subject);
- }
- return suite;
- }
-
- protected static boolean lineMatchesBeginOfTest(String line) {
- return createMatcherFromString(testRegexp, line).find();
- }
-
- protected static boolean lineMatchesCodeType(String line) {
- return createMatcherFromString(codeTypeRegexp, line).find();
- }
-
- protected static Matcher createMatcherFromString(String pattern, String line) {
- return Pattern.compile(pattern).matcher(line);
- }
-
- protected static String getNameOfTest(String line) {
- Matcher matcherBeginOfTest = createMatcherFromString(testRegexp, line);
- if (matcherBeginOfTest.find()) {
- return matcherBeginOfTest.group(1);
- } else {
- return "Not Named";
- }
- }
-
- protected static boolean lineMatchesBeginOfResult(String line) {
- return createMatcherFromString(resultRegexp, line).find();
- }
-
- private static ArrayList<RewriteBaseTest> createTests(BufferedReader inputReader) throws Exception {
- ASTWriterTestSourceFile file = null;
- MatcherState matcherState = MatcherState.skip;
- ArrayList<RewriteBaseTest> testCases = new ArrayList<>();
-
- String line;
- while ((line = inputReader.readLine()) != null) {
- if (lineMatchesBeginOfTest(line)) {
- matcherState = MatcherState.inTest;
- file = new ASTWriterTestSourceFile("ASTWritterTest.h"); //$NON-NLS-1$
- testCases.add(createTestClass(getNameOfTest(line), file));
- continue;
- } else if (lineMatchesBeginOfResult(line)) {
- matcherState = MatcherState.inExpectedResult;
- continue;
- } else if (lineMatchesCodeType(line)) {
- matcherState = MatcherState.inSource;
- if (file != null) {
- file.setParserLanguage(getParserLanguage(line));
- file.setUseGNUExtensions(useGNUExtensions(line));
- }
- continue;
- }
-
- switch (matcherState) {
- case inSource:
- if (file != null) {
- file.addLineToSource(line);
- }
- break;
- case inExpectedResult:
- if (file != null) {
- file.addLineToExpectedSource(line);
- }
- break;
- default:
- break;
- }
- }
- return testCases;
- }
-
- protected static boolean useGNUExtensions(String line) {
- Matcher matcherBeginOfTest = createMatcherFromString(codeTypeRegexp, line);
- if (matcherBeginOfTest.find()) {
- String codeType = matcherBeginOfTest.group(2);
- if (codeType == null) {
- return false;
- } else {
- return true;
- }
- }
- return false;
- }
-
- protected static ParserLanguage getParserLanguage(String line) {
- Matcher matcherBeginOfTest = createMatcherFromString(codeTypeRegexp, line);
- if (matcherBeginOfTest.find()) {
- String codeType = matcherBeginOfTest.group(1);
- if (codeType.equalsIgnoreCase("CPP")) { //$NON-NLS-1$
- return ParserLanguage.CPP;
- } else {
- return ParserLanguage.C;
- }
- }
- return ParserLanguage.C;
- }
-
- private static RewriteBaseTest createTestClass(String testName, ASTWriterTestSourceFile file) throws Exception {
- ASTWriterTest test = new ASTWriterTest(testName, file);
- TextSelection sel = file.getSelection();
- if (sel != null) {
- test.setFileWithSelection(file.getName());
- test.setSelection(sel);
- }
- return test;
- }
-}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/ChangeGeneratorTestSuite.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/ChangeGeneratorTestSuite.java
index 69cc22dd83c..d6cb1974425 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/ChangeGeneratorTestSuite.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/ChangeGeneratorTestSuite.java
@@ -19,7 +19,9 @@ import junit.framework.TestSuite;
/**
* @author Thomas Corbat
+ * @deprecated In preparation for moving to JUnit5 test suites are deprecated. See Bug 569839
*/
+@Deprecated
public class ChangeGeneratorTestSuite {
public static Test suite() throws Exception {
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/comenthandler/CommentHandlingTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/comenthandler/CommentHandlingTest.java
index 68f0ad65715..223e4023b20 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/comenthandler/CommentHandlingTest.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/comenthandler/CommentHandlingTest.java
@@ -29,12 +29,16 @@ import org.eclipse.cdt.core.dom.ast.IASTNode;
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.model.ITranslationUnit;
import org.eclipse.cdt.core.parser.tests.rewrite.RewriteBaseTest;
+import org.eclipse.cdt.core.parser.tests.rewrite.RewriteTester;
import org.eclipse.cdt.core.parser.tests.rewrite.TestSourceFile;
import org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.ASTCommenter;
import org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.NodeCommentMap;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.Path;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
/**
* This test tests the behavior of the class ASTCommenter. It checks if the ASTCommenter assigns
* the comments contained in an AST to the right ASTNodes.<br>
@@ -92,6 +96,12 @@ public class CommentHandlingTest extends RewriteBaseTest {
super(name, files);
}
+ public static Test suite() throws Exception {
+ TestSuite suite = new TestSuite(CommentHandlingTestSuite.class.getName());
+ suite.addTest(RewriteTester.suite("CommentTests", "resources/rewrite/CommentHandlingTestSource.rts")); //$NON-NLS-1$
+ return suite;
+ }
+
@Override
protected void runTest() throws Throwable {
if (fileMap.isEmpty()) {
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/comenthandler/CommentHandlingTestSuite.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/comenthandler/CommentHandlingTestSuite.java
index 75cd37ff73f..d851284002a 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/comenthandler/CommentHandlingTestSuite.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/comenthandler/CommentHandlingTestSuite.java
@@ -14,21 +14,20 @@
******************************************************************************/
package org.eclipse.cdt.core.parser.tests.rewrite.comenthandler;
-import org.eclipse.cdt.core.parser.tests.rewrite.RewriteTester;
-
import junit.framework.Test;
import junit.framework.TestSuite;
/**
* @author Guido Zgraggen IFS
+ * @deprecated In preparation for moving to JUnit5 test suites are deprecated. See Bug 569839
*/
+@Deprecated
public class CommentHandlingTestSuite extends TestSuite {
public static Test suite() throws Exception {
TestSuite suite = new TestSuite(CommentHandlingTestSuite.class.getName());
- suite.addTest(RewriteTester.suite("CommentTests", "resources/rewrite/CommentHandlingTestSource.rts")); //$NON-NLS-1$
- suite.addTest(
- RewriteTester.suite("CommentMultiFileTests", "resources/rewrite/CommentHandlingWithRewriteTest.rts")); //$NON-NLS-1$
+ suite.addTest(CommentHandlingTest.suite());
+ suite.addTest(CommentHandlingWithRewriteTest.suite());
suite.addTestSuite(NodeCommentMapTest.class);
return suite;
}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/comenthandler/CommentHandlingWithRewriteTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/comenthandler/CommentHandlingWithRewriteTest.java
index 0e20d7e8401..0b867d23ef2 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/comenthandler/CommentHandlingWithRewriteTest.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/comenthandler/CommentHandlingWithRewriteTest.java
@@ -20,10 +20,14 @@ import java.util.List;
import org.eclipse.cdt.core.dom.ast.IASTNode;
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.dom.rewrite.ASTRewrite;
+import org.eclipse.cdt.core.parser.tests.rewrite.RewriteTester;
import org.eclipse.cdt.core.parser.tests.rewrite.TestSourceFile;
import org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.NodeCommentMap;
import org.eclipse.text.edits.TextEditGroup;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
public class CommentHandlingWithRewriteTest extends CommentHandlingTest {
private ASTRewrite newRewrite;
@@ -31,6 +35,13 @@ public class CommentHandlingWithRewriteTest extends CommentHandlingTest {
super(name, files);
}
+ public static Test suite() throws Exception {
+ TestSuite suite = new TestSuite(CommentHandlingTestSuite.class.getName());
+ suite.addTest(
+ RewriteTester.suite("CommentMultiFileTests", "resources/rewrite/CommentHandlingWithRewriteTest.rts")); //$NON-NLS-1$
+ return suite;
+ }
+
@Override
protected void runTest() throws Throwable {
IASTTranslationUnit tu = getUnit("main.cpp");
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/scanner/InclusionTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/scanner/InclusionTests.java
index 1f81668a075..882a9b89077 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/scanner/InclusionTests.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/scanner/InclusionTests.java
@@ -16,10 +16,13 @@
package org.eclipse.cdt.core.parser.tests.scanner;
import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
import org.eclipse.cdt.core.model.ICProject;
import org.eclipse.cdt.core.parser.ExtendedScannerInfo;
import org.eclipse.cdt.core.parser.FileContent;
+import org.eclipse.cdt.core.parser.IProblem;
import org.eclipse.cdt.core.parser.IScannerInfo;
import org.eclipse.cdt.core.parser.IToken;
import org.eclipse.cdt.core.parser.ParserLanguage;
@@ -261,6 +264,136 @@ public class InclusionTests extends PreprocessorTestsBase {
validateEOF();
}
+ // #if __has_include("does_not_exist.h")
+ // inactive
+ // #endif
+ // #if !__has_include("does_not_exist.h")
+ // identifier
+ // #endif
+ //
+ // #if __has_include("test.h")
+ // identifier2
+ // #endif
+ // #if !__has_include("test.h")
+ // inactive
+ // #endif
+ //
+ // #if __has_include(<test.h>)
+ // identifier3
+ // #endif
+ //
+ // #define MACRO __has_include("test.h")
+ // #if MACRO
+ // identifier4
+ // #endif
+ //
+ // #define MACRO2 __has_include(<test.h>)
+ // #if MACRO2
+ // identifier5
+ // #endif
+ //
+ // #define HEADER_NAME "test.h"
+ // #define MACRO3 __has_include(HEADER_NAME)
+ // #if MACRO3
+ // identifier6
+ // #endif
+ //
+ // //Note: This one works with Clang and MSVC but not GCC.
+ // #define HEADER_NAME2 ("test.h")
+ // #define MACRO4 __has_include HEADER_NAME2
+ // #if MACRO4
+ // identifier7
+ // #endif
+ //
+ // #ifdef __has_include
+ // identifier8
+ // #endif
+ //
+ // #if defined(__has_include)
+ // identifier9
+ // #endif
+ public void testHasInclude() throws Exception {
+ importFile("test.h", "");
+ IFile base = importFile("test.cpp", getAboveComment());
+ IScannerInfo scannerInfo = new ExtendedScannerInfo(Collections.EMPTY_MAP,
+ new String[] { fProject.getProject().getLocation().toOSString() }, new String[] {}, null);
+ FileContent reader = FileContent.create(base);
+ initializeScanner(reader, ParserLanguage.CPP, ParserMode.COMPLETE_PARSE, scannerInfo);
+ validateIdentifier("identifier");
+ validateIdentifier("identifier2");
+ validateIdentifier("identifier3");
+ validateIdentifier("identifier4");
+ validateIdentifier("identifier5");
+ validateIdentifier("identifier6");
+ validateIdentifier("identifier7");
+ validateIdentifier("identifier8");
+ validateIdentifier("identifier9");
+ validateEOF();
+ }
+
+ // #include "foo.h"
+ //
+ // #ifdef __has_include_next
+ // identifier4
+ // #endif
+ //
+ // #if defined(__has_include_next)
+ // identifier5
+ // #endif
+
+ // identifier
+ // #include "intermed.h"
+
+ // identifier2
+ // #if __has_include_next(<foo.h>)
+ // #include_next <foo.h>
+ // #endif
+
+ // identifier3
+ public void testHasIncludeNext() throws Exception {
+ StringBuilder[] sections = getTestContent(4);
+ String baseFile = sections[0].toString(); //$NON-NLS-1$
+ String foo1 = sections[1].toString(); //$NON-NLS-1$
+ String intermed = sections[2].toString(); //$NON-NLS-1$
+ String foo2 = sections[3].toString(); //$NON-NLS-1$
+
+ IFolder one = importFolder("one"); //$NON-NLS-1$
+ IFolder two = importFolder("two"); //$NON-NLS-1$
+ IFile base = importFile("base.cpp", baseFile); //$NON-NLS-1$
+ importFile("one/foo.h", foo1); //$NON-NLS-1$
+ importFile("one/intermed.h", intermed); //$NON-NLS-1$
+ importFile("two/foo.h", foo2); //$NON-NLS-1$
+
+ String[] path = new String[2];
+ path[0] = one.getLocation().toOSString();
+ path[1] = two.getLocation().toOSString();
+
+ Map<String, String> definedSymbols = new HashMap<>();
+ definedSymbols.put("__GNUC__", "5");
+ definedSymbols.put("__GNUC_MINOR__", "0");
+
+ IScannerInfo scannerInfo = new ExtendedScannerInfo(definedSymbols, path, new String[] {}, null);
+ FileContent reader = FileContent.create(base);
+ initializeScanner(reader, ParserLanguage.CPP, ParserMode.COMPLETE_PARSE, scannerInfo);
+ validateIdentifier("identifier");
+ validateIdentifier("identifier2");
+ validateIdentifier("identifier3");
+ validateIdentifier("identifier4");
+ validateIdentifier("identifier5");
+ }
+
+ // void foo() {
+ // __has_include;
+ // }
+ public void testHasIncludeProblem() throws Exception {
+ IFile base = importFile("test.cpp", getAboveComment());
+ IScannerInfo scannerInfo = new ExtendedScannerInfo(Collections.EMPTY_MAP, null, new String[] {}, null);
+ FileContent reader = FileContent.create(base);
+ initializeScanner(reader, ParserLanguage.CPP, ParserMode.COMPLETE_PARSE, scannerInfo);
+ fullyTokenize();
+ validateProblem(0, IProblem.PREPROCESSOR_INVALID_USE_OUTSIDE_PREPROCESSOR_DIRECTIVE, "__has_include");
+ }
+
// #include <inc/test.h>
public void testRelativeIncludes_243170() throws Exception {
String content = getAboveComment();
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/scanner/ScannerTestSuite.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/scanner/ScannerTestSuite.java
index 66430a1d156..8c00d61e3e6 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/scanner/ScannerTestSuite.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/scanner/ScannerTestSuite.java
@@ -16,6 +16,10 @@ package org.eclipse.cdt.core.parser.tests.scanner;
import junit.framework.Test;
import junit.framework.TestSuite;
+/**
+ * @deprecated In preparation for moving to JUnit5 test suites are deprecated. See Bug 569839
+ */
+@Deprecated
public class ScannerTestSuite extends TestSuite {
public static Test suite() {
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/scannerinfo/ExtendedScannerInfoSerializerDeserializerTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/scannerinfo/ExtendedScannerInfoSerializerDeserializerTest.java
new file mode 100644
index 00000000000..9c000a612e3
--- /dev/null
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/scannerinfo/ExtendedScannerInfoSerializerDeserializerTest.java
@@ -0,0 +1,111 @@
+/*******************************************************************************
+ * Copyright (c) 2021 Kichwa Coders Canada Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.core.parser.tests.scannerinfo;
+
+import static org.junit.Assert.assertNull;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
+import java.util.Map;
+
+import org.eclipse.cdt.core.parser.ExtendedScannerInfo;
+import org.eclipse.cdt.core.parser.IExtendedScannerInfo;
+import org.eclipse.cdt.internal.core.scannerinfo.ExtendedScannerInfoSerializer;
+import org.eclipse.cdt.internal.core.scannerinfo.IExtendedScannerInfoDeserializer;
+import org.junit.jupiter.api.Test;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+
+public class ExtendedScannerInfoSerializerDeserializerTest {
+
+ private static class Container {
+ IExtendedScannerInfo info;
+ }
+
+ private Gson createGson() {
+ GsonBuilder gsonBuilder = new GsonBuilder();
+ gsonBuilder.registerTypeAdapter(IExtendedScannerInfo.class, new IExtendedScannerInfoDeserializer());
+ gsonBuilder.registerTypeAdapter(ExtendedScannerInfo.class, new ExtendedScannerInfoSerializer());
+ Gson gson = gsonBuilder.create();
+ return gson;
+ }
+
+ @Test
+ public void test() {
+ String input = "" //
+ + "{" //
+ + "\"info\": {\n" //
+ + " \"includeExportPatterns\": {\n" //
+ + " \"includeExportPattern\": {\n" //
+ + " \"pattern\": \"pattern1\"\n" //
+ + " },\n" //
+ + " \"includeBeginExportPattern\": {\n" //
+ + " \"pattern\": \"pattern2\"\n" //
+ + " },\n" //
+ + " \"includeEndExportPattern\": {\n" //
+ + " \"pattern\": \"pattern3\"\n" //
+ + " }\n" //
+ + " },\n" //
+ + " \"definedSymbols\": {\n" //
+ + " \"__STDC__\": \"1\",\n" //
+ + " \"__INT64_MAX__\": \"0x7fffffffffffffffL\"\n" //
+ + " },\n" //
+ + " \"includePaths\": [\n" //
+ + " \"/usr/local/include\",\n" //
+ + " \"/usr/include\"\n" //
+ + " ]\n" //
+ + "}" //
+ + "}";
+
+ Gson createGson = createGson();
+ Container fromJson = createGson.fromJson(input, Container.class);
+ ExtendedScannerInfo info = (ExtendedScannerInfo) fromJson.info;
+ assertEquals(Map.of("__STDC__", "1", "__INT64_MAX__", "0x7fffffffffffffffL"), info.getDefinedSymbols());
+ assertArrayEquals(new String[] { "/usr/local/include", "/usr/include" }, info.getIncludePaths());
+ assertEquals("pattern1", info.getIncludeExportPatterns().getIncludeExportPattern().pattern());
+ assertEquals("pattern2", info.getIncludeExportPatterns().getIncludeBeginExportsPattern().pattern());
+ assertEquals("pattern3", info.getIncludeExportPatterns().getIncludeEndExportsPattern().pattern());
+
+ // default values for the rest
+ assertArrayEquals(new String[0], info.getIncludeFiles());
+ assertArrayEquals(new String[0], info.getLocalIncludePath());
+ assertArrayEquals(new String[0], info.getMacroFiles());
+ assertNotNull(info.getParserSettings());
+
+ Container container = new Container();
+ container.info = info;
+ String json = createGson.toJson(container);
+ assertEquals(input.replaceAll("\\s", ""), json);
+ }
+
+ @Test
+ public void testDefaults() {
+ String input = "{\"info\":{}}";
+
+ Gson createGson = createGson();
+ Container fromJson = createGson.fromJson(input, Container.class);
+ ExtendedScannerInfo info = (ExtendedScannerInfo) fromJson.info;
+
+ // default values
+ assertEquals(Map.of(), info.getDefinedSymbols());
+ assertArrayEquals(new String[0], info.getIncludePaths());
+ assertNull(info.getIncludeExportPatterns());
+
+ assertArrayEquals(new String[0], info.getIncludeFiles());
+ assertArrayEquals(new String[0], info.getLocalIncludePath());
+ assertArrayEquals(new String[0], info.getMacroFiles());
+ assertNotNull(info.getParserSettings());
+ }
+
+}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCBindingResolutionBugs.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCBindingResolutionBugs.java
deleted file mode 100644
index d65e0fc4295..00000000000
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCBindingResolutionBugs.java
+++ /dev/null
@@ -1,506 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2013 Wind River Systems, Inc. and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Markus Schorn - initial API and implementation
- * Andrew Ferguson (Symbian)
- * Sergey Prigogin (Google)
- *******************************************************************************/
-package org.eclipse.cdt.internal.index.tests;
-
-import org.eclipse.cdt.core.dom.ast.DOMException;
-import org.eclipse.cdt.core.dom.ast.IBasicType;
-import org.eclipse.cdt.core.dom.ast.IBinding;
-import org.eclipse.cdt.core.dom.ast.ICompositeType;
-import org.eclipse.cdt.core.dom.ast.IEnumeration;
-import org.eclipse.cdt.core.dom.ast.IEnumerator;
-import org.eclipse.cdt.core.dom.ast.IField;
-import org.eclipse.cdt.core.dom.ast.IFunction;
-import org.eclipse.cdt.core.dom.ast.IParameter;
-import org.eclipse.cdt.core.dom.ast.IScope;
-import org.eclipse.cdt.core.dom.ast.IType;
-import org.eclipse.cdt.core.dom.ast.ITypedef;
-import org.eclipse.cdt.core.dom.ast.IVariable;
-import org.eclipse.cdt.core.dom.ast.c.ICCompositeTypeScope;
-import org.eclipse.cdt.core.index.IIndexBinding;
-
-import junit.framework.TestSuite;
-
-/**
- * For testing PDOM binding resolution
- */
-public class IndexCBindingResolutionBugs extends IndexBindingResolutionTestBase {
-
- public static class SingleProject extends IndexCBindingResolutionBugs {
- public SingleProject() {
- setStrategy(new SinglePDOMTestStrategy(false));
- }
-
- public static TestSuite suite() {
- return suite(SingleProject.class);
- }
- }
-
- public static class ProjectWithDepProj extends IndexCBindingResolutionBugs {
- public ProjectWithDepProj() {
- setStrategy(new ReferencedProject(false));
- }
-
- public static TestSuite suite() {
- return suite(ProjectWithDepProj.class);
- }
- }
-
- public static void addTests(TestSuite suite) {
- suite.addTest(SingleProject.suite());
- suite.addTest(ProjectWithDepProj.suite());
- }
-
- // #include <stdio.h>
- // void func1(void) {
- // int i = 0;
- // for (i=0; i<10;i++) {
- // printf("%i", i);
- // }
- // }
-
- // #include "header.h"
- //
- // int main(void) {
- // while (1) {
- // func1();
- // }
- // return 0;
- // }
- public void testBug175267() throws DOMException {
- IBinding b0 = getBindingFromASTName("func1()", 5);
- assertTrue(b0 instanceof IFunction);
- IFunction f0 = (IFunction) b0;
- IParameter[] params = f0.getParameters();
- assertEquals(0, params.length);
- IType returnType = f0.getType().getReturnType();
- assertTrue(returnType instanceof IBasicType);
- assertEquals(IBasicType.Kind.eVoid, ((IBasicType) returnType).getKind());
- }
-
- // void func1(void);
-
- // #include "header.h"
- //
- // int main(void) {
- // void* v= func1;
- // }
- public void testBug181735() throws DOMException {
- IBinding b0 = getBindingFromASTName("func1;", 5);
- assertTrue(b0 instanceof IFunction);
- }
-
- // typedef struct {
- // int utm;
- // } usertype;
- // void func(usertype t);
-
- // #include "header.h"
- // void test() {
- // usertype ut;
- // func(ut);
- // }
- public void testFuncWithTypedefForAnonymousStruct_190730() throws Exception {
- IBinding b0 = getBindingFromASTName("func(", 4);
- assertTrue(b0 instanceof IFunction);
- IFunction f = (IFunction) b0;
- IParameter[] pars = f.getParameters();
- assertEquals(1, pars.length);
- IType type = pars[0].getType();
- assertInstance(type, ITypedef.class);
- type = ((ITypedef) type).getType();
- assertInstance(type, ICompositeType.class);
- }
-
- // typedef enum {
- // eItem
- // } userEnum;
- // void func(userEnum t);
-
- // #include "header.h"
- // void test() {
- // userEnum ut;
- // func(ut);
- // }
- public void testFuncWithTypedefForAnonymousEnum_190730() throws Exception {
- IBinding b0 = getBindingFromASTName("func(", 4);
- assertTrue(b0 instanceof IFunction);
- IFunction f = (IFunction) b0;
- IParameter[] pars = f.getParameters();
- assertEquals(1, pars.length);
- IType type = pars[0].getType();
- assertInstance(type, ITypedef.class);
- type = ((ITypedef) type).getType();
- assertInstance(type, IEnumeration.class);
- assertTrue(type instanceof IEnumeration);
- }
-
- // int globalVar;
-
- // // don't include header
- // char globalVar;
- public void testAstIndexConflictVariable_Bug195127() throws Exception {
- fakeFailForMultiProject();
- IBinding b0 = getBindingFromASTName("globalVar;", 9);
- assertTrue(b0 instanceof IVariable);
- IVariable v = (IVariable) b0;
- IType type = v.getType();
- assertTrue(type instanceof IBasicType);
- assertTrue(((IBasicType) type).getKind() == IBasicType.Kind.eChar);
- }
-
- // int globalFunc();
-
- // // don't include header
- // char globalFunc();
- public void testAstIndexConflictFunction_Bug195127() throws Exception {
- fakeFailForMultiProject();
- IBinding b0 = getBindingFromASTName("globalFunc(", 10);
- assertTrue(b0 instanceof IFunction);
- IFunction f = (IFunction) b0;
- IType type = f.getType().getReturnType();
- assertTrue(type instanceof IBasicType);
- assertTrue(((IBasicType) type).getKind() == IBasicType.Kind.eChar);
- }
-
- // struct astruct {
- // int member;
- // };
-
- // // don't include header
- // struct astruct {
- // char member;
- // int additionalMember;
- // };
- public void testAstIndexConflictStruct_Bug195127() throws Exception {
- fakeFailForMultiProject();
- IBinding b0 = getBindingFromASTName("astruct", 7);
- assertTrue(b0 instanceof ICompositeType);
- ICompositeType ct = (ICompositeType) b0;
- IField[] fields = ct.getFields();
- assertEquals(2, fields.length);
- IField member = fields[0];
- IField additionalMember = fields[1];
- if (member.getName().equals("additionalMember")) {
- IField h = member;
- member = additionalMember;
- additionalMember = h;
- }
- assertEquals("member", member.getName());
- assertEquals("additionalMember", additionalMember.getName());
- IType type = member.getType();
- assertTrue(type instanceof IBasicType);
- assertTrue(((IBasicType) type).getKind() == IBasicType.Kind.eChar);
- }
-
- // enum anenum {
- // eItem0
- // };
-
- // // don't include header
- // enum anenum {
- // eItem0, eItem1
- // };
- public void testAstIndexConflictEnumerator_Bug195127() throws Exception {
- fakeFailForMultiProject();
- IBinding b0 = getBindingFromASTName("anenum", 6);
- assertTrue(b0 instanceof IEnumeration);
- IEnumeration enumeration = (IEnumeration) b0;
- IEnumerator[] enumerators = enumeration.getEnumerators();
- assertEquals(2, enumerators.length);
- }
-
- // typedef int atypedef;
-
- // // don't include header
- // typedef char atypedef;
- public void testAstIndexConflictTypedef_Bug195127() throws Exception {
- fakeFailForMultiProject();
- IBinding b0 = getBindingFromASTName("atypedef;", 8);
- assertTrue(b0 instanceof ITypedef);
- ITypedef t = (ITypedef) b0;
- IType type = t.getType();
- assertTrue(type instanceof IBasicType);
- assertTrue(((IBasicType) type).getKind() == IBasicType.Kind.eChar);
- }
-
- // struct st_20070703 {
- // int member;
- // };
-
- // #include "header.h"
- // struct st_20070703;
- // void func(struct st_20070703* x) {
- // x->member= 0;
- // }
- public void testAstIndexStructFwdDecl_Bug195227() throws Exception {
- IBinding b0 = getBindingFromASTName("member=", 6);
- assertTrue(b0 instanceof IField);
- }
-
- // struct astruct {
- // int member;
- // };
- // enum anenum {
- // eItem0
- // };
-
- // #include "header.h"
- // struct astruct;
- // enum anenum;
- // void func(struct astruct a, enum anenum b) {
- // }
- public void testAstIndexFwdDecl_Bug195227() throws Exception {
- IBinding b0 = getBindingFromASTName("astruct;", 7);
- IBinding b1 = getBindingFromASTName("anenum;", 6);
- assertTrue(b0 instanceof ICompositeType);
- ICompositeType t = (ICompositeType) b0;
- IField[] f = t.getFields();
- assertEquals(1, f.length);
- assertTrue(b1 instanceof IEnumeration);
- IEnumeration e = (IEnumeration) b1;
- IEnumerator[] ei = e.getEnumerators();
- assertEquals(1, ei.length);
-
- b0 = getBindingFromASTName("astruct a", 7);
- b1 = getBindingFromASTName("anenum b", 6);
- assertTrue(b0 instanceof ICompositeType);
- t = (ICompositeType) b0;
- f = t.getFields();
- assertEquals(1, f.length);
- assertTrue(b1 instanceof IEnumeration);
- e = (IEnumeration) b1;
- ei = e.getEnumerators();
- assertEquals(1, ei.length);
- }
-
- // // no header needed
-
- // typedef struct {
- // int member;
- // } t_struct;
- // typedef union {
- // int member;
- // } t_union;
- // typedef enum {
- // ei
- // } t_enum;
- public void testIsSameAnonymousType_Bug193962() throws DOMException {
- // struct
- IBinding tdAST = getBindingFromASTName("t_struct;", 8);
- assertFalse(tdAST instanceof IIndexBinding);
- IBinding tdIndex = strategy.getIndex().adaptBinding(tdAST);
- assertTrue(tdIndex instanceof IIndexBinding);
- assertTrue(tdAST instanceof ITypedef);
- assertTrue(tdIndex instanceof ITypedef);
-
- IType tAST = ((ITypedef) tdAST).getType();
- IType tIndex = ((ITypedef) tdIndex).getType();
- assertTrue(tAST instanceof ICompositeType);
- assertTrue(tIndex instanceof ICompositeType);
- assertTrue(tAST.isSameType(tIndex));
- assertTrue(tIndex.isSameType(tAST));
-
- // union
- tdAST = getBindingFromASTName("t_union;", 7);
- assertFalse(tdAST instanceof IIndexBinding);
- tdIndex = strategy.getIndex().adaptBinding(tdAST);
- assertTrue(tdIndex instanceof IIndexBinding);
- assertTrue(tdAST instanceof ITypedef);
- assertTrue(tdIndex instanceof ITypedef);
-
- tAST = ((ITypedef) tdAST).getType();
- tIndex = ((ITypedef) tdIndex).getType();
- assertTrue(tAST instanceof ICompositeType);
- assertTrue(tIndex instanceof ICompositeType);
- assertTrue(tAST.isSameType(tIndex));
- assertTrue(tIndex.isSameType(tAST));
-
- // enum
- tdAST = getBindingFromASTName("t_enum;", 6);
- assertFalse(tdAST instanceof IIndexBinding);
- tdIndex = strategy.getIndex().adaptBinding(tdAST);
- assertTrue(tdIndex instanceof IIndexBinding);
- assertTrue(tdAST instanceof ITypedef);
- assertTrue(tdIndex instanceof ITypedef);
-
- tAST = ((ITypedef) tdAST).getType();
- tIndex = ((ITypedef) tdIndex).getType();
- assertTrue(tAST instanceof IEnumeration);
- assertTrue(tIndex instanceof IEnumeration);
- assertTrue(tAST.isSameType(tIndex));
- assertTrue(tIndex.isSameType(tAST));
- }
-
- // struct outer {
- // union {
- // int var1;
- // };
- // };
-
- // #include "header.h"
- // void test() {
- // struct outer x;
- // x.var1=1;
- // }
- public void testAnonymousUnion_Bug216791() throws DOMException {
- // struct
- IBinding b = getBindingFromASTName("var1=", 4);
- assertTrue(b instanceof IField);
- IField f = (IField) b;
- IScope outer = f.getCompositeTypeOwner().getScope();
- assertTrue(outer instanceof ICCompositeTypeScope);
- assertEquals("outer", outer.getScopeName().toString());
- }
-
- // union outer {
- // struct {
- // int var1;
- // };
- // };
-
- // #include "header.h"
- // void test() {
- // union outer x;
- // x.var1=1;
- // }
- public void testAnonymousStruct_Bug216791() throws DOMException {
- // struct
- IBinding b = getBindingFromASTName("var1=", 4);
- assertTrue(b instanceof IField);
- IField f = (IField) b;
- IScope outer = f.getCompositeTypeOwner().getScope();
- assertTrue(outer instanceof ICCompositeTypeScope);
- assertEquals("outer", outer.getScopeName().toString());
- }
-
- // int myFunc();
-
- // int myFunc(var)
- // int var;
- // {
- // return var;
- // }
- // int main(void) {
- // return myFunc(0);
- // }
- public void testKRStyleFunction_Bug216791() throws DOMException {
- // struct
- IBinding b = getBindingFromASTName("myFunc(", 6);
- assertTrue(b instanceof IFunction);
- IFunction f = (IFunction) b;
- IParameter[] params = f.getParameters();
- assertEquals(1, params.length);
- assertTrue(params[0].getType() instanceof IBasicType);
- assertEquals(IBasicType.Kind.eInt, ((IBasicType) params[0].getType()).getKind());
- }
-
- // typedef struct S S;
- // void setValue(S *pSelf, int value);
-
- // struct S {
- // int value;
- // };
- // void setValue(S *pSelf, int value) {
- // pSelf->value = value;
- // }
- public void testOpaqueStruct_Bug262719() throws Exception {
- IBinding b = getBindingFromASTName("value =", 5);
- assertTrue(b instanceof IField);
- }
-
- // void f255(
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int);
- // void f256(
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int);
-
- // void test() {
- // f255(
- // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
- // f256(
- // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
- // }
- public void testFunctionsWithManyParameters_Bug319186() throws Exception {
- getBindingFromASTName("f255", 0);
- getBindingFromASTName("f256", 0);
- }
-
- // struct B {
- // float f;
- // };
-
- // struct B b = {
- // .f = 3.1
- // };
- public void testDesignatedInitializer_Bug210019() throws Exception {
- IField f = getBindingFromASTName("f", 0);
- }
-
- // struct S {
- // int data;
- // };
-
- // void test(void (*f)(void*)) {
- // struct S *i;
- // f(&i->data);
- // }
- public void testBug394151() throws Exception {
- IParameter f = getBindingFromASTName("f(", 1);
- }
-}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCBindingResolutionBugsTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCBindingResolutionBugsTest.java
new file mode 100644
index 00000000000..ef8a437da2b
--- /dev/null
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCBindingResolutionBugsTest.java
@@ -0,0 +1,506 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2013 Wind River Systems, Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Markus Schorn - initial API and implementation
+ * Andrew Ferguson (Symbian)
+ * Sergey Prigogin (Google)
+ *******************************************************************************/
+package org.eclipse.cdt.internal.index.tests;
+
+import org.eclipse.cdt.core.dom.ast.DOMException;
+import org.eclipse.cdt.core.dom.ast.IBasicType;
+import org.eclipse.cdt.core.dom.ast.IBinding;
+import org.eclipse.cdt.core.dom.ast.ICompositeType;
+import org.eclipse.cdt.core.dom.ast.IEnumeration;
+import org.eclipse.cdt.core.dom.ast.IEnumerator;
+import org.eclipse.cdt.core.dom.ast.IField;
+import org.eclipse.cdt.core.dom.ast.IFunction;
+import org.eclipse.cdt.core.dom.ast.IParameter;
+import org.eclipse.cdt.core.dom.ast.IScope;
+import org.eclipse.cdt.core.dom.ast.IType;
+import org.eclipse.cdt.core.dom.ast.ITypedef;
+import org.eclipse.cdt.core.dom.ast.IVariable;
+import org.eclipse.cdt.core.dom.ast.c.ICCompositeTypeScope;
+import org.eclipse.cdt.core.index.IIndexBinding;
+
+import junit.framework.TestSuite;
+
+/**
+ * For testing PDOM binding resolution
+ */
+public abstract class IndexCBindingResolutionBugsTest extends IndexBindingResolutionTestBase {
+
+ public static class SingleProjectTest extends IndexCBindingResolutionBugsTest {
+ public SingleProjectTest() {
+ setStrategy(new SinglePDOMTestStrategy(false));
+ }
+
+ public static TestSuite suite() {
+ return suite(SingleProjectTest.class);
+ }
+ }
+
+ public static class ProjectWithDepProjTest extends IndexCBindingResolutionBugsTest {
+ public ProjectWithDepProjTest() {
+ setStrategy(new ReferencedProject(false));
+ }
+
+ public static TestSuite suite() {
+ return suite(ProjectWithDepProjTest.class);
+ }
+ }
+
+ public static void addTests(TestSuite suite) {
+ suite.addTest(SingleProjectTest.suite());
+ suite.addTest(ProjectWithDepProjTest.suite());
+ }
+
+ // #include <stdio.h>
+ // void func1(void) {
+ // int i = 0;
+ // for (i=0; i<10;i++) {
+ // printf("%i", i);
+ // }
+ // }
+
+ // #include "header.h"
+ //
+ // int main(void) {
+ // while (1) {
+ // func1();
+ // }
+ // return 0;
+ // }
+ public void testBug175267() throws DOMException {
+ IBinding b0 = getBindingFromASTName("func1()", 5);
+ assertTrue(b0 instanceof IFunction);
+ IFunction f0 = (IFunction) b0;
+ IParameter[] params = f0.getParameters();
+ assertEquals(0, params.length);
+ IType returnType = f0.getType().getReturnType();
+ assertTrue(returnType instanceof IBasicType);
+ assertEquals(IBasicType.Kind.eVoid, ((IBasicType) returnType).getKind());
+ }
+
+ // void func1(void);
+
+ // #include "header.h"
+ //
+ // int main(void) {
+ // void* v= func1;
+ // }
+ public void testBug181735() throws DOMException {
+ IBinding b0 = getBindingFromASTName("func1;", 5);
+ assertTrue(b0 instanceof IFunction);
+ }
+
+ // typedef struct {
+ // int utm;
+ // } usertype;
+ // void func(usertype t);
+
+ // #include "header.h"
+ // void test() {
+ // usertype ut;
+ // func(ut);
+ // }
+ public void testFuncWithTypedefForAnonymousStruct_190730() throws Exception {
+ IBinding b0 = getBindingFromASTName("func(", 4);
+ assertTrue(b0 instanceof IFunction);
+ IFunction f = (IFunction) b0;
+ IParameter[] pars = f.getParameters();
+ assertEquals(1, pars.length);
+ IType type = pars[0].getType();
+ assertInstance(type, ITypedef.class);
+ type = ((ITypedef) type).getType();
+ assertInstance(type, ICompositeType.class);
+ }
+
+ // typedef enum {
+ // eItem
+ // } userEnum;
+ // void func(userEnum t);
+
+ // #include "header.h"
+ // void test() {
+ // userEnum ut;
+ // func(ut);
+ // }
+ public void testFuncWithTypedefForAnonymousEnum_190730() throws Exception {
+ IBinding b0 = getBindingFromASTName("func(", 4);
+ assertTrue(b0 instanceof IFunction);
+ IFunction f = (IFunction) b0;
+ IParameter[] pars = f.getParameters();
+ assertEquals(1, pars.length);
+ IType type = pars[0].getType();
+ assertInstance(type, ITypedef.class);
+ type = ((ITypedef) type).getType();
+ assertInstance(type, IEnumeration.class);
+ assertTrue(type instanceof IEnumeration);
+ }
+
+ // int globalVar;
+
+ // // don't include header
+ // char globalVar;
+ public void testAstIndexConflictVariable_Bug195127() throws Exception {
+ fakeFailForMultiProject();
+ IBinding b0 = getBindingFromASTName("globalVar;", 9);
+ assertTrue(b0 instanceof IVariable);
+ IVariable v = (IVariable) b0;
+ IType type = v.getType();
+ assertTrue(type instanceof IBasicType);
+ assertTrue(((IBasicType) type).getKind() == IBasicType.Kind.eChar);
+ }
+
+ // int globalFunc();
+
+ // // don't include header
+ // char globalFunc();
+ public void testAstIndexConflictFunction_Bug195127() throws Exception {
+ fakeFailForMultiProject();
+ IBinding b0 = getBindingFromASTName("globalFunc(", 10);
+ assertTrue(b0 instanceof IFunction);
+ IFunction f = (IFunction) b0;
+ IType type = f.getType().getReturnType();
+ assertTrue(type instanceof IBasicType);
+ assertTrue(((IBasicType) type).getKind() == IBasicType.Kind.eChar);
+ }
+
+ // struct astruct {
+ // int member;
+ // };
+
+ // // don't include header
+ // struct astruct {
+ // char member;
+ // int additionalMember;
+ // };
+ public void testAstIndexConflictStruct_Bug195127() throws Exception {
+ fakeFailForMultiProject();
+ IBinding b0 = getBindingFromASTName("astruct", 7);
+ assertTrue(b0 instanceof ICompositeType);
+ ICompositeType ct = (ICompositeType) b0;
+ IField[] fields = ct.getFields();
+ assertEquals(2, fields.length);
+ IField member = fields[0];
+ IField additionalMember = fields[1];
+ if (member.getName().equals("additionalMember")) {
+ IField h = member;
+ member = additionalMember;
+ additionalMember = h;
+ }
+ assertEquals("member", member.getName());
+ assertEquals("additionalMember", additionalMember.getName());
+ IType type = member.getType();
+ assertTrue(type instanceof IBasicType);
+ assertTrue(((IBasicType) type).getKind() == IBasicType.Kind.eChar);
+ }
+
+ // enum anenum {
+ // eItem0
+ // };
+
+ // // don't include header
+ // enum anenum {
+ // eItem0, eItem1
+ // };
+ public void testAstIndexConflictEnumerator_Bug195127() throws Exception {
+ fakeFailForMultiProject();
+ IBinding b0 = getBindingFromASTName("anenum", 6);
+ assertTrue(b0 instanceof IEnumeration);
+ IEnumeration enumeration = (IEnumeration) b0;
+ IEnumerator[] enumerators = enumeration.getEnumerators();
+ assertEquals(2, enumerators.length);
+ }
+
+ // typedef int atypedef;
+
+ // // don't include header
+ // typedef char atypedef;
+ public void testAstIndexConflictTypedef_Bug195127() throws Exception {
+ fakeFailForMultiProject();
+ IBinding b0 = getBindingFromASTName("atypedef;", 8);
+ assertTrue(b0 instanceof ITypedef);
+ ITypedef t = (ITypedef) b0;
+ IType type = t.getType();
+ assertTrue(type instanceof IBasicType);
+ assertTrue(((IBasicType) type).getKind() == IBasicType.Kind.eChar);
+ }
+
+ // struct st_20070703 {
+ // int member;
+ // };
+
+ // #include "header.h"
+ // struct st_20070703;
+ // void func(struct st_20070703* x) {
+ // x->member= 0;
+ // }
+ public void testAstIndexStructFwdDecl_Bug195227() throws Exception {
+ IBinding b0 = getBindingFromASTName("member=", 6);
+ assertTrue(b0 instanceof IField);
+ }
+
+ // struct astruct {
+ // int member;
+ // };
+ // enum anenum {
+ // eItem0
+ // };
+
+ // #include "header.h"
+ // struct astruct;
+ // enum anenum;
+ // void func(struct astruct a, enum anenum b) {
+ // }
+ public void testAstIndexFwdDecl_Bug195227() throws Exception {
+ IBinding b0 = getBindingFromASTName("astruct;", 7);
+ IBinding b1 = getBindingFromASTName("anenum;", 6);
+ assertTrue(b0 instanceof ICompositeType);
+ ICompositeType t = (ICompositeType) b0;
+ IField[] f = t.getFields();
+ assertEquals(1, f.length);
+ assertTrue(b1 instanceof IEnumeration);
+ IEnumeration e = (IEnumeration) b1;
+ IEnumerator[] ei = e.getEnumerators();
+ assertEquals(1, ei.length);
+
+ b0 = getBindingFromASTName("astruct a", 7);
+ b1 = getBindingFromASTName("anenum b", 6);
+ assertTrue(b0 instanceof ICompositeType);
+ t = (ICompositeType) b0;
+ f = t.getFields();
+ assertEquals(1, f.length);
+ assertTrue(b1 instanceof IEnumeration);
+ e = (IEnumeration) b1;
+ ei = e.getEnumerators();
+ assertEquals(1, ei.length);
+ }
+
+ // // no header needed
+
+ // typedef struct {
+ // int member;
+ // } t_struct;
+ // typedef union {
+ // int member;
+ // } t_union;
+ // typedef enum {
+ // ei
+ // } t_enum;
+ public void testIsSameAnonymousType_Bug193962() throws DOMException {
+ // struct
+ IBinding tdAST = getBindingFromASTName("t_struct;", 8);
+ assertFalse(tdAST instanceof IIndexBinding);
+ IBinding tdIndex = strategy.getIndex().adaptBinding(tdAST);
+ assertTrue(tdIndex instanceof IIndexBinding);
+ assertTrue(tdAST instanceof ITypedef);
+ assertTrue(tdIndex instanceof ITypedef);
+
+ IType tAST = ((ITypedef) tdAST).getType();
+ IType tIndex = ((ITypedef) tdIndex).getType();
+ assertTrue(tAST instanceof ICompositeType);
+ assertTrue(tIndex instanceof ICompositeType);
+ assertTrue(tAST.isSameType(tIndex));
+ assertTrue(tIndex.isSameType(tAST));
+
+ // union
+ tdAST = getBindingFromASTName("t_union;", 7);
+ assertFalse(tdAST instanceof IIndexBinding);
+ tdIndex = strategy.getIndex().adaptBinding(tdAST);
+ assertTrue(tdIndex instanceof IIndexBinding);
+ assertTrue(tdAST instanceof ITypedef);
+ assertTrue(tdIndex instanceof ITypedef);
+
+ tAST = ((ITypedef) tdAST).getType();
+ tIndex = ((ITypedef) tdIndex).getType();
+ assertTrue(tAST instanceof ICompositeType);
+ assertTrue(tIndex instanceof ICompositeType);
+ assertTrue(tAST.isSameType(tIndex));
+ assertTrue(tIndex.isSameType(tAST));
+
+ // enum
+ tdAST = getBindingFromASTName("t_enum;", 6);
+ assertFalse(tdAST instanceof IIndexBinding);
+ tdIndex = strategy.getIndex().adaptBinding(tdAST);
+ assertTrue(tdIndex instanceof IIndexBinding);
+ assertTrue(tdAST instanceof ITypedef);
+ assertTrue(tdIndex instanceof ITypedef);
+
+ tAST = ((ITypedef) tdAST).getType();
+ tIndex = ((ITypedef) tdIndex).getType();
+ assertTrue(tAST instanceof IEnumeration);
+ assertTrue(tIndex instanceof IEnumeration);
+ assertTrue(tAST.isSameType(tIndex));
+ assertTrue(tIndex.isSameType(tAST));
+ }
+
+ // struct outer {
+ // union {
+ // int var1;
+ // };
+ // };
+
+ // #include "header.h"
+ // void test() {
+ // struct outer x;
+ // x.var1=1;
+ // }
+ public void testAnonymousUnion_Bug216791() throws DOMException {
+ // struct
+ IBinding b = getBindingFromASTName("var1=", 4);
+ assertTrue(b instanceof IField);
+ IField f = (IField) b;
+ IScope outer = f.getCompositeTypeOwner().getScope();
+ assertTrue(outer instanceof ICCompositeTypeScope);
+ assertEquals("outer", outer.getScopeName().toString());
+ }
+
+ // union outer {
+ // struct {
+ // int var1;
+ // };
+ // };
+
+ // #include "header.h"
+ // void test() {
+ // union outer x;
+ // x.var1=1;
+ // }
+ public void testAnonymousStruct_Bug216791() throws DOMException {
+ // struct
+ IBinding b = getBindingFromASTName("var1=", 4);
+ assertTrue(b instanceof IField);
+ IField f = (IField) b;
+ IScope outer = f.getCompositeTypeOwner().getScope();
+ assertTrue(outer instanceof ICCompositeTypeScope);
+ assertEquals("outer", outer.getScopeName().toString());
+ }
+
+ // int myFunc();
+
+ // int myFunc(var)
+ // int var;
+ // {
+ // return var;
+ // }
+ // int main(void) {
+ // return myFunc(0);
+ // }
+ public void testKRStyleFunction_Bug216791() throws DOMException {
+ // struct
+ IBinding b = getBindingFromASTName("myFunc(", 6);
+ assertTrue(b instanceof IFunction);
+ IFunction f = (IFunction) b;
+ IParameter[] params = f.getParameters();
+ assertEquals(1, params.length);
+ assertTrue(params[0].getType() instanceof IBasicType);
+ assertEquals(IBasicType.Kind.eInt, ((IBasicType) params[0].getType()).getKind());
+ }
+
+ // typedef struct S S;
+ // void setValue(S *pSelf, int value);
+
+ // struct S {
+ // int value;
+ // };
+ // void setValue(S *pSelf, int value) {
+ // pSelf->value = value;
+ // }
+ public void testOpaqueStruct_Bug262719() throws Exception {
+ IBinding b = getBindingFromASTName("value =", 5);
+ assertTrue(b instanceof IField);
+ }
+
+ // void f255(
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int);
+ // void f256(
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int);
+
+ // void test() {
+ // f255(
+ // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
+ // f256(
+ // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
+ // }
+ public void testFunctionsWithManyParameters_Bug319186() throws Exception {
+ getBindingFromASTName("f255", 0);
+ getBindingFromASTName("f256", 0);
+ }
+
+ // struct B {
+ // float f;
+ // };
+
+ // struct B b = {
+ // .f = 3.1
+ // };
+ public void testDesignatedInitializer_Bug210019() throws Exception {
+ IField f = getBindingFromASTName("f", 0);
+ }
+
+ // struct S {
+ // int data;
+ // };
+
+ // void test(void (*f)(void*)) {
+ // struct S *i;
+ // f(&i->data);
+ // }
+ public void testBug394151() throws Exception {
+ IParameter f = getBindingFromASTName("f(", 1);
+ }
+}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCBindingResolutionTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCBindingResolutionTest.java
index 75812e04f7a..f0ef997430a 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCBindingResolutionTest.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCBindingResolutionTest.java
@@ -38,31 +38,31 @@ import junit.framework.TestSuite;
* additionally check that the binding obtained has characteristics as
* expected (type,name,etc..)
*/
-public class IndexCBindingResolutionTest extends IndexBindingResolutionTestBase {
+public abstract class IndexCBindingResolutionTest extends IndexBindingResolutionTestBase {
- public static class SingleProject extends IndexCBindingResolutionTest {
- public SingleProject() {
+ public static class SingleProjectTest extends IndexCBindingResolutionTest {
+ public SingleProjectTest() {
setStrategy(new SinglePDOMTestStrategy(false));
}
public static TestSuite suite() {
- return suite(SingleProject.class);
+ return suite(SingleProjectTest.class);
}
}
- public static class ProjectWithDepProj extends IndexCBindingResolutionTest {
- public ProjectWithDepProj() {
+ public static class ProjectWithDepProjTest extends IndexCBindingResolutionTest {
+ public ProjectWithDepProjTest() {
setStrategy(new ReferencedProject(false));
}
public static TestSuite suite() {
- return suite(ProjectWithDepProj.class);
+ return suite(ProjectWithDepProjTest.class);
}
}
public static void addTests(TestSuite suite) {
- suite.addTest(SingleProject.suite());
- suite.addTest(ProjectWithDepProj.suite());
+ suite.addTest(SingleProjectTest.suite());
+ suite.addTest(ProjectWithDepProjTest.suite());
}
public IndexCBindingResolutionTest() {
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPBindingResolutionBugs.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPBindingResolutionBugs.java
deleted file mode 100644
index d1f4f6c6239..00000000000
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPBindingResolutionBugs.java
+++ /dev/null
@@ -1,1400 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2015 Wind River Systems, Inc. and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Markus Schorn - initial API and implementation
- * Andrew Ferguson (Symbian)
- * Sergey Prigogin (Google)
- *******************************************************************************/
-package org.eclipse.cdt.internal.index.tests;
-
-import java.util.Arrays;
-import java.util.regex.Pattern;
-
-import org.eclipse.cdt.core.dom.ast.ASTTypeUtil;
-import org.eclipse.cdt.core.dom.ast.DOMException;
-import org.eclipse.cdt.core.dom.ast.IASTImplicitName;
-import org.eclipse.cdt.core.dom.ast.IASTName;
-import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
-import org.eclipse.cdt.core.dom.ast.IBinding;
-import org.eclipse.cdt.core.dom.ast.ICompositeType;
-import org.eclipse.cdt.core.dom.ast.IEnumeration;
-import org.eclipse.cdt.core.dom.ast.IField;
-import org.eclipse.cdt.core.dom.ast.IFunction;
-import org.eclipse.cdt.core.dom.ast.IParameter;
-import org.eclipse.cdt.core.dom.ast.IPointerType;
-import org.eclipse.cdt.core.dom.ast.IScope;
-import org.eclipse.cdt.core.dom.ast.ISemanticProblem;
-import org.eclipse.cdt.core.dom.ast.IType;
-import org.eclipse.cdt.core.dom.ast.ITypedef;
-import org.eclipse.cdt.core.dom.ast.IVariable;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPBase;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassScope;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassSpecialization;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassTemplate;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassType;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPField;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPFunction;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPFunctionType;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPMethod;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPNamespace;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPNamespaceScope;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPPointerToMemberType;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPSpecialization;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateArgument;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateDefinition;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateInstance;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateParameter;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateParameterMap;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPVariable;
-import org.eclipse.cdt.core.index.IIndex;
-import org.eclipse.cdt.core.index.IIndexBinding;
-import org.eclipse.cdt.core.index.IIndexMacro;
-import org.eclipse.cdt.core.index.IndexFilter;
-import org.eclipse.cdt.core.model.IBuffer;
-import org.eclipse.cdt.core.model.ITranslationUnit;
-import org.eclipse.cdt.core.model.IWorkingCopy;
-import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPTemplateTypeArgument;
-import org.eclipse.cdt.internal.core.dom.parser.cpp.ClassTypeHelper;
-import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPInstanceCache;
-
-import junit.framework.TestSuite;
-
-/**
- * For testing PDOM binding resolution
- */
-public class IndexCPPBindingResolutionBugs extends IndexBindingResolutionTestBase {
-
- public static class SingleProject extends IndexCPPBindingResolutionBugs {
- public SingleProject() {
- setStrategy(new SinglePDOMTestStrategy(true));
- }
-
- public static TestSuite suite() {
- return suite(SingleProject.class);
- }
- }
-
- public static class ProjectWithDepProj extends IndexCPPBindingResolutionBugs {
- public ProjectWithDepProj() {
- setStrategy(new ReferencedProject(true));
- }
-
- public static TestSuite suite() {
- return suite(ProjectWithDepProj.class);
- }
- }
-
- public static void addTests(TestSuite suite) {
- suite.addTest(IndexCPPBindingResolutionBugsSingleProjectFirstAST.suite());
- suite.addTest(SingleProject.suite());
- suite.addTest(ProjectWithDepProj.suite());
- }
-
- public static TestSuite suite() {
- return suite(IndexCPPBindingResolutionBugs.class);
- }
-
- public IndexCPPBindingResolutionBugs() {
- setStrategy(new SinglePDOMTestStrategy(true));
- }
-
- // #define OBJ void foo()
- // #define FUNC() void bar()
- // #define FUNC2(A) void baz()
-
- // OBJ {}
- // FUNC() {}
- // FUNC2(1) {}
- public void test_208558() throws Exception {
- IIndex index = getIndex();
-
- IIndexMacro[] macrosA = index.findMacros("OBJ".toCharArray(), IndexFilter.ALL, npm());
- IIndexMacro[] macrosB = index.findMacros("FUNC".toCharArray(), IndexFilter.ALL, npm());
- IIndexMacro[] macrosC = index.findMacros("FUNC2".toCharArray(), IndexFilter.ALL, npm());
-
- assertEquals(1, macrosA.length);
- assertEquals(1, macrosB.length);
- assertEquals(1, macrosC.length);
- IIndexMacro obj = macrosA[0];
- IIndexMacro func = macrosB[0];
- IIndexMacro func2 = macrosC[0];
-
- assertEquals("OBJ", new String(obj.getName()));
- assertEquals("FUNC", new String(func.getName()));
- assertEquals("FUNC2", new String(func2.getName()));
-
- assertEquals("void foo()", new String(obj.getExpansionImage()));
- assertEquals("void bar()", new String(func.getExpansionImage()));
- assertEquals("void baz()", new String(func2.getExpansionImage()));
-
- assertEquals("OBJ", new String(obj.getName()));
- assertNull(obj.getParameterList());
-
- assertEquals("FUNC", new String(func.getName()));
- assertEquals(0, func.getParameterList().length);
-
- assertEquals("FUNC2", new String(func2.getName()));
- assertEquals(1, func2.getParameterList().length);
- assertEquals("A", new String(func2.getParameterList()[0]));
-
- IIndexBinding[] bindings = index.findBindings(Pattern.compile(".*"), false, IndexFilter.ALL, npm());
- assertEquals(3, bindings.length);
-
- IIndexBinding foo = index.findBindings("foo".toCharArray(), IndexFilter.ALL, npm())[0];
- IIndexBinding bar = index.findBindings("bar".toCharArray(), IndexFilter.ALL, npm())[0];
- IIndexBinding baz = index.findBindings("baz".toCharArray(), IndexFilter.ALL, npm())[0];
-
- assertEquals("foo", foo.getName());
- assertEquals("bar", bar.getName());
- assertEquals("baz", baz.getName());
- assertInstance(foo, ICPPFunction.class);
- assertInstance(bar, ICPPFunction.class);
- assertInstance(baz, ICPPFunction.class);
- }
-
- // template <class T>
- // inline void testTemplate(T& aRef);
- //
- // class Temp {
- // };
-
- // void main(void) {
- // Temp testFile;
- // testTemplate(testFile);
- // }
- public void test_207320() {
- IBinding b0 = getBindingFromASTName("testTemplate(", 12);
- assertInstance(b0, ICPPFunction.class);
- assertInstance(b0, ICPPTemplateInstance.class);
- }
-
- // class testdef{
- //
- // public:
- // void testagain();
- // };
- //
- // typedef void TAny;
- //
- // inline void testCall(TAny* aExpected){}
- //
- // testdef* global_cBase;
- // testdef*& global_cBaseRef = global_cBase;
-
- // int main(void)
- // {
- // testdef* local_cBase;
- // testdef*& local_cBaseRef = local_cBase;
- //
- // testCall( /*1*/ (void *) local_cBase);
- // testCall( /*2*/ local_cBase);
- //
- // testCall( /*3*/ (void *) local_cBaseRef);
- // testCall( /*4*/ local_cBaseRef);
- //
- // testCall( /*5*/ (void *) global_cBase);
- // testCall( /*6*/ global_cBase);
- //
- // testCall( /*7*/ (void *)global_cBaseRef);
- // testCall( /*8*/ global_cBaseRef);
- // }
- public void test_206187() throws Exception {
- IBinding b1 = getBindingFromASTName("testCall( /*1*/", 8);
- IBinding b2 = getBindingFromASTName("testCall( /*2*/", 8);
- IBinding b3 = getBindingFromASTName("testCall( /*3*/", 8);
- IBinding b4 = getBindingFromASTName("testCall( /*4*/", 8);
- IBinding b5 = getBindingFromASTName("testCall( /*5*/", 8);
- IBinding b6 = getBindingFromASTName("testCall( /*6*/", 8);
- IBinding b7 = getBindingFromASTName("testCall( /*7*/", 8);
- IBinding b8 = getBindingFromASTName("testCall( /*8*/", 8);
- }
-
- // template<typename T1>
- // class A {};
- //
- // template<typename T2>
- // class B : public A<T2> {};
- //
- // class C {};
- //
- // B<C> b;
-
- // void foo() {C c; B<int> b;}
- public void test_188274() throws Exception {
- IBinding b0 = getBindingFromASTName("C", 1);
- IBinding b1 = getBindingFromASTName("B", 1);
- assertInstance(b0, ICPPClassType.class);
- assertInstance(b1, ICPPClassType.class);
- assertInstance(b1, ICPPClassTemplate.class);
- assertInstance(b1, ICPPInstanceCache.class);
-
- ICPPInstanceCache ct = (ICPPInstanceCache) b1;
- ICPPSpecialization inst = ct
- .getInstance(new ICPPTemplateArgument[] { new CPPTemplateTypeArgument((IType) b0) });
- assertInstance(inst, ICPPClassType.class);
- ICPPClassType c2t = (ICPPClassType) inst;
- ICPPBase[] bases = c2t.getBases();
- assertEquals(1, bases.length);
- assertInstance(bases[0].getBaseClass(), ICPPClassType.class);
- }
-
- // namespace ns {class A{};}
-
- // ns::A a;
- // class B {};
- public void test_188324() throws Exception {
- IASTName name = findName("B", 1);
- IBinding b0 = getBindingFromASTName("ns::A", 2);
- assertInstance(b0, ICPPNamespace.class);
- ICPPNamespace ns = (ICPPNamespace) b0;
- assertEquals(0, ns.getNamespaceScope().getBindings(name, false, false).length);
- }
-
- // template<typename T>
- // class C : public C<T> {};
-
- // void foo() {
- // C<int>::unresolvable();
- // };
- public void test_185828() throws Exception {
- // Bug 185828 reports a StackOverflowException is thrown before we get here.
- // That the SOE is thrown is detected in BaseTestCase via an Error IStatus
-
- IBinding b0 = getBindingFromASTName("C<int>", 1);
- IBinding b1 = getBindingFromASTName("C<int>", 6);
- IBinding b2 = getProblemFromASTName("unresolvable", 12);
-
- assertInstance(b0, ICPPClassType.class);
- assertInstance(b0, ICPPClassTemplate.class);
-
- assertInstance(b1, ICPPClassType.class);
- assertInstance(b1, ICPPSpecialization.class);
- }
-
- // class MyClass {
- // public:
- // template<class T>
- // T* MopGetObject(T*& aPtr)
- // { return 0; }
- //
- //
- // template<class T>
- // T* MopGetObjectNoChaining(T*& aPtr)
- // { return 0; }
- //
- // };
-
- // int main() {
- // MyClass* cls= new MyClass();
- // }
- public void test_184216() throws Exception {
- IBinding b0 = getBindingFromASTName("MyClass*", 7);
- assertInstance(b0, ICPPClassType.class);
- ICPPClassType ct = (ICPPClassType) b0;
- ICPPMethod[] ms = ct.getDeclaredMethods(); // 184216 reports CCE thrown
- assertEquals(2, ms.length);
- assertInstance(ms[0], ICPPTemplateDefinition.class);
- assertInstance(ms[1], ICPPTemplateDefinition.class);
- }
-
- // class cl;
- // typedef cl* t1;
- // typedef t1 t2;
-
- // void func(t2 a);
- // void func(int b);
- // void ref() {
- // cl* a;
- // func(a);
- // }
- public void test_166954() {
- IBinding b0 = getBindingFromASTName("func(a)", 4);
- }
-
- // class Base {
- // public:
- // void foo(int i);
- // int fooint();
- // char* fooovr();
- // char* fooovr(int a);
- // char* fooovr(char x);
- // };
-
- // void Base::foo(int i) {}
- // int Base::fooint() {return 0;}
- // char* Base::fooovr() {return 0;}
- // char* Base::fooovr(int a) {return 0;}
- // char* Base::fooovr(char x) {return 0;}
- //
- // void refs() {
- // Base b;
- // b.foo(1);
- // b.fooint();
- // b.fooovr();
- // b.fooovr(1);
- // b.fooovr('a');
- // }
- public void test_168020() {
- getBindingFromASTName("foo(int i)", 3);
- getBindingFromASTName("fooint()", 6);
- getBindingFromASTName("fooovr()", 6);
- getBindingFromASTName("fooovr(int", 6);
- getBindingFromASTName("fooovr(char", 6);
-
- getBindingFromASTName("foo(1)", 3);
- getBindingFromASTName("fooint();", 6);
- getBindingFromASTName("fooovr();", 6);
- getBindingFromASTName("fooovr(1", 6);
- getBindingFromASTName("fooovr('", 6);
- }
-
- // class Base {
- // public:
- // void foo(int i);
- // int foo2(int i);
- // };
- //
- // void func(int k);
- // void func2(int i);
-
- // void Base::foo(int i) {
- // i=2;
- // }
- // int Base::foo2(int j) {
- // j=2;
- // }
- // void func(int k) {
- // k=2;
- // }
- // void func2(int l) {
- // l=2;
- // }
- public void test_168054() {
- getBindingFromASTName("i=2", 1);
- getBindingFromASTName("j=2", 1);
- getBindingFromASTName("k=2", 1);
- getBindingFromASTName("l=2", 1);
- }
-
- // namespace X {}
-
- // namespace Y {
- // class Ambiguity {};
- // enum Ambiguity {A1,A2,A3};
- // void foo() {
- // Ambiguity problem;
- // }
- // }
- public void test_176708_CCE() throws Exception {
- IBinding binding = getBindingFromASTName("Y {", 1);
- assertTrue(binding instanceof ICPPNamespace);
- ICPPNamespace adapted = (ICPPNamespace) strategy.getIndex().adaptBinding(binding);
- IASTName name = findName("Ambiguity problem", 9);
- assertNotNull(name);
- IBinding binding2 = adapted.getNamespaceScope().getBinding(name, true);
- }
-
- // namespace X {int i;}
-
- // int a= X::i;
- public void test_176708_NPE() throws Exception {
- IBinding binding = getBindingFromASTName("i;", 1);
- assertTrue(binding instanceof ICPPVariable);
- IScope scope = binding.getScope();
- }
-
- // template<class T, class U, class V>
- // class A {};
-
- // template<>
- // class A<int, bool, double> {};
- public void test_180784() throws Exception {
- IBinding b0 = getBindingFromASTName("A<int, bool, double> {};", 20);
- assertInstance(b0, ICPPSpecialization.class);
- ICPPSpecialization s = (ICPPSpecialization) b0;
- IBinding b1 = s.getSpecializedBinding();
- assertInstance(b1, ICPPClassTemplate.class);
- ICPPClassTemplate t = (ICPPClassTemplate) b1;
- ICPPTemplateParameter[] ps = t.getTemplateParameters();
- assertNotNull(ps);
- assertEquals(3, ps.length);
- ICPPTemplateParameterMap map = s.getTemplateParameterMap();
- assertNotNull(map.getArgument(ps[0]));
- assertNotNull(map.getArgument(ps[1]));
- assertNotNull(map.getArgument(ps[2]));
- }
-
- // class A{};
- //
- // template<typename T>
- // T id (T t) {return t;}
- //
- // template<>
- // A id (A a) {return a;}
- //
- // int id(int x) {return x;}
-
- // void foo() {
- // id(*new A());
- // id(6);
- // }
- public void test_180948() throws Exception {
- // Main check occurs in BaseTestCase - that no ClassCastException
- // is thrown during indexing
- IBinding b0 = getBindingFromASTName("id(*", 2);
- IBinding b1 = getBindingFromASTName("id(6", 2);
- }
-
- // void func1(void);
-
- // int main(void) {
- // void* v= func1;
- // }
- public void test_181735() throws DOMException {
- IBinding b0 = getBindingFromASTName("func1;", 5);
- assertTrue(b0 instanceof IFunction);
- }
-
- // class B {
- // public:
- // class BB {
- // public:
- // int field;
- // };
- // };
- //
- // class A : public B::BB {};
-
- // void foo() {
- // A c;
- // c.field;//comment
- // }
- public void test_183843() throws DOMException {
- IBinding b0 = getBindingFromASTName("field;//", 5);
- assertTrue(b0 instanceof ICPPField);
- }
-
- // typedef struct {
- // int utm;
- // } usertype;
- // void func(usertype t);
-
- // void test() {
- // usertype ut;
- // func(ut);
- // }
- public void testFuncWithTypedefForAnonymousStruct_190730() throws Exception {
- IBinding b0 = getBindingFromASTName("func(", 4);
- assertTrue(b0 instanceof IFunction);
- IFunction f = (IFunction) b0;
- IParameter[] pars = f.getParameters();
- assertEquals(1, pars.length);
- IType type = pars[0].getType();
- assertTrue(type instanceof ITypedef);
- type = ((ITypedef) type).getType();
- assertTrue(type instanceof ICPPClassType);
- }
-
- // typedef enum {
- // eItem
- // } userEnum;
- // void func(userEnum t);
-
- // void test() {
- // userEnum ut;
- // func(ut);
- // }
- public void testFuncWithTypedefForAnonymousEnum_190730() throws Exception {
- IBinding b0 = getBindingFromASTName("func(", 4);
- assertTrue(b0 instanceof IFunction);
- IFunction f = (IFunction) b0;
- IParameter[] pars = f.getParameters();
- assertEquals(1, pars.length);
- IType type = pars[0].getType();
- assertTrue(type instanceof ITypedef);
- type = ((ITypedef) type).getType();
- assertTrue(type instanceof IEnumeration);
- }
-
- // // no header needed
-
- // typedef class {
- // int member;
- // } t_class;
- // typedef struct {
- // int member;
- // } t_struct;
- // typedef union {
- // int member;
- // } t_union;
- // typedef enum {
- // ei
- // } t_enum;
- public void testIsSameAnonymousType_193962() throws DOMException {
- // class
- IBinding tdAST = getBindingFromASTName("t_class;", 7);
- assertFalse(tdAST instanceof IIndexBinding);
- IBinding tdIndex = strategy.getIndex().adaptBinding(tdAST);
- assertTrue(tdIndex instanceof IIndexBinding);
- assertTrue(tdAST instanceof ITypedef);
- assertTrue(tdIndex instanceof ITypedef);
-
- IType tAST = ((ITypedef) tdAST).getType();
- IType tIndex = ((ITypedef) tdIndex).getType();
- assertTrue(tAST instanceof ICompositeType);
- assertTrue(tIndex instanceof ICompositeType);
- assertTrue(tAST.isSameType(tIndex));
- assertTrue(tIndex.isSameType(tAST));
-
- // struct
- tdAST = getBindingFromASTName("t_struct;", 8);
- assertFalse(tdAST instanceof IIndexBinding);
- tdIndex = strategy.getIndex().adaptBinding(tdAST);
- assertTrue(tdIndex instanceof IIndexBinding);
- assertTrue(tdAST instanceof ITypedef);
- assertTrue(tdIndex instanceof ITypedef);
-
- tAST = ((ITypedef) tdAST).getType();
- tIndex = ((ITypedef) tdIndex).getType();
- assertTrue(tAST instanceof ICompositeType);
- assertTrue(tIndex instanceof ICompositeType);
- assertTrue(tAST.isSameType(tIndex));
- assertTrue(tIndex.isSameType(tAST));
-
- // union
- tdAST = getBindingFromASTName("t_union;", 7);
- assertFalse(tdAST instanceof IIndexBinding);
- tdIndex = strategy.getIndex().adaptBinding(tdAST);
- assertTrue(tdIndex instanceof IIndexBinding);
- assertTrue(tdAST instanceof ITypedef);
- assertTrue(tdIndex instanceof ITypedef);
-
- tAST = ((ITypedef) tdAST).getType();
- tIndex = ((ITypedef) tdIndex).getType();
- assertTrue(tAST instanceof ICompositeType);
- assertTrue(tIndex instanceof ICompositeType);
- assertTrue(tAST.isSameType(tIndex));
- assertTrue(tIndex.isSameType(tAST));
-
- // enum
- tdAST = getBindingFromASTName("t_enum;", 6);
- assertFalse(tdAST instanceof IIndexBinding);
- tdIndex = strategy.getIndex().adaptBinding(tdAST);
- assertTrue(tdIndex instanceof IIndexBinding);
- assertTrue(tdAST instanceof ITypedef);
- assertTrue(tdIndex instanceof ITypedef);
-
- tAST = ((ITypedef) tdAST).getType();
- tIndex = ((ITypedef) tdIndex).getType();
- assertTrue(tAST instanceof IEnumeration);
- assertTrue(tIndex instanceof IEnumeration);
- assertTrue(tAST.isSameType(tIndex));
- assertTrue(tIndex.isSameType(tAST));
- }
-
- // // no header needed
-
- // namespace ns {
- // typedef class {
- // int member;
- // } t_class;
- // typedef struct {
- // int member;
- // } t_struct;
- // typedef union {
- // int member;
- // } t_union;
- // typedef enum {
- // ei
- // } t_enum;
- // };
- public void testIsSameNestedAnonymousType_193962() throws DOMException {
- // class
- IBinding tdAST = getBindingFromASTName("t_class;", 7);
- assertFalse(tdAST instanceof IIndexBinding);
- IBinding tdIndex = strategy.getIndex().adaptBinding(tdAST);
- assertTrue(tdIndex instanceof IIndexBinding);
- assertTrue(tdAST instanceof ITypedef);
- assertTrue(tdIndex instanceof ITypedef);
-
- IType tAST = ((ITypedef) tdAST).getType();
- IType tIndex = ((ITypedef) tdIndex).getType();
- assertTrue(tAST instanceof ICompositeType);
- assertTrue(tIndex instanceof ICompositeType);
- assertTrue(tAST.isSameType(tIndex));
- assertTrue(tIndex.isSameType(tAST));
-
- // struct
- tdAST = getBindingFromASTName("t_struct;", 8);
- assertFalse(tdAST instanceof IIndexBinding);
- tdIndex = strategy.getIndex().adaptBinding(tdAST);
- assertTrue(tdIndex instanceof IIndexBinding);
- assertTrue(tdAST instanceof ITypedef);
- assertTrue(tdIndex instanceof ITypedef);
-
- tAST = ((ITypedef) tdAST).getType();
- tIndex = ((ITypedef) tdIndex).getType();
- assertTrue(tAST instanceof ICompositeType);
- assertTrue(tIndex instanceof ICompositeType);
- assertTrue(tAST.isSameType(tIndex));
- assertTrue(tIndex.isSameType(tAST));
-
- // union
- tdAST = getBindingFromASTName("t_union;", 7);
- assertFalse(tdAST instanceof IIndexBinding);
- tdIndex = strategy.getIndex().adaptBinding(tdAST);
- assertTrue(tdIndex instanceof IIndexBinding);
- assertTrue(tdAST instanceof ITypedef);
- assertTrue(tdIndex instanceof ITypedef);
-
- tAST = ((ITypedef) tdAST).getType();
- tIndex = ((ITypedef) tdIndex).getType();
- assertTrue(tAST instanceof ICompositeType);
- assertTrue(tIndex instanceof ICompositeType);
- assertTrue(tAST.isSameType(tIndex));
- assertTrue(tIndex.isSameType(tAST));
-
- // enum
- tdAST = getBindingFromASTName("t_enum;", 6);
- assertFalse(tdAST instanceof IIndexBinding);
- tdIndex = strategy.getIndex().adaptBinding(tdAST);
- assertTrue(tdIndex instanceof IIndexBinding);
- assertTrue(tdAST instanceof ITypedef);
- assertTrue(tdIndex instanceof ITypedef);
-
- tAST = ((ITypedef) tdAST).getType();
- tIndex = ((ITypedef) tdIndex).getType();
- assertTrue(tAST instanceof IEnumeration);
- assertTrue(tIndex instanceof IEnumeration);
- assertTrue(tAST.isSameType(tIndex));
- assertTrue(tIndex.isSameType(tAST));
- }
-
- // namespace FOO {
- // namespace BAR {
- // class Bar;
- // }
- // class Foo {
- // BAR::Bar * Test(BAR::Bar * bar);
- // };
- // }
-
- // namespace FOO {
- // using BAR::Bar;
- //
- // Bar* Foo::Test(Bar* pBar) {
- // return pBar;
- // }
- // }
- public void testAdvanceUsingDeclaration_217102() throws Exception {
- IBinding cl = getBindingFromASTName("Bar* Foo", 3);
-
- assertEquals("Bar", cl.getName());
- assertTrue(cl instanceof ICPPClassType);
- assertEquals("BAR", cl.getScope().getScopeName().toString());
-
- cl = getBindingFromASTName("Bar* pBar", 3);
- assertEquals("Bar", cl.getName());
- assertTrue(cl instanceof ICPPClassType);
- assertEquals("BAR", cl.getScope().getScopeName().toString());
- }
-
- // struct outer {
- // union {
- // int var1;
- // };
- // };
-
- // void test() {
- // struct outer x;
- // x.var1=1;
- // }
- public void testAnonymousUnion_216791() throws DOMException {
- // struct
- IBinding b = getBindingFromASTName("var1=", 4);
- assertTrue(b instanceof IField);
- IField f = (IField) b;
- IScope outer = f.getCompositeTypeOwner().getScope();
- assertTrue(outer instanceof ICPPClassScope);
- assertEquals("outer", outer.getScopeName().toString());
- }
-
- // union outer {
- // struct {
- // int var1;
- // };
- // struct {
- // int var2;
- // } hide;
- // };
-
- // void test() {
- // union outer x;
- // x.var1=1;
- // x.var2= 2; // must be a problem
- // }
- public void testAnonymousStruct_216791() throws DOMException {
- // struct
- IBinding b = getBindingFromASTName("var1=", 4);
- assertTrue(b instanceof IField);
- IField f = (IField) b;
- IScope outer = f.getCompositeTypeOwner().getScope();
- assertTrue(outer instanceof ICPPClassScope);
- assertEquals("outer", outer.getScopeName().toString());
-
- getProblemFromASTName("var2=", 4);
- }
-
- // namespace ns {
- // int v;
- // };
- // using namespace ns;
-
- // void test() {
- // v=1;
- // }
- public void testUsingDirective_216527() throws Exception {
- IBinding b = getBindingFromASTName("v=", 1);
- assertTrue(b instanceof IVariable);
- IVariable v = (IVariable) b;
- IScope scope = v.getScope();
- assertTrue(scope instanceof ICPPNamespaceScope);
- assertEquals("ns", scope.getScopeName().toString());
- }
-
- // namespace NSA {
- // int a;
- // }
- // namespace NSB {
- // int b;
- // }
- // namespace NSAB {
- // using namespace NSA;
- // using namespace NSB;
- // }
-
- // void f() {
- // NSAB::a= NSAB::b;
- // }
- public void testNamespaceComposition_200673() throws Exception {
- IBinding a = getBindingFromASTName("a=", 1);
- assertTrue(a instanceof IVariable);
- IVariable v = (IVariable) a;
- IScope scope = v.getScope();
- assertTrue(scope instanceof ICPPNamespaceScope);
- assertEquals("NSA", scope.getScopeName().toString());
-
- IBinding b = getBindingFromASTName("b;", 1);
- assertTrue(b instanceof IVariable);
- v = (IVariable) b;
- scope = v.getScope();
- assertTrue(scope instanceof ICPPNamespaceScope);
- assertEquals("NSB", scope.getScopeName().toString());
- }
-
- // namespace N { namespace M {}}
-
- // namespace N {using namespace N::M;}
- // using namespace N;
- // void test() {x;}
- public void testEndlessLoopWithUsingDeclaration_209813() throws DOMException {
- getProblemFromASTName("x;", 1);
- }
-
- // class MyClass {};
-
- // void test(MyClass* ptr);
- // class MyClass;
- public void testClassRedeclarationAfterReference_229571() throws Exception {
- IBinding cl = getBindingFromASTName("MyClass;", 7);
- IFunction fn = getBindingFromASTName("test(", 4, IFunction.class);
- IType type = fn.getType().getParameterTypes()[0];
- assertInstance(type, IPointerType.class);
- type = ((IPointerType) type).getType();
- assertInstance(cl, IType.class);
- assertSameType(type, (IType) cl);
- }
-
- // class A {
- // public:
- // void foo() const volatile;
- // void foo() volatile;
- // void foo() const;
- // void foo();
- // void bar() const volatile;
- // void bar() volatile;
- // void bar() const;
- // void bar();
- // };
-
- // void A::foo() const volatile { bar();/*1*/ }
- // void A::foo() volatile { bar();/*2*/ }
- // void A::foo() const { bar();/*3*/ }
- // void A::foo() { bar();/*4*/ }
- // void test() {
- // A a;
- // const A ca;
- // volatile A va;
- // const volatile A cva;
- // cva.bar();/*5*/
- // va.bar();/*6*/
- // ca.bar();/*7*/
- // a.bar();/*8*/
- // }
- public void testMemberFunctionDisambiguationByCVness_238409() throws Exception {
- ICPPMethod bar_cv = getBindingFromASTName("bar();/*1*/", 3, ICPPMethod.class);
- ICPPMethod bar_v = getBindingFromASTName("bar();/*2*/", 3, ICPPMethod.class);
- ICPPMethod bar_c = getBindingFromASTName("bar();/*3*/", 3, ICPPMethod.class);
- ICPPMethod bar = getBindingFromASTName("bar();/*4*/", 3, ICPPMethod.class);
- ICPPFunctionType bar_cv_ft = bar_cv.getType();
- ICPPFunctionType bar_v_ft = bar_v.getType();
- ICPPFunctionType bar_c_ft = bar_c.getType();
- ICPPFunctionType bar_ft = bar.getType();
-
- assertTrue(bar_cv_ft.isConst());
- assertTrue(bar_cv_ft.isVolatile());
- assertTrue(!bar_v_ft.isConst());
- assertTrue(bar_v_ft.isVolatile());
- assertTrue(bar_c_ft.isConst());
- assertTrue(!bar_c_ft.isVolatile());
- assertTrue(!bar_ft.isConst());
- assertTrue(!bar_ft.isVolatile());
-
- bar_cv = getBindingFromASTName("bar();/*5*/", 3, ICPPMethod.class);
- bar_v = getBindingFromASTName("bar();/*6*/", 3, ICPPMethod.class);
- bar_c = getBindingFromASTName("bar();/*7*/", 3, ICPPMethod.class);
- bar = getBindingFromASTName("bar();/*8*/", 3, ICPPMethod.class);
- bar_cv_ft = bar_cv.getType();
- bar_v_ft = bar_v.getType();
- bar_c_ft = bar_c.getType();
- bar_ft = bar.getType();
-
- assertTrue(bar_cv_ft.isConst());
- assertTrue(bar_cv_ft.isVolatile());
- assertTrue(!bar_v_ft.isConst());
- assertTrue(bar_v_ft.isVolatile());
- assertTrue(bar_c_ft.isConst());
- assertTrue(!bar_c_ft.isVolatile());
- assertTrue(!bar_ft.isConst());
- assertTrue(!bar_ft.isVolatile());
- }
-
- // typedef char t[12];
- // void test1(char *);
- // void test2(char []);
- // void test3(t);
-
- // void xx() {
- // char* x= 0;
- // test1(x);
- // test2(x); // problem binding here
- // test3(x); // problem binding here
- // }
- public void testAdjustmentOfParameterTypes_239975() throws Exception {
- getBindingFromASTName("test1(x)", 5, ICPPFunction.class);
- getBindingFromASTName("test2(x)", 5, ICPPFunction.class);
- getBindingFromASTName("test3(x)", 5, ICPPFunction.class);
- }
-
- // class A {
- // A();
- // void l();
- // void e;
- // class M {};
- // };
- // class B {
- // B();
- // void m();
- // void f;
- // class N {};
- // };
- // class C : B {
- // C();
- // void n();
- // int g;
- // class O {};
- // };
- // template<typename T> class CT : B {
- // CT();
- // void n();
- // T g;
- // class O {};
- // };
- // template<> class CT<char> : A {
- // CT(); CT(int);
- // void o();
- // int h;
- // class P {};
- // };
- // template<typename S> class Container {
- // class C : B {
- // C();
- // void n();
- // int g;
- // class O {};
- // };
- // template<typename T> class CT : B {
- // CT();
- // void n();
- // T g;
- // class O {};
- // };
- // };
- // template<> class Container<char>::C : A {
- // C(); C(int);
- // void o();
- // int h;
- // class P {};
- // };
- // template<> template<typename T> class Container<char>::CT : A {
- // CT(); CT(int);
- // void o();
- // int h;
- // class P {};
- // };
-
- // C c;
- // CT<int> ct;
- // CT<char> ctinst;
- // Container<int>::C spec;
- // Container<int>::CT<int> spect;
- // Container<char>::C espec;
- // Container<char>::CT<int> espect;
- public void testClassTypes_98171() throws Exception {
- // regular class
- ICPPClassType ct = getBindingFromASTName("C", 1);
- assertBindings(new String[] { "B" }, ct.getBases());
- assertBindings(new String[] { "n", "m", "B", "C" }, ct.getAllDeclaredMethods());
- assertBindings(new String[] { "C", "C" }, ct.getConstructors());
- assertBindings(new String[] { "g" }, ct.getDeclaredFields());
- assertBindings(new String[] { "n", "C" }, ct.getDeclaredMethods());
- assertBindings(new String[] { "f", "g" }, ct.getFields());
- assertBindings(new String[] { "m", "n", "C", "C", "~C", "B", "B", "~B", "operator =", "operator =" },
- ct.getMethods());
- assertBindings(new String[] { "O" }, ct.getNestedClasses());
-
- // class template
- ct = getBindingFromASTName("CT<int>", 2);
- assertInstance(ct, ICPPClassTemplate.class);
- assertBindings(new String[] { "B" }, ct.getBases());
- assertBindings(new String[] { "n", "m", "B", "CT" }, ct.getAllDeclaredMethods());
- assertBindings(new String[] { "CT", "CT" }, ct.getConstructors());
- assertBindings(new String[] { "g" }, ct.getDeclaredFields());
- assertBindings(new String[] { "n", "CT" }, ct.getDeclaredMethods());
- assertBindings(new String[] { "f", "g" }, ct.getFields());
- assertBindings(new String[] { "m", "n", "CT", "CT", "~CT", "B", "B", "~B", "operator =", "operator =" },
- ct.getMethods());
- assertBindings(new String[] { "O" }, ct.getNestedClasses());
-
- // class template instance
- ct = getBindingFromASTName("CT<int>", 7);
- assertInstance(ct, ICPPTemplateInstance.class);
- assertBindings(new String[] { "B" }, ct.getBases());
- assertBindings(new String[] { "n", "m", "B", "CT" }, ClassTypeHelper.getAllDeclaredMethods(ct));
- assertBindings(new String[] { "CT", "CT" }, ct.getConstructors());
- assertBindings(new String[] { "g" }, ct.getDeclaredFields());
- assertBindings(new String[] { "n", "CT" }, ct.getDeclaredMethods());
- assertBindings(new String[] { "f", "g" }, ClassTypeHelper.getFields(ct));
- assertBindings(new String[] { "m", "n", "CT", "CT", "~CT", "B", "B", "~B", "operator =", "operator =" },
- ClassTypeHelper.getMethods(ct));
- assertBindings(new String[] { "O" }, ct.getNestedClasses());
-
- // explicit class template instance
- ct = getBindingFromASTName("CT<char>", 8);
- assertInstance(ct, ICPPTemplateInstance.class);
- assertBindings(new String[] { "A" }, ct.getBases());
- assertBindings(new String[] { "o", "l", "A", "CT", "CT" }, ClassTypeHelper.getAllDeclaredMethods(ct));
- assertBindings(new String[] { "CT", "CT", "CT" }, ct.getConstructors());
- assertBindings(new String[] { "h" }, ct.getDeclaredFields());
- assertBindings(new String[] { "o", "CT", "CT" }, ct.getDeclaredMethods());
- assertBindings(new String[] { "e", "h" }, ClassTypeHelper.getFields(ct));
- assertBindings(new String[] { "l", "o", "CT", "CT", "CT", "~CT", "A", "A", "~A", "operator =", "operator =" },
- ClassTypeHelper.getMethods(ct));
- assertBindings(new String[] { "P" }, ct.getNestedClasses());
-
- // class specialization
- ct = getBindingFromASTName("C spec", 1);
- assertInstance(ct, ICPPClassSpecialization.class);
- assertBindings(new String[] { "B" }, ct.getBases());
- assertBindings(new String[] { "n", "m", "B", "C" }, ClassTypeHelper.getAllDeclaredMethods(ct));
- assertBindings(new String[] { "C", "C" }, ct.getConstructors());
- assertBindings(new String[] { "g" }, ct.getDeclaredFields());
- assertBindings(new String[] { "n", "C" }, ct.getDeclaredMethods());
- assertBindings(new String[] { "f", "g" }, ClassTypeHelper.getFields(ct));
- assertBindings(new String[] { "m", "n", "C", "C", "~C", "B", "B", "~B", "operator =", "operator =" },
- ClassTypeHelper.getMethods(ct));
- assertBindings(new String[] { "O" }, ct.getNestedClasses());
-
- // class template specialization
- ct = getBindingFromASTName("CT<int> spect", 2);
- assertInstance(ct, ICPPClassTemplate.class, ICPPClassSpecialization.class);
- assertBindings(new String[] { "B" }, ct.getBases());
- assertBindings(new String[] { "n", "m", "B", "CT" }, ClassTypeHelper.getAllDeclaredMethods(ct));
- assertBindings(new String[] { "CT", "CT" }, ct.getConstructors());
- assertBindings(new String[] { "g" }, ct.getDeclaredFields());
- assertBindings(new String[] { "n", "CT" }, ct.getDeclaredMethods());
- assertBindings(new String[] { "f", "g" }, ClassTypeHelper.getFields(ct));
- assertBindings(new String[] { "m", "n", "CT", "CT", "~CT", "B", "B", "~B", "operator =", "operator =" },
- ClassTypeHelper.getMethods(ct));
- assertBindings(new String[] { "O" }, ct.getNestedClasses());
-
- // explicit class specialization
- ct = getBindingFromASTName("C espec", 1);
- assertInstance(ct, ICPPClassSpecialization.class);
- assertBindings(new String[] { "A" }, ct.getBases());
- assertBindings(new String[] { "o", "l", "A", "C", "C" }, ClassTypeHelper.getAllDeclaredMethods(ct));
- assertBindings(new String[] { "C", "C", "C" }, ct.getConstructors());
- assertBindings(new String[] { "h" }, ct.getDeclaredFields());
- assertBindings(new String[] { "o", "C", "C" }, ct.getDeclaredMethods());
- assertBindings(new String[] { "e", "h" }, ClassTypeHelper.getFields(ct));
- assertBindings(new String[] { "l", "o", "C", "C", "C", "~C", "A", "A", "~A", "operator =", "operator =" },
- ClassTypeHelper.getMethods(ct));
- assertBindings(new String[] { "P" }, ct.getNestedClasses());
-
- // explicit class template specialization
- ct = getBindingFromASTName("CT<int> espect", 7);
- assertInstance(ct, ICPPTemplateInstance.class);
- assertBindings(new String[] { "A" }, ct.getBases());
- assertBindings(new String[] { "o", "l", "A", "CT", "CT" }, ClassTypeHelper.getAllDeclaredMethods(ct));
- assertBindings(new String[] { "CT", "CT", "CT" }, ct.getConstructors());
- assertBindings(new String[] { "h" }, ct.getDeclaredFields());
- assertBindings(new String[] { "o", "CT", "CT" }, ct.getDeclaredMethods());
- assertBindings(new String[] { "e", "h" }, ClassTypeHelper.getFields(ct));
- assertBindings(new String[] { "l", "o", "CT", "CT", "CT", "~CT", "A", "A", "~A", "operator =", "operator =" },
- ClassTypeHelper.getMethods(ct));
- assertBindings(new String[] { "P" }, ct.getNestedClasses());
- }
-
- // void func(const int* x) {}
-
- // void func(int* p) {
- // const int* q = p;
- // func(q);
- // }
- public void testOverloadedFunctionFromIndex_256240() throws Exception {
- getBindingFromASTName("func(q", 4, ICPPFunction.class);
- }
-
- // class A {
- // class B;
- // };
- // class A::B {
- // void m();
- // };
-
- // void A::B::m() {}
- public void testNestedClasses_259683() throws Exception {
- getBindingFromASTName("A::B::m", 7, ICPPMethod.class);
- }
-
- // namespace ns {
- // struct S {
- // int a;
- // };
- // }
- // class A {
- // public:
- // template<typename T> operator T*(){return 0;};
- // };
-
- // namespace ns {
- // void bla() {
- // A a;
- // a.operator S *();
- // }
- // }
- public void testLookupScopeForConversionNames_267221() throws Exception {
- getBindingFromASTName("operator S *", 12, ICPPMethod.class);
- }
-
- private void assertBindings(String[] expected, ICPPBase[] bases) throws DOMException {
- IBinding[] bindings = new IBinding[bases.length];
- for (int i = 0; i < bindings.length; i++) {
- bindings[i] = bases[i].getBaseClass();
- }
- assertBindings(expected, bindings);
- }
-
- private void assertBindings(String[] expected, IBinding[] binding) {
- String[] actual = new String[binding.length];
- for (int i = 0; i < actual.length; i++) {
- actual[i] = binding[i].getName();
- }
- Arrays.sort(actual);
- Arrays.sort(expected);
- assertEquals(toString(expected), toString(actual));
- }
-
- private String toString(String[] actual) {
- StringBuilder buf = new StringBuilder();
- buf.append('{');
- boolean isFirst = true;
- for (String val : actual) {
- if (!isFirst) {
- buf.append(',');
- }
- buf.append(val);
- isFirst = false;
- }
- buf.append('}');
- return buf.toString();
- }
-
- // class Derived;
- // class X {
- // Derived* d;
- // };
- // class Base {};
- // void useBase(Base* b);
-
- // class Derived : Base {};
- // void test() {
- // X x;
- // useBase(x.d);
- // }
- public void testLateDefinitionOfInheritance_292749() throws Exception {
- getBindingFromFirstIdentifier("useBase(x.d)", ICPPFunction.class);
- }
-
- // namespace one {
- // void fx();
- // void fx(int);
- // void fx(int, int);
- // }
- // namespace two {
- // using one::fx;
- // }
-
- // void test() {
- // two::fx();
- // two::fx(1);
- // two::fx(1,1);
- // }
- public void testUsingDeclaration_300019() throws Exception {
- getBindingFromASTName("fx();", 2, ICPPFunction.class);
- getBindingFromASTName("fx(1);", 2, ICPPFunction.class);
- getBindingFromASTName("fx(1,1);", 2, ICPPFunction.class);
- }
-
- // struct YetAnotherTest {
- // void test();
- // friend class InnerClass3;
- // class InnerClass3 {
- // void f() {
- // member=0;
- // }
- // int member;
- // };
- // InnerClass3 arr[32];
- // };
-
- // void YetAnotherTest::test() {
- // arr[0].member=0;
- // }
- public void testElaboratedTypeSpecifier_303739() throws Exception {
- getBindingFromASTName("member=0", -2, ICPPField.class);
- }
-
- // typedef int xxx::* MBR_PTR;
-
- // void test() {
- // MBR_PTR x;
- // }
- public void testProblemInIndexBinding_317146() throws Exception {
- ITypedef td = getBindingFromASTName("MBR_PTR", 0, ITypedef.class);
- ICPPPointerToMemberType ptrMbr = (ICPPPointerToMemberType) td.getType();
- IType t = ptrMbr.getMemberOfClass();
- assertInstance(t, ISemanticProblem.class);
- }
-
- // void f255(
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int);
- // void f256(
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
- // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int);
-
- // void test() {
- // f255(
- // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
- // f256(
- // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
- // }
- public void testFunctionsWithManyParameters_319186() throws Exception {
- getBindingFromASTName("f255", 0);
- getBindingFromASTName("f256", 0);
- }
-
- // void f(char16_t x);
- // void f(char32_t x);
-
- // void test() {
- // char16_t c16;
- // char32_t c32;
- // f(c16); f(c32);
- // }
- public void testChar16_319186() throws Exception {
- IFunction f = getBindingFromASTName("f(c16)", 1);
- assertEquals("char16_t", ASTTypeUtil.getType(f.getType().getParameterTypes()[0]));
-
- f = getBindingFromASTName("f(c32)", 1);
- assertEquals("char32_t", ASTTypeUtil.getType(f.getType().getParameterTypes()[0]));
- }
-
- // namespace ns {
- // extern int* var;
- // void fun();
- // typedef int Type;
- // }
- // using ns::var;
- // using ns::fun;
- // using ns::Type;
-
- // using namespace ::ns;
- // void sabel() {
- // var = 0;
- // fun();
- // Type x;
- // }
- public void test_326778() throws Exception {
- IVariable v = getBindingFromASTName("var", 0);
- IFunction f = getBindingFromASTName("fun", 0);
- ITypedef t = getBindingFromASTName("Type", 0);
- }
-
- // struct base {
- // virtual void operator+(base const &) {}
- // virtual void operator-(base const &) {}
- // };
-
- // struct inter : public base {
- // virtual void operator+(base const &) {}
- // };
- // struct sub : public inter {
- // void doSomething() {
- // base *left, *right;
- //
- // *left + *right;
- // *left - *right;
- // }
- // };
- public void test_356982() throws Exception {
- IASTName name = findName("+ ", 1);
- assertTrue(name instanceof IASTImplicitName);
- assertEquals("base", name.resolveBinding().getOwner().getName());
-
- name = findName("- ", 1);
- assertTrue(name instanceof IASTImplicitName);
- assertEquals("base", name.resolveBinding().getOwner().getName());
- }
-
- // class A {};
-
- // void waldo(A p) {}
- //
- // namespace ns {
- //
- // void waldo() {}
- //
- // void test(A a) {
- // waldo(a);
- // }
- //
- // }
- public void test_457503() throws Exception {
- checkBindings();
- }
-
- // class A {
- // class B;
- // };
-
- // class D : public A {};
- // class D::B {};
- public void testInvalidOwner_412766() throws Exception {
- getProblemFromFirstIdentifier("B {}");
- }
-
- // template <class T>
- // struct A {
- // };
- //
- // template <class U>
- // struct B : public A<typename U::t> {
- // };
- //
- // template <typename T>
- // struct C {
- // typedef T t;
- // void waldo(A<t>* p);
- // };
-
- // struct E {
- // void test() {
- // waldo(new B<E>());
- // }
- // };
- public void testTemplateArgumentResolution_450888() throws Exception {
- getProblemFromFirstIdentifier("waldo"); // waldo is unresolved because E doesn't extend C.
- IASTTranslationUnit ast = strategy.getAst(0);
- ITranslationUnit tu = ast.getOriginatingTranslationUnit();
- IWorkingCopy workingCopy = tu.getWorkingCopy();
- IBuffer buffer = workingCopy.getBuffer();
- buffer.setContents(buffer.getContents().replace("E {", "E : public C<int> {"));
- // Release and re-acquire the index lock to clear the caches.
- getIndex().releaseReadLock();
- getIndex().acquireReadLock();
- ast = workingCopy.getAST(strategy.getIndex(), ITranslationUnit.AST_SKIP_INDEXED_HEADERS);
- checkBindings(ast);
- }
-}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPBindingResolutionBugsSingleProjectFirstAST.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPBindingResolutionBugsSingleProjectFirstAST.java
deleted file mode 100644
index dc8a280a747..00000000000
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPBindingResolutionBugsSingleProjectFirstAST.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 Wind River Systems, Inc. and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Markus Schorn - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.internal.index.tests;
-
-import junit.framework.TestSuite;
-
-public class IndexCPPBindingResolutionBugsSingleProjectFirstAST extends IndexCPPBindingResolutionBugs {
- public IndexCPPBindingResolutionBugsSingleProjectFirstAST() {
- setStrategy(new SinglePDOMTestFirstASTStrategy(true));
- }
-
- public static TestSuite suite() {
- return suite(IndexCPPBindingResolutionBugsSingleProjectFirstAST.class);
- }
-
- /* Invalid tests for this strategy, they assume that the second file is already indexed. */
- @Override
- public void test_208558() {
- }
-
- @Override
- public void test_176708_CCE() {
- }
-
- @Override
- public void testIsSameAnonymousType_193962() {
- }
-
- @Override
- public void testIsSameNestedAnonymousType_193962() {
- }
-
- /* For some unknown reason this test is flaky for this strategy. */
- @Override
- public void testTemplateArgumentResolution_450888() {
- }
-} \ No newline at end of file
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPBindingResolutionBugsSingleProjectFirstASTTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPBindingResolutionBugsSingleProjectFirstASTTest.java
new file mode 100644
index 00000000000..df0645588a4
--- /dev/null
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPBindingResolutionBugsSingleProjectFirstASTTest.java
@@ -0,0 +1,48 @@
+/*******************************************************************************
+ * Copyright (c) 2009, 2014 Wind River Systems, Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Markus Schorn - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.internal.index.tests;
+
+import junit.framework.TestSuite;
+
+public class IndexCPPBindingResolutionBugsSingleProjectFirstASTTest extends IndexCPPBindingResolutionBugsTest {
+ public IndexCPPBindingResolutionBugsSingleProjectFirstASTTest() {
+ setStrategy(new SinglePDOMTestFirstASTStrategy(true));
+ }
+
+ public static TestSuite suite() {
+ return suite(IndexCPPBindingResolutionBugsSingleProjectFirstASTTest.class);
+ }
+
+ /* Invalid tests for this strategy, they assume that the second file is already indexed. */
+ @Override
+ public void test_208558() {
+ }
+
+ @Override
+ public void test_176708_CCE() {
+ }
+
+ @Override
+ public void testIsSameAnonymousType_193962() {
+ }
+
+ @Override
+ public void testIsSameNestedAnonymousType_193962() {
+ }
+
+ /* For some unknown reason this test is flaky for this strategy. */
+ @Override
+ public void testTemplateArgumentResolution_450888() {
+ }
+} \ No newline at end of file
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPBindingResolutionBugsTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPBindingResolutionBugsTest.java
new file mode 100644
index 00000000000..75c2e29af3c
--- /dev/null
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPBindingResolutionBugsTest.java
@@ -0,0 +1,1400 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2015 Wind River Systems, Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Markus Schorn - initial API and implementation
+ * Andrew Ferguson (Symbian)
+ * Sergey Prigogin (Google)
+ *******************************************************************************/
+package org.eclipse.cdt.internal.index.tests;
+
+import java.util.Arrays;
+import java.util.regex.Pattern;
+
+import org.eclipse.cdt.core.dom.ast.ASTTypeUtil;
+import org.eclipse.cdt.core.dom.ast.DOMException;
+import org.eclipse.cdt.core.dom.ast.IASTImplicitName;
+import org.eclipse.cdt.core.dom.ast.IASTName;
+import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
+import org.eclipse.cdt.core.dom.ast.IBinding;
+import org.eclipse.cdt.core.dom.ast.ICompositeType;
+import org.eclipse.cdt.core.dom.ast.IEnumeration;
+import org.eclipse.cdt.core.dom.ast.IField;
+import org.eclipse.cdt.core.dom.ast.IFunction;
+import org.eclipse.cdt.core.dom.ast.IParameter;
+import org.eclipse.cdt.core.dom.ast.IPointerType;
+import org.eclipse.cdt.core.dom.ast.IScope;
+import org.eclipse.cdt.core.dom.ast.ISemanticProblem;
+import org.eclipse.cdt.core.dom.ast.IType;
+import org.eclipse.cdt.core.dom.ast.ITypedef;
+import org.eclipse.cdt.core.dom.ast.IVariable;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPBase;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassScope;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassSpecialization;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassTemplate;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassType;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPField;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPFunction;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPFunctionType;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPMethod;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPNamespace;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPNamespaceScope;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPPointerToMemberType;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPSpecialization;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateArgument;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateDefinition;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateInstance;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateParameter;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateParameterMap;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPVariable;
+import org.eclipse.cdt.core.index.IIndex;
+import org.eclipse.cdt.core.index.IIndexBinding;
+import org.eclipse.cdt.core.index.IIndexMacro;
+import org.eclipse.cdt.core.index.IndexFilter;
+import org.eclipse.cdt.core.model.IBuffer;
+import org.eclipse.cdt.core.model.ITranslationUnit;
+import org.eclipse.cdt.core.model.IWorkingCopy;
+import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPTemplateTypeArgument;
+import org.eclipse.cdt.internal.core.dom.parser.cpp.ClassTypeHelper;
+import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPInstanceCache;
+
+import junit.framework.TestSuite;
+
+/**
+ * For testing PDOM binding resolution
+ */
+public abstract class IndexCPPBindingResolutionBugsTest extends IndexBindingResolutionTestBase {
+
+ public static class SingleProjectTest extends IndexCPPBindingResolutionBugsTest {
+ public SingleProjectTest() {
+ setStrategy(new SinglePDOMTestStrategy(true));
+ }
+
+ public static TestSuite suite() {
+ return suite(SingleProjectTest.class);
+ }
+ }
+
+ public static class ProjectWithDepProjTest extends IndexCPPBindingResolutionBugsTest {
+ public ProjectWithDepProjTest() {
+ setStrategy(new ReferencedProject(true));
+ }
+
+ public static TestSuite suite() {
+ return suite(ProjectWithDepProjTest.class);
+ }
+ }
+
+ public static void addTests(TestSuite suite) {
+ suite.addTest(IndexCPPBindingResolutionBugsSingleProjectFirstASTTest.suite());
+ suite.addTest(SingleProjectTest.suite());
+ suite.addTest(ProjectWithDepProjTest.suite());
+ }
+
+ public static TestSuite suite() {
+ return suite(IndexCPPBindingResolutionBugsTest.class);
+ }
+
+ public IndexCPPBindingResolutionBugsTest() {
+ setStrategy(new SinglePDOMTestStrategy(true));
+ }
+
+ // #define OBJ void foo()
+ // #define FUNC() void bar()
+ // #define FUNC2(A) void baz()
+
+ // OBJ {}
+ // FUNC() {}
+ // FUNC2(1) {}
+ public void test_208558() throws Exception {
+ IIndex index = getIndex();
+
+ IIndexMacro[] macrosA = index.findMacros("OBJ".toCharArray(), IndexFilter.ALL, npm());
+ IIndexMacro[] macrosB = index.findMacros("FUNC".toCharArray(), IndexFilter.ALL, npm());
+ IIndexMacro[] macrosC = index.findMacros("FUNC2".toCharArray(), IndexFilter.ALL, npm());
+
+ assertEquals(1, macrosA.length);
+ assertEquals(1, macrosB.length);
+ assertEquals(1, macrosC.length);
+ IIndexMacro obj = macrosA[0];
+ IIndexMacro func = macrosB[0];
+ IIndexMacro func2 = macrosC[0];
+
+ assertEquals("OBJ", new String(obj.getName()));
+ assertEquals("FUNC", new String(func.getName()));
+ assertEquals("FUNC2", new String(func2.getName()));
+
+ assertEquals("void foo()", new String(obj.getExpansionImage()));
+ assertEquals("void bar()", new String(func.getExpansionImage()));
+ assertEquals("void baz()", new String(func2.getExpansionImage()));
+
+ assertEquals("OBJ", new String(obj.getName()));
+ assertNull(obj.getParameterList());
+
+ assertEquals("FUNC", new String(func.getName()));
+ assertEquals(0, func.getParameterList().length);
+
+ assertEquals("FUNC2", new String(func2.getName()));
+ assertEquals(1, func2.getParameterList().length);
+ assertEquals("A", new String(func2.getParameterList()[0]));
+
+ IIndexBinding[] bindings = index.findBindings(Pattern.compile(".*"), false, IndexFilter.ALL, npm());
+ assertEquals(3, bindings.length);
+
+ IIndexBinding foo = index.findBindings("foo".toCharArray(), IndexFilter.ALL, npm())[0];
+ IIndexBinding bar = index.findBindings("bar".toCharArray(), IndexFilter.ALL, npm())[0];
+ IIndexBinding baz = index.findBindings("baz".toCharArray(), IndexFilter.ALL, npm())[0];
+
+ assertEquals("foo", foo.getName());
+ assertEquals("bar", bar.getName());
+ assertEquals("baz", baz.getName());
+ assertInstance(foo, ICPPFunction.class);
+ assertInstance(bar, ICPPFunction.class);
+ assertInstance(baz, ICPPFunction.class);
+ }
+
+ // template <class T>
+ // inline void testTemplate(T& aRef);
+ //
+ // class Temp {
+ // };
+
+ // void main(void) {
+ // Temp testFile;
+ // testTemplate(testFile);
+ // }
+ public void test_207320() {
+ IBinding b0 = getBindingFromASTName("testTemplate(", 12);
+ assertInstance(b0, ICPPFunction.class);
+ assertInstance(b0, ICPPTemplateInstance.class);
+ }
+
+ // class testdef{
+ //
+ // public:
+ // void testagain();
+ // };
+ //
+ // typedef void TAny;
+ //
+ // inline void testCall(TAny* aExpected){}
+ //
+ // testdef* global_cBase;
+ // testdef*& global_cBaseRef = global_cBase;
+
+ // int main(void)
+ // {
+ // testdef* local_cBase;
+ // testdef*& local_cBaseRef = local_cBase;
+ //
+ // testCall( /*1*/ (void *) local_cBase);
+ // testCall( /*2*/ local_cBase);
+ //
+ // testCall( /*3*/ (void *) local_cBaseRef);
+ // testCall( /*4*/ local_cBaseRef);
+ //
+ // testCall( /*5*/ (void *) global_cBase);
+ // testCall( /*6*/ global_cBase);
+ //
+ // testCall( /*7*/ (void *)global_cBaseRef);
+ // testCall( /*8*/ global_cBaseRef);
+ // }
+ public void test_206187() throws Exception {
+ IBinding b1 = getBindingFromASTName("testCall( /*1*/", 8);
+ IBinding b2 = getBindingFromASTName("testCall( /*2*/", 8);
+ IBinding b3 = getBindingFromASTName("testCall( /*3*/", 8);
+ IBinding b4 = getBindingFromASTName("testCall( /*4*/", 8);
+ IBinding b5 = getBindingFromASTName("testCall( /*5*/", 8);
+ IBinding b6 = getBindingFromASTName("testCall( /*6*/", 8);
+ IBinding b7 = getBindingFromASTName("testCall( /*7*/", 8);
+ IBinding b8 = getBindingFromASTName("testCall( /*8*/", 8);
+ }
+
+ // template<typename T1>
+ // class A {};
+ //
+ // template<typename T2>
+ // class B : public A<T2> {};
+ //
+ // class C {};
+ //
+ // B<C> b;
+
+ // void foo() {C c; B<int> b;}
+ public void test_188274() throws Exception {
+ IBinding b0 = getBindingFromASTName("C", 1);
+ IBinding b1 = getBindingFromASTName("B", 1);
+ assertInstance(b0, ICPPClassType.class);
+ assertInstance(b1, ICPPClassType.class);
+ assertInstance(b1, ICPPClassTemplate.class);
+ assertInstance(b1, ICPPInstanceCache.class);
+
+ ICPPInstanceCache ct = (ICPPInstanceCache) b1;
+ ICPPSpecialization inst = ct
+ .getInstance(new ICPPTemplateArgument[] { new CPPTemplateTypeArgument((IType) b0) });
+ assertInstance(inst, ICPPClassType.class);
+ ICPPClassType c2t = (ICPPClassType) inst;
+ ICPPBase[] bases = c2t.getBases();
+ assertEquals(1, bases.length);
+ assertInstance(bases[0].getBaseClass(), ICPPClassType.class);
+ }
+
+ // namespace ns {class A{};}
+
+ // ns::A a;
+ // class B {};
+ public void test_188324() throws Exception {
+ IASTName name = findName("B", 1);
+ IBinding b0 = getBindingFromASTName("ns::A", 2);
+ assertInstance(b0, ICPPNamespace.class);
+ ICPPNamespace ns = (ICPPNamespace) b0;
+ assertEquals(0, ns.getNamespaceScope().getBindings(name, false, false).length);
+ }
+
+ // template<typename T>
+ // class C : public C<T> {};
+
+ // void foo() {
+ // C<int>::unresolvable();
+ // };
+ public void test_185828() throws Exception {
+ // Bug 185828 reports a StackOverflowException is thrown before we get here.
+ // That the SOE is thrown is detected in BaseTestCase via an Error IStatus
+
+ IBinding b0 = getBindingFromASTName("C<int>", 1);
+ IBinding b1 = getBindingFromASTName("C<int>", 6);
+ IBinding b2 = getProblemFromASTName("unresolvable", 12);
+
+ assertInstance(b0, ICPPClassType.class);
+ assertInstance(b0, ICPPClassTemplate.class);
+
+ assertInstance(b1, ICPPClassType.class);
+ assertInstance(b1, ICPPSpecialization.class);
+ }
+
+ // class MyClass {
+ // public:
+ // template<class T>
+ // T* MopGetObject(T*& aPtr)
+ // { return 0; }
+ //
+ //
+ // template<class T>
+ // T* MopGetObjectNoChaining(T*& aPtr)
+ // { return 0; }
+ //
+ // };
+
+ // int main() {
+ // MyClass* cls= new MyClass();
+ // }
+ public void test_184216() throws Exception {
+ IBinding b0 = getBindingFromASTName("MyClass*", 7);
+ assertInstance(b0, ICPPClassType.class);
+ ICPPClassType ct = (ICPPClassType) b0;
+ ICPPMethod[] ms = ct.getDeclaredMethods(); // 184216 reports CCE thrown
+ assertEquals(2, ms.length);
+ assertInstance(ms[0], ICPPTemplateDefinition.class);
+ assertInstance(ms[1], ICPPTemplateDefinition.class);
+ }
+
+ // class cl;
+ // typedef cl* t1;
+ // typedef t1 t2;
+
+ // void func(t2 a);
+ // void func(int b);
+ // void ref() {
+ // cl* a;
+ // func(a);
+ // }
+ public void test_166954() {
+ IBinding b0 = getBindingFromASTName("func(a)", 4);
+ }
+
+ // class Base {
+ // public:
+ // void foo(int i);
+ // int fooint();
+ // char* fooovr();
+ // char* fooovr(int a);
+ // char* fooovr(char x);
+ // };
+
+ // void Base::foo(int i) {}
+ // int Base::fooint() {return 0;}
+ // char* Base::fooovr() {return 0;}
+ // char* Base::fooovr(int a) {return 0;}
+ // char* Base::fooovr(char x) {return 0;}
+ //
+ // void refs() {
+ // Base b;
+ // b.foo(1);
+ // b.fooint();
+ // b.fooovr();
+ // b.fooovr(1);
+ // b.fooovr('a');
+ // }
+ public void test_168020() {
+ getBindingFromASTName("foo(int i)", 3);
+ getBindingFromASTName("fooint()", 6);
+ getBindingFromASTName("fooovr()", 6);
+ getBindingFromASTName("fooovr(int", 6);
+ getBindingFromASTName("fooovr(char", 6);
+
+ getBindingFromASTName("foo(1)", 3);
+ getBindingFromASTName("fooint();", 6);
+ getBindingFromASTName("fooovr();", 6);
+ getBindingFromASTName("fooovr(1", 6);
+ getBindingFromASTName("fooovr('", 6);
+ }
+
+ // class Base {
+ // public:
+ // void foo(int i);
+ // int foo2(int i);
+ // };
+ //
+ // void func(int k);
+ // void func2(int i);
+
+ // void Base::foo(int i) {
+ // i=2;
+ // }
+ // int Base::foo2(int j) {
+ // j=2;
+ // }
+ // void func(int k) {
+ // k=2;
+ // }
+ // void func2(int l) {
+ // l=2;
+ // }
+ public void test_168054() {
+ getBindingFromASTName("i=2", 1);
+ getBindingFromASTName("j=2", 1);
+ getBindingFromASTName("k=2", 1);
+ getBindingFromASTName("l=2", 1);
+ }
+
+ // namespace X {}
+
+ // namespace Y {
+ // class Ambiguity {};
+ // enum Ambiguity {A1,A2,A3};
+ // void foo() {
+ // Ambiguity problem;
+ // }
+ // }
+ public void test_176708_CCE() throws Exception {
+ IBinding binding = getBindingFromASTName("Y {", 1);
+ assertTrue(binding instanceof ICPPNamespace);
+ ICPPNamespace adapted = (ICPPNamespace) strategy.getIndex().adaptBinding(binding);
+ IASTName name = findName("Ambiguity problem", 9);
+ assertNotNull(name);
+ IBinding binding2 = adapted.getNamespaceScope().getBinding(name, true);
+ }
+
+ // namespace X {int i;}
+
+ // int a= X::i;
+ public void test_176708_NPE() throws Exception {
+ IBinding binding = getBindingFromASTName("i;", 1);
+ assertTrue(binding instanceof ICPPVariable);
+ IScope scope = binding.getScope();
+ }
+
+ // template<class T, class U, class V>
+ // class A {};
+
+ // template<>
+ // class A<int, bool, double> {};
+ public void test_180784() throws Exception {
+ IBinding b0 = getBindingFromASTName("A<int, bool, double> {};", 20);
+ assertInstance(b0, ICPPSpecialization.class);
+ ICPPSpecialization s = (ICPPSpecialization) b0;
+ IBinding b1 = s.getSpecializedBinding();
+ assertInstance(b1, ICPPClassTemplate.class);
+ ICPPClassTemplate t = (ICPPClassTemplate) b1;
+ ICPPTemplateParameter[] ps = t.getTemplateParameters();
+ assertNotNull(ps);
+ assertEquals(3, ps.length);
+ ICPPTemplateParameterMap map = s.getTemplateParameterMap();
+ assertNotNull(map.getArgument(ps[0]));
+ assertNotNull(map.getArgument(ps[1]));
+ assertNotNull(map.getArgument(ps[2]));
+ }
+
+ // class A{};
+ //
+ // template<typename T>
+ // T id (T t) {return t;}
+ //
+ // template<>
+ // A id (A a) {return a;}
+ //
+ // int id(int x) {return x;}
+
+ // void foo() {
+ // id(*new A());
+ // id(6);
+ // }
+ public void test_180948() throws Exception {
+ // Main check occurs in BaseTestCase - that no ClassCastException
+ // is thrown during indexing
+ IBinding b0 = getBindingFromASTName("id(*", 2);
+ IBinding b1 = getBindingFromASTName("id(6", 2);
+ }
+
+ // void func1(void);
+
+ // int main(void) {
+ // void* v= func1;
+ // }
+ public void test_181735() throws DOMException {
+ IBinding b0 = getBindingFromASTName("func1;", 5);
+ assertTrue(b0 instanceof IFunction);
+ }
+
+ // class B {
+ // public:
+ // class BB {
+ // public:
+ // int field;
+ // };
+ // };
+ //
+ // class A : public B::BB {};
+
+ // void foo() {
+ // A c;
+ // c.field;//comment
+ // }
+ public void test_183843() throws DOMException {
+ IBinding b0 = getBindingFromASTName("field;//", 5);
+ assertTrue(b0 instanceof ICPPField);
+ }
+
+ // typedef struct {
+ // int utm;
+ // } usertype;
+ // void func(usertype t);
+
+ // void test() {
+ // usertype ut;
+ // func(ut);
+ // }
+ public void testFuncWithTypedefForAnonymousStruct_190730() throws Exception {
+ IBinding b0 = getBindingFromASTName("func(", 4);
+ assertTrue(b0 instanceof IFunction);
+ IFunction f = (IFunction) b0;
+ IParameter[] pars = f.getParameters();
+ assertEquals(1, pars.length);
+ IType type = pars[0].getType();
+ assertTrue(type instanceof ITypedef);
+ type = ((ITypedef) type).getType();
+ assertTrue(type instanceof ICPPClassType);
+ }
+
+ // typedef enum {
+ // eItem
+ // } userEnum;
+ // void func(userEnum t);
+
+ // void test() {
+ // userEnum ut;
+ // func(ut);
+ // }
+ public void testFuncWithTypedefForAnonymousEnum_190730() throws Exception {
+ IBinding b0 = getBindingFromASTName("func(", 4);
+ assertTrue(b0 instanceof IFunction);
+ IFunction f = (IFunction) b0;
+ IParameter[] pars = f.getParameters();
+ assertEquals(1, pars.length);
+ IType type = pars[0].getType();
+ assertTrue(type instanceof ITypedef);
+ type = ((ITypedef) type).getType();
+ assertTrue(type instanceof IEnumeration);
+ }
+
+ // // no header needed
+
+ // typedef class {
+ // int member;
+ // } t_class;
+ // typedef struct {
+ // int member;
+ // } t_struct;
+ // typedef union {
+ // int member;
+ // } t_union;
+ // typedef enum {
+ // ei
+ // } t_enum;
+ public void testIsSameAnonymousType_193962() throws DOMException {
+ // class
+ IBinding tdAST = getBindingFromASTName("t_class;", 7);
+ assertFalse(tdAST instanceof IIndexBinding);
+ IBinding tdIndex = strategy.getIndex().adaptBinding(tdAST);
+ assertTrue(tdIndex instanceof IIndexBinding);
+ assertTrue(tdAST instanceof ITypedef);
+ assertTrue(tdIndex instanceof ITypedef);
+
+ IType tAST = ((ITypedef) tdAST).getType();
+ IType tIndex = ((ITypedef) tdIndex).getType();
+ assertTrue(tAST instanceof ICompositeType);
+ assertTrue(tIndex instanceof ICompositeType);
+ assertTrue(tAST.isSameType(tIndex));
+ assertTrue(tIndex.isSameType(tAST));
+
+ // struct
+ tdAST = getBindingFromASTName("t_struct;", 8);
+ assertFalse(tdAST instanceof IIndexBinding);
+ tdIndex = strategy.getIndex().adaptBinding(tdAST);
+ assertTrue(tdIndex instanceof IIndexBinding);
+ assertTrue(tdAST instanceof ITypedef);
+ assertTrue(tdIndex instanceof ITypedef);
+
+ tAST = ((ITypedef) tdAST).getType();
+ tIndex = ((ITypedef) tdIndex).getType();
+ assertTrue(tAST instanceof ICompositeType);
+ assertTrue(tIndex instanceof ICompositeType);
+ assertTrue(tAST.isSameType(tIndex));
+ assertTrue(tIndex.isSameType(tAST));
+
+ // union
+ tdAST = getBindingFromASTName("t_union;", 7);
+ assertFalse(tdAST instanceof IIndexBinding);
+ tdIndex = strategy.getIndex().adaptBinding(tdAST);
+ assertTrue(tdIndex instanceof IIndexBinding);
+ assertTrue(tdAST instanceof ITypedef);
+ assertTrue(tdIndex instanceof ITypedef);
+
+ tAST = ((ITypedef) tdAST).getType();
+ tIndex = ((ITypedef) tdIndex).getType();
+ assertTrue(tAST instanceof ICompositeType);
+ assertTrue(tIndex instanceof ICompositeType);
+ assertTrue(tAST.isSameType(tIndex));
+ assertTrue(tIndex.isSameType(tAST));
+
+ // enum
+ tdAST = getBindingFromASTName("t_enum;", 6);
+ assertFalse(tdAST instanceof IIndexBinding);
+ tdIndex = strategy.getIndex().adaptBinding(tdAST);
+ assertTrue(tdIndex instanceof IIndexBinding);
+ assertTrue(tdAST instanceof ITypedef);
+ assertTrue(tdIndex instanceof ITypedef);
+
+ tAST = ((ITypedef) tdAST).getType();
+ tIndex = ((ITypedef) tdIndex).getType();
+ assertTrue(tAST instanceof IEnumeration);
+ assertTrue(tIndex instanceof IEnumeration);
+ assertTrue(tAST.isSameType(tIndex));
+ assertTrue(tIndex.isSameType(tAST));
+ }
+
+ // // no header needed
+
+ // namespace ns {
+ // typedef class {
+ // int member;
+ // } t_class;
+ // typedef struct {
+ // int member;
+ // } t_struct;
+ // typedef union {
+ // int member;
+ // } t_union;
+ // typedef enum {
+ // ei
+ // } t_enum;
+ // };
+ public void testIsSameNestedAnonymousType_193962() throws DOMException {
+ // class
+ IBinding tdAST = getBindingFromASTName("t_class;", 7);
+ assertFalse(tdAST instanceof IIndexBinding);
+ IBinding tdIndex = strategy.getIndex().adaptBinding(tdAST);
+ assertTrue(tdIndex instanceof IIndexBinding);
+ assertTrue(tdAST instanceof ITypedef);
+ assertTrue(tdIndex instanceof ITypedef);
+
+ IType tAST = ((ITypedef) tdAST).getType();
+ IType tIndex = ((ITypedef) tdIndex).getType();
+ assertTrue(tAST instanceof ICompositeType);
+ assertTrue(tIndex instanceof ICompositeType);
+ assertTrue(tAST.isSameType(tIndex));
+ assertTrue(tIndex.isSameType(tAST));
+
+ // struct
+ tdAST = getBindingFromASTName("t_struct;", 8);
+ assertFalse(tdAST instanceof IIndexBinding);
+ tdIndex = strategy.getIndex().adaptBinding(tdAST);
+ assertTrue(tdIndex instanceof IIndexBinding);
+ assertTrue(tdAST instanceof ITypedef);
+ assertTrue(tdIndex instanceof ITypedef);
+
+ tAST = ((ITypedef) tdAST).getType();
+ tIndex = ((ITypedef) tdIndex).getType();
+ assertTrue(tAST instanceof ICompositeType);
+ assertTrue(tIndex instanceof ICompositeType);
+ assertTrue(tAST.isSameType(tIndex));
+ assertTrue(tIndex.isSameType(tAST));
+
+ // union
+ tdAST = getBindingFromASTName("t_union;", 7);
+ assertFalse(tdAST instanceof IIndexBinding);
+ tdIndex = strategy.getIndex().adaptBinding(tdAST);
+ assertTrue(tdIndex instanceof IIndexBinding);
+ assertTrue(tdAST instanceof ITypedef);
+ assertTrue(tdIndex instanceof ITypedef);
+
+ tAST = ((ITypedef) tdAST).getType();
+ tIndex = ((ITypedef) tdIndex).getType();
+ assertTrue(tAST instanceof ICompositeType);
+ assertTrue(tIndex instanceof ICompositeType);
+ assertTrue(tAST.isSameType(tIndex));
+ assertTrue(tIndex.isSameType(tAST));
+
+ // enum
+ tdAST = getBindingFromASTName("t_enum;", 6);
+ assertFalse(tdAST instanceof IIndexBinding);
+ tdIndex = strategy.getIndex().adaptBinding(tdAST);
+ assertTrue(tdIndex instanceof IIndexBinding);
+ assertTrue(tdAST instanceof ITypedef);
+ assertTrue(tdIndex instanceof ITypedef);
+
+ tAST = ((ITypedef) tdAST).getType();
+ tIndex = ((ITypedef) tdIndex).getType();
+ assertTrue(tAST instanceof IEnumeration);
+ assertTrue(tIndex instanceof IEnumeration);
+ assertTrue(tAST.isSameType(tIndex));
+ assertTrue(tIndex.isSameType(tAST));
+ }
+
+ // namespace FOO {
+ // namespace BAR {
+ // class Bar;
+ // }
+ // class Foo {
+ // BAR::Bar * Test(BAR::Bar * bar);
+ // };
+ // }
+
+ // namespace FOO {
+ // using BAR::Bar;
+ //
+ // Bar* Foo::Test(Bar* pBar) {
+ // return pBar;
+ // }
+ // }
+ public void testAdvanceUsingDeclaration_217102() throws Exception {
+ IBinding cl = getBindingFromASTName("Bar* Foo", 3);
+
+ assertEquals("Bar", cl.getName());
+ assertTrue(cl instanceof ICPPClassType);
+ assertEquals("BAR", cl.getScope().getScopeName().toString());
+
+ cl = getBindingFromASTName("Bar* pBar", 3);
+ assertEquals("Bar", cl.getName());
+ assertTrue(cl instanceof ICPPClassType);
+ assertEquals("BAR", cl.getScope().getScopeName().toString());
+ }
+
+ // struct outer {
+ // union {
+ // int var1;
+ // };
+ // };
+
+ // void test() {
+ // struct outer x;
+ // x.var1=1;
+ // }
+ public void testAnonymousUnion_216791() throws DOMException {
+ // struct
+ IBinding b = getBindingFromASTName("var1=", 4);
+ assertTrue(b instanceof IField);
+ IField f = (IField) b;
+ IScope outer = f.getCompositeTypeOwner().getScope();
+ assertTrue(outer instanceof ICPPClassScope);
+ assertEquals("outer", outer.getScopeName().toString());
+ }
+
+ // union outer {
+ // struct {
+ // int var1;
+ // };
+ // struct {
+ // int var2;
+ // } hide;
+ // };
+
+ // void test() {
+ // union outer x;
+ // x.var1=1;
+ // x.var2= 2; // must be a problem
+ // }
+ public void testAnonymousStruct_216791() throws DOMException {
+ // struct
+ IBinding b = getBindingFromASTName("var1=", 4);
+ assertTrue(b instanceof IField);
+ IField f = (IField) b;
+ IScope outer = f.getCompositeTypeOwner().getScope();
+ assertTrue(outer instanceof ICPPClassScope);
+ assertEquals("outer", outer.getScopeName().toString());
+
+ getProblemFromASTName("var2=", 4);
+ }
+
+ // namespace ns {
+ // int v;
+ // };
+ // using namespace ns;
+
+ // void test() {
+ // v=1;
+ // }
+ public void testUsingDirective_216527() throws Exception {
+ IBinding b = getBindingFromASTName("v=", 1);
+ assertTrue(b instanceof IVariable);
+ IVariable v = (IVariable) b;
+ IScope scope = v.getScope();
+ assertTrue(scope instanceof ICPPNamespaceScope);
+ assertEquals("ns", scope.getScopeName().toString());
+ }
+
+ // namespace NSA {
+ // int a;
+ // }
+ // namespace NSB {
+ // int b;
+ // }
+ // namespace NSAB {
+ // using namespace NSA;
+ // using namespace NSB;
+ // }
+
+ // void f() {
+ // NSAB::a= NSAB::b;
+ // }
+ public void testNamespaceComposition_200673() throws Exception {
+ IBinding a = getBindingFromASTName("a=", 1);
+ assertTrue(a instanceof IVariable);
+ IVariable v = (IVariable) a;
+ IScope scope = v.getScope();
+ assertTrue(scope instanceof ICPPNamespaceScope);
+ assertEquals("NSA", scope.getScopeName().toString());
+
+ IBinding b = getBindingFromASTName("b;", 1);
+ assertTrue(b instanceof IVariable);
+ v = (IVariable) b;
+ scope = v.getScope();
+ assertTrue(scope instanceof ICPPNamespaceScope);
+ assertEquals("NSB", scope.getScopeName().toString());
+ }
+
+ // namespace N { namespace M {}}
+
+ // namespace N {using namespace N::M;}
+ // using namespace N;
+ // void test() {x;}
+ public void testEndlessLoopWithUsingDeclaration_209813() throws DOMException {
+ getProblemFromASTName("x;", 1);
+ }
+
+ // class MyClass {};
+
+ // void test(MyClass* ptr);
+ // class MyClass;
+ public void testClassRedeclarationAfterReference_229571() throws Exception {
+ IBinding cl = getBindingFromASTName("MyClass;", 7);
+ IFunction fn = getBindingFromASTName("test(", 4, IFunction.class);
+ IType type = fn.getType().getParameterTypes()[0];
+ assertInstance(type, IPointerType.class);
+ type = ((IPointerType) type).getType();
+ assertInstance(cl, IType.class);
+ assertSameType(type, (IType) cl);
+ }
+
+ // class A {
+ // public:
+ // void foo() const volatile;
+ // void foo() volatile;
+ // void foo() const;
+ // void foo();
+ // void bar() const volatile;
+ // void bar() volatile;
+ // void bar() const;
+ // void bar();
+ // };
+
+ // void A::foo() const volatile { bar();/*1*/ }
+ // void A::foo() volatile { bar();/*2*/ }
+ // void A::foo() const { bar();/*3*/ }
+ // void A::foo() { bar();/*4*/ }
+ // void test() {
+ // A a;
+ // const A ca;
+ // volatile A va;
+ // const volatile A cva;
+ // cva.bar();/*5*/
+ // va.bar();/*6*/
+ // ca.bar();/*7*/
+ // a.bar();/*8*/
+ // }
+ public void testMemberFunctionDisambiguationByCVness_238409() throws Exception {
+ ICPPMethod bar_cv = getBindingFromASTName("bar();/*1*/", 3, ICPPMethod.class);
+ ICPPMethod bar_v = getBindingFromASTName("bar();/*2*/", 3, ICPPMethod.class);
+ ICPPMethod bar_c = getBindingFromASTName("bar();/*3*/", 3, ICPPMethod.class);
+ ICPPMethod bar = getBindingFromASTName("bar();/*4*/", 3, ICPPMethod.class);
+ ICPPFunctionType bar_cv_ft = bar_cv.getType();
+ ICPPFunctionType bar_v_ft = bar_v.getType();
+ ICPPFunctionType bar_c_ft = bar_c.getType();
+ ICPPFunctionType bar_ft = bar.getType();
+
+ assertTrue(bar_cv_ft.isConst());
+ assertTrue(bar_cv_ft.isVolatile());
+ assertTrue(!bar_v_ft.isConst());
+ assertTrue(bar_v_ft.isVolatile());
+ assertTrue(bar_c_ft.isConst());
+ assertTrue(!bar_c_ft.isVolatile());
+ assertTrue(!bar_ft.isConst());
+ assertTrue(!bar_ft.isVolatile());
+
+ bar_cv = getBindingFromASTName("bar();/*5*/", 3, ICPPMethod.class);
+ bar_v = getBindingFromASTName("bar();/*6*/", 3, ICPPMethod.class);
+ bar_c = getBindingFromASTName("bar();/*7*/", 3, ICPPMethod.class);
+ bar = getBindingFromASTName("bar();/*8*/", 3, ICPPMethod.class);
+ bar_cv_ft = bar_cv.getType();
+ bar_v_ft = bar_v.getType();
+ bar_c_ft = bar_c.getType();
+ bar_ft = bar.getType();
+
+ assertTrue(bar_cv_ft.isConst());
+ assertTrue(bar_cv_ft.isVolatile());
+ assertTrue(!bar_v_ft.isConst());
+ assertTrue(bar_v_ft.isVolatile());
+ assertTrue(bar_c_ft.isConst());
+ assertTrue(!bar_c_ft.isVolatile());
+ assertTrue(!bar_ft.isConst());
+ assertTrue(!bar_ft.isVolatile());
+ }
+
+ // typedef char t[12];
+ // void test1(char *);
+ // void test2(char []);
+ // void test3(t);
+
+ // void xx() {
+ // char* x= 0;
+ // test1(x);
+ // test2(x); // problem binding here
+ // test3(x); // problem binding here
+ // }
+ public void testAdjustmentOfParameterTypes_239975() throws Exception {
+ getBindingFromASTName("test1(x)", 5, ICPPFunction.class);
+ getBindingFromASTName("test2(x)", 5, ICPPFunction.class);
+ getBindingFromASTName("test3(x)", 5, ICPPFunction.class);
+ }
+
+ // class A {
+ // A();
+ // void l();
+ // void e;
+ // class M {};
+ // };
+ // class B {
+ // B();
+ // void m();
+ // void f;
+ // class N {};
+ // };
+ // class C : B {
+ // C();
+ // void n();
+ // int g;
+ // class O {};
+ // };
+ // template<typename T> class CT : B {
+ // CT();
+ // void n();
+ // T g;
+ // class O {};
+ // };
+ // template<> class CT<char> : A {
+ // CT(); CT(int);
+ // void o();
+ // int h;
+ // class P {};
+ // };
+ // template<typename S> class Container {
+ // class C : B {
+ // C();
+ // void n();
+ // int g;
+ // class O {};
+ // };
+ // template<typename T> class CT : B {
+ // CT();
+ // void n();
+ // T g;
+ // class O {};
+ // };
+ // };
+ // template<> class Container<char>::C : A {
+ // C(); C(int);
+ // void o();
+ // int h;
+ // class P {};
+ // };
+ // template<> template<typename T> class Container<char>::CT : A {
+ // CT(); CT(int);
+ // void o();
+ // int h;
+ // class P {};
+ // };
+
+ // C c;
+ // CT<int> ct;
+ // CT<char> ctinst;
+ // Container<int>::C spec;
+ // Container<int>::CT<int> spect;
+ // Container<char>::C espec;
+ // Container<char>::CT<int> espect;
+ public void testClassTypes_98171() throws Exception {
+ // regular class
+ ICPPClassType ct = getBindingFromASTName("C", 1);
+ assertBindings(new String[] { "B" }, ct.getBases());
+ assertBindings(new String[] { "n", "m", "B", "C" }, ct.getAllDeclaredMethods());
+ assertBindings(new String[] { "C", "C" }, ct.getConstructors());
+ assertBindings(new String[] { "g" }, ct.getDeclaredFields());
+ assertBindings(new String[] { "n", "C" }, ct.getDeclaredMethods());
+ assertBindings(new String[] { "f", "g" }, ct.getFields());
+ assertBindings(new String[] { "m", "n", "C", "C", "~C", "B", "B", "~B", "operator =", "operator =" },
+ ct.getMethods());
+ assertBindings(new String[] { "O" }, ct.getNestedClasses());
+
+ // class template
+ ct = getBindingFromASTName("CT<int>", 2);
+ assertInstance(ct, ICPPClassTemplate.class);
+ assertBindings(new String[] { "B" }, ct.getBases());
+ assertBindings(new String[] { "n", "m", "B", "CT" }, ct.getAllDeclaredMethods());
+ assertBindings(new String[] { "CT", "CT" }, ct.getConstructors());
+ assertBindings(new String[] { "g" }, ct.getDeclaredFields());
+ assertBindings(new String[] { "n", "CT" }, ct.getDeclaredMethods());
+ assertBindings(new String[] { "f", "g" }, ct.getFields());
+ assertBindings(new String[] { "m", "n", "CT", "CT", "~CT", "B", "B", "~B", "operator =", "operator =" },
+ ct.getMethods());
+ assertBindings(new String[] { "O" }, ct.getNestedClasses());
+
+ // class template instance
+ ct = getBindingFromASTName("CT<int>", 7);
+ assertInstance(ct, ICPPTemplateInstance.class);
+ assertBindings(new String[] { "B" }, ct.getBases());
+ assertBindings(new String[] { "n", "m", "B", "CT" }, ClassTypeHelper.getAllDeclaredMethods(ct));
+ assertBindings(new String[] { "CT", "CT" }, ct.getConstructors());
+ assertBindings(new String[] { "g" }, ct.getDeclaredFields());
+ assertBindings(new String[] { "n", "CT" }, ct.getDeclaredMethods());
+ assertBindings(new String[] { "f", "g" }, ClassTypeHelper.getFields(ct));
+ assertBindings(new String[] { "m", "n", "CT", "CT", "~CT", "B", "B", "~B", "operator =", "operator =" },
+ ClassTypeHelper.getMethods(ct));
+ assertBindings(new String[] { "O" }, ct.getNestedClasses());
+
+ // explicit class template instance
+ ct = getBindingFromASTName("CT<char>", 8);
+ assertInstance(ct, ICPPTemplateInstance.class);
+ assertBindings(new String[] { "A" }, ct.getBases());
+ assertBindings(new String[] { "o", "l", "A", "CT", "CT" }, ClassTypeHelper.getAllDeclaredMethods(ct));
+ assertBindings(new String[] { "CT", "CT", "CT" }, ct.getConstructors());
+ assertBindings(new String[] { "h" }, ct.getDeclaredFields());
+ assertBindings(new String[] { "o", "CT", "CT" }, ct.getDeclaredMethods());
+ assertBindings(new String[] { "e", "h" }, ClassTypeHelper.getFields(ct));
+ assertBindings(new String[] { "l", "o", "CT", "CT", "CT", "~CT", "A", "A", "~A", "operator =", "operator =" },
+ ClassTypeHelper.getMethods(ct));
+ assertBindings(new String[] { "P" }, ct.getNestedClasses());
+
+ // class specialization
+ ct = getBindingFromASTName("C spec", 1);
+ assertInstance(ct, ICPPClassSpecialization.class);
+ assertBindings(new String[] { "B" }, ct.getBases());
+ assertBindings(new String[] { "n", "m", "B", "C" }, ClassTypeHelper.getAllDeclaredMethods(ct));
+ assertBindings(new String[] { "C", "C" }, ct.getConstructors());
+ assertBindings(new String[] { "g" }, ct.getDeclaredFields());
+ assertBindings(new String[] { "n", "C" }, ct.getDeclaredMethods());
+ assertBindings(new String[] { "f", "g" }, ClassTypeHelper.getFields(ct));
+ assertBindings(new String[] { "m", "n", "C", "C", "~C", "B", "B", "~B", "operator =", "operator =" },
+ ClassTypeHelper.getMethods(ct));
+ assertBindings(new String[] { "O" }, ct.getNestedClasses());
+
+ // class template specialization
+ ct = getBindingFromASTName("CT<int> spect", 2);
+ assertInstance(ct, ICPPClassTemplate.class, ICPPClassSpecialization.class);
+ assertBindings(new String[] { "B" }, ct.getBases());
+ assertBindings(new String[] { "n", "m", "B", "CT" }, ClassTypeHelper.getAllDeclaredMethods(ct));
+ assertBindings(new String[] { "CT", "CT" }, ct.getConstructors());
+ assertBindings(new String[] { "g" }, ct.getDeclaredFields());
+ assertBindings(new String[] { "n", "CT" }, ct.getDeclaredMethods());
+ assertBindings(new String[] { "f", "g" }, ClassTypeHelper.getFields(ct));
+ assertBindings(new String[] { "m", "n", "CT", "CT", "~CT", "B", "B", "~B", "operator =", "operator =" },
+ ClassTypeHelper.getMethods(ct));
+ assertBindings(new String[] { "O" }, ct.getNestedClasses());
+
+ // explicit class specialization
+ ct = getBindingFromASTName("C espec", 1);
+ assertInstance(ct, ICPPClassSpecialization.class);
+ assertBindings(new String[] { "A" }, ct.getBases());
+ assertBindings(new String[] { "o", "l", "A", "C", "C" }, ClassTypeHelper.getAllDeclaredMethods(ct));
+ assertBindings(new String[] { "C", "C", "C" }, ct.getConstructors());
+ assertBindings(new String[] { "h" }, ct.getDeclaredFields());
+ assertBindings(new String[] { "o", "C", "C" }, ct.getDeclaredMethods());
+ assertBindings(new String[] { "e", "h" }, ClassTypeHelper.getFields(ct));
+ assertBindings(new String[] { "l", "o", "C", "C", "C", "~C", "A", "A", "~A", "operator =", "operator =" },
+ ClassTypeHelper.getMethods(ct));
+ assertBindings(new String[] { "P" }, ct.getNestedClasses());
+
+ // explicit class template specialization
+ ct = getBindingFromASTName("CT<int> espect", 7);
+ assertInstance(ct, ICPPTemplateInstance.class);
+ assertBindings(new String[] { "A" }, ct.getBases());
+ assertBindings(new String[] { "o", "l", "A", "CT", "CT" }, ClassTypeHelper.getAllDeclaredMethods(ct));
+ assertBindings(new String[] { "CT", "CT", "CT" }, ct.getConstructors());
+ assertBindings(new String[] { "h" }, ct.getDeclaredFields());
+ assertBindings(new String[] { "o", "CT", "CT" }, ct.getDeclaredMethods());
+ assertBindings(new String[] { "e", "h" }, ClassTypeHelper.getFields(ct));
+ assertBindings(new String[] { "l", "o", "CT", "CT", "CT", "~CT", "A", "A", "~A", "operator =", "operator =" },
+ ClassTypeHelper.getMethods(ct));
+ assertBindings(new String[] { "P" }, ct.getNestedClasses());
+ }
+
+ // void func(const int* x) {}
+
+ // void func(int* p) {
+ // const int* q = p;
+ // func(q);
+ // }
+ public void testOverloadedFunctionFromIndex_256240() throws Exception {
+ getBindingFromASTName("func(q", 4, ICPPFunction.class);
+ }
+
+ // class A {
+ // class B;
+ // };
+ // class A::B {
+ // void m();
+ // };
+
+ // void A::B::m() {}
+ public void testNestedClasses_259683() throws Exception {
+ getBindingFromASTName("A::B::m", 7, ICPPMethod.class);
+ }
+
+ // namespace ns {
+ // struct S {
+ // int a;
+ // };
+ // }
+ // class A {
+ // public:
+ // template<typename T> operator T*(){return 0;};
+ // };
+
+ // namespace ns {
+ // void bla() {
+ // A a;
+ // a.operator S *();
+ // }
+ // }
+ public void testLookupScopeForConversionNames_267221() throws Exception {
+ getBindingFromASTName("operator S *", 12, ICPPMethod.class);
+ }
+
+ private void assertBindings(String[] expected, ICPPBase[] bases) throws DOMException {
+ IBinding[] bindings = new IBinding[bases.length];
+ for (int i = 0; i < bindings.length; i++) {
+ bindings[i] = bases[i].getBaseClass();
+ }
+ assertBindings(expected, bindings);
+ }
+
+ private void assertBindings(String[] expected, IBinding[] binding) {
+ String[] actual = new String[binding.length];
+ for (int i = 0; i < actual.length; i++) {
+ actual[i] = binding[i].getName();
+ }
+ Arrays.sort(actual);
+ Arrays.sort(expected);
+ assertEquals(toString(expected), toString(actual));
+ }
+
+ private String toString(String[] actual) {
+ StringBuilder buf = new StringBuilder();
+ buf.append('{');
+ boolean isFirst = true;
+ for (String val : actual) {
+ if (!isFirst) {
+ buf.append(',');
+ }
+ buf.append(val);
+ isFirst = false;
+ }
+ buf.append('}');
+ return buf.toString();
+ }
+
+ // class Derived;
+ // class X {
+ // Derived* d;
+ // };
+ // class Base {};
+ // void useBase(Base* b);
+
+ // class Derived : Base {};
+ // void test() {
+ // X x;
+ // useBase(x.d);
+ // }
+ public void testLateDefinitionOfInheritance_292749() throws Exception {
+ getBindingFromFirstIdentifier("useBase(x.d)", ICPPFunction.class);
+ }
+
+ // namespace one {
+ // void fx();
+ // void fx(int);
+ // void fx(int, int);
+ // }
+ // namespace two {
+ // using one::fx;
+ // }
+
+ // void test() {
+ // two::fx();
+ // two::fx(1);
+ // two::fx(1,1);
+ // }
+ public void testUsingDeclaration_300019() throws Exception {
+ getBindingFromASTName("fx();", 2, ICPPFunction.class);
+ getBindingFromASTName("fx(1);", 2, ICPPFunction.class);
+ getBindingFromASTName("fx(1,1);", 2, ICPPFunction.class);
+ }
+
+ // struct YetAnotherTest {
+ // void test();
+ // friend class InnerClass3;
+ // class InnerClass3 {
+ // void f() {
+ // member=0;
+ // }
+ // int member;
+ // };
+ // InnerClass3 arr[32];
+ // };
+
+ // void YetAnotherTest::test() {
+ // arr[0].member=0;
+ // }
+ public void testElaboratedTypeSpecifier_303739() throws Exception {
+ getBindingFromASTName("member=0", -2, ICPPField.class);
+ }
+
+ // typedef int xxx::* MBR_PTR;
+
+ // void test() {
+ // MBR_PTR x;
+ // }
+ public void testProblemInIndexBinding_317146() throws Exception {
+ ITypedef td = getBindingFromASTName("MBR_PTR", 0, ITypedef.class);
+ ICPPPointerToMemberType ptrMbr = (ICPPPointerToMemberType) td.getType();
+ IType t = ptrMbr.getMemberOfClass();
+ assertInstance(t, ISemanticProblem.class);
+ }
+
+ // void f255(
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int);
+ // void f256(
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int,
+ // int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int);
+
+ // void test() {
+ // f255(
+ // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
+ // f256(
+ // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ // 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
+ // }
+ public void testFunctionsWithManyParameters_319186() throws Exception {
+ getBindingFromASTName("f255", 0);
+ getBindingFromASTName("f256", 0);
+ }
+
+ // void f(char16_t x);
+ // void f(char32_t x);
+
+ // void test() {
+ // char16_t c16;
+ // char32_t c32;
+ // f(c16); f(c32);
+ // }
+ public void testChar16_319186() throws Exception {
+ IFunction f = getBindingFromASTName("f(c16)", 1);
+ assertEquals("char16_t", ASTTypeUtil.getType(f.getType().getParameterTypes()[0]));
+
+ f = getBindingFromASTName("f(c32)", 1);
+ assertEquals("char32_t", ASTTypeUtil.getType(f.getType().getParameterTypes()[0]));
+ }
+
+ // namespace ns {
+ // extern int* var;
+ // void fun();
+ // typedef int Type;
+ // }
+ // using ns::var;
+ // using ns::fun;
+ // using ns::Type;
+
+ // using namespace ::ns;
+ // void sabel() {
+ // var = 0;
+ // fun();
+ // Type x;
+ // }
+ public void test_326778() throws Exception {
+ IVariable v = getBindingFromASTName("var", 0);
+ IFunction f = getBindingFromASTName("fun", 0);
+ ITypedef t = getBindingFromASTName("Type", 0);
+ }
+
+ // struct base {
+ // virtual void operator+(base const &) {}
+ // virtual void operator-(base const &) {}
+ // };
+
+ // struct inter : public base {
+ // virtual void operator+(base const &) {}
+ // };
+ // struct sub : public inter {
+ // void doSomething() {
+ // base *left, *right;
+ //
+ // *left + *right;
+ // *left - *right;
+ // }
+ // };
+ public void test_356982() throws Exception {
+ IASTName name = findName("+ ", 1);
+ assertTrue(name instanceof IASTImplicitName);
+ assertEquals("base", name.resolveBinding().getOwner().getName());
+
+ name = findName("- ", 1);
+ assertTrue(name instanceof IASTImplicitName);
+ assertEquals("base", name.resolveBinding().getOwner().getName());
+ }
+
+ // class A {};
+
+ // void waldo(A p) {}
+ //
+ // namespace ns {
+ //
+ // void waldo() {}
+ //
+ // void test(A a) {
+ // waldo(a);
+ // }
+ //
+ // }
+ public void test_457503() throws Exception {
+ checkBindings();
+ }
+
+ // class A {
+ // class B;
+ // };
+
+ // class D : public A {};
+ // class D::B {};
+ public void testInvalidOwner_412766() throws Exception {
+ getProblemFromFirstIdentifier("B {}");
+ }
+
+ // template <class T>
+ // struct A {
+ // };
+ //
+ // template <class U>
+ // struct B : public A<typename U::t> {
+ // };
+ //
+ // template <typename T>
+ // struct C {
+ // typedef T t;
+ // void waldo(A<t>* p);
+ // };
+
+ // struct E {
+ // void test() {
+ // waldo(new B<E>());
+ // }
+ // };
+ public void testTemplateArgumentResolution_450888() throws Exception {
+ getProblemFromFirstIdentifier("waldo"); // waldo is unresolved because E doesn't extend C.
+ IASTTranslationUnit ast = strategy.getAst(0);
+ ITranslationUnit tu = ast.getOriginatingTranslationUnit();
+ IWorkingCopy workingCopy = tu.getWorkingCopy();
+ IBuffer buffer = workingCopy.getBuffer();
+ buffer.setContents(buffer.getContents().replace("E {", "E : public C<int> {"));
+ // Release and re-acquire the index lock to clear the caches.
+ getIndex().releaseReadLock();
+ getIndex().acquireReadLock();
+ ast = workingCopy.getAST(strategy.getIndex(), ITranslationUnit.AST_SKIP_INDEXED_HEADERS);
+ checkBindings(ast);
+ }
+}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPBindingResolutionTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPBindingResolutionTest.java
index 5385a977821..96c2b0a2a42 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPBindingResolutionTest.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPBindingResolutionTest.java
@@ -65,31 +65,31 @@ import junit.framework.TestSuite;
* additionally check that the binding obtained has characteristics as
* expected (type,name,etc..)
*/
-public class IndexCPPBindingResolutionTest extends IndexBindingResolutionTestBase {
+public abstract class IndexCPPBindingResolutionTest extends IndexBindingResolutionTestBase {
- public static class SingleProject extends IndexCPPBindingResolutionTest {
- public SingleProject() {
+ public static class SingleProjectTest extends IndexCPPBindingResolutionTest {
+ public SingleProjectTest() {
setStrategy(new SinglePDOMTestStrategy(true));
}
public static TestSuite suite() {
- return suite(SingleProject.class);
+ return suite(SingleProjectTest.class);
}
}
- public static class ProjectWithDepProj extends IndexCPPBindingResolutionTest {
- public ProjectWithDepProj() {
+ public static class ProjectWithDepProjTest extends IndexCPPBindingResolutionTest {
+ public ProjectWithDepProjTest() {
setStrategy(new ReferencedProject(true));
}
public static TestSuite suite() {
- return suite(ProjectWithDepProj.class);
+ return suite(ProjectWithDepProjTest.class);
}
}
public static void addTests(TestSuite suite) {
- suite.addTest(SingleProject.suite());
- suite.addTest(ProjectWithDepProj.suite());
+ suite.addTest(SingleProjectTest.suite());
+ suite.addTest(ProjectWithDepProjTest.suite());
}
public IndexCPPBindingResolutionTest() {
@@ -97,7 +97,7 @@ public class IndexCPPBindingResolutionTest extends IndexBindingResolutionTestBas
}
public static TestSuite suite() {
- return suite(SingleProject.class);
+ return suite(SingleProjectTest.class);
}
/* Assertion helpers */
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPTemplateResolutionTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPTemplateResolutionTest.java
index 6c4e7560dd2..74f72fda672 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPTemplateResolutionTest.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPTemplateResolutionTest.java
@@ -77,25 +77,25 @@ import junit.framework.TestSuite;
/**
* Tests for exercising resolution of template bindings against IIndex
*/
-public class IndexCPPTemplateResolutionTest extends IndexBindingResolutionTestBase {
+public abstract class IndexCPPTemplateResolutionTest extends IndexBindingResolutionTestBase {
- public static class SingleProject extends IndexCPPTemplateResolutionTest {
- public SingleProject() {
+ public static class SingleProjectTest extends IndexCPPTemplateResolutionTest {
+ public SingleProjectTest() {
setStrategy(new SinglePDOMTestStrategy(true));
}
public static TestSuite suite() {
- return suite(SingleProject.class);
+ return suite(SingleProjectTest.class);
}
}
- public static class ProjectWithDepProj extends IndexCPPTemplateResolutionTest {
- public ProjectWithDepProj() {
+ public static class ProjectWithDepProjTest extends IndexCPPTemplateResolutionTest {
+ public ProjectWithDepProjTest() {
setStrategy(new ReferencedProject(true));
}
public static TestSuite suite() {
- return suite(ProjectWithDepProj.class);
+ return suite(ProjectWithDepProjTest.class);
}
@Override
@@ -106,8 +106,8 @@ public class IndexCPPTemplateResolutionTest extends IndexBindingResolutionTestBa
}
public static void addTests(TestSuite suite) {
- suite.addTest(SingleProject.suite());
- suite.addTest(ProjectWithDepProj.suite());
+ suite.addTest(SingleProjectTest.suite());
+ suite.addTest(ProjectWithDepProjTest.suite());
}
public IndexCPPTemplateResolutionTest() {
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPVariableTemplateResolutionTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPVariableTemplateResolutionTest.java
index d33fb2b7140..8f824880d25 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPVariableTemplateResolutionTest.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPVariableTemplateResolutionTest.java
@@ -24,31 +24,31 @@ import org.eclipse.cdt.core.index.IIndexBinding;
import junit.framework.TestSuite;
-public class IndexCPPVariableTemplateResolutionTest extends IndexBindingResolutionTestBase {
+public abstract class IndexCPPVariableTemplateResolutionTest extends IndexBindingResolutionTestBase {
- public static class SingleProject extends IndexCPPVariableTemplateResolutionTest {
- public SingleProject() {
+ public static class SingleProjectTest extends IndexCPPVariableTemplateResolutionTest {
+ public SingleProjectTest() {
setStrategy(new SinglePDOMTestStrategy(true));
}
public static TestSuite suite() {
- return suite(SingleProject.class);
+ return suite(SingleProjectTest.class);
}
}
- public static class ProjectWithDepProj extends IndexCPPVariableTemplateResolutionTest {
- public ProjectWithDepProj() {
+ public static class ProjectWithDepProjTest extends IndexCPPVariableTemplateResolutionTest {
+ public ProjectWithDepProjTest() {
setStrategy(new ReferencedProject(true));
}
public static TestSuite suite() {
- return suite(ProjectWithDepProj.class);
+ return suite(ProjectWithDepProjTest.class);
}
}
public static void addTests(TestSuite suite) {
- suite.addTest(SingleProject.suite());
- suite.addTest(ProjectWithDepProj.suite());
+ suite.addTest(SingleProjectTest.suite());
+ suite.addTest(ProjectWithDepProjTest.suite());
}
public IndexCPPVariableTemplateResolutionTest() {
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexGPPBindingResolutionTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexGPPBindingResolutionTest.java
index 1b362f46077..0949aba788d 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexGPPBindingResolutionTest.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexGPPBindingResolutionTest.java
@@ -70,29 +70,29 @@ public abstract class IndexGPPBindingResolutionTest extends IndexBindingResoluti
}
}
- public static class SingleProject extends IndexGPPBindingResolutionTest {
- public SingleProject() {
+ public static class SingleProjectTest extends IndexGPPBindingResolutionTest {
+ public SingleProjectTest() {
setStrategy(new GPPSinglePDOMTestStrategy());
}
public static TestSuite suite() {
- return suite(SingleProject.class);
+ return suite(SingleProjectTest.class);
}
}
- public static class ProjectWithDepProj extends IndexGPPBindingResolutionTest {
- public ProjectWithDepProj() {
+ public static class ProjectWithDepProjTest extends IndexGPPBindingResolutionTest {
+ public ProjectWithDepProjTest() {
setStrategy(new GPPReferencedProject());
}
public static TestSuite suite() {
- return suite(ProjectWithDepProj.class);
+ return suite(ProjectWithDepProjTest.class);
}
}
public static void addTests(TestSuite suite) {
- suite.addTest(SingleProject.suite());
- suite.addTest(ProjectWithDepProj.suite());
+ suite.addTest(SingleProjectTest.suite());
+ suite.addTest(ProjectWithDepProjTest.suite());
}
// struct B {
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexIncludeTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexIncludeTest.java
index 4f59f62f746..805e6e1ad7d 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexIncludeTest.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexIncludeTest.java
@@ -14,7 +14,11 @@
*******************************************************************************/
package org.eclipse.cdt.internal.index.tests;
+import static org.eclipse.cdt.core.testplugin.util.TestSourceReader.createFile;
+
import java.io.ByteArrayInputStream;
+import java.util.HashSet;
+import java.util.Set;
import java.util.regex.Pattern;
import org.eclipse.cdt.core.CCorePlugin;
@@ -25,6 +29,7 @@ import org.eclipse.cdt.core.dom.ast.IVariable;
import org.eclipse.cdt.core.index.IIndex;
import org.eclipse.cdt.core.index.IIndexBinding;
import org.eclipse.cdt.core.index.IIndexFile;
+import org.eclipse.cdt.core.index.IIndexFileLocation;
import org.eclipse.cdt.core.index.IIndexInclude;
import org.eclipse.cdt.core.index.IndexFilter;
import org.eclipse.cdt.core.index.IndexLocationFactory;
@@ -36,11 +41,13 @@ import org.eclipse.cdt.core.testplugin.TestScannerProvider;
import org.eclipse.cdt.core.testplugin.util.TestSourceReader;
import org.eclipse.cdt.internal.core.pdom.indexer.IndexerPreferences;
import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IWorkspaceRunnable;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.Path;
+import org.junit.Assert;
import junit.framework.TestSuite;
@@ -642,6 +649,143 @@ public class IndexIncludeTest extends IndexTestBase {
}
}
+ // #pragma once
+ // #ifdef ABC
+ // int x = 5;
+ // #endif
+
+ // #pragma once
+ // #include "b.hpp"
+
+ // #pragma once
+ // #include "b.hpp"
+
+ // #include "a1.hpp"
+ // #include "a2.hpp"
+ public void testSignificantMacrosWithPragmeOnceSemantic() throws Exception {
+ waitForIndexer();
+ IProject prj = fProject.getProject();
+ TestScannerProvider.sIncludes = new String[] { prj.getLocation().toOSString() };
+ CharSequence[] contents = getContentsForTest(5);
+
+ IFile b = createFile(prj, "b.hpp", contents[0].toString());
+ IFile a1 = createFile(prj, "a1.hpp", contents[1].toString());
+ IFile a2 = createFile(prj, "a2.hpp", contents[2].toString());
+
+ final IFile main = createFile(prj, "UltimateTest.cpp", contents[3].toString());
+
+ waitUntilFileIsIndexed(fIndex, b);
+ waitUntilFileIsIndexed(fIndex, a1);
+ waitUntilFileIsIndexed(fIndex, a2);
+ waitUntilFileIsIndexed(fIndex, main);
+
+ fIndex.acquireReadLock();
+ try {
+ IIndexFile[] indexFiles = fIndex.getFiles(ILinkage.CPP_LINKAGE_ID,
+ IndexLocationFactory.getWorkspaceIFL(main));
+
+ IIndexFile ultimateTestCppIdx = indexFiles[0];
+ IIndexFile includes[] = new IIndexFile[3];
+ includes[0] = fIndex.getFiles(ILinkage.CPP_LINKAGE_ID, IndexLocationFactory.getWorkspaceIFL(b))[0];
+ includes[1] = fIndex.getFiles(ILinkage.CPP_LINKAGE_ID, IndexLocationFactory.getWorkspaceIFL(a1))[0];
+ includes[2] = fIndex.getFiles(ILinkage.CPP_LINKAGE_ID, IndexLocationFactory.getWorkspaceIFL(a2))[0];
+
+ for (int i = 0; i < includes.length; i++) {
+ IIndexFile include = includes[i];
+ outputUnresolvedIncludes(fIndex, include.getLocation(), ultimateTestCppIdx, new HashSet<IIndexFile>());
+ }
+ } finally {
+ fIndex.releaseReadLock();
+ }
+ }
+
+ // #pragma once
+ // #ifdef ABC
+ // int x = 5;
+ // #endif
+
+ // #pragma once
+ // #include "b.hpp"
+
+ // #pragma once
+ // #include "b.hpp"
+
+ // #pragma once
+ // #include "b.hpp"
+
+ // #pragma once
+ // #include "b.hpp"
+
+ // #include "a1.hpp"
+ // #include "a2.hpp"
+
+ // #include "a3.hpp"
+ // #include "a4.hpp"
+ public void testSignificantMacrosWithPragmeOnceFromIdxSemantic() throws Exception {
+ waitForIndexer();
+ IProject prj = fProject.getProject();
+ TestScannerProvider.sIncludes = new String[] { prj.getLocation().toOSString() };
+ CharSequence[] contents = getContentsForTest(7);
+
+ IFile b = createFile(prj, "b.hpp", contents[0].toString());
+ IFile a1 = createFile(prj, "a1.hpp", contents[1].toString());
+ IFile a2 = createFile(prj, "a2.hpp", contents[2].toString());
+ IFile a3 = createFile(prj, "a3.hpp", contents[3].toString());
+ IFile a4 = createFile(prj, "a4.hpp", contents[4].toString());
+
+ final IFile s1 = createFile(prj, "s1.cpp", contents[5].toString());
+ final IFile s2 = createFile(prj, "s2.cpp", contents[6].toString());
+
+ waitUntilFileIsIndexed(fIndex, b);
+ waitUntilFileIsIndexed(fIndex, a1);
+ waitUntilFileIsIndexed(fIndex, a2);
+ waitUntilFileIsIndexed(fIndex, a3);
+ waitUntilFileIsIndexed(fIndex, a4);
+ waitUntilFileIsIndexed(fIndex, s1);
+ waitUntilFileIsIndexed(fIndex, s2);
+
+ fIndex.acquireReadLock();
+ try {
+ IIndexFile[] indexFiles = fIndex.getFiles(ILinkage.CPP_LINKAGE_ID,
+ IndexLocationFactory.getWorkspaceIFL(s1));
+
+ IIndexFile ultimateTestCppIdx = indexFiles[0];
+ IIndexFile includes[] = new IIndexFile[5];
+ includes[0] = fIndex.getFiles(ILinkage.CPP_LINKAGE_ID, IndexLocationFactory.getWorkspaceIFL(b))[0];
+ includes[1] = fIndex.getFiles(ILinkage.CPP_LINKAGE_ID, IndexLocationFactory.getWorkspaceIFL(a1))[0];
+ includes[2] = fIndex.getFiles(ILinkage.CPP_LINKAGE_ID, IndexLocationFactory.getWorkspaceIFL(a2))[0];
+ includes[3] = fIndex.getFiles(ILinkage.CPP_LINKAGE_ID, IndexLocationFactory.getWorkspaceIFL(a3))[0];
+ includes[4] = fIndex.getFiles(ILinkage.CPP_LINKAGE_ID, IndexLocationFactory.getWorkspaceIFL(a4))[0];
+
+ for (int i = 0; i < includes.length; i++) {
+ IIndexFile include = includes[i];
+ outputUnresolvedIncludes(fIndex, include.getLocation(), ultimateTestCppIdx, new HashSet<IIndexFile>());
+ }
+ } finally {
+ fIndex.releaseReadLock();
+ }
+ }
+
+ private void outputUnresolvedIncludes(IIndex index, IIndexFileLocation ifl, IIndexFile ifile,
+ Set<IIndexFile> handled) throws CoreException {
+ if (ifile == null) {
+ Assert.fail(ifl.getURI() + " is not indexed");
+ } else if (handled.add(ifile)) {
+ IIndexInclude[] includes = ifile.getIncludes();
+ for (IIndexInclude inc : includes) {
+ if (inc.isActive()) {
+ if (inc.isResolved()) {
+ IIndexFile next = index.resolveInclude(inc);
+ outputUnresolvedIncludes(index, inc.getIncludesLocation(), next, handled);
+ } else {
+ Assert.fail("Unresolved inclusion: " + inc.getFullName() + " in file "
+ + inc.getIncludedByLocation().getURI());
+ }
+ }
+ }
+ }
+ }
+
private void standardCheckUpdateIncludes(IFile header, IFile s1, String tag) throws Exception {
fIndex.acquireReadLock();
try {
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexTestSuite.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexTestSuite.java
new file mode 100644
index 00000000000..6e970d10e30
--- /dev/null
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexTestSuite.java
@@ -0,0 +1,66 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2016 Wind River Systems, Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Markus Schorn - initial API and implementation
+ * Sergey Prigogin (Google)
+ *******************************************************************************/
+package org.eclipse.cdt.internal.index.tests;
+
+import org.eclipse.cdt.core.parser.tests.ast2.cxx14.GenericLambdaIndexTests;
+import org.eclipse.cdt.core.parser.tests.ast2.cxx14.ReturnTypeDeductionIndexTests;
+import org.eclipse.cdt.core.parser.tests.ast2.cxx17.StructuredBindingIndexTests;
+import org.eclipse.cdt.core.parser.tests.ast2.cxx17.TemplateAutoIndexTests;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * Test suite for the indexer tests
+ * @deprecated In preparation for moving to JUnit5 test suites are deprecated. See Bug 569839
+ */
+@Deprecated
+public class IndexTestSuite extends TestSuite {
+ public static Test suite() {
+ TestSuite suite = new IndexTestSuite();
+
+ suite.addTest(IndexCompositeTests.suite());
+ suite.addTest(IndexListenerTest.suite());
+ suite.addTest(IndexLocationTest.suite());
+ suite.addTest(IndexSearchTest.suite());
+ suite.addTest(IndexIncludeTest.suite());
+ suite.addTest(IndexUpdateTests.suite());
+ suite.addTest(IndexUpdateMultiFileTest.suite());
+ suite.addTest(IndexBugsTests.suite());
+ suite.addTest(IndexNamesTests.suite());
+ suite.addTest(TeamSharedIndexTest.suite());
+ suite.addTest(IndexProviderManagerTest.suite());
+ suite.addTest(IndexMultiVariantHeaderTest.suite());
+ suite.addTest(IndexMultiFileTest.suite());
+
+ // C++14 index test suites
+ suite.addTestSuite(ReturnTypeDeductionIndexTests.class);
+ suite.addTestSuite(GenericLambdaIndexTests.class);
+
+ // C++17 index test suites
+ suite.addTestSuite(TemplateAutoIndexTests.class);
+ suite.addTestSuite(StructuredBindingIndexTests.class);
+
+ IndexCPPBindingResolutionBugsTest.addTests(suite);
+ IndexCPPBindingResolutionTest.addTests(suite);
+ IndexGPPBindingResolutionTest.addTests(suite);
+ IndexCPPTemplateResolutionTest.addTests(suite);
+ IndexCBindingResolutionBugsTest.addTests(suite);
+ IndexCBindingResolutionTest.addTests(suite);
+ IndexCPPVariableTemplateResolutionTest.addTests(suite);
+
+ return suite;
+ }
+}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexTests.java
deleted file mode 100644
index 12a6ac0f346..00000000000
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexTests.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2016 Wind River Systems, Inc. and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Markus Schorn - initial API and implementation
- * Sergey Prigogin (Google)
- *******************************************************************************/
-package org.eclipse.cdt.internal.index.tests;
-
-import org.eclipse.cdt.core.parser.tests.ast2.cxx14.GenericLambdaIndexTests;
-import org.eclipse.cdt.core.parser.tests.ast2.cxx14.ReturnTypeDeductionIndexTests;
-import org.eclipse.cdt.core.parser.tests.ast2.cxx17.StructuredBindingIndexTests;
-import org.eclipse.cdt.core.parser.tests.ast2.cxx17.TemplateAutoIndexTests;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * Test suite for the indexer tests
- */
-public class IndexTests extends TestSuite {
- public static Test suite() {
- TestSuite suite = new IndexTests();
-
- suite.addTest(IndexCompositeTests.suite());
- suite.addTest(IndexListenerTest.suite());
- suite.addTest(IndexLocationTest.suite());
- suite.addTest(IndexSearchTest.suite());
- suite.addTest(IndexIncludeTest.suite());
- suite.addTest(IndexUpdateTests.suite());
- suite.addTest(IndexUpdateMultiFileTest.suite());
- suite.addTest(IndexBugsTests.suite());
- suite.addTest(IndexNamesTests.suite());
- suite.addTest(TeamSharedIndexTest.suite());
- suite.addTest(IndexProviderManagerTest.suite());
- suite.addTest(IndexMultiVariantHeaderTest.suite());
- suite.addTest(IndexMultiFileTest.suite());
-
- // C++14 index test suites
- suite.addTestSuite(ReturnTypeDeductionIndexTests.class);
- suite.addTestSuite(GenericLambdaIndexTests.class);
-
- // C++17 index test suites
- suite.addTestSuite(TemplateAutoIndexTests.class);
- suite.addTestSuite(StructuredBindingIndexTests.class);
-
- IndexCPPBindingResolutionBugs.addTests(suite);
- IndexCPPBindingResolutionTest.addTests(suite);
- IndexGPPBindingResolutionTest.addTests(suite);
- IndexCPPTemplateResolutionTest.addTests(suite);
- IndexCBindingResolutionBugs.addTests(suite);
- IndexCBindingResolutionTest.addTests(suite);
- IndexCPPVariableTemplateResolutionTest.addTests(suite);
-
- return suite;
- }
-}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/TeamSharedIndexTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/TeamSharedIndexTest.java
index 1bcdecaf8b3..4c7486907f5 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/TeamSharedIndexTest.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/TeamSharedIndexTest.java
@@ -29,6 +29,7 @@ import org.eclipse.cdt.core.index.IndexFilter;
import org.eclipse.cdt.core.model.CoreModel;
import org.eclipse.cdt.core.model.ICProject;
import org.eclipse.cdt.core.testplugin.CProjectHelper;
+import org.eclipse.cdt.core.testplugin.util.ModelJoiner;
import org.eclipse.cdt.core.testplugin.util.TestSourceReader;
import org.eclipse.cdt.internal.core.pdom.indexer.IndexerPreferences;
import org.eclipse.core.resources.IFile;
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/BTreeExpensiveTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/BTreeExpensiveTests.java
index 6243210c693..cc937ccaa4d 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/BTreeExpensiveTests.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/BTreeExpensiveTests.java
@@ -13,7 +13,9 @@
*******************************************************************************/
package org.eclipse.cdt.internal.pdom.tests;
-import junit.framework.Test;
+import org.eclipse.cdt.core.testplugin.util.BaseTestCase5;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
/**
* Tests which are too expensive to run as part of normal testing, but
@@ -23,36 +25,31 @@ import junit.framework.Test;
* invariants after each B-tree operation, and so are especially
* expensive and cpu hungry.
*/
+@Tag(BaseTestCase5.SLOW_TEST_TAG)
public class BTreeExpensiveTests extends BTreeTests {
- public static Test suite() {
- return suite(BTreeExpensiveTests.class);
- }
-
+ @Test
public void testBySortedSetMirror() throws Exception {
sortedMirrorTest(100);
}
- // @Override
- @Override
- public void testInsertion() throws Exception {
- super.testInsertion();
- }
-
/*
* N.B. Each of the following tests are quite expensive (i.e. > 10mins each on a 2Ghz machine)
*/
+ @Test
public void testBySortedSetMirror1682762087() throws Exception {
System.out.println("1682762087 Full Checking");
trial(1682762087, true); // exposed bugs in 2a,b
}
+ @Test
public void testBySortedSetMirror322922974() throws Exception {
System.out.println("322922974 Full Checking");
trial(322922974, true); // exposed bugs in 3b(ii)
}
+ @Test
public void testBySortedSetMirror_588448152() throws Exception {
System.out.println("-588448152 Full Checking");
trial(-588448152, true); // exposed root-delete-on-merge problems
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/BTreeTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/BTreeTests.java
index 85ccc104029..cdf508afccc 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/BTreeTests.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/BTreeTests.java
@@ -14,6 +14,9 @@
*******************************************************************************/
package org.eclipse.cdt.internal.pdom.tests;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.fail;
+
import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
@@ -22,22 +25,21 @@ import java.util.Random;
import java.util.SortedSet;
import java.util.TreeSet;
-import org.eclipse.cdt.core.testplugin.util.BaseTestCase;
+import org.eclipse.cdt.core.testplugin.util.BaseTestCase5;
import org.eclipse.cdt.internal.core.pdom.db.BTree;
import org.eclipse.cdt.internal.core.pdom.db.ChunkCache;
import org.eclipse.cdt.internal.core.pdom.db.Database;
import org.eclipse.cdt.internal.core.pdom.db.IBTreeComparator;
import org.eclipse.cdt.internal.core.pdom.db.IBTreeVisitor;
import org.eclipse.core.runtime.CoreException;
-
-import junit.framework.Test;
+import org.junit.jupiter.api.Test;
/**
* Test insertion/deletion of records of a mock record type in a B-tree.
*
* @author aferguso
*/
-public class BTreeTests extends BaseTestCase {
+public class BTreeTests extends BaseTestCase5 {
private static int DEBUG = 0;
protected File dbFile;
protected Database db;
@@ -45,10 +47,6 @@ public class BTreeTests extends BaseTestCase {
protected int rootRecord;
protected IBTreeComparator comparator;
- public static Test suite() {
- return suite(BTreeTests.class);
- }
-
// setUp is not used since we need to parameterize this method,
// and invoke it multiple times per Junit test
protected void init(int degree) throws Exception {
@@ -66,6 +64,7 @@ public class BTreeTests extends BaseTestCase {
dbFile.deleteOnExit();
}
+ @Test
public void testBySortedSetMirrorLite() throws Exception {
sortedMirrorTest(8);
}
@@ -91,6 +90,7 @@ public class BTreeTests extends BaseTestCase {
* and use TreeSet as a reference implementation to check behaviour against.
* @throws Exception
*/
+ @Test
public void testInsertion() throws Exception {
Random seeder = new Random();
@@ -105,6 +105,7 @@ public class BTreeTests extends BaseTestCase {
/**
* Bug 402177: BTree.insert should return the matching record if the new record was not inserted.
*/
+ @Test
public void testEquivalentRecordInsert_Bug402177() throws Exception {
init(8);
try {
@@ -208,7 +209,7 @@ public class BTreeTests extends BaseTestCase {
BTMockRecord btValue = new BTMockRecord(record, db);
if (i.hasNext()) {
Integer exp = ((Integer) i.next());
- assertEquals(msg + " Differ at index: " + k, btValue.intValue(), exp.intValue());
+ assertEquals(btValue.intValue(), exp.intValue(), msg + " Differ at index: " + k);
k++;
} else {
fail("Sizes different");
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/CPPFunctionTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/CPPFunctionTests.java
index 93890dc8307..cd056891704 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/CPPFunctionTests.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/CPPFunctionTests.java
@@ -152,6 +152,12 @@ public class CPPFunctionTests extends PDOMTestBase {
assertTrue(((ICPPFunction) bindings[0]).isNoReturn());
}
+ private void assertNoDiscardFunction(String functionName) throws CoreException {
+ IBinding[] bindings = findQualifiedName(pdom, functionName);
+ assertEquals(1, bindings.length);
+ assertTrue(((ICPPFunction) bindings[0]).isNoDiscard());
+ }
+
public void testNoReturnCPPFunction() throws Exception {
assertNoReturnFunction("noReturnCPPFunction");
assertNoReturnFunction("trailingNoReturnStdAttributeDecl");
@@ -160,6 +166,14 @@ public class CPPFunctionTests extends PDOMTestBase {
assertNoReturnFunction("leadingNoReturnStdAttributeDef");
}
+ public void testNoDiscardCPPFunction() throws Exception {
+ assertNoDiscardFunction("noDiscardCPPFunction");
+ assertNoDiscardFunction("trailingNoDiscardStdAttributeDecl");
+ assertNoDiscardFunction("leadingNoDiscardStdAttributeDecl");
+ assertNoDiscardFunction("trailingNoDiscardStdAttributeDef");
+ assertNoDiscardFunction("leadingNoDiscardStdAttributeDef");
+ }
+
public void testForwardDeclarationType() throws Exception {
assertType(pdom, "forwardDeclaration", ICPPFunction.class);
}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/ChangeConfigurationTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/ChangeConfigurationTests.java
index 86d90490a8d..8f6b1dab75c 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/ChangeConfigurationTests.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/ChangeConfigurationTests.java
@@ -31,6 +31,7 @@ import org.eclipse.cdt.core.settings.model.ICSettingEntry;
import org.eclipse.cdt.core.settings.model.util.CDataUtil;
import org.eclipse.cdt.core.testplugin.CProjectHelper;
import org.eclipse.cdt.core.testplugin.CTestPlugin;
+import org.eclipse.cdt.core.testplugin.util.ModelJoiner;
import org.eclipse.cdt.core.testplugin.util.TestSourceReader;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/ClassTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/ClassTests.java
index b698182cfc7..28de19d5a6f 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/ClassTests.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/ClassTests.java
@@ -244,4 +244,14 @@ public class ClassTests extends PDOMTestBase {
assertTrue(classBinding.isFinal());
}
+
+ public void testNoDiscardClass() throws Exception {
+ char[][] name = { "F".toCharArray() };
+ IBinding[] bindings = pdom.findBindings(name, IndexFilter.ALL, npm());
+ assertEquals(1, bindings.length);
+ assertInstance(bindings[0], ICPPClassType.class);
+ ICPPClassType classBinding = (ICPPClassType) bindings[0];
+
+ assertTrue(classBinding.isNoDiscard());
+ }
}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/EnumerationTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/EnumerationTests.java
index c5a195530de..abac00004b3 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/EnumerationTests.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/EnumerationTests.java
@@ -23,6 +23,7 @@ import org.eclipse.cdt.core.dom.ast.IASTFileLocation;
import org.eclipse.cdt.core.dom.ast.IBinding;
import org.eclipse.cdt.core.dom.ast.IEnumeration;
import org.eclipse.cdt.core.dom.ast.IEnumerator;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPEnumeration;
import org.eclipse.cdt.core.index.IIndex;
import org.eclipse.cdt.core.index.IndexFilter;
import org.eclipse.cdt.core.model.ICProject;
@@ -101,7 +102,8 @@ public class EnumerationTests extends PDOMTestBase {
Pattern pattern = Pattern.compile("TestCPPEnum");
IBinding[] bindings = pdom.findBindings(pattern, false, IndexFilter.ALL, new NullProgressMonitor());
assertEquals(1, bindings.length);
- IEnumeration enumeration = (IEnumeration) bindings[0];
+ ICPPEnumeration enumeration = (ICPPEnumeration) bindings[0];
+ assertFalse(enumeration.isNoDiscard());
assertEquals("TestCPPEnum", enumeration.getName());
IEnumerator[] enumerators = enumeration.getEnumerators();
assertEquals(3, enumerators.length);
@@ -133,5 +135,12 @@ public class EnumerationTests extends PDOMTestBase {
assertEquals(1, aRefs.length);
loc = aRefs[0].getFileLocation();
assertEquals(offset("enumTest.cpp", "cppa;"), loc.getNodeOffset());
+
+ // Check bindings no discard
+ pattern = Pattern.compile("TestCPPEnumNoDis");
+ bindings = pdom.findBindings(pattern, false, IndexFilter.ALL, new NullProgressMonitor());
+ assertEquals(1, bindings.length);
+ enumeration = (ICPPEnumeration) bindings[0];
+ assertTrue(enumeration.isNoDiscard());
}
}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/PDOMSearchTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/PDOMSearchTest.java
index cb3069e238b..42a6f15461d 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/PDOMSearchTest.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/PDOMSearchTest.java
@@ -48,7 +48,7 @@ import junit.framework.Test;
* @author Vivian Kong
*/
public class PDOMSearchTest extends PDOMTestBase {
- final Comparator<IBinding> BINDING_COMPARATOR = new Comparator<IBinding>() {
+ final Comparator<IBinding> BINDING_COMPARATOR = new Comparator<>() {
@Override
public int compare(IBinding b1, IBinding b2) {
return b1.getName().compareTo(b2.getName());
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/PDOMTestBase.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/PDOMTestBase.java
index 9bb0fe1f6d7..5d4f6a97937 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/PDOMTestBase.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/PDOMTestBase.java
@@ -38,6 +38,7 @@ import org.eclipse.cdt.core.parser.tests.VisibilityAsserts;
import org.eclipse.cdt.core.testplugin.CProjectHelper;
import org.eclipse.cdt.core.testplugin.CTestPlugin;
import org.eclipse.cdt.core.testplugin.util.BaseTestCase;
+import org.eclipse.cdt.core.testplugin.util.ModelJoiner;
import org.eclipse.cdt.core.testplugin.util.TestSourceReader;
import org.eclipse.cdt.internal.core.index.IIndexFragment;
import org.eclipse.cdt.internal.core.pdom.PDOM;
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/PDOMTestSuite.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/PDOMTestSuite.java
new file mode 100644
index 00000000000..a751b64317f
--- /dev/null
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/PDOMTestSuite.java
@@ -0,0 +1,71 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2014 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX - Initial API and implementation
+ * IBM Corporation
+ * Andrew Ferguson (Symbian)
+ * Marc-Andre Laperle
+ *******************************************************************************/
+package org.eclipse.cdt.internal.pdom.tests;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * @author Doug Schaefer
+ * @deprecated In preparation for moving to JUnit5 test suites are deprecated. See Bug 569839
+ */
+@Deprecated
+public class PDOMTestSuite extends TestSuite {
+
+ public static Test suite() {
+ TestSuite suite = new PDOMTestSuite();
+
+ suite.addTest(DatabaseTest.suite());
+ suite.addTest(DBPropertiesTests.suite());
+ suite.addTest(PDOMCBugsTest.suite());
+ suite.addTest(PDOMCPPBugsTest.suite());
+ suite.addTest(PDOMSearchTest.suite());
+ suite.addTest(PDOMLocationTests.suite());
+ suite.addTest(PDOMNameTests.suite());
+ suite.addTest(PDOMProviderTests.suite());
+ suite.addTest(EnumerationTests.suite());
+ suite.addTest(ClassTests.suite());
+ suite.addTest(TypesTests.suite());
+ suite.addTest(IncludesTests.suite());
+ suite.addTest(OverloadsWithinSingleTUTests.suite());
+ suite.addTest(OverloadsWithinCommonHeaderTests.suite());
+ // Test converted to JUnit5: suite.addTest(BTreeTests.suite());
+ suite.addTest(PDOMStringSetTests.suite());
+ suite.addTest(PDOMTagIndexTests.suite());
+ suite.addTest(FilesOnReindexTests.suite());
+ suite.addTest(GeneratePDOMApplicationTest.suite());
+
+ suite.addTest(CPPFieldTests.suite());
+ suite.addTest(CPPFunctionTests.suite());
+ suite.addTest(CPPVariableTests.suite());
+ suite.addTest(CPPClassTemplateTests.suite());
+ suite.addTest(CPPFunctionTemplateTests.suite());
+ suite.addTest(MethodTests.suite());
+ suite.addTest(NamespaceTests.suite());
+ suite.addTest(ClassMemberVisibilityTests.suite());
+
+ suite.addTest(CFunctionTests.suite());
+ suite.addTest(CVariableTests.suite());
+ suite.addTest(CCompositeTypeTests.suite());
+
+ suite.addTest(DefDeclTests.suite());
+ suite.addTest(RaceCondition157992Test.suite());
+ suite.addTest(ChangeConfigurationTests.suite());
+
+ return suite;
+ }
+}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/PDOMTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/PDOMTests.java
deleted file mode 100644
index 8f5f8242613..00000000000
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/PDOMTests.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2014 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX - Initial API and implementation
- * IBM Corporation
- * Andrew Ferguson (Symbian)
- * Marc-Andre Laperle
- *******************************************************************************/
-package org.eclipse.cdt.internal.pdom.tests;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * @author Doug Schaefer
- */
-public class PDOMTests extends TestSuite {
-
- public static Test suite() {
- TestSuite suite = new PDOMTests();
-
- suite.addTest(DatabaseTest.suite());
- suite.addTest(DBPropertiesTests.suite());
- suite.addTest(PDOMCBugsTest.suite());
- suite.addTest(PDOMCPPBugsTest.suite());
- suite.addTest(PDOMSearchTest.suite());
- suite.addTest(PDOMLocationTests.suite());
- suite.addTest(PDOMNameTests.suite());
- suite.addTest(PDOMProviderTests.suite());
- suite.addTest(EnumerationTests.suite());
- suite.addTest(ClassTests.suite());
- suite.addTest(TypesTests.suite());
- suite.addTest(IncludesTests.suite());
- suite.addTest(OverloadsWithinSingleTUTests.suite());
- suite.addTest(OverloadsWithinCommonHeaderTests.suite());
- suite.addTest(BTreeTests.suite());
- suite.addTest(PDOMStringSetTests.suite());
- suite.addTest(PDOMTagIndexTests.suite());
- suite.addTest(FilesOnReindexTests.suite());
- suite.addTest(GeneratePDOMApplicationTest.suite());
-
- suite.addTest(CPPFieldTests.suite());
- suite.addTest(CPPFunctionTests.suite());
- suite.addTest(CPPVariableTests.suite());
- suite.addTest(CPPClassTemplateTests.suite());
- suite.addTest(CPPFunctionTemplateTests.suite());
- suite.addTest(MethodTests.suite());
- suite.addTest(NamespaceTests.suite());
- suite.addTest(ClassMemberVisibilityTests.suite());
-
- suite.addTest(CFunctionTests.suite());
- suite.addTest(CVariableTests.suite());
- suite.addTest(CCompositeTypeTests.suite());
-
- suite.addTest(DefDeclTests.suite());
- suite.addTest(RaceCondition157992Test.suite());
- suite.addTest(ChangeConfigurationTests.suite());
-
- return suite;
- }
-}
diff --git a/core/org.eclipse.cdt.core.tests/plugin.properties b/core/org.eclipse.cdt.core.tests/plugin.properties
new file mode 100644
index 00000000000..862a907dddb
--- /dev/null
+++ b/core/org.eclipse.cdt.core.tests/plugin.properties
@@ -0,0 +1,14 @@
+##################################################################################
+# Copyright (c) 2020 Torbjörn Svensson and others. All rights reserved.
+# This program and the accompanying materials are made available under the terms
+# of the Eclipse Public License 2.0 which accompanies this distribution, and is
+# available at https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Torbjörn Svensson - initial API and implementation
+##################################################################################
+
+pluginName = org.eclipse.cdt.core.tests
+providerName = Eclipse CDT
diff --git a/core/org.eclipse.cdt.core.tests/pom.xml b/core/org.eclipse.cdt.core.tests/pom.xml
index 5f8eb233d37..a7cf08572d1 100644
--- a/core/org.eclipse.cdt.core.tests/pom.xml
+++ b/core/org.eclipse.cdt.core.tests/pom.xml
@@ -1,4 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2011, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
@@ -7,11 +17,11 @@
<parent>
<groupId>org.eclipse.cdt</groupId>
<artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
+ <version>10.7.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
- <version>5.4.0-SNAPSHOT</version>
+ <version>5.4.100-SNAPSHOT</version>
<artifactId>org.eclipse.cdt.core.tests</artifactId>
<packaging>eclipse-test-plugin</packaging>
@@ -44,10 +54,14 @@
<!-- Core tests actually use eclipse.ui classes, see CProjectHelper -->
<argLine>${tycho.testArgLine} ${base.ui.test.vmargs} ${extra.vmargs}</argLine>
<appArgLine>-pluginCustomization ${basedir}/../../disable_intro_in_tests.ini</appArgLine>
- <includes>
- <include>**/AutomatedIntegrationSuite.*</include>
- </includes>
- <testFailureIgnore>true</testFailureIgnore>
+ <excludes>
+ <!-- The default Excludes omits nested static classes, this reenables them.
+ See org.eclipse.cdt.core.parser.tests.ast2.cxx14.constexpr.ArrayTests.NonIndexingTests
+ for an example of a test that would not be run otherwise.
+ For reference, the default exclude is "**/*$*"
+ -->
+ <exclude></exclude>
+ </excludes>
</configuration>
</plugin>
<plugin>
diff --git a/core/org.eclipse.cdt.core.tests/regression/org/eclipse/cdt/core/tests/BaseTestFramework.java b/core/org.eclipse.cdt.core.tests/regression/org/eclipse/cdt/core/tests/BaseTestFramework.java
index 546b5c169a4..1cfdded6006 100644
--- a/core/org.eclipse.cdt.core.tests/regression/org/eclipse/cdt/core/tests/BaseTestFramework.java
+++ b/core/org.eclipse.cdt.core.tests/regression/org/eclipse/cdt/core/tests/BaseTestFramework.java
@@ -92,8 +92,6 @@ abstract public class BaseTestFramework extends BaseTestCase {
public void cleanupProject() throws Exception {
try {
project.delete(true, false, monitor);
- } catch (Throwable e) {
- /*boo*/
} finally {
project = null;
}
@@ -116,11 +114,7 @@ abstract public class BaseTestFramework extends BaseTestCase {
continue;
if (member.getName().equals(".settings"))
continue;
- try {
- member.delete(false, monitor);
- } catch (Throwable e) {
- /*boo*/
- }
+ member.delete(false, monitor);
}
}
diff --git a/core/org.eclipse.cdt.core.tests/regression/org/eclipse/cdt/core/tests/FailingTest.java b/core/org.eclipse.cdt.core.tests/regression/org/eclipse/cdt/core/tests/FailingTest.java
deleted file mode 100644
index 0273378aa07..00000000000
--- a/core/org.eclipse.cdt.core.tests/regression/org/eclipse/cdt/core/tests/FailingTest.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- * Markus Schorn (Wind River Systems)
- *******************************************************************************/
-
-/*
- * Created on Nov 1, 2004
- */
-package org.eclipse.cdt.core.tests;
-
-import junit.framework.AssertionFailedError;
-import junit.framework.TestCase;
-import junit.framework.TestFailure;
-import junit.framework.TestResult;
-
-/**
- * Wraps a test case to check for its failure.
- * @author aniefer
- */
-public class FailingTest extends TestCase {
- private TestCase test = null;
- private int bugNum = -1;
-
- public FailingTest(TestCase test, int bugNumber) {
- this.test = test;
- this.bugNum = bugNumber;
- String name = "Failing " + test.getName();
- if (bugNum > 0) {
- name += " [bug " + bugNum + "]";
- }
- setName(name);
- }
-
- public FailingTest(TestCase test) {
- this(test, -1);
- }
-
- /* (non-Javadoc)
- * @see junit.framework.Test#run(junit.framework.TestResult)
- */
- @Override
- public void run(TestResult result) {
- result.startTest(this);
-
- TestResult r = new TestResult();
- test.run(r);
- if (r.failureCount() == 1) {
- TestFailure failure = r.failures().nextElement();
- String msg = failure.exceptionMessage();
- if (msg != null && msg.startsWith("Method \"" + test.getName() + "\"")) {
- result.addFailure(this, new AssertionFailedError(msg));
- }
- } else if (r.errorCount() == 0 && r.failureCount() == 0) {
- String err = "Unexpected success"; //$NON-NLS-1$
- if (bugNum != -1)
- err += ", bug #" + bugNum; //$NON-NLS-1$
- result.addFailure(this, new AssertionFailedError(err));
- }
-
- result.endTest(this);
- }
-}
diff --git a/core/org.eclipse.cdt.core.tests/regression/org/eclipse/cdt/core/tests/FailingTester.java b/core/org.eclipse.cdt.core.tests/regression/org/eclipse/cdt/core/tests/FailingTester.java
new file mode 100644
index 00000000000..492b245be8b
--- /dev/null
+++ b/core/org.eclipse.cdt.core.tests/regression/org/eclipse/cdt/core/tests/FailingTester.java
@@ -0,0 +1,72 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2012 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ * Markus Schorn (Wind River Systems)
+ *******************************************************************************/
+
+/*
+ * Created on Nov 1, 2004
+ */
+package org.eclipse.cdt.core.tests;
+
+import junit.framework.AssertionFailedError;
+import junit.framework.TestCase;
+import junit.framework.TestFailure;
+import junit.framework.TestResult;
+
+/**
+ * Wraps a test case to check for its failure.
+ * @author aniefer
+ */
+public class FailingTester extends TestCase {
+ private TestCase test = null;
+ private int bugNum = -1;
+
+ public FailingTester(TestCase test, int bugNumber) {
+ this.test = test;
+ this.bugNum = bugNumber;
+ String name = "Failing " + test.getName();
+ if (bugNum > 0) {
+ name += " [bug " + bugNum + "]";
+ }
+ setName(name);
+ }
+
+ public FailingTester(TestCase test) {
+ this(test, -1);
+ }
+
+ /* (non-Javadoc)
+ * @see junit.framework.Test#run(junit.framework.TestResult)
+ */
+ @Override
+ public void run(TestResult result) {
+ result.startTest(this);
+
+ TestResult r = new TestResult();
+ test.run(r);
+ if (r.failureCount() == 1) {
+ TestFailure failure = r.failures().nextElement();
+ String msg = failure.exceptionMessage();
+ if (msg != null && msg.startsWith("Method \"" + test.getName() + "\"")) {
+ result.addFailure(this, new AssertionFailedError(msg));
+ }
+ } else if (r.errorCount() == 0 && r.failureCount() == 0) {
+ String err = "Unexpected success"; //$NON-NLS-1$
+ if (bugNum != -1)
+ err += ", bug #" + bugNum; //$NON-NLS-1$
+ result.addFailure(this, new AssertionFailedError(err));
+ }
+
+ result.endTest(this);
+ }
+}
diff --git a/core/org.eclipse.cdt.core.tests/resources/cfiles/CModelElementsTestStart.h b/core/org.eclipse.cdt.core.tests/resources/cfiles/CModelElementsTestStart.h
index d9736eff1d3..4d3e8071910 100644
--- a/core/org.eclipse.cdt.core.tests/resources/cfiles/CModelElementsTestStart.h
+++ b/core/org.eclipse.cdt.core.tests/resources/cfiles/CModelElementsTestStart.h
@@ -143,4 +143,18 @@ struct bug180815 {
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=352350
namespace {
int bug352350;
-} \ No newline at end of file
+}
+
+// https://bugs.eclipse.org/bugs/show_bug.cgi?id=574271
+#pragma mark - before and after -
+#pragma mark - before
+#pragma mark after -
+#pragma mark neither
+#pragma mark -// blank1
+#pragma mark // blank2
+#pragma region // no name
+#pragma region named
+#pragma endregion // no name
+#pragma endregion endnamed
+#pragma ms_struct on
+_Pragma("once")
diff --git a/core/org.eclipse.cdt.core.tests/resources/elf/unit_test/Makefile b/core/org.eclipse.cdt.core.tests/resources/elf/unit_test/Makefile
new file mode 100644
index 00000000000..3bf7cf61345
--- /dev/null
+++ b/core/org.eclipse.cdt.core.tests/resources/elf/unit_test/Makefile
@@ -0,0 +1,2 @@
+#just an example
+gcc simple.c -g -o simple.elf \ No newline at end of file
diff --git a/core/org.eclipse.cdt.core.tests/resources/elf/unit_test/readme.txt b/core/org.eclipse.cdt.core.tests/resources/elf/unit_test/readme.txt
new file mode 100644
index 00000000000..680713cecba
--- /dev/null
+++ b/core/org.eclipse.cdt.core.tests/resources/elf/unit_test/readme.txt
@@ -0,0 +1,23 @@
+## Adding elf files tests
+
+1- generate an elf file
+
+e.g.
+`gcc simple.c -g -o simple-my_arch.elf
+
+where gcc is the appropriate compiler
+examples of gcc in linux would be:
+- aarch64-linux-gnu-gcc
+- power-linux-gnu-gcc
+...
+
+2- read certain fields:
+
+`readelf simple-my_arch.elf -s
+or
+`readelf simple-my_arch.elf -a
+
+
+3- update ElfTest.java by adding the new architecture into the method "elfArchitectures"
+
+That is it. \ No newline at end of file
diff --git a/core/org.eclipse.cdt.core.tests/resources/elf/unit_test/simple-be32.elf b/core/org.eclipse.cdt.core.tests/resources/elf/unit_test/simple-be32.elf
new file mode 100644
index 00000000000..a94056380df
--- /dev/null
+++ b/core/org.eclipse.cdt.core.tests/resources/elf/unit_test/simple-be32.elf
Binary files differ
diff --git a/core/org.eclipse.cdt.core.tests/resources/elf/unit_test/simple-be64.elf b/core/org.eclipse.cdt.core.tests/resources/elf/unit_test/simple-be64.elf
new file mode 100644
index 00000000000..0855753db3f
--- /dev/null
+++ b/core/org.eclipse.cdt.core.tests/resources/elf/unit_test/simple-be64.elf
Binary files differ
diff --git a/core/org.eclipse.cdt.core.tests/resources/elf/unit_test/simple-le32.elf b/core/org.eclipse.cdt.core.tests/resources/elf/unit_test/simple-le32.elf
new file mode 100644
index 00000000000..89c539d3e36
--- /dev/null
+++ b/core/org.eclipse.cdt.core.tests/resources/elf/unit_test/simple-le32.elf
Binary files differ
diff --git a/core/org.eclipse.cdt.core.tests/resources/elf/unit_test/simple-le64.elf b/core/org.eclipse.cdt.core.tests/resources/elf/unit_test/simple-le64.elf
new file mode 100644
index 00000000000..be802b49046
--- /dev/null
+++ b/core/org.eclipse.cdt.core.tests/resources/elf/unit_test/simple-le64.elf
Binary files differ
diff --git a/core/org.eclipse.cdt.core.tests/resources/elf/unit_test/simple.c b/core/org.eclipse.cdt.core.tests/resources/elf/unit_test/simple.c
new file mode 100644
index 00000000000..ed52c24d253
--- /dev/null
+++ b/core/org.eclipse.cdt.core.tests/resources/elf/unit_test/simple.c
@@ -0,0 +1,9 @@
+int function(int argument)
+{
+ return 2 * argument;
+}
+
+int main()
+{
+ return function(2);
+}
diff --git a/core/org.eclipse.cdt.core.tests/resources/pdomtests/classTests/class.cpp b/core/org.eclipse.cdt.core.tests/resources/pdomtests/classTests/class.cpp
index 6a606e8e3df..17c5fd0f009 100644
--- a/core/org.eclipse.cdt.core.tests/resources/pdomtests/classTests/class.cpp
+++ b/core/org.eclipse.cdt.core.tests/resources/pdomtests/classTests/class.cpp
@@ -35,3 +35,6 @@ class D {
class E final : public A {
};
+
+class [[nodiscard]] F : public A {
+};
diff --git a/core/org.eclipse.cdt.core.tests/resources/pdomtests/enumerationTests/enumTest.cpp b/core/org.eclipse.cdt.core.tests/resources/pdomtests/enumerationTests/enumTest.cpp
index 83d528fd48b..3d470c8d298 100644
--- a/core/org.eclipse.cdt.core.tests/resources/pdomtests/enumerationTests/enumTest.cpp
+++ b/core/org.eclipse.cdt.core.tests/resources/pdomtests/enumerationTests/enumTest.cpp
@@ -7,3 +7,9 @@ enum TestCPPEnum {
TestCPPEnum test() {
return cppa;
}
+
+enum [[nodiscard]] TestCPPEnumNoDis {
+ e1,
+ e2,
+ e3
+};
diff --git a/core/org.eclipse.cdt.core.tests/resources/pdomtests/functionTests/modifiers.cpp b/core/org.eclipse.cdt.core.tests/resources/pdomtests/functionTests/modifiers.cpp
index e64112ba4c5..e5e49c5ef14 100644
--- a/core/org.eclipse.cdt.core.tests/resources/pdomtests/functionTests/modifiers.cpp
+++ b/core/org.eclipse.cdt.core.tests/resources/pdomtests/functionTests/modifiers.cpp
@@ -10,6 +10,12 @@ void leadingNoReturnStdAttributeDecl() [[noreturn]];
[[noreturn]] void trailingNoReturnStdAttributeDef(){}
void leadingNoReturnStdAttributeDef() [[noreturn]]{}
+int noDiscardCPPFunction() __attribute__((warn_unused_result));
+[[nodiscard]] int trailingNoDiscardStdAttributeDecl();
+int leadingNoDiscardStdAttributeDecl() [[nodiscard]];
+[[nodiscard]] int trailingNoDiscardStdAttributeDef(){return 0;}
+int leadingNoDiscardStdAttributeDef() [[nodiscard]]{return 0;}
+
void voidCPPFunction();
int intCPPFunction();
double doubleCPPFunction();
diff --git a/core/org.eclipse.cdt.core.tests/resources/testlib/x86/so.g/libtestlib_g.so b/core/org.eclipse.cdt.core.tests/resources/testlib/x86/so.g/libtestlib_g.so
index c0e76f7695b..c0e76f7695b 100644..100755
--- a/core/org.eclipse.cdt.core.tests/resources/testlib/x86/so.g/libtestlib_g.so
+++ b/core/org.eclipse.cdt.core.tests/resources/testlib/x86/so.g/libtestlib_g.so
Binary files differ
diff --git a/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/suite/AutomatedIntegrationSuite.java b/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/suite/AutomatedIntegrationSuite.java
index 6babc089cbd..c6e0b263bb1 100644
--- a/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/suite/AutomatedIntegrationSuite.java
+++ b/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/suite/AutomatedIntegrationSuite.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2005, 2015 IBM Corporation and others.
+ * Copyright (c) 2005, 2020 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -12,28 +12,28 @@
* IBM Corporation - initial API and implementation
* Markus Schorn (Wind River Systems)
* Norbert Ploett (Siemens AG)
+ * Alexander Fedorov <alexander.fedorov@arsysop.ru> Bug 559193
*******************************************************************************/
package org.eclipse.cdt.core.suite;
import org.eclipse.cdt.core.cdescriptor.tests.CDescriptorOldTests;
-import org.eclipse.cdt.core.cdescriptor.tests.CDescriptorTests;
import org.eclipse.cdt.core.envvar.IEnvironmentVariableManagerTests;
import org.eclipse.cdt.core.internal.efsextension.tests.EFSExtensionTests;
-import org.eclipse.cdt.core.internal.errorparsers.tests.ErrorParserTests;
+import org.eclipse.cdt.core.internal.errorparsers.tests.ErrorParserTestSuite;
import org.eclipse.cdt.core.internal.tests.PositionTrackerTests;
import org.eclipse.cdt.core.internal.tests.ResourceLookupTests;
import org.eclipse.cdt.core.internal.tests.StringBuilderTest;
-import org.eclipse.cdt.core.language.AllLanguageTests;
-import org.eclipse.cdt.core.model.tests.AllCoreTests;
+import org.eclipse.cdt.core.language.AllLanguageTestSuite;
+import org.eclipse.cdt.core.model.tests.AllCoreTestSuite;
import org.eclipse.cdt.core.model.tests.ElementDeltaTests;
import org.eclipse.cdt.core.model.tests.WorkingCopyTests;
import org.eclipse.cdt.core.parser.tests.ParserTestSuite;
-import org.eclipse.cdt.core.parser.tests.ast2.cxx14.constexpr.AllConstexprEvalTests;
-import org.eclipse.cdt.core.parser.tests.rewrite.RewriteTests;
-import org.eclipse.cdt.core.preferences.tests.TestScopeOfBuildConfigResourceChangesPreference;
+import org.eclipse.cdt.core.parser.tests.ast2.cxx14.constexpr.AllConstexprEvalTestSuite;
+import org.eclipse.cdt.core.parser.tests.rewrite.RewriteTestSuite;
+import org.eclipse.cdt.core.preferences.tests.ScopeOfBuildConfigResourceChangesPreferenceTests;
import org.eclipse.cdt.core.resources.tests.RefreshScopeTests;
-import org.eclipse.cdt.internal.index.tests.IndexTests;
-import org.eclipse.cdt.internal.pdom.tests.PDOMTests;
+import org.eclipse.cdt.internal.index.tests.IndexTestSuite;
+import org.eclipse.cdt.internal.pdom.tests.PDOMTestSuite;
import org.eclipse.cdt.utils.ByteUtilsTest;
import org.eclipse.cdt.utils.CdtVariableResolverTest;
import org.eclipse.cdt.utils.CommandLineUtilTest;
@@ -42,14 +42,18 @@ import org.eclipse.cdt.utils.StorableCdtVariablesTest;
import org.eclipse.cdt.utils.UNCPathConverterTest;
import org.eclipse.cdt.utils.WeakHashSetTest;
import org.eclipse.cdt.utils.elf.ElfParserTest;
+import org.eclipse.cdt.utils.elf.ElfTest;
+import junit.framework.JUnit4TestAdapter;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
/**
* @author vhirsl
+ * @deprecated In preparation for moving to JUnit5 test suites are deprecated. See Bug 569839
*/
+@Deprecated
public class AutomatedIntegrationSuite extends TestSuite {
public AutomatedIntegrationSuite() {
@@ -72,21 +76,21 @@ public class AutomatedIntegrationSuite extends TestSuite {
// Has intermittent failures
if (System.getProperty("cdt.skip.known.test.failures") == null) {
- suite.addTest(CDescriptorTests.suite());
+ // Test converted to JUnit5: suite.addTest(CDescriptorTests.suite());
}
- suite.addTest(AllConstexprEvalTests.suite());
+ suite.addTest(AllConstexprEvalTestSuite.suite());
suite.addTest(ParserTestSuite.suite());
suite.addTest(CDescriptorOldTests.suite());
suite.addTest(IEnvironmentVariableManagerTests.suite());
- suite.addTest(ErrorParserTests.suite());
- suite.addTest(AllCoreTests.suite());
+ suite.addTest(ErrorParserTestSuite.suite());
+ suite.addTest(AllCoreTestSuite.suite());
suite.addTest(ElementDeltaTests.suite());
suite.addTest(WorkingCopyTests.suite());
suite.addTest(PositionTrackerTests.suite());
suite.addTest(ResourceLookupTests.suite());
suite.addTest(StringBuilderTest.suite());
- suite.addTest(AllLanguageTests.suite());
- suite.addTest(RewriteTests.suite());
+ suite.addTest(AllLanguageTestSuite.suite());
+ suite.addTest(RewriteTestSuite.suite());
suite.addTest(CdtVariableResolverTest.suite());
suite.addTest(StorableCdtVariablesTest.suite());
suite.addTest(CommandLineUtilTest.suite());
@@ -95,12 +99,13 @@ public class AutomatedIntegrationSuite extends TestSuite {
suite.addTest(EFSExtensionTests.suite());
suite.addTest(ByteUtilsTest.suite());
suite.addTest(UNCPathConverterTest.suite());
- suite.addTest(TestScopeOfBuildConfigResourceChangesPreference.suite());
+ suite.addTest(ScopeOfBuildConfigResourceChangesPreferenceTests.suite());
suite.addTest(ElfParserTest.suite());
+ suite.addTest(new JUnit4TestAdapter(ElfTest.class));
// Add in PDOM tests
- suite.addTest(PDOMTests.suite());
- suite.addTest(IndexTests.suite());
+ suite.addTest(PDOMTestSuite.suite());
+ suite.addTest(IndexTestSuite.suite());
suite.addTest(RefreshScopeTests.suite());
diff --git a/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/testplugin/util/BaseTestCase.java b/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/testplugin/util/BaseTestCase.java
index 58dcc367bd7..c6efc350e43 100644
--- a/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/testplugin/util/BaseTestCase.java
+++ b/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/testplugin/util/BaseTestCase.java
@@ -20,36 +20,21 @@ import java.io.IOException;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.ArrayDeque;
-import java.util.ArrayList;
-import java.util.Collections;
import java.util.Deque;
import java.util.HashSet;
-import java.util.List;
import java.util.Set;
-import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.dom.ast.IASTName;
import org.eclipse.cdt.core.dom.ast.IValue;
import org.eclipse.cdt.core.dom.ast.IVariable;
import org.eclipse.cdt.core.index.IIndex;
-import org.eclipse.cdt.core.model.CoreModel;
-import org.eclipse.cdt.core.model.ElementChangedEvent;
import org.eclipse.cdt.core.model.ICProject;
-import org.eclipse.cdt.core.model.IElementChangedListener;
import org.eclipse.cdt.core.testplugin.ResourceHelper;
import org.eclipse.cdt.core.testplugin.TestScannerProvider;
-import org.eclipse.cdt.internal.core.CCoreInternals;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTNameBase;
import org.eclipse.cdt.internal.core.pdom.CModelListener;
import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IResourceStatus;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.ILogListener;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.MultiStatus;
import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.jobs.Job;
import junit.framework.AssertionFailedError;
import junit.framework.Test;
@@ -58,29 +43,33 @@ import junit.framework.TestFailure;
import junit.framework.TestResult;
import junit.framework.TestSuite;
-public class BaseTestCase extends TestCase {
- private static final String DEFAULT_INDEXER_TIMEOUT_SEC = "10";
- private static final String INDEXER_TIMEOUT_PROPERTY = "indexer.timeout";
+/**
+ * @deprecated Please migrate tests away from JUnit3 style to JUnit5 style by using {@link BaseTestCase5}
+ * as base class.
+ */
+@Deprecated
+public abstract class BaseTestCase extends TestCase {
+ private static final String DEFAULT_INDEXER_TIMEOUT_SEC = BaseTestCase5.DEFAULT_INDEXER_TIMEOUT_SEC;
+ private static final String INDEXER_TIMEOUT_PROPERTY = BaseTestCase5.INDEXER_TIMEOUT_PROPERTY;
/**
* Indexer timeout used by tests. To avoid this timeout expiring during debugging add
* -Dindexer.timeout=some_large_number to VM arguments of the test launch configuration.
*/
- protected static final int INDEXER_TIMEOUT_SEC = Integer
- .parseInt(System.getProperty(INDEXER_TIMEOUT_PROPERTY, DEFAULT_INDEXER_TIMEOUT_SEC));
- protected static final int INDEXER_TIMEOUT_MILLISEC = INDEXER_TIMEOUT_SEC * 1000;
+ protected static final int INDEXER_TIMEOUT_SEC = BaseTestCase5.INDEXER_TIMEOUT_SEC;
+ protected static final int INDEXER_TIMEOUT_MILLISEC = BaseTestCase5.INDEXER_TIMEOUT_MILLISEC;
/**
* The GCC version to emulate when running tests.
* We emulate the latest version whose extensions we support.
*/
- protected static final int GCC_MAJOR_VERSION_FOR_TESTS = 8;
- protected static final int GCC_MINOR_VERSION_FOR_TESTS = 1;
+ protected static final int GCC_MAJOR_VERSION_FOR_TESTS = BaseTestCase5.GCC_MAJOR_VERSION_FOR_TESTS;
+ protected static final int GCC_MINOR_VERSION_FOR_TESTS = BaseTestCase5.GCC_MINOR_VERSION_FOR_TESTS;
/**
* This provides the systems new line separator. Use this if you do String comparisons in tests
* instead of hard coding '\n' or '\r\n' respectively.
*/
- protected static final String NL = System.getProperty("line.separator");
+ protected static final String NL = BaseTestCase5.NL;
private boolean fExpectFailure;
private int fBugNumber;
@@ -187,74 +176,13 @@ public class BaseTestCase extends TestCase {
@Override
public void runBare() throws Throwable {
- final List<IStatus> statusLog = Collections.synchronizedList(new ArrayList());
- ILogListener logListener = new ILogListener() {
- @Override
- public void logging(IStatus status, String plugin) {
- if (!status.isOK() && status.getSeverity() != IStatus.INFO) {
- switch (status.getCode()) {
- case IResourceStatus.NOT_FOUND_LOCAL:
- case IResourceStatus.NO_LOCATION_LOCAL:
- case IResourceStatus.FAILED_READ_LOCAL:
- case IResourceStatus.RESOURCE_NOT_LOCAL:
- // Logged by the resources plugin.
- return;
- }
- statusLog.add(status);
- }
- }
- };
- final CCorePlugin corePlugin = CCorePlugin.getDefault();
- if (corePlugin != null) { // Iff we don't run as a JUnit Plugin Test.
- corePlugin.getLog().addLogListener(logListener);
- }
-
- Throwable testThrowable = null;
+ LogMonitoring monitoring = new LogMonitoring();
+ monitoring.start();
try {
- try {
- super.runBare();
- } catch (Throwable e) {
- testThrowable = e;
- }
-
- if (statusLog.size() != fExpectedLoggedNonOK) {
- StringBuilder msg = new StringBuilder("Expected number (").append(fExpectedLoggedNonOK).append(") of ");
- msg.append("Non-OK status objects in log differs from actual (").append(statusLog.size())
- .append(").\n");
- Throwable cause = null;
- if (!statusLog.isEmpty()) {
- synchronized (statusLog) {
- for (IStatus status : statusLog) {
- IStatus[] ss = { status };
- ss = status instanceof MultiStatus ? ((MultiStatus) status).getChildren() : ss;
- for (IStatus s : ss) {
- msg.append('\t').append(s.getMessage()).append(' ');
-
- Throwable t = s.getException();
- cause = cause != null ? cause : t;
- if (t != null) {
- msg.append(
- t.getMessage() != null ? t.getMessage() : t.getClass().getCanonicalName());
- }
-
- msg.append("\n");
- }
- }
- }
- }
- cause = cause != null ? cause : testThrowable;
- AssertionFailedError afe = new AssertionFailedError(msg.toString());
- afe.initCause(cause);
- throw afe;
- }
+ super.runBare();
} finally {
- if (corePlugin != null) {
- corePlugin.getLog().removeLogListener(logListener);
- }
+ monitoring.stop(fExpectedLoggedNonOK);
}
-
- if (testThrowable != null)
- throw testThrowable;
}
@Override
@@ -302,97 +230,29 @@ public class BaseTestCase extends TestCase {
fExpectedLoggedNonOK = count;
}
- /**
- * Some test steps need synchronizing against a CModel event. This class
- * is a very basic means of doing that.
- */
- static protected class ModelJoiner implements IElementChangedListener {
- private final boolean[] changed = new boolean[1];
-
- public ModelJoiner() {
- CoreModel.getDefault().addElementChangedListener(this);
- }
-
- public void clear() {
- synchronized (changed) {
- changed[0] = false;
- changed.notifyAll();
- }
- }
-
- public void join() throws CoreException {
- try {
- synchronized (changed) {
- while (!changed[0]) {
- changed.wait();
- }
- }
- } catch (InterruptedException e) {
- throw new CoreException(CCorePlugin.createStatus("Interrupted", e));
- }
- }
-
- public void dispose() {
- CoreModel.getDefault().removeElementChangedListener(this);
- }
-
- @Override
- public void elementChanged(ElementChangedEvent event) {
- // Only respond to post change events
- if (event.getType() != ElementChangedEvent.POST_CHANGE)
- return;
-
- synchronized (changed) {
- changed[0] = true;
- changed.notifyAll();
- }
- }
- }
-
public static void waitForIndexer(ICProject project) throws InterruptedException {
- Job.getJobManager().join(ResourcesPlugin.FAMILY_AUTO_REFRESH, null);
- assertTrue(CCoreInternals.getPDOMManager().joinIndexer(INDEXER_TIMEOUT_SEC * 1000, npm()));
+ BaseTestCase5.waitForIndexer(project);
}
public static void waitUntilFileIsIndexed(IIndex index, IFile file) throws Exception {
- TestSourceReader.waitUntilFileIsIndexed(index, file, INDEXER_TIMEOUT_SEC * 1000);
+ BaseTestCase5.waitUntilFileIsIndexed(index, file);
}
- // Assertion helpers
+ // Assertion helpers (redirected to the common implementation)
protected static <T> T assertInstance(Object o, Class<T> clazz, Class... cs) {
- assertNotNull("Expected object of " + clazz.getName() + " but got a null value", o);
- assertTrue("Expected " + clazz.getName() + " but got " + o.getClass().getName(), clazz.isInstance(o));
- for (Class c : cs) {
- assertNotNull("Expected object of " + c.getName() + " but got a null value", o);
- assertTrue("Expected " + c.getName() + " but got " + o.getClass().getName(), c.isInstance(o));
- }
- return clazz.cast(o);
+ return BaseTestCase5.assertInstance(o, clazz, cs);
}
protected static void assertValue(IValue value, long expectedValue) {
- assertNotNull(value);
- assertTrue(value.numberValue() instanceof Long);
- assertEquals(expectedValue, value.numberValue().longValue());
+ BaseTestCase5.assertValue(value, expectedValue);
}
protected static void assertVariableValue(IVariable var, long expectedValue) {
- assertValue(var.getInitialValue(), expectedValue);
+ BaseTestCase5.assertVariableValue(var, expectedValue);
}
protected static String formatForPrinting(IASTName name) {
- String signature = name.getRawSignature();
- boolean saved = CPPASTNameBase.sAllowNameComputation;
- CPPASTNameBase.sAllowNameComputation = true;
- try {
- String nameStr = name.toString();
- if (signature.replace(" ", "").equals(nameStr.replace(" ", "")))
- return signature;
- return nameStr + " in " + signature;
- } catch (Throwable e) {
- return signature;
- } finally {
- CPPASTNameBase.sAllowNameComputation = saved;
- }
+ return BaseTestCase5.formatForPrinting(name);
}
}
diff --git a/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/testplugin/util/BaseTestCase5.java b/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/testplugin/util/BaseTestCase5.java
new file mode 100644
index 00000000000..d486ac35829
--- /dev/null
+++ b/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/testplugin/util/BaseTestCase5.java
@@ -0,0 +1,309 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2020 Wind River Systems, Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Markus Schorn - initial API and implementation
+ * Andrew Ferguson (Symbian)
+ * Sergey Prigogin (Google)
+ *******************************************************************************/
+package org.eclipse.cdt.core.testplugin.util;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayDeque;
+import java.util.Deque;
+
+import org.eclipse.cdt.core.dom.ast.IASTName;
+import org.eclipse.cdt.core.dom.ast.IValue;
+import org.eclipse.cdt.core.dom.ast.IVariable;
+import org.eclipse.cdt.core.index.IIndex;
+import org.eclipse.cdt.core.model.ICProject;
+import org.eclipse.cdt.core.testplugin.ResourceHelper;
+import org.eclipse.cdt.core.testplugin.TestScannerProvider;
+import org.eclipse.cdt.internal.core.CCoreInternals;
+import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTNameBase;
+import org.eclipse.cdt.internal.core.pdom.CModelListener;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.jobs.Job;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.TestInfo;
+
+import junit.framework.Test;
+import junit.framework.TestResult;
+
+/**
+ * BaseTestCase for JUnit5.
+ */
+public abstract class BaseTestCase5 {
+ /**
+ * Bug 499777: Numerous tests are flaky and of little value on gerrit verification builds. This
+ * tag can be applied to JUnit5 tests with the {@link Tag} annotation to skip flaky tests in
+ * such circumstances.
+ */
+ public static final String FLAKY_TEST_TAG = "flakyTest";
+
+ /**
+ * Bug 499777: Numerous tests are very slow and of little value on gerrit verification builds. This
+ * tag can be applied to JUnit5 tests with the {@link Tag} annotation to skip slow tests in
+ * such circumstances.
+ */
+ public static final String SLOW_TEST_TAG = "slowTest";
+
+ protected static final String DEFAULT_INDEXER_TIMEOUT_SEC = "10";
+ protected static final String INDEXER_TIMEOUT_PROPERTY = "indexer.timeout";
+ /**
+ * Indexer timeout used by tests. To avoid this timeout expiring during debugging add
+ * -Dindexer.timeout=some_large_number to VM arguments of the test launch configuration.
+ */
+ protected static final int INDEXER_TIMEOUT_SEC = Integer
+ .parseInt(System.getProperty(INDEXER_TIMEOUT_PROPERTY, DEFAULT_INDEXER_TIMEOUT_SEC));
+ protected static final int INDEXER_TIMEOUT_MILLISEC = INDEXER_TIMEOUT_SEC * 1000;
+
+ /**
+ * The GCC version to emulate when running tests.
+ * We emulate the latest version whose extensions we support.
+ */
+ protected static final int GCC_MAJOR_VERSION_FOR_TESTS = 10;
+ protected static final int GCC_MINOR_VERSION_FOR_TESTS = 1;
+
+ /**
+ * This provides the systems new line separator. Use this if you do String comparisons in tests
+ * instead of hard coding '\n' or '\r\n' respectively.
+ */
+ protected static final String NL = System.getProperty("line.separator");
+
+ private boolean fExpectFailure;
+ private int fBugNumber;
+ private int fExpectedLoggedNonOK;
+ private Deque<File> filesToDeleteOnTearDown = new ArrayDeque<>();
+ private TestInfo testInfo;
+
+ LogMonitoring logMonitoring = new LogMonitoring();
+
+ /**
+ * Backwards support for JUnit3 style test that had a getName. This is not 100% the same, but close
+ * enough for the general use case of getName.
+ */
+ public String getName() {
+ return testInfo.getDisplayName();
+ }
+
+ public static NullProgressMonitor npm() {
+ return new NullProgressMonitor();
+ }
+
+ @BeforeEach
+ protected void setupBase(TestInfo testInfo) throws Exception {
+ this.testInfo = testInfo;
+
+ logMonitoring.start();
+
+ CPPASTNameBase.sAllowRecursionBindings = false;
+ CPPASTNameBase.sAllowNameComputation = false;
+ CModelListener.sSuppressUpdateOfLastRecentlyUsed = true;
+ }
+
+ @AfterEach
+ protected void tearDownBase() throws Exception {
+ for (File file; (file = filesToDeleteOnTearDown.pollLast()) != null;) {
+ file.delete();
+ }
+ ResourceHelper.cleanUp(getName());
+ TestScannerProvider.clear();
+
+ logMonitoring.stop(fExpectedLoggedNonOK);
+ }
+
+ protected void deleteOnTearDown(File file) {
+ filesToDeleteOnTearDown.add(file);
+ }
+
+ protected File createTempFile(String prefix, String suffix) throws IOException {
+ File file = File.createTempFile(prefix, suffix);
+ filesToDeleteOnTearDown.add(file);
+ return file;
+ }
+
+ protected File nonExistentTempFile(String prefix, String suffix) {
+ File file = new File(System.getProperty("java.io.tmpdir"), prefix + System.currentTimeMillis() + suffix);
+ filesToDeleteOnTearDown.add(file);
+ return file;
+ }
+
+ /**
+ * The last value passed to this method in the body of a testXXX method
+ * will be used to determine whether or not the presence of non-OK status objects
+ * in the log should fail the test. If the logged number of non-OK status objects
+ * differs from the last value passed, the test is failed. If this method is not called
+ * at all, the expected number defaults to zero.
+ * @param count the expected number of logged error and warning messages
+ */
+ public void setExpectedNumberOfLoggedNonOKStatusObjects(int count) {
+ fExpectedLoggedNonOK = count;
+ }
+
+ public static void waitForIndexer(ICProject project) throws InterruptedException {
+ Job.getJobManager().join(ResourcesPlugin.FAMILY_AUTO_REFRESH, null);
+ assertTrue(CCoreInternals.getPDOMManager().joinIndexer(INDEXER_TIMEOUT_SEC * 1000, npm()));
+ }
+
+ public static void waitUntilFileIsIndexed(IIndex index, IFile file) throws Exception {
+ TestSourceReader.waitUntilFileIsIndexed(index, file, INDEXER_TIMEOUT_SEC * 1000);
+ }
+
+ // Assertion helpers
+
+ /**
+ * Asserts that the file does exist and prints a niceish error message if not.
+ */
+ public static void assertExists(File f) {
+ assertTrue(f.exists(), "File " + f + " does not exist");
+ }
+
+ /**
+ * Asserts that the resource does exist and prints a niceish error message if not.
+ */
+ public static void assertExists(IResource f) {
+ assertTrue(f.exists(), "Resource " + f + " does not exist");
+ }
+
+ /**
+ * Asserts that the file does exist and prints a niceish error message if not.
+ */
+ public static void assertNotExists(File f) {
+ assertFalse(f.exists(), "File " + f + " should not exist");
+ }
+
+ /**
+ * Asserts that the Resource does exist and prints a niceish error message if not.
+ */
+ public static void assertNotExists(IResource f) {
+ assertFalse(f.exists(), "Resource " + f + " should not exist");
+ }
+
+ public static <T> T assertInstance(Object o, Class<T> clazz, Class... cs) {
+ assertNotNull(o, "Expected object of " + clazz.getName() + " but got a null value");
+ assertTrue(clazz.isInstance(o), "Expected " + clazz.getName() + " but got " + o.getClass().getName());
+ for (Class c : cs) {
+ assertNotNull(o, "Expected object of " + c.getName() + " but got a null value");
+ assertTrue(c.isInstance(o), "Expected " + c.getName() + " but got " + o.getClass().getName());
+ }
+ return clazz.cast(o);
+ }
+
+ public static void assertValue(IValue value, long expectedValue) {
+ assertNotNull(value);
+ assertTrue(value.numberValue() instanceof Long);
+ assertEquals(expectedValue, value.numberValue().longValue());
+ }
+
+ public static void assertVariableValue(IVariable var, long expectedValue) {
+ assertValue(var.getInitialValue(), expectedValue);
+ }
+
+ public static String formatForPrinting(IASTName name) {
+ String signature = name.getRawSignature();
+ boolean saved = CPPASTNameBase.sAllowNameComputation;
+ CPPASTNameBase.sAllowNameComputation = true;
+ try {
+ String nameStr = name.toString();
+ if (signature.replace(" ", "").equals(nameStr.replace(" ", "")))
+ return signature;
+ return nameStr + " in " + signature;
+ } catch (Throwable e) {
+ return signature;
+ } finally {
+ CPPASTNameBase.sAllowNameComputation = saved;
+ }
+ }
+
+ // These methods help migrate from JUnit3 to JUnit5 version by providing errors as early as possible
+ // in the migration cycle
+
+ public BaseTestCase5() {
+ // This constructor is expected to be called
+ }
+
+ /**
+ * This JUnit3 style constructor is not supported.
+ */
+ private BaseTestCase5(String name) {
+ fail("Test not migrated properly to JUnit5 yet.");
+ }
+
+ /**
+ * This method is declared as final to help transition to JUnit5 to ensure that
+ * accidental override of the method is not left in subclasses when migrating.
+ */
+ final protected void setUp() {
+ fail("Test not migrated properly to JUnit5 yet.");
+ }
+
+ /**
+ * This method is declared as final to help transition to JUnit5 to ensure that
+ * accidental override of the method is not left in subclasses when migrating.
+ */
+ final protected static Test suite() {
+ fail("Test not migrated properly to JUnit5 yet.");
+ return null; // unreachable
+ }
+
+ /**
+ * This method is declared as final to help transition to JUnit5 to ensure that
+ * accidental override of the method is not left in subclasses when migrating.
+ */
+ final protected void tearDown() {
+ fail("Test not migrated properly to JUnit5 yet.");
+ }
+
+ /**
+ * This method is declared as final to help transition to JUnit5 to ensure that
+ * accidental override of the method is not left in subclasses when migrating.
+ */
+ final protected void runBare() {
+ fail("Test not migrated properly to JUnit5 yet.");
+ }
+
+ /**
+ * This method is declared as final to help transition to JUnit5 to ensure that
+ * accidental override of the method is not left in subclasses when migrating.
+ */
+ final protected void run(TestResult result) {
+ fail("Test not migrated properly to JUnit5 yet.");
+ }
+
+ /**
+ * This method is declared as final to help transition to JUnit5 to ensure that
+ * accidental override of the method is not left in subclasses when migrating.
+ */
+ final protected void runTest() throws Throwable {
+ fail("Test not migrated properly to JUnit5 yet.");
+ }
+
+ /**
+ * Setting expected failures in this way is not support with the BaseTestCase5. If this
+ * is functionality that is needed, please find a new way to do it.
+ */
+ public void setExpectFailure(int bugNumber) {
+ fail("Test not migrated properly to JUnit5 yet.");
+ }
+
+}
diff --git a/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/testplugin/util/LogMonitoring.java b/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/testplugin/util/LogMonitoring.java
new file mode 100644
index 00000000000..88b630230d3
--- /dev/null
+++ b/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/testplugin/util/LogMonitoring.java
@@ -0,0 +1,90 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2020 Wind River Systems, Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.core.testplugin.util;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.cdt.core.CCorePlugin;
+import org.eclipse.core.resources.IResourceStatus;
+import org.eclipse.core.runtime.ILogListener;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.MultiStatus;
+
+import junit.framework.AssertionFailedError;
+
+class LogMonitoring {
+
+ private List<IStatus> statusLog;
+
+ private ILogListener logListener;
+
+ private CCorePlugin corePlugin;
+
+ void start() {
+ statusLog = Collections.synchronizedList(new ArrayList());
+ logListener = new ILogListener() {
+ @Override
+ public void logging(IStatus status, String plugin) {
+ if (!status.isOK() && status.getSeverity() != IStatus.INFO) {
+ switch (status.getCode()) {
+ case IResourceStatus.NOT_FOUND_LOCAL:
+ case IResourceStatus.NO_LOCATION_LOCAL:
+ case IResourceStatus.FAILED_READ_LOCAL:
+ case IResourceStatus.RESOURCE_NOT_LOCAL:
+ // Logged by the resources plugin.
+ return;
+ }
+ statusLog.add(status);
+ }
+ }
+ };
+ corePlugin = CCorePlugin.getDefault();
+ if (corePlugin != null) { // Iff we don't run as a JUnit Plugin Test.
+ corePlugin.getLog().addLogListener(logListener);
+ }
+
+ }
+
+ void stop(int expectedLoggedNonOK) {
+ if (statusLog.size() != expectedLoggedNonOK) {
+ StringBuilder msg = new StringBuilder("Expected number (").append(expectedLoggedNonOK).append(") of ");
+ msg.append("Non-OK status objects in log differs from actual (").append(statusLog.size()).append(").\n");
+ Throwable cause = null;
+ if (!statusLog.isEmpty()) {
+ synchronized (statusLog) {
+ for (IStatus status : statusLog) {
+ IStatus[] ss = { status };
+ ss = status instanceof MultiStatus ? ((MultiStatus) status).getChildren() : ss;
+ for (IStatus s : ss) {
+ msg.append('\t').append(s.getMessage()).append(' ');
+
+ Throwable t = s.getException();
+ cause = cause != null ? cause : t;
+ if (t != null) {
+ msg.append(t.getMessage() != null ? t.getMessage() : t.getClass().getCanonicalName());
+ }
+
+ msg.append("\n");
+ }
+ }
+ }
+ }
+ AssertionFailedError afe = new AssertionFailedError(msg.toString());
+ afe.initCause(cause);
+ throw afe;
+ }
+ if (corePlugin != null) {
+ corePlugin.getLog().removeLogListener(logListener);
+ }
+ }
+} \ No newline at end of file
diff --git a/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/testplugin/util/ModelJoiner.java b/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/testplugin/util/ModelJoiner.java
new file mode 100644
index 00000000000..189544d6bae
--- /dev/null
+++ b/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/testplugin/util/ModelJoiner.java
@@ -0,0 +1,69 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2016 Wind River Systems, Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Markus Schorn - initial API and implementation
+ * Andrew Ferguson (Symbian)
+ * Sergey Prigogin (Google)
+ *******************************************************************************/
+package org.eclipse.cdt.core.testplugin.util;
+
+import org.eclipse.cdt.core.CCorePlugin;
+import org.eclipse.cdt.core.model.CoreModel;
+import org.eclipse.cdt.core.model.ElementChangedEvent;
+import org.eclipse.cdt.core.model.IElementChangedListener;
+import org.eclipse.core.runtime.CoreException;
+
+/**
+ * Some test steps need synchronizing against a CModel event. This class
+ * is a very basic means of doing that.
+ */
+public class ModelJoiner implements IElementChangedListener {
+ private final boolean[] changed = new boolean[1];
+
+ public ModelJoiner() {
+ CoreModel.getDefault().addElementChangedListener(this);
+ }
+
+ public void clear() {
+ synchronized (changed) {
+ changed[0] = false;
+ changed.notifyAll();
+ }
+ }
+
+ public void join() throws CoreException {
+ try {
+ synchronized (changed) {
+ while (!changed[0]) {
+ changed.wait();
+ }
+ }
+ } catch (InterruptedException e) {
+ throw new CoreException(CCorePlugin.createStatus("Interrupted", e));
+ }
+ }
+
+ public void dispose() {
+ CoreModel.getDefault().removeElementChangedListener(this);
+ }
+
+ @Override
+ public void elementChanged(ElementChangedEvent event) {
+ // Only respond to post change events
+ if (event.getType() != ElementChangedEvent.POST_CHANGE)
+ return;
+
+ synchronized (changed) {
+ changed[0] = true;
+ changed.notifyAll();
+ }
+ }
+} \ No newline at end of file
diff --git a/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/testplugin/util/OneSourceMultipleHeadersTestCase.java b/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/testplugin/util/OneSourceMultipleHeadersTestCase.java
index 75d45a4e5af..80f5515a251 100644
--- a/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/testplugin/util/OneSourceMultipleHeadersTestCase.java
+++ b/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/testplugin/util/OneSourceMultipleHeadersTestCase.java
@@ -34,7 +34,7 @@ import org.eclipse.core.runtime.Path;
* header1.h, header2.h, etc. The AST is created for the source file only and can be obtained
* by calling getAst().
*/
-public class OneSourceMultipleHeadersTestCase extends BaseTestCase {
+public abstract class OneSourceMultipleHeadersTestCase extends BaseTestCase {
private static final boolean DEBUG = false;
private final TestSourceReader testSourceReader;
diff --git a/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/testplugin/util/TestSourceReader.java b/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/testplugin/util/TestSourceReader.java
index 5fe92d9187d..3290acb2ab6 100644
--- a/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/testplugin/util/TestSourceReader.java
+++ b/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/testplugin/util/TestSourceReader.java
@@ -102,6 +102,10 @@ public class TestSourceReader {
* Returns an array of StringBuilder objects for each comment section found preceding the named
* test in the source code.
*
+ * Trailing whitespace can be removed by editor/clean-up actions. To enforce whitespace
+ * at end of line, use ${whitspace_eol}, which will be removed, but cause the
+ * whitespace to the left of it to be preserved.
+ *
* @param bundle the bundle containing the source, if {@code null} can try to load using
* classpath (source folder has to be in the classpath for this to work)
* @param srcRoot the directory inside the bundle containing the packages
diff --git a/core/org.eclipse.cdt.core.win32.x86_64/.settings/org.eclipse.core.resources.prefs b/core/org.eclipse.cdt.core.win32.x86_64/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/core/org.eclipse.cdt.core.win32.x86_64/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/core/org.eclipse.cdt.core.win32.x86_64/.settings/org.eclipse.jdt.core.prefs b/core/org.eclipse.cdt.core.win32.x86_64/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 2b6ecff8a01..00000000000
--- a/core/org.eclipse.cdt.core.win32.x86_64/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,464 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
-org.eclipse.jdt.core.codeComplete.argumentPrefixes=
-org.eclipse.jdt.core.codeComplete.argumentSuffixes=
-org.eclipse.jdt.core.codeComplete.fieldPrefixes=
-org.eclipse.jdt.core.codeComplete.fieldSuffixes=
-org.eclipse.jdt.core.codeComplete.localPrefixes=
-org.eclipse.jdt.core.codeComplete.localSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
-org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
-org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
-org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
-org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
-org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
-org.eclipse.jdt.core.compiler.problem.APILeak=warning
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
-org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
-org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
-org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
-org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
-org.eclipse.jdt.core.compiler.problem.nullReference=error
-org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
-org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
-org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
-org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
-org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
-org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
-org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
-org.eclipse.jdt.core.formatter.align_with_spaces=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
-org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
-org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
-org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
-org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=0
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
-org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
-org.eclipse.jdt.core.formatter.comment.format_block_comments=false
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
-org.eclipse.jdt.core.formatter.comment.format_line_comments=false
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
-org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
-org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
-org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.join_lines_in_comments=true
-org.eclipse.jdt.core.formatter.join_wrapped_lines=true
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=120
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_on_off_tags=true
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
-org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
-org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/core/org.eclipse.cdt.core.win32.x86_64/.settings/org.eclipse.jdt.ui.prefs b/core/org.eclipse.cdt.core.win32.x86_64/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index e44576346c4..00000000000
--- a/core/org.eclipse.cdt.core.win32.x86_64/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,133 +0,0 @@
-cleanup.add_default_serial_version_id=true
-cleanup.add_generated_serial_version_id=false
-cleanup.add_missing_annotations=true
-cleanup.add_missing_deprecated_annotations=true
-cleanup.add_missing_methods=false
-cleanup.add_missing_nls_tags=false
-cleanup.add_missing_override_annotations=true
-cleanup.add_missing_override_annotations_interface_methods=true
-cleanup.add_serial_version_id=false
-cleanup.always_use_blocks=true
-cleanup.always_use_parentheses_in_expressions=false
-cleanup.always_use_this_for_non_static_field_access=false
-cleanup.always_use_this_for_non_static_method_access=false
-cleanup.convert_functional_interfaces=false
-cleanup.convert_to_enhanced_for_loop=false
-cleanup.correct_indentation=false
-cleanup.format_source_code=true
-cleanup.format_source_code_changes_only=false
-cleanup.insert_inferred_type_arguments=false
-cleanup.make_local_variable_final=true
-cleanup.make_parameters_final=false
-cleanup.make_private_fields_final=true
-cleanup.make_type_abstract_if_missing_method=false
-cleanup.make_variable_declarations_final=false
-cleanup.never_use_blocks=false
-cleanup.never_use_parentheses_in_expressions=true
-cleanup.organize_imports=true
-cleanup.qualify_static_field_accesses_with_declaring_class=false
-cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-cleanup.qualify_static_member_accesses_with_declaring_class=false
-cleanup.qualify_static_method_accesses_with_declaring_class=false
-cleanup.remove_private_constructors=true
-cleanup.remove_redundant_modifiers=false
-cleanup.remove_redundant_semicolons=true
-cleanup.remove_redundant_type_arguments=true
-cleanup.remove_trailing_whitespaces=true
-cleanup.remove_trailing_whitespaces_all=true
-cleanup.remove_trailing_whitespaces_ignore_empty=false
-cleanup.remove_unnecessary_casts=true
-cleanup.remove_unnecessary_nls_tags=false
-cleanup.remove_unused_imports=true
-cleanup.remove_unused_local_variables=false
-cleanup.remove_unused_private_fields=true
-cleanup.remove_unused_private_members=false
-cleanup.remove_unused_private_methods=true
-cleanup.remove_unused_private_types=true
-cleanup.sort_members=false
-cleanup.sort_members_all=false
-cleanup.use_anonymous_class_creation=false
-cleanup.use_blocks=false
-cleanup.use_blocks_only_for_return_and_throw=false
-cleanup.use_lambda=true
-cleanup.use_parentheses_in_expressions=false
-cleanup.use_this_for_non_static_field_access=false
-cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-cleanup.use_this_for_non_static_method_access=false
-cleanup.use_this_for_non_static_method_access_only_if_necessary=true
-cleanup_profile=_CDT
-cleanup_settings_version=2
-eclipse.preferences.version=1
-editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=_CDT
-formatter_settings_version=14
-internal.default.compliance=user
-org.eclipse.jdt.ui.exception.name=e
-org.eclipse.jdt.ui.gettersetter.use.is=true
-org.eclipse.jdt.ui.ignorelowercasenames=true
-org.eclipse.jdt.ui.importorder=java;javax;org;com;
-org.eclipse.jdt.ui.keywordthis=false
-org.eclipse.jdt.ui.ondemandthreshold=1000
-org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.staticondemandthreshold=1000
-org.eclipse.jdt.ui.text.custom_code_templates=
-sp_cleanup.add_default_serial_version_id=true
-sp_cleanup.add_generated_serial_version_id=false
-sp_cleanup.add_missing_annotations=true
-sp_cleanup.add_missing_deprecated_annotations=true
-sp_cleanup.add_missing_methods=false
-sp_cleanup.add_missing_nls_tags=false
-sp_cleanup.add_missing_override_annotations=true
-sp_cleanup.add_missing_override_annotations_interface_methods=true
-sp_cleanup.add_serial_version_id=false
-sp_cleanup.always_use_blocks=true
-sp_cleanup.always_use_parentheses_in_expressions=false
-sp_cleanup.always_use_this_for_non_static_field_access=false
-sp_cleanup.always_use_this_for_non_static_method_access=false
-sp_cleanup.convert_functional_interfaces=false
-sp_cleanup.convert_to_enhanced_for_loop=false
-sp_cleanup.correct_indentation=false
-sp_cleanup.format_source_code=true
-sp_cleanup.format_source_code_changes_only=false
-sp_cleanup.insert_inferred_type_arguments=false
-sp_cleanup.make_local_variable_final=true
-sp_cleanup.make_parameters_final=false
-sp_cleanup.make_private_fields_final=true
-sp_cleanup.make_type_abstract_if_missing_method=false
-sp_cleanup.make_variable_declarations_final=false
-sp_cleanup.never_use_blocks=false
-sp_cleanup.never_use_parentheses_in_expressions=true
-sp_cleanup.on_save_use_additional_actions=true
-sp_cleanup.organize_imports=true
-sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
-sp_cleanup.remove_private_constructors=true
-sp_cleanup.remove_redundant_modifiers=false
-sp_cleanup.remove_redundant_semicolons=true
-sp_cleanup.remove_redundant_type_arguments=true
-sp_cleanup.remove_trailing_whitespaces=true
-sp_cleanup.remove_trailing_whitespaces_all=true
-sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
-sp_cleanup.remove_unnecessary_casts=true
-sp_cleanup.remove_unnecessary_nls_tags=false
-sp_cleanup.remove_unused_imports=true
-sp_cleanup.remove_unused_local_variables=false
-sp_cleanup.remove_unused_private_fields=true
-sp_cleanup.remove_unused_private_members=false
-sp_cleanup.remove_unused_private_methods=true
-sp_cleanup.remove_unused_private_types=true
-sp_cleanup.sort_members=false
-sp_cleanup.sort_members_all=false
-sp_cleanup.use_anonymous_class_creation=false
-sp_cleanup.use_blocks=false
-sp_cleanup.use_blocks_only_for_return_and_throw=false
-sp_cleanup.use_lambda=true
-sp_cleanup.use_parentheses_in_expressions=false
-sp_cleanup.use_this_for_non_static_field_access=false
-sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-sp_cleanup.use_this_for_non_static_method_access=false
-sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/core/org.eclipse.cdt.core.win32.x86_64/META-INF/MANIFEST.MF b/core/org.eclipse.cdt.core.win32.x86_64/META-INF/MANIFEST.MF
index cdb0f0cac50..895807016d3 100644
--- a/core/org.eclipse.cdt.core.win32.x86_64/META-INF/MANIFEST.MF
+++ b/core/org.eclipse.cdt.core.win32.x86_64/META-INF/MANIFEST.MF
@@ -2,8 +2,8 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %fragmentName.win32.x86_64
Bundle-SymbolicName: org.eclipse.cdt.core.win32.x86_64;singleton:=true
-Bundle-Version: 5.4.2.qualifier
-Fragment-Host: org.eclipse.cdt.core.native;bundle-version="[5.7.0,6.0.0)"
+Bundle-Version: 6.0.600.qualifier
+Fragment-Host: org.eclipse.cdt.core.native;bundle-version="[6.0.0,7.0.0)"
Eclipse-PlatformFilter: (&(osgi.os=win32)(osgi.arch=x86_64))
Bundle-Vendor: %providerName
Bundle-Localization: plugin
diff --git a/core/org.eclipse.cdt.core.win32.x86_64/about.html b/core/org.eclipse.cdt.core.win32.x86_64/about.html
index 164f781a8fd..b3134865230 100644
--- a/core/org.eclipse.cdt.core.win32.x86_64/about.html
+++ b/core/org.eclipse.cdt.core.win32.x86_64/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/core/org.eclipse.cdt.core.win32.x86_64/os/win32/x86_64/listtasks.exe b/core/org.eclipse.cdt.core.win32.x86_64/os/win32/x86_64/listtasks.exe
deleted file mode 100644
index 56630eacb62..00000000000
--- a/core/org.eclipse.cdt.core.win32.x86_64/os/win32/x86_64/listtasks.exe
+++ /dev/null
Binary files differ
diff --git a/core/org.eclipse.cdt.core.win32.x86_64/os/win32/x86_64/pty.dll b/core/org.eclipse.cdt.core.win32.x86_64/os/win32/x86_64/pty.dll
index 221ac7deab5..db374f73310 100644..100755
--- a/core/org.eclipse.cdt.core.win32.x86_64/os/win32/x86_64/pty.dll
+++ b/core/org.eclipse.cdt.core.win32.x86_64/os/win32/x86_64/pty.dll
Binary files differ
diff --git a/core/org.eclipse.cdt.core.win32.x86_64/os/win32/x86_64/spawner.dll b/core/org.eclipse.cdt.core.win32.x86_64/os/win32/x86_64/spawner.dll
index 3dba4a71679..00b9a5c003d 100644..100755
--- a/core/org.eclipse.cdt.core.win32.x86_64/os/win32/x86_64/spawner.dll
+++ b/core/org.eclipse.cdt.core.win32.x86_64/os/win32/x86_64/spawner.dll
Binary files differ
diff --git a/core/org.eclipse.cdt.core.win32.x86_64/os/win32/x86_64/starter.exe b/core/org.eclipse.cdt.core.win32.x86_64/os/win32/x86_64/starter.exe
index 9816ad5427e..f66b4210461 100644..100755
--- a/core/org.eclipse.cdt.core.win32.x86_64/os/win32/x86_64/starter.exe
+++ b/core/org.eclipse.cdt.core.win32.x86_64/os/win32/x86_64/starter.exe
Binary files differ
diff --git a/core/org.eclipse.cdt.core.win32.x86_64/os/win32/x86_64/winpty-agent.exe b/core/org.eclipse.cdt.core.win32.x86_64/os/win32/x86_64/winpty-agent.exe
index 75b49a1a402..75b49a1a402 100644..100755
--- a/core/org.eclipse.cdt.core.win32.x86_64/os/win32/x86_64/winpty-agent.exe
+++ b/core/org.eclipse.cdt.core.win32.x86_64/os/win32/x86_64/winpty-agent.exe
Binary files differ
diff --git a/core/org.eclipse.cdt.core.win32.x86_64/os/win32/x86_64/winpty.dll b/core/org.eclipse.cdt.core.win32.x86_64/os/win32/x86_64/winpty.dll
index cda66d0dd59..cda66d0dd59 100644..100755
--- a/core/org.eclipse.cdt.core.win32.x86_64/os/win32/x86_64/winpty.dll
+++ b/core/org.eclipse.cdt.core.win32.x86_64/os/win32/x86_64/winpty.dll
Binary files differ
diff --git a/core/org.eclipse.cdt.core.win32.x86_64/os/win32/x86_64/winreg.dll b/core/org.eclipse.cdt.core.win32.x86_64/os/win32/x86_64/winreg.dll
deleted file mode 100644
index a8e74e65993..00000000000
--- a/core/org.eclipse.cdt.core.win32.x86_64/os/win32/x86_64/winreg.dll
+++ /dev/null
Binary files differ
diff --git a/core/org.eclipse.cdt.core.win32.x86_64/pom.xml b/core/org.eclipse.cdt.core.win32.x86_64/pom.xml
index c13e33179d9..a76beb2cea8 100644
--- a/core/org.eclipse.cdt.core.win32.x86_64/pom.xml
+++ b/core/org.eclipse.cdt.core.win32.x86_64/pom.xml
@@ -1,4 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2011, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
@@ -7,11 +17,11 @@
<parent>
<groupId>org.eclipse.cdt</groupId>
<artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
+ <version>10.7.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
- <version>5.4.2-SNAPSHOT</version>
+ <version>6.0.600-SNAPSHOT</version>
<artifactId>org.eclipse.cdt.core.win32.x86_64</artifactId>
<packaging>eclipse-plugin</packaging>
@@ -48,6 +58,17 @@
</execution>
</executions>
</plugin>
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-packaging-plugin</artifactId>
+ <configuration>
+ <!-- When signing binaries, the result is not checked into repo, so the
+ jgit timestamp provider cannot be used. This has the side effect
+ that the version of this bundle needs to be incremented on each
+ CDT release. -->
+ <timestampProvider>default</timestampProvider>
+ </configuration>
+ </plugin>
</plugins>
</build>
</project>
diff --git a/core/org.eclipse.cdt.core.win32/.classpath b/core/org.eclipse.cdt.core.win32/.classpath
index 01836c4842f..e801ebfb468 100644
--- a/core/org.eclipse.cdt.core.win32/.classpath
+++ b/core/org.eclipse.cdt.core.win32/.classpath
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/core/org.eclipse.cdt.core.win32/.project b/core/org.eclipse.cdt.core.win32/.project
index 09821b72158..427e0771d5c 100644
--- a/core/org.eclipse.cdt.core.win32/.project
+++ b/core/org.eclipse.cdt.core.win32/.project
@@ -20,9 +20,15 @@
<arguments>
</arguments>
</buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
</natures>
</projectDescription>
diff --git a/core/org.eclipse.cdt.core.win32/.settings/org.eclipse.core.resources.prefs b/core/org.eclipse.cdt.core.win32/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/core/org.eclipse.cdt.core.win32/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/core/org.eclipse.cdt.core.win32/.settings/org.eclipse.jdt.core.prefs b/core/org.eclipse.cdt.core.win32/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/core/org.eclipse.cdt.core.win32/.settings/org.eclipse.jdt.core.prefs
+++ b/core/org.eclipse.cdt.core.win32/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/core/org.eclipse.cdt.core.win32/.settings/org.eclipse.jdt.ui.prefs b/core/org.eclipse.cdt.core.win32/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/core/org.eclipse.cdt.core.win32/.settings/org.eclipse.jdt.ui.prefs
+++ b/core/org.eclipse.cdt.core.win32/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/core/org.eclipse.cdt.core.win32/META-INF/MANIFEST.MF b/core/org.eclipse.cdt.core.win32/META-INF/MANIFEST.MF
index 66e99f68c87..2da0838951f 100644
--- a/core/org.eclipse.cdt.core.win32/META-INF/MANIFEST.MF
+++ b/core/org.eclipse.cdt.core.win32/META-INF/MANIFEST.MF
@@ -2,10 +2,12 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %fragmentName.win32
Bundle-SymbolicName: org.eclipse.cdt.core.win32; singleton:=true
-Bundle-Version: 5.4.2.qualifier
+Bundle-Version: 6.0.300.qualifier
Bundle-Vendor: %providerName
-Fragment-Host: org.eclipse.cdt.core.native;bundle-version="[5.7.0,6.0.0)"
+Fragment-Host: org.eclipse.cdt.core.native;bundle-version="[6.1.0,7.0.0)"
Bundle-Localization: plugin
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Eclipse-PlatformFilter: (osgi.os=win32)
Automatic-Module-Name: org.eclipse.cdt.core.win32
+Require-Bundle: com.sun.jna;bundle-version="[5.6.0,6.0.0)",
+ com.sun.jna.platform;bundle-version="[5.6.0,6.0.0)"
diff --git a/core/org.eclipse.cdt.core.win32/about.html b/core/org.eclipse.cdt.core.win32/about.html
index 164f781a8fd..b3134865230 100644
--- a/core/org.eclipse.cdt.core.win32/about.html
+++ b/core/org.eclipse.cdt.core.win32/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/core/org.eclipse.cdt.core.win32/build.properties b/core/org.eclipse.cdt.core.win32/build.properties
index 41066b2e23d..eadebecf134 100644
--- a/core/org.eclipse.cdt.core.win32/build.properties
+++ b/core/org.eclipse.cdt.core.win32/build.properties
@@ -16,6 +16,5 @@ bin.includes = fragment.xml,\
.,\
META-INF/,\
plugin.properties
-src.includes = about.html,\
- library/
+src.includes = about.html
source.. = src/
diff --git a/core/org.eclipse.cdt.core.win32/fragment.xml b/core/org.eclipse.cdt.core.win32/fragment.xml
index f06998bc1fd..a1807605b60 100644
--- a/core/org.eclipse.cdt.core.win32/fragment.xml
+++ b/core/org.eclipse.cdt.core.win32/fragment.xml
@@ -9,4 +9,11 @@
class="org.eclipse.cdt.internal.core.win32.ProcessList">
</processList>
</extension>
+ <extension
+ point="org.eclipse.cdt.core.native.WindowsRegistry">
+ <windowsRegistry
+ class="org.eclipse.cdt.internal.core.win32.WindowsRegistryImpl"
+ platform="win32">
+ </windowsRegistry>
+ </extension>
</fragment>
diff --git a/core/org.eclipse.cdt.core.win32/library/.gitignore b/core/org.eclipse.cdt.core.win32/library/.gitignore
deleted file mode 100644
index 4d4ec54ac04..00000000000
--- a/core/org.eclipse.cdt.core.win32/library/.gitignore
+++ /dev/null
@@ -1,8 +0,0 @@
-/ipch/
-*.obj
-*.idb
-*.pdb
-*.sdf
-*.suo
-*.pch
-*.log
diff --git a/core/org.eclipse.cdt.core.win32/library/Makefile b/core/org.eclipse.cdt.core.win32/library/Makefile
deleted file mode 100644
index 76bb655800f..00000000000
--- a/core/org.eclipse.cdt.core.win32/library/Makefile
+++ /dev/null
@@ -1,34 +0,0 @@
-# makefile for libspawner.so
-
-ifeq ($(JAVA_HOME),)
-$(error JAVA_HOME not set in environment)
-endif
-
-# Defaults which can be overridden.
-OS = win32
-ARCH = x86
-
-JDK_INCLUDES= "$(JAVA_HOME)/include"
-JDK_OS_INCLUDES= "$(JAVA_HOME)/include/$(OS)"
-
-CC=g++
-DEBUG_FLAGS = -D_UNICODE -DDEBUG_MONITOR -DREAD_REPORT
-CFLAGS = -DUNICODE -I$(JDK_INCLUDES) -I$(JDK_OS_INCLUDES)
-CXX=g++
-CXXFLAGS=$(CFLAGS)
-
-INSTALL_DIR = ../../org.eclipse.cdt.core.$(OS).$(ARCH)/os/$(OS)/$(ARCH)
-
-LIB_NAME_SPAWNER = spawner.dll
-LIB_NAME_FULL_SPAWNER = $(INSTALL_DIR)/spawner.dll
-OBJS_SPAWNER=StdAfx.o Win32ProcessEx.o iostream.o raise.o spawner.o
-
-all: $(LIB_NAME_FULL_SPAWNER)
-
-rebuild: clean all
-
-$(LIB_NAME_FULL_SPAWNER) : $(OBJS_SPAWNER)
- $(CC) -Wl,--kill-at -shared -o $(LIB_NAME_FULL_SPAWNER) $(OBJS_SPAWNER) -lpsapi
-
-clean :
- $(RM) $(OBJS_SPAWNER)
diff --git a/core/org.eclipse.cdt.core.win32/library/Makefile_x86_64.mk b/core/org.eclipse.cdt.core.win32/library/Makefile_x86_64.mk
deleted file mode 100644
index 55609bf9911..00000000000
--- a/core/org.eclipse.cdt.core.win32/library/Makefile_x86_64.mk
+++ /dev/null
@@ -1,76 +0,0 @@
-#*******************************************************************************
-# Copyright (c) 2011 Marc-Andre Laperle
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# Marc-Andre Laperle - initial API and implementation
-#*******************************************************************************
-
-# Makefile (nmake) for Core fragment on Windows x86_64
-
-OS = win32
-ARCH = x86_64
-
-JDK_INCLUDES= "$(JAVA_HOME)\include"
-JDK_OS_INCLUDES= "$(JAVA_HOME)\include/$(OS)"
-
-CC=cl
-DEBUG_FLAGS = -DDEBUG_MONITOR -DREAD_REPORT
-CFLAGS = /TP /I$(JDK_INCLUDES) /I$(JDK_OS_INCLUDES) /EHs /nologo
-CFLAGS_UNICODE = /D "_UNICODE" /D "UNICODE" $(CFLAGS)
-
-INSTALL_DIR = ..\..\org.eclipse.cdt.core.$(OS).$(ARCH)\os\$(OS)\$(ARCH)
-
-DLL_SPAWNER = spawner.dll
-OBJS_SPAWNER=StdAfx.obj Win32ProcessEx.obj iostream.obj raise.obj spawner.obj
-
-DLL_WINREG = winreg.dll
-OBJS_WINREG=winreg/winreg.obj
-
-EXE_STARTER = starter.exe
-OBJS_STARTER=starter/starter.obj
-
-EXE_LISTTASKS = listtasks.exe
-OBJS_LISTTASKS=listtasks/listtasks.obj listtasks/StdAfx.obj
-
-.c.obj:
- cl /c $(CFLAGS_UNICODE) $*.c /Fo$@
-
-.cpp.obj:
- cl /c $(CFLAGS_UNICODE) $*.cpp /Fo$@
-
-#TODO: Use unicode for listtasks, see bug 353460
-listtasks/listtasks.obj:
- cl /c $(CFLAGS) $*.cpp /Fo$@
-
-spawner: $(OBJS_SPAWNER)
- link /dll /nologo /out:$(DLL_SPAWNER) $(OBJS_SPAWNER) User32.lib
-
-winreg: $(OBJS_WINREG)
- link /dll /nologo /out:$(DLL_WINREG) $(OBJS_WINREG) Advapi32.lib
-
-starter: $(OBJS_STARTER)
- link /nologo /out:$(EXE_STARTER) $(OBJS_STARTER) Psapi.Lib Shell32.lib
-
-listtasks: $(OBJS_LISTTASKS)
- link /nologo /out:$(EXE_LISTTASKS) $(OBJS_LISTTASKS) Psapi.Lib
-
-all: spawner winreg starter listtasks
-
-clean:
- del *.obj *.lib *.exp *.exe *.dll winreg\*.obj starter\*.obj listtasks\*.obj
-
-rebuild: clean all
-
-install: all
- copy *.dll $(INSTALL_DIR)
- copy *.exe $(INSTALL_DIR)
-
-uninstall:
- del $(INSTALL_DIR)\*.dll $(INSTALL_DIR)\*.exe
diff --git a/core/org.eclipse.cdt.core.win32/library/Readme64.txt b/core/org.eclipse.cdt.core.win32/library/Readme64.txt
deleted file mode 100644
index 2fb8b08feee..00000000000
--- a/core/org.eclipse.cdt.core.win32/library/Readme64.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-#*******************************************************************************
-# Copyright (c) 2011 Marc-Andre Laperle
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# Marc-Andre Laperle - initial API and implementation
-#*******************************************************************************
-
-How to build the Win32 x86_64 core fragment:
-
-1. Prerequisites
-- Install Windows SDK 7.1. If the SDK is not installed in the default location or if you want to try a different SDK, modify setenv64.bat accordingly.
-- Make sure your JAVA_HOME environment variable is set and points to a 64 bit JDK (C:\Program Files\Java\jdkX.X.X not C:\Program Files (x86)\Java\jdkX.X.X )
-
-2. Build and install
-- In a command prompt, execute setenv64.bat.
-The command prompt should turn to a different color and print a message about targeting x64.
-- Execute build64.bat
-This will build the dlls and executables, copy them to org.eclipse.cdt.core.win32.x86_64\os\win32\x86_64 then clean the build directories.
-Optionally, you can use nmake /f Makefile_x86_64.mk TARGET directly. Refer to Makefile_x86_64.mk for valid targets.
diff --git a/core/org.eclipse.cdt.core.win32/library/Spawner.h b/core/org.eclipse.cdt.core.win32/library/Spawner.h
deleted file mode 100644
index 0e10a7b0af5..00000000000
--- a/core/org.eclipse.cdt.core.win32/library/Spawner.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2010 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - initial API and implementation
- *
- * Spawner.h
- *
- * This is a part of JNI implementation of spawner
- *******************************************************************************/
-/* DO NOT EDIT THIS FILE - it is machine generated */
-#include <jni.h>
-/* Header for class org_eclipse_cdt_utils_spawner_Spawner */
-
-#ifndef _Included_org_eclipse_cdt_utils_spawner_Spawner
-#define _Included_org_eclipse_cdt_utils_spawner_Spawner
-#ifdef __cplusplus
-extern "C" {
-#endif
-/*
- * Class: org_eclipse_cdt_utils_spawner_Spawner
- * Method: exec0
- * Signature: ([Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[I)I
- */
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_exec0
- (JNIEnv *, jobject, jobjectArray, jobjectArray, jstring, jintArray);
-
-/*
- * Class: org_eclipse_cdt_utils_spawner_Spawner
- * Method: exec1
- * Signature: ([Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)I
- */
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_exec1
- (JNIEnv *, jobject, jobjectArray, jobjectArray, jstring);
-
-/*
- * Class: org_eclipse_cdt_utils_spawner_Spawner
- * Method: exec2
- * Signature: ([Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;LILjava/lang/String;IZ)I
- */
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_exec2
- (JNIEnv * env, jobject process, jobjectArray cmdarray, jobjectArray envp, jstring dir, jintArray channels, jstring slaveName, jint fdm, jboolean console);
-
-/*
- * Class: org_eclipse_cdt_utils_spawner_Spawner
- * Method: raise
- * Signature: (II)I
- */
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_raise
- (JNIEnv *, jobject, jint, jint);
-
-
-/*
- * Class: org_eclipse_cdt_utils_spawner_Spawner
- * Method: waitFor
- * Signature: (I)I
- */
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_waitFor
- (JNIEnv *, jobject, jint);
-
-// #define DEBUG_MONITOR
-
-int interruptProcess(int pid);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-// #define DEBUG_MONITOR
-
-#endif
diff --git a/core/org.eclipse.cdt.core.win32/library/SpawnerInputStream.h b/core/org.eclipse.cdt.core.win32/library/SpawnerInputStream.h
deleted file mode 100644
index 294977dfd31..00000000000
--- a/core/org.eclipse.cdt.core.win32/library/SpawnerInputStream.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2007 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - initial API and implementation
- *
- * SpawnerInputStream.h
- *
- * This is a part of JNI implementation of spawner
- *******************************************************************************/
-
-/* DO NOT EDIT THIS FILE - it is machine generated */
-#include <jni.h>
-/* Header for class com_qnx_tools_utils_spawner_SpawnerInputStream */
-
-#ifndef _Included_com_qnx_tools_utils_spawner_SpawnerInputStream
-#define _Included_com_qnx_tools_utils_spawner_SpawnerInputStream
-#ifdef __cplusplus
-extern "C" {
-#endif
-#undef com_qnx_tools_utils_spawner_SpawnerInputStream_SKIP_BUFFER_SIZE
-#define com_qnx_tools_utils_spawner_SpawnerInputStream_SKIP_BUFFER_SIZE 2048L
-/* Inaccessible static: skipBuffer */
-/*
- * Class: com_qnx_tools_utils_spawner_SpawnerInputStream
- * Method: read0
- * Signature: (I[BI)I
- */
-JNIEXPORT jint JNICALL Java_com_qnx_tools_utils_spawner_SpawnerInputStream_read0
- (JNIEnv *, jobject, jint, jbyteArray, jint);
-
-/*
- * Class: com_qnx_tools_utils_spawner_SpawnerInputStream
- * Method: close0
- * Signature: (I)I
- */
-JNIEXPORT jint JNICALL Java_com_qnx_tools_utils_spawner_SpawnerInputStream_close0
- (JNIEnv *, jobject, jint);
-
-#ifdef __cplusplus
-}
-#endif
-#endif
diff --git a/core/org.eclipse.cdt.core.win32/library/SpawnerOutputStream.h b/core/org.eclipse.cdt.core.win32/library/SpawnerOutputStream.h
deleted file mode 100644
index 4ed58014d39..00000000000
--- a/core/org.eclipse.cdt.core.win32/library/SpawnerOutputStream.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2007 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - initial API and implementation
- *
- * SpawnerOutputStream.h
- *
- * This is a part of JNI implementation of spawner
- *******************************************************************************/
-/* DO NOT EDIT THIS FILE - it is machine generated */
-#include <jni.h>
-/* Header for class com_qnx_tools_utils_spawner_SpawnerOutputStream */
-
-#ifndef _Included_com_qnx_tools_utils_spawner_SpawnerOutputStream
-#define _Included_com_qnx_tools_utils_spawner_SpawnerOutputStream
-#ifdef __cplusplus
-extern "C" {
-#endif
-/*
- * Class: com_qnx_tools_utils_spawner_SpawnerOutputStream
- * Method: write0
- * Signature: (I[BI)I
- */
-JNIEXPORT jint JNICALL Java_com_qnx_tools_utils_spawner_SpawnerOutputStream_write0
- (JNIEnv *, jobject, jint, jbyteArray, jint);
-
-/*
- * Class: com_qnx_tools_utils_spawner_SpawnerOutputStream
- * Method: close0
- * Signature: (I)I
- */
-JNIEXPORT jint JNICALL Java_com_qnx_tools_utils_spawner_SpawnerOutputStream_close0
- (JNIEnv *, jobject, jint);
-
-#ifdef __cplusplus
-}
-#endif
-#endif
diff --git a/core/org.eclipse.cdt.core.win32/library/StdAfx.c b/core/org.eclipse.cdt.core.win32/library/StdAfx.c
deleted file mode 100644
index ea8e1023e93..00000000000
--- a/core/org.eclipse.cdt.core.win32/library/StdAfx.c
+++ /dev/null
@@ -1,25 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2007 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - initial API and implementation
- *
- * StdAfx.c
- *
- * This is a part of JNI implementation of spawner
- *******************************************************************************/
-// stdafx.cpp : source file that includes just the standard includes
-// spawner.pch will be the pre-compiled header
-// stdafx.obj will contain the pre-compiled type information
-
-#include "stdafx.h"
-
-// TODO: reference any additional headers you need in STDAFX.H
-// and not in this file
diff --git a/core/org.eclipse.cdt.core.win32/library/StdAfx.h b/core/org.eclipse.cdt.core.win32/library/StdAfx.h
deleted file mode 100644
index c176fed0ad0..00000000000
--- a/core/org.eclipse.cdt.core.win32/library/StdAfx.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2007 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - initial API and implementation
- *
- * StdAfx.h
- *
- * This is a part of JNI implementation of spawner
- *******************************************************************************/
-
-// stdafx.h : include file for standard system include files,
-// or project specific include files that are used frequently, but
-// are changed infrequently
-//
-
-#if !defined(AFX_STDAFX_H__9D84F180_36E5_47D6_96AB_22723242789C__INCLUDED_)
-#define AFX_STDAFX_H__9D84F180_36E5_47D6_96AB_22723242789C__INCLUDED_
-
-#if _MSC_VER > 1000
-#pragma once
-#endif // _MSC_VER > 1000
-
-
-// Insert your headers here
-#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
-
-#include <tchar.h>
-
-#include <windows.h>
-
-// TODO: reference additional headers your program requires here
-
-//{{AFX_INSERT_LOCATION}}
-// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
-
-#endif // !defined(AFX_STDAFX_H__9D84F180_36E5_47D6_96AB_22723242789C__INCLUDED_)
diff --git a/core/org.eclipse.cdt.core.win32/library/Win32ProcessEx.c b/core/org.eclipse.cdt.core.win32/library/Win32ProcessEx.c
deleted file mode 100644
index 1554983330a..00000000000
--- a/core/org.eclipse.cdt.core.win32/library/Win32ProcessEx.c
+++ /dev/null
@@ -1,1009 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2015 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - initial API and implementation
- * Wind River Systems, Inc.
- *
- * Win32ProcessEx.c
- *
- * This is a JNI implementation of spawner
- *******************************************************************************/
-
-#include "stdafx.h"
-#include <string.h>
-#include <stdlib.h>
-#include <process.h>
-#include "Spawner.h"
-
-#include "jni.h"
-#include "io.h"
-
-
-#define PIPE_SIZE 512 // Size of pipe buffer
-#define MAX_CMD_SIZE 2049 // Initial size of command line
-#define MAX_ENV_SIZE 4096 // Initial size of environment block
-#define PIPE_NAME_LENGTH 100 // Size of pipe name buffer
-#define PIPE_TIMEOUT 10000 // Default time-out value, in milliseconds.
-
-#define MAX_PROCS (100) // Maximum number of simultaneously running processes
-
-
-// Process description block. Should be created for each launched process
-typedef struct _procInfo {
- int pid; // Process ID
- int uid; // quasi-unique process ID; we have to create it to avoid duplicated pid
- // (actually this impossible from OS point of view but it is still possible
- // a clash of new created and already finished process with one and the same PID.
- // 4 events connected to this process (see starter)
- HANDLE eventBreak; // signaled when Spawner.interrupt() is called; mildest of the terminate requests (SIGINT signal in UNIX world)
- HANDLE eventWait;
- HANDLE eventTerminate; // signaled when Spawner.terminate() is called; more forceful terminate request (SIGTERM signal in UNIX world)
- HANDLE eventKill; // signaled when Spawner.kill() is called; most forceful terminate request (SIGKILL signal in UNIX world)
- HANDLE eventCtrlc; // signaled when Spawner.interruptCTRLC() is called; like interrupt() but sends CTRL-C in all cases, even when inferior is a Cygwin program
-} procInfo_t, * pProcInfo_t;
-
-static int procCounter = 0; // Number of running processes
-
-
-// This is a VM helper
-void ThrowByName(JNIEnv *env, const char *name, const char *msg);
-
-// Creates _procInfo block for every launched process
-pProcInfo_t createProcInfo();
-
-// Find process description for this pid
-pProcInfo_t findProcInfo(int pid);
-
-// We launch separate thread for each project to trap it termination
-void _cdecl waitProcTermination(void* pv) ;
-
-// This is a helper function to prevent losing of quotation marks
-static int copyTo(wchar_t * target, const wchar_t * source, int cpyLenght, int availSpace);
-
-// Use this function to clean project descriptor and return it to the pool of available blocks.
-static void cleanUpProcBlock(pProcInfo_t pCurProcInfo);
-
-
-// Signal codes
-typedef enum {
- SIG_NOOP,
- SIG_HUP,
- SIG_INT,
- SIG_KILL = 9,
- SIG_TERM = 15,
- CTRLC = 1000 // special, Windows only. Sends CTRL-C in all cases, even when inferior is a Cygwin program
-} signals;
-
-extern CRITICAL_SECTION cs;
-
-
-extern wchar_t path[MAX_PATH]; // Directory where spawner.dll is located
-
-static HMODULE hVM = NULL; // VM handler
-
-
-static pProcInfo_t pInfo = NULL;
-
-static int nCounter = 0; // We use it to build unique synchronization object names
-
-/////////////////////////////////////////////////////////////////////////////////////
-// Launcher; launchess process and traps its termination
-// Arguments: (see Spawner.java)
-// [in] cmdarray - array of command line elements
-// [in] envp - array of environment variables
-// [in] dir - working directory
-// [out] channels - streams handlers
-/////////////////////////////////////////////////////////////////////////////////////
-
-extern "C"
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_exec2
- (JNIEnv * env, jobject process, jobjectArray cmdarray, jobjectArray envp, jstring dir, jintArray channels, jstring slaveName, jint fdm, jboolean console)
-{
- return -1;
-}
-
-void ensureSize(wchar_t** ptr, int* psize, int requiredLength)
-{
- int size= *psize;
- if (requiredLength > size) {
- size= 2*size;
- if (size < requiredLength) {
- size= requiredLength;
- }
- *ptr= (wchar_t *)realloc(*ptr, size * sizeof(wchar_t));
- if (NULL == *ptr) {
- *psize= 0;
- }
- else {
- *psize= size;
- }
- }
-}
-
-extern "C"
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_exec0
- (JNIEnv * env, jobject process, jobjectArray cmdarray, jobjectArray envp, jstring dir, jintArray channels)
-{
- HANDLE stdHandles[3];
- PROCESS_INFORMATION pi = {0}, *piCopy;
- STARTUPINFOW si;
- DWORD flags = 0;
- const wchar_t * cwd = NULL;
- LPVOID envBlk = NULL;
- int ret = 0;
- int nCmdLineLength= 0;
- wchar_t * szCmdLine= 0;
- int nBlkSize = MAX_ENV_SIZE;
- wchar_t * szEnvBlock = NULL;
- jsize nCmdTokens = 0;
- jsize nEnvVars = 0;
- int i;
- DWORD pid = GetCurrentProcessId();
- int nPos;
- pProcInfo_t pCurProcInfo;
-
- // This needs to be big enough to contain the name of the event used when calling CreateEventW bellow.
- // It is made of a prefix (7 characters max) plus the value of a pointer that gets output in characters.
- // This will be bigger in the case of 64 bit.
- static const int MAX_EVENT_NAME_LENGTH = 50;
- wchar_t eventBreakName[MAX_EVENT_NAME_LENGTH];
- wchar_t eventWaitName[MAX_EVENT_NAME_LENGTH];
- wchar_t eventTerminateName[MAX_EVENT_NAME_LENGTH];
- wchar_t eventKillName[MAX_EVENT_NAME_LENGTH];
- wchar_t eventCtrlcName[MAX_EVENT_NAME_LENGTH];
-#ifdef DEBUG_MONITOR
- wchar_t buffer[4000];
-#endif
- int nLocalCounter;
- wchar_t inPipeName[PIPE_NAME_LENGTH];
- wchar_t outPipeName[PIPE_NAME_LENGTH];
- wchar_t errPipeName[PIPE_NAME_LENGTH];
-
- nCmdLineLength= MAX_CMD_SIZE;
- szCmdLine= (wchar_t *)malloc(nCmdLineLength * sizeof(wchar_t));
- szCmdLine[0]= _T('\0');
- if((HIBYTE(LOWORD(GetVersion()))) & 0x80)
- {
- ThrowByName(env, "java/io/IOException", "Does not support Windows 3.1/95/98/Me");
- return 0;
- }
-
- if (cmdarray == 0)
- {
- ThrowByName(env, "java/lang/NullPointerException", "No command line specified");
- return 0;
- }
-
- ZeroMemory(stdHandles, sizeof(stdHandles));
-
- // Create pipe names
- EnterCriticalSection(&cs);
- swprintf(inPipeName, L"\\\\.\\pipe\\stdin%08i%010i", pid, nCounter);
- swprintf(outPipeName, L"\\\\.\\pipe\\stdout%08i%010i", pid, nCounter);
- swprintf(errPipeName, L"\\\\.\\pipe\\stderr%08i%010i", pid, nCounter);
- nLocalCounter = nCounter;
- ++nCounter;
- LeaveCriticalSection(&cs);
-
- if ((INVALID_HANDLE_VALUE == (stdHandles[0] = CreateNamedPipeW(inPipeName, PIPE_ACCESS_OUTBOUND,
- PIPE_TYPE_BYTE | PIPE_READMODE_BYTE | PIPE_WAIT,
- PIPE_UNLIMITED_INSTANCES, PIPE_SIZE, PIPE_SIZE, PIPE_TIMEOUT, NULL))) ||
- (INVALID_HANDLE_VALUE == (stdHandles[1] = CreateNamedPipeW(outPipeName, PIPE_ACCESS_INBOUND | FILE_FLAG_OVERLAPPED,
- PIPE_TYPE_BYTE | PIPE_READMODE_BYTE | PIPE_WAIT,
- PIPE_UNLIMITED_INSTANCES, PIPE_SIZE, PIPE_SIZE, PIPE_TIMEOUT, NULL))) ||
- (INVALID_HANDLE_VALUE == (stdHandles[2] = CreateNamedPipeW(errPipeName, PIPE_ACCESS_INBOUND | FILE_FLAG_OVERLAPPED,
- PIPE_TYPE_BYTE | PIPE_READMODE_BYTE | PIPE_WAIT,
- PIPE_UNLIMITED_INSTANCES, PIPE_SIZE, PIPE_SIZE, PIPE_TIMEOUT, NULL)))) {
- CloseHandle(stdHandles[0]);
- CloseHandle(stdHandles[1]);
- CloseHandle(stdHandles[2]);
- ThrowByName(env, "java/io/IOException", "CreatePipe");
- return 0;
- }
-
-#ifdef DEBUG_MONITOR
- swprintf(buffer, _T("Opened pipes: %s, %s, %s\n"), inPipeName, outPipeName, errPipeName);
- OutputDebugStringW(buffer);
-#endif
-
-
- nCmdTokens = env->GetArrayLength(cmdarray);
- nEnvVars = env->GetArrayLength(envp);
-
- pCurProcInfo = createProcInfo();
-
- if(NULL == pCurProcInfo)
- {
- ThrowByName(env, "java/io/IOException", "Too many processes");
- return 0;
- }
-
- // Construct starter's command line
- swprintf(eventBreakName, L"SABreak%04x%08x", pid, nLocalCounter);
- swprintf(eventWaitName, L"SAWait%004x%08x", pid, nLocalCounter);
- swprintf(eventTerminateName, L"SATerm%004x%08x", pid, nLocalCounter);
- swprintf(eventKillName, L"SAKill%04x%08x", pid, nLocalCounter);
- swprintf(eventCtrlcName, L"SACtrlc%04x%08x", pid, nLocalCounter);
-
- pCurProcInfo->eventBreak = CreateEventW(NULL, FALSE, FALSE, eventBreakName);
- if(NULL == pCurProcInfo->eventBreak || GetLastError() == ERROR_ALREADY_EXISTS)
- {
- ThrowByName(env, "java/io/IOException", "Cannot create event");
- return 0;
- }
- pCurProcInfo->eventWait = CreateEventW(NULL, TRUE, FALSE, eventWaitName);
- pCurProcInfo->eventTerminate = CreateEventW(NULL, FALSE, FALSE, eventTerminateName);
- pCurProcInfo->eventKill = CreateEventW(NULL, FALSE, FALSE, eventKillName);
- pCurProcInfo->eventCtrlc = CreateEventW(NULL, FALSE, FALSE, eventCtrlcName);
-
- swprintf(szCmdLine, L"\"%sstarter.exe\" %i %i %s %s %s %s %s ", path, pid, nLocalCounter, eventBreakName, eventWaitName, eventTerminateName, eventKillName, eventCtrlcName);
- nPos = wcslen(szCmdLine);
-
- // Prepare command line
- for(i = 0; i < nCmdTokens; ++i)
- {
- jstring item = (jstring)env->GetObjectArrayElement(cmdarray, i);
- jsize len = env->GetStringLength(item);
- int nCpyLen;
- const wchar_t * str = (const wchar_t *)env->GetStringChars(item, 0);
- if(NULL != str)
- {
- int requiredSize= nPos+len+2;
- if (requiredSize > 32*1024) {
- ThrowByName(env, "java/io/IOException", "Command line too long");
- return 0;
- }
- ensureSize(&szCmdLine, &nCmdLineLength, requiredSize);
- if (NULL == szCmdLine) {
- ThrowByName(env, "java/io/IOException", "Not enough memory");
- return 0;
- }
-
- if(0 > (nCpyLen = copyTo(szCmdLine + nPos, str, len, nCmdLineLength - nPos)))
- {
- ThrowByName(env, "java/io/IOException", "Command line too long");
- return 0;
- }
- nPos += nCpyLen;
- szCmdLine[nPos] = _T(' ');
- ++nPos;
- env->ReleaseStringChars(item, (const jchar *)str);
- }
- }
- szCmdLine[nPos] = _T('\0');
-
-#ifdef DEBUG_MONITOR
- swprintf(buffer, _T("There are %i environment variables \n"), nEnvVars);
- OutputDebugStringW(buffer);
-#endif
- // Prepare environment block
- if (nEnvVars > 0)
- {
- nPos = 0;
- szEnvBlock = (wchar_t *)malloc(nBlkSize * sizeof(wchar_t));
- for(i = 0; i < nEnvVars; ++i)
- {
- jstring item = (jstring)env->GetObjectArrayElement(envp, i);
- jsize len = env->GetStringLength(item);
- const wchar_t * str = (const wchar_t *)env->GetStringChars(item, 0);
- if(NULL != str)
- {
- while((nBlkSize - nPos) <= (len + 2)) // +2 for two '\0'
- {
- nBlkSize += MAX_ENV_SIZE;
- szEnvBlock = (wchar_t *)realloc(szEnvBlock, nBlkSize * sizeof(wchar_t));
- if(NULL == szEnvBlock)
- {
- ThrowByName(env, "java/io/IOException", "Not enough memory");
- return 0;
- }
-#ifdef DEBUG_MONITOR
- swprintf(buffer, _T("Realloc environment block; new length is %i \n"), nBlkSize);
- OutputDebugStringW(buffer);
-#endif
-
- }
-#ifdef DEBUG_MONITOR
- swprintf(buffer, _T("%s\n"), str);
- OutputDebugStringW(buffer);
-#endif
- wcsncpy(szEnvBlock + nPos, str, len);
- nPos += len;
- szEnvBlock[nPos] = _T('\0');
- ++nPos;
- env->ReleaseStringChars(item, (const jchar *)str);
- }
- }
- szEnvBlock[nPos] = _T('\0');
- }
-
-
-
- if (dir != 0)
- {
- const wchar_t * str = (const wchar_t *)env->GetStringChars(dir, 0);
- if(NULL != str)
- {
- cwd = wcsdup(str);
- env->ReleaseStringChars(dir, (const jchar *)str);
- }
- }
-
-
- ZeroMemory(&si, sizeof(si));
- si.cb = sizeof(si);
- si.dwFlags |= STARTF_USESHOWWINDOW;
- si.wShowWindow = SW_HIDE; // Processes in the Process Group are hidden
-
-
-
- SetHandleInformation(stdHandles[0], HANDLE_FLAG_INHERIT, FALSE);
- SetHandleInformation(stdHandles[1], HANDLE_FLAG_INHERIT, FALSE);
- SetHandleInformation(stdHandles[2], HANDLE_FLAG_INHERIT, FALSE);
-
- flags = CREATE_NEW_CONSOLE;
- flags |= CREATE_NO_WINDOW;
- flags |= CREATE_UNICODE_ENVIRONMENT;
-
-#ifdef DEBUG_MONITOR
- OutputDebugStringW(szCmdLine);
-#endif
- // launches starter; we need it to create another console group to correctly process
- // emulation of SYSint signal (Ctrl-C)
- ret = CreateProcessW(0, /* executable name */
- szCmdLine, /* command line */
- 0, /* process security attribute */
- 0, /* thread security attribute */
- FALSE, /* inherits system handles */
- flags, /* normal attached process */
- szEnvBlock, /* environment block */
- cwd, /* change to the new current directory */
- &si, /* (in) startup information */
- &pi); /* (out) process information */
-
- if(NULL != cwd)
- free((void *)cwd);
-
- if(NULL != szEnvBlock)
- free(szEnvBlock);
-
- if(NULL != szCmdLine)
- free(szCmdLine);
-
- if (!ret) // Launching error
- {
- char * lpMsgBuf;
- CloseHandle(stdHandles[0]);
- CloseHandle(stdHandles[1]);
- CloseHandle(stdHandles[2]);
- FormatMessageA(
- FORMAT_MESSAGE_ALLOCATE_BUFFER |
- FORMAT_MESSAGE_FROM_SYSTEM |
- FORMAT_MESSAGE_IGNORE_INSERTS,
- NULL,
- GetLastError(),
- MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
- (char *)&lpMsgBuf,
- 0,
- NULL
- );
- ThrowByName(env, "java/io/IOException", lpMsgBuf);
- // Free the buffer.
- LocalFree( lpMsgBuf );
- cleanUpProcBlock(pCurProcInfo);
- ret = -1;
- }
- else
- {
- int file_handles[3];
- HANDLE h[2];
- int what;
-
- EnterCriticalSection(&cs);
-
- pCurProcInfo -> pid = pi.dwProcessId;
- h[0] = pCurProcInfo -> eventWait;
- h[1] = pi.hProcess;
-
- what = WaitForMultipleObjects(2, h, FALSE, INFINITE);
- if(what != WAIT_OBJECT_0) // CreateProcess failed
- {
-#ifdef DEBUG_MONITOR
- swprintf(buffer, _T("Process %i failed\n"), pi.dwProcessId);
- OutputDebugStringW(buffer);
-#endif
- cleanUpProcBlock(pCurProcInfo);
- ThrowByName(env, "java/io/IOException", "Launching failed");
-#ifdef DEBUG_MONITOR
- OutputDebugStringW(_T("Process failed\n"));
-#endif
- }
- else
- {
- ret = (long)(pCurProcInfo -> uid);
-
- // Prepare stream handlers to return to java program
- file_handles[0] = (int)stdHandles[0];
- file_handles[1] = (int)stdHandles[1];
- file_handles[2] = (int)stdHandles[2];
- env->SetIntArrayRegion(channels, 0, 3, (jint *)file_handles);
-
- // do the cleanup so launch the according thread
- // create a copy of the PROCESS_INFORMATION as this might get destroyed
- piCopy = (PROCESS_INFORMATION *)malloc(sizeof(PROCESS_INFORMATION));
- memcpy(piCopy, &pi, sizeof(PROCESS_INFORMATION));
- _beginthread(waitProcTermination, 0, (void *)piCopy);
-
-#ifdef DEBUG_MONITOR
- OutputDebugStringW(_T("Process started\n"));
-#endif
- }
- LeaveCriticalSection(&cs);
-
- }
-
- CloseHandle(pi.hThread);
-
- return ret;
-
-}
-
-
-/////////////////////////////////////////////////////////////////////////////////////
-// Launcher; just launches process and don't care about it any more
-// Arguments: (see Spawner.java)
-// [in] cmdarray - array of command line elements
-// [in] envp - array of environment variables
-// [in] dir - working directory
-/////////////////////////////////////////////////////////////////////////////////////
-extern "C"
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_exec1
- (JNIEnv * env, jobject process, jobjectArray cmdarray, jobjectArray envp, jstring dir)
-{
-
- SECURITY_ATTRIBUTES sa;
- PROCESS_INFORMATION pi = {0};
- STARTUPINFOW si;
- DWORD flags = 0;
- wchar_t * cwd = NULL;
- wchar_t * envBlk = NULL;
- int ret = 0;
- jsize nCmdTokens = 0;
- jsize nEnvVars = 0;
- int i;
- int nPos;
- int nCmdLineLength= 0;
- wchar_t * szCmdLine= 0;
- int nBlkSize = MAX_ENV_SIZE;
- wchar_t * szEnvBlock = NULL;
-
- nCmdLineLength= MAX_CMD_SIZE;
- szCmdLine= (wchar_t *)malloc(nCmdLineLength * sizeof(wchar_t));
- szCmdLine[0]= 0;
-
- sa.nLength = sizeof(sa);
- sa.lpSecurityDescriptor = 0;
- sa.bInheritHandle = TRUE;
-
-
- nCmdTokens = env->GetArrayLength(cmdarray);
- nEnvVars = env->GetArrayLength(envp);
-
- nPos = 0;
-
- // Prepare command line
- for(i = 0; i < nCmdTokens; ++i)
- {
- jstring item = (jstring)env->GetObjectArrayElement(cmdarray, i);
- jsize len = env->GetStringLength(item);
- int nCpyLen;
- const wchar_t * str = (const wchar_t *)env->GetStringChars(item, 0);
- if(NULL != str)
- {
- int requiredSize= nPos+len+2;
- if (requiredSize > 32*1024) {
- ThrowByName(env, "java/io/IOException", "Command line too long");
- return 0;
- }
- ensureSize(&szCmdLine, &nCmdLineLength, requiredSize);
- if (NULL == szCmdLine) {
- ThrowByName(env, "java/io/IOException", "Not enough memory");
- return 0;
- }
-
- if(0 > (nCpyLen = copyTo(szCmdLine + nPos, str, len, nCmdLineLength - nPos)))
- {
- ThrowByName(env, "java/io/Exception", "Command line too long");
- return 0;
- }
- nPos += nCpyLen;
- szCmdLine[nPos] = _T(' ');
- ++nPos;
- env->ReleaseStringChars(item, (const jchar *)str);
- }
- }
-
- szCmdLine[nPos] = _T('\0');
-
- // Prepare environment block
- if (nEnvVars > 0)
- {
- szEnvBlock = (wchar_t *)malloc(nBlkSize * sizeof(wchar_t));
- nPos = 0;
- for(i = 0; i < nEnvVars; ++i)
- {
- jstring item = (jstring)env->GetObjectArrayElement(envp, i);
- jsize len = env->GetStringLength(item);
- const wchar_t * str = (const wchar_t *)env->GetStringChars(item, 0);
- if(NULL != str)
- {
- while((nBlkSize - nPos) <= (len + 2)) // +2 for two '\0'
- {
- nBlkSize += MAX_ENV_SIZE;
- szEnvBlock = (wchar_t *)realloc(szEnvBlock, nBlkSize * sizeof(wchar_t));
- if(NULL == szEnvBlock)
- {
- ThrowByName(env, "java/io/Exception", "Not enough memory");
- return 0;
- }
- }
- wcsncpy(szEnvBlock + nPos, str, len);
- nPos += len;
- szEnvBlock[nPos] = _T('\0');
- ++nPos;
- env->ReleaseStringChars(item, (const jchar *)str);
- }
- }
- szEnvBlock[nPos] = _T('\0');
- envBlk = szEnvBlock;
- }
-
-
-
- if (dir != 0)
- {
- const wchar_t * str = (const wchar_t *)env->GetStringChars(dir, 0);
- if(NULL != str)
- {
- cwd = wcsdup(str);
- env->ReleaseStringChars(dir, (const jchar *)str);
- }
- }
-
-
- ZeroMemory(&si, sizeof(si));
- si.cb = sizeof(si);
-
-
-
-
-
- flags = CREATE_NEW_CONSOLE;
- flags |= CREATE_UNICODE_ENVIRONMENT;
- ret = CreateProcessW(0, /* executable name */
- szCmdLine, /* command line */
- 0, /* process security attribute */
- 0, /* thread security attribute */
- TRUE, /* inherits system handles */
- flags, /* normal attached process */
- envBlk, /* environment block */
- cwd, /* change to the new current directory */
- &si, /* (in) startup information */
- &pi); /* (out) process information */
-
-
-
- if(NULL != cwd)
- free(cwd);
- if(NULL != szEnvBlock)
- free(szEnvBlock);
- if(NULL != szCmdLine)
- free(szCmdLine);
-
- if (!ret) // error
- {
- char * lpMsgBuf;
-
- FormatMessage(
- FORMAT_MESSAGE_ALLOCATE_BUFFER |
- FORMAT_MESSAGE_FROM_SYSTEM |
- FORMAT_MESSAGE_IGNORE_INSERTS,
- NULL,
- GetLastError(),
- MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
- (wchar_t *)&lpMsgBuf,
- 0,
- NULL
- );
- ThrowByName(env, "java/io/IOException", lpMsgBuf);
- // Free the buffer.
- LocalFree( lpMsgBuf );
- ret = -1;
- }
- else
- {
- // Clean-up
- CloseHandle(pi.hThread);
- CloseHandle(pi.hProcess);
- ret = (long)pi.dwProcessId; //hProcess;
- }
-
-
- return ret;
-
-}
-
-
-/////////////////////////////////////////////////////////////////////////////////////
-// Emulation of the signal raising
-// Arguments: (see Spawner.java)
-// [in] uid - unique process ID
-// [in] signal - signal to raise
-/////////////////////////////////////////////////////////////////////////////////////
-extern "C"
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_raise
- (JNIEnv * env, jobject process, jint uid, jint signal)
-{
- jint ret = 0;
-
- HANDLE hProc;
- pProcInfo_t pCurProcInfo = findProcInfo(uid);
-#ifdef DEBUG_MONITOR
- wchar_t buffer[100];
-#endif
-
- if(NULL == pCurProcInfo) {
- if(SIG_INT == signal) { // Try another way
- return interruptProcess(uid) ;
- }
- return -1;
- }
-
-#ifdef DEBUG_MONITOR
- swprintf(buffer, _T("Spawner received signal %i for process %i\n"), signal, pCurProcInfo -> pid);
- OutputDebugStringW(buffer);
-#endif
-
- hProc = OpenProcess(SYNCHRONIZE, 0, pCurProcInfo -> pid);
-
- if(NULL == hProc)
- return -1;
-
- switch(signal)
- {
- case SIG_NOOP:
- // Wait 0 msec -just check if the process has been still running
- ret = ((WAIT_TIMEOUT == WaitForSingleObject(hProc, 0)) ? 0 : -1);
- break;
- case SIG_HUP:
- // Temporary do nothing
- ret = 0;
- break;
- case SIG_TERM:
-#ifdef DEBUG_MONITOR
- swprintf(buffer, _T("Spawner received TERM signal for process %i\n"),
- pCurProcInfo -> pid);
- OutputDebugStringW(buffer);
-#endif
- SetEvent(pCurProcInfo -> eventTerminate);
-#ifdef DEBUG_MONITOR
- OutputDebugStringW(_T("Spawner signaled TERM event\n"));
-#endif
- ret = 0;
- break;
-
- case SIG_KILL:
-#ifdef DEBUG_MONITOR
- swprintf(buffer, _T("Spawner received KILL signal for process %i\n"),
- pCurProcInfo -> pid);
- OutputDebugStringW(buffer);
-#endif
- SetEvent(pCurProcInfo -> eventKill);
-#ifdef DEBUG_MONITOR
- OutputDebugStringW(_T("Spawner signaled KILL event\n"));
-#endif
- ret = 0;
- break;
- case SIG_INT:
- ResetEvent(pCurProcInfo -> eventWait);
- SetEvent(pCurProcInfo -> eventBreak);
- ret = (WaitForSingleObject(pCurProcInfo -> eventWait, 100) == WAIT_OBJECT_0);
- break;
- case CTRLC:
- ResetEvent(pCurProcInfo -> eventWait);
- SetEvent(pCurProcInfo -> eventCtrlc);
- ret = (WaitForSingleObject(pCurProcInfo -> eventWait, 100) == WAIT_OBJECT_0);
- break;
- default:
- break;
- }
-
- CloseHandle(hProc);
- return ret;
-
-
-}
-
-
-
-/////////////////////////////////////////////////////////////////////////////////////
-// Wait for process termination
-// Arguments: (see Spawner.java)
-// [in] uid - unique process ID
-/////////////////////////////////////////////////////////////////////////////////////
-extern "C"
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_waitFor
- (JNIEnv * env, jobject process, jint uid)
-{
- DWORD exit_code = -1;
- int what=0;
- HANDLE hProc;
- pProcInfo_t pCurProcInfo = findProcInfo(uid);
-
- if(NULL == pCurProcInfo)
- return -1;
-
- hProc = OpenProcess(SYNCHRONIZE | PROCESS_QUERY_INFORMATION, 0, pCurProcInfo -> pid);
-
- if(NULL == hProc)
- return -1;
-
- what = WaitForSingleObject(hProc, INFINITE);
-
-
- if (what == WAIT_OBJECT_0)
- {
- GetExitCodeProcess(hProc, &exit_code);
- }
-
-
- if(hProc)
- CloseHandle(hProc);
-
- return exit_code;
-}
-
-
-
-
-
-// Utilities
-
-/////////////////////////////////////////////////////////////////////////////////////
-// Throws Java exception (will be trapped by VM).
-// Arguments:
-// [in] name - name of exception class
-// [in] message to assign thi event
-/////////////////////////////////////////////////////////////////////////////////////
-void ThrowByName(JNIEnv *env, const char *name, const char *msg)
-{
- jclass cls = env->FindClass(name);
-
- if (cls != 0) /* Otherwise an exception has already been thrown */
- env->ThrowNew(cls, msg);
-
- /* It's a good practice to clean up the local references. */
- env->DeleteLocalRef(cls);
-}
-
-
-
-
-/////////////////////////////////////////////////////////////////////////////////////
-// Create process description block.
-// Arguments: no
-// Return : pointer to the process descriptor
-/////////////////////////////////////////////////////////////////////////////////////
-pProcInfo_t createProcInfo()
-{
- int i;
- pProcInfo_t p = NULL;
-
- EnterCriticalSection(&cs);
-
- if(NULL == pInfo)
- {
- pInfo = (pProcInfo_t)malloc(sizeof(procInfo_t) * MAX_PROCS);
- ZeroMemory(pInfo, sizeof(procInfo_t) * MAX_PROCS);
- }
-
- for(i = 0; i < MAX_PROCS; ++i)
- {
- if(pInfo[i].pid == 0)
- {
- pInfo[i].pid = -1;
- pInfo[i].uid = ++procCounter;
- p = pInfo + i;
- break;
- }
- }
-
- LeaveCriticalSection(&cs);
-
- return p;
-}
-
-/////////////////////////////////////////////////////////////////////////////////////
-// Using unique process ID finds process descriptor
-// Arguments: no
-// Return : pointer to the process descriptor
-/////////////////////////////////////////////////////////////////////////////////////
-pProcInfo_t findProcInfo(int uid)
-{
- int i;
- pProcInfo_t p = NULL;
- if(NULL == pInfo)
- return NULL;
-
- for(i = 0; i < MAX_PROCS; ++i)
- {
- if(pInfo[i].uid == uid)
- {
- p = pInfo + i;
- break;
- }
- }
-
- return p;
-}
-
-/////////////////////////////////////////////////////////////////////////////////////
-// Cleans up vacant process descriptor
-// Arguments:
-// pCurProcInfo - pointer to descriptor to clean up
-// Return : no
-void cleanUpProcBlock(pProcInfo_t pCurProcInfo)
-{
- if(0 != pCurProcInfo -> eventBreak)
- {
- CloseHandle(pCurProcInfo -> eventBreak);
- pCurProcInfo -> eventBreak = 0;
- }
- if(0 != pCurProcInfo -> eventWait)
- {
- CloseHandle(pCurProcInfo -> eventWait);
- pCurProcInfo -> eventWait = 0;
- }
- if(0 != pCurProcInfo -> eventTerminate)
- {
- CloseHandle(pCurProcInfo -> eventTerminate);
- pCurProcInfo -> eventTerminate = 0;
- }
-
- if(0 != pCurProcInfo -> eventKill)
- {
- CloseHandle(pCurProcInfo -> eventKill);
- pCurProcInfo -> eventKill = 0;
- }
-
- if(0 != pCurProcInfo -> eventCtrlc)
- {
- CloseHandle(pCurProcInfo -> eventCtrlc);
- pCurProcInfo -> eventCtrlc = 0;
- }
-
- pCurProcInfo -> pid = 0;
-}
-
-/////////////////////////////////////////////////////////////////////////////////////
-// Running in separate thread and waiting for the process termination
-// Arguments:
-// pv - pointer to PROCESS_INFORMATION struct
-// Return : no
-/////////////////////////////////////////////////////////////////////////////////////
-void _cdecl waitProcTermination(void* pv)
-{
- PROCESS_INFORMATION *pi = (PROCESS_INFORMATION *)pv;
- int i;
-#ifdef DEBUG_MONITOR
- wchar_t buffer[1000];
-#endif
-
- // wait for process termination
- WaitForSingleObject(pi->hProcess, INFINITE);
-
- for(i = 0; i < MAX_PROCS; ++i)
- {
- if(pInfo[i].pid == pi->dwProcessId)
- {
- cleanUpProcBlock(pInfo + i);
-#ifdef DEBUG_MONITOR
- swprintf(buffer, _T("waitProcTermination: set PID %i to 0\n"),
- pi->dwProcessId);
- OutputDebugStringW(buffer);
-#endif
- }
- }
- CloseHandle(pi->hProcess);
-
- free(pi);
-}
-
-/////////////////////////////////////////////////////////////////////////////////////
-// Use this utility program to process correctly quotation marks in the command line
-// Arguments:
-// target - string to copy to
-// source - string to copy from
-// cpyLength - copy length
-// availSpace - size of the target buffer
-// Return :number of bytes used in target, or -1 in case of error
-/////////////////////////////////////////////////////////////////////////////////////
-int copyTo(wchar_t * target, const wchar_t * source, int cpyLength, int availSpace)
-{
- BOOL bSlash = FALSE;
- int i = 0, j = 0;
- int totCpyLength = cpyLength;
-
-#define QUOTATION_DO 0
-#define QUOTATION_DONE 1
-#define QUOTATION_NONE 2
-
- int nQuotationMode = 0;
-
-
-
- if(availSpace <= cpyLength) // = to reserve space for final '\0'
- return -1;
-
- if((_T('\"') == *source) && (_T('\"') == *(source + cpyLength - 1)))
- {
- nQuotationMode = QUOTATION_DONE;
- }
- else
- if(wcschr(source, _T(' ')) == NULL)
- {
- // No reason to quote term because it doesn't have embedded spaces
- nQuotationMode = QUOTATION_NONE;
- }
- else
- {
- // Needs to be quoted
- nQuotationMode = QUOTATION_DO;
- *target = _T('\"');
- ++j;
- }
-
-
- for(; i < cpyLength; ++i, ++j)
- {
- if(source[i] == _T('\\'))
- bSlash = TRUE;
- else
- {
- // Don't escape embracing quotation marks
- if((source[i] == _T('\"')) && !((nQuotationMode == QUOTATION_DONE) && ((i == 0) || (i == (cpyLength - 1))) ) )
- {
- if(!bSlash) // If still not escaped
- {
- if(j == availSpace)
- return -1;
- target[j] = _T('\\');
- ++j;
- }
- }
- bSlash = FALSE;
- }
-
- if(j == availSpace)
- return -1;
- target[j] = source[i];
- }
-
- if(nQuotationMode == QUOTATION_DO)
- {
- if(j == availSpace)
- return -1;
- target[j] = _T('\"');
- ++j;
- }
-
- return j;
-}
diff --git a/core/org.eclipse.cdt.core.win32/library/build64.bat b/core/org.eclipse.cdt.core.win32/library/build64.bat
deleted file mode 100644
index f866c8befc0..00000000000
--- a/core/org.eclipse.cdt.core.win32/library/build64.bat
+++ /dev/null
@@ -1,14 +0,0 @@
-@rem ***************************************************************************
-@rem Copyright (c) 2011 Marc-Andre Laperle and others.
-@rem This program and the accompanying materials
-@rem are made available under the terms of the Eclipse Public License 2.0
-@rem which accompanies this distribution, and is available at
-@rem https://www.eclipse.org/legal/epl-2.0/
-em
-em SPDX-License-Identifier: EPL-2.0
-@rem
-@rem Contributors:
-@rem Marc-Andre Laperle - initial API and implementation
-@rem ***************************************************************************
-
-nmake /f Makefile_x86_64.mk /NOLOGO install clean \ No newline at end of file
diff --git a/core/org.eclipse.cdt.core.win32/library/cdt-win32.sln b/core/org.eclipse.cdt.core.win32/library/cdt-win32.sln
deleted file mode 100644
index 01d10abe31e..00000000000
--- a/core/org.eclipse.cdt.core.win32/library/cdt-win32.sln
+++ /dev/null
@@ -1,33 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 2013
-VisualStudioVersion = 12.0.31101.0
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "winreg", "winreg\winreg.vcxproj", "{4CA57EA3-42F2-4CC1-8E95-5C707A8E7363}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Mixed Platforms = Debug|Mixed Platforms
- Debug|Win32 = Debug|Win32
- Debug|x64 = Debug|x64
- Release|Mixed Platforms = Release|Mixed Platforms
- Release|Win32 = Release|Win32
- Release|x64 = Release|x64
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {4CA57EA3-42F2-4CC1-8E95-5C707A8E7363}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
- {4CA57EA3-42F2-4CC1-8E95-5C707A8E7363}.Debug|Mixed Platforms.Build.0 = Debug|Win32
- {4CA57EA3-42F2-4CC1-8E95-5C707A8E7363}.Debug|Win32.ActiveCfg = Debug|Win32
- {4CA57EA3-42F2-4CC1-8E95-5C707A8E7363}.Debug|Win32.Build.0 = Debug|Win32
- {4CA57EA3-42F2-4CC1-8E95-5C707A8E7363}.Debug|x64.ActiveCfg = Debug|Win32
- {4CA57EA3-42F2-4CC1-8E95-5C707A8E7363}.Release|Mixed Platforms.ActiveCfg = Release|Win32
- {4CA57EA3-42F2-4CC1-8E95-5C707A8E7363}.Release|Mixed Platforms.Build.0 = Release|Win32
- {4CA57EA3-42F2-4CC1-8E95-5C707A8E7363}.Release|Win32.ActiveCfg = Release|Win32
- {4CA57EA3-42F2-4CC1-8E95-5C707A8E7363}.Release|Win32.Build.0 = Release|Win32
- {4CA57EA3-42F2-4CC1-8E95-5C707A8E7363}.Release|x64.ActiveCfg = Release|x64
- {4CA57EA3-42F2-4CC1-8E95-5C707A8E7363}.Release|x64.Build.0 = Release|x64
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/core/org.eclipse.cdt.core.win32/library/iostream.c b/core/org.eclipse.cdt.core.win32/library/iostream.c
deleted file mode 100644
index 3b8d11259d4..00000000000
--- a/core/org.eclipse.cdt.core.win32/library/iostream.c
+++ /dev/null
@@ -1,272 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2009 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - initial API and implementation
- *
- * raise.c
- *
- * This is a part of JNI implementation of spawner
- * Includes implementation of JNI methods (see Spawner.java)
- *******************************************************************************/
-#include "stdafx.h"
-#include <string.h>
-#include <stdlib.h>
-#include "spawner.h"
-#include "SpawnerInputStream.h"
-#include "SpawnerOutputStream.h"
-
-#include "jni.h"
-#include "io.h"
-
-//#define READ_REPORT
-
-void ThrowByName(JNIEnv *env, const char *name, const char *msg);
-
-#define BUFF_SIZE (1024)
-
-/* Inaccessible static: skipBuffer */
-/*
- * Class: SpawnerInputStream
- * Method: read0
- * Signature: (I)I
- */
-extern "C"
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_SpawnerInputStream_read0
- (JNIEnv * env, jobject proc, jint fd, jbyteArray buf, jint len)
-{
- jbyte tmpBuf[BUFF_SIZE];
- int nBuffOffset = 0;
-#ifdef DEBUG_MONITOR
- _TCHAR buffer[1000];
-#endif
- OVERLAPPED overlapped;
- overlapped.Offset = 0;
- overlapped.OffsetHigh = 0;
- overlapped.hEvent = CreateEvent(NULL, // no security attribute
- TRUE, // manual-reset event
- TRUE, // initial state = signaled
- NULL); // unnamed event object
-
- if(NULL == overlapped.hEvent) {
- char * lpMsgBuf;
- FormatMessage(
- FORMAT_MESSAGE_ALLOCATE_BUFFER |
- FORMAT_MESSAGE_FROM_SYSTEM |
- FORMAT_MESSAGE_IGNORE_INSERTS,
- NULL,
- GetLastError(),
- MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
- (wchar_t *) &lpMsgBuf,
- 0,
- NULL
- );
-
- ThrowByName(env, "java/io/IOException", lpMsgBuf);
- // Free the buffer.
- LocalFree( lpMsgBuf );
- }
-
-#ifdef DEBUG_MONITOR
-#ifdef READ_REPORT
- _stprintf(buffer, _T("Start read %i\n"), fd);
- OutputDebugStringW(buffer);
-#endif
-#endif
-
- while(len > nBuffOffset)
- {
- DWORD nNumberOfBytesToRead = min(len - nBuffOffset, BUFF_SIZE);
- DWORD nNumberOfBytesRead;
- if(0 == ReadFile((HANDLE)fd, tmpBuf, nNumberOfBytesToRead, &nNumberOfBytesRead, &overlapped ))
- {
- int err = GetLastError();
-
- if(err == ERROR_IO_PENDING)
- {
- // asynchronous i/o is still in progress
- // check on the results of the asynchronous read
- if(GetOverlappedResult((HANDLE)fd, &overlapped,
- &nNumberOfBytesRead, TRUE))
- err = 0;
- // if there was a problem ...
- else
- err = GetLastError();
- }
- if(err == ERROR_BROKEN_PIPE) // Pipe was closed
- break;
- if(err != 0)
- {
- char * lpMsgBuf;
-#ifdef DEBUG_MONITOR
- _stprintf(buffer, _T("Read failed - %i, error %i\n"), fd, err);
- OutputDebugStringW(buffer);
-#endif
- if(err != ERROR_MORE_DATA) // Otherwise error means just that there are more data
- { // than buffer can accept
- FormatMessage(
- FORMAT_MESSAGE_ALLOCATE_BUFFER |
- FORMAT_MESSAGE_FROM_SYSTEM |
- FORMAT_MESSAGE_IGNORE_INSERTS,
- NULL,
- err,
- MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
- (wchar_t *) &lpMsgBuf,
- 0,
- NULL
- );
-
- ThrowByName(env, "java/io/IOException", lpMsgBuf);
- LocalFree( lpMsgBuf );
- nBuffOffset = 0;
- break;
- }
- else
- {
- // buffer overflow?
- // according to msdn this happens in message read mode only
-#ifdef DEBUG_MONITOR
- _stprintf(buffer, _T("Buffer full - %i, bytes read: %i\n"), fd, nNumberOfBytesRead);
- OutputDebugStringW(buffer);
-#endif
- // nNumberOfBytesRead can be 0 here for unknown reason (bug 269223)
- nNumberOfBytesRead = nNumberOfBytesToRead;
- }
- }
- }
- if(nNumberOfBytesRead > 0)
- env->SetByteArrayRegion(buf, nBuffOffset, nNumberOfBytesRead, tmpBuf);
- else
- break;
- nBuffOffset += nNumberOfBytesRead;
- if(nNumberOfBytesRead != nNumberOfBytesToRead)
- break;
- else
- {
- // Is there data left in the pipe?
- DWORD bytesAvailable = 0;
- if (!::PeekNamedPipe((HANDLE)fd, NULL, 0, NULL, &bytesAvailable, NULL)
- || bytesAvailable == 0)
- // No bytes left
- break;
- }
- }
- CloseHandle(overlapped.hEvent);
-#ifdef DEBUG_MONITOR
-#ifdef READ_REPORT
- _stprintf(buffer, _T("End read %i - bytes read: %d\n"), fd, nBuffOffset);
- OutputDebugStringW(buffer);
-#endif
-#endif
- return nBuffOffset; // This is a real full readed length
-
-}
-
-/*
- * Class: SpawnerInputStream
- * Method: close0
- * Signature: (I)I
- */
-extern "C"
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_SpawnerInputStream_close0
- (JNIEnv * env, jobject proc, jint fd)
-{
- int rc;
-#ifdef DEBUG_MONITOR
- _TCHAR buffer[1000];
- _stprintf(buffer, _T("Close %i\n"), fd);
- OutputDebugStringW(buffer);
-#endif
- rc = (CloseHandle((HANDLE)fd) ? 0 : -1);
-#ifdef DEBUG_MONITOR
- _stprintf(buffer, _T("Closed %i\n"), fd);
- OutputDebugStringW(buffer);
-#endif
- return (rc ? GetLastError() : 0);
-}
-
-extern "C"
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_SpawnerInputStream_available0
- (JNIEnv * env, jobject proc, jint fd)
-{
- DWORD nAvail = 0;
-
- if (0 == PeekNamedPipe((HANDLE)fd, NULL, 0, NULL, &nAvail, NULL)) {
- // error
- return 0;
- }
- return nAvail;
-}
-
-/*
- * Class: SpawnerOutputStream
- * Method: write0
- * Signature: (I[BI)I
- */
-extern "C"
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_SpawnerOutputStream_write0
- (JNIEnv * env, jobject proc, jint fd, jbyteArray buf, jint len)
-{
- jbyte tmpBuf[BUFF_SIZE];
- int nBuffOffset = 0;
-
-
- while(len > nBuffOffset)
- {
- DWORD nNumberOfBytesToWrite = min(len - nBuffOffset, BUFF_SIZE);
- DWORD nNumberOfBytesWritten;
- env->GetByteArrayRegion(buf, nBuffOffset, nNumberOfBytesToWrite, tmpBuf);
- if(0 == WriteFile((HANDLE)fd, tmpBuf, nNumberOfBytesToWrite, &nNumberOfBytesWritten, NULL))
- {
- char * lpMsgBuf;
- FormatMessage(
- FORMAT_MESSAGE_ALLOCATE_BUFFER |
- FORMAT_MESSAGE_FROM_SYSTEM |
- FORMAT_MESSAGE_IGNORE_INSERTS,
- NULL,
- GetLastError(),
- MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
- (wchar_t *) &lpMsgBuf,
- 0,
- NULL
- );
-
- ThrowByName(env, "java/io/IOException", lpMsgBuf);
- LocalFree( lpMsgBuf );
- return 0;
- }
- nBuffOffset += nNumberOfBytesWritten;
- }
- return 0;
-}
-
-/*
- * Class: SpawnerOutputStream
- * Method: close0
- * Signature: (I)I
- */
-extern "C"
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_SpawnerOutputStream_close0
- (JNIEnv * env, jobject proc, jint fd)
-{
- int rc;
-#ifdef DEBUG_MONITOR
- _TCHAR buffer[1000];
- _stprintf(buffer, _T("Close %i\n"), fd);
- OutputDebugStringW(buffer);
-#endif
- FlushFileBuffers((HANDLE)fd);
- rc = (CloseHandle((HANDLE)fd) ? 0 : -1);
-#ifdef DEBUG_MONITOR
- _stprintf(buffer, _T("Closed %i\n"), fd);
- OutputDebugStringW(buffer);
-#endif
- return (rc ? GetLastError() : 0);
-}
diff --git a/core/org.eclipse.cdt.core.win32/library/listtasks/StdAfx.cpp b/core/org.eclipse.cdt.core.win32/library/listtasks/StdAfx.cpp
deleted file mode 100644
index 7a38423ac3e..00000000000
--- a/core/org.eclipse.cdt.core.win32/library/listtasks/StdAfx.cpp
+++ /dev/null
@@ -1,21 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002 - 2005 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - initial API and implementation
- *******************************************************************************/
-// stdafx.cpp : source file that includes just the standard includes
-// ProcList.pch will be the pre-compiled header
-// stdafx.obj will contain the pre-compiled type information
-
-#include "stdafx.h"
-
-// TODO: reference any additional headers you need in STDAFX.H
-// and not in this file
diff --git a/core/org.eclipse.cdt.core.win32/library/listtasks/StdAfx.h b/core/org.eclipse.cdt.core.win32/library/listtasks/StdAfx.h
deleted file mode 100644
index 19ba7b65b6e..00000000000
--- a/core/org.eclipse.cdt.core.win32/library/listtasks/StdAfx.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002 - 2005 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - initial API and implementation
- *******************************************************************************/
-// stdafx.h : include file for standard system include files,
-// or project specific include files that are used frequently, but
-// are changed infrequently
-//
-
-#if !defined(AFX_STDAFX_H__CB3B970F_AA1A_4B59_9F98_DDBEA28470AF__INCLUDED_)
-#define AFX_STDAFX_H__CB3B970F_AA1A_4B59_9F98_DDBEA28470AF__INCLUDED_
-
-#if _MSC_VER > 1000
-#pragma once
-#endif // _MSC_VER > 1000
-
-
-// TODO: reference additional headers your program requires here
-
-//{{AFX_INSERT_LOCATION}}
-// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
-
-#endif // !defined(AFX_STDAFX_H__CB3B970F_AA1A_4B59_9F98_DDBEA28470AF__INCLUDED_)
diff --git a/core/org.eclipse.cdt.core.win32/library/listtasks/listtasks.cpp b/core/org.eclipse.cdt.core.win32/library/listtasks/listtasks.cpp
deleted file mode 100644
index 447406b9d13..00000000000
--- a/core/org.eclipse.cdt.core.win32/library/listtasks/listtasks.cpp
+++ /dev/null
@@ -1,349 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2011 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - initial API and implementation
- *******************************************************************************/
-// ProcList.cpp : Defines the entry point for the console application.
-//
-
-#include "stdafx.h"
-
-#include "listtasks.h"
-#include <tlhelp32.h>
-#include <vdmdbg.h>
-#include <iostream>
-#include <iomanip>
-
-using namespace std;
-
-typedef struct
-{
- DWORD dwPID ;
- PROCENUMPROC lpProc ;
- DWORD lParam ;
- BOOL bEnd ;
-} EnumInfoStruct ;
-
-BOOL WINAPI Enum16( DWORD dwThreadId, WORD hMod16, WORD hTask16,
- PSZ pszModName, PSZ pszFileName, LPARAM lpUserDefined ) ;
-
-BOOL CALLBACK OutProcInfo( DWORD pid, WORD, LPSTR procName, LPARAM ) ;
-
-int main(int argc, char* argv[])
-{
- EnumProcs(OutProcInfo, 0);
- return 0;
-}
-
-
-
-/*********************
-EnumProc.cpp
-*********************/
-
-// The EnumProcs function takes a pointer to a callback function
-// that will be called once per process in the system providing
-// process EXE filename and process ID.
-// Callback function definition:
-// BOOL CALLBACK Proc( DWORD dw, LPCSTR lpstr, LPARAM lParam ) ;
-//
-// lpProc -- Address of callback routine.
-//
-// lParam -- A user-defined LPARAM value to be passed to
-// the callback routine.
-BOOL WINAPI EnumProcs( PROCENUMPROC lpProc, LPARAM lParam )
-{
- OSVERSIONINFO osver ;
- HINSTANCE hInstLib ;
- HINSTANCE hInstLib2 ;
- HANDLE hSnapShot ;
- PROCESSENTRY32 procentry ;
- BOOL bFlag ;
- LPDWORD lpdwPIDs ;
- DWORD dwSize, dwSize2, dwIndex ;
- HMODULE hMod ;
- HANDLE hProcess ;
- char szFileName[ MAX_PATH ] ;
- EnumInfoStruct sInfo ;
-
- // ToolHelp Function Pointers.
- HANDLE (WINAPI *lpfCreateToolhelp32Snapshot)(DWORD,DWORD) ;
- BOOL (WINAPI *lpfProcess32First)(HANDLE,LPPROCESSENTRY32) ;
- BOOL (WINAPI *lpfProcess32Next)(HANDLE,LPPROCESSENTRY32) ;
-
- // PSAPI Function Pointers.
- BOOL (WINAPI *lpfEnumProcesses)( DWORD *, DWORD cb, DWORD * );
- BOOL (WINAPI *lpfEnumProcessModules)( HANDLE, HMODULE *,
- DWORD, LPDWORD );
- DWORD (WINAPI *lpfGetModuleFileNameEx)( HANDLE, HMODULE,
- LPTSTR, DWORD );
-
- // VDMDBG Function Pointers.
- INT (WINAPI *lpfVDMEnumTaskWOWEx)( DWORD,
- TASKENUMPROCEX fp, LPARAM );
-
-
- // Check to see if were running under Windows95 or
- // Windows NT.
- osver.dwOSVersionInfoSize = sizeof( osver ) ;
- if( !GetVersionEx( &osver ) )
- {
- return FALSE ;
- }
-
- // If Windows NT:
- if( osver.dwPlatformId == VER_PLATFORM_WIN32_NT )
- {
-
- // Load library and get the procedures explicitly. We do
- // this so that we don't have to worry about modules using
- // this code failing to load under Windows 95, because
- // it can't resolve references to the PSAPI.DLL.
- hInstLib = LoadLibraryA( "PSAPI.DLL" ) ;
- if( hInstLib == NULL )
- return FALSE ;
-
- SYSTEM_INFO systemInfo;
-
- GetSystemInfo(&systemInfo);
- bool isWin64 = systemInfo.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64;
-
- if(!isWin64)
- {
- hInstLib2 = LoadLibraryA( "VDMDBG.DLL" ) ;
- if( hInstLib2 == NULL )
- return FALSE ;
- }
-
- // Get procedure addresses.
- lpfEnumProcesses = (BOOL(WINAPI *)(DWORD *,DWORD,DWORD*))
- GetProcAddress( hInstLib, "EnumProcesses" ) ;
- lpfEnumProcessModules = (BOOL(WINAPI *)(HANDLE, HMODULE *,
- DWORD, LPDWORD)) GetProcAddress( hInstLib,
- "EnumProcessModules" ) ;
- lpfGetModuleFileNameEx =(DWORD (WINAPI *)(HANDLE, HMODULE,
- LPTSTR, DWORD )) GetProcAddress( hInstLib,
- "GetModuleFileNameExA" ) ;
- if(!isWin64)
- {
- lpfVDMEnumTaskWOWEx =(INT(WINAPI *)( DWORD, TASKENUMPROCEX,
- LPARAM))GetProcAddress( hInstLib2, "VDMEnumTaskWOWEx" );
- }
- if( lpfEnumProcesses == NULL ||
- lpfEnumProcessModules == NULL ||
- lpfGetModuleFileNameEx == NULL ||
- (!isWin64 && lpfVDMEnumTaskWOWEx == NULL))
- {
- FreeLibrary( hInstLib ) ;
- if(!isWin64)
- {
- FreeLibrary( hInstLib2 ) ;
- }
- return FALSE ;
- }
-
- // Call the PSAPI function EnumProcesses to get all of the
- // ProcID's currently in the system.
- // NOTE: In the documentation, the third parameter of
- // EnumProcesses is named cbNeeded, which implies that you
- // can call the function once to find out how much space to
- // allocate for a buffer and again to fill the buffer.
- // This is not the case. The cbNeeded parameter returns
- // the number of PIDs returned, so if your buffer size is
- // zero cbNeeded returns zero.
- // NOTE: The "HeapAlloc" loop here ensures that we
- // actually allocate a buffer large enough for all the
- // PIDs in the system.
- dwSize2 = 256 * sizeof( DWORD ) ;
- lpdwPIDs = NULL ;
- do
- {
- if( lpdwPIDs )
- {
- HeapFree( GetProcessHeap(), 0, lpdwPIDs ) ;
- dwSize2 *= 2 ;
- }
- lpdwPIDs = (LPDWORD)HeapAlloc( GetProcessHeap(), 0, dwSize2 );
- if( lpdwPIDs == NULL )
- {
- FreeLibrary( hInstLib ) ;
- if(!isWin64)
- {
- FreeLibrary( hInstLib2 ) ;
- }
- return FALSE ;
- }
- if( !lpfEnumProcesses( lpdwPIDs, dwSize2, &dwSize ) )
- {
- HeapFree( GetProcessHeap(), 0, lpdwPIDs ) ;
- FreeLibrary( hInstLib ) ;
- if(!isWin64)
- {
- FreeLibrary( hInstLib2 ) ;
- }
- return FALSE ;
- }
- }while( dwSize == dwSize2 ) ;
-
- // How many ProcID's did we get?
- dwSize /= sizeof( DWORD ) ;
-
- // Loop through each ProcID.
- for( dwIndex = 0 ; dwIndex < dwSize ; dwIndex++ )
- {
- szFileName[0] = 0 ;
- // Open the process (if we can... security does not
- // permit every process in the system).
- hProcess = OpenProcess(
- PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,
- FALSE, lpdwPIDs[ dwIndex ] ) ;
- if( hProcess != NULL )
- {
- // Here we call EnumProcessModules to get only the
- // first module in the process this is important,
- // because this will be the .EXE module for which we
- // will retrieve the full path name in a second.
- if( lpfEnumProcessModules( hProcess, &hMod,
- sizeof( hMod ), &dwSize2 ) )
- {
- // Get Full pathname:
- if( !lpfGetModuleFileNameEx( hProcess, hMod,
- szFileName, sizeof( szFileName ) ) )
- {
- szFileName[0] = 0 ;
- }
- }
- CloseHandle( hProcess ) ;
- }
- // Regardless of OpenProcess success or failure, we
- // still call the enum func with the ProcID.
- if(!lpProc( lpdwPIDs[dwIndex], 0, szFileName, lParam))
- break ;
-
- // Did we just bump into an NTVDM?
- if(!isWin64 && _stricmp( szFileName+(strlen(szFileName)-9),
- "NTVDM.EXE")==0)
- {
- // Fill in some info for the 16-bit enum proc.
- sInfo.dwPID = lpdwPIDs[dwIndex] ;
- sInfo.lpProc = lpProc ;
- sInfo.lParam = lParam ;
- sInfo.bEnd = FALSE ;
- // Enum the 16-bit stuff.
- lpfVDMEnumTaskWOWEx( lpdwPIDs[dwIndex],
- (TASKENUMPROCEX) Enum16,
- (LPARAM) &sInfo);
-
- // Did our main enum func say quit?
- if(sInfo.bEnd)
- break ;
- }
- }
-
- HeapFree( GetProcessHeap(), 0, lpdwPIDs ) ;
- if(!isWin64)
- {
- FreeLibrary( hInstLib2 ) ;
- }
-
- // If Windows 95:
- }else if( osver.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS )
- {
-
-
- hInstLib = LoadLibraryA( "Kernel32.DLL" ) ;
- if( hInstLib == NULL )
- return FALSE ;
-
- // Get procedure addresses.
- // We are linking to these functions of Kernel32
- // explicitly, because otherwise a module using
- // this code would fail to load under Windows NT,
- // which does not have the Toolhelp32
- // functions in the Kernel 32.
- lpfCreateToolhelp32Snapshot=
- (HANDLE(WINAPI *)(DWORD,DWORD))
- GetProcAddress( hInstLib,
- "CreateToolhelp32Snapshot" ) ;
- lpfProcess32First=
- (BOOL(WINAPI *)(HANDLE,LPPROCESSENTRY32))
- GetProcAddress( hInstLib, "Process32First" ) ;
- lpfProcess32Next=
- (BOOL(WINAPI *)(HANDLE,LPPROCESSENTRY32))
- GetProcAddress( hInstLib, "Process32Next" ) ;
- if( lpfProcess32Next == NULL ||
- lpfProcess32First == NULL ||
- lpfCreateToolhelp32Snapshot == NULL )
- {
- FreeLibrary( hInstLib ) ;
- return FALSE ;
- }
-
- // Get a handle to a Toolhelp snapshot of the systems
- // processes.
- hSnapShot = lpfCreateToolhelp32Snapshot(
- TH32CS_SNAPPROCESS, 0 ) ;
- if( hSnapShot == INVALID_HANDLE_VALUE )
- {
- FreeLibrary( hInstLib ) ;
- return FALSE ;
- }
-
- // Get the first process' information.
- procentry.dwSize = sizeof(PROCESSENTRY32) ;
- bFlag = lpfProcess32First( hSnapShot, &procentry ) ;
-
- // While there are processes, keep looping.
- while( bFlag )
- {
- // Call the enum func with the filename and ProcID.
- if(lpProc( procentry.th32ProcessID, 0,
- procentry.szExeFile, lParam ))
- {
- procentry.dwSize = sizeof(PROCESSENTRY32) ;
- bFlag = lpfProcess32Next( hSnapShot, &procentry );
- }else
- bFlag = FALSE ;
- }
-
-
- }else
- return FALSE ;
-
- // Free the library.
- FreeLibrary( hInstLib ) ;
-
- return TRUE ;
-}
-
-BOOL WINAPI Enum16( DWORD dwThreadId, WORD hMod16, WORD hTask16,
- PSZ pszModName, PSZ pszFileName, LPARAM lpUserDefined )
-{
- BOOL bRet ;
-
- EnumInfoStruct *psInfo = (EnumInfoStruct *)lpUserDefined ;
-
- bRet = psInfo->lpProc( psInfo->dwPID, hTask16, pszFileName,
- psInfo->lParam ) ;
-
- if(!bRet)
- {
- psInfo->bEnd = TRUE ;
- }
-
- return !bRet;
-}
-
-BOOL CALLBACK OutProcInfo( DWORD pid, WORD, LPSTR procName, LPARAM )
-{
- cout << setw(10) << pid << '\t' << procName << '\n';
- return TRUE;
-}
diff --git a/core/org.eclipse.cdt.core.win32/library/listtasks/listtasks.dsp b/core/org.eclipse.cdt.core.win32/library/listtasks/listtasks.dsp
deleted file mode 100644
index da100f1a4e5..00000000000
--- a/core/org.eclipse.cdt.core.win32/library/listtasks/listtasks.dsp
+++ /dev/null
@@ -1,117 +0,0 @@
-# Microsoft Developer Studio Project File - Name="listtasks" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=listtasks - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "listtasks.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "listtasks.mak" CFG="listtasks - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "listtasks - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "listtasks - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "listtasks - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-
-!ELSEIF "$(CFG)" == "listtasks - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-
-!ENDIF
-
-# Begin Target
-
-# Name "listtasks - Win32 Release"
-# Name "listtasks - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=.\listtasks.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\StdAfx.cpp
-# ADD CPP /Yc"stdafx.h"
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=.\listtasks.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\StdAfx.h
-# End Source File
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# Begin Source File
-
-SOURCE=.\ReadMe.txt
-# End Source File
-# End Target
-# End Project
diff --git a/core/org.eclipse.cdt.core.win32/library/listtasks/listtasks.dsw b/core/org.eclipse.cdt.core.win32/library/listtasks/listtasks.dsw
deleted file mode 100644
index 914555a178f..00000000000
--- a/core/org.eclipse.cdt.core.win32/library/listtasks/listtasks.dsw
+++ /dev/null
@@ -1,29 +0,0 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "listtasks"=.\listtasks.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
diff --git a/core/org.eclipse.cdt.core.win32/library/listtasks/listtasks.h b/core/org.eclipse.cdt.core.win32/library/listtasks/listtasks.h
deleted file mode 100644
index b2b12b52e77..00000000000
--- a/core/org.eclipse.cdt.core.win32/library/listtasks/listtasks.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002 - 2005 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - initial API and implementation
- *******************************************************************************/
-#include <windows.h>
-
-#ifndef __LISTTASKS_H
-#define __LISTTASKS_H
-
-typedef BOOL (CALLBACK *PROCENUMPROC)( DWORD, WORD, LPSTR,
- LPARAM ) ;
-
-BOOL WINAPI EnumProcs( PROCENUMPROC lpProc, LPARAM lParam ) ;
-
-
-#endif \ No newline at end of file
diff --git a/core/org.eclipse.cdt.core.win32/library/pty/jni/include/PTY.h b/core/org.eclipse.cdt.core.win32/library/pty/jni/include/PTY.h
deleted file mode 100644
index d73d5c00e16..00000000000
--- a/core/org.eclipse.cdt.core.win32/library/pty/jni/include/PTY.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/* DO NOT EDIT THIS FILE - it is machine generated */
-#include <jni.h>
-/* Header for class org_eclipse_cdt_utils_pty_PTY */
-
-#ifndef _Included_org_eclipse_cdt_utils_pty_PTY
-#define _Included_org_eclipse_cdt_utils_pty_PTY
-#ifdef __cplusplus
-extern "C" {
-#endif
-/*
- * Class: org_eclipse_cdt_utils_pty_PTY
- * Method: openMaster
- * Signature: (Z)Ljava/lang/String;
- */
-JNIEXPORT jstring JNICALL Java_org_eclipse_cdt_utils_pty_PTY_openMaster
- (JNIEnv *, jobject, jboolean);
-
-/*
- * Class: org_eclipse_cdt_utils_pty_PTY
- * Method: change_window_size
- * Signature: (III)I
- */
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTY_change_1window_1size
- (JNIEnv *, jobject, jint, jint, jint);
-
-/*
- * Class: org_eclipse_cdt_utils_pty_PTY
- * Method: exec2
- * Signature: ([Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[ILjava/lang/String;IZ)I
- */
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTY_exec2
- (JNIEnv *, jobject, jobjectArray, jobjectArray, jstring, jintArray, jstring, jint, jboolean);
-
-/*
- * Class: org_eclipse_cdt_utils_pty_PTY
- * Method: waitFor
- * Signature: (II)I
- */
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTY_waitFor
- (JNIEnv *, jobject, jint, jint);
-
-#ifdef __cplusplus
-}
-#endif
-#endif
diff --git a/core/org.eclipse.cdt.core.win32/library/pty/jni/include/PTYInputStream.h b/core/org.eclipse.cdt.core.win32/library/pty/jni/include/PTYInputStream.h
deleted file mode 100644
index 7767be6bd8c..00000000000
--- a/core/org.eclipse.cdt.core.win32/library/pty/jni/include/PTYInputStream.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/* DO NOT EDIT THIS FILE - it is machine generated */
-#include <jni.h>
-/* Header for class org_eclipse_cdt_utils_pty_PTYInputStream */
-
-#ifndef _Included_org_eclipse_cdt_utils_pty_PTYInputStream
-#define _Included_org_eclipse_cdt_utils_pty_PTYInputStream
-#ifdef __cplusplus
-extern "C" {
-#endif
-#undef org_eclipse_cdt_utils_pty_PTYInputStream_MAX_SKIP_BUFFER_SIZE
-#define org_eclipse_cdt_utils_pty_PTYInputStream_MAX_SKIP_BUFFER_SIZE 2048L
-/*
- * Class: org_eclipse_cdt_utils_pty_PTYInputStream
- * Method: read0
- * Signature: (I[BI)I
- */
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTYInputStream_read0
- (JNIEnv *, jobject, jint, jbyteArray, jint);
-
-/*
- * Class: org_eclipse_cdt_utils_pty_PTYInputStream
- * Method: close0
- * Signature: (I)I
- */
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTYInputStream_close0
- (JNIEnv *, jobject, jint);
-
-#ifdef __cplusplus
-}
-#endif
-#endif
diff --git a/core/org.eclipse.cdt.core.win32/library/pty/jni/include/PTYOutputStream.h b/core/org.eclipse.cdt.core.win32/library/pty/jni/include/PTYOutputStream.h
deleted file mode 100644
index fb28491060e..00000000000
--- a/core/org.eclipse.cdt.core.win32/library/pty/jni/include/PTYOutputStream.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/* DO NOT EDIT THIS FILE - it is machine generated */
-#include <jni.h>
-/* Header for class org_eclipse_cdt_utils_pty_PTYOutputStream */
-
-#ifndef _Included_org_eclipse_cdt_utils_pty_PTYOutputStream
-#define _Included_org_eclipse_cdt_utils_pty_PTYOutputStream
-#ifdef __cplusplus
-extern "C" {
-#endif
-/*
- * Class: org_eclipse_cdt_utils_pty_PTYOutputStream
- * Method: write0
- * Signature: (I[BI)I
- */
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTYOutputStream_write0
- (JNIEnv *, jobject, jint, jbyteArray, jint);
-
-/*
- * Class: org_eclipse_cdt_utils_pty_PTYOutputStream
- * Method: close0
- * Signature: (I)I
- */
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTYOutputStream_close0
- (JNIEnv *, jobject, jint);
-
-#ifdef __cplusplus
-}
-#endif
-#endif
diff --git a/core/org.eclipse.cdt.core.win32/library/pty/jni/src/dllmain.cpp b/core/org.eclipse.cdt.core.win32/library/pty/jni/src/dllmain.cpp
deleted file mode 100644
index c19f2ebbdcc..00000000000
--- a/core/org.eclipse.cdt.core.win32/library/pty/jni/src/dllmain.cpp
+++ /dev/null
@@ -1,71 +0,0 @@
-// dllmain.cpp : Defines the entry point for the DLL application.
-#include <windows.h>
-#include <delayimp.h>
-#include <assert.h>
-
-#pragma comment(lib, "delayimp")
-
-BOOL APIENTRY DllMain( HMODULE hModule,
- DWORD ul_reason_for_call,
- LPVOID lpReserved
- )
-{
- switch (ul_reason_for_call)
- {
- case DLL_PROCESS_ATTACH:
- case DLL_THREAD_ATTACH:
- case DLL_THREAD_DETACH:
- case DLL_PROCESS_DETACH:
- break;
- }
- return TRUE;
-}
-
-static HMODULE getCurrentModule()
-{
- HMODULE module;
- if (!GetModuleHandleEx(
- GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS |
- GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT,
- (LPCTSTR)getCurrentModule,
- &module)) {
- assert(false);
- }
- return module;
-}
-
-HMODULE PTYExplicitLoadLibrary( LPCSTR pszModuleName )
-{
- if( lstrcmpiA( pszModuleName, "winpty.dll" ) == 0 )
- {
- CHAR szPath[MAX_PATH] = "";
- //_hdllInstance is the HMODULE of *this* module
- DWORD cchPath = GetModuleFileNameA(getCurrentModule(), szPath, MAX_PATH );
- while( cchPath > 0 )
- {
- switch( szPath[cchPath - 1] )
- {
- case '\\':
- case '/':
- case ':':
- break;
- default:
- --cchPath;
- continue;
- }
- break; //stop searching; found path separator
- }
- lstrcpynA( szPath + cchPath, pszModuleName, MAX_PATH - cchPath );
- return LoadLibraryA( szPath ); //call with full path to dependent DLL
- }
- return NULL;
-}
-
-FARPROC WINAPI PTYDliNotifyHook( unsigned dliNotify, PDelayLoadInfo pdli )
-{
- if( dliNotify == dliNotePreLoadLibrary )
- return (FARPROC)PTYExplicitLoadLibrary( pdli->szDll );
- return NULL;
-}
-
-extern "C" PfnDliHook __pfnDliNotifyHook2 = PTYDliNotifyHook;
diff --git a/core/org.eclipse.cdt.core.win32/library/pty/jni/src/pty.cpp b/core/org.eclipse.cdt.core.win32/library/pty/jni/src/pty.cpp
deleted file mode 100644
index f7aef2a3d6a..00000000000
--- a/core/org.eclipse.cdt.core.win32/library/pty/jni/src/pty.cpp
+++ /dev/null
@@ -1,424 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2013, 2016 Wind River Systems, Inc. and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Wind River Systems - initial API and implementation
- *******************************************************************************/
-
-#include "PTY.h"
-#include "PTYInputStream.h"
-#include "PTYOutputStream.h"
-#include "winpty.h"
-
-#include <string>
-#include <vector>
-#include <map>
-#include <stdlib.h>
-#include <assert.h>
-#include <ctime>
-
-static std::map<int, winpty_t*> fd2pty;
-static std::map<int, int> fd2rc;
-
-/*
- * Class: org_eclipse_cdt_utils_pty_PTY
- * Method: openMaster
- * Signature: (Z)Ljava/lang/String;
- */
-JNIEXPORT jstring JNICALL Java_org_eclipse_cdt_utils_pty_PTY_openMaster(JNIEnv *env, jobject jobj, jboolean console)
-{
- jfieldID fid; /* Store the field ID */
- jstring jstr = NULL;
- jclass cls;
-
- int master = -1;
- char line[1024];
-
- line[0] = '\0';
-
- /* Open new winpty handle */
- winpty_t* winpty = winpty_open(80, 40);
- if (winpty == NULL) {
- return NULL;
- }
-
- /* Configure console mode */
- if (console) {
- winpty_set_console_mode(winpty, 1);
- }
-
- /* Generate masterFD based on current system time */
- srand((unsigned int)time(NULL));
- master = rand();
-
- /* Make sure masterFD does not exist */
- while (fd2pty.find(master) != fd2pty.end())
- master++;
-
- sprintf(line, "winpty_%i", master);
-
- /* Remember the winpty handle for the generated masterFD */
- fd2pty.insert(std::pair<int, winpty_t*>(master, winpty));
-
- /* Get a reference to the obj's class */
- cls = env->GetObjectClass(jobj);
-
- /* Set the master fd. */
- fid = env->GetFieldID(cls, "master", "I");
- if (fid == NULL) {
- return NULL;
- }
- env->SetIntField(jobj, fid, (jint)master);
-
- /* Create a new String for the slave. */
- jstr = env->NewStringUTF(line);
-
- return jstr;
-}
-
-/*
- * Class: org_eclipse_cdt_utils_pty_PTY
- * Method: change_window_size
- * Signature: (III)I
- */
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTY_change_1window_1size(JNIEnv *env, jobject jobj, jint fdm, jint width, jint height)
-{
- int fd;
- std::map<int, winpty_t*> :: const_iterator fd2pty_Iter;
-
- fd = fdm;
- fd2pty_Iter = fd2pty.find(fd);
- if (fd2pty_Iter != fd2pty.end()) {
- winpty_t* winpty = fd2pty_Iter -> second;
- if (winpty != NULL)
- return winpty_set_size(winpty, width, height);
- }
-
- return 0;
-}
-
-/*
- * Class: org_eclipse_cdt_utils_pty_PTYInputStream
- * Method: read0
- * Signature: (I[BI)I
- */
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTYInputStream_read0
- (JNIEnv *env, jobject jobj, jint jfd, jbyteArray buf, jint buf_len)
-{
- DWORD amount = -1;
- OVERLAPPED over;
- int fd;
- std::map<int, winpty_t*> :: const_iterator fd2pty_Iter;
-
- fd = jfd;
- fd2pty_Iter = fd2pty.find(fd);
- if (fd2pty_Iter != fd2pty.end()) {
- winpty_t* winpty = fd2pty_Iter -> second;
- if (winpty != NULL) {
- /* Get the pipe handle */
- HANDLE handle = winpty_get_data_pipe(winpty);
-
- memset(&over, 0, sizeof(over));
- over.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
-
- char *buffer = new char[buf_len];
- memset(buffer, 0, sizeof(*buffer));
-
- jbyte *data = env->GetByteArrayElements(buf, 0);
- memset(data, 0, sizeof(*data));
-
- amount = 0;
- BOOL ret = ReadFile(handle, buffer, buf_len, &amount, &over);
- if (!ret) {
- DWORD error = GetLastError();
- if (error == ERROR_IO_PENDING)
- ret = GetOverlappedResult(handle, &over, &amount, TRUE);
- }
-
- if (ret && amount > 0)
- memcpy(data, buffer, amount);
-
- if (!ret || amount == 0)
- amount = -1;
-
- if (!ret && fd2pty.find(fd) != fd2pty.end()) {
- int rc = winpty_get_exit_code(winpty);
- fd2rc.insert(std::pair<int, int>(fd, rc));
- }
-
- delete[] buffer;
- env->ReleaseByteArrayElements(buf, data, 0);
- ResetEvent(over.hEvent);
- }
- }
-
- return amount;
-}
-
-/*
- * Class: org_eclipse_cdt_utils_pty_PTYInputStream
- * Method: close0
- * Signature: (I)I
- */
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTYInputStream_close0(JNIEnv *env, jobject jobj, jint jfd)
-{
- int fd;
- std::map<int, winpty_t*> :: iterator fd2pty_Iter;
-
- fd = jfd;
- fd2pty_Iter = fd2pty.find(fd);
- if (fd2pty_Iter != fd2pty.end()) {
- winpty_t* winpty = fd2pty_Iter -> second;
- fd2pty.erase(fd2pty_Iter);
- if (winpty != NULL) {
- winpty_close(winpty);
- winpty = NULL;
- }
- }
-
- return 0;
-}
-
-/*
- * Class: org_eclipse_cdt_utils_pty_PTYOutputStream
- * Method: write0
- * Signature: (I[BI)I
- */
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTYOutputStream_write0(JNIEnv *env, jobject jobj, jint jfd, jbyteArray buf, jint buf_len)
-{
- DWORD written = -1;
- OVERLAPPED over;
- int fd;
- std::map<int, winpty_t*> :: iterator fd2pty_Iter;
-
- fd = jfd;
- fd2pty_Iter = fd2pty.find(fd);
- if (fd2pty_Iter != fd2pty.end()) {
- winpty_t* winpty = fd2pty_Iter -> second;
- if (winpty != NULL) {
- /* Get the pipe handle */
- HANDLE handle = winpty_get_data_pipe(winpty);
-
- memset(&over, 0, sizeof(over));
- over.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
-
- char *buffer = new char[buf_len];
- memset(buffer, 0, sizeof(*buffer));
-
- jbyte *data = env->GetByteArrayElements(buf, 0);
- memcpy(buffer, data, buf_len);
-
- BOOL ret = WriteFile(handle, buffer, buf_len, &written, &over);
- env->ReleaseByteArrayElements(buf, data, 0);
-
- if (!ret && GetLastError() == ERROR_IO_PENDING)
- ret = GetOverlappedResult(handle, &over, &written, TRUE);
- if (!ret || (int)written != buf_len)
- written = -1;
-
- delete[] buffer;
- }
- }
-
- return written;
-}
-
-/*
- * Class: org_eclipse_cdt_utils_pty_PTYOutputStream
- * Method: close0
- * Signature: (I)I
- */
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTYOutputStream_close0(JNIEnv *env, jobject jobj, jint jfd)
-{
- int fd;
- std::map<int, winpty_t*> :: iterator fd2pty_Iter;
-
- fd = jfd;
- fd2pty_Iter = fd2pty.find(fd);
- if (fd2pty_Iter != fd2pty.end()) {
- winpty_t* winpty = fd2pty_Iter -> second;
- fd2pty.erase(fd2pty_Iter);
- if (winpty != NULL) {
- winpty_close(winpty);
- winpty = NULL;
- }
- }
-
- return 0;
-}
-
-/*
- * Convert convert slashes to backslashes.
- */
-static std::wstring convertSlashes(const wchar_t *path)
-{
- std::wstring ret;
-
- for (int i = 0; path[i] != L'\0'; ++i) {
- if (path[i] == L'/')
- ret.push_back(L'\\');
- else
- ret.push_back(path[i]);
- }
-
- return ret;
-}
-
-// Convert argc/argv into a Win32 command-line following the escaping convention
-// documented on MSDN. (e.g. see CommandLineToArgvW documentation)
-static std::wstring argvToCommandLine(const std::vector<std::wstring> &argv)
-{
- std::wstring result;
- for (size_t argIndex = 0; argIndex < argv.size(); ++argIndex) {
- if (argIndex > 0)
- result.push_back(L' ');
- const wchar_t *arg = argv[argIndex].c_str();
- const bool quote =
- wcschr(arg, L' ') != NULL ||
- wcschr(arg, L'\t') != NULL ||
- *arg == L'\0';
- if (quote)
- result.push_back(L'\"');
- int bsCount = 0;
- for (const wchar_t *p = arg; *p != L'\0'; ++p) {
- if (*p == L'\\') {
- bsCount++;
- } else if (*p == L'\"') {
- result.append(bsCount * 2 + 1, L'\\');
- result.push_back(L'\"');
- bsCount = 0;
- } else {
- result.append(bsCount, L'\\');
- bsCount = 0;
- result.push_back(*p);
- }
- }
- if (quote) {
- result.append(bsCount * 2, L'\\');
- result.push_back(L'\"');
- } else {
- result.append(bsCount, L'\\');
- }
- }
- return result;
-}
-
-/*
- * Class: org_eclipse_cdt_utils_pty_PTY
- * Method: exec2
- * Signature: ([Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[ILjava/lang/String;IZ)I
- */
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTY_exec2
- (JNIEnv *env, jobject jobj, jobjectArray jcmd, jobjectArray jenv, jstring jdir, jintArray jchannels, jstring jslaveName, jint masterFD, jboolean console)
-{
- int fd;
- std::map<int, winpty_t*> :: iterator fd2pty_Iter;
-
- jint *channels = env->GetIntArrayElements(jchannels, 0);
- const wchar_t *cwdW = (const wchar_t *) env->GetStringChars(jdir, NULL);
- const char *pts_name = env->GetStringUTFChars(jslaveName, NULL);
-
- int pid = -1;
-
- int i;
- jint argc = env->GetArrayLength(jcmd);
- jint envc = env->GetArrayLength(jenv);
-
- if (channels == NULL)
- goto bail_out;
-
- fd = masterFD;
- fd2pty_Iter = fd2pty.find(fd);
- if (fd2pty_Iter != fd2pty.end()) {
- winpty_t* winpty = fd2pty_Iter -> second;
- if (winpty != NULL) {
- std::vector<std::wstring> argVector;
-
- for (i = 0; i < argc; i++) {
- jstring j_str = (jstring) env->GetObjectArrayElement(jcmd, i);
- const wchar_t *w_str = (const wchar_t *) env->GetStringChars(j_str, NULL);
- if (i == 0) argVector.push_back(convertSlashes(w_str));
- else argVector.push_back(w_str);
- env->ReleaseStringChars(j_str, (const jchar *) w_str);
- env->DeleteLocalRef(j_str);
- }
-
- std::wstring envp;
-
- for (i = 0; i < envc; i++) {
- jstring j_str = (jstring) env->GetObjectArrayElement(jenv, i);
- const wchar_t *w_str = (const wchar_t *) env->GetStringChars(j_str, NULL);
- envp.append(w_str);
- envp.push_back(L'\0');
- env->ReleaseStringChars(j_str, (const jchar *) w_str);
- env->DeleteLocalRef(j_str);
- }
-
- std::wstring cmdLine = argvToCommandLine(argVector);
- const wchar_t *cmdLineW = cmdLine.c_str();
-
- int ret = winpty_start_process(winpty,
- NULL,
- cmdLineW,
- cwdW,
- envp.c_str());
-
- if (ret == 0) {
- // Success. Get the process id.
- pid = winpty_get_process_id(winpty);
- }
- }
- }
-
-bail_out:
- env->ReleaseIntArrayElements(jchannels, channels, 0);
- env->ReleaseStringChars(jdir, (const jchar *) cwdW);
- env->ReleaseStringUTFChars(jslaveName, pts_name);
-
- return pid;
-}
-
-/*
- * Class: org_eclipse_cdt_utils_pty_PTY
- * Method: waitFor
- * Signature: (II)I
- */
-JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTY_waitFor
- (JNIEnv *env, jobject jobj, jint masterFD, jint pid)
-{
- int status = -1;
- DWORD flags;
-
- int fd;
- std::map<int, winpty_t*> :: iterator fd2pty_Iter;
- std::map<int, int> :: iterator fd2rc_Iter;
-
- fd = masterFD;
- fd2pty_Iter = fd2pty.find(fd);
- if (fd2pty_Iter != fd2pty.end()) {
- winpty_t* winpty = fd2pty_Iter -> second;
- if (winpty != NULL) {
- HANDLE handle = winpty_get_data_pipe(winpty);
- BOOL success;
- do {
- success = GetHandleInformation(handle, &flags);
- if (success) Sleep(500);
- } while (success);
-
- fd2rc_Iter = fd2rc.find(fd);
- if (fd2rc_Iter != fd2rc.end()) {
- status = fd2rc_Iter -> second;
- fd2rc.erase(fd2rc_Iter);
- }
- }
- }
-
- return status;
-}
diff --git a/core/org.eclipse.cdt.core.win32/library/pty/pty.sln b/core/org.eclipse.cdt.core.win32/library/pty/pty.sln
deleted file mode 100644
index 220c281aade..00000000000
--- a/core/org.eclipse.cdt.core.win32/library/pty/pty.sln
+++ /dev/null
@@ -1,46 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual C++ Express 2010
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pty", "pty.vcxproj", "{5589D515-1C56-4641-97CF-3C4561109258}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "winpty", "winpty.vcxproj", "{D7BFF73A-A86A-47FF-AD2B-CC2EFCAD5ABD}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "winpty-agent", "winpty-agent.vcxproj", "{E7A42398-12E7-4BC1-B72B-5D62B71E9816}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Debug|x64 = Debug|x64
- Release|Win32 = Release|Win32
- Release|x64 = Release|x64
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {5589D515-1C56-4641-97CF-3C4561109258}.Debug|Win32.ActiveCfg = Debug|Win32
- {5589D515-1C56-4641-97CF-3C4561109258}.Debug|Win32.Build.0 = Debug|Win32
- {5589D515-1C56-4641-97CF-3C4561109258}.Debug|x64.ActiveCfg = Debug|x64
- {5589D515-1C56-4641-97CF-3C4561109258}.Debug|x64.Build.0 = Debug|x64
- {5589D515-1C56-4641-97CF-3C4561109258}.Release|Win32.ActiveCfg = Release|Win32
- {5589D515-1C56-4641-97CF-3C4561109258}.Release|Win32.Build.0 = Release|Win32
- {5589D515-1C56-4641-97CF-3C4561109258}.Release|x64.ActiveCfg = Release|x64
- {5589D515-1C56-4641-97CF-3C4561109258}.Release|x64.Build.0 = Release|x64
- {D7BFF73A-A86A-47FF-AD2B-CC2EFCAD5ABD}.Debug|Win32.ActiveCfg = Debug|Win32
- {D7BFF73A-A86A-47FF-AD2B-CC2EFCAD5ABD}.Debug|Win32.Build.0 = Debug|Win32
- {D7BFF73A-A86A-47FF-AD2B-CC2EFCAD5ABD}.Debug|x64.ActiveCfg = Debug|x64
- {D7BFF73A-A86A-47FF-AD2B-CC2EFCAD5ABD}.Debug|x64.Build.0 = Debug|x64
- {D7BFF73A-A86A-47FF-AD2B-CC2EFCAD5ABD}.Release|Win32.ActiveCfg = Release|Win32
- {D7BFF73A-A86A-47FF-AD2B-CC2EFCAD5ABD}.Release|Win32.Build.0 = Release|Win32
- {D7BFF73A-A86A-47FF-AD2B-CC2EFCAD5ABD}.Release|x64.ActiveCfg = Release|x64
- {D7BFF73A-A86A-47FF-AD2B-CC2EFCAD5ABD}.Release|x64.Build.0 = Release|x64
- {E7A42398-12E7-4BC1-B72B-5D62B71E9816}.Debug|Win32.ActiveCfg = Debug|Win32
- {E7A42398-12E7-4BC1-B72B-5D62B71E9816}.Debug|Win32.Build.0 = Debug|Win32
- {E7A42398-12E7-4BC1-B72B-5D62B71E9816}.Debug|x64.ActiveCfg = Debug|x64
- {E7A42398-12E7-4BC1-B72B-5D62B71E9816}.Debug|x64.Build.0 = Debug|x64
- {E7A42398-12E7-4BC1-B72B-5D62B71E9816}.Release|Win32.ActiveCfg = Release|Win32
- {E7A42398-12E7-4BC1-B72B-5D62B71E9816}.Release|Win32.Build.0 = Release|Win32
- {E7A42398-12E7-4BC1-B72B-5D62B71E9816}.Release|x64.ActiveCfg = Release|x64
- {E7A42398-12E7-4BC1-B72B-5D62B71E9816}.Release|x64.Build.0 = Release|x64
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/core/org.eclipse.cdt.core.win32/library/pty/pty.vcxproj b/core/org.eclipse.cdt.core.win32/library/pty/pty.vcxproj
deleted file mode 100644
index 7d526ce88b1..00000000000
--- a/core/org.eclipse.cdt.core.win32/library/pty/pty.vcxproj
+++ /dev/null
@@ -1,177 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectGuid>{5589D515-1C56-4641-97CF-3C4561109258}</ProjectGuid>
- <Keyword>Win32Proj</Keyword>
- <RootNamespace>pty</RootNamespace>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>Unicode</CharacterSet>
- <PlatformToolset>Windows7.1SDK</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>Unicode</CharacterSet>
- <PlatformToolset>Windows7.1SDK</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>Unicode</CharacterSet>
- <PlatformToolset>Windows7.1SDK</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>Unicode</CharacterSet>
- <PlatformToolset>Windows7.1SDK</PlatformToolset>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <LinkIncremental>true</LinkIncremental>
- <OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
- <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <LinkIncremental>true</LinkIncremental>
- <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <LinkIncremental>false</LinkIncremental>
- <OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
- <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <LinkIncremental>false</LinkIncremental>
- <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <PrecompiledHeader>NotUsing</PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>./jni/include;C:\NoScan\Apps\Java\jdk1.6.0_31\include;C:\NoScan\Apps\Java\jdk1.6.0_31\include\win32;..\winpty\include;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
- </ClCompile>
- <Link>
- <SubSystem>Windows</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <AdditionalDependencies>DelayImp.lib;winpty.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <AdditionalLibraryDirectories>$(SolutionDir)$(Platform)\$(Configuration)\</AdditionalLibraryDirectories>
- <DelayLoadDLLs>winpty.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <ClCompile>
- <PrecompiledHeader>NotUsing</PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>./jni/include;C:\NoScan\Apps\Java\jdk1.6.0_31\include;C:\NoScan\Apps\Java\jdk1.6.0_31\include\win32;..\winpty\include;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
- </ClCompile>
- <Link>
- <SubSystem>Windows</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <AdditionalDependencies>DelayImp.lib;winpty.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <AdditionalLibraryDirectories>$(SolutionDir)$(Platform)\$(Configuration)\</AdditionalLibraryDirectories>
- <DelayLoadDLLs>winpty.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <Optimization>MaxSpeed</Optimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>./jni/include;C:\NoScan\Apps\Java\jdk1.6.0_31\include;C:\NoScan\Apps\Java\jdk1.6.0_31\include\win32;..\winpty\include;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- </ClCompile>
- <Link>
- <SubSystem>Windows</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- <AdditionalDependencies>DelayImp.lib;winpty.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <AdditionalLibraryDirectories>$(SolutionDir)$(Platform)\$(Configuration)\</AdditionalLibraryDirectories>
- <DelayLoadDLLs>winpty.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <Optimization>MaxSpeed</Optimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <PreprocessorDefinitions>_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>./jni/include;C:\NoScan\Apps\Java\jdk1.6.0_31\include;C:\NoScan\Apps\Java\jdk1.6.0_31\include\win32;..\winpty\include;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- </ClCompile>
- <Link>
- <SubSystem>Windows</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- <AdditionalDependencies>DelayImp.lib;winpty.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <AdditionalLibraryDirectories>$(SolutionDir)$(Platform)\$(Configuration)\</AdditionalLibraryDirectories>
- <DelayLoadDLLs>winpty.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClInclude Include="jni\include\PTY.h" />
- <ClInclude Include="jni\include\PTYInputStream.h" />
- <ClInclude Include="jni\include\PTYOutputStream.h" />
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="jni\src\dllmain.cpp" />
- <ClCompile Include="jni\src\pty.cpp" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/core/org.eclipse.cdt.core.win32/library/pty/pty.vcxproj.filters b/core/org.eclipse.cdt.core.win32/library/pty/pty.vcxproj.filters
deleted file mode 100644
index b92d3375bf7..00000000000
--- a/core/org.eclipse.cdt.core.win32/library/pty/pty.vcxproj.filters
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="include">
- <UniqueIdentifier>{679c3039-d4a8-48db-9a3b-33f73f3b44c0}</UniqueIdentifier>
- </Filter>
- <Filter Include="src">
- <UniqueIdentifier>{b7f98685-8f42-40d2-bd2b-65bcbac17645}</UniqueIdentifier>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="jni\include\PTY.h">
- <Filter>include</Filter>
- </ClInclude>
- <ClInclude Include="jni\include\PTYInputStream.h">
- <Filter>include</Filter>
- </ClInclude>
- <ClInclude Include="jni\include\PTYOutputStream.h">
- <Filter>include</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="jni\src\pty.cpp">
- <Filter>src</Filter>
- </ClCompile>
- <ClCompile Include="jni\src\dllmain.cpp">
- <Filter>src</Filter>
- </ClCompile>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/core/org.eclipse.cdt.core.win32/library/pty/winpty-agent.vcxproj b/core/org.eclipse.cdt.core.win32/library/pty/winpty-agent.vcxproj
deleted file mode 100644
index 0eef37a0900..00000000000
--- a/core/org.eclipse.cdt.core.win32/library/pty/winpty-agent.vcxproj
+++ /dev/null
@@ -1,185 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectGuid>{E7A42398-12E7-4BC1-B72B-5D62B71E9816}</ProjectGuid>
- <Keyword>Win32Proj</Keyword>
- <RootNamespace>winptyagent</RootNamespace>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>Unicode</CharacterSet>
- <PlatformToolset>Windows7.1SDK</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>Unicode</CharacterSet>
- <PlatformToolset>Windows7.1SDK</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>Unicode</CharacterSet>
- <PlatformToolset>Windows7.1SDK</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>Unicode</CharacterSet>
- <PlatformToolset>Windows7.1SDK</PlatformToolset>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <LinkIncremental>true</LinkIncremental>
- <OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
- <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <LinkIncremental>true</LinkIncremental>
- <OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
- <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <LinkIncremental>false</LinkIncremental>
- <OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
- <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <LinkIncremental>false</LinkIncremental>
- <OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
- <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <PrecompiledHeader>NotUsing</PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_WINDOWS;NOMINMAX;_DEBUG;_CONSOLE;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>..\winpty\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
- </ClCompile>
- <Link>
- <SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <ClCompile>
- <PrecompiledHeader>NotUsing</PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_WINDOWS;NOMINMAX;_DEBUG;_CONSOLE;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>..\winpty\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
- </ClCompile>
- <Link>
- <SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <PrecompiledHeader>NotUsing</PrecompiledHeader>
- <Optimization>MaxSpeed</Optimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <PreprocessorDefinitions>WIN32;_WINDOWS;NOMINMAX;NDEBUG;_CONSOLE;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>..\winpty\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- </ClCompile>
- <Link>
- <SubSystem>Console</SubSystem>
- <GenerateDebugInformation>false</GenerateDebugInformation>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <PrecompiledHeader>NotUsing</PrecompiledHeader>
- <Optimization>MaxSpeed</Optimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <PreprocessorDefinitions>WIN32;_WINDOWS;NOMINMAX;NDEBUG;_CONSOLE;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>..\winpty\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- </ClCompile>
- <Link>
- <SubSystem>Console</SubSystem>
- <GenerateDebugInformation>false</GenerateDebugInformation>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClInclude Include="..\winpty\agent\Agent.h" />
- <ClInclude Include="..\winpty\agent\AgentAssert.h" />
- <ClInclude Include="..\winpty\agent\ConsoleInput.h" />
- <ClInclude Include="..\winpty\agent\Coord.h" />
- <ClInclude Include="..\winpty\agent\DsrSender.h" />
- <ClInclude Include="..\winpty\agent\EventLoop.h" />
- <ClInclude Include="..\winpty\agent\NamedPipe.h" />
- <ClInclude Include="..\winpty\agent\SmallRect.h" />
- <ClInclude Include="..\winpty\agent\Terminal.h" />
- <ClInclude Include="..\winpty\agent\Win32Console.h" />
- <ClInclude Include="..\winpty\shared\AgentMsg.h" />
- <ClInclude Include="..\winpty\shared\Buffer.h" />
- <ClInclude Include="..\winpty\shared\c99_snprintf.h" />
- <ClInclude Include="..\winpty\shared\DebugClient.h" />
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="..\winpty\agent\Agent.cc" />
- <ClCompile Include="..\winpty\agent\AgentAssert.cc" />
- <ClCompile Include="..\winpty\agent\ConsoleInput.cc" />
- <ClCompile Include="..\winpty\agent\Coord.cc" />
- <ClCompile Include="..\winpty\agent\EventLoop.cc" />
- <ClCompile Include="..\winpty\agent\main.cc" />
- <ClCompile Include="..\winpty\agent\NamedPipe.cc" />
- <ClCompile Include="..\winpty\agent\SmallRect.cc" />
- <ClCompile Include="..\winpty\agent\Terminal.cc" />
- <ClCompile Include="..\winpty\agent\Win32Console.cc" />
- <ClCompile Include="..\winpty\shared\DebugClient.cc" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/core/org.eclipse.cdt.core.win32/library/pty/winpty-agent.vcxproj.filters b/core/org.eclipse.cdt.core.win32/library/pty/winpty-agent.vcxproj.filters
deleted file mode 100644
index 46cdf6beaa8..00000000000
--- a/core/org.eclipse.cdt.core.win32/library/pty/winpty-agent.vcxproj.filters
+++ /dev/null
@@ -1,90 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="agent">
- <UniqueIdentifier>{a7174beb-334f-4496-868c-348a80e5f4d8}</UniqueIdentifier>
- </Filter>
- <Filter Include="shared">
- <UniqueIdentifier>{0c9e153d-99b4-4f47-ba3c-57e53e1c71b7}</UniqueIdentifier>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="..\winpty\shared\AgentMsg.h">
- <Filter>shared</Filter>
- </ClInclude>
- <ClInclude Include="..\winpty\shared\Buffer.h">
- <Filter>shared</Filter>
- </ClInclude>
- <ClInclude Include="..\winpty\shared\c99_snprintf.h">
- <Filter>shared</Filter>
- </ClInclude>
- <ClInclude Include="..\winpty\shared\DebugClient.h">
- <Filter>shared</Filter>
- </ClInclude>
- <ClInclude Include="..\winpty\agent\Agent.h">
- <Filter>agent</Filter>
- </ClInclude>
- <ClInclude Include="..\winpty\agent\AgentAssert.h">
- <Filter>agent</Filter>
- </ClInclude>
- <ClInclude Include="..\winpty\agent\ConsoleInput.h">
- <Filter>agent</Filter>
- </ClInclude>
- <ClInclude Include="..\winpty\agent\Coord.h">
- <Filter>agent</Filter>
- </ClInclude>
- <ClInclude Include="..\winpty\agent\DsrSender.h">
- <Filter>agent</Filter>
- </ClInclude>
- <ClInclude Include="..\winpty\agent\EventLoop.h">
- <Filter>agent</Filter>
- </ClInclude>
- <ClInclude Include="..\winpty\agent\NamedPipe.h">
- <Filter>agent</Filter>
- </ClInclude>
- <ClInclude Include="..\winpty\agent\SmallRect.h">
- <Filter>agent</Filter>
- </ClInclude>
- <ClInclude Include="..\winpty\agent\Terminal.h">
- <Filter>agent</Filter>
- </ClInclude>
- <ClInclude Include="..\winpty\agent\Win32Console.h">
- <Filter>agent</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="..\winpty\shared\DebugClient.cc">
- <Filter>shared</Filter>
- </ClCompile>
- <ClCompile Include="..\winpty\agent\Agent.cc">
- <Filter>agent</Filter>
- </ClCompile>
- <ClCompile Include="..\winpty\agent\AgentAssert.cc">
- <Filter>agent</Filter>
- </ClCompile>
- <ClCompile Include="..\winpty\agent\ConsoleInput.cc">
- <Filter>agent</Filter>
- </ClCompile>
- <ClCompile Include="..\winpty\agent\Coord.cc">
- <Filter>agent</Filter>
- </ClCompile>
- <ClCompile Include="..\winpty\agent\EventLoop.cc">
- <Filter>agent</Filter>
- </ClCompile>
- <ClCompile Include="..\winpty\agent\main.cc">
- <Filter>agent</Filter>
- </ClCompile>
- <ClCompile Include="..\winpty\agent\NamedPipe.cc">
- <Filter>agent</Filter>
- </ClCompile>
- <ClCompile Include="..\winpty\agent\SmallRect.cc">
- <Filter>agent</Filter>
- </ClCompile>
- <ClCompile Include="..\winpty\agent\Terminal.cc">
- <Filter>agent</Filter>
- </ClCompile>
- <ClCompile Include="..\winpty\agent\Win32Console.cc">
- <Filter>agent</Filter>
- </ClCompile>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/core/org.eclipse.cdt.core.win32/library/pty/winpty.vcxproj b/core/org.eclipse.cdt.core.win32/library/pty/winpty.vcxproj
deleted file mode 100644
index e83366bc905..00000000000
--- a/core/org.eclipse.cdt.core.win32/library/pty/winpty.vcxproj
+++ /dev/null
@@ -1,167 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectGuid>{D7BFF73A-A86A-47FF-AD2B-CC2EFCAD5ABD}</ProjectGuid>
- <Keyword>Win32Proj</Keyword>
- <RootNamespace>winpty</RootNamespace>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>Unicode</CharacterSet>
- <PlatformToolset>Windows7.1SDK</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>Unicode</CharacterSet>
- <PlatformToolset>Windows7.1SDK</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>Unicode</CharacterSet>
- <PlatformToolset>Windows7.1SDK</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>Unicode</CharacterSet>
- <PlatformToolset>Windows7.1SDK</PlatformToolset>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <LinkIncremental>true</LinkIncremental>
- <OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
- <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <LinkIncremental>true</LinkIncremental>
- <OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
- <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <LinkIncremental>false</LinkIncremental>
- <OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
- <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <LinkIncremental>false</LinkIncremental>
- <OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
- <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <PrecompiledHeader>NotUsing</PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;NOMINMAX;_DEBUG;_WINDOWS;_USRDLL;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;WINPTY;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>..\winpty\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
- </ClCompile>
- <Link>
- <SubSystem>Windows</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <ClCompile>
- <PrecompiledHeader>NotUsing</PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_WINDOWS;NOMINMAX;_DEBUG;_USRDLL;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;WINPTY;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>..\winpty\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
- </ClCompile>
- <Link>
- <SubSystem>Windows</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <PrecompiledHeader>NotUsing</PrecompiledHeader>
- <Optimization>MaxSpeed</Optimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <PreprocessorDefinitions>WIN32;NOMINMAX;NDEBUG;_WINDOWS;_USRDLL;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;WINPTY;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>..\winpty\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- </ClCompile>
- <Link>
- <SubSystem>Windows</SubSystem>
- <GenerateDebugInformation>false</GenerateDebugInformation>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <PrecompiledHeader>NotUsing</PrecompiledHeader>
- <Optimization>MaxSpeed</Optimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <PreprocessorDefinitions>WIN32;_WINDOWS;NOMINMAX;NDEBUG;_USRDLL;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;WINPTY;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>..\winpty\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- </ClCompile>
- <Link>
- <SubSystem>Windows</SubSystem>
- <GenerateDebugInformation>false</GenerateDebugInformation>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClInclude Include="..\winpty\include\winpty.h" />
- <ClInclude Include="..\winpty\shared\AgentMsg.h" />
- <ClInclude Include="..\winpty\shared\Buffer.h" />
- <ClInclude Include="..\winpty\shared\c99_snprintf.h" />
- <ClInclude Include="..\winpty\shared\DebugClient.h" />
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="..\winpty\libwinpty\winpty.cc" />
- <ClCompile Include="..\winpty\shared\DebugClient.cc" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/core/org.eclipse.cdt.core.win32/library/pty/winpty.vcxproj.filters b/core/org.eclipse.cdt.core.win32/library/pty/winpty.vcxproj.filters
deleted file mode 100644
index 86016e30242..00000000000
--- a/core/org.eclipse.cdt.core.win32/library/pty/winpty.vcxproj.filters
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="include">
- <UniqueIdentifier>{6f8f9f7f-1797-423e-9189-990b2baff405}</UniqueIdentifier>
- </Filter>
- <Filter Include="libwinpty">
- <UniqueIdentifier>{6fa1f334-3a7c-4a8c-970b-15c2a6a08ba2}</UniqueIdentifier>
- </Filter>
- <Filter Include="shared">
- <UniqueIdentifier>{84962cba-90e7-4b83-8656-6563b933bb73}</UniqueIdentifier>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="..\winpty\shared\AgentMsg.h">
- <Filter>shared</Filter>
- </ClInclude>
- <ClInclude Include="..\winpty\shared\Buffer.h">
- <Filter>shared</Filter>
- </ClInclude>
- <ClInclude Include="..\winpty\shared\c99_snprintf.h">
- <Filter>shared</Filter>
- </ClInclude>
- <ClInclude Include="..\winpty\shared\DebugClient.h">
- <Filter>shared</Filter>
- </ClInclude>
- <ClInclude Include="..\winpty\include\winpty.h">
- <Filter>include</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="..\winpty\shared\DebugClient.cc">
- <Filter>shared</Filter>
- </ClCompile>
- <ClCompile Include="..\winpty\libwinpty\winpty.cc">
- <Filter>libwinpty</Filter>
- </ClCompile>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/core/org.eclipse.cdt.core.win32/library/raise.c b/core/org.eclipse.cdt.core.win32/library/raise.c
deleted file mode 100644
index e34a8259d39..00000000000
--- a/core/org.eclipse.cdt.core.win32/library/raise.c
+++ /dev/null
@@ -1,194 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2011 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - initial API and implementation
- *
- * raise.c
- *
- * This is a part of JNI implementation of spawner
- *******************************************************************************/
-#include "stdafx.h"
-#include "Spawner.h"
-
-
-#include "jni.h"
-
-extern void JNICALL ThrowByName(JNIEnv *env, const char *name, const char *msg);
-
-
-static HWND consoleHWND;
-
-
-/////////////////////////////////////////////////////////////////////////////////////
-// Check if window is a console of process with pid
-// Arguments:
-// hwnd - window handler
-// arg - process PID
-// Return : TRUE if yes
-/////////////////////////////////////////////////////////////////////////////////////
-static BOOL CALLBACK
-find_child_console (HWND hwnd, LPARAM arg)
-{
- DWORD thread_id;
- DWORD process_id;
- DWORD pid = arg;
-
- thread_id = GetWindowThreadProcessId (hwnd, &process_id);
- if (process_id == pid)
- {
- wchar_t window_class[32];
-
- GetClassName (hwnd, window_class, sizeof (window_class));
- if (wcscmp (window_class, L"ConsoleWindowClass") == 0)
- {
- consoleHWND = hwnd;
- return FALSE;
- }
- }
- /* keep looking */
- return TRUE;
-}
-
-// Need to declare this Win32 prototype ourselves. _WIN32_WINNT is getting
-// defined to a Windows NT value, thus we don't get this. Can't assume
-// we're running on XP, anyway (or can we by now?)
-#if (_WIN32_WINNT < 0x0501) || defined(_MSC_VER)
-typedef BOOL (WINAPI *DebugBreakProcessFunc)(HANDLE);
-#endif
-
-/////////////////////////////////////////////////////////////////////////////////////
-// Called to interrupt a process that we didn't launch (and thus does not share our
-// console). Windows XP introduced the function 'DebugBreakProcess', which allows
-// a process to interrupt another process even if if the two do not share a console.
-// If we're running on 2000 or earlier, we have to resort to simulating a CTRL-C
-// in the console by firing keyboard events. This will work only if the process
-// has its own console. That means, e.g., the process should have been started at
-// the cmdline with 'start myprogram.exe' instead of 'myprogram.exe'.
-//
-// Arguments:
-// pid - process' pid
-// Return : 0 if OK or error code
-/////////////////////////////////////////////////////////////////////////////////////
-int interruptProcess(int pid)
-{
- // See if DebugBreakProcess is available (XP and beyond)
- HMODULE hmod = LoadLibrary(L"Kernel32.dll");
- if (hmod != NULL)
- {
- BOOL success = FALSE;
- FARPROC procaddr = GetProcAddress(hmod, "DebugBreakProcess");
- if (procaddr != NULL)
- {
- HANDLE proc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, (DWORD)pid);
- if (proc != NULL)
- {
- DebugBreakProcessFunc pDebugBreakProcess = (DebugBreakProcessFunc)procaddr;
- success = (*pDebugBreakProcess)(proc);
- CloseHandle(proc);
- }
- }
- FreeLibrary(hmod);
- hmod = NULL;
-
- if (success)
- return 0; // 0 == OK; if not, try old-school way
- }
-
-#ifdef DEBUG_MONITOR
- _TCHAR buffer[1000];
-#endif
- int rc = 0;
- consoleHWND = NULL;
-
-#ifdef DEBUG_MONITOR
- _stprintf(buffer, _T("Try to interrupt process %i\n"), pid);
- OutputDebugStringW(buffer);
-#endif
- // Find console
- EnumWindows (find_child_console, (LPARAM) pid);
-
- if(NULL != consoleHWND) // Yes, we found out it
- {
- // We are going to switch focus to console,
- // send Ctrl-C and then restore focus
- BYTE control_scan_code = (BYTE) MapVirtualKey (VK_CONTROL, 0);
- /* Fake Ctrl-C for SIGINT, and Ctrl-Break for SIGQUIT. */
- BYTE vk_c_code = 'C';
- BYTE vk_break_code = VK_CANCEL;
- BYTE c_scan_code = (BYTE) MapVirtualKey (vk_c_code, 0);
- BYTE break_scan_code = (BYTE) MapVirtualKey (vk_break_code, 0);
- HWND foreground_window;
-
-
- foreground_window = GetForegroundWindow ();
- if (foreground_window)
- {
- /* NT 5.0, and apparently also Windows 98, will not allow
- a Window to be set to foreground directly without the
- user's involvement. The workaround is to attach
- ourselves to the thread that owns the foreground
- window, since that is the only thread that can set the
- foreground window. */
- DWORD foreground_thread, child_thread;
- foreground_thread =
- GetWindowThreadProcessId (foreground_window, NULL);
- if (foreground_thread == GetCurrentThreadId ()
- || !AttachThreadInput (GetCurrentThreadId (),
- foreground_thread, TRUE))
- foreground_thread = 0;
-
- child_thread = GetWindowThreadProcessId (consoleHWND, NULL);
- if (child_thread == GetCurrentThreadId ()
- || !AttachThreadInput (GetCurrentThreadId (),
- child_thread, TRUE))
- child_thread = 0;
-
- /* Set the foreground window to the child. */
- if (SetForegroundWindow (consoleHWND))
- {
- if(0 != break_scan_code) {
- /* Generate keystrokes as if user had typed Ctrl-Break */
- keybd_event (VK_CONTROL, control_scan_code, 0, 0);
- keybd_event (vk_break_code, break_scan_code, KEYEVENTF_EXTENDEDKEY, 0);
- keybd_event (vk_break_code, break_scan_code,
- KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
- keybd_event (VK_CONTROL, control_scan_code, KEYEVENTF_KEYUP, 0);
- }
-
- /* Sleep for a bit to give time for respond */
- Sleep (100);
-
- SetForegroundWindow (foreground_window);
- }
- /* Detach from the foreground and child threads now that
- the foreground switching is over. */
- if (foreground_thread)
- AttachThreadInput (GetCurrentThreadId (),
- foreground_thread, FALSE);
- if (child_thread)
- AttachThreadInput (GetCurrentThreadId (),
- child_thread, FALSE);
-#ifdef DEBUG_MONITOR
- _stprintf(buffer, _T("Sent Ctrl-C & Ctrl-Break to process %i\n"), pid);
- OutputDebugStringW(buffer);
-#endif
- }
- }
-#ifdef DEBUG_MONITOR
- else {
- _stprintf(buffer, _T("Cannot find console for process %i\n"), pid);
- OutputDebugStringW(buffer);
- }
-#endif
-
- return rc;
-}
-
diff --git a/core/org.eclipse.cdt.core.win32/library/setenv64.bat b/core/org.eclipse.cdt.core.win32/library/setenv64.bat
deleted file mode 100644
index dfe68b7394a..00000000000
--- a/core/org.eclipse.cdt.core.win32/library/setenv64.bat
+++ /dev/null
@@ -1 +0,0 @@
-"C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\setenv.cmd" /x64 /2003 /Release \ No newline at end of file
diff --git a/core/org.eclipse.cdt.core.win32/library/spawner.c b/core/org.eclipse.cdt.core.win32/library/spawner.c
deleted file mode 100644
index c4d52bb8a41..00000000000
--- a/core/org.eclipse.cdt.core.win32/library/spawner.c
+++ /dev/null
@@ -1,57 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2007 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - initial API and implementation
- *
- * spawner.c
- *
- * This is a part of JNI implementation of spawner
- *******************************************************************************/
-
-#include "stdafx.h"
-#include "spawner.h"
-
-
-CRITICAL_SECTION cs;
-
-
-wchar_t path[MAX_PATH + 1] = {_T('\0') }; // Directory where spawner.dll is located
-
-extern "C"
-BOOL APIENTRY DllMain( HINSTANCE hModule,
- DWORD ul_reason_for_call,
- LPVOID lpReserved
- )
-{
- switch (ul_reason_for_call)
- {
- case DLL_PROCESS_ATTACH:
- {
- wchar_t * p;
- InitializeCriticalSection(&cs);
- GetModuleFileNameW(hModule, path, MAX_PATH);
- p = wcsrchr(path, _T('\\'));
- if(NULL != p)
- *(p + 1) = _T('\0');
- else
- wcscat(path, L"\\");
- }
- break;
- case DLL_THREAD_ATTACH:
- case DLL_THREAD_DETACH:
- break;
- case DLL_PROCESS_DETACH:
- DeleteCriticalSection(&cs);
- break;
- }
- return TRUE;
-}
-
diff --git a/core/org.eclipse.cdt.core.win32/library/starter/Makefile b/core/org.eclipse.cdt.core.win32/library/starter/Makefile
deleted file mode 100644
index 54c92c5b829..00000000000
--- a/core/org.eclipse.cdt.core.win32/library/starter/Makefile
+++ /dev/null
@@ -1,23 +0,0 @@
-OS = win32
-ARCH = x86
-
-TARGET = $(INSTALL_DIR)/starter.exe
-
-OBJS = starter.o
-
-LIBS = -lpsapi
-
-CXX = g++
-CXXFLAGS = -DUNICODE
-
-INSTALL_DIR = ../../../org.eclipse.cdt.core.$(OS).$(ARCH)/os/$(OS)/$(ARCH)
-
-all: $(TARGET)
-
-rebuild: clean all
-
-clean :
- $(RM) $(OBJS)
-
-$(TARGET) : $(OBJS)
- $(CXX) -o $(TARGET) $(OBJS) $(LIBS)
diff --git a/core/org.eclipse.cdt.core.win32/library/starter/starter.cpp b/core/org.eclipse.cdt.core.win32/library/starter/starter.cpp
deleted file mode 100644
index 30dfe2f078b..00000000000
--- a/core/org.eclipse.cdt.core.win32/library/starter/starter.cpp
+++ /dev/null
@@ -1,526 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002, 2015 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - initial API and implementation
- * Wind River Systems, Inc.
- *
- * starter.cpp
- *
- * This is a small utility for windows spawner
- *******************************************************************************/
-
-#define STRICT
-#define _WIN32_WINNT 0x0500
-#include <windows.h>
-#include <process.h>
-#include <tchar.h>
-#include <stdio.h>
-#include <psapi.h>
-
-//#define DEBUG_MONITOR
-#define MAX_CMD_LINE_LENGTH (2049)
-#define PIPE_NAME_LENGTH 100
-
-int copyTo(wchar_t * target, const wchar_t * source, int cpyLength,
- int availSpace);
-void DisplayErrorMessage();
-
-//BOOL KillProcessEx(DWORD dwProcessId); // Handle of the process
-
-///////////////////////////////////////////////////////////////////////////////
-BOOL WINAPI HandlerRoutine( DWORD dwCtrlType) // control signal type
-{
- BOOL ret = TRUE;
- switch(dwCtrlType)
- {
- case CTRL_C_EVENT:
- break;
- case CTRL_BREAK_EVENT:
- break;
- case CTRL_CLOSE_EVENT:
- ret = FALSE;
- break;
- case CTRL_LOGOFF_EVENT:
- ret = FALSE;
- break;
- case CTRL_SHUTDOWN_EVENT:
- ret = FALSE;
- break;
- default:
- break;
- }
- return ret;
-}
-
-// The default here means we haven't checked yet
-// i.e. cygwin is true but the bin dir hasn't been captured
-wchar_t * cygwinBin = NULL;
-bool _isCygwin = true;
-
-bool isCygwin(HANDLE process) {
- // Have we checked before?
- if (cygwinBin != NULL || !_isCygwin)
- return _isCygwin;
-
- // See if this process loaded cygwin, need a different SIGINT for them
- HMODULE mods[1024];
- DWORD needed;
- if (EnumProcessModules(process, mods, sizeof(mods), &needed)) {
- int i;
- needed /= sizeof(HMODULE);
- for (i = 0; i < needed; ++i ) {
- wchar_t modName[MAX_PATH];
- if (GetModuleFileNameEx(process, mods[i], modName, MAX_PATH)) {
- wchar_t * p = wcsrchr(modName, L'\\');
- if (p) {
- *p = 0; // Null terminate there for future reference
- if (!wcscmp(++p, L"cygwin1.dll")) {
- _isCygwin = true;
- // Store away the bind dir
- cygwinBin = wcsdup(modName);
- return _isCygwin;
- }
- }
- }
- }
- }
-
- _isCygwin = false;
- return _isCygwin;
-}
-
-bool runCygwinCommand(wchar_t * command) {
- wchar_t cygcmd[1024];
- swprintf(cygcmd, L"%s\\%s", cygwinBin, command);
-
- STARTUPINFO si;
- ZeroMemory(&si, sizeof(si));
- si.cb = sizeof(si);
- PROCESS_INFORMATION pi;
- ZeroMemory(&pi, sizeof(pi));
- if (CreateProcess(NULL, cygcmd, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
- WaitForSingleObject(pi.hProcess, INFINITE);
- CloseHandle(pi.hThread);
- CloseHandle(pi.hProcess);
- return true;
- } else if (CreateProcess(NULL, command, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
- WaitForSingleObject(pi.hProcess, INFINITE);
- CloseHandle(pi.hThread);
- CloseHandle(pi.hProcess);
- return true;
- }
- return false;
-}
-
-void ensureSize(wchar_t** ptr, int* psize, int requiredLength) {
- int size= *psize;
- if (requiredLength > size) {
- size= 2*size;
- if (size < requiredLength) {
- size= requiredLength;
- }
- *ptr= (wchar_t *)realloc(*ptr, size * sizeof(wchar_t));
- if (NULL == *ptr) {
- *psize= 0;
- } else {
- *psize= size;
- }
- }
-}
-
-int main() {
-
- int argc;
- wchar_t ** argv = CommandLineToArgvW(GetCommandLine(), &argc);
-
- // Make sure that we've been passed the right number of arguments
- if (argc < 8) {
- _tprintf(_T("Usage: %s (four inheritable event handles) (CommandLineToSpawn)\n"),
- argv[0]);
- return(0);
- }
-
- // Construct the full command line
- int nCmdLineLength= MAX_CMD_LINE_LENGTH;
- wchar_t * szCmdLine= (wchar_t *)malloc(nCmdLineLength * sizeof(wchar_t));
- szCmdLine[0]= 0;
- int nPos = 0;
-
- for(int i = 8; i < argc; ++i)
- {
- int nCpyLen;
- int len= wcslen(argv[i]);
- int requiredSize= nPos+len+2;
- if (requiredSize > 32*1024) {
-#ifdef DEBUG_MONITOR
- OutputDebugStringW(_T("Command line too long!\n"));
-#endif
- return 0;
- }
- ensureSize(&szCmdLine, &nCmdLineLength, requiredSize);
- if (NULL == szCmdLine) {
-#ifdef DEBUG_MONITOR
- OutputDebugStringW(_T("Not enough memory to build cmd line!\n"));
-#endif
- return 0;
- }
- if(0 > (nCpyLen = copyTo(szCmdLine + nPos, argv[i], len, nCmdLineLength - nPos)))
- {
-#ifdef DEBUG_MONITOR
- OutputDebugStringW(_T("Not enough space to build command line\n"));
-#endif
- return 0;
- }
- nPos += nCpyLen;
- szCmdLine[nPos] = _T(' ');
- ++nPos;
- }
- szCmdLine[nPos] = _T('\0');
-
- STARTUPINFOW si = {sizeof(si)};
- PROCESS_INFORMATION pi = {0};
- DWORD dwExitCode = 0;
-#ifdef DEBUG_MONITOR
- int currentPID = GetCurrentProcessId();
- wchar_t buffer[MAX_CMD_LINE_LENGTH];
-#endif
-
- BOOL exitProc = FALSE;
- HANDLE waitEvent = OpenEventW(EVENT_ALL_ACCESS, TRUE, argv[4]);
- HANDLE h[5];
- h[0] = OpenEventW(EVENT_ALL_ACCESS, TRUE, argv[3]); // simulated SIGINT (CTRL-C or Cygwin 'kill -SIGINT')
-// h[1] we reserve for the process handle
- h[2] = OpenEventW(EVENT_ALL_ACCESS, TRUE, argv[5]); // simulated SIGTERM
- h[3] = OpenEventW(EVENT_ALL_ACCESS, TRUE, argv[6]); // simulated SIGKILL
- h[4] = OpenEventW(EVENT_ALL_ACCESS, TRUE, argv[7]); // CTRL-C, in all cases
-
- SetConsoleCtrlHandler(HandlerRoutine, TRUE);
-
- int parentPid = wcstol(argv[1], NULL, 10);
- int nCounter = wcstol(argv[2], NULL, 10);
- wchar_t inPipeName[PIPE_NAME_LENGTH];
- wchar_t outPipeName[PIPE_NAME_LENGTH];
- wchar_t errPipeName[PIPE_NAME_LENGTH];
-
- swprintf(inPipeName, L"\\\\.\\pipe\\stdin%08i%010i", parentPid, nCounter);
- swprintf(outPipeName, L"\\\\.\\pipe\\stdout%08i%010i", parentPid, nCounter);
- swprintf(errPipeName, L"\\\\.\\pipe\\stderr%08i%010i", parentPid, nCounter);
-#ifdef DEBUG_MONITOR
- swprintf(buffer, _T("Pipes: %s, %s, %s\n"), inPipeName, outPipeName, errPipeName);
- OutputDebugStringW(buffer);
-#endif
-
- HANDLE stdHandles[3];
-
- SECURITY_ATTRIBUTES sa;
- sa.nLength = sizeof(SECURITY_ATTRIBUTES);
- sa.bInheritHandle = TRUE;
- sa.lpSecurityDescriptor = NULL;
-
- if((INVALID_HANDLE_VALUE == (stdHandles[0] = CreateFileW(inPipeName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, &sa))) ||
- (INVALID_HANDLE_VALUE == (stdHandles[1] = CreateFileW(outPipeName, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, &sa))) ||
- (INVALID_HANDLE_VALUE == (stdHandles[2] = CreateFileW(errPipeName, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, &sa))))
- {
-#ifdef DEBUG_MONITOR
- swprintf(buffer, _T("Failed to open pipe %i, %i, %i: %i\n"), stdHandles[0], stdHandles[1], stdHandles[2], GetLastError());
- OutputDebugStringW(buffer);
-#endif
- CloseHandle(stdHandles[0]);
- CloseHandle(stdHandles[1]);
- CloseHandle(stdHandles[2]);
- return -1;;
- }
- SetHandleInformation(stdHandles[0], HANDLE_FLAG_INHERIT, TRUE);
- SetHandleInformation(stdHandles[1], HANDLE_FLAG_INHERIT, TRUE);
- SetHandleInformation(stdHandles[2], HANDLE_FLAG_INHERIT, TRUE);
-
- if(!SetStdHandle(STD_INPUT_HANDLE, stdHandles[0]) ||
- !SetStdHandle(STD_OUTPUT_HANDLE, stdHandles[1]) ||
- !SetStdHandle(STD_ERROR_HANDLE, stdHandles[2])) {
-#ifdef DEBUG_MONITOR
- swprintf(buffer, _T("Failed to reassign standard streams: %i\n"), GetLastError());
- OutputDebugStringW(buffer);
-#endif
- CloseHandle(stdHandles[0]);
- CloseHandle(stdHandles[1]);
- CloseHandle(stdHandles[2]);
- return -1;;
- }
-
-#ifdef DEBUG_MONITOR_DETAILS
- wchar_t * lpvEnv = GetEnvironmentStringsW();
-
- // If the returned pointer is NULL, exit.
- if (lpvEnv == NULL)
- OutputDebugStringW(_T("Cannot Read Environment\n"));
- else {
- // Variable strings are separated by NULL byte, and the block is
- // terminated by a NULL byte.
-
- OutputDebugStringW(_T("Starter: Environment\n"));
- for (wchar_t * lpszVariable = (wchar_t *) lpvEnv; *lpszVariable; lpszVariable+=wcslen(lpszVariable) + 1) {
- swprintf(buffer, _T("%s\n"), lpszVariable);
- OutputDebugStringW(buffer);
- }
-
- FreeEnvironmentStringsW(lpvEnv);
- }
-#endif
-#ifdef DEBUG_MONITOR
- swprintf(buffer, _T("Starting: %s\n"), szCmdLine);
- OutputDebugStringW(buffer);
-#endif
- // Create job object
- HANDLE hJob = CreateJobObject(NULL, NULL);
- if (hJob != NULL) {
- // Configure job to
- // - terminate all associated processes when the last handle to it is closed
- // - allow child processes to break away from the job.
- JOBOBJECT_EXTENDED_LIMIT_INFORMATION jobInfo;
- ZeroMemory(&jobInfo, sizeof(jobInfo));
- jobInfo.BasicLimitInformation.LimitFlags = JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE | JOB_OBJECT_LIMIT_BREAKAWAY_OK;
- if (!SetInformationJobObject(hJob, JobObjectExtendedLimitInformation, &jobInfo, sizeof(jobInfo))) {
-#ifdef DEBUG_MONITOR
- OutputDebugStringW(_T("Cannot set job information\n"));
- DisplayErrorMessage();
-#endif
- }
- } else {
-#ifdef DEBUG_MONITOR
- OutputDebugStringW(_T("Cannot create job object\n"));
- DisplayErrorMessage();
-#endif
- }
- // Spawn the other processes as part of this Process Group
- // If this process is already part of a job, the flag CREATE_BREAKAWAY_FROM_JOB
- // makes the child process detach from the job, such that we can assign it
- // to our own job object.
- BOOL f = CreateProcessW(NULL, szCmdLine, NULL, NULL, TRUE,
- CREATE_BREAKAWAY_FROM_JOB, NULL, NULL, &si, &pi);
- // If breaking away from job is not permitted, retry without breakaway flag
- if (!f)
- f = CreateProcessW(NULL, szCmdLine, NULL, NULL, TRUE,
- 0, NULL, NULL, &si, &pi);
-
- // We don't need them any more
- CloseHandle(stdHandles[0]);
- CloseHandle(stdHandles[1]);
- CloseHandle(stdHandles[2]);
-
- if (f) {
-#ifdef DEBUG_MONITOR
- swprintf(buffer, _T("Process %i started\n"), pi.dwProcessId);
- OutputDebugStringW(buffer);
-#endif
- SetEvent(waitEvent); // Means that process has been spawned
- CloseHandle(pi.hThread);
- h[1] = pi.hProcess;
-
- if(NULL != hJob) {
- if(!AssignProcessToJobObject(hJob, pi.hProcess)) {
-#ifdef DEBUG_MONITOR
- swprintf(buffer, _T("Cannot assign process %i to a job\n"), pi.dwProcessId);
- OutputDebugStringW(buffer);
- DisplayErrorMessage();
-#endif
- }
- }
-
- while(!exitProc)
- {
- // Wait for the spawned-process to die or for the event
- // indicating that the processes should be forcibly killed.
- DWORD event = WaitForMultipleObjects(5, h, FALSE, INFINITE);
- switch (event)
- {
- case WAIT_OBJECT_0 + 0: // SIGINT
- case WAIT_OBJECT_0 + 4: // CTRL-C
-#ifdef DEBUG_MONITOR
- swprintf(buffer, _T("starter (PID %i) received CTRL-C event\n"), currentPID);
- OutputDebugStringW(buffer);
-#endif
- if ((event == (WAIT_OBJECT_0 + 0)) && isCygwin(h[1])) {
- // Need to issue a kill command
- wchar_t kill[1024];
- swprintf(kill, L"kill -SIGINT %d", pi.dwProcessId);
- if (!runCygwinCommand(kill)) {
- // fall back to console event
- GenerateConsoleCtrlEvent(CTRL_C_EVENT, 0);
- }
- } else {
- GenerateConsoleCtrlEvent(CTRL_C_EVENT, 0);
- }
-
- SetEvent(waitEvent);
- break;
-
- case WAIT_OBJECT_0 + 1: // App terminated normally
- // Make it's exit code our exit code
-#ifdef DEBUG_MONITOR
- swprintf(buffer, _T("starter: launched process has been terminated(PID %i)\n"),
- pi.dwProcessId);
- OutputDebugStringW(buffer);
-#endif
- GetExitCodeProcess(pi.hProcess, &dwExitCode);
- exitProc = TRUE;
- break;
-
- // Terminate and Kill behavior differ only for cygwin processes, where
- // we use the cygwin 'kill' command. We send a SIGKILL in one case,
- // SIGTERM in the other. For non-cygwin processes, both requests
- // are treated exactly the same
- case WAIT_OBJECT_0 + 2: // TERM
- case WAIT_OBJECT_0 + 3: // KILL
- {
- const wchar_t* signal = (event == WAIT_OBJECT_0 + 2) ? L"TERM" : L"KILL";
-#ifdef DEBUG_MONITOR
- swprintf(buffer, _T("starter received %s event (PID %i)\n"), signal, currentPID);
- OutputDebugStringW(buffer);
-#endif
- if (isCygwin(h[1])) {
- // Need to issue a kill command
- wchar_t kill[1024];
- swprintf(kill, L"kill -%s %d", signal, pi.dwProcessId);
- if (!runCygwinCommand(kill)) {
- // fall back to console event
- GenerateConsoleCtrlEvent(CTRL_C_EVENT, 0);
- }
- } else {
- GenerateConsoleCtrlEvent(CTRL_C_EVENT, 0);
- }
-
- SetEvent(waitEvent);
-
- if(NULL != hJob) {
- if(!TerminateJobObject(hJob, (DWORD)-1)) {
-#ifdef DEBUG_MONITOR
- OutputDebugStringW(_T("Cannot terminate job\n"));
- DisplayErrorMessage();
-#endif
- }
- }
-
- // Note that we keep trucking until the child process terminates (case WAIT_OBJECT_0 + 1)
- break;
- }
-
- default:
- // Unexpected code
-#ifdef DEBUG_MONITOR
- DisplayErrorMessage();
-#endif
- exitProc = TRUE;
- break;
- }
-
- }
- } else {
-#ifdef DEBUG_MONITOR
- swprintf(buffer, _T("Cannot start: %s\n"), szCmdLine);
- OutputDebugStringW(buffer);
-
- DisplayErrorMessage();
-#endif
- }
-
- if (NULL != szCmdLine)
- {
- free(szCmdLine);
- }
-
- CloseHandle(waitEvent);
- CloseHandle(h[0]);
- CloseHandle(h[1]);
- CloseHandle(h[2]);
- CloseHandle(h[3]);
- CloseHandle(h[4]);
-
- return(dwExitCode);
-}
-
-/////////////////////////////////////////////////////////////////////////////////////
-// Use this utility program to process correctly quotation marks in the command line
-// Arguments:
-// target - string to copy to
-// source - string to copy from
-// cpyLength - copy length
-// availSpace - size of the target buffer
-// Return :number of bytes used in target, or -1 in case of error
-/////////////////////////////////////////////////////////////////////////////////////
-int copyTo(wchar_t * target, const wchar_t * source, int cpyLength,
- int availSpace) {
- BOOL bSlash = FALSE;
- int i = 0, j = 0;
- int totCpyLength = cpyLength;
-
-#define QUOTATION_DO 0
-#define QUOTATION_DONE 1
-#define QUOTATION_NONE 2
-
- int nQuotationMode = 0;
- if (availSpace <= cpyLength) // = to reserve space for '\0'
- return -1;
-
- if ((_T('\"') == *source) && (_T('\"') == *(source + cpyLength - 1))) {
- // Already done
- nQuotationMode = QUOTATION_DONE;
- } else if (wcschr(source, _T(' '))== NULL) {
- // No reason to quotate term becase it doesn't have embedded spaces
- nQuotationMode = QUOTATION_NONE;
- } else {
- // Needs to be quotated
- nQuotationMode = QUOTATION_DO;
- *target = _T('\"');
- ++j;
- }
-
- for (; i < cpyLength; ++i, ++j) {
- if (source[i] == _T('\\'))
- bSlash = TRUE;
- else
- // Don't escape embracing quotation marks
- if ((source[i] == _T('\"')) && !((nQuotationMode == QUOTATION_DONE) && ((i == 0) || (i == (cpyLength - 1))) )) {
- if (!bSlash) {
- if (j == availSpace)
- return -1;
- target[j] = _T('\\');
- ++j;
- }
- bSlash = FALSE;
- } else
- bSlash = FALSE;
-
- if (j == availSpace)
- return -1;
- target[j] = source[i];
- }
-
- if (nQuotationMode == QUOTATION_DO) {
- if (j == availSpace)
- return -1;
- target[j] = _T('\"');
- ++j;
- }
- return j;
-}
-
-void DisplayErrorMessage() {
- wchar_t * lpMsgBuf;
- FormatMessageW(
- FORMAT_MESSAGE_ALLOCATE_BUFFER |FORMAT_MESSAGE_FROM_SYSTEM |FORMAT_MESSAGE_IGNORE_INSERTS,
- NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
- (wchar_t *) &lpMsgBuf, 0, NULL);
- OutputDebugStringW(lpMsgBuf);
- // Free the buffer.
- LocalFree(lpMsgBuf);
-}
-
-//////////////////////////////// End of File //////////////////////////////////
diff --git a/core/org.eclipse.cdt.core.win32/library/winreg/.gitignore b/core/org.eclipse.cdt.core.win32/library/winreg/.gitignore
deleted file mode 100644
index 7d9b212a579..00000000000
--- a/core/org.eclipse.cdt.core.win32/library/winreg/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/winreg.tlog/
diff --git a/core/org.eclipse.cdt.core.win32/library/winreg/dllmain.cpp b/core/org.eclipse.cdt.core.win32/library/winreg/dllmain.cpp
deleted file mode 100644
index 1464319edac..00000000000
--- a/core/org.eclipse.cdt.core.win32/library/winreg/dllmain.cpp
+++ /dev/null
@@ -1,31 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - Initial API and implementation
- *******************************************************************************/
-#include "stdafx.h"
-
-BOOL APIENTRY DllMain( HMODULE hModule,
- DWORD ul_reason_for_call,
- LPVOID lpReserved
- )
-{
- switch (ul_reason_for_call)
- {
- case DLL_PROCESS_ATTACH:
- case DLL_THREAD_ATTACH:
- case DLL_THREAD_DETACH:
- case DLL_PROCESS_DETACH:
- break;
- }
- return TRUE;
-}
-
diff --git a/core/org.eclipse.cdt.core.win32/library/winreg/stdafx.cpp b/core/org.eclipse.cdt.core.win32/library/winreg/stdafx.cpp
deleted file mode 100644
index 4033266f9a1..00000000000
--- a/core/org.eclipse.cdt.core.win32/library/winreg/stdafx.cpp
+++ /dev/null
@@ -1,17 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - Initial API and implementation
- *******************************************************************************/
-#include "stdafx.h"
-
-// TODO: reference any additional headers you need in STDAFX.H
-// and not in this file
diff --git a/core/org.eclipse.cdt.core.win32/library/winreg/stdafx.h b/core/org.eclipse.cdt.core.win32/library/winreg/stdafx.h
deleted file mode 100644
index 506fec98540..00000000000
--- a/core/org.eclipse.cdt.core.win32/library/winreg/stdafx.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - Initial API and implementation
- *******************************************************************************/
-#pragma once
-
-#include "targetver.h"
-
-#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
-// Windows Header Files:
-#include <windows.h>
-#include <jni.h>
-
-
-
-// TODO: reference additional headers your program requires here
diff --git a/core/org.eclipse.cdt.core.win32/library/winreg/targetver.h b/core/org.eclipse.cdt.core.win32/library/winreg/targetver.h
deleted file mode 100644
index 080979afe73..00000000000
--- a/core/org.eclipse.cdt.core.win32/library/winreg/targetver.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - Initial API and implementation
- *******************************************************************************/
-#pragma once
-
-// Including SDKDDKVer.h defines the highest available Windows platform.
-
-// If you wish to build your application for a previous Windows platform, include WinSDKVer.h and
-// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h.
-
-#include <SDKDDKVer.h>
diff --git a/core/org.eclipse.cdt.core.win32/library/winreg/winreg.cpp b/core/org.eclipse.cdt.core.win32/library/winreg/winreg.cpp
deleted file mode 100644
index 25a77124217..00000000000
--- a/core/org.eclipse.cdt.core.win32/library/winreg/winreg.cpp
+++ /dev/null
@@ -1,154 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - Initial API and implementation
- *******************************************************************************/
-#include "stdafx.h"
-
-static jstring getValue(JNIEnv * env, HKEY key, jstring subkey, jstring name) {
- const jchar * csubkey = env->GetStringChars(subkey, NULL);
- const jchar * cname = env->GetStringChars(name, NULL);
- jstring result = NULL;
-
- HKEY skey;
- LONG rc = RegOpenKeyEx(key, (const wchar_t *)csubkey, 0, KEY_READ, &skey);
- if (rc == ERROR_SUCCESS) {
- DWORD type;
- wchar_t buffer[256];
- DWORD len = sizeof(buffer);
- rc = RegQueryValueEx(skey, (const wchar_t *)cname, NULL, &type, (BYTE *)&buffer, &len);
- if (rc == ERROR_SUCCESS) {
- result = env->NewString((jchar *) buffer, (jsize) wcslen(buffer));
- }
- RegCloseKey(skey);
- }
-
- env->ReleaseStringChars(subkey, csubkey);
- env->ReleaseStringChars(name, cname);
-
- return result;
-}
-
-extern "C"
-JNIEXPORT jstring JNICALL Java_org_eclipse_cdt_utils_WindowsRegistry_getLocalMachineValue(
-JNIEnv * env, jobject obj, jstring subkey, jstring name)
-{
- return getValue(env, HKEY_LOCAL_MACHINE, subkey, name);
-}
-
-extern "C"
-JNIEXPORT jstring JNICALL Java_org_eclipse_cdt_utils_WindowsRegistry_getCurrentUserValue(
-JNIEnv * env, jobject obj, jstring subkey, jstring name)
-{
- return getValue(env, HKEY_CURRENT_USER, subkey, name);
-}
-
-/*
-* Given a subkey (string) under HKEY_LOCAL_MACHINE, and an index (starting from 0)
-* to the key's array of values, return the name of the indexed value.
-* The return value is null on any error or when the index is invalid.
-*/
-
-static jstring getValueName(JNIEnv * env, HKEY key, jstring subkey, jint index) {
- const jchar * csubkey = env->GetStringChars(subkey, NULL);
- jstring result = NULL;
-
- HKEY skey;
- LONG rc = RegOpenKeyEx(key, (const wchar_t *)csubkey, 0, KEY_READ, &skey);
- if (rc != ERROR_SUCCESS)
- return NULL;
-
- wchar_t valueName[256];
- DWORD nameSize = sizeof(valueName) + 2;
-
- rc = RegEnumValue(skey, index,
- valueName, // UNICODE string
- &nameSize,
- NULL, NULL,
- NULL, // data string
- NULL); // size in BYTE of data.
-
- if (rc == ERROR_SUCCESS)
- {
- result = env->NewString((jchar *)valueName, nameSize);
- }
-
- RegCloseKey(skey);
-
- env->ReleaseStringChars(subkey, csubkey);
-
- return result;
-}
-
-extern "C"
-JNIEXPORT jstring JNICALL Java_org_eclipse_cdt_utils_WindowsRegistry_getLocalMachineValueName(
-JNIEnv * env, jobject obj, jstring subkey, jint index)
-{
- return getValueName(env, HKEY_LOCAL_MACHINE, subkey, index);
-}
-
-extern "C"
-JNIEXPORT jstring JNICALL Java_org_eclipse_cdt_utils_WindowsRegistry_getCurrentUserValueName(
-JNIEnv * env, jobject obj, jstring subkey, jint index)
-{
- return getValueName(env, HKEY_CURRENT_USER, subkey, index);
-}
-
-/*
-* Given a subkey (string) under HKEY_LOCAL_MACHINE, and an index (starting from 0)
-* to the key's array of keys, return the name of the indexed key.
-* The return value is null on any error or when the index is invalid.
-*/
-
-static jstring getKeyName(JNIEnv * env, HKEY key, jstring subkey, jint index) {
- const jchar * csubkey = env->GetStringChars(subkey, NULL);
- jstring result = NULL;
-
- HKEY skey;
- LONG rc = RegOpenKeyEx(key, (const wchar_t *)csubkey, 0, KEY_READ, &skey);
- if (rc != ERROR_SUCCESS)
- return NULL;
-
- wchar_t keyName[256];
- DWORD nameSize = sizeof(keyName) + 2;
-
- rc = RegEnumKeyEx(skey, index,
- keyName, // UNICODE string
- &nameSize,
- NULL, NULL,
- NULL,
- NULL); // size in BYTE of data.
-
- if (rc == ERROR_SUCCESS)
- {
- result = env->NewString((jchar *)keyName, nameSize);
- }
-
- RegCloseKey(skey);
-
- env->ReleaseStringChars(subkey, csubkey);
-
- return result;
-}
-
-extern "C"
-JNIEXPORT jstring JNICALL Java_org_eclipse_cdt_utils_WindowsRegistry_getLocalMachineKeyName(
-JNIEnv * env, jobject obj, jstring subkey, jint index)
-{
- return getKeyName(env, HKEY_LOCAL_MACHINE, subkey, index);
-}
-
-extern "C"
-JNIEXPORT jstring JNICALL Java_org_eclipse_cdt_utils_WindowsRegistry_getCurrentUserKeyName(
-JNIEnv * env, jobject obj, jstring subkey, jint index)
-{
- return getKeyName(env, HKEY_CURRENT_USER, subkey, index);
-}
diff --git a/core/org.eclipse.cdt.core.win32/library/winreg/winreg.vcxproj b/core/org.eclipse.cdt.core.win32/library/winreg/winreg.vcxproj
deleted file mode 100644
index 0c82aec90f9..00000000000
--- a/core/org.eclipse.cdt.core.win32/library/winreg/winreg.vcxproj
+++ /dev/null
@@ -1,175 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectGuid>{4CA57EA3-42F2-4CC1-8E95-5C707A8E7363}</ProjectGuid>
- <Keyword>Win32Proj</Keyword>
- <RootNamespace>winreg</RootNamespace>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <PlatformToolset>v120</PlatformToolset>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <PlatformToolset>v120</PlatformToolset>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <LinkIncremental>true</LinkIncremental>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <LinkIncremental>true</LinkIncremental>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <LinkIncremental>false</LinkIncremental>
- <OutDir>$(SolutionDir)..\..\org.eclipse.cdt.core.win32.x86\os\win32\x86\</OutDir>
- <IntDir />
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <LinkIncremental>false</LinkIncremental>
- <OutDir>$(SolutionDir)..\..\org.eclipse.cdt.core.win32.x86_64\os\win32\x86_64\</OutDir>
- <IntDir />
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <PrecompiledHeader>Use</PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;WINREG_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <Link>
- <SubSystem>Windows</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <ClCompile>
- <PrecompiledHeader>Use</PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;WINREG_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <Link>
- <SubSystem>Windows</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <PrecompiledHeader>Use</PrecompiledHeader>
- <Optimization>MaxSpeed</Optimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;WINREG_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>C:\Program Files\Java\jdk1.8.0_31\include;C:\Program Files\Java\jdk1.8.0_31\include\win32</AdditionalIncludeDirectories>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- </ClCompile>
- <Link>
- <SubSystem>Windows</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <PrecompiledHeader>Use</PrecompiledHeader>
- <Optimization>MaxSpeed</Optimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;WINREG_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>C:\Program Files\Java\jdk1.8.0_31\include;C:\Program Files\Java\jdk1.8.0_31\include\win32</AdditionalIncludeDirectories>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- </ClCompile>
- <Link>
- <SubSystem>Windows</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClInclude Include="stdafx.h" />
- <ClInclude Include="targetver.h" />
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="dllmain.cpp">
- <CompileAsManaged Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</CompileAsManaged>
- <CompileAsManaged Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</CompileAsManaged>
- <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- </PrecompiledHeader>
- <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- </PrecompiledHeader>
- <CompileAsManaged Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</CompileAsManaged>
- <CompileAsManaged Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</CompileAsManaged>
- <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- </PrecompiledHeader>
- <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- </PrecompiledHeader>
- </ClCompile>
- <ClCompile Include="stdafx.cpp">
- <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
- <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
- <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
- <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
- </ClCompile>
- <ClCompile Include="winreg.cpp" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/core/org.eclipse.cdt.core.win32/library/winreg/winreg.vcxproj.filters b/core/org.eclipse.cdt.core.win32/library/winreg/winreg.vcxproj.filters
deleted file mode 100644
index afa4a0f572f..00000000000
--- a/core/org.eclipse.cdt.core.win32/library/winreg/winreg.vcxproj.filters
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
- <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
- <Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Resource Files">
- <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
- <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="stdafx.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="targetver.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="stdafx.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="winreg.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="dllmain.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/core/org.eclipse.cdt.core.win32/plugin.properties b/core/org.eclipse.cdt.core.win32/plugin.properties
index 9dec4fd06a0..1e0fb54479d 100644
--- a/core/org.eclipse.cdt.core.win32/plugin.properties
+++ b/core/org.eclipse.cdt.core.win32/plugin.properties
@@ -1,2 +1,2 @@
-fragmentName.linux=C/C++ Development Tools Core for Windows
+fragmentName.win32=C/C++ Development Tools Core for Windows
providerName=Eclipse CDT
diff --git a/core/org.eclipse.cdt.core.win32/pom.xml b/core/org.eclipse.cdt.core.win32/pom.xml
index 4105a8806f3..2ed280caae1 100644
--- a/core/org.eclipse.cdt.core.win32/pom.xml
+++ b/core/org.eclipse.cdt.core.win32/pom.xml
@@ -1,4 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2011, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
@@ -7,11 +17,11 @@
<parent>
<groupId>org.eclipse.cdt</groupId>
<artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
+ <version>10.7.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
- <version>5.4.2-SNAPSHOT</version>
+ <version>6.0.300-SNAPSHOT</version>
<artifactId>org.eclipse.cdt.core.win32</artifactId>
<packaging>eclipse-plugin</packaging>
diff --git a/core/org.eclipse.cdt.core.win32/src/org/eclipse/cdt/internal/core/win32/ProcessList.java b/core/org.eclipse.cdt.core.win32/src/org/eclipse/cdt/internal/core/win32/ProcessList.java
index b96aff4047e..4810f09c248 100644
--- a/core/org.eclipse.cdt.core.win32/src/org/eclipse/cdt/internal/core/win32/ProcessList.java
+++ b/core/org.eclipse.cdt.core.win32/src/org/eclipse/cdt/internal/core/win32/ProcessList.java
@@ -14,91 +14,36 @@
*******************************************************************************/
package org.eclipse.cdt.internal.core.win32;
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.net.URL;
import java.util.ArrayList;
+import java.util.List;
import org.eclipse.cdt.core.IProcessInfo;
import org.eclipse.cdt.core.IProcessList;
-import org.eclipse.cdt.internal.core.natives.CNativePlugin;
-import org.eclipse.cdt.utils.spawner.ProcessFactory;
-import org.eclipse.core.runtime.FileLocator;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Platform;
-import org.osgi.framework.Bundle;
-/*
- * Currently this will only work for Windows XP since tasklist
- * is only shipped on XP. This could change to some JNI
- * call out to get the list since the source to 'tlist' is
- * on the msdn web site but that can be done later.
- */
+import com.sun.jna.platform.win32.Kernel32Util;
+import com.sun.jna.platform.win32.PsapiUtil;
+import com.sun.jna.platform.win32.Win32Exception;
public class ProcessList implements IProcessList {
-
private IProcessInfo[] NOPROCESS = new IProcessInfo[0];
@Override
public IProcessInfo[] getProcessList() {
- Process p = null;
- String command = null;
- InputStream in = null;
- Bundle bundle = Platform.getBundle(CNativePlugin.PLUGIN_ID);
- IProcessInfo[] procInfos = NOPROCESS;
-
try {
- URL url = FileLocator.find(bundle, new Path("$os$/listtasks.exe"), null); //$NON-NLS-1$
- if (url != null) {
- url = FileLocator.resolve(url);
- String path = url.getFile();
- File file = new File(path);
- if (file.exists()) {
- command = file.getCanonicalPath();
- if (command != null) {
- try {
- p = ProcessFactory.getFactory().exec(command);
- in = p.getInputStream();
- InputStreamReader reader = new InputStreamReader(in);
- procInfos = parseListTasks(reader);
- } finally {
- if (in != null)
- in.close();
- if (p != null)
- p.destroy();
- }
- }
+ List<IProcessInfo> processList = new ArrayList<>();
+
+ for (int pid : PsapiUtil.enumProcesses()) {
+ try {
+ String name = Kernel32Util.QueryFullProcessImageName(pid, 0);
+ processList.add(new ProcessInfo(pid, name));
+ } catch (Win32Exception e) {
+ // Intentionally ignored exception. Probable cause is access denied.
}
}
- } catch (IOException e) {
- }
- return procInfos;
- }
- public IProcessInfo[] parseListTasks(InputStreamReader reader) {
- BufferedReader br = new BufferedReader(reader);
- ArrayList processList = new ArrayList();
- try {
- String line;
- while ((line = br.readLine()) != null) {
- int tab = line.indexOf('\t');
- if (tab != -1) {
- String proc = line.substring(0, tab).trim();
- String name = line.substring(tab).trim();
- if (proc.length() > 0 && name.length() > 0) {
- try {
- int pid = Integer.parseInt(proc);
- processList.add(new ProcessInfo(pid, name));
- } catch (NumberFormatException e) {
- }
- }
- }
- }
- } catch (IOException e) {
+ return processList.toArray(new IProcessInfo[processList.size()]);
+ } catch (Win32Exception e) {
+ return NOPROCESS;
}
- return (IProcessInfo[]) processList.toArray(new IProcessInfo[processList.size()]);
}
}
diff --git a/core/org.eclipse.cdt.core.win32/src/org/eclipse/cdt/internal/core/win32/WindowsRegistryImpl.java b/core/org.eclipse.cdt.core.win32/src/org/eclipse/cdt/internal/core/win32/WindowsRegistryImpl.java
new file mode 100644
index 00000000000..c54dd22ccd0
--- /dev/null
+++ b/core/org.eclipse.cdt.core.win32/src/org/eclipse/cdt/internal/core/win32/WindowsRegistryImpl.java
@@ -0,0 +1,146 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Torbjörn Svensson
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Torbjörn Svensson - Initial implementation
+ *******************************************************************************/
+package org.eclipse.cdt.internal.core.win32;
+
+import java.util.Collections;
+import java.util.Map;
+
+import org.eclipse.cdt.internal.core.natives.CNativePlugin;
+import org.eclipse.cdt.utils.WindowsRegistry;
+import org.eclipse.core.runtime.Platform;
+
+import com.sun.jna.Native;
+import com.sun.jna.Pointer;
+import com.sun.jna.platform.win32.Advapi32;
+import com.sun.jna.platform.win32.Advapi32Util;
+import com.sun.jna.platform.win32.Advapi32Util.EnumKey;
+import com.sun.jna.platform.win32.W32Errors;
+import com.sun.jna.platform.win32.Win32Exception;
+import com.sun.jna.platform.win32.WinNT;
+import com.sun.jna.platform.win32.WinReg;
+import com.sun.jna.platform.win32.WinReg.HKEY;
+import com.sun.jna.platform.win32.WinReg.HKEYByReference;
+import com.sun.jna.ptr.IntByReference;
+
+/**
+ * @author Torbjörn Svensson
+ */
+public class WindowsRegistryImpl extends WindowsRegistry {
+
+ private final static boolean DEBUG = Platform.getDebugBoolean(CNativePlugin.PLUGIN_ID + "/debug/win32/registry"); //$NON-NLS-1$
+
+ @Override
+ public String getLocalMachineValue(String subkey, String name) {
+ return getValue(WinReg.HKEY_LOCAL_MACHINE, subkey, name);
+ }
+
+ @Override
+ public Map<String, Object> getLocalMachineValues(String subkey) {
+ return getValues(WinReg.HKEY_LOCAL_MACHINE, subkey);
+ }
+
+ @Override
+ public String getLocalMachineValueName(String subkey, int index) {
+ return getValueName(WinReg.HKEY_LOCAL_MACHINE, subkey, index);
+ }
+
+ @Override
+ public String getLocalMachineKeyName(String subkey, int index) {
+ return getKeyName(WinReg.HKEY_LOCAL_MACHINE, subkey, index);
+ }
+
+ @Override
+ public String getCurrentUserValue(String subkey, String name) {
+ return getValue(WinReg.HKEY_CURRENT_USER, subkey, name);
+ }
+
+ @Override
+ public Map<String, Object> getCurrentUserValues(String subkey) {
+ return getValues(WinReg.HKEY_CURRENT_USER, subkey);
+ }
+
+ @Override
+ public String getCurrentUserValueName(String subkey, int index) {
+ return getValueName(WinReg.HKEY_CURRENT_USER, subkey, index);
+ }
+
+ @Override
+ public String getCurrentUserKeyName(String subkey, int index) {
+ return getKeyName(WinReg.HKEY_CURRENT_USER, subkey, index);
+ }
+
+ private String getValue(HKEY key, String subkey, String name) {
+ try {
+ return Advapi32Util.registryGetStringValue(key, subkey, name);
+ } catch (Win32Exception e) {
+ if (DEBUG) {
+ CNativePlugin.log(String.format("Unable to get value for %s in %s", name, subkey), e); //$NON-NLS-1$
+ }
+ return null;
+ }
+ }
+
+ private String getKeyName(HKEY key, String subkey, int index) {
+ try {
+ HKEYByReference phkKey = Advapi32Util.registryGetKey(key, subkey, WinNT.KEY_READ);
+ try {
+ EnumKey enumKey = Advapi32Util.registryRegEnumKey(phkKey.getValue(), index);
+ return Native.toString(enumKey.lpName);
+ } finally {
+ Advapi32Util.registryCloseKey(phkKey.getValue());
+ }
+ } catch (Win32Exception e) {
+ if (DEBUG) {
+ CNativePlugin.log(String.format("Unable to get keyname for %s at index %d", subkey, index), e); //$NON-NLS-1$
+ }
+ return null;
+ }
+ }
+
+ private String getValueName(HKEY key, String subkey, int index) {
+ try {
+ HKEYByReference phkKey = Advapi32Util.registryGetKey(key, subkey, WinNT.KEY_READ);
+ try {
+ char[] lpValueName = new char[Advapi32.MAX_KEY_LENGTH];
+ IntByReference lpcchValueName = new IntByReference(Advapi32.MAX_KEY_LENGTH);
+ int rc = Advapi32.INSTANCE.RegEnumValue(phkKey.getValue(), index, lpValueName, lpcchValueName, null,
+ null, (Pointer) null, null);
+
+ if (rc != W32Errors.ERROR_SUCCESS) {
+ throw new Win32Exception(rc);
+ }
+
+ return Native.toString(lpValueName);
+ } finally {
+ Advapi32Util.registryCloseKey(phkKey.getValue());
+ }
+ } catch (Win32Exception e) {
+ if (DEBUG) {
+ CNativePlugin.log(String.format("Unable to get valuename for %s at index %d", subkey, index), e); //$NON-NLS-1$
+ }
+ return null;
+ }
+ }
+
+ private Map<String, Object> getValues(HKEY key, String subkey) {
+ try {
+ return Advapi32Util.registryGetValues(key, subkey);
+ } catch (Win32Exception e) {
+ if (DEBUG) {
+ CNativePlugin.log(String.format("Unable to get values for %s", subkey), e); //$NON-NLS-1$
+ }
+ return Collections.emptyMap();
+ }
+ }
+}
diff --git a/core/org.eclipse.cdt.core/.classpath b/core/org.eclipse.cdt.core/.classpath
index 8672427f779..2d596d6e9c6 100644
--- a/core/org.eclipse.cdt.core/.classpath
+++ b/core/org.eclipse.cdt.core/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="model"/>
<classpathentry kind="src" path="browser"/>
@@ -8,5 +8,6 @@
<classpathentry kind="src" path="utils"/>
<classpathentry kind="src" path="parser"/>
<classpathentry kind="src" path="templateengine"/>
+ <classpathentry kind="src" path="doxygen"/>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/core/org.eclipse.cdt.core/.project b/core/org.eclipse.cdt.core/.project
index 6773654ae7f..a7aa6e98d34 100644
--- a/core/org.eclipse.cdt.core/.project
+++ b/core/org.eclipse.cdt.core/.project
@@ -25,6 +25,11 @@
<arguments>
</arguments>
</buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ds.core.builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
diff --git a/core/org.eclipse.cdt.core/.settings/.api_filters b/core/org.eclipse.cdt.core/.settings/.api_filters
index 0f40ba973e2..a05364d729a 100644
--- a/core/org.eclipse.cdt.core/.settings/.api_filters
+++ b/core/org.eclipse.cdt.core/.settings/.api_filters
@@ -1,78 +1,238 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<component id="org.eclipse.cdt.core" version="2">
- <resource path="src/org/eclipse/cdt/core/build/ICBuildConfiguration.java" type="org.eclipse.cdt.core.build.ICBuildConfiguration">
- <filter id="403767336">
+ <resource path="browser/org/eclipse/cdt/core/browser/IndexTypeInfo.java" type="org.eclipse.cdt.core.browser.IndexTypeInfo">
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
<message_arguments>
- <message_argument value="org.eclipse.cdt.core.build.ICBuildConfiguration"/>
- <message_argument value="TOOLCHAIN_TYPE"/>
+ <message_argument value="IFunctionInfo"/>
+ <message_argument value="IndexTypeInfo"/>
</message_arguments>
</filter>
- <filter id="404000815">
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
<message_arguments>
- <message_argument value="org.eclipse.cdt.core.build.ICBuildConfiguration"/>
- <message_argument value="getLaunchMode()"/>
+ <message_argument value="ITypeInfo"/>
+ <message_argument value="IndexTypeInfo"/>
</message_arguments>
</filter>
- <filter id="404000815">
+ </resource>
+ <resource path="browser/org/eclipse/cdt/core/browser/QualifiedTypeName.java" type="org.eclipse.cdt.core.browser.QualifiedTypeName">
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
+ <message_arguments>
+ <message_argument value="IQualifiedTypeName"/>
+ <message_argument value="QualifiedTypeName"/>
+ </message_arguments>
+ </filter>
+ </resource>
+ <resource path="browser/org/eclipse/cdt/core/browser/TypeInfo.java" type="org.eclipse.cdt.core.browser.TypeInfo">
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
+ <message_arguments>
+ <message_argument value="ITypeInfo"/>
+ <message_argument value="TypeInfo"/>
+ </message_arguments>
+ </filter>
+ </resource>
+ <resource path="browser/org/eclipse/cdt/core/browser/TypeReference.java" type="org.eclipse.cdt.core.browser.TypeReference">
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
+ <message_arguments>
+ <message_argument value="ITypeReference"/>
+ <message_argument value="TypeReference"/>
+ </message_arguments>
+ </filter>
+ </resource>
+ <resource path="browser/org/eclipse/cdt/core/browser/TypeSearchScope.java" type="org.eclipse.cdt.core.browser.TypeSearchScope">
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
+ <message_arguments>
+ <message_argument value="ITypeSearchScope"/>
+ <message_argument value="TypeSearchScope"/>
+ </message_arguments>
+ </filter>
+ </resource>
+ <resource path="model/org/eclipse/cdt/core/model/AbstractLanguage.java" type="org.eclipse.cdt.core.model.AbstractLanguage">
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
+ <message_arguments>
+ <message_argument value="ILanguage"/>
+ <message_argument value="AbstractLanguage"/>
+ </message_arguments>
+ </filter>
+ </resource>
+ <resource path="model/org/eclipse/cdt/core/model/LanguageMappingChangeEvent.java" type="org.eclipse.cdt.core.model.LanguageMappingChangeEvent">
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
+ <message_arguments>
+ <message_argument value="ILanguageMappingChangeEvent"/>
+ <message_argument value="LanguageMappingChangeEvent"/>
+ </message_arguments>
+ </filter>
+ </resource>
+ <resource path="model/org/eclipse/cdt/core/settings/model/ACSettingEntry.java" type="org.eclipse.cdt.core.settings.model.ACSettingEntry">
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
+ <message_arguments>
+ <message_argument value="ICSettingEntry"/>
+ <message_argument value="ACSettingEntry"/>
+ </message_arguments>
+ </filter>
+ </resource>
+ <resource path="model/org/eclipse/cdt/core/settings/model/util/XmlStorageElement.java" type="org.eclipse.cdt.core.settings.model.util.XmlStorageElement">
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
+ <message_arguments>
+ <message_argument value="ICStorageElement"/>
+ <message_argument value="XmlStorageElement"/>
+ </message_arguments>
+ </filter>
+ </resource>
+ <resource path="parser/org/eclipse/cdt/core/dom/ast/ASTCompletionNode.java" type="org.eclipse.cdt.core.dom.ast.ASTCompletionNode">
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
+ <message_arguments>
+ <message_argument value="IASTCompletionNode"/>
+ <message_argument value="ASTCompletionNode"/>
+ </message_arguments>
+ </filter>
+ </resource>
+ <resource path="parser/org/eclipse/cdt/core/dom/parser/AbstractScannerExtensionConfiguration.java" type="org.eclipse.cdt.core.dom.parser.AbstractScannerExtensionConfiguration">
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
+ <message_arguments>
+ <message_argument value="IScannerExtensionConfiguration"/>
+ <message_argument value="AbstractScannerExtensionConfiguration"/>
+ </message_arguments>
+ </filter>
+ </resource>
+ <resource path="parser/org/eclipse/cdt/core/dom/parser/c/AbstractCParserExtensionConfiguration.java" type="org.eclipse.cdt.core.dom.parser.c.AbstractCParserExtensionConfiguration">
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
+ <message_arguments>
+ <message_argument value="ICParserExtensionConfiguration"/>
+ <message_argument value="AbstractCParserExtensionConfiguration"/>
+ </message_arguments>
+ </filter>
+ </resource>
+ <resource path="parser/org/eclipse/cdt/core/dom/parser/cpp/AbstractCPPParserExtensionConfiguration.java" type="org.eclipse.cdt.core.dom.parser.cpp.AbstractCPPParserExtensionConfiguration">
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
+ <message_arguments>
+ <message_argument value="ICPPParserExtensionConfiguration"/>
+ <message_argument value="AbstractCPPParserExtensionConfiguration"/>
+ </message_arguments>
+ </filter>
+ </resource>
+ <resource path="parser/org/eclipse/cdt/core/index/IPDOMASTProcessor.java" type="org.eclipse.cdt.core.index.IPDOMASTProcessor$Abstract">
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
+ <message_arguments>
+ <message_argument value="IPDOMASTProcessor"/>
+ <message_argument value="Abstract"/>
+ </message_arguments>
+ </filter>
+ </resource>
+ <resource path="parser/org/eclipse/cdt/core/index/ResourceContainerRelativeLocationConverter.java" type="org.eclipse.cdt.core.index.ResourceContainerRelativeLocationConverter">
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
+ <message_arguments>
+ <message_argument value="IIndexLocationConverter"/>
+ <message_argument value="ResourceContainerRelativeLocationConverter"/>
+ </message_arguments>
+ </filter>
+ </resource>
+ <resource path="parser/org/eclipse/cdt/core/index/URIRelativeLocationConverter.java" type="org.eclipse.cdt.core.index.URIRelativeLocationConverter">
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
+ <message_arguments>
+ <message_argument value="IIndexLocationConverter"/>
+ <message_argument value="URIRelativeLocationConverter"/>
+ </message_arguments>
+ </filter>
+ </resource>
+ <resource path="parser/org/eclipse/cdt/core/index/export/AbstractExportProjectProvider.java" type="org.eclipse.cdt.core.index.export.AbstractExportProjectProvider">
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
+ <message_arguments>
+ <message_argument value="IExportProjectProvider"/>
+ <message_argument value="AbstractExportProjectProvider"/>
+ </message_arguments>
+ </filter>
+ </resource>
+ <resource path="parser/org/eclipse/cdt/core/parser/AbstractPersistableProblem.java" type="org.eclipse.cdt.core.parser.AbstractPersistableProblem">
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
+ <message_arguments>
+ <message_argument value="IPersistableProblem"/>
+ <message_argument value="AbstractPersistableProblem"/>
+ </message_arguments>
+ </filter>
+ </resource>
+ <resource path="parser/org/eclipse/cdt/core/parser/IParserSettings2.java" type="org.eclipse.cdt.core.parser.IParserSettings2$Default">
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
+ <message_arguments>
+ <message_argument value="IParserSettings2"/>
+ <message_argument value="Default"/>
+ </message_arguments>
+ </filter>
+ </resource>
+ <resource path="src/org/eclipse/cdt/core/AbstractCExtension.java" type="org.eclipse.cdt.core.AbstractCExtension">
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
+ <message_arguments>
+ <message_argument value="ICExtension"/>
+ <message_argument value="AbstractCExtension"/>
+ </message_arguments>
+ </filter>
+ </resource>
+ <resource path="src/org/eclipse/cdt/core/cdtvariables/CdtVariableStatus.java" type="org.eclipse.cdt.core.cdtvariables.CdtVariableStatus">
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
<message_arguments>
- <message_argument value="org.eclipse.cdt.core.build.ICBuildConfiguration"/>
- <message_argument value="getProperty(String)"/>
+ <message_argument value="ICdtVariableStatus"/>
+ <message_argument value="CdtVariableStatus"/>
</message_arguments>
</filter>
- <filter id="404000815">
+ </resource>
+ <resource path="src/org/eclipse/cdt/core/envvar/EnvironmentVariable.java" type="org.eclipse.cdt.core.envvar.EnvironmentVariable">
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
<message_arguments>
- <message_argument value="org.eclipse.cdt.core.build.ICBuildConfiguration"/>
- <message_argument value="removeProperty(String)"/>
+ <message_argument value="IEnvironmentVariable"/>
+ <message_argument value="EnvironmentVariable"/>
</message_arguments>
</filter>
- <filter id="404000815">
+ </resource>
+ <resource path="utils/org/eclipse/cdt/utils/DefaultCygwinToolFactory.java" type="org.eclipse.cdt.utils.DefaultCygwinToolFactory">
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
<message_arguments>
- <message_argument value="org.eclipse.cdt.core.build.ICBuildConfiguration"/>
- <message_argument value="setProperty(String, String)"/>
+ <message_argument value="ICygwinToolsFactroy"/>
+ <message_argument value="DefaultCygwinToolFactory"/>
</message_arguments>
</filter>
</resource>
- <resource path="src/org/eclipse/cdt/core/build/ICBuildConfigurationProvider.java" type="org.eclipse.cdt.core.build.ICBuildConfigurationProvider">
- <filter id="404000815">
+ <resource path="utils/org/eclipse/cdt/utils/DefaultGnuToolFactory.java" type="org.eclipse.cdt.utils.DefaultGnuToolFactory">
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
<message_arguments>
- <message_argument value="org.eclipse.cdt.core.build.ICBuildConfigurationProvider"/>
- <message_argument value="getSupportedToolchains(Collection&lt;IToolChain&gt;)"/>
+ <message_argument value="IGnuToolFactory"/>
+ <message_argument value="DefaultGnuToolFactory"/>
</message_arguments>
</filter>
</resource>
- <resource path="src/org/eclipse/cdt/core/build/IToolChain.java" type="org.eclipse.cdt.core.build.IToolChain">
- <filter comment="It is unlikely toolchains would have added a method with this name." id="404000815">
+ <resource path="utils/org/eclipse/cdt/utils/cdtvariables/SupplierBasedCdtVariableSubstitutor.java" type="org.eclipse.cdt.utils.cdtvariables.SupplierBasedCdtVariableSubstitutor">
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
<message_arguments>
- <message_argument value="org.eclipse.cdt.core.build.IToolChain"/>
- <message_argument value="getBuildConfigNameFragment()"/>
+ <message_argument value="IVariableSubstitutor"/>
+ <message_argument value="SupplierBasedCdtVariableSubstitutor"/>
</message_arguments>
</filter>
</resource>
- <resource path="src/org/eclipse/cdt/core/build/IToolChainProvider.java" type="org.eclipse.cdt.core.build.IToolChainProvider">
- <filter comment="This interface is still pretty new. Assuming low risk." id="404000815">
+ <resource path="utils/org/eclipse/cdt/utils/coff/CodeViewReader.java" type="org.eclipse.cdt.utils.coff.CodeViewReader">
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
<message_arguments>
- <message_argument value="org.eclipse.cdt.core.build.IToolChainProvider"/>
- <message_argument value="addToolChain(IToolChain)"/>
+ <message_argument value="ISymbolReader"/>
+ <message_argument value="CodeViewReader"/>
</message_arguments>
</filter>
- <filter id="404000815">
+ </resource>
+ <resource path="utils/org/eclipse/cdt/utils/debug/dwarf/DwarfReader.java" type="org.eclipse.cdt.utils.debug.dwarf.DwarfReader">
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
<message_arguments>
- <message_argument value="org.eclipse.cdt.core.build.IToolChainProvider"/>
- <message_argument value="getToolChain(String)"/>
+ <message_argument value="ICompileOptionsFinder"/>
+ <message_argument value="DwarfReader"/>
</message_arguments>
</filter>
- <filter comment="Newish interface. Assuming low risk." id="404000815">
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
<message_arguments>
- <message_argument value="org.eclipse.cdt.core.build.IToolChainProvider"/>
- <message_argument value="removeToolChain(IToolChain)"/>
+ <message_argument value="ISymbolReader"/>
+ <message_argument value="DwarfReader"/>
</message_arguments>
</filter>
</resource>
- <resource path="utils/org/eclipse/cdt/utils/elf/Elf.java" type="org.eclipse.cdt.utils.elf.Elf$Section">
- <filter comment="Unlikely API incompatibility" id="336658481">
+ <resource path="utils/org/eclipse/cdt/utils/debug/stabs/StabsReader.java" type="org.eclipse.cdt.utils.debug.stabs.StabsReader">
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
<message_arguments>
- <message_argument value="org.eclipse.cdt.utils.elf.Elf.Section"/>
- <message_argument value="SHF_COMPRESSED"/>
+ <message_argument value="ISymbolReader"/>
+ <message_argument value="StabsReader"/>
</message_arguments>
</filter>
</resource>
diff --git a/core/org.eclipse.cdt.core/.settings/org.eclipse.core.resources.prefs b/core/org.eclipse.cdt.core/.settings/org.eclipse.core.resources.prefs
index a297482b44b..34f39fc76e2 100644
--- a/core/org.eclipse.cdt.core/.settings/org.eclipse.core.resources.prefs
+++ b/core/org.eclipse.cdt.core/.settings/org.eclipse.core.resources.prefs
@@ -3,3 +3,4 @@ encoding//parser/org/eclipse/cdt/internal/core/index/Messages.properties=8859_1
encoding//parser/org/eclipse/cdt/internal/core/pdom/Messages.properties=8859_1
encoding//parser/org/eclipse/cdt/internal/core/pdom/db/Messages.properties=8859_1
encoding//parser/org/eclipse/cdt/internal/core/pdom/indexer/Messages.properties=8859_1
+encoding/<project>=UTF-8
diff --git a/core/org.eclipse.cdt.core/.settings/org.eclipse.jdt.core.prefs b/core/org.eclipse.cdt.core/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/core/org.eclipse.cdt.core/.settings/org.eclipse.jdt.core.prefs
+++ b/core/org.eclipse.cdt.core/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/core/org.eclipse.cdt.core/.settings/org.eclipse.jdt.ui.prefs b/core/org.eclipse.cdt.core/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/core/org.eclipse.cdt.core/.settings/org.eclipse.jdt.ui.prefs
+++ b/core/org.eclipse.cdt.core/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/core/org.eclipse.cdt.core/.settings/org.eclipse.pde.ds.annotations.prefs b/core/org.eclipse.cdt.core/.settings/org.eclipse.pde.ds.annotations.prefs
new file mode 100644
index 00000000000..73a356b6d05
--- /dev/null
+++ b/core/org.eclipse.cdt.core/.settings/org.eclipse.pde.ds.annotations.prefs
@@ -0,0 +1,8 @@
+classpath=true
+dsVersion=V1_3
+eclipse.preferences.version=1
+enabled=true
+generateBundleActivationPolicyLazy=true
+path=OSGI-INF
+validationErrorLevel=error
+validationErrorLevel.missingImplicitUnbindMethod=error
diff --git a/core/org.eclipse.cdt.core/META-INF/MANIFEST.MF b/core/org.eclipse.cdt.core/META-INF/MANIFEST.MF
index 97d1389faaa..bc52049ddfe 100644
--- a/core/org.eclipse.cdt.core/META-INF/MANIFEST.MF
+++ b/core/org.eclipse.cdt.core/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.core; singleton:=true
-Bundle-Version: 6.10.0.qualifier
+Bundle-Version: 7.5.0.qualifier
Bundle-Activator: org.eclipse.cdt.core.CCorePlugin
Bundle-Vendor: %providerName
Bundle-Localization: plugin
@@ -44,9 +44,12 @@ Export-Package: org.eclipse.cdt.core,
org.eclipse.cdt.core.templateengine,
org.eclipse.cdt.core.templateengine.process,
org.eclipse.cdt.core.templateengine.process.processes,
+ org.eclipse.cdt.doxygen;x-friends:="org.eclipse.cdt.ui",
+ org.eclipse.cdt.doxygen.core;x-friends:="org.eclipse.cdt.ui",
org.eclipse.cdt.internal.core;
x-friends:="org.eclipse.cdt.codan.core.cxx,
org.eclipse.cdt.debug.core,
+ org.eclipse.cdt.dsf,
org.eclipse.cdt.dsf.gdb,
org.eclipse.cdt.make.core,
org.eclipse.cdt.make.ui,
@@ -59,8 +62,8 @@ Export-Package: org.eclipse.cdt.core,
org.eclipse.cdt.internal.core.dom.ast.tag;x-internal:=true,
org.eclipse.cdt.internal.core.dom.parser;x-friends:="org.eclipse.cdt.ui,org.eclipse.cdt.codan.checkers",
org.eclipse.cdt.internal.core.dom.parser.c;x-friends:="org.eclipse.cdt.ui",
- org.eclipse.cdt.internal.core.dom.parser.cpp;x-friends:="org.eclipse.cdt.ui",
- org.eclipse.cdt.internal.core.dom.parser.cpp.semantics;x-friends:="org.eclipse.cdt.ui,org.eclipse.cdt.codan.core.cxx",
+ org.eclipse.cdt.internal.core.dom.parser.cpp;x-friends:="org.eclipse.cdt.ui,org.eclipse.cdt.codan.checkers",
+ org.eclipse.cdt.internal.core.dom.parser.cpp.semantics;x-friends:="org.eclipse.cdt.ui,org.eclipse.cdt.codan.core.cxx,org.eclipse.cdt.codan.checkers",
org.eclipse.cdt.internal.core.dom.rewrite;x-friends:="org.eclipse.cdt.core.tests,org.eclipse.cdt.ui",
org.eclipse.cdt.internal.core.dom.rewrite.astwriter;x-friends:="org.eclipse.cdt.ui",
org.eclipse.cdt.internal.core.dom.rewrite.changegenerator;x-internal:=true,
@@ -88,13 +91,14 @@ Export-Package: org.eclipse.cdt.core,
org.eclipse.cdt.internal.core.parser.util;x-friends:="org.eclipse.cdt.ui",
org.eclipse.cdt.internal.core.pdom;x-friends:="org.eclipse.cdt.ui",
org.eclipse.cdt.internal.core.pdom.db;x-friends:="org.eclipse.cdt.ui",
- org.eclipse.cdt.internal.core.pdom.dom;x-friends:="org.eclipse.cdt.ui",
+ org.eclipse.cdt.internal.core.pdom.dom;x-friends:="org.eclipse.cdt.ui,org.eclipse.cdt.codan.checkers",
org.eclipse.cdt.internal.core.pdom.dom.c;x-internal:=true,
org.eclipse.cdt.internal.core.pdom.dom.cpp;x-internal:=true,
org.eclipse.cdt.internal.core.pdom.export;x-internal:=true,
org.eclipse.cdt.internal.core.pdom.indexer;x-friends:="org.eclipse.cdt.ui",
org.eclipse.cdt.internal.core.pdom.tag;x-internal:=true,
org.eclipse.cdt.internal.core.resources;x-friends:="org.eclipse.cdt.ui,org.eclipse.cdt.make.core,org.eclipse.cdt.codan.ui.cxx",
+ org.eclipse.cdt.internal.core.scannerinfo;x-friends:="org.eclipse.cdt.core.tests",
org.eclipse.cdt.internal.core.settings.model;x-internal:=true,
org.eclipse.cdt.internal.core.util;x-friends:="org.eclipse.cdt.ui",
org.eclipse.cdt.internal.errorparsers;x-friends:="org.eclipse.cdt.codan.checkers.ui",
@@ -118,21 +122,21 @@ Export-Package: org.eclipse.cdt.core,
org.eclipse.cdt.utils.som.parser,
org.eclipse.cdt.utils.xcoff,
org.eclipse.cdt.utils.xcoff.parser
-Require-Bundle: org.eclipse.cdt.core.native;bundle-version="[5.10.100,6.0.0)";visibility:=reexport,
- org.eclipse.core.contenttype;bundle-version="[3.7.400,4.0.0)",
- org.eclipse.core.expressions;bundle-version="[3.6.500,4.0.0)",
- org.eclipse.core.filebuffers;bundle-version="[3.6.700,4.0.0)",
- org.eclipse.core.filesystem;bundle-version="[1.7.500,2.0.0)",
- org.eclipse.core.resources;bundle-version="[3.13.500,4.0.0)",
- org.eclipse.core.runtime;bundle-version="[3.16.0,4.0.0)",
- org.eclipse.core.variables;bundle-version="[3.4.600,4.0.0)",
- org.eclipse.ltk.core.refactoring;bundle-version="[3.10.200,4.0.0)",
- org.eclipse.text;bundle-version="[3.9.0,4.0.0)",
- com.ibm.icu;bundle-version="4.4.2",
- com.google.gson,
+Require-Bundle: org.eclipse.cdt.core.native;bundle-version="[6.2.0,7.0.0)";visibility:=reexport,
+ org.eclipse.core.contenttype;bundle-version="[3.8.100,4.0.0)",
+ org.eclipse.core.expressions;bundle-version="[3.8.100,4.0.0)",
+ org.eclipse.core.filebuffers;bundle-version="[3.7.100,4.0.0)",
+ org.eclipse.core.filesystem;bundle-version="[1.9.200,2.0.0)",
+ org.eclipse.core.resources;bundle-version="[3.16.0,4.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.24.0,4.0.0)",
+ org.eclipse.core.variables;bundle-version="[3.5.100,4.0.0)",
+ org.eclipse.ltk.core.refactoring;bundle-version="[3.12.100,4.0.0)",
+ org.eclipse.osgi.services;bundle-version="[3.10.200,4.0.0)",
+ org.eclipse.text;bundle-version="[3.12.0,4.0.0)",
+ com.google.gson;bundle-version="[2.8.6,3.0.0)",
org.eclipse.jdt.annotation;bundle-version="[2.0.0,3.0.0)";resolution:=optional
Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Import-Package: javax.xml.bind;version="2.2.0"
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Automatic-Module-Name: org.eclipse.cdt.core
+Service-Component: OSGI-INF/*.xml
diff --git a/core/org.eclipse.cdt.core/OSGI-INF/org.eclipse.cdt.doxygen.internal.core.DoxygenPreferenceAccess.xml b/core/org.eclipse.cdt.core/OSGI-INF/org.eclipse.cdt.doxygen.internal.core.DoxygenPreferenceAccess.xml
new file mode 100644
index 00000000000..5dfe6a36142
--- /dev/null
+++ b/core/org.eclipse.cdt.core/OSGI-INF/org.eclipse.cdt.doxygen.internal.core.DoxygenPreferenceAccess.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.eclipse.cdt.doxygen.internal.core.DoxygenPreferenceAccess">
+ <service>
+ <provide interface="org.eclipse.cdt.doxygen.core.DoxygenConfiguration"/>
+ <provide interface="org.eclipse.cdt.doxygen.core.DoxygenPreferences"/>
+ </service>
+ <implementation class="org.eclipse.cdt.doxygen.internal.core.DoxygenPreferenceAccess"/>
+</scr:component> \ No newline at end of file
diff --git a/core/org.eclipse.cdt.core/about.html b/core/org.eclipse.cdt.core/about.html
index 164f781a8fd..b3134865230 100644
--- a/core/org.eclipse.cdt.core/about.html
+++ b/core/org.eclipse.cdt.core/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/core/org.eclipse.cdt.core/browser/org/eclipse/cdt/core/browser/PathUtil.java b/core/org.eclipse.cdt.core/browser/org/eclipse/cdt/core/browser/PathUtil.java
deleted file mode 100644
index e1d8dccb6b5..00000000000
--- a/core/org.eclipse.cdt.core/browser/org/eclipse/cdt/core/browser/PathUtil.java
+++ /dev/null
@@ -1,178 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2009 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - initial API and implementation
- * Markus Schorn (Wind River Systems)
- *******************************************************************************/
-package org.eclipse.cdt.core.browser;
-
-import java.io.File;
-import java.io.IOException;
-
-import org.eclipse.cdt.core.CCorePlugin;
-import org.eclipse.cdt.core.model.CoreModel;
-import org.eclipse.cdt.core.model.ICProject;
-import org.eclipse.cdt.core.parser.IScannerInfo;
-import org.eclipse.cdt.core.parser.IScannerInfoProvider;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IWorkspace;
-import org.eclipse.core.resources.IWorkspaceRoot;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
-
-/**
- * @deprecated use {@link org.eclipse.cdt.utils.PathUtil}, instead.
- * @noextend This class is not intended to be subclassed by clients.
- * @noinstantiate This class is not intended to be instantiated by clients.
- */
-@Deprecated
-public class PathUtil {
-
- public static boolean isWindowsFileSystem() {
- String os = System.getProperty("os.name"); //$NON-NLS-1$
- return (os != null && os.startsWith("Win")); //$NON-NLS-1$
- }
-
- public static IWorkspaceRoot getWorkspaceRoot() {
- IWorkspace workspace = ResourcesPlugin.getWorkspace();
- if (workspace != null) {
- return workspace.getRoot();
- }
- return null;
- }
-
- public static IPath getCanonicalPath(IPath fullPath) {
- File file = fullPath.toFile();
- try {
- String canonPath = file.getCanonicalPath();
- return new Path(canonPath);
- } catch (IOException ex) {
- }
- return null;
- }
-
- public static IPath getWorkspaceRelativePath(IPath fullPath) {
- IWorkspaceRoot workspaceRoot = getWorkspaceRoot();
- if (workspaceRoot != null) {
- IPath workspaceLocation = workspaceRoot.getLocation();
- if (workspaceLocation != null && workspaceLocation.isPrefixOf(fullPath)) {
- int segments = fullPath.matchingFirstSegments(workspaceLocation);
- IPath relPath = fullPath.setDevice(null).removeFirstSegments(segments);
- return new Path("").addTrailingSeparator().append(relPath); //$NON-NLS-1$
- }
- }
- return fullPath;
- }
-
- public static IPath getProjectRelativePath(IPath fullPath, IProject project) {
- IPath projectPath = project.getFullPath();
- if (projectPath.isPrefixOf(fullPath)) {
- return fullPath.removeFirstSegments(projectPath.segmentCount());
- }
- projectPath = project.getLocation();
- if (projectPath.isPrefixOf(fullPath)) {
- return fullPath.removeFirstSegments(projectPath.segmentCount());
- }
- return getWorkspaceRelativePath(fullPath);
- }
-
- public static IPath getWorkspaceRelativePath(String fullPath) {
- return getWorkspaceRelativePath(new Path(fullPath));
- }
-
- public static IPath getRawLocation(IPath wsRelativePath) {
- IWorkspaceRoot workspaceRoot = getWorkspaceRoot();
- if (workspaceRoot != null && wsRelativePath != null) {
- IPath workspaceLocation = workspaceRoot.getLocation();
- if (workspaceLocation != null && !workspaceLocation.isPrefixOf(wsRelativePath)) {
- return workspaceLocation.append(wsRelativePath);
- }
- }
- return wsRelativePath;
- }
-
- public static IPath makeRelativePath(IPath path, IPath relativeTo) {
- int segments = relativeTo.matchingFirstSegments(path);
- if (segments > 0) {
- IPath prefix = relativeTo.removeFirstSegments(segments);
- IPath suffix = path.removeFirstSegments(segments);
- IPath relativePath = new Path(""); //$NON-NLS-1$
- for (int i = 0; i < prefix.segmentCount(); ++i) {
- relativePath = relativePath.append(".." + IPath.SEPARATOR); //$NON-NLS-1$
- }
- return relativePath.append(suffix);
- }
- return null;
- }
-
- public static IPath makeRelativePathToProjectIncludes(IPath fullPath, IProject project) {
- IScannerInfoProvider provider = CCorePlugin.getDefault().getScannerInfoProvider(project);
- if (provider != null) {
- IScannerInfo info = provider.getScannerInformation(project);
- if (info != null) {
- return makeRelativePathToIncludes(fullPath, info.getIncludePaths());
- }
- }
- return null;
- }
-
- public static IPath makeRelativePathToIncludes(IPath fullPath, String[] includePaths) {
- IPath relativePath = null;
- int mostSegments = 0;
- for (int i = 0; i < includePaths.length; ++i) {
- IPath includePath = new Path(includePaths[i]);
- if (includePath.isPrefixOf(fullPath)) {
- int segments = includePath.matchingFirstSegments(fullPath);
- if (segments > mostSegments) {
- relativePath = fullPath.removeFirstSegments(segments).setDevice(null);
- mostSegments = segments;
- }
- }
- }
- return relativePath;
- }
-
- /**
- * @noreference This method is not intended to be referenced by clients.
- */
- public static ICProject getEnclosingProject(IPath fullPath) {
- IWorkspaceRoot root = getWorkspaceRoot();
- if (root != null) {
- IPath path = getWorkspaceRelativePath(fullPath);
- while (path.segmentCount() > 0) {
- IResource res = root.findMember(path);
- if (res != null)
- return CoreModel.getDefault().create(res.getProject());
-
- path = path.removeLastSegments(1);
- }
- }
- return null;
- }
-
- public static IPath getValidEnclosingFolder(IPath fullPath) {
- IWorkspaceRoot root = getWorkspaceRoot();
- if (root != null) {
- IPath path = getWorkspaceRelativePath(fullPath);
- while (path.segmentCount() > 0) {
- IResource res = root.findMember(path);
- if (res != null && res.exists()
- && (res.getType() == IResource.PROJECT || res.getType() == IResource.FOLDER))
- return path;
-
- path = path.removeLastSegments(1);
- }
- }
- return null;
- }
-}
diff --git a/core/org.eclipse.cdt.core/browser/org/eclipse/cdt/core/browser/TypeSearchScope.java b/core/org.eclipse.cdt.core/browser/org/eclipse/cdt/core/browser/TypeSearchScope.java
index 8c892b30d1d..e29cf5c24df 100644
--- a/core/org.eclipse.cdt.core/browser/org/eclipse/cdt/core/browser/TypeSearchScope.java
+++ b/core/org.eclipse.cdt.core/browser/org/eclipse/cdt/core/browser/TypeSearchScope.java
@@ -151,10 +151,6 @@ public class TypeSearchScope implements ITypeSearchScope {
}
// check projects that were explicity added to scope
- if (fProjectSet.contains(path))
- return true;
-
- // check projects that were explicity added to scope
if (fProjects == null) {
fProjects = fProjectSet.toArray(new ICProject[fProjectSet.size()]);
}
diff --git a/core/org.eclipse.cdt.core/build.properties b/core/org.eclipse.cdt.core/build.properties
index dbcd2b3fb2f..54df945e530 100644
--- a/core/org.eclipse.cdt.core/build.properties
+++ b/core/org.eclipse.cdt.core/build.properties
@@ -1,5 +1,5 @@
###############################################################################
-# Copyright (c) 2003, 2015 IBM Corporation and others.
+# Copyright (c) 2003, 2020 IBM Corporation and others.
#
# This program and the accompanying materials
# are made available under the terms of the Eclipse Public License 2.0
@@ -11,13 +11,15 @@
# Contributors:
# IBM Corporation - initial API and implementation
# Martin Oberhuber (Wind River) - [303083] Split out the Spawner
+# Alexander Fedorov <alexander.fedorov@arsysop.ru> - Bug 559193
###############################################################################
bin.includes = plugin.xml,\
plugin.properties,\
about.html,\
.,\
META-INF/,\
- .options
+ .options,\
+ OSGI-INF/
src.includes = schema/,\
about.html
javadoc.packages = org.eclipse.cdt.core.*,\
@@ -32,4 +34,5 @@ source.. = src/,\
parser/,\
browser/,\
templateengine/,\
+ doxygen/,\
utils/
diff --git a/core/org.eclipse.cdt.core/doxygen/org/eclipse/cdt/doxygen/DoxygenMetadata.java b/core/org.eclipse.cdt.core/doxygen/org/eclipse/cdt/doxygen/DoxygenMetadata.java
new file mode 100644
index 00000000000..4172d814b75
--- /dev/null
+++ b/core/org.eclipse.cdt.core/doxygen/org/eclipse/cdt/doxygen/DoxygenMetadata.java
@@ -0,0 +1,78 @@
+/*******************************************************************************
+ * Copyright (c) 2020 ArSysOp and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov <alexander.fedorov@arsysop.ru> - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.doxygen;
+
+import java.util.List;
+
+import org.eclipse.core.runtime.preferences.PreferenceMetadata;
+
+/**
+ * The metadata for options to configure doxygen
+ *
+ */
+public interface DoxygenMetadata {
+
+ /**
+ * Returns the metadata for the "Use brief tag" option, must not return <code>null</code>.
+ *
+ * @return the metadata for the "Use brief tag" option
+ *
+ * @see DoxygenOptions#useBriefTags()
+ */
+ PreferenceMetadata<Boolean> useBriefTagOption();
+
+ /**
+ * Returns the metadata for the "Use structural commands" option, must not return <code>null</code>.
+ *
+ * @return the metadata for the "Use structural commands" option
+ *
+ * @see DoxygenOptions#useStructuralCommands()
+ */
+ PreferenceMetadata<Boolean> useStructuralCommandsOption();
+
+ /**
+ * Returns the metadata for the "Use javadoc style for tags" option, must not return <code>null</code>.
+ *
+ * @return the metadata for the "Use javadoc style for tags" option
+ *
+ * @see DoxygenOptions#useJavadocStyle()
+ */
+ PreferenceMetadata<Boolean> useJavadocStyleOption();
+
+ /**
+ * Returns the metadata for the "Add new line after brief tag" option, must not return <code>null</code>.
+ *
+ * @return the metadata for the "Add new line after brief tag" option
+ *
+ * @see DoxygenOptions#newLineAfterBrief()
+ */
+ PreferenceMetadata<Boolean> newLineAfterBriefOption();
+
+ /**
+ * Returns the metadata for the "Add pre/post tags to functions" option, must not return <code>null</code>.
+ *
+ * @return the metadata for the "Add pre/post tags to functions" option
+ *
+ * @see DoxygenOptions#usePrePostTag()
+ */
+ PreferenceMetadata<Boolean> usePrePostTagOption();
+
+ /**
+ * Returns the list of available boolean options to be shown in UI, must not return <code>null</code>.
+ *
+ * @return the list of boolean options
+ */
+ List<PreferenceMetadata<Boolean>> booleanOptions();
+
+}
diff --git a/core/org.eclipse.cdt.core/doxygen/org/eclipse/cdt/doxygen/DoxygenOptions.java b/core/org.eclipse.cdt.core/doxygen/org/eclipse/cdt/doxygen/DoxygenOptions.java
new file mode 100644
index 00000000000..1140811e770
--- /dev/null
+++ b/core/org.eclipse.cdt.core/doxygen/org/eclipse/cdt/doxygen/DoxygenOptions.java
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ * Copyright (c) 2020 ArSysOp and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov <alexander.fedorov@arsysop.ru> - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.doxygen;
+
+/**
+ * Options to configure doxygen
+ *
+ */
+public interface DoxygenOptions {
+
+ /**
+ * Use always brief tag in auto-generation of doxygen comment
+ *
+ */
+ boolean useBriefTags();
+
+ /**
+ * Use always structured commands in auto-generation of doxygen comment
+ *
+ */
+ boolean useStructuralCommands();
+
+ /**
+ * Use always javadoc tag style in auto-generation of doxygen comment
+ *
+ */
+ boolean useJavadocStyle();
+
+ /**
+ * Use always a new line after brief tag in auto-generation of doxygen comment
+ *
+ */
+ boolean newLineAfterBrief();
+
+ /**
+ * Use always pre/post tags in auto-generation of doxygen comment
+ *
+ */
+ boolean usePrePostTag();
+
+}
diff --git a/core/org.eclipse.cdt.core/doxygen/org/eclipse/cdt/doxygen/core/DoxygenConfiguration.java b/core/org.eclipse.cdt.core/doxygen/org/eclipse/cdt/doxygen/core/DoxygenConfiguration.java
new file mode 100644
index 00000000000..973bc40ee9b
--- /dev/null
+++ b/core/org.eclipse.cdt.core/doxygen/org/eclipse/cdt/doxygen/core/DoxygenConfiguration.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2020 ArSysOp and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov <alexander.fedorov@arsysop.ru> - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.doxygen.core;
+
+import org.eclipse.cdt.doxygen.DoxygenOptions;
+import org.eclipse.core.resources.IProject;
+
+/**
+ * Provides access to the doxygen options according to the required preference scope
+ *
+ */
+public interface DoxygenConfiguration {
+
+ /**
+ * Returns the doxygen options for the workspace scope, must not return <code>null</code>
+ *
+ * @return doxygen options for the workspace scope
+ */
+ DoxygenOptions workspaceOptions();
+
+ /**
+ * Returns the doxygen options for the given project scope, must not return <code>null</code>
+ *
+ * @param project scope for doxygen options, must not be <code>null</code>
+ * @return doxygen options for the given project scope
+ */
+ DoxygenOptions projectOptions(IProject project);
+
+}
diff --git a/core/org.eclipse.cdt.core/doxygen/org/eclipse/cdt/doxygen/core/DoxygenPreferences.java b/core/org.eclipse.cdt.core/doxygen/org/eclipse/cdt/doxygen/core/DoxygenPreferences.java
new file mode 100644
index 00000000000..72a0960ec83
--- /dev/null
+++ b/core/org.eclipse.cdt.core/doxygen/org/eclipse/cdt/doxygen/core/DoxygenPreferences.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 2020 ArSysOp and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov <alexander.fedorov@arsysop.ru> - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.doxygen.core;
+
+import org.eclipse.cdt.doxygen.DoxygenMetadata;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.preferences.IPreferenceMetadataStore;
+
+public interface DoxygenPreferences {
+
+ /**
+ * Returns the workspace storage for doxygen options to be used in UI, must not return <code>null</code>
+ *
+ * @return the workspace storage for doxygen options
+ */
+ IPreferenceMetadataStore workspaceStorage();
+
+ /**
+ * Returns the project-specific storage for doxygen options to be used in UI, must not return <code>null</code>
+ *
+ * @param project scope for the storage, must not be <code>null</code>
+ * @return the project-specific storage for doxygen options
+ */
+ IPreferenceMetadataStore projectStorage(IProject project);
+
+ /**
+ * Return the metadata for the options to be used in UI, must not return <code>null</code>
+ *
+ * @return the doxygen option metadata
+ */
+ DoxygenMetadata metadata();
+
+}
diff --git a/core/org.eclipse.cdt.core/doxygen/org/eclipse/cdt/doxygen/internal/core/DoxygenCoreMessages.java b/core/org.eclipse.cdt.core/doxygen/org/eclipse/cdt/doxygen/internal/core/DoxygenCoreMessages.java
new file mode 100644
index 00000000000..9f95639da72
--- /dev/null
+++ b/core/org.eclipse.cdt.core/doxygen/org/eclipse/cdt/doxygen/internal/core/DoxygenCoreMessages.java
@@ -0,0 +1,39 @@
+/*******************************************************************************
+ * Copyright (c) 2020 ArSysOp and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov <alexander.fedorov@arsysop.ru> - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.doxygen.internal.core;
+
+import org.eclipse.osgi.util.NLS;
+
+public class DoxygenCoreMessages extends NLS {
+ private static final String BUNDLE_NAME = "org.eclipse.cdt.doxygen.internal.core.DoxygenCoreMessages"; //$NON-NLS-1$
+ public static String DoxygenMetadataDefaults_new_line_after_brief_description;
+ public static String DoxygenMetadataDefaults_new_line_after_brief_name;
+ public static String DoxygenMetadataDefaults_use_brief_tag_description;
+ public static String DoxygenMetadataDefaults_use_brief_tag_name;
+ public static String DoxygenMetadataDefaults_use_javadoc_style_description;
+ public static String DoxygenMetadataDefaults_use_javadoc_style_name;
+ public static String DoxygenMetadataDefaults_use_pre_post_tags_description;
+ public static String DoxygenMetadataDefaults_use_pre_post_tags_name;
+ public static String DoxygenMetadataDefaults_use_structured_commands_description;
+ public static String DoxygenMetadataDefaults_use_structured_commands_name;
+ public static String DoxygenPreferenceAccess_e_get_preferences;
+ public static String DoxygenPreferenceAccess_e_null_project;
+ static {
+ // initialize resource bundle
+ NLS.initializeMessages(BUNDLE_NAME, DoxygenCoreMessages.class);
+ }
+
+ private DoxygenCoreMessages() {
+ }
+}
diff --git a/core/org.eclipse.cdt.core/doxygen/org/eclipse/cdt/doxygen/internal/core/DoxygenCoreMessages.properties b/core/org.eclipse.cdt.core/doxygen/org/eclipse/cdt/doxygen/internal/core/DoxygenCoreMessages.properties
new file mode 100644
index 00000000000..6fdffffc9cc
--- /dev/null
+++ b/core/org.eclipse.cdt.core/doxygen/org/eclipse/cdt/doxygen/internal/core/DoxygenCoreMessages.properties
@@ -0,0 +1,26 @@
+###############################################################################
+# Copyright (c) 2020 ArSysOp and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Alexander Fedorov <alexander.fedorov@arsysop.ru> - Initial API and implementation
+###############################################################################
+
+DoxygenMetadataDefaults_new_line_after_brief_description=Use always a new line after brief tag in auto-generation of doxygen comment
+DoxygenMetadataDefaults_new_line_after_brief_name=Add new line after brief tag
+DoxygenMetadataDefaults_use_brief_tag_description=Use always brief tag in auto-generation of doxygen comment
+DoxygenMetadataDefaults_use_brief_tag_name=Use brief tag
+DoxygenMetadataDefaults_use_javadoc_style_description=Use always javadoc tag style in auto-generation of doxygen comment
+DoxygenMetadataDefaults_use_javadoc_style_name=Use javadoc style for tags
+DoxygenMetadataDefaults_use_pre_post_tags_description=Use always pre/post tags in auto-generation of doxygen comment
+DoxygenMetadataDefaults_use_pre_post_tags_name=Add pre/post tags to functions
+DoxygenMetadataDefaults_use_structured_commands_description=Use always structured commands in auto-generation of doxygen comment
+DoxygenMetadataDefaults_use_structured_commands_name=Use structural commands
+DoxygenPreferenceAccess_e_get_preferences=Unable to get preferences for node: {0}.{1}
+DoxygenPreferenceAccess_e_null_project=Project must not be null
diff --git a/core/org.eclipse.cdt.core/doxygen/org/eclipse/cdt/doxygen/internal/core/DoxygenMetadataDefaults.java b/core/org.eclipse.cdt.core/doxygen/org/eclipse/cdt/doxygen/internal/core/DoxygenMetadataDefaults.java
new file mode 100644
index 00000000000..aab27de53d7
--- /dev/null
+++ b/core/org.eclipse.cdt.core/doxygen/org/eclipse/cdt/doxygen/internal/core/DoxygenMetadataDefaults.java
@@ -0,0 +1,85 @@
+/*******************************************************************************
+ * Copyright (c) 2020 ArSysOp and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov <alexander.fedorov@arsysop.ru> - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.doxygen.internal.core;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.cdt.doxygen.DoxygenMetadata;
+import org.eclipse.core.runtime.preferences.PreferenceMetadata;
+
+final class DoxygenMetadataDefaults implements DoxygenMetadata {
+
+ private final PreferenceMetadata<Boolean> useBriefTagOption;
+ private final PreferenceMetadata<Boolean> useStructuralCommandsOption;
+ private final PreferenceMetadata<Boolean> useJavadocStyleOption;
+ private final PreferenceMetadata<Boolean> newLineAfterBriefOption;
+ private final PreferenceMetadata<Boolean> usePrePostTagOption;
+ private final List<PreferenceMetadata<Boolean>> booleanOptions;
+
+ public DoxygenMetadataDefaults() {
+ this.useBriefTagOption = new PreferenceMetadata<>(Boolean.class, "doxygen_use_brief_tag", false, //$NON-NLS-1$
+ DoxygenCoreMessages.DoxygenMetadataDefaults_use_brief_tag_name,
+ DoxygenCoreMessages.DoxygenMetadataDefaults_use_brief_tag_description);
+ this.useStructuralCommandsOption = new PreferenceMetadata<>(Boolean.class, "doxygen_use_structural_commands", //$NON-NLS-1$
+ false, DoxygenCoreMessages.DoxygenMetadataDefaults_use_structured_commands_name,
+ DoxygenCoreMessages.DoxygenMetadataDefaults_use_structured_commands_description);
+ this.useJavadocStyleOption = new PreferenceMetadata<>(Boolean.class, "doxygen_use_javadoc_tags", true, //$NON-NLS-1$
+ DoxygenCoreMessages.DoxygenMetadataDefaults_use_javadoc_style_name,
+ DoxygenCoreMessages.DoxygenMetadataDefaults_use_javadoc_style_description);
+ this.newLineAfterBriefOption = new PreferenceMetadata<>(Boolean.class, "doxygen_new_line_after_brief", true, //$NON-NLS-1$
+ DoxygenCoreMessages.DoxygenMetadataDefaults_new_line_after_brief_name,
+ DoxygenCoreMessages.DoxygenMetadataDefaults_new_line_after_brief_description);
+ this.usePrePostTagOption = new PreferenceMetadata<>(Boolean.class, "doxygen_use_pre_tag", false, //$NON-NLS-1$
+ DoxygenCoreMessages.DoxygenMetadataDefaults_use_pre_post_tags_name,
+ DoxygenCoreMessages.DoxygenMetadataDefaults_use_pre_post_tags_description);
+ this.booleanOptions = new ArrayList<>();
+ booleanOptions.add(useBriefTagOption);
+ booleanOptions.add(useStructuralCommandsOption);
+ booleanOptions.add(useJavadocStyleOption);
+ booleanOptions.add(newLineAfterBriefOption);
+ booleanOptions.add(usePrePostTagOption);
+ }
+
+ @Override
+ public PreferenceMetadata<Boolean> useBriefTagOption() {
+ return useBriefTagOption;
+ }
+
+ @Override
+ public PreferenceMetadata<Boolean> useStructuralCommandsOption() {
+ return useStructuralCommandsOption;
+ }
+
+ @Override
+ public PreferenceMetadata<Boolean> useJavadocStyleOption() {
+ return useJavadocStyleOption;
+ }
+
+ @Override
+ public PreferenceMetadata<Boolean> newLineAfterBriefOption() {
+ return newLineAfterBriefOption;
+ }
+
+ @Override
+ public PreferenceMetadata<Boolean> usePrePostTagOption() {
+ return usePrePostTagOption;
+ }
+
+ @Override
+ public List<PreferenceMetadata<Boolean>> booleanOptions() {
+ return new ArrayList<>(booleanOptions);
+ }
+
+}
diff --git a/core/org.eclipse.cdt.core/doxygen/org/eclipse/cdt/doxygen/internal/core/DoxygenOptionsAccess.java b/core/org.eclipse.cdt.core/doxygen/org/eclipse/cdt/doxygen/internal/core/DoxygenOptionsAccess.java
new file mode 100644
index 00000000000..66d0fc5de50
--- /dev/null
+++ b/core/org.eclipse.cdt.core/doxygen/org/eclipse/cdt/doxygen/internal/core/DoxygenOptionsAccess.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 2020 ArSysOp and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov <alexander.fedorov@arsysop.ru> - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.doxygen.internal.core;
+
+import org.eclipse.cdt.doxygen.DoxygenMetadata;
+import org.eclipse.cdt.doxygen.DoxygenOptions;
+import org.eclipse.core.runtime.preferences.IPreferenceMetadataStore;
+
+final class DoxygenOptionsAccess implements DoxygenOptions {
+
+ private final IPreferenceMetadataStore optionStorage;
+ private final DoxygenMetadata doxygenMetadata;
+
+ public DoxygenOptionsAccess(IPreferenceMetadataStore optionStorage, DoxygenMetadata doxygenMetadata) {
+ this.optionStorage = optionStorage;
+ this.doxygenMetadata = doxygenMetadata;
+ }
+
+ @Override
+ public boolean useBriefTags() {
+ return optionStorage.load(doxygenMetadata.useBriefTagOption());
+ }
+
+ @Override
+ public boolean useStructuralCommands() {
+ return optionStorage.load(doxygenMetadata.useStructuralCommandsOption());
+ }
+
+ @Override
+ public boolean useJavadocStyle() {
+ return optionStorage.load(doxygenMetadata.useJavadocStyleOption());
+ }
+
+ @Override
+ public boolean newLineAfterBrief() {
+ return optionStorage.load(doxygenMetadata.newLineAfterBriefOption());
+ }
+
+ @Override
+ public boolean usePrePostTag() {
+ return optionStorage.load(doxygenMetadata.usePrePostTagOption());
+ }
+
+}
diff --git a/core/org.eclipse.cdt.core/doxygen/org/eclipse/cdt/doxygen/internal/core/DoxygenPreferenceAccess.java b/core/org.eclipse.cdt.core/doxygen/org/eclipse/cdt/doxygen/internal/core/DoxygenPreferenceAccess.java
new file mode 100644
index 00000000000..9dfa9597d73
--- /dev/null
+++ b/core/org.eclipse.cdt.core/doxygen/org/eclipse/cdt/doxygen/internal/core/DoxygenPreferenceAccess.java
@@ -0,0 +1,87 @@
+/*******************************************************************************
+ * Copyright (c) 2020 ArSysOp and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov <alexander.fedorov@arsysop.ru> - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.doxygen.internal.core;
+
+import java.util.Objects;
+import java.util.Optional;
+
+import org.eclipse.cdt.core.CCorePlugin;
+import org.eclipse.cdt.doxygen.DoxygenMetadata;
+import org.eclipse.cdt.doxygen.DoxygenOptions;
+import org.eclipse.cdt.doxygen.core.DoxygenConfiguration;
+import org.eclipse.cdt.doxygen.core.DoxygenPreferences;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.ProjectScope;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences;
+import org.eclipse.core.runtime.preferences.IPreferenceMetadataStore;
+import org.eclipse.core.runtime.preferences.IScopeContext;
+import org.eclipse.core.runtime.preferences.InstanceScope;
+import org.eclipse.core.runtime.preferences.OsgiPreferenceMetadataStore;
+import org.eclipse.osgi.util.NLS;
+import org.osgi.service.component.annotations.Component;
+
+@Component
+public class DoxygenPreferenceAccess implements DoxygenConfiguration, DoxygenPreferences {
+
+ private final DoxygenMetadata doxygenMetadata;
+
+ public DoxygenPreferenceAccess() {
+ this.doxygenMetadata = new DoxygenMetadataDefaults();
+ }
+
+ @Override
+ public IPreferenceMetadataStore workspaceStorage() {
+ return new OsgiPreferenceMetadataStore(preferences(InstanceScope.INSTANCE));
+ }
+
+ @Override
+ public IPreferenceMetadataStore projectStorage(IProject project) {
+ Objects.requireNonNull(DoxygenCoreMessages.DoxygenPreferenceAccess_e_null_project);
+ return new OsgiPreferenceMetadataStore(preferences(new ProjectScope(project)));
+ }
+
+ @Override
+ public DoxygenMetadata metadata() {
+ return doxygenMetadata;
+ }
+
+ @Override
+ public DoxygenOptions workspaceOptions() {
+ return new DoxygenOptionsAccess(workspaceStorage(), doxygenMetadata);
+ }
+
+ @Override
+ public DoxygenOptions projectOptions(IProject project) {
+ Objects.requireNonNull(DoxygenCoreMessages.DoxygenPreferenceAccess_e_null_project);
+ return new DoxygenOptionsAccess(projectStorage(project), doxygenMetadata);
+ }
+
+ private IEclipsePreferences preferences(IScopeContext scope) {
+ return Optional.ofNullable(scope.getNode(nodeQualifier()))//
+ .map(n -> n.node(nodePath()))//
+ .filter(IEclipsePreferences.class::isInstance)//
+ .map(IEclipsePreferences.class::cast)//
+ .orElseThrow(() -> new IllegalStateException(//
+ NLS.bind(DoxygenCoreMessages.DoxygenPreferenceAccess_e_get_preferences, //
+ nodeQualifier(), nodePath())));
+ }
+
+ private String nodeQualifier() {
+ return CCorePlugin.PLUGIN_ID;
+ }
+
+ private String nodePath() {
+ return "doxygen"; //$NON-NLS-1$
+ }
+}
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/language/settings/providers/LanguageSettingsManager.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/language/settings/providers/LanguageSettingsManager.java
index 2fc760c77ad..2d75d6c975d 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/language/settings/providers/LanguageSettingsManager.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/language/settings/providers/LanguageSettingsManager.java
@@ -48,7 +48,7 @@ public class LanguageSettingsManager {
* for the given configuration description, resource and language. This is a
* combined list for all providers taking into account settings of parent folder
* if settings for the given resource are not defined. For include paths both
- * local (#include "...") and system (#include <...>) entries are returned.
+ * local (#include "...") and system (#include &lt;...&gt;) entries are returned.
*
* @param cfgDescription - configuration description.
* @param rc - resource such as file or folder.
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/language/settings/providers/LanguageSettingsSerializableProvider.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/language/settings/providers/LanguageSettingsSerializableProvider.java
index a11e4a7903e..bcd849b1074 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/language/settings/providers/LanguageSettingsSerializableProvider.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/language/settings/providers/LanguageSettingsSerializableProvider.java
@@ -165,7 +165,7 @@ public class LanguageSettingsSerializableProvider extends LanguageSettingsBasePr
* {@link #setSettingEntries(ICConfigurationDescription, IResource, String, List)}.
* <br><br>
* Note also that <b>you can compare these lists with simple equality operator ==</b>,
- * as the lists themselves are backed by WeakHashSet<List<ICLanguageSettingEntry>> where
+ * as the lists themselves are backed by WeakHashSet&lt;List&lt;ICLanguageSettingEntry&gt;&gt; where
* identical copies (deep comparison is used) are replaced with the same one instance.
*/
@Override
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/CoreModel.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/CoreModel.java
index 90630584253..34fc11b7b75 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/CoreModel.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/CoreModel.java
@@ -1424,10 +1424,10 @@ public class CoreModel {
*
* Each getProjectDescription(project, true) returns a new copy of the project description
*
- * The writable description uses the cached data untill the first set call
+ * The writable description uses the cached data until the first set call
* after that the description communicates directly to the Build System
* i.e. the implementer of the org.eclipse.cdt.core.CConfigurationDataProvider extension
- * This ensures the Core<->Build System settings integrity
+ * This ensures the Core&lt;-&gt;Build System settings integrity
*
* @return {@link ICProjectDescription} or null if the project does not contain the
* CDT data associated with it.
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/ICElement.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/ICElement.java
index 28034b42238..c4e069976ec 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/ICElement.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/ICElement.java
@@ -244,6 +244,12 @@ public interface ICElement extends IAdaptable {
static final int ASM_LABEL = 94;
/**
+ * A pragma statement.
+ * @since 7.3
+ */
+ static final int C_PRAGMA = 95;
+
+ /**
* @deprecated use {@link IMethodDeclaration#isConstructor()}
* @noreference This field is not intended to be referenced by clients.
*/
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/ICElementVisitor.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/ICElementVisitor.java
index c4632bc3a07..0542f575591 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/ICElementVisitor.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/ICElementVisitor.java
@@ -26,4 +26,10 @@ public interface ICElementVisitor {
*/
public boolean visit(ICElement element) throws CoreException;
+ /**
+ * Called when leaving a member in the ICElement tree.
+ * @since 7.0
+ */
+ public default void leave(ICElement element) throws CoreException {
+ }
}
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/ILanguage.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/ILanguage.java
index 35d0131cf83..f186372e107 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/ILanguage.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/ILanguage.java
@@ -44,7 +44,7 @@ public interface ILanguage extends IAdaptable {
public final static int OPTION_SKIP_FUNCTION_BODIES = 0x1;
/**
- * @deprecated, Has no effect.
+ * @deprecated Has no effect.
* @noreference This field is not intended to be referenced by clients.
*/
@Deprecated
@@ -58,7 +58,7 @@ public interface ILanguage extends IAdaptable {
public final static int OPTION_NO_IMAGE_LOCATIONS = 0x4;
/**
- * @deprecated, Has no effect.
+ * @deprecated Has no effect.
*/
@Deprecated
public final static int OPTION_IS_SOURCE_UNIT = 0x8;
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/IPathEntryContainerExtension.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/IPathEntryContainerExtension.java
index 8ade9f05ecb..bc096b89283 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/IPathEntryContainerExtension.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/IPathEntryContainerExtension.java
@@ -27,11 +27,11 @@ public interface IPathEntryContainerExtension extends IPathEntryContainer {
* and empty array if none.
*
* @param path Workspace relative path.
- * @param typeMask type of path entries:
+ * @param typesMask type of path entries:<ul>
* <li><code>IPathEntry.CDT_INCLUDE</code></li>
* <li><code>IPathEntry.CDT_INCLUDE_FILE</code></li>
* <li><code>IPathEntry.CDT_MACRO_FILE</code></li>
- * <li><code>IPathEntry.CDT_MACRO</code></li>
+ * <li><code>IPathEntry.CDT_MACRO</code></li></ul>
* @return IPathEntry[] - the entries or empty set if none
* @see IPathEntry
*/
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/IPragma.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/IPragma.java
new file mode 100644
index 00000000000..334f9ed971e
--- /dev/null
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/IPragma.java
@@ -0,0 +1,54 @@
+/*******************************************************************************
+ * Copyright (c) 2021 Kichwa Coders Canada Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.core.model;
+
+import java.util.Optional;
+
+/**
+ * Represents a pragma statement.
+ *
+ * @noextend This interface is not intended to be extended by clients.
+ * @noimplement This interface is not intended to be implemented by clients.
+ * @since 7.3
+ */
+public interface IPragma extends ICElement, ISourceManipulation, ISourceReference {
+
+ public interface PragmaMarkInfo {
+ /**
+ * Whether the pragma indicates a divider before it.
+ */
+ public boolean isDividerBeforeMark();
+
+ /**
+ * Whether the pragma indicates a divider after it.
+ */
+ public boolean isDividerAfterMark();
+
+ /**
+ * The display string of the mark.
+ */
+ public String getMarkName();
+ }
+
+ /**
+ * Returns whether this uses the pragma operator syntax, e.g: <code>_Pragma("once")</code>
+ * @since 5.2
+ */
+ public boolean isPragmaOperator();
+
+ /**
+ * Returns the PragmaMarkInfo if the pragma represents a <code>#pragma mark</code> or similar pragma
+ * that should be interpreted as such.
+ * @return {@link Optional} of the {@link PragmaMarkInfo}
+ */
+ Optional<PragmaMarkInfo> getPragmaMarkInfo();
+}
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/ITranslationUnit.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/ITranslationUnit.java
index e10e053ec14..e36825a75c0 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/ITranslationUnit.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/ITranslationUnit.java
@@ -169,7 +169,7 @@ public interface ITranslationUnit extends ICElement, IParent, IOpenable, ISource
/**
* Creates and returns a namespace in this translation unit
*
- * @param name the name of the namespace
+ * @param namespace the name of the namespace
* @param monitor the progress monitor to notify
* @return the newly inserted namespace declaration (or the previously existing one in case
* attempting to create a duplicate)
@@ -189,8 +189,6 @@ public interface ITranslationUnit extends ICElement, IParent, IOpenable, ISource
* <p>
* Users of this method must not destroy the resulting working copy.
*
- * @param bufferFactory
- * the given {@code IBuffer} factory
* @return the found shared working copy for this element, or {@code null} if none
* @see IBufferFactory
* @since 5.1
@@ -225,7 +223,7 @@ public interface ITranslationUnit extends ICElement, IParent, IOpenable, ISource
* unit itself at the given position, or if the given position is not
* within the source range of this translation unit.
*
- * @param position a source position inside the translation unit
+ * @param offset a source position inside the translation unit
* @return the innermost C element enclosing a given source position or {@code null}
* if none (excluding the translation unit).
* @exception CModelException if the translation unit does not exist or if an
@@ -241,7 +239,7 @@ public interface ITranslationUnit extends ICElement, IParent, IOpenable, ISource
* within the source range of this translation unit.
* You have this behavior when at expansion of a macro.
*
- * @param position a source position inside the translation unit
+ * @param offset a source position inside the translation unit
* @return the innermost C element enclosing a given source position or {@code null}
* if none (excluding the translation unit).
* @exception CModelException if the translation unit does not exist or if an
@@ -254,7 +252,7 @@ public interface ITranslationUnit extends ICElement, IParent, IOpenable, ISource
/**
* Returns the include declaration in this translation unit with the given name.
*
- * @param the name of the include to find (For example: {@code "stdio.h"}
+ * @param name the name of the include to find (For example: {@code "stdio.h"}
* or {@code "sys/types.h"})
* @return a handle onto the corresponding include declaration. The include declaration may or
* may not exist.
@@ -519,7 +517,7 @@ public interface ITranslationUnit extends ICElement, IParent, IOpenable, ISource
Map<?, ?> parse();
/**
- * @deprecated, use {@link FileContent#create(ITranslationUnit)}, instead.
+ * @deprecated Use {@link FileContent#create(ITranslationUnit)}, instead.
* @noreference This method is not intended to be referenced by clients.
*/
@Deprecated
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/IWorkingCopy.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/IWorkingCopy.java
index 25bdeae4e86..e58fac9fc6b 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/IWorkingCopy.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/IWorkingCopy.java
@@ -130,7 +130,7 @@ public interface IWorkingCopy extends ITranslationUnit {
* @param forceProblemDetection The boolean argument allows to force problem
* detection even if the working copy is already consistent.
* @param monitor a progress monitor
- * @throw CModelException if the contents of the original element
+ * @throws CModelException if the contents of the original element
* cannot be accessed
*/
void reconcile(boolean forceProblemDetection, IProgressMonitor monitor) throws CModelException;
@@ -157,7 +157,7 @@ public interface IWorkingCopy extends ITranslationUnit {
* detection even if the working copy is already consistent.
* @param monitor a progress monitor
* @return the AST or <code>null</code>
- * @throw CModelException if the contents of the original element
+ * @throws CModelException if the contents of the original element
* cannot be accessed
*
* @since 4.0
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/LanguageMappingChangeEvent.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/LanguageMappingChangeEvent.java
index 00b75f1a0f9..0ef48be46ce 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/LanguageMappingChangeEvent.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/LanguageMappingChangeEvent.java
@@ -35,25 +35,16 @@ public class LanguageMappingChangeEvent implements ILanguageMappingChangeEvent {
private String fFileName;
private IContentType[] fContentTypes;
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.ILanguageMappingsChangeEvent#getAffectedContentTypes()
- */
@Override
public IContentType[] getAffectedContentTypes() {
return fContentTypes;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.ILanguageMappingsChangeEvent#getFile()
- */
@Override
public IFile getFile() {
return fFile;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.ILanguageMappingsChangeEvent#getFilename()
- */
@Override
public String getFilename() {
@@ -85,9 +76,6 @@ public class LanguageMappingChangeEvent implements ILanguageMappingChangeEvent {
return null;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.ILanguageMappingsChangeEvent#getPath()
- */
@Override
public IPath getPath() {
@@ -104,9 +92,6 @@ public class LanguageMappingChangeEvent implements ILanguageMappingChangeEvent {
return null;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.ILanguageMappingsChangeEvent#getProject()
- */
@Override
public IProject getProject() {
@@ -123,9 +108,6 @@ public class LanguageMappingChangeEvent implements ILanguageMappingChangeEvent {
return null;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.ILanguageMappingsChangeEvent#getType()
- */
@Override
public int getType() {
return fType;
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/CLibraryFileEntry.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/CLibraryFileEntry.java
index 07b39d8700f..aa1657d5815 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/CLibraryFileEntry.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/CLibraryFileEntry.java
@@ -13,7 +13,8 @@
*******************************************************************************/
package org.eclipse.cdt.core.settings.model;
-import org.eclipse.cdt.core.settings.model.util.CDataUtil;
+import java.util.Objects;
+
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
@@ -156,11 +157,11 @@ public final class CLibraryFileEntry extends ACPathEntry implements ICLibraryFil
}
private boolean sourceAttachmentSettingsEqual(CLibraryFileEntry otherEntry) {
- if (!CDataUtil.objectsEqual(fSourceAttachmentPath, otherEntry.fSourceAttachmentPath))
+ if (!Objects.equals(fSourceAttachmentPath, otherEntry.fSourceAttachmentPath))
return false;
- if (!CDataUtil.objectsEqual(fSourceAttachmentRootPath, otherEntry.fSourceAttachmentRootPath))
+ if (!Objects.equals(fSourceAttachmentRootPath, otherEntry.fSourceAttachmentRootPath))
return false;
- if (!CDataUtil.objectsEqual(fSourceAttachmentPrefixMapping, otherEntry.fSourceAttachmentPrefixMapping))
+ if (!Objects.equals(fSourceAttachmentPrefixMapping, otherEntry.fSourceAttachmentPrefixMapping))
return false;
return true;
}
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/ICConfigurationDescription.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/ICConfigurationDescription.java
index 8b874b914be..ffb3a87215f 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/ICConfigurationDescription.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/ICConfigurationDescription.java
@@ -234,10 +234,10 @@ public interface ICConfigurationDescription extends ICSettingContainer, ICSettin
* If the current configuration does not reference any other configurations,
* an empty map is returned.
*
- * @return Map<String,String> of referenced Project -> Configuration ID
- * @see {@link #setReferenceInfo(Map)} <br/>
- * {@link #getExternalSettings()}<br/>
- * {@link #createExternalSetting(String[], String[], String[], ICSettingEntry[])}
+ * @return Map&lt;String,String&gt; of referenced Project -&gt; Configuration ID
+ * @see #setReferenceInfo(Map)
+ * @see #getExternalSettings()
+ * @see #createExternalSetting(String[], String[], String[], ICSettingEntry[])
*/
Map<String, String> getReferenceInfo();
@@ -250,7 +250,7 @@ public interface ICConfigurationDescription extends ICSettingContainer, ICSettin
* The empty string is a special configuration value which indicates the reference
* tracks the Active configuration in the referenced Project.
*
- * @param refs Map of project name -> configuration ID of referenced configurations
+ * @param refs Map of project name -&gt; configuration ID of referenced configurations
* @throws WriteAccessException when the configuration description is read-only
* see {@link CoreModel#getProjectDescription(org.eclipse.core.resources.IProject, boolean)}
* @see {@link #getReferenceInfo()} <br/>
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/ICMacroEntry.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/ICMacroEntry.java
index 0f133910011..ff1bafd44dd 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/ICMacroEntry.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/ICMacroEntry.java
@@ -19,9 +19,6 @@ package org.eclipse.cdt.core.settings.model;
* See {@link ICSettingEntry#MACRO}.
*/
public interface ICMacroEntry extends ICLanguageSettingEntry {
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICSettingEntry#getValue()
- */
@Override
String getValue();
}
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/ICProjectDescriptionManager.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/ICProjectDescriptionManager.java
index 17c382f5f70..a7ca68e58bc 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/ICProjectDescriptionManager.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/ICProjectDescriptionManager.java
@@ -176,7 +176,7 @@ public interface ICProjectDescriptionManager {
* The writable description uses the cached data until the first set call
* after that the description communicates directly to the Build System
* i.e. the implementer of the org.eclipse.cdt.core.CConfigurationDataProvider extension
- * This ensures the Core<->Build System settings integrity
+ * This ensures the Core&lt;-&gt;Build System settings integrity
*
* @return {@link ICProjectDescription} or null if the project does not contain the
* CDT data associated with it.
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/ICSettingEntry.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/ICSettingEntry.java
index db7eda528ea..8836a863fd8 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/ICSettingEntry.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/ICSettingEntry.java
@@ -47,7 +47,7 @@ public interface ICSettingEntry {
/**
* Flag {@code LOCAL} is used during creation of {@link IIncludeEntry}
* to indicate that an include path is not a system path.
- * "System" path is denoted by angle brackets as in #include <x.h>
+ * "System" path is denoted by angle brackets as in #include &lt;x.h&gt;
* "Local" path is denoted by quotes as in #include "x.h"
*/
int LOCAL = 1 << 2;
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/ICSettingsStorage.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/ICSettingsStorage.java
index d95c9e48ba0..6726e19b209 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/ICSettingsStorage.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/ICSettingsStorage.java
@@ -56,7 +56,7 @@ public interface ICSettingsStorage {
* the specified id an empty storage is created and returned
* @throws CoreException
*
- * @see {@link ICStorageElement}
+ * @see ICStorageElement
*/
ICStorageElement getStorage(String id, boolean create) throws CoreException;
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/MultiItemsHolder.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/MultiItemsHolder.java
index 9909cc85e85..e453ebbfc7c 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/MultiItemsHolder.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/MultiItemsHolder.java
@@ -25,15 +25,9 @@ public abstract class MultiItemsHolder implements ICMultiItemsHolder {
/** @since 5.2 */
protected static final boolean DEBUG = false;
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICMultiItemsHolder#getItems()
- */
@Override
public abstract Object[] getItems();
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICMultiItemsHolder#setStringListMode(int)
- */
/**
* This method is put here to prevent UI from
* accessing constructors in "internal" dirs.
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/MultiLanguageSetting.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/MultiLanguageSetting.java
index f5b7a35b455..b44570e52fa 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/MultiLanguageSetting.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/MultiLanguageSetting.java
@@ -29,17 +29,11 @@ public class MultiLanguageSetting extends MultiItemsHolder implements ICLanguage
cfgd = cf;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICLanguageSetting#getLanguageId()
- */
@Override
public String getLanguageId() {
return items[0].getLanguageId(); // Assuming language is the same.
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICLanguageSetting#getSettingEntries(int)
- */
public ICLanguageSettingEntry[][] getSettingEntriesM(int kind) {
ICLanguageSettingEntry[][] le = new ICLanguageSettingEntry[items.length][];
for (int i = 0; i < items.length; i++)
@@ -48,17 +42,11 @@ public class MultiLanguageSetting extends MultiItemsHolder implements ICLanguage
// return conv2LSE(getListForDisplay(le, comp));
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICLanguageSetting#getSettingEntriesList(int)
- */
@Override
public List<ICLanguageSettingEntry> getSettingEntriesList(int kind) {
return Arrays.asList(getSettingEntries(kind));
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICLanguageSetting#getSourceContentTypeIds()
- */
public String[][] getSourceContentTypeIdsM() {
String[][] ss = new String[items.length][];
for (int i = 0; i < items.length; i++)
@@ -66,9 +54,6 @@ public class MultiLanguageSetting extends MultiItemsHolder implements ICLanguage
return ss;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICLanguageSetting#getSourceExtensions()
- */
public String[][] getSourceExtensionsM() {
String[][] ss = new String[items.length][];
for (int i = 0; i < items.length; i++)
@@ -76,9 +61,6 @@ public class MultiLanguageSetting extends MultiItemsHolder implements ICLanguage
return ss;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICLanguageSetting#getSupportedEntryKinds()
- */
@Override
public int getSupportedEntryKinds() {
int res = 0;
@@ -87,52 +69,34 @@ public class MultiLanguageSetting extends MultiItemsHolder implements ICLanguage
return res;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICLanguageSetting#setLanguageId(java.lang.String)
- */
@Override
public void setLanguageId(String id) {
} // Do nothing
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICLanguageSetting#setSettingEntries(int, org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry[])
- */
@Override
public void setSettingEntries(int kind, ICLanguageSettingEntry[] entries) {
for (ICLanguageSetting item : items)
item.setSettingEntries(kind, entries);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICLanguageSetting#setSettingEntries(int, java.util.List)
- */
@Override
public void setSettingEntries(int kind, List<ICLanguageSettingEntry> entriesList) {
for (ICLanguageSetting item : items)
item.setSettingEntries(kind, entriesList);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICLanguageSetting#setSourceContentTypeIds(java.lang.String[])
- */
@Override
public void setSourceContentTypeIds(String[] ids) {
for (ICLanguageSetting item : items)
item.setSourceContentTypeIds(ids);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICLanguageSetting#setSourceExtensions(java.lang.String[])
- */
@Override
public void setSourceExtensions(String[] exts) {
for (ICLanguageSetting item : items)
item.setSourceExtensions(exts);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICLanguageSetting#supportsEntryKind(int)
- */
@Override
public boolean supportsEntryKind(int kind) {
for (ICLanguageSetting item : items)
@@ -141,9 +105,6 @@ public class MultiLanguageSetting extends MultiItemsHolder implements ICLanguage
return false;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICSettingObject#getConfiguration()
- */
@Override
public ICConfigurationDescription getConfiguration() {
if (DEBUG)
@@ -151,9 +112,6 @@ public class MultiLanguageSetting extends MultiItemsHolder implements ICLanguage
return null; // CFGs are different
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICSettingObject#getId()
- */
@Override
public String getId() { // IDs are different
if (DEBUG)
@@ -161,17 +119,11 @@ public class MultiLanguageSetting extends MultiItemsHolder implements ICLanguage
return null;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICSettingObject#getName()
- */
@Override
public String getName() { // names are proposed to be equal
return items[0].getName();
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICSettingObject#getParent()
- */
@Override
public ICSettingContainer getParent() {
if (DEBUG)
@@ -179,9 +131,6 @@ public class MultiLanguageSetting extends MultiItemsHolder implements ICLanguage
return null; // Parents are different
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICSettingObject#getType()
- */
@Override
public int getType() {
int x = items[0].getType();
@@ -191,9 +140,6 @@ public class MultiLanguageSetting extends MultiItemsHolder implements ICLanguage
return x;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICSettingObject#isReadOnly()
- */
@Override
public boolean isReadOnly() {
for (int i = 0; i < items.length; i++)
@@ -202,9 +148,6 @@ public class MultiLanguageSetting extends MultiItemsHolder implements ICLanguage
return true;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICSettingObject#isValid()
- */
@Override
public boolean isValid() {
for (int i = 0; i < items.length; i++)
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/extension/CConfigurationDataProvider.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/extension/CConfigurationDataProvider.java
index cee85a47d8f..eb57aaeacec 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/extension/CConfigurationDataProvider.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/extension/CConfigurationDataProvider.java
@@ -37,7 +37,7 @@ public abstract class CConfigurationDataProvider {
* The method can be called in following cases:
* <br>
* 1. Loading configuration from external data source such as .cproject.<br>
- * 2. Loading preference configuration defined in Preferences -> C/C++ -> New project Wizard -> Makefile Project.
+ * 2. Loading preference configuration defined in Preferences -&gt; C/C++ -&gt; New project Wizard -&gt; Makefile Project.
*
* @param cfgDescription - configuration description being loaded.
* @param monitor - progress monitor.
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/extension/impl/CDefaultBuildData.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/extension/impl/CDefaultBuildData.java
index 323e6fbe3a6..28825a568af 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/extension/impl/CDefaultBuildData.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/extension/impl/CDefaultBuildData.java
@@ -14,11 +14,11 @@
package org.eclipse.cdt.core.settings.model.extension.impl;
import java.util.Arrays;
+import java.util.Objects;
import org.eclipse.cdt.core.envvar.IEnvironmentContributor;
import org.eclipse.cdt.core.settings.model.ICOutputEntry;
import org.eclipse.cdt.core.settings.model.extension.CBuildData;
-import org.eclipse.cdt.core.settings.model.util.CDataUtil;
import org.eclipse.core.runtime.IPath;
public class CDefaultBuildData extends CBuildData {
@@ -80,7 +80,7 @@ public class CDefaultBuildData extends CBuildData {
@Override
public void setBuilderCWD(IPath path) {
- if (CDataUtil.objectsEqual(path, fCWD))
+ if (Objects.equals(path, fCWD))
return;
fCWD = path;
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/extension/impl/CDefaultConfigurationData.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/extension/impl/CDefaultConfigurationData.java
index 8fb734c174b..bf2a008801c 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/extension/impl/CDefaultConfigurationData.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/extension/impl/CDefaultConfigurationData.java
@@ -15,6 +15,7 @@ package org.eclipse.cdt.core.settings.model.extension.impl;
import java.util.Arrays;
import java.util.HashMap;
+import java.util.Objects;
import org.eclipse.cdt.core.cdtvariables.ICdtVariablesContributor;
import org.eclipse.cdt.core.settings.model.CConfigurationStatus;
@@ -27,7 +28,6 @@ import org.eclipse.cdt.core.settings.model.extension.CFolderData;
import org.eclipse.cdt.core.settings.model.extension.CLanguageData;
import org.eclipse.cdt.core.settings.model.extension.CResourceData;
import org.eclipse.cdt.core.settings.model.extension.CTargetPlatformData;
-import org.eclipse.cdt.core.settings.model.util.CDataUtil;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
@@ -192,7 +192,7 @@ public class CDefaultConfigurationData extends CConfigurationData {
@Override
public void setDescription(String description) {
- if (CDataUtil.objectsEqual(description, fDescription))
+ if (Objects.equals(description, fDescription))
return;
fDescription = description;
@@ -238,7 +238,7 @@ public class CDefaultConfigurationData extends CConfigurationData {
@Override
public void setName(String name) {
- if (CDataUtil.objectsEqual(name, fName))
+ if (Objects.equals(name, fName))
return;
fName = name;
setModified(true);
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/extension/impl/CDefaultFolderData.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/extension/impl/CDefaultFolderData.java
index 61949266b7d..2110508674f 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/extension/impl/CDefaultFolderData.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/extension/impl/CDefaultFolderData.java
@@ -15,11 +15,11 @@ package org.eclipse.cdt.core.settings.model.extension.impl;
import java.util.ArrayList;
import java.util.List;
+import java.util.Objects;
import org.eclipse.cdt.core.settings.model.extension.CConfigurationData;
import org.eclipse.cdt.core.settings.model.extension.CFolderData;
import org.eclipse.cdt.core.settings.model.extension.CLanguageData;
-import org.eclipse.cdt.core.settings.model.util.CDataUtil;
import org.eclipse.core.runtime.IPath;
public class CDefaultFolderData extends CFolderData {
@@ -92,7 +92,7 @@ public class CDefaultFolderData extends CFolderData {
@Override
public void setPath(IPath path) {
- if (CDataUtil.objectsEqual(path, fPath))
+ if (Objects.equals(path, fPath))
return;
fPath = path;
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/extension/impl/CDefaultLanguageData.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/extension/impl/CDefaultLanguageData.java
index 10c580e07a4..5b65e49faa9 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/extension/impl/CDefaultLanguageData.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/extension/impl/CDefaultLanguageData.java
@@ -14,6 +14,7 @@
package org.eclipse.cdt.core.settings.model.extension.impl;
import java.util.Arrays;
+import java.util.Objects;
import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry;
import org.eclipse.cdt.core.settings.model.extension.CLanguageData;
@@ -132,7 +133,7 @@ public class CDefaultLanguageData extends CLanguageData {
@Override
public void setLanguageId(String id) {
- if (CDataUtil.objectsEqual(id, fLanguageId))
+ if (Objects.equals(id, fLanguageId))
return;
fLanguageId = id;
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/util/CDataUtil.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/util/CDataUtil.java
index 80095771920..3b0722ba9cb 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/util/CDataUtil.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/util/CDataUtil.java
@@ -25,6 +25,7 @@ import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.Random;
import java.util.Set;
import java.util.StringTokenizer;
@@ -107,10 +108,12 @@ public class CDataUtil {
suffix;
}
+ /**
+ * @deprecated Use {@link Object#equals(Object)}
+ */
+ @Deprecated
public static boolean objectsEqual(Object o1, Object o2) {
- if (o1 == null)
- return o2 == null;
- return o1.equals(o2);
+ return Objects.equals(o1, o2);
}
public static String arrayToString(String[] array, String separator) {
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/util/ResourceChangeHandlerBase.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/util/ResourceChangeHandlerBase.java
index c8e110e1c15..f7e42140b09 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/util/ResourceChangeHandlerBase.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/util/ResourceChangeHandlerBase.java
@@ -135,11 +135,6 @@ public abstract class ResourceChangeHandlerBase implements IResourceChangeListen
}
/*
- * I R e s o u r c e C h a n g e L i s t e n e r
- */
-
- /* (non-Javadoc)
- *
* Handle the renaming and deletion of project resources
* This is necessary in order to update ResourceConfigurations and AdditionalInputs
*
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/language/settings/providers/LanguageSettingsProvidersSerializer.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/language/settings/providers/LanguageSettingsProvidersSerializer.java
index 02110ec446f..987de9f6f1b 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/language/settings/providers/LanguageSettingsProvidersSerializer.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/language/settings/providers/LanguageSettingsProvidersSerializer.java
@@ -40,7 +40,6 @@ import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry;
import org.eclipse.cdt.core.settings.model.ICProjectDescription;
import org.eclipse.cdt.core.settings.model.ICSettingEntry;
import org.eclipse.cdt.internal.core.XmlUtil;
-import org.eclipse.cdt.internal.core.model.Util;
import org.eclipse.cdt.internal.core.settings.model.CConfigurationSpecSettings;
import org.eclipse.cdt.internal.core.settings.model.IInternalCCfgInfo;
import org.eclipse.cdt.internal.core.settings.model.SettingsModelMessages;
@@ -588,11 +587,7 @@ public class LanguageSettingsProvidersSerializer {
try {
serializingLockWsp.acquire();
- String eol = Util.getLineSeparator(uriStoreWsp);
- if (eol == null) {
- eol = Util.getDefaultLineSeparator();
- }
- XmlUtil.serializeXml(doc, uriStoreWsp, eol);
+ XmlUtil.serializeXml(doc, uriStoreWsp);
// manufacture events while inside the lock
events = createLanguageSettingsChangeEvents(broadcastingWorkspaceProviders);
} finally {
@@ -902,7 +897,13 @@ public class LanguageSettingsProvidersSerializer {
fileStorePrj.delete(true, null);
}
} else {
- project.getWorkspace().validateEdit(new IFile[] { fileStorePrj }, IWorkspace.VALIDATE_PROMPT);
+ if (fileStorePrj.isReadOnly()) {
+ IStatus editStatus = project.getWorkspace().validateEdit(new IFile[] { fileStorePrj },
+ IWorkspace.VALIDATE_PROMPT);
+ if (!editStatus.isOK()) {
+ throw new CoreException(editStatus);
+ }
+ }
IContainer folder = fileStorePrj.getParent();
if (folder instanceof IFolder && !folder.exists()) {
((IFolder) folder).create(true, true, null);
@@ -915,11 +916,7 @@ public class LanguageSettingsProvidersSerializer {
if (isWorkspaceStoreEmpty) {
new java.io.File(uriStoreWsp).delete();
} else {
- String eol = Util.getLineSeparator(uriStoreWsp);
- if (eol == null) {
- eol = Util.getDefaultLineSeparator(project);
- }
- XmlUtil.serializeXml(docStoreWsp, uriStoreWsp, eol);
+ XmlUtil.serializeXml(docStoreWsp, uriStoreWsp);
}
// manufacture the event only if serialization was successful
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/language/settings/providers/PathEntryScannerInfoLanguageSettingsProvider.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/language/settings/providers/PathEntryScannerInfoLanguageSettingsProvider.java
index 0c10b459325..9b20c56fe1d 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/language/settings/providers/PathEntryScannerInfoLanguageSettingsProvider.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/language/settings/providers/PathEntryScannerInfoLanguageSettingsProvider.java
@@ -118,6 +118,8 @@ public class PathEntryScannerInfoLanguageSettingsProvider extends LanguageSettin
}
} catch (CoreException e) {
CCorePlugin.log(e);
+ } finally {
+ pathEntryStore.close();
}
Set<ICLanguageSettingEntry> lsEntries = new LinkedHashSet<>();
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/language/settings/providers/ReferencedProjectsLanguageSettingsProvider.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/language/settings/providers/ReferencedProjectsLanguageSettingsProvider.java
index 7a6f688bbc5..1a34db0b7da 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/language/settings/providers/ReferencedProjectsLanguageSettingsProvider.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/language/settings/providers/ReferencedProjectsLanguageSettingsProvider.java
@@ -34,7 +34,7 @@ public class ReferencedProjectsLanguageSettingsProvider extends LanguageSettings
/** ID of the provider used in extension point from plugin.xml */
public static final String ID = "org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider"; //$NON-NLS-1$
- final private ThreadLocal<Boolean> recursiveCallIndicator = new ThreadLocal<Boolean>() {
+ final private ThreadLocal<Boolean> recursiveCallIndicator = new ThreadLocal<>() {
@Override
protected Boolean initialValue() {
return false;
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/APathEntry.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/APathEntry.java
index f2ad6204b46..429a1fef0f3 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/APathEntry.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/APathEntry.java
@@ -139,9 +139,6 @@ public abstract class APathEntry extends PathEntry {
return super.equals(obj);
}
- /* (non-Javadoc)
- * @see java.lang.Object#toString()
- */
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/Archive.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/Archive.java
index 70fcee17dba..8683ce004f8 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/Archive.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/Archive.java
@@ -52,9 +52,6 @@ public class Archive extends Openable implements IArchive {
return b;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.ICElement#isReadOnly()
- */
@Override
public boolean isReadOnly() {
return true;
@@ -89,14 +86,10 @@ public class Archive extends Openable implements IArchive {
return true;
}
- /* (non-Javadoc)
- * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
- */
- @SuppressWarnings("rawtypes")
@Override
- public Object getAdapter(Class adapter) {
+ public <T> T getAdapter(Class<T> adapter) {
if (IBinaryArchive.class.equals(adapter)) {
- return getBinaryArchive();
+ return adapter.cast(getBinaryArchive());
}
return super.getAdapter(adapter);
}
@@ -105,9 +98,6 @@ public class Archive extends Openable implements IArchive {
return binaryArchive;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.ICElement#exists()
- */
@Override
public boolean exists() {
IResource res = getResource();
@@ -116,9 +106,6 @@ public class Archive extends Openable implements IArchive {
return super.exists();
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.model.CElement#closing(java.lang.Object)
- */
@Override
protected void closing(Object info) throws CModelException {
ICProject cproject = getCProject();
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/ArchiveContainer.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/ArchiveContainer.java
index af2581ea4f5..a38707d76ed 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/ArchiveContainer.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/ArchiveContainer.java
@@ -61,9 +61,6 @@ public class ArchiveContainer extends Openable implements IArchiveContainer {
return new ArchiveContainerInfo(this);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.model.Openable#buildStructure(org.eclipse.cdt.internal.core.model.OpenableInfo, org.eclipse.core.runtime.IProgressMonitor, java.util.Map, org.eclipse.core.resources.IResource)
- */
@Override
protected boolean buildStructure(OpenableInfo info, IProgressMonitor pm, Map<ICElement, CElementInfo> newElements,
IResource underlyingResource) throws CModelException {
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/ArchiveContainerInfo.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/ArchiveContainerInfo.java
index df4174660b7..23788a58cc5 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/ArchiveContainerInfo.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/ArchiveContainerInfo.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2008 QNX Software Systems and others.
+ * Copyright (c) 2000, 2021 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -34,13 +34,8 @@ public class ArchiveContainerInfo extends OpenableInfo {
}
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.model.CElementInfo#addChild(org.eclipse.cdt.core.model.ICElement)
- */
@Override
protected void addChild(ICElement child) {
- if (!includesChild(child)) {
- super.addChild(child);
- }
+ addChildIfAbsent(child);
}
}
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BatchOperation.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BatchOperation.java
index bddec3b23f8..e19e696b97c 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BatchOperation.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BatchOperation.java
@@ -30,9 +30,6 @@ public class BatchOperation extends CModelOperation {
this.runnable = runnable;
}
- /* (non-Javadoc)
- * @see org.eclipse.jdt.internal.core.JavaModelOperation#executeOperation()
- */
@Override
protected void executeOperation() throws CModelException {
try {
@@ -51,9 +48,6 @@ public class BatchOperation extends CModelOperation {
}
}
- /* (non-Javadoc)
- * @see org.eclipse.jdt.internal.core.JavaModelOperation#verify()
- */
@Override
protected ICModelStatus verify() {
// cannot verify user defined operation
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/Binary.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/Binary.java
index 7c4df0ef18c..17a4a36e620 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/Binary.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/Binary.java
@@ -212,14 +212,10 @@ public class Binary extends Openable implements IBinary {
return binaryObject;
}
- /* (non-Javadoc)
- * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
- */
- @SuppressWarnings("rawtypes")
@Override
- public Object getAdapter(Class adapter) {
+ public <T> T getAdapter(Class<T> adapter) {
if (IBinaryObject.class.equals(adapter)) {
- return getBinaryObject();
+ return adapter.cast(getBinaryObject());
}
return super.getAdapter(adapter);
}
@@ -258,9 +254,6 @@ public class Binary extends Openable implements IBinary {
return 0;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.ICElement#isReadOnly()
- */
@Override
public boolean isReadOnly() {
return true;
@@ -271,9 +264,6 @@ public class Binary extends Openable implements IBinary {
return new BinaryInfo(this);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.model.Openable#buildStructure(org.eclipse.cdt.internal.core.model.OpenableInfo, org.eclipse.core.runtime.IProgressMonitor, java.util.Map, org.eclipse.core.resources.IResource)
- */
@Override
protected boolean buildStructure(OpenableInfo info, IProgressMonitor pm, Map<ICElement, CElementInfo> newElements,
IResource underlyingResource) throws CModelException {
@@ -322,7 +312,7 @@ public class Binary extends Openable implements IBinary {
String[] sourceFiles = symbolreader.getSourceFiles();
if (sourceFiles != null && sourceFiles.length > 0) {
- ISourceFinder srcFinder = (ISourceFinder) getAdapter(ISourceFinder.class);
+ ISourceFinder srcFinder = getAdapter(ISourceFinder.class);
try {
for (String filename : sourceFiles) {
@@ -470,9 +460,6 @@ public class Binary extends Openable implements IBinary {
return null;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.model.Openable#openBuffer(org.eclipse.core.runtime.IProgressMonitor)
- */
@Override
protected IBuffer openBuffer(IProgressMonitor pm) throws CModelException {
@@ -487,8 +474,7 @@ public class Binary extends Openable implements IBinary {
IBinaryObject bin = getBinaryObject();
if (bin != null) {
StringBuilder sb = new StringBuilder();
- try {
- BufferedReader stream = new BufferedReader(new InputStreamReader(bin.getContents()));
+ try (BufferedReader stream = new BufferedReader(new InputStreamReader(bin.getContents()))) {
char[] buf = new char[512];
int len;
while ((len = stream.read(buf, 0, buf.length)) != -1) {
@@ -515,17 +501,11 @@ public class Binary extends Openable implements IBinary {
return buffer;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.model.Openable#hasBuffer()
- */
@Override
protected boolean hasBuffer() {
return true;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.ICElement#exists()
- */
@Override
public boolean exists() {
IResource res = getResource();
@@ -534,9 +514,6 @@ public class Binary extends Openable implements IBinary {
return super.exists();
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.model.CElement#closing(java.lang.Object)
- */
@Override
protected void closing(Object info) throws CModelException {
ICProject cproject = getCProject();
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BinaryContainer.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BinaryContainer.java
index 291a9eaa181..f4f14abba0e 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BinaryContainer.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BinaryContainer.java
@@ -78,9 +78,6 @@ public class BinaryContainer extends Openable implements IBinaryContainer {
return new BinaryContainerInfo(this);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.model.Openable#buildStructure(org.eclipse.cdt.internal.core.model.OpenableInfo, org.eclipse.core.runtime.IProgressMonitor, java.util.Map, org.eclipse.core.resources.IResource)
- */
@Override
protected boolean buildStructure(OpenableInfo info, IProgressMonitor pm, Map<ICElement, CElementInfo> newElements,
IResource underlyingResource) throws CModelException {
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BinaryContainerInfo.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BinaryContainerInfo.java
index 8b199731db1..4196d3a8db3 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BinaryContainerInfo.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BinaryContainerInfo.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2008 QNX Software Systems and others.
+ * Copyright (c) 2000, 2021 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -27,13 +27,8 @@ public class BinaryContainerInfo extends OpenableInfo {
super(element);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.model.CElementInfo#addChild(org.eclipse.cdt.core.model.ICElement)
- */
@Override
protected void addChild(ICElement child) {
- if (!includesChild(child)) {
- super.addChild(child);
- }
+ addChildIfAbsent(child);
}
}
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BinaryElement.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BinaryElement.java
index c6b68536529..5e75f839fed 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BinaryElement.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BinaryElement.java
@@ -50,43 +50,28 @@ public class BinaryElement extends CElement implements IBinaryElement, ISourceMa
addr = a;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.ISourceManipulation#copy(org.eclipse.cdt.core.model.ICElement, org.eclipse.cdt.core.model.ICElement, java.lang.String, boolean, org.eclipse.core.runtime.IProgressMonitor)
- */
@Override
public void copy(ICElement container, ICElement sibling, String rename, boolean replace, IProgressMonitor monitor)
throws CModelException {
throw new CModelException(new CModelStatus(ICModelStatusConstants.READ_ONLY, this));
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.ISourceManipulation#delete(boolean, org.eclipse.core.runtime.IProgressMonitor)
- */
@Override
public void delete(boolean force, IProgressMonitor monitor) throws CModelException {
throw new CModelException(new CModelStatus(ICModelStatusConstants.READ_ONLY, this));
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.ISourceManipulation#move(org.eclipse.cdt.core.model.ICElement, org.eclipse.cdt.core.model.ICElement, java.lang.String, boolean, org.eclipse.core.runtime.IProgressMonitor)
- */
@Override
public void move(ICElement container, ICElement sibling, String rename, boolean replace, IProgressMonitor monitor)
throws CModelException {
throw new CModelException(new CModelStatus(ICModelStatusConstants.READ_ONLY, this));
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.ISourceManipulation#rename(java.lang.String, boolean, org.eclipse.core.runtime.IProgressMonitor)
- */
@Override
public void rename(String name, boolean replace, IProgressMonitor monitor) throws CModelException {
throw new CModelException(new CModelStatus(ICModelStatusConstants.READ_ONLY, this));
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.ISourceReference#getSource()
- */
@Override
public String getSource() throws CModelException {
ITranslationUnit tu = getTranslationUnit();
@@ -104,18 +89,12 @@ public class BinaryElement extends CElement implements IBinaryElement, ISourceMa
return ""; //$NON-NLS-1$
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.ISourceReference#getSourceRange()
- */
@Override
public ISourceRange getSourceRange() throws CModelException {
return new SourceRange(getStartPos(), getLength(), getIdStartPos(), getIdLength(), getStartLine(),
getEndLine());
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.ISourceReference#getTranslationUnit()
- */
@Override
public ITranslationUnit getTranslationUnit() {
if (fSourceTU == null) {
@@ -157,25 +136,16 @@ public class BinaryElement extends CElement implements IBinaryElement, ISourceMa
return fSourceTU;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.model.CElement#createElementInfo()
- */
@Override
protected CElementInfo createElementInfo() {
return new CElementInfo(this);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.ICElement#getResource()
- */
@Override
public IResource getResource() {
return null;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.IBinaryElement#getAddress()
- */
@Override
public IAddress getAddress() throws CModelException {
return addr;
@@ -214,9 +184,6 @@ public class BinaryElement extends CElement implements IBinaryElement, ISourceMa
return 0;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.IBinaryElement#getBinary()
- */
@Override
public IBinary getBinary() {
ICElement current = this;
@@ -228,9 +195,6 @@ public class BinaryElement extends CElement implements IBinaryElement, ISourceMa
return null;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.model.CElement#generateInfos(java.lang.Object, java.util.Map, org.eclipse.core.runtime.IProgressMonitor)
- */
@Override
protected void generateInfos(CElementInfo info, Map<ICElement, CElementInfo> newElements, IProgressMonitor monitor)
throws CModelException {
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BinaryFunction.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BinaryFunction.java
index e9a9fcad33f..93d8e077bde 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BinaryFunction.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BinaryFunction.java
@@ -18,87 +18,58 @@ import org.eclipse.cdt.core.IAddress;
import org.eclipse.cdt.core.model.IBinaryFunction;
import org.eclipse.cdt.core.model.ICElement;
-/**
- */
public class BinaryFunction extends BinaryElement implements IBinaryFunction {
public BinaryFunction(ICElement parent, String name, IAddress a) {
super(parent, name, ICElement.C_FUNCTION, a);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.IFunctionDeclaration#getExceptions()
- */
@Override
public String[] getExceptions() {
return new String[0];
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.IFunctionDeclaration#getNumberOfParameters()
- */
@Override
public int getNumberOfParameters() {
// TODO Auto-generated method stub
return 0;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.IFunctionDeclaration#getParameterInitializer(int)
- */
@Override
public String getParameterInitializer(int pos) {
// TODO Auto-generated method stub
return ""; //$NON-NLS-1$
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.IFunctionDeclaration#getParameterTypes()
- */
@Override
public String[] getParameterTypes() {
// TODO Auto-generated method stub
return new String[0];
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.IFunctionDeclaration#getReturnType()
- */
@Override
public String getReturnType() {
// TODO Auto-generated method stub
return ""; //$NON-NLS-1$
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.IFunctionDeclaration#getSignature()
- */
@Override
public String getSignature() {
return getElementName();
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.IDeclaration#isStatic()
- */
@Override
public boolean isStatic() {
// TODO Auto-generated method stub
return false;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.IDeclaration#isConst()
- */
@Override
public boolean isConst() {
// TODO Auto-generated method stub
return false;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.IDeclaration#isVolatile()
- */
@Override
public boolean isVolatile() {
// TODO Auto-generated method stub
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BinaryModule.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BinaryModule.java
index aaaf7fdbd6d..f51c25ae97e 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BinaryModule.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BinaryModule.java
@@ -41,9 +41,6 @@ public class BinaryModule extends Parent implements IBinaryModule {
fPath = p;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.IBinaryModule#getBinaryElements()
- */
@Override
public IBinaryElement[] getBinaryElements() throws CModelException {
ICElement[] e = getChildren();
@@ -52,25 +49,16 @@ public class BinaryModule extends Parent implements IBinaryModule {
return b;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.IBinaryElement#getAddress()
- */
@Override
public IAddress getAddress() throws CModelException {
return null;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.IBinaryElement#getBinary()
- */
@Override
public IBinary getBinary() {
return (IBinary) getParent();
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.ICElement#getResource()
- */
@Override
public IResource getResource() {
IWorkspaceRoot root = getCModel().getWorkspace().getRoot();
@@ -81,33 +69,21 @@ public class BinaryModule extends Parent implements IBinaryModule {
return null;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.ICElement#isReadOnly()
- */
@Override
public boolean isReadOnly() {
return true;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.model.CElement#createElementInfo()
- */
@Override
protected CElementInfo createElementInfo() {
return new CElementInfo(this);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.ICElement#getPath()
- */
@Override
public IPath getPath() {
return fPath;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.model.CElement#generateInfos(java.lang.Object, java.util.Map, org.eclipse.core.runtime.IProgressMonitor)
- */
@Override
protected void generateInfos(CElementInfo info, Map<ICElement, CElementInfo> newElements, IProgressMonitor monitor)
throws CModelException {
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BinaryRunner.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BinaryRunner.java
index 457a55f00fa..a8881712a9e 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BinaryRunner.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BinaryRunner.java
@@ -49,9 +49,6 @@ public class BinaryRunner {
super(cproj);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.model.CModelOperation#isReadOnly()
- */
@Override
public boolean isReadOnly() {
return true;
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BinaryVariable.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BinaryVariable.java
index 123cd9dac59..5b370a1b653 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BinaryVariable.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BinaryVariable.java
@@ -17,62 +17,41 @@ import org.eclipse.cdt.core.IAddress;
import org.eclipse.cdt.core.model.ICElement;
import org.eclipse.cdt.core.model.IVariable;
-/**
- *
- */
public class BinaryVariable extends BinaryElement implements IVariable {
public BinaryVariable(ICElement parent, String name, IAddress a) {
super(parent, name, ICElement.C_VARIABLE, a);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.IVariable#getInitializer()
- */
@Override
public String getInitializer() {
// TODO Auto-generated method stub
return ""; //$NON-NLS-1$
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.IVariableDeclaration#getTypeName()
- */
@Override
public String getTypeName() {
// TODO Auto-generated method stub
return ""; //$NON-NLS-1$
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.IVariableDeclaration#setTypeName(java.lang.String)
- */
@Override
public void setTypeName(String type) {
// TODO Auto-generated method stub
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.IDeclaration#isStatic()
- */
@Override
public boolean isStatic() {
// TODO Auto-generated method stub
return false;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.IDeclaration#isConst()
- */
@Override
public boolean isConst() {
// TODO Auto-generated method stub
return false;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.IDeclaration#isVolatile()
- */
@Override
public boolean isVolatile() {
// TODO Auto-generated method stub
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CElement.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CElement.java
index 00e7fce0bf7..088ec6bf7a0 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CElement.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CElement.java
@@ -64,14 +64,13 @@ public abstract class CElement extends PlatformObject implements ICElement {
fType = type;
}
- @SuppressWarnings({ "unchecked", "rawtypes" })
@Override
- public Object getAdapter(Class adapter) {
+ public <T> T getAdapter(Class<T> adapter) {
// handle all kinds of resources
if (IResource.class.isAssignableFrom(adapter)) {
IResource r = getResource();
if (r != null && adapter.isAssignableFrom(r.getClass())) {
- return r;
+ return adapter.cast(r);
}
}
return super.getAdapter(adapter);
@@ -528,6 +527,7 @@ public abstract class CElement extends PlatformObject implements ICElement {
children[i].accept(visitor);
}
}
+ visitor.leave(this);
}
@Override
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CElementInfo.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CElementInfo.java
index 8e0e70f69e0..88a44167a80 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CElementInfo.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CElementInfo.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2009 QNX Software Systems and others.
+ * Copyright (c) 2000, 2021 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -64,6 +64,14 @@ public class CElementInfo {
fChildren.add(child);
}
+ protected void addChildIfAbsent(ICElement child) {
+ synchronized (fChildren) {
+ if (!fChildren.contains(child)) {
+ fChildren.add(child);
+ }
+ }
+ }
+
protected ICElement[] getChildren() {
synchronized (fChildren) {
ICElement[] array = new ICElement[fChildren.size()];
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelBuilder2.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelBuilder2.java
index 63c983b1b11..97c13fac1f5 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelBuilder2.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelBuilder2.java
@@ -43,6 +43,8 @@ import org.eclipse.cdt.core.dom.ast.IASTNodeLocation;
import org.eclipse.cdt.core.dom.ast.IASTPreprocessorFunctionStyleMacroDefinition;
import org.eclipse.cdt.core.dom.ast.IASTPreprocessorIncludeStatement;
import org.eclipse.cdt.core.dom.ast.IASTPreprocessorMacroDefinition;
+import org.eclipse.cdt.core.dom.ast.IASTPreprocessorPragmaStatement;
+import org.eclipse.cdt.core.dom.ast.IASTPreprocessorStatement;
import org.eclipse.cdt.core.dom.ast.IASTProblem;
import org.eclipse.cdt.core.dom.ast.IASTProblemDeclaration;
import org.eclipse.cdt.core.dom.ast.IASTSimpleDeclSpecifier;
@@ -109,6 +111,14 @@ public class CModelBuilder2 implements IContributedModelBuilder {
private HashMap<ISourceReference, int[]> fEqualElements;
/**
+ * To support the new feature "#pragma mark to Outline view" (Bug 546981) the model was updated
+ * to include pragmas. Because the model is widely used, this feature flag allows turning off
+ * including pragmas in the model.
+ */
+ private static final boolean INCLUDE_PRAGMAS_IN_MODEL = Boolean
+ .parseBoolean(System.getProperty("org.eclipse.cdt.core.model_include_pragmas", "true")); //$NON-NLS-1$ //$NON-NLS-2$
+
+ /**
* Create a model builder for the given translation unit.
*
* @param tu the translation unit (must be a {@link TranslationUnit}
@@ -210,20 +220,24 @@ public class CModelBuilder2 implements IContributedModelBuilder {
fVisibilityStack = new Stack<>();
fEqualElements = new HashMap<>();
- // includes
- final IASTPreprocessorIncludeStatement[] includeDirectives = ast.getIncludeDirectives();
- for (IASTPreprocessorIncludeStatement includeDirective : includeDirectives) {
- if (isLocalToFile(includeDirective)) {
- createInclusion(fTranslationUnit, includeDirective);
- }
- }
- // Macros
- final IASTPreprocessorMacroDefinition[] macroDefinitions = ast.getMacroDefinitions();
- for (IASTPreprocessorMacroDefinition macroDefinition : macroDefinitions) {
- if (isLocalToFile(macroDefinition)) {
- createMacro(fTranslationUnit, macroDefinition);
+ for (IASTPreprocessorStatement statement : ast.getAllPreprocessorStatements()) {
+ if (statement instanceof IASTPreprocessorIncludeStatement) {
+ if (isLocalToFile(statement)) {
+ createInclusion(fTranslationUnit, (IASTPreprocessorIncludeStatement) statement);
+ }
+ } else if (statement instanceof IASTPreprocessorMacroDefinition) {
+ if (isLocalToFile(statement)) {
+ createMacro(fTranslationUnit, (IASTPreprocessorMacroDefinition) statement);
+ }
+ } else if (statement instanceof IASTPreprocessorPragmaStatement) {
+ if (INCLUDE_PRAGMAS_IN_MODEL) {
+ if (isLocalToFile(statement)) {
+ createPragma(fTranslationUnit, (IASTPreprocessorPragmaStatement) statement);
+ }
+ }
}
}
+
// Declarations
final IASTDeclaration[] declarations = ast.getDeclarations(true);
for (IASTDeclaration declaration : declarations) {
@@ -321,6 +335,27 @@ public class CModelBuilder2 implements IContributedModelBuilder {
return element;
}
+ private Pragma createPragma(Parent parent, IASTPreprocessorPragmaStatement pragma) throws CModelException {
+ // Create element
+ String name;
+ if (pragma.isPragmaOperator()) {
+ name = pragma.getRawSignature();
+ } else {
+ char[] message = pragma.getMessage();
+ name = new String(message);
+ }
+ Pragma element = new Pragma(parent, name);
+ setIndex(element);
+ element.setActive(pragma.isActive());
+ // Add to parent
+ parent.addChild(element);
+ // Set positions
+ setIdentifierPosition(element, pragma);
+ setBodyPosition(element, pragma);
+ element.setPragmaOperator(pragma.isPragmaOperator());
+ return element;
+ }
+
private void createDeclaration(Parent parent, IASTDeclaration declaration) throws CModelException, DOMException {
if (declaration instanceof IASTFunctionDefinition) {
createFunctionDefinition(parent, (IASTFunctionDefinition) declaration, false);
@@ -1221,6 +1256,16 @@ public class CModelBuilder2 implements IContributedModelBuilder {
}
/**
+ * Utility method to set the identifier position of an element from an AST node.
+ *
+ * @param element
+ * @param astNode
+ */
+ private void setIdentifierPosition(SourceManipulation element, IASTNode astNode) {
+ setIdentifierPosition(getSourceManipulationInfo(element), astNode);
+ }
+
+ /**
* Utility method to set the identifier position of an element from an AST name.
*
* @param element
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CShiftData.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CShiftData.java
index 5513135b8ca..2c9ac7e5093 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CShiftData.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CShiftData.java
@@ -49,81 +49,51 @@ public class CShiftData implements ICElementDelta {
return lines;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.ICElementDelta#getAddedChildren()
- */
@Override
public ICElementDelta[] getAddedChildren() {
return new ICElementDelta[0];
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.ICElementDelta#getAffectedChildren()
- */
@Override
public ICElementDelta[] getAffectedChildren() {
return new ICElementDelta[0];
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.ICElementDelta#getChangedChildren()
- */
@Override
public ICElementDelta[] getChangedChildren() {
return new ICElementDelta[0];
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.ICElementDelta#getElement()
- */
@Override
public ICElement getElement() {
return element;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.ICElementDelta#getFlags()
- */
@Override
public int getFlags() {
return 0;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.ICElementDelta#getKind()
- */
@Override
public int getKind() {
return 0;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.ICElementDelta#getMovedFromElement()
- */
@Override
public ICElement getMovedFromElement() {
return null;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.ICElementDelta#getMovedToElement()
- */
@Override
public ICElement getMovedToElement() {
return null;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.ICElementDelta#getRemovedChildren()
- */
@Override
public ICElementDelta[] getRemovedChildren() {
return new ICElementDelta[0];
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.ICElementDelta#getResourceDeltas()
- */
@Override
public IResourceDelta[] getResourceDeltas() {
return null;
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CoreModelMessages.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CoreModelMessages.java
index efadd1b44b7..585a893f9e5 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CoreModelMessages.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CoreModelMessages.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2014 QNX Software Systems and others.
+ * Copyright (c) 2000, 2020 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -10,14 +10,14 @@
*
* Contributors:
* QNX Software Systems - Initial API and implementation
+ * Alexander Fedorov (ArSysOp) - Bug 561992
*******************************************************************************/
package org.eclipse.cdt.internal.core.model;
+import java.text.MessageFormat;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
-import com.ibm.icu.text.MessageFormat;
-
/**
* @noreference This class is not intended to be referenced by clients.
*/
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CreateFieldOperation.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CreateFieldOperation.java
index 7082f38c76c..72e53faa0a2 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CreateFieldOperation.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CreateFieldOperation.java
@@ -48,9 +48,6 @@ public class CreateFieldOperation extends CreateMemberOperation {
fInitializer = initializer;
}
- /**
- * @see CreateElementInTUOperation#getMainTaskName
- */
@Override
public String getMainTaskName() {
return CoreModelMessages.getString("operation.createFieldProgress"); //$NON-NLS-1$
@@ -78,25 +75,16 @@ public class CreateFieldOperation extends CreateMemberOperation {
}
}
- /**
- * @see CreateElementInTUOperation#generateResultHandle
- */
@Override
protected ICElement generateResultHandle() {
return getStructure().getField(fName);
}
- /**
- * @see CreateMemberOperation#verifyNameCollision
- */
@Override
protected ICModelStatus verifyNameCollision() {
return super.verifyNameCollision();
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.model.CreateElementInTUOperation#generateElement(org.eclipse.cdt.core.model.ITranslationUnit)
- */
@Override
protected String generateElement(ITranslationUnit unit) throws CModelException {
StringBuilder sb = new StringBuilder();
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CreateMethodOperation.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CreateMethodOperation.java
index 8e5a81dcc9b..2f4fc1e368f 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CreateMethodOperation.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CreateMethodOperation.java
@@ -51,26 +51,17 @@ public class CreateMethodOperation extends CreateMemberOperation {
fSource = source;
}
- /**
- * @see CreateElementInTUOperation#generateResultHandle
- */
@Override
protected ICElement generateResultHandle() {
//TODO: what about collisions, we need the signature here.
return getStructure().getMethod(fName);
}
- /**
- * @see CreateElementInTUOperation#getMainTaskName
- */
@Override
public String getMainTaskName() {
return CoreModelMessages.getString("operation.createMethodProgress"); //$NON-NLS-1$
}
- /**
- * @see CreateMemberOperation#verifyNameCollision
- */
@Override
protected ICModelStatus verifyNameCollision() {
ICModelStatus status = super.verify();
@@ -92,9 +83,6 @@ public class CreateMethodOperation extends CreateMemberOperation {
return CModelStatus.VERIFIED_OK;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.model.CreateElementInTUOperation#generateElement(org.eclipse.cdt.core.model.ITranslationUnit)
- */
@Override
protected String generateElement(ITranslationUnit unit) throws CModelException {
StringBuilder sb = new StringBuilder();
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CreateSourceReferenceOperation.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CreateSourceReferenceOperation.java
index d7fa591c2fd..9508e5656d7 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CreateSourceReferenceOperation.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CreateSourceReferenceOperation.java
@@ -50,17 +50,11 @@ public class CreateSourceReferenceOperation extends CreateElementInTUOperation {
fSource = source;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.model.CreateElementInTUOperation#generateElement(org.eclipse.cdt.core.model.ITranslationUnit)
- */
@Override
protected String generateElement(ITranslationUnit unit) throws CModelException {
return fSource;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.model.CreateElementInTUOperation#generateResultHandle()
- */
@Override
protected ICElement generateResultHandle() {
IParent parent = (IParent) getParentElement();
@@ -80,9 +74,6 @@ public class CreateSourceReferenceOperation extends CreateElementInTUOperation {
return null;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.model.CreateElementInTUOperation#getMainTaskName()
- */
@Override
protected String getMainTaskName() {
return "operation.createsourceReference"; //$NON-NLS-1$
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/DefaultPathEntryStore.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/DefaultPathEntryStore.java
index c96670aa886..b7c5de949c4 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/DefaultPathEntryStore.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/DefaultPathEntryStore.java
@@ -378,17 +378,11 @@ public class DefaultPathEntryStore implements IPathEntryStore, ICDescriptorListe
}
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.resources.IPathEntryStore#addPathEntryStoreListener(org.eclipse.cdt.core.resources.IPathEntryStoreListener)
- */
@Override
public void addPathEntryStoreListener(IPathEntryStoreListener listener) {
listeners.add(listener);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.resources.IPathEntryStore#removePathEntryStoreListener(org.eclipse.cdt.core.resources.IPathEntryStoreListener)
- */
@Override
public void removePathEntryStoreListener(IPathEntryStoreListener listener) {
listeners.remove(listener);
@@ -404,9 +398,6 @@ public class DefaultPathEntryStore implements IPathEntryStore, ICDescriptorListe
}
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.resources.IPathEntryStore#fireClosedChangedEvent(IProject)
- */
@Override
public void close() {
PathEntryStoreChangedEvent evt = new PathEntryStoreChangedEvent(this, fProject,
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/IncludeEntry.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/IncludeEntry.java
index 0edb800cbd5..88d9da5498b 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/IncludeEntry.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/IncludeEntry.java
@@ -96,9 +96,6 @@ public class IncludeEntry extends APathEntry implements IIncludeEntry {
return super.equals(obj);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.IIncludeEntry#getFullIncludePath()
- */
@Override
public IPath getFullIncludePath() {
final IPath inc = getIncludePath();
@@ -129,9 +126,6 @@ public class IncludeEntry extends APathEntry implements IIncludeEntry {
return inc;
}
- /* (non-Javadoc)
- * @see java.lang.Object#toString()
- */
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/IncludeFileEntry.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/IncludeFileEntry.java
index 2676c0e5e26..3abbb76ef4d 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/IncludeFileEntry.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/IncludeFileEntry.java
@@ -82,9 +82,6 @@ public class IncludeFileEntry extends APathEntry implements IIncludeFileEntry {
return super.equals(obj);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.IIncludeEntry#getFullIncludePath()
- */
@Override
public IPath getFullIncludeFilePath() {
final IPath inc = getIncludeFilePath();
@@ -115,9 +112,6 @@ public class IncludeFileEntry extends APathEntry implements IIncludeFileEntry {
return inc;
}
- /* (non-Javadoc)
- * @see java.lang.Object#toString()
- */
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/IncludeReference.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/IncludeReference.java
index c9b0e3960df..48396021420 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/IncludeReference.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/IncludeReference.java
@@ -58,17 +58,11 @@ public class IncludeReference extends Openable implements IIncludeReference {
fPath = PathUtil.getCanonicalPathWindows(path);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.ICElement#getResource()
- */
@Override
public IResource getResource() {
return null;
}
- /*
- * @see org.eclipse.cdt.internal.core.model.CElement#exists()
- */
@Override
public boolean exists() {
File file = null;
@@ -80,42 +74,27 @@ public class IncludeReference extends Openable implements IIncludeReference {
return file != null && file.isDirectory();
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.model.CElement#createElementInfo()
- */
@Override
protected CElementInfo createElementInfo() {
return new OpenableInfo(this);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.IIncludeReference#getIncludeEntry()
- */
@Override
public IIncludeEntry getIncludeEntry() {
return fIncludeEntry;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.model.Openable#buildStructure(org.eclipse.cdt.internal.core.model.OpenableInfo, org.eclipse.core.runtime.IProgressMonitor, java.util.Map, org.eclipse.core.resources.IResource)
- */
@Override
protected boolean buildStructure(OpenableInfo info, IProgressMonitor pm, Map<ICElement, CElementInfo> newElements,
IResource underlyingResource) throws CModelException {
return computeChildren(info, pm, underlyingResource);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.IIncludeReference#getAffectedPath()
- */
@Override
public IPath getAffectedPath() {
return fIncludeEntry.getPath();
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.model.CContainer#computeChildren(org.eclipse.cdt.internal.core.model.OpenableInfo, org.eclipse.core.resources.IResource)
- */
protected boolean computeChildren(OpenableInfo info, IProgressMonitor pm, IResource res) throws CModelException {
ArrayList<ICElement> vChildren = new ArrayList<>();
IPath filePath = null;
@@ -178,9 +157,6 @@ public class IncludeReference extends Openable implements IIncludeReference {
return true;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.IIncludeReference#isOnIncludeEntry(org.eclipse.core.runtime.IPath)
- */
@Override
public boolean isOnIncludeEntry(IPath path) {
if (fIncludeEntry.getFullIncludePath().isPrefixOf(path)
@@ -190,9 +166,6 @@ public class IncludeReference extends Openable implements IIncludeReference {
return false;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.ICElement#getPath()
- */
@Override
public IPath getPath() {
return fPath;
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/LibraryEntry.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/LibraryEntry.java
index 83706e1c0cd..c0de3732635 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/LibraryEntry.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/LibraryEntry.java
@@ -182,17 +182,11 @@ public class LibraryEntry extends APathEntry implements ILibraryEntry {
return p;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.ILibraryEntry#getLibraryPath()
- */
@Override
public IPath getLibraryPath() {
return libraryPath;
}
- /* (non-Javadoc)
- * @see java.lang.Object#toString()
- */
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/LibraryReference.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/LibraryReference.java
index d1afa5a045c..0459a014218 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/LibraryReference.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/LibraryReference.java
@@ -38,41 +38,26 @@ public class LibraryReference extends Parent implements ILibraryReference {
entry = e;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.ICElement#getResource()
- */
@Override
public IResource getResource() {
return null;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.model.CElement#createElementInfo()
- */
@Override
protected CElementInfo createElementInfo() {
return new CElementInfo(this);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.ICElement#getPath()
- */
@Override
public IPath getPath() {
return entry.getFullLibraryPath();
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.ILibraryReference#getLibraryEntry()
- */
@Override
public ILibraryEntry getLibraryEntry() {
return entry;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.model.CElement#generateInfos(java.lang.Object, java.util.Map, org.eclipse.core.runtime.IProgressMonitor)
- */
@Override
protected void generateInfos(CElementInfo info, Map<ICElement, CElementInfo> newElements, IProgressMonitor monitor)
throws CModelException {
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/LibraryReferenceArchive.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/LibraryReferenceArchive.java
index cedc99158a8..d20382149a0 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/LibraryReferenceArchive.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/LibraryReferenceArchive.java
@@ -34,25 +34,16 @@ public class LibraryReferenceArchive extends Archive implements ILibraryReferenc
entry = e;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.ICElement#getResource()
- */
@Override
public IResource getResource() {
return null;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.ICElement#getPath()
- */
@Override
public IPath getPath() {
return entry.getFullLibraryPath();
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.ICElement#exists()
- */
@Override
public boolean exists() {
File f = getPath().toFile();
@@ -62,9 +53,6 @@ public class LibraryReferenceArchive extends Archive implements ILibraryReferenc
return false;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.ILibraryReference#getLibraryEntry()
- */
@Override
public ILibraryEntry getLibraryEntry() {
return entry;
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/LibraryReferenceShared.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/LibraryReferenceShared.java
index e1f2e2b416c..82db301caa8 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/LibraryReferenceShared.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/LibraryReferenceShared.java
@@ -39,9 +39,6 @@ public class LibraryReferenceShared extends Binary implements ILibraryReference
entry = e;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.model.Binary#getModificationStamp()
- */
@Override
protected long getModificationStamp() {
File f = getPath().toFile();
@@ -51,17 +48,11 @@ public class LibraryReferenceShared extends Binary implements ILibraryReference
return 0;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.ICElement#getResource()
- */
@Override
public IResource getResource() {
return null;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.ICElement#exists()
- */
@Override
public boolean exists() {
File f = getPath().toFile();
@@ -71,17 +62,11 @@ public class LibraryReferenceShared extends Binary implements ILibraryReference
return false;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.ICElement#getPath()
- */
@Override
public IPath getPath() {
return entry.getFullLibraryPath();
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.ILibraryReference#getLibraryEntry()
- */
@Override
public ILibraryEntry getLibraryEntry() {
return entry;
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/MacroEntry.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/MacroEntry.java
index bccca9af9e6..8d7bea8ed85 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/MacroEntry.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/MacroEntry.java
@@ -89,9 +89,6 @@ public class MacroEntry extends APathEntry implements IMacroEntry {
return super.equals(obj);
}
- /* (non-Javadoc)
- * @see java.lang.Object#toString()
- */
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/MacroFileEntry.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/MacroFileEntry.java
index 62400f7fd2c..f71c54eccb7 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/MacroFileEntry.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/MacroFileEntry.java
@@ -81,9 +81,6 @@ public class MacroFileEntry extends APathEntry implements IMacroFileEntry {
return super.equals(obj);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.IIncludeEntry#getFullIncludePath()
- */
@Override
public IPath getFullMacroFilePath() {
IPath p;
@@ -118,9 +115,6 @@ public class MacroFileEntry extends APathEntry implements IMacroFileEntry {
return p;
}
- /* (non-Javadoc)
- * @see java.lang.Object#toString()
- */
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/NullBinaryParser.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/NullBinaryParser.java
index 0d4ebb75cef..fe915cef0d4 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/NullBinaryParser.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/NullBinaryParser.java
@@ -21,45 +21,28 @@ import org.eclipse.cdt.core.IBinaryParser;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.PlatformObject;
-/**
- */
public class NullBinaryParser extends PlatformObject implements IBinaryParser {
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IBinaryParser#getBinary(org.eclipse.core.runtime.IPath)
- */
@Override
public IBinaryFile getBinary(byte[] data, IPath path) throws IOException {
throw new IOException(CCorePlugin.getResourceString("CoreModel.NullBinaryParser.Not_binary_file")); //$NON-NLS-1$
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IBinaryParser#getBinary(org.eclipse.core.runtime.IPath)
- */
@Override
public IBinaryFile getBinary(IPath path) throws IOException {
throw new IOException(CCorePlugin.getResourceString("CoreModel.NullBinaryParser.Not_binary_file")); //$NON-NLS-1$
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IBinaryParser#getFormat()
- */
@Override
public String getFormat() {
return CCorePlugin.getResourceString("CoreModel.NullBinaryParser.Null_Format"); //$NON-NLS-1$
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IBinaryParser#isBinary(byte[], org.eclipse.core.runtime.IPath)
- */
@Override
public boolean isBinary(byte[] array, IPath path) {
return false;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IBinaryParser#getBufferSize()
- */
@Override
public int getHintBufferSize() {
return 0;
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/PathEntryContainerUpdatesOperation.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/PathEntryContainerUpdatesOperation.java
index a47678f25b0..9faf737d483 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/PathEntryContainerUpdatesOperation.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/PathEntryContainerUpdatesOperation.java
@@ -38,9 +38,6 @@ public class PathEntryContainerUpdatesOperation extends CModelOperation {
this.events = events;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.model.CModelOperation#isReadOnly()
- */
@Override
public boolean isReadOnly() {
return true;
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/PathEntryStoreChangedOperation.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/PathEntryStoreChangedOperation.java
index 478f4d033ed..27675e4c7d1 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/PathEntryStoreChangedOperation.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/PathEntryStoreChangedOperation.java
@@ -25,9 +25,6 @@ public class PathEntryStoreChangedOperation extends CModelOperation {
super(cproject);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.model.CModelOperation#isReadOnly()
- */
@Override
public boolean isReadOnly() {
return true;
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/Pragma.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/Pragma.java
new file mode 100644
index 00000000000..ba083cbe16b
--- /dev/null
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/Pragma.java
@@ -0,0 +1,121 @@
+/*******************************************************************************
+ * Copyright (c) 2021 Kichwa Coders Canada Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.internal.core.model;
+
+import java.util.Optional;
+import java.util.StringTokenizer;
+
+import org.eclipse.cdt.core.model.ICElement;
+import org.eclipse.cdt.core.model.IPragma;
+
+public class Pragma extends SourceManipulation implements IPragma {
+
+ private boolean isPragmaOperator = false;
+ private Optional<PragmaMarkInfo> pragmaMarkInfo = null;
+
+ public Pragma(ICElement parent, String name) {
+ super(parent, name, ICElement.C_PRAGMA);
+ }
+
+ private PragmaMarkInfo calculateMarkInfo(String name) {
+ String nameTrimmed = name.trim();
+
+ StringTokenizer tokenizer = new StringTokenizer(nameTrimmed);
+ if (tokenizer.hasMoreTokens()) {
+
+ boolean dividerBeforeMark = false;
+ boolean dividerAfterMark = false;
+ String markName = ""; //$NON-NLS-1$
+
+ String pragmaName = tokenizer.nextToken();
+ String restOfLine;
+ if (tokenizer.hasMoreTokens()) {
+ restOfLine = tokenizer.nextToken("").trim(); //$NON-NLS-1$
+ } else {
+ restOfLine = ""; //$NON-NLS-1$
+ }
+ switch (pragmaName) {
+ case "mark": { //$NON-NLS-1$
+ if (restOfLine.startsWith("-")) { //$NON-NLS-1$
+ dividerBeforeMark = true;
+ restOfLine = restOfLine.substring(1);
+ }
+ if (restOfLine.endsWith("-")) { //$NON-NLS-1$
+ dividerAfterMark = true;
+ restOfLine = restOfLine.substring(0, restOfLine.length() - 1);
+ }
+ markName = restOfLine.trim();
+ }
+ break;
+ case "region": //$NON-NLS-1$
+ case "endregion": { //$NON-NLS-1$
+ if (restOfLine.isEmpty()) {
+ dividerBeforeMark = true;
+ dividerAfterMark = false;
+ } else {
+ dividerBeforeMark = true;
+ dividerAfterMark = true;
+ markName = restOfLine;
+ }
+ }
+ break;
+ default:
+ return null;
+ }
+
+ boolean finalDividerBeforeMark = dividerBeforeMark;
+ boolean finalDividerAfterMark = dividerAfterMark;
+ String finalMarkName = markName;
+ return new PragmaMarkInfo() {
+
+ @Override
+ public boolean isDividerBeforeMark() {
+ return finalDividerBeforeMark;
+ }
+
+ @Override
+ public boolean isDividerAfterMark() {
+ return finalDividerAfterMark;
+ }
+
+ @Override
+ public String getMarkName() {
+ return finalMarkName;
+ }
+ };
+ } else {
+ return null;
+ }
+ }
+
+ @Override
+ protected CElementInfo createElementInfo() {
+ return new SourceManipulationInfo(this);
+ }
+
+ public void setPragmaOperator(boolean isPragmaOperator) {
+ this.isPragmaOperator = isPragmaOperator;
+ }
+
+ @Override
+ public boolean isPragmaOperator() {
+ return isPragmaOperator;
+ }
+
+ @Override
+ public Optional<PragmaMarkInfo> getPragmaMarkInfo() {
+ if (pragmaMarkInfo == null) {
+ pragmaMarkInfo = Optional.ofNullable(calculateMarkInfo(getElementName()));
+ }
+ return pragmaMarkInfo;
+ }
+}
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/SetPathEntriesOperation.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/SetPathEntriesOperation.java
index c59adee0512..e39f6b0bc0c 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/SetPathEntriesOperation.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/SetPathEntriesOperation.java
@@ -46,9 +46,6 @@ public class SetPathEntriesOperation extends CModelOperation {
this.cproject = project;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.model.CModelOperation#executeOperation()
- */
@Override
protected void executeOperation() throws CModelException {
// project reference updated - may throw an exception if unable to write .cdtproject file
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/SetPathEntryContainerOperation.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/SetPathEntryContainerOperation.java
index 7fbbf0ad93e..7f002076b70 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/SetPathEntryContainerOperation.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/SetPathEntryContainerOperation.java
@@ -45,9 +45,6 @@ public class SetPathEntryContainerOperation extends CModelOperation {
fPathEntryManager = PathEntryManager.getDefault();
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.model.CModelOperation#isReadOnly()
- */
@Override
public boolean isReadOnly() {
return true;
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/StructureDeclaration.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/StructureDeclaration.java
index 364960e031c..2ad37de81cb 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/StructureDeclaration.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/StructureDeclaration.java
@@ -18,9 +18,6 @@ import org.eclipse.cdt.core.model.CModelException;
import org.eclipse.cdt.core.model.ICElement;
import org.eclipse.cdt.core.model.IStructureDeclaration;
-/**
- * StructureDeclaration
- */
public class StructureDeclaration extends SourceManipulation implements IStructureDeclaration {
public StructureDeclaration(ICElement parent, String name, int kind) {
@@ -60,25 +57,16 @@ public class StructureDeclaration extends SourceManipulation implements IStructu
return new StructureInfo(this);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.IDeclaration#isStatic()
- */
@Override
public boolean isStatic() throws CModelException {
return getStructureInfo().isStatic();
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.IDeclaration#isConst()
- */
@Override
public boolean isConst() throws CModelException {
return getStructureInfo().isConst();
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.IDeclaration#isVolatile()
- */
@Override
public boolean isVolatile() throws CModelException {
return getStructureInfo().isVolatile();
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/Using.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/Using.java
index 1fce66a39b6..0c244f4c84d 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/Using.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/Using.java
@@ -30,9 +30,6 @@ public class Using extends SourceManipulation implements IUsing {
return new SourceManipulationInfo(this);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.IUsing#isDirective()
- */
@Override
public boolean isDirective() {
return directive;
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/Util.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/Util.java
index c6f2d96b487..4b87a225431 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/Util.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/Util.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2002, 2016 IBM Corporation and others.
+ * Copyright (c) 2002, 2020 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -14,6 +14,7 @@
* Anton Leherbauer (Wind River Systems)
* IBM Corporation - EFS support
* Marc-Andre Laperle (Ericsson)
+ * Alexander Fedorov (ArSysOp) - Bug 561992
*******************************************************************************/
package org.eclipse.cdt.internal.core.model;
@@ -23,6 +24,7 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URI;
+import java.text.MessageFormat;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.ICLogConstants;
@@ -45,8 +47,6 @@ import org.eclipse.core.runtime.preferences.InstanceScope;
import org.osgi.service.prefs.BackingStoreException;
import org.osgi.service.prefs.Preferences;
-import com.ibm.icu.text.MessageFormat;
-
public class Util implements ICLogConstants {
public static boolean VERBOSE_PARSER;
public static boolean VERBOSE_SCANNER;
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/VariableTemplate.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/VariableTemplate.java
index a08840d69eb..ac4fb2f9758 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/VariableTemplate.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/VariableTemplate.java
@@ -27,17 +27,11 @@ public class VariableTemplate extends Variable implements ITemplate {
templateParameterTypes = fgEmptyList;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.ITemplate#getNumberOfTemplateParameters()
- */
@Override
public int getNumberOfTemplateParameters() {
return templateParameterTypes == null ? 0 : templateParameterTypes.length;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.ITemplate#getTemplateParameterTypes()
- */
@Override
public String[] getTemplateParameterTypes() {
return templateParameterTypes;
@@ -48,16 +42,10 @@ public class VariableTemplate extends Variable implements ITemplate {
return fgEmptyList;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.ITemplate#setTemplateParameterTypes(java.lang.String[])
- */
public void setTemplateParameterTypes(String[] templateParameterTypes) {
this.templateParameterTypes = templateParameterTypes;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.ITemplate#getTemplateSignature()
- */
@Override
public String getTemplateSignature() throws CModelException {
StringBuilder sig = new StringBuilder(getElementName());
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/AbstractCProjectDescriptionStorage.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/AbstractCProjectDescriptionStorage.java
index 98af3dbeb9d..8cc60070635 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/AbstractCProjectDescriptionStorage.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/AbstractCProjectDescriptionStorage.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2009 Broadcom Corporation and others.
+ * Copyright (c) 2008, 2020 Broadcom Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -11,9 +11,12 @@
* Contributors:
* James Blackburn (Broadcom Corp.)
* IBM Corporation
+ * Alexander Fedorov (ArSysOp) - Bug 561992
*******************************************************************************/
package org.eclipse.cdt.internal.core.settings.model;
+import java.text.MessageFormat;
+
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.model.ICProject;
import org.eclipse.cdt.core.settings.model.CProjectDescriptionEvent;
@@ -34,8 +37,6 @@ import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.Job;
import org.osgi.framework.Version;
-import com.ibm.icu.text.MessageFormat;
-
/**
* This abstract class provides an extension point for functionality for loading
* a CDT Project Description from some kind of backing store. This allows
@@ -69,7 +70,7 @@ public abstract class AbstractCProjectDescriptionStorage {
protected volatile IProject project;
/** Flag used to detect if setProjectDescription(...) is called by the thread already in a setProjectDescription(...) */
- final private ThreadLocal<Boolean> setProjectDescriptionOperationRunning = new ThreadLocal<Boolean>() {
+ final private ThreadLocal<Boolean> setProjectDescriptionOperationRunning = new ThreadLocal<>() {
@Override
protected Boolean initialValue() {
return false;
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CConfigurationSpecSettings.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CConfigurationSpecSettings.java
index 05b3a6ad49a..1b65ff93b99 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CConfigurationSpecSettings.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CConfigurationSpecSettings.java
@@ -23,6 +23,7 @@ import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
+import java.util.Objects;
import java.util.Set;
import org.eclipse.cdt.core.CCorePlugin;
@@ -42,7 +43,6 @@ import org.eclipse.cdt.core.settings.model.ICSettingsStorage;
import org.eclipse.cdt.core.settings.model.ICStorageElement;
import org.eclipse.cdt.core.settings.model.ICTargetPlatformSetting;
import org.eclipse.cdt.core.settings.model.extension.CConfigurationData;
-import org.eclipse.cdt.core.settings.model.util.CDataUtil;
import org.eclipse.cdt.internal.core.CConfigBasedDescriptorManager;
import org.eclipse.cdt.internal.core.CExtensionInfo;
import org.eclipse.cdt.internal.core.COwner;
@@ -370,7 +370,7 @@ public class CConfigurationSpecSettings implements ICSettingsStorage, ILanguageS
public void setName(String name) {
if (isReadOnly())
throw ExceptionFactory.createIsReadOnlyException();
- if (!CDataUtil.objectsEqual(fName, name)) {
+ if (!Objects.equals(fName, name)) {
fName = name;
fIsModified = true;
}
@@ -383,7 +383,7 @@ public class CConfigurationSpecSettings implements ICSettingsStorage, ILanguageS
public void setId(String id) {
if (isReadOnly())
throw ExceptionFactory.createIsReadOnlyException();
- if (!CDataUtil.objectsEqual(fId, id)) {
+ if (!Objects.equals(fId, id)) {
fId = id;
fIsModified = true;
}
@@ -392,7 +392,7 @@ public class CConfigurationSpecSettings implements ICSettingsStorage, ILanguageS
void setBuildSystemId(String id) {
if (isReadOnly())
throw ExceptionFactory.createIsReadOnlyException();
- if (!CDataUtil.objectsEqual(fBuildSystemId, id)) {
+ if (!Objects.equals(fBuildSystemId, id)) {
fBuildSystemId = id;
fIsModified = true;
}
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionManager.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionManager.java
index 67a6c5cc218..c566cb899c3 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionManager.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionManager.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2014 Intel Corporation and others.
+ * Copyright (c) 2007, 2020 Intel Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -9,12 +9,13 @@
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
- * Intel Corporation - Initial API and implementation
- * Markus Schorn (Wind River Systems)
- * IBM Corporation
- * James Blackburn (Broadcom Corp.)
- * Alex Blewitt Bug 132511 - nature order not preserved
- * Christian Walther (Indel AG) - [436060] Race condition in updateProjectDescriptions()
+ * Intel Corporation - Initial API and implementation
+ * Markus Schorn (Wind River Systems)
+ * IBM Corporation
+ * James Blackburn (Broadcom Corp.)
+ * Alex Blewitt Bug 132511 - nature order not preserved
+ * Christian Walther (Indel AG) - [436060] Race condition in updateProjectDescriptions()
+ * Alexander Fedorov (ArSysOp) - Bug 561992
*******************************************************************************/
package org.eclipse.cdt.internal.core.settings.model;
@@ -27,6 +28,7 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.URI;
+import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
@@ -38,6 +40,7 @@ import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.Set;
import java.util.concurrent.CopyOnWriteArraySet;
@@ -135,8 +138,6 @@ import org.w3c.dom.NodeList;
import org.w3c.dom.ProcessingInstruction;
import org.xml.sax.SAXException;
-import com.ibm.icu.text.MessageFormat;
-
/**
* The CProjectDescriptionManager is to marshall the loading and storing
* of CDT Project Descriptions.
@@ -821,7 +822,7 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
}
/** ThreadLocal flag to let CDescriptor know whether already in a setProjectDescription */
- ThreadLocal<Boolean> settingProjectDescription = new ThreadLocal<Boolean>() {
+ ThreadLocal<Boolean> settingProjectDescription = new ThreadLocal<>() {
@Override
protected Boolean initialValue() {
return false;
@@ -1386,23 +1387,6 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
return !newCfg.getId().equals(oldCfg.getId());
}
- /* void postProcessNewDescriptionCache(CProjectDescription des, ICProjectDescriptionDelta delta) {
- if (delta == null && delta.getDeltaKind() != ICProjectDescriptionDelta.CHANGED)
- return;
-
- ICConfigurationDescription indexCfg = des.getIndexConfiguration();
- ICConfigurationDescription activeCfg = des.getActiveConfiguration();
- ICProjectDescriptionDelta activeCfgDelta = findDelta(activeCfg.getId(), delta);
- if (indexCfg != activeCfg) {
- switch(activeCfgDelta.getDeltaKind()) {
- case ICProjectDescriptionDelta.CHANGED:
- des.setIndexConfiguration(activeCfg);
- }
- }
-
-
- }
- */
private ICDescriptionDelta findDelta(String id, ICDescriptionDelta delta) {
ICDescriptionDelta children[] = delta.getChildren();
ICSettingObject obj;
@@ -1421,7 +1405,7 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
CConfigurationSpecSettings oldSettings = ((IInternalCCfgInfo) oldCfg).getSpecSettings();
String newId = newSettings.getCOwnerId();
String oldId = oldSettings.getCOwnerId();
- if (!CDataUtil.objectsEqual(newId, oldId))
+ if (!Objects.equals(newId, oldId))
flags |= ICDescriptionDelta.OWNER;
Map<String, CConfigExtensionReference[]> newMap = newSettings.getExtensionMapCopy();
@@ -1522,7 +1506,7 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
delta.addChangeFlags(ICDescriptionDelta.NAME);
}
- if (!CDataUtil.objectsEqual(newCfg.getDescription(), oldCfg.getDescription())) {
+ if (!Objects.equals(newCfg.getDescription(), oldCfg.getDescription())) {
delta.addChangeFlags(ICDescriptionDelta.DESCRIPTION);
}
@@ -1825,7 +1809,7 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
CProjectDescriptionDelta delta = new CProjectDescriptionDelta(newLs, oldLs);
if (delta.getDeltaKind() == ICDescriptionDelta.CHANGED) {
- if (!CDataUtil.objectsEqual(newLs.getLanguageId(), oldLs.getLanguageId()))
+ if (!Objects.equals(newLs.getLanguageId(), oldLs.getLanguageId()))
delta.addChangeFlags(ICDescriptionDelta.LANGUAGE_ID);
int kinds[] = KindBasedStore.getLanguageEntryKinds();
@@ -1933,18 +1917,6 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
return result;
}
- /* public boolean entriesEqual(ICLanguageSettingEntry entries1[], ICLanguageSettingEntry entries2[]) {
- if (entries1.length != entries2.length)
- return false;
-
- for (int i = 0; i < entries1.length; i++) {
- if (!entries1[i].equals(entries2[i]))
- return false;
- }
-
- return true;
- }
- */
private CProjectDescriptionDelta createDelta(ICBuildSetting newBuildSetting, ICBuildSetting oldBuildSetting) {
CProjectDescriptionDelta delta = new CProjectDescriptionDelta(newBuildSetting, oldBuildSetting);
if (!Arrays.equals(newBuildSetting.getErrorParserIDs(), oldBuildSetting.getErrorParserIDs()))
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionPreferences.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionPreferences.java
index c7d4ff4cd5e..ee8e4cd124d 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionPreferences.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionPreferences.java
@@ -13,14 +13,19 @@
*******************************************************************************/
package org.eclipse.cdt.internal.core.settings.model;
+import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.settings.model.ICProjectDescriptionPreferences;
import org.eclipse.cdt.core.settings.model.ICStorageElement;
import org.eclipse.cdt.core.settings.model.util.CDataUtil;
+import org.eclipse.core.runtime.preferences.DefaultScope;
public class CProjectDescriptionPreferences implements ICProjectDescriptionPreferences {
+
private static final String ATTR_CONFIG_RELATIONS = "configRelations"; //$NON-NLS-1$
- private static final int DEFAULT_RELATIONS = CONFIGS_INDEPENDENT;
+ // This preference is only used at Default Scope to allow product preference customization (plugin_customization.ini)
+ private static final String PREF_CPROJECTDESCRIPTION_CONFIG_RELATIONS_KEY = "cprojectdescription.configRelations"; //$NON-NLS-1$
+
private boolean fIsReadOnly;
private boolean fIsModified;
@@ -43,7 +48,8 @@ public class CProjectDescriptionPreferences implements ICProjectDescriptionPrefe
fIsReadOnly = isReadOnly;
if (el != null) {
if (el.getAttribute(ATTR_CONFIG_RELATIONS) != null)
- fConfigRelations = Integer.valueOf(CDataUtil.getInteger(el, ATTR_CONFIG_RELATIONS, DEFAULT_RELATIONS));
+ fConfigRelations = Integer
+ .valueOf(CDataUtil.getInteger(el, ATTR_CONFIG_RELATIONS, getDefaultRelations()));
}
this.fSuperPreference = superPreference;
@@ -61,6 +67,11 @@ public class CProjectDescriptionPreferences implements ICProjectDescriptionPrefe
CDataUtil.setInteger(el, ATTR_CONFIG_RELATIONS, fConfigRelations.intValue());
}
+ public static int getDefaultRelations() {
+ return DefaultScope.INSTANCE.getNode(CCorePlugin.PLUGIN_ID)
+ .getInt(PREF_CPROJECTDESCRIPTION_CONFIG_RELATIONS_KEY, CONFIGS_LINK_SETTINGS_AND_ACTIVE);
+ }
+
@Override
public int getConfigurationRelations() {
if (fConfigRelations != null)
@@ -68,7 +79,7 @@ public class CProjectDescriptionPreferences implements ICProjectDescriptionPrefe
CProjectDescriptionPreferences superPrefs = getSuperPreferences();
if (superPrefs != null)
return superPrefs.getConfigurationRelations();
- return DEFAULT_RELATIONS;
+ return getDefaultRelations();
}
@Override
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionStorageManager.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionStorageManager.java
index 4a07bbb340c..8636b6030f2 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionStorageManager.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionStorageManager.java
@@ -178,7 +178,8 @@ public class CProjectDescriptionStorageManager {
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.METHOD, "xml"); //$NON-NLS-1$
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); //$NON-NLS-1$
- transformer.setOutputProperty(OutputKeys.INDENT, "yes"); //$NON-NLS-1$
+ // Indentation is done with XmlUtil.prettyFormat(doc)
+ transformer.setOutputProperty(OutputKeys.INDENT, "no"); //$NON-NLS-1$
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(stream);
transformer.transform(source, result);
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/ConfigBasedPathEntryStore.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/ConfigBasedPathEntryStore.java
index 26af7a19ed6..6d9ecf44e38 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/ConfigBasedPathEntryStore.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/ConfigBasedPathEntryStore.java
@@ -51,9 +51,6 @@ public class ConfigBasedPathEntryStore implements IPathEntryStore, ICProjectDesc
static final QualifiedName PATH_ENTRY_COLLECTOR_PROPERTY_NAME = new QualifiedName(CCorePlugin.PLUGIN_ID,
"PathEntryStoreCollector"); //$NON-NLS-1$
- /**
- *
- */
public ConfigBasedPathEntryStore(IProject project) {
fProject = project;
fListeners = Collections.synchronizedList(new ArrayList<IPathEntryStoreListener>());
@@ -62,17 +59,11 @@ public class ConfigBasedPathEntryStore implements IPathEntryStore, ICProjectDesc
CProjectDescriptionEvent.APPLIED | CProjectDescriptionEvent.LOADED);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.resources.IPathEntryStore#addPathEntryStoreListener(org.eclipse.cdt.core.resources.IPathEntryStoreListener)
- */
@Override
public void addPathEntryStoreListener(IPathEntryStoreListener listener) {
fListeners.add(listener);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.resources.IPathEntryStore#removePathEntryStoreListener(org.eclipse.cdt.core.resources.IPathEntryStoreListener)
- */
@Override
public void removePathEntryStoreListener(IPathEntryStoreListener listener) {
fListeners.remove(listener);
@@ -88,9 +79,6 @@ public class ConfigBasedPathEntryStore implements IPathEntryStore, ICProjectDesc
}
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.resources.IPathEntryStore#fireClosedChangedEvent(IProject)
- */
@Override
public void close() {
PathEntryStoreChangedEvent evt = new PathEntryStoreChangedEvent(this, fProject,
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/MultiConfigDescription.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/MultiConfigDescription.java
index c98d1870bda..89d522f1626 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/MultiConfigDescription.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/MultiConfigDescription.java
@@ -55,17 +55,11 @@ public class MultiConfigDescription extends MultiItemsHolder implements ICMultiC
fCfgs = des;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.settings.model.MultiItemsHolder#getItems()
- */
@Override
public Object[] getItems() {
return fCfgs;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICConfigurationDescription#create(java.lang.String, java.lang.String)
- */
@Override
public ICConfigExtensionReference create(String extensionPoint, String extension) throws CoreException {
if (DEBUG)
@@ -73,9 +67,6 @@ public class MultiConfigDescription extends MultiItemsHolder implements ICMultiC
throw new UnsupportedOperationException();
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICConfigurationDescription#createExternalSetting(java.lang.String[], java.lang.String[], java.lang.String[], org.eclipse.cdt.core.settings.model.ICSettingEntry[])
- */
@Override
public ICExternalSetting createExternalSetting(String[] languageIDs, String[] contentTypeIds, String[] extensions,
ICSettingEntry[] entries) throws WriteAccessException {
@@ -84,9 +75,6 @@ public class MultiConfigDescription extends MultiItemsHolder implements ICMultiC
return null;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICConfigurationDescription#createFileDescription(org.eclipse.core.runtime.IPath, org.eclipse.cdt.core.settings.model.ICResourceDescription)
- */
@Override
public ICFileDescription createFileDescription(IPath path, ICResourceDescription base)
throws CoreException, WriteAccessException {
@@ -95,9 +83,6 @@ public class MultiConfigDescription extends MultiItemsHolder implements ICMultiC
return null;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICConfigurationDescription#createFolderDescription(org.eclipse.core.runtime.IPath, org.eclipse.cdt.core.settings.model.ICFolderDescription)
- */
@Override
public ICFolderDescription createFolderDescription(IPath path, ICFolderDescription base)
throws CoreException, WriteAccessException {
@@ -106,9 +91,6 @@ public class MultiConfigDescription extends MultiItemsHolder implements ICMultiC
return null;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICConfigurationDescription#get(java.lang.String)
- */
@Override
public ICConfigExtensionReference[] get(String extensionPointID) {
if (DEBUG)
@@ -116,9 +98,6 @@ public class MultiConfigDescription extends MultiItemsHolder implements ICMultiC
return null;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICConfigurationDescription#getBuildSetting()
- */
@Override
public ICBuildSetting getBuildSetting() {
if (DEBUG)
@@ -140,25 +119,16 @@ public class MultiConfigDescription extends MultiItemsHolder implements ICMultiC
fCfgs[i].getBuildSetting().setErrorParserIDs(ids);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICConfigurationDescription#getBuildSystemId()
- */
@Override
public String getBuildSystemId() {
return fCfgs[0].getBuildSystemId();
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICConfigurationDescription#getBuildVariablesContributor()
- */
@Override
public ICdtVariablesContributor getBuildVariablesContributor() {
return fCfgs[0].getBuildVariablesContributor();
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICConfigurationDescription#getConfigurationData()
- */
@Override
public CConfigurationData getConfigurationData() {
if (DEBUG)
@@ -166,9 +136,6 @@ public class MultiConfigDescription extends MultiItemsHolder implements ICMultiC
return null;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICConfigurationDescription#getConfigurationStatus()
- */
@Override
public CConfigurationStatus getConfigurationStatus() {
CConfigurationStatus st = null;
@@ -180,25 +147,16 @@ public class MultiConfigDescription extends MultiItemsHolder implements ICMultiC
return st;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICConfigurationDescription#getDescription()
- */
@Override
public String getDescription() {
return "Multi Configuration"; //$NON-NLS-1$
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICConfigurationDescription#getExternalSettings()
- */
@Override
public ICExternalSetting[] getExternalSettings() {
return null;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICConfigurationDescription#getExternalSettingsProviderIds()
- */
@Override
public String[] getExternalSettingsProviderIds() {
if (DEBUG)
@@ -206,9 +164,6 @@ public class MultiConfigDescription extends MultiItemsHolder implements ICMultiC
return null;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICConfigurationDescription#getFileDescriptions()
- */
@Override
public ICFileDescription[] getFileDescriptions() {
ArrayList<ICFileDescription> lst = new ArrayList<>();
@@ -217,9 +172,6 @@ public class MultiConfigDescription extends MultiItemsHolder implements ICMultiC
return lst.toArray(new ICFileDescription[lst.size()]);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICConfigurationDescription#getFolderDescriptions()
- */
@Override
public ICFolderDescription[] getFolderDescriptions() {
ArrayList<ICFolderDescription> lst = new ArrayList<>();
@@ -228,9 +180,6 @@ public class MultiConfigDescription extends MultiItemsHolder implements ICMultiC
return lst.toArray(new ICFolderDescription[lst.size()]);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICConfigurationDescription#getLanguageSettingForFile(org.eclipse.core.runtime.IPath, boolean)
- */
@Override
public ICLanguageSetting getLanguageSettingForFile(IPath path, boolean ignoreExludeStatus) {
if (DEBUG)
@@ -238,9 +187,6 @@ public class MultiConfigDescription extends MultiItemsHolder implements ICMultiC
return null;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICConfigurationDescription#getProjectDescription()
- */
@Override
public ICProjectDescription getProjectDescription() {
ICProjectDescription pd = fCfgs[0].getProjectDescription();
@@ -252,9 +198,6 @@ public class MultiConfigDescription extends MultiItemsHolder implements ICMultiC
return pd;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICConfigurationDescription#getReferenceInfo()
- */
@Override
public Map<String, String> getReferenceInfo() {
if (DEBUG)
@@ -262,17 +205,11 @@ public class MultiConfigDescription extends MultiItemsHolder implements ICMultiC
return Collections.emptyMap();
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICConfigurationDescription#getResolvedSourceEntries()
- */
@Override
public ICSourceEntry[] getResolvedSourceEntries() {
return new ICSourceEntry[0];
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICConfigurationDescription#getResourceDescription(org.eclipse.core.runtime.IPath, boolean)
- */
@Override
public ICResourceDescription getResourceDescription(IPath path, boolean isForFolder) {
ArrayList<ICResourceDescription> lst = new ArrayList<>();
@@ -300,9 +237,6 @@ public class MultiConfigDescription extends MultiItemsHolder implements ICMultiC
return new MultiFileDescription(lst.toArray(new ICFileDescription[lst.size()]));
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICConfigurationDescription#getResourceDescriptions()
- */
@Override
public ICResourceDescription[] getResourceDescriptions() {
ArrayList<ICResourceDescription> lst = new ArrayList<>();
@@ -311,9 +245,6 @@ public class MultiConfigDescription extends MultiItemsHolder implements ICMultiC
return lst.toArray(new ICResourceDescription[lst.size()]);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICConfigurationDescription#getRootFolderDescription()
- */
@Override
public ICFolderDescription getRootFolderDescription() {
ICFolderDescription[] rds = new ICFolderDescription[fCfgs.length];
@@ -322,9 +253,6 @@ public class MultiConfigDescription extends MultiItemsHolder implements ICMultiC
return new MultiFolderDescription(rds);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICConfigurationDescription#getSessionProperty(org.eclipse.core.runtime.QualifiedName)
- */
@Override
public Object getSessionProperty(QualifiedName name) {
if (DEBUG)
@@ -332,17 +260,11 @@ public class MultiConfigDescription extends MultiItemsHolder implements ICMultiC
throw new UnsupportedOperationException();
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICConfigurationDescription#getSourceEntries()
- */
@Override
public ICSourceEntry[] getSourceEntries() {
return new ICSourceEntry[0];
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICConfigurationDescription#getTargetPlatformSetting()
- */
@Override
public ICTargetPlatformSetting getTargetPlatformSetting() {
if (DEBUG)
@@ -350,9 +272,6 @@ public class MultiConfigDescription extends MultiItemsHolder implements ICMultiC
throw new UnsupportedOperationException();
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICConfigurationDescription#isActive()
- */
@Override
public boolean isActive() {
for (int i = 0; i < fCfgs.length; i++)
@@ -361,9 +280,6 @@ public class MultiConfigDescription extends MultiItemsHolder implements ICMultiC
return false;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICConfigurationDescription#isModified()
- */
@Override
public boolean isModified() {
for (int i = 0; i < fCfgs.length; i++)
@@ -372,70 +288,46 @@ public class MultiConfigDescription extends MultiItemsHolder implements ICMultiC
return false;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICConfigurationDescription#isPreferenceConfiguration()
- */
@Override
public boolean isPreferenceConfiguration() {
return false;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICConfigurationDescription#remove(org.eclipse.cdt.core.settings.model.ICConfigExtensionReference)
- */
@Override
public void remove(ICConfigExtensionReference ext) throws CoreException {
for (int i = 0; i < fCfgs.length; i++)
fCfgs[i].remove(ext);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICConfigurationDescription#remove(java.lang.String)
- */
@Override
public void remove(String extensionPoint) throws CoreException {
for (int i = 0; i < fCfgs.length; i++)
fCfgs[i].remove(extensionPoint);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICConfigurationDescription#removeExternalSetting(org.eclipse.cdt.core.settings.model.ICExternalSetting)
- */
@Override
public void removeExternalSetting(ICExternalSetting setting) throws WriteAccessException {
for (int i = 0; i < fCfgs.length; i++)
fCfgs[i].removeExternalSetting(setting);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICConfigurationDescription#removeExternalSettings()
- */
@Override
public void removeExternalSettings() throws WriteAccessException {
for (int i = 0; i < fCfgs.length; i++)
fCfgs[i].removeExternalSettings();
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICConfigurationDescription#removeResourceDescription(org.eclipse.cdt.core.settings.model.ICResourceDescription)
- */
@Override
public void removeResourceDescription(ICResourceDescription des) throws CoreException, WriteAccessException {
throw new UnsupportedOperationException();
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICConfigurationDescription#setActive()
- */
@Override
public void setActive() throws WriteAccessException {
for (int i = 0; i < fCfgs.length; i++)
fCfgs[i].setActive();
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICConfigurationDescription#setConfigurationData(java.lang.String, org.eclipse.cdt.core.settings.model.extension.CConfigurationData)
- */
@Override
public void setConfigurationData(String buildSystemId, CConfigurationData data) throws WriteAccessException {
if (DEBUG)
@@ -443,9 +335,6 @@ public class MultiConfigDescription extends MultiItemsHolder implements ICMultiC
throw new UnsupportedOperationException();
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICConfigurationDescription#setDescription(java.lang.String)
- */
@Override
public void setDescription(String des) throws WriteAccessException {
if (DEBUG)
@@ -453,18 +342,12 @@ public class MultiConfigDescription extends MultiItemsHolder implements ICMultiC
throw new UnsupportedOperationException();
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICConfigurationDescription#setExternalSettingsProviderIds(java.lang.String[])
- */
@Override
public void setExternalSettingsProviderIds(String[] ids) {
for (int i = 0; i < fCfgs.length; i++)
fCfgs[i].setExternalSettingsProviderIds(ids);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICConfigurationDescription#setName(java.lang.String)
- */
@Override
public void setName(String name) throws WriteAccessException {
if (DEBUG)
@@ -472,77 +355,50 @@ public class MultiConfigDescription extends MultiItemsHolder implements ICMultiC
throw new UnsupportedOperationException();
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICConfigurationDescription#setReferenceInfo(java.util.Map)
- */
@Override
public void setReferenceInfo(Map<String, String> refs) throws WriteAccessException {
for (int i = 0; i < fCfgs.length; i++)
fCfgs[i].setReferenceInfo(refs);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICConfigurationDescription#setSessionProperty(org.eclipse.core.runtime.QualifiedName, java.lang.Object)
- */
@Override
public void setSessionProperty(QualifiedName name, Object value) {
for (int i = 0; i < fCfgs.length; i++)
fCfgs[i].setSessionProperty(name, value);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICConfigurationDescription#setSourceEntries(org.eclipse.cdt.core.settings.model.ICSourceEntry[])
- */
@Override
public void setSourceEntries(ICSourceEntry[] entries) throws CoreException, WriteAccessException {
for (int i = 0; i < fCfgs.length; i++)
fCfgs[i].setSourceEntries(entries);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICConfigurationDescription#updateExternalSettingsProviders(java.lang.String[])
- */
@Override
public void updateExternalSettingsProviders(String[] ids) throws WriteAccessException {
for (int i = 0; i < fCfgs.length; i++)
fCfgs[i].updateExternalSettingsProviders(ids);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICSettingContainer#getChildSettings()
- */
@Override
public ICSettingObject[] getChildSettings() {
return new ICSettingObject[0];
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICSettingObject#getConfiguration()
- */
@Override
public ICConfigurationDescription getConfiguration() {
return this;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICSettingObject#getId()
- */
@Override
public String getId() {
return fCfgs[0].getId() + "_etc"; //$NON-NLS-1$
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICSettingObject#getName()
- */
@Override
public String getName() {
return "Multiple Config Description"; //$NON-NLS-1$
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICSettingObject#getParent()
- */
@Override
public ICSettingContainer getParent() {
ICSettingContainer p = fCfgs[0].getParent();
@@ -554,9 +410,6 @@ public class MultiConfigDescription extends MultiItemsHolder implements ICMultiC
return p;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICSettingObject#getType()
- */
@Override
public int getType() {
int t = fCfgs[0].getType();
@@ -566,9 +419,6 @@ public class MultiConfigDescription extends MultiItemsHolder implements ICMultiC
return t;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICSettingObject#isReadOnly()
- */
@Override
public boolean isReadOnly() {
for (int i = 0; i < fCfgs.length; i++)
@@ -583,9 +433,6 @@ public class MultiConfigDescription extends MultiItemsHolder implements ICMultiC
cfg.setReadOnly(readOnly, keepModify);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICSettingObject#isValid()
- */
@Override
public boolean isValid() {
for (int i = 0; i < fCfgs.length; i++)
@@ -594,9 +441,6 @@ public class MultiConfigDescription extends MultiItemsHolder implements ICMultiC
return true;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICSettingsStorage#getStorage(java.lang.String, boolean)
- */
@Override
public ICStorageElement getStorage(String id, boolean create) throws CoreException {
if (DEBUG)
@@ -604,9 +448,6 @@ public class MultiConfigDescription extends MultiItemsHolder implements ICMultiC
return null;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICSettingsStorage#getStorage(java.lang.String, boolean)
- */
@Override
public ICStorageElement importStorage(String id, ICStorageElement el)
throws UnsupportedOperationException, CoreException {
@@ -615,9 +456,6 @@ public class MultiConfigDescription extends MultiItemsHolder implements ICMultiC
return null;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICSettingsStorage#removeStorage(java.lang.String)
- */
@Override
public void removeStorage(String id) throws CoreException {
for (int i = 0; i < fCfgs.length; i++)
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/MultiFileDescription.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/MultiFileDescription.java
index d4fd72a8472..e37aff0294c 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/MultiFileDescription.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/MultiFileDescription.java
@@ -27,9 +27,6 @@ public class MultiFileDescription extends MultiResourceDescription implements IC
super(res);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICFileDescription#getLanguageSetting()
- */
@Override
public ICLanguageSetting getLanguageSetting() {
if (DEBUG)
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/MultiFolderDescription.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/MultiFolderDescription.java
index 3312ec8ec53..19a69f8dc47 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/MultiFolderDescription.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/MultiFolderDescription.java
@@ -33,9 +33,6 @@ public class MultiFolderDescription extends MultiResourceDescription implements
super(res);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICFolderDescription#createLanguageSettingForContentTypes(java.lang.String, java.lang.String[])
- */
@Override
public ICLanguageSetting createLanguageSettingForContentTypes(String languageId, String[] typeIds)
throws CoreException {
@@ -44,9 +41,6 @@ public class MultiFolderDescription extends MultiResourceDescription implements
return null;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICFolderDescription#createLanguageSettingForExtensions(java.lang.String, java.lang.String[])
- */
@Override
public ICLanguageSetting createLanguageSettingForExtensions(String languageId, String[] extensions)
throws CoreException {
@@ -55,9 +49,6 @@ public class MultiFolderDescription extends MultiResourceDescription implements
return null;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICFolderDescription#getLanguageSettingForFile(java.lang.String)
- */
@Override
public ICLanguageSetting getLanguageSettingForFile(String fileName) {
ICLanguageSetting ls0 = ((ICFolderDescription) fRess[0]).getLanguageSettingForFile(fileName);
@@ -73,9 +64,6 @@ public class MultiFolderDescription extends MultiResourceDescription implements
return ls0;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICFolderDescription#getLanguageSettings()
- */
@Override
public ICLanguageSetting[][] getLanguageSettingsM(Comparator<Object> comp) {
ICLanguageSetting[][] ls = new ICLanguageSetting[fRess.length][];
@@ -88,9 +76,6 @@ public class MultiFolderDescription extends MultiResourceDescription implements
return ls;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICFolderDescription#getNestedResourceDescription(org.eclipse.core.runtime.IPath, boolean)
- */
@Override
public ICResourceDescription getNestedResourceDescription(IPath relPath, boolean exactPath) {
if (DEBUG)
@@ -98,9 +83,6 @@ public class MultiFolderDescription extends MultiResourceDescription implements
return null;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICFolderDescription#getNestedResourceDescriptions(int)
- */
@Override
public ICResourceDescription[] getNestedResourceDescriptions(int kind) {
if (DEBUG)
@@ -108,9 +90,6 @@ public class MultiFolderDescription extends MultiResourceDescription implements
return null;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICFolderDescription#getNestedResourceDescriptions()
- */
@Override
public ICResourceDescription[] getNestedResourceDescriptions() {
if (DEBUG)
@@ -118,9 +97,6 @@ public class MultiFolderDescription extends MultiResourceDescription implements
return null;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICFolderDescription#isRoot()
- */
@Override
public boolean isRoot() {
for (int i = 0; i < fRess.length; i++)
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/MultiResourceDescription.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/MultiResourceDescription.java
index 19be108946a..dc2acaada0d 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/MultiResourceDescription.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/MultiResourceDescription.java
@@ -39,9 +39,7 @@ public abstract class MultiResourceDescription extends MultiItemsHolder implemen
fRess = res;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICResourceDescription#canExclude(boolean)
- *
+ /*
* returns TRUE only if all res.configurations return true
*/
@Override
@@ -52,9 +50,6 @@ public abstract class MultiResourceDescription extends MultiItemsHolder implemen
return true;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICResourceDescription#getParentFolderDescription()
- */
@Override
public ICFolderDescription getParentFolderDescription() {
if (DEBUG)
@@ -62,9 +57,6 @@ public abstract class MultiResourceDescription extends MultiItemsHolder implemen
throw new UnsupportedOperationException();
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICResourceDescription#getPath()
- */
@Override
public IPath getPath() {
IPath p = fRess[0].getPath();
@@ -78,9 +70,6 @@ public abstract class MultiResourceDescription extends MultiItemsHolder implemen
throw new UnsupportedOperationException();
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICResourceDescription#isExcluded()
- */
@Override
public boolean isExcluded() {
for (int i = 0; i < fRess.length; i++)
@@ -89,27 +78,18 @@ public abstract class MultiResourceDescription extends MultiItemsHolder implemen
return true;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICResourceDescription#setExcluded(boolean)
- */
@Override
public void setExcluded(boolean excluded) throws WriteAccessException {
for (int i = 0; i < fRess.length; i++)
fRess[i].setExcluded(excluded);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICResourceDescription#setPath(org.eclipse.core.runtime.IPath)
- */
@Override
public void setPath(IPath path) throws WriteAccessException {
for (int i = 0; i < fRess.length; i++)
fRess[i].setPath(path);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICSettingContainer#getChildSettings()
- */
@Override
public ICSettingObject[] getChildSettings() {
if (DEBUG)
@@ -117,9 +97,7 @@ public abstract class MultiResourceDescription extends MultiItemsHolder implemen
throw new UnsupportedOperationException();
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICSettingObject#getConfiguration()
- *
+ /*
* returns multi-configuration object
*/
@Override
@@ -133,25 +111,17 @@ public abstract class MultiResourceDescription extends MultiItemsHolder implemen
return fCfg;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICSettingObject#getId()
- */
@Override
public String getId() {
return fRess[0].getId() + "_etc"; //$NON-NLS-1$
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICSettingObject#getName()
- */
@Override
public String getName() {
return "Multiple Resource Description"; //$NON-NLS-1$
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICSettingObject#getParent()
- *
+ /*
* If there's the same parent for all res cfgs, return it.
* Else return null;
*/
@@ -166,9 +136,7 @@ public abstract class MultiResourceDescription extends MultiItemsHolder implemen
return sc;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICSettingObject#getType()
- *
+ /*
* If there's the same type for all res cfgs, return it.
* Else return null;
*/
@@ -181,9 +149,6 @@ public abstract class MultiResourceDescription extends MultiItemsHolder implemen
return t;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICSettingObject#isReadOnly()
- */
@Override
public boolean isReadOnly() {
for (int i = 0; i < fRess.length; i++)
@@ -192,9 +157,6 @@ public abstract class MultiResourceDescription extends MultiItemsHolder implemen
return true;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICSettingObject#isValid()
- */
@Override
public boolean isValid() {
for (int i = 0; i < fRess.length; i++)
@@ -203,9 +165,6 @@ public abstract class MultiResourceDescription extends MultiItemsHolder implemen
return true;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.ICMultiItemsHolder#getItems()
- */
@Override
public Object[] getItems() {
return fRess;
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/ResourceChangeHandler.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/ResourceChangeHandler.java
index abbe02ab4b9..258ab058f2f 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/ResourceChangeHandler.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/ResourceChangeHandler.java
@@ -284,36 +284,20 @@ public class ResourceChangeHandler extends ResourceChangeHandlerBase implements
return new RcMoveHandler();
}
- /*
- * I S a v e P a r t i c i p a n t
- */
-
- /* (non-Javadoc)
- * @see org.eclipse.core.resources.ISaveParticipant#saving(org.eclipse.core.resources.ISaveContext)
- */
@Override
public void saving(ISaveContext context) throws CoreException {
//Request a resource delta to be used on next activation.
context.needDelta();
}
- /* (non-Javadoc)
- * @see org.eclipse.core.resources.ISaveParticipant#doneSaving(org.eclipse.core.resources.ISaveContext)
- */
@Override
public void doneSaving(ISaveContext context) {
}
- /* (non-Javadoc)
- * @see org.eclipse.core.resources.ISaveParticipant#prepareToSave(org.eclipse.core.resources.ISaveContext)
- */
@Override
public void prepareToSave(ISaveContext context) throws CoreException {
}
- /* (non-Javadoc)
- * @see org.eclipse.core.resources.ISaveParticipant#rollback(org.eclipse.core.resources.ISaveContext)
- */
@Override
public void rollback(ISaveContext context) {
}
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/SetCProjectDescriptionOperation.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/SetCProjectDescriptionOperation.java
index 4136fa401d9..329046d18db 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/SetCProjectDescriptionOperation.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/SetCProjectDescriptionOperation.java
@@ -133,6 +133,13 @@ public class SetCProjectDescriptionOperation extends CModelOperation {
fSetDescription, delta);
cProject.close(); // Why?
+ // M-A.L: Here is an explanation I came up with from an investigation I did a long time ago (https://bugs.eclipse.org/bugs/show_bug.cgi?id=349564#c10) :
+ // "Some information in the CModel cache depends on the CProjectDescription. For example,
+ // CContainerInfo caches the non-C resources (like excluded files). By closing the CProject,
+ // that cache is deleted and rebuilt from CProjectDescription when needed. As a test,
+ // I removed this line and excluded some files then I could see the cache not
+ // being rebuilt and the icons for exclusion became out of sync."
+ // If you are tempted to remove this line please consider this.
// ExternalSettingsManager.getInstance().updateDepentents(delta);
@@ -170,8 +177,6 @@ public class SetCProjectDescriptionOperation extends CModelOperation {
// /*
// * Instead of using the workspace scheduling rule, use a more refined project scoped rule.
// * This must contain the rule in CConfigBasedDescriptor.setApply(...)
- // * (non-Javadoc)
- // * @see org.eclipse.cdt.internal.core.model.CModelOperation#getSchedulingRule()
// */
// @Override
// public ISchedulingRule getSchedulingRule() {
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/xml/XmlProjectDescriptionStorage.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/xml/XmlProjectDescriptionStorage.java
index 6a16807b649..a6df97cb85a 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/xml/XmlProjectDescriptionStorage.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/xml/XmlProjectDescriptionStorage.java
@@ -176,7 +176,7 @@ public class XmlProjectDescriptionStorage extends AbstractCProjectDescriptionSto
// end Bug 249951 & Bug 310007
serializingLock.acquire();
LanguageSettingsProvidersSerializer.serializeLanguageSettings(fDes);
- projectModificaitonStamp = serialize(fDes.getProject(),
+ projectModificationStamp = serialize(fDes.getProject(),
ICProjectDescriptionStorageType.STORAGE_FILE_NAME, fElement);
((ContributedEnvironment) CCorePlugin.getDefault().getBuildEnvironmentManager()
.getContributedEnvironment()).serialize(fDes);
@@ -192,7 +192,7 @@ public class XmlProjectDescriptionStorage extends AbstractCProjectDescriptionSto
* Volatile provides a memory barrier in Java 5+ */
private volatile Reference<ICProjectDescription> fProjectDescription = new SoftReference<>(null);
/** The last modification stamp of the .cproject project description file */
- private volatile long projectModificaitonStamp = IResource.NULL_STAMP;
+ private volatile long projectModificationStamp = IResource.NULL_STAMP;
/** A lock that is held during project description serialization
* This lock is also head during load to prevent a load overlapping
@@ -305,9 +305,9 @@ public class XmlProjectDescriptionStorage extends AbstractCProjectDescriptionSto
// If loaded, and we have cached the modification stamp, reload
long currentModificationStamp = getModificationStamp(
project.getFile(ICProjectDescriptionStorageType.STORAGE_FILE_NAME));
- if (projectModificaitonStamp != currentModificationStamp) {
+ if (projectModificationStamp != currentModificationStamp) {
setCurrentDescription(null, true);
- projectModificaitonStamp = currentModificationStamp;
+ projectModificationStamp = currentModificationStamp;
return true;
}
return false;
@@ -367,8 +367,6 @@ public class XmlProjectDescriptionStorage extends AbstractCProjectDescriptionSto
}
/* Sets the current read-only descriptions -- uses the write lock
- * (non-Javadoc)
- * @see org.eclipse.cdt.core.settings.model.AbstractCProjectDescriptionStorage#setCurrentDescription(org.eclipse.cdt.core.settings.model.ICProjectDescription, boolean)
*/
@Override
public boolean setCurrentDescription(ICProjectDescription des, boolean overwriteIfExists) {
@@ -501,7 +499,7 @@ public class XmlProjectDescriptionStorage extends AbstractCProjectDescriptionSto
ICProjectDescriptionStorageType.STORAGE_FILE_NAME, true, false, false);
try {
// Update the modification stamp
- projectModificaitonStamp = getModificationStamp(
+ projectModificationStamp = getModificationStamp(
project.getFile(ICProjectDescriptionStorageType.STORAGE_FILE_NAME));
CProjectDescription des = new CProjectDescription(project, new XmlStorage(storage), storage, true,
false);
@@ -548,7 +546,8 @@ public class XmlProjectDescriptionStorage extends AbstractCProjectDescriptionSto
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.METHOD, "xml"); //$NON-NLS-1$
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); //$NON-NLS-1$
- transformer.setOutputProperty(OutputKeys.INDENT, "yes"); //$NON-NLS-1$
+ // Indentation is done with XmlUtil.prettyFormat(doc)
+ transformer.setOutputProperty(OutputKeys.INDENT, "no"); //$NON-NLS-1$
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(stream);
transformer.transform(source, result);
@@ -586,6 +585,7 @@ public class XmlProjectDescriptionStorage extends AbstractCProjectDescriptionSto
utfString = stream.toString("UTF-8"); //$NON-NLS-1$
String eol = Util.getLineSeparator(projectFile);
utfString = XmlUtil.replaceLineSeparatorInternal(utfString, eol);
+ utfString = XmlUtil.insertNewlineAfterXMLVersionTag(utfString, eol);
} finally {
if (stream != null)
stream.close(); // Cleanup the stream
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/xml/XmlStorageElement.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/xml/XmlStorageElement.java
index 45e6cec2b5b..47941d136b6 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/xml/XmlStorageElement.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/xml/XmlStorageElement.java
@@ -514,7 +514,10 @@ public class XmlStorageElement implements ICStorageElement {
try {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
Transformer transformer = TransformerFactory.newInstance().newTransformer();
- transformer.setOutputProperty(OutputKeys.INDENT, "yes"); //$NON-NLS-1$
+ // Indentation is done with XmlUtil.prettyFormat(doc).
+ // For debugging, the prettyFormat may not have been run yet,
+ // so turning this to "yes" may be helpful on occasion.
+ transformer.setOutputProperty(OutputKeys.INDENT, "no"); //$NON-NLS-1$
DOMSource source = new DOMSource(fElement);
StreamResult result = new StreamResult(stream);
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/xml2/XmlProjectDescriptionStorage2.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/xml2/XmlProjectDescriptionStorage2.java
index e71a55485d6..0503a7165ed 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/xml2/XmlProjectDescriptionStorage2.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/xml2/XmlProjectDescriptionStorage2.java
@@ -78,8 +78,6 @@ public class XmlProjectDescriptionStorage2 extends XmlProjectDescriptionStorage
/*
* Check for external modification in the module files in the .csettings directory
- * (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.settings.model.xml.XmlProjectDescriptionStorage#checkExternalModification()
*/
@Override
protected synchronized boolean checkExternalModification() {
@@ -165,8 +163,6 @@ public class XmlProjectDescriptionStorage2 extends XmlProjectDescriptionStorage
* - We serialize the storageModule children of the CConfiguration elements (in the org.eclipse.cdt.settings module)
* to separate files in the .csettings directory to prevent unmanageably large XML deltas
* Return the modification stamp of the main .cproject file as our super method does
- * (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.settings.model.xml.XmlProjectDescriptionStorage#serialize(org.eclipse.core.resources.IContainer, java.lang.String, org.eclipse.cdt.core.settings.model.ICStorageElement)
*/
@Override
protected long serialize(IContainer container, String file, ICStorageElement element) throws CoreException {
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/ASTTypeUtil.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/ASTTypeUtil.java
index 0ea597d0485..213ea822bb6 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/ASTTypeUtil.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/ASTTypeUtil.java
@@ -89,7 +89,7 @@ public class ASTTypeUtil {
// sizes of type strings from getting out of control for certain code patterns.
private static final int TYPE_STRING_LENGTH_THRESHOLD = 100000;
- private static final ThreadLocal<Set<IBinding>> fSourceFileOnlyCheckInProgress = new ThreadLocal<Set<IBinding>>() {
+ private static final ThreadLocal<Set<IBinding>> fSourceFileOnlyCheckInProgress = new ThreadLocal<>() {
@Override
protected Set<IBinding> initialValue() {
return new HashSet<>();
@@ -649,8 +649,9 @@ public class ASTTypeUtil {
// requirement of appendStringReference().
if (cachedResult.length() > TYPE_STRING_LENGTH_THRESHOLD) {
appendStringReference(cachedResult, result);
+ } else {
+ result.append(cachedResult);
}
- result.append(cachedResult);
return;
}
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTAlignmentSpecifier.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTAlignmentSpecifier.java
index 9d555ad597c..8e17c414e6f 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTAlignmentSpecifier.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTAlignmentSpecifier.java
@@ -20,11 +20,11 @@ package org.eclipse.cdt.core.dom.ast;
*
* Possible forms are:
* C++:
- * alignas(<type-id>)
- * alignas(<expression>)
+ * alignas(&lt;type-id&gt;)
+ * alignas(&lt;expression&gt;)
* C:
- * _Alignas(<type-id>)
- * _Alignas(<expression>)
+ * _Alignas(&lt;type-id&gt;)
+ * _Alignas(&lt;expression&gt;)
* @noimplement This interface is not intended to be implemented by clients.
* @noextend This interface is not intended to be extended by clients.
* @since 5.10
@@ -39,13 +39,13 @@ public interface IASTAlignmentSpecifier extends IASTNode {
"IASTAlignmentSpecifier.ALIGNMENT_TYPEID - Type-id in alignment specifier"); //$NON-NLS-1$
/**
- * If the specifier is of the form 'alignas(<expression>)' or '_Alignas(<expression>)',
+ * If the specifier is of the form 'alignas(&lt;expression&gt;)' or '_Alignas(&lt;expression&gt;)',
* returns the enclosed expression. Otherwise, returns null.
*/
IASTExpression getExpression();
/**
- * If the specifier is of the form 'alignas(<type-id>)' or '_Alignas(<type-id>)',
+ * If the specifier is of the form 'alignas(&lt;type-id&gt;)' or '_Alignas(&lt;type-id&gt;)',
* returns the enclosed type-id. Otherwise, returns null.
*/
IASTTypeId getTypeId();
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTBinaryExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTBinaryExpression.java
index a010247656e..af70cd64de0 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTBinaryExpression.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTBinaryExpression.java
@@ -77,37 +77,37 @@ public interface IASTBinaryExpression extends IASTExpression {
public static final int op_minus = 5;
/**
- * shift left <<
+ * shift left &lt;&lt;
*/
public static final int op_shiftLeft = 6;
/**
- * shift right >>
+ * shift right &gt;&gt;
*/
public static final int op_shiftRight = 7;
/**
- * less than <
+ * less than &lt;
*/
public static final int op_lessThan = 8;
/**
- * greater than >
+ * greater than &gt;
*/
public static final int op_greaterThan = 9;
/**
- * less than or equals <=
+ * less than or equals &lt;=
*/
public static final int op_lessEqual = 10;
/**
- * greater than or equals >=
+ * greater than or equals &gt;=
*/
public static final int op_greaterEqual = 11;
/**
- * binary and &
+ * binary and &amp;
*/
public static final int op_binaryAnd = 12;
@@ -122,7 +122,7 @@ public interface IASTBinaryExpression extends IASTExpression {
public static final int op_binaryOr = 14;
/**
- * logical and &&
+ * logical and &amp;&amp;
*/
public static final int op_logicalAnd = 15;
@@ -162,17 +162,17 @@ public interface IASTBinaryExpression extends IASTExpression {
public static final int op_minusAssign = 22;
/**
- * shift left assignment <<=
+ * shift left assignment &lt;&lt;=
*/
public static final int op_shiftLeftAssign = 23;
/**
- * shift right assign >>=
+ * shift right assign &gt;&gt;=
*/
public static final int op_shiftRightAssign = 24;
/**
- * binary and assign &=
+ * binary and assign &amp;=
*/
public static final int op_binaryAndAssign = 25;
@@ -210,13 +210,13 @@ public interface IASTBinaryExpression extends IASTExpression {
/**
* For g++, only.
- * <code>op_max</code> represents >?
+ * <code>op_max</code> represents &gt;?
*/
public static final int op_max = 32;
/**
* For g++, only.
- * <code>op_min</code> represents <?
+ * <code>op_min</code> represents &lt;?
*/
public static final int op_min = 33;
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTBinaryTypeIdExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTBinaryTypeIdExpression.java
index abcd5de01a0..3a98edeb2ee 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTBinaryTypeIdExpression.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTBinaryTypeIdExpression.java
@@ -30,7 +30,11 @@ public interface IASTBinaryTypeIdExpression extends IASTExpression {
public static enum Operator {
__is_base_of,
/** @since 6.0 */
- __is_trivially_assignable
+ __is_trivially_assignable,
+ /**
+ * @since 7.1
+ */
+ __is_same,
}
/**
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTElaboratedTypeSpecifier.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTElaboratedTypeSpecifier.java
index fa5adac9fb0..48b567b058a 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTElaboratedTypeSpecifier.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTElaboratedTypeSpecifier.java
@@ -14,7 +14,7 @@
package org.eclipse.cdt.core.dom.ast;
/**
- * This represents an elaborated type specifier in the C & C++ language grammar.
+ * This represents an elaborated type specifier in the C &amp; C++ language grammar.
*
* @noextend This interface is not intended to be extended by clients.
* @noimplement This interface is not intended to be implemented by clients.
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTFieldReference.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTFieldReference.java
index f2964382946..9aed1bff89f 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTFieldReference.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTFieldReference.java
@@ -14,8 +14,8 @@
package org.eclipse.cdt.core.dom.ast;
/**
- * This interface represents expressions that access a field reference. e.g. a.b => a
- * is the expression, b is the field name. e.g. a()->def => a() is the
+ * This interface represents expressions that access a field reference. e.g. a.b =&gt; a
+ * is the expression, b is the field name. e.g. a()-&gt;def =&gt; a() is the
* expression, def is the field name.
*
* @noextend This interface is not intended to be extended by clients.
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTMacroExpansion.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTMacroExpansion.java
index 8b4daaa8978..20b9d93bfb6 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTMacroExpansion.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTMacroExpansion.java
@@ -15,7 +15,7 @@
package org.eclipse.cdt.core.dom.ast;
/**
- * @deprecated, use IASTMacroExpansionLocation instead
+ * @deprecated Use IASTMacroExpansionLocation instead
* @noreference This interface is not intended to be referenced by clients.
*/
@Deprecated
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTNode.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTNode.java
index 685f176845d..b19df0a2ab1 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTNode.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTNode.java
@@ -63,7 +63,7 @@ public interface IASTNode {
* <p>
* Nodes that span file context into a macro expansion (and potentially out
* of the macro expansion again) result in an IASTNodeLocation[] result
- * that is of length > 1.
+ * that is of length &gt; 1.
* <p>
* We do not provide meaningful node locations for nested macro references
* (see {@link IASTPreprocessorMacroExpansion#getNestedMacroReferences()}).
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTStandardFunctionDeclarator.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTStandardFunctionDeclarator.java
index 5b16a8ad407..7b866cada12 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTStandardFunctionDeclarator.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTStandardFunctionDeclarator.java
@@ -15,7 +15,7 @@
package org.eclipse.cdt.core.dom.ast;
/**
- * This is a declarator for a non K&R C function.
+ * This is a declarator for a non K&amp;R C function.
*
* @noextend This interface is not intended to be extended by clients.
* @noimplement This interface is not intended to be implemented by clients.
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTUnaryExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTUnaryExpression.java
index 36113a7ae06..683be73d85d 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTUnaryExpression.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTUnaryExpression.java
@@ -53,7 +53,7 @@ public interface IASTUnaryExpression extends IASTExpression {
/**
* Operator ampersand.
- * {@code op_amper}: &exp
+ * {@code op_amper}: &amp;exp
*/
public static final int op_amper = 5;
@@ -129,12 +129,18 @@ public interface IASTUnaryExpression extends IASTExpression {
public static final int op_noexcept = 17;
/**
- * For GCC parsers, only. {@code op_labelReference} is used for &&label type expressions.
+ * For GCC parsers, only. {@code op_labelReference} is used for &amp;&amp;label type expressions.
* @since 5.8
*/
public static final int op_labelReference = 18;
/**
+ * For GCC parsers in C++ mode, only: '__integer_pack ( expression )'
+ * @since 6.11
+ */
+ public static final int op_integerPack = 19;
+
+ /**
* {@code OPERAND} represents the relationship between an {@code IASTUnaryExpression} and
* it's nested {@code IASTExpression}.
*/
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IFunction.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IFunction.java
index 4836983c15f..f2d2ed9047c 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IFunction.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IFunction.java
@@ -65,4 +65,12 @@ public interface IFunction extends IBinding {
* @since 5.4
*/
public boolean isNoReturn();
+
+ /**
+ * Returns {@code true} if return value of this function must not be discarded.
+ * Based on 'nodiscard' attribute in the function declaration or in C using
+ * the flag 'warn_unused_result'
+ * @since 7.0
+ */
+ public boolean isNoDiscard();
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IProblemBinding.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IProblemBinding.java
index f73170e3200..a1a7bb73c55 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IProblemBinding.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IProblemBinding.java
@@ -67,7 +67,7 @@ public interface IProblemBinding extends IBinding, IScope, IType, ISemanticProbl
public static final int SEMANTIC_INVALID_TEMPLATE_ARGUMENTS = BINDING_INVALID_TEMPLATE_ARGUMENTS;
/**
- * @deprecated, there may be additional problems.
+ * @deprecated There may be additional problems.
* @noreference This field is not intended to be referenced by clients.
*/
@Deprecated
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPASTAliasDeclaration.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPASTAliasDeclaration.java
index 723dcff8829..130f657c172 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPASTAliasDeclaration.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPASTAliasDeclaration.java
@@ -38,7 +38,7 @@ public interface ICPPASTAliasDeclaration extends IASTDeclaration, IASTNameOwner,
"ICPPASTAliasDeclaration.ALIAS_NAME - Introduced alias name"); //$NON-NLS-1$
/**
- * <code>MAPPING_TYPE<ID/code> represents the pre-existing type id which
+ * <code>MAPPING_TYPEID</code> represents the pre-existing type id which
* the new symbol aliases.
*/
public static final ASTNodeProperty TARGET_TYPEID = new ASTNodeProperty(
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPASTCastExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPASTCastExpression.java
index 7f276883075..e095152ccf7 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPASTCastExpression.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPASTCastExpression.java
@@ -23,22 +23,22 @@ import org.eclipse.cdt.core.dom.ast.IASTCastExpression;
*/
public interface ICPPASTCastExpression extends IASTCastExpression, ICPPASTExpression {
/**
- * <code>op_dynamic_cast</code> is used for dynamic_cast<>'s.
+ * <code>op_dynamic_cast</code> is used for dynamic_cast&lt;&gt;'s.
*/
public static final int op_dynamic_cast = IASTCastExpression.op_last + 1;
/**
- * <code>op_static_cast</code> is used for static_cast<>'s.
+ * <code>op_static_cast</code> is used for static_cast&lt;&gt;'s.
*/
public static final int op_static_cast = IASTCastExpression.op_last + 2;
/**
- * <oode>op_reinterpret_cast</code> is used for reinterpret_cast<>'s.
+ * <oode>op_reinterpret_cast</code> is used for reinterpret_cast&lt;&gt;'s.
*/
public static final int op_reinterpret_cast = IASTCastExpression.op_last + 3;
/**
- * <code>op_const_cast</code> is used for const_cast<>'s.
+ * <code>op_const_cast</code> is used for const_cast&lt;&gt;'s.
*/
public static final int op_const_cast = IASTCastExpression.op_last + 4;
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPASTFunctionDeclarator.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPASTFunctionDeclarator.java
index e2be17585fd..ca4304ce84c 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPASTFunctionDeclarator.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPASTFunctionDeclarator.java
@@ -101,6 +101,18 @@ public interface ICPPASTFunctionDeclarator extends IASTStandardFunctionDeclarato
public void setMutable(boolean value);
/**
+ * When used as a lambda declarator, it can be constexpr.
+ * @since 7.0
+ */
+ public boolean isConstexpr();
+
+ /**
+ * When used as a lambda declarator, it can be constexpr.
+ * @since 7.0
+ */
+ public void setConstexpr(boolean value);
+
+ /**
* Is the method pure virtual?
*/
public boolean isPureVirtual();
@@ -170,13 +182,13 @@ public interface ICPPASTFunctionDeclarator extends IASTStandardFunctionDeclarato
public void setNoexceptExpression(ICPPASTExpression expression);
/**
- * Returns the trailing return type as in <code> auto f() -> int </code>, or <code>null</code>.
+ * Returns the trailing return type as in <code> auto f() -gt; int </code>, or <code>null</code>.
* @since 5.2
*/
public IASTTypeId getTrailingReturnType();
/**
- * Trailing return type as in <code> auto f() -> int </code>.
+ * Trailing return type as in <code> auto f() -&gt; int </code>.
* @since 5.2
*/
public void setTrailingReturnType(IASTTypeId typeId);
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPASTFunctionTryBlockDeclarator.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPASTFunctionTryBlockDeclarator.java
index 9d811ee6acb..5d19877dd9f 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPASTFunctionTryBlockDeclarator.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPASTFunctionTryBlockDeclarator.java
@@ -17,7 +17,7 @@ package org.eclipse.cdt.core.dom.ast.cpp;
import org.eclipse.cdt.core.dom.ast.ASTNodeProperty;
/**
- * @deprecated, use {@link ICPPASTFunctionWithTryBlock}, instead.
+ * @deprecated Use {@link ICPPASTFunctionWithTryBlock}, instead.
* @noreference This interface is not intended to be referenced by clients.
*/
@Deprecated
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPASTReferenceOperator.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPASTReferenceOperator.java
index fb667e08eb3..4943f4684ae 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPASTReferenceOperator.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPASTReferenceOperator.java
@@ -17,14 +17,14 @@ package org.eclipse.cdt.core.dom.ast.cpp;
import org.eclipse.cdt.core.dom.ast.IASTPointerOperator;
/**
- * This is C++'s reference operator, i.e. &, used in a declarator.
+ * This is C++'s reference operator, i.e. &amp;, used in a declarator.
*
* @noextend This interface is not intended to be extended by clients.
* @noimplement This interface is not intended to be implemented by clients.
*/
public interface ICPPASTReferenceOperator extends IASTPointerOperator {
/**
- * Returns whether the operator denotes a rvalue reference (e.g. <code>int &&</code>).
+ * Returns whether the operator denotes a rvalue reference (e.g. <code>int &amp;&amp;</code>).
* @since 5.2
*/
public boolean isRValueReference();
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPASTStructuredBindingDeclaration.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPASTStructuredBindingDeclaration.java
index 8eff34af474..ff6b95412ff 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPASTStructuredBindingDeclaration.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPASTStructuredBindingDeclaration.java
@@ -32,8 +32,8 @@ import org.eclipse.jdt.annotation.Nullable;
* Examples:
* <ul>
* <li><code>auto [x, y]{coordinate};</code></li>
- * <li><code>auto & [x, y](coordinate);</code></li>
- * <li><code>auto && [x, y] = createCoordinte();</code></li>
+ * <li><code>auto &amp; [x, y](coordinate);</code></li>
+ * <li><code>auto &amp;&amp; [x, y] = createCoordinte();</code></li>
* </ul>
*
* @since 6.9
@@ -64,8 +64,8 @@ public interface ICPPASTStructuredBindingDeclaration
* Examples:
* <ul>
* <li>For <code>auto [x, y] = coordinate;</code> it returns the empty <code>Optional</code></li>
- * <li>For <code>auto & [x, y] = coordinate;</code> it returns <code>Optional.of(RefQualifier.LVALUE)</code></li>
- * <li>For <code>auto && [x, y] = createCoordinte();</code> it returns <code>Optional.of(RefQualifier.RVALUE)</code></li>
+ * <li>For <code>auto &amp; [x, y] = coordinate;</code> it returns <code>Optional.of(RefQualifier.LVALUE)</code></li>
+ * <li>For <code>auto &amp;&amp; [x, y] = createCoordinte();</code> it returns <code>Optional.of(RefQualifier.RVALUE)</code></li>
* </ul>
*
* @return The returned <code>RefQualifier</code> of the C++ declaration or <code>null</code> if there is no reference qualifier.
@@ -78,7 +78,7 @@ public interface ICPPASTStructuredBindingDeclaration
/**
* Returns the list of names declared by this structured binding declaration.
* <p>
- * Example: For <code>auto & [x, y] = coordinate;</code> it returns the names <code>x</code> and <code>y</code>.
+ * Example: For <code>auto &amp; [x, y] = coordinate;</code> it returns the names <code>x</code> and <code>y</code>.
*
* @return All declared names of the structured binding as<code>IASTName[]</code>
* @see IASTName
@@ -93,8 +93,8 @@ public interface ICPPASTStructuredBindingDeclaration
* * Examples:
* <ul>
* <li>For <code>auto [x, y]{coordinate};</code> it returns an <code>ICPPASTInitializerList</code></li>
- * <li>For <code>auto & [x, y](coordinate);</code> it returns an <code>ICPPASTConstructorInitializer</code></li>
- * <li>For <code>auto && [x, y] = createCoordinte();</code> it returns an <code>IASTEqualsInitializer</code></li>
+ * <li>For <code>auto &amp; [x, y](coordinate);</code> it returns an <code>ICPPASTConstructorInitializer</code></li>
+ * <li>For <code>auto &amp;&amp; [x, y] = createCoordinte();</code> it returns an <code>IASTEqualsInitializer</code></li>
* </ul>
*
* @return The <code>IASTInitializer</code> of this structured binding. It can be <code>null</code> if the C++ declaration is lacking an initializer.
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPASTTemplatedTypeTemplateParameter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPASTTemplatedTypeTemplateParameter.java
index 6d0d382ec0a..815f040651f 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPASTTemplatedTypeTemplateParameter.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPASTTemplatedTypeTemplateParameter.java
@@ -21,7 +21,7 @@ import org.eclipse.cdt.core.dom.ast.IASTNameOwner;
/**
* This is a template template parameter as <code> V </code> in
- * <code>template&lttemplate&lttypename T&gt class V&gt class CT;</code>
+ * <code>template&lt;template&lt;typename T&gt; class V&gt; class CT;</code>
*
* @noextend This interface is not intended to be extended by clients.
* @noimplement This interface is not intended to be implemented by clients.
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPBasicType.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPBasicType.java
index 79756f413ed..861c04f5247 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPBasicType.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPBasicType.java
@@ -22,7 +22,7 @@ import org.eclipse.cdt.core.dom.ast.IBasicType;
*/
public interface ICPPBasicType extends IBasicType {
/**
- * @deprecated, don't use the constant, more flags may be added for supporting future c++ standards.
+ * @deprecated Don't use the constant, more flags may be added for supporting future c++ standards.
* @noreference This field is not intended to be referenced by clients.
*/
@Deprecated
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPClassTemplatePartialSpecialization.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPClassTemplatePartialSpecialization.java
index e2413572319..d543fbe93b2 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPClassTemplatePartialSpecialization.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPClassTemplatePartialSpecialization.java
@@ -19,8 +19,8 @@ package org.eclipse.cdt.core.dom.ast.cpp;
* a class template in its own right.
*
* E.g.:
- * template <class T> class A {}; // the primary class template
- * template <class T> class A<T*> {}; // a partial specialization of the primary class template
+ * template &lt;class T&gt; class A {}; // the primary class template
+ * template &lt;class T&gt; class A&lt;T*&gt; {}; // a partial specialization of the primary class template
*
* @noextend This interface is not intended to be extended by clients.
* @noimplement This interface is not intended to be implemented by clients.
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPClassType.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPClassType.java
index b9632bf3fd3..a9688914cb2 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPClassType.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPClassType.java
@@ -137,4 +137,11 @@ public interface ICPPClassType extends ICompositeType, ICPPBinding {
* @since 5.5
*/
public int getVisibility(IBinding member);
+
+ /**
+ * Returns whether this type is declared 'nodiscard'.
+ *
+ * @since 7.0
+ */
+ public boolean isNoDiscard();
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPEnumeration.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPEnumeration.java
index 3379fcf428b..cd5bf4c3efb 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPEnumeration.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPEnumeration.java
@@ -43,4 +43,10 @@ public interface ICPPEnumeration extends IEnumeration, ICPPBinding {
* will be returned.
*/
ICPPScope asScope();
+
+ /**
+ * Returns weather the enum is marked as 'nodiscard'
+ * @since 7.0
+ */
+ boolean isNoDiscard();
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPNodeFactory.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPNodeFactory.java
index 11af18db9fb..49fecf38bf6 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPNodeFactory.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPNodeFactory.java
@@ -391,7 +391,7 @@ public interface ICPPNodeFactory extends INodeFactory {
/**
* Creates a new translation unit that cooperates with the given scanner in order
* to track macro-expansions and location information.
- * @scanner the preprocessor the translation unit interacts with.
+ * @param scanner the preprocessor the translation unit interacts with.
* @since 5.2
*/
@Override
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPReferenceType.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPReferenceType.java
index 76f2c6148cf..b9be8aa5211 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPReferenceType.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPReferenceType.java
@@ -27,7 +27,7 @@ public interface ICPPReferenceType extends IType {
public IType getType();
/**
- * Returns whether this is an rvalue reference (e.g: int&&)
+ * Returns whether this is an rvalue reference (e.g: int&amp;&amp;)
* @since 5.2
*/
public boolean isRValueReference();
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPTemplateNonTypeParameter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPTemplateNonTypeParameter.java
index e2dc3b2ef56..dfd3d65c7e0 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPTemplateNonTypeParameter.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPTemplateNonTypeParameter.java
@@ -24,7 +24,7 @@ import org.eclipse.cdt.core.dom.ast.IASTExpression;
*/
public interface ICPPTemplateNonTypeParameter extends ICPPTemplateParameter, ICPPVariable {
/**
- * @deprecated, use {@link ICPPTemplateParameter#getDefaultValue()}.
+ * @deprecated Use {@link ICPPTemplateParameter#getDefaultValue()}.
* @noreference This method is not intended to be referenced by clients.
*/
@Deprecated
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/gnu/IGNUASTGotoStatement.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/gnu/IGNUASTGotoStatement.java
index 8ffd30eafcd..84f45b48ed4 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/gnu/IGNUASTGotoStatement.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/gnu/IGNUASTGotoStatement.java
@@ -23,7 +23,7 @@ import org.eclipse.cdt.core.dom.ast.IASTStatement;
*
* <code>
* foo:
- * void *labelPtr = &&foo;
+ * void *labelPtr = &amp;&amp;foo;
* goto *labelPtr;
* </code>
*
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/gnu/c/ICASTKnRFunctionDeclarator.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/gnu/c/ICASTKnRFunctionDeclarator.java
index 2d1f46dca31..b198908968b 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/gnu/c/ICASTKnRFunctionDeclarator.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/gnu/c/ICASTKnRFunctionDeclarator.java
@@ -20,14 +20,14 @@ import org.eclipse.cdt.core.dom.ast.IASTFunctionDeclarator;
import org.eclipse.cdt.core.dom.ast.IASTName;
/**
- * This is the declarator for a K&R C Function.
+ * This is the declarator for a K&amp;R C Function.
*
* @noextend This interface is not intended to be extended by clients.
* @noimplement This interface is not intended to be implemented by clients.
*/
public interface ICASTKnRFunctionDeclarator extends IASTFunctionDeclarator {
/**
- * <code>PARAMETER_NAME</code> refers to the names qualified in a K&R C
+ * <code>PARAMETER_NAME</code> refers to the names qualified in a K&amp;R C
* function definition.
*/
public static final ASTNodeProperty PARAMETER_NAME = new ASTNodeProperty(
@@ -35,7 +35,7 @@ public interface ICASTKnRFunctionDeclarator extends IASTFunctionDeclarator {
/**
* <code>FUNCTION_PARAMETER</code> represents the relationship between an
- * K&R function declarator and the full parameter declarations.
+ * K&amp;R function declarator and the full parameter declarations.
*/
public static final ASTNodeProperty FUNCTION_PARAMETER = new ASTNodeProperty(
"ICASTKnRFunctionDeclarator.FUNCTION_PARAMETER - Full K&R Parameter Declaration"); //$NON-NLS-1$
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/gnu/cpp/IGPPASTBinaryExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/gnu/cpp/IGPPASTBinaryExpression.java
index cc33507d0e4..6f08087359f 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/gnu/cpp/IGPPASTBinaryExpression.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/gnu/cpp/IGPPASTBinaryExpression.java
@@ -24,12 +24,12 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTBinaryExpression;
*/
public interface IGPPASTBinaryExpression extends ICPPASTBinaryExpression {
/**
- * <code>op_max</code> represents >?
+ * <code>op_max</code> represents &gt;?
*/
public static final int op_max = IASTBinaryExpression.op_max;
/**
- * <code>op_min</code> represents <?
+ * <code>op_min</code> represents &lt;?
*/
public static final int op_min = IASTBinaryExpression.op_min;
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/parser/AbstractCLikeLanguage.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/parser/AbstractCLikeLanguage.java
index 38de308e655..04790878a4a 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/parser/AbstractCLikeLanguage.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/parser/AbstractCLikeLanguage.java
@@ -102,13 +102,13 @@ public abstract class AbstractCLikeLanguage extends AbstractLanguage implements
}
/**
- * @returns the actual parser object.
+ * @return the actual parser object.
*/
protected abstract ISourceCodeParser createParser(IScanner scanner, ParserMode parserMode,
IParserLogService logService, IIndex index);
/**
- * @returns the actual parser object, configured with additional settings.
+ * @return the actual parser object, configured with additional settings.
* @since 5.6
*/
protected ISourceCodeParser createParser(IScanner scanner, ParserMode parserMode, IParserLogService logService,
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/parser/AbstractScannerExtensionConfiguration.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/parser/AbstractScannerExtensionConfiguration.java
index 810288e77af..61d4860740f 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/parser/AbstractScannerExtensionConfiguration.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/parser/AbstractScannerExtensionConfiguration.java
@@ -155,7 +155,7 @@ public abstract class AbstractScannerExtensionConfiguration implements IScannerE
* The macro can either be of object- or of function-style.
* <pre>
* Example:
- * addMacro("max(a,b)", "(((a)>(b) ? (a) : (b))");
+ * addMacro("max(a,b)", "(((a)&gt;(b) ? (a) : (b))");
* </pre>
* @param signature the signature of the macro, see {@link IMacro#getSignature()}.
* @param value the macro value
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/parser/GNUScannerExtensionConfiguration.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/parser/GNUScannerExtensionConfiguration.java
index 212cf1e4c62..f168e395577 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/parser/GNUScannerExtensionConfiguration.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/parser/GNUScannerExtensionConfiguration.java
@@ -51,6 +51,8 @@ public abstract class GNUScannerExtensionConfiguration extends AbstractScannerEx
addMacro("__builtin_va_arg(ap,type)", "*(typeof(type) *)ap");
addMacro("__builtin_types_compatible_p(x,y)", "__builtin_types_compatible_p(sizeof(x),sizeof(y))");
addMacro("__offsetof__(x)", "(x)");
+ addMacro("__has_include", "");
+ addMacro("__has_include_next", "");
addPreprocessorKeyword(Keywords.cINCLUDE_NEXT, IPreprocessorDirective.ppInclude_next);
addPreprocessorKeyword(Keywords.cIMPORT, IPreprocessorDirective.ppImport);
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/parser/c/GCCScannerExtensionConfiguration.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/parser/c/GCCScannerExtensionConfiguration.java
index be5fcebaa0e..cf84e29ebfb 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/parser/c/GCCScannerExtensionConfiguration.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/parser/c/GCCScannerExtensionConfiguration.java
@@ -56,6 +56,7 @@ public class GCCScannerExtensionConfiguration extends GNUScannerExtensionConfigu
String mscVer = definedSymbols.get("_MSC_VER"); //$NON-NLS-1$
if (mscVer != null && Integer.valueOf(mscVer) > 0) {
+ // Note: this is also used for clang-cl.
return CONFIG_MSVC;
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/parser/c/ICParserExtensionConfiguration.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/parser/c/ICParserExtensionConfiguration.java
index 132722b448e..0a66ebee486 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/parser/c/ICParserExtensionConfiguration.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/parser/c/ICParserExtensionConfiguration.java
@@ -67,9 +67,9 @@ public interface ICParserExtensionConfiguration {
public boolean supportAlignOfUnaryExpression();
/**
- * Support for Kernighan and Richie (K&R) C.
+ * Support for Kernighan and Richie (K&amp;R) C.
*
- * @return <code>true</code> if support for K&R C should be enabled
+ * @return <code>true</code> if support for K&amp;R C should be enabled
*/
public boolean supportKnRC();
@@ -101,7 +101,7 @@ public interface ICParserExtensionConfiguration {
/**
* Skips information in brackets provided at the beginning of a parameter declaration:
* <br>
- * void accelerate([proc=marsh] const Speed &data);
+ * void accelerate([proc=marsh] const Speed &amp;data);
* @since 5.1
*/
public boolean supportParameterInfoBlock();
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/parser/cpp/GPPScannerExtensionConfiguration.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/parser/cpp/GPPScannerExtensionConfiguration.java
index c3dc69c9c3d..08c71bf393a 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/parser/cpp/GPPScannerExtensionConfiguration.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/parser/cpp/GPPScannerExtensionConfiguration.java
@@ -32,7 +32,7 @@ import org.eclipse.cdt.core.parser.Keywords;
*/
public class GPPScannerExtensionConfiguration extends GNUScannerExtensionConfiguration {
private static enum CompilerType {
- GCC, Clang, MSVC
+ GCC, Clang, ClangCl, MSVC
}
private static final int VERSION_4_2 = version(4, 2);
@@ -40,16 +40,22 @@ public class GPPScannerExtensionConfiguration extends GNUScannerExtensionConfigu
private static final int VERSION_4_6 = version(4, 6);
private static final int VERSION_4_7 = version(4, 7);
private static final int VERSION_5_0 = version(5, 0);
+ private static final int VERSION_6_0 = version(6, 0);
private static final int VERSION_8_0 = version(8, 0);
+ private static final int VERSION_10_0 = version(10, 0);
private static GPPScannerExtensionConfiguration CONFIG = new GPPScannerExtensionConfiguration();
private static GPPScannerExtensionConfiguration CONFIG_4_2 = new GPPScannerExtensionConfiguration(VERSION_4_2);
private static GPPScannerExtensionConfiguration CONFIG_4_3 = new GPPScannerExtensionConfiguration(VERSION_4_3);
private static GPPScannerExtensionConfiguration CONFIG_4_6 = new GPPScannerExtensionConfiguration(VERSION_4_6);
private static GPPScannerExtensionConfiguration CONFIG_4_7 = new GPPScannerExtensionConfiguration(VERSION_4_7);
private static GPPScannerExtensionConfiguration CONFIG_5_0 = new GPPScannerExtensionConfiguration(VERSION_5_0);
+ private static GPPScannerExtensionConfiguration CONFIG_6_0 = new GPPScannerExtensionConfiguration(VERSION_6_0);
private static GPPScannerExtensionConfiguration CONFIG_8_0 = new GPPScannerExtensionConfiguration(VERSION_8_0);
+ private static GPPScannerExtensionConfiguration CONFIG_10_0 = new GPPScannerExtensionConfiguration(VERSION_10_0);
private static GPPScannerExtensionConfiguration CONFIG_CLANG = new GPPScannerExtensionConfiguration(
CompilerType.Clang, 0 /* version is ignored for now */);
+ private static GPPScannerExtensionConfiguration CONFIG_CLANG_CL = new GPPScannerExtensionConfiguration(
+ CompilerType.ClangCl, 0 /* version is ignored for now */);
private static GPPScannerExtensionConfiguration CONFIG_MSVC = new GPPScannerExtensionConfiguration(
CompilerType.MSVC, 0 /* version is ignored for now */);
@@ -65,14 +71,17 @@ public class GPPScannerExtensionConfiguration extends GNUScannerExtensionConfigu
try {
final Map<String, String> definedSymbols = info.getDefinedSymbols();
- // Clang. Needs to be checked first since it pretends to be GCC too.
+ // Clang. Needs to be checked first since it pretends to be GCC and MSVC too.
String clang = definedSymbols.get("__clang__"); //$NON-NLS-1$
+ String mscVer = definedSymbols.get("_MSC_VER"); //$NON-NLS-1$
+ boolean hasMsc = mscVer != null && Integer.valueOf(mscVer) > 0;
if (clang != null && Integer.valueOf(clang) > 0) {
+ if (hasMsc)
+ return CONFIG_CLANG_CL;
return CONFIG_CLANG;
}
- String mscVer = definedSymbols.get("_MSC_VER"); //$NON-NLS-1$
- if (mscVer != null && Integer.valueOf(mscVer) > 0) {
+ if (hasMsc) {
return CONFIG_MSVC;
}
@@ -80,9 +89,15 @@ public class GPPScannerExtensionConfiguration extends GNUScannerExtensionConfigu
int major = Integer.valueOf(definedSymbols.get("__GNUC__")); //$NON-NLS-1$
int minor = Integer.valueOf(definedSymbols.get("__GNUC_MINOR__")); //$NON-NLS-1$
int version = version(major, minor);
+ if (version >= VERSION_10_0) {
+ return CONFIG_10_0;
+ }
if (version >= VERSION_8_0) {
return CONFIG_8_0;
}
+ if (version >= VERSION_6_0) {
+ return CONFIG_6_0;
+ }
if (version >= VERSION_5_0) {
return CONFIG_5_0;
}
@@ -127,7 +142,7 @@ public class GPPScannerExtensionConfiguration extends GNUScannerExtensionConfigu
addKeyword(Keywords.c_COMPLEX, IToken.t__Complex);
addKeyword(Keywords.c_IMAGINARY, IToken.t__Imaginary);
- if (compiler != CompilerType.MSVC) {
+ if (!(compiler == CompilerType.MSVC || compiler == CompilerType.ClangCl)) {
// MSVC only defines this when compiling in C mode and /Za is used.
addMacro("__STDC__", "1");
}
@@ -173,34 +188,90 @@ public class GPPScannerExtensionConfiguration extends GNUScannerExtensionConfigu
addKeyword(GCCKeywords.cp__is_trivially_constructible, IGCCToken.tTT_is_trivially_constructible);
addKeyword(GCCKeywords.cp__is_trivially_assignable, IGCCToken.tTT_is_trivially_assignable);
}
+ if (version >= VERSION_6_0) {
+ addKeyword(GCCKeywords.cp__is_same_as, IGCCToken.tTT_is_same);
+ }
if (version >= VERSION_8_0) {
addKeyword(GCCKeywords.cp__is_constructible, IGCCToken.tTT_is_constructible);
+ addKeyword(GCCKeywords.cp__integer_pack, IGCCToken.tTT_integer_pack);
+ }
+ if (version >= VERSION_10_0) {
+ addKeyword(GCCKeywords.cp__is_same, IGCCToken.tTT_is_same);
}
- } else if (compiler == CompilerType.Clang) {
+ } else if (compiler == CompilerType.Clang || compiler == CompilerType.ClangCl) {
// As documented at
// http://clang.llvm.org/docs/LanguageExtensions.html#checks-for-type-trait-primitives.
// For now we don't make it dependent on the version.
+ // Missing ones are in comments
addKeyword(GCCKeywords.cp__has_nothrow_assign, IGCCToken.tTT_has_nothrow_assign);
- addKeyword(GCCKeywords.cp__has_nothrow_constructor, IGCCToken.tTT_has_nothrow_constructor);
+ // __has_nothrow_move_assign
addKeyword(GCCKeywords.cp__has_nothrow_copy, IGCCToken.tTT_has_nothrow_copy);
+ addKeyword(GCCKeywords.cp__has_nothrow_constructor, IGCCToken.tTT_has_nothrow_constructor);
addKeyword(GCCKeywords.cp__has_trivial_assign, IGCCToken.tTT_has_trivial_assign);
- addKeyword(GCCKeywords.cp__has_trivial_constructor, IGCCToken.tTT_has_trivial_constructor);
+ // __has_trivial_move_assign
addKeyword(GCCKeywords.cp__has_trivial_copy, IGCCToken.tTT_has_trivial_copy);
+ addKeyword(GCCKeywords.cp__has_trivial_constructor, IGCCToken.tTT_has_trivial_constructor);
addKeyword(GCCKeywords.cp__has_trivial_destructor, IGCCToken.tTT_has_trivial_destructor);
+ // __has_unique_object_representations
addKeyword(GCCKeywords.cp__has_virtual_destructor, IGCCToken.tTT_has_virtual_destructor);
addKeyword(GCCKeywords.cp__is_abstract, IGCCToken.tTT_is_abstract);
+ // __is_aggregate
+ // __is_arithmetic
+ // __is_array
+ // __is_assignable
addKeyword(GCCKeywords.cp__is_base_of, IGCCToken.tTT_is_base_of);
addKeyword(GCCKeywords.cp__is_class, IGCCToken.tTT_is_class);
+ // __is_complete_type
+ // __is_compound
+ // __is_const
+ addKeyword(GCCKeywords.cp__is_constructible, IGCCToken.tTT_is_constructible);
+ // __is_convertible
+ // __is_convertible_to
+ // __is_destructible
addKeyword(GCCKeywords.cp__is_empty, IGCCToken.tTT_is_empty);
addKeyword(GCCKeywords.cp__is_enum, IGCCToken.tTT_is_enum);
+ addKeyword(GCCKeywords.cp__is_final, IGCCToken.tTT_is_final);
+ // __is_floating_point
+ // __is_function
+ // __is_fundamental
+ // __is_integral
+ // __is_interface_class
+ addKeyword(GCCKeywords.cp__is_literal, IGCCToken.tTT_is_literal_type);
+ addKeyword(GCCKeywords.cp__is_literal_type, IGCCToken.tTT_is_literal_type);
+ // __is_lvalue_reference
+ // __is_member_object_pointer
+ // __is_member_function_pointer
+ // __is_member_pointer
+ // __is_nothrow_assignable
+ // __is_nothrow_constructible
+ // __is_nothrow_destructible
+ // __is_object
addKeyword(GCCKeywords.cp__is_pod, IGCCToken.tTT_is_pod);
+ // __is_pointer
addKeyword(GCCKeywords.cp__is_polymorphic, IGCCToken.tTT_is_polymorphic);
+ // __is_reference
+ // __is_rvalue_reference
+ addKeyword(GCCKeywords.cp__is_same, IGCCToken.tTT_is_same);
+ addKeyword(GCCKeywords.cp__is_same_as, IGCCToken.tTT_is_same);
+ // __is_scalar
+ // __is_sealed
+ // __is_signed
+ addKeyword(GCCKeywords.cp__is_standard_layout, IGCCToken.tTT_is_standard_layout);
+ addKeyword(GCCKeywords.cp__is_trivial, IGCCToken.tTT_is_trivial);
+ addKeyword(GCCKeywords.cp__is_trivially_assignable, IGCCToken.tTT_is_trivially_assignable);
+ addKeyword(GCCKeywords.cp__is_trivially_constructible, IGCCToken.tTT_is_trivially_constructible);
+ addKeyword(GCCKeywords.cp__is_trivially_copyable, IGCCToken.tTT_is_trivially_copyable);
+ // __is_trivially_destructible
addKeyword(GCCKeywords.cp__is_union, IGCCToken.tTT_is_union);
- addKeyword(GCCKeywords.cp__is_final, IGCCToken.tTT_is_final);
+ // __is_unsigned
+ // __is_void
+ // __reference_binds_to_temporary
addKeyword(GCCKeywords.cp__underlying_type, IGCCToken.tTT_underlying_type);
- addKeyword(GCCKeywords.cp__is_trivially_constructible, IGCCToken.tTT_is_trivially_constructible);
- addKeyword(GCCKeywords.cp__is_trivially_assignable, IGCCToken.tTT_is_trivially_assignable);
- addKeyword(GCCKeywords.cp__is_constructible, IGCCToken.tTT_is_constructible);
+ addKeyword(GCCKeywords.cp__integer_pack, IGCCToken.tTT_integer_pack);
+
+ addKeyword(GCCKeywords.cp__float128, IGCCToken.t__float128);
+ addKeyword(GCCKeywords.cp__int128, IGCCToken.t__int128);
+ //TODO verify other gcc ones
} else if (compiler == CompilerType.MSVC) {
// As documented at
// https://docs.microsoft.com/en-us/cpp/extensions/compiler-support-for-type-traits-cpp-component-extensions?view=vs-2017
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/parser/cpp/ICPPParserExtensionConfiguration.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/parser/cpp/ICPPParserExtensionConfiguration.java
index 4694648664d..6865ec253c4 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/parser/cpp/ICPPParserExtensionConfiguration.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/parser/cpp/ICPPParserExtensionConfiguration.java
@@ -92,9 +92,9 @@ public interface ICPPParserExtensionConfiguration {
public boolean supportAlignOfUnaryExpression();
/**
- * Support for Kernighan and Richie (K&R) C.
+ * Support for Kernighan and Richie (K&amp;R) C.
*
- * @return {@code true} if support for K&R C should be enabled
+ * @return {@code true} if support for K&amp;R C should be enabled
*/
public boolean supportKnRC();
@@ -123,7 +123,7 @@ public interface ICPPParserExtensionConfiguration {
/**
* Skips information in brackets provided at the beginning of a parameter declaration:
* <br>
- * void accelerate([proc=marsh] const Speed &data);
+ * void accelerate([proc=marsh] const Speed &amp;data);
* @since 5.1
*/
public boolean supportParameterInfoBlock();
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/rewrite/MacroExpansionExplorer.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/rewrite/MacroExpansionExplorer.java
index eb404c83eca..0b97e11e9f9 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/rewrite/MacroExpansionExplorer.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/rewrite/MacroExpansionExplorer.java
@@ -88,7 +88,7 @@ public abstract class MacroExpansionExplorer {
/**
* Returns a description for the requested step within the expansion of the region of this
* expansion explorer.
- * @throws IndexOutOfBoundsException if step < 0 or step >= getExpansionStepCount().
+ * @throws IndexOutOfBoundsException if step &lt; 0 or step &gt;= getExpansionStepCount().
*/
public abstract IMacroExpansionStep getExpansionStep(int step) throws IndexOutOfBoundsException;
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/index/IIndex.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/index/IIndex.java
index fe0bf47e65f..04c23672c1a 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/index/IIndex.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/index/IIndex.java
@@ -155,7 +155,7 @@ public interface IIndex {
*
* @param linkageID the id of the linkage in which the file has been parsed.
* @param location the IIndexFileLocation representing the location of the file
- * @param macroDictionary The names and definitions of the macros used to disambiguate between
+ * @param significantMacros The names and definitions of the macros used to disambiguate between
* variants of the file contents corresponding to different inclusion points.
* @return the file for the location, or {@code null} if the file is not present in
* the index
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/index/export/AbstractExportProjectProvider.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/index/export/AbstractExportProjectProvider.java
index 42c97a279b6..ce70474f8d0 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/index/export/AbstractExportProjectProvider.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/index/export/AbstractExportProjectProvider.java
@@ -61,7 +61,7 @@ public abstract class AbstractExportProjectProvider implements IExportProjectPro
* Returns a mapping from string option to parameter string list
* <br>
* For example, if -option p1 p2 p3 appears on the command line, then
- * the mapping option=>[p1,p2,p3] will be present in the map
+ * the mapping option=&gt;[p1,p2,p3] will be present in the map
* @return a mapping from string option to parameter string list
*/
protected Map<String, List<String>> getParsedArgs() {
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/index/export/ExternalExportProjectProvider.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/index/export/ExternalExportProjectProvider.java
index 5b9485c5395..3dcb934c3e7 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/index/export/ExternalExportProjectProvider.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/index/export/ExternalExportProjectProvider.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2014 Symbian Software Systems and others.
+ * Copyright (c) 2007, 2020 Symbian Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -9,11 +9,14 @@
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
- * Andrew Ferguson (Symbian) - Initial implementation
+ * Andrew Ferguson (Symbian) - Initial implementation
+ * Alexander Fedorov (ArSysOp) - Bug 561992
*******************************************************************************/
package org.eclipse.cdt.core.index.export;
import java.io.File;
+import java.text.DateFormat;
+import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
@@ -48,9 +51,6 @@ import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Path;
-import com.ibm.icu.text.DateFormat;
-import com.ibm.icu.text.MessageFormat;
-
/**
* An IExportProjectProvider suitable for indexing an external folder. The arguments understood by this provider
* are
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/GCCKeywords.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/GCCKeywords.java
index a14247f402a..b7374946fce 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/GCCKeywords.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/GCCKeywords.java
@@ -90,4 +90,18 @@ public class GCCKeywords {
/** @since 6.6 */
public static final char[] cp__is_constructible = "__is_constructible".toCharArray();
+
+ /** @since 6.11*/
+ public static final char[] cp__integer_pack = "__integer_pack".toCharArray();
+
+ /**
+ * This is actually for Clang but we don't maintain separate keywords right now.
+ * @since 7.1
+ */
+ public static final char[] cp__is_literal = "__is_literal".toCharArray();
+
+ /**
+ * @since 7.1
+ */
+ public static final char[] cp__is_same = "__is_same".toCharArray(), cp__is_same_as = "__is_same_as".toCharArray();
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/IGCCToken.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/IGCCToken.java
index d374401695f..61dd350c9e6 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/IGCCToken.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/IGCCToken.java
@@ -93,4 +93,12 @@ public interface IGCCToken extends IToken {
/** @since 6.6 */
int tTT_is_constructible = FIRST_RESERVED_IGCCToken + 35;
+
+ /** @since 6.11*/
+ int tTT_integer_pack = FIRST_RESERVED_IGCCToken + 36;
+
+ /**
+ * @since 7.1
+ */
+ int tTT_is_same = FIRST_RESERVED_IGCCToken + 37;
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/IProblem.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/IProblem.java
index 76c6accc4a0..4ee891997fc 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/IProblem.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/IProblem.java
@@ -123,7 +123,7 @@ public interface IProblem {
* types of problems.
*
* @param bitmask
- * @return true if ( (id & bit-mask ) != 0 )
+ * @return true if ( (id &amp; bit-mask ) != 0 )
*/
public boolean checkCategory(int bitmask);
@@ -346,6 +346,11 @@ public interface IProblem {
*/
public final static int PREPROCESSOR_MULTIPLE_USER_DEFINED_SUFFIXES_IN_CONCATENATION = PREPROCESSOR_RELATED | 0x010;
+ /**
+ * @since 7.1
+ */
+ public final static int PREPROCESSOR_INVALID_USE_OUTSIDE_PREPROCESSOR_DIRECTIVE = PREPROCESSOR_RELATED | 0x011;
+
/*
* Syntax error, detected by the parser.
*/
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/IScanner.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/IScanner.java
index 684e98ac6c1..025933621d1 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/IScanner.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/IScanner.java
@@ -124,7 +124,7 @@ public interface IScanner {
/**
* Returns a list of additional (compiler specific) suffixes which can
- * be placed on numbers. e.g. 'u' 'l' -> 1l or 1u.
+ * be placed on numbers. e.g. 'u' 'l' -&gt; 1l or 1u.
*
* @noreference This method is not intended to be referenced by clients.
*/
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/Keywords.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/Keywords.java
index beb29f190be..88b56e076db 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/Keywords.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/Keywords.java
@@ -314,6 +314,14 @@ public class Keywords {
public static final char[] cDEFINED = "defined".toCharArray();
/** @since 5.11 */
public static final char[] c__HAS_FEATURE = "__has_feature".toCharArray();
+ /**
+ * @since 7.1
+ */
+ public static final char[] c__HAS_INCLUDE = "__has_include".toCharArray();
+ /**
+ * @since 7.1
+ */
+ public static final char[] c__HAS_INCLUDE_NEXT = "__has_include_next".toCharArray();
/** @since 5.2*/
public static final char[] _Pragma = "_Pragma".toCharArray();
public static final char[] cVA_ARGS = "__VA_ARGS__".toCharArray();
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ScannerInfo.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ScannerInfo.java
index 045ab3540e3..e6cee418b21 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ScannerInfo.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ScannerInfo.java
@@ -33,9 +33,9 @@ public class ScannerInfo implements IScannerInfo {
this(macroDefinitions, null);
}
- public ScannerInfo(Map<String, String> macroDefinitions, String[] includeSearchPath) {
- definedSymbols = macroDefinitions != null ? macroDefinitions : Collections.<String, String>emptyMap();
- includePaths = includeSearchPath != null ? includeSearchPath : new String[] {};
+ public ScannerInfo(Map<String, String> definedSymbols, String[] includePaths) {
+ this.definedSymbols = definedSymbols != null ? definedSymbols : Collections.<String, String>emptyMap();
+ this.includePaths = includePaths != null ? includePaths : new String[] {};
}
@Override
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/util/ArrayUtil.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/util/ArrayUtil.java
index f1262a972f3..7d561deb2f6 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/util/ArrayUtil.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/util/ArrayUtil.java
@@ -352,7 +352,7 @@ public abstract class ArrayUtil {
/**
* Adds all elements of an array to a collection. For an {@link ArrayList} this method is
- * slightly more efficient than {@link java.util.Collections#addAll(Collection, T...)}.
+ * slightly more efficient than {@link java.util.Collections#addAll(Collection, Object...)}.
* @since 5.4
*/
@SafeVarargs
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/util/AttributeUtil.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/util/AttributeUtil.java
index 78c66dda80f..ff31b9d2c16 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/util/AttributeUtil.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/util/AttributeUtil.java
@@ -26,6 +26,8 @@ import org.eclipse.cdt.core.parser.StandardAttributes;
*/
public class AttributeUtil {
private static final String[] ATTRIBUTE_NORETURN = new String[] { "__noreturn__", StandardAttributes.NORETURN }; //$NON-NLS-1$
+ private static final String[] ATTRIBUTE_NODISCARD = new String[] { "warn_unused_result", //$NON-NLS-1$
+ StandardAttributes.NODISCARD };
// Not instantiatable.
private AttributeUtil() {
@@ -55,6 +57,14 @@ public class AttributeUtil {
}
/**
+ * Returns {@code true} if the node has a "nodiscard" attribute.
+ * @since 7.0
+ */
+ public static boolean hasNodiscardAttribute(IASTAttributeOwner node) {
+ return hasAttribute(node, ATTRIBUTE_NODISCARD);
+ }
+
+ /**
* Returns character representation of the attribute argument, or {@code null} if the attribute
* has zero or more than one argument.
*/
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/util/CharArrayObjectMap.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/util/CharArrayObjectMap.java
index de61b078028..78a91a67d0e 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/util/CharArrayObjectMap.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/util/CharArrayObjectMap.java
@@ -33,7 +33,7 @@ public class CharArrayObjectMap<T> extends CharTable {
/**
* An empty immutable {@code CharArrayObjectMap}.
*/
- public static final CharArrayObjectMap<?> EMPTY_MAP = new CharArrayObjectMap<Object>(0) {
+ public static final CharArrayObjectMap<?> EMPTY_MAP = new CharArrayObjectMap<>(0) {
@Override
public Object clone() {
return this;
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/util/CollectionUtils.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/util/CollectionUtils.java
index 850435cb8ad..a7e968a3197 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/util/CollectionUtils.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/util/CollectionUtils.java
@@ -41,7 +41,7 @@ public final class CollectionUtils {
* @throws NullPointerException if list is {@code null}
*/
public static <T> Iterator<T> reverseIterator(final List<T> list) {
- return new Iterator<T>() {
+ return new Iterator<>() {
ListIterator<T> iterator = list.listIterator(list.size());
@Override
@@ -93,7 +93,7 @@ public final class CollectionUtils {
if (iter == null)
throw new NullPointerException("iter parameter is null"); //$NON-NLS-1$
- return new Iterable<T>() {
+ return new Iterable<>() {
@Override
public Iterator<T> iterator() {
return iter;
@@ -145,7 +145,7 @@ public final class CollectionUtils {
}
/**
- * Returns a List<U> corresponding to a T in a Map<T, List<U>>. If the mapping doesn't exist,
+ * Returns a List&lt;U&gt; corresponding to a T in a Map&lt;T, List&lt;U&gt;&gt;. If the mapping doesn't exist,
* creates it with an empty list as the initial value.
* @since 5.6
*/
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/util/IContentAssistMatcher.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/util/IContentAssistMatcher.java
index 9833d1623bb..5b671489a8b 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/util/IContentAssistMatcher.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/util/IContentAssistMatcher.java
@@ -36,9 +36,9 @@ public interface IContentAssistMatcher {
char[] getPrefixForBinarySearch();
/**
- * @return If false, calling @{@link #match(char[])} can be skipped if a
+ * @return If false, calling {@link #match(char[])} can be skipped if a
* name survived a binary search using the prefix returned by
- * @{@link #getPrefixForBinarySearch()} as key.
+ * {@link #getPrefixForBinarySearch()} as key.
*/
boolean matchRequiredAfterBinarySearch();
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/util/ObjectTable.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/util/ObjectTable.java
index 331aa7ba873..3a2205c28f0 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/util/ObjectTable.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/util/ObjectTable.java
@@ -174,7 +174,7 @@ public abstract class ObjectTable<T> extends HashTable implements Iterable<T> {
*/
@Override
public Iterator<T> iterator() {
- return new Iterator<T>() {
+ return new Iterator<>() {
int nextIndex;
@Override
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/util/SegmentMatcher.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/util/SegmentMatcher.java
index 7e88ce1882d..557c25cb6eb 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/util/SegmentMatcher.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/util/SegmentMatcher.java
@@ -229,9 +229,9 @@ public class SegmentMatcher {
}
/**
- * @return If false, calling @{@link #match(char[])} can be skipped if a
+ * @return If false, calling {@link #match(char[])} can be skipped if a
* name survived a binary search using the prefix returned by
- * @{@link #getPrefixForBinarySearch()} as key.
+ * {@link #getPrefixForBinarySearch()} as key.
*/
public boolean matchRequiredAfterBinarySearch() {
return !singleSegment;
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ASTProblem.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ASTProblem.java
index 92c0d3149d1..5746be46fc1 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ASTProblem.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ASTProblem.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004, 2016 IBM Corporation and others.
+ * Copyright (c) 2004, 2020 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -12,9 +12,11 @@
* IBM - Initial API and implementation
* Anton Leherbauer (Wind River Systems)
* Markus Schorn (Wind River Systems)
+ * Alexander Fedorov (ArSysOp) - Bug 561992
*******************************************************************************/
package org.eclipse.cdt.internal.core.dom.parser;
+import java.text.MessageFormat;
import java.util.HashMap;
import java.util.Map;
@@ -24,8 +26,6 @@ import org.eclipse.cdt.core.dom.ast.IASTNode;
import org.eclipse.cdt.core.dom.ast.IASTProblem;
import org.eclipse.cdt.internal.core.parser.ParserMessages;
-import com.ibm.icu.text.MessageFormat;
-
/**
* Models problems, all problems should derive from this class.
*/
@@ -97,6 +97,8 @@ public class ASTProblem extends ASTNode implements IASTProblem {
ParserMessages.getString("ScannerProblemFactory.error.scanner.floatWithBadPrefix")); //$NON-NLS-1$
errorMessages.put(Integer.valueOf(PREPROCESSOR_MULTIPLE_USER_DEFINED_SUFFIXES_IN_CONCATENATION), ParserMessages
.getString("ScannerProblemFactory.error.preproc.multipleUserDefinedLiteralSuffixesOnStringLiteral")); //$NON-NLS-1$
+ errorMessages.put(Integer.valueOf(PREPROCESSOR_INVALID_USE_OUTSIDE_PREPROCESSOR_DIRECTIVE),
+ ParserMessages.getString("ScannerProblemFactory.error.preproc.invalidUsageOutsidePreprocDirective")); //$NON-NLS-1$
errorMessages.put(Integer.valueOf(SYNTAX_ERROR),
ParserMessages.getString("ParserProblemFactory.error.syntax.syntaxError")); //$NON-NLS-1$
errorMessages.put(Integer.valueOf(MISSING_SEMICOLON),
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ASTTranslationUnit.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ASTTranslationUnit.java
index 1e7b1d279b9..158d2b515c3 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ASTTranslationUnit.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ASTTranslationUnit.java
@@ -95,13 +95,13 @@ public abstract class ASTTranslationUnit extends ASTNode implements IASTTranslat
private IBuiltinBindingsProvider fBuiltinBindingsProvider;
// Caches
- private final ThreadLocal<WeakHashMap<IType, String>> fUnnormalizedTypeStringCache = new ThreadLocal<WeakHashMap<IType, String>>() {
+ private final ThreadLocal<WeakHashMap<IType, String>> fUnnormalizedTypeStringCache = new ThreadLocal<>() {
@Override
protected WeakHashMap<IType, String> initialValue() {
return new WeakHashMap<>();
}
};
- private final ThreadLocal<WeakHashMap<IType, String>> fNormalizedTypeStringCache = new ThreadLocal<WeakHashMap<IType, String>>() {
+ private final ThreadLocal<WeakHashMap<IType, String>> fNormalizedTypeStringCache = new ThreadLocal<>() {
@Override
protected WeakHashMap<IType, String> initialValue() {
return new WeakHashMap<>();
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/AbstractGNUSourceCodeParser.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/AbstractGNUSourceCodeParser.java
index 9698bfac8e5..58e28e2f276 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/AbstractGNUSourceCodeParser.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/AbstractGNUSourceCodeParser.java
@@ -2816,6 +2816,9 @@ public abstract class AbstractGNUSourceCodeParser implements ISourceCodeParser {
case IGCCToken.t__attribute__:
case IGCCToken.tTT_underlying_type:
+ // msvc-compatibility
+ case IGCCToken.t__declspec:
+
// content assist
case IToken.tCOMPLETION:
return true;
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/CompositeValue.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/CompositeValue.java
index c3192b799f6..4c8a1eb6515 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/CompositeValue.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/CompositeValue.java
@@ -160,7 +160,7 @@ public final class CompositeValue implements IValue {
// The set of class types for which composite value creation is in progress on each thread.
// Used to guard against infinite recursion due to a class (illegally) aggregating itself.
- private static final ThreadLocal<Set<ICPPClassType>> fCreateInProgress = new ThreadLocal<Set<ICPPClassType>>() {
+ private static final ThreadLocal<Set<ICPPClassType>> fCreateInProgress = new ThreadLocal<>() {
@Override
protected Set<ICPPClassType> initialValue() {
return new TreeSet<>((type1, type2) -> {
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/GCCBuiltinSymbolProvider.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/GCCBuiltinSymbolProvider.java
index bf2469eb5f9..407c02e1d05 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/GCCBuiltinSymbolProvider.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/GCCBuiltinSymbolProvider.java
@@ -53,6 +53,8 @@ import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPImplicitTypedef;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPPointerType;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPQualifierType;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPReferenceType;
+import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPExecution;
+import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.ExecBuiltin;
/**
* This is the IBuiltinBindingsProvider used to implement the "Other" built-in GCC symbols defined:
@@ -188,9 +190,25 @@ public class GCCBuiltinSymbolProvider implements IBuiltinBindingsProvider {
function("bool", "__atomic_always_lock_free", "size_t", "void*");
function("bool", "__atomic_is_lock_free", "size_t", "void*");
+ ICPPExecution builtinFfs = new ExecBuiltin(ExecBuiltin.BUILTIN_FFS);
+ ICPPExecution builtinFfsl = new ExecBuiltin(ExecBuiltin.BUILTIN_FFSL);
+ ICPPExecution builtinFfsll = new ExecBuiltin(ExecBuiltin.BUILTIN_FFSLL);
+ ICPPExecution builtinCtz = new ExecBuiltin(ExecBuiltin.BUILTIN_CTZ);
+ ICPPExecution builtinCtzl = new ExecBuiltin(ExecBuiltin.BUILTIN_CTZL);
+ ICPPExecution builtinCtzll = new ExecBuiltin(ExecBuiltin.BUILTIN_CTZLL);
+ ICPPExecution builtinPopcount = new ExecBuiltin(ExecBuiltin.BUILTIN_POPCOUNT);
+ ICPPExecution builtinPopcountl = new ExecBuiltin(ExecBuiltin.BUILTIN_POPCOUNTL);
+ ICPPExecution builtinPopcountll = new ExecBuiltin(ExecBuiltin.BUILTIN_POPCOUNTLL);
+ ICPPExecution builtinParity = new ExecBuiltin(ExecBuiltin.BUILTIN_PARITY);
+ ICPPExecution builtinParityl = new ExecBuiltin(ExecBuiltin.BUILTIN_PARITYL);
+ ICPPExecution builtinParityll = new ExecBuiltin(ExecBuiltin.BUILTIN_PARITYLL);
+ ICPPExecution builtinAbs = new ExecBuiltin(ExecBuiltin.BUILTIN_ABS);
+ ICPPExecution builtinLabs = new ExecBuiltin(ExecBuiltin.BUILTIN_LABS);
+ ICPPExecution builtinLlabs = new ExecBuiltin(ExecBuiltin.BUILTIN_LLABS);
+
// Other Builtins (https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html) [incomplete]
function("void", "__builtin_abort");
- function("int", "__builtin_abs", "int");
+ function("int", "__builtin_abs", builtinAbs, "int");
function("double", "__builtin_acos", "double");
function("float", "__builtin_acosf", "float");
function("long double", "__builtin_acosl", "long double");
@@ -224,6 +242,10 @@ public class GCCBuiltinSymbolProvider implements IBuiltinBindingsProvider {
function("double", "__builtin_cimag", "complex double");
function("float", "__builtin_cimagf", "complex float");
function("long double", "__builtin_cimagl", "complex long double");
+ function("void", "__builtin___clear_cache", "void*", "void*");
+ function("int", "__builtin_clrsb", "int");
+ function("int", "__builtin_clrsbl", "long");
+ function("int", "__builtin_clrsbll", "long long");
function("int", "__builtin_clz", "unsigned int");
function("int", "__builtin_clzl", "unsigned long");
function("int", "__builtin_clzll", "unsigned long long");
@@ -243,9 +265,9 @@ public class GCCBuiltinSymbolProvider implements IBuiltinBindingsProvider {
function("double", "__builtin_creal", "complex double");
function("float", "__builtin_crealf", "complex float");
function("long double", "__builtin_creall", "complex long double");
- function("int", "__builtin_ctz", "unsigned int");
- function("int", "__builtin_ctzl", "unsigned long");
- function("int", "__builtin_ctzll", "unsigned long long");
+ function("int", "__builtin_ctz", builtinCtz, "unsigned int");
+ function("int", "__builtin_ctzl", builtinCtzl, "unsigned long");
+ function("int", "__builtin_ctzll", builtinCtzll, "unsigned long long");
function("double", "__builtin_erf", "double");
function("float", "__builtin_erff", "float");
function("long double", "__builtin_erfl", "long double");
@@ -265,15 +287,17 @@ public class GCCBuiltinSymbolProvider implements IBuiltinBindingsProvider {
function("float", "__builtin_expm1f", "float");
function("long double", "__builtin_expm1l", "long double");
function("long", "__builtin_expect", "long", "long");
+ function("long", "__builtin_expect_with_probability", "long", "long", "double");
+ function("unsigned long long int", "__builtin_extend_pointer", "void*");
function("double", "__builtin_fabs", "double");
function("float", "__builtin_fabsf", "float");
function("long double", "__builtin_fabsl", "long double");
function("double", "__builtin_fdim", "double", "double");
function("float", "__builtin_fdimf", "float", "float");
function("long double", "__builtin_fdiml", "long double", "long double");
- function("int", "__builtin_ffs", "unsigned int");
- function("int", "__builtin_ffsl", "unsigned long");
- function("int", "__builtin_ffsll", "unsigned long long");
+ function("int", "__builtin_ffs", builtinFfs, "unsigned int");
+ function("int", "__builtin_ffsl", builtinFfsl, "unsigned long");
+ function("int", "__builtin_ffsll", builtinFfsll, "unsigned long long");
function("double", "__builtin_floor", "double");
function("float", "__builtin_floorf", "float");
function("long double", "__builtin_floorl", "long double");
@@ -295,6 +319,8 @@ public class GCCBuiltinSymbolProvider implements IBuiltinBindingsProvider {
function("double", "__builtin_frexp", "double", "int*");
function("float", "__builtin_frexpf", "float", "int*");
function("long double", "__builtin_frexpl", "long double", "int*");
+ function("int", "__builtin_goacc_parlevel_id", "int");
+ function("int", "__builtin_goacc_parlevel_size", "int");
function("double", "__builtin_huge_val");
function("float", "__builtin_huge_valf");
function("long double", "__builtin_huge_vall");
@@ -306,8 +332,12 @@ public class GCCBuiltinSymbolProvider implements IBuiltinBindingsProvider {
function("int", "__builtin_ilogbl", "long double");
function("long long", "__builtin_imaxabs", "long long");
function("double", "__builtin_inf");
+ function("_Decimal32", "__builtin_infd32");
+ function("_Decimal64", "__builtin_infd64");
+ function("_Decimal128", "__builtin_infd128");
function("float", "__builtin_inff");
function("long double", "__builtin_infl");
+ function("int", "__builtin_isinf_sign", "...");
function("bool", "__builtin_isfinite", "double");
function("bool", "__builtin_isgreater", "float", "float");
function("bool", "__builtin_isgreaterequal", "float", "float");
@@ -318,14 +348,17 @@ public class GCCBuiltinSymbolProvider implements IBuiltinBindingsProvider {
function("bool", "__builtin_isnan", "double");
function("bool", "__builtin_isnormal", "double");
function("bool", "__builtin_isunordered", "float", "float");
- function("long", "__builtin_labs", "long");
+ function("long", "__builtin_labs", builtinLabs, "long");
function("double", "__builtin_ldexp", "double", "int");
function("float", "__builtin_ldexpf", "float", "int");
function("long double", "__builtin_ldexpl", "long double", "int");
function("double", "__builtin_lgamma", "double");
function("float", "__builtin_lgammaf", "float");
function("long double", "__builtin_lgammal", "long double");
- function("long long", "__builtin_llabs", "long long");
+ function("int", "__builtin_LINE"); //TODO: This should technically be a constant integer expression
+ function("const char *", "__builtin_FUNCTION");
+ function("const char *", "__builtin_FILE");
+ function("long long", "__builtin_llabs", builtinLlabs, "long long");
function("long long", "__builtin_llrint", "double");
function("long long", "__builtin_llrintf", "float");
function("long long", "__builtin_llrintl", "long double");
@@ -361,6 +394,9 @@ public class GCCBuiltinSymbolProvider implements IBuiltinBindingsProvider {
function("void*", "__builtin_memmove", "void*", "const void*", "size_t"); // not in the manual
function("void*", "__builtin_memset", "void*", "int", "size_t");
function("double", "__builtin_nan", "const char*");
+ function("_Decimal32", "__builtin_nand32");
+ function("_Decimal64", "__builtin_nand64");
+ function("_Decimal128", "__builtin_nand128");
function("float", "__builtin_nanf", "const char*");
function("long double", "__builtin_nanl", "const char*");
function("double", "__builtin_nans", "const char*");
@@ -375,12 +411,12 @@ public class GCCBuiltinSymbolProvider implements IBuiltinBindingsProvider {
function("double", "__builtin_nexttoward", "double", "long double");
function("float", "__builtin_nexttowardf", "float", "long double");
function("long double", "__builtin_nexttowardl", "long double", "long double");
- function("int", "__builtin_parity", "unsigned int");
- function("int", "__builtin_parityl", "unsigned long");
- function("int", "__builtin_parityll", "unsigned long long");
- function("int", "__builtin_popcount", "unsigned int");
- function("int", "__builtin_popcountl", "unsigned long");
- function("int", "__builtin_popcountll", "unsigned long long");
+ function("int", "__builtin_parity", builtinParity, "unsigned int");
+ function("int", "__builtin_parityl", builtinParityl, "unsigned long");
+ function("int", "__builtin_parityll", builtinParityll, "unsigned long long");
+ function("int", "__builtin_popcount", builtinPopcount, "unsigned int");
+ function("int", "__builtin_popcountl", builtinPopcountl, "unsigned long");
+ function("int", "__builtin_popcountll", builtinPopcountll, "unsigned long long");
function("double", "__builtin_pow", "double", "double");
function("float", "__builtin_powf", "float", "float");
function("long double", "__builtin_powl", "long double", "long double");
@@ -445,10 +481,12 @@ public class GCCBuiltinSymbolProvider implements IBuiltinBindingsProvider {
function("double", "__builtin_tgamma", "double");
function("float", "__builtin_tgammaf", "float");
function("long double", "__builtin_tgammal", "long double");
+ function("void", "__builtin_trap");
function("double", "__builtin_trunc", "double");
function("float", "__builtin_truncf", "float");
function("long double", "__builtin_truncl", "long double");
function("int", "__builtin_types_compatible_p", "", "");
+ function("void", "__builtin_unreachable");
function("int", "__builtin_vprintf", "const char*", "va_list");
function("int", "__builtin_vscanf", "const char*", "va_list");
function("int", "__builtin_vsnprintf", "char*", "size_t", "const char*", "va_list");
@@ -481,6 +519,13 @@ public class GCCBuiltinSymbolProvider implements IBuiltinBindingsProvider {
}
private void function(String returnType, String name, String... parameterTypes) {
+ function(returnType, name, null, parameterTypes);
+ }
+
+ /*
+ * Create a function which can possibly be constexpr-evaluated
+ */
+ private void function(String returnType, String name, ICPPExecution exec, String... parameterTypes) {
int len = parameterTypes.length;
boolean varargs = len > 0 && parameterTypes[len - 1].equals("...");
if (varargs)
@@ -491,14 +536,14 @@ public class GCCBuiltinSymbolProvider implements IBuiltinBindingsProvider {
for (int i = 0; i < len; i++) {
IType pType = toType(parameterTypes[i]);
pTypes[i] = pType;
- theParms[i] = fCpp ? new CPPBuiltinParameter(pType) : new CBuiltinParameter(pType);
+ theParms[i] = fCpp ? new CPPBuiltinParameter(pType, i) : new CBuiltinParameter(pType);
}
IType rt = toType(returnType);
IFunctionType ft = fCpp ? new CPPFunctionType(rt, pTypes, null) : new CFunctionType(rt, pTypes);
IBinding b = fCpp
- ? new CPPImplicitFunction(toCharArray(name), fScope, (ICPPFunctionType) ft, (ICPPParameter[]) theParms,
- false, varargs)
+ ? new CPPBuiltinImplicitFunction(toCharArray(name), fScope, (ICPPFunctionType) ft,
+ (ICPPParameter[]) theParms, varargs, exec)
: new CImplicitFunction(toCharArray(name), fScope, ft, theParms, varargs);
fBindingList.add(b);
}
@@ -591,6 +636,15 @@ public class GCCBuiltinSymbolProvider implements IBuiltinBindingsProvider {
} else if (tstr.equals("char")) {
Kind kind = Kind.eChar;
t = fCpp ? new CPPBasicType(kind, q) : new CBasicType(kind, q);
+ } else if (tstr.equals("_Decimal32")) {
+ Kind kind = Kind.eDecimal32;
+ t = fCpp ? new CPPBasicType(kind, q) : new CBasicType(kind, q);
+ } else if (tstr.equals("_Decimal64")) {
+ Kind kind = Kind.eDecimal64;
+ t = fCpp ? new CPPBasicType(kind, q) : new CBasicType(kind, q);
+ } else if (tstr.equals("_Decimal128")) {
+ Kind kind = Kind.eDecimal128;
+ t = fCpp ? new CPPBasicType(kind, q) : new CBasicType(kind, q);
} else if (tstr.equals("int")) {
Kind kind = Kind.eInt;
t = fCpp ? new CPPBasicType(kind, q) : new CBasicType(kind, q);
@@ -632,4 +686,22 @@ public class GCCBuiltinSymbolProvider implements IBuiltinBindingsProvider {
public boolean isKnownBuiltin(char[] builtinName) {
return fKnownBuiltins.containsKey(builtinName);
}
+
+ /*
+ * A builtin function which can be evaluated in a constexpr context
+ */
+ private static class CPPBuiltinImplicitFunction extends CPPImplicitFunction {
+ private ICPPExecution execution;
+
+ public CPPBuiltinImplicitFunction(char[] name, IScope scope, ICPPFunctionType type, ICPPParameter[] params,
+ boolean takesVarArgs, ICPPExecution execution) {
+ super(name, scope, type, params, true, takesVarArgs);
+ this.execution = execution;
+ }
+
+ @Override
+ public ICPPExecution getFunctionBodyExecution() {
+ return execution;
+ }
+ }
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ITypeMarshalBuffer.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ITypeMarshalBuffer.java
index cc215747ed2..b7e352d7bf1 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ITypeMarshalBuffer.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ITypeMarshalBuffer.java
@@ -52,7 +52,7 @@ public interface ITypeMarshalBuffer {
EXEC_DECLARATION_STATEMENT = 0x05, EXEC_DECLARATOR = 0x06, EXEC_DEFAULT = 0x07,
EXEC_SIMPLE_DECLARATION = 0x08, EXEC_RETURN = 0x09, EXEC_EXPRESSION_STATEMENT = 0x0A, EXEC_IF = 0x0B,
EXEC_WHILE = 0x0C, EXEC_DO = 0x0D, EXEC_FOR = 0x0E, EXEC_RANGE_BASED_FOR = 0x0F, EXEC_SWITCH = 0x10,
- EXEC_CONSTRUCTOR_CHAIN = 0x11, EXEC_INCOMPLETE = 0x12;
+ EXEC_CONSTRUCTOR_CHAIN = 0x11, EXEC_INCOMPLETE = 0x12, EXEC_BUILTIN = 0x13;
// Can add more executions up to 0x1C, after that it will collide with TypeMarshalBuffer.UNSTORABLE_TYPE.
static final short KIND_MASK = 0x001F;
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ProblemBinding.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ProblemBinding.java
index 6c2498d59e1..2b7e6f28e83 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ProblemBinding.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ProblemBinding.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004, 2015 IBM Corporation and others.
+ * Copyright (c) 2004, 2020 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -13,9 +13,12 @@
* Markus Schorn (Wind River Systems)
* Bryan Wilkinson (QNX)
* Sergey Prigogin (Google)
+ * Alexander Fedorov (ArSysOp) - Bug 561992
*******************************************************************************/
package org.eclipse.cdt.internal.core.dom.parser;
+import java.text.MessageFormat;
+
import org.eclipse.cdt.core.dom.ILinkage;
import org.eclipse.cdt.core.dom.IName;
import org.eclipse.cdt.core.dom.ast.DOMException;
@@ -40,8 +43,6 @@ import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.EvalFixed;
import org.eclipse.cdt.internal.core.parser.ParserMessages;
import org.eclipse.core.runtime.PlatformObject;
-import com.ibm.icu.text.MessageFormat;
-
/**
* Implementation of problem bindings
*/
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ValueFactory.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ValueFactory.java
index 9d104b03465..68651b83224 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ValueFactory.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ValueFactory.java
@@ -603,6 +603,11 @@ public class ValueFactory {
return IntegralValue.create(1);
}
return IntegralValue.create(0);
+ case __is_same:
+ if (type1.isSameType(type2)) {
+ return IntegralValue.create(1);
+ }
+ return IntegralValue.create(0);
case __is_trivially_assignable:
return IntegralValue.UNKNOWN; // TODO: Implement.
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/VariableReadWriteFlags.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/VariableReadWriteFlags.java
index a7bc98a9041..594a4240d0d 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/VariableReadWriteFlags.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/VariableReadWriteFlags.java
@@ -14,6 +14,8 @@
*******************************************************************************/
package org.eclipse.cdt.internal.core.dom.parser;
+import java.util.Optional;
+
import org.eclipse.cdt.core.dom.ast.IASTArrayModifier;
import org.eclipse.cdt.core.dom.ast.IASTArraySubscriptExpression;
import org.eclipse.cdt.core.dom.ast.IASTBinaryExpression;
@@ -21,6 +23,7 @@ import org.eclipse.cdt.core.dom.ast.IASTCaseStatement;
import org.eclipse.cdt.core.dom.ast.IASTCastExpression;
import org.eclipse.cdt.core.dom.ast.IASTCompoundStatement;
import org.eclipse.cdt.core.dom.ast.IASTConditionalExpression;
+import org.eclipse.cdt.core.dom.ast.IASTDeclSpecifier;
import org.eclipse.cdt.core.dom.ast.IASTDeclarator;
import org.eclipse.cdt.core.dom.ast.IASTDoStatement;
import org.eclipse.cdt.core.dom.ast.IASTEqualsInitializer;
@@ -56,6 +59,7 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTInitializerClause;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTRangeBasedForStatement;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTStructuredBindingDeclaration;
import org.eclipse.cdt.core.dom.ast.gnu.IGNUASTCompoundStatementExpression;
+import org.eclipse.cdt.core.parser.util.ArrayUtil;
import org.eclipse.cdt.internal.core.pdom.dom.PDOMName;
/**
@@ -67,7 +71,19 @@ public abstract class VariableReadWriteFlags {
protected static final int READ = PDOMName.READ_ACCESS;
protected static final int WRITE = PDOMName.WRITE_ACCESS;
- protected int rwAnyNode(IASTNode node, int indirection) {
+ /**
+ * Check if the access could be a write access taking into
+ * account the "unknown" state.
+ * @param flags The flags
+ * @return True if either write or unknown access detected, false otherwise
+ */
+ public static boolean mayBeWriteAccess(Optional<Integer> flags) {
+ if (!flags.isPresent() || (flags.get() & WRITE) != 0)
+ return true;
+ return false;
+ }
+
+ protected Optional<Integer> rwAnyNode(IASTNode node, int indirection) {
final IASTNode parent = node.getParent();
if (parent instanceof IASTExpression) {
return rwInExpression((IASTExpression) parent, node, indirection);
@@ -78,20 +94,22 @@ public abstract class VariableReadWriteFlags {
} else if (parent instanceof IASTEqualsInitializer) {
return rwInEqualsInitializer((IASTEqualsInitializer) parent, indirection);
} else if (parent instanceof IASTArrayModifier) {
- return READ; // dimension
+ return Optional.of(READ); // dimension
} else if (parent instanceof IASTInitializerList) {
return rwInInitializerList((IASTInitializerList) parent, indirection);
+ } else if (parent instanceof IASTDeclSpecifier) {
+ return Optional.of(READ);
}
- return READ | WRITE; // fallback
+ return Optional.empty(); // fallback
}
- protected int rwInDeclarator(IASTDeclarator parent, int indirection) {
+ protected Optional<Integer> rwInDeclarator(IASTDeclarator parent, int indirection) {
if (parent.getInitializer() != null)
- return WRITE;
- return 0;
+ return Optional.of(WRITE);
+ return Optional.of(0);
}
- protected int rwInEqualsInitializer(IASTEqualsInitializer parent, int indirection) {
+ protected Optional<Integer> rwInEqualsInitializer(IASTEqualsInitializer parent, int indirection) {
IASTNode grand = parent.getParent();
if (grand instanceof IASTDeclarator) {
IBinding binding = ((IASTDeclarator) grand).getName().getBinding();
@@ -101,10 +119,10 @@ public abstract class VariableReadWriteFlags {
} else if (grand instanceof ICPPASTStructuredBindingDeclaration) {
return rwInStructuredBinding((ICPPASTStructuredBindingDeclaration) grand);
}
- return READ | WRITE; // fallback
+ return Optional.empty(); // fallback
}
- protected int rwInInitializerList(IASTInitializerList parent, int indirection) {
+ protected Optional<Integer> rwInInitializerList(IASTInitializerList parent, int indirection) {
IASTNode grand = parent.getParent();
if (grand instanceof IASTEqualsInitializer) {
IASTNode grandGrand = grand.getParent();
@@ -120,15 +138,15 @@ public abstract class VariableReadWriteFlags {
} else if (grand instanceof ICPPASTStructuredBindingDeclaration) {
return rwInStructuredBinding((ICPPASTStructuredBindingDeclaration) grand);
}
- return READ | WRITE; // fallback
+ return Optional.empty(); // fallback
}
- protected int rwInStructuredBinding(ICPPASTStructuredBindingDeclaration declaration) {
+ protected Optional<Integer> rwInStructuredBinding(ICPPASTStructuredBindingDeclaration declaration) {
RefQualifier refQualifier = declaration.getRefQualifier();
if (refQualifier != null && !declaration.getDeclSpecifier().isConst()) {
- return READ | WRITE;
+ return Optional.of(READ | WRITE);
} else {
- return READ;
+ return Optional.of(READ);
}
}
@@ -150,7 +168,7 @@ public abstract class VariableReadWriteFlags {
return false;
}
- protected int rwInExpression(IASTExpression expr, IASTNode node, int indirection) {
+ protected Optional<Integer> rwInExpression(IASTExpression expr, IASTNode node, int indirection) {
if (expr instanceof IASTIdExpression) {
return rwAnyNode(expr, indirection);
}
@@ -173,13 +191,13 @@ public abstract class VariableReadWriteFlags {
if (expr.getParent() instanceof IASTBinaryExpression
&& expr.getPropertyInParent() == IASTBinaryExpression.OPERAND_ONE
&& isAssignment((IASTBinaryExpression) expr.getParent())) {
- return READ | WRITE;
+ return Optional.of(READ | WRITE);
}
- return READ;
+ return Optional.of(READ);
}
if (expr instanceof IASTConditionalExpression) {
if (node.getPropertyInParent() == IASTConditionalExpression.LOGICAL_CONDITION) {
- return READ;
+ return Optional.of(READ);
}
return rwAnyNode(expr, indirection);
}
@@ -189,7 +207,7 @@ public abstract class VariableReadWriteFlags {
if (expressions.length > 0 && expressions[0] == node) {
return rwAnyNode(expr, indirection);
}
- return 0;
+ return Optional.of(0);
}
if (expr instanceof IASTFunctionCallExpression) {
if (node.getPropertyInParent() == IASTFunctionCallExpression.FUNCTION_NAME) {
@@ -198,16 +216,16 @@ public abstract class VariableReadWriteFlags {
return rwArgumentForFunctionCall((IASTFunctionCallExpression) expr, node, indirection);
}
if (expr instanceof IASTProblemExpression) {
- return READ | WRITE;
+ return Optional.of(READ | WRITE);
}
if (expr instanceof IASTTypeIdExpression) {
- return 0;
+ return Optional.of(0);
}
- return READ | WRITE; // fall back
+ return Optional.empty(); // fall back
}
- protected int rwInFieldReference(IASTNode node, IASTFieldReference expr, int indirection) {
+ protected Optional<Integer> rwInFieldReference(IASTNode node, IASTFieldReference expr, int indirection) {
if (node.getPropertyInParent() == IASTFieldReference.FIELD_NAME) {
if (expr.getPropertyInParent() != IASTFunctionCallExpression.FUNCTION_NAME)
return rwAnyNode(expr, indirection);
@@ -217,39 +235,55 @@ public abstract class VariableReadWriteFlags {
if (indirection >= 0)
return rwAnyNode(expr, indirection);
}
- return READ;
+ return Optional.of(READ);
}
- protected int rwInFunctionName(IASTExpression node) {
- return READ;
+ protected Optional<Integer> rwInFunctionName(IASTExpression node) {
+ return Optional.of(READ);
}
- protected int rwArgumentForFunctionCall(final IASTFunctionCallExpression funcCall, IASTNode argument,
+ /**
+ * Helper method to take the union of two sets of read/write flags.
+ * Note that "unknown" (represented as Optional.empty()) unioned
+ * with anything is still "unknown", since "unknown" means that
+ * potentially any type of access is possible.
+ */
+ protected Optional<Integer> union(Optional<Integer> a, Optional<Integer> b) {
+ if (a.isPresent() && b.isPresent()) {
+ return Optional.of(a.get() | b.get());
+ }
+ return Optional.empty();
+ }
+
+ protected Optional<Integer> rwArgumentForFunctionCall(final IASTFunctionCallExpression funcCall, IASTNode argument,
int indirection) {
final IASTInitializerClause[] args = funcCall.getArguments();
- for (int i = 0; i < args.length; i++) {
- if (args[i] == argument) {
- final IASTExpression functionNameExpression = funcCall.getFunctionNameExpression();
- if (functionNameExpression != null) {
- final IType type = functionNameExpression.getExpressionType();
- if (type instanceof IFunctionType) {
- return rwArgumentForFunctionCall((IFunctionType) type, i, args[i], indirection);
- } else if (funcCall instanceof IASTImplicitNameOwner) {
- IASTImplicitName[] implicitNames = ((IASTImplicitNameOwner) funcCall).getImplicitNames();
- if (implicitNames.length == 1) {
- IASTImplicitName name = implicitNames[0];
- IBinding binding = name.resolveBinding();
- if (binding instanceof IFunction) {
- return rwArgumentForFunctionCall(((IFunction) binding).getType(), i, args[i],
- indirection);
- }
- }
- }
+ int index = ArrayUtil.indexOf(args, argument);
+ if (index == -1) {
+ return Optional.empty();
+ }
+ final IASTExpression functionNameExpression = funcCall.getFunctionNameExpression();
+ if (functionNameExpression == null) {
+ return Optional.empty();
+ }
+ IType type = functionNameExpression.getExpressionType();
+ IFunctionType functionType = null;
+ if (type instanceof IFunctionType) {
+ functionType = (IFunctionType) type;
+ } else if (funcCall instanceof IASTImplicitNameOwner) {
+ IASTImplicitName[] implicitNames = ((IASTImplicitNameOwner) funcCall).getImplicitNames();
+ if (implicitNames.length == 1) {
+ IASTImplicitName name = implicitNames[0];
+ IBinding binding = name.resolveBinding();
+ if (binding instanceof IFunction) {
+ functionType = ((IFunction) binding).getType();
}
- break;
}
}
- return READ | WRITE; // Fallback
+ if (functionType == null) {
+ return Optional.empty();
+ }
+ return rwArgumentForFunctionCall(functionType, index, args[index], indirection);
}
private IType getArgumentType(IASTInitializerClause argument) {
@@ -261,8 +295,8 @@ public abstract class VariableReadWriteFlags {
return null;
}
- protected int rwArgumentForFunctionCall(IFunctionType type, int parameterIdx, IASTInitializerClause argument,
- int indirection) {
+ protected Optional<Integer> rwArgumentForFunctionCall(IFunctionType type, int parameterIdx,
+ IASTInitializerClause argument, int indirection) {
IType[] ptypes = type.getParameterTypes();
IType parameterType = null;
if (ptypes != null && ptypes.length > parameterIdx) {
@@ -276,19 +310,19 @@ public abstract class VariableReadWriteFlags {
if (parameterType != null) {
return rwAssignmentToType(parameterType, indirection);
}
- return READ | WRITE; // Fallback
+ return Optional.empty(); // Fallback
}
- protected abstract int rwAssignmentToType(IType type, int indirection);
+ protected abstract Optional<Integer> rwAssignmentToType(IType type, int indirection);
- protected int rwInStatement(IASTStatement stmt, IASTNode node, int indirection) {
+ protected Optional<Integer> rwInStatement(IASTStatement stmt, IASTNode node, int indirection) {
if (stmt instanceof IASTCaseStatement) {
if (node.getPropertyInParent() == IASTCaseStatement.EXPRESSION) {
- return READ;
+ return Optional.of(READ);
}
} else if (stmt instanceof IASTDoStatement) {
if (node.getPropertyInParent() == IASTDoStatement.CONDITION) {
- return READ;
+ return Optional.of(READ);
}
} else if (stmt instanceof IASTExpressionStatement) {
IASTNode parent = stmt.getParent();
@@ -296,7 +330,7 @@ public abstract class VariableReadWriteFlags {
IASTCompoundStatement compound = (IASTCompoundStatement) parent;
IASTStatement[] statements = compound.getStatements();
if (statements[statements.length - 1] != stmt) {
- return 0;
+ return Optional.of(0);
}
stmt = compound;
parent = stmt.getParent();
@@ -306,33 +340,33 @@ public abstract class VariableReadWriteFlags {
}
} else if (stmt instanceof IASTForStatement) {
if (node.getPropertyInParent() == IASTForStatement.CONDITION) {
- return READ;
+ return Optional.of(READ);
}
} else if (stmt instanceof ICPPASTRangeBasedForStatement) {
if (node.getPropertyInParent() == ICPPASTRangeBasedForStatement.INITIALIZER) {
- return READ;
+ return Optional.of(READ);
}
} else if (stmt instanceof IASTIfStatement) {
if (node.getPropertyInParent() == IASTIfStatement.CONDITION) {
- return READ;
+ return Optional.of(READ);
}
} else if (stmt instanceof IASTProblemStatement) {
- return READ | WRITE;
+ return Optional.empty();
} else if (stmt instanceof IASTReturnStatement) {
- return indirection == 0 ? READ : WRITE;
+ return indirection == 0 ? Optional.of(READ) : Optional.of(WRITE);
} else if (stmt instanceof IASTSwitchStatement) {
if (node.getPropertyInParent() == IASTSwitchStatement.CONTROLLER_EXP) {
- return READ;
+ return Optional.of(READ);
}
} else if (stmt instanceof IASTWhileStatement) {
if (node.getPropertyInParent() == IASTWhileStatement.CONDITIONEXPRESSION) {
- return READ;
+ return Optional.of(READ);
}
}
- return 0;
+ return Optional.of(0);
}
- protected int rwInUnaryExpression(IASTNode node, IASTUnaryExpression expr, int indirection) {
+ protected Optional<Integer> rwInUnaryExpression(IASTNode node, IASTUnaryExpression expr, int indirection) {
switch (expr.getOperator()) {
case IASTUnaryExpression.op_bracketedPrimary:
return rwAnyNode(expr, indirection);
@@ -344,33 +378,33 @@ public abstract class VariableReadWriteFlags {
if (indirection > 0) {
return rwAnyNode(expr, indirection - 1);
}
- return READ;
+ return Optional.of(READ);
case IASTUnaryExpression.op_postFixDecr:
case IASTUnaryExpression.op_postFixIncr:
case IASTUnaryExpression.op_prefixDecr:
case IASTUnaryExpression.op_prefixIncr:
- return READ | WRITE;
+ return Optional.of(READ | WRITE);
case IASTUnaryExpression.op_minus:
case IASTUnaryExpression.op_not:
case IASTUnaryExpression.op_plus:
case IASTUnaryExpression.op_tilde:
- return PDOMName.READ_ACCESS;
+ return Optional.of(READ);
case IASTUnaryExpression.op_sizeof:
case IASTUnaryExpression.op_sizeofParameterPack:
case IASTUnaryExpression.op_alignOf:
- return 0;
+ return Optional.of(0);
}
- return READ;
+ return Optional.of(READ);
}
- protected int rwInBinaryExpression(IASTNode node, IASTBinaryExpression expr, int indirection) {
+ protected Optional<Integer> rwInBinaryExpression(IASTNode node, IASTBinaryExpression expr, int indirection) {
switch (expr.getOperator()) {
case IASTBinaryExpression.op_assign:
if (node.getPropertyInParent() == IASTBinaryExpression.OPERAND_ONE) {
- return WRITE;
+ return Optional.of(WRITE);
}
return rwAssignmentToType(expr.getOperand1().getExpressionType(), indirection);
@@ -385,9 +419,9 @@ public abstract class VariableReadWriteFlags {
case IASTBinaryExpression.op_shiftLeftAssign:
case IASTBinaryExpression.op_shiftRightAssign:
if (node.getPropertyInParent() == IASTBinaryExpression.OPERAND_ONE) {
- return READ | WRITE;
+ return Optional.of(READ | WRITE);
}
- return READ;
+ return Optional.of(READ);
case IASTBinaryExpression.op_binaryAnd:
case IASTBinaryExpression.op_binaryOr:
@@ -405,7 +439,7 @@ public abstract class VariableReadWriteFlags {
case IASTBinaryExpression.op_notequals:
case IASTBinaryExpression.op_shiftLeft:
case IASTBinaryExpression.op_shiftRight:
- return READ;
+ return Optional.of(READ);
case IASTBinaryExpression.op_minus:
case IASTBinaryExpression.op_plus:
@@ -413,8 +447,8 @@ public abstract class VariableReadWriteFlags {
// can be pointer arithmetics
return rwAnyNode(expr, indirection);
}
- return READ;
+ return Optional.of(READ);
}
- return READ; // fallback
+ return Optional.of(READ); // fallback
}
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CEnumeration.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CEnumeration.java
index 6fb435ef8d4..43f0e086f01 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CEnumeration.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CEnumeration.java
@@ -97,9 +97,6 @@ public class CEnumeration extends PlatformObject implements IEnumeration, ICInte
return;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.dom.ast.IBinding#getName()
- */
@Override
public String getName() {
if (definition != null)
@@ -116,9 +113,6 @@ public class CEnumeration extends PlatformObject implements IEnumeration, ICInte
return declarations[0].toCharArray();
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.dom.ast.IBinding#getScope()
- */
@Override
public IScope getScope() {
return CVisitor.getContainingScope(definition != null ? definition : declarations[0].getParent());
@@ -135,9 +129,6 @@ public class CEnumeration extends PlatformObject implements IEnumeration, ICInte
return t;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.dom.ast.IEnumeration#getEnumerators()
- */
@Override
public IEnumerator[] getEnumerators() {
if (definition == null) {
@@ -162,9 +153,6 @@ public class CEnumeration extends PlatformObject implements IEnumeration, ICInte
definition = name;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.dom.ast.IType#isSameType(org.eclipse.cdt.core.dom.ast.IType)
- */
@Override
public boolean isSameType(IType type) {
if (type == this)
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CEnumerator.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CEnumerator.java
index ab2fc1c9155..25048ec8e20 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CEnumerator.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CEnumerator.java
@@ -56,9 +56,6 @@ public class CEnumerator extends PlatformObject implements IEnumerator {
return enumeratorName;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.dom.ast.IBinding#getName()
- */
@Override
public String getName() {
return enumeratorName.toString();
@@ -69,17 +66,11 @@ public class CEnumerator extends PlatformObject implements IEnumerator {
return enumeratorName.toCharArray();
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.dom.ast.IBinding#getScope()
- */
@Override
public IScope getScope() {
return CVisitor.getContainingScope(enumeratorName.getParent());
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.dom.ast.IEnumerator#getType()
- */
@Override
public IType getType() {
return (IType) getOwner();
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CFunction.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CFunction.java
index 6fb3529f223..6a4e6f842e8 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CFunction.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CFunction.java
@@ -496,6 +496,12 @@ public class CFunction extends PlatformObject implements IFunction, ICInternalFu
return dtor != null && AttributeUtil.hasNoreturnAttribute(dtor);
}
+ @Override
+ public boolean isNoDiscard() {
+ IASTFunctionDeclarator dtor = getPreferredDtor();
+ return dtor != null && AttributeUtil.hasNodiscardAttribute(dtor);
+ }
+
protected IASTFunctionDeclarator getPreferredDtor() {
IASTFunctionDeclarator dtor = getDefinition();
if (dtor != null)
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CFunctionScope.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CFunctionScope.java
index 1d914d061d5..d3c51249bed 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CFunctionScope.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CFunctionScope.java
@@ -27,9 +27,6 @@ public class CFunctionScope extends CScope implements ICFunctionScope {
super(function, EScopeKind.eLocal);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.dom.ast.c.ICFunctionScope#getBinding(char[])
- */
@Override
public IBinding getBinding(char[] name) {
return super.getBinding(NAMESPACE_TYPE_OTHER, name);
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CImplicitTypedef.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CImplicitTypedef.java
index 34af4fe7c4f..685f9a85cc1 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CImplicitTypedef.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CImplicitTypedef.java
@@ -57,9 +57,6 @@ public class CImplicitTypedef extends CTypedef {
return scope;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.dom.ast.IType#isSameType(org.eclipse.cdt.core.dom.ast.IType)
- */
// public boolean isSameType(IType t) {
// if (t == this)
// return true;
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CKnRParameter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CKnRParameter.java
index 92285332ead..f37a41f34d1 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CKnRParameter.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CKnRParameter.java
@@ -42,9 +42,6 @@ public class CKnRParameter extends PlatformObject implements IParameter {
this.name = name;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.dom.ast.IVariable#getType()
- */
@Override
public IType getType() {
IASTDeclSpecifier declSpec = null;
@@ -62,56 +59,35 @@ public class CKnRParameter extends PlatformObject implements IParameter {
return null;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.dom.ast.IBinding#getName()
- */
@Override
public String getName() {
return name.toString();
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.dom.ast.IBinding#getNameCharArray()
- */
@Override
public char[] getNameCharArray() {
return name.toCharArray();
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.dom.ast.IBinding#getScope()
- */
@Override
public IScope getScope() {
return CVisitor.getContainingScope(declaration);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.dom.ast.IBinding#getPhysicalNode()
- */
public IASTNode getPhysicalNode() {
return declaration;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.dom.ast.IVariable#isStatic()
- */
@Override
public boolean isStatic() {
return false;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.dom.ast.IVariable#isExtern()
- */
@Override
public boolean isExtern() {
return false;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.dom.ast.IVariable#isAuto()
- */
@Override
public boolean isAuto() {
if (declaration instanceof IASTSimpleDeclaration)
@@ -120,9 +96,6 @@ public class CKnRParameter extends PlatformObject implements IParameter {
return false;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.dom.ast.IVariable#isRegister()
- */
@Override
public boolean isRegister() {
if (declaration instanceof IASTSimpleDeclaration)
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CQualifierType.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CQualifierType.java
index 3b1a526fc78..80d15a39748 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CQualifierType.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CQualifierType.java
@@ -68,25 +68,16 @@ public class CQualifierType implements ICQualifierType, ITypeContainer, ISeriali
return false;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.dom.ast.IQualifierType#isConst()
- */
@Override
public boolean isConst() {
return isConst;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.dom.ast.IQualifierType#isVolatile()
- */
@Override
public boolean isVolatile() {
return isVolatile;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.dom.ast.c.ICQualifierType#isRestrict()
- */
@Override
public boolean isRestrict() {
return isRestrict;
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CVariable.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CVariable.java
index 576190d1363..6314292ed60 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CVariable.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CVariable.java
@@ -51,7 +51,7 @@ public class CVariable extends PlatformObject implements ICInternalBinding, IVar
* The set of CVariable objects for which initial value computation is in progress on each thread.
* This is used to guard against recursion during initial value computation.
*/
- private static final ThreadLocal<Set<CVariable>> fInitialValueInProgress = new ThreadLocal<Set<CVariable>>() {
+ private static final ThreadLocal<Set<CVariable>> fInitialValueInProgress = new ThreadLocal<>() {
@Override
protected Set<CVariable> initialValue() {
return new HashSet<>();
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CVariableReadWriteFlags.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CVariableReadWriteFlags.java
index 62f8baa7a67..398bbb44eef 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CVariableReadWriteFlags.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CVariableReadWriteFlags.java
@@ -13,6 +13,8 @@
*******************************************************************************/
package org.eclipse.cdt.internal.core.dom.parser.c;
+import java.util.Optional;
+
import org.eclipse.cdt.core.dom.ast.IASTEqualsInitializer;
import org.eclipse.cdt.core.dom.ast.IASTExpression;
import org.eclipse.cdt.core.dom.ast.IASTFunctionCallExpression;
@@ -33,47 +35,48 @@ import org.eclipse.cdt.internal.core.dom.parser.VariableReadWriteFlags;
public final class CVariableReadWriteFlags extends VariableReadWriteFlags {
private static CVariableReadWriteFlags INSTANCE = new CVariableReadWriteFlags();
- public static int getReadWriteFlags(IASTName variable) {
+ public static Optional<Integer> getReadWriteFlags(IASTName variable) {
return INSTANCE.rwAnyNode(variable, 0);
}
@Override
- protected int rwAnyNode(IASTNode node, int indirection) {
+ protected Optional<Integer> rwAnyNode(IASTNode node, int indirection) {
final IASTNode parent = node.getParent();
if (parent instanceof ICASTFieldDesignator) {
- return WRITE; // node is initialized via designated initializer
+ return Optional.of(WRITE); // node is initialized via designated initializer
}
return super.rwAnyNode(node, indirection);
}
@Override
- protected int rwInExpression(IASTExpression expr, IASTNode node, int indirection) {
+ protected Optional<Integer> rwInExpression(IASTExpression expr, IASTNode node, int indirection) {
if (expr instanceof ICASTTypeIdInitializerExpression) {
- return 0;
+ return Optional.of(0);
}
return super.rwInExpression(expr, node, indirection);
}
@Override
- protected int rwInEqualsInitializer(IASTEqualsInitializer parent, int indirection) {
+ protected Optional<Integer> rwInEqualsInitializer(IASTEqualsInitializer parent, int indirection) {
if (indirection == 0) {
- return READ;
+ return Optional.of(READ);
}
return super.rwInEqualsInitializer(parent, indirection);
}
@Override
- protected int rwArgumentForFunctionCall(IASTFunctionCallExpression funcCall, IASTNode argument, int indirection) {
+ protected Optional<Integer> rwArgumentForFunctionCall(IASTFunctionCallExpression funcCall, IASTNode argument,
+ int indirection) {
if (indirection == 0) {
- return READ;
+ return Optional.of(READ);
}
return super.rwArgumentForFunctionCall(funcCall, argument, indirection);
}
@Override
- protected int rwAssignmentToType(IType type, int indirection) {
+ protected Optional<Integer> rwAssignmentToType(IType type, int indirection) {
if (indirection == 0) {
- return READ;
+ return Optional.of(READ);
}
while (indirection > 0 && (type instanceof IPointerType)) {
type = ((IPointerType) type).getType();
@@ -81,11 +84,11 @@ public final class CVariableReadWriteFlags extends VariableReadWriteFlags {
}
if (indirection == 0) {
if (type instanceof IQualifierType) {
- return ((IQualifierType) type).isConst() ? READ : READ | WRITE;
+ return ((IQualifierType) type).isConst() ? Optional.of(READ) : Optional.of(READ | WRITE);
} else if (type instanceof IPointerType) {
- return ((IPointerType) type).isConst() ? READ : READ | WRITE;
+ return ((IPointerType) type).isConst() ? Optional.of(READ) : Optional.of(READ | WRITE);
}
}
- return READ | WRITE; // fallback
+ return Optional.empty(); // Fallback
}
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CVisitor.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CVisitor.java
index cfd4de9336d..1f59167c318 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CVisitor.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CVisitor.java
@@ -174,9 +174,6 @@ public class CVisitor extends ASTQueries {
return removeNullFromProblems();
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.dom.parser.c.CVisitor.CBaseVisitorAction#processDeclaration(org.eclipse.cdt.core.dom.ast.IASTDeclaration)
- */
@Override
public int visit(IASTDeclaration declaration) {
if (declaration instanceof IASTProblemHolder)
@@ -185,9 +182,6 @@ public class CVisitor extends ASTQueries {
return PROCESS_CONTINUE;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.dom.parser.c.CVisitor.CBaseVisitorAction#processExpression(org.eclipse.cdt.core.dom.ast.IASTExpression)
- */
@Override
public int visit(IASTExpression expression) {
if (expression instanceof IASTProblemHolder)
@@ -196,9 +190,6 @@ public class CVisitor extends ASTQueries {
return PROCESS_CONTINUE;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.dom.parser.c.CVisitor.CBaseVisitorAction#processStatement(org.eclipse.cdt.core.dom.ast.IASTStatement)
- */
@Override
public int visit(IASTStatement statement) {
if (statement instanceof IASTProblemHolder)
@@ -207,9 +198,6 @@ public class CVisitor extends ASTQueries {
return PROCESS_CONTINUE;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.dom.parser.c.CVisitor.CBaseVisitorAction#processTypeId(org.eclipse.cdt.core.dom.ast.IASTTypeId)
- */
@Override
public int visit(IASTTypeId typeId) {
if (typeId instanceof IASTProblemHolder)
@@ -266,9 +254,6 @@ public class CVisitor extends ASTQueries {
this.binding = binding;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.dom.parser.c.CVisitor.CBaseVisitorAction#processDeclarator(org.eclipse.cdt.core.dom.ast.IASTDeclarator)
- */
@Override
public int visit(IASTDeclarator declarator) {
//GCC allows declarations in expressions, so we have to continue from the
@@ -309,9 +294,6 @@ public class CVisitor extends ASTQueries {
return PROCESS_CONTINUE;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.dom.parser.c.CVisitor.CBaseVisitorAction#processDeclSpecifier(org.eclipse.cdt.core.dom.ast.IASTDeclSpecifier)
- */
@Override
public int visit(IASTDeclSpecifier declSpec) {
if (compositeTypeDeclared && declSpec instanceof ICASTTypedefNameSpecifier)
@@ -348,9 +330,6 @@ public class CVisitor extends ASTQueries {
return PROCESS_CONTINUE;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.dom.parser.c.CVisitor.CBaseVisitorAction#processEnumerator(org.eclipse.cdt.core.dom.ast.IASTEnumerationSpecifier.IASTEnumerator)
- */
@Override
public int visit(IASTEnumerator enumerator) {
if (binding instanceof IEnumerator && enumerator.getName().resolveBinding() == binding) {
@@ -360,9 +339,6 @@ public class CVisitor extends ASTQueries {
return PROCESS_CONTINUE;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.dom.parser.c.CVisitor.CBaseVisitorAction#processStatement(org.eclipse.cdt.core.dom.ast.IASTStatement)
- */
@Override
public int visit(IASTStatement statement) {
if (statement instanceof IASTLabelStatement && binding instanceof ILabel) {
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/GNUCSourceParser.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/GNUCSourceParser.java
index 88e1f9afc7a..bd63a89dfab 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/GNUCSourceParser.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/GNUCSourceParser.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2005, 2015 IBM Corporation and others.
+ * Copyright (c) 2005, 2019 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -24,6 +24,7 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
+import org.eclipse.cdt.core.dom.ast.ASTCompletionNode;
import org.eclipse.cdt.core.dom.ast.ASTVisitor;
import org.eclipse.cdt.core.dom.ast.DOMException;
import org.eclipse.cdt.core.dom.ast.IASTAlignmentSpecifier;
@@ -1161,8 +1162,8 @@ public class GNUCSourceParser extends AbstractGNUSourceCodeParser {
throwBacktrack(LA(1));
attributes = CollectionUtils.merge(attributes, __attribute_decl_seq(true, false));
break;
- case IGCCToken.t__declspec: // __declspec precedes the identifier
- if (identifier != null || !supportDeclspecSpecifiers)
+ case IGCCToken.t__declspec:
+ if (!supportDeclspecSpecifiers)
throwBacktrack(LA(1));
__attribute_decl_seq(false, true);
break;
@@ -1748,7 +1749,9 @@ public class GNUCSourceParser extends AbstractGNUSourceCodeParser {
consume();
n = getNodeFactory().newName(t.getCharImage());
setRange(n, t.getOffset(), t.getEndOffset());
- createCompletionNode(t).addName(n);
+ ASTCompletionNode node = createCompletionNode(t);
+ if (node != null)
+ node.addName(n);
return n;
default:
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/AbstractCPPClassSpecializationScope.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/AbstractCPPClassSpecializationScope.java
index 6119aebacb2..e77cad25114 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/AbstractCPPClassSpecializationScope.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/AbstractCPPClassSpecializationScope.java
@@ -54,7 +54,7 @@ public class AbstractCPPClassSpecializationScope implements ICPPClassSpecializat
// The following fields are used by the PDOM bindings and need to be volatile.
private volatile ICPPBase[] fBases;
private volatile ICPPMethod[] ownInheritedConstructors;
- private final ThreadLocal<Boolean> fComputingBases = new ThreadLocal<Boolean>() {
+ private final ThreadLocal<Boolean> fComputingBases = new ThreadLocal<>() {
@Override
protected Boolean initialValue() {
return false;
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTForStatement.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTForStatement.java
index 1c67f88bdb4..f87b38da7b9 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTForStatement.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTForStatement.java
@@ -16,6 +16,8 @@
*******************************************************************************/
package org.eclipse.cdt.internal.core.dom.parser.cpp;
+import java.util.Optional;
+
import org.eclipse.cdt.core.dom.ast.ASTVisitor;
import org.eclipse.cdt.core.dom.ast.IASTDeclaration;
import org.eclipse.cdt.core.dom.ast.IASTExpression;
@@ -27,6 +29,7 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTExpression;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTForStatement;
import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.DestructorCallCollector;
import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.EvalUtil;
+import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.ExecCompoundStatement;
import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.ExecFor;
import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.ExecSimpleDeclaration;
@@ -252,7 +255,8 @@ public class CPPASTForStatement extends CPPASTAttributeOwner implements ICPPASTF
: null;
ICPPASTExpression iterationExpr = (ICPPASTExpression) getIterationExpression();
ICPPEvaluation iterationEval = iterationExpr != null ? iterationExpr.getEvaluation() : null;
- ICPPExecution bodyExec = EvalUtil.getExecutionFromStatement(getBody());
+ ICPPExecution bodyExec = Optional.ofNullable(getBody()).map(EvalUtil::getExecutionFromStatement)
+ .orElseGet(() -> new ExecCompoundStatement());
return new ExecFor(initializerExec, conditionExprEval, conditionDeclExec, iterationEval, bodyExec);
}
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTFunctionDeclarator.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTFunctionDeclarator.java
index c5a448159c7..c5635490efd 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTFunctionDeclarator.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTFunctionDeclarator.java
@@ -54,6 +54,7 @@ public class CPPASTFunctionDeclarator extends CPPASTDeclarator implements ICPPAS
private boolean isConst;
private boolean isMutable;
private RefQualifier refQualifier;
+ private boolean isConstexpr;
private ICPPFunctionScope scope;
@@ -78,6 +79,7 @@ public class CPPASTFunctionDeclarator extends CPPASTDeclarator implements ICPPAS
copy.isConst = isConst;
copy.isMutable = isMutable;
copy.refQualifier = refQualifier;
+ copy.isConstexpr = isConstexpr;
for (IASTParameterDeclaration param : getParameters()) {
copy.addParameterDeclaration(param == null ? null : param.copy(style));
@@ -404,4 +406,15 @@ public class CPPASTFunctionDeclarator extends CPPASTDeclarator implements ICPPAS
}
return null;
}
+
+ @Override
+ public boolean isConstexpr() {
+ return isConstexpr;
+ }
+
+ @Override
+ public void setConstexpr(boolean value) {
+ assertNotFrozen();
+ this.isConstexpr = value;
+ }
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPBasicType.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPBasicType.java
index c26dde91be6..d51a95775a9 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPBasicType.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPBasicType.java
@@ -17,6 +17,9 @@ package org.eclipse.cdt.internal.core.dom.parser.cpp;
import static org.eclipse.cdt.core.dom.ast.cpp.ICPPParameter.EMPTY_CPPPARAMETER_ARRAY;
+import java.text.MessageFormat;
+
+import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.dom.ast.ASTTypeUtil;
import org.eclipse.cdt.core.dom.ast.IASTExpression;
import org.eclipse.cdt.core.dom.ast.IASTLiteralExpression;
@@ -58,10 +61,16 @@ public class CPPBasicType implements ICPPBasicType, ISerializableType {
public static final CPPBasicType CHAR = new CPPBasicType(Kind.eChar, 0);
public static final CPPBasicType VOID = new CPPBasicType(Kind.eVoid, 0);
- private static final int FROM_STRING_LITERAL = 1 << 31;
+ public static final int FROM_LITERAL = 1 << 30;
+ public static final int FROM_STRING_LITERAL = 1 << 31;
+
+ private static final short TYPE_BUFFER_KIND_OFFSET = ITypeMarshalBuffer.FIRST_FLAG;
+ private static final short TYPE_BUFFER_FROM_LITERAL_FLAG = ITypeMarshalBuffer.SECOND_LAST_FLAG / 2;
+ private static final short TYPE_BUFFER_FIRST_FLAG_AFTER_KIND = TYPE_BUFFER_FROM_LITERAL_FLAG;
+ private static final int MAX_KIND_INT_VALUE = (TYPE_BUFFER_FIRST_FLAG_AFTER_KIND - 1) / TYPE_BUFFER_KIND_OFFSET;
private final Kind fKind;
- private final int fModifiers;
+ private int fModifiers;
private Long fAssociatedValue;
private ICPPFunction fPseudoDestructor;
@@ -77,9 +86,11 @@ public class CPPBasicType implements ICPPBasicType, ISerializableType {
} else {
fKind = kind;
}
- if (expression instanceof IASTLiteralExpression
- && ((IASTLiteralExpression) expression).getKind() == IASTLiteralExpression.lk_string_literal) {
- qualifiers |= FROM_STRING_LITERAL;
+ if (expression instanceof IASTLiteralExpression) {
+ qualifiers |= FROM_LITERAL;
+ if (((IASTLiteralExpression) expression).getKind() == IASTLiteralExpression.lk_string_literal) {
+ qualifiers |= FROM_STRING_LITERAL;
+ }
}
fModifiers = qualifiers;
if (expression instanceof ICPPASTInitializerClause) {
@@ -209,9 +220,19 @@ public class CPPBasicType implements ICPPBasicType, ISerializableType {
@Override
public CPPBasicType clone() {
+ return clone(~0);
+ }
+
+ /**
+ * Clone as normal but keep only requested flags.
+ *
+ * @param flagsMask The mask of flags to preserve during the clone.
+ */
+ public CPPBasicType clone(int flagsMask) {
CPPBasicType t = null;
try {
t = (CPPBasicType) super.clone();
+ t.fModifiers &= flagsMask;
} catch (CloneNotSupportedException e) {
// Not going to happen.
}
@@ -235,15 +256,22 @@ public class CPPBasicType implements ICPPBasicType, ISerializableType {
}
/**
- * Returns {@code true} if the type was created for a string literal.
+ * Returns {@code true} if the type was created from a string literal.
*/
public final boolean isFromStringLiteral() {
return (fModifiers & FROM_STRING_LITERAL) != 0;
}
+ /**
+ * Returns {@code true} if the type was created from a literal.
+ */
+ public final boolean isFromLiteral() {
+ return (fModifiers & FROM_LITERAL) != 0;
+ }
+
@Override
public final int getModifiers() {
- return fModifiers & ~FROM_STRING_LITERAL;
+ return fModifiers & ~FROM_STRING_LITERAL & ~FROM_LITERAL;
}
@Override
@@ -254,27 +282,47 @@ public class CPPBasicType implements ICPPBasicType, ISerializableType {
@Override
public void marshal(ITypeMarshalBuffer buffer) throws CoreException {
final int kind = getKind().ordinal();
- final int shiftedKind = kind * ITypeMarshalBuffer.FIRST_FLAG;
+ // 'kind' uses the space of the first few flags so make sure it doesn't overflow to the actual used flags further.
+ if (kind > MAX_KIND_INT_VALUE) {
+ throw new CoreException(CCorePlugin.createStatus(
+ MessageFormat.format("Cannot marshal a basic type, kind ''{0}'' would overflow following flags.", //$NON-NLS-1$
+ getKind().toString())));
+ }
+ final int shiftedKind = kind * TYPE_BUFFER_KIND_OFFSET;
final int modifiers = getModifiers();
short firstBytes = (short) (ITypeMarshalBuffer.BASIC_TYPE | shiftedKind);
- if (modifiers != 0)
- firstBytes |= ITypeMarshalBuffer.LAST_FLAG;
+ if (isFromLiteral())
+ firstBytes = setFirstBytesFlag(firstBytes, TYPE_BUFFER_FROM_LITERAL_FLAG);
if (fAssociatedValue != null)
- firstBytes |= ITypeMarshalBuffer.SECOND_LAST_FLAG;
+ firstBytes = setFirstBytesFlag(firstBytes, ITypeMarshalBuffer.SECOND_LAST_FLAG);
+ if (modifiers != 0)
+ firstBytes = setFirstBytesFlag(firstBytes, ITypeMarshalBuffer.LAST_FLAG);
buffer.putShort(firstBytes);
if (modifiers != 0)
buffer.putByte((byte) modifiers);
if (fAssociatedValue != null)
buffer.putLong(getAssociatedNumericalValue());
+
+ }
+
+ private static short setFirstBytesFlag(short firstBytes, short flag) throws CoreException {
+ if (flag < TYPE_BUFFER_FIRST_FLAG_AFTER_KIND) {
+ throw new CoreException(CCorePlugin.createStatus(
+ MessageFormat.format("Cannot marshal a basic type, flag ''0x{0}'' overlaps ''kind'' bytes.", //$NON-NLS-1$
+ Integer.toHexString(flag))));
+ }
+ return (short) (firstBytes | flag);
}
public static IType unmarshal(short firstBytes, ITypeMarshalBuffer buffer) throws CoreException {
final boolean haveModifiers = (firstBytes & ITypeMarshalBuffer.LAST_FLAG) != 0;
final boolean haveAssociatedNumericalValue = (firstBytes & ITypeMarshalBuffer.SECOND_LAST_FLAG) != 0;
int modifiers = 0;
- int kind = (firstBytes & (ITypeMarshalBuffer.SECOND_LAST_FLAG - 1)) / ITypeMarshalBuffer.FIRST_FLAG;
+ int kind = (firstBytes & (TYPE_BUFFER_FIRST_FLAG_AFTER_KIND - 1)) / TYPE_BUFFER_KIND_OFFSET;
if (haveModifiers)
modifiers = buffer.getByte();
+ if ((firstBytes & TYPE_BUFFER_FROM_LITERAL_FLAG) != 0)
+ modifiers |= FROM_LITERAL;
CPPBasicType result = new CPPBasicType(Kind.values()[kind], modifiers);
if (haveAssociatedNumericalValue)
result.setAssociatedNumericalValue(buffer.getLong());
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPBuiltinParameter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPBuiltinParameter.java
index 3dd21dc3de9..754da65a108 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPBuiltinParameter.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPBuiltinParameter.java
@@ -38,9 +38,16 @@ public class CPPBuiltinParameter extends PlatformObject implements ICPPParameter
}
private IType type;
+ private int position;
public CPPBuiltinParameter(IType type) {
this.type = type;
+ this.position = -1;
+ }
+
+ public CPPBuiltinParameter(IType type, int position) {
+ this.type = type;
+ this.position = position;
}
@Override
@@ -75,6 +82,9 @@ public class CPPBuiltinParameter extends PlatformObject implements ICPPParameter
@Override
public String getName() {
+ if (position != -1) {
+ return "arg" + position; //$NON-NLS-1$
+ }
return ""; //$NON-NLS-1$
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassSpecialization.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassSpecialization.java
index 174e0e260f8..64271bedd79 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassSpecialization.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassSpecialization.java
@@ -46,6 +46,7 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateDefinition;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateInstance;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateParameterMap;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPUsingDeclaration;
+import org.eclipse.cdt.core.parser.util.AttributeUtil;
import org.eclipse.cdt.core.parser.util.CharArrayUtils;
import org.eclipse.cdt.core.parser.util.ObjectMap;
import org.eclipse.cdt.internal.core.dom.parser.IRecursionResolvingBinding;
@@ -161,6 +162,11 @@ public class CPPClassSpecialization extends CPPSpecialization
public boolean isConstexpr() {
return false;
}
+
+ @Override
+ public boolean isNoDiscard() {
+ return false;
+ }
}
public final static class RecursionResolvingConstructor extends RecursionResolvingMethod
@@ -184,7 +190,7 @@ public class CPPClassSpecialization extends CPPSpecialization
private ICPPClassSpecializationScope specScope;
private ObjectMap specializationMap = ObjectMap.EMPTY_MAP;
private ICPPBase[] bases;
- private final ThreadLocal<Set<IBinding>> fInProgress = new ThreadLocal<Set<IBinding>>() {
+ private final ThreadLocal<Set<IBinding>> fInProgress = new ThreadLocal<>() {
@Override
protected Set<IBinding> initialValue() {
return new HashSet<>();
@@ -502,6 +508,23 @@ public class CPPClassSpecialization extends CPPSpecialization
if (typeSpecifier != null) {
return typeSpecifier.isFinal();
}
+ ICPPClassType clazz = getSpecializedBinding();
+ if (clazz != null) {
+ return clazz.isFinal();
+ }
+ return false;
+ }
+
+ @Override
+ public boolean isNoDiscard() {
+ ICPPASTCompositeTypeSpecifier typeSpecifier = getCompositeTypeSpecifier();
+ if (typeSpecifier != null) {
+ return AttributeUtil.hasNodiscardAttribute(typeSpecifier);
+ }
+ ICPPClassType clazz = getSpecializedBinding();
+ if (clazz != null) {
+ return clazz.isNoDiscard();
+ }
return false;
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassTemplate.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassTemplate.java
index f83a4e1092d..2a236677acb 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassTemplate.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassTemplate.java
@@ -44,6 +44,7 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPUsingDeclaration;
import org.eclipse.cdt.core.index.IIndexBinding;
import org.eclipse.cdt.core.index.IIndexFileSet;
import org.eclipse.cdt.core.parser.util.ArrayUtil;
+import org.eclipse.cdt.core.parser.util.AttributeUtil;
import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPTemplates;
/**
@@ -267,6 +268,15 @@ public class CPPClassTemplate extends CPPTemplateDefinition
}
@Override
+ public boolean isNoDiscard() {
+ ICPPASTCompositeTypeSpecifier typeSpecifier = getCompositeTypeSpecifier();
+ if (typeSpecifier != null) {
+ return AttributeUtil.hasNodiscardAttribute(typeSpecifier);
+ }
+ return false;
+ }
+
+ @Override
public int getVisibility(IBinding member) {
return ClassTypeHelper.getVisibility(this, member);
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassType.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassType.java
index 681b04811ef..b6dcea7c474 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassType.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassType.java
@@ -44,6 +44,7 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPUsingDeclaration;
import org.eclipse.cdt.core.index.IIndex;
import org.eclipse.cdt.core.index.IIndexBinding;
import org.eclipse.cdt.core.parser.util.ArrayUtil;
+import org.eclipse.cdt.core.parser.util.AttributeUtil;
import org.eclipse.cdt.internal.core.dom.Linkage;
import org.eclipse.cdt.internal.core.dom.parser.ASTNode;
import org.eclipse.cdt.internal.core.dom.parser.ProblemBinding;
@@ -142,6 +143,11 @@ public class CPPClassType extends PlatformObject implements ICPPInternalClassTyp
public int getVisibility(IBinding member) {
throw new IllegalArgumentException(member.getName() + " is not a member of " + getName()); //$NON-NLS-1$
}
+
+ @Override
+ public boolean isNoDiscard() {
+ return false;
+ }
}
private IASTName definition;
@@ -455,6 +461,15 @@ public class CPPClassType extends PlatformObject implements ICPPInternalClassTyp
return false;
}
+ @Override
+ public boolean isNoDiscard() {
+ ICPPASTCompositeTypeSpecifier typeSpecifier = getCompositeTypeSpecifier();
+ if (typeSpecifier != null) {
+ return AttributeUtil.hasNodiscardAttribute(typeSpecifier);
+ }
+ return false;
+ }
+
private IASTName stripQualifier(IASTName name) {
if (name instanceof ICPPASTQualifiedName) {
name = ((ICPPASTQualifiedName) name).getLastName();
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClosureType.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClosureType.java
index db6b297c23c..e48cdcc4b2b 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClosureType.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClosureType.java
@@ -103,7 +103,7 @@ public class CPPClosureType extends PlatformObject implements ICPPClassType, ICP
// Deleted copy assignment operator: A& operator = (const A &)
IType refType = new CPPReferenceType(this, false);
ICPPFunctionType ft = CPPVisitor.createImplicitFunctionType(refType, ps, false, false);
- ICPPMethod m = new CPPImplicitMethod(scope, OverloadableOperator.ASSIGN.toCharArray(), ft, ps, false);
+ CPPImplicitMethod m = new CPPImplicitMethod(scope, OverloadableOperator.ASSIGN.toCharArray(), ft, ps, false);
result[2] = m;
// Destructor: ~A()
@@ -120,22 +120,28 @@ public class CPPClosureType extends PlatformObject implements ICPPClassType, ICP
ICPPParameter[] params = getParameters();
char[] operatorParensName = OverloadableOperator.PAREN.toCharArray();
+ ICPPASTFunctionDeclarator dtor = fLambdaExpression.getDeclarator();
+ boolean constExpr = false;
+ if (dtor != null) {
+ constExpr = dtor.isConstexpr();
+ }
if (isGeneric()) {
m = new CPPImplicitMethodTemplate(getInventedTemplateParameterList(), scope, operatorParensName, ft, params,
- false) {
+ constExpr) {
@Override
public boolean isImplicit() {
return false;
}
};
} else {
- m = new CPPImplicitMethod(scope, operatorParensName, ft, params, false) {
+ m = new CPPImplicitMethod(scope, operatorParensName, ft, params, constExpr) {
@Override
public boolean isImplicit() {
return false;
}
};
}
+ m.addDefinition(fLambdaExpression.getDeclarator());
result[4] = m;
// Conversion operator
@@ -156,14 +162,14 @@ public class CPPClosureType extends PlatformObject implements ICPPClassType, ICP
templateParamClones[i] = (ICPPTemplateParameter) ((IType) templateParams[i]).clone();
}
m = new CPPImplicitMethodTemplate(templateParamClones, scope, conversionOperatorName, ft, params,
- false) {
+ constExpr) {
@Override
public boolean isImplicit() {
return false;
}
};
} else {
- m = new CPPImplicitMethod(scope, conversionOperatorName, ft, params, false) {
+ m = new CPPImplicitMethod(scope, conversionOperatorName, ft, params, constExpr) {
@Override
public boolean isImplicit() {
return false;
@@ -586,4 +592,9 @@ public class CPPClosureType extends PlatformObject implements ICPPClassType, ICP
return CPPClosureType.this.getConstructors();
}
}
+
+ @Override
+ public boolean isNoDiscard() {
+ return false;
+ }
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPDeferredClassInstance.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPDeferredClassInstance.java
index b95497e699e..d648d17d3e2 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPDeferredClassInstance.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPDeferredClassInstance.java
@@ -179,6 +179,11 @@ public class CPPDeferredClassInstance extends CPPUnknownBinding
}
@Override
+ public boolean isNoDiscard() {
+ return false;
+ }
+
+ @Override
public ICPPTemplateArgument[] getTemplateArguments() {
return fArguments;
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPDeferredFunction.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPDeferredFunction.java
index cf64816dfbc..9d6d8b2afd2 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPDeferredFunction.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPDeferredFunction.java
@@ -160,6 +160,11 @@ public class CPPDeferredFunction extends CPPUnknownBinding
}
@Override
+ public boolean isNoDiscard() {
+ return false;
+ }
+
+ @Override
public int getRequiredArgumentCount() {
return 0;
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPEnumeration.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPEnumeration.java
index 82db1bb7345..abb80fb5044 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPEnumeration.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPEnumeration.java
@@ -42,6 +42,7 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPScope;
import org.eclipse.cdt.core.index.IIndex;
import org.eclipse.cdt.core.index.IIndexBinding;
import org.eclipse.cdt.core.parser.util.ArrayUtil;
+import org.eclipse.cdt.core.parser.util.AttributeUtil;
import org.eclipse.cdt.core.parser.util.CharArrayUtils;
import org.eclipse.cdt.internal.core.dom.Linkage;
import org.eclipse.cdt.internal.core.dom.parser.ProblemBinding;
@@ -90,6 +91,11 @@ public class CPPEnumeration extends PlatformObject implements ICPPEnumeration, I
public ICPPScope asScope() {
return this;
}
+
+ @Override
+ public boolean isNoDiscard() {
+ return false;
+ }
}
private final boolean fIsScoped;
@@ -339,4 +345,18 @@ public class CPPEnumeration extends PlatformObject implements ICPPEnumeration, I
node.accept(action);
}
}
+
+ @Override
+ public boolean isNoDiscard() {
+ findDefinition();
+ IASTName def = getDefinition();
+ if (def == null) {
+ ICPPEnumeration indexBinding = getIndexBinding();
+ if (indexBinding != null) {
+ return indexBinding.isNoDiscard();
+ }
+ def = getADeclaration();
+ }
+ return AttributeUtil.hasNodiscardAttribute(((ICPPASTEnumerationSpecifier) def.getParent()));
+ }
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPEnumerationSpecialization.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPEnumerationSpecialization.java
index 4bb3faa93ec..5f0d7d90746 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPEnumerationSpecialization.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPEnumerationSpecialization.java
@@ -162,4 +162,9 @@ public class CPPEnumerationSpecialization extends CPPSpecialization implements I
}
return enumerator;
}
+
+ @Override
+ public boolean isNoDiscard() {
+ return getSpecializedBinding().isNoDiscard();
+ }
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunction.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunction.java
index e1ba75cbf15..89972bb48ce 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunction.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunction.java
@@ -41,6 +41,7 @@ import org.eclipse.cdt.core.dom.ast.IType;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTDeclSpecifier;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTFunctionDeclarator;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTFunctionDefinition;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTLambdaExpression;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTParameterDeclaration;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPBlockScope;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassScope;
@@ -103,6 +104,11 @@ public class CPPFunction extends PlatformObject implements ICPPFunction, ICPPInt
public int getRequiredArgumentCount() {
return 0;
}
+
+ @Override
+ public boolean isNoDiscard() {
+ return false;
+ }
}
public static final ICPPFunction UNINITIALIZED_FUNCTION = new CPPFunction(null) {
@@ -625,8 +631,9 @@ public class CPPFunction extends PlatformObject implements ICPPFunction, ICPPInt
@Override
public boolean isConstexpr() {
ICPPASTDeclSpecifier declSpec = getDeclSpecifier();
- if (declSpec == null)
+ if (declSpec == null) {
return false;
+ }
return declSpec.isConstexpr();
}
@@ -737,6 +744,11 @@ public class CPPFunction extends PlatformObject implements ICPPFunction, ICPPInt
return isNoReturn(getPreferredDtor());
}
+ @Override
+ public boolean isNoDiscard() {
+ return isNoDiscard(getPreferredDtor());
+ }
+
public static boolean isNoReturn(ICPPASTFunctionDeclarator dtor) {
if (dtor == null) {
return false;
@@ -751,6 +763,20 @@ public class CPPFunction extends PlatformObject implements ICPPFunction, ICPPInt
return false;
}
+ public static boolean isNoDiscard(ICPPASTFunctionDeclarator dtor) {
+ if (dtor == null) {
+ return false;
+ }
+ if (AttributeUtil.hasNodiscardAttribute(dtor)) {
+ return true;
+ }
+ IASTNode parent = dtor.getParent();
+ if (parent instanceof IASTAttributeOwner) {
+ return AttributeUtil.hasNodiscardAttribute((IASTAttributeOwner) parent);
+ }
+ return false;
+ }
+
public static ICPPExecution getFunctionBodyExecution(ICPPFunction function) {
if (function instanceof ICPPComputableFunction) {
return ((ICPPComputableFunction) function).getFunctionBodyExecution();
@@ -775,8 +801,22 @@ public class CPPFunction extends PlatformObject implements ICPPFunction, ICPPInt
}
public static ICPPExecution computeFunctionBodyExecution(IASTNode def) {
- ICPPASTFunctionDefinition fnDef = getFunctionDefinition(def);
- if (fnDef != null) {
+
+ while (def != null && !(def instanceof IASTDeclaration) && !(def instanceof ICPPASTLambdaExpression)) {
+ def = def.getParent();
+ }
+ if (def == null)
+ return null;
+
+ if (def instanceof ICPPASTLambdaExpression) {
+ ICPPASTLambdaExpression lambda = (ICPPASTLambdaExpression) def;
+ ((ASTNode) lambda).resolvePendingAmbiguities();
+ if (lambda.getBody() instanceof CPPASTCompoundStatement) {
+ CPPASTCompoundStatement body = (CPPASTCompoundStatement) lambda.getBody();
+ return body.getExecution();
+ }
+ } else if (def instanceof ICPPASTFunctionDefinition) {
+ ICPPASTFunctionDefinition fnDef = (ICPPASTFunctionDefinition) def;
// Make sure ambiguity resolution has been performed on the function body, even
// if it's a class method and we're still processing the class declaration.
((ASTNode) fnDef).resolvePendingAmbiguities();
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunctionInstance.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunctionInstance.java
index e6c2feb213b..c934385971a 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunctionInstance.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunctionInstance.java
@@ -64,9 +64,6 @@ public class CPPFunctionInstance extends CPPFunctionSpecialization implements IC
return false;
}
- /* (non-Javadoc)
- * For debug purposes only
- */
@Override
public String toString() {
return getName() + " " + ASTTypeUtil.getArgumentListString(fArguments, true); //$NON-NLS-1$
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunctionSpecialization.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunctionSpecialization.java
index bba88ff46df..65aaaf44918 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunctionSpecialization.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunctionSpecialization.java
@@ -341,4 +341,12 @@ public class CPPFunctionSpecialization extends CPPSpecialization
}
return CPPTemplates.instantiateFunctionBody(this);
}
+
+ @Override
+ public boolean isNoDiscard() {
+ ICPPFunction f = (ICPPFunction) getSpecializedBinding();
+ if (f != null)
+ return f.isNoDiscard();
+ return false;
+ }
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunctionTemplate.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunctionTemplate.java
index a5e631763ee..82dc9160332 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunctionTemplate.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunctionTemplate.java
@@ -392,6 +392,11 @@ public class CPPFunctionTemplate extends CPPTemplateDefinition implements ICPPFu
return CPPFunction.isNoReturn(getFirstFunctionDtor());
}
+ @Override
+ public boolean isNoDiscard() {
+ return CPPFunction.isNoDiscard(getFirstFunctionDtor());
+ }
+
private IASTDeclarator getDeclaratorByName(IASTNode node) {
// Skip qualified names and nested declarators.
while (node != null) {
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPQualifierType.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPQualifierType.java
index 6a2eb7e0e7a..2186b88c1c9 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPQualifierType.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPQualifierType.java
@@ -15,12 +15,14 @@
package org.eclipse.cdt.internal.core.dom.parser.cpp;
import org.eclipse.cdt.core.dom.ast.ASTTypeUtil;
+import org.eclipse.cdt.core.dom.ast.IPointerType;
import org.eclipse.cdt.core.dom.ast.IQualifierType;
import org.eclipse.cdt.core.dom.ast.IType;
import org.eclipse.cdt.core.dom.ast.ITypedef;
import org.eclipse.cdt.internal.core.dom.parser.ISerializableType;
import org.eclipse.cdt.internal.core.dom.parser.ITypeContainer;
import org.eclipse.cdt.internal.core.dom.parser.ITypeMarshalBuffer;
+import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.SemanticUtil;
import org.eclipse.core.runtime.CoreException;
public class CPPQualifierType implements IQualifierType, ITypeContainer, ISerializableType {
@@ -38,8 +40,18 @@ public class CPPQualifierType implements IQualifierType, ITypeContainer, ISerial
public boolean isSameType(IType o) {
if (o instanceof ITypedef)
return o.isSameType(this);
- if (!(o instanceof IQualifierType))
+ if (!(o instanceof IQualifierType)) {
+ // Handle the case where we store the qualifiers in the IPointerType.
+ if (o instanceof IPointerType) {
+ IType nested = SemanticUtil.getSimplifiedType(type);
+ if (nested instanceof IPointerType) {
+ IPointerType pt = (IPointerType) o;
+ return isConst() == pt.isConst() && isVolatile() == pt.isVolatile()
+ && ((IPointerType) nested).getType().isSameType(pt.getType());
+ }
+ }
return false;
+ }
IQualifierType pt = (IQualifierType) o;
if (isConst() == pt.isConst() && isVolatile() == pt.isVolatile() && type != null)
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateTemplateParameter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateTemplateParameter.java
index c26466b0f54..f611b368510 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateTemplateParameter.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateTemplateParameter.java
@@ -260,6 +260,11 @@ public class CPPTemplateTemplateParameter extends CPPTemplateParameter
}
@Override
+ public boolean isNoDiscard() {
+ return false;
+ }
+
+ @Override
public int getVisibility(IBinding member) {
throw new IllegalArgumentException(member.getName() + " is not a member of " + getName()); //$NON-NLS-1$
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateTemplateParameterSpecialization.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateTemplateParameterSpecialization.java
index 2450a2a8957..b87ec89745d 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateTemplateParameterSpecialization.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateTemplateParameterSpecialization.java
@@ -128,6 +128,11 @@ public class CPPTemplateTemplateParameterSpecialization extends CPPTemplateParam
}
@Override
+ public boolean isNoDiscard() {
+ return false;
+ }
+
+ @Override
public int getVisibility(IBinding member) {
return getSpecializedBinding().getVisibility(member);
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPUnknownMemberClass.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPUnknownMemberClass.java
index c347d7cf817..db1b181bf19 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPUnknownMemberClass.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPUnknownMemberClass.java
@@ -140,6 +140,11 @@ public class CPPUnknownMemberClass extends CPPUnknownMember implements ICPPUnkno
}
@Override
+ public boolean isNoDiscard() {
+ return false;
+ }
+
+ @Override
public int getVisibility(IBinding member) {
throw new IllegalArgumentException(member.getName() + " is not a member of " + getName()); //$NON-NLS-1$
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPUnknownMethod.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPUnknownMethod.java
index abe90b7f058..c4a169a53fd 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPUnknownMethod.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPUnknownMethod.java
@@ -174,4 +174,9 @@ public class CPPUnknownMethod extends CPPUnknownMember implements ICPPMethod {
public boolean isConstexpr() {
return false;
}
+
+ @Override
+ public boolean isNoDiscard() {
+ return false;
+ }
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPVariable.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPVariable.java
index b77e1b87038..78099e91259 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPVariable.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPVariable.java
@@ -69,7 +69,7 @@ public class CPPVariable extends PlatformObject implements ICPPInternalDeclaredV
* The set of CPPVariable objects for which initial value computation is in progress on each thread.
* This is used to guard against recursion during initial value computation.
*/
- private static final ThreadLocal<Set<CPPVariable>> fInitialValueInProgress = new ThreadLocal<Set<CPPVariable>>() {
+ private static final ThreadLocal<Set<CPPVariable>> fInitialValueInProgress = new ThreadLocal<>() {
@Override
protected Set<CPPVariable> initialValue() {
return new HashSet<>();
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GNUCPPSourceParser.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GNUCPPSourceParser.java
index ebdf710df1d..4709d51a4e7 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GNUCPPSourceParser.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GNUCPPSourceParser.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2002, 2016 IBM Corporation and others.
+ * Copyright (c) 2002, 2019 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -462,7 +462,9 @@ public class GNUCPPSourceParser extends AbstractGNUSourceCodeParser {
switch (nt.getType()) {
case IToken.tEOC:
case IToken.tCOMPLETION:
- createCompletionNode(nt).addName(name);
+ ASTCompletionNode node = createCompletionNode(nt);
+ if (node != null)
+ node.addName(name);
break;
}
return name;
@@ -1538,7 +1540,8 @@ public class GNUCPPSourceParser extends AbstractGNUSourceCodeParser {
case IGCCToken.t___alignof__:
return parseTypeidInParenthesisOrUnaryExpression(false, consume().getOffset(),
IASTTypeIdExpression.op_alignof, IASTUnaryExpression.op_alignOf, ctx, strat);
-
+ case IGCCToken.tTT_integer_pack:
+ return unaryExpression(IASTUnaryExpression.op_integerPack, ctx, strat);
case IGCCToken.tTT_has_nothrow_assign:
case IGCCToken.tTT_has_nothrow_constructor:
case IGCCToken.tTT_has_nothrow_copy:
@@ -1563,6 +1566,7 @@ public class GNUCPPSourceParser extends AbstractGNUSourceCodeParser {
case IGCCToken.tTT_is_trivially_constructible:
case IGCCToken.tTT_is_trivially_assignable:
case IGCCToken.tTT_is_constructible:
+ case IGCCToken.tTT_is_same:
return parseTypeTrait();
default:
@@ -1614,6 +1618,7 @@ public class GNUCPPSourceParser extends AbstractGNUSourceCodeParser {
switch (first.getType()) {
case IGCCToken.tTT_is_base_of:
case IGCCToken.tTT_is_trivially_assignable:
+ case IGCCToken.tTT_is_same:
return true;
}
return false;
@@ -1634,6 +1639,8 @@ public class GNUCPPSourceParser extends AbstractGNUSourceCodeParser {
return IASTBinaryTypeIdExpression.Operator.__is_base_of;
case IGCCToken.tTT_is_trivially_assignable:
return IASTBinaryTypeIdExpression.Operator.__is_trivially_assignable;
+ case IGCCToken.tTT_is_same:
+ return IASTBinaryTypeIdExpression.Operator.__is_same;
}
assert false;
@@ -3572,8 +3579,8 @@ public class GNUCPPSourceParser extends AbstractGNUSourceCodeParser {
throwBacktrack(LA(1));
attributes = CollectionUtils.merge(attributes, __attribute_decl_seq(true, false));
break;
- case IGCCToken.t__declspec: // __declspec precedes the identifier
- if (identifier != null || !supportDeclspecSpecifiers)
+ case IGCCToken.t__declspec:
+ if (!supportDeclspecSpecifiers)
throwBacktrack(LA(1));
attributes = CollectionUtils.merge(attributes, __attribute_decl_seq(false, true));
break;
@@ -4796,9 +4803,19 @@ public class GNUCPPSourceParser extends AbstractGNUSourceCodeParser {
// cv-qualifiers
if (isLambdaDeclarator) {
- if (LT(1) == IToken.t_mutable) {
- fc.setMutable(true);
- endOffset = consume().getEndOffset();
+ specloop: while (true) {
+ switch (LT(1)) {
+ case IToken.t_mutable:
+ fc.setMutable(true);
+ endOffset = consume().getEndOffset();
+ break;
+ case IToken.t_constexpr:
+ fc.setConstexpr(true);
+ endOffset = consume().getEndOffset();
+ break;
+ default:
+ break specloop;
+ }
}
} else {
cvloop: while (true) {
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/InstantiationContext.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/InstantiationContext.java
index 61b889c2838..fb9063fb7d3 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/InstantiationContext.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/InstantiationContext.java
@@ -30,6 +30,7 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPTypeSpecialization;
*/
public final class InstantiationContext {
private CPPTemplateParameterMap parameterMap;
+ private boolean forDeduction = false;
private int packOffset;
private final ICPPSpecialization contextSpecialization;
private boolean expandPack;
@@ -79,6 +80,15 @@ public final class InstantiationContext {
}
/**
+ * Create an InstantiationContext for a template parameter map, for use template argument deduction.
+ */
+ public static InstantiationContext forDeduction(ICPPTemplateParameterMap parameterMap) {
+ InstantiationContext result = new InstantiationContext(parameterMap);
+ result.forDeduction = true;
+ return result;
+ }
+
+ /**
* Returns the mapping of template parameters to arguments, possibly {@code null} if the context doesn't
* contain it.
*/
@@ -87,6 +97,13 @@ public final class InstantiationContext {
}
/**
+ * Returns whether the InstantiationContext was created during template argument deduction.
+ */
+ public boolean isForDeduction() {
+ return forDeduction;
+ }
+
+ /**
* Adds a parameter mapping.
*/
public void addToParameterMap(ICPPTemplateParameter par, ICPPTemplateArgument arg) {
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/AutoTypeResolver.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/AutoTypeResolver.java
index 8a4bb012a8c..4f2c88e64fa 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/AutoTypeResolver.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/AutoTypeResolver.java
@@ -183,4 +183,9 @@ class AutoTypeResolver implements ICPPFunctionTemplate {
public boolean isNoReturn() {
throw new UnsupportedOperationException(UNEXPECTED_CALL);
}
+
+ @Override
+ public boolean isNoDiscard() {
+ throw new UnsupportedOperationException(UNEXPECTED_CALL);
+ }
} \ No newline at end of file
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPFunctionSet.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPFunctionSet.java
index 0c790cd01f0..ee6b4bd1546 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPFunctionSet.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPFunctionSet.java
@@ -76,10 +76,9 @@ public class CPPFunctionSet implements ICPPTwoPhaseBinding {
}
@Override
- @SuppressWarnings("unchecked")
- public Object getAdapter(@SuppressWarnings("rawtypes") Class adapter) {
+ public <T> T getAdapter(Class<T> adapter) {
if (adapter.isAssignableFrom(getClass()))
- return this;
+ return adapter.cast(this);
return null;
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPSemantics.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPSemantics.java
index 02046bca740..45f8fb677b5 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPSemantics.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPSemantics.java
@@ -299,14 +299,14 @@ public class CPPSemantics {
// that are not reachable via includes from the file containing the name.
// Generally this is not allowed, but certain consumers, such as IncludeOrganizer,
// need it (since the whole point of IncludeOrganizer is to find missing headers).
- private static final ThreadLocal<Boolean> fAllowPromiscuousBindingResolution = new ThreadLocal<Boolean>() {
+ private static final ThreadLocal<Boolean> fAllowPromiscuousBindingResolution = new ThreadLocal<>() {
@Override
protected Boolean initialValue() {
return false;
}
};
- private static final ThreadLocal<Deque<IASTNode>> fLookupPoints = new ThreadLocal<Deque<IASTNode>>() {
+ private static final ThreadLocal<Deque<IASTNode>> fLookupPoints = new ThreadLocal<>() {
@Override
protected Deque<IASTNode> initialValue() {
return new ArrayDeque<>();
@@ -1143,7 +1143,7 @@ public class CPPSemantics {
return;
}
- if (data.qualified && !(scope instanceof ICPPTemplateScope)) {
+ if (!data.isDestructor && data.qualified && !(scope instanceof ICPPTemplateScope)) {
if (data.ignoreUsingDirectives || data.usingDirectives.isEmpty())
return;
data.usingDirectivesOnly = true;
@@ -1250,6 +1250,7 @@ public class CPPSemantics {
ld2.fHeuristicBaseLookup = data.fHeuristicBaseLookup;
ld2.qualified = parent instanceof ICPPASTQualifiedName;
ld2.typesOnly = true;
+ ld2.isDestructor = true;
lookup(ld2, getLookupScope(typeDtorName));
IBinding[] typedefs = ld2.getFoundBindings();
ITypedef typedef = null;
@@ -2654,7 +2655,7 @@ public class CPPSemantics {
}
}
}
- return result;
+ return ArrayUtil.trim(result);
}
/**
@@ -3778,7 +3779,13 @@ public class CPPSemantics {
if (CPPTemplates.isDependentType(sourceType)) {
IType[] tmp = { sourceType };
setTargetedFunctionsToUnknown(tmp);
- return CPPDeferredFunction.createForCandidates(type.getConstructors());
+ ICPPConstructor[] ctors = type.getConstructors();
+ if (ctors != null && ctors.length > 0) {
+ return CPPDeferredFunction.createForCandidates(ctors);
+ } else {
+ return new ProblemBinding(typeId, ISemanticProblem.BINDING_NOT_FOUND,
+ type.getNameCharArray());
+ }
}
Cost c;
if (calculateInheritanceDepth(sourceType, type) >= 0) {
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPTemplates.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPTemplates.java
index 96e1d2c47d4..ba0378e9f23 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPTemplates.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPTemplates.java
@@ -239,13 +239,13 @@ public class CPPTemplates {
// Infrastructure to protect against rogue template metaprograms that don't terminate.
private static final int TEMPLATE_INSTANTIATION_DEPTH_LIMIT = 128;
- private static final ThreadLocal<Integer> fTemplateInstantiationDepth = new ThreadLocal<Integer>() {
+ private static final ThreadLocal<Integer> fTemplateInstantiationDepth = new ThreadLocal<>() {
@Override
protected Integer initialValue() {
return 0;
}
};
- private static final ThreadLocal<Set<TypeInstantiationRequest>> instantiationsInProgress = new ThreadLocal<Set<TypeInstantiationRequest>>() {
+ private static final ThreadLocal<Set<TypeInstantiationRequest>> instantiationsInProgress = new ThreadLocal<>() {
@Override
protected Set<TypeInstantiationRequest> initialValue() {
return new HashSet<>();
@@ -1717,12 +1717,7 @@ public class CPPTemplates {
if (type instanceof ICPPUnaryTypeTransformation) {
ICPPUnaryTypeTransformation typeTransformation = (ICPPUnaryTypeTransformation) type;
IType operand = instantiateType(typeTransformation.getOperand(), context);
- switch (typeTransformation.getOperator()) {
- case underlying_type:
- return TypeTraits.underlyingType(operand);
- default:
- return null; // shouldn't happen
- }
+ return SemanticUtil.applyTypeTransformation(typeTransformation.getOperator(), operand);
}
if (type instanceof CPPClosureType) {
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPVariableReadWriteFlags.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPVariableReadWriteFlags.java
index e5ee18de9fa..d3029a98176 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPVariableReadWriteFlags.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPVariableReadWriteFlags.java
@@ -15,8 +15,11 @@
*******************************************************************************/
package org.eclipse.cdt.internal.core.dom.parser.cpp.semantics;
+import java.util.Optional;
+
import org.eclipse.cdt.core.dom.ast.IASTDeclarator;
import org.eclipse.cdt.core.dom.ast.IASTExpression;
+import org.eclipse.cdt.core.dom.ast.IASTFunctionCallExpression;
import org.eclipse.cdt.core.dom.ast.IASTIdExpression;
import org.eclipse.cdt.core.dom.ast.IASTImplicitName;
import org.eclipse.cdt.core.dom.ast.IASTImplicitNameOwner;
@@ -25,6 +28,7 @@ import org.eclipse.cdt.core.dom.ast.IASTName;
import org.eclipse.cdt.core.dom.ast.IASTNode;
import org.eclipse.cdt.core.dom.ast.IASTUnaryExpression;
import org.eclipse.cdt.core.dom.ast.IBinding;
+import org.eclipse.cdt.core.dom.ast.IFunctionType;
import org.eclipse.cdt.core.dom.ast.IPointerType;
import org.eclipse.cdt.core.dom.ast.IQualifierType;
import org.eclipse.cdt.core.dom.ast.IType;
@@ -36,8 +40,11 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTStructuredBindingDeclaration;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTUnaryExpression;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassType;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPConstructor;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPDeferredFunction;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPFunction;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPFunctionType;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPReferenceType;
+import org.eclipse.cdt.core.parser.util.ArrayUtil;
import org.eclipse.cdt.internal.core.dom.parser.ITypeContainer;
import org.eclipse.cdt.internal.core.dom.parser.VariableReadWriteFlags;
import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPUnknownType;
@@ -50,7 +57,7 @@ import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPUnknownType;
public final class CPPVariableReadWriteFlags extends VariableReadWriteFlags {
private static CPPVariableReadWriteFlags INSTANCE = new CPPVariableReadWriteFlags();
- public static int getReadWriteFlags(IASTName variable) {
+ public static Optional<Integer> getReadWriteFlags(IASTName variable) {
CPPSemantics.pushLookupPoint(variable);
try {
return INSTANCE.rwAnyNode(variable, 0);
@@ -60,28 +67,29 @@ public final class CPPVariableReadWriteFlags extends VariableReadWriteFlags {
}
@Override
- protected int rwAnyNode(IASTNode node, int indirection) {
+ protected Optional<Integer> rwAnyNode(IASTNode node, int indirection) {
final IASTNode parent = node.getParent();
if (parent instanceof ICPPASTConstructorInitializer) {
return rwInCtorInitializer(node, indirection, (ICPPASTConstructorInitializer) parent);
}
if (parent instanceof ICPPASTFieldDesignator) {
- return WRITE; // Field is initialized via a designated initializer.
+ return Optional.of(WRITE); // Field is initialized via a designated initializer.
}
return super.rwAnyNode(node, indirection);
}
@Override
- protected int rwInDeclarator(IASTDeclarator parent, int indirection) {
+ protected Optional<Integer> rwInDeclarator(IASTDeclarator parent, int indirection) {
IType type = CPPVisitor.createType(parent);
if (type instanceof ICPPUnknownType || type instanceof ICPPClassType
&& !TypeTraits.hasTrivialDefaultConstructor((ICPPClassType) type, CPPSemantics.MAX_INHERITANCE_DEPTH)) {
- return WRITE;
+ return Optional.of(WRITE);
}
return super.rwInDeclarator(parent, indirection);
}
- private int rwInCtorInitializer(IASTNode node, int indirection, ICPPASTConstructorInitializer parent) {
+ private Optional<Integer> rwInCtorInitializer(IASTNode node, int indirection,
+ ICPPASTConstructorInitializer parent) {
IASTNode grand = parent.getParent();
if (grand instanceof IASTDeclarator || grand instanceof ICPPASTNewExpression) {
// Look for a constructor being called.
@@ -112,33 +120,37 @@ public final class CPPVariableReadWriteFlags extends VariableReadWriteFlags {
} else if (grand instanceof ICPPASTStructuredBindingDeclaration) {
return rwInStructuredBinding((ICPPASTStructuredBindingDeclaration) grand);
}
- return READ | WRITE; // fallback
+ return Optional.empty(); // Fallback
}
@Override
- protected int rwInUnaryExpression(IASTNode node, IASTUnaryExpression expr, int indirection) {
+ protected Optional<Integer> rwInUnaryExpression(IASTNode node, IASTUnaryExpression expr, int indirection) {
switch (expr.getOperator()) {
case ICPPASTUnaryExpression.op_typeid:
- return 0;
+ return Optional.of(0);
}
return super.rwInUnaryExpression(node, expr, indirection);
}
@Override
- protected int rwInFunctionName(IASTExpression node) {
+ protected Optional<Integer> rwInFunctionName(IASTExpression node) {
if (!(node instanceof IASTIdExpression)) {
IType type = node.getExpressionType();
if (type instanceof ICPPFunctionType && !((ICPPFunctionType) type).isConst())
- return READ | WRITE;
+ return Optional.of(READ | WRITE);
}
- return READ;
+ return Optional.of(READ);
}
@Override
- protected int rwAssignmentToType(IType type, int indirection) {
+ protected Optional<Integer> rwAssignmentToType(IType type, int indirection) {
+ if (CPPTemplates.isDependentType(type)) {
+ return Optional.empty(); // Fallback
+ }
+
if (indirection == 0) {
if (!(type instanceof ICPPReferenceType) || ((ICPPReferenceType) type).isRValueReference()) {
- return READ;
+ return Optional.of(READ);
}
type = ((ICPPReferenceType) type).getType();
}
@@ -150,11 +162,44 @@ public final class CPPVariableReadWriteFlags extends VariableReadWriteFlags {
}
if (indirection == 0) {
if (type instanceof IQualifierType) {
- return ((IQualifierType) type).isConst() ? READ : READ | WRITE;
+ return ((IQualifierType) type).isConst() ? Optional.of(READ) : Optional.of(READ | WRITE);
} else if (type instanceof IPointerType) {
- return ((IPointerType) type).isConst() ? READ : READ | WRITE;
+ return ((IPointerType) type).isConst() ? Optional.of(READ) : Optional.of(READ | WRITE);
+ }
+ }
+ return Optional.empty(); // Fallback
+ }
+
+ @Override
+ protected Optional<Integer> rwArgumentForFunctionCall(final IASTFunctionCallExpression funcCall, IASTNode argument,
+ int indirection) {
+ // Handle deferred functions (unresolved overloads) by taking the union (bitwise or)
+ // of the flags of each candidate function.
+ IASTExpression functionNameExpression = funcCall.getFunctionNameExpression();
+ if (functionNameExpression instanceof IASTIdExpression) {
+ IBinding b = ((IASTIdExpression) functionNameExpression).getName().resolveBinding();
+ if (b instanceof ICPPDeferredFunction) {
+ ICPPDeferredFunction deferredFunc = (ICPPDeferredFunction) b;
+ ICPPFunction[] candidates = deferredFunc.getCandidates();
+ if (candidates != null) {
+ IASTInitializerClause[] args = funcCall.getArguments();
+ int argPos = ArrayUtil.indexOf(args, argument);
+ Optional<Integer> cumulative = Optional.empty();
+ for (ICPPFunction f : candidates) {
+ if (f == null) {
+ continue;
+ }
+ IType type = f.getType();
+ if (type instanceof IFunctionType) {
+ Optional<Integer> res = rwArgumentForFunctionCall((IFunctionType) type, argPos,
+ args[argPos], indirection);
+ cumulative = union(cumulative, res);
+ }
+ }
+ return cumulative;
+ }
}
}
- return READ | WRITE; // fallback
+ return super.rwArgumentForFunctionCall(funcCall, argument, indirection);
}
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPVisitor.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPVisitor.java
index 11cc4769f92..6393d9cf453 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPVisitor.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPVisitor.java
@@ -236,7 +236,6 @@ import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPTemplateNonTypeArgument;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPTemplateParameterMap;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPTemplateTypeArgument;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPTypedef;
-import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPUnaryTypeTransformation;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPUnknownTypeScope;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPVariable;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPVariableTemplate;
@@ -280,7 +279,7 @@ public class CPPVisitor extends ASTQueries {
// Thread-local set of declarators for which auto types are being created.
// Used to prevent infinite recursion while processing invalid self-referencing
// auto-type declarations.
- private static final ThreadLocal<Set<IASTDeclarator>> autoTypeDeclarators = new ThreadLocal<Set<IASTDeclarator>>() {
+ private static final ThreadLocal<Set<IASTDeclarator>> autoTypeDeclarators = new ThreadLocal<>() {
@Override
protected Set<IASTDeclarator> initialValue() {
return new HashSet<>();
@@ -2793,7 +2792,12 @@ public class CPPVisitor extends ASTQueries {
name = ((IASTEnumerationSpecifier) declSpec).getName();
} else if (declSpec instanceof ICPPASTTypeTransformationSpecifier) {
ICPPASTTypeTransformationSpecifier spec = (ICPPASTTypeTransformationSpecifier) declSpec;
- return new CPPUnaryTypeTransformation(spec.getOperator(), createType(spec.getOperand()));
+ IType type = SemanticUtil.applyTypeTransformation(spec.getOperator(), createType(spec.getOperand()));
+ if (type != null)
+ return type;
+
+ return ProblemType.UNRESOLVED_NAME;
+
} else if (declSpec instanceof ICPPASTSimpleDeclSpecifier) {
ICPPASTSimpleDeclSpecifier spec = (ICPPASTSimpleDeclSpecifier) declSpec;
// Check for decltype(expr)
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/Conversions.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/Conversions.java
index b4858bbd4b4..fb3d3e4157f 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/Conversions.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/Conversions.java
@@ -30,6 +30,7 @@ import static org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.SemanticUti
import static org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.SemanticUtil.getNestedType;
import static org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.SemanticUtil.isVoidType;
+import java.math.BigInteger;
import java.util.Collections;
import org.eclipse.cdt.core.dom.ast.DOMException;
@@ -60,6 +61,8 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateInstance;
import org.eclipse.cdt.core.parser.util.CharArrayUtils;
import org.eclipse.cdt.internal.core.dom.parser.ArithmeticConversion;
import org.eclipse.cdt.internal.core.dom.parser.ITypeContainer;
+import org.eclipse.cdt.internal.core.dom.parser.SizeofCalculator;
+import org.eclipse.cdt.internal.core.dom.parser.SizeofCalculator.SizeAndAlignment;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPBasicType;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPPointerToMemberType;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPPointerType;
@@ -1168,9 +1171,13 @@ public class Conversions {
if (basicType.getKind() == Kind.eNullPtr)
return true;
- Long val = basicType.getAssociatedNumericalValue();
- if (val != null && val == 0) {
- return true;
+ // Starting from C++11, the value is required to be a literal. This means pre-C++11 parsing will not be correct here.
+ // But we don't currently have a way to check the C++ version here and in semantics code in general.
+ if (basicType.getKind() == Kind.eInt && basicType.isFromLiteral()) {
+ Long val = basicType.getAssociatedNumericalValue();
+ if (val != null && val == 0) {
+ return true;
+ }
}
}
return false;
@@ -1322,4 +1329,99 @@ public class Conversions {
private static boolean isNullPtr(IType t1) {
return t1 instanceof IBasicType && ((IBasicType) t1).getKind() == Kind.eNullPtr;
}
+
+ /**
+ * Narrow a numeric value to the range of a specified type.
+ * @param num the value to narrow (may be null)
+ * @param toType the type to narrow to
+ * @return a number representing the narrowed value, or null
+ */
+ public static Number narrowNumberValue(Number num, IType toType) {
+ if (num == null)
+ return null;
+
+ if (toType instanceof IBasicType) {
+ IBasicType basicType = (IBasicType) toType;
+ IBasicType.Kind basicTypeKind = basicType.getKind();
+ switch (basicTypeKind) {
+ case eFloat:
+ if (num instanceof Float)
+ return num;
+ return Float.valueOf(num.floatValue());
+ case eDouble:
+ if (num instanceof Double)
+ return num;
+ return Double.valueOf(num.doubleValue());
+ case eInt:
+ SizeAndAlignment sizeToType = SizeofCalculator.getSizeAndAlignment(toType);
+ if (sizeToType == null)
+ return null;
+ // Note in the following we don't check type.isSigned() since that checks for the
+ // explicit presence of the "signed" modifier. So instead check !type.isUnsigned().
+ if (sizeToType.size <= 8) {
+ // First, mask the value to the correct size
+ // Note that we take the longValue here which may be negative even though the
+ // original value is positive; the masking here should still be correct and we
+ // should ultimately end up with the correct narrowed value, regardless.
+ long longVal = num.longValue();
+ long maskVal = 0xFFFFFFFFFFFFFFFFL;
+ long signBit = 0x8000000000000000L;
+ // Calculate a mask to reduce the size of the value to the target width:
+ maskVal >>>= (8 - sizeToType.size) * 8;
+ signBit >>>= (8 - sizeToType.size) * 8;
+ if (!basicType.isUnsigned() && (longVal & signBit) != 0) {
+ // We need to extend the sign bit.
+ long signBits = ~maskVal;
+ longVal |= signBits;
+ } else {
+ longVal &= maskVal;
+ }
+
+ // The Java type used to store the numerical value is independent of the associated
+ // C type, but we go with a smaller type (Integer) where possible. For 4 bytes
+ // (signed) or less than 4 bytes (signed or not) we can use Integer. For 8 bytes
+ // (signed) or less than 8 bytes (signed or not) we can use Long. Any larger and we
+ // resort to BigInteger.
+ if (longVal >= 0 && longVal <= Integer.MAX_VALUE) {
+ return Integer.valueOf((int) longVal);
+ }
+ if (!basicType.isUnsigned() && longVal >= Integer.MIN_VALUE && longVal <= Integer.MAX_VALUE) {
+ return Integer.valueOf((int) longVal);
+ }
+
+ if (!basicType.isUnsigned() || longVal > 0) {
+ return Long.valueOf(longVal);
+ }
+
+ BigInteger biVal = BigInteger.valueOf(longVal);
+ // 2**64 = 18446744073709551616
+ biVal = biVal.add(new BigInteger("18446744073709551616")); //$NON-NLS-1$
+ return biVal;
+ }
+ // TODO handle larger int sizes?
+ return null;
+ case eChar:
+ // TODO don't assume signed char
+ if (num instanceof Byte)
+ return num;
+ return Byte.valueOf(num.byteValue());
+ case eChar16:
+ int intVal = num.intValue();
+ int maskedVal = intVal & 0xFFFF;
+ if (maskedVal == intVal && num instanceof Integer)
+ return num;
+ return Integer.valueOf(maskedVal);
+ case eChar32:
+ long longVal = num.longValue();
+ long maskedVal32 = longVal & 0xFFFFFFFFL;
+ if (maskedVal32 == longVal && (num instanceof Integer || num instanceof Long))
+ return num;
+ return Long.valueOf(maskedVal32);
+ default:
+ return null;
+ }
+ }
+
+ return null;
+ }
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalBinary.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalBinary.java
index 464e389ed49..8cfda662951 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalBinary.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalBinary.java
@@ -151,6 +151,11 @@ public class EvalBinary extends CPPDependentEvaluation {
}
}
}
+
+ if (fType instanceof CPPBasicType) {
+ fType = ((CPPBasicType) fType).clone(~CPPBasicType.FROM_LITERAL);
+ }
+
return fType;
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalBinaryTypeId.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalBinaryTypeId.java
index 21aff0403ca..dc0d2369b94 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalBinaryTypeId.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalBinaryTypeId.java
@@ -80,6 +80,7 @@ public class EvalBinaryTypeId extends CPPDependentEvaluation {
switch (fOperator) {
case __is_base_of:
case __is_trivially_assignable:
+ case __is_same:
return CPPBasicType.BOOLEAN;
}
return ProblemType.UNKNOWN_FOR_EXPRESSION;
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalBinding.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalBinding.java
index 2da98771cf1..3ba549e475a 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalBinding.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalBinding.java
@@ -112,7 +112,9 @@ public class EvalBinding extends CPPDependentEvaluation {
if (fBinding == null) {
// fParameterOwner is guaranteed to be not null.
ICPPParameter[] parameters = fParameterOwner.getParameters();
- fBinding = parameters[fParameterPosition];
+ if (parameters.length > fParameterPosition) {
+ fBinding = parameters[fParameterPosition];
+ }
}
return fBinding;
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalComma.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalComma.java
index bc49e2cd3d0..aa8c24ce186 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalComma.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalComma.java
@@ -28,6 +28,7 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateParameterMap;
import org.eclipse.cdt.internal.core.dom.parser.DependentValue;
import org.eclipse.cdt.internal.core.dom.parser.ITypeMarshalBuffer;
import org.eclipse.cdt.internal.core.dom.parser.IntegralValue;
+import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPBasicType;
import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPEvaluation;
import org.eclipse.cdt.internal.core.dom.parser.cpp.InstantiationContext;
import org.eclipse.core.runtime.CoreException;
@@ -145,6 +146,9 @@ public class EvalComma extends CPPDependentEvaluation {
public IType getType() {
if (fType == null) {
fType = computeType();
+ if (fType instanceof CPPBasicType) {
+ fType = ((CPPBasicType) fType).clone(~CPPBasicType.FROM_LITERAL);
+ }
}
return fType;
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalConditional.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalConditional.java
index 3af16b1d397..49cc3df4639 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalConditional.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalConditional.java
@@ -39,6 +39,7 @@ import org.eclipse.cdt.internal.core.dom.parser.ITypeMarshalBuffer;
import org.eclipse.cdt.internal.core.dom.parser.IntegralValue;
import org.eclipse.cdt.internal.core.dom.parser.ProblemType;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPArithmeticConversion;
+import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPBasicType;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPReferenceType;
import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPEvaluation;
import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPUnknownType;
@@ -180,6 +181,14 @@ public class EvalConditional extends CPPDependentEvaluation {
if (fValueCategory != null)
return;
+ evaluateInternal();
+
+ if (fType instanceof CPPBasicType) {
+ fType = ((CPPBasicType) fType).clone(~CPPBasicType.FROM_LITERAL);
+ }
+ }
+
+ private void evaluateInternal() {
fValueCategory = PRVALUE;
final ICPPEvaluation positive = fPositive == null ? fCondition : fPositive;
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalFunctionCall.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalFunctionCall.java
index 47d757faf2f..5c30a9bd92e 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalFunctionCall.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalFunctionCall.java
@@ -372,7 +372,7 @@ public final class EvalFunctionCall extends CPPDependentEvaluation {
return EvalFixed.INCOMPLETE;
}
- private ICPPFunction resolveFunctionBinding() {
+ public ICPPFunction resolveFunctionBinding() {
ICPPFunction function = getOverload();
if (function == null) {
ICPPEvaluation funcEval = fArguments[0];
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalUnary.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalUnary.java
index 1dde894ea42..79eb2395633 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalUnary.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalUnary.java
@@ -19,6 +19,7 @@ import static org.eclipse.cdt.core.dom.ast.IASTExpression.ValueCategory.PRVALUE;
import static org.eclipse.cdt.core.dom.ast.IASTUnaryExpression.op_alignOf;
import static org.eclipse.cdt.core.dom.ast.IASTUnaryExpression.op_amper;
import static org.eclipse.cdt.core.dom.ast.IASTUnaryExpression.op_bracketedPrimary;
+import static org.eclipse.cdt.core.dom.ast.IASTUnaryExpression.op_integerPack;
import static org.eclipse.cdt.core.dom.ast.IASTUnaryExpression.op_minus;
import static org.eclipse.cdt.core.dom.ast.IASTUnaryExpression.op_noexcept;
import static org.eclipse.cdt.core.dom.ast.IASTUnaryExpression.op_not;
@@ -156,6 +157,8 @@ public class EvalUnary extends CPPDependentEvaluation {
return fArgument.referencesTemplateParameter();
case op_throw:
return false;
+ case op_integerPack:
+ return true;
default:
return fArgument.isValueDependent();
}
@@ -242,6 +245,8 @@ public class EvalUnary extends CPPDependentEvaluation {
return CPPVisitor.get_type_info();
case op_throw:
return CPPSemantics.VOID_TYPE;
+ case op_integerPack:
+ return fArgument.getType();
case op_amper:
if (fAddressOfQualifiedNameBinding instanceof ICPPMember) {
ICPPMember member = (ICPPMember) fAddressOfQualifiedNameBinding;
@@ -394,6 +399,10 @@ public class EvalUnary extends CPPDependentEvaluation {
@Override
public ICPPEvaluation instantiate(InstantiationContext context, int maxDepth) {
+ if (fOperator == op_integerPack && context.getPackOffset() != -1) {
+ return new EvalFixed(getType(), ValueCategory.PRVALUE, IntegralValue.create(context.getPackOffset()));
+ }
+
ICPPEvaluation argument = fArgument.instantiate(context, maxDepth);
IBinding binding = fAddressOfQualifiedNameBinding;
if (binding instanceof ICPPUnknownBinding) {
@@ -520,6 +529,15 @@ public class EvalUnary extends CPPDependentEvaluation {
@Override
public int determinePackSize(ICPPTemplateParameterMap tpMap) {
+ if (fOperator == op_integerPack) {
+ ICPPEvaluation instantiatedArg = fArgument.instantiate(new InstantiationContext(tpMap),
+ IntegralValue.MAX_RECURSION_DEPTH);
+ IValue value = instantiatedArg.getValue();
+ if (value.numberValue() != null) {
+ return (int) value.numberValue().longValue();
+ }
+ return CPPTemplates.PACK_SIZE_DEFER;
+ }
return fArgument.determinePackSize(tpMap);
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalUtil.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalUtil.java
index 3e668dce2ef..e41c71d1ca8 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalUtil.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalUtil.java
@@ -39,7 +39,7 @@ public class EvalUtil {
* The set of ICPPVariable objects for which initial value computation is in progress on each thread.
* This is used to guard against recursion during initial value computation.
*/
- private static final ThreadLocal<Set<ICPPVariable>> fInitialValueInProgress = new ThreadLocal<Set<ICPPVariable>>() {
+ private static final ThreadLocal<Set<ICPPVariable>> fInitialValueInProgress = new ThreadLocal<>() {
@Override
protected Set<ICPPVariable> initialValue() {
return new HashSet<>();
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/ExecBuiltin.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/ExecBuiltin.java
new file mode 100644
index 00000000000..86e6aab7ae2
--- /dev/null
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/ExecBuiltin.java
@@ -0,0 +1,195 @@
+/*******************************************************************************
+* Copyright (c) 2022 Davin McCall and others.
+*
+* This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License 2.0
+* which accompanies this distribution, and is available at
+* https://www.eclipse.org/legal/epl-2.0/
+*
+* SPDX-License-Identifier: EPL-2.0
+*
+* Contributors:
+* Davin McCall - initial API and implementation
+*******************************************************************************/
+package org.eclipse.cdt.internal.core.dom.parser.cpp.semantics;
+
+import org.eclipse.cdt.core.dom.ast.IASTExpression.ValueCategory;
+import org.eclipse.cdt.core.dom.ast.IBasicType.Kind;
+import org.eclipse.cdt.core.dom.ast.IType;
+import org.eclipse.cdt.core.dom.ast.IValue;
+import org.eclipse.cdt.internal.core.dom.parser.ITypeMarshalBuffer;
+import org.eclipse.cdt.internal.core.dom.parser.IntegralValue;
+import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPBasicType;
+import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPBuiltinParameter;
+import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPEvaluation;
+import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPEvaluation.ConstexprEvaluationContext;
+import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPExecution;
+import org.eclipse.cdt.internal.core.dom.parser.cpp.InstantiationContext;
+import org.eclipse.core.runtime.CoreException;
+
+/**
+ * Constexpr-evaluation for compiler builtin functions.
+ */
+public class ExecBuiltin implements ICPPExecution {
+ public final static short BUILTIN_FFS = 0, BUILTIN_FFSL = 1, BUILTIN_FFSLL = 2, BUILTIN_CTZ = 3, BUILTIN_CTZL = 4,
+ BUILTIN_CTZLL = 5, BUILTIN_POPCOUNT = 6, BUILTIN_POPCOUNTL = 7, BUILTIN_POPCOUNTLL = 8, BUILTIN_PARITY = 9,
+ BUILTIN_PARITYL = 10, BUILTIN_PARITYLL = 11, BUILTIN_ABS = 12, BUILTIN_LABS = 13, BUILTIN_LLABS = 14;
+
+ private static IType intType = new CPPBasicType(Kind.eInt, 0);
+ private static IType longType = new CPPBasicType(Kind.eInt, CPPBasicType.IS_LONG);
+ private static IType longlongType = new CPPBasicType(Kind.eInt, CPPBasicType.IS_LONG_LONG);
+
+ private short funcId;
+
+ public ExecBuiltin(short funcId) {
+ this.funcId = funcId;
+ }
+
+ @Override
+ public ICPPExecution instantiate(InstantiationContext context, int maxDepth) {
+ return this;
+ }
+
+ @Override
+ public ICPPExecution executeForFunctionCall(ActivationRecord record, ConstexprEvaluationContext context) {
+
+ switch (funcId) {
+ case BUILTIN_FFS:
+ return executeBuiltinFfs(record, context, intType);
+ case BUILTIN_FFSL:
+ return executeBuiltinFfs(record, context, longType);
+ case BUILTIN_FFSLL:
+ return executeBuiltinFfs(record, context, longlongType);
+ case BUILTIN_CTZ:
+ return executeBuiltinCtz(record, context, intType);
+ case BUILTIN_CTZL:
+ return executeBuiltinCtz(record, context, longType);
+ case BUILTIN_CTZLL:
+ return executeBuiltinCtz(record, context, longlongType);
+ case BUILTIN_POPCOUNT:
+ return executeBuiltinPopcount(record, context, intType);
+ case BUILTIN_POPCOUNTL:
+ return executeBuiltinPopcount(record, context, longType);
+ case BUILTIN_POPCOUNTLL:
+ return executeBuiltinPopcount(record, context, longlongType);
+ case BUILTIN_PARITY:
+ return executeBuiltinParity(record, context, intType);
+ case BUILTIN_PARITYL:
+ return executeBuiltinParity(record, context, longType);
+ case BUILTIN_PARITYLL:
+ return executeBuiltinParity(record, context, longlongType);
+ case BUILTIN_ABS:
+ return executeBuiltinAbs(record, context, intType);
+ case BUILTIN_LABS:
+ return executeBuiltinAbs(record, context, longType);
+ case BUILTIN_LLABS:
+ return executeBuiltinAbs(record, context, longlongType);
+ }
+ return null;
+ }
+
+ /*
+ * Return an execution representing __builtin_ffs or __builtin_ctz
+ */
+ private ICPPExecution executeBuiltinFfsCtz(ActivationRecord record, ConstexprEvaluationContext context,
+ boolean isCtz, IType argType) {
+ ICPPEvaluation arg0 = record.getVariable(new CPPBuiltinParameter(null, 0));
+
+ IValue argValue = arg0.getValue();
+ Number numberVal = argValue.numberValue();
+ numberVal = Conversions.narrowNumberValue(numberVal, argType);
+ if (numberVal == null)
+ return null;
+
+ // __builtin_ffs returns 0 if arg is 0, or 1+count where count is the number of trailing 0 bits
+ // __builtin_ctz is undefined if arg is 0, or returns count
+ long arg = numberVal.longValue();
+ if (arg == 0) {
+ if (isCtz) {
+ return null;
+ } else {
+ return new ExecReturn(new EvalFixed(intType, ValueCategory.PRVALUE, IntegralValue.create(0)));
+ }
+ }
+ int count = 0;
+ while ((arg & 1) == 0) {
+ arg >>= 1;
+ count++;
+ }
+ int increment = isCtz ? 0 : 1;
+ return new ExecReturn(new EvalFixed(intType, ValueCategory.PRVALUE, IntegralValue.create(count + increment)));
+ }
+
+ private ICPPExecution executeBuiltinFfs(ActivationRecord record, ConstexprEvaluationContext context,
+ IType argType) {
+ return executeBuiltinFfsCtz(record, context, false /* ffs */, argType);
+ }
+
+ private ICPPExecution executeBuiltinCtz(ActivationRecord record, ConstexprEvaluationContext context,
+ IType argType) {
+ return executeBuiltinFfsCtz(record, context, true /* ctz */, argType);
+ }
+
+ /*
+ * Return an execution representing __builtin_popcount
+ */
+ private ICPPExecution executeBuiltinPopcountParity(ActivationRecord record, ConstexprEvaluationContext context,
+ boolean isParity, IType argType) {
+ ICPPEvaluation arg0 = record.getVariable(new CPPBuiltinParameter(null, 0));
+
+ IValue argValue = arg0.getValue();
+ Number numberVal = argValue.numberValue();
+ numberVal = Conversions.narrowNumberValue(numberVal, argType);
+ if (numberVal == null)
+ return null;
+
+ long arg = numberVal.longValue();
+ int count = 0;
+ while (arg != 0) {
+ if ((arg & 1) != 0)
+ count++;
+ arg >>>= 1;
+ }
+ if (isParity) {
+ count = count & 1;
+ }
+ return new ExecReturn(new EvalFixed(intType, ValueCategory.PRVALUE, IntegralValue.create(count)));
+ }
+
+ private ICPPExecution executeBuiltinPopcount(ActivationRecord record, ConstexprEvaluationContext context,
+ IType argType) {
+ return executeBuiltinPopcountParity(record, context, false, argType);
+ }
+
+ private ICPPExecution executeBuiltinParity(ActivationRecord record, ConstexprEvaluationContext context,
+ IType argType) {
+ return executeBuiltinPopcountParity(record, context, true, argType);
+ }
+
+ private ICPPExecution executeBuiltinAbs(ActivationRecord record, ConstexprEvaluationContext context,
+ IType argType) {
+ ICPPEvaluation arg0 = record.getVariable(new CPPBuiltinParameter(null, 0));
+
+ IValue argValue = arg0.getValue();
+ Number argNumber = argValue.numberValue();
+ argNumber = Conversions.narrowNumberValue(argNumber, argType);
+ if (argNumber == null)
+ return null;
+
+ long arg = argNumber.longValue();
+ long result = Math.abs(arg);
+
+ return new ExecReturn(new EvalFixed(argType, ValueCategory.PRVALUE, IntegralValue.create(result)));
+ }
+
+ @Override
+ public void marshal(ITypeMarshalBuffer buffer, boolean includeValue) throws CoreException {
+ buffer.putShort(ITypeMarshalBuffer.EXEC_BUILTIN);
+ buffer.putShort(funcId);
+ }
+
+ public static ICPPExecution unmarshal(short firstBytes, ITypeMarshalBuffer buffer) throws CoreException {
+ short funcId = buffer.getShort();
+ return new ExecBuiltin(funcId);
+ }
+}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/ExecCompoundStatement.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/ExecCompoundStatement.java
index a906b88b4c7..bd9b040e8b2 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/ExecCompoundStatement.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/ExecCompoundStatement.java
@@ -21,6 +21,10 @@ import org.eclipse.core.runtime.CoreException;
public class ExecCompoundStatement implements ICPPExecution {
private ICPPExecution[] executions;
+ public ExecCompoundStatement() {
+ this(new IASTStatement[] {});
+ }
+
private ExecCompoundStatement(ICPPExecution[] executions) {
this.executions = executions;
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/LookupData.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/LookupData.java
index 218d34adee5..d4b5cac39dc 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/LookupData.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/LookupData.java
@@ -123,6 +123,7 @@ public class LookupData extends ScopeLookupData {
public ICPPClassType skippedScope;
public Object foundItems;
public ProblemBinding problem;
+ public boolean isDestructor;
public LookupData(IASTName name) {
super(name, true, false);
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/SemanticUtil.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/SemanticUtil.java
index f84d285bad6..ebf6c6d1b86 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/SemanticUtil.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/SemanticUtil.java
@@ -68,6 +68,7 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPPointerToMemberType;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPReferenceType;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPSpecialization;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateArgument;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPUnaryTypeTransformation;
import org.eclipse.cdt.core.index.IIndexBinding;
import org.eclipse.cdt.core.parser.Keywords;
import org.eclipse.cdt.core.parser.util.ArrayUtil;
@@ -945,4 +946,13 @@ public class SemanticUtil {
}
return result;
}
+
+ public static IType applyTypeTransformation(ICPPUnaryTypeTransformation.Operator operator, IType type) {
+ switch (operator) {
+ case underlying_type:
+ return TypeTraits.underlyingType(type);
+ default:
+ return null; // shouldn't happen
+ }
+ }
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/TemplateArgumentDeduction.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/TemplateArgumentDeduction.java
index 1ceb1694fc9..5a9f4ab9059 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/TemplateArgumentDeduction.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/TemplateArgumentDeduction.java
@@ -135,7 +135,7 @@ public class TemplateArgumentDeduction {
break;
}
- par = CPPTemplates.instantiateType(par, new InstantiationContext(map));
+ par = CPPTemplates.instantiateType(par, InstantiationContext.forDeduction(map));
if (!SemanticUtil.isValidType(par))
return false;
@@ -352,7 +352,7 @@ public class TemplateArgumentDeduction {
return null;
IType par = template.getType();
- InstantiationContext context = new InstantiationContext(map);
+ InstantiationContext context = InstantiationContext.forDeduction(map);
par = CPPTemplates.instantiateType(par, context);
if (!SemanticUtil.isValidType(par))
return null;
@@ -399,7 +399,7 @@ public class TemplateArgumentDeduction {
return null;
}
- InstantiationContext context = new InstantiationContext(map);
+ InstantiationContext context = InstantiationContext.forDeduction(map);
for (int i = 0; i < length; i++) {
if (result[i] == null) {
final ICPPTemplateParameter tpar = tmplParams[i];
@@ -427,7 +427,7 @@ public class TemplateArgumentDeduction {
return null;
IType a = SemanticUtil.getSimplifiedType(ftype);
- InstantiationContext context = new InstantiationContext(map);
+ InstantiationContext context = InstantiationContext.forDeduction(map);
IType p = CPPTemplates.instantiateType(template.getType(), context);
if (!SemanticUtil.isValidType(p))
return null;
@@ -572,25 +572,45 @@ public class TemplateArgumentDeduction {
return true;
}
- private static int deduceForPartialOrdering(IType par, IType arg, TemplateArgumentDeduction deduct)
+ private static int deduceForPartialOrdering(IType parOrig, IType argOrig, TemplateArgumentDeduction deduct)
throws DOMException {
- par = getNestedType(par, TDEF);
- arg = getNestedType(arg, TDEF);
+ IType parNested = getNestedType(parOrig, TDEF);
+ IType argNested = getNestedType(argOrig, TDEF);
boolean isMoreCVQualified = false;
- if (par instanceof ICPPReferenceType && arg instanceof ICPPReferenceType) {
- par = getNestedType(par, REF | TDEF);
- arg = getNestedType(arg, REF | TDEF);
- CVQualifier cvp = getCVQualifier(par);
- CVQualifier cva = getCVQualifier(arg);
+ boolean preferForLValueRef = false;
+ if (parNested instanceof ICPPReferenceType && argNested instanceof ICPPReferenceType) {
+ preferForLValueRef = compareRValueRValueTemplateFunctions(parNested, argNested);
+ parNested = getNestedType(parNested, REF | TDEF);
+ argNested = getNestedType(argNested, REF | TDEF);
+ CVQualifier cvp = getCVQualifier(parNested);
+ CVQualifier cva = getCVQualifier(argNested);
isMoreCVQualified = cva.isMoreQualifiedThan(cvp);
}
- par = getNestedType(par, TDEF | REF | ALLCVQ);
- arg = getNestedType(arg, TDEF | REF | ALLCVQ);
+ parNested = getNestedType(parNested, TDEF | REF | ALLCVQ);
+ argNested = getNestedType(argNested, TDEF | REF | ALLCVQ);
- if (!deduct.fromType(par, arg, false, false))
+ if (!deduct.fromType(parNested, argNested, false, false))
return -1;
- return isMoreCVQualified ? 1 : 0;
+ return (isMoreCVQualified || preferForLValueRef) ? 1 : 0;
+ }
+
+ private static boolean compareRValueRValueTemplateFunctions(final IType f1, final IType f2) {
+ ICPPReferenceType fstTp = (ICPPReferenceType) f1;
+ ICPPReferenceType sndTp = (ICPPReferenceType) f2;
+
+ boolean fstRv = fstTp.isRValueReference();
+ boolean sndRv = sndTp.isRValueReference();
+
+ if (fstRv != sndRv) {
+ return fstRv;
+ }
+
+ return false;
+ }
+
+ private static boolean isReferenceType(IType fstSpecP) {
+ return ICPPReferenceType.class.isAssignableFrom(fstSpecP.getClass());
}
/**
@@ -759,7 +779,7 @@ public class TemplateArgumentDeduction {
private static boolean verifyDeduction(ICPPTemplateParameter[] pars, CPPTemplateParameterMap tpMap,
boolean useDefaults) {
- InstantiationContext context = new InstantiationContext(tpMap);
+ InstantiationContext context = InstantiationContext.forDeduction(tpMap);
for (ICPPTemplateParameter tpar : pars) {
if (tpar.isParameterPack()) {
ICPPTemplateArgument[] deducedArgs = tpMap.getPackExpansion(tpar);
@@ -1022,7 +1042,7 @@ public class TemplateArgumentDeduction {
return true; // An unknown type may match anything.
// Verify that the resolved binding matches the argument type.
- InstantiationContext context = new InstantiationContext(fDeducedArgs);
+ InstantiationContext context = InstantiationContext.forDeduction(fDeducedArgs);
IBinding binding = CPPTemplates.resolveUnknown((ICPPUnknownBinding) p, context);
if (binding instanceof ICPPUnknownBinding)
return true; // An unknown type may match anything.
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/TypeInstantiationRequest.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/TypeInstantiationRequest.java
index e667de7196d..4e2cb16f80b 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/TypeInstantiationRequest.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/TypeInstantiationRequest.java
@@ -21,6 +21,7 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateArgument;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateParameterMap;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPTypeSpecialization;
import org.eclipse.cdt.core.parser.util.CharArrayUtils;
+import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPTemplateParameterMap;
import org.eclipse.cdt.internal.core.dom.parser.cpp.InstantiationContext;
import org.eclipse.core.runtime.CoreException;
@@ -36,7 +37,15 @@ public class TypeInstantiationRequest {
public TypeInstantiationRequest(IType type, InstantiationContext context) {
this.type = type;
- this.parameterMap = context.getParameterMap();
+ /*
+ * If the InstantiationContext was created during template argument deduction, its parameter map
+ * can be modified later in the deduction process. Since the TypeInstantiationRequest is used
+ * as a key in various caches, we don't want the map changing after constructing this object,
+ * so clone the map is such cases.
+ */
+ this.parameterMap = context.isForDeduction()
+ ? new CPPTemplateParameterMap((CPPTemplateParameterMap) context.getParameterMap())
+ : context.getParameterMap();
this.packOffset = context.getPackOffset();
this.contextTypeSpecialization = context.getContextTypeSpecialization();
}
@@ -80,7 +89,7 @@ public class TypeInstantiationRequest {
return true;
if (type1 == null || type2 == null)
return false;
- return type1.isSameType(type1);
+ return type1.isSameType(type2);
}
private boolean equals(ICPPTemplateParameterMap map1, ICPPTemplateParameterMap map2) {
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/c/CompositeCFunction.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/c/CompositeCFunction.java
index bc2ab8d1380..74669ea2251 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/c/CompositeCFunction.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/c/CompositeCFunction.java
@@ -83,4 +83,9 @@ class CompositeCFunction extends CompositeCBinding implements IFunction {
public boolean isNoReturn() {
return ((IFunction) rbinding).isNoReturn();
}
+
+ @Override
+ public boolean isNoDiscard() {
+ return ((IFunction) rbinding).isNoDiscard();
+ }
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPClassSpecialization.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPClassSpecialization.java
index 37f0da7e435..ab8380c065e 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPClassSpecialization.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPClassSpecialization.java
@@ -45,7 +45,7 @@ import org.eclipse.cdt.internal.core.index.composite.ICompositesFactory;
public class CompositeCPPClassSpecialization extends CompositeCPPClassType implements ICPPClassSpecialization {
private ObjectMap specializationMap;
- private final ThreadLocal<Set<IBinding>> fInProgress = new ThreadLocal<Set<IBinding>>() {
+ private final ThreadLocal<Set<IBinding>> fInProgress = new ThreadLocal<>() {
@Override
protected Set<IBinding> initialValue() {
return new HashSet<>();
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPClassType.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPClassType.java
index 2151da243e6..7dccbf0d4fd 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPClassType.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPClassType.java
@@ -231,4 +231,9 @@ class CompositeCPPClassType extends CompositeCPPBinding implements ICPPClassType
public int getVisibility(IBinding member) {
return ((ICPPClassType) rbinding).getVisibility(member);
}
+
+ @Override
+ public boolean isNoDiscard() {
+ return ((ICPPClassType) rbinding).isNoDiscard();
+ }
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPEnumeration.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPEnumeration.java
index 73ec8ab5905..bb7631be278 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPEnumeration.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPEnumeration.java
@@ -76,4 +76,9 @@ class CompositeCPPEnumeration extends CompositeCPPBinding implements ICPPEnumera
public ICPPScope asScope() {
return new CompositeCPPEnumScope(cf, rbinding);
}
+
+ @Override
+ public boolean isNoDiscard() {
+ return ((ICPPEnumeration) rbinding).isNoDiscard();
+ }
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPFunction.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPFunction.java
index cf41dbde615..3b8467a5fcf 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPFunction.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPFunction.java
@@ -152,4 +152,9 @@ class CompositeCPPFunction extends CompositeCPPBinding implements ICPPFunction,
public ICPPExecution getFunctionBodyExecution() {
return CPPFunction.getFunctionBodyExecution((ICPPFunction) rbinding);
}
+
+ @Override
+ public boolean isNoDiscard() {
+ return ((ICPPFunction) rbinding).isNoDiscard();
+ }
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPTemplateTemplateParameter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPTemplateTemplateParameter.java
index 5c54eaf2687..0fbf4767490 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPTemplateTemplateParameter.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPTemplateTemplateParameter.java
@@ -191,6 +191,11 @@ public class CompositeCPPTemplateTemplateParameter extends CompositeCPPBinding
}
@Override
+ public boolean isNoDiscard() {
+ return false;
+ }
+
+ @Override
public int getVisibility(IBinding member) {
throw new IllegalArgumentException(member.getName() + " is not a member of " + getName()); //$NON-NLS-1$
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/indexer/StandaloneIndexerTask.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/indexer/StandaloneIndexerTask.java
index ba297d1e5cf..43a0b68d904 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/indexer/StandaloneIndexerTask.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/indexer/StandaloneIndexerTask.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2006, 2012 Wind River Systems, Inc. and others.
+ * Copyright (c) 2006, 2020 Wind River Systems, Inc. and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -11,9 +11,11 @@
* Contributors:
* Markus Schorn - initial API and implementation
* IBM Corporation
+ * Alexander Fedorov (ArSysOp) - Bug 561992
*******************************************************************************/
package org.eclipse.cdt.internal.core.indexer;
+import java.text.MessageFormat;
import java.text.NumberFormat;
import java.util.Collection;
import java.util.Iterator;
@@ -27,8 +29,6 @@ import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
-import com.ibm.icu.text.MessageFormat;
-
/**
* A task for index updates.
*
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/EmptyIterator.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/EmptyIterator.java
index cf4d1624448..ace153b52d9 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/EmptyIterator.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/EmptyIterator.java
@@ -27,25 +27,16 @@ public final class EmptyIterator<T> implements Iterator<T> {
private EmptyIterator() {
}
- /* (non-Javadoc)
- * @see java.util.Iterator#hasNext()
- */
@Override
public final boolean hasNext() {
return false;
}
- /* (non-Javadoc)
- * @see java.util.Iterator#next()
- */
@Override
public final T next() {
throw new NoSuchElementException();
}
- /* (non-Javadoc)
- * @see java.util.Iterator#remove()
- */
@Override
public final void remove() {
throw new UnsupportedOperationException();
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/FileContentProviderAdapter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/FileContentProviderAdapter.java
index 9f0d7093dc3..0db29107783 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/FileContentProviderAdapter.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/FileContentProviderAdapter.java
@@ -49,8 +49,7 @@ public class FileContentProviderAdapter extends InternalFileContentProvider {
private FileContentProviderAdapter(AbstractCodeReaderFactory factory) {
fDelegate = factory;
- setIncludeResolutionHeuristics(
- (IIncludeFileResolutionHeuristics) factory.getAdapter(IIncludeFileResolutionHeuristics.class));
+ setIncludeResolutionHeuristics(factory.getAdapter(IIncludeFileResolutionHeuristics.class));
}
/**
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ParserMessages.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ParserMessages.java
index 5aa7f207bb4..fc85d3662a6 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ParserMessages.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ParserMessages.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004, 2014 IBM Corporation and others.
+ * Copyright (c) 2004, 2020 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -10,16 +10,16 @@
*
* Contributors:
* Andrew Niefer (IBM Corporation) - Initial API and implementation
+ * Alexander Fedorov (ArSysOp) - Bug 561992
*******************************************************************************/
package org.eclipse.cdt.internal.core.parser;
+import java.text.MessageFormat;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
import org.eclipse.cdt.core.dom.ast.ISemanticProblem;
-import com.ibm.icu.text.MessageFormat;
-
public class ParserMessages {
private static final String BUNDLE_NAME = ParserMessages.class.getName();
private static ResourceBundle resourceBundle;
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ParserMessages.properties b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ParserMessages.properties
index b867ea44e76..bc9e25aeab0 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ParserMessages.properties
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ParserMessages.properties
@@ -30,6 +30,7 @@ ScannerProblemFactory.error.preproc.macroPasting=Invalid use of macro pasting in
ScannerProblemFactory.error.preproc.missingRParen=missing '')'' in parameter list of macro: {0}
ScannerProblemFactory.error.preproc.invalidVaArgs=__VA_ARGS__ can only appear in the expansion of a variadic macro\u0020
ScannerProblemFactory.error.preproc.multipleUserDefinedLiteralSuffixesOnStringLiteral=Multiple user-defined suffixes found when concatenating string literals
+ScannerProblemFactory.error.preproc.invalidUsageOutsidePreprocDirective="{0}" can only appear in a preprocessor directive
ScannerProblemFactory.error.scanner.invalidEscapeChar=Invalid escape character encountered\u0020
ScannerProblemFactory.error.scanner.unboundedString=Unbounded string encountered\u0020
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/ASTPreprocessorName.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/ASTPreprocessorName.java
index ea094e0b023..72a3e4d9057 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/ASTPreprocessorName.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/ASTPreprocessorName.java
@@ -199,13 +199,12 @@ class ASTBuiltinName extends ASTPreprocessorDefinition implements IAdaptable {
}
@Override
- @SuppressWarnings({ "rawtypes", "unchecked" })
- public Object getAdapter(Class adapter) {
+ public <T> T getAdapter(Class<T> adapter) {
if (adapter.isAssignableFrom(ASTBuiltinName.class)) {
- return this;
+ return adapter.cast(this);
}
if (fOriginalDefinition != null && adapter.isAssignableFrom(fOriginalDefinition.getClass())) {
- return fOriginalDefinition;
+ return adapter.cast(fOriginalDefinition);
}
return null;
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/CPreprocessor.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/CPreprocessor.java
index 2f06777d22c..4a8762f0af7 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/CPreprocessor.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/CPreprocessor.java
@@ -92,6 +92,8 @@ public class CPreprocessor implements ILexerLog, IScanner, IAdaptable {
public static final int tNOSPACE = IToken.FIRST_RESERVED_PREPROCESSOR + 4;
public static final int tMACRO_PARAMETER = IToken.FIRST_RESERVED_PREPROCESSOR + 5;
public static final int t__HAS_FEATURE = IToken.FIRST_RESERVED_PREPROCESSOR + 6;
+ public static final int t__HAS_INCLUDE = IToken.FIRST_RESERVED_PREPROCESSOR + 7;
+ public static final int t__HAS_INCLUDE_NEXT = IToken.FIRST_RESERVED_PREPROCESSOR + 8;
private static final int ORIGIN_PREPROCESSOR_DIRECTIVE = OffsetLimitReachedException.ORIGIN_PREPROCESSOR_DIRECTIVE;
private static final int ORIGIN_INACTIVE_CODE = OffsetLimitReachedException.ORIGIN_INACTIVE_CODE;
@@ -177,13 +179,19 @@ public class CPreprocessor implements ILexerLog, IScanner, IAdaptable {
T checkFile(String path, boolean isHeuristicMatch, IncludeSearchPathElement onPath);
}
- final private IIncludeFileTester<InternalFileContent> createCodeReaderTester = new IIncludeFileTester<InternalFileContent>() {
+ final private IIncludeFileTester<InternalFileContent> createCodeReaderTester = new IIncludeFileTester<>() {
@Override
public InternalFileContent checkFile(String path, boolean isHeuristicMatch, IncludeSearchPathElement onPath) {
final InternalFileContent fc;
IFileNomination once = fFileContentProvider.isIncludedWithPragmaOnceSemantics(path);
if (once != null) {
- fc = new InternalFileContent(path, InclusionKind.SKIP_FILE);
+ ISignificantMacros significantMacros = ISignificantMacros.NONE;
+ try {
+ significantMacros = once.getSignificantMacros();
+ } catch (CoreException e) {
+ CCorePlugin.log(e);
+ }
+ fc = new InternalFileContent(path, InclusionKind.SKIP_PRAGMA_ONCE_FILE, significantMacros);
} else {
fc = fFileContentProvider.getContentForInclusion(path, fMacroDictionaryFacade);
}
@@ -205,7 +213,7 @@ public class CPreprocessor implements ILexerLog, IScanner, IAdaptable {
}
}
- final private IIncludeFileTester<IncludeResolution> createPathTester = new IIncludeFileTester<IncludeResolution>() {
+ final private IIncludeFileTester<IncludeResolution> createPathTester = new IIncludeFileTester<>() {
@Override
public IncludeResolution checkFile(String path, boolean isHeuristicMatch, IncludeSearchPathElement onPath) {
if (fFileContentProvider.getInclusionExists(path)) {
@@ -1323,6 +1331,11 @@ public class CPreprocessor implements ILexerLog, IScanner, IAdaptable {
}
+ InternalFileContent findInclusion(final String includeDirective, final boolean quoteInclude,
+ final boolean includeNext) {
+ return findInclusion(includeDirective, quoteInclude, includeNext, getCurrentFilename(), createCodeReaderTester);
+ }
+
private <T> T findInclusion(final String includeDirective, final boolean quoteInclude, final boolean includeNext,
final String currentFile, final IIncludeFileTester<T> tester) {
T reader = null;
@@ -1783,11 +1796,19 @@ public class CPreprocessor implements ILexerLog, IScanner, IAdaptable {
case SKIP_FILE:
// Already included or fast parsing mode.
break;
+
+ case SKIP_PRAGMA_ONCE_FILE:
+ fCurrentContext.addSignificantMacros(fi.getSignificantMacros());
+ break;
}
if (stmt == null) {
// Found in index or skipped.
stmt = fLocationMap.encounterPoundInclude(poundOffset, nameOffsets[0], nameOffsets[1], condEndOffset,
headerName, path, userInclude, active, isHeuristic, nominationDelegate);
+ if (fi.getKind() == InclusionKind.SKIP_PRAGMA_ONCE_FILE) {
+ stmt.setSignificantMacros(fi.getSignificantMacros());
+ stmt.setPragamOnceSemantics(true);
+ }
}
// In a pragma once context store loaded versions of this non-pragma-once include
if (pragmaOnceContext && loadedVerisons != null && !loadedVerisons.isEmpty()) {
@@ -1805,10 +1826,11 @@ public class CPreprocessor implements ILexerLog, IScanner, IAdaptable {
for (FileVersion version : fi.getNonPragmaOnceVersions()) {
fFileContentProvider.addLoadedVersions(version.fPath, Integer.MAX_VALUE, version.fSigMacros);
}
+
fLocationMap.skippedFile(fLocationMap.getSequenceNumberForOffset(offset), fi);
}
- private char[] extractHeaderName(final char[] image, final char startDelim, final char endDelim, int[] offsets) {
+ char[] extractHeaderName(final char[] image, final char startDelim, final char endDelim, int[] offsets) {
char[] headerName;
int start = 0;
int length = image.length;
@@ -2124,9 +2146,6 @@ public class CPreprocessor implements ILexerLog, IScanner, IAdaptable {
* If applicable the macro is expanded and the resulting tokens are put onto a new context.
* @param identifier the token where macro expansion may occur.
* @param lexer the input for the expansion.
- * @param stopAtNewline whether or not tokens to be read are limited to the current line.
- * @param isPPCondition whether the expansion is inside of a preprocessor condition. This
- * implies a specific handling for the defined token.
*/
private boolean expandMacro(final Token identifier, Lexer lexer, int options, boolean withinExpansion)
throws OffsetLimitReachedException {
@@ -2141,7 +2160,24 @@ public class CPreprocessor implements ILexerLog, IScanner, IAdaptable {
identifier.setType(t__HAS_FEATURE);
return false;
}
+ if (CharArrayUtils.equals(name, Keywords.c__HAS_INCLUDE)) {
+ identifier.setType(t__HAS_INCLUDE);
+ return false;
+ }
+ if (CharArrayUtils.equals(name, Keywords.c__HAS_INCLUDE_NEXT)) {
+ identifier.setType(t__HAS_INCLUDE_NEXT);
+ return false;
+ }
+ }
+
+ // These should not expand as macros and are not allowed outside #if, #ifdef
+ if (CharArrayUtils.equals(name, Keywords.c__HAS_INCLUDE)
+ || CharArrayUtils.equals(name, Keywords.c__HAS_INCLUDE_NEXT)) {
+ handleProblem(IProblem.PREPROCESSOR_INVALID_USE_OUTSIDE_PREPROCESSOR_DIRECTIVE, name,
+ identifier.getOffset(), identifier.getEndOffset());
+ return false;
}
+
PreprocessorMacro macro = fMacroDictionary.get(name);
if (macro == null) {
if (reportSignificant && (options & IGNORE_UNDEFINED_SIGNIFICANT_MACROS) == 0)
@@ -2322,6 +2358,9 @@ public class CPreprocessor implements ILexerLog, IScanner, IAdaptable {
addTypeTraitPrimitive("is_trivially_copyable", GCCKeywords.cp__is_trivially_copyable);
addTypeTraitPrimitive("is_union", GCCKeywords.cp__is_union);
addTypeTraitPrimitive("underlying_type", GCCKeywords.cp__underlying_type);
+
+ // TODO: If at some point we add support for __has_builtin, "__integer_pack"
+ // should be added to the list of supported builtins.
}
return sSupportedFeatures;
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/ExpressionEvaluator.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/ExpressionEvaluator.java
index 405010c737a..8e589416f21 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/ExpressionEvaluator.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/ExpressionEvaluator.java
@@ -265,6 +265,10 @@ public class ExpressionEvaluator {
return handleDefined();
case CPreprocessor.t__HAS_FEATURE:
return handleHasFeature();
+ case CPreprocessor.t__HAS_INCLUDE:
+ return handleHasInclude(false);
+ case CPreprocessor.t__HAS_INCLUDE_NEXT:
+ return handleHasInclude(true);
case IToken.tLPAREN:
consume();
long r1 = expression();
@@ -350,6 +354,51 @@ public class ExpressionEvaluator {
return supported ? 1 : 0;
}
+ private long handleHasInclude(boolean isIncludeNext) throws EvalException {
+ consume(); // '__has_include'
+ if (LA() != IToken.tLPAREN) {
+ throw new EvalException(IProblem.SCANNER_EXPRESSION_SYNTAX_ERROR, null);
+ }
+ consume(); // opening parenthesis
+
+ // We don't have a tSYSTEM_HEADER_NAME or tQUOTED_HEADER_NAME token type here, these only get created when
+ // executing an include directive. In the case of a tSTRING, we only have to extract the header name from the
+ // quotes (extractHeaderName) but for system header, we have to reassemble the string by concatenating the
+ // tokens.
+ // A possibly more elegant solution could be to generate tSYSTEM_HEADER_NAME or tQUOTED_HEADER_NAME (during
+ // internalFetchToken?) but this is more ambitious and intrusive (more refactoring), especially considering
+ // various cases like macro expansion.
+ String headerName;
+ boolean quoteInclude = false;
+ if (LA() == IToken.tLT) {
+ headerName = ""; //$NON-NLS-1$
+ while (fTokens.getType() != IToken.tGT) {
+ if (fTokens.getType() == IToken.tEND_OF_INPUT) {
+ throw new EvalException(IProblem.SCANNER_UNBOUNDED_STRING, null);
+ }
+ headerName += fTokens.getImage();
+ consume();
+ }
+ consume();
+ headerName += ">"; //$NON-NLS-1$
+ headerName = new String(fPreprocessor.extractHeaderName(headerName.toCharArray(), '<', '>', new int[2]));
+ } else if (LA() == IToken.tSTRING) {
+ quoteInclude = true;
+ headerName = new String(fPreprocessor.extractHeaderName(fTokens.getCharImage(), '"', '"', new int[2]));
+ consume();
+ } else {
+ throw new EvalException(IProblem.SCANNER_EXPRESSION_SYNTAX_ERROR, null);
+ }
+
+ if (LA() != IToken.tRPAREN) {
+ throw new EvalException(IProblem.SCANNER_MISSING_R_PAREN, null);
+ }
+ consume(); // closing parenthesis
+
+ boolean includePathExists = fPreprocessor.findInclusion(headerName, quoteInclude, isIncludeNext) != null;
+ return includePathExists ? 1 : 0;
+ }
+
private int LA() {
return fTokens.getType();
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/InternalFileContent.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/InternalFileContent.java
index 0d78aa1dc89..e5889f72936 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/InternalFileContent.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/InternalFileContent.java
@@ -33,6 +33,11 @@ public class InternalFileContent extends FileContent {
*/
SKIP_FILE,
/**
+ * Instruct the preprocessor to skip this inclusion because it has pragma
+ * once semantic and has already been include for current translation unit.
+ */
+ SKIP_PRAGMA_ONCE_FILE,
+ /**
* The file and its dependents are indexed, required information is read
* from there.
*/
@@ -67,6 +72,7 @@ public class InternalFileContent extends FileContent {
private final long fTimestamp;
private final long fFileSize;
private final long fReadTime;
+ private final ISignificantMacros fSignificantMacros;
/**
* For skipping include files.
@@ -88,6 +94,33 @@ public class InternalFileContent extends FileContent {
fTimestamp = NULL_TIMESTAMP;
fFileSize = NULL_FILE_SIZE;
fReadTime = 0;
+ fSignificantMacros = null;
+ }
+
+ /**
+ * For skipping include files that have pragma once semantic and have already been include
+ * in the translation unit. Only the significant macros need to be forwarded to includer.
+ * @param fileLocation the location of the file.
+ * @param kind must be {@link InclusionKind#SKIP_FILE}.
+ * @param significantMacros The significant macros this file.
+ * @throws IllegalArgumentException if fileLocation is <code>null</code> or the kind value is illegal for
+ * this constructor.
+ */
+ public InternalFileContent(String fileLocation, InclusionKind kind, ISignificantMacros significantMacros)
+ throws IllegalArgumentException {
+ if (fileLocation == null || kind != InclusionKind.SKIP_PRAGMA_ONCE_FILE) {
+ throw new IllegalArgumentException();
+ }
+ fKind = kind;
+ fFileLocation = fileLocation;
+ fMacroDefinitions = null;
+ fUsingDirectives = null;
+ fSource = null;
+ fNonPragmaOnceFiles = null;
+ fTimestamp = NULL_TIMESTAMP;
+ fFileSize = NULL_FILE_SIZE;
+ fReadTime = 0;
+ fSignificantMacros = significantMacros;
}
/**
@@ -111,6 +144,7 @@ public class InternalFileContent extends FileContent {
fTimestamp = timestamp;
fFileSize = fileSize;
fReadTime = fileReadTime;
+ fSignificantMacros = null;
}
/**
@@ -133,6 +167,7 @@ public class InternalFileContent extends FileContent {
fTimestamp = NULL_TIMESTAMP;
fFileSize = NULL_FILE_SIZE;
fReadTime = 0;
+ fSignificantMacros = null;
}
/**
@@ -154,6 +189,7 @@ public class InternalFileContent extends FileContent {
fTimestamp = NULL_TIMESTAMP;
fFileSize = NULL_FILE_SIZE;
fReadTime = 0;
+ fSignificantMacros = null;
}
/**
@@ -274,4 +310,11 @@ public class InternalFileContent extends FileContent {
public String toString() {
return getSource().toString();
}
+
+ public ISignificantMacros getSignificantMacros() {
+ if (fKind != InclusionKind.SKIP_PRAGMA_ONCE_FILE) {
+ throw new IllegalArgumentException();
+ }
+ return fSignificantMacros;
+ }
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/MacroExpander.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/MacroExpander.java
index a292c8bd945..04a7e57bb2e 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/MacroExpander.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/MacroExpander.java
@@ -376,6 +376,12 @@ public class MacroExpander {
t.setType(CPreprocessor.t__HAS_FEATURE);
result.append(t);
protect = true;
+ } else if (protectIntrinsics && Arrays.equals(image, Keywords.c__HAS_INCLUDE)) {
+ t.setType(CPreprocessor.t__HAS_INCLUDE);
+ result.append(t);
+ } else if (protectIntrinsics && Arrays.equals(image, Keywords.c__HAS_INCLUDE_NEXT)) {
+ t.setType(CPreprocessor.t__HAS_INCLUDE_NEXT);
+ result.append(t);
} else if (macro == null || (macro.isFunctionStyle() && !input.findLParenthesis())) {
// Tricky: Don't mark function-style macros if you don't find the left parenthesis
if (fReportMacros != null) {
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/PreprocessorMacro.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/PreprocessorMacro.java
index 2549b2a1c09..e9976f203df 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/PreprocessorMacro.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/PreprocessorMacro.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2015 Wind River Systems, Inc. and others.
+ * Copyright (c) 2007, 2020 Wind River Systems, Inc. and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -10,9 +10,11 @@
*
* Contributors:
* Markus Schorn - initial API and implementation
+ * Alexander Fedorov (ArSysOp) - Bug 561992
*******************************************************************************/
package org.eclipse.cdt.internal.core.parser.scanner;
+import java.text.DateFormatSymbols;
import java.util.Calendar;
import org.eclipse.cdt.core.dom.ILinkage;
@@ -25,8 +27,6 @@ import org.eclipse.cdt.core.parser.OffsetLimitReachedException;
import org.eclipse.cdt.internal.core.dom.Linkage;
import org.eclipse.cdt.internal.core.parser.scanner.Lexer.LexerOptions;
-import com.ibm.icu.text.DateFormatSymbols;
-
/**
* Models macros used by the preprocessor
* @since 5.0
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/SignificantMacros.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/SignificantMacros.java
index 4d9e8a807b8..80e55a89f46 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/SignificantMacros.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/SignificantMacros.java
@@ -33,7 +33,7 @@ import org.eclipse.cdt.core.parser.util.CharArrayUtils;
public class SignificantMacros implements ISignificantMacros {
public static final char[] DEFINED = { 0 };
public static final char[] UNDEFINED = { 1 };
- private static final Comparator<char[]> SORTER = new Comparator<char[]>() {
+ private static final Comparator<char[]> SORTER = new Comparator<>() {
@Override
public int compare(char[] s1, char[] s2) {
return CharArrayUtils.compare(s1, s2);
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/token/KeywordSets.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/token/KeywordSets.java
index f2edfaf1f96..8fe672ed025 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/token/KeywordSets.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/token/KeywordSets.java
@@ -416,6 +416,7 @@ public class KeywordSets {
ALL_CPP.add(Keywords.EXPORT);
ALL_CPP.add(Keywords.EXTERN);
ALL_CPP.add(Keywords.FALSE);
+ ALL_CPP.add(Keywords.FINAL);
ALL_CPP.add(Keywords.FLOAT);
ALL_CPP.add(Keywords.FOR);
ALL_CPP.add(Keywords.FRIEND);
@@ -434,6 +435,7 @@ public class KeywordSets {
ALL_CPP.add(Keywords.OPERATOR);
ALL_CPP.add(Keywords.OR);
ALL_CPP.add(Keywords.OR_EQ);
+ ALL_CPP.add(Keywords.OVERRIDE);
ALL_CPP.add(Keywords.PRIVATE);
ALL_CPP.add(Keywords.PROTECTED);
ALL_CPP.add(Keywords.PUBLIC);
@@ -512,6 +514,7 @@ public class KeywordSets {
KEYWORDS_CPP.add(Keywords.EXPORT);
KEYWORDS_CPP.add(Keywords.EXTERN);
KEYWORDS_CPP.add(Keywords.FALSE);
+ KEYWORDS_CPP.add(Keywords.FINAL);
KEYWORDS_CPP.add(Keywords.FLOAT);
KEYWORDS_CPP.add(Keywords.FOR);
KEYWORDS_CPP.add(Keywords.FRIEND);
@@ -530,6 +533,7 @@ public class KeywordSets {
KEYWORDS_CPP.add(Keywords.OPERATOR);
KEYWORDS_CPP.add(Keywords.OR);
KEYWORDS_CPP.add(Keywords.OR_EQ);
+ KEYWORDS_CPP.add(Keywords.OVERRIDE);
KEYWORDS_CPP.add(Keywords.PRIVATE);
KEYWORDS_CPP.add(Keywords.PROTECTED);
KEYWORDS_CPP.add(Keywords.PUBLIC);
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/util/Profiler.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/util/Profiler.java
index 5dd2cdafa0d..eb55a4e6cb5 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/util/Profiler.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/util/Profiler.java
@@ -137,7 +137,7 @@ public class Profiler {
Profiler profiler = threadProfiler.get();
if (profiler != null) {
List<Map.Entry<String, Timer>> list = new ArrayList<>(profiler.timers.entrySet());
- Comparator<Map.Entry<String, Timer>> c = new Comparator<Map.Entry<String, Timer>>() {
+ Comparator<Map.Entry<String, Timer>> c = new Comparator<>() {
@Override
public int compare(Entry<String, Timer> o1, Entry<String, Timer> o2) {
long diff = o2.getValue().getElapsedTime() - o1.getValue().getElapsedTime();
@@ -153,7 +153,7 @@ public class Profiler {
if (!profiler.counters.isEmpty()) {
List<Map.Entry<String, int[]>> keyList = new ArrayList<>(profiler.counters.entrySet());
- Comparator<Map.Entry<String, int[]>> c2 = new Comparator<Map.Entry<String, int[]>>() {
+ Comparator<Map.Entry<String, int[]>> c2 = new Comparator<>() {
@Override
public int compare(Entry<String, int[]> o1, Entry<String, int[]> o2) {
return o2.getValue()[0] - o1.getValue()[0];
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/CModelListener.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/CModelListener.java
index 5b750f5d232..364b6519edb 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/CModelListener.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/CModelListener.java
@@ -42,7 +42,7 @@ public class CModelListener implements IElementChangedListener, IResourceChangeL
public static boolean sSuppressUpdateOfLastRecentlyUsed = false;
private PDOMManager fManager;
- private final LinkedHashMap<ITranslationUnit, ITranslationUnit> fLRUs = new LinkedHashMap<ITranslationUnit, ITranslationUnit>(
+ private final LinkedHashMap<ITranslationUnit, ITranslationUnit> fLRUs = new LinkedHashMap<>(
UPDATE_LR_CHANGED_FILES_COUNT, 0.75f, true) {
@Override
protected boolean removeEldestEntry(Map.Entry<ITranslationUnit, ITranslationUnit> eldest) {
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOM.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOM.java
index 086d14bb9d7..4cff50e8adb 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOM.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOM.java
@@ -302,10 +302,19 @@ public class PDOM extends PlatformObject implements IPDOM {
*
* CDT 9.9 development (version not supported on the 9.8.x branch)
* 215.0 - Corruption due to wrong record size in field/variable template partial specialization, bug 549028.
+ *
+ * CDT 9.12 development (version not supported on the 9.11.x branch)
+ * 216.0 - Added nodiscard function information, bug 534420
+ * 217.0 - Added nodiscard class/struct information, bug 534420
+ * 218.0 - Added nodiscard enums information, bug 534420
+ * 219.0 - Fix enums nodiscard information in the index from 8 byte to 1 byte, bug 534420
+ *
+ * CDT 10.4 development
+ * 220.0 - Changed marshalling of CPPBasicType to store new "from literal" flag, bug 573764
*/
- private static final int MIN_SUPPORTED_VERSION = version(215, 0);
- private static final int MAX_SUPPORTED_VERSION = version(215, Short.MAX_VALUE);
- private static final int DEFAULT_VERSION = version(215, 0);
+ private static final int MIN_SUPPORTED_VERSION = version(220, 0);
+ private static final int MAX_SUPPORTED_VERSION = version(220, Short.MAX_VALUE);
+ private static final int DEFAULT_VERSION = version(220, 0);
private static int version(int major, int minor) {
return (major << 16) + minor;
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMManager.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMManager.java
index 0a13c206af9..868780685ae 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMManager.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMManager.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2005, 2018 QNX Software Systems and others.
+ * Copyright (c) 2005, 2020 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -18,6 +18,7 @@
* Marc-Andre Laperle
* Martin Oberhuber (Wind River) - [397652] fix up-to-date check for PDOM
* IBM Corporation
+ * Alexander Fedorov (ArSysOp) - Bug 561992
*******************************************************************************/
package org.eclipse.cdt.internal.core.pdom;
@@ -26,6 +27,8 @@ import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
+import java.text.MessageFormat;
+import java.text.SimpleDateFormat;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Arrays;
@@ -117,9 +120,6 @@ import org.eclipse.core.runtime.preferences.IEclipsePreferences.PreferenceChange
import org.eclipse.core.runtime.preferences.IPreferencesService;
import org.eclipse.core.runtime.preferences.InstanceScope;
-import com.ibm.icu.text.MessageFormat;
-import com.ibm.icu.text.SimpleDateFormat;
-
/**
* Manages PDOM updates and events associated with them. Provides methods for index access.
*/
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMProxy.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMProxy.java
index b678934cb27..b8731ca64fb 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMProxy.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMProxy.java
@@ -250,10 +250,9 @@ public class PDOMProxy implements IPDOM {
fDelegate.resetCacheCounters();
}
- @SuppressWarnings({ "rawtypes", "unchecked" })
- public synchronized Object getAdapter(Class adapter) {
+ public synchronized <T> T getAdapter(Class<T> adapter) {
if (adapter.isAssignableFrom(PDOMProxy.class)) {
- return this;
+ return adapter.cast(this);
}
return null;
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/db/BTree.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/db/BTree.java
index 2c6c7d28e82..1f5d80e459a 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/db/BTree.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/db/BTree.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2005, 2016 QNX Software Systems and others.
+ * Copyright (c) 2005, 2020 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -12,16 +12,17 @@
* QNX - Initial API and implementation
* Andrew Ferguson (Symbian) - Provide B-tree deletion routine
* Markus Schorn (Wind River Systems)
+ * Alexander Fedorov (ArSysOp) - Bug 561992
*******************************************************************************/
package org.eclipse.cdt.internal.core.pdom.db;
+import java.text.MessageFormat;
+
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
-import com.ibm.icu.text.MessageFormat;
-
/**
* @author Doug Schaefer
*/
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/db/Database.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/db/Database.java
index c3ff517248e..f138c44c9da 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/db/Database.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/db/Database.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2005, 2015 QNX Software Systems and others.
+ * Copyright (c) 2005, 2020 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -14,6 +14,7 @@
* Markus Schorn (Wind River Systems)
* IBM Corporation
* Sergey Prigogin (Google)
+ * Alexander Fedorov (ArSysOp) - Bug 561992
*******************************************************************************/
package org.eclipse.cdt.internal.core.pdom.db;
@@ -28,6 +29,7 @@ import java.nio.ByteBuffer;
import java.nio.channels.ClosedByInterruptException;
import java.nio.channels.ClosedChannelException;
import java.nio.channels.FileChannel;
+import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@@ -38,8 +40,6 @@ import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.osgi.util.NLS;
-import com.ibm.icu.text.MessageFormat;
-
/**
* Database encapsulates access to a flat binary format file with a memory-manager-like API for
* obtaining and releasing areas of storage (memory).
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMASTAdapter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMASTAdapter.java
index 18162597b25..97a7ed6f697 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMASTAdapter.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMASTAdapter.java
@@ -578,6 +578,11 @@ public class PDOMASTAdapter {
public ICPPScope asScope() {
return ((ICPPEnumeration) fDelegate).asScope();
}
+
+ @Override
+ public boolean isNoDiscard() {
+ return ((ICPPEnumeration) fDelegate).isNoDiscard();
+ }
}
private static class AnonymousClassType extends AnonymousCPPBinding implements ICPPClassType {
@@ -669,6 +674,11 @@ public class PDOMASTAdapter {
public int getVisibility(IBinding member) {
return ((ICPPClassType) fDelegate).getVisibility(member);
}
+
+ @Override
+ public boolean isNoDiscard() {
+ return ((ICPPClassType) fDelegate).isNoDiscard();
+ }
}
private static class AnonymousClassSpecialization extends AnonymousClassType implements ICPPClassSpecialization {
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMLinkage.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMLinkage.java
index 170f025f470..42615e71cc4 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMLinkage.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMLinkage.java
@@ -87,7 +87,7 @@ public abstract class PDOMLinkage extends PDOMNamedNode implements IIndexLinkage
* The set of types currently being loaded from the index on each thread, represented as record numbers.
* This is used to guard against infinite recursion while loading types.
*/
- private static final ThreadLocal<Set<Long>> fLoadTypeInProgress = new ThreadLocal<Set<Long>>() {
+ private static final ThreadLocal<Set<Long>> fLoadTypeInProgress = new ThreadLocal<>() {
@Override
protected Set<Long> initialValue() {
return new HashSet<>();
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMMacro.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMMacro.java
index fcae57b3e1d..e029f880780 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMMacro.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMMacro.java
@@ -373,10 +373,9 @@ public class PDOMMacro implements IIndexMacro, IPDOMBinding {
}
@Override
- @SuppressWarnings({ "unchecked", "rawtypes" })
- public Object getAdapter(Class adapter) {
+ public <T> T getAdapter(Class<T> adapter) {
if (adapter.isAssignableFrom(PDOMMacro.class)) {
- return this;
+ return adapter.cast(this);
}
return null;
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMMacroContainer.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMMacroContainer.java
index 266079a3009..817de429e5f 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMMacroContainer.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMMacroContainer.java
@@ -171,10 +171,9 @@ public class PDOMMacroContainer extends PDOMNamedNode implements IIndexMacroCont
}
@Override
- @SuppressWarnings({ "unchecked", "rawtypes" })
- public Object getAdapter(Class adapter) {
+ public <T> T getAdapter(Class<T> adapter) {
if (adapter.isAssignableFrom(PDOMMacroContainer.class)) {
- return this;
+ return adapter.cast(this);
}
return null;
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMName.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMName.java
index 9f73005f040..f8ac35b883f 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMName.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMName.java
@@ -56,6 +56,7 @@ public final class PDOMName implements IIndexFragmentName {
public static final int IS_FRIEND_SPEC = 0x08;
public static final int IS_INLINE_NAMESPACE = 0x0C;
public static final int COULD_BE_POLYMORPHIC_METHOD_CALL = 0x10;
+ //TODO We haven't got any flag for "unknown" access, we should add it to the index
public static final int READ_ACCESS = 0x20;
public static final int WRITE_ACCESS = 0x40;
// Whether this name is a potential match for its binding, rather than an exact match.
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCAnnotations.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCAnnotations.java
index e842e2aeb81..64da027c55a 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCAnnotations.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCAnnotations.java
@@ -32,6 +32,9 @@ class PDOMCAnnotations {
private static final int NO_RETURN_OFFSET = 4;
private static final int REGISTER_OFFSET = 5;
private static final int AUTO_OFFSET = 6;
+ private static final int NO_DISCARD_OFFSET = 7;
+ //NOTE: we are writing these annotations on a "byte" so if we need
+ //to add another value we need to use at least a short.
/**
* Encodes annotations applicable to functions.
@@ -55,6 +58,8 @@ class PDOMCAnnotations {
annotation |= 1 << REGISTER_OFFSET;
if (function.isAuto())
annotation |= 1 << AUTO_OFFSET;
+ if (function.isNoDiscard())
+ annotation |= 1 << NO_DISCARD_OFFSET;
return annotation;
}
@@ -115,6 +120,13 @@ class PDOMCAnnotations {
}
/**
+ * Checks if the "no discard" annotation is set.
+ */
+ public static boolean isNoDiscardFunction(short annotation) {
+ return (annotation & (1 << NO_DISCARD_OFFSET)) != 0;
+ }
+
+ /**
* Checks if the "register" annotation is set.
*/
public static boolean isRegister(byte annotation) {
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCFunction.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCFunction.java
index 5230308ea5f..07ddfcffbda 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCFunction.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCFunction.java
@@ -208,4 +208,9 @@ class PDOMCFunction extends PDOMBinding implements IFunction {
public IScope getFunctionScope() {
return null;
}
+
+ @Override
+ public boolean isNoDiscard() {
+ return PDOMCAnnotations.isNoDiscardFunction(getAnnotations());
+ }
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCVariable.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCVariable.java
index bfe51cec7a5..26cdd781a7a 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCVariable.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCVariable.java
@@ -15,6 +15,8 @@
*******************************************************************************/
package org.eclipse.cdt.internal.core.pdom.dom.c;
+import java.util.Optional;
+
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.dom.ast.IASTName;
import org.eclipse.cdt.core.dom.ast.IBinding;
@@ -138,7 +140,11 @@ class PDOMCVariable extends PDOMBinding implements IVariable {
@Override
public int getAdditionalNameFlags(int standardFlags, IASTName name) {
if ((standardFlags & PDOMName.IS_REFERENCE) == PDOMName.IS_REFERENCE) {
- return CVariableReadWriteFlags.getReadWriteFlags(name);
+ Optional<Integer> res = CVariableReadWriteFlags.getReadWriteFlags(name);
+ if (!res.isPresent()) {
+ return PDOMName.WRITE_ACCESS | PDOMName.READ_ACCESS;
+ }
+ return res.get();
}
return 0;
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPAnnotations.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPAnnotations.java
index c7c020c36b5..709f9bc84be 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPAnnotations.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPAnnotations.java
@@ -45,6 +45,7 @@ class PDOMCPPAnnotations {
private static final int PARAMETER_PACK_OFFSET = 7;
private static final int DELETED_OFFSET = 8;
private static final int NO_RETURN_OFFSET = 9;
+ private static final int NO_DISCARD_OFFSET = 10;
// Method annotations that don't fit on the first 16 bits of annotations.
private static final int VIRTUAL_OFFSET = 0;
@@ -82,6 +83,8 @@ class PDOMCPPAnnotations {
annotation |= 1 << PARAMETER_PACK_OFFSET;
if (function.isDeleted())
annotation |= 1 << DELETED_OFFSET;
+ if (function.isNoDiscard())
+ annotation |= 1 << NO_DISCARD_OFFSET;
return annotation;
}
@@ -227,6 +230,13 @@ class PDOMCPPAnnotations {
}
/**
+ * Checks if the "no discard" annotation is set.
+ */
+ public static boolean isNoDiscardFunction(short annotation) {
+ return (annotation & (1 << NO_DISCARD_OFFSET)) != 0;
+ }
+
+ /**
* Checks if the "virtual" annotation is set.
*/
public static boolean isVirtualMethod(byte annotation) {
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassSpecialization.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassSpecialization.java
index a1161ad8cae..9e9364d6c56 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassSpecialization.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassSpecialization.java
@@ -72,10 +72,11 @@ class PDOMCPPClassSpecialization extends PDOMCPPSpecialization
private static final byte FLAGS_FINAL = 0x01;
private static final byte FLAGS_HAS_OWN_SCOPE = 0x02;
+ private static final byte FLAGS_NODISCARD = 0x03;
private volatile ICPPClassScope fScope;
private ObjectMap specializationMap; // Obtained from the synchronized PDOM cache.
- private final ThreadLocal<Set<IBinding>> fInProgress = new ThreadLocal<Set<IBinding>>() {
+ private final ThreadLocal<Set<IBinding>> fInProgress = new ThreadLocal<>() {
@Override
protected Set<IBinding> initialValue() {
return new HashSet<>();
@@ -508,6 +509,16 @@ class PDOMCPPClassSpecialization extends PDOMCPPSpecialization
}
}
+ @Override
+ public boolean isNoDiscard() {
+ try {
+ return (getFlags() & FLAGS_NODISCARD) != 0;
+ } catch (CoreException e) {
+ CCorePlugin.log(e);
+ return false;
+ }
+ }
+
private boolean hasOwnScope() throws CoreException {
return (getFlags() & FLAGS_HAS_OWN_SCOPE) != 0;
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassType.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassType.java
index 1f2e920a8ff..2d5447c2c4e 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassType.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassType.java
@@ -60,8 +60,9 @@ class PDOMCPPClassType extends PDOMCPPBinding implements IPDOMCPPClassType, IPDO
private static final int ANONYMOUS = KEY + 1; // byte
private static final int FINAL = ANONYMOUS + 1; // byte
private static final int VISIBLE_TO_ADL_ONLY = FINAL + 1; // byte
+ private static final int NO_DISCARD = VISIBLE_TO_ADL_ONLY + 1; // byte
@SuppressWarnings("hiding")
- protected static final int RECORD_SIZE = VISIBLE_TO_ADL_ONLY + 1;
+ protected static final int RECORD_SIZE = NO_DISCARD + 1;
private PDOMCPPClassScope fScope; // No need for volatile, all fields of PDOMCPPClassScope are final.
@@ -73,6 +74,7 @@ class PDOMCPPClassType extends PDOMCPPBinding implements IPDOMCPPClassType, IPDO
setAnonymous(classType);
setFinal(classType);
setVisibleToAdlOnly(visibleToAdlOnly);
+ setNoDiscard(classType);
// Linked list is initialized by storage being zero'd by malloc.
}
@@ -97,6 +99,7 @@ class PDOMCPPClassType extends PDOMCPPBinding implements IPDOMCPPClassType, IPDO
setKind(ct);
setAnonymous(ct);
setFinal(ct);
+ setNoDiscard(ct);
super.update(linkage, newBinding);
}
}
@@ -113,6 +116,10 @@ class PDOMCPPClassType extends PDOMCPPBinding implements IPDOMCPPClassType, IPDO
getDB().putByte(record + FINAL, (byte) (ct.isFinal() ? 1 : 0));
}
+ private void setNoDiscard(ICPPClassType ct) throws CoreException {
+ getDB().putByte(record + NO_DISCARD, (byte) (ct.isNoDiscard() ? 1 : 0));
+ }
+
@Override
public void setVisibleToAdlOnly(boolean visibleToAdlOnly) throws CoreException {
getDB().putByte(record + VISIBLE_TO_ADL_ONLY, (byte) (visibleToAdlOnly ? 1 : 0));
@@ -280,6 +287,16 @@ class PDOMCPPClassType extends PDOMCPPBinding implements IPDOMCPPClassType, IPDO
}
@Override
+ public boolean isNoDiscard() {
+ try {
+ return getDB().getByte(record + NO_DISCARD) != 0;
+ } catch (CoreException e) {
+ CCorePlugin.log(e);
+ return false;
+ }
+ }
+
+ @Override
public boolean isVisibleToAdlOnly() {
try {
return getDB().getByte(record + VISIBLE_TO_ADL_ONLY) != 0;
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPEnumeration.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPEnumeration.java
index dc59848d72c..2319f9c6110 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPEnumeration.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPEnumeration.java
@@ -51,6 +51,9 @@ class PDOMCPPEnumeration extends PDOMCPPBinding implements IPDOMCPPEnumType, IPD
private static final int OFFSET_FIXED_TYPE = OFFSET_MAX_VALUE + 8;
private static final int OFFSET_FLAGS = OFFSET_FIXED_TYPE + Database.TYPE_SIZE;
+ private static final byte FLAG_SCOPED = 0x1;
+ private static final byte FLAG_NODISCARD = 0x2;
+
@SuppressWarnings("hiding")
protected static final int RECORD_SIZE = OFFSET_FLAGS + 1;
@@ -75,7 +78,15 @@ class PDOMCPPEnumeration extends PDOMCPPBinding implements IPDOMCPPEnumType, IPD
private void storeProperties(ICPPEnumeration enumeration) throws CoreException {
final Database db = getDB();
- db.putByte(record + OFFSET_FLAGS, enumeration.isScoped() ? (byte) 1 : (byte) 0);
+ byte flags = 0;
+ if (enumeration.isScoped()) {
+ flags |= FLAG_SCOPED;
+ }
+ if (enumeration.isNoDiscard()) {
+ flags |= FLAG_NODISCARD;
+ }
+
+ db.putByte(record + OFFSET_FLAGS, flags);
getLinkage().storeType(record + OFFSET_FIXED_TYPE, enumeration.getFixedType());
@@ -188,7 +199,18 @@ class PDOMCPPEnumeration extends PDOMCPPBinding implements IPDOMCPPEnumType, IPD
@Override
public boolean isScoped() {
try {
- return getDB().getByte(record + OFFSET_FLAGS) != 0;
+ byte flags = getDB().getByte(record + OFFSET_FLAGS);
+ return (flags & FLAG_SCOPED) != 0;
+ } catch (CoreException e) {
+ return false;
+ }
+ }
+
+ @Override
+ public boolean isNoDiscard() {
+ try {
+ byte flags = getDB().getByte(record + OFFSET_FLAGS);
+ return (flags & FLAG_NODISCARD) != 0;
} catch (CoreException e) {
return false;
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPEnumerationSpecialization.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPEnumerationSpecialization.java
index 3bda300c388..2208f786de3 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPEnumerationSpecialization.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPEnumerationSpecialization.java
@@ -51,7 +51,8 @@ class PDOMCPPEnumerationSpecialization extends PDOMCPPSpecialization
private static final int OFFSET_MIN_VALUE = OFFSET_ENUMERATOR_LIST + Database.PTR_SIZE;
private static final int OFFSET_MAX_VALUE = OFFSET_MIN_VALUE + 8;
private static final int OFFSET_FIXED_TYPE = OFFSET_MAX_VALUE + 8;
- private static final int OFFSET_FLAGS = OFFSET_FIXED_TYPE + Database.TYPE_SIZE;
+ private static final int OFFSET_NO_DISCARD = OFFSET_FIXED_TYPE + 8;
+ private static final int OFFSET_FLAGS = OFFSET_NO_DISCARD + Database.TYPE_SIZE;
@SuppressWarnings("hiding")
protected static final int RECORD_SIZE = OFFSET_FLAGS + 1;
@@ -84,6 +85,7 @@ class PDOMCPPEnumerationSpecialization extends PDOMCPPSpecialization
private void storeProperties(ICPPEnumeration enumeration) throws CoreException {
final Database db = getDB();
db.putByte(record + OFFSET_FLAGS, enumeration.isScoped() ? (byte) 1 : (byte) 0);
+ db.putByte(record + OFFSET_NO_DISCARD, enumeration.isNoDiscard() ? (byte) 1 : (byte) 0);
getLinkage().storeType(record + OFFSET_FIXED_TYPE, enumeration.getFixedType());
@@ -203,6 +205,15 @@ class PDOMCPPEnumerationSpecialization extends PDOMCPPSpecialization
}
@Override
+ public boolean isNoDiscard() {
+ try {
+ return getDB().getByte(record + OFFSET_NO_DISCARD) != 0;
+ } catch (CoreException e) {
+ return false;
+ }
+ }
+
+ @Override
public IType getFixedType() {
if (fFixedType == ProblemBinding.NOT_INITIALIZED) {
fFixedType = loadFixedType();
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunction.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunction.java
index 6797e525149..01e8334a218 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunction.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunction.java
@@ -449,4 +449,9 @@ class PDOMCPPFunction extends PDOMCPPBinding implements ICPPFunction, IPDOMOverl
return null;
}
}
+
+ @Override
+ public boolean isNoDiscard() {
+ return PDOMCPPAnnotations.isNoDiscardFunction(getAnnotations());
+ }
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunctionSpecialization.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunctionSpecialization.java
index 9b047058a57..6f62bec830b 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunctionSpecialization.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunctionSpecialization.java
@@ -342,4 +342,9 @@ class PDOMCPPFunctionSpecialization extends PDOMCPPSpecialization
return null;
}
}
+
+ @Override
+ public boolean isNoDiscard() {
+ return PDOMCPPAnnotations.isNoDiscardFunction(getAnnotations());
+ }
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPLinkage.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPLinkage.java
index 05b9367d2f2..991f3ef73eb 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPLinkage.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPLinkage.java
@@ -143,6 +143,7 @@ import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.EvalTypeId;
import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.EvalUnary;
import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.EvalUnaryTypeID;
import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.ExecBreak;
+import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.ExecBuiltin;
import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.ExecCase;
import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.ExecCompoundStatement;
import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.ExecConstructorChain;
@@ -1270,8 +1271,8 @@ class PDOMCPPLinkage extends PDOMLinkage implements IIndexCPPBindingConstants {
if (owner instanceof IFunction) {
boolean isTemplateParameter = binding instanceof ICPPTemplateParameter;
boolean ownerIsConstexprFunc = owner instanceof ICPPFunction && ((ICPPFunction) owner).isConstexpr();
- boolean isVariableOrTypedef = binding instanceof ICPPVariable || binding instanceof ITypedef;
- if (!isTemplateParameter && !(ownerIsConstexprFunc && isVariableOrTypedef)) {
+ boolean isVariableOrType = binding instanceof ICPPVariable || binding instanceof IType;
+ if (!isTemplateParameter && !(ownerIsConstexprFunc && isVariableOrType)) {
return null;
}
}
@@ -1771,6 +1772,8 @@ class PDOMCPPLinkage extends PDOMLinkage implements IIndexCPPBindingConstants {
return ExecConstructorChain.unmarshal(firstBytes, buffer);
case ITypeMarshalBuffer.EXEC_INCOMPLETE:
return ExecIncomplete.unmarshal(firstBytes, buffer);
+ case ITypeMarshalBuffer.EXEC_BUILTIN:
+ return ExecBuiltin.unmarshal(firstBytes, buffer);
}
throw new CoreException(CCorePlugin.createStatus("Cannot unmarshal an execution, first bytes=" + firstBytes)); //$NON-NLS-1$
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTemplateTemplateParameter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTemplateTemplateParameter.java
index b33a90157cc..5c8e1a76715 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTemplateTemplateParameter.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTemplateTemplateParameter.java
@@ -350,6 +350,11 @@ public class PDOMCPPTemplateTemplateParameter extends PDOMCPPBinding implements
}
@Override
+ public boolean isNoDiscard() {
+ return false;
+ }
+
+ @Override
public ICPPTemplateParameter adaptTemplateParameter(ICPPTemplateParameter param) {
int pos = param.getParameterPosition();
ICPPTemplateParameter[] pars = getTemplateParameters();
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPVariable.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPVariable.java
index 6f02c5b78ee..af083b4f944 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPVariable.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPVariable.java
@@ -15,6 +15,8 @@
*******************************************************************************/
package org.eclipse.cdt.internal.core.pdom.dom.cpp;
+import java.util.Optional;
+
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.dom.ast.IASTName;
import org.eclipse.cdt.core.dom.ast.IBinding;
@@ -162,7 +164,11 @@ class PDOMCPPVariable extends PDOMCPPBinding implements ICPPVariable {
@Override
public int getAdditionalNameFlags(int standardFlags, IASTName name) {
if ((standardFlags & PDOMName.IS_REFERENCE) == PDOMName.IS_REFERENCE) {
- return CPPVariableReadWriteFlags.getReadWriteFlags(name);
+ Optional<Integer> res = CPPVariableReadWriteFlags.getReadWriteFlags(name);
+ if (!res.isPresent()) {
+ return PDOMName.READ_ACCESS | PDOMName.WRITE_ACCESS;
+ }
+ return res.get();
}
return 0;
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/export/CLIUtil.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/export/CLIUtil.java
index fb4e8167288..4f5f30acc3b 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/export/CLIUtil.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/export/CLIUtil.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2009 Symbian Software Systems and others.
+ * Copyright (c) 2007, 2020 Symbian Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -9,10 +9,12 @@
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
- * Andrew Ferguson (Symbian) - Initial implementation
+ * Andrew Ferguson (Symbian) - Initial implementation
+ * Alexander Fedorov (ArSysOp) - Bug 561992
*******************************************************************************/
package org.eclipse.cdt.internal.core.pdom.export;
+import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -21,8 +23,6 @@ import java.util.Map;
import org.eclipse.cdt.core.index.export.Messages;
import org.eclipse.core.runtime.CoreException;
-import com.ibm.icu.text.MessageFormat;
-
/**
* Helper methods for command-line options
* <br>
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/export/GeneratePDOM.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/export/GeneratePDOM.java
index 37cd352c6eb..fb4b4a8aa5f 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/export/GeneratePDOM.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/export/GeneratePDOM.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2014 Symbian Software Systems and others.
+ * Copyright (c) 2007, 2020 Symbian Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -12,10 +12,12 @@
* Andrew Ferguson (Symbian) - Initial implementation
* Markus Schorn (Wind River Systems)
* Martin Oberhuber (Wind River) - [397652] fix up-to-date check for PDOM
+ * Alexander Fedorov (ArSysOp) - Bug 561992
*******************************************************************************/
package org.eclipse.cdt.internal.core.pdom.export;
import java.io.File;
+import java.text.MessageFormat;
import java.util.Map;
import org.eclipse.cdt.core.CCorePlugin;
@@ -33,8 +35,6 @@ import org.eclipse.core.runtime.MultiStatus;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Status;
-import com.ibm.icu.text.MessageFormat;
-
/**
* An ISafeRunnable which
* <ul>
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/export/GeneratePDOMApplication.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/export/GeneratePDOMApplication.java
index 91b1f2ab80d..a718f433551 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/export/GeneratePDOMApplication.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/export/GeneratePDOMApplication.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2012 Symbian Software Systems and others.
+ * Copyright (c) 2007, 2020 Symbian Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -9,13 +9,15 @@
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
- * Andrew Ferguson (Symbian) - Initial implementation
- * Anna Dushistova (MontaVista) - bug [247087]
+ * Andrew Ferguson (Symbian) - Initial implementation
+ * Anna Dushistova (MontaVista) - bug [247087]
+ * Alexander Fedorov (ArSysOp) - Bug 561992
*******************************************************************************/
package org.eclipse.cdt.internal.core.pdom.export;
import java.io.File;
import java.io.PrintStream;
+import java.text.MessageFormat;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -40,8 +42,6 @@ import org.eclipse.core.runtime.jobs.ProgressProvider;
import org.eclipse.equinox.app.IApplication;
import org.eclipse.equinox.app.IApplicationContext;
-import com.ibm.icu.text.MessageFormat;
-
/**
* An eclipse application for generating PDOM's without starting the Workbench
*/
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/PDOMIndexerTask.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/PDOMIndexerTask.java
index 5222cfcaa02..82f28ee5a09 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/PDOMIndexerTask.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/PDOMIndexerTask.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2006, 2016 Wind River Systems, Inc. and others.
+ * Copyright (c) 2006, 2020 Wind River Systems, Inc. and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -12,9 +12,11 @@
* Markus Schorn - initial API and implementation
* Sergey Prigogin (Google)
* Marc-Andre Laperle (Ericsson)
+ * Alexander Fedorov (ArSysOp) - Bug 561992
*******************************************************************************/
package org.eclipse.cdt.internal.core.pdom.indexer;
+import java.text.NumberFormat;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Collections;
@@ -47,8 +49,6 @@ import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.Status;
import org.eclipse.osgi.util.NLS;
-import com.ibm.icu.text.NumberFormat;
-
/**
* Configures the abstract indexer task suitable for indexing projects.
*/
diff --git a/core/org.eclipse.cdt.core/plugin.properties b/core/org.eclipse.cdt.core/plugin.properties
index 39cddf9c21b..8cf6be710bb 100755..100644
--- a/core/org.eclipse.cdt.core/plugin.properties
+++ b/core/org.eclipse.cdt.core/plugin.properties
@@ -57,6 +57,8 @@ CDTGNUCErrorParser.regex.ReportedOnlyOnce=(.*?):(\\d+):(\\d+:)? .*\\(Each undecl
CDTGNUCErrorParser.regex.ForEachFunctionItAppearsIn=(.*?):(\\d+):(\\d+:)? .*for each function it appears in.\\).*
CDTGNUCErrorParser.regex.ReportedOnlyOncePerInputFile=(.*?):(\\d+):(\\d+:)? .*this will be reported only once per input file.*
CDTGNUCErrorParser.regex.InstantiatedFromHere=(.*?):(\\d+):(\\d+:)?\\s*(.*((instantiated)|(required)) from .*)
+CDTGNUCErrorParser.regex.SkippingInstantiationContexts=(.*?):(\\d+):(\\d+:)?\\s*(\\[\\s*skipping \\d+ instantiation context.*)
+CDTGNUCErrorParser.regex.InConstexprExpansion=(.*?):(\\d+):(\\d+:)?\\s*(in 'constexpr' expansion of.*)
CDTGNUCErrorParser.regex.GenericInfo=(.*?):(\\d+):(\\d+:)?\\s*(([Nn]ote)|(NOTE)|([Ii]nfo)|(INFO)): (.*)
CDTGNUCErrorParser.regex.ParseErrorBefore=(.*?):(\\d+):(\\d+:)? (parse error before.*[`'"](.*)['"].*)
CDTGNUCErrorParser.regex.ErrorUndeclared=(.*?):(\\d+):(\\d+:)? [Ee]rror: ([`'"](.*)['"] undeclared .*)
@@ -68,10 +70,11 @@ CDTGNUCErrorParser.regex.GenericWarning=(.*?):(\\d+):(\\d+:)?\\s*(([Ww]arning)|(
CDTGNUCErrorParser.regex.OtherError=(.*?):(\\d+):(\\d+:)? (.*)
CDTGNULinkerErrorParser.name=GNU Linker Error Parser
-CDTGNULinkerErrorParser.regex.InFunction=(.*?):?(\\(\\.\\w+\\+.*\\))?:\\s*(In function [`'"](.*)['"]:)
+CDTGNULinkerErrorParser.regex.InFunction=(.*?):?(\\(\\.[^\\s+]+\\+.*\\))?:\\s*(In function [`'"](.*)['"]:)
CDTGNULinkerErrorParser.regex.WarningDangerousFunction=(.*?):(\\d+):(\\d+:)? ([Ww]arning:)?\\s*(the use of [`'"](.*)['"] is dangerous, better use [`'"](.*)['"].*)
-CDTGNULinkerErrorParser.regex.TextWarning=(.*?):?\\(\\.\\w+\\+.*\\): [Ww]arning:? (.*)
-CDTGNULinkerErrorParser.regex.TextError=(.*?):?\\(\\.\\w+\\+.*\\): (.*)
+CDTGNULinkerErrorParser.regex.TextWarning=(.*?):?\\(\\.[^\\s+]+\\+.*\\): [Ww]arning:? (.*)
+CDTGNULinkerErrorParser.regex.TextError=(.*?):?\\(\\.[^\\s+]+\\+.*\\): (.*)
+CDTGNULinkerErrorParser.regex.ldInfo=(.*[/\\\\])?ld(\\.exe)?: ((mode|Removing unused section) .*)
CDTGNULinkerErrorParser.regex.ldWarning=(.*[/\\\\])?ld(\\.exe)?: [Ww]arning:? (.*)
CDTGNULinkerErrorParser.regex.ldError=(.*[/\\\\])?ld(\\.exe)?: (.*)
diff --git a/core/org.eclipse.cdt.core/plugin.xml b/core/org.eclipse.cdt.core/plugin.xml
index 63f59d96ec8..8e1bcb7822c 100644
--- a/core/org.eclipse.cdt.core/plugin.xml
+++ b/core/org.eclipse.cdt.core/plugin.xml
@@ -194,6 +194,22 @@
<pattern description-expr="$5" eat-processed-line="true" file-expr="$1" line-expr="$2" regex="%CDTGNULinkerErrorParser.regex.WarningDangerousFunction" severity="Warning" variable-expr="$6"/>
<pattern description-expr="$4" eat-processed-line="true" file-expr="$1" line-expr="$2" regex="%CDTGNUCErrorParser.regex.InstantiatedFromHere" severity="Info"/>
<pattern
+ description-expr="$4"
+ eat-processed-line="true"
+ file-expr="$1"
+ line-expr="$2"
+ regex="%CDTGNUCErrorParser.regex.SkippingInstantiationContexts"
+ severity="Info">
+ </pattern>
+ <pattern
+ description-expr="$4"
+ eat-processed-line="true"
+ file-expr="$1"
+ line-expr="$2"
+ regex="%CDTGNUCErrorParser.regex.InConstexprExpansion"
+ severity="Info">
+ </pattern>
+ <pattern
description-expr="$7"
eat-processed-line="true"
file-expr="$1"
@@ -257,6 +273,13 @@
eat-processed-line="true"
file-expr=""
line-expr=""
+ regex="%CDTGNULinkerErrorParser.regex.ldInfo"
+ severity="Info"/>
+ <pattern
+ description-expr="$3"
+ eat-processed-line="true"
+ file-expr=""
+ line-expr=""
regex="%CDTGNULinkerErrorParser.regex.ldWarning"
severity="Warning"/>
<pattern
@@ -357,7 +380,7 @@
<!-- =================================================================================== -->
<extension
id="ccnature"
- name="%cnature.name"
+ name="%ccnature.name"
point="org.eclipse.core.resources.natures">
<runtime>
<run
diff --git a/core/org.eclipse.cdt.core/schema/templates.exsd b/core/org.eclipse.cdt.core/schema/templates.exsd
index 082ffd555ed..347820e49cc 100644
--- a/core/org.eclipse.cdt.core/schema/templates.exsd
+++ b/core/org.eclipse.cdt.core/schema/templates.exsd
@@ -102,7 +102,7 @@ It&apos;s no longer manditory since templates are no longer organized by project
<attribute name="filterPattern" type="string">
<annotation>
<documentation>
- filterPattern is a java.util.regex.Pattern format string which is used to match against build configuration ids. This is an optional attribute, if absent will all configurations will match.
+ filterPattern is a java.util.regex.Pattern format string which is used to match against language identifiers. This is an optional attribute, if absent all languages will match.
</documentation>
</annotation>
</attribute>
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/CCorePlugin.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/CCorePlugin.java
index a29d33f36f8..cdf0d2f204f 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/CCorePlugin.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/CCorePlugin.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2020 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -16,11 +16,13 @@
* oyvind.harboe@zylin.com - http://bugs.eclipse.org/250638
* Jens Elmenthaler - http://bugs.eclipse.org/173458 (camel case completion)
* Sergey Prigogin (Google)
+ * Alexander Fedorov (ArSysOp) - Bug 561992
*******************************************************************************/
package org.eclipse.cdt.core;
import java.io.IOException;
import java.net.URL;
+import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
@@ -101,8 +103,6 @@ import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceReference;
import org.osgi.framework.Version;
-import com.ibm.icu.text.MessageFormat;
-
/**
* CCorePlugin is the life-cycle owner of the core plug-in, and starting point
* for access to many core APIs.
@@ -1009,8 +1009,8 @@ public class CCorePlugin extends Plugin {
/**
* Method convertProjectFromCtoCC converts a C Project to a C++ Project The
- * newProject MUST, not be null, already have a C Nature && must NOT already
- * have a C++ Nature
+ * newProject MUST, not be null, already have a C Nature &amp;&amp; must
+ * NOT already have a C++ Nature
*
* @param projectHandle
* @param monitor
@@ -1455,7 +1455,7 @@ public class CCorePlugin extends Plugin {
* set call after that the description communicates directly to
* the Build System i.e. the implementer of the
* org.eclipse.cdt.core.CConfigurationDataProvider extension This
- * ensures the Core<->Build System settings integrity.
+ * ensures the Core&lt;-&gt;Build System settings integrity.
*
* @return {@link ICProjectDescription} or null if the project does not
* contain the CDT data associated with it.
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/CommandLauncher.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/CommandLauncher.java
index 3ab8915e477..ed4c45059d7 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/CommandLauncher.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/CommandLauncher.java
@@ -66,41 +66,26 @@ public class CommandLauncher implements ICommandLauncher {
fShowCommand = false;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.ICommandLauncher#showCommand(boolean)
- */
@Override
public void showCommand(boolean show) {
fShowCommand = show;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.ICommandLauncher#getErrorMessage()
- */
@Override
public String getErrorMessage() {
return fErrorMessage;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.ICommandLauncher#setErrorMessage(java.lang.String)
- */
@Override
public void setErrorMessage(String error) {
fErrorMessage = error;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.ICommandLauncher#getCommandArgs()
- */
@Override
public String[] getCommandArgs() {
return fCommandArgs;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.ICommandLauncher#getEnvironment()
- */
@Override
public Properties getEnvironment() {
if (fEnvironment == null) {
@@ -121,9 +106,6 @@ public class CommandLauncher implements ICommandLauncher {
return fEnvironment.getProperty(key);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.ICommandLauncher#getCommandLine()
- */
@Override
public String getCommandLine() {
return getCommandLine(getCommandArgs());
@@ -152,9 +134,6 @@ public class CommandLauncher implements ICommandLauncher {
if (pos < 0)
pos = envStr.length();
String key = envStr.substring(0, pos);
- if (Platform.getOS().equals(Platform.OS_WIN32)) {
- key = key.toUpperCase();
- }
String value = envStr.substring(pos + 1);
fEnvironment.put(key, value);
}
@@ -239,9 +218,6 @@ public class CommandLauncher implements ICommandLauncher {
return fProcess;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.ICommandLauncher#waitAndRead(java.io.OutputStream, java.io.OutputStream)
- */
@Override
@Deprecated
public int waitAndRead(OutputStream out, OutputStream err) {
@@ -258,9 +234,6 @@ public class CommandLauncher implements ICommandLauncher {
return OK;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.ICommandLauncher#waitAndRead(java.io.OutputStream, java.io.OutputStream, org.eclipse.core.runtime.IProgressMonitor)
- */
@Override
public int waitAndRead(OutputStream output, OutputStream err, IProgressMonitor monitor) {
if (fShowCommand) {
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/CommandLauncherManager.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/CommandLauncherManager.java
index ef4d8459987..538c7f3fe4d 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/CommandLauncherManager.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/CommandLauncherManager.java
@@ -334,6 +334,17 @@ public class CommandLauncherManager {
return includePaths;
}
+ /**
+ * @since 7.0
+ */
+ public boolean checkIfIncludesChanged(ICBuildConfiguration config) {
+ ICommandLauncherFactory factory = getBestFactory(config);
+ if (factory != null && factory instanceof ICommandLauncherFactory3) {
+ return ((ICommandLauncherFactory3) factory).checkIfIncludesChanged(config);
+ }
+ return false;
+ }
+
public void setLanguageSettingEntries(IProject project, List<? extends ICLanguageSettingEntry> entries) {
ICommandLauncherFactory factory = getBestFactory(project);
if (factory != null) {
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/IAddress.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/IAddress.java
index ef031946df6..a9247815c24 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/IAddress.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/IAddress.java
@@ -65,7 +65,7 @@ public interface IAddress extends Comparable<Object> {
/**
* Returns whether this address equals the given object.
*
- * @param obj the other object
+ * @param addr the other object
* @return <code>true</code> if the addresses are equivalent,
* and <code>false</code> if they are not
*/
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/ICDescriptor.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/ICDescriptor.java
index 7e162eea577..86a2f4217ba 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/ICDescriptor.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/ICDescriptor.java
@@ -45,8 +45,7 @@ public interface ICDescriptor {
* in the project
* @param extensionPointID String extensionPointID
* @return ICExtensionReference[] ICExtensionReference array
- * @deprecated
- * @use {@link ICConfigurationDescription#get(String)}
+ * @deprecated Use {@link ICConfigurationDescription#get(String)}
*/
@Deprecated
public ICExtensionReference[] get(String extensionPointID);
@@ -74,8 +73,7 @@ public interface ICDescriptor {
* @param id
* @return the create ICExtensionReference
* @throws CoreException
- * @deprecated
- * @use {@link ICConfigurationDescription#create(String, String)}
+ * @deprecated Use {@link ICConfigurationDescription#create(String, String)}
*/
@Deprecated
public ICExtensionReference create(String extensionPointID, String id) throws CoreException;
@@ -84,8 +82,7 @@ public interface ICDescriptor {
* Remove a given ICExtensionReference from the project description.
* @param extension
* @throws CoreException
- * @deprecated
- * @use {@link ICConfigurationDescription#remove(org.eclipse.cdt.core.settings.model.ICConfigExtensionReference)}
+ * @deprecated Use {@link ICConfigurationDescription#remove(org.eclipse.cdt.core.settings.model.ICConfigExtensionReference)}
*/
@Deprecated
public void remove(ICExtensionReference extension) throws CoreException;
@@ -95,8 +92,7 @@ public interface ICDescriptor {
* this descriptor
* @param extensionPoint
* @throws CoreException
- * @deprecated
- * @use {@link ICConfigurationDescription#remove(String)}
+ * @deprecated Use {@link ICConfigurationDescription#remove(String)}
*/
@Deprecated
public void remove(String extensionPoint) throws CoreException;
@@ -117,9 +113,8 @@ public interface ICDescriptor {
* @param id an identifier that uniquely identifies the client
* @return a non-null {@link Element} to which client specific meta-data may be attached
* @throws CoreException
- * @deprecated
+ * @deprecated Use {@link ICDescriptor#getProjectStorageElement(String)}
* @noreference This method is not intended to be referenced by clients.
- * @use {@link ICDescriptor#getProjectStorageElement(String)}
*/
@Deprecated
public Element getProjectData(String id) throws CoreException;
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/ICDescriptorManager.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/ICDescriptorManager.java
index 6f5a9a52f6b..2922dbf2338 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/ICDescriptorManager.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/ICDescriptorManager.java
@@ -21,7 +21,7 @@ import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
/**
- * @deprecated replace with {@link ICProjectDescriptionManager} & {@link ICProjectDescription}
+ * @deprecated replace with {@link ICProjectDescriptionManager} &amp; {@link ICProjectDescription}
* @noreference This interface is not intended to be referenced by clients.
*/
@Deprecated
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/ICExtensionReference.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/ICExtensionReference.java
index 9e46f73feea..15f9b5c2cff 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/ICExtensionReference.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/ICExtensionReference.java
@@ -98,8 +98,8 @@ public interface ICExtensionReference {
*
* <pre>
* &lt;view&gt;
- * &nbsp&nbsp&nbsp&nbsp&lt;verticalHint&gt;top&lt;/verticalHint&gt;
- * &nbsp&nbsp&nbsp&nbsp&lt;horizontalHint&gt;left&lt;/horizontalHint&gt;
+ * &nbsp;&nbsp;&nbsp;&nbsp;&lt;verticalHint&gt;top&lt;/verticalHint&gt;
+ * &nbsp;&nbsp;&nbsp;&nbsp;&lt;horizontalHint&gt;left&lt;/horizontalHint&gt;
* &lt;/view&gt;
* </pre>
*
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/ICommandLauncherFactory3.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/ICommandLauncherFactory3.java
new file mode 100644
index 00000000000..692494ada97
--- /dev/null
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/ICommandLauncherFactory3.java
@@ -0,0 +1,33 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Red Hat Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Red Hat Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core;
+
+import org.eclipse.cdt.core.build.ICBuildConfiguration;
+
+/**
+ * @since 7.0
+ *
+ */
+public interface ICommandLauncherFactory3 {
+
+ /**
+ * Check if any copied header files have changed. This applies when using
+ * Flatpak which needs to copy the host's header files to the workspace.
+ *
+ * @param cfg - C Build configuration to check for
+ * @return true if headers have been removed/changed since last copy, false otherwise
+ */
+ public boolean checkIfIncludesChanged(ICBuildConfiguration cfg);
+
+}
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/ISourceFinder.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/ISourceFinder.java
index b2f6a296e98..41659fa11ac 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/ISourceFinder.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/ISourceFinder.java
@@ -30,8 +30,8 @@ import org.eclipse.core.runtime.IAdaptable;
* <p>
* CDT has:
* <ul>
- * <li>A global (common) source locator. Its containers are defined via Window > Preferences > C/C++ > Debug >
- * Source Lookup Path
+ * <li>A global (common) source locator. Its containers are defined via Window &gt; Preferences &gt;
+ * C/C++ &gt; Debug &gt; Source Lookup Path
* <li>Launch configuration source locators. The containers of such a locator are defined via the 'Source' tab
* in a CDT launch configuration. The common source containers are automatically added to this locator.
* <li>Launch source locators. Typically, a launch's locator is the one defined in the launch configuration
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/build/CBuildConfiguration.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/build/CBuildConfiguration.java
index 00635d77df6..039e1a4518b 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/build/CBuildConfiguration.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/build/CBuildConfiguration.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2015, 2019 QNX Software Systems and others.
+ * Copyright (c) 2015, 2022 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -10,16 +10,10 @@
*******************************************************************************/
package org.eclipse.cdt.core.build;
-import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.io.PrintStream;
-import java.lang.reflect.Type;
import java.net.URI;
import java.nio.file.Files;
import java.nio.file.InvalidPathException;
@@ -28,14 +22,17 @@ import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
-import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
+import java.util.Properties;
import java.util.Set;
+import java.util.stream.Collectors;
import org.eclipse.cdt.core.CCorePlugin;
+import org.eclipse.cdt.core.CommandLauncherManager;
+import org.eclipse.cdt.core.ICommandLauncher;
import org.eclipse.cdt.core.IConsoleParser;
import org.eclipse.cdt.core.IConsoleParser2;
import org.eclipse.cdt.core.IMarkerGenerator;
@@ -59,13 +56,16 @@ import org.eclipse.cdt.core.parser.ExtendedScannerInfo;
import org.eclipse.cdt.core.parser.IExtendedScannerInfo;
import org.eclipse.cdt.core.parser.IScannerInfo;
import org.eclipse.cdt.core.parser.IScannerInfoChangeListener;
-import org.eclipse.cdt.core.parser.IncludeExportPatterns;
import org.eclipse.cdt.core.resources.IConsole;
+import org.eclipse.cdt.internal.core.BuildRunnerHelper;
+import org.eclipse.cdt.internal.core.ConsoleOutputSniffer;
import org.eclipse.cdt.internal.core.build.Messages;
import org.eclipse.cdt.internal.core.model.BinaryRunner;
import org.eclipse.cdt.internal.core.model.CModelManager;
-import org.eclipse.cdt.internal.core.parser.ParserSettings2;
+import org.eclipse.cdt.internal.core.scannerinfo.ExtendedScannerInfoSerializer;
+import org.eclipse.cdt.internal.core.scannerinfo.IExtendedScannerInfoDeserializer;
import org.eclipse.cdt.utils.CommandLineUtil;
+import org.eclipse.cdt.utils.spawner.EnvironmentReader;
import org.eclipse.core.filesystem.URIUtil;
import org.eclipse.core.resources.IBuildConfiguration;
import org.eclipse.core.resources.IContainer;
@@ -89,12 +89,6 @@ import org.osgi.service.prefs.Preferences;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
-import com.google.gson.JsonArray;
-import com.google.gson.JsonDeserializationContext;
-import com.google.gson.JsonDeserializer;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonObject;
-import com.google.gson.JsonParseException;
/**
* Root class for CDT build configurations. Provides access to the build
@@ -121,6 +115,8 @@ public abstract class CBuildConfiguration extends PlatformObject implements ICBu
private final Map<IResource, List<IScannerInfoChangeListener>> scannerInfoListeners = new HashMap<>();
private ScannerInfoCache scannerInfoCache;
+ private ICommandLauncher launcher;
+
protected CBuildConfiguration(IBuildConfiguration config, String name) throws CoreException {
this.config = config;
this.name = name;
@@ -434,21 +430,23 @@ public abstract class CBuildConfiguration extends PlatformObject implements ICBu
if (cmdPath.isAbsolute()) {
return cmdPath;
}
+ Properties environmentVariables = EnvironmentReader.getEnvVars();
+ Map<String, String> env = new HashMap<>();
+ for (String key : environmentVariables.stringPropertyNames()) {
+ String value = environmentVariables.getProperty(key);
+ env.put(key, value);
+ }
- Map<String, String> env = new HashMap<>(System.getenv());
setBuildEnvironment(env);
String pathStr = env.get("PATH"); //$NON-NLS-1$
if (pathStr == null) {
- pathStr = env.get("Path"); // for Windows //$NON-NLS-1$
- if (pathStr == null) {
- return null; // no idea
- }
+ return null; // no idea
}
String[] path = pathStr.split(File.pathSeparator);
for (String dir : path) {
Path commandPath = Paths.get(dir, command);
- if (Files.exists(commandPath)) {
+ if (Files.exists(commandPath) && Files.isRegularFile(commandPath)) {
return commandPath;
} else {
if (Platform.getOS().equals(Platform.OS_WIN32)
@@ -491,20 +489,38 @@ public abstract class CBuildConfiguration extends PlatformObject implements ICBu
.write(String.format(Messages.CBuildConfiguration_CommandNotFound, commands.get(0)));
return null;
}
- commands.set(0, commandPath.toString());
+ IPath cmd = new org.eclipse.core.runtime.Path(commandPath.toString());
+ List<String> args = commands.subList(1, commands.size());
+
+ // check if includes have been removed/refreshed and scanner info refresh is needed
+ boolean needRefresh = CommandLauncherManager.getInstance().checkIfIncludesChanged(this);
+ IToolChain t = getToolChain();
+ if (t != null) {
+ t.setProperty(NEED_REFRESH, Boolean.valueOf(needRefresh).toString());
+ }
- ProcessBuilder processBuilder = new ProcessBuilder(commands).directory(buildDirectory.toFile());
- // Override environment variables
- Map<String, String> environment = processBuilder.environment();
+ // Generate environment block before launching process
+ launcher = CommandLauncherManager.getInstance().getCommandLauncher(this);
+ Properties envProps = launcher.getEnvironment();
+ HashMap<String, String> environment = envProps.entrySet().stream()
+ .collect(Collectors.toMap(e -> String.valueOf(e.getKey()), e -> String.valueOf(e.getValue()),
+ (prev, next) -> next, HashMap::new));
for (IEnvironmentVariable envVar : envVars) {
environment.put(envVar.getName(), envVar.getValue());
}
setBuildEnvironment(environment);
- process = processBuilder.start();
+ launcher.setProject(getProject());
+ process = launcher.execute(cmd, args.toArray(new String[0]), BuildRunnerHelper.envMapToEnvp(environment),
+ buildDirectory, monitor);
}
return process;
}
+ /**
+ * @return The exit code of the build process.
+ *
+ * @deprecated use {@link #watchProcess(IConsole, IProgressMonitor)} or {@link #watchProcess(IConsoleParser[], IProgressMonitor)} instead
+ */
@Deprecated
protected int watchProcess(Process process, IConsoleParser[] consoleParsers, IConsole console)
throws CoreException {
@@ -516,110 +532,42 @@ public abstract class CBuildConfiguration extends PlatformObject implements ICBu
}
/**
+ * @return The exit code of the build process.
* @since 6.4
+ *
+ * @deprecated use {@link #watchProcess(IConsole, IProgressMonitor)} instead and pass in a monitor
*/
+ @Deprecated
protected int watchProcess(Process process, IConsole console) throws CoreException {
- Thread t1 = new ReaderThread(process.getInputStream(), console.getOutputStream());
- t1.start();
- Thread t2 = new ReaderThread(process.getErrorStream(), console.getErrorStream());
- t2.start();
- try {
- int rc = process.waitFor();
- // Allow reader threads the chance to process all output to console
- while (t1.isAlive()) {
- Thread.sleep(100);
- }
- while (t2.isAlive()) {
- Thread.sleep(100);
- }
- return rc;
- } catch (InterruptedException e) {
- CCorePlugin.log(e);
- return -1;
- }
+ return watchProcess(console, new NullProgressMonitor());
}
/**
+ * @return The exit code of the build process.
+ * @since 7.5
+ */
+ protected int watchProcess(IConsole console, IProgressMonitor monitor) throws CoreException {
+ return launcher.waitAndRead(console.getInfoStream(), console.getErrorStream(), monitor);
+ }
+
+ /**
+ * @return The exit code of the build process.
* @since 6.4
+ *
+ * @deprecated use {@link #watchProcess(IConsoleParser[], IProgressMonitor)} instead and pass in a monitor
*/
+ @Deprecated
protected int watchProcess(Process process, IConsoleParser[] consoleParsers) throws CoreException {
- Thread t1 = new ReaderThread(this, process.getInputStream(), consoleParsers);
- t1.start();
- Thread t2 = new ReaderThread(this, process.getErrorStream(), consoleParsers);
- t2.start();
- try {
- int rc = process.waitFor();
- // Allow reader threads the chance to process all output to console
- while (t1.isAlive()) {
- Thread.sleep(100);
- }
- while (t2.isAlive()) {
- Thread.sleep(100);
- }
- return rc;
- } catch (InterruptedException e) {
- CCorePlugin.log(e);
- return -1;
- }
+ return watchProcess(consoleParsers, new NullProgressMonitor());
}
- private static class ReaderThread extends Thread {
- CBuildConfiguration config;
- private final BufferedReader in;
- private final IConsoleParser[] consoleParsers;
- private final PrintStream out;
-
- public ReaderThread(CBuildConfiguration config, InputStream in, IConsoleParser[] consoleParsers) {
- this.config = config;
- this.in = new BufferedReader(new InputStreamReader(in));
- this.out = null;
- this.consoleParsers = consoleParsers;
- }
-
- public ReaderThread(InputStream in, OutputStream out) {
- this.in = new BufferedReader(new InputStreamReader(in));
- this.out = new PrintStream(out);
- this.consoleParsers = null;
- this.config = null;
- }
-
- @Override
- public void run() {
- List<Job> jobList = new ArrayList<>();
- try {
- for (String line = in.readLine(); line != null; line = in.readLine()) {
- if (consoleParsers != null) {
- for (IConsoleParser consoleParser : consoleParsers) {
- // Synchronize to avoid interleaving of lines
- synchronized (consoleParser) {
- // if we have an IConsoleParser2, use the processLine method that
- // takes a job list (Container Build support)
- if (consoleParser instanceof IConsoleParser2) {
- ((IConsoleParser2) consoleParser).processLine(line, jobList);
- } else {
- consoleParser.processLine(line);
- }
- }
- }
- }
- if (out != null) {
- out.println(line);
- }
- }
- for (Job j : jobList) {
- try {
- j.join();
- } catch (InterruptedException e) {
- // ignore
- }
- }
- if (config != null) {
- config.shutdown();
- }
- } catch (IOException e) {
- CCorePlugin.log(e);
- }
- }
+ /**
+ * @return The exit code of the build process.
+ * @since 7.5
+ */
+ protected int watchProcess(IConsoleParser[] consoleParsers, IProgressMonitor monitor) throws CoreException {
+ ConsoleOutputSniffer sniffer = new ConsoleOutputSniffer(consoleParsers);
+ return launcher.waitAndRead(sniffer.getOutputStream(), sniffer.getErrorStream(), monitor);
}
private File getScannerInfoCacheFile() {
@@ -627,63 +575,6 @@ public abstract class CBuildConfiguration extends PlatformObject implements ICBu
.append(getProject().getName()).append(name + ".json").toFile(); //$NON-NLS-1$
}
- private static class IExtendedScannerInfoCreator implements JsonDeserializer<IExtendedScannerInfo> {
- @Override
- public IExtendedScannerInfo deserialize(JsonElement element, Type arg1, JsonDeserializationContext arg2)
- throws JsonParseException {
- JsonObject infoObj = element.getAsJsonObject();
-
- Map<String, String> definedSymbols = null;
- if (infoObj.has("definedSymbols")) { //$NON-NLS-1$
- JsonObject definedSymbolsObj = infoObj.get("definedSymbols").getAsJsonObject(); //$NON-NLS-1$
- definedSymbols = new HashMap<>();
- for (Entry<String, JsonElement> entry : definedSymbolsObj.entrySet()) {
- definedSymbols.put(entry.getKey(), entry.getValue().getAsString());
- }
- }
-
- String[] includePaths = null;
- if (infoObj.has("includePaths")) { //$NON-NLS-1$
- JsonArray includePathsArray = infoObj.get("includePaths").getAsJsonArray(); //$NON-NLS-1$
- List<String> includePathsList = new ArrayList<>(includePathsArray.size());
- for (Iterator<JsonElement> i = includePathsArray.iterator(); i.hasNext();) {
- includePathsList.add(i.next().getAsString());
- }
- includePaths = includePathsList.toArray(new String[includePathsList.size()]);
- }
-
- IncludeExportPatterns includeExportPatterns = null;
- if (infoObj.has("includeExportPatterns")) { //$NON-NLS-1$
- JsonObject includeExportPatternsObj = infoObj.get("includeExportPatterns").getAsJsonObject(); //$NON-NLS-1$
- String exportPattern = null;
- if (includeExportPatternsObj.has("includeExportPattern")) { //$NON-NLS-1$
- exportPattern = includeExportPatternsObj.get("includeExportPattern") //$NON-NLS-1$
- .getAsJsonObject().get("pattern").getAsString(); //$NON-NLS-1$
- }
-
- String beginExportsPattern = null;
- if (includeExportPatternsObj.has("includeBeginExportPattern")) { //$NON-NLS-1$
- beginExportsPattern = includeExportPatternsObj.get("includeBeginExportPattern") //$NON-NLS-1$
- .getAsJsonObject().get("pattern").getAsString(); //$NON-NLS-1$
- }
-
- String endExportsPattern = null;
- if (includeExportPatternsObj.has("includeEndExportPattern")) { //$NON-NLS-1$
- endExportsPattern = includeExportPatternsObj.get("includeEndExportPattern") //$NON-NLS-1$
- .getAsJsonObject().get("pattern").getAsString(); //$NON-NLS-1$
- }
-
- includeExportPatterns = new IncludeExportPatterns(exportPattern, beginExportsPattern,
- endExportsPattern);
- }
-
- ExtendedScannerInfo info = new ExtendedScannerInfo(definedSymbols, includePaths);
- info.setIncludeExportPatterns(includeExportPatterns);
- info.setParserSettings(new ParserSettings2());
- return info;
- }
- }
-
/**
* @since 6.1
*/
@@ -693,15 +584,14 @@ public abstract class CBuildConfiguration extends PlatformObject implements ICBu
File cacheFile = getScannerInfoCacheFile();
if (cacheFile.exists()) {
try (FileReader reader = new FileReader(cacheFile)) {
- GsonBuilder gsonBuilder = new GsonBuilder();
- gsonBuilder.registerTypeAdapter(IExtendedScannerInfo.class, new IExtendedScannerInfoCreator());
- Gson gson = gsonBuilder.create();
+ Gson gson = createGson();
scannerInfoCache = gson.fromJson(reader, ScannerInfoCache.class);
} catch (IOException e) {
CCorePlugin.log(e);
- scannerInfoCache = new ScannerInfoCache();
}
- } else {
+ }
+
+ if (scannerInfoCache == null) {
scannerInfoCache = new ScannerInfoCache();
}
scannerInfoCache.initCache();
@@ -709,6 +599,14 @@ public abstract class CBuildConfiguration extends PlatformObject implements ICBu
}
}
+ private Gson createGson() {
+ GsonBuilder gsonBuilder = new GsonBuilder();
+ gsonBuilder.registerTypeAdapter(IExtendedScannerInfo.class, new IExtendedScannerInfoDeserializer());
+ gsonBuilder.registerTypeAdapter(ExtendedScannerInfo.class, new ExtendedScannerInfoSerializer());
+ Gson gson = gsonBuilder.create();
+ return gson;
+ }
+
/**
* @since 6.1
*/
@@ -724,7 +622,7 @@ public abstract class CBuildConfiguration extends PlatformObject implements ICBu
}
try (FileWriter writer = new FileWriter(getScannerInfoCacheFile())) {
- Gson gson = new Gson();
+ Gson gson = createGson();
synchronized (scannerInfoLock) {
gson.toJson(scannerInfoCache, writer);
}
@@ -775,7 +673,24 @@ public abstract class CBuildConfiguration extends PlatformObject implements ICBu
synchronized (scannerInfoLock) {
info = scannerInfoCache.getScannerInfo(resource);
}
- if (info == null || info.getIncludePaths().length == 0) {
+ // Following is a kludge to fix Bug 579668 whereby sometimes a timing
+ // bug occurs and scanner info for a project that specifies a container target
+ // has not initialized the include paths correctly to point to copied includes
+ // from the image target. We check to see if org.eclipse.cdt.docker.launcher is
+ // found in the include paths which is the .plugin directory where we copy headers
+ // to in the .metadata folder.
+ boolean needsFixing = false;
+ if (info != null && info.getIncludePaths().length > 0 && toolChain != null
+ && toolChain.getId().startsWith("gcc-img-sha")) { //$NON-NLS-1$
+ needsFixing = true;
+ for (String includePath : info.getIncludePaths()) {
+ if (includePath.contains("org.eclipse.cdt.docker.launcher")) { //$NON-NLS-1$
+ needsFixing = false;
+ break;
+ }
+ }
+ }
+ if (info == null || info.getIncludePaths().length == 0 || needsFixing) {
ICElement celement = CCorePlugin.getDefault().getCoreModel().create(resource);
if (celement instanceof ITranslationUnit) {
try {
@@ -839,7 +754,7 @@ public abstract class CBuildConfiguration extends PlatformObject implements ICBu
* @return List of arg Strings
*/
private List<String> stripArgs(String argString) {
- String[] args = CommandLineUtil.argumentsToArrayUnixStyle(argString);
+ String[] args = CommandLineUtil.argumentsToArray(argString);
return new ArrayList<>(Arrays.asList(args));
}
@@ -890,11 +805,9 @@ public abstract class CBuildConfiguration extends PlatformObject implements ICBu
boolean needScannerRefresh = false;
- if (toolChain instanceof IToolChain2) {
- String needRefresh = toolChain.getProperty(NEED_REFRESH);
- if ("true".equals(needRefresh)) { //$NON-NLS-1$
- needScannerRefresh = true;
- }
+ String needRefresh = toolChain.getProperty(NEED_REFRESH);
+ if ("true".equals(needRefresh)) { //$NON-NLS-1$
+ needScannerRefresh = true;
}
for (IResource resource : resources) {
@@ -1020,11 +933,9 @@ public abstract class CBuildConfiguration extends PlatformObject implements ICBu
boolean needScannerRefresh = false;
- if (toolChain instanceof IToolChain2) {
- String needRefresh = toolChain.getProperty(NEED_REFRESH);
- if ("true".equals(needRefresh)) { //$NON-NLS-1$
- needScannerRefresh = true;
- }
+ String needRefresh = toolChain.getProperty(NEED_REFRESH);
+ if ("true".equals(needRefresh)) { //$NON-NLS-1$
+ needScannerRefresh = true;
}
for (IResource resource : resources) {
@@ -1172,7 +1083,7 @@ public abstract class CBuildConfiguration extends PlatformObject implements ICBu
Map<String, String> properties = new HashMap<>();
Preferences settings = getSettings();
try {
- for (String key : settings.childrenNames()) {
+ for (String key : settings.keys()) {
String value = settings.get(key, null);
if (value != null) {
properties.put(key, value);
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/build/ICBuildConfiguration.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/build/ICBuildConfiguration.java
index b09daca11cc..8869ca114f9 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/build/ICBuildConfiguration.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/build/ICBuildConfiguration.java
@@ -188,8 +188,8 @@ public interface ICBuildConfiguration extends IAdaptable, IScannerInfoProvider {
*
* @param name
* the name of the property
- * @param the
- * new value for the property
+ * @param value
+ * the new value for the property
* @since 6.4
*/
default void setProperty(String name, String value) {
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/build/IToolChain.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/build/IToolChain.java
index f2264e18758..b38f7eb2546 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/build/IToolChain.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/build/IToolChain.java
@@ -214,7 +214,7 @@ public interface IToolChain extends IAdaptable {
* info for
* @param buildDirectoryURI
* the build directory that would be used to run commands
- * @returns default scanner info for this language
+ * @return default scanner info for this language
* @since 6.1
*/
default IExtendedScannerInfo getDefaultScannerInfo(IBuildConfiguration buildConfig,
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/build/IToolChainManager.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/build/IToolChainManager.java
index 6248f0f2595..d1537dcf016 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/build/IToolChainManager.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/build/IToolChainManager.java
@@ -38,7 +38,7 @@ public interface IToolChainManager {
/**
* Return the UI label for the toolchain type.
*
- * @param id
+ * @param typeId
* type toolchain type id
* @return name of the type
* @since 6.4
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/build/StandardBuildConfiguration.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/build/StandardBuildConfiguration.java
index d10351cb41a..9f0d72803c0 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/build/StandardBuildConfiguration.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/build/StandardBuildConfiguration.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2016 QNX Software Systems and others.
+ * Copyright (c) 2016, 2022 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -267,7 +267,7 @@ public class StandardBuildConfiguration extends CBuildConfiguration {
}
IConsoleParser[] consoleParsers = new IConsoleParser[] { epm, this };
- watchProcess(p, consoleParsers);
+ watchProcess(consoleParsers, monitor);
project.refreshLocal(IResource.DEPTH_INFINITE, monitor);
@@ -326,7 +326,7 @@ public class StandardBuildConfiguration extends CBuildConfiguration {
return;
}
- watchProcess(p, console);
+ watchProcess(console, monitor);
outStream.write(Messages.CBuildConfiguration_BuildComplete);
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/cdtvariables/CdtVariable.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/cdtvariables/CdtVariable.java
index 57f8fb5627d..3f21a15f29b 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/cdtvariables/CdtVariable.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/cdtvariables/CdtVariable.java
@@ -56,25 +56,16 @@ public class CdtVariable implements ICdtVariable {
}
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.macros.IBuildMacro#getName()
- */
@Override
public String getName() {
return fName;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.macros.IBuildMacro#getMacroValueType()
- */
@Override
public int getValueType() {
return fType;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.macros.IBuildMacro#getStringValue()
- */
@Override
public String getStringValue() throws CdtVariableException {
if (CdtVariableResolver.isStringListVariable(fType))
@@ -83,9 +74,6 @@ public class CdtVariable implements ICdtVariable {
return fStringValue;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.macros.IBuildMacro#getStringListValue()
- */
@Override
public String[] getStringListValue() throws CdtVariableException {
if (!CdtVariableResolver.isStringListVariable(fType))
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/cdtvariables/CdtVariableStatus.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/cdtvariables/CdtVariableStatus.java
index be99c22a27e..b2872065e63 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/cdtvariables/CdtVariableStatus.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/cdtvariables/CdtVariableStatus.java
@@ -159,40 +159,25 @@ public class CdtVariableStatus extends Status implements ICdtVariableStatus {
return message;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.macros.IBuildMacroStatus#getMacroName()
- */
@Override
public String getVariableName() {
return fMacroName;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.macros.IBuildMacroStatus#getExpression()
- */
@Override
public String getExpression() {
return fExpression;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.macros.IBuildMacroStatus#getReferencedName()
- */
@Override
public String getReferencedMacroName() {
return fReferencedName;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.macros.IBuildMacroStatus#getContextType()
- */
// public int getContextType() {
// return fContextType;
// }
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.macros.IBuildMacroStatus#getContextData()
- */
// public Object getContextData() {
// return fContextData;
// }
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/cdtvariables/ICdtVariableManager.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/cdtvariables/ICdtVariableManager.java
index dac29b6c897..734bd2d3726 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/cdtvariables/ICdtVariableManager.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/cdtvariables/ICdtVariableManager.java
@@ -58,7 +58,7 @@ public interface ICdtVariableManager {
/**
*
* converts StringList value into String of the following format:
- * "<value_1>< listDelimiter ><value_2>< listDelimiter > ... <value_n>"
+ * "&lt;value_1&gt;&lt; listDelimiter &gt;&lt;value_2&gt;&lt; listDelimiter &gt; ... &lt;value_n&gt;"
*/
public String convertStringListToString(String value[], String listDelimiter);
@@ -70,7 +70,7 @@ public interface ICdtVariableManager {
* expanded to. If null the BuildMacroException is thrown in case the string to be resolved
* references inexistent macros
* @param listDelimiter if not null, StringList macros are expanded as
- * "<value_1>< listDelimiter ><value_2>< listDelimiter > ... <value_n>"
+ * "&lt;value_1&gt;&lt; listDelimiter &gt;&lt;value_2&gt;&lt; listDelimiter &gt; ... &lt;value_n&gt;"
* otherwise the BuildMacroException is thrown in case the string to be resolved references
* string-list macros
*/
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/envvar/IEnvironmentVariable.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/envvar/IEnvironmentVariable.java
index 68ff1545f50..99447f9d12f 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/envvar/IEnvironmentVariable.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/envvar/IEnvironmentVariable.java
@@ -50,9 +50,9 @@ public interface IEnvironmentVariable {
* If the variable already exists and contains some value the new
* value will be calculated in the following way:
* For the "prepend" operation:
- * <New value> = <the value from the getValue() method><delimiter><Old value>
+ * &lt;New value&gt; = &lt;the value from the getValue() method&gt;&lt;delimiter&gt;&lt;Old value&gt;
* For the "append" operation:
- * <New value> = <Old value><delimiter><the value from the getValue() method>
+ * &lt;New value&gt; = &lt;Old value&gt;&lt;delimiter&gt;&lt;the value from the getValue() method&gt;
*
* The Environment Variable Provider will also remove the duplicates of "sub-values"
* in the resulting value.
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/envvar/IEnvironmentVariableManager.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/envvar/IEnvironmentVariableManager.java
index ef559b3c099..935c723a90f 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/envvar/IEnvironmentVariableManager.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/envvar/IEnvironmentVariableManager.java
@@ -101,11 +101,5 @@ public interface IEnvironmentVariableManager {
*/
public String getDefaultDelimiter();
- /**
- * @return true if the OS supports case sensitive variables (Unix-like systems) or false
- * if it does not (Win32 systems)
- */
- public boolean isVariableCaseSensitive();
-
public IContributedEnvironment getContributedEnvironment();
}
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/errorparsers/ErrorParserNamedWrapper.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/errorparsers/ErrorParserNamedWrapper.java
index dca5883700b..18be2d80979 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/errorparsers/ErrorParserNamedWrapper.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/errorparsers/ErrorParserNamedWrapper.java
@@ -43,25 +43,16 @@ public class ErrorParserNamedWrapper implements IErrorParserNamed {
this.fErrorParser = errorParser;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IErrorParser#processLine(java.lang.String, org.eclipse.cdt.core.ErrorParserManager)
- */
@Override
public boolean processLine(String line, ErrorParserManager epm) {
return fErrorParser.processLine(line, epm);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IErrorParserNamed#getId()
- */
@Override
public String getId() {
return fId;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IErrorParserNamed#getName()
- */
@Override
public String getName() {
return fName;
@@ -74,25 +65,16 @@ public class ErrorParserNamedWrapper implements IErrorParserNamed {
return fErrorParser;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IErrorParserNamed#setId(java.lang.String)
- */
@Override
public void setId(String id) {
this.fId = id;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IErrorParserNamed#setName(java.lang.String)
- */
@Override
public void setName(String name) {
this.fName = name;
}
- /* (non-Javadoc)
- * @see java.lang.Object#equals(java.lang.Object)
- */
@Override
public boolean equals(Object o) {
if (o instanceof ErrorParserNamedWrapper) {
@@ -105,9 +87,6 @@ public class ErrorParserNamedWrapper implements IErrorParserNamed {
}
- /* (non-Javadoc)
- * @see java.lang.Object#clone()
- */
@Override
public Object clone() throws CloneNotSupportedException {
// shallow copy since IErrorParser is not {@link Cloneable} in general.
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/errorparsers/FixitErrorParser.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/errorparsers/FixitErrorParser.java
index a190b679cd2..617dd0c76f3 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/errorparsers/FixitErrorParser.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/errorparsers/FixitErrorParser.java
@@ -89,9 +89,6 @@ public class FixitErrorParser extends RegexErrorParser {
return super.processLine(line, epManager);
}
- /* (non-Javadoc)
- * @see java.lang.Object#clone()
- */
@Override
public Object clone() throws CloneNotSupportedException {
FixitErrorParser that = new FixitErrorParser(getId(), getName());
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/errorparsers/RegexErrorParser.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/errorparsers/RegexErrorParser.java
index 10a6386ca38..265e61d1202 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/errorparsers/RegexErrorParser.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/errorparsers/RegexErrorParser.java
@@ -157,9 +157,6 @@ public class RegexErrorParser implements IErrorParserNamed {
return false;
}
- /* (non-Javadoc)
- * @see java.lang.Object#equals(java.lang.Object)
- */
@Override
public boolean equals(Object o) {
if (o instanceof RegexErrorParser) {
@@ -170,9 +167,6 @@ public class RegexErrorParser implements IErrorParserNamed {
}
- /* (non-Javadoc)
- * @see java.lang.Object#clone()
- */
@Override
public Object clone() throws CloneNotSupportedException {
RegexErrorParser that = new RegexErrorParser(fId, fName);
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/errorparsers/RegexErrorPattern.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/errorparsers/RegexErrorPattern.java
index ec8f9e0811c..63ee040abfd 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/errorparsers/RegexErrorPattern.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/errorparsers/RegexErrorPattern.java
@@ -344,9 +344,6 @@ public class RegexErrorPattern implements Cloneable {
return path;
}
- /* (non-Javadoc)
- * @see java.lang.Object#equals(java.lang.Object)
- */
@Override
public boolean equals(Object o) {
if (o instanceof RegexErrorPattern) {
@@ -362,9 +359,6 @@ public class RegexErrorPattern implements Cloneable {
}
- /* (non-Javadoc)
- * @see java.lang.Object#clone()
- */
@Override
public Object clone() throws CloneNotSupportedException {
return new RegexErrorPattern(pattern.toString(), fileExpression, lineExpression, descriptionExpression,
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/formatter/DefaultCodeFormatterConstants.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/formatter/DefaultCodeFormatterConstants.java
index 2557328d2e5..e7bed19c143 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/formatter/DefaultCodeFormatterConstants.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/formatter/DefaultCodeFormatterConstants.java
@@ -97,7 +97,6 @@ public class DefaultCodeFormatterConstants {
* - option id: "org.eclipse.cdt.core.formatter.comment_formatter_on_tag"
* - default: @formatter:on
* </pre>
- * @see CCorePlugin#FORMAT_ON_TAG
* @since 6.7
*/
public static final String FORMATTER_COMMENT_ON_TAG = CCorePlugin.PLUGIN_ID + ".formatter.comment_formatter_on_tag"; //$NON-NLS-1$
@@ -107,7 +106,6 @@ public class DefaultCodeFormatterConstants {
* - option id: "org.eclipse.cdt.core.formatter.comment_formatter_off_tag"
* - default: @formatter:off
* </pre>
- * @see CCorePlugin#FORMAT_OFF_TAG
* @since 6.7
*/
public static final String FORMATTER_COMMENT_OFF_TAG = CCorePlugin.PLUGIN_ID
@@ -2869,9 +2867,9 @@ public class DefaultCodeFormatterConstants {
}
/**
- * Returns the K&R formatter settings
+ * Returns the K&amp;R formatter settings
*
- * @return the K&R settings
+ * @return the K&amp;R settings
*/
public static Map<String, String> getKandRSettings() {
return DefaultCodeFormatterOptions.getKandRSettings().getMap();
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/formatter/DefaultCodeFormatterOptions.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/formatter/DefaultCodeFormatterOptions.java
index dc6868739f5..33378fde3e6 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/formatter/DefaultCodeFormatterOptions.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/formatter/DefaultCodeFormatterOptions.java
@@ -2529,7 +2529,7 @@ public class DefaultCodeFormatterOptions {
}
/**
- * Configure K&R style.
+ * Configure K&amp;R style.
* <p>Example:</p>
* <pre>
* namespace foospace {
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/formatter/IndentManipulation.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/formatter/IndentManipulation.java
index 4a6c3d17e29..2af58f14418 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/formatter/IndentManipulation.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/formatter/IndentManipulation.java
@@ -176,7 +176,7 @@ public final class IndentManipulation {
/**
* Removes the given number of indentation units from a given line. If the line
* has less than the given indent, all the available indentation is removed.
- * If <code>indentsToRemove <= 0</code> the line is returned.
+ * If <code>indentsToRemove &lt;= 0</code> the line is returned.
*
* @param line the line to trim
* @param tabWidth the width of one tab in space equivalents
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/resources/EFSFileStorage.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/resources/EFSFileStorage.java
index 8d63e91cf3b..2a5b5169904 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/resources/EFSFileStorage.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/resources/EFSFileStorage.java
@@ -42,9 +42,6 @@ public class EFSFileStorage extends PlatformObject implements IStorage {
this.locationURI = locationURI;
}
- /* (non-Javadoc)
- * @see org.eclipse.core.resources.IStorage#getContents()
- */
@Override
public InputStream getContents() throws CoreException {
if (inputStream == null) {
@@ -59,17 +56,11 @@ public class EFSFileStorage extends PlatformObject implements IStorage {
return inputStream;
}
- /* (non-Javadoc)
- * @see org.eclipse.core.resources.IStorage#getFullPath()
- */
@Override
public IPath getFullPath() {
return URIUtil.toPath(locationURI);
}
- /* (non-Javadoc)
- * @see org.eclipse.core.resources.IStorage#getName()
- */
@Override
public String getName() {
IFileStore fileStore = null;
@@ -88,9 +79,6 @@ public class EFSFileStorage extends PlatformObject implements IStorage {
return null;
}
- /* (non-Javadoc)
- * @see org.eclipse.core.resources.IStorage#isReadOnly()
- */
@Override
public boolean isReadOnly() {
IFileStore fileStore = null;
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/resources/IPathEntryStore.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/resources/IPathEntryStore.java
index 08b496bb13e..b2181a6b522 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/resources/IPathEntryStore.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/resources/IPathEntryStore.java
@@ -36,7 +36,6 @@ public interface IPathEntryStore extends ICExtension {
* Setting paths should fire a CONTENT_CHANGED events to the listeners.
* It is up to the listener to calculate the deltas.
*
- * @param project
* @param entries
* @throws CoreException
*/
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/resources/IPathEntryVariableManager.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/resources/IPathEntryVariableManager.java
index 24b78f8302e..b24812532d8 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/resources/IPathEntryVariableManager.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/resources/IPathEntryVariableManager.java
@@ -115,13 +115,13 @@ public interface IPathEntryVariableManager {
* <li>BACKUP = /tmp/backup</li>
* </ul>
* <p>The following paths would be resolved as:
- * <p>c:/bin => c:/bin</p>
- * <p>c:${TEMP} => c:/temp</p>
- * <p>/TEMP => /TEMP</p>
- * <p>${TEMP}/foo => /temp/foo</p>
- * <p>${BACKUP} => /tmp/backup</p>
- * <p>${BACKUP}/bar.txt => /tmp/backup/bar.txt</p>
- * <p>SOMEPATH/foo => SOMEPATH/foo</p></p>
+ * <p>c:/bin =&gt; c:/bin</p>
+ * <p>c:${TEMP} =&gt; c:/temp</p>
+ * <p>/TEMP =&gt; /TEMP</p>
+ * <p>${TEMP}/foo =&gt; /temp/foo</p>
+ * <p>${BACKUP} =&gt; /tmp/backup</p>
+ * <p>${BACKUP}/bar.txt =&gt; /tmp/backup/bar.txt</p>
+ * <p>SOMEPATH/foo =&gt; SOMEPATH/foo</p></p>
*
* @param path the path to be resolved
* @return the resolved path or <code>null</code>
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/resources/RefreshExclusion.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/resources/RefreshExclusion.java
index c862461de0d..ce5ef92a74d 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/resources/RefreshExclusion.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/resources/RefreshExclusion.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2011, 2012 IBM Corporation and others.
+ * Copyright (c) 2011, 2020 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -10,9 +10,11 @@
*
* Contributors:
* IBM Corporation - initial API and implementation
+ * Alexander Fedorov (ArSysOp) - Bug 561992
*******************************************************************************/
package org.eclipse.cdt.core.resources;
+import java.text.MessageFormat;
import java.util.Collections;
import java.util.Iterator;
import java.util.LinkedList;
@@ -23,8 +25,6 @@ import org.eclipse.cdt.core.settings.model.ICStorageElement;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
-import com.ibm.icu.text.MessageFormat;
-
/**
* A RefreshExclusion represents a rule for excluding certain resources from being refreshed.
*
@@ -390,9 +390,6 @@ public abstract class RefreshExclusion implements Cloneable {
}
}
- /* (non-Javadoc)
- * @see java.lang.Object#clone()
- */
@Override
public abstract Object clone();
}
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/resources/ScannerProvider.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/resources/ScannerProvider.java
index 3506733af1c..3ec1a8ee8ca 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/resources/ScannerProvider.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/resources/ScannerProvider.java
@@ -179,9 +179,6 @@ public class ScannerProvider extends AbstractCExtension implements IScannerInfoP
}
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.model.IElementChangedListener#elementChanged(org.eclipse.cdt.core.model.ElementChangedEvent)
- */
@Override
public void elementChanged(ElementChangedEvent event) {
try {
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CConfigBasedDescriptor.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CConfigBasedDescriptor.java
index 8ddc87f9910..05dd4fe3610 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CConfigBasedDescriptor.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CConfigBasedDescriptor.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2011 Intel Corporation and others.
+ * Copyright (c) 2007, 2020 Intel Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -9,19 +9,22 @@
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
- * Intel Corporation - Initial API and implementation
- * Anton Leherbauer (Wind River Systems)
- * James Blackburn (Broadcom Corp.)
- * IBM Corporation
+ * Intel Corporation - Initial API and implementation
+ * Anton Leherbauer (Wind River Systems)
+ * James Blackburn (Broadcom Corp.)
+ * IBM Corporation
+ * Alexander Fedorov (ArSysOp) - Bug 561992
*******************************************************************************/
package org.eclipse.cdt.internal.core;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
+import java.text.MessageFormat;
import java.util.HashMap;
import java.util.LinkedHashSet;
import java.util.Map;
+import java.util.Objects;
import org.eclipse.cdt.core.AbstractCExtension;
import org.eclipse.cdt.core.CCorePlugin;
@@ -35,7 +38,6 @@ import org.eclipse.cdt.core.settings.model.ICConfigExtensionReference;
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
import org.eclipse.cdt.core.settings.model.ICProjectDescription;
import org.eclipse.cdt.core.settings.model.ICStorageElement;
-import org.eclipse.cdt.core.settings.model.util.CDataUtil;
import org.eclipse.cdt.core.settings.model.util.CExtensionUtil;
import org.eclipse.cdt.internal.core.settings.model.CConfigurationDescriptionCache;
import org.eclipse.cdt.internal.core.settings.model.CConfigurationSpecSettings;
@@ -58,8 +60,6 @@ import org.eclipse.core.runtime.jobs.Job;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
-import com.ibm.icu.text.MessageFormat;
-
/**
* Concrete ICDescriptor for a Project.
*
@@ -206,7 +206,7 @@ final public class CConfigBasedDescriptor implements ICDescriptor {
@Override
public void setExtensionData(String key, String value) throws CoreException {
- if (!CDataUtil.objectsEqual(fCfgExtRef.getExtensionData(key), value)) {
+ if (!Objects.equals(fCfgExtRef.getExtensionData(key), value)) {
fIsDirty = true;
fCfgExtRef.setExtensionData(key, value);
checkApply();
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CConfigBasedDescriptorManager.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CConfigBasedDescriptorManager.java
index 46d3e61f47a..fcbcdec484f 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CConfigBasedDescriptorManager.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CConfigBasedDescriptorManager.java
@@ -244,8 +244,6 @@ final public class CConfigBasedDescriptorManager implements ICDescriptorManager
/*
* Run the descriptor operation. Lock the descriptor while this takes place...
- * (non-Javadoc)
- * @see org.eclipse.cdt.core.ICDescriptorManager#runDescriptorOperation(org.eclipse.core.resources.IProject, org.eclipse.cdt.core.ICDescriptorOperation, org.eclipse.core.runtime.IProgressMonitor)
*/
@Override
public void runDescriptorOperation(IProject project, ICDescriptorOperation op, IProgressMonitor monitor)
@@ -275,8 +273,6 @@ final public class CConfigBasedDescriptorManager implements ICDescriptorManager
/*
* Runs a descriptor operation directly on an ICProjectDescription.
*
- * (non-Javadoc)
- * @see org.eclipse.cdt.core.ICDescriptorManager#runDescriptorOperation(org.eclipse.core.resources.IProject, org.eclipse.cdt.core.settings.model.ICProjectDescription, org.eclipse.cdt.core.ICDescriptorOperation, org.eclipse.core.runtime.IProgressMonitor)
*/
@Override
public void runDescriptorOperation(IProject project, ICProjectDescription des, ICDescriptorOperation op,
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CDTLogWriter.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CDTLogWriter.java
index 291a4854926..a94a0afe17e 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CDTLogWriter.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CDTLogWriter.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2020 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -10,6 +10,7 @@
*
* Contributors:
* IBM Corporation - initial API and implementation
+ * Alexander Fedorov (ArSysOp) - Bug 561992
*******************************************************************************/
package org.eclipse.cdt.internal.core;
@@ -22,15 +23,14 @@ import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.io.Writer;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
import java.util.Date;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IStatus;
-import com.ibm.icu.text.DateFormat;
-import com.ibm.icu.text.SimpleDateFormat;
-
public class CDTLogWriter {
protected File logFile = null;
protected Writer log = null;
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/PositionTrackerChain.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/PositionTrackerChain.java
index 80ad2bf756c..5d215f88690 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/PositionTrackerChain.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/PositionTrackerChain.java
@@ -77,9 +77,6 @@ class PositionTrackerChain implements IDocumentListener {
}
}
- /* (non-Javadoc)
- * @see org.eclipse.jface.text.IPositionUpdater#update(DocumentEvent)
- */
private void update(DocumentEvent event) {
String text = event.getText();
int insertLen = text != null ? text.length() : 0;
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/cdtvariables/CdtMacroSupplier.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/cdtvariables/CdtMacroSupplier.java
index a47a3402f01..cc454f227a3 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/cdtvariables/CdtMacroSupplier.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/cdtvariables/CdtMacroSupplier.java
@@ -18,10 +18,10 @@ import org.eclipse.cdt.core.cdtvariables.CdtVariable;
import org.eclipse.cdt.core.cdtvariables.ICdtVariable;
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
import org.eclipse.cdt.core.settings.model.ICProjectDescription;
-import org.eclipse.cdt.utils.Platform;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IWorkspace;
import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.Platform;
import org.osgi.framework.Bundle;
/**
@@ -160,9 +160,6 @@ public class CdtMacroSupplier extends CoreMacroSupplierBase {
return fInstance;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.macros.IBuildMacroSupplier#getMacro(java.lang.String, int, java.lang.Object)
- */
@Override
public ICdtVariable getMacro(String macroName, int contextType, Object contextData) {
ICdtVariable macro = null;
@@ -460,9 +457,6 @@ public class CdtMacroSupplier extends CoreMacroSupplierBase {
return macro;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.macros.IBuildMacroSupplier#getMacros(int, java.lang.Object)
- */
@Override
public ICdtVariable[] getMacros(int contextType, Object contextData) {
String names[] = getMacroNames(contextType, false);
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/cdtvariables/CdtVariableManager.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/cdtvariables/CdtVariableManager.java
index 3a0cd2e61e2..c03aae2839f 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/cdtvariables/CdtVariableManager.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/cdtvariables/CdtVariableManager.java
@@ -14,12 +14,12 @@
package org.eclipse.cdt.internal.core.cdtvariables;
import java.util.Arrays;
+import java.util.Objects;
import org.eclipse.cdt.core.cdtvariables.CdtVariableException;
import org.eclipse.cdt.core.cdtvariables.ICdtVariable;
import org.eclipse.cdt.core.cdtvariables.ICdtVariableManager;
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
-import org.eclipse.cdt.core.settings.model.util.CDataUtil;
import org.eclipse.cdt.internal.core.cdtvariables.EclipseVariablesVariableSupplier.EclipseVarMacro;
import org.eclipse.cdt.internal.core.settings.model.CConfigurationDescriptionCache;
import org.eclipse.cdt.utils.cdtvariables.CdtVariableResolver;
@@ -56,9 +56,6 @@ public class CdtVariableManager implements ICdtVariableManager {
return fDefault;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.macros.IBuildMacroProvider#getMacro(java.lang.String, int, java.lang.Object, boolean)
- */
@Override
public ICdtVariable getVariable(String macroName, ICConfigurationDescription cfg) {
if (cfg instanceof CConfigurationDescriptionCache) {
@@ -75,9 +72,6 @@ public class CdtVariableManager implements ICdtVariableManager {
return getMacroContextInfo(type, cfg);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.macros.IBuildMacroProvider#getMacros(int, java.lang.Object, boolean)
- */
@Override
public ICdtVariable[] getVariables(ICConfigurationDescription cfg) {
if (cfg instanceof CConfigurationDescriptionCache) {
@@ -89,9 +83,6 @@ public class CdtVariableManager implements ICdtVariableManager {
return SupplierBasedCdtVariableManager.getVariables(getMacroContextInfo(type, cfg), true);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.macros.IBuildMacroProvider#getSuppliers(int, java.lang.Object)
- */
public ICdtVariableSupplier[] getSuppliers(int contextType, Object contextData) {
IVariableContextInfo info = getMacroContextInfo(contextType, contextData);
if (info != null)
@@ -106,17 +97,11 @@ public class CdtVariableManager implements ICdtVariableManager {
return null;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.macros.IBuildMacroProvider#convertStringListToString(java.lang.String[], java.lang.String)
- */
@Override
public String convertStringListToString(String[] value, String listDelimiter) {
return CdtVariableResolver.convertStringListToString(value, listDelimiter);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.macros.IBuildMacroProvider#resolveValue(java.lang.String, java.lang.String, java.lang.String, int, java.lang.Object)
- */
@Override
public String resolveValue(String value, String nonexistentMacrosValue, String listDelimiter,
ICConfigurationDescription cfg) throws CdtVariableException {
@@ -128,9 +113,6 @@ public class CdtVariableManager implements ICdtVariableManager {
return null;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.macros.IBuildMacroProvider#resolveStringListValue(java.lang.String, java.lang.String, int, java.lang.Object)
- */
@Override
public String[] resolveStringListValue(String value, String nonexistentMacrosValue, String listDelimiter,
ICConfigurationDescription cfg) throws CdtVariableException {
@@ -142,9 +124,6 @@ public class CdtVariableManager implements ICdtVariableManager {
return null;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.macros.IBuildMacroProvider#isStringListValue(java.lang.String)
- */
@Override
public boolean isStringListValue(String value, ICConfigurationDescription cfg) throws CdtVariableException {
try {
@@ -157,9 +136,6 @@ public class CdtVariableManager implements ICdtVariableManager {
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.macros.IBuildMacroProvider#checkIntegrity(int, java.lang.Object)
- */
@Override
public void checkVariableIntegrity(ICConfigurationDescription cfg) throws CdtVariableException {
@@ -188,9 +164,6 @@ public class CdtVariableManager implements ICdtVariableManager {
return new CoreVariableSubstitutor(info, inexistentMacroValue, listDelimiter);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.macros.IBuildMacroProvider#resolveStringListValues(java.lang.String[], java.lang.String, java.lang.String, int, java.lang.Object)
- */
@Override
public String[] resolveStringListValues(String[] value, String nonexistentMacrosValue, String listDelimiter,
ICConfigurationDescription cfg) throws CdtVariableException {
@@ -215,7 +188,7 @@ public class CdtVariableManager implements ICdtVariableManager {
}
private static boolean variablesEqual(ICdtVariable var1, ICdtVariable var2) {
- if (CDataUtil.objectsEqual(var1, var2))
+ if (Objects.equals(var1, var2))
return true;
if (var1 == null || var2 == null)
@@ -234,7 +207,7 @@ public class CdtVariableManager implements ICdtVariableManager {
if (!Arrays.equals(v1, v2))
return false;
} else {
- if (!CDataUtil.objectsEqual(var1.getStringValue(), var2.getStringValue()))
+ if (!Objects.equals(var1.getStringValue(), var2.getStringValue()))
return false;
}
} catch (CdtVariableException e) {
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/cdtvariables/CoreVariableSubstitutor.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/cdtvariables/CoreVariableSubstitutor.java
index a7a37426c6c..283435102d6 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/cdtvariables/CoreVariableSubstitutor.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/cdtvariables/CoreVariableSubstitutor.java
@@ -30,18 +30,13 @@ public class CoreVariableSubstitutor extends SupplierBasedCdtVariableSubstitutor
public CoreVariableSubstitutor(IVariableContextInfo contextInfo, String inexistentMacroValue, String listDelimiter,
Map<?, ?> delimiterMap, String incorrectlyReferencedMacroValue) {
super(contextInfo, inexistentMacroValue, listDelimiter, delimiterMap, incorrectlyReferencedMacroValue);
- // TODO Auto-generated constructor stub
}
public CoreVariableSubstitutor(IVariableContextInfo contextInfo, String inexistentMacroValue,
String listDelimiter) {
super(contextInfo, inexistentMacroValue, listDelimiter);
- // TODO Auto-generated constructor stub
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.internal.macros.IMacroSubstitutor#setMacroContextInfo(int, java.lang.Object)
- */
public void setMacroContextInfo(int contextType, Object contextData) throws CdtVariableException {
setMacroContextInfo(getMacroContextInfo(contextType, contextData));
}
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/cdtvariables/DefaultVariableContextInfo.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/cdtvariables/DefaultVariableContextInfo.java
index 1bdd8273ee0..f7b552622fe 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/cdtvariables/DefaultVariableContextInfo.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/cdtvariables/DefaultVariableContextInfo.java
@@ -71,25 +71,16 @@ public class DefaultVariableContextInfo implements ICoreVariableContextInfo {
return null;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.internal.macros.IMacroContextInfo#getContextType()
- */
@Override
public int getContextType() {
return fType;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.internal.macros.IMacroContextInfo#getContextData()
- */
@Override
public Object getContextData() {
return fData;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.internal.macros.IMacroContextInfo#getSuppliers()
- */
@Override
public ICdtVariableSupplier[] getSuppliers() {
if (fSuppliers == null)
@@ -97,9 +88,6 @@ public class DefaultVariableContextInfo implements ICoreVariableContextInfo {
return fSuppliers;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.internal.macros.IMacroContextInfo#getNext()
- */
@Override
public IVariableContextInfo getNext() {
switch (fType) {
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/cdtvariables/EclipseVariablesVariableSupplier.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/cdtvariables/EclipseVariablesVariableSupplier.java
index 69cf8061ac8..be2b540c8ac 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/cdtvariables/EclipseVariablesVariableSupplier.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/cdtvariables/EclipseVariablesVariableSupplier.java
@@ -77,9 +77,6 @@ public class EclipseVariablesVariableSupplier implements ICdtVariableSupplier {
fArgument = argument;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.macros.IBuildMacro#getStringValue()
- */
@Override
public String getStringValue() throws CdtVariableException {
if (!fInitialized) {
@@ -124,9 +121,6 @@ public class EclipseVariablesVariableSupplier implements ICdtVariableSupplier {
}
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.macros.IBuildMacroSupplier#getMacro(java.lang.String, int, java.lang.Object)
- */
@Override
public ICdtVariable getVariable(String macroName, IVariableContextInfo info) {
return getVariable(macroName);
@@ -162,9 +156,6 @@ public class EclipseVariablesVariableSupplier implements ICdtVariableSupplier {
return null;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.macros.IBuildMacroSupplier#getMacros(int, java.lang.Object)
- */
@Override
public ICdtVariable[] getVariables(IVariableContextInfo info) {
return getVariables();
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/cdtvariables/EnvironmentVariableSupplier.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/cdtvariables/EnvironmentVariableSupplier.java
index fd97b1cef7b..f571d76281b 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/cdtvariables/EnvironmentVariableSupplier.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/cdtvariables/EnvironmentVariableSupplier.java
@@ -123,9 +123,6 @@ public class EnvironmentVariableSupplier extends CoreMacroSupplierBase {
return fInstance;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.macros.IBuildMacroSupplier#getMacro(java.lang.String, int, java.lang.Object)
- */
@Override
public ICdtVariable getMacro(String macroName, int contextType, Object contextData) {
if (macroName == null || macroName.isEmpty())
@@ -155,9 +152,6 @@ public class EnvironmentVariableSupplier extends CoreMacroSupplierBase {
return null;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.macros.IBuildMacroSupplier#getMacros(int, java.lang.Object)
- */
@Override
public ICdtVariable[] getMacros(int contextType, Object contextData) {
IEnvironmentVariable vars[] = null;
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/cdtvariables/UserDefinedVariableSupplier.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/cdtvariables/UserDefinedVariableSupplier.java
index 2fa67fba038..92268fd5fa6 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/cdtvariables/UserDefinedVariableSupplier.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/cdtvariables/UserDefinedVariableSupplier.java
@@ -21,6 +21,7 @@ import java.io.UnsupportedEncodingException;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
+import java.util.Objects;
import java.util.Set;
import javax.xml.parsers.DocumentBuilder;
@@ -38,7 +39,6 @@ import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.cdtvariables.CdtVariableException;
import org.eclipse.cdt.core.cdtvariables.ICdtVariable;
import org.eclipse.cdt.core.settings.model.ICStorageElement;
-import org.eclipse.cdt.core.settings.model.util.CDataUtil;
import org.eclipse.cdt.internal.core.settings.model.CConfigurationSpecSettings;
import org.eclipse.cdt.internal.core.settings.model.ExceptionFactory;
import org.eclipse.cdt.internal.core.settings.model.IInternalCCfgInfo;
@@ -109,9 +109,6 @@ public class UserDefinedVariableSupplier extends CoreMacroSupplierBase {
return fInstance;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.macros.IBuildMacroSupplier#getMacro(java.lang.String, int, java.lang.Object)
- */
@Override
public ICdtVariable getMacro(String macroName, int contextType, Object contextData) {
if (macroName == null || macroName.isEmpty())
@@ -123,9 +120,6 @@ public class UserDefinedVariableSupplier extends CoreMacroSupplierBase {
return null;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.macros.IBuildMacroSupplier#getMacros(int, java.lang.Object)
- */
@Override
public ICdtVariable[] getMacros(int contextType, Object contextData) {
StorableCdtVariables macros = getStorableMacros(contextType, contextData);
@@ -298,7 +292,7 @@ public class UserDefinedVariableSupplier extends CoreMacroSupplierBase {
if (fVar == otherVar)
return true;
- if (!CDataUtil.objectsEqual(fVar.getName(), otherVar.getName()))
+ if (!Objects.equals(fVar.getName(), otherVar.getName()))
return false;
if (fNameOnly)
@@ -316,7 +310,7 @@ public class UserDefinedVariableSupplier extends CoreMacroSupplierBase {
}
} else {
try {
- if (!CDataUtil.objectsEqual(fVar.getStringValue(), otherVar.getStringValue()))
+ if (!Objects.equals(fVar.getStringValue(), otherVar.getStringValue()))
return false;
} catch (CdtVariableException e) {
CCorePlugin.log(e);
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/cdtvariables/UserVarSupplier.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/cdtvariables/UserVarSupplier.java
index e8b77e5f42d..48459f5ac13 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/cdtvariables/UserVarSupplier.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/cdtvariables/UserVarSupplier.java
@@ -37,50 +37,32 @@ public class UserVarSupplier implements IUserVarSupplier {
return sup;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.cdtvariables.IUserVarSupplier#createMacro(org.eclipse.cdt.core.cdtvariables.ICdtVariable, int, java.lang.Object)
- */
@Override
public ICdtVariable createMacro(ICdtVariable copy, ICConfigurationDescription contextData) {
return CdtVariableManager.fUserDefinedMacroSupplier.createMacro(copy, CTX, contextData);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.cdtvariables.IUserVarSupplier#createMacro(java.lang.String, int, java.lang.String, java.lang.Object)
- */
@Override
public ICdtVariable createMacro(String macroName, int type, String value, ICConfigurationDescription contextData) {
return CdtVariableManager.fUserDefinedMacroSupplier.createMacro(macroName, type, value, CTX, contextData);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.cdtvariables.IUserVarSupplier#createMacro(java.lang.String, int, java.lang.String[], java.lang.Object)
- */
@Override
public ICdtVariable createMacro(String macroName, int type, String[] value,
ICConfigurationDescription contextData) {
return CdtVariableManager.fUserDefinedMacroSupplier.createMacro(macroName, type, value, CTX, contextData);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.cdtvariables.IUserVarSupplier#deleteAll(java.lang.Object)
- */
@Override
public void deleteAll(ICConfigurationDescription contextData) {
CdtVariableManager.fUserDefinedMacroSupplier.deleteAll(CTX, contextData);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.cdtvariables.IUserVarSupplier#deleteMacro(java.lang.String, java.lang.Object)
- */
@Override
public ICdtVariable deleteMacro(String name, ICConfigurationDescription contextData) {
return CdtVariableManager.fUserDefinedMacroSupplier.deleteMacro(name, CTX, contextData);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.cdtvariables.IUserVarSupplier#getMacros(java.lang.Object)
- */
@Override
public ICdtVariable[] getMacros(ICConfigurationDescription contextData) {
return CdtVariableManager.fUserDefinedMacroSupplier.getMacros(CTX, contextData);
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/dom/AbstractCodeReaderFactory.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/dom/AbstractCodeReaderFactory.java
index 3d3e8ef6676..cdc19f3c0fe 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/dom/AbstractCodeReaderFactory.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/dom/AbstractCodeReaderFactory.java
@@ -34,10 +34,9 @@ public abstract class AbstractCodeReaderFactory implements ICodeReaderFactory, I
}
@Override
- @SuppressWarnings({ "unchecked", "rawtypes" })
- public Object getAdapter(Class adapter) {
+ public <T> T getAdapter(Class<T> adapter) {
if (adapter.isAssignableFrom(IIncludeFileResolutionHeuristics.class)) {
- return fHeuristics;
+ return adapter.cast(fHeuristics);
}
return null;
}
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/dom/InternalASTServiceProvider.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/dom/InternalASTServiceProvider.java
index 58462f3525d..c223b70ad5f 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/dom/InternalASTServiceProvider.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/dom/InternalASTServiceProvider.java
@@ -65,35 +65,23 @@ public class InternalASTServiceProvider implements IASTServiceProvider {
"GNUC++" //$NON-NLS-1$
};
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.dom.IASTServiceProvider#getName()
- */
public String getName() {
// TODO is this a name or an id?
return "CDT AST Service"; //$NON-NLS-1$
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.dom.IASTServiceProvider#getTranslationUnit()
- */
@Override
public IASTTranslationUnit getTranslationUnit(IFile fileToParse) throws UnsupportedDialectException {
return getTranslationUnit(fileToParse.getLocation().toOSString(), fileToParse,
SavedCodeReaderFactory.getInstance(), null);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.dom.IASTServiceProvider#getTranslationUnit(org.eclipse.cdt.core.dom.ICodeReaderFactory)
- */
@Override
public IASTTranslationUnit getTranslationUnit(IFile fileToParse, ICodeReaderFactory fileCreator)
throws UnsupportedDialectException {
return getTranslationUnit(fileToParse.getLocation().toOSString(), fileToParse, fileCreator, null);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.dom.IASTServiceProvider#getTranslationUnit(org.eclipse.cdt.core.dom.ICodeReaderFactory, org.eclipse.cdt.core.dom.IParserConfiguration)
- */
@Override
public IASTTranslationUnit getTranslationUnit(IFile fileToParse, ICodeReaderFactory fileCreator,
IParserConfiguration configuration) throws UnsupportedDialectException {
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/dom/PartialWorkingCopyCodeReaderFactory.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/dom/PartialWorkingCopyCodeReaderFactory.java
index 5b0a009d056..fecc6c1449b 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/dom/PartialWorkingCopyCodeReaderFactory.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/dom/PartialWorkingCopyCodeReaderFactory.java
@@ -28,18 +28,12 @@ import org.eclipse.cdt.core.parser.ParserUtil;
import org.eclipse.cdt.internal.core.parser.EmptyIterator;
import org.eclipse.core.runtime.CoreException;
-/**
- * @author jcamelon
- */
@Deprecated
public class PartialWorkingCopyCodeReaderFactory extends AbstractCodeReaderFactory {
private final IWorkingCopyProvider provider;
private ICodeReaderCache cache = null;
- /**
- * @param provider
- */
public PartialWorkingCopyCodeReaderFactory(IWorkingCopyProvider provider,
IIncludeFileResolutionHeuristics heuristics) {
super(heuristics);
@@ -47,17 +41,11 @@ public class PartialWorkingCopyCodeReaderFactory extends AbstractCodeReaderFacto
cache = SavedCodeReaderFactory.getInstance().getCodeReaderCache();
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.dom.ICodeReaderFactory#getUniqueIdentifier()
- */
@Override
public int getUniqueIdentifier() {
return CDOM.PARSE_WORKING_COPY_WITH_SAVED_INCLUSIONS;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.dom.ICodeReaderFactory#createCodeReaderForTranslationUnit(java.lang.String)
- */
@Override
public CodeReader createCodeReaderForTranslationUnit(String path) {
return checkWorkingCopyThenCache(path);
@@ -74,9 +62,6 @@ public class PartialWorkingCopyCodeReaderFactory extends AbstractCodeReaderFacto
return cache.get(path);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.dom.ICodeReaderFactory#createCodeReaderForInclusion(java.lang.String)
- */
@Override
public CodeReader createCodeReaderForInclusion(String path) {
return cache.get(path);
@@ -94,9 +79,6 @@ public class PartialWorkingCopyCodeReaderFactory extends AbstractCodeReaderFacto
return Arrays.asList(provider.getWorkingCopies()).iterator();
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.dom.ICodeReaderFactory#getCodeReaderCache()
- */
@Override
public ICodeReaderCache getCodeReaderCache() {
return cache;
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/dom/SavedCodeReaderFactory.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/dom/SavedCodeReaderFactory.java
index 87269696234..bf995f159ee 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/dom/SavedCodeReaderFactory.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/dom/SavedCodeReaderFactory.java
@@ -73,17 +73,11 @@ public class SavedCodeReaderFactory extends AbstractCodeReaderFactory {
}
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.dom.ICodeReaderFactory#getUniqueIdentifier()
- */
@Override
public int getUniqueIdentifier() {
return CDOM.PARSE_SAVED_RESOURCES;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.dom.ICodeReaderFactory#createCodeReaderForTranslationUnit(java.lang.String)
- */
@Override
public CodeReader createCodeReaderForTranslationUnit(String path) {
return cache.get(path);
@@ -93,9 +87,6 @@ public class SavedCodeReaderFactory extends AbstractCodeReaderFactory {
return new CodeReader(tu.getResource().getLocation().toOSString(), tu.getContents());
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.dom.ICodeReaderFactory#createCodeReaderForInclusion(java.lang.String)
- */
@Override
public CodeReader createCodeReaderForInclusion(String path) {
return cache.get(path);
@@ -107,9 +98,6 @@ public class SavedCodeReaderFactory extends AbstractCodeReaderFactory {
return cache.get(astPath, ifl);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.dom.ICodeReaderFactory#createCodeReaderForInclusion(java.lang.String)
- */
@Override
public ICodeReaderCache getCodeReaderCache() {
return cache;
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/envvar/BuildSystemEnvironmentSupplier.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/envvar/BuildSystemEnvironmentSupplier.java
index 8cb726c1896..371e2048ea2 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/envvar/BuildSystemEnvironmentSupplier.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/envvar/BuildSystemEnvironmentSupplier.java
@@ -55,9 +55,6 @@ public class BuildSystemEnvironmentSupplier implements ICoreEnvironmentVariableS
fStartData = level;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.envvar.IEnvironmentVariableProvider#getVariable(java.lang.String, java.lang.Object, boolean)
- */
@Override
public IEnvironmentVariable getVariable(String variableName, ICConfigurationDescription cfg,
boolean resolveMacros) {
@@ -71,9 +68,6 @@ public class BuildSystemEnvironmentSupplier implements ICoreEnvironmentVariableS
return filterVariables(super.getVariables(cfg, resolveMacros));
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.internal.envvar.EnvironmentVariableProvider#getContextInfo(java.lang.Object)
- */
@Override
public IEnvironmentContextInfo getContextInfo(Object level) {
IEnvironmentContextInfo startInfo = getStartInfo();
@@ -153,9 +147,6 @@ public class BuildSystemEnvironmentSupplier implements ICoreEnvironmentVariableS
}
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.envvar.IEnvironmentVariableSupplier#getVariable()
- */
@Override
public IEnvironmentVariable getVariable(String name, Object context) {
if (context == null)
@@ -175,9 +166,6 @@ public class BuildSystemEnvironmentSupplier implements ICoreEnvironmentVariableS
return null;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.envvar.IEnvironmentVariableSupplier#getVariables()
- */
@Override
public IEnvironmentVariable[] getVariables(Object context) {
if (context == null)
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/envvar/DefaultEnvironmentContextInfo.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/envvar/DefaultEnvironmentContextInfo.java
index fc7dd0de00d..d0a77e31eb3 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/envvar/DefaultEnvironmentContextInfo.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/envvar/DefaultEnvironmentContextInfo.java
@@ -57,9 +57,6 @@ public class DefaultEnvironmentContextInfo implements IEnvironmentContextInfo {
return suppliers;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.internal.envvar.IContextInfo#getNext()
- */
@Override
public IEnvironmentContextInfo getNext() {
DefaultEnvironmentContextInfo next = null;
@@ -71,9 +68,6 @@ public class DefaultEnvironmentContextInfo implements IEnvironmentContextInfo {
return next;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.internal.envvar.IContextInfo#getSuppliers()
- */
@Override
public ICoreEnvironmentVariableSupplier[] getSuppliers() {
if (fContextSuppliers == null)
@@ -85,9 +79,6 @@ public class DefaultEnvironmentContextInfo implements IEnvironmentContextInfo {
fContextSuppliers = suppliers;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.internal.envvar.IContextInfo#getContext()
- */
@Override
public Object getContext() {
return fContextObject;
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/envvar/EclipseEnvironmentSupplier.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/envvar/EclipseEnvironmentSupplier.java
index c55644236fe..6cae943b149 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/envvar/EclipseEnvironmentSupplier.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/envvar/EclipseEnvironmentSupplier.java
@@ -28,9 +28,6 @@ import org.eclipse.cdt.utils.spawner.EnvironmentReader;
*/
public class EclipseEnvironmentSupplier implements ICoreEnvironmentVariableSupplier {
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.envvar.IEnvironmentVariableSupplier#getVariable()
- */
@Override
public IEnvironmentVariable getVariable(String name, Object context) {
if (context == null) {
@@ -42,9 +39,6 @@ public class EclipseEnvironmentSupplier implements ICoreEnvironmentVariableSuppl
return null;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.envvar.IEnvironmentVariableSupplier#getVariables()
- */
@Override
public IEnvironmentVariable[] getVariables(Object context) {
if (context == null) {
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/envvar/EnvVarCollector.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/envvar/EnvVarCollector.java
index 2f894f82837..75288d1e690 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/envvar/EnvVarCollector.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/envvar/EnvVarCollector.java
@@ -51,13 +51,10 @@ public class EnvVarCollector {
ICoreEnvironmentVariableSupplier supplier) {
if (vars == null)
return;
- boolean isCaseInsensitive = !EnvironmentVariableManager.getDefault().isVariableCaseSensitive();
for (int i = 0; i < vars.length; i++) {
IEnvironmentVariable var = vars[i];
if (var != null) {
String name = var.getName();
- if (isCaseInsensitive)
- name = name.toUpperCase();
boolean noCheck = false;
@@ -108,10 +105,6 @@ public class EnvVarCollector {
public EnvVarDescriptor getVariable(String name) {
if (fMap == null)
return null;
-
- if (!EnvironmentVariableManager.getDefault().isVariableCaseSensitive())
- name = name.toUpperCase();
-
return fMap.get(name);
}
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/envvar/EnvironmentVariableManager.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/envvar/EnvironmentVariableManager.java
index 11712ff7e5e..23d5b6e2e1f 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/envvar/EnvironmentVariableManager.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/envvar/EnvironmentVariableManager.java
@@ -365,11 +365,6 @@ public class EnvironmentVariableManager implements IEnvironmentVariableManager {
return isWin32() ? DELIMITER_WIN32 : DELIMITER_UNIX;
}
- @Override
- public boolean isVariableCaseSensitive() {
- return !isWin32();
- }
-
public ICoreEnvironmentVariableSupplier[] getSuppliers(Object level) {
IEnvironmentContextInfo info = getContextInfo(level);
if (info != null)
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/resources/LocationAdapter.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/resources/LocationAdapter.java
index 31f2387dc53..57150aadca8 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/resources/LocationAdapter.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/resources/LocationAdapter.java
@@ -35,7 +35,7 @@ abstract class LocationAdapter<T> {
public abstract T getLocation(IFile file);
- public static final LocationAdapter<IPath> PATH = new LocationAdapter<IPath>() {
+ public static final LocationAdapter<IPath> PATH = new LocationAdapter<>() {
@Override
public String extractName(IPath location) {
String name = location.lastSegment();
@@ -61,7 +61,7 @@ abstract class LocationAdapter<T> {
}
};
- public static final LocationAdapter<URI> URI = new LocationAdapter<URI>() {
+ public static final LocationAdapter<URI> URI = new LocationAdapter<>() {
@Override
public String extractName(URI location) {
String path = location.getPath();
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/scannerinfo/ExtendedScannerInfoSerializer.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/scannerinfo/ExtendedScannerInfoSerializer.java
new file mode 100644
index 00000000000..f7e218494d1
--- /dev/null
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/scannerinfo/ExtendedScannerInfoSerializer.java
@@ -0,0 +1,56 @@
+/*******************************************************************************
+ * Copyright (c) 2021 Kichwa Coders Canada Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.internal.core.scannerinfo;
+
+import java.lang.reflect.Type;
+
+import org.eclipse.cdt.core.parser.ExtendedScannerInfo;
+import org.eclipse.cdt.core.parser.IncludeExportPatterns;
+
+import com.google.gson.JsonElement;
+import com.google.gson.JsonSerializationContext;
+import com.google.gson.JsonSerializer;
+
+/**
+ * Serializer for {@link ExtendedScannerInfo}
+ *
+ * @see ShadowExtendedScannerInfo
+ * @see ShadowIncludeExportPatterns
+ * @see ShadowPattern
+ */
+public class ExtendedScannerInfoSerializer implements JsonSerializer<ExtendedScannerInfo> {
+ @Override
+ public JsonElement serialize(ExtendedScannerInfo info, Type typeOfInfo, JsonSerializationContext context) {
+ ShadowExtendedScannerInfo shadowInfo = new ShadowExtendedScannerInfo();
+ IncludeExportPatterns includeExportPatterns = info.getIncludeExportPatterns();
+ if (includeExportPatterns != null) {
+ shadowInfo.includeExportPatterns = new ShadowIncludeExportPatterns();
+ if (includeExportPatterns.getIncludeExportPattern() != null) {
+ shadowInfo.includeExportPatterns.includeExportPattern = new ShadowPattern(
+ includeExportPatterns.getIncludeExportPattern().pattern());
+ }
+ if (includeExportPatterns.getIncludeBeginExportsPattern() != null) {
+ shadowInfo.includeExportPatterns.includeBeginExportPattern = new ShadowPattern(
+ includeExportPatterns.getIncludeBeginExportsPattern().pattern());
+ }
+ if (includeExportPatterns.getIncludeEndExportsPattern() != null) {
+ shadowInfo.includeExportPatterns.includeEndExportPattern = new ShadowPattern(
+ includeExportPatterns.getIncludeEndExportsPattern().pattern());
+ }
+
+ }
+
+ shadowInfo.definedSymbols = info.getDefinedSymbols();
+ shadowInfo.includePaths = info.getIncludePaths();
+
+ return context.serialize(shadowInfo);
+ }
+}
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/scannerinfo/IExtendedScannerInfoDeserializer.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/scannerinfo/IExtendedScannerInfoDeserializer.java
new file mode 100644
index 00000000000..1a264b4c730
--- /dev/null
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/scannerinfo/IExtendedScannerInfoDeserializer.java
@@ -0,0 +1,62 @@
+/*******************************************************************************
+ * Copyright (c) 2021 Kichwa Coders Canada Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.internal.core.scannerinfo;
+
+import java.lang.reflect.Type;
+
+import org.eclipse.cdt.core.parser.ExtendedScannerInfo;
+import org.eclipse.cdt.core.parser.IExtendedScannerInfo;
+import org.eclipse.cdt.core.parser.IncludeExportPatterns;
+import org.eclipse.cdt.internal.core.parser.ParserSettings2;
+
+import com.google.gson.JsonDeserializationContext;
+import com.google.gson.JsonDeserializer;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonParseException;
+
+/**
+ * Deserializer for {@link IExtendedScannerInfo} that deserializes into {@link ExtendedScannerInfo} as the concrete type.
+ *
+ * @see ShadowExtendedScannerInfo
+ * @see ShadowIncludeExportPatterns
+ * @see ShadowPattern
+ */
+public class IExtendedScannerInfoDeserializer implements JsonDeserializer<IExtendedScannerInfo> {
+
+ @Override
+ public IExtendedScannerInfo deserialize(JsonElement element, Type typeOfT, JsonDeserializationContext context)
+ throws JsonParseException {
+ ShadowExtendedScannerInfo shadowInfo = (ShadowExtendedScannerInfo) context.deserialize(element,
+ ShadowExtendedScannerInfo.class);
+
+ ExtendedScannerInfo info = new ExtendedScannerInfo(shadowInfo.definedSymbols, shadowInfo.includePaths);
+ if (shadowInfo.includeExportPatterns != null) {
+ String includeExportPattern = null;
+ String includeBeginExportPattern = null;
+ String includeEndExportPattern = null;
+ if (shadowInfo.includeExportPatterns.includeExportPattern != null) {
+ includeExportPattern = shadowInfo.includeExportPatterns.includeExportPattern.pattern;
+ }
+ if (shadowInfo.includeExportPatterns.includeBeginExportPattern != null) {
+ includeBeginExportPattern = shadowInfo.includeExportPatterns.includeBeginExportPattern.pattern;
+ }
+ if (shadowInfo.includeExportPatterns.includeEndExportPattern != null) {
+ includeEndExportPattern = shadowInfo.includeExportPatterns.includeEndExportPattern.pattern;
+ }
+ IncludeExportPatterns patterns = new IncludeExportPatterns(includeExportPattern, includeBeginExportPattern,
+ includeEndExportPattern);
+ info.setIncludeExportPatterns(patterns);
+ }
+ info.setParserSettings(new ParserSettings2());
+ return info;
+ }
+
+}
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/scannerinfo/ShadowExtendedScannerInfo.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/scannerinfo/ShadowExtendedScannerInfo.java
new file mode 100644
index 00000000000..b6c1d71f79f
--- /dev/null
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/scannerinfo/ShadowExtendedScannerInfo.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2021 Kichwa Coders Canada Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.internal.core.scannerinfo;
+
+import java.util.Map;
+
+import org.eclipse.cdt.core.parser.ExtendedScannerInfo;
+
+/**
+ * Shadow version of the classes we are trying to serialize that contain only the info we need.
+ *
+ * @see ExtendedScannerInfo
+ * @see IExtendedScannerInfoDeserializer
+ * @see ExtendedScannerInfoSerializer
+ */
+public class ShadowExtendedScannerInfo {
+ ShadowIncludeExportPatterns includeExportPatterns;
+ Map<String, String> definedSymbols;
+ String[] includePaths;
+}
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/scannerinfo/ShadowIncludeExportPatterns.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/scannerinfo/ShadowIncludeExportPatterns.java
new file mode 100644
index 00000000000..43eefea5b79
--- /dev/null
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/scannerinfo/ShadowIncludeExportPatterns.java
@@ -0,0 +1,26 @@
+/*******************************************************************************
+ * Copyright (c) 2021 Kichwa Coders Canada Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.internal.core.scannerinfo;
+
+import org.eclipse.cdt.core.parser.IncludeExportPatterns;
+
+/**
+ * Shadow version of the classes we are trying to serialize that contain only the info we need.
+ *
+ * @see IncludeExportPatterns
+ * @see IExtendedScannerInfoDeserializer
+ * @see ExtendedScannerInfoSerializer
+ */
+public class ShadowIncludeExportPatterns {
+ ShadowPattern includeExportPattern;
+ ShadowPattern includeBeginExportPattern;
+ ShadowPattern includeEndExportPattern;
+}
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/scannerinfo/ShadowPattern.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/scannerinfo/ShadowPattern.java
new file mode 100644
index 00000000000..628f8f1d6ba
--- /dev/null
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/scannerinfo/ShadowPattern.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * Copyright (c) 2021 Kichwa Coders Canada Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.internal.core.scannerinfo;
+
+import java.util.regex.Pattern;
+
+/**
+ * Shadow version of the classes we are trying to serialize that contain only the info we need.
+ *
+ * To match original implementation of the serialize/deserialize which used {@link Pattern} directly
+ * we replicate the structure. This is why we don't just use String instead of ShadowPattern
+ *
+ * @see Pattern
+ * @see IExtendedScannerInfoDeserializer
+ * @see ExtendedScannerInfoSerializer
+ */
+public class ShadowPattern {
+ public ShadowPattern(String pattern) {
+ this.pattern = pattern;
+ }
+
+ String pattern;
+}
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/errorparsers/VCErrorParser.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/errorparsers/VCErrorParser.java
index 1d07bc5f9d0..c93fd3d74fa 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/errorparsers/VCErrorParser.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/errorparsers/VCErrorParser.java
@@ -22,7 +22,7 @@ import org.eclipse.cdt.core.errorparsers.ErrorPattern;
public class VCErrorParser extends AbstractErrorParser {
private static final ErrorPattern[] patterns = {
- new ErrorPattern("(.+?)(\\(([0-9]+)\\))? : (fatal error|error|warning) (.*)", 1, 3, 5, 0, 0) { //$NON-NLS-1$
+ new ErrorPattern("(.+?)(\\(([0-9]+)\\))?\\s*:\\s*(fatal error|error|warning) (.*)", 1, 3, 5, 0, 0) { //$NON-NLS-1$
@Override
public int getSeverity(Matcher matcher) {
return "warning".equals(matcher.group(4)) //$NON-NLS-1$
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/formatter/CodeFormatterVisitor.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/formatter/CodeFormatterVisitor.java
index 2506888c156..7eee8ee0cf5 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/formatter/CodeFormatterVisitor.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/formatter/CodeFormatterVisitor.java
@@ -128,6 +128,7 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTDesignator;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTElaboratedTypeSpecifier;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTEnumerationSpecifier;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTExplicitTemplateInstantiation;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTExpression;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTFieldReference;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTForStatement;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTFunctionDeclarator;
@@ -339,12 +340,16 @@ public class CodeFormatterVisitor extends ASTVisitor implements ICPPASTVisitor,
token = peekNextToken();
needSpace = true;
}
- if (token == Token.t_throw || token == Token.tIDENTIFIER) {
+ if (token == Token.t_noexcept || token == Token.t_throw || token == Token.tIDENTIFIER) {
if (node instanceof ICPPASTFunctionDeclarator) {
final IASTTypeId[] exceptionSpecification = ((ICPPASTFunctionDeclarator) node)
.getExceptionSpecification();
if (exceptionSpecification != null && token == Token.t_throw)
formatExceptionSpecification(exceptionSpecification);
+ final ICPPASTExpression noexceptExpression = ((ICPPASTFunctionDeclarator) node)
+ .getNoexceptExpression();
+ if (noexceptExpression != null && token == Token.t_noexcept)
+ formatExceptionSpecification(noexceptExpression);
}
if (peekNextToken() == Token.tIDENTIFIER) {
Alignment alignment = scribe.createAlignment(Alignment.TRAILING_TEXT, Alignment.M_COMPACT_SPLIT, 1,
@@ -1024,9 +1029,11 @@ public class CodeFormatterVisitor extends ASTVisitor implements ICPPASTVisitor,
// declarator
final ICPPASTFunctionDeclarator declarator = node.getDeclarator();
- skipNonWhitespaceToNode(declarator);
+ if (declarator != null) {
+ skipNonWhitespaceToNode(declarator);
+ }
boolean hasSpace = scribe.printComment();
- boolean hasPointerOps = declarator.getPointerOperators().length > 0;
+ boolean hasPointerOps = declarator != null ? declarator.getPointerOperators().length > 0 : false;
boolean needSpace = (hasPointerOps && hasSpace) || (!hasPointerOps && peekNextToken() == Token.tIDENTIFIER);
if (needSpace) {
scribe.space();
@@ -1039,11 +1046,13 @@ public class CodeFormatterVisitor extends ASTVisitor implements ICPPASTVisitor,
preferences.insert_space_before_opening_brace_in_method_declaration, false);
scribe.setTailFormatter(tailFormatter);
}
- declarator.accept(this);
+ if (declarator != null) {
+ declarator.accept(this);
- IASTAttributeSpecifier[] attributes = declarator.getAttributeSpecifiers();
- if (attributes.length > 0) {
- formatAttributes(declarator, true, false);
+ IASTAttributeSpecifier[] attributes = declarator.getAttributeSpecifiers();
+ if (attributes.length > 0) {
+ formatAttributes(declarator, true, false);
+ }
}
if (tailFormatter != null) {
@@ -1195,6 +1204,8 @@ public class CodeFormatterVisitor extends ASTVisitor implements ICPPASTVisitor,
// name
enumerator.getName().accept(this);
+ formatAttributes(enumerator, true, false, ICPPASTAttributeList.TYPE_FILTER);
+
// optional value assignment
final IASTExpression value = enumerator.getValue();
if (value != null) {
@@ -1667,6 +1678,38 @@ public class CodeFormatterVisitor extends ASTVisitor implements ICPPASTVisitor,
}
}
+ private void formatExceptionSpecification(final ICPPASTExpression noexceptSpecification) {
+ if (noexceptSpecification != null && noexceptSpecification != ICPPASTFunctionDeclarator.NOEXCEPT_DEFAULT) {
+ Alignment alignment = scribe.createAlignment(Alignment.EXCEPTION_SPECIFICATION,
+ preferences.alignment_for_throws_clause_in_method_declaration, 1, getCurrentPosition());
+
+ scribe.enterAlignment(alignment);
+ boolean ok = false;
+ do {
+ try {
+ scribe.alignFragment(alignment, 0);
+ scribe.printNextToken(Token.t_noexcept, true);
+ scribe.printNextToken(Token.tLPAREN,
+ preferences.insert_space_before_opening_paren_in_exception_specification);
+ if (preferences.insert_space_after_opening_paren_in_exception_specification) {
+ scribe.space();
+ }
+ noexceptSpecification.accept(this);
+ if (peekNextToken() == Token.tRPAREN) {
+ scribe.printNextToken(Token.tRPAREN,
+ preferences.insert_space_before_closing_paren_in_exception_specification);
+ }
+ ok = true;
+ } catch (AlignmentException e) {
+ scribe.redoAlignment(e);
+ }
+ } while (!ok);
+ scribe.exitAlignment(alignment, true);
+ } else {
+ scribe.printNextToken(Token.t_noexcept, true);
+ }
+ }
+
private boolean skipConstVolatileRestrict(boolean spaceBefore) {
return skipTokenWhile(token -> token == Token.t_const || token == Token.t_volatile || token == Token.t_restrict,
spaceBefore);
@@ -2490,8 +2533,9 @@ public class CodeFormatterVisitor extends ASTVisitor implements ICPPASTVisitor,
final int elementsLength = elements.size();
if (encloseInParen) {
- boolean spaceBeforeClosingParen = elements.isEmpty() && !addEllipsis ? options.fSpaceBetweenEmptyParen
- : options.fSpaceBeforeClosingParen;
+ boolean spaceBeforeClosingParen = elements.isEmpty() && !addEllipsis
+ && options.captureDefault == CaptureDefault.UNSPECIFIED ? options.fSpaceBetweenEmptyParen
+ : options.fSpaceBeforeClosingParen;
tailFormatter = new ClosingParensesisTailFormatter(spaceBeforeClosingParen, tailFormatter,
options.rightToken);
}
@@ -2542,7 +2586,9 @@ public class CodeFormatterVisitor extends ASTVisitor implements ICPPASTVisitor,
}
if (addEllipsis) {
if (i > 0) {
- scribe.printNextToken(options.fSeparatorToken, options.fSpaceBeforeSeparator);
+ if (peekNextToken() == options.fSeparatorToken) {
+ scribe.printNextToken(options.fSeparatorToken, options.fSpaceBeforeSeparator);
+ }
scribe.printTrailingComment();
}
scribe.alignFragment(alignment, i);
@@ -3080,6 +3126,15 @@ public class CodeFormatterVisitor extends ASTVisitor implements ICPPASTVisitor,
operand.accept(this);
}
break;
+ case IASTUnaryExpression.op_noexcept:
+ scribe.printNextToken(Token.t_noexcept, scribe.printComment());
+ if (operand != null) {
+ if (peekNextToken() != Token.tLPAREN) {
+ scribe.space();
+ }
+ operand.accept(this);
+ }
+ break;
case IASTUnaryExpression.op_typeid:
scribe.printNextToken(Token.t_typeid, scribe.printComment());
if (peekNextToken() != Token.tLPAREN) {
@@ -4877,15 +4932,15 @@ public class CodeFormatterVisitor extends ASTVisitor implements ICPPASTVisitor,
* Collect source positions of no-format sections in the given translation unit.
*
* @param translationUnit the {@link IASTTranslationUnit}, may be <code>null</code>
- * @return a {@link List} of {@link Position}s
+ * @return a modifiable {@link List} of {@link Position}s
*/
private List<InactivePosition> collectNoFormatCodePositions(IASTTranslationUnit translationUnit) {
if (translationUnit == null || !this.preferences.use_fomatter_comment_tag) {
- return Collections.emptyList();
+ return new ArrayList<>();
}
String fileName = translationUnit.getFilePath();
if (fileName == null) {
- return Collections.emptyList();
+ return new ArrayList<>();
}
List<InactivePosition> positions = new ArrayList<>();
int inactiveCodeStart = -1;
@@ -4918,7 +4973,7 @@ public class CodeFormatterVisitor extends ASTVisitor implements ICPPASTVisitor,
}
} else if (onPos != -1 && onPos > offPos) {
if (inInactiveCode) {
- int inactiveCodeEnd = nodeLocation.getNodeOffset() + nodeLocation.getNodeLength();
+ int inactiveCodeEnd = nodeLocation.getNodeOffset();
positions.add(new InactivePosition(inactiveCodeStart, inactiveCodeEnd - inactiveCodeStart, false));
}
inInactiveCode = false;
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/formatter/scanner/SimpleScanner.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/formatter/scanner/SimpleScanner.java
index f04a4cdb5ff..fa140edfb41 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/formatter/scanner/SimpleScanner.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/formatter/scanner/SimpleScanner.java
@@ -947,6 +947,7 @@ public class SimpleScanner {
fgKeywords.put("while", Integer.valueOf(Token.t_while)); //$NON-NLS-1$
fgKeywords.put("xor", Integer.valueOf(Token.t_xor)); //$NON-NLS-1$
fgKeywords.put("xor_eq", Integer.valueOf(Token.t_xor_eq)); //$NON-NLS-1$
+ fgKeywords.put("noexcept", Integer.valueOf(Token.t_noexcept)); //$NON-NLS-1$
// additional java keywords
fgKeywords.put("abstract", Integer.valueOf(Token.t_abstract)); //$NON-NLS-1$
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/formatter/scanner/Token.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/formatter/scanner/Token.java
index e77cf85166c..d40fa160663 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/formatter/scanner/Token.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/formatter/scanner/Token.java
@@ -510,4 +510,5 @@ public class Token {
static public final int t_transient = 215;
static public final int t_native = 216;
static public final int t_constexpr = 5400;
+ static public final int t_noexcept = 5401;
}
diff --git a/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/TemplateCore.java b/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/TemplateCore.java
index ba26faba483..f6d321a2b60 100644
--- a/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/TemplateCore.java
+++ b/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/TemplateCore.java
@@ -23,7 +23,6 @@ import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
-import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.templateengine.process.ProcessFailureException;
import org.eclipse.cdt.core.templateengine.process.TemplateProcessHandler;
import org.eclipse.core.runtime.IProgressMonitor;
@@ -47,7 +46,7 @@ public class TemplateCore {
private static Map<TemplateInfo, TemplateCore> templateCache = new HashMap<>();
- public static final Comparator<TemplateCore> TEMPLATE_ID_CASE_INSENSITIVE_COMPARATOR = new Comparator<TemplateCore>() {
+ public static final Comparator<TemplateCore> TEMPLATE_ID_CASE_INSENSITIVE_COMPARATOR = new Comparator<>() {
@Override
public int compare(TemplateCore t1, TemplateCore t2) {
return String.CASE_INSENSITIVE_ORDER.compare(t1.getTemplateId(), t2.getTemplateId());
@@ -219,8 +218,7 @@ public class TemplateCore {
result[0] = getProcessHandler().processAll(monitor);
} catch (ProcessFailureException e) {
TemplateEngineUtil.log(e);
- result[0] = new IStatus[] {
- new Status(IStatus.ERROR, CCorePlugin.PLUGIN_ID, IStatus.ERROR, e.getMessage(), e) };
+ result[0] = new IStatus[] { new Status(IStatus.ERROR, getClass(), IStatus.ERROR, e.getMessage(), e) };
}
return result[0];
}
diff --git a/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/TemplateEngine.java b/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/TemplateEngine.java
index 90b3c7de34c..6fe7c34449f 100644
--- a/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/TemplateEngine.java
+++ b/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/TemplateEngine.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2012 Symbian Software Limited and others.
+ * Copyright (c) 2007, 2020 Symbian Software Limited and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -11,6 +11,7 @@
* Contributors:
* Bala Torati (Symbian) - Initial API and implementation
* Mark Espiritu (VaST Systems) - bug 215960
+ * Alexander Fedorov (ArSysOp) - Bug 564276
*******************************************************************************/
package org.eclipse.cdt.core.templateengine;
@@ -31,6 +32,7 @@ import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IExtension;
import org.eclipse.core.runtime.Platform;
+import org.osgi.framework.FrameworkUtil;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
@@ -377,7 +379,7 @@ public class TemplateEngine {
*/
public URL getTemplateSchemaURL() throws IOException {
return FileLocator
- .toFileURL(Platform.getBundle(CCorePlugin.PLUGIN_ID).getEntry("schema/TemplateDescriptorSchema.xsd")); //$NON-NLS-1$
+ .toFileURL(FrameworkUtil.getBundle(getClass()).getEntry("schema/TemplateDescriptorSchema.xsd")); //$NON-NLS-1$
}
/**
diff --git a/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/TemplateEngineUtil.java b/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/TemplateEngineUtil.java
index 171d018bcc9..a886beaddd5 100644
--- a/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/TemplateEngineUtil.java
+++ b/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/TemplateEngineUtil.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2008 Symbian Software Limited and others.
+ * Copyright (c) 2007, 2020 Symbian Software Limited and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -16,7 +16,6 @@ package org.eclipse.cdt.core.templateengine;
import java.lang.reflect.InvocationTargetException;
import java.util.List;
-import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.templateengine.process.ProcessFailureException;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
@@ -45,7 +44,7 @@ public class TemplateEngineUtil {
t = t.getCause();
} while (t != null && t instanceof ProcessFailureException);
} else {
- ResourcesPlugin.getPlugin().getLog().log(new Status(IStatus.ERROR, CCorePlugin.PLUGIN_ID, IStatus.OK,
+ ResourcesPlugin.getPlugin().getLog().log(new Status(IStatus.ERROR, TemplateEngineUtil.class, IStatus.OK,
t.getMessage() == null ? t.toString() : t.getMessage(), t));
}
}
diff --git a/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/process/ConditionalProcessGroup.java b/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/process/ConditionalProcessGroup.java
index 6a529f307df..d064330a15c 100644
--- a/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/process/ConditionalProcessGroup.java
+++ b/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/process/ConditionalProcessGroup.java
@@ -21,7 +21,6 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
-import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.templateengine.TemplateCore;
import org.eclipse.cdt.core.templateengine.TemplateDescriptor;
import org.eclipse.cdt.core.templateengine.TemplateEngine;
@@ -216,7 +215,7 @@ public class ConditionalProcessGroup {
}
if (!isConditionValueTrue()) {
List<IStatus> statuses = new ArrayList<>(1);
- statuses.add(new Status(IStatus.ERROR, CCorePlugin.PLUGIN_ID, IStatus.INFO,
+ statuses.add(new Status(IStatus.ERROR, getClass(), IStatus.INFO,
Messages.getString("ConditionalProcessGroup.notExecuting") + id, null)); //$NON-NLS-1$
return statuses;
}
diff --git a/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/process/Process.java b/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/process/Process.java
index b1b30eb832b..72dd9d8c458 100644
--- a/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/process/Process.java
+++ b/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/process/Process.java
@@ -19,7 +19,6 @@ import java.util.HashSet;
import java.util.List;
import java.util.Set;
-import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.templateengine.TemplateCore;
import org.eclipse.cdt.core.templateengine.TemplateEngine;
import org.eclipse.core.runtime.IProgressMonitor;
@@ -165,7 +164,7 @@ public class Process {
}
resolve();
processRunner.process(template, args, id, monitor);
- return new Status(IStatus.INFO, CCorePlugin.PLUGIN_ID, IStatus.OK,
+ return new Status(IStatus.INFO, getClass(), IStatus.OK,
getProcessMessage(IStatus.OK, Messages.getString("Process.executedSuccessfully") + Arrays.asList(args)), //$NON-NLS-1$
null);
}
diff --git a/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/process/ProcessHelper.java b/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/process/ProcessHelper.java
index 6478849ad7a..b9e70166a7f 100644
--- a/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/process/ProcessHelper.java
+++ b/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/process/ProcessHelper.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2014 Symbian Software Limited and others.
+ * Copyright (c) 2007, 2020 Symbian Software Limited and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -13,6 +13,7 @@
* Mark Espiritu (VastSystems) - bug 215283
* Raphael Zulliger (Indel AG) - [367482] fixed resource leak
* Doug Schaefer (QNX) - added different start and end patterns for macros
+ * Alexander Fedorov (ArSysOp) - Bug 561992
*******************************************************************************/
package org.eclipse.cdt.core.templateengine.process;
@@ -24,6 +25,7 @@ import java.io.IOException;
import java.io.InputStreamReader;
import java.io.RandomAccessFile;
import java.net.URL;
+import java.text.MessageFormat;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
@@ -32,8 +34,6 @@ import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
-import com.ibm.icu.text.MessageFormat;
-
/**
* Acts as helper class for process the processes i.e., copy, replace and append files.
*/
diff --git a/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/process/ProcessRunner.java b/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/process/ProcessRunner.java
index c2f4f132f4b..151a1e92628 100644
--- a/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/process/ProcessRunner.java
+++ b/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/process/ProcessRunner.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2014 Symbian Software Limited and others.
+ * Copyright (c) 2007, 2020 Symbian Software Limited and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -9,16 +9,17 @@
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
- * Bala Torati (Symbian) - Initial API and implementation
+ * Bala Torati (Symbian) - Initial API and implementation
+ * Alexander Fedorov (ArSysOp) - Bug 561992
*******************************************************************************/
package org.eclipse.cdt.core.templateengine.process;
+import java.text.MessageFormat;
+
import org.eclipse.cdt.core.templateengine.TemplateCore;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
-import com.ibm.icu.text.MessageFormat;
-
/**
* Abstract ProcessRunner class provides the methods to implement for processes.
*/
diff --git a/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/process/ProcessRunnerFactory.java b/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/process/ProcessRunnerFactory.java
index d9f51a3b5c1..6120c6c0e2e 100644
--- a/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/process/ProcessRunnerFactory.java
+++ b/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/process/ProcessRunnerFactory.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2008 Symbian Software Limited and others.
+ * Copyright (c) 2007, 2020 Symbian Software Limited and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -10,6 +10,7 @@
*
* Contributors:
* Bala Torati (Symbian) - Initial API and implementation
+ * Alexander Fedorov (ArSysOp) - Bug 564276
*******************************************************************************/
package org.eclipse.cdt.core.templateengine.process;
@@ -18,19 +19,17 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.templateengine.TemplateEngineUtil;
+import org.eclipse.cdt.internal.core.templateengine.TemplateProcessTypes;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IExtension;
import org.eclipse.core.runtime.IExtensionPoint;
-import org.eclipse.core.runtime.Platform;
/**
* Factory class for creating the Process Runners.
*/
public class ProcessRunnerFactory {
- private static final String EXTENSION_POINT_PROCESSES = CCorePlugin.PLUGIN_ID + ".templateProcessTypes"; //$NON-NLS-1$
private static final String ELEM_NAME = "name"; //$NON-NLS-1$
private static final String ELEM_PROCESS_RUNNER = "processRunner"; //$NON-NLS-1$
private static ProcessRunnerFactory instance;
@@ -51,7 +50,7 @@ public class ProcessRunnerFactory {
*/
private synchronized void initializeProcessRunners() {
processRunnerMap = new HashMap<>();
- IExtensionPoint point = Platform.getExtensionRegistry().getExtensionPoint(EXTENSION_POINT_PROCESSES);
+ IExtensionPoint point = new TemplateProcessTypes().getExtensionPoint();
IExtension[] extensions = point.getExtensions();
for (int i = 0; i < extensions.length; i++) {
IExtension extension = extensions[i];
diff --git a/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/process/processes/CreateResourceIdentifier.java b/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/process/processes/CreateResourceIdentifier.java
index 9610fb333de..a82a236481d 100644
--- a/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/process/processes/CreateResourceIdentifier.java
+++ b/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/process/processes/CreateResourceIdentifier.java
@@ -22,7 +22,7 @@ import org.eclipse.core.runtime.IProgressMonitor;
/**
* Creates a template macro value that can be used as a pseudo-unique resource identifier.
* It is based on the name of the application and is in the form of four capital letters.
- * e.g. Helloworld => HELL
+ * e.g. Helloworld =&gt; HELL
*/
public class CreateResourceIdentifier extends ProcessRunner {
diff --git a/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/process/processes/SetEnvironmentVariable.java b/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/process/processes/SetEnvironmentVariable.java
index 6054a2d8124..90e63841108 100644
--- a/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/process/processes/SetEnvironmentVariable.java
+++ b/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/process/processes/SetEnvironmentVariable.java
@@ -36,15 +36,15 @@ import org.eclipse.core.runtime.IProgressMonitor;
* A template process for setting an environment variable in all of the new project's
* build configurations. E.g.,
* <pre>
- * &lt;process type="org.eclipse.cdt.core.SetEnvironmentVariable">
- * &lt;simple name="projectName" value="$(projectName)"/>
- * &lt;complex-array name="variables">
- * &lt;element>
- * &lt;simple name="name" value="QMAKE"/>
- * &lt;simple name="value" value="$(qmake)"/>
- * &lt;/element>
- * &lt;/complex-array>
- * &lt;/process>
+ * &lt;process type="org.eclipse.cdt.core.SetEnvironmentVariable"&gt;
+ * &lt;simple name="projectName" value="$(projectName)"/&gt;
+ * &lt;complex-array name="variables"&gt;
+ * &lt;element&gt;
+ * &lt;simple name="name" value="QMAKE"/&gt;
+ * &lt;simple name="value" value="$(qmake)"/&gt;
+ * &lt;/element&gt;
+ * &lt;/complex-array&gt;
+ * &lt;/process&gt;
* </pre>
* This will create an environment variable called "QMAKE" and will set the value to
* be the value entered in a field (called qmake) in the New Project wizard.
diff --git a/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/internal/core/templateengine/TemplateProcessTypes.java b/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/internal/core/templateengine/TemplateProcessTypes.java
new file mode 100644
index 00000000000..349de48fd1f
--- /dev/null
+++ b/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/internal/core/templateengine/TemplateProcessTypes.java
@@ -0,0 +1,24 @@
+/*******************************************************************************
+ * Copyright (c) 2020 ArSysOp and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.internal.core.templateengine;
+
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.Platform;
+
+public final class TemplateProcessTypes {
+
+ private final String id = "org.eclipse.cdt.core.templateProcessTypes"; //$NON-NLS-1$
+
+ public IExtensionPoint getExtensionPoint() {
+ return Platform.getExtensionRegistry().getExtensionPoint(id);
+ }
+
+}
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/internal/core/Cygwin.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/internal/core/Cygwin.java
index 5b3c977af68..49f3da0bc47 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/internal/core/Cygwin.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/internal/core/Cygwin.java
@@ -19,11 +19,11 @@ import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Collections;
import java.util.Map;
+import java.util.Objects;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.envvar.IEnvironmentVariable;
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
-import org.eclipse.cdt.core.settings.model.util.CDataUtil;
import org.eclipse.cdt.utils.PathUtil;
import org.eclipse.cdt.utils.WindowsRegistry;
import org.eclipse.core.runtime.IPath;
@@ -251,8 +251,8 @@ public class Cygwin {
String envCygwinHomeValue = varCygwinHome != null ? varCygwinHome.getValue() : null;
// isCygwinLocationCached is used to figure fact of caching when all cached objects are null
- if (isCygwinLocationCached && CDataUtil.objectsEqual(envPathValue, envPathValueCached)
- && CDataUtil.objectsEqual(envCygwinHomeValue, envCygwinHomeValueCached)) {
+ if (isCygwinLocationCached && Objects.equals(envPathValue, envPathValueCached)
+ && Objects.equals(envCygwinHomeValue, envCygwinHomeValueCached)) {
return cygwinLocation;
}
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/internal/core/MinGW.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/internal/core/MinGW.java
index 6ac686ba6f0..5a2d1cd604a 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/internal/core/MinGW.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/internal/core/MinGW.java
@@ -16,13 +16,13 @@ package org.eclipse.cdt.internal.core;
import java.io.File;
import java.util.Collections;
import java.util.Map;
+import java.util.Objects;
import java.util.Optional;
import java.util.WeakHashMap;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.envvar.IEnvironmentVariable;
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
-import org.eclipse.cdt.core.settings.model.util.CDataUtil;
import org.eclipse.cdt.utils.PathUtil;
import org.eclipse.cdt.utils.WindowsRegistry;
import org.eclipse.core.runtime.IPath;
@@ -298,8 +298,8 @@ public class MinGW {
// isMinGWLocationCached is used to figure fact of caching when all
// cached objects are null
- if (isMinGWLocationCached && CDataUtil.objectsEqual(envPathValue, envPathValueCached)
- && CDataUtil.objectsEqual(envMinGWHomeValue, envMinGWHomeValueCached)) {
+ if (isMinGWLocationCached && Objects.equals(envPathValue, envPathValueCached)
+ && Objects.equals(envMinGWHomeValue, envMinGWHomeValueCached)) {
return minGWLocation;
}
@@ -337,7 +337,7 @@ public class MinGW {
// isMSysLocationCached is used to figure whether it was cached when all
// cached objects are null
- if (isMSysLocationCached && CDataUtil.objectsEqual(envMinGWHomeValue, envMinGWHomeValueCached_msys)) {
+ if (isMSysLocationCached && Objects.equals(envMinGWHomeValue, envMinGWHomeValueCached_msys)) {
return mSysLocation;
}
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/internal/core/XmlUtil.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/internal/core/XmlUtil.java
index 691319fe9e6..5dda1e8c309 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/internal/core/XmlUtil.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/internal/core/XmlUtil.java
@@ -53,7 +53,7 @@ import org.w3c.dom.NodeList;
public class XmlUtil {
private static final String ENCODING_UTF_8 = "UTF-8"; //$NON-NLS-1$
private static final String EOL_XML = "\n"; //$NON-NLS-1$
- private static final String DEFAULT_IDENT = "\t"; //$NON-NLS-1$
+ private static final String DEFAULT_INDENT = "\t"; //$NON-NLS-1$
private static String LINE_SEPARATOR = System.getProperty("line.separator"); //$NON-NLS-1$
/**
@@ -133,10 +133,15 @@ public class XmlUtil {
* to pretty print XML. This method prepares DOM {@code Document} for the transformer
* to be pretty printed, i.e. providing proper indentations for enclosed tags.
*
+ * Note, while this was originally a workaround, the user community of CDT
+ * has come to expect the format of the .cproject file and others to be
+ * unchanging, therefore CDT always uses this and does not attempt
+ * to format with the Transformer.
+ *
* @param doc - DOM document to be pretty printed
*/
public static void prettyFormat(Document doc) {
- prettyFormat(doc, DEFAULT_IDENT);
+ prettyFormat(doc, DEFAULT_INDENT);
}
/**
@@ -144,14 +149,19 @@ public class XmlUtil {
* to pretty print XML. This method prepares DOM {@code Document} for the transformer
* to be pretty printed, i.e. providing proper indentations for enclosed tags.
*
+ * Note, while this was originally a workaround, the user community of CDT
+ * has come to expect the format of the .cproject file and others to be
+ * unchanging, therefore CDT always uses this and does not attempt
+ * to format with the Transformer.
+ *
* @param doc - DOM document to be pretty printed
- * @param ident - custom indentation as a string of white spaces
+ * @param indent - custom indentation as a string of white spaces
*/
- public static void prettyFormat(Document doc, String ident) {
+ public static void prettyFormat(Document doc, String indent) {
doc.normalize();
Element documentElement = doc.getDocumentElement();
if (documentElement != null) {
- prettyFormat(documentElement, "", ident); //$NON-NLS-1$
+ prettyFormat(documentElement, "", indent); //$NON-NLS-1$
}
}
@@ -159,17 +169,17 @@ public class XmlUtil {
* The method inserts end-of-line+indentation Text nodes where indentation is necessary.
*
* @param node - node to be pretty formatted
- * @param identLevel - initial indentation level of the node
- * @param ident - additional indentation inside the node
+ * @param indentLevel - initial indentation level of the node
+ * @param indent - additional indentation inside the node
*/
- private static void prettyFormat(Node node, String identLevel, String ident) {
+ private static void prettyFormat(Node node, String indentLevel, String indent) {
NodeList nodelist = node.getChildNodes();
int iStart = 0;
Node item = nodelist.item(0);
if (item != null) {
short type = item.getNodeType();
if (type == Node.ELEMENT_NODE || type == Node.COMMENT_NODE) {
- Node newChild = node.getOwnerDocument().createTextNode(EOL_XML + identLevel + ident);
+ Node newChild = node.getOwnerDocument().createTextNode(EOL_XML + indentLevel + indent);
node.insertBefore(newChild, item);
iStart = 1;
}
@@ -180,25 +190,25 @@ public class XmlUtil {
short type = item.getNodeType();
if (type == Node.TEXT_NODE && item.getNodeValue().trim().length() == 0) {
if (i + 1 < nodelist.getLength()) {
- item.setNodeValue(EOL_XML + identLevel + ident);
+ item.setNodeValue(EOL_XML + indentLevel + indent);
} else {
- item.setNodeValue(EOL_XML + identLevel);
+ item.setNodeValue(EOL_XML + indentLevel);
}
} else if (type == Node.ELEMENT_NODE) {
- prettyFormat(item, identLevel + ident, ident);
+ prettyFormat(item, indentLevel + indent, indent);
if (i + 1 < nodelist.getLength()) {
Node nextItem = nodelist.item(i + 1);
if (nextItem != null) {
short nextType = nextItem.getNodeType();
if (nextType == Node.ELEMENT_NODE || nextType == Node.COMMENT_NODE) {
- Node newChild = node.getOwnerDocument().createTextNode(EOL_XML + identLevel + ident);
+ Node newChild = node.getOwnerDocument().createTextNode(EOL_XML + indentLevel + indent);
node.insertBefore(newChild, nextItem);
i++;
continue;
}
}
} else {
- Node newChild = node.getOwnerDocument().createTextNode(EOL_XML + identLevel);
+ Node newChild = node.getOwnerDocument().createTextNode(EOL_XML + indentLevel);
node.appendChild(newChild);
i++;
continue;
@@ -275,22 +285,40 @@ public class XmlUtil {
*
* @param doc - DOM Document to serialize.
* @param uriLocation - URI of the file.
+ *
+ * @throws IOException in case of problems with file I/O
+ * @throws TransformerException in case of problems with XML output
+ */
+ public static void serializeXml(Document doc, URI uriLocation)
+ throws IOException, TransformerException, CoreException {
+ serializeXmlInternal(doc, uriLocation, null);
+ }
+
+ /**
+ * Serialize XML Document into a file.<br/>
+ * Note: clients should synchronize access to this method.
+ *
+ * @param doc - DOM Document to serialize.
+ * @param uriLocation - URI of the file.
* @param lineSeparator - line separator.
+ * Note: This will serialize in pretty format
*
* @throws IOException in case of problems with file I/O
* @throws TransformerException in case of problems with XML output
*/
public static void serializeXml(Document doc, URI uriLocation, String lineSeparator)
throws IOException, TransformerException, CoreException {
- XmlUtil.prettyFormat(doc);
+ serializeXmlInternal(doc, uriLocation, lineSeparator);
+ }
+ private static void serializeXmlInternal(Document doc, URI uriLocation, String lineSeparator)
+ throws IOException, TransformerException, CoreException {
java.io.File storeFile = new java.io.File(uriLocation);
if (!storeFile.exists()) {
storeFile.createNewFile();
}
- String utfString = new String(toByteArray(doc), ENCODING_UTF_8);
- utfString = XmlUtil.replaceLineSeparatorInternal(utfString, lineSeparator);
+ String utfString = lineSeparator != null ? toString(doc, lineSeparator) : toString(doc);
FileOutputStream output = getFileOutputStreamWorkaround(storeFile);
output.write(utfString.getBytes(ENCODING_UTF_8));
@@ -340,14 +368,13 @@ public class XmlUtil {
* @throws CoreException if something goes wrong.
*/
private static byte[] toByteArray(Document doc) throws CoreException {
- XmlUtil.prettyFormat(doc);
-
try {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.METHOD, "xml"); //$NON-NLS-1$
transformer.setOutputProperty(OutputKeys.ENCODING, ENCODING_UTF_8);
- transformer.setOutputProperty(OutputKeys.INDENT, "yes"); //$NON-NLS-1$
+ // Indentation is done with XmlUtil.prettyFormat(doc).
+ transformer.setOutputProperty(OutputKeys.INDENT, "no"); //$NON-NLS-1$
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(stream);
transformer.transform(source, result);
@@ -376,6 +403,30 @@ public class XmlUtil {
}
/**
+ * <b>Do not use outside of CDT.</b>
+ *
+ * This method is used to workaround changing implementations of {@link javax.xml.transform.Transformer}
+ * to maintain the same file content for CDT users. See {@link #prettyFormat(Document)} and Bug 565628
+ *
+ * This method inserts a newline between the <?... xml ... ?> and first tag in the document
+ *
+ * @noreference This method is not intended to be referenced by clients.
+ * This is an internal method which ideally should be made private.
+ */
+ public static String insertNewlineAfterXMLVersionTag(String string, String lineSeparator) {
+ if (string == null) {
+ return null;
+ }
+
+ int indexOf = string.indexOf("?><"); //$NON-NLS-1$
+ if (indexOf < 0 || string.length() < indexOf + 2) {
+ return string;
+ }
+
+ return string.substring(0, indexOf + 2) + lineSeparator + string.substring(indexOf + 2);
+ }
+
+ /**
* Serialize XML Document into a workspace file.<br/>
* Note: clients should synchronize access to this method.
*
@@ -384,12 +435,9 @@ public class XmlUtil {
* @throws CoreException if something goes wrong.
*/
public static void serializeXml(Document doc, IFile file) throws CoreException {
- XmlUtil.prettyFormat(doc);
-
try {
- String utfString = new String(toByteArray(doc), ENCODING_UTF_8);
String lineSeparator = Util.getLineSeparator(file);
- utfString = XmlUtil.replaceLineSeparatorInternal(utfString, lineSeparator);
+ String utfString = toString(doc, lineSeparator);
byte[] newContents = utfString.getBytes(ENCODING_UTF_8);
InputStream input = new ByteArrayInputStream(newContents);
@@ -429,12 +477,36 @@ public class XmlUtil {
/**
* Serialize XML Document into a string.
+ * Note: This will return a non-pretty formatted string
*
* @param doc - DOM Document to serialize.
* @return XML as a String.
* @throws CoreException if something goes wrong.
*/
public static String toString(Document doc) throws CoreException {
- return new String(toByteArray(doc));
+ try {
+ return new String(toByteArray(doc), ENCODING_UTF_8);
+ } catch (UnsupportedEncodingException e) {
+ throw new CoreException(CCorePlugin.createStatus(Messages.XmlUtil_InternalErrorSerializing, e));
+ }
+ }
+
+ /**
+ * Serialize XML Document into a pretty formatted string.
+ * Note: This will return a pretty formatted string
+ *
+ * @param doc - DOM Document to serialize.
+ * @param lineSeparator - line separator
+ * @return XML as a pretty formatted String.
+ * @throws CoreException if something goes wrong.
+ */
+ public static String toString(Document doc, String lineSeparator) throws CoreException {
+ XmlUtil.prettyFormat(doc);
+
+ String utfString = toString(doc);
+ utfString = XmlUtil.replaceLineSeparatorInternal(utfString, lineSeparator);
+ utfString = XmlUtil.insertNewlineAfterXMLVersionTag(utfString, lineSeparator);
+
+ return utfString;
}
}
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/AR.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/AR.java
index b7ddf28feb8..5cdc825377d 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/AR.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/AR.java
@@ -30,13 +30,18 @@ import org.eclipse.cdt.core.CCorePlugin;
* class operations.
* @see ARHeader
*/
-public class AR {
+public class AR implements AutoCloseable {
protected String filename;
protected ERandomAccessFile efile;
protected long strtbl_pos = -1;
private ARHeader[] headers;
+ @Override
+ public void close() {
+ dispose();
+ }
+
public void dispose() {
try {
if (efile != null) {
@@ -197,11 +202,10 @@ public class AR {
efile.seek(obj_offset);
efile.read(temp);
} else {
- efile = new ERandomAccessFile(filename, "r"); //$NON-NLS-1$
- efile.seek(obj_offset);
- efile.read(temp);
- efile.close();
- efile = null;
+ try (ERandomAccessFile tempfile = new ERandomAccessFile(filename, "r")) { //$NON-NLS-1$
+ tempfile.seek(obj_offset);
+ tempfile.read(temp);
+ }
}
return temp;
}
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/Addr32Factory.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/Addr32Factory.java
index 41ae8f30745..5eb844b6ad3 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/Addr32Factory.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/Addr32Factory.java
@@ -20,65 +20,41 @@ import org.eclipse.cdt.core.IAddressFactory2;
public class Addr32Factory implements IAddressFactory2 {
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IAddressFactory#getZero()
- */
@Override
public IAddress getZero() {
return Addr32.ZERO;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IAddressFactory#getMax()
- */
@Override
public IAddress getMax() {
return Addr32.MAX;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IAddressFactory#createAddress(java.lang.String)
- */
@Override
public IAddress createAddress(String addr) {
return createAddress(addr, true);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IAddressFactory2#createAddress(java.lang.String, boolean)
- */
@Override
public IAddress createAddress(String addr, boolean truncate) {
return new Addr32(addr, truncate);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IAddressFactory#createAddress(java.lang.String, int)
- */
@Override
public IAddress createAddress(String addr, int radix) {
return createAddress(addr, radix, true);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IAddressFactory2#createAddress(java.lang.String, int, boolean)
- */
@Override
public IAddress createAddress(String addr, int radix, boolean truncate) {
return new Addr32(addr, radix, truncate);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IAddressFactory#createAddress(java.math.BigInteger)
- */
@Override
public IAddress createAddress(BigInteger addr) {
return createAddress(addr, true);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IAddressFactory2#createAddress(java.math.BigInteger, boolean)
- */
@Override
public IAddress createAddress(BigInteger addr, boolean truncate) {
return new Addr32(addr.longValue(), truncate);
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/Addr64Factory.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/Addr64Factory.java
index 7477ade9b47..a03b91a3be4 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/Addr64Factory.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/Addr64Factory.java
@@ -20,65 +20,41 @@ import org.eclipse.cdt.core.IAddressFactory2;
public class Addr64Factory implements IAddressFactory2 {
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IAddressFactory#getZero()
- */
@Override
public IAddress getZero() {
return Addr64.ZERO;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IAddressFactory#getMax()
- */
@Override
public IAddress getMax() {
return Addr64.MAX;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IAddressFactory#createAddress(java.lang.String)
- */
@Override
public IAddress createAddress(String addr) {
return createAddress(addr, true);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IAddressFactory2#createAddress(java.lang.String, boolean)
- */
@Override
public IAddress createAddress(String addr, boolean truncate) {
return new Addr64(addr, truncate);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IAddressFactory#createAddress(java.lang.String, int)
- */
@Override
public IAddress createAddress(String addr, int radix) {
return createAddress(addr, radix, true);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IAddressFactory2#createAddress(java.lang.String, int, boolean)
- */
@Override
public IAddress createAddress(String addr, int radix, boolean truncate) {
return new Addr64(addr, radix, truncate);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IAddressFactory#createAddress(java.math.BigInteger)
- */
@Override
public IAddress createAddress(BigInteger addr) {
return createAddress(addr, true);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IAddressFactory2#createAddress(java.math.BigInteger, boolean)
- */
@Override
public IAddress createAddress(BigInteger addr, boolean truncate) {
return new Addr64(addr, truncate);
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/BinaryObjectAdapter.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/BinaryObjectAdapter.java
index fa8489d8a6d..8e6cfb4892d 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/BinaryObjectAdapter.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/BinaryObjectAdapter.java
@@ -48,9 +48,6 @@ public abstract class BinaryObjectAdapter extends BinaryFile implements IBinaryO
super(parser, path, type);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IBinaryParser.IBinaryObject#getSymbol(long)
- */
@Override
public ISymbol getSymbol(IAddress addr) {
ISymbol[] syms = getSymbols();
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/CommandLineUtil.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/CommandLineUtil.java
index 7d481c5fb48..5d91d7faa10 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/CommandLineUtil.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/CommandLineUtil.java
@@ -16,6 +16,7 @@ package org.eclipse.cdt.utils;
import java.util.ArrayList;
+import org.eclipse.core.runtime.Platform;
import org.eclipse.osgi.service.environment.Constants;
/**
@@ -49,11 +50,11 @@ public class CommandLineUtil {
* Parsing arguments in a shell style. i.e.
*
* <pre>
- * ["a b c" d] -> [[a b c],[d]]
- * [a d] -> [[a],[d]]
- * ['"quoted"'] -> [["quoted"]]
- * [\\ \" \a] -> [[\],["],[a]]
- * ["str\\str\a"] -> [[str\str\a]]
+ * ["a b c" d] -&gt; [[a b c],[d]]
+ * [a d] -&gt; [[a],[d]]
+ * ['"quoted"'] -&gt; [["quoted"]]
+ * [\\ \" \a] -&gt; [[\],["],[a]]
+ * ["str\\str\a"] -&gt; [[str\str\a]]
* </pre>
*
* @param line
@@ -165,11 +166,11 @@ public class CommandLineUtil {
* Parsing arguments in a cmd style. i.e.
*
* <pre>
- * ["a b c" d] -> [[a b c],[d]]
- * [a d] -> [[a],[d]]
- * ['"quoted"'] -> [['quoted']]
- * [\\ \" \a] -> [[\\],["],[\a]]
- * ["str\\str\a"] -> [[str\\str\a]]
+ * ["a b c" d] -&gt; [[a b c],[d]]
+ * [a d] -&gt; [[a],[d]]
+ * ['"quoted"'] -&gt; [['quoted']]
+ * [\\ \" \a] -&gt; [[\\],["],[\a]]
+ * ["str\\str\a"] -&gt; [[str\\str\a]]
* </pre>
*
* @param line
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/DefaultGnuToolFactory.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/DefaultGnuToolFactory.java
index 45f193cc385..ff46be844b3 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/DefaultGnuToolFactory.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/DefaultGnuToolFactory.java
@@ -23,16 +23,10 @@ import org.eclipse.core.runtime.Path;
public class DefaultGnuToolFactory implements IGnuToolFactory {
protected ICExtension fExtension;
- /**
- *
- */
public DefaultGnuToolFactory(ICExtension ext) {
fExtension = ext;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.utils.IGnuToolProvider#getAddr2line(org.eclipse.core.runtime.IPath)
- */
@Override
public Addr2line getAddr2line(IPath path) {
IPath addr2LinePath = getAddr2linePath();
@@ -46,9 +40,6 @@ public class DefaultGnuToolFactory implements IGnuToolFactory {
return addr2line;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.utils.IGnuToolProvider#getCPPFilt()
- */
@Override
public CPPFilt getCPPFilt() {
IPath cppFiltPath = getCPPFiltPath();
@@ -62,9 +53,6 @@ public class DefaultGnuToolFactory implements IGnuToolFactory {
return cppfilt;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.utils.IGnuToolProvider#getObjdump(org.eclipse.core.runtime.IPath)
- */
@Override
public Objdump getObjdump(IPath path) {
IPath objdumpPath = getObjdumpPath();
@@ -79,9 +67,6 @@ public class DefaultGnuToolFactory implements IGnuToolFactory {
return objdump;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.utils.IGnuToolProvider#getObjdump(org.eclipse.core.runtime.IPath)
- */
@Override
public NM getNM(IPath path) {
IPath nmPath = getNMPath();
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/ERandomAccessFile.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/ERandomAccessFile.java
index c88dba345c9..24c53c89d69 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/ERandomAccessFile.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/ERandomAccessFile.java
@@ -17,6 +17,7 @@ import java.io.EOFException;
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
+import java.nio.ByteOrder;
/**
* @noextend This class is not intended to be subclassed by clients.
@@ -25,13 +26,15 @@ public class ERandomAccessFile extends RandomAccessFile {
private boolean isle;
private long ptr_offset;
int val[] = new int[4];
+ private final String path;
public ERandomAccessFile(String file, String mode) throws IOException {
super(file, mode);
+ path = file;
}
public ERandomAccessFile(File file, String mode) throws IOException {
- super(file, mode);
+ this(file.getPath(), mode);
}
public void setEndian(boolean le) {
@@ -100,6 +103,14 @@ public class ERandomAccessFile extends RandomAccessFile {
super.seek(offset);
}
+ /**
+ * Get the path of the file reader
+ * @since 7.0
+ */
+ public String getPath() {
+ return path;
+ }
+
@Override
public long getFilePointer() throws IOException {
long ptr = super.getFilePointer();
@@ -112,4 +123,13 @@ public class ERandomAccessFile extends RandomAccessFile {
long real_pos = pos + ptr_offset;
super.seek(real_pos);
}
+
+ /**
+ * Get the byte order of the file
+ * @return {@link ByteOrder#LITTLE_ENDIAN} or {@link ByteOrder#BIG_ENDIAN}
+ * @since 7.0
+ */
+ public ByteOrder order() {
+ return isle ? ByteOrder.LITTLE_ENDIAN : ByteOrder.BIG_ENDIAN;
+ }
}
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/Platform.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/Platform.java
deleted file mode 100644
index cedac0fa86f..00000000000
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/Platform.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2011 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - Initial API and implementation (Corey Ashford)
- * Anton Leherbauer (Wind River Systems)
- * Markus Schorn (Wind River Systems)
- *******************************************************************************/
-
-package org.eclipse.cdt.utils;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
-
-import org.eclipse.cdt.core.CCorePlugin;
-import org.osgi.framework.Bundle;
-
-/**
- * @noinstantiate This class is not intended to be instantiated by clients.
- */
-public final class Platform {
-
- // This class duplicates all of the methods in org.eclipse.core.runtime.Platform
- // that are used by the CDT. getOSArch() needs a few tweaks because the value returned
- // by org.eclipse.core.runtime.Platform.getOSArch represents what the JVM thinks the
- // architecture is. In some cases, we may actually be running on a 64-bit machine,
- // but the JVM thinks it's running on a 32-bit machine. Without this change, the CDT
- // will not handle 64-bit executables on some ppc64. This method could easily be
- // extended to handle other platforms with similar issues.
- //
- // Unfortunately, the org.eclipse.core.runtime.Platform is final, so we cannot just
- // extend it and and then override the getOSArch method, so getBundle and getOS just
- // encapsulate calls to the same methods in org.eclipse.core.runtime.Platform.
-
- public static final String OS_LINUX = org.eclipse.core.runtime.Platform.OS_LINUX;
-
- private static String cachedArch = null;
-
- public static Bundle getBundle(String symbolicName) {
- return org.eclipse.core.runtime.Platform.getBundle(symbolicName);
- }
-
- public static String getOS() {
- return org.eclipse.core.runtime.Platform.getOS();
- }
-
- public static String getOSArch() {
- if (cachedArch == null) {
- String arch = org.eclipse.core.runtime.Platform.getOSArch();
- if (arch.equals(org.eclipse.core.runtime.Platform.ARCH_PPC)) {
- // Determine if the platform is actually a ppc64 machine
- Process unameProcess;
- String cmd[] = { "uname", "-p" }; //$NON-NLS-1$//$NON-NLS-2$
-
- try {
- unameProcess = Runtime.getRuntime().exec(cmd);
-
- InputStreamReader inputStreamReader = new InputStreamReader(unameProcess.getInputStream());
- BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
- String unameOutput = bufferedReader.readLine();
- if (unameOutput != null) {
- arch = unameOutput;
- }
- bufferedReader.close();
- unameProcess.waitFor(); // otherwise the process becomes a zombie
- } catch (IOException e) {
- CCorePlugin.log(e);
- } catch (InterruptedException exc) {
- // restore interrupted flag
- Thread.currentThread().interrupt();
- }
- } else if (arch.equals(org.eclipse.core.runtime.Platform.ARCH_X86)) {
- // Determine if the platform is actually a x86_64 machine
- Process unameProcess;
- String cmd[];
- if (org.eclipse.core.runtime.Platform.OS_WIN32.equals(getOS())) {
- cmd = new String[] { "cmd", "/d", "/c", "set", "PROCESSOR_ARCHITECTURE" }; //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
- } else {
- // We don't use "uname -p" since it returns "unknown" on some Linux systems.
- cmd = new String[] { "uname", "-m" }; //$NON-NLS-1$//$NON-NLS-2$
- }
-
- try {
- unameProcess = Runtime.getRuntime().exec(cmd);
- unameProcess.getOutputStream().close();
- unameProcess.getErrorStream().close();
- InputStreamReader inputStreamReader = new InputStreamReader(unameProcess.getInputStream());
- BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
- String unameOutput = bufferedReader.readLine();
- if (unameOutput != null && unameOutput.endsWith("64")) { //$NON-NLS-1$
- arch = org.eclipse.core.runtime.Platform.ARCH_X86_64;
- }
- bufferedReader.close();
- unameProcess.waitFor(); // otherwise the process becomes a zombie
- } catch (IOException e) {
- CCorePlugin.log(e);
- } catch (InterruptedException exc) {
- // restore interrupted flag
- Thread.currentThread().interrupt();
- }
- }
- cachedArch = arch;
- }
- return cachedArch;
- }
-}
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/Symbol.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/Symbol.java
index 29e603b099e..381365fcaf3 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/Symbol.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/Symbol.java
@@ -53,33 +53,21 @@ public class Symbol implements ISymbol {
this.sourceFile = null;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IBinaryParser.ISymbol#getBinarObject()
- */
@Override
public IBinaryObject getBinaryObject() {
return binary;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IBinaryParser.ISymbol#getFilename()
- */
@Override
public IPath getFilename() {
return sourceFile;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IBinaryParser.ISymbol#getName()
- */
@Override
public String getName() {
return name;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IBinaryParser.ISymbol#getType()
- */
@Override
public int getType() {
return type;
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/cdtvariables/CdtVariableResolver.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/cdtvariables/CdtVariableResolver.java
index 6c720512b5d..2138b69dfd1 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/cdtvariables/CdtVariableResolver.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/cdtvariables/CdtVariableResolver.java
@@ -62,21 +62,14 @@ public class CdtVariableResolver {
private static final String EMPTY_STRING = ""; //$NON-NLS-1$
public static final String VARIABLE_PREFIX = "${"; //$NON-NLS-1$
- private static final String VARIABLE_PREFIX_MASKED = "$\1"; //$NON-NLS-1$
public static final char VARIABLE_SUFFIX = '}';
- private static final char VARIABLE_SUFFIX_MASKED = '\2';
- public static final char VARIABLE_ESCAPE_CHAR = '\\';
- private static final char VARIABLE_ESCAPE_CHAR_MASKED = '\3';
-
- // Regular expression fragments
private static final String RE_VPREFIX = "\\$\\{"; //$NON-NLS-1$
private static final String RE_VSUFFIX = "\\}"; //$NON-NLS-1$
private static final String RE_VNAME = "[^${}]*"; //$NON-NLS-1$
- private static final String RE_BSLASH = "[\\\\]"; // *one* backslash //$NON-NLS-1$
/**
* Converts list of strings to one string using given string as delimiter,
- * i.e -> "string1:string2:string3"
+ * i.e -&gt; "string1:string2:string3"
*
* @param value - list of strings to convert.
* @param listDelimiter - delimiter.
@@ -99,8 +92,11 @@ public class CdtVariableResolver {
/**
* Resolves macros of kind ${Macro} in the given string by calling the macro substitutor
* for each macro reference found. Macros can be inside one another like
- * ${workspace_loc:/${ProjName}/} but resolved just once. No recursive or concatenated
- * macro names are allowed. It is possible to prevent macro from expanding using backslash \$.
+ * ${workspace_loc:/${ProjName}/} but resolved just once. No recursive
+ * macro names are allowed.
+ * It is not possible to prevent macros from expanding.
+ * For historical reasons (See Bug 571472), macros that are multi-line according to
+ * {@link Pattern}'s Line Terminators are not expanded.
*
* @param string - macro expression.
* @param substitutor - macro resolution provider to retrieve macro values.
@@ -112,44 +108,42 @@ public class CdtVariableResolver {
if (string == null) {
return EMPTY_STRING;
}
+ // Bug 571472 to match historical behaviour, don't substitute multi-line strings
+ for (char ch : string.toCharArray()) {
+ if (ch == '\n' || ch == '\r' || (ch | 1) == '\u2029' || ch == '\u0085') {
+ return string;
+ }
+ }
- final Pattern pattern = Pattern
- .compile(".*?(" + RE_BSLASH + "*)(" + RE_VPREFIX + "(" + RE_VNAME + ")" + RE_VSUFFIX + ").*"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
+ final Pattern pattern = Pattern.compile("(\\$\\{([^${}]*)\\})"); //$NON-NLS-1$
+ final String VARIABLE_PREFIX_MASKED = "$\1"; //$NON-NLS-1$
+ final char VARIABLE_SUFFIX_MASKED = '\2';
StringBuilder buffer = new StringBuilder(string);
int limit = string.length();
- for (Matcher matcher = pattern.matcher(buffer); matcher.matches(); matcher = pattern.matcher(buffer)) {
- String bSlashes = matcher.group(1);
- String macro = matcher.group(2);
- String name = matcher.group(3);
+ Matcher matcher = pattern.matcher(buffer);
+ while (matcher.find()) {
+ String name = matcher.group(2);
String resolved = name.length() > 0 ? substitutor.resolveToString(name) : EMPTY_STRING;
if (resolved == null) {
throw new CdtVariableException(ICdtVariableStatus.TYPE_MACRO_UNDEFINED, null, string, name);
}
- if (limit-- < 0) {
- // to prevent incidental looping
- throw new CdtVariableException(ICdtVariableStatus.TYPE_ERROR, name, matcher.group(0), resolved);
- }
- int nBSlashes = bSlashes.length();
- if ((nBSlashes & 1) == 1) {
- // if odd number of backslashes in front of "${...}" do not expand macro
- resolved = macro;
+ if (limit-- < 0) {
+ // to prevent incidental endless looping
+ throw new CdtVariableException(ICdtVariableStatus.TYPE_ERROR, name, string, resolved);
}
// Only one expansion is allowed, so hide any text interfering with macro syntax
resolved = resolved.replace(VARIABLE_PREFIX, VARIABLE_PREFIX_MASKED);
resolved = resolved.replace(VARIABLE_SUFFIX, VARIABLE_SUFFIX_MASKED);
- buffer.replace(matcher.start(2), matcher.end(2), resolved);
- // collapse and hide backslashes \\\\${Macro} -> \\MacroValue or \\\\\${Macro} -> \\${Macro}
- buffer.replace(matcher.start(1), matcher.end(1),
- bSlashes.substring(0, nBSlashes / 2).replace(VARIABLE_ESCAPE_CHAR, VARIABLE_ESCAPE_CHAR_MASKED));
+
+ buffer.replace(matcher.start(1), matcher.end(1), resolved);
+ matcher = pattern.matcher(buffer);
}
String result = buffer.toString();
-
// take hidden data back
result = result.replace(VARIABLE_PREFIX_MASKED, VARIABLE_PREFIX);
result = result.replace(VARIABLE_SUFFIX_MASKED, VARIABLE_SUFFIX);
- result = result.replace(VARIABLE_ESCAPE_CHAR_MASKED, VARIABLE_ESCAPE_CHAR);
return result;
}
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/cdtvariables/SupplierBasedCdtVariableSubstitutor.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/cdtvariables/SupplierBasedCdtVariableSubstitutor.java
index c0aa1d2a457..a7966ebe148 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/cdtvariables/SupplierBasedCdtVariableSubstitutor.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/cdtvariables/SupplierBasedCdtVariableSubstitutor.java
@@ -62,9 +62,6 @@ public class SupplierBasedCdtVariableSubstitutor implements IVariableSubstitutor
fIsList = true;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.macros.IBuildMacro#getStringValue()
- */
@Override
public String getStringValue() throws CdtVariableException {
// if(!fIsDefined)
@@ -74,9 +71,6 @@ public class SupplierBasedCdtVariableSubstitutor implements IVariableSubstitutor
return fStringValue;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.macros.IBuildMacro#getStringListValue()
- */
@Override
public String[] getStringListValue() throws CdtVariableException {
// if(!fIsDefined)
@@ -235,9 +229,6 @@ public class SupplierBasedCdtVariableSubstitutor implements IVariableSubstitutor
return result;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.internal.macros.IMacroSubstitutor#resolveToString(java.lang.String)
- */
@Override
public String resolveToString(String macroName) throws CdtVariableException {
return resolveToString(new MacroDescriptor(macroName, fContextInfo));
@@ -274,9 +265,6 @@ public class SupplierBasedCdtVariableSubstitutor implements IVariableSubstitutor
return des.fMacro != null ? resolveMacro(des.fMacro) : resolveMacro(des.fName);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.internal.macros.IMacroSubstitutor#resolveToStringList(java.lang.String)
- */
@Override
public String[] resolveToStringList(String macroName) throws CdtVariableException {
return resolveToStringList(new MacroDescriptor(macroName, fContextInfo));
@@ -419,9 +407,6 @@ public class SupplierBasedCdtVariableSubstitutor implements IVariableSubstitutor
return fResolvedMacros.remove(name);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.internal.macros.IMacroSubstitutor#getMacroContextInfo()
- */
public IVariableContextInfo getMacroContextInfo() {
return fContextInfo;
}
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/Coff.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/Coff.java
index 28169a3e5db..9ad619ea61a 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/Coff.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/Coff.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2016 QNX Software Systems and others.
+ * Copyright (c) 2000, 2020 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -10,6 +10,7 @@
*
* Contributors:
* QNX Software Systems - Initial API and implementation
+ * Alexander Fedorov (ArSysOp) - Bug 561992
*******************************************************************************/
package org.eclipse.cdt.utils.coff;
@@ -18,16 +19,15 @@ import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel.MapMode;
+import java.text.DateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.eclipse.cdt.core.CCorePlugin;
-import com.ibm.icu.text.DateFormat;
-
/**
- * @deprecated. Deprecated as of CDT 6.9. Use 64 bit version {@link Coff64}.
+ * @deprecated Deprecated as of CDT 6.9. Use 64 bit version {@link Coff64}.
* This class is planned for removal in next major release.
*/
@Deprecated
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/Coff64.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/Coff64.java
index 1530253c767..3cd29d76e47 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/Coff64.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/Coff64.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2019 Space Codesign Systems and others.
+ * Copyright (c) 2000, 2020 Space Codesign Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -11,6 +11,7 @@
* Contributors:
* Space Codesign Systems - Initial API and implementation
* QNX Software Systems - Initial Coff class
+ * Alexander Fedorov (ArSysOp) - Bug 561992
*******************************************************************************/
package org.eclipse.cdt.utils.coff;
@@ -19,14 +20,13 @@ import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel.MapMode;
+import java.text.DateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.eclipse.cdt.core.CCorePlugin;
-import com.ibm.icu.text.DateFormat;
-
/**
* @since 6.9
*/
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/Exe.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/Exe.java
index 784128ee734..85205e19620 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/Exe.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/Exe.java
@@ -18,11 +18,12 @@ import java.io.RandomAccessFile;
import org.eclipse.cdt.core.CCorePlugin;
-public class Exe {
+public class Exe implements AutoCloseable {
public static final String NL = System.getProperty("line.separator", "\n"); //$NON-NLS-1$ //$NON-NLS-2$
protected RandomAccessFile rfile;
ExeHeader ehdr;
+ private String file;
static public class ExeHeader {
@@ -160,12 +161,13 @@ public class Exe {
@Override
public String toString() {
StringBuilder buffer = new StringBuilder();
- buffer.append(rfile).append(NL);
+ buffer.append(file).append(NL);
buffer.append(ehdr);
return buffer.toString();
}
public Exe(String file) throws IOException {
+ this.file = file;
rfile = new RandomAccessFile(file, "r"); //$NON-NLS-1$
try {
ehdr = new ExeHeader(rfile);
@@ -176,6 +178,15 @@ public class Exe {
}
}
+ @Override
+ public void close() throws Exception {
+ if (rfile != null) {
+ rfile.close();
+ rfile = null;
+ ehdr = null;
+ }
+ }
+
public static void main(String[] args) {
try {
Exe exe = new Exe(args[0]);
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/PE.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/PE.java
index e8b55c744db..f9e3c00c689 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/PE.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/PE.java
@@ -69,11 +69,11 @@ import org.eclipse.cdt.utils.debug.stabs.StabsReader;
*/
/**
- * @deprecated. Deprecated as of CDT 6.9. Use 64 bit version {@link PE64}.
+ * @deprecated Deprecated as of CDT 6.9. Use 64 bit version {@link PE64}.
* This class is planned for removal in next major release.
*/
@Deprecated
-public class PE {
+public class PE implements AutoCloseable {
public static final String NL = System.getProperty("line.separator", "\n"); //$NON-NLS-1$ //$NON-NLS-2$
RandomAccessFile rfile;
@@ -573,10 +573,14 @@ public class PE {
}
public static Attribute getAttribute(String file) throws IOException {
- PE pe = new PE(file);
- Attribute attrib = pe.getAttribute();
- pe.dispose();
- return attrib;
+ try (PE pe = new PE(file)) {
+ return pe.getAttribute();
+ }
+ }
+
+ @Override
+ public void close() throws IOException {
+ dispose();
}
public void dispose() throws IOException {
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/PE64.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/PE64.java
index 6585605a7cf..5e4d8a4ba17 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/PE64.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/PE64.java
@@ -68,7 +68,7 @@ import org.eclipse.cdt.utils.debug.stabs.StabsReader;
* </pre>
* @since 6.9
*/
-public class PE64 {
+public class PE64 implements AutoCloseable {
public static final String NL = System.getProperty("line.separator", "\n"); //$NON-NLS-1$ //$NON-NLS-2$
RandomAccessFile rfile;
@@ -667,10 +667,14 @@ public class PE64 {
}
public static Attribute getAttribute(String file) throws IOException {
- PE64 pe = new PE64(file);
- Attribute attrib = pe.getAttribute();
- pe.dispose();
- return attrib;
+ try (PE64 pe = new PE64(file)) {
+ return pe.getAttribute();
+ }
+ }
+
+ @Override
+ public void close() throws IOException {
+ dispose();
}
public void dispose() throws IOException {
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/PEArchive.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/PEArchive.java
index 226ee4d8cd5..33a26f029ae 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/PEArchive.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/PEArchive.java
@@ -30,13 +30,18 @@ import org.eclipse.cdt.core.CCorePlugin;
* @see ARHeader
*/
@Deprecated
-public class PEArchive {
+public class PEArchive implements AutoCloseable {
protected String filename;
protected RandomAccessFile rfile;
protected long strtbl_pos = -1;
private ARHeader[] headers;
+ @Override
+ public void close() {
+ dispose();
+ }
+
public void dispose() {
try {
if (rfile != null) {
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/CygwinPEBinaryArchive.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/CygwinPEBinaryArchive.java
index b5bb34ffefe..5f90c00410d 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/CygwinPEBinaryArchive.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/CygwinPEBinaryArchive.java
@@ -21,7 +21,7 @@ import org.eclipse.cdt.utils.AR.ARHeader;
import org.eclipse.core.runtime.IPath;
/**
- * @deprecated. Deprecated as of CDT 6.9. Use 64 bit version {@link CygwinPEBinaryArchive64}.
+ * @deprecated Deprecated as of CDT 6.9. Use 64 bit version {@link CygwinPEBinaryArchive64}.
* This class is planned for removal in next major release.
*/
@Deprecated
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/CygwinPEBinaryExecutable.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/CygwinPEBinaryExecutable.java
index 3290f748a74..27853d19c1d 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/CygwinPEBinaryExecutable.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/CygwinPEBinaryExecutable.java
@@ -19,7 +19,7 @@ import org.eclipse.cdt.core.IBinaryParser.IBinaryFile;
import org.eclipse.core.runtime.IPath;
/**
- * @deprecated. Deprecated as of CDT 6.9. Use 64 bit version {@link CygwinPEBinaryExecutable64}.
+ * @deprecated Deprecated as of CDT 6.9. Use 64 bit version {@link CygwinPEBinaryExecutable64}.
* This class is planned for removal in next major release.
*/
@Deprecated
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/CygwinPEBinaryObject.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/CygwinPEBinaryObject.java
index 695bffeb5fe..20c5de6ac8c 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/CygwinPEBinaryObject.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/CygwinPEBinaryObject.java
@@ -38,11 +38,8 @@ import org.eclipse.cdt.utils.coff.PE;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
-/*
- * CygwinPEBinaryObject
- */
/**
- * @deprecated. Deprecated as of CDT 6.9. Use 64 bit version {@link CygwinPEBinaryObject64}.
+ * @deprecated Deprecated as of CDT 6.9. Use 64 bit version {@link CygwinPEBinaryObject64}.
* This class is planned for removal in next major release.
*/
@Deprecated
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/CygwinPEBinaryShared.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/CygwinPEBinaryShared.java
index 32d1748f311..8c0faeb0750 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/CygwinPEBinaryShared.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/CygwinPEBinaryShared.java
@@ -19,7 +19,7 @@ import org.eclipse.cdt.core.IBinaryParser.IBinaryShared;
import org.eclipse.core.runtime.IPath;
/**
- * @deprecated. Deprecated as of CDT 6.9. Use 64 bit version {@link CygwinPEBinaryShared64}.
+ * @deprecated Deprecated as of CDT 6.9. Use 64 bit version {@link CygwinPEBinaryShared64}.
* This class is planned for removal in next major release.
*/
@Deprecated
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/CygwinPEParser.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/CygwinPEParser.java
index 04085df9239..d44b19231c2 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/CygwinPEParser.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/CygwinPEParser.java
@@ -21,7 +21,7 @@ import org.eclipse.cdt.utils.ICygwinToolsFactroy;
import org.eclipse.core.runtime.IPath;
/**
- * @deprecated. Deprecated as of CDT 6.9. Use 64 bit version {@link CygwinPEParser64}.
+ * @deprecated Deprecated as of CDT 6.9. Use 64 bit version {@link CygwinPEParser64}.
* This class is planned for removal in next major release.
*/
@Deprecated
@@ -66,17 +66,13 @@ public class CygwinPEParser extends PEParser {
return new DefaultCygwinToolFactory(this);
}
- /* (non-Javadoc)
- * @see org.eclipse.core.runtime.PlatformObject#getAdapter(java.lang.Class)
- */
- @SuppressWarnings({ "unchecked", "rawtypes" })
@Override
- public Object getAdapter(Class adapter) {
+ public <T> T getAdapter(Class<T> adapter) {
if (adapter.isAssignableFrom(ICygwinToolsFactroy.class)) {
if (toolFactory == null) {
toolFactory = createToolFactory();
}
- return toolFactory;
+ return adapter.cast(toolFactory);
}
return super.getAdapter(adapter);
}
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/CygwinPEParser64.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/CygwinPEParser64.java
index 3cd81bd001b..2bfa013b3df 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/CygwinPEParser64.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/CygwinPEParser64.java
@@ -64,17 +64,13 @@ public class CygwinPEParser64 extends PEParser64 {
return new DefaultCygwinToolFactory(this);
}
- /* (non-Javadoc)
- * @see org.eclipse.core.runtime.PlatformObject#getAdapter(java.lang.Class)
- */
- @SuppressWarnings({ "unchecked", "rawtypes" })
@Override
- public Object getAdapter(Class adapter) {
+ public <T> T getAdapter(Class<T> adapter) {
if (adapter.isAssignableFrom(ICygwinToolsFactroy.class)) {
if (toolFactory == null) {
toolFactory = createToolFactory();
}
- return toolFactory;
+ return adapter.cast(toolFactory);
}
return super.getAdapter(adapter);
}
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/CygwinSymbol.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/CygwinSymbol.java
index cbe080d2a9f..3aae202adda 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/CygwinSymbol.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/CygwinSymbol.java
@@ -27,13 +27,7 @@ import org.eclipse.cdt.utils.Symbol;
import org.eclipse.core.runtime.IPath;
/**
- * @author DInglis
- *
- * To change the template for this generated type comment go to
- * Window>Preferences>Java>Code Generation>Code and Comments
- */
-/**
- * @deprecated. Deprecated as of CDT 6.9. Use 64 bit version {@link CygwinSymbol64}.
+ * @deprecated Deprecated as of CDT 6.9. Use 64 bit version {@link CygwinSymbol64}.
* This class is planned for removal in next major release.
*/
@Deprecated
@@ -65,9 +59,6 @@ class CygwinSymbol extends Symbol {
super(binary, name, type, addr, size);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.utils.Symbol#getLineNumber(long)
- */
@Override
public int getLineNumber(long offset) {
int line = -1;
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/CygwinSymbol64.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/CygwinSymbol64.java
index a279918ab2c..e4bb287d347 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/CygwinSymbol64.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/CygwinSymbol64.java
@@ -61,9 +61,6 @@ class CygwinSymbol64 extends Symbol {
super(binary, name, type, addr, size);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.utils.Symbol#getLineNumber(long)
- */
@Override
public int getLineNumber(long offset) {
int line = -1;
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/PEBinaryArchive.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/PEBinaryArchive.java
index 9040b0523ba..8d833997de2 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/PEBinaryArchive.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/PEBinaryArchive.java
@@ -25,7 +25,7 @@ import org.eclipse.cdt.utils.BinaryFile;
import org.eclipse.core.runtime.IPath;
/**
- * @deprecated. Deprecated as of CDT 6.9. Use 64 bit version {@link PEBinaryArchive64}.
+ * @deprecated Deprecated as of CDT 6.9. Use 64 bit version {@link PEBinaryArchive64}.
* This class is planned for removal in next major release.
*/
@Deprecated
@@ -35,7 +35,9 @@ public class PEBinaryArchive extends BinaryFile implements IBinaryArchive {
public PEBinaryArchive(PEParser parser, IPath path) throws IOException {
super(parser, path, IBinaryFile.ARCHIVE);
- new AR(path.toOSString()).dispose(); // check file type
+ try (AR ar = new AR(path.toOSString())) {
+ // create the object just to check file type
+ }
children = new ArrayList<>(5);
}
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/PEBinaryArchive64.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/PEBinaryArchive64.java
index d4aa241357e..c37b4774506 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/PEBinaryArchive64.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/PEBinaryArchive64.java
@@ -34,7 +34,9 @@ public class PEBinaryArchive64 extends BinaryFile implements IBinaryArchive {
public PEBinaryArchive64(PEParser64 parser, IPath path) throws IOException {
super(parser, path, IBinaryFile.ARCHIVE);
- new AR(path.toOSString()).dispose(); // check file type
+ try (AR ar = new AR(path.toOSString())) {
+ // create the object just to check file type
+ }
children = new ArrayList<>(5);
}
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/PEBinaryExecutable.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/PEBinaryExecutable.java
index 6bded3149a2..7a79a6d1486 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/PEBinaryExecutable.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/PEBinaryExecutable.java
@@ -19,7 +19,7 @@ import org.eclipse.cdt.core.IBinaryParser.IBinaryFile;
import org.eclipse.core.runtime.IPath;
/**
- * @deprecated. Deprecated as of CDT 6.9. Use 64 bit version {@link PEBinaryExecutable64}.
+ * @deprecated Deprecated as of CDT 6.9. Use 64 bit version {@link PEBinaryExecutable64}.
* This class is planned for removal in next major release.
*/
@Deprecated
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/PEBinaryObject.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/PEBinaryObject.java
index 24446c71122..9f7fd4e81fc 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/PEBinaryObject.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/PEBinaryObject.java
@@ -35,7 +35,7 @@ import org.eclipse.cdt.utils.coff.PE;
import org.eclipse.core.runtime.IPath;
/**
- * @deprecated. Deprecated as of CDT 6.9. Use 64 bit version {@link PEBinaryObject64}.
+ * @deprecated Deprecated as of CDT 6.9. Use 64 bit version {@link PEBinaryObject64}.
* This class is planned for removal in next major release.
*/
@Deprecated
@@ -54,9 +54,6 @@ public class PEBinaryObject extends BinaryObjectAdapter {
super(parser, p, type);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.utils.BinaryObjectAdapter#getName()
- */
@Override
public String getName() {
if (header != null) {
@@ -65,9 +62,6 @@ public class PEBinaryObject extends BinaryObjectAdapter {
return super.getName();
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IBinaryParser.IBinaryFile#getContents()
- */
@Override
public InputStream getContents() throws IOException {
if (getPath() != null && header != null) {
@@ -76,9 +70,6 @@ public class PEBinaryObject extends BinaryObjectAdapter {
return super.getContents();
}
- /**
- * @see org.eclipse.cdt.core.IBinaryParser.IBinaryObject#getSymbols()
- */
@Override
public ISymbol[] getSymbols() {
if (hasChanged() || symbols == null) {
@@ -132,33 +123,21 @@ public class PEBinaryObject extends BinaryObjectAdapter {
}
protected void loadAll() throws IOException {
- PE pe = null;
- try {
- pe = getPE();
+ try (PE pe = getPE()) {
loadInfo(pe);
loadSymbols(pe);
- } finally {
- if (pe != null) {
- pe.dispose();
- }
}
}
protected void loadInfo() throws IOException {
- PE pe = null;
- try {
- pe = getPE();
+ try (PE pe = getPE()) {
loadInfo(pe);
- } finally {
- if (pe != null) {
- pe.dispose();
- }
}
}
protected void loadInfo(PE pe) throws IOException {
info = new BinaryObjectInfo();
- PE.Attribute attribute = getPE().getAttribute();
+ PE.Attribute attribute = pe.getAttribute();
info.isLittleEndian = attribute.isLittleEndian();
info.hasDebug = attribute.hasDebug();
info.cpu = attribute.getCPU();
@@ -191,9 +170,6 @@ public class PEBinaryObject extends BinaryObjectAdapter {
}
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.utils.BinaryObjectAdapter#getAddressFactory()
- */
@Override
public IAddressFactory getAddressFactory() {
if (addressFactory == null) {
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/PEBinaryObject64.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/PEBinaryObject64.java
index 699a49e9f89..849f36e355b 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/PEBinaryObject64.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/PEBinaryObject64.java
@@ -53,9 +53,6 @@ public class PEBinaryObject64 extends BinaryObjectAdapter {
super(parser, p, type);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.utils.BinaryObjectAdapter#getName()
- */
@Override
public String getName() {
if (header != null) {
@@ -64,9 +61,6 @@ public class PEBinaryObject64 extends BinaryObjectAdapter {
return super.getName();
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IBinaryParser.IBinaryFile#getContents()
- */
@Override
public InputStream getContents() throws IOException {
if (getPath() != null && header != null) {
@@ -131,33 +125,21 @@ public class PEBinaryObject64 extends BinaryObjectAdapter {
}
protected void loadAll() throws IOException {
- PE64 pe = null;
- try {
- pe = getPE();
+ try (PE64 pe = getPE()) {
loadInfo(pe);
loadSymbols(pe);
- } finally {
- if (pe != null) {
- pe.dispose();
- }
}
}
protected void loadInfo() throws IOException {
- PE64 pe = null;
- try {
- pe = getPE();
+ try (PE64 pe = getPE()) {
loadInfo(pe);
- } finally {
- if (pe != null) {
- pe.dispose();
- }
}
}
protected void loadInfo(PE64 pe) throws IOException {
info = new BinaryObjectInfo();
- PE64.Attribute attribute = getPE().getAttribute();
+ PE64.Attribute attribute = pe.getAttribute();
info.isLittleEndian = attribute.isLittleEndian();
info.hasDebug = attribute.hasDebug();
info.cpu = attribute.getCPU();
@@ -190,9 +172,6 @@ public class PEBinaryObject64 extends BinaryObjectAdapter {
}
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.utils.BinaryObjectAdapter#getAddressFactory()
- */
@Override
public IAddressFactory getAddressFactory() {
if (addressFactory == null) {
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/PEBinaryShared.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/PEBinaryShared.java
index ff0eb2d014d..79f8a67d5b4 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/PEBinaryShared.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/PEBinaryShared.java
@@ -19,7 +19,7 @@ import org.eclipse.cdt.core.IBinaryParser.IBinaryShared;
import org.eclipse.core.runtime.IPath;
/**
- * @deprecated. Deprecated as of CDT 6.9. Use 64 bit version {@link PEBinaryShared64}.
+ * @deprecated Deprecated as of CDT 6.9. Use 64 bit version {@link PEBinaryShared64}.
* This class is planned for removal in next major release.
*/
@Deprecated
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/PEParser.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/PEParser.java
index 697a3126e24..d1550fa4486 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/PEParser.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/PEParser.java
@@ -27,23 +27,17 @@ import org.eclipse.cdt.utils.coff.PEConstants;
import org.eclipse.core.runtime.IPath;
/**
- * @deprecated. Deprecated as of CDT 6.9. Use 64 bit version {@link PEParser64}.
+ * @deprecated Deprecated as of CDT 6.9. Use 64 bit version {@link PEParser64}.
* This class is planned for removal in next major release.
*/
@Deprecated
public class PEParser extends AbstractCExtension implements IBinaryParser {
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IBinaryParser#getBinary(org.eclipse.core.runtime.IPath)
- */
@Override
public IBinaryFile getBinary(IPath path) throws IOException {
return getBinary(null, path);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IBinaryParser#getBinary(byte[], org.eclipse.core.runtime.IPath)
- */
@Override
public IBinaryFile getBinary(byte[] hints, IPath path) throws IOException {
if (path == null) {
@@ -92,17 +86,11 @@ public class PEParser extends AbstractCExtension implements IBinaryParser {
return binary;
}
- /**
- * @see org.eclipse.cdt.core.IBinaryParser#getFormat()
- */
@Override
public String getFormat() {
return "PE"; //$NON-NLS-1$
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IBinaryParser#isBinary(byte[], org.eclipse.core.runtime.IPath)
- */
@Override
public boolean isBinary(byte[] array, IPath path) {
boolean isBin = PE.isExeHeader(array) || AR.isARHeader(array);
@@ -135,9 +123,6 @@ public class PEParser extends AbstractCExtension implements IBinaryParser {
return isBin;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IBinaryParser#getHintBufferSize()
- */
@Override
public int getHintBufferSize() {
return 512;
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/PEParser64.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/PEParser64.java
index 0071af23500..4497c6a68be 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/PEParser64.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/PEParser64.java
@@ -32,17 +32,11 @@ import org.eclipse.core.runtime.IPath;
*/
public class PEParser64 extends AbstractCExtension implements IBinaryParser {
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IBinaryParser#getBinary(org.eclipse.core.runtime.IPath)
- */
@Override
public IBinaryFile getBinary(IPath path) throws IOException {
return getBinary(null, path);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IBinaryParser#getBinary(byte[], org.eclipse.core.runtime.IPath)
- */
@Override
public IBinaryFile getBinary(byte[] hints, IPath path) throws IOException {
if (path == null) {
@@ -99,9 +93,6 @@ public class PEParser64 extends AbstractCExtension implements IBinaryParser {
return "PE"; //$NON-NLS-1$
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IBinaryParser#isBinary(byte[], org.eclipse.core.runtime.IPath)
- */
@Override
public boolean isBinary(byte[] array, IPath path) {
boolean isBin = PE64.isExeHeader(array) || AR.isARHeader(array);
@@ -134,9 +125,6 @@ public class PEParser64 extends AbstractCExtension implements IBinaryParser {
return isBin;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IBinaryParser#getHintBufferSize()
- */
@Override
public int getHintBufferSize() {
return 512;
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/debug/IDebugEntryRequestor.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/debug/IDebugEntryRequestor.java
index d0c89375953..025abfcd33c 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/debug/IDebugEntryRequestor.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/debug/IDebugEntryRequestor.java
@@ -69,7 +69,7 @@ public interface IDebugEntryRequestor {
/**
* Statement in the compilation unit with a given address.
* @param line lineno of the statement relative to the current compilation unit.
- * @param offset addres of the statement relative to the current function.
+ * @param address address of the statement relative to the current function.
*/
void acceptStatement(int line, long address);
@@ -80,23 +80,16 @@ public interface IDebugEntryRequestor {
/**
* floating point constant.
- * @param name
- * @param value
*/
void acceptFloatConst(String name, double value);
/**
* Type constant: "const b = 0", b is a type enum.
- * @param name
- * @param type
- * @param address
*/
void acceptTypeConst(String name, DebugType type, int value);
/**
* Caught Exception.
- * @param name
- * @param value
*/
void acceptCaughtException(String name, DebugType type, long address);
@@ -111,10 +104,6 @@ public interface IDebugEntryRequestor {
/**
* Record a variable.
- * @param name
- * @param type
- * @param kind
- * @param address
*/
void acceptVariable(String name, DebugType type, DebugVariableKind kind, long address);
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/debug/dwarf/Dwarf.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/debug/dwarf/Dwarf.java
index 01a2f54ffe1..132d8e026ca 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/debug/dwarf/Dwarf.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/debug/dwarf/Dwarf.java
@@ -186,9 +186,9 @@ public class Dwarf {
boolean printEnabled = true;
public Dwarf(String file) throws IOException {
- Elf exe = new Elf(file);
- init(exe);
- exe.dispose();
+ try (Elf exe = new Elf(file)) {
+ init(exe);
+ }
}
public Dwarf(Elf exe) throws IOException {
@@ -238,8 +238,9 @@ public class Dwarf {
}
if (debugFile.exists()) {
// if the debug file exists from above, open it and get the section info from it
- Elf debugInfo = new Elf(debugFile.getCanonicalPath());
- sections = debugInfo.getSections();
+ try (Elf debugInfo = new Elf(debugFile.getCanonicalPath())) {
+ sections = debugInfo.getSections();
+ }
debugInfoPath = new Path(debugFile.getCanonicalPath());
}
}
@@ -264,17 +265,17 @@ public class Dwarf {
}
File altFile = altPath.toFile();
if (altFile.exists()) {
- Elf altInfo = new Elf(altFile.getCanonicalPath());
- Elf.Section[] altSections = altInfo.getSections();
- for (Section altSection : altSections) {
- String altName = altSection.toString();
- for (String element : DWARF_ALT_SCNNAMES) {
- if (altName.equals(element)) {
- try {
- dwarfAltSections.put(element, altSection.mapSectionData());
- } catch (Exception e) {
- e.printStackTrace();
- CCorePlugin.log(e);
+ try (Elf altInfo = new Elf(altFile.getCanonicalPath())) {
+ Elf.Section[] altSections = altInfo.getSections();
+ for (Section altSection : altSections) {
+ String altName = altSection.toString();
+ for (String element : DWARF_ALT_SCNNAMES) {
+ if (altName.equals(element)) {
+ try {
+ dwarfAltSections.put(element, altSection.mapSectionData());
+ } catch (Exception e) {
+ CCorePlugin.log(e);
+ }
}
}
}
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/debug/dwarf/DwarfReader.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/debug/dwarf/DwarfReader.java
index 16a390b96eb..20564a52723 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/debug/dwarf/DwarfReader.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/debug/dwarf/DwarfReader.java
@@ -28,8 +28,6 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
-import javax.xml.bind.DatatypeConverter;
-
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.ICompileOptionsFinder;
import org.eclipse.cdt.core.ISymbolReader;
@@ -127,15 +125,16 @@ public class DwarfReader extends Dwarf implements ISymbolReader, ICompileOptions
}
// The build-id location is taken by converting the binary bytes to hex string.
// The first byte is used as a directory specifier (e.g. 51/a4578fe2).
- String bName = DatatypeConverter.printHexBinary(byteArray).toLowerCase();
+ String bName = printHexBinary(byteArray).toLowerCase();
buildId = bName.substring(0, 2) + "/" + bName.substring(2) + ".debug"; //$NON-NLS-1$ //$NON-NLS-2$
// The build-id file should be in the special directory /usr/lib/debug/.build-id
IPath buildIdPath = new Path("/usr/lib/debug/.build-id").append(buildId); //$NON-NLS-1$
File buildIdFile = buildIdPath.toFile();
if (buildIdFile.exists()) {
// if the debug file exists from above, open it and get the section info from it
- Elf debugInfo = new Elf(buildIdFile.getCanonicalPath());
- sections = debugInfo.getSections();
+ try (Elf debugInfo = new Elf(buildIdFile.getCanonicalPath())) {
+ sections = debugInfo.getSections();
+ }
have_build_id = true;
debugInfoPath = new Path(buildIdFile.getCanonicalPath()).removeLastSegments(1);
break;
@@ -185,8 +184,9 @@ public class DwarfReader extends Dwarf implements ISymbolReader, ICompileOptions
}
if (debugFile.exists()) {
// if the debug file exists from above, open it and get the section info from it
- Elf debugInfo = new Elf(debugFile.getCanonicalPath());
- sections = debugInfo.getSections();
+ try (Elf debugInfo = new Elf(debugFile.getCanonicalPath())) {
+ sections = debugInfo.getSections();
+ }
debugInfoPath = new Path(debugFile.getCanonicalPath()).removeLastSegments(1);
}
}
@@ -215,17 +215,17 @@ public class DwarfReader extends Dwarf implements ISymbolReader, ICompileOptions
}
File altFile = altPath.toFile();
if (altFile.exists()) {
- Elf altInfo = new Elf(altFile.getCanonicalPath());
- Elf.Section[] altSections = altInfo.getSections();
- for (Section altSection : altSections) {
- String altName = altSection.toString();
- for (String element : DWARF_ALT_SectionsToParse) {
- if (altName.equals(element)) {
- try {
- dwarfAltSections.put(element, altSection.mapSectionData());
- } catch (Exception e) {
- e.printStackTrace();
- CCorePlugin.log(e);
+ try (Elf altInfo = new Elf(altFile.getCanonicalPath())) {
+ Elf.Section[] altSections = altInfo.getSections();
+ for (Section altSection : altSections) {
+ String altName = altSection.toString();
+ for (String element : DWARF_ALT_SectionsToParse) {
+ if (altName.equals(element)) {
+ try {
+ dwarfAltSections.put(element, altSection.mapSectionData());
+ } catch (Exception e) {
+ CCorePlugin.log(e);
+ }
}
}
}
@@ -286,6 +286,13 @@ public class DwarfReader extends Dwarf implements ISymbolReader, ICompileOptions
m_parsed = false;
}
+ private static String printHexBinary(byte[] byteArray) {
+ StringBuilder sb = new StringBuilder(byteArray.length * 2);
+ for (byte b : byteArray)
+ sb.append(String.format("%02x", b)); //$NON-NLS-1$
+ return sb.toString();
+ }
+
/*
* Parse line table data of a compilation unit to get names of all source files
* that contribute to the compilation unit.
@@ -296,7 +303,11 @@ public class DwarfReader extends Dwarf implements ISymbolReader, ICompileOptions
ByteBuffer data = dwarfSections.get(DWARF_DEBUG_LINE);
if (data != null) {
try {
- data.position(cuStmtList);
+ try {
+ data.position(cuStmtList);
+ } catch (IllegalArgumentException e) {
+ throw new IOException(CCorePlugin.getResourceString("Util.exception.noData")); //$NON-NLS-1$
+ }
/* Read line table header:
*
@@ -382,7 +393,7 @@ public class DwarfReader extends Dwarf implements ISymbolReader, ICompileOptions
leb128 = read_unsigned_leb128(data);
}
} catch (IOException e) {
- e.printStackTrace();
+ CCorePlugin.log("Failed to parse part of dwarf header", e); //$NON-NLS-1$
}
}
}
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/debug/stabs/Stabs.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/debug/stabs/Stabs.java
index c99897e1bb8..69ecba5cc61 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/debug/stabs/Stabs.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/debug/stabs/Stabs.java
@@ -68,14 +68,12 @@ public class Stabs {
// we support Elf and PE executable formats. try Elf
// and then PE.
- try {
- Elf exe = new Elf(file);
+ try (Elf exe = new Elf(file)) {
init(exe);
- exe.dispose();
} catch (IOException e) {
- PE exe = new PE(file);
- init(exe);
- exe.dispose();
+ try (PE exe = new PE(file)) {
+ init(exe);
+ }
}
}
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/debug/stabs/TypeNumber.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/debug/stabs/TypeNumber.java
index c37e6e9cbc9..7169856000f 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/debug/stabs/TypeNumber.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/debug/stabs/TypeNumber.java
@@ -48,9 +48,6 @@ public class TypeNumber {
return super.equals(obj);
}
- /* (non-Javadoc)
- * @see java.lang.Object#hashCode()
- */
@Override
public int hashCode() {
return fileno * 10 + typeno;
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/debug/tools/DebugAddr2line.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/debug/tools/DebugAddr2line.java
index 3c24e1c8a7b..52dd8642b78 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/debug/tools/DebugAddr2line.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/debug/tools/DebugAddr2line.java
@@ -31,9 +31,9 @@ public class DebugAddr2line {
DebugSymsRequestor symreq;
public DebugAddr2line(String file) throws IOException {
- Elf elf = new Elf(file);
- init(elf);
- elf.dispose();
+ try (Elf elf = new Elf(file)) {
+ init(elf);
+ }
}
public DebugAddr2line(Elf elf) throws IOException {
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/debug/tools/DebugDump.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/debug/tools/DebugDump.java
index 071f4073c94..7fae54ef2c8 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/debug/tools/DebugDump.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/debug/tools/DebugDump.java
@@ -46,9 +46,9 @@ public class DebugDump implements IDebugEntryRequestor {
}
void parse(String file) throws IOException {
- Elf elf = new Elf(file);
- parse(elf);
- elf.dispose();
+ try (Elf elf = new Elf(file)) {
+ parse(elf);
+ }
}
void parse(Elf elf) throws IOException {
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/debug/tools/DebugSymsRequestor.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/debug/tools/DebugSymsRequestor.java
index 0a58348f5c6..b3aacd773cd 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/debug/tools/DebugSymsRequestor.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/debug/tools/DebugSymsRequestor.java
@@ -70,9 +70,6 @@ public class DebugSymsRequestor implements IDebugEntryRequestor {
return null;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.utils.debug.IDebugEntryRequestor#enterCompilationUnit(java.lang.String, long)
- */
@Override
public void enterCompilationUnit(String name, long address) {
DebugSym sym = new DebugSym();
@@ -84,9 +81,6 @@ public class DebugSymsRequestor implements IDebugEntryRequestor {
list.add(sym);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.utils.debug.IDebugEntryRequestor#exitCompilationUnit(long)
- */
@Override
public void exitCompilationUnit(long address) {
if (currentCU != null) {
@@ -95,23 +89,14 @@ public class DebugSymsRequestor implements IDebugEntryRequestor {
currentCU = null;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.utils.debug.IDebugEntryRequestor#enterInclude(java.lang.String)
- */
@Override
public void enterInclude(String name) {
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.utils.debug.IDebugEntryRequestor#exitInclude()
- */
@Override
public void exitInclude() {
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.utils.debug.IDebugEntryRequestor#enterFunction(java.lang.String, int, boolean, long)
- */
@Override
public void enterFunction(String name, DebugType type, boolean isGlobal, long address) {
DebugSym sym = new DebugSym();
@@ -125,9 +110,6 @@ public class DebugSymsRequestor implements IDebugEntryRequestor {
list.add(sym);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.utils.debug.IDebugEntryRequestor#exitFunction(long)
- */
@Override
public void exitFunction(long address) {
if (currentFunction != null) {
@@ -136,23 +118,14 @@ public class DebugSymsRequestor implements IDebugEntryRequestor {
currentFunction = null;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.utils.debug.IDebugEntryRequestor#enterCodeBlock(long)
- */
@Override
public void enterCodeBlock(long offset) {
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.utils.debug.IDebugEntryRequestor#exitCodeBlock(long)
- */
@Override
public void exitCodeBlock(long offset) {
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.utils.debug.IDebugEntryRequestor#acceptStatement(int, long)
- */
@Override
public void acceptStatement(int line, long address) {
DebugSym sym = new DebugSym();
@@ -172,30 +145,18 @@ public class DebugSymsRequestor implements IDebugEntryRequestor {
list.add(sym);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.utils.debug.IDebugEntryRequestor#acceptIntegerConst(java.lang.String, long)
- */
@Override
public void acceptIntegerConst(String name, int value) {
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.utils.debug.IDebugEntryRequestor#acceptFloatConst(java.lang.String, double)
- */
@Override
public void acceptFloatConst(String name, double value) {
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.utils.debug.IDebugEntryRequestor#acceptTypeConst(java.lang.String, org.eclipse.cdt.utils.debug.DebugType, int)
- */
@Override
public void acceptTypeConst(String name, DebugType type, int value) {
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.utils.debug.IDebugEntryRequestor#acceptParameter(java.lang.String, int, int, long)
- */
@Override
public void acceptParameter(String name, DebugType type, DebugParameterKind kind, long offset) {
DebugSym sym = new DebugSym();
@@ -208,9 +169,6 @@ public class DebugSymsRequestor implements IDebugEntryRequestor {
list.add(sym);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.utils.debug.IDebugEntryRequestor#acceptVariable(java.lang.String, int, int, long)
- */
@Override
public void acceptVariable(String name, DebugType type, DebugVariableKind kind, long address) {
DebugSym sym = new DebugSym();
@@ -223,16 +181,10 @@ public class DebugSymsRequestor implements IDebugEntryRequestor {
list.add(sym);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.utils.debug.IDebugEntryRequestor#acceptCaughtException(java.lang.String, org.eclipse.cdt.utils.debug.DebugType, long)
- */
@Override
public void acceptCaughtException(String name, DebugType type, long address) {
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.utils.debug.IDebugEntryRequestor#acceptTypeDef(java.lang.String, org.eclipse.cdt.utils.debug.DebugType)
- */
@Override
public void acceptTypeDef(String name, DebugType type) {
}
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/elf/AR.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/elf/AR.java
index bb37c2db604..bb88792ac09 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/elf/AR.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/elf/AR.java
@@ -31,13 +31,18 @@ import org.eclipse.cdt.utils.ERandomAccessFile;
* @see ARHeader
*/
@Deprecated
-public class AR {
+public class AR implements AutoCloseable {
protected String filename;
protected ERandomAccessFile efile;
protected long strtbl_pos = -1;
private ARHeader[] headers;
+ @Override
+ public void close() {
+ dispose();
+ }
+
public void dispose() {
try {
if (efile != null) {
@@ -207,11 +212,10 @@ public class AR {
efile.seek(elf_offset);
efile.read(temp);
} else {
- efile = new ERandomAccessFile(filename, "r"); //$NON-NLS-1$
- efile.seek(elf_offset);
- efile.read(temp);
- efile.close();
- efile = null;
+ try (ERandomAccessFile tempfile = new ERandomAccessFile(filename, "r")) { //$NON-NLS-1$
+ tempfile.seek(elf_offset);
+ tempfile.read(temp);
+ }
}
return temp;
}
@@ -237,6 +241,7 @@ public class AR {
String hdr = efile.readLine();
if (hdr == null || hdr.compareTo("!<arch>") != 0) { //$NON-NLS-1$
efile.close();
+ efile = null;
throw new IOException(CCorePlugin.getResourceString("Util.exception.invalidArchive")); //$NON-NLS-1$
}
}
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/elf/Elf.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/elf/Elf.java
index ebd04b45671..9e3090e2a8d 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/elf/Elf.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/elf/Elf.java
@@ -18,13 +18,17 @@ import static org.eclipse.cdt.internal.core.ByteUtils.makeInt;
import static org.eclipse.cdt.internal.core.ByteUtils.makeLong;
import static org.eclipse.cdt.internal.core.ByteUtils.makeShort;
+import java.io.Closeable;
import java.io.EOFException;
import java.io.IOException;
import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
import java.nio.channels.FileChannel.MapMode;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
+import java.util.Iterator;
+import java.util.NoSuchElementException;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.IAddress;
@@ -37,11 +41,11 @@ import org.eclipse.cdt.utils.Addr64Factory;
import org.eclipse.cdt.utils.ERandomAccessFile;
import org.eclipse.cdt.utils.debug.dwarf.DwarfReader;
-public class Elf {
- public final static int ELF32_ADDR_SIZE = 4;
- public final static int ELF32_OFF_SIZE = 4;
- public final static int ELF64_ADDR_SIZE = 8;
- public final static int ELF64_OFF_SIZE = 8;
+public class Elf implements AutoCloseable {
+ public static final int ELF32_ADDR_SIZE = 4;
+ public static final int ELF32_OFF_SIZE = 4;
+ public static final int ELF64_ADDR_SIZE = 8;
+ public static final int ELF64_OFF_SIZE = 8;
protected ERandomAccessFile efile;
@@ -50,120 +54,123 @@ public class Elf {
protected String file;
protected byte[] section_strtab;
- private int syms = 0;
private Symbol[] symbols;
- private Symbol[] symtab_symbols;
- private Section symtab_sym;
- private Symbol[] dynsym_symbols;
- private Section dynsym_sym;
- private boolean sections_mapped; // Have sections been mapped? Used to clean up properly in Elf.Dispose.
+ /** .symtab section */
+ private Symbol[] symbolsTable;
+ /** .dynSym section */
+ private Symbol[] dynamicSymbols;
+ private boolean areSectionsMapped; // Have sections been mapped? Used to clean up properly in Elf.Dispose.
protected String EMPTY_STRING = ""; //$NON-NLS-1$
+ private long elfOffset;
public class ELFhdr {
/* e_ident offsets */
- public final static int EI_MAG0 = 0;
- public final static int EI_MAG1 = 1;
- public final static int EI_MAG2 = 2;
- public final static int EI_MAG3 = 3;
- public final static int EI_CLASS = 4;
- public final static int EI_DATA = 5;
- public final static int EI_VERSION = 6;
- public final static int EI_PAD = 7;
- public final static int EI_NDENT = 16;
+ public static final int EI_MAG0 = 0;
+ public static final int EI_MAG1 = 1;
+ public static final int EI_MAG2 = 2;
+ public static final int EI_MAG3 = 3;
+ public static final int EI_CLASS = 4;
+ public static final int EI_DATA = 5;
+ public static final int EI_VERSION = 6;
+ public static final int EI_PAD = 7;
+ public static final int EI_NDENT = 16;
/* e_ident[EI_CLASS] */
- public final static int ELFCLASSNONE = 0;
- public final static int ELFCLASS32 = 1;
- public final static int ELFCLASS64 = 2;
+ public static final int ELFCLASSNONE = 0;
+ public static final int ELFCLASS32 = 1;
+ public static final int ELFCLASS64 = 2;
/* e_ident[EI_DATA] */
- public final static int ELFDATANONE = 0;
- public final static int ELFDATA2LSB = 1;
- public final static int ELFDATA2MSB = 2;
+ public static final int ELFDATANONE = 0;
+ public static final int ELFDATA2LSB = 1;
+ public static final int ELFDATA2MSB = 2;
/* values of e_type */
- public final static int ET_NONE = 0;
- public final static int ET_REL = 1;
- public final static int ET_EXEC = 2;
- public final static int ET_DYN = 3;
- public final static int ET_CORE = 4;
- public final static int ET_LOPROC = 0xff00;
- public final static int ET_HIPROC = 0xffff;
+ public static final int ET_NONE = 0;
+ public static final int ET_REL = 1;
+ public static final int ET_EXEC = 2;
+ public static final int ET_DYN = 3;
+ public static final int ET_CORE = 4;
+ public static final int ET_LOPROC = 0xff00;
+ public static final int ET_HIPROC = 0xffff;
/* values of e_machine */
- public final static int EM_NONE = 0;
- public final static int EM_M32 = 1;
- public final static int EM_SPARC = 2;
- public final static int EM_386 = 3;
- public final static int EM_68K = 4;
- public final static int EM_88K = 5;
- public final static int EM_486 = 6;
- public final static int EM_860 = 7;
- public final static int EM_MIPS = 8;
- public final static int EM_MIPS_RS3_LE = 10;
- public final static int EM_RS6000 = 11;
- public final static int EM_PARISC = 15;
- public final static int EM_nCUBE = 16;
- public final static int EM_VPP550 = 17;
- public final static int EM_SPARC32PLUS = 18;
- public final static int EM_PPC = 20;
- public final static int EM_PPC64 = 21;
- public final static int EM_ARM = 40;
- public final static int EM_SH = 42;
- public final static int EM_SPARCV9 = 43;
- public final static int EM_TRICORE = 44;
- public final static int EM_H8_300 = 46;
- public final static int EM_H8_300H = 47;
- public final static int EM_IA_64 = 50;
- public final static int EM_COLDFIRE = 52;
- public final static int EM_STARCORE = 58;
- public final static int EM_X86_64 = 62;
- public final static int EM_ST100 = 60;
+ public static final int EM_NONE = 0;
+ public static final int EM_M32 = 1;
+ public static final int EM_SPARC = 2;
+ public static final int EM_386 = 3;
+ public static final int EM_68K = 4;
+ public static final int EM_88K = 5;
+ public static final int EM_486 = 6;
+ public static final int EM_860 = 7;
+ public static final int EM_MIPS = 8;
+ public static final int EM_MIPS_RS3_LE = 10;
+ public static final int EM_RS6000 = 11;
+ public static final int EM_PARISC = 15;
+ public static final int EM_nCUBE = 16;
+ public static final int EM_VPP550 = 17;
+ public static final int EM_SPARC32PLUS = 18;
+ public static final int EM_PPC = 20;
+ public static final int EM_PPC64 = 21;
+ public static final int EM_ARM = 40;
+ public static final int EM_SH = 42;
+ public static final int EM_SPARCV9 = 43;
+ public static final int EM_TRICORE = 44;
+ public static final int EM_H8_300 = 46;
+ public static final int EM_H8_300H = 47;
+ public static final int EM_IA_64 = 50;
+ public static final int EM_COLDFIRE = 52;
+ public static final int EM_STARCORE = 58;
+ public static final int EM_X86_64 = 62;
+ public static final int EM_ST100 = 60;
/** @since 5.2 */
- public final static int EM_68HC08 = 71; /* Freescale MC68HC08 Microcontroller */
-
- public final static int EM_AVR = 83;
- public final static int EM_FR30 = 84; /* Fujitsu FR30 */
- public final static int EM_V850 = 87;
- public final static int EM_M32R = 88;
- public final static int EM_MN10300 = 89;
- public final static int EM_MN10200 = 90;
- public final static int EM_XTENSA = 94;
- public final static int EM_MSP430 = 105;
- public final static int EM_BLACKFIN = 106;
- public final static int EM_EXCESS = 111;
+ public static final int EM_68HC08 = 71; /* Freescale MC68HC08 Microcontroller */
+
+ public static final int EM_AVR = 83;
+ public static final int EM_FR30 = 84; /* Fujitsu FR30 */
+ public static final int EM_V850 = 87;
+ public static final int EM_M32R = 88;
+ public static final int EM_MN10300 = 89;
+ public static final int EM_MN10200 = 90;
+ public static final int EM_XTENSA = 94;
+ public static final int EM_MSP430 = 105;
+ public static final int EM_BLACKFIN = 106;
+ public static final int EM_EXCESS = 111;
/** @since 5.5 */
- public final static int EM_ESIRISC = 111;
- public final static int EM_NIOSII = 113;
- public final static int EM_C166 = 116;
- public final static int EM_M16C = 117;
+ public static final int EM_ESIRISC = 111;
+ public static final int EM_NIOSII = 113;
+ public static final int EM_C166 = 116;
+ public static final int EM_M16C = 117;
/** @since 5.2 */
- public final static int EM_RS08 = 132; /* Freescale RS08 embedded processor */
+ public static final int EM_RS08 = 132; /* Freescale RS08 embedded processor */
- public final static int EM_MMDSP = 160;
+ public static final int EM_MMDSP = 160;
/** @since 5.4 */
- public final static int EM_RX = 173; /* Renesas RX Microcontroller */
+ public static final int EM_RX = 173; /* Renesas RX Microcontroller */
/** @since 5.4 */
- public final static int EM_RL78 = 197; /* Renesas RL78 Microcontroller */
+ public static final int EM_RL78 = 197; /* Renesas RL78 Microcontroller */
/** @since 6.0 */
- public final static int EM_AARCH64 = 183;
-
- public final static int EM_NIOS = 0xFEBB;
- public final static int EM_CYGNUS_POWERPC = 0x9025;
- public final static int EM_CYGNUS_M32R = 0x9041;
- public final static int EM_CYGNUS_V850 = 0x9080;
- public final static int EM_CYGNUS_MN10200 = 0xdead;
- public final static int EM_CYGNUS_MN10300 = 0xbeef;
- public final static int EM_CYGNUS_FR30 = 0x3330;
- public final static int EM_XSTORMY16 = 0xad45;
- public final static int EM_CYGNUS_FRV = 0x5441;
- public final static int EM_IQ2000 = 0xFEBA;
+ public static final int EM_AARCH64 = 183;
+
+ /** @since 7.0 */
+ public static final int EM_RISCV = 243;
+
+ public static final int EM_NIOS = 0xFEBB;
+ public static final int EM_CYGNUS_POWERPC = 0x9025;
+ public static final int EM_CYGNUS_M32R = 0x9041;
+ public static final int EM_CYGNUS_V850 = 0x9080;
+ public static final int EM_CYGNUS_MN10200 = 0xdead;
+ public static final int EM_CYGNUS_MN10300 = 0xbeef;
+ public static final int EM_CYGNUS_FR30 = 0x3330;
+ public static final int EM_XSTORMY16 = 0xad45;
+ public static final int EM_CYGNUS_FRV = 0x5441;
+ public static final int EM_IQ2000 = 0xFEBA;
public static final int EM_XILINX_MICROBLAZE = 0xbaab;
public static final int EM_SDMA = 0xcafe;
public static final int EM_CRADLE = 0x4d55;
@@ -286,35 +293,35 @@ public class Elf {
public class Section {
/* sh_type */
- public final static int SHT_NULL = 0;
- public final static int SHT_PROGBITS = 1;
- public final static int SHT_SYMTAB = 2;
- public final static int SHT_STRTAB = 3;
- public final static int SHT_RELA = 4;
- public final static int SHT_HASH = 5;
- public final static int SHT_DYNAMIC = 6;
- public final static int SHT_NOTE = 7;
- public final static int SHT_NOBITS = 8;
- public final static int SHT_REL = 9;
- public final static int SHT_SHLIB = 10;
- public final static int SHT_DYNSYM = 11;
-
- public final static int SHT_LOPROC = 0x70000000;
+ public static final int SHT_NULL = 0;
+ public static final int SHT_PROGBITS = 1;
+ public static final int SHT_SYMTAB = 2;
+ public static final int SHT_STRTAB = 3;
+ public static final int SHT_RELA = 4;
+ public static final int SHT_HASH = 5;
+ public static final int SHT_DYNAMIC = 6;
+ public static final int SHT_NOTE = 7;
+ public static final int SHT_NOBITS = 8;
+ public static final int SHT_REL = 9;
+ public static final int SHT_SHLIB = 10;
+ public static final int SHT_DYNSYM = 11;
+
+ public static final int SHT_LOPROC = 0x70000000;
/* sh_flags */
- public final static int SHF_WRITE = 1;
- public final static int SHF_ALLOC = 2;
- public final static int SHF_EXECINTR = 4;
+ public static final int SHF_WRITE = 1;
+ public static final int SHF_ALLOC = 2;
+ public static final int SHF_EXECINTR = 4;
/**
* @since 6.6
*/
- public final static int SHF_COMPRESSED = 2048;
+ public static final int SHF_COMPRESSED = 2048;
/* note_types */
/**
* @since 5.7
*/
- public final static int NT_GNU_BUILD_ID = 3;
+ public static final int NT_GNU_BUILD_ID = 3;
public long sh_name;
public long sh_type;
@@ -332,7 +339,7 @@ public class Elf {
*/
public ByteBuffer mapSectionData() throws IOException {
makeSureNotCompressed();
- sections_mapped = true;
+ areSectionsMapped = true;
return efile.getChannel().map(MapMode.READ_ONLY, sh_offset, sh_size).load().asReadOnlyBuffer();
}
@@ -409,26 +416,26 @@ public class Elf {
public class Symbol implements Comparable<Object> {
/* Symbol bindings */
- public final static int STB_LOCAL = 0;
- public final static int STB_GLOBAL = 1;
- public final static int STB_WEAK = 2;
+ public static final int STB_LOCAL = 0;
+ public static final int STB_GLOBAL = 1;
+ public static final int STB_WEAK = 2;
/* Symbol type */
- public final static int STT_NOTYPE = 0;
- public final static int STT_OBJECT = 1;
- public final static int STT_FUNC = 2;
- public final static int STT_SECTION = 3;
- public final static int STT_FILE = 4;
+ public static final int STT_NOTYPE = 0;
+ public static final int STT_OBJECT = 1;
+ public static final int STT_FUNC = 2;
+ public static final int STT_SECTION = 3;
+ public static final int STT_FILE = 4;
/* Special Indexes */
- public final static int SHN_UNDEF = 0;
- public final static int SHN_LORESERVE = 0xffffff00;
- public final static int SHN_LOPROC = 0xffffff00;
- public final static int SHN_HIPROC = 0xffffff1f;
- public final static int SHN_LOOS = 0xffffff20;
- public final static int SHN_HIOS = 0xffffff3f;
- public final static int SHN_ABS = 0xfffffff1;
- public final static int SHN_COMMON = 0xfffffff2;
- public final static int SHN_XINDEX = 0xffffffff;
- public final static int SHN_HIRESERVE = 0xffffffff;
+ public static final int SHN_UNDEF = 0;
+ public static final int SHN_LORESERVE = 0xffffff00;
+ public static final int SHN_LOPROC = 0xffffff00;
+ public static final int SHN_HIPROC = 0xffffff1f;
+ public static final int SHN_LOOS = 0xffffff20;
+ public static final int SHN_HIOS = 0xffffff3f;
+ public static final int SHN_ABS = 0xfffffff1;
+ public static final int SHN_COMMON = 0xfffffff2;
+ public static final int SHN_XINDEX = 0xffffffff;
+ public static final int SHN_HIRESERVE = 0xffffffff;
/* NOTE: 64 bit and 32 bit ELF sections has different order */
public long st_name;
@@ -518,17 +525,17 @@ public class Elf {
public class PHdr {
- public final static int PT_NULL = 0;
- public final static int PT_LOAD = 1;
- public final static int PT_DYNAMIC = 2;
- public final static int PT_INTERP = 3;
- public final static int PT_NOTE = 4;
- public final static int PT_SHLIB = 5;
- public final static int PT_PHDR = 6;
-
- public final static int PF_X = 1;
- public final static int PF_W = 2;
- public final static int PF_R = 4;
+ public static final int PT_NULL = 0;
+ public static final int PT_LOAD = 1;
+ public static final int PT_DYNAMIC = 2;
+ public static final int PT_INTERP = 3;
+ public static final int PT_NOTE = 4;
+ public static final int PT_SHLIB = 5;
+ public static final int PT_PHDR = 6;
+
+ public static final int PF_X = 1;
+ public static final int PF_W = 2;
+ public static final int PF_R = 4;
/* NOTE: 64 bit and 32 bit ELF have different order and size of elements */
public long p_type;
public long p_offset;
@@ -591,25 +598,25 @@ public class Elf {
public class Dynamic {
- public final static int DYN_ENT_SIZE_32 = 8;
- public final static int DYN_ENT_SIZE_64 = 16;
-
- public final static int DT_NULL = 0;
- public final static int DT_NEEDED = 1;
- public final static int DT_PLTRELSZ = 2;
- public final static int DT_PLTGOT = 3;
- public final static int DT_HASH = 4;
- public final static int DT_STRTAB = 5;
- public final static int DT_SYMTAB = 6;
- public final static int DT_RELA = 7;
- public final static int DT_RELASZ = 8;
- public final static int DT_RELAENT = 9;
- public final static int DT_STRSZ = 10;
- public final static int DT_SYMENT = 11;
- public final static int DT_INIT = 12;
- public final static int DT_FINI = 13;
- public final static int DT_SONAME = 14;
- public final static int DT_RPATH = 15;
+ public static final int DYN_ENT_SIZE_32 = 8;
+ public static final int DYN_ENT_SIZE_64 = 16;
+
+ public static final int DT_NULL = 0;
+ public static final int DT_NEEDED = 1;
+ public static final int DT_PLTRELSZ = 2;
+ public static final int DT_PLTGOT = 3;
+ public static final int DT_HASH = 4;
+ public static final int DT_STRTAB = 5;
+ public static final int DT_SYMTAB = 6;
+ public static final int DT_RELA = 7;
+ public static final int DT_RELASZ = 8;
+ public static final int DT_RELAENT = 9;
+ public static final int DT_STRSZ = 10;
+ public static final int DT_SYMENT = 11;
+ public static final int DT_INIT = 12;
+ public static final int DT_FINI = 13;
+ public static final int DT_SONAME = 14;
+ public static final int DT_RPATH = 15;
public long d_tag;
public long d_val;
private final Section section;
@@ -697,6 +704,7 @@ public class Elf {
public Elf(String file, long offset) throws IOException {
commonSetup(file, offset);
+ elfOffset = offset;
}
public Elf(String file) throws IOException {
@@ -903,6 +911,9 @@ public class Elf {
case Elf.ELFhdr.EM_RS08:
attrib.cpu = "rs08"; //$NON-NLS-1$
break;
+ case Elf.ELFhdr.EM_RISCV:
+ attrib.cpu = "riscv"; //$NON-NLS-1$
+ break;
case Elf.ELFhdr.EM_NONE:
default:
attrib.cpu = "none"; //$NON-NLS-1$
@@ -945,21 +956,20 @@ public class Elf {
}
public static Attribute getAttributes(String file) throws IOException {
- Elf elf = new Elf(file);
- Attribute attrib = elf.getAttributes();
- elf.dispose();
- return attrib;
+ try (Elf elf = new Elf(file)) {
+ Attribute attrib = elf.getAttributes();
+ return attrib;
+ }
}
public static Attribute getAttributes(byte[] array) throws IOException {
+ try (Elf emptyElf = new Elf()) {
+ emptyElf.ehdr = emptyElf.new ELFhdr(array);
+ emptyElf.sections = new Elf.Section[0];
+ Attribute attrib = emptyElf.getAttributes();
- Elf emptyElf = new Elf();
- emptyElf.ehdr = emptyElf.new ELFhdr(array);
- emptyElf.sections = new Elf.Section[0];
- Attribute attrib = emptyElf.getAttributes();
- emptyElf.dispose();
-
- return attrib;
+ return attrib;
+ }
}
public static boolean isElfHeader(byte[] e_ident) {
@@ -967,14 +977,18 @@ public class Elf {
&& e_ident[ELFhdr.EI_MAG1] == 'E' && e_ident[ELFhdr.EI_MAG2] == 'L' && e_ident[ELFhdr.EI_MAG3] == 'F';
}
+ @Override
+ public void close() {
+ dispose();
+ }
+
public void dispose() {
try {
if (efile != null) {
efile.close();
efile = null;
-
// ensure the mappings get cleaned up
- if (sections_mapped)
+ if (areSectionsMapped)
System.gc();
}
} catch (IOException e) {
@@ -1015,6 +1029,9 @@ public class Elf {
return slist.toArray(new Section[0]);
}
+ /**
+ * @throws ElfClassNoneException if {@link ELFhdr#ELFCLASSNONE} header is read
+ */
public Section[] getSections() throws IOException {
if (sections == null) {
if (ehdr.e_shoff == 0) {
@@ -1049,7 +1066,7 @@ public class Elf {
break;
case ELFhdr.ELFCLASSNONE:
default:
- throw new IOException("Unknown ELF class " + ehdr.e_ident[ELFhdr.EI_CLASS]); //$NON-NLS-1$
+ throw new ElfClassNoneException("Unknown ELF class " + ehdr.e_ident[ELFhdr.EI_CLASS]); //$NON-NLS-1$
}
sections[i].sh_link = efile.readIntE();
@@ -1067,17 +1084,100 @@ public class Elf {
break;
case ELFhdr.ELFCLASSNONE:
default:
- throw new IOException("Unknown ELF class " + ehdr.e_ident[ELFhdr.EI_CLASS]); //$NON-NLS-1$
+ throw new ElfClassNoneException("Unknown ELF class " + ehdr.e_ident[ELFhdr.EI_CLASS]); //$NON-NLS-1$
}
- if (sections[i].sh_type == Section.SHT_SYMTAB)
- syms = i;
- if (syms == 0 && sections[i].sh_type == Section.SHT_DYNSYM)
- syms = i;
}
}
return sections;
}
+ /**
+ * Symbol iterator, iterates over an elf file. Note: the iterator must be closed at the end in order to avoid resource leaks.
+ *
+ * TODO: move to another file when @link {@Link Symbol} can be made static.
+ */
+ private class ElfSectionIterator implements Iterator<Symbol>, Closeable {
+
+ private final int nbSymbols;
+ private final ERandomAccessFile innerEfile;
+ private final Section section;
+ private final byte arch;
+ private int position = 0;
+
+ public ElfSectionIterator(ERandomAccessFile eFile, byte b, Section sectionToRead, byte architecture)
+ throws IOException {
+ int numSyms = 1;
+ section = sectionToRead;
+ if (section.sh_entsize != 0) {
+ numSyms = (int) section.sh_size / (int) section.sh_entsize;
+ }
+ section.makeSureNotCompressed();
+ nbSymbols = numSyms;
+ innerEfile = new ERandomAccessFile(eFile.getPath(), "r"); //$NON-NLS-1$
+ innerEfile.setFileOffset(elfOffset);
+ innerEfile.setEndian(efile.order() == ByteOrder.LITTLE_ENDIAN);
+ arch = architecture;
+ }
+
+ @Override
+ public boolean hasNext() {
+ return position < nbSymbols;
+ }
+
+ @Override
+ public Symbol next() {
+ long innerOffset = section.sh_entsize * position + section.sh_offset;
+ position++;
+ try {
+ innerEfile.seek(innerOffset);
+ Symbol symbol = new Symbol(section);
+
+ switch (arch) {
+ case ELFhdr.ELFCLASS32: {
+ byte[] addrArray = new byte[ELF32_ADDR_SIZE];
+
+ symbol.st_name = innerEfile.readIntE();
+ innerEfile.readFullyE(addrArray);
+ symbol.st_value = new Addr32(addrArray);
+ symbol.st_size = innerEfile.readIntE();
+ symbol.st_info = innerEfile.readByte();
+ symbol.st_other = innerEfile.readByte();
+ symbol.st_shndx = innerEfile.readShortE();
+ break;
+ }
+ case ELFhdr.ELFCLASS64: {
+ byte[] addrArray = new byte[ELF64_ADDR_SIZE];
+
+ symbol.st_name = innerEfile.readIntE();
+ symbol.st_info = innerEfile.readByte();
+ symbol.st_other = innerEfile.readByte();
+ symbol.st_shndx = innerEfile.readShortE();
+ innerEfile.readFullyE(addrArray);
+ symbol.st_value = new Addr64(addrArray);
+ symbol.st_size = innerEfile.readLongE();
+ if (symbol.st_size < 0) {
+ throw new NoSuchElementException("Maximal file offset is " + Long.toHexString(Long.MAX_VALUE) + //$NON-NLS-1$
+ " given offset is " + Long.toHexString(symbol.st_size)); //$NON-NLS-1$
+ }
+ break;
+ }
+ case ELFhdr.ELFCLASSNONE:
+ default:
+ throw new NoSuchElementException("Unknown ELF class " + arch); //$NON-NLS-1$
+ }
+ return symbol;
+ } catch (IOException e) {
+ throw new NoSuchElementException(e.getMessage());
+ }
+ }
+
+ @Override
+ public void close() throws IOException {
+ innerEfile.close();
+ }
+
+ }
+
private Symbol[] loadSymbolsBySection(Section section) throws IOException {
int numSyms = 1;
if (section.sh_entsize != 0) {
@@ -1085,74 +1185,54 @@ public class Elf {
}
section.makeSureNotCompressed();
ArrayList<Symbol> symList = new ArrayList<>(numSyms);
- long offset = section.sh_offset;
- for (int c = 0; c < numSyms; offset += section.sh_entsize, c++) {
- efile.seek(offset);
- Symbol symbol = new Symbol(section);
- switch (ehdr.e_ident[ELFhdr.EI_CLASS]) {
- case ELFhdr.ELFCLASS32: {
- byte[] addrArray = new byte[ELF32_ADDR_SIZE];
-
- symbol.st_name = efile.readIntE();
- efile.readFullyE(addrArray);
- symbol.st_value = new Addr32(addrArray);
- symbol.st_size = efile.readIntE();
- symbol.st_info = efile.readByte();
- symbol.st_other = efile.readByte();
- symbol.st_shndx = efile.readShortE();
- }
- break;
- case ELFhdr.ELFCLASS64: {
- byte[] addrArray = new byte[ELF64_ADDR_SIZE];
-
- symbol.st_name = efile.readIntE();
- symbol.st_info = efile.readByte();
- symbol.st_other = efile.readByte();
- symbol.st_shndx = efile.readShortE();
- efile.readFullyE(addrArray);
- symbol.st_value = new Addr64(addrArray);
- symbol.st_size = readUnsignedLong(efile);
- }
- break;
- case ELFhdr.ELFCLASSNONE:
- default:
- throw new IOException("Unknown ELF class " + ehdr.e_ident[ELFhdr.EI_CLASS]); //$NON-NLS-1$
+ try (ElfSectionIterator elfIterator = symbolIterator(section)) {
+ while (elfIterator.hasNext()) {
+ Symbol symbol = elfIterator.next();
+ if (symbol.st_info == 0)
+ continue;
+ symList.add(symbol);
}
- if (symbol.st_info == 0)
- continue;
- symList.add(symbol);
}
Symbol[] results = symList.toArray(new Symbol[0]);
Arrays.sort(results);
return results;
}
+ /**
+ * Get a symbol iterator
+ * @param section the section to iterate over
+ * @return an iterator that returns symbols of a given section
+ * @throws IOException If the file is corrupt
+ * @since 7.0
+ */
+ public ElfSectionIterator symbolIterator(Section section) throws IOException {
+ return new ElfSectionIterator(efile, ehdr.e_ident[ELFhdr.EI_CLASS], section, ehdr.e_ident[ELFhdr.EI_CLASS]);
+ }
+
public void loadSymbols() throws IOException {
+ Section symbolsTableSection = null;
+ Section dynamicSymbolSection = null;
if (symbols == null) {
Section section[] = getSections(Section.SHT_SYMTAB);
if (section.length > 0) {
- symtab_sym = section[0];
- symtab_symbols = loadSymbolsBySection(section[0]);
+ symbolsTableSection = section[0];
+ symbolsTable = loadSymbolsBySection(section[0]);
} else {
- symtab_sym = null;
- symtab_symbols = new Symbol[0];
+ symbolsTable = new Symbol[0];
}
section = getSections(Section.SHT_DYNSYM);
if (section.length > 0) {
- dynsym_sym = section[0];
- dynsym_symbols = loadSymbolsBySection(section[0]);
+ dynamicSymbolSection = section[0];
+ dynamicSymbols = loadSymbolsBySection(section[0]);
} else {
- dynsym_sym = null;
- dynsym_symbols = new Symbol[0];
+ dynamicSymbols = new Symbol[0];
}
- if (symtab_sym != null) {
- // sym = symtab_sym;
- symbols = symtab_symbols;
- } else if (dynsym_sym != null) {
- // sym = dynsym_sym;
- symbols = dynsym_symbols;
+ if (symbolsTableSection != null) {
+ symbols = symbolsTable;
+ } else if (dynamicSymbolSection != null) {
+ symbols = dynamicSymbols;
}
}
}
@@ -1162,11 +1242,11 @@ public class Elf {
}
public Symbol[] getDynamicSymbols() {
- return dynsym_symbols;
+ return dynamicSymbols;
}
public Symbol[] getSymtabSymbols() {
- return symtab_symbols;
+ return symbolsTable;
}
/* return the address of the function that address is in */
@@ -1239,4 +1319,16 @@ public class Elf {
}
return result;
}
+
+ /**
+ * Exception indicating that {@link ELFhdr#ELFCLASSNONE} header is read.
+ *
+ * @since 7.2
+ */
+ public static class ElfClassNoneException extends IOException {
+
+ ElfClassNoneException(String message) {
+ super(message);
+ }
+ }
}
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/elf/ElfHelper.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/elf/ElfHelper.java
index b5063ff16df..7ce48e1f3bf 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/elf/ElfHelper.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/elf/ElfHelper.java
@@ -26,7 +26,7 @@ import org.eclipse.cdt.utils.elf.Elf.Symbol;
*
* @see Elf
*/
-public class ElfHelper {
+public class ElfHelper implements AutoCloseable {
private Elf elf;
private Elf.Symbol[] dynsyms;
@@ -34,6 +34,11 @@ public class ElfHelper {
private Elf.Section[] sections;
private Elf.Dynamic[] dynamics;
+ @Override
+ public void close() {
+ dispose();
+ }
+
public void dispose() {
if (elf != null) {
elf.dispose();
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/elf/parser/ElfBinaryArchive.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/elf/parser/ElfBinaryArchive.java
index 413e7eb386a..a4affdd11c3 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/elf/parser/ElfBinaryArchive.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/elf/parser/ElfBinaryArchive.java
@@ -32,15 +32,14 @@ public class ElfBinaryArchive extends BinaryFile implements IBinaryArchive {
private ArrayList<IBinaryObject> children;
- public ElfBinaryArchive(IBinaryParser parser, IPath p) throws IOException {
- super(parser, p, IBinaryFile.ARCHIVE);
- new AR(p.toOSString()).dispose(); // check file type
+ public ElfBinaryArchive(IBinaryParser parser, IPath path) throws IOException {
+ super(parser, path, IBinaryFile.ARCHIVE);
+ try (AR ar = new AR(path.toOSString())) {
+ // create the object just to check file type
+ }
children = new ArrayList<>(5);
}
- /**
- * @see org.eclipse.cdt.core.IBinaryParser.IBinaryArchive#getObjects()
- */
@Override
public IBinaryObject[] getObjects() {
if (hasChanged()) {
@@ -71,7 +70,7 @@ public class ElfBinaryArchive extends BinaryFile implements IBinaryArchive {
}
/**
- * @deprecated use {@link ElfBinaryArchive#createArchiveMembers(ARHeader[])}
+ * @deprecated use {@link #createArchiveMembers(ARHeader[])}
*/
@SuppressWarnings({ "unchecked", "rawtypes" })
@Deprecated
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/elf/parser/ElfBinaryObject.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/elf/parser/ElfBinaryObject.java
index 9f180c39e58..1edf66298ce 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/elf/parser/ElfBinaryObject.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/elf/parser/ElfBinaryObject.java
@@ -61,9 +61,6 @@ public class ElfBinaryObject extends BinaryObjectAdapter {
fElfAttributes = elfAttributes;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.utils.BinaryObjectAdapter#getName()
- */
@Override
public String getName() {
if (header != null) {
@@ -72,9 +69,6 @@ public class ElfBinaryObject extends BinaryObjectAdapter {
return super.getName();
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IBinaryParser.IBinaryFile#getContents()
- */
@Override
public InputStream getContents() throws IOException {
if (getPath() != null && header != null) {
@@ -83,9 +77,6 @@ public class ElfBinaryObject extends BinaryObjectAdapter {
return super.getContents();
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IBinaryParser.IBinaryObject#getSymbols()
- */
@Override
public ISymbol[] getSymbols() {
// Call the hasChanged first, to initialize the timestamp
@@ -99,9 +90,6 @@ public class ElfBinaryObject extends BinaryObjectAdapter {
return symbols;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.utils.BinaryObjectAdapter#getBinaryObjectInfo()
- */
@Override
protected BinaryObjectInfo getBinaryObjectInfo() {
// Call the hasChanged first, to initialize the timestamp
@@ -123,27 +111,15 @@ public class ElfBinaryObject extends BinaryObjectAdapter {
}
protected void loadAll() throws IOException {
- ElfHelper helper = null;
- try {
- helper = getElfHelper();
+ try (ElfHelper helper = getElfHelper()) {
loadInfo(helper);
loadSymbols(helper);
- } finally {
- if (helper != null) {
- helper.dispose();
- }
}
}
protected void loadInfo() throws IOException {
- ElfHelper helper = null;
- try {
- helper = getElfHelper();
+ try (ElfHelper helper = getElfHelper()) {
loadInfo(helper);
- } finally {
- if (helper != null) {
- helper.dispose();
- }
}
}
@@ -219,9 +195,6 @@ public class ElfBinaryObject extends BinaryObjectAdapter {
return super.getAdapter(adapter);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.utils.BinaryObjectAdapter#getAddressFactory()
- */
@Override
public IAddressFactory getAddressFactory() {
if (addressFactory == null) {
@@ -239,9 +212,6 @@ public class ElfBinaryObject extends BinaryObjectAdapter {
return addressFactory;
}
- /*
- * @see org.eclipse.cdt.utils.BinaryObjectAdapter#isLittleEndian()
- */
@Override
public boolean isLittleEndian() {
if (fElfAttributes != null) {
@@ -250,9 +220,6 @@ public class ElfBinaryObject extends BinaryObjectAdapter {
return super.isLittleEndian();
}
- /*
- * @see org.eclipse.cdt.utils.BinaryObjectAdapter#getCPU()
- */
@Override
public String getCPU() {
if (fElfAttributes != null) {
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/elf/parser/ElfParser.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/elf/parser/ElfParser.java
index 413295e5b34..0e4da98b046 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/elf/parser/ElfParser.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/elf/parser/ElfParser.java
@@ -29,17 +29,13 @@ import org.eclipse.cdt.utils.AR;
import org.eclipse.cdt.utils.elf.Elf;
import org.eclipse.cdt.utils.elf.Elf.Attribute;
import org.eclipse.cdt.utils.elf.Elf.ELFhdr;
+import org.eclipse.cdt.utils.elf.Elf.ElfClassNoneException;
import org.eclipse.cdt.utils.elf.Elf.PHdr;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IStatus;
-/**
- */
public class ElfParser extends AbstractCExtension implements IBinaryParser {
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IBinaryParser#getBinary(org.eclipse.core.runtime.IPath)
- */
@Override
public IBinaryFile getBinary(IPath path) throws IOException {
return getBinary(null, path);
@@ -95,25 +91,16 @@ public class ElfParser extends AbstractCExtension implements IBinaryParser {
return binary;
}
- /**
- * @see org.eclipse.cdt.core.IBinaryParser#getFormat()
- */
@Override
public String getFormat() {
return "ELF"; //$NON-NLS-1$
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IBinaryParser#isBinary(byte[], org.eclipse.core.runtime.IPath)
- */
@Override
public boolean isBinary(byte[] array, IPath path) {
return Elf.isElfHeader(array) || AR.isARHeader(array);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IBinaryParser#getBufferSize()
- */
@Override
public int getHintBufferSize() {
return 128;
@@ -190,10 +177,16 @@ public class ElfParser extends AbstractCExtension implements IBinaryParser {
try {
/* No PHdr.PT_INTERP found in the hints meaning we need to read the file itself */
- return Arrays.stream(new Elf(path.toOSString()).getPHdrs()).anyMatch(phdr -> phdr.p_type == PHdr.PT_INTERP);
- } catch (IOException e) {
+ return Arrays.stream(getPHdrs(path)).anyMatch(phdr -> phdr.p_type == PHdr.PT_INTERP);
+ } catch (ElfClassNoneException e) {
CCorePlugin.log(e);
}
return false;
}
+
+ private static PHdr[] getPHdrs(IPath path) throws IOException {
+ try (Elf elf = new Elf(path.toOSString())) {
+ return elf.getPHdrs();
+ }
+ }
}
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/elf/parser/GNUElfBinaryObject.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/elf/parser/GNUElfBinaryObject.java
index d0c40e2022c..7f4d4e9c12a 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/elf/parser/GNUElfBinaryObject.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/elf/parser/GNUElfBinaryObject.java
@@ -142,9 +142,6 @@ public class GNUElfBinaryObject extends ElfBinaryObject {
return stream;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.utils.elf.parser.ElfBinaryObject#loadSymbols(org.eclipse.cdt.utils.elf.ElfHelper)
- */
@Override
protected void loadSymbols(ElfHelper helper) throws IOException {
symbolLoadingAddr2line = getAddr2line(false);
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/elf/parser/GNUElfParser.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/elf/parser/GNUElfParser.java
index 3c1523847e7..fc64a18ec66 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/elf/parser/GNUElfParser.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/elf/parser/GNUElfParser.java
@@ -19,55 +19,34 @@ import org.eclipse.cdt.utils.DefaultGnuToolFactory;
import org.eclipse.cdt.utils.IGnuToolFactory;
import org.eclipse.core.runtime.IPath;
-/**
- * GNUElfParser
- */
public class GNUElfParser extends ElfParser {
private IGnuToolFactory toolFactory;
- /**
- * @see org.eclipse.cdt.core.IBinaryParser#getFormat()
- */
@Override
public String getFormat() {
return "GNU ELF"; //$NON-NLS-1$
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.utils.elf.parser.ElfParser#createBinaryCore(org.eclipse.core.runtime.IPath)
- */
@Override
protected IBinaryObject createBinaryCore(IPath path) throws IOException {
return new GNUElfBinaryObject(this, path, IBinaryFile.CORE);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.utils.elf.parser.ElfParser#createBinaryExecutable(org.eclipse.core.runtime.IPath)
- */
@Override
protected IBinaryExecutable createBinaryExecutable(IPath path) throws IOException {
return new GNUElfBinaryExecutable(this, path);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.utils.elf.parser.ElfParser#createBinaryObject(org.eclipse.core.runtime.IPath)
- */
@Override
protected IBinaryObject createBinaryObject(IPath path) throws IOException {
return new GNUElfBinaryObject(this, path, IBinaryFile.OBJECT);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.utils.elf.parser.ElfParser#createBinaryShared(org.eclipse.core.runtime.IPath)
- */
@Override
protected IBinaryShared createBinaryShared(IPath path) throws IOException {
return new GNUElfBinaryShared(this, path);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.utils.elf.parser.ElfParser#createBinaryArchive(org.eclipse.core.runtime.IPath)
- */
@Override
protected IBinaryArchive createBinaryArchive(IPath path) throws IOException {
return new GNUElfBinaryArchive(this, path);
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/elf/parser/GNUSymbol.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/elf/parser/GNUSymbol.java
index 056fd1a0f00..e85425dd8b2 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/elf/parser/GNUSymbol.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/elf/parser/GNUSymbol.java
@@ -31,9 +31,6 @@ public class GNUSymbol extends Symbol {
super(binary, name, type, addr, size);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.utils.Symbol#getLineNumber(long)
- */
@Override
public int getLineNumber(long offset) {
int line = -1;
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/envvar/EnvVarOperationProcessor.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/envvar/EnvVarOperationProcessor.java
index 1d283d5f299..bbeab8a042c 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/envvar/EnvVarOperationProcessor.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/envvar/EnvVarOperationProcessor.java
@@ -19,7 +19,6 @@ import java.util.List;
import org.eclipse.cdt.core.envvar.EnvironmentVariable;
import org.eclipse.cdt.core.envvar.IEnvironmentVariable;
-import org.eclipse.cdt.internal.core.envvar.EnvironmentVariableManager;
/**
* This is an utility class that implements environment variable operations
@@ -225,7 +224,6 @@ public class EnvVarOperationProcessor {
/**
* normalizes the variable name. That is: removes prepended and appended spaces
- * and converts the name to upper-case for Win32 systems
* @return the normalized name or <code>null</code> in case the name is not valid
*/
static public String normalizeName(String name) {
@@ -233,8 +231,6 @@ public class EnvVarOperationProcessor {
return null;
if ("".equals(name = name.trim())) //$NON-NLS-1$
return null;
- if (!EnvironmentVariableManager.getDefault().isVariableCaseSensitive())
- name = name.toUpperCase();
return name;
}
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/envvar/StorableEnvironment.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/envvar/StorableEnvironment.java
index ba45db85862..41f0c55a140 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/envvar/StorableEnvironment.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/envvar/StorableEnvironment.java
@@ -20,7 +20,6 @@ import java.util.Map;
import org.eclipse.cdt.core.envvar.IEnvironmentVariable;
import org.eclipse.cdt.core.settings.model.ICStorageElement;
-import org.eclipse.cdt.internal.core.envvar.EnvironmentVariableManager;
import org.eclipse.cdt.internal.core.settings.model.ExceptionFactory;
import org.eclipse.cdt.utils.envvar.StorableEnvironmentLoader.ISerializeInfo;
@@ -315,8 +314,6 @@ public class StorableEnvironment {
String getNameForMap(String name) {
if (name == null || (name = name.trim()).length() == 0)
return null;
- if (!EnvironmentVariableManager.getDefault().isVariableCaseSensitive())
- return name.toUpperCase();
return name;
}
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/macho/AR.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/macho/AR.java
index cc7ebb714f8..9eb8dbc2cf7 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/macho/AR.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/macho/AR.java
@@ -29,13 +29,18 @@ import org.eclipse.cdt.core.CCorePlugin;
* class operations.
* @see ARHeader
*/
-public class AR {
+public class AR implements AutoCloseable {
protected String filename;
protected ERandomAccessFile efile;
protected long strtbl_pos = -1;
private ARHeader[] headers;
+ @Override
+ public void close() {
+ dispose();
+ }
+
public void dispose() {
try {
if (efile != null) {
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/macho/MachO.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/macho/MachO.java
index 4bd96f5bd2c..91b70fc5629 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/macho/MachO.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/macho/MachO.java
@@ -30,7 +30,7 @@ import org.eclipse.cdt.utils.debug.stabs.StabsReader;
// test checkin
/**
- * @deprecated. Deprecated as of CDT 6.1. Use 64 bit version {@link MachO64}.
+ * @deprecated Deprecated as of CDT 6.1. Use 64 bit version {@link MachO64}.
* This class is planned for removal in next major release.
*/
@Deprecated
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/macho/MachOHelper.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/macho/MachOHelper.java
index 620d4c651cc..b95658d9790 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/macho/MachOHelper.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/macho/MachOHelper.java
@@ -23,11 +23,11 @@ import org.eclipse.cdt.utils.macho.MachO.Section;
import org.eclipse.cdt.utils.macho.MachO.Symbol;
/**
- * @deprecated. Deprecated as of CDT 6.1. Use 64 bit version {@link MachOHelper64}.
+ * <code>MachOHelper</code> is a wrapper class for the <code>MachO</code> class
+ * to provide higher level API for sorting/searching the MachO data.
+ *
+ * @deprecated Deprecated as of CDT 6.1. Use 64 bit version {@link MachOHelper64}.
* This class is planned for removal in next major release.
- * <br>
- * <code>MachOHelper</code> is a wrapper class for the <code>MachO</code> class
- * to provide higher level API for sorting/searching the MachO data.
*
* @see MachO
*/
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/macho/parser/MachOBinaryArchive.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/macho/parser/MachOBinaryArchive.java
index da20d640931..e06d73de0a4 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/macho/parser/MachOBinaryArchive.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/macho/parser/MachOBinaryArchive.java
@@ -25,7 +25,7 @@ import org.eclipse.cdt.utils.macho.AR;
import org.eclipse.core.runtime.IPath;
/**
- * @deprecated. Deprecated as of CDT 6.1. Use 64 bit version {@link MachOBinaryArchive64}.
+ * @deprecated Deprecated as of CDT 6.1. Use 64 bit version {@link MachOBinaryArchive64}.
* This class is planned for removal in next major release.
*/
@Deprecated
@@ -35,7 +35,9 @@ public class MachOBinaryArchive extends BinaryFile implements IBinaryArchive {
public MachOBinaryArchive(IBinaryParser parser, IPath p) throws IOException {
super(parser, p, IBinaryFile.ARCHIVE);
- new AR(p.toOSString()).dispose(); // check file type
+ try (AR ar = new AR(p.toOSString())) {
+ // create the object just to check file type
+ }
children = new ArrayList<>(5);
}
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/macho/parser/MachOBinaryArchive64.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/macho/parser/MachOBinaryArchive64.java
index 8de3bf3cec9..3a09e1b258f 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/macho/parser/MachOBinaryArchive64.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/macho/parser/MachOBinaryArchive64.java
@@ -33,7 +33,10 @@ public class MachOBinaryArchive64 extends BinaryFile implements IBinaryArchive {
public MachOBinaryArchive64(IBinaryParser parser, IPath p) throws IOException {
super(parser, p, IBinaryFile.ARCHIVE);
- new AR(p.toOSString()).dispose(); // check file type
+ try (AR ar = new AR(p.toOSString())) {
+ // create the object just to check file type
+
+ }
children = new ArrayList<>(5);
}
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/macho/parser/MachOBinaryExecutable.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/macho/parser/MachOBinaryExecutable.java
index 060d284f3ff..bfb5de30f52 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/macho/parser/MachOBinaryExecutable.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/macho/parser/MachOBinaryExecutable.java
@@ -19,7 +19,7 @@ import org.eclipse.cdt.core.IBinaryParser.IBinaryFile;
import org.eclipse.core.runtime.IPath;
/**
- * @deprecated. Deprecated as of CDT 6.1. Use 64 bit version {@link MachOBinaryExecutable64}.
+ * @deprecated Deprecated as of CDT 6.1. Use 64 bit version {@link MachOBinaryExecutable64}.
* This class is planned for removal in next major release.
*/
@Deprecated
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/macho/parser/MachOBinaryObject.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/macho/parser/MachOBinaryObject.java
index 37495287cf8..1bf78ab259a 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/macho/parser/MachOBinaryObject.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/macho/parser/MachOBinaryObject.java
@@ -40,7 +40,7 @@ import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
/**
- * @deprecated. Deprecated as of CDT 6.1. Use 64 bit version {@link MachOBinaryObject64}.
+ * @deprecated Deprecated as of CDT 6.1. Use 64 bit version {@link MachOBinaryObject64}.
* This class is planned for removal in next major release.
*/
@Deprecated
@@ -75,9 +75,6 @@ public class MachOBinaryObject extends BinaryObjectAdapter {
super(parser, path, type);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.utils.BinaryObjectAdapter#getBinaryObjectInfo()
- */
@Override
protected BinaryObjectInfo getBinaryObjectInfo() {
// we don't use this method
@@ -85,9 +82,6 @@ public class MachOBinaryObject extends BinaryObjectAdapter {
return new BinaryObjectInfo();
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IBinaryParser.IBinaryFile#getContents()
- */
@Override
public InputStream getContents() throws IOException {
if (getPath() != null && header != null) {
@@ -108,9 +102,6 @@ public class MachOBinaryObject extends BinaryObjectAdapter {
return null;
}
- /**
- * @see org.eclipse.cdt.core.IBinaryParser.IBinaryObject#getName()
- */
@Override
public String getName() {
if (header != null) {
@@ -119,9 +110,6 @@ public class MachOBinaryObject extends BinaryObjectAdapter {
return super.getName();
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.utils.BinaryObjectAdapter#getAddressFactory()
- */
@Override
public IAddressFactory getAddressFactory() {
if (addressFactory == null) {
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/macho/parser/MachOBinaryObject64.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/macho/parser/MachOBinaryObject64.java
index e59087fae4c..342ec03a0c1 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/macho/parser/MachOBinaryObject64.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/macho/parser/MachOBinaryObject64.java
@@ -78,9 +78,6 @@ public class MachOBinaryObject64 extends BinaryObjectAdapter {
super(parser, path, type);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.utils.BinaryObjectAdapter#getBinaryObjectInfo()
- */
@Override
protected BinaryObjectInfo getBinaryObjectInfo() {
// we don't use this method
@@ -88,9 +85,6 @@ public class MachOBinaryObject64 extends BinaryObjectAdapter {
return new BinaryObjectInfo();
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IBinaryParser.IBinaryFile#getContents()
- */
@Override
public InputStream getContents() throws IOException {
if (getPath() != null && header != null) {
@@ -111,9 +105,6 @@ public class MachOBinaryObject64 extends BinaryObjectAdapter {
return null;
}
- /**
- * @see org.eclipse.cdt.core.IBinaryParser.IBinaryObject#getName()
- */
@Override
public String getName() {
if (header != null) {
@@ -122,9 +113,6 @@ public class MachOBinaryObject64 extends BinaryObjectAdapter {
return super.getName();
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.utils.BinaryObjectAdapter#getAddressFactory()
- */
@Override
public IAddressFactory getAddressFactory() {
if (addressFactory == null) {
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/macho/parser/MachOBinaryShared.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/macho/parser/MachOBinaryShared.java
index a6141d31b77..9fb11695ab2 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/macho/parser/MachOBinaryShared.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/macho/parser/MachOBinaryShared.java
@@ -19,7 +19,7 @@ import org.eclipse.cdt.core.IBinaryParser.IBinaryShared;
import org.eclipse.core.runtime.IPath;
/**
- * @deprecated. Deprecated as of CDT 6.1. Use 64 bit version {@link MachOBinaryShared64}.
+ * @deprecated Deprecated as of CDT 6.1. Use 64 bit version {@link MachOBinaryShared64}.
* This class is planned for removal in next major release.
*/
@Deprecated
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/macho/parser/MachOParser.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/macho/parser/MachOParser.java
index f52c50204df..04b579eb31b 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/macho/parser/MachOParser.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/macho/parser/MachOParser.java
@@ -27,15 +27,12 @@ import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
/**
- * @deprecated. Deprecated as of CDT 6.1. Use 64 bit version {@link MachOParser64}.
+ * @deprecated Deprecated as of CDT 6.1. Use 64 bit version {@link MachOParser64}.
* This class is planned for removal in next major release.
*/
@Deprecated
public class MachOParser extends AbstractCExtension implements IBinaryParser {
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IBinaryParser#getBinary(org.eclipse.core.runtime.IPath)
- */
@Override
public IBinaryFile getBinary(IPath path) throws IOException {
return getBinary(null, path);
@@ -88,33 +85,21 @@ public class MachOParser extends AbstractCExtension implements IBinaryParser {
return binary;
}
- /**
- * @see org.eclipse.cdt.core.IBinaryParser#getFormat()
- */
@Override
public String getFormat() {
return "MACHO"; //$NON-NLS-1$
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IBinaryParser#isBinary(byte[], org.eclipse.core.runtime.IPath)
- */
@Override
public boolean isBinary(byte[] array, IPath path) {
return MachO.isMachOHeader(array) || AR.isARHeader(array);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IBinaryParser#getBufferSize()
- */
@Override
public int getHintBufferSize() {
return 128;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.utils.IGnuToolProvider#getCPPFilt()
- */
public CPPFilt getCPPFilt() {
IPath cppFiltPath = getCPPFiltPath();
CPPFilt cppfilt = null;
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/macho/parser/MachOParser64.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/macho/parser/MachOParser64.java
index 8e39552a16d..348813add1f 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/macho/parser/MachOParser64.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/macho/parser/MachOParser64.java
@@ -31,9 +31,6 @@ import org.eclipse.core.runtime.Path;
*/
public class MachOParser64 extends AbstractCExtension implements IBinaryParser {
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IBinaryParser#getBinary(org.eclipse.core.runtime.IPath)
- */
@Override
public IBinaryFile getBinary(IPath path) throws IOException {
return getBinary(null, path);
@@ -86,33 +83,21 @@ public class MachOParser64 extends AbstractCExtension implements IBinaryParser {
return binary;
}
- /**
- * @see org.eclipse.cdt.core.IBinaryParser#getFormat()
- */
@Override
public String getFormat() {
return "MACHO"; //$NON-NLS-1$
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IBinaryParser#isBinary(byte[], org.eclipse.core.runtime.IPath)
- */
@Override
public boolean isBinary(byte[] array, IPath path) {
return MachO64.isMachOHeader(array) || AR.isARHeader(array);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IBinaryParser#getBufferSize()
- */
@Override
public int getHintBufferSize() {
return 128;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.utils.IGnuToolProvider#getCPPFilt()
- */
public CPPFilt getCPPFilt() {
IPath cppFiltPath = getCPPFiltPath();
CPPFilt cppfilt = null;
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/som/AR.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/som/AR.java
index 4499a1c88fa..1bbe85f8ade 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/som/AR.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/som/AR.java
@@ -26,7 +26,7 @@ import org.eclipse.cdt.utils.coff.ReadMemoryAccess;
*
* @author vhirsl
*/
-public class AR {
+public class AR implements AutoCloseable {
public static final String NL = System.getProperty("line.separator", "\n"); //$NON-NLS-1$ //$NON-NLS-2$
protected String filename;
@@ -190,6 +190,11 @@ public class AR {
lstHeader = new LSTHeader();
}
+ @Override
+ public void close() {
+ dispose();
+ }
+
public void dispose() {
try {
if (file != null) {
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/som/parser/SOMBinaryArchive.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/som/parser/SOMBinaryArchive.java
index 53cee864579..18cebb87dfe 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/som/parser/SOMBinaryArchive.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/som/parser/SOMBinaryArchive.java
@@ -39,13 +39,12 @@ public class SOMBinaryArchive extends BinaryFile implements IBinaryArchive {
*/
public SOMBinaryArchive(IBinaryParser parser, IPath path) throws IOException {
super(parser, path, IBinaryFile.ARCHIVE);
- new AR(path.toOSString()).dispose(); // check file type
+ try (AR ar = new AR(path.toOSString())) {
+ // create the object just to check file type
+ }
children = new ArrayList<>(5);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IBinaryParser.IBinaryArchive#getObjects()
- */
@Override
public IBinaryObject[] getObjects() {
if (hasChanged()) {
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/som/parser/SOMBinaryObject.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/som/parser/SOMBinaryObject.java
index f83cfe673d0..646b8f5679d 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/som/parser/SOMBinaryObject.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/som/parser/SOMBinaryObject.java
@@ -300,9 +300,6 @@ public class SOMBinaryObject extends BinaryObjectAdapter {
return super.getAdapter(adapter);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.utils.BinaryObjectAdapter#getAddressFactory()
- */
@Override
public IAddressFactory getAddressFactory() {
if (addressFactory == null) {
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/som/parser/SOMParser.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/som/parser/SOMParser.java
index ec5e913c386..15726fa12a5 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/som/parser/SOMParser.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/som/parser/SOMParser.java
@@ -33,9 +33,6 @@ import org.eclipse.core.runtime.IPath;
public class SOMParser extends AbstractCExtension implements IBinaryParser {
private DefaultGnuToolFactory toolFactory;
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IBinaryParser#getBinary(byte[], org.eclipse.core.runtime.IPath)
- */
@Override
public IBinaryFile getBinary(byte[] hints, IPath path) throws IOException {
if (path == null) {
@@ -83,33 +80,21 @@ public class SOMParser extends AbstractCExtension implements IBinaryParser {
return binary;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IBinaryParser#getBinary(org.eclipse.core.runtime.IPath)
- */
@Override
public IBinaryFile getBinary(IPath path) throws IOException {
return getBinary(null, path);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IBinaryParser#getFormat()
- */
@Override
public String getFormat() {
return "SOM"; //$NON-NLS-1$
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IBinaryParser#isBinary(byte[], org.eclipse.core.runtime.IPath)
- */
@Override
public boolean isBinary(byte[] hints, IPath path) {
return SOM.isSOMHeader(hints) || AR.isARHeader(hints);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IBinaryParser#getHintBufferSize()
- */
@Override
public int getHintBufferSize() {
return 512; // size of file header
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/som/parser/SomSymbol.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/som/parser/SomSymbol.java
index 9db0cd5e549..aa04d490ac1 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/som/parser/SomSymbol.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/som/parser/SomSymbol.java
@@ -54,9 +54,6 @@ public class SomSymbol extends Symbol {
super(binary, name, type, addr, size);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IBinaryParser.ISymbol#getLineNumber(long)
- */
@Override
public int getLineNumber(long offset) {
int line = -1;
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/xcoff/AR.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/xcoff/AR.java
index aea7534e873..43abe364888 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/xcoff/AR.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/xcoff/AR.java
@@ -30,7 +30,7 @@ import org.eclipse.cdt.core.CCorePlugin;
*
* @author vhirsl
*/
-public class AR {
+public class AR implements AutoCloseable {
protected String filename;
private RandomAccessFile file;
private ARHeader header;
@@ -105,6 +105,11 @@ public class AR {
}
}
+ @Override
+ public void close() {
+ dispose();
+ }
+
public void dispose() {
try {
if (file != null) {
@@ -365,4 +370,5 @@ public class AR {
e.printStackTrace();
}
}
+
}
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/xcoff/XCoff32.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/xcoff/XCoff32.java
index 47f00173dcc..129d45cf232 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/xcoff/XCoff32.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/xcoff/XCoff32.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004, 2016 IBM Corporation and others.
+ * Copyright (c) 2004, 2020 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -9,21 +9,21 @@
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
- * IBM - Initial API and implementation
+ * IBM - Initial API and implementation
+ * Alexander Fedorov (ArSysOp) - Bug 561992
*******************************************************************************/
package org.eclipse.cdt.utils.xcoff;
import java.io.EOFException;
import java.io.IOException;
import java.io.RandomAccessFile;
+import java.text.DateFormat;
import java.util.ArrayList;
import java.util.Date;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.utils.coff.ReadMemoryAccess;
-import com.ibm.icu.text.DateFormat;
-
/**
* Representation of AIX XCOFF32 binary format
*
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/xcoff/parser/XCOFFBinaryArchive.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/xcoff/parser/XCOFFBinaryArchive.java
index 38790d0050f..d0cdf5f7299 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/xcoff/parser/XCOFFBinaryArchive.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/xcoff/parser/XCOFFBinaryArchive.java
@@ -39,13 +39,12 @@ public class XCOFFBinaryArchive extends BinaryFile implements IBinaryArchive {
*/
public XCOFFBinaryArchive(IBinaryParser parser, IPath path) throws IOException {
super(parser, path, IBinaryFile.ARCHIVE);
- new AR(path.toOSString()).dispose(); // check file type
+ try (AR ar = new AR(path.toOSString())) {
+ // create the object just to check file type
+ }
children = new ArrayList<>(5);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.IBinaryParser.IBinaryArchive#getObjects()
- */
@Override
public IBinaryObject[] getObjects() {
if (hasChanged()) {
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/xcoff/parser/XCOFFBinaryObject.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/xcoff/parser/XCOFFBinaryObject.java
index 28022da9b01..da955ee9fbc 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/xcoff/parser/XCOFFBinaryObject.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/xcoff/parser/XCOFFBinaryObject.java
@@ -94,9 +94,6 @@ public class XCOFFBinaryObject extends BinaryObjectAdapter {
return info;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.utils.BinaryObjectAdapter#getName()
- */
@Override
public String getName() {
if (header != null) {
@@ -302,9 +299,6 @@ public class XCOFFBinaryObject extends BinaryObjectAdapter {
return super.getAdapter(adapter);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.utils.BinaryObjectAdapter#getAddressFactory()
- */
@Override
public IAddressFactory getAddressFactory() {
if (addressFactory == null) {
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/xcoff/parser/XCoffSymbol.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/xcoff/parser/XCoffSymbol.java
index a2e25985765..d1caf448b0f 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/xcoff/parser/XCoffSymbol.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/xcoff/parser/XCoffSymbol.java
@@ -61,9 +61,6 @@ public class XCoffSymbol extends Symbol {
super(binary, name, type, addr, size);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.utils.Symbol#getLineNumber(long)
- */
@Override
public int getLineNumber(long offset) {
int line = -1;
diff --git a/core/org.eclipse.cdt.ui.tests/.classpath b/core/org.eclipse.cdt.ui.tests/.classpath
index b4784f4c94f..1f63a20029a 100644
--- a/core/org.eclipse.cdt.ui.tests/.classpath
+++ b/core/org.eclipse.cdt.ui.tests/.classpath
@@ -1,8 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="src" path="ui"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src">
+ <attributes>
+ <attribute name="test" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="src" path="ui">
+ <attributes>
+ <attribute name="test" value="true"/>
+ </attributes>
+ </classpathentry>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/core/org.eclipse.cdt.ui.tests/.settings/org.eclipse.core.resources.prefs b/core/org.eclipse.cdt.ui.tests/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/core/org.eclipse.cdt.ui.tests/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/core/org.eclipse.cdt.ui.tests/.settings/org.eclipse.jdt.core.prefs b/core/org.eclipse.cdt.ui.tests/.settings/org.eclipse.jdt.core.prefs
index ad05599159f..5b1c443114d 100644
--- a/core/org.eclipse.cdt.ui.tests/.settings/org.eclipse.jdt.core.prefs
+++ b/core/org.eclipse.cdt.ui.tests/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/core/org.eclipse.cdt.ui.tests/.settings/org.eclipse.jdt.ui.prefs b/core/org.eclipse.cdt.ui.tests/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/core/org.eclipse.cdt.ui.tests/.settings/org.eclipse.jdt.ui.prefs
+++ b/core/org.eclipse.cdt.ui.tests/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/core/org.eclipse.cdt.ui.tests/META-INF/MANIFEST.MF b/core/org.eclipse.cdt.ui.tests/META-INF/MANIFEST.MF
index dd754c7084f..79c3b898b97 100644
--- a/core/org.eclipse.cdt.ui.tests/META-INF/MANIFEST.MF
+++ b/core/org.eclipse.cdt.ui.tests/META-INF/MANIFEST.MF
@@ -1,8 +1,8 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
-Bundle-Name: org.eclipse.cdt.ui.tests
+Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.ui.tests; singleton:=true
-Bundle-Version: 5.5.200.qualifier
+Bundle-Version: 5.5.300.qualifier
Bundle-Activator: org.eclipse.cdt.ui.testplugin.CTestPlugin
Bundle-Localization: plugin
Export-Package: org.eclipse.cdt.ui.testplugin,
@@ -34,14 +34,15 @@ Require-Bundle: org.eclipse.jface.text,
org.eclipse.compare,
org.eclipse.ui.console,
org.eclipse.core.expressions,
- com.ibm.icu,
org.eclipse.ltk.core.refactoring;bundle-version="3.4.0",
org.eclipse.core.filesystem;bundle-version="1.2.0",
org.eclipse.ltk.ui.refactoring,
org.eclipse.osgi,
+ org.eclipse.e4.core.contexts;bundle-version="[1.8.300,2.0.0)",
org.mockito,
- org.hamcrest
+ org.hamcrest.core,
+ org.hamcrest.library
Bundle-ActivationPolicy: lazy
-Bundle-Vendor: Eclipse CDT
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-Vendor: %providerName
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Automatic-Module-Name: org.eclipse.cdt.ui.tests
diff --git a/core/org.eclipse.cdt.ui.tests/about.html b/core/org.eclipse.cdt.ui.tests/about.html
index 164f781a8fd..b3134865230 100644
--- a/core/org.eclipse.cdt.ui.tests/about.html
+++ b/core/org.eclipse.cdt.ui.tests/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/core/org.eclipse.cdt.ui.tests/plugin.properties b/core/org.eclipse.cdt.ui.tests/plugin.properties
index 539b3adfb34..b436c948a08 100644
--- a/core/org.eclipse.cdt.ui.tests/plugin.properties
+++ b/core/org.eclipse.cdt.ui.tests/plugin.properties
@@ -11,6 +11,10 @@
# Contributors:
# Sergey Prigogin (Google) - initial implementation
###############################################################################
+
+pluginName = org.eclipse.cdt.ui.tests
+providerName = Eclipse CDT
+
category.CodeReduction=C++ Code Reduction
command.RemoveFunctionBodies.name=Remove Function Bodies
command.RemoveFunctionBodies.label=Remove &Function Bodies
diff --git a/core/org.eclipse.cdt.ui.tests/pom.xml b/core/org.eclipse.cdt.ui.tests/pom.xml
index 07807c3a365..e46cdd1f946 100644
--- a/core/org.eclipse.cdt.ui.tests/pom.xml
+++ b/core/org.eclipse.cdt.ui.tests/pom.xml
@@ -1,4 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2011, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
@@ -7,11 +17,11 @@
<parent>
<groupId>org.eclipse.cdt</groupId>
<artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
+ <version>10.7.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
- <version>5.5.200-SNAPSHOT</version>
+ <version>5.5.300-SNAPSHOT</version>
<artifactId>org.eclipse.cdt.ui.tests</artifactId>
<packaging>eclipse-test-plugin</packaging>
@@ -66,10 +76,14 @@
<useUIThread>true</useUIThread>
<argLine>${tycho.testArgLine} ${base.ui.test.vmargs} ${extra.vmargs.indexer.timeout} ${extra.vmargs.displayhelper.timeoutmultipler}</argLine>
<appArgLine>-pluginCustomization ${basedir}/../../disable_intro_in_tests.ini</appArgLine>
- <includes>
- <include>**/AutomatedSuite.*</include>
- </includes>
- <testFailureIgnore>true</testFailureIgnore>
+ <excludes>
+ <!-- The default Excludes omits nested static classes, this reenables them.
+ See org.eclipse.cdt.core.parser.tests.ast2.cxx14.constexpr.ArrayTests.NonIndexingTests
+ for an example of a test that would not be run otherwise.
+ For reference, the default exclude is "**/*$*"
+ -->
+ <exclude></exclude>
+ </excludes>
</configuration>
</plugin>
<plugin>
diff --git a/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/reducer/RemoveUnusedDeclarationsRefactoring.java b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/reducer/RemoveUnusedDeclarationsRefactoring.java
index 9f6382f6c8a..a054be77ed4 100644
--- a/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/reducer/RemoveUnusedDeclarationsRefactoring.java
+++ b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/reducer/RemoveUnusedDeclarationsRefactoring.java
@@ -563,7 +563,7 @@ public class RemoveUnusedDeclarationsRefactoring extends CRefactoring {
* in the reverse order.
*/
private static class SortedNodeSet<T extends IASTNode> extends TreeSet<T> {
- private static final Comparator<IASTNode> COMPARATOR = new Comparator<IASTNode>() {
+ private static final Comparator<IASTNode> COMPARATOR = new Comparator<>() {
@Override
public int compare(IASTNode node1, IASTNode node2) {
int c = Integer.compare(ASTNodes.offset(node1), ASTNodes.offset(node2));
diff --git a/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/templateengine/AllTemplateEngineTestSuite.java b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/templateengine/AllTemplateEngineTestSuite.java
new file mode 100644
index 00000000000..134283bc2da
--- /dev/null
+++ b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/templateengine/AllTemplateEngineTestSuite.java
@@ -0,0 +1,33 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2017 Symbian Software Limited and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Bala Torati (Symbian) - Initial API and implementation
+ * Jonah Graham (Kichwa Coders) - converted to new style suite (Bug 515178)
+ *******************************************************************************/
+package org.eclipse.cdt.ui.tests.templateengine;
+
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+
+/**
+ * This is a TestSuite, the TestCases created to test Template engine are
+ * added to testsuite.
+ * The test suite will execute all the Testcases added to the Suite.
+ *
+ * @since 4.0
+ */
+@RunWith(Suite.class)
+@Suite.SuiteClasses({ TestTemplateEngine.class, TestTemplateCore.class, TestValueStore.class, TestSharedDefaults.class,
+ TestProcesses.class, TestTemplateEngineBugs.class,
+
+})
+public class AllTemplateEngineTestSuite {
+}
diff --git a/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/templateengine/AllTemplateEngineTests.java b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/templateengine/AllTemplateEngineTests.java
deleted file mode 100644
index c22995845be..00000000000
--- a/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/templateengine/AllTemplateEngineTests.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2017 Symbian Software Limited and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Bala Torati (Symbian) - Initial API and implementation
- * Jonah Graham (Kichwa Coders) - converted to new style suite (Bug 515178)
- *******************************************************************************/
-package org.eclipse.cdt.ui.tests.templateengine;
-
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-
-/**
- * This is a TestSuite, the TestCases created to test Template engine are
- * added to testsuite.
- * The test suite will execute all the Testcases added to the Suite.
- *
- * @since 4.0
- */
-@RunWith(Suite.class)
-@Suite.SuiteClasses({ TestTemplateEngine.class, TestTemplateCore.class, TestValueStore.class, TestSharedDefaults.class,
- TestProcesses.class, TestTemplateEngineBugs.class,
-
-})
-public class AllTemplateEngineTests {
-}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/AnnotationTestCase.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/AnnotationTestCase.java
index 499e76b365d..b77e1fff701 100644
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/AnnotationTestCase.java
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/AnnotationTestCase.java
@@ -36,7 +36,7 @@ import org.eclipse.ui.PartInitException;
* default is "src". To make it read comment from java class, you need to
* include this source directory (with test java files) into the build bundle.
*/
-public class AnnotationTestCase extends UITestCaseWithProject {
+public abstract class AnnotationTestCase extends UITestCaseWithProject {
private IAnnotationModel fAnnotationModel;
private Object fAnnotationModelLockObject;
protected Annotation[] annotations;
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/AutomatedSuite.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/AutomatedSuite.java
index bf6dbdccc28..cb98bc2b6c2 100644
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/AutomatedSuite.java
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/AutomatedSuite.java
@@ -40,7 +40,7 @@ import org.junit.runners.Suite;
org.eclipse.cdt.ui.tests.wizards.classwizard.ClassWizardTestSuite.class,
org.eclipse.cdt.ui.tests.wizards.settingswizards.SettingsWizardTestSuite.class,
org.eclipse.cdt.ui.tests.misc.MiscTestSuite.class, org.eclipse.cdt.ui.tests.editor.EditorTestSuite.class,
- org.eclipse.cdt.ui.tests.templateengine.AllTemplateEngineTests.class,
+ org.eclipse.cdt.ui.tests.templateengine.AllTemplateEngineTestSuite.class,
})
public class AutomatedSuite {
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/BaseUITestCase.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/BaseUITestCase.java
index 8de614ba976..5fec6d0cd01 100644
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/BaseUITestCase.java
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/BaseUITestCase.java
@@ -54,7 +54,7 @@ import org.eclipse.ui.WorkbenchException;
import org.eclipse.ui.handlers.IHandlerService;
import org.eclipse.ui.internal.WorkbenchPartReference;
-public class BaseUITestCase extends BaseTestCase {
+public abstract class BaseUITestCase extends BaseTestCase {
public BaseUITestCase() {
super();
}
@@ -98,6 +98,11 @@ public class BaseUITestCase extends BaseTestCase {
/**
* Reads multiple sections in comments from the source of the given class.
+ *
+ * Trailing whitespace can be removed by editor/clean-up actions. To enforce whitespace
+ * at end of line, use ${whitspace_eol}, which will be removed, but cause the
+ * whitespace to the left of it to be preserved.
+ *
* @since 4.0
*/
public StringBuilder[] getContentsForTest(int sections) throws IOException {
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/UITestCaseWithProject.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/UITestCaseWithProject.java
index e2b01844a5c..15db270316e 100644
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/UITestCaseWithProject.java
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/UITestCaseWithProject.java
@@ -27,6 +27,7 @@ import org.eclipse.cdt.core.model.ICElement;
import org.eclipse.cdt.core.model.ICProject;
import org.eclipse.cdt.core.testplugin.CProjectHelper;
import org.eclipse.cdt.core.testplugin.FileManager;
+import org.eclipse.cdt.core.testplugin.util.ModelJoiner;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/buildconsole/BuildConsolePartitionerEditDataTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/buildconsole/BuildConsolePartitionerEditDataTest.java
index 9730d6c57ce..c607d2fa917 100644
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/buildconsole/BuildConsolePartitionerEditDataTest.java
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/buildconsole/BuildConsolePartitionerEditDataTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2017 Kichwa Coders and others.
+ * Copyright (c) 2017 Kichwa Coders Ltd and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/callhierarchy/CallHierarchyBaseTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/callhierarchy/CallHierarchyBaseTest.java
index 426e3a21ffa..ca064a720ae 100644
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/callhierarchy/CallHierarchyBaseTest.java
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/callhierarchy/CallHierarchyBaseTest.java
@@ -37,7 +37,7 @@ import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.ide.IDE;
-public class CallHierarchyBaseTest extends BaseUITestCase {
+public abstract class CallHierarchyBaseTest extends BaseUITestCase {
private static int sProjectCounter = 0;
protected ICProject fCProject;
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/callhierarchy/CallHierarchyBugs.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/callhierarchy/CallHierarchyBugs.java
deleted file mode 100644
index f3399fc7344..00000000000
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/callhierarchy/CallHierarchyBugs.java
+++ /dev/null
@@ -1,506 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2012 Wind River Systems, Inc. and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Markus Schorn - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.ui.tests.callhierarchy;
-
-import org.eclipse.cdt.core.model.ICElement;
-import org.eclipse.cdt.internal.ui.callhierarchy.CHViewPart;
-import org.eclipse.cdt.internal.ui.callhierarchy.CallHierarchyUI;
-import org.eclipse.cdt.internal.ui.editor.CEditor;
-import org.eclipse.cdt.ui.CUIPlugin;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.swt.widgets.Tree;
-import org.eclipse.swt.widgets.TreeItem;
-import org.eclipse.ui.IPageLayout;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.IWorkbenchWindow;
-
-import junit.framework.Test;
-
-public class CallHierarchyBugs extends CallHierarchyBaseTest {
-
- public CallHierarchyBugs(String name) {
- super(name);
- }
-
- public static Test suite() {
- return suite(CallHierarchyBugs.class);
- }
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- restoreAllParts();
- }
-
- // class SomeClass {
- // public:
- // void method();
- // int field;
- // };
-
- // #include "SomeClass.h"
- // void SomeClass::method() {
- // field= 1;
- // }
- public void testCallHierarchyFromOutlineView_183941() throws Exception {
- StringBuilder[] contents = getContentsForTest(2);
- IFile file1 = createFile(getProject(), "SomeClass.h", contents[0].toString());
- IFile file2 = createFile(getProject(), "SomeClass.cpp", contents[1].toString());
- waitUntilFileIsIndexed(fIndex, file2);
-
- final CHViewPart ch = (CHViewPart) activateView(CUIPlugin.ID_CALL_HIERARCHY);
- final IViewPart outline = activateView(IPageLayout.ID_OUTLINE);
- final IWorkbenchWindow workbenchWindow = ch.getSite().getWorkbenchWindow();
-
- // open editor, check outline
- openEditor(file1);
- Tree outlineTree = checkTreeNode(outline, 0, "SomeClass").getParent();
- expandTreeItem(outlineTree, 0);
- TreeItem node = checkTreeNode(outlineTree, 0, 0, "method() : void");
-
- openCH(workbenchWindow, node);
- Tree chTree = checkTreeNode(ch, 0, "SomeClass::method() : void").getParent();
- checkTreeNode(chTree, 0, 1, null);
-
- ch.onSetShowReferencedBy(false);
- checkTreeNode(chTree, 0, "SomeClass::method() : void");
- checkTreeNode(chTree, 0, 0, "SomeClass::field : int");
- }
-
- // class SomeClass {
- // public:
- // void ambiguous_impl();
- // int ref1;
- // int ref2;
- // };
- //
- // void SomeClass::ambiguous_impl() {
- // ref1= 1;
- // }
- // void other() {}
-
- // #include "SomeClass.h"
- // void SomeClass::ambiguous_impl() {
- // ref2= 0;
- // }
- public void testCallHierarchyFromOutlineViewAmbiguous_183941() throws Exception {
- StringBuilder[] contents = getContentsForTest(2);
- IFile file1 = createFile(getProject(), "SomeClass.h", contents[0].toString());
- IFile file2 = createFile(getProject(), "SomeClass.cpp", contents[1].toString());
- waitUntilFileIsIndexed(fIndex, file2);
-
- final CHViewPart ch = (CHViewPart) activateView(CUIPlugin.ID_CALL_HIERARCHY);
- final IViewPart outline = activateView(IPageLayout.ID_OUTLINE);
- final IWorkbenchWindow workbenchWindow = ch.getSite().getWorkbenchWindow();
-
- // open editor, check outline
- openEditor(file1);
- TreeItem node1 = checkTreeNode(outline, 1, "SomeClass::ambiguous_impl() : void");
- Tree outlineTree = node1.getParent();
- TreeItem node2 = checkTreeNode(outlineTree, 2, "other() : void");
-
- // open and check call hierarchy
- openCH(workbenchWindow, node1);
- ch.onSetShowReferencedBy(false);
-
- Tree chTree = checkTreeNode(ch, 0, "SomeClass::ambiguous_impl() : void").getParent();
- checkTreeNode(chTree, 0, 0, "SomeClass::ref1 : int");
-
- // open and check call hierarchy
- openCH(workbenchWindow, node2);
- checkTreeNode(chTree, 0, "other() : void");
-
- // open editor, check outline
- openEditor(file2);
- outlineTree = checkTreeNode(outline, 0, "SomeClass.h").getParent();
- node1 = checkTreeNode(outlineTree, 1, "SomeClass::ambiguous_impl() : void");
-
- // open and check call hierarchy
- openCH(workbenchWindow, node1);
- ch.onSetShowReferencedBy(false);
- chTree = checkTreeNode(ch, 0, "SomeClass::ambiguous_impl() : void").getParent();
- checkTreeNode(chTree, 0, 0, "SomeClass::ref2 : int");
- }
-
- private void openCH(final IWorkbenchWindow workbenchWindow, TreeItem node1) {
- Object obj = node1.getData();
- assertTrue(obj instanceof ICElement);
- CallHierarchyUI.open(workbenchWindow, (ICElement) obj);
- }
-
- // class Base {
- // public:
- // virtual void vmethod();
- // void method();
- // };
- // class Derived : public Base {
- // public:
- // void vmethod();
- // void method();
- // };
- // void vrefs() {
- // Base* b= 0;
- // b->vmethod(); b->method();
- // }
- // void regRefs() {
- // Base* b= 0;
- // b->Base::vmethod(); b->Base::method();
- // }
- public void testPolyMorphicMethodCalls_156689() throws Exception {
- String content = getContentsForTest(1)[0].toString();
- IFile file = createFile(getProject(), "SomeClass.cpp", content);
- waitUntilFileIsIndexed(fIndex, file);
-
- final CHViewPart ch = (CHViewPart) activateView(CUIPlugin.ID_CALL_HIERARCHY);
- final IWorkbenchWindow workbenchWindow = ch.getSite().getWorkbenchWindow();
-
- // open editor, check outline
- CEditor editor = openEditor(file);
- int idx = content.indexOf("vmethod");
- editor.selectAndReveal(idx, 0);
- openCallHierarchy(editor);
-
- Tree chTree = checkTreeNode(ch, 0, "Base::vmethod() : void").getParent();
- checkTreeNode(chTree, 0, 0, "regRefs() : void");
- checkTreeNode(chTree, 0, 1, "vrefs() : void");
- checkTreeNode(chTree, 0, 2, null);
-
- idx = content.indexOf("vmethod", idx + 1);
- editor.selectAndReveal(idx, 0);
- openCallHierarchy(editor);
-
- chTree = checkTreeNode(ch, 0, "Derived::vmethod() : void").getParent();
- checkTreeNode(chTree, 0, 0, "vrefs() : void");
- checkTreeNode(chTree, 0, 1, null);
-
- idx = content.indexOf(" method") + 1;
- editor.selectAndReveal(idx, 0);
- openCallHierarchy(editor);
-
- chTree = checkTreeNode(ch, 0, "Base::method() : void").getParent();
- checkTreeNode(chTree, 0, 0, "regRefs() : void");
- checkTreeNode(chTree, 0, 1, "vrefs() : void");
- checkTreeNode(chTree, 0, 2, null);
-
- idx = content.indexOf(" method", idx + 1) + 1;
- editor.selectAndReveal(idx, 0);
- openCallHierarchy(editor);
-
- chTree = checkTreeNode(ch, 0, "Derived::method() : void").getParent();
- checkTreeNode(chTree, 0, 0, null);
- }
-
- // class Base {
- // public:
- // virtual void vmethod();
- // };
- // class Derived : public Base {
- // public:
- // void vmethod();
- // };
- // void vrefs() {
- // Base* b= 0;
- // b->vmethod();
- // }
- public void testReversePolyMorphicMethodCalls_156689() throws Exception {
- String content = getContentsForTest(1)[0].toString();
- IFile file = createFile(getProject(), "SomeClass.cpp", content);
- waitUntilFileIsIndexed(fIndex, file);
-
- final CHViewPart ch = (CHViewPart) activateView(CUIPlugin.ID_CALL_HIERARCHY);
- final IWorkbenchWindow workbenchWindow = ch.getSite().getWorkbenchWindow();
-
- // open editor, check outline
- CEditor editor = openEditor(file);
- int idx = content.indexOf("vrefs");
- editor.selectAndReveal(idx, 0);
- openCallHierarchy(editor, false);
-
- Tree chTree = checkTreeNode(ch, 0, "vrefs() : void").getParent();
- TreeItem item = checkTreeNode(chTree, 0, 0, "Base::vmethod() : void");
- checkTreeNode(chTree, 0, 1, null);
-
- expandTreeItem(item);
- checkTreeNode(item, 0, "Base::vmethod() : void");
- checkTreeNode(item, 1, "Derived::vmethod() : void");
- checkTreeNode(item, 2, null);
- }
-
- // template <class T> class CSome {
- // public:
- // T Foo (const T& x) { return 2*x; }
- // };
- // template <> class CSome <int> {
- // public:
- // int Foo (const int& x) { return 3*x; }
- // };
- // void test() {
- // CSome <int> X;
- // X.Foo(3);
- // }
- public void testMethodInstance_Bug240599() throws Exception {
- String content = getContentsForTest(1)[0].toString();
- IFile file = createFile(getProject(), "CSome.cpp", content);
- waitUntilFileIsIndexed(fIndex, file);
-
- final CHViewPart ch = (CHViewPart) activateView(CUIPlugin.ID_CALL_HIERARCHY);
- final IWorkbenchWindow workbenchWindow = ch.getSite().getWorkbenchWindow();
-
- // open editor, check outline
- CEditor editor = openEditor(file);
- int idx = content.indexOf("Foo(3)");
- editor.selectAndReveal(idx, 0);
- openCallHierarchy(editor, true);
- Tree chTree = checkTreeNode(ch, 0, "CSome<int>::Foo(const int &) : int").getParent();
- TreeItem item = checkTreeNode(chTree, 0, 0, "test() : void");
- checkTreeNode(chTree, 0, 1, null);
- }
-
- // class Base {
- // public:
- // virtual void First() {}
- // virtual void Second() {}
- // };
- //
- // class Derived: public Base {
- // public:
- // virtual void First() {}
- // virtual void Second() {}
- // };
- //
- // void func(Base *base) {
- // base->First();
- // base->Second();
- // }
- //
- // int main() {
- // Derived derived;
- // func(&derived);
- // return 0;
- // }
- public void testMultiplePolyMorphicMethodCalls_244987() throws Exception {
- String content = getContentsForTest(1)[0].toString();
- IFile file = createFile(getProject(), "SomeClass244987.cpp", content);
- waitUntilFileIsIndexed(fIndex, file);
-
- final CHViewPart ch = (CHViewPart) activateView(CUIPlugin.ID_CALL_HIERARCHY);
- final IWorkbenchWindow workbenchWindow = ch.getSite().getWorkbenchWindow();
-
- // open editor, check outline
- CEditor editor = openEditor(file);
- int idx = content.indexOf("main");
- editor.selectAndReveal(idx, 0);
- openCallHierarchy(editor, false);
-
- Tree chTree = checkTreeNode(ch, 0, "main() : int").getParent();
- TreeItem ti = checkTreeNode(chTree, 0, 0, "func(Base *) : void");
- expandTreeItem(ti);
- checkTreeNode(chTree, 0, 1, null);
-
- TreeItem ti1 = checkTreeNode(ti, 0, "Base::First() : void");
- expandTreeItem(ti1);
- TreeItem ti2 = checkTreeNode(ti, 1, "Base::Second() : void");
- expandTreeItem(ti2);
- checkTreeNode(ti, 2, null);
-
- checkTreeNode(ti1, 0, "Base::First() : void");
- checkTreeNode(ti1, 1, "Derived::First() : void");
- checkTreeNode(ti1, 2, null);
-
- checkTreeNode(ti2, 0, "Base::Second() : void");
- checkTreeNode(ti2, 1, "Derived::Second() : void");
- checkTreeNode(ti2, 2, null);
-
- }
-
- // #define MACRO(name) void PREFIX_ ## name(char *a , char *b)
- // #define CALL(x) call(x)
- //
- // void call(int);
- // MACRO(Test) {
- // CALL(0);
- // }
- public void testMacrosHidingCall_249801() throws Exception {
- String content = getContentsForTest(1)[0].toString();
- IFile file = createFile(getProject(), "file249801.cpp", content);
- waitUntilFileIsIndexed(fIndex, file);
-
- final CHViewPart ch = (CHViewPart) activateView(CUIPlugin.ID_CALL_HIERARCHY);
-
- // open editor, check outline
- CEditor editor = openEditor(file);
- int idx = content.indexOf("MACRO(Test");
- editor.selectAndReveal(idx, 0);
- openCallHierarchy(editor, false);
-
- Tree chTree = checkTreeNode(ch, 0, "PREFIX_Test(char *, char *) : void").getParent();
- TreeItem ti = checkTreeNode(chTree, 0, 0, "call(int) : void");
-
- idx = content.indexOf("CALL(0");
- editor.selectAndReveal(idx + 4, 0);
- openCallHierarchy(editor, true);
- chTree = checkTreeNode(ch, 0, "call(int) : void").getParent();
- ti = checkTreeNode(chTree, 0, 0, "PREFIX_Test(char *, char *) : void");
- }
-
- // void shared_func();
-
- // #include "260262.h"
-
- // void call() {
- // shared_func();
- // }
- public void testMultiLanguageWithPrototype_260262() throws Exception {
- final StringBuilder[] contents = getContentsForTest(3);
- final String hcontent = contents[0].toString();
- final String content_inc = contents[1].toString();
- final String content_full = content_inc + contents[2].toString();
- IFile header = createFile(getProject(), "260262.h", hcontent);
- IFile f1 = createFile(getProject(), "260262.c", content_full);
- IFile f2 = createFile(getProject(), "260262.cpp", content_inc);
- waitUntilFileIsIndexed(fIndex, f2);
-
- final CHViewPart ch = (CHViewPart) activateView(CUIPlugin.ID_CALL_HIERARCHY);
-
- // open editor, check outline
- CEditor editor = openEditor(header);
- int idx = hcontent.indexOf("shared_func()");
- editor.selectAndReveal(idx, 0);
- openCallHierarchy(editor, true);
-
- Tree chTree = checkTreeNode(ch, 0, "shared_func() : void").getParent();
- TreeItem ti = checkTreeNode(chTree, 0, 0, "call() : void");
- checkTreeNode(chTree, 0, 1, null);
- }
-
- // inline void shared_func() {}
-
- // #include "260262.h"
-
- // void call() {
- // shared_func();
- // }
- public void testMultiLanguageWithInlinedfunc_260262() throws Exception {
- final StringBuilder[] contents = getContentsForTest(3);
- final String hcontent = contents[0].toString();
- final String content_inc = contents[1].toString();
- final String content_full = content_inc + contents[2].toString();
- IFile header = createFile(getProject(), "260262.h", hcontent);
- IFile f1 = createFile(getProject(), "260262.c", content_full);
- IFile f2 = createFile(getProject(), "260262.cpp", content_inc);
- waitUntilFileIsIndexed(fIndex, f2);
-
- final CHViewPart ch = (CHViewPart) activateView(CUIPlugin.ID_CALL_HIERARCHY);
-
- // open editor, check outline
- CEditor editor = openEditor(header);
- int idx = hcontent.indexOf("shared_func()");
- editor.selectAndReveal(idx, 0);
- openCallHierarchy(editor, true);
-
- Tree chTree = checkTreeNode(ch, 0, "shared_func() : void").getParent();
- TreeItem ti = checkTreeNode(chTree, 0, 0, "call() : void");
- checkTreeNode(chTree, 0, 1, null);
- }
-
- // namespace {
- // void doNothing()
- // {
- // }
- // }
- // int main() {
- // doNothing();
- // return 0;
- // }
- public void testUnnamedNamespace_283679() throws Exception {
- final StringBuilder[] contents = getContentsForTest(1);
- final String content = contents[0].toString();
- IFile f2 = createFile(getProject(), "testUnnamedNamespace_283679.cpp", content);
- waitUntilFileIsIndexed(fIndex, f2);
-
- final CHViewPart ch = (CHViewPart) activateView(CUIPlugin.ID_CALL_HIERARCHY);
-
- // open editor, check outline
- CEditor editor = openEditor(f2);
- int idx = content.indexOf("doNothing()");
- editor.selectAndReveal(idx, 0);
- openCallHierarchy(editor, true);
-
- Tree chTree = checkTreeNode(ch, 0, "doNothing() : void").getParent();
- TreeItem ti = checkTreeNode(chTree, 0, 0, "main() : int");
- checkTreeNode(chTree, 0, 1, null);
- }
-
- // class Base {
- // public:
- // virtual void dosomething() {}
- // };
- //
- // class Derived : public Base {
- // public:
- // void dosomething() { }
- // };
- //
- // void test() {
- // Base *dbPtr = new Derived();
- // dbPtr->dosomething();
- // delete dbPtr;
- // }
- public void testCallsToFromVirtualMethod_246064() throws Exception {
- final StringBuilder[] contents = getContentsForTest(1);
- final String content = contents[0].toString();
- IFile f2 = createFile(getProject(), "testCallsToFromVirtualMethod_246064.cpp", content);
- waitUntilFileIsIndexed(fIndex, f2);
-
- final CHViewPart ch = (CHViewPart) activateView(CUIPlugin.ID_CALL_HIERARCHY);
-
- // open editor, check outline
- CEditor editor = openEditor(f2);
- int idx = content.indexOf("dosomething();");
- editor.selectAndReveal(idx, 0);
- openCallHierarchy(editor, false);
-
- Tree chTree = checkTreeNode(ch, 0, "Base::dosomething() : void").getParent();
- TreeItem item = checkTreeNode(chTree, 0, 0, "Base::dosomething() : void");
- expandTreeItem(item);
- checkTreeNode(chTree, 0, 1, "Derived::dosomething() : void");
- checkTreeNode(chTree, 0, 2, null);
- }
-
- // template<typename T> struct Array {
- // template<typename TIterator> void erase(TIterator it) {}
- // };
- //
- // int main() {
- // Array<int> test;
- // test.erase(1);
- // }
- public void testCallsToInstanceofSpecializedTemplate_361999() throws Exception {
- final String content = getAboveComment();
- IFile f2 = createFile(getProject(), "testCallsToInstanceofSpecializedTemplate_361999.cpp", content);
- waitUntilFileIsIndexed(fIndex, f2);
-
- final CHViewPart ch = (CHViewPart) activateView(CUIPlugin.ID_CALL_HIERARCHY);
-
- // open editor, check outline
- CEditor editor = openEditor(f2);
- int idx = content.indexOf("erase(TIterator it)");
- editor.selectAndReveal(idx, 0);
- openCallHierarchy(editor, true);
-
- Tree chTree = checkTreeNode(ch, 0, "Array<T>::erase(TIterator) : void").getParent();
- TreeItem ti = checkTreeNode(chTree, 0, 0, "main() : int");
- checkTreeNode(chTree, 0, 1, null);
- }
-}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/callhierarchy/CallHierarchyBugsTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/callhierarchy/CallHierarchyBugsTest.java
new file mode 100644
index 00000000000..fd21f0300e0
--- /dev/null
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/callhierarchy/CallHierarchyBugsTest.java
@@ -0,0 +1,506 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2012 Wind River Systems, Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Markus Schorn - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.ui.tests.callhierarchy;
+
+import org.eclipse.cdt.core.model.ICElement;
+import org.eclipse.cdt.internal.ui.callhierarchy.CHViewPart;
+import org.eclipse.cdt.internal.ui.callhierarchy.CallHierarchyUI;
+import org.eclipse.cdt.internal.ui.editor.CEditor;
+import org.eclipse.cdt.ui.CUIPlugin;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.swt.widgets.TreeItem;
+import org.eclipse.ui.IPageLayout;
+import org.eclipse.ui.IViewPart;
+import org.eclipse.ui.IWorkbenchWindow;
+
+import junit.framework.Test;
+
+public class CallHierarchyBugsTest extends CallHierarchyBaseTest {
+
+ public CallHierarchyBugsTest(String name) {
+ super(name);
+ }
+
+ public static Test suite() {
+ return suite(CallHierarchyBugsTest.class);
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ restoreAllParts();
+ }
+
+ // class SomeClass {
+ // public:
+ // void method();
+ // int field;
+ // };
+
+ // #include "SomeClass.h"
+ // void SomeClass::method() {
+ // field= 1;
+ // }
+ public void testCallHierarchyFromOutlineView_183941() throws Exception {
+ StringBuilder[] contents = getContentsForTest(2);
+ IFile file1 = createFile(getProject(), "SomeClass.h", contents[0].toString());
+ IFile file2 = createFile(getProject(), "SomeClass.cpp", contents[1].toString());
+ waitUntilFileIsIndexed(fIndex, file2);
+
+ final CHViewPart ch = (CHViewPart) activateView(CUIPlugin.ID_CALL_HIERARCHY);
+ final IViewPart outline = activateView(IPageLayout.ID_OUTLINE);
+ final IWorkbenchWindow workbenchWindow = ch.getSite().getWorkbenchWindow();
+
+ // open editor, check outline
+ openEditor(file1);
+ Tree outlineTree = checkTreeNode(outline, 0, "SomeClass").getParent();
+ expandTreeItem(outlineTree, 0);
+ TreeItem node = checkTreeNode(outlineTree, 0, 0, "method() : void");
+
+ openCH(workbenchWindow, node);
+ Tree chTree = checkTreeNode(ch, 0, "SomeClass::method() : void").getParent();
+ checkTreeNode(chTree, 0, 1, null);
+
+ ch.onSetShowReferencedBy(false);
+ checkTreeNode(chTree, 0, "SomeClass::method() : void");
+ checkTreeNode(chTree, 0, 0, "SomeClass::field : int");
+ }
+
+ // class SomeClass {
+ // public:
+ // void ambiguous_impl();
+ // int ref1;
+ // int ref2;
+ // };
+ //
+ // void SomeClass::ambiguous_impl() {
+ // ref1= 1;
+ // }
+ // void other() {}
+
+ // #include "SomeClass.h"
+ // void SomeClass::ambiguous_impl() {
+ // ref2= 0;
+ // }
+ public void testCallHierarchyFromOutlineViewAmbiguous_183941() throws Exception {
+ StringBuilder[] contents = getContentsForTest(2);
+ IFile file1 = createFile(getProject(), "SomeClass.h", contents[0].toString());
+ IFile file2 = createFile(getProject(), "SomeClass.cpp", contents[1].toString());
+ waitUntilFileIsIndexed(fIndex, file2);
+
+ final CHViewPart ch = (CHViewPart) activateView(CUIPlugin.ID_CALL_HIERARCHY);
+ final IViewPart outline = activateView(IPageLayout.ID_OUTLINE);
+ final IWorkbenchWindow workbenchWindow = ch.getSite().getWorkbenchWindow();
+
+ // open editor, check outline
+ openEditor(file1);
+ TreeItem node1 = checkTreeNode(outline, 1, "SomeClass::ambiguous_impl() : void");
+ Tree outlineTree = node1.getParent();
+ TreeItem node2 = checkTreeNode(outlineTree, 2, "other() : void");
+
+ // open and check call hierarchy
+ openCH(workbenchWindow, node1);
+ ch.onSetShowReferencedBy(false);
+
+ Tree chTree = checkTreeNode(ch, 0, "SomeClass::ambiguous_impl() : void").getParent();
+ checkTreeNode(chTree, 0, 0, "SomeClass::ref1 : int");
+
+ // open and check call hierarchy
+ openCH(workbenchWindow, node2);
+ checkTreeNode(chTree, 0, "other() : void");
+
+ // open editor, check outline
+ openEditor(file2);
+ outlineTree = checkTreeNode(outline, 0, "SomeClass.h").getParent();
+ node1 = checkTreeNode(outlineTree, 1, "SomeClass::ambiguous_impl() : void");
+
+ // open and check call hierarchy
+ openCH(workbenchWindow, node1);
+ ch.onSetShowReferencedBy(false);
+ chTree = checkTreeNode(ch, 0, "SomeClass::ambiguous_impl() : void").getParent();
+ checkTreeNode(chTree, 0, 0, "SomeClass::ref2 : int");
+ }
+
+ private void openCH(final IWorkbenchWindow workbenchWindow, TreeItem node1) {
+ Object obj = node1.getData();
+ assertTrue(obj instanceof ICElement);
+ CallHierarchyUI.open(workbenchWindow, (ICElement) obj);
+ }
+
+ // class Base {
+ // public:
+ // virtual void vmethod();
+ // void method();
+ // };
+ // class Derived : public Base {
+ // public:
+ // void vmethod();
+ // void method();
+ // };
+ // void vrefs() {
+ // Base* b= 0;
+ // b->vmethod(); b->method();
+ // }
+ // void regRefs() {
+ // Base* b= 0;
+ // b->Base::vmethod(); b->Base::method();
+ // }
+ public void testPolyMorphicMethodCalls_156689() throws Exception {
+ String content = getContentsForTest(1)[0].toString();
+ IFile file = createFile(getProject(), "SomeClass.cpp", content);
+ waitUntilFileIsIndexed(fIndex, file);
+
+ final CHViewPart ch = (CHViewPart) activateView(CUIPlugin.ID_CALL_HIERARCHY);
+ final IWorkbenchWindow workbenchWindow = ch.getSite().getWorkbenchWindow();
+
+ // open editor, check outline
+ CEditor editor = openEditor(file);
+ int idx = content.indexOf("vmethod");
+ editor.selectAndReveal(idx, 0);
+ openCallHierarchy(editor);
+
+ Tree chTree = checkTreeNode(ch, 0, "Base::vmethod() : void").getParent();
+ checkTreeNode(chTree, 0, 0, "regRefs() : void");
+ checkTreeNode(chTree, 0, 1, "vrefs() : void");
+ checkTreeNode(chTree, 0, 2, null);
+
+ idx = content.indexOf("vmethod", idx + 1);
+ editor.selectAndReveal(idx, 0);
+ openCallHierarchy(editor);
+
+ chTree = checkTreeNode(ch, 0, "Derived::vmethod() : void").getParent();
+ checkTreeNode(chTree, 0, 0, "vrefs() : void");
+ checkTreeNode(chTree, 0, 1, null);
+
+ idx = content.indexOf(" method") + 1;
+ editor.selectAndReveal(idx, 0);
+ openCallHierarchy(editor);
+
+ chTree = checkTreeNode(ch, 0, "Base::method() : void").getParent();
+ checkTreeNode(chTree, 0, 0, "regRefs() : void");
+ checkTreeNode(chTree, 0, 1, "vrefs() : void");
+ checkTreeNode(chTree, 0, 2, null);
+
+ idx = content.indexOf(" method", idx + 1) + 1;
+ editor.selectAndReveal(idx, 0);
+ openCallHierarchy(editor);
+
+ chTree = checkTreeNode(ch, 0, "Derived::method() : void").getParent();
+ checkTreeNode(chTree, 0, 0, null);
+ }
+
+ // class Base {
+ // public:
+ // virtual void vmethod();
+ // };
+ // class Derived : public Base {
+ // public:
+ // void vmethod();
+ // };
+ // void vrefs() {
+ // Base* b= 0;
+ // b->vmethod();
+ // }
+ public void testReversePolyMorphicMethodCalls_156689() throws Exception {
+ String content = getContentsForTest(1)[0].toString();
+ IFile file = createFile(getProject(), "SomeClass.cpp", content);
+ waitUntilFileIsIndexed(fIndex, file);
+
+ final CHViewPart ch = (CHViewPart) activateView(CUIPlugin.ID_CALL_HIERARCHY);
+ final IWorkbenchWindow workbenchWindow = ch.getSite().getWorkbenchWindow();
+
+ // open editor, check outline
+ CEditor editor = openEditor(file);
+ int idx = content.indexOf("vrefs");
+ editor.selectAndReveal(idx, 0);
+ openCallHierarchy(editor, false);
+
+ Tree chTree = checkTreeNode(ch, 0, "vrefs() : void").getParent();
+ TreeItem item = checkTreeNode(chTree, 0, 0, "Base::vmethod() : void");
+ checkTreeNode(chTree, 0, 1, null);
+
+ expandTreeItem(item);
+ checkTreeNode(item, 0, "Base::vmethod() : void");
+ checkTreeNode(item, 1, "Derived::vmethod() : void");
+ checkTreeNode(item, 2, null);
+ }
+
+ // template <class T> class CSome {
+ // public:
+ // T Foo (const T& x) { return 2*x; }
+ // };
+ // template <> class CSome <int> {
+ // public:
+ // int Foo (const int& x) { return 3*x; }
+ // };
+ // void test() {
+ // CSome <int> X;
+ // X.Foo(3);
+ // }
+ public void testMethodInstance_Bug240599() throws Exception {
+ String content = getContentsForTest(1)[0].toString();
+ IFile file = createFile(getProject(), "CSome.cpp", content);
+ waitUntilFileIsIndexed(fIndex, file);
+
+ final CHViewPart ch = (CHViewPart) activateView(CUIPlugin.ID_CALL_HIERARCHY);
+ final IWorkbenchWindow workbenchWindow = ch.getSite().getWorkbenchWindow();
+
+ // open editor, check outline
+ CEditor editor = openEditor(file);
+ int idx = content.indexOf("Foo(3)");
+ editor.selectAndReveal(idx, 0);
+ openCallHierarchy(editor, true);
+ Tree chTree = checkTreeNode(ch, 0, "CSome<int>::Foo(const int &) : int").getParent();
+ TreeItem item = checkTreeNode(chTree, 0, 0, "test() : void");
+ checkTreeNode(chTree, 0, 1, null);
+ }
+
+ // class Base {
+ // public:
+ // virtual void First() {}
+ // virtual void Second() {}
+ // };
+ //
+ // class Derived: public Base {
+ // public:
+ // virtual void First() {}
+ // virtual void Second() {}
+ // };
+ //
+ // void func(Base *base) {
+ // base->First();
+ // base->Second();
+ // }
+ //
+ // int main() {
+ // Derived derived;
+ // func(&derived);
+ // return 0;
+ // }
+ public void testMultiplePolyMorphicMethodCalls_244987() throws Exception {
+ String content = getContentsForTest(1)[0].toString();
+ IFile file = createFile(getProject(), "SomeClass244987.cpp", content);
+ waitUntilFileIsIndexed(fIndex, file);
+
+ final CHViewPart ch = (CHViewPart) activateView(CUIPlugin.ID_CALL_HIERARCHY);
+ final IWorkbenchWindow workbenchWindow = ch.getSite().getWorkbenchWindow();
+
+ // open editor, check outline
+ CEditor editor = openEditor(file);
+ int idx = content.indexOf("main");
+ editor.selectAndReveal(idx, 0);
+ openCallHierarchy(editor, false);
+
+ Tree chTree = checkTreeNode(ch, 0, "main() : int").getParent();
+ TreeItem ti = checkTreeNode(chTree, 0, 0, "func(Base *) : void");
+ expandTreeItem(ti);
+ checkTreeNode(chTree, 0, 1, null);
+
+ TreeItem ti1 = checkTreeNode(ti, 0, "Base::First() : void");
+ expandTreeItem(ti1);
+ TreeItem ti2 = checkTreeNode(ti, 1, "Base::Second() : void");
+ expandTreeItem(ti2);
+ checkTreeNode(ti, 2, null);
+
+ checkTreeNode(ti1, 0, "Base::First() : void");
+ checkTreeNode(ti1, 1, "Derived::First() : void");
+ checkTreeNode(ti1, 2, null);
+
+ checkTreeNode(ti2, 0, "Base::Second() : void");
+ checkTreeNode(ti2, 1, "Derived::Second() : void");
+ checkTreeNode(ti2, 2, null);
+
+ }
+
+ // #define MACRO(name) void PREFIX_ ## name(char *a , char *b)
+ // #define CALL(x) call(x)
+ //
+ // void call(int);
+ // MACRO(Test) {
+ // CALL(0);
+ // }
+ public void testMacrosHidingCall_249801() throws Exception {
+ String content = getContentsForTest(1)[0].toString();
+ IFile file = createFile(getProject(), "file249801.cpp", content);
+ waitUntilFileIsIndexed(fIndex, file);
+
+ final CHViewPart ch = (CHViewPart) activateView(CUIPlugin.ID_CALL_HIERARCHY);
+
+ // open editor, check outline
+ CEditor editor = openEditor(file);
+ int idx = content.indexOf("MACRO(Test");
+ editor.selectAndReveal(idx, 0);
+ openCallHierarchy(editor, false);
+
+ Tree chTree = checkTreeNode(ch, 0, "PREFIX_Test(char *, char *) : void").getParent();
+ TreeItem ti = checkTreeNode(chTree, 0, 0, "call(int) : void");
+
+ idx = content.indexOf("CALL(0");
+ editor.selectAndReveal(idx + 4, 0);
+ openCallHierarchy(editor, true);
+ chTree = checkTreeNode(ch, 0, "call(int) : void").getParent();
+ ti = checkTreeNode(chTree, 0, 0, "PREFIX_Test(char *, char *) : void");
+ }
+
+ // void shared_func();
+
+ // #include "260262.h"
+
+ // void call() {
+ // shared_func();
+ // }
+ public void testMultiLanguageWithPrototype_260262() throws Exception {
+ final StringBuilder[] contents = getContentsForTest(3);
+ final String hcontent = contents[0].toString();
+ final String content_inc = contents[1].toString();
+ final String content_full = content_inc + contents[2].toString();
+ IFile header = createFile(getProject(), "260262.h", hcontent);
+ IFile f1 = createFile(getProject(), "260262.c", content_full);
+ IFile f2 = createFile(getProject(), "260262.cpp", content_inc);
+ waitUntilFileIsIndexed(fIndex, f2);
+
+ final CHViewPart ch = (CHViewPart) activateView(CUIPlugin.ID_CALL_HIERARCHY);
+
+ // open editor, check outline
+ CEditor editor = openEditor(header);
+ int idx = hcontent.indexOf("shared_func()");
+ editor.selectAndReveal(idx, 0);
+ openCallHierarchy(editor, true);
+
+ Tree chTree = checkTreeNode(ch, 0, "shared_func() : void").getParent();
+ TreeItem ti = checkTreeNode(chTree, 0, 0, "call() : void");
+ checkTreeNode(chTree, 0, 1, null);
+ }
+
+ // inline void shared_func() {}
+
+ // #include "260262.h"
+
+ // void call() {
+ // shared_func();
+ // }
+ public void testMultiLanguageWithInlinedfunc_260262() throws Exception {
+ final StringBuilder[] contents = getContentsForTest(3);
+ final String hcontent = contents[0].toString();
+ final String content_inc = contents[1].toString();
+ final String content_full = content_inc + contents[2].toString();
+ IFile header = createFile(getProject(), "260262.h", hcontent);
+ IFile f1 = createFile(getProject(), "260262.c", content_full);
+ IFile f2 = createFile(getProject(), "260262.cpp", content_inc);
+ waitUntilFileIsIndexed(fIndex, f2);
+
+ final CHViewPart ch = (CHViewPart) activateView(CUIPlugin.ID_CALL_HIERARCHY);
+
+ // open editor, check outline
+ CEditor editor = openEditor(header);
+ int idx = hcontent.indexOf("shared_func()");
+ editor.selectAndReveal(idx, 0);
+ openCallHierarchy(editor, true);
+
+ Tree chTree = checkTreeNode(ch, 0, "shared_func() : void").getParent();
+ TreeItem ti = checkTreeNode(chTree, 0, 0, "call() : void");
+ checkTreeNode(chTree, 0, 1, null);
+ }
+
+ // namespace {
+ // void doNothing()
+ // {
+ // }
+ // }
+ // int main() {
+ // doNothing();
+ // return 0;
+ // }
+ public void testUnnamedNamespace_283679() throws Exception {
+ final StringBuilder[] contents = getContentsForTest(1);
+ final String content = contents[0].toString();
+ IFile f2 = createFile(getProject(), "testUnnamedNamespace_283679.cpp", content);
+ waitUntilFileIsIndexed(fIndex, f2);
+
+ final CHViewPart ch = (CHViewPart) activateView(CUIPlugin.ID_CALL_HIERARCHY);
+
+ // open editor, check outline
+ CEditor editor = openEditor(f2);
+ int idx = content.indexOf("doNothing()");
+ editor.selectAndReveal(idx, 0);
+ openCallHierarchy(editor, true);
+
+ Tree chTree = checkTreeNode(ch, 0, "doNothing() : void").getParent();
+ TreeItem ti = checkTreeNode(chTree, 0, 0, "main() : int");
+ checkTreeNode(chTree, 0, 1, null);
+ }
+
+ // class Base {
+ // public:
+ // virtual void dosomething() {}
+ // };
+ //
+ // class Derived : public Base {
+ // public:
+ // void dosomething() { }
+ // };
+ //
+ // void test() {
+ // Base *dbPtr = new Derived();
+ // dbPtr->dosomething();
+ // delete dbPtr;
+ // }
+ public void testCallsToFromVirtualMethod_246064() throws Exception {
+ final StringBuilder[] contents = getContentsForTest(1);
+ final String content = contents[0].toString();
+ IFile f2 = createFile(getProject(), "testCallsToFromVirtualMethod_246064.cpp", content);
+ waitUntilFileIsIndexed(fIndex, f2);
+
+ final CHViewPart ch = (CHViewPart) activateView(CUIPlugin.ID_CALL_HIERARCHY);
+
+ // open editor, check outline
+ CEditor editor = openEditor(f2);
+ int idx = content.indexOf("dosomething();");
+ editor.selectAndReveal(idx, 0);
+ openCallHierarchy(editor, false);
+
+ Tree chTree = checkTreeNode(ch, 0, "Base::dosomething() : void").getParent();
+ TreeItem item = checkTreeNode(chTree, 0, 0, "Base::dosomething() : void");
+ expandTreeItem(item);
+ checkTreeNode(chTree, 0, 1, "Derived::dosomething() : void");
+ checkTreeNode(chTree, 0, 2, null);
+ }
+
+ // template<typename T> struct Array {
+ // template<typename TIterator> void erase(TIterator it) {}
+ // };
+ //
+ // int main() {
+ // Array<int> test;
+ // test.erase(1);
+ // }
+ public void testCallsToInstanceofSpecializedTemplate_361999() throws Exception {
+ final String content = getAboveComment();
+ IFile f2 = createFile(getProject(), "testCallsToInstanceofSpecializedTemplate_361999.cpp", content);
+ waitUntilFileIsIndexed(fIndex, f2);
+
+ final CHViewPart ch = (CHViewPart) activateView(CUIPlugin.ID_CALL_HIERARCHY);
+
+ // open editor, check outline
+ CEditor editor = openEditor(f2);
+ int idx = content.indexOf("erase(TIterator it)");
+ editor.selectAndReveal(idx, 0);
+ openCallHierarchy(editor, true);
+
+ Tree chTree = checkTreeNode(ch, 0, "Array<T>::erase(TIterator) : void").getParent();
+ TreeItem ti = checkTreeNode(chTree, 0, 0, "main() : int");
+ checkTreeNode(chTree, 0, 1, null);
+ }
+}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/callhierarchy/CallHierarchyTestSuite.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/callhierarchy/CallHierarchyTestSuite.java
index 9f029d3830d..cafe8c47931 100644
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/callhierarchy/CallHierarchyTestSuite.java
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/callhierarchy/CallHierarchyTestSuite.java
@@ -21,7 +21,7 @@ import org.junit.runners.Suite;
@RunWith(Suite.class)
@Suite.SuiteClasses({ BasicCallHierarchyTest.class, BasicCppCallHierarchyTest.class,
InitializersInCallHierarchyTest.class, CppCallHierarchyTest.class, CallHierarchyAcrossProjectsTest.class,
- CallHierarchyBugs.class, })
+ CallHierarchyBugsTest.class, })
public class CallHierarchyTestSuite {
}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/includebrowser/BasicIncludeBrowserTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/includebrowser/BasicIncludeBrowserTest.java
index 231a76af2db..f21ca23eaf7 100644
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/includebrowser/BasicIncludeBrowserTest.java
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/includebrowser/BasicIncludeBrowserTest.java
@@ -16,7 +16,10 @@ package org.eclipse.cdt.ui.tests.includebrowser;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.dom.IPDOMManager;
+import org.eclipse.cdt.core.model.CoreModel;
+import org.eclipse.cdt.core.model.ICContainer;
import org.eclipse.cdt.core.model.ICProject;
+import org.eclipse.cdt.core.model.IPathEntry;
import org.eclipse.cdt.core.testplugin.CProjectHelper;
import org.eclipse.cdt.core.testplugin.TestScannerProvider;
import org.eclipse.core.resources.IFile;
@@ -104,4 +107,39 @@ public class BasicIncludeBrowserTest extends IncludeBrowserBaseTest {
CProjectHelper.delete(op);
}
}
+
+ // // source
+ // #include "user.h"
+ public void testInclusionOutsideSourceFolder() throws Exception {
+ ICProject cproject = CProjectHelper.createCCProject("__ibTest_outside_src__", "bin",
+ IPDOMManager.ID_FAST_INDEXER);
+ try {
+ ICContainer srcFolder = CProjectHelper.addCContainer(cproject, "src");
+ IPathEntry newEntry = CoreModel.newSourceEntry(srcFolder.getPath());
+
+ IPathEntry[] entries = new IPathEntry[] { CoreModel.newSourceEntry(srcFolder.getPath()) };
+ cproject.setRawPathEntries(entries, null);
+
+ StringBuilder[] contents = getContentsForTest(1);
+ IProject project = cproject.getProject();
+ IFile user = createFile(project, "user.h", "");
+ IFile source = createFile(srcFolder.getResource(), "source.cpp", contents[0].toString());
+ CCorePlugin.getIndexManager().reindex(cproject);
+ waitForIndexer(cproject);
+
+ openIncludeBrowser(source);
+ Tree tree = getIBTree();
+ TreeItem node = checkTreeNode(tree, 0, "source.cpp");
+ checkTreeNode(tree, 0, 0, "user.h");
+ assertEquals(1, node.getItemCount());
+
+ // The tree has to be reversed
+ openIncludeBrowser(user, true);
+ checkTreeNode(tree, 0, "user.h");
+ checkTreeNode(tree, 0, 0, "source.cpp");
+
+ } finally {
+ CProjectHelper.delete(cproject);
+ }
+ }
}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/includebrowser/IncludeBrowserBaseTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/includebrowser/IncludeBrowserBaseTest.java
index 5bcec9942b7..e8a7dc243e0 100644
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/includebrowser/IncludeBrowserBaseTest.java
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/includebrowser/IncludeBrowserBaseTest.java
@@ -13,13 +13,15 @@
*******************************************************************************/
package org.eclipse.cdt.ui.tests.includebrowser;
+import java.util.Optional;
+
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.dom.IPDOMManager;
import org.eclipse.cdt.core.index.IIndex;
-import org.eclipse.cdt.core.model.CoreModelUtil;
import org.eclipse.cdt.core.model.ICProject;
import org.eclipse.cdt.core.model.ITranslationUnit;
import org.eclipse.cdt.core.testplugin.CProjectHelper;
+import org.eclipse.cdt.internal.ui.includebrowser.IBConversions;
import org.eclipse.cdt.internal.ui.includebrowser.IBViewPart;
import org.eclipse.cdt.ui.CUIPlugin;
import org.eclipse.cdt.ui.tests.BaseUITestCase;
@@ -31,7 +33,7 @@ import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
-public class IncludeBrowserBaseTest extends BaseUITestCase {
+public abstract class IncludeBrowserBaseTest extends BaseUITestCase {
protected static IProgressMonitor NPM = new NullProgressMonitor();
private ICProject fCProject;
@@ -77,13 +79,13 @@ public class IncludeBrowserBaseTest extends BaseUITestCase {
}
private IBViewPart doOpenIncludeBrowser(IFile file) throws PartInitException {
- ITranslationUnit tu = CoreModelUtil.findTranslationUnit(file);
- if (tu == null) {
+ Optional<ITranslationUnit> tu = IBConversions.fileToTU(file);
+ if (tu.isEmpty()) {
fail(file.getFullPath().toString() + " is no translation unit!");
}
IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
IBViewPart result = (IBViewPart) page.showView(CUIPlugin.ID_INCLUDE_BROWSER);
- result.setInput(tu);
+ result.setInput(tu.get());
return result;
}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/outline/BasicOutlineTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/outline/BasicOutlineTest.java
index 0f8e75ff4d4..84ab282c953 100644
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/outline/BasicOutlineTest.java
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/outline/BasicOutlineTest.java
@@ -110,6 +110,27 @@ public class BasicOutlineTest extends BaseUITestCase {
checkTreeNode(tree, 4, "main(int, char**) : int");
}
+ //#include "user.h"
+ //#include <system.h>
+ //#define MACRO
+ //int main(int argc, char** argv) {}
+ //#define MACRO2()
+ public void testOutlineContentOrder() throws Exception {
+ StringBuilder[] contents = getContentsForTest(1);
+ IProject project = getProject().getProject();
+ IFile source = createFile(project, "source.cpp", contents[0].toString());
+ waitForIndexer(project, source);
+
+ final IViewPart outline = activateView(IPageLayout.ID_OUTLINE);
+ openEditor(source);
+
+ Tree tree = checkTreeNode(outline, 0, "user.h").getParent();
+ checkTreeNode(tree, 1, "system.h");
+ checkTreeNode(tree, 2, "MACRO");
+ checkTreeNode(tree, 3, "main(int, char**) : int");
+ checkTreeNode(tree, 4, "MACRO2()");
+ }
+
//class Foo {
// static int field;
// void bar();
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/RefactoringTestSuite.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/RefactoringTestSuite.java
index c8a5731f2a5..e5eaf9070fb 100644
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/RefactoringTestSuite.java
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/RefactoringTestSuite.java
@@ -25,7 +25,14 @@ import org.eclipse.cdt.ui.tests.refactoring.hidemethod.HideMethodRefactoringTest
import org.eclipse.cdt.ui.tests.refactoring.implementmethod.ImplementMethodRefactoringTest;
import org.eclipse.cdt.ui.tests.refactoring.includes.IncludesTestSuite;
import org.eclipse.cdt.ui.tests.refactoring.overridemethods.OverrideMethodsRefactoringTest;
+import org.eclipse.cdt.ui.tests.refactoring.rename.RenameFunctionTests;
+import org.eclipse.cdt.ui.tests.refactoring.rename.RenameMacroTests;
import org.eclipse.cdt.ui.tests.refactoring.rename.RenameRegressionTests;
+import org.eclipse.cdt.ui.tests.refactoring.rename.RenameTemplatesTests;
+import org.eclipse.cdt.ui.tests.refactoring.rename.RenameTypeTests;
+import org.eclipse.cdt.ui.tests.refactoring.rename.RenameVariableTests;
+import org.eclipse.cdt.ui.tests.refactoring.togglefunction.ToggleNodeHelperTest;
+import org.eclipse.cdt.ui.tests.refactoring.togglefunction.ToggleRefactoringCTest;
import org.eclipse.cdt.ui.tests.refactoring.togglefunction.ToggleRefactoringTest;
import org.eclipse.cdt.ui.tests.refactoring.utils.UtilTestSuite;
import org.junit.runner.RunWith;
@@ -38,7 +45,9 @@ import org.junit.runners.Suite;
@Suite.SuiteClasses({ UtilTestSuite.class, RenameRegressionTests.class, ExtractFunctionRefactoringTest.class,
ExtractConstantRefactoringTest.class, HideMethodRefactoringTest.class, GenerateGettersAndSettersTest.class,
ImplementMethodRefactoringTest.class, ExtractLocalVariableRefactoringTest.class, ToggleRefactoringTest.class,
- IncludesTestSuite.class, OverrideMethodsRefactoringTest.class
+ ToggleRefactoringCTest.class, ToggleNodeHelperTest.class, IncludesTestSuite.class,
+ OverrideMethodsRefactoringTest.class, RenameVariableTests.class, RenameFunctionTests.class,
+ RenameTypeTests.class, RenameMacroTests.class, RenameTemplatesTests.class
})
public class RefactoringTestSuite {
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/gettersandsetters/GenerateGettersAndSettersTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/gettersandsetters/GenerateGettersAndSettersTest.java
index 4c4e40fd3aa..c662b8fc27b 100644
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/gettersandsetters/GenerateGettersAndSettersTest.java
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/gettersandsetters/GenerateGettersAndSettersTest.java
@@ -20,8 +20,11 @@ import org.eclipse.cdt.internal.ui.refactoring.CRefactoring;
import org.eclipse.cdt.internal.ui.refactoring.gettersandsetters.AccessorDescriptor.AccessorKind;
import org.eclipse.cdt.internal.ui.refactoring.gettersandsetters.GenerateGettersAndSettersRefactoring;
import org.eclipse.cdt.internal.ui.refactoring.gettersandsetters.GetterSetterContext;
+import org.eclipse.cdt.ui.CUIPlugin;
import org.eclipse.cdt.ui.PreferenceConstants;
import org.eclipse.cdt.ui.tests.refactoring.RefactoringTestBase;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences;
+import org.eclipse.core.runtime.preferences.InstanceScope;
import junit.framework.Test;
@@ -1576,7 +1579,7 @@ public class GenerateGettersAndSettersTest extends RefactoringTestBase {
//
//class getClass {
//private:
- // int /*$*/mClass/*$$*/;
+ // int /*$*/class_/*$$*/;
//};
//#endif /* A_H_ */
//====================
@@ -1586,20 +1589,20 @@ public class GenerateGettersAndSettersTest extends RefactoringTestBase {
//class getClass {
//public:
// int getClass1() const {
- // return mClass;
+ // return class_;
// }
//
// void setClass(int clazz) {
- // mClass = clazz;
+ // class_ = clazz;
// }
//
//private:
- // int mClass;
+ // int class_;
//};
//#endif /* A_H_ */
public void testAvoidingReservedNames_Bug352258() throws Exception {
- selectedGetters = new String[] { "mClass" };
- selectedSetters = new String[] { "mClass" };
+ selectedGetters = new String[] { "class_" };
+ selectedSetters = new String[] { "class_" };
assertRefactoringSuccess();
}
@@ -1670,4 +1673,88 @@ public class GenerateGettersAndSettersTest extends RefactoringTestBase {
selectedGetters = new String[] { "a" };
assertRefactoringSuccess();
}
+
+ //Bug551761.h
+ //#ifndef BUG551761_H_
+ //#define BUG551761_H_
+ //
+ //class Bug551761 {
+ //private:
+ // int /*$*/aVar/*$$*/;
+ //};
+ //
+ //#endif /* BUG551761_H_ */
+ //
+ //====================
+ //#ifndef BUG551761_H_
+ //#define BUG551761_H_
+ //
+ //class Bug551761 {
+ //public:
+ // int getAVar() const {
+ // return aVar;
+ // }
+ //
+ // void setAVar(int aVar) {
+ // this->aVar = aVar;
+ // }
+ //
+ //private:
+ // int aVar;
+ //};
+ //
+ //#endif /* BUG551761_H_ */
+ //
+ public void testSingleLetterPrefix_Bug551761() throws Exception {
+ selectedGetters = new String[] { "aVar" };
+ selectedSetters = new String[] { "aVar" };
+ assertRefactoringSuccess();
+ }
+
+ //Bug551761b.h
+ //#ifndef BUG551761B_H_
+ //#define BUG551761B_H_
+ //
+ //class Bug551761b {
+ //private:
+ // int /*$*/m_member/*$$*/;
+ //};
+ //
+ //#endif /* BUG551761B_H_ */
+ //
+ //====================
+ //#ifndef BUG551761B_H_
+ //#define BUG551761B_H_
+ //
+ //class Bug551761b {
+ //public:
+ // int getMember() const {
+ // return m_member;
+ // }
+ //
+ // void setMember(int member) {
+ // m_member = member;
+ // }
+ //
+ //private:
+ // int m_member;
+ //};
+ //
+ //#endif /* BUG551761B_H_ */
+ //
+ public void testSingleLetterPrefix_Bug551761b() throws Exception {
+ IEclipsePreferences node = InstanceScope.INSTANCE.getNode(CUIPlugin.PLUGIN_ID);
+ String oldValue = node.get(PreferenceConstants.NAME_STYLE_FIELD_PREFIX, null);
+ try {
+ node.put(PreferenceConstants.NAME_STYLE_FIELD_PREFIX, "m");
+ selectedGetters = new String[] { "m_member" };
+ selectedSetters = new String[] { "m_member" };
+ assertRefactoringSuccess();
+ } finally {
+ if (oldValue == null)
+ node.remove(PreferenceConstants.NAME_STYLE_FIELD_PREFIX);
+ else
+ node.put(PreferenceConstants.NAME_STYLE_FIELD_PREFIX, oldValue);
+ }
+ }
}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/implementmethod/ImplementMethodRefactoringTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/implementmethod/ImplementMethodRefactoringTest.java
index 3f1c4479712..036cd077ab4 100755..100644
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/implementmethod/ImplementMethodRefactoringTest.java
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/implementmethod/ImplementMethodRefactoringTest.java
@@ -825,4 +825,132 @@ public class ImplementMethodRefactoringTest extends RefactoringTestBase {
assertRefactoringSuccess();
}
+ //A.h
+ //template <int N>
+ //struct Waldo {
+ // /*$*/void find();/*$$*/
+ //};
+ //
+ //====================
+ //template <int N>
+ //struct Waldo {
+ // void find();
+ //};
+ //
+ //template<int N>
+ //inline void Waldo<N>::find() {
+ //}
+ public void testTemplateParameters_Bug510289() throws Exception {
+ expectedFinalInfos = 1;
+ assertRefactoringSuccess();
+ }
+
+ //A.h
+ //template <template<class> class N>
+ //struct Waldo {
+ // /*$*/void find();/*$$*/
+ //};
+ //
+ //====================
+ //template <template<class> class N>
+ //struct Waldo {
+ // void find();
+ //};
+ //
+ //template<template<class > class N>
+ //inline void Waldo<N>::find() {
+ //}
+ public void testTemplateTemplateParameters_Bug510289() throws Exception {
+ expectedFinalInfos = 1;
+ assertRefactoringSuccess();
+ }
+
+ //A.h
+ //
+ ///*$*/int PrintfToStdStr(const char *pszFmt, ...);/*$$*/
+ //
+
+ //A.cpp
+ //====================
+ //int PrintfToStdStr(const char *pszFmt, ...) {
+ //}
+ public void testFreeFunctionWithVarArgs_Bug384793() throws Exception {
+ assertRefactoringSuccess();
+ }
+
+ //A.h
+ //
+ //class TestClass {
+ //public:
+ // enum Inner {
+ // ENUM_1,
+ // ENUM_2
+ // };
+ // /*$*/Inner foo();/*$$*/
+ //};
+ //
+
+ //A.cpp
+ //====================
+ //TestClass::Inner TestClass::foo() {
+ //}
+ public void testWithInnerEnum_Bug452809() throws Exception {
+ assertRefactoringSuccess();
+ }
+
+ //A.h
+ //
+ //namespace N {
+ //struct A {
+ // /*$*/void waldo();/*$$*/
+ //};
+ //}
+
+ //A.cpp
+ //#include "A.h"
+ //namespace N {}
+ //====================
+ //#include "A.h"
+ //namespace N {
+ //void A::waldo() {
+ //}
+ //
+ //}
+ public void testNamespaceAlreadyInDefinition_Bug434677() throws Exception {
+ assertRefactoringSuccess();
+ }
+
+ //A.h
+ //
+ //struct A {
+ // /*$*/void waldo() noexcept;/*$$*/
+ //};
+
+ //A.cpp
+ //#include "A.h"
+ //====================
+ //#include "A.h"
+ //
+ //void A::waldo() noexcept {
+ //}
+ public void testNoexpect_Bug562722() throws Exception {
+ assertRefactoringSuccess();
+ }
+
+ //A.h
+ //
+ //struct Test {};
+ //class TestClass {
+ //public:
+ // /*$*/Test foo();/*$$*/
+ //};
+ //
+
+ //A.cpp
+ //====================
+ //Test TestClass::foo() {
+ //}
+ public void testWithClassAsReturnType_Bug562896() throws Exception {
+ assertRefactoringSuccess();
+ }
}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/includes/BindingClassifierTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/includes/BindingClassifierTest.java
index c24281ac673..8dfc6a6242c 100644
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/includes/BindingClassifierTest.java
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/includes/BindingClassifierTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2012, 2015 Google, Inc and others.
+ * Copyright (c) 2012, 2020 Google, Inc and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -10,9 +10,11 @@
*
* Contributors:
* Sergey Prigogin (Google) - initial API and implementation
+ * Alexander Fedorov (ArSysOp) - Bug 561993 - Remove dependency to com.ibm.icu from CDT UI
*******************************************************************************/
package org.eclipse.cdt.ui.tests.refactoring.includes;
+import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -37,8 +39,6 @@ import org.eclipse.cdt.ui.PreferenceConstants;
import org.eclipse.cdt.ui.testplugin.CTestPlugin;
import org.eclipse.jface.preference.IPreferenceStore;
-import com.ibm.icu.text.MessageFormat;
-
import junit.framework.TestSuite;
/**
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/overridemethods/OverrideMethodsRefactoringTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/overridemethods/OverrideMethodsRefactoringTest.java
index 9147c8b2a52..dff120aa23e 100755..100644
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/overridemethods/OverrideMethodsRefactoringTest.java
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/overridemethods/OverrideMethodsRefactoringTest.java
@@ -498,7 +498,7 @@ public class OverrideMethodsRefactoringTest extends RefactoringTestBase {
// virtual void baseFunc() const noexcept;
//};
//
- //inline void X::baseFunc() const {
+ //inline void X::baseFunc() const noexcept {
//}
public void testWithNoExcept() throws Exception {
selectedMethods = new String[] { "baseFunc()const" };
@@ -672,4 +672,66 @@ public class OverrideMethodsRefactoringTest extends RefactoringTestBase {
selectedMethods = new String[] { "baseFunc()const" };
assertRefactoringSuccess();
}
+
+ //A.h
+ //namespace Bar {
+ //namespace Foo {
+ //namespace Baz {
+ //class Base {
+ //public:
+ // virtual ~Base();
+ // virtual void baseFunc() const = 0;
+ //};
+ //class X: public Base {
+ //public:
+ // X();
+ // /*$*//*$$*/
+ //};
+ //}
+ //}
+ //}
+ //====================
+ //namespace Bar {
+ //namespace Foo {
+ //namespace Baz {
+ //class Base {
+ //public:
+ // virtual ~Base();
+ // virtual void baseFunc() const = 0;
+ //};
+ //class X: public Base {
+ //public:
+ // X();
+ // virtual void baseFunc() const;
+ //};
+ //}
+ //}
+ //}
+
+ //A.cpp
+ //#include "A.h"
+ //
+ //namespace Bar {
+ //namespace Foo {
+ //namespace Baz {
+ //}
+ //}
+ //}
+ //====================
+ //#include "A.h"
+ //
+ //namespace Bar {
+ //namespace Foo {
+ //namespace Baz {
+ //
+ //void X::baseFunc() const {
+ //}
+ //
+ //}
+ //}
+ //}
+ public void testWithHeaderAndSource_Bug562292() throws Exception {
+ selectedMethods = new String[] { "baseFunc()const" };
+ assertRefactoringSuccess();
+ }
}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/rename/RefactoringTests.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/rename/RefactoringTests.java
index 3fd7d917ba3..f6d51d3d3ab 100644
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/rename/RefactoringTests.java
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/rename/RefactoringTests.java
@@ -35,7 +35,7 @@ import org.eclipse.text.edits.TextEditGroup;
/**
* @author markus.schorn@windriver.com
*/
-public class RefactoringTests extends BaseTestFramework {
+public abstract class RefactoringTests extends BaseTestFramework {
private int fBufferSize;
public RefactoringTests() {
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/rename/RenameFunctionTests.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/rename/RenameFunctionTests.java
index 2ac8439cf6a..799f09345c1 100644
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/rename/RenameFunctionTests.java
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/rename/RenameFunctionTests.java
@@ -36,7 +36,7 @@ public class RenameFunctionTests extends RenameTestBase {
TestSuite suite = new TestSuite(RenameFunctionTests.class);
if (cleanup) {
- suite.addTest(new RefactoringTests("cleanupProject"));
+ suite.addTest(new RenameFunctionTests("cleanupProject"));
}
return suite;
}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/rename/RenameMacroTests.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/rename/RenameMacroTests.java
index 1ad9b31e956..60178611c36 100644
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/rename/RenameMacroTests.java
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/rename/RenameMacroTests.java
@@ -34,7 +34,7 @@ public class RenameMacroTests extends RenameTestBase {
public static Test suite(boolean cleanup) {
TestSuite suite = new TestSuite(RenameMacroTests.class);
if (cleanup) {
- suite.addTest(new RefactoringTests("cleanupProject"));
+ suite.addTest(new RenameMacroTests("cleanupProject"));
}
return suite;
}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/rename/RenameRegressionTests.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/rename/RenameRegressionTests.java
index f8a84ae072d..beebc655b1b 100644
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/rename/RenameRegressionTests.java
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/rename/RenameRegressionTests.java
@@ -17,7 +17,7 @@ package org.eclipse.cdt.ui.tests.refactoring.rename;
import java.io.StringWriter;
import org.eclipse.cdt.core.dom.ast.IBinding;
-import org.eclipse.cdt.core.tests.FailingTest;
+import org.eclipse.cdt.core.tests.FailingTester;
import org.eclipse.core.resources.IFile;
import org.eclipse.ltk.core.refactoring.Change;
import org.eclipse.ltk.core.refactoring.RefactoringStatus;
@@ -42,15 +42,10 @@ public class RenameRegressionTests extends RenameTestBase {
public static Test suite(boolean cleanup) {
TestSuite innerSuite = new TestSuite(RenameRegressionTests.class);
- innerSuite.addTest(new FailingTest(new RenameRegressionTests("_testMethod_35_72726"), 72726));
+ innerSuite.addTest(new FailingTester(new RenameRegressionTests("_testMethod_35_72726"), 72726));
TestSuite suite = new TestSuite("RenameRegressionTests");
suite.addTest(innerSuite);
- suite.addTest(RenameVariableTests.suite(false));
- suite.addTest(RenameFunctionTests.suite(false));
- suite.addTest(RenameTypeTests.suite(false));
- suite.addTest(RenameMacroTests.suite(false));
- suite.addTest(RenameTemplatesTests.suite(false));
if (cleanup)
suite.addTest(new RenameRegressionTests("cleanupProject"));
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/rename/RenameTemplatesTests.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/rename/RenameTemplatesTests.java
index b9de816dd6f..a3ddb45ce41 100644
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/rename/RenameTemplatesTests.java
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/rename/RenameTemplatesTests.java
@@ -38,7 +38,7 @@ public class RenameTemplatesTests extends RenameTestBase {
public static Test suite(boolean cleanup) {
TestSuite suite = new TestSuite(RenameTemplatesTests.class);
if (cleanup) {
- suite.addTest(new RefactoringTests("cleanupProject"));
+ suite.addTest(new RenameTemplatesTests("cleanupProject"));
}
return suite;
}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/rename/RenameTypeTests.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/rename/RenameTypeTests.java
index ac8c0a61b44..da473fdd68d 100644
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/rename/RenameTypeTests.java
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/rename/RenameTypeTests.java
@@ -39,7 +39,7 @@ public class RenameTypeTests extends RenameTestBase {
public static Test suite(boolean cleanup) {
TestSuite suite = new TestSuite(RenameTypeTests.class);
if (cleanup) {
- suite.addTest(new RefactoringTests("cleanupProject"));
+ suite.addTest(new RenameTypeTests("cleanupProject"));
}
return suite;
}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/rename/RenameVariableTests.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/rename/RenameVariableTests.java
index abc294c4ab3..baad1a7ade4 100644
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/rename/RenameVariableTests.java
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/rename/RenameVariableTests.java
@@ -39,7 +39,7 @@ public class RenameVariableTests extends RenameTestBase {
TestSuite suite = new TestSuite(RenameVariableTests.class);
if (cleanup) {
- suite.addTest(new RefactoringTests("cleanupProject"));
+ suite.addTest(new RenameVariableTests("cleanupProject"));
}
return suite;
}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/togglefunction/ToggleRefactoringTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/togglefunction/ToggleRefactoringTest.java
index 3a0c764b337..60f9601c569 100644
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/togglefunction/ToggleRefactoringTest.java
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/togglefunction/ToggleRefactoringTest.java
@@ -40,8 +40,6 @@ public class ToggleRefactoringTest extends RefactoringTestBase {
public static Test suite() {
TestSuite suite = suite(ToggleRefactoringTest.class);
- suite.addTestSuite(ToggleRefactoringCTest.class);
- suite.addTestSuite(ToggleNodeHelperTest.class);
return suite;
}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/utils/CorrectCaseTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/utils/CorrectCaseTest.java
deleted file mode 100644
index a0da59f0730..00000000000
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/utils/CorrectCaseTest.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 Institute for Software, HSR Hochschule fuer Technik
- * Rapperswil, University of applied sciences and others
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Institute for Software - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.ui.tests.refactoring.utils;
-
-import org.eclipse.cdt.internal.ui.refactoring.utils.IdentifierHelper;
-import org.eclipse.cdt.internal.ui.refactoring.utils.IdentifierResult;
-
-import junit.framework.TestCase;
-
-/**
- * @author Thomas Corbat
- *
- */
-public class CorrectCaseTest extends TestCase {
-
- public CorrectCaseTest() {
- super("Check Correct Identifier"); //$NON-NLS-1$
- }
-
- @Override
- public void runTest() {
- IdentifierResult result;
-
- result = IdentifierHelper.checkIdentifierName("A"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.VALID == result.getResult());
-
- result = IdentifierHelper.checkIdentifierName("Z"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.VALID == result.getResult());
-
- result = IdentifierHelper.checkIdentifierName("a"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.VALID == result.getResult());
-
- result = IdentifierHelper.checkIdentifierName("z"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.VALID == result.getResult());
-
- result = IdentifierHelper.checkIdentifierName("_"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.VALID == result.getResult());
-
- result = IdentifierHelper.checkIdentifierName("_A"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.VALID == result.getResult());
-
- result = IdentifierHelper.checkIdentifierName("_Z"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.VALID == result.getResult());
-
- result = IdentifierHelper.checkIdentifierName("_a"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.VALID == result.getResult());
-
- result = IdentifierHelper.checkIdentifierName("_z"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.VALID == result.getResult());
-
- result = IdentifierHelper.checkIdentifierName("__"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.VALID == result.getResult());
-
- result = IdentifierHelper.checkIdentifierName("_0"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.VALID == result.getResult());
-
- result = IdentifierHelper.checkIdentifierName("_9"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.VALID == result.getResult());
-
- result = IdentifierHelper.checkIdentifierName("Aaaa"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.VALID == result.getResult());
-
- result = IdentifierHelper.checkIdentifierName("Zaaa"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.VALID == result.getResult());
-
- result = IdentifierHelper.checkIdentifierName("aaaa"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.VALID == result.getResult());
-
- result = IdentifierHelper.checkIdentifierName("zaaa"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.VALID == result.getResult());
-
- result = IdentifierHelper.checkIdentifierName("_aaa"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.VALID == result.getResult());
-
- }
-
-}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/utils/DigitFirstCaseTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/utils/DigitFirstCaseTest.java
deleted file mode 100644
index 76a02587091..00000000000
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/utils/DigitFirstCaseTest.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 Institute for Software, HSR Hochschule fuer Technik
- * Rapperswil, University of applied sciences and others
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Institute for Software - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.ui.tests.refactoring.utils;
-
-import org.eclipse.cdt.internal.ui.refactoring.utils.IdentifierHelper;
-import org.eclipse.cdt.internal.ui.refactoring.utils.IdentifierResult;
-
-import junit.framework.TestCase;
-
-/**
- * @author Thomas Corbat
- *
- */
-public class DigitFirstCaseTest extends TestCase {
-
- public DigitFirstCaseTest() {
- super("Check Digit First Identifier"); //$NON-NLS-1$
- }
-
- @Override
- public void runTest() {
- IdentifierResult result;
-
- result = IdentifierHelper.checkIdentifierName("0"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.DIGIT_FIRST == result.getResult());
-
- result = IdentifierHelper.checkIdentifierName("9"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.DIGIT_FIRST == result.getResult());
-
- result = IdentifierHelper.checkIdentifierName("0a"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.DIGIT_FIRST == result.getResult());
-
- result = IdentifierHelper.checkIdentifierName("99"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.DIGIT_FIRST == result.getResult());
-
- }
-
-}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/utils/EmptyCaseTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/utils/EmptyCaseTest.java
deleted file mode 100644
index 438034ece1e..00000000000
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/utils/EmptyCaseTest.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 Institute for Software, HSR Hochschule fuer Technik
- * Rapperswil, University of applied sciences and others
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Institute for Software - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.ui.tests.refactoring.utils;
-
-import org.eclipse.cdt.internal.ui.refactoring.utils.IdentifierHelper;
-import org.eclipse.cdt.internal.ui.refactoring.utils.IdentifierResult;
-
-import junit.framework.TestCase;
-
-/**
- * @author Thomas Corbat
- *
- */
-public class EmptyCaseTest extends TestCase {
-
- public EmptyCaseTest() {
- super("Check Empty Identifier"); //$NON-NLS-1$
- }
-
- @Override
- public void runTest() {
- IdentifierResult result;
-
- result = IdentifierHelper.checkIdentifierName(""); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.EMPTY == result.getResult());
-
- }
-
-}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/utils/IdentifierHelperTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/utils/IdentifierHelperTest.java
index baa7f968081..d1d4c1bcd15 100644
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/utils/IdentifierHelperTest.java
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/utils/IdentifierHelperTest.java
@@ -11,28 +11,247 @@
*
* Contributors:
* Institute for Software - initial API and implementation
+ * Martin Weber
*******************************************************************************/
package org.eclipse.cdt.ui.tests.refactoring.utils;
-import junit.framework.Test;
-import junit.framework.TestSuite;
+import org.eclipse.cdt.internal.ui.refactoring.utils.IdentifierHelper;
+import org.eclipse.cdt.internal.ui.refactoring.utils.IdentifierResult;
+
+import junit.framework.TestCase;
/**
* @author Thomas Corbat
+ * @author Martin Weber
*/
-public class IdentifierHelperTest extends TestSuite {
+public class IdentifierHelperTest extends TestCase {
+
+ public void testCorrectIdentifierCase() {
+ IdentifierResult result;
+
+ result = IdentifierHelper.checkIdentifierName("A"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.VALID == result.getResult());
+
+ result = IdentifierHelper.checkIdentifierName("Z"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.VALID == result.getResult());
+
+ result = IdentifierHelper.checkIdentifierName("a"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.VALID == result.getResult());
+
+ result = IdentifierHelper.checkIdentifierName("z"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.VALID == result.getResult());
+
+ result = IdentifierHelper.checkIdentifierName("_"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.VALID == result.getResult());
+
+ result = IdentifierHelper.checkIdentifierName("_A"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.VALID == result.getResult());
+
+ result = IdentifierHelper.checkIdentifierName("_Z"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.VALID == result.getResult());
+
+ result = IdentifierHelper.checkIdentifierName("_a"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.VALID == result.getResult());
+
+ result = IdentifierHelper.checkIdentifierName("_z"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.VALID == result.getResult());
+
+ result = IdentifierHelper.checkIdentifierName("__"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.VALID == result.getResult());
+
+ result = IdentifierHelper.checkIdentifierName("_0"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.VALID == result.getResult());
+
+ result = IdentifierHelper.checkIdentifierName("_9"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.VALID == result.getResult());
+
+ result = IdentifierHelper.checkIdentifierName("Aaaa"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.VALID == result.getResult());
+
+ result = IdentifierHelper.checkIdentifierName("Zaaa"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.VALID == result.getResult());
+
+ result = IdentifierHelper.checkIdentifierName("aaaa"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.VALID == result.getResult());
- public IdentifierHelperTest() {
- super("Identifier Helper Test"); //$NON-NLS-1$
+ result = IdentifierHelper.checkIdentifierName("zaaa"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.VALID == result.getResult());
+
+ result = IdentifierHelper.checkIdentifierName("_aaa"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.VALID == result.getResult());
}
- public static Test suite() {
- TestSuite suite = new TestSuite("Test for Identifier Helper"); //$NON-NLS-1$
- suite.addTest(new CorrectCaseTest());
- suite.addTest(new DigitFirstCaseTest());
- suite.addTest(new EmptyCaseTest());
- suite.addTest(new IllegalCharCaseTest());
- suite.addTest(new KeywordCaseTest());
- return suite;
+ public void testDigitFirst() {
+ IdentifierResult result;
+
+ result = IdentifierHelper.checkIdentifierName("0"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.DIGIT_FIRST == result.getResult());
+
+ result = IdentifierHelper.checkIdentifierName("9"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.DIGIT_FIRST == result.getResult());
+
+ result = IdentifierHelper.checkIdentifierName("0a"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.DIGIT_FIRST == result.getResult());
+
+ result = IdentifierHelper.checkIdentifierName("99"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.DIGIT_FIRST == result.getResult());
+ }
+
+ public void testEmpty() {
+ IdentifierResult result;
+
+ result = IdentifierHelper.checkIdentifierName(""); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.EMPTY == result.getResult());
+ }
+
+ public void testIllegalChar() {
+ IdentifierResult result;
+
+ result = IdentifierHelper.checkIdentifierName("a~"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.ILLEGAL_CHARACTER == result.getResult());
+
+ result = IdentifierHelper.checkIdentifierName("a%"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.ILLEGAL_CHARACTER == result.getResult());
+
+ result = IdentifierHelper.checkIdentifierName("a!"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.ILLEGAL_CHARACTER == result.getResult());
+
+ result = IdentifierHelper.checkIdentifierName("{}"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.ILLEGAL_CHARACTER == result.getResult());
+ }
+
+ public void testKeyword() {
+ IdentifierResult result;
+
+ result = IdentifierHelper.checkIdentifierName("using"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("bitand"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("for"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("const_cast"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("namespace"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("break"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("static_cast"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("false"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("volatile"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("template"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("else"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("dynamic_cast"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("static"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("or"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("not_eq"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("class"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("enum"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("typedef"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("restrict"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("and"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("reinterpret_cast"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("not"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("default"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("explicit"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("sizeof"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("auto"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("case"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("this"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("try"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("friend"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("asm"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("virtual"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("const"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("or_eq"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("catch"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("switch"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("goto"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("while"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("private"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("throw"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("protected"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("struct"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("if"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("extern"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("union"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("typeid"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("noexcept"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("inline"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("compl"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("delete"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("do"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("xor"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("export"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("bitor"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("return"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("true"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("operator"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("register"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("new"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("and_eq"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("typename"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("continue"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("mutable"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("xor_eq"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
+ result = IdentifierHelper.checkIdentifierName("public"); //$NON-NLS-1$
+ assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
}
}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/utils/IllegalCharCaseTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/utils/IllegalCharCaseTest.java
deleted file mode 100644
index 149df185185..00000000000
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/utils/IllegalCharCaseTest.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 Institute for Software, HSR Hochschule fuer Technik
- * Rapperswil, University of applied sciences and others
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Institute for Software - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.ui.tests.refactoring.utils;
-
-import org.eclipse.cdt.internal.ui.refactoring.utils.IdentifierHelper;
-import org.eclipse.cdt.internal.ui.refactoring.utils.IdentifierResult;
-
-import junit.framework.TestCase;
-
-/**
- * @author Thomas Corbat
- *
- */
-public class IllegalCharCaseTest extends TestCase {
-
- public IllegalCharCaseTest() {
- super("Check Illegal Character Identifier"); //$NON-NLS-1$
- }
-
- @Override
- public void runTest() {
- IdentifierResult result;
-
- result = IdentifierHelper.checkIdentifierName("a~"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.ILLEGAL_CHARACTER == result.getResult());
-
- result = IdentifierHelper.checkIdentifierName("a%"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.ILLEGAL_CHARACTER == result.getResult());
-
- result = IdentifierHelper.checkIdentifierName("a!"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.ILLEGAL_CHARACTER == result.getResult());
-
- result = IdentifierHelper.checkIdentifierName("{}"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.ILLEGAL_CHARACTER == result.getResult());
-
- }
-
-}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/utils/KeywordCaseTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/utils/KeywordCaseTest.java
deleted file mode 100644
index eb8ae854b4e..00000000000
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/utils/KeywordCaseTest.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2012 Institute for Software, HSR Hochschule fuer Technik
- * Rapperswil, University of applied sciences and others
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Institute for Software - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.ui.tests.refactoring.utils;
-
-import org.eclipse.cdt.internal.ui.refactoring.utils.IdentifierHelper;
-import org.eclipse.cdt.internal.ui.refactoring.utils.IdentifierResult;
-
-import junit.framework.TestCase;
-
-/**
- * @author Thomas Corbat
- */
-public class KeywordCaseTest extends TestCase {
-
- public KeywordCaseTest() {
- super("Check Keyword Identifier"); //$NON-NLS-1$
- }
-
- @Override
- public void runTest() {
- IdentifierResult result;
-
- result = IdentifierHelper.checkIdentifierName("using"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("bitand"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("for"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("const_cast"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("namespace"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("break"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("static_cast"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("false"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("volatile"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("template"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("else"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("dynamic_cast"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("static"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("or"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("not_eq"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("class"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("enum"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("typedef"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("restrict"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("and"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("reinterpret_cast"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("not"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("default"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("explicit"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("sizeof"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("auto"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("case"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("this"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("try"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("friend"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("asm"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("virtual"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("const"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("or_eq"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("catch"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("switch"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("goto"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("while"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("private"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("throw"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("protected"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("struct"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("if"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("extern"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("union"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("typeid"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("noexcept"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("inline"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("compl"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("delete"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("do"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("xor"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("export"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("bitor"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("return"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("true"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("operator"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("register"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("new"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("and_eq"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("typename"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("continue"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("mutable"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("xor_eq"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- result = IdentifierHelper.checkIdentifierName("public"); //$NON-NLS-1$
- assertTrue(result.getMessage(), IdentifierResult.KEYWORD == result.getResult());
- }
-}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/utils/NameComposerTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/utils/NameComposerTest.java
index 4b1d8fdd93f..c87d5118ded 100644
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/utils/NameComposerTest.java
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/utils/NameComposerTest.java
@@ -17,7 +17,10 @@ import static org.eclipse.cdt.internal.corext.codemanipulation.StubUtility.trimF
import static org.eclipse.cdt.internal.ui.util.NameComposer.createByExample;
import org.eclipse.cdt.internal.ui.util.NameComposer;
+import org.eclipse.cdt.ui.CUIPlugin;
import org.eclipse.cdt.ui.PreferenceConstants;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences;
+import org.eclipse.core.runtime.preferences.InstanceScope;
import junit.framework.TestCase;
@@ -68,11 +71,7 @@ public class NameComposerTest extends TestCase {
public void testTrimFieldName() {
assertEquals("f", trimFieldName("f_"));
assertEquals("F", trimFieldName("F_"));
- assertEquals("oo", trimFieldName("F_oo"));
- assertEquals("o", trimFieldName("f_o"));
- assertEquals("M", trimFieldName("a_M_"));
- assertEquals("bs", trimFieldName("a_bs_"));
assertEquals("foo_bar", trimFieldName("foo_bar"));
assertEquals("foo_bar", trimFieldName("foo_bar_"));
@@ -80,15 +79,9 @@ public class NameComposerTest extends TestCase {
assertEquals("foo", trimFieldName("foo"));
assertEquals("foo", trimFieldName("_foo"));
- assertEquals("bar", trimFieldName("_f_bar"));
assertEquals("f", trimFieldName("f__"));
assertEquals("f", trimFieldName("__f"));
- assertEquals("O__b", trimFieldName("fO__b"));
- assertEquals("Oo", trimFieldName("fOo"));
- assertEquals("O", trimFieldName("fO"));
- assertEquals("MyStatic", trimFieldName("sMyStatic"));
- assertEquals("MyMember", trimFieldName("mMyMember"));
assertEquals("8", trimFieldName("_8"));
@@ -100,8 +93,18 @@ public class NameComposerTest extends TestCase {
assertEquals("Id", trimFieldName("Id"));
assertEquals("ID", trimFieldName("ID"));
assertEquals("IDS", trimFieldName("IDS"));
- assertEquals("ID", trimFieldName("bID"));
- assertEquals("Id", trimFieldName("MId"));
assertEquals("IdA", trimFieldName("IdA"));
+
+ IEclipsePreferences node = InstanceScope.INSTANCE.getNode(CUIPlugin.PLUGIN_ID);
+ String oldValue = node.get(PreferenceConstants.NAME_STYLE_FIELD_PREFIX, null);
+ try {
+ node.put(PreferenceConstants.NAME_STYLE_FIELD_PREFIX, "m");
+ assertEquals("MyMember", trimFieldName("mMyMember"));
+ } finally {
+ if (oldValue == null)
+ node.remove(PreferenceConstants.NAME_STYLE_FIELD_PREFIX);
+ else
+ node.put(PreferenceConstants.NAME_STYLE_FIELD_PREFIX, oldValue);
+ }
}
}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/utils/UtilTestSuite.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/utils/UtilTestSuite.java
index db0abd60ff2..74e50f24d8b 100644
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/utils/UtilTestSuite.java
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/utils/UtilTestSuite.java
@@ -25,7 +25,7 @@ public class UtilTestSuite extends TestSuite {
public static Test suite() throws Exception {
UtilTestSuite suite = new UtilTestSuite();
- suite.addTest(IdentifierHelperTest.suite());
+ suite.addTestSuite(IdentifierHelperTest.class);
suite.addTestSuite(DefinitionFinderTest.class);
suite.addTestSuite(PseudoNameGeneratorTest.class);
suite.addTestSuite(NameComposerTest.class);
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/AbstractAutoEditTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/AbstractAutoEditTest.java
index 9b2bdd678fc..6b66495b109 100644
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/AbstractAutoEditTest.java
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/AbstractAutoEditTest.java
@@ -33,7 +33,7 @@ import org.eclipse.jface.text.TextUtilities;
/**
* IAutoEditStrategy related tests
*/
-public class AbstractAutoEditTest extends BaseTestCase {
+public abstract class AbstractAutoEditTest extends BaseTestCase {
protected AbstractAutoEditTest(String name) {
super(name);
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/BreakIteratorTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/BreakIteratorTest.java
index e15c175347e..194a363d875 100644
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/BreakIteratorTest.java
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/BreakIteratorTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
+ * Copyright (c) 2000, 2020 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -11,14 +11,15 @@
* Contributors:
* IBM Corporation - initial API and implementation
* Sergey Prigogin, Google
+ * Alexander Fedorov (ArSysOp) - Bug 561993 - Remove dependency to com.ibm.icu from CDT UI
*******************************************************************************/
package org.eclipse.cdt.ui.tests.text;
-import com.ibm.icu.text.BreakIterator;
+import java.text.BreakIterator;
import junit.framework.TestCase;
-public class BreakIteratorTest extends TestCase {
+public abstract class BreakIteratorTest extends TestCase {
protected BreakIterator fBreakIterator;
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/CHeuristicScannerTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/CHeuristicScannerTest.java
index b938ae4d856..1e8ada99eb8 100644
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/CHeuristicScannerTest.java
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/CHeuristicScannerTest.java
@@ -21,6 +21,7 @@ import org.eclipse.cdt.core.formatter.DefaultCodeFormatterConstants;
import org.eclipse.cdt.internal.ui.text.CHeuristicScanner;
import org.eclipse.cdt.internal.ui.text.CIndenter;
import org.eclipse.cdt.internal.ui.text.FastCPartitionScanner;
+import org.eclipse.cdt.internal.ui.text.Symbols;
import org.eclipse.cdt.ui.text.ICPartitions;
import org.eclipse.jface.text.Document;
import org.eclipse.jface.text.IDocument;
@@ -678,4 +679,19 @@ public class CHeuristicScannerTest extends TestCase {
String indent = fScanner.computeIndentation(fDocument.getLength() - 8).toString();
Assert.assertEquals(" ", indent);
}
+
+ public void testNextTokenDoubleChar() throws Exception {
+ fDocument.set("::");
+ assertEquals(fHeuristicScanner.nextToken(0, fDocument.getLength() - 1), Symbols.TokenDOUBLECOLON);
+ fDocument.set("<<");
+ assertEquals(fHeuristicScanner.nextToken(0, fDocument.getLength() - 1), Symbols.TokenSHIFTLEFT);
+ fDocument.set("<=");
+ assertEquals(fHeuristicScanner.nextToken(0, fDocument.getLength() - 1), Symbols.TokenOTHER);
+ fDocument.set(">>");
+ assertEquals(fHeuristicScanner.nextToken(0, fDocument.getLength() - 1), Symbols.TokenSHIFTRIGHT);
+ fDocument.set(">=");
+ assertEquals(fHeuristicScanner.nextToken(0, fDocument.getLength() - 1), Symbols.TokenOTHER);
+ fDocument.set("->");
+ assertEquals(fHeuristicScanner.nextToken(0, fDocument.getLength() - 1), Symbols.TokenARROW);
+ }
}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/CIndenterTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/CIndenterTest.java
index c0e3178f300..15ca7f6c2fa 100644
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/CIndenterTest.java
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/CIndenterTest.java
@@ -1043,4 +1043,62 @@ public class CIndenterTest extends BaseUITestCase {
DefaultCodeFormatterConstants.INDENT_ON_COLUMN));
assertIndenterResult();
}
+
+ //vector<int> f()
+ //{
+ //}
+
+ //vector<int> f()
+ //{
+ //}
+ public void testIndentationAfterFunctionHeaderWithReturnTypeTemplateSpecification_Bug537568() throws Exception {
+ assertIndenterResult();
+ }
+
+ //MyFunctionCall(::My::Namespace::MyType::Value1,
+ //var1,
+ //::My::Namespace::MyType::Value2,
+ //var2);
+
+ //MyFunctionCall(::My::Namespace::MyType::Value1,
+ // var1,
+ // ::My::Namespace::MyType::Value2,
+ // var2);
+ public void testIndentationAfterArgumentWithQualifier_Bug516393() throws Exception {
+ assertIndenterResult(); // global scope
+ }
+
+ //x = f()
+ //+ ::f()
+ //+ A::f()
+ //+ ::A::f()
+ //+ B::C::f();
+
+ //x = f()
+ // + ::f()
+ // + A::f()
+ // + ::A::f()
+ // + B::C::f();
+ public void testIndentationAfterFunctionCallWithQualifier_Bug562125() throws Exception {
+ assertIndenterResult();
+ }
+
+ //class Test
+ //{
+ //public:
+ //Test()
+ //{
+ //}
+ //};
+
+ //class Test
+ //{
+ //public:
+ // Test()
+ // {
+ // }
+ //};
+ public void testIndentationAfterContructorWithAccessSpecifier_Bug562181() throws Exception {
+ assertIndenterResult();
+ }
}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/CPartitionerTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/CPartitionerTest.java
index c62cad5f33b..e6dc29157fb 100644
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/CPartitionerTest.java
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/CPartitionerTest.java
@@ -1192,4 +1192,16 @@ public class CPartitionerTest extends TestCase {
assertTrue(false);
}
}
+
+ public void testNumberSeparators() {
+ try {
+ fDocument.replace(0, fDocument.getLength(),
+ "0b1'100'100'100\n1'123'456\n0x1000'1000\n0111'1000\n0xAABB'CCDD");
+ ITypedRegion[] result = fDocument.computePartitioning(0, fDocument.getLength());
+ TypedRegion[] expectation = { new TypedRegion(0, fDocument.getLength(), IDocument.DEFAULT_CONTENT_TYPE) };
+ checkPartitioning(expectation, result);
+ } catch (BadLocationException x) {
+ assertTrue(false);
+ }
+ }
}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/CodeFormatterTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/CodeFormatterTest.java
index c112ca61d88..d5a7504ae16 100644
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/CodeFormatterTest.java
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/CodeFormatterTest.java
@@ -4708,4 +4708,113 @@ public class CodeFormatterTest extends BaseUITestCase {
public void testMacroInFunctionParameters_Bug550096() throws Exception {
assertFormatterResult();
}
+
+ //enum {A[[maybe_unused]],B[[maybe_unused]]=42};
+
+ //enum {
+ // A [[maybe_unused]], B [[maybe_unused]] = 42
+ //};
+ public void testEnumWithAttributes_Bug559545() throws Exception {
+ assertFormatterResult();
+ }
+
+ ////@formatter:off
+ // int a;
+ //
+ ////@formatter:on
+ // int b;
+ // int c;
+
+ ////@formatter:off
+ // int a;
+ //
+ ////@formatter:on
+ //int b;
+ //int c;
+ public void testFormatterOnOff_Bug559669() throws Exception {
+ assertFormatterResult();
+ }
+
+ //int main() {
+ // auto f = [&](){
+ // };
+ // return 0;
+ //}
+
+ //int main() {
+ // auto f = [ & ]() {
+ // };
+ // return 0;
+ //}
+ public void testLambdaExpressionOnlyDefCapture_Bug561559() throws Exception {
+ fOptions.put(DefaultCodeFormatterConstants.FORMATTER_INSERT_SPACE_AFTER_OPENING_PAREN_IN_METHOD_DECLARATION,
+ CCorePlugin.INSERT);
+ fOptions.put(DefaultCodeFormatterConstants.FORMATTER_INSERT_SPACE_BEFORE_CLOSING_PAREN_IN_METHOD_DECLARATION,
+ CCorePlugin.INSERT);
+ assertFormatterResult();
+ }
+
+ //class Foo {
+ //public:
+ // void bar() noexcept
+ // {
+ // }
+ // void baz() noexcept(false){
+ // }
+ // void biz() noexcept(noexcept(false)){
+ // }
+ //};
+
+ //class Foo {
+ //public:
+ // void bar() noexcept {
+ // }
+ // void baz() noexcept (false) {
+ // }
+ // void biz() noexcept (noexcept(false)) {
+ // }
+ //};
+ public void testNoexcept_Bug562723() throws Exception {
+ assertFormatterResult();
+ }
+
+ //void foo(int...) {}
+ //int main() {}
+
+ //void foo(int ...) {
+ //}
+ //int main() {
+ //}
+ public void testVariadicFunction_Bug487990() throws Exception {
+ assertFormatterResult();
+ }
+
+ //int main() {
+ // const int a = []{return 12;}();
+ // return 0;
+ //}
+
+ //int main() {
+ // const int a = [] {
+ // return 12;
+ // }();
+ // return 0;
+ //}
+ public void testLambdaWithoutParens_Bug564273() throws Exception {
+ assertFormatterResult();
+ }
+
+ //#ifdef AAA
+ //#define BBB
+ //#endif
+
+ //#ifdef AAA
+ //#define BBB
+ //#endif
+ public void testCodeFormatterTagsOff_Bug579261() throws Exception {
+ // Tests that when there is an inactive block of code that code formatter doesn't fail when
+ // tags are disabled
+ fOptions.put(DefaultCodeFormatterConstants.FORMATTER_USE_COMMENT_TAG, DefaultCodeFormatterConstants.FALSE);
+ assertFormatterResult();
+ }
}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/DefaultCCommentAutoEditStrategyTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/DefaultCCommentAutoEditStrategyTest.java
index 00d57b8daf4..4bc0534a7f9 100644
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/DefaultCCommentAutoEditStrategyTest.java
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/DefaultCCommentAutoEditStrategyTest.java
@@ -166,13 +166,13 @@ public class DefaultCCommentAutoEditStrategyTest extends AbstractAutoEditTest {
// class A {
// /* X
- // };
+ // }; ${whitespace_eol}
// class A {
- // /*
+ // /* ${whitespace_eol}
// * X
// */
- // };
+ // }; ${whitespace_eol}
public void testInsertNewLine5() {
assertNewLineBehaviour();
}
@@ -336,7 +336,7 @@ public class DefaultCCommentAutoEditStrategyTest extends AbstractAutoEditTest {
// X
// /*
- //
+ // ${whitespace_eol}
// X
public void testInsertNewLine17() {
assertNewLineBehaviour();
@@ -347,7 +347,7 @@ public class DefaultCCommentAutoEditStrategyTest extends AbstractAutoEditTest {
// */
// /*
- //
+ // ${whitespace_eol}
// X
// */
public void testInsertNewLine18() {
@@ -460,7 +460,10 @@ public class DefaultCCommentAutoEditStrategyTest extends AbstractAutoEditTest {
// };
// }
// }
- public void _testFollowingDeclaration5() {
+ //XXX: This test was unexpectedly succeeding - with no previous commentary about
+ // what this test was or why it failed I have no idea why it is now passing
+ // Therefore I changed visibility to private so it would be ignored.
+ private void IGNORE_testFollowingDeclaration5() {
assertDeclarationFollowingX(
"namespace n2 {\n void foo() {}\n void bar(int x) {}\n class C {\n int y;\n void baz(int x) {}\n };\n }");
}
@@ -527,7 +530,7 @@ public class DefaultCCommentAutoEditStrategyTest extends AbstractAutoEditTest {
// public:
// X
// STATIC void D::foo(int x) {
- //
+ // ${whitespace_eol}
// }
// };
public void testFollowingDeclaration13() throws CoreException {
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/FoldingCommentsTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/FoldingCommentsTest.java
index ae836835d50..bfd8940f911 100644
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/FoldingCommentsTest.java
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/FoldingCommentsTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2014, 2017 Kichwa Coders Ltd. and others.
+ * Copyright (c) 2014, 2017 Kichwa Coders Ltd and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/NumberRuleTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/NumberRuleTest.java
index 71b19f67fd2..a99c5b4d8a6 100644
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/NumberRuleTest.java
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/NumberRuleTest.java
@@ -68,6 +68,15 @@ public class NumberRuleTest extends TestCase {
assertNumber("-123456789");
assertNumber("+123456789");
+ // binary numbers (C++14)
+ assertNumber("0b0");
+ assertNumber("-0b0");
+ assertNumber("+0b1");
+ assertNumber("-0B0");
+ assertNumber("+0B1");
+ assertNumber("+0b01010101");
+ assertNumber("+0b10101010");
+
// hex numbers
assertNumber("0xaffe");
assertNumber("-0xaffe");
@@ -104,6 +113,9 @@ public class NumberRuleTest extends TestCase {
assertNoNumber(".");
assertNoNumber("-.");
assertNoNumber("+.");
+ assertNoNumber("b");
+ assertNoNumber(".b");
+ assertNoNumber("-b");
assertNoNumber("x");
assertNoNumber(".x");
assertNoNumber("-x");
@@ -125,6 +137,15 @@ public class NumberRuleTest extends TestCase {
assertNoNumber("+ 9");
}
+ public void testSeparators() {
+ assertNumber("0b1'100'100'100");
+ assertNumber("1'123'456");
+ assertNumber("0x1000'1000");
+ assertNumber("0111'1000");
+ assertNumber("0xAABB'CCDD");
+ assertNoNumber("'");
+ }
+
/**
* Validate that given string is recognized as a number.
* @param string
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/TextTestSuite.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/TextTestSuite.java
index de37cda157a..c66b9324643 100644
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/TextTestSuite.java
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/TextTestSuite.java
@@ -33,7 +33,7 @@ import org.junit.runners.Suite;
// smart edit tests
AlignConstActionTest.class, CAutoIndentTest.class, CHeuristicScannerTest.class, BracketInserterTest.class,
IndentActionTest.class, FormatActionTest.class, ShiftActionTest.class, CodeFormatterTest.class,
- CIndenterTest.class, TemplateFormatterTest.class,
+ CIndenterTest.class, TemplateFormatterTest.class, DefaultCCommentAutoEditStrategyTest.class,
// Break iterator tests.
CBreakIteratorTest.class, CWordIteratorTest.class,
@@ -61,6 +61,11 @@ import org.junit.runners.Suite;
AddBlockCommentTest.class, RemoveBlockCommentTest.class, SortLinesTest.class,
// add include
- AddIncludeTest.class, })
+ AddIncludeTest.class,
+
+ // other tests
+ OverrideIndicatorTest.class,
+
+})
public class TextTestSuite {
}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist/CompletionProposalComputerPreferenceParserTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist/CompletionProposalComputerPreferenceParserTest.java
new file mode 100644
index 00000000000..7afe5feff54
--- /dev/null
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist/CompletionProposalComputerPreferenceParserTest.java
@@ -0,0 +1,81 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Kichwa Coders Canada Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.eclipse.cdt.ui.tests.text.contentassist;
+
+import static java.util.Arrays.asList;
+import static org.eclipse.cdt.internal.ui.text.contentassist.CompletionProposalComputerPreferenceParser.parseCategoryOrder;
+import static org.eclipse.cdt.internal.ui.text.contentassist.CompletionProposalComputerPreferenceParser.parseExcludedCategories;
+import static org.junit.Assert.assertEquals;
+
+import java.text.ParseException;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.junit.Test;
+
+public class CompletionProposalComputerPreferenceParserTest {
+
+ @Test
+ public void testParseExcludedCategories() throws ParseException {
+ assertEquals(asSet(), parseExcludedCategories("\0"));
+ assertEquals(asSet(), parseExcludedCategories("\0\0"));
+ assertEquals(asSet("cat1"), parseExcludedCategories("cat1\0"));
+ assertEquals(asSet("cat1", "cat2"), parseExcludedCategories("cat1\0cat2"));
+ assertEquals(asSet("cat1"), parseExcludedCategories("cat1${0x0}"));
+ assertEquals(asSet("cat1", "cat2"), parseExcludedCategories("cat1${0x0}cat2"));
+ assertEquals(asSet("cat1"), parseExcludedCategories("cat1$$$${0x0}"));
+ assertEquals(asSet("cat1", "cat2"), parseExcludedCategories("cat1$$$${0x0}cat2"));
+ assertEquals(asSet("cat1", "cat2", "cat3", "cat4"),
+ parseExcludedCategories("cat1$$$${0x0}cat2${0x0}cat3\0cat4\0"));
+ }
+
+ @Test
+ public void testParseCategoryOrder() throws ParseException {
+ assertEquals(asMap("cat1", 1), parseCategoryOrder("cat1:1\0"));
+ assertEquals(asMap("cat1", 1000), parseCategoryOrder("cat1:1000\0\0"));
+ assertEquals(asMap("cat1", 1000, "cat2", 2000), parseCategoryOrder("cat1:1000\0cat2:2000"));
+ assertEquals(asMap("cat1", 1), parseCategoryOrder("cat1:1${0x0}"));
+ assertEquals(asMap("cat1", 1000, "cat2", 2000), parseCategoryOrder("cat1:1000${0x0}cat2:2000"));
+ assertEquals(asMap("cat1", 1), parseCategoryOrder("cat1:1$$$$${0x0}"));
+ assertEquals(asMap("cat1", 1000, "cat2", 2000), parseCategoryOrder("cat1:1000$$$$${0x0}cat2:2000"));
+ assertEquals(asMap("cat1", 1000, "cat2", 2000, "cat3", 3000, "cat4", 4000),
+ parseCategoryOrder("cat1:1000$$$$${0x0}cat2:2000${0x0}cat3:3000\0cat4:4000\0"));
+ }
+
+ @Test(expected = ParseException.class)
+ public void testParseIntFailsGracefully1() throws ParseException {
+ assertEquals(asMap(), parseCategoryOrder("cat1:this is not a number\0"));
+ }
+
+ @Test(expected = ParseException.class)
+ public void testParseIntFailsGracefully2() throws ParseException {
+ assertEquals(asMap(), parseCategoryOrder("cat1 missing number\0"));
+ }
+
+ @Test(expected = ParseException.class)
+ public void testParseIntFailsGracefully3() throws ParseException {
+ assertEquals(asMap(), parseCategoryOrder("cat1:0:extra field\0"));
+ }
+
+ private Set<String> asSet(String... elem) {
+ return new HashSet<>(asList(elem));
+ }
+
+ private Map<String, Integer> asMap(Object... elem) {
+ HashMap<String, Integer> map = new HashMap<>();
+ for (int i = 0; i < elem.length; i += 2) {
+ map.put((String) elem[i + 0], (Integer) elem[i + 1]);
+ }
+ return map;
+ }
+}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist/ContentAssistTestSuite.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist/ContentAssistTestSuite.java
index c95b6f6fb69..290d67c52a4 100644
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist/ContentAssistTestSuite.java
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist/ContentAssistTestSuite.java
@@ -22,6 +22,8 @@ import org.junit.runners.Suite;
ContentAssistTests.class,
+ CompletionProposalComputerPreferenceParserTest.class,
+
})
public class ContentAssistTestSuite {
}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/AbstractContentAssistTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/AbstractContentAssistTest.java
index cb051436426..ba66e60b3d4 100644
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/AbstractContentAssistTest.java
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/AbstractContentAssistTest.java
@@ -182,7 +182,9 @@ public abstract class AbstractContentAssistTest extends BaseUITestCase {
ContentAssistResult r = invokeContentAssist(offset, length, isCompletion, isTemplate, filterResults);
- String[] resultStrings = toStringArray(r.results, compareType);
+ List<String> resultStringList = new ArrayList<>(Arrays.asList(toStringArray(r.results, compareType)));
+ resultStringList.removeIf(string -> string != null && string.contains(".settings"));
+ String[] resultStrings = resultStringList.toArray(String[]::new);
if (!checkOrder) {
Arrays.sort(expected);
Arrays.sort(resultStrings);
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/AnonymousTypes_CompletionTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/AnonymousTypes_CompletionTest.java
new file mode 100644
index 00000000000..731351015a0
--- /dev/null
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/AnonymousTypes_CompletionTest.java
@@ -0,0 +1,97 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2009 Symbian Software Ltd.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Andrew Ferguson (Symbian) - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.ui.tests.text.contentassist2;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * Test that anonymous types are not returned as possibilities.
+ */
+public class AnonymousTypes_CompletionTest extends CompletionProposalsBaseTest {
+ private final String fileName = "CompletionTestStart40.cpp";
+ private final String fileFullPath = "resources/contentassist/" + fileName;
+ private final String headerFileName = "CompletionTestStart40.h";
+ private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
+ private final String expectedPrefix = "";
+ private final String[] expectedResults = { "notAnonymousEnum", "notAnonymousClass", "xOtherClass" };
+
+ public AnonymousTypes_CompletionTest(String name) {
+ super(name);
+ // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=174809
+ // setExpectFailure(174809);
+ }
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(AnonymousTypes_CompletionTest.class.getName());
+ suite.addTest(new AnonymousTypes_CompletionTest("testCompletionProposals"));
+ return suite;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
+ */
+ @Override
+ protected int getCompletionPosition() {
+ return getBuffer().indexOf(" x ");
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
+ */
+ @Override
+ protected String getExpectedPrefix() {
+ return expectedPrefix;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
+ */
+ @Override
+ protected String[] getExpectedResultsValues() {
+ return expectedResults;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
+ */
+ @Override
+ protected String getFileName() {
+ return fileName;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
+ */
+ @Override
+ protected String getFileFullPath() {
+ return fileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
+ */
+ @Override
+ protected String getHeaderFileFullPath() {
+ return headerFileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
+ */
+ @Override
+ protected String getHeaderFileName() {
+ return headerFileName;
+ }
+}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/ArgumentType_Prefix2_CompletionTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/ArgumentType_Prefix2_CompletionTest.java
new file mode 100644
index 00000000000..2828bc1279a
--- /dev/null
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/ArgumentType_Prefix2_CompletionTest.java
@@ -0,0 +1,103 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2012 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Rational Software - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.ui.tests.text.contentassist2;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * @author hamer
+ *
+ * Testing Argument_Type completion kind , with a prefix
+ * Bug#50642 : Wrong completion kind when declaring an argument type
+ *
+ */
+public class ArgumentType_Prefix2_CompletionTest extends CompletionProposalsBaseTest {
+ private final String fileName = "CompletionTestStart18.cpp";
+ private final String fileFullPath = "resources/contentassist/" + fileName;
+ private final String headerFileName = "CompletionTestStart.h";
+ private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
+ private final String expectedPrefix = "a";
+ private final String[] expectedResults = { "aClass", "anotherClass", "aNamespace", "anEnumeration", "AStruct",
+ "AMacro(x)" };
+
+ public ArgumentType_Prefix2_CompletionTest(String name) {
+ super(name);
+ // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=109724
+ // setExpectFailure(109724);
+ }
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(ArgumentType_Prefix2_CompletionTest.class.getName());
+ suite.addTest(new ArgumentType_Prefix2_CompletionTest("testCompletionProposals"));
+ return suite;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
+ */
+ @Override
+ protected int getCompletionPosition() {
+ return getBuffer().indexOf(" a ") + 2;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
+ */
+ @Override
+ protected String getExpectedPrefix() {
+ return expectedPrefix;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
+ */
+ @Override
+ protected String[] getExpectedResultsValues() {
+ return expectedResults;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
+ */
+ @Override
+ protected String getFileName() {
+ return fileName;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
+ */
+ @Override
+ protected String getFileFullPath() {
+ return fileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
+ */
+ @Override
+ protected String getHeaderFileFullPath() {
+ return headerFileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
+ */
+ @Override
+ protected String getHeaderFileName() {
+ return headerFileName;
+ }
+
+}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/ArgumentType_Prefix_CompletionTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/ArgumentType_Prefix_CompletionTest.java
new file mode 100644
index 00000000000..af74a840684
--- /dev/null
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/ArgumentType_Prefix_CompletionTest.java
@@ -0,0 +1,103 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2012 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Rational Software - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.ui.tests.text.contentassist2;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * @author hamer
+ *
+ * Testing Argument_Type completion kind , with a prefix
+ * Bug#50642 : Wrong completion kind when declaring an argument type
+ *
+ */
+public class ArgumentType_Prefix_CompletionTest extends CompletionProposalsBaseTest {
+ private final String fileName = "CompletionTestStart16.cpp";
+ private final String fileFullPath = "resources/contentassist/" + fileName;
+ private final String headerFileName = "CompletionTestStart.h";
+ private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
+ private final String expectedPrefix = "a";
+ private final String[] expectedResults = { "aClass", "anotherClass", "aNamespace", "anEnumeration", "AStruct",
+ "AMacro(x)" };
+
+ public ArgumentType_Prefix_CompletionTest(String name) {
+ super(name);
+ // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=109724
+ // setExpectFailure(109724);
+ }
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(ArgumentType_Prefix_CompletionTest.class.getName());
+ suite.addTest(new ArgumentType_Prefix_CompletionTest("testCompletionProposals"));
+ return suite;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
+ */
+ @Override
+ protected int getCompletionPosition() {
+ return getBuffer().indexOf(" a ") + 2;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
+ */
+ @Override
+ protected String getExpectedPrefix() {
+ return expectedPrefix;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
+ */
+ @Override
+ protected String[] getExpectedResultsValues() {
+ return expectedResults;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
+ */
+ @Override
+ protected String getFileName() {
+ return fileName;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
+ */
+ @Override
+ protected String getFileFullPath() {
+ return fileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
+ */
+ @Override
+ protected String getHeaderFileFullPath() {
+ return headerFileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
+ */
+ @Override
+ protected String getHeaderFileName() {
+ return headerFileName;
+ }
+
+}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/ClassReference_NoPrefix_CompletionTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/ClassReference_NoPrefix_CompletionTest.java
new file mode 100644
index 00000000000..fa846e18dab
--- /dev/null
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/ClassReference_NoPrefix_CompletionTest.java
@@ -0,0 +1,79 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2014 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Rational Software - Initial API and implementation
+ * Bryan Wilkinson (QNX)
+ *******************************************************************************/
+package org.eclipse.cdt.ui.tests.text.contentassist2;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * @author hamer
+ *
+ * Testing class reference, with no prefix
+ * https://bugs.eclipse.org/bugs/show_bug.cgi?id=50621
+ * https://bugs.eclipse.org/bugs/show_bug.cgi?id=169860
+ */
+public class ClassReference_NoPrefix_CompletionTest extends CompletionProposalsBaseTest {
+ private final String fileName = "CompletionTestStart21.h";
+ private final String fileFullPath = "resources/contentassist/" + fileName;
+ private final String headerFileName = "CompletionTestStart.h";
+ private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
+ private final String expectedPrefix = "";
+ private final String[] expectedResults = { "aClass", "anotherClass", "xOtherClass", "AStruct", "XStruct" };
+
+ public ClassReference_NoPrefix_CompletionTest(String name) {
+ super(name);
+ }
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(ClassReference_NoPrefix_CompletionTest.class.getName());
+ suite.addTest(new ClassReference_NoPrefix_CompletionTest("testCompletionProposals"));
+ return suite;
+ }
+
+ @Override
+ protected int getCompletionPosition() {
+ return getBuffer().indexOf(" ") + 2;
+ }
+
+ @Override
+ protected String getExpectedPrefix() {
+ return expectedPrefix;
+ }
+
+ @Override
+ protected String[] getExpectedResultsValues() {
+ return expectedResults;
+ }
+
+ @Override
+ protected String getFileName() {
+ return fileName;
+ }
+
+ @Override
+ protected String getFileFullPath() {
+ return fileFullPath;
+ }
+
+ @Override
+ protected String getHeaderFileFullPath() {
+ return headerFileFullPath;
+ }
+
+ @Override
+ protected String getHeaderFileName() {
+ return headerFileName;
+ }
+}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/ClassReference_Prefix_CompletionTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/ClassReference_Prefix_CompletionTest.java
new file mode 100644
index 00000000000..bc29d192e70
--- /dev/null
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/ClassReference_Prefix_CompletionTest.java
@@ -0,0 +1,79 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2014 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ * Bryan Wilkinson (QNX)
+ *******************************************************************************/
+package org.eclipse.cdt.ui.tests.text.contentassist2;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * @author hamer
+ *
+ * Testing class reference, with prefix
+ * https://bugs.eclipse.org/bugs/show_bug.cgi?id=50621
+ * https://bugs.eclipse.org/bugs/show_bug.cgi?id=169860
+ */
+public class ClassReference_Prefix_CompletionTest extends CompletionProposalsBaseTest {
+ private final String fileName = "CompletionTestStart20.h";
+ private final String fileFullPath = "resources/contentassist/" + fileName;
+ private final String headerFileName = "CompletionTestStart.h";
+ private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
+ private final String expectedPrefix = "a";
+ private final String[] expectedResults = { "aClass", "anotherClass", "AStruct" };
+
+ public ClassReference_Prefix_CompletionTest(String name) {
+ super(name);
+ }
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(ClassReference_Prefix_CompletionTest.class.getName());
+ suite.addTest(new ClassReference_Prefix_CompletionTest("testCompletionProposals"));
+ return suite;
+ }
+
+ @Override
+ protected int getCompletionPosition() {
+ return getBuffer().indexOf(" a ") + 2;
+ }
+
+ @Override
+ protected String getExpectedPrefix() {
+ return expectedPrefix;
+ }
+
+ @Override
+ protected String[] getExpectedResultsValues() {
+ return expectedResults;
+ }
+
+ @Override
+ protected String getFileName() {
+ return fileName;
+ }
+
+ @Override
+ protected String getFileFullPath() {
+ return fileFullPath;
+ }
+
+ @Override
+ protected String getHeaderFileFullPath() {
+ return headerFileFullPath;
+ }
+
+ @Override
+ protected String getHeaderFileName() {
+ return headerFileName;
+ }
+}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_AnonymousTypes.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_AnonymousTypes.java
deleted file mode 100644
index fffac1f3050..00000000000
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_AnonymousTypes.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2009 Symbian Software Ltd.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Andrew Ferguson (Symbian) - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.ui.tests.text.contentassist2;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * Test that anonymous types are not returned as possibilities.
- */
-public class CompletionTest_AnonymousTypes extends CompletionProposalsBaseTest {
- private final String fileName = "CompletionTestStart40.cpp";
- private final String fileFullPath = "resources/contentassist/" + fileName;
- private final String headerFileName = "CompletionTestStart40.h";
- private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
- private final String expectedPrefix = "";
- private final String[] expectedResults = { "notAnonymousEnum", "notAnonymousClass", "xOtherClass" };
-
- public CompletionTest_AnonymousTypes(String name) {
- super(name);
- // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=174809
- // setExpectFailure(174809);
- }
-
- public static Test suite() {
- TestSuite suite = new TestSuite(CompletionTest_AnonymousTypes.class.getName());
- suite.addTest(new CompletionTest_AnonymousTypes("testCompletionProposals"));
- return suite;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
- */
- @Override
- protected int getCompletionPosition() {
- return getBuffer().indexOf(" x ");
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
- */
- @Override
- protected String getExpectedPrefix() {
- return expectedPrefix;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
- */
- @Override
- protected String[] getExpectedResultsValues() {
- return expectedResults;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
- */
- @Override
- protected String getFileName() {
- return fileName;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
- */
- @Override
- protected String getFileFullPath() {
- return fileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
- */
- @Override
- protected String getHeaderFileFullPath() {
- return headerFileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
- */
- @Override
- protected String getHeaderFileName() {
- return headerFileName;
- }
-}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_ArgumentType_Prefix.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_ArgumentType_Prefix.java
deleted file mode 100644
index 2e9eef55695..00000000000
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_ArgumentType_Prefix.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Rational Software - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.ui.tests.text.contentassist2;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * @author hamer
- *
- * Testing Argument_Type completion kind , with a prefix
- * Bug#50642 : Wrong completion kind when declaring an argument type
- *
- */
-public class CompletionTest_ArgumentType_Prefix extends CompletionProposalsBaseTest {
- private final String fileName = "CompletionTestStart16.cpp";
- private final String fileFullPath = "resources/contentassist/" + fileName;
- private final String headerFileName = "CompletionTestStart.h";
- private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
- private final String expectedPrefix = "a";
- private final String[] expectedResults = { "aClass", "anotherClass", "aNamespace", "anEnumeration", "AStruct",
- "AMacro(x)" };
-
- public CompletionTest_ArgumentType_Prefix(String name) {
- super(name);
- // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=109724
- // setExpectFailure(109724);
- }
-
- public static Test suite() {
- TestSuite suite = new TestSuite(CompletionTest_ArgumentType_Prefix.class.getName());
- suite.addTest(new CompletionTest_ArgumentType_Prefix("testCompletionProposals"));
- return suite;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
- */
- @Override
- protected int getCompletionPosition() {
- return getBuffer().indexOf(" a ") + 2;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
- */
- @Override
- protected String getExpectedPrefix() {
- return expectedPrefix;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
- */
- @Override
- protected String[] getExpectedResultsValues() {
- return expectedResults;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
- */
- @Override
- protected String getFileName() {
- return fileName;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
- */
- @Override
- protected String getFileFullPath() {
- return fileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
- */
- @Override
- protected String getHeaderFileFullPath() {
- return headerFileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
- */
- @Override
- protected String getHeaderFileName() {
- return headerFileName;
- }
-
-}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_ArgumentType_Prefix2.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_ArgumentType_Prefix2.java
deleted file mode 100644
index 0e282d49fe3..00000000000
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_ArgumentType_Prefix2.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Rational Software - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.ui.tests.text.contentassist2;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * @author hamer
- *
- * Testing Argument_Type completion kind , with a prefix
- * Bug#50642 : Wrong completion kind when declaring an argument type
- *
- */
-public class CompletionTest_ArgumentType_Prefix2 extends CompletionProposalsBaseTest {
- private final String fileName = "CompletionTestStart18.cpp";
- private final String fileFullPath = "resources/contentassist/" + fileName;
- private final String headerFileName = "CompletionTestStart.h";
- private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
- private final String expectedPrefix = "a";
- private final String[] expectedResults = { "aClass", "anotherClass", "aNamespace", "anEnumeration", "AStruct",
- "AMacro(x)" };
-
- public CompletionTest_ArgumentType_Prefix2(String name) {
- super(name);
- // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=109724
- // setExpectFailure(109724);
- }
-
- public static Test suite() {
- TestSuite suite = new TestSuite(CompletionTest_ArgumentType_Prefix2.class.getName());
- suite.addTest(new CompletionTest_ArgumentType_Prefix2("testCompletionProposals"));
- return suite;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
- */
- @Override
- protected int getCompletionPosition() {
- return getBuffer().indexOf(" a ") + 2;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
- */
- @Override
- protected String getExpectedPrefix() {
- return expectedPrefix;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
- */
- @Override
- protected String[] getExpectedResultsValues() {
- return expectedResults;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
- */
- @Override
- protected String getFileName() {
- return fileName;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
- */
- @Override
- protected String getFileFullPath() {
- return fileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
- */
- @Override
- protected String getHeaderFileFullPath() {
- return headerFileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
- */
- @Override
- protected String getHeaderFileName() {
- return headerFileName;
- }
-
-}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_ClassReference_NoPrefix.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_ClassReference_NoPrefix.java
deleted file mode 100644
index 4940fd139f1..00000000000
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_ClassReference_NoPrefix.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2014 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Rational Software - Initial API and implementation
- * Bryan Wilkinson (QNX)
- *******************************************************************************/
-package org.eclipse.cdt.ui.tests.text.contentassist2;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * @author hamer
- *
- * Testing class reference, with no prefix
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=50621
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=169860
- */
-public class CompletionTest_ClassReference_NoPrefix extends CompletionProposalsBaseTest {
- private final String fileName = "CompletionTestStart21.h";
- private final String fileFullPath = "resources/contentassist/" + fileName;
- private final String headerFileName = "CompletionTestStart.h";
- private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
- private final String expectedPrefix = "";
- private final String[] expectedResults = { "aClass", "anotherClass", "xOtherClass", "AStruct", "XStruct" };
-
- public CompletionTest_ClassReference_NoPrefix(String name) {
- super(name);
- }
-
- public static Test suite() {
- TestSuite suite = new TestSuite(CompletionTest_ClassReference_NoPrefix.class.getName());
- suite.addTest(new CompletionTest_ClassReference_NoPrefix("testCompletionProposals"));
- return suite;
- }
-
- @Override
- protected int getCompletionPosition() {
- return getBuffer().indexOf(" ") + 2;
- }
-
- @Override
- protected String getExpectedPrefix() {
- return expectedPrefix;
- }
-
- @Override
- protected String[] getExpectedResultsValues() {
- return expectedResults;
- }
-
- @Override
- protected String getFileName() {
- return fileName;
- }
-
- @Override
- protected String getFileFullPath() {
- return fileFullPath;
- }
-
- @Override
- protected String getHeaderFileFullPath() {
- return headerFileFullPath;
- }
-
- @Override
- protected String getHeaderFileName() {
- return headerFileName;
- }
-}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_ClassReference_Prefix.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_ClassReference_Prefix.java
deleted file mode 100644
index 644dd7d8611..00000000000
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_ClassReference_Prefix.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2014 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- * Bryan Wilkinson (QNX)
- *******************************************************************************/
-package org.eclipse.cdt.ui.tests.text.contentassist2;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * @author hamer
- *
- * Testing class reference, with prefix
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=50621
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=169860
- */
-public class CompletionTest_ClassReference_Prefix extends CompletionProposalsBaseTest {
- private final String fileName = "CompletionTestStart20.h";
- private final String fileFullPath = "resources/contentassist/" + fileName;
- private final String headerFileName = "CompletionTestStart.h";
- private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
- private final String expectedPrefix = "a";
- private final String[] expectedResults = { "aClass", "anotherClass", "AStruct" };
-
- public CompletionTest_ClassReference_Prefix(String name) {
- super(name);
- }
-
- public static Test suite() {
- TestSuite suite = new TestSuite(CompletionTest_ClassReference_Prefix.class.getName());
- suite.addTest(new CompletionTest_ClassReference_Prefix("testCompletionProposals"));
- return suite;
- }
-
- @Override
- protected int getCompletionPosition() {
- return getBuffer().indexOf(" a ") + 2;
- }
-
- @Override
- protected String getExpectedPrefix() {
- return expectedPrefix;
- }
-
- @Override
- protected String[] getExpectedResultsValues() {
- return expectedResults;
- }
-
- @Override
- protected String getFileName() {
- return fileName;
- }
-
- @Override
- protected String getFileFullPath() {
- return fileFullPath;
- }
-
- @Override
- protected String getHeaderFileFullPath() {
- return headerFileFullPath;
- }
-
- @Override
- protected String getHeaderFileName() {
- return headerFileName;
- }
-}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_ConstructorReference.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_ConstructorReference.java
deleted file mode 100644
index c3bf4516360..00000000000
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_ConstructorReference.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Rational Software - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.ui.tests.text.contentassist2;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * @author hamer
- *
- * Testing Constructor_Reference
- * Bug#
- *
- */
-public class CompletionTest_ConstructorReference extends CompletionProposalsBaseTest {
-
- private final String fileName = "CompletionTestStart35.cpp";
- private final String fileFullPath = "resources/contentassist/" + fileName;
- private final String headerFileName = "CompletionTestStart.h";
- private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
- private final String expectedPrefix = "";
- private final String[] expectedResults = {
- // missing proposals:
- "xOtherClass(char*)", "xOtherClass(int)" };
-
- public CompletionTest_ConstructorReference(String name) {
- super(name);
- // unknown failure
- setExpectFailure(77777);
- }
-
- public static Test suite() {
- TestSuite suite = new TestSuite(CompletionTest_ConstructorReference.class.getName());
- suite.addTest(new CompletionTest_ConstructorReference("testCompletionProposals"));
- return suite;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
- */
- @Override
- protected int getCompletionPosition() {
- return getBuffer().indexOf("( ") + 2;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
- */
- @Override
- protected String getExpectedPrefix() {
- return expectedPrefix;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
- */
- @Override
- protected String[] getExpectedResultsValues() {
- return expectedResults;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
- */
- @Override
- protected String getFileName() {
- return fileName;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
- */
- @Override
- protected String getFileFullPath() {
- return fileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
- */
- @Override
- protected String getHeaderFileFullPath() {
- return headerFileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
- */
- @Override
- protected String getHeaderFileName() {
- return headerFileName;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.ui.tests.text.contentassist.CompletionProposalsBaseTest#getFunctionOrConstructorName()
- */
- protected String getFunctionOrConstructorName() {
- return "xOtherClass";
- }
-
-}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_ExceptionReference_NoPrefix.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_ExceptionReference_NoPrefix.java
deleted file mode 100644
index 4d6375a45ab..00000000000
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_ExceptionReference_NoPrefix.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Rational Software - Initial API and implementation
- * Bryan Wilkinson (QNX)
- *******************************************************************************/
-package org.eclipse.cdt.ui.tests.text.contentassist2;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * @author hamer
- *
- * Testing Exception_Reference, with No prefix
- * Bug#50640 : Wrong completion kind when expecting an exception
- *
- */
-public class CompletionTest_ExceptionReference_NoPrefix extends CompletionProposalsBaseTest {
-
- private final String fileName = "CompletionTestStart23.cpp";
- private final String fileFullPath = "resources/contentassist/" + fileName;
- private final String headerFileName = "CompletionTestStart.h";
- private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
- private final String expectedPrefix = "";
- private final String[] expectedResults = { "AStruct", "XStruct", "aClass", "aNamespace", "anEnumeration",
- "anotherClass", "xEnumeration", "xNamespace", "xOtherClass" };
-
- public CompletionTest_ExceptionReference_NoPrefix(String name) {
- super(name);
- // https://bugs.eclipse.org/bugs/show_bug.cgi?id=169860
- }
-
- public static Test suite() {
- TestSuite suite = new TestSuite(CompletionTest_ExceptionReference_NoPrefix.class.getName());
- suite.addTest(new CompletionTest_ExceptionReference_NoPrefix("testCompletionProposals"));
- return suite;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
- */
- @Override
- protected int getCompletionPosition() {
- return getBuffer().indexOf(" ") + 2;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
- */
- @Override
- protected String getExpectedPrefix() {
- return expectedPrefix;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
- */
- @Override
- protected String[] getExpectedResultsValues() {
- return expectedResults;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
- */
- @Override
- protected String getFileName() {
- return fileName;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
- */
- @Override
- protected String getFileFullPath() {
- return fileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
- */
- @Override
- protected String getHeaderFileFullPath() {
- return headerFileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
- */
- @Override
- protected String getHeaderFileName() {
- return headerFileName;
- }
-
-}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_ExceptionReference_Prefix.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_ExceptionReference_Prefix.java
deleted file mode 100644
index 4da2de2c6bc..00000000000
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_ExceptionReference_Prefix.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Rational Software - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.ui.tests.text.contentassist2;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * @author hamer
- *
- * Testing Exception_Reference, with prefix
- * Bug#50640 : Wrong completion kind when expecting an exception
- *
- */
-public class CompletionTest_ExceptionReference_Prefix extends CompletionProposalsBaseTest {
-
- private final String fileName = "CompletionTestStart22.cpp";
- private final String fileFullPath = "resources/contentassist/" + fileName;
- private final String headerFileName = "CompletionTestStart.h";
- private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
- private final String expectedPrefix = "a";
- private final String[] expectedResults = { "aClass", "anotherClass", "aNamespace", "anEnumeration", "AStruct",
- "AMacro(x)" };
-
- public CompletionTest_ExceptionReference_Prefix(String name) {
- super(name);
- // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=109724
- // setExpectFailure(109724);
- }
-
- public static Test suite() {
- TestSuite suite = new TestSuite(CompletionTest_ExceptionReference_Prefix.class.getName());
- suite.addTest(new CompletionTest_ExceptionReference_Prefix("testCompletionProposals"));
- return suite;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
- */
- @Override
- protected int getCompletionPosition() {
- return getBuffer().indexOf(" a ") + 2;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
- */
- @Override
- protected String getExpectedPrefix() {
- return expectedPrefix;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
- */
- @Override
- protected String[] getExpectedResultsValues() {
- return expectedResults;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
- */
- @Override
- protected String getFileName() {
- return fileName;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
- */
- @Override
- protected String getFileFullPath() {
- return fileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
- */
- @Override
- protected String getHeaderFileFullPath() {
- return headerFileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
- */
- @Override
- protected String getHeaderFileName() {
- return headerFileName;
- }
-
-}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_FieldType_NoPrefix.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_FieldType_NoPrefix.java
deleted file mode 100644
index 44d087f8dc8..00000000000
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_FieldType_NoPrefix.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Rational Software - Initial API and implementation
- * Bryan Wilkinson (QNX)
- *******************************************************************************/
-package org.eclipse.cdt.ui.tests.text.contentassist2;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * @author hamer
- *
- * Testing Field_Type, with NO prefix
- *
- */
-public class CompletionTest_FieldType_NoPrefix extends CompletionProposalsBaseTest {
- private final String fileName = "CompletionTestStart12.h";
- private final String fileFullPath = "resources/contentassist/" + fileName;
- private final String headerFileName = "CompletionTestStart.h";
- private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
- private final String expectedPrefix = "";
- private final String[] expectedResults = { "AStruct", "XStruct", "aClass", "aNamespace", "aThirdClass",
- "anEnumeration", "anotherClass", "xEnumeration", "xNamespace", "xOtherClass" };
-
- public CompletionTest_FieldType_NoPrefix(String name) {
- super(name);
- // https://bugs.eclipse.org/bugs/show_bug.cgi?id=169860
- }
-
- public static Test suite() {
- TestSuite suite = new TestSuite(CompletionTest_FieldType_NoPrefix.class.getName());
- suite.addTest(new CompletionTest_FieldType_NoPrefix("testCompletionProposals"));
- return suite;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
- */
- @Override
- protected int getCompletionPosition() {
- return getBuffer().indexOf(" ") + 2;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
- */
- @Override
- protected String getExpectedPrefix() {
- return expectedPrefix;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
- */
- @Override
- protected String[] getExpectedResultsValues() {
- return expectedResults;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
- */
- @Override
- protected String getFileName() {
- return fileName;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
- */
- @Override
- protected String getFileFullPath() {
- return fileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
- */
- @Override
- protected String getHeaderFileFullPath() {
- return headerFileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
- */
- @Override
- protected String getHeaderFileName() {
- return headerFileName;
- }
-
-}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_FieldType_NoPrefix2.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_FieldType_NoPrefix2.java
deleted file mode 100644
index fac9b47c408..00000000000
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_FieldType_NoPrefix2.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Rational Software - Initial API and implementation
- * Bryan Wilkinson (QNX)
- *******************************************************************************/
-package org.eclipse.cdt.ui.tests.text.contentassist2;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * @author hamer
- *
- * Testing Class scope, declaration start, with NO prefix
- * Bug#50344 :Wrong completion in Class scope if before the first declaration
- *
- */
-public class CompletionTest_FieldType_NoPrefix2 extends CompletionProposalsBaseTest {
-
- private final String fileName = "CompletionTestStart13.h";
- private final String fileFullPath = "resources/contentassist/" + fileName;
- private final String headerFileName = "CompletionTestStart.h";
- private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
- private final String expectedPrefix = "";
- private final String[] expectedResults = { "AStruct", "XStruct", "aClass", "aNamespace", "aThirdClass",
- "anEnumeration", "anotherClass", "xEnumeration", "xNamespace", "xOtherClass" };
-
- public CompletionTest_FieldType_NoPrefix2(String name) {
- super(name);
- // https://bugs.eclipse.org/bugs/show_bug.cgi?id=169860
- }
-
- public static Test suite() {
- TestSuite suite = new TestSuite(CompletionTest_FieldType_NoPrefix2.class.getName());
- suite.addTest(new CompletionTest_FieldType_NoPrefix2("testCompletionProposals"));
- return suite;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
- */
- @Override
- protected int getCompletionPosition() {
- return getBuffer().indexOf(" ") + 3;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
- */
- @Override
- protected String getExpectedPrefix() {
- return expectedPrefix;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
- */
- @Override
- protected String[] getExpectedResultsValues() {
- return expectedResults;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
- */
- @Override
- protected String getFileName() {
- return fileName;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
- */
- @Override
- protected String getFileFullPath() {
- return fileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
- */
- @Override
- protected String getHeaderFileFullPath() {
- return headerFileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
- */
- @Override
- protected String getHeaderFileName() {
- return headerFileName;
- }
-
-}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_FieldType_Prefix.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_FieldType_Prefix.java
deleted file mode 100644
index a3e427ba813..00000000000
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_FieldType_Prefix.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Rational Software - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.ui.tests.text.contentassist2;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * @author hamer
- *
- * Testing Field_Type completion kind , with a prefix
- *
- */
-public class CompletionTest_FieldType_Prefix extends CompletionProposalsBaseTest {
- private final String fileName = "CompletionTestStart4.h";
- private final String fileFullPath = "resources/contentassist/" + fileName;
- private final String headerFileName = "CompletionTestStart.h";
- private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
- private final String expectedPrefix = "a";
- private final String[] expectedResults = { "aClass", "anotherClass", "aThirdClass", "aNamespace", "anEnumeration",
- "AStruct", "AMacro(x)" };
-
- public CompletionTest_FieldType_Prefix(String name) {
- super(name);
- // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=109724
- // setExpectFailure(109724);
- }
-
- public static Test suite() {
- TestSuite suite = new TestSuite(CompletionTest_FieldType_Prefix.class.getName());
- suite.addTest(new CompletionTest_FieldType_Prefix("testCompletionProposals"));
- return suite;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
- */
- @Override
- protected int getCompletionPosition() {
- return getBuffer().indexOf(" a ") + 2;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
- */
- @Override
- protected String getExpectedPrefix() {
- return expectedPrefix;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
- */
- @Override
- protected String[] getExpectedResultsValues() {
- return expectedResults;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
- */
- @Override
- protected String getFileName() {
- return fileName;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
- */
- @Override
- protected String getFileFullPath() {
- return fileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
- */
- @Override
- protected String getHeaderFileFullPath() {
- return headerFileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
- */
- @Override
- protected String getHeaderFileName() {
- return headerFileName;
- }
-
-}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_FunctionReference_Prefix.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_FunctionReference_Prefix.java
deleted file mode 100644
index 052e02a4b68..00000000000
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_FunctionReference_Prefix.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Rational Software - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.ui.tests.text.contentassist2;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * @author hamer
- *
- * Testing Single_Name_Reference in parameter passing
- * Bug#
- *
- */
-public class CompletionTest_FunctionReference_Prefix extends CompletionProposalsBaseTest {
- private final String fileName = "CompletionTestStart36.cpp";
- private final String fileFullPath = "resources/contentassist/" + fileName;
- private final String headerFileName = "CompletionTestStart.h";
- private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
- private final String expectedPrefix = "x";
- private final String[] expectedResults = { "xLocal : int", "xAClassField : float", "xVariable : int",
- "xAClassMethod(int x) : void", "xFunction(void) : bool", "xOtherFunction(void) : void", "xNamespace",
- "xOtherClass", "xFirstEnum", "xSecondEnum", "xThirdEnum", "xEnumeration", "XMacro(x, y)", "XStruct" };
-
- public CompletionTest_FunctionReference_Prefix(String name) {
- super(name);
- // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=109724
- //setExpectFailure(109724);
- }
-
- public static Test suite() {
- TestSuite suite = new TestSuite(CompletionTest_FunctionReference_Prefix.class.getName());
- suite.addTest(new CompletionTest_FunctionReference_Prefix("testCompletionProposals"));
- return suite;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
- */
- @Override
- protected int getCompletionPosition() {
- return getBuffer().indexOf(" x ") + 2;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
- */
- @Override
- protected String getExpectedPrefix() {
- return expectedPrefix;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
- */
- @Override
- protected String[] getExpectedResultsValues() {
- return expectedResults;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
- */
- @Override
- protected String getFileName() {
- return fileName;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
- */
- @Override
- protected String getFileFullPath() {
- return fileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
- */
- @Override
- protected String getHeaderFileFullPath() {
- return headerFileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
- */
- @Override
- protected String getHeaderFileName() {
- return headerFileName;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.ui.tests.text.contentassist.CompletionProposalsBaseTest#getFunctionOrConstructorName()
- */
- protected String getFunctionOrConstructorName() {
- return "xAClassMethod";
- }
-}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_MacroRef_NoPrefix.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_MacroRef_NoPrefix.java
deleted file mode 100644
index 9074534d853..00000000000
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_MacroRef_NoPrefix.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2011 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Rational Software - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.ui.tests.text.contentassist2;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * @author hamer
- *
- * Testing Macro_Reference, with no prefix
- * Bug#50487 :Wrong completion kind and prefix after "#ifdef"
- *
- */
-public class CompletionTest_MacroRef_NoPrefix extends CompletionProposalsBaseTest {
-
- private final String fileName = "CompletionTestStart26.cpp";
- private final String fileFullPath = "resources/contentassist/" + fileName;
- private final String headerFileName = "CompletionTestStart.h";
- private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
- private final String expectedPrefix = "";
- private final String[] expectedResults = { "AMacro(x)", "DEBUG", "XMacro(x, y)", "__CDT_PARSER__", "__COUNTER__",
- "__DATE__", "__FILE__", "__LINE__", "__STDC__", "__TIME__", "__builtin_va_arg(ap, type)",
- "__builtin_offsetof(T, m)", "__builtin_types_compatible_p(x, y)", "__complex__", "__cplusplus",
- "__extension__", "__imag__", "__null", "__offsetof__(x)", "__real__", "__stdcall", "__thread", };
-
- public CompletionTest_MacroRef_NoPrefix(String name) {
- super(name);
- }
-
- public static Test suite() {
- TestSuite suite = new TestSuite(CompletionTest_MacroRef_NoPrefix.class.getName());
- suite.addTest(new CompletionTest_MacroRef_NoPrefix("testCompletionProposals"));
- return suite;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
- */
- @Override
- protected int getCompletionPosition() {
- return getBuffer().indexOf("#ifdef ") + 7;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
- */
- @Override
- protected String getExpectedPrefix() {
- return expectedPrefix;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
- */
- @Override
- protected String[] getExpectedResultsValues() {
- return expectedResults;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
- */
- @Override
- protected String getFileName() {
- return fileName;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
- */
- @Override
- protected String getFileFullPath() {
- return fileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
- */
- @Override
- protected String getHeaderFileFullPath() {
- return headerFileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
- */
- @Override
- protected String getHeaderFileName() {
- return headerFileName;
- }
-
-}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_MacroRef_Prefix.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_MacroRef_Prefix.java
deleted file mode 100644
index ebee868217c..00000000000
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_MacroRef_Prefix.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Rational Software - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.ui.tests.text.contentassist2;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * @author hamer
- *
- * Testing Macro_Reference, with no prefix
- * Bug#50487 :Wrong completion kind and prefix after "#ifdef"
- *
- */
-public class CompletionTest_MacroRef_Prefix extends CompletionProposalsBaseTest {
-
- private final String fileName = "CompletionTestStart27.cpp";
- private final String fileFullPath = "resources/contentassist/" + fileName;
- private final String headerFileName = "CompletionTestStart.h";
- private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
- private final String expectedPrefix = "D";
- private final String[] expectedResults = { "DEBUG" };
-
- public CompletionTest_MacroRef_Prefix(String name) {
- super(name);
- }
-
- public static Test suite() {
- TestSuite suite = new TestSuite(CompletionTest_MacroRef_Prefix.class.getName());
- suite.addTest(new CompletionTest_MacroRef_Prefix("testCompletionProposals"));
- return suite;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
- */
- @Override
- protected int getCompletionPosition() {
- return getBuffer().indexOf("ifdef D ") + 7;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
- */
- @Override
- protected String getExpectedPrefix() {
- return expectedPrefix;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
- */
- @Override
- protected String[] getExpectedResultsValues() {
- return expectedResults;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
- */
- @Override
- protected String getFileName() {
- return fileName;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
- */
- @Override
- protected String getFileFullPath() {
- return fileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
- */
- @Override
- protected String getHeaderFileFullPath() {
- return headerFileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
- */
- @Override
- protected String getHeaderFileName() {
- return headerFileName;
- }
-
-}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_MemberReference_Arrow_NoPrefix.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_MemberReference_Arrow_NoPrefix.java
deleted file mode 100644
index 8260b99e90b..00000000000
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_MemberReference_Arrow_NoPrefix.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Rational Software - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.ui.tests.text.contentassist2;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * @author hamer
- *
- * Testing Member_Reference, with NO prefix
- * After an ->
- *
- */
-
-public class CompletionTest_MemberReference_Arrow_NoPrefix extends CompletionProposalsBaseTest {
- private final String fileName = "CompletionTestStart10.cpp";
- private final String fileFullPath = "resources/contentassist/" + fileName;
- private final String headerFileName = "CompletionTestStart.h";
- private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
- private final String expectedPrefix = "";
- private final String[] expectedResults = { "aField : int", "xAClassField : float", "aMethod(void) : int",
- "xAClassMethod(int x) : void", "aClass" // aClass is valid
- };
-
- public CompletionTest_MemberReference_Arrow_NoPrefix(String name) {
- super(name);
- }
-
- public static Test suite() {
- TestSuite suite = new TestSuite(CompletionTest_MemberReference_Arrow_NoPrefix.class.getName());
- suite.addTest(new CompletionTest_MemberReference_Arrow_NoPrefix("testCompletionProposals"));
- return suite;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
- */
- @Override
- protected int getCompletionPosition() {
- return getBuffer().indexOf(" c-> ") + 4;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
- */
- @Override
- protected String getExpectedPrefix() {
- return expectedPrefix;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
- */
- @Override
- protected String[] getExpectedResultsValues() {
- return expectedResults;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
- */
- @Override
- protected String getFileName() {
- return fileName;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
- */
- @Override
- protected String getFileFullPath() {
- return fileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
- */
- @Override
- protected String getHeaderFileFullPath() {
- return headerFileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
- */
- @Override
- protected String getHeaderFileName() {
- return headerFileName;
- }
-
-}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_MemberReference_Arrow_NoPrefix2.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_MemberReference_Arrow_NoPrefix2.java
deleted file mode 100644
index e945e423df6..00000000000
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_MemberReference_Arrow_NoPrefix2.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2012 Symbian Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Symbian - Initial implementation
- *******************************************************************************/
-package org.eclipse.cdt.ui.tests.text.contentassist2;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * Test operator is followed during member reference
- */
-public class CompletionTest_MemberReference_Arrow_NoPrefix2 extends CompletionProposalsBaseTest {
- private final String fileName = "CompletionTestStart41.cpp";
- private final String fileFullPath = "resources/contentassist/" + fileName;
- private final String headerFileName = "CompletionTestStart41.h";
- private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
- private final String expectedPrefix = "";
- private final String[] expectedResults = { "A", "foo(void) : void", "operator ->(void) : B *" };
-
- public CompletionTest_MemberReference_Arrow_NoPrefix2(String name) {
- super(name);
- }
-
- public static Test suite() {
- TestSuite suite = new TestSuite(CompletionTest_MemberReference_Arrow_NoPrefix2.class.getName());
- suite.addTest(new CompletionTest_MemberReference_Arrow_NoPrefix2("testCompletionProposals"));
- return suite;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
- */
- @Override
- protected int getCompletionPosition() {
- return getBuffer().indexOf(" ap-> ") + 5;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
- */
- @Override
- protected String getExpectedPrefix() {
- return expectedPrefix;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
- */
- @Override
- protected String[] getExpectedResultsValues() {
- return expectedResults;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
- */
- @Override
- protected String getFileName() {
- return fileName;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
- */
- @Override
- protected String getFileFullPath() {
- return fileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
- */
- @Override
- protected String getHeaderFileFullPath() {
- return headerFileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
- */
- @Override
- protected String getHeaderFileName() {
- return headerFileName;
- }
-
-}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_MemberReference_Arrow_NoPrefix3.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_MemberReference_Arrow_NoPrefix3.java
deleted file mode 100644
index e765efb2aa4..00000000000
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_MemberReference_Arrow_NoPrefix3.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2012 Symbian Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Symbian - Initial implementation
- *******************************************************************************/
-package org.eclipse.cdt.ui.tests.text.contentassist2;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * Testing operator is not followed on pointer to class with overloaded operator ->
- */
-public class CompletionTest_MemberReference_Arrow_NoPrefix3 extends CompletionProposalsBaseTest {
- private final String fileName = "CompletionTestStart42.cpp";
- private final String fileFullPath = "resources/contentassist/" + fileName;
- private final String headerFileName = "CompletionTestStart41.h";
- private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
- private final String expectedPrefix = "";
- private final String[] expectedResults = { "B", "bar(void) : void" };
-
- public CompletionTest_MemberReference_Arrow_NoPrefix3(String name) {
- super(name);
- }
-
- public static Test suite() {
- TestSuite suite = new TestSuite(CompletionTest_MemberReference_Arrow_NoPrefix3.class.getName());
- suite.addTest(new CompletionTest_MemberReference_Arrow_NoPrefix3("testCompletionProposals"));
- return suite;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
- */
- @Override
- protected int getCompletionPosition() {
- return getBuffer().indexOf("a->") + 3;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
- */
- @Override
- protected String getExpectedPrefix() {
- return expectedPrefix;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
- */
- @Override
- protected String[] getExpectedResultsValues() {
- return expectedResults;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
- */
- @Override
- protected String getFileName() {
- return fileName;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
- */
- @Override
- protected String getFileFullPath() {
- return fileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
- */
- @Override
- protected String getHeaderFileFullPath() {
- return headerFileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
- */
- @Override
- protected String getHeaderFileName() {
- return headerFileName;
- }
-
-}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_MemberReference_Arrow_Prefix.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_MemberReference_Arrow_Prefix.java
deleted file mode 100644
index 132717f23cd..00000000000
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_MemberReference_Arrow_Prefix.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Rational Software - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.ui.tests.text.contentassist2;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * @author hamer
- *
- * Testing Member_Reference, with a prefix
- * After an ->
- *
- */
-public class CompletionTest_MemberReference_Arrow_Prefix extends CompletionProposalsBaseTest {
- private final String fileName = "CompletionTestStart6.cpp";
- private final String fileFullPath = "resources/contentassist/" + fileName;
- private final String headerFileName = "CompletionTestStart.h";
- private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
- private final String expectedPrefix = "a";
- private final String[] expectedResults = { "aField : int", "aMethod(void) : int", "aClass" // aClass is valid
- };
-
- public CompletionTest_MemberReference_Arrow_Prefix(String name) {
- super(name);
- }
-
- public static Test suite() {
- TestSuite suite = new TestSuite(CompletionTest_MemberReference_Arrow_Prefix.class.getName());
- suite.addTest(new CompletionTest_MemberReference_Arrow_Prefix("testCompletionProposals"));
- return suite;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
- */
- @Override
- protected int getCompletionPosition() {
- return getBuffer().indexOf(" c->a ") + 5;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
- */
- @Override
- protected String getExpectedPrefix() {
- return expectedPrefix;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
- */
- @Override
- protected String[] getExpectedResultsValues() {
- return expectedResults;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
- */
- @Override
- protected String getFileName() {
- return fileName;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
- */
- @Override
- protected String getFileFullPath() {
- return fileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
- */
- @Override
- protected String getHeaderFileFullPath() {
- return headerFileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
- */
- @Override
- protected String getHeaderFileName() {
- return headerFileName;
- }
-
-}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_MemberReference_Arrow_Prefix2.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_MemberReference_Arrow_Prefix2.java
deleted file mode 100644
index dd93aa5c490..00000000000
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_MemberReference_Arrow_Prefix2.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Rational Software - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.ui.tests.text.contentassist2;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * @author hamer
- *
- * Testing Member_Reference, with a prefix
- * Complex Context: Function return value: foo()->a(CTRL+SPACE)
- *
- */
-public class CompletionTest_MemberReference_Arrow_Prefix2 extends CompletionProposalsBaseTest {
- private final String fileName = "CompletionTestStart7.cpp";
- private final String fileFullPath = "resources/contentassist/" + fileName;
- private final String headerFileName = "CompletionTestStart.h";
- private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
- private final String expectedPrefix = "a";
- private final String[] expectedResults = { "aClass", // aClass is valid
- "aField : int", "aMethod(void) : int" };
-
- public CompletionTest_MemberReference_Arrow_Prefix2(String name) {
- super(name);
- }
-
- public static Test suite() {
- TestSuite suite = new TestSuite(CompletionTest_MemberReference_Arrow_Prefix2.class.getName());
- suite.addTest(new CompletionTest_MemberReference_Arrow_Prefix2("testCompletionProposals"));
- return suite;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
- */
- @Override
- protected int getCompletionPosition() {
- return getBuffer().indexOf("->a ") + 3;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
- */
- @Override
- protected String getExpectedPrefix() {
- return expectedPrefix;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
- */
- @Override
- protected String[] getExpectedResultsValues() {
- return expectedResults;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
- */
- @Override
- protected String getFileName() {
- return fileName;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
- */
- @Override
- protected String getFileFullPath() {
- return fileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
- */
- @Override
- protected String getHeaderFileFullPath() {
- return headerFileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
- */
- @Override
- protected String getHeaderFileName() {
- return headerFileName;
- }
-
-}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_MemberReference_Dot_NoPrefix.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_MemberReference_Dot_NoPrefix.java
deleted file mode 100644
index 83b6f4ddc31..00000000000
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_MemberReference_Dot_NoPrefix.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Rational Software - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.ui.tests.text.contentassist2;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * @author hamer
- *
- * Testing Member_Reference, with NO prefix
- * After a .
- *
- */
-public class CompletionTest_MemberReference_Dot_NoPrefix extends CompletionProposalsBaseTest {
- private final String fileName = "CompletionTestStart9.cpp";
- private final String fileFullPath = "resources/contentassist/" + fileName;
- private final String headerFileName = "CompletionTestStart.h";
- private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
- private final String expectedPrefix = "";
- private final String[] expectedResults = { "aField : int", "xAClassField : float", "aMethod(void) : int",
- "xAClassMethod(int x) : void", "aClass" // aClass is valid
- };
-
- public CompletionTest_MemberReference_Dot_NoPrefix(String name) {
- super(name);
- }
-
- public static Test suite() {
- TestSuite suite = new TestSuite(CompletionTest_MemberReference_Dot_NoPrefix.class.getName());
- suite.addTest(new CompletionTest_MemberReference_Dot_NoPrefix("testCompletionProposals"));
- return suite;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
- */
- @Override
- protected int getCompletionPosition() {
- return getBuffer().indexOf(" c. ") + 3;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
- */
- @Override
- protected String getExpectedPrefix() {
- return expectedPrefix;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
- */
- @Override
- protected String[] getExpectedResultsValues() {
- return expectedResults;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
- */
- @Override
- protected String getFileName() {
- return fileName;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
- */
- @Override
- protected String getFileFullPath() {
- return fileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
- */
- @Override
- protected String getHeaderFileFullPath() {
- return headerFileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
- */
- @Override
- protected String getHeaderFileName() {
- return headerFileName;
- }
-
-}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_MemberReference_Dot_Prefix.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_MemberReference_Dot_Prefix.java
deleted file mode 100644
index 061d0be3f6a..00000000000
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_MemberReference_Dot_Prefix.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Rational Software - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.ui.tests.text.contentassist2;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * @author hamer
- *
- * Testing Member_Reference completion kind, with a prefix
- * After a .
- *
- */
-public class CompletionTest_MemberReference_Dot_Prefix extends CompletionProposalsBaseTest {
- private final String fileName = "CompletionTestStart2.cpp";
- private final String fileFullPath = "resources/contentassist/" + fileName;
- private final String headerFileName = "CompletionTestStart.h";
- private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
- private final String expectedPrefix = "a";
- private final String[] expectedResults = { "aField : int", "aMethod(void) : int", "aClass" // aClass is valid
- };
-
- public CompletionTest_MemberReference_Dot_Prefix(String name) {
- super(name);
- }
-
- public static Test suite() {
- TestSuite suite = new TestSuite(CompletionTest_MemberReference_Dot_Prefix.class.getName());
- suite.addTest(new CompletionTest_MemberReference_Dot_Prefix("testCompletionProposals"));
- return suite;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
- */
- @Override
- protected int getCompletionPosition() {
- return getBuffer().indexOf(" c.a ") + 4;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
- */
- @Override
- protected String getExpectedPrefix() {
- return expectedPrefix;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
- */
- @Override
- protected String[] getExpectedResultsValues() {
- return expectedResults;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
- */
- @Override
- protected String getFileName() {
- return fileName;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
- */
- @Override
- protected String getFileFullPath() {
- return fileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
- */
- @Override
- protected String getHeaderFileFullPath() {
- return headerFileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
- */
- @Override
- protected String getHeaderFileName() {
- return headerFileName;
- }
-
-}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_NamespaceRef_NoPrefix.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_NamespaceRef_NoPrefix.java
deleted file mode 100644
index f113a72f7b6..00000000000
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_NamespaceRef_NoPrefix.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Rational Software - Initial API and implementation
- * Bryan Wilkinson (QNX)
- *******************************************************************************/
-package org.eclipse.cdt.ui.tests.text.contentassist2;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * @author hamer
- *
- * Testing Namespace_Reference, with no prefix
- * Bug#50471 : Wrong completion kind after the "using" keyword
- */
-public class CompletionTest_NamespaceRef_NoPrefix extends CompletionProposalsBaseTest {
- private final String fileName = "CompletionTestStart32.cpp";
- private final String fileFullPath = "resources/contentassist/" + fileName;
- private final String headerFileName = "CompletionTestStart.h";
- private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
- private final String expectedPrefix = "";
- private final String[] expectedResults = { "aNamespace", "xNamespace" };
-
- public CompletionTest_NamespaceRef_NoPrefix(String name) {
- super(name);
- // https://bugs.eclipse.org/bugs/show_bug.cgi?id=169860
- }
-
- public static Test suite() {
- TestSuite suite = new TestSuite(CompletionTest_NamespaceRef_NoPrefix.class.getName());
- suite.addTest(new CompletionTest_NamespaceRef_NoPrefix("testCompletionProposals"));
- return suite;
- }
-
- @Override
- protected int getCompletionPosition() {
- return getBuffer().indexOf("namespace ") + 10;
- }
-
- @Override
- protected String getExpectedPrefix() {
- return expectedPrefix;
- }
-
- @Override
- protected String[] getExpectedResultsValues() {
- return expectedResults;
- }
-
- @Override
- protected String getFileName() {
- return fileName;
- }
-
- @Override
- protected String getFileFullPath() {
- return fileFullPath;
- }
-
- @Override
- protected String getHeaderFileFullPath() {
- return headerFileFullPath;
- }
-
- @Override
- protected String getHeaderFileName() {
- return headerFileName;
- }
-}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_NamespaceRef_Prefix.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_NamespaceRef_Prefix.java
deleted file mode 100644
index bb256a7a19c..00000000000
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_NamespaceRef_Prefix.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Rational Software - Initial API and implementation
- * Bryan Wilkinson (QNX)
- *******************************************************************************/
-package org.eclipse.cdt.ui.tests.text.contentassist2;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * @author hamer
- *
- * Testing Namespace_Reference, with prefix
- * Bug#50471 : Wrong completion kind after the "using" keyword
- *
- */
-public class CompletionTest_NamespaceRef_Prefix extends CompletionProposalsBaseTest {
-
- private final String fileName = "CompletionTestStart33.cpp";
- private final String fileFullPath = "resources/contentassist/" + fileName;
- private final String headerFileName = "CompletionTestStart.h";
- private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
- private final String expectedPrefix = "a";
- private final String[] expectedResults = { "aNamespace" };
-
- public CompletionTest_NamespaceRef_Prefix(String name) {
- super(name);
- // https://bugs.eclipse.org/bugs/show_bug.cgi?id=169860
- }
-
- public static Test suite() {
- TestSuite suite = new TestSuite(CompletionTest_NamespaceRef_Prefix.class.getName());
- suite.addTest(new CompletionTest_NamespaceRef_Prefix("testCompletionProposals"));
- return suite;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
- */
- @Override
- protected int getCompletionPosition() {
- return getBuffer().indexOf("namespace a ") + 11;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
- */
- @Override
- protected String getExpectedPrefix() {
- return expectedPrefix;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
- */
- @Override
- protected String[] getExpectedResultsValues() {
- return expectedResults;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
- */
- @Override
- protected String getFileName() {
- return fileName;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
- */
- @Override
- protected String getFileFullPath() {
- return fileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
- */
- @Override
- protected String getHeaderFileFullPath() {
- return headerFileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
- */
- @Override
- protected String getHeaderFileName() {
- return headerFileName;
- }
-
-}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_NewTypeReference_NoPrefix.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_NewTypeReference_NoPrefix.java
deleted file mode 100644
index 053a00c7221..00000000000
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_NewTypeReference_NoPrefix.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Rational Software - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.ui.tests.text.contentassist2;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * @author hamer
- *
- * Testing Class_Reference, with prefix
- * Bug#50711 : Wrong completion kind in a new expression
- *
- */
-public class CompletionTest_NewTypeReference_NoPrefix extends CompletionProposalsBaseTest {
-
- private final String fileName = "CompletionTestStart29.cpp";
- private final String fileFullPath = "resources/contentassist/" + fileName;
- private final String headerFileName = "CompletionTestStart.h";
- private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
- private final String expectedPrefix = "";
- private final String[] expectedResults = { "aClass", "anotherClass", "AStruct", "xOtherClass", "XStruct",
- "aNamespace", "xNamespace",
- // enums may not be desired, but valid
- "anEnumeration", "xEnumeration" };
-
- public CompletionTest_NewTypeReference_NoPrefix(String name) {
- super(name);
- }
-
- public static Test suite() {
- TestSuite suite = new TestSuite(CompletionTest_NewTypeReference_NoPrefix.class.getName());
- suite.addTest(new CompletionTest_NewTypeReference_NoPrefix("testCompletionProposals"));
- return suite;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
- */
- @Override
- protected int getCompletionPosition() {
- return getBuffer().indexOf(" ") + 2;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
- */
- @Override
- protected String getExpectedPrefix() {
- return expectedPrefix;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
- */
- @Override
- protected String[] getExpectedResultsValues() {
- return expectedResults;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
- */
- @Override
- protected String getFileName() {
- return fileName;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
- */
- @Override
- protected String getFileFullPath() {
- return fileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
- */
- @Override
- protected String getHeaderFileFullPath() {
- return headerFileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
- */
- @Override
- protected String getHeaderFileName() {
- return headerFileName;
- }
-
-}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_NewTypeReference_Prefix.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_NewTypeReference_Prefix.java
deleted file mode 100644
index 992f9cffff5..00000000000
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_NewTypeReference_Prefix.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Rational Software - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.ui.tests.text.contentassist2;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * @author hamer
- *
- * Testing Class_Reference, with prefix
- * Bug#50711 : Wrong completion kind in a new expression
- *
- */
-public class CompletionTest_NewTypeReference_Prefix extends CompletionProposalsBaseTest {
-
- private final String fileName = "CompletionTestStart28.cpp";
- private final String fileFullPath = "resources/contentassist/" + fileName;
- private final String headerFileName = "CompletionTestStart.h";
- private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
- private final String expectedPrefix = "a";
- private final String[] expectedResults = { "aClass", "anotherClass", "aNamespace", "AStruct", "anEnumeration",
- "AMacro(x)" };
-
- public CompletionTest_NewTypeReference_Prefix(String name) {
- super(name);
- }
-
- public static Test suite() {
- TestSuite suite = new TestSuite(CompletionTest_NewTypeReference_Prefix.class.getName());
- suite.addTest(new CompletionTest_NewTypeReference_Prefix("testCompletionProposals"));
- return suite;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
- */
- @Override
- protected int getCompletionPosition() {
- return getBuffer().indexOf(" a ") + 2;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
- */
- @Override
- protected String getExpectedPrefix() {
- return expectedPrefix;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
- */
- @Override
- protected String[] getExpectedResultsValues() {
- return expectedResults;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
- */
- @Override
- protected String getFileName() {
- return fileName;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
- */
- @Override
- protected String getFileFullPath() {
- return fileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
- */
- @Override
- protected String getHeaderFileFullPath() {
- return headerFileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
- */
- @Override
- protected String getHeaderFileName() {
- return headerFileName;
- }
-
-}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_ScopedReference_NoPrefix.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_ScopedReference_NoPrefix.java
deleted file mode 100644
index 81fc90f3d3e..00000000000
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_ScopedReference_NoPrefix.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Rational Software - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.ui.tests.text.contentassist2;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * @author hamer
- *
- * Testing Scoped_Reference, with no prefix
- * Bug#50152: Wrong context sent after a "::"
- *
- */
-public class CompletionTest_ScopedReference_NoPrefix extends CompletionProposalsBaseTest {
-
- private final String fileName = "CompletionTestStart30.cpp";
- private final String fileFullPath = "resources/contentassist/" + fileName;
- private final String headerFileName = "CompletionTestStart.h";
- private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
- private final String expectedPrefix = "";
- private final String[] expectedResults = { "aNamespaceFunction(void) : void" };
-
- public CompletionTest_ScopedReference_NoPrefix(String name) {
- super(name);
- }
-
- public static Test suite() {
- TestSuite suite = new TestSuite(CompletionTest_ScopedReference_NoPrefix.class.getName());
- suite.addTest(new CompletionTest_ScopedReference_NoPrefix("testCompletionProposals"));
- return suite;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
- */
- @Override
- protected int getCompletionPosition() {
- return getBuffer().indexOf(":: ") + 2;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
- */
- @Override
- protected String getExpectedPrefix() {
- return expectedPrefix;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
- */
- @Override
- protected String[] getExpectedResultsValues() {
- return expectedResults;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
- */
- @Override
- protected String getFileName() {
- return fileName;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
- */
- @Override
- protected String getFileFullPath() {
- return fileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
- */
- @Override
- protected String getHeaderFileFullPath() {
- return headerFileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
- */
- @Override
- protected String getHeaderFileName() {
- return headerFileName;
- }
-
-}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_ScopedReference_NonCodeScope.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_ScopedReference_NonCodeScope.java
deleted file mode 100644
index a1b05c08af3..00000000000
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_ScopedReference_NonCodeScope.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Rational Software - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.ui.tests.text.contentassist2;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * @author hamer
- *
- * Testing Scoped_Reference, with no prefix
- * Bug#50152: Wrong context sent after a "::"
- *
- */
-public class CompletionTest_ScopedReference_NonCodeScope extends CompletionProposalsBaseTest {
-
- private final String fileName = "CompletionTestStart39.cpp";
- private final String fileFullPath = "resources/contentassist/" + fileName;
- private final String headerFileName = "CompletionTestStart.h";
- private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
- private final String expectedPrefix = "";
- private final String[] expectedResults = { "Foo(void)", "bar(void) : void", "fum(void) : void", "x : int" };
-
- public CompletionTest_ScopedReference_NonCodeScope(String name) {
- super(name);
- }
-
- public static Test suite() {
- TestSuite suite = new TestSuite(CompletionTest_ScopedReference_NonCodeScope.class.getName());
- suite.addTest(new CompletionTest_ScopedReference_NonCodeScope("testCompletionProposals"));
- return suite;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
- */
- @Override
- protected int getCompletionPosition() {
- return getBuffer().indexOf(":: ") + 2;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
- */
- @Override
- protected String getExpectedPrefix() {
- return expectedPrefix;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
- */
- @Override
- protected String[] getExpectedResultsValues() {
- return expectedResults;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
- */
- @Override
- protected String getFileName() {
- return fileName;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
- */
- @Override
- protected String getFileFullPath() {
- return fileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
- */
- @Override
- protected String getHeaderFileFullPath() {
- return headerFileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
- */
- @Override
- protected String getHeaderFileName() {
- return headerFileName;
- }
-
-}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_ScopedReference_Prefix.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_ScopedReference_Prefix.java
deleted file mode 100644
index d6c2db7ee6a..00000000000
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_ScopedReference_Prefix.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Rational Software - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.ui.tests.text.contentassist2;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * @author hamer
- *
- * Testing Scoped_Reference, with a prefix
- * Bug#50152: Wrong context sent after a "::"
- *
- */
-public class CompletionTest_ScopedReference_Prefix extends CompletionProposalsBaseTest {
-
- private final String fileName = "CompletionTestStart31.cpp";
- private final String fileFullPath = "resources/contentassist/" + fileName;
- private final String headerFileName = "CompletionTestStart.h";
- private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
- private final String expectedPrefix = "a";
- private final String[] expectedResults = { "aNamespaceFunction(void) : void" };
-
- public CompletionTest_ScopedReference_Prefix(String name) {
- super(name);
- }
-
- public static Test suite() {
- TestSuite suite = new TestSuite(CompletionTest_ScopedReference_Prefix.class.getName());
- suite.addTest(new CompletionTest_ScopedReference_Prefix("testCompletionProposals"));
- return suite;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
- */
- @Override
- protected int getCompletionPosition() {
- return getBuffer().indexOf("::a ") + 3;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
- */
- @Override
- protected String getExpectedPrefix() {
- return expectedPrefix;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
- */
- @Override
- protected String[] getExpectedResultsValues() {
- return expectedResults;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
- */
- @Override
- protected String getFileName() {
- return fileName;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
- */
- @Override
- protected String getFileFullPath() {
- return fileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
- */
- @Override
- protected String getHeaderFileFullPath() {
- return headerFileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
- */
- @Override
- protected String getHeaderFileName() {
- return headerFileName;
- }
-
-}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_SingleName_Method_NoPrefix.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_SingleName_Method_NoPrefix.java
deleted file mode 100644
index 3bac5ff20e6..00000000000
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_SingleName_Method_NoPrefix.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Rational Software - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.ui.tests.text.contentassist2;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * @author hamer
- *
- * Testing statement start, with no prefix
- * Lookup.THIS
- *
- */
-public class CompletionTest_SingleName_Method_NoPrefix extends CompletionProposalsBaseTest {
- private final String fileName = "CompletionTestStart5.cpp";
- private final String fileFullPath = "resources/contentassist/" + fileName;
- private final String headerFileName = "CompletionTestStart.h";
- private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
- private final String expectedPrefix = "";
-
- private final String[] expectedResults = { "AStruct", "XStruct", "aClass", "aFirstEnum", "aFunction(void) bool",
- "aNamespace", "aSecondEnum", "aThirdEnum", "aVariable : int", "anEnumeration", "anotherClass",
- "anotherField : int", "anotherFunction(void) void", "anotherMethod(void) void", "xEnumeration",
- "xFirstEnum", "xFunction(void) bool", "xNamespace", "xOtherClass", "xOtherFunction(void) void",
- "xSecondEnum", "xThirdEnum", "xVariable : int", "~anotherClass(void) "
- // extra result
- // "operator =(const anotherClass &) anotherClass &",
- };
-
- public CompletionTest_SingleName_Method_NoPrefix(String name) {
- super(name);
- // operators should not be proposed
- // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=172304
- setExpectFailure(172304);
- }
-
- public static Test suite() {
- TestSuite suite = new TestSuite(CompletionTest_SingleName_Method_NoPrefix.class.getName());
- suite.addTest(new CompletionTest_SingleName_Method_NoPrefix("testCompletionProposals"));
- return suite;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
- */
- @Override
- protected int getCompletionPosition() {
- return getBuffer().indexOf(" ") + 2;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
- */
- @Override
- protected String getExpectedPrefix() {
- return expectedPrefix;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
- */
- @Override
- protected String[] getExpectedResultsValues() {
- return expectedResults;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
- */
- @Override
- protected String getFileName() {
- return fileName;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
- */
- @Override
- protected String getFileFullPath() {
- return fileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
- */
- @Override
- protected String getHeaderFileFullPath() {
- return headerFileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
- */
- @Override
- protected String getHeaderFileName() {
- return headerFileName;
- }
-
-}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_SingleName_Method_Prefix.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_SingleName_Method_Prefix.java
deleted file mode 100644
index 780fa3220a6..00000000000
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_SingleName_Method_Prefix.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Rational Software - initial implementation
- *******************************************************************************/
-package org.eclipse.cdt.ui.tests.text.contentassist2;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * @author hamer
- *
- * Testing statement start completion kind, with a prefix
- *
- */
-public class CompletionTest_SingleName_Method_Prefix extends CompletionProposalsBaseTest {
-
- private final String fileName = "CompletionTestStart1.cpp";
- private final String fileFullPath = "resources/contentassist/" + fileName;
- private final String headerFileName = "CompletionTestStart.h";
- private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
- private final String expectedPrefix = "a";
- private final String[] expectedResults = { "anotherField : int", "aVariable : int", "anotherMethod(void) : void",
- "aFunction(void) : bool", "anotherFunction(void) : void", "aClass", "anotherClass",
- "anotherClass(const anotherClass &)", "anotherClass(void)", "aNamespace", "anEnumeration", "aFirstEnum",
- "aSecondEnum", "aThirdEnum", "AStruct", "AMacro(x)" };
-
- public CompletionTest_SingleName_Method_Prefix(String name) {
- super(name);
- }
-
- public static Test suite() {
- TestSuite suite = new TestSuite(CompletionTest_SingleName_Method_Prefix.class.getName());
- suite.addTest(new CompletionTest_SingleName_Method_Prefix("testCompletionProposals"));
- return suite;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
- */
- @Override
- protected int getCompletionPosition() {
- return getBuffer().indexOf(" a ") + 2;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
- */
- @Override
- protected String getExpectedPrefix() {
- return expectedPrefix;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
- */
- @Override
- protected String[] getExpectedResultsValues() {
- return expectedResults;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
- */
- @Override
- protected String getFileName() {
- return fileName;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
- */
- @Override
- protected String getFileFullPath() {
- return fileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
- */
- @Override
- protected String getHeaderFileFullPath() {
- return headerFileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
- */
- @Override
- protected String getHeaderFileName() {
- return headerFileName;
- }
-
-}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_SingleName_NoPrefix.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_SingleName_NoPrefix.java
deleted file mode 100644
index 4031c5bed5b..00000000000
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_SingleName_NoPrefix.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Rational Software - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.ui.tests.text.contentassist2;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * @author hamer
- *
- * Testing Single name reference, with prefix
- *
- */
-public class CompletionTest_SingleName_NoPrefix extends CompletionProposalsBaseTest {
- private final String fileName = "CompletionTestStart15.cpp";
- private final String fileFullPath = "resources/contentassist/" + fileName;
- private final String headerFileName = "CompletionTestStart.h";
- private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
- private final String expectedPrefix = "";
- private final String[] expectedResults = { "x : int", "aVariable : int", "xVariable : int",
- "aFunction(void) : bool", "anotherFunction(void) : void", "foo(int x) : void", "xFunction(void) : bool",
- "xOtherFunction(void) : void", "aClass", "anotherClass", "xOtherClass", "AStruct", "XStruct", "aNamespace",
- "xNamespace", "anEnumeration", "xEnumeration", "aFirstEnum", "aSecondEnum", "aThirdEnum", "xFirstEnum",
- "xSecondEnum", "xThirdEnum", "y : int"
- // note: macros are omitted intentionally
- };
-
- public CompletionTest_SingleName_NoPrefix(String name) {
- super(name);
- }
-
- public static Test suite() {
- TestSuite suite = new TestSuite(CompletionTest_SingleName_NoPrefix.class.getName());
- suite.addTest(new CompletionTest_SingleName_NoPrefix("testCompletionProposals"));
- return suite;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
- */
- @Override
- protected int getCompletionPosition() {
- return getBuffer().indexOf(" ") + 2;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
- */
- @Override
- protected String getExpectedPrefix() {
- return expectedPrefix;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
- */
- @Override
- protected String[] getExpectedResultsValues() {
- return expectedResults;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
- */
- @Override
- protected String getFileName() {
- return fileName;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
- */
- @Override
- protected String getFileFullPath() {
- return fileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
- */
- @Override
- protected String getHeaderFileFullPath() {
- return headerFileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
- */
- @Override
- protected String getHeaderFileName() {
- return headerFileName;
- }
-
-}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_SingleName_Prefix.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_SingleName_Prefix.java
deleted file mode 100644
index 4c7eff0dddd..00000000000
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_SingleName_Prefix.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Rational Software - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.ui.tests.text.contentassist2;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * @author hamer
- *
- * Testing Single name reference, Macro lookups
- *
- */
-public class CompletionTest_SingleName_Prefix extends CompletionProposalsBaseTest {
- private final String fileName = "CompletionTestStart8.cpp";
- private final String fileFullPath = "resources/contentassist/" + fileName;
- private final String headerFileName = "CompletionTestStart.h";
- private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
- private final String expectedPrefix = "AM";
- private final String[] expectedResults = {
- // missing results
- "AMacro(x)" };
-
- public CompletionTest_SingleName_Prefix(String name) {
- super(name);
- // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=171708
- }
-
- public static Test suite() {
- TestSuite suite = new TestSuite(CompletionTest_SingleName_Prefix.class.getName());
- suite.addTest(new CompletionTest_SingleName_Prefix("testCompletionProposals"));
- return suite;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
- */
- @Override
- protected int getCompletionPosition() {
- return getBuffer().indexOf(" AM ") + 3;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
- */
- @Override
- protected String getExpectedPrefix() {
- return expectedPrefix;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
- */
- @Override
- protected String[] getExpectedResultsValues() {
- return expectedResults;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
- */
- @Override
- protected String getFileName() {
- return fileName;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
- */
- @Override
- protected String getFileFullPath() {
- return fileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
- */
- @Override
- protected String getHeaderFileFullPath() {
- return headerFileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
- */
- @Override
- protected String getHeaderFileName() {
- return headerFileName;
- }
-
-}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_SingleName_Prefix2.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_SingleName_Prefix2.java
deleted file mode 100644
index 895cda610c1..00000000000
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_SingleName_Prefix2.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Rational Software - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.ui.tests.text.contentassist2;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * @author hamer
- *
- * Testing Single name reference, with prefix
- *
- */
-public class CompletionTest_SingleName_Prefix2 extends CompletionProposalsBaseTest {
- private final String fileName = "CompletionTestStart14.cpp";
- private final String fileFullPath = "resources/contentassist/" + fileName;
- private final String headerFileName = "CompletionTestStart.h";
- private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
- private final String expectedPrefix = "a";
- private final String[] expectedResults = { "aVariable : int", "aFunction(void) : bool",
- "anotherFunction(void) : void", "aClass", "anotherClass", "aNamespace", "anEnumeration", "aFirstEnum",
- "aSecondEnum", "aThirdEnum", "AMacro(x)", "AStruct" };
-
- public CompletionTest_SingleName_Prefix2(String name) {
- super(name);
- // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=109724
- //setExpectFailure(109724);
- }
-
- public static Test suite() {
- TestSuite suite = new TestSuite(CompletionTest_SingleName_Prefix2.class.getName());
- suite.addTest(new CompletionTest_SingleName_Prefix2("testCompletionProposals"));
- return suite;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
- */
- @Override
- protected int getCompletionPosition() {
- return getBuffer().indexOf(" a ") + 2;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
- */
- @Override
- protected String getExpectedPrefix() {
- return expectedPrefix;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
- */
- @Override
- protected String[] getExpectedResultsValues() {
- return expectedResults;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
- */
- @Override
- protected String getFileName() {
- return fileName;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
- */
- @Override
- protected String getFileFullPath() {
- return fileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
- */
- @Override
- protected String getHeaderFileFullPath() {
- return headerFileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
- */
- @Override
- protected String getHeaderFileName() {
- return headerFileName;
- }
-
-}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_TypeDef_NoPrefix.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_TypeDef_NoPrefix.java
deleted file mode 100644
index e2f678a2b54..00000000000
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_TypeDef_NoPrefix.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Rational Software - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.ui.tests.text.contentassist2;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * @author hamer
- *
- * Testing Typedef as a possible returned type.
- * Bug#52948
- *
- */
-public class CompletionTest_TypeDef_NoPrefix extends CompletionProposalsBaseTest {
-
- private final String fileName = "CompletionTestStart37.cpp";
- private final String fileFullPath = "resources/contentassist/" + fileName;
- private final String headerFileName = "CompletionTestStart.h";
- private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
- private final String expectedPrefix = "m";
- private final String[] expectedResults = { "myType" };
-
- public CompletionTest_TypeDef_NoPrefix(String name) {
- super(name);
- }
-
- public static Test suite() {
- TestSuite suite = new TestSuite(CompletionTest_TypeDef_NoPrefix.class.getName());
- suite.addTest(new CompletionTest_TypeDef_NoPrefix("testCompletionProposals"));
- return suite;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
- */
- @Override
- protected int getCompletionPosition() {
- return getBuffer().indexOf(" m ") + 2;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
- */
- @Override
- protected String getExpectedPrefix() {
- return expectedPrefix;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
- */
- @Override
- protected String[] getExpectedResultsValues() {
- return expectedResults;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
- */
- @Override
- protected String getFileName() {
- return fileName;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
- */
- @Override
- protected String getFileFullPath() {
- return fileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
- */
- @Override
- protected String getHeaderFileFullPath() {
- return headerFileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
- */
- @Override
- protected String getHeaderFileName() {
- return headerFileName;
- }
-
-}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_TypeDef_Prefix.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_TypeDef_Prefix.java
deleted file mode 100644
index 0a6713addce..00000000000
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_TypeDef_Prefix.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Rational Software - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.ui.tests.text.contentassist2;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * @author hamer
- *
- * Testing Typedef as a possible returned type.
- * Bug#52948
- *
- */
-public class CompletionTest_TypeDef_Prefix extends CompletionProposalsBaseTest {
-
- private final String fileName = "CompletionTestStart37.cpp";
- private final String fileFullPath = "resources/contentassist/" + fileName;
- private final String headerFileName = "CompletionTestStart.h";
- private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
- private final String expectedPrefix = "m";
- private final String[] expectedResults = { "myType" };
-
- public CompletionTest_TypeDef_Prefix(String name) {
- super(name);
- }
-
- public static Test suite() {
- TestSuite suite = new TestSuite(CompletionTest_TypeDef_Prefix.class.getName());
- suite.addTest(new CompletionTest_TypeDef_Prefix("testCompletionProposals"));
- return suite;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
- */
- @Override
- protected int getCompletionPosition() {
- return getBuffer().indexOf(" m ") + 2;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
- */
- @Override
- protected String getExpectedPrefix() {
- return expectedPrefix;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
- */
- @Override
- protected String[] getExpectedResultsValues() {
- return expectedResults;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
- */
- @Override
- protected String getFileName() {
- return fileName;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
- */
- @Override
- protected String getFileFullPath() {
- return fileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
- */
- @Override
- protected String getHeaderFileFullPath() {
- return headerFileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
- */
- @Override
- protected String getHeaderFileName() {
- return headerFileName;
- }
-
-}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_TypeRef_NoPrefix.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_TypeRef_NoPrefix.java
deleted file mode 100644
index 70386bf401d..00000000000
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_TypeRef_NoPrefix.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Rational Software - Initial API and implementation
- * Bryan Wilkinson (QNX)
- *******************************************************************************/
-package org.eclipse.cdt.ui.tests.text.contentassist2;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * @author hamer
- *
- * Testing Type_Reference, with no prefix
- * Bug#50471 : Wrong completion kind after the "using" keyword
- *
- */
-public class CompletionTest_TypeRef_NoPrefix extends CompletionProposalsBaseTest {
-
- private final String fileName = "CompletionTestStart24.cpp";
- private final String fileFullPath = "resources/contentassist/" + fileName;
- private final String headerFileName = "CompletionTestStart.h";
- private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
- private final String expectedPrefix = "";
- private final String[] expectedResults = { "aNamespace", "xNamespace" };
-
- public CompletionTest_TypeRef_NoPrefix(String name) {
- super(name);
- // https://bugs.eclipse.org/bugs/show_bug.cgi?id=169860
- }
-
- public static Test suite() {
- TestSuite suite = new TestSuite(CompletionTest_TypeRef_NoPrefix.class.getName());
- suite.addTest(new CompletionTest_TypeRef_NoPrefix("testCompletionProposals"));
- return suite;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
- */
- @Override
- protected int getCompletionPosition() {
- return getBuffer().indexOf("using ") + 6;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
- */
- @Override
- protected String getExpectedPrefix() {
- return expectedPrefix;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
- */
- @Override
- protected String[] getExpectedResultsValues() {
- return expectedResults;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
- */
- @Override
- protected String getFileName() {
- return fileName;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
- */
- @Override
- protected String getFileFullPath() {
- return fileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
- */
- @Override
- protected String getHeaderFileFullPath() {
- return headerFileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
- */
- @Override
- protected String getHeaderFileName() {
- return headerFileName;
- }
-
-}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_TypeRef_Prefix.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_TypeRef_Prefix.java
deleted file mode 100644
index 31c897c9962..00000000000
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_TypeRef_Prefix.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Rational Software - Initial API and implementation
- * Bryan Wilkinson (QNX)
- *******************************************************************************/
-package org.eclipse.cdt.ui.tests.text.contentassist2;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * @author hamer
- *
- * Testing Type_Reference, with prefix
- * Bug#50471 : Wrong completion kind after the "using" keyword
- *
- */
-public class CompletionTest_TypeRef_Prefix extends CompletionProposalsBaseTest {
-
- private final String fileName = "CompletionTestStart25.cpp";
- private final String fileFullPath = "resources/contentassist/" + fileName;
- private final String headerFileName = "CompletionTestStart.h";
- private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
- private final String expectedPrefix = "a";
- private final String[] expectedResults = { "aNamespace" };
-
- public CompletionTest_TypeRef_Prefix(String name) {
- super(name);
- // https://bugs.eclipse.org/bugs/show_bug.cgi?id=169860
- }
-
- public static Test suite() {
- TestSuite suite = new TestSuite(CompletionTest_TypeRef_Prefix.class.getName());
- suite.addTest(new CompletionTest_TypeRef_Prefix("testCompletionProposals"));
- return suite;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
- */
- @Override
- protected int getCompletionPosition() {
- return getBuffer().indexOf("using a ") + 7;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
- */
- @Override
- protected String getExpectedPrefix() {
- return expectedPrefix;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
- */
- @Override
- protected String[] getExpectedResultsValues() {
- return expectedResults;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
- */
- @Override
- protected String getFileName() {
- return fileName;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
- */
- @Override
- protected String getFileFullPath() {
- return fileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
- */
- @Override
- protected String getHeaderFileFullPath() {
- return headerFileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
- */
- @Override
- protected String getHeaderFileName() {
- return headerFileName;
- }
-
-}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_VariableType_NestedPrefix.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_VariableType_NestedPrefix.java
deleted file mode 100644
index 69d726d67ef..00000000000
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_VariableType_NestedPrefix.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Rational Software - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.ui.tests.text.contentassist2;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * @author hamer
- *
- * Testing Scoped_Reference, with no prefix
- * Bug#50152: Wrong context sent after a "::"
- *
- */
-public class CompletionTest_VariableType_NestedPrefix extends CompletionProposalsBaseTest {
-
- private final String fileName = "CompletionTestStart38.cpp";
- private final String fileFullPath = "resources/contentassist/" + fileName;
- private final String headerFileName = "CompletionTestStart.h";
- private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
- private final String expectedPrefix = "";
- private final String[] expectedResults = { "Foo(void)", "bar(void) : void", "fum(void) : void", "DEF", "x : int" };
-
- public CompletionTest_VariableType_NestedPrefix(String name) {
- super(name);
- }
-
- public static Test suite() {
- TestSuite suite = new TestSuite(CompletionTest_VariableType_NestedPrefix.class.getName());
- suite.addTest(new CompletionTest_VariableType_NestedPrefix("testCompletionProposals"));
- return suite;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
- */
- @Override
- protected int getCompletionPosition() {
- return getBuffer().indexOf(":: ") + 2;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
- */
- @Override
- protected String getExpectedPrefix() {
- return expectedPrefix;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
- */
- @Override
- protected String[] getExpectedResultsValues() {
- return expectedResults;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
- */
- @Override
- protected String getFileName() {
- return fileName;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
- */
- @Override
- protected String getFileFullPath() {
- return fileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
- */
- @Override
- protected String getHeaderFileFullPath() {
- return headerFileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
- */
- @Override
- protected String getHeaderFileName() {
- return headerFileName;
- }
-
-}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_VariableType_NoPrefix.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_VariableType_NoPrefix.java
deleted file mode 100644
index 61c8d72e4ad..00000000000
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_VariableType_NoPrefix.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Rational Software - Initial API and implementation
- * Bryan Wilkinson (QNX)
- *******************************************************************************/
-package org.eclipse.cdt.ui.tests.text.contentassist2;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * @author hamer
- *
- * Testing Variable_type, with NO prefix
- *
- */
-public class CompletionTest_VariableType_NoPrefix extends CompletionProposalsBaseTest {
- private final String fileName = "CompletionTestStart11.cpp";
- private final String fileFullPath = "resources/contentassist/" + fileName;
- private final String headerFileName = "CompletionTestStart.h";
- private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
- private final String expectedPrefix = "";
- private final String[] expectedResults = { "aClass", "anotherClass", "aNamespace", "anEnumeration", "AStruct",
- "xOtherClass", "xNamespace", "xEnumeration", "XStruct", };
-
- public CompletionTest_VariableType_NoPrefix(String name) {
- super(name);
- // https://bugs.eclipse.org/bugs/show_bug.cgi?id=169860
- }
-
- public static Test suite() {
- TestSuite suite = new TestSuite(CompletionTest_VariableType_NoPrefix.class.getName());
- suite.addTest(new CompletionTest_VariableType_NoPrefix("testCompletionProposals"));
- return suite;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
- */
- @Override
- protected int getCompletionPosition() {
- return getBuffer().indexOf(" ") + 2;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
- */
- @Override
- protected String getExpectedPrefix() {
- return expectedPrefix;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
- */
- @Override
- protected String[] getExpectedResultsValues() {
- return expectedResults;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
- */
- @Override
- protected String getFileName() {
- return fileName;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
- */
- @Override
- protected String getFileFullPath() {
- return fileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
- */
- @Override
- protected String getHeaderFileFullPath() {
- return headerFileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
- */
- @Override
- protected String getHeaderFileName() {
- return headerFileName;
- }
-
-}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_VariableType_Prefix.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_VariableType_Prefix.java
deleted file mode 100644
index d91768d4bdc..00000000000
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_VariableType_Prefix.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Rational Software - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.ui.tests.text.contentassist2;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * @author hamer
- *
- * Testing Variable_type completion kind, with a prefix
- *
- */
-public class CompletionTest_VariableType_Prefix extends CompletionProposalsBaseTest {
- private final String fileName = "CompletionTestStart3.cpp";
- private final String fileFullPath = "resources/contentassist/" + fileName;
- private final String headerFileName = "CompletionTestStart.h";
- private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
- private final String expectedPrefix = "a";
- private final String[] expectedResults = { "aClass", "anotherClass", "aNamespace", "anEnumeration", "AStruct",
- "AMacro(x)" };
-
- public CompletionTest_VariableType_Prefix(String name) {
- super(name);
- // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=109724
- // setExpectFailure(109724);
- }
-
- public static Test suite() {
- TestSuite suite = new TestSuite(CompletionTest_VariableType_Prefix.class.getName());
- suite.addTest(new CompletionTest_VariableType_Prefix("testCompletionProposals"));
- return suite;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
- */
- @Override
- protected int getCompletionPosition() {
- return getBuffer().indexOf(" a ") + 2;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
- */
- @Override
- protected String getExpectedPrefix() {
- return expectedPrefix;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
- */
- @Override
- protected String[] getExpectedResultsValues() {
- return expectedResults;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
- */
- @Override
- protected String getFileName() {
- return fileName;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
- */
- @Override
- protected String getFileFullPath() {
- return fileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
- */
- @Override
- protected String getHeaderFileFullPath() {
- return headerFileFullPath;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
- */
- @Override
- protected String getHeaderFileName() {
- return headerFileName;
- }
-
-}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTests_PlainC.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTests_PlainC.java
deleted file mode 100644
index 9150aee571c..00000000000
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTests_PlainC.java
+++ /dev/null
@@ -1,827 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2014 Wind River Systems, Inc. and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Anton Leherbauer (Wind River Systems) - initial API and implementation
- * Markus Schorn (Wind River Systems)
- * IBM Corporation
- * Jens Elmenthaler - http://bugs.eclipse.org/173458 (camel case completion)
- *******************************************************************************/
-package org.eclipse.cdt.ui.tests.text.contentassist2;
-
-import org.eclipse.cdt.core.CCorePlugin;
-import org.eclipse.cdt.core.testplugin.util.BaseTestCase;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.jface.text.IDocument;
-
-import junit.framework.Test;
-
-/**
- * Completion tests for plain C.
- *
- * @since 4.0
- */
-public class CompletionTests_PlainC extends AbstractContentAssistTest {
-
- private static final String HEADER_FILE_NAME = "CompletionTest.h";
- private static final String SOURCE_FILE_NAME = "CompletionTest.c";
- private static final String CURSOR_LOCATION_TAG = "/*cursor*/";
- private static final String INCLUDE_LOCATION_TAG = "/*include*/";
- private static final String DISTURB_FILE_NAME = "DisturbWith.c";
-
- protected int fCursorOffset;
- private IProject fProject;
-
- //{CompletionTest.h}
- //int gGlobalInt;
- //struct Struct1;
- //struct Struct2;
- //union Union1;
- //union Union2;
- //
- //#define DEBUG 1
- //#define AMacro(x) x+1
- //#define XMacro(x,y) x+y
- //
- //int aVariable;
- //int xVariable;
- //
- //void aFunction();
- //void xFunction();
- //
- //enum anEnumeration {
- // aFirstEnum,
- // aSecondEnum,
- // aThirdEnum
- //};
- //typedef enum anEnumeration anEnumerationType;
- //
- //enum xEnumeration {
- // xFirstEnum,
- // xSecondEnum,
- // xThirdEnum
- //};
- //typedef enum xEnumeration xEnumerationType;
- //
- //struct AStruct{
- // int aStructField;
- // int xaStructField;
- //};
- //typedef struct AStruct AStructType;
- //
- //struct XStruct{
- // int xStructField;
- // int axStructField;
- //};
- //typedef struct XStruct XStructType;
- //
- //void anotherFunction(){
- // int aLocalDeclaration = 1;
- //}
- //
- //void xOtherFunction(){
- // int xLocalDeclaration = 1;
- //}
- //#ifdef ANONYMOUS
- //enum {
- // anonFirstEnum,
- // anonSecondEnum,
- // anonThirdEnum
- //};
- //
- //enum {
- // xanonFirstEnum,
- // xanonSecondEnum,
- // xanonThirdEnum
- //};
- //
- //int notAnonymous;
- //enum notAnonymousEnum {};
- //struct notAnonymousStruct {};
- //
- //struct {
- // int anonStructField;
- //};
- //
- //struct {
- // int xanonStructField;
- //};
- //
- //union {
- // int anonUnionMember1, anonUnionMember2;
- //};
- //#endif /* ANONYMOUS */
- //
- //#ifdef STRUCT_C1
- //enum E1 {e11, e12};
- //
- //struct C1_s {
- // enum E2 {e21, e22};
- //
- // struct C1_s* fMySelf;
- //
- // int m123;
- // int m12;
- // int m13;
- //};
- //typedef struct C1_s C1;
- //extern C1* gfC1();
- //C1* gfC2();
- //C1 gC1, gC2;
- //#endif /* STRUCT_C1 */
- // struct s206450 {
- // struct {int a1; int a2;};
- // union {int u1; char u2;};
- // struct {int a3;} a4;
- // int b;
- // };
- // #ifdef bug204758
- // typedef enum {__nix} _e204758;
- // void _f204758(_e204758 x);
- // #endif
-
- //{DisturbWith.c}
- // int gTemp;
- // void gFunc();
- // typedef struct {
- // int mem;
- // } gStruct;
-
- public static Test suite() {
- return BaseTestCase.suite(CompletionTests_PlainC.class, "_");
- }
-
- /**
- * @param name
- */
- public CompletionTests_PlainC(String name) {
- super(name, false);
- }
-
- /*
- * @see org.eclipse.cdt.ui.tests.text.contentassist2.AbstractContentAssistTest#setUpProjectContent(org.eclipse.core.resources.IProject)
- */
- @Override
- protected IFile setUpProjectContent(IProject project) throws Exception {
- fProject = project;
- String headerContent = readTaggedComment(HEADER_FILE_NAME);
- StringBuilder sourceContent = getContentsForTest(1)[0];
- int includeOffset = Math.max(0, sourceContent.indexOf(INCLUDE_LOCATION_TAG));
- sourceContent.insert(includeOffset, "#include \"" + HEADER_FILE_NAME + "\"\n");
- fCursorOffset = sourceContent.indexOf(CURSOR_LOCATION_TAG);
- assertTrue("No cursor location specified", fCursorOffset >= 0);
- sourceContent.delete(fCursorOffset, fCursorOffset + CURSOR_LOCATION_TAG.length());
- assertNotNull(createFile(project, HEADER_FILE_NAME, headerContent));
- IFile sourceFile = createFile(project, SOURCE_FILE_NAME, sourceContent.toString());
- // re-indexing is necessary to parse the header in context of the source.
- CCorePlugin.getIndexManager().reindex(fCProject);
- waitForIndexer(fCProject);
- return sourceFile;
- }
-
- protected static final int DEFAULT_FLAGS = AbstractContentAssistTest.DEFAULT_FLAGS | IS_COMPLETION;
-
- protected void assertCompletionResults(String[] expected) throws Exception {
- assertContentAssistResults(fCursorOffset, expected, DEFAULT_FLAGS, CompareType.ID);
- }
-
- //void test() {
- // int myvar;
- // (my/*cursor*/
- public void testLocalVariableAfterOpeningParen_Bug180885() throws Exception {
- final String[] expected = { "myvar" };
- assertCompletionResults(expected);
- }
-
- //void test() {
- // int myvar;
- // int x = my/*cursor*/
- public void testLocalVariableInAssignment() throws Exception {
- final String[] expected = { "myvar" };
- assertCompletionResults(expected);
- }
-
- //void test() {
- // int myvar;
- // my/*cursor*/
- public void testLocalVariableOnLHS() throws Exception {
- final String[] expected = { "myvar" };
- assertCompletionResults(expected);
- }
-
- // void test() {
- // g/*cursor*/
- public void testBindingsWithoutDeclaration() throws Exception {
- // gStruct: fix for 214146, type from a source file is not proposed.
- final String[] expected = { "gGlobalInt", "gTemp", "gFunc(void)", };
- final String[] expected2 = { "gGlobalInt" };
- String disturbContent = readTaggedComment(DISTURB_FILE_NAME);
- IFile dfile = createFile(fProject, DISTURB_FILE_NAME, disturbContent);
- waitForIndexer(fCProject);
- assertCompletionResults(expected);
-
- dfile.delete(true, npm());
- waitForIndexer(fCProject);
- assertCompletionResults(expected2);
- }
-
- //// to_be_replaced_
- //void gfunc(){aNew/*cursor*/
- public void testGlobalVariableBeforeSave_Bug180883() throws Exception {
- String replace = "// to_be_replaced_";
- String globalVar = "int aNewGlobalVar;";
- IDocument doc = getDocument();
- int idx = doc.get().indexOf(replace);
- doc.replace(idx, replace.length(), globalVar);
-
- final String[] expected = { "aNewGlobalVar" };
- assertCompletionResults(expected);
- }
-
- // static int staticVar197990;
- // void gFunc() {
- // stat/*cursor*/
- public void testStaticVariables_Bug197990() throws Exception {
- final String[] expected = { "staticVar197990" };
- assertCompletionResults(expected);
- }
-
- // struct Struct/*cursor*/
- public void testElaboratedTypeSpecifierStruct_bug208710() throws Exception {
- final String[] expected = { "Struct1", "Struct2" };
- assertCompletionResults(expected);
- }
-
- // struct Union/*cursor*/
- public void testElaboratedTypeSpecifierNotStruct_bug208710() throws Exception {
- final String[] expected = new String[0];
- assertCompletionResults(expected);
- }
-
- // union Union/*cursor*/
- public void testElaboratedTypeSpecifierUnion_bug208710() throws Exception {
- final String[] expected = { "Union1", "Union2" };
- assertCompletionResults(expected);
- }
-
- // union Struct/*cursor*/
- public void testElaboratedTypeSpecifierNotUnion_bug208710() throws Exception {
- final String[] expected = new String[0];
- assertCompletionResults(expected);
- }
-
- // void func() {float a; a= 1./*cursor*/}
- public void testCompletionInFloatingPointLiteral_Bug193464() throws Exception {
- final String[] expected = new String[0];
- assertCompletionResults(expected);
- }
-
- // #ifdef __cplusplus__
- // extern "C" {
- // #endif
- // void c_linkage();
- // #ifdef __cplusplus__
- // }
- // #endif
-
- // #include "header191315.h"
-
- // #include "header191315.h"
- // void xxx() { c_lin/*cursor*/
- public void testExternC_bug191315() throws Exception {
- CharSequence[] content = getContentsForTest(3);
- createFile(fProject, "header191315.h", content[0].toString());
- createFile(fProject, "source191315.c", content[1].toString());
- createFile(fProject, "source191315.cpp", content[1].toString());
- waitForIndexer(fCProject);
- final String[] expected = { "c_linkage(void)" };
- assertCompletionResults(expected);
- }
-
- //#define ANONYMOUS
- ///*include*/
- ///*cursor*/
- public void testAnonymousTypes() throws Exception {
- final String[] expected = { "AStructType", "XStructType", "anEnumerationType", "xEnumerationType" };
- assertCompletionResults(expected);
- }
-
- //void foo ( a/*cursor*/
- public void testArgumentTypes_Prefix() throws Exception {
- final String[] expected = { "AMacro(x)", "AStructType", "anEnumerationType" };
- assertCompletionResults(expected);
- }
-
- //struct aThirdStruct {
- // int x;
- // /*cursor*/
- //};
- public void testFieldType_NoPrefix() throws Exception {
- final String[] expected = { "AStructType", "XStructType", "anEnumerationType", "xEnumerationType" };
- assertCompletionResults(expected);
- }
-
- //struct aThirdStruct {
- // int x;
- // a/*cursor*/
- //};
- public void testFieldType_Prefix() throws Exception {
- final String[] expected = { "AMacro(x)", "AStructType", "anEnumerationType" };
- assertCompletionResults(expected);
- }
-
- //#ifdef /*cursor*/
- public void testMacroRef_NoPrefix() throws Exception {
- final String[] expected = { "AMacro(x)", "DEBUG", "XMacro(x, y)", "__CDT_PARSER__", "__COUNTER__", "__DATE__",
- "__FILE__", "__LINE__", "__STDC_HOSTED__", "__STDC_VERSION__", "__STDC__", "__TIME__",
- "__builtin_va_arg(ap, type)", "__builtin_offsetof(T, m)", "__builtin_types_compatible_p(x, y)",
- "__complex__", "__extension__", "__imag__", "__null", "__offsetof__(x)", "__real__", "__stdcall",
- "__thread", };
- assertCompletionResults(expected);
- }
-
- //#ifdef D/*cursor*/
- public void testMacroRef_Prefix() throws Exception {
- final String[] expected = { "DEBUG" };
- assertCompletionResults(expected);
- }
-
- // int waldo;
- // void foo() {
- // #ifdef SOME_UNDEFINED_MACRO
- // wald/*cursor*/
- // #endif
- // }
- public void testInactiveCodeBlock_72809() throws Exception {
- assertCompletionResults(new String[] { "waldo" });
- }
-
- //void fooFunction()
- //{
- // AStructType* c;
- // c->/*cursor*/
- //}
- public void testMemberReference_Arrow_NoPrefix() throws Exception {
- final String[] expected = { "aStructField", "xaStructField", };
- assertCompletionResults(expected);
- }
-
- //void main() {
- // struct AStruct a, *ap;
- // ap->/*cursor*/
- //}
- public void testMemberReference_Arrow_NoPrefix2() throws Exception {
- final String[] expected = { "aStructField", "xaStructField", };
- assertCompletionResults(expected);
- }
-
- //void fooFunction()
- //{
- // AStructType* c;
- // c->a/*cursor*/
- //}
- public void testMemberReference_Arrow_Prefix() throws Exception {
- final String[] expected = { "aStructField", };
- assertCompletionResults(expected);
- }
-
- //AStructType* foo();
- //
- //void fooFunction()
- //{
- // foo()->a/*cursor*/
- //}
- public void testMemberReference_Arrow_Prefix2() throws Exception {
- final String[] expected = { "aStructField", };
- assertCompletionResults(expected);
- }
-
- //void fooFunction()
- //{
- // AStructType c;
- // c./*cursor*/
- //}
- public void testMemberReference_Dot_NoPrefix() throws Exception {
- final String[] expected = { "aStructField", "xaStructField", };
- assertCompletionResults(expected);
- }
-
- //void fooFunction()
- //{
- // AStructType c;
- // c.a/*cursor*/
- //}
- public void testMemberReference_Dot_Prefix() throws Exception {
- final String[] expected = { "aStructField", };
- assertCompletionResults(expected);
- }
-
- //typedef int myType;
- //
- //m/*cursor*/
- public void testTypeDef_Prefix() throws Exception {
- final String[] expected = { "myType", };
- assertCompletionResults(expected);
- }
-
- //void fooFunction(int x)
- //{
- // /*cursor*/
- //}
- public void testSingleName_Function_NoPrefix() throws Exception {
- final String[] expected = { "x", "aVariable", "xVariable", "aFunction(void)", "anotherFunction(void)",
- "fooFunction(int)", "xFunction(void)", "xOtherFunction(void)", "anEnumerationType", "xEnumerationType",
- "AStructType", "XStructType", "aFirstEnum", "aSecondEnum", "aThirdEnum", "xFirstEnum", "xSecondEnum",
- "xThirdEnum", "gGlobalInt" };
- assertCompletionResults(expected);
- }
-
- //void fooFunction(int x)
- //{
- // a/*cursor*/
- //}
- public void testSingleName_Function_Prefix() throws Exception {
- final String[] expected = { "AMacro(x)", "AStructType", "aVariable", "aFunction(void)", "anotherFunction(void)",
- "anEnumerationType", "aFirstEnum", "aSecondEnum", "aThirdEnum", };
- assertCompletionResults(expected);
- }
-
- //void fooFunction(int x)
- //{
- // int y = /*cursor*/
- //}
- public void testSingleName_Assignment_NoPrefix() throws Exception {
- final String[] expected = { "x", "y", "aVariable", "xVariable", "aFunction(void)", "anotherFunction(void)",
- "fooFunction(int)", "xFunction(void)", "xOtherFunction(void)", "anEnumerationType", "xEnumerationType",
- "AStructType", "XStructType", "aFirstEnum", "aSecondEnum", "aThirdEnum", "xFirstEnum", "xSecondEnum",
- "xThirdEnum", "gGlobalInt" };
- assertCompletionResults(expected);
- }
-
- //void foo(int x)
- //{
- // int y = AM/*cursor*/
- //}
- public void testSingleName_Assignment_Prefix() throws Exception {
- final String[] expected = { "AMacro(x)" };
- assertCompletionResults(expected);
- }
-
- //#define STRUCT_C1
- ///*include*/
- //void gfunc() {C1 v; v.m/*cursor*/
- public void testLocalVariable() throws Exception {
- final String[] expected = { "m123", "m12", "m13" };
- assertCompletionResults(expected);
- }
-
- //#define STRUCT_C1
- ///*include*/
- //void gfunc() {C1 v; v.fMySelf->m/*cursor*/
- public void testLocalVariable_MemberVariable() throws Exception {
- final String[] expected = { "m123", "m12", "m13" };
- assertCompletionResults(expected);
- }
-
- //#define STRUCT_C1
- ///*include*/
- //void gfunc() {gfC1()->m/*cursor*/
- public void testGlobalFunction() throws Exception {
- final String[] expected = { "m123", "m12", "m13" };
- assertCompletionResults(expected);
- }
-
- //#define STRUCT_C1
- ///*include*/
- //void f() {gC/*cursor*/
- public void testGlobalVariables_GlobalScope() throws Exception {
- final String[] expected = { "gC1", "gC2", "gfC1(void)", "gfC2(void)" };
- assertCompletionResults(expected);
- }
-
- //#define STRUCT_C1
- ///*include*/
- //void foo() {gC/*cursor*/
- public void testGlobalVariables_FunctionScope() throws Exception {
- final String[] expected = { "gC1", "gC2", "gfC1(void)", "gfC2(void)" };
- assertCompletionResults(expected);
- }
-
- //#define STRUCT_C1
- ///*include*/
- //typedef struct {
- // enum E2 {e21, e22};
- //
- // C2* fMySelf;
- //
- // int m123;
- // int m12;
- // int m13;
- //} C2;
- //void f() {C2* cLocal1; while(true) {C1* cLocal2; cL/*cursor*/
- public void testLocalVariables_FunctionScope() throws Exception {
- final String[] expected = { "cLocal1", "cLocal2" };
- assertCompletionResults(expected);
- }
-
- //#define STRUCT_C1
- ///*include*/
- //void f() {C1* cLocal1; cLocal1->f/*cursor*/
- public void testDataMembers_FunctionScope() throws Exception {
- final String[] expected = { "fMySelf" };
- assertCompletionResults(expected);
- }
-
- //#define STRUCT_C1
- ///*include*/
- //void f() {gf/*cursor*/
- public void testGlobalFunctions_FunctionScope() throws Exception {
- final String[] expected = { "gfC1(void)", "gfC2(void)" };
- assertCompletionResults(expected);
- }
-
- //#define STRUCT_C1
- ///*include*/
- //typedef struct {} C2;
- //typedef union {} C3;
- //void f() {C/*cursor*/
- public void testTypes_FunctionScope() throws Exception {
- final String[] expected = { "C1", "C2", "C3" };
- assertCompletionResults(expected);
- }
-
- //#define STRUCT_C1
- ///*include*/
- //void f() {e/*cursor*/
- public void testEnums_FunctionScope() throws Exception {
- final String[] expected = { "e11", "e12", "e21", "e22" };
- assertCompletionResults(expected);
- }
-
- //#define STRUCT_C1
- ///*include*/
- //void f() {C1 c; (&c)->m/*cursor*/
- public void testAddressOf() throws Exception {
- final String[] expected = { "m123", "m12", "m13" };
- assertCompletionResults(expected);
- }
-
- //#define STRUCT_C1
- ///*include*/
- //void f() {C1* c; (*c).m/*cursor*/
- public void testDereferencingOperator1() throws Exception {
- final String[] expected = { "m123", "m12", "m13" };
- assertCompletionResults(expected);
- }
-
- //#define STRUCT_C1
- ///*include*/
- //void f() {C1** c; (**c).m/*cursor*/
- public void testDereferencingOperator2() throws Exception {
- final String[] expected = { "m123", "m12", "m13" };
- assertCompletionResults(expected);
- }
-
- //#define STRUCT_C1
- ///*include*/
- //void f() {C1** c; (*c)->m/*cursor*/
- public void testDereferencingOperator3() throws Exception {
- final String[] expected = { "m123", "m12", "m13" };
- assertCompletionResults(expected);
- }
-
- //#define STRUCT_C1
- ///*include*/
- //void f() {C1* c; c[0].m/*cursor*/
- public void testArrayAccessOperator1() throws Exception {
- final String[] expected = { "m123", "m12", "m13" };
- assertCompletionResults(expected);
- }
-
- //#define STRUCT_C1
- ///*include*/
- //void f() {C1** c; c[0][1].m/*cursor*/
- public void testArrayAccessOperator2() throws Exception {
- final String[] expected = { "m123", "m12", "m13" };
- assertCompletionResults(expected);
- }
-
- //#define STRUCT_C1
- ///*include*/
- //void f() {C1** c; c[0]->m/*cursor*/
- public void testArrayAccessOperator3() throws Exception {
- final String[] expected = { "m123", "m12", "m13" };
- assertCompletionResults(expected);
- }
-
- //#define STRUCT_C1
- ///*include*/
- //void f() {C1* c; (&c[0])->m/*cursor*/
- public void testArrayAccessOperator4() throws Exception {
- final String[] expected = { "m123", "m12", "m13" };
- assertCompletionResults(expected);
- }
-
- //#define STRUCT_C1
- ///*include*/
- //void f() {void* c; ((C1*)c)->m/*cursor*/
- public void testCasts1() throws Exception {
- final String[] expected = { "m123", "m12", "m13" };
- assertCompletionResults(expected);
- }
-
- //#define STRUCT_C1
- ///*include*/
- //void g(int a) {}; void f() {void* c; g(((C1*)c)->m/*cursor*/
- public void testCasts2() throws Exception {
- final String[] expected = { "m123", "m12", "m13" };
- assertCompletionResults(expected);
- }
-
- //#define STRUCT_C1
- ///*include*/
- //void f() {C1* c; c++->m/*cursor*/
- public void testPointerArithmetic1() throws Exception {
- final String[] expected = { "m123", "m12", "m13" };
- assertCompletionResults(expected);
- }
-
- //#define STRUCT_C1
- ///*include*/
- //void f() {C1* c; (*++c).m/*cursor*/
- public void testPointerArithmetic2() throws Exception {
- final String[] expected = { "m123", "m12", "m13" };
- assertCompletionResults(expected);
- }
-
- //#define STRUCT_C1
- ///*include*/
- //void f() {C1* c; c--->m/*cursor*/
- public void testPointerArithmetic3() throws Exception {
- final String[] expected = { "m123", "m12", "m13" };
- assertCompletionResults(expected);
- }
-
- //#define STRUCT_C1
- ///*include*/
- //void f() {C1 c; (&c+1)->m/*cursor*/
- public void testPointerArithmetic4() throws Exception {
- final String[] expected = { "m123", "m12", "m13" };
- assertCompletionResults(expected);
- }
-
- //#define STRUCT_C1
- ///*include*/
- //void f() {C1 c; (&c-1)->m/*cursor*/
- public void testPointerArithmetic5() throws Exception {
- final String[] expected = { "m123", "m12", "m13" };
- assertCompletionResults(expected);
- }
-
- //#define STRUCT_C1
- ///*include*/
- //void f() {int localVar=0; if (*cond && somefunc(&local/*cursor*/
- public void testNestedCalls() throws Exception {
- final String[] expected = { "localVar" };
- assertCompletionResults(expected);
- }
-
- //#define STRUCT_C1
- ///*include*/
- //int a[] = {1,2}; void f(int _0306_b) {_0306_b/*cursor*/
- public void testCuttingInput1() throws Exception {
- final String[] expected = { "_0306_b" };
- assertCompletionResults(expected);
- }
-
- //#define STRUCT_C1
- ///*include*/
- //int a[] = {1,2}; void f(int b) {int _0306_b[] = {2,3}; _0306_b/*cursor*/
- public void testCuttingInput2() throws Exception {
- final String[] expected = { "_0306_b" };
- assertCompletionResults(expected);
- }
-
- //#define STRUCT_C1
- ///*include*/
- //enum EnumType function() {int _031209_v; _031209/*cursor*/
- public void testDisturbingMacros() throws Exception {
- final String[] expected = { "_031209_v" };
- assertCompletionResults(expected);
- }
-
- // void test() {
- // int local;
- // switch(loc/*cursor*/
- public void testSwitchStatement() throws Exception {
- final String[] expected = { "local" };
- assertCompletionResults(expected);
- }
-
- // void test() {
- // int local;
- // while(loc/*cursor*/
- public void testWhileStatement() throws Exception {
- final String[] expected = { "local" };
- assertCompletionResults(expected);
- }
-
- // void test() {
- // int local;
- // for(loc/*cursor*/
- public void testForStatement1() throws Exception {
- final String[] expected = { "local" };
- assertCompletionResults(expected);
- }
-
- // void test() {
- // int local;
- // for(int i=0;i<loc/*cursor*/
- public void testForStatement2() throws Exception {
- final String[] expected = { "local" };
- assertCompletionResults(expected);
- }
-
- // void test() {
- // int local;
- // for(int i=0;i<local;loc/*cursor*/
- public void testForStatement3() throws Exception {
- final String[] expected = { "local" };
- assertCompletionResults(expected);
- }
-
- // #define INIT_PTR(PtrName) (PtrName) = 0;
- // struct CCApp {
- // int pIShell;
- // };
- //
- // int main(void) {
- // struct CCApp *pThis = 0;
- // INIT_PTR(pTh/*cursor*/);
- // }
- public void testCompletionInMacroArguments1_Bug200208() throws Exception {
- final String[] expected = { "pThis" };
- assertCompletionResults(expected);
- }
-
- // #define INIT_PTR(PtrName) (PtrName) = 0;
- // #define COPY_PTR(pTarget, pSource) (pTarget) = (pSource)
- //
- // struct CCApp {
- // int pIShell;
- // };
- //
- // int main(void) {
- // struct CCApp *pThis = 0;
- //
- // INIT_PTR(pThis);
- // COPY_PTR(pThis->pIShell, pThis->pI/*cursor*/)
- // }
- public void testCompletionInMacroArguments2_Bug200208() throws Exception {
- final String[] expected = { "pIShell" };
- assertCompletionResults(expected);
- }
-
- // enum {enum0, enum1, enum2};
- // typedef struct {
- // int byte1;
- // int byte2;
- // } MYSTRUCT_TYPE;
- // static const MYSTRUCT_TYPE myArrayOfStructs[] = {{enum/*cursor*/
- public void testCompletionInInitializerList_Bug230389() throws Exception {
- final String[] expected = { "enum0", "enum1", "enum2" };
- assertCompletionResults(expected);
- }
-
- // void test() {struct s206450 x; x./*cursor*/
- public void testNestedAnonymousStructs_Bug206450() throws Exception {
- final String[] expected = { "a1", "a2", "u1", "u2", "a4", "b" };
- assertCompletionResults(expected);
- }
-
- // #define bug204758
- ///*include*/
- // void test() {_f204758/*cursor*/
- public void testTypedefToAnonymous_Bug204758() throws Exception {
- final String[] expected = { "_f204758(_e204758)" };
- assertCompletionResults(expected);
- }
-
- // int main(void) {
- // struct {
- // void (*bar)(p1, p2, p3...);
- // } foo;
- // foo.bar(/*cursor*/
- public void testClassCastException_Bug517954() throws Exception {
- // Just check that no exception is thrown while invoking completion.
- assertContentAssistResults(fCursorOffset, new String[] {}, DEFAULT_FLAGS | ALLOW_EXTRA_RESULTS, CompareType.ID);
- }
-}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/ConstructorReference_CompletionTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/ConstructorReference_CompletionTest.java
new file mode 100644
index 00000000000..a5417b0804e
--- /dev/null
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/ConstructorReference_CompletionTest.java
@@ -0,0 +1,112 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2012 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Rational Software - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.ui.tests.text.contentassist2;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * @author hamer
+ *
+ * Testing Constructor_Reference
+ * Bug#
+ *
+ */
+public class ConstructorReference_CompletionTest extends CompletionProposalsBaseTest {
+
+ private final String fileName = "CompletionTestStart35.cpp";
+ private final String fileFullPath = "resources/contentassist/" + fileName;
+ private final String headerFileName = "CompletionTestStart.h";
+ private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
+ private final String expectedPrefix = "";
+ private final String[] expectedResults = {
+ // missing proposals:
+ "xOtherClass(char*)", "xOtherClass(int)" };
+
+ public ConstructorReference_CompletionTest(String name) {
+ super(name);
+ // unknown failure
+ setExpectFailure(77777);
+ }
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(ConstructorReference_CompletionTest.class.getName());
+ suite.addTest(new ConstructorReference_CompletionTest("testCompletionProposals"));
+ return suite;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
+ */
+ @Override
+ protected int getCompletionPosition() {
+ return getBuffer().indexOf("( ") + 2;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
+ */
+ @Override
+ protected String getExpectedPrefix() {
+ return expectedPrefix;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
+ */
+ @Override
+ protected String[] getExpectedResultsValues() {
+ return expectedResults;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
+ */
+ @Override
+ protected String getFileName() {
+ return fileName;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
+ */
+ @Override
+ protected String getFileFullPath() {
+ return fileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
+ */
+ @Override
+ protected String getHeaderFileFullPath() {
+ return headerFileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
+ */
+ @Override
+ protected String getHeaderFileName() {
+ return headerFileName;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.ui.tests.text.contentassist.CompletionProposalsBaseTest#getFunctionOrConstructorName()
+ */
+ protected String getFunctionOrConstructorName() {
+ return "xOtherClass";
+ }
+
+}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/ContentAssist2TestSuite.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/ContentAssist2TestSuite.java
index ec655b4140c..71f20875d4d 100644
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/ContentAssist2TestSuite.java
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/ContentAssist2TestSuite.java
@@ -26,33 +26,77 @@ import org.junit.runners.Suite;
@RunWith(Suite.class)
@Suite.SuiteClasses({
- CompletionTest_AnonymousTypes.class, CompletionTest_ArgumentType_Prefix.class,
- CompletionTest_ArgumentType_Prefix2.class, CompletionTest_ClassReference_NoPrefix.class,
- CompletionTest_ClassReference_Prefix.class, CompletionTest_ConstructorReference.class,
- CompletionTest_ExceptionReference_NoPrefix.class, CompletionTest_ExceptionReference_Prefix.class,
- CompletionTest_FieldType_NoPrefix.class, CompletionTest_FieldType_NoPrefix2.class,
- CompletionTest_FieldType_Prefix.class, CompletionTest_FunctionReference_Prefix.class,
- CompletionTest_MacroRef_NoPrefix.class, CompletionTest_MacroRef_Prefix.class,
- CompletionTest_MemberReference_Arrow_NoPrefix.class, CompletionTest_MemberReference_Arrow_NoPrefix2.class,
- CompletionTest_MemberReference_Arrow_NoPrefix3.class, CompletionTest_MemberReference_Arrow_Prefix.class,
- CompletionTest_MemberReference_Arrow_Prefix2.class, CompletionTest_MemberReference_Dot_NoPrefix.class,
- CompletionTest_MemberReference_Dot_Prefix.class, CompletionTest_NamespaceRef_NoPrefix.class,
- CompletionTest_NamespaceRef_Prefix.class, CompletionTest_NewTypeReference_NoPrefix.class,
- CompletionTest_NewTypeReference_Prefix.class, CompletionTest_ScopedReference_NonCodeScope.class,
- CompletionTest_ScopedReference_NoPrefix.class, CompletionTest_ScopedReference_Prefix.class,
- CompletionTest_SingleName_Method_NoPrefix.class, CompletionTest_SingleName_Method_Prefix.class,
- CompletionTest_SingleName_NoPrefix.class, CompletionTest_SingleName_Prefix.class,
- CompletionTest_SingleName_Prefix2.class, CompletionTest_TypeDef_NoPrefix.class,
- CompletionTest_TypeDef_Prefix.class, CompletionTest_TypeRef_NoPrefix.class, CompletionTest_TypeRef_Prefix.class,
- CompletionTest_VariableType_NestedPrefix.class, CompletionTest_VariableType_NoPrefix.class,
- CompletionTest_VariableType_Prefix.class,
-
- CompletionTests.class, HelpProposalTests.class, CompletionTests_PlainC.class, ParameterHintTests.class,
- CPPParameterGuessingTests.class, CParameterGuessingTests.class,
-
- ShowCamelCasePreferenceTest.class,
-
- TemplateProposalTest.class,
+ AnonymousTypes_CompletionTest.class, //
+ ArgumentType_Prefix_CompletionTest.class, //
+
+ ArgumentType_Prefix2_CompletionTest.class, //
+ ClassReference_NoPrefix_CompletionTest.class, //
+
+ ClassReference_Prefix_CompletionTest.class, //
+ ConstructorReference_CompletionTest.class, //
+
+ ExceptionReference_NoPrefix_CompletionTest.class, //
+ ExceptionReference_Prefix_CompletionTest.class, //
+
+ FieldType_NoPrefix_CompletionTest.class, //
+ FieldType_NoPrefix2_CompletionTest.class, //
+
+ FieldType_Prefix_CompletionTest.class, //
+ FunctionReference_Prefix_CompletionTest.class, //
+
+ MacroRef_NoPrefix_CompletionTest.class, //
+ MacroRef_Prefix_CompletionTest.class, //
+
+ MemberReference_Arrow_NoPrefix_CompletionTest.class, //
+ MemberReference_Arrow_NoPrefix2_CompletionTest.class, //
+
+ MemberReference_Arrow_NoPrefix3_CompletionTest.class, //
+ MemberReference_Arrow_Prefix_CompletionTest.class, //
+
+ MemberReference_Arrow_Prefix2_CompletionTest.class, //
+ MemberReference_Dot_NoPrefix_CompletionTest.class, //
+
+ MemberReference_Dot_Prefix_CompletionTest.class, //
+ NamespaceRef_NoPrefix_CompletionTest.class, //
+
+ NamespaceRef_Prefix_CompletionTest.class, //
+ NewTypeReference_NoPrefix_CompletionTest.class, //
+
+ NewTypeReference_Prefix_CompletionTest.class, //
+ ScopedReference_NonCodeScope_CompletionTest.class, //
+
+ ScopedReference_NoPrefix_CompletionTest.class, //
+ ScopedReference_Prefix_CompletionTest.class, //
+
+ SingleName_Method_NoPrefix_CompletionTest.class, //
+ SingleName_Method_Prefix_CompletionTest.class, //
+
+ SingleName_NoPrefix_CompletionTest.class, //
+ SingleName_Prefix_CompletionTest.class, //
+
+ SingleName_Prefix2_CompletionTest.class, //
+ TypeDef_NoPrefix_CompletionTest.class, //
+
+ TypeDef_Prefix_CompletionTest.class, //
+ TypeRef_NoPrefix_CompletionTest.class, //
+ TypeRef_Prefix_CompletionTest.class, //
+
+ VariableType_NestedPrefix_CompletionTest.class, //
+ VariableType_NoPrefix_CompletionTest.class, //
+
+ VariableType_Prefix_CompletionTest.class, //
+
+ CompletionTests.class, //
+ HelpProposalTests.class, //
+ PlainC_CompletionTests.class, //
+ ParameterHintTests.class, //
+
+ CPPParameterGuessingTests.class, //
+ CParameterGuessingTests.class, //
+
+ ShowCamelCasePreferenceTest.class, //
+
+ TemplateProposalTest.class, //
})
public class ContentAssist2TestSuite {
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/ExceptionReference_NoPrefix_CompletionTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/ExceptionReference_NoPrefix_CompletionTest.java
new file mode 100644
index 00000000000..abedb4a9271
--- /dev/null
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/ExceptionReference_NoPrefix_CompletionTest.java
@@ -0,0 +1,104 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2012 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Rational Software - Initial API and implementation
+ * Bryan Wilkinson (QNX)
+ *******************************************************************************/
+package org.eclipse.cdt.ui.tests.text.contentassist2;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * @author hamer
+ *
+ * Testing Exception_Reference, with No prefix
+ * Bug#50640 : Wrong completion kind when expecting an exception
+ *
+ */
+public class ExceptionReference_NoPrefix_CompletionTest extends CompletionProposalsBaseTest {
+
+ private final String fileName = "CompletionTestStart23.cpp";
+ private final String fileFullPath = "resources/contentassist/" + fileName;
+ private final String headerFileName = "CompletionTestStart.h";
+ private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
+ private final String expectedPrefix = "";
+ private final String[] expectedResults = { "AStruct", "XStruct", "aClass", "aNamespace", "anEnumeration",
+ "anotherClass", "xEnumeration", "xNamespace", "xOtherClass" };
+
+ public ExceptionReference_NoPrefix_CompletionTest(String name) {
+ super(name);
+ // https://bugs.eclipse.org/bugs/show_bug.cgi?id=169860
+ }
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(ExceptionReference_NoPrefix_CompletionTest.class.getName());
+ suite.addTest(new ExceptionReference_NoPrefix_CompletionTest("testCompletionProposals"));
+ return suite;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
+ */
+ @Override
+ protected int getCompletionPosition() {
+ return getBuffer().indexOf(" ") + 2;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
+ */
+ @Override
+ protected String getExpectedPrefix() {
+ return expectedPrefix;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
+ */
+ @Override
+ protected String[] getExpectedResultsValues() {
+ return expectedResults;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
+ */
+ @Override
+ protected String getFileName() {
+ return fileName;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
+ */
+ @Override
+ protected String getFileFullPath() {
+ return fileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
+ */
+ @Override
+ protected String getHeaderFileFullPath() {
+ return headerFileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
+ */
+ @Override
+ protected String getHeaderFileName() {
+ return headerFileName;
+ }
+
+}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/ExceptionReference_Prefix_CompletionTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/ExceptionReference_Prefix_CompletionTest.java
new file mode 100644
index 00000000000..8f3b06c7ef2
--- /dev/null
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/ExceptionReference_Prefix_CompletionTest.java
@@ -0,0 +1,104 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2012 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Rational Software - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.ui.tests.text.contentassist2;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * @author hamer
+ *
+ * Testing Exception_Reference, with prefix
+ * Bug#50640 : Wrong completion kind when expecting an exception
+ *
+ */
+public class ExceptionReference_Prefix_CompletionTest extends CompletionProposalsBaseTest {
+
+ private final String fileName = "CompletionTestStart22.cpp";
+ private final String fileFullPath = "resources/contentassist/" + fileName;
+ private final String headerFileName = "CompletionTestStart.h";
+ private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
+ private final String expectedPrefix = "a";
+ private final String[] expectedResults = { "aClass", "anotherClass", "aNamespace", "anEnumeration", "AStruct",
+ "AMacro(x)" };
+
+ public ExceptionReference_Prefix_CompletionTest(String name) {
+ super(name);
+ // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=109724
+ // setExpectFailure(109724);
+ }
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(ExceptionReference_Prefix_CompletionTest.class.getName());
+ suite.addTest(new ExceptionReference_Prefix_CompletionTest("testCompletionProposals"));
+ return suite;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
+ */
+ @Override
+ protected int getCompletionPosition() {
+ return getBuffer().indexOf(" a ") + 2;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
+ */
+ @Override
+ protected String getExpectedPrefix() {
+ return expectedPrefix;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
+ */
+ @Override
+ protected String[] getExpectedResultsValues() {
+ return expectedResults;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
+ */
+ @Override
+ protected String getFileName() {
+ return fileName;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
+ */
+ @Override
+ protected String getFileFullPath() {
+ return fileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
+ */
+ @Override
+ protected String getHeaderFileFullPath() {
+ return headerFileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
+ */
+ @Override
+ protected String getHeaderFileName() {
+ return headerFileName;
+ }
+
+}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/FieldType_NoPrefix2_CompletionTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/FieldType_NoPrefix2_CompletionTest.java
new file mode 100644
index 00000000000..ce800dbfd0e
--- /dev/null
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/FieldType_NoPrefix2_CompletionTest.java
@@ -0,0 +1,104 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2012 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Rational Software - Initial API and implementation
+ * Bryan Wilkinson (QNX)
+ *******************************************************************************/
+package org.eclipse.cdt.ui.tests.text.contentassist2;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * @author hamer
+ *
+ * Testing Class scope, declaration start, with NO prefix
+ * Bug#50344 :Wrong completion in Class scope if before the first declaration
+ *
+ */
+public class FieldType_NoPrefix2_CompletionTest extends CompletionProposalsBaseTest {
+
+ private final String fileName = "CompletionTestStart13.h";
+ private final String fileFullPath = "resources/contentassist/" + fileName;
+ private final String headerFileName = "CompletionTestStart.h";
+ private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
+ private final String expectedPrefix = "";
+ private final String[] expectedResults = { "AStruct", "XStruct", "aClass", "aNamespace", "aThirdClass",
+ "anEnumeration", "anotherClass", "xEnumeration", "xNamespace", "xOtherClass" };
+
+ public FieldType_NoPrefix2_CompletionTest(String name) {
+ super(name);
+ // https://bugs.eclipse.org/bugs/show_bug.cgi?id=169860
+ }
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(FieldType_NoPrefix2_CompletionTest.class.getName());
+ suite.addTest(new FieldType_NoPrefix2_CompletionTest("testCompletionProposals"));
+ return suite;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
+ */
+ @Override
+ protected int getCompletionPosition() {
+ return getBuffer().indexOf(" ") + 3;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
+ */
+ @Override
+ protected String getExpectedPrefix() {
+ return expectedPrefix;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
+ */
+ @Override
+ protected String[] getExpectedResultsValues() {
+ return expectedResults;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
+ */
+ @Override
+ protected String getFileName() {
+ return fileName;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
+ */
+ @Override
+ protected String getFileFullPath() {
+ return fileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
+ */
+ @Override
+ protected String getHeaderFileFullPath() {
+ return headerFileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
+ */
+ @Override
+ protected String getHeaderFileName() {
+ return headerFileName;
+ }
+
+}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/FieldType_NoPrefix_CompletionTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/FieldType_NoPrefix_CompletionTest.java
new file mode 100644
index 00000000000..a81766c74d9
--- /dev/null
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/FieldType_NoPrefix_CompletionTest.java
@@ -0,0 +1,102 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2012 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Rational Software - Initial API and implementation
+ * Bryan Wilkinson (QNX)
+ *******************************************************************************/
+package org.eclipse.cdt.ui.tests.text.contentassist2;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * @author hamer
+ *
+ * Testing Field_Type, with NO prefix
+ *
+ */
+public class FieldType_NoPrefix_CompletionTest extends CompletionProposalsBaseTest {
+ private final String fileName = "CompletionTestStart12.h";
+ private final String fileFullPath = "resources/contentassist/" + fileName;
+ private final String headerFileName = "CompletionTestStart.h";
+ private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
+ private final String expectedPrefix = "";
+ private final String[] expectedResults = { "AStruct", "XStruct", "aClass", "aNamespace", "aThirdClass",
+ "anEnumeration", "anotherClass", "xEnumeration", "xNamespace", "xOtherClass" };
+
+ public FieldType_NoPrefix_CompletionTest(String name) {
+ super(name);
+ // https://bugs.eclipse.org/bugs/show_bug.cgi?id=169860
+ }
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(FieldType_NoPrefix_CompletionTest.class.getName());
+ suite.addTest(new FieldType_NoPrefix_CompletionTest("testCompletionProposals"));
+ return suite;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
+ */
+ @Override
+ protected int getCompletionPosition() {
+ return getBuffer().indexOf(" ") + 2;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
+ */
+ @Override
+ protected String getExpectedPrefix() {
+ return expectedPrefix;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
+ */
+ @Override
+ protected String[] getExpectedResultsValues() {
+ return expectedResults;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
+ */
+ @Override
+ protected String getFileName() {
+ return fileName;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
+ */
+ @Override
+ protected String getFileFullPath() {
+ return fileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
+ */
+ @Override
+ protected String getHeaderFileFullPath() {
+ return headerFileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
+ */
+ @Override
+ protected String getHeaderFileName() {
+ return headerFileName;
+ }
+
+}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/FieldType_Prefix_CompletionTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/FieldType_Prefix_CompletionTest.java
new file mode 100644
index 00000000000..f215c198c4f
--- /dev/null
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/FieldType_Prefix_CompletionTest.java
@@ -0,0 +1,102 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2012 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Rational Software - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.ui.tests.text.contentassist2;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * @author hamer
+ *
+ * Testing Field_Type completion kind , with a prefix
+ *
+ */
+public class FieldType_Prefix_CompletionTest extends CompletionProposalsBaseTest {
+ private final String fileName = "CompletionTestStart4.h";
+ private final String fileFullPath = "resources/contentassist/" + fileName;
+ private final String headerFileName = "CompletionTestStart.h";
+ private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
+ private final String expectedPrefix = "a";
+ private final String[] expectedResults = { "aClass", "anotherClass", "aThirdClass", "aNamespace", "anEnumeration",
+ "AStruct", "AMacro(x)" };
+
+ public FieldType_Prefix_CompletionTest(String name) {
+ super(name);
+ // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=109724
+ // setExpectFailure(109724);
+ }
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(FieldType_Prefix_CompletionTest.class.getName());
+ suite.addTest(new FieldType_Prefix_CompletionTest("testCompletionProposals"));
+ return suite;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
+ */
+ @Override
+ protected int getCompletionPosition() {
+ return getBuffer().indexOf(" a ") + 2;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
+ */
+ @Override
+ protected String getExpectedPrefix() {
+ return expectedPrefix;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
+ */
+ @Override
+ protected String[] getExpectedResultsValues() {
+ return expectedResults;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
+ */
+ @Override
+ protected String getFileName() {
+ return fileName;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
+ */
+ @Override
+ protected String getFileFullPath() {
+ return fileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
+ */
+ @Override
+ protected String getHeaderFileFullPath() {
+ return headerFileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
+ */
+ @Override
+ protected String getHeaderFileName() {
+ return headerFileName;
+ }
+
+}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/FunctionReference_Prefix_CompletionTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/FunctionReference_Prefix_CompletionTest.java
new file mode 100644
index 00000000000..7468f5bd5c1
--- /dev/null
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/FunctionReference_Prefix_CompletionTest.java
@@ -0,0 +1,110 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2012 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Rational Software - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.ui.tests.text.contentassist2;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * @author hamer
+ *
+ * Testing Single_Name_Reference in parameter passing
+ * Bug#
+ *
+ */
+public class FunctionReference_Prefix_CompletionTest extends CompletionProposalsBaseTest {
+ private final String fileName = "CompletionTestStart36.cpp";
+ private final String fileFullPath = "resources/contentassist/" + fileName;
+ private final String headerFileName = "CompletionTestStart.h";
+ private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
+ private final String expectedPrefix = "x";
+ private final String[] expectedResults = { "xLocal : int", "xAClassField : float", "xVariable : int",
+ "xAClassMethod(int x) : void", "xFunction(void) : bool", "xOtherFunction(void) : void", "xNamespace",
+ "xOtherClass", "xFirstEnum", "xSecondEnum", "xThirdEnum", "xEnumeration", "XMacro(x, y)", "XStruct" };
+
+ public FunctionReference_Prefix_CompletionTest(String name) {
+ super(name);
+ // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=109724
+ //setExpectFailure(109724);
+ }
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(FunctionReference_Prefix_CompletionTest.class.getName());
+ suite.addTest(new FunctionReference_Prefix_CompletionTest("testCompletionProposals"));
+ return suite;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
+ */
+ @Override
+ protected int getCompletionPosition() {
+ return getBuffer().indexOf(" x ") + 2;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
+ */
+ @Override
+ protected String getExpectedPrefix() {
+ return expectedPrefix;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
+ */
+ @Override
+ protected String[] getExpectedResultsValues() {
+ return expectedResults;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
+ */
+ @Override
+ protected String getFileName() {
+ return fileName;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
+ */
+ @Override
+ protected String getFileFullPath() {
+ return fileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
+ */
+ @Override
+ protected String getHeaderFileFullPath() {
+ return headerFileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
+ */
+ @Override
+ protected String getHeaderFileName() {
+ return headerFileName;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.ui.tests.text.contentassist.CompletionProposalsBaseTest#getFunctionOrConstructorName()
+ */
+ protected String getFunctionOrConstructorName() {
+ return "xAClassMethod";
+ }
+}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/MacroRef_NoPrefix_CompletionTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/MacroRef_NoPrefix_CompletionTest.java
new file mode 100644
index 00000000000..dbfacb38ef6
--- /dev/null
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/MacroRef_NoPrefix_CompletionTest.java
@@ -0,0 +1,105 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2011 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Rational Software - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.ui.tests.text.contentassist2;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * @author hamer
+ *
+ * Testing Macro_Reference, with no prefix
+ * Bug#50487 :Wrong completion kind and prefix after "#ifdef"
+ *
+ */
+public class MacroRef_NoPrefix_CompletionTest extends CompletionProposalsBaseTest {
+
+ private final String fileName = "CompletionTestStart26.cpp";
+ private final String fileFullPath = "resources/contentassist/" + fileName;
+ private final String headerFileName = "CompletionTestStart.h";
+ private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
+ private final String expectedPrefix = "";
+ private final String[] expectedResults = { "AMacro(x)", "DEBUG", "XMacro(x, y)", "__CDT_PARSER__", "__COUNTER__",
+ "__DATE__", "__FILE__", "__LINE__", "__STDC__", "__TIME__", "__builtin_va_arg(ap, type)",
+ "__builtin_offsetof(T, m)", "__builtin_types_compatible_p(x, y)", "__complex__", "__cplusplus",
+ "__extension__", "__has_include", "__has_include_next", "__imag__", "__null", "__offsetof__(x)", "__real__",
+ "__stdcall", "__thread", };
+
+ public MacroRef_NoPrefix_CompletionTest(String name) {
+ super(name);
+ }
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(MacroRef_NoPrefix_CompletionTest.class.getName());
+ suite.addTest(new MacroRef_NoPrefix_CompletionTest("testCompletionProposals"));
+ return suite;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
+ */
+ @Override
+ protected int getCompletionPosition() {
+ return getBuffer().indexOf("#ifdef ") + 7;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
+ */
+ @Override
+ protected String getExpectedPrefix() {
+ return expectedPrefix;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
+ */
+ @Override
+ protected String[] getExpectedResultsValues() {
+ return expectedResults;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
+ */
+ @Override
+ protected String getFileName() {
+ return fileName;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
+ */
+ @Override
+ protected String getFileFullPath() {
+ return fileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
+ */
+ @Override
+ protected String getHeaderFileFullPath() {
+ return headerFileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
+ */
+ @Override
+ protected String getHeaderFileName() {
+ return headerFileName;
+ }
+
+}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/MacroRef_Prefix_CompletionTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/MacroRef_Prefix_CompletionTest.java
new file mode 100644
index 00000000000..bef8ab0f53b
--- /dev/null
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/MacroRef_Prefix_CompletionTest.java
@@ -0,0 +1,101 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2012 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Rational Software - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.ui.tests.text.contentassist2;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * @author hamer
+ *
+ * Testing Macro_Reference, with no prefix
+ * Bug#50487 :Wrong completion kind and prefix after "#ifdef"
+ *
+ */
+public class MacroRef_Prefix_CompletionTest extends CompletionProposalsBaseTest {
+
+ private final String fileName = "CompletionTestStart27.cpp";
+ private final String fileFullPath = "resources/contentassist/" + fileName;
+ private final String headerFileName = "CompletionTestStart.h";
+ private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
+ private final String expectedPrefix = "D";
+ private final String[] expectedResults = { "DEBUG" };
+
+ public MacroRef_Prefix_CompletionTest(String name) {
+ super(name);
+ }
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(MacroRef_Prefix_CompletionTest.class.getName());
+ suite.addTest(new MacroRef_Prefix_CompletionTest("testCompletionProposals"));
+ return suite;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
+ */
+ @Override
+ protected int getCompletionPosition() {
+ return getBuffer().indexOf("ifdef D ") + 7;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
+ */
+ @Override
+ protected String getExpectedPrefix() {
+ return expectedPrefix;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
+ */
+ @Override
+ protected String[] getExpectedResultsValues() {
+ return expectedResults;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
+ */
+ @Override
+ protected String getFileName() {
+ return fileName;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
+ */
+ @Override
+ protected String getFileFullPath() {
+ return fileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
+ */
+ @Override
+ protected String getHeaderFileFullPath() {
+ return headerFileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
+ */
+ @Override
+ protected String getHeaderFileName() {
+ return headerFileName;
+ }
+
+}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/MemberReference_Arrow_NoPrefix2_CompletionTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/MemberReference_Arrow_NoPrefix2_CompletionTest.java
new file mode 100644
index 00000000000..462a7e34f9d
--- /dev/null
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/MemberReference_Arrow_NoPrefix2_CompletionTest.java
@@ -0,0 +1,96 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2012 Symbian Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Symbian - Initial implementation
+ *******************************************************************************/
+package org.eclipse.cdt.ui.tests.text.contentassist2;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * Test operator is followed during member reference
+ */
+public class MemberReference_Arrow_NoPrefix2_CompletionTest extends CompletionProposalsBaseTest {
+ private final String fileName = "CompletionTestStart41.cpp";
+ private final String fileFullPath = "resources/contentassist/" + fileName;
+ private final String headerFileName = "CompletionTestStart41.h";
+ private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
+ private final String expectedPrefix = "";
+ private final String[] expectedResults = { "A", "foo(void) : void", "operator ->(void) : B *" };
+
+ public MemberReference_Arrow_NoPrefix2_CompletionTest(String name) {
+ super(name);
+ }
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(MemberReference_Arrow_NoPrefix2_CompletionTest.class.getName());
+ suite.addTest(new MemberReference_Arrow_NoPrefix2_CompletionTest("testCompletionProposals"));
+ return suite;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
+ */
+ @Override
+ protected int getCompletionPosition() {
+ return getBuffer().indexOf(" ap-> ") + 5;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
+ */
+ @Override
+ protected String getExpectedPrefix() {
+ return expectedPrefix;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
+ */
+ @Override
+ protected String[] getExpectedResultsValues() {
+ return expectedResults;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
+ */
+ @Override
+ protected String getFileName() {
+ return fileName;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
+ */
+ @Override
+ protected String getFileFullPath() {
+ return fileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
+ */
+ @Override
+ protected String getHeaderFileFullPath() {
+ return headerFileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
+ */
+ @Override
+ protected String getHeaderFileName() {
+ return headerFileName;
+ }
+
+}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/MemberReference_Arrow_NoPrefix3_CompletionTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/MemberReference_Arrow_NoPrefix3_CompletionTest.java
new file mode 100644
index 00000000000..f354e6c5c88
--- /dev/null
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/MemberReference_Arrow_NoPrefix3_CompletionTest.java
@@ -0,0 +1,96 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2012 Symbian Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Symbian - Initial implementation
+ *******************************************************************************/
+package org.eclipse.cdt.ui.tests.text.contentassist2;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * Testing operator is not followed on pointer to class with overloaded operator ->
+ */
+public class MemberReference_Arrow_NoPrefix3_CompletionTest extends CompletionProposalsBaseTest {
+ private final String fileName = "CompletionTestStart42.cpp";
+ private final String fileFullPath = "resources/contentassist/" + fileName;
+ private final String headerFileName = "CompletionTestStart41.h";
+ private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
+ private final String expectedPrefix = "";
+ private final String[] expectedResults = { "B", "bar(void) : void" };
+
+ public MemberReference_Arrow_NoPrefix3_CompletionTest(String name) {
+ super(name);
+ }
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(MemberReference_Arrow_NoPrefix3_CompletionTest.class.getName());
+ suite.addTest(new MemberReference_Arrow_NoPrefix3_CompletionTest("testCompletionProposals"));
+ return suite;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
+ */
+ @Override
+ protected int getCompletionPosition() {
+ return getBuffer().indexOf("a->") + 3;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
+ */
+ @Override
+ protected String getExpectedPrefix() {
+ return expectedPrefix;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
+ */
+ @Override
+ protected String[] getExpectedResultsValues() {
+ return expectedResults;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
+ */
+ @Override
+ protected String getFileName() {
+ return fileName;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
+ */
+ @Override
+ protected String getFileFullPath() {
+ return fileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
+ */
+ @Override
+ protected String getHeaderFileFullPath() {
+ return headerFileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
+ */
+ @Override
+ protected String getHeaderFileName() {
+ return headerFileName;
+ }
+
+}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/MemberReference_Arrow_NoPrefix_CompletionTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/MemberReference_Arrow_NoPrefix_CompletionTest.java
new file mode 100644
index 00000000000..eec1ac2b2fa
--- /dev/null
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/MemberReference_Arrow_NoPrefix_CompletionTest.java
@@ -0,0 +1,103 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2012 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Rational Software - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.ui.tests.text.contentassist2;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * @author hamer
+ *
+ * Testing Member_Reference, with NO prefix
+ * After an ->
+ *
+ */
+
+public class MemberReference_Arrow_NoPrefix_CompletionTest extends CompletionProposalsBaseTest {
+ private final String fileName = "CompletionTestStart10.cpp";
+ private final String fileFullPath = "resources/contentassist/" + fileName;
+ private final String headerFileName = "CompletionTestStart.h";
+ private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
+ private final String expectedPrefix = "";
+ private final String[] expectedResults = { "aField : int", "xAClassField : float", "aMethod(void) : int",
+ "xAClassMethod(int x) : void", "aClass" // aClass is valid
+ };
+
+ public MemberReference_Arrow_NoPrefix_CompletionTest(String name) {
+ super(name);
+ }
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(MemberReference_Arrow_NoPrefix_CompletionTest.class.getName());
+ suite.addTest(new MemberReference_Arrow_NoPrefix_CompletionTest("testCompletionProposals"));
+ return suite;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
+ */
+ @Override
+ protected int getCompletionPosition() {
+ return getBuffer().indexOf(" c-> ") + 4;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
+ */
+ @Override
+ protected String getExpectedPrefix() {
+ return expectedPrefix;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
+ */
+ @Override
+ protected String[] getExpectedResultsValues() {
+ return expectedResults;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
+ */
+ @Override
+ protected String getFileName() {
+ return fileName;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
+ */
+ @Override
+ protected String getFileFullPath() {
+ return fileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
+ */
+ @Override
+ protected String getHeaderFileFullPath() {
+ return headerFileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
+ */
+ @Override
+ protected String getHeaderFileName() {
+ return headerFileName;
+ }
+
+}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/MemberReference_Arrow_Prefix2_CompletionTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/MemberReference_Arrow_Prefix2_CompletionTest.java
new file mode 100644
index 00000000000..40dd4315e9a
--- /dev/null
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/MemberReference_Arrow_Prefix2_CompletionTest.java
@@ -0,0 +1,101 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2012 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Rational Software - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.ui.tests.text.contentassist2;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * @author hamer
+ *
+ * Testing Member_Reference, with a prefix
+ * Complex Context: Function return value: foo()->a(CTRL+SPACE)
+ *
+ */
+public class MemberReference_Arrow_Prefix2_CompletionTest extends CompletionProposalsBaseTest {
+ private final String fileName = "CompletionTestStart7.cpp";
+ private final String fileFullPath = "resources/contentassist/" + fileName;
+ private final String headerFileName = "CompletionTestStart.h";
+ private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
+ private final String expectedPrefix = "a";
+ private final String[] expectedResults = { "aClass", // aClass is valid
+ "aField : int", "aMethod(void) : int" };
+
+ public MemberReference_Arrow_Prefix2_CompletionTest(String name) {
+ super(name);
+ }
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(MemberReference_Arrow_Prefix2_CompletionTest.class.getName());
+ suite.addTest(new MemberReference_Arrow_Prefix2_CompletionTest("testCompletionProposals"));
+ return suite;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
+ */
+ @Override
+ protected int getCompletionPosition() {
+ return getBuffer().indexOf("->a ") + 3;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
+ */
+ @Override
+ protected String getExpectedPrefix() {
+ return expectedPrefix;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
+ */
+ @Override
+ protected String[] getExpectedResultsValues() {
+ return expectedResults;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
+ */
+ @Override
+ protected String getFileName() {
+ return fileName;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
+ */
+ @Override
+ protected String getFileFullPath() {
+ return fileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
+ */
+ @Override
+ protected String getHeaderFileFullPath() {
+ return headerFileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
+ */
+ @Override
+ protected String getHeaderFileName() {
+ return headerFileName;
+ }
+
+}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/MemberReference_Arrow_Prefix_CompletionTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/MemberReference_Arrow_Prefix_CompletionTest.java
new file mode 100644
index 00000000000..5acd64dd3f7
--- /dev/null
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/MemberReference_Arrow_Prefix_CompletionTest.java
@@ -0,0 +1,101 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2012 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Rational Software - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.ui.tests.text.contentassist2;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * @author hamer
+ *
+ * Testing Member_Reference, with a prefix
+ * After an ->
+ *
+ */
+public class MemberReference_Arrow_Prefix_CompletionTest extends CompletionProposalsBaseTest {
+ private final String fileName = "CompletionTestStart6.cpp";
+ private final String fileFullPath = "resources/contentassist/" + fileName;
+ private final String headerFileName = "CompletionTestStart.h";
+ private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
+ private final String expectedPrefix = "a";
+ private final String[] expectedResults = { "aField : int", "aMethod(void) : int", "aClass" // aClass is valid
+ };
+
+ public MemberReference_Arrow_Prefix_CompletionTest(String name) {
+ super(name);
+ }
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(MemberReference_Arrow_Prefix_CompletionTest.class.getName());
+ suite.addTest(new MemberReference_Arrow_Prefix_CompletionTest("testCompletionProposals"));
+ return suite;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
+ */
+ @Override
+ protected int getCompletionPosition() {
+ return getBuffer().indexOf(" c->a ") + 5;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
+ */
+ @Override
+ protected String getExpectedPrefix() {
+ return expectedPrefix;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
+ */
+ @Override
+ protected String[] getExpectedResultsValues() {
+ return expectedResults;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
+ */
+ @Override
+ protected String getFileName() {
+ return fileName;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
+ */
+ @Override
+ protected String getFileFullPath() {
+ return fileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
+ */
+ @Override
+ protected String getHeaderFileFullPath() {
+ return headerFileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
+ */
+ @Override
+ protected String getHeaderFileName() {
+ return headerFileName;
+ }
+
+}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/MemberReference_Dot_NoPrefix_CompletionTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/MemberReference_Dot_NoPrefix_CompletionTest.java
new file mode 100644
index 00000000000..057907a2a7d
--- /dev/null
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/MemberReference_Dot_NoPrefix_CompletionTest.java
@@ -0,0 +1,102 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2012 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Rational Software - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.ui.tests.text.contentassist2;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * @author hamer
+ *
+ * Testing Member_Reference, with NO prefix
+ * After a .
+ *
+ */
+public class MemberReference_Dot_NoPrefix_CompletionTest extends CompletionProposalsBaseTest {
+ private final String fileName = "CompletionTestStart9.cpp";
+ private final String fileFullPath = "resources/contentassist/" + fileName;
+ private final String headerFileName = "CompletionTestStart.h";
+ private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
+ private final String expectedPrefix = "";
+ private final String[] expectedResults = { "aField : int", "xAClassField : float", "aMethod(void) : int",
+ "xAClassMethod(int x) : void", "aClass" // aClass is valid
+ };
+
+ public MemberReference_Dot_NoPrefix_CompletionTest(String name) {
+ super(name);
+ }
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(MemberReference_Dot_NoPrefix_CompletionTest.class.getName());
+ suite.addTest(new MemberReference_Dot_NoPrefix_CompletionTest("testCompletionProposals"));
+ return suite;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
+ */
+ @Override
+ protected int getCompletionPosition() {
+ return getBuffer().indexOf(" c. ") + 3;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
+ */
+ @Override
+ protected String getExpectedPrefix() {
+ return expectedPrefix;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
+ */
+ @Override
+ protected String[] getExpectedResultsValues() {
+ return expectedResults;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
+ */
+ @Override
+ protected String getFileName() {
+ return fileName;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
+ */
+ @Override
+ protected String getFileFullPath() {
+ return fileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
+ */
+ @Override
+ protected String getHeaderFileFullPath() {
+ return headerFileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
+ */
+ @Override
+ protected String getHeaderFileName() {
+ return headerFileName;
+ }
+
+}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/MemberReference_Dot_Prefix_CompletionTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/MemberReference_Dot_Prefix_CompletionTest.java
new file mode 100644
index 00000000000..fa91ebda70c
--- /dev/null
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/MemberReference_Dot_Prefix_CompletionTest.java
@@ -0,0 +1,101 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2012 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Rational Software - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.ui.tests.text.contentassist2;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * @author hamer
+ *
+ * Testing Member_Reference completion kind, with a prefix
+ * After a .
+ *
+ */
+public class MemberReference_Dot_Prefix_CompletionTest extends CompletionProposalsBaseTest {
+ private final String fileName = "CompletionTestStart2.cpp";
+ private final String fileFullPath = "resources/contentassist/" + fileName;
+ private final String headerFileName = "CompletionTestStart.h";
+ private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
+ private final String expectedPrefix = "a";
+ private final String[] expectedResults = { "aField : int", "aMethod(void) : int", "aClass" // aClass is valid
+ };
+
+ public MemberReference_Dot_Prefix_CompletionTest(String name) {
+ super(name);
+ }
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(MemberReference_Dot_Prefix_CompletionTest.class.getName());
+ suite.addTest(new MemberReference_Dot_Prefix_CompletionTest("testCompletionProposals"));
+ return suite;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
+ */
+ @Override
+ protected int getCompletionPosition() {
+ return getBuffer().indexOf(" c.a ") + 4;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
+ */
+ @Override
+ protected String getExpectedPrefix() {
+ return expectedPrefix;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
+ */
+ @Override
+ protected String[] getExpectedResultsValues() {
+ return expectedResults;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
+ */
+ @Override
+ protected String getFileName() {
+ return fileName;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
+ */
+ @Override
+ protected String getFileFullPath() {
+ return fileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
+ */
+ @Override
+ protected String getHeaderFileFullPath() {
+ return headerFileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
+ */
+ @Override
+ protected String getHeaderFileName() {
+ return headerFileName;
+ }
+
+}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/NamespaceRef_NoPrefix_CompletionTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/NamespaceRef_NoPrefix_CompletionTest.java
new file mode 100644
index 00000000000..f1b4d3e835f
--- /dev/null
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/NamespaceRef_NoPrefix_CompletionTest.java
@@ -0,0 +1,79 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2012 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Rational Software - Initial API and implementation
+ * Bryan Wilkinson (QNX)
+ *******************************************************************************/
+package org.eclipse.cdt.ui.tests.text.contentassist2;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * @author hamer
+ *
+ * Testing Namespace_Reference, with no prefix
+ * Bug#50471 : Wrong completion kind after the "using" keyword
+ */
+public class NamespaceRef_NoPrefix_CompletionTest extends CompletionProposalsBaseTest {
+ private final String fileName = "CompletionTestStart32.cpp";
+ private final String fileFullPath = "resources/contentassist/" + fileName;
+ private final String headerFileName = "CompletionTestStart.h";
+ private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
+ private final String expectedPrefix = "";
+ private final String[] expectedResults = { "aNamespace", "xNamespace" };
+
+ public NamespaceRef_NoPrefix_CompletionTest(String name) {
+ super(name);
+ // https://bugs.eclipse.org/bugs/show_bug.cgi?id=169860
+ }
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(NamespaceRef_NoPrefix_CompletionTest.class.getName());
+ suite.addTest(new NamespaceRef_NoPrefix_CompletionTest("testCompletionProposals"));
+ return suite;
+ }
+
+ @Override
+ protected int getCompletionPosition() {
+ return getBuffer().indexOf("namespace ") + 10;
+ }
+
+ @Override
+ protected String getExpectedPrefix() {
+ return expectedPrefix;
+ }
+
+ @Override
+ protected String[] getExpectedResultsValues() {
+ return expectedResults;
+ }
+
+ @Override
+ protected String getFileName() {
+ return fileName;
+ }
+
+ @Override
+ protected String getFileFullPath() {
+ return fileFullPath;
+ }
+
+ @Override
+ protected String getHeaderFileFullPath() {
+ return headerFileFullPath;
+ }
+
+ @Override
+ protected String getHeaderFileName() {
+ return headerFileName;
+ }
+}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/NamespaceRef_Prefix_CompletionTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/NamespaceRef_Prefix_CompletionTest.java
new file mode 100644
index 00000000000..64873e61241
--- /dev/null
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/NamespaceRef_Prefix_CompletionTest.java
@@ -0,0 +1,103 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2012 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Rational Software - Initial API and implementation
+ * Bryan Wilkinson (QNX)
+ *******************************************************************************/
+package org.eclipse.cdt.ui.tests.text.contentassist2;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * @author hamer
+ *
+ * Testing Namespace_Reference, with prefix
+ * Bug#50471 : Wrong completion kind after the "using" keyword
+ *
+ */
+public class NamespaceRef_Prefix_CompletionTest extends CompletionProposalsBaseTest {
+
+ private final String fileName = "CompletionTestStart33.cpp";
+ private final String fileFullPath = "resources/contentassist/" + fileName;
+ private final String headerFileName = "CompletionTestStart.h";
+ private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
+ private final String expectedPrefix = "a";
+ private final String[] expectedResults = { "aNamespace" };
+
+ public NamespaceRef_Prefix_CompletionTest(String name) {
+ super(name);
+ // https://bugs.eclipse.org/bugs/show_bug.cgi?id=169860
+ }
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(NamespaceRef_Prefix_CompletionTest.class.getName());
+ suite.addTest(new NamespaceRef_Prefix_CompletionTest("testCompletionProposals"));
+ return suite;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
+ */
+ @Override
+ protected int getCompletionPosition() {
+ return getBuffer().indexOf("namespace a ") + 11;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
+ */
+ @Override
+ protected String getExpectedPrefix() {
+ return expectedPrefix;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
+ */
+ @Override
+ protected String[] getExpectedResultsValues() {
+ return expectedResults;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
+ */
+ @Override
+ protected String getFileName() {
+ return fileName;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
+ */
+ @Override
+ protected String getFileFullPath() {
+ return fileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
+ */
+ @Override
+ protected String getHeaderFileFullPath() {
+ return headerFileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
+ */
+ @Override
+ protected String getHeaderFileName() {
+ return headerFileName;
+ }
+
+}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/NewTypeReference_NoPrefix_CompletionTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/NewTypeReference_NoPrefix_CompletionTest.java
new file mode 100644
index 00000000000..14c5af268f0
--- /dev/null
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/NewTypeReference_NoPrefix_CompletionTest.java
@@ -0,0 +1,104 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2012 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Rational Software - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.ui.tests.text.contentassist2;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * @author hamer
+ *
+ * Testing Class_Reference, with prefix
+ * Bug#50711 : Wrong completion kind in a new expression
+ *
+ */
+public class NewTypeReference_NoPrefix_CompletionTest extends CompletionProposalsBaseTest {
+
+ private final String fileName = "CompletionTestStart29.cpp";
+ private final String fileFullPath = "resources/contentassist/" + fileName;
+ private final String headerFileName = "CompletionTestStart.h";
+ private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
+ private final String expectedPrefix = "";
+ private final String[] expectedResults = { "aClass", "anotherClass", "AStruct", "xOtherClass", "XStruct",
+ "aNamespace", "xNamespace",
+ // enums may not be desired, but valid
+ "anEnumeration", "xEnumeration" };
+
+ public NewTypeReference_NoPrefix_CompletionTest(String name) {
+ super(name);
+ }
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(NewTypeReference_NoPrefix_CompletionTest.class.getName());
+ suite.addTest(new NewTypeReference_NoPrefix_CompletionTest("testCompletionProposals"));
+ return suite;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
+ */
+ @Override
+ protected int getCompletionPosition() {
+ return getBuffer().indexOf(" ") + 2;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
+ */
+ @Override
+ protected String getExpectedPrefix() {
+ return expectedPrefix;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
+ */
+ @Override
+ protected String[] getExpectedResultsValues() {
+ return expectedResults;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
+ */
+ @Override
+ protected String getFileName() {
+ return fileName;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
+ */
+ @Override
+ protected String getFileFullPath() {
+ return fileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
+ */
+ @Override
+ protected String getHeaderFileFullPath() {
+ return headerFileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
+ */
+ @Override
+ protected String getHeaderFileName() {
+ return headerFileName;
+ }
+
+}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/NewTypeReference_Prefix_CompletionTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/NewTypeReference_Prefix_CompletionTest.java
new file mode 100644
index 00000000000..24c1d2748e7
--- /dev/null
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/NewTypeReference_Prefix_CompletionTest.java
@@ -0,0 +1,102 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2012 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Rational Software - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.ui.tests.text.contentassist2;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * @author hamer
+ *
+ * Testing Class_Reference, with prefix
+ * Bug#50711 : Wrong completion kind in a new expression
+ *
+ */
+public class NewTypeReference_Prefix_CompletionTest extends CompletionProposalsBaseTest {
+
+ private final String fileName = "CompletionTestStart28.cpp";
+ private final String fileFullPath = "resources/contentassist/" + fileName;
+ private final String headerFileName = "CompletionTestStart.h";
+ private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
+ private final String expectedPrefix = "a";
+ private final String[] expectedResults = { "aClass", "anotherClass", "aNamespace", "AStruct", "anEnumeration",
+ "AMacro(x)" };
+
+ public NewTypeReference_Prefix_CompletionTest(String name) {
+ super(name);
+ }
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(NewTypeReference_Prefix_CompletionTest.class.getName());
+ suite.addTest(new NewTypeReference_Prefix_CompletionTest("testCompletionProposals"));
+ return suite;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
+ */
+ @Override
+ protected int getCompletionPosition() {
+ return getBuffer().indexOf(" a ") + 2;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
+ */
+ @Override
+ protected String getExpectedPrefix() {
+ return expectedPrefix;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
+ */
+ @Override
+ protected String[] getExpectedResultsValues() {
+ return expectedResults;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
+ */
+ @Override
+ protected String getFileName() {
+ return fileName;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
+ */
+ @Override
+ protected String getFileFullPath() {
+ return fileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
+ */
+ @Override
+ protected String getHeaderFileFullPath() {
+ return headerFileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
+ */
+ @Override
+ protected String getHeaderFileName() {
+ return headerFileName;
+ }
+
+}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/PlainC_CompletionTests.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/PlainC_CompletionTests.java
new file mode 100644
index 00000000000..2a9f61a5d5e
--- /dev/null
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/PlainC_CompletionTests.java
@@ -0,0 +1,827 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2014 Wind River Systems, Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Anton Leherbauer (Wind River Systems) - initial API and implementation
+ * Markus Schorn (Wind River Systems)
+ * IBM Corporation
+ * Jens Elmenthaler - http://bugs.eclipse.org/173458 (camel case completion)
+ *******************************************************************************/
+package org.eclipse.cdt.ui.tests.text.contentassist2;
+
+import org.eclipse.cdt.core.CCorePlugin;
+import org.eclipse.cdt.core.testplugin.util.BaseTestCase;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.jface.text.IDocument;
+
+import junit.framework.Test;
+
+/**
+ * Completion tests for plain C.
+ *
+ * @since 4.0
+ */
+public class PlainC_CompletionTests extends AbstractContentAssistTest {
+
+ private static final String HEADER_FILE_NAME = "CompletionTest.h";
+ private static final String SOURCE_FILE_NAME = "CompletionTest.c";
+ private static final String CURSOR_LOCATION_TAG = "/*cursor*/";
+ private static final String INCLUDE_LOCATION_TAG = "/*include*/";
+ private static final String DISTURB_FILE_NAME = "DisturbWith.c";
+
+ protected int fCursorOffset;
+ private IProject fProject;
+
+ //{CompletionTest.h}
+ //int gGlobalInt;
+ //struct Struct1;
+ //struct Struct2;
+ //union Union1;
+ //union Union2;
+ //
+ //#define DEBUG 1
+ //#define AMacro(x) x+1
+ //#define XMacro(x,y) x+y
+ //
+ //int aVariable;
+ //int xVariable;
+ //
+ //void aFunction();
+ //void xFunction();
+ //
+ //enum anEnumeration {
+ // aFirstEnum,
+ // aSecondEnum,
+ // aThirdEnum
+ //};
+ //typedef enum anEnumeration anEnumerationType;
+ //
+ //enum xEnumeration {
+ // xFirstEnum,
+ // xSecondEnum,
+ // xThirdEnum
+ //};
+ //typedef enum xEnumeration xEnumerationType;
+ //
+ //struct AStruct{
+ // int aStructField;
+ // int xaStructField;
+ //};
+ //typedef struct AStruct AStructType;
+ //
+ //struct XStruct{
+ // int xStructField;
+ // int axStructField;
+ //};
+ //typedef struct XStruct XStructType;
+ //
+ //void anotherFunction(){
+ // int aLocalDeclaration = 1;
+ //}
+ //
+ //void xOtherFunction(){
+ // int xLocalDeclaration = 1;
+ //}
+ //#ifdef ANONYMOUS
+ //enum {
+ // anonFirstEnum,
+ // anonSecondEnum,
+ // anonThirdEnum
+ //};
+ //
+ //enum {
+ // xanonFirstEnum,
+ // xanonSecondEnum,
+ // xanonThirdEnum
+ //};
+ //
+ //int notAnonymous;
+ //enum notAnonymousEnum {};
+ //struct notAnonymousStruct {};
+ //
+ //struct {
+ // int anonStructField;
+ //};
+ //
+ //struct {
+ // int xanonStructField;
+ //};
+ //
+ //union {
+ // int anonUnionMember1, anonUnionMember2;
+ //};
+ //#endif /* ANONYMOUS */
+ //
+ //#ifdef STRUCT_C1
+ //enum E1 {e11, e12};
+ //
+ //struct C1_s {
+ // enum E2 {e21, e22};
+ //
+ // struct C1_s* fMySelf;
+ //
+ // int m123;
+ // int m12;
+ // int m13;
+ //};
+ //typedef struct C1_s C1;
+ //extern C1* gfC1();
+ //C1* gfC2();
+ //C1 gC1, gC2;
+ //#endif /* STRUCT_C1 */
+ // struct s206450 {
+ // struct {int a1; int a2;};
+ // union {int u1; char u2;};
+ // struct {int a3;} a4;
+ // int b;
+ // };
+ // #ifdef bug204758
+ // typedef enum {__nix} _e204758;
+ // void _f204758(_e204758 x);
+ // #endif
+
+ //{DisturbWith.c}
+ // int gTemp;
+ // void gFunc();
+ // typedef struct {
+ // int mem;
+ // } gStruct;
+
+ public static Test suite() {
+ return BaseTestCase.suite(PlainC_CompletionTests.class, "_");
+ }
+
+ /**
+ * @param name
+ */
+ public PlainC_CompletionTests(String name) {
+ super(name, false);
+ }
+
+ /*
+ * @see org.eclipse.cdt.ui.tests.text.contentassist2.AbstractContentAssistTest#setUpProjectContent(org.eclipse.core.resources.IProject)
+ */
+ @Override
+ protected IFile setUpProjectContent(IProject project) throws Exception {
+ fProject = project;
+ String headerContent = readTaggedComment(HEADER_FILE_NAME);
+ StringBuilder sourceContent = getContentsForTest(1)[0];
+ int includeOffset = Math.max(0, sourceContent.indexOf(INCLUDE_LOCATION_TAG));
+ sourceContent.insert(includeOffset, "#include \"" + HEADER_FILE_NAME + "\"\n");
+ fCursorOffset = sourceContent.indexOf(CURSOR_LOCATION_TAG);
+ assertTrue("No cursor location specified", fCursorOffset >= 0);
+ sourceContent.delete(fCursorOffset, fCursorOffset + CURSOR_LOCATION_TAG.length());
+ assertNotNull(createFile(project, HEADER_FILE_NAME, headerContent));
+ IFile sourceFile = createFile(project, SOURCE_FILE_NAME, sourceContent.toString());
+ // re-indexing is necessary to parse the header in context of the source.
+ CCorePlugin.getIndexManager().reindex(fCProject);
+ waitForIndexer(fCProject);
+ return sourceFile;
+ }
+
+ protected static final int DEFAULT_FLAGS = AbstractContentAssistTest.DEFAULT_FLAGS | IS_COMPLETION;
+
+ protected void assertCompletionResults(String[] expected) throws Exception {
+ assertContentAssistResults(fCursorOffset, expected, DEFAULT_FLAGS, CompareType.ID);
+ }
+
+ //void test() {
+ // int myvar;
+ // (my/*cursor*/
+ public void testLocalVariableAfterOpeningParen_Bug180885() throws Exception {
+ final String[] expected = { "myvar" };
+ assertCompletionResults(expected);
+ }
+
+ //void test() {
+ // int myvar;
+ // int x = my/*cursor*/
+ public void testLocalVariableInAssignment() throws Exception {
+ final String[] expected = { "myvar" };
+ assertCompletionResults(expected);
+ }
+
+ //void test() {
+ // int myvar;
+ // my/*cursor*/
+ public void testLocalVariableOnLHS() throws Exception {
+ final String[] expected = { "myvar" };
+ assertCompletionResults(expected);
+ }
+
+ // void test() {
+ // g/*cursor*/
+ public void testBindingsWithoutDeclaration() throws Exception {
+ // gStruct: fix for 214146, type from a source file is not proposed.
+ final String[] expected = { "gGlobalInt", "gTemp", "gFunc(void)", };
+ final String[] expected2 = { "gGlobalInt" };
+ String disturbContent = readTaggedComment(DISTURB_FILE_NAME);
+ IFile dfile = createFile(fProject, DISTURB_FILE_NAME, disturbContent);
+ waitForIndexer(fCProject);
+ assertCompletionResults(expected);
+
+ dfile.delete(true, npm());
+ waitForIndexer(fCProject);
+ assertCompletionResults(expected2);
+ }
+
+ //// to_be_replaced_
+ //void gfunc(){aNew/*cursor*/
+ public void testGlobalVariableBeforeSave_Bug180883() throws Exception {
+ String replace = "// to_be_replaced_";
+ String globalVar = "int aNewGlobalVar;";
+ IDocument doc = getDocument();
+ int idx = doc.get().indexOf(replace);
+ doc.replace(idx, replace.length(), globalVar);
+
+ final String[] expected = { "aNewGlobalVar" };
+ assertCompletionResults(expected);
+ }
+
+ // static int staticVar197990;
+ // void gFunc() {
+ // stat/*cursor*/
+ public void testStaticVariables_Bug197990() throws Exception {
+ final String[] expected = { "staticVar197990" };
+ assertCompletionResults(expected);
+ }
+
+ // struct Struct/*cursor*/
+ public void testElaboratedTypeSpecifierStruct_bug208710() throws Exception {
+ final String[] expected = { "Struct1", "Struct2" };
+ assertCompletionResults(expected);
+ }
+
+ // struct Union/*cursor*/
+ public void testElaboratedTypeSpecifierNotStruct_bug208710() throws Exception {
+ final String[] expected = new String[0];
+ assertCompletionResults(expected);
+ }
+
+ // union Union/*cursor*/
+ public void testElaboratedTypeSpecifierUnion_bug208710() throws Exception {
+ final String[] expected = { "Union1", "Union2" };
+ assertCompletionResults(expected);
+ }
+
+ // union Struct/*cursor*/
+ public void testElaboratedTypeSpecifierNotUnion_bug208710() throws Exception {
+ final String[] expected = new String[0];
+ assertCompletionResults(expected);
+ }
+
+ // void func() {float a; a= 1./*cursor*/}
+ public void testCompletionInFloatingPointLiteral_Bug193464() throws Exception {
+ final String[] expected = new String[0];
+ assertCompletionResults(expected);
+ }
+
+ // #ifdef __cplusplus__
+ // extern "C" {
+ // #endif
+ // void c_linkage();
+ // #ifdef __cplusplus__
+ // }
+ // #endif
+
+ // #include "header191315.h"
+
+ // #include "header191315.h"
+ // void xxx() { c_lin/*cursor*/
+ public void testExternC_bug191315() throws Exception {
+ CharSequence[] content = getContentsForTest(3);
+ createFile(fProject, "header191315.h", content[0].toString());
+ createFile(fProject, "source191315.c", content[1].toString());
+ createFile(fProject, "source191315.cpp", content[1].toString());
+ waitForIndexer(fCProject);
+ final String[] expected = { "c_linkage(void)" };
+ assertCompletionResults(expected);
+ }
+
+ //#define ANONYMOUS
+ ///*include*/
+ ///*cursor*/
+ public void testAnonymousTypes() throws Exception {
+ final String[] expected = { "AStructType", "XStructType", "anEnumerationType", "xEnumerationType" };
+ assertCompletionResults(expected);
+ }
+
+ //void foo ( a/*cursor*/
+ public void testArgumentTypes_Prefix() throws Exception {
+ final String[] expected = { "AMacro(x)", "AStructType", "anEnumerationType" };
+ assertCompletionResults(expected);
+ }
+
+ //struct aThirdStruct {
+ // int x;
+ // /*cursor*/
+ //};
+ public void testFieldType_NoPrefix() throws Exception {
+ final String[] expected = { "AStructType", "XStructType", "anEnumerationType", "xEnumerationType" };
+ assertCompletionResults(expected);
+ }
+
+ //struct aThirdStruct {
+ // int x;
+ // a/*cursor*/
+ //};
+ public void testFieldType_Prefix() throws Exception {
+ final String[] expected = { "AMacro(x)", "AStructType", "anEnumerationType" };
+ assertCompletionResults(expected);
+ }
+
+ //#ifdef /*cursor*/
+ public void testMacroRef_NoPrefix() throws Exception {
+ final String[] expected = { "AMacro(x)", "DEBUG", "XMacro(x, y)", "__CDT_PARSER__", "__COUNTER__", "__DATE__",
+ "__FILE__", "__LINE__", "__STDC_HOSTED__", "__STDC_VERSION__", "__STDC__", "__TIME__",
+ "__builtin_va_arg(ap, type)", "__builtin_offsetof(T, m)", "__builtin_types_compatible_p(x, y)",
+ "__complex__", "__extension__", "__has_include", "__has_include_next", "__imag__", "__null",
+ "__offsetof__(x)", "__real__", "__stdcall", "__thread", };
+ assertCompletionResults(expected);
+ }
+
+ //#ifdef D/*cursor*/
+ public void testMacroRef_Prefix() throws Exception {
+ final String[] expected = { "DEBUG" };
+ assertCompletionResults(expected);
+ }
+
+ // int waldo;
+ // void foo() {
+ // #ifdef SOME_UNDEFINED_MACRO
+ // wald/*cursor*/
+ // #endif
+ // }
+ public void testInactiveCodeBlock_72809() throws Exception {
+ assertCompletionResults(new String[] { "waldo" });
+ }
+
+ //void fooFunction()
+ //{
+ // AStructType* c;
+ // c->/*cursor*/
+ //}
+ public void testMemberReference_Arrow_NoPrefix() throws Exception {
+ final String[] expected = { "aStructField", "xaStructField", };
+ assertCompletionResults(expected);
+ }
+
+ //void main() {
+ // struct AStruct a, *ap;
+ // ap->/*cursor*/
+ //}
+ public void testMemberReference_Arrow_NoPrefix2() throws Exception {
+ final String[] expected = { "aStructField", "xaStructField", };
+ assertCompletionResults(expected);
+ }
+
+ //void fooFunction()
+ //{
+ // AStructType* c;
+ // c->a/*cursor*/
+ //}
+ public void testMemberReference_Arrow_Prefix() throws Exception {
+ final String[] expected = { "aStructField", };
+ assertCompletionResults(expected);
+ }
+
+ //AStructType* foo();
+ //
+ //void fooFunction()
+ //{
+ // foo()->a/*cursor*/
+ //}
+ public void testMemberReference_Arrow_Prefix2() throws Exception {
+ final String[] expected = { "aStructField", };
+ assertCompletionResults(expected);
+ }
+
+ //void fooFunction()
+ //{
+ // AStructType c;
+ // c./*cursor*/
+ //}
+ public void testMemberReference_Dot_NoPrefix() throws Exception {
+ final String[] expected = { "aStructField", "xaStructField", };
+ assertCompletionResults(expected);
+ }
+
+ //void fooFunction()
+ //{
+ // AStructType c;
+ // c.a/*cursor*/
+ //}
+ public void testMemberReference_Dot_Prefix() throws Exception {
+ final String[] expected = { "aStructField", };
+ assertCompletionResults(expected);
+ }
+
+ //typedef int myType;
+ //
+ //m/*cursor*/
+ public void testTypeDef_Prefix() throws Exception {
+ final String[] expected = { "myType", };
+ assertCompletionResults(expected);
+ }
+
+ //void fooFunction(int x)
+ //{
+ // /*cursor*/
+ //}
+ public void testSingleName_Function_NoPrefix() throws Exception {
+ final String[] expected = { "x", "aVariable", "xVariable", "aFunction(void)", "anotherFunction(void)",
+ "fooFunction(int)", "xFunction(void)", "xOtherFunction(void)", "anEnumerationType", "xEnumerationType",
+ "AStructType", "XStructType", "aFirstEnum", "aSecondEnum", "aThirdEnum", "xFirstEnum", "xSecondEnum",
+ "xThirdEnum", "gGlobalInt" };
+ assertCompletionResults(expected);
+ }
+
+ //void fooFunction(int x)
+ //{
+ // a/*cursor*/
+ //}
+ public void testSingleName_Function_Prefix() throws Exception {
+ final String[] expected = { "AMacro(x)", "AStructType", "aVariable", "aFunction(void)", "anotherFunction(void)",
+ "anEnumerationType", "aFirstEnum", "aSecondEnum", "aThirdEnum", };
+ assertCompletionResults(expected);
+ }
+
+ //void fooFunction(int x)
+ //{
+ // int y = /*cursor*/
+ //}
+ public void testSingleName_Assignment_NoPrefix() throws Exception {
+ final String[] expected = { "x", "y", "aVariable", "xVariable", "aFunction(void)", "anotherFunction(void)",
+ "fooFunction(int)", "xFunction(void)", "xOtherFunction(void)", "anEnumerationType", "xEnumerationType",
+ "AStructType", "XStructType", "aFirstEnum", "aSecondEnum", "aThirdEnum", "xFirstEnum", "xSecondEnum",
+ "xThirdEnum", "gGlobalInt" };
+ assertCompletionResults(expected);
+ }
+
+ //void foo(int x)
+ //{
+ // int y = AM/*cursor*/
+ //}
+ public void testSingleName_Assignment_Prefix() throws Exception {
+ final String[] expected = { "AMacro(x)" };
+ assertCompletionResults(expected);
+ }
+
+ //#define STRUCT_C1
+ ///*include*/
+ //void gfunc() {C1 v; v.m/*cursor*/
+ public void testLocalVariable() throws Exception {
+ final String[] expected = { "m123", "m12", "m13" };
+ assertCompletionResults(expected);
+ }
+
+ //#define STRUCT_C1
+ ///*include*/
+ //void gfunc() {C1 v; v.fMySelf->m/*cursor*/
+ public void testLocalVariable_MemberVariable() throws Exception {
+ final String[] expected = { "m123", "m12", "m13" };
+ assertCompletionResults(expected);
+ }
+
+ //#define STRUCT_C1
+ ///*include*/
+ //void gfunc() {gfC1()->m/*cursor*/
+ public void testGlobalFunction() throws Exception {
+ final String[] expected = { "m123", "m12", "m13" };
+ assertCompletionResults(expected);
+ }
+
+ //#define STRUCT_C1
+ ///*include*/
+ //void f() {gC/*cursor*/
+ public void testGlobalVariables_GlobalScope() throws Exception {
+ final String[] expected = { "gC1", "gC2", "gfC1(void)", "gfC2(void)" };
+ assertCompletionResults(expected);
+ }
+
+ //#define STRUCT_C1
+ ///*include*/
+ //void foo() {gC/*cursor*/
+ public void testGlobalVariables_FunctionScope() throws Exception {
+ final String[] expected = { "gC1", "gC2", "gfC1(void)", "gfC2(void)" };
+ assertCompletionResults(expected);
+ }
+
+ //#define STRUCT_C1
+ ///*include*/
+ //typedef struct {
+ // enum E2 {e21, e22};
+ //
+ // C2* fMySelf;
+ //
+ // int m123;
+ // int m12;
+ // int m13;
+ //} C2;
+ //void f() {C2* cLocal1; while(true) {C1* cLocal2; cL/*cursor*/
+ public void testLocalVariables_FunctionScope() throws Exception {
+ final String[] expected = { "cLocal1", "cLocal2" };
+ assertCompletionResults(expected);
+ }
+
+ //#define STRUCT_C1
+ ///*include*/
+ //void f() {C1* cLocal1; cLocal1->f/*cursor*/
+ public void testDataMembers_FunctionScope() throws Exception {
+ final String[] expected = { "fMySelf" };
+ assertCompletionResults(expected);
+ }
+
+ //#define STRUCT_C1
+ ///*include*/
+ //void f() {gf/*cursor*/
+ public void testGlobalFunctions_FunctionScope() throws Exception {
+ final String[] expected = { "gfC1(void)", "gfC2(void)" };
+ assertCompletionResults(expected);
+ }
+
+ //#define STRUCT_C1
+ ///*include*/
+ //typedef struct {} C2;
+ //typedef union {} C3;
+ //void f() {C/*cursor*/
+ public void testTypes_FunctionScope() throws Exception {
+ final String[] expected = { "C1", "C2", "C3" };
+ assertCompletionResults(expected);
+ }
+
+ //#define STRUCT_C1
+ ///*include*/
+ //void f() {e/*cursor*/
+ public void testEnums_FunctionScope() throws Exception {
+ final String[] expected = { "e11", "e12", "e21", "e22" };
+ assertCompletionResults(expected);
+ }
+
+ //#define STRUCT_C1
+ ///*include*/
+ //void f() {C1 c; (&c)->m/*cursor*/
+ public void testAddressOf() throws Exception {
+ final String[] expected = { "m123", "m12", "m13" };
+ assertCompletionResults(expected);
+ }
+
+ //#define STRUCT_C1
+ ///*include*/
+ //void f() {C1* c; (*c).m/*cursor*/
+ public void testDereferencingOperator1() throws Exception {
+ final String[] expected = { "m123", "m12", "m13" };
+ assertCompletionResults(expected);
+ }
+
+ //#define STRUCT_C1
+ ///*include*/
+ //void f() {C1** c; (**c).m/*cursor*/
+ public void testDereferencingOperator2() throws Exception {
+ final String[] expected = { "m123", "m12", "m13" };
+ assertCompletionResults(expected);
+ }
+
+ //#define STRUCT_C1
+ ///*include*/
+ //void f() {C1** c; (*c)->m/*cursor*/
+ public void testDereferencingOperator3() throws Exception {
+ final String[] expected = { "m123", "m12", "m13" };
+ assertCompletionResults(expected);
+ }
+
+ //#define STRUCT_C1
+ ///*include*/
+ //void f() {C1* c; c[0].m/*cursor*/
+ public void testArrayAccessOperator1() throws Exception {
+ final String[] expected = { "m123", "m12", "m13" };
+ assertCompletionResults(expected);
+ }
+
+ //#define STRUCT_C1
+ ///*include*/
+ //void f() {C1** c; c[0][1].m/*cursor*/
+ public void testArrayAccessOperator2() throws Exception {
+ final String[] expected = { "m123", "m12", "m13" };
+ assertCompletionResults(expected);
+ }
+
+ //#define STRUCT_C1
+ ///*include*/
+ //void f() {C1** c; c[0]->m/*cursor*/
+ public void testArrayAccessOperator3() throws Exception {
+ final String[] expected = { "m123", "m12", "m13" };
+ assertCompletionResults(expected);
+ }
+
+ //#define STRUCT_C1
+ ///*include*/
+ //void f() {C1* c; (&c[0])->m/*cursor*/
+ public void testArrayAccessOperator4() throws Exception {
+ final String[] expected = { "m123", "m12", "m13" };
+ assertCompletionResults(expected);
+ }
+
+ //#define STRUCT_C1
+ ///*include*/
+ //void f() {void* c; ((C1*)c)->m/*cursor*/
+ public void testCasts1() throws Exception {
+ final String[] expected = { "m123", "m12", "m13" };
+ assertCompletionResults(expected);
+ }
+
+ //#define STRUCT_C1
+ ///*include*/
+ //void g(int a) {}; void f() {void* c; g(((C1*)c)->m/*cursor*/
+ public void testCasts2() throws Exception {
+ final String[] expected = { "m123", "m12", "m13" };
+ assertCompletionResults(expected);
+ }
+
+ //#define STRUCT_C1
+ ///*include*/
+ //void f() {C1* c; c++->m/*cursor*/
+ public void testPointerArithmetic1() throws Exception {
+ final String[] expected = { "m123", "m12", "m13" };
+ assertCompletionResults(expected);
+ }
+
+ //#define STRUCT_C1
+ ///*include*/
+ //void f() {C1* c; (*++c).m/*cursor*/
+ public void testPointerArithmetic2() throws Exception {
+ final String[] expected = { "m123", "m12", "m13" };
+ assertCompletionResults(expected);
+ }
+
+ //#define STRUCT_C1
+ ///*include*/
+ //void f() {C1* c; c--->m/*cursor*/
+ public void testPointerArithmetic3() throws Exception {
+ final String[] expected = { "m123", "m12", "m13" };
+ assertCompletionResults(expected);
+ }
+
+ //#define STRUCT_C1
+ ///*include*/
+ //void f() {C1 c; (&c+1)->m/*cursor*/
+ public void testPointerArithmetic4() throws Exception {
+ final String[] expected = { "m123", "m12", "m13" };
+ assertCompletionResults(expected);
+ }
+
+ //#define STRUCT_C1
+ ///*include*/
+ //void f() {C1 c; (&c-1)->m/*cursor*/
+ public void testPointerArithmetic5() throws Exception {
+ final String[] expected = { "m123", "m12", "m13" };
+ assertCompletionResults(expected);
+ }
+
+ //#define STRUCT_C1
+ ///*include*/
+ //void f() {int localVar=0; if (*cond && somefunc(&local/*cursor*/
+ public void testNestedCalls() throws Exception {
+ final String[] expected = { "localVar" };
+ assertCompletionResults(expected);
+ }
+
+ //#define STRUCT_C1
+ ///*include*/
+ //int a[] = {1,2}; void f(int _0306_b) {_0306_b/*cursor*/
+ public void testCuttingInput1() throws Exception {
+ final String[] expected = { "_0306_b" };
+ assertCompletionResults(expected);
+ }
+
+ //#define STRUCT_C1
+ ///*include*/
+ //int a[] = {1,2}; void f(int b) {int _0306_b[] = {2,3}; _0306_b/*cursor*/
+ public void testCuttingInput2() throws Exception {
+ final String[] expected = { "_0306_b" };
+ assertCompletionResults(expected);
+ }
+
+ //#define STRUCT_C1
+ ///*include*/
+ //enum EnumType function() {int _031209_v; _031209/*cursor*/
+ public void testDisturbingMacros() throws Exception {
+ final String[] expected = { "_031209_v" };
+ assertCompletionResults(expected);
+ }
+
+ // void test() {
+ // int local;
+ // switch(loc/*cursor*/
+ public void testSwitchStatement() throws Exception {
+ final String[] expected = { "local" };
+ assertCompletionResults(expected);
+ }
+
+ // void test() {
+ // int local;
+ // while(loc/*cursor*/
+ public void testWhileStatement() throws Exception {
+ final String[] expected = { "local" };
+ assertCompletionResults(expected);
+ }
+
+ // void test() {
+ // int local;
+ // for(loc/*cursor*/
+ public void testForStatement1() throws Exception {
+ final String[] expected = { "local" };
+ assertCompletionResults(expected);
+ }
+
+ // void test() {
+ // int local;
+ // for(int i=0;i<loc/*cursor*/
+ public void testForStatement2() throws Exception {
+ final String[] expected = { "local" };
+ assertCompletionResults(expected);
+ }
+
+ // void test() {
+ // int local;
+ // for(int i=0;i<local;loc/*cursor*/
+ public void testForStatement3() throws Exception {
+ final String[] expected = { "local" };
+ assertCompletionResults(expected);
+ }
+
+ // #define INIT_PTR(PtrName) (PtrName) = 0;
+ // struct CCApp {
+ // int pIShell;
+ // };
+ //
+ // int main(void) {
+ // struct CCApp *pThis = 0;
+ // INIT_PTR(pTh/*cursor*/);
+ // }
+ public void testCompletionInMacroArguments1_Bug200208() throws Exception {
+ final String[] expected = { "pThis" };
+ assertCompletionResults(expected);
+ }
+
+ // #define INIT_PTR(PtrName) (PtrName) = 0;
+ // #define COPY_PTR(pTarget, pSource) (pTarget) = (pSource)
+ //
+ // struct CCApp {
+ // int pIShell;
+ // };
+ //
+ // int main(void) {
+ // struct CCApp *pThis = 0;
+ //
+ // INIT_PTR(pThis);
+ // COPY_PTR(pThis->pIShell, pThis->pI/*cursor*/)
+ // }
+ public void testCompletionInMacroArguments2_Bug200208() throws Exception {
+ final String[] expected = { "pIShell" };
+ assertCompletionResults(expected);
+ }
+
+ // enum {enum0, enum1, enum2};
+ // typedef struct {
+ // int byte1;
+ // int byte2;
+ // } MYSTRUCT_TYPE;
+ // static const MYSTRUCT_TYPE myArrayOfStructs[] = {{enum/*cursor*/
+ public void testCompletionInInitializerList_Bug230389() throws Exception {
+ final String[] expected = { "enum0", "enum1", "enum2" };
+ assertCompletionResults(expected);
+ }
+
+ // void test() {struct s206450 x; x./*cursor*/
+ public void testNestedAnonymousStructs_Bug206450() throws Exception {
+ final String[] expected = { "a1", "a2", "u1", "u2", "a4", "b" };
+ assertCompletionResults(expected);
+ }
+
+ // #define bug204758
+ ///*include*/
+ // void test() {_f204758/*cursor*/
+ public void testTypedefToAnonymous_Bug204758() throws Exception {
+ final String[] expected = { "_f204758(_e204758)" };
+ assertCompletionResults(expected);
+ }
+
+ // int main(void) {
+ // struct {
+ // void (*bar)(p1, p2, p3...);
+ // } foo;
+ // foo.bar(/*cursor*/
+ public void testClassCastException_Bug517954() throws Exception {
+ // Just check that no exception is thrown while invoking completion.
+ assertContentAssistResults(fCursorOffset, new String[] {}, DEFAULT_FLAGS | ALLOW_EXTRA_RESULTS, CompareType.ID);
+ }
+}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/ScopedReference_NoPrefix_CompletionTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/ScopedReference_NoPrefix_CompletionTest.java
new file mode 100644
index 00000000000..c9d1982b383
--- /dev/null
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/ScopedReference_NoPrefix_CompletionTest.java
@@ -0,0 +1,101 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2012 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Rational Software - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.ui.tests.text.contentassist2;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * @author hamer
+ *
+ * Testing Scoped_Reference, with no prefix
+ * Bug#50152: Wrong context sent after a "::"
+ *
+ */
+public class ScopedReference_NoPrefix_CompletionTest extends CompletionProposalsBaseTest {
+
+ private final String fileName = "CompletionTestStart30.cpp";
+ private final String fileFullPath = "resources/contentassist/" + fileName;
+ private final String headerFileName = "CompletionTestStart.h";
+ private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
+ private final String expectedPrefix = "";
+ private final String[] expectedResults = { "aNamespaceFunction(void) : void" };
+
+ public ScopedReference_NoPrefix_CompletionTest(String name) {
+ super(name);
+ }
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(ScopedReference_NoPrefix_CompletionTest.class.getName());
+ suite.addTest(new ScopedReference_NoPrefix_CompletionTest("testCompletionProposals"));
+ return suite;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
+ */
+ @Override
+ protected int getCompletionPosition() {
+ return getBuffer().indexOf(":: ") + 2;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
+ */
+ @Override
+ protected String getExpectedPrefix() {
+ return expectedPrefix;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
+ */
+ @Override
+ protected String[] getExpectedResultsValues() {
+ return expectedResults;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
+ */
+ @Override
+ protected String getFileName() {
+ return fileName;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
+ */
+ @Override
+ protected String getFileFullPath() {
+ return fileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
+ */
+ @Override
+ protected String getHeaderFileFullPath() {
+ return headerFileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
+ */
+ @Override
+ protected String getHeaderFileName() {
+ return headerFileName;
+ }
+
+}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/ScopedReference_NonCodeScope_CompletionTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/ScopedReference_NonCodeScope_CompletionTest.java
new file mode 100644
index 00000000000..9b8a3c20367
--- /dev/null
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/ScopedReference_NonCodeScope_CompletionTest.java
@@ -0,0 +1,101 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2012 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Rational Software - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.ui.tests.text.contentassist2;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * @author hamer
+ *
+ * Testing Scoped_Reference, with no prefix
+ * Bug#50152: Wrong context sent after a "::"
+ *
+ */
+public class ScopedReference_NonCodeScope_CompletionTest extends CompletionProposalsBaseTest {
+
+ private final String fileName = "CompletionTestStart39.cpp";
+ private final String fileFullPath = "resources/contentassist/" + fileName;
+ private final String headerFileName = "CompletionTestStart.h";
+ private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
+ private final String expectedPrefix = "";
+ private final String[] expectedResults = { "Foo(void)", "bar(void) : void", "fum(void) : void", "x : int" };
+
+ public ScopedReference_NonCodeScope_CompletionTest(String name) {
+ super(name);
+ }
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(ScopedReference_NonCodeScope_CompletionTest.class.getName());
+ suite.addTest(new ScopedReference_NonCodeScope_CompletionTest("testCompletionProposals"));
+ return suite;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
+ */
+ @Override
+ protected int getCompletionPosition() {
+ return getBuffer().indexOf(":: ") + 2;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
+ */
+ @Override
+ protected String getExpectedPrefix() {
+ return expectedPrefix;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
+ */
+ @Override
+ protected String[] getExpectedResultsValues() {
+ return expectedResults;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
+ */
+ @Override
+ protected String getFileName() {
+ return fileName;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
+ */
+ @Override
+ protected String getFileFullPath() {
+ return fileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
+ */
+ @Override
+ protected String getHeaderFileFullPath() {
+ return headerFileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
+ */
+ @Override
+ protected String getHeaderFileName() {
+ return headerFileName;
+ }
+
+}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/ScopedReference_Prefix_CompletionTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/ScopedReference_Prefix_CompletionTest.java
new file mode 100644
index 00000000000..8e6c399f2b8
--- /dev/null
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/ScopedReference_Prefix_CompletionTest.java
@@ -0,0 +1,101 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2012 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Rational Software - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.ui.tests.text.contentassist2;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * @author hamer
+ *
+ * Testing Scoped_Reference, with a prefix
+ * Bug#50152: Wrong context sent after a "::"
+ *
+ */
+public class ScopedReference_Prefix_CompletionTest extends CompletionProposalsBaseTest {
+
+ private final String fileName = "CompletionTestStart31.cpp";
+ private final String fileFullPath = "resources/contentassist/" + fileName;
+ private final String headerFileName = "CompletionTestStart.h";
+ private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
+ private final String expectedPrefix = "a";
+ private final String[] expectedResults = { "aNamespaceFunction(void) : void" };
+
+ public ScopedReference_Prefix_CompletionTest(String name) {
+ super(name);
+ }
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(ScopedReference_Prefix_CompletionTest.class.getName());
+ suite.addTest(new ScopedReference_Prefix_CompletionTest("testCompletionProposals"));
+ return suite;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
+ */
+ @Override
+ protected int getCompletionPosition() {
+ return getBuffer().indexOf("::a ") + 3;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
+ */
+ @Override
+ protected String getExpectedPrefix() {
+ return expectedPrefix;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
+ */
+ @Override
+ protected String[] getExpectedResultsValues() {
+ return expectedResults;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
+ */
+ @Override
+ protected String getFileName() {
+ return fileName;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
+ */
+ @Override
+ protected String getFileFullPath() {
+ return fileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
+ */
+ @Override
+ protected String getHeaderFileFullPath() {
+ return headerFileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
+ */
+ @Override
+ protected String getHeaderFileName() {
+ return headerFileName;
+ }
+
+}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/SingleName_Method_NoPrefix_CompletionTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/SingleName_Method_NoPrefix_CompletionTest.java
new file mode 100644
index 00000000000..77bf8f268cf
--- /dev/null
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/SingleName_Method_NoPrefix_CompletionTest.java
@@ -0,0 +1,111 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2012 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Rational Software - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.ui.tests.text.contentassist2;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * @author hamer
+ *
+ * Testing statement start, with no prefix
+ * Lookup.THIS
+ *
+ */
+public class SingleName_Method_NoPrefix_CompletionTest extends CompletionProposalsBaseTest {
+ private final String fileName = "CompletionTestStart5.cpp";
+ private final String fileFullPath = "resources/contentassist/" + fileName;
+ private final String headerFileName = "CompletionTestStart.h";
+ private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
+ private final String expectedPrefix = "";
+
+ private final String[] expectedResults = { "AStruct", "XStruct", "aClass", "aFirstEnum", "aFunction(void) bool",
+ "aNamespace", "aSecondEnum", "aThirdEnum", "aVariable : int", "anEnumeration", "anotherClass",
+ "anotherField : int", "anotherFunction(void) void", "anotherMethod(void) void", "xEnumeration",
+ "xFirstEnum", "xFunction(void) bool", "xNamespace", "xOtherClass", "xOtherFunction(void) void",
+ "xSecondEnum", "xThirdEnum", "xVariable : int", "~anotherClass(void) "
+ // extra result
+ // "operator =(const anotherClass &) anotherClass &",
+ };
+
+ public SingleName_Method_NoPrefix_CompletionTest(String name) {
+ super(name);
+ // operators should not be proposed
+ // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=172304
+ setExpectFailure(172304);
+ }
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(SingleName_Method_NoPrefix_CompletionTest.class.getName());
+ suite.addTest(new SingleName_Method_NoPrefix_CompletionTest("testCompletionProposals"));
+ return suite;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
+ */
+ @Override
+ protected int getCompletionPosition() {
+ return getBuffer().indexOf(" ") + 2;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
+ */
+ @Override
+ protected String getExpectedPrefix() {
+ return expectedPrefix;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
+ */
+ @Override
+ protected String[] getExpectedResultsValues() {
+ return expectedResults;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
+ */
+ @Override
+ protected String getFileName() {
+ return fileName;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
+ */
+ @Override
+ protected String getFileFullPath() {
+ return fileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
+ */
+ @Override
+ protected String getHeaderFileFullPath() {
+ return headerFileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
+ */
+ @Override
+ protected String getHeaderFileName() {
+ return headerFileName;
+ }
+
+}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/SingleName_Method_Prefix_CompletionTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/SingleName_Method_Prefix_CompletionTest.java
new file mode 100644
index 00000000000..fde3ae6a096
--- /dev/null
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/SingleName_Method_Prefix_CompletionTest.java
@@ -0,0 +1,103 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2012 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Rational Software - initial implementation
+ *******************************************************************************/
+package org.eclipse.cdt.ui.tests.text.contentassist2;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * @author hamer
+ *
+ * Testing statement start completion kind, with a prefix
+ *
+ */
+public class SingleName_Method_Prefix_CompletionTest extends CompletionProposalsBaseTest {
+
+ private final String fileName = "CompletionTestStart1.cpp";
+ private final String fileFullPath = "resources/contentassist/" + fileName;
+ private final String headerFileName = "CompletionTestStart.h";
+ private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
+ private final String expectedPrefix = "a";
+ private final String[] expectedResults = { "anotherField : int", "aVariable : int", "anotherMethod(void) : void",
+ "aFunction(void) : bool", "anotherFunction(void) : void", "aClass", "anotherClass",
+ "anotherClass(const anotherClass &)", "anotherClass(void)", "aNamespace", "anEnumeration", "aFirstEnum",
+ "aSecondEnum", "aThirdEnum", "AStruct", "AMacro(x)" };
+
+ public SingleName_Method_Prefix_CompletionTest(String name) {
+ super(name);
+ }
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(SingleName_Method_Prefix_CompletionTest.class.getName());
+ suite.addTest(new SingleName_Method_Prefix_CompletionTest("testCompletionProposals"));
+ return suite;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
+ */
+ @Override
+ protected int getCompletionPosition() {
+ return getBuffer().indexOf(" a ") + 2;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
+ */
+ @Override
+ protected String getExpectedPrefix() {
+ return expectedPrefix;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
+ */
+ @Override
+ protected String[] getExpectedResultsValues() {
+ return expectedResults;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
+ */
+ @Override
+ protected String getFileName() {
+ return fileName;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
+ */
+ @Override
+ protected String getFileFullPath() {
+ return fileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
+ */
+ @Override
+ protected String getHeaderFileFullPath() {
+ return headerFileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
+ */
+ @Override
+ protected String getHeaderFileName() {
+ return headerFileName;
+ }
+
+}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/SingleName_NoPrefix_CompletionTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/SingleName_NoPrefix_CompletionTest.java
new file mode 100644
index 00000000000..0273b252b7f
--- /dev/null
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/SingleName_NoPrefix_CompletionTest.java
@@ -0,0 +1,105 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2009 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Rational Software - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.ui.tests.text.contentassist2;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * @author hamer
+ *
+ * Testing Single name reference, with prefix
+ *
+ */
+public class SingleName_NoPrefix_CompletionTest extends CompletionProposalsBaseTest {
+ private final String fileName = "CompletionTestStart15.cpp";
+ private final String fileFullPath = "resources/contentassist/" + fileName;
+ private final String headerFileName = "CompletionTestStart.h";
+ private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
+ private final String expectedPrefix = "";
+ private final String[] expectedResults = { "x : int", "aVariable : int", "xVariable : int",
+ "aFunction(void) : bool", "anotherFunction(void) : void", "foo(int x) : void", "xFunction(void) : bool",
+ "xOtherFunction(void) : void", "aClass", "anotherClass", "xOtherClass", "AStruct", "XStruct", "aNamespace",
+ "xNamespace", "anEnumeration", "xEnumeration", "aFirstEnum", "aSecondEnum", "aThirdEnum", "xFirstEnum",
+ "xSecondEnum", "xThirdEnum", "y : int"
+ // note: macros are omitted intentionally
+ };
+
+ public SingleName_NoPrefix_CompletionTest(String name) {
+ super(name);
+ }
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(SingleName_NoPrefix_CompletionTest.class.getName());
+ suite.addTest(new SingleName_NoPrefix_CompletionTest("testCompletionProposals"));
+ return suite;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
+ */
+ @Override
+ protected int getCompletionPosition() {
+ return getBuffer().indexOf(" ") + 2;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
+ */
+ @Override
+ protected String getExpectedPrefix() {
+ return expectedPrefix;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
+ */
+ @Override
+ protected String[] getExpectedResultsValues() {
+ return expectedResults;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
+ */
+ @Override
+ protected String getFileName() {
+ return fileName;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
+ */
+ @Override
+ protected String getFileFullPath() {
+ return fileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
+ */
+ @Override
+ protected String getHeaderFileFullPath() {
+ return headerFileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
+ */
+ @Override
+ protected String getHeaderFileName() {
+ return headerFileName;
+ }
+
+}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/SingleName_Prefix2_CompletionTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/SingleName_Prefix2_CompletionTest.java
new file mode 100644
index 00000000000..ec4b07f0ec2
--- /dev/null
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/SingleName_Prefix2_CompletionTest.java
@@ -0,0 +1,103 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2012 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Rational Software - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.ui.tests.text.contentassist2;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * @author hamer
+ *
+ * Testing Single name reference, with prefix
+ *
+ */
+public class SingleName_Prefix2_CompletionTest extends CompletionProposalsBaseTest {
+ private final String fileName = "CompletionTestStart14.cpp";
+ private final String fileFullPath = "resources/contentassist/" + fileName;
+ private final String headerFileName = "CompletionTestStart.h";
+ private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
+ private final String expectedPrefix = "a";
+ private final String[] expectedResults = { "aVariable : int", "aFunction(void) : bool",
+ "anotherFunction(void) : void", "aClass", "anotherClass", "aNamespace", "anEnumeration", "aFirstEnum",
+ "aSecondEnum", "aThirdEnum", "AMacro(x)", "AStruct" };
+
+ public SingleName_Prefix2_CompletionTest(String name) {
+ super(name);
+ // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=109724
+ //setExpectFailure(109724);
+ }
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(SingleName_Prefix2_CompletionTest.class.getName());
+ suite.addTest(new SingleName_Prefix2_CompletionTest("testCompletionProposals"));
+ return suite;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
+ */
+ @Override
+ protected int getCompletionPosition() {
+ return getBuffer().indexOf(" a ") + 2;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
+ */
+ @Override
+ protected String getExpectedPrefix() {
+ return expectedPrefix;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
+ */
+ @Override
+ protected String[] getExpectedResultsValues() {
+ return expectedResults;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
+ */
+ @Override
+ protected String getFileName() {
+ return fileName;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
+ */
+ @Override
+ protected String getFileFullPath() {
+ return fileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
+ */
+ @Override
+ protected String getHeaderFileFullPath() {
+ return headerFileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
+ */
+ @Override
+ protected String getHeaderFileName() {
+ return headerFileName;
+ }
+
+}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/SingleName_Prefix_CompletionTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/SingleName_Prefix_CompletionTest.java
new file mode 100644
index 00000000000..71bfc640d51
--- /dev/null
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/SingleName_Prefix_CompletionTest.java
@@ -0,0 +1,102 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2012 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Rational Software - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.ui.tests.text.contentassist2;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * @author hamer
+ *
+ * Testing Single name reference, Macro lookups
+ *
+ */
+public class SingleName_Prefix_CompletionTest extends CompletionProposalsBaseTest {
+ private final String fileName = "CompletionTestStart8.cpp";
+ private final String fileFullPath = "resources/contentassist/" + fileName;
+ private final String headerFileName = "CompletionTestStart.h";
+ private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
+ private final String expectedPrefix = "AM";
+ private final String[] expectedResults = {
+ // missing results
+ "AMacro(x)" };
+
+ public SingleName_Prefix_CompletionTest(String name) {
+ super(name);
+ // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=171708
+ }
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(SingleName_Prefix_CompletionTest.class.getName());
+ suite.addTest(new SingleName_Prefix_CompletionTest("testCompletionProposals"));
+ return suite;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
+ */
+ @Override
+ protected int getCompletionPosition() {
+ return getBuffer().indexOf(" AM ") + 3;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
+ */
+ @Override
+ protected String getExpectedPrefix() {
+ return expectedPrefix;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
+ */
+ @Override
+ protected String[] getExpectedResultsValues() {
+ return expectedResults;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
+ */
+ @Override
+ protected String getFileName() {
+ return fileName;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
+ */
+ @Override
+ protected String getFileFullPath() {
+ return fileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
+ */
+ @Override
+ protected String getHeaderFileFullPath() {
+ return headerFileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
+ */
+ @Override
+ protected String getHeaderFileName() {
+ return headerFileName;
+ }
+
+}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/TypeDef_NoPrefix_CompletionTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/TypeDef_NoPrefix_CompletionTest.java
new file mode 100644
index 00000000000..7ad3d422ff1
--- /dev/null
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/TypeDef_NoPrefix_CompletionTest.java
@@ -0,0 +1,101 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2012 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Rational Software - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.ui.tests.text.contentassist2;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * @author hamer
+ *
+ * Testing Typedef as a possible returned type.
+ * Bug#52948
+ *
+ */
+public class TypeDef_NoPrefix_CompletionTest extends CompletionProposalsBaseTest {
+
+ private final String fileName = "CompletionTestStart37.cpp";
+ private final String fileFullPath = "resources/contentassist/" + fileName;
+ private final String headerFileName = "CompletionTestStart.h";
+ private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
+ private final String expectedPrefix = "m";
+ private final String[] expectedResults = { "myType" };
+
+ public TypeDef_NoPrefix_CompletionTest(String name) {
+ super(name);
+ }
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(TypeDef_NoPrefix_CompletionTest.class.getName());
+ suite.addTest(new TypeDef_NoPrefix_CompletionTest("testCompletionProposals"));
+ return suite;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
+ */
+ @Override
+ protected int getCompletionPosition() {
+ return getBuffer().indexOf(" m ") + 2;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
+ */
+ @Override
+ protected String getExpectedPrefix() {
+ return expectedPrefix;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
+ */
+ @Override
+ protected String[] getExpectedResultsValues() {
+ return expectedResults;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
+ */
+ @Override
+ protected String getFileName() {
+ return fileName;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
+ */
+ @Override
+ protected String getFileFullPath() {
+ return fileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
+ */
+ @Override
+ protected String getHeaderFileFullPath() {
+ return headerFileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
+ */
+ @Override
+ protected String getHeaderFileName() {
+ return headerFileName;
+ }
+
+}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/TypeDef_Prefix_CompletionTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/TypeDef_Prefix_CompletionTest.java
new file mode 100644
index 00000000000..37f2f7f168e
--- /dev/null
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/TypeDef_Prefix_CompletionTest.java
@@ -0,0 +1,101 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2012 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Rational Software - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.ui.tests.text.contentassist2;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * @author hamer
+ *
+ * Testing Typedef as a possible returned type.
+ * Bug#52948
+ *
+ */
+public class TypeDef_Prefix_CompletionTest extends CompletionProposalsBaseTest {
+
+ private final String fileName = "CompletionTestStart37.cpp";
+ private final String fileFullPath = "resources/contentassist/" + fileName;
+ private final String headerFileName = "CompletionTestStart.h";
+ private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
+ private final String expectedPrefix = "m";
+ private final String[] expectedResults = { "myType" };
+
+ public TypeDef_Prefix_CompletionTest(String name) {
+ super(name);
+ }
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(TypeDef_Prefix_CompletionTest.class.getName());
+ suite.addTest(new TypeDef_Prefix_CompletionTest("testCompletionProposals"));
+ return suite;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
+ */
+ @Override
+ protected int getCompletionPosition() {
+ return getBuffer().indexOf(" m ") + 2;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
+ */
+ @Override
+ protected String getExpectedPrefix() {
+ return expectedPrefix;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
+ */
+ @Override
+ protected String[] getExpectedResultsValues() {
+ return expectedResults;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
+ */
+ @Override
+ protected String getFileName() {
+ return fileName;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
+ */
+ @Override
+ protected String getFileFullPath() {
+ return fileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
+ */
+ @Override
+ protected String getHeaderFileFullPath() {
+ return headerFileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
+ */
+ @Override
+ protected String getHeaderFileName() {
+ return headerFileName;
+ }
+
+}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/TypeRef_NoPrefix_CompletionTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/TypeRef_NoPrefix_CompletionTest.java
new file mode 100644
index 00000000000..3723ba1b929
--- /dev/null
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/TypeRef_NoPrefix_CompletionTest.java
@@ -0,0 +1,103 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2012 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Rational Software - Initial API and implementation
+ * Bryan Wilkinson (QNX)
+ *******************************************************************************/
+package org.eclipse.cdt.ui.tests.text.contentassist2;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * @author hamer
+ *
+ * Testing Type_Reference, with no prefix
+ * Bug#50471 : Wrong completion kind after the "using" keyword
+ *
+ */
+public class TypeRef_NoPrefix_CompletionTest extends CompletionProposalsBaseTest {
+
+ private final String fileName = "CompletionTestStart24.cpp";
+ private final String fileFullPath = "resources/contentassist/" + fileName;
+ private final String headerFileName = "CompletionTestStart.h";
+ private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
+ private final String expectedPrefix = "";
+ private final String[] expectedResults = { "aNamespace", "xNamespace" };
+
+ public TypeRef_NoPrefix_CompletionTest(String name) {
+ super(name);
+ // https://bugs.eclipse.org/bugs/show_bug.cgi?id=169860
+ }
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(TypeRef_NoPrefix_CompletionTest.class.getName());
+ suite.addTest(new TypeRef_NoPrefix_CompletionTest("testCompletionProposals"));
+ return suite;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
+ */
+ @Override
+ protected int getCompletionPosition() {
+ return getBuffer().indexOf("using ") + 6;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
+ */
+ @Override
+ protected String getExpectedPrefix() {
+ return expectedPrefix;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
+ */
+ @Override
+ protected String[] getExpectedResultsValues() {
+ return expectedResults;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
+ */
+ @Override
+ protected String getFileName() {
+ return fileName;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
+ */
+ @Override
+ protected String getFileFullPath() {
+ return fileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
+ */
+ @Override
+ protected String getHeaderFileFullPath() {
+ return headerFileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
+ */
+ @Override
+ protected String getHeaderFileName() {
+ return headerFileName;
+ }
+
+}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/TypeRef_Prefix_CompletionTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/TypeRef_Prefix_CompletionTest.java
new file mode 100644
index 00000000000..8d11e7530f5
--- /dev/null
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/TypeRef_Prefix_CompletionTest.java
@@ -0,0 +1,103 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2012 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Rational Software - Initial API and implementation
+ * Bryan Wilkinson (QNX)
+ *******************************************************************************/
+package org.eclipse.cdt.ui.tests.text.contentassist2;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * @author hamer
+ *
+ * Testing Type_Reference, with prefix
+ * Bug#50471 : Wrong completion kind after the "using" keyword
+ *
+ */
+public class TypeRef_Prefix_CompletionTest extends CompletionProposalsBaseTest {
+
+ private final String fileName = "CompletionTestStart25.cpp";
+ private final String fileFullPath = "resources/contentassist/" + fileName;
+ private final String headerFileName = "CompletionTestStart.h";
+ private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
+ private final String expectedPrefix = "a";
+ private final String[] expectedResults = { "aNamespace" };
+
+ public TypeRef_Prefix_CompletionTest(String name) {
+ super(name);
+ // https://bugs.eclipse.org/bugs/show_bug.cgi?id=169860
+ }
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(TypeRef_Prefix_CompletionTest.class.getName());
+ suite.addTest(new TypeRef_Prefix_CompletionTest("testCompletionProposals"));
+ return suite;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
+ */
+ @Override
+ protected int getCompletionPosition() {
+ return getBuffer().indexOf("using a ") + 7;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
+ */
+ @Override
+ protected String getExpectedPrefix() {
+ return expectedPrefix;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
+ */
+ @Override
+ protected String[] getExpectedResultsValues() {
+ return expectedResults;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
+ */
+ @Override
+ protected String getFileName() {
+ return fileName;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
+ */
+ @Override
+ protected String getFileFullPath() {
+ return fileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
+ */
+ @Override
+ protected String getHeaderFileFullPath() {
+ return headerFileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
+ */
+ @Override
+ protected String getHeaderFileName() {
+ return headerFileName;
+ }
+
+}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/VariableType_NestedPrefix_CompletionTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/VariableType_NestedPrefix_CompletionTest.java
new file mode 100644
index 00000000000..e416fb097cd
--- /dev/null
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/VariableType_NestedPrefix_CompletionTest.java
@@ -0,0 +1,101 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2012 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Rational Software - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.ui.tests.text.contentassist2;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * @author hamer
+ *
+ * Testing Scoped_Reference, with no prefix
+ * Bug#50152: Wrong context sent after a "::"
+ *
+ */
+public class VariableType_NestedPrefix_CompletionTest extends CompletionProposalsBaseTest {
+
+ private final String fileName = "CompletionTestStart38.cpp";
+ private final String fileFullPath = "resources/contentassist/" + fileName;
+ private final String headerFileName = "CompletionTestStart.h";
+ private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
+ private final String expectedPrefix = "";
+ private final String[] expectedResults = { "Foo(void)", "bar(void) : void", "fum(void) : void", "DEF", "x : int" };
+
+ public VariableType_NestedPrefix_CompletionTest(String name) {
+ super(name);
+ }
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(VariableType_NestedPrefix_CompletionTest.class.getName());
+ suite.addTest(new VariableType_NestedPrefix_CompletionTest("testCompletionProposals"));
+ return suite;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
+ */
+ @Override
+ protected int getCompletionPosition() {
+ return getBuffer().indexOf(":: ") + 2;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
+ */
+ @Override
+ protected String getExpectedPrefix() {
+ return expectedPrefix;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
+ */
+ @Override
+ protected String[] getExpectedResultsValues() {
+ return expectedResults;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
+ */
+ @Override
+ protected String getFileName() {
+ return fileName;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
+ */
+ @Override
+ protected String getFileFullPath() {
+ return fileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
+ */
+ @Override
+ protected String getHeaderFileFullPath() {
+ return headerFileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
+ */
+ @Override
+ protected String getHeaderFileName() {
+ return headerFileName;
+ }
+
+}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/VariableType_NoPrefix_CompletionTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/VariableType_NoPrefix_CompletionTest.java
new file mode 100644
index 00000000000..59726b2d0e0
--- /dev/null
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/VariableType_NoPrefix_CompletionTest.java
@@ -0,0 +1,102 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2012 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Rational Software - Initial API and implementation
+ * Bryan Wilkinson (QNX)
+ *******************************************************************************/
+package org.eclipse.cdt.ui.tests.text.contentassist2;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * @author hamer
+ *
+ * Testing Variable_type, with NO prefix
+ *
+ */
+public class VariableType_NoPrefix_CompletionTest extends CompletionProposalsBaseTest {
+ private final String fileName = "CompletionTestStart11.cpp";
+ private final String fileFullPath = "resources/contentassist/" + fileName;
+ private final String headerFileName = "CompletionTestStart.h";
+ private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
+ private final String expectedPrefix = "";
+ private final String[] expectedResults = { "aClass", "anotherClass", "aNamespace", "anEnumeration", "AStruct",
+ "xOtherClass", "xNamespace", "xEnumeration", "XStruct", };
+
+ public VariableType_NoPrefix_CompletionTest(String name) {
+ super(name);
+ // https://bugs.eclipse.org/bugs/show_bug.cgi?id=169860
+ }
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(VariableType_NoPrefix_CompletionTest.class.getName());
+ suite.addTest(new VariableType_NoPrefix_CompletionTest("testCompletionProposals"));
+ return suite;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
+ */
+ @Override
+ protected int getCompletionPosition() {
+ return getBuffer().indexOf(" ") + 2;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
+ */
+ @Override
+ protected String getExpectedPrefix() {
+ return expectedPrefix;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
+ */
+ @Override
+ protected String[] getExpectedResultsValues() {
+ return expectedResults;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
+ */
+ @Override
+ protected String getFileName() {
+ return fileName;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
+ */
+ @Override
+ protected String getFileFullPath() {
+ return fileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
+ */
+ @Override
+ protected String getHeaderFileFullPath() {
+ return headerFileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
+ */
+ @Override
+ protected String getHeaderFileName() {
+ return headerFileName;
+ }
+
+}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/VariableType_Prefix_CompletionTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/VariableType_Prefix_CompletionTest.java
new file mode 100644
index 00000000000..08c18e7ebac
--- /dev/null
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/VariableType_Prefix_CompletionTest.java
@@ -0,0 +1,102 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2012 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Rational Software - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.ui.tests.text.contentassist2;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * @author hamer
+ *
+ * Testing Variable_type completion kind, with a prefix
+ *
+ */
+public class VariableType_Prefix_CompletionTest extends CompletionProposalsBaseTest {
+ private final String fileName = "CompletionTestStart3.cpp";
+ private final String fileFullPath = "resources/contentassist/" + fileName;
+ private final String headerFileName = "CompletionTestStart.h";
+ private final String headerFileFullPath = "resources/contentassist/" + headerFileName;
+ private final String expectedPrefix = "a";
+ private final String[] expectedResults = { "aClass", "anotherClass", "aNamespace", "anEnumeration", "AStruct",
+ "AMacro(x)" };
+
+ public VariableType_Prefix_CompletionTest(String name) {
+ super(name);
+ // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=109724
+ // setExpectFailure(109724);
+ }
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(VariableType_Prefix_CompletionTest.class.getName());
+ suite.addTest(new VariableType_Prefix_CompletionTest("testCompletionProposals"));
+ return suite;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getCompletionPosition()
+ */
+ @Override
+ protected int getCompletionPosition() {
+ return getBuffer().indexOf(" a ") + 2;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedPrefix()
+ */
+ @Override
+ protected String getExpectedPrefix() {
+ return expectedPrefix;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getExpectedResultsValues()
+ */
+ @Override
+ protected String[] getExpectedResultsValues() {
+ return expectedResults;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileName()
+ */
+ @Override
+ protected String getFileName() {
+ return fileName;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getFileFullPath()
+ */
+ @Override
+ protected String getFileFullPath() {
+ return fileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileFullPath()
+ */
+ @Override
+ protected String getHeaderFileFullPath() {
+ return headerFileFullPath;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.codeassist.tests.CompletionProposalsTest#getHeaderFileName()
+ */
+ @Override
+ protected String getHeaderFileName() {
+ return headerFileName;
+ }
+
+}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/doctools/doxygen/DoxygenCCommentAutoEditStrategyTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/doctools/doxygen/DoxygenCCommentAutoEditStrategyTest.java
index 0747586e9bf..74fc3e19289 100644
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/doctools/doxygen/DoxygenCCommentAutoEditStrategyTest.java
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/doctools/doxygen/DoxygenCCommentAutoEditStrategyTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2006, 2015 Wind River Systems, Inc. and others.
+ * Copyright (c) 2006, 2020 Wind River Systems, Inc. and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -12,6 +12,8 @@
* Anton Leherbauer (Wind River Systems) - initial API and implementation
* Sergey Prigogin (Google)
* Andrew Ferguson (Symbian)
+ * Marco Stornelli <marco.stornelli@gmail.com> - Bug 333134
+ * Alexander Fedorov <alexander.fedorov@arsysop.ru> - Bug 333134, Bug 559193
*******************************************************************************/
package org.eclipse.cdt.ui.tests.text.doctools.doxygen;
@@ -23,6 +25,8 @@ import org.eclipse.cdt.core.model.ICProject;
import org.eclipse.cdt.core.model.ITranslationUnit;
import org.eclipse.cdt.core.testplugin.CProjectHelper;
import org.eclipse.cdt.core.testplugin.util.TestSourceReader;
+import org.eclipse.cdt.doxygen.DoxygenMetadata;
+import org.eclipse.cdt.doxygen.core.DoxygenPreferences;
import org.eclipse.cdt.internal.core.model.TranslationUnit;
import org.eclipse.cdt.internal.ui.text.CAutoIndentStrategy;
import org.eclipse.cdt.internal.ui.text.CTextTools;
@@ -33,6 +37,8 @@ import org.eclipse.cdt.ui.text.doctools.DefaultMultilineCommentAutoEditStrategy;
import org.eclipse.cdt.ui.text.doctools.doxygen.DoxygenMultilineAutoEditStrategy;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.preferences.IPreferenceMetadataStore;
+import org.eclipse.e4.core.contexts.EclipseContextFactory;
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.Document;
import org.eclipse.jface.text.IDocument;
@@ -45,6 +51,9 @@ import junit.framework.Test;
public class DoxygenCCommentAutoEditStrategyTest extends AbstractAutoEditTest {
private HashMap<String, String> fOptions;
protected ICProject fCProject;
+ private DoxygenPreferences doxygenPreferences;
+ private IPreferenceMetadataStore workspaceStorage;
+ private DoxygenMetadata doxygenMetadata;
/**
* @param name
@@ -62,6 +71,12 @@ public class DoxygenCCommentAutoEditStrategyTest extends AbstractAutoEditTest {
super.setUp();
fOptions = CCorePlugin.getOptions();
fCProject = CProjectHelper.createCCProject("test" + System.currentTimeMillis(), null);
+ DoxygenPreferences doxygenPreferences = EclipseContextFactory
+ .getServiceContext(CCorePlugin.getDefault().getBundle().getBundleContext())
+ .get(DoxygenPreferences.class);
+ doxygenMetadata = doxygenPreferences.metadata();
+ workspaceStorage = doxygenPreferences.workspaceStorage();
+ doxygenMetadata.booleanOptions().forEach(o -> workspaceStorage.save(o.defaultValue(), o));
}
/*
@@ -318,8 +333,8 @@ public class DoxygenCCommentAutoEditStrategyTest extends AbstractAutoEditTest {
// /**
// * X
// */
- // enum A { B,//!< B
- // C }; //!< C
+ // enum A { B,/**< B */
+ // C }; /**< C */
public void testAutoDocCommentContent13() throws CoreException {
assertAutoEditBehaviour();
}
@@ -331,7 +346,7 @@ public class DoxygenCCommentAutoEditStrategyTest extends AbstractAutoEditTest {
// /**
// * X
// */
- // enum A { B,//!< B
+ // enum A { B,/**< B */
// C };//!< C
public void testAutoDocCommentContent14() throws CoreException {
assertAutoEditBehaviour();
@@ -345,7 +360,7 @@ public class DoxygenCCommentAutoEditStrategyTest extends AbstractAutoEditTest {
// * X
// */
// enum A { B,//!< B
- // C };//!< C
+ // C };/**< C */
public void testAutoDocCommentContent15() throws CoreException {
assertAutoEditBehaviour();
}
@@ -488,6 +503,45 @@ public class DoxygenCCommentAutoEditStrategyTest extends AbstractAutoEditTest {
assertAutoEditBehaviour();
}
+ // /*!X
+ // enum A { B,
+ // C };
+
+ // /*!
+ // * X
+ // */
+ // enum A { B,/*!< B */
+ // C }; /*!< C */
+ public void testAutoDocCommentContent22() throws CoreException {
+ assertAutoEditBehaviour();
+ }
+
+ // /*!X
+ // enum A { B,
+ // C };//!< C
+
+ // /*!
+ // * X
+ // */
+ // enum A { B,/*!< B */
+ // C };//!< C
+ public void testAutoDocCommentContent23() throws CoreException {
+ assertAutoEditBehaviour();
+ }
+
+ // /*!X
+ // enum A { B,//!< B
+ // C };
+
+ // /*!
+ // * X
+ // */
+ // enum A { B,//!< B
+ // C };/*!< C */
+ public void testAutoDocCommentContent24() throws CoreException {
+ assertAutoEditBehaviour();
+ }
+
/** Declarations **/
// /**X
@@ -674,6 +728,89 @@ public class DoxygenCCommentAutoEditStrategyTest extends AbstractAutoEditTest {
assertAutoEditBehaviour();
}
+ ///**X
+ //void foo() {}
+
+ ///**
+ // * X@brief ${whitespace_eol}
+ // * ${whitespace_eol}
+ // */
+ //void foo() {}
+ public void testAutoDocCommentBrief() throws CoreException {
+ workspaceStorage.save(true, doxygenMetadata.useBriefTagOption());
+ assertAutoEditBehaviour();
+ }
+
+ ///**X
+ //void foo() {}
+
+ ///**
+ // * X@brief ${whitespace_eol}
+ // */
+ //void foo() {}
+ public void testAutoDocCommentBriefNoNewLine() throws CoreException {
+ workspaceStorage.save(true, doxygenMetadata.useBriefTagOption());
+ workspaceStorage.save(false, doxygenMetadata.newLineAfterBriefOption());
+ assertAutoEditBehaviour();
+ }
+
+ ///**X
+ //void foo() {}
+
+ ///**
+ // * X@fn void foo()
+ // */
+ //void foo() {}
+ public void testAutoDocCommentStructured() throws CoreException {
+ workspaceStorage.save(true, doxygenMetadata.useStructuralCommandsOption());
+ assertAutoEditBehaviour();
+ }
+
+ ///**X
+ //void foo() {}
+
+ ///**
+ // * X\brief ${whitespace_eol}
+ // * ${whitespace_eol}
+ // */
+ //void foo() {}
+ public void testAutoDocCommentNoJavadoc() throws CoreException {
+ workspaceStorage.save(true, doxygenMetadata.useBriefTagOption());
+ workspaceStorage.save(false, doxygenMetadata.useJavadocStyleOption());
+ assertAutoEditBehaviour();
+ }
+
+ ///**X
+ //void foo() {}
+
+ ///**
+ // * X@brief ${whitespace_eol}
+ // * ${whitespace_eol}
+ // * @pre ${whitespace_eol}
+ // * @post ${whitespace_eol}
+ // */
+ //void foo() {}
+ public void testAutoDocCommentPrePostTags() throws CoreException {
+ workspaceStorage.save(true, doxygenMetadata.useBriefTagOption());
+ workspaceStorage.save(true, doxygenMetadata.usePrePostTagOption());
+ assertAutoEditBehaviour();
+ }
+
+ ///**X
+ //template<class T>
+ //T foo() {}
+
+ ///**
+ // * X${whitespace_eol}
+ // * @tparam T
+ // * @return
+ // */
+ //template<class T>
+ //T foo() {}
+ public void testTemplateParameters_Bug562368() throws CoreException {
+ assertAutoEditBehaviour();
+ }
+
protected void assertAutoEditBehaviour() throws CoreException {
CTextTools textTools = CUIPlugin.getDefault().getTextTools();
final IDocument doc = new Document();
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/doctools/doxygen/DoxygenCCommentSingleAutoEditStrategyTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/doctools/doxygen/DoxygenCCommentSingleAutoEditStrategyTest.java
index c46c0397482..f1338662800 100644
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/doctools/doxygen/DoxygenCCommentSingleAutoEditStrategyTest.java
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/doctools/doxygen/DoxygenCCommentSingleAutoEditStrategyTest.java
@@ -351,8 +351,8 @@ public class DoxygenCCommentSingleAutoEditStrategyTest extends AbstractAutoEditT
// ///
// /// X
- // enum A { B,//!< B
- // C }; //!< C
+ // enum A { B,///< B
+ // C }; ///< C
public void testAutoDocCommentContent13() throws CoreException {
assertAutoEditBehaviour();
}
@@ -363,7 +363,7 @@ public class DoxygenCCommentSingleAutoEditStrategyTest extends AbstractAutoEditT
// ///
// /// X
- // enum A { B,//!< B
+ // enum A { B,///< B
// C };//!< C
public void testAutoDocCommentContent14() throws CoreException {
assertAutoEditBehaviour();
@@ -376,7 +376,7 @@ public class DoxygenCCommentSingleAutoEditStrategyTest extends AbstractAutoEditT
// ///
// /// X
// enum A { B,//!< B
- // C };//!< C
+ // C };///< C
public void testAutoDocCommentContent15() throws CoreException {
assertAutoEditBehaviour();
}
@@ -387,8 +387,8 @@ public class DoxygenCCommentSingleAutoEditStrategyTest extends AbstractAutoEditT
// ///
// /// X
- // enum A { B,//!< B
- // C }; //!< C
+ // enum A { B,///< B
+ // C }; ///< C
public void _testAutoDocCommentContent16() throws CoreException {
/*
* Indenting in the presence of tabs is not handled at the moment.
@@ -498,6 +498,42 @@ public class DoxygenCCommentSingleAutoEditStrategyTest extends AbstractAutoEditT
assertAutoEditBehaviour();
}
+ // //!X
+ // enum A { B,
+ // C };
+
+ // //!
+ // //! X
+ // enum A { B,//!< B
+ // C }; //!< C
+ public void testAutoDocCommentContent22() throws CoreException {
+ assertAutoEditBehaviour();
+ }
+
+ // //!X
+ // enum A { B,
+ // C };//!< C
+
+ // //!
+ // //! X
+ // enum A { B,//!< B
+ // C };//!< C
+ public void testAutoDocCommentContent23() throws CoreException {
+ assertAutoEditBehaviour();
+ }
+
+ // //!X
+ // enum A { B,//!< B
+ // C };
+
+ // //!
+ // //! X
+ // enum A { B,//!< B
+ // C };//!< C
+ public void testAutoDocCommentContent24() throws CoreException {
+ assertAutoEditBehaviour();
+ }
+
/** Declarations **/
// ///X
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selection/CPPSelectionIndexerTests.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selection/CPPSelectionIndexerTests.java
new file mode 100644
index 00000000000..af240ce66f7
--- /dev/null
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selection/CPPSelectionIndexerTests.java
@@ -0,0 +1,1417 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2015 Wind River Systems, Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Markus Schorn - initial API and implementation
+ * Sergey Prigogin (Google)
+ *******************************************************************************/
+package org.eclipse.cdt.ui.tests.text.selection;
+
+import java.io.IOException;
+
+import org.eclipse.cdt.core.CCorePlugin;
+import org.eclipse.cdt.core.dom.IPDOMManager;
+import org.eclipse.cdt.core.dom.ast.IASTFileLocation;
+import org.eclipse.cdt.core.dom.ast.IASTName;
+import org.eclipse.cdt.core.dom.ast.IASTNameOwner;
+import org.eclipse.cdt.core.dom.ast.IASTNode;
+import org.eclipse.cdt.core.dom.ast.IBinding;
+import org.eclipse.cdt.core.dom.ast.IMacroBinding;
+import org.eclipse.cdt.core.index.IIndex;
+import org.eclipse.cdt.core.model.ICProject;
+import org.eclipse.cdt.core.testplugin.CProjectHelper;
+import org.eclipse.cdt.core.testplugin.util.TestSourceReader;
+import org.eclipse.cdt.internal.core.dom.parser.ASTNode;
+import org.eclipse.cdt.ui.testplugin.CTestPlugin;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.part.FileEditorInput;
+
+import junit.framework.Test;
+
+/**
+ * Test Ctrl-F3/F3 with the DOM Indexer for a C++ project.
+ */
+public class CPPSelectionIndexerTests extends BaseSelectionTestsIndexer {
+ protected String sourceIndexerID;
+ protected IIndex index;
+
+ public CPPSelectionIndexerTests(String name) {
+ super(name);
+ sourceIndexerID = IPDOMManager.ID_FAST_INDEXER;
+ }
+
+ public static Test suite() {
+ return suite(CPPSelectionIndexerTests.class);
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ // Create temp project
+ fCProject = createProject("CPPSelectionTestsDOMIndexerProject");
+ assertNotNull("Unable to create project", fCProject);
+ // MakeProjectNature.addNature(project, new NullProgressMonitor());
+ // ScannerConfigNature.addScannerConfigNature(project);
+ // PerProjectSICollector.calculateCompilerBuiltins(project);
+
+ CCorePlugin.getIndexManager().setIndexerId(fCProject, sourceIndexerID);
+ index = CCorePlugin.getIndexManager().getIndex(fCProject);
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ closeAllEditors();
+ CProjectHelper.delete(fCProject);
+ super.tearDown();
+ }
+
+ private ICProject createProject(String projectName) throws CoreException {
+ ICProject cPrj = CProjectHelper.createCCProject(projectName, "bin", IPDOMManager.ID_NO_INDEXER);
+ return cPrj;
+ }
+
+ protected StringBuilder[] getContents(int sections) throws IOException {
+ return TestSourceReader.getContentsForTest(CTestPlugin.getDefault().getBundle(), "ui",
+ CPPSelectionIndexerTests.class, getName(), sections);
+ }
+
+ private void assertNode(String name, int offset, IASTNode node) {
+ assertNotNull(node);
+ assertEquals(node.toString(), name);
+ IASTFileLocation loc = node.getFileLocation();
+ assertEquals(loc.getNodeOffset(), offset);
+ assertEquals(loc.getNodeLength(), name.length());
+ }
+
+ // // header
+ // class Point{
+ // public:
+ // Point(): xCoord(0){}
+ // Point& operator=(const Point &rhs){return *this;}
+ // void* operator new [ ] (unsigned int);
+ // private:
+ // int xCoord;
+ // };
+
+ // // source
+ // #include "test93281.h"
+ // static const Point zero;
+ // int main(int argc, char **argv) {
+ // Point *p2 = new Point();
+ // p2-> operator // /* operator */ // F3 in the middle
+ // // of "operator" should work
+ // // \
+ // /* */
+ // =(zero); // line B
+ // p2->operator /* oh yeah */ new // F3 in the middle of "operator"
+ // // should work
+ // //
+ // [ /* sweet */ ] //
+ // (2);
+ // return (0);
+ // }
+ public void testBug93281() throws Exception {
+ StringBuilder[] buffers = getContents(2);
+ String hcode = buffers[0].toString();
+ String scode = buffers[1].toString();
+ IFile hfile = importFile("test93281.h", hcode);
+ IFile file = importFile("test93281.cpp", scode);
+ waitUntilFileIsIndexed(index, file);
+
+ int offset = scode.indexOf("p2->operator") + 6;
+ IASTNode node = testF3(file, offset);
+
+ assertTrue(node instanceof IASTName);
+ assertEquals(((IASTName) node).toString(), "operator new[]");
+ assertEquals(((ASTNode) node).getOffset(), hcode.indexOf("operator new"));
+ assertEquals(((ASTNode) node).getLength(), 16);
+
+ offset = scode.indexOf("p2-> operator") + 11;
+ node = testF3(file, offset);
+
+ assertTrue(node instanceof IASTName);
+ assertEquals(((IASTName) node).toString(), "operator =");
+ assertEquals(((ASTNode) node).getOffset(), hcode.indexOf("operator="));
+ assertEquals(((ASTNode) node).getLength(), 9);
+ }
+
+ // template <class T>
+ // inline void testTemplate(T& aRef);
+ //
+ // class Temp {
+ // };
+
+ // #include <stdio.h>
+ // #include <stdlib.h>
+ // #include "test.h"
+ // int main(void) {
+ // puts("Hello World!!!");
+ //
+ // Temp testFile;
+ // testTemplate(testFile);
+ //
+ // return EXIT_SUCCESS;
+ // }
+ public void testBug207320() throws Exception {
+ StringBuilder[] buffers = getContents(2);
+ String hcode = buffers[0].toString();
+ String scode = buffers[1].toString();
+ IFile hfile = importFile("test.h", hcode);
+ IFile file = importFile("test.cpp", scode);
+ waitUntilFileIsIndexed(index, file);
+
+ int hoffset = hcode.indexOf("testTemplate");
+ int soffset = scode.indexOf("testTemplate");
+ IASTNode def = testF3(file, soffset + 2);
+ assertTrue(def instanceof IASTName);
+ assertEquals("testTemplate", ((IASTName) def).toString());
+ assertEquals(hoffset, ((ASTNode) def).getOffset());
+ assertEquals(12, ((ASTNode) def).getLength());
+ }
+
+ // template<typename T>
+ // class C {
+ // public: void assign(const T* s) {}
+ // };
+
+ // #include "testTemplateClassMethod.h"
+ // void main() {
+ // C<char> a;
+ // a.assign("aaa");
+ // }
+ public void testTemplateClassMethod_207320() throws Exception {
+ StringBuilder[] buffers = getContents(2);
+ String hcode = buffers[0].toString();
+ String scode = buffers[1].toString();
+ IFile hfile = importFile("testTemplateClassMethod.h", hcode);
+ IFile file = importFile("testTemplateClassMethod.cpp", scode);
+ waitUntilFileIsIndexed(index, file);
+
+ int hoffset = hcode.indexOf("assign");
+ int soffset = scode.indexOf("assign");
+ IASTNode def = testF3(file, soffset + 2);
+ assertTrue(def instanceof IASTName);
+ assertEquals("assign", ((IASTName) def).toString());
+ assertEquals(hoffset, ((ASTNode) def).getOffset());
+ assertEquals(6, ((ASTNode) def).getLength());
+ }
+
+ // // the header
+ // extern int MyInt; // MyInt is in another file
+ // extern const int MyConst; // MyConst is in another file
+ // void MyFunc(int); // often used in header files
+ // typedef int NewInt; // a normal typedef statement
+ // struct MyStruct { int Member1; int Member2; };
+ // class MyClass { int MemberVar; };
+
+ // #include "basicDefinition.h"
+ // int MyInt;
+ // extern const int MyConst = 42;
+ // void MyFunc(int a) { cout << a << endl; }
+ // class MyClass;
+ // struct MyStruct;
+ public void testBasicDefinition() throws Exception {
+ StringBuilder[] buffers = getContents(2);
+ String hcode = buffers[0].toString();
+ String scode = buffers[1].toString();
+ IFile hfile = importFile("basicDefinition.h", hcode);
+ IFile file = importFile("testBasicDefinition.cpp", scode);
+ waitUntilFileIsIndexed(index, file);
+
+ int hoffset = hcode.indexOf("MyInt");
+ int soffset = scode.indexOf("MyInt");
+ IASTNode decl = testF3(file, soffset + 2);
+ IASTNode def = testF3(hfile, hoffset + 2);
+ assertTrue(def instanceof IASTName);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("MyInt", ((IASTName) decl).toString());
+ assertEquals(hoffset, ((ASTNode) decl).getOffset());
+ assertEquals(5, ((ASTNode) decl).getLength());
+ assertEquals("MyInt", ((IASTName) def).toString());
+ assertEquals(soffset, def.getFileLocation().getNodeOffset());
+ assertEquals(5, ((ASTNode) def).getLength());
+
+ hoffset = hcode.indexOf("MyConst");
+ soffset = scode.indexOf("MyConst");
+ decl = testF3(file, soffset + 2);
+ def = testF3(hfile, hoffset + 2);
+ assertTrue(def instanceof IASTName);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("MyConst", ((IASTName) decl).toString());
+ assertEquals(hoffset, ((ASTNode) decl).getOffset());
+ assertEquals(7, ((ASTNode) decl).getLength());
+ assertEquals("MyConst", ((IASTName) def).toString());
+ assertEquals(soffset, def.getFileLocation().getNodeOffset());
+ assertEquals(7, ((ASTNode) def).getLength());
+
+ hoffset = hcode.indexOf("MyFunc");
+ soffset = scode.indexOf("MyFunc");
+ decl = testF3(file, soffset + 2);
+ def = testF3(hfile, hoffset + 2);
+ assertTrue(def instanceof IASTName);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("MyFunc", ((IASTName) decl).toString());
+ assertEquals(hoffset, ((ASTNode) decl).getOffset());
+ assertEquals(6, ((ASTNode) decl).getLength());
+ assertEquals("MyFunc", ((IASTName) def).toString());
+ assertEquals(soffset, def.getFileLocation().getNodeOffset());
+ assertEquals(6, ((ASTNode) def).getLength());
+
+ hoffset = hcode.indexOf("MyStruct");
+ soffset = scode.indexOf("MyStruct");
+ decl = testF3(file, soffset + 2);
+ def = testF3(hfile, hoffset + 2);
+ assertTrue(def instanceof IASTName);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("MyStruct", ((IASTName) decl).toString());
+ assertEquals(hoffset, ((ASTNode) decl).getOffset());
+ assertEquals(8, ((ASTNode) decl).getLength());
+ assertEquals("MyStruct", ((IASTName) def).toString());
+ assertEquals(hoffset, def.getFileLocation().getNodeOffset());
+ assertEquals(8, ((ASTNode) def).getLength());
+
+ hoffset = hcode.indexOf("MyClass");
+ soffset = scode.indexOf("MyClass");
+ decl = testF3(file, soffset + 2);
+ def = testF3(hfile, hoffset + 2);
+ assertTrue(def instanceof IASTName);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("MyClass", ((IASTName) decl).toString());
+ assertEquals(hoffset, ((ASTNode) decl).getOffset());
+ assertEquals(7, ((ASTNode) decl).getLength());
+ assertEquals("MyClass", ((IASTName) def).toString());
+ assertEquals(hoffset, def.getFileLocation().getNodeOffset());
+ assertEquals(7, ((ASTNode) def).getLength());
+ }
+
+ // // the header
+ // namespace N {
+ // template < class T > class AAA { T _t; };
+ // };
+
+ // #include "testBasicTemplateInstance.h"
+ // N::AAA<int> a;
+ public void testBasicTemplateInstance_207320() throws Exception {
+ StringBuilder[] buffers = getContents(2);
+ String hcode = buffers[0].toString();
+ String scode = buffers[1].toString();
+ IFile hfile = importFile("testBasicTemplateInstance.h", hcode);
+ IFile file = importFile("testBasicTemplateInstance.cpp", scode);
+ waitUntilFileIsIndexed(index, file);
+
+ int hoffset = hcode.indexOf("AAA");
+ int soffset = scode.indexOf("AAA<int>");
+ IASTNode decl1 = testF3(file, soffset, 3);
+ assertTrue(decl1 instanceof IASTName);
+ assertEquals("AAA", ((IASTName) decl1).toString());
+ assertEquals(hoffset, decl1.getFileLocation().getNodeOffset());
+ assertEquals(3, ((ASTNode) decl1).getLength());
+
+ IASTNode decl2 = testF3(file, soffset, 8);
+ assertEquals("AAA", ((IASTName) decl2).toString());
+ assertEquals(hoffset, decl2.getFileLocation().getNodeOffset());
+ assertEquals(3, ((ASTNode) decl2).getLength());
+ }
+
+ // // the header
+ // class X {
+ // public:
+ // X(int); // openReferences fails to find the constructor in g()
+ // };
+
+ // #include "testBug86829A.h"
+ // X f(X);
+ // void g()
+ // {
+ // X b = f(X(2)); // openDeclarations on X(int) shall find constructor
+ // }
+ public void testBug86829A() throws Exception {
+ StringBuilder[] buffers = getContents(2);
+ String hcode = buffers[0].toString();
+ String scode = buffers[1].toString();
+ IFile hfile = importFile("testBug86829A.h", hcode);
+ IFile file = importFile("testBug86829A.cpp", scode);
+ waitUntilFileIsIndexed(index, file);
+
+ int offset = scode.indexOf("X(2)");
+ int doffset = hcode.indexOf("X(int)");
+ IASTNode decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("X", ((IASTName) decl).toString());
+ assertEquals(doffset, decl.getFileLocation().getNodeOffset());
+ assertEquals(1, ((ASTNode) decl).getLength());
+ }
+
+ // // the header
+ // class X {
+ // public:
+ // operator int();
+ // };
+ // class Y {
+ // public:
+ // operator X();
+ // };
+
+ // #include "testBug86829B.h"
+ // void testfunc() {
+ // Y a;
+ // int c = X(a); // OK: a.operator X().operator int()
+ // }
+ public void _testBug86829B() throws Exception {
+ StringBuilder[] buffers = getContents(2);
+ String hcode = buffers[0].toString();
+ String scode = buffers[1].toString();
+ IFile hfile = importFile("testBug86829B.h", hcode);
+ IFile file = importFile("testBug86829B.cpp", scode);
+ waitUntilFileIsIndexed(index, file);
+
+ int offset = scode.indexOf("X(a)");
+ int doffset = hcode.indexOf("X()");
+ IASTNode decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals(decl.toString(), "X");
+ assertEquals(doffset, decl.getFileLocation().getNodeOffset());
+ assertEquals(1, ((ASTNode) decl).getLength());
+ }
+
+ // // the header
+ // extern int a; // declares
+ // extern const int c = 1; // defines
+ // struct S {int a; int b;}; // defines
+ // struct X { // defines
+ // int x; // defines nonstatic data member
+ // static int y; // declares static data member
+ // X(): x(0) { } // defines a constructor of
+ // };
+ // enum E {up, down}; // defines
+ // namespace N {int d;} // defines
+ // namespace N1 = N; // defines
+ // int f(int); // declares
+ // extern X anotherX; // declares
+
+ // #include "testCPPSpecDeclsDefs.h"
+ // int a; // defines
+ // int X::y = 1; // defines
+ // X anX; // defines variable, implicitly calls ctor
+ // extern const int c; // declares
+ // int f(int x) {return x+a;} // defines
+ // struct S; // declares
+ // typedef int Int; // declares
+ // using N::d; // declares
+ // S s;
+ // Int lhs= s.a+s.b+up+down+anX+0;
+ public void testCPPSpecDeclsDefs() throws Exception {
+ StringBuilder[] buffers = getContents(2);
+ String hcode = buffers[0].toString();
+ String scode = buffers[1].toString();
+ IFile hfile = importFile("testCPPSpecDeclsDefs.h", hcode);
+ IFile file = importFile("testCPPSpecDeclsDefs.cpp", scode);
+ waitUntilFileIsIndexed(index, file);
+
+ int offset0 = hcode.indexOf("a;");
+ int offset1 = scode.indexOf("a;");
+ IASTNode decl = testF3(hfile, offset0);
+ assertNode("a", offset1, decl);
+ decl = testF3(file, offset1);
+ assertNode("a", offset0, decl);
+
+ offset0 = hcode.indexOf("int c") + 4;
+ offset1 = scode.indexOf("int c") + 4;
+ decl = testF3(hfile, offset0);
+ assertNode("c", offset1, decl);
+ decl = testF3(file, offset1);
+ assertNode("c", offset0, decl);
+
+ offset0 = hcode.indexOf("f(int");
+ offset1 = scode.indexOf("f(int");
+ decl = testF3(hfile, offset0);
+ assertNode("f", offset1, decl);
+ decl = testF3(file, offset1);
+ assertNode("f", offset0, decl);
+
+ offset0 = scode.indexOf("x)");
+ decl = testF3(file, offset0);
+ assertNode("x", offset0, decl);
+
+ offset1 = scode.indexOf("x+a");
+ decl = testF3(file, offset1);
+ assertNode("x", offset0, decl);
+
+ offset0 = scode.indexOf("a;");
+ offset1 = scode.indexOf("a;}");
+ decl = testF3(file, offset1);
+ assertNode("a", offset0, decl);
+
+ offset0 = hcode.indexOf("S");
+ offset1 = scode.indexOf("S;");
+ int offset2 = scode.indexOf("S", offset1);
+ decl = testF3(hfile, offset0);
+ assertNode("S", offset0, decl);
+ decl = testF3(file, offset1);
+ assertNode("S", offset0, decl);
+ decl = testF3(file, offset2);
+ assertNode("S", offset0, decl);
+
+ offset0 = hcode.indexOf("a; int b;};");
+ offset1 = scode.indexOf("a+s.b");
+ decl = testF3(hfile, offset0);
+ assertNode("a", offset0, decl);
+ decl = testF3(file, offset1);
+ assertNode("a", offset0, decl);
+
+ offset0 = hcode.indexOf("b;};");
+ offset1 = scode.indexOf("s.b") + 2;
+ decl = testF3(hfile, offset0);
+ assertNode("b", offset0, decl);
+ decl = testF3(file, offset1);
+ assertNode("b", offset0, decl);
+
+ offset0 = hcode.indexOf("X");
+ offset1 = scode.indexOf("X");
+ offset2 = scode.indexOf("X", offset1 + 1);
+ decl = testF3(hfile, offset0);
+ assertNode("X", offset0, decl);
+ decl = testF3(file, offset1);
+ assertNode("X", offset0, decl);
+ decl = testF3(file, offset2);
+ assertNode("X", offset0, decl);
+
+ offset0 = hcode.indexOf("x;");
+ offset1 = hcode.indexOf("x", offset0 + 1);
+ decl = testF3(hfile, offset0);
+ assertNode("x", offset0, decl);
+ decl = testF3(hfile, offset1);
+ assertNode("x", offset0, decl);
+
+ offset0 = hcode.indexOf("y;");
+ offset1 = scode.indexOf("y");
+ decl = testF3(hfile, offset0);
+ assertNode("y", offset1, decl);
+ decl = testF3(file, offset1);
+ assertNode("y", offset0, decl);
+
+ offset0 = hcode.indexOf("X()");
+ decl = testF3(hfile, offset0);
+ assertNode("X", offset0, decl);
+
+ offset0 = hcode.indexOf("up");
+ offset1 = scode.indexOf("up");
+ decl = testF3(hfile, offset0);
+ assertNode("up", offset0, decl);
+ decl = testF3(file, offset1);
+ assertNode("up", offset0, decl);
+
+ offset0 = hcode.indexOf("down");
+ offset1 = scode.indexOf("down");
+ decl = testF3(hfile, offset0);
+ assertNode("down", offset0, decl);
+ decl = testF3(file, offset1);
+ assertNode("down", offset0, decl);
+
+ offset0 = hcode.indexOf("N");
+ offset1 = hcode.indexOf("N;", offset0 + 1);
+ offset2 = scode.indexOf("N");
+ decl = testF3(hfile, offset0);
+ assertNode("N", offset0, decl);
+ decl = testF3(hfile, offset1);
+ assertNode("N", offset0, decl);
+ decl = testF3(file, offset2);
+ assertNode("N", offset0, decl);
+
+ offset0 = hcode.indexOf("d;");
+ offset1 = scode.indexOf("d;");
+ decl = testF3(hfile, offset0);
+ assertNode("d", offset0, decl);
+ // does not work, created separate testcase
+ // decl= testF3(file, offset1);
+ // assertNode("d", offset0, decl);
+
+ offset0 = hcode.indexOf("N1");
+ decl = testF3(hfile, offset0);
+ assertNode("N1", offset0, decl);
+
+ offset0 = scode.indexOf("anX");
+ offset1 = scode.indexOf("anX", offset0 + 1);
+ decl = testF3(file, offset0);
+ assertNode("X", hcode.indexOf("X()"), decl);
+ decl = testF3(file, offset1);
+ assertNode("anX", offset0, decl);
+
+ offset0 = scode.indexOf("Int");
+ offset1 = scode.indexOf("Int", offset0 + 1);
+ decl = testF3(file, offset0);
+ assertNode("Int", offset0, decl);
+ decl = testF3(file, offset1);
+ assertNode("Int", offset0, decl);
+ }
+
+ // // the header
+ // namespace N {int d;} // defines
+
+ // #include "testBug168533.h"
+ // using N::d; // declares
+ // int a= d;
+ public void testBug168533() throws Exception {
+ StringBuilder[] buffers = getContents(2);
+ String hcode = buffers[0].toString();
+ String scode = buffers[1].toString();
+ IFile hfile = importFile("testBug168533.h", hcode);
+ IFile file = importFile("testBug168533.cpp", scode);
+ waitUntilFileIsIndexed(index, file);
+
+ int offset0 = hcode.indexOf("d;");
+ int offset1 = scode.indexOf("d;");
+ int offset2 = scode.indexOf("d", offset1);
+ IASTNode decl = testF3(hfile, offset0);
+ assertNode("d", offset0, decl);
+ decl = testF3(file, offset1);
+ assertNode("d", offset0, decl);
+ decl = testF3(file, offset2);
+ assertNode("d", offset0, decl);
+ }
+
+ // class Overflow {
+ // public:
+ // Overflow(char,double,double);
+ // };
+
+ // #include "testBug95225.h"
+ // void f(double x) {
+ // throw Overflow('+',x,3.45e107);
+ // }
+ // int foo() {
+ // try {
+ // f(1.2);
+ // }
+ // catch(Overflow& oo) {
+ // // handle exceptions of type Overflow here
+ // }
+ // }
+ public void testBug95225() throws Exception {
+ StringBuilder[] buffers = getContents(2);
+ String hcode = buffers[0].toString();
+ String scode = buffers[1].toString();
+ IFile hfile = importFile("testBug95225.h", hcode);
+ IFile file = importFile("testBug95225.cpp", scode);
+ waitUntilFileIsIndexed(index, file);
+ IASTNode decl;
+ int offset0, offset1;
+
+ offset0 = hcode.indexOf("Overflow");
+ offset1 = scode.indexOf("rflow&");
+ decl = testF3(file, offset1);
+ assertNode("Overflow", offset0, decl);
+ decl = testF3(hfile, offset0);
+ assertNode("Overflow", offset0, decl);
+
+ offset0 = hcode.indexOf("Overflow(");
+ offset1 = scode.indexOf("rflow('+'");
+ decl = testF3(file, offset1);
+ assertNode("Overflow", offset0, decl);
+ decl = testF3(hfile, offset0);
+ assertNode("Overflow", offset0, decl);
+
+ offset0 = scode.indexOf("x");
+ offset1 = scode.indexOf("x", offset0);
+ decl = testF3(file, offset0);
+ assertNode("x", offset0, decl);
+ decl = testF3(file, offset1);
+ assertNode("x", offset0, decl);
+ }
+
+ // struct A { }; // implicitly declared A::operator=
+ // struct B : A {
+ // B& operator=(const B &);
+ // };
+
+ // #include "testBug95202.h"
+ // B& B::operator=(const B& s) {
+ // this->B::operator=(s); // wellformed
+ // return *this;
+ // }
+ public void testBug95202() throws Exception {
+ StringBuilder[] buffers = getContents(2);
+ String hcode = buffers[0].toString();
+ String scode = buffers[1].toString();
+ IFile hfile = importFile("testBug95202.h", hcode);
+ IFile file = importFile("testBug95202.cpp", scode);
+ waitUntilFileIsIndexed(index, file);
+ IASTNode decl;
+ int offset0, offset1;
+
+ offset0 = scode.indexOf("s)");
+ offset1 = scode.indexOf("s);", offset0 + 1);
+ decl = testF3(file, offset0);
+ assertNode("s", offset0, decl);
+ decl = testF3(file, offset1);
+ assertNode("s", offset0, decl);
+ }
+
+ // extern int abc;
+
+ // #include "testBug101287.h"
+ // int main(int argc, char **argv) {
+ // abc;
+ // }
+ public void testBug101287() throws Exception {
+ StringBuilder[] buffers = getContents(2);
+ String hcode = buffers[0].toString();
+ String scode = buffers[1].toString();
+ IFile hfile = importFile("testBug101287.h", hcode);
+ IFile file = importFile("testBug101287.cpp", scode);
+ waitUntilFileIsIndexed(index, file);
+ IASTNode decl;
+ int offset0, offset1;
+
+ offset0 = hcode.indexOf("abc");
+ offset1 = scode.indexOf("abc");
+ decl = testF3(hfile, offset0);
+ assertNode("abc", offset0, decl);
+ decl = testF3(file, offset1);
+ assertNode("abc", offset0, decl);
+ }
+
+ // struct RTBindingEnd
+ // {
+ // int index;
+ // };
+
+ // #include "testBug102258.h"
+ // void f(RTBindingEnd & end) {
+ // }
+ public void testBug102258() throws Exception {
+ StringBuilder[] buffers = getContents(2);
+ String hcode = buffers[0].toString();
+ String scode = buffers[1].toString();
+ IFile hfile = importFile("testBug102258.h", hcode);
+ IFile file = importFile("testBug102258.cpp", scode);
+ waitUntilFileIsIndexed(index, file);
+ IASTNode decl;
+ int offset0, offset1;
+
+ offset0 = hcode.indexOf("RTBindingEnd");
+ offset1 = scode.indexOf("RTBindingEnd");
+ decl = testF3(hfile, offset0);
+ assertNode("RTBindingEnd", offset0, decl);
+ decl = testF3(file, offset1);
+ assertNode("RTBindingEnd", offset0, decl);
+ }
+
+ // namespace foo {
+ // int g() {
+ // return 0;
+ // }
+ // }
+
+ // #include "testBug103323.h"
+ // int f() {
+ // return foo::g();
+ // }
+ public void testBug103323() throws Exception {
+ StringBuilder[] buffers = getContents(2);
+ String hcode = buffers[0].toString();
+ String scode = buffers[1].toString();
+ IFile hfile = importFile("testBug103323.h", hcode);
+ IFile file = importFile("testBug103323.cpp", scode);
+ waitUntilFileIsIndexed(index, file);
+ IASTNode decl;
+ int offset0, offset1;
+
+ offset0 = hcode.indexOf("g()");
+ offset1 = scode.indexOf("g()");
+ decl = testF3(hfile, offset0);
+ assertNode("g", offset0, decl);
+ decl = testF3(file, offset1);
+ assertNode("g", offset0, decl);
+
+ testSimple_Ctrl_G_Selection(file, offset1, 1, 1);
+ }
+
+ // typedef int TestTypeOne;
+ // typedef int TestTypeTwo;
+
+ // #include "testBug78354.h"
+ // int main()
+ // {
+ // TestTypeOne myFirstLink = 5;
+ // TestTypeTwo mySecondLink = 6;
+ // return 0;
+ // }
+ public void testBug78354() throws Exception {
+ StringBuilder[] buffers = getContents(2);
+ String hcode = buffers[0].toString();
+ String scode = buffers[1].toString();
+ IFile hfile = importFile("testBug78354.h", hcode);
+ IFile file = importFile("testBug78354.cpp", scode);
+ waitUntilFileIsIndexed(index, file);
+ IASTNode decl;
+ int offset0, offset1;
+
+ offset0 = hcode.indexOf("TestTypeOne");
+ offset1 = scode.indexOf("TestTypeOne");
+ decl = testF3(hfile, offset0);
+ assertNode("TestTypeOne", offset0, decl);
+ decl = testF3(file, offset1);
+ assertNode("TestTypeOne", offset0, decl);
+
+ offset0 = hcode.indexOf("TestTypeTwo");
+ offset1 = scode.indexOf("TestTypeTwo");
+ decl = testF3(hfile, offset0);
+ assertNode("TestTypeTwo", offset0, decl);
+ decl = testF3(file, offset1);
+ assertNode("TestTypeTwo", offset0, decl);
+ }
+
+ // int x;
+
+ // #include "testBug103697.h"
+ // int foo() {
+ // return x;
+ // }
+ public void testBug103697() throws Exception {
+ if (System.getProperty("cdt.skip.known.test.failures") == null) {
+ return;
+ }
+ StringBuilder[] buffers = getContents(2);
+ String hcode = buffers[0].toString();
+ String scode = buffers[1].toString();
+ IFile hfile = importFileWithLink("testBug103697.h", hcode);
+ IFile file = importFileWithLink("testBug103697.cpp", scode);
+ waitUntilFileIsIndexed(index, file);
+ IASTNode decl;
+ int offset0, offset1;
+
+ offset0 = hcode.indexOf("x");
+ offset1 = scode.indexOf("x");
+ decl = testF3(hfile, offset0);
+ assertNode("x", offset0, decl);
+ decl = testF3(file, offset1);
+ assertNode("x", offset0, decl);
+ }
+
+ // class __attribute__((visibility("default"))) FooClass
+ // {
+ // int foo();
+ // };
+
+ // #include "testBug108202.h"
+ // int FooClass::foo() {
+ // return 0;
+ // }
+ public void testBug108202() throws Exception {
+ StringBuilder[] buffers = getContents(2);
+ String hcode = buffers[0].toString();
+ String scode = buffers[1].toString();
+ IFile hfile = importFile("testBug108202.h", hcode);
+ IFile file = importFile("testBug108202.cpp", scode);
+ waitUntilFileIsIndexed(index, file);
+ IASTNode decl;
+ int offset0, offset1;
+
+ offset0 = hcode.indexOf("foo");
+ offset1 = scode.indexOf("foo");
+ decl = testF3(hfile, offset0);
+ assertNode("foo", offset1, decl);
+ decl = testF3(file, offset1);
+ assertNode("foo", offset0, decl);
+ }
+
+ // void c();
+
+ // #include "c.h"
+ // void c() {}
+
+ // void cpp();
+
+ // #include "cpp.h"
+ // void cpp() {}
+ public void testCNavigationInCppProject_bug183973() throws Exception {
+ StringBuilder[] buffers = getContents(4);
+ String hccode = buffers[0].toString();
+ String ccode = buffers[1].toString();
+ String hcppcode = buffers[2].toString();
+ String cppcode = buffers[3].toString();
+ IFile hcfile = importFile("c.h", hccode);
+ IFile cfile = importFile("c.c", ccode);
+ IFile hcppfile = importFile("cpp.h", hcppcode);
+ IFile cppfile = importFile("cpp.cpp", cppcode);
+ CCorePlugin.getIndexManager().reindex(fCProject);
+ waitForIndexer(fCProject);
+
+ IASTNode decl;
+ int offset0, offset1;
+ // cpp navigation
+ offset0 = hcppcode.indexOf("cpp(");
+ offset1 = cppcode.indexOf("cpp(");
+ decl = testF3(hcppfile, offset0);
+ assertNode("cpp", offset1, decl);
+ decl = testF3(cppfile, offset1);
+ assertNode("cpp", offset0, decl);
+
+ // plain-c navigation
+ offset0 = hccode.indexOf("c(");
+ offset1 = ccode.indexOf("c(");
+ decl = testF3(hcfile, offset0);
+ assertNode("c", offset1, decl);
+ decl = testF3(cfile, offset1);
+ assertNode("c", offset0, decl);
+ }
+
+ // typedef struct {
+ // int a;
+ // } usertype;
+ // void func(usertype t);
+
+ // #include "testBug190730.h"
+ // void func(usertype t) {
+ // }
+ public void testFuncWithTypedefForAnonymousStruct_190730() throws Exception {
+ StringBuilder[] buffers = getContents(2);
+ String hcode = buffers[0].toString();
+ String scode = buffers[1].toString();
+ IFile hfile = importFile("testBug190730.h", hcode);
+ IFile file = importFile("testBug190730.cpp", scode);
+ waitUntilFileIsIndexed(index, file);
+ IASTNode decl;
+ int offset0, offset1;
+
+ offset0 = hcode.indexOf("func");
+ offset1 = scode.indexOf("func");
+ decl = testF3(hfile, offset0);
+ assertNode("func", offset1, decl);
+ decl = testF3(file, offset1);
+ assertNode("func", offset0, decl);
+ }
+
+ // typedef enum {
+ // int eitem
+ // } userEnum;
+ // void func(userEnum t);
+
+ // #include "testBug190730_2.h"
+ // void func(userEnum t) {
+ // }
+ public void testFuncWithTypedefForAnonymousEnum_190730() throws Exception {
+ StringBuilder[] buffers = getContents(2);
+ String hcode = buffers[0].toString();
+ String scode = buffers[1].toString();
+ IFile hfile = importFile("testBug190730_2.h", hcode);
+ IFile file = importFile("testBug190730_2.cpp", scode);
+ waitUntilFileIsIndexed(index, file);
+ IASTNode decl;
+ int offset0, offset1;
+
+ offset0 = hcode.indexOf("func");
+ offset1 = scode.indexOf("func");
+ decl = testF3(hfile, offset0);
+ assertNode("func", offset1, decl);
+ decl = testF3(file, offset1);
+ assertNode("func", offset0, decl);
+ }
+
+ // #define MY_MACRO 0xDEADBEEF
+ // #define MY_FUNC() 00
+ // #define MY_PAR( aRef );
+
+ // #include "macrodef.h"
+ // int basictest(void){
+ // int tester = MY_MACRO; //OK: F3 works
+ // int xx= MY_FUNC();
+ // MY_PAR(0);
+ // }
+ public void testMacroNavigation() throws Exception {
+ StringBuilder[] buffers = getContents(2);
+ String hcode = buffers[0].toString();
+ String scode = buffers[1].toString();
+ IFile hfile = importFile("macrodef.h", hcode);
+ IFile file = importFile("macronavi.cpp", scode);
+ waitUntilFileIsIndexed(index, file);
+ IASTNode decl;
+ int offset0, offset1;
+
+ offset0 = hcode.indexOf("MY_MACRO");
+ offset1 = scode.indexOf("MY_MACRO");
+ decl = testF3(file, offset1);
+ assertNode("MY_MACRO", offset0, decl);
+
+ offset0 = hcode.indexOf("MY_FUNC");
+ offset1 = scode.indexOf("MY_FUNC");
+ decl = testF3(file, offset1);
+ assertNode("MY_FUNC", offset0, decl);
+
+ offset0 = hcode.indexOf("MY_PAR");
+ offset1 = scode.indexOf("MY_PAR");
+ decl = testF3(file, offset1);
+ assertNode("MY_PAR", offset0, decl);
+ }
+
+ // #define MY_MACRO 0xDEADBEEF
+ // #define MY_PAR( aRef ) aRef;
+ // int gvar;
+
+ // #include "macrodef.h"
+ // int basictest(void){
+ // int tester = MY_PAR(MY_MACRO);
+ // tester= MY_PAR(gvar);
+ // }
+ public void testMacroNavigation_Bug208300() throws Exception {
+ StringBuilder[] buffers = getContents(2);
+ String hcode = buffers[0].toString();
+ String scode = buffers[1].toString();
+ IFile hfile = importFile("macrodef.h", hcode);
+ IFile file = importFile("macronavi.cpp", scode);
+ waitUntilFileIsIndexed(index, file);
+ IASTNode decl;
+ int offset0, offset1;
+
+ offset0 = hcode.indexOf("MY_PAR");
+ offset1 = scode.indexOf("MY_PAR");
+ decl = testF3(file, offset1);
+ assertNode("MY_PAR", offset0, decl);
+
+ offset0 = hcode.indexOf("MY_MACRO");
+ offset1 = scode.indexOf("MY_MACRO");
+ decl = testF3(file, offset1);
+ assertNode("MY_MACRO", offset0, decl);
+
+ offset0 = hcode.indexOf("gvar");
+ offset1 = scode.indexOf("gvar");
+ decl = testF3(file, offset1);
+ assertNode("gvar", offset0, decl);
+ }
+
+ // #define MYMACRO
+
+ // #undef MYMACRO
+ public void testUndef_312399() throws Exception {
+ StringBuilder[] buffers = getContents(2);
+ String hcode = buffers[0].toString();
+ String scode = buffers[1].toString();
+ IFile hfile = importFile("testUndef_312399.h", hcode);
+ IFile file = importFile("testUndef_312399.cpp", scode);
+ waitUntilFileIsIndexed(index, file);
+
+ IASTNode target = testF3(file, scode.indexOf("MYMACRO"));
+ assertTrue(target instanceof IASTName);
+ assertEquals("MYMACRO", ((IASTName) target).toString());
+ assertEquals(hcode.indexOf("MYMACRO"), target.getFileLocation().getNodeOffset());
+ assertEquals("MYMACRO".length(), ((ASTNode) target).getLength());
+ }
+
+ // int wurscht;
+
+ // #include "aheader.h"
+ public void testIncludeNavigation() throws Exception {
+ StringBuilder[] buffers = getContents(2);
+ String hcode = buffers[0].toString();
+ String scode = buffers[1].toString();
+ IFile hfile = importFile("aheader.h", hcode);
+ IFile file = importFile("includenavi.cpp", scode);
+ waitUntilFileIsIndexed(index, file);
+ IASTNode decl;
+ int offset0, offset1;
+
+ offset1 = scode.indexOf("aheader.h");
+ testF3(file, offset1);
+ IEditorPart part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
+ IEditorInput input = part.getEditorInput();
+ assertEquals("aheader.h", ((FileEditorInput) input).getFile().getName());
+ }
+
+ // void cfunc();
+ // void cxcpp() {
+ // cfunc();
+ // }
+
+ // extern "C" void cxcpp();
+ // void cppfunc() {
+ // cxcpp();
+ // }
+ public void testNavigationCppCallsC() throws Exception {
+ StringBuilder[] buffers = getContents(2);
+ String ccode = buffers[0].toString();
+ String scode = buffers[1].toString();
+ IFile cfile = importFile("s.c", ccode);
+ IFile cppfile = importFile("s.cpp", scode);
+ waitUntilFileIsIndexed(index, cppfile);
+ IASTNode decl;
+ int offset1, offset2;
+
+ offset1 = scode.indexOf("cxcpp");
+ offset2 = scode.indexOf("cxcpp", offset1 + 1);
+ testF3(cppfile, offset1);
+ IEditorPart part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
+ IEditorInput input = part.getEditorInput();
+ assertEquals("s.c", ((FileEditorInput) input).getFile().getName());
+
+ testF3(cppfile, offset2);
+ part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
+ input = part.getEditorInput();
+ assertEquals("s.c", ((FileEditorInput) input).getFile().getName());
+
+ offset1 = ccode.indexOf("cxcpp");
+ testF3(cfile, offset1);
+ part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
+ input = part.getEditorInput();
+ assertEquals("s.cpp", ((FileEditorInput) input).getFile().getName());
+ }
+
+ // void cxcpp();
+ // void cfunc() {
+ // cxcpp();
+ // }
+
+ // void cppfunc() {}
+ // extern "C" {void cxcpp() {
+ // cppfunc();
+ // }}
+ public void testNavigationCCallsCpp() throws Exception {
+ StringBuilder[] buffers = getContents(2);
+ String ccode = buffers[0].toString();
+ String scode = buffers[1].toString();
+ IFile cfile = importFile("s.c", ccode);
+ IFile cppfile = importFile("s.cpp", scode);
+ waitUntilFileIsIndexed(index, cppfile);
+ IASTNode decl;
+ int offset1, offset2;
+
+ offset1 = ccode.indexOf("cxcpp");
+ offset2 = ccode.indexOf("cxcpp", offset1 + 1);
+ testF3(cfile, offset1);
+ IEditorPart part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
+ IEditorInput input = part.getEditorInput();
+ assertEquals("s.cpp", ((FileEditorInput) input).getFile().getName());
+
+ testF3(cfile, offset2);
+ part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
+ input = part.getEditorInput();
+ assertEquals("s.cpp", ((FileEditorInput) input).getFile().getName());
+
+ offset1 = scode.indexOf("cxcpp");
+ testF3(cppfile, offset1);
+ part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
+ input = part.getEditorInput();
+ assertEquals("s.c", ((FileEditorInput) input).getFile().getName());
+ }
+
+ // #define ADD_TEXT(txt1,txt2) txt1" "txt2
+ // #define ADD(a,b) (a + b)
+ // void main(void) {
+ // #if defined(ADD_TEXT) && defined(ADD)
+ // #endif
+ // }
+ public void testNavigationInDefinedExpression_215906() throws Exception {
+ StringBuilder[] buffers = getContents(1);
+ String code = buffers[0].toString();
+ IFile file = importFile("s.cpp", code);
+ waitUntilFileIsIndexed(index, file);
+ IASTNode decl;
+ int offset1, offset2;
+
+ offset1 = code.indexOf("ADD_TEXT");
+ offset2 = code.indexOf("ADD_TEXT", offset1 + 1);
+ decl = testF3(file, offset2);
+ assertNode("ADD_TEXT", offset1, decl);
+
+ offset1 = code.indexOf("ADD", offset1 + 1);
+ offset2 = code.indexOf("ADD", offset2 + 1);
+ decl = testF3(file, offset2);
+ assertNode("ADD", offset1, decl);
+ }
+
+ // struct X {
+ // int operator +(X);
+ // int operator [](int);
+ // ~X();
+ // };
+ //
+ // int test(X x) {
+ // x + x;
+ // x[6];
+ // X* xx = new X();
+ // delete xx;
+ // }
+ public void testNavigationToImplicitNames() throws Exception {
+ StringBuilder[] buffers = getContents(1);
+ String code = buffers[0].toString();
+ IFile file = importFile("in.cpp", code);
+ waitUntilFileIsIndexed(index, file);
+
+ int offset1 = code.indexOf("operator +");
+ int offset2 = code.indexOf("+ x;");
+ IASTNode decl = testF3(file, offset2);
+ assertNode("operator +", offset1, decl);
+ decl = testF3(file, offset2 + 1);
+ assertNode("operator +", offset1, decl);
+
+ offset1 = code.indexOf("operator []");
+ offset2 = code.indexOf("[6];");
+ decl = testF3(file, offset2 + 1);
+ assertNode("operator []", offset1, decl);
+ offset2 = code.indexOf("];");
+ decl = testF3(file, offset2);
+ assertNode("operator []", offset1, decl);
+ decl = testF3(file, offset2 + 1);
+ assertNode("operator []", offset1, decl);
+
+ offset1 = code.indexOf("~X()");
+ offset2 = code.indexOf("delete");
+ decl = testF3(file, offset2);
+ assertNode("~X", offset1, decl);
+ }
+
+ // template<typename T>
+ // class C {
+ // public:
+ // T operator+(int);
+ // };
+
+ // #include "test.h"
+ // void main() {
+ // C<char> a;
+ // a + 2;
+ // }
+ public void testBug272744() throws Exception {
+ StringBuilder[] buffers = getContents(2);
+ String hcode = buffers[0].toString();
+ String scode = buffers[1].toString();
+ IFile hfile = importFile("test.h", hcode);
+ IFile file = importFile("test.cpp", scode);
+ waitUntilFileIsIndexed(index, file);
+
+ int hoffset = hcode.indexOf("operator+");
+ int soffset = scode.indexOf("+");
+ IASTNode def = testF3(file, soffset + 1);
+ assertTrue(def instanceof IASTName);
+ assertEquals("operator +", ((IASTName) def).toString());
+ assertEquals(hoffset, ((ASTNode) def).getOffset());
+ assertEquals(9, ((ASTNode) def).getLength());
+ }
+
+ // void test(ABC* p);
+ // void test(ABC* q) {}
+ // void call_test(){
+ // test(0);
+ // }
+ public void testBug305487() throws Exception {
+ String code = getAboveComment();
+ IFile file = importFile("testBug305487.cpp", code);
+ waitUntilFileIsIndexed(index, file);
+
+ int offset = code.indexOf("test(0)");
+ IASTNode def = testF3(file, offset + 1);
+ assertTrue(def instanceof IASTName);
+ }
+
+ // struct A {
+ // A();
+ // A(int x);
+ // };
+
+ // #include "testImplicitConstructorCall_248855.h"
+ // void func() {
+ // A a1;
+ // A a2(5);
+ // }
+ // struct B {
+ // B() : a3(1) {}
+ // A a3;
+ // };
+ public void testImplicitConstructorCall_248855() throws Exception {
+ StringBuilder[] buffers = getContents(2);
+ String hcode = buffers[0].toString();
+ String scode = buffers[1].toString();
+ IFile hfile = importFile("testImplicitConstructorCall_248855.h", hcode);
+ IFile file = importFile("testImplicitConstructorCall_248855.cpp", scode);
+ waitUntilFileIsIndexed(index, file);
+
+ IASTNode target = testF3(file, scode.indexOf("a1"));
+ assertTrue(target instanceof IASTName);
+ assertEquals("A", ((IASTName) target).toString());
+ assertEquals(hcode.indexOf("A()"), target.getFileLocation().getNodeOffset());
+ assertEquals("A".length(), ((ASTNode) target).getLength());
+
+ target = testF3(file, scode.indexOf("a2"));
+ assertTrue(target instanceof IASTName);
+ assertEquals("A", ((IASTName) target).toString());
+ assertEquals(hcode.indexOf("A(int x)"), target.getFileLocation().getNodeOffset());
+ assertEquals("A".length(), ((ASTNode) target).getLength());
+
+ try {
+ target = testF3(file, scode.indexOf("a3"));
+ fail("Didn't expect navigation to succeed due to multiple choices: B::a3, A::A(int x).");
+ } catch (RuntimeException e) {
+ assertEquals("ambiguous input: 2", e.getMessage());
+ }
+ }
+
+ // namespace ns {
+ // void func();
+ // }
+
+ // #include "test.h"
+ // using ns::func;
+ //
+ // void test() {
+ // func();
+ // }
+ public void testBug380197() throws Exception {
+ StringBuilder[] buffers = getContents(2);
+ String hcode = buffers[0].toString();
+ String scode = buffers[1].toString();
+ IFile hfile = importFile("test.h", hcode);
+ IFile file = importFile("test.cpp", scode);
+ waitUntilFileIsIndexed(index, file);
+
+ int hoffset = hcode.indexOf("func");
+ int offset = scode.indexOf("func()");
+ IASTNode def = testF3(file, offset + 1);
+ assertTrue(def instanceof IASTName);
+ assertEquals("func", def.toString());
+ IASTFileLocation location = def.getFileLocation();
+ assertEquals(hfile.getLocation().toOSString(), location.getFileName());
+ assertEquals(hoffset, location.getNodeOffset());
+ }
+
+ // int waldo(int a, decltype(a) b);
+ public void testFunctionParameterReferencingPreviousParameter_432703() throws Exception {
+ String code = getAboveComment();
+ IFile file = importFile("test.cpp", code);
+ waitUntilFileIsIndexed(index, file);
+
+ int offset = code.indexOf("a)");
+ IASTNode def = testF3(file, offset + 1);
+ assertTrue(def instanceof IASTName);
+ }
+
+ // #define WALDO 42
+
+ // #define WALDO 98
+
+ // #include "a.hpp"
+ // int x = WALDO;
+ public void testTwoMacrosWithSameName_440940() throws Exception {
+ StringBuilder[] buffers = getContents(3);
+ String aHpp = buffers[0].toString();
+ String bHpp = buffers[1].toString();
+ String cpp = buffers[2].toString();
+ IFile aHppFile = importFile("a.hpp", aHpp);
+ IFile bHppFile = importFile("b.hpp", bHpp);
+ IFile cppFile = importFile("test.cpp", cpp);
+ waitUntilFileIsIndexed(index, cppFile);
+
+ IASTNode result = testF3(cppFile, cpp.indexOf("WALDO") + 1);
+ assertTrue(result instanceof IASTName);
+ IBinding binding = ((IASTName) result).resolveBinding();
+ assertTrue(binding instanceof IMacroBinding);
+ String expansion = new String(((IMacroBinding) binding).getExpansion());
+ assertTrue(expansion.contains("42"));
+ }
+
+ // #define DEFINE_FUNC(...) void foo() { __VA_ARGS__ }
+ // struct Waldo {
+ // void find();
+ // };
+ // DEFINE_FUNC
+ // (
+ // Waldo waldo;
+ // waldo.find();
+ // )
+ public void testDeclarationInMacroArgment_509733() throws Exception {
+ String code = getAboveComment();
+ IFile file = importFile("test.cpp", code);
+ waitUntilFileIsIndexed(index, file);
+
+ int offset = code.indexOf("waldo.find()");
+ IASTNode def = testF3(file, offset + 1);
+ assertTrue(def instanceof IASTName);
+ }
+
+ // class Waldo {
+ // void find();
+ // };
+
+ // #include "test.hpp"
+ // int Waldo::find() {}
+ public void testNavigationToDefinitionWithWrongSignature_525739() throws Exception {
+ StringBuilder[] buffers = getContents(3);
+ String hpp = buffers[0].toString();
+ String cpp = buffers[1].toString();
+ IFile hppFile = importFile("test.hpp", hpp);
+ IFile cppFile = importFile("test.cpp", cpp);
+ waitUntilFileIsIndexed(index, cppFile);
+
+ // We should find the definition, even though the signature doesn't match exactly.
+ IASTNode target = testF3(hppFile, hpp.indexOf("void find") + 6);
+ assertInstance(target, IASTName.class);
+ assertEquals(IASTNameOwner.r_definition, ((IASTName) target).getRoleOfName(false));
+ }
+
+ // class Waldo {
+ // void find();
+ // };
+
+ // #include "test.hpp"
+ // void Waldo::find() {}
+ // int Waldo::find() {}
+ public void testNavigationPrefersCorrectDefinition_525739() throws Exception {
+ StringBuilder[] buffers = getContents(3);
+ String hpp = buffers[0].toString();
+ String cpp = buffers[1].toString();
+ IFile hppFile = importFile("test.hpp", hpp);
+ IFile cppFile = importFile("test.cpp", cpp);
+ waitUntilFileIsIndexed(index, cppFile);
+
+ // We should find the definition that's an exact match, rather than asking the
+ // user to disambiguate between two alternatives.
+ IASTNode target = testF3(hppFile, hpp.indexOf("void find") + 6);
+ assertInstance(target, IASTName.class);
+ assertEquals(IASTNameOwner.r_definition, ((IASTName) target).getRoleOfName(false));
+ }
+
+ // template <typename E>
+ // struct Node {
+ // Node * next;
+ // E value;
+ // };
+ // Node<int> head{nullptr, 42};
+ // auto [h, v] = head;
+
+ // #include "SBTestHeader.hpp"
+ // auto myH = h;
+ // auto myV = v;
+ public void testNavigationToStructuredBinding_522200() throws Exception {
+ StringBuilder[] buffers = getContents(2);
+ String header = buffers[0].toString();
+ IFile headerFile = importFile("SBTestHeader.hpp", header);
+ String source = buffers[1].toString();
+ IFile sourceFile = importFile("SBTestSource.cpp", source);
+ waitUntilFileIsIndexed(index, sourceFile);
+
+ IASTNode targetH = testF3(sourceFile, source.indexOf("myH = h") + 6);
+ assertInstance(targetH, IASTName.class);
+ assertEquals(IASTNameOwner.r_definition, ((IASTName) targetH).getRoleOfName(false));
+ IASTFileLocation locationH = targetH.getFileLocation();
+ int targetHOffset = locationH.getNodeOffset();
+ assertEquals(header.indexOf("auto [h") + 6, targetHOffset);
+
+ IASTNode targetV = testF3(sourceFile, source.indexOf("myV = v") + 6);
+ assertInstance(targetV, IASTName.class);
+ assertEquals(IASTNameOwner.r_definition, ((IASTName) targetV).getRoleOfName(false));
+ IASTFileLocation locationV = targetV.getFileLocation();
+ int targetVOffset = locationV.getNodeOffset();
+ assertEquals(header.indexOf("[h, v") + 4, targetVOffset);
+ }
+}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selection/CPPSelectionNoIndexerTests.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selection/CPPSelectionNoIndexerTests.java
new file mode 100644
index 00000000000..2557b6322a6
--- /dev/null
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selection/CPPSelectionNoIndexerTests.java
@@ -0,0 +1,1450 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2016 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ * Markus Schorn (Wind River Systems)
+ * Nathan Ridge
+ *******************************************************************************/
+package org.eclipse.cdt.ui.tests.text.selection;
+
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.InputStream;
+import java.io.StringWriter;
+import java.io.Writer;
+
+import org.eclipse.cdt.core.CCorePlugin;
+import org.eclipse.cdt.core.dom.IPDOMManager;
+import org.eclipse.cdt.core.dom.ast.IASTElaboratedTypeSpecifier;
+import org.eclipse.cdt.core.dom.ast.IASTName;
+import org.eclipse.cdt.core.dom.ast.IASTNameOwner;
+import org.eclipse.cdt.core.dom.ast.IASTNode;
+import org.eclipse.cdt.core.dom.ast.IBinding;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPConstructor;
+import org.eclipse.cdt.core.model.ICProject;
+import org.eclipse.cdt.core.testplugin.CProjectHelper;
+import org.eclipse.cdt.core.testplugin.FileManager;
+import org.eclipse.cdt.internal.core.dom.parser.ASTNode;
+import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTNameBase;
+import org.eclipse.cdt.internal.ui.search.actions.OpenDeclarationsAction;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.texteditor.ITextEditor;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * It is required to test the selection performance independent of the indexer to make sure that the DOM
+ * is functioning properly.
+ *
+ * Indexer bugs can drastically influence the correctness of these tests so the indexer has to be off when
+ * performing them.
+ *
+ * @author dsteffle
+ */
+public class CPPSelectionNoIndexerTests extends BaseSelectionTests {
+ private static final String INDEX_FILE_ID = "2946365241"; //$NON-NLS-1$
+ static NullProgressMonitor monitor;
+ static IWorkspace workspace;
+ static IProject project;
+ static ICProject cPrj;
+ static FileManager fileManager;
+ static boolean disabledHelpContributions = false;
+
+ static void initProject() {
+ if (project != null) {
+ return;
+ }
+
+ //(CCorePlugin.getDefault().getCoreModel().getIndexManager()).reset();
+ monitor = new NullProgressMonitor();
+
+ workspace = ResourcesPlugin.getWorkspace();
+
+ try {
+ cPrj = CProjectHelper.createCCProject("CPPSelectionTestsNoIndexer", "bin", IPDOMManager.ID_NO_INDEXER); //$NON-NLS-1$ //$NON-NLS-2$
+
+ project = cPrj.getProject();
+
+ IPath pathLoc = CCorePlugin.getDefault().getStateLocation();
+ File indexFile = new File(pathLoc.append(INDEX_FILE_ID + ".index").toOSString()); //$NON-NLS-1$
+ if (indexFile.exists())
+ indexFile.delete();
+ } catch (CoreException e) {
+ /*boo*/
+ }
+ if (project == null)
+ fail("Unable to create project"); //$NON-NLS-1$
+
+ //Create file manager
+ fileManager = new FileManager();
+ }
+
+ public CPPSelectionNoIndexerTests() {
+ super();
+ }
+
+ /**
+ * @param name
+ */
+ public CPPSelectionNoIndexerTests(String name) {
+ super(name);
+ }
+
+ public static Test suite() {
+ TestSuite suite = suite(CPPSelectionNoIndexerTests.class, "_");
+ suite.addTest(new CPPSelectionNoIndexerTests("cleanupProject")); //$NON-NLS-1$
+ return suite;
+ }
+
+ public void cleanupProject() throws Exception {
+ closeAllEditors();
+ try {
+ project.delete(true, false, monitor);
+ } catch (CoreException e) {
+ try {
+ project.delete(true, false, monitor);
+ } catch (CoreException e1) {
+ }
+ } finally {
+ project = null;
+ }
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ initProject();
+ OpenDeclarationsAction.sDisallowAmbiguousInput = true;
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ if (project == null || !project.exists())
+ return;
+
+ closeAllEditors();
+
+ IResource[] members = project.members();
+ for (IResource member : members) {
+ if (member.getName().equals(".project") || member.getName().equals(".cproject")) //$NON-NLS-1$ //$NON-NLS-2$
+ continue;
+ if (member.getName().equals(".settings"))
+ continue;
+ try {
+ member.delete(false, monitor);
+ } catch (Throwable e) {
+ /*boo*/
+ }
+ }
+ }
+
+ protected IFile importFile(String fileName, String contents) throws Exception {
+ //Obtain file handle
+ IFile file = project.getProject().getFile(fileName);
+
+ InputStream stream = new ByteArrayInputStream(contents.getBytes());
+ //Create file input stream
+ if (file.exists())
+ file.setContents(stream, false, false, monitor);
+ else
+ file.create(stream, false, monitor);
+
+ fileManager.addFile(file);
+
+ return file;
+ }
+
+ protected IFile importFileWithLink(String fileName, String contents) throws Exception {
+ //Obtain file handle
+ IFile file = project.getProject().getFile(fileName);
+
+ IPath location = new Path(project.getLocation().removeLastSegments(1).toOSString() + File.separator + fileName);
+
+ File linkFile = new File(location.toOSString());
+ if (!linkFile.exists()) {
+ linkFile.createNewFile();
+ }
+
+ file.createLink(location, IResource.ALLOW_MISSING_LOCAL, null);
+
+ InputStream stream = new ByteArrayInputStream(contents.getBytes());
+ //Create file input stream
+ if (file.exists())
+ file.setContents(stream, false, false, monitor);
+ else
+ file.create(stream, false, monitor);
+
+ fileManager.addFile(file);
+
+ return file;
+ }
+
+ protected IFile importFileInsideLinkedFolder(String fileName, String contents, String folderName) throws Exception {
+ IFolder linkedFolder = project.getFolder(folderName);
+ IPath folderLocation = new Path(
+ project.getLocation().toOSString() + File.separator + folderName + "_this_is_linked"); //$NON-NLS-1$
+ IFolder actualFolder = project.getFolder(folderName + "_this_is_linked"); //$NON-NLS-1$
+ if (!actualFolder.exists())
+ actualFolder.create(true, true, monitor);
+
+ linkedFolder.createLink(folderLocation, IResource.NONE, monitor);
+
+ actualFolder.delete(true, false, monitor);
+
+ IFile file = linkedFolder.getFile(fileName);
+
+ InputStream stream = new ByteArrayInputStream(contents.getBytes());
+ //Create file input stream
+ if (file.exists())
+ file.setContents(stream, false, false, monitor);
+ else
+ file.create(stream, false, monitor);
+
+ fileManager.addFile(file);
+
+ return file;
+ }
+
+ private void assertContents(String code, int offset, String expected) {
+ assertEquals(expected, code.substring(offset, offset + expected.length()));
+ }
+
+ public void testBug93281() throws Exception {
+ StringBuilder buffer = new StringBuilder();
+ buffer.append("class Point{ \n"); //$NON-NLS-1$
+ buffer.append("public: \n"); //$NON-NLS-1$
+ buffer.append("Point(): xCoord(0){} \n"); //$NON-NLS-1$
+ buffer.append("Point& operator=(const Point &rhs){return *this;} // line A\n"); //$NON-NLS-1$
+ buffer.append("void* operator new [ ] (unsigned int);\n"); //$NON-NLS-1$
+ buffer.append("private: \n"); //$NON-NLS-1$
+ buffer.append("int xCoord; \n"); //$NON-NLS-1$
+ buffer.append("}; \n"); //$NON-NLS-1$
+ buffer.append("static const Point zero;\n"); //$NON-NLS-1$
+ buffer.append("int main(int argc, char **argv) { \n"); //$NON-NLS-1$
+ buffer.append("Point *p2 = new Point(); \n"); //$NON-NLS-1$
+ buffer.append("p2-> operator // /* operator */ // F3 in the middle \n"); //$NON-NLS-1$
+ buffer.append("//of \"operator\" should work\n"); //$NON-NLS-1$
+ buffer.append("// \\n"); //$NON-NLS-1$
+ buffer.append("/* */\n"); //$NON-NLS-1$
+ buffer.append("=(zero); // line B\n"); //$NON-NLS-1$
+ buffer.append("p2->operator /* oh yeah */ new // F3 in the middle of \"operator\"\n"); //$NON-NLS-1$
+ buffer.append("// should work\n"); //$NON-NLS-1$
+ buffer.append("//\n"); //$NON-NLS-1$
+ buffer.append("[ /* sweet */ ] //\n"); //$NON-NLS-1$
+ buffer.append("(2);\n"); //$NON-NLS-1$
+ buffer.append("return (0); \n"); //$NON-NLS-1$
+ buffer.append("}\n"); //$NON-NLS-1$
+
+ String code = buffer.toString();
+ IFile file = importFile("test93281.cpp", code); //$NON-NLS-1$
+
+ int offset = code.indexOf("p2->operator") + 6; //$NON-NLS-1$
+ IASTNode node = testF3(file, offset);
+
+ assertTrue(node instanceof IASTName);
+ assertEquals("operator new[]", ((IASTName) node).toString()); //$NON-NLS-1$
+ assertEquals(183, ((ASTNode) node).getOffset());
+ assertEquals(16, ((ASTNode) node).getLength());
+
+ offset = code.indexOf("p2-> operator") + 11; //$NON-NLS-1$
+ node = testF3(file, offset);
+
+ assertTrue(node instanceof IASTName);
+ assertEquals("operator =", ((IASTName) node).toString()); //$NON-NLS-1$
+ assertEquals(121, ((ASTNode) node).getOffset());
+ assertEquals(9, ((ASTNode) node).getLength());
+ }
+
+ public void testBasicDefinition() throws Exception {
+ StringBuilder buffer = new StringBuilder();
+ buffer.append("extern int MyInt; // def is in another file \n"); //$NON-NLS-1$
+ buffer.append("extern const int MyConst; // def is in another file \n"); //$NON-NLS-1$
+ buffer.append("void MyFunc(int); // often used in header files\n"); //$NON-NLS-1$
+ buffer.append("struct MyStruct; // often used in header files\n"); //$NON-NLS-1$
+ buffer.append("typedef int NewInt; // a normal typedef statement\n"); //$NON-NLS-1$
+ buffer.append("class MyClass; // often used in header files\n"); //$NON-NLS-1$
+ buffer.append("int MyInt;\n"); //$NON-NLS-1$
+ buffer.append("extern const int MyConst = 42;\n"); //$NON-NLS-1$
+ buffer.append("void MyFunc(int a) { cout << a << endl; }\n"); //$NON-NLS-1$
+ buffer.append("struct MyStruct { int Member1; int Member2; };\n"); //$NON-NLS-1$
+ buffer.append("class MyClass { int MemberVar; };\n"); //$NON-NLS-1$
+
+ String code = buffer.toString();
+ IFile file = importFile("testBasicDefinition.cpp", code); //$NON-NLS-1$
+
+ int offset = code.indexOf("MyInt") + 2; //$NON-NLS-1$
+ int defOffset = code.indexOf("MyInt", offset) + 2; //$NON-NLS-1$
+ IASTNode def = testF3(file, offset);
+ IASTNode decl = testF3(file, defOffset);
+ assertTrue(def instanceof IASTName);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("MyInt", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(11, ((ASTNode) decl).getOffset());
+ assertEquals(5, ((ASTNode) decl).getLength());
+ assertEquals("MyInt", ((IASTName) def).toString()); //$NON-NLS-1$
+ assertEquals(330, ((ASTNode) def).getOffset());
+ assertEquals(5, ((ASTNode) def).getLength());
+
+ offset = code.indexOf("MyConst") + 2;
+ defOffset = code.indexOf("MyConst", offset) + 2;
+ def = testF3(file, offset);
+ decl = testF3(file, defOffset);
+ assertTrue(def instanceof IASTName);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("MyConst", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(69, ((ASTNode) decl).getOffset());
+ assertEquals(7, ((ASTNode) decl).getLength());
+ assertEquals("MyConst", ((IASTName) def).toString()); //$NON-NLS-1$
+ assertEquals(354, ((ASTNode) def).getOffset());
+ assertEquals(7, ((ASTNode) def).getLength());
+
+ offset = code.indexOf("MyFunc") + 2;
+ defOffset = code.indexOf("MyFunc", offset) + 2;
+ def = testF3(file, offset);
+ decl = testF3(file, defOffset);
+ assertTrue(def instanceof IASTName);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("MyFunc", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(115, ((ASTNode) decl).getOffset());
+ assertEquals(6, ((ASTNode) decl).getLength());
+ assertEquals("MyFunc", ((IASTName) def).toString()); //$NON-NLS-1$
+ assertEquals(373, ((ASTNode) def).getOffset());
+ assertEquals(6, ((ASTNode) def).getLength());
+
+ offset = code.indexOf("MyStruct") + 2;
+ defOffset = code.indexOf("MyStruct", offset) + 2;
+ def = testF3(file, offset);
+ decl = testF3(file, defOffset);
+ assertTrue(def instanceof IASTName);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("MyStruct", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(417, ((ASTNode) decl).getOffset());
+ assertEquals(8, ((ASTNode) decl).getLength());
+ assertEquals("MyStruct", ((IASTName) def).toString()); //$NON-NLS-1$
+ assertEquals(417, ((ASTNode) def).getOffset());
+ assertEquals(8, ((ASTNode) def).getLength());
+
+ offset = code.indexOf("MyClass") + 2;
+ defOffset = code.indexOf("MyClass", offset) + 2;
+ def = testF3(file, offset);
+ decl = testF3(file, defOffset);
+ assertTrue(def instanceof IASTName);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("MyClass", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(463, ((ASTNode) decl).getOffset());
+ assertEquals(7, ((ASTNode) decl).getLength());
+ assertEquals("MyClass", ((IASTName) def).toString()); //$NON-NLS-1$
+ assertEquals(463, ((ASTNode) def).getOffset());
+ assertEquals(7, ((ASTNode) def).getLength());
+ }
+
+ public void testBug95224() throws Exception {
+ Writer writer = new StringWriter();
+ writer.write("class A{\n"); //$NON-NLS-1$
+ writer.write("A();\n"); //$NON-NLS-1$
+ writer.write("A(const A&); // open definition on A finds class A\n"); //$NON-NLS-1$
+ writer.write("~A(); // open definition on A finds nothing\n"); //$NON-NLS-1$
+ writer.write("};\n"); //$NON-NLS-1$
+
+ String code = writer.toString();
+ IFile file = importFile("testBug95224.cpp", code); //$NON-NLS-1$
+
+ int offset = code.indexOf("A(); // open definition "); //$NON-NLS-1$
+ IASTNode decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("~A", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(65, ((ASTNode) decl).getOffset());
+ assertEquals(2, ((ASTNode) decl).getLength());
+ }
+
+ public void testBasicTemplateInstance() throws Exception {
+ Writer writer = new StringWriter();
+ writer.write("namespace N{ \n"); //$NON-NLS-1$
+ writer.write(" template < class T > class AAA { T _t; };\n"); //$NON-NLS-1$
+ writer.write("}; \n"); //$NON-NLS-1$
+ writer.write("N::AAA<int> a; \n"); //$NON-NLS-1$
+
+ String code = writer.toString();
+ IFile file = importFile("testBasicTemplateInstance.cpp", code); //$NON-NLS-1$
+
+ int offset = code.indexOf("AAA<int>"); //$NON-NLS-1$
+ IASTNode decl1 = testF3(file, offset, 3);
+ assertTrue(decl1 instanceof IASTName);
+ assertEquals("AAA", ((IASTName) decl1).toString()); //$NON-NLS-1$
+ assertEquals(74, ((ASTNode) decl1).getOffset());
+ assertEquals(3, ((ASTNode) decl1).getLength());
+
+ IASTNode decl2 = testF3(file, offset, 8);
+ assertTrue(decl2 instanceof IASTName);
+ assertEquals("AAA", ((IASTName) decl2).toString()); //$NON-NLS-1$
+ assertEquals(74, ((ASTNode) decl2).getOffset());
+ assertEquals(3, ((ASTNode) decl2).getLength());
+ }
+
+ public void testBug86829A() throws Exception {
+ StringBuilder buffer = new StringBuilder();
+ buffer.append("class X {\n"); //$NON-NLS-1$
+ buffer.append("public:\n"); //$NON-NLS-1$
+ buffer.append("X(int); // openReferences fails to find the constructor in g()\n"); //$NON-NLS-1$
+ buffer.append("};\n"); //$NON-NLS-1$
+ buffer.append("X f(X);\n"); //$NON-NLS-1$
+ buffer.append("void g()\n"); //$NON-NLS-1$
+ buffer.append("{\n"); //$NON-NLS-1$
+ buffer.append("X b = f(X(2)); // openDeclarations on X(int) finds the class and not \n"); //$NON-NLS-1$
+ buffer.append("}\n"); //$NON-NLS-1$
+
+ String code = buffer.toString();
+ IFile file = importFile("testBug86829A.cpp", code); //$NON-NLS-1$
+
+ int offset = code.indexOf("X(2)"); //$NON-NLS-1$
+ IASTNode decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("X", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(18, ((ASTNode) decl).getOffset());
+ assertEquals(1, ((ASTNode) decl).getLength());
+ }
+
+ public void testBug86829B() throws Exception {
+ StringBuilder buffer = new StringBuilder();
+ buffer.append("class X {\n"); //$NON-NLS-1$
+ buffer.append("public:\n"); //$NON-NLS-1$
+ buffer.append("operator int();\n"); //$NON-NLS-1$
+ buffer.append("};\n"); //$NON-NLS-1$
+ buffer.append("class Y {\n"); //$NON-NLS-1$
+ buffer.append("public:\n"); //$NON-NLS-1$
+ buffer.append("operator X();\n"); //$NON-NLS-1$
+ buffer.append("};\n"); //$NON-NLS-1$
+ buffer.append("void test() {\n");
+ buffer.append("Y a;\n"); //$NON-NLS-1$
+ buffer.append("int c = X(a); // OK: a.operator X().operator int()\n"); //$NON-NLS-1$
+ buffer.append("}\n"); //$NON-NLS-1$
+
+ String code = buffer.toString();
+ IFile file = importFile("testBug86829B.cpp", code); //$NON-NLS-1$
+
+ int offset = code.indexOf("X(a);"); //$NON-NLS-1$
+ IASTNode decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("X", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(6, ((ASTNode) decl).getOffset());
+ assertEquals(1, ((ASTNode) decl).getLength());
+ }
+
+ // taken from C++ spec 3.1-3:
+ /*
+ // all but one of the following are definitions:
+ int a; // defines a
+ extern const int c = 1; // defines c
+ int f(int x) { return x+a; } // defines f and defines x
+ struct S { int a; int b; }; // defines S, S::a, and S::b
+ struct X { // defines X
+ int x; // defines nonstatic data member x
+ static int y; // declares static data member y
+ X(): x(0) { } // defines a constructor of X
+ };
+ int X::y = 1; // defines X::y
+ enum { up, down }; // defines up and down
+ namespace N { int d; } // defines N and N::d
+ namespace N1 = N; // defines N1
+ X anX; // defines anX, implicitly calls X()
+ // whereas these are just declarations:
+ extern int a; // declares a
+ extern const int c; // declares c
+ int f(int); // declares f
+ struct S; // declares S
+ typedef int Int; // declares Int
+ extern X anotherX; // declares anotherX
+ using N::d; // declares N::d
+ */
+ public void testCPPSpecDeclsDefs() throws Exception {
+ StringBuilder buffer = new StringBuilder();
+ buffer.append("int a; // defines a\n"); //$NON-NLS-1$
+ buffer.append("extern const int c = 1; // defines c\n"); //$NON-NLS-1$
+ buffer.append("int f(int x) { return x+a; } // defines f and defines x\n"); //$NON-NLS-1$
+ buffer.append("struct S { int a; int b; }; // defines S, S::a, and S::b\n"); //$NON-NLS-1$
+ buffer.append("struct X { // defines X\n"); //$NON-NLS-1$
+ buffer.append("int x; // defines nonstatic data member x\n"); //$NON-NLS-1$
+ buffer.append("static int y; // declares static data member y\n"); //$NON-NLS-1$
+ buffer.append("X(): x(0) { } // defines a constructor of X\n"); //$NON-NLS-1$
+ buffer.append("};\n"); //$NON-NLS-1$
+ buffer.append("int X::y = 1; // defines X::y\n"); //$NON-NLS-1$
+ buffer.append("enum { up, down }; // defines up and down\n"); //$NON-NLS-1$
+ buffer.append("namespace N { int d; } // defines N and N::d\n"); //$NON-NLS-1$
+ buffer.append("namespace N1 = N; // defines N1\n"); //$NON-NLS-1$
+ buffer.append("X anX; // defines anX\n"); //$NON-NLS-1$
+ buffer.append("extern int a; // declares a\n"); //$NON-NLS-1$
+ buffer.append("extern const int c; // declares c\n"); //$NON-NLS-1$
+ buffer.append("int f(int y); // declar f\n"); //$NON-NLS-1$
+ buffer.append("struct S; // declares S\n"); //$NON-NLS-1$
+ buffer.append("typedef int Int; // declares Int\n"); //$NON-NLS-1$
+ buffer.append("extern X anotherX; // declares anotherX\n"); //$NON-NLS-1$
+ buffer.append("using N::d; // declares N::d\n"); //$NON-NLS-1$
+
+ String code = buffer.toString();
+ IFile file = importFile("testCPPSpecDeclsDefs.cpp", code); //$NON-NLS-1$
+ int offset = code.indexOf("a; // defines a"); //$NON-NLS-1$
+ IASTNode decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("a", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(512, ((ASTNode) decl).getOffset());
+ assertEquals(1, ((ASTNode) decl).getLength());
+
+ offset = code.indexOf("c = 1; // defines c"); //$NON-NLS-1$
+ decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("c", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(546, ((ASTNode) decl).getOffset());
+ assertEquals(1, ((ASTNode) decl).getLength());
+
+ offset = code.indexOf("f(int x) { return x+a; } // defines f and defines x"); //$NON-NLS-1$
+ decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("f", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(567, ((ASTNode) decl).getOffset());
+ assertEquals(1, ((ASTNode) decl).getLength());
+
+ offset = code.indexOf("x) { return x+a; } // defines f and defines x"); //$NON-NLS-1$
+ decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("x", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(67, ((ASTNode) decl).getOffset());
+ assertEquals(1, ((ASTNode) decl).getLength());
+
+ offset = code.indexOf("x+a; } // defines f and defines x"); //$NON-NLS-1$
+ decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("x", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(67, ((ASTNode) decl).getOffset());
+ assertEquals(1, ((ASTNode) decl).getLength());
+
+ offset = code.indexOf("x+a; } // defines f and defines x"); //$NON-NLS-1$
+ decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("x", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(67, ((ASTNode) decl).getOffset());
+ assertEquals(1, ((ASTNode) decl).getLength());
+
+ offset = code.indexOf("a; } // defines f and defines x"); //$NON-NLS-1$
+ decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("a", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(4, ((ASTNode) decl).getOffset());
+ assertEquals(1, ((ASTNode) decl).getLength());
+
+ offset = code.indexOf("S { int a; int b; }; // defines S, S::a, and S::b"); //$NON-NLS-1$
+ decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("S", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(120, ((ASTNode) decl).getOffset());
+ assertEquals(1, ((ASTNode) decl).getLength());
+
+ offset = code.indexOf("a; int b; }; // defines S, S::a, and S::b"); //$NON-NLS-1$
+ decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("a", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(128, ((ASTNode) decl).getOffset());
+ assertEquals(1, ((ASTNode) decl).getLength());
+
+ offset = code.indexOf("b; }; // defines S, S::a, and S::b"); //$NON-NLS-1$
+ decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("b", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(135, ((ASTNode) decl).getOffset());
+ assertEquals(1, ((ASTNode) decl).getLength());
+
+ offset = code.indexOf("X { // defines X"); //$NON-NLS-1$
+ decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("X", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(177, ((ASTNode) decl).getOffset());
+ assertEquals(1, ((ASTNode) decl).getLength());
+
+ offset = code.indexOf("x; // defines nonstatic data member x"); //$NON-NLS-1$
+ decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("x", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(198, ((ASTNode) decl).getOffset());
+ assertEquals(1, ((ASTNode) decl).getLength());
+
+ IASTNode def;
+ offset = code.indexOf("y; // declares static data member y"); //$NON-NLS-1$
+ def = testF3(file, offset);
+ assertTrue(def instanceof IASTName);
+ assertEquals("y", ((IASTName) def).toString()); //$NON-NLS-1$
+ assertEquals(337, ((ASTNode) def).getOffset());
+ assertEquals(1, ((ASTNode) def).getLength());
+
+ offset = code.indexOf("X(): x(0) { } // defines a constructor of X"); //$NON-NLS-1$
+ decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("X", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(283, ((ASTNode) decl).getOffset());
+ assertEquals(1, ((ASTNode) decl).getLength());
+
+ offset = code.indexOf("x(0) { } // defines a constructor of X"); //$NON-NLS-1$
+ decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("x", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(198, ((ASTNode) decl).getOffset());
+ assertEquals(1, ((ASTNode) decl).getLength());
+
+ offset = code.indexOf("X::y = 1; // defines X::y"); //$NON-NLS-1$
+ decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("X", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(177, ((ASTNode) decl).getOffset());
+ assertEquals(1, ((ASTNode) decl).getLength());
+
+ offset = code.indexOf("y = 1; // defines X::y"); //$NON-NLS-1$
+ decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("y", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(247, ((ASTNode) decl).getOffset());
+ assertEquals(1, ((ASTNode) decl).getLength());
+
+ offset = code.indexOf("up, down }; // defines up and down"); //$NON-NLS-1$
+ decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("up", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(367, ((ASTNode) decl).getOffset());
+ assertEquals(2, ((ASTNode) decl).getLength());
+
+ offset = code.indexOf("down }; // defines up and down"); //$NON-NLS-1$
+ decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("down", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(371, ((ASTNode) decl).getOffset());
+ assertEquals(4, ((ASTNode) decl).getLength());
+
+ offset = code.indexOf("N { int d; } // defines N and N::d"); //$NON-NLS-1$
+ decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("N", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(412, ((ASTNode) decl).getOffset());
+ assertEquals(1, ((ASTNode) decl).getLength());
+
+ offset = code.indexOf("d; } // defines N and N::d"); //$NON-NLS-1$
+ decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("d", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(695, ((ASTNode) decl).getOffset());
+ assertEquals(1, ((ASTNode) decl).getLength());
+
+ offset = code.indexOf("N1 = N; // defines N1"); //$NON-NLS-1$
+ decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("N1", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(457, ((ASTNode) decl).getOffset());
+ assertEquals(2, ((ASTNode) decl).getLength());
+
+ offset = code.indexOf("N; // defines N1"); //$NON-NLS-1$
+ def = testF3(file, offset);
+ assertTrue(def instanceof IASTName);
+ assertEquals("N", ((IASTName) def).toString()); //$NON-NLS-1$
+ assertEquals(412, ((ASTNode) def).getOffset());
+ assertEquals(1, ((ASTNode) def).getLength());
+
+ offset = code.indexOf("X anX; // defines anX"); //$NON-NLS-1$
+ def = testF3(file, offset);
+ assertTrue(def instanceof IASTName);
+ assertEquals("X", ((IASTName) def).toString()); //$NON-NLS-1$
+ assertEquals(177, ((ASTNode) def).getOffset());
+ assertEquals(1, ((ASTNode) def).getLength());
+
+ offset = code.indexOf("anX; // defines anX"); //$NON-NLS-1$
+ decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("X", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(code.indexOf("X()"), ((ASTNode) decl).getOffset());
+ assertEquals("X".length(), ((ASTNode) decl).getLength());
+
+ offset = code.indexOf("a; // declares a"); //$NON-NLS-1$
+ def = testF3(file, offset);
+ assertTrue(def instanceof IASTName);
+ assertEquals("a", ((IASTName) def).toString()); //$NON-NLS-1$
+ assertEquals(4, ((ASTNode) def).getOffset());
+ assertEquals(1, ((ASTNode) def).getLength());
+
+ offset = code.indexOf("c; // declares c"); //$NON-NLS-1$
+ def = testF3(file, offset);
+ assertTrue(def instanceof IASTName);
+ assertEquals("c", ((IASTName) def).toString()); //$NON-NLS-1$
+ assertEquals(37, ((ASTNode) def).getOffset());
+ assertEquals(1, ((ASTNode) def).getLength());
+
+ offset = code.indexOf("f(int y); // declar f"); //$NON-NLS-1$
+ def = testF3(file, offset);
+ assertTrue(def instanceof IASTName);
+ assertEquals("f", ((IASTName) def).toString()); //$NON-NLS-1$
+ assertEquals(61, ((ASTNode) def).getOffset());
+ assertEquals(1, ((ASTNode) def).getLength());
+
+ offset = code.indexOf("S; // declares S"); //$NON-NLS-1$
+ def = testF3(file, offset);
+ assertTrue(def instanceof IASTName);
+ assertEquals("S", ((IASTName) def).toString()); //$NON-NLS-1$
+ assertEquals(120, ((ASTNode) def).getOffset());
+ assertEquals(1, ((ASTNode) def).getLength());
+
+ offset = code.indexOf("Int; // declares Int"); //$NON-NLS-1$
+ decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("Int", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(625, ((ASTNode) decl).getOffset());
+ assertEquals(3, ((ASTNode) decl).getLength());
+
+ offset = code.indexOf("X anotherX; // declares anotherX"); //$NON-NLS-1$
+ def = testF3(file, offset);
+ assertTrue(def instanceof IASTName);
+ assertEquals("X", ((IASTName) def).toString()); //$NON-NLS-1$
+ assertEquals(177, ((ASTNode) def).getOffset());
+ assertEquals(1, ((ASTNode) def).getLength());
+
+ offset = code.indexOf("anotherX; // declares anotherX"); //$NON-NLS-1$
+ decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("anotherX", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(655, ((ASTNode) decl).getOffset());
+ assertEquals(8, ((ASTNode) decl).getLength());
+
+ offset = code.indexOf("N::d; // declares N::d"); //$NON-NLS-1$
+ def = testF3(file, offset);
+ assertTrue(def instanceof IASTName);
+ assertEquals("N", ((IASTName) def).toString()); //$NON-NLS-1$
+ assertEquals(412, ((ASTNode) def).getOffset());
+ assertEquals(1, ((ASTNode) def).getLength());
+
+ offset = code.indexOf("d; // declares N::d"); //$NON-NLS-1$
+ def = testF3(file, offset);
+ assertTrue(def instanceof IASTName);
+ assertEquals("d", ((IASTName) def).toString()); //$NON-NLS-1$
+ assertEquals(420, ((ASTNode) def).getOffset());
+ assertEquals(1, ((ASTNode) def).getLength());
+ }
+
+ public void testBug95225() throws Exception {
+ StringBuilder buffer = new StringBuilder();
+ buffer.append("class Overflow {\n"); //$NON-NLS-1$
+ buffer.append("public:\n"); //$NON-NLS-1$
+ buffer.append("Overflow(char,double,double);\n"); //$NON-NLS-1$
+ buffer.append("};\n"); //$NON-NLS-1$
+ buffer.append("void f(double x)\n"); //$NON-NLS-1$
+ buffer.append("{\n"); //$NON-NLS-1$
+ buffer.append("throw Overflow('+',x,3.45e107);\n"); //$NON-NLS-1$
+ buffer.append("}\n"); //$NON-NLS-1$
+ buffer.append("int foo() {\n"); //$NON-NLS-1$
+ buffer.append("try {\n"); //$NON-NLS-1$
+ buffer.append("f(1.2);\n"); //$NON-NLS-1$
+ buffer.append("}\n"); //$NON-NLS-1$
+ buffer.append("catch(Overflow& oo) {\n"); //$NON-NLS-1$
+ buffer.append(" // handle exceptions of type Overflow here\n"); //$NON-NLS-1$
+ buffer.append("}\n"); //$NON-NLS-1$
+ buffer.append("}\n"); //$NON-NLS-1$
+
+ String code = buffer.toString();
+ IFile file = importFile("testBug95225.cpp", code); //$NON-NLS-1$
+
+ int offset = code.indexOf("rflow('+',x,3.45e107);"); //$NON-NLS-1$
+ IASTNode decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("Overflow", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(25, ((ASTNode) decl).getOffset());
+ assertEquals(8, ((ASTNode) decl).getLength());
+
+ offset = code.indexOf("x,3.45e107);"); //$NON-NLS-1$
+ decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("x", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(72, ((ASTNode) decl).getOffset());
+ assertEquals(1, ((ASTNode) decl).getLength());
+ }
+
+ public void testNoDefinitions() throws Exception {
+ StringBuilder buffer = new StringBuilder();
+ buffer.append("extern int a1; // declares a\n"); //$NON-NLS-1$
+ buffer.append("extern const int c1; // declares c\n"); //$NON-NLS-1$
+ buffer.append("int f1(int); // declares f\n"); //$NON-NLS-1$
+ buffer.append("struct S1; // declares S\n"); //$NON-NLS-1$
+ buffer.append("typedef int Int; // declares Int\n"); //$NON-NLS-1$
+
+ String code = buffer.toString();
+ IFile file = importFile("testNoDefinitions.cpp", code); //$NON-NLS-1$
+
+ int offset = code.indexOf("a1; // declares a"); //$NON-NLS-1$
+ IASTNode decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("a1", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(11, ((ASTNode) decl).getOffset());
+ assertEquals(2, ((ASTNode) decl).getLength());
+
+ offset = code.indexOf("c1; // declares c"); //$NON-NLS-1$
+ decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("c1", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(46, ((ASTNode) decl).getOffset());
+ assertEquals(2, ((ASTNode) decl).getLength());
+
+ offset = code.indexOf("f1(int); // declares f"); //$NON-NLS-1$
+ decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("f1", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(68, ((ASTNode) decl).getOffset());
+ assertEquals(2, ((ASTNode) decl).getLength());
+
+ offset = code.indexOf("S1; // declares S"); //$NON-NLS-1$
+ decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("S1", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(98, ((ASTNode) decl).getOffset());
+ assertEquals(2, ((ASTNode) decl).getLength());
+
+ offset = code.indexOf("Int; // declares Int"); //$NON-NLS-1$
+ decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("Int", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(128, ((ASTNode) decl).getOffset());
+ assertEquals(3, ((ASTNode) decl).getLength());
+ }
+
+ public void testBug95202() throws Exception {
+ StringBuilder buffer = new StringBuilder();
+ buffer.append("struct A { }; // implicitlydeclared A::operator=\n"); //$NON-NLS-1$
+ buffer.append("struct B : A {\n"); //$NON-NLS-1$
+ buffer.append("B& operator=(const B &);\n"); //$NON-NLS-1$
+ buffer.append("};\n"); //$NON-NLS-1$
+ buffer.append("B& B::operator=(const B& s) {\n"); //$NON-NLS-1$
+ buffer.append("this->B::operator=(s); // wellformed\n"); //$NON-NLS-1$
+ buffer.append("return *this;\n"); //$NON-NLS-1$
+ buffer.append("}\n"); //$NON-NLS-1$
+
+ String code = buffer.toString();
+ IFile file = importFile("testBug95202.cpp", code); //$NON-NLS-1$
+
+ int offset = code.indexOf("s); // wellformed"); //$NON-NLS-1$
+ IASTNode decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("s", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(117, ((ASTNode) decl).getOffset());
+ assertEquals(1, ((ASTNode) decl).getLength());
+ }
+
+ public void testBug95229() throws Exception {
+ StringBuilder buffer = new StringBuilder();
+ buffer.append("struct A {\n"); //$NON-NLS-1$
+ buffer.append("operator short(); // F3 on operator causes an infinite loop\n"); //$NON-NLS-1$
+ buffer.append("} a;\n"); //$NON-NLS-1$
+ buffer.append("int f(int);\n"); //$NON-NLS-1$
+ buffer.append("int f(float);\n"); //$NON-NLS-1$
+ buffer.append("int i = f(a); // Calls f(int), because short -> int is\n"); //$NON-NLS-1$
+
+ String code = buffer.toString();
+ IFile file = importFile("testBug95229.cpp", code); //$NON-NLS-1$
+
+ int offset = code.indexOf("rator short(); // F3"); //$NON-NLS-1$
+ IASTNode decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("operator short int", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(11, ((ASTNode) decl).getOffset());
+ assertEquals(14, ((ASTNode) decl).getLength());
+ }
+
+ public void testBug78354() throws Exception {
+ StringBuilder buffer = new StringBuilder();
+ buffer.append("typedef int TestTypeOne;\n"); //$NON-NLS-1$
+ buffer.append("typedef int TestTypeTwo;\n"); //$NON-NLS-1$
+ buffer.append("int main()\n"); //$NON-NLS-1$
+ buffer.append("{\n"); //$NON-NLS-1$
+ buffer.append("TestTypeOne myFirstLink = 5;\n"); //$NON-NLS-1$
+ buffer.append("TestTypeTwo mySecondLink = 6;\n"); //$NON-NLS-1$
+ buffer.append("return 0;\n"); //$NON-NLS-1$
+ buffer.append("}\n"); //$NON-NLS-1$
+
+ String code = buffer.toString();
+ IFile file = importFileWithLink("testBug78354.cpp", code); //$NON-NLS-1$
+
+ int offset = code.indexOf("TestTypeOne myFirstLink = 5;"); //$NON-NLS-1$
+ IASTNode decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("TestTypeOne", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(12, ((ASTNode) decl).getOffset());
+ assertEquals(11, ((ASTNode) decl).getLength());
+ }
+
+ public void testBug103697() throws Exception {
+ StringBuilder buffer = new StringBuilder();
+ buffer.append("int x;\n"); //$NON-NLS-1$
+ buffer.append("int foo() {\n"); //$NON-NLS-1$
+ buffer.append(" return x;\n"); //$NON-NLS-1$
+ buffer.append("}\n"); //$NON-NLS-1$
+
+ String code = buffer.toString();
+ IFile file = importFileWithLink("testBug103697.cpp", code); //$NON-NLS-1$
+
+ int offset = code.indexOf("return x;\n") + "return ".length(); //$NON-NLS-1$ //$NON-NLS-2$
+ IASTNode decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("x", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(4, ((ASTNode) decl).getOffset());
+ assertEquals(1, ((ASTNode) decl).getLength());
+ }
+
+ public void testBug76043() throws Exception {
+ StringBuilder buffer = new StringBuilder();
+ buffer.append("int x;\n"); //$NON-NLS-1$
+ buffer.append("int foo() {\n"); //$NON-NLS-1$
+ buffer.append(" return x;\n"); //$NON-NLS-1$
+ buffer.append("}\n"); //$NON-NLS-1$
+ String code = buffer.toString();
+
+ IFile file = importFileInsideLinkedFolder("testBug76043.c", code, "folder"); //$NON-NLS-1$ //$NON-NLS-2$
+
+ assertFalse(file.isLinked()); // I'm not sure why the IResource#isLinked() returns false if it's contained within a linked folder
+
+ int offset = code.indexOf("return x;\n") + "return ".length(); //$NON-NLS-1$ //$NON-NLS-2$
+ IASTNode decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("x", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(4, ((ASTNode) decl).getOffset());
+ assertEquals(1, ((ASTNode) decl).getLength());
+ }
+
+ // typedef int (*functionPointer)(int);
+ // functionPointer fctVariable;
+
+ // typedef int (functionPointerArray[2])(int);
+ // functionPointerArray fctVariablArray;
+ public void testBug195822() throws Exception {
+ StringBuilder[] contents = getContentsForTest(2);
+ String code = contents[0].toString();
+ String appendCode = contents[1].toString();
+
+ String[] filenames = { "testBug195822.c", "testBug195822.cpp" };
+ for (int i = 0; i < 2; i++) {
+ IFile file = importFile(filenames[i], code);
+ int od1 = code.indexOf("functionPointer");
+ int or1 = code.indexOf("functionPointer", od1 + 1);
+
+ IASTNode decl = testF3(file, or1);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("functionPointer", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(od1, ((ASTNode) decl).getOffset());
+
+ IEditorPart editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
+ assertNotNull(editor);
+ assertTrue(editor instanceof ITextEditor);
+ IDocument doc = ((ITextEditor) editor).getDocumentProvider().getDocument(editor.getEditorInput());
+ doc.replace(doc.getLength(), 0, appendCode);
+ int od2 = appendCode.indexOf("functionPointerArray");
+ int or2 = appendCode.indexOf("functionPointerArray", od2 + 1);
+
+ decl = testF3(file, code.length() + or2);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("functionPointerArray", ((IASTName) decl).toString());
+ assertEquals(code.length() + od2, ((ASTNode) decl).getOffset());
+ }
+ }
+
+ // #define EMPTY
+ // EMPTY void foo() {}
+ public void testEmptyMacro_Bug198649() throws Exception {
+ String code = getContentsForTest(1)[0].toString();
+ String[] filenames = { "testBug198649.c", "testBug198649.cpp" };
+ for (int i = 0; i < 2; i++) {
+ IFile file = importFile(filenames[i], code);
+ int od1 = code.indexOf("EMPTY");
+ int or1 = code.indexOf("EMPTY", od1 + 1);
+
+ IASTNode decl = testF3(file, or1);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("EMPTY", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(od1, ((ASTNode) decl).getOffset());
+ }
+ }
+
+ // static int myFunc(int) {}
+ // #define USE_FUNC(x) (myFunc(x) == 0)
+ public void testFallBackForStaticFuncs_Bug252549() throws Exception {
+ String code = getContentsForTest(1)[0].toString();
+ String[] filenames = { "testBug252549.c", "testBug252549.cpp" };
+ for (int i = 0; i < 2; i++) {
+ IFile file = importFile(filenames[i], code);
+ int offset = code.indexOf("myFunc(x)");
+ IASTNode decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ final IASTName name = (IASTName) decl;
+ assertTrue(name.isDefinition());
+ assertEquals("myFunc", name.toString());
+ }
+ }
+
+ // struct A {
+ // void method(int p) {}
+ // };
+ //
+ // void test(A* a) {
+ // a->method();
+ // a.method(0);
+ // }
+ // void A::method(int a, int b) {}
+ // void B::method(int b) {}
+ public void testUnresolvedMethod_278337() throws Exception {
+ String code = getContentsForTest(1)[0].toString();
+ IFile file = importFile("testBug278337.cpp", code);
+ IASTNode node = testF3(file, code.indexOf("method();"));
+ assertContents(code, node.getFileLocation().getNodeOffset(), "method(int p)");
+ node = testF3(file, code.indexOf("method(0);"));
+ assertNull(node);
+ node = testF3(file, code.indexOf("method(int a, int b)"));
+ assertContents(code, node.getFileLocation().getNodeOffset(), "method(int p)");
+ node = testF3(file, code.indexOf("method(int b)"));
+ // Should not navigate away since there is no good candidate.
+ assertContents(code, node.getFileLocation().getNodeOffset(), "method(int b)");
+ }
+
+ // class A {
+ // class B {};
+ // };
+ //
+ // B b;
+ public void testUnresolvedType() throws Exception {
+ String code = getContentsForTest(1)[0].toString();
+ IFile file = importFile("testUndefinedType.cpp", code);
+ int offset = code.indexOf("B b;");
+ IASTNode node = testF3(file, offset);
+ assertNull(node);
+ }
+
+ // void func(int a);
+ // void func(float a);
+ // void func(int* a);
+ // void test() {
+ // func();
+ // }
+ public void testUnresolvedOverloadedFunction() throws Exception {
+ String code = getContentsForTest(1)[0].toString();
+ IFile file = importFile("testUnresolvedOverloadFunction.cpp", code);
+ int offset = code.indexOf("func();");
+ try {
+ IASTNode node = testF3(file, offset);
+ fail("Didn't expect navigation to succeed due to multiple choices.");
+ } catch (RuntimeException e) {
+ assertEquals("ambiguous input: 3", e.getMessage());
+ }
+ }
+
+ // namespace nm {
+ // template<typename T> void func(T a, T b){}
+ // }
+ // template<typename Tmp> void testFunc() {
+ // Tmp val;
+ // nm::func(val, val);
+ // }
+ public void testDependentNameInNamespace_281736() throws Exception {
+ String code = getContentsForTest(1)[0].toString();
+ IFile file = importFile("testDependentNameInNamespace.cpp", code);
+ int offset = code.indexOf("func(val, val);");
+ IASTNode node = testF3(file, offset);
+ assertContents(code, node.getFileLocation().getNodeOffset(), "func(T a, T b)");
+ }
+
+ // template<typename T> void func(T a){}
+ // template<typename T> void func(T a, T b){}
+ //
+ // template<typename Tmp> void testFunc() {
+ // Tmp val;
+ // func(val, val); // F3 could know that 'func(T a)' cannot be a correct match.
+ // }
+ public void testDependentNameTwoChoices_281736() throws Exception {
+ String code = getContentsForTest(1)[0].toString();
+ IFile file = importFile("testDependentNameTwoChoices_281736.cpp", code);
+ int offset = code.indexOf("func(val, val);");
+ IASTNode node = testF3(file, offset);
+ assertContents(code, node.getFileLocation().getNodeOffset(), "func(T a, T b)");
+ }
+
+ // namespace N {
+ // template <typename T> class AAA { T _t; };
+ // }
+ // N::AAA<int> a;
+ public void testBug92632() throws Exception {
+ String code = getContentsForTest(1)[0].toString();
+ IFile file = importFile("testBug92632.cpp", code);
+ int index = code.indexOf("AAA<int>"); //$NON-NLS-1$
+ IASTNode node = testF3(file, index);
+ assertContents(code, node.getFileLocation().getNodeOffset(), "AAA");
+ node = testF3(file, index + 4);
+ assertContents(code, node.getFileLocation().getNodeOffset(), "AAA");
+ }
+
+ // void bug(int var) {
+ // int foo = var;
+ // int foo2(var);
+ // }
+ public void testBug325135a() throws Exception {
+ String code = getAboveComment();
+ IFile file = importFile("testBug325135a.cpp", code); //$NON-NLS-1$
+ int parOffset = code.indexOf("var)");
+
+ int offset = code.indexOf("var;"); //$NON-NLS-1$
+ IASTNode decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("var", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(parOffset, ((ASTNode) decl).getOffset());
+ assertEquals(3, ((ASTNode) decl).getLength());
+
+ offset = code.indexOf("var);"); //$NON-NLS-1$
+ decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("var", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(parOffset, ((ASTNode) decl).getOffset());
+ assertEquals(3, ((ASTNode) decl).getLength());
+ }
+
+ // template<typename T> class C {
+ // template<typename V> void f(V v) {
+ // T t;
+ // V s;
+ // }
+ // };
+ public void testBug325135b() throws Exception {
+ String code = getAboveComment();
+ IFile file = importFile("testBug325135b.cpp", code); //$NON-NLS-1$
+
+ int offsetT = code.indexOf("T>");
+ int offsetV = code.indexOf("V>");
+
+ int offset = code.indexOf("T t;");
+ IASTNode decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("T", ((IASTName) decl).toString());
+ assertEquals(offsetT, ((ASTNode) decl).getOffset());
+
+ offset = code.indexOf("V s;");
+ decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("V", ((IASTName) decl).toString());
+ assertEquals(offsetV, ((ASTNode) decl).getOffset());
+ }
+
+ // template <typename>
+ // struct A {
+ // struct S {
+ // void foo();
+ // };
+ // void test() {
+ // S s;
+ // s.foo();
+ // }
+ // };
+ public void testBug399142() throws Exception {
+ String code = getAboveComment();
+ IFile file = importFile("testBug399142.cpp", code); //$NON-NLS-1$
+
+ int offset = code.indexOf("s.foo()") + 2;
+ IASTNode decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ }
+
+ // int waldo;
+ // void foo() {
+ // extern int waldo;
+ // }
+ public void testLocallyDeclaredExternVariable_372004() throws Exception {
+ String code = getAboveComment();
+ IFile file = importFile("testBug372004.cpp", code);
+
+ int offset = code.indexOf("extern int waldo") + 12;
+ assertTrue(testF3(file, offset) instanceof IASTName);
+ }
+
+ // template <typename>
+ // struct A {
+ // int waldo;
+ // };
+ //
+ // template <typename T>
+ // struct B {
+ // A<T> obj;
+ // void foo() {
+ // obj.waldo;
+ // }
+ // };
+ public void testDependentMemberAccess_448764() throws Exception {
+ String code = getAboveComment();
+ IFile file = importFile("testBug448764.cpp", code);
+
+ int offset = code.indexOf("obj.waldo") + 4;
+ assertTrue(testF3(file, offset) instanceof IASTName);
+ }
+
+ // struct A {
+ // A();
+ // };
+ //
+ // template <class>
+ // struct B {
+ // B() {}
+ // };
+ //
+ // struct C {
+ // C();
+ // B<A>* b;
+ // };
+ //
+ // C::C() : b(new B<A>()) {}
+ public void testAmbiguityWithImplicitName_463234() throws Exception {
+ String code = getAboveComment();
+ IFile file = importFile("testBug463234.cpp", code);
+
+ int offset = code.indexOf("new B<A>") + 6;
+ // There should be two ambiguous targets, the class A and the constructor B::B,
+ // with the class A being the first one (index 0).
+ IASTNode target = testF3WithAmbiguity(file, offset, 0);
+ assertTrue(target instanceof IASTName);
+ assertEquals("A", ((IASTName) target).toString());
+ }
+
+ // class Other {
+ // int foo();
+ // };
+ //
+ // template<class X>
+ // class Base {
+ // Other *other;
+ // };
+ //
+ // template<class X>
+ // class Child : public Base<X> {
+ // void bar() {
+ // this->other->foo(); // can't find other and foo
+ // Base<X>::other->foo(); // can find other can't find foo
+ // }
+ // };
+ public void testMemberOfDependentBase_421823() throws Exception {
+ String code = getAboveComment();
+ IFile file = importFile("testBug421823.cpp", code);
+
+ int offset = code.indexOf("this->other") + 6;
+ assertTrue(testF3(file, offset) instanceof IASTName);
+
+ offset += 7; // 'foo' in 'this->other->foo'
+ assertTrue(testF3(file, offset) instanceof IASTName);
+
+ offset = code.indexOf("::other->foo") + 9;
+ assertTrue(testF3(file, offset) instanceof IASTName);
+ }
+
+ // struct Duration {};
+ // Duration operator "" _d(unsigned long long);
+ // Duration dur = 42_d;
+ public void testUserDefinedLiteralSuffix_484618() throws Exception {
+ String code = getAboveComment();
+ IFile file = importFile("testBug484618.cpp", code);
+
+ int offset = code.indexOf("42_d") + 3;
+ assertTrue(testF3(file, offset) instanceof IASTName);
+ }
+
+ // struct Base {
+ // Base(int, int);
+ // };
+ //
+ // struct Derived : Base {
+ // using Base::Base;
+ // };
+ public void testInheritedConstructor_484899() throws Exception {
+ String code = getAboveComment();
+ IFile file = importFile("testBug484899.cpp", code);
+
+ int offset = code.indexOf("Base::Base") + 7;
+ IASTNode target = testF3(file, offset);
+ assertInstance(target, IASTName.class);
+ IBinding targetBinding = ((IASTName) target).resolveBinding();
+ assertInstance(targetBinding, ICPPConstructor.class);
+ }
+
+ // template <typename = short>
+ // struct waldo;
+ //
+ // template <typename>
+ // struct waldo {};
+ public void testNavigationToTemplateForwardDecl_483048() throws Exception {
+ String code = getAboveComment();
+ IFile file = importFile("testBug483048.cpp", code);
+
+ int offset = code.indexOf("waldo {}");
+ IASTNode target = testF3(file, offset);
+
+ // Check that the result of the navigation is the forward declaration,
+ // not the definition.
+ assertInstance(target.getParent(), IASTElaboratedTypeSpecifier.class);
+ }
+
+ // struct Waldo {};
+ // Waldo find();
+ // int main() {
+ // auto waldo = find();
+ // }
+ public void testAutoType_511522() throws Exception {
+ String code = getAboveComment();
+ IFile file = importFile("testBug511522.cpp", code);
+
+ int offset = code.indexOf("auto");
+ IASTNode target = testF3(file, offset);
+ assertInstance(target, IASTName.class);
+ }
+
+ // struct Waldo {};
+ // template<typename T>
+ // struct Basket{};
+ // Waldo find();
+ // Waldo myFriend;
+ // int main(decltype(myFriend) p) {
+ // auto waldo = find();
+ // Basket<typeof(waldo)> basket;
+ // decltype(waldo) wuff;
+ // }
+ public void testDeclType_520913() throws Exception {
+ String code = getAboveComment();
+ IFile file = importFile("testBug520913.cpp", code);
+
+ int offset = code.indexOf("main") + 10;
+ IASTNode target = testF3(file, offset);
+ assertInstance(target, IASTName.class);
+
+ offset = code.indexOf("typeof");
+ target = testF3(file, offset);
+ assertInstance(target, IASTName.class);
+ assertEquals("Waldo", ((IASTName) target).toString());
+
+ offset = code.indexOf("wuff") - 10;
+ target = testF3(file, offset);
+ assertInstance(target, IASTName.class);
+ }
+
+ // template<typename T>
+ // struct A {
+ // struct AA{};
+ //
+ // auto test() {
+ // auto test = A<T>::AA();
+ // return test;
+ // }
+ //
+ // };
+ public void testDependentAutoType_520913() throws Exception {
+ String code = getAboveComment();
+ IFile file = importFile("testBug520913a.cpp", code);
+
+ int offset = code.indexOf("auto test = ") + 2;
+ IASTNode target = testF3(file, offset);
+ assertInstance(target, IASTName.class);
+ assertEquals("AA", ((IASTName) target).toString());
+
+ offset = code.indexOf("auto test()") + 2;
+ target = testF3(file, offset);
+ assertInstance(target, IASTName.class);
+ assertEquals("AA", ((IASTName) target).toString());
+ }
+
+ // template<char T>
+ // struct A {};
+ //
+ // template<>
+ // struct A<0> {};
+ //
+ // void test(){
+ // A<0> a0;
+ // A<1> a1;
+ // }
+ public void testPartialSpecializationResolution_525288() throws Exception {
+ CPPASTNameBase.sAllowNameComputation = true;
+ String code = getAboveComment();
+ IFile file = importFile("testBug525288.cpp", code);
+
+ int offset = code.indexOf("a0") - 5;
+ IASTNode target = testF3(file, offset);
+ assertInstance(target, IASTName.class);
+ assertEquals("A<0>", ((IASTName) target).toString());
+
+ offset = code.indexOf("a1") - 5;
+ target = testF3(file, offset);
+ assertInstance(target, IASTName.class);
+ assertEquals("A", ((IASTName) target).toString());
+ }
+
+ // void npeTest() {
+ // auto i = 1;
+ // }
+ public void testEmptySpace_525794() throws Exception {
+ String code = getAboveComment();
+ IFile file = importFile("testBug525794.cpp", code);
+
+ int offset = code.indexOf("auto") - 2;
+ IASTNode target = testF3(file, offset);
+ }
+
+ // class Waldo {
+ // void find();
+ // };
+ // int Waldo::find() {}
+ public void testNavigationToDefinitionWithWrongSignature_525739() throws Exception {
+ String code = getAboveComment();
+ IFile file = importFile("testBug525739.cpp", code);
+
+ int offset = code.indexOf("void find") + 6;
+ IASTNode target = testF3(file, offset);
+ assertInstance(target, IASTName.class);
+ assertEquals(IASTNameOwner.r_definition, ((IASTName) target).getRoleOfName(false));
+ }
+
+ //int arr[2]{1, 2};
+ //auto [e1, e2] = arr;
+ //auto r1 = e1;
+ //auto r2 = e2;
+ public void testOpenDeclarationForStructuredBinding_522200() throws Exception {
+ String code = getAboveComment();
+ IFile file = importFile("testSB_.cpp", code); //$NON-NLS-1$
+
+ int offsetE1Reference = code.indexOf("e1;"); //$NON-NLS-1$
+ IASTNode e1Declaration = testF3(file, offsetE1Reference);
+ assertTrue(e1Declaration instanceof IASTName);
+
+ String expectedE1Name = "e1"; //$NON-NLS-1$
+ assertEquals(expectedE1Name, ((IASTName) e1Declaration).toString());
+ assertEquals(code.indexOf(expectedE1Name), ((ASTNode) e1Declaration).getOffset());
+ assertEquals(expectedE1Name.length(), ((ASTNode) e1Declaration).getLength());
+ assertEquals(IASTNameOwner.r_definition, ((IASTName) e1Declaration).getRoleOfName(false));
+
+ int offsetE2Reference = code.indexOf("e2;"); //$NON-NLS-1$
+ IASTNode e2Declaration = testF3(file, offsetE2Reference);
+ assertTrue(e2Declaration instanceof IASTName);
+
+ String expectedE2Name = "e2"; //$NON-NLS-1$
+ assertEquals(expectedE2Name, ((IASTName) e2Declaration).toString());
+ assertEquals(code.indexOf(expectedE2Name), ((ASTNode) e2Declaration).getOffset());
+ assertEquals(expectedE2Name.length(), ((ASTNode) e2Declaration).getLength());
+ assertEquals(IASTNameOwner.r_definition, ((IASTName) e2Declaration).getRoleOfName(false));
+ }
+}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selection/CPPSelectionTestsIndexer.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selection/CPPSelectionTestsIndexer.java
deleted file mode 100644
index a66e622f1de..00000000000
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selection/CPPSelectionTestsIndexer.java
+++ /dev/null
@@ -1,1417 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2015 Wind River Systems, Inc. and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Markus Schorn - initial API and implementation
- * Sergey Prigogin (Google)
- *******************************************************************************/
-package org.eclipse.cdt.ui.tests.text.selection;
-
-import java.io.IOException;
-
-import org.eclipse.cdt.core.CCorePlugin;
-import org.eclipse.cdt.core.dom.IPDOMManager;
-import org.eclipse.cdt.core.dom.ast.IASTFileLocation;
-import org.eclipse.cdt.core.dom.ast.IASTName;
-import org.eclipse.cdt.core.dom.ast.IASTNameOwner;
-import org.eclipse.cdt.core.dom.ast.IASTNode;
-import org.eclipse.cdt.core.dom.ast.IBinding;
-import org.eclipse.cdt.core.dom.ast.IMacroBinding;
-import org.eclipse.cdt.core.index.IIndex;
-import org.eclipse.cdt.core.model.ICProject;
-import org.eclipse.cdt.core.testplugin.CProjectHelper;
-import org.eclipse.cdt.core.testplugin.util.TestSourceReader;
-import org.eclipse.cdt.internal.core.dom.parser.ASTNode;
-import org.eclipse.cdt.ui.testplugin.CTestPlugin;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.part.FileEditorInput;
-
-import junit.framework.Test;
-
-/**
- * Test Ctrl-F3/F3 with the DOM Indexer for a C++ project.
- */
-public class CPPSelectionTestsIndexer extends BaseSelectionTestsIndexer {
- protected String sourceIndexerID;
- protected IIndex index;
-
- public CPPSelectionTestsIndexer(String name) {
- super(name);
- sourceIndexerID = IPDOMManager.ID_FAST_INDEXER;
- }
-
- public static Test suite() {
- return suite(CPPSelectionTestsIndexer.class);
- }
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
-
- // Create temp project
- fCProject = createProject("CPPSelectionTestsDOMIndexerProject");
- assertNotNull("Unable to create project", fCProject);
- // MakeProjectNature.addNature(project, new NullProgressMonitor());
- // ScannerConfigNature.addScannerConfigNature(project);
- // PerProjectSICollector.calculateCompilerBuiltins(project);
-
- CCorePlugin.getIndexManager().setIndexerId(fCProject, sourceIndexerID);
- index = CCorePlugin.getIndexManager().getIndex(fCProject);
- }
-
- @Override
- protected void tearDown() throws Exception {
- closeAllEditors();
- CProjectHelper.delete(fCProject);
- super.tearDown();
- }
-
- private ICProject createProject(String projectName) throws CoreException {
- ICProject cPrj = CProjectHelper.createCCProject(projectName, "bin", IPDOMManager.ID_NO_INDEXER);
- return cPrj;
- }
-
- protected StringBuilder[] getContents(int sections) throws IOException {
- return TestSourceReader.getContentsForTest(CTestPlugin.getDefault().getBundle(), "ui",
- CPPSelectionTestsIndexer.class, getName(), sections);
- }
-
- private void assertNode(String name, int offset, IASTNode node) {
- assertNotNull(node);
- assertEquals(node.toString(), name);
- IASTFileLocation loc = node.getFileLocation();
- assertEquals(loc.getNodeOffset(), offset);
- assertEquals(loc.getNodeLength(), name.length());
- }
-
- // // header
- // class Point{
- // public:
- // Point(): xCoord(0){}
- // Point& operator=(const Point &rhs){return *this;}
- // void* operator new [ ] (unsigned int);
- // private:
- // int xCoord;
- // };
-
- // // source
- // #include "test93281.h"
- // static const Point zero;
- // int main(int argc, char **argv) {
- // Point *p2 = new Point();
- // p2-> operator // /* operator */ // F3 in the middle
- // // of "operator" should work
- // // \
- // /* */
- // =(zero); // line B
- // p2->operator /* oh yeah */ new // F3 in the middle of "operator"
- // // should work
- // //
- // [ /* sweet */ ] //
- // (2);
- // return (0);
- // }
- public void testBug93281() throws Exception {
- StringBuilder[] buffers = getContents(2);
- String hcode = buffers[0].toString();
- String scode = buffers[1].toString();
- IFile hfile = importFile("test93281.h", hcode);
- IFile file = importFile("test93281.cpp", scode);
- waitUntilFileIsIndexed(index, file);
-
- int offset = scode.indexOf("p2->operator") + 6;
- IASTNode node = testF3(file, offset);
-
- assertTrue(node instanceof IASTName);
- assertEquals(((IASTName) node).toString(), "operator new[]");
- assertEquals(((ASTNode) node).getOffset(), hcode.indexOf("operator new"));
- assertEquals(((ASTNode) node).getLength(), 16);
-
- offset = scode.indexOf("p2-> operator") + 11;
- node = testF3(file, offset);
-
- assertTrue(node instanceof IASTName);
- assertEquals(((IASTName) node).toString(), "operator =");
- assertEquals(((ASTNode) node).getOffset(), hcode.indexOf("operator="));
- assertEquals(((ASTNode) node).getLength(), 9);
- }
-
- // template <class T>
- // inline void testTemplate(T& aRef);
- //
- // class Temp {
- // };
-
- // #include <stdio.h>
- // #include <stdlib.h>
- // #include "test.h"
- // int main(void) {
- // puts("Hello World!!!");
- //
- // Temp testFile;
- // testTemplate(testFile);
- //
- // return EXIT_SUCCESS;
- // }
- public void testBug207320() throws Exception {
- StringBuilder[] buffers = getContents(2);
- String hcode = buffers[0].toString();
- String scode = buffers[1].toString();
- IFile hfile = importFile("test.h", hcode);
- IFile file = importFile("test.cpp", scode);
- waitUntilFileIsIndexed(index, file);
-
- int hoffset = hcode.indexOf("testTemplate");
- int soffset = scode.indexOf("testTemplate");
- IASTNode def = testF3(file, soffset + 2);
- assertTrue(def instanceof IASTName);
- assertEquals("testTemplate", ((IASTName) def).toString());
- assertEquals(hoffset, ((ASTNode) def).getOffset());
- assertEquals(12, ((ASTNode) def).getLength());
- }
-
- // template<typename T>
- // class C {
- // public: void assign(const T* s) {}
- // };
-
- // #include "testTemplateClassMethod.h"
- // void main() {
- // C<char> a;
- // a.assign("aaa");
- // }
- public void testTemplateClassMethod_207320() throws Exception {
- StringBuilder[] buffers = getContents(2);
- String hcode = buffers[0].toString();
- String scode = buffers[1].toString();
- IFile hfile = importFile("testTemplateClassMethod.h", hcode);
- IFile file = importFile("testTemplateClassMethod.cpp", scode);
- waitUntilFileIsIndexed(index, file);
-
- int hoffset = hcode.indexOf("assign");
- int soffset = scode.indexOf("assign");
- IASTNode def = testF3(file, soffset + 2);
- assertTrue(def instanceof IASTName);
- assertEquals("assign", ((IASTName) def).toString());
- assertEquals(hoffset, ((ASTNode) def).getOffset());
- assertEquals(6, ((ASTNode) def).getLength());
- }
-
- // // the header
- // extern int MyInt; // MyInt is in another file
- // extern const int MyConst; // MyConst is in another file
- // void MyFunc(int); // often used in header files
- // typedef int NewInt; // a normal typedef statement
- // struct MyStruct { int Member1; int Member2; };
- // class MyClass { int MemberVar; };
-
- // #include "basicDefinition.h"
- // int MyInt;
- // extern const int MyConst = 42;
- // void MyFunc(int a) { cout << a << endl; }
- // class MyClass;
- // struct MyStruct;
- public void testBasicDefinition() throws Exception {
- StringBuilder[] buffers = getContents(2);
- String hcode = buffers[0].toString();
- String scode = buffers[1].toString();
- IFile hfile = importFile("basicDefinition.h", hcode);
- IFile file = importFile("testBasicDefinition.cpp", scode);
- waitUntilFileIsIndexed(index, file);
-
- int hoffset = hcode.indexOf("MyInt");
- int soffset = scode.indexOf("MyInt");
- IASTNode decl = testF3(file, soffset + 2);
- IASTNode def = testF3(hfile, hoffset + 2);
- assertTrue(def instanceof IASTName);
- assertTrue(decl instanceof IASTName);
- assertEquals("MyInt", ((IASTName) decl).toString());
- assertEquals(hoffset, ((ASTNode) decl).getOffset());
- assertEquals(5, ((ASTNode) decl).getLength());
- assertEquals("MyInt", ((IASTName) def).toString());
- assertEquals(soffset, def.getFileLocation().getNodeOffset());
- assertEquals(5, ((ASTNode) def).getLength());
-
- hoffset = hcode.indexOf("MyConst");
- soffset = scode.indexOf("MyConst");
- decl = testF3(file, soffset + 2);
- def = testF3(hfile, hoffset + 2);
- assertTrue(def instanceof IASTName);
- assertTrue(decl instanceof IASTName);
- assertEquals("MyConst", ((IASTName) decl).toString());
- assertEquals(hoffset, ((ASTNode) decl).getOffset());
- assertEquals(7, ((ASTNode) decl).getLength());
- assertEquals("MyConst", ((IASTName) def).toString());
- assertEquals(soffset, def.getFileLocation().getNodeOffset());
- assertEquals(7, ((ASTNode) def).getLength());
-
- hoffset = hcode.indexOf("MyFunc");
- soffset = scode.indexOf("MyFunc");
- decl = testF3(file, soffset + 2);
- def = testF3(hfile, hoffset + 2);
- assertTrue(def instanceof IASTName);
- assertTrue(decl instanceof IASTName);
- assertEquals("MyFunc", ((IASTName) decl).toString());
- assertEquals(hoffset, ((ASTNode) decl).getOffset());
- assertEquals(6, ((ASTNode) decl).getLength());
- assertEquals("MyFunc", ((IASTName) def).toString());
- assertEquals(soffset, def.getFileLocation().getNodeOffset());
- assertEquals(6, ((ASTNode) def).getLength());
-
- hoffset = hcode.indexOf("MyStruct");
- soffset = scode.indexOf("MyStruct");
- decl = testF3(file, soffset + 2);
- def = testF3(hfile, hoffset + 2);
- assertTrue(def instanceof IASTName);
- assertTrue(decl instanceof IASTName);
- assertEquals("MyStruct", ((IASTName) decl).toString());
- assertEquals(hoffset, ((ASTNode) decl).getOffset());
- assertEquals(8, ((ASTNode) decl).getLength());
- assertEquals("MyStruct", ((IASTName) def).toString());
- assertEquals(hoffset, def.getFileLocation().getNodeOffset());
- assertEquals(8, ((ASTNode) def).getLength());
-
- hoffset = hcode.indexOf("MyClass");
- soffset = scode.indexOf("MyClass");
- decl = testF3(file, soffset + 2);
- def = testF3(hfile, hoffset + 2);
- assertTrue(def instanceof IASTName);
- assertTrue(decl instanceof IASTName);
- assertEquals("MyClass", ((IASTName) decl).toString());
- assertEquals(hoffset, ((ASTNode) decl).getOffset());
- assertEquals(7, ((ASTNode) decl).getLength());
- assertEquals("MyClass", ((IASTName) def).toString());
- assertEquals(hoffset, def.getFileLocation().getNodeOffset());
- assertEquals(7, ((ASTNode) def).getLength());
- }
-
- // // the header
- // namespace N {
- // template < class T > class AAA { T _t; };
- // };
-
- // #include "testBasicTemplateInstance.h"
- // N::AAA<int> a;
- public void testBasicTemplateInstance_207320() throws Exception {
- StringBuilder[] buffers = getContents(2);
- String hcode = buffers[0].toString();
- String scode = buffers[1].toString();
- IFile hfile = importFile("testBasicTemplateInstance.h", hcode);
- IFile file = importFile("testBasicTemplateInstance.cpp", scode);
- waitUntilFileIsIndexed(index, file);
-
- int hoffset = hcode.indexOf("AAA");
- int soffset = scode.indexOf("AAA<int>");
- IASTNode decl1 = testF3(file, soffset, 3);
- assertTrue(decl1 instanceof IASTName);
- assertEquals("AAA", ((IASTName) decl1).toString());
- assertEquals(hoffset, decl1.getFileLocation().getNodeOffset());
- assertEquals(3, ((ASTNode) decl1).getLength());
-
- IASTNode decl2 = testF3(file, soffset, 8);
- assertEquals("AAA", ((IASTName) decl2).toString());
- assertEquals(hoffset, decl2.getFileLocation().getNodeOffset());
- assertEquals(3, ((ASTNode) decl2).getLength());
- }
-
- // // the header
- // class X {
- // public:
- // X(int); // openReferences fails to find the constructor in g()
- // };
-
- // #include "testBug86829A.h"
- // X f(X);
- // void g()
- // {
- // X b = f(X(2)); // openDeclarations on X(int) shall find constructor
- // }
- public void testBug86829A() throws Exception {
- StringBuilder[] buffers = getContents(2);
- String hcode = buffers[0].toString();
- String scode = buffers[1].toString();
- IFile hfile = importFile("testBug86829A.h", hcode);
- IFile file = importFile("testBug86829A.cpp", scode);
- waitUntilFileIsIndexed(index, file);
-
- int offset = scode.indexOf("X(2)");
- int doffset = hcode.indexOf("X(int)");
- IASTNode decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("X", ((IASTName) decl).toString());
- assertEquals(doffset, decl.getFileLocation().getNodeOffset());
- assertEquals(1, ((ASTNode) decl).getLength());
- }
-
- // // the header
- // class X {
- // public:
- // operator int();
- // };
- // class Y {
- // public:
- // operator X();
- // };
-
- // #include "testBug86829B.h"
- // void testfunc() {
- // Y a;
- // int c = X(a); // OK: a.operator X().operator int()
- // }
- public void _testBug86829B() throws Exception {
- StringBuilder[] buffers = getContents(2);
- String hcode = buffers[0].toString();
- String scode = buffers[1].toString();
- IFile hfile = importFile("testBug86829B.h", hcode);
- IFile file = importFile("testBug86829B.cpp", scode);
- waitUntilFileIsIndexed(index, file);
-
- int offset = scode.indexOf("X(a)");
- int doffset = hcode.indexOf("X()");
- IASTNode decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals(decl.toString(), "X");
- assertEquals(doffset, decl.getFileLocation().getNodeOffset());
- assertEquals(1, ((ASTNode) decl).getLength());
- }
-
- // // the header
- // extern int a; // declares
- // extern const int c = 1; // defines
- // struct S {int a; int b;}; // defines
- // struct X { // defines
- // int x; // defines nonstatic data member
- // static int y; // declares static data member
- // X(): x(0) { } // defines a constructor of
- // };
- // enum E {up, down}; // defines
- // namespace N {int d;} // defines
- // namespace N1 = N; // defines
- // int f(int); // declares
- // extern X anotherX; // declares
-
- // #include "testCPPSpecDeclsDefs.h"
- // int a; // defines
- // int X::y = 1; // defines
- // X anX; // defines variable, implicitly calls ctor
- // extern const int c; // declares
- // int f(int x) {return x+a;} // defines
- // struct S; // declares
- // typedef int Int; // declares
- // using N::d; // declares
- // S s;
- // Int lhs= s.a+s.b+up+down+anX+0;
- public void testCPPSpecDeclsDefs() throws Exception {
- StringBuilder[] buffers = getContents(2);
- String hcode = buffers[0].toString();
- String scode = buffers[1].toString();
- IFile hfile = importFile("testCPPSpecDeclsDefs.h", hcode);
- IFile file = importFile("testCPPSpecDeclsDefs.cpp", scode);
- waitUntilFileIsIndexed(index, file);
-
- int offset0 = hcode.indexOf("a;");
- int offset1 = scode.indexOf("a;");
- IASTNode decl = testF3(hfile, offset0);
- assertNode("a", offset1, decl);
- decl = testF3(file, offset1);
- assertNode("a", offset0, decl);
-
- offset0 = hcode.indexOf("int c") + 4;
- offset1 = scode.indexOf("int c") + 4;
- decl = testF3(hfile, offset0);
- assertNode("c", offset1, decl);
- decl = testF3(file, offset1);
- assertNode("c", offset0, decl);
-
- offset0 = hcode.indexOf("f(int");
- offset1 = scode.indexOf("f(int");
- decl = testF3(hfile, offset0);
- assertNode("f", offset1, decl);
- decl = testF3(file, offset1);
- assertNode("f", offset0, decl);
-
- offset0 = scode.indexOf("x)");
- decl = testF3(file, offset0);
- assertNode("x", offset0, decl);
-
- offset1 = scode.indexOf("x+a");
- decl = testF3(file, offset1);
- assertNode("x", offset0, decl);
-
- offset0 = scode.indexOf("a;");
- offset1 = scode.indexOf("a;}");
- decl = testF3(file, offset1);
- assertNode("a", offset0, decl);
-
- offset0 = hcode.indexOf("S");
- offset1 = scode.indexOf("S;");
- int offset2 = scode.indexOf("S", offset1);
- decl = testF3(hfile, offset0);
- assertNode("S", offset0, decl);
- decl = testF3(file, offset1);
- assertNode("S", offset0, decl);
- decl = testF3(file, offset2);
- assertNode("S", offset0, decl);
-
- offset0 = hcode.indexOf("a; int b;};");
- offset1 = scode.indexOf("a+s.b");
- decl = testF3(hfile, offset0);
- assertNode("a", offset0, decl);
- decl = testF3(file, offset1);
- assertNode("a", offset0, decl);
-
- offset0 = hcode.indexOf("b;};");
- offset1 = scode.indexOf("s.b") + 2;
- decl = testF3(hfile, offset0);
- assertNode("b", offset0, decl);
- decl = testF3(file, offset1);
- assertNode("b", offset0, decl);
-
- offset0 = hcode.indexOf("X");
- offset1 = scode.indexOf("X");
- offset2 = scode.indexOf("X", offset1 + 1);
- decl = testF3(hfile, offset0);
- assertNode("X", offset0, decl);
- decl = testF3(file, offset1);
- assertNode("X", offset0, decl);
- decl = testF3(file, offset2);
- assertNode("X", offset0, decl);
-
- offset0 = hcode.indexOf("x;");
- offset1 = hcode.indexOf("x", offset0 + 1);
- decl = testF3(hfile, offset0);
- assertNode("x", offset0, decl);
- decl = testF3(hfile, offset1);
- assertNode("x", offset0, decl);
-
- offset0 = hcode.indexOf("y;");
- offset1 = scode.indexOf("y");
- decl = testF3(hfile, offset0);
- assertNode("y", offset1, decl);
- decl = testF3(file, offset1);
- assertNode("y", offset0, decl);
-
- offset0 = hcode.indexOf("X()");
- decl = testF3(hfile, offset0);
- assertNode("X", offset0, decl);
-
- offset0 = hcode.indexOf("up");
- offset1 = scode.indexOf("up");
- decl = testF3(hfile, offset0);
- assertNode("up", offset0, decl);
- decl = testF3(file, offset1);
- assertNode("up", offset0, decl);
-
- offset0 = hcode.indexOf("down");
- offset1 = scode.indexOf("down");
- decl = testF3(hfile, offset0);
- assertNode("down", offset0, decl);
- decl = testF3(file, offset1);
- assertNode("down", offset0, decl);
-
- offset0 = hcode.indexOf("N");
- offset1 = hcode.indexOf("N;", offset0 + 1);
- offset2 = scode.indexOf("N");
- decl = testF3(hfile, offset0);
- assertNode("N", offset0, decl);
- decl = testF3(hfile, offset1);
- assertNode("N", offset0, decl);
- decl = testF3(file, offset2);
- assertNode("N", offset0, decl);
-
- offset0 = hcode.indexOf("d;");
- offset1 = scode.indexOf("d;");
- decl = testF3(hfile, offset0);
- assertNode("d", offset0, decl);
- // does not work, created separate testcase
- // decl= testF3(file, offset1);
- // assertNode("d", offset0, decl);
-
- offset0 = hcode.indexOf("N1");
- decl = testF3(hfile, offset0);
- assertNode("N1", offset0, decl);
-
- offset0 = scode.indexOf("anX");
- offset1 = scode.indexOf("anX", offset0 + 1);
- decl = testF3(file, offset0);
- assertNode("X", hcode.indexOf("X()"), decl);
- decl = testF3(file, offset1);
- assertNode("anX", offset0, decl);
-
- offset0 = scode.indexOf("Int");
- offset1 = scode.indexOf("Int", offset0 + 1);
- decl = testF3(file, offset0);
- assertNode("Int", offset0, decl);
- decl = testF3(file, offset1);
- assertNode("Int", offset0, decl);
- }
-
- // // the header
- // namespace N {int d;} // defines
-
- // #include "testBug168533.h"
- // using N::d; // declares
- // int a= d;
- public void testBug168533() throws Exception {
- StringBuilder[] buffers = getContents(2);
- String hcode = buffers[0].toString();
- String scode = buffers[1].toString();
- IFile hfile = importFile("testBug168533.h", hcode);
- IFile file = importFile("testBug168533.cpp", scode);
- waitUntilFileIsIndexed(index, file);
-
- int offset0 = hcode.indexOf("d;");
- int offset1 = scode.indexOf("d;");
- int offset2 = scode.indexOf("d", offset1);
- IASTNode decl = testF3(hfile, offset0);
- assertNode("d", offset0, decl);
- decl = testF3(file, offset1);
- assertNode("d", offset0, decl);
- decl = testF3(file, offset2);
- assertNode("d", offset0, decl);
- }
-
- // class Overflow {
- // public:
- // Overflow(char,double,double);
- // };
-
- // #include "testBug95225.h"
- // void f(double x) {
- // throw Overflow('+',x,3.45e107);
- // }
- // int foo() {
- // try {
- // f(1.2);
- // }
- // catch(Overflow& oo) {
- // // handle exceptions of type Overflow here
- // }
- // }
- public void testBug95225() throws Exception {
- StringBuilder[] buffers = getContents(2);
- String hcode = buffers[0].toString();
- String scode = buffers[1].toString();
- IFile hfile = importFile("testBug95225.h", hcode);
- IFile file = importFile("testBug95225.cpp", scode);
- waitUntilFileIsIndexed(index, file);
- IASTNode decl;
- int offset0, offset1;
-
- offset0 = hcode.indexOf("Overflow");
- offset1 = scode.indexOf("rflow&");
- decl = testF3(file, offset1);
- assertNode("Overflow", offset0, decl);
- decl = testF3(hfile, offset0);
- assertNode("Overflow", offset0, decl);
-
- offset0 = hcode.indexOf("Overflow(");
- offset1 = scode.indexOf("rflow('+'");
- decl = testF3(file, offset1);
- assertNode("Overflow", offset0, decl);
- decl = testF3(hfile, offset0);
- assertNode("Overflow", offset0, decl);
-
- offset0 = scode.indexOf("x");
- offset1 = scode.indexOf("x", offset0);
- decl = testF3(file, offset0);
- assertNode("x", offset0, decl);
- decl = testF3(file, offset1);
- assertNode("x", offset0, decl);
- }
-
- // struct A { }; // implicitly declared A::operator=
- // struct B : A {
- // B& operator=(const B &);
- // };
-
- // #include "testBug95202.h"
- // B& B::operator=(const B& s) {
- // this->B::operator=(s); // wellformed
- // return *this;
- // }
- public void testBug95202() throws Exception {
- StringBuilder[] buffers = getContents(2);
- String hcode = buffers[0].toString();
- String scode = buffers[1].toString();
- IFile hfile = importFile("testBug95202.h", hcode);
- IFile file = importFile("testBug95202.cpp", scode);
- waitUntilFileIsIndexed(index, file);
- IASTNode decl;
- int offset0, offset1;
-
- offset0 = scode.indexOf("s)");
- offset1 = scode.indexOf("s);", offset0 + 1);
- decl = testF3(file, offset0);
- assertNode("s", offset0, decl);
- decl = testF3(file, offset1);
- assertNode("s", offset0, decl);
- }
-
- // extern int abc;
-
- // #include "testBug101287.h"
- // int main(int argc, char **argv) {
- // abc;
- // }
- public void testBug101287() throws Exception {
- StringBuilder[] buffers = getContents(2);
- String hcode = buffers[0].toString();
- String scode = buffers[1].toString();
- IFile hfile = importFile("testBug101287.h", hcode);
- IFile file = importFile("testBug101287.cpp", scode);
- waitUntilFileIsIndexed(index, file);
- IASTNode decl;
- int offset0, offset1;
-
- offset0 = hcode.indexOf("abc");
- offset1 = scode.indexOf("abc");
- decl = testF3(hfile, offset0);
- assertNode("abc", offset0, decl);
- decl = testF3(file, offset1);
- assertNode("abc", offset0, decl);
- }
-
- // struct RTBindingEnd
- // {
- // int index;
- // };
-
- // #include "testBug102258.h"
- // void f(RTBindingEnd & end) {
- // }
- public void testBug102258() throws Exception {
- StringBuilder[] buffers = getContents(2);
- String hcode = buffers[0].toString();
- String scode = buffers[1].toString();
- IFile hfile = importFile("testBug102258.h", hcode);
- IFile file = importFile("testBug102258.cpp", scode);
- waitUntilFileIsIndexed(index, file);
- IASTNode decl;
- int offset0, offset1;
-
- offset0 = hcode.indexOf("RTBindingEnd");
- offset1 = scode.indexOf("RTBindingEnd");
- decl = testF3(hfile, offset0);
- assertNode("RTBindingEnd", offset0, decl);
- decl = testF3(file, offset1);
- assertNode("RTBindingEnd", offset0, decl);
- }
-
- // namespace foo {
- // int g() {
- // return 0;
- // }
- // }
-
- // #include "testBug103323.h"
- // int f() {
- // return foo::g();
- // }
- public void testBug103323() throws Exception {
- StringBuilder[] buffers = getContents(2);
- String hcode = buffers[0].toString();
- String scode = buffers[1].toString();
- IFile hfile = importFile("testBug103323.h", hcode);
- IFile file = importFile("testBug103323.cpp", scode);
- waitUntilFileIsIndexed(index, file);
- IASTNode decl;
- int offset0, offset1;
-
- offset0 = hcode.indexOf("g()");
- offset1 = scode.indexOf("g()");
- decl = testF3(hfile, offset0);
- assertNode("g", offset0, decl);
- decl = testF3(file, offset1);
- assertNode("g", offset0, decl);
-
- testSimple_Ctrl_G_Selection(file, offset1, 1, 1);
- }
-
- // typedef int TestTypeOne;
- // typedef int TestTypeTwo;
-
- // #include "testBug78354.h"
- // int main()
- // {
- // TestTypeOne myFirstLink = 5;
- // TestTypeTwo mySecondLink = 6;
- // return 0;
- // }
- public void testBug78354() throws Exception {
- StringBuilder[] buffers = getContents(2);
- String hcode = buffers[0].toString();
- String scode = buffers[1].toString();
- IFile hfile = importFile("testBug78354.h", hcode);
- IFile file = importFile("testBug78354.cpp", scode);
- waitUntilFileIsIndexed(index, file);
- IASTNode decl;
- int offset0, offset1;
-
- offset0 = hcode.indexOf("TestTypeOne");
- offset1 = scode.indexOf("TestTypeOne");
- decl = testF3(hfile, offset0);
- assertNode("TestTypeOne", offset0, decl);
- decl = testF3(file, offset1);
- assertNode("TestTypeOne", offset0, decl);
-
- offset0 = hcode.indexOf("TestTypeTwo");
- offset1 = scode.indexOf("TestTypeTwo");
- decl = testF3(hfile, offset0);
- assertNode("TestTypeTwo", offset0, decl);
- decl = testF3(file, offset1);
- assertNode("TestTypeTwo", offset0, decl);
- }
-
- // int x;
-
- // #include "testBug103697.h"
- // int foo() {
- // return x;
- // }
- public void testBug103697() throws Exception {
- if (System.getProperty("cdt.skip.known.test.failures") == null) {
- return;
- }
- StringBuilder[] buffers = getContents(2);
- String hcode = buffers[0].toString();
- String scode = buffers[1].toString();
- IFile hfile = importFileWithLink("testBug103697.h", hcode);
- IFile file = importFileWithLink("testBug103697.cpp", scode);
- waitUntilFileIsIndexed(index, file);
- IASTNode decl;
- int offset0, offset1;
-
- offset0 = hcode.indexOf("x");
- offset1 = scode.indexOf("x");
- decl = testF3(hfile, offset0);
- assertNode("x", offset0, decl);
- decl = testF3(file, offset1);
- assertNode("x", offset0, decl);
- }
-
- // class __attribute__((visibility("default"))) FooClass
- // {
- // int foo();
- // };
-
- // #include "testBug108202.h"
- // int FooClass::foo() {
- // return 0;
- // }
- public void testBug108202() throws Exception {
- StringBuilder[] buffers = getContents(2);
- String hcode = buffers[0].toString();
- String scode = buffers[1].toString();
- IFile hfile = importFile("testBug108202.h", hcode);
- IFile file = importFile("testBug108202.cpp", scode);
- waitUntilFileIsIndexed(index, file);
- IASTNode decl;
- int offset0, offset1;
-
- offset0 = hcode.indexOf("foo");
- offset1 = scode.indexOf("foo");
- decl = testF3(hfile, offset0);
- assertNode("foo", offset1, decl);
- decl = testF3(file, offset1);
- assertNode("foo", offset0, decl);
- }
-
- // void c();
-
- // #include "c.h"
- // void c() {}
-
- // void cpp();
-
- // #include "cpp.h"
- // void cpp() {}
- public void testCNavigationInCppProject_bug183973() throws Exception {
- StringBuilder[] buffers = getContents(4);
- String hccode = buffers[0].toString();
- String ccode = buffers[1].toString();
- String hcppcode = buffers[2].toString();
- String cppcode = buffers[3].toString();
- IFile hcfile = importFile("c.h", hccode);
- IFile cfile = importFile("c.c", ccode);
- IFile hcppfile = importFile("cpp.h", hcppcode);
- IFile cppfile = importFile("cpp.cpp", cppcode);
- CCorePlugin.getIndexManager().reindex(fCProject);
- waitForIndexer(fCProject);
-
- IASTNode decl;
- int offset0, offset1;
- // cpp navigation
- offset0 = hcppcode.indexOf("cpp(");
- offset1 = cppcode.indexOf("cpp(");
- decl = testF3(hcppfile, offset0);
- assertNode("cpp", offset1, decl);
- decl = testF3(cppfile, offset1);
- assertNode("cpp", offset0, decl);
-
- // plain-c navigation
- offset0 = hccode.indexOf("c(");
- offset1 = ccode.indexOf("c(");
- decl = testF3(hcfile, offset0);
- assertNode("c", offset1, decl);
- decl = testF3(cfile, offset1);
- assertNode("c", offset0, decl);
- }
-
- // typedef struct {
- // int a;
- // } usertype;
- // void func(usertype t);
-
- // #include "testBug190730.h"
- // void func(usertype t) {
- // }
- public void testFuncWithTypedefForAnonymousStruct_190730() throws Exception {
- StringBuilder[] buffers = getContents(2);
- String hcode = buffers[0].toString();
- String scode = buffers[1].toString();
- IFile hfile = importFile("testBug190730.h", hcode);
- IFile file = importFile("testBug190730.cpp", scode);
- waitUntilFileIsIndexed(index, file);
- IASTNode decl;
- int offset0, offset1;
-
- offset0 = hcode.indexOf("func");
- offset1 = scode.indexOf("func");
- decl = testF3(hfile, offset0);
- assertNode("func", offset1, decl);
- decl = testF3(file, offset1);
- assertNode("func", offset0, decl);
- }
-
- // typedef enum {
- // int eitem
- // } userEnum;
- // void func(userEnum t);
-
- // #include "testBug190730_2.h"
- // void func(userEnum t) {
- // }
- public void testFuncWithTypedefForAnonymousEnum_190730() throws Exception {
- StringBuilder[] buffers = getContents(2);
- String hcode = buffers[0].toString();
- String scode = buffers[1].toString();
- IFile hfile = importFile("testBug190730_2.h", hcode);
- IFile file = importFile("testBug190730_2.cpp", scode);
- waitUntilFileIsIndexed(index, file);
- IASTNode decl;
- int offset0, offset1;
-
- offset0 = hcode.indexOf("func");
- offset1 = scode.indexOf("func");
- decl = testF3(hfile, offset0);
- assertNode("func", offset1, decl);
- decl = testF3(file, offset1);
- assertNode("func", offset0, decl);
- }
-
- // #define MY_MACRO 0xDEADBEEF
- // #define MY_FUNC() 00
- // #define MY_PAR( aRef );
-
- // #include "macrodef.h"
- // int basictest(void){
- // int tester = MY_MACRO; //OK: F3 works
- // int xx= MY_FUNC();
- // MY_PAR(0);
- // }
- public void testMacroNavigation() throws Exception {
- StringBuilder[] buffers = getContents(2);
- String hcode = buffers[0].toString();
- String scode = buffers[1].toString();
- IFile hfile = importFile("macrodef.h", hcode);
- IFile file = importFile("macronavi.cpp", scode);
- waitUntilFileIsIndexed(index, file);
- IASTNode decl;
- int offset0, offset1;
-
- offset0 = hcode.indexOf("MY_MACRO");
- offset1 = scode.indexOf("MY_MACRO");
- decl = testF3(file, offset1);
- assertNode("MY_MACRO", offset0, decl);
-
- offset0 = hcode.indexOf("MY_FUNC");
- offset1 = scode.indexOf("MY_FUNC");
- decl = testF3(file, offset1);
- assertNode("MY_FUNC", offset0, decl);
-
- offset0 = hcode.indexOf("MY_PAR");
- offset1 = scode.indexOf("MY_PAR");
- decl = testF3(file, offset1);
- assertNode("MY_PAR", offset0, decl);
- }
-
- // #define MY_MACRO 0xDEADBEEF
- // #define MY_PAR( aRef ) aRef;
- // int gvar;
-
- // #include "macrodef.h"
- // int basictest(void){
- // int tester = MY_PAR(MY_MACRO);
- // tester= MY_PAR(gvar);
- // }
- public void testMacroNavigation_Bug208300() throws Exception {
- StringBuilder[] buffers = getContents(2);
- String hcode = buffers[0].toString();
- String scode = buffers[1].toString();
- IFile hfile = importFile("macrodef.h", hcode);
- IFile file = importFile("macronavi.cpp", scode);
- waitUntilFileIsIndexed(index, file);
- IASTNode decl;
- int offset0, offset1;
-
- offset0 = hcode.indexOf("MY_PAR");
- offset1 = scode.indexOf("MY_PAR");
- decl = testF3(file, offset1);
- assertNode("MY_PAR", offset0, decl);
-
- offset0 = hcode.indexOf("MY_MACRO");
- offset1 = scode.indexOf("MY_MACRO");
- decl = testF3(file, offset1);
- assertNode("MY_MACRO", offset0, decl);
-
- offset0 = hcode.indexOf("gvar");
- offset1 = scode.indexOf("gvar");
- decl = testF3(file, offset1);
- assertNode("gvar", offset0, decl);
- }
-
- // #define MYMACRO
-
- // #undef MYMACRO
- public void testUndef_312399() throws Exception {
- StringBuilder[] buffers = getContents(2);
- String hcode = buffers[0].toString();
- String scode = buffers[1].toString();
- IFile hfile = importFile("testUndef_312399.h", hcode);
- IFile file = importFile("testUndef_312399.cpp", scode);
- waitUntilFileIsIndexed(index, file);
-
- IASTNode target = testF3(file, scode.indexOf("MYMACRO"));
- assertTrue(target instanceof IASTName);
- assertEquals("MYMACRO", ((IASTName) target).toString());
- assertEquals(hcode.indexOf("MYMACRO"), target.getFileLocation().getNodeOffset());
- assertEquals("MYMACRO".length(), ((ASTNode) target).getLength());
- }
-
- // int wurscht;
-
- // #include "aheader.h"
- public void testIncludeNavigation() throws Exception {
- StringBuilder[] buffers = getContents(2);
- String hcode = buffers[0].toString();
- String scode = buffers[1].toString();
- IFile hfile = importFile("aheader.h", hcode);
- IFile file = importFile("includenavi.cpp", scode);
- waitUntilFileIsIndexed(index, file);
- IASTNode decl;
- int offset0, offset1;
-
- offset1 = scode.indexOf("aheader.h");
- testF3(file, offset1);
- IEditorPart part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
- IEditorInput input = part.getEditorInput();
- assertEquals("aheader.h", ((FileEditorInput) input).getFile().getName());
- }
-
- // void cfunc();
- // void cxcpp() {
- // cfunc();
- // }
-
- // extern "C" void cxcpp();
- // void cppfunc() {
- // cxcpp();
- // }
- public void testNavigationCppCallsC() throws Exception {
- StringBuilder[] buffers = getContents(2);
- String ccode = buffers[0].toString();
- String scode = buffers[1].toString();
- IFile cfile = importFile("s.c", ccode);
- IFile cppfile = importFile("s.cpp", scode);
- waitUntilFileIsIndexed(index, cppfile);
- IASTNode decl;
- int offset1, offset2;
-
- offset1 = scode.indexOf("cxcpp");
- offset2 = scode.indexOf("cxcpp", offset1 + 1);
- testF3(cppfile, offset1);
- IEditorPart part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
- IEditorInput input = part.getEditorInput();
- assertEquals("s.c", ((FileEditorInput) input).getFile().getName());
-
- testF3(cppfile, offset2);
- part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
- input = part.getEditorInput();
- assertEquals("s.c", ((FileEditorInput) input).getFile().getName());
-
- offset1 = ccode.indexOf("cxcpp");
- testF3(cfile, offset1);
- part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
- input = part.getEditorInput();
- assertEquals("s.cpp", ((FileEditorInput) input).getFile().getName());
- }
-
- // void cxcpp();
- // void cfunc() {
- // cxcpp();
- // }
-
- // void cppfunc() {}
- // extern "C" {void cxcpp() {
- // cppfunc();
- // }}
- public void testNavigationCCallsCpp() throws Exception {
- StringBuilder[] buffers = getContents(2);
- String ccode = buffers[0].toString();
- String scode = buffers[1].toString();
- IFile cfile = importFile("s.c", ccode);
- IFile cppfile = importFile("s.cpp", scode);
- waitUntilFileIsIndexed(index, cppfile);
- IASTNode decl;
- int offset1, offset2;
-
- offset1 = ccode.indexOf("cxcpp");
- offset2 = ccode.indexOf("cxcpp", offset1 + 1);
- testF3(cfile, offset1);
- IEditorPart part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
- IEditorInput input = part.getEditorInput();
- assertEquals("s.cpp", ((FileEditorInput) input).getFile().getName());
-
- testF3(cfile, offset2);
- part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
- input = part.getEditorInput();
- assertEquals("s.cpp", ((FileEditorInput) input).getFile().getName());
-
- offset1 = scode.indexOf("cxcpp");
- testF3(cppfile, offset1);
- part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
- input = part.getEditorInput();
- assertEquals("s.c", ((FileEditorInput) input).getFile().getName());
- }
-
- // #define ADD_TEXT(txt1,txt2) txt1" "txt2
- // #define ADD(a,b) (a + b)
- // void main(void) {
- // #if defined(ADD_TEXT) && defined(ADD)
- // #endif
- // }
- public void testNavigationInDefinedExpression_215906() throws Exception {
- StringBuilder[] buffers = getContents(1);
- String code = buffers[0].toString();
- IFile file = importFile("s.cpp", code);
- waitUntilFileIsIndexed(index, file);
- IASTNode decl;
- int offset1, offset2;
-
- offset1 = code.indexOf("ADD_TEXT");
- offset2 = code.indexOf("ADD_TEXT", offset1 + 1);
- decl = testF3(file, offset2);
- assertNode("ADD_TEXT", offset1, decl);
-
- offset1 = code.indexOf("ADD", offset1 + 1);
- offset2 = code.indexOf("ADD", offset2 + 1);
- decl = testF3(file, offset2);
- assertNode("ADD", offset1, decl);
- }
-
- // struct X {
- // int operator +(X);
- // int operator [](int);
- // ~X();
- // };
- //
- // int test(X x) {
- // x + x;
- // x[6];
- // X* xx = new X();
- // delete xx;
- // }
- public void testNavigationToImplicitNames() throws Exception {
- StringBuilder[] buffers = getContents(1);
- String code = buffers[0].toString();
- IFile file = importFile("in.cpp", code);
- waitUntilFileIsIndexed(index, file);
-
- int offset1 = code.indexOf("operator +");
- int offset2 = code.indexOf("+ x;");
- IASTNode decl = testF3(file, offset2);
- assertNode("operator +", offset1, decl);
- decl = testF3(file, offset2 + 1);
- assertNode("operator +", offset1, decl);
-
- offset1 = code.indexOf("operator []");
- offset2 = code.indexOf("[6];");
- decl = testF3(file, offset2 + 1);
- assertNode("operator []", offset1, decl);
- offset2 = code.indexOf("];");
- decl = testF3(file, offset2);
- assertNode("operator []", offset1, decl);
- decl = testF3(file, offset2 + 1);
- assertNode("operator []", offset1, decl);
-
- offset1 = code.indexOf("~X()");
- offset2 = code.indexOf("delete");
- decl = testF3(file, offset2);
- assertNode("~X", offset1, decl);
- }
-
- // template<typename T>
- // class C {
- // public:
- // T operator+(int);
- // };
-
- // #include "test.h"
- // void main() {
- // C<char> a;
- // a + 2;
- // }
- public void testBug272744() throws Exception {
- StringBuilder[] buffers = getContents(2);
- String hcode = buffers[0].toString();
- String scode = buffers[1].toString();
- IFile hfile = importFile("test.h", hcode);
- IFile file = importFile("test.cpp", scode);
- waitUntilFileIsIndexed(index, file);
-
- int hoffset = hcode.indexOf("operator+");
- int soffset = scode.indexOf("+");
- IASTNode def = testF3(file, soffset + 1);
- assertTrue(def instanceof IASTName);
- assertEquals("operator +", ((IASTName) def).toString());
- assertEquals(hoffset, ((ASTNode) def).getOffset());
- assertEquals(9, ((ASTNode) def).getLength());
- }
-
- // void test(ABC* p);
- // void test(ABC* q) {}
- // void call_test(){
- // test(0);
- // }
- public void testBug305487() throws Exception {
- String code = getAboveComment();
- IFile file = importFile("testBug305487.cpp", code);
- waitUntilFileIsIndexed(index, file);
-
- int offset = code.indexOf("test(0)");
- IASTNode def = testF3(file, offset + 1);
- assertTrue(def instanceof IASTName);
- }
-
- // struct A {
- // A();
- // A(int x);
- // };
-
- // #include "testImplicitConstructorCall_248855.h"
- // void func() {
- // A a1;
- // A a2(5);
- // }
- // struct B {
- // B() : a3(1) {}
- // A a3;
- // };
- public void testImplicitConstructorCall_248855() throws Exception {
- StringBuilder[] buffers = getContents(2);
- String hcode = buffers[0].toString();
- String scode = buffers[1].toString();
- IFile hfile = importFile("testImplicitConstructorCall_248855.h", hcode);
- IFile file = importFile("testImplicitConstructorCall_248855.cpp", scode);
- waitUntilFileIsIndexed(index, file);
-
- IASTNode target = testF3(file, scode.indexOf("a1"));
- assertTrue(target instanceof IASTName);
- assertEquals("A", ((IASTName) target).toString());
- assertEquals(hcode.indexOf("A()"), target.getFileLocation().getNodeOffset());
- assertEquals("A".length(), ((ASTNode) target).getLength());
-
- target = testF3(file, scode.indexOf("a2"));
- assertTrue(target instanceof IASTName);
- assertEquals("A", ((IASTName) target).toString());
- assertEquals(hcode.indexOf("A(int x)"), target.getFileLocation().getNodeOffset());
- assertEquals("A".length(), ((ASTNode) target).getLength());
-
- try {
- target = testF3(file, scode.indexOf("a3"));
- fail("Didn't expect navigation to succeed due to multiple choices: B::a3, A::A(int x).");
- } catch (RuntimeException e) {
- assertEquals("ambiguous input: 2", e.getMessage());
- }
- }
-
- // namespace ns {
- // void func();
- // }
-
- // #include "test.h"
- // using ns::func;
- //
- // void test() {
- // func();
- // }
- public void testBug380197() throws Exception {
- StringBuilder[] buffers = getContents(2);
- String hcode = buffers[0].toString();
- String scode = buffers[1].toString();
- IFile hfile = importFile("test.h", hcode);
- IFile file = importFile("test.cpp", scode);
- waitUntilFileIsIndexed(index, file);
-
- int hoffset = hcode.indexOf("func");
- int offset = scode.indexOf("func()");
- IASTNode def = testF3(file, offset + 1);
- assertTrue(def instanceof IASTName);
- assertEquals("func", def.toString());
- IASTFileLocation location = def.getFileLocation();
- assertEquals(hfile.getLocation().toOSString(), location.getFileName());
- assertEquals(hoffset, location.getNodeOffset());
- }
-
- // int waldo(int a, decltype(a) b);
- public void testFunctionParameterReferencingPreviousParameter_432703() throws Exception {
- String code = getAboveComment();
- IFile file = importFile("test.cpp", code);
- waitUntilFileIsIndexed(index, file);
-
- int offset = code.indexOf("a)");
- IASTNode def = testF3(file, offset + 1);
- assertTrue(def instanceof IASTName);
- }
-
- // #define WALDO 42
-
- // #define WALDO 98
-
- // #include "a.hpp"
- // int x = WALDO;
- public void testTwoMacrosWithSameName_440940() throws Exception {
- StringBuilder[] buffers = getContents(3);
- String aHpp = buffers[0].toString();
- String bHpp = buffers[1].toString();
- String cpp = buffers[2].toString();
- IFile aHppFile = importFile("a.hpp", aHpp);
- IFile bHppFile = importFile("b.hpp", bHpp);
- IFile cppFile = importFile("test.cpp", cpp);
- waitUntilFileIsIndexed(index, cppFile);
-
- IASTNode result = testF3(cppFile, cpp.indexOf("WALDO") + 1);
- assertTrue(result instanceof IASTName);
- IBinding binding = ((IASTName) result).resolveBinding();
- assertTrue(binding instanceof IMacroBinding);
- String expansion = new String(((IMacroBinding) binding).getExpansion());
- assertTrue(expansion.contains("42"));
- }
-
- // #define DEFINE_FUNC(...) void foo() { __VA_ARGS__ }
- // struct Waldo {
- // void find();
- // };
- // DEFINE_FUNC
- // (
- // Waldo waldo;
- // waldo.find();
- // )
- public void testDeclarationInMacroArgment_509733() throws Exception {
- String code = getAboveComment();
- IFile file = importFile("test.cpp", code);
- waitUntilFileIsIndexed(index, file);
-
- int offset = code.indexOf("waldo.find()");
- IASTNode def = testF3(file, offset + 1);
- assertTrue(def instanceof IASTName);
- }
-
- // class Waldo {
- // void find();
- // };
-
- // #include "test.hpp"
- // int Waldo::find() {}
- public void testNavigationToDefinitionWithWrongSignature_525739() throws Exception {
- StringBuilder[] buffers = getContents(3);
- String hpp = buffers[0].toString();
- String cpp = buffers[1].toString();
- IFile hppFile = importFile("test.hpp", hpp);
- IFile cppFile = importFile("test.cpp", cpp);
- waitUntilFileIsIndexed(index, cppFile);
-
- // We should find the definition, even though the signature doesn't match exactly.
- IASTNode target = testF3(hppFile, hpp.indexOf("void find") + 6);
- assertInstance(target, IASTName.class);
- assertEquals(IASTNameOwner.r_definition, ((IASTName) target).getRoleOfName(false));
- }
-
- // class Waldo {
- // void find();
- // };
-
- // #include "test.hpp"
- // void Waldo::find() {}
- // int Waldo::find() {}
- public void testNavigationPrefersCorrectDefinition_525739() throws Exception {
- StringBuilder[] buffers = getContents(3);
- String hpp = buffers[0].toString();
- String cpp = buffers[1].toString();
- IFile hppFile = importFile("test.hpp", hpp);
- IFile cppFile = importFile("test.cpp", cpp);
- waitUntilFileIsIndexed(index, cppFile);
-
- // We should find the definition that's an exact match, rather than asking the
- // user to disambiguate between two alternatives.
- IASTNode target = testF3(hppFile, hpp.indexOf("void find") + 6);
- assertInstance(target, IASTName.class);
- assertEquals(IASTNameOwner.r_definition, ((IASTName) target).getRoleOfName(false));
- }
-
- // template <typename E>
- // struct Node {
- // Node * next;
- // E value;
- // };
- // Node<int> head{nullptr, 42};
- // auto [h, v] = head;
-
- // #include "SBTestHeader.hpp"
- // auto myH = h;
- // auto myV = v;
- public void testNavigationToStructuredBinding_522200() throws Exception {
- StringBuilder[] buffers = getContents(2);
- String header = buffers[0].toString();
- IFile headerFile = importFile("SBTestHeader.hpp", header);
- String source = buffers[1].toString();
- IFile sourceFile = importFile("SBTestSource.cpp", source);
- waitUntilFileIsIndexed(index, sourceFile);
-
- IASTNode targetH = testF3(sourceFile, source.indexOf("myH = h") + 6);
- assertInstance(targetH, IASTName.class);
- assertEquals(IASTNameOwner.r_definition, ((IASTName) targetH).getRoleOfName(false));
- IASTFileLocation locationH = targetH.getFileLocation();
- int targetHOffset = locationH.getNodeOffset();
- assertEquals(header.indexOf("auto [h") + 6, targetHOffset);
-
- IASTNode targetV = testF3(sourceFile, source.indexOf("myV = v") + 6);
- assertInstance(targetV, IASTName.class);
- assertEquals(IASTNameOwner.r_definition, ((IASTName) targetV).getRoleOfName(false));
- IASTFileLocation locationV = targetV.getFileLocation();
- int targetVOffset = locationV.getNodeOffset();
- assertEquals(header.indexOf("[h, v") + 4, targetVOffset);
- }
-}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selection/CPPSelectionTestsNoIndexer.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selection/CPPSelectionTestsNoIndexer.java
deleted file mode 100644
index 6a96df10ae4..00000000000
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selection/CPPSelectionTestsNoIndexer.java
+++ /dev/null
@@ -1,1450 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2016 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM - Initial API and implementation
- * Markus Schorn (Wind River Systems)
- * Nathan Ridge
- *******************************************************************************/
-package org.eclipse.cdt.ui.tests.text.selection;
-
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.InputStream;
-import java.io.StringWriter;
-import java.io.Writer;
-
-import org.eclipse.cdt.core.CCorePlugin;
-import org.eclipse.cdt.core.dom.IPDOMManager;
-import org.eclipse.cdt.core.dom.ast.IASTElaboratedTypeSpecifier;
-import org.eclipse.cdt.core.dom.ast.IASTName;
-import org.eclipse.cdt.core.dom.ast.IASTNameOwner;
-import org.eclipse.cdt.core.dom.ast.IASTNode;
-import org.eclipse.cdt.core.dom.ast.IBinding;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPConstructor;
-import org.eclipse.cdt.core.model.ICProject;
-import org.eclipse.cdt.core.testplugin.CProjectHelper;
-import org.eclipse.cdt.core.testplugin.FileManager;
-import org.eclipse.cdt.internal.core.dom.parser.ASTNode;
-import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTNameBase;
-import org.eclipse.cdt.internal.ui.search.actions.OpenDeclarationsAction;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IFolder;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IWorkspace;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.texteditor.ITextEditor;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * It is required to test the selection performance independent of the indexer to make sure that the DOM
- * is functioning properly.
- *
- * Indexer bugs can drastically influence the correctness of these tests so the indexer has to be off when
- * performing them.
- *
- * @author dsteffle
- */
-public class CPPSelectionTestsNoIndexer extends BaseSelectionTests {
- private static final String INDEX_FILE_ID = "2946365241"; //$NON-NLS-1$
- static NullProgressMonitor monitor;
- static IWorkspace workspace;
- static IProject project;
- static ICProject cPrj;
- static FileManager fileManager;
- static boolean disabledHelpContributions = false;
-
- static void initProject() {
- if (project != null) {
- return;
- }
-
- //(CCorePlugin.getDefault().getCoreModel().getIndexManager()).reset();
- monitor = new NullProgressMonitor();
-
- workspace = ResourcesPlugin.getWorkspace();
-
- try {
- cPrj = CProjectHelper.createCCProject("CPPSelectionTestsNoIndexer", "bin", IPDOMManager.ID_NO_INDEXER); //$NON-NLS-1$ //$NON-NLS-2$
-
- project = cPrj.getProject();
-
- IPath pathLoc = CCorePlugin.getDefault().getStateLocation();
- File indexFile = new File(pathLoc.append(INDEX_FILE_ID + ".index").toOSString()); //$NON-NLS-1$
- if (indexFile.exists())
- indexFile.delete();
- } catch (CoreException e) {
- /*boo*/
- }
- if (project == null)
- fail("Unable to create project"); //$NON-NLS-1$
-
- //Create file manager
- fileManager = new FileManager();
- }
-
- public CPPSelectionTestsNoIndexer() {
- super();
- }
-
- /**
- * @param name
- */
- public CPPSelectionTestsNoIndexer(String name) {
- super(name);
- }
-
- public static Test suite() {
- TestSuite suite = suite(CPPSelectionTestsNoIndexer.class, "_");
- suite.addTest(new CPPSelectionTestsNoIndexer("cleanupProject")); //$NON-NLS-1$
- return suite;
- }
-
- public void cleanupProject() throws Exception {
- closeAllEditors();
- try {
- project.delete(true, false, monitor);
- } catch (CoreException e) {
- try {
- project.delete(true, false, monitor);
- } catch (CoreException e1) {
- }
- } finally {
- project = null;
- }
- }
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- initProject();
- OpenDeclarationsAction.sDisallowAmbiguousInput = true;
- }
-
- @Override
- protected void tearDown() throws Exception {
- if (project == null || !project.exists())
- return;
-
- closeAllEditors();
-
- IResource[] members = project.members();
- for (IResource member : members) {
- if (member.getName().equals(".project") || member.getName().equals(".cproject")) //$NON-NLS-1$ //$NON-NLS-2$
- continue;
- if (member.getName().equals(".settings"))
- continue;
- try {
- member.delete(false, monitor);
- } catch (Throwable e) {
- /*boo*/
- }
- }
- }
-
- protected IFile importFile(String fileName, String contents) throws Exception {
- //Obtain file handle
- IFile file = project.getProject().getFile(fileName);
-
- InputStream stream = new ByteArrayInputStream(contents.getBytes());
- //Create file input stream
- if (file.exists())
- file.setContents(stream, false, false, monitor);
- else
- file.create(stream, false, monitor);
-
- fileManager.addFile(file);
-
- return file;
- }
-
- protected IFile importFileWithLink(String fileName, String contents) throws Exception {
- //Obtain file handle
- IFile file = project.getProject().getFile(fileName);
-
- IPath location = new Path(project.getLocation().removeLastSegments(1).toOSString() + File.separator + fileName);
-
- File linkFile = new File(location.toOSString());
- if (!linkFile.exists()) {
- linkFile.createNewFile();
- }
-
- file.createLink(location, IResource.ALLOW_MISSING_LOCAL, null);
-
- InputStream stream = new ByteArrayInputStream(contents.getBytes());
- //Create file input stream
- if (file.exists())
- file.setContents(stream, false, false, monitor);
- else
- file.create(stream, false, monitor);
-
- fileManager.addFile(file);
-
- return file;
- }
-
- protected IFile importFileInsideLinkedFolder(String fileName, String contents, String folderName) throws Exception {
- IFolder linkedFolder = project.getFolder(folderName);
- IPath folderLocation = new Path(
- project.getLocation().toOSString() + File.separator + folderName + "_this_is_linked"); //$NON-NLS-1$
- IFolder actualFolder = project.getFolder(folderName + "_this_is_linked"); //$NON-NLS-1$
- if (!actualFolder.exists())
- actualFolder.create(true, true, monitor);
-
- linkedFolder.createLink(folderLocation, IResource.NONE, monitor);
-
- actualFolder.delete(true, false, monitor);
-
- IFile file = linkedFolder.getFile(fileName);
-
- InputStream stream = new ByteArrayInputStream(contents.getBytes());
- //Create file input stream
- if (file.exists())
- file.setContents(stream, false, false, monitor);
- else
- file.create(stream, false, monitor);
-
- fileManager.addFile(file);
-
- return file;
- }
-
- private void assertContents(String code, int offset, String expected) {
- assertEquals(expected, code.substring(offset, offset + expected.length()));
- }
-
- public void testBug93281() throws Exception {
- StringBuilder buffer = new StringBuilder();
- buffer.append("class Point{ \n"); //$NON-NLS-1$
- buffer.append("public: \n"); //$NON-NLS-1$
- buffer.append("Point(): xCoord(0){} \n"); //$NON-NLS-1$
- buffer.append("Point& operator=(const Point &rhs){return *this;} // line A\n"); //$NON-NLS-1$
- buffer.append("void* operator new [ ] (unsigned int);\n"); //$NON-NLS-1$
- buffer.append("private: \n"); //$NON-NLS-1$
- buffer.append("int xCoord; \n"); //$NON-NLS-1$
- buffer.append("}; \n"); //$NON-NLS-1$
- buffer.append("static const Point zero;\n"); //$NON-NLS-1$
- buffer.append("int main(int argc, char **argv) { \n"); //$NON-NLS-1$
- buffer.append("Point *p2 = new Point(); \n"); //$NON-NLS-1$
- buffer.append("p2-> operator // /* operator */ // F3 in the middle \n"); //$NON-NLS-1$
- buffer.append("//of \"operator\" should work\n"); //$NON-NLS-1$
- buffer.append("// \\n"); //$NON-NLS-1$
- buffer.append("/* */\n"); //$NON-NLS-1$
- buffer.append("=(zero); // line B\n"); //$NON-NLS-1$
- buffer.append("p2->operator /* oh yeah */ new // F3 in the middle of \"operator\"\n"); //$NON-NLS-1$
- buffer.append("// should work\n"); //$NON-NLS-1$
- buffer.append("//\n"); //$NON-NLS-1$
- buffer.append("[ /* sweet */ ] //\n"); //$NON-NLS-1$
- buffer.append("(2);\n"); //$NON-NLS-1$
- buffer.append("return (0); \n"); //$NON-NLS-1$
- buffer.append("}\n"); //$NON-NLS-1$
-
- String code = buffer.toString();
- IFile file = importFile("test93281.cpp", code); //$NON-NLS-1$
-
- int offset = code.indexOf("p2->operator") + 6; //$NON-NLS-1$
- IASTNode node = testF3(file, offset);
-
- assertTrue(node instanceof IASTName);
- assertEquals("operator new[]", ((IASTName) node).toString()); //$NON-NLS-1$
- assertEquals(183, ((ASTNode) node).getOffset());
- assertEquals(16, ((ASTNode) node).getLength());
-
- offset = code.indexOf("p2-> operator") + 11; //$NON-NLS-1$
- node = testF3(file, offset);
-
- assertTrue(node instanceof IASTName);
- assertEquals("operator =", ((IASTName) node).toString()); //$NON-NLS-1$
- assertEquals(121, ((ASTNode) node).getOffset());
- assertEquals(9, ((ASTNode) node).getLength());
- }
-
- public void testBasicDefinition() throws Exception {
- StringBuilder buffer = new StringBuilder();
- buffer.append("extern int MyInt; // def is in another file \n"); //$NON-NLS-1$
- buffer.append("extern const int MyConst; // def is in another file \n"); //$NON-NLS-1$
- buffer.append("void MyFunc(int); // often used in header files\n"); //$NON-NLS-1$
- buffer.append("struct MyStruct; // often used in header files\n"); //$NON-NLS-1$
- buffer.append("typedef int NewInt; // a normal typedef statement\n"); //$NON-NLS-1$
- buffer.append("class MyClass; // often used in header files\n"); //$NON-NLS-1$
- buffer.append("int MyInt;\n"); //$NON-NLS-1$
- buffer.append("extern const int MyConst = 42;\n"); //$NON-NLS-1$
- buffer.append("void MyFunc(int a) { cout << a << endl; }\n"); //$NON-NLS-1$
- buffer.append("struct MyStruct { int Member1; int Member2; };\n"); //$NON-NLS-1$
- buffer.append("class MyClass { int MemberVar; };\n"); //$NON-NLS-1$
-
- String code = buffer.toString();
- IFile file = importFile("testBasicDefinition.cpp", code); //$NON-NLS-1$
-
- int offset = code.indexOf("MyInt") + 2; //$NON-NLS-1$
- int defOffset = code.indexOf("MyInt", offset) + 2; //$NON-NLS-1$
- IASTNode def = testF3(file, offset);
- IASTNode decl = testF3(file, defOffset);
- assertTrue(def instanceof IASTName);
- assertTrue(decl instanceof IASTName);
- assertEquals("MyInt", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(11, ((ASTNode) decl).getOffset());
- assertEquals(5, ((ASTNode) decl).getLength());
- assertEquals("MyInt", ((IASTName) def).toString()); //$NON-NLS-1$
- assertEquals(330, ((ASTNode) def).getOffset());
- assertEquals(5, ((ASTNode) def).getLength());
-
- offset = code.indexOf("MyConst") + 2;
- defOffset = code.indexOf("MyConst", offset) + 2;
- def = testF3(file, offset);
- decl = testF3(file, defOffset);
- assertTrue(def instanceof IASTName);
- assertTrue(decl instanceof IASTName);
- assertEquals("MyConst", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(69, ((ASTNode) decl).getOffset());
- assertEquals(7, ((ASTNode) decl).getLength());
- assertEquals("MyConst", ((IASTName) def).toString()); //$NON-NLS-1$
- assertEquals(354, ((ASTNode) def).getOffset());
- assertEquals(7, ((ASTNode) def).getLength());
-
- offset = code.indexOf("MyFunc") + 2;
- defOffset = code.indexOf("MyFunc", offset) + 2;
- def = testF3(file, offset);
- decl = testF3(file, defOffset);
- assertTrue(def instanceof IASTName);
- assertTrue(decl instanceof IASTName);
- assertEquals("MyFunc", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(115, ((ASTNode) decl).getOffset());
- assertEquals(6, ((ASTNode) decl).getLength());
- assertEquals("MyFunc", ((IASTName) def).toString()); //$NON-NLS-1$
- assertEquals(373, ((ASTNode) def).getOffset());
- assertEquals(6, ((ASTNode) def).getLength());
-
- offset = code.indexOf("MyStruct") + 2;
- defOffset = code.indexOf("MyStruct", offset) + 2;
- def = testF3(file, offset);
- decl = testF3(file, defOffset);
- assertTrue(def instanceof IASTName);
- assertTrue(decl instanceof IASTName);
- assertEquals("MyStruct", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(417, ((ASTNode) decl).getOffset());
- assertEquals(8, ((ASTNode) decl).getLength());
- assertEquals("MyStruct", ((IASTName) def).toString()); //$NON-NLS-1$
- assertEquals(417, ((ASTNode) def).getOffset());
- assertEquals(8, ((ASTNode) def).getLength());
-
- offset = code.indexOf("MyClass") + 2;
- defOffset = code.indexOf("MyClass", offset) + 2;
- def = testF3(file, offset);
- decl = testF3(file, defOffset);
- assertTrue(def instanceof IASTName);
- assertTrue(decl instanceof IASTName);
- assertEquals("MyClass", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(463, ((ASTNode) decl).getOffset());
- assertEquals(7, ((ASTNode) decl).getLength());
- assertEquals("MyClass", ((IASTName) def).toString()); //$NON-NLS-1$
- assertEquals(463, ((ASTNode) def).getOffset());
- assertEquals(7, ((ASTNode) def).getLength());
- }
-
- public void testBug95224() throws Exception {
- Writer writer = new StringWriter();
- writer.write("class A{\n"); //$NON-NLS-1$
- writer.write("A();\n"); //$NON-NLS-1$
- writer.write("A(const A&); // open definition on A finds class A\n"); //$NON-NLS-1$
- writer.write("~A(); // open definition on A finds nothing\n"); //$NON-NLS-1$
- writer.write("};\n"); //$NON-NLS-1$
-
- String code = writer.toString();
- IFile file = importFile("testBug95224.cpp", code); //$NON-NLS-1$
-
- int offset = code.indexOf("A(); // open definition "); //$NON-NLS-1$
- IASTNode decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("~A", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(65, ((ASTNode) decl).getOffset());
- assertEquals(2, ((ASTNode) decl).getLength());
- }
-
- public void testBasicTemplateInstance() throws Exception {
- Writer writer = new StringWriter();
- writer.write("namespace N{ \n"); //$NON-NLS-1$
- writer.write(" template < class T > class AAA { T _t; };\n"); //$NON-NLS-1$
- writer.write("}; \n"); //$NON-NLS-1$
- writer.write("N::AAA<int> a; \n"); //$NON-NLS-1$
-
- String code = writer.toString();
- IFile file = importFile("testBasicTemplateInstance.cpp", code); //$NON-NLS-1$
-
- int offset = code.indexOf("AAA<int>"); //$NON-NLS-1$
- IASTNode decl1 = testF3(file, offset, 3);
- assertTrue(decl1 instanceof IASTName);
- assertEquals("AAA", ((IASTName) decl1).toString()); //$NON-NLS-1$
- assertEquals(74, ((ASTNode) decl1).getOffset());
- assertEquals(3, ((ASTNode) decl1).getLength());
-
- IASTNode decl2 = testF3(file, offset, 8);
- assertTrue(decl2 instanceof IASTName);
- assertEquals("AAA", ((IASTName) decl2).toString()); //$NON-NLS-1$
- assertEquals(74, ((ASTNode) decl2).getOffset());
- assertEquals(3, ((ASTNode) decl2).getLength());
- }
-
- public void testBug86829A() throws Exception {
- StringBuilder buffer = new StringBuilder();
- buffer.append("class X {\n"); //$NON-NLS-1$
- buffer.append("public:\n"); //$NON-NLS-1$
- buffer.append("X(int); // openReferences fails to find the constructor in g()\n"); //$NON-NLS-1$
- buffer.append("};\n"); //$NON-NLS-1$
- buffer.append("X f(X);\n"); //$NON-NLS-1$
- buffer.append("void g()\n"); //$NON-NLS-1$
- buffer.append("{\n"); //$NON-NLS-1$
- buffer.append("X b = f(X(2)); // openDeclarations on X(int) finds the class and not \n"); //$NON-NLS-1$
- buffer.append("}\n"); //$NON-NLS-1$
-
- String code = buffer.toString();
- IFile file = importFile("testBug86829A.cpp", code); //$NON-NLS-1$
-
- int offset = code.indexOf("X(2)"); //$NON-NLS-1$
- IASTNode decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("X", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(18, ((ASTNode) decl).getOffset());
- assertEquals(1, ((ASTNode) decl).getLength());
- }
-
- public void testBug86829B() throws Exception {
- StringBuilder buffer = new StringBuilder();
- buffer.append("class X {\n"); //$NON-NLS-1$
- buffer.append("public:\n"); //$NON-NLS-1$
- buffer.append("operator int();\n"); //$NON-NLS-1$
- buffer.append("};\n"); //$NON-NLS-1$
- buffer.append("class Y {\n"); //$NON-NLS-1$
- buffer.append("public:\n"); //$NON-NLS-1$
- buffer.append("operator X();\n"); //$NON-NLS-1$
- buffer.append("};\n"); //$NON-NLS-1$
- buffer.append("void test() {\n");
- buffer.append("Y a;\n"); //$NON-NLS-1$
- buffer.append("int c = X(a); // OK: a.operator X().operator int()\n"); //$NON-NLS-1$
- buffer.append("}\n"); //$NON-NLS-1$
-
- String code = buffer.toString();
- IFile file = importFile("testBug86829B.cpp", code); //$NON-NLS-1$
-
- int offset = code.indexOf("X(a);"); //$NON-NLS-1$
- IASTNode decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("X", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(6, ((ASTNode) decl).getOffset());
- assertEquals(1, ((ASTNode) decl).getLength());
- }
-
- // taken from C++ spec 3.1-3:
- /*
- // all but one of the following are definitions:
- int a; // defines a
- extern const int c = 1; // defines c
- int f(int x) { return x+a; } // defines f and defines x
- struct S { int a; int b; }; // defines S, S::a, and S::b
- struct X { // defines X
- int x; // defines nonstatic data member x
- static int y; // declares static data member y
- X(): x(0) { } // defines a constructor of X
- };
- int X::y = 1; // defines X::y
- enum { up, down }; // defines up and down
- namespace N { int d; } // defines N and N::d
- namespace N1 = N; // defines N1
- X anX; // defines anX, implicitly calls X()
- // whereas these are just declarations:
- extern int a; // declares a
- extern const int c; // declares c
- int f(int); // declares f
- struct S; // declares S
- typedef int Int; // declares Int
- extern X anotherX; // declares anotherX
- using N::d; // declares N::d
- */
- public void testCPPSpecDeclsDefs() throws Exception {
- StringBuilder buffer = new StringBuilder();
- buffer.append("int a; // defines a\n"); //$NON-NLS-1$
- buffer.append("extern const int c = 1; // defines c\n"); //$NON-NLS-1$
- buffer.append("int f(int x) { return x+a; } // defines f and defines x\n"); //$NON-NLS-1$
- buffer.append("struct S { int a; int b; }; // defines S, S::a, and S::b\n"); //$NON-NLS-1$
- buffer.append("struct X { // defines X\n"); //$NON-NLS-1$
- buffer.append("int x; // defines nonstatic data member x\n"); //$NON-NLS-1$
- buffer.append("static int y; // declares static data member y\n"); //$NON-NLS-1$
- buffer.append("X(): x(0) { } // defines a constructor of X\n"); //$NON-NLS-1$
- buffer.append("};\n"); //$NON-NLS-1$
- buffer.append("int X::y = 1; // defines X::y\n"); //$NON-NLS-1$
- buffer.append("enum { up, down }; // defines up and down\n"); //$NON-NLS-1$
- buffer.append("namespace N { int d; } // defines N and N::d\n"); //$NON-NLS-1$
- buffer.append("namespace N1 = N; // defines N1\n"); //$NON-NLS-1$
- buffer.append("X anX; // defines anX\n"); //$NON-NLS-1$
- buffer.append("extern int a; // declares a\n"); //$NON-NLS-1$
- buffer.append("extern const int c; // declares c\n"); //$NON-NLS-1$
- buffer.append("int f(int y); // declar f\n"); //$NON-NLS-1$
- buffer.append("struct S; // declares S\n"); //$NON-NLS-1$
- buffer.append("typedef int Int; // declares Int\n"); //$NON-NLS-1$
- buffer.append("extern X anotherX; // declares anotherX\n"); //$NON-NLS-1$
- buffer.append("using N::d; // declares N::d\n"); //$NON-NLS-1$
-
- String code = buffer.toString();
- IFile file = importFile("testCPPSpecDeclsDefs.cpp", code); //$NON-NLS-1$
- int offset = code.indexOf("a; // defines a"); //$NON-NLS-1$
- IASTNode decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("a", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(512, ((ASTNode) decl).getOffset());
- assertEquals(1, ((ASTNode) decl).getLength());
-
- offset = code.indexOf("c = 1; // defines c"); //$NON-NLS-1$
- decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("c", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(546, ((ASTNode) decl).getOffset());
- assertEquals(1, ((ASTNode) decl).getLength());
-
- offset = code.indexOf("f(int x) { return x+a; } // defines f and defines x"); //$NON-NLS-1$
- decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("f", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(567, ((ASTNode) decl).getOffset());
- assertEquals(1, ((ASTNode) decl).getLength());
-
- offset = code.indexOf("x) { return x+a; } // defines f and defines x"); //$NON-NLS-1$
- decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("x", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(67, ((ASTNode) decl).getOffset());
- assertEquals(1, ((ASTNode) decl).getLength());
-
- offset = code.indexOf("x+a; } // defines f and defines x"); //$NON-NLS-1$
- decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("x", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(67, ((ASTNode) decl).getOffset());
- assertEquals(1, ((ASTNode) decl).getLength());
-
- offset = code.indexOf("x+a; } // defines f and defines x"); //$NON-NLS-1$
- decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("x", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(67, ((ASTNode) decl).getOffset());
- assertEquals(1, ((ASTNode) decl).getLength());
-
- offset = code.indexOf("a; } // defines f and defines x"); //$NON-NLS-1$
- decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("a", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(4, ((ASTNode) decl).getOffset());
- assertEquals(1, ((ASTNode) decl).getLength());
-
- offset = code.indexOf("S { int a; int b; }; // defines S, S::a, and S::b"); //$NON-NLS-1$
- decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("S", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(120, ((ASTNode) decl).getOffset());
- assertEquals(1, ((ASTNode) decl).getLength());
-
- offset = code.indexOf("a; int b; }; // defines S, S::a, and S::b"); //$NON-NLS-1$
- decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("a", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(128, ((ASTNode) decl).getOffset());
- assertEquals(1, ((ASTNode) decl).getLength());
-
- offset = code.indexOf("b; }; // defines S, S::a, and S::b"); //$NON-NLS-1$
- decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("b", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(135, ((ASTNode) decl).getOffset());
- assertEquals(1, ((ASTNode) decl).getLength());
-
- offset = code.indexOf("X { // defines X"); //$NON-NLS-1$
- decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("X", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(177, ((ASTNode) decl).getOffset());
- assertEquals(1, ((ASTNode) decl).getLength());
-
- offset = code.indexOf("x; // defines nonstatic data member x"); //$NON-NLS-1$
- decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("x", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(198, ((ASTNode) decl).getOffset());
- assertEquals(1, ((ASTNode) decl).getLength());
-
- IASTNode def;
- offset = code.indexOf("y; // declares static data member y"); //$NON-NLS-1$
- def = testF3(file, offset);
- assertTrue(def instanceof IASTName);
- assertEquals("y", ((IASTName) def).toString()); //$NON-NLS-1$
- assertEquals(337, ((ASTNode) def).getOffset());
- assertEquals(1, ((ASTNode) def).getLength());
-
- offset = code.indexOf("X(): x(0) { } // defines a constructor of X"); //$NON-NLS-1$
- decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("X", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(283, ((ASTNode) decl).getOffset());
- assertEquals(1, ((ASTNode) decl).getLength());
-
- offset = code.indexOf("x(0) { } // defines a constructor of X"); //$NON-NLS-1$
- decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("x", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(198, ((ASTNode) decl).getOffset());
- assertEquals(1, ((ASTNode) decl).getLength());
-
- offset = code.indexOf("X::y = 1; // defines X::y"); //$NON-NLS-1$
- decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("X", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(177, ((ASTNode) decl).getOffset());
- assertEquals(1, ((ASTNode) decl).getLength());
-
- offset = code.indexOf("y = 1; // defines X::y"); //$NON-NLS-1$
- decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("y", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(247, ((ASTNode) decl).getOffset());
- assertEquals(1, ((ASTNode) decl).getLength());
-
- offset = code.indexOf("up, down }; // defines up and down"); //$NON-NLS-1$
- decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("up", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(367, ((ASTNode) decl).getOffset());
- assertEquals(2, ((ASTNode) decl).getLength());
-
- offset = code.indexOf("down }; // defines up and down"); //$NON-NLS-1$
- decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("down", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(371, ((ASTNode) decl).getOffset());
- assertEquals(4, ((ASTNode) decl).getLength());
-
- offset = code.indexOf("N { int d; } // defines N and N::d"); //$NON-NLS-1$
- decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("N", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(412, ((ASTNode) decl).getOffset());
- assertEquals(1, ((ASTNode) decl).getLength());
-
- offset = code.indexOf("d; } // defines N and N::d"); //$NON-NLS-1$
- decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("d", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(695, ((ASTNode) decl).getOffset());
- assertEquals(1, ((ASTNode) decl).getLength());
-
- offset = code.indexOf("N1 = N; // defines N1"); //$NON-NLS-1$
- decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("N1", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(457, ((ASTNode) decl).getOffset());
- assertEquals(2, ((ASTNode) decl).getLength());
-
- offset = code.indexOf("N; // defines N1"); //$NON-NLS-1$
- def = testF3(file, offset);
- assertTrue(def instanceof IASTName);
- assertEquals("N", ((IASTName) def).toString()); //$NON-NLS-1$
- assertEquals(412, ((ASTNode) def).getOffset());
- assertEquals(1, ((ASTNode) def).getLength());
-
- offset = code.indexOf("X anX; // defines anX"); //$NON-NLS-1$
- def = testF3(file, offset);
- assertTrue(def instanceof IASTName);
- assertEquals("X", ((IASTName) def).toString()); //$NON-NLS-1$
- assertEquals(177, ((ASTNode) def).getOffset());
- assertEquals(1, ((ASTNode) def).getLength());
-
- offset = code.indexOf("anX; // defines anX"); //$NON-NLS-1$
- decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("X", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(code.indexOf("X()"), ((ASTNode) decl).getOffset());
- assertEquals("X".length(), ((ASTNode) decl).getLength());
-
- offset = code.indexOf("a; // declares a"); //$NON-NLS-1$
- def = testF3(file, offset);
- assertTrue(def instanceof IASTName);
- assertEquals("a", ((IASTName) def).toString()); //$NON-NLS-1$
- assertEquals(4, ((ASTNode) def).getOffset());
- assertEquals(1, ((ASTNode) def).getLength());
-
- offset = code.indexOf("c; // declares c"); //$NON-NLS-1$
- def = testF3(file, offset);
- assertTrue(def instanceof IASTName);
- assertEquals("c", ((IASTName) def).toString()); //$NON-NLS-1$
- assertEquals(37, ((ASTNode) def).getOffset());
- assertEquals(1, ((ASTNode) def).getLength());
-
- offset = code.indexOf("f(int y); // declar f"); //$NON-NLS-1$
- def = testF3(file, offset);
- assertTrue(def instanceof IASTName);
- assertEquals("f", ((IASTName) def).toString()); //$NON-NLS-1$
- assertEquals(61, ((ASTNode) def).getOffset());
- assertEquals(1, ((ASTNode) def).getLength());
-
- offset = code.indexOf("S; // declares S"); //$NON-NLS-1$
- def = testF3(file, offset);
- assertTrue(def instanceof IASTName);
- assertEquals("S", ((IASTName) def).toString()); //$NON-NLS-1$
- assertEquals(120, ((ASTNode) def).getOffset());
- assertEquals(1, ((ASTNode) def).getLength());
-
- offset = code.indexOf("Int; // declares Int"); //$NON-NLS-1$
- decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("Int", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(625, ((ASTNode) decl).getOffset());
- assertEquals(3, ((ASTNode) decl).getLength());
-
- offset = code.indexOf("X anotherX; // declares anotherX"); //$NON-NLS-1$
- def = testF3(file, offset);
- assertTrue(def instanceof IASTName);
- assertEquals("X", ((IASTName) def).toString()); //$NON-NLS-1$
- assertEquals(177, ((ASTNode) def).getOffset());
- assertEquals(1, ((ASTNode) def).getLength());
-
- offset = code.indexOf("anotherX; // declares anotherX"); //$NON-NLS-1$
- decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("anotherX", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(655, ((ASTNode) decl).getOffset());
- assertEquals(8, ((ASTNode) decl).getLength());
-
- offset = code.indexOf("N::d; // declares N::d"); //$NON-NLS-1$
- def = testF3(file, offset);
- assertTrue(def instanceof IASTName);
- assertEquals("N", ((IASTName) def).toString()); //$NON-NLS-1$
- assertEquals(412, ((ASTNode) def).getOffset());
- assertEquals(1, ((ASTNode) def).getLength());
-
- offset = code.indexOf("d; // declares N::d"); //$NON-NLS-1$
- def = testF3(file, offset);
- assertTrue(def instanceof IASTName);
- assertEquals("d", ((IASTName) def).toString()); //$NON-NLS-1$
- assertEquals(420, ((ASTNode) def).getOffset());
- assertEquals(1, ((ASTNode) def).getLength());
- }
-
- public void testBug95225() throws Exception {
- StringBuilder buffer = new StringBuilder();
- buffer.append("class Overflow {\n"); //$NON-NLS-1$
- buffer.append("public:\n"); //$NON-NLS-1$
- buffer.append("Overflow(char,double,double);\n"); //$NON-NLS-1$
- buffer.append("};\n"); //$NON-NLS-1$
- buffer.append("void f(double x)\n"); //$NON-NLS-1$
- buffer.append("{\n"); //$NON-NLS-1$
- buffer.append("throw Overflow('+',x,3.45e107);\n"); //$NON-NLS-1$
- buffer.append("}\n"); //$NON-NLS-1$
- buffer.append("int foo() {\n"); //$NON-NLS-1$
- buffer.append("try {\n"); //$NON-NLS-1$
- buffer.append("f(1.2);\n"); //$NON-NLS-1$
- buffer.append("}\n"); //$NON-NLS-1$
- buffer.append("catch(Overflow& oo) {\n"); //$NON-NLS-1$
- buffer.append(" // handle exceptions of type Overflow here\n"); //$NON-NLS-1$
- buffer.append("}\n"); //$NON-NLS-1$
- buffer.append("}\n"); //$NON-NLS-1$
-
- String code = buffer.toString();
- IFile file = importFile("testBug95225.cpp", code); //$NON-NLS-1$
-
- int offset = code.indexOf("rflow('+',x,3.45e107);"); //$NON-NLS-1$
- IASTNode decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("Overflow", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(25, ((ASTNode) decl).getOffset());
- assertEquals(8, ((ASTNode) decl).getLength());
-
- offset = code.indexOf("x,3.45e107);"); //$NON-NLS-1$
- decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("x", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(72, ((ASTNode) decl).getOffset());
- assertEquals(1, ((ASTNode) decl).getLength());
- }
-
- public void testNoDefinitions() throws Exception {
- StringBuilder buffer = new StringBuilder();
- buffer.append("extern int a1; // declares a\n"); //$NON-NLS-1$
- buffer.append("extern const int c1; // declares c\n"); //$NON-NLS-1$
- buffer.append("int f1(int); // declares f\n"); //$NON-NLS-1$
- buffer.append("struct S1; // declares S\n"); //$NON-NLS-1$
- buffer.append("typedef int Int; // declares Int\n"); //$NON-NLS-1$
-
- String code = buffer.toString();
- IFile file = importFile("testNoDefinitions.cpp", code); //$NON-NLS-1$
-
- int offset = code.indexOf("a1; // declares a"); //$NON-NLS-1$
- IASTNode decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("a1", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(11, ((ASTNode) decl).getOffset());
- assertEquals(2, ((ASTNode) decl).getLength());
-
- offset = code.indexOf("c1; // declares c"); //$NON-NLS-1$
- decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("c1", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(46, ((ASTNode) decl).getOffset());
- assertEquals(2, ((ASTNode) decl).getLength());
-
- offset = code.indexOf("f1(int); // declares f"); //$NON-NLS-1$
- decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("f1", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(68, ((ASTNode) decl).getOffset());
- assertEquals(2, ((ASTNode) decl).getLength());
-
- offset = code.indexOf("S1; // declares S"); //$NON-NLS-1$
- decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("S1", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(98, ((ASTNode) decl).getOffset());
- assertEquals(2, ((ASTNode) decl).getLength());
-
- offset = code.indexOf("Int; // declares Int"); //$NON-NLS-1$
- decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("Int", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(128, ((ASTNode) decl).getOffset());
- assertEquals(3, ((ASTNode) decl).getLength());
- }
-
- public void testBug95202() throws Exception {
- StringBuilder buffer = new StringBuilder();
- buffer.append("struct A { }; // implicitlydeclared A::operator=\n"); //$NON-NLS-1$
- buffer.append("struct B : A {\n"); //$NON-NLS-1$
- buffer.append("B& operator=(const B &);\n"); //$NON-NLS-1$
- buffer.append("};\n"); //$NON-NLS-1$
- buffer.append("B& B::operator=(const B& s) {\n"); //$NON-NLS-1$
- buffer.append("this->B::operator=(s); // wellformed\n"); //$NON-NLS-1$
- buffer.append("return *this;\n"); //$NON-NLS-1$
- buffer.append("}\n"); //$NON-NLS-1$
-
- String code = buffer.toString();
- IFile file = importFile("testBug95202.cpp", code); //$NON-NLS-1$
-
- int offset = code.indexOf("s); // wellformed"); //$NON-NLS-1$
- IASTNode decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("s", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(117, ((ASTNode) decl).getOffset());
- assertEquals(1, ((ASTNode) decl).getLength());
- }
-
- public void testBug95229() throws Exception {
- StringBuilder buffer = new StringBuilder();
- buffer.append("struct A {\n"); //$NON-NLS-1$
- buffer.append("operator short(); // F3 on operator causes an infinite loop\n"); //$NON-NLS-1$
- buffer.append("} a;\n"); //$NON-NLS-1$
- buffer.append("int f(int);\n"); //$NON-NLS-1$
- buffer.append("int f(float);\n"); //$NON-NLS-1$
- buffer.append("int i = f(a); // Calls f(int), because short -> int is\n"); //$NON-NLS-1$
-
- String code = buffer.toString();
- IFile file = importFile("testBug95229.cpp", code); //$NON-NLS-1$
-
- int offset = code.indexOf("rator short(); // F3"); //$NON-NLS-1$
- IASTNode decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("operator short int", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(11, ((ASTNode) decl).getOffset());
- assertEquals(14, ((ASTNode) decl).getLength());
- }
-
- public void testBug78354() throws Exception {
- StringBuilder buffer = new StringBuilder();
- buffer.append("typedef int TestTypeOne;\n"); //$NON-NLS-1$
- buffer.append("typedef int TestTypeTwo;\n"); //$NON-NLS-1$
- buffer.append("int main()\n"); //$NON-NLS-1$
- buffer.append("{\n"); //$NON-NLS-1$
- buffer.append("TestTypeOne myFirstLink = 5;\n"); //$NON-NLS-1$
- buffer.append("TestTypeTwo mySecondLink = 6;\n"); //$NON-NLS-1$
- buffer.append("return 0;\n"); //$NON-NLS-1$
- buffer.append("}\n"); //$NON-NLS-1$
-
- String code = buffer.toString();
- IFile file = importFileWithLink("testBug78354.cpp", code); //$NON-NLS-1$
-
- int offset = code.indexOf("TestTypeOne myFirstLink = 5;"); //$NON-NLS-1$
- IASTNode decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("TestTypeOne", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(12, ((ASTNode) decl).getOffset());
- assertEquals(11, ((ASTNode) decl).getLength());
- }
-
- public void testBug103697() throws Exception {
- StringBuilder buffer = new StringBuilder();
- buffer.append("int x;\n"); //$NON-NLS-1$
- buffer.append("int foo() {\n"); //$NON-NLS-1$
- buffer.append(" return x;\n"); //$NON-NLS-1$
- buffer.append("}\n"); //$NON-NLS-1$
-
- String code = buffer.toString();
- IFile file = importFileWithLink("testBug103697.cpp", code); //$NON-NLS-1$
-
- int offset = code.indexOf("return x;\n") + "return ".length(); //$NON-NLS-1$ //$NON-NLS-2$
- IASTNode decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("x", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(4, ((ASTNode) decl).getOffset());
- assertEquals(1, ((ASTNode) decl).getLength());
- }
-
- public void testBug76043() throws Exception {
- StringBuilder buffer = new StringBuilder();
- buffer.append("int x;\n"); //$NON-NLS-1$
- buffer.append("int foo() {\n"); //$NON-NLS-1$
- buffer.append(" return x;\n"); //$NON-NLS-1$
- buffer.append("}\n"); //$NON-NLS-1$
- String code = buffer.toString();
-
- IFile file = importFileInsideLinkedFolder("testBug76043.c", code, "folder"); //$NON-NLS-1$ //$NON-NLS-2$
-
- assertFalse(file.isLinked()); // I'm not sure why the IResource#isLinked() returns false if it's contained within a linked folder
-
- int offset = code.indexOf("return x;\n") + "return ".length(); //$NON-NLS-1$ //$NON-NLS-2$
- IASTNode decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("x", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(4, ((ASTNode) decl).getOffset());
- assertEquals(1, ((ASTNode) decl).getLength());
- }
-
- // typedef int (*functionPointer)(int);
- // functionPointer fctVariable;
-
- // typedef int (functionPointerArray[2])(int);
- // functionPointerArray fctVariablArray;
- public void testBug195822() throws Exception {
- StringBuilder[] contents = getContentsForTest(2);
- String code = contents[0].toString();
- String appendCode = contents[1].toString();
-
- String[] filenames = { "testBug195822.c", "testBug195822.cpp" };
- for (int i = 0; i < 2; i++) {
- IFile file = importFile(filenames[i], code);
- int od1 = code.indexOf("functionPointer");
- int or1 = code.indexOf("functionPointer", od1 + 1);
-
- IASTNode decl = testF3(file, or1);
- assertTrue(decl instanceof IASTName);
- assertEquals("functionPointer", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(od1, ((ASTNode) decl).getOffset());
-
- IEditorPart editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
- assertNotNull(editor);
- assertTrue(editor instanceof ITextEditor);
- IDocument doc = ((ITextEditor) editor).getDocumentProvider().getDocument(editor.getEditorInput());
- doc.replace(doc.getLength(), 0, appendCode);
- int od2 = appendCode.indexOf("functionPointerArray");
- int or2 = appendCode.indexOf("functionPointerArray", od2 + 1);
-
- decl = testF3(file, code.length() + or2);
- assertTrue(decl instanceof IASTName);
- assertEquals("functionPointerArray", ((IASTName) decl).toString());
- assertEquals(code.length() + od2, ((ASTNode) decl).getOffset());
- }
- }
-
- // #define EMPTY
- // EMPTY void foo() {}
- public void testEmptyMacro_Bug198649() throws Exception {
- String code = getContentsForTest(1)[0].toString();
- String[] filenames = { "testBug198649.c", "testBug198649.cpp" };
- for (int i = 0; i < 2; i++) {
- IFile file = importFile(filenames[i], code);
- int od1 = code.indexOf("EMPTY");
- int or1 = code.indexOf("EMPTY", od1 + 1);
-
- IASTNode decl = testF3(file, or1);
- assertTrue(decl instanceof IASTName);
- assertEquals("EMPTY", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(od1, ((ASTNode) decl).getOffset());
- }
- }
-
- // static int myFunc(int) {}
- // #define USE_FUNC(x) (myFunc(x) == 0)
- public void testFallBackForStaticFuncs_Bug252549() throws Exception {
- String code = getContentsForTest(1)[0].toString();
- String[] filenames = { "testBug252549.c", "testBug252549.cpp" };
- for (int i = 0; i < 2; i++) {
- IFile file = importFile(filenames[i], code);
- int offset = code.indexOf("myFunc(x)");
- IASTNode decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- final IASTName name = (IASTName) decl;
- assertTrue(name.isDefinition());
- assertEquals("myFunc", name.toString());
- }
- }
-
- // struct A {
- // void method(int p) {}
- // };
- //
- // void test(A* a) {
- // a->method();
- // a.method(0);
- // }
- // void A::method(int a, int b) {}
- // void B::method(int b) {}
- public void testUnresolvedMethod_278337() throws Exception {
- String code = getContentsForTest(1)[0].toString();
- IFile file = importFile("testBug278337.cpp", code);
- IASTNode node = testF3(file, code.indexOf("method();"));
- assertContents(code, node.getFileLocation().getNodeOffset(), "method(int p)");
- node = testF3(file, code.indexOf("method(0);"));
- assertNull(node);
- node = testF3(file, code.indexOf("method(int a, int b)"));
- assertContents(code, node.getFileLocation().getNodeOffset(), "method(int p)");
- node = testF3(file, code.indexOf("method(int b)"));
- // Should not navigate away since there is no good candidate.
- assertContents(code, node.getFileLocation().getNodeOffset(), "method(int b)");
- }
-
- // class A {
- // class B {};
- // };
- //
- // B b;
- public void testUnresolvedType() throws Exception {
- String code = getContentsForTest(1)[0].toString();
- IFile file = importFile("testUndefinedType.cpp", code);
- int offset = code.indexOf("B b;");
- IASTNode node = testF3(file, offset);
- assertNull(node);
- }
-
- // void func(int a);
- // void func(float a);
- // void func(int* a);
- // void test() {
- // func();
- // }
- public void testUnresolvedOverloadedFunction() throws Exception {
- String code = getContentsForTest(1)[0].toString();
- IFile file = importFile("testUnresolvedOverloadFunction.cpp", code);
- int offset = code.indexOf("func();");
- try {
- IASTNode node = testF3(file, offset);
- fail("Didn't expect navigation to succeed due to multiple choices.");
- } catch (RuntimeException e) {
- assertEquals("ambiguous input: 3", e.getMessage());
- }
- }
-
- // namespace nm {
- // template<typename T> void func(T a, T b){}
- // }
- // template<typename Tmp> void testFunc() {
- // Tmp val;
- // nm::func(val, val);
- // }
- public void testDependentNameInNamespace_281736() throws Exception {
- String code = getContentsForTest(1)[0].toString();
- IFile file = importFile("testDependentNameInNamespace.cpp", code);
- int offset = code.indexOf("func(val, val);");
- IASTNode node = testF3(file, offset);
- assertContents(code, node.getFileLocation().getNodeOffset(), "func(T a, T b)");
- }
-
- // template<typename T> void func(T a){}
- // template<typename T> void func(T a, T b){}
- //
- // template<typename Tmp> void testFunc() {
- // Tmp val;
- // func(val, val); // F3 could know that 'func(T a)' cannot be a correct match.
- // }
- public void testDependentNameTwoChoices_281736() throws Exception {
- String code = getContentsForTest(1)[0].toString();
- IFile file = importFile("testDependentNameTwoChoices_281736.cpp", code);
- int offset = code.indexOf("func(val, val);");
- IASTNode node = testF3(file, offset);
- assertContents(code, node.getFileLocation().getNodeOffset(), "func(T a, T b)");
- }
-
- // namespace N {
- // template <typename T> class AAA { T _t; };
- // }
- // N::AAA<int> a;
- public void testBug92632() throws Exception {
- String code = getContentsForTest(1)[0].toString();
- IFile file = importFile("testBug92632.cpp", code);
- int index = code.indexOf("AAA<int>"); //$NON-NLS-1$
- IASTNode node = testF3(file, index);
- assertContents(code, node.getFileLocation().getNodeOffset(), "AAA");
- node = testF3(file, index + 4);
- assertContents(code, node.getFileLocation().getNodeOffset(), "AAA");
- }
-
- // void bug(int var) {
- // int foo = var;
- // int foo2(var);
- // }
- public void testBug325135a() throws Exception {
- String code = getAboveComment();
- IFile file = importFile("testBug325135a.cpp", code); //$NON-NLS-1$
- int parOffset = code.indexOf("var)");
-
- int offset = code.indexOf("var;"); //$NON-NLS-1$
- IASTNode decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("var", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(parOffset, ((ASTNode) decl).getOffset());
- assertEquals(3, ((ASTNode) decl).getLength());
-
- offset = code.indexOf("var);"); //$NON-NLS-1$
- decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("var", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(parOffset, ((ASTNode) decl).getOffset());
- assertEquals(3, ((ASTNode) decl).getLength());
- }
-
- // template<typename T> class C {
- // template<typename V> void f(V v) {
- // T t;
- // V s;
- // }
- // };
- public void testBug325135b() throws Exception {
- String code = getAboveComment();
- IFile file = importFile("testBug325135b.cpp", code); //$NON-NLS-1$
-
- int offsetT = code.indexOf("T>");
- int offsetV = code.indexOf("V>");
-
- int offset = code.indexOf("T t;");
- IASTNode decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("T", ((IASTName) decl).toString());
- assertEquals(offsetT, ((ASTNode) decl).getOffset());
-
- offset = code.indexOf("V s;");
- decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("V", ((IASTName) decl).toString());
- assertEquals(offsetV, ((ASTNode) decl).getOffset());
- }
-
- // template <typename>
- // struct A {
- // struct S {
- // void foo();
- // };
- // void test() {
- // S s;
- // s.foo();
- // }
- // };
- public void testBug399142() throws Exception {
- String code = getAboveComment();
- IFile file = importFile("testBug399142.cpp", code); //$NON-NLS-1$
-
- int offset = code.indexOf("s.foo()") + 2;
- IASTNode decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- }
-
- // int waldo;
- // void foo() {
- // extern int waldo;
- // }
- public void testLocallyDeclaredExternVariable_372004() throws Exception {
- String code = getAboveComment();
- IFile file = importFile("testBug372004.cpp", code);
-
- int offset = code.indexOf("extern int waldo") + 12;
- assertTrue(testF3(file, offset) instanceof IASTName);
- }
-
- // template <typename>
- // struct A {
- // int waldo;
- // };
- //
- // template <typename T>
- // struct B {
- // A<T> obj;
- // void foo() {
- // obj.waldo;
- // }
- // };
- public void testDependentMemberAccess_448764() throws Exception {
- String code = getAboveComment();
- IFile file = importFile("testBug448764.cpp", code);
-
- int offset = code.indexOf("obj.waldo") + 4;
- assertTrue(testF3(file, offset) instanceof IASTName);
- }
-
- // struct A {
- // A();
- // };
- //
- // template <class>
- // struct B {
- // B() {}
- // };
- //
- // struct C {
- // C();
- // B<A>* b;
- // };
- //
- // C::C() : b(new B<A>()) {}
- public void testAmbiguityWithImplicitName_463234() throws Exception {
- String code = getAboveComment();
- IFile file = importFile("testBug463234.cpp", code);
-
- int offset = code.indexOf("new B<A>") + 6;
- // There should be two ambiguous targets, the class A and the constructor B::B,
- // with the class A being the first one (index 0).
- IASTNode target = testF3WithAmbiguity(file, offset, 0);
- assertTrue(target instanceof IASTName);
- assertEquals("A", ((IASTName) target).toString());
- }
-
- // class Other {
- // int foo();
- // };
- //
- // template<class X>
- // class Base {
- // Other *other;
- // };
- //
- // template<class X>
- // class Child : public Base<X> {
- // void bar() {
- // this->other->foo(); // can't find other and foo
- // Base<X>::other->foo(); // can find other can't find foo
- // }
- // };
- public void testMemberOfDependentBase_421823() throws Exception {
- String code = getAboveComment();
- IFile file = importFile("testBug421823.cpp", code);
-
- int offset = code.indexOf("this->other") + 6;
- assertTrue(testF3(file, offset) instanceof IASTName);
-
- offset += 7; // 'foo' in 'this->other->foo'
- assertTrue(testF3(file, offset) instanceof IASTName);
-
- offset = code.indexOf("::other->foo") + 9;
- assertTrue(testF3(file, offset) instanceof IASTName);
- }
-
- // struct Duration {};
- // Duration operator "" _d(unsigned long long);
- // Duration dur = 42_d;
- public void testUserDefinedLiteralSuffix_484618() throws Exception {
- String code = getAboveComment();
- IFile file = importFile("testBug484618.cpp", code);
-
- int offset = code.indexOf("42_d") + 3;
- assertTrue(testF3(file, offset) instanceof IASTName);
- }
-
- // struct Base {
- // Base(int, int);
- // };
- //
- // struct Derived : Base {
- // using Base::Base;
- // };
- public void testInheritedConstructor_484899() throws Exception {
- String code = getAboveComment();
- IFile file = importFile("testBug484899.cpp", code);
-
- int offset = code.indexOf("Base::Base") + 7;
- IASTNode target = testF3(file, offset);
- assertInstance(target, IASTName.class);
- IBinding targetBinding = ((IASTName) target).resolveBinding();
- assertInstance(targetBinding, ICPPConstructor.class);
- }
-
- // template <typename = short>
- // struct waldo;
- //
- // template <typename>
- // struct waldo {};
- public void testNavigationToTemplateForwardDecl_483048() throws Exception {
- String code = getAboveComment();
- IFile file = importFile("testBug483048.cpp", code);
-
- int offset = code.indexOf("waldo {}");
- IASTNode target = testF3(file, offset);
-
- // Check that the result of the navigation is the forward declaration,
- // not the definition.
- assertInstance(target.getParent(), IASTElaboratedTypeSpecifier.class);
- }
-
- // struct Waldo {};
- // Waldo find();
- // int main() {
- // auto waldo = find();
- // }
- public void testAutoType_511522() throws Exception {
- String code = getAboveComment();
- IFile file = importFile("testBug511522.cpp", code);
-
- int offset = code.indexOf("auto");
- IASTNode target = testF3(file, offset);
- assertInstance(target, IASTName.class);
- }
-
- // struct Waldo {};
- // template<typename T>
- // struct Basket{};
- // Waldo find();
- // Waldo myFriend;
- // int main(decltype(myFriend) p) {
- // auto waldo = find();
- // Basket<typeof(waldo)> basket;
- // decltype(waldo) wuff;
- // }
- public void testDeclType_520913() throws Exception {
- String code = getAboveComment();
- IFile file = importFile("testBug520913.cpp", code);
-
- int offset = code.indexOf("main") + 10;
- IASTNode target = testF3(file, offset);
- assertInstance(target, IASTName.class);
-
- offset = code.indexOf("typeof");
- target = testF3(file, offset);
- assertInstance(target, IASTName.class);
- assertEquals("Waldo", ((IASTName) target).toString());
-
- offset = code.indexOf("wuff") - 10;
- target = testF3(file, offset);
- assertInstance(target, IASTName.class);
- }
-
- // template<typename T>
- // struct A {
- // struct AA{};
- //
- // auto test() {
- // auto test = A<T>::AA();
- // return test;
- // }
- //
- // };
- public void testDependentAutoType_520913() throws Exception {
- String code = getAboveComment();
- IFile file = importFile("testBug520913a.cpp", code);
-
- int offset = code.indexOf("auto test = ") + 2;
- IASTNode target = testF3(file, offset);
- assertInstance(target, IASTName.class);
- assertEquals("AA", ((IASTName) target).toString());
-
- offset = code.indexOf("auto test()") + 2;
- target = testF3(file, offset);
- assertInstance(target, IASTName.class);
- assertEquals("AA", ((IASTName) target).toString());
- }
-
- // template<char T>
- // struct A {};
- //
- // template<>
- // struct A<0> {};
- //
- // void test(){
- // A<0> a0;
- // A<1> a1;
- // }
- public void testPartialSpecializationResolution_525288() throws Exception {
- CPPASTNameBase.sAllowNameComputation = true;
- String code = getAboveComment();
- IFile file = importFile("testBug525288.cpp", code);
-
- int offset = code.indexOf("a0") - 5;
- IASTNode target = testF3(file, offset);
- assertInstance(target, IASTName.class);
- assertEquals("A<0>", ((IASTName) target).toString());
-
- offset = code.indexOf("a1") - 5;
- target = testF3(file, offset);
- assertInstance(target, IASTName.class);
- assertEquals("A", ((IASTName) target).toString());
- }
-
- // void npeTest() {
- // auto i = 1;
- // }
- public void testEmptySpace_525794() throws Exception {
- String code = getAboveComment();
- IFile file = importFile("testBug525794.cpp", code);
-
- int offset = code.indexOf("auto") - 2;
- IASTNode target = testF3(file, offset);
- }
-
- // class Waldo {
- // void find();
- // };
- // int Waldo::find() {}
- public void testNavigationToDefinitionWithWrongSignature_525739() throws Exception {
- String code = getAboveComment();
- IFile file = importFile("testBug525739.cpp", code);
-
- int offset = code.indexOf("void find") + 6;
- IASTNode target = testF3(file, offset);
- assertInstance(target, IASTName.class);
- assertEquals(IASTNameOwner.r_definition, ((IASTName) target).getRoleOfName(false));
- }
-
- //int arr[2]{1, 2};
- //auto [e1, e2] = arr;
- //auto r1 = e1;
- //auto r2 = e2;
- public void testOpenDeclarationForStructuredBinding_522200() throws Exception {
- String code = getAboveComment();
- IFile file = importFile("testSB_.cpp", code); //$NON-NLS-1$
-
- int offsetE1Reference = code.indexOf("e1;"); //$NON-NLS-1$
- IASTNode e1Declaration = testF3(file, offsetE1Reference);
- assertTrue(e1Declaration instanceof IASTName);
-
- String expectedE1Name = "e1"; //$NON-NLS-1$
- assertEquals(expectedE1Name, ((IASTName) e1Declaration).toString());
- assertEquals(code.indexOf(expectedE1Name), ((ASTNode) e1Declaration).getOffset());
- assertEquals(expectedE1Name.length(), ((ASTNode) e1Declaration).getLength());
- assertEquals(IASTNameOwner.r_definition, ((IASTName) e1Declaration).getRoleOfName(false));
-
- int offsetE2Reference = code.indexOf("e2;"); //$NON-NLS-1$
- IASTNode e2Declaration = testF3(file, offsetE2Reference);
- assertTrue(e2Declaration instanceof IASTName);
-
- String expectedE2Name = "e2"; //$NON-NLS-1$
- assertEquals(expectedE2Name, ((IASTName) e2Declaration).toString());
- assertEquals(code.indexOf(expectedE2Name), ((ASTNode) e2Declaration).getOffset());
- assertEquals(expectedE2Name.length(), ((ASTNode) e2Declaration).getLength());
- assertEquals(IASTNameOwner.r_definition, ((IASTName) e2Declaration).getRoleOfName(false));
- }
-}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selection/CSelectionIndexerTests.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selection/CSelectionIndexerTests.java
new file mode 100644
index 00000000000..b78a540e9f8
--- /dev/null
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selection/CSelectionIndexerTests.java
@@ -0,0 +1,565 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2015 Wind River Systems, Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Markus Schorn - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.ui.tests.text.selection;
+
+import java.io.IOException;
+
+import org.eclipse.cdt.core.CCorePlugin;
+import org.eclipse.cdt.core.dom.IPDOMManager;
+import org.eclipse.cdt.core.dom.ast.IASTFileLocation;
+import org.eclipse.cdt.core.dom.ast.IASTName;
+import org.eclipse.cdt.core.dom.ast.IASTNode;
+import org.eclipse.cdt.core.index.IIndex;
+import org.eclipse.cdt.core.model.ICProject;
+import org.eclipse.cdt.core.testplugin.CProjectHelper;
+import org.eclipse.cdt.core.testplugin.util.TestSourceReader;
+import org.eclipse.cdt.internal.core.dom.parser.ASTNode;
+import org.eclipse.cdt.ui.testplugin.CTestPlugin;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.part.FileEditorInput;
+
+import junit.framework.Test;
+
+public class CSelectionIndexerTests extends BaseSelectionTestsIndexer {
+ private String sourceIndexerID;
+ private IIndex index;
+
+ public CSelectionIndexerTests(String name) {
+ super(name);
+ sourceIndexerID = IPDOMManager.ID_FAST_INDEXER;
+ }
+
+ public static Test suite() {
+ return suite(CSelectionIndexerTests.class);
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ //Create temp project
+ fCProject = createProject("CSelectionTestsDOMIndexerProject"); //$NON-NLS-1$
+ assertNotNull("Unable to create project", fCProject);
+
+ CCorePlugin.getIndexManager().setIndexerId(fCProject, sourceIndexerID);
+ index = CCorePlugin.getIndexManager().getIndex(fCProject);
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ closeAllEditors();
+ CProjectHelper.delete(fCProject);
+ super.tearDown();
+ }
+
+ private ICProject createProject(String projectName) throws CoreException {
+ ICProject cPrj = CProjectHelper.createCProject(projectName, "bin", IPDOMManager.ID_NO_INDEXER); //$NON-NLS-1$
+ return cPrj;
+ }
+
+ protected StringBuilder[] getContents(int sections) throws IOException {
+ return TestSourceReader.getContentsForTest(CTestPlugin.getDefault().getBundle(), "ui",
+ CSelectionIndexerTests.class, getName(), sections);
+ }
+
+ private void assertNode(String name, int offset, IASTNode node) {
+ assertNotNull(node);
+ assertEquals(node.toString(), name);
+ IASTFileLocation loc = node.getFileLocation();
+ assertEquals(offset, loc.getNodeOffset());
+ assertEquals(name.length(), loc.getNodeLength());
+ }
+
+ // // the header
+ // extern int MyInt; // MyInt is in another file
+ // extern const int MyConst; // MyConst is in another file
+ // void MyFunc(int); // often used in header files
+ // typedef int NewInt; // a normal typedef statement
+ // struct MyStruct { int Member1; int Member2; };
+
+ // #include "basicDefinition.h"
+ // int MyInt;
+ // extern const int MyConst = 42;
+ // void MyFunc(int a) { cout << a << endl; }
+ // struct MyStruct;
+ public void testBasicDefinition() throws Exception {
+ StringBuilder[] buffers = getContents(2);
+ String hcode = buffers[0].toString();
+ String scode = buffers[1].toString();
+ IFile hfile = importFile("basicDefinition.h", hcode);
+ IFile file = importFile("testBasicDefinition.c", scode);
+ TestSourceReader.waitUntilFileIsIndexed(index, file, INDEXER_TIMEOUT_SEC * 1000);
+
+ int hoffset = hcode.indexOf("MyInt");
+ int soffset = scode.indexOf("MyInt");
+ IASTNode decl = testF3(file, soffset + 2);
+ IASTNode def = testF3(hfile, hoffset + 2);
+ assertTrue(def instanceof IASTName);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("MyInt", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(hoffset, ((ASTNode) decl).getOffset());
+ assertEquals(5, ((ASTNode) decl).getLength());
+ assertEquals("MyInt", ((IASTName) def).toString()); //$NON-NLS-1$
+ assertEquals(soffset, def.getFileLocation().getNodeOffset());
+ assertEquals(5, ((ASTNode) def).getLength());
+
+ hoffset = hcode.indexOf("MyConst");
+ soffset = scode.indexOf("MyConst");
+ decl = testF3(file, soffset + 2);
+ def = testF3(hfile, hoffset + 2);
+ assertTrue(def instanceof IASTName);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("MyConst", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(hoffset, ((ASTNode) decl).getOffset());
+ assertEquals(7, ((ASTNode) decl).getLength());
+ assertEquals("MyConst", ((IASTName) def).toString()); //$NON-NLS-1$
+ assertEquals(soffset, def.getFileLocation().getNodeOffset());
+ assertEquals(7, ((ASTNode) def).getLength());
+
+ hoffset = hcode.indexOf("MyFunc");
+ soffset = scode.indexOf("MyFunc");
+ decl = testF3(file, soffset + 2);
+ def = testF3(hfile, hoffset + 2);
+ assertTrue(def instanceof IASTName);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("MyFunc", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(hoffset, ((ASTNode) decl).getOffset());
+ assertEquals(6, ((ASTNode) decl).getLength());
+ assertEquals("MyFunc", ((IASTName) def).toString()); //$NON-NLS-1$
+ assertEquals(soffset, def.getFileLocation().getNodeOffset());
+ assertEquals(6, ((ASTNode) def).getLength());
+
+ hoffset = hcode.indexOf("MyStruct");
+ soffset = scode.indexOf("MyStruct");
+ decl = testF3(file, soffset + 2);
+ def = testF3(hfile, hoffset + 2);
+ assertTrue(def instanceof IASTName);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("MyStruct", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(hoffset, ((ASTNode) decl).getOffset());
+ assertEquals(8, ((ASTNode) decl).getLength());
+ assertEquals("MyStruct", ((IASTName) def).toString()); //$NON-NLS-1$
+ assertEquals(hoffset, def.getFileLocation().getNodeOffset());
+ assertEquals(8, ((ASTNode) def).getLength());
+ }
+
+ // // the header
+ // extern int a; // declares
+ // extern const int c = 1; // defines
+ // struct S {int a; int b;}; // defines
+ // struct X { // defines
+ // int x; // defines nonstatic data member
+ // };
+ // enum E {up, down}; // defines
+ // int f(int); // declares
+ // extern struct X anotherX; // declares
+
+ // #include "testCPPSpecDeclsDefs.h"
+ // int a; // defines
+ // struct X anX; // defines
+ // extern const int c; // declares
+ // int f(int x) {return x+a;} // defines
+ // struct S; // declares
+ // typedef int Int; // declares
+ // struct S s;
+ // Int lhs= s.a+s.b+up+down+anX+0;
+ public void testCPPSpecDeclsDefs() throws Exception {
+ StringBuilder[] buffers = getContents(2);
+ String hcode = buffers[0].toString();
+ String scode = buffers[1].toString();
+ IFile hfile = importFile("testCPPSpecDeclsDefs.h", hcode);
+ IFile file = importFile("testCPPSpecDeclsDefs.c", scode);
+ TestSourceReader.waitUntilFileIsIndexed(index, file, INDEXER_TIMEOUT_SEC * 1000);
+
+ int offset0 = hcode.indexOf("a;");
+ int offset1 = scode.indexOf("a;");
+ IASTNode decl = testF3(hfile, offset0);
+ assertNode("a", offset1, decl);
+ decl = testF3(file, offset1);
+ assertNode("a", offset0, decl);
+
+ offset0 = hcode.indexOf("int c") + 4;
+ offset1 = scode.indexOf("int c") + 4;
+ decl = testF3(hfile, offset0);
+ assertNode("c", offset1, decl);
+ decl = testF3(file, offset1);
+ assertNode("c", offset0, decl);
+
+ offset0 = hcode.indexOf("f(int");
+ offset1 = scode.indexOf("f(int");
+ decl = testF3(hfile, offset0);
+ assertNode("f", offset1, decl);
+ decl = testF3(file, offset1);
+ assertNode("f", offset0, decl);
+
+ offset0 = scode.indexOf("x)");
+ decl = testF3(file, offset0);
+ assertNode("x", offset0, decl);
+
+ offset1 = scode.indexOf("x+a");
+ decl = testF3(file, offset1);
+ assertNode("x", offset0, decl);
+
+ offset0 = scode.indexOf("a;");
+ offset1 = scode.indexOf("a;}");
+ decl = testF3(file, offset1);
+ assertNode("a", offset0, decl);
+
+ offset0 = hcode.indexOf("S");
+ offset1 = scode.indexOf("S;");
+ int offset2 = scode.indexOf("S", offset1);
+ decl = testF3(hfile, offset0);
+ assertNode("S", offset0, decl);
+ decl = testF3(file, offset1);
+ assertNode("S", offset0, decl);
+ decl = testF3(file, offset2);
+ assertNode("S", offset0, decl);
+
+ offset0 = hcode.indexOf("a; int b;};");
+ offset1 = scode.indexOf("a+s.b");
+ decl = testF3(hfile, offset0);
+ assertNode("a", offset0, decl);
+ decl = testF3(file, offset1);
+ assertNode("a", offset0, decl);
+
+ offset0 = hcode.indexOf("b;};");
+ offset1 = scode.indexOf("s.b") + 2;
+ decl = testF3(hfile, offset0);
+ assertNode("b", offset0, decl);
+ decl = testF3(file, offset1);
+ assertNode("b", offset0, decl);
+
+ offset0 = hcode.indexOf("X");
+ offset1 = scode.indexOf("X");
+ decl = testF3(hfile, offset0);
+ assertNode("X", offset0, decl);
+ decl = testF3(file, offset1);
+ assertNode("X", offset0, decl);
+
+ offset0 = hcode.indexOf("x;");
+ decl = testF3(hfile, offset0);
+ assertNode("x", offset0, decl);
+
+ offset0 = hcode.indexOf("up");
+ offset1 = scode.indexOf("up");
+ decl = testF3(hfile, offset0);
+ assertNode("up", offset0, decl);
+ decl = testF3(file, offset1);
+ assertNode("up", offset0, decl);
+
+ offset0 = hcode.indexOf("down");
+ offset1 = scode.indexOf("down");
+ decl = testF3(hfile, offset0);
+ assertNode("down", offset0, decl);
+ decl = testF3(file, offset1);
+ assertNode("down", offset0, decl);
+
+ offset0 = scode.indexOf("anX");
+ offset1 = scode.indexOf("anX", offset0 + 1);
+ decl = testF3(file, offset0);
+ assertNode("anX", offset0, decl);
+ decl = testF3(file, offset1);
+ assertNode("anX", offset0, decl);
+
+ offset0 = scode.indexOf("Int");
+ offset1 = scode.indexOf("Int", offset0 + 1);
+ decl = testF3(file, offset0);
+ assertNode("Int", offset0, decl);
+ decl = testF3(file, offset1);
+ assertNode("Int", offset0, decl);
+ }
+
+ // extern int abc;
+
+ // #include "testBug101287.h"
+ // int main(int argc, char **argv) {
+ // abc;
+ // }
+ public void testBug101287() throws Exception {
+ StringBuilder[] buffers = getContents(2);
+ String hcode = buffers[0].toString();
+ String scode = buffers[1].toString();
+ IFile hfile = importFile("testBug101287.h", hcode);
+ IFile file = importFile("testBug101287.c", scode);
+ TestSourceReader.waitUntilFileIsIndexed(index, file, INDEXER_TIMEOUT_SEC * 1000);
+ IASTNode decl;
+ int offset0, offset1;
+
+ offset0 = hcode.indexOf("abc");
+ offset1 = scode.indexOf("abc");
+ decl = testF3(hfile, offset0);
+ assertNode("abc", offset0, decl);
+ decl = testF3(file, offset1);
+ assertNode("abc", offset0, decl);
+ }
+
+ // int x;
+
+ // #include "testBug103697.h"
+ // int foo() {
+ // return x;
+ // }
+ public void testBug103697() throws Exception {
+ StringBuilder[] buffers = getContents(2);
+ String hcode = buffers[0].toString();
+ String scode = buffers[1].toString();
+ IFile hfile = importFileWithLink("testBug103697.h", hcode);
+ IFile file = importFileWithLink("testBug103697.c", scode);
+ TestSourceReader.waitUntilFileIsIndexed(index, file, INDEXER_TIMEOUT_SEC * 1000);
+ IASTNode decl;
+ int offset0, offset1;
+
+ offset0 = hcode.indexOf("x");
+ offset1 = scode.indexOf("x");
+ decl = testF3(hfile, offset0);
+ assertNode("x", offset0, decl);
+ decl = testF3(file, offset1);
+ assertNode("x", offset0, decl);
+ }
+
+ // typedef int TestTypeOne;
+ // typedef int TestTypeTwo;
+
+ // #include "testBug78354.h"
+ // main()
+ // {
+ // TestTypeOne myFirstLink = 5;
+ // TestTypeTwo mySecondLink = 6;
+ // return 0;
+ // }
+ public void testBug78354() throws Exception {
+ StringBuilder[] buffers = getContents(2);
+ String hcode = buffers[0].toString();
+ String scode = buffers[1].toString();
+ IFile hfile = importFile("testBug78354.h", hcode);
+ IFile file = importFile("testBug78354.c", scode);
+ TestSourceReader.waitUntilFileIsIndexed(index, file, INDEXER_TIMEOUT_SEC * 1000);
+ IASTNode decl;
+ int offset0, offset1;
+
+ offset0 = hcode.indexOf("TestTypeOne");
+ offset1 = scode.indexOf("TestTypeOne");
+ decl = testF3(hfile, offset0);
+ assertNode("TestTypeOne", offset0, decl);
+ decl = testF3(file, offset1);
+ assertNode("TestTypeOne", offset0, decl);
+
+ offset0 = hcode.indexOf("TestTypeTwo");
+ offset1 = scode.indexOf("TestTypeTwo");
+ decl = testF3(hfile, offset0);
+ assertNode("TestTypeTwo", offset0, decl);
+ decl = testF3(file, offset1);
+ assertNode("TestTypeTwo", offset0, decl);
+ }
+
+ // typedef struct {
+ // int a;
+ // } usertype;
+ // void func(usertype t);
+
+ // #include "testBug190730.h"
+ // void func(usertype t) {
+ // }
+ public void testFuncWithTypedefForAnonymousStruct_190730() throws Exception {
+ StringBuilder[] buffers = getContents(2);
+ String hcode = buffers[0].toString();
+ String scode = buffers[1].toString();
+ IFile hfile = importFile("testBug190730.h", hcode);
+ IFile file = importFile("testBug190730.c", scode);
+ TestSourceReader.waitUntilFileIsIndexed(index, file, INDEXER_TIMEOUT_SEC * 1000);
+ IASTNode decl;
+ int offset0, offset1;
+
+ offset0 = hcode.indexOf("func");
+ offset1 = scode.indexOf("func");
+ decl = testF3(hfile, offset0);
+ assertNode("func", offset1, decl);
+ decl = testF3(file, offset1);
+ assertNode("func", offset0, decl);
+ }
+
+ // typedef enum {
+ // int eitem
+ // } userEnum;
+ // void func(userEnum t);
+
+ // #include "testBug190730_2.h"
+ // void func(userEnum t) {
+ // }
+ public void testFuncWithTypedefForAnonymousEnum_190730() throws Exception {
+ StringBuilder[] buffers = getContents(2);
+ String hcode = buffers[0].toString();
+ String scode = buffers[1].toString();
+ IFile hfile = importFile("testBug190730_2.h", hcode);
+ IFile file = importFile("testBug190730_2.c", scode);
+ TestSourceReader.waitUntilFileIsIndexed(index, file, INDEXER_TIMEOUT_SEC * 1000);
+ IASTNode decl;
+ int offset0, offset1;
+
+ offset0 = hcode.indexOf("func");
+ offset1 = scode.indexOf("func");
+ decl = testF3(hfile, offset0);
+ assertNode("func", offset1, decl);
+ decl = testF3(file, offset1);
+ assertNode("func", offset0, decl);
+ }
+
+ // #define MY_MACRO 0xDEADBEEF
+ // #define MY_FUNC() 00
+ // #define MY_PAR( aRef );
+
+ // #include "macrodef.h"
+ // int basictest(void){
+ // int tester = MY_MACRO; //OK: F3 works
+ // int xx= MY_FUNC();
+ // MY_PAR(0);
+ // }
+ public void testMacroNavigation() throws Exception {
+ StringBuilder[] buffers = getContents(2);
+ String hcode = buffers[0].toString();
+ String scode = buffers[1].toString();
+ IFile hfile = importFile("macrodef.h", hcode);
+ IFile file = importFile("macronavi.c", scode);
+ TestSourceReader.waitUntilFileIsIndexed(index, file, INDEXER_TIMEOUT_SEC * 1000);
+ IASTNode decl;
+ int offset0, offset1;
+
+ offset0 = hcode.indexOf("MY_MACRO");
+ offset1 = scode.indexOf("MY_MACRO");
+ decl = testF3(file, offset1);
+ assertNode("MY_MACRO", offset0, decl);
+
+ offset0 = hcode.indexOf("MY_FUNC");
+ offset1 = scode.indexOf("MY_FUNC");
+ decl = testF3(file, offset1);
+ assertNode("MY_FUNC", offset0, decl);
+
+ offset0 = hcode.indexOf("MY_PAR");
+ offset1 = scode.indexOf("MY_PAR");
+ decl = testF3(file, offset1);
+ assertNode("MY_PAR", offset0, decl);
+ }
+
+ // #define MY_MACRO 0xDEADBEEF
+ // #define MY_PAR( aRef ) aRef
+
+ // #include "macrodef.h"
+ // int basictest(void){
+ // int tester = MY_PAR(MY_MACRO);
+ // }
+ public void testMacroNavigation_Bug208300() throws Exception {
+ StringBuilder[] buffers = getContents(2);
+ String hcode = buffers[0].toString();
+ String scode = buffers[1].toString();
+ IFile hfile = importFile("macrodef.h", hcode);
+ IFile file = importFile("macronavi.c", scode);
+ TestSourceReader.waitUntilFileIsIndexed(index, file, INDEXER_TIMEOUT_SEC * 1000);
+ IASTNode decl;
+ int offset0, offset1;
+
+ offset0 = hcode.indexOf("MY_PAR");
+ offset1 = scode.indexOf("MY_PAR");
+ decl = testF3(file, offset1);
+ assertNode("MY_PAR", offset0, decl);
+
+ offset0 = hcode.indexOf("MY_MACRO");
+ offset1 = scode.indexOf("MY_MACRO");
+ decl = testF3(file, offset1);
+ assertNode("MY_MACRO", offset0, decl);
+ }
+
+ // int wurscht;
+
+ // #include "aheader.h"
+ public void testIncludeNavigation() throws Exception {
+ StringBuilder[] buffers = getContents(2);
+ String hcode = buffers[0].toString();
+ String scode = buffers[1].toString();
+ IFile hfile = importFile("aheader.h", hcode);
+ IFile file = importFile("includenavi.c", scode);
+ TestSourceReader.waitUntilFileIsIndexed(index, file, INDEXER_TIMEOUT_SEC * 1000);
+ IASTNode decl;
+ int offset0, offset1;
+
+ offset1 = scode.indexOf("aheader.h");
+ testF3(file, offset1);
+ IEditorPart part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
+ IEditorInput input = part.getEditorInput();
+ assertEquals("aheader.h", ((FileEditorInput) input).getFile().getName());
+ }
+
+ // #define DR_NUM_DIMENSIONS(DR) VEC_length (tree, DR_ACCESS_FNS (DR))
+
+ // #define DR_ACCESS_FNS(DR)
+ public void testNavigationInMacroDefinition_Bug102643() throws Exception {
+ StringBuilder[] buffers = getContents(2);
+ String hcode = buffers[0].toString();
+ String scode = buffers[1].toString();
+ IFile hfile = importFile("aheader.h", hcode);
+ IFile file = importFile("source.c", scode);
+ TestSourceReader.waitUntilFileIsIndexed(index, file, INDEXER_TIMEOUT_SEC * 1000);
+ IASTNode decl;
+ int offset0, offset1;
+
+ offset1 = hcode.indexOf("DR_ACC");
+ testF3(hfile, offset1);
+ IEditorPart part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
+ IEditorInput input = part.getEditorInput();
+ assertEquals("source.c", ((FileEditorInput) input).getFile().getName());
+ }
+
+ // int myFunc();
+
+ // int myFunc(var)
+ // int var;
+ // {
+ // return var;
+ // }
+ //
+ // int main(void)
+ // {
+ // return myFunc(0);
+ // }
+ public void testKRstyleFunctions_Bug221635() throws Exception {
+ final StringBuilder[] contents = getContentsForTest(2);
+ String hcode = contents[0].toString();
+ String code = contents[1].toString();
+ IFile hfile = importFile("aheader.h", hcode);
+ IFile file = importFile("source.c", code);
+ int offset = code.indexOf("myFunc(0)");
+ TestSourceReader.waitUntilFileIsIndexed(index, file, INDEXER_TIMEOUT_SEC * 1000);
+
+ IASTNode decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ final IASTName name = (IASTName) decl;
+ assertTrue(name.isDefinition());
+ assertEquals("myFunc", name.toString());
+ }
+
+ // int x= __LINE__;
+ public void testBuiltinMacro_Bug293864() throws Exception {
+ final StringBuilder[] contents = getContentsForTest(1);
+ String code = contents[0].toString();
+ IFile file = importFile("source.c", code);
+ int offset = code.indexOf("__LINE__");
+
+ TestSourceReader.waitUntilFileIsIndexed(index, file, INDEXER_TIMEOUT_SEC * 1000);
+ // Just make sure that no NPE is thrown.
+ testF3(file, offset);
+ }
+}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selection/CSelectionNoIndexerTests.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selection/CSelectionNoIndexerTests.java
new file mode 100644
index 00000000000..f8928828f08
--- /dev/null
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selection/CSelectionNoIndexerTests.java
@@ -0,0 +1,648 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2016 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ * Markus Schorn (Wind River Systems)
+ * Nathan Ridge
+ *******************************************************************************/
+package org.eclipse.cdt.ui.tests.text.selection;
+
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.InputStream;
+
+import org.eclipse.cdt.core.dom.IPDOMManager;
+import org.eclipse.cdt.core.dom.ast.IASTName;
+import org.eclipse.cdt.core.dom.ast.IASTNode;
+import org.eclipse.cdt.core.model.ICProject;
+import org.eclipse.cdt.core.testplugin.CProjectHelper;
+import org.eclipse.cdt.core.testplugin.FileManager;
+import org.eclipse.cdt.internal.core.dom.parser.ASTNode;
+import org.eclipse.cdt.internal.ui.search.actions.OpenDeclarationsAction;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * It is required to test the selection performance independent of the indexer to make sure that the DOM is functioning properly.
+ *
+ * Indexer bugs can drastically influence the correctness of these tests so the indexer has to be off when performing them.
+ *
+ * @author dsteffle
+ */
+public class CSelectionNoIndexerTests extends BaseSelectionTests {
+
+ private static final String INDEX_FILE_ID = "2324852323"; //$NON-NLS-1$
+ static NullProgressMonitor monitor;
+ static IWorkspace workspace;
+ static IProject project;
+ static ICProject cPrj;
+ static FileManager fileManager;
+ static boolean disabledHelpContributions = false;
+
+ void initProject() {
+ if (project != null) {
+ return;
+ }
+ //(CCorePlugin.getDefault().getCoreModel().getIndexManager()).reset();
+ monitor = new NullProgressMonitor();
+
+ workspace = ResourcesPlugin.getWorkspace();
+
+ try {
+ cPrj = CProjectHelper.createCProject("CSelectionTestsNoIndexerProject", "bin", IPDOMManager.ID_NO_INDEXER); //$NON-NLS-1$ //$NON-NLS-2$
+ project = cPrj.getProject();
+ } catch (CoreException e) {
+ /*boo*/
+ }
+ if (project == null)
+ fail("Unable to create project"); //$NON-NLS-1$
+
+ //Create file manager
+ fileManager = new FileManager();
+ }
+
+ public CSelectionNoIndexerTests() {
+ super();
+ }
+
+ /**
+ * @param name
+ */
+ public CSelectionNoIndexerTests(String name) {
+ super(name);
+ }
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(CSelectionNoIndexerTests.class);
+ suite.addTest(new CSelectionNoIndexerTests("cleanupProject")); //$NON-NLS-1$
+ return suite;
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ OpenDeclarationsAction.sDisallowAmbiguousInput = true;
+ initProject();
+ }
+
+ public void cleanupProject() throws Exception {
+ try {
+ closeAllEditors();
+ CProjectHelper.delete(cPrj);
+ project = null;
+ } finally {
+ project = null;
+ }
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ if (project == null || !project.exists())
+ return;
+
+ closeAllEditors();
+
+ IResource[] members = project.members();
+ for (IResource member : members) {
+ if (member.getName().equals(".project") || member.getName().equals(".cproject")) //$NON-NLS-1$ //$NON-NLS-2$
+ continue;
+ if (member.getName().equals(".settings"))
+ continue;
+ try {
+ member.delete(true, monitor);
+ } catch (Throwable e) {
+ /*boo*/
+ }
+ }
+ }
+
+ protected IFile importFile(String fileName, String contents) throws Exception {
+ //Obtain file handle
+ IFile file = project.getProject().getFile(fileName);
+
+ InputStream stream = new ByteArrayInputStream(contents.getBytes());
+ //Create file input stream
+ if (file.exists())
+ file.setContents(stream, false, false, monitor);
+ else
+ file.create(stream, false, monitor);
+
+ fileManager.addFile(file);
+
+ return file;
+ }
+
+ protected IFile importFileWithLink(String fileName, String contents) throws Exception {
+ //Obtain file handle
+ IFile file = project.getProject().getFile(fileName);
+
+ IPath location = new Path(project.getLocation().removeLastSegments(1).toOSString() + File.separator + fileName);
+
+ File linkFile = new File(location.toOSString());
+ if (!linkFile.exists()) {
+ linkFile.createNewFile();
+ }
+
+ file.createLink(location, IResource.ALLOW_MISSING_LOCAL, null);
+
+ InputStream stream = new ByteArrayInputStream(contents.getBytes());
+ //Create file input stream
+ if (file.exists())
+ file.setContents(stream, false, false, monitor);
+ else
+ file.create(stream, false, monitor);
+
+ fileManager.addFile(file);
+
+ return file;
+ }
+
+ protected IFile importFileInsideLinkedFolder(String fileName, String contents, String folderName) throws Exception {
+ IFolder linkedFolder = project.getFolder(folderName);
+ IPath folderLocation = new Path(
+ project.getLocation().toOSString() + File.separator + folderName + "_this_is_linked"); //$NON-NLS-1$
+ IFolder actualFolder = project.getFolder(folderName + "_this_is_linked"); //$NON-NLS-1$
+ if (!actualFolder.exists())
+ actualFolder.create(true, true, monitor);
+
+ linkedFolder.createLink(folderLocation, IResource.NONE, monitor);
+
+ actualFolder.delete(true, false, monitor);
+
+ IFile file = linkedFolder.getFile(fileName);
+
+ InputStream stream = new ByteArrayInputStream(contents.getBytes());
+ //Create file input stream
+ if (file.exists())
+ file.setContents(stream, false, false, monitor);
+ else
+ file.create(stream, false, monitor);
+
+ fileManager.addFile(file);
+
+ return file;
+ }
+
+ protected IFile importFileWithLink(String fileName, String contents, IFolder folder) throws Exception {
+ if (!folder.exists())
+ folder.create(true, true, null);
+
+ //Obtain file handle
+ IFile file = project.getProject().getFile(fileName);
+
+ IPath location = new Path(folder.getLocation().toOSString() + File.separator + fileName);
+
+ File linkFile = new File(location.toOSString());
+ if (!linkFile.exists()) {
+ linkFile.createNewFile();
+ }
+
+ file.createLink(location, IResource.ALLOW_MISSING_LOCAL, null);
+
+ InputStream stream = new ByteArrayInputStream(contents.getBytes());
+ //Create file input stream
+ if (file.exists())
+ file.setContents(stream, false, false, monitor);
+ else
+ file.create(stream, false, monitor);
+
+ fileManager.addFile(file);
+
+ return file;
+ }
+
+ protected IFolder importFolder(String folderName) throws Exception {
+ IFolder folder = project.getProject().getFolder(folderName);
+
+ //Create file input stream
+ if (!folder.exists())
+ folder.create(false, false, monitor);
+
+ return folder;
+ }
+
+ public void testBasicDefinition() throws Exception {
+ StringBuilder buffer = new StringBuilder();
+ buffer.append("extern int MyInt; // def is in another file \n"); //$NON-NLS-1$
+ buffer.append("extern const int MyConst; // def is in another file \n"); //$NON-NLS-1$
+ buffer.append("void MyFunc(int); // often used in header files\n"); //$NON-NLS-1$
+ buffer.append("struct MyStruct; // often used in header files\n"); //$NON-NLS-1$
+ buffer.append("typedef int NewInt; // a normal typedef statement\n"); //$NON-NLS-1$
+ buffer.append(" \n"); //$NON-NLS-1$
+ buffer.append("int MyInt;\n"); //$NON-NLS-1$
+ buffer.append("extern const int MyConst = 42;\n"); //$NON-NLS-1$
+ buffer.append("void MyFunc(int a) { cout << a << endl; }\n"); //$NON-NLS-1$
+ buffer.append("struct MyStruct { int Member1; int Member2; };\n"); //$NON-NLS-1$
+
+ String code = buffer.toString();
+ IFile file = importFile("testBasicDefinition.c", code); //$NON-NLS-1$
+
+ int offset = code.indexOf("MyInt") + 2; //$NON-NLS-1$
+ int defOffset = code.indexOf("MyInt", offset) + 2; //$NON-NLS-1$
+ IASTNode def = testF3(file, offset);
+ IASTNode decl = testF3(file, defOffset);
+ assertTrue(def instanceof IASTName);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("MyInt", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(11, ((ASTNode) decl).getOffset());
+ assertEquals(5, ((ASTNode) decl).getLength());
+ assertEquals("MyInt", ((IASTName) def).toString()); //$NON-NLS-1$
+ assertEquals(330, ((ASTNode) def).getOffset());
+ assertEquals(5, ((ASTNode) def).getLength());
+
+ offset = code.indexOf("MyConst") + 2;
+ defOffset = code.indexOf("MyConst", offset) + 2;
+ def = testF3(file, offset);
+ decl = testF3(file, defOffset);
+ assertTrue(def instanceof IASTName);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("MyConst", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(69, ((ASTNode) decl).getOffset());
+ assertEquals(7, ((ASTNode) decl).getLength());
+ assertEquals("MyConst", ((IASTName) def).toString()); //$NON-NLS-1$
+ assertEquals(354, ((ASTNode) def).getOffset());
+ assertEquals(7, ((ASTNode) def).getLength());
+
+ offset = code.indexOf("MyFunc") + 2;
+ defOffset = code.indexOf("MyFunc", offset) + 2;
+ def = testF3(file, offset);
+ decl = testF3(file, defOffset);
+ assertTrue(def instanceof IASTName);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("MyFunc", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(115, ((ASTNode) decl).getOffset());
+ assertEquals(6, ((ASTNode) decl).getLength());
+ assertEquals("MyFunc", ((IASTName) def).toString()); //$NON-NLS-1$
+ assertEquals(373, ((ASTNode) def).getOffset());
+ assertEquals(6, ((ASTNode) def).getLength());
+
+ offset = code.indexOf("MyStruct") + 2;
+ defOffset = code.indexOf("MyStruct", offset) + 2;
+ def = testF3(file, offset);
+ decl = testF3(file, defOffset);
+ assertTrue(def instanceof IASTName);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("MyStruct", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(417, ((ASTNode) decl).getOffset());
+ assertEquals(8, ((ASTNode) decl).getLength());
+ assertEquals("MyStruct", ((IASTName) def).toString()); //$NON-NLS-1$
+ assertEquals(417, ((ASTNode) def).getOffset());
+ assertEquals(8, ((ASTNode) def).getLength());
+ }
+
+ // taken from C++ spec 3.1-3:
+ /*
+ // all but one of the following are definitions:
+ int a; // defines a
+ extern const int c = 1; // defines c
+ int f(int x) { return x+a; } // defines f and defines x
+ struct S { int a; int b; }; // defines S, S::a, and S::b
+ struct X { // defines X
+ int x; // defines nonstatic data member x
+ };
+ enum { up, down }; // defines up and down
+ struct X anX; // defines anX
+ // whereas these are just declarations:
+ extern int a; // declares a
+ extern const int c; // declares c
+ int f(int); // declares f
+ struct S; // declares S
+ typedef int Int; // declares Int
+ extern struct X anotherX; // declares anotherX
+ */
+ public void testCPPSpecDeclsDefs() throws Exception {
+ StringBuilder buffer = new StringBuilder();
+ buffer.append("int a; // defines a\n"); //$NON-NLS-1$
+ buffer.append("extern const int c = 1; // defines c\n"); //$NON-NLS-1$
+ buffer.append("int f(int x) { return x+a; } // defines f and defines x\n"); //$NON-NLS-1$
+ buffer.append("struct S { int a; int b; }; // defines S, S::a, and S::b\n"); //$NON-NLS-1$
+ buffer.append("struct X { // defines X\n"); //$NON-NLS-1$
+ buffer.append("int x; // defines nonstatic data member x\n"); //$NON-NLS-1$
+ buffer.append(" \n"); //$NON-NLS-1$
+ buffer.append(" \n"); //$NON-NLS-1$
+ buffer.append("};\n"); //$NON-NLS-1$
+ buffer.append(" "); //$NON-NLS-1$
+ buffer.append("enum { up, down }; // defines up and down\n"); //$NON-NLS-1$
+ buffer.append(" \n"); //$NON-NLS-1$
+ buffer.append(" \n"); //$NON-NLS-1$
+ buffer.append("struct X anX; // defines anX\n"); //$NON-NLS-1$
+ buffer.append("extern int a; // declares a\n"); //$NON-NLS-1$
+ buffer.append("extern const int c; // declares c\n"); //$NON-NLS-1$
+ buffer.append("int f(int y); // declar f\n"); //$NON-NLS-1$
+ buffer.append("struct S; // declares S\n"); //$NON-NLS-1$
+ buffer.append("typedef int Int; // declares Int\n"); //$NON-NLS-1$
+ buffer.append("extern struct X anotherX; // declares anotherX\n"); //$NON-NLS-1$
+
+ String code = buffer.toString();
+ IFile file = importFile("testCPPSpecDeclsDefs.c", code); //$NON-NLS-1$
+
+ int offset = code.indexOf("a; // defines a"); //$NON-NLS-1$
+ IASTNode decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("a", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(512, ((ASTNode) decl).getOffset());
+ assertEquals(1, ((ASTNode) decl).getLength());
+
+ offset = code.indexOf("c = 1; // defines c"); //$NON-NLS-1$
+ decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("c", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(546, ((ASTNode) decl).getOffset());
+ assertEquals(1, ((ASTNode) decl).getLength());
+
+ offset = code.indexOf("f(int x) { return x+a; } // defines f and defines x"); //$NON-NLS-1$
+ decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("f", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(567, ((ASTNode) decl).getOffset());
+ assertEquals(1, ((ASTNode) decl).getLength());
+
+ offset = code.indexOf("x) { return x+a; } // defines f and defines x"); //$NON-NLS-1$
+ decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("x", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(67, ((ASTNode) decl).getOffset());
+ assertEquals(1, ((ASTNode) decl).getLength());
+
+ offset = code.indexOf("x+a; } // defines f and defines x"); //$NON-NLS-1$
+ decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("x", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(67, ((ASTNode) decl).getOffset());
+ assertEquals(1, ((ASTNode) decl).getLength());
+
+ offset = code.indexOf("x+a; } // defines f and defines x"); //$NON-NLS-1$
+ decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("x", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(67, ((ASTNode) decl).getOffset());
+ assertEquals(1, ((ASTNode) decl).getLength());
+
+ offset = code.indexOf("a; } // defines f and defines x"); //$NON-NLS-1$
+ decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("a", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(4, ((ASTNode) decl).getOffset());
+ assertEquals(1, ((ASTNode) decl).getLength());
+
+ offset = code.indexOf("S { int a; int b; }; // defines S, S::a, and S::b"); //$NON-NLS-1$
+ decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("S", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(120, ((ASTNode) decl).getOffset());
+ assertEquals(1, ((ASTNode) decl).getLength());
+
+ offset = code.indexOf("a; int b; }; // defines S, S::a, and S::b"); //$NON-NLS-1$
+ decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("a", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(128, ((ASTNode) decl).getOffset());
+ assertEquals(1, ((ASTNode) decl).getLength());
+
+ offset = code.indexOf("b; }; // defines S, S::a, and S::b"); //$NON-NLS-1$
+ decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("b", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(135, ((ASTNode) decl).getOffset());
+ assertEquals(1, ((ASTNode) decl).getLength());
+
+ offset = code.indexOf("X { // defines X"); //$NON-NLS-1$
+ decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("X", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(177, ((ASTNode) decl).getOffset());
+ assertEquals(1, ((ASTNode) decl).getLength());
+
+ offset = code.indexOf("x; // defines nonstatic data member x"); //$NON-NLS-1$
+ decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("x", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(198, ((ASTNode) decl).getOffset());
+ assertEquals(1, ((ASTNode) decl).getLength());
+
+ offset = code.indexOf("up, down }; // defines up and down"); //$NON-NLS-1$
+ decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("up", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(367, ((ASTNode) decl).getOffset());
+ assertEquals(2, ((ASTNode) decl).getLength());
+
+ offset = code.indexOf("down }; // defines up and down"); //$NON-NLS-1$
+ decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("down", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(371, ((ASTNode) decl).getOffset());
+ assertEquals(4, ((ASTNode) decl).getLength());
+
+ IASTNode def;
+ offset = code.indexOf("X anX; // defines anX"); //$NON-NLS-1$
+ def = testF3(file, offset);
+ assertTrue(def instanceof IASTName);
+ assertEquals("X", ((IASTName) def).toString()); //$NON-NLS-1$
+ assertEquals(177, ((ASTNode) def).getOffset());
+ assertEquals(1, ((ASTNode) def).getLength());
+
+ offset = code.indexOf("anX; // defines anX"); //$NON-NLS-1$
+ decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("anX", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(481, ((ASTNode) decl).getOffset());
+ assertEquals(3, ((ASTNode) decl).getLength());
+
+ offset = code.indexOf("a; // declares a"); //$NON-NLS-1$
+ def = testF3(file, offset);
+ assertTrue(def instanceof IASTName);
+ assertEquals("a", ((IASTName) def).toString()); //$NON-NLS-1$
+ assertEquals(4, ((ASTNode) def).getOffset());
+ assertEquals(1, ((ASTNode) def).getLength());
+
+ offset = code.indexOf("c; // declares c"); //$NON-NLS-1$
+ def = testF3(file, offset);
+ assertTrue(def instanceof IASTName);
+ assertEquals("c", ((IASTName) def).toString()); //$NON-NLS-1$
+ assertEquals(37, ((ASTNode) def).getOffset());
+ assertEquals(1, ((ASTNode) def).getLength());
+
+ offset = code.indexOf("f(int y); // declar f"); //$NON-NLS-1$
+ def = testF3(file, offset);
+ assertTrue(def instanceof IASTName);
+ assertEquals("f", ((IASTName) def).toString()); //$NON-NLS-1$
+ assertEquals(61, ((ASTNode) def).getOffset());
+ assertEquals(1, ((ASTNode) def).getLength());
+
+ offset = code.indexOf("S; // declares S"); //$NON-NLS-1$
+ def = testF3(file, offset);
+ assertTrue(def instanceof IASTName);
+ assertEquals("S", ((IASTName) def).toString()); //$NON-NLS-1$
+ assertEquals(120, ((ASTNode) def).getOffset());
+ assertEquals(1, ((ASTNode) def).getLength());
+
+ offset = code.indexOf("Int; // declares Int"); //$NON-NLS-1$
+ decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("Int", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(625, ((ASTNode) decl).getOffset());
+ assertEquals(3, ((ASTNode) decl).getLength());
+
+ offset = code.indexOf("X anotherX; // declares anotherX"); //$NON-NLS-1$
+ def = testF3(file, offset);
+ assertTrue(def instanceof IASTName);
+ assertEquals("X", ((IASTName) def).toString()); //$NON-NLS-1$
+ assertEquals(177, ((ASTNode) def).getOffset());
+ assertEquals(1, ((ASTNode) def).getLength());
+
+ offset = code.indexOf("anotherX; // declares anotherX"); //$NON-NLS-1$
+ decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("anotherX", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(662, ((ASTNode) decl).getOffset());
+ assertEquals(8, ((ASTNode) decl).getLength());
+ }
+
+ public void testNoDefinitions() throws Exception {
+ StringBuilder buffer = new StringBuilder();
+ buffer.append("extern int a1; // declares a\n"); //$NON-NLS-1$
+ buffer.append("extern const int c1; // declares c\n"); //$NON-NLS-1$
+ buffer.append("int f1(int); // declares f\n"); //$NON-NLS-1$
+ buffer.append("struct S1; // declares S\n"); //$NON-NLS-1$
+ buffer.append("typedef int Int; // declares Int\n"); //$NON-NLS-1$
+
+ String code = buffer.toString();
+ IFile file = importFile("testNoDefinitions.c", code); //$NON-NLS-1$
+
+ int offset = code.indexOf("a1; // declares a"); //$NON-NLS-1$
+ IASTNode decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("a1", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(11, ((ASTNode) decl).getOffset());
+ assertEquals(2, ((ASTNode) decl).getLength());
+
+ offset = code.indexOf("c1; // declares c"); //$NON-NLS-1$
+ decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("c1", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(46, ((ASTNode) decl).getOffset());
+ assertEquals(2, ((ASTNode) decl).getLength());
+
+ offset = code.indexOf("f1(int); // declares f"); //$NON-NLS-1$
+ decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("f1", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(68, ((ASTNode) decl).getOffset());
+ assertEquals(2, ((ASTNode) decl).getLength());
+
+ offset = code.indexOf("S1; // declares S"); //$NON-NLS-1$
+ decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("S1", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(98, ((ASTNode) decl).getOffset());
+ assertEquals(2, ((ASTNode) decl).getLength());
+
+ offset = code.indexOf("Int; // declares Int"); //$NON-NLS-1$
+ decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("Int", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(128, ((ASTNode) decl).getOffset());
+ assertEquals(3, ((ASTNode) decl).getLength());
+ }
+
+ public void testBug103697() throws Exception {
+ StringBuilder buffer = new StringBuilder();
+ buffer.append("int x;\n"); //$NON-NLS-1$
+ buffer.append("int foo() {\n"); //$NON-NLS-1$
+ buffer.append(" return x;\n"); //$NON-NLS-1$
+ buffer.append("}\n"); //$NON-NLS-1$
+
+ String code = buffer.toString();
+ IFile file = importFileWithLink("testBug103697.cpp", code); //$NON-NLS-1$
+
+ int offset = code.indexOf("return x;\n") + "return ".length(); //$NON-NLS-1$ //$NON-NLS-2$
+ IASTNode decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("x", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(4, ((ASTNode) decl).getOffset());
+ assertEquals(1, ((ASTNode) decl).getLength());
+ }
+
+ public void testBug76043() throws Exception {
+ StringBuilder buffer = new StringBuilder();
+ buffer.append("int x;\n"); //$NON-NLS-1$
+ buffer.append("int foo() {\n"); //$NON-NLS-1$
+ buffer.append(" return x;\n"); //$NON-NLS-1$
+ buffer.append("}\n"); //$NON-NLS-1$
+ String code = buffer.toString();
+
+ IFile file = importFileInsideLinkedFolder("testBug76043.c", code, "folder"); //$NON-NLS-1$ //$NON-NLS-2$
+
+ assertFalse(file.isLinked()); // I'm not sure why the IResource#isLinked() returns false if it's contained within a linked folder
+
+ int offset = code.indexOf("return x;\n") + "return ".length(); //$NON-NLS-1$ //$NON-NLS-2$
+ IASTNode decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("x", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(4, ((ASTNode) decl).getOffset());
+ assertEquals(1, ((ASTNode) decl).getLength());
+ }
+
+ public void testBug78354() throws Exception {
+ StringBuilder buffer = new StringBuilder();
+ buffer.append("typedef int TestTypeOne;\n"); //$NON-NLS-1$
+ buffer.append("typedef int TestTypeTwo;\n"); //$NON-NLS-1$
+ buffer.append("int main()\n"); //$NON-NLS-1$
+ buffer.append("{\n"); //$NON-NLS-1$
+ buffer.append("TestTypeOne myFirstLink = 5;\n"); //$NON-NLS-1$
+ buffer.append("TestTypeTwo mySecondLink = 6;\n"); //$NON-NLS-1$
+ buffer.append("return 0;\n"); //$NON-NLS-1$
+ buffer.append("}\n"); //$NON-NLS-1$
+
+ String code = buffer.toString();
+ IFile file = importFileWithLink("testBug78354.cpp", code); //$NON-NLS-1$
+
+ int offset = code.indexOf("TestTypeOne myFirstLink = 5;"); //$NON-NLS-1$
+ IASTNode decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ assertEquals("TestTypeOne", ((IASTName) decl).toString()); //$NON-NLS-1$
+ assertEquals(12, ((ASTNode) decl).getOffset());
+ assertEquals(11, ((ASTNode) decl).getLength());
+ }
+
+ // int myFunc(var)
+ // int var;
+ // {
+ // return var;
+ // }
+ //
+ // int main(void)
+ // {
+ // return myFunc(0);
+ // }
+ public void testKRstyleFunctions_Bug221635() throws Exception {
+ String code = getContentsForTest(1)[0].toString();
+ IFile file = importFile("source.c", code);
+ int offset = code.indexOf("myFunc(0)");
+ IASTNode decl = testF3(file, offset);
+ assertTrue(decl instanceof IASTName);
+ final IASTName name = (IASTName) decl;
+ assertTrue(name.isDefinition());
+ assertEquals("myFunc", name.toString());
+ }
+}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selection/CSelectionTestsIndexer.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selection/CSelectionTestsIndexer.java
deleted file mode 100644
index e0884819704..00000000000
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selection/CSelectionTestsIndexer.java
+++ /dev/null
@@ -1,565 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2015 Wind River Systems, Inc. and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Markus Schorn - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.ui.tests.text.selection;
-
-import java.io.IOException;
-
-import org.eclipse.cdt.core.CCorePlugin;
-import org.eclipse.cdt.core.dom.IPDOMManager;
-import org.eclipse.cdt.core.dom.ast.IASTFileLocation;
-import org.eclipse.cdt.core.dom.ast.IASTName;
-import org.eclipse.cdt.core.dom.ast.IASTNode;
-import org.eclipse.cdt.core.index.IIndex;
-import org.eclipse.cdt.core.model.ICProject;
-import org.eclipse.cdt.core.testplugin.CProjectHelper;
-import org.eclipse.cdt.core.testplugin.util.TestSourceReader;
-import org.eclipse.cdt.internal.core.dom.parser.ASTNode;
-import org.eclipse.cdt.ui.testplugin.CTestPlugin;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.part.FileEditorInput;
-
-import junit.framework.Test;
-
-public class CSelectionTestsIndexer extends BaseSelectionTestsIndexer {
- private String sourceIndexerID;
- private IIndex index;
-
- public CSelectionTestsIndexer(String name) {
- super(name);
- sourceIndexerID = IPDOMManager.ID_FAST_INDEXER;
- }
-
- public static Test suite() {
- return suite(CSelectionTestsIndexer.class);
- }
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
-
- //Create temp project
- fCProject = createProject("CSelectionTestsDOMIndexerProject"); //$NON-NLS-1$
- assertNotNull("Unable to create project", fCProject);
-
- CCorePlugin.getIndexManager().setIndexerId(fCProject, sourceIndexerID);
- index = CCorePlugin.getIndexManager().getIndex(fCProject);
- }
-
- @Override
- protected void tearDown() throws Exception {
- closeAllEditors();
- CProjectHelper.delete(fCProject);
- super.tearDown();
- }
-
- private ICProject createProject(String projectName) throws CoreException {
- ICProject cPrj = CProjectHelper.createCProject(projectName, "bin", IPDOMManager.ID_NO_INDEXER); //$NON-NLS-1$
- return cPrj;
- }
-
- protected StringBuilder[] getContents(int sections) throws IOException {
- return TestSourceReader.getContentsForTest(CTestPlugin.getDefault().getBundle(), "ui",
- CSelectionTestsIndexer.class, getName(), sections);
- }
-
- private void assertNode(String name, int offset, IASTNode node) {
- assertNotNull(node);
- assertEquals(node.toString(), name);
- IASTFileLocation loc = node.getFileLocation();
- assertEquals(offset, loc.getNodeOffset());
- assertEquals(name.length(), loc.getNodeLength());
- }
-
- // // the header
- // extern int MyInt; // MyInt is in another file
- // extern const int MyConst; // MyConst is in another file
- // void MyFunc(int); // often used in header files
- // typedef int NewInt; // a normal typedef statement
- // struct MyStruct { int Member1; int Member2; };
-
- // #include "basicDefinition.h"
- // int MyInt;
- // extern const int MyConst = 42;
- // void MyFunc(int a) { cout << a << endl; }
- // struct MyStruct;
- public void testBasicDefinition() throws Exception {
- StringBuilder[] buffers = getContents(2);
- String hcode = buffers[0].toString();
- String scode = buffers[1].toString();
- IFile hfile = importFile("basicDefinition.h", hcode);
- IFile file = importFile("testBasicDefinition.c", scode);
- TestSourceReader.waitUntilFileIsIndexed(index, file, INDEXER_TIMEOUT_SEC * 1000);
-
- int hoffset = hcode.indexOf("MyInt");
- int soffset = scode.indexOf("MyInt");
- IASTNode decl = testF3(file, soffset + 2);
- IASTNode def = testF3(hfile, hoffset + 2);
- assertTrue(def instanceof IASTName);
- assertTrue(decl instanceof IASTName);
- assertEquals("MyInt", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(hoffset, ((ASTNode) decl).getOffset());
- assertEquals(5, ((ASTNode) decl).getLength());
- assertEquals("MyInt", ((IASTName) def).toString()); //$NON-NLS-1$
- assertEquals(soffset, def.getFileLocation().getNodeOffset());
- assertEquals(5, ((ASTNode) def).getLength());
-
- hoffset = hcode.indexOf("MyConst");
- soffset = scode.indexOf("MyConst");
- decl = testF3(file, soffset + 2);
- def = testF3(hfile, hoffset + 2);
- assertTrue(def instanceof IASTName);
- assertTrue(decl instanceof IASTName);
- assertEquals("MyConst", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(hoffset, ((ASTNode) decl).getOffset());
- assertEquals(7, ((ASTNode) decl).getLength());
- assertEquals("MyConst", ((IASTName) def).toString()); //$NON-NLS-1$
- assertEquals(soffset, def.getFileLocation().getNodeOffset());
- assertEquals(7, ((ASTNode) def).getLength());
-
- hoffset = hcode.indexOf("MyFunc");
- soffset = scode.indexOf("MyFunc");
- decl = testF3(file, soffset + 2);
- def = testF3(hfile, hoffset + 2);
- assertTrue(def instanceof IASTName);
- assertTrue(decl instanceof IASTName);
- assertEquals("MyFunc", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(hoffset, ((ASTNode) decl).getOffset());
- assertEquals(6, ((ASTNode) decl).getLength());
- assertEquals("MyFunc", ((IASTName) def).toString()); //$NON-NLS-1$
- assertEquals(soffset, def.getFileLocation().getNodeOffset());
- assertEquals(6, ((ASTNode) def).getLength());
-
- hoffset = hcode.indexOf("MyStruct");
- soffset = scode.indexOf("MyStruct");
- decl = testF3(file, soffset + 2);
- def = testF3(hfile, hoffset + 2);
- assertTrue(def instanceof IASTName);
- assertTrue(decl instanceof IASTName);
- assertEquals("MyStruct", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(hoffset, ((ASTNode) decl).getOffset());
- assertEquals(8, ((ASTNode) decl).getLength());
- assertEquals("MyStruct", ((IASTName) def).toString()); //$NON-NLS-1$
- assertEquals(hoffset, def.getFileLocation().getNodeOffset());
- assertEquals(8, ((ASTNode) def).getLength());
- }
-
- // // the header
- // extern int a; // declares
- // extern const int c = 1; // defines
- // struct S {int a; int b;}; // defines
- // struct X { // defines
- // int x; // defines nonstatic data member
- // };
- // enum E {up, down}; // defines
- // int f(int); // declares
- // extern struct X anotherX; // declares
-
- // #include "testCPPSpecDeclsDefs.h"
- // int a; // defines
- // struct X anX; // defines
- // extern const int c; // declares
- // int f(int x) {return x+a;} // defines
- // struct S; // declares
- // typedef int Int; // declares
- // struct S s;
- // Int lhs= s.a+s.b+up+down+anX+0;
- public void testCPPSpecDeclsDefs() throws Exception {
- StringBuilder[] buffers = getContents(2);
- String hcode = buffers[0].toString();
- String scode = buffers[1].toString();
- IFile hfile = importFile("testCPPSpecDeclsDefs.h", hcode);
- IFile file = importFile("testCPPSpecDeclsDefs.c", scode);
- TestSourceReader.waitUntilFileIsIndexed(index, file, INDEXER_TIMEOUT_SEC * 1000);
-
- int offset0 = hcode.indexOf("a;");
- int offset1 = scode.indexOf("a;");
- IASTNode decl = testF3(hfile, offset0);
- assertNode("a", offset1, decl);
- decl = testF3(file, offset1);
- assertNode("a", offset0, decl);
-
- offset0 = hcode.indexOf("int c") + 4;
- offset1 = scode.indexOf("int c") + 4;
- decl = testF3(hfile, offset0);
- assertNode("c", offset1, decl);
- decl = testF3(file, offset1);
- assertNode("c", offset0, decl);
-
- offset0 = hcode.indexOf("f(int");
- offset1 = scode.indexOf("f(int");
- decl = testF3(hfile, offset0);
- assertNode("f", offset1, decl);
- decl = testF3(file, offset1);
- assertNode("f", offset0, decl);
-
- offset0 = scode.indexOf("x)");
- decl = testF3(file, offset0);
- assertNode("x", offset0, decl);
-
- offset1 = scode.indexOf("x+a");
- decl = testF3(file, offset1);
- assertNode("x", offset0, decl);
-
- offset0 = scode.indexOf("a;");
- offset1 = scode.indexOf("a;}");
- decl = testF3(file, offset1);
- assertNode("a", offset0, decl);
-
- offset0 = hcode.indexOf("S");
- offset1 = scode.indexOf("S;");
- int offset2 = scode.indexOf("S", offset1);
- decl = testF3(hfile, offset0);
- assertNode("S", offset0, decl);
- decl = testF3(file, offset1);
- assertNode("S", offset0, decl);
- decl = testF3(file, offset2);
- assertNode("S", offset0, decl);
-
- offset0 = hcode.indexOf("a; int b;};");
- offset1 = scode.indexOf("a+s.b");
- decl = testF3(hfile, offset0);
- assertNode("a", offset0, decl);
- decl = testF3(file, offset1);
- assertNode("a", offset0, decl);
-
- offset0 = hcode.indexOf("b;};");
- offset1 = scode.indexOf("s.b") + 2;
- decl = testF3(hfile, offset0);
- assertNode("b", offset0, decl);
- decl = testF3(file, offset1);
- assertNode("b", offset0, decl);
-
- offset0 = hcode.indexOf("X");
- offset1 = scode.indexOf("X");
- decl = testF3(hfile, offset0);
- assertNode("X", offset0, decl);
- decl = testF3(file, offset1);
- assertNode("X", offset0, decl);
-
- offset0 = hcode.indexOf("x;");
- decl = testF3(hfile, offset0);
- assertNode("x", offset0, decl);
-
- offset0 = hcode.indexOf("up");
- offset1 = scode.indexOf("up");
- decl = testF3(hfile, offset0);
- assertNode("up", offset0, decl);
- decl = testF3(file, offset1);
- assertNode("up", offset0, decl);
-
- offset0 = hcode.indexOf("down");
- offset1 = scode.indexOf("down");
- decl = testF3(hfile, offset0);
- assertNode("down", offset0, decl);
- decl = testF3(file, offset1);
- assertNode("down", offset0, decl);
-
- offset0 = scode.indexOf("anX");
- offset1 = scode.indexOf("anX", offset0 + 1);
- decl = testF3(file, offset0);
- assertNode("anX", offset0, decl);
- decl = testF3(file, offset1);
- assertNode("anX", offset0, decl);
-
- offset0 = scode.indexOf("Int");
- offset1 = scode.indexOf("Int", offset0 + 1);
- decl = testF3(file, offset0);
- assertNode("Int", offset0, decl);
- decl = testF3(file, offset1);
- assertNode("Int", offset0, decl);
- }
-
- // extern int abc;
-
- // #include "testBug101287.h"
- // int main(int argc, char **argv) {
- // abc;
- // }
- public void testBug101287() throws Exception {
- StringBuilder[] buffers = getContents(2);
- String hcode = buffers[0].toString();
- String scode = buffers[1].toString();
- IFile hfile = importFile("testBug101287.h", hcode);
- IFile file = importFile("testBug101287.c", scode);
- TestSourceReader.waitUntilFileIsIndexed(index, file, INDEXER_TIMEOUT_SEC * 1000);
- IASTNode decl;
- int offset0, offset1;
-
- offset0 = hcode.indexOf("abc");
- offset1 = scode.indexOf("abc");
- decl = testF3(hfile, offset0);
- assertNode("abc", offset0, decl);
- decl = testF3(file, offset1);
- assertNode("abc", offset0, decl);
- }
-
- // int x;
-
- // #include "testBug103697.h"
- // int foo() {
- // return x;
- // }
- public void testBug103697() throws Exception {
- StringBuilder[] buffers = getContents(2);
- String hcode = buffers[0].toString();
- String scode = buffers[1].toString();
- IFile hfile = importFileWithLink("testBug103697.h", hcode);
- IFile file = importFileWithLink("testBug103697.c", scode);
- TestSourceReader.waitUntilFileIsIndexed(index, file, INDEXER_TIMEOUT_SEC * 1000);
- IASTNode decl;
- int offset0, offset1;
-
- offset0 = hcode.indexOf("x");
- offset1 = scode.indexOf("x");
- decl = testF3(hfile, offset0);
- assertNode("x", offset0, decl);
- decl = testF3(file, offset1);
- assertNode("x", offset0, decl);
- }
-
- // typedef int TestTypeOne;
- // typedef int TestTypeTwo;
-
- // #include "testBug78354.h"
- // main()
- // {
- // TestTypeOne myFirstLink = 5;
- // TestTypeTwo mySecondLink = 6;
- // return 0;
- // }
- public void testBug78354() throws Exception {
- StringBuilder[] buffers = getContents(2);
- String hcode = buffers[0].toString();
- String scode = buffers[1].toString();
- IFile hfile = importFile("testBug78354.h", hcode);
- IFile file = importFile("testBug78354.c", scode);
- TestSourceReader.waitUntilFileIsIndexed(index, file, INDEXER_TIMEOUT_SEC * 1000);
- IASTNode decl;
- int offset0, offset1;
-
- offset0 = hcode.indexOf("TestTypeOne");
- offset1 = scode.indexOf("TestTypeOne");
- decl = testF3(hfile, offset0);
- assertNode("TestTypeOne", offset0, decl);
- decl = testF3(file, offset1);
- assertNode("TestTypeOne", offset0, decl);
-
- offset0 = hcode.indexOf("TestTypeTwo");
- offset1 = scode.indexOf("TestTypeTwo");
- decl = testF3(hfile, offset0);
- assertNode("TestTypeTwo", offset0, decl);
- decl = testF3(file, offset1);
- assertNode("TestTypeTwo", offset0, decl);
- }
-
- // typedef struct {
- // int a;
- // } usertype;
- // void func(usertype t);
-
- // #include "testBug190730.h"
- // void func(usertype t) {
- // }
- public void testFuncWithTypedefForAnonymousStruct_190730() throws Exception {
- StringBuilder[] buffers = getContents(2);
- String hcode = buffers[0].toString();
- String scode = buffers[1].toString();
- IFile hfile = importFile("testBug190730.h", hcode);
- IFile file = importFile("testBug190730.c", scode);
- TestSourceReader.waitUntilFileIsIndexed(index, file, INDEXER_TIMEOUT_SEC * 1000);
- IASTNode decl;
- int offset0, offset1;
-
- offset0 = hcode.indexOf("func");
- offset1 = scode.indexOf("func");
- decl = testF3(hfile, offset0);
- assertNode("func", offset1, decl);
- decl = testF3(file, offset1);
- assertNode("func", offset0, decl);
- }
-
- // typedef enum {
- // int eitem
- // } userEnum;
- // void func(userEnum t);
-
- // #include "testBug190730_2.h"
- // void func(userEnum t) {
- // }
- public void testFuncWithTypedefForAnonymousEnum_190730() throws Exception {
- StringBuilder[] buffers = getContents(2);
- String hcode = buffers[0].toString();
- String scode = buffers[1].toString();
- IFile hfile = importFile("testBug190730_2.h", hcode);
- IFile file = importFile("testBug190730_2.c", scode);
- TestSourceReader.waitUntilFileIsIndexed(index, file, INDEXER_TIMEOUT_SEC * 1000);
- IASTNode decl;
- int offset0, offset1;
-
- offset0 = hcode.indexOf("func");
- offset1 = scode.indexOf("func");
- decl = testF3(hfile, offset0);
- assertNode("func", offset1, decl);
- decl = testF3(file, offset1);
- assertNode("func", offset0, decl);
- }
-
- // #define MY_MACRO 0xDEADBEEF
- // #define MY_FUNC() 00
- // #define MY_PAR( aRef );
-
- // #include "macrodef.h"
- // int basictest(void){
- // int tester = MY_MACRO; //OK: F3 works
- // int xx= MY_FUNC();
- // MY_PAR(0);
- // }
- public void testMacroNavigation() throws Exception {
- StringBuilder[] buffers = getContents(2);
- String hcode = buffers[0].toString();
- String scode = buffers[1].toString();
- IFile hfile = importFile("macrodef.h", hcode);
- IFile file = importFile("macronavi.c", scode);
- TestSourceReader.waitUntilFileIsIndexed(index, file, INDEXER_TIMEOUT_SEC * 1000);
- IASTNode decl;
- int offset0, offset1;
-
- offset0 = hcode.indexOf("MY_MACRO");
- offset1 = scode.indexOf("MY_MACRO");
- decl = testF3(file, offset1);
- assertNode("MY_MACRO", offset0, decl);
-
- offset0 = hcode.indexOf("MY_FUNC");
- offset1 = scode.indexOf("MY_FUNC");
- decl = testF3(file, offset1);
- assertNode("MY_FUNC", offset0, decl);
-
- offset0 = hcode.indexOf("MY_PAR");
- offset1 = scode.indexOf("MY_PAR");
- decl = testF3(file, offset1);
- assertNode("MY_PAR", offset0, decl);
- }
-
- // #define MY_MACRO 0xDEADBEEF
- // #define MY_PAR( aRef ) aRef
-
- // #include "macrodef.h"
- // int basictest(void){
- // int tester = MY_PAR(MY_MACRO);
- // }
- public void testMacroNavigation_Bug208300() throws Exception {
- StringBuilder[] buffers = getContents(2);
- String hcode = buffers[0].toString();
- String scode = buffers[1].toString();
- IFile hfile = importFile("macrodef.h", hcode);
- IFile file = importFile("macronavi.c", scode);
- TestSourceReader.waitUntilFileIsIndexed(index, file, INDEXER_TIMEOUT_SEC * 1000);
- IASTNode decl;
- int offset0, offset1;
-
- offset0 = hcode.indexOf("MY_PAR");
- offset1 = scode.indexOf("MY_PAR");
- decl = testF3(file, offset1);
- assertNode("MY_PAR", offset0, decl);
-
- offset0 = hcode.indexOf("MY_MACRO");
- offset1 = scode.indexOf("MY_MACRO");
- decl = testF3(file, offset1);
- assertNode("MY_MACRO", offset0, decl);
- }
-
- // int wurscht;
-
- // #include "aheader.h"
- public void testIncludeNavigation() throws Exception {
- StringBuilder[] buffers = getContents(2);
- String hcode = buffers[0].toString();
- String scode = buffers[1].toString();
- IFile hfile = importFile("aheader.h", hcode);
- IFile file = importFile("includenavi.c", scode);
- TestSourceReader.waitUntilFileIsIndexed(index, file, INDEXER_TIMEOUT_SEC * 1000);
- IASTNode decl;
- int offset0, offset1;
-
- offset1 = scode.indexOf("aheader.h");
- testF3(file, offset1);
- IEditorPart part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
- IEditorInput input = part.getEditorInput();
- assertEquals("aheader.h", ((FileEditorInput) input).getFile().getName());
- }
-
- // #define DR_NUM_DIMENSIONS(DR) VEC_length (tree, DR_ACCESS_FNS (DR))
-
- // #define DR_ACCESS_FNS(DR)
- public void testNavigationInMacroDefinition_Bug102643() throws Exception {
- StringBuilder[] buffers = getContents(2);
- String hcode = buffers[0].toString();
- String scode = buffers[1].toString();
- IFile hfile = importFile("aheader.h", hcode);
- IFile file = importFile("source.c", scode);
- TestSourceReader.waitUntilFileIsIndexed(index, file, INDEXER_TIMEOUT_SEC * 1000);
- IASTNode decl;
- int offset0, offset1;
-
- offset1 = hcode.indexOf("DR_ACC");
- testF3(hfile, offset1);
- IEditorPart part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
- IEditorInput input = part.getEditorInput();
- assertEquals("source.c", ((FileEditorInput) input).getFile().getName());
- }
-
- // int myFunc();
-
- // int myFunc(var)
- // int var;
- // {
- // return var;
- // }
- //
- // int main(void)
- // {
- // return myFunc(0);
- // }
- public void testKRstyleFunctions_Bug221635() throws Exception {
- final StringBuilder[] contents = getContentsForTest(2);
- String hcode = contents[0].toString();
- String code = contents[1].toString();
- IFile hfile = importFile("aheader.h", hcode);
- IFile file = importFile("source.c", code);
- int offset = code.indexOf("myFunc(0)");
- TestSourceReader.waitUntilFileIsIndexed(index, file, INDEXER_TIMEOUT_SEC * 1000);
-
- IASTNode decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- final IASTName name = (IASTName) decl;
- assertTrue(name.isDefinition());
- assertEquals("myFunc", name.toString());
- }
-
- // int x= __LINE__;
- public void testBuiltinMacro_Bug293864() throws Exception {
- final StringBuilder[] contents = getContentsForTest(1);
- String code = contents[0].toString();
- IFile file = importFile("source.c", code);
- int offset = code.indexOf("__LINE__");
-
- TestSourceReader.waitUntilFileIsIndexed(index, file, INDEXER_TIMEOUT_SEC * 1000);
- // Just make sure that no NPE is thrown.
- testF3(file, offset);
- }
-}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selection/CSelectionTestsNoIndexer.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selection/CSelectionTestsNoIndexer.java
deleted file mode 100644
index b033d9b95fd..00000000000
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selection/CSelectionTestsNoIndexer.java
+++ /dev/null
@@ -1,648 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2016 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM - Initial API and implementation
- * Markus Schorn (Wind River Systems)
- * Nathan Ridge
- *******************************************************************************/
-package org.eclipse.cdt.ui.tests.text.selection;
-
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.InputStream;
-
-import org.eclipse.cdt.core.dom.IPDOMManager;
-import org.eclipse.cdt.core.dom.ast.IASTName;
-import org.eclipse.cdt.core.dom.ast.IASTNode;
-import org.eclipse.cdt.core.model.ICProject;
-import org.eclipse.cdt.core.testplugin.CProjectHelper;
-import org.eclipse.cdt.core.testplugin.FileManager;
-import org.eclipse.cdt.internal.core.dom.parser.ASTNode;
-import org.eclipse.cdt.internal.ui.search.actions.OpenDeclarationsAction;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IFolder;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IWorkspace;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.Path;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * It is required to test the selection performance independent of the indexer to make sure that the DOM is functioning properly.
- *
- * Indexer bugs can drastically influence the correctness of these tests so the indexer has to be off when performing them.
- *
- * @author dsteffle
- */
-public class CSelectionTestsNoIndexer extends BaseSelectionTests {
-
- private static final String INDEX_FILE_ID = "2324852323"; //$NON-NLS-1$
- static NullProgressMonitor monitor;
- static IWorkspace workspace;
- static IProject project;
- static ICProject cPrj;
- static FileManager fileManager;
- static boolean disabledHelpContributions = false;
-
- void initProject() {
- if (project != null) {
- return;
- }
- //(CCorePlugin.getDefault().getCoreModel().getIndexManager()).reset();
- monitor = new NullProgressMonitor();
-
- workspace = ResourcesPlugin.getWorkspace();
-
- try {
- cPrj = CProjectHelper.createCProject("CSelectionTestsNoIndexerProject", "bin", IPDOMManager.ID_NO_INDEXER); //$NON-NLS-1$ //$NON-NLS-2$
- project = cPrj.getProject();
- } catch (CoreException e) {
- /*boo*/
- }
- if (project == null)
- fail("Unable to create project"); //$NON-NLS-1$
-
- //Create file manager
- fileManager = new FileManager();
- }
-
- public CSelectionTestsNoIndexer() {
- super();
- }
-
- /**
- * @param name
- */
- public CSelectionTestsNoIndexer(String name) {
- super(name);
- }
-
- public static Test suite() {
- TestSuite suite = new TestSuite(CSelectionTestsNoIndexer.class);
- suite.addTest(new CSelectionTestsNoIndexer("cleanupProject")); //$NON-NLS-1$
- return suite;
- }
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- OpenDeclarationsAction.sDisallowAmbiguousInput = true;
- initProject();
- }
-
- public void cleanupProject() throws Exception {
- try {
- closeAllEditors();
- CProjectHelper.delete(cPrj);
- project = null;
- } finally {
- project = null;
- }
- }
-
- @Override
- protected void tearDown() throws Exception {
- if (project == null || !project.exists())
- return;
-
- closeAllEditors();
-
- IResource[] members = project.members();
- for (IResource member : members) {
- if (member.getName().equals(".project") || member.getName().equals(".cproject")) //$NON-NLS-1$ //$NON-NLS-2$
- continue;
- if (member.getName().equals(".settings"))
- continue;
- try {
- member.delete(true, monitor);
- } catch (Throwable e) {
- /*boo*/
- }
- }
- }
-
- protected IFile importFile(String fileName, String contents) throws Exception {
- //Obtain file handle
- IFile file = project.getProject().getFile(fileName);
-
- InputStream stream = new ByteArrayInputStream(contents.getBytes());
- //Create file input stream
- if (file.exists())
- file.setContents(stream, false, false, monitor);
- else
- file.create(stream, false, monitor);
-
- fileManager.addFile(file);
-
- return file;
- }
-
- protected IFile importFileWithLink(String fileName, String contents) throws Exception {
- //Obtain file handle
- IFile file = project.getProject().getFile(fileName);
-
- IPath location = new Path(project.getLocation().removeLastSegments(1).toOSString() + File.separator + fileName);
-
- File linkFile = new File(location.toOSString());
- if (!linkFile.exists()) {
- linkFile.createNewFile();
- }
-
- file.createLink(location, IResource.ALLOW_MISSING_LOCAL, null);
-
- InputStream stream = new ByteArrayInputStream(contents.getBytes());
- //Create file input stream
- if (file.exists())
- file.setContents(stream, false, false, monitor);
- else
- file.create(stream, false, monitor);
-
- fileManager.addFile(file);
-
- return file;
- }
-
- protected IFile importFileInsideLinkedFolder(String fileName, String contents, String folderName) throws Exception {
- IFolder linkedFolder = project.getFolder(folderName);
- IPath folderLocation = new Path(
- project.getLocation().toOSString() + File.separator + folderName + "_this_is_linked"); //$NON-NLS-1$
- IFolder actualFolder = project.getFolder(folderName + "_this_is_linked"); //$NON-NLS-1$
- if (!actualFolder.exists())
- actualFolder.create(true, true, monitor);
-
- linkedFolder.createLink(folderLocation, IResource.NONE, monitor);
-
- actualFolder.delete(true, false, monitor);
-
- IFile file = linkedFolder.getFile(fileName);
-
- InputStream stream = new ByteArrayInputStream(contents.getBytes());
- //Create file input stream
- if (file.exists())
- file.setContents(stream, false, false, monitor);
- else
- file.create(stream, false, monitor);
-
- fileManager.addFile(file);
-
- return file;
- }
-
- protected IFile importFileWithLink(String fileName, String contents, IFolder folder) throws Exception {
- if (!folder.exists())
- folder.create(true, true, null);
-
- //Obtain file handle
- IFile file = project.getProject().getFile(fileName);
-
- IPath location = new Path(folder.getLocation().toOSString() + File.separator + fileName);
-
- File linkFile = new File(location.toOSString());
- if (!linkFile.exists()) {
- linkFile.createNewFile();
- }
-
- file.createLink(location, IResource.ALLOW_MISSING_LOCAL, null);
-
- InputStream stream = new ByteArrayInputStream(contents.getBytes());
- //Create file input stream
- if (file.exists())
- file.setContents(stream, false, false, monitor);
- else
- file.create(stream, false, monitor);
-
- fileManager.addFile(file);
-
- return file;
- }
-
- protected IFolder importFolder(String folderName) throws Exception {
- IFolder folder = project.getProject().getFolder(folderName);
-
- //Create file input stream
- if (!folder.exists())
- folder.create(false, false, monitor);
-
- return folder;
- }
-
- public void testBasicDefinition() throws Exception {
- StringBuilder buffer = new StringBuilder();
- buffer.append("extern int MyInt; // def is in another file \n"); //$NON-NLS-1$
- buffer.append("extern const int MyConst; // def is in another file \n"); //$NON-NLS-1$
- buffer.append("void MyFunc(int); // often used in header files\n"); //$NON-NLS-1$
- buffer.append("struct MyStruct; // often used in header files\n"); //$NON-NLS-1$
- buffer.append("typedef int NewInt; // a normal typedef statement\n"); //$NON-NLS-1$
- buffer.append(" \n"); //$NON-NLS-1$
- buffer.append("int MyInt;\n"); //$NON-NLS-1$
- buffer.append("extern const int MyConst = 42;\n"); //$NON-NLS-1$
- buffer.append("void MyFunc(int a) { cout << a << endl; }\n"); //$NON-NLS-1$
- buffer.append("struct MyStruct { int Member1; int Member2; };\n"); //$NON-NLS-1$
-
- String code = buffer.toString();
- IFile file = importFile("testBasicDefinition.c", code); //$NON-NLS-1$
-
- int offset = code.indexOf("MyInt") + 2; //$NON-NLS-1$
- int defOffset = code.indexOf("MyInt", offset) + 2; //$NON-NLS-1$
- IASTNode def = testF3(file, offset);
- IASTNode decl = testF3(file, defOffset);
- assertTrue(def instanceof IASTName);
- assertTrue(decl instanceof IASTName);
- assertEquals("MyInt", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(11, ((ASTNode) decl).getOffset());
- assertEquals(5, ((ASTNode) decl).getLength());
- assertEquals("MyInt", ((IASTName) def).toString()); //$NON-NLS-1$
- assertEquals(330, ((ASTNode) def).getOffset());
- assertEquals(5, ((ASTNode) def).getLength());
-
- offset = code.indexOf("MyConst") + 2;
- defOffset = code.indexOf("MyConst", offset) + 2;
- def = testF3(file, offset);
- decl = testF3(file, defOffset);
- assertTrue(def instanceof IASTName);
- assertTrue(decl instanceof IASTName);
- assertEquals("MyConst", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(69, ((ASTNode) decl).getOffset());
- assertEquals(7, ((ASTNode) decl).getLength());
- assertEquals("MyConst", ((IASTName) def).toString()); //$NON-NLS-1$
- assertEquals(354, ((ASTNode) def).getOffset());
- assertEquals(7, ((ASTNode) def).getLength());
-
- offset = code.indexOf("MyFunc") + 2;
- defOffset = code.indexOf("MyFunc", offset) + 2;
- def = testF3(file, offset);
- decl = testF3(file, defOffset);
- assertTrue(def instanceof IASTName);
- assertTrue(decl instanceof IASTName);
- assertEquals("MyFunc", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(115, ((ASTNode) decl).getOffset());
- assertEquals(6, ((ASTNode) decl).getLength());
- assertEquals("MyFunc", ((IASTName) def).toString()); //$NON-NLS-1$
- assertEquals(373, ((ASTNode) def).getOffset());
- assertEquals(6, ((ASTNode) def).getLength());
-
- offset = code.indexOf("MyStruct") + 2;
- defOffset = code.indexOf("MyStruct", offset) + 2;
- def = testF3(file, offset);
- decl = testF3(file, defOffset);
- assertTrue(def instanceof IASTName);
- assertTrue(decl instanceof IASTName);
- assertEquals("MyStruct", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(417, ((ASTNode) decl).getOffset());
- assertEquals(8, ((ASTNode) decl).getLength());
- assertEquals("MyStruct", ((IASTName) def).toString()); //$NON-NLS-1$
- assertEquals(417, ((ASTNode) def).getOffset());
- assertEquals(8, ((ASTNode) def).getLength());
- }
-
- // taken from C++ spec 3.1-3:
- /*
- // all but one of the following are definitions:
- int a; // defines a
- extern const int c = 1; // defines c
- int f(int x) { return x+a; } // defines f and defines x
- struct S { int a; int b; }; // defines S, S::a, and S::b
- struct X { // defines X
- int x; // defines nonstatic data member x
- };
- enum { up, down }; // defines up and down
- struct X anX; // defines anX
- // whereas these are just declarations:
- extern int a; // declares a
- extern const int c; // declares c
- int f(int); // declares f
- struct S; // declares S
- typedef int Int; // declares Int
- extern struct X anotherX; // declares anotherX
- */
- public void testCPPSpecDeclsDefs() throws Exception {
- StringBuilder buffer = new StringBuilder();
- buffer.append("int a; // defines a\n"); //$NON-NLS-1$
- buffer.append("extern const int c = 1; // defines c\n"); //$NON-NLS-1$
- buffer.append("int f(int x) { return x+a; } // defines f and defines x\n"); //$NON-NLS-1$
- buffer.append("struct S { int a; int b; }; // defines S, S::a, and S::b\n"); //$NON-NLS-1$
- buffer.append("struct X { // defines X\n"); //$NON-NLS-1$
- buffer.append("int x; // defines nonstatic data member x\n"); //$NON-NLS-1$
- buffer.append(" \n"); //$NON-NLS-1$
- buffer.append(" \n"); //$NON-NLS-1$
- buffer.append("};\n"); //$NON-NLS-1$
- buffer.append(" "); //$NON-NLS-1$
- buffer.append("enum { up, down }; // defines up and down\n"); //$NON-NLS-1$
- buffer.append(" \n"); //$NON-NLS-1$
- buffer.append(" \n"); //$NON-NLS-1$
- buffer.append("struct X anX; // defines anX\n"); //$NON-NLS-1$
- buffer.append("extern int a; // declares a\n"); //$NON-NLS-1$
- buffer.append("extern const int c; // declares c\n"); //$NON-NLS-1$
- buffer.append("int f(int y); // declar f\n"); //$NON-NLS-1$
- buffer.append("struct S; // declares S\n"); //$NON-NLS-1$
- buffer.append("typedef int Int; // declares Int\n"); //$NON-NLS-1$
- buffer.append("extern struct X anotherX; // declares anotherX\n"); //$NON-NLS-1$
-
- String code = buffer.toString();
- IFile file = importFile("testCPPSpecDeclsDefs.c", code); //$NON-NLS-1$
-
- int offset = code.indexOf("a; // defines a"); //$NON-NLS-1$
- IASTNode decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("a", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(512, ((ASTNode) decl).getOffset());
- assertEquals(1, ((ASTNode) decl).getLength());
-
- offset = code.indexOf("c = 1; // defines c"); //$NON-NLS-1$
- decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("c", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(546, ((ASTNode) decl).getOffset());
- assertEquals(1, ((ASTNode) decl).getLength());
-
- offset = code.indexOf("f(int x) { return x+a; } // defines f and defines x"); //$NON-NLS-1$
- decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("f", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(567, ((ASTNode) decl).getOffset());
- assertEquals(1, ((ASTNode) decl).getLength());
-
- offset = code.indexOf("x) { return x+a; } // defines f and defines x"); //$NON-NLS-1$
- decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("x", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(67, ((ASTNode) decl).getOffset());
- assertEquals(1, ((ASTNode) decl).getLength());
-
- offset = code.indexOf("x+a; } // defines f and defines x"); //$NON-NLS-1$
- decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("x", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(67, ((ASTNode) decl).getOffset());
- assertEquals(1, ((ASTNode) decl).getLength());
-
- offset = code.indexOf("x+a; } // defines f and defines x"); //$NON-NLS-1$
- decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("x", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(67, ((ASTNode) decl).getOffset());
- assertEquals(1, ((ASTNode) decl).getLength());
-
- offset = code.indexOf("a; } // defines f and defines x"); //$NON-NLS-1$
- decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("a", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(4, ((ASTNode) decl).getOffset());
- assertEquals(1, ((ASTNode) decl).getLength());
-
- offset = code.indexOf("S { int a; int b; }; // defines S, S::a, and S::b"); //$NON-NLS-1$
- decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("S", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(120, ((ASTNode) decl).getOffset());
- assertEquals(1, ((ASTNode) decl).getLength());
-
- offset = code.indexOf("a; int b; }; // defines S, S::a, and S::b"); //$NON-NLS-1$
- decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("a", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(128, ((ASTNode) decl).getOffset());
- assertEquals(1, ((ASTNode) decl).getLength());
-
- offset = code.indexOf("b; }; // defines S, S::a, and S::b"); //$NON-NLS-1$
- decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("b", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(135, ((ASTNode) decl).getOffset());
- assertEquals(1, ((ASTNode) decl).getLength());
-
- offset = code.indexOf("X { // defines X"); //$NON-NLS-1$
- decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("X", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(177, ((ASTNode) decl).getOffset());
- assertEquals(1, ((ASTNode) decl).getLength());
-
- offset = code.indexOf("x; // defines nonstatic data member x"); //$NON-NLS-1$
- decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("x", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(198, ((ASTNode) decl).getOffset());
- assertEquals(1, ((ASTNode) decl).getLength());
-
- offset = code.indexOf("up, down }; // defines up and down"); //$NON-NLS-1$
- decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("up", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(367, ((ASTNode) decl).getOffset());
- assertEquals(2, ((ASTNode) decl).getLength());
-
- offset = code.indexOf("down }; // defines up and down"); //$NON-NLS-1$
- decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("down", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(371, ((ASTNode) decl).getOffset());
- assertEquals(4, ((ASTNode) decl).getLength());
-
- IASTNode def;
- offset = code.indexOf("X anX; // defines anX"); //$NON-NLS-1$
- def = testF3(file, offset);
- assertTrue(def instanceof IASTName);
- assertEquals("X", ((IASTName) def).toString()); //$NON-NLS-1$
- assertEquals(177, ((ASTNode) def).getOffset());
- assertEquals(1, ((ASTNode) def).getLength());
-
- offset = code.indexOf("anX; // defines anX"); //$NON-NLS-1$
- decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("anX", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(481, ((ASTNode) decl).getOffset());
- assertEquals(3, ((ASTNode) decl).getLength());
-
- offset = code.indexOf("a; // declares a"); //$NON-NLS-1$
- def = testF3(file, offset);
- assertTrue(def instanceof IASTName);
- assertEquals("a", ((IASTName) def).toString()); //$NON-NLS-1$
- assertEquals(4, ((ASTNode) def).getOffset());
- assertEquals(1, ((ASTNode) def).getLength());
-
- offset = code.indexOf("c; // declares c"); //$NON-NLS-1$
- def = testF3(file, offset);
- assertTrue(def instanceof IASTName);
- assertEquals("c", ((IASTName) def).toString()); //$NON-NLS-1$
- assertEquals(37, ((ASTNode) def).getOffset());
- assertEquals(1, ((ASTNode) def).getLength());
-
- offset = code.indexOf("f(int y); // declar f"); //$NON-NLS-1$
- def = testF3(file, offset);
- assertTrue(def instanceof IASTName);
- assertEquals("f", ((IASTName) def).toString()); //$NON-NLS-1$
- assertEquals(61, ((ASTNode) def).getOffset());
- assertEquals(1, ((ASTNode) def).getLength());
-
- offset = code.indexOf("S; // declares S"); //$NON-NLS-1$
- def = testF3(file, offset);
- assertTrue(def instanceof IASTName);
- assertEquals("S", ((IASTName) def).toString()); //$NON-NLS-1$
- assertEquals(120, ((ASTNode) def).getOffset());
- assertEquals(1, ((ASTNode) def).getLength());
-
- offset = code.indexOf("Int; // declares Int"); //$NON-NLS-1$
- decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("Int", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(625, ((ASTNode) decl).getOffset());
- assertEquals(3, ((ASTNode) decl).getLength());
-
- offset = code.indexOf("X anotherX; // declares anotherX"); //$NON-NLS-1$
- def = testF3(file, offset);
- assertTrue(def instanceof IASTName);
- assertEquals("X", ((IASTName) def).toString()); //$NON-NLS-1$
- assertEquals(177, ((ASTNode) def).getOffset());
- assertEquals(1, ((ASTNode) def).getLength());
-
- offset = code.indexOf("anotherX; // declares anotherX"); //$NON-NLS-1$
- decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("anotherX", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(662, ((ASTNode) decl).getOffset());
- assertEquals(8, ((ASTNode) decl).getLength());
- }
-
- public void testNoDefinitions() throws Exception {
- StringBuilder buffer = new StringBuilder();
- buffer.append("extern int a1; // declares a\n"); //$NON-NLS-1$
- buffer.append("extern const int c1; // declares c\n"); //$NON-NLS-1$
- buffer.append("int f1(int); // declares f\n"); //$NON-NLS-1$
- buffer.append("struct S1; // declares S\n"); //$NON-NLS-1$
- buffer.append("typedef int Int; // declares Int\n"); //$NON-NLS-1$
-
- String code = buffer.toString();
- IFile file = importFile("testNoDefinitions.c", code); //$NON-NLS-1$
-
- int offset = code.indexOf("a1; // declares a"); //$NON-NLS-1$
- IASTNode decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("a1", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(11, ((ASTNode) decl).getOffset());
- assertEquals(2, ((ASTNode) decl).getLength());
-
- offset = code.indexOf("c1; // declares c"); //$NON-NLS-1$
- decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("c1", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(46, ((ASTNode) decl).getOffset());
- assertEquals(2, ((ASTNode) decl).getLength());
-
- offset = code.indexOf("f1(int); // declares f"); //$NON-NLS-1$
- decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("f1", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(68, ((ASTNode) decl).getOffset());
- assertEquals(2, ((ASTNode) decl).getLength());
-
- offset = code.indexOf("S1; // declares S"); //$NON-NLS-1$
- decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("S1", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(98, ((ASTNode) decl).getOffset());
- assertEquals(2, ((ASTNode) decl).getLength());
-
- offset = code.indexOf("Int; // declares Int"); //$NON-NLS-1$
- decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("Int", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(128, ((ASTNode) decl).getOffset());
- assertEquals(3, ((ASTNode) decl).getLength());
- }
-
- public void testBug103697() throws Exception {
- StringBuilder buffer = new StringBuilder();
- buffer.append("int x;\n"); //$NON-NLS-1$
- buffer.append("int foo() {\n"); //$NON-NLS-1$
- buffer.append(" return x;\n"); //$NON-NLS-1$
- buffer.append("}\n"); //$NON-NLS-1$
-
- String code = buffer.toString();
- IFile file = importFileWithLink("testBug103697.cpp", code); //$NON-NLS-1$
-
- int offset = code.indexOf("return x;\n") + "return ".length(); //$NON-NLS-1$ //$NON-NLS-2$
- IASTNode decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("x", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(4, ((ASTNode) decl).getOffset());
- assertEquals(1, ((ASTNode) decl).getLength());
- }
-
- public void testBug76043() throws Exception {
- StringBuilder buffer = new StringBuilder();
- buffer.append("int x;\n"); //$NON-NLS-1$
- buffer.append("int foo() {\n"); //$NON-NLS-1$
- buffer.append(" return x;\n"); //$NON-NLS-1$
- buffer.append("}\n"); //$NON-NLS-1$
- String code = buffer.toString();
-
- IFile file = importFileInsideLinkedFolder("testBug76043.c", code, "folder"); //$NON-NLS-1$ //$NON-NLS-2$
-
- assertFalse(file.isLinked()); // I'm not sure why the IResource#isLinked() returns false if it's contained within a linked folder
-
- int offset = code.indexOf("return x;\n") + "return ".length(); //$NON-NLS-1$ //$NON-NLS-2$
- IASTNode decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("x", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(4, ((ASTNode) decl).getOffset());
- assertEquals(1, ((ASTNode) decl).getLength());
- }
-
- public void testBug78354() throws Exception {
- StringBuilder buffer = new StringBuilder();
- buffer.append("typedef int TestTypeOne;\n"); //$NON-NLS-1$
- buffer.append("typedef int TestTypeTwo;\n"); //$NON-NLS-1$
- buffer.append("int main()\n"); //$NON-NLS-1$
- buffer.append("{\n"); //$NON-NLS-1$
- buffer.append("TestTypeOne myFirstLink = 5;\n"); //$NON-NLS-1$
- buffer.append("TestTypeTwo mySecondLink = 6;\n"); //$NON-NLS-1$
- buffer.append("return 0;\n"); //$NON-NLS-1$
- buffer.append("}\n"); //$NON-NLS-1$
-
- String code = buffer.toString();
- IFile file = importFileWithLink("testBug78354.cpp", code); //$NON-NLS-1$
-
- int offset = code.indexOf("TestTypeOne myFirstLink = 5;"); //$NON-NLS-1$
- IASTNode decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- assertEquals("TestTypeOne", ((IASTName) decl).toString()); //$NON-NLS-1$
- assertEquals(12, ((ASTNode) decl).getOffset());
- assertEquals(11, ((ASTNode) decl).getLength());
- }
-
- // int myFunc(var)
- // int var;
- // {
- // return var;
- // }
- //
- // int main(void)
- // {
- // return myFunc(0);
- // }
- public void testKRstyleFunctions_Bug221635() throws Exception {
- String code = getContentsForTest(1)[0].toString();
- IFile file = importFile("source.c", code);
- int offset = code.indexOf("myFunc(0)");
- IASTNode decl = testF3(file, offset);
- assertTrue(decl instanceof IASTName);
- final IASTName name = (IASTName) decl;
- assertTrue(name.isDefinition());
- assertEquals("myFunc", name.toString());
- }
-}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selection/SelectionTestSuite.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selection/SelectionTestSuite.java
index f31c354d7d3..80e0dc63b26 100644
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selection/SelectionTestSuite.java
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selection/SelectionTestSuite.java
@@ -22,8 +22,8 @@ import org.junit.runners.Suite;
@Suite.SuiteClasses({
// selection tests
- ResolveBindingTests.class, CPPSelectionTestsNoIndexer.class, CSelectionTestsNoIndexer.class,
- CPPSelectionTestsIndexer.class, CSelectionTestsIndexer.class,
+ ResolveBindingTests.class, CPPSelectionNoIndexerTests.class, CSelectionNoIndexerTests.class,
+ CPPSelectionIndexerTests.class, CSelectionIndexerTests.class,
})
public class SelectionTestSuite {
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/typehierarchy/TypeHierarchyBaseTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/typehierarchy/TypeHierarchyBaseTest.java
index 4ea405784c8..4d371314f8f 100644
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/typehierarchy/TypeHierarchyBaseTest.java
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/typehierarchy/TypeHierarchyBaseTest.java
@@ -43,7 +43,7 @@ import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.ide.IDE;
-public class TypeHierarchyBaseTest extends BaseUITestCase {
+public abstract class TypeHierarchyBaseTest extends BaseUITestCase {
protected ICProject fCProject;
protected IIndex fIndex;
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/wizards/settingswizards/SettingsImportExportTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/wizards/settingswizards/SettingsImportExportTest.java
index 98ac5c52884..37b899de98f 100644
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/wizards/settingswizards/SettingsImportExportTest.java
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/wizards/settingswizards/SettingsImportExportTest.java
@@ -48,7 +48,10 @@ public class SettingsImportExportTest extends BaseUITestCase {
new CMacroEntry("smac", "blah", 0) };
private static ICLanguageSettingEntry[] EXPORTED_INCLUDES = new ICLanguageSettingEntry[] {
- new CIncludePathEntry("/path/to/somewhere", 0), new CIncludePathEntry("/blah/blah/blah", 0),
+ // There is a multi-byte character at the end of this first string. When this test
+ // was run without the fix for Bug 577074 and -Dfile.encoding that would cause the
+ // character to be corrupted (e.g. windows-1252)
+ new CIncludePathEntry("/path/to/somewhere¢", 0), new CIncludePathEntry("/blah/blah/blah", 0),
new CIncludePathEntry("pantera/is/awesome", 0) };
public SettingsImportExportTest() {
diff --git a/core/org.eclipse.cdt.ui/.classpath b/core/org.eclipse.cdt.ui/.classpath
index 9500e6b71bd..49e8e2e29d3 100644
--- a/core/org.eclipse.cdt.ui/.classpath
+++ b/core/org.eclipse.cdt.ui/.classpath
@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="utils.ui"/>
<classpathentry kind="src" path="browser"/>
<classpathentry kind="src" path="templateengine"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
- <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/core/org.eclipse.cdt.ui/.settings/.api_filters b/core/org.eclipse.cdt.ui/.settings/.api_filters
index 736a9f302cf..a4dd20fd5bf 100644
--- a/core/org.eclipse.cdt.ui/.settings/.api_filters
+++ b/core/org.eclipse.cdt.ui/.settings/.api_filters
@@ -1,18 +1,10 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<component id="org.eclipse.cdt.ui" version="2">
- <resource path="META-INF/MANIFEST.MF" type="org.eclipse.cdt.ui.actions.DeleteResConfigsAction">
- <filter comment="DeleteResConfigsAction has been deprecated since CDT 8.0" id="305324134">
+ <resource path="src/org/eclipse/cdt/ui/wizards/CDTCommonProjectWizard.java" type="org.eclipse.cdt.ui.wizards.CDTCommonProjectWizard">
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
<message_arguments>
- <message_argument value="org.eclipse.cdt.ui.actions.DeleteResConfigsAction"/>
- <message_argument value="org.eclipse.cdt.ui_6.6.100"/>
- </message_arguments>
- </filter>
- </resource>
- <resource path="META-INF/MANIFEST.MF" type="org.eclipse.cdt.ui.actions.ExcludeFromBuildAction">
- <filter comment="ExcludeFromBuildAction has been deprecated since CDT 8.0" id="305324134">
- <message_arguments>
- <message_argument value="org.eclipse.cdt.ui.actions.ExcludeFromBuildAction"/>
- <message_argument value="org.eclipse.cdt.ui_6.6.100"/>
+ <message_argument value="ICDTCommonProjectWizard"/>
+ <message_argument value="CDTCommonProjectWizard"/>
</message_arguments>
</filter>
</resource>
diff --git a/core/org.eclipse.cdt.ui/.settings/org.eclipse.core.resources.prefs b/core/org.eclipse.cdt.ui/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/core/org.eclipse.cdt.ui/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/core/org.eclipse.cdt.ui/.settings/org.eclipse.jdt.core.prefs b/core/org.eclipse.cdt.ui/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/core/org.eclipse.cdt.ui/.settings/org.eclipse.jdt.core.prefs
+++ b/core/org.eclipse.cdt.ui/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/core/org.eclipse.cdt.ui/.settings/org.eclipse.jdt.ui.prefs b/core/org.eclipse.cdt.ui/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/core/org.eclipse.cdt.ui/.settings/org.eclipse.jdt.ui.prefs
+++ b/core/org.eclipse.cdt.ui/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/core/org.eclipse.cdt.ui/META-INF/MANIFEST.MF b/core/org.eclipse.cdt.ui/META-INF/MANIFEST.MF
index a49a64c5662..8f4cd6a062a 100644
--- a/core/org.eclipse.cdt.ui/META-INF/MANIFEST.MF
+++ b/core/org.eclipse.cdt.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.ui; singleton:=true
-Bundle-Version: 6.6.100.qualifier
+Bundle-Version: 7.3.300.qualifier
Bundle-Activator: org.eclipse.cdt.ui.CUIPlugin
Bundle-Vendor: %providerName
Bundle-Localization: plugin
@@ -102,30 +102,30 @@ Export-Package: org.eclipse.cdt.internal.corext;x-internal:=true,
org.eclipse.cdt.ui.wizards,
org.eclipse.cdt.ui.wizards.conversion,
org.eclipse.cdt.utils.ui.controls
-Require-Bundle: org.eclipse.cdt.core;bundle-version="[6.9.0,7.0.0)",
- org.eclipse.compare;bundle-version="[3.7.700,4.0.0)",
- org.eclipse.core.expressions;bundle-version="[3.6.500,4.0.0)",
- org.eclipse.core.filesystem;bundle-version="[1.7.500,2.0.0)",
- org.eclipse.core.resources;bundle-version="[3.13.500,4.0.0)",
- org.eclipse.core.runtime;bundle-version="[3.16.0,4.0.0)",
- org.eclipse.core.variables;bundle-version="[3.4.600,4.0.0)",
- org.eclipse.help;bundle-version="[3.8.500,4.0.0)",
- org.eclipse.jface.text;bundle-version="[3.15.300,4.0.0)",
- org.eclipse.ltk.core.refactoring;bundle-version="[3.10.200,4.0.0)",
- org.eclipse.ltk.ui.refactoring;bundle-version="[3.10.0,4.0.0)",
- org.eclipse.search;bundle-version="[3.11.700,4.0.0)",
- org.eclipse.ui;bundle-version="[3.114.0,4.0.0)",
- org.eclipse.ui.console;bundle-version="[3.8.600,4.0.0)",
- org.eclipse.ui.editors;bundle-version="[3.12.0,4.0.0)",
- org.eclipse.ui.forms;bundle-version="[3.8.100,4.0.0)",
- org.eclipse.ui.ide;bundle-version="[3.16.0,4.0.0)",
- org.eclipse.ui.navigator;bundle-version="[3.9.0,4.0.0)",
- org.eclipse.ui.navigator.resources;bundle-version="[3.7.0,4.0.0)",
- org.eclipse.ui.views;bundle-version="[3.10.0,4.0.0)",
- org.eclipse.ui.workbench.texteditor;bundle-version="[3.13.0,4.0.0)",
- com.ibm.icu;bundle-version="4.4.2",
+Require-Bundle: org.eclipse.cdt.core;bundle-version="[7.3.0,8.0.0)",
+ org.eclipse.compare;bundle-version="[3.8.200,4.0.0)",
+ org.eclipse.core.expressions;bundle-version="[3.8.100,4.0.0)",
+ org.eclipse.core.filesystem;bundle-version="[1.9.200,2.0.0)",
+ org.eclipse.core.resources;bundle-version="[3.16.0,4.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.24.0,4.0.0)",
+ org.eclipse.core.variables;bundle-version="[3.5.100,4.0.0)",
+ org.eclipse.e4.core.contexts;bundle-version="[1.9.100,2.0.0)",
+ org.eclipse.help;bundle-version="[3.9.100,4.0.0)",
+ org.eclipse.jface.text;bundle-version="[3.19.0,4.0.0)",
+ org.eclipse.ltk.core.refactoring;bundle-version="[3.12.100,4.0.0)",
+ org.eclipse.ltk.ui.refactoring;bundle-version="[3.12.0,4.0.0)",
+ org.eclipse.search;bundle-version="[3.14.0,4.0.0)",
+ org.eclipse.ui;bundle-version="[3.200.0,4.0.0)",
+ org.eclipse.ui.console;bundle-version="[3.11.100,4.0.0)",
+ org.eclipse.ui.editors;bundle-version="[3.14.300,4.0.0)",
+ org.eclipse.ui.forms;bundle-version="[3.11.300,4.0.0)",
+ org.eclipse.ui.ide;bundle-version="[3.18.400,4.0.0)",
+ org.eclipse.ui.navigator;bundle-version="[3.10.200,4.0.0)",
+ org.eclipse.ui.navigator.resources;bundle-version="[3.8.300,4.0.0)",
+ org.eclipse.ui.views;bundle-version="[3.11.100,4.0.0)",
+ org.eclipse.ui.workbench.texteditor;bundle-version="[3.16.300,4.0.0)",
org.eclipse.e4.ui.css.swt.theme,
- org.eclipse.tools.templates.ui;bundle-version="[1.1.1,2.0.0)"
+ org.eclipse.tools.templates.ui;bundle-version="[1.2.200,2.0.0)"
Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Automatic-Module-Name: org.eclipse.cdt.ui
diff --git a/core/org.eclipse.cdt.ui/about.html b/core/org.eclipse.cdt.ui/about.html
index 164f781a8fd..b3134865230 100644
--- a/core/org.eclipse.cdt.ui/about.html
+++ b/core/org.eclipse.cdt.ui/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/core/org.eclipse.cdt.ui/css/e4-dark_cdt.css b/core/org.eclipse.cdt.ui/css/e4-dark_cdt.css
index e23aa9085e3..2faf713501a 100644
--- a/core/org.eclipse.cdt.ui/css/e4-dark_cdt.css
+++ b/core/org.eclipse.cdt.ui/css/e4-dark_cdt.css
@@ -75,5 +75,30 @@ IEclipsePreferences#org-eclipse-cdt-ui:org-eclipse-cdt-ui {
"semanticHighlighting.typedef.enabled=true"
"semanticHighlighting.typedef.bold=true"
"semanticHighlighting.typeParameter.color=191,164,164"
- "semanticHighlighting.typeParameter.enabled=true"
+ "semanticHighlighting.typeParameter.enabled=true"
+ "buildConsoleInfoStreamColor=18,144,195"
+ "buildConsoleOutputStreamColor=200,200,200"
+ "buildConsoleErrorStreamColor=255,0,0"
+ "buildConsoleBackgroundColor=47,47,47"
+ "buildConsoleProblemBackgroundColor=130,6,12"
+ "buildConsoleProblemWarningBackgroundColor=150,88,11"
+ "buildConsoleProblemInfoBackgroundColor=48,64,254"
+ "buildConsoleProblemHighlightedColor=255,0,0"
+ "inactiveCodeColor=30,30,30"
+}
+
+
+IEclipsePreferences#org-eclipse-ui-editors:org-eclipse-cdt-ui { /* pseudo attribute added to allow contributions without replacing this node, see Bug 466075 */
+ preferences:
+ "org.eclipse.cdt.ui.occurrenceIndicationColor=27,98,145"
+ "org.eclipse.cdt.ui.writeOccurrenceIndicationColor=27,98,145"
+ "org.eclipse.cdt.ui.overrideIndicatorColor=27,98,145"
+}
+
+
+IEclipsePreferences#org-eclipse-ui-workbench:org-eclipse-cdt-ui { /* pseudo attribute added to allow contributions without replacing this node, see Bug 466075 */
+ preferences:
+ "org.eclipse.cdt.ui.ColoredLabels.writeaccess_highlight=255,128,128"
+ "org.eclipse.cdt.ui.outline.mark.textcolor=115,129,133"
+ "org.eclipse.cdt.ui.outline.mark.dividercolor=80,80,80"
}
diff --git a/core/org.eclipse.cdt.ui/icons/dlcl16/outline_mark.png b/core/org.eclipse.cdt.ui/icons/dlcl16/outline_mark.png
new file mode 100644
index 00000000000..14a9e25681f
--- /dev/null
+++ b/core/org.eclipse.cdt.ui/icons/dlcl16/outline_mark.png
Binary files differ
diff --git a/core/org.eclipse.cdt.ui/icons/dlcl16/outline_mark@2x.png b/core/org.eclipse.cdt.ui/icons/dlcl16/outline_mark@2x.png
new file mode 100644
index 00000000000..3d4065a94a9
--- /dev/null
+++ b/core/org.eclipse.cdt.ui/icons/dlcl16/outline_mark@2x.png
Binary files differ
diff --git a/core/org.eclipse.cdt.ui/icons/elcl16/bring_console_to_top_on_build.png b/core/org.eclipse.cdt.ui/icons/elcl16/bring_console_to_top_on_build.png
new file mode 100644
index 00000000000..6b381bf6bf1
--- /dev/null
+++ b/core/org.eclipse.cdt.ui/icons/elcl16/bring_console_to_top_on_build.png
Binary files differ
diff --git a/core/org.eclipse.cdt.ui/icons/elcl16/bring_console_to_top_on_build@2x.png b/core/org.eclipse.cdt.ui/icons/elcl16/bring_console_to_top_on_build@2x.png
new file mode 100644
index 00000000000..d42ee7f7b91
--- /dev/null
+++ b/core/org.eclipse.cdt.ui/icons/elcl16/bring_console_to_top_on_build@2x.png
Binary files differ
diff --git a/core/org.eclipse.cdt.ui/icons/elcl16/outline_mark.png b/core/org.eclipse.cdt.ui/icons/elcl16/outline_mark.png
new file mode 100644
index 00000000000..14a9e25681f
--- /dev/null
+++ b/core/org.eclipse.cdt.ui/icons/elcl16/outline_mark.png
Binary files differ
diff --git a/core/org.eclipse.cdt.ui/icons/elcl16/outline_mark@2x.png b/core/org.eclipse.cdt.ui/icons/elcl16/outline_mark@2x.png
new file mode 100644
index 00000000000..3d4065a94a9
--- /dev/null
+++ b/core/org.eclipse.cdt.ui/icons/elcl16/outline_mark@2x.png
Binary files differ
diff --git a/core/org.eclipse.cdt.ui/icons/obj16/asm_resource_obj.gif b/core/org.eclipse.cdt.ui/icons/obj16/asm_resource_obj.gif
index 4f1043c0c19..7f639f05bbc 100644
--- a/core/org.eclipse.cdt.ui/icons/obj16/asm_resource_obj.gif
+++ b/core/org.eclipse.cdt.ui/icons/obj16/asm_resource_obj.gif
Binary files differ
diff --git a/core/org.eclipse.cdt.ui/icons/obj16/ch_resource_obj.gif b/core/org.eclipse.cdt.ui/icons/obj16/ch_resource_obj.gif
index 33161cec92e..733cd5daa5d 100644
--- a/core/org.eclipse.cdt.ui/icons/obj16/ch_resource_obj.gif
+++ b/core/org.eclipse.cdt.ui/icons/obj16/ch_resource_obj.gif
Binary files differ
diff --git a/core/org.eclipse.cdt.ui/icons/obj16/hfolder_quote_obj.gif b/core/org.eclipse.cdt.ui/icons/obj16/hfolder_quote_obj.gif
index 90f9be3eafa..fc26dc471c3 100644
--- a/core/org.eclipse.cdt.ui/icons/obj16/hfolder_quote_obj.gif
+++ b/core/org.eclipse.cdt.ui/icons/obj16/hfolder_quote_obj.gif
Binary files differ
diff --git a/core/org.eclipse.cdt.ui/icons/obj16/outline_mark.png b/core/org.eclipse.cdt.ui/icons/obj16/outline_mark.png
new file mode 100644
index 00000000000..14a9e25681f
--- /dev/null
+++ b/core/org.eclipse.cdt.ui/icons/obj16/outline_mark.png
Binary files differ
diff --git a/core/org.eclipse.cdt.ui/icons/obj16/outline_mark@2x.png b/core/org.eclipse.cdt.ui/icons/obj16/outline_mark@2x.png
new file mode 100644
index 00000000000..3d4065a94a9
--- /dev/null
+++ b/core/org.eclipse.cdt.ui/icons/obj16/outline_mark@2x.png
Binary files differ
diff --git a/core/org.eclipse.cdt.ui/icons/obj16/structfo_obj.gif b/core/org.eclipse.cdt.ui/icons/obj16/structfo_obj.gif
index bdbc77e8180..0b52c73af69 100644
--- a/core/org.eclipse.cdt.ui/icons/obj16/structfo_obj.gif
+++ b/core/org.eclipse.cdt.ui/icons/obj16/structfo_obj.gif
Binary files differ
diff --git a/core/org.eclipse.cdt.ui/icons/obj16/typedeffo_obj.gif b/core/org.eclipse.cdt.ui/icons/obj16/typedeffo_obj.gif
index f6b2d56066c..1706434c909 100644
--- a/core/org.eclipse.cdt.ui/icons/obj16/typedeffo_obj.gif
+++ b/core/org.eclipse.cdt.ui/icons/obj16/typedeffo_obj.gif
Binary files differ
diff --git a/core/org.eclipse.cdt.ui/icons/obj16/unionfo_obj.gif b/core/org.eclipse.cdt.ui/icons/obj16/unionfo_obj.gif
index 8f3bc264298..aa2cdf4fc17 100644
--- a/core/org.eclipse.cdt.ui/icons/obj16/unionfo_obj.gif
+++ b/core/org.eclipse.cdt.ui/icons/obj16/unionfo_obj.gif
Binary files differ
diff --git a/core/org.eclipse.cdt.ui/plugin.properties b/core/org.eclipse.cdt.ui/plugin.properties
index 9aac275b99c..e2d94044163 100644
--- a/core/org.eclipse.cdt.ui/plugin.properties
+++ b/core/org.eclipse.cdt.ui/plugin.properties
@@ -396,6 +396,15 @@ CEditorFontDefinition.description = The C/C++ editor text font is used by C/C++
CPresentation.label= C/C++
CEditorPresentation.label= Editor
+## C Outline Fonts
+COutlinePresentation.label= Outline
+COutline.mark.font.label= C/C++ Outline Mark/Region Text Font
+COutline.mark.font.description= The C/C++ Outline Mark/Region Text font is used by C/C++ outlines for highlighted elements by #pragma mark or #pragma region
+COutline.mark.textcolor.label=C/C++ Outline Mark/Region Text Color
+COutline.mark.textcolor.description=The C/C++ Outline Mark/Region Text color is used by C/C++ outlines for highlighted elements by #pragma mark or #pragma region
+COutline.mark.dividercolor.label=C/C++ Outline Mark/Region Divider Color
+COutline.mark.dividercolor.description=The C/C++ Outline Mark/Region Divider color is used by C/C++ outlines for dividing lines around elements highlighted by #pragma mark or #pragma region
+
CDTIndexerMarker.label= C/C++ Indexer Markers
@@ -496,6 +505,8 @@ SearchUnresolvedIncludes.name=Search for Unresolved Includes
SearchUnresolvedIncludes.label=Search for Unresolved &Includes
CreateParserLog.name=Create Parser Log File
CreateParserLog.label=Create Parser &Log File
+wsselection.command.name=Manage Working Sets
+ManageConfigs.command.name=Manage Build Configurations
indexerPage.name = Indexer Page
proposalFilter.name = Code Completion Proposal Filter
diff --git a/core/org.eclipse.cdt.ui/plugin.xml b/core/org.eclipse.cdt.ui/plugin.xml
index ee0a5873c7d..bf3837a4f81 100644
--- a/core/org.eclipse.cdt.ui/plugin.xml
+++ b/core/org.eclipse.cdt.ui/plugin.xml
@@ -9,7 +9,7 @@
<extension-point id="foldingStructureProviders" name="%foldingStructureProvidersExtensionPoint" schema="schema/foldingStructureProviders.exsd"/>
<extension-point id="cPropertyTab" name="%cPropertyTabName" schema="schema/cPropertyTab.exsd"/>
<extension-point id="CDTWizard" name="%CDTWizard" schema="schema/CDTWizard.exsd"/>
-
+
<!-- =========================================================================== -->
<!-- Extension point: org.eclipse.cdt.ui.textHovers -->
<!-- Extension Implementation: must implement org.eclipse.jface.text.ITextHover -->
@@ -153,7 +153,7 @@
targetId="org.eclipse.cdt.ui.CView"
name="%ForwardDeclarationFilter.label"
enabled="true"
- description="%ForwardDeclarationFilter.description"
+ description="%ForwardDeclarationFilter.description"
class="org.eclipse.cdt.internal.ui.filters.ForwardDeclarationFilter"
id="org.eclipse.cdt.internal.ui.CView.ForwardDeclarationFilter">
</filter>
@@ -186,7 +186,7 @@
targetId="org.eclipse.cdt.ui.COutlinePage"
name="%ForwardDeclarationFilter.label"
enabled="false"
- description="%ForwardDeclarationFilter.description"
+ description="%ForwardDeclarationFilter.description"
class="org.eclipse.cdt.internal.ui.filters.ForwardDeclarationFilter"
id="org.eclipse.cdt.ui.COutlinePage.ForwardDeclarationFilter">
</filter>
@@ -255,7 +255,7 @@
id="org.eclipse.cdt.ui.AnnotationHover">
</hover>
</extension>
-
+
<extension
point="org.eclipse.ui.perspectives">
<perspective
@@ -574,6 +574,40 @@
%CEditorFontDefinition.description
</description>
</fontDefinition>
+ <themeElementCategory
+ id="org.eclipse.cdt.ui.COutline.presentation"
+ label="%COutlinePresentation.label"
+ parentId="org.eclipse.cdt.ui.presentation">
+ </themeElementCategory>
+ <fontDefinition
+ categoryId="org.eclipse.cdt.ui.COutline.presentation"
+ defaultsTo="org.eclipse.jface.bannerfont"
+ id="org.eclipse.cdt.ui.outline.mark.textfont"
+ label="%COutline.mark.font.label">
+ <description>
+ %COutline.mark.font.description
+ </description>
+ </fontDefinition>
+ <colorDefinition
+ id="org.eclipse.cdt.ui.outline.mark.textcolor"
+ categoryId="org.eclipse.cdt.ui.COutline.presentation"
+ isEditable="true"
+ label="%COutline.mark.textcolor.label"
+ value="80,80,80">
+ <description>
+ %COutline.mark.textcolor.description
+ </description>
+ </colorDefinition>
+ <colorDefinition
+ categoryId="org.eclipse.cdt.ui.COutline.presentation"
+ id="org.eclipse.cdt.ui.outline.mark.dividercolor"
+ isEditable="true"
+ label="%COutline.mark.dividercolor.label"
+ value="200,200,200">
+ <description>
+ %COutline.mark.dividercolor.description
+ </description>
+ </colorDefinition>
<fontDefinition
label="%BuildConsoleFontDefinition.label"
defaultsTo="org.eclipse.jface.textfont"
@@ -895,13 +929,13 @@
id="org.eclipse.cdt.ui.overloadedOperatorHighlighting"
isEditable="false"
label="%Dummy.label"
- value="200, 100, 0">
+ value="200, 100, 0">
</colorDefinition>
<colorDefinition
id="org.eclipse.cdt.ui.variablePassedByNonConstReferenceHighlighting"
isEditable="false"
label="%Dummy.label"
- value="200, 100, 150">
+ value="200, 100, 150">
</colorDefinition>
<theme
id="org.eclipse.ui.ide.systemDefault">
@@ -1354,13 +1388,13 @@
id="org.eclipse.cdt.ui.codeformatter"/>
<keyword
label="%preferenceKeywords.todo"
- id="org.eclipse.cdt.ui.todo"/>
+ id="org.eclipse.cdt.ui.todo"/>
<keyword
label="%preferenceKeywords.ceditor"
- id="org.eclipse.cdt.ui.ceditor"/>
+ id="org.eclipse.cdt.ui.ceditor"/>
<keyword
label="%preferenceKeywords.contentassist"
- id="org.eclipse.cdt.ui.contentassist"/>
+ id="org.eclipse.cdt.ui.contentassist"/>
<keyword
label="%preferenceKeywords.hover"
id="org.eclipse.cdt.ui.hover"/>
@@ -1372,7 +1406,7 @@
id="org.eclipse.cdt.ui.scalability"/>
<keyword
label="%preferenceKeywords.syntaxcoloring"
- id="org.eclipse.cdt.ui.syntaxcoloring"/>
+ id="org.eclipse.cdt.ui.syntaxcoloring"/>
<keyword
label="%preferenceKeywords.templates"
id="org.eclipse.cdt.ui.templates"/>
@@ -1520,14 +1554,14 @@
</menu>
</objectContribution>
<!-- project explorer shows IProjects, we need to handle this -->
- <objectContribution
+ <objectContribution
id="org.eclipse.cdt.ui.cproject.in.explorer.contrib"
objectClass="org.eclipse.core.resources.IProject">
<visibility>
<objectState
name="projectNature"
value="org.eclipse.cdt.core.cnature"/>
- </visibility>
+ </visibility>
<action
class="org.eclipse.cdt.internal.ui.actions.UpdateUnresolvedIncludesAction"
definitionId="org.eclipse.cdt.ui.menu.updateUnresolvedIncludes"
@@ -1610,7 +1644,7 @@
label="%QuickFix.label"
menubarPath="additions"
tooltip="%QuickFix.tooltip">
- </action>
+ </action>
</viewerContribution>
<viewerContribution
targetID="#ASMEditorRulerContext"
@@ -1645,7 +1679,7 @@
name="type"
value="org.eclipse.cdt.core.problem"/>
</objectContribution>
-
+
<objectContribution
adaptable="true"
id="org.eclipse.cdt.ui.buildConfigContribution"
@@ -1683,7 +1717,7 @@
</menu>
</objectContribution>
</extension>
-
+
<extension
point="org.eclipse.compare.structureCreators">
<structureCreator
@@ -1751,6 +1785,47 @@
</menu>
</menuContribution>
<menuContribution
+ locationURI="menu:org.eclipse.cdt.ui.prjmenu?before=manage">
+ <menu
+ id="org.eclipse.cdt.ui.workingSets.changeBuildConfigMenu"
+ label="%BuildConfigMenuAction.label"
+ tooltip="%BuildConfigAction.tooltip">
+ <visibleWhen>
+ <with
+ variable="activeContexts">
+ <iterate
+ ifEmpty="false"
+ operator="or">
+ <equals
+ value="org.eclipse.cdt.ui.buildConfigActionSet">
+ </equals>
+ </iterate>
+ </with>
+ </visibleWhen>
+ <dynamic
+ class="org.eclipse.cdt.internal.ui.workingsets.ChangeBuildConfigContribution"
+ id="org.eclipse.cdt.ui.changeBuildConfig">
+ </dynamic>
+ </menu>
+ <command
+ commandId="org.eclipse.cdt.ui.menu.manage.configs.command"
+ label="%ManageConfigAction.label"
+ style="push">
+ <visibleWhen>
+ <with
+ variable="activeContexts">
+ <iterate
+ ifEmpty="false"
+ operator="or">
+ <equals
+ value="org.eclipse.cdt.ui.buildConfigActionSet">
+ </equals>
+ </iterate>
+ </with>
+ </visibleWhen>
+ </command>
+ </menuContribution>
+ <menuContribution
locationURI="menu:org.eclipse.cdt.ui.prjmenu?before=wrksets">
<menu
id="org.eclipse.cdt.ui.workingSets.buildMenu"
@@ -1792,6 +1867,23 @@
id="org.eclipse.cdt.ui.activateWorkingSetConfigs">
</dynamic>
</menu>
+ <command
+ commandId="org.eclipse.cdt.ui.menu.wsselection.command"
+ label="%wsselection"
+ style="push">
+ <visibleWhen>
+ <with
+ variable="activeContexts">
+ <iterate
+ ifEmpty="false"
+ operator="or">
+ <equals
+ value="org.eclipse.cdt.ui.buildConfigActionSet">
+ </equals>
+ </iterate>
+ </with>
+ </visibleWhen>
+ </command>
</menuContribution>
</extension>
<extension
@@ -1814,7 +1906,7 @@
<separator name="typeGroup3"/>
<separator
name="historyGroup">
- </separator>
+ </separator>
</menu>
<!-- reorg group -->
<action
@@ -1929,7 +2021,7 @@
menubarPath="org.eclipse.jdt.ui.source.menu/generateGroup"
id="org.eclipse.cdt.ui.actions.GettersAndSetters"
retarget="true">
- </action>
+ </action>
<action
definitionId="org.eclipse.cdt.ui.refactor.implement.method"
label="%Refactoring.implementMethod.label"
@@ -2163,28 +2255,6 @@
style="pulldown"
toolbarPath="org.eclipse.ui.workbench.file/build.group"
tooltip="%BuildConfigAction.tooltip2"/>
- <action
- class="org.eclipse.cdt.ui.actions.ManageConfigsAction"
- enablesFor="+"
- id="org.eclipse.cdt.ui.manageConfigsAction2"
- label="%ManageConfigAction.label"
- menubarPath="project/org.eclipse.cdt.ui.prjmenu/manage"
- />
- <action
- class="org.eclipse.cdt.ui.actions.ChangeBuildConfigMenuAction"
- enablesFor="+"
- id="org.eclipse.cdt.ui.buildConfigMenuAction"
- label="%BuildConfigMenuAction.label"
- menubarPath="project/org.eclipse.cdt.ui.prjmenu/manage"
- style="pulldown"
- tooltip="%BuildConfigAction.tooltip"/>
- <action
- class="org.eclipse.cdt.ui.actions.WorkingSetConfigAction"
- id="org.eclipse.cdt.ui.wsselection"
- label="%wsselection"
- menubarPath="project/org.eclipse.cdt.ui.prjmenu/wrksets"
- style="push"
- />
</actionSet>
<actionSet
label="%CElementCreationActionSet.label"
@@ -2289,26 +2359,26 @@
description="%asmEditor.description"
id="org.eclipse.cdt.ui.asmEditorScope">
</context>
- <context
- name="%cViewScope.name"
- description="%cViewScope.description"
- id="org.eclipse.cdt.ui.cViewScope"
+ <context
+ name="%cViewScope.name"
+ description="%cViewScope.description"
+ id="org.eclipse.cdt.ui.cViewScope"
parentId="org.eclipse.ui.contexts.window"
/>
<context
- name="%macroExpansionHoverScope.name"
- description="%macroExpansionHoverScope.description"
- id="org.eclipse.cdt.ui.macroExpansionHoverScope"
+ name="%macroExpansionHoverScope.name"
+ description="%macroExpansionHoverScope.description"
+ id="org.eclipse.cdt.ui.macroExpansionHoverScope"
parentId="org.eclipse.ui.contexts.dialogAndWindow"
/>
</extension>
<extension point="org.eclipse.ui.bindings">
-
+
<!-- win32: M1=CTRL, M2=SHIFT, M3=ALT, M4=-
carbon: M1=COMMAND, M2=SHIFT, M3=ALT, M4=CTRL -->
-
-<!-- edit -->
+
+<!-- edit -->
<key
sequence="M2+M3+ARROW_UP"
contextId="org.eclipse.cdt.ui.cEditorScope"
@@ -2330,56 +2400,56 @@
commandId="org.eclipse.cdt.ui.edit.text.c.select.last"
schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"/>
<key
- platform="carbon"
+ platform="carbon"
sequence="M2+M3+ARROW_UP"
contextId="org.eclipse.cdt.ui.cEditorScope"
commandId=""
schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"/>
<key
- platform="carbon"
+ platform="carbon"
sequence="M2+M3+ARROW_RIGHT"
contextId="org.eclipse.cdt.ui.cEditorScope"
commandId=""
schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"/>
<key
- platform="carbon"
+ platform="carbon"
sequence="M2+M3+ARROW_LEFT"
contextId="org.eclipse.cdt.ui.cEditorScope"
commandId=""
schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"/>
<key
- platform="carbon"
+ platform="carbon"
sequence="M2+M3+ARROW_DOWN"
contextId="org.eclipse.cdt.ui.cEditorScope"
commandId=""
schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"/>
<key
- platform="carbon"
+ platform="carbon"
sequence="CTRL+SHIFT+PAGE_UP"
contextId="org.eclipse.cdt.ui.cEditorScope"
commandId="org.eclipse.cdt.ui.edit.text.c.select.enclosing"
schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"/>
<key
- platform="carbon"
+ platform="carbon"
sequence="CTRL+SHIFT+END"
contextId="org.eclipse.cdt.ui.cEditorScope"
commandId="org.eclipse.cdt.ui.edit.text.c.select.next"
schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"/>
<key
- platform="carbon"
+ platform="carbon"
sequence="CTRL+SHIFT+HOME"
contextId="org.eclipse.cdt.ui.cEditorScope"
commandId="org.eclipse.cdt.ui.edit.text.c.select.previous"
schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"/>
<key
- platform="carbon"
+ platform="carbon"
sequence="CTRL+SHIFT+PAGE_DOWN"
contextId="org.eclipse.cdt.ui.cEditorScope"
commandId="org.eclipse.cdt.ui.edit.text.c.select.last"
- schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"/>
+ schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"/>
+
-
<key
sequence="M2+M3+S"
commandId="org.eclipse.cdt.ui.edit.text.c.source.quickMenu"
@@ -2401,12 +2471,12 @@
sequence="M1+M2+F"
schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
contextId="org.eclipse.cdt.ui.cEditorScope"
- commandId="org.eclipse.cdt.ui.edit.text.c.format"/>
+ commandId="org.eclipse.cdt.ui.edit.text.c.format"/>
<key
sequence="M2+TAB"
schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
contextId="org.eclipse.cdt.ui.cEditorScope"
- commandId="org.eclipse.ui.edit.text.shiftLeft"/>
+ commandId="org.eclipse.ui.edit.text.shiftLeft"/>
<key
sequence="M1+M2+C"
schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
@@ -2436,7 +2506,7 @@
sequence="M1+M2+\"
contextId="org.eclipse.cdt.ui.cEditorScope"
commandId="org.eclipse.cdt.ui.edit.text.c.remove.block.comment"
- schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"/>
+ schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"/>
<key
sequence="M1+I"
contextId="org.eclipse.cdt.ui.cEditorScope"
@@ -2451,7 +2521,7 @@
sequence="M2+M3+Z"
contextId="org.eclipse.cdt.ui.cEditorScope"
commandId="org.eclipse.cdt.ui.edit.text.c.surround.with.quickMenu"
- schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"/>
+ schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"/>
<key
platform="carbon"
sequence="M2+M3+Z"
@@ -2462,7 +2532,7 @@
sequence="COMMAND+ALT+Z"
contextId="org.eclipse.cdt.ui.cEditorScope"
commandId="org.eclipse.cdt.ui.edit.text.c.surround.with.quickMenu"
- schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"/>
+ schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"/>
<key
sequence="M1+M3+H"
contextId="org.eclipse.cdt.ui.cEditorScope"
@@ -2806,14 +2876,14 @@
<!-- MICROSOFT VISUAL STUDIO KEY SHORTCUTS -->
<!-- =================================================================================== -->
<!-- C/C++ Source Keys -->
-
+
<!-- MSVS Edit.GoToDefinition -->
<key
sequence="F12"
commandId="org.eclipse.cdt.ui.edit.opendecl"
contextId="org.eclipse.cdt.ui.cEditorScope"
schemeId="org.eclipse.cdt.ui.visualstudio"/>
-
+
<!-- Edit Keys -->
<key
@@ -2821,7 +2891,7 @@
commandId="org.eclipse.ui.edit.findNext"
contextId="org.eclipse.ui.textEditorScope"
schemeId="org.eclipse.cdt.ui.visualstudio"/>
-
+
<key
sequence="M2+F3"
commandId="org.eclipse.ui.edit.findPrevious"
@@ -2839,29 +2909,29 @@
commandId="org.eclipse.search.ui.openSearchDialog"
schemeId="org.eclipse.cdt.ui.visualstudio"/>
- <!-- File Keys -->
+ <!-- File Keys -->
<!-- Help Keys -->
<!-- MakeFile Source Keys -->
-
+
<!-- Navigate Keys -->
<key
- sequence="M1+F2"
+ sequence="M1+F2"
commandId="org.eclipse.ui.edit.addBookmark"
schemeId="org.eclipse.cdt.ui.visualstudio"/>
<key
- sequence="M2+F2"
+ sequence="M2+F2"
commandId="org.eclipse.cdt.ui.edit.text.c.goto.next.bookmark"
contextId="org.eclipse.cdt.ui.cEditorScope"
schemeId="org.eclipse.cdt.ui.visualstudio"/>
<key
- sequence="M1+G"
+ sequence="M1+G"
commandId="org.eclipse.ui.edit.text.goto.line"
schemeId="org.eclipse.cdt.ui.visualstudio"/>
-
+
<!-- Project Keys -->
-
+
<!-- MSVS RebuildSolution -->
<!-- THERE IS CURRENTLY NO REBUILD
<key
@@ -2869,39 +2939,39 @@
commandId="org.eclipse.ui.project.rebuildProject"
schemeId="org.eclipse.cdt.ui.visualstudio"/>
-->
- <!-- MSVS NewProject -->
+ <!-- MSVS NewProject -->
<key
sequence="M1+M2+N"
commandId="org.eclipse.ui.newWizard"
schemeId="org.eclipse.cdt.ui.visualstudio"/>
-
- <!-- Run/Debug Keys -->
+
+ <!-- Run/Debug Keys -->
<!-- MSVS Start -->
<key
sequence="M1+F5"
commandId="org.eclipse.debug.ui.commands.RunLast"
schemeId="org.eclipse.cdt.ui.visualstudio"/>
-
+
<!-- MSVS StartWithoutDebugging -->
<key
sequence="F5"
commandId="org.eclipse.debug.ui.commands.DebugLast"
schemeId="org.eclipse.cdt.ui.visualstudio"/>
-
+
<!-- MSVS StepInto -->
<key
sequence="F11"
commandId="org.eclipse.debug.ui.commands.StepInto"
contextId="org.eclipse.debug.ui.debugging"
schemeId="org.eclipse.cdt.ui.visualstudio"/>
-
+
<!-- MSVS StepOver -->
<key
sequence="F10"
commandId="org.eclipse.debug.ui.commands.StepOver"
contextId="org.eclipse.debug.ui.debugging"
schemeId="org.eclipse.cdt.ui.visualstudio"/>
-
+
<!-- MSVS StepReturn -->
<key
sequence="M2+F11"
@@ -2919,13 +2989,13 @@
sequence="F9"
commandId="org.eclipse.debug.ui.commands.ToggleBreakpoint"
schemeId="org.eclipse.cdt.ui.visualstudio"/>
-
+
<!-- MSVS RunToCursor -->
<key
sequence="M1+F10"
commandId="org.eclipse.debug.ui.commands.RunToLine"
schemeId="org.eclipse.cdt.ui.visualstudio"/>
-
+
<!-- MSVS Breakpoints -->
<key
commandId="org.eclipse.ui.views.showView"
@@ -2939,24 +3009,24 @@
<!-- Search Keys -->
<!-- Text Editing Keys -->
-
- <key
+
+ <key
sequence="M1+ARROW_LEFT"
commandId="org.eclipse.ui.edit.text.goto.wordPrevious"
contextId="org.eclipse.ui.textEditorScope"
schemeId="org.eclipse.cdt.ui.visualstudio"/>
-
+
<key
sequence="M1+ARROW_RIGHT"
commandId="org.eclipse.ui.edit.text.goto.wordNext"
contextId="org.eclipse.ui.textEditorScope"
schemeId="org.eclipse.cdt.ui.visualstudio"/>
-
+
<!-- View Keys -->
<!-- Views Keys -->
<!-- Window Keys -->
-
- <!-- MSVC Window NextDocumentWindow -->
+
+ <!-- MSVC Window NextDocumentWindow -->
<key
sequence="M1+TAB"
commandId="org.eclipse.ui.window.nextEditor"
@@ -2967,7 +3037,7 @@
sequence="M1+M2+TAB"
commandId="org.eclipse.ui.window.previousEditor"
schemeId="org.eclipse.cdt.ui.visualstudio"/>
-
+
</extension>
<extension
point="org.eclipse.ui.commands">
@@ -3207,7 +3277,7 @@
name="%refactoringExtractLocalVariable.label"/>
<command
categoryId="org.eclipse.cdt.ui.category.refactoring"
- id="org.eclipse.cdt.ui.refactor.hide.method"
+ id="org.eclipse.cdt.ui.refactor.hide.method"
name="%refactoringHideMethod.label"/>
<command
name="%ActionDefinition.renameElement.name"
@@ -3303,33 +3373,33 @@
<extension
point="org.eclipse.ui.actionSetPartAssociations">
- <actionSetPartAssociation
+ <actionSetPartAssociation
targetID="org.eclipse.cdt.ui.SearchActionSet">
<part id="org.eclipse.cdt.ui.CView"/>
<part id="org.eclipse.cdt.ui.editor.CEditor"/>
<part id="org.eclipse.search.SearchResultView"/>
</actionSetPartAssociation>
- <actionSetPartAssociation
+ <actionSetPartAssociation
targetID="org.eclipse.cdt.ui.CodingActionSet">
<part id="org.eclipse.cdt.ui.editor.CEditor"/>
<part id="org.eclipse.cdt.ui.CView"/>
</actionSetPartAssociation>
- <actionSetPartAssociation
+ <actionSetPartAssociation
targetID="org.eclipse.cdt.ui.OpenActionSet">
<part id="org.eclipse.cdt.ui.editor.CEditor"/>
</actionSetPartAssociation>
- <actionSetPartAssociation
+ <actionSetPartAssociation
targetID="org.eclipse.cdt.ui.NavigationActionSet">
<part id="org.eclipse.cdt.ui.editor.CEditor"/>
</actionSetPartAssociation>
<actionSetPartAssociation
targetID="org.eclipse.ui.edit.text.actionSet.annotationNavigation">
<part id="org.eclipse.cdt.ui.editor.CEditor"/>
- </actionSetPartAssociation>
+ </actionSetPartAssociation>
<actionSetPartAssociation
targetID="org.eclipse.cdt.ui.text.c.actionSet.presentation">
<part id="org.eclipse.cdt.ui.editor.CEditor"/>
- </actionSetPartAssociation>
+ </actionSetPartAssociation>
</extension>
<extension
point="org.eclipse.cdt.ui.BinaryParserPage">
@@ -3480,7 +3550,7 @@
id="org.eclipse.cdt.ui.pdomSearchViewPage"
searchResultClass="org.eclipse.cdt.internal.ui.search.CSearchResult"/>
</extension>
-
+
<extension
point="org.eclipse.ui.propertyPages">
<page
@@ -3491,19 +3561,19 @@
<filter
name="projectNature"
value="org.eclipse.cdt.core.cnature">
- </filter>
+ </filter>
<enabledWhen>
<or>
<adapt type="org.eclipse.core.resources.IProject"/>
-
+
<instanceof value="org.eclipse.core.resources.IFolder"/>
<instanceof value="org.eclipse.cdt.core.model.ICContainer"/>
<instanceof value="org.eclipse.core.resources.IFile"/>
<instanceof value="org.eclipse.cdt.core.model.ITranslationUnit"/>
- </or>
+ </or>
</enabledWhen>
- </page>
+ </page>
<page
name="%CDTIndexerProperty.name"
@@ -3514,7 +3584,7 @@
<adapt type="org.eclipse.core.resources.IProject">
<test property="org.eclipse.core.resources.projectNature"
value="org.eclipse.cdt.core.cnature"/>
- </adapt>
+ </adapt>
</enabledWhen>
</page>
<page
@@ -3526,7 +3596,7 @@
<adapt type="org.eclipse.core.resources.IProject">
<test property="org.eclipse.core.resources.projectNature"
value="org.eclipse.cdt.core.cnature"/>
- </adapt>
+ </adapt>
</enabledWhen>
</page>
<page
@@ -3538,7 +3608,7 @@
<adapt type="org.eclipse.core.resources.IProject">
<test property="org.eclipse.core.resources.projectNature"
value="org.eclipse.cdt.core.cnature"/>
- </adapt>
+ </adapt>
</enabledWhen>
</page>
<page
@@ -3550,7 +3620,7 @@
<adapt type="org.eclipse.core.resources.IProject">
<test property="org.eclipse.core.resources.projectNature"
value="org.eclipse.cdt.core.cnature"/>
- </adapt>
+ </adapt>
</enabledWhen>
</page>
<page
@@ -3578,7 +3648,7 @@
<adapt type="org.eclipse.core.resources.IProject">
<test property="org.eclipse.core.resources.projectNature"
value="org.eclipse.cdt.core.cnature"/>
- </adapt>
+ </adapt>
</enabledWhen>
</page>
<page
@@ -3672,7 +3742,7 @@
point="org.eclipse.core.runtime.preferences">
<initializer class="org.eclipse.cdt.ui.CUIPreferenceInitializer"/>
</extension>
-
+
<!-- Default folding -->
<extension
point= "org.eclipse.cdt.ui.foldingStructureProviders">
@@ -3787,7 +3857,7 @@
<partition type="__c_preprocessor"/>
</completionProposalComputer>
</extension>
-
+
<extension
id="KeywordCompletionProposalComputer"
point="org.eclipse.cdt.ui.completionProposalComputer">
@@ -3802,7 +3872,7 @@
<extension
point="org.eclipse.cdt.ui.completionProposalComputer"
id="TemplateCompletionProposalComputer">
- <completionProposalComputer
+ <completionProposalComputer
class="org.eclipse.cdt.internal.ui.text.contentassist.TemplateCompletionProposalComputer"
categoryId="org.eclipse.cdt.ui.templateProposalCategory">
<partition type="__dftl_partition_content_type"/>
@@ -3835,7 +3905,7 @@
<partition type="__c_preprocessor"/>
</completionProposalComputer>
</extension>
-
+
<!-- the parameterized content assist action and keybindings for our contributed computers -->
<extension
point="org.eclipse.ui.commands">
@@ -3916,7 +3986,7 @@
overrides="org.eclipse.ui.navigator.resources.OpenActions">
<enablement>
<or>
- <instanceof value="org.eclipse.cdt.core.model.ICElement" />
+ <instanceof value="org.eclipse.cdt.core.model.ICElement" />
<and>
<instanceof value="org.eclipse.core.resources.IProject"/>
<test property="org.eclipse.core.resources.projectNature"
@@ -3931,7 +4001,7 @@
id="org.eclipse.cdt.ui.navigator.actions.build">
<enablement>
<or>
- <instanceof value="org.eclipse.cdt.core.model.ICElement" />
+ <instanceof value="org.eclipse.cdt.core.model.ICElement" />
<and>
<instanceof value="org.eclipse.core.resources.IProject"/>
<test property="org.eclipse.core.resources.projectNature"
@@ -3980,7 +4050,7 @@
overrides="org.eclipse.ui.navigator.resources.actions.RefactorActions">
<enablement>
<or>
- <instanceof value="org.eclipse.cdt.core.model.ICElement" />
+ <instanceof value="org.eclipse.cdt.core.model.ICElement" />
<and>
<instanceof value="org.eclipse.core.resources.IResource" />
<test property="org.eclipse.core.resources.projectNature"
@@ -4001,7 +4071,7 @@
value="org.eclipse.cdt.ui.CPerspective">
</equals>
</with>
- <instanceof value="org.eclipse.cdt.core.model.ICElement" />
+ <instanceof value="org.eclipse.cdt.core.model.ICElement" />
<and>
<instanceof value="org.eclipse.core.resources.IProject"/>
<test property="org.eclipse.core.resources.projectNature"
@@ -4017,7 +4087,7 @@
wizardId="org.eclipse.cdt.ui.wizards.NewSourceFileCreationWizard">
<enablement>
<or>
- <instanceof value="org.eclipse.cdt.core.model.ICElement" />
+ <instanceof value="org.eclipse.cdt.core.model.ICElement" />
<and>
<instanceof value="org.eclipse.core.resources.IProject"/>
<test property="org.eclipse.core.resources.projectNature"
@@ -4033,7 +4103,7 @@
wizardId="org.eclipse.cdt.ui.wizards.NewHeaderFileCreationWizard">
<enablement>
<or>
- <instanceof value="org.eclipse.cdt.core.model.ICElement" />
+ <instanceof value="org.eclipse.cdt.core.model.ICElement" />
<and>
<instanceof value="org.eclipse.core.resources.IProject"/>
<test property="org.eclipse.core.resources.projectNature"
@@ -4049,7 +4119,7 @@
wizardId="org.eclipse.cdt.ui.wizards.NewSourceFolderCreationWizard">
<enablement>
<or>
- <instanceof value="org.eclipse.cdt.core.model.ICElement" />
+ <instanceof value="org.eclipse.cdt.core.model.ICElement" />
<and>
<instanceof value="org.eclipse.core.resources.IContainer"/>
<test property="org.eclipse.core.resources.projectNature"
@@ -4065,7 +4135,7 @@
wizardId="org.eclipse.cdt.ui.wizards.NewClassCreationWizard">
<enablement>
<or>
- <instanceof value="org.eclipse.cdt.core.model.ICElement" />
+ <instanceof value="org.eclipse.cdt.core.model.ICElement" />
<and>
<instanceof value="org.eclipse.core.resources.IProject"/>
<test property="org.eclipse.core.resources.projectNature"
@@ -4080,7 +4150,7 @@
wizardId="org.eclipse.cdt.ui.wizards.NewFileCreationWizard">
<enablement>
<or>
- <instanceof value="org.eclipse.cdt.core.model.ICElement" />
+ <instanceof value="org.eclipse.cdt.core.model.ICElement" />
<and>
<instanceof value="org.eclipse.core.resources.IContainer"/>
<test property="org.eclipse.core.resources.projectNature"
@@ -4174,7 +4244,7 @@
</selectionEnablement>
</linkHelper>
</extension>
-
+
<extension
point="org.eclipse.ui.navigator.viewer">
<viewerContentBinding viewerId="org.eclipse.ui.navigator.ProjectExplorer">
@@ -4221,8 +4291,20 @@
namespace="org.eclipse.cdt.ui"
properties="hasCProjects"
type="org.eclipse.ui.IWorkingSet"/>
+ <propertyTester
+ class="org.eclipse.cdt.internal.ui.workingsets.NonEmptyWorkingSetPropertyTester"
+ id="org.eclipse.cdt.ui.nonEmptyWorkingSetPropertyTester"
+ namespace="org.eclipse.cdt.ui"
+ properties="hasNonEmptyWorkingSet"
+ type="java.lang.Object"/>
+ <propertyTester
+ class="org.eclipse.cdt.internal.ui.workingsets.HasManagedCdtProjectSelection"
+ id="org.eclipse.cdt.ui.hasManagedCdtProjectSelection"
+ namespace="org.eclipse.cdt.ui"
+ properties="hasManagedCdtProjectSelection"
+ type="java.util.Collection"/>
</extension>
-
+
<extension
point="org.eclipse.ui.exportWizards">
<category
@@ -4302,7 +4384,7 @@
id="org.eclipse.cdt.ui.provider1">
</provider>
</extension>
-
+
<extension
point="org.eclipse.cdt.ui.DocCommentOwner">
<owner
@@ -4493,7 +4575,7 @@
<enabledWhen>
<adapt type="org.eclipse.ui.IWorkingSet">
<test property="org.eclipse.cdt.ui.hasCProjects"/>
- </adapt>
+ </adapt>
</enabledWhen>
</page>
</extension>
@@ -4578,7 +4660,7 @@
<handler
class="org.eclipse.ui.internal.handlers.WidgetMethodHandler:undo"
commandId="org.eclipse.ui.edit.undo">
- <activeWhen>
+ <activeWhen>
<with variable="activeFocusControlId">
<equals value="org.eclipse.cdt.ui.FileListControl"/>
</with>
@@ -4587,7 +4669,7 @@
<handler
class="org.eclipse.ui.internal.handlers.WidgetMethodHandler:redo"
commandId="org.eclipse.ui.edit.redo">
- <activeWhen>
+ <activeWhen>
<with variable="activeFocusControlId">
<equals value="org.eclipse.cdt.ui.FileListControl"/>
</with>
@@ -4596,7 +4678,7 @@
<handler
class="org.eclipse.ui.internal.handlers.WidgetMethodHandler:delete"
commandId="org.eclipse.ui.edit.delete">
- <activeWhen>
+ <activeWhen>
<with variable="activeFocusControlId">
<equals value="org.eclipse.cdt.ui.FileListControl"/>
</with>
@@ -4693,6 +4775,16 @@
categoryId="org.eclipse.ui.category.project"
id="org.eclipse.cdt.ui.menu.createParserLog">
</command>
+ <command
+ name="%wsselection.command.name"
+ categoryId="org.eclipse.ui.category.project"
+ id="org.eclipse.cdt.ui.menu.wsselection.command">
+ </command>
+ <command
+ name="%ManageConfigs.command.name"
+ categoryId="org.eclipse.ui.category.project"
+ id="org.eclipse.cdt.ui.menu.manage.configs.command">
+ </command>
</extension>
<extension
point="org.eclipse.ui.handlers">
@@ -4720,6 +4812,24 @@
class="org.eclipse.cdt.internal.ui.actions.CreateParserLogHandler"
commandId="org.eclipse.cdt.ui.menu.createParserLog">
</handler>
+ <handler
+ class="org.eclipse.cdt.internal.ui.actions.WorkingSetConfigHandler"
+ commandId="org.eclipse.cdt.ui.menu.wsselection.command">
+ <enabledWhen>
+ <test
+ property="org.eclipse.cdt.ui.hasNonEmptyWorkingSet">
+ </test>
+ </enabledWhen>
+ </handler>
+ <handler
+ class="org.eclipse.cdt.internal.ui.actions.ManageConfigsHandler"
+ commandId="org.eclipse.cdt.ui.menu.manage.configs.command">
+ <enabledWhen>
+ <test
+ property="org.eclipse.cdt.ui.hasManagedCdtProjectSelection">
+ </test>
+ </enabledWhen>
+ </handler>
</extension>
<extension
point="org.eclipse.ui.menus">
@@ -4921,7 +5031,7 @@
<key name="content_assist_parameters_background"/>
<key name="content_assist_parameters_foreground"/>
<key name="sourceHoverBackgroundColor"/>
- <key name="sourceHoverBackgroundColor.SystemDefault"/>
+ <key name="sourceHoverBackgroundColor.SystemDefault"/>
<key name="org.eclipse.cdt.ui.editors.textfont"/>
<key name="org.eclipse.cdt.ui.editor.showSegments"/>
<key name="CEditor.ShowTemporaryProblem"/>
@@ -4992,7 +5102,7 @@
</entry>
</mapping>
<description>
- %transfer.EditorBehavior.description
+ %transfer.EditorBehavior.description
</description>
</transfer>
<transfer
@@ -5020,7 +5130,7 @@
</entry>
</mapping>
<description>
- %transfer.CodeStyle.description
+ %transfer.CodeStyle.description
</description>
</transfer>
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/corext/codemanipulation/CdtTemplate.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/corext/codemanipulation/CdtTemplate.java
new file mode 100644
index 00000000000..6728b1c96c8
--- /dev/null
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/corext/codemanipulation/CdtTemplate.java
@@ -0,0 +1,72 @@
+/*******************************************************************************
+ * Copyright (c) 2021 Wind River Systems, Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Lidia Popescu (Wind River Systems) - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.cdt.internal.corext.codemanipulation;
+
+import java.util.Objects;
+
+import org.eclipse.jface.text.templates.Template;
+
+public class CdtTemplate implements Comparable<CdtTemplate> {
+
+ private String id;
+ private Template template;
+ private String key;
+ private String name;
+
+ /**
+ * @param id - should be the id from TemplatePersistenceData
+ * @param template
+ */
+ public CdtTemplate(String id, Template template) {
+ this.id = id;
+ this.template = template;
+ if (id == null) {
+ this.key = ""; //$NON-NLS-1$
+ } else {
+ this.key = id;
+ }
+ if (template == null || template.getName() == null) {
+ this.name = ""; //$NON-NLS-1$
+ } else {
+ this.name = template.getName();
+ }
+ }
+
+ public String getID() {
+ return id;
+ }
+
+ public Template getTemplate() {
+ return template;
+ }
+
+ public String getKey() {
+ return key;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public int compareTo(CdtTemplate cdtTmp) {
+ int value = Objects.compare(key, cdtTmp.key, String::compareTo);
+ if (value == 0) {
+ return Objects.compare(name, cdtTmp.name, String.CASE_INSENSITIVE_ORDER);
+ }
+ return value;
+ }
+
+}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/corext/codemanipulation/IncludeInfo.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/corext/codemanipulation/IncludeInfo.java
index d44b1d5fe3f..43a0609ca7f 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/corext/codemanipulation/IncludeInfo.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/corext/codemanipulation/IncludeInfo.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2012, 2013 Google, Inc and others.
+ * Copyright (c) 2012, 2020 Google, Inc and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -10,10 +10,11 @@
*
* Contributors:
* Sergey Prigogin (Google) - initial API and implementation
+ * Alexander Fedorov (ArSysOp) - Bug 561993 - Remove dependency to com.ibm.icu from CDT UI
*******************************************************************************/
package org.eclipse.cdt.internal.corext.codemanipulation;
-import com.ibm.icu.text.Collator;
+import java.text.Collator;
public class IncludeInfo implements Comparable<IncludeInfo> {
private static final Collator COLLATOR = Collator.getInstance();
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/corext/codemanipulation/StubUtility.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/corext/codemanipulation/StubUtility.java
index c2e495abdde..af2b0f94e18 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/corext/codemanipulation/StubUtility.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/corext/codemanipulation/StubUtility.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2001, 2016 IBM Corporation and others.
+ * Copyright (c) 2001, 2021 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -13,11 +13,13 @@
* Anton Leherbauer (Wind River Systems)
* Jens Elmenthaler (Verigy) - http://bugs.eclipse.org/235586
* Sergey Prigogin (Google)
+ * Lidia Popescu (Wind River Systems) - http://bugs.eclipse.org/572755
*******************************************************************************/
package org.eclipse.cdt.internal.corext.codemanipulation;
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -41,7 +43,6 @@ import org.eclipse.cdt.internal.corext.template.c.CodeTemplateContextType;
import org.eclipse.cdt.internal.corext.template.c.FileTemplateContext;
import org.eclipse.cdt.internal.corext.template.c.FileTemplateContextType;
import org.eclipse.cdt.internal.corext.util.Strings;
-import org.eclipse.cdt.internal.ui.text.CBreakIterator;
import org.eclipse.cdt.internal.ui.util.NameComposer;
import org.eclipse.cdt.internal.ui.viewsupport.ProjectTemplateStore;
import org.eclipse.cdt.ui.CUIPlugin;
@@ -74,8 +75,6 @@ import org.eclipse.text.edits.MalformedTreeException;
import org.eclipse.text.edits.MultiTextEdit;
import org.eclipse.text.templates.TemplatePersistenceData;
-import com.ibm.icu.text.BreakIterator;
-
public class StubUtility {
private static final String[] EMPTY = {};
@@ -762,13 +761,27 @@ public class StubUtility {
}
templateDatas = projectStore.getTemplateData();
}
+
List<Template> result = new ArrayList<>();
+ List<CdtTemplate> cdtResult = new ArrayList<>();
for (int j = 0; j < contentTypes.length; j++) {
for (int i = 0; i < templateDatas.length; i++) {
Template template = templateDatas[i].getTemplate();
+ if (template == null)
+ continue;
final String contextTypeId = template.getContextTypeId();
if (FileTemplateContextType.isContextTypeForContentType(contextTypeId, contentTypes[j])) {
- result.add(template);
+ cdtResult.add(new CdtTemplate(templateDatas[i].getId(), templateDatas[i].getTemplate()));
+ }
+ }
+ }
+
+ Collections.sort(cdtResult);
+ for (int j = 0; j < contentTypes.length; j++) {
+ for (CdtTemplate c : cdtResult) {
+ if (FileTemplateContextType.isContextTypeForContentType(c.getTemplate().getContextTypeId(),
+ contentTypes[j])) {
+ result.add(c.getTemplate());
}
}
}
@@ -935,39 +948,28 @@ public class StubUtility {
/**
* Returns the trimmed field name. Leading and trailing non-alphanumeric characters are trimmed.
- * If the first word of the name consists of a single letter and the name contains more than
- * one word, the first word is removed.
+ * If the field name starts with the prefix defined in the coding style, the prefix is removed.
*
* @param fieldName a field name to trim
* @return the trimmed field name
*/
public static String trimFieldName(String fieldName) {
- CBreakIterator iterator = new CBreakIterator();
- iterator.setText(fieldName);
+ IPreferencesService preferences = Platform.getPreferencesService();
+ String prefix = preferences.getString(CUIPlugin.PLUGIN_ID, PreferenceConstants.NAME_STYLE_FIELD_PREFIX, "", //$NON-NLS-1$
+ null);
+ if (fieldName.startsWith(prefix))
+ fieldName = fieldName.substring(prefix.length());
+
int firstWordStart = -1;
- int firstWordEnd = -1;
- int secondWordStart = -1;
int lastWordEnd = -1;
- int end;
- for (int start = iterator.first(); (end = iterator.next()) != BreakIterator.DONE; start = end) {
- if (Character.isLetterOrDigit(fieldName.charAt(start))) {
- int pos = end;
- while (--pos >= start && !Character.isLetterOrDigit(fieldName.charAt(pos))) {
- }
- lastWordEnd = pos + 1;
+ for (int i = 0; i < fieldName.length(); ++i) {
+ if (Character.isLetterOrDigit(fieldName.charAt(i))) {
+ lastWordEnd = i + 1;
if (firstWordStart < 0) {
- firstWordStart = start;
- firstWordEnd = lastWordEnd;
- } else if (secondWordStart < 0) {
- secondWordStart = start;
+ firstWordStart = i;
}
}
}
- // Skip the first word if it consists of a single letter and the name contains more than
- // one word.
- if (firstWordStart >= 0 && firstWordStart + 1 == firstWordEnd && secondWordStart >= 0) {
- firstWordStart = secondWordStart;
- }
if (firstWordStart < 0) {
return fieldName;
} else {
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/corext/fix/LinkedProposalModel.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/corext/fix/LinkedProposalModel.java
index 087be3a3a59..b15588d664c 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/corext/fix/LinkedProposalModel.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/corext/fix/LinkedProposalModel.java
@@ -49,7 +49,7 @@ public class LinkedProposalModel {
public Iterator<LinkedProposalPositionGroup> getPositionGroupIterator() {
if (fPositionGroups == null) {
- return new Iterator<LinkedProposalPositionGroup>() {
+ return new Iterator<>() {
@Override
public boolean hasNext() {
return false;
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/corext/refactoring/code/flow/FlowAnalyzer.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/corext/refactoring/code/flow/FlowAnalyzer.java
index ec01bb42528..d7915b35b77 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/corext/refactoring/code/flow/FlowAnalyzer.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/corext/refactoring/code/flow/FlowAnalyzer.java
@@ -17,6 +17,7 @@ package org.eclipse.cdt.internal.corext.refactoring.code.flow;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
+import java.util.Optional;
import org.eclipse.cdt.core.dom.ast.ASTGenericVisitor;
import org.eclipse.cdt.core.dom.ast.IASTArrayDeclarator;
@@ -918,10 +919,10 @@ abstract class FlowAnalyzer extends ASTGenericVisitor {
if (!(variable instanceof IField)) {
int index = fFlowContext.getIndexFromLocal(variable);
if (index >= 0) {
- int accessMode = CPPVariableReadWriteFlags.getReadWriteFlags(node);
- if (accessMode != 0) {
+ Optional<Integer> accessMode = CPPVariableReadWriteFlags.getReadWriteFlags(node);
+ if (accessMode.isPresent() && accessMode.get() != 0) {
int flowInfoMode = FlowInfo.UNUSED;
- switch (accessMode) {
+ switch (accessMode.get()) {
case PDOMName.READ_ACCESS:
flowInfoMode = FlowInfo.READ;
break;
@@ -933,6 +934,8 @@ abstract class FlowAnalyzer extends ASTGenericVisitor {
break;
}
setFlowInfo(node, new LocalFlowInfo(variable, index, flowInfoMode, fFlowContext));
+ } else if (!accessMode.isPresent()) {
+ setFlowInfo(node, new LocalFlowInfo(variable, index, FlowInfo.UNKNOWN, fFlowContext));
}
}
}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/corext/template/c/FileTemplateContextType.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/corext/template/c/FileTemplateContextType.java
index 600ba89db3b..e1424bf588c 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/corext/template/c/FileTemplateContextType.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/corext/template/c/FileTemplateContextType.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2016 Wind River Systems, Inc. and others.
+ * Copyright (c) 2007, 2020 Wind River Systems, Inc. and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -10,9 +10,12 @@
*
* Contributors:
* Anton Leherbauer (Wind River Systems) - initial API and implementation
+ * Alexander Fedorov (ArSysOp) - Bug 561993 - Remove dependency to com.ibm.icu from CDT UI
*******************************************************************************/
package org.eclipse.cdt.internal.corext.template.c;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
@@ -33,9 +36,6 @@ import org.eclipse.jface.text.templates.TemplateVariableResolver;
import org.eclipse.jface.text.templates.TemplateVariableType;
import org.eclipse.text.templates.ContextTypeRegistry;
-import com.ibm.icu.text.DateFormat;
-import com.ibm.icu.text.SimpleDateFormat;
-
/**
* A generic template context type for file resources based on content-type.
*
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/corext/util/Messages.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/corext/util/Messages.java
index 0b9703cc630..fd2dc8c77ab 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/corext/util/Messages.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/corext/util/Messages.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2005, 2011 IBM Corporation and others.
+ * Copyright (c) 2005, 2020 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -10,10 +10,11 @@
*
* Contributors:
* IBM Corporation - initial API and implementation
+ * Alexander Fedorov (ArSysOp) - Bug 561993 - Remove dependency to com.ibm.icu from CDT UI
*******************************************************************************/
package org.eclipse.cdt.internal.corext.util;
-import com.ibm.icu.text.MessageFormat;
+import java.text.MessageFormat;
/**
* Helper class to format message strings.
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/BaseCElementContentProvider.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/BaseCElementContentProvider.java
index cc92fdd0203..c088f2bfece 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/BaseCElementContentProvider.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/BaseCElementContentProvider.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2005, 2015 IBM Corporation and others.
+ * Copyright (c) 2005, 2021 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -15,10 +15,14 @@
package org.eclipse.cdt.internal.ui;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
+import java.util.LinkedList;
import java.util.List;
+import java.util.ListIterator;
import java.util.Map;
+import java.util.function.BooleanSupplier;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.model.CModelException;
@@ -37,10 +41,12 @@ import org.eclipse.cdt.core.model.IMacro;
import org.eclipse.cdt.core.model.IMember;
import org.eclipse.cdt.core.model.INamespace;
import org.eclipse.cdt.core.model.IParent;
+import org.eclipse.cdt.core.model.IPragma;
import org.eclipse.cdt.core.model.ISourceReference;
import org.eclipse.cdt.core.model.ISourceRoot;
import org.eclipse.cdt.core.model.ITranslationUnit;
import org.eclipse.cdt.core.model.IWorkingCopy;
+import org.eclipse.cdt.internal.ui.cview.DividerLine;
import org.eclipse.cdt.ui.CDTUITools;
import org.eclipse.cdt.ui.CElementGrouping;
import org.eclipse.cdt.ui.IncludesGrouping;
@@ -50,6 +56,7 @@ import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.Assert;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.Viewer;
@@ -85,14 +92,29 @@ public class BaseCElementContentProvider implements ITreeContentProvider {
protected boolean fNamespacesGrouping = false;
protected boolean fMemberGrouping = false;
protected boolean fMacroGrouping = false;
+ protected boolean fProvidePragmaMarks = false;
+
+ private BooleanSupplier fIsSorted;
public BaseCElementContentProvider() {
- this(false, false);
+ this(false, false, false, () -> false);
}
- public BaseCElementContentProvider(boolean provideMembers, boolean provideWorkingCopy) {
+ /**
+ *
+ * @param provideMembers
+ * @param provideWorkingCopy
+ * @param providePragmaMarks Include {@link PragmaMark} and its {@link DividerLine}s
+ * @param isSorted is a non-<code>null</code> supplier that returns true if the content is sorted, this is used
+ * to remove {@link DividerLine}s when sorted
+ */
+ public BaseCElementContentProvider(boolean provideMembers, boolean provideWorkingCopy, boolean providePragmaMarks,
+ BooleanSupplier isSorted) {
+ Assert.isNotNull(isSorted);
fProvideMembers = provideMembers;
fProvideWorkingCopy = provideWorkingCopy;
+ fProvidePragmaMarks = providePragmaMarks;
+ fIsSorted = isSorted;
}
/**
@@ -187,6 +209,21 @@ public class BaseCElementContentProvider implements ITreeContentProvider {
fMacroGrouping = enable;
}
+ /**
+ * @return whether hiding pragma mark is enabled
+ */
+ public boolean isHidePragmaMarkEnabled() {
+ return !fProvidePragmaMarks;
+ }
+
+ /**
+ * Enable/disable hiding pragma mark
+ * @param enable
+ */
+ public void setHidePragmaMark(boolean enable) {
+ fProvidePragmaMarks = !enable;
+ }
+
/* (non-Cdoc)
* Method declared on IContentProvider.
*/
@@ -452,6 +489,7 @@ public class BaseCElementContentProvider implements ITreeContentProvider {
protected Object[] getTranslationUnitChildren(ITranslationUnit unit) throws CModelException {
Object[] children = unit.getChildren();
+ children = filterAndTransformPragmas(children);
if (fIncludesGrouping) {
boolean hasInclude = false;
ArrayList<Object> list = new ArrayList<>(children.length);
@@ -538,6 +576,42 @@ public class BaseCElementContentProvider implements ITreeContentProvider {
return children;
}
+ /**
+ * Filter and transform pragma elements in the list
+ * @param children the list of objects
+ * @return a new list of objects
+ */
+ private Object[] filterAndTransformPragmas(Object[] children) {
+ List<Object> list = new LinkedList<>(Arrays.asList(children));
+ boolean isSorted = fIsSorted.getAsBoolean();
+ for (ListIterator<Object> iterator = list.listIterator(); iterator.hasNext();) {
+ Object object = iterator.next();
+ if (object instanceof IPragma) {
+ IPragma pragma = (IPragma) object;
+ // remove the pragma
+ iterator.remove();
+ if (!fProvidePragmaMarks) {
+ continue;
+ }
+
+ pragma.getPragmaMarkInfo().ifPresent(info -> {
+ if (!isSorted && info.isDividerBeforeMark()) {
+ iterator.add(new DividerLine(pragma));
+ }
+ if (!info.getMarkName().isEmpty()) {
+ // Add the pragma back in if the mark has something to display
+ iterator.add(pragma);
+ }
+ if (!isSorted && info.isDividerAfterMark()) {
+ iterator.add(new DividerLine(pragma));
+ }
+ });
+ }
+ }
+
+ return list.toArray();
+ }
+
protected Object[] getNamespaceChildren(IParent element) throws CModelException {
Object[] children = element.getChildren();
if (fMemberGrouping) {
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CPluginImages.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CPluginImages.java
index a69660fcbd9..85e1a497857 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CPluginImages.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CPluginImages.java
@@ -378,6 +378,7 @@ public class CPluginImages {
public static final String IMG_MENU_SHIFT_LEFT = NAME_PREFIX + "shift_l_edit.gif"; //$NON-NLS-1$
public static final String IMG_MENU_OPEN_INCLUDE = NAME_PREFIX + "open_include.gif"; //$NON-NLS-1$
public static final String IMG_MENU_GROUP_INCLUDE = NAME_PREFIX + "group_include.gif"; //$NON-NLS-1$
+ public static final String IMG_MENU_HIDE_PRAGMA_MARKS = NAME_PREFIX + "outline_mark.png"; //$NON-NLS-1$
public static final String IMG_MENU_SEGMENT_EDIT = NAME_PREFIX + "segment_edit.gif"; //$NON-NLS-1$
public static final String IMG_MENU_CODE_ASSIST = NAME_PREFIX + "metharg_obj.gif"; //$NON-NLS-1$
public static final String IMG_MENU_COLLAPSE_ALL = NAME_PREFIX + "collapseall.png"; //$NON-NLS-1$
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/actions/ActionMessages.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/actions/ActionMessages.java
index 862faf82193..8617f1b40cd 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/actions/ActionMessages.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/actions/ActionMessages.java
@@ -111,6 +111,9 @@ public class ActionMessages extends NLS {
public static String CopyQualifiedNameAction_ActionName;
public static String CopyQualifiedNameAction_ErrorTitle;
public static String CopyQualifiedNameAction_NoElementToQualify;
+ public static String HidePragmaMarks_label;
+ public static String HidePragmaMarks_tooltip;
+ public static String HidePragmaMarks_description;
static {
// Initialize resource bundle.
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/actions/ActionMessages.properties b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/actions/ActionMessages.properties
index baeddfc01b3..60f94783464 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/actions/ActionMessages.properties
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/actions/ActionMessages.properties
@@ -77,6 +77,10 @@ MacroGroupingAction_label= Group Macros
MacroGroupingAction_tooltip= Group macro definitions
MacroGroupingAction_description= Group macro definitions
+HidePragmaMarks_label=Hide Dividers
+HidePragmaMarks_tooltip=Hide Dividers (#pragma mark or #pragma region/endregion)
+HidePragmaMarks_description=Hide Dividers (#pragma mark or #pragma region/endregion)
+
COutlineInformationControl_viewMenu_sort_label=Sort
ChangeBuildConfigMenuAction_title=Sorry
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/actions/CreateParserLogAction.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/actions/CreateParserLogAction.java
index 7f2cd706952..da57db0f6db 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/actions/CreateParserLogAction.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/actions/CreateParserLogAction.java
@@ -131,7 +131,7 @@ public class CreateParserLogAction implements IObjectActionDelegate {
}
}
- private static final Comparator<String> COMP_INSENSITIVE = new Comparator<String>() {
+ private static final Comparator<String> COMP_INSENSITIVE = new Comparator<>() {
@Override
public int compare(String o1, String o2) {
return o1.toUpperCase().compareTo(o2.toUpperCase());
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/actions/FoldingMessages.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/actions/FoldingMessages.java
index a88fa49f62f..c0c79afbec2 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/actions/FoldingMessages.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/actions/FoldingMessages.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
+ * Copyright (c) 2000, 2020 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -10,14 +10,14 @@
*
* Contributors:
* IBM Corporation - initial API and implementation
+ * Alexander Fedorov (ArSysOp) - Bug 561993 - Remove dependency to com.ibm.icu from CDT UI
*******************************************************************************/
package org.eclipse.cdt.internal.ui.actions;
+import java.text.MessageFormat;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
-import com.ibm.icu.text.MessageFormat;
-
/**
* Class that gives access to the folding messages resource bundle.
*/
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/actions/ManageConfigsHandler.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/actions/ManageConfigsHandler.java
new file mode 100644
index 00000000000..0e6598f7789
--- /dev/null
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/actions/ManageConfigsHandler.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Simeon Andreev and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Simeon Andreev - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.internal.ui.actions;
+
+import org.eclipse.cdt.ui.newui.IConfigManager;
+import org.eclipse.cdt.ui.newui.ManageConfigSelector;
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.handlers.HandlerUtil;
+
+/**
+ * Handler for command which lets to manage (add/remove etc.) build configurations of the project.
+ */
+public class ManageConfigsHandler extends AbstractHandler {
+
+ public static final String COMMAND_ID = "org.eclipse.cdt.ui.menu.wsselection.command"; //$NON-NLS-1$
+
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ IStructuredSelection selection = HandlerUtil.getCurrentStructuredSelection(event);
+ if (!selection.isEmpty()) {
+ IProject[] obs = ManageConfigSelector.getProjects(selection.toArray());
+ IConfigManager cm = ManageConfigSelector.getManager(obs);
+ if (cm != null && obs != null) {
+ cm.manage(obs, true);
+ }
+ }
+ return null;
+ }
+}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/actions/WorkingSetConfigHandler.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/actions/WorkingSetConfigHandler.java
new file mode 100644
index 00000000000..18ad18ace82
--- /dev/null
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/actions/WorkingSetConfigHandler.java
@@ -0,0 +1,53 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Simeon Andreev and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Simeon Andreev - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.internal.ui.actions;
+
+import org.eclipse.cdt.internal.ui.workingsets.WorkingSetConfigurationDialog;
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.IWorkingSet;
+import org.eclipse.ui.IWorkingSetManager;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.handlers.HandlerUtil;
+
+public class WorkingSetConfigHandler extends AbstractHandler {
+
+ public static final String COMMAND_ID = "org.eclipse.cdt.ui.menu.manage.configs.command"; //$NON-NLS-1$
+
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ boolean enabled = hasNonEmptyWorksets();
+ if (enabled) {
+ IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindow(event);
+ new WorkingSetConfigurationDialog(window.getShell()).open();
+ }
+ return null;
+ }
+
+ private boolean hasNonEmptyWorksets() {
+ IWorkingSetManager workingSetManager = PlatformUI.getWorkbench().getWorkingSetManager();
+ IWorkingSet[] workingSets = workingSetManager.getWorkingSets();
+ if (workingSets != null) {
+ for (IWorkingSet workingSet : workingSets) {
+ if (!workingSet.isEmpty()) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/BringToTopOnBuild.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/BringToTopOnBuild.java
new file mode 100644
index 00000000000..046d5f6f985
--- /dev/null
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/BringToTopOnBuild.java
@@ -0,0 +1,48 @@
+/*******************************************************************************
+ * Copyright (c) 2020, Simeon Andreev and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Simeon Andreev - Initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.cdt.internal.ui.buildconsole;
+
+import org.eclipse.cdt.internal.ui.preferences.BuildConsolePreferencePage;
+import org.eclipse.cdt.ui.CDTSharedImages;
+import org.eclipse.cdt.ui.CUIPlugin;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.preference.IPreferenceStore;
+
+/**
+ * Set whether to show the build console on activity.
+ */
+public class BringToTopOnBuild extends Action {
+
+ public BringToTopOnBuild() {
+ super(ConsoleMessages.BringToTopOnBuild);
+ propertyChange();
+ setToolTipText(ConsoleMessages.BringToTopOnBuild);
+ setImageDescriptor(CDTSharedImages.getImageDescriptor(CDTSharedImages.IMG_OBJS_BRING_CONSOLE_TO_TOP_ON_BUILD));
+ }
+
+ @Override
+ public void run() {
+ super.run();
+ boolean isSet = isChecked();
+ IPreferenceStore store = CUIPlugin.getDefault().getPreferenceStore();
+ store.setValue(BuildConsolePreferencePage.PREF_CONSOLE_ON_TOP, isSet);
+ }
+
+ public void propertyChange() {
+ boolean isChecked = BuildConsolePreferencePage.isConsoleOnTop();
+ setChecked(isChecked);
+ }
+
+}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/BuildConsoleManager.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/BuildConsoleManager.java
index c456e9f212c..9e1dc20db17 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/BuildConsoleManager.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/BuildConsoleManager.java
@@ -20,6 +20,7 @@ import java.net.URI;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
+import java.util.concurrent.atomic.AtomicBoolean;
import org.eclipse.cdt.core.resources.IConsole;
import org.eclipse.cdt.internal.core.LocalProjectScope;
@@ -45,6 +46,7 @@ import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.IDocumentPartitioner;
import org.eclipse.jface.util.IPropertyChangeListener;
import org.eclipse.jface.util.PropertyChangeEvent;
+import org.eclipse.swt.custom.StyledText;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.RGB;
import org.eclipse.swt.widgets.Display;
@@ -55,6 +57,7 @@ import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.console.ConsolePlugin;
import org.eclipse.ui.console.IConsoleConstants;
+import org.eclipse.ui.console.IConsoleListener;
import org.eclipse.ui.console.IConsoleView;
import org.osgi.service.prefs.Preferences;
@@ -114,10 +117,14 @@ public class BuildConsoleManager implements IBuildConsoleManager, IResourceChang
private IProject fLastProject;
+ private IConsoleListener fConsoleListener;
+ private final AtomicBoolean fWasClosed;
+
/**
* Default constructor.
*/
public BuildConsoleManager() {
+ fWasClosed = new AtomicBoolean(false);
}
/**
@@ -158,13 +165,14 @@ public class BuildConsoleManager implements IBuildConsoleManager, IResourceChang
// console
page.activate(activePart);
}
- if (bringToTop && shouldBringToTop(consoleView)) {
+ boolean shouldBringToTop = shouldBringToTop(consoleView);
+ if (bringToTop && shouldBringToTop) {
page.bringToTop(consoleView);
}
if (consoleView instanceof IConsoleView) {
if (BuildConsole.getCurrentPage() == null)
((IConsoleView) consoleView).display(fConsole);
- else
+ else if (shouldBringToTop)
((IConsoleView) consoleView).display(BuildConsole.getCurrentPage().getConsole());
}
}
@@ -221,6 +229,7 @@ public class BuildConsoleManager implements IBuildConsoleManager, IResourceChang
problemInfoBackgroundColor.dispose();
problemHighlightedColor.dispose();
}
+ ConsolePlugin.getDefault().getConsoleManager().removeConsoleListener(fConsoleListener);
ConsolePlugin.getDefault().getConsoleManager()
.removeConsoles(new org.eclipse.ui.console.IConsole[] { fConsole });
CUIPlugin.getWorkspace().removeResourceChangeListener(this);
@@ -275,12 +284,26 @@ public class BuildConsoleManager implements IBuildConsoleManager, IResourceChang
errorStream = new BuildConsoleStreamDecorator();
fName = name;
fContextMenuId = contextId;
+ fConsoleListener = new IConsoleListener() {
+ @Override
+ public void consolesAdded(org.eclipse.ui.console.IConsole[] consoles) {
+ // don't care
+ }
+
+ @Override
+ public void consolesRemoved(org.eclipse.ui.console.IConsole[] consoles) {
+ for (org.eclipse.ui.console.IConsole console : consoles) {
+ if (console == fConsole) {
+ fWasClosed.set(true);
+ }
+ }
+ }
+ };
+ ConsolePlugin.getDefault().getConsoleManager().addConsoleListener(fConsoleListener);
runUI(() -> {
- // add console to the Console view
fConsole = createBuildConsole(fName, fContextMenuId, iconUrl);
- ConsolePlugin.getDefault().getConsoleManager()
- .addConsoles(new org.eclipse.ui.console.IConsole[] { fConsole });
+ addConsole();
infoStream.setConsole(fConsole);
infoColor = createColor(CUIPlugin.getStandardDisplay(),
@@ -310,6 +333,20 @@ public class BuildConsoleManager implements IBuildConsoleManager, IResourceChang
CUIPlugin.getDefault().getPreferenceStore().addPropertyChangeListener(this);
}
+ public void reinitaliazeIfNecessary() {
+ if (!(this instanceof GlobalBuildConsoleManager)) {
+ GlobalBuildConsoleManager.staticReinitaliazeIfNecessary();
+ }
+ if (fWasClosed.getAndSet(false)) {
+ addConsole();
+ }
+ }
+
+ private void addConsole() {
+ // add console to the Console view
+ ConsolePlugin.getDefault().getConsoleManager().addConsoles(new org.eclipse.ui.console.IConsole[] { fConsole });
+ }
+
@Override
public void propertyChange(PropertyChangeEvent event) {
String property = event.getProperty();
@@ -373,7 +410,12 @@ public class BuildConsoleManager implements IBuildConsoleManager, IResourceChang
if (v == null)
return;
Display display = Display.getDefault();
- display.asyncExec(() -> v.getTextWidget().redraw());
+ display.asyncExec(() -> {
+ StyledText widget = v.getTextWidget();
+ if (widget != null && !widget.isDisposed()) {
+ widget.redraw();
+ }
+ });
}
public IBuildConsoleStreamDecorator getStreamDecorator(int type) throws CoreException {
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/BuildConsolePage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/BuildConsolePage.java
index f7de34b83dc..7294300c5c7 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/BuildConsolePage.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/BuildConsolePage.java
@@ -83,6 +83,7 @@ import org.eclipse.ui.actions.ActionFactory;
import org.eclipse.ui.console.IConsoleConstants;
import org.eclipse.ui.console.IConsoleView;
import org.eclipse.ui.console.actions.ClearOutputAction;
+import org.eclipse.ui.console.actions.CloseConsoleAction;
import org.eclipse.ui.console.actions.TextViewerAction;
import org.eclipse.ui.console.actions.TextViewerGotoLineAction;
import org.eclipse.ui.ide.IDE;
@@ -122,7 +123,9 @@ public class BuildConsolePage extends Page
private NextErrorAction fNextErrorAction;
private PreviousErrorAction fPreviousErrorAction;
private ShowErrorAction fShowErrorAction;
+ private CloseConsoleAction fCloseConsoleAction;
private WrapLinesAction fWrapAction;
+ private BringToTopOnBuild fBringToTopOnBuild;
/**
* @param view
@@ -256,11 +259,15 @@ public class BuildConsolePage extends Page
setTabs(CUIPlugin.getDefault().getPreferenceStore()
.getInt(BuildConsolePreferencePage.PREF_BUILDCONSOLE_TAB_WIDTH));
} else if (IConsoleConstants.P_BACKGROUND_COLOR.equals(property)) {
- fViewer.getTextWidget().setBackground(fConsole.getBackground());
+ if (fViewer != null && fViewer.getTextWidget() != null && fConsole != null) {
+ fViewer.getTextWidget().setBackground(fConsole.getBackground());
+ }
} else if (property.equals(BuildConsolePreferencePage.PREF_BUILDCONSOLE_WRAP_LINES)
|| property.equals(BuildConsolePreferencePage.PREF_BUILDCONSOLE_LINES)
|| property.equals(BuildConsolePreferencePage.PREF_BUILDCONSOLE_WRAP_LINES_MAX)) {
fWrapAction.propertyChange();
+ } else if (property.equals(BuildConsolePreferencePage.PREF_CONSOLE_ON_TOP)) {
+ fBringToTopOnBuild.propertyChange();
}
}
@@ -272,6 +279,8 @@ public class BuildConsolePage extends Page
fNextErrorAction = new NextErrorAction(this);
fPreviousErrorAction = new PreviousErrorAction(this);
fShowErrorAction = new ShowErrorAction(this);
+ fBringToTopOnBuild = new BringToTopOnBuild();
+ fCloseConsoleAction = new CloseConsoleAction(this.fConsole);
fSaveLogAction = new CopyBuildLogAction(this);
getViewer().setAutoScroll(!fIsLocked);
@@ -332,6 +341,9 @@ public class BuildConsolePage extends Page
mgr.appendToGroup(IConsoleConstants.OUTPUT_GROUP, fScrollLockAction);
mgr.appendToGroup(IConsoleConstants.OUTPUT_GROUP, fWrapAction);
mgr.appendToGroup(IConsoleConstants.OUTPUT_GROUP, fClearOutputAction);
+ mgr.appendToGroup(IConsoleConstants.OUTPUT_GROUP, fBringToTopOnBuild);
+ mgr.appendToGroup(IConsoleConstants.LAUNCH_GROUP, fCloseConsoleAction);
+ mgr.appendToGroup(IConsoleConstants.LAUNCH_GROUP, new Separator());
}
protected BuildConsoleViewer getViewer() {
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/BuildConsolePartitionerEditData.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/BuildConsolePartitionerEditData.java
index e7db7dc1b6c..309df2717c8 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/BuildConsolePartitionerEditData.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/BuildConsolePartitionerEditData.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2016, 2018 Kichwa Coders and others.
+ * Copyright (c) 2016, 2018 Kichwa Coders Ltd and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/ConsoleMessages.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/ConsoleMessages.java
index 4d8f1570019..8fc3eaaf1ad 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/ConsoleMessages.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/ConsoleMessages.java
@@ -49,6 +49,7 @@ public final class ConsoleMessages extends NLS {
public static String CopyLog_UnableToAccess;
public static String CopyLog_UnavailableLog;
public static String WrapLinesAction_WrapLines;
+ public static String BringToTopOnBuild;
static {
NLS.initializeMessages(BUNDLE_NAME, ConsoleMessages.class);
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/ConsoleMessages.properties b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/ConsoleMessages.properties
index 9dc8cd7c03b..2e848515039 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/ConsoleMessages.properties
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/ConsoleMessages.properties
@@ -26,11 +26,11 @@ BuildConsolePage_Select__All_Ctrl_A_12=Select &All@Ctrl+A
BuildConsolePage_Select_All=Select All
CBuildConsole_Console_Must_Be_Started_First=Build Console must be started with a specific project before being used.
-CopyLog_ActionTooltip=Copy Build Log
+CopyLog_ActionTooltip=Save build log to file
CopyLog_BuildNotLogged=No build was logged. Build the project or/and check the Logging page in project properties.
CopyLog_ChooseDestination=Choose Log File Destination
-CopyLog_ErrorCopyingFile=Error Copying a File
-CopyLog_ErrorWhileCopyingLog=Error while copying working log file:\u0020
+CopyLog_ErrorCopyingFile=Error Saving File
+CopyLog_ErrorWhileCopyingLog=Error while saving working log file:\u0020
CopyLog_InvalidDestination=Destination is not valid:\u0020
CopyLog_LogFileIsNotAvailable=Working log file is not available.
CopyLog_UnableToAccess=Unable to access build log at\u0020
@@ -42,3 +42,4 @@ NextErrorAction_Tooltip=Next Error
PreviousErrorAction_Tooltip=Previous Error\u0020
ShowErrorAction_Tooltip=Show Error In Editor
WrapLinesAction_WrapLines=Wrap Lines
+BringToTopOnBuild=Bring console to top when building
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/CopyBuildLogAction.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/CopyBuildLogAction.java
index a66c17f9695..e576db8b085 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/CopyBuildLogAction.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/CopyBuildLogAction.java
@@ -80,7 +80,8 @@ public class CopyBuildLogAction extends Action {
}
// open file dialog
- FileDialog dialog = new FileDialog(shell, SWT.NONE);
+ FileDialog dialog = new FileDialog(shell, SWT.SAVE);
+ dialog.setOverwrite(true);
dialog.setText(ConsoleMessages.CopyLog_ChooseDestination);
String destLocation = dialog.open();
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/GlobalBuildConsoleManager.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/GlobalBuildConsoleManager.java
index 6f526dd9221..785779f2948 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/GlobalBuildConsoleManager.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/GlobalBuildConsoleManager.java
@@ -82,6 +82,10 @@ public class GlobalBuildConsoleManager extends BuildConsoleManager {
getInstance();
}
+ static void staticReinitaliazeIfNecessary() {
+ getInstance().reinitaliazeIfNecessary();
+ }
+
/**
* Stop the console and deallocate resources allocated during {@link #startup()}
*/
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/IBuildConsoleStreamDecorator.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/IBuildConsoleStreamDecorator.java
index f635a8a81c9..e372a6cd9ee 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/IBuildConsoleStreamDecorator.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/IBuildConsoleStreamDecorator.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2017 Kichwa Coders and others.
+ * Copyright (c) 2017 Kichwa Coders Ltd and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/callhierarchy/CHHistoryListAction.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/callhierarchy/CHHistoryListAction.java
index 298d3af4b6b..b1542e510d9 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/callhierarchy/CHHistoryListAction.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/callhierarchy/CHHistoryListAction.java
@@ -51,7 +51,7 @@ public class CHHistoryListAction extends Action {
setTitle(CHMessages.CHHistoryListAction_HistoryDialog_title);
String[] buttonLabels = new String[] { CHMessages.CHHistoryListAction_Remove_label, };
- IListAdapter<ICElement> adapter = new IListAdapter<ICElement>() {
+ IListAdapter<ICElement> adapter = new IListAdapter<>() {
@Override
public void customButtonPressed(ListDialogField<ICElement> field, int index) {
doCustomButtonPressed();
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/callhierarchy/CHReferenceInfo.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/callhierarchy/CHReferenceInfo.java
index b1f22241918..84ae89a9b55 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/callhierarchy/CHReferenceInfo.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/callhierarchy/CHReferenceInfo.java
@@ -16,7 +16,7 @@ package org.eclipse.cdt.internal.ui.callhierarchy;
import java.util.Comparator;
public class CHReferenceInfo {
- public static final Comparator<CHReferenceInfo> COMPARE_OFFSET = new Comparator<CHReferenceInfo>() {
+ public static final Comparator<CHReferenceInfo> COMPARE_OFFSET = new Comparator<>() {
@Override
public int compare(CHReferenceInfo r1, CHReferenceInfo r2) {
return r1.fOffset - r2.fOffset;
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/cview/CViewAction.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/cview/CViewAction.java
index e310a51dc9f..fe72e2c0c81 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/cview/CViewAction.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/cview/CViewAction.java
@@ -13,11 +13,11 @@
*******************************************************************************/
package org.eclipse.cdt.internal.ui.cview;
-import org.eclipse.cdt.ui.CUIPlugin;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.actions.SelectionProviderAction;
/**
@@ -60,7 +60,7 @@ public abstract class CViewAction extends SelectionProviderAction {
* Returns the workbench.
*/
protected IWorkbench getWorkbench() {
- return CUIPlugin.getDefault().getWorkbench();
+ return PlatformUI.getWorkbench();
}
/**
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/cview/DividerLine.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/cview/DividerLine.java
new file mode 100644
index 00000000000..5352dbac6d8
--- /dev/null
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/cview/DividerLine.java
@@ -0,0 +1,48 @@
+/*******************************************************************************
+ * Copyright (c) 2021 Kichwa Coders Canada Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.internal.ui.cview;
+
+import org.eclipse.cdt.core.model.ISourceReference;
+import org.eclipse.cdt.internal.ui.viewsupport.DecoratingCOutlineLabelProvider;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.ui.model.IWorkbenchAdapter;
+import org.eclipse.ui.model.WorkbenchAdapter;
+
+public class DividerLine extends WorkbenchAdapter implements IAdaptable {
+
+ private ISourceReference element;
+
+ public DividerLine(ISourceReference element) {
+ this.element = element;
+ }
+
+ @Override
+ public <T> T getAdapter(Class<T> adapter) {
+ if (adapter == IWorkbenchAdapter.class) {
+ return adapter.cast(this);
+ }
+ if (adapter == ISourceReference.class) {
+ return adapter.cast(element);
+ }
+ return null;
+ }
+
+ /**
+ * When owner draw is not enabled ( General > Appearance > Use mixed fonts and colors for labels.)
+ * the custom draw in {@link DecoratingCOutlineLabelProvider} is not used and therefore the
+ * entry uses the getLabel value to fill the entry.
+ * @see DecoratingCOutlineLabelProvider
+ */
+ @Override
+ public String getLabel(Object object) {
+ return "-".repeat(20); //$NON-NLS-1$
+ }
+}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/DocCommentOwnerArea.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/DocCommentOwnerArea.java
new file mode 100644
index 00000000000..6ab4766f456
--- /dev/null
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/DocCommentOwnerArea.java
@@ -0,0 +1,141 @@
+/*******************************************************************************
+ * Copyright (c) 2020 ArSysOp and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov <alexander.fedorov@arsysop.ru> - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.internal.ui.dialogs;
+
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.cdt.doxygen.DoxygenMetadata;
+import org.eclipse.cdt.internal.ui.text.doctools.DocCommentOwnerManager;
+import org.eclipse.cdt.internal.ui.text.doctools.NullDocCommentOwner;
+import org.eclipse.cdt.ui.text.doctools.IDocCommentOwner;
+import org.eclipse.cdt.utils.ui.controls.ControlFactory;
+import org.eclipse.core.runtime.preferences.IPreferenceMetadataStore;
+import org.eclipse.core.runtime.preferences.PreferenceMetadata;
+import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
+
+public class DocCommentOwnerArea {
+
+ private final Label desc;
+ private final Label comboLabel;
+ private final Group group;
+
+ private final Combo combo;
+ private final IDocCommentOwner owners[];
+
+ private final Map<PreferenceMetadata<Boolean>, Button> buttons;
+
+ public DocCommentOwnerArea(Composite pane, DoxygenMetadata metadata, String descriptionText,
+ String comboLabelText) {
+ owners = getNontestOwners();
+ buttons = new LinkedHashMap<>();
+ group = ControlFactory.createGroup(pane, Messages.DocCommentOwnerArea_group_doctool, 2);
+ group.setLayoutData(GridDataFactory.fillDefaults().grab(true, false).create());
+ desc = new Label(group, SWT.WRAP);
+ desc.setText(descriptionText);
+ desc.setLayoutData(
+ GridDataFactory.fillDefaults().grab(false, false).span(2, 1).hint(150, SWT.DEFAULT).create());
+ comboLabel = new Label(group, SWT.NONE);
+ comboLabel.setText(comboLabelText);
+ combo = createCombo(group);
+ combo.addSelectionListener(SelectionListener.widgetSelectedAdapter(e -> recheckButtons()));
+ metadata.booleanOptions().forEach(o -> createCheckBox(group, o));
+ }
+
+ private Combo createCombo(Composite parent) {
+ String[] items = new String[owners.length + 1];
+ items[0] = Messages.DocCommentOwnerArea_doctool_none;
+ for (int i = 0; i < owners.length; i++) {
+ items[i + 1] = owners[i].getName();
+ }
+ Combo created = ControlFactory.createSelectCombo(parent, items, Messages.DocCommentOwnerArea_doctool_none);
+ return created;
+ }
+
+ private Button createCheckBox(Composite parent, PreferenceMetadata<Boolean> option) {
+ Button checkBox = new Button(parent, SWT.CHECK);
+ checkBox.setText(option.name());
+ checkBox.setToolTipText(option.description());
+ GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+ gd.horizontalIndent = 0;
+ gd.horizontalSpan = 2;
+ checkBox.setLayoutData(gd);
+ buttons.put(option, checkBox);
+ return checkBox;
+ }
+
+ /**
+ * @return the array of registered doc-comment owners, filtering out those from the
+ * test plug-in.
+ */
+ private IDocCommentOwner[] getNontestOwners() {
+ List<IDocCommentOwner> result = new ArrayList<>();
+ for (IDocCommentOwner owner : DocCommentOwnerManager.getInstance().getRegisteredOwners()) {
+ if (owner.getID().indexOf(".test.") == -1) //$NON-NLS-1$
+ result.add(owner);
+ }
+ return result.toArray(new IDocCommentOwner[result.size()]);
+ }
+
+ public void initialize(IDocCommentOwner initial, IPreferenceMetadataStore storage) {
+ selectDocumentOwner(initial, combo);
+ buttons.entrySet().stream().forEach(e -> e.getValue().setSelection(storage.load(e.getKey())));
+ }
+
+ private void selectDocumentOwner(IDocCommentOwner owner, Combo created) {
+ for (int i = 0; i < owners.length; i++) {
+ if (owners[i].getID().equals(owner.getID())) {
+ created.select(i + 1);
+ return;
+ }
+ }
+ created.select(0);
+ //no selection event here for some reason, need to force re-check
+ recheckButtons();
+ }
+
+ public void setEnabled(boolean enabled) {
+ desc.setEnabled(enabled);
+ comboLabel.setEnabled(enabled);
+ combo.setEnabled(enabled);
+ group.setEnabled(enabled);
+ recheckButtons();
+ }
+
+ void recheckButtons() {
+ boolean doxygenEnabled = combo.isEnabled()
+ && DocCommentOwnerManager.DOXYGEN_CDT_DOC_ONWER_ID.equals(getSelectedDocCommentOwner().getID());
+ buttons.values().forEach(b -> b.setEnabled(doxygenEnabled));
+ }
+
+ public IDocCommentOwner getSelectedDocCommentOwner() {
+ int index = combo.getSelectionIndex();
+ return index == 0 ? NullDocCommentOwner.INSTANCE : owners[index - 1];
+ }
+
+ public void apply(IPreferenceMetadataStore storage) {
+ buttons.entrySet().stream().forEach(e -> storage.save(e.getValue().getSelection(), e.getKey()));
+ }
+
+}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/Messages.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/Messages.java
index 79f763a3602..1b3f41b75f3 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/Messages.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/Messages.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2014 Google, Inc and others.
+ * Copyright (c) 2014, 2020 Google, Inc and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -9,13 +9,17 @@
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
- * Sergey Prigogin (Google) - initial API and implementation
+ * Sergey Prigogin (Google) - initial API and implementation
+ * Alexander Fedorov <alexander.fedorov@arsysop.ru> - Bug 559067
*******************************************************************************/
package org.eclipse.cdt.internal.ui.dialogs;
import org.eclipse.osgi.util.NLS;
class Messages extends NLS {
+
+ public static String DocCommentOwnerArea_doctool_none;
+ public static String DocCommentOwnerArea_group_doctool;
public static String FormattingScopeDialog_do_not_ask_again;
public static String FormattingScopeDialog_format_file;
public static String FormattingScopeDialog_format_statement;
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/Messages.properties b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/Messages.properties
index f452d88eae2..de3c0483273 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/Messages.properties
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/Messages.properties
@@ -1,5 +1,5 @@
###############################################################################
-# Copyright (c) 2014 Google, Inc and others.
+# Copyright (c) 2014, 2020 Google, Inc and others.
#
# This program and the accompanying materials
# are made available under the terms of the Eclipse Public License 2.0
@@ -9,8 +9,12 @@
# SPDX-License-Identifier: EPL-2.0
#
# Contributors:
-# Sergey Prigogin (Google) - initial API and implementation
+# Sergey Prigogin (Google) - initial API and implementation
+# Alexander Fedorov <alexander.fedorov@arsysop.ru> - Bug 559067
###############################################################################
+
+DocCommentOwnerArea_doctool_none=None
+DocCommentOwnerArea_group_doctool=Documentation tool comments
FormattingScopeDialog_title=Select Formatting Scope
FormattingScopeDialog_format_file=The entire &file\u0020
FormattingScopeDialog_format_statement=The &statement on the current line
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/TextFieldNavigationHandler.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/TextFieldNavigationHandler.java
index 7d864c159af..856e0d37aa1 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/TextFieldNavigationHandler.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/TextFieldNavigationHandler.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2005, 2015 IBM Corporation and others.
+ * Copyright (c) 2005, 2020 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -11,9 +11,11 @@
* Contributors:
* IBM Corporation - initial API and implementation
* Sergey Prigogin (Google)
+ * Alexander Fedorov (ArSysOp) - Bug 561993 - Remove dependency to com.ibm.icu from CDT UI
*******************************************************************************/
package org.eclipse.cdt.internal.ui.dialogs;
+import java.text.BreakIterator;
import java.util.ArrayList;
import java.util.List;
@@ -49,8 +51,6 @@ import org.eclipse.ui.commands.ICommandService;
import org.eclipse.ui.keys.IBindingService;
import org.eclipse.ui.texteditor.ITextEditorActionDefinitionIds;
-import com.ibm.icu.text.BreakIterator;
-
/**
* Support for camelCase-aware sub-word navigation in dialog fields.
*/
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/AbstractPathOptionBlock.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/AbstractPathOptionBlock.java
index e16469f764c..2472501e381 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/AbstractPathOptionBlock.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/AbstractPathOptionBlock.java
@@ -36,9 +36,8 @@ import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Preferences;
-import org.eclipse.core.runtime.SubProgressMonitor;
+import org.eclipse.core.runtime.SubMonitor;
/**
* Abstract block for C/C++ Project Paths page for 3.X projects.
@@ -295,8 +294,8 @@ abstract public class AbstractPathOptionBlock extends TabFolderOptionBlock imple
protected void internalConfigureCProject(List<CPElement> cPathEntries, IProgressMonitor monitor)
throws CoreException, InterruptedException {
// 10 monitor steps to go
-
- monitor.worked(2);
+ SubMonitor subMonitor = SubMonitor.convert(monitor, 10);
+ subMonitor.worked(2);
IPathEntry[] entries = getCProject().getRawPathEntries();
@@ -332,26 +331,15 @@ abstract public class AbstractPathOptionBlock extends TabFolderOptionBlock imple
cpath.add(entrie);
}
}
- monitor.worked(1);
-
- getCProject().setRawPathEntries(cpath.toArray(new IPathEntry[cpath.size()]),
- new SubProgressMonitor(monitor, 7));
+ subMonitor.worked(1);
+ getCProject().setRawPathEntries(cpath.toArray(new IPathEntry[cpath.size()]), subMonitor.split(7));
}
// -------- creation -------------------------------
public void configureCProject(IProgressMonitor monitor) throws CoreException, InterruptedException {
- if (monitor == null) {
- monitor = new NullProgressMonitor();
- }
- monitor.setTaskName(CPathEntryMessages.CPathsBlock_operationdesc_c);
- monitor.beginTask("", 10); //$NON-NLS-1$
-
- try {
- internalConfigureCProject(getCPaths(), monitor);
- initializeTimeStamps();
- } finally {
- monitor.done();
- }
+ SubMonitor subMonitor = SubMonitor.convert(monitor, CPathEntryMessages.CPathsBlock_operationdesc_c, 10);
+ internalConfigureCProject(getCPaths(), subMonitor.split(10));
+ initializeTimeStamps();
}
}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPElementLabelProvider.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPElementLabelProvider.java
index afd75be6e93..118cbc98195 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPElementLabelProvider.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPElementLabelProvider.java
@@ -33,6 +33,7 @@ import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.RGB;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.ide.IDE;
import org.eclipse.ui.model.IWorkbenchAdapter;
@@ -68,7 +69,7 @@ class CPElementLabelProvider extends LabelProvider implements IColorProvider {
fOutputImage = CDTSharedImages.getImageDescriptor(CDTSharedImages.IMG_OBJS_CONTAINER);
fContainerImage = CDTSharedImages.getImageDescriptor(CDTSharedImages.IMG_OBJS_LIBRARY);
- IWorkbench workbench = CUIPlugin.getDefault().getWorkbench();
+ IWorkbench workbench = PlatformUI.getWorkbench();
fProjectImage = workbench.getSharedImages().getImageDescriptor(IDE.SharedImages.IMG_OBJ_PROJECT);
bShowExported = showExported;
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathIncludeSymbolEntryPage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathIncludeSymbolEntryPage.java
index 2785105915f..d74d0851717 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathIncludeSymbolEntryPage.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathIncludeSymbolEntryPage.java
@@ -66,6 +66,7 @@ import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.DirectoryDialog;
import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.dialogs.ElementTreeSelectionDialog;
import org.eclipse.ui.model.WorkbenchLabelProvider;
@@ -170,7 +171,7 @@ public class CPathIncludeSymbolEntryPage extends CPathIncludeSymbolEntryBasePage
super(CPathEntryMessages.IncludeSymbolEntryPage_title);
fContext = context;
IncludeSymbolAdapter adapter = new IncludeSymbolAdapter();
- fIncludeSymPathsList = new TreeListDialogField<CPElementGroup>(adapter, buttonLabel,
+ fIncludeSymPathsList = new TreeListDialogField<>(adapter, buttonLabel,
new CPElementLabelProvider(true, false)) {
@Override
@@ -212,8 +213,7 @@ public class CPathIncludeSymbolEntryPage extends CPathIncludeSymbolEntryBasePage
fIncludeSymPathsList.setButtonsMinWidth(buttonBarWidth);
setControl(composite);
fIncludeSymPathsList.getTreeViewer().addFilter(fFilter);
- CUIPlugin.getDefault().getWorkbench().getHelpSystem().setHelp(composite,
- ICHelpContextIds.PROJECT_INCLUDE_PATHS_SYMBOLS);
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(composite, ICHelpContextIds.PROJECT_INCLUDE_PATHS_SYMBOLS);
}
@Override
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathIncludeSymbolEntryPerFilePage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathIncludeSymbolEntryPerFilePage.java
index 22ec02c4392..d8196638481 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathIncludeSymbolEntryPerFilePage.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathIncludeSymbolEntryPerFilePage.java
@@ -67,6 +67,7 @@ import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.DirectoryDialog;
import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.dialogs.ElementTreeSelectionDialog;
import org.eclipse.ui.model.WorkbenchLabelProvider;
@@ -217,7 +218,7 @@ public class CPathIncludeSymbolEntryPerFilePage extends CPathIncludeSymbolEntryB
super(CPathEntryMessages.IncludeSymbolEntryPage_title);
fContext = context;
IncludeSymbolAdapter adapter = new IncludeSymbolAdapter();
- fIncludeSymPathsList = new TreeListDialogField<CPElementGroup>(adapter, buttonLabel,
+ fIncludeSymPathsList = new TreeListDialogField<>(adapter, buttonLabel,
new CPElementLabelProvider(true, false)) {
@Override
@@ -260,8 +261,7 @@ public class CPathIncludeSymbolEntryPerFilePage extends CPathIncludeSymbolEntryB
fIncludeSymPathsList.setButtonsMinWidth(buttonBarWidth);
setControl(composite);
fIncludeSymPathsList.getTreeViewer().addFilter(fFilter);
- CUIPlugin.getDefault().getWorkbench().getHelpSystem().setHelp(composite,
- ICHelpContextIds.PROJECT_INCLUDE_PATHS_SYMBOLS);
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(composite, ICHelpContextIds.PROJECT_INCLUDE_PATHS_SYMBOLS);
}
@Override
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/ProjectContainerDescriptor.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/ProjectContainerDescriptor.java
index 3b187b6566b..d37981c74c1 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/ProjectContainerDescriptor.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/ProjectContainerDescriptor.java
@@ -14,10 +14,10 @@
package org.eclipse.cdt.internal.ui.dialogs.cpaths;
import org.eclipse.cdt.core.model.IPathEntry;
-import org.eclipse.cdt.ui.CUIPlugin;
import org.eclipse.cdt.ui.wizards.IPathEntryContainerPage;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.ide.IDE;
public class ProjectContainerDescriptor implements IContainerDescriptor {
@@ -39,7 +39,7 @@ public class ProjectContainerDescriptor implements IContainerDescriptor {
@Override
public Image getImage() {
- return CUIPlugin.getDefault().getWorkbench().getSharedImages().getImage(IDE.SharedImages.IMG_OBJ_PROJECT);
+ return PlatformUI.getWorkbench().getSharedImages().getImage(IDE.SharedImages.IMG_OBJ_PROJECT);
}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dnd/FileTransferDragAdapter.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dnd/FileTransferDragAdapter.java
index 91fcdb40480..4ecab539da4 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dnd/FileTransferDragAdapter.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dnd/FileTransferDragAdapter.java
@@ -32,7 +32,7 @@ import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.MultiStatus;
-import org.eclipse.core.runtime.SubProgressMonitor;
+import org.eclipse.core.runtime.SubMonitor;
import org.eclipse.jface.dialogs.ProgressMonitorDialog;
import org.eclipse.jface.operation.IRunnableWithProgress;
import org.eclipse.jface.viewers.ISelection;
@@ -45,6 +45,7 @@ import org.eclipse.swt.dnd.Transfer;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.actions.WorkspaceModifyOperation;
public class FileTransferDragAdapter implements TransferDragSourceListener {
@@ -99,24 +100,21 @@ public class FileTransferDragAdapter implements TransferDragSourceListener {
@Override
public void execute(IProgressMonitor monitor) throws CoreException {
- try {
- monitor.beginTask(CUIMessages.FileTransferDragAdapter_refreshing, roots.size());
- MultiStatus status = new MultiStatus(CUIPlugin.getPluginId(), IStatus.OK,
- CUIMessages.FileTransferDragAdapter_problem, null);
-
- for (IResource resource : roots) {
- try {
- resource.refreshLocal(IResource.DEPTH_ONE, new SubProgressMonitor(monitor, 1));
- } catch (CoreException e) {
- status.add(e.getStatus());
- }
+ SubMonitor subMonitor = SubMonitor.convert(monitor, CUIMessages.FileTransferDragAdapter_refreshing,
+ roots.size());
+ MultiStatus status = new MultiStatus(CUIPlugin.getPluginId(), IStatus.OK,
+ CUIMessages.FileTransferDragAdapter_problem, null);
+
+ for (IResource resource : roots) {
+ try {
+ resource.refreshLocal(IResource.DEPTH_ONE, subMonitor.split(1));
+ } catch (CoreException e) {
+ status.add(e.getStatus());
}
-
- if (!status.isOK())
- throw new CoreException(status);
- } finally {
- monitor.done();
}
+
+ if (!status.isOK())
+ throw new CoreException(status);
}
}
@@ -171,7 +169,7 @@ public class FileTransferDragAdapter implements TransferDragSourceListener {
private static void runOperation(IRunnableWithProgress operation, boolean fork, boolean cancelable) {
try {
- IWorkbench workbench = CUIPlugin.getDefault().getWorkbench();
+ IWorkbench workbench = PlatformUI.getWorkbench();
IWorkbenchWindow window = workbench.getActiveWorkbenchWindow();
Shell parent = window.getShell();
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/AbstractCModelOutlinePage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/AbstractCModelOutlinePage.java
index 93d0ffcca12..10f31d86dd8 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/AbstractCModelOutlinePage.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/AbstractCModelOutlinePage.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2005, 2015 IBM Corporation and others.
+ * Copyright (c) 2005, 2021 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -37,7 +37,7 @@ import org.eclipse.cdt.internal.ui.util.ProblemTreeViewer;
import org.eclipse.cdt.internal.ui.viewsupport.AppearanceAwareLabelProvider;
import org.eclipse.cdt.internal.ui.viewsupport.CElementLabels;
import org.eclipse.cdt.internal.ui.viewsupport.CUILabelProvider;
-import org.eclipse.cdt.internal.ui.viewsupport.DecoratingCLabelProvider;
+import org.eclipse.cdt.internal.ui.viewsupport.DecoratingCOutlineLabelProvider;
import org.eclipse.cdt.ui.CDTSharedImages;
import org.eclipse.cdt.ui.CUIPlugin;
import org.eclipse.cdt.ui.IncludesGrouping;
@@ -52,6 +52,7 @@ import org.eclipse.jface.action.IToolBarManager;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.action.Separator;
import org.eclipse.jface.commands.ActionHandler;
+import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.jface.text.ITextSelection;
import org.eclipse.jface.util.LocalSelectionTransfer;
import org.eclipse.jface.util.PropertyChangeEvent;
@@ -60,6 +61,7 @@ import org.eclipse.jface.viewers.IDoubleClickListener;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.LabelProviderChangedEvent;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.TreeViewer;
@@ -108,14 +110,18 @@ public abstract class AbstractCModelOutlinePage extends Page
public COutlineLabelProvider(long textFlags, int imageFlags) {
super(textFlags, imageFlags);
+ JFaceResources.getFontRegistry().addListener(this);
PreferenceConstants.getPreferenceStore().addPropertyChangeListener(this);
+ PlatformUI.getWorkbench().getThemeManager().getCurrentTheme().getColorRegistry().addListener(this);
fSimpleName = PreferenceConstants.getPreferenceStore()
.getBoolean(PreferenceConstants.OUTLINE_GROUP_MEMBERS);
}
@Override
public void dispose() {
+ JFaceResources.getFontRegistry().removeListener(this);
PreferenceConstants.getPreferenceStore().removePropertyChangeListener(this);
+ PlatformUI.getWorkbench().getThemeManager().getCurrentTheme().getColorRegistry().removeListener(this);
super.dispose();
}
@@ -138,6 +144,15 @@ public abstract class AbstractCModelOutlinePage extends Page
.getBoolean(PreferenceConstants.OUTLINE_GROUP_MEMBERS);
}
}
+ if (PreferenceConstants.OUTLINE_MARK_TEXT_FONT.equals(event.getProperty())) {
+ fireLabelProviderChanged(new LabelProviderChangedEvent(this));
+ }
+ if (PreferenceConstants.OUTLINE_MARK_TEXT_COLOR.equals(event.getProperty())) {
+ fireLabelProviderChanged(new LabelProviderChangedEvent(this));
+ }
+ if (PreferenceConstants.OUTLINE_MARK_DIVIDER_COLOR.equals(event.getProperty())) {
+ fireLabelProviderChanged(new LabelProviderChangedEvent(this));
+ }
}
}
@@ -240,6 +255,29 @@ public abstract class AbstractCModelOutlinePage extends Page
}
}
+ protected static class HidePragmaMarkAction extends Action {
+
+ public HidePragmaMarkAction(AbstractCModelOutlinePage outlinePage) {
+ super(ActionMessages.HidePragmaMarks_label);
+ setDescription(ActionMessages.HidePragmaMarks_description);
+ setToolTipText(ActionMessages.HidePragmaMarks_tooltip);
+ CPluginImages.setImageDescriptors(this, CPluginImages.T_LCL, CPluginImages.IMG_MENU_HIDE_PRAGMA_MARKS);
+
+ boolean enabled = isHidePragmaMarkEnabled();
+ setChecked(enabled);
+ }
+
+ @Override
+ public void run() {
+ PreferenceConstants.getPreferenceStore().setValue(PreferenceConstants.OUTLINE_HIDE_PRAGMA_MARK,
+ isChecked());
+ }
+
+ public boolean isHidePragmaMarkEnabled() {
+ return PreferenceConstants.getPreferenceStore().getBoolean(PreferenceConstants.OUTLINE_HIDE_PRAGMA_MARK);
+ }
+ }
+
/**
* This action toggles whether this C Outline page links
* its selection to the active editor.
@@ -454,7 +492,7 @@ public abstract class AbstractCModelOutlinePage extends Page
protected ProblemTreeViewer createTreeViewer(Composite parent) {
ProblemTreeViewer treeViewer = new OutlineTreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
treeViewer.setContentProvider(createContentProvider(treeViewer));
- treeViewer.setLabelProvider(new DecoratingCLabelProvider(createLabelProvider(), true));
+ treeViewer.setLabelProvider(new DecoratingCOutlineLabelProvider(createLabelProvider()));
treeViewer.setAutoExpandLevel(3);
treeViewer.setUseHashlookup(true);
treeViewer.addSelectionChangedListener(this);
@@ -604,6 +642,8 @@ public abstract class AbstractCModelOutlinePage extends Page
fToggleLinkingAction = new ToggleLinkingAction();
menu.add(fToggleLinkingAction);
+ menu.add(new Separator("dividers.layout")); //$NON-NLS-1$
+ menu.add(new HidePragmaMarkAction(this));
menu.add(new Separator("group.layout")); //$NON-NLS-1$
menu.add(new IncludeGroupingAction(this));
menu.add(new MacroGroupingAction(this));
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/AddIncludeAction.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/AddIncludeAction.java
index 02529a91d4a..8e772d139c9 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/AddIncludeAction.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/AddIncludeAction.java
@@ -46,6 +46,7 @@ import org.eclipse.text.edits.MultiTextEdit;
import org.eclipse.text.undo.DocumentUndoManagerRegistry;
import org.eclipse.text.undo.IDocumentUndoManager;
import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.dialogs.ElementListSelectionDialog;
import org.eclipse.ui.texteditor.ITextEditor;
import org.eclipse.ui.texteditor.TextEditorAction;
@@ -62,8 +63,7 @@ public class AddIncludeAction extends TextEditorAction {
*/
public AddIncludeAction(ITextEditor editor) {
super(CEditorMessages.getBundleForConstructedKeys(), "AddInclude.", editor); //$NON-NLS-1$
- CUIPlugin.getDefault().getWorkbench().getHelpSystem().setHelp(this,
- ICHelpContextIds.ADD_INCLUDE_ON_SELECTION_ACTION);
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(this, ICHelpContextIds.ADD_INCLUDE_ON_SELECTION_ACTION);
final Shell shell = editor.getEditorSite().getShell();
fAmbiguityResolver = new IElementSelector() {
@SuppressWarnings("unchecked")
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CContentOutlinerProvider.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CContentOutlinerProvider.java
index 9da4664ef72..8bf77fb379b 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CContentOutlinerProvider.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CContentOutlinerProvider.java
@@ -71,13 +71,18 @@ public class CContentOutlinerProvider extends BaseCElementContentProvider {
* Tree viewer.
*/
public CContentOutlinerProvider(TreeViewer viewer, IWorkbenchPartSite site) {
- super(true, true);
+ super(true, true, true, () -> isSorted(viewer));
treeViewer = viewer;
final IPreferenceStore store = PreferenceConstants.getPreferenceStore();
setIncludesGrouping(store.getBoolean(PreferenceConstants.OUTLINE_GROUP_INCLUDES));
setNamespacesGrouping(store.getBoolean(PreferenceConstants.OUTLINE_GROUP_NAMESPACES));
setMemberGrouping(store.getBoolean(PreferenceConstants.OUTLINE_GROUP_MEMBERS));
setMacroGrouping(store.getBoolean(PreferenceConstants.OUTLINE_GROUP_MACROS));
+ setHidePragmaMark(store.getBoolean(PreferenceConstants.OUTLINE_HIDE_PRAGMA_MARK));
+ }
+
+ private static boolean isSorted(TreeViewer viewer) {
+ return viewer != null && viewer.getComparator() != null;
}
/**
@@ -376,6 +381,15 @@ public class CContentOutlinerProvider extends BaseCElementContentProvider {
contentUpdated();
}
}
+ } else if (prop.equals(PreferenceConstants.OUTLINE_HIDE_PRAGMA_MARK)) {
+ Object newValue = event.getNewValue();
+ if (newValue instanceof Boolean) {
+ boolean value = ((Boolean) newValue).booleanValue();
+ if (isHidePragmaMarkEnabled() != value) {
+ setHidePragmaMark(value);
+ contentUpdated();
+ }
+ }
}
}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CEditor.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CEditor.java
index 9ddb6a982df..1c8b5e81aee 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CEditor.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CEditor.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2005, 2016 IBM Corporation and others.
+ * Copyright (c) 2005, 2020 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -17,9 +17,11 @@
* Axel Mueller - [289339] Surround with
* Tomasz Wesolowski - [320561] Override indicators
* Serge Beauchamp (Freescale Semiconductor) - Bug 417909
+ * Alexander Fedorov (ArSysOp) - Bug 561993 - Remove dependency to com.ibm.icu from CDT UI
*******************************************************************************/
package org.eclipse.cdt.internal.ui.editor;
+import java.text.BreakIterator;
import java.text.CharacterIterator;
import java.util.ArrayDeque;
import java.util.ArrayList;
@@ -239,8 +241,6 @@ import org.eclipse.ui.texteditor.link.EditorLinkedModeUI;
import org.eclipse.ui.texteditor.templates.ITemplatesPage;
import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
-import com.ibm.icu.text.BreakIterator;
-
/**
* C/C++ source editor.
*/
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/ConstructedCEditorMessages.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/ConstructedCEditorMessages.java
index 4146f22dad0..17e6272872e 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/ConstructedCEditorMessages.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/ConstructedCEditorMessages.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2013 QNX Software Systems and others.
+ * Copyright (c) 2000, 2020 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -10,14 +10,14 @@
*
* Contributors:
* QNX Software Systems - Initial API and implementation
+ * Alexander Fedorov (ArSysOp) - Bug 561993 - Remove dependency to com.ibm.icu from CDT UI
*******************************************************************************/
package org.eclipse.cdt.internal.ui.editor;
+import java.text.MessageFormat;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
-import com.ibm.icu.text.MessageFormat;
-
public class ConstructedCEditorMessages {
private static final String RESOURCE_BUNDLE = "org.eclipse.cdt.internal.ui.editor.ConstructedCEditorMessages"; //$NON-NLS-1$
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/OrganizeIncludesAction.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/OrganizeIncludesAction.java
index 1e6945fcd4a..55bfffcc8fd 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/OrganizeIncludesAction.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/OrganizeIncludesAction.java
@@ -39,6 +39,7 @@ import org.eclipse.text.edits.MultiTextEdit;
import org.eclipse.text.undo.DocumentUndoManagerRegistry;
import org.eclipse.text.undo.IDocumentUndoManager;
import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.texteditor.ITextEditor;
import org.eclipse.ui.texteditor.TextEditorAction;
@@ -52,7 +53,7 @@ public class OrganizeIncludesAction extends TextEditorAction {
*/
public OrganizeIncludesAction(ITextEditor editor) {
super(CEditorMessages.getBundleForConstructedKeys(), "OrganizeIncludes.", editor); //$NON-NLS-1$
- CUIPlugin.getDefault().getWorkbench().getHelpSystem().setHelp(this, ICHelpContextIds.ORGANIZE_INCLUDES_ACTION);
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(this, ICHelpContextIds.ORGANIZE_INCLUDES_ACTION);
}
@Override
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/SortLinesAction.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/SortLinesAction.java
index 3a94a33bcd1..5446f523eab 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/SortLinesAction.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/SortLinesAction.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010, 2012 Google, Inc and others.
+ * Copyright (c) 2010, 2020 Google, Inc and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -10,9 +10,11 @@
*
* Contributors:
* Sergey Prigogin (Google) - initial API and implementation
+ * Alexander Fedorov (ArSysOp) - Bug 561993 - Remove dependency to com.ibm.icu from CDT UI
*******************************************************************************/
package org.eclipse.cdt.internal.ui.editor;
+import java.text.Collator;
import java.util.Arrays;
import org.eclipse.cdt.core.model.ICProject;
@@ -37,8 +39,6 @@ import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.texteditor.ITextEditor;
import org.eclipse.ui.texteditor.TextEditorAction;
-import com.ibm.icu.text.Collator;
-
/**
* Sorts selected lines in alphabetical order. If both, comment and non-comment lines
* are selected, the non-comment lines are sorted, and the comments are moved together
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/filters/CustomFiltersDialog.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/filters/CustomFiltersDialog.java
index 9739122f81f..38279163d44 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/filters/CustomFiltersDialog.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/filters/CustomFiltersDialog.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2021 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -37,8 +37,8 @@ import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.swt.SWT;
-import org.eclipse.swt.accessibility.AccessibleAdapter;
-import org.eclipse.swt.accessibility.AccessibleEvent;
+import org.eclipse.swt.accessibility.ACC;
+import org.eclipse.swt.accessibility.AccessibleListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
@@ -133,11 +133,18 @@ public class CustomFiltersDialog extends SelectionDialog {
fUserDefinedPatterns.setLayoutData(data);
String patterns = convertToString(fPatterns, SEPARATOR);
fUserDefinedPatterns.setText(patterns);
-
+ fUserDefinedPatterns.setToolTipText(FilterMessages.CustomFiltersDialog_patternInfo);
// Info text
final Label info = new Label(group, SWT.LEFT);
info.setText(FilterMessages.CustomFiltersDialog_patternInfo);
+ // add the info text as a description to the pattern field
+ fUserDefinedPatterns.getAccessible().addAccessibleListener(AccessibleListener.getNameAdapter(e -> {
+ if (e.childID == ACC.CHILDID_SELF && (e.result == null || e.result.trim().isEmpty())) {
+ e.result = FilterMessages.CustomFiltersDialog_patternInfo;
+ }
+ }));
+
// Enabling / disabling of pattern group
fEnableUserDefinedPatterns.setSelection(fEnablePatterns);
fUserDefinedPatterns.setEnabled(fEnablePatterns);
@@ -183,12 +190,11 @@ public class CustomFiltersDialog extends SelectionDialog {
if (initialSelection != null && !initialSelection.isEmpty())
checkInitialSelections();
- fCheckBoxList.getTable().getAccessible().addAccessibleListener(new AccessibleAdapter() {
- @Override
- public void getName(AccessibleEvent e) {
+ fCheckBoxList.getTable().getAccessible().addAccessibleListener(AccessibleListener.getNameAdapter(e -> {
+ if (e.childID == ACC.CHILDID_SELF && (e.result == null || e.result.trim().isEmpty())) {
e.result = FilterMessages.CustomFiltersDialog_filterList_label;
}
- });
+ }));
fCheckBoxList.getTable().setToolTipText(FilterMessages.CustomFiltersDialog_filterList_label);
// Description
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/filters/FilterDescriptor.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/filters/FilterDescriptor.java
index c6f4493300a..b96bf599095 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/filters/FilterDescriptor.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/filters/FilterDescriptor.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2012 IBM Corporation and others.
+ * Copyright (c) 2000, 2020 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -10,9 +10,11 @@
*
* Contributors:
* IBM Corporation - initial API and implementation
+ * Alexander Fedorov (ArSysOp) - Bug 561993 - Remove dependency to com.ibm.icu from CDT UI
*******************************************************************************/
package org.eclipse.cdt.internal.ui.filters;
+import java.text.Collator;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
@@ -29,8 +31,6 @@ import org.eclipse.jface.util.SafeRunnable;
import org.eclipse.jface.viewers.ViewerFilter;
import org.eclipse.osgi.util.NLS;
-import com.ibm.icu.text.Collator;
-
/**
* Represents a custom filter which is provided by the
* "org.eclipse.jdt.ui.javaElementFilters" extension point.
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/includebrowser/IBConversions.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/includebrowser/IBConversions.java
index c5db6d3a0d2..b0d75d1ae82 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/includebrowser/IBConversions.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/includebrowser/IBConversions.java
@@ -15,10 +15,14 @@ package org.eclipse.cdt.internal.ui.includebrowser;
import java.util.ArrayList;
import java.util.Iterator;
+import java.util.Optional;
import org.eclipse.cdt.core.model.CModelException;
+import org.eclipse.cdt.core.model.CoreModel;
import org.eclipse.cdt.core.model.CoreModelUtil;
+import org.eclipse.cdt.core.model.ICProject;
import org.eclipse.cdt.core.model.ITranslationUnit;
+import org.eclipse.cdt.internal.core.model.TranslationUnit;
import org.eclipse.cdt.ui.CUIPlugin;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.IAdaptable;
@@ -75,12 +79,31 @@ public class IBConversions {
return StructuredSelection.EMPTY;
}
+ /**
+ * Returns an optional ITranslationUnit for the given IFile.
+ * The ITranslationUnit can be outside a source folder.
+ */
+ public static Optional<ITranslationUnit> fileToTU(IFile file) {
+ ITranslationUnit tu = CoreModelUtil.findTranslationUnit(file);
+ if (tu == null) {
+ // Handle header not under a source folder
+ ICProject cproject = CoreModel.getDefault().create(file.getProject());
+ if (cproject != null) {
+ String contentTypeId = CoreModel.getRegistedContentTypeId(file.getProject(), file.getName());
+ if (contentTypeId != null) {
+ tu = new TranslationUnit(cproject, file, contentTypeId);
+ }
+ }
+ }
+ return Optional.ofNullable(tu);
+ }
+
public static ITranslationUnit objectToTU(Object object) {
if (object instanceof ITranslationUnit) {
return (ITranslationUnit) object;
}
if (object instanceof IFile) {
- return CoreModelUtil.findTranslationUnit((IFile) object);
+ return fileToTU((IFile) object).orElse(null);
}
if (object instanceof IAdaptable) {
IAdaptable adaptable = (IAdaptable) object;
@@ -90,7 +113,7 @@ public class IBConversions {
}
IFile file = adaptable.getAdapter(IFile.class);
if (file != null) {
- return CoreModelUtil.findTranslationUnit(file);
+ return fileToTU(file).orElse(null);
}
ILocationProvider locProvider = adaptable.getAdapter(ILocationProvider.class);
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/includebrowser/IBDropTargetListener.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/includebrowser/IBDropTargetListener.java
index d816aa88af2..70e9bff0d4b 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/includebrowser/IBDropTargetListener.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/includebrowser/IBDropTargetListener.java
@@ -15,8 +15,8 @@
package org.eclipse.cdt.internal.ui.includebrowser;
import java.util.Iterator;
+import java.util.Optional;
-import org.eclipse.cdt.core.model.CoreModelUtil;
import org.eclipse.cdt.core.model.ITranslationUnit;
import org.eclipse.cdt.internal.core.resources.ResourceLookup;
import org.eclipse.core.resources.IFile;
@@ -125,7 +125,7 @@ public class IBDropTargetListener implements DropTargetListener {
String[] filePaths = (String[]) o;
for (int i = 0; i < filePaths.length; i++) {
String filePath = filePaths[i];
- ITranslationUnit tu = findTranslationUnit(
+ ITranslationUnit tu = extractFirstTranslationUnit(
ResourceLookup.findFilesForLocation(Path.fromOSString(filePath)));
if (tu != null) {
return tu;
@@ -134,18 +134,18 @@ public class IBDropTargetListener implements DropTargetListener {
return null;
}
if (o instanceof IResource[]) {
- return findTranslationUnit((IResource[]) o);
+ return extractFirstTranslationUnit((IResource[]) o);
}
return null;
}
- private ITranslationUnit findTranslationUnit(IResource[] files) {
+ private ITranslationUnit extractFirstTranslationUnit(IResource[] files) {
for (int i = 0; i < files.length; i++) {
IResource resource = files[i];
if (resource.getType() == IResource.FILE) {
- ITranslationUnit tu = CoreModelUtil.findTranslationUnit((IFile) resource);
- if (tu != null) {
- return tu;
+ Optional<ITranslationUnit> tu = IBConversions.fileToTU((IFile) resource);
+ if (tu.isPresent()) {
+ return tu.get();
}
}
}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/includebrowser/IBHistoryListAction.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/includebrowser/IBHistoryListAction.java
index fdb0fcc5b9e..8136b813cc6 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/includebrowser/IBHistoryListAction.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/includebrowser/IBHistoryListAction.java
@@ -52,7 +52,7 @@ public class IBHistoryListAction extends Action {
setTitle(IBMessages.IBHistoryListAction_HistoryDialog_title);
String[] buttonLabels = new String[] { IBMessages.IBHistoryListAction_Remove_label, };
- IListAdapter<ITranslationUnit> adapter = new IListAdapter<ITranslationUnit>() {
+ IListAdapter<ITranslationUnit> adapter = new IListAdapter<>() {
@Override
public void customButtonPressed(ListDialogField<ITranslationUnit> field, int index) {
doCustomButtonPressed();
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/language/settings/providers/LanguageSettingsEntriesTab.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/language/settings/providers/LanguageSettingsEntriesTab.java
index d1641995898..029214af4d5 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/language/settings/providers/LanguageSettingsEntriesTab.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/language/settings/providers/LanguageSettingsEntriesTab.java
@@ -390,7 +390,9 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab {
@Override
public void treeExpanded(TreeEvent e) {
treeEntries.getDisplay().asyncExec(() -> {
- treeCol.pack();
+ if (!treeCol.isDisposed()) {
+ treeCol.pack();
+ }
});
}
});
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/navigator/CNavigatorRenameResourceAction.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/navigator/CNavigatorRenameResourceAction.java
index 09456c29938..3e34137d188 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/navigator/CNavigatorRenameResourceAction.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/navigator/CNavigatorRenameResourceAction.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2018 Kichwa Coders and others.
+ * Copyright (c) 2018 Kichwa Coders Ltd and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/AppearancePreferencePage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/AppearancePreferencePage.java
index 23a90c5f6bf..56bc31a791a 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/AppearancePreferencePage.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/AppearancePreferencePage.java
@@ -56,6 +56,7 @@ public class AppearancePreferencePage extends PreferencePage implements IWorkben
private SelectionButtonDialogField fOutlineGroupMacros;
private SelectionButtonDialogField fShowSourceRootsAtTopOfProject;
private SelectionButtonDialogField fCViewSortOrderOfExcludedFiles;
+ private SelectionButtonDialogField fOutlineHidePragmaMarks;
public AppearancePreferencePage() {
setPreferenceStore(PreferenceConstants.getPreferenceStore());
@@ -102,6 +103,10 @@ public class AppearancePreferencePage extends PreferencePage implements IWorkben
fOutlineGroupMacros.setDialogFieldListener(listener);
fOutlineGroupMacros.setLabelText(PreferencesMessages.AppearancePreferencePage_outlineGroupMacros_label);
+ fOutlineHidePragmaMarks = new SelectionButtonDialogField(SWT.CHECK);
+ fOutlineHidePragmaMarks.setDialogFieldListener(listener);
+ fOutlineHidePragmaMarks.setLabelText(PreferencesMessages.AppearancePreferencePage_HidePragmaMarks_label);
+
fCViewGroupMacros = new SelectionButtonDialogField(SWT.CHECK);
fCViewGroupMacros.setDialogFieldListener(listener);
fCViewGroupMacros.setLabelText(PreferencesMessages.AppearancePreferencePage_cviewGroupMacros_label);
@@ -123,6 +128,7 @@ public class AppearancePreferencePage extends PreferencePage implements IWorkben
fOutlineGroupNamespaces.setSelection(prefs.getBoolean(PreferenceConstants.OUTLINE_GROUP_NAMESPACES));
fOutlineGroupMembers.setSelection(prefs.getBoolean(PreferenceConstants.OUTLINE_GROUP_MEMBERS));
fOutlineGroupMacros.setSelection(prefs.getBoolean(PreferenceConstants.OUTLINE_GROUP_MACROS));
+ fOutlineHidePragmaMarks.setSelection(prefs.getBoolean(PreferenceConstants.OUTLINE_HIDE_PRAGMA_MARK));
boolean showSourceRootsAtTopOfProject = CCorePlugin.showSourceRootsAtTopOfProject();
fShowSourceRootsAtTopOfProject.setSelection(showSourceRootsAtTopOfProject);
fCViewSortOrderOfExcludedFiles.setSelection(prefs.getBoolean(PreferenceConstants.SORT_ORDER_OF_EXCLUDED_FILES));
@@ -159,6 +165,7 @@ public class AppearancePreferencePage extends PreferencePage implements IWorkben
fOutlineGroupMembers.doFillIntoGrid(result, nColumns);
fCViewGroupMacros.doFillIntoGrid(result, nColumns);
fOutlineGroupMacros.doFillIntoGrid(result, nColumns);
+ fOutlineHidePragmaMarks.doFillIntoGrid(result, nColumns);
new Separator().doFillIntoGrid(result, nColumns);
@@ -216,6 +223,7 @@ public class AppearancePreferencePage extends PreferencePage implements IWorkben
prefs.setValue(PreferenceConstants.OUTLINE_GROUP_NAMESPACES, fOutlineGroupNamespaces.isSelected());
prefs.setValue(PreferenceConstants.OUTLINE_GROUP_MEMBERS, fOutlineGroupMembers.isSelected());
prefs.setValue(PreferenceConstants.OUTLINE_GROUP_MACROS, fOutlineGroupMacros.isSelected());
+ prefs.setValue(PreferenceConstants.OUTLINE_HIDE_PRAGMA_MARK, fOutlineHidePragmaMarks.isSelected());
prefs.setValue(PreferenceConstants.SORT_ORDER_OF_EXCLUDED_FILES, fCViewSortOrderOfExcludedFiles.isSelected());
try {
InstanceScope.INSTANCE.getNode(CUIPlugin.PLUGIN_ID).flush();
@@ -244,6 +252,7 @@ public class AppearancePreferencePage extends PreferencePage implements IWorkben
fOutlineGroupNamespaces.setSelection(prefs.getDefaultBoolean(PreferenceConstants.OUTLINE_GROUP_NAMESPACES));
fOutlineGroupMembers.setSelection(prefs.getDefaultBoolean(PreferenceConstants.OUTLINE_GROUP_MEMBERS));
fOutlineGroupMacros.setSelection(prefs.getDefaultBoolean(PreferenceConstants.OUTLINE_GROUP_MACROS));
+ fOutlineHidePragmaMarks.setSelection(prefs.getDefaultBoolean(PreferenceConstants.OUTLINE_HIDE_PRAGMA_MARK));
boolean showSourceRootsPref = DefaultScope.INSTANCE.getNode(CCorePlugin.PLUGIN_ID)
.getBoolean(CCorePreferenceConstants.SHOW_SOURCE_ROOTS_AT_TOP_LEVEL_OF_PROJECT, true);
fShowSourceRootsAtTopOfProject.setSelection(showSourceRootsPref);
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/BooleanFieldEditor2.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/BooleanFieldEditor2.java
index b7bab43f9b1..e0039b6fd4e 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/BooleanFieldEditor2.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/BooleanFieldEditor2.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2018 Kichwa Coders and others.
+ * Copyright (c) 2018 Kichwa Coders Ltd and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/BuildConsolePreferencePage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/BuildConsolePreferencePage.java
index 6bafb40db9a..4b6caa74dc0 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/BuildConsolePreferencePage.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/BuildConsolePreferencePage.java
@@ -35,7 +35,7 @@ import org.eclipse.ui.PlatformUI;
public class BuildConsolePreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {
private static final String PREF_CLEAR_CONSOLE = "clearConsole"; //$NON-NLS-1$
- private static final String PREF_CONSOLE_ON_TOP = "consoleOnTop"; //$NON-NLS-1$
+ public static final String PREF_CONSOLE_ON_TOP = "consoleOnTop"; //$NON-NLS-1$
private static final String PREF_AUTO_OPEN_CONSOLE = "autoOpenConsole"; //$NON-NLS-1$
public static final String PREF_BUILDCONSOLE_WRAP_LINES = "buildConsoleWrapLines"; //$NON-NLS-1$
/**
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CEditorColoringConfigurationBlock.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CEditorColoringConfigurationBlock.java
index 99427b5e4eb..56edb67e541 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CEditorColoringConfigurationBlock.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CEditorColoringConfigurationBlock.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2021 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -12,12 +12,14 @@
* IBM Corporation - initial API and implementation
* Anton Leherbauer (Wind River Systems
* Andrew Ferguson (Symbian)
+ * Alexander Fedorov (ArSysOp) - Bug 561993 - Remove dependency to com.ibm.icu from CDT UI
*******************************************************************************/
package org.eclipse.cdt.internal.ui.preferences;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
+import java.text.Collator;
import java.util.ArrayList;
import java.util.List;
@@ -54,6 +56,8 @@ import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.viewers.ViewerComparator;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.accessibility.ACC;
+import org.eclipse.swt.accessibility.AccessibleListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
@@ -76,8 +80,6 @@ import org.eclipse.ui.dialogs.PreferencesUtil;
import org.eclipse.ui.editors.text.EditorsUI;
import org.eclipse.ui.texteditor.ChainedPreferenceStore;
-import com.ibm.icu.text.Collator;
-
/**
* Configures C/C++ Editor code coloring preferences.
*
@@ -647,6 +649,12 @@ class CEditorColoringConfigurationBlock extends AbstractConfigurationBlock {
gd.widthHint = maxWidth;
fListViewer.getControl().setLayoutData(gd);
+ // add the coloring element label text as the name for the list viewer
+ fListViewer.getControl().getAccessible().addAccessibleListener(AccessibleListener.getNameAdapter(e -> {
+ if (e.childID == ACC.CHILDID_SELF && (e.result == null || e.result.trim().isEmpty())) {
+ e.result = PreferencesMessages.CEditorColoringConfigurationBlock_coloring_element;
+ }
+ }));
Composite stylesComposite = new Composite(editorComposite, SWT.NONE);
layout = new GridLayout();
@@ -711,6 +719,12 @@ class CEditorColoringConfigurationBlock extends AbstractConfigurationBlock {
gd.widthHint = convertWidthInCharsToPixels(20);
gd.heightHint = convertHeightInCharsToPixels(5);
previewer.setLayoutData(gd);
+ // add the preview label text as the name to the previewer
+ previewer.getAccessible().addAccessibleListener(AccessibleListener.getNameAdapter(e -> {
+ if (e.childID == ACC.CHILDID_SELF && (e.result == null || e.result.trim().isEmpty())) {
+ e.result = PreferencesMessages.CEditorColoringConfigurationBlock_preview;
+ }
+ }));
fListViewer.addSelectionChangedListener(new ISelectionChangedListener() {
@Override
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CEditorPreferencePage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CEditorPreferencePage.java
index cf2f1132b27..fd5215d99ee 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CEditorPreferencePage.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CEditorPreferencePage.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2005, 2014 IBM Corporation and others.
+ * Copyright (c) 2005, 2020 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -14,6 +14,8 @@
* Anton Leherbauer (Wind River Systems)
* Andrew Ferguson (Symbian)
* Sergey Prigogin (Google)
+ * Marco Stornelli <marco.stornelli@gmail.com> - Bug 333134
+ * Alexander Fedorov <alexander.fedorov@arsysop.ru> - ongoing support
*******************************************************************************/
package org.eclipse.cdt.internal.ui.preferences;
@@ -24,18 +26,19 @@ import static org.eclipse.cdt.ui.PreferenceConstants.FORMATTING_SCOPE_STATEMENT;
import java.util.ArrayList;
+import org.eclipse.cdt.doxygen.core.DoxygenPreferences;
import org.eclipse.cdt.internal.ui.ICHelpContextIds;
+import org.eclipse.cdt.internal.ui.dialogs.DocCommentOwnerArea;
import org.eclipse.cdt.internal.ui.editor.CEditor;
import org.eclipse.cdt.internal.ui.preferences.OverlayPreferenceStore.OverlayKey;
import org.eclipse.cdt.internal.ui.text.c.hover.SourceViewerInformationControl;
import org.eclipse.cdt.internal.ui.text.contentassist.ContentAssistPreference;
import org.eclipse.cdt.internal.ui.text.doctools.DocCommentOwnerManager;
import org.eclipse.cdt.ui.PreferenceConstants;
-import org.eclipse.cdt.ui.dialogs.DocCommentOwnerComposite;
import org.eclipse.cdt.ui.text.doctools.IDocCommentOwner;
import org.eclipse.cdt.utils.ui.controls.ControlFactory;
import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.e4.core.contexts.EclipseContextFactory;
import org.eclipse.jface.preference.ColorSelector;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.preference.PreferenceConverter;
@@ -56,6 +59,7 @@ import org.eclipse.swt.widgets.List;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.dialogs.PreferencesUtil;
import org.osgi.framework.Bundle;
+import org.osgi.framework.FrameworkUtil;
import org.osgi.framework.Version;
/**
@@ -82,14 +86,18 @@ public class CEditorPreferencePage extends AbstractPreferencePage {
private List fAppearanceColorList;
private ColorSelector fAppearanceColorEditor;
private Button fAppearanceColorDefault;
- private DocCommentOwnerComposite fDocCommentOwnerComposite;
+ private DocCommentOwnerArea docCommentOwnerArea;
// TODO(sprigogin): Remove once compatibility with Platform 4.4 is no longer required.
private final boolean formattingScopeForEmptySelectionSupported;
+ private final DoxygenPreferences doxygenPreferences;
public CEditorPreferencePage() {
super();
Bundle jfaceText = Platform.getBundle("org.eclipse.jface.text"); //$NON-NLS-1$
formattingScopeForEmptySelectionSupported = jfaceText.getVersion().compareTo(new Version(3, 10, 0)) >= 0;
+ doxygenPreferences = EclipseContextFactory
+ .getServiceContext(FrameworkUtil.getBundle(getClass()).getBundleContext())
+ .get(DoxygenPreferences.class);
}
@Override
@@ -343,12 +351,8 @@ public class CEditorPreferencePage extends AbstractPreferencePage {
String dsc = PreferencesMessages.CEditorPreferencePage_SelectDocToolDescription;
String msg = PreferencesMessages.CEditorPreferencePage_WorkspaceDefaultLabel;
- IDocCommentOwner workspaceOwner = DocCommentOwnerManager.getInstance().getWorkspaceCommentOwner();
- fDocCommentOwnerComposite = new DocCommentOwnerComposite(contents, workspaceOwner, dsc, msg);
- fDocCommentOwnerComposite.setLayoutData(GridDataFactory.fillDefaults().grab(true, false).create());
-
+ docCommentOwnerArea = new DocCommentOwnerArea(contents, doxygenPreferences.metadata(), dsc, msg);
initialize();
-
return contents;
}
@@ -363,12 +367,14 @@ public class CEditorPreferencePage extends AbstractPreferencePage {
fAppearanceColorList.select(0);
handleAppearanceColorListSelection();
});
+ IDocCommentOwner workspaceOwner = DocCommentOwnerManager.getInstance().getWorkspaceCommentOwner();
+ docCommentOwnerArea.initialize(workspaceOwner, doxygenPreferences.workspaceStorage());
}
@Override
public boolean performOk() {
- DocCommentOwnerManager.getInstance()
- .setWorkspaceCommentOwner(fDocCommentOwnerComposite.getSelectedDocCommentOwner());
+ DocCommentOwnerManager.getInstance().setWorkspaceCommentOwner(docCommentOwnerArea.getSelectedDocCommentOwner());
+ docCommentOwnerArea.apply(doxygenPreferences.workspaceStorage());
return super.performOk();
}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CTemplatePreferencePage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CTemplatePreferencePage.java
index 7788b63ba9f..91b70fbcbcc 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CTemplatePreferencePage.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CTemplatePreferencePage.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2002, 2010 QNX Software Systems and others.
+ * Copyright (c) 2002, 2021 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -11,6 +11,7 @@
* Contributors:
* QNX Software Systems - Initial API and implementation
* Wind River Systems, Inc. - Bug fixes
+ * IBM Corporation - Bug fixes
*******************************************************************************/
package org.eclipse.cdt.internal.ui.preferences;
@@ -33,8 +34,8 @@ import org.eclipse.jface.text.templates.ContextTypeRegistry;
import org.eclipse.jface.text.templates.Template;
import org.eclipse.jface.window.Window;
import org.eclipse.swt.SWT;
-import org.eclipse.swt.accessibility.AccessibleAdapter;
-import org.eclipse.swt.accessibility.AccessibleEvent;
+import org.eclipse.swt.accessibility.ACC;
+import org.eclipse.swt.accessibility.AccessibleListener;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
@@ -112,6 +113,25 @@ public class CTemplatePreferencePage extends TemplatePreferencePage {
}
/*
+ * @see PreferencePage#createContents(Composite)
+ */
+ @Override
+ protected Control createContents(Composite ancestor) {
+ Control control = super.createContents(ancestor);
+ //must occur after contents created
+ if (getTableViewer() == null) {
+ String description = getDescription();
+ //same description as used in PreferencePage.createDescriptionLabel(Composite parent)
+ getTableViewer().getControl().getAccessible().addAccessibleListener(AccessibleListener.getNameAdapter(e -> {
+ if (e.childID == ACC.CHILDID_SELF && (e.result == null || e.result.trim().isEmpty())) {
+ e.result = description;
+ }
+ }));
+ }
+ return control;
+ }
+
+ /*
* @see org.eclipse.ui.texteditor.templates.TemplatePreferencePage#getFormatterPreferenceKey()
*/
@Override
@@ -157,12 +177,9 @@ public class CTemplatePreferencePage extends TemplatePreferencePage {
data.heightHint = convertHeightInCharsToPixels(5);
control.setLayoutData(data);
- control.getAccessible().addAccessibleListener(new AccessibleAdapter() {
- @Override
- public void getName(AccessibleEvent e) {
- e.result = PreferencesMessages.TemplatePreferencePage_Viewer_preview;
- }
- });
+ control.getAccessible().addAccessibleListener(AccessibleListener.getNameAdapter(e -> {
+ e.result = PreferencesMessages.TemplatePreferencePage_Viewer_preview;
+ }));
CSourcePreviewerUpdater.registerPreviewer(viewer, configuration,
CUIPlugin.getDefault().getCombinedPreferenceStore());
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CodeAssistAdvancedConfigurationBlock.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CodeAssistAdvancedConfigurationBlock.java
index 86927a8c57f..5649396e724 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CodeAssistAdvancedConfigurationBlock.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CodeAssistAdvancedConfigurationBlock.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2005, 2016 IBM Corporation and others.
+ * Copyright (c) 2005, 2021 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -14,6 +14,7 @@
*******************************************************************************/
package org.eclipse.cdt.internal.ui.preferences;
+import java.text.ParseException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
@@ -21,10 +22,12 @@ import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import org.eclipse.cdt.internal.ui.dialogs.IStatusChangeListener;
import org.eclipse.cdt.internal.ui.dialogs.StatusInfo;
import org.eclipse.cdt.internal.ui.text.contentassist.CompletionProposalCategory;
+import org.eclipse.cdt.internal.ui.text.contentassist.CompletionProposalComputerPreferenceParser;
import org.eclipse.cdt.internal.ui.text.contentassist.CompletionProposalComputerRegistry;
import org.eclipse.cdt.internal.ui.util.Messages;
import org.eclipse.cdt.internal.ui.util.SWTUtil;
@@ -53,6 +56,9 @@ import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.ViewerComparator;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.accessibility.ACC;
+import org.eclipse.swt.accessibility.AccessibleListener;
+import org.eclipse.swt.custom.StyledText;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.GC;
@@ -152,7 +158,7 @@ final class CodeAssistAdvancedConfigurationBlock extends OptionsConfigurationBlo
}
}
- private final Comparator<ModelElement> fCategoryComparator = new Comparator<ModelElement>() {
+ private final Comparator<ModelElement> fCategoryComparator = new Comparator<>() {
@Override
public int compare(ModelElement o1, ModelElement o2) {
return o1.getRank() - o2.getRank();
@@ -230,22 +236,25 @@ final class CodeAssistAdvancedConfigurationBlock extends OptionsConfigurationBlo
}
private boolean readInclusionPreference(CompletionProposalCategory cat) {
- String[] ids = getTokens(getValue(PREF_EXCLUDED_CATEGORIES), SEPARATOR);
- for (String id : ids) {
- if (id.equals(cat.getId()))
- return false;
+ String value = getValue(PREF_EXCLUDED_CATEGORIES);
+ try {
+ Set<String> parseExcludedCategories = CompletionProposalComputerPreferenceParser
+ .parseExcludedCategories(value);
+ return !parseExcludedCategories.contains(cat.getId());
+ } catch (ParseException e) {
+ return true;
}
- return true;
}
private int readOrderPreference(CompletionProposalCategory cat) {
- String[] sortOrderIds = getTokens(getValue(PREF_CATEGORY_ORDER), SEPARATOR);
- for (String sortOrderId : sortOrderIds) {
- String[] idAndRank = getTokens(sortOrderId, COLON);
- if (idAndRank[0].equals(cat.getId()))
- return Integer.parseInt(idAndRank[1]);
+ String categoryOrderPref = getValue(PREF_CATEGORY_ORDER);
+ try {
+ Map<String, Integer> parseCategoryOrder = CompletionProposalComputerPreferenceParser
+ .parseCategoryOrder(categoryOrderPref);
+ return parseCategoryOrder.getOrDefault(cat.getId(), LIMIT + 1);
+ } catch (ParseException e) {
+ return LIMIT + 1;
}
- return LIMIT + 1;
}
public void update() {
@@ -413,6 +422,21 @@ final class CodeAssistAdvancedConfigurationBlock extends OptionsConfigurationBlo
textField.setToolTipText(toolTip);
}
+ private StyledText createAccessibleLabelUsingStyledText(Composite composite, int style, String value) {
+ StyledText styledTextWidget = new StyledText(composite, SWT.SINGLE | SWT.NONE);
+ styledTextWidget.setText(value);
+ styledTextWidget.setEditable(false);
+ styledTextWidget.setCaret(null);
+ styledTextWidget.setBackground(composite.getBackground());
+ styledTextWidget.setToolTipText(value);
+ styledTextWidget.getAccessible().addAccessibleListener(AccessibleListener.getNameAdapter(e -> {
+ if (e.childID == ACC.CHILDID_SELF && (e.result == null || e.result.trim().isEmpty())) {
+ e.result = value;
+ }
+ }));
+ return styledTextWidget;
+ }
+
private void createDefaultLabel(Composite composite, int h_span) {
final ICommandService commandSvc = PlatformUI.getWorkbench().getAdapter(ICommandService.class);
final Command command = commandSvc.getCommand(ITextEditorActionDefinitionIds.CONTENT_ASSIST_PROPOSALS);
@@ -424,16 +448,16 @@ final class CodeAssistAdvancedConfigurationBlock extends OptionsConfigurationBlo
PixelConverter pixelConverter = new PixelConverter(composite);
int width = pixelConverter.convertWidthInCharsToPixels(40);
- Label label = new Label(composite, SWT.NONE | SWT.WRAP);
- label.setText(Messages.format(PreferencesMessages.CodeAssistAdvancedConfigurationBlock_page_description,
- new Object[] { key }));
+ StyledText pageDescription = createAccessibleLabelUsingStyledText(composite, SWT.NONE | SWT.WRAP,
+ Messages.format(PreferencesMessages.CodeAssistAdvancedConfigurationBlock_page_description,
+ new Object[] { key }));
GridData gd = new GridData(GridData.FILL, GridData.FILL, true, false, h_span, 1);
gd.widthHint = width;
- label.setLayoutData(gd);
+ pageDescription.setLayoutData(gd);
createFiller(composite, h_span);
- label = new Label(composite, SWT.NONE | SWT.WRAP);
+ Label label = new Label(composite, SWT.NONE | SWT.WRAP);
label.setText(PreferencesMessages.CodeAssistAdvancedConfigurationBlock_default_table_description);
gd = new GridData(GridData.FILL, GridData.FILL, true, false, h_span, 1);
gd.widthHint = width;
@@ -465,6 +489,12 @@ final class CodeAssistAdvancedConfigurationBlock extends OptionsConfigurationBlo
}
});
+ fDefaultViewer.getControl().getAccessible().addAccessibleListener(AccessibleListener.getNameAdapter(e -> {
+ if (e.childID == ACC.CHILDID_SELF && (e.result == null || e.result.trim().isEmpty())) {
+ e.result = PreferencesMessages.CodeAssistAdvancedConfigurationBlock_default_table_description;
+ }
+ }));
+
fDefaultViewer.setContentProvider(ArrayContentProvider.getInstance());
DefaultTableLabelProvider labelProvider = new DefaultTableLabelProvider();
@@ -567,6 +597,12 @@ final class CodeAssistAdvancedConfigurationBlock extends OptionsConfigurationBlo
}
});
+ fSeparateViewer.getControl().getAccessible().addAccessibleListener(AccessibleListener.getNameAdapter(e -> {
+ if (e.childID == ACC.CHILDID_SELF && (e.result == null || e.result.trim().isEmpty())) {
+ e.result = PreferencesMessages.CodeAssistAdvancedConfigurationBlock_separate_table_description;
+ }
+ }));
+
table.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/HeaderSubstitutionMapEditDialog.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/HeaderSubstitutionMapEditDialog.java
index 9d8faa6a295..385b8173bff 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/HeaderSubstitutionMapEditDialog.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/HeaderSubstitutionMapEditDialog.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2013 Google, Inc and others.
+ * Copyright (c) 2013, 2020 Google, Inc and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -10,6 +10,7 @@
*
* Contributors:
* Sergey Prigogin (Google) - initial API and implementation
+ * Alexander Fedorov (ArSysOp) - Bug 561993 - Remove dependency to com.ibm.icu from CDT UI
*******************************************************************************/
package org.eclipse.cdt.internal.ui.preferences;
@@ -21,6 +22,7 @@ import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
+import java.text.Collator;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
@@ -71,8 +73,6 @@ import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.XMLMemento;
-import com.ibm.icu.text.Collator;
-
/**
* Dialog for editing a header file substitution map.
*/
@@ -80,7 +80,7 @@ public class HeaderSubstitutionMapEditDialog extends ResizableStatusDialog {
private static final String UTF_8 = "UTF-8"; //$NON-NLS-1$
private static final String TAG_HEADER_SUBSTITUTION_MAP = "header_substitution_map"; //$NON-NLS-1$
private static final Collator COLLATOR = Collator.getInstance();
- private static final Comparator<HeaderSubstitutionRule> SOURCE_COMPARATOR = new Comparator<HeaderSubstitutionRule>() {
+ private static final Comparator<HeaderSubstitutionRule> SOURCE_COMPARATOR = new Comparator<>() {
@Override
public int compare(HeaderSubstitutionRule r1, HeaderSubstitutionRule r2) {
return COLLATOR.compare(r1.getSource(), r2.getSource());
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/IndexerStrategyBlock.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/IndexerStrategyBlock.java
index a076dafdb8f..3f7b8894bba 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/IndexerStrategyBlock.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/IndexerStrategyBlock.java
@@ -18,6 +18,7 @@ import org.eclipse.cdt.core.settings.model.ICProjectDescriptionManager;
import org.eclipse.cdt.core.settings.model.ICProjectDescriptionPreferences;
import org.eclipse.cdt.core.settings.model.ICProjectDescriptionWorkspacePreferences;
import org.eclipse.cdt.internal.core.pdom.indexer.IndexerPreferences;
+import org.eclipse.cdt.internal.core.settings.model.CProjectDescriptionPreferences;
import org.eclipse.cdt.ui.dialogs.AbstractCOptionPage;
import org.eclipse.cdt.ui.dialogs.ICOptionContainer;
import org.eclipse.cdt.utils.ui.controls.ControlFactory;
@@ -143,8 +144,10 @@ public class IndexerStrategyBlock extends AbstractCOptionPage {
public void performDefaults() {
initUpdatePolicy(IndexerPreferences.getDefaultUpdatePolicy());
if (fUseActiveBuildButton != null) {
- fUseActiveBuildButton.setSelection(false);
- fUseFixedBuildConfig.setSelection(true);
+ boolean defaultUseActive = CProjectDescriptionPreferences
+ .getDefaultRelations() == ICProjectDescriptionPreferences.CONFIGS_LINK_SETTINGS_AND_ACTIVE;
+ fUseActiveBuildButton.setSelection(defaultUseActive);
+ fUseFixedBuildConfig.setSelection(!defaultUseActive);
}
updateEnablement();
}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/NameStyleBlock.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/NameStyleBlock.java
index 769d3b1030a..7f2d7e14be0 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/NameStyleBlock.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/NameStyleBlock.java
@@ -160,53 +160,50 @@ public class NameStyleBlock extends OptionsConfigurationBlock {
Category codeCategory = new Category(PreferencesMessages.NameStyleBlock_code_node);
new Category(PreferencesMessages.NameStyleBlock_constant_node,
PreferencesMessages.NameStyleBlock_constant_node_description, EXAMPLE_CONSTANT_NAME, codeCategory)
- .setCapitalizationKey(KEY_CONSTANT_CAPITALIZATION)
- .setWordDelimiterKey(KEY_CONSTANT_WORD_DELIMITER).setPrefixKey(KEY_CONSTANT_PREFIX)
- .setSuffixKey(KEY_CONSTANT_SUFFIX).setNameValidator(IDENTIFIER_VALIDATOR);
+ .setCapitalizationKey(KEY_CONSTANT_CAPITALIZATION).setWordDelimiterKey(KEY_CONSTANT_WORD_DELIMITER)
+ .setPrefixKey(KEY_CONSTANT_PREFIX).setSuffixKey(KEY_CONSTANT_SUFFIX)
+ .setNameValidator(IDENTIFIER_VALIDATOR);
new Category(PreferencesMessages.NameStyleBlock_variable_node,
PreferencesMessages.NameStyleBlock_variable_node_description, EXAMPLE_VARIABLE_NAME, codeCategory)
- .setCapitalizationKey(KEY_VARIABLE_CAPITALIZATION)
- .setWordDelimiterKey(KEY_VARIABLE_WORD_DELIMITER).setPrefixKey(KEY_VARIABLE_PREFIX)
- .setSuffixKey(KEY_VARIABLE_SUFFIX).setNameValidator(IDENTIFIER_VALIDATOR);
+ .setCapitalizationKey(KEY_VARIABLE_CAPITALIZATION).setWordDelimiterKey(KEY_VARIABLE_WORD_DELIMITER)
+ .setPrefixKey(KEY_VARIABLE_PREFIX).setSuffixKey(KEY_VARIABLE_SUFFIX)
+ .setNameValidator(IDENTIFIER_VALIDATOR);
Category fieldCategory = new Category(PreferencesMessages.NameStyleBlock_field_node,
PreferencesMessages.NameStyleBlock_field_node_description, EXAMPLE_FIELD_NAME, codeCategory)
- .setCapitalizationKey(KEY_FIELD_CAPITALIZATION).setWordDelimiterKey(KEY_FIELD_WORD_DELIMITER)
- .setPrefixKey(KEY_FIELD_PREFIX).setSuffixKey(KEY_FIELD_SUFFIX)
- .setNameValidator(IDENTIFIER_VALIDATOR);
+ .setCapitalizationKey(KEY_FIELD_CAPITALIZATION).setWordDelimiterKey(KEY_FIELD_WORD_DELIMITER)
+ .setPrefixKey(KEY_FIELD_PREFIX).setSuffixKey(KEY_FIELD_SUFFIX).setNameValidator(IDENTIFIER_VALIDATOR);
new Category(PreferencesMessages.NameStyleBlock_method_node,
PreferencesMessages.NameStyleBlock_method_node_description, EXAMPLE_METHOD_NAME, codeCategory)
- .setCapitalizationKey(KEY_METHOD_CAPITALIZATION).setWordDelimiterKey(KEY_METHOD_WORD_DELIMITER)
- .setPrefixKey(KEY_METHOD_PREFIX).setSuffixKey(KEY_METHOD_SUFFIX)
- .setNameValidator(IDENTIFIER_VALIDATOR);
+ .setCapitalizationKey(KEY_METHOD_CAPITALIZATION).setWordDelimiterKey(KEY_METHOD_WORD_DELIMITER)
+ .setPrefixKey(KEY_METHOD_PREFIX).setSuffixKey(KEY_METHOD_SUFFIX).setNameValidator(IDENTIFIER_VALIDATOR);
new Category(PreferencesMessages.NameStyleBlock_getter_node,
PreferencesMessages.NameStyleBlock_getter_node_description, EXAMPLE_FIELD_NAME, codeCategory)
- .setCapitalizationKey(KEY_GETTER_CAPITALIZATION).setWordDelimiterKey(KEY_GETTER_WORD_DELIMITER)
- .setPrefixKey(KEY_GETTER_PREFIX).setAlternativePrefixKey(KEY_GETTER_PREFIX_FOR_BOOLEAN)
- .setSuffixKey(KEY_GETTER_SUFFIX).setSeedNameGenerator(fieldCategory)
- .setNameValidator(IDENTIFIER_VALIDATOR).setTrimFieldName(true);
+ .setCapitalizationKey(KEY_GETTER_CAPITALIZATION).setWordDelimiterKey(KEY_GETTER_WORD_DELIMITER)
+ .setPrefixKey(KEY_GETTER_PREFIX).setAlternativePrefixKey(KEY_GETTER_PREFIX_FOR_BOOLEAN)
+ .setSuffixKey(KEY_GETTER_SUFFIX).setSeedNameGenerator(fieldCategory)
+ .setNameValidator(IDENTIFIER_VALIDATOR).setTrimFieldName(true);
new Category(PreferencesMessages.NameStyleBlock_setter_node,
PreferencesMessages.NameStyleBlock_setter_node_description, EXAMPLE_FIELD_NAME, codeCategory)
- .setCapitalizationKey(KEY_SETTER_CAPITALIZATION).setWordDelimiterKey(KEY_SETTER_WORD_DELIMITER)
- .setPrefixKey(KEY_SETTER_PREFIX).setSuffixKey(KEY_SETTER_SUFFIX)
- .setSeedNameGenerator(fieldCategory).setNameValidator(IDENTIFIER_VALIDATOR)
- .setTrimFieldName(true);
+ .setCapitalizationKey(KEY_SETTER_CAPITALIZATION).setWordDelimiterKey(KEY_SETTER_WORD_DELIMITER)
+ .setPrefixKey(KEY_SETTER_PREFIX).setSuffixKey(KEY_SETTER_SUFFIX).setSeedNameGenerator(fieldCategory)
+ .setNameValidator(IDENTIFIER_VALIDATOR).setTrimFieldName(true);
new IncludeGuardCategory(codeCategory);
Category fileCategory = new Category(PreferencesMessages.NameStyleBlock_files_node);
new Category(PreferencesMessages.NameStyleBlock_cpp_header_node,
PreferencesMessages.NameStyleBlock_cpp_header_node_description, EXAMPLE_CLASS_NAME, fileCategory)
- .setCapitalizationKey(KEY_CPP_HEADER_CAPITALIZATION)
- .setWordDelimiterKey(KEY_CPP_HEADER_WORD_DELIMITER).setPrefixKey(KEY_CPP_HEADER_PREFIX)
- .setSuffixKey(KEY_CPP_HEADER_SUFFIX).setNameValidator(FILENAME_VALIDATOR);
+ .setCapitalizationKey(KEY_CPP_HEADER_CAPITALIZATION).setWordDelimiterKey(KEY_CPP_HEADER_WORD_DELIMITER)
+ .setPrefixKey(KEY_CPP_HEADER_PREFIX).setSuffixKey(KEY_CPP_HEADER_SUFFIX)
+ .setNameValidator(FILENAME_VALIDATOR);
new Category(PreferencesMessages.NameStyleBlock_cpp_source_node,
PreferencesMessages.NameStyleBlock_cpp_source_node_description, EXAMPLE_CLASS_NAME, fileCategory)
- .setCapitalizationKey(KEY_CPP_SOURCE_CAPITALIZATION)
- .setWordDelimiterKey(KEY_CPP_SOURCE_WORD_DELIMITER).setPrefixKey(KEY_CPP_SOURCE_PREFIX)
- .setSuffixKey(KEY_CPP_SOURCE_SUFFIX).setNameValidator(FILENAME_VALIDATOR);
+ .setCapitalizationKey(KEY_CPP_SOURCE_CAPITALIZATION).setWordDelimiterKey(KEY_CPP_SOURCE_WORD_DELIMITER)
+ .setPrefixKey(KEY_CPP_SOURCE_PREFIX).setSuffixKey(KEY_CPP_SOURCE_SUFFIX)
+ .setNameValidator(FILENAME_VALIDATOR);
new Category(PreferencesMessages.NameStyleBlock_cpp_test_node,
PreferencesMessages.NameStyleBlock_cpp_test_node_description, EXAMPLE_CLASS_NAME, fileCategory)
- .setCapitalizationKey(KEY_CPP_TEST_CAPITALIZATION)
- .setWordDelimiterKey(KEY_CPP_TEST_WORD_DELIMITER).setPrefixKey(KEY_CPP_TEST_PREFIX)
- .setSuffixKey(KEY_CPP_TEST_SUFFIX).setNameValidator(FILENAME_VALIDATOR);
+ .setCapitalizationKey(KEY_CPP_TEST_CAPITALIZATION).setWordDelimiterKey(KEY_CPP_TEST_WORD_DELIMITER)
+ .setPrefixKey(KEY_CPP_TEST_PREFIX).setSuffixKey(KEY_CPP_TEST_SUFFIX)
+ .setNameValidator(FILENAME_VALIDATOR);
return new Category[] { codeCategory, fileCategory };
}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/PreferencesMessages.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/PreferencesMessages.java
index 4298052a36c..a0e29530635 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/PreferencesMessages.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/PreferencesMessages.java
@@ -155,6 +155,7 @@ public final class PreferencesMessages extends NLS {
public static String AppearancePreferencePage_outlineGroupMethods_label;
public static String AppearancePreferencePage_outlineGroupNamespaces_label;
public static String AppearancePreferencePage_outlineGroupMacros_label;
+ public static String AppearancePreferencePage_HidePragmaMarks_label;
public static String AppearancePreferencePage_note;
public static String AppearancePreferencePage_preferenceOnlyForNewViews;
public static String AppearancePreferencePage_showSourceRootsAtTopOfProject_label;
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/PreferencesMessages.properties b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/PreferencesMessages.properties
index 7a42b567672..c765c083b50 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/PreferencesMessages.properties
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/PreferencesMessages.properties
@@ -188,6 +188,7 @@ AppearancePreferencePage_outlineGroupNamespaces_label= Group namespaces in the O
AppearancePreferencePage_note=Note:
AppearancePreferencePage_preferenceOnlyForNewViews=These two preferences do not affect open views
AppearancePreferencePage_outlineGroupMacros_label=Group macro definitions in the Outline view
+AppearancePreferencePage_HidePragmaMarks_label=Hide Dividers (#pragma mark or #pragma region/endregion) in the Outline view
AppearancePreferencePage_showSourceRootsAtTopOfProject_label=Show source roots at top of project
#Build Logging
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/TabConfigurationBlock.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/TabConfigurationBlock.java
index 2760aeba143..9336285ed56 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/TabConfigurationBlock.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/TabConfigurationBlock.java
@@ -24,14 +24,14 @@ import org.eclipse.core.runtime.Status;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.layout.PixelConverter;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CTabFolder;
+import org.eclipse.swt.custom.CTabItem;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.TabFolder;
-import org.eclipse.swt.widgets.TabItem;
import org.eclipse.ui.preferences.IWorkbenchPreferenceContainer;
/**
@@ -75,12 +75,12 @@ public class TabConfigurationBlock extends OptionsConfigurationBlock {
@Override
protected Control createContents(Composite parent) {
PixelConverter pixelConverter = new PixelConverter(parent);
- final TabFolder folder = new TabFolder(parent, SWT.NONE);
+ final CTabFolder folder = new CTabFolder(parent, SWT.NONE);
folder.setLayout(new TabFolderLayout());
folder.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false));
for (int i = 0; i < fTabs.length; i++) {
- TabItem item = new TabItem(folder, SWT.NONE);
+ CTabItem item = new CTabItem(folder, SWT.NONE);
item.setText(fTabLabels[i]);
Composite composite = new Composite(folder, SWT.NONE);
FillLayout layout = new FillLayout();
@@ -91,6 +91,7 @@ public class TabConfigurationBlock extends OptionsConfigurationBlock {
item.setData(fTabs[i]);
fTabs[i].createContents(composite);
}
+ folder.setSelection(0);
Dialog.applyDialogFont(folder);
folder.addSelectionListener(new SelectionListener() {
@Override
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/formatter/LineWrappingTabPage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/formatter/LineWrappingTabPage.java
index 9673756f15a..ad8eeaae0ba 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/formatter/LineWrappingTabPage.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/formatter/LineWrappingTabPage.java
@@ -401,7 +401,7 @@ public class LineWrappingTabPage extends FormatterTabPage {
private final Category fMessageSendArgumentsCategory = new Category(
DefaultCodeFormatterConstants.FORMATTER_ALIGNMENT_FOR_ARGUMENTS_IN_METHOD_INVOCATION,
"class Other {static void bar(int arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int arg7, int arg8, int arg9) {}};" //$NON-NLS-1$
- + "void foo() {Other::bar(100, 200, 300, 400, 500, 600, 700, 800, 900);}",
+ + "void foo() {Other::bar(100, 200, 300, 400, 500, 600, 700, 800, 900);}", //$NON-NLS-1$
FormatterMessages.LineWrappingTabPage_arguments, FormatterMessages.LineWrappingTabPage_arguments_lowercase);
private final Category fMethodThrowsClauseCategory = new Category(
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/formatter/ModifyDialog.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/formatter/ModifyDialog.java
index 6b17b472355..cb4506e91da 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/formatter/ModifyDialog.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/formatter/ModifyDialog.java
@@ -42,6 +42,8 @@ import org.eclipse.jface.dialogs.IDialogSettings;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.dialogs.StatusDialog;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CTabFolder;
+import org.eclipse.swt.custom.CTabItem;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.Point;
@@ -54,8 +56,6 @@ import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.TabFolder;
-import org.eclipse.swt.widgets.TabItem;
public abstract class ModifyDialog extends StatusDialog implements IModifyDialogTabPage.IModificationListener {
@@ -88,7 +88,7 @@ public abstract class ModifyDialog extends StatusDialog implements IModifyDialog
private final Map<String, String> fWorkingValues;
private final List<IModifyDialogTabPage> fTabPages;
private final IDialogSettings fDialogSettings;
- private TabFolder fTabFolder;
+ private CTabFolder fTabFolder;
private final ProfileManager fProfileManager;
private Button fApplyButton;
private Button fSaveButton;
@@ -137,7 +137,7 @@ public abstract class ModifyDialog extends StatusDialog implements IModifyDialog
if (!fNewProfile) {
fTabFolder.setSelection(lastFocusNr);
- ((IModifyDialogTabPage) fTabFolder.getSelection()[0].getData()).setInitialFocus();
+ ((IModifyDialogTabPage) fTabFolder.getSelection().getData()).setInitialFocus();
}
}
@@ -165,11 +165,14 @@ public abstract class ModifyDialog extends StatusDialog implements IModifyDialog
fSaveButton = createButton(nameComposite, SAVE_BUTTON_ID, FormatterMessages.ModifyDialog_Export_Button, false);
- fTabFolder = new TabFolder(composite, SWT.NONE);
+ fTabFolder = new CTabFolder(composite, SWT.NONE);
fTabFolder.setFont(composite.getFont());
fTabFolder.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
addPages(fWorkingValues);
+ if (fTabFolder.getSelection() == null) {
+ fTabFolder.setSelection(0);
+ }
applyDialogFont(composite);
@@ -180,7 +183,7 @@ public abstract class ModifyDialog extends StatusDialog implements IModifyDialog
@Override
public void widgetSelected(SelectionEvent e) {
- final TabItem tabItem = (TabItem) e.item;
+ final CTabItem tabItem = (CTabItem) e.item;
final IModifyDialogTabPage page = (IModifyDialogTabPage) tabItem.getData();
// page.fSashForm.setWeights();
fDialogSettings.put(fKeyLastFocus, fTabPages.indexOf(page));
@@ -330,7 +333,7 @@ public abstract class ModifyDialog extends StatusDialog implements IModifyDialog
}
protected final void addTabPage(String title, IModifyDialogTabPage tabPage) {
- final TabItem tabItem = new TabItem(fTabFolder, SWT.NONE);
+ final CTabItem tabItem = new CTabItem(fTabFolder, SWT.NONE);
applyDialogFont(tabItem.getControl());
tabItem.setText(title);
tabItem.setData(tabPage);
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/ChangeExceptionHandler.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/ChangeExceptionHandler.java
index 2391ddf4b4c..bb398fc0bbc 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/ChangeExceptionHandler.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/ChangeExceptionHandler.java
@@ -26,7 +26,7 @@ import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.ProgressMonitorWrapper;
import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.SubProgressMonitor;
+import org.eclipse.core.runtime.SubMonitor;
import org.eclipse.jface.dialogs.ErrorDialog;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.ProgressMonitorDialog;
@@ -144,14 +144,13 @@ public class ChangeExceptionHandler {
IWorkspaceRunnable runnable = new IWorkspaceRunnable() {
@Override
public void run(IProgressMonitor monitor) throws CoreException {
- monitor.beginTask("", 11); //$NON-NLS-1$
+ SubMonitor subMonitor = SubMonitor.convert(monitor, 11);
try {
- undo.initializeValidationData(new NotCancelableProgressMonitor(new SubProgressMonitor(monitor, 1)));
- if (undo.isValid(new SubProgressMonitor(monitor, 1)).hasFatalError()) {
- monitor.done();
+ undo.initializeValidationData(new NotCancelableProgressMonitor(subMonitor.split(1)));
+ if (undo.isValid(subMonitor.split(1)).hasFatalError()) {
return;
}
- undo.perform(new SubProgressMonitor(monitor, 9));
+ undo.perform(subMonitor.split(9));
} finally {
undo.dispose();
}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/NodeContainer.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/NodeContainer.java
index ee93fc0ce12..277bacad3fa 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/NodeContainer.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/NodeContainer.java
@@ -20,6 +20,7 @@ import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
+import java.util.Optional;
import java.util.Set;
import org.eclipse.cdt.core.dom.ast.ASTVisitor;
@@ -43,7 +44,6 @@ import org.eclipse.cdt.internal.core.dom.parser.ASTInternal;
import org.eclipse.cdt.internal.core.dom.parser.ASTQueries;
import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPVariableReadWriteFlags;
import org.eclipse.cdt.internal.core.dom.rewrite.util.ASTNodes;
-import org.eclipse.cdt.internal.core.pdom.dom.PDOMName;
import org.eclipse.cdt.internal.corext.refactoring.code.flow.FlowContext;
import org.eclipse.cdt.internal.corext.refactoring.code.flow.FlowInfo;
import org.eclipse.cdt.internal.corext.refactoring.code.flow.InputFlowAnalyzer;
@@ -179,8 +179,8 @@ public class NodeContainer {
if (!hasReferenceOperator(declarator)) {
for (NameInformation n2 : names) {
if (n2.getDeclarationName() == declarationName) {
- int flag = CPPVariableReadWriteFlags.getReadWriteFlags(n2.getName());
- if ((flag & PDOMName.WRITE_ACCESS) != 0) {
+ Optional<Integer> flags = CPPVariableReadWriteFlags.getReadWriteFlags(n2.getName());
+ if (CPPVariableReadWriteFlags.mayBeWriteAccess(flags)) {
nameInfo.setWriteAccess(true);
break;
}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/RefactoringExecutionHelper.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/RefactoringExecutionHelper.java
index cfbac605411..d7137a1da5d 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/RefactoringExecutionHelper.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/RefactoringExecutionHelper.java
@@ -17,18 +17,13 @@ package org.eclipse.cdt.internal.ui.refactoring;
import java.lang.reflect.InvocationTargetException;
import org.eclipse.cdt.internal.ui.actions.WorkbenchRunnableAdapter;
-import org.eclipse.core.resources.IWorkspaceRunnable;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.Assert;
import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.OperationCanceledException;
-import org.eclipse.core.runtime.SubProgressMonitor;
import org.eclipse.core.runtime.jobs.IJobManager;
import org.eclipse.core.runtime.jobs.ISchedulingRule;
import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.operation.IRunnableContext;
import org.eclipse.ltk.core.refactoring.Change;
@@ -36,7 +31,6 @@ import org.eclipse.ltk.core.refactoring.PerformChangeOperation;
import org.eclipse.ltk.core.refactoring.Refactoring;
import org.eclipse.ltk.core.refactoring.RefactoringCore;
import org.eclipse.ltk.core.refactoring.RefactoringStatus;
-import org.eclipse.ltk.ui.refactoring.RefactoringUI;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.custom.BusyIndicator;
import org.eclipse.swt.widgets.Display;
@@ -51,67 +45,8 @@ public class RefactoringExecutionHelper {
private final Refactoring fRefactoring;
private final Shell fParent;
private final IRunnableContext fExecContext;
- private final int fStopSeverity;
private final int fSaveMode;
- private class Operation implements IWorkspaceRunnable {
- Change fChange;
- PerformChangeOperation fPerformChangeOperation;
- final boolean fForked;
- final boolean fForkChangeExecution;
- final boolean fCancelable;
-
- public Operation(boolean forked, boolean forkChangeExecution, boolean cancelable) {
- fForked = forked;
- fForkChangeExecution = forkChangeExecution;
- this.fCancelable = cancelable;
- }
-
- @Override
- public void run(IProgressMonitor pm) throws CoreException {
- try {
- pm.beginTask("", fForked && !fForkChangeExecution ? 7 : 11); //$NON-NLS-1$
- pm.subTask(""); //$NON-NLS-1$
-
- final RefactoringStatus status = fRefactoring.checkAllConditions(
- new SubProgressMonitor(pm, 4, SubProgressMonitor.PREPEND_MAIN_LABEL_TO_SUBTASK));
- if (status.getSeverity() >= fStopSeverity) {
- final boolean[] canceled = { false };
- if (fForked) {
- fParent.getDisplay().syncExec(() -> canceled[0] = showStatusDialog(status));
- } else {
- canceled[0] = showStatusDialog(status);
- }
- if (canceled[0]) {
- throw new OperationCanceledException();
- }
- }
-
- fChange = fRefactoring
- .createChange(new SubProgressMonitor(pm, 2, SubProgressMonitor.PREPEND_MAIN_LABEL_TO_SUBTASK));
- fChange.initializeValidationData(
- new SubProgressMonitor(pm, 1, SubProgressMonitor.PREPEND_MAIN_LABEL_TO_SUBTASK));
-
- fPerformChangeOperation = createPerformChangeOperation(fChange);
-
- if (!fForked || fForkChangeExecution)
- fPerformChangeOperation
- .run(new SubProgressMonitor(pm, 4, SubProgressMonitor.PREPEND_MAIN_LABEL_TO_SUBTASK));
- } finally {
- pm.done();
- }
- }
-
- /**
- * @param status the status to show
- * @return <code>true</code> iff the operation should be cancelled
- */
- private boolean showStatusDialog(RefactoringStatus status) {
- Dialog dialog = RefactoringUI.createRefactoringStatusDialog(status, fParent, fRefactoring.getName(), false);
- return dialog.open() == IDialogConstants.CANCEL_ID;
- }
- }
-
/**
* Creates a new refactoring execution helper.
*
@@ -128,54 +63,24 @@ public class RefactoringExecutionHelper {
Assert.isNotNull(parent);
Assert.isNotNull(context);
fRefactoring = refactoring;
- fStopSeverity = stopSeverity;
fParent = parent;
fExecContext = context;
fSaveMode = saveMode;
}
- /**
- * Must be called in the UI thread.
- * @param fork if set, the operation will be forked
- * @param cancelable if set, the operation will be cancelable
- * @throws InterruptedException thrown when the operation is canceled
- * @throws InvocationTargetException thrown when the operation failed to execute
- */
- public void perform(boolean fork, boolean cancelable) throws InterruptedException, InvocationTargetException {
- perform(fork, false, cancelable);
- }
-
- /**
- * Must be called in the UI thread.<br>
- * <strong>Use {@link #perform(boolean, boolean)} unless you know exactly what you are doing!</strong>
- *
- * @param fork if set, the operation will be forked
- * @param forkChangeExecution if the change should not be executed in the UI thread: This may not work in any case
- * @param cancelable if set, the operation will be cancelable
- * @throws InterruptedException thrown when the operation is canceled
- * @throws InvocationTargetException thrown when the operation failed to execute
- */
- public void perform(boolean fork, boolean forkChangeExecution, boolean cancelable)
- throws InterruptedException, InvocationTargetException {
- Operation operation = new Operation(fork, forkChangeExecution, cancelable);
- performOperation(operation, null, fork);
- }
-
public void performChange(Change change, boolean fork) throws InterruptedException, InvocationTargetException {
PerformChangeOperation operation = createPerformChangeOperation(change);
- performOperation(null, operation, fork);
+ performOperation(operation, fork);
}
/**
* Executes either a complete refactoring operation or a change operation.
- * @param operation The refactoring operation. Can be <code>null</code>.
- * @param changeOperation The change operation. Has to be <code>null</code> if {@code operation}
- * is not <code>null</code> and not <code>null</code> otherwise.
+ * @param changeOperation The change operation. Has to be not <code>null</code>.
* @param fork If set, the execution will be forked.
*/
- private void performOperation(Operation operation, PerformChangeOperation changeOperation, boolean fork)
+ private void performOperation(PerformChangeOperation changeOperation, boolean fork)
throws InterruptedException, InvocationTargetException {
- Assert.isTrue((operation == null) != (changeOperation == null));
+ Assert.isTrue(changeOperation != null);
Assert.isTrue(Display.getCurrent() != null);
final IJobManager manager = Job.getJobManager();
final ISchedulingRule rule = getSchedulingRule();
@@ -188,31 +93,19 @@ public class RefactoringExecutionHelper {
}
RefactoringSaveHelper saveHelper = new RefactoringSaveHelper(fSaveMode);
- if (operation != null) {
- if (!saveHelper.saveEditors(fParent))
- throw new InterruptedException();
- }
fRefactoring.setValidationContext(fParent);
try {
- if (operation != null) {
- fExecContext.run(fork, operation.fCancelable, new WorkbenchRunnableAdapter(operation, rule, true));
- changeOperation = operation.fPerformChangeOperation;
- fork = fork && !operation.fForkChangeExecution;
- }
-
- if (changeOperation != null) {
- if (fork)
- fExecContext.run(false, false, new WorkbenchRunnableAdapter(changeOperation, rule, true));
- RefactoringStatus validationStatus = changeOperation.getValidationStatus();
- if (validationStatus != null && validationStatus.hasFatalError()) {
- MessageDialog.openError(fParent, fRefactoring.getName(),
- NLS.bind(Messages.RefactoringExecutionHelper_cannot_execute,
- validationStatus.getMessageMatchingSeverity(RefactoringStatus.FATAL)));
- throw new InterruptedException();
- }
+ if (fork)
+ fExecContext.run(false, false, new WorkbenchRunnableAdapter(changeOperation, rule, true));
+ RefactoringStatus validationStatus = changeOperation.getValidationStatus();
+ if (validationStatus != null && validationStatus.hasFatalError()) {
+ MessageDialog.openError(fParent, fRefactoring.getName(),
+ NLS.bind(Messages.RefactoringExecutionHelper_cannot_execute,
+ validationStatus.getMessageMatchingSeverity(RefactoringStatus.FATAL)));
+ throw new InterruptedException();
}
} catch (InvocationTargetException e) {
- if (changeOperation != null && changeOperation.changeExecutionFailed()) {
+ if (changeOperation.changeExecutionFailed()) {
ChangeExceptionHandler handler = new ChangeExceptionHandler(fParent, fRefactoring);
Throwable inner = e.getTargetException();
if (inner instanceof RuntimeException) {
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/changes/AbstractCElementRenameChange.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/changes/AbstractCElementRenameChange.java
index 37a6fd35600..ef1dc48604e 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/changes/AbstractCElementRenameChange.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/changes/AbstractCElementRenameChange.java
@@ -21,7 +21,7 @@ import org.eclipse.core.runtime.Assert;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.SubProgressMonitor;
+import org.eclipse.core.runtime.SubMonitor;
import org.eclipse.ltk.core.refactoring.Change;
import org.eclipse.ltk.core.refactoring.resource.ResourceChange;
@@ -78,19 +78,15 @@ public abstract class AbstractCElementRenameChange extends ResourceChange {
@Override
public final Change perform(IProgressMonitor pm) throws CoreException {
- try {
- pm.beginTask(Messages.AbstractCElementRenameChange_renaming, 1);
- IResource resource = getResource();
- IPath newPath = createNewPath();
- Change result = createUndoChange(resource.getModificationStamp());
- doRename(new SubProgressMonitor(pm, 1));
- if (fStampToRestore != IResource.NULL_STAMP) {
- IResource newResource = ResourcesPlugin.getWorkspace().getRoot().findMember(newPath);
- newResource.revertModificationStamp(fStampToRestore);
- }
- return result;
- } finally {
- pm.done();
+ SubMonitor subMonitor = SubMonitor.convert(pm, Messages.AbstractCElementRenameChange_renaming, 1);
+ IResource resource = getResource();
+ IPath newPath = createNewPath();
+ Change result = createUndoChange(resource.getModificationStamp());
+ doRename(subMonitor.split(1));
+ if (fStampToRestore != IResource.NULL_STAMP) {
+ IResource newResource = ResourcesPlugin.getWorkspace().getRoot().findMember(newPath);
+ newResource.revertModificationStamp(fStampToRestore);
}
+ return result;
}
} \ No newline at end of file
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/changes/CreateFileChange.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/changes/CreateFileChange.java
index dd4bbc3b755..ca4b56c32e3 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/changes/CreateFileChange.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/changes/CreateFileChange.java
@@ -26,7 +26,7 @@ import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.OperationCanceledException;
-import org.eclipse.core.runtime.SubProgressMonitor;
+import org.eclipse.core.runtime.SubMonitor;
import org.eclipse.ltk.core.refactoring.Change;
import org.eclipse.ltk.core.refactoring.RefactoringStatus;
import org.eclipse.ltk.core.refactoring.resource.ResourceChange;
@@ -93,11 +93,12 @@ public class CreateFileChange extends ResourceChange {
@Override
public Change perform(IProgressMonitor pm) throws CoreException {
+ SubMonitor subMonitor = SubMonitor.convert(pm, 2);
IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path);
InputStream is = new ByteArrayInputStream(source.getBytes());
- file.create(is, false, new SubProgressMonitor(pm, 1));
+ file.create(is, false, subMonitor.split(1));
if (encoding != null) {
- file.setCharset(encoding, new SubProgressMonitor(pm, 1));
+ file.setCharset(encoding, subMonitor.split(1));
}
return new DeleteFileChange(file.getFullPath());
}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/dialogs/ValidatingLabeledTextField.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/dialogs/ValidatingLabeledTextField.java
index 321eb5d1658..ab740f9a94c 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/dialogs/ValidatingLabeledTextField.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/dialogs/ValidatingLabeledTextField.java
@@ -67,6 +67,14 @@ public class ValidatingLabeledTextField extends Composite {
}
/**
+ * Is an empty input allowed?
+ * @return True if empty string is allowed, false otherwise
+ */
+ public boolean emptyAllowed() {
+ return true;
+ }
+
+ /**
* @param text the new value of the field
* @return whether the value is valid or not
*/
@@ -138,17 +146,18 @@ public class ValidatingLabeledTextField extends Composite {
public void checkField() {
String newName = textField.getText();
- boolean isEmpty = (newName.length() == 0);
+ boolean isEmpty = newName.length() == 0;
boolean isNameAlreadyInUse = nameAlreadyInUse(textField, newName);
boolean isValid = validator.isValidInput(newName);
boolean isKeyword = NameHelper.isKeyword(newName);
- boolean isValidName = NameHelper.isValidLocalVariableName(newName);
+ boolean isEmptyAllowed = validator.emptyAllowed();
+ boolean isValidName = (isEmpty && isEmptyAllowed) || NameHelper.isValidLocalVariableName(newName);
- boolean isOk = isValid && !isNameAlreadyInUse && !isEmpty && !isKeyword && isValidName;
+ boolean isOk = isValid && !isNameAlreadyInUse && !isKeyword && isValidName;
if (isOk) {
setErrorStatus(EMPTY_STRING);
- } else if (isEmpty) {
+ } else if (isEmpty && !isEmptyAllowed) {
setErrorStatus(validator.errorMessageForEmptyField());
} else if (!isValid || !isValidName) {
setErrorStatus(validator.errorMessageForInvalidInput());
@@ -159,8 +168,8 @@ public class ValidatingLabeledTextField extends Composite {
}
validationStatus.put(textField, isOk);
- if (validationStatus.values().contains(Boolean.FALSE) || isEmpty || isNameAlreadyInUse || isKeyword
- || !isValidName) {
+ if (validationStatus.values().contains(Boolean.FALSE) || (isEmpty && !isEmptyAllowed)
+ || isNameAlreadyInUse || isKeyword || !isValidName) {
validator.hasErrors();
} else {
validator.hasNoErrors();
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/gettersandsetters/AccessorDescriptor.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/gettersandsetters/AccessorDescriptor.java
index 5e95b478fd3..754a3c51a4b 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/gettersandsetters/AccessorDescriptor.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/gettersandsetters/AccessorDescriptor.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2011, 2013 Google, Inc and others.
+ * Copyright (c) 2011, 2020 Google, Inc and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -11,15 +11,16 @@
* Contributors:
* Sergey Prigogin (Google) - initial API and implementation
* Marc-Andre Laperle (Ericsson)
+ * Alexander Fedorov (ArSysOp) - Bug 561993 - Remove dependency to com.ibm.icu from CDT UI
*******************************************************************************/
package org.eclipse.cdt.internal.ui.refactoring.gettersandsetters;
+import java.text.Collator;
+
import org.eclipse.cdt.core.dom.ast.IASTFunctionDefinition;
import org.eclipse.cdt.core.dom.ast.IASTName;
import org.eclipse.cdt.core.dom.ast.IASTSimpleDeclaration;
-import com.ibm.icu.text.Collator;
-
public class AccessorDescriptor implements Comparable<AccessorDescriptor> {
public enum AccessorKind {
GETTER, SETTER;
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/implementmethod/ImplementMethodRefactoring.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/implementmethod/ImplementMethodRefactoring.java
index 5d60ae6252c..e3338e918de 100755..100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/implementmethod/ImplementMethodRefactoring.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/implementmethod/ImplementMethodRefactoring.java
@@ -23,12 +23,15 @@ import java.util.Map;
import org.eclipse.cdt.core.dom.ast.ASTNodeFactoryFactory;
import org.eclipse.cdt.core.dom.ast.ASTVisitor;
+import org.eclipse.cdt.core.dom.ast.DOMException;
+import org.eclipse.cdt.core.dom.ast.EScopeKind;
import org.eclipse.cdt.core.dom.ast.IASTDeclSpecifier;
import org.eclipse.cdt.core.dom.ast.IASTDeclaration;
import org.eclipse.cdt.core.dom.ast.IASTDeclarator;
import org.eclipse.cdt.core.dom.ast.IASTFunctionDeclarator;
import org.eclipse.cdt.core.dom.ast.IASTFunctionDefinition;
import org.eclipse.cdt.core.dom.ast.IASTName;
+import org.eclipse.cdt.core.dom.ast.IASTNamedTypeSpecifier;
import org.eclipse.cdt.core.dom.ast.IASTNode;
import org.eclipse.cdt.core.dom.ast.IASTNode.CopyStyle;
import org.eclipse.cdt.core.dom.ast.IASTPointerOperator;
@@ -37,7 +40,9 @@ import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.dom.ast.IASTTypeId;
import org.eclipse.cdt.core.dom.ast.IBinding;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTDeclSpecifier;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTExpression;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTFunctionDeclarator;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTNamedTypeSpecifier;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTQualifiedName;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateDeclaration;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateParameter;
@@ -227,7 +232,7 @@ public class ImplementMethodRefactoring extends CRefactoring {
throw new OperationCanceledException();
}
IASTSimpleDeclaration decl = config.getDeclaration();
- InsertLocation insertLocation = findInsertLocation(decl, subMonitor);
+ InsertLocation insertLocation = findInsertLocation(decl, subMonitor, functionOffset);
if (subMonitor.isCanceled()) {
throw new OperationCanceledException();
}
@@ -275,11 +280,17 @@ public class ImplementMethodRefactoring extends CRefactoring {
private InsertLocation findInsertLocation(IASTSimpleDeclaration methodDeclaration, IProgressMonitor subMonitor)
throws CoreException {
+ return findInsertLocation(methodDeclaration, subMonitor, -1);
+ }
+
+ private InsertLocation findInsertLocation(IASTSimpleDeclaration methodDeclaration, IProgressMonitor subMonitor,
+ int functionOffset) throws CoreException {
if (insertLocations.containsKey(methodDeclaration)) {
return insertLocations.get(methodDeclaration);
}
InsertLocation insertLocation = methodDefinitionInsertLocationFinder.find(tu,
- methodDeclaration.getFileLocation(), methodDeclaration.getParent(), refactoringContext, subMonitor);
+ methodDeclaration.getFileLocation(), methodDeclaration.getParent(), refactoringContext, subMonitor,
+ functionOffset);
if (insertLocation.getTranslationUnit() == null
|| NodeHelper.isContainedInTemplateDeclaration(methodDeclaration)) {
@@ -306,6 +317,27 @@ public class ImplementMethodRefactoring extends CRefactoring {
.getDeclarators()[0];
IASTNode declarationParent = methodDeclaration.getParent();
+ /**
+ * In C++ it's possible that we used something declared inside a class for example,
+ * so we are going to implement this method just cloning the decl specifier of declaration
+ * we could miss the fully qualified name.
+ */
+ if (declSpecifier instanceof ICPPASTNamedTypeSpecifier) {
+ IBinding binding = ((ICPPASTNamedTypeSpecifier) methodDeclaration.getDeclSpecifier()).getName()
+ .resolveBinding();
+ try {
+ if (binding.getScope().getKind() == EScopeKind.eClassType) {
+ if (!(((ICPPASTNamedTypeSpecifier) declSpecifier).getName() instanceof ICPPASTQualifiedName)) {
+ ICPPASTQualifiedName qName = createQualifiedNameFor((IASTNamedTypeSpecifier) declSpecifier,
+ functionDeclarator, declarationParent, insertLocation, functionOffset);
+ ((IASTNamedTypeSpecifier) declSpecifier).setName(qName);
+ }
+ }
+ } catch (DOMException | CoreException e) {
+ CUIPlugin.log(e);
+ }
+ }
+
if (declSpecifier instanceof ICPPASTDeclSpecifier) {
((ICPPASTDeclSpecifier) declSpecifier).setVirtual(false);
((ICPPASTDeclSpecifier) declSpecifier).setExplicit(false);
@@ -326,6 +358,7 @@ public class ImplementMethodRefactoring extends CRefactoring {
createdMethodDeclarator = nodeFactory.newFunctionDeclarator(qName);
createdMethodDeclarator.setConst(functionDeclarator.isConst());
createdMethodDeclarator.setRefQualifier(functionDeclarator.getRefQualifier());
+ createdMethodDeclarator.setVarArgs(functionDeclarator.takesVarArgs());
for (IASTPointerOperator pop : functionDeclarator.getPointerOperators()) {
createdMethodDeclarator.addPointerOperator(pop.copy(CopyStyle.withLocations));
}
@@ -337,6 +370,13 @@ public class ImplementMethodRefactoring extends CRefactoring {
.addExceptionSpecificationTypeId(typeId == null ? null : typeId.copy(CopyStyle.withLocations));
}
}
+ ICPPASTExpression noexceptExpression = functionDeclarator.getNoexceptExpression();
+ if (noexceptExpression != null) {
+ createdMethodDeclarator.setNoexceptExpression(
+ noexceptExpression == ICPPASTFunctionDeclarator.NOEXCEPT_DEFAULT ? noexceptExpression
+ : (ICPPASTExpression) noexceptExpression.copy(CopyStyle.withLocations));
+ }
+
IASTFunctionDefinition functionDefinition = nodeFactory.newFunctionDefinition(declSpecifier,
createdMethodDeclarator, nodeFactory.newCompoundStatement());
functionDefinition.setParent(unit);
@@ -374,6 +414,26 @@ public class ImplementMethodRefactoring extends CRefactoring {
insertLocation.getTranslationUnit(), insertOffset, refactoringContext);
}
+ /**
+ * Create the fully qualified name for the declaration specifier
+ * @param declSpec The declaration specifier
+ * @param functionDeclarator The function declaration
+ * @param declarationParent Parent of declaration
+ * @param insertLocation Insert position
+ * @param functionOffset A function offset to determine fully qualified names. A negative number
+ * can be used to use the node offset of method as returned by getFileLocation().getNodeOffset()
+ * @return The fully qualified name
+ * @throws CoreException
+ */
+ private ICPPASTQualifiedName createQualifiedNameFor(IASTNamedTypeSpecifier declSpec,
+ IASTFunctionDeclarator functionDeclarator, IASTNode declarationParent, InsertLocation insertLocation,
+ int functionOffset) throws CoreException {
+ int insertOffset = insertLocation.getInsertPosition();
+ return NameHelper.createQualifiedNameFor(declSpec.getName(), tu,
+ functionOffset >= 0 ? functionOffset : functionDeclarator.getFileLocation().getNodeOffset(),
+ insertLocation.getTranslationUnit(), insertOffset, refactoringContext);
+ }
+
public ImplementMethodData getRefactoringData() {
return data;
}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/implementmethod/InsertLocation.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/implementmethod/InsertLocation.java
index 71afa47bccc..74cbfd98745 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/implementmethod/InsertLocation.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/implementmethod/InsertLocation.java
@@ -63,6 +63,8 @@ public class InsertLocation {
} else if (nodeToInsertAfter != null) {
IASTFileLocation fileLocation = nodeToInsertAfter.getFileLocation();
return fileLocation.getNodeOffset() + fileLocation.getNodeLength();
+ } else if (parentNode != null) {
+ return parentNode.getFileLocation().getNodeOffset();
}
return 0;
}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/implementmethod/MethodDefinitionInsertLocationFinder.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/implementmethod/MethodDefinitionInsertLocationFinder.java
index 88ad130e390..9a45998a18b 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/implementmethod/MethodDefinitionInsertLocationFinder.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/implementmethod/MethodDefinitionInsertLocationFinder.java
@@ -22,6 +22,8 @@ import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
+import org.eclipse.cdt.core.dom.ast.ASTVisitor;
+import org.eclipse.cdt.core.dom.ast.DOMException;
import org.eclipse.cdt.core.dom.ast.IASTDeclaration;
import org.eclipse.cdt.core.dom.ast.IASTFileLocation;
import org.eclipse.cdt.core.dom.ast.IASTFunctionDeclarator;
@@ -29,11 +31,18 @@ import org.eclipse.cdt.core.dom.ast.IASTFunctionDefinition;
import org.eclipse.cdt.core.dom.ast.IASTName;
import org.eclipse.cdt.core.dom.ast.IASTNode;
import org.eclipse.cdt.core.dom.ast.IASTSimpleDeclaration;
+import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
+import org.eclipse.cdt.core.dom.ast.IBinding;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTName;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTNamespaceDefinition;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateDeclaration;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPNamespace;
import org.eclipse.cdt.core.model.ITranslationUnit;
+import org.eclipse.cdt.core.parser.util.CharArrayUtils;
import org.eclipse.cdt.internal.ui.editor.SourceHeaderPartnerFinder;
import org.eclipse.cdt.internal.ui.refactoring.CRefactoringContext;
import org.eclipse.cdt.internal.ui.refactoring.utils.DefinitionFinder;
+import org.eclipse.cdt.internal.ui.refactoring.utils.NamespaceHelper;
import org.eclipse.cdt.internal.ui.refactoring.utils.NodeHelper;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
@@ -54,6 +63,12 @@ public class MethodDefinitionInsertLocationFinder {
public InsertLocation find(ITranslationUnit declarationTu, IASTFileLocation methodDeclarationLocation,
IASTNode parent, CRefactoringContext refactoringContext, IProgressMonitor pm) throws CoreException {
+ return find(declarationTu, methodDeclarationLocation, parent, refactoringContext, pm, -1);
+ }
+
+ public InsertLocation find(ITranslationUnit declarationTu, IASTFileLocation methodDeclarationLocation,
+ IASTNode parent, CRefactoringContext refactoringContext, IProgressMonitor pm, int functionOffset)
+ throws CoreException {
IASTDeclaration[] declarations = NodeHelper.getDeclarations(parent);
InsertLocation insertLocation = new InsertLocation();
@@ -111,7 +126,50 @@ public class MethodDefinitionInsertLocationFinder {
ITranslationUnit partner = SourceHeaderPartnerFinder.getPartnerTranslationUnit(declarationTu,
refactoringContext);
if (partner != null) {
- insertLocation.setParentNode(refactoringContext.getAST(partner, null), partner);
+ if (methodDeclarationLocation == null && functionOffset < 0) {
+ insertLocation.setParentNode(refactoringContext.getAST(partner, null), partner);
+ return insertLocation;
+ }
+ final ICPPASTName[] names = NamespaceHelper.getSurroundingNamespace(declarationTu,
+ methodDeclarationLocation != null ? methodDeclarationLocation.getNodeOffset()
+ : functionOffset,
+ refactoringContext);
+ IASTTranslationUnit ast = refactoringContext.getAST(partner, null);
+ IASTNode[] target = new IASTNode[1];
+ if (ast != null) {
+ ast.accept(new ASTVisitor() {
+ {
+ shouldVisitNamespaces = true;
+ }
+
+ @Override
+ public int visit(ICPPASTNamespaceDefinition namespaceDefinition) {
+ IASTName name = namespaceDefinition.getName();
+ IBinding binding = name.resolveBinding();
+ if (!(binding instanceof ICPPNamespace))
+ return PROCESS_CONTINUE;
+ try {
+ char[][] qualNames = ((ICPPNamespace) binding).getQualifiedNameCharArray();
+ if (qualNames.length != names.length - 1)
+ return PROCESS_CONTINUE;
+ for (int i = 0; i < names.length - 1; ++i) {
+ if (!CharArrayUtils.equals(qualNames[i], names[i].getSimpleID()))
+ return PROCESS_CONTINUE;
+ }
+ } catch (DOMException e) {
+ e.printStackTrace();
+ return PROCESS_CONTINUE;
+ }
+ target[0] = namespaceDefinition;
+ return PROCESS_ABORT;
+ }
+ });
+ }
+ if (target[0] != null) {
+ insertLocation.setParentNode(target[0], partner);
+ } else {
+ insertLocation.setParentNode(ast, partner);
+ }
}
} else {
insertLocation.setParentNode(parent.getTranslationUnit(), declarationTu);
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/includes/IncludeCreator.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/includes/IncludeCreator.java
index fa47476381b..d1929ba46df 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/includes/IncludeCreator.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/includes/IncludeCreator.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2020 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -13,11 +13,13 @@
* QNX Software Systems
* Markus Schorn (Wind River Systems)
* Sergey Prigogin (Google)
+ * Alexander Fedorov (ArSysOp) - Bug 561993 - Remove dependency to com.ibm.icu from CDT UI
*******************************************************************************/
package org.eclipse.cdt.internal.ui.refactoring.includes;
import static org.eclipse.cdt.core.index.IndexLocationFactory.getAbsolutePath;
+import java.text.Collator;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@@ -88,8 +90,6 @@ import org.eclipse.jface.text.ITextSelection;
import org.eclipse.text.edits.InsertEdit;
import org.eclipse.text.edits.MultiTextEdit;
-import com.ibm.icu.text.Collator;
-
/**
* Adds an include statement and, optionally, a 'using' declaration for the currently
* selected name.
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/includes/IncludeOrganizer.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/includes/IncludeOrganizer.java
index d7a44678cbc..b0addd6d4b8 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/includes/IncludeOrganizer.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/includes/IncludeOrganizer.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2012, 2016 Google, Inc and others.
+ * Copyright (c) 2012, 2020 Google, Inc and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -11,12 +11,14 @@
* Contributors:
* Sergey Prigogin (Google) - initial API and implementation
* Mathias Kunter
+ * Alexander Fedorov (ArSysOp) - Bug 561993 - Remove dependency to com.ibm.icu from CDT UI
*******************************************************************************/
package org.eclipse.cdt.internal.ui.refactoring.includes;
import static org.eclipse.cdt.core.index.IndexLocationFactory.getAbsolutePath;
import static org.eclipse.cdt.internal.ui.refactoring.includes.IncludeUtil.isContainedInRegion;
+import java.text.Collator;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@@ -80,8 +82,6 @@ import org.eclipse.text.edits.InsertEdit;
import org.eclipse.text.edits.MultiTextEdit;
import org.eclipse.text.edits.ReplaceEdit;
-import com.ibm.icu.text.Collator;
-
/**
* Organizes the include directives and forward declarations of a source or header file.
*/
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/includes/SymbolExportMap.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/includes/SymbolExportMap.java
index fc581dbb5c0..d06d29310b1 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/includes/SymbolExportMap.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/includes/SymbolExportMap.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2013 Google, Inc and others.
+ * Copyright (c) 2013, 2020 Google, Inc and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -10,12 +10,14 @@
*
* Contributors:
* Sergey Prigogin (Google) - initial API and implementation
+ * Alexander Fedorov (ArSysOp) - Bug 561993 - Remove dependency to com.ibm.icu from CDT UI
*******************************************************************************/
package org.eclipse.cdt.internal.ui.refactoring.includes;
import java.io.IOException;
import java.io.StringReader;
import java.io.StringWriter;
+import java.text.Collator;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
@@ -31,8 +33,6 @@ import org.eclipse.ui.IMemento;
import org.eclipse.ui.WorkbenchException;
import org.eclipse.ui.XMLMemento;
-import com.ibm.icu.text.Collator;
-
/**
* A set of header file substitution rules.
*/
@@ -72,7 +72,7 @@ public class SymbolExportMap {
/**
* Indicates that the given symbol is exported by the given header.
-
+ *
* @param symbol The symbol represented by its fully qualified name.
* @param header The header file exporting the symbol.
*/
@@ -89,7 +89,7 @@ public class SymbolExportMap {
/**
* Indicates that the given symbol is exported by the given header.
-
+ *
* @param symbol The symbol represented by its fully qualified name.
* @param header The header file exporting the symbol. The header is represented by an include
* name optionally surrounded by double quotes or angle brackets. Angle brackets indicate
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/rename/CRefactoringMatchStore.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/rename/CRefactoringMatchStore.java
index 1354b6a8f6c..0078b977827 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/rename/CRefactoringMatchStore.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/rename/CRefactoringMatchStore.java
@@ -34,7 +34,7 @@ public class CRefactoringMatchStore {
private Comparator<CRefactoringMatch> fOffsetComparator;
public CRefactoringMatchStore() {
- fOffsetComparator = new Comparator<CRefactoringMatch>() {
+ fOffsetComparator = new Comparator<>() {
@Override
public int compare(CRefactoringMatch o1, CRefactoringMatch o2) {
return o1.getOffset() - o2.getOffset();
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/rename/CRenameProcessorDelegate.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/rename/CRenameProcessorDelegate.java
index 998d1a01f05..0fe6c3273e9 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/rename/CRenameProcessorDelegate.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/rename/CRenameProcessorDelegate.java
@@ -37,7 +37,7 @@ import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.OperationCanceledException;
-import org.eclipse.core.runtime.SubProgressMonitor;
+import org.eclipse.core.runtime.SubMonitor;
import org.eclipse.ltk.core.refactoring.Change;
import org.eclipse.ltk.core.refactoring.CompositeChange;
import org.eclipse.ltk.core.refactoring.RefactoringStatus;
@@ -209,7 +209,8 @@ public abstract class CRenameProcessorDelegate {
public RefactoringStatus checkFinalConditions(IProgressMonitor monitor, CheckConditionsContext context)
throws CoreException, OperationCanceledException {
RefactoringStatus result = new RefactoringStatus();
- monitor.beginTask(RenameMessages.CRenameProcessorDelegate_task_checkFinalCondition, 2);
+ SubMonitor subMonitor = SubMonitor.convert(monitor,
+ RenameMessages.CRenameProcessorDelegate_task_checkFinalCondition, 2);
IFile file = getArgument().getSourceFile();
//assert file != null;
@@ -224,16 +225,13 @@ public abstract class CRenameProcessorDelegate {
}
IStatus stat = txtSearch.searchWord(filesToSearch.toArray(new IFile[filesToSearch.size()]), getSearchScope(),
file, getSelectedWorkingSet(), getManager().getCCppPatterns(), getArgument().getName(),
- new SubProgressMonitor(monitor, 1), fMatches);
- if (monitor.isCanceled()) {
- throw new OperationCanceledException();
- }
+ subMonitor.split(1), fMatches);
result.merge(RefactoringStatus.create(stat));
if (result.hasFatalError()) {
return result;
}
selectMatchesByLocation(fMatches);
- analyzeTextMatches(renameBindings, fMatches, new SubProgressMonitor(monitor, 1), result);
+ analyzeTextMatches(renameBindings, fMatches, subMonitor.split(1), result);
if (result.hasFatalError()) {
return result;
}
@@ -291,7 +289,6 @@ public abstract class CRenameProcessorDelegate {
fRenameModifications.buildDelta(deltaFactory);
fRenameModifications.buildValidateEdits(editChecker);
}
- monitor.done();
return result;
}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/rename/CResourceRenameRefactoringInputPage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/rename/CResourceRenameRefactoringInputPage.java
index b1e5e2a0be5..5d291cd384e 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/rename/CResourceRenameRefactoringInputPage.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/rename/CResourceRenameRefactoringInputPage.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2018 Kichwa Coders and others.
+ * Copyright (c) 2018, 2020 Kichwa Coders Ltd and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -15,29 +15,23 @@ package org.eclipse.cdt.internal.ui.refactoring.rename;
import org.eclipse.cdt.internal.ui.preferences.OrganizeIncludesPreferencePage;
import org.eclipse.cdt.ui.CUIPlugin;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.core.runtime.Assert;
import org.eclipse.jface.dialogs.IDialogSettings;
import org.eclipse.jface.preference.PreferenceDialog;
-import org.eclipse.jface.wizard.IWizardPage;
-import org.eclipse.ltk.core.refactoring.RefactoringStatus;
-import org.eclipse.ltk.internal.core.refactoring.resource.RenameResourceProcessor;
-import org.eclipse.ltk.ui.refactoring.UserInputWizardPage;
+import org.eclipse.ltk.core.refactoring.participants.IRenameResourceProcessor;
+import org.eclipse.ltk.ui.refactoring.resource.RenameResourceWizard;
import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Link;
-import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.dialogs.PreferencesUtil;
-public class CResourceRenameRefactoringInputPage extends UserInputWizardPage {
+public class CResourceRenameRefactoringInputPage
+ extends RenameResourceWizard.RenameResourceRefactoringConfigurationPage {
/**
* Dialog settings key for default setting of update references checkbox.
@@ -47,13 +41,10 @@ public class CResourceRenameRefactoringInputPage extends UserInputWizardPage {
private static final String DIALOG_SETTINGS_KEY = "CResourceRenameRefactoringInputPage"; //$NON-NLS-1$
private IDialogSettings fDialogSettings;
- private Text fNameField;
- private RenameResourceProcessor fRefactoringProcessor;
private Button updateReferences;
- public CResourceRenameRefactoringInputPage(RenameResourceProcessor processor) {
- super("CResourceRenameRefactoringInputPage"); //$NON-NLS-1$
- fRefactoringProcessor = processor;
+ public CResourceRenameRefactoringInputPage(IRenameResourceProcessor renameResourceProcessor) {
+ super(renameResourceProcessor);
IDialogSettings ds = CUIPlugin.getDefault().getDialogSettings();
fDialogSettings = ds.getSection(DIALOG_SETTINGS_KEY);
if (fDialogSettings == null) {
@@ -63,32 +54,11 @@ public class CResourceRenameRefactoringInputPage extends UserInputWizardPage {
@Override
public void createControl(Composite parent) {
- Composite composite = new Composite(parent, SWT.NONE);
- composite.setLayout(new GridLayout(2, false));
- composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
- composite.setFont(parent.getFont());
-
- Label label = new Label(composite, SWT.NONE);
- label.setText(RenameMessages.CResourceRenameRefactoringInputPage_new_name);
- label.setLayoutData(new GridData());
-
- fNameField = new Text(composite, SWT.BORDER);
- String resourceName = fRefactoringProcessor.getNewResourceName();
- fNameField.setText(resourceName);
- fNameField.setLayoutData(new GridData(GridData.FILL, GridData.BEGINNING, true, false));
- fNameField.addModifyListener(new ModifyListener() {
- @Override
- public void modifyText(ModifyEvent e) {
- validatePage();
- }
- });
-
- int lastIndexOfDot = resourceName.lastIndexOf('.');
- if ((fRefactoringProcessor.getResource().getType() == IResource.FILE) && (lastIndexOfDot > 0)) {
- fNameField.setSelection(0, lastIndexOfDot);
- } else {
- fNameField.selectAll();
- }
+ super.createControl(parent);
+ Control control = getControl();
+ Assert.isTrue(control instanceof Composite,
+ "super class has changed from using composite to something else for the main control."); //$NON-NLS-1$
+ Composite composite = (Composite) control;
updateReferences = new Button(composite, SWT.CHECK);
updateReferences.setText(RenameMessages.CResourceRenameRefactoringInputPage_update_references);
@@ -115,48 +85,17 @@ public class CResourceRenameRefactoringInputPage extends UserInputWizardPage {
dialog.open();
}
});
-
- Dialog.applyDialogFont(composite);
-
- setPageComplete(false);
- setControl(composite);
- }
-
- @Override
- public void setVisible(boolean visible) {
- if (visible) {
- fNameField.setFocus();
- }
- super.setVisible(visible);
- }
-
- private void validatePage() {
- String text = fNameField.getText();
- RefactoringStatus status = fRefactoringProcessor.validateNewElementName(text);
- setPageComplete(status);
}
@Override
- protected boolean performFinish() {
- saveRefactoringSettings();
- saveDialogSettings();
- return super.performFinish();
- }
-
- @Override
- public IWizardPage getNextPage() {
- saveRefactoringSettings();
- saveDialogSettings();
- return super.getNextPage();
- }
-
- private void saveDialogSettings() {
+ protected void storeSettings() {
+ super.storeSettings();
fDialogSettings.put(KEY_UPDATE_REFERENCES, updateReferences.getSelection());
}
- private void saveRefactoringSettings() {
- fRefactoringProcessor.setNewResourceName(fNameField.getText());
- fRefactoringProcessor.setUpdateReferences(updateReferences.getSelection());
+ @Override
+ protected void initializeRefactoring() {
+ super.initializeRefactoring();
+ getProcessor().setUpdateReferences(updateReferences.getSelection());
}
-
}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/rename/CResourceRenameRefactoringWizard.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/rename/CResourceRenameRefactoringWizard.java
index 3c20f78eb2c..9fa27e25260 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/rename/CResourceRenameRefactoringWizard.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/rename/CResourceRenameRefactoringWizard.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2018 Kichwa Coders and others.
+ * Copyright (c) 2018, 2020 Kichwa Coders Ltd and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -14,7 +14,6 @@
package org.eclipse.cdt.internal.ui.refactoring.rename;
import org.eclipse.core.resources.IResource;
-import org.eclipse.ltk.internal.core.refactoring.resource.RenameResourceProcessor;
import org.eclipse.ltk.ui.refactoring.resource.RenameResourceWizard;
public class CResourceRenameRefactoringWizard extends RenameResourceWizard {
@@ -25,8 +24,7 @@ public class CResourceRenameRefactoringWizard extends RenameResourceWizard {
@Override
protected void addUserInputPages() {
- RenameResourceProcessor processor = getRefactoring().getAdapter(RenameResourceProcessor.class);
- addPage(new CResourceRenameRefactoringInputPage(processor));
+ addPage(new CResourceRenameRefactoringInputPage(getProcessor()));
}
}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/rename/TextSearchWrapper.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/rename/TextSearchWrapper.java
index 3c397a168e7..f6d90648a9b 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/rename/TextSearchWrapper.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/rename/TextSearchWrapper.java
@@ -45,7 +45,7 @@ import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.SubProgressMonitor;
+import org.eclipse.core.runtime.SubMonitor;
import org.eclipse.search.core.text.TextSearchEngine;
import org.eclipse.search.core.text.TextSearchMatchAccess;
import org.eclipse.search.core.text.TextSearchRequestor;
@@ -262,6 +262,7 @@ public class TextSearchWrapper {
*/
public IStatus searchWord(IFile[] filesToSearch, int scope, IFile scopeAnchor, String workingSet, String[] patterns,
String word, IProgressMonitor monitor, final List<CRefactoringMatch> target) {
+ SubMonitor subMonitor = SubMonitor.convert(monitor, 100);
int startPos = target.size();
TextSearchEngine engine = TextSearchEngine.create();
StringBuilder searchPattern = new StringBuilder(word.length() + 8);
@@ -285,14 +286,15 @@ public class TextSearchWrapper {
return true;
}
};
- IStatus result = engine.search(searchscope, requestor, pattern, new SubProgressMonitor(monitor, 95));
- categorizeMatches(target.subList(startPos, target.size()), new SubProgressMonitor(monitor, 5));
+ IStatus result = engine.search(searchscope, requestor, pattern, subMonitor.split(95));
+ categorizeMatches(target.subList(startPos, target.size()), subMonitor.split(5));
return result;
}
public void categorizeMatches(List<CRefactoringMatch> matches, IProgressMonitor monitor) {
- monitor.beginTask(RenameMessages.TextSearch_monitor_categorizeMatches, matches.size());
+ SubMonitor subMonitor = SubMonitor.convert(monitor, RenameMessages.TextSearch_monitor_categorizeMatches,
+ matches.size());
IFile file = null;
ArrayList<int[]> locations = null;
for (Iterator<CRefactoringMatch> iter = matches.iterator(); iter.hasNext();) {
@@ -304,11 +306,11 @@ public class TextSearchWrapper {
computeLocations(file, locations);
}
match.setLocation(findLocation(match, locations));
- monitor.worked(1);
+ subMonitor.worked(1);
}
}
- final static Comparator<int[]> COMPARE_FIRST_INTEGER = new Comparator<int[]>() {
+ final static Comparator<int[]> COMPARE_FIRST_INTEGER = new Comparator<>() {
@Override
public int compare(int[] o1, int[] o2) {
return (o1)[0] - (o2)[0];
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/togglefunction/ToggleFileCreator.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/togglefunction/ToggleFileCreator.java
index dda5efd1d79..e29600ad4dd 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/togglefunction/ToggleFileCreator.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/togglefunction/ToggleFileCreator.java
@@ -16,7 +16,6 @@
package org.eclipse.cdt.internal.ui.refactoring.togglefunction;
import org.eclipse.cdt.internal.ui.refactoring.changes.CreateFileChange;
-import org.eclipse.cdt.ui.CUIPlugin;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
@@ -56,7 +55,7 @@ public class ToggleFileCreator {
}
final boolean[] answer = new boolean[1];
Runnable r = () -> {
- Shell shell = CUIPlugin.getDefault().getWorkbench().getWorkbenchWindows()[0].getShell();
+ Shell shell = PlatformUI.getWorkbench().getWorkbenchWindows()[0].getShell();
String functionName;
if (context.getDeclaration() != null) {
functionName = context.getDeclaration().getRawSignature();
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/utils/NamespaceHelper.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/utils/NamespaceHelper.java
index a86d81ae772..1d9f660dc9b 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/utils/NamespaceHelper.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/utils/NamespaceHelper.java
@@ -26,8 +26,10 @@ import org.eclipse.cdt.core.dom.ast.IASTNodeLocation;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCompositeTypeSpecifier;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTName;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTNamespaceDefinition;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTParameterDeclaration;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateDeclaration;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateParameter;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplatedTypeTemplateParameter;
import org.eclipse.cdt.core.model.ITranslationUnit;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTNamedTypeSpecifier;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTSimpleTypeTemplateParameter;
@@ -120,6 +122,26 @@ public class NamespaceHelper {
id.setDeclSpecifier(namedTypeSpecifier);
templateId.addTemplateArgument(id);
+ } else if (templateParameter instanceof ICPPASTParameterDeclaration) {
+ ICPPASTParameterDeclaration parDecl = (ICPPASTParameterDeclaration) templateParameter;
+
+ CPPASTTypeId id = new CPPASTTypeId();
+
+ CPPASTNamedTypeSpecifier namedTypeSpecifier = new CPPASTNamedTypeSpecifier();
+ namedTypeSpecifier.setName(parDecl.getDeclarator().getName().copy(CopyStyle.withLocations));
+ id.setDeclSpecifier(namedTypeSpecifier);
+
+ templateId.addTemplateArgument(id);
+ } else if (templateParameter instanceof ICPPASTTemplatedTypeTemplateParameter) {
+ ICPPASTTemplatedTypeTemplateParameter parDecl = (ICPPASTTemplatedTypeTemplateParameter) templateParameter;
+
+ CPPASTTypeId id = new CPPASTTypeId();
+
+ CPPASTNamedTypeSpecifier namedTypeSpecifier = new CPPASTNamedTypeSpecifier();
+ namedTypeSpecifier.setName(parDecl.getName().copy(CopyStyle.withLocations));
+ id.setDeclSpecifier(namedTypeSpecifier);
+
+ templateId.addTemplateArgument(id);
}
}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/utils/NodeHelper.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/utils/NodeHelper.java
index ea6968654b1..ea6968654b1 100755..100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/utils/NodeHelper.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/utils/NodeHelper.java
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/CSearchListContentProvider.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/CSearchListContentProvider.java
index 1e51dfd6ab4..a30a1a96fc2 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/CSearchListContentProvider.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/CSearchListContentProvider.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2006, 2014 QNX Software Systems and others.
+ * Copyright (c) 2006, 2020 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -11,9 +11,11 @@
* Contributors:
* QNX - Initial API and implementation
* Ed Swartz (Nokia)
+ * Alexander Fedorov (ArSysOp) - Bug 561993 - Remove dependency to com.ibm.icu from CDT UI
*******************************************************************************/
package org.eclipse.cdt.internal.ui.search;
+import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
@@ -29,8 +31,6 @@ import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.Viewer;
-import com.ibm.icu.text.MessageFormat;
-
/**
* @author Doug Schaefer
*/
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/CSearchUtil.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/CSearchUtil.java
index 959ccd3ba96..dfca53da4fc 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/CSearchUtil.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/CSearchUtil.java
@@ -14,6 +14,8 @@
*******************************************************************************/
package org.eclipse.cdt.internal.ui.search;
+import java.util.Optional;
+
import org.eclipse.cdt.core.dom.ast.IASTName;
import org.eclipse.cdt.core.dom.ast.IBinding;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPVariable;
@@ -62,9 +64,11 @@ public class CSearchUtil {
public static boolean isWriteOccurrence(IASTName node, IBinding binding) {
boolean isWrite;
if (binding instanceof ICPPVariable) {
- isWrite = ((CPPVariableReadWriteFlags.getReadWriteFlags(node) & PDOMName.WRITE_ACCESS) != 0);
+ Optional<Integer> res = CPPVariableReadWriteFlags.getReadWriteFlags(node);
+ isWrite = !res.isPresent() || ((res.get() & PDOMName.WRITE_ACCESS) != 0);
} else {
- isWrite = ((CVariableReadWriteFlags.getReadWriteFlags(node) & PDOMName.WRITE_ACCESS) != 0);
+ Optional<Integer> res = CVariableReadWriteFlags.getReadWriteFlags(node);
+ isWrite = !res.isPresent() || ((res.get() & PDOMName.WRITE_ACCESS) != 0);
}
return isWrite;
}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/actions/SelectionParseAction.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/actions/SelectionParseAction.java
index 9dd79dd4ecd..4b41f83778f 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/actions/SelectionParseAction.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/actions/SelectionParseAction.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004, 2014 IBM Corporation and others.
+ * Copyright (c) 2004, 2020 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -13,10 +13,13 @@
* Markus Schorn (Wind River Systems)
* Ed Swartz (Nokia)
* Anton Leherbauer (Wind River Systems)
+ * Alexander Fedorov (ArSysOp) - Bug 561993 - Remove dependency to com.ibm.icu from CDT UI
*******************************************************************************/
package org.eclipse.cdt.internal.ui.search.actions;
+import java.text.MessageFormat;
+
import org.eclipse.cdt.core.model.ITranslationUnit;
import org.eclipse.cdt.internal.ui.search.CSearchMessages;
import org.eclipse.cdt.internal.ui.util.EditorUtility;
@@ -31,8 +34,6 @@ import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IWorkbenchSite;
import org.eclipse.ui.texteditor.ITextEditor;
-import com.ibm.icu.text.MessageFormat;
-
/**
* @author aniefer
* Created on Jun 2, 2004
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/CBreakIterator.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/CBreakIterator.java
index 58e3713aa7b..ac78d96004e 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/CBreakIterator.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/CBreakIterator.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2012 IBM Corporation and others.
+ * Copyright (c) 2000, 2020 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -11,15 +11,15 @@
* Contributors:
* IBM Corporation - initial API and implementation
* Sergey Prigogin, Google
+ * Alexander Fedorov (ArSysOp) - Bug 561993 - Remove dependency to com.ibm.icu from CDT UI
*******************************************************************************/
package org.eclipse.cdt.internal.ui.text;
+import java.text.BreakIterator;
import java.text.CharacterIterator;
import org.eclipse.core.runtime.Assert;
-import com.ibm.icu.text.BreakIterator;
-
/**
* A C break iterator. It returns all breaks, including before and after
* whitespace, and it returns all camel case breaks.
@@ -377,7 +377,6 @@ public class CBreakIterator extends BreakIterator {
* Creates a break iterator given a char sequence.
* @param newText the new text
*/
- @Override
public void setText(CharSequence newText) {
fText = newText;
fIterator.setText(new SequenceCharacterIterator(newText));
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/CHeuristicScanner.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/CHeuristicScanner.java
index 02f7af3cad5..75f95b6128f 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/CHeuristicScanner.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/CHeuristicScanner.java
@@ -347,7 +347,7 @@ public final class CHeuristicScanner implements Symbols {
case SEMICOLON:
return TokenSEMICOLON;
case COLON:
- switch (peekNextChar()) {
+ switch (peekPreviousChar()) {
case COLON:
++fPos;
return TokenDOUBLECOLON;
@@ -360,7 +360,7 @@ public final class CHeuristicScanner implements Symbols {
case EQUAL:
return TokenEQUAL;
case LANGLE:
- switch (peekNextChar()) {
+ switch (peekPreviousChar()) {
case LANGLE:
++fPos;
return TokenSHIFTLEFT;
@@ -370,7 +370,7 @@ public final class CHeuristicScanner implements Symbols {
}
return TokenLESSTHAN;
case RANGLE:
- switch (peekNextChar()) {
+ switch (peekPreviousChar()) {
case RANGLE:
++fPos;
return TokenSHIFTRIGHT;
@@ -382,7 +382,7 @@ public final class CHeuristicScanner implements Symbols {
case DOT:
return TokenDOT;
case MINUS:
- switch (peekNextChar()) {
+ switch (peekPreviousChar()) {
case RANGLE:
++fPos;
return TokenARROW;
@@ -520,19 +520,6 @@ public final class CHeuristicScanner implements Symbols {
}
/**
- * @return the next char without shifting the position
- */
- private char peekNextChar() {
- if (fPos + 1 < fDocument.getLength()) {
- try {
- return fDocument.getChar(fPos + 1);
- } catch (BadLocationException exc) {
- }
- }
- return (char) -1;
- }
-
- /**
* @return the previous char without shifting the position
*/
private char peekPreviousChar() {
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/CIndenter.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/CIndenter.java
index 177b1954643..069e46198a9 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/CIndenter.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/CIndenter.java
@@ -2219,8 +2219,9 @@ public final class CIndenter {
if (fToken == Symbols.TokenTILDE) {
return true;
}
- if (skipQualifiers()) {
- return true;
+ // optional class or namespace qualifiers
+ while (skipQualifiers()) {
+ nextToken();
}
// optional brackets for array valued return types
while (skipBrackets()) {
@@ -2229,16 +2230,27 @@ public final class CIndenter {
while (skipPointerOperators()) {
nextToken();
}
+ // skip template type specification of function return type
+ if (fToken == Symbols.TokenGREATERTHAN) {
+ if (!skipScope())
+ return false;
+ nextToken();
+ }
switch (fToken) {
case Symbols.TokenIDENT:
return true;
+ case Symbols.TokenEOF:
+ // EOF can be seen in constructor definition outside the class
+ // at the beginning of the source file
case Symbols.TokenSEMICOLON:
case Symbols.TokenRBRACE:
fPosition = pos;
+ fToken = Symbols.TokenIDENT;
return true;
case Symbols.TokenLBRACE:
if (fScanner.looksLikeCompositeTypeDefinitionBackward(fPosition, CHeuristicScanner.UNBOUND)) {
fPosition = pos;
+ fToken = Symbols.TokenIDENT;
return true;
}
break;
@@ -2258,11 +2270,13 @@ public final class CIndenter {
case Symbols.TokenPROTECTED:
case Symbols.TokenPRIVATE:
fPosition = pos;
+ fToken = Symbols.TokenIDENT;
return true;
case Symbols.TokenRPAREN:
// constructor initializer
if (skipScope()) {
pos = fPosition;
+ int token = fToken;
nextToken();
// optional throw
if (fToken == Symbols.TokenTHROW) {
@@ -2272,6 +2286,7 @@ public final class CIndenter {
}
} else {
fPosition = pos;
+ fToken = token;
}
return looksLikeMethodDecl();
}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/COutlineInformationControl.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/COutlineInformationControl.java
index 464924753d1..23e9404c5a0 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/COutlineInformationControl.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/COutlineInformationControl.java
@@ -23,7 +23,7 @@ import org.eclipse.cdt.internal.ui.editor.LexicalSortingAction;
import org.eclipse.cdt.internal.ui.util.ProblemTreeViewer;
import org.eclipse.cdt.internal.ui.viewsupport.AppearanceAwareLabelProvider;
import org.eclipse.cdt.internal.ui.viewsupport.CElementLabels;
-import org.eclipse.cdt.internal.ui.viewsupport.DecoratingCLabelProvider;
+import org.eclipse.cdt.internal.ui.viewsupport.DecoratingCOutlineLabelProvider;
import org.eclipse.cdt.ui.PreferenceConstants;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.Separator;
@@ -84,7 +84,7 @@ public class COutlineInformationControl extends AbstractInformationControl {
if (PreferenceConstants.getPreferenceStore().getBoolean(PreferenceConstants.OUTLINE_GROUP_MEMBERS))
textFlags = textFlags | CElementLabels.M_SIMPLE_NAME | CElementLabels.F_SIMPLE_NAME;
treeViewer.setLabelProvider(
- new DecoratingCLabelProvider(new AppearanceAwareLabelProvider(textFlags, IMAGE_FLAGS), true));
+ new DecoratingCOutlineLabelProvider(new AppearanceAwareLabelProvider(textFlags, IMAGE_FLAGS)));
treeViewer.setAutoExpandLevel(AbstractTreeViewer.ALL_LEVELS);
return treeViewer;
}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/CWordIterator.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/CWordIterator.java
index 3f654e2edfa..39ba1f57499 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/CWordIterator.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/CWordIterator.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2011 IBM Corporation and others.
+ * Copyright (c) 2000, 2020 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -11,15 +11,15 @@
* Contributors:
* IBM Corporation - initial API and implementation
* Sergey Prigogin (Google)
+ * Alexander Fedorov (ArSysOp) - Bug 561993 - Remove dependency to com.ibm.icu from CDT UI
*******************************************************************************/
package org.eclipse.cdt.internal.ui.text;
+import java.text.BreakIterator;
import java.text.CharacterIterator;
import org.eclipse.core.runtime.Assert;
-import com.ibm.icu.text.BreakIterator;
-
/**
* Breaks C text into word starts, also stops at line start and end. No
* direction dependency.
@@ -183,7 +183,6 @@ public class CWordIterator extends BreakIterator {
* Sets the text as <code>CharSequence</code>.
* @param newText the new text
*/
- @Override
public void setText(CharSequence newText) {
fIterator.setText(newText);
first();
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/FastCPartitionScanner.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/FastCPartitionScanner.java
index c38dd0526d1..21fcd848045 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/FastCPartitionScanner.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/FastCPartitionScanner.java
@@ -62,6 +62,7 @@ public final class FastCPartitionScanner implements IPartitionTokenScanner, ICPa
private static final int BACKSLASH_BACKSLASH = 7; // postfix for STRING, CHARACTER
private static final int RAW_STRING_R = 8; // prefix for RAW_STRING
private static final int IDENT = 9;
+ private static final int NUMBER = 10;
/** The scanner. */
private final BufferedDocumentScanner fScanner = new BufferedDocumentScanner(1000); // faster implementation
@@ -311,6 +312,11 @@ public final class FastCPartitionScanner implements IPartitionTokenScanner, ICPa
}
case '\'':
+ if (fLast == NUMBER) {
+ // C++14 digit separator
+ fTokenOffset++;
+ break;
+ }
fLast = NONE; // ignore fLast
if (fTokenLength > 0) {
return preFix(CCODE, CHARACTER, NONE, 1);
@@ -373,10 +379,14 @@ public final class FastCPartitionScanner implements IPartitionTokenScanner, ICPa
break;
default:
if ('a' <= ch && ch <= 'z' || 'A' <= ch && ch <= 'Z' || ch == '_') {
- fLast = IDENT;
+ if (fLast != NUMBER)
+ fLast = IDENT;
fTokenOffset++;
} else if ('0' <= ch && ch <= '9' && fLast == IDENT) {
fTokenOffset++;
+ } else if (('0' <= ch && ch <= '9') || ch == '.') {
+ fLast = NUMBER;
+ fTokenOffset++;
} else {
consume();
}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/NumberRule.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/NumberRule.java
index 20fc9e96b4f..0799674b4f0 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/NumberRule.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/NumberRule.java
@@ -58,7 +58,14 @@ public class NumberRule implements IRule {
// hexnumber starting with [+-]?0[xX]
do {
ch = scanner.read();
- } while (isHexNumberPart((char) ch));
+ } while (isHexDigitOrSeparator(ch));
+ scanner.unread();
+ return token;
+ } else if (xCh == 'b' || xCh == 'B') {
+ // binary number starting with [+-]?0[bB]
+ do {
+ ch = scanner.read();
+ } while (isBinDigitOrSeparator(ch));
scanner.unread();
return token;
}
@@ -72,12 +79,12 @@ public class NumberRule implements IRule {
// need at least one digit
do {
ch = scanner.read();
- } while (Character.isDigit((char) ch));
+ } while (isDecDigitOrSeparator(ch));
if (ch == '.' && startCh != '.') {
// fraction
do {
ch = scanner.read();
- } while (Character.isDigit((char) ch));
+ } while (isDecDigitOrSeparator(ch));
}
if (ch == 'e' || ch == 'E') {
// exponent
@@ -85,7 +92,7 @@ public class NumberRule implements IRule {
if (ch == '-' || ch == '+' || Character.isDigit((char) ch)) {
do {
ch = scanner.read();
- } while (Character.isDigit((char) ch));
+ } while (isDecDigitOrSeparator(ch));
}
}
scanner.unread();
@@ -108,12 +115,29 @@ public class NumberRule implements IRule {
}
/**
+ * Checks if part of binary number;
+ * @param ch Char to check.
+ * @return <b>true</b>
+ */
+ private boolean isBinDigitOrSeparator(int ch) {
+ return ch == '0' || ch == '1' || ch == '\'';
+ }
+
+ /**
+ * Checks if part of decimal number;
+ * @param ch Char to check.
+ * @return <b>true</b>
+ */
+ private boolean isDecDigitOrSeparator(int ch) {
+ return Character.isDigit((char) ch) || (ch == '\'');
+ }
+
+ /**
* Checks if part of hex number;
* @param ch Char to check.
* @return <b>true</b>
*/
- private boolean isHexNumberPart(int ch) {
- return Character.isDigit((char) ch) || ch == 'a' || ch == 'b' || ch == 'c' || ch == 'd' || ch == 'e'
- || ch == 'f' || ch == 'A' || ch == 'B' || ch == 'C' || ch == 'D' || ch == 'E' || ch == 'F';
+ private boolean isHexDigitOrSeparator(int ch) {
+ return Character.isDigit((char) ch) || (ch >= 'a' && ch <= 'f') || (ch >= 'A' && ch <= 'F') || (ch == '\'');
}
}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/c/hover/AbstractAnnotationHover.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/c/hover/AbstractAnnotationHover.java
index ef48b63f324..378937753fb 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/c/hover/AbstractAnnotationHover.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/c/hover/AbstractAnnotationHover.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2002, 2012 QNX Software Systems and others.
+ * Copyright (c) 2002, 2020 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -12,10 +12,12 @@
* QNX Software Systems - Initial API and implementation
* Sergey Prigogin (Google)
* IBM Corporation
+ * Alexander Fedorov (ArSysOp) - Bug 561993 - Remove dependency to com.ibm.icu from CDT UI
*******************************************************************************/
package org.eclipse.cdt.internal.ui.text.c.hover;
+import java.text.MessageFormat;
import java.util.Iterator;
import org.eclipse.cdt.internal.ui.CPluginImages;
@@ -85,8 +87,6 @@ import org.eclipse.ui.editors.text.EditorsUI;
import org.eclipse.ui.texteditor.AnnotationPreference;
import org.eclipse.ui.texteditor.DefaultMarkerAnnotationAccess;
-import com.ibm.icu.text.MessageFormat;
-
/**
* AbstractAnnotationHover
* Abstract super class for annotation hovers.
@@ -320,7 +320,14 @@ public class AbstractAnnotationHover extends AbstractCEditorTextHover {
StyledText text = new StyledText(composite, SWT.MULTI | SWT.WRAP | SWT.READ_ONLY);
GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);
text.setLayoutData(data);
- text.setText(annotation.getText());
+ String annotationText = annotation.getText();
+ if (annotationText == null) {
+ // This shouldn't happen, but it really does sometimes. See Bug 447622
+ // Therefore we have to provide a sensible fallback
+ text.setText(CHoverMessages.AbstractAnnotationHover_annotation_text_null_message);
+ } else {
+ text.setText(annotationText);
+ }
}
private void createCompletionProposalsControl(Composite parent, ICompletionProposal[] proposals) {
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/c/hover/AnnotationExpansionControl.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/c/hover/AnnotationExpansionControl.java
index fd075145ab5..5709c9d9a7d 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/c/hover/AnnotationExpansionControl.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/c/hover/AnnotationExpansionControl.java
@@ -110,6 +110,12 @@ public class AnnotationExpansionControl implements IInformationControl, IInforma
StyleRange[] oldStyles;
public void selected() {
+ if (fSelection != null) {
+ // We can get two selection events back to back because of
+ // code in org.eclipse.cdt.internal.ui.text.c.hover.AnnotationExpansionControl.setVisible(boolean)
+ // which forces a select on first open
+ deselect();
+ }
Display disp = fShell.getDisplay();
canvas.setCursor(getHandCursor(disp));
// TODO: shade - for now: set grey background
@@ -894,7 +900,7 @@ public class AnnotationExpansionControl implements IInformationControl, IInforma
}
private Color getHighlightColor(Display disp) {
- return disp.getSystemColor(SWT.COLOR_GRAY);
+ return disp.getSystemColor(SWT.COLOR_TEXT_DISABLED_BACKGROUND);
}
private Color getSelectionColor(Display disp) {
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/c/hover/CEditorTextHoverDescriptor.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/c/hover/CEditorTextHoverDescriptor.java
index 9ac0a9f8b26..cd3cf289003 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/c/hover/CEditorTextHoverDescriptor.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/c/hover/CEditorTextHoverDescriptor.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2002, 2012 QNX Software Systems and others.
+ * Copyright (c) 2002, 2020 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -10,10 +10,12 @@
*
* Contributors:
* QNX Software Systems - Initial API and implementation
+ * Alexander Fedorov (ArSysOp) - Bug 561993 - Remove dependency to com.ibm.icu from CDT UI
*******************************************************************************/
package org.eclipse.cdt.internal.ui.text.c.hover;
+import java.text.Collator;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
@@ -34,8 +36,6 @@ import org.eclipse.core.runtime.Status;
import org.eclipse.swt.SWT;
import org.osgi.framework.Bundle;
-import com.ibm.icu.text.Collator;
-
/**
* CEditorTexHoverDescriptor
*/
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/c/hover/CHoverMessages.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/c/hover/CHoverMessages.java
index 989ea651ee6..c0a0b147e5b 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/c/hover/CHoverMessages.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/c/hover/CHoverMessages.java
@@ -20,6 +20,7 @@ import org.eclipse.osgi.util.NLS;
public final class CHoverMessages extends NLS {
public static String AbstractAnnotationHover_action_configureAnnotationPreferences;
+ public static String AbstractAnnotationHover_annotation_text_null_message;
public static String AbstractAnnotationHover_message_singleQuickFix;
public static String AbstractAnnotationHover_message_multipleQuickFix;
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/c/hover/CHoverMessages.properties b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/c/hover/CHoverMessages.properties
index 84d904d327b..96c3ef60f9b 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/c/hover/CHoverMessages.properties
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/c/hover/CHoverMessages.properties
@@ -14,6 +14,7 @@
# Sergey Prigogin (Google)
###############################################################################
AbstractAnnotationHover_action_configureAnnotationPreferences= Configure Annotation Preferences
+AbstractAnnotationHover_annotation_text_null_message=Additional information is not available for this annotation.
AbstractAnnotationHover_message_singleQuickFix= 1 quick fix available:
AbstractAnnotationHover_message_multipleQuickFix= {0} quick fixes available:
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/CContentAssistInvocationContext.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/CContentAssistInvocationContext.java
index 50f0609adcc..2d6555195ef 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/CContentAssistInvocationContext.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/CContentAssistInvocationContext.java
@@ -74,7 +74,7 @@ public class CContentAssistInvocationContext extends ContentAssistInvocationCont
// may need a corresponding adjustment, and this stores the adjusted offset.
private int fAdjustedParseOffset = -1;
- private Lazy<Integer> fContextInfoPosition = new Lazy<Integer>() {
+ private Lazy<Integer> fContextInfoPosition = new Lazy<>() {
@Override
protected Integer calculateValue() {
return guessContextInformationPosition();
@@ -83,7 +83,7 @@ public class CContentAssistInvocationContext extends ContentAssistInvocationCont
private final Lazy<ITranslationUnit> fTU;
- private final Lazy<Integer> fParseOffset = new Lazy<Integer>() {
+ private final Lazy<Integer> fParseOffset = new Lazy<>() {
@Override
protected Integer calculateValue() {
int result = doCalculate();
@@ -196,7 +196,7 @@ public class CContentAssistInvocationContext extends ContentAssistInvocationCont
return null;
}
- private final Lazy<IASTCompletionNode> fCN = new Lazy<IASTCompletionNode>() {
+ private final Lazy<IASTCompletionNode> fCN = new Lazy<>() {
@Override
protected IASTCompletionNode calculateValue() {
int offset = getParseOffset();
@@ -253,7 +253,7 @@ public class CContentAssistInvocationContext extends ContentAssistInvocationCont
}
};
- private final Lazy<Boolean> afterOpeningAngleBracket = new Lazy<Boolean>() {
+ private final Lazy<Boolean> afterOpeningAngleBracket = new Lazy<>() {
@Override
protected Boolean calculateValue() {
final int parseOffset = getParseOffset();
@@ -264,7 +264,7 @@ public class CContentAssistInvocationContext extends ContentAssistInvocationCont
}
};
- private final Lazy<Boolean> afterOpeningParenthesisOrBrace = new Lazy<Boolean>() {
+ private final Lazy<Boolean> afterOpeningParenthesisOrBrace = new Lazy<>() {
@Override
protected Boolean calculateValue() {
final int invocationOffset = getInvocationOffset();
@@ -295,7 +295,7 @@ public class CContentAssistInvocationContext extends ContentAssistInvocationCont
}
};
- private final Lazy<Boolean> inUsingDeclaration = new Lazy<Boolean>() {
+ private final Lazy<Boolean> inUsingDeclaration = new Lazy<>() {
/**
* Checks whether the invocation offset is inside a using-declaration.
*
@@ -331,7 +331,7 @@ public class CContentAssistInvocationContext extends ContentAssistInvocationCont
}
};
- private final Lazy<Boolean> followedBySemicolon = new Lazy<Boolean>() {
+ private final Lazy<Boolean> followedBySemicolon = new Lazy<>() {
@Override
protected Boolean calculateValue() {
final IDocument doc = getDocument();
@@ -342,7 +342,7 @@ public class CContentAssistInvocationContext extends ContentAssistInvocationCont
}
};
- private final Lazy<Boolean> followedByOpeningParen = new Lazy<Boolean>() {
+ private final Lazy<Boolean> followedByOpeningParen = new Lazy<>() {
@Override
protected Boolean calculateValue() {
final IDocument doc = getDocument();
@@ -353,7 +353,7 @@ public class CContentAssistInvocationContext extends ContentAssistInvocationCont
}
};
- private final Lazy<String> functionParameterDelimiter = new Lazy<String>() {
+ private final Lazy<String> functionParameterDelimiter = new Lazy<>() {
@Override
protected String calculateValue() {
String propertyKey = DefaultCodeFormatterConstants.FORMATTER_INSERT_SPACE_AFTER_COMMA_IN_METHOD_DECLARATION_PARAMETERS;
@@ -362,7 +362,7 @@ public class CContentAssistInvocationContext extends ContentAssistInvocationCont
}
};
- private final Lazy<String> templateParameterDelimiter = new Lazy<String>() {
+ private final Lazy<String> templateParameterDelimiter = new Lazy<>() {
@Override
protected String calculateValue() {
String propertyKey = DefaultCodeFormatterConstants.FORMATTER_INSERT_SPACE_AFTER_COMMA_IN_TEMPLATE_PARAMETERS;
@@ -387,7 +387,7 @@ public class CContentAssistInvocationContext extends ContentAssistInvocationCont
fIsCompletion = isCompletion;
fIsContextInformationStyle = !isCompletion;
fIsAutoActivated = isAutoActivated;
- fTU = new Lazy<ITranslationUnit>() {
+ fTU = new Lazy<>() {
@Override
protected ITranslationUnit calculateValue() {
return CUIPlugin.getDefault().getWorkingCopyManager().getWorkingCopy(fEditor.getEditorInput());
@@ -402,7 +402,7 @@ public class CContentAssistInvocationContext extends ContentAssistInvocationCont
*/
public CContentAssistInvocationContext(final ITranslationUnit unit, boolean isCompletion) {
super();
- fTU = new Lazy<ITranslationUnit>() {
+ fTU = new Lazy<>() {
@Override
protected ITranslationUnit calculateValue() {
return unit;
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/CompletionProposalComputerPreferenceParser.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/CompletionProposalComputerPreferenceParser.java
new file mode 100644
index 00000000000..428baf98a6c
--- /dev/null
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/CompletionProposalComputerPreferenceParser.java
@@ -0,0 +1,78 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Kichwa Coders Canada Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.eclipse.cdt.internal.ui.text.contentassist;
+
+import java.text.ParseException;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.cdt.ui.PreferenceConstants;
+
+/**
+ * Parses the Completion Proposal Computer Preferences.
+ * <p>
+ * See org.eclipse.cdt.internal.ui.preferences.CodeAssistAdvancedConfigurationBlock.PreferenceModel
+ * for the write side of the preferences.
+ */
+public class CompletionProposalComputerPreferenceParser {
+ /**
+ * Parses the {@link PreferenceConstants#CODEASSIST_EXCLUDED_CATEGORIES} value and
+ * converts to a set of categories that are excluded.
+ * @param preferenceValue as stored in {@link PreferenceConstants#CODEASSIST_EXCLUDED_CATEGORIES}
+ * @return set of excluded categories
+ * @throws ParseException if the value cannot be parsed
+ */
+ public static Set<String> parseExcludedCategories(String preferenceValue) throws ParseException {
+ Set<String> disabled = new HashSet<>();
+ String[] disabledArray = splitOnNulls(preferenceValue);
+ disabled.addAll(Arrays.asList(disabledArray));
+ return disabled;
+ }
+
+ /**
+ * Parses the {@link PreferenceConstants#CODEASSIST_CATEGORY_ORDER} value and
+ * converts to a map of category ids to sort rank number
+ * @param preferenceValue as stored in {@link PreferenceConstants#CODEASSIST_CATEGORY_ORDER}
+ * @return map of category id to rank order
+ * @throws ParseException if the value cannot be parsed
+ */
+ public static Map<String, Integer> parseCategoryOrder(String preferenceValue) throws ParseException {
+ Map<String, Integer> ordered = new HashMap<>();
+ String[] orderedArray = splitOnNulls(preferenceValue);
+ for (String entry : orderedArray) {
+ String[] idRank = entry.split(":"); //$NON-NLS-1$
+ if (idRank.length != 2) {
+ throw new ParseException(entry, 0);
+ }
+ String id = idRank[0];
+ int rank;
+ try {
+ rank = Integer.parseInt(idRank[1]);
+ } catch (NumberFormatException e) {
+ throw new ParseException(entry, 0);
+ }
+ ordered.put(id, Integer.valueOf(rank));
+ }
+ return ordered;
+ }
+
+ /**
+ * See Bug 558809. Oomph seems to have failed at times to encode/decode nul character '\0'
+ * from the format it is stored in Oomph setup files. We can have ${0x0} instead of \0, infact
+ * there can be multiple $, so $$$$${0x0} is a valid split too.
+ */
+ private static String[] splitOnNulls(String preference) {
+ return preference.split("\\000|(\\$+\\{0x0\\})"); //$NON-NLS-1$
+ }
+}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/CompletionProposalComputerRegistry.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/CompletionProposalComputerRegistry.java
index 12c66d662e1..33843a56842 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/CompletionProposalComputerRegistry.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/CompletionProposalComputerRegistry.java
@@ -14,6 +14,7 @@
*******************************************************************************/
package org.eclipse.cdt.internal.ui.text.contentassist;
+import java.text.ParseException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
@@ -24,7 +25,6 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
-import java.util.StringTokenizer;
import org.eclipse.cdt.internal.ui.util.Messages;
import org.eclipse.cdt.ui.CUIPlugin;
@@ -272,19 +272,19 @@ public final class CompletionProposalComputerRegistry {
private List<CompletionProposalCategory> getCategories(List<IConfigurationElement> elements) {
IPreferenceStore store = CUIPlugin.getDefault().getPreferenceStore();
- String preference = store.getString(PreferenceConstants.CODEASSIST_EXCLUDED_CATEGORIES);
- Set<String> disabled = new HashSet<>();
- StringTokenizer tok = new StringTokenizer(preference, "\0"); //$NON-NLS-1$
- while (tok.hasMoreTokens())
- disabled.add(tok.nextToken());
- Map<String, Integer> ordered = new HashMap<>();
- preference = store.getString(PreferenceConstants.CODEASSIST_CATEGORY_ORDER);
- tok = new StringTokenizer(preference, "\0"); //$NON-NLS-1$
- while (tok.hasMoreTokens()) {
- StringTokenizer inner = new StringTokenizer(tok.nextToken(), ":"); //$NON-NLS-1$
- String id = inner.nextToken();
- int rank = Integer.parseInt(inner.nextToken());
- ordered.put(id, Integer.valueOf(rank));
+ Set<String> disabled = Collections.emptySet();
+ Map<String, Integer> ordered = Collections.emptyMap();
+ boolean parseFailed = false;
+ try {
+ disabled = CompletionProposalComputerPreferenceParser
+ .parseExcludedCategories(store.getString(PreferenceConstants.CODEASSIST_EXCLUDED_CATEGORIES));
+ ordered = CompletionProposalComputerPreferenceParser
+ .parseCategoryOrder(store.getString(PreferenceConstants.CODEASSIST_CATEGORY_ORDER));
+ } catch (ParseException e) {
+ // Failed to parse user setting, clear all settings
+ // and display error message to user allowing them to
+ // reset on first use
+ parseFailed = true;
}
List<CompletionProposalCategory> categories = new ArrayList<>();
@@ -296,13 +296,20 @@ public final class CompletionProposalComputerRegistry {
CompletionProposalCategory category = new CompletionProposalCategory(element, this);
categories.add(category);
- category.setIncluded(!disabled.contains(category.getId()));
- Integer rank = ordered.get(category.getId());
- if (rank != null) {
- int r = rank.intValue();
- boolean separate = r < 0xffff;
- category.setSeparateCommand(separate);
- category.setSortOrder(r);
+ if (parseFailed) {
+ // When parse has failed we do the same thing as if the user had disabled
+ // off ever proposal category. This causes a pop-up on first completion
+ // attempt with the option of resetting defaults
+ category.setIncluded(false);
+ } else {
+ category.setIncluded(!disabled.contains(category.getId()));
+ Integer rank = ordered.get(category.getId());
+ if (rank != null) {
+ int r = rank.intValue();
+ boolean separate = r < 0xffff;
+ category.setSeparateCommand(separate);
+ category.setSortOrder(r);
+ }
}
}
} catch (CoreException x) {
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/ContentAssistProcessor.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/ContentAssistProcessor.java
index f21a081ec23..b3117214923 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/ContentAssistProcessor.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/ContentAssistProcessor.java
@@ -92,7 +92,7 @@ public class ContentAssistProcessor implements IContentAssistProcessor {
*/
private static final String PREF_WARN_ABOUT_EMPTY_ASSIST_CATEGORY = "EmptyDefaultAssistCategory"; //$NON-NLS-1$
- private static final Comparator<CompletionProposalCategory> ORDER_COMPARATOR = new Comparator<CompletionProposalCategory>() {
+ private static final Comparator<CompletionProposalCategory> ORDER_COMPARATOR = new Comparator<>() {
@Override
public int compare(CompletionProposalCategory d1, CompletionProposalCategory d2) {
return d1.getSortOrder() - d2.getSortOrder();
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/CSelectAnnotationRulerAction.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/CSelectAnnotationRulerAction.java
index 3ae0660a9f4..e1df83dc445 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/CSelectAnnotationRulerAction.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/CSelectAnnotationRulerAction.java
@@ -51,7 +51,7 @@ public class CSelectAnnotationRulerAction extends SelectMarkerRulerAction {
private ResourceBundle fBundle;
// Annotations at the ruler's current line of activity, keyed by their presentation layer,
// in decreasing order (i.e. top to bottom).
- private static Comparator<Integer> decreasingOrder = new Comparator<Integer>() {
+ private static Comparator<Integer> decreasingOrder = new Comparator<>() {
@Override
public int compare(Integer a, Integer b) {
return b - a;
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/proposals/ChangeCorrectionProposal.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/proposals/ChangeCorrectionProposal.java
index 1a1ec441064..1b53a7aeecb 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/proposals/ChangeCorrectionProposal.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/proposals/ChangeCorrectionProposal.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2020 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -11,10 +11,13 @@
* Contributors:
* IBM Corporation - initial API and implementation
* Sergey Prigogin (Google)
+ * Alexander Fedorov (ArSysOp) - Bug 561993 - Remove dependency to com.ibm.icu from CDT UI
*******************************************************************************/
package org.eclipse.cdt.internal.ui.text.correction.proposals;
+import java.text.MessageFormat;
+
import org.eclipse.cdt.internal.ui.text.correction.CorrectionCommandHandler;
import org.eclipse.cdt.internal.ui.text.correction.CorrectionMessages;
import org.eclipse.cdt.internal.ui.text.correction.ICommandAccess;
@@ -41,8 +44,6 @@ import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Point;
import org.eclipse.ui.IEditorPart;
-import com.ibm.icu.text.MessageFormat;
-
/**
* Implementation of a C completion proposal to be used for quick fix and quick assist
* proposals that invoke a {@link Change}. The proposal offers a proposal information but no context
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/doctools/DocCommentOwnerManager.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/doctools/DocCommentOwnerManager.java
index 4919f6ca576..5b5ca36d23f 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/doctools/DocCommentOwnerManager.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/doctools/DocCommentOwnerManager.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2011 Symbian Software Systems and others.
+ * Copyright (c) 2008, 2020 Symbian Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -12,9 +12,11 @@
* Andrew Ferguson (Symbian) - Initial implementation
* IBM Corporation
* Johan Ekberg - Bug 285932
+ * Alexander Fedorov (ArSysOp) - Bug 561993 - Remove dependency to com.ibm.icu from CDT UI
*******************************************************************************/
package org.eclipse.cdt.internal.ui.text.doctools;
+import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -42,8 +44,6 @@ import org.eclipse.core.runtime.preferences.DefaultScope;
import org.eclipse.core.runtime.preferences.InstanceScope;
import org.osgi.service.prefs.Preferences;
-import com.ibm.icu.text.MessageFormat;
-
/**
* This class manages which IDocCommentOwner's are available in the run-time, and how they map to
* resources in projects.
@@ -60,6 +60,11 @@ public class DocCommentOwnerManager {
private static final String QUALIFIER = CCorePlugin.PLUGIN_ID;
private static final String WORKSPACE_DOC_TOOL_NODE = "doctool"; //$NON-NLS-1$
private static final String PREFKEY_WORKSPACE_DEFAULT = "workspace.default"; //$NON-NLS-1$
+ /**
+ * Default id for built-in CDT doxygen ui comment owner.
+ * @since 6.7
+ */
+ public static final String DOXYGEN_CDT_DOC_ONWER_ID = "org.eclipse.cdt.ui.doxygen"; //$NON-NLS-1$
private static DocCommentOwnerManager singleton;
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/doctools/ProjectMap.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/doctools/ProjectMap.java
index 3cb15089465..7d5181fb1b5 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/doctools/ProjectMap.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/doctools/ProjectMap.java
@@ -142,6 +142,9 @@ class ProjectMap {
*/
public void save() throws CoreException {
ICProjectDescription pd = CCorePlugin.getDefault().getProjectDescription(fProject, true);
+ if (pd == null) {
+ return;
+ }
// remove current associations
ICStorageElement data = pd.getStorage(ATTRVAL_STORAGEID, true);
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/folding/DefaultCFoldingStructureProvider.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/folding/DefaultCFoldingStructureProvider.java
index 8e826eb549a..c1d416f8706 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/folding/DefaultCFoldingStructureProvider.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/folding/DefaultCFoldingStructureProvider.java
@@ -1312,7 +1312,7 @@ public class DefaultCFoldingStructureProvider implements ICFoldingStructureProvi
}
}
- Comparator<Tuple> comparator = new Comparator<Tuple>() {
+ Comparator<Tuple> comparator = new Comparator<>() {
@Override
public int compare(Tuple t1, Tuple t2) {
return t1.position.getOffset() - t2.position.getOffset();
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/spelling/SpellCheckIterator.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/spelling/SpellCheckIterator.java
index 52ed410dbc9..4662cae766c 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/spelling/SpellCheckIterator.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/spelling/SpellCheckIterator.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2020 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -11,9 +11,11 @@
* Contributors:
* IBM Corporation - initial API and implementation
* Sergey Prigogin (Google)
+ * Alexander Fedorov (ArSysOp) - Bug 561993 - Remove dependency to com.ibm.icu from CDT UI
*******************************************************************************/
package org.eclipse.cdt.internal.ui.text.spelling;
+import java.text.BreakIterator;
import java.util.LinkedList;
import java.util.Locale;
@@ -23,8 +25,6 @@ import org.eclipse.cdt.internal.ui.text.spelling.engine.ISpellCheckIterator;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.IRegion;
-import com.ibm.icu.text.BreakIterator;
-
/**
* Iterator to spell check multiline comment regions.
*/
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/template/TemplateVariableProcessor.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/template/TemplateVariableProcessor.java
index bbf956e0aaf..ac21585835c 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/template/TemplateVariableProcessor.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/template/TemplateVariableProcessor.java
@@ -30,7 +30,7 @@ import org.eclipse.jface.text.templates.TemplateVariableResolver;
public class TemplateVariableProcessor implements IContentAssistProcessor {
- private static Comparator<TemplateVariableProposal> fgTemplateVariableProposalComparator = new Comparator<TemplateVariableProposal>() {
+ private static Comparator<TemplateVariableProposal> fgTemplateVariableProposalComparator = new Comparator<>() {
@Override
public int compare(TemplateVariableProposal arg0, TemplateVariableProposal arg1) {
return arg0.getDisplayString().compareTo(arg1.getDisplayString());
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/typehierarchy/THHistoryListAction.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/typehierarchy/THHistoryListAction.java
index 4a45321a7a4..c519861c770 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/typehierarchy/THHistoryListAction.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/typehierarchy/THHistoryListAction.java
@@ -51,7 +51,7 @@ public class THHistoryListAction extends Action {
setTitle(Messages.THHistoryListAction_HistoryList_title);
String[] buttonLabels = new String[] { Messages.THHistoryListAction_Remove, };
- IListAdapter<ICElement> adapter = new IListAdapter<ICElement>() {
+ IListAdapter<ICElement> adapter = new IListAdapter<>() {
@Override
public void customButtonPressed(ListDialogField<ICElement> field, int index) {
doCustomButtonPressed();
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/typehierarchy/THInformationControl.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/typehierarchy/THInformationControl.java
index e1da1459b29..8223971f1b1 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/typehierarchy/THInformationControl.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/typehierarchy/THInformationControl.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2014 Wind River Systems, Inc. and others.
+ * Copyright (c) 2007, 2020 Wind River Systems, Inc. and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -11,9 +11,11 @@
* Contributors:
* Markus Schorn - initial API and implementation
* Patrick Hofer [bug 325488]
+ * Alexander Fedorov (ArSysOp) - Bug 561993 - Remove dependency to com.ibm.icu from CDT UI
*******************************************************************************/
package org.eclipse.cdt.internal.ui.typehierarchy;
+import java.text.MessageFormat;
import java.util.Iterator;
import org.eclipse.cdt.core.model.CModelException;
@@ -44,8 +46,6 @@ import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.TreeItem;
import org.eclipse.ui.progress.IWorkbenchSiteProgressService;
-import com.ibm.icu.text.MessageFormat;
-
public class THInformationControl extends AbstractInformationControl implements ITHModelPresenter {
private THHierarchyModel fModel;
private THLabelProvider fHierarchyLabelProvider;
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/typehierarchy/THViewPart.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/typehierarchy/THViewPart.java
index d7638ea3fa9..1afa58ae72c 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/typehierarchy/THViewPart.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/typehierarchy/THViewPart.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2015 Wind River Systems, Inc. and others.
+ * Copyright (c) 2007, 2020 Wind River Systems, Inc. and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -11,9 +11,11 @@
* Contributors:
* Markus Schorn - initial API and implementation
* IBM Corporation
+ * Alexander Fedorov (ArSysOp) - Bug 561993 - Remove dependency to com.ibm.icu from CDT UI
*******************************************************************************/
package org.eclipse.cdt.internal.ui.typehierarchy;
+import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
@@ -104,8 +106,6 @@ import org.eclipse.ui.part.PageBook;
import org.eclipse.ui.part.ViewPart;
import org.eclipse.ui.progress.IWorkbenchSiteProgressService;
-import com.ibm.icu.text.MessageFormat;
-
/**
* The view part for the include browser.
*/
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/util/EditorUtility.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/util/EditorUtility.java
index e6afd167317..4e95ef17895 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/util/EditorUtility.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/util/EditorUtility.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2015 QNX Software Systems and others.
+ * Copyright (c) 2000, 2020 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -14,6 +14,7 @@
* Norbert Ploett (Siemens AG)
* Anton Leherbauer (Wind River Systems)
* Ed Swartz (Nokia)
+ * Alexander Fedorov (ArSysOp) - Bug 561993 - Remove dependency to com.ibm.icu from CDT UI
*******************************************************************************/
package org.eclipse.cdt.internal.ui.util;
@@ -21,6 +22,7 @@ import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.net.URI;
+import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
@@ -39,6 +41,9 @@ import org.eclipse.cdt.core.model.ISourceReference;
import org.eclipse.cdt.core.model.ITranslationUnit;
import org.eclipse.cdt.core.model.IWorkingCopy;
import org.eclipse.cdt.core.resources.FileStorage;
+import org.eclipse.cdt.internal.core.model.ExternalTranslationUnit;
+import org.eclipse.cdt.internal.core.model.Include;
+import org.eclipse.cdt.internal.core.model.WorkingCopy;
import org.eclipse.cdt.internal.core.resources.ResourceLookup;
import org.eclipse.cdt.internal.ui.ICStatusConstants;
import org.eclipse.cdt.internal.ui.editor.CEditor;
@@ -103,8 +108,6 @@ import org.eclipse.ui.part.MultiEditorInput;
import org.eclipse.ui.texteditor.IDocumentProvider;
import org.eclipse.ui.texteditor.ITextEditor;
-import com.ibm.icu.text.MessageFormat;
-
public class EditorUtility {
/**
* The ID of the default text editor
@@ -454,6 +457,19 @@ public class EditorUtility {
ICProject cproject = context.getCProject();
if (cproject != null) {
ITranslationUnit unit = CoreModel.getDefault().createTranslationUnitFrom(cproject, location);
+ if (unit == null && (context instanceof Include) && location.toFile().exists()) {
+ ICElement parent = context.getParent();
+ if (parent instanceof WorkingCopy) {
+ WorkingCopy copy = (WorkingCopy) parent;
+ if (copy.isCLanguage()) {
+ unit = new ExternalTranslationUnit(cproject, URIUtil.toURI(location),
+ CCorePlugin.CONTENT_TYPE_CHEADER);
+ } else if (copy.isCXXLanguage()) {
+ unit = new ExternalTranslationUnit(cproject, URIUtil.toURI(location),
+ CCorePlugin.CONTENT_TYPE_CXXHEADER);
+ }
+ }
+ }
if (unit != null) {
return new ExternalEditorInput(unit);
}
@@ -618,6 +634,9 @@ public class EditorUtility {
} else if (input instanceof ITranslationUnitEditorInput) {
ITranslationUnitEditorInput editorInput = (ITranslationUnitEditorInput) input;
cElement = editorInput.getTranslationUnit();
+ if (cElement == null && input instanceof ExternalEditorInput && inputObject instanceof ICElement) {
+ cElement = ((ICElement) inputObject).getAncestor(ICElement.C_UNIT);
+ }
} else if (inputObject instanceof ICElement) {
cElement = (ICElement) inputObject;
}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/util/Messages.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/util/Messages.java
index 61434e98d05..d075aa15df2 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/util/Messages.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/util/Messages.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2006, 2014 Wind River Systems, Inc. and others.
+ * Copyright (c) 2006, 2020 Wind River Systems, Inc. and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -11,12 +11,13 @@
* Contributors:
* Markus Schorn - initial API and implementation
* Sergey Prigogin (Google)
+ * Alexander Fedorov (ArSysOp) - Bug 561993 - Remove dependency to com.ibm.icu from CDT UI
*******************************************************************************/
package org.eclipse.cdt.internal.ui.util;
-import org.eclipse.osgi.util.NLS;
+import java.text.MessageFormat;
-import com.ibm.icu.text.MessageFormat;
+import org.eclipse.osgi.util.NLS;
public class Messages extends NLS {
public static String EditorUtility_calculatingChangedRegions_message;
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/util/NameComposer.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/util/NameComposer.java
index d32da1e3e03..a4f0b2a79b5 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/util/NameComposer.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/util/NameComposer.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2011, 2015 Google, Inc and others.
+ * Copyright (c) 2011, 2020 Google, Inc and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -10,9 +10,11 @@
*
* Contributors:
* Sergey Prigogin (Google) - initial API and implementation
+ * Alexander Fedorov (ArSysOp) - Bug 561993 - Remove dependency to com.ibm.icu from CDT UI
*******************************************************************************/
package org.eclipse.cdt.internal.ui.util;
+import java.text.BreakIterator;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@@ -20,8 +22,6 @@ import java.util.List;
import org.eclipse.cdt.internal.ui.text.CBreakIterator;
import org.eclipse.cdt.ui.PreferenceConstants;
-import com.ibm.icu.text.BreakIterator;
-
/**
* Composes names according to a particular style. A seed name is split into
* words at non-alphanumeric characters and camel case boundaries. The resulting
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/CElementImageProvider.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/CElementImageProvider.java
index 4a6efcf8ce4..50b5a652a75 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/CElementImageProvider.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/CElementImageProvider.java
@@ -16,6 +16,10 @@
*******************************************************************************/
package org.eclipse.cdt.internal.ui.viewsupport;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Optional;
+
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.model.CModelException;
import org.eclipse.cdt.core.model.CoreModel;
@@ -33,6 +37,8 @@ import org.eclipse.cdt.core.model.IInclude;
import org.eclipse.cdt.core.model.IIncludeReference;
import org.eclipse.cdt.core.model.ILibraryReference;
import org.eclipse.cdt.core.model.IMethodDeclaration;
+import org.eclipse.cdt.core.model.IPragma;
+import org.eclipse.cdt.core.model.IPragma.PragmaMarkInfo;
import org.eclipse.cdt.core.model.ISourceReference;
import org.eclipse.cdt.core.model.ISourceRoot;
import org.eclipse.cdt.core.model.ITemplate;
@@ -51,6 +57,7 @@ import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Point;
import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.ide.IDE;
import org.eclipse.ui.model.IWorkbenchAdapter;
@@ -107,12 +114,18 @@ public class CElementImageProvider {
private static ImageDescriptor DESC_OBJ_PROJECT;
//private static ImageDescriptor DESC_OBJ_FOLDER;
{
- ISharedImages images = CUIPlugin.getDefault().getWorkbench().getSharedImages();
+ ISharedImages images = PlatformUI.getWorkbench().getSharedImages();
DESC_OBJ_PROJECT_CLOSED = images.getImageDescriptor(IDE.SharedImages.IMG_OBJ_PROJECT_CLOSED);
DESC_OBJ_PROJECT = images.getImageDescriptor(IDE.SharedImages.IMG_OBJ_PROJECT);
//DESC_OBJ_FOLDER= images.getImageDescriptor(ISharedImages.IMG_OBJ_FOLDER);
}
+ /**
+ * Map of a descriptor back to its canonical one. This is needed to work around a bug in
+ * the Eclipse platform, see Bug 563454
+ */
+ private final Map<CElementImageDescriptor, CElementImageDescriptor> allDescriptors = new HashMap<>();
+
public CElementImageProvider() {
}
@@ -299,7 +312,9 @@ public class CElementImageProvider {
Point size = useSmallSize(flags) ? SMALL_SIZE : BIG_SIZE;
ImageDescriptor desc = getBaseImageDescriptor(element, flags);
if (desc != null) {
- return new CElementImageDescriptor(desc, adornmentFlags, size);
+ CElementImageDescriptor descriptor = new CElementImageDescriptor(desc, adornmentFlags, size);
+ descriptor = allDescriptors.computeIfAbsent(descriptor, (k) -> k);
+ return descriptor;
}
return null;
}
@@ -472,6 +487,15 @@ public class CElementImageProvider {
case ICElement.C_USING:
return getUsingImageDescriptor();
+ case ICElement.C_PRAGMA:
+ IPragma pragma = (IPragma) celement;
+ Optional<PragmaMarkInfo> pragmaMarkInfo = pragma.getPragmaMarkInfo();
+ if (pragmaMarkInfo.isPresent()) {
+ return CDTSharedImages.getImageDescriptor(CDTSharedImages.IMG_OUTLINE_MARK);
+ } else {
+ return null;
+ }
+
default:
return getImageDescriptor(type);
}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/CElementLabelComposer.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/CElementLabelComposer.java
index 27a5712453b..555d85ab0f5 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/CElementLabelComposer.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/CElementLabelComposer.java
@@ -16,6 +16,8 @@
*******************************************************************************/
package org.eclipse.cdt.internal.ui.viewsupport;
+import java.util.Optional;
+
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.model.CModelException;
import org.eclipse.cdt.core.model.IBinary;
@@ -27,6 +29,8 @@ import org.eclipse.cdt.core.model.IFunctionDeclaration;
import org.eclipse.cdt.core.model.IInheritance;
import org.eclipse.cdt.core.model.IMacro;
import org.eclipse.cdt.core.model.IMethodDeclaration;
+import org.eclipse.cdt.core.model.IPragma;
+import org.eclipse.cdt.core.model.IPragma.PragmaMarkInfo;
import org.eclipse.cdt.core.model.ISourceRoot;
import org.eclipse.cdt.core.model.ITemplate;
import org.eclipse.cdt.core.model.ITranslationUnit;
@@ -35,12 +39,18 @@ import org.eclipse.cdt.core.model.IVariableDeclaration;
import org.eclipse.cdt.core.parser.ast.ASTAccessVisibility;
import org.eclipse.cdt.internal.core.model.CoreModelMessages;
import org.eclipse.cdt.ui.CUIPlugin;
+import org.eclipse.cdt.ui.PreferenceConstants;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
+import org.eclipse.jface.resource.ColorRegistry;
+import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.jface.viewers.StyledString;
import org.eclipse.jface.viewers.StyledString.Styler;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.TextStyle;
+import org.eclipse.ui.PlatformUI;
// Most parts of this file were previously located in CElementLabels.
// FlexibleBuffer and sub-types are taken from JDTs JavaElementLabelComposer.
@@ -214,6 +224,9 @@ public class CElementLabelComposer {
case ICElement.C_MACRO:
appendMacroLabel((IMacro) element, flags);
break;
+ case ICElement.C_PRAGMA:
+ appendPragmaLabel((IPragma) element, flags);
+ break;
case ICElement.C_METHOD:
case ICElement.C_METHOD_DECLARATION:
case ICElement.C_TEMPLATE_METHOD:
@@ -313,6 +326,45 @@ public class CElementLabelComposer {
}
/**
+ * Appends the label for a pragma definition to a StringBuilder.
+ * @param pragma a pragma
+ * @param flags {@link CElementLabels#MF_POST_FILE_QUALIFIED}, or 0.
+ */
+ public void appendPragmaLabel(IPragma pragma, long flags) {
+ Optional<PragmaMarkInfo> pragmaMarkInfo = pragma.getPragmaMarkInfo();
+ String display = pragmaMarkInfo.map(PragmaMarkInfo::getMarkName).orElseGet(() -> pragma.getElementName());
+ int displayOffset = fBuffer.length();
+ fBuffer.append(display);
+ if (pragmaMarkInfo.isPresent()) {
+ if (getFlag(flags, CElementLabels.COLORIZE)) {
+ Styler styler = new Styler() {
+ @Override
+ public void applyStyles(TextStyle textStyle) {
+ textStyle.font = JFaceResources.getFont(PreferenceConstants.OUTLINE_MARK_TEXT_FONT);
+ ColorRegistry colorRegistry = PlatformUI.getWorkbench().getThemeManager().getCurrentTheme()
+ .getColorRegistry();
+ textStyle.foreground = new Color(
+ colorRegistry.getRGB(PreferenceConstants.OUTLINE_MARK_TEXT_COLOR));
+ }
+ };
+ fBuffer.setStyle(displayOffset, fBuffer.length() - displayOffset, styler);
+ }
+ }
+
+ if (getFlag(flags, CElementLabels.MF_POST_FILE_QUALIFIED)) {
+ IPath path = pragma.getPath();
+ if (path != null) {
+ int offset = fBuffer.length();
+ fBuffer.append(CElementLabels.CONCAT_STRING);
+ fBuffer.append(path.toString());
+ if (getFlag(flags, CElementLabels.COLORIZE)) {
+ fBuffer.setStyle(offset, fBuffer.length() - offset, QUALIFIER_STYLE);
+ }
+ }
+ }
+ }
+
+ /**
* Appends the label for a method declaration to a StringBuilder.
* @param method a method declaration
* @param flags any of the M_* flags, and {@link CElementLabels#MF_POST_FILE_QUALIFIED}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/CElementLabels.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/CElementLabels.java
index 25c9e07cd09..91fbb93be45 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/CElementLabels.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/CElementLabels.java
@@ -323,11 +323,11 @@ public class CElementLabels {
}
/**
- * Returns the label for a Java element with the flags as defined by this class.
+ * Returns the label for a C element with the flags as defined by this class.
*
* @param element the element to render
* @param flags the rendering flags
- * @return the label of the Java element
+ * @return the label of the C element
*/
public static String getElementLabel(ICElement element, long flags) {
StringBuilder result = new StringBuilder();
@@ -336,11 +336,11 @@ public class CElementLabels {
}
/**
- * Returns the styled label for a Java element with the flags as defined by this class.
+ * Returns the styled label for a C element with the flags as defined by this class.
*
* @param element the element to render
* @param flags the rendering flags
- * @return the label of the Java element
+ * @return the label of the C element
*
*/
public static StyledString getStyledElementLabel(ICElement element, long flags) {
@@ -350,7 +350,7 @@ public class CElementLabels {
}
/**
- * Returns the label for a Java element with the flags as defined by this class.
+ * Returns the label for a C element with the flags as defined by this class.
*
* @param element the element to render
* @param flags the rendering flags
@@ -361,7 +361,7 @@ public class CElementLabels {
}
/**
- * Returns the styled label for a Java element with the flags as defined by this class.
+ * Returns the styled label for a C element with the flags as defined by this class.
*
* @param element the element to render
* @param flags the rendering flags
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/DecoratingCOutlineLabelProvider.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/DecoratingCOutlineLabelProvider.java
new file mode 100644
index 00000000000..95825d28109
--- /dev/null
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/DecoratingCOutlineLabelProvider.java
@@ -0,0 +1,77 @@
+/*******************************************************************************
+ * Copyright (c) 2021 Kichwa Coders Canada Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.internal.ui.viewsupport;
+
+import org.eclipse.cdt.internal.ui.cview.DividerLine;
+import org.eclipse.cdt.ui.PreferenceConstants;
+import org.eclipse.jface.resource.ColorRegistry;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.ui.PlatformUI;
+
+/**
+ * Specialization of the C label provider that allows drawing divider lines used
+ * in Outline view and information control
+ */
+public class DecoratingCOutlineLabelProvider extends DecoratingCLabelProvider {
+
+ private static final int MAXIMUM_REASONABLE_WIDTH = 4000;
+
+ public DecoratingCOutlineLabelProvider(CUILabelProvider labelProvider) {
+ super(labelProvider, true);
+ }
+
+ @Override
+ protected void measure(Event event, Object element) {
+ if (!isOwnerDrawEnabled())
+ return;
+ if (element instanceof DividerLine) {
+ GC gc = event.gc;
+ if (gc == null) {
+ // If there is no gc (can this happen?) default to a reasonably wide measurement
+ event.width = MAXIMUM_REASONABLE_WIDTH;
+ } else {
+ // Use the clipping area of the event to know how wide the tree control
+ // is so that we can make a line exactly the right size.
+ // This has the side effect the tree can never become narrower than this
+ // width as the width of the tree is in part based on the width of its
+ // widest item. Therefore if the view becomes smaller, a horizontal
+ // scroll bar is created
+ // We use a max of MAXIMUM_REASONABLE_WIDTH here to ensure that we don't
+ // end up in a loop that the item asks for a wider width, so the tree gets wider, etc.
+ Rectangle clipping = gc.getClipping();
+ event.width = Math.min(clipping.width - event.x, MAXIMUM_REASONABLE_WIDTH);
+ }
+ } else {
+ super.measure(event, element);
+ }
+ }
+
+ @Override
+ protected void paint(Event event, Object element) {
+ if (!isOwnerDrawEnabled())
+ return;
+ if (element instanceof DividerLine) {
+ int y = event.y + event.height / 2;
+ ColorRegistry colorRegistry = PlatformUI.getWorkbench().getThemeManager().getCurrentTheme()
+ .getColorRegistry();
+ event.gc.setForeground(new Color(colorRegistry.getRGB(PreferenceConstants.OUTLINE_MARK_DIVIDER_COLOR)));
+ // draw a line as wide as possible, we can't use event.width here as that doesn't take into account
+ // our declared width in measure. On Windows this is clipped to the size we measured above, but
+ // on GTK and macOS this is clipped to the containing tree control.
+ event.gc.drawLine(0, y, event.x + MAXIMUM_REASONABLE_WIDTH, y);
+ } else {
+ super.paint(event, element);
+ }
+ }
+}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/SelectionListenerWithASTManager.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/SelectionListenerWithASTManager.java
index 91552f75bbd..6c00ecba7a4 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/SelectionListenerWithASTManager.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/SelectionListenerWithASTManager.java
@@ -35,6 +35,7 @@ import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.ISelectionProvider;
import org.eclipse.ui.ISelectionListener;
+import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.texteditor.ITextEditor;
/**
@@ -134,7 +135,7 @@ public class SelectionListenerWithASTManager {
// Try to acquire the lock
while (!monitor.isCanceled() && !fJobLock.acquire(10)) {
}
- if (!monitor.isCanceled() && isSelectionValid(selection)) {
+ if (!monitor.isCanceled() && isSelectionValid(selection) && PlatformUI.isWorkbenchRunning()) {
return calculateASTandInform(workingCopy, selection, monitor);
}
} catch (InterruptedException e) {
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/AbstractOpenWizardAction.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/AbstractOpenWizardAction.java
index cc86cca7039..62f58d6db06 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/AbstractOpenWizardAction.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/AbstractOpenWizardAction.java
@@ -39,6 +39,7 @@ import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.IWorkbenchWindowActionDelegate;
import org.eclipse.ui.IWorkbenchWizard;
+import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.actions.NewProjectAction;
public abstract class AbstractOpenWizardAction extends Action implements IWorkbenchWindowActionDelegate {
@@ -78,7 +79,7 @@ public abstract class AbstractOpenWizardAction extends Action implements IWorkbe
}
protected IWorkbench getWorkbench() {
- return CUIPlugin.getDefault().getWorkbench();
+ return PlatformUI.getWorkbench();
}
private boolean isOfAcceptedType(Object obj) {
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/classwizard/NewClassCodeGenerator.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/classwizard/NewClassCodeGenerator.java
index b5bbb7e4933..0be392ef967 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/classwizard/NewClassCodeGenerator.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/classwizard/NewClassCodeGenerator.java
@@ -91,6 +91,7 @@ public class NewClassCodeGenerator {
private ICElement fCreatedClass;
private String fFullyQualifiedClassName;
private boolean fForceSourceFileCreation;
+ private final boolean fIsFinal;
/**
* When set to <code>true</code>, the source file is created, even if no stubs have
@@ -126,6 +127,21 @@ public class NewClassCodeGenerator {
*/
public NewClassCodeGenerator(IPath headerPath, IPath sourcePath, IPath testPath, String className, String namespace,
IBaseClassInfo[] baseClasses, IMethodStub[] methodStubs) {
+ this(headerPath, sourcePath, testPath, className, namespace, baseClasses, methodStubs, false);
+ }
+
+ /**
+ * @param headerPath the header file path
+ * @param sourcePath the source file path
+ * @param testPath the test file path, can be {@code null}
+ * @param className the class name
+ * @param namespace the namespace name
+ * @param baseClasses the base classes
+ * @param methodStubs the method stubs
+ * @param isFinal True if final, false otherwise
+ */
+ public NewClassCodeGenerator(IPath headerPath, IPath sourcePath, IPath testPath, String className, String namespace,
+ IBaseClassInfo[] baseClasses, IMethodStub[] methodStubs, boolean isFinal) {
fHeaderPath = headerPath;
fSourcePath = sourcePath;
fTestPath = testPath;
@@ -142,6 +158,7 @@ public class NewClassCodeGenerator {
}
fBaseClasses = baseClasses;
fMethodStubs = methodStubs;
+ fIsFinal = isFinal;
}
public ICElement getCreatedClass() {
@@ -466,6 +483,9 @@ public class NewClassCodeGenerator {
}
code.append("class "); //$NON-NLS-1$
code.append(fClassName);
+ if (fIsFinal) {
+ code.append(" final "); //$NON-NLS-1$
+ }
code.append(constructBaseClassInheritance());
code.append(" {"); //$NON-NLS-1$
code.append(lineDelimiter);
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/classwizard/NewClassWizardMessages.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/classwizard/NewClassWizardMessages.java
index 9ce8764e9d2..a5cc3daf353 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/classwizard/NewClassWizardMessages.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/classwizard/NewClassWizardMessages.java
@@ -30,6 +30,7 @@ public final class NewClassWizardMessages extends NLS {
public static String NewClassCreationWizardPage_warning_NotACProject;
public static String NewClassCreationWizardPage_warning_NotInACProject;
public static String NewClassCreationWizardPage_namespace_label;
+ public static String NewClassCreationWizardPage_final_label;
public static String NewClassCreationWizardPage_namespace_button;
public static String NewClassCreationWizardPage_error_EnterNamespace;
public static String NewClassCreationWizardPage_error_NamespaceExistsDifferentCase;
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/classwizard/NewClassWizardMessages.properties b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/classwizard/NewClassWizardMessages.properties
index d0d4b1b366d..2f5f6d457c5 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/classwizard/NewClassWizardMessages.properties
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/classwizard/NewClassWizardMessages.properties
@@ -36,6 +36,8 @@ NewClassCreationWizardPage_warning_NotInACProject=Folder is not in a C/C++ proje
NewClassCreationWizardPage_namespace_label=&Namespace:
NewClassCreationWizardPage_namespace_button=Bro&wse...
+NewClassCreationWizardPage_final_label=Final class
+
NewClassCreationWizardPage_error_EnterNamespace=Namespace is empty.
NewClassCreationWizardPage_error_NamespaceExistsDifferentCase=Namespace with the same name exists in a different scope.
NewClassCreationWizardPage_error_TypeMatchingNamespaceExists=Another type with the same name as specified namespace exists.
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/filewizard/NewSourceFileGenerator.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/filewizard/NewSourceFileGenerator.java
index 6f2cfba0a28..528dcbba280 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/filewizard/NewSourceFileGenerator.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/filewizard/NewSourceFileGenerator.java
@@ -28,9 +28,8 @@ import org.eclipse.core.resources.IWorkspaceRoot;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.OperationCanceledException;
import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.SubProgressMonitor;
+import org.eclipse.core.runtime.SubMonitor;
import org.eclipse.core.runtime.preferences.IPreferencesService;
import org.eclipse.ui.dialogs.ContainerGenerator;
@@ -120,43 +119,35 @@ public class NewSourceFileGenerator {
private static IFile createNewFile(IPath newFilePath, InputStream contents, boolean force, IProgressMonitor monitor)
throws CoreException {
- int totalWork = 100;
- int createFileWork = totalWork;
-
- monitor.beginTask(NewFileWizardMessages.NewSourceFileGenerator_createFile_task, totalWork);
-
+ SubMonitor subMonitor = SubMonitor.convert(monitor,
+ NewFileWizardMessages.NewSourceFileGenerator_createFile_task, 100);
IWorkspaceRoot root = CUIPlugin.getWorkspace().getRoot();
IFile newFile = root.getFileForLocation(newFilePath);
if (newFile == null)
newFile = root.getFile(newFilePath);
if (newFile.exists()) {
- monitor.done();
return newFile;
}
if (newFilePath.segmentCount() > 1) {
IPath containerPath = newFilePath.removeLastSegments(1);
if (root.getContainerForLocation(containerPath) == null) {
- int containerWork = totalWork / 2;
- createFileWork = totalWork / 2;
ContainerGenerator generator = new ContainerGenerator(containerPath);
- generator.generateContainer(new SubProgressMonitor(monitor, containerWork));
+ generator.generateContainer(subMonitor.split(50));
}
}
-
- createFile(newFile, contents, force, new SubProgressMonitor(monitor, createFileWork));
- monitor.done();
-
+ createFile(newFile, contents, force, subMonitor.split(50));
return newFile;
}
private static void createFile(IFile fileHandle, InputStream contents, boolean force, IProgressMonitor monitor)
throws CoreException {
+ SubMonitor subMonitor = SubMonitor.convert(monitor, 1);
if (contents == null)
contents = new ByteArrayInputStream(new byte[0]);
try {
- fileHandle.create(contents, force, monitor);
+ fileHandle.create(contents, force, subMonitor.split(1));
} catch (CoreException e) {
// If the file already existed locally, just refresh to get contents
if (e.getStatus().getCode() == IResourceStatus.PATH_OCCUPIED)
@@ -164,8 +155,5 @@ public class NewSourceFileGenerator {
else
throw e;
}
-
- if (monitor.isCanceled())
- throw new OperationCanceledException();
}
}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/filewizard/WizardNewFileFromTemplateCreationPage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/filewizard/WizardNewFileFromTemplateCreationPage.java
index d5d0d5633e8..f70e4f0de37 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/filewizard/WizardNewFileFromTemplateCreationPage.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/filewizard/WizardNewFileFromTemplateCreationPage.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2008 Wind River Systems, Inc. and others.
+ * Copyright (c) 2007, 2021 Wind River Systems, Inc. and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -10,21 +10,26 @@
*
* Contributors:
* Anton Leherbauer (Wind River Systems) - initial API and implementation
+ * Lidia Popescu (Wind River Systems) - http://bugs.eclipse.org/573204
*******************************************************************************/
package org.eclipse.cdt.internal.ui.wizards.filewizard;
import java.io.ByteArrayInputStream;
+import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Optional;
import org.eclipse.cdt.internal.corext.codemanipulation.StubUtility;
import org.eclipse.cdt.internal.corext.template.c.FileTemplateContextType;
import org.eclipse.cdt.internal.ui.preferences.CodeTemplatePreferencePage;
+import org.eclipse.cdt.internal.ui.viewsupport.ProjectTemplateStore;
+import org.eclipse.cdt.ui.CUIPlugin;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ResourcesPlugin;
@@ -34,6 +39,7 @@ import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.content.IContentType;
import org.eclipse.core.runtime.content.IContentTypeManager;
import org.eclipse.core.runtime.content.IContentTypeMatcher;
+import org.eclipse.jface.dialogs.IDialogSettings;
import org.eclipse.jface.preference.PreferenceDialog;
import org.eclipse.jface.text.templates.Template;
import org.eclipse.jface.viewers.IStructuredSelection;
@@ -48,6 +54,7 @@ import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Event;
+import org.eclipse.text.templates.TemplatePersistenceData;
import org.eclipse.ui.dialogs.PreferencesUtil;
import org.eclipse.ui.dialogs.WizardNewFileCreationPage;
@@ -61,6 +68,8 @@ public class WizardNewFileFromTemplateCreationPage extends WizardNewFileCreation
private Combo fTemplatesCombo;
private Template[] fTemplates;
protected boolean fUseTemplate = true;
+ /** Dialog settings key to persist selected template. */
+ private static final String KEY_TEMPLATE = "org.eclipse.cdt.internal.corext.codemanipulation"; //$NON-NLS-1$
/**
* Create a new 'file from template' page.
@@ -148,6 +157,7 @@ public class WizardNewFileFromTemplateCreationPage extends WizardNewFileCreation
String content = StubUtility.getFileContent(template, fileHandle, lineDelimiter);
if (content != null) {
try {
+ saveSelection(getContainterProject(), getFileExtensionFromName(), template);
String charset = fileHandle.getParent().getDefaultCharset();
return new ByteArrayInputStream(content.getBytes(charset));
} catch (UnsupportedEncodingException exc) {
@@ -182,6 +192,10 @@ public class WizardNewFileFromTemplateCreationPage extends WizardNewFileCreation
idx = i;
}
}
+ Optional<Integer> idxo = getSelection(getContainterProject(), getFileExtensionFromName(), fTemplates);
+ if (idxo.isPresent()) {
+ idx = idxo.get();
+ }
if (fTemplatesCombo != null) {
if (names.length == 0) {
names = new String[] { NewFileWizardMessages.WizardNewFileFromTemplateCreationPage_noTemplate_name };
@@ -277,4 +291,160 @@ public class WizardNewFileFromTemplateCreationPage extends WizardNewFileCreation
return result.toArray(new String[result.size()]);
}
+ /**
+ * @return
+ */
+ private String getFileExtensionFromName() {
+ String fName = getFileName();
+ if (fName == null || fName.isEmpty() || !fName.contains(".")) { //$NON-NLS-1$
+ return null;
+ }
+ return fName.substring(fName.lastIndexOf("."), fName.length()); //$NON-NLS-1$
+ }
+
+ /**
+ * Returns the specific section from dialog based on provided key
+ *
+ * @param fileExtension
+ * @return
+ */
+ protected static IDialogSettings getDialogSettings(String fileExtension) {
+ if (fileExtension == null) {
+ return null;
+ }
+ IDialogSettings settings = CUIPlugin.getDefault().getDialogSettings().getSection(KEY_TEMPLATE);
+ if (settings == null) {
+ settings = CUIPlugin.getDefault().getDialogSettings().addNewSection(KEY_TEMPLATE);
+ }
+ IDialogSettings eSettings = settings.getSection(fileExtension);
+ if (eSettings == null) {
+ eSettings = settings.addNewSection(fileExtension);
+ }
+ return eSettings;
+ }
+
+ /**
+ * Saves the template that has been used for a specific file extension.
+ *
+ * @param project
+ * @param fExtension
+ * @param template
+ */
+ private static void saveSelection(IProject project, String fExtension, Template template) {
+ if (fExtension == null || fExtension.isEmpty() || template == null) {
+ return;
+ }
+ IDialogSettings settings = getDialogSettings(fExtension);
+ if (settings != null) {
+ TemplatePersistenceData[] data = getTemplatePersistentData(project);
+ String templateID = getTemplateId(template, data);
+ settings.put("id", templateID == null ? "" : templateID); //$NON-NLS-1$ //$NON-NLS-2$
+ settings.put("name", template.getName()); //$NON-NLS-1$
+ settings.put("contextId", template.getContextTypeId()); //$NON-NLS-1$
+ }
+ }
+
+ /**
+ * @param template
+ * @param data
+ * @return
+ */
+ private static String getTemplateId(Template template, TemplatePersistenceData[] data) {
+ if (template == null || data == null)
+ return null;
+ for (int i = 0; i < data.length; i++) {
+ TemplatePersistenceData tData = data[i];
+ if (tData.getTemplate().equals(template)) {
+ return tData.getId();
+ }
+ }
+ return null;
+ }
+
+ /**
+ * @param project
+ * @return
+ */
+ private static TemplatePersistenceData[] getTemplatePersistentData(IProject project) {
+ TemplatePersistenceData[] templateDatas;
+ if (project == null) {
+ templateDatas = CUIPlugin.getDefault().getCodeTemplateStore().getTemplateData(true);
+ } else {
+ ProjectTemplateStore projectStore = new ProjectTemplateStore(project.getProject());
+ try {
+ projectStore.load();
+ } catch (IOException e) {
+ CUIPlugin.log(e);
+ }
+ templateDatas = projectStore.getTemplateData();
+ }
+ return templateDatas;
+ }
+
+ /**
+ * @param project
+ * @param fExtension
+ * @param fTemplates
+ * @return the position of found template in the list for combobox selection inside Optional
+ */
+ private static Optional<Integer> getSelection(IProject project, String fExtension, Template[] fTemplates) {
+ if (fExtension == null || fTemplates == null) {
+ return Optional.empty();
+ }
+ if (fExtension.isEmpty() || fTemplates.length == 0) {
+ return Optional.empty();
+ }
+ IDialogSettings settings = CUIPlugin.getDefault().getDialogSettings().getSection(KEY_TEMPLATE);
+ if (settings == null) {
+ return Optional.empty();
+ }
+ IDialogSettings eSettings = settings.getSection(fExtension);
+ if (eSettings == null) {
+ return Optional.empty();
+ }
+ String tId = eSettings.get("id"); //$NON-NLS-1$
+ String tName = eSettings.get("name"); //$NON-NLS-1$
+ String tContextId = eSettings.get("contextId"); //$NON-NLS-1$
+ Template template = getTemplateFromId(project, tId);
+
+ if (template != null) {
+ for (int i = 0; i < fTemplates.length; i++) {
+ if (fTemplates[i].equals(template)) {
+ return Optional.of(i);
+ }
+ }
+ }
+ for (int i = 0; i < fTemplates.length; i++) {
+ if (fTemplates[i].getContextTypeId().equals(tContextId) && fTemplates[i].getName().equals(tName)) {
+ return Optional.of(i);
+ }
+ }
+ return Optional.empty();
+ }
+
+ /**
+ * Templates provided thought extension point may have id, but user manually created templates will not have ids.
+ *
+ * The method finds template object from provided template id stored in DialogSettings.
+ * If the plugin that provided the template has been uninstalled, it may not found the template.
+ *
+ * @param project
+ * @param tId
+ * @return
+ */
+ private static Template getTemplateFromId(IProject project, String tId) {
+ if (tId == null || tId.isEmpty()) {
+ return null;
+ }
+ TemplatePersistenceData[] data = getTemplatePersistentData(project);
+ if (data == null) {
+ return null;
+ }
+ for (int i = 0; i < data.length; i++) {
+ if (tId.equals(data[i].getId())) {
+ return data[i].getTemplate();
+ }
+ }
+ return null;
+ }
}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/indexwizards/TeamProjectIndexExportWizardPage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/indexwizards/TeamProjectIndexExportWizardPage.java
index 9bf3abc2c9b..c4a0a509f48 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/indexwizards/TeamProjectIndexExportWizardPage.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/indexwizards/TeamProjectIndexExportWizardPage.java
@@ -31,7 +31,7 @@ import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.MultiStatus;
-import org.eclipse.core.runtime.SubProgressMonitor;
+import org.eclipse.core.runtime.SubMonitor;
import org.eclipse.jface.dialogs.ErrorDialog;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.MessageDialog;
@@ -327,7 +327,7 @@ public class TeamProjectIndexExportWizardPage extends WizardPage implements List
IRunnableWithProgress op = new IRunnableWithProgress() {
@Override
public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- monitor.beginTask("", projects.length); //$NON-NLS-1$
+ SubMonitor subMonitor = SubMonitor.convert(monitor, projects.length);
for (ICProject project : projects) {
TeamPDOMExportOperation op = new TeamPDOMExportOperation(project);
op.setTargetLocation(dest);
@@ -335,7 +335,7 @@ public class TeamProjectIndexExportWizardPage extends WizardPage implements List
op.setOptions(TeamPDOMExportOperation.EXPORT_OPTION_RESOURCE_SNAPSHOT);
}
try {
- op.run(new SubProgressMonitor(monitor, 1));
+ op.run(subMonitor.split(1));
} catch (CoreException e) {
status.merge(e.getStatus());
}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/settingswizards/IncludePathsSettingsProcessor.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/settingswizards/IncludePathsSettingsProcessor.java
index 1df9bd7106e..1c3e926e6e9 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/settingswizards/IncludePathsSettingsProcessor.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/settingswizards/IncludePathsSettingsProcessor.java
@@ -76,7 +76,6 @@ public class IncludePathsSettingsProcessor extends SettingsProcessor {
content.startElement(NONE, NONE, INCLUDE_PATH_ELEMENT, attrib);
content.characters(value, 0, value.length);
content.endElement(NONE, NONE, INCLUDE_PATH_ELEMENT);
- newline(content);
} catch (SAXException e) {
throw new SettingsImportExportException(e);
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/settingswizards/MacroSettingsProcessor.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/settingswizards/MacroSettingsProcessor.java
index 5dd69f82ab8..3b799b48197 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/settingswizards/MacroSettingsProcessor.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/settingswizards/MacroSettingsProcessor.java
@@ -74,7 +74,6 @@ public class MacroSettingsProcessor extends SettingsProcessor {
try {
content.startElement(NONE, NONE, MACRO_ELEMENT, null);
- newline(content);
content.startElement(NONE, NONE, NAME_ELEMENT, null);
content.characters(name, 0, name.length);
@@ -83,10 +82,8 @@ public class MacroSettingsProcessor extends SettingsProcessor {
content.startElement(NONE, NONE, VALUE_ELEMENT, null);
content.characters(value, 0, value.length);
content.endElement(NONE, NONE, VALUE_ELEMENT);
- newline(content);
content.endElement(NONE, NONE, MACRO_ELEMENT);
- newline(content);
} catch (SAXException e) {
throw new SettingsImportExportException(e);
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/settingswizards/ProjectSettingsExportStrategy.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/settingswizards/ProjectSettingsExportStrategy.java
index ebecc5c3d45..72f9fde5d06 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/settingswizards/ProjectSettingsExportStrategy.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/settingswizards/ProjectSettingsExportStrategy.java
@@ -13,9 +13,8 @@
*******************************************************************************/
package org.eclipse.cdt.internal.ui.wizards.settingswizards;
-import java.io.FileWriter;
+import java.io.FileOutputStream;
import java.io.IOException;
-import java.io.Writer;
import java.net.URI;
import java.util.List;
@@ -34,7 +33,6 @@ import org.eclipse.cdt.ui.CUIPlugin;
import org.eclipse.core.filesystem.URIUtil;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
-import org.xml.sax.ContentHandler;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
@@ -82,12 +80,12 @@ public class ProjectSettingsExportStrategy implements IProjectSettingsWizardPage
// do nothing
}
- private Writer getWriter(IProjectSettingsWizardPage page) throws IOException {
+ private FileOutputStream getFileOutputStream(IProjectSettingsWizardPage page) throws IOException {
IPath path = new Path(page.getDestinationFilePath());
if (!IProjectSettingsWizardPage.FILENAME_EXTENSION.equals(path.getFileExtension()))
path.addFileExtension(IProjectSettingsWizardPage.FILENAME_EXTENSION);
- return new FileWriter(path.toFile());
+ return new FileOutputStream(path.toFile());
}
/**
@@ -107,22 +105,24 @@ public class ProjectSettingsExportStrategy implements IProjectSettingsWizardPage
}
// gets a writer for the file that was selected by the user
- Writer writer;
+ FileOutputStream outputStream;
try {
- writer = getWriter(page);
+ outputStream = getFileOutputStream(page);
} catch (IOException e) {
page.showErrorDialog(Messages.ProjectSettingsExportStrategy_fileOpenError,
Messages.ProjectSettingsExportStrategy_couldNotOpen);
return false;
}
- // stream the results to the writer as text
- handler.setResult(new StreamResult(writer));
-
// write out the XML header
Transformer transformer = handler.getTransformer();
- transformer.setOutputProperty(OutputKeys.ENCODING, "ISO-8859-1"); //$NON-NLS-1$
+ transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); //$NON-NLS-1$
transformer.setOutputProperty(OutputKeys.INDENT, "yes"); //$NON-NLS-1$
+ transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2"); //$NON-NLS-1$ //$NON-NLS-2$
+ transformer.setOutputProperty(OutputKeys.DOCTYPE_PUBLIC, "yes"); //$NON-NLS-1$
+
+ // stream the results to the writer as text
+ handler.setResult(new StreamResult(outputStream));
List<ISettingsProcessor> exporters = page.getSelectedSettingsProcessors();
@@ -134,27 +134,21 @@ public class ProjectSettingsExportStrategy implements IProjectSettingsWizardPage
AttributesImpl attributes = new AttributesImpl();
handler.startDocument();
- newline(handler);
handler.startElement(NONE, NONE, ROOT_ELEMENT, null);
- newline(handler);
for (ISettingsProcessor exporter : exporters) {
attributes.clear();
attributes.addAttribute(NONE, NONE, SECTION_NAME_ATTRIBUTE, CDATA, exporter.getSectionName());
handler.startElement(NONE, NONE, SECTION_ELEMENT, attributes);
- newline(handler);
// each exporter is responsible for writing out its own section of the file
exporter.writeSectionXML(projectRoot, handler);
handler.endElement(NONE, NONE, SECTION_ELEMENT);
- newline(handler);
}
handler.endElement(NONE, NONE, ROOT_ELEMENT);
- newline(handler);
handler.endDocument();
- newline(handler);
result = true;
} catch (SAXException e) {
@@ -175,11 +169,4 @@ public class ProjectSettingsExportStrategy implements IProjectSettingsWizardPage
return result;
}
- /**
- * Outputs a newline (\n) to the given ContentHandler.
- */
- private static void newline(ContentHandler handler) throws SAXException {
- handler.ignorableWhitespace("\n".toCharArray(), 0, 1); //$NON-NLS-1$
- }
-
}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/settingswizards/SettingsProcessor.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/settingswizards/SettingsProcessor.java
index 0ce07081dea..3dfb4119226 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/settingswizards/SettingsProcessor.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/settingswizards/SettingsProcessor.java
@@ -37,6 +37,7 @@ public abstract class SettingsProcessor implements ISettingsProcessor {
protected static final String NONE = ""; //$NON-NLS-1$
protected static final String CDATA = "CDATA"; //$NON-NLS-1$
+ protected static final String ID_ATTRIBUTE = "id"; //$NON-NLS-1$
protected static final String NAME_ATTRIBUTE = "name"; //$NON-NLS-1$
protected static final String LANGUAGE_ELEMENT = "language"; //$NON-NLS-1$
@@ -51,13 +52,6 @@ public abstract class SettingsProcessor implements ISettingsProcessor {
protected abstract void readSettings(ICLanguageSetting setting, Element language)
throws SettingsImportExportException;
- /**
- * Outputs a newline (\n) to the given ContentHandler.
- */
- protected static void newline(ContentHandler handler) throws SAXException {
- handler.ignorableWhitespace("\n".toCharArray(), 0, 1); //$NON-NLS-1$
- }
-
@Override
public void writeSectionXML(ICFolderDescription projectRoot, ContentHandler content)
throws SettingsImportExportException {
@@ -66,12 +60,14 @@ public abstract class SettingsProcessor implements ISettingsProcessor {
try {
for (ICLanguageSetting language : languages) {
- //TODO for some reason language.getLanguageId() is returning null
+ String languageId = language.getLanguageId();
String languageName = language.getName();
attributes.clear();
+ if (languageId != null) {
+ attributes.addAttribute(NONE, NONE, ID_ATTRIBUTE, CDATA, languageId);
+ }
attributes.addAttribute(NONE, NONE, NAME_ATTRIBUTE, CDATA, languageName);
content.startElement(NONE, NONE, LANGUAGE_ELEMENT, attributes);
- newline(content);
ICLanguageSettingEntry[] settings = language.getSettingEntries(getSettingsType());
@@ -81,9 +77,7 @@ public abstract class SettingsProcessor implements ISettingsProcessor {
}
}
- newline(content);
content.endElement(NONE, NONE, LANGUAGE_ELEMENT);
- newline(content);
}
} catch (SAXException e) {
@@ -95,15 +89,21 @@ public abstract class SettingsProcessor implements ISettingsProcessor {
public void readSectionXML(ICFolderDescription projectRoot, Element section) throws SettingsImportExportException {
ICLanguageSetting[] languageSettings = projectRoot.getLanguageSettings();
+ Map<String, ICLanguageSetting> languageIdMap = new HashMap<>();
Map<String, ICLanguageSetting> languageMap = new HashMap<>();
for (ICLanguageSetting language : languageSettings) {
+ languageIdMap.put(language.getLanguageId(), language);
languageMap.put(language.getName(), language);
}
List<Element> elements = XMLUtils.extractChildElements(section, LANGUAGE_ELEMENT); // throws SettingsImportExportException
for (Element languageElement : elements) {
- String languageName = languageElement.getAttribute(NAME_ATTRIBUTE);
- ICLanguageSetting setting = languageMap.get(languageName);
+ String languageId = languageElement.getAttribute(ID_ATTRIBUTE);
+ ICLanguageSetting setting = languageIdMap.get(languageId);
+ if (setting == null) {
+ String languageName = languageElement.getAttribute(NAME_ATTRIBUTE);
+ setting = languageMap.get(languageName);
+ }
if (setting != null)
readSettings(setting, languageElement);
}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/workingsets/AbstractWorkingSetConfigsContribution.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/workingsets/AbstractWorkingSetConfigsContribution.java
index 98b0ac8dc79..27a8ba4b190 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/workingsets/AbstractWorkingSetConfigsContribution.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/workingsets/AbstractWorkingSetConfigsContribution.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009, 2012 QNX Software Systems and others.
+ * Copyright (c) 2009, 2020 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -10,10 +10,12 @@
*
* Contributors:
* QNX Software Systems - initial API and implementation
+ * Alexander Fedorov (ArSysOp) - Bug 561993 - Remove dependency to com.ibm.icu from CDT UI
*******************************************************************************/
package org.eclipse.cdt.internal.ui.workingsets;
+import java.text.Collator;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
@@ -25,8 +27,6 @@ import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.ui.IWorkingSet;
import org.eclipse.ui.actions.CompoundContributionItem;
-import com.ibm.icu.text.Collator;
-
/**
* Common API of dynamic contribution of items to manipulate configurations of a working set.
*
@@ -38,7 +38,7 @@ abstract class AbstractWorkingSetConfigsContribution extends CompoundContributio
private IWorkingSetProxy workingSet;
- private Comparator<IWorkingSetConfiguration> configOrdering = new Comparator<IWorkingSetConfiguration>() {
+ private Comparator<IWorkingSetConfiguration> configOrdering = new Comparator<>() {
private Collator collator = Collator.getInstance();
@Override
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/workingsets/AbstractWorkingSetsContribution.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/workingsets/AbstractWorkingSetsContribution.java
index 5d08b86f784..959aa8a51bf 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/workingsets/AbstractWorkingSetsContribution.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/workingsets/AbstractWorkingSetsContribution.java
@@ -17,12 +17,12 @@ package org.eclipse.cdt.internal.ui.workingsets;
import java.util.Collection;
import java.util.List;
-import org.eclipse.cdt.ui.CUIPlugin;
import org.eclipse.jface.action.IContributionItem;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.osgi.util.NLS;
import org.eclipse.ui.IWorkingSet;
import org.eclipse.ui.IWorkingSetManager;
+import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.actions.CompoundContributionItem;
/**
@@ -76,7 +76,7 @@ abstract class AbstractWorkingSetsContribution extends CompoundContributionItem
private IWorkingSetManager getWorkingsetManager() {
if (workingSetManager == null) {
- workingSetManager = CUIPlugin.getDefault().getWorkbench().getWorkingSetManager();
+ workingSetManager = PlatformUI.getWorkbench().getWorkingSetManager();
}
return workingSetManager;
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/workingsets/ChangeBuildConfigContribution.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/workingsets/ChangeBuildConfigContribution.java
new file mode 100644
index 00000000000..0f6a572690a
--- /dev/null
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/workingsets/ChangeBuildConfigContribution.java
@@ -0,0 +1,298 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Simeon Andreev and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Simeon Andreev - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.cdt.internal.ui.workingsets;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.SortedSet;
+import java.util.TreeSet;
+
+import org.eclipse.cdt.core.model.CoreModel;
+import org.eclipse.cdt.core.model.ICElement;
+import org.eclipse.cdt.core.model.ICProject;
+import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
+import org.eclipse.cdt.core.settings.model.ICProjectDescription;
+import org.eclipse.cdt.internal.ui.cview.IncludeRefContainer;
+import org.eclipse.cdt.internal.ui.cview.IncludeReferenceProxy;
+import org.eclipse.cdt.ui.CUIPlugin;
+import org.eclipse.cdt.ui.actions.ChangeConfigAction;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.jface.action.ActionContributionItem;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.jface.text.ITextSelection;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IViewPart;
+import org.eclipse.ui.IViewReference;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.actions.CompoundContributionItem;
+
+/**
+ * A dynamic contribution of items to change the build configuration of selected projects.
+ *
+ */
+public class ChangeBuildConfigContribution extends CompoundContributionItem {
+
+ @Override
+ protected IContributionItem[] getContributionItems() {
+ HashSet<IProject> projects = findProjects();
+
+ SortedSet<String> configNames = new TreeSet<>();
+ String sCurrentConfig = null;
+ boolean bCurrentConfig = true;
+ for (IProject prj : projects) {
+ ICConfigurationDescription[] cfgDescs = getCfgs(prj);
+
+ String sActiveConfig = null;
+ // Store names and detect active configuration
+ for (ICConfigurationDescription cfgDesc : cfgDescs) {
+ String s = cfgDesc.getName();
+ if (!configNames.contains(s))
+ configNames.add(s);
+ if (cfgDesc.isActive())
+ sActiveConfig = s;
+ }
+
+ // Check whether all projects have the same active configuration
+ if (bCurrentConfig) {
+ if (sCurrentConfig == null)
+ sCurrentConfig = sActiveConfig;
+ else {
+ if (!sCurrentConfig.equals(sActiveConfig))
+ bCurrentConfig = false;
+ }
+ }
+ }
+
+ List<ActionContributionItem> actions = new ArrayList<>();
+ int accel = 0;
+ for (String sName : configNames) {
+ String sDesc = null;
+ boolean commonName = true;
+ boolean commonDesc = true;
+ boolean firstProj = true;
+ for (IProject prj : projects) {
+ ICConfigurationDescription[] cfgDescs = getCfgs(prj);
+ int i = 0;
+ for (; i < cfgDescs.length; i++) {
+ if (cfgDescs[i].getName().equals(sName)) {
+ String sNewDesc = cfgDescs[i].getDescription();
+ if (sNewDesc != null && sNewDesc.length() == 0) {
+ sNewDesc = null;
+ }
+ if (commonDesc) {
+ if (firstProj) {
+ sDesc = sNewDesc;
+ firstProj = false;
+ } else if (sNewDesc == null && sDesc != null
+ || sNewDesc != null && !sNewDesc.equals(sDesc)) {
+ commonDesc = false;
+ }
+ }
+ break;
+ }
+ }
+ if (i == cfgDescs.length) {
+ commonName = false;
+ break;
+ }
+ }
+ if (commonName) {
+ StringBuffer builder = new StringBuffer(sName);
+ if (commonDesc) {
+ if (sDesc != null) {
+ builder.append(" ("); //$NON-NLS-1$
+ builder.append(sDesc);
+ builder.append(")"); //$NON-NLS-1$
+ }
+ } else {
+ builder.append(" (...)"); //$NON-NLS-1$
+ }
+
+ IAction action = new ChangeConfigAction(projects, sName, builder.toString(), accel + 1);
+ if (bCurrentConfig && sCurrentConfig != null && sCurrentConfig.equals(sName)) {
+ action.setChecked(true);
+ }
+ ActionContributionItem item = new ActionContributionItem(action);
+ actions.add(item);
+ accel++;
+ }
+ }
+ return actions.toArray(new IContributionItem[0]);
+ }
+
+ private static HashSet<IProject> findProjects() {
+ HashSet<IProject> fProjects = new LinkedHashSet<>();
+ ISelection selection = CUIPlugin.getActivePage().getSelection();
+ boolean badObject = addProjectsFromSelection(selection, fProjects);
+
+ if (badObject || fProjects.isEmpty()) {
+ // Check for lone CDT project in workspace
+ IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects();
+ if (projects != null && projects.length == 1) {
+ IProject project = projects[0];
+ if (CoreModel.getDefault().isNewStyleProject(project) && (getCfgs(project).length > 0)) {
+ fProjects.add(project);
+ }
+ }
+
+ // Check the three supported views
+ IWorkbenchPage page = CUIPlugin.getActivePage();
+ int viewCount = 0;
+ if (page != null) {
+ IViewReference theViewRef = null;
+ IViewReference viewRef = null;
+
+ theViewRef = page.findViewReference("org.eclipse.cdt.ui.CView"); //$NON-NLS-1$
+ viewCount += (theViewRef != null) ? 1 : 0;
+
+ viewRef = page.findViewReference("org.eclipse.ui.navigator.ProjectExplorer"); //$NON-NLS-1$
+ viewCount += (viewRef != null) ? 1 : 0;
+ theViewRef = (theViewRef == null) ? viewRef : theViewRef;
+
+ viewRef = page.findViewReference("org.eclipse.ui.views.ResourceNavigator"); //$NON-NLS-1$
+ viewCount += (viewRef != null) ? 1 : 0;
+ theViewRef = (theViewRef == null) ? viewRef : theViewRef;
+
+ if (theViewRef != null && viewCount == 1) {
+ IViewPart view = theViewRef.getView(false);
+ if (view != null) {
+ ISelection cdtSelection = view.getSite().getSelectionProvider().getSelection();
+ if (cdtSelection != null) {
+ if (!cdtSelection.isEmpty()) {
+ if (!cdtSelection.equals(selection)) {
+ addProjectsFromSelection(cdtSelection, fProjects);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ return fProjects;
+ }
+
+ private static boolean addProjectsFromSelection(ISelection selection, HashSet<IProject> fProjects) {
+ boolean badObject = false;
+ if (selection != null) {
+ if (selection instanceof IStructuredSelection) {
+ if (selection.isEmpty()) {
+ // could be a form editor or something. try to get the project from the active part
+ IWorkbenchPage page = CUIPlugin.getActivePage();
+ if (page != null) {
+ IWorkbenchPart part = page.getActivePart();
+ if (part != null) {
+ Object o = part.getAdapter(IResource.class);
+ if (o != null && o instanceof IResource) {
+ fProjects.add(((IResource) o).getProject());
+ }
+ }
+ }
+ }
+ Iterator<?> iter = ((IStructuredSelection) selection).iterator();
+ while (iter.hasNext()) {
+ Object selItem = iter.next();
+ IProject project = null;
+ if (selItem instanceof ICElement) {
+ ICProject cproject = ((ICElement) selItem).getCProject();
+ if (cproject != null)
+ project = cproject.getProject();
+ } else if (selItem instanceof IResource) {
+ project = ((IResource) selItem).getProject();
+ } else if (selItem instanceof IncludeRefContainer) {
+ ICProject fCProject = ((IncludeRefContainer) selItem).getCProject();
+ if (fCProject != null)
+ project = fCProject.getProject();
+ } else if (selItem instanceof IncludeReferenceProxy) {
+ IncludeRefContainer irc = ((IncludeReferenceProxy) selItem).getIncludeRefContainer();
+ if (irc != null) {
+ ICProject fCProject = irc.getCProject();
+ if (fCProject != null)
+ project = fCProject.getProject();
+ }
+ } else if (selItem instanceof IAdaptable) {
+ Object adapter = ((IAdaptable) selItem).getAdapter(IProject.class);
+ if (adapter != null && adapter instanceof IProject) {
+ project = (IProject) adapter;
+ }
+ }
+ // Check whether the project is CDT project
+ if (project != null) {
+ if (!CoreModel.getDefault().isNewStyleProject(project))
+ project = null;
+ else {
+ ICConfigurationDescription[] tmp = getCfgs(project);
+ if (tmp.length == 0)
+ project = null;
+ }
+ }
+ if (project != null) {
+ fProjects.add(project);
+ } else {
+ badObject = true;
+ break;
+ }
+ }
+ } else if (selection instanceof ITextSelection) {
+ // If a text selection check the selected part to see if we can find
+ // an editor part that we can adapt to a resource and then
+ // back to a project.
+ IWorkbenchWindow window = CUIPlugin.getActiveWorkbenchWindow();
+ if (window != null) {
+ IWorkbenchPage page = window.getActivePage();
+ if (page != null) {
+ IWorkbenchPart part = page.getActivePart();
+ if (part instanceof IEditorPart) {
+ IEditorPart epart = (IEditorPart) part;
+ IResource resource = epart.getEditorInput().getAdapter(IResource.class);
+ if (resource != null) {
+ IProject project = resource.getProject();
+ badObject = !(project != null && CoreModel.getDefault().isNewStyleProject(project));
+
+ if (!badObject) {
+ fProjects.add(project);
+ }
+ }
+ }
+ }
+ }
+
+ }
+ }
+ return badObject;
+ }
+
+ private static ICConfigurationDescription[] getCfgs(IProject prj) {
+ ICProjectDescription prjd = CoreModel.getDefault().getProjectDescription(prj, false);
+ if (prjd != null) {
+ ICConfigurationDescription[] cfgs = prjd.getConfigurations();
+ if (cfgs != null) {
+ return cfgs;
+ }
+ }
+
+ return new ICConfigurationDescription[0];
+ }
+}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/workingsets/HasManagedCdtProjectSelection.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/workingsets/HasManagedCdtProjectSelection.java
new file mode 100644
index 00000000000..cc1f4800539
--- /dev/null
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/workingsets/HasManagedCdtProjectSelection.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Simeon Andreev and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Simeon Andreev - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.internal.ui.workingsets;
+
+import java.util.Collection;
+
+import org.eclipse.cdt.ui.newui.ManageConfigSelector;
+import org.eclipse.core.expressions.PropertyTester;
+import org.eclipse.core.resources.IProject;
+
+/**
+ * Property tester for the enablement of the command handled by {@link org.eclipse.cdt.internal.ui.actions.ManageConfigsHandler}.
+ * Will evaluate {@code true} if the current selection is a managed CDT project, contains a managed CDT project, or belongs to a managed CDT project.
+ */
+public class HasManagedCdtProjectSelection extends PropertyTester {
+
+ private static final String PROPERTY_HAS_MANAGED_CDT_PROJECT_SELECTION = "hasManagedCdtProjectSelection"; //$NON-NLS-1$
+
+ @Override
+ public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
+ if (PROPERTY_HAS_MANAGED_CDT_PROJECT_SELECTION.equals(property)) {
+ boolean hasNonEmptyWorksets = hasManagedCdtProjectSelection(receiver);
+ return hasNonEmptyWorksets;
+ }
+ return false;
+ }
+
+ private static boolean hasManagedCdtProjectSelection(Object receiver) {
+ if (receiver instanceof Collection) {
+ Collection<?> selection = (Collection<?>) receiver;
+ if (!selection.isEmpty()) {
+ IProject[] obs = ManageConfigSelector.getProjects(selection.toArray());
+ return ManageConfigSelector.getManager(obs) != null;
+ }
+ }
+ return false;
+ }
+
+}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/workingsets/NonEmptyWorkingSetPropertyTester.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/workingsets/NonEmptyWorkingSetPropertyTester.java
new file mode 100644
index 00000000000..2944480388d
--- /dev/null
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/workingsets/NonEmptyWorkingSetPropertyTester.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Simeon Andreev and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Simeon Andreev - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.internal.ui.workingsets;
+
+import org.eclipse.core.expressions.PropertyTester;
+import org.eclipse.ui.IWorkingSet;
+import org.eclipse.ui.IWorkingSetManager;
+import org.eclipse.ui.PlatformUI;
+
+/**
+ * Property tester for the enablement of the command handled by {@link org.eclipse.cdt.internal.ui.actions.WorkingSetConfigHandler}.
+ * Will evaluate {@code true} if there is a non-empty working set in the workspace.
+ */
+public class NonEmptyWorkingSetPropertyTester extends PropertyTester {
+
+ private static final String PROPERTY_HAS_NON_EMPTY_WORKING_SET = "hasNonEmptyWorkingSet"; //$NON-NLS-1$
+
+ @Override
+ public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
+ if (PROPERTY_HAS_NON_EMPTY_WORKING_SET.equals(property)) {
+ boolean hasNonEmptyWorksets = hasNonEmptyWorksets();
+ return hasNonEmptyWorksets;
+ }
+ return false;
+ }
+
+ private static boolean hasNonEmptyWorksets() {
+ IWorkingSetManager workingSetManager = PlatformUI.getWorkbench().getWorkingSetManager();
+ IWorkingSet[] workingSets = workingSetManager.getWorkingSets();
+ if (workingSets != null) {
+ for (IWorkingSet workingSet : workingSets) {
+ if (!workingSet.isEmpty()) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/workingsets/WorkingSetConfigurationManager.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/workingsets/WorkingSetConfigurationManager.java
index 4d8d2ad4d51..8cb34324e4d 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/workingsets/WorkingSetConfigurationManager.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/workingsets/WorkingSetConfigurationManager.java
@@ -36,6 +36,7 @@ import org.eclipse.jface.util.PropertyChangeEvent;
import org.eclipse.ui.IMemento;
import org.eclipse.ui.IWorkingSet;
import org.eclipse.ui.IWorkingSetManager;
+import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.XMLMemento;
/**
@@ -58,7 +59,7 @@ public class WorkingSetConfigurationManager {
static final String ATTR_CONFIG = "config"; //$NON-NLS-1$
static final String ATTR_FACTORY = "factory"; //$NON-NLS-1$
- static IWorkingSetManager WS_MGR = CUIPlugin.getDefault().getWorkbench().getWorkingSetManager();
+ static IWorkingSetManager WS_MGR = PlatformUI.getWorkbench().getWorkingSetManager();
private static final WorkingSetConfigurationManager INSTANCE = new WorkingSetConfigurationManager();
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/workingsets/WorkingSetProxy.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/workingsets/WorkingSetProxy.java
index c776dcc8f93..9a813d60b68 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/workingsets/WorkingSetProxy.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/workingsets/WorkingSetProxy.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009, 2015 QNX Software Systems and others.
+ * Copyright (c) 2009, 2020 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -10,6 +10,7 @@
*
* Contributors:
* QNX Software Systems - initial API and implementation
+ * Alexander Fedorov (ArSysOp) - Bug 561993 - Remove dependency to com.ibm.icu from CDT UI
*******************************************************************************/
package org.eclipse.cdt.internal.ui.workingsets;
@@ -27,9 +28,6 @@ import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.ui.IMemento;
import org.eclipse.ui.IWorkingSet;
-import com.ibm.icu.text.UCharacterIterator;
-import com.ibm.icu.text.UForwardCharacterIterator;
-
/**
* Default implementation of the {@link IWorkingSetProxy} interface.
*
@@ -275,14 +273,7 @@ public class WorkingSetProxy implements IWorkingSetProxy {
private String getSearchKey(String configurationName) {
StringBuilder result = new StringBuilder(configurationName.length());
-
- UCharacterIterator iter = UCharacterIterator.getInstance(configurationName);
- for (int cp = iter.nextCodePoint(); cp != UForwardCharacterIterator.DONE; cp = iter.nextCodePoint()) {
- if (Character.isLetterOrDigit(cp)) {
- result.appendCodePoint(cp);
- }
- }
-
+ configurationName.codePoints().filter(Character::isLetterOrDigit).forEach(result::appendCodePoint);
return result.toString();
}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/CDTSharedImages.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/CDTSharedImages.java
index b6f535dcaff..08180632a8c 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/CDTSharedImages.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/CDTSharedImages.java
@@ -120,6 +120,8 @@ public class CDTSharedImages {
public static final String IMG_OBJS_USER = "icons/obj16/person-me.gif"; //$NON-NLS-1$
/** @since 5.6 */
public static final String IMG_OBJS_WRAP_LINE = "icons/elcl16/wrap_lines.png"; //$NON-NLS-1$
+ /** @since 7.1 */
+ public static final String IMG_OBJS_BRING_CONSOLE_TO_TOP_ON_BUILD = "icons/elcl16/bring_console_to_top_on_build.png"; //$NON-NLS-1$
public static final String IMG_OBJS_CDT_TESTING = "icons/obj16/flask.png"; //$NON-NLS-1$
public static final String IMG_OBJS_NLS_NEVER_TRANSLATE = "icons/obj16/never_translate.gif"; //$NON-NLS-1$
@@ -212,6 +214,9 @@ public class CDTSharedImages {
public static final String IMG_VIEW_PIN_ACTION_B = "icons/obj16/toolbar_pinned_b.gif"; //$NON-NLS-1$
public static final String IMG_VIEW_PIN_ACTION_MULTI = "icons/obj16/toolbar_pinned_multi.gif"; //$NON-NLS-1$
+ /** @since 7.3*/
+ public static final String IMG_OUTLINE_MARK = "icons/obj16/outline_mark.png"; //$NON-NLS-1$
+
private static SharedImagesFactory imagesFactory = new SharedImagesFactory(CUIPlugin.getDefault());
/**
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/CElementContentProvider.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/CElementContentProvider.java
index 979f4f92984..6e567e6df84 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/CElementContentProvider.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/CElementContentProvider.java
@@ -97,7 +97,7 @@ public class CElementContentProvider extends BaseCElementContentProvider
* Creates a new content provider for C elements.
*/
public CElementContentProvider(boolean provideMembers, boolean provideWorkingCopy) {
- super(provideMembers, provideWorkingCopy);
+ super(provideMembers, provideWorkingCopy, false, () -> false);
}
@Override
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/CUIPlugin.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/CUIPlugin.java
index 406e2322840..e666403002b 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/CUIPlugin.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/CUIPlugin.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2003, 2015 IBM Corporation and others.
+ * Copyright (c) 2003, 2020 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -15,11 +15,13 @@
* Anton Leherbauer (Wind River Systems)
* Jeff Johnston (Red Hat Inc.)
* Sergey Prigogin (Google)
+ * Alexander Fedorov (ArSysOp) - Bug 561993 - Remove dependency to com.ibm.icu from CDT UI
*******************************************************************************/
package org.eclipse.cdt.ui;
import java.io.IOException;
import java.net.URL;
+import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
@@ -111,8 +113,6 @@ import org.osgi.framework.BundleContext;
import org.osgi.framework.BundleException;
import org.osgi.framework.ServiceReference;
-import com.ibm.icu.text.MessageFormat;
-
/**
* @noextend This class is not intended to be subclassed by clients.
* @noinstantiate This class is not intended to be instantiated by clients.
@@ -292,7 +292,7 @@ public class CUIPlugin extends AbstractUIPlugin {
}
public static IWorkbenchWindow getActiveWorkbenchWindow() {
- return getDefault().getWorkbench().getActiveWorkbenchWindow();
+ return PlatformUI.getWorkbench().getActiveWorkbenchWindow();
}
public static IWorkbenchPage getActivePage() {
@@ -459,7 +459,7 @@ public class CUIPlugin extends AbstractUIPlugin {
* The code template context type registry for the C editor.
* @since 5.0
*/
- private ContextTypeRegistry fCodeTemplateContextTypeRegistry;
+ private ContributionContextTypeRegistry fCodeTemplateContextTypeRegistry;
/**
* The code template store for the C editor.
@@ -560,6 +560,7 @@ public class CUIPlugin extends AbstractUIPlugin {
fBuildConsoleManagers.put(contextId, manager);
manager.startup(name, contextId, iconUrl);
}
+ manager.reinitaliazeIfNecessary();
return manager;
}
@@ -805,7 +806,7 @@ public class CUIPlugin extends AbstractUIPlugin {
public static IEditorPart[] getDirtyEditors() {
Set<IEditorInput> inputs = new HashSet<>();
List<IEditorPart> result = new ArrayList<>(0);
- IWorkbench workbench = getDefault().getWorkbench();
+ IWorkbench workbench = PlatformUI.getWorkbench();
for (IWorkbenchWindow window : workbench.getWorkbenchWindows()) {
for (IWorkbenchPage page : window.getPages()) {
for (IEditorReference editorRef : page.getEditorReferences()) {
@@ -828,7 +829,7 @@ public class CUIPlugin extends AbstractUIPlugin {
*/
public static IEditorPart[] getInstanciatedEditors() {
List<IEditorPart> result = new ArrayList<>(0);
- IWorkbench workbench = getDefault().getWorkbench();
+ IWorkbench workbench = PlatformUI.getWorkbench();
IWorkbenchWindow[] windows = workbench.getWorkbenchWindows();
for (IWorkbenchWindow window : windows) {
IWorkbenchPage[] pages = window.getPages();
@@ -1093,7 +1094,7 @@ public class CUIPlugin extends AbstractUIPlugin {
if (getActiveWorkbenchShell() != null) {
return getActiveWorkbenchShell();
}
- IWorkbenchWindow[] windows = getDefault().getWorkbench().getWorkbenchWindows();
+ IWorkbenchWindow[] windows = PlatformUI.getWorkbench().getWorkbenchWindows();
return windows[0].getShell();
}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/PreferenceConstants.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/PreferenceConstants.java
index 42d615b7390..25ad5dd52e0 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/PreferenceConstants.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/PreferenceConstants.java
@@ -561,6 +561,24 @@ public class PreferenceConstants {
public final static String EDITOR_TEXT_FONT = "org.eclipse.cdt.ui.editors.textfont"; //$NON-NLS-1$
/**
+ * The symbolic font name for the C/C++ outline pragma mark or pragma region text font.
+ * @since 7.3
+ */
+ public final static String OUTLINE_MARK_TEXT_FONT = "org.eclipse.cdt.ui.outline.mark.textfont"; //$NON-NLS-1$
+
+ /**
+ * The color preference for the C/C++ outline pragma mark or pragma region text font color.
+ * @since 7.3
+ */
+ public final static String OUTLINE_MARK_TEXT_COLOR = "org.eclipse.cdt.ui.outline.mark.textcolor"; //$NON-NLS-1$
+
+ /**
+ * The color preference for the C/C++ outline pragma mark or pragma region divider color.
+ * @since 7.3
+ */
+ public final static String OUTLINE_MARK_DIVIDER_COLOR = "org.eclipse.cdt.ui.outline.mark.dividercolor"; //$NON-NLS-1$
+
+ /**
* A named preference that controls whether the cview's selection is linked to the active
* editor.
* <p>
@@ -767,6 +785,14 @@ public class PreferenceConstants {
public static final String OUTLINE_LINK_TO_EDITOR = "org.eclipse.cdt.ui.outline.linktoeditor"; //$NON-NLS-1$
/**
+ * A named preference that controls whether the Outline view should hide pragma mark directives.
+ * <p>
+ * Value is of type {@code Boolean}.
+ * @since 7.3
+ */
+ public static final String OUTLINE_HIDE_PRAGMA_MARK = "org.eclipse.cdt.ui.outline.hidePragmaMark"; //$NON-NLS-1$
+
+ /**
* A named preference that controls whether include directives should be grouped in
* the C/C++ Projects view and the Project Explorer view.
* <p>
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/actions/ChangeBuildConfigMenuAction.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/actions/ChangeBuildConfigMenuAction.java
index 06b6fea382e..aae36101f0d 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/actions/ChangeBuildConfigMenuAction.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/actions/ChangeBuildConfigMenuAction.java
@@ -30,7 +30,10 @@ import org.eclipse.ui.IWorkbenchWindowPulldownDelegate2;
/**
* Action which changes active build configuration of the current project
+ *
+ * @deprecated Replaced with menu contribution {@link org.eclipse.cdt.internal.ui.workingsets.ChangeBuildConfigContribution}.
*/
+@Deprecated(forRemoval = true)
public class ChangeBuildConfigMenuAction extends ChangeBuildConfigActionBase
implements IWorkbenchWindowPulldownDelegate2 {
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/actions/FormatAllAction.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/actions/FormatAllAction.java
index aae507d3b83..969ddd0383c 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/actions/FormatAllAction.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/actions/FormatAllAction.java
@@ -51,9 +51,8 @@ import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.MultiStatus;
-import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.OperationCanceledException;
-import org.eclipse.core.runtime.SubProgressMonitor;
+import org.eclipse.core.runtime.SubMonitor;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.dialogs.ErrorDialog;
import org.eclipse.jface.dialogs.IDialogConstants;
@@ -338,70 +337,57 @@ public class FormatAllAction extends SelectionDispatchAction {
private void doRunOnMultiple(ITranslationUnit[] tus, MultiStatus status, IProgressMonitor monitor)
throws OperationCanceledException {
- if (monitor == null) {
- monitor = new NullProgressMonitor();
- }
- monitor.setTaskName(ActionMessages.FormatAllAction_operation_description);
-
- monitor.beginTask("", tus.length * 4); //$NON-NLS-1$
- try {
- Map<String, Object> lastOptions = null;
- ICProject lastProject = null;
-
- for (int i = 0; i < tus.length; i++) {
- ITranslationUnit tu = tus[i];
- IPath path = tu.getPath();
- if (lastProject == null || lastOptions == null || !lastProject.equals(tu.getCProject())) {
- lastProject = tu.getCProject();
- lastOptions = getFomatterSettings(lastProject);
- }
-
- ILanguage language = null;
- try {
- language = tu.getLanguage();
- } catch (CoreException exc) {
- // use fallback CPP
- language = GPPLanguage.getDefault();
- }
+ SubMonitor subMonitor = SubMonitor.convert(monitor, ActionMessages.FormatAllAction_operation_description,
+ tus.length * 4);
+ Map<String, Object> lastOptions = null;
+ ICProject lastProject = null;
+
+ for (int i = 0; i < tus.length; i++) {
+ ITranslationUnit tu = tus[i];
+ IPath path = tu.getPath();
+ if (lastProject == null || lastOptions == null || !lastProject.equals(tu.getCProject())) {
+ lastProject = tu.getCProject();
+ lastOptions = getFomatterSettings(lastProject);
+ }
- // use working copy if available
- ITranslationUnit wc = CDTUITools.getWorkingCopyManager().findSharedWorkingCopy(tu);
- if (wc != null) {
- tu = wc;
- }
- lastOptions.put(DefaultCodeFormatterConstants.FORMATTER_TRANSLATION_UNIT, tu);
- lastOptions.put(DefaultCodeFormatterConstants.FORMATTER_LANGUAGE, language);
- lastOptions.put(DefaultCodeFormatterConstants.FORMATTER_CURRENT_FILE, tu.getResource());
+ ILanguage language = null;
+ try {
+ language = tu.getLanguage();
+ } catch (CoreException exc) {
+ // use fallback CPP
+ language = GPPLanguage.getDefault();
+ }
- if (monitor.isCanceled()) {
- throw new OperationCanceledException();
- }
+ // use working copy if available
+ ITranslationUnit wc = CDTUITools.getWorkingCopyManager().findSharedWorkingCopy(tu);
+ if (wc != null) {
+ tu = wc;
+ }
+ lastOptions.put(DefaultCodeFormatterConstants.FORMATTER_TRANSLATION_UNIT, tu);
+ lastOptions.put(DefaultCodeFormatterConstants.FORMATTER_LANGUAGE, language);
+ lastOptions.put(DefaultCodeFormatterConstants.FORMATTER_CURRENT_FILE, tu.getResource());
- ITextFileBufferManager manager = FileBuffers.getTextFileBufferManager();
+ ITextFileBufferManager manager = FileBuffers.getTextFileBufferManager();
+ try {
try {
- try {
- manager.connect(path, LocationKind.IFILE, new SubProgressMonitor(monitor, 1));
-
- monitor.subTask(path.makeRelative().toString());
- ITextFileBuffer fileBuffer = manager.getTextFileBuffer(path, LocationKind.IFILE);
- boolean wasDirty = fileBuffer.isDirty();
+ manager.connect(path, LocationKind.IFILE, subMonitor.split(1));
+ subMonitor.subTask(path.makeRelative().toString());
+ ITextFileBuffer fileBuffer = manager.getTextFileBuffer(path, LocationKind.IFILE);
+ boolean wasDirty = fileBuffer.isDirty();
- formatTranslationUnit(fileBuffer, lastOptions);
+ formatTranslationUnit(fileBuffer, lastOptions);
- if (fileBuffer.isDirty() && !wasDirty) {
- fileBuffer.commit(new SubProgressMonitor(monitor, 2), false);
- } else {
- monitor.worked(2);
- }
- } finally {
- manager.disconnect(path, LocationKind.IFILE, new SubProgressMonitor(monitor, 1));
+ if (fileBuffer.isDirty() && !wasDirty) {
+ fileBuffer.commit(subMonitor.split(2), false);
+ } else {
+ subMonitor.worked(2);
}
- } catch (CoreException e) {
- status.add(e.getStatus());
+ } finally {
+ manager.disconnect(path, LocationKind.IFILE, subMonitor.split(1));
}
+ } catch (CoreException e) {
+ status.add(e.getStatus());
}
- } finally {
- monitor.done();
}
}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/actions/ManageConfigsAction.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/actions/ManageConfigsAction.java
index 2027fd369fa..0a09b297c1c 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/actions/ManageConfigsAction.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/actions/ManageConfigsAction.java
@@ -28,7 +28,10 @@ import org.eclipse.ui.IWorkbenchWindowPulldownDelegate2;
/**
* Action which lets to manage (add/remove etc.) build configurations of the project.
+ *
+ * @deprecated Replaced with a command and handler {@link org.eclipse.cdt.internal.ui.actions.ManageConfigsHandler}.
*/
+@Deprecated(forRemoval = true)
public class ManageConfigsAction implements IWorkbenchWindowPulldownDelegate2, IObjectActionDelegate {
IProject[] obs = null;
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/actions/WorkingSetConfigAction.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/actions/WorkingSetConfigAction.java
index 59d21b1f794..df549077886 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/actions/WorkingSetConfigAction.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/actions/WorkingSetConfigAction.java
@@ -16,7 +16,6 @@
package org.eclipse.cdt.ui.actions;
import org.eclipse.cdt.internal.ui.workingsets.WorkingSetConfigurationDialog;
-import org.eclipse.cdt.ui.CUIPlugin;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.util.IPropertyChangeListener;
import org.eclipse.jface.util.PropertyChangeEvent;
@@ -25,12 +24,15 @@ import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.IWorkbenchWindowActionDelegate;
import org.eclipse.ui.IWorkingSet;
import org.eclipse.ui.IWorkingSetManager;
+import org.eclipse.ui.PlatformUI;
/**
+ * @deprecated Replaced with a command and handler {@link org.eclipse.cdt.internal.ui.actions.WorkingSetConfigHandler}.
*/
+@Deprecated(forRemoval = true)
public class WorkingSetConfigAction implements IWorkbenchWindowActionDelegate, IPropertyChangeListener {
- private static final IWorkingSetManager wsm = CUIPlugin.getDefault().getWorkbench().getWorkingSetManager();
+ private static final IWorkingSetManager wsm = PlatformUI.getWorkbench().getWorkingSetManager();
private boolean enabled = true;
private IWorkbenchWindow window;
private IAction action;
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/build/ToolChainPreferencePage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/build/ToolChainPreferencePage.java
index dd465d3e4a8..2713b6118c4 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/build/ToolChainPreferencePage.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/build/ToolChainPreferencePage.java
@@ -11,6 +11,7 @@
package org.eclipse.cdt.ui.build;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.List;
import org.eclipse.cdt.core.build.IToolChain;
@@ -53,7 +54,6 @@ import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.tools.templates.ui.internal.Activator;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
@@ -90,7 +90,7 @@ public class ToolChainPreferencePage extends PreferencePage implements IWorkbenc
try {
toolChains = new ArrayList<>(manager.getAllToolChains());
} catch (CoreException e) {
- Activator.log(e);
+ Platform.getLog(getClass()).log(e.getStatus());
}
}
@@ -314,8 +314,24 @@ public class ToolChainPreferencePage extends PreferencePage implements IWorkbenc
}
try {
- if (!toolChains.equals(manager.getAllToolChains())) {
- manager.setToolChainOrder(toolChains);
+ Collection<IToolChain> latestToolchains = manager.getAllToolChains();
+ if (!toolChains.equals(latestToolchains)) {
+
+ List<IToolChain> newOrderedList = new ArrayList<>();
+ for (IToolChain toolChain : toolChains) {
+ if (latestToolchains.contains(toolChain)) { //Still there? - for example: existing user defined tool chain would have been removed
+ newOrderedList.add(toolChain);
+ }
+ }
+
+ //add the remaining list at the end - for example: newly added user defined tool chains
+ for (IToolChain toolChain : latestToolchains) {
+ if (!newOrderedList.contains(toolChain)) {
+ newOrderedList.add(toolChain);
+ }
+ }
+
+ manager.setToolChainOrder(newOrderedList);
}
} catch (CoreException e) {
CUIPlugin.log(e.getStatus());
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/BinaryParserBlock.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/BinaryParserBlock.java
index 3df74d0573a..5f4a0b12ef6 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/BinaryParserBlock.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/BinaryParserBlock.java
@@ -39,10 +39,9 @@ import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IExtension;
import org.eclipse.core.runtime.IExtensionPoint;
import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.Preferences;
-import org.eclipse.core.runtime.SubProgressMonitor;
+import org.eclipse.core.runtime.SubMonitor;
import org.eclipse.jface.layout.PixelConverter;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.StructuredSelection;
@@ -116,7 +115,7 @@ public class BinaryParserBlock extends AbstractBinaryParserPage {
String[] buttonLabels = new String[] { CUIMessages.BinaryParserBlock_button_up,
CUIMessages.BinaryParserBlock_button_down };
- IListAdapter<BinaryParserConfiguration> listAdapter = new IListAdapter<BinaryParserConfiguration>() {
+ IListAdapter<BinaryParserConfiguration> listAdapter = new IListAdapter<>() {
@Override
public void customButtonPressed(ListDialogField<BinaryParserConfiguration> field, int index) {
@@ -132,8 +131,7 @@ public class BinaryParserBlock extends AbstractBinaryParserPage {
}
};
- binaryList = new CheckedListDialogField<BinaryParserConfiguration>(listAdapter, buttonLabels,
- new BinaryParserLabelProvider()) {
+ binaryList = new CheckedListDialogField<>(listAdapter, buttonLabels, new BinaryParserLabelProvider()) {
@Override
protected int getListStyle() {
@@ -225,10 +223,7 @@ public class BinaryParserBlock extends AbstractBinaryParserPage {
@Override
public void performApply(IProgressMonitor monitor) throws CoreException {
- if (monitor == null) {
- monitor = new NullProgressMonitor();
- }
- monitor.beginTask(CUIMessages.BinaryParserBlock_settingBinaryParser, 2);
+ SubMonitor subMonitor = SubMonitor.convert(monitor, CUIMessages.BinaryParserBlock_settingBinaryParser, 2);
List<BinaryParserConfiguration> parsers = binaryList.getElements();
final List<BinaryParserConfiguration> selected = new ArrayList<>(); // must do this to get proper order.
for (int i = 0; i < parsers.size(); i++) {
@@ -241,13 +236,14 @@ public class BinaryParserBlock extends AbstractBinaryParserPage {
@Override
public void execute(ICDescriptor descriptor, IProgressMonitor monitor) throws CoreException {
+ SubMonitor subMonitor = SubMonitor.convert(monitor, 2);
if (initialSelected == null || !selected.equals(initialSelected)) {
descriptor.remove(CCorePlugin.BINARY_PARSER_UNIQ_ID);
for (int i = 0; i < selected.size(); i++) {
descriptor.create(CCorePlugin.BINARY_PARSER_UNIQ_ID, selected.get(i).getID());
}
}
- monitor.worked(1);
+ subMonitor.worked(1);
// Give a chance to the contributions to save.
// We have to do it last to make sure the parser id
// is save
@@ -255,13 +251,13 @@ public class BinaryParserBlock extends AbstractBinaryParserPage {
for (int i = 0; i < selected.size(); i++) {
ICOptionPage page = getBinaryParserPage(selected.get(i).getID());
if (page != null && page.getControl() != null) {
- page.performApply(new SubProgressMonitor(monitor, 1));
+ page.performApply(subMonitor.split(1));
}
}
}
};
CCorePlugin.getDefault().getCDescriptorManager().runDescriptorOperation(getContainer().getProject(), op,
- monitor);
+ subMonitor.split(2));
} else {
if (initialSelected == null || !selected.equals(initialSelected)) {
Preferences store = getContainer().getPreferences();
@@ -269,17 +265,16 @@ public class BinaryParserBlock extends AbstractBinaryParserPage {
store.setValue(CCorePlugin.PREF_BINARY_PARSER, arrayToString(selected.toArray()));
}
}
- monitor.worked(1);
+ subMonitor.worked(1);
// Give a chance to the contributions to save.
for (int i = 0; i < selected.size(); i++) {
ICOptionPage page = getBinaryParserPage(selected.get(i).getID());
if (page != null && page.getControl() != null) {
- page.performApply(new SubProgressMonitor(monitor, 1));
+ page.performApply(subMonitor.split(1));
}
}
}
initialSelected = selected;
- monitor.done();
}
@Override
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/DialogsMessages.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/DialogsMessages.java
index 090ab133387..b68f24f65e9 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/DialogsMessages.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/DialogsMessages.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2014 Wind River Systems, Inc. and others.
+ * Copyright (c) 2007, 2020 Wind River Systems, Inc. and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -9,11 +9,12 @@
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
- * Markus Schorn - initial API and implementation
- * IBM Corporation
- * Andrew Ferguson (Symbian)
- * Sergey Prigogin (Google)
- * Marc-Andre Laperle (Ericsson)
+ * Markus Schorn - initial API and implementation
+ * IBM Corporation
+ * Andrew Ferguson (Symbian)
+ * Sergey Prigogin (Google)
+ * Marc-Andre Laperle (Ericsson)
+ * Alexander Fedorov <alexander.fedorov@arsysop.ru> - Bug 559193
*******************************************************************************/
package org.eclipse.cdt.ui.dialogs;
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/DialogsMessages.properties b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/DialogsMessages.properties
index 392029aa4df..e07ff483329 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/DialogsMessages.properties
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/DialogsMessages.properties
@@ -1,5 +1,5 @@
###############################################################################
-# Copyright (c) 2007, 2013 Wind River Systems, Inc. and others.
+# Copyright (c) 2007, 2020 Wind River Systems, Inc. and others.
#
# This program and the accompanying materials
# are made available under the terms of the Eclipse Public License 2.0
@@ -10,10 +10,11 @@
#
# Contributors:
# Markus Schorn (Wind River Systems)
-# IBM Corporation
+# IBM Corporation
# Andrew Ferguson (Symbian)
-# Sergey Prigogin (Google)
+# Sergey Prigogin (Google)
# Marc-Andre Laperle (Ericsson)
+# Alexander Fedorov <alexander.fedorov@arsysop.ru> - Bug 559193
###############################################################################
PreferenceScopeBlock_enableProjectSettings=Enable project specific settings
PreferenceScopeBlock_storeWithProject=Store settings with project
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/DocCommentOwnerBlock.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/DocCommentOwnerBlock.java
index 8102a1eaa41..154bb79face 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/DocCommentOwnerBlock.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/DocCommentOwnerBlock.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2009 Symbian Software Systems and others.
+ * Copyright (c) 2008, 2020 Symbian Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -9,16 +9,22 @@
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
- * Andrew Ferguson (Symbian) - Initial implementation
+ * Andrew Ferguson (Symbian) - Initial implementation
+ * Marco Stornelli <marco.stornelli@gmail.com> - Bug 333134
+ * Alexander Fedorov <alexander.fedorov@arsysop.ru> - ongoing support
*******************************************************************************/
package org.eclipse.cdt.ui.dialogs;
+import org.eclipse.cdt.doxygen.core.DoxygenPreferences;
+import org.eclipse.cdt.internal.core.CCoreInternals;
+import org.eclipse.cdt.internal.ui.dialogs.DocCommentOwnerArea;
import org.eclipse.cdt.internal.ui.text.doctools.DocCommentOwnerManager;
import org.eclipse.cdt.ui.text.doctools.IDocCommentOwner;
import org.eclipse.cdt.utils.ui.controls.ControlFactory;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.e4.core.contexts.EclipseContextFactory;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
@@ -29,6 +35,7 @@ import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Link;
import org.eclipse.ui.dialogs.PreferencesUtil;
+import org.osgi.framework.FrameworkUtil;
/**
* Project property page for setting documentation comment owner.
@@ -40,18 +47,28 @@ import org.eclipse.ui.dialogs.PreferencesUtil;
public class DocCommentOwnerBlock extends AbstractCOptionPage {
private static String EDITOR_PREF_PAGE_ID = "org.eclipse.cdt.ui.preferences.CEditorPreferencePage"; //$NON-NLS-1$
+ /**
+ * @deprecated will throw {@link NullPointerException} on attempt to access
+ */
+ @Deprecated
protected DocCommentOwnerComposite fDocComboComposite;
protected DocCommentOwnerManager fManager;
protected Button fCheckbox;
protected Link fLink;
+ private DocCommentOwnerArea docCommentOwnerArea;
+ private final DoxygenPreferences doxygenPreferences;
+
public DocCommentOwnerBlock() {
fManager = DocCommentOwnerManager.getInstance();
+ doxygenPreferences = EclipseContextFactory
+ .getServiceContext(FrameworkUtil.getBundle(getClass()).getBundleContext())
+ .get(DoxygenPreferences.class);
}
void handleCheckBox() {
- fDocComboComposite.setEnabled(fCheckbox.getSelection());
+ docCommentOwnerArea.setEnabled(fCheckbox.getSelection());
fLink.setVisible(!fCheckbox.getSelection());
}
@@ -86,24 +103,25 @@ public class DocCommentOwnerBlock extends AbstractCOptionPage {
String dsc = DialogsMessages.DocCommentOwnerBlock_SelectDocToolDescription;
String msg = DialogsMessages.DocCommentOwnerBlock_DocToolLabel;
-
- IDocCommentOwner prjOwner = DocCommentOwnerManager.getInstance().getCommentOwner(getProject());
- fDocComboComposite = new DocCommentOwnerComposite(pane, prjOwner, dsc, msg);
- fDocComboComposite.setLayoutData(GridDataFactory.fillDefaults().grab(true, false).span(2, 1).create());
-
- fCheckbox.setSelection(fManager.projectDefinesOwnership(getProject()));
+ IProject project = getProject();
+ docCommentOwnerArea = new DocCommentOwnerArea(pane, doxygenPreferences.metadata(), dsc, msg);
+ fCheckbox.setSelection(fManager.projectDefinesOwnership(project));
+ IDocCommentOwner prjOwner = DocCommentOwnerManager.getInstance().getCommentOwner(project);
+ docCommentOwnerArea.initialize(prjOwner, doxygenPreferences.projectStorage(project));
handleCheckBox();
}
@Override
public void performApply(IProgressMonitor monitor) throws CoreException {
+ IProject project = getProject();
if (!fCheckbox.getSelection())
- fManager.setCommentOwner(getProject(), null, true);
+ fManager.setCommentOwner(project, null, true);
else {
- IDocCommentOwner newOwner = fDocComboComposite.getSelectedDocCommentOwner();
- IProject p = getProject();
- fManager.setCommentOwner(p, newOwner, true);
+ IDocCommentOwner newOwner = docCommentOwnerArea.getSelectedDocCommentOwner();
+ fManager.setCommentOwner(project, newOwner, true);
}
+ docCommentOwnerArea.apply(doxygenPreferences.projectStorage(project));
+ CCoreInternals.savePreferences(project, true);
}
public IProject getProject() {
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/DocCommentOwnerCombo.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/DocCommentOwnerCombo.java
index 5ca135269fe..e04065edc2a 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/DocCommentOwnerCombo.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/DocCommentOwnerCombo.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2009 Symbian Software Systems and others.
+ * Copyright (c) 2008, 2020 Symbian Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -9,7 +9,9 @@
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
- * Andrew Ferguson (Symbian) - Initial implementation
+ * Andrew Ferguson (Symbian) - Initial implementation
+ * Marco Stornelli <marco.stornelli@gmail.com> - Bug 333134
+ * Alexander Fedorov <alexander.fedorov@arsysop.ru> - ongoing support
*******************************************************************************/
package org.eclipse.cdt.ui.dialogs;
@@ -30,7 +32,9 @@ import org.eclipse.swt.widgets.Composite;
*
* @noextend This class is not intended to be subclassed by clients.
* @noinstantiate This class is not intended to be instantiated by clients.
+ * @deprecated scheduled for deletion, replaced with {@link Combo}
*/
+@Deprecated
public class DocCommentOwnerCombo extends Composite {
protected Combo fCombo;
protected IDocCommentOwner fOwners[], fInitialOwner;
@@ -85,4 +89,5 @@ public class DocCommentOwnerCombo extends Composite {
public void setEnabled(boolean enabled) {
fCombo.setEnabled(enabled);
}
+
}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/DocCommentOwnerComposite.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/DocCommentOwnerComposite.java
index 044491a05df..5748c60e301 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/DocCommentOwnerComposite.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/DocCommentOwnerComposite.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2009 Symbian Software Systems and others.
+ * Copyright (c) 2008, 2020 Symbian Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -9,16 +9,25 @@
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
- * Andrew Ferguson (Symbian) - Initial implementation
+ * Andrew Ferguson (Symbian) - Initial implementation
+ * Marco Stornelli <marco.stornelli@gmail.com> - Bug 333134
+ * Alexander Fedorov <alexander.fedorov@arsysop.ru> - ongoing support
*******************************************************************************/
package org.eclipse.cdt.ui.dialogs;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.cdt.internal.ui.dialogs.DocCommentOwnerArea;
+import org.eclipse.cdt.internal.ui.text.doctools.DocCommentOwnerManager;
+import org.eclipse.cdt.internal.ui.text.doctools.NullDocCommentOwner;
import org.eclipse.cdt.ui.text.doctools.IDocCommentOwner;
import org.eclipse.cdt.utils.ui.controls.ControlFactory;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
@@ -28,14 +37,25 @@ import org.eclipse.swt.widgets.Label;
*
* @noextend This class is not intended to be subclassed by clients.
* @noinstantiate This class is not intended to be instantiated by clients.
+ * @deprecated scheduled for deletion, replaced with {@link DocCommentOwnerArea}
*/
+@Deprecated
public class DocCommentOwnerComposite extends Composite {
+ /**
+ * @deprecated will throw {@link NullPointerException} on attempt to access
+ */
+ @Deprecated
protected DocCommentOwnerCombo fDocCombo;
- protected Label desc, comboLabel;
+ protected Label desc;
+ protected Label comboLabel;
protected Group group;
+ private Combo combo;
+ private final IDocCommentOwner fOwners[];
+
public DocCommentOwnerComposite(Composite parent, IDocCommentOwner initialOwner, String description, String label) {
super(parent, SWT.NONE);
+ fOwners = getNontestOwners();
GridLayout gl = new GridLayout();
gl.marginHeight = gl.marginWidth = 0;
setLayout(gl);
@@ -52,22 +72,54 @@ public class DocCommentOwnerComposite extends Composite {
comboLabel = new Label(group, SWT.NONE);
comboLabel.setText(label);
+ combo = createCombo(group);
+ selectDocumentOwner(initialOwner, combo);
+ }
+
+ private Combo createCombo(Composite parent) {
+ String[] items = new String[fOwners.length + 1];
+ items[0] = DialogsMessages.DocCommentOwnerCombo_None;
+ for (int i = 0; i < fOwners.length; i++) {
+ items[i + 1] = fOwners[i].getName();
+ }
+ Combo created = ControlFactory.createSelectCombo(parent, items, DialogsMessages.DocCommentOwnerCombo_None);
+ return created;
+ }
+
+ private void selectDocumentOwner(IDocCommentOwner owner, Combo created) {
+ for (int i = 0; i < fOwners.length; i++) {
+ if (fOwners[i].getID().equals(owner.getID())) {
+ created.select(i + 1);
+ return;
+ }
+ }
+ created.select(0);
+ }
- fDocCombo = new DocCommentOwnerCombo(group, SWT.NONE, initialOwner) {
- };
- gd = GridDataFactory.fillDefaults().grab(true, false).create();
- fDocCombo.setLayoutData(gd);
+ /**
+ * @return the array of registered doc-comment owners, filtering out those from the
+ * test plug-in.
+ */
+ private IDocCommentOwner[] getNontestOwners() {
+ List<IDocCommentOwner> result = new ArrayList<>();
+ for (IDocCommentOwner owner : DocCommentOwnerManager.getInstance().getRegisteredOwners()) {
+ if (owner.getID().indexOf(".test.") == -1) //$NON-NLS-1$
+ result.add(owner);
+ }
+ return result.toArray(new IDocCommentOwner[result.size()]);
}
public IDocCommentOwner getSelectedDocCommentOwner() {
- return fDocCombo.getSelectedDocCommentOwner();
+ int index = combo.getSelectionIndex();
+ return index == 0 ? NullDocCommentOwner.INSTANCE : fOwners[index - 1];
}
@Override
public void setEnabled(boolean enabled) {
desc.setEnabled(enabled);
comboLabel.setEnabled(enabled);
- fDocCombo.setEnabled(enabled);
+ combo.setEnabled(enabled);
group.setEnabled(enabled);
}
+
}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/IndexerBlock.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/IndexerBlock.java
index dd7cf4c4bf3..76ece74bec1 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/IndexerBlock.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/IndexerBlock.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2005, 2013 IBM Corporation and others.
+ * Copyright (c) 2005, 2020 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -11,9 +11,11 @@
* Contributors:
* IBM - Initial API and implementation
* Markus Schorn (Wind River Systems)
+ * Alexander Fedorov (ArSysOp) - Bug 561993 - Remove dependency to com.ibm.icu from CDT UI
*******************************************************************************/
package org.eclipse.cdt.ui.dialogs;
+import java.text.Collator;
import java.util.Arrays;
import java.util.Comparator;
import java.util.HashMap;
@@ -52,8 +54,6 @@ import org.eclipse.ui.IPluginContribution;
import org.eclipse.ui.activities.WorkbenchActivityHelper;
import org.eclipse.ui.dialogs.PropertyPage;
-import com.ibm.icu.text.Collator;
-
/**
* This <code>IndexerBlock</code> is used in the <code>MakeProjectWizardOptionPage</code> and
* the <code>NewManagedProjectOptionPage</code> to display the indexer options during the creation of
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/ReferenceBlock.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/ReferenceBlock.java
index 08275cb8469..32d30c340df 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/ReferenceBlock.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/ReferenceBlock.java
@@ -24,8 +24,7 @@ import org.eclipse.core.resources.IWorkspace;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.SubProgressMonitor;
+import org.eclipse.core.runtime.SubMonitor;
import org.eclipse.jface.viewers.CheckboxTableViewer;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.swt.SWT;
@@ -168,18 +167,11 @@ public class ReferenceBlock extends AbstractCOptionPage {
IProject[] refProjects = getReferencedProjects();
if (refProjects != null) {
IProject project = getContainer().getProject();
- if (monitor == null) {
- monitor = new NullProgressMonitor();
- }
- monitor.beginTask(CUIMessages.ReferenceBlock_task_ReferenceProjects, 1);
- try {
- IProjectDescription description = project.getDescription();
- description.setReferencedProjects(refProjects);
- project.setDescription(description, new SubProgressMonitor(monitor, 1));
- } catch (CoreException e) {
- }
+ SubMonitor subMonitor = SubMonitor.convert(monitor, CUIMessages.ReferenceBlock_task_ReferenceProjects, 1);
+ IProjectDescription description = project.getDescription();
+ description.setReferencedProjects(refProjects);
+ project.setDescription(description, subMonitor.split(1));
}
-
}
@Override
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/RegexErrorParserOptionPage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/RegexErrorParserOptionPage.java
index 3dc2feb0415..f8ab35a0e86 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/RegexErrorParserOptionPage.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/RegexErrorParserOptionPage.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009, 2013 Andrew Gvozdev and others.
+ * Copyright (c) 2009, 2020 Andrew Gvozdev and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -11,10 +11,12 @@
* Contributors:
* Andrew Gvozdev - Initial API and implementation
* IBM Corporation
+ * Alexander Fedorov (ArSysOp) - Bug 561993 - Remove dependency to com.ibm.icu from CDT UI
*******************************************************************************/
package org.eclipse.cdt.ui.dialogs;
+import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.List;
@@ -69,8 +71,6 @@ import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.dialogs.PreferencesUtil;
import org.eclipse.ui.fieldassist.ContentAssistCommandAdapter;
-import com.ibm.icu.text.MessageFormat;
-
/**
* Options page for RegexErrorParser in Error Parsers Tab of properties/preferences.
*
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/TabFolderOptionBlock.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/TabFolderOptionBlock.java
index 3f9d4e10a4d..d564a8c2473 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/TabFolderOptionBlock.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/TabFolderOptionBlock.java
@@ -22,10 +22,11 @@ import org.eclipse.cdt.ui.CUIPlugin;
import org.eclipse.cdt.utils.ui.controls.TabFolderLayout;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.SubProgressMonitor;
+import org.eclipse.core.runtime.SubMonitor;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CTabFolder;
+import org.eclipse.swt.custom.CTabItem;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Image;
@@ -34,7 +35,6 @@ import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.TabFolder;
import org.eclipse.swt.widgets.TabItem;
public abstract class TabFolderOptionBlock {
@@ -50,7 +50,7 @@ public abstract class TabFolderOptionBlock {
protected ICOptionContainer fParent;
private ICOptionPage fCurrentPage;
- private TabFolder fFolder;
+ private CTabFolder fFolder;
public TabFolderOptionBlock(boolean showMessageArea) {
bShowMessageArea = showMessageArea;
@@ -117,7 +117,7 @@ public abstract class TabFolderOptionBlock {
}
protected void createFolder(Composite parent) {
- fFolder = new TabFolder(parent, SWT.NONE);
+ fFolder = new CTabFolder(parent, SWT.NONE);
fFolder.setLayoutData(new GridData(GridData.FILL_BOTH));
fFolder.setLayout(new TabFolderLayout());
@@ -134,7 +134,7 @@ public abstract class TabFolderOptionBlock {
}
protected void addTab(ICOptionPage tab) {
- TabItem item = new TabItem(fFolder, SWT.NONE);
+ CTabItem item = new CTabItem(fFolder, SWT.NONE);
item.setText(tab.getTitle());
Image img = tab.getImage();
if (img != null)
@@ -144,6 +144,9 @@ public abstract class TabFolderOptionBlock {
tab.createControl(item.getParent());
item.setControl(tab.getControl());
addOptionPage(tab);
+ if (fFolder.getSelection() == null) {
+ fFolder.setSelection(item);
+ }
}
abstract protected void addTabs();
@@ -151,24 +154,17 @@ public abstract class TabFolderOptionBlock {
public boolean performApply(IProgressMonitor monitor) {
if (initializingTabs)
return false;
- if (monitor == null) {
- monitor = new NullProgressMonitor();
- }
- monitor.beginTask("", pages.size()); //$NON-NLS-1$
- try {
- Iterator<ICOptionPage> iter = pages.iterator();
- while (iter.hasNext()) {
- ICOptionPage tab = iter.next();
- try {
- tab.performApply(new SubProgressMonitor(monitor, 1));
- } catch (CoreException e) {
- CUIPlugin.errorDialog(composite.getShell(), CUIMessages.TabFolderOptionBlock_error,
- CUIMessages.TabFolderOptionBlock_error_settingOptions, e, true);
- return false;
- }
+ SubMonitor subMonitor = SubMonitor.convert(monitor, pages.size());
+ Iterator<ICOptionPage> iter = pages.iterator();
+ while (iter.hasNext()) {
+ ICOptionPage tab = iter.next();
+ try {
+ tab.performApply(subMonitor.split(1));
+ } catch (CoreException e) {
+ CUIPlugin.errorDialog(composite.getShell(), CUIMessages.TabFolderOptionBlock_error,
+ CUIMessages.TabFolderOptionBlock_error_settingOptions, e, true);
+ return false;
}
- } finally {
- monitor.done();
}
return true;
}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/AbstractCPropertyTab.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/AbstractCPropertyTab.java
index 380a73cf3de..47fb72c7b4f 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/AbstractCPropertyTab.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/AbstractCPropertyTab.java
@@ -378,6 +378,16 @@ public abstract class AbstractCPropertyTab implements ICPropertyTab {
return g;
}
+ /**
+ * @since 7.2
+ */
+ protected Composite setupComposite(Composite c, int cols, int mode) {
+ Composite c1 = new Composite(c, SWT.NONE);
+ c1.setLayout(new GridLayout(cols, false));
+ setupControl(c1, 1, mode);
+ return c1;
+ }
+
protected Button setupCheck(Composite c, String name, int span, int mode) {
Button b = new Button(c, SWT.CHECK);
b.setText(name);
@@ -393,6 +403,23 @@ public abstract class AbstractCPropertyTab implements ICPropertyTab {
}
/**
+ * @since 7.2
+ */
+ protected Button setupRadio(Composite c, String name, int span, int mode) {
+ Button b = new Button(c, SWT.RADIO);
+ b.setText(name);
+ setupControl(b, span, mode);
+ b.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent event) {
+ ((Button) event.widget).setGrayed(false);
+ checkPressed(event);
+ }
+ });
+ return b;
+ }
+
+ /**
* Selection handler for checkbox created
* by methods "setupCheck()" or "setupTri()"
* Descendants should override this method
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/AbstractPage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/AbstractPage.java
index 8de06a776fd..cbb6e1d1055 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/AbstractPage.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/AbstractPage.java
@@ -21,7 +21,6 @@ package org.eclipse.cdt.ui.newui;
import java.io.File;
import java.lang.reflect.InvocationTargetException;
-import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@@ -151,7 +150,7 @@ public abstract class AbstractPage extends PropertyPage implements IPreferencePa
private static final String PREF_ASK_REINDEX = "askReindex"; //$NON-NLS-1$
- private Map<URL, Image> loadedIcons = new HashMap<>();
+ private List<Image> loadedIcons = new ArrayList<>();
private static Map<Class<? extends AbstractPage>, Class<? extends ICPropertyTab>> recentTabs = new HashMap<>();
private final Image IMG_WARN = CDTSharedImages.getImage(CDTSharedImages.IMG_OBJS_REFACTORING_WARNING);
@@ -168,20 +167,60 @@ public abstract class AbstractPage extends PropertyPage implements IPreferencePa
/*
* Bookeeping variables
*/
+ /**
+ * @deprecated This field was never meant to be API. This field will be made private.
+ */
+ @Deprecated(forRemoval = true)
protected boolean noContentOnPage = false;
+ /**
+ * @deprecated This field was never meant to be API. This field will be made private.
+ */
+ @Deprecated(forRemoval = true)
protected boolean displayedConfig = false;
+ /**
+ * @deprecated This field was never meant to be API. This field will be made private.
+ */
+ @Deprecated(forRemoval = true)
protected IResource internalElement = null;
+ /**
+ * @deprecated This field was never meant to be API. This field will be made private.
+ */
+ @Deprecated(forRemoval = true)
protected boolean isProject = false;
+ /**
+ * @deprecated This field was never meant to be API. This field will be made private.
+ */
+ @Deprecated(forRemoval = true)
protected boolean isFolder = false;
+ /**
+ * @deprecated This field was never meant to be API. This field will be made private.
+ */
+ @Deprecated(forRemoval = true)
protected boolean isFile = false;
// tabs
+ /**
+ * @deprecated This field was never meant to be API. This field will be made private.
+ */
+ @Deprecated(forRemoval = true)
protected TabFolder folder;
+ /**
+ * @deprecated This field was never meant to be API. This field will be made private.
+ */
+ @Deprecated(forRemoval = true)
protected ArrayList<InternalTab> itabs = new ArrayList<>();
+ /**
+ * @deprecated This field was never meant to be API. This field will be made private.
+ */
+ @Deprecated(forRemoval = true)
protected ICPropertyTab currentTab;
private static boolean isNewOpening = true;
+ /**
+ * @deprecated This class was never meant to be API. This class will be made private.
+ */
+ @Deprecated(forRemoval = true)
protected class InternalTab {
Composite comp;
String text;
@@ -567,7 +606,7 @@ public abstract class AbstractPage extends PropertyPage implements IPreferencePa
* which do not share ICProjectDescription instance.
* But some changes may be saved wrong if they are affected
* by data from another property pages (Discovery options etc).
-
+ *
* To enable 2nd mode, just create the following file:
* <workspace>/.metadata/.plugins/org.eclipse.cdt.ui/apply_mode
*/
@@ -1052,7 +1091,7 @@ public abstract class AbstractPage extends PropertyPage implements IPreferencePa
if (displayedConfig)
forEach(ICPropertyTab.DISPOSE);
// Dispose any loaded images
- for (Image img : loadedIcons.values())
+ for (Image img : loadedIcons)
img.dispose();
loadedIcons.clear();
@@ -1196,7 +1235,6 @@ public abstract class AbstractPage extends PropertyPage implements IPreferencePa
private Image getIcon(IConfigurationElement config) {
ImageDescriptor idesc = null;
- URL url = null;
String iconName = config.getAttribute(IMAGE_NAME);
if (iconName != null) {
idesc = ResourceLocator.imageDescriptorFromBundle(
@@ -1206,7 +1244,7 @@ public abstract class AbstractPage extends PropertyPage implements IPreferencePa
if (idesc == null)
return null;
Image img = idesc.createImage();
- loadedIcons.put(url, img);
+ loadedIcons.add(img);
return img;
}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/CLocationTab.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/CLocationTab.java
index 79569eba077..fc74fdf3f4d 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/CLocationTab.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/CLocationTab.java
@@ -19,6 +19,7 @@ import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
+import java.util.Optional;
import java.util.Set;
import org.eclipse.cdt.core.model.ICProject;
@@ -45,6 +46,8 @@ import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.viewers.ViewerFilter;
import org.eclipse.jface.window.Window;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.MouseAdapter;
+import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Image;
@@ -144,6 +147,15 @@ public abstract class CLocationTab extends AbstractCPropertyTab {
updateButtons();
}
});
+ tree.getTree().addMouseListener(new MouseAdapter() {
+ @Override
+ public void mouseDoubleClick(MouseEvent e) {
+ TreeItem[] sel = tree.getTree().getSelection();
+ Optional<_Entry> entry = getSelectedEntry(sel);
+ if (entry.isPresent())
+ handleEditEntry(entry.get());
+ }
+ });
initButtons(new String[] { Messages.CLocationTab_4, Messages.CLocationTab_5, Messages.CLocationTab_6,
Messages.CLocationTab_7 }, 150);
@@ -237,25 +249,9 @@ public abstract class CLocationTab extends AbstractCPropertyTab {
break;
// edit filter
case 2:
- if (sel.length == 0)
- return;
- Object data = sel[0].getData();
- _Entry entry = null;
- if (data instanceof _Entry)
- entry = (_Entry) data;
- else if (data instanceof _Filter)
- entry = ((_Filter) data).entry;
- else
- return;
- ExPatternDialog dialog = new ExPatternDialog(usercomp.getShell(), entry.ent.getExclusionPatterns(),
- entry.getPath(), page.getProject());
- if (dialog.open() == Window.OK) {
- IPath[] ps = dialog.getExclusionPattern();
- IPath path = entry.getPath();
- boolean isWsp = entry.ent.isValueWorkspacePath();
- entry.ent = newEntry(path, ps, isWsp);
- saveData();
- }
+ Optional<_Entry> entry = getSelectedEntry(sel);
+ if (entry.isPresent())
+ handleEditEntry(entry.get());
break;
case 3:
if (sel.length == 0)
@@ -271,6 +267,31 @@ public abstract class CLocationTab extends AbstractCPropertyTab {
}
}
+ private void handleEditEntry(_Entry entry) {
+ ExPatternDialog dialog = new ExPatternDialog(usercomp.getShell(), entry.ent.getExclusionPatterns(),
+ entry.getPath(), page.getProject());
+ if (dialog.open() == Window.OK) {
+ IPath[] ps = dialog.getExclusionPattern();
+ IPath path = entry.getPath();
+ boolean isWsp = entry.ent.isValueWorkspacePath();
+ entry.ent = newEntry(path, ps, isWsp);
+ saveData();
+ }
+ }
+
+ private Optional<_Entry> getSelectedEntry(TreeItem[] sel) {
+ if (sel.length == 0)
+ return Optional.empty();
+ Object data = sel[0].getData();
+ _Entry entry = null;
+ if (data instanceof _Entry)
+ entry = (_Entry) data;
+ else if (data instanceof _Filter)
+ entry = ((_Filter) data).entry;
+
+ return Optional.ofNullable(entry);
+ }
+
private void saveData() {
ICExclusionPatternPathEntry[] p = new ICExclusionPatternPathEntry[src.size()];
Iterator<_Entry> it = src.iterator();
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/ErrorParsTab.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/ErrorParsTab.java
index 86c060992f0..55eb16b9460 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/ErrorParsTab.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/ErrorParsTab.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2012 Intel Corporation and others.
+ * Copyright (c) 2007, 2020 Intel Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -11,9 +11,11 @@
* Contributors:
* Intel Corporation - Initial API and implementation
* Andrew Gvozdev (Quoin Inc.) - Regular expression error parsers
+ * Alexander Fedorov (ArSysOp) - Bug 561993 - Remove dependency to com.ibm.icu from CDT UI
*******************************************************************************/
package org.eclipse.cdt.ui.newui;
+import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
@@ -71,8 +73,6 @@ import org.eclipse.swt.widgets.TableItem;
import org.eclipse.ui.PlatformUI;
import org.osgi.service.prefs.BackingStoreException;
-import com.ibm.icu.text.MessageFormat;
-
/**
* This class represents Error Parser Tab in Project Properties or workspace Preferences
*
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/UIMessages.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/UIMessages.java
index acf675a8309..8b36ff7bc74 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/UIMessages.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/UIMessages.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004, 2013 IBM Corporation and others.
+ * Copyright (c) 2004, 2020 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -10,14 +10,14 @@
*
* Contributors:
* IBM - Initial API and implementation
+ * Alexander Fedorov (ArSysOp) - Bug 561993 - Remove dependency to com.ibm.icu from CDT UI
*******************************************************************************/
package org.eclipse.cdt.ui.newui;
+import java.text.MessageFormat;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
-import com.ibm.icu.text.MessageFormat;
-
/**
* @since 2.0
* @noextend This class is not intended to be subclassed by clients.
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/CSourceViewerConfiguration.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/CSourceViewerConfiguration.java
index 92bcd24665b..d9ca015a9a4 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/CSourceViewerConfiguration.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/CSourceViewerConfiguration.java
@@ -497,14 +497,18 @@ public class CSourceViewerConfiguration extends TextSourceViewerConfiguration {
public IAutoEditStrategy[] getAutoEditStrategies(ISourceViewer sourceViewer, String contentType) {
String partitioning = getConfiguredDocumentPartitioning(sourceViewer);
- IDocCommentOwner owner = DocCommentOwnerManager.getInstance().getCommentOwner(getProject());
- IAutoEditStrategy single = owner.getSinglelineConfiguration().createAutoEditStrategy();
- IAutoEditStrategy multi = owner.getMultilineConfiguration().createAutoEditStrategy();
+ IProject project = getProject();
+ ICProject cProject = getCProject();
+ IDocCommentOwner owner = DocCommentOwnerManager.getInstance().getCommentOwner(project);
+ ICProject projectDefiningOwnership = project != null
+ && DocCommentOwnerManager.getInstance().projectDefinesOwnership(project) ? cProject : null;
+ IAutoEditStrategy single = owner.getSinglelineConfiguration().createAutoEditStrategy(projectDefiningOwnership);
+ IAutoEditStrategy multi = owner.getMultilineConfiguration().createAutoEditStrategy(projectDefiningOwnership);
IAutoEditStrategy[] NONE = new IAutoEditStrategy[0];
if (ICPartitions.C_MULTI_LINE_COMMENT.equals(contentType))
- return new IAutoEditStrategy[] { new DefaultMultilineCommentAutoEditStrategy(getCProject()) };
+ return new IAutoEditStrategy[] { new DefaultMultilineCommentAutoEditStrategy(cProject) };
if (ICPartitions.C_SINGLE_LINE_DOC_COMMENT.equals(contentType))
return single != null ? new IAutoEditStrategy[] { single } : NONE;
else if (ICPartitions.C_MULTI_LINE_DOC_COMMENT.equals(contentType))
@@ -512,9 +516,9 @@ public class CSourceViewerConfiguration extends TextSourceViewerConfiguration {
else if (ICPartitions.C_STRING.equals(contentType))
return new IAutoEditStrategy[] {
/*new SmartSemicolonAutoEditStrategy(partitioning),*/ new CStringAutoIndentStrategy(partitioning,
- getCProject()) };
+ cProject) };
else
- return new IAutoEditStrategy[] { new CAutoIndentStrategy(partitioning, getCProject()) };
+ return new IAutoEditStrategy[] { new CAutoIndentStrategy(partitioning, cProject) };
}
/**
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/doctools/DefaultMultilineCommentAutoEditStrategy.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/doctools/DefaultMultilineCommentAutoEditStrategy.java
index 1ccfec16c52..02f3ab6bba8 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/doctools/DefaultMultilineCommentAutoEditStrategy.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/doctools/DefaultMultilineCommentAutoEditStrategy.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2015 Symbian Software Systems and others.
+ * Copyright (c) 2008, 2020 Symbian Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -11,12 +11,15 @@
* Contributors:
* Andrew Ferguson (Symbian) - Initial implementation
* Anton Leherbauer (Wind River Systems)
+ * Marco Stornelli <marco.stornelli@gmail.com> - Bug 333134
+ * Alexander Fedorov <alexander.fedorov@arsysop.ru> - Bug 333134
*******************************************************************************/
package org.eclipse.cdt.ui.text.doctools;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.StringReader;
+import java.util.Optional;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.dom.ast.ASTVisitor;
@@ -24,7 +27,9 @@ import org.eclipse.cdt.core.dom.ast.IASTDeclaration;
import org.eclipse.cdt.core.dom.ast.IASTNode;
import org.eclipse.cdt.core.dom.ast.IASTNodeLocation;
import org.eclipse.cdt.core.dom.ast.IASTNodeSelector;
+import org.eclipse.cdt.core.dom.ast.IASTPreprocessorMacroDefinition;
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTNamespaceDefinition;
import org.eclipse.cdt.core.formatter.DefaultCodeFormatterConstants;
import org.eclipse.cdt.core.index.IIndex;
import org.eclipse.cdt.core.model.CModelException;
@@ -33,6 +38,7 @@ import org.eclipse.cdt.core.model.ITranslationUnit;
import org.eclipse.cdt.ui.CUIPlugin;
import org.eclipse.cdt.ui.IWorkingCopyManager;
import org.eclipse.cdt.ui.text.ICPartitions;
+import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.DocumentCommand;
@@ -64,6 +70,14 @@ public class DefaultMultilineCommentAutoEditStrategy implements IAutoEditStrateg
private static String fgDefaultLineDelim = "\n"; //$NON-NLS-1$
private ICProject fProject;
+ /**
+ * @since 6.7
+ */
+ public interface IDocCustomizer {
+ StringBuilder customizeForDeclaration(IDocument doc, IASTNode dec, ITypedRegion region,
+ CustomizeOptions options);
+ }
+
public DefaultMultilineCommentAutoEditStrategy() {
this(null);
}
@@ -76,6 +90,18 @@ public class DefaultMultilineCommentAutoEditStrategy implements IAutoEditStrateg
}
/**
+ * Return the project (if any) associated with this strategy
+ * @return A project or empty optional if no project is associated
+ * @since 6.7
+ */
+ protected Optional<IProject> getProject() {
+ if (fProject != null) {
+ return Optional.of(fProject.getProject());
+ }
+ return Optional.empty();
+ }
+
+ /**
* Check if edit strategy is enabled
* @return True if enabled, false otherwise
* @since 6.6
@@ -183,7 +209,7 @@ public class DefaultMultilineCommentAutoEditStrategy implements IAutoEditStrateg
buf.append(lineDelim);
// as we are auto-closing, the comment becomes eligible for auto-doc'ing
- IASTDeclaration dec = null;
+ IASTNode dec = null;
IIndex index = null;
ITranslationUnit unit = getTranslationUnitForActiveEditor();
if (unit != null) {
@@ -197,22 +223,49 @@ public class DefaultMultilineCommentAutoEditStrategy implements IAutoEditStrateg
try {
IASTTranslationUnit ast = getAST(unit, index);
- if (ast != null) {
- dec = findFollowingDeclaration(ast, offset);
- if (dec == null) {
- IASTNodeSelector ans = ast.getNodeSelector(ast.getFilePath());
- IASTNode node = ans.findEnclosingNode(offset, 0);
- if (node instanceof IASTDeclaration) {
- dec = (IASTDeclaration) node;
+ if (this instanceof IDocCustomizer) {
+ if (ast != null) {
+ dec = findNextDocumentNode(ast, offset);
+ if (dec == null) {
+ IASTNodeSelector ans = ast.getNodeSelector(ast.getFilePath());
+ IASTNode node = ans.findEnclosingNode(offset, 0);
+ if (node instanceof IASTDeclaration) {
+ dec = node;
+ }
}
}
- }
- if (dec != null) {
- ITypedRegion partition = TextUtilities.getPartition(doc,
- ICPartitions.C_PARTITIONING /* this! */, offset, false);
- StringBuilder content = customizeAfterNewLineForDeclaration(doc, dec, partition);
- buf.append(indent(content, indentation + MULTILINE_MID, lineDelim));
+ if (dec != null) {
+ ITypedRegion partition = TextUtilities.getPartition(doc,
+ ICPartitions.C_PARTITIONING /* this! */, offset, false);
+ StringBuilder content = null;
+ IDocCustomizer customizer = (IDocCustomizer) this;
+ CustomizeOptions options = new CustomizeOptions();
+ content = customizer.customizeForDeclaration(doc, dec, partition, options);
+ if (!options.addNewLine) {
+ buf.setLength(buf.length() - MULTILINE_MID.length() - lineDelim.length());
+ }
+ buf.append(indent(content, indentation + MULTILINE_MID, lineDelim));
+ }
+ } else {
+ if (ast != null) {
+ dec = findFollowingDeclaration(ast, offset);
+ if (dec == null) {
+ IASTNodeSelector ans = ast.getNodeSelector(ast.getFilePath());
+ IASTNode node = ans.findEnclosingNode(offset, 0);
+ if (node instanceof IASTDeclaration) {
+ dec = node;
+ }
+ }
+ }
+
+ if (dec != null) {
+ ITypedRegion partition = TextUtilities.getPartition(doc,
+ ICPartitions.C_PARTITIONING /* this! */, offset, false);
+ StringBuilder content = null;
+ content = customizeAfterNewLineForDeclaration(doc, (IASTDeclaration) dec, partition);
+ buf.append(indent(content, indentation + MULTILINE_MID, lineDelim));
+ }
}
} finally {
if (index != null) {
@@ -233,6 +286,28 @@ public class DefaultMultilineCommentAutoEditStrategy implements IAutoEditStrateg
}
}
+ /**
+ * Options set by IDocCustomize
+ * @since 6.7
+ */
+ public static class CustomizeOptions {
+ /**
+ * Child of IDocCustomize can decide to add a new line
+ * before their comment body or not. By default a new
+ * line is added.
+ */
+ public boolean addNewLine;
+
+ public CustomizeOptions() {
+ addNewLine = true;
+ }
+ }
+
+ /**
+ * @deprecated This class is deprecated, clients should implement IDocCustomizer
+ * interface instead.
+ */
+ @Deprecated
protected StringBuilder customizeAfterNewLineForDeclaration(IDocument doc, IASTDeclaration dec,
ITypedRegion region) {
return new StringBuilder();
@@ -242,56 +317,115 @@ public class DefaultMultilineCommentAutoEditStrategy implements IAutoEditStrateg
* Utilities
*/
- /**
- * Locates the {@link IASTDeclaration} most immediately following the specified offset
- * @param unit the translation unit, or null (in which case the result will also be null)
- * @param offset the offset to begin the search from
- * @return the {@link IASTDeclaration} most immediately following the specified offset, or null if there
- * is no {@link IASTDeclaration}
- */
- public static IASTDeclaration findFollowingDeclaration(IASTTranslationUnit unit, final int offset) {
- final IASTDeclaration[] dec = new IASTDeclaration[1];
- final ASTVisitor av = new ASTVisitor() {
- {
- shouldVisitTranslationUnit = true;
- shouldVisitDeclarations = true;
- }
+ private static class SearchVisitor extends ASTVisitor {
- /**
- * Holds the
- */
- IASTDeclaration stopWhenLeaving;
-
- @Override
- public int visit(IASTDeclaration declaration) {
- IASTNodeLocation loc = declaration.getFileLocation();
- if (loc != null) {
- int candidateOffset = loc.getNodeOffset();
- int candidateEndOffset = candidateOffset + loc.getNodeLength();
-
- if (offset <= candidateOffset) {
- dec[0] = declaration;
- return PROCESS_ABORT;
- }
+ public SearchVisitor(int offset) {
+ shouldVisitTranslationUnit = true;
+ shouldVisitDeclarations = true;
+ shouldVisitNamespaces = true;
+ this.offset = offset;
+ }
- boolean candidateEnclosesOffset = (offset >= candidateOffset) && (offset < candidateEndOffset);
- if (candidateEnclosesOffset) {
- stopWhenLeaving = declaration;
- }
+ private int nearestOffset = Integer.MAX_VALUE;
+ private int offset;
+ private IASTDeclaration target;
+
+ public int getNearest() {
+ return nearestOffset;
+ }
+
+ public IASTDeclaration getTarget() {
+ return target;
+ }
+
+ @Override
+ public int visit(ICPPASTNamespaceDefinition namespace) {
+ IASTNodeLocation loc = namespace.getFileLocation();
+ if (loc != null) {
+ int candidateOffset = loc.getNodeOffset();
+ if (offset <= candidateOffset && candidateOffset <= nearestOffset) {
+ nearestOffset = candidateOffset;
+ target = namespace;
+ return PROCESS_ABORT;
}
- return PROCESS_CONTINUE;
}
+ return PROCESS_CONTINUE;
+ }
- @Override
- public int leave(IASTDeclaration declaration) {
- if (declaration == stopWhenLeaving)
+ /**
+ * Holds the
+ */
+ IASTDeclaration stopWhenLeaving;
+
+ @Override
+ public int visit(IASTDeclaration declaration) {
+ IASTNodeLocation loc = declaration.getFileLocation();
+ if (loc != null) {
+ int candidateOffset = loc.getNodeOffset();
+ int candidateEndOffset = candidateOffset + loc.getNodeLength();
+
+ if (offset <= candidateOffset && candidateOffset <= nearestOffset) {
+ nearestOffset = candidateOffset;
+ target = declaration;
return PROCESS_ABORT;
- return PROCESS_CONTINUE;
+ }
+
+ boolean candidateEnclosesOffset = (offset >= candidateOffset) && (offset < candidateEndOffset);
+ if (candidateEnclosesOffset) {
+ stopWhenLeaving = declaration;
+ }
+ }
+ return PROCESS_CONTINUE;
+ }
+
+ @Override
+ public int leave(IASTDeclaration declaration) {
+ if (declaration == stopWhenLeaving)
+ return PROCESS_ABORT;
+ return PROCESS_CONTINUE;
+ }
+ }
+
+ /**
+ * Locates the {@link IASTNode} most immediately following the specified offset
+ * @param unit the translation unit, or null (in which case the result will also be null)
+ * @param offset the offset to begin the search from
+ * @return the {@link IASTNode} most immediately following the specified offset, or null if there
+ * is no node suitable for documentation, i.e. a declaration or a macro definition
+ * @since 6.7
+ */
+ public static IASTNode findNextDocumentNode(IASTTranslationUnit unit, final int offset) {
+ IASTNode bestNode = null;
+ if (unit != null) {
+ IASTPreprocessorMacroDefinition[] macros = unit.getMacroDefinitions();
+ SearchVisitor av = new SearchVisitor(offset);
+ unit.accept(av);
+ int nearest = av.getNearest();
+ bestNode = av.getTarget();
+ for (IASTPreprocessorMacroDefinition m : macros) {
+ if (m.getExpansionLocation() != null && m.getExpansionLocation().getNodeOffset() < nearest
+ && offset <= m.getExpansionLocation().getNodeOffset()) {
+ bestNode = m;
+ nearest = m.getExpansionLocation().getNodeOffset();
+ }
}
- };
+ }
+ return bestNode;
+ }
+ /**
+ * Locates the {@link IASTDeclaration} most immediately following the specified offset
+ * @param unit the translation unit, or null (in which case the result will also be null)
+ * @param offset the offset to begin the search from
+ * @return the {@link IASTDeclaration} most immediately following the specified offset, or null if there
+ * is no {@link IASTDeclaration}
+ */
+ public static IASTDeclaration findFollowingDeclaration(IASTTranslationUnit unit, final int offset) {
+ IASTDeclaration[] dec = new IASTDeclaration[1];
if (unit != null) {
+ SearchVisitor av = new SearchVisitor(offset);
unit.accept(av);
+ dec[0] = av.getTarget();
}
return dec[0];
}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/doctools/IDocCommentViewerConfiguration.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/doctools/IDocCommentViewerConfiguration.java
index 4573777d129..b7a61ffd27d 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/doctools/IDocCommentViewerConfiguration.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/doctools/IDocCommentViewerConfiguration.java
@@ -13,6 +13,7 @@
*******************************************************************************/
package org.eclipse.cdt.ui.text.doctools;
+import org.eclipse.cdt.core.model.ICProject;
import org.eclipse.cdt.ui.text.ICPartitions;
import org.eclipse.cdt.ui.text.ICTokenScanner;
import org.eclipse.cdt.ui.text.ITokenStoreFactory;
@@ -50,6 +51,17 @@ public interface IDocCommentViewerConfiguration {
IAutoEditStrategy createAutoEditStrategy();
/**
+ * @return an auto edit strategy suitable for the appropriate comment region. This auto edit
+ * strategy is project-aware and might be affected by project-specific options. May return null
+ * in the case where no auto-edit-strategy is required.
+ *
+ * @since 7.3
+ */
+ default IAutoEditStrategy createAutoEditStrategy(ICProject project) {
+ return createAutoEditStrategy();
+ }
+
+ /**
* @return a double click strategy suitable for the associated comment-region. May return null in
* the case where no double-click-strategy is required.
*/
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/doctools/doxygen/DoxygenMultilineAutoEditStrategy.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/doctools/doxygen/DoxygenMultilineAutoEditStrategy.java
index 2f978ad1a3c..ffded8a48d4 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/doctools/doxygen/DoxygenMultilineAutoEditStrategy.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/doctools/doxygen/DoxygenMultilineAutoEditStrategy.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2010 Symbian Software Systems and others.
+ * Copyright (c) 2008, 2020 Symbian Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -11,10 +11,14 @@
* Contributors:
* Andrew Ferguson (Symbian) - Initial implementation
* Anton Leherbauer (Wind River Systems)
+ * Marco Stornelli <marco.stornelli@gmail.com> - Bug 333134
+ * Alexander Fedorov <alexander.fedorov@arsysop.ru> - Bug 333134, Bug 559193
*******************************************************************************/
package org.eclipse.cdt.ui.text.doctools.doxygen;
import java.util.LinkedHashSet;
+import java.util.Optional;
+import java.util.regex.Pattern;
import org.eclipse.cdt.core.dom.ast.ExpansionOverlapsBoundaryException;
import org.eclipse.cdt.core.dom.ast.IASTArrayDeclarator;
@@ -26,22 +30,40 @@ import org.eclipse.cdt.core.dom.ast.IASTEnumerationSpecifier;
import org.eclipse.cdt.core.dom.ast.IASTEnumerationSpecifier.IASTEnumerator;
import org.eclipse.cdt.core.dom.ast.IASTFunctionDeclarator;
import org.eclipse.cdt.core.dom.ast.IASTFunctionDefinition;
+import org.eclipse.cdt.core.dom.ast.IASTLiteralExpression;
+import org.eclipse.cdt.core.dom.ast.IASTName;
+import org.eclipse.cdt.core.dom.ast.IASTNode;
import org.eclipse.cdt.core.dom.ast.IASTNodeLocation;
import org.eclipse.cdt.core.dom.ast.IASTParameterDeclaration;
+import org.eclipse.cdt.core.dom.ast.IASTPreprocessorMacroDefinition;
import org.eclipse.cdt.core.dom.ast.IASTSimpleDeclSpecifier;
import org.eclipse.cdt.core.dom.ast.IASTSimpleDeclaration;
import org.eclipse.cdt.core.dom.ast.IASTStandardFunctionDeclarator;
+import org.eclipse.cdt.core.dom.ast.IASTTypeId;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCompositeTypeSpecifier;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTExpression;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTFunctionDeclarator;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTLinkageSpecification;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTNamespaceDefinition;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateDeclaration;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateParameter;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTypeId;
+import org.eclipse.cdt.core.model.ICProject;
import org.eclipse.cdt.core.parser.IToken;
+import org.eclipse.cdt.doxygen.DoxygenOptions;
+import org.eclipse.cdt.doxygen.core.DoxygenConfiguration;
+import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPTemplates;
+import org.eclipse.cdt.internal.core.model.ASTStringUtil;
import org.eclipse.cdt.ui.text.doctools.DefaultMultilineCommentAutoEditStrategy;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.e4.core.contexts.EclipseContextFactory;
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.IAutoEditStrategy;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.IRegion;
import org.eclipse.jface.text.ITypedRegion;
import org.eclipse.jface.text.TextUtilities;
+import org.osgi.framework.FrameworkUtil;
/**
* {@link IAutoEditStrategy} for adding Doxygen tags for comments.
@@ -49,17 +71,93 @@ import org.eclipse.jface.text.TextUtilities;
* @since 5.0
* @noextend This class is not intended to be subclassed by clients.
*/
-public class DoxygenMultilineAutoEditStrategy extends DefaultMultilineCommentAutoEditStrategy {
- private static final String SINGLELINE_COMMENT_PRECEDING = "//!< "; //$NON-NLS-1$
- private static final String PARAM = "@param "; //$NON-NLS-1$
- private static final String RETURN = "@return"; //$NON-NLS-1$
+public class DoxygenMultilineAutoEditStrategy extends DefaultMultilineCommentAutoEditStrategy
+ implements DefaultMultilineCommentAutoEditStrategy.IDocCustomizer {
+ private static final String SINGLELINE_COMMENT_PRECEDING_1 = "//!< "; //$NON-NLS-1$
+ private static final String SINGLELINE_COMMENT_PRECEDING_2 = "///< "; //$NON-NLS-1$
+ private static final String SINGLELINE_COMMENT_PRECEDING_3 = "/*!< "; //$NON-NLS-1$
+ private static final String SINGLELINE_COMMENT_PRECEDING_4 = "/**< "; //$NON-NLS-1$
+ private static final Pattern STYLE_1 = Pattern.compile("\\s*//!"); //$NON-NLS-1$
+ private static final Pattern STYLE_2 = Pattern.compile("\\s*///"); //$NON-NLS-1$
+ private static final Pattern STYLE_3 = Pattern.compile("\\s*\\/\\*+!"); //$NON-NLS-1$
+ private static final Pattern STYLE_4 = Pattern.compile("\\s*\\/\\*\\*+"); //$NON-NLS-1$
+ private static final String SINGLELINE_COMMENT_ENDING = " */"; //$NON-NLS-1$
+ private static final String CLASS = "class "; //$NON-NLS-1$
+ private static final String ENUM = "enum "; //$NON-NLS-1$
+ private static final String THROW = "throw "; //$NON-NLS-1$
+ private static final String STRUCT = "struct "; //$NON-NLS-1$
+ private static final String UNION = "union "; //$NON-NLS-1$
+ private static final String BRIEF = "brief "; //$NON-NLS-1$
+ private static final String PRE = "pre "; //$NON-NLS-1$
+ private static final String POST = "post "; //$NON-NLS-1$
+ private static final String PARAM = "param "; //$NON-NLS-1$
+ private static final String FUNC = "fn "; //$NON-NLS-1$
+ private static final String TPARAM = "tparam "; //$NON-NLS-1$
+ private static final String RETURN = "return"; //$NON-NLS-1$
+ private static final String DEF = "def "; //$NON-NLS-1$
+ private static final String NAMESPACE = "namespace "; //$NON-NLS-1$
+ private static final String PREFIX_JAVADOC = "@"; //$NON-NLS-1$
+ private static final String PREFIX_NO_JAVADOC = "\\"; //$NON-NLS-1$
protected boolean documentPureVirtuals = true;
protected boolean documentDeclarations = true;
private String fLineDelimiter;
+ private boolean useBriefTag;
+ private boolean useStructuralCommands;
+ private boolean useJavadocStyle;
+ private boolean newLineAfterBrief;
+ private boolean usePrePostTag;
+
+ private final DoxygenConfiguration doxygenConfiguration;
+
+ /**
+ * @since 7.3
+ */
+ public DoxygenMultilineAutoEditStrategy(ICProject project) {
+ super(project);
+ doxygenConfiguration = EclipseContextFactory
+ .getServiceContext(FrameworkUtil.getBundle(getClass()).getBundleContext())
+ .get(DoxygenConfiguration.class);
+ }
public DoxygenMultilineAutoEditStrategy() {
+ this(null);
+ }
+
+ private void refreshPreferences() {
+ Optional<IProject> project = getProject();
+ DoxygenOptions options = project.isPresent() ? doxygenConfiguration.projectOptions(project.get())
+ : doxygenConfiguration.workspaceOptions();
+ newLineAfterBrief = options.newLineAfterBrief();
+ useBriefTag = options.useBriefTags();
+ useJavadocStyle = options.useJavadocStyle();
+ usePrePostTag = options.usePrePostTag();
+ useStructuralCommands = options.useStructuralCommands();
+ }
+
+ private String getPrefix() {
+ return useJavadocStyle ? PREFIX_JAVADOC : PREFIX_NO_JAVADOC;
+ }
+
+ private StringBuilder getBriefTag() {
+ StringBuilder result = new StringBuilder();
+ if (useBriefTag) {
+ result.append(getPrefix()).append(BRIEF).append(getLineDelimiter());
+ if (newLineAfterBrief) {
+ result.append(getLineDelimiter());
+ }
+ }
+ return result;
+ }
+
+ private StringBuilder getPrePostTag() {
+ StringBuilder result = new StringBuilder();
+ if (usePrePostTag) {
+ result.append(getPrefix()).append(PRE).append(getLineDelimiter()).append(getPrefix()).append(POST)
+ .append(getLineDelimiter());
+ }
+ return result;
}
/**
@@ -73,12 +171,58 @@ public class DoxygenMultilineAutoEditStrategy extends DefaultMultilineCommentAut
/**
* @param decl the function declarator to document
* @param ds the function specifier to document
+ * @param templateParams Template parameters for the function
* @return content describing the specified function
+ * @since 6.7
*/
- protected StringBuilder documentFunction(IASTFunctionDeclarator decl, IASTDeclSpecifier ds) {
+ protected StringBuilder documentComposite(IASTCompositeTypeSpecifier decl,
+ ICPPASTTemplateParameter[] templateParams) {
StringBuilder result = new StringBuilder();
+ if (useStructuralCommands) {
+ switch (decl.getKey()) {
+ case ICPPASTCompositeTypeSpecifier.k_class:
+ result.append(getPrefix()).append(CLASS).append(decl.getName().getSimpleID())
+ .append(getLineDelimiter());
+ break;
+ case IASTCompositeTypeSpecifier.k_struct:
+ result.append(getPrefix()).append(STRUCT).append(decl.getName().getSimpleID())
+ .append(getLineDelimiter());
+ break;
+ case IASTCompositeTypeSpecifier.k_union:
+ result.append(getPrefix()).append(UNION).append(decl.getName().getSimpleID())
+ .append(getLineDelimiter());
+ break;
+ }
+ }
+ result.append(getBriefTag()).append(documentTemplateParameters(templateParams));
+ return result;
+ }
+
+ /**
+ * Document a function/method
+ * @param decl the function declarator to document
+ * @param ds the function specifier to document
+ * @param templateParams Template parameters for the function
+ * @return content describing the specified function
+ * @since 6.7
+ */
+ protected StringBuilder documentFunction(IASTFunctionDeclarator decl, IASTDeclSpecifier ds,
+ ICPPASTTemplateParameter[] templateParams) {
+ StringBuilder result = new StringBuilder();
+
+ if (useStructuralCommands) {
+ result.append(getPrefix()).append(FUNC).append(ASTStringUtil.getSignatureString(ds, null)).append(" ") //$NON-NLS-1$
+ .append(ASTStringUtil.getSimpleName(decl.getName()))
+ .append(ASTStringUtil.getSignatureString(null, decl)).append(getLineDelimiter());
+ }
+ result.append(getBriefTag()).append(getPrePostTag());
+ result.append(documentTemplateParameters(templateParams));
result.append(documentFunctionParameters(getParameterDecls(decl)));
+ if (decl instanceof ICPPASTFunctionDeclarator) {
+ ICPPASTFunctionDeclarator cppDecl = (ICPPASTFunctionDeclarator) decl;
+ result.append(documentExceptions(cppDecl.getExceptionSpecification(), cppDecl.getNoexceptExpression()));
+ }
boolean hasReturn = true;
if (ds instanceof IASTSimpleDeclSpecifier) {
@@ -96,6 +240,23 @@ public class DoxygenMultilineAutoEditStrategy extends DefaultMultilineCommentAut
}
/**
+ * Document template parameters
+ * @param templateParams The list of template parameters
+ * @return The built string
+ * @since 6.7
+ */
+ protected StringBuilder documentTemplateParameters(ICPPASTTemplateParameter[] templateParams) {
+ StringBuilder result = new StringBuilder();
+ if (templateParams == null || templateParams.length == 0)
+ return result;
+ for (ICPPASTTemplateParameter t : templateParams) {
+ IASTName name = CPPTemplates.getTemplateParameterName(t);
+ result.append(getPrefix()).append(TPARAM).append(new String(name.getSimpleID())).append(getLineDelimiter());
+ }
+ return result;
+ }
+
+ /**
* Returns the comment content to add to the documentation comment.
* @param decls The parameter declarations to describe
* @return a buffer containing the comment content to generate to describe the parameters of
@@ -105,7 +266,7 @@ public class DoxygenMultilineAutoEditStrategy extends DefaultMultilineCommentAut
StringBuilder result = new StringBuilder();
for (int i = 0; i < decls.length; i++) {
if (!isVoidParameter(decls[i])) {
- result.append(PARAM).append(getParameterName(decls[i])).append(getLineDelimiter());
+ result.append(getPrefix()).append(PARAM).append(getParameterName(decls[i])).append(getLineDelimiter());
}
}
return result;
@@ -156,7 +317,7 @@ public class DoxygenMultilineAutoEditStrategy extends DefaultMultilineCommentAut
* @return the comment content to describe the return
*/
protected StringBuilder documentFunctionReturn() {
- return new StringBuilder(RETURN).append(getLineDelimiter());
+ return new StringBuilder(getPrefix()).append(RETURN).append(getLineDelimiter());
}
/**
@@ -177,16 +338,15 @@ public class DoxygenMultilineAutoEditStrategy extends DefaultMultilineCommentAut
return result;
}
- /*
- * @see org.eclipse.cdt.ui.text.doctools.DefaultMultilineCommentAutoEditStrategy#customizeAfterNewLineForDeclaration(org.eclipse.jface.text.IDocument, org.eclipse.cdt.core.dom.ast.IASTDeclaration, org.eclipse.jface.text.ITypedRegion)
+ /**
+ * @since 6.7
*/
@Override
- protected StringBuilder customizeAfterNewLineForDeclaration(IDocument doc, IASTDeclaration dec,
- ITypedRegion partition) {
+ public StringBuilder customizeForDeclaration(IDocument doc, IASTNode declToDocument, ITypedRegion partition,
+ CustomizeOptions options) {
+ refreshPreferences();
fLineDelimiter = TextUtilities.getDefaultLineDelimiter(doc);
- IASTDeclaration declToDocument = dec;
-
if (declToDocument instanceof ICPPASTLinkageSpecification) {
ICPPASTLinkageSpecification linkageSpecification = (ICPPASTLinkageSpecification) declToDocument;
IASTDeclaration[] declarations = linkageSpecification.getDeclarations();
@@ -214,20 +374,35 @@ public class DoxygenMultilineAutoEditStrategy extends DefaultMultilineCommentAut
}
}
+ if (options != null && (useBriefTag || useStructuralCommands))
+ options.addNewLine = false;
+
+ ICPPASTTemplateParameter[] params = null;
+ if (declToDocument instanceof ICPPASTTemplateDeclaration) {
+ params = ((ICPPASTTemplateDeclaration) declToDocument).getTemplateParameters();
+ }
+
while (declToDocument instanceof ICPPASTTemplateDeclaration) /* if? */
declToDocument = ((ICPPASTTemplateDeclaration) declToDocument).getDeclaration();
if (declToDocument instanceof IASTFunctionDefinition) {
IASTFunctionDefinition fd = (IASTFunctionDefinition) declToDocument;
- return documentFunction(fd.getDeclarator(), fd.getDeclSpecifier());
+ return documentFunction(fd.getDeclarator(), fd.getDeclSpecifier(), params);
+ }
+
+ if (declToDocument instanceof IASTPreprocessorMacroDefinition) {
+ return documentDefine((IASTPreprocessorMacroDefinition) declToDocument);
+ }
+
+ if (declToDocument instanceof ICPPASTNamespaceDefinition) {
+ return documentNamespace((ICPPASTNamespaceDefinition) declToDocument);
}
if (declToDocument instanceof IASTSimpleDeclaration) {
IASTSimpleDeclaration sdec = (IASTSimpleDeclaration) declToDocument;
- StringBuilder result = new StringBuilder();
if (sdec.getDeclSpecifier() instanceof IASTCompositeTypeSpecifier) {
- return result;
+ return documentComposite((IASTCompositeTypeSpecifier) sdec.getDeclSpecifier(), params);
} else {
IASTDeclarator[] dcs = sdec.getDeclarators();
if (dcs.length == 1 && dcs[0] instanceof IASTFunctionDeclarator) {
@@ -239,27 +414,131 @@ public class DoxygenMultilineAutoEditStrategy extends DefaultMultilineCommentAut
}
if (shouldDocument) {
- return documentFunction(fdecl, sdec.getDeclSpecifier());
+ return documentFunction(fdecl, sdec.getDeclSpecifier(), params);
}
}
}
}
+ StringBuilder builder = new StringBuilder();
+ if (declToDocument instanceof IASTSimpleDeclaration
+ && ((IASTSimpleDeclaration) declToDocument).getDeclSpecifier() instanceof IASTEnumerationSpecifier) {
+ builder = documentEnum(
+ (IASTEnumerationSpecifier) ((IASTSimpleDeclaration) declToDocument).getDeclSpecifier());
+ }
+
try {
- alterDoc(doc, declToDocument);
+ alterDoc(doc, declToDocument, partition);
} catch (BadLocationException ble) {
/*ignore*/
}
- return new StringBuilder();
+ return builder;
+ }
+
+ /**
+ * Document preprocessor defines
+ * @param Macro definition
+ * @return The built buffer
+ * @since 6.7
+ */
+ protected StringBuilder documentDefine(IASTPreprocessorMacroDefinition dec) {
+ StringBuilder result = new StringBuilder();
+ if (useStructuralCommands)
+ result.append(getPrefix()).append(DEF).append(new String(dec.getName().getSimpleID()))
+ .append(getLineDelimiter());
+ return result.append(getBriefTag());
+ }
+
+ /**
+ * Document namespaces
+ * @param dec Namespace definition
+ * @return The built buffer
+ * @since 6.7
+ */
+ protected StringBuilder documentNamespace(ICPPASTNamespaceDefinition dec) {
+ StringBuilder result = new StringBuilder();
+ if (useStructuralCommands)
+ result.append(getPrefix()).append(NAMESPACE).append(new String(dec.getName().getSimpleID()))
+ .append(getLineDelimiter());
+ return result.append(getBriefTag());
+ }
+
+ /**
+ * Document enums
+ * @param dec Enumeration specifier
+ * @return The built buffer
+ * @since 6.7
+ */
+ protected StringBuilder documentEnum(IASTEnumerationSpecifier dec) {
+ StringBuilder result = new StringBuilder();
+ if (useStructuralCommands)
+ result.append(getPrefix()).append(ENUM).append(new String(dec.getName().getSimpleID()))
+ .append(getLineDelimiter());
+ return result.append(getBriefTag());
+ }
+
+ /**
+ * Document function exceptions
+ * @param exceptions A list of exceptions or NO_EXCEPTION_SPECIFICATION if no exceptions are present
+ * or EMPTY_TYPEID_ARRAY if no exceptions will be thrown.
+ * @param noexcept Noexcept expression, null if no present, NOEXCEPT_DEFAULT if noexcept has been used
+ * @return The built string
+ * @since 6.7
+ */
+ protected StringBuilder documentExceptions(IASTTypeId[] exceptions, ICPPASTExpression noexcept) {
+ StringBuilder result = new StringBuilder();
+ if (exceptions == ICPPASTFunctionDeclarator.NO_EXCEPTION_SPECIFICATION
+ || exceptions == IASTTypeId.EMPTY_TYPEID_ARRAY) {
+ if (noexcept != null && noexcept != ICPPASTFunctionDeclarator.NOEXCEPT_DEFAULT
+ && !isNoexceptTrue(noexcept)) {
+ result.append(getPrefix()).append(THROW).append(getLineDelimiter());
+ }
+ } else {
+ for (int i = 0; i < exceptions.length; i++) {
+ result.append(getPrefix()).append(THROW);
+ if (exceptions[i] instanceof ICPPASTTypeId && ((ICPPASTTypeId) exceptions[i]).isPackExpansion()) {
+ result.append(getLineDelimiter());
+ continue;
+ }
+ result.append(ASTStringUtil.getSignatureString(exceptions[i].getAbstractDeclarator()))
+ .append(getLineDelimiter());
+ }
+ }
+ return result;
+ }
+
+ private boolean isNoexceptTrue(ICPPASTExpression expr) {
+ if (expr instanceof IASTLiteralExpression) {
+ return ((IASTLiteralExpression) expr).getKind() == IASTLiteralExpression.lk_true;
+ }
+ return false;
}
/*
* Add post-declaration comments to enumerators, after initializing a doc-comment on an enumeration
*/
- private void alterDoc(IDocument doc, IASTDeclaration dec) throws BadLocationException {
+ private void alterDoc(IDocument doc, IASTNode dec, ITypedRegion partition) throws BadLocationException {
if (dec instanceof IASTSimpleDeclaration
&& ((IASTSimpleDeclaration) dec).getDeclSpecifier() instanceof IASTEnumerationSpecifier) {
+
+ String partComment = doc.get(partition.getOffset(), partition.getLength());
+ String preceding;
+ String ending = ""; //$NON-NLS-1$
+ if (STYLE_1.matcher(partComment).find()) {
+ preceding = SINGLELINE_COMMENT_PRECEDING_1;
+ } else if (STYLE_2.matcher(partComment).find()) {
+ preceding = SINGLELINE_COMMENT_PRECEDING_2;
+ } else if (STYLE_3.matcher(partComment).find()) {
+ preceding = SINGLELINE_COMMENT_PRECEDING_3;
+ ending = SINGLELINE_COMMENT_ENDING;
+ } else if (STYLE_4.matcher(partComment).find()) {
+ preceding = SINGLELINE_COMMENT_PRECEDING_4;
+ ending = SINGLELINE_COMMENT_ENDING;
+ } else {
+ preceding = SINGLELINE_COMMENT_PRECEDING_1;
+ }
+
IASTEnumerationSpecifier spc = (IASTEnumerationSpecifier) ((IASTSimpleDeclaration) dec).getDeclSpecifier();
IASTEnumerator[] enms = spc.getEnumerators();
@@ -294,7 +573,7 @@ public class DoxygenMultilineAutoEditStrategy extends DefaultMultilineCommentAut
IASTNodeLocation loc = enumerator.getName().getFileLocation();
if (loc != null) {
int nodeOffset = loc.getNodeOffset() + loc.getNodeLength();
- String cmt = SINGLELINE_COMMENT_PRECEDING + enumerator.getName();
+ String cmt = preceding + enumerator.getName() + ending;
IRegion line = doc.getLineInformationOfOffset(nodeOffset);
if (!doc.get(line.getOffset(), line.getLength()).contains("//")) { //$NON-NLS-1$
noCollisions &= entries.add(new Entry(line.getOffset(), line.getLength(), cmt));
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/doctools/doxygen/DoxygenMultilineConfiguration.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/doctools/doxygen/DoxygenMultilineConfiguration.java
index 77e107b52d3..11de9055565 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/doctools/doxygen/DoxygenMultilineConfiguration.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/doctools/doxygen/DoxygenMultilineConfiguration.java
@@ -13,6 +13,7 @@
*******************************************************************************/
package org.eclipse.cdt.ui.text.doctools.doxygen;
+import org.eclipse.cdt.core.model.ICProject;
import org.eclipse.cdt.ui.CUIPlugin;
import org.eclipse.cdt.ui.PreferenceConstants;
import org.eclipse.cdt.ui.text.doctools.IDocCommentViewerConfiguration;
@@ -54,7 +55,15 @@ public class DoxygenMultilineConfiguration extends AbstractGenericTagDocCommentV
*/
@Override
public IAutoEditStrategy createAutoEditStrategy() {
- return new DoxygenMultilineAutoEditStrategy();
+ return createAutoEditStrategy(null);
+ }
+
+ /**
+ * @since 7.3
+ */
+ @Override
+ public IAutoEditStrategy createAutoEditStrategy(ICProject project) {
+ return new DoxygenMultilineAutoEditStrategy(project);
}
/*
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/doctools/doxygen/DoxygenSingleAutoEditStrategy.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/doctools/doxygen/DoxygenSingleAutoEditStrategy.java
index 7bc93be9459..facb5c42482 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/doctools/doxygen/DoxygenSingleAutoEditStrategy.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/doctools/doxygen/DoxygenSingleAutoEditStrategy.java
@@ -18,6 +18,7 @@ import org.eclipse.cdt.core.dom.ast.IASTDeclaration;
import org.eclipse.cdt.core.dom.ast.IASTNode;
import org.eclipse.cdt.core.dom.ast.IASTNodeSelector;
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
+import org.eclipse.cdt.core.model.ICProject;
import org.eclipse.cdt.ui.text.ICPartitions;
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.DocumentCommand;
@@ -42,7 +43,15 @@ public class DoxygenSingleAutoEditStrategy extends DoxygenMultilineAutoEditStrat
private static final String EXCL_COMMENT = "//!"; //$NON-NLS-1$
private static String fgDefaultLineDelim = "\n"; //$NON-NLS-1$
+ /**
+ * @since 7.3
+ */
+ public DoxygenSingleAutoEditStrategy(ICProject project) {
+ super(project);
+ }
+
public DoxygenSingleAutoEditStrategy() {
+ this(null);
}
/**
@@ -152,16 +161,16 @@ public class DoxygenSingleAutoEditStrategy extends DoxygenMultilineAutoEditStrat
}
private StringBuilder getDeclarationLines(IDocument doc, int offset) throws BadLocationException {
- IASTDeclaration dec = null;
+ IASTNode dec = null;
IASTTranslationUnit ast = getAST();
if (ast != null) {
- dec = findFollowingDeclaration(ast, offset);
+ dec = findNextDocumentNode(ast, offset);
if (dec == null) {
IASTNodeSelector ans = ast.getNodeSelector(ast.getFilePath());
IASTNode node = ans.findEnclosingNode(offset, 0);
if (node instanceof IASTDeclaration) {
- dec = (IASTDeclaration) node;
+ dec = node;
}
}
}
@@ -169,7 +178,7 @@ public class DoxygenSingleAutoEditStrategy extends DoxygenMultilineAutoEditStrat
if (dec != null) {
ITypedRegion partition = TextUtilities.getPartition(doc, ICPartitions.C_PARTITIONING /* this! */, offset,
false);
- return customizeAfterNewLineForDeclaration(doc, dec, partition);
+ return customizeForDeclaration(doc, dec, partition, null);
}
return null;
}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/doctools/doxygen/DoxygenSingleConfiguration.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/doctools/doxygen/DoxygenSingleConfiguration.java
index d1c647067ee..be825afb9c0 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/doctools/doxygen/DoxygenSingleConfiguration.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/doctools/doxygen/DoxygenSingleConfiguration.java
@@ -13,6 +13,7 @@
*******************************************************************************/
package org.eclipse.cdt.ui.text.doctools.doxygen;
+import org.eclipse.cdt.core.model.ICProject;
import org.eclipse.cdt.ui.CUIPlugin;
import org.eclipse.cdt.ui.PreferenceConstants;
import org.eclipse.cdt.ui.text.doctools.IDocCommentViewerConfiguration;
@@ -53,7 +54,15 @@ public class DoxygenSingleConfiguration extends AbstractGenericTagDocCommentView
*/
@Override
public IAutoEditStrategy createAutoEditStrategy() {
- return new DoxygenSingleAutoEditStrategy();
+ return createAutoEditStrategy(null);
+ }
+
+ /**
+ * @since 7.3
+ */
+ @Override
+ public IAutoEditStrategy createAutoEditStrategy(ICProject project) {
+ return new DoxygenSingleAutoEditStrategy(project);
}
/*
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/doctools/generic/GenericTagDoubleClickStrategy.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/doctools/generic/GenericTagDoubleClickStrategy.java
index 3422da62d2b..f16818f8ca9 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/doctools/generic/GenericTagDoubleClickStrategy.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/doctools/generic/GenericTagDoubleClickStrategy.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2012 Symbian Software Systems and others.
+ * Copyright (c) 2008, 2020 Symbian Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -10,9 +10,11 @@
*
* Contributors:
* Andrew Ferguson (Symbian) - Initial implementation
+ * Alexander Fedorov (ArSysOp) - Bug 561993 - Remove dependency to com.ibm.icu from CDT UI
*******************************************************************************/
package org.eclipse.cdt.ui.text.doctools.generic;
+import java.text.BreakIterator;
import java.text.CharacterIterator;
import org.eclipse.jface.text.BadLocationException;
@@ -22,8 +24,6 @@ import org.eclipse.jface.text.ITextDoubleClickStrategy;
import org.eclipse.jface.text.ITextViewer;
import org.eclipse.jface.text.Region;
-import com.ibm.icu.text.BreakIterator;
-
/**
* A double-click strategy for words starting with specified tag markers.
* @since 5.0
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/CCProjectWizard.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/CCProjectWizard.java
index 1a17148b05a..da54a09265d 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/CCProjectWizard.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/CCProjectWizard.java
@@ -20,8 +20,7 @@ import org.eclipse.cdt.core.CProjectNature;
import org.eclipse.cdt.internal.ui.newui.Messages;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.SubProgressMonitor;
+import org.eclipse.core.runtime.SubMonitor;
/**
* The wizard to create new MBS C++ Project.
@@ -39,17 +38,11 @@ public class CCProjectWizard extends CDTCommonProjectWizard {
@Override
protected IProject continueCreation(IProject prj) {
- if (continueCreationMonitor == null) {
- continueCreationMonitor = new NullProgressMonitor();
- }
-
+ SubMonitor subMonitor = SubMonitor.convert(continueCreationMonitor, Messages.CCProjectWizard_0, 2);
try {
- continueCreationMonitor.beginTask(Messages.CCProjectWizard_0, 2);
- CProjectNature.addCNature(prj, new SubProgressMonitor(continueCreationMonitor, 1));
- CCProjectNature.addCCNature(prj, new SubProgressMonitor(continueCreationMonitor, 1));
+ CProjectNature.addCNature(prj, subMonitor.split(1));
+ CCProjectNature.addCCNature(prj, subMonitor.split(1));
} catch (CoreException e) {
- } finally {
- continueCreationMonitor.done();
}
return prj;
}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/CDTCommonProjectWizard.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/CDTCommonProjectWizard.java
index 223c2592304..6efd6268662 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/CDTCommonProjectWizard.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/CDTCommonProjectWizard.java
@@ -45,7 +45,7 @@ import org.eclipse.core.runtime.IExecutableExtension;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.SubProgressMonitor;
+import org.eclipse.core.runtime.SubMonitor;
import org.eclipse.core.runtime.content.IContentType;
import org.eclipse.core.runtime.content.IContentTypeManager;
import org.eclipse.jface.dialogs.MessageDialog;
@@ -242,25 +242,18 @@ public abstract class CDTCommonProjectWizard extends BasicNewResourceWizard
final Exception except[] = new Exception[1];
getShell().getDisplay().syncExec(() -> {
IRunnableWithProgress op = new WorkspaceModifyDelegatingOperation(monitor -> {
- final IProgressMonitor fMonitor;
- if (monitor == null) {
- fMonitor = new NullProgressMonitor();
- } else {
- fMonitor = monitor;
- }
- fMonitor.beginTask(CUIPlugin.getResourceString("CProjectWizard.op_description"), 100); //$NON-NLS-1$
- fMonitor.worked(10);
+
+ SubMonitor subMonitor = SubMonitor.convert(monitor,
+ CUIPlugin.getResourceString("CProjectWizard.op_description"), 100);//$NON-NLS-1$
+ subMonitor.worked(10);
try {
- newProject = createIProject(lastProjectName, lastProjectLocation,
- new SubProgressMonitor(fMonitor, 40));
- if (newProject != null)
- fMainPage.h_selected.createProject(newProject, defaults, onFinish,
- new SubProgressMonitor(fMonitor, 40));
- fMonitor.worked(10);
+ newProject = createIProject(lastProjectName, lastProjectLocation, subMonitor.split(40));
+ if (newProject != null) {
+ fMainPage.h_selected.createProject(newProject, defaults, onFinish, subMonitor.split(40));
+ }
+ subMonitor.worked(10);
} catch (CoreException e) {
CUIPlugin.errorDialog(getShell(), title, message, e, true);
- } finally {
- fMonitor.done();
}
});
try {
@@ -301,9 +294,7 @@ public abstract class CDTCommonProjectWizard extends BasicNewResourceWizard
@Override
public IProject createIProject(final String name, final URI location, IProgressMonitor monitor)
throws CoreException {
-
- monitor.beginTask(Messages.CDTCommonProjectWizard_creatingProject, 100);
-
+ SubMonitor subMonitor = SubMonitor.convert(monitor, Messages.CDTCommonProjectWizard_creatingProject, 100);
if (newProject != null)
return newProject;
@@ -316,27 +307,22 @@ public abstract class CDTCommonProjectWizard extends BasicNewResourceWizard
// workspaceDesc.setAutoBuilding(false);
// workspace.setDescription(workspaceDesc);
IProjectDescription description = workspace.newProjectDescription(newProjectHandle.getName());
- if (location != null)
+ if (location != null) {
description.setLocationURI(location);
- newProject = CCorePlugin.getDefault().createCDTProject(description, newProjectHandle,
- new SubProgressMonitor(monitor, 25));
+ }
+ newProject = CCorePlugin.getDefault().createCDTProject(description, newProjectHandle, subMonitor.split(50));
} else {
IWorkspaceRunnable runnable = monitor1 -> newProjectHandle.refreshLocal(IResource.DEPTH_INFINITE, monitor1);
- workspace.run(runnable, root, IWorkspace.AVOID_UPDATE, new SubProgressMonitor(monitor, 25));
+ workspace.run(runnable, root, IWorkspace.AVOID_UPDATE, subMonitor.split(50));
newProject = newProjectHandle;
}
// Open the project if we have to
if (!newProject.isOpen()) {
- newProject.open(new SubProgressMonitor(monitor, 25));
+ newProject.open(subMonitor.split(25));
}
-
- continueCreationMonitor = new SubProgressMonitor(monitor, 25);
- IProject proj = continueCreation(newProject);
-
- monitor.done();
-
- return proj;
+ continueCreationMonitor = subMonitor.split(25);
+ return continueCreation(newProject);
}
protected abstract IProject continueCreation(IProject prj);
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/CProjectWizard.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/CProjectWizard.java
index bc75c8a38e7..3cc4b2e863f 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/CProjectWizard.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/CProjectWizard.java
@@ -19,8 +19,7 @@ import org.eclipse.cdt.core.CProjectNature;
import org.eclipse.cdt.internal.ui.newui.Messages;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.SubProgressMonitor;
+import org.eclipse.core.runtime.SubMonitor;
/**
* The wizard to create new MBS C Project.
@@ -38,16 +37,10 @@ public class CProjectWizard extends CDTCommonProjectWizard {
@Override
protected IProject continueCreation(IProject prj) {
- if (continueCreationMonitor == null) {
- continueCreationMonitor = new NullProgressMonitor();
- }
-
+ SubMonitor subMonitor = SubMonitor.convert(continueCreationMonitor, Messages.CProjectWizard_0, 1);
try {
- continueCreationMonitor.beginTask(Messages.CProjectWizard_0, 1);
- CProjectNature.addCNature(prj, new SubProgressMonitor(continueCreationMonitor, 1));
+ CProjectNature.addCNature(prj, subMonitor.split(1));
} catch (CoreException e) {
- } finally {
- continueCreationMonitor.done();
}
return prj;
}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/NewCProjectWizard.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/NewCProjectWizard.java
index d4e20f1729c..b2a829f71f4 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/NewCProjectWizard.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/NewCProjectWizard.java
@@ -31,10 +31,9 @@ import org.eclipse.core.runtime.IExecutableExtension;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.SubProgressMonitor;
+import org.eclipse.core.runtime.SubMonitor;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.operation.IRunnableWithProgress;
import org.eclipse.jface.viewers.IStructuredSelection;
@@ -214,21 +213,14 @@ public abstract class NewCProjectWizard extends BasicNewResourceWizard implement
// ugly, need to make the wizard page run in a non ui thread so that this can go away!!!
getShell().getDisplay().syncExec(() -> {
IRunnableWithProgress op = new WorkspaceModifyDelegatingOperation(monitor -> {
- final IProgressMonitor fMonitor;
- if (monitor == null) {
- fMonitor = new NullProgressMonitor();
- } else {
- fMonitor = monitor;
- }
- fMonitor.beginTask(CUIPlugin.getResourceString(OP_DESC), 3);
- doRunPrologue(new SubProgressMonitor(fMonitor, 1));
+ SubMonitor subMonitor = SubMonitor.convert(monitor, CUIPlugin.getResourceString(OP_DESC), 3);
+ doRunPrologue(subMonitor.split(1));
try {
- doRun(new SubProgressMonitor(fMonitor, 1));
+ doRun(subMonitor.split(1));
} catch (CoreException e) {
except[0] = e;
}
- doRunEpilogue(new SubProgressMonitor(fMonitor, 1));
- fMonitor.done();
+ doRunEpilogue(subMonitor.split(1));
});
try {
getContainer().run(false, true, op);
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/NewClassCreationWizardPage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/NewClassCreationWizardPage.java
index 2365b4055e6..7a929531e3b 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/NewClassCreationWizardPage.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/NewClassCreationWizardPage.java
@@ -122,6 +122,7 @@ public class NewClassCreationWizardPage extends NewElementWizardPage {
private static final String KEY_STUB_SELECTED = "stubSelected"; //$NON-NLS-1$
private static final String KEY_STUB_VIRTUAL = "stubVirtual"; //$NON-NLS-1$
private static final String KEY_STUB_IMPL = "stubImpl"; //$NON-NLS-1$
+ private static final String KEY_FINAL_SELECTED = "finalSelected"; //$NON-NLS-1$
// Field IDs
protected static final int SOURCE_FOLDER_ID = 1;
@@ -133,8 +134,8 @@ public class NewClassCreationWizardPage extends NewElementWizardPage {
protected static final int SOURCE_FILE_ID = 64;
/** @since 5.3 */
protected static final int TEST_FILE_ID = 128;
- protected static final int ALL_FIELDS = SOURCE_FOLDER_ID | NAMESPACE_ID | CLASS_NAME_ID | BASE_CLASSES_ID
- | METHOD_STUBS_ID | HEADER_FILE_ID | SOURCE_FILE_ID | TEST_FILE_ID;
+ /** @since 7.0*/
+ protected static final int FINAL_ID = 256;
protected int fLastFocusedField = 0;
protected StringButtonDialogField fSourceFolderDialogField;
@@ -145,6 +146,10 @@ public class NewClassCreationWizardPage extends NewElementWizardPage {
protected MethodStubsListDialogField fMethodStubsDialogField;
protected StringButtonDialogField fHeaderFileDialogField;
protected StringButtonDialogField fSourceFileDialogField;
+ /**
+ * @since 7.0
+ */
+ protected SelectionButtonDialogField fIsFinalClassField;
/** @since 5.3 */
protected StringButtonDialogField fTestFileDialogField;
/** @since 5.3 */
@@ -165,6 +170,10 @@ public class NewClassCreationWizardPage extends NewElementWizardPage {
protected IStatus fSourceFileStatus;
/** @since 5.3 */
protected IStatus fTestFileStatus;
+ /**
+ * @since 7.0
+ */
+ protected IStatus fIsFinalStatus;
protected final IStatus STATUS_OK = new StatusInfo();
protected IFile fCreatedHeaderFile;
@@ -216,6 +225,11 @@ public class NewClassCreationWizardPage extends NewElementWizardPage {
fMethodStubsDialogField = new MethodStubsListDialogField(
NewClassWizardMessages.NewClassCreationWizardPage_methodStubs_label, methodStubsAdapter);
+ FinalFieldAdapter finalAdapter = new FinalFieldAdapter();
+ fIsFinalClassField = new SelectionButtonDialogField(SWT.CHECK);
+ fIsFinalClassField.setDialogFieldListener(finalAdapter);
+ fIsFinalClassField.setLabelText(NewClassWizardMessages.NewClassCreationWizardPage_final_label);
+
FileGroupFieldAdapter fileGroupAdapter = new FileGroupFieldAdapter();
fHeaderFileDialogField = new StringButtonDialogField(fileGroupAdapter);
fHeaderFileDialogField.setDialogFieldListener(fileGroupAdapter);
@@ -244,6 +258,7 @@ public class NewClassCreationWizardPage extends NewElementWizardPage {
fHeaderFileStatus = STATUS_OK;
fSourceFileStatus = STATUS_OK;
fTestFileStatus = STATUS_OK;
+ fIsFinalStatus = STATUS_OK;
fLastFocusedField = 0;
isFirstTime = true;
@@ -251,9 +266,6 @@ public class NewClassCreationWizardPage extends NewElementWizardPage {
// -------- UI Creation ---------
- /* (non-Javadoc)
- * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
- */
@Override
public void createControl(Composite parent) {
initializeDialogUnits(parent);
@@ -275,6 +287,7 @@ public class NewClassCreationWizardPage extends NewElementWizardPage {
createClassNameControls(composite, nColumns);
createBaseClassesControls(composite, nColumns);
createMethodStubsControls(composite, nColumns);
+ createFinalClassControls(composite, nColumns);
createSeparator(composite, nColumns);
@@ -360,6 +373,16 @@ public class NewClassCreationWizardPage extends NewElementWizardPage {
}
/**
+ * Creates the controls for the final class field.
+ *
+ * @param composite the parent composite
+ * @since 7.0
+ */
+ protected void createFinalClassControls(Composite composite, int nColumns) {
+ fIsFinalClassField.doFillIntoGrid(composite, nColumns - 1);
+ }
+
+ /**
* Creates the controls for the base classes field. Expects a <code>GridLayout</code> with
* at least 3 columns.
*
@@ -499,8 +522,9 @@ public class NewClassCreationWizardPage extends NewElementWizardPage {
addMethodStub(stub, getBooleanSettingWithDefault(KEY_STUB_SELECTED + i, stub.isEnabledByDefault()));
}
+ fIsFinalClassField.setSelection(fDialogSettings.getBoolean(KEY_FINAL_SELECTED));
setTestFileSelection(fDialogSettings.getBoolean(KEY_TEST_FILE_SELECTED), true);
- handleFieldChanged(ALL_FIELDS);
+ handleFieldsChanged();
}
private boolean getBooleanSettingWithDefault(String key, boolean defaultValue) {
@@ -717,6 +741,16 @@ public class NewClassCreationWizardPage extends NewElementWizardPage {
}
/**
+ * Check if the class is final
+ *
+ * @return true if final, false otherwise
+ * @since 7.0
+ */
+ public boolean isFinalClass() {
+ return fIsFinalClassField.isSelected();
+ }
+
+ /**
* Sets the text of the class name input field.
*
* @param name the new class name
@@ -1046,13 +1080,13 @@ public class NewClassCreationWizardPage extends NewElementWizardPage {
IPath newFolderPath = chooseSourceFolder(oldFolderPath);
if (newFolderPath != null) {
setSourceFolderFullPath(newFolderPath, false);
- handleFieldChanged(SOURCE_FOLDER_ID | ALL_FIELDS);
+ handleFieldsChanged();
}
}
@Override
public void dialogFieldChanged(DialogField field) {
- handleFieldChanged(SOURCE_FOLDER_ID | ALL_FIELDS);
+ handleFieldsChanged();
}
}
@@ -1086,6 +1120,21 @@ public class NewClassCreationWizardPage extends NewElementWizardPage {
}
/**
+ * handles changes to the final field
+ */
+ private final class FinalFieldAdapter implements IStringButtonAdapter, IDialogFieldListener {
+ @Override
+ public void changeControlPressed(DialogField field) {
+ handleFieldChanged(FINAL_ID);
+ }
+
+ @Override
+ public void dialogFieldChanged(DialogField field) {
+ handleFieldChanged(FINAL_ID);
+ }
+ }
+
+ /**
* handles changes to the namespace field
*/
private final class NamespaceFieldAdapter implements IStringButtonAdapter, IDialogFieldListener {
@@ -1471,6 +1520,26 @@ public class NewClassCreationWizardPage extends NewElementWizardPage {
if (fieldChanged(fields, TEST_FILE_ID)) {
fTestFileStatus = testFileChanged();
}
+ if (fieldChanged(fields, FINAL_ID)) {
+ fIsFinalStatus = finalChanged();
+ }
+ doStatusUpdate();
+ }
+
+ /**
+ * Hook method that gets called when all fields on this page have changed.
+ * @since 7.0
+ */
+ protected void handleFieldsChanged() {
+ fSourceFolderStatus = sourceFolderChanged();
+ fNamespaceStatus = namespaceChanged();
+ fClassNameStatus = classNameChanged();
+ fBaseClassesStatus = baseClassesChanged();
+ fMethodStubsStatus = methodStubsChanged();
+ fHeaderFileStatus = headerFileChanged();
+ fSourceFileStatus = sourceFileChanged();
+ fTestFileStatus = testFileChanged();
+ fIsFinalStatus = finalChanged();
doStatusUpdate();
}
@@ -1503,7 +1572,8 @@ public class NewClassCreationWizardPage extends NewElementWizardPage {
(fMethodStubsStatus != lastStatus) ? fMethodStubsStatus : STATUS_OK,
(fHeaderFileStatus != lastStatus) ? fHeaderFileStatus : STATUS_OK,
(fSourceFileStatus != lastStatus) ? fSourceFileStatus : STATUS_OK,
- (fTestFileStatus != lastStatus) ? fTestFileStatus : STATUS_OK, };
+ (fTestFileStatus != lastStatus) ? fTestFileStatus : STATUS_OK,
+ (fIsFinalStatus != lastStatus) ? fIsFinalStatus : STATUS_OK, };
// the mode severe status will be displayed and the ok button enabled/disabled.
updateStatus(status);
@@ -1532,6 +1602,8 @@ public class NewClassCreationWizardPage extends NewElementWizardPage {
return fSourceFileStatus;
case TEST_FILE_ID:
return fTestFileStatus;
+ case FINAL_ID:
+ return fIsFinalStatus;
default:
return STATUS_OK;
}
@@ -1727,6 +1799,15 @@ public class NewClassCreationWizardPage extends NewElementWizardPage {
}
/**
+ * Final class field changed
+ * @return the status of the validation
+ * @since 7.0
+ */
+ protected IStatus finalChanged() {
+ return Status.OK_STATUS;
+ }
+
+ /**
* Hook method that gets called when the list of base classes has changed. The method
* validates the base classes and returns the status of the validation.
*
@@ -2080,6 +2161,7 @@ public class NewClassCreationWizardPage extends NewElementWizardPage {
// Update dialog settings.
fDialogSettings.put(KEY_NAMESPACE_SELECTED, fNamespaceSelection.isSelected());
fDialogSettings.put(KEY_TEST_FILE_SELECTED, fTestFileSelection.isSelected());
+ fDialogSettings.put(KEY_FINAL_SELECTED, fIsFinalClassField.isSelected());
String namespace = fNamespaceSelection.isSelected() ? getNamespaceText() : null;
fDialogSettings.put(KEY_NAMESPACE, namespace);
IMethodStub[] stubs = fMethodStubsDialogField.getMethodStubs();
@@ -2103,7 +2185,7 @@ public class NewClassCreationWizardPage extends NewElementWizardPage {
IPath sourcePath = getSourceFileFullPath();
IPath testPath = getTestFileFullPath();
createClass(headerPath, sourcePath, testPath, getClassName(), namespace, getBaseClasses(),
- getSelectedMethodStubs(), monitor);
+ getSelectedMethodStubs(), isFinalClass(), monitor);
}
/**
@@ -2135,9 +2217,10 @@ public class NewClassCreationWizardPage extends NewElementWizardPage {
* @nooverride This method is not intended to be re-implemented or extended by clients.
*/
protected void createClass(IPath headerPath, IPath sourcePath, IPath testPath, String className, String namespace,
- IBaseClassInfo[] baseClasses, IMethodStub[] methodStubs, IProgressMonitor monitor) throws CoreException {
+ IBaseClassInfo[] baseClasses, IMethodStub[] methodStubs, boolean isFinal, IProgressMonitor monitor)
+ throws CoreException {
NewClassCodeGenerator generator = new NewClassCodeGenerator(headerPath, sourcePath, testPath, className,
- namespace, baseClasses, methodStubs);
+ namespace, baseClasses, methodStubs, isFinal);
generator.setForceSourceFileCreation(true);
generator.createClass(monitor);
@@ -2157,6 +2240,15 @@ public class NewClassCreationWizardPage extends NewElementWizardPage {
}
/**
+ * @noreference This method is not intended to be referenced by clients.
+ * @nooverride This method is not intended to be re-implemented or extended by clients.
+ */
+ protected void createClass(IPath headerPath, IPath sourcePath, IPath testPath, String className, String namespace,
+ IBaseClassInfo[] baseClasses, IMethodStub[] methodStubs, IProgressMonitor monitor) throws CoreException {
+ createClass(headerPath, sourcePath, null, className, namespace, baseClasses, methodStubs, false, monitor);
+ }
+
+ /**
* Returns the created class. The method only returns a valid class
* after {@link #createClass} has been called.
*
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/conversion/ConvertProjectWizardPage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/conversion/ConvertProjectWizardPage.java
index e55138733f2..70e312f42c6 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/conversion/ConvertProjectWizardPage.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/conversion/ConvertProjectWizardPage.java
@@ -28,8 +28,7 @@ import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IWorkspace;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.SubProgressMonitor;
+import org.eclipse.core.runtime.SubMonitor;
import org.eclipse.jface.viewers.CheckboxTableViewer;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredContentProvider;
@@ -445,11 +444,8 @@ public abstract class ConvertProjectWizardPage extends WizardPage {
int totalSelected = selection.length;
if (totalSelected > 0) {
- if (monitor == null) {
- monitor = new NullProgressMonitor();
- }
- monitor.beginTask(CUIPlugin.getResourceString(KEY_TITLE), 1);
- convertProjects(selection, monitor, projectID);
+ SubMonitor submonitor = SubMonitor.convert(monitor, CUIPlugin.getResourceString(KEY_TITLE), 1);
+ convertProjects(selection, submonitor.split(1), projectID);
}
}
@@ -462,11 +458,8 @@ public abstract class ConvertProjectWizardPage extends WizardPage {
int totalSelected = selection.length;
if (totalSelected > 0) {
- if (monitor == null) {
- monitor = new NullProgressMonitor();
- }
- monitor.beginTask(CUIPlugin.getResourceString(KEY_TITLE), 1);
- convertProjects(selection, bsId, monitor);
+ SubMonitor submonitor = SubMonitor.convert(monitor, CUIPlugin.getResourceString(KEY_TITLE), 1);
+ convertProjects(selection, bsId, submonitor.split(1));
}
}
}
@@ -482,26 +475,20 @@ public abstract class ConvertProjectWizardPage extends WizardPage {
* @throws CoreException
*/
private void convertProjects(Object[] selected, IProgressMonitor monitor, String projectID) throws CoreException {
- monitor.beginTask(CUIPlugin.getResourceString(KEY_CONVERTING), selected.length);
- try {
- for (Object element : selected) {
- IProject project = (IProject) element;
- convertProject(project, new SubProgressMonitor(monitor, 1), projectID);
- }
- } finally {
- monitor.done();
+ SubMonitor subMonitor = SubMonitor.convert(monitor, CUIPlugin.getResourceString(KEY_CONVERTING),
+ selected.length);
+ for (Object element : selected) {
+ IProject project = (IProject) element;
+ convertProject(project, subMonitor.split(1), projectID);
}
}
private void convertProjects(Object[] selected, String bsId, IProgressMonitor monitor) throws CoreException {
- monitor.beginTask(CUIPlugin.getResourceString(KEY_CONVERTING), selected.length);
- try {
- for (Object element : selected) {
- IProject project = (IProject) element;
- convertProject(project, bsId, new SubProgressMonitor(monitor, 1));
- }
- } finally {
- monitor.done();
+ SubMonitor subMonitor = SubMonitor.convert(monitor, CUIPlugin.getResourceString(KEY_CONVERTING),
+ selected.length);
+ for (Object element : selected) {
+ IProject project = (IProject) element;
+ convertProject(project, bsId, subMonitor.split(1));
}
}
diff --git a/core/org.eclipse.cdt.ui/templateengine/org/eclipse/cdt/ui/templateengine/uitree/UIElementTreeBuilderHelper.java b/core/org.eclipse.cdt.ui/templateengine/org/eclipse/cdt/ui/templateengine/uitree/UIElementTreeBuilderHelper.java
index 135f0f42052..281f7fc292d 100644
--- a/core/org.eclipse.cdt.ui/templateengine/org/eclipse/cdt/ui/templateengine/uitree/UIElementTreeBuilderHelper.java
+++ b/core/org.eclipse.cdt.ui/templateengine/org/eclipse/cdt/ui/templateengine/uitree/UIElementTreeBuilderHelper.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2016 Symbian Software Limited and others.
+ * Copyright (c) 2007, 2020 Symbian Software Limited and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -11,9 +11,11 @@
* Contributors:
* Bala Torati (Symbian) - Initial API and implementation
* IBM Corporation
+ * Alexander Fedorov (ArSysOp) - Bug 561993 - Remove dependency to com.ibm.icu from CDT UI
*******************************************************************************/
package org.eclipse.cdt.ui.templateengine.uitree;
+import java.text.MessageFormat;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@@ -36,8 +38,6 @@ import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
-import com.ibm.icu.text.MessageFormat;
-
/**
* UIElementTreeBuilderHelper provides methods to convert an Element (XML) into
* UIElement. The UIElement can be a simple UI Widget or a group.
diff --git a/core/org.eclipse.cdt.ui/templateengine/org/eclipse/cdt/ui/templateengine/uitree/uiwidgets/UISelectWidget.java b/core/org.eclipse.cdt.ui/templateengine/org/eclipse/cdt/ui/templateengine/uitree/uiwidgets/UISelectWidget.java
index bbb9d35beaa..4a0a0a75fff 100644
--- a/core/org.eclipse.cdt.ui/templateengine/org/eclipse/cdt/ui/templateengine/uitree/uiwidgets/UISelectWidget.java
+++ b/core/org.eclipse.cdt.ui/templateengine/org/eclipse/cdt/ui/templateengine/uitree/uiwidgets/UISelectWidget.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2012 Symbian Software Limited and others.
+ * Copyright (c) 2007, 2020 Symbian Software Limited and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -10,9 +10,11 @@
*
* Contributors:
* Bala Torati (Symbian) - Initial API and implementation
+ * Alexander Fedorov (ArSysOp) - Bug 561993 - Remove dependency to com.ibm.icu from CDT UI
*******************************************************************************/
package org.eclipse.cdt.ui.templateengine.uitree.uiwidgets;
+import java.text.MessageFormat;
import java.util.HashMap;
import java.util.Map;
@@ -30,8 +32,6 @@ import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
-import com.ibm.icu.text.MessageFormat;
-
/**
* This gives a Label and Combo widget.
*/
diff --git a/core/org.eclipse.cdt.ui/templateengine/org/eclipse/cdt/ui/templateengine/uitree/uiwidgets/UIStringListWidget.java b/core/org.eclipse.cdt.ui/templateengine/org/eclipse/cdt/ui/templateengine/uitree/uiwidgets/UIStringListWidget.java
index e2f6185f7a4..aedf0214063 100644
--- a/core/org.eclipse.cdt.ui/templateengine/org/eclipse/cdt/ui/templateengine/uitree/uiwidgets/UIStringListWidget.java
+++ b/core/org.eclipse.cdt.ui/templateengine/org/eclipse/cdt/ui/templateengine/uitree/uiwidgets/UIStringListWidget.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2005, 2016 Symbian Software Limited and others.
+ * Copyright (c) 2005, 2020 Symbian Software Limited and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -10,10 +10,12 @@
*
* Contributors:
* Symbian Software Limited - initial API and implementation
+ * Alexander Fedorov (ArSysOp) - Bug 561993 - Remove dependency to com.ibm.icu from CDT UI
*******************************************************************************/
package org.eclipse.cdt.ui.templateengine.uitree.uiwidgets;
+import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
@@ -34,8 +36,6 @@ import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
-import com.ibm.icu.text.MessageFormat;
-
/**
* This gives a Label and StringList Widget.
*
diff --git a/core/org.eclipse.cdt.ui/utils.ui/org/eclipse/cdt/utils/ui/controls/ControlFactory.java b/core/org.eclipse.cdt.ui/utils.ui/org/eclipse/cdt/utils/ui/controls/ControlFactory.java
index 0870906a18f..7a0e3bbd770 100644
--- a/core/org.eclipse.cdt.ui/utils.ui/org/eclipse/cdt/utils/ui/controls/ControlFactory.java
+++ b/core/org.eclipse.cdt.ui/utils.ui/org/eclipse/cdt/utils/ui/controls/ControlFactory.java
@@ -277,7 +277,6 @@ public class ControlFactory {
button.setText(label);
GridData data = new GridData();
button.setLayoutData(data);
- button.setBackground(group.getBackground());
button.setForeground(group.getForeground());
return button;
}
@@ -296,7 +295,6 @@ public class ControlFactory {
button.setText(label);
GridData data = new GridData();
button.setLayoutData(data);
- button.setBackground(group.getBackground());
button.setForeground(group.getForeground());
return button;
}
diff --git a/core/pom.xml b/core/pom.xml
index 2cfe23338e3..dff64a08a39 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -1,4 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2011, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
@@ -7,7 +17,7 @@
<parent>
<groupId>org.eclipse.cdt</groupId>
<artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
+ <version>10.7.0-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.cdt-parent</artifactId>
diff --git a/cross/org.eclipse.cdt.build.crossgcc-feature/.settings/org.eclipse.core.resources.prefs b/cross/org.eclipse.cdt.build.crossgcc-feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/cross/org.eclipse.cdt.build.crossgcc-feature/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/cross/org.eclipse.cdt.build.crossgcc-feature/feature.xml b/cross/org.eclipse.cdt.build.crossgcc-feature/feature.xml
index aeea59dcc32..069ea21e6a1 100644
--- a/cross/org.eclipse.cdt.build.crossgcc-feature/feature.xml
+++ b/cross/org.eclipse.cdt.build.crossgcc-feature/feature.xml
@@ -1,8 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2009, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<feature
id="org.eclipse.cdt.build.crossgcc"
label="%featureName"
- version="9.10.0.qualifier"
+ version="10.7.0.qualifier"
provider-name="%providerName"
plugin="org.eclipse.cdt.build.crossgcc"
license-feature="org.eclipse.license"
diff --git a/cross/org.eclipse.cdt.build.crossgcc-feature/pom.xml b/cross/org.eclipse.cdt.build.crossgcc-feature/pom.xml
index 4be216954f7..9e5650e873f 100644
--- a/cross/org.eclipse.cdt.build.crossgcc-feature/pom.xml
+++ b/cross/org.eclipse.cdt.build.crossgcc-feature/pom.xml
@@ -1,4 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2011, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
@@ -7,7 +17,7 @@
<parent>
<groupId>org.eclipse.cdt</groupId>
<artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
+ <version>10.7.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
diff --git a/cross/org.eclipse.cdt.build.crossgcc/.classpath b/cross/org.eclipse.cdt.build.crossgcc/.classpath
index eca7bdba8f0..e801ebfb468 100644
--- a/cross/org.eclipse.cdt.build.crossgcc/.classpath
+++ b/cross/org.eclipse.cdt.build.crossgcc/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/cross/org.eclipse.cdt.build.crossgcc/.project b/cross/org.eclipse.cdt.build.crossgcc/.project
index 6726fdfe5d5..6726fdfe5d5 100755..100644
--- a/cross/org.eclipse.cdt.build.crossgcc/.project
+++ b/cross/org.eclipse.cdt.build.crossgcc/.project
diff --git a/cross/org.eclipse.cdt.build.crossgcc/.settings/org.eclipse.core.resources.prefs b/cross/org.eclipse.cdt.build.crossgcc/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/cross/org.eclipse.cdt.build.crossgcc/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/cross/org.eclipse.cdt.build.crossgcc/.settings/org.eclipse.jdt.core.prefs b/cross/org.eclipse.cdt.build.crossgcc/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/cross/org.eclipse.cdt.build.crossgcc/.settings/org.eclipse.jdt.core.prefs
+++ b/cross/org.eclipse.cdt.build.crossgcc/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/cross/org.eclipse.cdt.build.crossgcc/.settings/org.eclipse.jdt.ui.prefs b/cross/org.eclipse.cdt.build.crossgcc/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/cross/org.eclipse.cdt.build.crossgcc/.settings/org.eclipse.jdt.ui.prefs
+++ b/cross/org.eclipse.cdt.build.crossgcc/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/cross/org.eclipse.cdt.build.crossgcc/META-INF/MANIFEST.MF b/cross/org.eclipse.cdt.build.crossgcc/META-INF/MANIFEST.MF
index 03234c30ed0..5c2f5d4fc56 100644
--- a/cross/org.eclipse.cdt.build.crossgcc/META-INF/MANIFEST.MF
+++ b/cross/org.eclipse.cdt.build.crossgcc/META-INF/MANIFEST.MF
@@ -2,18 +2,18 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name
Bundle-SymbolicName: org.eclipse.cdt.build.crossgcc;singleton:=true
-Bundle-Version: 1.1.100.qualifier
-Bundle-Activator: org.eclipse.cdt.internal.build.crossgcc.Activator
+Bundle-Version: 1.2.400.qualifier
Require-Bundle: org.eclipse.core.runtime,
org.eclipse.cdt.core;bundle-version="5.1.0",
- org.eclipse.cdt.managedbuilder.core;bundle-version="5.0.100",
+ org.eclipse.cdt.managedbuilder.core;bundle-version="9.2.0",
org.eclipse.cdt.managedbuilder.gnu.ui;bundle-version="5.0.100",
org.eclipse.core.resources;bundle-version="3.5.0",
org.eclipse.cdt.managedbuilder.ui;bundle-version="8.1.0",
org.eclipse.jface,
org.eclipse.ui.ide
Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-Vendor: %Bundle-Vendor
Bundle-Localization: plugin
Automatic-Module-Name: org.eclipse.cdt.build.crossgcc
+Export-Package: org.eclipse.cdt.internal.build.crossgcc;x-internal:=true
diff --git a/cross/org.eclipse.cdt.build.crossgcc/about.html b/cross/org.eclipse.cdt.build.crossgcc/about.html
index 164f781a8fd..b3134865230 100644
--- a/cross/org.eclipse.cdt.build.crossgcc/about.html
+++ b/cross/org.eclipse.cdt.build.crossgcc/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/cross/org.eclipse.cdt.build.crossgcc/about.mappings b/cross/org.eclipse.cdt.build.crossgcc/about.mappings
index 0824105e69d..936a8039c3e 100644
--- a/cross/org.eclipse.cdt.build.crossgcc/about.mappings
+++ b/cross/org.eclipse.cdt.build.crossgcc/about.mappings
@@ -4,6 +4,6 @@
# This file does not need to be translated.
# The following should contain the build version.
-# e.g. "0=20020612"
-# This value will be added automaticaly via the build scripts
-0=@build@ \ No newline at end of file
+# e.g. "0=20200106-1728"
+# This value will be added automatically via the build scripts
+0=${buildId}
diff --git a/cross/org.eclipse.cdt.build.crossgcc/about.properties b/cross/org.eclipse.cdt.build.crossgcc/about.properties
index a54a097adcf..847353ab4f5 100644
--- a/cross/org.eclipse.cdt.build.crossgcc/about.properties
+++ b/cross/org.eclipse.cdt.build.crossgcc/about.properties
@@ -1,15 +1,15 @@
###############################################################################
-# Copyright (c) 2002, 2009 Wind River Systems and others.
+# Copyright (c) 2009, 2022 Contributors to the Eclipse Foundation
#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
#
-# SPDX-License-Identifier: EPL-2.0
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
#
-# Contributors:
-# Wind River Systems - initial API and implementation
+# SPDX-License-Identifier: EPL-2.0
###############################################################################
# about.properties
# contains externalized strings for about.ini
@@ -18,10 +18,15 @@
# This file should be translated.
# NOTE TO TRANSLATOR: Please do not translate the featureVersion variable.
-blurb=Eclipse GCC Cross Compiler Support\n\
+
+blurb=C/C++ GCC Cross Compiler Support\n\
\n\
Version: {featureVersion}\n\
Build id: {0}\n\
\n\
-(c) Copyright Eclipse contributors and others, 2000, 2010.\n\
+Copyright (c) 2009, 2022 Contributors to the Eclipse Foundation
+\n\
+See the NOTICE file(s) distributed with this work for additional\n\
+information regarding copyright ownership.\n\
+\n\
Visit http://www.eclipse.org/cdt
diff --git a/cross/org.eclipse.cdt.build.crossgcc/build.properties b/cross/org.eclipse.cdt.build.crossgcc/build.properties
index a45ffb3d12a..a45ffb3d12a 100755..100644
--- a/cross/org.eclipse.cdt.build.crossgcc/build.properties
+++ b/cross/org.eclipse.cdt.build.crossgcc/build.properties
diff --git a/cross/org.eclipse.cdt.build.crossgcc/src/org/eclipse/cdt/internal/build/crossgcc/Activator.java b/cross/org.eclipse.cdt.build.crossgcc/src/org/eclipse/cdt/internal/build/crossgcc/Activator.java
deleted file mode 100755
index 87ec48d065e..00000000000
--- a/cross/org.eclipse.cdt.build.crossgcc/src/org/eclipse/cdt/internal/build/crossgcc/Activator.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2012 Wind River Systems, Inc. and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Doug Schaefer - initial API and implementation
- * Marc-Andre Laperle
- *******************************************************************************/
-package org.eclipse.cdt.internal.build.crossgcc;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Plugin;
-import org.eclipse.core.runtime.Status;
-import org.osgi.framework.BundleContext;
-
-/**
- * The activator class controls the plug-in life cycle
- */
-public class Activator extends Plugin {
-
- // The plug-in ID
- public static final String PLUGIN_ID = "tut.cross.good"; //$NON-NLS-1$
-
- // The shared instance
- private static Activator plugin;
-
- /**
- * The constructor
- */
- public Activator() {
- }
-
- @Override
- public void start(BundleContext context) throws Exception {
- super.start(context);
- plugin = this;
- }
-
- @Override
- public void stop(BundleContext context) throws Exception {
- plugin = null;
- super.stop(context);
- }
-
- /**
- * Logs the specified status with this plug-in's log.
- *
- * @param status
- * status to log
- */
- public static void log(IStatus status) {
- getDefault().getLog().log(status);
- }
-
- /**
- * Logs an internal error with the specified throwable
- *
- * @param e
- * the exception to be logged
- */
- public static void log(Throwable e) {
- log(new Status(IStatus.ERROR, PLUGIN_ID, 1, "Internal Error", e)); //$NON-NLS-1$
- }
-
- /**
- * Returns the shared instance
- *
- * @return the shared instance
- */
- public static Activator getDefault() {
- return plugin;
- }
-
-}
diff --git a/cross/org.eclipse.cdt.build.crossgcc/src/org/eclipse/cdt/internal/build/crossgcc/CrossCommandLineGenerator.java b/cross/org.eclipse.cdt.build.crossgcc/src/org/eclipse/cdt/internal/build/crossgcc/CrossCommandLineGenerator.java
index 076c83fe7c2..0e6505e11e1 100755..100644
--- a/cross/org.eclipse.cdt.build.crossgcc/src/org/eclipse/cdt/internal/build/crossgcc/CrossCommandLineGenerator.java
+++ b/cross/org.eclipse.cdt.build.crossgcc/src/org/eclipse/cdt/internal/build/crossgcc/CrossCommandLineGenerator.java
@@ -16,10 +16,10 @@ package org.eclipse.cdt.internal.build.crossgcc;
import org.eclipse.cdt.managedbuilder.core.IBuildObject;
import org.eclipse.cdt.managedbuilder.core.IManagedCommandLineInfo;
import org.eclipse.cdt.managedbuilder.core.IOption;
+import org.eclipse.cdt.managedbuilder.core.IResourceConfiguration;
import org.eclipse.cdt.managedbuilder.core.ITool;
import org.eclipse.cdt.managedbuilder.core.IToolChain;
-import org.eclipse.cdt.managedbuilder.internal.core.ManagedCommandLineGenerator;
-import org.eclipse.cdt.managedbuilder.internal.core.ResourceConfiguration;
+import org.eclipse.cdt.managedbuilder.core.ManagedCommandLineGenerator;
public class CrossCommandLineGenerator extends ManagedCommandLineGenerator {
@@ -29,10 +29,11 @@ public class CrossCommandLineGenerator extends ManagedCommandLineGenerator {
String commandLinePattern) {
IBuildObject parent = tool.getParent();
IToolChain toolchain;
- if (parent instanceof ResourceConfiguration)
- toolchain = ((ResourceConfiguration) parent).getBaseToolChain();
- else
+ if (parent instanceof IResourceConfiguration) {
+ toolchain = ((IResourceConfiguration) parent).getBaseToolChain();
+ } else {
toolchain = (IToolChain) parent;
+ }
IOption option = toolchain.getOptionBySuperClassId("cdt.managedbuild.option.gnu.cross.prefix"); //$NON-NLS-1$
String prefix = (String) option.getValue();
diff --git a/cross/org.eclipse.cdt.build.crossgcc/src/org/eclipse/cdt/internal/build/crossgcc/CrossEnvironmentVariableSupplier.java b/cross/org.eclipse.cdt.build.crossgcc/src/org/eclipse/cdt/internal/build/crossgcc/CrossEnvironmentVariableSupplier.java
index 6846033b1c4..df43d11613d 100644
--- a/cross/org.eclipse.cdt.build.crossgcc/src/org/eclipse/cdt/internal/build/crossgcc/CrossEnvironmentVariableSupplier.java
+++ b/cross/org.eclipse.cdt.build.crossgcc/src/org/eclipse/cdt/internal/build/crossgcc/CrossEnvironmentVariableSupplier.java
@@ -63,9 +63,7 @@ public class CrossEnvironmentVariableSupplier implements IConfigurationEnvironme
}
public static boolean isVar(String name) {
- // Windows has case insensitive env var names
- return Platform.getOS().equals(Platform.OS_WIN32) ? name.equalsIgnoreCase(PathEnvironmentVariable.name)
- : name.equals(PathEnvironmentVariable.name);
+ return name.equals(PathEnvironmentVariable.name);
}
@Override
diff --git a/cross/org.eclipse.cdt.build.crossgcc/src/org/eclipse/cdt/internal/build/crossgcc/SetCrossCommandWizardPage.java b/cross/org.eclipse.cdt.build.crossgcc/src/org/eclipse/cdt/internal/build/crossgcc/SetCrossCommandWizardPage.java
index a2a19c0ea8e..a4d83355274 100644
--- a/cross/org.eclipse.cdt.build.crossgcc/src/org/eclipse/cdt/internal/build/crossgcc/SetCrossCommandWizardPage.java
+++ b/cross/org.eclipse.cdt.build.crossgcc/src/org/eclipse/cdt/internal/build/crossgcc/SetCrossCommandWizardPage.java
@@ -53,8 +53,8 @@ public class SetCrossCommandWizardPage extends MBSCustomPage {
// Note: The shared defaults keys don't have "cross" in them because we want to keep
// compatibility with defaults that were saved when it used to be a template
- static final String SHARED_DEFAULTS_PREFIX_KEY = "prefix";
- static final String SHARED_DEFAULTS_PATH_KEY = "path";
+ static final String SHARED_DEFAULTS_PREFIX_KEY = "prefix"; //$NON-NLS-1$
+ static final String SHARED_DEFAULTS_PATH_KEY = "path"; //$NON-NLS-1$
public SetCrossCommandWizardPage() {
pageID = PAGE_ID;
diff --git a/cross/org.eclipse.cdt.launch.remote-feature/.settings/org.eclipse.core.resources.prefs b/cross/org.eclipse.cdt.launch.remote-feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/cross/org.eclipse.cdt.launch.remote-feature/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/cross/org.eclipse.cdt.launch.remote-feature/feature.xml b/cross/org.eclipse.cdt.launch.remote-feature/feature.xml
index 2852619b94b..af6c8944311 100644
--- a/cross/org.eclipse.cdt.launch.remote-feature/feature.xml
+++ b/cross/org.eclipse.cdt.launch.remote-feature/feature.xml
@@ -1,8 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2009, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<feature
id="org.eclipse.cdt.launch.remote"
label="%featureName"
- version="9.10.0.qualifier"
+ version="10.7.0.qualifier"
provider-name="%providerName"
license-feature="org.eclipse.license"
license-feature-version="0.0.0">
diff --git a/cross/org.eclipse.cdt.launch.remote-feature/pom.xml b/cross/org.eclipse.cdt.launch.remote-feature/pom.xml
index f23120e4d3c..551c8ab7286 100644
--- a/cross/org.eclipse.cdt.launch.remote-feature/pom.xml
+++ b/cross/org.eclipse.cdt.launch.remote-feature/pom.xml
@@ -1,4 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2011, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
@@ -7,7 +17,7 @@
<parent>
<groupId>org.eclipse.cdt</groupId>
<artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
+ <version>10.7.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
diff --git a/cross/org.eclipse.cdt.launch.remote/.classpath b/cross/org.eclipse.cdt.launch.remote/.classpath
index 3704e03581e..565c6dbc68d 100644
--- a/cross/org.eclipse.cdt.launch.remote/.classpath
+++ b/cross/org.eclipse.cdt.launch.remote/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins">
<accessrules>
<accessrule kind="discouraged" pattern="**/internal/**"/>
diff --git a/cross/org.eclipse.cdt.launch.remote/.settings/org.eclipse.core.resources.prefs b/cross/org.eclipse.cdt.launch.remote/.settings/org.eclipse.core.resources.prefs
index 187ed0c6d77..73063cf5d2f 100644
--- a/cross/org.eclipse.cdt.launch.remote/.settings/org.eclipse.core.resources.prefs
+++ b/cross/org.eclipse.cdt.launch.remote/.settings/org.eclipse.core.resources.prefs
@@ -1,3 +1,4 @@
#Fri Apr 17 14:45:21 EDT 2009
eclipse.preferences.version=1
encoding//src/org/eclipse/cdt/internal/launch/remote/messages.properties=8859_1
+encoding/<project>=UTF-8
diff --git a/cross/org.eclipse.cdt.launch.remote/.settings/org.eclipse.jdt.core.prefs b/cross/org.eclipse.cdt.launch.remote/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/cross/org.eclipse.cdt.launch.remote/.settings/org.eclipse.jdt.core.prefs
+++ b/cross/org.eclipse.cdt.launch.remote/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/cross/org.eclipse.cdt.launch.remote/.settings/org.eclipse.jdt.ui.prefs b/cross/org.eclipse.cdt.launch.remote/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/cross/org.eclipse.cdt.launch.remote/.settings/org.eclipse.jdt.ui.prefs
+++ b/cross/org.eclipse.cdt.launch.remote/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/cross/org.eclipse.cdt.launch.remote/META-INF/MANIFEST.MF b/cross/org.eclipse.cdt.launch.remote/META-INF/MANIFEST.MF
index 4acd8276dac..ed788e81fd9 100644
--- a/cross/org.eclipse.cdt.launch.remote/META-INF/MANIFEST.MF
+++ b/cross/org.eclipse.cdt.launch.remote/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.launch.remote;singleton:=true
-Bundle-Version: 2.5.1.qualifier
+Bundle-Version: 2.6.300.qualifier
Bundle-Activator: org.eclipse.cdt.internal.launch.remote.Activator
Bundle-Localization: plugin
Require-Bundle: org.eclipse.cdt.launch,
@@ -24,7 +24,7 @@ Require-Bundle: org.eclipse.cdt.launch,
Bundle-ActivationPolicy: lazy
Eclipse-LazyStart: true
Bundle-Vendor: %providerName
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Export-Package: org.eclipse.cdt.internal.launch.remote;x-internal:=true,
org.eclipse.cdt.launch.remote;x-internal:=true,
org.eclipse.cdt.launch.remote.launching;x-internal:=true,
diff --git a/cross/org.eclipse.cdt.launch.remote/about.html b/cross/org.eclipse.cdt.launch.remote/about.html
index 164f781a8fd..b3134865230 100644
--- a/cross/org.eclipse.cdt.launch.remote/about.html
+++ b/cross/org.eclipse.cdt.launch.remote/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/cross/org.eclipse.cdt.launch.remote/about.ini b/cross/org.eclipse.cdt.launch.remote/about.ini
index af0faabd4f8..e07a7bb377e 100644
--- a/cross/org.eclipse.cdt.launch.remote/about.ini
+++ b/cross/org.eclipse.cdt.launch.remote/about.ini
@@ -16,12 +16,9 @@ featureImage=cdt_logo_icon32.png
# Property "aboutImage" contains path to product image (500x330 or 115x164)
# needed for primary features only
-# Property "appName" contains name of the application (not translated)
+# Property "appName" contains name of the application (translated)
# needed for primary features only
-# Property "welcomePage" contains path to welcome page (special XML-based format)
-# optional
-
# Property "welcomePerspective" contains the id of the perspective in which the
# welcome page is to be opened.
-# optional \ No newline at end of file
+# optional
diff --git a/cross/org.eclipse.cdt.launch.remote/about.mappings b/cross/org.eclipse.cdt.launch.remote/about.mappings
index bddaab43109..936a8039c3e 100644
--- a/cross/org.eclipse.cdt.launch.remote/about.mappings
+++ b/cross/org.eclipse.cdt.launch.remote/about.mappings
@@ -3,4 +3,7 @@
# java.io.Properties file (ISO 8859-1 with "\" escapes)
# This file does not need to be translated.
-0=@build@ \ No newline at end of file
+# The following should contain the build version.
+# e.g. "0=20200106-1728"
+# This value will be added automatically via the build scripts
+0=${buildId}
diff --git a/cross/org.eclipse.cdt.launch.remote/about.properties b/cross/org.eclipse.cdt.launch.remote/about.properties
index c929eb9160d..6bf2c3d41f1 100644
--- a/cross/org.eclipse.cdt.launch.remote/about.properties
+++ b/cross/org.eclipse.cdt.launch.remote/about.properties
@@ -1,5 +1,8 @@
###############################################################################
-# Copyright (c) 2006, 2009 PalmSource, Inc. and others.
+# Copyright (c) 2009, 2022 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
#
# This program and the accompanying materials
# are made available under the terms of the Eclipse Public License 2.0
@@ -7,22 +10,23 @@
# https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# PalmSource - initial API and implementation
###############################################################################
# about.properties
# contains externalized strings for about.ini
# java.io.Properties file (ISO 8859-1 with "\" escapes)
# fill-ins are supplied by about.mappings
# This file should be translated.
-#
-# Do not translate any values surrounded by {}
+# NOTE TO TRANSLATOR: Please do not translate the featureVersion variable.
-blurb=C/C++ Remote Debug Launcher\n\
+
+blurb=C/C++ Remote Launch\n\
\n\
Version: {featureVersion}\n\
Build id: {0}\n\
\n\
-(c) Copyright PalmSource, Inc., Wind River Systems, Inc. and others 2006, 2010.\n\
+Copyright (c) 2009, 2022 Contributors to the Eclipse Foundation
+\n\
+See the NOTICE file(s) distributed with this work for additional\n\
+information regarding copyright ownership.\n\
+\n\
Visit http://www.eclipse.org/cdt
diff --git a/cross/org.eclipse.cdt.launch.remote/src/org/eclipse/cdt/launch/remote/tabs/RemoteDSFGDBDebuggerPage.java b/cross/org.eclipse.cdt.launch.remote/src/org/eclipse/cdt/launch/remote/tabs/RemoteDSFGDBDebuggerPage.java
index c626617bc42..068feea9c71 100644
--- a/cross/org.eclipse.cdt.launch.remote/src/org/eclipse/cdt/launch/remote/tabs/RemoteDSFGDBDebuggerPage.java
+++ b/cross/org.eclipse.cdt.launch.remote/src/org/eclipse/cdt/launch/remote/tabs/RemoteDSFGDBDebuggerPage.java
@@ -26,6 +26,8 @@ import org.eclipse.core.runtime.CoreException;
import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CTabFolder;
+import org.eclipse.swt.custom.CTabItem;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
@@ -35,8 +37,6 @@ import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.TabFolder;
-import org.eclipse.swt.widgets.TabItem;
import org.eclipse.swt.widgets.Text;
public class RemoteDSFGDBDebuggerPage extends GdbDebuggerPage {
@@ -145,8 +145,8 @@ public class RemoteDSFGDBDebuggerPage extends GdbDebuggerPage {
configuration.setAttribute(IGDBLaunchConfigurationConstants.ATTR_DEBUGGER_REMOTE_TIMEOUT_VALUE, str);
}
- protected void createGdbserverSettingsTab(TabFolder tabFolder) {
- TabItem tabItem = new TabItem(tabFolder, SWT.NONE);
+ protected void createGdbserverSettingsTab(CTabFolder tabFolder) {
+ CTabItem tabItem = new CTabItem(tabFolder, SWT.NONE);
tabItem.setText(Messages.Gdbserver_Settings_Tab_Name);
Composite comp = new Composite(tabFolder, SWT.NULL);
@@ -239,11 +239,8 @@ public class RemoteDSFGDBDebuggerPage extends GdbDebuggerPage {
fRemoteTimeoutValueText.setEnabled(fRemoteTimeoutEnabledCheckbox.getSelection());
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.debug.mi.internal.ui.GDBDebuggerPage#createTabs(org.eclipse.swt.widgets.TabFolder)
- */
@Override
- public void createTabs(TabFolder tabFolder) {
+ public void createTabs(CTabFolder tabFolder) {
super.createTabs(tabFolder);
createGdbserverSettingsTab(tabFolder);
}
diff --git a/cross/org.eclipse.cdt.launch.serial-feature/.settings/org.eclipse.core.resources.prefs b/cross/org.eclipse.cdt.launch.serial-feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/cross/org.eclipse.cdt.launch.serial-feature/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/cross/org.eclipse.cdt.launch.serial-feature/feature.xml b/cross/org.eclipse.cdt.launch.serial-feature/feature.xml
index 52133fcf4a8..396cf801e3d 100644
--- a/cross/org.eclipse.cdt.launch.serial-feature/feature.xml
+++ b/cross/org.eclipse.cdt.launch.serial-feature/feature.xml
@@ -1,9 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2017, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<feature
id="org.eclipse.cdt.launch.serial.feature"
label="%featureName"
- version="9.10.0.qualifier"
+ version="10.7.0.qualifier"
provider-name="%providerName"
+ plugin="org.eclipse.cdt.launch.serial.ui"
license-feature="org.eclipse.license"
license-feature-version="0.0.0">
diff --git a/cross/org.eclipse.cdt.launch.serial.core/.classpath b/cross/org.eclipse.cdt.launch.serial.core/.classpath
index eca7bdba8f0..e801ebfb468 100644
--- a/cross/org.eclipse.cdt.launch.serial.core/.classpath
+++ b/cross/org.eclipse.cdt.launch.serial.core/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/cross/org.eclipse.cdt.launch.serial.core/.project b/cross/org.eclipse.cdt.launch.serial.core/.project
index 26dde19dd6d..77a4aedb4bd 100644
--- a/cross/org.eclipse.cdt.launch.serial.core/.project
+++ b/cross/org.eclipse.cdt.launch.serial.core/.project
@@ -20,9 +20,15 @@
<arguments>
</arguments>
</buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.pde.PluginNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
</natures>
</projectDescription>
diff --git a/cross/org.eclipse.cdt.launch.serial.core/.settings/org.eclipse.core.resources.prefs b/cross/org.eclipse.cdt.launch.serial.core/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/cross/org.eclipse.cdt.launch.serial.core/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/cross/org.eclipse.cdt.launch.serial.core/.settings/org.eclipse.jdt.core.prefs b/cross/org.eclipse.cdt.launch.serial.core/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/cross/org.eclipse.cdt.launch.serial.core/.settings/org.eclipse.jdt.core.prefs
+++ b/cross/org.eclipse.cdt.launch.serial.core/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/cross/org.eclipse.cdt.launch.serial.core/.settings/org.eclipse.jdt.ui.prefs b/cross/org.eclipse.cdt.launch.serial.core/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/cross/org.eclipse.cdt.launch.serial.core/.settings/org.eclipse.jdt.ui.prefs
+++ b/cross/org.eclipse.cdt.launch.serial.core/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/cross/org.eclipse.cdt.launch.serial.core/META-INF/MANIFEST.MF b/cross/org.eclipse.cdt.launch.serial.core/META-INF/MANIFEST.MF
index 346beb6a1fd..c8d79112883 100644
--- a/cross/org.eclipse.cdt.launch.serial.core/META-INF/MANIFEST.MF
+++ b/cross/org.eclipse.cdt.launch.serial.core/META-INF/MANIFEST.MF
@@ -1,10 +1,10 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
-Bundle-Name: Launch over Serial Core Plugin
+Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.launch.serial.core;singleton:=true
-Bundle-Version: 1.0.200.qualifier
-Bundle-Vendor: Eclipse CDT
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-Version: 1.1.100.qualifier
+Bundle-Vendor: %providerName
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Require-Bundle: org.eclipse.core.runtime;bundle-version="3.13.0",
org.eclipse.debug.core;bundle-version="3.11.0",
org.eclipse.launchbar.core;bundle-version="2.2.0",
@@ -15,3 +15,4 @@ Export-Package: org.eclipse.cdt.launch.serial
Bundle-Activator: org.eclipse.cdt.launch.serial.internal.Activator
Bundle-ActivationPolicy: lazy
Automatic-Module-Name: org.eclipse.cdt.launch.serial.core
+Bundle-Localization: plugin
diff --git a/cross/org.eclipse.cdt.launch.serial.core/about.html b/cross/org.eclipse.cdt.launch.serial.core/about.html
index 164f781a8fd..b3134865230 100644
--- a/cross/org.eclipse.cdt.launch.serial.core/about.html
+++ b/cross/org.eclipse.cdt.launch.serial.core/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/cross/org.eclipse.cdt.launch.serial.core/build.properties b/cross/org.eclipse.cdt.launch.serial.core/build.properties
index e5a949cc43c..7b3c227b84a 100644
--- a/cross/org.eclipse.cdt.launch.serial.core/build.properties
+++ b/cross/org.eclipse.cdt.launch.serial.core/build.properties
@@ -3,5 +3,6 @@ output.. = bin/
bin.includes = META-INF/,\
.,\
plugin.xml,\
+ plugin.properties,\
about.html
src.includes = about.html
diff --git a/cross/org.eclipse.cdt.launch.serial.core/plugin.properties b/cross/org.eclipse.cdt.launch.serial.core/plugin.properties
new file mode 100644
index 00000000000..381e742c9f9
--- /dev/null
+++ b/cross/org.eclipse.cdt.launch.serial.core/plugin.properties
@@ -0,0 +1,14 @@
+##################################################################################
+# Copyright (c) 2020 Torbjörn Svensson and others. All rights reserved.
+# This program and the accompanying materials are made available under the terms
+# of the Eclipse Public License 2.0 which accompanies this distribution, and is
+# available at https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Torbjörn Svensson - initial API and implementation
+##################################################################################
+
+pluginName = Launch over Serial Core Plugin
+providerName = Eclipse CDT
diff --git a/cross/org.eclipse.cdt.launch.serial.ui/.classpath b/cross/org.eclipse.cdt.launch.serial.ui/.classpath
index eca7bdba8f0..e801ebfb468 100644
--- a/cross/org.eclipse.cdt.launch.serial.ui/.classpath
+++ b/cross/org.eclipse.cdt.launch.serial.ui/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/cross/org.eclipse.cdt.launch.serial.ui/.project b/cross/org.eclipse.cdt.launch.serial.ui/.project
index 9da42b751e3..642db5b43a3 100644
--- a/cross/org.eclipse.cdt.launch.serial.ui/.project
+++ b/cross/org.eclipse.cdt.launch.serial.ui/.project
@@ -20,9 +20,15 @@
<arguments>
</arguments>
</buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.pde.PluginNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
</natures>
</projectDescription>
diff --git a/cross/org.eclipse.cdt.launch.serial.ui/.settings/org.eclipse.core.resources.prefs b/cross/org.eclipse.cdt.launch.serial.ui/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/cross/org.eclipse.cdt.launch.serial.ui/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/cross/org.eclipse.cdt.launch.serial.ui/.settings/org.eclipse.jdt.core.prefs b/cross/org.eclipse.cdt.launch.serial.ui/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/cross/org.eclipse.cdt.launch.serial.ui/.settings/org.eclipse.jdt.core.prefs
+++ b/cross/org.eclipse.cdt.launch.serial.ui/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/cross/org.eclipse.cdt.launch.serial.ui/.settings/org.eclipse.jdt.ui.prefs b/cross/org.eclipse.cdt.launch.serial.ui/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/cross/org.eclipse.cdt.launch.serial.ui/.settings/org.eclipse.jdt.ui.prefs
+++ b/cross/org.eclipse.cdt.launch.serial.ui/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/cross/org.eclipse.cdt.launch.serial.ui/META-INF/MANIFEST.MF b/cross/org.eclipse.cdt.launch.serial.ui/META-INF/MANIFEST.MF
index 05910bea839..e65fcda51fb 100644
--- a/cross/org.eclipse.cdt.launch.serial.ui/META-INF/MANIFEST.MF
+++ b/cross/org.eclipse.cdt.launch.serial.ui/META-INF/MANIFEST.MF
@@ -1,10 +1,10 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
-Bundle-Name: Ui
+Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.launch.serial.ui;singleton:=true
-Bundle-Vendor: Eclipse CDT
-Bundle-Version: 1.0.200.qualifier
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-Vendor: %providerName
+Bundle-Version: 1.1.300.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Require-Bundle: org.eclipse.core.runtime;bundle-version="3.13.0",
org.eclipse.ui;bundle-version="3.109.0",
org.eclipse.debug.ui;bundle-version="3.12.50",
@@ -16,3 +16,4 @@ Require-Bundle: org.eclipse.core.runtime;bundle-version="3.13.0",
Bundle-Activator: org.eclipse.cdt.launch.serial.ui.internal.Activator
Bundle-ActivationPolicy: lazy
Automatic-Module-Name: org.eclipse.cdt.launch.serial.ui
+Bundle-Localization: plugin
diff --git a/cross/org.eclipse.cdt.launch.serial.ui/about.html b/cross/org.eclipse.cdt.launch.serial.ui/about.html
index 164f781a8fd..b3134865230 100644
--- a/cross/org.eclipse.cdt.launch.serial.ui/about.html
+++ b/cross/org.eclipse.cdt.launch.serial.ui/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/cross/org.eclipse.cdt.launch.serial.ui/about.ini b/cross/org.eclipse.cdt.launch.serial.ui/about.ini
new file mode 100644
index 00000000000..e07a7bb377e
--- /dev/null
+++ b/cross/org.eclipse.cdt.launch.serial.ui/about.ini
@@ -0,0 +1,24 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%blurb
+
+# Property "windowImage" contains path to window icon (16x16)
+# needed for primary features only
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=cdt_logo_icon32.png
+
+# Property "aboutImage" contains path to product image (500x330 or 115x164)
+# needed for primary features only
+
+# Property "appName" contains name of the application (translated)
+# needed for primary features only
+
+# Property "welcomePerspective" contains the id of the perspective in which the
+# welcome page is to be opened.
+# optional
diff --git a/cross/org.eclipse.cdt.launch.serial.ui/about.mappings b/cross/org.eclipse.cdt.launch.serial.ui/about.mappings
new file mode 100644
index 00000000000..936a8039c3e
--- /dev/null
+++ b/cross/org.eclipse.cdt.launch.serial.ui/about.mappings
@@ -0,0 +1,9 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+# The following should contain the build version.
+# e.g. "0=20200106-1728"
+# This value will be added automatically via the build scripts
+0=${buildId}
diff --git a/cross/org.eclipse.cdt.launch.serial.ui/about.properties b/cross/org.eclipse.cdt.launch.serial.ui/about.properties
new file mode 100644
index 00000000000..1338eb9b145
--- /dev/null
+++ b/cross/org.eclipse.cdt.launch.serial.ui/about.properties
@@ -0,0 +1,32 @@
+###############################################################################
+# Copyright (c) 2017, 2022 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+# about.properties
+# contains externalized strings for about.ini
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# fill-ins are supplied by about.mappings
+# This file should be translated.
+# NOTE TO TRANSLATOR: Please do not translate the featureVersion variable.
+
+
+blurb=C/C++ Launch over Serial\n\
+\n\
+Version: {featureVersion}\n\
+Build id: {0}\n\
+\n\
+Copyright (c) 2017, 2022 Contributors to the Eclipse Foundation
+\n\
+See the NOTICE file(s) distributed with this work for additional\n\
+information regarding copyright ownership.\n\
+\n\
+Visit http://www.eclipse.org/cdt
diff --git a/cross/org.eclipse.cdt.launch.serial.ui/build.properties b/cross/org.eclipse.cdt.launch.serial.ui/build.properties
index 461e5612867..4d9e9263e78 100644
--- a/cross/org.eclipse.cdt.launch.serial.ui/build.properties
+++ b/cross/org.eclipse.cdt.launch.serial.ui/build.properties
@@ -4,5 +4,10 @@ bin.includes = META-INF/,\
.,\
plugin.xml,\
icons/,\
- about.html
+ plugin.properties,\
+ about.html,\
+ cdt_logo_icon32.png,\
+ about.properties,\
+ about.mappings,\
+ about.ini
src.includes = about.html
diff --git a/cross/org.eclipse.cdt.launch.serial.ui/cdt_logo_icon32.png b/cross/org.eclipse.cdt.launch.serial.ui/cdt_logo_icon32.png
new file mode 100644
index 00000000000..470ca81b327
--- /dev/null
+++ b/cross/org.eclipse.cdt.launch.serial.ui/cdt_logo_icon32.png
Binary files differ
diff --git a/cross/org.eclipse.cdt.launch.serial.ui/plugin.properties b/cross/org.eclipse.cdt.launch.serial.ui/plugin.properties
new file mode 100644
index 00000000000..ab86ed3fe9d
--- /dev/null
+++ b/cross/org.eclipse.cdt.launch.serial.ui/plugin.properties
@@ -0,0 +1,14 @@
+##################################################################################
+# Copyright (c) 2020 Torbjörn Svensson and others. All rights reserved.
+# This program and the accompanying materials are made available under the terms
+# of the Eclipse Public License 2.0 which accompanies this distribution, and is
+# available at https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Torbjörn Svensson - initial API and implementation
+##################################################################################
+
+pluginName = Launch over Serial UI Plugin
+providerName = Eclipse CDT
diff --git a/cross/pom.xml b/cross/pom.xml
index ec598f37634..e37b5a6cb47 100644
--- a/cross/pom.xml
+++ b/cross/pom.xml
@@ -1,4 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2017, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
@@ -7,7 +17,7 @@
<parent>
<groupId>org.eclipse.cdt</groupId>
<artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
+ <version>10.7.0-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.cdt.cross-parent</artifactId>
diff --git a/debug/org.eclipse.cdt.debug.application.doc/.settings/org.eclipse.core.resources.prefs b/debug/org.eclipse.cdt.debug.application.doc/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/debug/org.eclipse.cdt.debug.application.doc/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/debug/org.eclipse.cdt.debug.application.doc/.settings/org.eclipse.jdt.core.prefs b/debug/org.eclipse.cdt.debug.application.doc/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 2b6ecff8a01..00000000000
--- a/debug/org.eclipse.cdt.debug.application.doc/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,464 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
-org.eclipse.jdt.core.codeComplete.argumentPrefixes=
-org.eclipse.jdt.core.codeComplete.argumentSuffixes=
-org.eclipse.jdt.core.codeComplete.fieldPrefixes=
-org.eclipse.jdt.core.codeComplete.fieldSuffixes=
-org.eclipse.jdt.core.codeComplete.localPrefixes=
-org.eclipse.jdt.core.codeComplete.localSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
-org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
-org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
-org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
-org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
-org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
-org.eclipse.jdt.core.compiler.problem.APILeak=warning
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
-org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
-org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
-org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
-org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
-org.eclipse.jdt.core.compiler.problem.nullReference=error
-org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
-org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
-org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
-org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
-org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
-org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
-org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
-org.eclipse.jdt.core.formatter.align_with_spaces=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
-org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
-org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
-org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
-org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=0
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
-org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
-org.eclipse.jdt.core.formatter.comment.format_block_comments=false
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
-org.eclipse.jdt.core.formatter.comment.format_line_comments=false
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
-org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
-org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
-org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.join_lines_in_comments=true
-org.eclipse.jdt.core.formatter.join_wrapped_lines=true
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=120
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_on_off_tags=true
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
-org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
-org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/debug/org.eclipse.cdt.debug.application.doc/.settings/org.eclipse.jdt.ui.prefs b/debug/org.eclipse.cdt.debug.application.doc/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index e44576346c4..00000000000
--- a/debug/org.eclipse.cdt.debug.application.doc/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,133 +0,0 @@
-cleanup.add_default_serial_version_id=true
-cleanup.add_generated_serial_version_id=false
-cleanup.add_missing_annotations=true
-cleanup.add_missing_deprecated_annotations=true
-cleanup.add_missing_methods=false
-cleanup.add_missing_nls_tags=false
-cleanup.add_missing_override_annotations=true
-cleanup.add_missing_override_annotations_interface_methods=true
-cleanup.add_serial_version_id=false
-cleanup.always_use_blocks=true
-cleanup.always_use_parentheses_in_expressions=false
-cleanup.always_use_this_for_non_static_field_access=false
-cleanup.always_use_this_for_non_static_method_access=false
-cleanup.convert_functional_interfaces=false
-cleanup.convert_to_enhanced_for_loop=false
-cleanup.correct_indentation=false
-cleanup.format_source_code=true
-cleanup.format_source_code_changes_only=false
-cleanup.insert_inferred_type_arguments=false
-cleanup.make_local_variable_final=true
-cleanup.make_parameters_final=false
-cleanup.make_private_fields_final=true
-cleanup.make_type_abstract_if_missing_method=false
-cleanup.make_variable_declarations_final=false
-cleanup.never_use_blocks=false
-cleanup.never_use_parentheses_in_expressions=true
-cleanup.organize_imports=true
-cleanup.qualify_static_field_accesses_with_declaring_class=false
-cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-cleanup.qualify_static_member_accesses_with_declaring_class=false
-cleanup.qualify_static_method_accesses_with_declaring_class=false
-cleanup.remove_private_constructors=true
-cleanup.remove_redundant_modifiers=false
-cleanup.remove_redundant_semicolons=true
-cleanup.remove_redundant_type_arguments=true
-cleanup.remove_trailing_whitespaces=true
-cleanup.remove_trailing_whitespaces_all=true
-cleanup.remove_trailing_whitespaces_ignore_empty=false
-cleanup.remove_unnecessary_casts=true
-cleanup.remove_unnecessary_nls_tags=false
-cleanup.remove_unused_imports=true
-cleanup.remove_unused_local_variables=false
-cleanup.remove_unused_private_fields=true
-cleanup.remove_unused_private_members=false
-cleanup.remove_unused_private_methods=true
-cleanup.remove_unused_private_types=true
-cleanup.sort_members=false
-cleanup.sort_members_all=false
-cleanup.use_anonymous_class_creation=false
-cleanup.use_blocks=false
-cleanup.use_blocks_only_for_return_and_throw=false
-cleanup.use_lambda=true
-cleanup.use_parentheses_in_expressions=false
-cleanup.use_this_for_non_static_field_access=false
-cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-cleanup.use_this_for_non_static_method_access=false
-cleanup.use_this_for_non_static_method_access_only_if_necessary=true
-cleanup_profile=_CDT
-cleanup_settings_version=2
-eclipse.preferences.version=1
-editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=_CDT
-formatter_settings_version=14
-internal.default.compliance=user
-org.eclipse.jdt.ui.exception.name=e
-org.eclipse.jdt.ui.gettersetter.use.is=true
-org.eclipse.jdt.ui.ignorelowercasenames=true
-org.eclipse.jdt.ui.importorder=java;javax;org;com;
-org.eclipse.jdt.ui.keywordthis=false
-org.eclipse.jdt.ui.ondemandthreshold=1000
-org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.staticondemandthreshold=1000
-org.eclipse.jdt.ui.text.custom_code_templates=
-sp_cleanup.add_default_serial_version_id=true
-sp_cleanup.add_generated_serial_version_id=false
-sp_cleanup.add_missing_annotations=true
-sp_cleanup.add_missing_deprecated_annotations=true
-sp_cleanup.add_missing_methods=false
-sp_cleanup.add_missing_nls_tags=false
-sp_cleanup.add_missing_override_annotations=true
-sp_cleanup.add_missing_override_annotations_interface_methods=true
-sp_cleanup.add_serial_version_id=false
-sp_cleanup.always_use_blocks=true
-sp_cleanup.always_use_parentheses_in_expressions=false
-sp_cleanup.always_use_this_for_non_static_field_access=false
-sp_cleanup.always_use_this_for_non_static_method_access=false
-sp_cleanup.convert_functional_interfaces=false
-sp_cleanup.convert_to_enhanced_for_loop=false
-sp_cleanup.correct_indentation=false
-sp_cleanup.format_source_code=true
-sp_cleanup.format_source_code_changes_only=false
-sp_cleanup.insert_inferred_type_arguments=false
-sp_cleanup.make_local_variable_final=true
-sp_cleanup.make_parameters_final=false
-sp_cleanup.make_private_fields_final=true
-sp_cleanup.make_type_abstract_if_missing_method=false
-sp_cleanup.make_variable_declarations_final=false
-sp_cleanup.never_use_blocks=false
-sp_cleanup.never_use_parentheses_in_expressions=true
-sp_cleanup.on_save_use_additional_actions=true
-sp_cleanup.organize_imports=true
-sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
-sp_cleanup.remove_private_constructors=true
-sp_cleanup.remove_redundant_modifiers=false
-sp_cleanup.remove_redundant_semicolons=true
-sp_cleanup.remove_redundant_type_arguments=true
-sp_cleanup.remove_trailing_whitespaces=true
-sp_cleanup.remove_trailing_whitespaces_all=true
-sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
-sp_cleanup.remove_unnecessary_casts=true
-sp_cleanup.remove_unnecessary_nls_tags=false
-sp_cleanup.remove_unused_imports=true
-sp_cleanup.remove_unused_local_variables=false
-sp_cleanup.remove_unused_private_fields=true
-sp_cleanup.remove_unused_private_members=false
-sp_cleanup.remove_unused_private_methods=true
-sp_cleanup.remove_unused_private_types=true
-sp_cleanup.sort_members=false
-sp_cleanup.sort_members_all=false
-sp_cleanup.use_anonymous_class_creation=false
-sp_cleanup.use_blocks=false
-sp_cleanup.use_blocks_only_for_return_and_throw=false
-sp_cleanup.use_lambda=true
-sp_cleanup.use_parentheses_in_expressions=false
-sp_cleanup.use_this_for_non_static_field_access=false
-sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-sp_cleanup.use_this_for_non_static_method_access=false
-sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/debug/org.eclipse.cdt.debug.application.doc/META-INF/MANIFEST.MF b/debug/org.eclipse.cdt.debug.application.doc/META-INF/MANIFEST.MF
index 35314fff4cc..cbcb62de65d 100644
--- a/debug/org.eclipse.cdt.debug.application.doc/META-INF/MANIFEST.MF
+++ b/debug/org.eclipse.cdt.debug.application.doc/META-INF/MANIFEST.MF
@@ -2,6 +2,6 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %bundleName
Bundle-SymbolicName: org.eclipse.cdt.debug.application.doc;singleton:=true
-Bundle-Version: 1.1.400.qualifier
+Bundle-Version: 1.1.1200.qualifier
Bundle-Vendor: %provider
Bundle-Localization: plugin
diff --git a/debug/org.eclipse.cdt.debug.application.doc/about.html b/debug/org.eclipse.cdt.debug.application.doc/about.html
index 164f781a8fd..b3134865230 100644
--- a/debug/org.eclipse.cdt.debug.application.doc/about.html
+++ b/debug/org.eclipse.cdt.debug.application.doc/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/debug/org.eclipse.cdt.debug.application.doc/concepts/cdt_c_before_you_begin.htm b/debug/org.eclipse.cdt.debug.application.doc/concepts/cdt_c_before_you_begin.htm
index 8b21275f550..ceedc3ac684 100644
--- a/debug/org.eclipse.cdt.debug.application.doc/concepts/cdt_c_before_you_begin.htm
+++ b/debug/org.eclipse.cdt.debug.application.doc/concepts/cdt_c_before_you_begin.htm
@@ -33,13 +33,13 @@ MinGW produces native Windows executables that do not require a separate runtime
<ul>
<li><p>For <strong>MinGW</strong>, it is recommended to use the MinGW installer, mingw-get, to manage your
MinGW installation. Download and run the latest mingw-get-inst package from the
-<a href="http://sourceforge.net/projects/mingw/files">MinGW Downloads page.</a>
+<a href="https://sourceforge.net/projects/mingw/files">MinGW Downloads page.</a>
</p>
<p>Note that the Wascana IDE has been discontinued.</p>
</li>
<li><p><strong>Cygwin</strong> can be installed from the Cygwin site at
-<a href="http://www.cygwin.com">http://www.cygwin.com</a>. You need to manually select
+<a href="https://www.cygwin.com">https://www.cygwin.com</a>. You need to manually select
the gdb and gcc packages. The gcc package is used to figure out default include paths
and built-in macros for indexing the code for navigation purposes.</p>
</li>
@@ -57,7 +57,7 @@ For instructions about installing the GNU toolchain for Linux, see the instructi
<h2>Mac OS X</h2>
The Stand-alone Debugger supports the Apple GNU toolchain that is included in with the Xcode IDE. It can be downloaded
-from the Apple's developer site, <a href="http://developer.apple.com/">http://developer.apple.com</a>
+from the Apple's developer site, <a href="https://developer.apple.com/">https://developer.apple.com</a>
<h2>Other Platforms</h2>
<p>The GNU toolchain is supported on all platforms that the Stand-alone Debugger supports. For instructions about installing the GNU toolchain
diff --git a/debug/org.eclipse.cdt.debug.application.doc/concepts/cdt_c_build_over.htm b/debug/org.eclipse.cdt.debug.application.doc/concepts/cdt_c_build_over.htm
index 82365073e1d..e95b6ebfe67 100644
--- a/debug/org.eclipse.cdt.debug.application.doc/concepts/cdt_c_build_over.htm
+++ b/debug/org.eclipse.cdt.debug.application.doc/concepts/cdt_c_build_over.htm
@@ -30,7 +30,7 @@ used.
a Windows environment.&nbsp; While running the cygwin installation,
ensure <span class="typewriter">gcc</span> and <span class="typewriter">make</span> are selected since they are not
installed by default. For more information, see <a
- href="http://www.cygwin.com">http://www.cygwin.com</a>. If you are a
+ href="https://www.cygwin.com">https://www.cygwin.com</a>. If you are a
Red Hat user, all that you need to do to build your project is included
in the Red Hat Linux installation.
For other operating systems, please refer to your installation
diff --git a/debug/org.eclipse.cdt.debug.application.doc/concepts/cdt_c_over_cdt.htm b/debug/org.eclipse.cdt.debug.application.doc/concepts/cdt_c_over_cdt.htm
index a343c908ed4..5cf639fbc19 100644
--- a/debug/org.eclipse.cdt.debug.application.doc/concepts/cdt_c_over_cdt.htm
+++ b/debug/org.eclipse.cdt.debug.application.doc/concepts/cdt_c_over_cdt.htm
@@ -16,8 +16,8 @@ Eclipse, see <strong>Workbench User Guide &gt; Concepts &gt; Workbench</strong>.
<p>The full CDT provides a C/C++ IDE that simplifies many of the same tools that you can use from the command line. The CDT can also communicate with many external utilities and interpret their responses, for example:
<ul>
<li>Build (such as make).</li>
- <li>Compile (such as gcc). For more information, see <a href="http://gcc.gnu.org">http://gcc.gnu.org</a>.</li>
- <li>Debug (such as gdb). For more information, see <a href="http://sources.redhat.com/gdb/">http://sources.redhat.com/gdb/</a>.</li>
+ <li>Compile (such as gcc). For more information, see <a href="https://gcc.gnu.org">https://gcc.gnu.org</a>.</li>
+ <li>Debug (such as gdb). For more information, see <a href="https://sources.redhat.com/gdb/">https://sources.redhat.com/gdb/</a>.</li>
</ul>
<strong>Note: </strong> while make, gcc and gdb are the examples used in the documentation, virtually any similar set of tools or utilities could be used.</p>
@@ -55,15 +55,15 @@ installed, click <strong>Help &gt; Check for Updates</strong>.</p>
<h3>Additional information</h3>
<p>For more information on the Eclipse CDT project,
-refer to <a href="http://www.eclipse.org/cdt/">http://www.eclipse.org/cdt/</a>:
+refer to <a href="https://www.eclipse.org/cdt/">https://www.eclipse.org/cdt/</a>:
</p>
<ul>
<li><a href="news://news.eclipse.org/eclipse.tools.cdt" target="_top">CDT newsgroup</a>:
The place to ask questions about how to use the CDT.</li>
-<li><a href="http://wiki.eclipse.org/index.php/CDT/User/FAQ">User FAQ</a>:
+<li><a href="https://wiki.eclipse.org/index.php/CDT/User/FAQ">User FAQ</a>:
Provides answers to the most common questions about using the CDT.</li>
-<li><a href="http://wiki.eclipse.org/index.php/CDT">CDT Wiki</a>:
+<li><a href="https://wiki.eclipse.org/index.php/CDT">CDT Wiki</a>:
This is the main source for information around CDT.</li>
</ul>
diff --git a/debug/org.eclipse.cdt.debug.application.doc/concepts/cdt_c_templates.htm b/debug/org.eclipse.cdt.debug.application.doc/concepts/cdt_c_templates.htm
index ab72db5d9c6..ab72db5d9c6 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/concepts/cdt_c_templates.htm
+++ b/debug/org.eclipse.cdt.debug.application.doc/concepts/cdt_c_templates.htm
diff --git a/debug/org.eclipse.cdt.debug.application.doc/concepts/cdt_c_whatsnew.htm b/debug/org.eclipse.cdt.debug.application.doc/concepts/cdt_c_whatsnew.htm
index a054ae7cfa2..36a7a34dcf0 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/concepts/cdt_c_whatsnew.htm
+++ b/debug/org.eclipse.cdt.debug.application.doc/concepts/cdt_c_whatsnew.htm
@@ -11,7 +11,7 @@
<body>
<div>
<h1 id="top">CDT - New and Noteworthy</h1>
- <p>See <a href="http://wiki.eclipse.org/CDT/User/NewInCDT">What's new in CDT</a> on the CDT Wiki
+ <p>See <a href="https://wiki.eclipse.org/CDT/User/NewInCDT">What's new in CDT</a> on the CDT Wiki
which contains the most recent information.
</p>
diff --git a/debug/org.eclipse.cdt.debug.application.doc/concepts/cdt_c_whatsnew_60.htm b/debug/org.eclipse.cdt.debug.application.doc/concepts/cdt_c_whatsnew_60.htm
index 242ac24d2a4..cef2bec7fa0 100644
--- a/debug/org.eclipse.cdt.debug.application.doc/concepts/cdt_c_whatsnew_60.htm
+++ b/debug/org.eclipse.cdt.debug.application.doc/concepts/cdt_c_whatsnew_60.htm
@@ -17,7 +17,7 @@ tr {vertical-align: top;}
<div role="main">
<h1 id="top">CDT 6.0 - New and Noteworthy</h1>
<p>Note: "New and Noteworthy" for <a href="#5.0">previous versions</a> is at the bottom of this file.</p>
-<p>See <a href="http://wiki.eclipse.org/CDT/User/NewIn60">What's new in CDT 6.0</a> on the CDT wiki;
+<p>See <a href="https://wiki.eclipse.org/CDT/User/NewIn60">What's new in CDT 6.0</a> on the CDT wiki;
may contain other information.
</p>
@@ -266,7 +266,7 @@ may contain other information.
<p><img src="../images/60/New_cdtwsconfig_wsContextMenu.png" alt="Activating and building working set configurations through context menu"></p>
</li>
- <li>For more details, see the <a href="http://wiki.eclipse.org/CDT/designs/workingSets">working sets
+ <li>For more details, see the <a href="https://wiki.eclipse.org/CDT/designs/workingSets">working sets
design document</a></li>
</ul></li>
</ul>
@@ -342,7 +342,7 @@ may contain other information.
<p style="text-align:right"><span class="bold">DSF Integration</span></p>
</td>
<td>DSF (Eclipse Debugger Services Framework) integrated. See <a
- href="http://www.eclipse.org/dsdp/dd/development/relnotes/dd_news-1.1.html">DSF features</a> for more information.</td>
+ href="https://www.eclipse.org/dsdp/dd/development/relnotes/dd_news-1.1.html">DSF features</a> for more information.</td>
</tr>
<tr>
<td>
@@ -364,7 +364,7 @@ may contain other information.
<p style="text-align:right"><span class="bold">Bugs fixed</span></p>
</td>
<td>Bugs fixed in this release:
- <a href="http://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&classification=Tools&product=CDT&target_milestone=6.0&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&keywords_type=allwords&keywords=&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&resolution=FIXED&emailtype1=exact&email1=&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0=">
+ <a href="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&classification=Tools&product=CDT&target_milestone=6.0&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&keywords_type=allwords&keywords=&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&resolution=FIXED&emailtype1=exact&email1=&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0=">
CDT 6.0 bug fixes</a>
</td>
@@ -393,7 +393,7 @@ may contain other information.
<p>CDT 5.0 includes new features in Editor, Call Hierarchy,
Refactoring, Indexer, Projects &amp; Build, and Debug.
<p>
-See <a href="http://wiki.eclipse.org/CDT/User/NewIn50">What's New in CDT 5.0</a> on the CDT Wiki for more information including screen shots.
+See <a href="https://wiki.eclipse.org/CDT/User/NewIn50">What's New in CDT 5.0</a> on the CDT Wiki for more information including screen shots.
<p>Highlights include:
@@ -460,7 +460,7 @@ See <a href="http://wiki.eclipse.org/CDT/User/NewIn50">What's New in CDT 5.0</a>
<p><a href="cdt_c_whatsnew_80.htm">CDT 8.0 - New and Noteworthy</a></p>
<p><a href="cdt_c_whatsnew_70.htm">CDT 7.0 - New and Noteworthy</a></p>
<p><a href="cdt_c_whatsnew_60.htm">CDT 6.0 - New and Noteworthy</a></p>
-<p><a href="http://wiki.eclipse.org/CDT/User/NewIn50">CDT 5.0 - New and Noteworthy</a></p>
+<p><a href="https://wiki.eclipse.org/CDT/User/NewIn50">CDT 5.0 - New and Noteworthy</a></p>
</div>
</body>
diff --git a/debug/org.eclipse.cdt.debug.application.doc/concepts/cdt_c_whatsnew_70.htm b/debug/org.eclipse.cdt.debug.application.doc/concepts/cdt_c_whatsnew_70.htm
index 8afa6c73da8..1c63d395f04 100644
--- a/debug/org.eclipse.cdt.debug.application.doc/concepts/cdt_c_whatsnew_70.htm
+++ b/debug/org.eclipse.cdt.debug.application.doc/concepts/cdt_c_whatsnew_70.htm
@@ -16,7 +16,7 @@ tr {vertical-align: top;}
<body>
<div role="main">
<h1 id="top">CDT 7.0 - New and Noteworthy</h1>
-<p>See <a href="http://wiki.eclipse.org/CDT/User/NewIn70">What's new in CDT 7.0</a> on the CDT wiki
+<p>See <a href="https://wiki.eclipse.org/CDT/User/NewIn70">What's new in CDT 7.0</a> on the CDT wiki
which may contain more recent information.
</p>
<table cellpadding="10" cellspacing="0" width="600">
@@ -75,7 +75,7 @@ which may contain more recent information.
<p style="text-align:right"><span class="bold">Code Analysis</span></p>
</td>
<td>New code analysis framework is introduced, called Codan. See this
- <a href="http://wiki.eclipse.org/CDT/designs/StaticAnalysis">wiki</a> for details.
+ <a href="https://wiki.eclipse.org/CDT/designs/StaticAnalysis">wiki</a> for details.
<p><img src="../images/70/CDT70_Codan.png" alt="Codan"></img></p>
<p>&nbsp;</p>
</td>
@@ -274,19 +274,19 @@ which may contain more recent information.
<li><strong>DSF-GDB</strong>. The default debugger for the CDT is now using a different debugging framework and is called DSF-GDB.
It provides better support for newer GDB versions, such as 6.7, 6.8 and 7.x, for older versions you would
have to edit preferences to use the old framework (CDI) by default. See full list of DSF-GDB features
- <a href="http://www.eclipse.org/dsdp/dd/development/relnotes/dd_news-1.1.html">here</a>.
+ <a href="https://www.eclipse.org/dsdp/dd/development/relnotes/dd_news-1.1.html">here</a>.
</li>
<li><strong>GDB Tracepoints</strong> are now supported. See the
- <a href="http://wiki.eclipse.org/CDT/designs/Tracepoints">wiki page</a>. Available in DSF-GDB only.
+ <a href="https://wiki.eclipse.org/CDT/designs/Tracepoints">wiki page</a>. Available in DSF-GDB only.
</li>
<li><strong>Reverse Debugging</strong> which allows to undo execution.
Requires GDB 7.0 or newer and only available on Linux. Available in DSF-GDB only.
- A webinar on the topic is available <a href="http://live.eclipse.org/node/723">here</a>.
+ A webinar on the topic is available <a href="https://live.eclipse.org/node/723">here</a>.
</li>
<li><strong>Run To Line</strong> feature now allows to run to any line in the program, instead of only lines within the same method.
</li>
<li><strong>Pretty Printing</strong> feature of GDB is supported. Requires GDB 7.0 or newer as well as python, and GDB's python pretty-printers.
- Some information available <a href="http://sourceware.org/gdb/wiki/STLSupport">here</a>.
+ Some information available <a href="https://sourceware.org/gdb/wiki/STLSupport">here</a>.
</li>
<li><strong>Interrupts on Windows</strong> platform while debugging application got improved support.
</li>
@@ -341,7 +341,7 @@ which may contain more recent information.
<p><a href="cdt_c_whatsnew_80.htm">CDT 8.0 - New and Noteworthy</a></p>
<p><a href="cdt_c_whatsnew_70.htm">CDT 7.0 - New and Noteworthy</a></p>
<p><a href="cdt_c_whatsnew_60.htm">CDT 6.0 - New and Noteworthy</a></p>
-<p><a href="http://wiki.eclipse.org/CDT/User/NewIn50">CDT 5.0 - New and Noteworthy</a></p>
+<p><a href="https://wiki.eclipse.org/CDT/User/NewIn50">CDT 5.0 - New and Noteworthy</a></p>
<p><a href="#top">Back to Top</a>
diff --git a/debug/org.eclipse.cdt.debug.application.doc/concepts/cdt_c_whatsnew_80.htm b/debug/org.eclipse.cdt.debug.application.doc/concepts/cdt_c_whatsnew_80.htm
index 6da5fda9814..c766f4ac3db 100644
--- a/debug/org.eclipse.cdt.debug.application.doc/concepts/cdt_c_whatsnew_80.htm
+++ b/debug/org.eclipse.cdt.debug.application.doc/concepts/cdt_c_whatsnew_80.htm
@@ -16,7 +16,7 @@ tr {vertical-align: top;}
<body>
<div role="main">
<h1 id="top">CDT 8.0 - New and Noteworthy</h1>
-<p>See <a href="http://wiki.eclipse.org/CDT/User/NewIn80">What's new in CDT 8.0</a> on the CDT Wiki
+<p>See <a href="https://wiki.eclipse.org/CDT/User/NewIn80">What's new in CDT 8.0</a> on the CDT Wiki
which may contain more recent information.
</p>
<table cellpadding="10" cellspacing="0" width="600">
@@ -191,13 +191,13 @@ which may contain more recent information.
</td>
<td>
<ul><li>The "C-Build console" is now named "CDT Build Console"
- </li><li>It is now possible to open the CDT Build Console before performing a build. See <a href="http://bugs.eclipse.org/320765" class="external text" title="http://bugs.eclipse.org/320765" rel="nofollow">bug 320765</a>. Note that operations on the console will require the user to first select a project. The below screenshot shows the new access to the CDT Build Console.
+ </li><li>It is now possible to open the CDT Build Console before performing a build. See <a href="https://bugs.eclipse.org/320765" class="external text" title="https://bugs.eclipse.org/320765" rel="nofollow">bug 320765</a>. Note that operations on the console will require the user to first select a project. The below screenshot shows the new access to the CDT Build Console.
</li></ul>
<p><img src="../images/80/CDTConsoleStart.jpg" alt="Image:CDTConsoleStart.jpg"></img></p>
- <ul><li>"CDT Global Build Console" got introduced. This console combines output from all referenced projects being built in one view. See <a href="http://bugs.eclipse.org/309113" class="external text" title="http://bugs.eclipse.org/309113" rel="nofollow">bug 309113</a>.
+ <ul><li>"CDT Global Build Console" got introduced. This console combines output from all referenced projects being built in one view. See <a href="https://bugs.eclipse.org/309113" class="external text" title="https://bugs.eclipse.org/309113" rel="nofollow">bug 309113</a>.
</li></ul>
<p><img src="../images/80/CDTGlobalBuildConsole.jpg" alt="Image:CDTGlobalBuildConsole.jpg"></img></p>
- <ul><li>Differentiate color highlighting in build output for error, warning and info problem markers. See <a href="http://bugs.eclipse.org/307211" class="external text" title="http://bugs.eclipse.org/307211" rel="nofollow">bug 307211</a>.
+ <ul><li>Differentiate color highlighting in build output for error, warning and info problem markers. See <a href="https://bugs.eclipse.org/307211" class="external text" title="https://bugs.eclipse.org/307211" rel="nofollow">bug 307211</a>.
</li></ul>
<p><img src="../images/80/Bug_307211.png" alt="Image:Bug 307211.png"></img></p>
</td>
@@ -266,7 +266,7 @@ which may contain more recent information.
</p><p>Furthermore, for an attach session (local or remote), there is even no need to specify the binary; for a local attach, GDB can find the binary automatically, while for a remote attach, CDT will prompt for it when it needs it.
</p>
<p><img src="../images/80/Noprojectdebug.png" alt="Image:Noprojectdebug.png"></img></p>
- <p>This feature was completed April 26th, 2011 as part of <a href="http://bugs.eclipse.org/343861" class="external text" title="http://bugs.eclipse.org/343861" rel="nofollow">Bug 343861</a>
+ <p>This feature was completed April 26th, 2011 as part of <a href="https://bugs.eclipse.org/343861" class="external text" title="https://bugs.eclipse.org/343861" rel="nofollow">Bug 343861</a>
</td>
</tr>
<tr>
@@ -281,7 +281,7 @@ which may contain more recent information.
<p><br> <b>With pretty-printing:</b>
</p>
<p><img src="../images/80/FullPrettyPrint.png" alt="Image:FullPrettyPrint.png"></img></p>
- <p><br> This feature has been contributed by Jens Elmenthaler to CDT 8.0 as of November 4th, 2010, as part of <a href="http://bugs.eclipse.org/302121" class="external text" title="http://bugs.eclipse.org/302121" rel="nofollow">Bug 302121</a>
+ <p><br> This feature has been contributed by Jens Elmenthaler to CDT 8.0 as of November 4th, 2010, as part of <a href="https://bugs.eclipse.org/302121" class="external text" title="https://bugs.eclipse.org/302121" rel="nofollow">Bug 302121</a>
</p><p><br> <b>Configuring GDB for pretty-printing:</b>
</p>
<ul><li>You will need to have python installed on your machine
@@ -310,7 +310,7 @@ end
<p style="text-align:right"><span class="bold">Support for pending breakpoints</span></p>
</td>
<td>
- <p>When a breakpoint is set in a dynamically-linked library that was not loaded yet, the breakpoint will now work, once the library is loaded. See <a href="http://bugs.eclipse.org/248595" class="external text" title="http://bugs.eclipse.org/248595" rel="nofollow">bug 248595</a>. This feature is currently only supported when using GDB 6.8 or later.
+ <p>When a breakpoint is set in a dynamically-linked library that was not loaded yet, the breakpoint will now work, once the library is loaded. See <a href="https://bugs.eclipse.org/248595" class="external text" title="https://bugs.eclipse.org/248595" rel="nofollow">bug 248595</a>. This feature is currently only supported when using GDB 6.8 or later.
</p>
</td>
</tr>
@@ -322,7 +322,7 @@ end
<p>By using the enhancements of GDB 7.1, DSF-GDB now shows the core on which each thread runs as an extra part of the Debug View label. The list of all cores on which a process is located is also added as a label. The below image shows the new feature.
</p>
<p><img src="../images/80/CoreLabels.png" alt="Image:CoreLabels.png"></img></p>
- </p><p>This feature has been implemented for CDT 8.0 as of July 6th, 2010, as part of <a href="http://bugs.eclipse.org/318230" class="external text" title="http://bugs.eclipse.org/318230" rel="nofollow">Bug 318230</a>. The feature will be enabled automatically as long as GDB 7.1 or greater is used.
+ </p><p>This feature has been implemented for CDT 8.0 as of July 6th, 2010, as part of <a href="https://bugs.eclipse.org/318230" class="external text" title="https://bugs.eclipse.org/318230" rel="nofollow">Bug 318230</a>. The feature will be enabled automatically as long as GDB 7.1 or greater is used.
</p>
</td>
</tr>
@@ -333,7 +333,7 @@ end
<td>
<p>DSF-GDB now shows the owner of a process as an extra part of the process prompt for an attach session. The owner id will be shown starting with GDB 7.0. For a Remote attach session (using gdbserver --multi), the cores on which a process is located will also be shown. Showing the cores starts with GDB 7.1. The below image shows the new feature.
</p><p><img src="../images/80/UserAndCores.jpg" alt="Image:UserAndCores.jpg"></img></p>
- <p>This feature has been implemented for CDT 8.0 as of July 30th, 2010, as part of <a href="http://bugs.eclipse.org/318230#21" class="external text" title="http://bugs.eclipse.org/318230#21" rel="nofollow">Bug 318230 comment 21</a>. The feature will be enabled automatically as long as the proper version of GDB is used.
+ <p>This feature has been implemented for CDT 8.0 as of July 30th, 2010, as part of <a href="https://bugs.eclipse.org/318230#21" class="external text" title="https://bugs.eclipse.org/318230#21" rel="nofollow">Bug 318230 comment 21</a>. The feature will be enabled automatically as long as the proper version of GDB is used.
</p>
</td>
</tr>
@@ -345,7 +345,7 @@ end
<p>Variables, Expressions, Registers, Disassembly, and Memory Browser now supports opening multiple instances, and pin the view input to the selected debug context(s) in the Debug view. This can be used, for example, to easily compare the data of different threads.
</p>
<p><img src="../images/80/PinCloneDebug.png" alt="Image:PinCloneDebug.png"></img></p>
- <p>This feature has been implemented for CDT 8.0 as of Feb 15th, 2011, as part of <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=327263" class="external text" title="http://bugs.eclipse.org/bugs/show_bug.cgi?id=327263" rel="nofollow">Bug 327263</a>, <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=331781" class="external text" title="http://bugs.eclipse.org/bugs/show_bug.cgi?id=331781" rel="nofollow">Bug 331781</a>, and <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=334566" class="external text" title="http://bugs.eclipse.org/bugs/show_bug.cgi?id=334566" rel="nofollow">Bug 334566</a>.
+ <p>This feature has been implemented for CDT 8.0 as of Feb 15th, 2011, as part of <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=327263" class="external text" title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=327263" rel="nofollow">Bug 327263</a>, <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=331781" class="external text" title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=331781" rel="nofollow">Bug 331781</a>, and <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=334566" class="external text" title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=334566" rel="nofollow">Bug 334566</a>.
</p>
</td>
</tr>
@@ -410,7 +410,7 @@ end
<p><br> The values of most of these preferences will be used to populate the corresponding entries of the Debugger tab, whenever a new launch is created.
</p>
<p><img src="../images/80/LaunchDefaultGdb.png" alt="Image:LaunchDefaultGdb.png"></img></p>
- </p><p><br> This feature has been implemented for CDT 8.0 as as part of <a href="http://bugs.eclipse.org/120162" class="external text" title="http://bugs.eclipse.org/120162" rel="nofollow">Bug 120162</a>, <a href="http://bugs.eclipse.org/347245" class="external text" title="http://bugs.eclipse.org/347245" rel="nofollow">Bug 347245</a> and <a href="http://bugs.eclipse.org/335895" class="external text" title="http://bugs.eclipse.org/335895" rel="nofollow">Bug 335895</a>.
+ </p><p><br> This feature has been implemented for CDT 8.0 as as part of <a href="https://bugs.eclipse.org/120162" class="external text" title="https://bugs.eclipse.org/120162" rel="nofollow">Bug 120162</a>, <a href="https://bugs.eclipse.org/347245" class="external text" title="https://bugs.eclipse.org/347245" rel="nofollow">Bug 347245</a> and <a href="https://bugs.eclipse.org/335895" class="external text" title="https://bugs.eclipse.org/335895" rel="nofollow">Bug 335895</a>.
</p>
</td>
</tr>
@@ -460,37 +460,37 @@ end
<p style="text-align:right"><span class="bold">DSF-GDB</span></p>
</td>
<td>
- <ol><li>The interface org.eclipse.cdt.dsf.mi.service.command.output.MIListThreadGroupsInfo.IThreadGroupInfo has four new methods. See <a href="http://bugs.eclipse.org/318230#c21" class="external text" title="http://bugs.eclipse.org/318230#c21" rel="nofollow">bug 318230 comment 21</a>
+ <ol><li>The interface org.eclipse.cdt.dsf.mi.service.command.output.MIListThreadGroupsInfo.IThreadGroupInfo has four new methods. See <a href="https://bugs.eclipse.org/318230#c21" class="external text" title="https://bugs.eclipse.org/318230#c21" rel="nofollow">bug 318230 comment 21</a>
<ul><li>String getUser()
</li><li>String getType()
</li><li>String getCores()
</li><li>String getExecutable()
</li></ul>
- </li><li>The interface org.eclipse.cdt.dsf.gdb.service.command.IGDBControl has a new method: List&lt;String&gt; getFeatures(). See <a href="http://bugs.eclipse.org/322658" class="external text" title="http://bugs.eclipse.org/322658" rel="nofollow">bug 322658</a>
+ </li><li>The interface org.eclipse.cdt.dsf.gdb.service.command.IGDBControl has a new method: List&lt;String&gt; getFeatures(). See <a href="https://bugs.eclipse.org/322658" class="external text" title="https://bugs.eclipse.org/322658" rel="nofollow">bug 322658</a>
</li><li>The interface org.eclipse.cdt.dsf.gdb.service.command.IGDBControl no longer has the three methods: start(...), restart(...) and canRestart(...). Those methods are moved to org.eclipse.cdt.dsf.gdb.service.IGDBProcesses and have a new signature.
</li><li>org.eclipse.cdt.dsf.gdb.service.command.GDBControl and org.eclipse.cdt.dsf.gdb.service.command.GDBControl_7_0 no longer implement the five methods: start(...), restart(...), canRestart(...), startOrRestart(...), useContinueCommand(...) which are now implemented in org.eclipse.cdt.dsf.gdb.service.command.GDBProcesses and org.eclipse.cdt.dsf.gdb.service.command.GDBProcesses_7_0
- </li><li>All the constructors of class org.eclipse.cdt.dsf.mi.service.command.commands.MIBreakInsert now take an extra parameter at the end of the parameter list: boolean allowPending. When this parameter is set to true, -break-insert will be used with the -f option, which asks GDB to make the breakpoint pending if the installation fails. This flag can only be enabled for GDB &gt;= 6.8. See <a href="http://bugs.eclipse.org/248595" class="external text" title="http://bugs.eclipse.org/248595" rel="nofollow">bug 248595</a>
- </li><li>The interface org.eclipse.cdt.dsf.debug.service.IProcesses.IMIProcesses has a new method: IMIContainerDMContext createContainerContextFromGroupId(...). See <a href="http://bugs.eclipse.org/317500" class="external text" title="http://bugs.eclipse.org/317500" rel="nofollow">bug 317500</a>
+ </li><li>All the constructors of class org.eclipse.cdt.dsf.mi.service.command.commands.MIBreakInsert now take an extra parameter at the end of the parameter list: boolean allowPending. When this parameter is set to true, -break-insert will be used with the -f option, which asks GDB to make the breakpoint pending if the installation fails. This flag can only be enabled for GDB &gt;= 6.8. See <a href="https://bugs.eclipse.org/248595" class="external text" title="https://bugs.eclipse.org/248595" rel="nofollow">bug 248595</a>
+ </li><li>The interface org.eclipse.cdt.dsf.debug.service.IProcesses.IMIProcesses has a new method: IMIContainerDMContext createContainerContextFromGroupId(...). See <a href="https://bugs.eclipse.org/317500" class="external text" title="https://bugs.eclipse.org/317500" rel="nofollow">bug 317500</a>
</li><li>The file of constants org.eclipse.cdt.dsf.gdb.internal.ui.preferences.IGdbDebugPreferenceConstants has been removed. It was deprecated and had already been replaced by org.eclipse.cdt.dsf.gdb.IGdbDebugPreferenceConstants
- </li><li>The interface org.eclipse.cdt.dsf.mi.service.IMIRunControl has a new method: IRunMode getRunMode(). See <a href="http://bugs.eclipse.org/334463" class="external text" title="http://bugs.eclipse.org/334463" rel="nofollow">bug 334463</a>
+ </li><li>The interface org.eclipse.cdt.dsf.mi.service.IMIRunControl has a new method: IRunMode getRunMode(). See <a href="https://bugs.eclipse.org/334463" class="external text" title="https://bugs.eclipse.org/334463" rel="nofollow">bug 334463</a>
</li><li>FinalLaunchSequence has dramatically changed.
</li><li>GdbLaunch#addInferiorProcess() is removed.
</li><li>GDBControl.InferiorInputOutputInitStep is removed.
</li><li>GDBControl_7_0.InferiorInputOutputInitStep is removed.
- </li><li>The interface IMIRunControl has the new method isTargetAcceptingCommands() as part of <a href="http://bugs.eclipse.org/339047" class="external text" title="http://bugs.eclipse.org/339047" rel="nofollow">Bug 339047</a>
- </li><li>IGDBControl, GDBControl and GDBControl_7_0, no longer have the three methods: initInferiorInputOutput(), createInferiorProcess() and getInferiorProcess() as part of <a href="http://bugs.eclipse.org/237308" class="external text" title="http://bugs.eclipse.org/237308" rel="nofollow">Bug 237308</a>
- </li><li>MIInferiorProcess's constructors have changed, and many of its public methods are removed (getState(), getPid(), setPid(), etc) as part of <a href="http://bugs.eclipse.org/237308" class="external text" title="http://bugs.eclipse.org/237308" rel="nofollow">Bug 237308</a>
- </li><li>CommandFactory#createMIInferiorTTYSet() has changed signature as part of <a href="http://bugs.eclipse.org/237308" class="external text" title="http://bugs.eclipse.org/237308" rel="nofollow">Bug 237308</a>
- </li><li>The constructor to MIInferiorTTYSet has changed signature as part of <a href="http://bugs.eclipse.org/237308" class="external text" title="http://bugs.eclipse.org/237308" rel="nofollow">Bug 237308</a>
- </li><li>IGDBProcesses gets the new method attachDebuggerToProcess() as part of <a href="http://bugs.eclipse.org/237306" class="external text" title="http://bugs.eclipse.org/237306" rel="nofollow">Bug 237306</a>
+ </li><li>The interface IMIRunControl has the new method isTargetAcceptingCommands() as part of <a href="https://bugs.eclipse.org/339047" class="external text" title="https://bugs.eclipse.org/339047" rel="nofollow">Bug 339047</a>
+ </li><li>IGDBControl, GDBControl and GDBControl_7_0, no longer have the three methods: initInferiorInputOutput(), createInferiorProcess() and getInferiorProcess() as part of <a href="https://bugs.eclipse.org/237308" class="external text" title="https://bugs.eclipse.org/237308" rel="nofollow">Bug 237308</a>
+ </li><li>MIInferiorProcess's constructors have changed, and many of its public methods are removed (getState(), getPid(), setPid(), etc) as part of <a href="https://bugs.eclipse.org/237308" class="external text" title="https://bugs.eclipse.org/237308" rel="nofollow">Bug 237308</a>
+ </li><li>CommandFactory#createMIInferiorTTYSet() has changed signature as part of <a href="https://bugs.eclipse.org/237308" class="external text" title="https://bugs.eclipse.org/237308" rel="nofollow">Bug 237308</a>
+ </li><li>The constructor to MIInferiorTTYSet has changed signature as part of <a href="https://bugs.eclipse.org/237308" class="external text" title="https://bugs.eclipse.org/237308" rel="nofollow">Bug 237308</a>
+ </li><li>IGDBProcesses gets the new method attachDebuggerToProcess() as part of <a href="https://bugs.eclipse.org/237306" class="external text" title="https://bugs.eclipse.org/237306" rel="nofollow">Bug 237306</a>
</li><li>GdbInferiorProcess no longer exists. Its base class, MIInferiorProcess should be used directly.
- </li><li>GDBBackend.doInitialize(), GDBControl.doInitialize() and GDBControl_7_0.doInitialize() are now private. Having them as public was a bug that would break versioning of the service. See <a href="http://bugs.eclipse.org/341465" class="external text" title="http://bugs.eclipse.org/341465" rel="nofollow">Bug 341465</a>
+ </li><li>GDBBackend.doInitialize(), GDBControl.doInitialize() and GDBControl_7_0.doInitialize() are now private. Having them as public was a bug that would break versioning of the service. See <a href="https://bugs.eclipse.org/341465" class="external text" title="https://bugs.eclipse.org/341465" rel="nofollow">Bug 341465</a>
</li><li>GDBControlDMContext no longer implements IBreakpointsTargetDMContext or IDisassemblyDMContext. Although not an API breaking change it has significant impacts. Mostly that code such as
</li></ol>
<pre>(IBreakpointsTargetDMContext)fCommandControl.getContext() // Will fail with an Invalid Cast exception
(IDisassemblyDMContext)fCommandControl.getContext() // Will fail with an Invalid Cast exception
</pre>
- <p>will now fail because the command control context is no longer an IBreakpointsTargetDMContext/IDisassemblyDMContext. Instead, MIContainerDMC now implements IBreakpointsTargetDMContext/IDisassemblyDMContext. This change was necessary to fully support multi-process and was done in <a href="http://bugs.eclipse.org/335324" class="external text" title="http://bugs.eclipse.org/335324" rel="nofollow">bug 335324</a> and <a href="http://bugs.eclipse.org/344298" class="external text" title="http://bugs.eclipse.org/344298" rel="nofollow">bug 344298</a>.
+ <p>will now fail because the command control context is no longer an IBreakpointsTargetDMContext/IDisassemblyDMContext. Instead, MIContainerDMC now implements IBreakpointsTargetDMContext/IDisassemblyDMContext. This change was necessary to fully support multi-process and was done in <a href="https://bugs.eclipse.org/335324" class="external text" title="https://bugs.eclipse.org/335324" rel="nofollow">bug 335324</a> and <a href="https://bugs.eclipse.org/344298" class="external text" title="https://bugs.eclipse.org/344298" rel="nofollow">bug 344298</a>.
</p>
</td>
</tr>
@@ -548,7 +548,7 @@ end
<p><a href="cdt_c_whatsnew_80.htm">CDT 8.0 - New and Noteworthy</a></p>
<p><a href="cdt_c_whatsnew_70.htm">CDT 7.0 - New and Noteworthy</a></p>
<p><a href="cdt_c_whatsnew_60.htm">CDT 6.0 - New and Noteworthy</a></p>
-<p><a href="http://wiki.eclipse.org/CDT/User/NewIn50">CDT 5.0 - New and Noteworthy</a></p>
+<p><a href="https://wiki.eclipse.org/CDT/User/NewIn50">CDT 5.0 - New and Noteworthy</a></p>
<p><a href="#top">Back to Top</a>
diff --git a/debug/org.eclipse.cdt.debug.application.doc/concepts/cdt_c_whatsnew_81.htm b/debug/org.eclipse.cdt.debug.application.doc/concepts/cdt_c_whatsnew_81.htm
index 25ceb216557..d925b09073e 100644
--- a/debug/org.eclipse.cdt.debug.application.doc/concepts/cdt_c_whatsnew_81.htm
+++ b/debug/org.eclipse.cdt.debug.application.doc/concepts/cdt_c_whatsnew_81.htm
@@ -11,7 +11,7 @@
<body>
<div role="main">
<h1 id="top">CDT 8.1 - New and Noteworthy</h1>
- <p>See <a href="http://wiki.eclipse.org/CDT/User/NewIn81">What's new in CDT 8.1</a> on the CDT Wiki
+ <p>See <a href="https://wiki.eclipse.org/CDT/User/NewIn81">What's new in CDT 8.1</a> on the CDT Wiki
which may contain more recent information.
</p>
@@ -70,7 +70,7 @@
<a name="Pin_the_Call_Hierarchy_View"></a><h3> <span class="headline"> Pin the Call Hierarchy View </span></h3>
<p>The Call Hierarchy View can now be pinned which enables the user to open multiple Call Hierarchy views at the same time.
</p><p><img alt="Image:Pin view call hierarchy.png" src="../images/cdt81/pin_view_call_hierarchy.png" width="641" height="153" border="0" />
-</p><p>This feature was completed November 12th, 2011 as part of <a href="http://bugs.eclipse.org/342498" class="external text" title="http://bugs.eclipse.org/342498" rel="nofollow">Bug 342498</a>
+</p><p>This feature was completed November 12th, 2011 as part of <a href="https://bugs.eclipse.org/342498" class="external text" title="https://bugs.eclipse.org/342498" rel="nofollow">Bug 342498</a>
</p><p><br />
</p>
<a name="Filtering_in_Outline_Views"></a><h3> <span class="headline"> Filtering in Outline Views </span></h3>
@@ -91,8 +91,8 @@
<p><br />
</p>
<a name="Indexing"></a><h2> <span class="headline"> Indexing </span></h2>
-<ul><li> Support for multiple variants of the same header file in the index (<a href="http://bugs.eclipse.org/197989" class="external text" title="http://bugs.eclipse.org/197989" rel="nofollow">Bug 197989</a>).
-</li><li> The <i>C/C++ &gt; Indexer &gt; Index unused headers</i> global preference is turned on by default (<a href="http://bugs.eclipse.org/377992" class="external text" title="http://bugs.eclipse.org/377992" rel="nofollow">Bug 377992</a>).
+<ul><li> Support for multiple variants of the same header file in the index (<a href="https://bugs.eclipse.org/197989" class="external text" title="https://bugs.eclipse.org/197989" rel="nofollow">Bug 197989</a>).
+</li><li> The <i>C/C++ &gt; Indexer &gt; Index unused headers</i> global preference is turned on by default (<a href="https://bugs.eclipse.org/377992" class="external text" title="https://bugs.eclipse.org/377992" rel="nofollow">Bug 377992</a>).
</li><li> New command: <i>Index &gt; Re-resolve Unresolved Includes</i>.
</li></ul>
<p><br />
@@ -105,12 +105,12 @@
</li><li>External tools are invoked automatically when a C/C++ file is saved
</li><li>The output of these tools can be displayed as editor markers
</li></ol>
-<p>The new infrastructure includes a sample checker that invokes <a href="http://cppcheck.sourceforge.net/" class="external text" title="http://cppcheck.sourceforge.net/" rel="nofollow">Cppcheck</a>.
+<p>The new infrastructure includes a sample checker that invokes <a href="https://cppcheck.sourceforge.net/" class="external text" title="https://cppcheck.sourceforge.net/" rel="nofollow">Cppcheck</a>.
</p><p><img alt="Image:Cppcheck-config-1.png" src="../images/cdt81/cppcheck_config_1.png" width="628" height="571" border="0" />
</p><p>A more detailed configuration dialog can be found by pressing the 'Customize Selected' button:
</p><p><img alt="Image:Cppcheck-config-2.png" src="../images/cdt81/cppcheck_config_2.png" width="556" height="413" border="0" />
</p><p>Users&nbsp;can specify the path of the Cppcheck executable and the arguments to pass to Cppcheck.
-</p><p>A demo of this checker can be found <a href="http://www.youtube.com/watch?feature=player_embedded&amp;v=_OKpQ-W09MU" class="external text" title="http://www.youtube.com/watch?feature=player_embedded&amp;v=_OKpQ-W09MU" rel="nofollow">here</a>.
+</p><p>A demo of this checker can be found <a href="https://www.youtube.com/watch?feature=player_embedded&amp;v=_OKpQ-W09MU" class="external text" title="https://www.youtube.com/watch?feature=player_embedded&amp;v=_OKpQ-W09MU" rel="nofollow">here</a>.
</p><p>The new infrastructure makes it very easy to write your own external-tool-based checker. In the simplest case, you will need to:
</p>
<ul><li>Extend the abstract class AbstractExternalToolBasedChecker.
@@ -122,7 +122,7 @@
</p><p>In the case of tools that are complex to set up, the new infrastructure is extremely flexible and configurable. It allows you to pretty much to configure every single aspect of the checker, from the files that the tool can check to the way to feed arguments to the tool.
</p>
<a name="New_Codan_checkers"></a><h3> <span class="headline"> New Codan checkers </span></h3>
-<ul><li> Class members should be properly initialized (<a href="http://bugs.eclipse.org/339795" class="external text" title="http://bugs.eclipse.org/339795" rel="nofollow">Bug 339795</a>). Example:
+<ul><li> Class members should be properly initialized (<a href="https://bugs.eclipse.org/339795" class="external text" title="https://bugs.eclipse.org/339795" rel="nofollow">Bug 339795</a>). Example:
</li></ul>
<pre> struct Demo {
Demo() {} // Warning: Member 'field' was not initialized in this constructor
@@ -134,7 +134,7 @@
</p>
<a name="Build"></a><h2> <span class="headline"> Build </span></h2>
<a name="Scanner_Discovery"></a><h3> <span class="headline"> Scanner Discovery </span></h3>
-<p>Scanner Discovery has been reworked in this release. The main purpose of Scanner Discovery was always to supply Include Paths and Macros for indexer and build. Now these are supplied by Language Settings Providers. See more at <a href="http://wiki.eclipse.org/CDT/ScannerDiscovery61" class="external text">Scanner Discovery</a> on the wiki.
+<p>Scanner Discovery has been reworked in this release. The main purpose of Scanner Discovery was always to supply Include Paths and Macros for indexer and build. Now these are supplied by Language Settings Providers. See more at <a href="https://wiki.eclipse.org/CDT/ScannerDiscovery61" class="external text">Scanner Discovery</a> on the wiki.
</p><p><img alt="Image:sd90Entries.png" src="../images/cdt81/sd90entries.png" width="1111" height="736" border="0" />
</p><p><img alt="Image:sd90Providers.png" src="../images/cdt81/sd90providers.png" width="1177" height="736" border="0" />
</p><p><br />
@@ -166,13 +166,13 @@
</p><p>The Multicore Visualizer View is just one example of a visualizer based on the underlying Visualizer Framework plugin. This provides a pluggable, extensible platform for developing visual development tools of this kind.
</p><p><img alt="Image:VisualizerSnapshot.png" src="../images/cdt81/visualizersnapshot.png" width="648" height="421" border="0" />
</p><p>Note that the Multicore Visualizer will only work using a Linux target; it will not work debugging on a Windows or Mac target. This is a current limitation of GDB which does not provide information about cores, for those targets (at writing, GDB is at version 7.4).
-</p><p>This feature was completed on February 10th, 2012. For details see <a href="http://bugs.eclipse.org/335027" class="external text" title="http://bugs.eclipse.org/335027" rel="nofollow">Bug 335027</a>
+</p><p>This feature was completed on February 10th, 2012. For details see <a href="https://bugs.eclipse.org/335027" class="external text" title="https://bugs.eclipse.org/335027" rel="nofollow">Bug 335027</a>
</p><p>The Multicore Visualizer is an optional feature of the CDT and must be installed manually. The feature is called <q>C/C++ Multicore Visualizer</q>. Installing it will install both the Multicore Visualizer and the Visualizer Framework. If you only want to install the Visualizer Framework (to build your own visualizer), you can install that feature by itself; it is called <q>CDT Visualizer Framework</q>. Once the features are installed, you can access the Multicore Visualizer (or any other visualizer) by opening the view called <q>Visualizer</q>.
</p>
<a name="Partitioning_of_large_arrays"></a><h3> <span class="headline"> Partitioning of large arrays </span></h3>
<p>CDT now displays large arrays as collections of partitions.
</p><p><img alt="Image:LargeArray.png" src="../images/cdt81/largearray.png" width="865" height="354" border="0" />
-</p><p>This feature was completed on January 26th, 2012 as part of <a href="http://bugs.eclipse.org/365541" class="external text" title="http://bugs.eclipse.org/365541" rel="nofollow">Bug 365541</a>
+</p><p>This feature was completed on January 26th, 2012 as part of <a href="https://bugs.eclipse.org/365541" class="external text" title="https://bugs.eclipse.org/365541" rel="nofollow">Bug 365541</a>
</p>
<a name="Edit_Breakpoint_on_Create"></a><h3> <span class="headline"> Edit Breakpoint on Create </span></h3>
<p>It is no longer necessary to first create a CDT breakpoint, then edit its properties. Properties such as enabled, ignore count, condition, temporary, can be set while creating the breakpoint.
@@ -232,7 +232,7 @@
</p><p><img alt="Image:DebugPreferences.png" src="../images/cdt81/debugpreferences.png" width="639" height="368" border="0" />
</p><p>CDT will then correctly display strings according to the selected encoding while debugging.
</p><p><img alt="Image:CharsetDebug.png" src="../images/cdt81/charsetdebug.png" width="774" height="266" border="0" />
-</p><p>Note that this feature requires GDB version 7.0 or later. This feature was completed on March 7th, 2012 as part of <a href="http://bugs.eclipse.org/307311" class="external text" title="http://bugs.eclipse.org/307311" rel="nofollow">Bug 307311</a>, <a href="http://bugs.eclipse.org/367456" class="external text" title="http://bugs.eclipse.org/367456" rel="nofollow">Bug 367456</a> and <a href="http://bugs.eclipse.org/370462" class="external text" title="http://bugs.eclipse.org/370462" rel="nofollow">Bug 370462</a>.
+</p><p>Note that this feature requires GDB version 7.0 or later. This feature was completed on March 7th, 2012 as part of <a href="https://bugs.eclipse.org/307311" class="external text" title="https://bugs.eclipse.org/307311" rel="nofollow">Bug 307311</a>, <a href="https://bugs.eclipse.org/367456" class="external text" title="https://bugs.eclipse.org/367456" rel="nofollow">Bug 367456</a> and <a href="https://bugs.eclipse.org/370462" class="external text" title="https://bugs.eclipse.org/370462" rel="nofollow">Bug 370462</a>.
</p>
<a name="Timeout_support_for_GDB_commands_in_DSF.2FGDB"></a><h3> <span class="headline"> Timeout support for GDB commands in DSF/GDB </span></h3>
<p>Timeouts for GDB commands are now supported in DSF/GDB. The feature is optional and disabled by default. The timeout values are configurable. When the feature is enabled, custom values can be assigned to some commands, all other commands use the default value. This feature was completed on April 17th, 2012 as part of <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=361934" class="external text" title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=361934" rel="nofollow">Bug 361934</a>.
@@ -241,7 +241,7 @@
<br />
</p>
<a name="Multi-select_Resume.2FSuspend_operations"></a><h3> <span class="headline"> Multi-select Resume/Suspend operations </span></h3>
-<p>CDT now allows to perform a Resume or Suspend operation on multiple selections of the same debug session. Because such a concept only adds value in a Non-Stop debug session, it is only supported in such a session (see <a href="../faq/index.html#What_is_the_difference_between_Non-stop_and_All-stop_multi-threaded_debugging.3F" class="external text" title="http://wiki.eclipse.org/CDT/User/FAQ#What_is_the_difference_between_Non-stop_and_All-stop_multi-threaded_debugging.3F" rel="nofollow">Non-Stop Debugging</a>). The behavior of a multi-selection Resume/Suspend is as follows:
+<p>CDT now allows to perform a Resume or Suspend operation on multiple selections of the same debug session. Because such a concept only adds value in a Non-Stop debug session, it is only supported in such a session (see <a href="../faq/index.html#What_is_the_difference_between_Non-stop_and_All-stop_multi-threaded_debugging.3F" class="external text" title="https://wiki.eclipse.org/CDT/User/FAQ#What_is_the_difference_between_Non-stop_and_All-stop_multi-threaded_debugging.3F" rel="nofollow">Non-Stop Debugging</a>). The behavior of a multi-selection Resume/Suspend is as follows:
</p>
<ul><li> Any selected stack frames implies a selection of their corresponding thread.
</li><li> If one or more threads are selected (not processes) and the resume/suspend operation is triggered, each selected thread on which the operation is currently valid will be resumed/suspended.
@@ -260,7 +260,7 @@
</li><li> Thread 2 is selected and suspended, and will be resumed.
</li><li> Thread 5 is selected but running, so it will be ignored.
</li></ol>
-<p>This feature was completed April 25th, 2012 as part of <a href="http://bugs.eclipse.org/330974" class="external text" title="http://bugs.eclipse.org/330974" rel="nofollow">Bug 330974</a>
+<p>This feature was completed April 25th, 2012 as part of <a href="https://bugs.eclipse.org/330974" class="external text" title="https://bugs.eclipse.org/330974" rel="nofollow">Bug 330974</a>
</p>
<a name="Show_only_suspended_threads_in_Debug_view"></a><h3> <span class="headline"> Show only suspended threads in Debug view </span></h3>
<p>CDT now has an global preference that allows to only show the suspended threads within the Debug view. When dealing with a large number of threads, a user is typically interested by the threads that are being inspected (suspended ones) and does not care about the running ones. Using this preference, all running threads will not be shown in the Debug view. Note that when a thread is stepping it will remain visible, although it is technically running. The process element of the Debug view will show how many threads are currently being filtered from view.
@@ -269,19 +269,19 @@
</p><p><img alt="Image:CDT_Debug_NoHiding.png" src="../images/cdt81/cdt_debug_nohiding.png" width="554" height="494" border="0" />
</p><p>Below shows how to access the preference, which is disabled by default.
</p><p><img alt="Image:CDT_Debug_HidingPref.png" src="../images/cdt81/cdt_debug_hidingpref.png" width="554" height="564" border="0" />
-</p><p>This feature was completed May 4th, 2012 as part of <a href="http://bugs.eclipse.org/375585" class="external text" title="http://bugs.eclipse.org/375585" rel="nofollow">Bug 375585</a>
+</p><p>This feature was completed May 4th, 2012 as part of <a href="https://bugs.eclipse.org/375585" class="external text" title="https://bugs.eclipse.org/375585" rel="nofollow">Bug 375585</a>
</p>
<a name="Multi-select_attach_dialog"></a><h3> <span class="headline"> Multi-select attach dialog </span></h3>
<p>CDT now allows selecting more than one process to attach to in a single user operation. The bottom pane is used to see which processes have been selected. If multi-process debugging is not supported with your debug session (needs GDB &gt;= 7.2 and NonStop enabled), only the first process will be attached to.
</p><p><img alt="Image:Multiselect.png" src="../images/cdt81/multiselect.png" width="436" height="553" border="0" />
-</p><p>This feature was completed June 30th, 2011 as part of <a href="http://bugs.eclipse.org/293679" class="external text" title="http://bugs.eclipse.org/293679" rel="nofollow">Bug 293679</a>
+</p><p>This feature was completed June 30th, 2011 as part of <a href="https://bugs.eclipse.org/293679" class="external text" title="https://bugs.eclipse.org/293679" rel="nofollow">Bug 293679</a>
</p>
<a name="Default_Postmortem_file_location"></a><h3> <span class="headline"> Default Postmortem file location </span></h3>
<p>CDT now allows the user to specify a default directory for the location of core files for a postmortem launch when the prompt is triggered. Since a postmortem launch can easily be re-used for different core files of the same binary, this feature helps reduce the amount of navigation needed to select a core file. Note that specifying the actual core file is still supported, as well as leaving the entire field blank, which will also trigger the prompt, but use the default directory for its starting location.
</p><p>Note that this 'core file' field supports the use of variables such as ${workspace_loc}.
</p><p>This feature applies to both core files and trace files.
</p><p><img alt="Image:CorePath.png" src="../images/cdt81/corepath.png" width="937" height="714" border="0" />
-</p><p>This feature was completed on February 17th, 2012 as part of <a href="http://bugs.eclipse.org/362039" class="external text" title="http://bugs.eclipse.org/362039" rel="nofollow">Bug 362039</a>
+</p><p>This feature was completed on February 17th, 2012 as part of <a href="https://bugs.eclipse.org/362039" class="external text" title="https://bugs.eclipse.org/362039" rel="nofollow">Bug 362039</a>
</p>
<a name="Support_for_Fast_Tracepoints"></a><h3> <span class="headline"> Support for Fast Tracepoints </span></h3>
<p>CDT now allows the user of fast tracepoints, as supported by GDB. Fast tracepoints use an instruction jump instead of a trap for efficiency. Fast tracepoint need a minimum of space to be inserted in the program and therefore, may fail to be set at certain locations. For fast tracepoints to work, a special library called the in-process agent (IPA), must be loaded in the inferior process. This library is built and distributed as an integral part of gdbserver. Please see the GDB documentation for more details.
@@ -292,7 +292,7 @@
</li><li><b>Automatic</b>: Attempt to use fast tracepoints. If a fast tracepoint cannot be used, automatically use a normal tracepoint.
</li></ol>
<p><img alt="Image:FastTracepointSelection.png" src="../images/cdt81/fasttracepointselection.png" width="900" height="500" border="0" />
-</p><p>This feature was completed July 20th, 2011 as part of <a href="http://bugs.eclipse.org/346320" class="external text" title="http://bugs.eclipse.org/346320" rel="nofollow">Bug 346320</a>
+</p><p>This feature was completed July 20th, 2011 as part of <a href="https://bugs.eclipse.org/346320" class="external text" title="https://bugs.eclipse.org/346320" rel="nofollow">Bug 346320</a>
</p>
<a name="Enhancements_to_Tracepoints"></a><h3> <span class="headline"> Enhancements to Tracepoints </span></h3>
<p>With the use of GDB 7.4, some new features are available within Eclipse.
@@ -305,7 +305,7 @@
<ul><li>On 32-bit x86-architectures, fast tracepoints can now be placed at locations with 4-byte instructions, when they were previously limited to locations with instructions of 5 bytes or longer.
</li></ul>
</li><li>Tracepoint collecting of Strings
-<ul><li>The tracepoint Collect action now has an option to request to collect character pointers as strings. It tells GDB to effectively dereference pointer-to-character types and collect the bytes of memory up to a zero byte. An optional integer limit sets a bound on the number of bytes that will be collected. This feature was completed on April 20th, 2012. For details see <a href="http://bugs.eclipse.org/373707" class="external text" title="http://bugs.eclipse.org/373707" rel="nofollow">Bug 373707</a>
+<ul><li>The tracepoint Collect action now has an option to request to collect character pointers as strings. It tells GDB to effectively dereference pointer-to-character types and collect the bytes of memory up to a zero byte. An optional integer limit sets a bound on the number of bytes that will be collected. This feature was completed on April 20th, 2012. For details see <a href="https://bugs.eclipse.org/373707" class="external text" title="https://bugs.eclipse.org/373707" rel="nofollow">Bug 373707</a>
</li></ul>
</li></ul>
<p><br />
@@ -336,7 +336,7 @@
</p><p><img alt="Image:CDT_Debug_VariableTypeBasedOnRtti.png" src="../images/cdt81/cdt_debug_variabletypebasedonrtti.png" width="493" height="382" border="0" />
</p><p>This feature is enabled by default and will work if you have the proper GDB version (7.5 or higher) and RTTI generation enabled (enabled by default in gcc), however it could be turned off in preferences:
</p><p><img alt="Image:CDT_Debug_VariableTypeBasedOnRttiPref.png" src="../images/cdt81/cdt_debug_variabletypebasedonrttipref.png" width="842" height="589" border="0" />
-</p><p>This feature was completed on May 5th, 2012 as part of <a href="http://bugs.eclipse.org/376901" class="external text" title="http://bugs.eclipse.org/376901" rel="nofollow">Bug 376901</a> and <a href="http://bugs.eclipse.org/377536" class="external text" title="http://bugs.eclipse.org/377536" rel="nofollow">Bug 377536</a>.
+</p><p>This feature was completed on May 5th, 2012 as part of <a href="https://bugs.eclipse.org/376901" class="external text" title="https://bugs.eclipse.org/376901" rel="nofollow">Bug 376901</a> and <a href="https://bugs.eclipse.org/377536" class="external text" title="https://bugs.eclipse.org/377536" rel="nofollow">Bug 377536</a>.
</p>
<a name="Build_variables_support_in_.22C.2FC.2B.2B_Application.22_field_of_launch_configuration"></a><h3> <span class="headline"> Build variables support in "C/C++ Application" field of launch configuration </span></h3>
<p><img alt="Image:CDT_Debug_VarsInAppplicationField.png" src="../images/cdt81/cdt_debug_varsinappplicationfield.png" width="727" height="556" border="0" />
@@ -345,10 +345,10 @@
<ul><li> config_name - the name of the active configuration for the project specified as an argument;
</li><li> config_description - the description of the active configuration for the project specified as an argument;
</li></ul>
-<p>This feature was completed on April 2nd, 2012 as part of <a href="http://bugs.eclipse.org/180256" class="external text" title="http://bugs.eclipse.org/180256" rel="nofollow">Bug 180256</a> and <a href="http://bugs.eclipse.org/375814" class="external text" title="http://bugs.eclipse.org/375814" rel="nofollow">Bug 375814</a>.
+<p>This feature was completed on April 2nd, 2012 as part of <a href="https://bugs.eclipse.org/180256" class="external text" title="https://bugs.eclipse.org/180256" rel="nofollow">Bug 180256</a> and <a href="https://bugs.eclipse.org/375814" class="external text" title="https://bugs.eclipse.org/375814" rel="nofollow">Bug 375814</a>.
</p>
<a name="Support_for_octal_number_format_in_CDI"></a><h3> <span class="headline"> Support for octal number format in CDI </span></h3>
-<p>CDI now also supports to use the octal number format to display the contents of variables, expressions and registers. You can select the octal number format within the Debug preferences. This feature was completed on March 7th, 2012 as part of <a href="http://bugs.eclipse.org/370462" class="external text" title="http://bugs.eclipse.org/370462" rel="nofollow">Bug 370462</a>.
+<p>CDI now also supports to use the octal number format to display the contents of variables, expressions and registers. You can select the octal number format within the Debug preferences. This feature was completed on March 7th, 2012 as part of <a href="https://bugs.eclipse.org/370462" class="external text" title="https://bugs.eclipse.org/370462" rel="nofollow">Bug 370462</a>.
</p><p><br />
</p>
<a name="C.2FC.2B.2B_Unit_Testing_Support"></a><h2> <span class="headline"> C/C++ Unit Testing Support </span></h2>
@@ -357,9 +357,9 @@
</p><p>Supported features:
</p>
<ul><li>tests running with support of the following frameworks:
-<ul><li><a href="http://www.boost.org/doc/libs/1_46_1/libs/test/doc/html/index.html" class="external text" title="http://www.boost.org/doc/libs/1_46_1/libs/test/doc/html/index.html" rel="nofollow">Boost.Test</a>;
-</li><li><a href="http://doc.qt.nokia.com/solutions/4/qttestlib" class="external text" title="http://doc.qt.nokia.com/solutions/4/qttestlib" rel="nofollow">Qt Test</a>;
-</li><li><a href="http://code.google.com/p/googletest/" class="external text" title="http://code.google.com/p/googletest/" rel="nofollow">Google Testing Framework</a>;
+<ul><li><a href="https://www.boost.org/doc/libs/1_46_1/libs/test/doc/html/index.html" class="external text" title="https://www.boost.org/doc/libs/1_46_1/libs/test/doc/html/index.html" rel="nofollow">Boost.Test</a>;
+</li><li><a href="https://doc.qt.nokia.com/solutions/4/qttestlib" class="external text" title="https://doc.qt.nokia.com/solutions/4/qttestlib" rel="nofollow">Qt Test</a>;
+</li><li><a href="https://code.google.com/p/googletest/" class="external text" title="https://code.google.com/p/googletest/" rel="nofollow">Google Testing Framework</a>;
</li></ul>
</li><li>tests hierarchy browsing;
</li><li>test messages viewing, filtering by test or test suite; source lookup is also supported;
@@ -372,8 +372,8 @@
</li><li>test runs history;
</li><li>the list of provided tests runners may be easily extended writing a new Tests Runner Plugin.
</li></ul>
-<p>The HOWTO, known problems and limitation can be found in the <a href="http://wiki.eclipse.org/CDT/User/FAQ#C.2FC.2B.2B_Unit_Testing_Support" class="external text">CDT FAQ</a> on the wiki.
-</p><p>This feature was completed April 18th, 2012 as part of <a href="http://bugs.eclipse.org/210366" class="external text" title="http://bugs.eclipse.org/210366" rel="nofollow">Bug 210366</a>.
+<p>The HOWTO, known problems and limitation can be found in the <a href="https://wiki.eclipse.org/CDT/User/FAQ#C.2FC.2B.2B_Unit_Testing_Support" class="external text">CDT FAQ</a> on the wiki.
+</p><p>This feature was completed April 18th, 2012 as part of <a href="https://bugs.eclipse.org/210366" class="external text" title="https://bugs.eclipse.org/210366" rel="nofollow">Bug 210366</a>.
</p>
<a name="Bugs_Fixed"></a><h2> <span class="headline"> Bugs Fixed in this Release </span></h2>
<p>Bugzilla tasks completed for this release:
@@ -391,7 +391,7 @@ CDT 8.1 bug fixes</a>
<p><a href="cdt_c_whatsnew_80.htm">CDT 8.0 - New and Noteworthy</a></p>
<p><a href="cdt_c_whatsnew_70.htm">CDT 7.0 - New and Noteworthy</a></p>
<p><a href="cdt_c_whatsnew_60.htm">CDT 6.0 - New and Noteworthy</a></p>
- <p><a href="http://wiki.eclipse.org/CDT/User/NewIn50">CDT 5.0 - New and Noteworthy</a></p>
+ <p><a href="https://wiki.eclipse.org/CDT/User/NewIn50">CDT 5.0 - New and Noteworthy</a></p>
<p><a href="#top">Back to Top</a></p>
diff --git a/debug/org.eclipse.cdt.debug.application.doc/concepts/cdt_c_whatsnew_82.htm b/debug/org.eclipse.cdt.debug.application.doc/concepts/cdt_c_whatsnew_82.htm
index f57e08e8cdb..d17a77eab1f 100644
--- a/debug/org.eclipse.cdt.debug.application.doc/concepts/cdt_c_whatsnew_82.htm
+++ b/debug/org.eclipse.cdt.debug.application.doc/concepts/cdt_c_whatsnew_82.htm
@@ -11,11 +11,11 @@
<body>
<div>
<h1 id="top">CDT 8.2 - New and Noteworthy</h1>
- <p>See <a href="http://wiki.eclipse.org/CDT/User/NewIn82">What's new in CDT 8.2</a> on the CDT Wiki
+ <p>See <a href="https://wiki.eclipse.org/CDT/User/NewIn82">What's new in CDT 8.2</a> on the CDT Wiki
which may contain more recent information.
</p>
-<!-- ***** START MANUAL INSERT HTML FROM http://wiki.eclipse.org/CDT/User/NewIn82?action=render -->
+<!-- ***** START MANUAL INSERT HTML FROM https://wiki.eclipse.org/CDT/User/NewIn82?action=render -->
<table id="toc" class="toc" summary="Contents"><tr><td><div id="toctitle"><h2>Contents</h2></div>
<ul>
<li class="toclevel-1"><a href="#Editor"><span class="tocnumber">1</span> <span class="toctext">Editor</span></a>
@@ -62,56 +62,56 @@
<a name="Organize_Includes_Command"></a><h3> <span class="mw-headline"> Organize Includes Command </span></h3>
<p>The <i>Organize Includes</i> command is similar to <i>Organize Imports</i> in Java. It adds missing include statements, removes unnecessary ones, and reorders includes according to user preferences.
</p><p><a><img alt="Image:OrganizeIncludes.png" src="../images/cdt82/OrganizeIncludes.png" width="356" height="339" border="0" /></a>
-</p><p>When determining which header files must be included the <i>Organize Includes</i> command follows the "Include What You Use" rule. See <a href="http://code.google.com/p/include-what-you-use/wiki/WhyIWYU" class="external text" title="http://code.google.com/p/include-what-you-use/wiki/WhyIWYU" rel="nofollow">Why Include What You Use?</a> and <a href="http://code.google.com/p/include-what-you-use/wiki/WhatIsAUse" class="external text" title="http://code.google.com/p/include-what-you-use/wiki/WhatIsAUse" rel="nofollow">What Is a Use?</a>.
+</p><p>When determining which header files must be included the <i>Organize Includes</i> command follows the "Include What You Use" rule. See <a href="https://code.google.com/p/include-what-you-use/wiki/WhyIWYU" class="external text" title="https://code.google.com/p/include-what-you-use/wiki/WhyIWYU" rel="nofollow">Why Include What You Use?</a> and <a href="https://code.google.com/p/include-what-you-use/wiki/WhatIsAUse" class="external text" title="https://code.google.com/p/include-what-you-use/wiki/WhatIsAUse" rel="nofollow">What Is a Use?</a>.
</p>
<a name="Build"></a><h2> <span class="mw-headline"> Build </span></h2>
<a name="Console"></a><h3> <span class="mw-headline"> Console </span></h3>
-<ul><li> Line wrap option on the console (<a href="http://bugs.eclipse.org/199605" class="external text" title="http://bugs.eclipse.org/199605" rel="nofollow">Bug 199605</a>).
+<ul><li> Line wrap option on the console (<a href="https://bugs.eclipse.org/199605" class="external text" title="https://bugs.eclipse.org/199605" rel="nofollow">Bug 199605</a>).
</li></ul>
<p><a><img alt="Image:ConsoleWrapLine.png" src="../images/cdt82/ConsoleWrapLine.png" width="490" height="330" border="0" /></a> <a><img alt="Image:ConsoleWrapLinePreference.png" src="../images/cdt82/ConsoleWrapLinePreference.png" width="635" height="559" border="0" /></a>
</p>
<a name="Improved_toolchain_detection"></a><h3> <span class="mw-headline"> Improved toolchain detection </span></h3>
-<ul><li> Automatic detection of MinGW 64 bit (<a href="http://bugs.eclipse.org/380598" class="external text" title="http://bugs.eclipse.org/380598" rel="nofollow">Bug 380598</a>).
-</li><li> Detection of Visual Studio under Windows 7 64 bit (<a href="http://bugs.eclipse.org/385608" class="external text" title="http://bugs.eclipse.org/385608" rel="nofollow">Bug 385608</a>).
-</li><li> Recognize $PATH environment variable from workspace preferences for MinGW and Cygwin toolchains (<a href="http://bugs.eclipse.org/384520" class="external text" title="http://bugs.eclipse.org/384520" rel="nofollow">Bug 384520</a>).
-</li><li> Introduction of environment variables $MINGW_HOME and $CYGWIN_HOME that are recognized in preferences and project properties (<a href="http://bugs.eclipse.org/403257" class="external text" title="http://bugs.eclipse.org/403257" rel="nofollow">Bug 403257</a>, <a href="http://bugs.eclipse.org/357442" class="external text" title="http://bugs.eclipse.org/357442" rel="nofollow">Bug 357442</a>).
+<ul><li> Automatic detection of MinGW 64 bit (<a href="https://bugs.eclipse.org/380598" class="external text" title="https://bugs.eclipse.org/380598" rel="nofollow">Bug 380598</a>).
+</li><li> Detection of Visual Studio under Windows 7 64 bit (<a href="https://bugs.eclipse.org/385608" class="external text" title="https://bugs.eclipse.org/385608" rel="nofollow">Bug 385608</a>).
+</li><li> Recognize $PATH environment variable from workspace preferences for MinGW and Cygwin toolchains (<a href="https://bugs.eclipse.org/384520" class="external text" title="https://bugs.eclipse.org/384520" rel="nofollow">Bug 384520</a>).
+</li><li> Introduction of environment variables $MINGW_HOME and $CYGWIN_HOME that are recognized in preferences and project properties (<a href="https://bugs.eclipse.org/403257" class="external text" title="https://bugs.eclipse.org/403257" rel="nofollow">Bug 403257</a>, <a href="https://bugs.eclipse.org/357442" class="external text" title="https://bugs.eclipse.org/357442" rel="nofollow">Bug 357442</a>).
</li></ul>
<p><a><img alt="Image:MINGW_HOME.png" src="../images/cdt82/MINGW_HOME.png" width="825" height="454" border="0" /></a> <a><img alt="Image:CYGWIN_HOME.png" src="../images/cdt82/CYGWIN_HOME.png" width="824" height="462" border="0" /></a>
</p>
<a name="Scanner_Discovery_.2F_Language_Settings_Providers"></a><h3> <span class="mw-headline"> Scanner Discovery / Language Settings Providers </span></h3>
-<ul><li> "Preprocessor Include Paths, Macros etc." property page now fully replaces older "Scanner Discovery" page. "Scanner Discovery" is now hidden by default (<a href="http://bugs.eclipse.org/403405" class="external text" title="http://bugs.eclipse.org/403405" rel="nofollow">Bug 403405</a>, <a href="http://bugs.eclipse.org/407087" class="external text" title="http://bugs.eclipse.org/407087" rel="nofollow">Bug 407087</a>).
+<ul><li> "Preprocessor Include Paths, Macros etc." property page now fully replaces older "Scanner Discovery" page. "Scanner Discovery" is now hidden by default (<a href="https://bugs.eclipse.org/403405" class="external text" title="https://bugs.eclipse.org/403405" rel="nofollow">Bug 403405</a>, <a href="https://bugs.eclipse.org/407087" class="external text" title="https://bugs.eclipse.org/407087" rel="nofollow">Bug 407087</a>).
</li></ul>
<p><a><img alt="Image:PropertyPageSettingsScannerDiscovery.png" src="../images/cdt82/PropertyPageSettingsScannerDiscovery.png" width="861" height="464" border="0" /></a>
</p>
-<ul><li> Built-in Compiler Settings provider for MinGW is enabled by default now for MinGW toolchain (<a href="http://bugs.eclipse.org/382422" class="external text" title="http://bugs.eclipse.org/382422" rel="nofollow">Bug 382422</a>).
-</li><li> Added Built-in Compiler Settings provider for Cygwin (<a href="http://bugs.eclipse.org/382423" class="external text" title="http://bugs.eclipse.org/382423" rel="nofollow">Bug 382423</a>).
+<ul><li> Built-in Compiler Settings provider for MinGW is enabled by default now for MinGW toolchain (<a href="https://bugs.eclipse.org/382422" class="external text" title="https://bugs.eclipse.org/382422" rel="nofollow">Bug 382422</a>).
+</li><li> Added Built-in Compiler Settings provider for Cygwin (<a href="https://bugs.eclipse.org/382423" class="external text" title="https://bugs.eclipse.org/382423" rel="nofollow">Bug 382423</a>).
</li></ul>
<p><a><img alt="Image:CygwinProvider.png" src="../images/cdt82/CygwinProvider.png" width="836" height="624" border="0" /></a>
</p>
-<ul><li> Project-relative include paths representation was stabilized and now officially supported in UI (<a href="http://bugs.eclipse.org/401734" class="external text" title="http://bugs.eclipse.org/401734" rel="nofollow">Bug 401734</a>).
-</li><li> Support for project-relative paths for Build Output Providers (<a href="http://bugs.eclipse.org/402023" class="external text" title="http://bugs.eclipse.org/402023" rel="nofollow">Bug 402023</a>).
-</li><li> Changes in environment variables (preferences or project properties - as applicable) automatically trigger re-discovery (<a href="http://bugs.eclipse.org/403406" class="external text" title="http://bugs.eclipse.org/403406" rel="nofollow">Bug 403406</a>).
-</li><li> Number of changes to support compatibility with older methods to provide include paths for indexer, namely pathEntryContainers, contributed ScannerInfo entries (<a href="http://bugs.eclipse.org/401961" class="external text" title="http://bugs.eclipse.org/401961" rel="nofollow">Bug 401961</a>, <a href="http://bugs.eclipse.org/398056" class="external text" title="http://bugs.eclipse.org/398056" rel="nofollow">Bug 398056</a>, <a href="http://bugs.eclipse.org/392966" class="external text" title="http://bugs.eclipse.org/392966" rel="nofollow">Bug 392966</a>).
-</li><li> Fixed compatibility issues related to import older projects (<a href="http://bugs.eclipse.org/393641" class="external text" title="http://bugs.eclipse.org/393641" rel="nofollow">Bug 393641</a>).
+<ul><li> Project-relative include paths representation was stabilized and now officially supported in UI (<a href="https://bugs.eclipse.org/401734" class="external text" title="https://bugs.eclipse.org/401734" rel="nofollow">Bug 401734</a>).
+</li><li> Support for project-relative paths for Build Output Providers (<a href="https://bugs.eclipse.org/402023" class="external text" title="https://bugs.eclipse.org/402023" rel="nofollow">Bug 402023</a>).
+</li><li> Changes in environment variables (preferences or project properties - as applicable) automatically trigger re-discovery (<a href="https://bugs.eclipse.org/403406" class="external text" title="https://bugs.eclipse.org/403406" rel="nofollow">Bug 403406</a>).
+</li><li> Number of changes to support compatibility with older methods to provide include paths for indexer, namely pathEntryContainers, contributed ScannerInfo entries (<a href="https://bugs.eclipse.org/401961" class="external text" title="https://bugs.eclipse.org/401961" rel="nofollow">Bug 401961</a>, <a href="https://bugs.eclipse.org/398056" class="external text" title="https://bugs.eclipse.org/398056" rel="nofollow">Bug 398056</a>, <a href="https://bugs.eclipse.org/392966" class="external text" title="https://bugs.eclipse.org/392966" rel="nofollow">Bug 392966</a>).
+</li><li> Fixed compatibility issues related to import older projects (<a href="https://bugs.eclipse.org/393641" class="external text" title="https://bugs.eclipse.org/393641" rel="nofollow">Bug 393641</a>).
</li></ul>
<a name="Makefile_Editor"></a><h3> <span class="mw-headline"> Makefile Editor </span></h3>
-<ul><li> GNU Makefile functions highlighting fixed (<a href="http://bugs.eclipse.org/406911" class="external text" title="http://bugs.eclipse.org/406911" rel="nofollow">Bug 406911</a>).
-</li><li> Bracket matching (<a href="http://bugs.eclipse.org/405279" class="external text" title="http://bugs.eclipse.org/405279" rel="nofollow">Bug 405279</a>).
+<ul><li> GNU Makefile functions highlighting fixed (<a href="https://bugs.eclipse.org/406911" class="external text" title="https://bugs.eclipse.org/406911" rel="nofollow">Bug 406911</a>).
+</li><li> Bracket matching (<a href="https://bugs.eclipse.org/405279" class="external text" title="https://bugs.eclipse.org/405279" rel="nofollow">Bug 405279</a>).
</li></ul>
<p><a><img alt="Image:MakeEditorBracketMatching.png" src="../images/cdt82/MakeEditorBracketMatching.png" width="558" height="82" border="0" /></a>
</p>
-<ul><li> Content assist for automatic variables (<a href="http://bugs.eclipse.org/407169" class="external text" title="http://bugs.eclipse.org/407169" rel="nofollow">Bug 407169</a>).
+<ul><li> Content assist for automatic variables (<a href="https://bugs.eclipse.org/407169" class="external text" title="https://bugs.eclipse.org/407169" rel="nofollow">Bug 407169</a>).
</li></ul>
<p><a><img alt="Image:MakeEditorContentAssistAutoVars.png" src="../images/cdt82/MakeEditorContentAssistAutoVars.png" width="558" height="370" border="0" /></a>
</p>
-<ul><li> Highlight for conditional variable assignment (<a href="http://bugs.eclipse.org/406596" class="external text" title="http://bugs.eclipse.org/406596" rel="nofollow">Bug 406596</a>).
-</li><li> Proper colorization of escaped # (<a href="http://bugs.eclipse.org/404599" class="external text" title="http://bugs.eclipse.org/404599" rel="nofollow">Bug 404599</a>).
+<ul><li> Highlight for conditional variable assignment (<a href="https://bugs.eclipse.org/406596" class="external text" title="https://bugs.eclipse.org/406596" rel="nofollow">Bug 406596</a>).
+</li><li> Proper colorization of escaped # (<a href="https://bugs.eclipse.org/404599" class="external text" title="https://bugs.eclipse.org/404599" rel="nofollow">Bug 404599</a>).
</li></ul>
<a name="Misc"></a><h3> <span class="mw-headline"> Misc </span></h3>
-<ul><li> Ability to specify local includes for indexer, as in [#include "header.h"] as opposed to system includes [#include &lt;header.h&gt;] (<a href="http://bugs.eclipse.org/388368" class="external text" title="http://bugs.eclipse.org/388368" rel="nofollow">Bug 388368</a>).
-</li><li> Fixed some bugs related to storing environment variables, such as silently ignoring removals or additions (<a href="http://bugs.eclipse.org/348781" class="external text" title="http://bugs.eclipse.org/348781" rel="nofollow">Bug 348781</a>, <a href="http://bugs.eclipse.org/355488" class="external text" title="http://bugs.eclipse.org/355488" rel="nofollow">Bug 355488</a>).
-</li><li> Improved performance in certain areas (<a href="http://bugs.eclipse.org/405643" class="external text" title="http://bugs.eclipse.org/405643" rel="nofollow">Bug 405643</a>, <a href="http://bugs.eclipse.org/405638" class="external text" title="http://bugs.eclipse.org/405638" rel="nofollow">Bug 405638</a>, <a href="http://bugs.eclipse.org/405744" class="external text" title="http://bugs.eclipse.org/405744" rel="nofollow">Bug 405744</a>, <a href="http://bugs.eclipse.org/407483" class="external text" title="http://bugs.eclipse.org/407483" rel="nofollow">Bug 407483</a>).
-</li><li> User documentation for Scanner Discovery updated including property page "Preprocessor Includes, Macros" (<a href="http://bugs.eclipse.org/409392" class="external text" title="http://bugs.eclipse.org/409392" rel="nofollow">Bug 409392</a>).
+<ul><li> Ability to specify local includes for indexer, as in [#include "header.h"] as opposed to system includes [#include &lt;header.h&gt;] (<a href="https://bugs.eclipse.org/388368" class="external text" title="https://bugs.eclipse.org/388368" rel="nofollow">Bug 388368</a>).
+</li><li> Fixed some bugs related to storing environment variables, such as silently ignoring removals or additions (<a href="https://bugs.eclipse.org/348781" class="external text" title="https://bugs.eclipse.org/348781" rel="nofollow">Bug 348781</a>, <a href="https://bugs.eclipse.org/355488" class="external text" title="https://bugs.eclipse.org/355488" rel="nofollow">Bug 355488</a>).
+</li><li> Improved performance in certain areas (<a href="https://bugs.eclipse.org/405643" class="external text" title="https://bugs.eclipse.org/405643" rel="nofollow">Bug 405643</a>, <a href="https://bugs.eclipse.org/405638" class="external text" title="https://bugs.eclipse.org/405638" rel="nofollow">Bug 405638</a>, <a href="https://bugs.eclipse.org/405744" class="external text" title="https://bugs.eclipse.org/405744" rel="nofollow">Bug 405744</a>, <a href="https://bugs.eclipse.org/407483" class="external text" title="https://bugs.eclipse.org/407483" rel="nofollow">Bug 407483</a>).
+</li><li> User documentation for Scanner Discovery updated including property page "Preprocessor Includes, Macros" (<a href="https://bugs.eclipse.org/409392" class="external text" title="https://bugs.eclipse.org/409392" rel="nofollow">Bug 409392</a>).
</li></ul>
<a name="Debug"></a><h2> <span class="mw-headline"> Debug </span></h2>
<a name="Enhanced_Expressions"></a><h3> <span class="mw-headline"> Enhanced Expressions </span></h3>
@@ -144,7 +144,7 @@ var1; =$e* -- Will show a group containing variable var1 as well as all registe
</pre>
<p>This feature allows to quickly define multiple expressions that interest the user. Because groups are created from these special expressions, they can be collapsed when uninteresting and re-expanded later, without having to be re-entered by the user.
</p><p><a><img alt="Image:CDT GroupExpr.png" src="../images/cdt82/CDT_GroupExpr.png" width="545" height="521" border="0" /></a>
-</p><p>This feature was completed on July 10th, 2012 and updated for local variables on December 19th, 2012. For details see <a href="http://bugs.eclipse.org/381754" class="external text" title="http://bugs.eclipse.org/381754" rel="nofollow">Bug 381754</a> and <a href="http://bugs.eclipse.org/394408" class="external text" title="http://bugs.eclipse.org/394408" rel="nofollow">Bug 394408</a>.
+</p><p>This feature was completed on July 10th, 2012 and updated for local variables on December 19th, 2012. For details see <a href="https://bugs.eclipse.org/381754" class="external text" title="https://bugs.eclipse.org/381754" rel="nofollow">Bug 381754</a> and <a href="https://bugs.eclipse.org/394408" class="external text" title="https://bugs.eclipse.org/394408" rel="nofollow">Bug 394408</a>.
</p><p>Note that the comma (,) is not allowed as a group separator as it is used within valid expressions that use templates (e.g., <i>((((((class std::_Vector_base&lt;int, std::allocator&lt;int&gt; &gt;) v))._M_impl))._M_start)</i>).
</p>
<a name="OS_Resources_View"></a><h3> <span class="mw-headline"> OS Resources View </span></h3>
@@ -206,7 +206,7 @@ Kernel modules - Listing of all loaded kernel modules
<a name="Floating_Point_renderer_has_been_added_to_the_memory_package"></a><h3> <span class="mw-headline"> Floating Point renderer has been added to the memory package </span></h3>
<p>A floating point render has been added to the memory package. So now there is the Traditional renderer and a Floating Point renderer available. This render allows display and editing of the floating point values. Since it originated from the Traditional render, it's workflow and style are similar. There is no ASCII data pane display, since this did not seem to make much sense with floating point data.
</p><p><a><img alt="Image:CDT FloatingPointMemory.png" src="../images/cdt82/CDT_FloatingPointMemory.png" width="834" height="352" border="0" /></a>
-</p><p>This feature was completed on November 16th, 2012 as part of <a href="http://bugs.eclipse.org/394509" class="external text" title="http://bugs.eclipse.org/394509" rel="nofollow">Bug 394509</a>.
+</p><p>This feature was completed on November 16th, 2012 as part of <a href="https://bugs.eclipse.org/394509" class="external text" title="https://bugs.eclipse.org/394509" rel="nofollow">Bug 394509</a>.
</p>
<a name="Debugging_multiple_processes_within_one_debug_session"></a><h3> <span class="mw-headline"> Debugging multiple processes within one debug session </span></h3>
<p>Debugging a new executable in the same debug session has been improved for GDB versions starting from 7.2. "Debug New Executable" action has been added to the context menu of the Debug view.
@@ -288,7 +288,7 @@ Building on the enhanced selection, it's now also possible to filter what is sho
<p>See bugzilla report <a href="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced;bug_status=RESOLVED;bug_status=VERIFIED;bug_status=CLOSED;resolution=FIXED;target_milestone=8.1.1;target_milestone=8.1.2;target_milestone=8.1.3;target_milestone=8.2;product=CDT;classification=Tools" class="external text" title="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced;bug_status=RESOLVED;bug_status=VERIFIED;bug_status=CLOSED;resolution=FIXED;target_milestone=8.1.1;target_milestone=8.1.2;target_milestone=8.1.3;target_milestone=8.2;product=CDT;classification=Tools" rel="nofollow">Bugs Fixed in CDT 8.2</a>.
Open this report in new browser window.
</p>
-<!-- ***** END MANUAL INSERT HTML FROM http://wiki.eclipse.org/CDT/User/NewIn82?action=render -->
+<!-- ***** END MANUAL INSERT HTML FROM https://wiki.eclipse.org/CDT/User/NewIn82?action=render -->
<h2>What's new in other CDT releases</h2>
@@ -298,7 +298,7 @@ Open this report in new browser window.
<p><a href="cdt_c_whatsnew_80.htm">CDT 8.0 - New and Noteworthy</a></p>
<p><a href="cdt_c_whatsnew_70.htm">CDT 7.0 - New and Noteworthy</a></p>
<p><a href="cdt_c_whatsnew_60.htm">CDT 6.0 - New and Noteworthy</a></p>
- <p><a href="http://wiki.eclipse.org/CDT/User/NewIn50">CDT 5.0 - New and Noteworthy</a></p>
+ <p><a href="https://wiki.eclipse.org/CDT/User/NewIn50">CDT 5.0 - New and Noteworthy</a></p>
<p><a href="#top">Back to Top</a></p>
diff --git a/debug/org.eclipse.cdt.debug.application.doc/concepts/cdt_c_whatsnew_83.htm b/debug/org.eclipse.cdt.debug.application.doc/concepts/cdt_c_whatsnew_83.htm
index 165a0ac85a7..76997a20ba1 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/concepts/cdt_c_whatsnew_83.htm
+++ b/debug/org.eclipse.cdt.debug.application.doc/concepts/cdt_c_whatsnew_83.htm
@@ -11,11 +11,11 @@
<body>
<div>
<h1 id="top">CDT 8.3 - New and Noteworthy</h1>
- <p>See <a href="http://wiki.eclipse.org/CDT/User/NewIn83">What's new in CDT 8.3</a> on the CDT Wiki
+ <p>See <a href="https://wiki.eclipse.org/CDT/User/NewIn83">What's new in CDT 8.3</a> on the CDT Wiki
which may contain more recent information.
</p>
-<!-- ***** START MANUAL INSERT HTML FROM http://wiki.eclipse.org/CDT/User/NewIn83?action=render -->
+<!-- ***** START MANUAL INSERT HTML FROM https://wiki.eclipse.org/CDT/User/NewIn83?action=render -->
<table id="toc" class="toc"><tr><td><div id="toctitle"><h2>Contents</h2></div>
<ul>
<li class="toclevel-1 tocsection-1"><a href="#Build"><span class="tocnumber">1</span> <span class="toctext">Build</span></a>
@@ -55,12 +55,12 @@
</td></tr></table>
<h2> <span class="mw-headline" id="Build"> Build </span></h2>
<h3> <span class="mw-headline" id="Toolchains"> Toolchains </span></h3>
-<ul><li> Language dialect options in GNU toolchain definition (<a rel="nofollow" class="external text" href="http://bugs.eclipse.org/404913">Bug 404913</a>).
+<ul><li> Language dialect options in GNU toolchain definition (<a rel="nofollow" class="external text" href="https://bugs.eclipse.org/404913">Bug 404913</a>).
</li></ul>
<p><a><img alt="DialectLanguageStandard.png" src="../images/cdt83/DialectLanguageStandard.png" width="845" height="381" /></a>
</p>
<h3> <span class="mw-headline" id="Scanner_Discovery.2FLanguage_Settings_Providers"> Scanner Discovery/Language Settings Providers </span></h3>
-<ul><li> Use applicable options (such as language dialect) from build settings during discovery of built-in settings (<a rel="nofollow" class="external text" href="http://bugs.eclipse.org/404913">Bug 404913</a>). But note that to use options changed by user the built-in settings provider needs to be set as non-shared.<br />
+<ul><li> Use applicable options (such as language dialect) from build settings during discovery of built-in settings (<a rel="nofollow" class="external text" href="https://bugs.eclipse.org/404913">Bug 404913</a>). But note that to use options changed by user the built-in settings provider needs to be set as non-shared.<br />
</li></ul>
<p><a><img alt="BuiltInDetectors-FLAGS.png" src="../images/cdt83/BuiltInDetectors-FLAGS.png" width="974" height="533" /></a>
</p>
@@ -76,47 +76,47 @@
</p>
<h2> <span class="mw-headline" id="Debug"> Debug </span></h2>
<h3> <span class="mw-headline" id="Threads_displayed_by_creation_order_in_the_Debug_view"> Threads displayed by creation order in the Debug view </span></h3>
-<p>For a multi-threaded program, the different threads are now shown in the order they were created during execution. Not only is that order more intuitive, it allows for the selection in the Debug view to be more stable. This enhancement was completed on January 13th, 2014. For details see <a rel="nofollow" class="external text" href="http://eclip.se/412547">Bug 412547</a>.
+<p>For a multi-threaded program, the different threads are now shown in the order they were created during execution. Not only is that order more intuitive, it allows for the selection in the Debug view to be more stable. This enhancement was completed on January 13th, 2014. For details see <a rel="nofollow" class="external text" href="https://eclip.se/412547">Bug 412547</a>.
</p><p><a><img alt="CDT ThreadOrder.png" src="../images/cdt83/CDT_ThreadOrder.png" width="896" height="219" /></a>
</p><p><br />
</p><p><br />
</p>
<h3> <span class="mw-headline" id="Support_for_multi-process_debugging_in_Memory_views"> Support for multi-process debugging in Memory views </span></h3>
-<p>The Memory view and Memory Browser view now support multi-process debugging. Beyond properly refreshing their content based on the currently selected process, the user can now define different memory addresses to look at for each process being debugged. This work was a contribution from Alvaro Sanchez-Leon on January 15th, 2014. For details see <a rel="nofollow" class="external text" href="http://eclip.se/250323">Bug 250323</a>.
+<p>The Memory view and Memory Browser view now support multi-process debugging. Beyond properly refreshing their content based on the currently selected process, the user can now define different memory addresses to look at for each process being debugged. This work was a contribution from Alvaro Sanchez-Leon on January 15th, 2014. For details see <a rel="nofollow" class="external text" href="https://eclip.se/250323">Bug 250323</a>.
</p><p><a><img alt="CDT MemMultiProcess.png" src="../images/cdt83/CDT_MemMultiProcess.png" width="1003" height="499" /></a>
</p><p><br />
</p><p><br />
</p>
<h3> <span class="mw-headline" id="Enhanced_support_for_multi-process_debugging_in_Registers_view"> Enhanced support for multi-process debugging in Registers view </span></h3>
-<p>The Registers view now supports debugging processes with a different set of registers. For example, the registers of the selected process will properly be displayed when debugging both a 32-bit process and a 64-bit process. This work was a contribution from Alvaro Sanchez-Leon on September 29th, 2013. For details see <a rel="nofollow" class="external text" href="http://eclip.se/418176">Bug 418176</a>.
+<p>The Registers view now supports debugging processes with a different set of registers. For example, the registers of the selected process will properly be displayed when debugging both a 32-bit process and a 64-bit process. This work was a contribution from Alvaro Sanchez-Leon on September 29th, 2013. For details see <a rel="nofollow" class="external text" href="https://eclip.se/418176">Bug 418176</a>.
</p><p><a><img alt="CDT RegMultiProcess1.png" src="../images/cdt83/CDT_RegMultiProcess1.png" width="894" height="221" /></a>
<a><img alt="CDT RegMultiProcess2.png" src="../images/cdt83/CDT_RegMultiProcess2.png" width="895" height="219" /></a>
</p><p><br />
</p><p><br />
</p>
<h3> <span class="mw-headline" id="Register_view_is_now_stack-frame-specific"> Register view is now stack-frame-specific </span></h3>
-<p>The Registers view will now update each time a different stack-frame is selected. The view will show the content of the registers as they were for the selected frame, when the method call was done which caused the creation of the next stack-frame. This work was a contribution from Alvaro Sanchez-Leon on September 27th, 2013. For details see <a rel="nofollow" class="external text" href="http://eclip.se/323552">Bug 323552</a>.
+<p>The Registers view will now update each time a different stack-frame is selected. The view will show the content of the registers as they were for the selected frame, when the method call was done which caused the creation of the next stack-frame. This work was a contribution from Alvaro Sanchez-Leon on September 27th, 2013. For details see <a rel="nofollow" class="external text" href="https://eclip.se/323552">Bug 323552</a>.
</p><p><a><img alt="CDT RegisterStack1.png" src="../images/cdt83/CDT_RegisterStack1.png" width="887" height="198" /></a>
<a><img alt="CDT RegisterStack2.png" src="../images/cdt83/CDT_RegisterStack2.png" width="884" height="197" /></a>
</p><p><br />
</p><p><br />
</p>
<h3> <span class="mw-headline" id="Basic_support_of_Multicore_Visualizer_in_all-stop_mode"> Basic support of Multicore Visualizer in all-stop mode </span></h3>
-<p>The <a rel="nofollow" class="external text" href="http://wiki.eclipse.org/CDT/User/FAQ#What_is_the_Multicore_Visualizer.3F">Multicore Visualizer</a> now displays properly in all-stop mode, with all its features available when the program is suspended, while still updating thread creation/termination when the program is running. This enhancement was completed on August 15th, 2013. For details see <a rel="nofollow" class="external text" href="http://eclip.se/409965">Bug 409965</a>
+<p>The <a rel="nofollow" class="external text" href="https://wiki.eclipse.org/CDT/User/FAQ#What_is_the_Multicore_Visualizer.3F">Multicore Visualizer</a> now displays properly in all-stop mode, with all its features available when the program is suspended, while still updating thread creation/termination when the program is running. This enhancement was completed on August 15th, 2013. For details see <a rel="nofollow" class="external text" href="https://eclip.se/409965">Bug 409965</a>
</p><p><br />
</p>
<h3> <span class="mw-headline" id="Variable_substitution_for_GDB_command_file_path"> Variable substitution for GDB command file path </span></h3>
-<p>It is now possible to use eclipse variables within the specified path of the GDB command file. This allows to have project-specific GDB command files. For example ${project_loc}/project.gdbinit. This feature was completed July 23rd, 2013. For details see <a rel="nofollow" class="external text" href="http://eclip.se/413373">Bug 413373</a>
+<p>It is now possible to use eclipse variables within the specified path of the GDB command file. This allows to have project-specific GDB command files. For example ${project_loc}/project.gdbinit. This feature was completed July 23rd, 2013. For details see <a rel="nofollow" class="external text" href="https://eclip.se/413373">Bug 413373</a>
</p><p><a><img alt="CDT GdbinitVarSubstitution.png" src="../images/cdt83/CDT_GdbinitVarSubstitution.png" width="671" height="575" /></a>
</p><p><br />
</p><p><br />
</p>
<h3> <span class="mw-headline" id="Project-less_debugging_is_now_supported_on_the_Windows_platform"> Project-less debugging is now supported on the Windows platform </span></h3>
-<p><a rel="nofollow" class="external text" href="http://wiki.eclipse.org/CDT/User/FAQ#Can_I_debug_a_process_that_I_didn.27t_develop_in_Eclipse.3F">Project-less debugging</a> now works as expected on Windows. This enhancement was completed on August 10th, 2013. For details see <a rel="nofollow" class="external text" href="http://eclip.se/344470">Bug 344470</a>
+<p><a rel="nofollow" class="external text" href="https://wiki.eclipse.org/CDT/User/FAQ#Can_I_debug_a_process_that_I_didn.27t_develop_in_Eclipse.3F">Project-less debugging</a> now works as expected on Windows. This enhancement was completed on August 10th, 2013. For details see <a rel="nofollow" class="external text" href="https://eclip.se/344470">Bug 344470</a>
</p><p><br />
</p>
<h3> <span class="mw-headline" id="Detection_of_target_disconnection"> Detection of target disconnection </span></h3>
-<p>When doing remote debugging, if the connection to the target is lost, the debug session will be cleanly terminated. Previously, some situations could lead to a debug session that lost its connection but remained active using the host machine instead; these cases have been fixed. This enhancement was completed on January 8th, 2014. For details see <a rel="nofollow" class="external text" href="http://eclip.se/422586">Bug 422586</a>
+<p>When doing remote debugging, if the connection to the target is lost, the debug session will be cleanly terminated. Previously, some situations could lead to a debug session that lost its connection but remained active using the host machine instead; these cases have been fixed. This enhancement was completed on January 8th, 2014. For details see <a rel="nofollow" class="external text" href="https://eclip.se/422586">Bug 422586</a>
</p>
<h2> <span class="mw-headline" id="Qt_Support_.28preview.29"> Qt Support (preview) </span></h2>
<p>Work continues on CDT's support for Qt. For CDT 8.3, this includes the following. Note that we still consider this a preview release until CDT 8.4 where we'll clean up usability issues around setting up CDT to work with Qt and hopefully some better qmake and QML support.
@@ -139,7 +139,7 @@
<h2> <span class="mw-headline" id="Bugs_Fixed_in_this_Release"> Bugs Fixed in this Release </span></h2>
<p>See bugzilla report <a rel="nofollow" class="external text" href="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced;bug_status=RESOLVED;bug_status=VERIFIED;bug_status=CLOSED;resolution=FIXED;target_milestone=8.2.1;target_milestone=8.2.2;target_milestone=8.2.3;target_milestone=8.3.0;product=CDT;classification=Tools">Bugs Fixed in CDT 8.3</a>
</p>
-<!-- ***** END MANUAL INSERT HTML FROM http://wiki.eclipse.org/CDT/User/NewIn83?action=render -->
+<!-- ***** END MANUAL INSERT HTML FROM https://wiki.eclipse.org/CDT/User/NewIn83?action=render -->
<h2>What's new in other CDT releases</h2>
@@ -150,7 +150,7 @@
<p><a href="cdt_c_whatsnew_80.htm">CDT 8.0 - New and Noteworthy</a></p>
<p><a href="cdt_c_whatsnew_70.htm">CDT 7.0 - New and Noteworthy</a></p>
<p><a href="cdt_c_whatsnew_60.htm">CDT 6.0 - New and Noteworthy</a></p>
- <p><a href="http://wiki.eclipse.org/CDT/User/NewIn50">CDT 5.0 - New and Noteworthy</a></p>
+ <p><a href="https://wiki.eclipse.org/CDT/User/NewIn50">CDT 5.0 - New and Noteworthy</a></p>
<p><a href="#top">Back to Top</a></p>
diff --git a/debug/org.eclipse.cdt.debug.application.doc/images/btn_columns.png b/debug/org.eclipse.cdt.debug.application.doc/images/btn_columns.png
index 3833e627033..3833e627033 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/images/btn_columns.png
+++ b/debug/org.eclipse.cdt.debug.application.doc/images/btn_columns.png
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.application.doc/images/btn_import_executables.png b/debug/org.eclipse.cdt.debug.application.doc/images/btn_import_executables.png
index ae639c2fa1e..ae639c2fa1e 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/images/btn_import_executables.png
+++ b/debug/org.eclipse.cdt.debug.application.doc/images/btn_import_executables.png
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.application.doc/images/btn_restart.png b/debug/org.eclipse.cdt.debug.application.doc/images/btn_restart.png
index a161f8522f0..a161f8522f0 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/images/btn_restart.png
+++ b/debug/org.eclipse.cdt.debug.application.doc/images/btn_restart.png
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.application.doc/images/c_exe_obj.png b/debug/org.eclipse.cdt.debug.application.doc/images/c_exe_obj.png
index 9f89f36da17..9f89f36da17 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/images/c_exe_obj.png
+++ b/debug/org.eclipse.cdt.debug.application.doc/images/c_exe_obj.png
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.application.doc/images/c_object_file.png b/debug/org.eclipse.cdt.debug.application.doc/images/c_object_file.png
index 29c5bb72797..29c5bb72797 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/images/c_object_file.png
+++ b/debug/org.eclipse.cdt.debug.application.doc/images/c_object_file.png
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.application.doc/images/cdt_dlg_define_build_var.png b/debug/org.eclipse.cdt.debug.application.doc/images/cdt_dlg_define_build_var.png
index 9190d6ea25a..9190d6ea25a 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/images/cdt_dlg_define_build_var.png
+++ b/debug/org.eclipse.cdt.debug.application.doc/images/cdt_dlg_define_build_var.png
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.application.doc/images/cdt_dlg_edit_build_var.png b/debug/org.eclipse.cdt.debug.application.doc/images/cdt_dlg_edit_build_var.png
index 049a6e3cc52..049a6e3cc52 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/images/cdt_dlg_edit_build_var.png
+++ b/debug/org.eclipse.cdt.debug.application.doc/images/cdt_dlg_edit_build_var.png
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.application.doc/images/cdt_inline_rename.png b/debug/org.eclipse.cdt.debug.application.doc/images/cdt_inline_rename.png
index 44047e88db8..44047e88db8 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/images/cdt_inline_rename.png
+++ b/debug/org.eclipse.cdt.debug.application.doc/images/cdt_inline_rename.png
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.application.doc/images/cdt_menu_toggle_comments.png b/debug/org.eclipse.cdt.debug.application.doc/images/cdt_menu_toggle_comments.png
index 524c13a74ec..524c13a74ec 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/images/cdt_menu_toggle_comments.png
+++ b/debug/org.eclipse.cdt.debug.application.doc/images/cdt_menu_toggle_comments.png
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.application.doc/images/cdt_pref_build_vars.png b/debug/org.eclipse.cdt.debug.application.doc/images/cdt_pref_build_vars.png
index 850d2eb2de2..850d2eb2de2 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/images/cdt_pref_build_vars.png
+++ b/debug/org.eclipse.cdt.debug.application.doc/images/cdt_pref_build_vars.png
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.application.doc/images/cdt_pref_new_task_tag_dlg.png b/debug/org.eclipse.cdt.debug.application.doc/images/cdt_pref_new_task_tag_dlg.png
index 2235581638e..2235581638e 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/images/cdt_pref_new_task_tag_dlg.png
+++ b/debug/org.eclipse.cdt.debug.application.doc/images/cdt_pref_new_task_tag_dlg.png
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.application.doc/images/cdt_pref_task_tags.png b/debug/org.eclipse.cdt.debug.application.doc/images/cdt_pref_task_tags.png
index e7299985c19..e7299985c19 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/images/cdt_pref_task_tags.png
+++ b/debug/org.eclipse.cdt.debug.application.doc/images/cdt_pref_task_tags.png
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.application.doc/images/cdt_rename_dialog.png b/debug/org.eclipse.cdt.debug.application.doc/images/cdt_rename_dialog.png
index 4be0a7d5ff5..4be0a7d5ff5 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/images/cdt_rename_dialog.png
+++ b/debug/org.eclipse.cdt.debug.application.doc/images/cdt_rename_dialog.png
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.application.doc/images/cdt_t_toggle_selection.png b/debug/org.eclipse.cdt.debug.application.doc/images/cdt_t_toggle_selection.png
index 5f68cbc0aee..5f68cbc0aee 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/images/cdt_t_toggle_selection.png
+++ b/debug/org.eclipse.cdt.debug.application.doc/images/cdt_t_toggle_selection.png
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.application.doc/images/cdt_t_toggle_selection2.png b/debug/org.eclipse.cdt.debug.application.doc/images/cdt_t_toggle_selection2.png
index 1831f1f276d..1831f1f276d 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/images/cdt_t_toggle_selection2.png
+++ b/debug/org.eclipse.cdt.debug.application.doc/images/cdt_t_toggle_selection2.png
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.application.doc/images/cdt_t_toggle_selection3.png b/debug/org.eclipse.cdt.debug.application.doc/images/cdt_t_toggle_selection3.png
index 00a6913dedd..00a6913dedd 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/images/cdt_t_toggle_selection3.png
+++ b/debug/org.eclipse.cdt.debug.application.doc/images/cdt_t_toggle_selection3.png
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.application.doc/images/command_link.png b/debug/org.eclipse.cdt.debug.application.doc/images/command_link.png
index 28ced874ea8..28ced874ea8 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/images/command_link.png
+++ b/debug/org.eclipse.cdt.debug.application.doc/images/command_link.png
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.application.doc/images/editor_general_preferences.png b/debug/org.eclipse.cdt.debug.application.doc/images/editor_general_preferences.png
index 1ebb1bea8b0..1ebb1bea8b0 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/images/editor_general_preferences.png
+++ b/debug/org.eclipse.cdt.debug.application.doc/images/editor_general_preferences.png
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.application.doc/images/editor_mark_preferences.png b/debug/org.eclipse.cdt.debug.application.doc/images/editor_mark_preferences.png
index 5ec7a3b77bd..5ec7a3b77bd 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/images/editor_mark_preferences.png
+++ b/debug/org.eclipse.cdt.debug.application.doc/images/editor_mark_preferences.png
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.application.doc/images/editor_save_actions_preferences.png b/debug/org.eclipse.cdt.debug.application.doc/images/editor_save_actions_preferences.png
index 90391346f16..90391346f16 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/images/editor_save_actions_preferences.png
+++ b/debug/org.eclipse.cdt.debug.application.doc/images/editor_save_actions_preferences.png
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.application.doc/images/hierarchy_co.gif b/debug/org.eclipse.cdt.debug.application.doc/images/hierarchy_co.gif
index 45b6b132268..45b6b132268 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/images/hierarchy_co.gif
+++ b/debug/org.eclipse.cdt.debug.application.doc/images/hierarchy_co.gif
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.application.doc/images/history_list.gif b/debug/org.eclipse.cdt.debug.application.doc/images/history_list.gif
index 364c0e70b1d..364c0e70b1d 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/images/history_list.gif
+++ b/debug/org.eclipse.cdt.debug.application.doc/images/history_list.gif
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.application.doc/images/icon_build_make_target.png b/debug/org.eclipse.cdt.debug.application.doc/images/icon_build_make_target.png
index acc6050601d..acc6050601d 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/images/icon_build_make_target.png
+++ b/debug/org.eclipse.cdt.debug.application.doc/images/icon_build_make_target.png
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.application.doc/images/icon_clear_console.png b/debug/org.eclipse.cdt.debug.application.doc/images/icon_clear_console.png
index 12fc6d11bae..12fc6d11bae 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/images/icon_clear_console.png
+++ b/debug/org.eclipse.cdt.debug.application.doc/images/icon_clear_console.png
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.application.doc/images/icon_edit_make_target.png b/debug/org.eclipse.cdt.debug.application.doc/images/icon_edit_make_target.png
index 6107ff02908..6107ff02908 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/images/icon_edit_make_target.png
+++ b/debug/org.eclipse.cdt.debug.application.doc/images/icon_edit_make_target.png
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.application.doc/images/icon_expand_all.png b/debug/org.eclipse.cdt.debug.application.doc/images/icon_expand_all.png
index ce2626a43bd..ce2626a43bd 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/images/icon_expand_all.png
+++ b/debug/org.eclipse.cdt.debug.application.doc/images/icon_expand_all.png
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.application.doc/images/icon_hide_inactive_includes.png b/debug/org.eclipse.cdt.debug.application.doc/images/icon_hide_inactive_includes.png
index 8725dfe1ab5..8725dfe1ab5 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/images/icon_hide_inactive_includes.png
+++ b/debug/org.eclipse.cdt.debug.application.doc/images/icon_hide_inactive_includes.png
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.application.doc/images/icon_hide_make_targets.png b/debug/org.eclipse.cdt.debug.application.doc/images/icon_hide_make_targets.png
index 41c10268273..41c10268273 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/images/icon_hide_make_targets.png
+++ b/debug/org.eclipse.cdt.debug.application.doc/images/icon_hide_make_targets.png
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.application.doc/images/icon_hide_sys_includes.png b/debug/org.eclipse.cdt.debug.application.doc/images/icon_hide_sys_includes.png
index 05902bf3986..05902bf3986 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/images/icon_hide_sys_includes.png
+++ b/debug/org.eclipse.cdt.debug.application.doc/images/icon_hide_sys_includes.png
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.application.doc/images/icon_new_make_target.png b/debug/org.eclipse.cdt.debug.application.doc/images/icon_new_make_target.png
index e813698f13a..e813698f13a 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/images/icon_new_make_target.png
+++ b/debug/org.eclipse.cdt.debug.application.doc/images/icon_new_make_target.png
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.application.doc/images/icon_next_error.png b/debug/org.eclipse.cdt.debug.application.doc/images/icon_next_error.png
index bc8f3d7273b..bc8f3d7273b 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/images/icon_next_error.png
+++ b/debug/org.eclipse.cdt.debug.application.doc/images/icon_next_error.png
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.application.doc/images/icon_open_console.png b/debug/org.eclipse.cdt.debug.application.doc/images/icon_open_console.png
index 5e6881240ef..5e6881240ef 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/images/icon_open_console.png
+++ b/debug/org.eclipse.cdt.debug.application.doc/images/icon_open_console.png
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.application.doc/images/icon_pin.png b/debug/org.eclipse.cdt.debug.application.doc/images/icon_pin.png
index 1125cde1181..1125cde1181 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/images/icon_pin.png
+++ b/debug/org.eclipse.cdt.debug.application.doc/images/icon_pin.png
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.application.doc/images/icon_prev_error.png b/debug/org.eclipse.cdt.debug.application.doc/images/icon_prev_error.png
index 5008ac79867..5008ac79867 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/images/icon_prev_error.png
+++ b/debug/org.eclipse.cdt.debug.application.doc/images/icon_prev_error.png
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.application.doc/images/icon_repeat_search.png b/debug/org.eclipse.cdt.debug.application.doc/images/icon_repeat_search.png
index dde5909d205..dde5909d205 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/images/icon_repeat_search.png
+++ b/debug/org.eclipse.cdt.debug.application.doc/images/icon_repeat_search.png
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.application.doc/images/icon_save_output_file.png b/debug/org.eclipse.cdt.debug.application.doc/images/icon_save_output_file.png
index e0142150fc4..e0142150fc4 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/images/icon_save_output_file.png
+++ b/debug/org.eclipse.cdt.debug.application.doc/images/icon_save_output_file.png
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.application.doc/images/icon_show_error.png b/debug/org.eclipse.cdt.debug.application.doc/images/icon_show_error.png
index a2e6b313fe0..a2e6b313fe0 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/images/icon_show_error.png
+++ b/debug/org.eclipse.cdt.debug.application.doc/images/icon_show_error.png
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.application.doc/images/namespace_declared_obj.png b/debug/org.eclipse.cdt.debug.application.doc/images/namespace_declared_obj.png
index 0dd626ecc25..0dd626ecc25 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/images/namespace_declared_obj.png
+++ b/debug/org.eclipse.cdt.debug.application.doc/images/namespace_declared_obj.png
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.application.doc/images/new_proj_convert_candidate.png b/debug/org.eclipse.cdt.debug.application.doc/images/new_proj_convert_candidate.png
index 2b9dd856496..2b9dd856496 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/images/new_proj_convert_candidate.png
+++ b/debug/org.eclipse.cdt.debug.application.doc/images/new_proj_convert_candidate.png
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.application.doc/images/pref_panel_build.png b/debug/org.eclipse.cdt.debug.application.doc/images/pref_panel_build.png
index e035b7aca87..e035b7aca87 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/images/pref_panel_build.png
+++ b/debug/org.eclipse.cdt.debug.application.doc/images/pref_panel_build.png
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.application.doc/images/pref_panel_code_templates.png b/debug/org.eclipse.cdt.debug.application.doc/images/pref_panel_code_templates.png
index 6715294bc23..6715294bc23 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/images/pref_panel_code_templates.png
+++ b/debug/org.eclipse.cdt.debug.application.doc/images/pref_panel_code_templates.png
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.application.doc/images/pref_panel_edit_template_dlg.png b/debug/org.eclipse.cdt.debug.application.doc/images/pref_panel_edit_template_dlg.png
index e04f709e1c4..e04f709e1c4 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/images/pref_panel_edit_template_dlg.png
+++ b/debug/org.eclipse.cdt.debug.application.doc/images/pref_panel_edit_template_dlg.png
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.application.doc/images/pref_traditional_memory_prefs.png b/debug/org.eclipse.cdt.debug.application.doc/images/pref_traditional_memory_prefs.png
index 17a1783ab6d..17a1783ab6d 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/images/pref_traditional_memory_prefs.png
+++ b/debug/org.eclipse.cdt.debug.application.doc/images/pref_traditional_memory_prefs.png
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.application.doc/images/progress_stop.gif b/debug/org.eclipse.cdt.debug.application.doc/images/progress_stop.gif
index dc47edf0695..dc47edf0695 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/images/progress_stop.gif
+++ b/debug/org.eclipse.cdt.debug.application.doc/images/progress_stop.gif
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.application.doc/images/refresh_nav.gif b/debug/org.eclipse.cdt.debug.application.doc/images/refresh_nav.gif
index 3ca04d06ff9..3ca04d06ff9 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/images/refresh_nav.gif
+++ b/debug/org.eclipse.cdt.debug.application.doc/images/refresh_nav.gif
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.application.doc/images/sub_co.gif b/debug/org.eclipse.cdt.debug.application.doc/images/sub_co.gif
index 54871df5aa6..54871df5aa6 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/images/sub_co.gif
+++ b/debug/org.eclipse.cdt.debug.application.doc/images/sub_co.gif
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.application.doc/images/super_co.gif b/debug/org.eclipse.cdt.debug.application.doc/images/super_co.gif
index 59ac11633f2..59ac11633f2 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/images/super_co.gif
+++ b/debug/org.eclipse.cdt.debug.application.doc/images/super_co.gif
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.application.doc/images/view_executables.png b/debug/org.eclipse.cdt.debug.application.doc/images/view_executables.png
index ab178e5c633..ab178e5c633 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/images/view_executables.png
+++ b/debug/org.eclipse.cdt.debug.application.doc/images/view_executables.png
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.application.doc/images/view_include_browser.png b/debug/org.eclipse.cdt.debug.application.doc/images/view_include_browser.png
index 8c7179e66d7..8c7179e66d7 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/images/view_include_browser.png
+++ b/debug/org.eclipse.cdt.debug.application.doc/images/view_include_browser.png
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.application.doc/images/view_table_rendering.png b/debug/org.eclipse.cdt.debug.application.doc/images/view_table_rendering.png
index d085966e167..d085966e167 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/images/view_table_rendering.png
+++ b/debug/org.eclipse.cdt.debug.application.doc/images/view_table_rendering.png
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.application.doc/pom.xml b/debug/org.eclipse.cdt.debug.application.doc/pom.xml
index f59a96047ba..c1d8f9d0e66 100644
--- a/debug/org.eclipse.cdt.debug.application.doc/pom.xml
+++ b/debug/org.eclipse.cdt.debug.application.doc/pom.xml
@@ -1,4 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2014, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
@@ -6,11 +16,11 @@
<parent>
<groupId>org.eclipse.cdt</groupId>
<artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
+ <version>10.7.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
- <version>1.1.400-SNAPSHOT</version>
+ <version>1.1.1200-SNAPSHOT</version>
<artifactId>org.eclipse.cdt.debug.application.doc</artifactId>
<packaging>eclipse-plugin</packaging>
@@ -47,7 +57,7 @@
<plugin>
<groupId>org.eclipse.tycho.extras</groupId>
<artifactId>tycho-eclipserun-plugin</artifactId>
- <version>${tycho-extras-version}</version>
+ <version>${tycho-version}</version>
<configuration>
<appArgLine>-application org.eclipse.ant.core.antRunner -buildfile customBuildCallbacks.xml build.index</appArgLine>
<dependencies>
@@ -88,7 +98,6 @@
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.8</version>
<executions>
<execution>
<phase>compile</phase>
diff --git a/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_o_menu.htm b/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_o_menu.htm
index cf8c06c8508..cf8c06c8508 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_o_menu.htm
+++ b/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_o_menu.htm
diff --git a/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_o_mproj_pref.htm b/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_o_mproj_pref.htm
index 60eb5fd6a68..60eb5fd6a68 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_o_mproj_pref.htm
+++ b/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_o_mproj_pref.htm
diff --git a/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_o_mproj_pref_macro.htm b/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_o_mproj_pref_macro.htm
index c5692a16222..c5692a16222 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_o_mproj_pref_macro.htm
+++ b/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_o_mproj_pref_macro.htm
diff --git a/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_c_editor_gen.htm b/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_c_editor_gen.htm
index a004422136c..a004422136c 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_c_editor_gen.htm
+++ b/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_c_editor_gen.htm
diff --git a/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_m_edit.htm b/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_m_edit.htm
index 0079dff78e6..0079dff78e6 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_m_edit.htm
+++ b/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_m_edit.htm
diff --git a/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_m_file.htm b/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_m_file.htm
index 1b0e77fbbbe..1b0e77fbbbe 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_m_file.htm
+++ b/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_m_file.htm
diff --git a/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_m_navigate.htm b/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_m_navigate.htm
index e37aa2a4add..e37aa2a4add 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_m_navigate.htm
+++ b/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_m_navigate.htm
diff --git a/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_m_project.htm b/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_m_project.htm
index 7244e8887ff..7244e8887ff 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_m_project.htm
+++ b/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_m_project.htm
diff --git a/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_m_refactor.htm b/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_m_refactor.htm
index 579050591fc..579050591fc 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_m_refactor.htm
+++ b/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_m_refactor.htm
diff --git a/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_m_run.htm b/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_m_run.htm
index c3afbae0b4f..c3afbae0b4f 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_m_run.htm
+++ b/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_m_run.htm
diff --git a/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_m_search.htm b/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_m_search.htm
index 157b583080c..157b583080c 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_m_search.htm
+++ b/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_m_search.htm
diff --git a/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_m_source.htm b/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_m_source.htm
index b147821ee14..b147821ee14 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_m_source.htm
+++ b/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_m_source.htm
diff --git a/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_m_window.htm b/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_m_window.htm
index b9d05507502..b9d05507502 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_m_window.htm
+++ b/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_m_window.htm
diff --git a/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_mfile_build.htm b/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_mfile_build.htm
index 39d28a3c246..39d28a3c246 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_mfile_build.htm
+++ b/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_mfile_build.htm
diff --git a/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_mfile_info.htm b/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_mfile_info.htm
index 59b3e11ec3a..59b3e11ec3a 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_mfile_info.htm
+++ b/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_mfile_info.htm
diff --git a/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_mfile_rcbs.htm b/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_mfile_rcbs.htm
index ab7b21c3c7f..ab7b21c3c7f 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_mfile_rcbs.htm
+++ b/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_mfile_rcbs.htm
diff --git a/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_mfile_tool_settings.htm b/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_mfile_tool_settings.htm
index 0fde36fd589..0fde36fd589 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_mfile_tool_settings.htm
+++ b/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_mfile_tool_settings.htm
diff --git a/debug/org.eclipse.cdt.debug.application.doc/tasks/cdt_t_comment_out.htm b/debug/org.eclipse.cdt.debug.application.doc/tasks/cdt_t_comment_out.htm
index d1829f923a7..c62ddfd792c 100644
--- a/debug/org.eclipse.cdt.debug.application.doc/tasks/cdt_t_comment_out.htm
+++ b/debug/org.eclipse.cdt.debug.application.doc/tasks/cdt_t_comment_out.htm
@@ -25,7 +25,7 @@ described above.</p>
<p>To toggle <samp>//</samp> comments on code:</p>
<ol>
- <li>In the C/C++ editor, select the line(s) of code that you want to comment out. If no lines are selected comments will be added (or removed) at the current cursor position.</li>
+ <li>In the C/C++ editor, select the line(s) of code that you want to comment out. If no lines are selected comments will be added (or removed) at the start of the lines containing the cursor.</li>
<li>Right-click and select <strong>Source &gt; Toggle Comment</strong>. (<samp>CTRL+/</samp>)</li>
</ul>
</ol>
diff --git a/debug/org.eclipse.cdt.debug.application.doc/tasks/cdt_t_rename.htm b/debug/org.eclipse.cdt.debug.application.doc/tasks/cdt_t_rename.htm
index 2f96212125a..2f96212125a 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/tasks/cdt_t_rename.htm
+++ b/debug/org.eclipse.cdt.debug.application.doc/tasks/cdt_t_rename.htm
diff --git a/debug/org.eclipse.cdt.debug.application.doc/tasks/cdt_t_toggle.htm b/debug/org.eclipse.cdt.debug.application.doc/tasks/cdt_t_toggle.htm
index a62fd373ff8..a62fd373ff8 100755..100644
--- a/debug/org.eclipse.cdt.debug.application.doc/tasks/cdt_t_toggle.htm
+++ b/debug/org.eclipse.cdt.debug.application.doc/tasks/cdt_t_toggle.htm
diff --git a/debug/org.eclipse.cdt.debug.application.product/.settings/org.eclipse.core.resources.prefs b/debug/org.eclipse.cdt.debug.application.product/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/debug/org.eclipse.cdt.debug.application.product/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/debug/org.eclipse.cdt.debug.application.product/.settings/org.eclipse.jdt.core.prefs b/debug/org.eclipse.cdt.debug.application.product/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 2b6ecff8a01..00000000000
--- a/debug/org.eclipse.cdt.debug.application.product/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,464 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
-org.eclipse.jdt.core.codeComplete.argumentPrefixes=
-org.eclipse.jdt.core.codeComplete.argumentSuffixes=
-org.eclipse.jdt.core.codeComplete.fieldPrefixes=
-org.eclipse.jdt.core.codeComplete.fieldSuffixes=
-org.eclipse.jdt.core.codeComplete.localPrefixes=
-org.eclipse.jdt.core.codeComplete.localSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
-org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
-org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
-org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
-org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
-org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
-org.eclipse.jdt.core.compiler.problem.APILeak=warning
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
-org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
-org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
-org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
-org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
-org.eclipse.jdt.core.compiler.problem.nullReference=error
-org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
-org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
-org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
-org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
-org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
-org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
-org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
-org.eclipse.jdt.core.formatter.align_with_spaces=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
-org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
-org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
-org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
-org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=0
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
-org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
-org.eclipse.jdt.core.formatter.comment.format_block_comments=false
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
-org.eclipse.jdt.core.formatter.comment.format_line_comments=false
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
-org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
-org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
-org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.join_lines_in_comments=true
-org.eclipse.jdt.core.formatter.join_wrapped_lines=true
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=120
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_on_off_tags=true
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
-org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
-org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/debug/org.eclipse.cdt.debug.application.product/.settings/org.eclipse.jdt.ui.prefs b/debug/org.eclipse.cdt.debug.application.product/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index e44576346c4..00000000000
--- a/debug/org.eclipse.cdt.debug.application.product/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,133 +0,0 @@
-cleanup.add_default_serial_version_id=true
-cleanup.add_generated_serial_version_id=false
-cleanup.add_missing_annotations=true
-cleanup.add_missing_deprecated_annotations=true
-cleanup.add_missing_methods=false
-cleanup.add_missing_nls_tags=false
-cleanup.add_missing_override_annotations=true
-cleanup.add_missing_override_annotations_interface_methods=true
-cleanup.add_serial_version_id=false
-cleanup.always_use_blocks=true
-cleanup.always_use_parentheses_in_expressions=false
-cleanup.always_use_this_for_non_static_field_access=false
-cleanup.always_use_this_for_non_static_method_access=false
-cleanup.convert_functional_interfaces=false
-cleanup.convert_to_enhanced_for_loop=false
-cleanup.correct_indentation=false
-cleanup.format_source_code=true
-cleanup.format_source_code_changes_only=false
-cleanup.insert_inferred_type_arguments=false
-cleanup.make_local_variable_final=true
-cleanup.make_parameters_final=false
-cleanup.make_private_fields_final=true
-cleanup.make_type_abstract_if_missing_method=false
-cleanup.make_variable_declarations_final=false
-cleanup.never_use_blocks=false
-cleanup.never_use_parentheses_in_expressions=true
-cleanup.organize_imports=true
-cleanup.qualify_static_field_accesses_with_declaring_class=false
-cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-cleanup.qualify_static_member_accesses_with_declaring_class=false
-cleanup.qualify_static_method_accesses_with_declaring_class=false
-cleanup.remove_private_constructors=true
-cleanup.remove_redundant_modifiers=false
-cleanup.remove_redundant_semicolons=true
-cleanup.remove_redundant_type_arguments=true
-cleanup.remove_trailing_whitespaces=true
-cleanup.remove_trailing_whitespaces_all=true
-cleanup.remove_trailing_whitespaces_ignore_empty=false
-cleanup.remove_unnecessary_casts=true
-cleanup.remove_unnecessary_nls_tags=false
-cleanup.remove_unused_imports=true
-cleanup.remove_unused_local_variables=false
-cleanup.remove_unused_private_fields=true
-cleanup.remove_unused_private_members=false
-cleanup.remove_unused_private_methods=true
-cleanup.remove_unused_private_types=true
-cleanup.sort_members=false
-cleanup.sort_members_all=false
-cleanup.use_anonymous_class_creation=false
-cleanup.use_blocks=false
-cleanup.use_blocks_only_for_return_and_throw=false
-cleanup.use_lambda=true
-cleanup.use_parentheses_in_expressions=false
-cleanup.use_this_for_non_static_field_access=false
-cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-cleanup.use_this_for_non_static_method_access=false
-cleanup.use_this_for_non_static_method_access_only_if_necessary=true
-cleanup_profile=_CDT
-cleanup_settings_version=2
-eclipse.preferences.version=1
-editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=_CDT
-formatter_settings_version=14
-internal.default.compliance=user
-org.eclipse.jdt.ui.exception.name=e
-org.eclipse.jdt.ui.gettersetter.use.is=true
-org.eclipse.jdt.ui.ignorelowercasenames=true
-org.eclipse.jdt.ui.importorder=java;javax;org;com;
-org.eclipse.jdt.ui.keywordthis=false
-org.eclipse.jdt.ui.ondemandthreshold=1000
-org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.staticondemandthreshold=1000
-org.eclipse.jdt.ui.text.custom_code_templates=
-sp_cleanup.add_default_serial_version_id=true
-sp_cleanup.add_generated_serial_version_id=false
-sp_cleanup.add_missing_annotations=true
-sp_cleanup.add_missing_deprecated_annotations=true
-sp_cleanup.add_missing_methods=false
-sp_cleanup.add_missing_nls_tags=false
-sp_cleanup.add_missing_override_annotations=true
-sp_cleanup.add_missing_override_annotations_interface_methods=true
-sp_cleanup.add_serial_version_id=false
-sp_cleanup.always_use_blocks=true
-sp_cleanup.always_use_parentheses_in_expressions=false
-sp_cleanup.always_use_this_for_non_static_field_access=false
-sp_cleanup.always_use_this_for_non_static_method_access=false
-sp_cleanup.convert_functional_interfaces=false
-sp_cleanup.convert_to_enhanced_for_loop=false
-sp_cleanup.correct_indentation=false
-sp_cleanup.format_source_code=true
-sp_cleanup.format_source_code_changes_only=false
-sp_cleanup.insert_inferred_type_arguments=false
-sp_cleanup.make_local_variable_final=true
-sp_cleanup.make_parameters_final=false
-sp_cleanup.make_private_fields_final=true
-sp_cleanup.make_type_abstract_if_missing_method=false
-sp_cleanup.make_variable_declarations_final=false
-sp_cleanup.never_use_blocks=false
-sp_cleanup.never_use_parentheses_in_expressions=true
-sp_cleanup.on_save_use_additional_actions=true
-sp_cleanup.organize_imports=true
-sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
-sp_cleanup.remove_private_constructors=true
-sp_cleanup.remove_redundant_modifiers=false
-sp_cleanup.remove_redundant_semicolons=true
-sp_cleanup.remove_redundant_type_arguments=true
-sp_cleanup.remove_trailing_whitespaces=true
-sp_cleanup.remove_trailing_whitespaces_all=true
-sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
-sp_cleanup.remove_unnecessary_casts=true
-sp_cleanup.remove_unnecessary_nls_tags=false
-sp_cleanup.remove_unused_imports=true
-sp_cleanup.remove_unused_local_variables=false
-sp_cleanup.remove_unused_private_fields=true
-sp_cleanup.remove_unused_private_members=false
-sp_cleanup.remove_unused_private_methods=true
-sp_cleanup.remove_unused_private_types=true
-sp_cleanup.sort_members=false
-sp_cleanup.sort_members_all=false
-sp_cleanup.use_anonymous_class_creation=false
-sp_cleanup.use_blocks=false
-sp_cleanup.use_blocks_only_for_return_and_throw=false
-sp_cleanup.use_lambda=true
-sp_cleanup.use_parentheses_in_expressions=false
-sp_cleanup.use_this_for_non_static_field_access=false
-sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-sp_cleanup.use_this_for_non_static_method_access=false
-sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/debug/org.eclipse.cdt.debug.application.product/README b/debug/org.eclipse.cdt.debug.application.product/README
index 41fb2b3e0aa..a00f2412d20 100644
--- a/debug/org.eclipse.cdt.debug.application.product/README
+++ b/debug/org.eclipse.cdt.debug.application.product/README
@@ -7,5 +7,5 @@ by simply running: ./cdtdebug -e ~/myproject/bin/a.out arg1 arg2
You can find more information about command-line options in
org.eclipse.cdt.debug.application/scripts/README.
-Note that this product is currently only built for the more popular architecture x86 and x86_64 on
-Linux, Windows and Mac.
+Note that this product is currently only built for the more popular architecture x86_64 on
+Linux, Windows and Mac and aarch64 on Linux.
diff --git a/debug/org.eclipse.cdt.debug.application.product/about.html b/debug/org.eclipse.cdt.debug.application.product/about.html
index 164f781a8fd..b3134865230 100644
--- a/debug/org.eclipse.cdt.debug.application.product/about.html
+++ b/debug/org.eclipse.cdt.debug.application.product/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/debug/org.eclipse.cdt.debug.application.product/debug.product b/debug/org.eclipse.cdt.debug.application.product/debug.product
index cbd186ba53b..4fc7841d8a6 100644
--- a/debug/org.eclipse.cdt.debug.application.product/debug.product
+++ b/debug/org.eclipse.cdt.debug.application.product/debug.product
@@ -1,7 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<?pde version="3.5"?>
-<product name="Stand-alone C/C++ GDB Debugger" uid="org.eclipse.cdt.debug.application.product" id="org.eclipse.cdt.debug.application.product" application="org.eclipse.cdt.debug.application.app" version="9.10.0.qualifier" useFeatures="false" includeLaunchers="true">
+<!--
+ Copyright (c) 2015, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
+<product name="Stand-alone C/C++ GDB Debugger" uid="org.eclipse.cdt.debug.application.product" id="org.eclipse.cdt.debug.application.product" application="org.eclipse.cdt.debug.application.app" version="10.7.0.qualifier" useFeatures="false" includeLaunchers="true">
<aboutInfo>
<image path="/org.eclipse.cdt.debug.application/icons/about.png"/>
@@ -16,11 +26,11 @@
<launcherArgs>
<programArgs>-data @noDefault
</programArgs>
- <vmArgsLin>-Xms100m -Xmx512m -Dosgi.requiredJavaVersion=1.8
+ <vmArgsLin>-Xms100m -Xmx512m -Dosgi.requiredJavaVersion=11
</vmArgsLin>
- <vmArgsMac>-Xms100m -Xmx512m -XstartOnFirstThread -Dosgi.requiredJavaVersion=1.8 -Dorg.eclipse.swt.internal.carbon.smallFonts
+ <vmArgsMac>-Xms100m -Xmx512m -XstartOnFirstThread -Dosgi.requiredJavaVersion=11 -Dorg.eclipse.swt.internal.carbon.smallFonts
</vmArgsMac>
- <vmArgsWin>-Xms100m -Xmx512m -Dosgi.requiredJavaVersion=1.8
+ <vmArgsWin>-Xms100m -Xmx512m -Dosgi.requiredJavaVersion=11
</vmArgsWin>
</launcherArgs>
@@ -36,10 +46,10 @@
</launcher>
<vm>
- <linux include="false">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8</linux>
- <macos include="false">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8</macos>
- <solaris include="false">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8</solaris>
- <windows include="false">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8</windows>
+ <linux include="false">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11</linux>
+ <macos include="false">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11</macos>
+ <solaris include="false">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11</solaris>
+ <windows include="false">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11</windows>
</vm>
<license>
@@ -174,15 +184,18 @@ Java and all Java-based trademarks are trademarks of Oracle Corporation in the U
<plugins>
<plugin id="com.google.gson"/>
<plugin id="com.ibm.icu"/>
+ <plugin id="com.sun.jna"/>
+ <plugin id="com.sun.jna.platform"/>
<plugin id="com.sun.xml.bind"/>
- <plugin id="javax.activation"/>
+ <plugin id="jakarta.servlet-api"/>
+ <plugin id="jakarta.xml.bind"/>
+ <plugin id="javax.activation" version="1.2.2.v20201119-1642"/>
+ <plugin id="javax.activation" version="2.0.0.v20201118-1818"/>
<plugin id="javax.annotation"/>
<plugin id="javax.el"/>
<plugin id="javax.inject"/>
- <plugin id="javax.servlet"/>
<plugin id="javax.servlet.jsp"/>
<plugin id="javax.xml"/>
- <plugin id="javax.xml.bind"/>
<plugin id="javax.xml.stream"/>
<plugin id="org.apache.batik.constants"/>
<plugin id="org.apache.batik.css"/>
@@ -193,6 +206,9 @@ Java and all Java-based trademarks are trademarks of Oracle Corporation in the U
<plugin id="org.apache.commons.jxpath"/>
<plugin id="org.apache.commons.logging"/>
<plugin id="org.apache.felix.scr"/>
+ <plugin id="org.apache.httpcomponents.client5.httpclient5"/>
+ <plugin id="org.apache.httpcomponents.core5.httpcore5"/>
+ <plugin id="org.apache.httpcomponents.core5.httpcore5-h2"/>
<plugin id="org.apache.httpcomponents.httpclient"/>
<plugin id="org.apache.httpcomponents.httpcore"/>
<plugin id="org.apache.jasper.glassfish"/>
@@ -200,8 +216,11 @@ Java and all Java-based trademarks are trademarks of Oracle Corporation in the U
<plugin id="org.apache.lucene.analyzers-smartcn"/>
<plugin id="org.apache.lucene.core"/>
<plugin id="org.apache.xmlgraphics"/>
+ <plugin id="org.bouncycastle.bcpg"/>
+ <plugin id="org.bouncycastle.bcprov"/>
<plugin id="org.eclipse.cdt.core"/>
<plugin id="org.eclipse.cdt.core.linux" fragment="true"/>
+ <plugin id="org.eclipse.cdt.core.linux.aarch64" fragment="true"/>
<plugin id="org.eclipse.cdt.core.linux.x86_64" fragment="true"/>
<plugin id="org.eclipse.cdt.core.macosx" fragment="true"/>
<plugin id="org.eclipse.cdt.core.native"/>
@@ -210,6 +229,7 @@ Java and all Java-based trademarks are trademarks of Oracle Corporation in the U
<plugin id="org.eclipse.cdt.debug.application"/>
<plugin id="org.eclipse.cdt.debug.application.doc"/>
<plugin id="org.eclipse.cdt.debug.core"/>
+ <plugin id="org.eclipse.cdt.debug.core.memory"/>
<plugin id="org.eclipse.cdt.debug.ui"/>
<plugin id="org.eclipse.cdt.debug.ui.memory.floatingpoint"/>
<plugin id="org.eclipse.cdt.debug.ui.memory.memorybrowser"/>
@@ -238,12 +258,14 @@ Java and all Java-based trademarks are trademarks of Oracle Corporation in the U
<plugin id="org.eclipse.core.expressions"/>
<plugin id="org.eclipse.core.filebuffers"/>
<plugin id="org.eclipse.core.filesystem"/>
+ <plugin id="org.eclipse.core.filesystem.linux.aarch64" fragment="true"/>
<plugin id="org.eclipse.core.filesystem.linux.x86_64" fragment="true"/>
<plugin id="org.eclipse.core.filesystem.macosx" fragment="true"/>
<plugin id="org.eclipse.core.filesystem.win32.x86_64" fragment="true"/>
<plugin id="org.eclipse.core.jobs"/>
<plugin id="org.eclipse.core.net"/>
- <plugin id="org.eclipse.core.net.linux.x86_64" fragment="true"/>
+ <plugin id="org.eclipse.core.net.linux" fragment="true"/>
+ <plugin id="org.eclipse.core.net.win32" fragment="true"/>
<plugin id="org.eclipse.core.net.win32.x86_64" fragment="true"/>
<plugin id="org.eclipse.core.resources"/>
<plugin id="org.eclipse.core.runtime"/>
@@ -264,8 +286,10 @@ Java and all Java-based trademarks are trademarks of Oracle Corporation in the U
<plugin id="org.eclipse.e4.ui.css.swt.theme"/>
<plugin id="org.eclipse.e4.ui.di"/>
<plugin id="org.eclipse.e4.ui.dialogs"/>
+ <plugin id="org.eclipse.e4.ui.ide"/>
<plugin id="org.eclipse.e4.ui.model.workbench"/>
<plugin id="org.eclipse.e4.ui.services"/>
+ <plugin id="org.eclipse.e4.ui.swt.gtk" fragment="true"/>
<plugin id="org.eclipse.e4.ui.widgets"/>
<plugin id="org.eclipse.e4.ui.workbench"/>
<plugin id="org.eclipse.e4.ui.workbench.addons.swt"/>
@@ -277,7 +301,7 @@ Java and all Java-based trademarks are trademarks of Oracle Corporation in the U
<plugin id="org.eclipse.ecf.filetransfer"/>
<plugin id="org.eclipse.ecf.identity"/>
<plugin id="org.eclipse.ecf.provider.filetransfer"/>
- <plugin id="org.eclipse.ecf.provider.filetransfer.httpclient45"/>
+ <plugin id="org.eclipse.ecf.provider.filetransfer.httpclient5"/>
<plugin id="org.eclipse.ecf.provider.filetransfer.ssl" fragment="true"/>
<plugin id="org.eclipse.ecf.ssl" fragment="true"/>
<plugin id="org.eclipse.emf.common"/>
@@ -298,17 +322,22 @@ Java and all Java-based trademarks are trademarks of Oracle Corporation in the U
<plugin id="org.eclipse.equinox.jsp.jasper.registry"/>
<plugin id="org.eclipse.equinox.launcher"/>
<plugin id="org.eclipse.equinox.launcher.cocoa.macosx.x86_64" fragment="true"/>
+ <plugin id="org.eclipse.equinox.launcher.gtk.linux.aarch64" fragment="true"/>
<plugin id="org.eclipse.equinox.launcher.gtk.linux.x86_64" fragment="true"/>
<plugin id="org.eclipse.equinox.launcher.win32.win32.x86_64" fragment="true"/>
<plugin id="org.eclipse.equinox.p2.artifact.repository"/>
<plugin id="org.eclipse.equinox.p2.core"/>
<plugin id="org.eclipse.equinox.p2.director"/>
+ <plugin id="org.eclipse.equinox.p2.directorywatcher"/>
<plugin id="org.eclipse.equinox.p2.engine"/>
+ <plugin id="org.eclipse.equinox.p2.extensionlocation"/>
<plugin id="org.eclipse.equinox.p2.garbagecollector"/>
<plugin id="org.eclipse.equinox.p2.jarprocessor"/>
<plugin id="org.eclipse.equinox.p2.metadata"/>
<plugin id="org.eclipse.equinox.p2.metadata.repository"/>
<plugin id="org.eclipse.equinox.p2.operations"/>
+ <plugin id="org.eclipse.equinox.p2.publisher"/>
+ <plugin id="org.eclipse.equinox.p2.publisher.eclipse"/>
<plugin id="org.eclipse.equinox.p2.repository"/>
<plugin id="org.eclipse.equinox.p2.touchpoint.eclipse"/>
<plugin id="org.eclipse.equinox.p2.touchpoint.natives"/>
@@ -318,11 +347,11 @@ Java and all Java-based trademarks are trademarks of Oracle Corporation in the U
<plugin id="org.eclipse.equinox.preferences"/>
<plugin id="org.eclipse.equinox.registry"/>
<plugin id="org.eclipse.equinox.security"/>
+ <plugin id="org.eclipse.equinox.security.linux" fragment="true"/>
<plugin id="org.eclipse.equinox.security.macosx" fragment="true"/>
<plugin id="org.eclipse.equinox.security.ui"/>
<plugin id="org.eclipse.equinox.simpleconfigurator"/>
<plugin id="org.eclipse.equinox.simpleconfigurator.manipulator"/>
- <plugin id="org.eclipse.equinox.util"/>
<plugin id="org.eclipse.help"/>
<plugin id="org.eclipse.help.base"/>
<plugin id="org.eclipse.help.ui"/>
@@ -333,8 +362,10 @@ Java and all Java-based trademarks are trademarks of Oracle Corporation in the U
<plugin id="org.eclipse.jetty.server"/>
<plugin id="org.eclipse.jetty.servlet"/>
<plugin id="org.eclipse.jetty.util"/>
+ <plugin id="org.eclipse.jetty.util.ajax"/>
<plugin id="org.eclipse.jface"/>
<plugin id="org.eclipse.jface.databinding"/>
+ <plugin id="org.eclipse.jface.notifications"/>
<plugin id="org.eclipse.jface.text"/>
<plugin id="org.eclipse.launchbar.core"/>
<plugin id="org.eclipse.launchbar.ui"/>
@@ -344,9 +375,11 @@ Java and all Java-based trademarks are trademarks of Oracle Corporation in the U
<plugin id="org.eclipse.osgi.compatibility.state" fragment="true"/>
<plugin id="org.eclipse.osgi.services"/>
<plugin id="org.eclipse.osgi.util"/>
+ <plugin id="org.eclipse.pde.ds.lib"/>
<plugin id="org.eclipse.search"/>
<plugin id="org.eclipse.swt"/>
<plugin id="org.eclipse.swt.cocoa.macosx.x86_64" fragment="true"/>
+ <plugin id="org.eclipse.swt.gtk.linux.aarch64" fragment="true"/>
<plugin id="org.eclipse.swt.gtk.linux.x86_64" fragment="true"/>
<plugin id="org.eclipse.swt.win32.win32.x86_64" fragment="true"/>
<plugin id="org.eclipse.team.core"/>
@@ -371,10 +404,17 @@ Java and all Java-based trademarks are trademarks of Oracle Corporation in the U
<plugin id="org.eclipse.ui.views.properties.tabbed"/>
<plugin id="org.eclipse.ui.workbench"/>
<plugin id="org.eclipse.ui.workbench.texteditor"/>
- <plugin id="org.eclipse.update.configurator"/>
+ <plugin id="org.eclipse.urischeme"/>
<plugin id="org.freemarker"/>
+ <plugin id="org.osgi.service.prefs"/>
+ <plugin id="org.osgi.util.function"/>
+ <plugin id="org.osgi.util.measurement"/>
+ <plugin id="org.osgi.util.position"/>
+ <plugin id="org.osgi.util.promise"/>
+ <plugin id="org.osgi.util.xml"/>
<plugin id="org.sat4j.core"/>
<plugin id="org.sat4j.pb"/>
+ <plugin id="org.slf4j.api"/>
<plugin id="org.tukaani.xz"/>
<plugin id="org.w3c.css.sac"/>
<plugin id="org.w3c.dom.events"/>
@@ -389,11 +429,14 @@ Java and all Java-based trademarks are trademarks of Oracle Corporation in the U
<plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="2" />
<plugin id="org.eclipse.equinox.simpleconfigurator" autoStart="true" startLevel="1" />
<plugin id="org.eclipse.osgi" autoStart="true" startLevel="-1" />
- <plugin id="org.eclipse.update.configurator" autoStart="true" startLevel="3" />
</configurations>
<repositories>
<repository location="http://download.eclipse.org/tools/cdt/builds/master/nightly/rcp-repository" enabled="true" />
+ <repository location="http://download.eclipse.org/tools/cdt/builds/master/nightly/rcp-repository" enabled="true" />
+ <repository location="http://download.eclipse.org/tools/cdt/builds/master/nightly/rcp-repository" enabled="true" />
+ <repository location="http://download.eclipse.org/tools/cdt/builds/master/nightly/rcp-repository" enabled="true" />
+ <repository location="http://download.eclipse.org/tools/cdt/builds/master/nightly/rcp-repository" enabled="true" />
</repositories>
<preferencesInfo>
diff --git a/debug/org.eclipse.cdt.debug.application.product/pom.xml b/debug/org.eclipse.cdt.debug.application.product/pom.xml
index 43636fbc442..1f0650c3973 100644
--- a/debug/org.eclipse.cdt.debug.application.product/pom.xml
+++ b/debug/org.eclipse.cdt.debug.application.product/pom.xml
@@ -1,5 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2015, 2021 Contributors to the Eclipse Foundation
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
@@ -11,7 +20,7 @@
<parent>
<groupId>org.eclipse.cdt</groupId>
<artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
+ <version>10.7.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
@@ -73,6 +82,11 @@
<arch>x86_64</arch>
</environment>
<environment>
+ <os>linux</os>
+ <ws>gtk</ws>
+ <arch>aarch64</arch>
+ </environment>
+ <environment>
<os>win32</os>
<ws>win32</ws>
<arch>x86_64</arch>
diff --git a/debug/org.eclipse.cdt.debug.application.tests/.classpath b/debug/org.eclipse.cdt.debug.application.tests/.classpath
index eca7bdba8f0..a42a828e04a 100644
--- a/debug/org.eclipse.cdt.debug.application.tests/.classpath
+++ b/debug/org.eclipse.cdt.debug.application.tests/.classpath
@@ -1,7 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="src" path="src"/>
+ <classpathentry kind="src" path="src">
+ <attributes>
+ <attribute name="test" value="true"/>
+ </attributes>
+ </classpathentry>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/debug/org.eclipse.cdt.debug.application.tests/.settings/org.eclipse.core.resources.prefs b/debug/org.eclipse.cdt.debug.application.tests/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/debug/org.eclipse.cdt.debug.application.tests/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/debug/org.eclipse.cdt.debug.application.tests/.settings/org.eclipse.jdt.core.prefs b/debug/org.eclipse.cdt.debug.application.tests/.settings/org.eclipse.jdt.core.prefs
index ad05599159f..5b1c443114d 100644
--- a/debug/org.eclipse.cdt.debug.application.tests/.settings/org.eclipse.jdt.core.prefs
+++ b/debug/org.eclipse.cdt.debug.application.tests/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/debug/org.eclipse.cdt.debug.application.tests/.settings/org.eclipse.jdt.ui.prefs b/debug/org.eclipse.cdt.debug.application.tests/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/debug/org.eclipse.cdt.debug.application.tests/.settings/org.eclipse.jdt.ui.prefs
+++ b/debug/org.eclipse.cdt.debug.application.tests/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/debug/org.eclipse.cdt.debug.application.tests/META-INF/MANIFEST.MF b/debug/org.eclipse.cdt.debug.application.tests/META-INF/MANIFEST.MF
index 0cebfb0f2a7..8f522bd1702 100644
--- a/debug/org.eclipse.cdt.debug.application.tests/META-INF/MANIFEST.MF
+++ b/debug/org.eclipse.cdt.debug.application.tests/META-INF/MANIFEST.MF
@@ -4,7 +4,7 @@ Bundle-Name: %bundleName
Bundle-SymbolicName: org.eclipse.cdt.debug.application.tests
Bundle-Version: 1.0.0.qualifier
Bundle-Vendor: %bundleVendor
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Require-Bundle: org.eclipse.cdt.debug.application,
org.eclipse.cdt.debug.application.doc,
org.eclipse.swtbot.eclipse.finder,
diff --git a/debug/org.eclipse.cdt.debug.application.tests/StandaloneTests.launch b/debug/org.eclipse.cdt.debug.application.tests/StandaloneTests.launch
deleted file mode 100644
index a4b8310485b..00000000000
--- a/debug/org.eclipse.cdt.debug.application.tests/StandaloneTests.launch
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<launchConfiguration type="org.eclipse.pde.ui.JunitLaunchConfig">
-<booleanAttribute key="append.args" value="true"/>
-<booleanAttribute key="askclear" value="false"/>
-<booleanAttribute key="automaticAdd" value="false"/>
-<booleanAttribute key="automaticValidate" value="false"/>
-<stringAttribute key="bootstrap" value=""/>
-<stringAttribute key="checked" value="[NONE]"/>
-<booleanAttribute key="clearConfig" value="true"/>
-<booleanAttribute key="clearws" value="true"/>
-<booleanAttribute key="clearwslog" value="false"/>
-<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/pde-junit"/>
-<booleanAttribute key="default" value="true"/>
-<booleanAttribute key="includeOptional" value="false"/>
-<stringAttribute key="location" value="${workspace_loc}/../junit-workspace2"/>
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
-<listEntry value="/org.eclipse.cdt.debug.application.tests/src/org/eclipse/cdt/debug/application/tests/AllTests.java"/>
-</listAttribute>
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
-<listEntry value="1"/>
-</listAttribute>
-<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
-<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
-<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
-<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/>
-<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
-<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.cdt.debug.application.tests.AllTests"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog -clean"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.cdt.debug.application.tests"/>
-<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
-<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xms40m&#10;-Xmx512M"/>
-<stringAttribute key="pde.version" value="3.3"/>
-<stringAttribute key="product" value="org.eclipse.cdt.debug.application.product"/>
-<booleanAttribute key="run_in_ui_thread" value="false"/>
-<booleanAttribute key="show_selected_only" value="false"/>
-<stringAttribute key="testApplication" value="org.eclipse.cdt.debug.application.app"/>
-<booleanAttribute key="tracing" value="false"/>
-<booleanAttribute key="useCustomFeatures" value="false"/>
-<booleanAttribute key="useDefaultConfig" value="true"/>
-<booleanAttribute key="useDefaultConfigArea" value="false"/>
-<booleanAttribute key="useProduct" value="true"/>
-</launchConfiguration>
diff --git a/debug/org.eclipse.cdt.debug.application.tests/about.html b/debug/org.eclipse.cdt.debug.application.tests/about.html
index 164f781a8fd..b3134865230 100644
--- a/debug/org.eclipse.cdt.debug.application.tests/about.html
+++ b/debug/org.eclipse.cdt.debug.application.tests/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/debug/org.eclipse.cdt.debug.application.tests/pom.xml b/debug/org.eclipse.cdt.debug.application.tests/pom.xml
index f4f4c1442c9..d3d854366f9 100644
--- a/debug/org.eclipse.cdt.debug.application.tests/pom.xml
+++ b/debug/org.eclipse.cdt.debug.application.tests/pom.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
- Copyright (C) 2014, Red Hat, Inc.
+ Copyright (c) 2014, 2021 Red Hat, Inc.
This program and the accompanying materials
are made available under the terms of the Eclipse Public License 2.0
@@ -16,7 +16,7 @@
<parent>
<groupId>org.eclipse.cdt</groupId>
<artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
+ <version>10.7.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
@@ -37,10 +37,6 @@
<application>org.eclipse.cdt.debug.application.app</application>
<argLine>${tycho.testArgLine} ${base.ui.test.vmargs}</argLine>
<appArgLine>-pluginCustomization ${basedir}/../../disable_intro_in_tests.ini</appArgLine>
- <includes>
- <include>**/AllTests.*</include>
- </includes>
- <testFailureIgnore>true</testFailureIgnore>
<dependencies>
<dependency>
<artifactId>org.eclipse.platform.feature.group</artifactId>
diff --git a/debug/org.eclipse.cdt.debug.application.tests/src/org/eclipse/cdt/debug/application/tests/Utilities.java b/debug/org.eclipse.cdt.debug.application.tests/src/org/eclipse/cdt/debug/application/tests/Utilities.java
index 17f3ead4d69..865fc28e393 100644
--- a/debug/org.eclipse.cdt.debug.application.tests/src/org/eclipse/cdt/debug/application/tests/Utilities.java
+++ b/debug/org.eclipse.cdt.debug.application.tests/src/org/eclipse/cdt/debug/application/tests/Utilities.java
@@ -170,7 +170,7 @@ public class Utilities {
if (workDir == null) {
return ProcessFactory.getFactory().exec(commandArray, envp);
}
- if (PTY.isSupported() && usePty) {
+ if (PTY.isSupported(PTY.Mode.CONSOLE) && usePty) {
return ProcessFactory.getFactory().exec(commandArray, envp, workDir, new PTY());
} else {
return ProcessFactory.getFactory().exec(commandArray, envp, workDir);
diff --git a/debug/org.eclipse.cdt.debug.application/.classpath b/debug/org.eclipse.cdt.debug.application/.classpath
index 8de1f1073f5..eab4a976057 100644
--- a/debug/org.eclipse.cdt.debug.application/.classpath
+++ b/debug/org.eclipse.cdt.debug.application/.classpath
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="src-config-generator"/>
- <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/debug/org.eclipse.cdt.debug.application/.project b/debug/org.eclipse.cdt.debug.application/.project
index 768ee968f41..c0a2979ee66 100644
--- a/debug/org.eclipse.cdt.debug.application/.project
+++ b/debug/org.eclipse.cdt.debug.application/.project
@@ -20,9 +20,15 @@
<arguments>
</arguments>
</buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.pde.PluginNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
</natures>
</projectDescription>
diff --git a/debug/org.eclipse.cdt.debug.application/.settings/org.eclipse.core.resources.prefs b/debug/org.eclipse.cdt.debug.application/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/debug/org.eclipse.cdt.debug.application/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/debug/org.eclipse.cdt.debug.application/.settings/org.eclipse.jdt.core.prefs b/debug/org.eclipse.cdt.debug.application/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/debug/org.eclipse.cdt.debug.application/.settings/org.eclipse.jdt.core.prefs
+++ b/debug/org.eclipse.cdt.debug.application/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/debug/org.eclipse.cdt.debug.application/.settings/org.eclipse.jdt.ui.prefs b/debug/org.eclipse.cdt.debug.application/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/debug/org.eclipse.cdt.debug.application/.settings/org.eclipse.jdt.ui.prefs
+++ b/debug/org.eclipse.cdt.debug.application/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/debug/org.eclipse.cdt.debug.application/META-INF/MANIFEST.MF b/debug/org.eclipse.cdt.debug.application/META-INF/MANIFEST.MF
index 75738447f1c..75e8d0b6935 100644
--- a/debug/org.eclipse.cdt.debug.application/META-INF/MANIFEST.MF
+++ b/debug/org.eclipse.cdt.debug.application/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %bundleName
Bundle-SymbolicName: org.eclipse.cdt.debug.application;singleton:=true
-Bundle-Version: 1.1.400.qualifier
+Bundle-Version: 1.2.700.qualifier
Bundle-Activator: org.eclipse.cdt.debug.application.Activator
Bundle-Vendor: %provider
Require-Bundle: org.eclipse.ui,
@@ -21,7 +21,7 @@ Require-Bundle: org.eclipse.ui,
org.eclipse.cdt.managedbuilder.gnu.ui;bundle-version="8.2.0",
org.eclipse.cdt.debug.core,
org.eclipse.ui.workbench
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-Localization: plugin
Bundle-ActivationPolicy: lazy
Eclipse-BundleShape: dir
diff --git a/debug/org.eclipse.cdt.debug.application/about.html b/debug/org.eclipse.cdt.debug.application/about.html
index 164f781a8fd..b3134865230 100644
--- a/debug/org.eclipse.cdt.debug.application/about.html
+++ b/debug/org.eclipse.cdt.debug.application/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/debug/org.eclipse.cdt.debug.application/about.ini b/debug/org.eclipse.cdt.debug.application/about.ini
new file mode 100644
index 00000000000..e07a7bb377e
--- /dev/null
+++ b/debug/org.eclipse.cdt.debug.application/about.ini
@@ -0,0 +1,24 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%blurb
+
+# Property "windowImage" contains path to window icon (16x16)
+# needed for primary features only
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=cdt_logo_icon32.png
+
+# Property "aboutImage" contains path to product image (500x330 or 115x164)
+# needed for primary features only
+
+# Property "appName" contains name of the application (translated)
+# needed for primary features only
+
+# Property "welcomePerspective" contains the id of the perspective in which the
+# welcome page is to be opened.
+# optional
diff --git a/debug/org.eclipse.cdt.debug.application/about.mappings b/debug/org.eclipse.cdt.debug.application/about.mappings
new file mode 100644
index 00000000000..936a8039c3e
--- /dev/null
+++ b/debug/org.eclipse.cdt.debug.application/about.mappings
@@ -0,0 +1,9 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+# The following should contain the build version.
+# e.g. "0=20200106-1728"
+# This value will be added automatically via the build scripts
+0=${buildId}
diff --git a/debug/org.eclipse.cdt.debug.application/about.properties b/debug/org.eclipse.cdt.debug.application/about.properties
new file mode 100644
index 00000000000..fa36eeca738
--- /dev/null
+++ b/debug/org.eclipse.cdt.debug.application/about.properties
@@ -0,0 +1,32 @@
+###############################################################################
+# Copyright (c) 2014, 2022 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+# about.properties
+# contains externalized strings for about.ini
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# fill-ins are supplied by about.mappings
+# This file should be translated.
+# NOTE TO TRANSLATOR: Please do not translate the featureVersion variable.
+
+
+blurb=C/C++ Standalone Debugger\n\
+\n\
+Version: {featureVersion}\n\
+Build id: {0}\n\
+\n\
+Copyright (c) 2014, 2022 Contributors to the Eclipse Foundation
+\n\
+See the NOTICE file(s) distributed with this work for additional\n\
+information regarding copyright ownership.\n\
+\n\
+Visit http://www.eclipse.org/cdt
diff --git a/debug/org.eclipse.cdt.debug.application/build.properties b/debug/org.eclipse.cdt.debug.application/build.properties
index 6a5375a2806..86473b5124d 100644
--- a/debug/org.eclipse.cdt.debug.application/build.properties
+++ b/debug/org.eclipse.cdt.debug.application/build.properties
@@ -8,5 +8,9 @@ bin.includes = plugin.xml,\
scripts/,\
about.html,\
icons/,\
- plugin_customization.ini
+ plugin_customization.ini,\
+ cdt_logo_icon32.png,\
+ about.properties,\
+ about.mappings,\
+ about.ini
src.includes = about.html
diff --git a/debug/org.eclipse.cdt.debug.application/cdt_logo_icon32.png b/debug/org.eclipse.cdt.debug.application/cdt_logo_icon32.png
new file mode 100644
index 00000000000..470ca81b327
--- /dev/null
+++ b/debug/org.eclipse.cdt.debug.application/cdt_logo_icon32.png
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.application/plugin.properties b/debug/org.eclipse.cdt.debug.application/plugin.properties
index b58a06aaa5b..ffca5a25a48 100644
--- a/debug/org.eclipse.cdt.debug.application/plugin.properties
+++ b/debug/org.eclipse.cdt.debug.application/plugin.properties
@@ -41,6 +41,6 @@ DebugRemoteExecutableMenu.label=&Remote Executable...
DebugCore.description=Debug a corefile
DebugCore.name=Debug Core File
DebugCoreMenu.label=Debug &Core File...
-aboutText=Eclipse Stand-alone C/C++ GDB Graphical Debugger\n\nRelease 9.10.0\n
+aboutText=Eclipse Stand-alone C/C++ GDB Graphical Debugger\n\nRelease 10.7.0\n
ProductDesc=Eclipse Stand-alone C/C++ GDB Debugger
ProductName=Stand-alone C/C++ GDB Debugger
diff --git a/debug/org.eclipse.cdt.debug.application/pom.xml b/debug/org.eclipse.cdt.debug.application/pom.xml
index 25d0db0adb2..d0d01f20e19 100644
--- a/debug/org.eclipse.cdt.debug.application/pom.xml
+++ b/debug/org.eclipse.cdt.debug.application/pom.xml
@@ -1,4 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2014, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
@@ -7,10 +17,10 @@
<parent>
<groupId>org.eclipse.cdt</groupId>
<artifactId>org.eclipse.cdt.debug-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
+ <version>10.7.0-SNAPSHOT</version>
</parent>
- <version>1.1.400-SNAPSHOT</version>
+ <version>1.2.700-SNAPSHOT</version>
<artifactId>org.eclipse.cdt.debug.application</artifactId>
<packaging>eclipse-plugin</packaging>
diff --git a/debug/org.eclipse.cdt.debug.application/scripts/cdtdebug.sh b/debug/org.eclipse.cdt.debug.application/scripts/cdtdebug.sh
index f6124603d68..f6124603d68 100644..100755
--- a/debug/org.eclipse.cdt.debug.application/scripts/cdtdebug.sh
+++ b/debug/org.eclipse.cdt.debug.application/scripts/cdtdebug.sh
diff --git a/debug/org.eclipse.cdt.debug.application/scripts/install.sh b/debug/org.eclipse.cdt.debug.application/scripts/install.sh
index 33a90ae5b16..33a90ae5b16 100644..100755
--- a/debug/org.eclipse.cdt.debug.application/scripts/install.sh
+++ b/debug/org.eclipse.cdt.debug.application/scripts/install.sh
diff --git a/debug/org.eclipse.cdt.debug.application/src/org/eclipse/cdt/debug/application/ApplicationWorkbenchWindowAdvisor.java b/debug/org.eclipse.cdt.debug.application/src/org/eclipse/cdt/debug/application/ApplicationWorkbenchWindowAdvisor.java
index f18fc6d800d..cec15800201 100644
--- a/debug/org.eclipse.cdt.debug.application/src/org/eclipse/cdt/debug/application/ApplicationWorkbenchWindowAdvisor.java
+++ b/debug/org.eclipse.cdt.debug.application/src/org/eclipse/cdt/debug/application/ApplicationWorkbenchWindowAdvisor.java
@@ -109,7 +109,7 @@ public class ApplicationWorkbenchWindowAdvisor extends WorkbenchWindowAdvisor {
Path x = new Path(input);
try {
if (!x.isAbsolute() && x.segmentCount() == 1) {
- String command = "which " + input; //$NON-NLS-1$
+ String[] command = new String[] { "which", input }; //$NON-NLS-1$
Process p = null;
InputStream in = null;
try {
diff --git a/debug/org.eclipse.cdt.debug.core/.classpath b/debug/org.eclipse.cdt.debug.core/.classpath
index 22f30643cba..e801ebfb468 100644
--- a/debug/org.eclipse.cdt.debug.core/.classpath
+++ b/debug/org.eclipse.cdt.debug.core/.classpath
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/debug/org.eclipse.cdt.debug.core/.settings/org.eclipse.core.resources.prefs b/debug/org.eclipse.cdt.debug.core/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/debug/org.eclipse.cdt.debug.core/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/debug/org.eclipse.cdt.debug.core/.settings/org.eclipse.jdt.core.prefs b/debug/org.eclipse.cdt.debug.core/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/debug/org.eclipse.cdt.debug.core/.settings/org.eclipse.jdt.core.prefs
+++ b/debug/org.eclipse.cdt.debug.core/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/debug/org.eclipse.cdt.debug.core/.settings/org.eclipse.jdt.ui.prefs b/debug/org.eclipse.cdt.debug.core/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/debug/org.eclipse.cdt.debug.core/.settings/org.eclipse.jdt.ui.prefs
+++ b/debug/org.eclipse.cdt.debug.core/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/debug/org.eclipse.cdt.debug.core/META-INF/MANIFEST.MF b/debug/org.eclipse.cdt.debug.core/META-INF/MANIFEST.MF
index dcc27bc7970..0bd6e0dfaa2 100644
--- a/debug/org.eclipse.cdt.debug.core/META-INF/MANIFEST.MF
+++ b/debug/org.eclipse.cdt.debug.core/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.debug.core; singleton:=true
-Bundle-Version: 8.4.0.qualifier
+Bundle-Version: 8.7.200.qualifier
Bundle-Activator: org.eclipse.cdt.debug.core.CDebugCorePlugin
Bundle-Vendor: %providerName
Bundle-Localization: plugin
@@ -38,7 +38,7 @@ Export-Package: org.eclipse.cdt.debug.core,
org.eclipse.cdt.dsf.ui,
org.eclipse.cdt.tests.dsf.gdb",
org.eclipse.cdt.debug.internal.core.srcfinder;x-internal:=true
-Require-Bundle: org.eclipse.cdt.core;bundle-version="[5.0.0,7.0.0)",
+Require-Bundle: org.eclipse.cdt.core;bundle-version="[7.0.0,8.0.0)",
org.eclipse.core.filesystem;bundle-version="1.2.0",
org.eclipse.core.resources;bundle-version="[3.2.0,4.0.0)",
org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)",
@@ -46,6 +46,5 @@ Require-Bundle: org.eclipse.cdt.core;bundle-version="[5.0.0,7.0.0)",
org.eclipse.debug.core;bundle-version="[3.2.0,4.0.0)",
org.eclipse.launchbar.core;bundle-version="2.0.0"
Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Import-Package: com.ibm.icu.text
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Automatic-Module-Name: org.eclipse.cdt.debug.core
diff --git a/debug/org.eclipse.cdt.debug.core/about.html b/debug/org.eclipse.cdt.debug.core/about.html
index 164f781a8fd..b3134865230 100644
--- a/debug/org.eclipse.cdt.debug.core/about.html
+++ b/debug/org.eclipse.cdt.debug.core/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/CDebugUtils.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/CDebugUtils.java
index 1702cec334d..74768b88cbf 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/CDebugUtils.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/CDebugUtils.java
@@ -21,6 +21,7 @@ import java.io.FileNotFoundException;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.charset.CharsetDecoder;
+import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -64,8 +65,6 @@ import org.eclipse.debug.core.model.IBreakpoint;
import org.osgi.service.prefs.BackingStoreException;
import org.w3c.dom.Document;
-import com.ibm.icu.text.MessageFormat;
-
/**
* Utility methods.
*/
@@ -385,9 +384,22 @@ public class CDebugUtils {
appendExtensionMessage(breakpoint, label);
appendIgnoreCount(breakpoint, label);
appendCondition(breakpoint, label);
+ appendModule(breakpoint, label);
return label.toString();
}
+ /**
+ * @since 8.6
+ */
+ protected static void appendModule(ICAddressBreakpoint breakpoint, StringBuffer buffer) throws CoreException {
+ String module = breakpoint.getModule();
+ if (module != null && module.length() > 0) {
+ buffer.append(' ');
+ buffer.append(MessageFormat.format(DebugCoreMessages.getString("CDebugUtils.9"), //$NON-NLS-1$
+ (Object[]) new String[] { module }));
+ }
+ }
+
protected static String getFunctionBreakpointText(ICFunctionBreakpoint breakpoint, boolean qualified)
throws CoreException {
StringBuffer label = new StringBuffer();
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/DebugCoreMessages.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/DebugCoreMessages.java
index 8de8801dbe3..640c01d1cdb 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/DebugCoreMessages.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/DebugCoreMessages.java
@@ -13,11 +13,10 @@
*******************************************************************************/
package org.eclipse.cdt.debug.core;
+import java.text.MessageFormat;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
-import com.ibm.icu.text.MessageFormat;
-
public class DebugCoreMessages {
private static final String BUNDLE_NAME = "org.eclipse.cdt.debug.core.DebugCoreMessages";//$NON-NLS-1$
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/DebugCoreMessages.properties b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/DebugCoreMessages.properties
index 5ebe8ba74f2..cf89878f9dd 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/DebugCoreMessages.properties
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/DebugCoreMessages.properties
@@ -23,6 +23,7 @@ CDebugUtils.5=[expression: ''{0}'']
CDebugUtils.6=[memory space: {0}]
CDebugUtils.7=[units: {0}]
CDebugUtils.8=[type: {0}]
+CDebugUtils.9=[module: {0}]
CDebugUtils.printfString=[{0}]
CDebugUtils.Regular=Regular
CDebugUtils.Hardware=Hardware
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/ICDTLaunchConfigurationConstants.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/ICDTLaunchConfigurationConstants.java
index 7471b90dfd0..69022c310b1 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/ICDTLaunchConfigurationConstants.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/ICDTLaunchConfigurationConstants.java
@@ -141,10 +141,48 @@ public interface ICDTLaunchConfigurationConstants {
* Launch configuration attribute key. The value is a string specifying
* application arguments for a C/C++ launch configuration, as they should
* appear on the command line.
+ *
+ * @see ATTR_STARTUP_WITH_SHELL
*/
public static final String ATTR_PROGRAM_ARGUMENTS = CDT_LAUNCH_ID + ".PROGRAM_ARGUMENTS"; //$NON-NLS-1$
/**
+ * Launch configuration attribute key. The value is a string as to whether to use
+ * gdb's startup-with-shell. This can affect how program arguments are expanded.
+ * Possible values are:
+ * - {@link #STARTUP_WITH_SHELL_ON}
+ * - {@link #STARTUP_WITH_SHELL_OFF}
+ * - {@link #STARTUP_WITH_SHELL_UNSET} - use gdb's default
+ *
+ * Only supported in GDB > 7.7 for local launches and 8.1 for remote launches.
+ *
+ * See https://sourceware.org/gdb/onlinedocs/gdb/Starting.html
+ * @since 8.7
+ */
+ public static final String ATTR_STARTUP_WITH_SHELL = CDT_LAUNCH_ID + ".STARTUP_WITH_SHELL"; //$NON-NLS-1$
+ /**
+ * @see #ATTR_STARTUP_WITH_SHELL
+ * @since 8.7
+ */
+ public static final String STARTUP_WITH_SHELL_ON = "on"; //$NON-NLS-1$
+ /**
+ * @see #ATTR_STARTUP_WITH_SHELL
+ * @since 8.7
+ */
+ public static final String STARTUP_WITH_SHELL_OFF = "off"; //$NON-NLS-1$
+ /**
+ * @see #ATTR_STARTUP_WITH_SHELL
+ * @since 8.7
+ */
+ public static final String STARTUP_WITH_SHELL_UNSET = ""; //$NON-NLS-1$
+ /**
+ * Default value for {@link #ATTR_STARTUP_WITH_SHELL}
+ * @see #ATTR_STARTUP_WITH_SHELL
+ * @since 8.7
+ */
+ public static final String STARTUP_WITH_SHELL_DEFAULT = STARTUP_WITH_SHELL_UNSET;
+
+ /**
* Launch configuration attribute key. The value is a string specifying a
* path to the working directory to use when launching a the application.
* When unspecified, the working directory is inherited from the current
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/command/CCommandAdapterFactory.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/command/CCommandAdapterFactory.java
index 7c539d26024..7c539d26024 100755..100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/command/CCommandAdapterFactory.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/command/CCommandAdapterFactory.java
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/command/CForEachCommand.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/command/CForEachCommand.java
index 2da000fc316..2da000fc316 100755..100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/command/CForEachCommand.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/command/CForEachCommand.java
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/command/RestartCommand.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/command/RestartCommand.java
index 4ffe99c9a72..4ffe99c9a72 100755..100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/command/RestartCommand.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/command/RestartCommand.java
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/executables/ExecutablesManager.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/executables/ExecutablesManager.java
index 780163d9392..6ed3d6278e5 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/executables/ExecutablesManager.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/executables/ExecutablesManager.java
@@ -971,7 +971,8 @@ public class ExecutablesManager extends PlatformObject
synchronized (executablesMap) {
for (Executable executableRemoved : executablesRemoved) {
List<Executable> execs = executablesMap.get(executableRemoved.getProject());
- assert execs != null : "considering the list was used in populating 'executablesRemoved', how could it be gone now?"; //$NON-NLS-1$
+ assert execs != null
+ : "considering the list was used in populating 'executablesRemoved', how could it be gone now?"; //$NON-NLS-1$
if (execs != null) {
execs.remove(executableRemoved);
}
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/BreakpointProblems.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/BreakpointProblems.java
index 035cc5cd504..85db4a54f73 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/BreakpointProblems.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/BreakpointProblems.java
@@ -14,6 +14,8 @@
*******************************************************************************/
package org.eclipse.cdt.debug.internal.core.breakpoints;
+import java.text.MessageFormat;
+
import org.eclipse.cdt.core.ProblemMarkerInfo;
import org.eclipse.cdt.core.model.ICModelMarker;
import org.eclipse.cdt.debug.core.CDebugCorePlugin;
@@ -23,8 +25,6 @@ import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
-import com.ibm.icu.text.MessageFormat;
-
public class BreakpointProblems {
/**
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CAddressBreakpoint.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CAddressBreakpoint.java
index f3659f1c020..d0877778ae7 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CAddressBreakpoint.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CAddressBreakpoint.java
@@ -13,6 +13,7 @@
*******************************************************************************/
package org.eclipse.cdt.debug.internal.core.breakpoints;
+import java.text.MessageFormat;
import java.util.Map;
import org.eclipse.cdt.debug.core.CDebugUtils;
@@ -20,8 +21,6 @@ import org.eclipse.cdt.debug.core.model.ICAddressBreakpoint;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
-import com.ibm.icu.text.MessageFormat;
-
/**
* A breakpoint that suspend the execution when a particular address is reached.
*/
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CAddressDynamicPrintf.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CAddressDynamicPrintf.java
index ab2c3768250..2849ae91ce2 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CAddressDynamicPrintf.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CAddressDynamicPrintf.java
@@ -13,6 +13,7 @@
*******************************************************************************/
package org.eclipse.cdt.debug.internal.core.breakpoints;
+import java.text.MessageFormat;
import java.util.Map;
import org.eclipse.cdt.debug.core.CDebugUtils;
@@ -20,8 +21,6 @@ import org.eclipse.cdt.debug.core.model.ICAddressBreakpoint;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
-import com.ibm.icu.text.MessageFormat;
-
/**
* A DynamicPrintf that prints a message when a particular address is reached.
*
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CAddressTracepoint.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CAddressTracepoint.java
index 6a76e638999..1d28b044bd2 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CAddressTracepoint.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CAddressTracepoint.java
@@ -13,6 +13,7 @@
*******************************************************************************/
package org.eclipse.cdt.debug.internal.core.breakpoints;
+import java.text.MessageFormat;
import java.util.Map;
import org.eclipse.cdt.debug.core.CDebugUtils;
@@ -20,8 +21,6 @@ import org.eclipse.cdt.debug.core.model.ICAddressBreakpoint;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
-import com.ibm.icu.text.MessageFormat;
-
/**
* A tracepoint that collects data when a particular address is reached.
*
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CBreakpoint.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CBreakpoint.java
index 1a1af9adb0e..aac23e870b5 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CBreakpoint.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CBreakpoint.java
@@ -14,6 +14,7 @@
*******************************************************************************/
package org.eclipse.cdt.debug.internal.core.breakpoints;
+import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@@ -44,8 +45,6 @@ import org.eclipse.debug.core.DebugPlugin;
import org.eclipse.debug.core.IDebugEventSetListener;
import org.eclipse.debug.core.model.Breakpoint;
-import com.ibm.icu.text.MessageFormat;
-
/**
* The base class for all C/C++ specific breakpoints.
*/
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CFunctionBreakpoint.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CFunctionBreakpoint.java
index 84e379fb7ed..2389c2bf425 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CFunctionBreakpoint.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CFunctionBreakpoint.java
@@ -13,6 +13,7 @@
*******************************************************************************/
package org.eclipse.cdt.debug.internal.core.breakpoints;
+import java.text.MessageFormat;
import java.util.Map;
import org.eclipse.cdt.debug.core.CDebugUtils;
@@ -20,8 +21,6 @@ import org.eclipse.cdt.debug.core.model.ICFunctionBreakpoint;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
-import com.ibm.icu.text.MessageFormat;
-
/**
* A breakpoint that suspends the execution when a function is entered.
*/
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CFunctionDynamicPrintf.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CFunctionDynamicPrintf.java
index 1a8b346e943..5f6969bed64 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CFunctionDynamicPrintf.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CFunctionDynamicPrintf.java
@@ -13,6 +13,7 @@
*******************************************************************************/
package org.eclipse.cdt.debug.internal.core.breakpoints;
+import java.text.MessageFormat;
import java.util.Map;
import org.eclipse.cdt.debug.core.CDebugUtils;
@@ -20,8 +21,6 @@ import org.eclipse.cdt.debug.core.model.ICFunctionBreakpoint;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
-import com.ibm.icu.text.MessageFormat;
-
/**
* A DynamicPrintf that collects data when a function is entered.
*
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CFunctionTracepoint.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CFunctionTracepoint.java
index 0cc8b35a279..4885a75346f 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CFunctionTracepoint.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CFunctionTracepoint.java
@@ -13,6 +13,7 @@
*******************************************************************************/
package org.eclipse.cdt.debug.internal.core.breakpoints;
+import java.text.MessageFormat;
import java.util.Map;
import org.eclipse.cdt.debug.core.CDebugUtils;
@@ -20,8 +21,6 @@ import org.eclipse.cdt.debug.core.model.ICFunctionBreakpoint;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
-import com.ibm.icu.text.MessageFormat;
-
/**
* A tracepoint that collects data when a function is entered.
*
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CLineBreakpoint.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CLineBreakpoint.java
index 011feb78272..194d0f018b0 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CLineBreakpoint.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CLineBreakpoint.java
@@ -13,6 +13,7 @@
*******************************************************************************/
package org.eclipse.cdt.debug.internal.core.breakpoints;
+import java.text.MessageFormat;
import java.util.Map;
import org.eclipse.cdt.debug.core.CDebugUtils;
@@ -22,8 +23,6 @@ import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
-import com.ibm.icu.text.MessageFormat;
-
/**
* A breakpoint that suspends the execution when a particular line of code is
* reached.
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CLineDynamicPrintf.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CLineDynamicPrintf.java
index 583f1b193ea..217a2637e28 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CLineDynamicPrintf.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CLineDynamicPrintf.java
@@ -13,6 +13,7 @@
*******************************************************************************/
package org.eclipse.cdt.debug.internal.core.breakpoints;
+import java.text.MessageFormat;
import java.util.Map;
import org.eclipse.cdt.debug.core.CDebugUtils;
@@ -22,8 +23,6 @@ import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
-import com.ibm.icu.text.MessageFormat;
-
/**
* A DynamicPrintf that prints a string when a particular line of code is reached.
*
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CLineTracepoint.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CLineTracepoint.java
index 5c2bfb8ddd7..03a7bcd856e 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CLineTracepoint.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CLineTracepoint.java
@@ -13,6 +13,7 @@
*******************************************************************************/
package org.eclipse.cdt.debug.internal.core.breakpoints;
+import java.text.MessageFormat;
import java.util.Map;
import org.eclipse.cdt.debug.core.CDebugUtils;
@@ -22,8 +23,6 @@ import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
-import com.ibm.icu.text.MessageFormat;
-
/**
* A tracepoint that collects data when a particular line of code is reached.
*
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CWatchpoint.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CWatchpoint.java
index c475621c429..bc6c0f12e42 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CWatchpoint.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CWatchpoint.java
@@ -15,6 +15,7 @@
package org.eclipse.cdt.debug.internal.core.breakpoints;
import java.math.BigInteger;
+import java.text.MessageFormat;
import java.util.Map;
import org.eclipse.cdt.debug.core.CDebugUtils;
@@ -23,8 +24,6 @@ import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
-import com.ibm.icu.text.MessageFormat;
-
/**
* A watchpoint specific to the C/C++ debug model.
*/
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/CSourceLocator.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/CSourceLocator.java
index 862fd925185..57d0f388db8 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/CSourceLocator.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/CSourceLocator.java
@@ -15,6 +15,7 @@ package org.eclipse.cdt.debug.internal.core.sourcelookup;
import java.io.IOException;
import java.io.StringReader;
+import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
@@ -56,8 +57,6 @@ import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
-import com.ibm.icu.text.MessageFormat;
-
/**
* Default source locator.
*/
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/CSourceLookupParticipant.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/CSourceLookupParticipant.java
index 0b31d12fbee..6265d555a9a 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/CSourceLookupParticipant.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/CSourceLookupParticipant.java
@@ -25,9 +25,7 @@ import java.util.Map;
import org.eclipse.cdt.debug.core.sourcelookup.AbsolutePathSourceContainer;
import org.eclipse.cdt.debug.core.sourcelookup.ISourceLookupChangeListener;
import org.eclipse.cdt.debug.internal.core.ListenerList;
-import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
-import org.eclipse.debug.core.model.IBreakpoint;
import org.eclipse.debug.core.model.IDebugElement;
import org.eclipse.debug.core.sourcelookup.AbstractSourceLookupParticipant;
import org.eclipse.debug.core.sourcelookup.ISourceLookupDirector;
@@ -77,7 +75,6 @@ public class CSourceLookupParticipant extends AbstractSourceLookupParticipant {
// Workaround for cases when the stack frame doesn't contain the source file name
String name = null;
- IBreakpoint breakpoint = null;
if (object instanceof String) {
name = (String) object;
}
@@ -96,20 +93,6 @@ public class CSourceLookupParticipant extends AbstractSourceLookupParticipant {
}
}
- // Source lookup participant order is preserved where possible except for one case:
- // - If we've stopped at a breakpoint the user has made on an IResource, we definitely want to show
- // that IResource before others
- if (breakpoint != null && breakpoint.getMarker() != null && breakpoint.getMarker().getResource() != null) {
- IResource breakpointResource = breakpoint.getMarker().getResource();
- for (int i = 0; i < foundElements.length; i++) {
- if (foundElements[i].equals(breakpointResource)) {
- Object temp = foundElements[0];
- foundElements[0] = foundElements[i];
- foundElements[i] = temp;
- break;
- }
- }
- }
fCachedResults.put(object, foundElements);
return foundElements;
}
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/MapEntrySourceContainer.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/MapEntrySourceContainer.java
index 1fa73a87f51..50a9c4ea17c 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/MapEntrySourceContainer.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/MapEntrySourceContainer.java
@@ -15,6 +15,7 @@ package org.eclipse.cdt.debug.internal.core.sourcelookup;
import java.io.File;
import java.io.IOException;
+import java.text.MessageFormat;
import java.util.ArrayList;
import org.eclipse.cdt.core.model.CoreModel;
@@ -33,8 +34,6 @@ import org.eclipse.debug.core.sourcelookup.ISourceLookupDirector;
import org.eclipse.debug.core.sourcelookup.containers.AbstractSourceContainer;
import org.eclipse.debug.core.sourcelookup.containers.LocalFileStorage;
-import com.ibm.icu.text.MessageFormat;
-
/**
* The source container that maps a backend path to the local filesystem path.
*/
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/SourceUtils.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/SourceUtils.java
index 83690389960..e168b2dc024 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/SourceUtils.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/SourceUtils.java
@@ -17,6 +17,7 @@ package org.eclipse.cdt.debug.internal.core.sourcelookup;
import java.io.File;
import java.io.IOException;
import java.io.StringReader;
+import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.LinkedList;
@@ -62,8 +63,6 @@ import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
-import com.ibm.icu.text.MessageFormat;
-
public class SourceUtils {
private static final String NAME_COMMON_SOURCE_LOCATIONS = "commonSourceLocations"; //$NON-NLS-1$
private static final String NAME_SOURCE_LOCATION = "sourceLocation"; //$NON-NLS-1$
diff --git a/debug/org.eclipse.cdt.debug.dap-feature/.settings/org.eclipse.core.resources.prefs b/debug/org.eclipse.cdt.debug.dap-feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/debug/org.eclipse.cdt.debug.dap-feature/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/debug/org.eclipse.cdt.debug.dap-feature/build.properties b/debug/org.eclipse.cdt.debug.dap-feature/build.properties
index 274b1f45828..72da250726e 100644
--- a/debug/org.eclipse.cdt.debug.dap-feature/build.properties
+++ b/debug/org.eclipse.cdt.debug.dap-feature/build.properties
@@ -1,5 +1,5 @@
###############################################################################
-# Copyright (c) 2019 Kichwa Coders Canada and others.
+# Copyright (c) 2019 Kichwa Coders Canada Inc. and others.
#
# This program and the accompanying materials
# are made available under the terms of the Eclipse Public License 2.0
diff --git a/debug/org.eclipse.cdt.debug.dap-feature/feature.properties b/debug/org.eclipse.cdt.debug.dap-feature/feature.properties
index b63d0ead8c9..21f25401f5d 100644
--- a/debug/org.eclipse.cdt.debug.dap-feature/feature.properties
+++ b/debug/org.eclipse.cdt.debug.dap-feature/feature.properties
@@ -1,5 +1,5 @@
###############################################################################
-# Copyright (c) 2019 Kichwa Coders Canada and others.
+# Copyright (c) 2019 Kichwa Coders Canada Inc. and others.
#
# This program and the accompanying materials
# are made available under the terms of the Eclipse Public License 2.0
@@ -16,7 +16,7 @@ featureName=C/C++ Debug Adapter GDB Debugger Integration
providerName=Eclipse CDT
description=Debug Adapter (DAP) integration with gdb debugger
copyright=\
-Copyright (c) 2019 Kichwa Coders Canada and others.\n\
+Copyright (c) 2019 Kichwa Coders Canada Inc. and others.\n\
This program and the accompanying materials\n\
are made available under the terms of the Eclipse Public License 2.0\n\
which accompanies this distribution, and is available at\n\
diff --git a/debug/org.eclipse.cdt.debug.dap-feature/feature.xml b/debug/org.eclipse.cdt.debug.dap-feature/feature.xml
index 43ad007db07..1989af24c82 100644
--- a/debug/org.eclipse.cdt.debug.dap-feature/feature.xml
+++ b/debug/org.eclipse.cdt.debug.dap-feature/feature.xml
@@ -1,8 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2019, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<feature
id="org.eclipse.cdt.debug.dap"
label="%featureName"
- version="9.10.0.qualifier"
+ version="10.7.0.qualifier"
provider-name="%providerName"
license-feature="org.eclipse.license"
license-feature-version="0.0.0">
diff --git a/debug/org.eclipse.cdt.debug.dap/.classpath b/debug/org.eclipse.cdt.debug.dap/.classpath
index eca7bdba8f0..e801ebfb468 100644
--- a/debug/org.eclipse.cdt.debug.dap/.classpath
+++ b/debug/org.eclipse.cdt.debug.dap/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/debug/org.eclipse.cdt.debug.dap/.project b/debug/org.eclipse.cdt.debug.dap/.project
index 208e02ab113..1c817bd4c47 100644
--- a/debug/org.eclipse.cdt.debug.dap/.project
+++ b/debug/org.eclipse.cdt.debug.dap/.project
@@ -34,9 +34,15 @@
<arguments>
</arguments>
</buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.pde.PluginNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
</natures>
</projectDescription>
diff --git a/debug/org.eclipse.cdt.debug.dap/.settings/org.eclipse.jdt.core.prefs b/debug/org.eclipse.cdt.debug.dap/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/debug/org.eclipse.cdt.debug.dap/.settings/org.eclipse.jdt.core.prefs
+++ b/debug/org.eclipse.cdt.debug.dap/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/debug/org.eclipse.cdt.debug.dap/.settings/org.eclipse.jdt.ui.prefs b/debug/org.eclipse.cdt.debug.dap/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/debug/org.eclipse.cdt.debug.dap/.settings/org.eclipse.jdt.ui.prefs
+++ b/debug/org.eclipse.cdt.debug.dap/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/debug/org.eclipse.cdt.debug.dap/BuildDebugServers.xml b/debug/org.eclipse.cdt.debug.dap/BuildDebugServers.xml
index d8472d4ae09..079883e595f 100644
--- a/debug/org.eclipse.cdt.debug.dap/BuildDebugServers.xml
+++ b/debug/org.eclipse.cdt.debug.dap/BuildDebugServers.xml
@@ -2,10 +2,14 @@
<project default="BuildDebugServers">
<!-- Wrap running yarn in an ant task so that we don't have to specify absolute path to yarn in external tool builder. -->
<target name="BuildDebugServers" description="Build the Node Debug Servers with yarn">
- <exec executable="yarn" dir="./debug-servers" failifexecutionfails="true">
+ <!-- Don't upgrade on each build - TODO determine better way to keep this bundle up to date, in the meantime
+ the upgrading is a manual process when and if needed, and is
+ part of https://github.com/eclipse-cdt/cdt-infra/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3Aendgame
+ -->
+ <!-- <exec executable="yarn" dir="./debug-servers" failifexecutionfails="true">
<arg value="upgrade"/>
<arg value="cdt-gdb-adapter"/>
- </exec>
+ </exec> -->
<exec executable="yarn" dir="./debug-servers" failifexecutionfails="true" />
</target>
</project>
diff --git a/debug/org.eclipse.cdt.debug.dap/META-INF/MANIFEST.MF b/debug/org.eclipse.cdt.debug.dap/META-INF/MANIFEST.MF
index 771ad41fb65..8e8ecbbe8bd 100644
--- a/debug/org.eclipse.cdt.debug.dap/META-INF/MANIFEST.MF
+++ b/debug/org.eclipse.cdt.debug.dap/META-INF/MANIFEST.MF
@@ -2,31 +2,17 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name
Bundle-SymbolicName: org.eclipse.cdt.debug.dap;singleton:=true
-Bundle-Version: 1.1.0.qualifier
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Require-Bundle: org.apache.commons.io,
- org.eclipse.core.runtime,
- org.eclipse.lsp4e;bundle-version="0.11.0",
- org.eclipse.ui.genericeditor;bundle-version="1.0.0",
+Bundle-Version: 1.2.600.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Require-Bundle: org.eclipse.core.runtime,
org.eclipse.jface.text,
- org.eclipse.cdt.ui,
- org.eclipse.cdt.core,
- org.eclipse.jface,
org.eclipse.ui,
- org.eclipse.lsp4j;bundle-version="0.7.2",
- org.eclipse.core.commands,
- org.eclipse.core.expressions,
- org.eclipse.core.resources,
- com.google.gson;bundle-version="2.8.2",
org.eclipse.lsp4j.jsonrpc,
org.eclipse.cdt.launch,
- org.eclipse.lsp4e.debug;bundle-version="0.11.0",
- org.eclipse.debug.core,
+ org.eclipse.lsp4e.debug;bundle-version="0.12.0",
org.eclipse.debug.ui,
- org.eclipse.cdt.debug.core,
- org.eclipse.lsp4j.debug,
+ org.eclipse.lsp4j.debug;bundle-version="0.9.0",
org.eclipse.lsp4j.jsonrpc.debug,
- com.google.guava,
org.eclipse.xtext.xbase.lib,
org.eclipse.cdt.dsf.gdb;bundle-version="5.7.200",
org.eclipse.cdt.debug.ui
@@ -34,7 +20,5 @@ Bundle-Vendor: %Bundle-Vendor
Export-Package: org.eclipse.cdt.debug.dap
Bundle-Activator: org.eclipse.cdt.debug.dap.Activator
Bundle-ActivationPolicy: lazy
-Import-Package: org.eclipse.ui.editors.text,
- org.eclipse.ui.texteditor
Automatic-Module-Name: org.eclipse.cdt.debug.dap
Eclipse-BundleShape: dir
diff --git a/debug/org.eclipse.cdt.debug.dap/about.html b/debug/org.eclipse.cdt.debug.dap/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/debug/org.eclipse.cdt.debug.dap/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/debug/org.eclipse.cdt.debug.dap/about.ini b/debug/org.eclipse.cdt.debug.dap/about.ini
new file mode 100644
index 00000000000..e07a7bb377e
--- /dev/null
+++ b/debug/org.eclipse.cdt.debug.dap/about.ini
@@ -0,0 +1,24 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%blurb
+
+# Property "windowImage" contains path to window icon (16x16)
+# needed for primary features only
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=cdt_logo_icon32.png
+
+# Property "aboutImage" contains path to product image (500x330 or 115x164)
+# needed for primary features only
+
+# Property "appName" contains name of the application (translated)
+# needed for primary features only
+
+# Property "welcomePerspective" contains the id of the perspective in which the
+# welcome page is to be opened.
+# optional
diff --git a/debug/org.eclipse.cdt.debug.dap/about.mappings b/debug/org.eclipse.cdt.debug.dap/about.mappings
new file mode 100644
index 00000000000..936a8039c3e
--- /dev/null
+++ b/debug/org.eclipse.cdt.debug.dap/about.mappings
@@ -0,0 +1,9 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+# The following should contain the build version.
+# e.g. "0=20200106-1728"
+# This value will be added automatically via the build scripts
+0=${buildId}
diff --git a/debug/org.eclipse.cdt.debug.dap/about.properties b/debug/org.eclipse.cdt.debug.dap/about.properties
new file mode 100644
index 00000000000..c635522333b
--- /dev/null
+++ b/debug/org.eclipse.cdt.debug.dap/about.properties
@@ -0,0 +1,32 @@
+###############################################################################
+# Copyright (c) 2019, 2022 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+# about.properties
+# contains externalized strings for about.ini
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# fill-ins are supplied by about.mappings
+# This file should be translated.
+# NOTE TO TRANSLATOR: Please do not translate the featureVersion variable.
+
+
+blurb=C/C++ Debug Adapter GDB Debugger Integration\n\
+\n\
+Version: {featureVersion}\n\
+Build id: {0}\n\
+\n\
+Copyright (c) 2019, 2022 Contributors to the Eclipse Foundation
+\n\
+See the NOTICE file(s) distributed with this work for additional\n\
+information regarding copyright ownership.\n\
+\n\
+Visit http://www.eclipse.org/cdt
diff --git a/debug/org.eclipse.cdt.debug.dap/build.properties b/debug/org.eclipse.cdt.debug.dap/build.properties
index d2d6a0408f9..687df604c68 100644
--- a/debug/org.eclipse.cdt.debug.dap/build.properties
+++ b/debug/org.eclipse.cdt.debug.dap/build.properties
@@ -4,4 +4,10 @@ bin.includes = META-INF/,\
.,\
plugin.xml,\
debug-servers/,\
- OSGI-INF/
+ OSGI-INF/,\
+ cdt_logo_icon32.png,\
+ about.properties,\
+ about.mappings,\
+ about.ini,\
+ about.html
+src.includes = about.html
diff --git a/debug/org.eclipse.cdt.debug.dap/cdt_logo_icon32.png b/debug/org.eclipse.cdt.debug.dap/cdt_logo_icon32.png
new file mode 100644
index 00000000000..470ca81b327
--- /dev/null
+++ b/debug/org.eclipse.cdt.debug.dap/cdt_logo_icon32.png
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.dap/debug-servers/package.json b/debug/org.eclipse.cdt.debug.dap/debug-servers/package.json
index f41913accfd..5c922a176ca 100644
--- a/debug/org.eclipse.cdt.debug.dap/debug-servers/package.json
+++ b/debug/org.eclipse.cdt.debug.dap/debug-servers/package.json
@@ -7,6 +7,6 @@
"license": "EPL-2.0",
"scripts": {},
"dependencies": {
- "cdt-gdb-adapter": "https://ci.eclipse.org/cdt/view/all/job/cdt-gdb-adapter-master/lastSuccessfulBuild/artifact/cdt-gdb-adapter-v0.0.14-next.tgz"
+ "cdt-gdb-adapter": "^0.0.15-next.20200103232419.2160d3c.0"
}
}
diff --git a/debug/org.eclipse.cdt.debug.dap/debug-servers/yarn.lock b/debug/org.eclipse.cdt.debug.dap/debug-servers/yarn.lock
index cf255fd8eaa..2fb72a9f654 100644
--- a/debug/org.eclipse.cdt.debug.dap/debug-servers/yarn.lock
+++ b/debug/org.eclipse.cdt.debug.dap/debug-servers/yarn.lock
@@ -2,9 +2,10 @@
# yarn lockfile v1
-"cdt-gdb-adapter@https://ci.eclipse.org/cdt/view/all/job/cdt-gdb-adapter-master/lastSuccessfulBuild/artifact/cdt-gdb-adapter-v0.0.14-next.tgz":
- version "0.0.14-next"
- resolved "https://ci.eclipse.org/cdt/view/all/job/cdt-gdb-adapter-master/lastSuccessfulBuild/artifact/cdt-gdb-adapter-v0.0.14-next.tgz#cb5a6d8509173510c311b96e2e57791ff3a20a31"
+cdt-gdb-adapter@^0.0.15-next.20200103232419.2160d3c.0:
+ version "0.0.15-next.20200103232419.2160d3c.0"
+ resolved "https://registry.yarnpkg.com/cdt-gdb-adapter/-/cdt-gdb-adapter-0.0.15-next.20200103232419.2160d3c.0.tgz#09d78b1ee83a51ca94af696912b945bfa011791e"
+ integrity sha512-5+bZT5i0+smsfCQF82eolWI8PzHgqkS4Ksq6WIEZmx5v87VCH4RuIrPbfhSG6S9uM2DAk2kK9d+aboAdb+Oh9A==
dependencies:
node-addon-api "^1.6.2"
vscode-debugadapter "^1.37.1"
diff --git a/debug/org.eclipse.cdt.debug.dap/pom.xml b/debug/org.eclipse.cdt.debug.dap/pom.xml
index 7cbc92dbf66..8917193340b 100644
--- a/debug/org.eclipse.cdt.debug.dap/pom.xml
+++ b/debug/org.eclipse.cdt.debug.dap/pom.xml
@@ -1,4 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2019, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0"
@@ -8,11 +18,11 @@
<parent>
<groupId>org.eclipse.cdt</groupId>
<artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
+ <version>10.7.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
- <version>1.1.0-SNAPSHOT</version>
+ <version>1.2.600-SNAPSHOT</version>
<artifactId>org.eclipse.cdt.debug.dap</artifactId>
<packaging>eclipse-plugin</packaging>
@@ -21,17 +31,16 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.8</version>
<executions>
<execution>
<phase>generate-sources</phase>
<configuration>
- <tasks>
+ <target>
<!-- Run yarn via ant so that we can share the same (small) xml file
for building within eclipse as with tycho -->
<ant antfile="BuildDebugServers.xml"
target="BuildDebugServers" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -39,6 +48,21 @@
</execution>
</executions>
</plugin>
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-p2-plugin</artifactId>
+ <configuration>
+ <ignoredPatterns>
+ <pattern>META-INF/ECLIPSE_.RSA</pattern>
+ <pattern>META-INF/ECLIPSE_.SF</pattern>
+ <pattern>about.mappings</pattern>
+ <pattern>debug-servers/node_modules/cdt-gdb-adapter/build/Makefile</pattern>
+ <pattern>debug-servers/node_modules/cdt-gdb-adapter/build/pty.target.mk</pattern>
+ <pattern>debug-servers/node_modules/cdt-gdb-adapter/build/Release/.deps/Release/obj.target/pty/src/native/pty.o.d</pattern>
+ </ignoredPatterns>
+ </configuration>
+ </plugin>
+
</plugins>
</build>
</project>
diff --git a/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/Activator.java b/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/Activator.java
index 983d5ec779c..bae96da22ec 100644
--- a/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/Activator.java
+++ b/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/Activator.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2019 Kichwa Coders and others.
+ * Copyright (c) 2019 Kichwa Coders Ltd and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
diff --git a/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/CDTDebugElement.java b/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/CDTDebugElement.java
index 6205e48e88d..63663b95f3a 100644
--- a/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/CDTDebugElement.java
+++ b/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/CDTDebugElement.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2019 Kichwa Coders and others.
+ * Copyright (c) 2019 Kichwa Coders Ltd and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
diff --git a/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/CDTDebugProtocol.java b/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/CDTDebugProtocol.java
index 40a74f73af1..5bfdfabec66 100644
--- a/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/CDTDebugProtocol.java
+++ b/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/CDTDebugProtocol.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2019 Kichwa Coders and others.
+ * Copyright (c) 2019 Kichwa Coders Ltd and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
diff --git a/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/DAPPreferencePage.java b/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/DAPPreferencePage.java
index 42133865809..c927dd9ddcd 100644
--- a/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/DAPPreferencePage.java
+++ b/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/DAPPreferencePage.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2019 Kichwa Coders and others.
+ * Copyright (c) 2019 Kichwa Coders Ltd and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
diff --git a/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/DapDebugTarget.java b/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/DapDebugTarget.java
index fe00ba2d9c3..82be75b0b06 100644
--- a/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/DapDebugTarget.java
+++ b/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/DapDebugTarget.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2019 Kichwa Coders and others.
+ * Copyright (c) 2019 Kichwa Coders Ltd and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
diff --git a/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/DapDisassemblyBackend.java b/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/DapDisassemblyBackend.java
index 1ee81839428..a05f1f560a1 100644
--- a/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/DapDisassemblyBackend.java
+++ b/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/DapDisassemblyBackend.java
@@ -125,7 +125,7 @@ public class DapDisassemblyBackend extends AbstractDisassemblyBackend {
int lines, boolean mixed, boolean showSymbols, boolean showDisassembly, int linesHint) {
CDTDisassembleArguments args = new CDTDisassembleArguments();
args.setMemoryReference("0x" + startAddress.toString(16)); //$NON-NLS-1$
- args.setInstructionCount((long) lines);
+ args.setInstructionCount(lines);
args.setEndMemoryReference("1+0x" + endAddress.toString(16)); //$NON-NLS-1$
CompletableFuture<DisassembleResponse> future = dspStackFrame.getDebugProtocolServer().disassemble(args);
future.thenAcceptAsync(res -> {
@@ -188,7 +188,7 @@ public class DapDisassemblyBackend extends AbstractDisassemblyBackend {
if (location != null) {
file = location.getPath();
}
- Long line = instruction.getLine();
+ Integer line = instruction.getLine();
int lineNumber = (line == null ? 0 : line.intValue()) - 1;
BigInteger address = getAddress(instruction);
if (startAddress == null) {
@@ -258,13 +258,8 @@ public class DapDisassemblyBackend extends AbstractDisassemblyBackend {
funcOffset = ""; //$NON-NLS-1$
}
- BigInteger opCodes = null;
- if (instruction.getInstructionBytes() != null) {
- opCodes = new BigInteger(instruction.getInstructionBytes().replace(" ", ""), 16); //$NON-NLS-1$//$NON-NLS-2$
- }
-
p = fCallback.getDocument().insertDisassemblyLine(p, address, instrLength.intValue(), funcOffset,
- opCodes, instruction.getInstruction(), file, lineNumber);
+ instruction.getInstructionBytes(), instruction.getInstruction(), file, lineNumber);
if (p == null) {
break;
}
diff --git a/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/DapLaunchDelegate.java b/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/DapLaunchDelegate.java
index 19eff8a437b..41f3805d941 100644
--- a/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/DapLaunchDelegate.java
+++ b/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/DapLaunchDelegate.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2019 Kichwa Coders and others.
+ * Copyright (c) 2019 Kichwa Coders Ltd and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
diff --git a/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/ICDTDebugProtocolClient.java b/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/ICDTDebugProtocolClient.java
index f2cd5de56a7..d4561400d6a 100644
--- a/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/ICDTDebugProtocolClient.java
+++ b/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/ICDTDebugProtocolClient.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2019 Kichwa Coders and others.
+ * Copyright (c) 2019 Kichwa Coders Ltd and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
diff --git a/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/ICDTDebugProtocolServer.java b/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/ICDTDebugProtocolServer.java
index 27a34f7b320..073d800afcf 100644
--- a/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/ICDTDebugProtocolServer.java
+++ b/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/ICDTDebugProtocolServer.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2019 Kichwa Coders and others.
+ * Copyright (c) 2019 Kichwa Coders Ltd and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
diff --git a/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/InitializeLaunchConfigurations.java b/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/InitializeLaunchConfigurations.java
index 7416d431a05..c5cbb6e3513 100644
--- a/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/InitializeLaunchConfigurations.java
+++ b/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/InitializeLaunchConfigurations.java
@@ -40,22 +40,22 @@ public class InitializeLaunchConfigurations {
public Optional<String> getVSCodeLocation(String appendPathSuffix) {
String res = null;
if (Platform.getOS().equals(Platform.OS_LINUX)) {
- res = "/usr/share/code";
+ res = "/usr/share/code"; //$NON-NLS-1$
} else if (Platform.getOS().equals(Platform.OS_WIN32)) {
- res = "C:/Program Files (x86)/Microsoft VS Code";
+ res = "C:/Program Files (x86)/Microsoft VS Code"; //$NON-NLS-1$
} else if (Platform.getOS().equals(Platform.OS_MACOSX)) {
- res = "/Applications/Visual Studio Code.app";
+ res = "/Applications/Visual Studio Code.app"; //$NON-NLS-1$
IPath path = new Path(appendPathSuffix);
// resources/ maps to Contents/Resources on macOS
- if (path.segmentCount() > 1 && path.segment(0).equals("resources")) {
+ if (path.segmentCount() > 1 && path.segment(0).equals("resources")) { //$NON-NLS-1$
path = path.removeFirstSegments(1);
- appendPathSuffix = new Path("/Contents/Resources").append(path).toOSString();
+ appendPathSuffix = new Path("/Contents/Resources").append(path).toOSString(); //$NON-NLS-1$
}
}
if (res != null && new File(res).isDirectory()) {
- if (res.contains(" ") && Platform.getOS().equals(Platform.OS_WIN32)) {
- return Optional.of("\"" + res + appendPathSuffix + "\"");
+ if (res.contains(" ") && Platform.getOS().equals(Platform.OS_WIN32)) { //$NON-NLS-1$
+ return Optional.of("\"" + res + appendPathSuffix + "\""); //$NON-NLS-1$ //$NON-NLS-2$
}
return Optional.of(res + appendPathSuffix);
}
@@ -64,16 +64,16 @@ public class InitializeLaunchConfigurations {
public Optional<String> getNodeJsLocation() {
{
- String nodeJsLocation = System.getProperty("org.eclipse.wildwebdeveloper.nodeJSLocation");
+ String nodeJsLocation = System.getProperty("org.eclipse.wildwebdeveloper.nodeJSLocation"); //$NON-NLS-1$
if (nodeJsLocation != null && Files.exists(Paths.get(nodeJsLocation))) {
return Optional.of(nodeJsLocation);
}
}
- String res = "/path/to/node";
- String[] command = new String[] { "/bin/bash", "-c", "which node" };
+ String res = "/path/to/node"; //$NON-NLS-1$
+ String[] command = new String[] { "/bin/bash", "-c", "which node" }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
if (Platform.getOS().equals(Platform.OS_WIN32)) {
- command = new String[] { "cmd", "/c", "where node" };
+ command = new String[] { "cmd", "/c", "where node" }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
}
try (BufferedReader reader = new BufferedReader(
@@ -86,7 +86,7 @@ public class InitializeLaunchConfigurations {
// Try default install path as last resort
if (res == null && Platform.getOS().equals(Platform.OS_MACOSX)) {
- res = "/usr/local/bin/node";
+ res = "/usr/local/bin/node"; //$NON-NLS-1$
}
if (res != null && Files.exists(Paths.get(res))) {
diff --git a/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/MemoryBlock.java b/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/MemoryBlock.java
index 3a0c22d604e..11275752658 100644
--- a/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/MemoryBlock.java
+++ b/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/MemoryBlock.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2019 Kichwa Coders and others.
+ * Copyright (c) 2019 Kichwa Coders Ltd and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -136,7 +136,7 @@ public class MemoryBlock extends CDTDebugElement implements IMemoryBlockExtensio
@Override
public MemoryByte[] getBytesFromAddress(BigInteger address, long units) throws DebugException {
MemoryRequestArguments memoryRequestArguments = new MemoryRequestArguments();
- memoryRequestArguments.setAddress("0x" + address.toString(16));
+ memoryRequestArguments.setAddress("0x" + address.toString(16)); //$NON-NLS-1$
memoryRequestArguments.setLength(units);
CompletableFuture<MemoryContents> memory = getDebugProtocolServer().memory(memoryRequestArguments);
MemoryContents body = complete(memory);
diff --git a/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/Messages.java b/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/Messages.java
index e1f015f8690..0f7e663a362 100644
--- a/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/Messages.java
+++ b/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/Messages.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2019 Kichwa Coders and others.
+ * Copyright (c) 2019 Kichwa Coders Ltd and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
diff --git a/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/Messages.properties b/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/Messages.properties
index e6377fca215..9597ff4483b 100644
--- a/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/Messages.properties
+++ b/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/Messages.properties
@@ -1,5 +1,5 @@
################################################################################
-# Copyright (c) 2019 Kichwa Coders and others.
+# Copyright (c) 2019 Kichwa Coders Ltd and others.
#
# This program and the accompanying materials
# are made available under the terms of the Eclipse Public License 2.0
diff --git a/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/PreferenceConstants.java b/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/PreferenceConstants.java
index 3afad460569..76314e0dfe3 100644
--- a/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/PreferenceConstants.java
+++ b/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/PreferenceConstants.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2019 Kichwa Coders and others.
+ * Copyright (c) 2019 Kichwa Coders Ltd and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
diff --git a/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/PreferenceInitializer.java b/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/PreferenceInitializer.java
index 16a669361c5..959a2320139 100644
--- a/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/PreferenceInitializer.java
+++ b/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/PreferenceInitializer.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2019 Kichwa Coders and others.
+ * Copyright (c) 2019 Kichwa Coders Ltd and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
diff --git a/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/tabs/CArgumentsTab.java b/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/tabs/CArgumentsTab.java
index f6aeb10898f..533176c77b5 100644
--- a/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/tabs/CArgumentsTab.java
+++ b/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/tabs/CArgumentsTab.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2019 Kichwa Coders and others.
+ * Copyright (c) 2019 Kichwa Coders Ltd and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
diff --git a/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/tabs/CMainTab.java b/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/tabs/CMainTab.java
index 8d8fe3ca75e..9a92d191d98 100644
--- a/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/tabs/CMainTab.java
+++ b/debug/org.eclipse.cdt.debug.dap/src/org/eclipse/cdt/debug/dap/tabs/CMainTab.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2019 Kichwa Coders and others.
+ * Copyright (c) 2019 Kichwa Coders Ltd and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
diff --git a/debug/org.eclipse.cdt.debug.standalone-feature/.settings/org.eclipse.core.resources.prefs b/debug/org.eclipse.cdt.debug.standalone-feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/debug/org.eclipse.cdt.debug.standalone-feature/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/debug/org.eclipse.cdt.debug.standalone-feature/feature.xml b/debug/org.eclipse.cdt.debug.standalone-feature/feature.xml
index e32e4cb5109..9bc7bbdbeae 100644
--- a/debug/org.eclipse.cdt.debug.standalone-feature/feature.xml
+++ b/debug/org.eclipse.cdt.debug.standalone-feature/feature.xml
@@ -1,9 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2014, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<feature
id="org.eclipse.cdt.debug.standalone"
label="%featureName"
- version="9.10.0.qualifier"
+ version="10.7.0.qualifier"
provider-name="%providerName"
+ plugin="org.eclipse.cdt.debug.application"
license-feature="org.eclipse.license"
license-feature-version="0.0.0">
diff --git a/debug/org.eclipse.cdt.debug.ui/.classpath b/debug/org.eclipse.cdt.debug.ui/.classpath
index 22f30643cba..e801ebfb468 100644
--- a/debug/org.eclipse.cdt.debug.ui/.classpath
+++ b/debug/org.eclipse.cdt.debug.ui/.classpath
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/debug/org.eclipse.cdt.debug.ui/.settings/org.eclipse.core.resources.prefs b/debug/org.eclipse.cdt.debug.ui/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/debug/org.eclipse.cdt.debug.ui/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/debug/org.eclipse.cdt.debug.ui/.settings/org.eclipse.jdt.core.prefs b/debug/org.eclipse.cdt.debug.ui/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/debug/org.eclipse.cdt.debug.ui/.settings/org.eclipse.jdt.core.prefs
+++ b/debug/org.eclipse.cdt.debug.ui/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/debug/org.eclipse.cdt.debug.ui/.settings/org.eclipse.jdt.ui.prefs b/debug/org.eclipse.cdt.debug.ui/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/debug/org.eclipse.cdt.debug.ui/.settings/org.eclipse.jdt.ui.prefs
+++ b/debug/org.eclipse.cdt.debug.ui/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/debug/org.eclipse.cdt.debug.ui/META-INF/MANIFEST.MF b/debug/org.eclipse.cdt.debug.ui/META-INF/MANIFEST.MF
index 69cff113b32..c0ef2382d59 100644
--- a/debug/org.eclipse.cdt.debug.ui/META-INF/MANIFEST.MF
+++ b/debug/org.eclipse.cdt.debug.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.debug.ui; singleton:=true
-Bundle-Version: 8.3.300.qualifier
+Bundle-Version: 8.4.500.qualifier
Bundle-Activator: org.eclipse.cdt.debug.ui.CDebugUIPlugin
Bundle-Vendor: %providerName
Bundle-Localization: plugin
@@ -50,8 +50,8 @@ Require-Bundle: org.eclipse.ui.ide;bundle-version="[3.16.0,4.0.0)",
org.eclipse.debug.ui;bundle-version="[3.7.0,4.0.0)",
org.eclipse.debug.core;bundle-version="[3.7.0,4.0.0)",
org.eclipse.cdt.debug.core;bundle-version="[7.0.0,9.0.0)",
- org.eclipse.cdt.ui;bundle-version="[6.0.0,7.0.0)",
- org.eclipse.cdt.core;bundle-version="[5.0.0,7.0.0)",
+ org.eclipse.cdt.ui;bundle-version="[7.0.0,8.0.0)",
+ org.eclipse.cdt.core;bundle-version="[7.0.0,8.0.0)",
org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)",
org.eclipse.ui.console;bundle-version="[3.1.100,4.0.0)",
org.eclipse.ui.views;bundle-version="[3.2.0,4.0.0)",
@@ -60,6 +60,5 @@ Require-Bundle: org.eclipse.ui.ide;bundle-version="[3.16.0,4.0.0)",
org.eclipse.launchbar.core;bundle-version="2.0.0",
org.eclipse.launchbar.ui;bundle-version="2.0.0"
Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Import-Package: com.ibm.icu.text
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Automatic-Module-Name: org.eclipse.cdt.debug.ui
diff --git a/debug/org.eclipse.cdt.debug.ui/about.html b/debug/org.eclipse.cdt.debug.ui/about.html
index 164f781a8fd..b3134865230 100644
--- a/debug/org.eclipse.cdt.debug.ui/about.html
+++ b/debug/org.eclipse.cdt.debug.ui/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/debug/org.eclipse.cdt.debug.ui/icons/obj16/arraypartition_obj.gif b/debug/org.eclipse.cdt.debug.ui/icons/obj16/arraypartition_obj.gif
index 052915a19b0..052915a19b0 100755..100644
--- a/debug/org.eclipse.cdt.debug.ui/icons/obj16/arraypartition_obj.gif
+++ b/debug/org.eclipse.cdt.debug.ui/icons/obj16/arraypartition_obj.gif
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.ui/icons/obj16/connect.gif b/debug/org.eclipse.cdt.debug.ui/icons/obj16/connect.gif
index 866ad338250..866ad338250 100755..100644
--- a/debug/org.eclipse.cdt.debug.ui/icons/obj16/connect.gif
+++ b/debug/org.eclipse.cdt.debug.ui/icons/obj16/connect.gif
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.ui/icons/obj16/new_exec.gif b/debug/org.eclipse.cdt.debug.ui/icons/obj16/new_exec.gif
index 78ca91c6dab..78ca91c6dab 100755..100644
--- a/debug/org.eclipse.cdt.debug.ui/icons/obj16/new_exec.gif
+++ b/debug/org.eclipse.cdt.debug.ui/icons/obj16/new_exec.gif
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.ui/icons/obj16/reverse_stepinto.gif b/debug/org.eclipse.cdt.debug.ui/icons/obj16/reverse_stepinto.gif
index bda91578236..bda91578236 100755..100644
--- a/debug/org.eclipse.cdt.debug.ui/icons/obj16/reverse_stepinto.gif
+++ b/debug/org.eclipse.cdt.debug.ui/icons/obj16/reverse_stepinto.gif
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.ui/icons/obj16/reverse_stepover.gif b/debug/org.eclipse.cdt.debug.ui/icons/obj16/reverse_stepover.gif
index 95ea1f0496c..95ea1f0496c 100755..100644
--- a/debug/org.eclipse.cdt.debug.ui/icons/obj16/reverse_stepover.gif
+++ b/debug/org.eclipse.cdt.debug.ui/icons/obj16/reverse_stepover.gif
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.ui/icons/obj16/uncall.gif b/debug/org.eclipse.cdt.debug.ui/icons/obj16/uncall.gif
index 8e7a780a358..8e7a780a358 100755..100644
--- a/debug/org.eclipse.cdt.debug.ui/icons/obj16/uncall.gif
+++ b/debug/org.eclipse.cdt.debug.ui/icons/obj16/uncall.gif
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.ui/plugin.xml b/debug/org.eclipse.cdt.debug.ui/plugin.xml
index 581779100d7..7b25f2e2330 100644
--- a/debug/org.eclipse.cdt.debug.ui/plugin.xml
+++ b/debug/org.eclipse.cdt.debug.ui/plugin.xml
@@ -1029,6 +1029,7 @@
contextId="org.eclipse.cdt.debug.ui.debugging">
</contextViewBinding>
<contextViewBinding
+ autoOpen="false"
contextId="org.eclipse.cdt.debug.ui.debugging"
viewId="org.eclipse.debug.ui.ModuleView"/>
<contextViewBinding
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDebugModelPresentation.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDebugModelPresentation.java
index 50f266f578a..b0394099517 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDebugModelPresentation.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDebugModelPresentation.java
@@ -20,6 +20,7 @@ package org.eclipse.cdt.debug.internal.ui;
import java.io.File;
import java.net.URI;
+import java.text.MessageFormat;
import java.util.HashMap;
import org.eclipse.cdt.core.IAddress;
@@ -97,8 +98,6 @@ import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.ide.IDE;
import org.eclipse.ui.part.FileEditorInput;
-import com.ibm.icu.text.MessageFormat;
-
/**
* @see IDebugModelPresentation
*/
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDebugUIUtils.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDebugUIUtils.java
index 6feaf454d8b..5ef48c06058 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDebugUIUtils.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDebugUIUtils.java
@@ -15,6 +15,7 @@
package org.eclipse.cdt.debug.internal.ui;
import java.net.URI;
+import java.text.MessageFormat;
import java.util.Iterator;
import org.eclipse.cdt.debug.core.model.ICBreakpoint;
@@ -23,7 +24,6 @@ import org.eclipse.cdt.debug.core.model.ICStackFrame;
import org.eclipse.cdt.debug.core.model.ICType;
import org.eclipse.cdt.debug.core.model.ICValue;
import org.eclipse.cdt.debug.core.model.IEnableDisableTarget;
-import org.eclipse.cdt.debug.ui.CDebugUIPlugin;
import org.eclipse.cdt.debug.ui.breakpoints.CBreakpointPropertyDialogAction;
import org.eclipse.core.filesystem.URIUtil;
import org.eclipse.core.resources.IMarker;
@@ -62,12 +62,11 @@ import org.eclipse.ui.IPathEditorInput;
import org.eclipse.ui.IStorageEditorInput;
import org.eclipse.ui.IURIEditorInput;
import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.progress.UIJob;
import org.eclipse.ui.texteditor.ITextEditor;
import org.eclipse.ui.texteditor.SimpleMarkerAnnotation;
-import com.ibm.icu.text.MessageFormat;
-
/**
* Utility methods for C/C++ Debug UI.
*/
@@ -252,7 +251,7 @@ public class CDebugUIUtils {
if (e != null)
detail = e.getMessage();
- Shell shell = CDebugUIPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getShell();
+ Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
MessageDialog.openError(shell, title, message + "\n" + detail); //$NON-NLS-1$
return Status.OK_STATUS;
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/RegisterGroupDialog.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/RegisterGroupDialog.java
index 31e8a8b2818..a1747e414c4 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/RegisterGroupDialog.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/RegisterGroupDialog.java
@@ -13,6 +13,7 @@
*******************************************************************************/
package org.eclipse.cdt.debug.internal.ui.actions;
+import java.text.MessageFormat;
import java.util.Arrays;
import java.util.List;
@@ -40,8 +41,6 @@ import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.PlatformUI;
-import com.ibm.icu.text.MessageFormat;
-
/**
* This dialog is used to add/edit user-defined register groups.
*/
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/breakpoints/CBreakpointContext.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/breakpoints/CBreakpointContext.java
index 65dfd80d2c3..ca1b5e13df1 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/breakpoints/CBreakpointContext.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/breakpoints/CBreakpointContext.java
@@ -184,8 +184,8 @@ class CBreakpointContextWorkbenchAdapter implements IWorkbenchAdapter {
@Override
public String getLabel(Object o) {
if (o instanceof ICBreakpointContext) {
- ICBreakpoint bp = ((ICBreakpointContext) o).getBreakpoint();
- return getBreakpointMainLabel(bp);
+ ICBreakpointContext context = (ICBreakpointContext) o;
+ return getBreakpointMainLabel(context.getBreakpoint(), context);
}
return ""; //$NON-NLS-1$
}
@@ -205,7 +205,7 @@ class CBreakpointContextWorkbenchAdapter implements IWorkbenchAdapter {
return null;
}
- private String getBreakpointMainLabel(ICBreakpoint breakpoint) {
+ private String getBreakpointMainLabel(ICBreakpoint breakpoint, ICBreakpointContext o) {
if (breakpoint instanceof ICFunctionBreakpoint) {
if (breakpoint instanceof ICTracepoint) {
return BreakpointsMessages.getString("TracepointPropertyPage.tracepointType_function_label"); //$NON-NLS-1$
@@ -233,6 +233,21 @@ class CBreakpointContextWorkbenchAdapter implements IWorkbenchAdapter {
} else if (breakpoint instanceof ICEventBreakpoint) {
return BreakpointsMessages.getString("CBreakpointPropertyPage.breakpointType_event_label"); //$NON-NLS-1$
} else if (breakpoint instanceof ICWatchpoint) {
+ if (breakpoint.getMarker() != null) {
+ // For an existing breakpoint, calculate watchpoint label based
+ // on read/write type.
+ boolean isReadType = o.getPreferenceStore().getBoolean(ICWatchpoint.READ);
+ boolean isWriteType = o.getPreferenceStore().getBoolean(ICWatchpoint.WRITE);
+ if (isReadType && !isWriteType) {
+ return BreakpointsMessages
+ .getString("CBreakpointPropertyPage.breakpointType_watchpoint_read_label"); //$NON-NLS-1$
+ } else if (!isReadType && isWriteType) {
+ return BreakpointsMessages.getString("CBreakpointPropertyPage.breakpointType_watchpoint_label"); //$NON-NLS-1$
+ } else {
+ return BreakpointsMessages
+ .getString("CBreakpointPropertyPage.breakpointType_watchpoint_access_label"); //$NON-NLS-1$
+ }
+ }
return BreakpointsMessages.getString("CBreakpointPropertyPage.breakpointType_watchpoint_label"); //$NON-NLS-1$
}
// default main label is the label of marker type for the breakpoint
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/breakpoints/CBreakpointPropertyPage.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/breakpoints/CBreakpointPropertyPage.java
index 7a4591690db..ec2ef128755 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/breakpoints/CBreakpointPropertyPage.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/breakpoints/CBreakpointPropertyPage.java
@@ -650,20 +650,6 @@ public class CBreakpointPropertyPage extends FieldEditorPreferencePage implement
}
private String getBreakpointMainLabel(ICBreakpoint breakpoint) {
- if (breakpoint instanceof ICWatchpoint && breakpoint.getMarker() != null) {
- // For an existing breakpoint, calculate watchpoint label based
- // on read/write type.
- boolean isReadType = getPreferenceStore().getBoolean(ICWatchpoint.READ);
- boolean isWriteType = getPreferenceStore().getBoolean(ICWatchpoint.WRITE);
- if (isReadType && !isWriteType) {
- return BreakpointsMessages.getString("CBreakpointPropertyPage.breakpointType_watchpoint_read_label"); //$NON-NLS-1$
- } else if (!isReadType && isWriteType) {
- return BreakpointsMessages.getString("CBreakpointPropertyPage.breakpointType_watchpoint_label"); //$NON-NLS-1$
- } else {
- return BreakpointsMessages.getString("CBreakpointPropertyPage.breakpointType_watchpoint_access_label"); //$NON-NLS-1$
- }
- }
-
IWorkbenchAdapter labelProvider = getElement().getAdapter(IWorkbenchAdapter.class);
if (labelProvider != null) {
return labelProvider.getLabel(getElement());
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/dialogfields/ListDialogField.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/dialogfields/ListDialogField.java
index af950d427ce..4a68ee7c125 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/dialogfields/ListDialogField.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/dialogfields/ListDialogField.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2005, 2018 IBM Corporation and others.
+ * Copyright (c) 2005, 2020 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -10,6 +10,7 @@
*
* Contributors:
* IBM Corporation - initial API and implementation
+ * Alexander Fedorov (ArSysOp) - Bug 567966
*******************************************************************************/
package org.eclipse.cdt.debug.internal.ui.dialogfields;
@@ -45,15 +46,16 @@ import org.eclipse.swt.widgets.Table;
/**
* A list with a button bar.
* Typical buttons are 'Add', 'Remove', 'Up' and 'Down'.
- * List model is independend of widget creation.
+ * List model is independent of widget creation.
* DialogFields controls are: Label, List and Composite containing buttons.
*/
-public class ListDialogField extends DialogField {
+//FIXME: Mostly duplicates org.eclipse.cdt.internal.ui.wizards.dialogfields.ListDialogField
+public class ListDialogField<T> extends DialogField {
protected TableViewer fTable;
protected ILabelProvider fLabelProvider;
protected ListViewerAdapter fListViewerAdapter;
- protected List fElements;
+ protected List<T> fElements;
protected ViewerComparator fViewerComparator;
protected String[] fButtonLabels;
@@ -90,7 +92,7 @@ public class ListDialogField extends DialogField {
fListViewerAdapter = new ListViewerAdapter();
fParentElement = this;
- fElements = new ArrayList(10);
+ fElements = new ArrayList<>(10);
fButtonLabels = buttonLabels;
if (fButtonLabels != null) {
@@ -442,8 +444,8 @@ public class ListDialogField extends DialogField {
/**
* Sets the elements shown in the list.
*/
- public void setElements(List elements) {
- fElements = new ArrayList(elements);
+ public void setElements(List<? extends T> elements) {
+ fElements = new ArrayList<>(elements);
if (fTable != null) {
fTable.refresh();
}
@@ -454,8 +456,8 @@ public class ListDialogField extends DialogField {
* Gets the elements shown in the list.
* The list returned is a copy, so it can be modified by the user.
*/
- public List getElements() {
- return new ArrayList(fElements);
+ public List<? extends Object> getElements() {
+ return new ArrayList<>(fElements);
}
/**
@@ -468,7 +470,7 @@ public class ListDialogField extends DialogField {
/**
* Replace an element.
*/
- public void replaceElement(Object oldElement, Object newElement) throws IllegalArgumentException {
+ public void replaceElement(T oldElement, T newElement) throws IllegalArgumentException {
int idx = fElements.indexOf(oldElement);
if (idx != -1) {
if (oldElement.equals(newElement) || fElements.contains(newElement)) {
@@ -476,7 +478,7 @@ public class ListDialogField extends DialogField {
}
fElements.set(idx, newElement);
if (fTable != null) {
- List selected = getSelectedElements();
+ List<T> selected = getSelectedElements();
if (selected.remove(oldElement)) {
selected.add(newElement);
}
@@ -492,7 +494,7 @@ public class ListDialogField extends DialogField {
/**
* Adds an element at the end of the list.
*/
- public void addElement(Object element) {
+ public void addElement(T element) {
if (fElements.contains(element)) {
return;
}
@@ -506,15 +508,15 @@ public class ListDialogField extends DialogField {
/**
* Adds elements at the end of the list.
*/
- public void addElements(List elements) {
+ public void addElements(List<? extends T> elements) {
int nElements = elements.size();
if (nElements > 0) {
// filter duplicated
- ArrayList elementsToAdd = new ArrayList(nElements);
+ ArrayList<T> elementsToAdd = new ArrayList<>(nElements);
for (int i = 0; i < nElements; i++) {
- Object elem = elements.get(i);
+ T elem = elements.get(i);
if (!fElements.contains(elem)) {
elementsToAdd.add(elem);
}
@@ -530,7 +532,7 @@ public class ListDialogField extends DialogField {
/**
* Adds an element at a position.
*/
- public void insertElementAt(Object element, int index) {
+ public void insertElementAt(T element, int index) {
if (fElements.contains(element)) {
return;
}
@@ -572,7 +574,7 @@ public class ListDialogField extends DialogField {
/**
* Removes elements from the list.
*/
- public void removeElements(List elements) {
+ public void removeElements(List<? extends Object> elements) {
if (elements.size() > 0) {
fElements.removeAll(elements);
if (fTable != null) {
@@ -634,12 +636,12 @@ public class ListDialogField extends DialogField {
// ------- list maintenance
- private List moveUp(List elements, List move) {
+ private List<T> moveUp(List<? extends T> elements, List<? extends T> move) {
int nElements = elements.size();
- List res = new ArrayList(nElements);
- Object floating = null;
+ List<T> res = new ArrayList<>(nElements);
+ T floating = null;
for (int i = 0; i < nElements; i++) {
- Object curr = elements.get(i);
+ T curr = elements.get(i);
if (move.contains(curr)) {
res.add(curr);
} else {
@@ -655,22 +657,22 @@ public class ListDialogField extends DialogField {
return res;
}
- private void moveUp(List toMoveUp) {
+ private void moveUp(List<? extends T> toMoveUp) {
if (toMoveUp.size() > 0) {
setElements(moveUp(fElements, toMoveUp));
fTable.reveal(toMoveUp.get(0));
}
}
- private void moveDown(List toMoveDown) {
+ private void moveDown(List<? extends T> toMoveDown) {
if (toMoveDown.size() > 0) {
setElements(reverse(moveUp(reverse(fElements), toMoveDown)));
fTable.reveal(toMoveDown.get(toMoveDown.size() - 1));
}
}
- private List reverse(List p) {
- List reverse = new ArrayList(p.size());
+ private List<T> reverse(List<? extends T> p) {
+ List<T> reverse = new ArrayList<>(p.size());
for (int i = p.size() - 1; i >= 0; i--) {
reverse.add(p.get(i));
}
@@ -717,15 +719,14 @@ public class ListDialogField extends DialogField {
/**
* Returns the selected elements.
*/
- public List getSelectedElements() {
- List result = new ArrayList();
+ public List<T> getSelectedElements() {
+ List<T> result = new ArrayList<>();
if (fTable != null) {
- ISelection selection = fTable.getSelection();
- if (selection instanceof IStructuredSelection) {
- Iterator iter = ((IStructuredSelection) selection).iterator();
- while (iter.hasNext()) {
- result.add(iter.next());
- }
+ IStructuredSelection selection = fTable.getStructuredSelection();
+ @SuppressWarnings("unchecked")
+ Iterator<T> iter = selection.iterator();
+ while (iter.hasNext()) {
+ result.add(iter.next());
}
}
return result;
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/disassembly/commands/SetSteppingModeHandler.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/disassembly/commands/SetSteppingModeHandler.java
index e2150a37958..2afece5d6fb 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/disassembly/commands/SetSteppingModeHandler.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/disassembly/commands/SetSteppingModeHandler.java
@@ -19,7 +19,6 @@ import java.util.Map;
import org.eclipse.cdt.debug.core.CDebugCorePlugin;
import org.eclipse.cdt.debug.core.ICDebugConstants;
import org.eclipse.cdt.debug.core.model.ISteppingModeTarget;
-import org.eclipse.cdt.debug.ui.CDebugUIPlugin;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
@@ -28,6 +27,7 @@ import org.eclipse.debug.ui.DebugUITools;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.commands.ICommandService;
import org.eclipse.ui.commands.IElementUpdater;
import org.eclipse.ui.handlers.HandlerUtil;
@@ -84,7 +84,7 @@ public class SetSteppingModeHandler extends AbstractHandler implements IElementU
*/
@Override
public boolean isEnabled() {
- IWorkbenchWindow window = CDebugUIPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow();
+ IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
return (window != null && getSteppingModeTarget(window) != null);
}
@@ -93,7 +93,7 @@ public class SetSteppingModeHandler extends AbstractHandler implements IElementU
*/
@Override
public boolean isHandled() {
- IWorkbenchWindow window = CDebugUIPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow();
+ IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
return (window != null && getSteppingModeTarget(window) != null);
}
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/disassembly/dsf/DisassemblyPosition.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/disassembly/dsf/DisassemblyPosition.java
index 0c52fe8d6d0..369bede7956 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/disassembly/dsf/DisassemblyPosition.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/disassembly/dsf/DisassemblyPosition.java
@@ -21,7 +21,10 @@ import java.math.BigInteger;
public class DisassemblyPosition extends AddressRangePosition {
public char[] fFunction;
- public BigInteger fOpcodes;
+ /**
+ * String of opcodes as it will be displayed to users. Can be null which is handled the same as empty string.
+ */
+ public String fRawOpcode;
/**
* @param offset
@@ -29,12 +32,12 @@ public class DisassemblyPosition extends AddressRangePosition {
* @param addressOffset
* @param addressLength
* @param functionOffset
- * @param opcodes
+ * @param rawOpcode String of opcodes as it will be displayed to users. Can be null which is handled the same as empty string.
*/
public DisassemblyPosition(int offset, int length, BigInteger addressOffset, BigInteger addressLength,
- String functionOffset, BigInteger opcodes) {
+ String functionOffset, String rawOpcode) {
super(offset, length, addressOffset, addressLength);
- fOpcodes = opcodes;
+ fRawOpcode = rawOpcode;
fFunction = functionOffset.toCharArray();
}
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/disassembly/dsf/IDisassemblyBackend.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/disassembly/dsf/IDisassemblyBackend.java
index e2aec17959e..dd4b8db4f4f 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/disassembly/dsf/IDisassemblyBackend.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/disassembly/dsf/IDisassemblyBackend.java
@@ -218,4 +218,10 @@ public interface IDisassemblyBackend {
* @return the last know address, -1 if unknown
*/
BigInteger getLastKnownAddress();
+
+ /**
+ * Requests that the backend clear any caches that it has so that refresh operations obtain fresh data.
+ */
+ default void clearCaches() {
+ }
}
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/disassembly/dsf/IDisassemblyDocument.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/disassembly/dsf/IDisassemblyDocument.java
index f91d1d49f7f..0e2488d5700 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/disassembly/dsf/IDisassemblyDocument.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/disassembly/dsf/IDisassemblyDocument.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010, 2012 Wind River Systems, Inc. and others.
+ * Copyright (c) 2010, 2021 Wind River Systems, Inc. and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -20,8 +20,9 @@ import java.math.BigInteger;
import org.eclipse.jface.text.BadLocationException;
/**
- * DSF Disassembly view backends (CDI and DSF) need this limited access to the
- * editor/view Document.
+ * Disassembly view backends need this limited access to the
+ * editor/view Document. The known backends are DSF, TCF and Dap. Formerly
+ * the CDI backend used it before it was removed from the CDT soure tree.
*/
public interface IDisassemblyDocument {
@@ -34,8 +35,18 @@ public interface IDisassemblyDocument {
String functionOffset, String instruction, String compilationPath, int lineNumber)
throws BadLocationException;
+ /**
+ * This method. that takes opcode as a Byte[] exists solely for TCF integration.
+ */
AddressRangePosition insertDisassemblyLine(AddressRangePosition p, BigInteger address, int length,
- String functionOffset, BigInteger opcode, String instruction, String compilationPath, int lineNumber)
+ String functionOffset, Byte[] opcode, String instruction, String compilationPath, int lineNumber)
+ throws BadLocationException;
+
+ /**
+ * @param rawOpcode String of opcodes as it will be displayed to users. Can be null which is handled the same as empty string.
+ */
+ AddressRangePosition insertDisassemblyLine(AddressRangePosition p, BigInteger address, int length,
+ String functionOffset, String rawOpcode, String instruction, String compilationPath, int lineNumber)
throws BadLocationException;
AddressRangePosition getDisassemblyPosition(BigInteger address);
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/disassembly/dsf/IDisassemblyPartCallback.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/disassembly/dsf/IDisassemblyPartCallback.java
index 15b90547bcd..1f3a90fbe60 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/disassembly/dsf/IDisassemblyPartCallback.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/disassembly/dsf/IDisassemblyPartCallback.java
@@ -105,4 +105,9 @@ public interface IDisassemblyPartCallback {
/** Thread-safe */
void asyncExec(Runnable runnable);
+
+ /**
+ * Refreshes associated Disassembly part.
+ * Thread-safe */
+ void refresh();
}
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/disassembly/editor/DisassemblyEditorManager.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/disassembly/editor/DisassemblyEditorManager.java
index b9f81e2200a..7eae59c2e08 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/disassembly/editor/DisassemblyEditorManager.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/disassembly/editor/DisassemblyEditorManager.java
@@ -44,6 +44,7 @@ import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.IWorkbenchPartReference;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.ide.IDE;
import org.eclipse.ui.progress.UIJob;
@@ -59,8 +60,8 @@ public class DisassemblyEditorManager implements IWindowListener, IDisassemblyCo
fEditorParts = new HashMap<>();
fOpenDisassemblyPolicy = new HashMap<>();
fSteppingModePolicy = new HashMap<>();
- CDebugUIPlugin.getDefault().getWorkbench().addWindowListener(this);
- IWorkbenchWindow window = CDebugUIPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow();
+ PlatformUI.getWorkbench().addWindowListener(this);
+ IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
if (window != null) {
window.getPartService().addPartListener(this);
}
@@ -69,7 +70,7 @@ public class DisassemblyEditorManager implements IWindowListener, IDisassemblyCo
public void dispose() {
getDisassemblyManager().removeDisassemblyContextListener(this);
- CDebugUIPlugin.getDefault().getWorkbench().removeWindowListener(this);
+ PlatformUI.getWorkbench().removeWindowListener(this);
fSteppingModePolicy.clear();
fOpenDisassemblyPolicy.clear();
fEditorParts.clear();
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/launch/LaunchMessages.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/launch/LaunchMessages.java
index b1ad4ec1d2b..dd67b89a4b5 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/launch/LaunchMessages.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/launch/LaunchMessages.java
@@ -13,11 +13,10 @@
*******************************************************************************/
package org.eclipse.cdt.debug.internal.ui.launch;
+import java.text.MessageFormat;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
-import com.ibm.icu.text.MessageFormat;
-
public class LaunchMessages {
private static final String BUNDLE_NAME = "org.eclipse.cdt.debug.internal.ui.launch.LaunchMessages";//$NON-NLS-1$
private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle(BUNDLE_NAME);
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/preferences/CDebugPreferencePage.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/preferences/CDebugPreferencePage.java
index 957c2006927..0b54f3e478d 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/preferences/CDebugPreferencePage.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/preferences/CDebugPreferencePage.java
@@ -50,6 +50,7 @@ import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchPreferencePage;
import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.ide.dialogs.EncodingFieldEditor;
import org.osgi.service.prefs.BackingStoreException;
@@ -330,7 +331,7 @@ public class CDebugPreferencePage extends PreferencePage implements IWorkbenchPr
private void refreshViews() {
BusyIndicator.showWhile(getShell().getDisplay(), () -> {
// Refresh interested views
- IWorkbenchWindow[] windows = CDebugUIPlugin.getDefault().getWorkbench().getWorkbenchWindows();
+ IWorkbenchWindow[] windows = PlatformUI.getWorkbench().getWorkbenchWindows();
IWorkbenchPage page = null;
for (int i = 0; i < windows.length; i++) {
page = windows[i].getActivePage();
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/propertypages/SignalPropertyPage.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/propertypages/SignalPropertyPage.java
index 7835a949a60..8681ef57c0a 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/propertypages/SignalPropertyPage.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/propertypages/SignalPropertyPage.java
@@ -13,6 +13,8 @@
*******************************************************************************/
package org.eclipse.cdt.debug.internal.ui.propertypages;
+import java.text.MessageFormat;
+
import org.eclipse.cdt.debug.core.CDIDebugModel;
import org.eclipse.cdt.debug.core.CDebugUtils;
import org.eclipse.cdt.debug.core.model.ICSignal;
@@ -33,8 +35,6 @@ import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.ui.dialogs.PropertyPage;
-import com.ibm.icu.text.MessageFormat;
-
/**
* The property page for a signal.
*/
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/executables/ExecutablesContentProvider.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/executables/ExecutablesContentProvider.java
index 0898e7d8ac6..3c21bd389b6 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/executables/ExecutablesContentProvider.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/executables/ExecutablesContentProvider.java
@@ -14,6 +14,7 @@
package org.eclipse.cdt.debug.internal.ui.views.executables;
+import java.text.DateFormat;
import java.util.Date;
import java.util.List;
@@ -31,8 +32,6 @@ import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.viewers.ViewerCell;
import org.eclipse.ui.progress.WorkbenchJob;
-import com.ibm.icu.text.DateFormat;
-
class ExecutablesContentProvider extends ColumnLabelProvider
implements ITreeContentProvider, IExecutablesChangeListener {
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/executables/SourceFilesLabelProvider.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/executables/SourceFilesLabelProvider.java
index c3581dfa31c..e8cf86d07b5 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/executables/SourceFilesLabelProvider.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/executables/SourceFilesLabelProvider.java
@@ -14,6 +14,7 @@
package org.eclipse.cdt.debug.internal.ui.views.executables;
+import java.text.DateFormat;
import java.util.Date;
import java.util.List;
@@ -33,8 +34,6 @@ import org.eclipse.swt.events.DisposeListener;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.widgets.Display;
-import com.ibm.icu.text.DateFormat;
-
public class SourceFilesLabelProvider extends TreeColumnViewerLabelProvider implements IExecutablesChangeListener {
private SourceFilesViewer viewer;
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/memory/AddMemoryBlocks.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/memory/AddMemoryBlocks.java
index 7a9ac604b80..5bda278e2e8 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/memory/AddMemoryBlocks.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/memory/AddMemoryBlocks.java
@@ -51,6 +51,7 @@ import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.IViewSite;
import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.progress.UIJob;
/**
@@ -174,7 +175,7 @@ public class AddMemoryBlocks implements IAddMemoryBlocksTarget {
private void doAddMemoryBlocks(final IMemoryRenderingSite renderingSite, final Object context,
final IMemorySpaceAwareMemoryBlockRetrieval retrieval, String[] memorySpaces) {
- Shell shell = CDebugUIPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getShell();
+ Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
// create dialog to ask for expression/address to block
AddMemoryBlockDialog dialog = new AddMemoryBlockDialog(shell, memorySpaces);
@@ -360,7 +361,7 @@ public class AddMemoryBlocks implements IAddMemoryBlocksTarget {
if (e != null)
detail = e.getMessage();
- Shell shell = CDebugUIPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getShell();
+ Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
MessageDialog.openError(shell, title, message + "\n" + detail); //$NON-NLS-1$
return Status.OK_STATUS;
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/CDebugUIPlugin.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/CDebugUIPlugin.java
index 84b7163cedd..d15fada01a4 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/CDebugUIPlugin.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/CDebugUIPlugin.java
@@ -40,6 +40,9 @@ import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.Status;
+import org.eclipse.debug.core.DebugEvent;
+import org.eclipse.debug.core.DebugPlugin;
+import org.eclipse.debug.core.IDebugEventSetListener;
import org.eclipse.debug.core.model.IPersistableSourceLocator;
import org.eclipse.debug.ui.IDebugUIConstants;
import org.eclipse.debug.ui.IDebugView;
@@ -92,6 +95,19 @@ public class CDebugUIPlugin extends AbstractUIPlugin {
private static IDebuggerConsoleManager fDebuggerConsoleManager;
/**
+ * At least one listener must be registered on the DebugPlugin in order
+ * for certain actions, like RunToLine, to work. See bug 573696.
+ */
+ private static class DebugListener implements IDebugEventSetListener {
+ @Override
+ public void handleDebugEvents(DebugEvent[] arg0) {
+ /* Do nothing, see bug 573696*/
+ }
+ }
+
+ private static DebugListener dummy = new DebugListener();
+
+ /**
* The constructor.
*/
public CDebugUIPlugin() {
@@ -223,7 +239,7 @@ public class CDebugUIPlugin extends AbstractUIPlugin {
* @return the active workbench window
*/
public static IWorkbenchWindow getActiveWorkbenchWindow() {
- return getDefault().getWorkbench().getActiveWorkbenchWindow();
+ return PlatformUI.getWorkbench().getActiveWorkbenchWindow();
}
public static IWorkbenchPage getActivePage() {
@@ -294,6 +310,9 @@ public class CDebugUIPlugin extends AbstractUIPlugin {
fDisassemblyEditorManager = new DisassemblyEditorManager();
CDebugCorePlugin.getDefault().addCBreakpointListener(CBreakpointUpdater.getInstance());
+ // See bug 573696
+ DebugPlugin.getDefault().addDebugEventListener(dummy);
+
fDebuggerConsoleManager = new DebuggerConsoleManager();
WorkbenchJob wjob = new WorkbenchJob("Initializing CDT Debug UI") { //$NON-NLS-1$
@@ -335,6 +354,10 @@ public class CDebugUIPlugin extends AbstractUIPlugin {
public void stop(BundleContext context) throws Exception {
CDebugCorePlugin.getDefault().removeCBreakpointListener(CBreakpointUpdater.getInstance());
fDisassemblyEditorManager.dispose();
+
+ // See bug 573696
+ DebugPlugin.getDefault().removeDebugEventListener(dummy);
+
if (fImageDescriptorRegistry != null) {
fImageDescriptorRegistry.dispose();
}
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/ExternalToolAction.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/ExternalToolAction.java
index b664c08d21a..f7881551a12 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/ExternalToolAction.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/ExternalToolAction.java
@@ -15,6 +15,7 @@ package org.eclipse.cdt.debug.ui.breakpointactions;
import java.io.ByteArrayOutputStream;
import java.io.StringReader;
+import java.text.MessageFormat;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
@@ -45,8 +46,6 @@ import org.w3c.dom.Element;
import org.xml.sax.InputSource;
import org.xml.sax.helpers.DefaultHandler;
-import com.ibm.icu.text.MessageFormat;
-
public class ExternalToolAction extends AbstractBreakpointAction {
private String externalToolName = ""; //$NON-NLS-1$
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/LogAction.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/LogAction.java
index 092ccd34e06..2fc6c8e116a 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/LogAction.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/LogAction.java
@@ -15,6 +15,7 @@ package org.eclipse.cdt.debug.ui.breakpointactions;
import java.io.ByteArrayOutputStream;
import java.io.StringReader;
+import java.text.MessageFormat;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
@@ -42,8 +43,6 @@ import org.w3c.dom.Element;
import org.xml.sax.InputSource;
import org.xml.sax.helpers.DefaultHandler;
-import com.ibm.icu.text.MessageFormat;
-
public class LogAction extends AbstractBreakpointAction {
private String message = ""; //$NON-NLS-1$
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/ResumeAction.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/ResumeAction.java
index 47d3323abdf..c78d5fc6056 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/ResumeAction.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/ResumeAction.java
@@ -15,6 +15,7 @@ package org.eclipse.cdt.debug.ui.breakpointactions;
import java.io.ByteArrayOutputStream;
import java.io.StringReader;
+import java.text.MessageFormat;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
@@ -41,8 +42,6 @@ import org.w3c.dom.Element;
import org.xml.sax.InputSource;
import org.xml.sax.helpers.DefaultHandler;
-import com.ibm.icu.text.MessageFormat;
-
public class ResumeAction extends AbstractBreakpointAction {
final static int INCRIMENT_MSEC = 100;
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/SoundAction.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/SoundAction.java
index 5f0963b84ec..f3cdfba317d 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/SoundAction.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/SoundAction.java
@@ -17,6 +17,7 @@ import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.StringReader;
+import java.text.MessageFormat;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
@@ -46,8 +47,6 @@ import org.w3c.dom.Element;
import org.xml.sax.InputSource;
import org.xml.sax.helpers.DefaultHandler;
-import com.ibm.icu.text.MessageFormat;
-
public class SoundAction extends AbstractBreakpointAction {
static public void playSoundFile(final File soundFile) {
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpoints/AddWatchpointOnVariableActionDelegate.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpoints/AddWatchpointOnVariableActionDelegate.java
index 5e417546247..0bbfe02ef00 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpoints/AddWatchpointOnVariableActionDelegate.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpoints/AddWatchpointOnVariableActionDelegate.java
@@ -86,8 +86,8 @@ public class AddWatchpointOnVariableActionDelegate extends AddWatchpointActionDe
assert false : "action should not have been available for object " + obj; //$NON-NLS-1$
} else if (selection instanceof StructuredSelection) {
// Not sure why, but sometimes we get an extraneous empty StructuredSelection. Seems harmless enough
- assert ((StructuredSelection) selection)
- .getFirstElement() == null : "action installed in unexpected type of view/part"; //$NON-NLS-1$
+ assert ((StructuredSelection) selection).getFirstElement() == null
+ : "action installed in unexpected type of view/part"; //$NON-NLS-1$
} else {
assert false : "action installed in unexpected type of view/part"; //$NON-NLS-1$
}
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpoints/CEventBreakpointsLabelProviderFactory.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpoints/CEventBreakpointsLabelProviderFactory.java
index 857dd821cd7..a1c2f3146de 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpoints/CEventBreakpointsLabelProviderFactory.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpoints/CEventBreakpointsLabelProviderFactory.java
@@ -15,6 +15,7 @@
*******************************************************************************/
package org.eclipse.cdt.debug.ui.breakpoints;
+import java.text.MessageFormat;
import java.util.Arrays;
import org.eclipse.cdt.debug.core.DebugCoreMessages;
@@ -30,8 +31,6 @@ import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.swt.graphics.Image;
-import com.ibm.icu.text.MessageFormat;
-
/**
* Factory for event breakpoint label provider
*/
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/disassembly/rulers/RulerColumnRegistry.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/disassembly/rulers/RulerColumnRegistry.java
index a0868d93233..24851c671bd 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/disassembly/rulers/RulerColumnRegistry.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/disassembly/rulers/RulerColumnRegistry.java
@@ -14,6 +14,7 @@
*******************************************************************************/
package org.eclipse.cdt.debug.ui.disassembly.rulers;
+import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@@ -41,8 +42,6 @@ import org.eclipse.ui.internal.texteditor.rulers.RulerColumnMessages;
import org.eclipse.ui.internal.texteditor.rulers.RulerColumnPlacementConstraint;
import org.eclipse.ui.texteditor.ConfigurationElementSorter;
-import com.ibm.icu.text.MessageFormat;
-
/**
* A registry for all extensions to the
* <code>rulerColumns</code> extension point.
@@ -235,7 +234,7 @@ public final class RulerColumnRegistry {
}
}
- Comparator<RulerColumnDescriptor> gravityComp = new Comparator<RulerColumnDescriptor>() {
+ Comparator<RulerColumnDescriptor> gravityComp = new Comparator<>() {
@Override
public int compare(RulerColumnDescriptor o1, RulerColumnDescriptor o2) {
float diff = o1.getPlacement().getGravity() - o2.getPlacement().getGravity();
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/importexecutable/ImportExecutablePageOne.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/importexecutable/ImportExecutablePageOne.java
index 5090574e160..e05e9b78c9b 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/importexecutable/ImportExecutablePageOne.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/importexecutable/ImportExecutablePageOne.java
@@ -60,6 +60,7 @@ import org.eclipse.swt.widgets.DirectoryDialog;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.PlatformUI;
public class ImportExecutablePageOne extends WizardPage {
@@ -209,7 +210,7 @@ public class ImportExecutablePageOne extends WizardPage {
Dialog.applyDialogFont(workArea);
selectSingleButton.setSelection(true);
checkControlState();
- CDebugUIPlugin.getDefault().getWorkbench().getHelpSystem().setHelp(getControl(),
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(getControl(),
ICDebugHelpContextIds.IMPORT_EXECUTABLE_PAGE_ONE);
}
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/importexecutable/ImportExecutablePageTwo.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/importexecutable/ImportExecutablePageTwo.java
index 9c9f6d06bbf..350b034c0c5 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/importexecutable/ImportExecutablePageTwo.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/importexecutable/ImportExecutablePageTwo.java
@@ -24,7 +24,6 @@ import org.eclipse.cdt.core.model.ICProject;
import org.eclipse.cdt.core.parser.util.StringUtil;
import org.eclipse.cdt.debug.core.ICDTLaunchConfigurationConstants;
import org.eclipse.cdt.debug.internal.ui.ICDebugHelpContextIds;
-import org.eclipse.cdt.debug.ui.CDebugUIPlugin;
import org.eclipse.cdt.ui.CElementLabelProvider;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
@@ -51,6 +50,7 @@ import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.dialogs.ElementListSelectionDialog;
public class ImportExecutablePageTwo extends WizardPage {
@@ -304,7 +304,7 @@ public class ImportExecutablePageTwo extends WizardPage {
});
addLaunchConfigTypes();
updateControls();
- CDebugUIPlugin.getDefault().getWorkbench().getHelpSystem().setHelp(getControl(),
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(getControl(),
ICDebugHelpContextIds.IMPORT_EXECUTABLE_PAGE_TWO);
}
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/sourcelookup/OldDefaultSourceLocator.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/sourcelookup/OldDefaultSourceLocator.java
index 29775459fdd..550704c551a 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/sourcelookup/OldDefaultSourceLocator.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/sourcelookup/OldDefaultSourceLocator.java
@@ -15,6 +15,7 @@ package org.eclipse.cdt.debug.ui.sourcelookup;
import java.io.IOException;
import java.io.StringReader;
+import java.text.MessageFormat;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
@@ -41,8 +42,6 @@ import org.w3c.dom.Element;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
-import com.ibm.icu.text.MessageFormat;
-
/**
* Old default source locator. We keep it for migration purposes.
*/
diff --git a/debug/org.eclipse.cdt.gdb-feature/.settings/org.eclipse.core.resources.prefs b/debug/org.eclipse.cdt.gdb-feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/debug/org.eclipse.cdt.gdb-feature/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/debug/org.eclipse.cdt.gdb-feature/feature.xml b/debug/org.eclipse.cdt.gdb-feature/feature.xml
index 31cbfc817c0..4a49cfd53de 100644
--- a/debug/org.eclipse.cdt.gdb-feature/feature.xml
+++ b/debug/org.eclipse.cdt.gdb-feature/feature.xml
@@ -1,8 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2010, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<feature
id="org.eclipse.cdt.gdb"
label="%featureName"
- version="9.10.0.qualifier"
+ version="10.7.0.qualifier"
provider-name="%providerName"
plugin="org.eclipse.cdt.gdb"
license-feature="org.eclipse.license"
diff --git a/debug/org.eclipse.cdt.gdb-feature/pom.xml b/debug/org.eclipse.cdt.gdb-feature/pom.xml
index 1e782ea802a..e9e8bd181df 100644
--- a/debug/org.eclipse.cdt.gdb-feature/pom.xml
+++ b/debug/org.eclipse.cdt.gdb-feature/pom.xml
@@ -1,4 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2011, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
@@ -7,7 +17,7 @@
<parent>
<groupId>org.eclipse.cdt</groupId>
<artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
+ <version>10.7.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
diff --git a/debug/org.eclipse.cdt.gdb.ui/.classpath b/debug/org.eclipse.cdt.gdb.ui/.classpath
index eca7bdba8f0..e801ebfb468 100644
--- a/debug/org.eclipse.cdt.gdb.ui/.classpath
+++ b/debug/org.eclipse.cdt.gdb.ui/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/debug/org.eclipse.cdt.gdb.ui/.settings/org.eclipse.core.resources.prefs b/debug/org.eclipse.cdt.gdb.ui/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/debug/org.eclipse.cdt.gdb.ui/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/debug/org.eclipse.cdt.gdb.ui/.settings/org.eclipse.jdt.core.prefs b/debug/org.eclipse.cdt.gdb.ui/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/debug/org.eclipse.cdt.gdb.ui/.settings/org.eclipse.jdt.core.prefs
+++ b/debug/org.eclipse.cdt.gdb.ui/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/debug/org.eclipse.cdt.gdb.ui/.settings/org.eclipse.jdt.ui.prefs b/debug/org.eclipse.cdt.gdb.ui/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/debug/org.eclipse.cdt.gdb.ui/.settings/org.eclipse.jdt.ui.prefs
+++ b/debug/org.eclipse.cdt.gdb.ui/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/debug/org.eclipse.cdt.gdb.ui/META-INF/MANIFEST.MF b/debug/org.eclipse.cdt.gdb.ui/META-INF/MANIFEST.MF
index 212234f600c..b696866c3c8 100644
--- a/debug/org.eclipse.cdt.gdb.ui/META-INF/MANIFEST.MF
+++ b/debug/org.eclipse.cdt.gdb.ui/META-INF/MANIFEST.MF
@@ -2,13 +2,13 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.gdb.ui;singleton:=true
-Bundle-Version: 7.0.1.qualifier
+Bundle-Version: 7.1.100.qualifier
Bundle-Activator: org.eclipse.cdt.gdb.ui.internal.Activator
Require-Bundle: org.eclipse.core.runtime;bundle-version="3.6.0",
org.eclipse.ui;bundle-version="3.6.0",
org.eclipse.cdt.debug.ui;bundle-version="7.0.0"
Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-Vendor: %providerName
Bundle-Localization: plugin
Export-Package: org.eclipse.cdt.gdb.ui.internal;x-internal:=true
diff --git a/debug/org.eclipse.cdt.gdb.ui/about.html b/debug/org.eclipse.cdt.gdb.ui/about.html
index 164f781a8fd..b3134865230 100644
--- a/debug/org.eclipse.cdt.gdb.ui/about.html
+++ b/debug/org.eclipse.cdt.gdb.ui/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/debug/org.eclipse.cdt.gdb/.classpath b/debug/org.eclipse.cdt.gdb/.classpath
index eca7bdba8f0..e801ebfb468 100644
--- a/debug/org.eclipse.cdt.gdb/.classpath
+++ b/debug/org.eclipse.cdt.gdb/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/debug/org.eclipse.cdt.gdb/.settings/org.eclipse.core.resources.prefs b/debug/org.eclipse.cdt.gdb/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/debug/org.eclipse.cdt.gdb/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/debug/org.eclipse.cdt.gdb/.settings/org.eclipse.jdt.core.prefs b/debug/org.eclipse.cdt.gdb/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/debug/org.eclipse.cdt.gdb/.settings/org.eclipse.jdt.core.prefs
+++ b/debug/org.eclipse.cdt.gdb/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/debug/org.eclipse.cdt.gdb/.settings/org.eclipse.jdt.ui.prefs b/debug/org.eclipse.cdt.gdb/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/debug/org.eclipse.cdt.gdb/.settings/org.eclipse.jdt.ui.prefs
+++ b/debug/org.eclipse.cdt.gdb/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/debug/org.eclipse.cdt.gdb/META-INF/MANIFEST.MF b/debug/org.eclipse.cdt.gdb/META-INF/MANIFEST.MF
index f932d043308..01cc563bbfc 100644
--- a/debug/org.eclipse.cdt.gdb/META-INF/MANIFEST.MF
+++ b/debug/org.eclipse.cdt.gdb/META-INF/MANIFEST.MF
@@ -2,11 +2,11 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.gdb;singleton:=true
-Bundle-Version: 7.0.1.qualifier
+Bundle-Version: 7.1.300.qualifier
Bundle-Activator: org.eclipse.cdt.gdb.internal.Activator
Require-Bundle: org.eclipse.core.runtime;bundle-version="3.6.0"
Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-Vendor: %providerName
Bundle-Localization: plugin
Export-Package: org.eclipse.cdt.gdb.eventbkpts,
diff --git a/debug/org.eclipse.cdt.gdb/about.html b/debug/org.eclipse.cdt.gdb/about.html
index 164f781a8fd..b3134865230 100644
--- a/debug/org.eclipse.cdt.gdb/about.html
+++ b/debug/org.eclipse.cdt.gdb/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/debug/org.eclipse.cdt.gdb/about.mappings b/debug/org.eclipse.cdt.gdb/about.mappings
index 0824105e69d..936a8039c3e 100644
--- a/debug/org.eclipse.cdt.gdb/about.mappings
+++ b/debug/org.eclipse.cdt.gdb/about.mappings
@@ -4,6 +4,6 @@
# This file does not need to be translated.
# The following should contain the build version.
-# e.g. "0=20020612"
-# This value will be added automaticaly via the build scripts
-0=@build@ \ No newline at end of file
+# e.g. "0=20200106-1728"
+# This value will be added automatically via the build scripts
+0=${buildId}
diff --git a/debug/org.eclipse.cdt.gdb/about.properties b/debug/org.eclipse.cdt.gdb/about.properties
index 18aef7a2c39..f8f0523a582 100644
--- a/debug/org.eclipse.cdt.gdb/about.properties
+++ b/debug/org.eclipse.cdt.gdb/about.properties
@@ -1,15 +1,15 @@
###############################################################################
-# Copyright (c) 2002, 2008 IBM Corporation and others.
+# Copyright (c) 2010, 2022 Contributors to the Eclipse Foundation
#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
#
-# SPDX-License-Identifier: EPL-2.0
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
#
-# Contributors:
-# IBM Corporation - initial API and implementation
+# SPDX-License-Identifier: EPL-2.0
###############################################################################
# about.properties
# contains externalized strings for about.ini
@@ -19,10 +19,14 @@
# NOTE TO TRANSLATOR: Please do not translate the featureVersion variable.
-blurb=GDB Common\n\
+blurb=C/C++ Common GDB Support\n\
\n\
Version: {featureVersion}\n\
Build id: {0}\n\
\n\
-(c) Copyright Eclipse contributors and others, 2000, 2010.\n\
+Copyright (c) 2010, 2022 Contributors to the Eclipse Foundation
+\n\
+See the NOTICE file(s) distributed with this work for additional\n\
+information regarding copyright ownership.\n\
+\n\
Visit http://www.eclipse.org/cdt
diff --git a/debug/org.eclipse.cdt.gnu.debug-feature/.settings/org.eclipse.core.resources.prefs b/debug/org.eclipse.cdt.gnu.debug-feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/debug/org.eclipse.cdt.gnu.debug-feature/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/debug/org.eclipse.cdt.gnu.debug-feature/feature.xml b/debug/org.eclipse.cdt.gnu.debug-feature/feature.xml
index 644c08ae300..fe6b5958006 100644
--- a/debug/org.eclipse.cdt.gnu.debug-feature/feature.xml
+++ b/debug/org.eclipse.cdt.gnu.debug-feature/feature.xml
@@ -1,9 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2008, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<feature
id="org.eclipse.cdt.gnu.debug"
label="%featureName"
- version="9.10.0.qualifier"
+ version="10.7.0.qualifier"
provider-name="%providerName"
+ plugin="org.eclipse.cdt.launch"
license-feature="org.eclipse.license"
license-feature-version="0.0.0">
diff --git a/debug/pom.xml b/debug/pom.xml
index 99490813bab..a4eda99a6db 100644
--- a/debug/pom.xml
+++ b/debug/pom.xml
@@ -1,4 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2017, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
@@ -7,7 +17,7 @@
<parent>
<groupId>org.eclipse.cdt</groupId>
<artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
+ <version>10.7.0-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.cdt.debug-parent</artifactId>
diff --git a/doc/org.eclipse.cdt.doc.isv/.settings/org.eclipse.core.resources.prefs b/doc/org.eclipse.cdt.doc.isv/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.isv/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/doc/org.eclipse.cdt.doc.isv/.settings/org.eclipse.jdt.core.prefs b/doc/org.eclipse.cdt.doc.isv/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 2b6ecff8a01..00000000000
--- a/doc/org.eclipse.cdt.doc.isv/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,464 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
-org.eclipse.jdt.core.codeComplete.argumentPrefixes=
-org.eclipse.jdt.core.codeComplete.argumentSuffixes=
-org.eclipse.jdt.core.codeComplete.fieldPrefixes=
-org.eclipse.jdt.core.codeComplete.fieldSuffixes=
-org.eclipse.jdt.core.codeComplete.localPrefixes=
-org.eclipse.jdt.core.codeComplete.localSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
-org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
-org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
-org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
-org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
-org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
-org.eclipse.jdt.core.compiler.problem.APILeak=warning
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
-org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
-org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
-org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
-org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
-org.eclipse.jdt.core.compiler.problem.nullReference=error
-org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
-org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
-org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
-org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
-org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
-org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
-org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
-org.eclipse.jdt.core.formatter.align_with_spaces=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
-org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
-org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
-org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
-org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=0
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
-org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
-org.eclipse.jdt.core.formatter.comment.format_block_comments=false
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
-org.eclipse.jdt.core.formatter.comment.format_line_comments=false
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
-org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
-org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
-org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.join_lines_in_comments=true
-org.eclipse.jdt.core.formatter.join_wrapped_lines=true
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=120
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_on_off_tags=true
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
-org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
-org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/doc/org.eclipse.cdt.doc.isv/.settings/org.eclipse.jdt.ui.prefs b/doc/org.eclipse.cdt.doc.isv/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index e44576346c4..00000000000
--- a/doc/org.eclipse.cdt.doc.isv/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,133 +0,0 @@
-cleanup.add_default_serial_version_id=true
-cleanup.add_generated_serial_version_id=false
-cleanup.add_missing_annotations=true
-cleanup.add_missing_deprecated_annotations=true
-cleanup.add_missing_methods=false
-cleanup.add_missing_nls_tags=false
-cleanup.add_missing_override_annotations=true
-cleanup.add_missing_override_annotations_interface_methods=true
-cleanup.add_serial_version_id=false
-cleanup.always_use_blocks=true
-cleanup.always_use_parentheses_in_expressions=false
-cleanup.always_use_this_for_non_static_field_access=false
-cleanup.always_use_this_for_non_static_method_access=false
-cleanup.convert_functional_interfaces=false
-cleanup.convert_to_enhanced_for_loop=false
-cleanup.correct_indentation=false
-cleanup.format_source_code=true
-cleanup.format_source_code_changes_only=false
-cleanup.insert_inferred_type_arguments=false
-cleanup.make_local_variable_final=true
-cleanup.make_parameters_final=false
-cleanup.make_private_fields_final=true
-cleanup.make_type_abstract_if_missing_method=false
-cleanup.make_variable_declarations_final=false
-cleanup.never_use_blocks=false
-cleanup.never_use_parentheses_in_expressions=true
-cleanup.organize_imports=true
-cleanup.qualify_static_field_accesses_with_declaring_class=false
-cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-cleanup.qualify_static_member_accesses_with_declaring_class=false
-cleanup.qualify_static_method_accesses_with_declaring_class=false
-cleanup.remove_private_constructors=true
-cleanup.remove_redundant_modifiers=false
-cleanup.remove_redundant_semicolons=true
-cleanup.remove_redundant_type_arguments=true
-cleanup.remove_trailing_whitespaces=true
-cleanup.remove_trailing_whitespaces_all=true
-cleanup.remove_trailing_whitespaces_ignore_empty=false
-cleanup.remove_unnecessary_casts=true
-cleanup.remove_unnecessary_nls_tags=false
-cleanup.remove_unused_imports=true
-cleanup.remove_unused_local_variables=false
-cleanup.remove_unused_private_fields=true
-cleanup.remove_unused_private_members=false
-cleanup.remove_unused_private_methods=true
-cleanup.remove_unused_private_types=true
-cleanup.sort_members=false
-cleanup.sort_members_all=false
-cleanup.use_anonymous_class_creation=false
-cleanup.use_blocks=false
-cleanup.use_blocks_only_for_return_and_throw=false
-cleanup.use_lambda=true
-cleanup.use_parentheses_in_expressions=false
-cleanup.use_this_for_non_static_field_access=false
-cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-cleanup.use_this_for_non_static_method_access=false
-cleanup.use_this_for_non_static_method_access_only_if_necessary=true
-cleanup_profile=_CDT
-cleanup_settings_version=2
-eclipse.preferences.version=1
-editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=_CDT
-formatter_settings_version=14
-internal.default.compliance=user
-org.eclipse.jdt.ui.exception.name=e
-org.eclipse.jdt.ui.gettersetter.use.is=true
-org.eclipse.jdt.ui.ignorelowercasenames=true
-org.eclipse.jdt.ui.importorder=java;javax;org;com;
-org.eclipse.jdt.ui.keywordthis=false
-org.eclipse.jdt.ui.ondemandthreshold=1000
-org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.staticondemandthreshold=1000
-org.eclipse.jdt.ui.text.custom_code_templates=
-sp_cleanup.add_default_serial_version_id=true
-sp_cleanup.add_generated_serial_version_id=false
-sp_cleanup.add_missing_annotations=true
-sp_cleanup.add_missing_deprecated_annotations=true
-sp_cleanup.add_missing_methods=false
-sp_cleanup.add_missing_nls_tags=false
-sp_cleanup.add_missing_override_annotations=true
-sp_cleanup.add_missing_override_annotations_interface_methods=true
-sp_cleanup.add_serial_version_id=false
-sp_cleanup.always_use_blocks=true
-sp_cleanup.always_use_parentheses_in_expressions=false
-sp_cleanup.always_use_this_for_non_static_field_access=false
-sp_cleanup.always_use_this_for_non_static_method_access=false
-sp_cleanup.convert_functional_interfaces=false
-sp_cleanup.convert_to_enhanced_for_loop=false
-sp_cleanup.correct_indentation=false
-sp_cleanup.format_source_code=true
-sp_cleanup.format_source_code_changes_only=false
-sp_cleanup.insert_inferred_type_arguments=false
-sp_cleanup.make_local_variable_final=true
-sp_cleanup.make_parameters_final=false
-sp_cleanup.make_private_fields_final=true
-sp_cleanup.make_type_abstract_if_missing_method=false
-sp_cleanup.make_variable_declarations_final=false
-sp_cleanup.never_use_blocks=false
-sp_cleanup.never_use_parentheses_in_expressions=true
-sp_cleanup.on_save_use_additional_actions=true
-sp_cleanup.organize_imports=true
-sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
-sp_cleanup.remove_private_constructors=true
-sp_cleanup.remove_redundant_modifiers=false
-sp_cleanup.remove_redundant_semicolons=true
-sp_cleanup.remove_redundant_type_arguments=true
-sp_cleanup.remove_trailing_whitespaces=true
-sp_cleanup.remove_trailing_whitespaces_all=true
-sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
-sp_cleanup.remove_unnecessary_casts=true
-sp_cleanup.remove_unnecessary_nls_tags=false
-sp_cleanup.remove_unused_imports=true
-sp_cleanup.remove_unused_local_variables=false
-sp_cleanup.remove_unused_private_fields=true
-sp_cleanup.remove_unused_private_members=false
-sp_cleanup.remove_unused_private_methods=true
-sp_cleanup.remove_unused_private_types=true
-sp_cleanup.sort_members=false
-sp_cleanup.sort_members_all=false
-sp_cleanup.use_anonymous_class_creation=false
-sp_cleanup.use_blocks=false
-sp_cleanup.use_blocks_only_for_return_and_throw=false
-sp_cleanup.use_lambda=true
-sp_cleanup.use_parentheses_in_expressions=false
-sp_cleanup.use_this_for_non_static_field_access=false
-sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-sp_cleanup.use_this_for_non_static_method_access=false
-sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/doc/org.eclipse.cdt.doc.isv/META-INF/MANIFEST.MF b/doc/org.eclipse.cdt.doc.isv/META-INF/MANIFEST.MF
index 8410fe6ffc6..740c00398b9 100644
--- a/doc/org.eclipse.cdt.doc.isv/META-INF/MANIFEST.MF
+++ b/doc/org.eclipse.cdt.doc.isv/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.doc.isv; singleton:=true
-Bundle-Version: 5.4.300.qualifier
+Bundle-Version: 5.4.1300.qualifier
Bundle-Localization: plugin
Require-Bundle: org.eclipse.help;bundle-version="[3.2.0,4.0.0)"
Bundle-ActivationPolicy: lazy
diff --git a/doc/org.eclipse.cdt.doc.isv/about.html b/doc/org.eclipse.cdt.doc.isv/about.html
index 164f781a8fd..b3134865230 100644
--- a/doc/org.eclipse.cdt.doc.isv/about.html
+++ b/doc/org.eclipse.cdt.doc.isv/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/doc/org.eclipse.cdt.doc.isv/book.css b/doc/org.eclipse.cdt.doc.isv/book.css
index 0d00c10b7e0..f34207bd07c 100644
--- a/doc/org.eclipse.cdt.doc.isv/book.css
+++ b/doc/org.eclipse.cdt.doc.isv/book.css
@@ -1 +1,101 @@
-P.Code { display: block; text-align: left; text-indent: 0.00pt; margin-top: 0.000000pt; margin-bottom: 0.000000pt; margin-right: 0.000000pt; margin-left: 15pt; font-size: 10.000000pt; font-weight: medium; font-style: Regular; color: #4444CC; text-decoration: none; vertical-align: baseline; text-transform: none; font-family: "Courier New"; } H6.CaptionFigColumn { display: block; text-align: left; text-indent: 0.000000pt; margin-top: 3.000000pt; margin-bottom: 11.000000pt; margin-right: 0.000000pt; margin-left: 0.000000pt; font-size: 9.000000pt; font-weight: medium; font-style: Italic; color: #000000; text-decoration: none; vertical-align: baseline; text-transform: none; font-family: "Arial"; } P.Note { display: block; text-align: left; text-indent: 0pt; margin-top: 19.500000pt; margin-bottom: 19.500000pt; margin-right: 0.000000pt; margin-left: 30pt; font-size: 11.000000pt; font-weight: medium; font-style: Italic; color: #000000; text-decoration: none; vertical-align: baseline; text-transform: none; font-family: "Arial"; } EM.UILabel { font-weight: Bold; font-style: Regular; text-decoration: none; vertical-align: baseline; text-transform: none; } EM.CodeName { font-weight: Bold; font-style: Regular; text-decoration: none; vertical-align: baseline; text-transform: none; font-family:"Courier New"; } /* following font face declarations need to be removed for DBCS */ body, h1, h2, h3, h4, h5, h6, p, table, td, caption, th, ul, ol, dl, li, dd, dt {font-family: Arial, Helvetica, sans-serif; color: #000000} pre { font-family: Courier, monospace} /* end font face declarations */ /* following font size declarations should be OK for DBCS */ body, h1, h2, h3, h4, h5, h6, p, table, td, caption, th, ul, ol, dl, li, dd, dt {font-size: 10pt; } pre { font-size: 10pt} /* end font size declarations */ body { background: #FFFFFF} h1 { font-size: 18pt; margin-top: 5; margin-bottom: 1 } h2 { font-size: 14pt; margin-top: 25; margin-bottom: 3 } h3 { font-size: 11pt; margin-top: 20; margin-bottom: 3 } h4 { font-size: 10pt; margin-top: 20; margin-bottom: 3; font-style: italic } p { margin-top: 10px; margin-bottom: 10px } pre { margin-left: 6; font-size: 9pt } a:link { color: #0000FF } a:hover { color: #000080 } a:visited { text-decoration: underline } ul { margin-top: 0; margin-bottom: 10 } li { margin-top: 0; margin-bottom: 0 } li p { margin-top: 0; margin-bottom: 0 } ol { margin-top: 0; margin-bottom: 10 } dl { margin-top: 0; margin-bottom: 10 } dt { margin-top: 0; margin-bottom: 0; font-weight: bold } dd { margin-top: 0; margin-bottom: 0 } strong { font-weight: bold} em { font-style: italic} var { font-style: italic} div.revision { border-left-style: solid; border-left-width: thin; border-left-color: #7B68EE; padding-left:5 } th { font-weight: bold } .typewriter {font-family:monospace;} .bold {font-weight:600;} .linethrough {text-decoration: line-through;} .underline {text-decoration: underline;} \ No newline at end of file
+P.Code {
+ display: block;
+ text-align: left;
+ text-indent: 0.00pt;
+ margin-top: 0.000000pt;
+ margin-bottom: 0.000000pt;
+ margin-right: 0.000000pt;
+ margin-left: 15pt;
+ font-size: 10.000000pt;
+ font-weight: medium;
+ font-style: Regular;
+ color: #4444CC;
+ text-decoration: none;
+ vertical-align: baseline;
+ text-transform: none;
+ font-family: "Courier New";
+}
+H6.CaptionFigColumn {
+ display: block;
+ text-align: left;
+ text-indent: 0.000000pt;
+ margin-top: 3.000000pt;
+ margin-bottom: 11.000000pt;
+ margin-right: 0.000000pt;
+ margin-left: 0.000000pt;
+ font-size: 9.000000pt;
+ font-weight: medium;
+ font-style: Italic;
+ color: #000000;
+ text-decoration: none;
+ vertical-align: baseline;
+ text-transform: none;
+ font-family: "Arial";
+}
+P.Note {
+ display: block;
+ text-align: left;
+ text-indent: 0pt;
+ margin-top: 19.500000pt;
+ margin-bottom: 19.500000pt;
+ margin-right: 0.000000pt;
+ margin-left: 30pt;
+ font-size: 11.000000pt;
+ font-weight: medium;
+ font-style: Italic;
+ color: #000000;
+ text-decoration: none;
+ vertical-align: baseline;
+ text-transform: none;
+ font-family: "Arial";
+}
+EM.UILabel {
+ font-weight: Bold;
+ font-style: Regular;
+ text-decoration: none;
+ vertical-align: baseline;
+ text-transform: none;
+}
+EM.CodeName {
+ font-weight: Bold;
+ font-style: Regular;
+ text-decoration: none;
+ vertical-align: baseline;
+ text-transform: none;
+ font-family:"Courier New";
+}
+/* following font face declarations need to be removed for DBCS */
+body, h1, h2, h3, h4, h5, h6, p, table, td, caption, th, ul, ol, dl, li, dd, dt {font-family: Arial, Helvetica, sans-serif; color: #000000}
+pre { font-family: Courier, monospace}
+/* end font face declarations */
+/* following font size declarations should be OK for DBCS */
+body, h1, h2, h3, h4, h5, h6, p, table, td, caption, th, ul, ol, dl, li, dd, dt {font-size: 10pt; }
+pre { font-size: 10pt}
+/* end font size declarations */
+body { background: #FFFFFF}
+h1 { font-size: 18pt; margin-top: 5; margin-bottom: 1 }
+h2 { font-size: 14pt; margin-top: 25; margin-bottom: 3 }
+h3 { font-size: 11pt; margin-top: 20; margin-bottom: 3 }
+h4 { font-size: 10pt; margin-top: 20; margin-bottom: 3; font-style: italic }
+p { margin-top: 10px; margin-bottom: 10px }
+pre { margin-left: 6; font-size: 9pt }
+a:link { color: #0000FF }
+a:hover { color: #000080 }
+a:visited { text-decoration: underline }
+ul { margin-top: 0; margin-bottom: 10 }
+li { margin-top: 0; margin-bottom: 0 }
+li p { margin-top: 0; margin-bottom: 0 }
+ol { margin-top: 0; margin-bottom: 10 }
+dl { margin-top: 0; margin-bottom: 10 }
+dt { margin-top: 0; margin-bottom: 0; font-weight: bold }
+dd { margin-top: 0; margin-bottom: 0 }
+strong { font-weight: bold}
+em { font-style: italic}
+var { font-style: italic}
+div.revision { border-left-style: solid; border-left-width: thin;
+ border-left-color: #7B68EE; padding-left:5 }
+th { font-weight: bold }
+.typewriter {font-family:monospace;}
+.bold {font-weight:600;}
+.linethrough {text-decoration: line-through;}
+.underline {text-decoration: underline;}
diff --git a/doc/org.eclipse.cdt.doc.isv/build.properties b/doc/org.eclipse.cdt.doc.isv/build.properties
index bb9e0ae8637..883d8df0c6c 100644
--- a/doc/org.eclipse.cdt.doc.isv/build.properties
+++ b/doc/org.eclipse.cdt.doc.isv/build.properties
@@ -27,3 +27,4 @@ bin.includes = META-INF/,\
customBuildCallbacks = customBuildCallbacks.xml
src.includes = about.html
+jars.extra.classpath = platform:/plugin/org.eclipse.cdt.core
diff --git a/doc/org.eclipse.cdt.doc.isv/buildDoc.xml b/doc/org.eclipse.cdt.doc.isv/buildDoc.xml
index 6056e45b671..e0733e861ed 100644
--- a/doc/org.eclipse.cdt.doc.isv/buildDoc.xml
+++ b/doc/org.eclipse.cdt.doc.isv/buildDoc.xml
@@ -3,8 +3,6 @@
<target name="all">
<antcall target="convertSchemaToHtml" />
- <!--antcall target="examplesDocCopy" /-->
- <antcall target="generateJavadoc" />
<antcall target="build.index" />
</target>
@@ -25,44 +23,4 @@
<record name="${basedir}/cdtconvert.txt" action="stop"/>
</target>
- <target name="examplesDocCopy" >
- <copy todir="samples">
- <fileset dir="..">
- <include name="org.eclipse.jdt.ui.examples.projects/doc-html/"/>
- </fileset>
- </copy>
- </target>
-
- <target name="getJavadocPath">
- <available file="${java.home}/../bin/javadoc.exe" property="javadoc" value="${java.home}/../bin/javadoc.exe"/>
- <available file="${java.home}/../bin/javadoc" property="javadoc" value="${java.home}/../bin/javadoc" />
- </target>
-
- <target name="generateJavadoc" depends="getJavadocPath" if="javadoc">
-
- <condition property="optionsFile" value="cdtOptions">
- <os family="unix" />
- </condition>
- <condition property="optionsFile" value="cdtOptions.txt">
- <os family="windows" />
- </condition>
-
- <replace file="${basedir}/${optionsFile}" token="@rt@" value="${bootclasspath}" />
-
- <!--scrub isv plugin directories of any preexisting api doc content-->
- <delete dir="reference/api"/>
- <mkdir dir="reference/api"/>
-
- <exec dir="." executable="${javadoc}" output="doc.bin.log">
- <arg line="@${basedir}/${optionsFile} -J-Xmx500M" />
- </exec>
- </target>
-
- <target name="createDocZip">
- <zip zipfile="${basedir}/doc.zip"
- basedir="${basedir}"
- includes="book.css, cpy.gif, notices.html, about.html, no_help_exists.htm, concepts/**, gettingStarted/**, images/**, reference/**, tasks/**,samples/**,guide/**,questions/**"
- />
- </target>
-
</project>
diff --git a/doc/org.eclipse.cdt.doc.isv/cdtOptions b/doc/org.eclipse.cdt.doc.isv/cdtOptions
deleted file mode 100644
index 08f3a4a7d82..00000000000
--- a/doc/org.eclipse.cdt.doc.isv/cdtOptions
+++ /dev/null
@@ -1,26 +0,0 @@
--charset "iso-8859-1"
--sourcepath "../../core/org.eclipse.cdt.core.native/src:../../core/org.eclipse.cdt.core/model:../../core/org.eclipse.cdt.core/parser"
--d reference/api
--classpath ${bootclasspath}:../org.apache.ant/lib/ant.jar:../org.eclipse.debug.core/dtcore.jar:../org.eclipse.compare/compare.jar:../org.eclipse.help/help.jar:../org.eclipse.help.ui/helpworkbench.jar:../org.eclipse.core.resources/resources.jar:../org.eclipse.core.runtime/runtime.jar:../org.eclipse.core.filebuffers/filebuffers.jar:../org.eclipse.core.expressions/expressions.jar:../org.eclipse.swt.win32/ws/win32/swt.jar:../org.eclipse.swt.motif/ws/motif/swt.jar:../org.eclipse.ui/ui.jar:../org.eclipse.jdt.debug/jdi.jar:../org.eclipse.debug.ui/dtui.jar:../org.eclipse.search/search.jar:../org.eclipse.jface/jface.jar:../org.eclipse.jface.text/jfacetext.jar:../org.eclipse.text/text.jar:../org.eclipse.ui.editors/editors.jar:../org.eclipse.ui.views/views.jar:../org.eclipse.ui.workbench/workbench.jar:../org.eclipse.ui.workbench.texteditor/texteditor.jar:../org.eclipse.core.variables/variables.jar:../org.eclipse.ui.ide/ide.jar:../org.eclipse.jdt.junit/junitsupport.jar:../org.eclipse.osgi/osgi.jar:../org.eclipse.osgi/core.jar:../org.eclipse.osgi/eclipseAdaptor.jar:../org.eclipse.osgi.services/services.jar:../org.eclipse.osgi.util/util.jar
--breakiterator
--use
--splitIndex
--windowtitle "Eclipse CDT API Specification"
--doctitle "Eclipse CDT API Specification"
--header "<strong>Eclipse CDT</strong><br>8.9.0"
--bottom "Copyright (c) IBM Corp. and others 2004, 2019. All Rights Reserved."
--group "C/C++ Development Tools Core Plug-in Packages" "org.eclipse.cdt.core:org.eclipse.cdt.core.*"
--group "C/C++ Development Tools Debug Core Plug-in Packages" "org.eclipse.cdt.debug.core:org.eclipse.cdt.debug.core.*"
--link http://docs.oracle.com/javase/7/docs/api/
-
-org.eclipse.cdt.core
-org.eclipse.cdt.core.model
-org.eclipse.cdt.core.search
-org.eclipse.cdt.core.dom.ast
-org.eclipse.cdt.core.dom.ast.c
-org.eclipse.cdt.core.dom.ast.cpp
-org.eclipse.cdt.core.dom.ast.gnu
-org.eclipse.cdt.core.dom.ast.gnu.c
-org.eclipse.cdt.core.dom.ast.gnu.cpp
-org.eclipse.cdt.utils.pty
-org.eclipse.cdt.utils.spawner
diff --git a/doc/org.eclipse.cdt.doc.isv/cdtOptions.txt b/doc/org.eclipse.cdt.doc.isv/cdtOptions.txt
deleted file mode 100644
index d2d88d163e2..00000000000
--- a/doc/org.eclipse.cdt.doc.isv/cdtOptions.txt
+++ /dev/null
@@ -1,26 +0,0 @@
--charset "iso-8859-1"
--sourcepath "../../core/org.eclipse.cdt.core.native/src;../../core/org.eclipse.cdt.core/model;../../core/org.eclipse.cdt.core/parser"
--d reference/api
--classpath ${bootclasspath};../org.apache.ant/lib/ant.jar;../org.eclipse.debug.core/dtcore.jar;../org.eclipse.compare/compare.jar;../org.eclipse.help/help.jar;../org.eclipse.help.ui/helpworkbench.jar;../org.eclipse.core.resources/resources.jar;../org.eclipse.core.runtime/runtime.jar;../org.eclipse.core.filebuffers/filebuffers.jar;../org.eclipse.core.expressions/expressions.jar;../org.eclipse.swt.win32/ws/win32/swt.jar;../org.eclipse.swt.motif/ws/motif/swt.jar;../org.eclipse.ui/ui.jar;../org.eclipse.jdt.debug/jdi.jar;../org.eclipse.debug.ui/dtui.jar;../org.eclipse.search/search.jar;../org.eclipse.jface/jface.jar;../org.eclipse.jface.text/jfacetext.jar;../org.eclipse.text/text.jar;../org.eclipse.ui.editors/editors.jar;../org.eclipse.ui.views/views.jar;../org.eclipse.ui.workbench/workbench.jar;../org.eclipse.ui.workbench.texteditor/texteditor.jar;../org.eclipse.core.variables/variables.jar;../org.eclipse.ui.ide/ide.jar;../org.eclipse.jdt.junit/junitsupport.jar;../org.eclipse.osgi/osgi.jar;../org.eclipse.osgi/core.jar;../org.eclipse.osgi/eclipseAdaptor.jar;../org.eclipse.osgi.services/services.jar;../org.eclipse.osgi.util/util.jar
--breakiterator
--use
--splitIndex
--windowtitle "Eclipse CDT API Specification"
--doctitle "Eclipse CDT API Specification"
--header "<strong>Eclipse CDT</strong><br>8.9.0"
--bottom "Copyright (c) IBM Corp. and others 2004, 2019. All Rights Reserved."
--group "C/C++ Development Tools Core Plug-in Packages" "org.eclipse.cdt.core;org.eclipse.cdt.core.*"
--group "C/C++ Development Tools Debug Core Plug-in Packages" "org.eclipse.cdt.debug.core;org.eclipse.cdt.debug.core.*"
--link http://docs.oracle.com/javase/7/docs/api/
-
-org.eclipse.cdt.core
-org.eclipse.cdt.core.model
-org.eclipse.cdt.core.search
-org.eclipse.cdt.core.dom.ast
-org.eclipse.cdt.core.dom.ast.c
-org.eclipse.cdt.core.dom.ast.cpp
-org.eclipse.cdt.core.dom.ast.gnu
-org.eclipse.cdt.core.dom.ast.gnu.c
-org.eclipse.cdt.core.dom.ast.gnu.cpp
-org.eclipse.cdt.utils.pty
-org.eclipse.cdt.utils.spawner
diff --git a/doc/org.eclipse.cdt.doc.isv/guide/cdt_build_system/migration_guides/4.0/migration_guide_40.html b/doc/org.eclipse.cdt.doc.isv/guide/cdt_build_system/migration_guides/4.0/migration_guide_40.html
index 3d2641aef8e..960b08a2a29 100644
--- a/doc/org.eclipse.cdt.doc.isv/guide/cdt_build_system/migration_guides/4.0/migration_guide_40.html
+++ b/doc/org.eclipse.cdt.doc.isv/guide/cdt_build_system/migration_guides/4.0/migration_guide_40.html
@@ -8,7 +8,7 @@
<title>Managed Build System Extensibility Document</title>
<link rel="stylesheet"
- href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/cdt-home/cdt.css?cvsroot=Tools_Project"
+ href="https://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/cdt-home/cdt.css?cvsroot=Tools_Project"
type="text/css">
<link rel="stylesheet" href="../../../../book.css" type="text/css">
<style>
@@ -71,7 +71,7 @@ table.MsoTableGrid
tool-chain integration to CDT 4.0<br>
This document describes steps needed to be
done to migrate the existing tool-chain integrations to the CDT 4.0</td>
- <td width="28%"><img src="http://dev.eclipse.org/images/Idea.jpg"
+ <td width="28%"><img src="https://dev.eclipse.org/images/Idea.jpg"
alt="" height="86" width="120"></td>
</tr>
</tbody>
diff --git a/doc/org.eclipse.cdt.doc.isv/guide/cdt_build_system/whats_new/4.0/whats_new_CBS_40.html b/doc/org.eclipse.cdt.doc.isv/guide/cdt_build_system/whats_new/4.0/whats_new_CBS_40.html
index 5136b3e2288..48013f7929d 100644
--- a/doc/org.eclipse.cdt.doc.isv/guide/cdt_build_system/whats_new/4.0/whats_new_CBS_40.html
+++ b/doc/org.eclipse.cdt.doc.isv/guide/cdt_build_system/whats_new/4.0/whats_new_CBS_40.html
@@ -8,7 +8,7 @@
<title>Managed Build System Extensibility Document</title>
<link rel="stylesheet"
- href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/cdt-home/cdt.css?cvsroot=Tools_Project"
+ href="https://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/cdt-home/cdt.css?cvsroot=Tools_Project"
type="text/css">
<link rel="stylesheet" href="../../../../book.css" type="text/css">
<style>
@@ -73,7 +73,7 @@ table.MsoTableGrid
This document outlines the new features presented
in the new
CDT build system in CDT 4.0</td>
- <td width="28%"><img src="http://dev.eclipse.org/images/Idea.jpg"
+ <td width="28%"><img src="https://dev.eclipse.org/images/Idea.jpg"
height="86" width="120" alt="idea"></td>
</tr>
</tbody>
diff --git a/doc/org.eclipse.cdt.doc.isv/guide/deprecated_API_removals.html b/doc/org.eclipse.cdt.doc.isv/guide/deprecated_API_removals.html
new file mode 100644
index 00000000000..a98c28490e2
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.isv/guide/deprecated_API_removals.html
@@ -0,0 +1,608 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html lang="en">
+
+<head>
+ <meta name="copyright"
+ content="Copyright (c) IBM Corporation and others 2011, 2020. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page.">
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta http-equiv="Content-Style-Type" content="text/css">
+ <link rel="STYLESHEET" href="../book.css" charset="ISO-8859-1" type="text/css">
+ <title>Eclipse CDT Deprecated and Breaking API changes and removals</title>
+</head>
+
+<body>
+ <h1>Eclipse CDT Deprecated and Breaking API changes and removals</h1>
+
+ <p>
+ Deprecated API can be marked for deletion without requiring a major version increment.
+ See the <a href="https://wiki.eclipse.org/CDT/policy">policy</a> for the details.
+ This section describes API removals that occurred in past releases, and upcoming removals in future releases.
+ </p>
+
+ <p>
+ API Changes in CDT 10.5.0
+ </p>
+ <ol>
+ <li><a href="#jsoncdb">Package org.eclipse.cdt.cmake.is.core.participant has been renamed to
+ org.eclipse.cdt.jsoncdb.core.participant.</a></li>
+ </ol>
+ <p>
+ API Changes in CDT 10.0.
+ </p>
+ <ol>
+ <li><a href="#java11">Eclipse CDT requires Java 11 as a minimum to build and run.</a></li>
+ <li><a href="#deprecatedRemovals">Some deprecated methods and classes have been removed.</a></li>
+ <li><a href="#internals">Previously exported packages that were not API are now correctly marked as such.</a></li>
+ <li><a href="#activators">Activators removed for all bundles where possible.</a></li>
+ <li><a href="#NewClassCreationWizardPage">NewClassCreationWizardPage breaking changes.</a></li>
+ <li><a href="#arduino">Arduino plug-ins and features removed.</a></li>
+ <li><a href="#oldparsers">Remove LRParser, XLC and UPC.</a></li>
+ <li><a href="#cdtutilsPlatform">Remove org.eclipse.cdt.utils.Platform.</a></li>
+ <li><a href="#dsf">DSF and DSF-GDB API Changes.</a></li>
+ <li><a href="#oldStyleProjects">Partial removal of CDT 3.X project support.</a></li>
+ <li><a href="#optionsAPI">Removal of CDT Core Options API.</a></li>
+ <li><a href="#terminal">TM Terminal has major changes to support new color and preference functionality.</a></li>
+ <li><a href="#casesensitive">Environment Variables are always case sensitive in CDT.</a></li>
+ <li><a href="#escaping">Environment variables no longer support \${ to avoid expanding.</a></li>
+ <li><a href="#autocloseable">The binary parsers are now implement Autocloseable</a></li>
+ <li><a href="#deductionremovedin10.0.0">ICPPASTDeductionGuide and ICPPASTParameterListOwner removed in CDT 10.0.1</a></li>
+ </ol>
+ <p>
+ Planned Removals after June 2022 or on the next major version of Eclipe CDT.
+ </p>
+ <ol>
+ <li><a href="#binaryparsers">32-bit Binary parsers with 64-bit replacements</a></li>
+ <li><a href="#baudrate">BaudRate enum in org.eclipse.cdt.serial</a></li>
+ </ol>
+ <p>
+ Planned Removals after June 2023 or on the next major version of Eclipe CDT.
+ </p>
+ <ol>
+ <li><a href="#gdbBackendDebuggerCommandLine">Rework of API to determine GDB command line in org.eclipse.cdt.dsf.gdb</a></li>
+ <li><a href="#ManagedCommandLineGenerator.toManagedCommandLineInfo">Add ITool parameter to ManagedCommandLineGenerator.toManagedCommandLineInfo</a></li>
+ <li><a href="#GnuMakefileGenerator.addRuleForTool">Removed unneded boolean from function</a></li>
+ <li><a href="#GnuMakefileGenerator.addDefaultHeader">Changed methods from static to non-static</a></li>
+ </ol>
+ <p>
+ Planned Removals after December 2023 or on the next major version of Eclipe CDT.
+ </p>
+ <ol>
+ <li><a href="#GnuMakefileGeneratorAPI">GnuMakefileGenerator is no longer part of API</a></li>
+ <li><a href="#Spawner.signals">The Spawner signal constants are nolonger API</a></li>
+ </ol>
+ <p>
+ Planned Removals after March 2024 or on the next major version of Eclipe CDT.
+ </p>
+ <ol>
+ <li><a href="#ArgletsMatcher">java.util.regex.Matcher use in JSONCDB API will be removed</a></li>
+ </ol>
+ <p>
+ Planned Removals after June 2024 or on the next major version of Eclipe CDT.
+ </p>
+ <ol>
+ <li><a href="#newUIAbstractPage">org.eclipse.cdt.ui.newui.AbstractPage reduced visibility of many fields</a></li>
+ <li><a href="#ArgletsMatcher2">java.util.regex.Matcher use in JSONCDB API will be removed</a></li>
+ <li><a href="#BuiltinDetctionArgsGeneric">Misnamed class BuiltinDetctionArgsGeneric will be removed</a></li>
+ </ol>
+
+ <p>
+ API Changes prior to CDT 10.0 / 2020-09.
+ </p>
+ <p>
+ Prior to CDT 10 release API changes were published as part of the <a
+ href="https://wiki.eclipse.org/CDT/User/NewInCDT">New and Noteworthy</a> entries for that release. From CDT 10
+ forward breaking API changes are included in this document.
+ </p>
+
+ <hr>
+ <h2>API Changes in CDT 10.5.0.</h2>
+ <h3>1. <a name="jsoncdb">Package org.eclipse.cdt.cmake.is.core.participant has been renamed to
+ org.eclipse.cdt.jsoncdb.core.participant.</a></h3>
+ <p>
+ Affects CMake build, indexer support.<br> Package org.eclipse.cdt.cmake.is.core.participant was inadvertently not marked as experimental.
+ Third-party compiler vendors that provide a plugin teaching Eclipse CDT their compiler specific command-line options
+ will have to update the import statements in their plugin's code.
+ See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=564349" target="_blank">Bug 564349</a>.
+ </p>
+
+ <hr>
+ <h2>API Changes in CDT 10.0.</h2>
+ <h3>1. <a name="java11">Eclipse CDT requires Java 11 as a minimum to build and run.</a></h3>
+ <p>
+ Java 11 or greater is required for CDT. This means that the BREE for all CDT bundles is now
+ Java 11. See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=562494" target="_blank">Bug 562494</a>.
+ </p>
+ <p>
+ The previous workaround for single-sourcing Java 8 and Java 11 has been removed. This means the
+ org.eclipse.tools.templates.freemarker.java11 bundle fragment has been removed. See <a
+ href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=563494" target="_blank">Bug 563494</a>.
+ </p>
+
+ <h3>2. <a name="deprecatedRemovals">Some deprecated methods and classes have been removed.</a></h3>
+ <p>
+ Across the CDT code base some previously deprecated code has been removed.
+ <ul>
+ <li>EnvironmentReader.getRawEnvVars has been removed. Use EnvironmentReader.getEnvVars instead. See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=564123" target="_blank">Bug 564123</a>.</li>
+ <li>GDBJtagStartupTab.createRunOptionGroup has been removed. Override GDBJtagStartupTab.createRunGroup instead. See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=566462" target="_blank">Bug 566462</a>.</li>
+ <li>IGDBJtagConstants.ATTR_JTAG_DEVICE has been removed. Use IGDBJtagConstants.ATTR_JTAG_DEVICE_ID to persist device ID rather than device name. See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=566462" target="_blank">Bug 566462</a>.</li>
+ <li>IGDBJtagConstants.DEFAULT_JTAG_DEVICE has been removed. Use a local String if necessary. See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=566462" target="_blank">Bug 566462</a>.</li>
+ <li>IGDBJtagConstants.DEFAULT_JTAG_DEVICE_ID has been removed. Use a local String if necessary. See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=566462" target="_blank">Bug 566462</a>.</li>
+ <li>IGDBJtagDevice.getDefaultIpAddress has been removed. Implement IGDBJtagConnection and specify default_connection in JTagDevice extension XML instead. See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=566462" target="_blank">Bug 566462</a>.</li>
+ <li>IGDBJtagDevice.getDefaultPortNumber has been removed. Implement IGDBJtagConnection and specify default_connection in JTagDevice extension XML instead. See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=566462" target="_blank">Bug 566462</a>.</li>
+ <li>IGDBJtagDevice.doRemote has been removed. Implement IGDBJtagConnection.doRemote instead. See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=566462" target="_blank">Bug 566462</a>.</li>
+ <li>PTY constructor PTY(boolean console) has been removed. Use PTY(Mode mode) instead.</li>
+ <li>org.eclipse.cdt.core.browser.PathUtil has been removed. Use org.eclipse.cdt.utils.PathUtil instead. See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=564123" target="_blank">Bug 564123</a>.</li>
+ <li>org.eclipse.cdt.launch.ui.CMainTab has been removed. This was part of the long since removed CDI and has no use. See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=566530" target="_blank">Bug 566530</a>.</li>
+ <li>org.eclipse.cdt.launch.ui.CMainCoreTab has been removed. This was part of the long since removed CDI and has no use. See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=566530" target="_blank">Bug 566530</a>.</li>
+ <li>org.eclipse.cdt.launch.ui.CMainAttachTab has been removed. This was part of the long since removed CDI and has no use. See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=566530" target="_blank">Bug 566530</a>.</li>
+ </ul>
+ </p>
+
+ <h3>3. <a name="internals">Previously exported packages that were not API are now correctly marked as such.</a></h3>
+ <p>
+ A review of the previously exported API of CDT was performed. A lot of what was previously marked as public API has
+ now been marked as internal. This means the API has either had <code>x-internal</code> or <code>x-friends</code>
+ added to the <code>Export-Package</code> declarations.
+ </p>
+ <p>
+ The following bundles have had all their packages exported as internal See <a
+ href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=561389" target="_blank">Bug 561389</a>:
+ <ul>
+ <li>org.eclipse.cdt.cmake.ui</li>
+ <li>org.eclipse.cdt.autotools.core</li>
+ <li>org.eclipse.cdt.core.autotools.core</li>
+ <li>org.eclipse.cdt.core.autotools.ui</li>
+ <li>org.eclipse.cdt.autotools.tests</li>
+ <li>org.eclipse.cdt.autotools.ui.tests</li>
+ <li>org.eclipse.cdt.build.crossgcc</li>
+ <li>org.eclipse.cdt.cmake.ui</li>
+ <li>org.eclipse.cdt.build.gcc.core</li>
+ <li>org.eclipse.cdt.build.gcc.ui</li>
+ <li>org.eclipse.cdt.codan.checkers.ui.tests</li>
+ <li>org.eclipse.tools.templates.ui</li>
+ </ul>
+ </p>
+ <p>
+ The following bundles had additional changes made to be able to mark packages as internal:
+ <ul>
+ org.eclipse.cdt.cmake.ui: renamed package "org.eclipse.cdt.cmake.ui.properties"
+ to "org.eclipse.cdt.cmake.internal.ui.properties". See <a
+ href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=561390" target="_blank">Bug 561390</a>
+ </ul>
+ <ul>
+ org.eclipse.cdt.codan.checkers: marked package "org.eclipse.cdt.codan.checkers" as internal. See <a
+ href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=561582" target="_blank">Bug 561582</a>
+ </ul>
+ </p>
+
+ <h3>4. <a name="activators">Activators removed for all bundles where possible.</a></h3>
+ <p>
+ Where possible bundles have had their Activators removed. Some of these activators were API and are no longer
+ available. See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=561635" target="_blank">Bug 561635</a> for
+ workarounds where items that used to be in Activators are still needed, such as logging and plug-ids.
+ </p>
+ <p>
+ The following Activators that were API have been removed.
+ <ul>
+ <li>org.eclipse.tools.templates.ui</li>
+ </ul>
+ </p>
+
+ <h3>5. <a name="NewClassCreationWizardPage">NewClassCreationWizardPage breaking changes.</a></h3>
+ <p>
+ The NewClassCreationWizardPage has some API breaking changes due to how some protected fields, especially
+ <code>ALL_FIELDS</code> was used. While this breaks binary
+ compatibility, no code changes should be needed in extenders, just compiling against the new version. See <a
+ href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=510789" target="_blank">Bug 510789</a> and <a
+ href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=561770" target="_blank">Bug 561770</a>.
+ </p>
+
+ <h3>6. <a name="arduino">Arduino plug-ins and features removed.</a></h3>
+ <p>
+ The CDT Arduino plug-ins and features have been removed. Arduino can still be used with CDT with manual maintenance
+ of packages, etc. Or a third-party add-on such as <a href="https://eclipse.baeyens.it/">Sloeber</a> can be used as a
+ replacement.
+ </p>
+ <p>
+ The bundles and features that have been removed are:
+ <ul>
+ <li>org.eclipse.cdt.arduino-feature</li>
+ <li>org.eclipse.cdt.arduino.core.tests</li>
+ <li>org.eclipse.cdt.arduino.core</li>
+ <li>org.eclipse.cdt.arduino.ui</li>
+ </ul>
+ </p>
+ <p>
+ See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=562498" target="_blank">Bug 562498</a>.
+ </p>
+
+ <h3>7. <a name="oldparsers">Remove LRParser, XLC and UPC.</a></h3>
+ <p>
+ The LR, UPC and XLC support have been removed from CDT. The bundles have not been maintained for a while and were
+ not functional anymore.
+ </p>
+ <p>
+ The bundles and features that have been removed are:
+ <ul>
+ <li>org.eclipse.cdt.core.lrparser.feature</li>
+ <li>org.eclipse.cdt.core.lrparser.sdk.branding</li>
+ <li>org.eclipse.cdt.core.lrparser.sdk.feature</li>
+ <li>org.eclipse.cdt.core.lrparser.tests</li>
+ <li>org.eclipse.cdt.core.lrparser</li>
+ <li>org.eclipse.cdt.bupc-feature</li>
+ <li>org.eclipse.cdt.core.parser.upc.feature</li>
+ <li>org.eclipse.cdt.core.parser.upc.sdk.branding</li>
+ <li>org.eclipse.cdt.core.parser.upc.sdk.feature</li>
+ <li>org.eclipse.cdt.core.parser.upc.tests</li>
+ <li>org.eclipse.cdt.core.parser.upc</li>
+ <li>org.eclipse.cdt.managedbuilder.bupc.ui</li>
+ <li>org.eclipse.cdt.core.lrparser.xlc.tests</li>
+ <li>org.eclipse.cdt.core.lrparser.xlc</li>
+ <li>org.eclipse.cdt.errorparsers.xlc.tests</li>
+ <li>org.eclipse.cdt.errorparsers.xlc</li>
+ <li>org.eclipse.cdt.make.xlc.core</li>
+ <li>org.eclipse.cdt.managedbuilder.xlc.core</li>
+ <li>org.eclipse.cdt.managedbuilder.xlc.ui</li>
+ <li>org.eclipse.cdt.managedbuilder.xlupc.ui</li>
+ <li>org.eclipse.cdt.xlc.feature</li>
+ <li>org.eclipse.cdt.xlc.sdk-feature</li>
+ <li>org.eclipse.cdt.xlc.sdk.branding</li>
+ </ul>
+ </p>
+ <p>
+ See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=562498" target="_blank">Bug 562498</a>.
+ </p>
+
+ <h3>8. <a name="cdtutilsPlatform">Remove org.eclipse.cdt.utils.Platform.</a></h3>
+ <p>
+ Class org.eclipse.cdt.utils.Platform has been removed. Use org.eclipse.core.runtime.Platform instead.
+ </p>
+ <p>
+ See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=564123" target="_blank">Bug 564123</a>.
+ </p>
+
+ <h3>9. <a name="dsf">DSF and DSF-GDB API Changes</a></h3>
+ <p>
+ DSF and DSF-GDB have had some small API changes, but they are still breaking changes and are listed here:
+ <ul>
+ <li>org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.getCLILabel(ILaunchConfiguration, String) has been removed.
+ Use org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.getCLILabel(GdbLaunch, ILaunchConfiguration, String)
+ instead. See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=564553" target="_blank">Bug 564553</a>.</li>
+ </ul>
+ </p>
+
+ <h3>10. <a name="oldStyleProjects">Partial removal of CDT 3.X project support</a></h3>
+ <p>
+ CDT 3.X projects have been deprecated since CDT 4.0. Some classes supporting this old version have been removed:
+ <ul>
+ <li>org.eclipse.cdt.make.ui.wizards.ConvertToMakeProjectWizard</li>
+ <li>org.eclipse.cdt.make.ui.wizards.ConvertToMakeProjectWizardPage</li>
+ <li>org.eclipse.cdt.make.ui.wizards.MakeProjectWizardOptionPage</li>
+ <li>org.eclipse.cdt.make.ui.wizards.NewMakeCCProjectWizard</li>
+ <li>org.eclipse.cdt.make.ui.wizards.NewMakeCProjectWizard</li>
+ <li>org.eclipse.cdt.make.ui.wizards.NewMakeProjectWizard</li>
+ </ul>
+ </p>
+ <p>
+ See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=564949" target="_blank">Bug 564949</a>.
+ </p>
+
+ <h3>11. <a name="optionsAPI">Removal of CDT Core Options API</a></h3>
+ <p>
+ The CDT Core Options API and implementation has been removed as now it is a part of Eclipse Equinox 4.16 Preferences API, the removed packages are:
+ <ul>
+ <li>org.eclipse.cdt.core.options</li>
+ <li>org.eclipse.cdt.internal.core.options</li>
+ </ul>
+ </p>
+ <p>
+ See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=565154" target="_blank">Bug 565154</a>.
+ </p>
+
+ <h3>12. <a name="terminal">TM Terminal has major changes to support new color and preference functionality.</a></h3>
+ <p>
+ The TM Terminal's control (org.eclipse.tm.terminal.control) bundle has a major new version to support numerous API
+ changes to support features such as new colors, preference sharing and some other code clean-up.
+ </p>
+ <ul>
+ <li>org.eclipse.tm.terminal.model.Style removed and is mostly replaced by
+ org.eclipse.tm.terminal.model.TerminalStyle. To handle
+ new API and color handling, the entire Style class was replaced with TerminalStyle that operates in a similar way.
+ Because some methods in TerminalStyle have similar signatures to those in removed Style class a new class was
+ introduced to prevent accidental use of incorrect API. See <a
+ href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=549697" target="_blank">Bug 562495</a>.</li>
+ <li>org.eclipse.tm.terminal.model.StyleColor removed. Replaced by a new way of representing standard color in the
+ terminal using the new enum org.eclipse.tm.terminal.model.TerminalColor.. See <a
+ href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=549697" target="_blank">Bug 562495</a>.
+ </li>
+ <li>org.eclipse.tm.terminal.model.ITerminalTextData method taking or returning Style now use TerminalStyle. See <a
+ href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=549697" target="_blank">Bug 562495</a>.
+ </li>
+ <li>org.eclipse.tm.terminal.model.ITerminalTextDataReadOnly method taking or returning Style now use TerminalStyle.
+ See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=549697" target="_blank">Bug 562495</a>.
+ </li>
+ <li>org.eclipse.tm.terminal.model.LineSegment method taking or returning Style now use TerminalStyle. See <a
+ href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=549697" target="_blank">Bug 562495</a>.
+ </li>
+ </ul>
+
+ <h3>13. <a name="casesensitive">Environment Variables are always case sensitive in CDT.</a></h3>
+ <p>
+ The handling of environment and build variables in CDT has changed to being case sensitive. This means
+ some API changes to remove methods such as isVariableCaseSensitive (see full list below). The PATH and
+ dome other special environment variables in CDT are always uppercased, such as Path. See <a
+ href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=564123" target="_blank">Bug 564123</a>.
+ </p>
+ <ul>
+ <li>org.eclipse.cdt.managedbuilder.core.IBuilder.isVariableCaseSensitive() removed.</li>
+ <li>org.eclipse.cdt.managedbuilder.envvar.IEnvironmentVariableProvider.isVariableCaseSensitive() removed.</li>
+ <li>org.eclipse.cdt.core.envvar.IEnvironmentVariableManager.isVariableCaseSensitive() removed.</li></li>
+ </ul>
+
+ <h3>14. <a name="escaping">Environment variables no longer support \${ to avoid expanding.</a></h3>
+ <p>
+ This change is not literally an api change but will impact your code if you used \${ to not
+ expand environment variables. It may impact your code if you import environment variables
+ and had to workaround path\${childPath} resolving to path${childPath}. See <a
+ href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=560330" target="_blank">Bug 560330</a>.
+ </p>
+ <ul>
+ <li>org.eclipse.cdt.managedbuilder.core.IBuilder.isVariableCaseSensitive() removed.</li>
+ <li>org.eclipse.cdt.managedbuilder.envvar.IEnvironmentVariableProvider.isVariableCaseSensitive() removed.</li>
+ <li>org.eclipse.cdt.core.envvar.IEnvironmentVariableManager.isVariableCaseSensitive() removed.</li></li>
+ </ul>
+
+
+ <h3>15. <a name="autocloseable">The binary parsers are now implement AutoCloseable</a></h3>
+ <p>
+ The binary parsers part of CDT core now implement the AutoCloseable interface and can be used
+ in try-with-resources blocks. See list below for all the classes that are now AutoCloseable. See <a
+ href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=553674" target="_blank">Bug 553674</a>.
+ </p>
+ <ul>
+ <li>org.eclipse.cdt.utils.coff.Exe</li>
+ <li>org.eclipse.cdt.utils.coff.PE</li>
+ <li>org.eclipse.cdt.utils.coff.PE64</li>
+ <li>org.eclipse.cdt.utils.coff.PEArchive</li>
+ <li>org.eclipse.cdt.utils.elf.Elf</li>
+ <li>org.eclipse.cdt.utils.elf.ElfHelper</li>
+ <li>org.eclipse.cdt.utils.AR</li>
+ <li>org.eclipse.cdt.utils.elf.AR</li>
+ <li>org.eclipse.cdt.utils.som.AR</li>
+ <li>org.eclipse.cdt.utils.xcoff.AR</li>
+ <li>org.eclipse.cdt.utils.macho.AR</li>
+ </ul>
+
+
+ <h3>16. <a name="deductionremovedin10.0.0">ICPPASTDeductionGuide and ICPPASTParameterListOwner removed in CDT 10.0.1</a></h3>
+ <p>
+ Classes org.eclipse.cdt.core.dom.ast.cpp.ICPPASTDeductionGuide and org.eclipse.cdt.core.dom.ast.cpp.ICPPASTParameterListOwner
+ which were added for CDT 10.0.0 have been removed in CDT 10.0.1. See <a
+ href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=567261" target="_blank">Bug 567261</a>.
+ </p>
+
+
+ <hr>
+
+ <h2>Future Deletions</h2>
+ <p>
+ The items below can be removed after the given date or on the next major release, whichever is sooner. The details
+ and discussion on the removal happens in the Bugzilla associated with the entry below. See
+ the <a href="https://wiki.eclipse.org/CDT/policy">policy</a> for the details.
+ </p>
+
+ <h3>API Removals after June 2022</h3>
+
+ <h3>1. <a name="binaryparsers">32-bit Binary parsers with 64-bit replacements</a></h3>
+ <p>
+ The following binary parser classes have replacements, mostly due to these versions not supporting 64-bit variants
+ of the binary files. The new 64-bit parsers support both 32 and 64 bit files.
+ </p>
+ <ul>
+ <li>org.eclipse.cdt.utils.coff.parser.CygwinPEBinaryArchive</li>
+ <li>org.eclipse.cdt.utils.coff.parser.CygwinPEBinaryExecutable</li>
+ <li>org.eclipse.cdt.utils.coff.parser.CygwinPEBinaryObject</li>
+ <li>org.eclipse.cdt.utils.coff.parser.CygwinPEBinaryShared</li>
+ <li>org.eclipse.cdt.utils.coff.parser.CygwinPEParser</li>
+ <li>org.eclipse.cdt.utils.coff.parser.CygwinSymbol</li>
+ <li>org.eclipse.cdt.utils.coff.parser.PEBinaryArchive</li>
+ <li>org.eclipse.cdt.utils.coff.parser.PEBinaryExecutable</li>
+ <li>org.eclipse.cdt.utils.coff.parser.PEBinaryObject</li>
+ <li>org.eclipse.cdt.utils.coff.parser.PEBinaryShared</li>
+ <li>org.eclipse.cdt.utils.coff.parser.PEParser</li>
+ <li>org.eclipse.cdt.utils.macho.parser.MachOBinaryArchive</li>
+ <li>org.eclipse.cdt.utils.macho.parser.MachOBinaryExecutable</li>
+ <li>org.eclipse.cdt.utils.macho.parser.MachOBinaryObject</li>
+ <li>org.eclipse.cdt.utils.macho.parser.MachOBinaryShared</li>
+ <li>org.eclipse.cdt.utils.macho.parser.MachOParser</li>
+ </ul>
+ <p>
+ See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=562495" target="_blank">Bug 562495</a>.
+ </p>
+
+ <h3>2. <a name="baudrate">BaudRate enum in org.eclipse.cdt.serial</a></h3>
+ <p>
+ The BaudRate enum in org.eclipse.cdt.serial package will be removed. The following
+ APIs will be removed, listed with their replacement.
+ </p>
+ <ul>
+ <li>org.eclipse.cdt.serial.BaudRate, use org.eclipse.cdt.serial.StandardBaudRates to obtain typical baud rate values
+ </li>
+ <li>org.eclipse.cdt.serial.SerialPort.setBaudRate(BaudRate), use
+ org.eclipse.cdt.serial.SerialPort.setBaudRateValue(int) instead</li>
+ <li>org.eclipse.cdt.serial.SerialPort.getBaudRate(), use org.eclipse.cdt.serial.SerialPort.getBaudRateValue()
+ instead</li>
+ <li>org.eclipse.tm.terminal.connector.cdtserial.connector.SerialSettings.getBaudRate(), use
+ org.eclipse.tm.terminal.connector.cdtserial.connector.SerialSettings.getBaudRateValue() instead</li>
+ <li>org.eclipse.tm.terminal.connector.cdtserial.connector.SerialSettings.setBaudRate(BaudRate), use
+ org.eclipse.tm.terminal.connector.cdtserial.connector.SerialSettings.setBaudRateValue(int) instead</li>
+
+ </ul>
+ <p>
+ See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=563108" target="_blank">Bug 563108</a>.
+ </p>
+
+ <h3>API Removals after June 2023</h3>
+
+ <h3>1. <a name="gdbBackendDebuggerCommandLine">Rework of API to determine GDB command line in org.eclipse.cdt.dsf.gdb</a></h3>
+ <p>
+ To support presentation of the GDB command line within the process property page, a public method
+ getDebuggerCommandLineArray() has been added to the org.eclipse.cdt.dsf.gdb.service.IGDBBackend interface
+ and the following redundant protected methods will be removed:
+ </p>
+ <ul>
+ <li>org.eclipse.cdt.dsf.gdb.service.GDBBackend.getDebuggerCommandLine()</li>
+ <li>org.eclipse.cdt.dsf.gdb.service.GDBBackend.getGDBCommandLineArray()</li>
+ </ul>
+ <p>
+ Extenders that override the above protected methods should override
+ org.eclipse.cdt.dsf.gdb.service.IGDBBackend.getDebuggerCommandLineArray() instead.
+ </p>
+ <p>
+ See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=572944" target="_blank">Bug 572944</a>.
+ </p>
+
+ <h3>2. <a name="ManagedCommandLineGenerator.toManagedCommandLineInfo">Add ITool parameter to ManagedCommandLineGenerator.toManagedCommandLineInfo</a></h3>
+ <p>
+ To allow extenders to know the context of a generated command line, the ITool instance was added to ManagedCommandLineGenerator.toManagedCommandLineInfo
+ method and the method without the ITool parameter will be removed:
+ </p>
+ <ul>
+ <li>org.eclipse.cdt.managedbuilder.core.ManagedCommandLineGenerator.toManagedCommandLineInfo(String, String, String, String[], String, String, String, String[])</li>
+ </ul>
+ <p>
+ Extenders that override the above protected method should override
+ org.eclipse.cdt.managedbuilder.core.ManagedCommandLineGenerator.toManagedCommandLineInfo(ITool, String, String, String, String[], String, String, String, String[]) instead.
+ </p>
+ <p>
+ See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=573254" target="_blank">Bug 573254</a>.
+ </p>
+
+ <h3>3. <a name="GnuMakefileGenerator.addRuleForTool">Removed unneded boolean from function</a></h3>
+ <p>
+ The implementation for how post-build steps are generated was changed. The "bEmitPostBuildStepCall"-parameter is thus no longer needed.
+ </p>
+ <ul>
+ <li>org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator.addRuleForTool(ITool, StringBuffer, boolean, String, String, List&lt;String&gt;, Vector&lt;String&gt;, boolean)</li>
+ </ul>
+ <p>
+ Extenders that override the above protected method should override
+ org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator.addRuleForTool(ITool, StringBuffer, boolean, String, String, List&lt;String&gt;, Vector&lt;String&gt;) instead.
+ </p>
+ <p>
+ See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=573502" target="_blank">Bug 573502</a>.
+ </p>
+
+ <h3>4. <a name="GnuMakefileGenerator.addDefaultHeader">Changed methods from static to non-static</a></h3>
+ <p>
+ The implementation for generating the header in the make resources was changed. The following
+ APIs will be removed, listed with their (non-static) replacement.
+ </p>
+ <ul>
+ <li>org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator.populateDummyTargets(IConfiguration, IFile, boolean), use
+ org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator.generateDummyTargets(IConfiguration, IFile, boolean) instead.</li>
+ <li>org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator.populateDummyTargets(IResourceInfo, IFile, boolean), use
+ org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator.generateDummyTargets(IResourceInfo, IFile, boolean) instead.</li>
+ <li>org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator.addDefaultHeader(), use
+ org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator.addGenericHeader() instead.</li>
+ </ul>
+ <p>
+ See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=573722" target="_blank">Bug 573722</a>.
+ </p>
+
+
+ <h3>API Removals after December 2023</h3>
+
+ <h3>1. <a name="GnuMakefileGeneratorAPI">GnuMakefileGenerator is no longer part of API</a></h3>
+ <p>
+ The following classes will be removed from the API.
+ </p>
+ <ul>
+ <li>org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator</li>
+ <li>org.eclipse.cdt.managedbuilder.makegen.gnu.IManagedBuildGnuToolInfo</li>
+ <li>org.eclipse.cdt.managedbuilder.makegen.gnu.ManagedBuildGnuToolInfo</li>
+ </ul>
+ <p>
+ See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=505882" target="_blank">Bug 505882</a>.
+ </p>
+
+ <h3>2. <a name="Spawner.signals">The Spawner signal constants are nolonger API</a></h3>
+ <p>
+ The following constants will be removed from the Spawner API.
+ </p>
+ <ul>
+ <li>NOOP</li>
+ <li>HUP</li>
+ <li>KILL</li>
+ <li>TERM</li>
+ <li>INT</li>
+ <li>CTRLC</li>
+ </ul>
+
+
+ <h3>API Removals after March 2024</h3>
+
+ <h3>1. <a name="ArgletsMatcher">java.util.regex.Matcher use in JSONCDB API will be removed</a></h3>
+ <p>
+ The following fields will be removed from the API as it is not thread safe. Use the patten instead and call matcher(input) to obtain a matcher.
+ </p>
+ <ul>
+ <li>org.eclipse.cdt.jsoncdb.core.participant.Arglets.NameOptionMatcher.matcher</li>
+ <li>org.eclipse.cdt.jsoncdb.core.participant.DefaultToolDetectionParticipant.toolNameMatchersExt</li>
+ <li>org.eclipse.cdt.jsoncdb.core.participant.DefaultToolDetectionParticipant.toolNameMatchersExtBackslash</li>
+ </ul>
+ <p>
+ See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=578683" target="_blank">Bug 578683</a>.
+ </p>
+
+ <h3>API Removals after June 2024</h3>
+
+ <h3>1. <a name="newUIAbstractPage">org.eclipse.cdt.ui.newui.AbstractPage reduced visibility of many fields</a></h3>
+ <p>
+ The following fields will be removed from the API of org.eclipse.cdt.ui.newui.AbstractPage as they were never intended to be accessible by the design. As far as the current CDT developers know, no one is using this API.
+ </p>
+ <ul>
+ <li>org.eclipse.cdt.ui.newui.AbstractPage.noContentOnPage</li>
+ <li>org.eclipse.cdt.ui.newui.AbstractPage.displayedConfig</li>
+ <li>org.eclipse.cdt.ui.newui.AbstractPage.internalElement</li>
+ <li>org.eclipse.cdt.ui.newui.AbstractPage.isProject</li>
+ <li>org.eclipse.cdt.ui.newui.AbstractPage.isFolder</li>
+ <li>org.eclipse.cdt.ui.newui.AbstractPage.isFile</li>
+ <li>org.eclipse.cdt.ui.newui.AbstractPage.folder</li>
+ <li>org.eclipse.cdt.ui.newui.AbstractPage.itabs</li>
+ <li>org.eclipse.cdt.ui.newui.AbstractPage.currentTab</li>
+ </ul>
+ <p>
+ In addition, the following inner class wil be removed from the API.
+ <ul>
+ <li>org.eclipse.cdt.ui.newui.AbstractPage.InternalTab</li>
+ </ul>
+ </p>
+ <p>
+ See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=579666" target="_blank">Bug 579666</a>.
+ </p>
+
+ <h3>2. <a name="ArgletsMatcher2">java.util.regex.Matcher use in JSONCDB API will be removed</a></h3>
+ <p>
+ The following method will be removed from the API as it encourages non-safe constructs of reusing Matchers instead of Patterns.
+ </p>
+ <ul>
+ <li>org.eclipse.cdt.jsoncdb.core.participant.Arglets.BuiltinDetectionArgsGeneric.processArgument(IArgumentCollector, String, Matcher[])
+ - use org.eclipse.cdt.jsoncdb.core.participant.Arglets.BuiltinDetectionArgsGeneric.processArgument(IArgumentCollector, String, Pattern[]) instead</li>
+ </ul>
+ <p>
+ See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=579982" target="_blank">Bug 579982</a>.
+ </p>
+
+ <h3>3. <a name="BuiltinDetctionArgsGeneric">Misnamed class BuiltinDetctionArgsGeneric will be removed</a></h3>
+ <p>
+ The class BuiltinDetctionArgsGeneric will be removed. Use the correctly spelled BuiltinDetectionArgsGeneric instead.
+ </p>
+ <ul>
+ <li>org.eclipse.cdt.jsoncdb.core.participant.Arglets.BuiltinDetctionArgsGeneric</li>
+ </ul>
+
+
+</body>
+
+</html>
diff --git a/doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/dsf_programming_intro.html b/doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/dsf_programming_intro.html
index d88e2c60986..2d44f2c927c 100644
--- a/doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/dsf_programming_intro.html
+++ b/doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/dsf_programming_intro.html
@@ -9,7 +9,7 @@
<h4>Summary</h4>
This tutorial introduces the reader to common techniques and patterns
used in the Debugger Services Framework (DSF), which is developed by
-the <a href="http://www.eclipse.org/dsdp/dd/">C/C++ Development Tools
+the <a href="https://www.eclipse.org/dsdp/dd/">C/C++ Development Tools
(CDT)
project</a>.&nbsp; It also gives a good overview of the framework's
more advanced features.<br>
@@ -137,7 +137,7 @@ helpful in following this tutorial.&nbsp; In order to run the examples
in this tutorial the following is needed:<br>
<ol>
<li>Download and install the Eclipse IDE for Eclipse Committers (<a
- href="http://download.eclipse.org/eclipse/downloads">https://www.eclipse.org/downloads/</a>)</li>
+ href="https://download.eclipse.org/eclipse/downloads">https://www.eclipse.org/downloads/</a>)</li>
<li>Install the latest version of the Eclipse IDE for C/C++ and DSF:<br>
</li>
<ol style="list-style-type: lower-alpha;">
@@ -145,7 +145,7 @@ in this tutorial the following is needed:<br>
style="font-style: italic;">Programming Languages -&gt; Eclipse C/C++
Development Tools</span> feature found in
the Mars<span style="font-style: italic;">
-Discovery Site (http://download.eclipse.org/releases/mars)</span>.</li>
+Discovery Site (https://download.eclipse.org/releases/mars)</span>.</li>
</ol>
<li>Check out the <span style="font-style: italic;">org.eclipse.cdt.examples.dsf</span>
plugin, found in the <span style="font-style: italic;">https://git.eclipse.org/c/cdt/org.eclipse.cdt.git/</span>
@@ -1672,7 +1672,7 @@ related to packaging.<br>
</table>
<h3><a class="mozTocH4" name="mozTocId64152"></a></h3>
<p>For more information about the flexible hierarchy API, see the <a
- href="http://www.eclipsecon.org/2008/?page=sub/&amp;id=41">Debug Platform:
+ href="https://www.eclipsecon.org/2008/?page=sub/&amp;id=41">Debug Platform:
Custom Integration</a> tutorial at EclipseCon 2008.&nbsp; The flexible
hierarchy is described in the presentation starting with slide 29.<br>
</p>
diff --git a/doc/org.eclipse.cdt.doc.isv/guide/mbs/extensibilityGuide/Managed_Build_Extensibility.html b/doc/org.eclipse.cdt.doc.isv/guide/mbs/extensibilityGuide/Managed_Build_Extensibility.html
index c256a2d68ed..8f8755a9afc 100644
--- a/doc/org.eclipse.cdt.doc.isv/guide/mbs/extensibilityGuide/Managed_Build_Extensibility.html
+++ b/doc/org.eclipse.cdt.doc.isv/guide/mbs/extensibilityGuide/Managed_Build_Extensibility.html
@@ -8,7 +8,7 @@
<title>Managed Build System Extensibility Document</title>
<link rel="stylesheet"
- href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/cdt-home/cdt.css?cvsroot=Tools_Project"
+ href="https://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/cdt-home/cdt.css?cvsroot=Tools_Project"
type="text/css">
<link rel="stylesheet" href="../../../book.css" type="text/css">
<style>
@@ -72,7 +72,7 @@ table.MsoTableGrid
System Extensibility Document<br>
This document describes the design of the
managed build system and how to extend it.</td>
- <td width="28%"><img src="http://dev.eclipse.org/images/Idea.jpg"
+ <td width="28%"><img src="https://dev.eclipse.org/images/Idea.jpg"
alt="idea" height="86" width="120"></td>
</tr>
</tbody>
@@ -5702,7 +5702,7 @@ TYPE_PREBUILD_COMMANDS for more information.&nbsp; In other cases (e.g., C/C++)
dependency files are not required for the current build, but for
the next build. C/C++ builds can be treated in this manner as is
described in the following link:
- <a href="http://sourceware.org/automake/automake.html#Dependency-Tracking-Evolution">http://sourceware.org/automake/automake.html#Dependency-Tracking-Evolution</a>.&nbsp; Use the IManagedDependencyCommands interface for this mode.</p>
+ <a href="https://sourceware.org/automake/automake.html#Dependency-Tracking-Evolution">https://sourceware.org/automake/automake.html#Dependency-Tracking-Evolution</a>.&nbsp; Use the IManagedDependencyCommands interface for this mode.</p>
<p>Two sub-scenarios of this mode are to:
</p>
<ol>
diff --git a/doc/org.eclipse.cdt.doc.isv/guide/projectTemplateEngine/Howtodeveloptemplates.html b/doc/org.eclipse.cdt.doc.isv/guide/projectTemplateEngine/Howtodeveloptemplates.html
index d18706f98a5..8603a7001c5 100644
--- a/doc/org.eclipse.cdt.doc.isv/guide/projectTemplateEngine/Howtodeveloptemplates.html
+++ b/doc/org.eclipse.cdt.doc.isv/guide/projectTemplateEngine/Howtodeveloptemplates.html
@@ -295,7 +295,7 @@ add and delete items to it.
<code>pattern</code>: Use this attribute to specify the input
character pattern for the property using regular expressions. For more
information on regular expression patterns, refer to Java API document for
-<a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/Pattern.html">java.util.regex.Pattern</a>.
+<a href="https://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/Pattern.html">java.util.regex.Pattern</a>.
</p>
<li>
<p>
diff --git a/doc/org.eclipse.cdt.doc.isv/guide/projectTemplateEngine/Howtoregistertemplates.html b/doc/org.eclipse.cdt.doc.isv/guide/projectTemplateEngine/Howtoregistertemplates.html
index 845ef76bf14..ddbba79ac21 100644
--- a/doc/org.eclipse.cdt.doc.isv/guide/projectTemplateEngine/Howtoregistertemplates.html
+++ b/doc/org.eclipse.cdt.doc.isv/guide/projectTemplateEngine/Howtoregistertemplates.html
@@ -128,7 +128,7 @@ attribute.
<p>
For more information on regular expression patterns, refer to Java
API document for
-<a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/Pattern.html">java.util.regex.Pattern</a>.
+<a href="https://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/Pattern.html">java.util.regex.Pattern</a>.
</p>
<li>
<p>
diff --git a/doc/org.eclipse.cdt.doc.isv/pom.xml b/doc/org.eclipse.cdt.doc.isv/pom.xml
index 1bf2a63d9ce..f8aa5c63560 100644
--- a/doc/org.eclipse.cdt.doc.isv/pom.xml
+++ b/doc/org.eclipse.cdt.doc.isv/pom.xml
@@ -1,16 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+<!--
+ Copyright (c) 2011, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.eclipse.cdt</groupId>
<artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
+ <version>10.7.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
- <version>5.4.300-SNAPSHOT</version>
+ <version>5.4.1300-SNAPSHOT</version>
<artifactId>org.eclipse.cdt.doc.isv</artifactId>
<packaging>eclipse-plugin</packaging>
@@ -47,7 +58,7 @@
<plugin>
<groupId>org.eclipse.tycho.extras</groupId>
<artifactId>tycho-eclipserun-plugin</artifactId>
- <version>${tycho-extras-version}</version>
+ <version>${tycho-version}</version>
<configuration>
<appArgLine>-application org.eclipse.ant.core.antRunner -buildfile buildDoc.xml</appArgLine>
<dependencies>
@@ -63,6 +74,18 @@
<artifactId>org.eclipse.pde.core</artifactId>
<type>eclipse-plugin</type>
</dependency>
+ <dependency>
+ <artifactId>javax.annotation</artifactId>
+ <type>eclipse-plugin</type>
+ </dependency>
+ <dependency>
+ <artifactId>org.eclipse.osgi.compatibility.state</artifactId>
+ <type>eclipse-plugin</type>
+ </dependency>
+ <dependency>
+ <artifactId>org.eclipse.core.expressions.source</artifactId>
+ <type>eclipse-plugin</type>
+ </dependency>
</dependencies>
</configuration>
<executions>
@@ -74,6 +97,46 @@
</execution>
</executions>
</plugin>
+ <plugin>
+ <groupId>org.eclipse.tycho.extras</groupId>
+ <artifactId>tycho-document-bundle-plugin</artifactId>
+ <version>${tycho-version}</version>
+ <executions>
+ <execution>
+ <id>eclipse-javadoc</id>
+ <phase>generate-resources</phase>
+ <goals>
+ <goal>javadoc</goal>
+ </goals>
+ <configuration>
+ <outputDirectory>${project.basedir}/reference/api
+ </outputDirectory>
+ <javadocOptions>
+ <excludes>
+ <exclude>org.eclipse.cdt.internal.*</exclude>
+ </excludes>
+ <additionalArguments>
+ <additionalArgument>-windowtitle "Eclipse CDT API Specification"</additionalArgument>
+ <additionalArgument>-doctitle "Eclipse CDT API Specification"
+ </additionalArgument>
+ <additionalArgument>-link "https://docs.oracle.com/en/java/javase/11/docs/api/"</additionalArgument>
+ <additionalArgument>-linkoffline ../../org.eclipse.platform.doc.isv/reference/api
+ </additionalArgument>
+ <additionalArgument>-public</additionalArgument>
+ <additionalArgument>-header "Eclipse CDT 10.7.0"
+ </additionalArgument>
+ <additionalArgument>-bottom "Copyright (c) IBM Corp. and others 2004, 2021. All Rights Reserved."</additionalArgument>
+ <additionalArgument>-tag 'noimplement:a:Restriction:'</additionalArgument>
+ <additionalArgument>-tag 'noextend:a:Restriction:'</additionalArgument>
+ <additionalArgument>-tag 'noreference:a:Restriction:'</additionalArgument>
+ <additionalArgument>-tag 'noinstantiate:a:Restriction:'</additionalArgument>
+ <additionalArgument>-tag 'nooverride:a:Restriction:'</additionalArgument>
+ </additionalArguments>
+ </javadocOptions>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
</plugins>
</build>
</profile>
@@ -88,13 +151,12 @@
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.8</version>
<executions>
<execution>
<phase>compile</phase>
<configuration>
<target>
- <touch file="index/indexed_docs" mkdirs="true"/>
+ <touch file="index/indexed_docs" mkdirs="true" />
</target>
</configuration>
<goals>
diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/index.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/index.html
index a08978ba5a0..53bbd479cad 100644
--- a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/index.html
+++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/index.html
@@ -11,22 +11,42 @@
<p>The following extension points can be used to extend the capabilities of the
CDT infrastructure: </p>
<ul>
- <li><a href="org_eclipse_cdt_core_CBuildConsole.html">org.eclipse.cdt.core.CBuildConsole</a></li>
- <li><a href="org_eclipse_cdt_core_CConfigurationDataProvider.html">org.eclipse.cdt.core.CConfigurationDataProvider</a></li>
- <li><a href="org_eclipse_cdt_core_CIndex.html">org.eclipse.cdt.core.CIndex</a></li>
- <li><a href="org_eclipse_cdt_core_CIndexer.html">org.eclipse.cdt.core.CIndexer</a></li>
- <li><a href="org_eclipse_cdt_core_CodeFormatter.html">org.eclipse.cdt.core.CodeFormatter</a></li>
- <li><a href="org_eclipse_cdt_core_CProject.html">org.eclipse.cdt.core.CProject</a></li>
- <li><a href="org_eclipse_cdt_core_externalSettingsProvider.html">org.eclipse.cdt.core.externalSettingsProvider</a></li>
- <li><a href="org_eclipse_cdt_core_language.html">org.eclipse.cdt.core.language</a></li>
- <li><a href="org_eclipse_cdt_core_PathEntryContainerInitializer.html">org.eclipse.cdt.core.PathEntryContainerInitializer</a></li>
- <li><a href="org_eclipse_cdt_core_ProcessList.html">org.eclipse.cdt.core.ProcessList</a></li>
- <li><a href="org_eclipse_cdt_core_projectConverter.html">org.eclipse.cdt.core.projectConverter</a></li>
- <li><a href="org_eclipse_cdt_core_templateAssociations.html">org.eclipse.cdt.core.templateAssociations</a></li>
- <li><a href="org_eclipse_cdt_core_templateProcessTypes.html">org.eclipse.cdt.core.templateProcessTypes</a></li>
- <li><a href="org_eclipse_cdt_core_templates.html">org.eclipse.cdt.core.templates</a></li>
- <li><a href="org_eclipse_cdt_debug_core_BreakpointActionType.html">org.eclipse.cdt.debug.core.BreakpointActionType</a></li>
- <li><a href="org_eclipse_cdt_debug_core_BreakpointExtension.html">org.eclipse.cdt.debug.core.BreakpointExtension</a></li>
+ <li><a href="org_eclipse_cdt_core_BinaryParser.html">org.eclipse.cdt.core.BinaryParser</a></li>
+ <li><a href="org_eclipse_cdt_core_buildConfigProvider.html">org.eclipse.cdt.core.buildConfigProvider</a></li>
+ <li><a href="org_eclipse_cdt_core_CBuildConsole.html">org.eclipse.cdt.core.CBuildConsole</a></li>
+ <li><a href="org_eclipse_cdt_core_CConfigurationDataProvider.html">org.eclipse.cdt.core.CConfigurationDataProvider</a></li>
+ <li><a href="org_eclipse_cdt_core_CIndexer.html">org.eclipse.cdt.core.CIndexer</a></li>
+ <li><a href="org_eclipse_cdt_core_CIndex.html">org.eclipse.cdt.core.CIndex</a></li>
+ <li><a href="org_eclipse_cdt_core_CodeFormatter.html">org.eclipse.cdt.core.CodeFormatter</a></li>
+ <li><a href="org_eclipse_cdt_core_CommandLauncherFactory.html">org.eclipse.cdt.core.CommandLauncherFactory</a></li>
+ <li><a href="org_eclipse_cdt_core_CProjectDescriptionStorage.html">org.eclipse.cdt.core.CProjectDescriptionStorage</a></li>
+ <li><a href="org_eclipse_cdt_core_CProject.html">org.eclipse.cdt.core.CProject</a></li>
+ <li><a href="org_eclipse_cdt_core_EFSExtensionProvider.html">org.eclipse.cdt.core.EFSExtensionProvider</a></li>
+ <li><a href="org_eclipse_cdt_core_ErrorParser.html">org.eclipse.cdt.core.ErrorParser</a></li>
+ <li><a href="org_eclipse_cdt_core_externalSettingsProvider.html">org.eclipse.cdt.core.externalSettingsProvider</a></li>
+ <li><a href="org_eclipse_cdt_core_language.html">org.eclipse.cdt.core.language</a></li>
+ <li><a href="org_eclipse_cdt_core_LanguageSettingsProvider.html">org.eclipse.cdt.core.LanguageSettingsProvider</a></li>
+ <li><a href="org_eclipse_cdt_core_PathEntryContainerInitializer.html">org.eclipse.cdt.core.PathEntryContainerInitializer</a></li>
+ <li><a href="org_eclipse_cdt_core_PDOMASTProcessor.html">org.eclipse.cdt.core.PDOMASTProcessor</a></li>
+ <li><a href="org_eclipse_cdt_core_ProblemMarkerFilter.html">org.eclipse.cdt.core.ProblemMarkerFilter</a></li>
+ <li><a href="org_eclipse_cdt_core_ProcessList.html">org.eclipse.cdt.core.ProcessList</a></li>
+ <li><a href="org_eclipse_cdt_core_projectConverter.html">org.eclipse.cdt.core.projectConverter</a></li>
+ <li><a href="org_eclipse_cdt_core_RefreshExclusionFactory.html">org.eclipse.cdt.core.RefreshExclusionFactory</a></li>
+ <li><a href="org_eclipse_cdt_core_ScannerInfoProvider2.html">org.eclipse.cdt.core.ScannerInfoProvider2</a></li>
+ <li><a href="org_eclipse_cdt_core_ScannerInfoProvider.html">org.eclipse.cdt.core.ScannerInfoProvider</a></li>
+ <li><a href="org_eclipse_cdt_core_tagger.html">org.eclipse.cdt.core.tagger</a></li>
+ <li><a href="org_eclipse_cdt_core_templateAssociations.html">org.eclipse.cdt.core.templateAssociations</a></li>
+ <li><a href="org_eclipse_cdt_core_templateProcessTypes.html">org.eclipse.cdt.core.templateProcessTypes</a></li>
+ <li><a href="org_eclipse_cdt_core_templates.html">org.eclipse.cdt.core.templates</a></li>
+ <li><a href="org_eclipse_cdt_core_toolChainProvider.html">org.eclipse.cdt.core.toolChainProvider</a></li>
+ <li><a href="org_eclipse_cdt_core_UNCPathConverter.html">org.eclipse.cdt.core.UNCPathConverter</a></li>
+ <li><a href="org_eclipse_cdt_debug_core_BreakpointActionType.html">org.eclipse.cdt.debug.core.BreakpointActionType</a></li>
+ <li><a href="org_eclipse_cdt_debug_core_BreakpointExtension.html">org.eclipse.cdt.debug.core.BreakpointExtension</a></li>
+ <li><a href="org_eclipse_cdt_debug_core_ExecutablesImporter.html">org.eclipse.cdt.debug.core.ExecutablesImporter</a></li>
+ <li><a href="org_eclipse_cdt_debug_core_ExecutablesProvider.html">org.eclipse.cdt.debug.core.ExecutablesProvider</a></li>
+ <li><a href="org_eclipse_cdt_debug_core_SourceFilesProvider.html">org.eclipse.cdt.debug.core.SourceFilesProvider</a></li>
+ <li><a href="org_eclipse_cdt_debug_core_SourceRemappingProvider.html">org.eclipse.cdt.debug.core.SourceRemappingProvider</a></li>
+ <li><a href="org_eclipse_cdt_debug_core_supportedSourceContainerTypes.html">org.eclipse.cdt.debug.core.supportedSourceContainerTypes</a></li>
<li><a href="org_eclipse_cdt_make_core_MakeTargetBuilder.html">org.eclipse.cdt.make.core.MakeTargetBuilder</a></li>
<li><a href="org_eclipse_cdt_make_core_ScannerConfigurationDiscoveryProfile.html">org.eclipse.cdt.make.core.ScannerConfigurationDiscoveryProfile</a></li>
<li><a href="org_eclipse_cdt_make_ui_DiscoveryProfilePage.html">org.eclipse.cdt.make.ui.DiscoveryProfilePage</a></li>
@@ -35,21 +55,31 @@
<li><a href="org_eclipse_cdt_managedbuilder_core_ManagedBuildInfo.html">org.eclipse.cdt.managedbuilder.core.ManagedBuildInfo</a></li>
<li><a href="org_eclipse_cdt_managedbuilder_core_projectConverter.html">org.eclipse.cdt.managedbuilder.core.projectConverter</a></li>
<li><a href="org_eclipse_cdt_managedbuilder_core_tcModificationInfo.html">org.eclipse.cdt.managedbuilder.core.tcModificationInfo</a></li>
+ <li><a href="org_eclipse_cdt_managedbuilder_ui_buildDefinitionsUI.html">org.eclipse.cdt.managedbuilder.ui.buildDefinitionsUI</a></li>
<li><a href="org_eclipse_cdt_managedbuilder_ui_newWizardPages.html">org.eclipse.cdt.managedbuilder.ui.newWizardPages</a></li>
+ <li><a href="org_eclipse_cdt_ui_callHierarchyProviders.html">org.eclipse.cdt.ui.callHierarchyProviders</a></li>
+ <li><a href="org_eclipse_cdt_ui_CCallHierarchy.html">org.eclipse.cdt.ui.CCallHierarchy</a></li>
<li><a href="org_eclipse_cdt_ui_CDTWizard.html">org.eclipse.cdt.ui.CDTWizard</a></li>
<li><a href="org_eclipse_cdt_ui_CHelpProvider.html">org.eclipse.cdt.ui.CHelpProvider</a></li>
<li><a href="org_eclipse_cdt_ui_completionProposalComputer.html">org.eclipse.cdt.ui.completionProposalComputer</a></li>
<li><a href="org_eclipse_cdt_ui_ConfigManager.html">org.eclipse.cdt.ui.ConfigManager</a></li>
<li><a href="org_eclipse_cdt_ui_cPropertyTab.html">org.eclipse.cdt.ui.cPropertyTab</a></li>
<li><a href="org_eclipse_cdt_ui_DocCommentOwner.html">org.eclipse.cdt.ui.DocCommentOwner</a></li>
+ <li><a href="org_eclipse_cdt_ui_externalSearchProviders.html">org.eclipse.cdt.ui.externalSearchProviders</a></li>
<li><a href="org_eclipse_cdt_ui_foldingStructureProviders.html">org.eclipse.cdt.ui.foldingStructureProviders</a></li>
<li><a href="org_eclipse_cdt_ui_HelpInfo.html">org.eclipse.cdt.ui.HelpInfo</a></li>
<li><a href="org_eclipse_cdt_ui_IndexerPage.html">org.eclipse.cdt.ui.IndexerPage</a></li>
+ <li><a href="org_eclipse_cdt_ui_LanguageSettingsProviderAssociation.html">org.eclipse.cdt.ui.LanguageSettingsProviderAssociation</a></li>
<li><a href="org_eclipse_cdt_ui_newCfgDialog.html">org.eclipse.cdt.ui.newCfgDialog</a></li>
+ <li><a href="org_eclipse_cdt_ui_newToolChainWizards.html">org.eclipse.cdt.ui.newToolChainWizards</a></li>
<li><a href="org_eclipse_cdt_ui_PathContainerPage.html">org.eclipse.cdt.ui.PathContainerPage</a></li>
<li><a href="org_eclipse_cdt_ui_ProposalFilter.html">org.eclipse.cdt.ui.ProposalFilter</a></li>
+ <li><a href="org_eclipse_cdt_ui_quickAssistProcessors.html">org.eclipse.cdt.ui.quickAssistProcessors</a></li>
<li><a href="org_eclipse_cdt_ui_quickFixProcessors.html">org.eclipse.cdt.ui.quickFixProcessors</a></li>
- <li><a href="org_eclipse_cdt_ui_textHovers.html">org.eclipse.cdt.ui.textHovers</a></li>
+ <li><a href="org_eclipse_cdt_ui_RefreshExclusionContributor.html">org.eclipse.cdt.ui.RefreshExclusionContributor</a></li>
+ <li><a href="org_eclipse_cdt_ui_semanticHighlighting.html">org.eclipse.cdt.ui.semanticHighlighting</a></li>
+ <li><a href="org_eclipse_cdt_ui_textHovers.html">org.eclipse.cdt.ui.textHovers</a></li>
+ <li><a href="org_eclipse_cdt_ui_workingSetConfigurations.html">org.eclipse.cdt.ui.workingSetConfigurations</a></li>
</ul>
</body>
diff --git a/doc/org.eclipse.cdt.doc.isv/topics_Guide.xml b/doc/org.eclipse.cdt.doc.isv/topics_Guide.xml
index f558b6e1f52..0f568894946 100644
--- a/doc/org.eclipse.cdt.doc.isv/topics_Guide.xml
+++ b/doc/org.eclipse.cdt.doc.isv/topics_Guide.xml
@@ -12,6 +12,7 @@
<topic label="Project Template Engine" href="guide/projectTemplateEngine/index.html"/>
<topic label="What's new in CDT Build System 4.0" href="guide/cdt_build_system/whats_new/4.0/whats_new_CBS_40.html"/>
<topic label="Migrating your tool-chain integration to CDT 4.0" href="guide/cdt_build_system/migration_guides/4.0/migration_guide_40.html"/>
+ <topic label="Deprecated API removals porting guide" href="guide/deprecated_API_removals.html"/>
<topic href="guide/dsf/intro/dsf_programming_intro.html" label="DSF Tutorial">
</topic>
</toc>
diff --git a/doc/org.eclipse.cdt.doc.user/.settings/org.eclipse.core.resources.prefs b/doc/org.eclipse.cdt.doc.user/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/doc/org.eclipse.cdt.doc.user/.settings/org.eclipse.jdt.core.prefs b/doc/org.eclipse.cdt.doc.user/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 2b6ecff8a01..00000000000
--- a/doc/org.eclipse.cdt.doc.user/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,464 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
-org.eclipse.jdt.core.codeComplete.argumentPrefixes=
-org.eclipse.jdt.core.codeComplete.argumentSuffixes=
-org.eclipse.jdt.core.codeComplete.fieldPrefixes=
-org.eclipse.jdt.core.codeComplete.fieldSuffixes=
-org.eclipse.jdt.core.codeComplete.localPrefixes=
-org.eclipse.jdt.core.codeComplete.localSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
-org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
-org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
-org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
-org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
-org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
-org.eclipse.jdt.core.compiler.problem.APILeak=warning
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
-org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
-org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
-org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
-org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
-org.eclipse.jdt.core.compiler.problem.nullReference=error
-org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
-org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
-org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
-org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
-org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
-org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
-org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
-org.eclipse.jdt.core.formatter.align_with_spaces=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
-org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
-org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
-org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
-org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=0
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
-org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
-org.eclipse.jdt.core.formatter.comment.format_block_comments=false
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
-org.eclipse.jdt.core.formatter.comment.format_line_comments=false
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
-org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
-org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
-org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.join_lines_in_comments=true
-org.eclipse.jdt.core.formatter.join_wrapped_lines=true
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=120
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_on_off_tags=true
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
-org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
-org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/doc/org.eclipse.cdt.doc.user/.settings/org.eclipse.jdt.ui.prefs b/doc/org.eclipse.cdt.doc.user/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index e44576346c4..00000000000
--- a/doc/org.eclipse.cdt.doc.user/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,133 +0,0 @@
-cleanup.add_default_serial_version_id=true
-cleanup.add_generated_serial_version_id=false
-cleanup.add_missing_annotations=true
-cleanup.add_missing_deprecated_annotations=true
-cleanup.add_missing_methods=false
-cleanup.add_missing_nls_tags=false
-cleanup.add_missing_override_annotations=true
-cleanup.add_missing_override_annotations_interface_methods=true
-cleanup.add_serial_version_id=false
-cleanup.always_use_blocks=true
-cleanup.always_use_parentheses_in_expressions=false
-cleanup.always_use_this_for_non_static_field_access=false
-cleanup.always_use_this_for_non_static_method_access=false
-cleanup.convert_functional_interfaces=false
-cleanup.convert_to_enhanced_for_loop=false
-cleanup.correct_indentation=false
-cleanup.format_source_code=true
-cleanup.format_source_code_changes_only=false
-cleanup.insert_inferred_type_arguments=false
-cleanup.make_local_variable_final=true
-cleanup.make_parameters_final=false
-cleanup.make_private_fields_final=true
-cleanup.make_type_abstract_if_missing_method=false
-cleanup.make_variable_declarations_final=false
-cleanup.never_use_blocks=false
-cleanup.never_use_parentheses_in_expressions=true
-cleanup.organize_imports=true
-cleanup.qualify_static_field_accesses_with_declaring_class=false
-cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-cleanup.qualify_static_member_accesses_with_declaring_class=false
-cleanup.qualify_static_method_accesses_with_declaring_class=false
-cleanup.remove_private_constructors=true
-cleanup.remove_redundant_modifiers=false
-cleanup.remove_redundant_semicolons=true
-cleanup.remove_redundant_type_arguments=true
-cleanup.remove_trailing_whitespaces=true
-cleanup.remove_trailing_whitespaces_all=true
-cleanup.remove_trailing_whitespaces_ignore_empty=false
-cleanup.remove_unnecessary_casts=true
-cleanup.remove_unnecessary_nls_tags=false
-cleanup.remove_unused_imports=true
-cleanup.remove_unused_local_variables=false
-cleanup.remove_unused_private_fields=true
-cleanup.remove_unused_private_members=false
-cleanup.remove_unused_private_methods=true
-cleanup.remove_unused_private_types=true
-cleanup.sort_members=false
-cleanup.sort_members_all=false
-cleanup.use_anonymous_class_creation=false
-cleanup.use_blocks=false
-cleanup.use_blocks_only_for_return_and_throw=false
-cleanup.use_lambda=true
-cleanup.use_parentheses_in_expressions=false
-cleanup.use_this_for_non_static_field_access=false
-cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-cleanup.use_this_for_non_static_method_access=false
-cleanup.use_this_for_non_static_method_access_only_if_necessary=true
-cleanup_profile=_CDT
-cleanup_settings_version=2
-eclipse.preferences.version=1
-editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=_CDT
-formatter_settings_version=14
-internal.default.compliance=user
-org.eclipse.jdt.ui.exception.name=e
-org.eclipse.jdt.ui.gettersetter.use.is=true
-org.eclipse.jdt.ui.ignorelowercasenames=true
-org.eclipse.jdt.ui.importorder=java;javax;org;com;
-org.eclipse.jdt.ui.keywordthis=false
-org.eclipse.jdt.ui.ondemandthreshold=1000
-org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.staticondemandthreshold=1000
-org.eclipse.jdt.ui.text.custom_code_templates=
-sp_cleanup.add_default_serial_version_id=true
-sp_cleanup.add_generated_serial_version_id=false
-sp_cleanup.add_missing_annotations=true
-sp_cleanup.add_missing_deprecated_annotations=true
-sp_cleanup.add_missing_methods=false
-sp_cleanup.add_missing_nls_tags=false
-sp_cleanup.add_missing_override_annotations=true
-sp_cleanup.add_missing_override_annotations_interface_methods=true
-sp_cleanup.add_serial_version_id=false
-sp_cleanup.always_use_blocks=true
-sp_cleanup.always_use_parentheses_in_expressions=false
-sp_cleanup.always_use_this_for_non_static_field_access=false
-sp_cleanup.always_use_this_for_non_static_method_access=false
-sp_cleanup.convert_functional_interfaces=false
-sp_cleanup.convert_to_enhanced_for_loop=false
-sp_cleanup.correct_indentation=false
-sp_cleanup.format_source_code=true
-sp_cleanup.format_source_code_changes_only=false
-sp_cleanup.insert_inferred_type_arguments=false
-sp_cleanup.make_local_variable_final=true
-sp_cleanup.make_parameters_final=false
-sp_cleanup.make_private_fields_final=true
-sp_cleanup.make_type_abstract_if_missing_method=false
-sp_cleanup.make_variable_declarations_final=false
-sp_cleanup.never_use_blocks=false
-sp_cleanup.never_use_parentheses_in_expressions=true
-sp_cleanup.on_save_use_additional_actions=true
-sp_cleanup.organize_imports=true
-sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
-sp_cleanup.remove_private_constructors=true
-sp_cleanup.remove_redundant_modifiers=false
-sp_cleanup.remove_redundant_semicolons=true
-sp_cleanup.remove_redundant_type_arguments=true
-sp_cleanup.remove_trailing_whitespaces=true
-sp_cleanup.remove_trailing_whitespaces_all=true
-sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
-sp_cleanup.remove_unnecessary_casts=true
-sp_cleanup.remove_unnecessary_nls_tags=false
-sp_cleanup.remove_unused_imports=true
-sp_cleanup.remove_unused_local_variables=false
-sp_cleanup.remove_unused_private_fields=true
-sp_cleanup.remove_unused_private_members=false
-sp_cleanup.remove_unused_private_methods=true
-sp_cleanup.remove_unused_private_types=true
-sp_cleanup.sort_members=false
-sp_cleanup.sort_members_all=false
-sp_cleanup.use_anonymous_class_creation=false
-sp_cleanup.use_blocks=false
-sp_cleanup.use_blocks_only_for_return_and_throw=false
-sp_cleanup.use_lambda=true
-sp_cleanup.use_parentheses_in_expressions=false
-sp_cleanup.use_this_for_non_static_field_access=false
-sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-sp_cleanup.use_this_for_non_static_method_access=false
-sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/doc/org.eclipse.cdt.doc.user/META-INF/MANIFEST.MF b/doc/org.eclipse.cdt.doc.user/META-INF/MANIFEST.MF
index 024829378fc..c25c1634892 100644
--- a/doc/org.eclipse.cdt.doc.user/META-INF/MANIFEST.MF
+++ b/doc/org.eclipse.cdt.doc.user/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.doc.user; singleton:=true
-Bundle-Version: 5.4.300.qualifier
+Bundle-Version: 5.4.1200.qualifier
Bundle-Vendor: %providerName
Bundle-Localization: plugin
Bundle-ActivationPolicy: lazy
diff --git a/doc/org.eclipse.cdt.doc.user/about.html b/doc/org.eclipse.cdt.doc.user/about.html
index 164f781a8fd..b3134865230 100644
--- a/doc/org.eclipse.cdt.doc.user/about.html
+++ b/doc/org.eclipse.cdt.doc.user/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_before_you_begin.htm b/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_before_you_begin.htm
index 59bf0fb7dd3..fbd44759573 100644
--- a/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_before_you_begin.htm
+++ b/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_before_you_begin.htm
@@ -32,14 +32,14 @@ MinGW produces native Windows executables that do not require a separate runtime
<ul>
<li><p>For <strong>MinGW</strong>, it is recommended to use the MinGW installer, mingw-get, to manage your
MinGW installation. Download and run the lateset mingw-get-inst package from the
-<a href="http://sourceforge.net/projects/mingw/files">MinGW Downloads page.</a>
+<a href="https://sourceforge.net/projects/mingw/files">MinGW Downloads page.</a>
The CDT MinGW toolchain will find this install if it is located in the default C:\MinGW directory, the MinGW bin
directory is placed in your path, or if the MinGW location is stored in the MINGW_HOME environment variable.</p>
<p>Note that the Wascana IDE has been discontinued.</p>
</li>
<li><p><strong>Cygwin</strong> can be installed from the Cygwin site at
-<a href="http://www.cygwin.com">http://www.cygwin.com</a>. You need to manually select
+<a href="https://www.cygwin.com">https://www.cygwin.com</a>. You need to manually select
the gcc, gdb, and make packages to install the toolchain.</p>
</li>
@@ -57,7 +57,7 @@ For instructions about installing the GNU toolchain for Linux, see the instructi
<h2>Mac OS X</h2>
The CDT supports the Apple GNU toolchain that is included in with the Xcode IDE. It can be downloaded
-from the Apple's developer site, <a href="http://developer.apple.com/">http://developer.apple.com</a>
+from the Apple's developer site, <a href="https://developer.apple.com/">https://developer.apple.com</a>
<h2>Other Platforms</h2>
<p>The GNU toolchain is supported on all platforms that the CDT supports. For instructions about installing the GNU toolchain
diff --git a/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_build_over.htm b/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_build_over.htm
index 82365073e1d..e95b6ebfe67 100644
--- a/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_build_over.htm
+++ b/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_build_over.htm
@@ -30,7 +30,7 @@ used.
a Windows environment.&nbsp; While running the cygwin installation,
ensure <span class="typewriter">gcc</span> and <span class="typewriter">make</span> are selected since they are not
installed by default. For more information, see <a
- href="http://www.cygwin.com">http://www.cygwin.com</a>. If you are a
+ href="https://www.cygwin.com">https://www.cygwin.com</a>. If you are a
Red Hat user, all that you need to do to build your project is included
in the Red Hat Linux installation.
For other operating systems, please refer to your installation
diff --git a/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_over_cdt.htm b/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_over_cdt.htm
index 9bc75e87721..5cfbeacffe0 100644
--- a/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_over_cdt.htm
+++ b/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_over_cdt.htm
@@ -16,8 +16,8 @@ Eclipse, see <strong>Workbench User Guide &gt; Concepts &gt; Workbench</strong>.
<p>The CDT provides a C/C++ IDE that simplifies many of the same tools that you can use from the command line. The CDT can also communicate with many external utilities and interpret their responses, for example:
<ul>
<li>Build (such as make).</li>
- <li>Compile (such as gcc). For more information, see <a href="http://gcc.gnu.org">http://gcc.gnu.org</a>.</li>
- <li>Debug (such as gdb). For more information, see <a href="http://sources.redhat.com/gdb/">http://sources.redhat.com/gdb/</a>.</li>
+ <li>Compile (such as gcc). For more information, see <a href="https://gcc.gnu.org">https://gcc.gnu.org</a>.</li>
+ <li>Debug (such as gdb). For more information, see <a href="https://sources.redhat.com/gdb/">https://sources.redhat.com/gdb/</a>.</li>
</ul>
<strong>Note: </strong> while make, gcc and gdb are the examples used in the documentation, virtually any similar set of tools or utilities could be used.</p>
@@ -49,15 +49,15 @@ installed, click <strong>Help &gt; Check for Updates</strong>.</p>
<h3>Additional information</h3>
<p>For more information on the Eclipse CDT project,
-refer to <a href="http://www.eclipse.org/cdt/">http://www.eclipse.org/cdt/</a>:
+refer to <a href="https://www.eclipse.org/cdt/">https://www.eclipse.org/cdt/</a>:
</p>
<ul>
<li><a href="news://news.eclipse.org/eclipse.tools.cdt" target="_top">CDT newsgroup</a>:
The place to ask questions about how to use the CDT.</li>
-<li><a href="http://wiki.eclipse.org/index.php/CDT/User/FAQ">User FAQ</a>:
+<li><a href="https://wiki.eclipse.org/index.php/CDT/User/FAQ">User FAQ</a>:
Provides answers to the most common questions about using the CDT.</li>
-<li><a href="http://wiki.eclipse.org/index.php/CDT">CDT Wiki</a>:
+<li><a href="https://wiki.eclipse.org/index.php/CDT">CDT Wiki</a>:
This is the main source for information around CDT.</li>
</ul>
diff --git a/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_templates.htm b/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_templates.htm
index ab72db5d9c6..ab72db5d9c6 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_templates.htm
+++ b/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_templates.htm
diff --git a/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_whatsnew.htm b/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_whatsnew.htm
index a054ae7cfa2..36a7a34dcf0 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_whatsnew.htm
+++ b/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_whatsnew.htm
@@ -11,7 +11,7 @@
<body>
<div>
<h1 id="top">CDT - New and Noteworthy</h1>
- <p>See <a href="http://wiki.eclipse.org/CDT/User/NewInCDT">What's new in CDT</a> on the CDT Wiki
+ <p>See <a href="https://wiki.eclipse.org/CDT/User/NewInCDT">What's new in CDT</a> on the CDT Wiki
which contains the most recent information.
</p>
diff --git a/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_whatsnew_60.htm b/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_whatsnew_60.htm
index 242ac24d2a4..cef2bec7fa0 100644
--- a/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_whatsnew_60.htm
+++ b/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_whatsnew_60.htm
@@ -17,7 +17,7 @@ tr {vertical-align: top;}
<div role="main">
<h1 id="top">CDT 6.0 - New and Noteworthy</h1>
<p>Note: "New and Noteworthy" for <a href="#5.0">previous versions</a> is at the bottom of this file.</p>
-<p>See <a href="http://wiki.eclipse.org/CDT/User/NewIn60">What's new in CDT 6.0</a> on the CDT wiki;
+<p>See <a href="https://wiki.eclipse.org/CDT/User/NewIn60">What's new in CDT 6.0</a> on the CDT wiki;
may contain other information.
</p>
@@ -266,7 +266,7 @@ may contain other information.
<p><img src="../images/60/New_cdtwsconfig_wsContextMenu.png" alt="Activating and building working set configurations through context menu"></p>
</li>
- <li>For more details, see the <a href="http://wiki.eclipse.org/CDT/designs/workingSets">working sets
+ <li>For more details, see the <a href="https://wiki.eclipse.org/CDT/designs/workingSets">working sets
design document</a></li>
</ul></li>
</ul>
@@ -342,7 +342,7 @@ may contain other information.
<p style="text-align:right"><span class="bold">DSF Integration</span></p>
</td>
<td>DSF (Eclipse Debugger Services Framework) integrated. See <a
- href="http://www.eclipse.org/dsdp/dd/development/relnotes/dd_news-1.1.html">DSF features</a> for more information.</td>
+ href="https://www.eclipse.org/dsdp/dd/development/relnotes/dd_news-1.1.html">DSF features</a> for more information.</td>
</tr>
<tr>
<td>
@@ -364,7 +364,7 @@ may contain other information.
<p style="text-align:right"><span class="bold">Bugs fixed</span></p>
</td>
<td>Bugs fixed in this release:
- <a href="http://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&classification=Tools&product=CDT&target_milestone=6.0&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&keywords_type=allwords&keywords=&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&resolution=FIXED&emailtype1=exact&email1=&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0=">
+ <a href="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&classification=Tools&product=CDT&target_milestone=6.0&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&keywords_type=allwords&keywords=&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&resolution=FIXED&emailtype1=exact&email1=&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0=">
CDT 6.0 bug fixes</a>
</td>
@@ -393,7 +393,7 @@ may contain other information.
<p>CDT 5.0 includes new features in Editor, Call Hierarchy,
Refactoring, Indexer, Projects &amp; Build, and Debug.
<p>
-See <a href="http://wiki.eclipse.org/CDT/User/NewIn50">What's New in CDT 5.0</a> on the CDT Wiki for more information including screen shots.
+See <a href="https://wiki.eclipse.org/CDT/User/NewIn50">What's New in CDT 5.0</a> on the CDT Wiki for more information including screen shots.
<p>Highlights include:
@@ -460,7 +460,7 @@ See <a href="http://wiki.eclipse.org/CDT/User/NewIn50">What's New in CDT 5.0</a>
<p><a href="cdt_c_whatsnew_80.htm">CDT 8.0 - New and Noteworthy</a></p>
<p><a href="cdt_c_whatsnew_70.htm">CDT 7.0 - New and Noteworthy</a></p>
<p><a href="cdt_c_whatsnew_60.htm">CDT 6.0 - New and Noteworthy</a></p>
-<p><a href="http://wiki.eclipse.org/CDT/User/NewIn50">CDT 5.0 - New and Noteworthy</a></p>
+<p><a href="https://wiki.eclipse.org/CDT/User/NewIn50">CDT 5.0 - New and Noteworthy</a></p>
</div>
</body>
diff --git a/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_whatsnew_70.htm b/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_whatsnew_70.htm
index 8afa6c73da8..1c63d395f04 100644
--- a/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_whatsnew_70.htm
+++ b/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_whatsnew_70.htm
@@ -16,7 +16,7 @@ tr {vertical-align: top;}
<body>
<div role="main">
<h1 id="top">CDT 7.0 - New and Noteworthy</h1>
-<p>See <a href="http://wiki.eclipse.org/CDT/User/NewIn70">What's new in CDT 7.0</a> on the CDT wiki
+<p>See <a href="https://wiki.eclipse.org/CDT/User/NewIn70">What's new in CDT 7.0</a> on the CDT wiki
which may contain more recent information.
</p>
<table cellpadding="10" cellspacing="0" width="600">
@@ -75,7 +75,7 @@ which may contain more recent information.
<p style="text-align:right"><span class="bold">Code Analysis</span></p>
</td>
<td>New code analysis framework is introduced, called Codan. See this
- <a href="http://wiki.eclipse.org/CDT/designs/StaticAnalysis">wiki</a> for details.
+ <a href="https://wiki.eclipse.org/CDT/designs/StaticAnalysis">wiki</a> for details.
<p><img src="../images/70/CDT70_Codan.png" alt="Codan"></img></p>
<p>&nbsp;</p>
</td>
@@ -274,19 +274,19 @@ which may contain more recent information.
<li><strong>DSF-GDB</strong>. The default debugger for the CDT is now using a different debugging framework and is called DSF-GDB.
It provides better support for newer GDB versions, such as 6.7, 6.8 and 7.x, for older versions you would
have to edit preferences to use the old framework (CDI) by default. See full list of DSF-GDB features
- <a href="http://www.eclipse.org/dsdp/dd/development/relnotes/dd_news-1.1.html">here</a>.
+ <a href="https://www.eclipse.org/dsdp/dd/development/relnotes/dd_news-1.1.html">here</a>.
</li>
<li><strong>GDB Tracepoints</strong> are now supported. See the
- <a href="http://wiki.eclipse.org/CDT/designs/Tracepoints">wiki page</a>. Available in DSF-GDB only.
+ <a href="https://wiki.eclipse.org/CDT/designs/Tracepoints">wiki page</a>. Available in DSF-GDB only.
</li>
<li><strong>Reverse Debugging</strong> which allows to undo execution.
Requires GDB 7.0 or newer and only available on Linux. Available in DSF-GDB only.
- A webinar on the topic is available <a href="http://live.eclipse.org/node/723">here</a>.
+ A webinar on the topic is available <a href="https://live.eclipse.org/node/723">here</a>.
</li>
<li><strong>Run To Line</strong> feature now allows to run to any line in the program, instead of only lines within the same method.
</li>
<li><strong>Pretty Printing</strong> feature of GDB is supported. Requires GDB 7.0 or newer as well as python, and GDB's python pretty-printers.
- Some information available <a href="http://sourceware.org/gdb/wiki/STLSupport">here</a>.
+ Some information available <a href="https://sourceware.org/gdb/wiki/STLSupport">here</a>.
</li>
<li><strong>Interrupts on Windows</strong> platform while debugging application got improved support.
</li>
@@ -341,7 +341,7 @@ which may contain more recent information.
<p><a href="cdt_c_whatsnew_80.htm">CDT 8.0 - New and Noteworthy</a></p>
<p><a href="cdt_c_whatsnew_70.htm">CDT 7.0 - New and Noteworthy</a></p>
<p><a href="cdt_c_whatsnew_60.htm">CDT 6.0 - New and Noteworthy</a></p>
-<p><a href="http://wiki.eclipse.org/CDT/User/NewIn50">CDT 5.0 - New and Noteworthy</a></p>
+<p><a href="https://wiki.eclipse.org/CDT/User/NewIn50">CDT 5.0 - New and Noteworthy</a></p>
<p><a href="#top">Back to Top</a>
diff --git a/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_whatsnew_80.htm b/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_whatsnew_80.htm
index 6da5fda9814..c766f4ac3db 100644
--- a/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_whatsnew_80.htm
+++ b/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_whatsnew_80.htm
@@ -16,7 +16,7 @@ tr {vertical-align: top;}
<body>
<div role="main">
<h1 id="top">CDT 8.0 - New and Noteworthy</h1>
-<p>See <a href="http://wiki.eclipse.org/CDT/User/NewIn80">What's new in CDT 8.0</a> on the CDT Wiki
+<p>See <a href="https://wiki.eclipse.org/CDT/User/NewIn80">What's new in CDT 8.0</a> on the CDT Wiki
which may contain more recent information.
</p>
<table cellpadding="10" cellspacing="0" width="600">
@@ -191,13 +191,13 @@ which may contain more recent information.
</td>
<td>
<ul><li>The "C-Build console" is now named "CDT Build Console"
- </li><li>It is now possible to open the CDT Build Console before performing a build. See <a href="http://bugs.eclipse.org/320765" class="external text" title="http://bugs.eclipse.org/320765" rel="nofollow">bug 320765</a>. Note that operations on the console will require the user to first select a project. The below screenshot shows the new access to the CDT Build Console.
+ </li><li>It is now possible to open the CDT Build Console before performing a build. See <a href="https://bugs.eclipse.org/320765" class="external text" title="https://bugs.eclipse.org/320765" rel="nofollow">bug 320765</a>. Note that operations on the console will require the user to first select a project. The below screenshot shows the new access to the CDT Build Console.
</li></ul>
<p><img src="../images/80/CDTConsoleStart.jpg" alt="Image:CDTConsoleStart.jpg"></img></p>
- <ul><li>"CDT Global Build Console" got introduced. This console combines output from all referenced projects being built in one view. See <a href="http://bugs.eclipse.org/309113" class="external text" title="http://bugs.eclipse.org/309113" rel="nofollow">bug 309113</a>.
+ <ul><li>"CDT Global Build Console" got introduced. This console combines output from all referenced projects being built in one view. See <a href="https://bugs.eclipse.org/309113" class="external text" title="https://bugs.eclipse.org/309113" rel="nofollow">bug 309113</a>.
</li></ul>
<p><img src="../images/80/CDTGlobalBuildConsole.jpg" alt="Image:CDTGlobalBuildConsole.jpg"></img></p>
- <ul><li>Differentiate color highlighting in build output for error, warning and info problem markers. See <a href="http://bugs.eclipse.org/307211" class="external text" title="http://bugs.eclipse.org/307211" rel="nofollow">bug 307211</a>.
+ <ul><li>Differentiate color highlighting in build output for error, warning and info problem markers. See <a href="https://bugs.eclipse.org/307211" class="external text" title="https://bugs.eclipse.org/307211" rel="nofollow">bug 307211</a>.
</li></ul>
<p><img src="../images/80/Bug_307211.png" alt="Image:Bug 307211.png"></img></p>
</td>
@@ -266,7 +266,7 @@ which may contain more recent information.
</p><p>Furthermore, for an attach session (local or remote), there is even no need to specify the binary; for a local attach, GDB can find the binary automatically, while for a remote attach, CDT will prompt for it when it needs it.
</p>
<p><img src="../images/80/Noprojectdebug.png" alt="Image:Noprojectdebug.png"></img></p>
- <p>This feature was completed April 26th, 2011 as part of <a href="http://bugs.eclipse.org/343861" class="external text" title="http://bugs.eclipse.org/343861" rel="nofollow">Bug 343861</a>
+ <p>This feature was completed April 26th, 2011 as part of <a href="https://bugs.eclipse.org/343861" class="external text" title="https://bugs.eclipse.org/343861" rel="nofollow">Bug 343861</a>
</td>
</tr>
<tr>
@@ -281,7 +281,7 @@ which may contain more recent information.
<p><br> <b>With pretty-printing:</b>
</p>
<p><img src="../images/80/FullPrettyPrint.png" alt="Image:FullPrettyPrint.png"></img></p>
- <p><br> This feature has been contributed by Jens Elmenthaler to CDT 8.0 as of November 4th, 2010, as part of <a href="http://bugs.eclipse.org/302121" class="external text" title="http://bugs.eclipse.org/302121" rel="nofollow">Bug 302121</a>
+ <p><br> This feature has been contributed by Jens Elmenthaler to CDT 8.0 as of November 4th, 2010, as part of <a href="https://bugs.eclipse.org/302121" class="external text" title="https://bugs.eclipse.org/302121" rel="nofollow">Bug 302121</a>
</p><p><br> <b>Configuring GDB for pretty-printing:</b>
</p>
<ul><li>You will need to have python installed on your machine
@@ -310,7 +310,7 @@ end
<p style="text-align:right"><span class="bold">Support for pending breakpoints</span></p>
</td>
<td>
- <p>When a breakpoint is set in a dynamically-linked library that was not loaded yet, the breakpoint will now work, once the library is loaded. See <a href="http://bugs.eclipse.org/248595" class="external text" title="http://bugs.eclipse.org/248595" rel="nofollow">bug 248595</a>. This feature is currently only supported when using GDB 6.8 or later.
+ <p>When a breakpoint is set in a dynamically-linked library that was not loaded yet, the breakpoint will now work, once the library is loaded. See <a href="https://bugs.eclipse.org/248595" class="external text" title="https://bugs.eclipse.org/248595" rel="nofollow">bug 248595</a>. This feature is currently only supported when using GDB 6.8 or later.
</p>
</td>
</tr>
@@ -322,7 +322,7 @@ end
<p>By using the enhancements of GDB 7.1, DSF-GDB now shows the core on which each thread runs as an extra part of the Debug View label. The list of all cores on which a process is located is also added as a label. The below image shows the new feature.
</p>
<p><img src="../images/80/CoreLabels.png" alt="Image:CoreLabels.png"></img></p>
- </p><p>This feature has been implemented for CDT 8.0 as of July 6th, 2010, as part of <a href="http://bugs.eclipse.org/318230" class="external text" title="http://bugs.eclipse.org/318230" rel="nofollow">Bug 318230</a>. The feature will be enabled automatically as long as GDB 7.1 or greater is used.
+ </p><p>This feature has been implemented for CDT 8.0 as of July 6th, 2010, as part of <a href="https://bugs.eclipse.org/318230" class="external text" title="https://bugs.eclipse.org/318230" rel="nofollow">Bug 318230</a>. The feature will be enabled automatically as long as GDB 7.1 or greater is used.
</p>
</td>
</tr>
@@ -333,7 +333,7 @@ end
<td>
<p>DSF-GDB now shows the owner of a process as an extra part of the process prompt for an attach session. The owner id will be shown starting with GDB 7.0. For a Remote attach session (using gdbserver --multi), the cores on which a process is located will also be shown. Showing the cores starts with GDB 7.1. The below image shows the new feature.
</p><p><img src="../images/80/UserAndCores.jpg" alt="Image:UserAndCores.jpg"></img></p>
- <p>This feature has been implemented for CDT 8.0 as of July 30th, 2010, as part of <a href="http://bugs.eclipse.org/318230#21" class="external text" title="http://bugs.eclipse.org/318230#21" rel="nofollow">Bug 318230 comment 21</a>. The feature will be enabled automatically as long as the proper version of GDB is used.
+ <p>This feature has been implemented for CDT 8.0 as of July 30th, 2010, as part of <a href="https://bugs.eclipse.org/318230#21" class="external text" title="https://bugs.eclipse.org/318230#21" rel="nofollow">Bug 318230 comment 21</a>. The feature will be enabled automatically as long as the proper version of GDB is used.
</p>
</td>
</tr>
@@ -345,7 +345,7 @@ end
<p>Variables, Expressions, Registers, Disassembly, and Memory Browser now supports opening multiple instances, and pin the view input to the selected debug context(s) in the Debug view. This can be used, for example, to easily compare the data of different threads.
</p>
<p><img src="../images/80/PinCloneDebug.png" alt="Image:PinCloneDebug.png"></img></p>
- <p>This feature has been implemented for CDT 8.0 as of Feb 15th, 2011, as part of <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=327263" class="external text" title="http://bugs.eclipse.org/bugs/show_bug.cgi?id=327263" rel="nofollow">Bug 327263</a>, <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=331781" class="external text" title="http://bugs.eclipse.org/bugs/show_bug.cgi?id=331781" rel="nofollow">Bug 331781</a>, and <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=334566" class="external text" title="http://bugs.eclipse.org/bugs/show_bug.cgi?id=334566" rel="nofollow">Bug 334566</a>.
+ <p>This feature has been implemented for CDT 8.0 as of Feb 15th, 2011, as part of <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=327263" class="external text" title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=327263" rel="nofollow">Bug 327263</a>, <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=331781" class="external text" title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=331781" rel="nofollow">Bug 331781</a>, and <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=334566" class="external text" title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=334566" rel="nofollow">Bug 334566</a>.
</p>
</td>
</tr>
@@ -410,7 +410,7 @@ end
<p><br> The values of most of these preferences will be used to populate the corresponding entries of the Debugger tab, whenever a new launch is created.
</p>
<p><img src="../images/80/LaunchDefaultGdb.png" alt="Image:LaunchDefaultGdb.png"></img></p>
- </p><p><br> This feature has been implemented for CDT 8.0 as as part of <a href="http://bugs.eclipse.org/120162" class="external text" title="http://bugs.eclipse.org/120162" rel="nofollow">Bug 120162</a>, <a href="http://bugs.eclipse.org/347245" class="external text" title="http://bugs.eclipse.org/347245" rel="nofollow">Bug 347245</a> and <a href="http://bugs.eclipse.org/335895" class="external text" title="http://bugs.eclipse.org/335895" rel="nofollow">Bug 335895</a>.
+ </p><p><br> This feature has been implemented for CDT 8.0 as as part of <a href="https://bugs.eclipse.org/120162" class="external text" title="https://bugs.eclipse.org/120162" rel="nofollow">Bug 120162</a>, <a href="https://bugs.eclipse.org/347245" class="external text" title="https://bugs.eclipse.org/347245" rel="nofollow">Bug 347245</a> and <a href="https://bugs.eclipse.org/335895" class="external text" title="https://bugs.eclipse.org/335895" rel="nofollow">Bug 335895</a>.
</p>
</td>
</tr>
@@ -460,37 +460,37 @@ end
<p style="text-align:right"><span class="bold">DSF-GDB</span></p>
</td>
<td>
- <ol><li>The interface org.eclipse.cdt.dsf.mi.service.command.output.MIListThreadGroupsInfo.IThreadGroupInfo has four new methods. See <a href="http://bugs.eclipse.org/318230#c21" class="external text" title="http://bugs.eclipse.org/318230#c21" rel="nofollow">bug 318230 comment 21</a>
+ <ol><li>The interface org.eclipse.cdt.dsf.mi.service.command.output.MIListThreadGroupsInfo.IThreadGroupInfo has four new methods. See <a href="https://bugs.eclipse.org/318230#c21" class="external text" title="https://bugs.eclipse.org/318230#c21" rel="nofollow">bug 318230 comment 21</a>
<ul><li>String getUser()
</li><li>String getType()
</li><li>String getCores()
</li><li>String getExecutable()
</li></ul>
- </li><li>The interface org.eclipse.cdt.dsf.gdb.service.command.IGDBControl has a new method: List&lt;String&gt; getFeatures(). See <a href="http://bugs.eclipse.org/322658" class="external text" title="http://bugs.eclipse.org/322658" rel="nofollow">bug 322658</a>
+ </li><li>The interface org.eclipse.cdt.dsf.gdb.service.command.IGDBControl has a new method: List&lt;String&gt; getFeatures(). See <a href="https://bugs.eclipse.org/322658" class="external text" title="https://bugs.eclipse.org/322658" rel="nofollow">bug 322658</a>
</li><li>The interface org.eclipse.cdt.dsf.gdb.service.command.IGDBControl no longer has the three methods: start(...), restart(...) and canRestart(...). Those methods are moved to org.eclipse.cdt.dsf.gdb.service.IGDBProcesses and have a new signature.
</li><li>org.eclipse.cdt.dsf.gdb.service.command.GDBControl and org.eclipse.cdt.dsf.gdb.service.command.GDBControl_7_0 no longer implement the five methods: start(...), restart(...), canRestart(...), startOrRestart(...), useContinueCommand(...) which are now implemented in org.eclipse.cdt.dsf.gdb.service.command.GDBProcesses and org.eclipse.cdt.dsf.gdb.service.command.GDBProcesses_7_0
- </li><li>All the constructors of class org.eclipse.cdt.dsf.mi.service.command.commands.MIBreakInsert now take an extra parameter at the end of the parameter list: boolean allowPending. When this parameter is set to true, -break-insert will be used with the -f option, which asks GDB to make the breakpoint pending if the installation fails. This flag can only be enabled for GDB &gt;= 6.8. See <a href="http://bugs.eclipse.org/248595" class="external text" title="http://bugs.eclipse.org/248595" rel="nofollow">bug 248595</a>
- </li><li>The interface org.eclipse.cdt.dsf.debug.service.IProcesses.IMIProcesses has a new method: IMIContainerDMContext createContainerContextFromGroupId(...). See <a href="http://bugs.eclipse.org/317500" class="external text" title="http://bugs.eclipse.org/317500" rel="nofollow">bug 317500</a>
+ </li><li>All the constructors of class org.eclipse.cdt.dsf.mi.service.command.commands.MIBreakInsert now take an extra parameter at the end of the parameter list: boolean allowPending. When this parameter is set to true, -break-insert will be used with the -f option, which asks GDB to make the breakpoint pending if the installation fails. This flag can only be enabled for GDB &gt;= 6.8. See <a href="https://bugs.eclipse.org/248595" class="external text" title="https://bugs.eclipse.org/248595" rel="nofollow">bug 248595</a>
+ </li><li>The interface org.eclipse.cdt.dsf.debug.service.IProcesses.IMIProcesses has a new method: IMIContainerDMContext createContainerContextFromGroupId(...). See <a href="https://bugs.eclipse.org/317500" class="external text" title="https://bugs.eclipse.org/317500" rel="nofollow">bug 317500</a>
</li><li>The file of constants org.eclipse.cdt.dsf.gdb.internal.ui.preferences.IGdbDebugPreferenceConstants has been removed. It was deprecated and had already been replaced by org.eclipse.cdt.dsf.gdb.IGdbDebugPreferenceConstants
- </li><li>The interface org.eclipse.cdt.dsf.mi.service.IMIRunControl has a new method: IRunMode getRunMode(). See <a href="http://bugs.eclipse.org/334463" class="external text" title="http://bugs.eclipse.org/334463" rel="nofollow">bug 334463</a>
+ </li><li>The interface org.eclipse.cdt.dsf.mi.service.IMIRunControl has a new method: IRunMode getRunMode(). See <a href="https://bugs.eclipse.org/334463" class="external text" title="https://bugs.eclipse.org/334463" rel="nofollow">bug 334463</a>
</li><li>FinalLaunchSequence has dramatically changed.
</li><li>GdbLaunch#addInferiorProcess() is removed.
</li><li>GDBControl.InferiorInputOutputInitStep is removed.
</li><li>GDBControl_7_0.InferiorInputOutputInitStep is removed.
- </li><li>The interface IMIRunControl has the new method isTargetAcceptingCommands() as part of <a href="http://bugs.eclipse.org/339047" class="external text" title="http://bugs.eclipse.org/339047" rel="nofollow">Bug 339047</a>
- </li><li>IGDBControl, GDBControl and GDBControl_7_0, no longer have the three methods: initInferiorInputOutput(), createInferiorProcess() and getInferiorProcess() as part of <a href="http://bugs.eclipse.org/237308" class="external text" title="http://bugs.eclipse.org/237308" rel="nofollow">Bug 237308</a>
- </li><li>MIInferiorProcess's constructors have changed, and many of its public methods are removed (getState(), getPid(), setPid(), etc) as part of <a href="http://bugs.eclipse.org/237308" class="external text" title="http://bugs.eclipse.org/237308" rel="nofollow">Bug 237308</a>
- </li><li>CommandFactory#createMIInferiorTTYSet() has changed signature as part of <a href="http://bugs.eclipse.org/237308" class="external text" title="http://bugs.eclipse.org/237308" rel="nofollow">Bug 237308</a>
- </li><li>The constructor to MIInferiorTTYSet has changed signature as part of <a href="http://bugs.eclipse.org/237308" class="external text" title="http://bugs.eclipse.org/237308" rel="nofollow">Bug 237308</a>
- </li><li>IGDBProcesses gets the new method attachDebuggerToProcess() as part of <a href="http://bugs.eclipse.org/237306" class="external text" title="http://bugs.eclipse.org/237306" rel="nofollow">Bug 237306</a>
+ </li><li>The interface IMIRunControl has the new method isTargetAcceptingCommands() as part of <a href="https://bugs.eclipse.org/339047" class="external text" title="https://bugs.eclipse.org/339047" rel="nofollow">Bug 339047</a>
+ </li><li>IGDBControl, GDBControl and GDBControl_7_0, no longer have the three methods: initInferiorInputOutput(), createInferiorProcess() and getInferiorProcess() as part of <a href="https://bugs.eclipse.org/237308" class="external text" title="https://bugs.eclipse.org/237308" rel="nofollow">Bug 237308</a>
+ </li><li>MIInferiorProcess's constructors have changed, and many of its public methods are removed (getState(), getPid(), setPid(), etc) as part of <a href="https://bugs.eclipse.org/237308" class="external text" title="https://bugs.eclipse.org/237308" rel="nofollow">Bug 237308</a>
+ </li><li>CommandFactory#createMIInferiorTTYSet() has changed signature as part of <a href="https://bugs.eclipse.org/237308" class="external text" title="https://bugs.eclipse.org/237308" rel="nofollow">Bug 237308</a>
+ </li><li>The constructor to MIInferiorTTYSet has changed signature as part of <a href="https://bugs.eclipse.org/237308" class="external text" title="https://bugs.eclipse.org/237308" rel="nofollow">Bug 237308</a>
+ </li><li>IGDBProcesses gets the new method attachDebuggerToProcess() as part of <a href="https://bugs.eclipse.org/237306" class="external text" title="https://bugs.eclipse.org/237306" rel="nofollow">Bug 237306</a>
</li><li>GdbInferiorProcess no longer exists. Its base class, MIInferiorProcess should be used directly.
- </li><li>GDBBackend.doInitialize(), GDBControl.doInitialize() and GDBControl_7_0.doInitialize() are now private. Having them as public was a bug that would break versioning of the service. See <a href="http://bugs.eclipse.org/341465" class="external text" title="http://bugs.eclipse.org/341465" rel="nofollow">Bug 341465</a>
+ </li><li>GDBBackend.doInitialize(), GDBControl.doInitialize() and GDBControl_7_0.doInitialize() are now private. Having them as public was a bug that would break versioning of the service. See <a href="https://bugs.eclipse.org/341465" class="external text" title="https://bugs.eclipse.org/341465" rel="nofollow">Bug 341465</a>
</li><li>GDBControlDMContext no longer implements IBreakpointsTargetDMContext or IDisassemblyDMContext. Although not an API breaking change it has significant impacts. Mostly that code such as
</li></ol>
<pre>(IBreakpointsTargetDMContext)fCommandControl.getContext() // Will fail with an Invalid Cast exception
(IDisassemblyDMContext)fCommandControl.getContext() // Will fail with an Invalid Cast exception
</pre>
- <p>will now fail because the command control context is no longer an IBreakpointsTargetDMContext/IDisassemblyDMContext. Instead, MIContainerDMC now implements IBreakpointsTargetDMContext/IDisassemblyDMContext. This change was necessary to fully support multi-process and was done in <a href="http://bugs.eclipse.org/335324" class="external text" title="http://bugs.eclipse.org/335324" rel="nofollow">bug 335324</a> and <a href="http://bugs.eclipse.org/344298" class="external text" title="http://bugs.eclipse.org/344298" rel="nofollow">bug 344298</a>.
+ <p>will now fail because the command control context is no longer an IBreakpointsTargetDMContext/IDisassemblyDMContext. Instead, MIContainerDMC now implements IBreakpointsTargetDMContext/IDisassemblyDMContext. This change was necessary to fully support multi-process and was done in <a href="https://bugs.eclipse.org/335324" class="external text" title="https://bugs.eclipse.org/335324" rel="nofollow">bug 335324</a> and <a href="https://bugs.eclipse.org/344298" class="external text" title="https://bugs.eclipse.org/344298" rel="nofollow">bug 344298</a>.
</p>
</td>
</tr>
@@ -548,7 +548,7 @@ end
<p><a href="cdt_c_whatsnew_80.htm">CDT 8.0 - New and Noteworthy</a></p>
<p><a href="cdt_c_whatsnew_70.htm">CDT 7.0 - New and Noteworthy</a></p>
<p><a href="cdt_c_whatsnew_60.htm">CDT 6.0 - New and Noteworthy</a></p>
-<p><a href="http://wiki.eclipse.org/CDT/User/NewIn50">CDT 5.0 - New and Noteworthy</a></p>
+<p><a href="https://wiki.eclipse.org/CDT/User/NewIn50">CDT 5.0 - New and Noteworthy</a></p>
<p><a href="#top">Back to Top</a>
diff --git a/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_whatsnew_81.htm b/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_whatsnew_81.htm
index 25ceb216557..d925b09073e 100644
--- a/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_whatsnew_81.htm
+++ b/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_whatsnew_81.htm
@@ -11,7 +11,7 @@
<body>
<div role="main">
<h1 id="top">CDT 8.1 - New and Noteworthy</h1>
- <p>See <a href="http://wiki.eclipse.org/CDT/User/NewIn81">What's new in CDT 8.1</a> on the CDT Wiki
+ <p>See <a href="https://wiki.eclipse.org/CDT/User/NewIn81">What's new in CDT 8.1</a> on the CDT Wiki
which may contain more recent information.
</p>
@@ -70,7 +70,7 @@
<a name="Pin_the_Call_Hierarchy_View"></a><h3> <span class="headline"> Pin the Call Hierarchy View </span></h3>
<p>The Call Hierarchy View can now be pinned which enables the user to open multiple Call Hierarchy views at the same time.
</p><p><img alt="Image:Pin view call hierarchy.png" src="../images/cdt81/pin_view_call_hierarchy.png" width="641" height="153" border="0" />
-</p><p>This feature was completed November 12th, 2011 as part of <a href="http://bugs.eclipse.org/342498" class="external text" title="http://bugs.eclipse.org/342498" rel="nofollow">Bug 342498</a>
+</p><p>This feature was completed November 12th, 2011 as part of <a href="https://bugs.eclipse.org/342498" class="external text" title="https://bugs.eclipse.org/342498" rel="nofollow">Bug 342498</a>
</p><p><br />
</p>
<a name="Filtering_in_Outline_Views"></a><h3> <span class="headline"> Filtering in Outline Views </span></h3>
@@ -91,8 +91,8 @@
<p><br />
</p>
<a name="Indexing"></a><h2> <span class="headline"> Indexing </span></h2>
-<ul><li> Support for multiple variants of the same header file in the index (<a href="http://bugs.eclipse.org/197989" class="external text" title="http://bugs.eclipse.org/197989" rel="nofollow">Bug 197989</a>).
-</li><li> The <i>C/C++ &gt; Indexer &gt; Index unused headers</i> global preference is turned on by default (<a href="http://bugs.eclipse.org/377992" class="external text" title="http://bugs.eclipse.org/377992" rel="nofollow">Bug 377992</a>).
+<ul><li> Support for multiple variants of the same header file in the index (<a href="https://bugs.eclipse.org/197989" class="external text" title="https://bugs.eclipse.org/197989" rel="nofollow">Bug 197989</a>).
+</li><li> The <i>C/C++ &gt; Indexer &gt; Index unused headers</i> global preference is turned on by default (<a href="https://bugs.eclipse.org/377992" class="external text" title="https://bugs.eclipse.org/377992" rel="nofollow">Bug 377992</a>).
</li><li> New command: <i>Index &gt; Re-resolve Unresolved Includes</i>.
</li></ul>
<p><br />
@@ -105,12 +105,12 @@
</li><li>External tools are invoked automatically when a C/C++ file is saved
</li><li>The output of these tools can be displayed as editor markers
</li></ol>
-<p>The new infrastructure includes a sample checker that invokes <a href="http://cppcheck.sourceforge.net/" class="external text" title="http://cppcheck.sourceforge.net/" rel="nofollow">Cppcheck</a>.
+<p>The new infrastructure includes a sample checker that invokes <a href="https://cppcheck.sourceforge.net/" class="external text" title="https://cppcheck.sourceforge.net/" rel="nofollow">Cppcheck</a>.
</p><p><img alt="Image:Cppcheck-config-1.png" src="../images/cdt81/cppcheck_config_1.png" width="628" height="571" border="0" />
</p><p>A more detailed configuration dialog can be found by pressing the 'Customize Selected' button:
</p><p><img alt="Image:Cppcheck-config-2.png" src="../images/cdt81/cppcheck_config_2.png" width="556" height="413" border="0" />
</p><p>Users&nbsp;can specify the path of the Cppcheck executable and the arguments to pass to Cppcheck.
-</p><p>A demo of this checker can be found <a href="http://www.youtube.com/watch?feature=player_embedded&amp;v=_OKpQ-W09MU" class="external text" title="http://www.youtube.com/watch?feature=player_embedded&amp;v=_OKpQ-W09MU" rel="nofollow">here</a>.
+</p><p>A demo of this checker can be found <a href="https://www.youtube.com/watch?feature=player_embedded&amp;v=_OKpQ-W09MU" class="external text" title="https://www.youtube.com/watch?feature=player_embedded&amp;v=_OKpQ-W09MU" rel="nofollow">here</a>.
</p><p>The new infrastructure makes it very easy to write your own external-tool-based checker. In the simplest case, you will need to:
</p>
<ul><li>Extend the abstract class AbstractExternalToolBasedChecker.
@@ -122,7 +122,7 @@
</p><p>In the case of tools that are complex to set up, the new infrastructure is extremely flexible and configurable. It allows you to pretty much to configure every single aspect of the checker, from the files that the tool can check to the way to feed arguments to the tool.
</p>
<a name="New_Codan_checkers"></a><h3> <span class="headline"> New Codan checkers </span></h3>
-<ul><li> Class members should be properly initialized (<a href="http://bugs.eclipse.org/339795" class="external text" title="http://bugs.eclipse.org/339795" rel="nofollow">Bug 339795</a>). Example:
+<ul><li> Class members should be properly initialized (<a href="https://bugs.eclipse.org/339795" class="external text" title="https://bugs.eclipse.org/339795" rel="nofollow">Bug 339795</a>). Example:
</li></ul>
<pre> struct Demo {
Demo() {} // Warning: Member 'field' was not initialized in this constructor
@@ -134,7 +134,7 @@
</p>
<a name="Build"></a><h2> <span class="headline"> Build </span></h2>
<a name="Scanner_Discovery"></a><h3> <span class="headline"> Scanner Discovery </span></h3>
-<p>Scanner Discovery has been reworked in this release. The main purpose of Scanner Discovery was always to supply Include Paths and Macros for indexer and build. Now these are supplied by Language Settings Providers. See more at <a href="http://wiki.eclipse.org/CDT/ScannerDiscovery61" class="external text">Scanner Discovery</a> on the wiki.
+<p>Scanner Discovery has been reworked in this release. The main purpose of Scanner Discovery was always to supply Include Paths and Macros for indexer and build. Now these are supplied by Language Settings Providers. See more at <a href="https://wiki.eclipse.org/CDT/ScannerDiscovery61" class="external text">Scanner Discovery</a> on the wiki.
</p><p><img alt="Image:sd90Entries.png" src="../images/cdt81/sd90entries.png" width="1111" height="736" border="0" />
</p><p><img alt="Image:sd90Providers.png" src="../images/cdt81/sd90providers.png" width="1177" height="736" border="0" />
</p><p><br />
@@ -166,13 +166,13 @@
</p><p>The Multicore Visualizer View is just one example of a visualizer based on the underlying Visualizer Framework plugin. This provides a pluggable, extensible platform for developing visual development tools of this kind.
</p><p><img alt="Image:VisualizerSnapshot.png" src="../images/cdt81/visualizersnapshot.png" width="648" height="421" border="0" />
</p><p>Note that the Multicore Visualizer will only work using a Linux target; it will not work debugging on a Windows or Mac target. This is a current limitation of GDB which does not provide information about cores, for those targets (at writing, GDB is at version 7.4).
-</p><p>This feature was completed on February 10th, 2012. For details see <a href="http://bugs.eclipse.org/335027" class="external text" title="http://bugs.eclipse.org/335027" rel="nofollow">Bug 335027</a>
+</p><p>This feature was completed on February 10th, 2012. For details see <a href="https://bugs.eclipse.org/335027" class="external text" title="https://bugs.eclipse.org/335027" rel="nofollow">Bug 335027</a>
</p><p>The Multicore Visualizer is an optional feature of the CDT and must be installed manually. The feature is called <q>C/C++ Multicore Visualizer</q>. Installing it will install both the Multicore Visualizer and the Visualizer Framework. If you only want to install the Visualizer Framework (to build your own visualizer), you can install that feature by itself; it is called <q>CDT Visualizer Framework</q>. Once the features are installed, you can access the Multicore Visualizer (or any other visualizer) by opening the view called <q>Visualizer</q>.
</p>
<a name="Partitioning_of_large_arrays"></a><h3> <span class="headline"> Partitioning of large arrays </span></h3>
<p>CDT now displays large arrays as collections of partitions.
</p><p><img alt="Image:LargeArray.png" src="../images/cdt81/largearray.png" width="865" height="354" border="0" />
-</p><p>This feature was completed on January 26th, 2012 as part of <a href="http://bugs.eclipse.org/365541" class="external text" title="http://bugs.eclipse.org/365541" rel="nofollow">Bug 365541</a>
+</p><p>This feature was completed on January 26th, 2012 as part of <a href="https://bugs.eclipse.org/365541" class="external text" title="https://bugs.eclipse.org/365541" rel="nofollow">Bug 365541</a>
</p>
<a name="Edit_Breakpoint_on_Create"></a><h3> <span class="headline"> Edit Breakpoint on Create </span></h3>
<p>It is no longer necessary to first create a CDT breakpoint, then edit its properties. Properties such as enabled, ignore count, condition, temporary, can be set while creating the breakpoint.
@@ -232,7 +232,7 @@
</p><p><img alt="Image:DebugPreferences.png" src="../images/cdt81/debugpreferences.png" width="639" height="368" border="0" />
</p><p>CDT will then correctly display strings according to the selected encoding while debugging.
</p><p><img alt="Image:CharsetDebug.png" src="../images/cdt81/charsetdebug.png" width="774" height="266" border="0" />
-</p><p>Note that this feature requires GDB version 7.0 or later. This feature was completed on March 7th, 2012 as part of <a href="http://bugs.eclipse.org/307311" class="external text" title="http://bugs.eclipse.org/307311" rel="nofollow">Bug 307311</a>, <a href="http://bugs.eclipse.org/367456" class="external text" title="http://bugs.eclipse.org/367456" rel="nofollow">Bug 367456</a> and <a href="http://bugs.eclipse.org/370462" class="external text" title="http://bugs.eclipse.org/370462" rel="nofollow">Bug 370462</a>.
+</p><p>Note that this feature requires GDB version 7.0 or later. This feature was completed on March 7th, 2012 as part of <a href="https://bugs.eclipse.org/307311" class="external text" title="https://bugs.eclipse.org/307311" rel="nofollow">Bug 307311</a>, <a href="https://bugs.eclipse.org/367456" class="external text" title="https://bugs.eclipse.org/367456" rel="nofollow">Bug 367456</a> and <a href="https://bugs.eclipse.org/370462" class="external text" title="https://bugs.eclipse.org/370462" rel="nofollow">Bug 370462</a>.
</p>
<a name="Timeout_support_for_GDB_commands_in_DSF.2FGDB"></a><h3> <span class="headline"> Timeout support for GDB commands in DSF/GDB </span></h3>
<p>Timeouts for GDB commands are now supported in DSF/GDB. The feature is optional and disabled by default. The timeout values are configurable. When the feature is enabled, custom values can be assigned to some commands, all other commands use the default value. This feature was completed on April 17th, 2012 as part of <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=361934" class="external text" title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=361934" rel="nofollow">Bug 361934</a>.
@@ -241,7 +241,7 @@
<br />
</p>
<a name="Multi-select_Resume.2FSuspend_operations"></a><h3> <span class="headline"> Multi-select Resume/Suspend operations </span></h3>
-<p>CDT now allows to perform a Resume or Suspend operation on multiple selections of the same debug session. Because such a concept only adds value in a Non-Stop debug session, it is only supported in such a session (see <a href="../faq/index.html#What_is_the_difference_between_Non-stop_and_All-stop_multi-threaded_debugging.3F" class="external text" title="http://wiki.eclipse.org/CDT/User/FAQ#What_is_the_difference_between_Non-stop_and_All-stop_multi-threaded_debugging.3F" rel="nofollow">Non-Stop Debugging</a>). The behavior of a multi-selection Resume/Suspend is as follows:
+<p>CDT now allows to perform a Resume or Suspend operation on multiple selections of the same debug session. Because such a concept only adds value in a Non-Stop debug session, it is only supported in such a session (see <a href="../faq/index.html#What_is_the_difference_between_Non-stop_and_All-stop_multi-threaded_debugging.3F" class="external text" title="https://wiki.eclipse.org/CDT/User/FAQ#What_is_the_difference_between_Non-stop_and_All-stop_multi-threaded_debugging.3F" rel="nofollow">Non-Stop Debugging</a>). The behavior of a multi-selection Resume/Suspend is as follows:
</p>
<ul><li> Any selected stack frames implies a selection of their corresponding thread.
</li><li> If one or more threads are selected (not processes) and the resume/suspend operation is triggered, each selected thread on which the operation is currently valid will be resumed/suspended.
@@ -260,7 +260,7 @@
</li><li> Thread 2 is selected and suspended, and will be resumed.
</li><li> Thread 5 is selected but running, so it will be ignored.
</li></ol>
-<p>This feature was completed April 25th, 2012 as part of <a href="http://bugs.eclipse.org/330974" class="external text" title="http://bugs.eclipse.org/330974" rel="nofollow">Bug 330974</a>
+<p>This feature was completed April 25th, 2012 as part of <a href="https://bugs.eclipse.org/330974" class="external text" title="https://bugs.eclipse.org/330974" rel="nofollow">Bug 330974</a>
</p>
<a name="Show_only_suspended_threads_in_Debug_view"></a><h3> <span class="headline"> Show only suspended threads in Debug view </span></h3>
<p>CDT now has an global preference that allows to only show the suspended threads within the Debug view. When dealing with a large number of threads, a user is typically interested by the threads that are being inspected (suspended ones) and does not care about the running ones. Using this preference, all running threads will not be shown in the Debug view. Note that when a thread is stepping it will remain visible, although it is technically running. The process element of the Debug view will show how many threads are currently being filtered from view.
@@ -269,19 +269,19 @@
</p><p><img alt="Image:CDT_Debug_NoHiding.png" src="../images/cdt81/cdt_debug_nohiding.png" width="554" height="494" border="0" />
</p><p>Below shows how to access the preference, which is disabled by default.
</p><p><img alt="Image:CDT_Debug_HidingPref.png" src="../images/cdt81/cdt_debug_hidingpref.png" width="554" height="564" border="0" />
-</p><p>This feature was completed May 4th, 2012 as part of <a href="http://bugs.eclipse.org/375585" class="external text" title="http://bugs.eclipse.org/375585" rel="nofollow">Bug 375585</a>
+</p><p>This feature was completed May 4th, 2012 as part of <a href="https://bugs.eclipse.org/375585" class="external text" title="https://bugs.eclipse.org/375585" rel="nofollow">Bug 375585</a>
</p>
<a name="Multi-select_attach_dialog"></a><h3> <span class="headline"> Multi-select attach dialog </span></h3>
<p>CDT now allows selecting more than one process to attach to in a single user operation. The bottom pane is used to see which processes have been selected. If multi-process debugging is not supported with your debug session (needs GDB &gt;= 7.2 and NonStop enabled), only the first process will be attached to.
</p><p><img alt="Image:Multiselect.png" src="../images/cdt81/multiselect.png" width="436" height="553" border="0" />
-</p><p>This feature was completed June 30th, 2011 as part of <a href="http://bugs.eclipse.org/293679" class="external text" title="http://bugs.eclipse.org/293679" rel="nofollow">Bug 293679</a>
+</p><p>This feature was completed June 30th, 2011 as part of <a href="https://bugs.eclipse.org/293679" class="external text" title="https://bugs.eclipse.org/293679" rel="nofollow">Bug 293679</a>
</p>
<a name="Default_Postmortem_file_location"></a><h3> <span class="headline"> Default Postmortem file location </span></h3>
<p>CDT now allows the user to specify a default directory for the location of core files for a postmortem launch when the prompt is triggered. Since a postmortem launch can easily be re-used for different core files of the same binary, this feature helps reduce the amount of navigation needed to select a core file. Note that specifying the actual core file is still supported, as well as leaving the entire field blank, which will also trigger the prompt, but use the default directory for its starting location.
</p><p>Note that this 'core file' field supports the use of variables such as ${workspace_loc}.
</p><p>This feature applies to both core files and trace files.
</p><p><img alt="Image:CorePath.png" src="../images/cdt81/corepath.png" width="937" height="714" border="0" />
-</p><p>This feature was completed on February 17th, 2012 as part of <a href="http://bugs.eclipse.org/362039" class="external text" title="http://bugs.eclipse.org/362039" rel="nofollow">Bug 362039</a>
+</p><p>This feature was completed on February 17th, 2012 as part of <a href="https://bugs.eclipse.org/362039" class="external text" title="https://bugs.eclipse.org/362039" rel="nofollow">Bug 362039</a>
</p>
<a name="Support_for_Fast_Tracepoints"></a><h3> <span class="headline"> Support for Fast Tracepoints </span></h3>
<p>CDT now allows the user of fast tracepoints, as supported by GDB. Fast tracepoints use an instruction jump instead of a trap for efficiency. Fast tracepoint need a minimum of space to be inserted in the program and therefore, may fail to be set at certain locations. For fast tracepoints to work, a special library called the in-process agent (IPA), must be loaded in the inferior process. This library is built and distributed as an integral part of gdbserver. Please see the GDB documentation for more details.
@@ -292,7 +292,7 @@
</li><li><b>Automatic</b>: Attempt to use fast tracepoints. If a fast tracepoint cannot be used, automatically use a normal tracepoint.
</li></ol>
<p><img alt="Image:FastTracepointSelection.png" src="../images/cdt81/fasttracepointselection.png" width="900" height="500" border="0" />
-</p><p>This feature was completed July 20th, 2011 as part of <a href="http://bugs.eclipse.org/346320" class="external text" title="http://bugs.eclipse.org/346320" rel="nofollow">Bug 346320</a>
+</p><p>This feature was completed July 20th, 2011 as part of <a href="https://bugs.eclipse.org/346320" class="external text" title="https://bugs.eclipse.org/346320" rel="nofollow">Bug 346320</a>
</p>
<a name="Enhancements_to_Tracepoints"></a><h3> <span class="headline"> Enhancements to Tracepoints </span></h3>
<p>With the use of GDB 7.4, some new features are available within Eclipse.
@@ -305,7 +305,7 @@
<ul><li>On 32-bit x86-architectures, fast tracepoints can now be placed at locations with 4-byte instructions, when they were previously limited to locations with instructions of 5 bytes or longer.
</li></ul>
</li><li>Tracepoint collecting of Strings
-<ul><li>The tracepoint Collect action now has an option to request to collect character pointers as strings. It tells GDB to effectively dereference pointer-to-character types and collect the bytes of memory up to a zero byte. An optional integer limit sets a bound on the number of bytes that will be collected. This feature was completed on April 20th, 2012. For details see <a href="http://bugs.eclipse.org/373707" class="external text" title="http://bugs.eclipse.org/373707" rel="nofollow">Bug 373707</a>
+<ul><li>The tracepoint Collect action now has an option to request to collect character pointers as strings. It tells GDB to effectively dereference pointer-to-character types and collect the bytes of memory up to a zero byte. An optional integer limit sets a bound on the number of bytes that will be collected. This feature was completed on April 20th, 2012. For details see <a href="https://bugs.eclipse.org/373707" class="external text" title="https://bugs.eclipse.org/373707" rel="nofollow">Bug 373707</a>
</li></ul>
</li></ul>
<p><br />
@@ -336,7 +336,7 @@
</p><p><img alt="Image:CDT_Debug_VariableTypeBasedOnRtti.png" src="../images/cdt81/cdt_debug_variabletypebasedonrtti.png" width="493" height="382" border="0" />
</p><p>This feature is enabled by default and will work if you have the proper GDB version (7.5 or higher) and RTTI generation enabled (enabled by default in gcc), however it could be turned off in preferences:
</p><p><img alt="Image:CDT_Debug_VariableTypeBasedOnRttiPref.png" src="../images/cdt81/cdt_debug_variabletypebasedonrttipref.png" width="842" height="589" border="0" />
-</p><p>This feature was completed on May 5th, 2012 as part of <a href="http://bugs.eclipse.org/376901" class="external text" title="http://bugs.eclipse.org/376901" rel="nofollow">Bug 376901</a> and <a href="http://bugs.eclipse.org/377536" class="external text" title="http://bugs.eclipse.org/377536" rel="nofollow">Bug 377536</a>.
+</p><p>This feature was completed on May 5th, 2012 as part of <a href="https://bugs.eclipse.org/376901" class="external text" title="https://bugs.eclipse.org/376901" rel="nofollow">Bug 376901</a> and <a href="https://bugs.eclipse.org/377536" class="external text" title="https://bugs.eclipse.org/377536" rel="nofollow">Bug 377536</a>.
</p>
<a name="Build_variables_support_in_.22C.2FC.2B.2B_Application.22_field_of_launch_configuration"></a><h3> <span class="headline"> Build variables support in "C/C++ Application" field of launch configuration </span></h3>
<p><img alt="Image:CDT_Debug_VarsInAppplicationField.png" src="../images/cdt81/cdt_debug_varsinappplicationfield.png" width="727" height="556" border="0" />
@@ -345,10 +345,10 @@
<ul><li> config_name - the name of the active configuration for the project specified as an argument;
</li><li> config_description - the description of the active configuration for the project specified as an argument;
</li></ul>
-<p>This feature was completed on April 2nd, 2012 as part of <a href="http://bugs.eclipse.org/180256" class="external text" title="http://bugs.eclipse.org/180256" rel="nofollow">Bug 180256</a> and <a href="http://bugs.eclipse.org/375814" class="external text" title="http://bugs.eclipse.org/375814" rel="nofollow">Bug 375814</a>.
+<p>This feature was completed on April 2nd, 2012 as part of <a href="https://bugs.eclipse.org/180256" class="external text" title="https://bugs.eclipse.org/180256" rel="nofollow">Bug 180256</a> and <a href="https://bugs.eclipse.org/375814" class="external text" title="https://bugs.eclipse.org/375814" rel="nofollow">Bug 375814</a>.
</p>
<a name="Support_for_octal_number_format_in_CDI"></a><h3> <span class="headline"> Support for octal number format in CDI </span></h3>
-<p>CDI now also supports to use the octal number format to display the contents of variables, expressions and registers. You can select the octal number format within the Debug preferences. This feature was completed on March 7th, 2012 as part of <a href="http://bugs.eclipse.org/370462" class="external text" title="http://bugs.eclipse.org/370462" rel="nofollow">Bug 370462</a>.
+<p>CDI now also supports to use the octal number format to display the contents of variables, expressions and registers. You can select the octal number format within the Debug preferences. This feature was completed on March 7th, 2012 as part of <a href="https://bugs.eclipse.org/370462" class="external text" title="https://bugs.eclipse.org/370462" rel="nofollow">Bug 370462</a>.
</p><p><br />
</p>
<a name="C.2FC.2B.2B_Unit_Testing_Support"></a><h2> <span class="headline"> C/C++ Unit Testing Support </span></h2>
@@ -357,9 +357,9 @@
</p><p>Supported features:
</p>
<ul><li>tests running with support of the following frameworks:
-<ul><li><a href="http://www.boost.org/doc/libs/1_46_1/libs/test/doc/html/index.html" class="external text" title="http://www.boost.org/doc/libs/1_46_1/libs/test/doc/html/index.html" rel="nofollow">Boost.Test</a>;
-</li><li><a href="http://doc.qt.nokia.com/solutions/4/qttestlib" class="external text" title="http://doc.qt.nokia.com/solutions/4/qttestlib" rel="nofollow">Qt Test</a>;
-</li><li><a href="http://code.google.com/p/googletest/" class="external text" title="http://code.google.com/p/googletest/" rel="nofollow">Google Testing Framework</a>;
+<ul><li><a href="https://www.boost.org/doc/libs/1_46_1/libs/test/doc/html/index.html" class="external text" title="https://www.boost.org/doc/libs/1_46_1/libs/test/doc/html/index.html" rel="nofollow">Boost.Test</a>;
+</li><li><a href="https://doc.qt.nokia.com/solutions/4/qttestlib" class="external text" title="https://doc.qt.nokia.com/solutions/4/qttestlib" rel="nofollow">Qt Test</a>;
+</li><li><a href="https://code.google.com/p/googletest/" class="external text" title="https://code.google.com/p/googletest/" rel="nofollow">Google Testing Framework</a>;
</li></ul>
</li><li>tests hierarchy browsing;
</li><li>test messages viewing, filtering by test or test suite; source lookup is also supported;
@@ -372,8 +372,8 @@
</li><li>test runs history;
</li><li>the list of provided tests runners may be easily extended writing a new Tests Runner Plugin.
</li></ul>
-<p>The HOWTO, known problems and limitation can be found in the <a href="http://wiki.eclipse.org/CDT/User/FAQ#C.2FC.2B.2B_Unit_Testing_Support" class="external text">CDT FAQ</a> on the wiki.
-</p><p>This feature was completed April 18th, 2012 as part of <a href="http://bugs.eclipse.org/210366" class="external text" title="http://bugs.eclipse.org/210366" rel="nofollow">Bug 210366</a>.
+<p>The HOWTO, known problems and limitation can be found in the <a href="https://wiki.eclipse.org/CDT/User/FAQ#C.2FC.2B.2B_Unit_Testing_Support" class="external text">CDT FAQ</a> on the wiki.
+</p><p>This feature was completed April 18th, 2012 as part of <a href="https://bugs.eclipse.org/210366" class="external text" title="https://bugs.eclipse.org/210366" rel="nofollow">Bug 210366</a>.
</p>
<a name="Bugs_Fixed"></a><h2> <span class="headline"> Bugs Fixed in this Release </span></h2>
<p>Bugzilla tasks completed for this release:
@@ -391,7 +391,7 @@ CDT 8.1 bug fixes</a>
<p><a href="cdt_c_whatsnew_80.htm">CDT 8.0 - New and Noteworthy</a></p>
<p><a href="cdt_c_whatsnew_70.htm">CDT 7.0 - New and Noteworthy</a></p>
<p><a href="cdt_c_whatsnew_60.htm">CDT 6.0 - New and Noteworthy</a></p>
- <p><a href="http://wiki.eclipse.org/CDT/User/NewIn50">CDT 5.0 - New and Noteworthy</a></p>
+ <p><a href="https://wiki.eclipse.org/CDT/User/NewIn50">CDT 5.0 - New and Noteworthy</a></p>
<p><a href="#top">Back to Top</a></p>
diff --git a/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_whatsnew_82.htm b/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_whatsnew_82.htm
index f57e08e8cdb..d17a77eab1f 100644
--- a/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_whatsnew_82.htm
+++ b/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_whatsnew_82.htm
@@ -11,11 +11,11 @@
<body>
<div>
<h1 id="top">CDT 8.2 - New and Noteworthy</h1>
- <p>See <a href="http://wiki.eclipse.org/CDT/User/NewIn82">What's new in CDT 8.2</a> on the CDT Wiki
+ <p>See <a href="https://wiki.eclipse.org/CDT/User/NewIn82">What's new in CDT 8.2</a> on the CDT Wiki
which may contain more recent information.
</p>
-<!-- ***** START MANUAL INSERT HTML FROM http://wiki.eclipse.org/CDT/User/NewIn82?action=render -->
+<!-- ***** START MANUAL INSERT HTML FROM https://wiki.eclipse.org/CDT/User/NewIn82?action=render -->
<table id="toc" class="toc" summary="Contents"><tr><td><div id="toctitle"><h2>Contents</h2></div>
<ul>
<li class="toclevel-1"><a href="#Editor"><span class="tocnumber">1</span> <span class="toctext">Editor</span></a>
@@ -62,56 +62,56 @@
<a name="Organize_Includes_Command"></a><h3> <span class="mw-headline"> Organize Includes Command </span></h3>
<p>The <i>Organize Includes</i> command is similar to <i>Organize Imports</i> in Java. It adds missing include statements, removes unnecessary ones, and reorders includes according to user preferences.
</p><p><a><img alt="Image:OrganizeIncludes.png" src="../images/cdt82/OrganizeIncludes.png" width="356" height="339" border="0" /></a>
-</p><p>When determining which header files must be included the <i>Organize Includes</i> command follows the "Include What You Use" rule. See <a href="http://code.google.com/p/include-what-you-use/wiki/WhyIWYU" class="external text" title="http://code.google.com/p/include-what-you-use/wiki/WhyIWYU" rel="nofollow">Why Include What You Use?</a> and <a href="http://code.google.com/p/include-what-you-use/wiki/WhatIsAUse" class="external text" title="http://code.google.com/p/include-what-you-use/wiki/WhatIsAUse" rel="nofollow">What Is a Use?</a>.
+</p><p>When determining which header files must be included the <i>Organize Includes</i> command follows the "Include What You Use" rule. See <a href="https://code.google.com/p/include-what-you-use/wiki/WhyIWYU" class="external text" title="https://code.google.com/p/include-what-you-use/wiki/WhyIWYU" rel="nofollow">Why Include What You Use?</a> and <a href="https://code.google.com/p/include-what-you-use/wiki/WhatIsAUse" class="external text" title="https://code.google.com/p/include-what-you-use/wiki/WhatIsAUse" rel="nofollow">What Is a Use?</a>.
</p>
<a name="Build"></a><h2> <span class="mw-headline"> Build </span></h2>
<a name="Console"></a><h3> <span class="mw-headline"> Console </span></h3>
-<ul><li> Line wrap option on the console (<a href="http://bugs.eclipse.org/199605" class="external text" title="http://bugs.eclipse.org/199605" rel="nofollow">Bug 199605</a>).
+<ul><li> Line wrap option on the console (<a href="https://bugs.eclipse.org/199605" class="external text" title="https://bugs.eclipse.org/199605" rel="nofollow">Bug 199605</a>).
</li></ul>
<p><a><img alt="Image:ConsoleWrapLine.png" src="../images/cdt82/ConsoleWrapLine.png" width="490" height="330" border="0" /></a> <a><img alt="Image:ConsoleWrapLinePreference.png" src="../images/cdt82/ConsoleWrapLinePreference.png" width="635" height="559" border="0" /></a>
</p>
<a name="Improved_toolchain_detection"></a><h3> <span class="mw-headline"> Improved toolchain detection </span></h3>
-<ul><li> Automatic detection of MinGW 64 bit (<a href="http://bugs.eclipse.org/380598" class="external text" title="http://bugs.eclipse.org/380598" rel="nofollow">Bug 380598</a>).
-</li><li> Detection of Visual Studio under Windows 7 64 bit (<a href="http://bugs.eclipse.org/385608" class="external text" title="http://bugs.eclipse.org/385608" rel="nofollow">Bug 385608</a>).
-</li><li> Recognize $PATH environment variable from workspace preferences for MinGW and Cygwin toolchains (<a href="http://bugs.eclipse.org/384520" class="external text" title="http://bugs.eclipse.org/384520" rel="nofollow">Bug 384520</a>).
-</li><li> Introduction of environment variables $MINGW_HOME and $CYGWIN_HOME that are recognized in preferences and project properties (<a href="http://bugs.eclipse.org/403257" class="external text" title="http://bugs.eclipse.org/403257" rel="nofollow">Bug 403257</a>, <a href="http://bugs.eclipse.org/357442" class="external text" title="http://bugs.eclipse.org/357442" rel="nofollow">Bug 357442</a>).
+<ul><li> Automatic detection of MinGW 64 bit (<a href="https://bugs.eclipse.org/380598" class="external text" title="https://bugs.eclipse.org/380598" rel="nofollow">Bug 380598</a>).
+</li><li> Detection of Visual Studio under Windows 7 64 bit (<a href="https://bugs.eclipse.org/385608" class="external text" title="https://bugs.eclipse.org/385608" rel="nofollow">Bug 385608</a>).
+</li><li> Recognize $PATH environment variable from workspace preferences for MinGW and Cygwin toolchains (<a href="https://bugs.eclipse.org/384520" class="external text" title="https://bugs.eclipse.org/384520" rel="nofollow">Bug 384520</a>).
+</li><li> Introduction of environment variables $MINGW_HOME and $CYGWIN_HOME that are recognized in preferences and project properties (<a href="https://bugs.eclipse.org/403257" class="external text" title="https://bugs.eclipse.org/403257" rel="nofollow">Bug 403257</a>, <a href="https://bugs.eclipse.org/357442" class="external text" title="https://bugs.eclipse.org/357442" rel="nofollow">Bug 357442</a>).
</li></ul>
<p><a><img alt="Image:MINGW_HOME.png" src="../images/cdt82/MINGW_HOME.png" width="825" height="454" border="0" /></a> <a><img alt="Image:CYGWIN_HOME.png" src="../images/cdt82/CYGWIN_HOME.png" width="824" height="462" border="0" /></a>
</p>
<a name="Scanner_Discovery_.2F_Language_Settings_Providers"></a><h3> <span class="mw-headline"> Scanner Discovery / Language Settings Providers </span></h3>
-<ul><li> "Preprocessor Include Paths, Macros etc." property page now fully replaces older "Scanner Discovery" page. "Scanner Discovery" is now hidden by default (<a href="http://bugs.eclipse.org/403405" class="external text" title="http://bugs.eclipse.org/403405" rel="nofollow">Bug 403405</a>, <a href="http://bugs.eclipse.org/407087" class="external text" title="http://bugs.eclipse.org/407087" rel="nofollow">Bug 407087</a>).
+<ul><li> "Preprocessor Include Paths, Macros etc." property page now fully replaces older "Scanner Discovery" page. "Scanner Discovery" is now hidden by default (<a href="https://bugs.eclipse.org/403405" class="external text" title="https://bugs.eclipse.org/403405" rel="nofollow">Bug 403405</a>, <a href="https://bugs.eclipse.org/407087" class="external text" title="https://bugs.eclipse.org/407087" rel="nofollow">Bug 407087</a>).
</li></ul>
<p><a><img alt="Image:PropertyPageSettingsScannerDiscovery.png" src="../images/cdt82/PropertyPageSettingsScannerDiscovery.png" width="861" height="464" border="0" /></a>
</p>
-<ul><li> Built-in Compiler Settings provider for MinGW is enabled by default now for MinGW toolchain (<a href="http://bugs.eclipse.org/382422" class="external text" title="http://bugs.eclipse.org/382422" rel="nofollow">Bug 382422</a>).
-</li><li> Added Built-in Compiler Settings provider for Cygwin (<a href="http://bugs.eclipse.org/382423" class="external text" title="http://bugs.eclipse.org/382423" rel="nofollow">Bug 382423</a>).
+<ul><li> Built-in Compiler Settings provider for MinGW is enabled by default now for MinGW toolchain (<a href="https://bugs.eclipse.org/382422" class="external text" title="https://bugs.eclipse.org/382422" rel="nofollow">Bug 382422</a>).
+</li><li> Added Built-in Compiler Settings provider for Cygwin (<a href="https://bugs.eclipse.org/382423" class="external text" title="https://bugs.eclipse.org/382423" rel="nofollow">Bug 382423</a>).
</li></ul>
<p><a><img alt="Image:CygwinProvider.png" src="../images/cdt82/CygwinProvider.png" width="836" height="624" border="0" /></a>
</p>
-<ul><li> Project-relative include paths representation was stabilized and now officially supported in UI (<a href="http://bugs.eclipse.org/401734" class="external text" title="http://bugs.eclipse.org/401734" rel="nofollow">Bug 401734</a>).
-</li><li> Support for project-relative paths for Build Output Providers (<a href="http://bugs.eclipse.org/402023" class="external text" title="http://bugs.eclipse.org/402023" rel="nofollow">Bug 402023</a>).
-</li><li> Changes in environment variables (preferences or project properties - as applicable) automatically trigger re-discovery (<a href="http://bugs.eclipse.org/403406" class="external text" title="http://bugs.eclipse.org/403406" rel="nofollow">Bug 403406</a>).
-</li><li> Number of changes to support compatibility with older methods to provide include paths for indexer, namely pathEntryContainers, contributed ScannerInfo entries (<a href="http://bugs.eclipse.org/401961" class="external text" title="http://bugs.eclipse.org/401961" rel="nofollow">Bug 401961</a>, <a href="http://bugs.eclipse.org/398056" class="external text" title="http://bugs.eclipse.org/398056" rel="nofollow">Bug 398056</a>, <a href="http://bugs.eclipse.org/392966" class="external text" title="http://bugs.eclipse.org/392966" rel="nofollow">Bug 392966</a>).
-</li><li> Fixed compatibility issues related to import older projects (<a href="http://bugs.eclipse.org/393641" class="external text" title="http://bugs.eclipse.org/393641" rel="nofollow">Bug 393641</a>).
+<ul><li> Project-relative include paths representation was stabilized and now officially supported in UI (<a href="https://bugs.eclipse.org/401734" class="external text" title="https://bugs.eclipse.org/401734" rel="nofollow">Bug 401734</a>).
+</li><li> Support for project-relative paths for Build Output Providers (<a href="https://bugs.eclipse.org/402023" class="external text" title="https://bugs.eclipse.org/402023" rel="nofollow">Bug 402023</a>).
+</li><li> Changes in environment variables (preferences or project properties - as applicable) automatically trigger re-discovery (<a href="https://bugs.eclipse.org/403406" class="external text" title="https://bugs.eclipse.org/403406" rel="nofollow">Bug 403406</a>).
+</li><li> Number of changes to support compatibility with older methods to provide include paths for indexer, namely pathEntryContainers, contributed ScannerInfo entries (<a href="https://bugs.eclipse.org/401961" class="external text" title="https://bugs.eclipse.org/401961" rel="nofollow">Bug 401961</a>, <a href="https://bugs.eclipse.org/398056" class="external text" title="https://bugs.eclipse.org/398056" rel="nofollow">Bug 398056</a>, <a href="https://bugs.eclipse.org/392966" class="external text" title="https://bugs.eclipse.org/392966" rel="nofollow">Bug 392966</a>).
+</li><li> Fixed compatibility issues related to import older projects (<a href="https://bugs.eclipse.org/393641" class="external text" title="https://bugs.eclipse.org/393641" rel="nofollow">Bug 393641</a>).
</li></ul>
<a name="Makefile_Editor"></a><h3> <span class="mw-headline"> Makefile Editor </span></h3>
-<ul><li> GNU Makefile functions highlighting fixed (<a href="http://bugs.eclipse.org/406911" class="external text" title="http://bugs.eclipse.org/406911" rel="nofollow">Bug 406911</a>).
-</li><li> Bracket matching (<a href="http://bugs.eclipse.org/405279" class="external text" title="http://bugs.eclipse.org/405279" rel="nofollow">Bug 405279</a>).
+<ul><li> GNU Makefile functions highlighting fixed (<a href="https://bugs.eclipse.org/406911" class="external text" title="https://bugs.eclipse.org/406911" rel="nofollow">Bug 406911</a>).
+</li><li> Bracket matching (<a href="https://bugs.eclipse.org/405279" class="external text" title="https://bugs.eclipse.org/405279" rel="nofollow">Bug 405279</a>).
</li></ul>
<p><a><img alt="Image:MakeEditorBracketMatching.png" src="../images/cdt82/MakeEditorBracketMatching.png" width="558" height="82" border="0" /></a>
</p>
-<ul><li> Content assist for automatic variables (<a href="http://bugs.eclipse.org/407169" class="external text" title="http://bugs.eclipse.org/407169" rel="nofollow">Bug 407169</a>).
+<ul><li> Content assist for automatic variables (<a href="https://bugs.eclipse.org/407169" class="external text" title="https://bugs.eclipse.org/407169" rel="nofollow">Bug 407169</a>).
</li></ul>
<p><a><img alt="Image:MakeEditorContentAssistAutoVars.png" src="../images/cdt82/MakeEditorContentAssistAutoVars.png" width="558" height="370" border="0" /></a>
</p>
-<ul><li> Highlight for conditional variable assignment (<a href="http://bugs.eclipse.org/406596" class="external text" title="http://bugs.eclipse.org/406596" rel="nofollow">Bug 406596</a>).
-</li><li> Proper colorization of escaped # (<a href="http://bugs.eclipse.org/404599" class="external text" title="http://bugs.eclipse.org/404599" rel="nofollow">Bug 404599</a>).
+<ul><li> Highlight for conditional variable assignment (<a href="https://bugs.eclipse.org/406596" class="external text" title="https://bugs.eclipse.org/406596" rel="nofollow">Bug 406596</a>).
+</li><li> Proper colorization of escaped # (<a href="https://bugs.eclipse.org/404599" class="external text" title="https://bugs.eclipse.org/404599" rel="nofollow">Bug 404599</a>).
</li></ul>
<a name="Misc"></a><h3> <span class="mw-headline"> Misc </span></h3>
-<ul><li> Ability to specify local includes for indexer, as in [#include "header.h"] as opposed to system includes [#include &lt;header.h&gt;] (<a href="http://bugs.eclipse.org/388368" class="external text" title="http://bugs.eclipse.org/388368" rel="nofollow">Bug 388368</a>).
-</li><li> Fixed some bugs related to storing environment variables, such as silently ignoring removals or additions (<a href="http://bugs.eclipse.org/348781" class="external text" title="http://bugs.eclipse.org/348781" rel="nofollow">Bug 348781</a>, <a href="http://bugs.eclipse.org/355488" class="external text" title="http://bugs.eclipse.org/355488" rel="nofollow">Bug 355488</a>).
-</li><li> Improved performance in certain areas (<a href="http://bugs.eclipse.org/405643" class="external text" title="http://bugs.eclipse.org/405643" rel="nofollow">Bug 405643</a>, <a href="http://bugs.eclipse.org/405638" class="external text" title="http://bugs.eclipse.org/405638" rel="nofollow">Bug 405638</a>, <a href="http://bugs.eclipse.org/405744" class="external text" title="http://bugs.eclipse.org/405744" rel="nofollow">Bug 405744</a>, <a href="http://bugs.eclipse.org/407483" class="external text" title="http://bugs.eclipse.org/407483" rel="nofollow">Bug 407483</a>).
-</li><li> User documentation for Scanner Discovery updated including property page "Preprocessor Includes, Macros" (<a href="http://bugs.eclipse.org/409392" class="external text" title="http://bugs.eclipse.org/409392" rel="nofollow">Bug 409392</a>).
+<ul><li> Ability to specify local includes for indexer, as in [#include "header.h"] as opposed to system includes [#include &lt;header.h&gt;] (<a href="https://bugs.eclipse.org/388368" class="external text" title="https://bugs.eclipse.org/388368" rel="nofollow">Bug 388368</a>).
+</li><li> Fixed some bugs related to storing environment variables, such as silently ignoring removals or additions (<a href="https://bugs.eclipse.org/348781" class="external text" title="https://bugs.eclipse.org/348781" rel="nofollow">Bug 348781</a>, <a href="https://bugs.eclipse.org/355488" class="external text" title="https://bugs.eclipse.org/355488" rel="nofollow">Bug 355488</a>).
+</li><li> Improved performance in certain areas (<a href="https://bugs.eclipse.org/405643" class="external text" title="https://bugs.eclipse.org/405643" rel="nofollow">Bug 405643</a>, <a href="https://bugs.eclipse.org/405638" class="external text" title="https://bugs.eclipse.org/405638" rel="nofollow">Bug 405638</a>, <a href="https://bugs.eclipse.org/405744" class="external text" title="https://bugs.eclipse.org/405744" rel="nofollow">Bug 405744</a>, <a href="https://bugs.eclipse.org/407483" class="external text" title="https://bugs.eclipse.org/407483" rel="nofollow">Bug 407483</a>).
+</li><li> User documentation for Scanner Discovery updated including property page "Preprocessor Includes, Macros" (<a href="https://bugs.eclipse.org/409392" class="external text" title="https://bugs.eclipse.org/409392" rel="nofollow">Bug 409392</a>).
</li></ul>
<a name="Debug"></a><h2> <span class="mw-headline"> Debug </span></h2>
<a name="Enhanced_Expressions"></a><h3> <span class="mw-headline"> Enhanced Expressions </span></h3>
@@ -144,7 +144,7 @@ var1; =$e* -- Will show a group containing variable var1 as well as all registe
</pre>
<p>This feature allows to quickly define multiple expressions that interest the user. Because groups are created from these special expressions, they can be collapsed when uninteresting and re-expanded later, without having to be re-entered by the user.
</p><p><a><img alt="Image:CDT GroupExpr.png" src="../images/cdt82/CDT_GroupExpr.png" width="545" height="521" border="0" /></a>
-</p><p>This feature was completed on July 10th, 2012 and updated for local variables on December 19th, 2012. For details see <a href="http://bugs.eclipse.org/381754" class="external text" title="http://bugs.eclipse.org/381754" rel="nofollow">Bug 381754</a> and <a href="http://bugs.eclipse.org/394408" class="external text" title="http://bugs.eclipse.org/394408" rel="nofollow">Bug 394408</a>.
+</p><p>This feature was completed on July 10th, 2012 and updated for local variables on December 19th, 2012. For details see <a href="https://bugs.eclipse.org/381754" class="external text" title="https://bugs.eclipse.org/381754" rel="nofollow">Bug 381754</a> and <a href="https://bugs.eclipse.org/394408" class="external text" title="https://bugs.eclipse.org/394408" rel="nofollow">Bug 394408</a>.
</p><p>Note that the comma (,) is not allowed as a group separator as it is used within valid expressions that use templates (e.g., <i>((((((class std::_Vector_base&lt;int, std::allocator&lt;int&gt; &gt;) v))._M_impl))._M_start)</i>).
</p>
<a name="OS_Resources_View"></a><h3> <span class="mw-headline"> OS Resources View </span></h3>
@@ -206,7 +206,7 @@ Kernel modules - Listing of all loaded kernel modules
<a name="Floating_Point_renderer_has_been_added_to_the_memory_package"></a><h3> <span class="mw-headline"> Floating Point renderer has been added to the memory package </span></h3>
<p>A floating point render has been added to the memory package. So now there is the Traditional renderer and a Floating Point renderer available. This render allows display and editing of the floating point values. Since it originated from the Traditional render, it's workflow and style are similar. There is no ASCII data pane display, since this did not seem to make much sense with floating point data.
</p><p><a><img alt="Image:CDT FloatingPointMemory.png" src="../images/cdt82/CDT_FloatingPointMemory.png" width="834" height="352" border="0" /></a>
-</p><p>This feature was completed on November 16th, 2012 as part of <a href="http://bugs.eclipse.org/394509" class="external text" title="http://bugs.eclipse.org/394509" rel="nofollow">Bug 394509</a>.
+</p><p>This feature was completed on November 16th, 2012 as part of <a href="https://bugs.eclipse.org/394509" class="external text" title="https://bugs.eclipse.org/394509" rel="nofollow">Bug 394509</a>.
</p>
<a name="Debugging_multiple_processes_within_one_debug_session"></a><h3> <span class="mw-headline"> Debugging multiple processes within one debug session </span></h3>
<p>Debugging a new executable in the same debug session has been improved for GDB versions starting from 7.2. "Debug New Executable" action has been added to the context menu of the Debug view.
@@ -288,7 +288,7 @@ Building on the enhanced selection, it's now also possible to filter what is sho
<p>See bugzilla report <a href="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced;bug_status=RESOLVED;bug_status=VERIFIED;bug_status=CLOSED;resolution=FIXED;target_milestone=8.1.1;target_milestone=8.1.2;target_milestone=8.1.3;target_milestone=8.2;product=CDT;classification=Tools" class="external text" title="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced;bug_status=RESOLVED;bug_status=VERIFIED;bug_status=CLOSED;resolution=FIXED;target_milestone=8.1.1;target_milestone=8.1.2;target_milestone=8.1.3;target_milestone=8.2;product=CDT;classification=Tools" rel="nofollow">Bugs Fixed in CDT 8.2</a>.
Open this report in new browser window.
</p>
-<!-- ***** END MANUAL INSERT HTML FROM http://wiki.eclipse.org/CDT/User/NewIn82?action=render -->
+<!-- ***** END MANUAL INSERT HTML FROM https://wiki.eclipse.org/CDT/User/NewIn82?action=render -->
<h2>What's new in other CDT releases</h2>
@@ -298,7 +298,7 @@ Open this report in new browser window.
<p><a href="cdt_c_whatsnew_80.htm">CDT 8.0 - New and Noteworthy</a></p>
<p><a href="cdt_c_whatsnew_70.htm">CDT 7.0 - New and Noteworthy</a></p>
<p><a href="cdt_c_whatsnew_60.htm">CDT 6.0 - New and Noteworthy</a></p>
- <p><a href="http://wiki.eclipse.org/CDT/User/NewIn50">CDT 5.0 - New and Noteworthy</a></p>
+ <p><a href="https://wiki.eclipse.org/CDT/User/NewIn50">CDT 5.0 - New and Noteworthy</a></p>
<p><a href="#top">Back to Top</a></p>
diff --git a/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_whatsnew_83.htm b/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_whatsnew_83.htm
index 165a0ac85a7..76997a20ba1 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_whatsnew_83.htm
+++ b/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_whatsnew_83.htm
@@ -11,11 +11,11 @@
<body>
<div>
<h1 id="top">CDT 8.3 - New and Noteworthy</h1>
- <p>See <a href="http://wiki.eclipse.org/CDT/User/NewIn83">What's new in CDT 8.3</a> on the CDT Wiki
+ <p>See <a href="https://wiki.eclipse.org/CDT/User/NewIn83">What's new in CDT 8.3</a> on the CDT Wiki
which may contain more recent information.
</p>
-<!-- ***** START MANUAL INSERT HTML FROM http://wiki.eclipse.org/CDT/User/NewIn83?action=render -->
+<!-- ***** START MANUAL INSERT HTML FROM https://wiki.eclipse.org/CDT/User/NewIn83?action=render -->
<table id="toc" class="toc"><tr><td><div id="toctitle"><h2>Contents</h2></div>
<ul>
<li class="toclevel-1 tocsection-1"><a href="#Build"><span class="tocnumber">1</span> <span class="toctext">Build</span></a>
@@ -55,12 +55,12 @@
</td></tr></table>
<h2> <span class="mw-headline" id="Build"> Build </span></h2>
<h3> <span class="mw-headline" id="Toolchains"> Toolchains </span></h3>
-<ul><li> Language dialect options in GNU toolchain definition (<a rel="nofollow" class="external text" href="http://bugs.eclipse.org/404913">Bug 404913</a>).
+<ul><li> Language dialect options in GNU toolchain definition (<a rel="nofollow" class="external text" href="https://bugs.eclipse.org/404913">Bug 404913</a>).
</li></ul>
<p><a><img alt="DialectLanguageStandard.png" src="../images/cdt83/DialectLanguageStandard.png" width="845" height="381" /></a>
</p>
<h3> <span class="mw-headline" id="Scanner_Discovery.2FLanguage_Settings_Providers"> Scanner Discovery/Language Settings Providers </span></h3>
-<ul><li> Use applicable options (such as language dialect) from build settings during discovery of built-in settings (<a rel="nofollow" class="external text" href="http://bugs.eclipse.org/404913">Bug 404913</a>). But note that to use options changed by user the built-in settings provider needs to be set as non-shared.<br />
+<ul><li> Use applicable options (such as language dialect) from build settings during discovery of built-in settings (<a rel="nofollow" class="external text" href="https://bugs.eclipse.org/404913">Bug 404913</a>). But note that to use options changed by user the built-in settings provider needs to be set as non-shared.<br />
</li></ul>
<p><a><img alt="BuiltInDetectors-FLAGS.png" src="../images/cdt83/BuiltInDetectors-FLAGS.png" width="974" height="533" /></a>
</p>
@@ -76,47 +76,47 @@
</p>
<h2> <span class="mw-headline" id="Debug"> Debug </span></h2>
<h3> <span class="mw-headline" id="Threads_displayed_by_creation_order_in_the_Debug_view"> Threads displayed by creation order in the Debug view </span></h3>
-<p>For a multi-threaded program, the different threads are now shown in the order they were created during execution. Not only is that order more intuitive, it allows for the selection in the Debug view to be more stable. This enhancement was completed on January 13th, 2014. For details see <a rel="nofollow" class="external text" href="http://eclip.se/412547">Bug 412547</a>.
+<p>For a multi-threaded program, the different threads are now shown in the order they were created during execution. Not only is that order more intuitive, it allows for the selection in the Debug view to be more stable. This enhancement was completed on January 13th, 2014. For details see <a rel="nofollow" class="external text" href="https://eclip.se/412547">Bug 412547</a>.
</p><p><a><img alt="CDT ThreadOrder.png" src="../images/cdt83/CDT_ThreadOrder.png" width="896" height="219" /></a>
</p><p><br />
</p><p><br />
</p>
<h3> <span class="mw-headline" id="Support_for_multi-process_debugging_in_Memory_views"> Support for multi-process debugging in Memory views </span></h3>
-<p>The Memory view and Memory Browser view now support multi-process debugging. Beyond properly refreshing their content based on the currently selected process, the user can now define different memory addresses to look at for each process being debugged. This work was a contribution from Alvaro Sanchez-Leon on January 15th, 2014. For details see <a rel="nofollow" class="external text" href="http://eclip.se/250323">Bug 250323</a>.
+<p>The Memory view and Memory Browser view now support multi-process debugging. Beyond properly refreshing their content based on the currently selected process, the user can now define different memory addresses to look at for each process being debugged. This work was a contribution from Alvaro Sanchez-Leon on January 15th, 2014. For details see <a rel="nofollow" class="external text" href="https://eclip.se/250323">Bug 250323</a>.
</p><p><a><img alt="CDT MemMultiProcess.png" src="../images/cdt83/CDT_MemMultiProcess.png" width="1003" height="499" /></a>
</p><p><br />
</p><p><br />
</p>
<h3> <span class="mw-headline" id="Enhanced_support_for_multi-process_debugging_in_Registers_view"> Enhanced support for multi-process debugging in Registers view </span></h3>
-<p>The Registers view now supports debugging processes with a different set of registers. For example, the registers of the selected process will properly be displayed when debugging both a 32-bit process and a 64-bit process. This work was a contribution from Alvaro Sanchez-Leon on September 29th, 2013. For details see <a rel="nofollow" class="external text" href="http://eclip.se/418176">Bug 418176</a>.
+<p>The Registers view now supports debugging processes with a different set of registers. For example, the registers of the selected process will properly be displayed when debugging both a 32-bit process and a 64-bit process. This work was a contribution from Alvaro Sanchez-Leon on September 29th, 2013. For details see <a rel="nofollow" class="external text" href="https://eclip.se/418176">Bug 418176</a>.
</p><p><a><img alt="CDT RegMultiProcess1.png" src="../images/cdt83/CDT_RegMultiProcess1.png" width="894" height="221" /></a>
<a><img alt="CDT RegMultiProcess2.png" src="../images/cdt83/CDT_RegMultiProcess2.png" width="895" height="219" /></a>
</p><p><br />
</p><p><br />
</p>
<h3> <span class="mw-headline" id="Register_view_is_now_stack-frame-specific"> Register view is now stack-frame-specific </span></h3>
-<p>The Registers view will now update each time a different stack-frame is selected. The view will show the content of the registers as they were for the selected frame, when the method call was done which caused the creation of the next stack-frame. This work was a contribution from Alvaro Sanchez-Leon on September 27th, 2013. For details see <a rel="nofollow" class="external text" href="http://eclip.se/323552">Bug 323552</a>.
+<p>The Registers view will now update each time a different stack-frame is selected. The view will show the content of the registers as they were for the selected frame, when the method call was done which caused the creation of the next stack-frame. This work was a contribution from Alvaro Sanchez-Leon on September 27th, 2013. For details see <a rel="nofollow" class="external text" href="https://eclip.se/323552">Bug 323552</a>.
</p><p><a><img alt="CDT RegisterStack1.png" src="../images/cdt83/CDT_RegisterStack1.png" width="887" height="198" /></a>
<a><img alt="CDT RegisterStack2.png" src="../images/cdt83/CDT_RegisterStack2.png" width="884" height="197" /></a>
</p><p><br />
</p><p><br />
</p>
<h3> <span class="mw-headline" id="Basic_support_of_Multicore_Visualizer_in_all-stop_mode"> Basic support of Multicore Visualizer in all-stop mode </span></h3>
-<p>The <a rel="nofollow" class="external text" href="http://wiki.eclipse.org/CDT/User/FAQ#What_is_the_Multicore_Visualizer.3F">Multicore Visualizer</a> now displays properly in all-stop mode, with all its features available when the program is suspended, while still updating thread creation/termination when the program is running. This enhancement was completed on August 15th, 2013. For details see <a rel="nofollow" class="external text" href="http://eclip.se/409965">Bug 409965</a>
+<p>The <a rel="nofollow" class="external text" href="https://wiki.eclipse.org/CDT/User/FAQ#What_is_the_Multicore_Visualizer.3F">Multicore Visualizer</a> now displays properly in all-stop mode, with all its features available when the program is suspended, while still updating thread creation/termination when the program is running. This enhancement was completed on August 15th, 2013. For details see <a rel="nofollow" class="external text" href="https://eclip.se/409965">Bug 409965</a>
</p><p><br />
</p>
<h3> <span class="mw-headline" id="Variable_substitution_for_GDB_command_file_path"> Variable substitution for GDB command file path </span></h3>
-<p>It is now possible to use eclipse variables within the specified path of the GDB command file. This allows to have project-specific GDB command files. For example ${project_loc}/project.gdbinit. This feature was completed July 23rd, 2013. For details see <a rel="nofollow" class="external text" href="http://eclip.se/413373">Bug 413373</a>
+<p>It is now possible to use eclipse variables within the specified path of the GDB command file. This allows to have project-specific GDB command files. For example ${project_loc}/project.gdbinit. This feature was completed July 23rd, 2013. For details see <a rel="nofollow" class="external text" href="https://eclip.se/413373">Bug 413373</a>
</p><p><a><img alt="CDT GdbinitVarSubstitution.png" src="../images/cdt83/CDT_GdbinitVarSubstitution.png" width="671" height="575" /></a>
</p><p><br />
</p><p><br />
</p>
<h3> <span class="mw-headline" id="Project-less_debugging_is_now_supported_on_the_Windows_platform"> Project-less debugging is now supported on the Windows platform </span></h3>
-<p><a rel="nofollow" class="external text" href="http://wiki.eclipse.org/CDT/User/FAQ#Can_I_debug_a_process_that_I_didn.27t_develop_in_Eclipse.3F">Project-less debugging</a> now works as expected on Windows. This enhancement was completed on August 10th, 2013. For details see <a rel="nofollow" class="external text" href="http://eclip.se/344470">Bug 344470</a>
+<p><a rel="nofollow" class="external text" href="https://wiki.eclipse.org/CDT/User/FAQ#Can_I_debug_a_process_that_I_didn.27t_develop_in_Eclipse.3F">Project-less debugging</a> now works as expected on Windows. This enhancement was completed on August 10th, 2013. For details see <a rel="nofollow" class="external text" href="https://eclip.se/344470">Bug 344470</a>
</p><p><br />
</p>
<h3> <span class="mw-headline" id="Detection_of_target_disconnection"> Detection of target disconnection </span></h3>
-<p>When doing remote debugging, if the connection to the target is lost, the debug session will be cleanly terminated. Previously, some situations could lead to a debug session that lost its connection but remained active using the host machine instead; these cases have been fixed. This enhancement was completed on January 8th, 2014. For details see <a rel="nofollow" class="external text" href="http://eclip.se/422586">Bug 422586</a>
+<p>When doing remote debugging, if the connection to the target is lost, the debug session will be cleanly terminated. Previously, some situations could lead to a debug session that lost its connection but remained active using the host machine instead; these cases have been fixed. This enhancement was completed on January 8th, 2014. For details see <a rel="nofollow" class="external text" href="https://eclip.se/422586">Bug 422586</a>
</p>
<h2> <span class="mw-headline" id="Qt_Support_.28preview.29"> Qt Support (preview) </span></h2>
<p>Work continues on CDT's support for Qt. For CDT 8.3, this includes the following. Note that we still consider this a preview release until CDT 8.4 where we'll clean up usability issues around setting up CDT to work with Qt and hopefully some better qmake and QML support.
@@ -139,7 +139,7 @@
<h2> <span class="mw-headline" id="Bugs_Fixed_in_this_Release"> Bugs Fixed in this Release </span></h2>
<p>See bugzilla report <a rel="nofollow" class="external text" href="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced;bug_status=RESOLVED;bug_status=VERIFIED;bug_status=CLOSED;resolution=FIXED;target_milestone=8.2.1;target_milestone=8.2.2;target_milestone=8.2.3;target_milestone=8.3.0;product=CDT;classification=Tools">Bugs Fixed in CDT 8.3</a>
</p>
-<!-- ***** END MANUAL INSERT HTML FROM http://wiki.eclipse.org/CDT/User/NewIn83?action=render -->
+<!-- ***** END MANUAL INSERT HTML FROM https://wiki.eclipse.org/CDT/User/NewIn83?action=render -->
<h2>What's new in other CDT releases</h2>
@@ -150,7 +150,7 @@
<p><a href="cdt_c_whatsnew_80.htm">CDT 8.0 - New and Noteworthy</a></p>
<p><a href="cdt_c_whatsnew_70.htm">CDT 7.0 - New and Noteworthy</a></p>
<p><a href="cdt_c_whatsnew_60.htm">CDT 6.0 - New and Noteworthy</a></p>
- <p><a href="http://wiki.eclipse.org/CDT/User/NewIn50">CDT 5.0 - New and Noteworthy</a></p>
+ <p><a href="https://wiki.eclipse.org/CDT/User/NewIn50">CDT 5.0 - New and Noteworthy</a></p>
<p><a href="#top">Back to Top</a></p>
diff --git a/doc/org.eclipse.cdt.doc.user/contexts_CDT.xml b/doc/org.eclipse.cdt.doc.user/contexts_CDT.xml
index fc450ee908c..fc450ee908c 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/contexts_CDT.xml
+++ b/doc/org.eclipse.cdt.doc.user/contexts_CDT.xml
diff --git a/doc/org.eclipse.cdt.doc.user/getting_started/cdt_o_tutorial.htm b/doc/org.eclipse.cdt.doc.user/getting_started/cdt_o_tutorial.htm
index e56c2d384de..cbacf47c138 100644
--- a/doc/org.eclipse.cdt.doc.user/getting_started/cdt_o_tutorial.htm
+++ b/doc/org.eclipse.cdt.doc.user/getting_started/cdt_o_tutorial.htm
@@ -35,6 +35,7 @@
<img src="../images/trans.gif" width="25" height="1" alt=""><a style="text-decoration:none" href="cdt_w_install_cdt.htm">Install/update the CDT</a><br>
+<p>An alternative getting started is available on the Wiki at <a href="https://wiki.eclipse.org/CDT/Setting_Up_Eclipse_CDT" target="_blank">Setting Up Eclipse CDT</a>.</p>
diff --git a/doc/org.eclipse.cdt.doc.user/getting_started/cdt_w_prepare_workbench.htm b/doc/org.eclipse.cdt.doc.user/getting_started/cdt_w_prepare_workbench.htm
index 5bc8fdbe01d..5bc8fdbe01d 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/getting_started/cdt_w_prepare_workbench.htm
+++ b/doc/org.eclipse.cdt.doc.user/getting_started/cdt_w_prepare_workbench.htm
diff --git a/doc/org.eclipse.cdt.doc.user/help.css b/doc/org.eclipse.cdt.doc.user/help.css
index 338e3bd22de..338e3bd22de 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/help.css
+++ b/doc/org.eclipse.cdt.doc.user/help.css
diff --git a/doc/org.eclipse.cdt.doc.user/images/btn_columns.png b/doc/org.eclipse.cdt.doc.user/images/btn_columns.png
index 3833e627033..3833e627033 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/images/btn_columns.png
+++ b/doc/org.eclipse.cdt.doc.user/images/btn_columns.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/images/btn_import_executables.png b/doc/org.eclipse.cdt.doc.user/images/btn_import_executables.png
index ae639c2fa1e..ae639c2fa1e 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/images/btn_import_executables.png
+++ b/doc/org.eclipse.cdt.doc.user/images/btn_import_executables.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/images/btn_restart.png b/doc/org.eclipse.cdt.doc.user/images/btn_restart.png
index a161f8522f0..a161f8522f0 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/images/btn_restart.png
+++ b/doc/org.eclipse.cdt.doc.user/images/btn_restart.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/images/c_exe_obj.png b/doc/org.eclipse.cdt.doc.user/images/c_exe_obj.png
index 9f89f36da17..9f89f36da17 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/images/c_exe_obj.png
+++ b/doc/org.eclipse.cdt.doc.user/images/c_exe_obj.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/images/c_object_file.png b/doc/org.eclipse.cdt.doc.user/images/c_object_file.png
index 29c5bb72797..29c5bb72797 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/images/c_object_file.png
+++ b/doc/org.eclipse.cdt.doc.user/images/c_object_file.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/images/cdt_dlg_define_build_var.png b/doc/org.eclipse.cdt.doc.user/images/cdt_dlg_define_build_var.png
index 9190d6ea25a..9190d6ea25a 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/images/cdt_dlg_define_build_var.png
+++ b/doc/org.eclipse.cdt.doc.user/images/cdt_dlg_define_build_var.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/images/cdt_dlg_edit_build_var.png b/doc/org.eclipse.cdt.doc.user/images/cdt_dlg_edit_build_var.png
index 049a6e3cc52..049a6e3cc52 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/images/cdt_dlg_edit_build_var.png
+++ b/doc/org.eclipse.cdt.doc.user/images/cdt_dlg_edit_build_var.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/images/cdt_inline_rename.png b/doc/org.eclipse.cdt.doc.user/images/cdt_inline_rename.png
index 44047e88db8..44047e88db8 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/images/cdt_inline_rename.png
+++ b/doc/org.eclipse.cdt.doc.user/images/cdt_inline_rename.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/images/cdt_menu_toggle_comments.png b/doc/org.eclipse.cdt.doc.user/images/cdt_menu_toggle_comments.png
index 524c13a74ec..524c13a74ec 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/images/cdt_menu_toggle_comments.png
+++ b/doc/org.eclipse.cdt.doc.user/images/cdt_menu_toggle_comments.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/images/cdt_pref_build_vars.png b/doc/org.eclipse.cdt.doc.user/images/cdt_pref_build_vars.png
index 850d2eb2de2..850d2eb2de2 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/images/cdt_pref_build_vars.png
+++ b/doc/org.eclipse.cdt.doc.user/images/cdt_pref_build_vars.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/images/cdt_pref_new_task_tag_dlg.png b/doc/org.eclipse.cdt.doc.user/images/cdt_pref_new_task_tag_dlg.png
index 2235581638e..2235581638e 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/images/cdt_pref_new_task_tag_dlg.png
+++ b/doc/org.eclipse.cdt.doc.user/images/cdt_pref_new_task_tag_dlg.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/images/cdt_pref_task_tags.png b/doc/org.eclipse.cdt.doc.user/images/cdt_pref_task_tags.png
index e7299985c19..e7299985c19 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/images/cdt_pref_task_tags.png
+++ b/doc/org.eclipse.cdt.doc.user/images/cdt_pref_task_tags.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/images/cdt_rename_dialog.png b/doc/org.eclipse.cdt.doc.user/images/cdt_rename_dialog.png
index 4be0a7d5ff5..4be0a7d5ff5 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/images/cdt_rename_dialog.png
+++ b/doc/org.eclipse.cdt.doc.user/images/cdt_rename_dialog.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/images/cdt_t_toggle_selection.png b/doc/org.eclipse.cdt.doc.user/images/cdt_t_toggle_selection.png
index 5f68cbc0aee..5f68cbc0aee 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/images/cdt_t_toggle_selection.png
+++ b/doc/org.eclipse.cdt.doc.user/images/cdt_t_toggle_selection.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/images/cdt_t_toggle_selection2.png b/doc/org.eclipse.cdt.doc.user/images/cdt_t_toggle_selection2.png
index 1831f1f276d..1831f1f276d 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/images/cdt_t_toggle_selection2.png
+++ b/doc/org.eclipse.cdt.doc.user/images/cdt_t_toggle_selection2.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/images/cdt_t_toggle_selection3.png b/doc/org.eclipse.cdt.doc.user/images/cdt_t_toggle_selection3.png
index 00a6913dedd..00a6913dedd 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/images/cdt_t_toggle_selection3.png
+++ b/doc/org.eclipse.cdt.doc.user/images/cdt_t_toggle_selection3.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/images/cdt_w_basic06a.png b/doc/org.eclipse.cdt.doc.user/images/cdt_w_basic06a.png
index 05d86630deb..05d86630deb 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/images/cdt_w_basic06a.png
+++ b/doc/org.eclipse.cdt.doc.user/images/cdt_w_basic06a.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/images/cdt_w_debug_configurations_01.png b/doc/org.eclipse.cdt.doc.user/images/cdt_w_debug_configurations_01.png
index 79ec77bb9be..79ec77bb9be 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/images/cdt_w_debug_configurations_01.png
+++ b/doc/org.eclipse.cdt.doc.user/images/cdt_w_debug_configurations_01.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/images/cdt_w_debug_configurations_02.png b/doc/org.eclipse.cdt.doc.user/images/cdt_w_debug_configurations_02.png
index 670f168ad35..670f168ad35 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/images/cdt_w_debug_configurations_02.png
+++ b/doc/org.eclipse.cdt.doc.user/images/cdt_w_debug_configurations_02.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/images/command_link.png b/doc/org.eclipse.cdt.doc.user/images/command_link.png
index 28ced874ea8..28ced874ea8 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/images/command_link.png
+++ b/doc/org.eclipse.cdt.doc.user/images/command_link.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/images/editor_general_preferences.png b/doc/org.eclipse.cdt.doc.user/images/editor_general_preferences.png
index 1ebb1bea8b0..1ebb1bea8b0 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/images/editor_general_preferences.png
+++ b/doc/org.eclipse.cdt.doc.user/images/editor_general_preferences.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/images/editor_mark_preferences.png b/doc/org.eclipse.cdt.doc.user/images/editor_mark_preferences.png
index 5ec7a3b77bd..5ec7a3b77bd 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/images/editor_mark_preferences.png
+++ b/doc/org.eclipse.cdt.doc.user/images/editor_mark_preferences.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/images/editor_save_actions_preferences.png b/doc/org.eclipse.cdt.doc.user/images/editor_save_actions_preferences.png
index 90391346f16..90391346f16 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/images/editor_save_actions_preferences.png
+++ b/doc/org.eclipse.cdt.doc.user/images/editor_save_actions_preferences.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/images/hierarchy_co.gif b/doc/org.eclipse.cdt.doc.user/images/hierarchy_co.gif
index 45b6b132268..45b6b132268 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/images/hierarchy_co.gif
+++ b/doc/org.eclipse.cdt.doc.user/images/hierarchy_co.gif
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/images/history_list.gif b/doc/org.eclipse.cdt.doc.user/images/history_list.gif
index 364c0e70b1d..364c0e70b1d 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/images/history_list.gif
+++ b/doc/org.eclipse.cdt.doc.user/images/history_list.gif
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/images/icon_build_make_target.png b/doc/org.eclipse.cdt.doc.user/images/icon_build_make_target.png
index acc6050601d..acc6050601d 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/images/icon_build_make_target.png
+++ b/doc/org.eclipse.cdt.doc.user/images/icon_build_make_target.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/images/icon_clear_console.png b/doc/org.eclipse.cdt.doc.user/images/icon_clear_console.png
index 12fc6d11bae..12fc6d11bae 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/images/icon_clear_console.png
+++ b/doc/org.eclipse.cdt.doc.user/images/icon_clear_console.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/images/icon_edit_make_target.png b/doc/org.eclipse.cdt.doc.user/images/icon_edit_make_target.png
index 6107ff02908..6107ff02908 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/images/icon_edit_make_target.png
+++ b/doc/org.eclipse.cdt.doc.user/images/icon_edit_make_target.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/images/icon_expand_all.png b/doc/org.eclipse.cdt.doc.user/images/icon_expand_all.png
index ce2626a43bd..ce2626a43bd 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/images/icon_expand_all.png
+++ b/doc/org.eclipse.cdt.doc.user/images/icon_expand_all.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/images/icon_hide_inactive_includes.png b/doc/org.eclipse.cdt.doc.user/images/icon_hide_inactive_includes.png
index 8725dfe1ab5..8725dfe1ab5 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/images/icon_hide_inactive_includes.png
+++ b/doc/org.eclipse.cdt.doc.user/images/icon_hide_inactive_includes.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/images/icon_hide_make_targets.png b/doc/org.eclipse.cdt.doc.user/images/icon_hide_make_targets.png
index 41c10268273..41c10268273 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/images/icon_hide_make_targets.png
+++ b/doc/org.eclipse.cdt.doc.user/images/icon_hide_make_targets.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/images/icon_hide_sys_includes.png b/doc/org.eclipse.cdt.doc.user/images/icon_hide_sys_includes.png
index 05902bf3986..05902bf3986 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/images/icon_hide_sys_includes.png
+++ b/doc/org.eclipse.cdt.doc.user/images/icon_hide_sys_includes.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/images/icon_new_make_target.png b/doc/org.eclipse.cdt.doc.user/images/icon_new_make_target.png
index e813698f13a..e813698f13a 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/images/icon_new_make_target.png
+++ b/doc/org.eclipse.cdt.doc.user/images/icon_new_make_target.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/images/icon_next_error.png b/doc/org.eclipse.cdt.doc.user/images/icon_next_error.png
index bc8f3d7273b..bc8f3d7273b 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/images/icon_next_error.png
+++ b/doc/org.eclipse.cdt.doc.user/images/icon_next_error.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/images/icon_open_console.png b/doc/org.eclipse.cdt.doc.user/images/icon_open_console.png
index 5e6881240ef..5e6881240ef 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/images/icon_open_console.png
+++ b/doc/org.eclipse.cdt.doc.user/images/icon_open_console.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/images/icon_pin.png b/doc/org.eclipse.cdt.doc.user/images/icon_pin.png
index 1125cde1181..1125cde1181 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/images/icon_pin.png
+++ b/doc/org.eclipse.cdt.doc.user/images/icon_pin.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/images/icon_prev_error.png b/doc/org.eclipse.cdt.doc.user/images/icon_prev_error.png
index 5008ac79867..5008ac79867 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/images/icon_prev_error.png
+++ b/doc/org.eclipse.cdt.doc.user/images/icon_prev_error.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/images/icon_repeat_search.png b/doc/org.eclipse.cdt.doc.user/images/icon_repeat_search.png
index dde5909d205..dde5909d205 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/images/icon_repeat_search.png
+++ b/doc/org.eclipse.cdt.doc.user/images/icon_repeat_search.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/images/icon_save_output_file.png b/doc/org.eclipse.cdt.doc.user/images/icon_save_output_file.png
index e0142150fc4..e0142150fc4 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/images/icon_save_output_file.png
+++ b/doc/org.eclipse.cdt.doc.user/images/icon_save_output_file.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/images/icon_show_error.png b/doc/org.eclipse.cdt.doc.user/images/icon_show_error.png
index a2e6b313fe0..a2e6b313fe0 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/images/icon_show_error.png
+++ b/doc/org.eclipse.cdt.doc.user/images/icon_show_error.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/images/namespace_declared_obj.png b/doc/org.eclipse.cdt.doc.user/images/namespace_declared_obj.png
index 0dd626ecc25..0dd626ecc25 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/images/namespace_declared_obj.png
+++ b/doc/org.eclipse.cdt.doc.user/images/namespace_declared_obj.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/images/new_proj_convert_candidate.png b/doc/org.eclipse.cdt.doc.user/images/new_proj_convert_candidate.png
index 2b9dd856496..2b9dd856496 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/images/new_proj_convert_candidate.png
+++ b/doc/org.eclipse.cdt.doc.user/images/new_proj_convert_candidate.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/images/pref_panel_build.png b/doc/org.eclipse.cdt.doc.user/images/pref_panel_build.png
index e035b7aca87..e035b7aca87 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/images/pref_panel_build.png
+++ b/doc/org.eclipse.cdt.doc.user/images/pref_panel_build.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/images/pref_panel_code_templates.png b/doc/org.eclipse.cdt.doc.user/images/pref_panel_code_templates.png
index 6715294bc23..6715294bc23 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/images/pref_panel_code_templates.png
+++ b/doc/org.eclipse.cdt.doc.user/images/pref_panel_code_templates.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/images/pref_panel_edit_template_dlg.png b/doc/org.eclipse.cdt.doc.user/images/pref_panel_edit_template_dlg.png
index e04f709e1c4..e04f709e1c4 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/images/pref_panel_edit_template_dlg.png
+++ b/doc/org.eclipse.cdt.doc.user/images/pref_panel_edit_template_dlg.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/images/pref_traditional_memory_prefs.png b/doc/org.eclipse.cdt.doc.user/images/pref_traditional_memory_prefs.png
index 17a1783ab6d..17a1783ab6d 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/images/pref_traditional_memory_prefs.png
+++ b/doc/org.eclipse.cdt.doc.user/images/pref_traditional_memory_prefs.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/images/progress_stop.gif b/doc/org.eclipse.cdt.doc.user/images/progress_stop.gif
index dc47edf0695..dc47edf0695 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/images/progress_stop.gif
+++ b/doc/org.eclipse.cdt.doc.user/images/progress_stop.gif
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/images/refresh_nav.gif b/doc/org.eclipse.cdt.doc.user/images/refresh_nav.gif
index 3ca04d06ff9..3ca04d06ff9 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/images/refresh_nav.gif
+++ b/doc/org.eclipse.cdt.doc.user/images/refresh_nav.gif
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/images/sub_co.gif b/doc/org.eclipse.cdt.doc.user/images/sub_co.gif
index 54871df5aa6..54871df5aa6 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/images/sub_co.gif
+++ b/doc/org.eclipse.cdt.doc.user/images/sub_co.gif
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/images/super_co.gif b/doc/org.eclipse.cdt.doc.user/images/super_co.gif
index 59ac11633f2..59ac11633f2 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/images/super_co.gif
+++ b/doc/org.eclipse.cdt.doc.user/images/super_co.gif
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/images/view_executables.png b/doc/org.eclipse.cdt.doc.user/images/view_executables.png
index ab178e5c633..ab178e5c633 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/images/view_executables.png
+++ b/doc/org.eclipse.cdt.doc.user/images/view_executables.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/images/view_include_browser.png b/doc/org.eclipse.cdt.doc.user/images/view_include_browser.png
index 8c7179e66d7..8c7179e66d7 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/images/view_include_browser.png
+++ b/doc/org.eclipse.cdt.doc.user/images/view_include_browser.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/images/view_table_rendering.png b/doc/org.eclipse.cdt.doc.user/images/view_table_rendering.png
index d085966e167..d085966e167 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/images/view_table_rendering.png
+++ b/doc/org.eclipse.cdt.doc.user/images/view_table_rendering.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/pom.xml b/doc/org.eclipse.cdt.doc.user/pom.xml
index 464d0fa0320..c6b151191bb 100644
--- a/doc/org.eclipse.cdt.doc.user/pom.xml
+++ b/doc/org.eclipse.cdt.doc.user/pom.xml
@@ -1,4 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2011, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
@@ -6,11 +16,11 @@
<parent>
<groupId>org.eclipse.cdt</groupId>
<artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
+ <version>10.7.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
- <version>5.4.300-SNAPSHOT</version>
+ <version>5.4.1200-SNAPSHOT</version>
<artifactId>org.eclipse.cdt.doc.user</artifactId>
<packaging>eclipse-plugin</packaging>
@@ -47,7 +57,7 @@
<plugin>
<groupId>org.eclipse.tycho.extras</groupId>
<artifactId>tycho-eclipserun-plugin</artifactId>
- <version>${tycho-extras-version}</version>
+ <version>${tycho-version}</version>
<configuration>
<appArgLine>-application org.eclipse.ant.core.antRunner -buildfile customBuildCallbacks.xml build.index</appArgLine>
<dependencies>
@@ -88,7 +98,6 @@
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.8</version>
<executions>
<execution>
<phase>compile</phase>
diff --git a/doc/org.eclipse.cdt.doc.user/reference/cdt_o_menu.htm b/doc/org.eclipse.cdt.doc.user/reference/cdt_o_menu.htm
index b8e7abfb193..b8e7abfb193 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/reference/cdt_o_menu.htm
+++ b/doc/org.eclipse.cdt.doc.user/reference/cdt_o_menu.htm
diff --git a/doc/org.eclipse.cdt.doc.user/reference/cdt_o_mproj_pref.htm b/doc/org.eclipse.cdt.doc.user/reference/cdt_o_mproj_pref.htm
index 60eb5fd6a68..60eb5fd6a68 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/reference/cdt_o_mproj_pref.htm
+++ b/doc/org.eclipse.cdt.doc.user/reference/cdt_o_mproj_pref.htm
diff --git a/doc/org.eclipse.cdt.doc.user/reference/cdt_o_mproj_pref_macro.htm b/doc/org.eclipse.cdt.doc.user/reference/cdt_o_mproj_pref_macro.htm
index c5692a16222..c5692a16222 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/reference/cdt_o_mproj_pref_macro.htm
+++ b/doc/org.eclipse.cdt.doc.user/reference/cdt_o_mproj_pref_macro.htm
diff --git a/doc/org.eclipse.cdt.doc.user/reference/cdt_u_c_editor_gen.htm b/doc/org.eclipse.cdt.doc.user/reference/cdt_u_c_editor_gen.htm
index a004422136c..a004422136c 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/reference/cdt_u_c_editor_gen.htm
+++ b/doc/org.eclipse.cdt.doc.user/reference/cdt_u_c_editor_gen.htm
diff --git a/doc/org.eclipse.cdt.doc.user/reference/cdt_u_m_edit.htm b/doc/org.eclipse.cdt.doc.user/reference/cdt_u_m_edit.htm
index 0079dff78e6..0079dff78e6 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/reference/cdt_u_m_edit.htm
+++ b/doc/org.eclipse.cdt.doc.user/reference/cdt_u_m_edit.htm
diff --git a/doc/org.eclipse.cdt.doc.user/reference/cdt_u_m_file.htm b/doc/org.eclipse.cdt.doc.user/reference/cdt_u_m_file.htm
index 1b0e77fbbbe..1b0e77fbbbe 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/reference/cdt_u_m_file.htm
+++ b/doc/org.eclipse.cdt.doc.user/reference/cdt_u_m_file.htm
diff --git a/doc/org.eclipse.cdt.doc.user/reference/cdt_u_m_navigate.htm b/doc/org.eclipse.cdt.doc.user/reference/cdt_u_m_navigate.htm
index e37aa2a4add..e37aa2a4add 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/reference/cdt_u_m_navigate.htm
+++ b/doc/org.eclipse.cdt.doc.user/reference/cdt_u_m_navigate.htm
diff --git a/doc/org.eclipse.cdt.doc.user/reference/cdt_u_m_project.htm b/doc/org.eclipse.cdt.doc.user/reference/cdt_u_m_project.htm
index 7244e8887ff..7244e8887ff 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/reference/cdt_u_m_project.htm
+++ b/doc/org.eclipse.cdt.doc.user/reference/cdt_u_m_project.htm
diff --git a/doc/org.eclipse.cdt.doc.user/reference/cdt_u_m_refactor.htm b/doc/org.eclipse.cdt.doc.user/reference/cdt_u_m_refactor.htm
index 579050591fc..579050591fc 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/reference/cdt_u_m_refactor.htm
+++ b/doc/org.eclipse.cdt.doc.user/reference/cdt_u_m_refactor.htm
diff --git a/doc/org.eclipse.cdt.doc.user/reference/cdt_u_m_run.htm b/doc/org.eclipse.cdt.doc.user/reference/cdt_u_m_run.htm
index c3afbae0b4f..c3afbae0b4f 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/reference/cdt_u_m_run.htm
+++ b/doc/org.eclipse.cdt.doc.user/reference/cdt_u_m_run.htm
diff --git a/doc/org.eclipse.cdt.doc.user/reference/cdt_u_m_search.htm b/doc/org.eclipse.cdt.doc.user/reference/cdt_u_m_search.htm
index 157b583080c..157b583080c 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/reference/cdt_u_m_search.htm
+++ b/doc/org.eclipse.cdt.doc.user/reference/cdt_u_m_search.htm
diff --git a/doc/org.eclipse.cdt.doc.user/reference/cdt_u_m_source.htm b/doc/org.eclipse.cdt.doc.user/reference/cdt_u_m_source.htm
index b147821ee14..b147821ee14 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/reference/cdt_u_m_source.htm
+++ b/doc/org.eclipse.cdt.doc.user/reference/cdt_u_m_source.htm
diff --git a/doc/org.eclipse.cdt.doc.user/reference/cdt_u_m_window.htm b/doc/org.eclipse.cdt.doc.user/reference/cdt_u_m_window.htm
index b9d05507502..b9d05507502 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/reference/cdt_u_m_window.htm
+++ b/doc/org.eclipse.cdt.doc.user/reference/cdt_u_m_window.htm
diff --git a/doc/org.eclipse.cdt.doc.user/reference/cdt_u_mfile_build.htm b/doc/org.eclipse.cdt.doc.user/reference/cdt_u_mfile_build.htm
index 39d28a3c246..39d28a3c246 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/reference/cdt_u_mfile_build.htm
+++ b/doc/org.eclipse.cdt.doc.user/reference/cdt_u_mfile_build.htm
diff --git a/doc/org.eclipse.cdt.doc.user/reference/cdt_u_mfile_info.htm b/doc/org.eclipse.cdt.doc.user/reference/cdt_u_mfile_info.htm
index 59b3e11ec3a..59b3e11ec3a 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/reference/cdt_u_mfile_info.htm
+++ b/doc/org.eclipse.cdt.doc.user/reference/cdt_u_mfile_info.htm
diff --git a/doc/org.eclipse.cdt.doc.user/reference/cdt_u_mfile_rcbs.htm b/doc/org.eclipse.cdt.doc.user/reference/cdt_u_mfile_rcbs.htm
index ab7b21c3c7f..ab7b21c3c7f 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/reference/cdt_u_mfile_rcbs.htm
+++ b/doc/org.eclipse.cdt.doc.user/reference/cdt_u_mfile_rcbs.htm
diff --git a/doc/org.eclipse.cdt.doc.user/reference/cdt_u_mfile_tool_settings.htm b/doc/org.eclipse.cdt.doc.user/reference/cdt_u_mfile_tool_settings.htm
index 0fde36fd589..0fde36fd589 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/reference/cdt_u_mfile_tool_settings.htm
+++ b/doc/org.eclipse.cdt.doc.user/reference/cdt_u_mfile_tool_settings.htm
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/README b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/README
new file mode 100644
index 00000000000..aa130093de8
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/README
@@ -0,0 +1 @@
+The contents of this folder originated in the book "Setting up Eclipse CDT" by Max Berger that was graciously donated to the Eclipse CDT project in January 2020. Please see Bug 559272. \ No newline at end of file
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/Mingw5_1.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/Mingw5_1.png
new file mode 100644
index 00000000000..f40874f9ff6
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/Mingw5_1.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/Mingw5_2.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/Mingw5_2.png
new file mode 100644
index 00000000000..5c003919b7b
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/Mingw5_2.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/Mingw5_3.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/Mingw5_3.png
new file mode 100644
index 00000000000..34a82db75f4
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/Mingw5_3.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/autobuild.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/autobuild.png
new file mode 100644
index 00000000000..11e6b048439
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/autobuild.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/build.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/build.png
new file mode 100644
index 00000000000..b4efffe5a39
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/build.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/compiler.xml b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/compiler.xml
new file mode 100644
index 00000000000..abb34608ee4
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/compiler.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<section xmlns="http://docbook.org/ns/docbook" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:ns5="http://www.w3.org/1998/Math/MathML" xmlns:ns4="http://www.w3.org/1999/xhtml" xmlns:ns3="http://www.w3.org/2000/svg" xmlns:ns="http://docbook.org/ns/docbook" version="5.0" xsi:schemaLocation="http://docbook.org/ns/docbook http://www.docbook.org/xml/5.0/xsd/docbook.xsd" xml:lang="en-US" xml:id="compiler">
+ <title>Setting up a compiler</title>
+ <para>Unfortunately Eclipse only provides the Integrated Development
+ Environment (IDE) but it is missing the actual compiler. To install a
+ compiler, please follow the instructions for your operating system.</para>
+ <section xml:id="wincompiler">
+ <title>Windows compiler</title>
+ <para>Windows doesn't come with a build-in compiler. You could try to
+ install Visual Studio, but it is tricky to get that working with
+ Eclipse. Therefore we will install <link xlink:href="http://www.mingw.org/wiki/msys">MSYS</link>. MSYS is part of
+ the <link xlink:href="http://www.mingw.org/">MinGW</link> suite, which
+ provides free development tools for Windows.</para>
+ <para>You will have to follow these 4 steps:</para>
+ <itemizedlist>
+ <listitem>
+ <para>Download and install MinGW</para>
+ </listitem>
+ <listitem>
+ <para>Download and install MSYS</para>
+ </listitem>
+ <listitem>
+ <para>Set your path environment variable</para>
+ </listitem>
+ <listitem>
+ <para>Restart Eclipse if it was started.</para>
+ </listitem>
+ </itemizedlist>
+ <xi:include href="mingwgetinst.xml"/>
+ <xi:include href="envwin.xml"/>
+ </section>
+ <section xml:id="linux">
+ <title>Linux / Unix Compiler</title>
+ <para>In most Linux and Unix distributions the compiler is already
+ installed. Check if you can run</para>
+ <programlisting>g++ --version</programlisting>
+ <para>and either</para>
+ <programlisting>make --version</programlisting>
+ <para>or</para>
+ <programlisting>gmake --version</programlisting>
+ <para>If both of them (<command>g++</command> and either
+ <command>make</command> or <command>gmake</command>) work then you are
+ already done. If not, please install those. This may be very different
+ depending on which Linux or Unix distribution you have. Install the
+ tools and continue with <xref linkend="eclipse"/>.</para>
+ </section>
+ <xi:include href="macosx.xml"/>
+</section>
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/eclipse.xml b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/eclipse.xml
new file mode 100644
index 00000000000..281d7bf6a56
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/eclipse.xml
@@ -0,0 +1,361 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<section xmlns="http://docbook.org/ns/docbook" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:ns5="http://www.w3.org/1998/Math/MathML" xmlns:ns4="http://www.w3.org/1999/xhtml" xmlns:ns3="http://www.w3.org/2000/svg" xmlns:ns="http://docbook.org/ns/docbook" version="5.0" xsi:schemaLocation="http://docbook.org/ns/docbook http://www.docbook.org/xml/5.0/xsd/docbook.xsd" xml:id="eclipse" xml:lang="en-US">
+ <title>Setting up Eclipse</title>
+ <para>On Windows XP and later, this may be a good point in time to create a
+ system restore point. This may safe you trouble in the long run if the
+ installation fails.</para>
+ <section xml:id="java">
+ <title>Java</title>
+ <para>Eclipse was originally written for the Java platform. It still
+ requires a Java Runtime Environment (JRE) or a Java Development Kit (JDK),
+ version 1.5 or greater. You will most probably already have Java installed
+ (it comes included in Mac OS X until 10.6 and will be auto-installed in
+ Mac OS X 10.7 / Lion). However, if you don't have Java installed, and you
+ are on Windows or Linux, you can download a JRE from <link xlink:href="http://java.sun.com/javase/">Sun's Java website</link> or from
+ <link xlink:href="http://www.java.com">java.com</link>. At the time of
+ this writing the latest version was <link xlink:href="http://java.sun.com/javase/downloads/index.jsp">Java Runtime
+ Environment (JRE) 7</link>. Look for the section called "Java SE Runtime
+ Environment (JRE)" and select "JRE 7" (or similar). You will not need
+ NetBeans, JDK, or EE, they are just larger downloads with more programs.
+ You may need the JDK if you want to do Java development.</para>
+ <para>Note: There may be an <link xlink:href="http://blog.max.berger.name/2010/07/eclipse-helios-and-java-16u21-deadlocks.html">incompatibility
+ between Eclipse Helios and Java 1.6 update 21</link>.</para>
+ <para>To find out if you have Java installed, and which version it is, you
+ can open a command prompt / shell and type in:</para>
+ <programlisting>java -version</programlisting>
+ </section>
+ <section xml:id="download_eclipse">
+ <title>Downloading Eclipse</title>
+ <para>Eclipse is a modular software, but ever summer there are bundled
+ released. The link is:</para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <link xlink:href="http://www.eclipse.org/downloads/"/>
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>I recommend the complete "Eclipse IDE for C/C++ Developers" bundle,
+ which already contains the CDT. If you download a different bundle, you
+ will probably have to install the CDT manually, as described in <xref linkend="installingcdt"/>.</para>
+ <para>The file is about 86 MB in size, so it will take a while to
+ download. You will end up with a .ZIP file. Use either <link xlink:href="http://www.filzip.com/">FilZip</link> or your favorite ZIP
+ Program (Windows XP/Vista/7 and Mac OS X have .ZIP support build in) to
+ unpack the file. Move the unpacked folder to any location, for example
+ <filename>C:\Program Files\eclipse</filename>. You can now start Eclipse
+ by double-clicking it.</para>
+ <figure xml:id="eclipsedir">
+ <title>Eclipse installed into C:\Program Files\eclipse</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="eclipseDir.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ </section>
+ <section xml:id="first_run_eclipse">
+ <title>First Run of Eclipse</title>
+ <para>However you installed eclipse, you should now be able to run it.
+ Double-click the icon or start the appropriate script in UNIX and
+ Eclipse's splash-screen will appear:</para>
+ <figure xml:id="splash">
+ <title>Eclipse splash screen</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="splash37.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>Immediately after that Eclipse will ask you for your workspace
+ location. It defaults to a place within your personal settings. It is a
+ good idea to use the default workspace, you may want to note where it is
+ located.</para>
+ <figure xml:id="workspace">
+ <title>Eclipse asking for workspace</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="workspace.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>If you always want to use the same workspace, you may select the
+ <computeroutput>Use this as the default...</computeroutput> and you'll
+ never have to worry about workspaces again. This is usually a good idea
+ once you've used Eclipse for a while. Finally Eclipse starts up with the
+ welcome screen:</para>
+ <figure xml:id="welcome.png">
+ <title>Eclipse welcome screen</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="welcome.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>And if you select the "Go to the workbench" (the backward arrow) on
+ the right, then you are inside Eclipse.</para>
+ <para>If you downloaded the "Eclipse IDE for C/C++ Developers" you can
+ skip the next section and go straight to <xref linkend="configuring"/>.</para>
+ <para>If you have downloaded a different package, there are additional
+ tools needed to start programming. We want to develop in C++, so we will
+ continue with the next section.</para>
+ </section>
+ <section xml:id="installingcdt">
+ <title>Installing the CDT</title>
+ <note>
+ <para>This is only required if you did not download the CDT version as
+ described above. Please check if you are able to create a new C++
+ project (as described in <xref linkend="helloworld"/>) before going
+ through this section!</para>
+ </note>
+ <note>
+ <para>This section described the current (3.5, 3.6, and 3.7) version of
+ Eclipse. For the previous version (3.4) Please see <xref linkend="installingcdt"/>).</para>
+ </note>
+ <para>In the "Help" menu select "Install New Software..."</para>
+ <figure xml:id="softwareupdatemenu35">
+ <title>Select Install New Software... from the help menu</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="softwareupdatemenu35.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>This will show you the list of available software update sites. CDT
+ is part of the standard release, so you can select an update site matching
+ your eclipse version.</para>
+ <para>Please note: It is important to install the right Version of CDT for
+ your version of eclipse:</para>
+ <itemizedlist>
+ <listitem>
+ <para>For Eclipse 3.7 (Indigo): Use
+ <computeroutput>http://download.eclipse.org/tools/cdt/releases/indigo</computeroutput></para>
+ </listitem>
+ <listitem>
+ <para>For Eclipse 3.6 (Helios): Use
+ <computeroutput>http://download.eclipse.org/tools/cdt/releases/helios</computeroutput></para>
+ </listitem>
+ <listitem>
+ <para>For Eclipse 3.5 (Galileo): Use
+ <computeroutput>http://download.eclipse.org/tools/cdt/releases/galileo</computeroutput></para>
+ </listitem>
+ </itemizedlist>
+ <figure xml:id="softwareupdateadd35">
+ <title>Available Software Update page with Add... opened</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="softwareupdateadd35.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>When you have found the CDT site, it will give you two entries: CDT
+ Main Features and CDT Optional Features. Expand both, and find the latest
+ version of the CDT. Make sure you select at least the following:</para>
+ <itemizedlist>
+ <listitem>
+ <para>C/C++ Development Tools</para>
+ </listitem>
+ <listitem>
+ <para>C/C++ GNU Toolchain Build Support</para>
+ </listitem>
+ <listitem>
+ <para>C/C++ GNU Toolchain Debug Support</para>
+ </listitem>
+ <listitem>
+ <para>C/C++ Development Platform</para>
+ </listitem>
+ </itemizedlist>
+ <para>Do not select all items! Some of these require dependencies from
+ other projects, which may not be installed and thus fail to install.
+ Select only the features you need!</para>
+ <figure xml:id="softwareupdatecdt35">
+ <title>Select CDT from the Update Site</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="softwareupdatecdt35.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>The select "Next..."</para>
+ <para>You will have to confirm the selection with "Next".</para>
+ <para>And accept the license agreement with "Finish".</para>
+ <para>Downloading and installing will take a while. Once its done it will
+ ask you to restart Eclipse. This is a good idea, so select "Yes".</para>
+ <figure xml:id="restartingworkbench">
+ <title>Restarting the workbench</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="eclipsesu6.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>Once Eclipse has restarted you may need to configure it for your
+ computer.</para>
+ </section>
+ <section xml:id="configuring">
+ <title>Configuring the CDT</title>
+ <para>Fortunately, this is very easy. If your path is set correctly, there
+ should be absolutely nothing you need to configure. This is true if you
+ followed these instructions for Windows or Mac OS X.</para>
+ <para>On some Unix systems you might have to change your "make" program to
+ "gmake". You will find the setting in Window / Preferences (Eclipse /
+ Preferences on Mac OS X). Then expand "C / C++", then "New CDT Project
+ Wizard", "Makefile Project" and select "Builder Settings". In the section
+ "builder", de-select "use default build command" and for "Build command"
+ enter "gmake".</para>
+ </section>
+ <section xml:id="helloworld">
+ <title>Hello, World!</title>
+ <para>Once you are in Eclipse, you are given an empty workspace. You now
+ have to start a new project. To do so, select "File" / "New" /
+ "Project...". Expand the section "C++" and select "C++ Project", then
+ click "Next &gt;".</para>
+ <figure xml:id="newcppproject">
+ <title>New Project screen</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="newcppproject.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>On the next screen, you have to give your project a name. In this
+ case, it will be "HelloWorld", however, you may use any name you like.
+ Also, you have to select a toolchain.</para>
+ <itemizedlist>
+ <listitem>
+ <para>For Windows, select "MinGW GCC"</para>
+ </listitem>
+ <listitem>
+ <para>For Linux, select "Linux GCC"</para>
+ </listitem>
+ <listitem>
+ <para>For Mac OS X, select "MacOSX GCC"</para>
+ </listitem>
+ <listitem>
+ <para>Do not use "Cross GCC"! Unfortunately this option may be
+ selected by default if you create an empty project!</para>
+ </listitem>
+ </itemizedlist>
+ <para>Click "Next".</para>
+ <figure xml:id="newprojectname">
+ <title>New Project Name</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="newcppproject2.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>The next screen contains some Basic settings. Fill in what you
+ like:</para>
+ <figure xml:id="newprojectsettings">
+ <title>Basic Settings</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="newcppproject3.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>In the last setting you can chose output formats, it is always good
+ to have a release and a debug configuration. Click "Finish".</para>
+ <figure xml:id="newprojectplatforms">
+ <title>New Project Platforms</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="newcppproject4.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>Eclipse will now generate a few things, and then ask you if you want
+ to switch to the C/C++ Perspective. This is a good idea, so say
+ yes.</para>
+ <figure xml:id="perspective">
+ <title>Perspective Switch</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="perspective.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>Great. You have a project now, and it does contain some sample code!
+ You will immediately get an editor window for your project. Eclipse will
+ also auto-build your project every time you save.</para>
+ <para>If eclipse does not auto-build, you have to turn on "build
+ automatically" in the Project Menu, or click the "Build All" button after
+ every change.</para>
+ <figure xml:id="buildauto">
+ <title>Make sure "Build Automatically" is enabled</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="autobuild.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <figure xml:id="buildintoolbar">
+ <title>If you turn off autobuild, you have to click the "build" button
+ on the toolbar</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="build.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <figure xml:id="helloworldapp">
+ <title>Example Hello World application</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="helloworld.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>Now here comes the tricky part: On the left pane, select "C/C++
+ Projects", expand "Binaries" and you should see and executable
+ (HelloWorld.exe on Windows). Now right-click that executable, and select
+ "Run" / "Run Local C/C++ Application". If everything goes well your output
+ will be in the bottom right window in the "Console" tab and it should say
+ "Hello, World".</para>
+ <figure xml:id="helloout">
+ <title>Running the example Hello World application</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="helloout.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>Congratulations! You have successfully installed a compiler, a build
+ system and an IDE. You have successfully created, edited, compiled and run
+ a project. You should now be able to start your own projects!</para>
+ </section>
+</section>
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/eclipseDir.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/eclipseDir.png
new file mode 100644
index 00000000000..2ad68244634
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/eclipseDir.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/eclipsesu1.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/eclipsesu1.png
new file mode 100644
index 00000000000..440fcde04e5
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/eclipsesu1.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/eclipsesu2.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/eclipsesu2.png
new file mode 100644
index 00000000000..d0ddd71a5ee
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/eclipsesu2.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/eclipsesu3.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/eclipsesu3.png
new file mode 100644
index 00000000000..c3b6113b118
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/eclipsesu3.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/eclipsesu4.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/eclipsesu4.png
new file mode 100644
index 00000000000..a0ce245f2e4
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/eclipsesu4.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/eclipsesu5.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/eclipsesu5.png
new file mode 100644
index 00000000000..e7ac8d46c72
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/eclipsesu5.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/eclipsesu6.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/eclipsesu6.png
new file mode 100644
index 00000000000..e728cdd65bc
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/eclipsesu6.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/envwin.xml b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/envwin.xml
new file mode 100644
index 00000000000..bf427ec265d
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/envwin.xml
@@ -0,0 +1,114 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<section xmlns="http://docbook.org/ns/docbook" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:ns5="http://www.w3.org/1998/Math/MathML" xmlns:ns4="http://www.w3.org/1999/xhtml" xmlns:ns3="http://www.w3.org/2000/svg" xmlns:ns="http://docbook.org/ns/docbook" version="5.0" xsi:schemaLocation="http://docbook.org/ns/docbook http://www.docbook.org/xml/5.0/xsd/docbook.xsd" xml:id="envwin" xml:lang="en-US">
+ <title>Environment Variables</title>
+ <para>The next thing you need to do is set up your Path environment
+ variable. </para>
+ <para>On Windows 2000/XP, right-click on <computeroutput>My
+ Computer</computeroutput> and select
+ <computeroutput>Properties</computeroutput>. Then, select the
+ <computeroutput>Advanced</computeroutput> tab. There should be a button
+ called <computeroutput>Environment Variables</computeroutput>.</para>
+ <figure xml:id="systemproperties2k">
+ <title>Finding Environment Variables (Windows 2000)</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="systemproperties.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <figure xml:id="systempropertiesxp">
+ <title>Finding Environment Variables (Windows XP)</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="systempropertiesxp.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>In Windows Vista / Windows 7, Click on the Windows Logo, right click
+ on Computer, select Properties</para>
+ <figure xml:id="systempropertiesw7">
+ <title>Computer properties in Windows Vista / Windows 7</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="systempropertiesw71.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ <para>In the control panel, select "Advances system settings"</para>
+ </figure>
+ <figure xml:id="systempropertiesw7_2">
+ <title>Finding the System Properties in Winows Vista / Winows 7</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="systempropertiesw72.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>Finally, click on "Environment Variables"</para>
+ <figure xml:id="environmentw7">
+ <title>Environment Variables in Windows Vista / Windows 7</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="systempropertiesw73.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>In the environment variables, there are two sections, one for the
+ local user (you) and one for the system. Depending on whether you want the
+ paths to be set for everyone, or for you, do one of the following:</para>
+ <para>
+ <emphasis>Warning: I had reports of people deleting their existing
+ Path environment variable! Please be very careful when editing an existing
+ value! By default, Windows has the whole line selected, resulting in
+ overwriting what was in there!</emphasis>
+ </para>
+ <para>If you want to set it for everyone, look for the variable
+ <computeroutput>Path</computeroutput> in the section <computeroutput>System
+ variables</computeroutput>. Click <computeroutput>Edit</computeroutput>.
+ There should already be some text in there, append
+ <command>;C:\MinGW\bin;C:\MinGW\msys\1.0\bin;</command> (or your appropriate
+ paths, e.g. <command>;C:\msys\1.0\bin;C:\mingw\bin</command> if you
+ installed MinGW 5 / MSys 1.0.11) to it, and select
+ <computeroutput>OK</computeroutput> multiple times. Please make sure that
+ you do not overwrite what was in there!</para>
+ <para>If you just want to set it for you, look for
+ <computeroutput>Path</computeroutput> in the upper section. It is very
+ likely not there yet. So select <computeroutput>New...</computeroutput> and
+ enter <command>C:\MinGW\bin;C:\MinGW\msys\1.0\bin</command> (or your
+ appropriate paths, see paragraph above). Then select
+ <computeroutput>OK</computeroutput> multiple times. Again, if there was a
+ setting before, do not delete it, but rather append your path!</para>
+ <figure xml:id="settingenvironment">
+ <title>Setting the Environment variables</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="systempropertiesw74.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>There seems to be a problem with a very long PATH environment variable
+ on some systems. According to reports, Eclipse will fail to compile and
+ build, where as compiling and building from a command window may work fine.
+ In this case, try to prepend the path to MinGW and MSYS rather than
+ appending it.</para>
+ <para>Congratulations. Now you have a complier and make set up on your
+ computer. Continue with <xref linkend="eclipse"/>.</para>
+ <para>Checkpoint: Open up a command terminal (cmd) and type:</para>
+ <programlisting>make --version
+g++ --version
+gcc --version</programlisting>
+ <para>Each one of these should work now. If not, you have either not
+ installed MSYS correctly or not set your path environment variable. Also,
+ try logging out and back in.</para>
+</section>
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/feedback.xml b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/feedback.xml
new file mode 100644
index 00000000000..efb0f55855d
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/feedback.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<section xmlns="http://docbook.org/ns/docbook" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:ns5="http://www.w3.org/1998/Math/MathML" xmlns:ns4="http://www.w3.org/1999/xhtml" xmlns:ns3="http://www.w3.org/2000/svg" xmlns:ns="http://docbook.org/ns/docbook" version="5.0" xsi:schemaLocation="http://docbook.org/ns/docbook http://www.docbook.org/xml/5.0/xsd/docbook.xsd" xml:lang="en-US" xml:id="feedback">
+ <title>Feedback</title>
+ <para>Do you have any comments how this document could be improved? Email
+ the author. I'll be happy to make any changes that make the setup of the
+ Eclipse CDT easier, or include information that is missing in this
+ paper.</para>
+</section>
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/gdb.xml b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/gdb.xml
new file mode 100644
index 00000000000..b1a29ae0ba7
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/gdb.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<section xmlns="http://docbook.org/ns/docbook" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:ns5="http://www.w3.org/1998/Math/MathML" xmlns:ns4="http://www.w3.org/1999/xhtml" xmlns:ns3="http://www.w3.org/2000/svg" xmlns:ns="http://docbook.org/ns/docbook" version="5.0" xsi:schemaLocation="http://docbook.org/ns/docbook http://www.docbook.org/xml/5.0/xsd/docbook.xsd" xml:lang="en-US" xml:id="gdb">
+ <title>GDB (optional!)</title>
+ <para>This section is completely optional. You may skip it and go
+ directly to <xref linkend="msys"/>.</para>
+ <para>If you want to use the debugger, you may have to install it
+ separately. This is the case with MinGW 5.0.2, it may be different in
+ other versions. Download it from the same page, look for a package
+ starting with gdb and ending with .exe. At the time of this writing
+ (Apr 29) the current version was "gdb-5.2.1-1.exe". Install
+ (double-click) that .exe, select all the default options (make sure
+ you select the same MinGW directory as you did during the MinGW
+ install).</para>
+ <para>I have received a report that gdb-6.3-2 does not work. So I
+ would advise using the older version or waiting for a newer
+ one.</para>
+ <para>Checkpoint:</para>
+ <programlisting>gdb --version</programlisting>
+ <para>should print the gdb version. This is optional.</para>
+</section>
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/helloout.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/helloout.png
new file mode 100644
index 00000000000..a3746c7b275
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/helloout.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/helloworld.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/helloworld.png
new file mode 100644
index 00000000000..6b68a97b011
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/helloworld.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/index.dbk.xml b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/index.dbk.xml
new file mode 100644
index 00000000000..2b19a5edae3
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/index.dbk.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<article xmlns="http://docbook.org/ns/docbook" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:ns5="http://www.w3.org/1998/Math/MathML" xmlns:ns4="http://www.w3.org/1999/xhtml" xmlns:ns3="http://www.w3.org/2000/svg" xmlns:ns="http://docbook.org/ns/docbook" version="5.0" xsi:schemaLocation="http://docbook.org/ns/docbook http://www.docbook.org/xml/5.0/xsd/docbook.xsd" xml:lang="en-US" xml:id="cdt">
+ <xi:include href="info.xml"/>
+ <xi:include href="introduction.xml"/>
+ <xi:include href="other.xml"/>
+ <xi:include href="compiler.xml"/>
+ <xi:include href="eclipse.xml"/>
+ <xi:include href="problems.xml"/>
+ <xi:include href="older.xml"/>
+ <xi:include href="feedback.xml"/>
+</article>
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/info.xml b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/info.xml
new file mode 100644
index 00000000000..16538b3619c
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/info.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<info xmlns="http://docbook.org/ns/docbook" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:ns5="http://www.w3.org/1998/Math/MathML" xmlns:ns4="http://www.w3.org/1999/xhtml" xmlns:ns3="http://www.w3.org/2000/svg" xmlns:ns="http://docbook.org/ns/docbook" version="5.0" xsi:schemaLocation="http://docbook.org/ns/docbook http://www.docbook.org/xml/5.0/xsd/docbook.xsd" xml:lang="en-US">
+ <title>Setting up Eclipse CDT</title>
+ <subtitle>On Windows, Linux/Unix, OS X</subtitle>
+ <author>
+ <personname>
+ <firstname>Max</firstname>
+ <surname>Berger</surname>
+ </personname>
+ <email>max@berger.name</email>
+ </author>
+ <copyright>
+ <year>2005</year>
+ <year>2006</year>
+ <year>2007</year>
+ <year>2008</year>
+ <year>2009</year>
+ <year>2010</year>
+ <year>2011</year>
+ <year>2012</year>
+ <year>2013</year>
+ <year>2014</year>
+ <holder>Max Berger</holder>
+ </copyright>
+ <legalnotice xml:id="legalnotice">
+ <para>This howto has been avaiable under different versions at different times.</para>
+ <para>This document is licensed under the Eclipse Public License - v2.0 (EPL v2.0), or any later version.
+ Please see https://www.eclipse.org/legal/epl-2.0/ for details.
+ </para>
+ <para>Versions between August 2011 and December 2019 where proprietary. They are not be copied, distributed, published, or larger
+ parts being cited without the consent of the author. Small excerpts may be cited if proper attribution including a link to the authors website is given. All rights
+ reserved.</para>
+ <para>Previous versions of this document (prior to August 2011) where
+ published under the GNU Free Documentation License (GFDL), Version 1.2.
+ Please refer to the appropriate document version should you want to chose
+ that license. Please note that the GFDL does not apply to newer versions,
+ e.g. this version of the document!</para>
+ </legalnotice>
+</info>
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/introduction.xml b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/introduction.xml
new file mode 100644
index 00000000000..cf709b729ea
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/introduction.xml
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<section xmlns="http://docbook.org/ns/docbook" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:ns5="http://www.w3.org/1998/Math/MathML" xmlns:ns4="http://www.w3.org/1999/xhtml" xmlns:ns3="http://www.w3.org/2000/svg" xmlns:ns="http://docbook.org/ns/docbook" version="5.0" xsi:schemaLocation="http://docbook.org/ns/docbook http://www.docbook.org/xml/5.0/xsd/docbook.xsd" xml:id="introduction" xml:lang="en-US">
+ <title>Introduction</title>
+ <para>There are several freely available C and C++ development environments.
+ Most of them have the disadvantage that they require one particular
+ operating system. The Eclipse IDE was written as a cross-platform
+ development environment. Initially just written for Java, it also has a very
+ good C/C++ development mode.</para>
+ <para>If you have already tried (and I assume failed, otherwise you wouldn't
+ be reading this document) to install Eclipse CDT, you may want to go
+ directly to <xref linkend="problems"/>.</para>
+ <para>This document describes how to install everything necessary to develop
+ with C or C++ using only free tools on the three major operating systems
+ Windows, Linux, and Mac OS X. It uses the Eclipse IDE, which is the same on
+ all operating systems, thus providing a consistent user experience once
+ installed.</para>
+ <para>There are two versions of this document:</para>
+ <variablelist>
+ <varlistentry>
+ <term>The free online version</term>
+ <listitem>
+ <para>The <link xlink:href="http://max.berger.name/howto/cdt">free
+ version of Setting up Eclipse CDT on Windows, Linux/Unix, Mac OS
+ X</link> can be found on <link xlink:href="http://max.berger.name/">Max Bergers website</link>. It
+ will always be the previous major revision of the document.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>A paid eBook version</term>
+ <listitem>
+ <para>The eBook version of Setting up Eclipse CDT on Windows,
+ Linux/Unix, Mac OS X is distributed through Amazon.com, Amazon.co.uk,
+ and Amazon.de. It will always be the current major revision of the
+ document.</para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <link xlink:href="http://www.amazon.com/gp/product/B005NWQCJS/ref=as_li_ss_tl?ie=UTF8&amp;tag=maxbergername-20">Setting
+ up Eclipse CDT on Window, Linux/Unix, Mac OS X on
+ Amazon.com</link>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <link xlink:href="http://www.amazon.co.uk/gp/product/B005NWQCJS/ref=as_li_ss_tl?ie=UTF8&amp;tag=httpmaxberg02-21">Setting
+ up Eclipse CDT on Window, Linux/Unix, Mac OS X on
+ Amazon.co.uk</link>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <link xlink:href="http://www.amazon.de/gp/product/B005NWQCJS/ref=as_li_ss_tl?ie=UTF8&amp;tag=httpmaxberger-21">Setting
+ up Eclipse CDT on Window, Linux/Unix, Mac OS X on
+ Amazon.de</link>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <link xlink:href="http://www.amazon.fr/gp/product/B005NWQCJS/ref=as_li_ss_tl?ie=UTF8&amp;tag=httpmaxberg06-21">Setting
+ up Eclipse CDT on Window, Linux/Unix, Mac OS X on
+ Amazon.fr</link>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <link xlink:href="http://www.amazon.it/gp/product/B005NWQCJS/ref=as_li_ss_tl?ie=UTF8&amp;tag=httpmaxberg08-21">Setting
+ up Eclipse CDT on Window, Linux/Unix, Mac OS X on
+ Amazon.it</link>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <link xlink:href="http://www.amazon.es/gp/product/B005NWQCJS/ref=as_li_ss_tl?ie=UTF8&amp;tag=maxbergername-21">Setting
+ up Eclipse CDT on Window, Linux/Unix, Mac OS X on
+ Amazon.es</link>
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <para>At this time, the eBook version contains updates for the following
+ items which are not yet in the free version:</para>
+ <itemizedlist>
+ <listitem>
+ <para>There are no updates in the ebook version at this time.</para>
+ </listitem>
+ </itemizedlist>
+ <para>Screenshots may still reflect older versions of the used software,
+ they are only updated if there is a significant change.</para>
+</section>
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/macosx.xml b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/macosx.xml
new file mode 100644
index 00000000000..113776fc937
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/macosx.xml
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<section xmlns="http://docbook.org/ns/docbook" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:ns5="http://www.w3.org/1998/Math/MathML" xmlns:ns4="http://www.w3.org/1999/xhtml" xmlns:ns3="http://www.w3.org/2000/svg" xmlns:ns="http://docbook.org/ns/docbook" version="5.0" xsi:schemaLocation="http://docbook.org/ns/docbook http://www.docbook.org/xml/5.0/xsd/docbook.xsd" xml:id="macosx" xml:lang="en-US">
+ <title>Mac OS X Compiler</title>
+ <para>On Mac OS X you can also try the commands explained in <xref linkend="linux"/> to check if you have the necessary tools installed. If
+ not, you will need to install the developer tools</para>
+ <section xml:id="up_to_snow_leopard">
+ <title>Mac OS X up to Snow Leopard (10.6)</title>
+ <para>The developer tools are either on one of your Mac OS X CDs that came
+ with your computer, or you can download them at: <link xlink:href="https://developer.apple.com/">Apple's developer
+ connection</link>.</para>
+ </section>
+ <section xml:id="lion_and_newer">
+ <title>Mac OS X Lion (10.7) and Newer</title>
+ <para>To get the compiler, you have to install developer tools (Xcode)
+ from the App Store. After downloading, you have to run the installer to
+ actually install the developer tools.</para>
+ <note>
+ <para>If you have upgraded to Lion from an older version of OS X, you
+ have to redo both of these steps (download + install). Upgrading to Lion
+ breaks your existing developer tools. Again: You have to do this after
+ an upgrade to Lion, even if you have previously installed the developer
+ tools!</para>
+ </note>
+ <figure xml:id="xcodeappstore">
+ <title>Find XCode in App Store</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="xcode1.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>After you've downloaded developer tools (Xcode), you have to go to
+ your Applications folder and run the installer.</para>
+ <figure xml:id="runxcode">
+ <title>Run the Xcode installer from Applications</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="xcode2.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>During the install, you may encounter the following error
+ messages:</para>
+ <variablelist>
+ <varlistentry>
+ <term>In order to continue installation, please close the following
+ application: iTunes</term>
+ <listitem>
+ <para>You may need to do two things:</para>
+ <orderedlist>
+ <listitem>
+ <para>Close iTunes, see if that helped.</para>
+ </listitem>
+ <listitem>
+ <para>In a Terminal window, type: <command>killall
+ iTunesHelper</command></para>
+ </listitem>
+ </orderedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>No matching processes belonging to you were found</term>
+ <listitem>
+ <para>This can happen if your Unix username contains a space. The
+ workaround is to create an admin user to be used during the
+ installation.</para>
+ <orderedlist>
+ <listitem>
+ <para>Open system preferences, go to "Users and groups"</para>
+ </listitem>
+ <listitem>
+ <para>Unlock the user preferences, type in you password</para>
+ </listitem>
+ <listitem>
+ <para>Click on "+" to create a new user</para>
+ <itemizedlist>
+ <listitem>
+ <para>For "New account" select "Administrator"</para>
+ </listitem>
+ <listitem>
+ <para>For fullname and account name enter something in all
+ lower cases without spaces, e.g. "admin".</para>
+ </listitem>
+ <listitem>
+ <para>In der Dropdownmenu for "new account" change
+ "Standard" to "Administrator".</para>
+ </listitem>
+ <listitem>
+ <para>Log out, and log back in as your new admin
+ user.</para>
+ </listitem>
+ <listitem>
+ <para>Try installing again.</para>
+ </listitem>
+ <listitem>
+ <para>Log out, log back in as your normal user</para>
+ </listitem>
+ <listitem>
+ <para>Delete the admin user (System preferences, Users and
+ Groups, unlock, select the admin user, click on "-")</para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </orderedlist>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <para>After Xcode has finished installing, you can open up a terminal
+ (Applications / Utilities / Terminal) and check if g++, gcc and make are
+ working:</para>
+ <programlisting>gcc --version
+g++ --version
+make --version</programlisting>
+ </section>
+</section>
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingw1.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingw1.png
new file mode 100644
index 00000000000..391f25413a5
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingw1.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingw41_1.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingw41_1.png
new file mode 100644
index 00000000000..bb9f5520bbc
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingw41_1.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingw41_1_1.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingw41_1_1.png
new file mode 100644
index 00000000000..85e28d8c0ce
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingw41_1_1.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingw41_1_2.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingw41_1_2.png
new file mode 100644
index 00000000000..a27afdcd682
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingw41_1_2.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingw41_2.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingw41_2.png
new file mode 100644
index 00000000000..0693bab1400
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingw41_2.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingw41_3a.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingw41_3a.png
new file mode 100644
index 00000000000..b5cbf5a2d06
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingw41_3a.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingw41_3b.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingw41_3b.png
new file mode 100644
index 00000000000..94ee451dcab
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingw41_3b.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingw41_4.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingw41_4.png
new file mode 100644
index 00000000000..565c5532d67
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingw41_4.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingw5.xml b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingw5.xml
new file mode 100644
index 00000000000..086a6710cdf
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingw5.xml
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<section xmlns="http://docbook.org/ns/docbook" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:ns5="http://www.w3.org/1998/Math/MathML" xmlns:ns4="http://www.w3.org/1999/xhtml" xmlns:ns3="http://www.w3.org/2000/svg" xmlns:ns="http://docbook.org/ns/docbook" version="5.0" xsi:schemaLocation="http://docbook.org/ns/docbook http://www.docbook.org/xml/5.0/xsd/docbook.xsd" xml:lang="en-US" xml:id="mingw5">
+ <title>MinGW 5.x</title>
+ <para>First, you need to download MinGW. You can either click through
+ the websites mentioned above or go directly to the <link xlink:href="https://sourceforge.net/projects/mingw/files/">MinGW
+ download area</link>. Look for the Package "Automated MinGW
+ Installer". There, download the file ending in .exe. The file name
+ should be something like "MinGW-5.1.4.exe". You can also download
+ <link xlink:href="http://downloads.sourceforge.net/mingw/MinGW-5.1.4.exe?modtime=1209244789&amp;big_mirror=1">MinGW
+ Version 5.1.4</link> from the link given here.</para>
+ <para>You may also download an older version, and follow the
+ instructions given in <xref linkend="older"/>:</para>
+ <itemizedlist>
+ <listitem>
+ <para>You may download <link xlink:href="http://prdownloads.sourceforge.net/mingw/MinGW-4.1.0.exe?download">MinGW
+ 4</link> and follow the instructions in <xref linkend="mingw4"/>.</para>
+ </listitem>
+ <listitem>
+ <para>You may download <link xlink:href="http://prdownloads.sourceforge.net/mingw/MinGW-3.1.0-1.exe?download">MinGW
+ 3</link> and follow the instructions in <xref linkend="mingw3"/>.</para>
+ </listitem>
+ </itemizedlist>
+ <para>Most of the options in the MinGW 5 installer are pretty
+ straightforward. I will point out some of the more tricky
+ options.</para>
+ <para>The first one of such options is which "MinGW" package to
+ install. Any of those should work just fine, but I would recommend
+ <computeroutput>Current</computeroutput>.</para>
+ <figure xml:id="mingw5install">
+ <title>MinGW 5 install</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="Mingw5_1.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>MinGW will ask which components to install. Either select
+ <computeroutput>All</computeroutput> or at least make sure that you
+ have the <computeroutput>g++ compiler</computeroutput> checked. This
+ is needed for C++ support.</para>
+ <figure xml:id="mingw5install2">
+ <title>MinGW 5 install (2)</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="Mingw5_2.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>When asked for the install folder, please do not change it. You
+ will have a lot of trouble later on, especially if you chose a path
+ that contains spaces.</para>
+ <figure xml:id="mingw5install3">
+ <title>MinGW 5 install (3)</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="Mingw5_3.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>That's already it for MinGW. There are two more steps: MSYS and
+ the Environment Variables.</para>
+ <para>Checkpoint: To test if everything worked, please reboot. Then
+ open up a terminal. (Start/Run, type CMD). Try these commands:</para>
+ <programlisting>gcc --version
+</programlisting>
+ <para>should print the version of gcc. If you get a "File not found",
+ try logging out and logging back in, or even rebooting your computer.
+ If it still does not work, you have not installed MinGW correctly. You
+ may also need to set your environment variables manually (see
+ below).</para>
+ <programlisting>g++ --version</programlisting>
+ <para>should print the version for g++. You did select the "g++
+ compiler" I hope. If not, install again!</para>
+</section>
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingwgetinst.xml b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingwgetinst.xml
new file mode 100644
index 00000000000..1f3d0ac4e16
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingwgetinst.xml
@@ -0,0 +1,155 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<section xmlns="http://docbook.org/ns/docbook" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:svg="http://www.w3.org/2000/svg" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:html="http://www.w3.org/1999/xhtml" xmlns:db="http://docbook.org/ns/docbook" version="5.0" xml:id="mingw_plus_msys">
+ <title>MinGW + MSYS</title>
+ <para>First, you need to download MinGW. You can either click through the
+ websites mentioned above or go directly to the <link xlink:href="https://sourceforge.net/projects/mingw/files/">MinGW download
+ area</link>. Look for the Section "Automated MinGW Installer", then
+ "mingw-get-inst". There, download the newest subdirectory. and in there
+ download the file ending in .exe. The file name should be something like
+ "mingw-get-inst-20110802.exe". You can also download <link xlink:href="http://sourceforge.net/projects/mingw/files/Automated%20MinGW%20Installer/mingw-get-inst/mingw-get-inst-20110802/mingw-get-inst-20110802.exe/download">mingw-get-inst-200110802.exe</link>
+ from the link given here.</para>
+ <para>Make sure you install the program with Administrator Priviledges.
+ Right-click on the downloaded file, and select "Run as
+ Administrator".</para>
+ <figure xml:id="mingwgetinst1">
+ <title>MinGW-Get-Inst Setup</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="mingwgetinst1.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>Make sure the second screen tells you that this is an Administrator
+ install. If you don't get this screen, select "Cancel" and re-start as
+ administrator.</para>
+ <figure xml:id="mingwgetinst2">
+ <title>Make sure you do an Administrator install</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="mingwgetinst2.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>The next screen asks you if you want up-to-date versions of the files.
+ Tell the installer that you want do download the newest catalog data.</para>
+ <figure xml:id="mingwgetinst3">
+ <title>Select the latest version</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="mingwgetinst3.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ <para>Next, you have to accept the License.</para>
+ <figure xml:id="mingwgetinstlicense">
+ <title>MinGW License</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="mingwgetinst4.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ <para>The following screen allows you to select a directory to install
+ to. The default directory <computeroutput>C:\MinGW</computeroutput> is
+ fine. You can select almost anything you like.</para>
+ <note>
+ <para>Do not select a path containing spaces! This will lead to
+ trouble later on!</para>
+ </note>
+ <figure xml:id="mingwgetinstpath">
+ <title>Select a path for MinGW and MSYS</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="mingwgetinst5.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ </figure>
+ <para>Next, you're asked if you want to create a start menu entry. This is
+ a good idea for checking the install, so do it.</para>
+ <figure xml:id="mingwgetinstmenu">
+ <title>Create a start menu entry</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="mingwgetinst6.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ <para>On the next screen, you again have to change things. You have to
+ select "C++Compiler" and "MSYS Basic System". These two are necessary to
+ run the compiler and the build-system on Windows.</para>
+ <figure xml:id="mingwgetinstselect">
+ <title>Select "C++ Compiler" and "MSYS Basic System"</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="mingwgetinst7.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ </figure>
+ <para>The next screen lets you check the installation. Make sure it looks
+ like this screenshot.</para>
+ <figure xml:id="mingwgetinstconfirm">
+ <title>Please check if the right options are selected</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="mingwgetinst8.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ </figure>
+ <para>After selecting "Install", you have to wait for the installation
+ process to complete.</para>
+ <figure xml:id="mingwgetinstcatalogue">
+ <title>Installer updating its catalogue files</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="mingwgetinst9.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <figure xml:id="mingwgetinstdownload">
+ <title>Downloading and installing</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="mingwgetinst10.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <figure xml:id="mingwgetinstcomplete">
+ <title>Installation complete</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="mingwgetinst11.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ <para>Once the installation is complete, hit "Finish".</para>
+ </figure>
+ <para>Checkpoint: You should be able to start MSYS by going to Start /
+ Programs / MinGW / MinGW Shell. A console window should open. There, the
+ following commands should give you some output:</para>
+ <programlisting>gcc --version
+g++ --version
+make --version</programlisting>
+ <para>Close the MSYS shell again. We'll make sure that these tools are
+ available for all Windows programs in the next section.</para>
+</section>
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingwgetinst1.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingwgetinst1.png
new file mode 100644
index 00000000000..70b2967df16
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingwgetinst1.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingwgetinst10.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingwgetinst10.png
new file mode 100644
index 00000000000..734d044dbd3
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingwgetinst10.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingwgetinst11.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingwgetinst11.png
new file mode 100644
index 00000000000..af2f8bb87aa
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingwgetinst11.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingwgetinst2.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingwgetinst2.png
new file mode 100644
index 00000000000..c31986b625b
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingwgetinst2.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingwgetinst3.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingwgetinst3.png
new file mode 100644
index 00000000000..9fe57f2efa4
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingwgetinst3.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingwgetinst4.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingwgetinst4.png
new file mode 100644
index 00000000000..0894555a1e2
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingwgetinst4.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingwgetinst5.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingwgetinst5.png
new file mode 100644
index 00000000000..787595a7b27
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingwgetinst5.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingwgetinst6.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingwgetinst6.png
new file mode 100644
index 00000000000..5b6e0ccde24
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingwgetinst6.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingwgetinst7.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingwgetinst7.png
new file mode 100644
index 00000000000..6c2ff7380ac
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingwgetinst7.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingwgetinst8.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingwgetinst8.png
new file mode 100644
index 00000000000..1f0f0732659
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingwgetinst8.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingwgetinst9.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingwgetinst9.png
new file mode 100644
index 00000000000..f364fca1c5a
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/mingwgetinst9.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/msys1011.xml b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/msys1011.xml
new file mode 100644
index 00000000000..ee12b9d6d96
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/msys1011.xml
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<section xmlns="http://docbook.org/ns/docbook" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:ns5="http://www.w3.org/1998/Math/MathML" xmlns:ns4="http://www.w3.org/1999/xhtml" xmlns:ns3="http://www.w3.org/2000/svg" xmlns:ns="http://docbook.org/ns/docbook" version="5.0" xsi:schemaLocation="http://docbook.org/ns/docbook http://www.docbook.org/xml/5.0/xsd/docbook.xsd" xml:lang="en-US" xml:id="msys">
+ <title>MSYS 1.0.11</title>
+ <para>Unfortunately MinGW is not enough. We also need the MSYS tools
+ from the same download page. Go there again, to the "Current" section
+ and look for "MSYS Base System". Again, look for the file ending in
+ .exe, as this time: "MSYS-1.0.11.exe". You may have to expand the
+ "Release Candidate" section. Or you may use the link here to <link xlink:href="http://downloads.sourceforge.net/mingw/MSYS-1.0.11.exe">MSYS-1.0.11.exe</link>.
+ Download it and start it. You should get a window like this:</para>
+ <figure xml:id="msys1011install">
+ <title>MSYS install</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="setup1.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>If you accept all the default options, after a while there
+ should be a black and white window, similar to this:</para>
+ <figure xml:id="msys1011postinstall">
+ <title>MSYS asking for post-install</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="setup9.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>To continue the install type in y and then Enter. The next
+ question reads like this:</para>
+ <figure xml:id="msys1011mingw">
+ <title>MSYS asking for MinGW</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="setupa.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>Which you can also answer with y Enter. The next question is a
+ little bit more tricky:</para>
+ <figure xml:id="msys1011mingwpath">
+ <title>MSYS asking for path to MinGW</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="setupb.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>What they want to know is where you installed MinGW to and that
+ you replace all backward slashes (\) by forward slashes (/). If you
+ followed the instructions, the answer here will be:</para>
+ <programlisting>C:/MinGW</programlisting>
+ <para>Caveat: If you have not used the default paths, but instead have
+ installed MinGW in a different location, such as
+ <computeroutput>C:/Program Files/MinGW</computeroutput>, where the
+ path contains spaces and / or is longer than 8 characters you may have
+ to replace that particular path component with its DOS short pathname,
+ such as <computeroutput>C:/PROGRA~1/mingw</computeroutput>.</para>
+ <para>Caveat2: The installer may be case sensitive. Please make sure
+ you have written MinGW in the same capitalization as during your first
+ install, in some cases you will have to enter
+ <computeroutput>c:/mingw</computeroutput> (note
+ capitalization!).</para>
+ <para>The very last question just asks you to press a key:</para>
+ <figure xml:id="msys1011correctly">
+ <title>MSYS installing correctly</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="setupc.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>Where you can press any key you like to continue. Setup will
+ come back and ask you if you want to read a welcome note and the
+ README file. You probably don't want either one, but it does not hurt
+ to look. Anyways, once you hit "Finish" you are done with the setup.
+ Now you have to set up your Path environment variable.</para>
+ <figure xml:id="msys1011done">
+ <title>MSYS is done</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="setupd.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+</section>
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/navigator.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/navigator.png
new file mode 100644
index 00000000000..1a93108040d
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/navigator.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/newcppproject.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/newcppproject.png
new file mode 100644
index 00000000000..c5d9b64d89e
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/newcppproject.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/newcppproject2.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/newcppproject2.png
new file mode 100644
index 00000000000..19597984c0b
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/newcppproject2.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/newcppproject3.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/newcppproject3.png
new file mode 100644
index 00000000000..f7d01f55461
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/newcppproject3.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/newcppproject4.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/newcppproject4.png
new file mode 100644
index 00000000000..9c8ace08de1
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/newcppproject4.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/newproject.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/newproject.png
new file mode 100644
index 00000000000..414c0bf5573
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/newproject.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/newsource.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/newsource.png
new file mode 100644
index 00000000000..2cc4000c9a8
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/newsource.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/older.xml b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/older.xml
new file mode 100644
index 00000000000..71ab2ee5c90
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/older.xml
@@ -0,0 +1,497 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<section xmlns="http://docbook.org/ns/docbook" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:ns5="http://www.w3.org/1998/Math/MathML" xmlns:ns4="http://www.w3.org/1999/xhtml" xmlns:ns3="http://www.w3.org/2000/svg" xmlns:ns="http://docbook.org/ns/docbook" version="5.0" xsi:schemaLocation="http://docbook.org/ns/docbook http://www.docbook.org/xml/5.0/xsd/docbook.xsd" xml:lang="en-US" xml:id="older">
+ <title>Older Instructions</title>
+ <para>Sometimes you may not be happy with the current version of a certain
+ program. I have left instructions for the older versions here in case you
+ need them:</para>
+ <section xml:id="mingw5msys1011">
+ <title>MinGW 5, MSYS 1.0.11</title>
+ <para>This is the old MSYS/MinGW installation used before the new mingw-get-inst was available.</para>
+ <xi:include href="mingw5.xml"/>
+ <xi:include href="gdb.xml"/>
+ <xi:include href="msys1011.xml"/>
+ </section>
+ <section xml:id="installingcdt34">
+ <title>Installing the CDT on Eclipse 3.4</title>
+ <note>
+ <para>This is only required if you did not download the CDT version as
+ described above. Please check if you are able to create a new C++
+ project (as described in <xref linkend="helloworld"/>) before going
+ through this section!</para>
+ </note>
+ <para>In the "Help" menu select "Software Updates..."</para>
+ <figure xml:id="cdt34updates">
+ <title>Select Software Updates... from the menu</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="softwareupdatemenu.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>This will show you the list of available software update sites. If
+ you are luck you already have the CDT update site configured. Search for
+ an entry which contains the String "cdt", for example
+ <computeroutput>http://download.eclipse.org/tools/cdt/releases/ganymede</computeroutput>.</para>
+ <figure xml:id="cdt34updatepage">
+ <title>Main Software Update page</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="softwareupdatemain.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>If there is no site for cdt available, go to "Manage Sites", and
+ you will get a list of sites.</para>
+ <figure xml:id="cdt34updatesites">
+ <title>Manage Software Update sites</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="softwareupdatesites.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>Again, search for a site containing "CDT". If there is no site
+ available, add it (using the "Add..." button), adding
+ <computeroutput>http://download.eclipse.org/tools/cdt/releases/ganymede</computeroutput>
+ (the address may be different in future versions of Eclipse, this is for
+ 3.4!)</para>
+ <para>Also, make sure the checkbox next to the Address is checked.
+ Otherwise the site is configured, but ignored by Eclipse. Leave this
+ page and go back to the main Software update page.</para>
+ <para>Expand the CDT site, and find the latest version of the CDT. Make
+ sure you select at least the following:</para>
+ <itemizedlist>
+ <listitem>
+ <para>Eclipse C/C++ Development Tools</para>
+ </listitem>
+ <listitem>
+ <para>CDT GNU Toolchain Build Support</para>
+ </listitem>
+ <listitem>
+ <para>CDT GNU Toolchain Debug Support</para>
+ </listitem>
+ <listitem>
+ <para>Eclipse C/C++ Development Platform</para>
+ </listitem>
+ </itemizedlist>
+ <figure xml:id="cdt34selectcdt">
+ <title>Select CDT from the Update Site</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="softwareupdatecdt.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>The select "Install..."</para>
+ <para>You will have to confirm the selection with "Finish"</para>
+ <para>Downloading and installing will take a while. Once its done it
+ will ask you to restart Eclipse. This is a good idea, so select
+ "Yes".</para>
+ <figure xml:id="cdt34restart">
+ <title>Restarting the workbench</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="eclipsesu6.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>Once Eclipse has restarted you now need to configure it for your
+ computer.</para>
+ </section>
+ <section xml:id="helloworldold">
+ <title>Hello, World! in older versions of CDT</title>
+ <para>Once you are in Eclipse, you are given an empty workspace. You now
+ have to start a new project. To do so, select "File" / "New" /
+ "Project...". Expand the section "C++" and select "Managed Make C++
+ Project", then click "Next &gt;".</para>
+ <figure xml:id="cdt34newproject">
+ <title>New Project screen</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="newproject.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>On the next screen, you have to give your project a name. In this
+ case, it will be "HelloWorld", however, you may use any name you like.
+ Leave the "Use default" in "Project Contents" checked.</para>
+ <figure xml:id="cdt34newprojectname">
+ <title>New Project Name</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="projectname.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>The next two settings about "Project Type" and additional settings
+ are usually OK, so we'll just leave them:</para>
+ <figure xml:id="cdt34newprojectplatforms">
+ <title>New Project Platforms</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="projecttype.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <figure xml:id="cdt34newprojectsettings">
+ <title>New Project Settings</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="projectadd.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>Eclipse will now generate a few things, and then ask you if you
+ want to switch to the C/C++ Perspective. This is a good idea, so say
+ yes.</para>
+ <figure xml:id="cdt34perspective">
+ <title>Perspective Switch</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="perspective.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>Great. You have a project now. However, it currently does not have
+ any files. So select "File" / "New" / "C Source File". It will then ask
+ you for the name of the file, type in something like "main.cpp".</para>
+ <figure xml:id="cdt34newsourcefile">
+ <title>Create a new Source File</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="newsource.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>You will immediately get an editor window for your file. Eclipse
+ will also auto-build your project every time you save. So type in
+ something like this and hit save, and it should compile
+ automatically:</para>
+ <figure xml:id="cdt34helloworld">
+ <title>Example Hello World application</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="helloworld.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>Now here comes the tricky part: On the left pane, select "C/C++
+ Projects", expand "Binaries" and you should see and executable
+ (HelloWorld.exe). Now right-click that executable, and select "Run" /
+ "Run Local C/C++ Application". If everything goes well your output will
+ be in the bottom right window in the "Console" tab and it should say
+ "Hello, World".</para>
+ <figure xml:id="cdt34runninghelloworld">
+ <title>Running the example Hello World application</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="helloout.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>Congratulations! You have successfully installed a compiler, a
+ build system and an IDE. You have successfully created, edited, compiled
+ and run a project. You should now be able to start your own
+ projects!</para>
+ </section>
+ <section xml:id="eclipse31">
+ <title>Eclipse 3.1 with CDT 3.0</title>
+ <section xml:id="download_eclipse31">
+ <title>Downloading Eclipse 3.1</title>
+ <para>Now we are finally ready to install Eclipse. Go to the <link xlink:href="http://www.eclipse.org/downloads/">Eclipse website</link>
+ and look for "Downloads". It will automatically try to figure out your
+ OS and give you an option like "Download now: Eclipse Platform SDK
+ 3.1, Windows.". Do it. You will receive a .ZIP file. Use either <link xlink:href="http://www.filzip.com/">FilZip</link> or your favorite ZIP
+ Program (Windows XP and Mac OS X have .ZIP support build in) to unpack
+ the file. Move the unpacked folder to any location, for example
+ <filename>C:\Program Files\eclipse</filename>. You can now start
+ Eclipse by double-clicking it.</para>
+ <figure xml:id="cdt30installed">
+ <title>Eclipse installed into C:\Program Files\eclipse</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="eclipseDir.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ </section>
+ <section xml:id="first_run_eclipse31">
+ <title>First Run of Eclipse</title>
+ <para>However you installed eclipse, you should now be able to run it.
+ Double-click the icon or start the appropriate script in UNIX and
+ Eclipse's splash-screen will appear:</para>
+ <figure xml:id="cdt30splash">
+ <title>Eclipse splash screen</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="splash.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>Immediately after that Eclipse will ask you for your workspace
+ location. It defaults to: <computeroutput>C:\Program
+ Files\eclipse\workspace</computeroutput> which is actually very bad.
+ Depending on where you want to use Eclipse, please set your workspace
+ to the appropriate folder. If you are in a computer lab, check their
+ policy on personal home folders. If you are on your own computer, a
+ place within your personal settings is usually best:</para>
+ <figure xml:id="cdt30workspace">
+ <title>Eclipse asking for workspace</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="workspace.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>If you always want to use the same workspace, you may select the
+ <computeroutput>Use this as the default...</computeroutput> and you'll
+ never have to worry about workspaces again. This is usually a good
+ idea once you've used Eclipse for a while. Finally Eclipse starts up
+ with the welcome screen:</para>
+ <figure xml:id="cdt30welcome">
+ <title>Eclipse welcome screen</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="welcome.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>And if you select the "Go to the workbench" in the top right
+ corner, then you are right in Eclipse and you can start developing in
+ Java. However, since we want to develop in C++ just continue with the
+ next section.</para>
+ </section>
+ <section xml:id="installingcdt30">
+ <title>Installing the CDT</title>
+ <para>Eclipse by default comes with support for programming Java, the
+ support for C/C++ (the C Development Toolkit) has to be installed as
+ an update.</para>
+ <para>In the "Help" menu select "Software Updates" and the "Find and
+ Install...". You should get something like:</para>
+ <figure xml:id="cdt30updates">
+ <title>Find and Install software updates</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="eclipsesu1.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>Select "Search for new features to install", and then "Next
+ &gt;". You should get:</para>
+ <figure xml:id="cdt30updatesite">
+ <title>Select update sites</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="eclipsesu2.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>Leave "Ignore features not applicable to this environment"
+ checked and de-select all update sites (you will probably have less in
+ there than I do). Select "New Remote Site" and then enter the
+ following information:</para>
+ <para>Note: What name you enter does not matter. Here is the URL for
+ cut-n-paste:
+ <computeroutput>http://download.eclipse.org/tools/cdt/releases/eclipse3.1</computeroutput></para>
+ <figure xml:id="cdt30addupdatesite">
+ <title>Add new update site</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="eclipsesu3.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>Hit "OK". Now select "Eclipse CDT" and then "Next &gt;". It
+ should connect to the Eclipse CDT update site and look for the newest
+ version. Then it displays a window like this one:</para>
+ <figure xml:id="cdt30selectcdt">
+ <title>Select CDT to install</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="eclipsesu4.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>Select the latest version of the "Eclipse C/C++ Development
+ Tools". (3.0.1 at the time of this writing) Do not select any other
+ features. Hit "Next &gt;".</para>
+ <para>In the next window, you will have to "accept" the license, and
+ then select "Next &gt;".</para>
+ <para>It will again show you an overview, which you can just accept
+ and select "Finish".</para>
+ <para>It will warn you that the Eclipse CDT is an "unsigned feature".
+ But you can just ignore that and select "Install All".</para>
+ <figure xml:id="cdt30unsignedjar">
+ <title>Unsigned JAR</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="eclipsesu5.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>Downloading and installing will take a while. Once its done it
+ will ask you to restart Eclipse. This is a good idea, so select
+ "Yes".</para>
+ <figure xml:id="cdt30restart">
+ <title>Restarting the workbench</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="eclipsesu6.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>Once Eclipse has restarted you now need to configure it for your
+ computer.</para>
+ <para>Eclipse 3.1 with CDT 3.0.0 (and 3.0.1) has a bug on windows! If
+ you are on windows, please close eclipse, and delete the file
+ spawner.dll in
+ eclise\plugins\org.eclipse.cdt.core.win32_3.0.0\os\win32\x86. This bug
+ appears every time you try and run short programs (they will not show
+ any output). More information is available in <link xlink:href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102043">Eclipse
+ Bug 102043</link>. This bug is fixed in CDT 3.0.2.</para>
+ </section>
+ </section>
+ <section xml:id="mingw4">
+ <title>MinGW 4.x</title>
+ <para>MinGW 4.x comes with a new installer that asks much more questions
+ than the old one. The current (Aug 05) version is MinGW 4.1.1.</para>
+ <para>Please note: The MinGW 4.x installer downloads parts of the MinGW
+ suite during the install! You must have an internet connection during
+ the install. If this is not an option for you, download the last version
+ (3.1)</para>
+ <figure xml:id="mingw41install">
+ <title>MinGW 4.1 install</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="mingw41_1.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>Most installation options are pretty straight forward. You will
+ have to accept the license agreement:</para>
+ <figure xml:id="mingw41license">
+ <title>MinGW license</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="mingw41_1_1.png"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
+ <para>It will ask you for a download mirror. Of course, you should pick
+ one close to your country. If you are installing from home in the us,
+ use a commercial mirror, if you are installing from a university
+ connection, chose a university mirror.</para>
+ <figure xml:id="mingw41mirror">
+ <title>Mirror Selection</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="mingw41_1_2.png"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
+ <para>When installing MinGW, it is advisable to use the default
+ directory <computeroutput>C:\MinGW</computeroutput>. Do not use a path
+ that contains spaces, this will give you problems later on.</para>
+ <figure xml:id="mingw41directory">
+ <title>MinGW installation directory</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="mingw41_2.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>If all you need MinGW for is compiling your programs from within
+ Eclipse, the Compact install should be enough:</para>
+ <figure xml:id="ming41components">
+ <title>MinGW installation components</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="mingw41_3a.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>Next, it will ask you for additional tasks to perform. Select all
+ of them:</para>
+ <figure xml:id="mingw41tasks">
+ <title>Additional Tasks</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="mingw41_4.png"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
+ <para>MinGW will download and install your selected components. After a
+ little while your installation is done. You will now need to install
+ MSYS.</para>
+ </section>
+ <section xml:id="mingw3">
+ <title>MinGW 3.1</title>
+ <para>At the time of this writing this was "Download MinGW-3.1.0-1.exe",
+ but the version number may be higher now. Once downloaded, start the
+ program. It should look similar to this:</para>
+ <figure xml:id="mingw3install">
+ <title>MinGW 3.1 install</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="mingw1.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>If you accept all the default options MinGW should install just
+ fine.</para>
+ </section>
+</section>
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/other.xml b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/other.xml
new file mode 100644
index 00000000000..6ba31631733
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/other.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<section xmlns="http://docbook.org/ns/docbook" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ns5="http://www.w3.org/1998/Math/MathML" xmlns:ns4="http://www.w3.org/1999/xhtml" xmlns:ns3="http://www.w3.org/2000/svg" xmlns:ns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude" version="5.0" xsi:schemaLocation="http://docbook.org/ns/docbook http://www.docbook.org/xml/5.0/xsd/docbook.xsd" xml:lang="en-US" xml:id="other_resources">
+ <title>Other Resources</title>
+ <para>When looking for Instructions, I found the following
+ websites:</para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <link xlink:href="http://wiki.eclipse.org/CDT/User/FAQ"/>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <link xlink:href="http://yongshin.blogspot.com/2005/11/how-to-use-cdt-and-mingw-for-eclipse.html"/>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <link xlink:href="http://www.cs.umanitoba.ca/~eclipse/7-EclipseCDT.pdf"/>
+ </para>
+ </listitem>
+ </itemizedlist>
+</section>
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/perspective.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/perspective.png
new file mode 100644
index 00000000000..d1e062ffbd1
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/perspective.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/problems.xml b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/problems.xml
new file mode 100644
index 00000000000..abbcac03215
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/problems.xml
@@ -0,0 +1,297 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<section xmlns="http://docbook.org/ns/docbook" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:ns5="http://www.w3.org/1998/Math/MathML" xmlns:ns4="http://www.w3.org/1999/xhtml" xmlns:ns3="http://www.w3.org/2000/svg" xmlns:ns="http://docbook.org/ns/docbook" version="5.0" xsi:schemaLocation="http://docbook.org/ns/docbook http://www.docbook.org/xml/5.0/xsd/docbook.xsd" xml:id="problems" xml:lang="en-US">
+ <title>Common Problems</title>
+ <para>If you have followed these instructions everything should work.
+ However, you may have ran into trouble, and then decided to look for the
+ manual (at least, that's the way I would have done it). So now you have a
+ problem and need an answer:</para>
+ <para>Please note if you are reading the online version: Some problems may
+ covered in a newer version of this document, please refer to <xref linkend="introduction"/>.</para>
+ <section xml:id="common_errors">
+ <title>How to fix most of the common errors on Windows</title>
+ <para>Make sure you have done the following things:</para>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>Installed the CDT</para>
+ </listitem>
+ <listitem>
+ <para>Installed (not just downloaded) MinGW and MSYS with
+ Administrator privileges</para>
+ </listitem>
+ <listitem>
+ <para>Set up your path environment variable</para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ <para>Especially made sure you did the last step. You
+ <emphasis>will</emphasis> need to restart eclipse (full restart with
+ shutdown, File / Restart is not sufficient). This solves about 99% of all
+ support mails I've got so far.</para>
+ </section>
+ <section xml:id="lion">
+ <title>How to fix most of the common errors on Lion (Mac OS X 10.7)</title>
+ <para>Make sure you have done the following this:</para>
+ <itemizedlist>
+ <listitem>
+ <para>Downloaded XCode from App Store</para>
+ </listitem>
+ <listitem>
+ <para>Installed XCode using the "Install XCode button"</para>
+ </listitem>
+ </itemizedlist>
+ <para>Both of these steps are important, in particular when you upgraded
+ from an earlier version of Mac OS X. Upgrading to Lion breaks your
+ existing developer tools! Read also the full description in <xref linkend="macosx"/>. It also covers problems during the XCode
+ install.</para>
+ </section>
+ <section xml:id="nomake">
+ <title>Build error (Exec error:Launching failed), CreateProcess: make -k
+ all error=2,</title>
+ <para>You have just tried the build the hello world program, and you get
+ this error message instead of an executable. This means that
+ <command>make</command> is not in your path. Open up a command prompt (In
+ OS X: Terminal in Applications/Utilities, in Windows: Start/Run, type in
+ cmd) and type in <command>make</command>. If that doesn't work, try
+ <command>gmake</command>.</para>
+ <para>If <command>gmake</command> worked, see <xref linkend="configuring"/>.</para>
+ <para>If neither worked, make sure you install make (See <xref linkend="compiler"/>) and set your path (See <xref linkend="envwin"/> in
+ the case of Windows).</para>
+ <para>To check your path (on windows), open up <command>cmd</command> and
+ type in <command>echo %path%</command>. This should show the path to MSYS
+ and MinGW. Also, make sure that you restarted Eclipse (or cmd if you are
+ testing) after setting your path.</para>
+ <para>If you are on Windows, and you have installed MinGW, but not MSYS,
+ you may have an executable called <command>mingw-make</command>. In this
+ case you have to go to <xref linkend="configuring"/> and configure
+ appropriately. It is possible to just use mingw-make and no MSYS at all,
+ however, mingw-make has some limitations. Eclipse CDT managed makefiles
+ may or may not work with it. Please see the <link xlink:href="http://www.mingw.org/mingwfaq.shtml#faq-mingw32-make.exe">MinGW
+ FAQ</link> for more information.</para>
+ </section>
+ <section xml:id="external_scanner_info_generator">
+ <title>/bin/sh: line 1: g++: command not found, Error launching external
+ scanner info generator</title>
+ <para>This error message means that g++ is either not installed or not in
+ your path. Check your path settings as described in <xref linkend="nomake"/>, but this time try the commands: <command>gcc
+ --version</command> and <command>g++ --version</command>. If gcc works,
+ but g++ doesn't, it means you have only installed the C and not the C++
+ version of the gcc compiler, which happens quite frequently on Linux
+ distributions. Check if you have all needed packages installed, and check
+ <xref linkend="compiler"/>.</para>
+ <para>If you are on windows, and neither of them worked, install MinGW and
+ set your path environment variable. If only gcc one worked, reinstall
+ MinGW and don't forget to select the C++ compiler!</para>
+ </section>
+ <section xml:id="undefinded_symbols">
+ <title>Undefined symbols for architecture x86_64 (OS X 10.7)</title>
+ <para>Make sure you have done the steps in <xref linkend="lion"/>.</para>
+ <para>If the problem still persist, and you are trying to compile C++
+ code, make sure your source files actually have an extension of ".cc" or
+ ".cpp".</para>
+ </section>
+ <section xml:id="no_output">
+ <title>No output or only sometimes output</title>
+ <para>If you are on windows and use Eclipse 3.1 with CDT 3.0.0 there is a
+ bug. See <xref linkend="configuring"/>.</para>
+ <para>Please note that debug sessions in Windows have their own console
+ window (a black console window) and do not appear in the regular Eclipse
+ console. If you're running a debug session, please watch which windows
+ appear in your task bar.</para>
+ </section>
+ <section xml:id="error_launching_cygpath">
+ <title>Error launching 'cygpath' command</title>
+ <para>If you followed these instructions you have installed MSYS instead
+ of cygwin. You may safely ignore this error message.</para>
+ </section>
+ <section xml:id="nocppproject">
+ <title>I do not have the option to start a C++ project</title>
+ <para>You have not installed the CDT. See <xref linkend="installingcdt"/>.</para>
+ </section>
+ <section xml:id="permission_denied">
+ <title>Error 1, open output file blabla.exe: Permission denied</title>
+ <para>Every time I start Eclipse on my laptop, I can only compile and run
+ a program once. After that it asks if I want to run it with errors every
+ time. The compiler says this:</para>
+ <programlisting>Building target: Project01Test.exe
+Invoking: GCC C++ Linker
+g++ -oProject01Test.exe ./test.o
+C:\MinGW\bin\..\lib\gcc\mingw32\3.4.2\..\..\..\..\mingw32\bin\ld.exe: cannot
+open output file Project01Test.exe: Permission denied
+collect2: ld returned 1 exit status
+make: *** [Project01Test.exe] Error 1
+make: Target `all' not remade because of errors.
+Build complete for project Project01Test
+</programlisting>
+ <para>Answer: Your program may still be running. Try stopping it by using
+ the small red square on the console window (the one for your program).
+ Another way is switching to the "Debug" perspective, selecting your
+ running program, and stopping it there (also the small red square).</para>
+ </section>
+ <section xml:id="no_debugger">
+ <title>The debugger doesn't work (on windows, with MinGW)</title>
+ <para>Unfortunately gdb is not included in the current (4.1.1 or 5.0.2)
+ version of MinGW. See <xref linkend="gdb"/>.</para>
+ </section>
+ <section xml:id="argument_minus_k">
+ <title>Incorrect command line argument: -k'</title>
+ <para>Make sure you are using the make programs provided by MinGW. If your
+ output in the console shows something like:</para>
+ <programlisting>make -k clean all
+MAKE Version 5.2 Copyright (c) 1987, 2000 Borland
+Incorrect command line argument: -k</programlisting>
+ <para>Then you have make installed from a previous installation of Borland
+ C++. You have several choices:</para>
+ <itemizedlist>
+ <listitem>
+ <para>Adjust your PATH environment variable to have the MinGW / MSYS
+ installation come before Borlands tools. Please be warned that this
+ may break your Borland tools!</para>
+ </listitem>
+ <listitem>
+ <para>Remove the path to the Borland tools from your PATH. This will
+ definitely break your Borland tools.</para>
+ </listitem>
+ <listitem>
+ <para>Download "mingw32-make". This is an option when installing
+ MinGW. Make sure you set your make setting to be "mingw32-make". If
+ you still get an error, try setting it for the build settings in your
+ project. In this case you may even skip the installation of MSYS, but
+ you will get limited functionality.</para>
+ </listitem>
+ </itemizedlist>
+ </section>
+ <section xml:id="a_jre_must_be_available">
+ <title>A Java Runtime Envrionment (JRE) or Java Development Kit (JDK) must
+ be available...</title>
+ <para>There are several possible reasons for that:</para>
+ <itemizedlist>
+ <listitem>
+ <para>You have not installed Java. Please see <xref linkend="java"/>.</para>
+ </listitem>
+ <listitem>
+ <para>Your "path" environment is messed up (Windows). Please see <xref linkend="envwin"/>. Make sure <command>C:\windows\system32</command>
+ is in your path (should be there by default).</para>
+ </listitem>
+ <listitem>
+ <para><link xlink:href="http://www.java.com">java.com</link> has a
+ button called <computeroutput>verify
+ installation</computeroutput>.</para>
+ </listitem>
+ </itemizedlist>
+ </section>
+ <section xml:id="no_binaries">
+ <title>I have no binaries</title>
+ <para>If you have no binaries folder, then one of several things may have
+ happened:</para>
+ <itemizedlist>
+ <listitem>
+ <para>You are not looking at the C/C++ Project view. Make sure you are
+ in the C++ perspective and "C/C++ Projects" is active. An example of
+ this situation is shown in <xref linkend="navigator"/>: Click on
+ "C/C++ Projects" to fix.</para>
+ </listitem>
+ <listitem>
+ <para>Your program didn't compile. Check the output of the "Console"
+ Window. It is either an error in your program or a configuration
+ error. For configuration errors, check the other problems.</para>
+ </listitem>
+ <listitem>
+ <para>AutoBuild is turned off. Turn it on as described in <xref linkend="buildauto"/>.</para>
+ </listitem>
+ <listitem>
+ <para>If you do have a binaries folder, then make sure you run you
+ program by right-clicking (on the mac: hold down ctrl and click) on
+ the binary, and then selecting Run / Run as C/C++ Application. Just
+ hitting the run button will only work after you have done that at
+ least once!</para>
+ </listitem>
+ </itemizedlist>
+ <figure xml:id="navigator">
+ <title>The Navigator view instead of the C/C++ Projects view</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="navigator.png"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ </section>
+ <section xml:id="jarfile_startup">
+ <title>Unable to access jarfile startup.jar</title>
+ <para>This problem happens on Windows when you moved Eclipse out of its
+ directory instead of creating a shortcut. Please move it back into the
+ Eclipse directory, then drag'n'drop it using the right mouse button, where
+ you can select "Create Shurtcut"</para>
+ </section>
+ <section xml:id="cygwin_on_windows">
+ <title>Problems when CYGWIN is installed on Windows</title>
+ <para>I personally do not recommend the installation of cygwin, but rather
+ the installation of MinGW and MSYS as described in <xref linkend="wincompiler"/>. However, the following problems have been
+ reported by users:</para>
+ <section xml:id="cygwin_dll">
+ <title>Binaries require cygwin.dll</title>
+ <para>Eclipse prefers to use cygwin if it is installed, and will do
+ everything to manipulate the path to include cygwin if it is installed.
+ Binaries will therefore by default be linked against the cygwin
+ libraries. Possible workarounds:</para>
+ <itemizedlist>
+ <listitem>
+ <para>add <computeroutput>-mno-cygwin</computeroutput> to your
+ compiler settings</para>
+ </listitem>
+ <listitem>
+ <para>Overwrite the path variable in eclipse: In the Project
+ Properties: C/C++ Build -&gt; Environment -&gt; User Variables -&gt;
+ New. Select PATH, remove the cygwin directory and select Replace as
+ Operation.</para>
+ </listitem>
+ </itemizedlist>
+ </section>
+ </section>
+ <section xml:id="working_directory">
+ <title>Launch failed Reason: Unable to set working directory</title>
+ <para>Your workspace or your eclipse installation may use a path with
+ includes spaces, such as <computeroutput>C:\Documents and
+ Settings</computeroutput>. Eclipse sometimes fails in this case. Try
+ creating your workspace in a different directory.</para>
+ </section>
+ <section xml:id="other_problems">
+ <title>Problems not covered here</title>
+ <para>If you read the online version of this document, check out <xref linkend="introduction"/>. You problem may be covered in a newer version
+ of this document.</para>
+ <para>If you are still having trouble, you may try and send me an email.
+ Please be aware that I may not respond to every email, as I am doing this
+ support mainly as a hobby. Make sure your email includes the following.
+ Please send the complete output!</para>
+ <itemizedlist>
+ <listitem>
+ <para>The contents of your PATH environment variable (in Windows:
+ <command>echo %PATH%</command>. In Linux / Mac OS X: <command>echo
+ $PATH)</command>.</para>
+ </listitem>
+ <listitem>
+ <para>Version of GCC you're using (<command>gcc
+ --version</command>)</para>
+ </listitem>
+ <listitem>
+ <para>Version of Make you're using (<command>make --version</command>
+ or <command>gmake --version</command>)</para>
+ </listitem>
+ <listitem>
+ <para>Version of Eclipse you're using</para>
+ </listitem>
+ <listitem>
+ <para>Version of the CDT you're using</para>
+ </listitem>
+ <listitem>
+ <para>The complete output of your "Console" window (at the bottom of
+ eclipse) when your error occurs.</para>
+ </listitem>
+ <listitem>
+ <para>The steps you did so before the problem occurred.</para>
+ </listitem>
+ </itemizedlist>
+ </section>
+</section>
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/projectadd.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/projectadd.png
new file mode 100644
index 00000000000..f8d8d33ea89
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/projectadd.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/projectname.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/projectname.png
new file mode 100644
index 00000000000..bea2a499a4b
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/projectname.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/projecttype.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/projecttype.png
new file mode 100644
index 00000000000..d73542c4617
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/projecttype.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/setup1.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/setup1.png
new file mode 100644
index 00000000000..35f5793d98e
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/setup1.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/setup2.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/setup2.png
new file mode 100644
index 00000000000..3d7e20b3852
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/setup2.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/setup3.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/setup3.png
new file mode 100644
index 00000000000..b3f36427c56
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/setup3.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/setup4.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/setup4.png
new file mode 100644
index 00000000000..c34e8de1904
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/setup4.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/setup5.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/setup5.png
new file mode 100644
index 00000000000..a1350abae61
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/setup5.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/setup6.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/setup6.png
new file mode 100644
index 00000000000..7a76b92d406
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/setup6.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/setup7.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/setup7.png
new file mode 100644
index 00000000000..75dc0c2d9e5
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/setup7.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/setup8.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/setup8.png
new file mode 100644
index 00000000000..d553ab738c1
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/setup8.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/setup9.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/setup9.png
new file mode 100644
index 00000000000..518c68c12b6
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/setup9.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/setupa.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/setupa.png
new file mode 100644
index 00000000000..d238f4ab0dd
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/setupa.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/setupb.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/setupb.png
new file mode 100644
index 00000000000..f1bd074bb95
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/setupb.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/setupc.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/setupc.png
new file mode 100644
index 00000000000..d257da9e6d0
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/setupc.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/setupd.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/setupd.png
new file mode 100644
index 00000000000..4209d888178
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/setupd.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/softwareupdateadd35.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/softwareupdateadd35.png
new file mode 100644
index 00000000000..c70d04d800e
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/softwareupdateadd35.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/softwareupdatecdt.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/softwareupdatecdt.png
new file mode 100644
index 00000000000..104380ffdd1
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/softwareupdatecdt.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/softwareupdatecdt35.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/softwareupdatecdt35.png
new file mode 100644
index 00000000000..001d4cade75
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/softwareupdatecdt35.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/softwareupdatemain.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/softwareupdatemain.png
new file mode 100644
index 00000000000..f3cabb9d9b7
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/softwareupdatemain.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/softwareupdatemenu.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/softwareupdatemenu.png
new file mode 100644
index 00000000000..d55312db370
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/softwareupdatemenu.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/softwareupdatemenu35.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/softwareupdatemenu35.png
new file mode 100644
index 00000000000..caa91e6925a
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/softwareupdatemenu35.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/softwareupdatesites.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/softwareupdatesites.png
new file mode 100644
index 00000000000..f2425d3a27c
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/softwareupdatesites.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/splash.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/splash.png
new file mode 100644
index 00000000000..0e9510c5a12
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/splash.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/splash35.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/splash35.png
new file mode 100644
index 00000000000..9dae9f81636
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/splash35.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/splash36.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/splash36.png
new file mode 100644
index 00000000000..74413573037
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/splash36.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/splash37.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/splash37.png
new file mode 100644
index 00000000000..71bb392da2b
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/splash37.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/systemproperties.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/systemproperties.png
new file mode 100644
index 00000000000..08cb4dd1c33
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/systemproperties.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/systempropertiesw71.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/systempropertiesw71.png
new file mode 100644
index 00000000000..3f9875d3311
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/systempropertiesw71.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/systempropertiesw72.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/systempropertiesw72.png
new file mode 100644
index 00000000000..8c4c654e2f8
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/systempropertiesw72.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/systempropertiesw73.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/systempropertiesw73.png
new file mode 100644
index 00000000000..a1d881dfbcc
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/systempropertiesw73.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/systempropertiesw74.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/systempropertiesw74.png
new file mode 100644
index 00000000000..ae9103d67fe
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/systempropertiesw74.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/systempropertiesxp.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/systempropertiesxp.png
new file mode 100644
index 00000000000..2012dada195
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/systempropertiesxp.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/updatecallisto.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/updatecallisto.png
new file mode 100644
index 00000000000..1d858b85676
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/updatecallisto.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/welcome.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/welcome.png
new file mode 100644
index 00000000000..99fc3916db4
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/welcome.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/workspace.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/workspace.png
new file mode 100644
index 00000000000..32c1ab07a27
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/workspace.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/xcode1.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/xcode1.png
new file mode 100644
index 00000000000..5a92db44608
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/xcode1.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/xcode2.png b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/xcode2.png
new file mode 100644
index 00000000000..03ee8ce33ac
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.user/setting_up_eclipse_cdt/src/xcode2.png
Binary files differ
diff --git a/doc/org.eclipse.cdt.doc.user/tasks/cdt_t_comment_out.htm b/doc/org.eclipse.cdt.doc.user/tasks/cdt_t_comment_out.htm
index d1829f923a7..c62ddfd792c 100644
--- a/doc/org.eclipse.cdt.doc.user/tasks/cdt_t_comment_out.htm
+++ b/doc/org.eclipse.cdt.doc.user/tasks/cdt_t_comment_out.htm
@@ -25,7 +25,7 @@ described above.</p>
<p>To toggle <samp>//</samp> comments on code:</p>
<ol>
- <li>In the C/C++ editor, select the line(s) of code that you want to comment out. If no lines are selected comments will be added (or removed) at the current cursor position.</li>
+ <li>In the C/C++ editor, select the line(s) of code that you want to comment out. If no lines are selected comments will be added (or removed) at the start of the lines containing the cursor.</li>
<li>Right-click and select <strong>Source &gt; Toggle Comment</strong>. (<samp>CTRL+/</samp>)</li>
</ul>
</ol>
diff --git a/doc/org.eclipse.cdt.doc.user/tasks/cdt_t_rename.htm b/doc/org.eclipse.cdt.doc.user/tasks/cdt_t_rename.htm
index 2f96212125a..2f96212125a 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/tasks/cdt_t_rename.htm
+++ b/doc/org.eclipse.cdt.doc.user/tasks/cdt_t_rename.htm
diff --git a/doc/org.eclipse.cdt.doc.user/tasks/cdt_t_toggle.htm b/doc/org.eclipse.cdt.doc.user/tasks/cdt_t_toggle.htm
index a62fd373ff8..a62fd373ff8 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/tasks/cdt_t_toggle.htm
+++ b/doc/org.eclipse.cdt.doc.user/tasks/cdt_t_toggle.htm
diff --git a/doc/org.eclipse.cdt.doc.user/topics_Reference.xml b/doc/org.eclipse.cdt.doc.user/topics_Reference.xml
index 5d56d274f15..5d56d274f15 100755..100644
--- a/doc/org.eclipse.cdt.doc.user/topics_Reference.xml
+++ b/doc/org.eclipse.cdt.doc.user/topics_Reference.xml
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui.tests/.classpath b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui.tests/.classpath
index eca7bdba8f0..a42a828e04a 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui.tests/.classpath
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui.tests/.classpath
@@ -1,7 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="src" path="src"/>
+ <classpathentry kind="src" path="src">
+ <attributes>
+ <attribute name="test" value="true"/>
+ </attributes>
+ </classpathentry>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui.tests/.settings/org.eclipse.core.resources.prefs b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui.tests/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui.tests/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui.tests/.settings/org.eclipse.jdt.core.prefs b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui.tests/.settings/org.eclipse.jdt.core.prefs
index ad05599159f..5b1c443114d 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui.tests/.settings/org.eclipse.jdt.core.prefs
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui.tests/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui.tests/.settings/org.eclipse.jdt.ui.prefs b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui.tests/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui.tests/.settings/org.eclipse.jdt.ui.prefs
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui.tests/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui.tests/META-INF/MANIFEST.MF b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui.tests/META-INF/MANIFEST.MF
index b15e28d8683..e900467ff4c 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui.tests/META-INF/MANIFEST.MF
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui.tests/META-INF/MANIFEST.MF
@@ -1,11 +1,11 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
-Bundle-Name: DSF-GDB test fragment
+Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui.tests;singleton:=true
-Bundle-Vendor: Eclipse CDT
+Bundle-Vendor: %providerName
Bundle-Version: 1.0.0.qualifier
Fragment-Host: org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Require-Bundle: org.junit
Automatic-Module-Name: org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui.tests
-
+Bundle-Localization: fragment
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui.tests/about.html b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui.tests/about.html
index 164f781a8fd..b3134865230 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui.tests/about.html
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui.tests/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui.tests/build.properties b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui.tests/build.properties
index 8ce195fb7bd..7f5203c2173 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui.tests/build.properties
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui.tests/build.properties
@@ -15,5 +15,6 @@ source.. = src/
output.. = bin/
bin.includes = META-INF/,\
.,\
+ fragment.properties,\
about.html
src.includes = about.html
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui.tests/fragment.properties b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui.tests/fragment.properties
new file mode 100644
index 00000000000..c8b196ea741
--- /dev/null
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui.tests/fragment.properties
@@ -0,0 +1,14 @@
+##################################################################################
+# Copyright (c) 2020 Torbjörn Svensson and others. All rights reserved.
+# This program and the accompanying materials are made available under the terms
+# of the Eclipse Public License 2.0 which accompanies this distribution, and is
+# available at https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Torbjörn Svensson - initial API and implementation
+##################################################################################
+
+pluginName = DSF-GDB test fragment
+providerName = Eclipse CDT
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/.classpath b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/.classpath
index 110168ffa19..df1b324f7f4 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/.classpath
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="resources"/>
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/.settings/org.eclipse.core.resources.prefs b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/.settings/org.eclipse.jdt.core.prefs b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/.settings/org.eclipse.jdt.core.prefs
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/.settings/org.eclipse.jdt.ui.prefs b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/.settings/org.eclipse.jdt.ui.prefs
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/META-INF/MANIFEST.MF b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/META-INF/MANIFEST.MF
index 65affe78d02..15cf1328c36 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/META-INF/MANIFEST.MF
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@ Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-Vendor: %providerName
Bundle-SymbolicName: org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui;singleton:=true
-Bundle-Version: 1.1.100.qualifier
+Bundle-Version: 1.2.500.qualifier
Bundle-Activator: org.eclipse.cdt.dsf.gdb.multicorevisualizer.internal.ui.MulticoreVisualizerUIPlugin
Bundle-Localization: plugin
Require-Bundle: org.eclipse.ui,
@@ -18,8 +18,7 @@ Require-Bundle: org.eclipse.ui,
org.eclipse.cdt.core,
org.eclipse.cdt.debug.ui
Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Import-Package: com.ibm.icu.text
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Export-Package: org.eclipse.cdt.dsf.gdb.multicorevisualizer.internal.ui;x-internal:=true,
org.eclipse.cdt.dsf.gdb.multicorevisualizer.internal.ui.actions;x-internal:=true,
org.eclipse.cdt.dsf.gdb.multicorevisualizer.internal.ui.model;x-internal:=true,
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/about.html b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/about.html
index 164f781a8fd..b3134865230 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/about.html
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/about.ini b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/about.ini
new file mode 100644
index 00000000000..e07a7bb377e
--- /dev/null
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/about.ini
@@ -0,0 +1,24 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%blurb
+
+# Property "windowImage" contains path to window icon (16x16)
+# needed for primary features only
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=cdt_logo_icon32.png
+
+# Property "aboutImage" contains path to product image (500x330 or 115x164)
+# needed for primary features only
+
+# Property "appName" contains name of the application (translated)
+# needed for primary features only
+
+# Property "welcomePerspective" contains the id of the perspective in which the
+# welcome page is to be opened.
+# optional
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/about.mappings b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/about.mappings
new file mode 100644
index 00000000000..936a8039c3e
--- /dev/null
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/about.mappings
@@ -0,0 +1,9 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+# The following should contain the build version.
+# e.g. "0=20200106-1728"
+# This value will be added automatically via the build scripts
+0=${buildId}
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/about.properties b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/about.properties
new file mode 100644
index 00000000000..6f6190663d1
--- /dev/null
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/about.properties
@@ -0,0 +1,32 @@
+###############################################################################
+# Copyright (c) 2012, 2022 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+# about.properties
+# contains externalized strings for about.ini
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# fill-ins are supplied by about.mappings
+# This file should be translated.
+# NOTE TO TRANSLATOR: Please do not translate the featureVersion variable.
+
+
+blurb=C/C++ Multicore Visualizer\n\
+\n\
+Version: {featureVersion}\n\
+Build id: {0}\n\
+\n\
+Copyright (c) 2012, 2022 Contributors to the Eclipse Foundation
+\n\
+See the NOTICE file(s) distributed with this work for additional\n\
+information regarding copyright ownership.\n\
+\n\
+Visit http://www.eclipse.org/cdt
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/build.properties b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/build.properties
index 502748feff0..3442ec15707 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/build.properties
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/build.properties
@@ -18,5 +18,9 @@ bin.includes = META-INF/,\
.,\
plugin.xml,\
about.html,\
- plugin.properties
+ plugin.properties,\
+ cdt_logo_icon32.png,\
+ about.properties,\
+ about.mappings,\
+ about.ini
src.includes = about.html
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/cdt_logo_icon32.png b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/cdt_logo_icon32.png
new file mode 100644
index 00000000000..470ca81b327
--- /dev/null
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/cdt_logo_icon32.png
Binary files differ
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/MulticoreVisualizerUIPlugin.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/MulticoreVisualizerUIPlugin.java
index bff0abfff8d..ab287bb7d8b 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/MulticoreVisualizerUIPlugin.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/MulticoreVisualizerUIPlugin.java
@@ -29,6 +29,7 @@ import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.osgi.framework.BundleContext;
@@ -162,7 +163,7 @@ public class MulticoreVisualizerUIPlugin extends AbstractUIPlugin {
return debugDialogShell;
debugDialogShell = null;
}
- IWorkbenchWindow[] windows = getDefault().getWorkbench().getWorkbenchWindows();
+ IWorkbenchWindow[] windows = PlatformUI.getWorkbench().getWorkbenchWindows();
return windows[0].getShell();
}
@@ -176,7 +177,7 @@ public class MulticoreVisualizerUIPlugin extends AbstractUIPlugin {
* @return the active workbench window
*/
public static IWorkbenchWindow getActiveWorkbenchWindow() {
- return getDefault().getWorkbench().getActiveWorkbenchWindow();
+ return PlatformUI.getWorkbench().getActiveWorkbenchWindow();
}
public static IWorkbenchPage getActivePage() {
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/model/VisualizerCPU.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/model/VisualizerCPU.java
index f46ab084044..f46ab084044 100755..100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/model/VisualizerCPU.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/model/VisualizerCPU.java
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/model/VisualizerCore.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/model/VisualizerCore.java
index a805a771649..a805a771649 100755..100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/model/VisualizerCore.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/model/VisualizerCore.java
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/model/VisualizerModel.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/model/VisualizerModel.java
index 4993789bb66..4993789bb66 100755..100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/model/VisualizerModel.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/model/VisualizerModel.java
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/model/VisualizerThread.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/model/VisualizerThread.java
index dfbd3e6568a..dfbd3e6568a 100755..100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/model/VisualizerThread.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/model/VisualizerThread.java
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/view/MulticoreVisualizer.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/view/MulticoreVisualizer.java
index 590ada80ba2..590ada80ba2 100755..100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/view/MulticoreVisualizer.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/view/MulticoreVisualizer.java
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/view/MulticoreVisualizerCPU.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/view/MulticoreVisualizerCPU.java
index 1df20214f3a..1df20214f3a 100755..100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/view/MulticoreVisualizerCPU.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/view/MulticoreVisualizerCPU.java
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/view/MulticoreVisualizerCanvas.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/view/MulticoreVisualizerCanvas.java
index 6522395653f..6522395653f 100755..100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/view/MulticoreVisualizerCanvas.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/view/MulticoreVisualizerCanvas.java
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/view/MulticoreVisualizerCore.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/view/MulticoreVisualizerCore.java
index 1a572621018..1a572621018 100755..100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/view/MulticoreVisualizerCore.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/view/MulticoreVisualizerCore.java
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/view/MulticoreVisualizerGraphicObject.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/view/MulticoreVisualizerGraphicObject.java
index 31f7d2ce5fe..31f7d2ce5fe 100755..100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/view/MulticoreVisualizerGraphicObject.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/view/MulticoreVisualizerGraphicObject.java
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/view/MulticoreVisualizerThread.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/view/MulticoreVisualizerThread.java
index 30321422a67..30321422a67 100755..100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/view/MulticoreVisualizerThread.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/view/MulticoreVisualizerThread.java
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/utils/DSFSessionState.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/utils/DSFSessionState.java
index 0d92af792c0..0d92af792c0 100755..100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/utils/DSFSessionState.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/utils/DSFSessionState.java
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/utils/DebugViewUtils.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/utils/DebugViewUtils.java
index 100ea8841ea..5d24739af47 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/utils/DebugViewUtils.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/utils/DebugViewUtils.java
@@ -49,7 +49,7 @@ public class DebugViewUtils {
/** Gets workbench view (if any) with specified ID. */
public static IViewPart getViewWithID(String viewID) {
final String viewID_f = viewID;
- RunnableWithResult<IViewPart> runnable = new RunnableWithResult<IViewPart>() {
+ RunnableWithResult<IViewPart> runnable = new RunnableWithResult<>() {
@Override
public IViewPart call() {
IViewPart view = null;
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/.classpath b/dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/.classpath
index eca7bdba8f0..a42a828e04a 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/.classpath
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/.classpath
@@ -1,7 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="src" path="src"/>
+ <classpathentry kind="src" path="src">
+ <attributes>
+ <attribute name="test" value="true"/>
+ </attributes>
+ </classpathentry>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/.settings/org.eclipse.core.resources.prefs b/dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/.settings/org.eclipse.jdt.core.prefs b/dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/.settings/org.eclipse.jdt.core.prefs
index ad05599159f..5b1c443114d 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/.settings/org.eclipse.jdt.core.prefs
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/.settings/org.eclipse.jdt.ui.prefs b/dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/.settings/org.eclipse.jdt.ui.prefs
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/META-INF/MANIFEST.MF b/dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/META-INF/MANIFEST.MF
index 222d010a161..706cee8ee77 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/META-INF/MANIFEST.MF
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/META-INF/MANIFEST.MF
@@ -1,10 +1,11 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
-Bundle-Name: DSF-GDB test fragment
+Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.dsf.gdb.tests;singleton:=true
-Bundle-Vendor: Eclipse CDT
+Bundle-Vendor: %providerName
Bundle-Version: 1.0.0.qualifier
Fragment-Host: org.eclipse.cdt.dsf.gdb
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Require-Bundle: org.junit;bundle-version="4.8.1"
Automatic-Module-Name: org.eclipse.cdt.dsf.gdb.tests
+Bundle-Localization: fragment
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/about.html b/dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/about.html
index 164f781a8fd..b3134865230 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/about.html
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/build.properties b/dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/build.properties
index 3c35b53126e..9dd6ce760aa 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/build.properties
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/build.properties
@@ -15,5 +15,6 @@ source.. = src/
output.. = bin/
bin.includes = META-INF/,\
.,\
+ fragment.properties,\
about.html
src.includes = about.html
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/fragment.properties b/dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/fragment.properties
new file mode 100644
index 00000000000..c8b196ea741
--- /dev/null
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/fragment.properties
@@ -0,0 +1,14 @@
+##################################################################################
+# Copyright (c) 2020 Torbjörn Svensson and others. All rights reserved.
+# This program and the accompanying materials are made available under the terms
+# of the Eclipse Public License 2.0 which accompanies this distribution, and is
+# available at https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Torbjörn Svensson - initial API and implementation
+##################################################################################
+
+pluginName = DSF-GDB test fragment
+providerName = Eclipse CDT
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/src/org/eclipse/cdt/dsf/gdb/service/GDBRegisterTest.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/src/org/eclipse/cdt/dsf/gdb/service/GDBRegisterTest.java
index 4b7a9dfe4f4..dc49cf07a73 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/src/org/eclipse/cdt/dsf/gdb/service/GDBRegisterTest.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/src/org/eclipse/cdt/dsf/gdb/service/GDBRegisterTest.java
@@ -18,9 +18,7 @@ import static org.junit.Assert.assertTrue;
import java.util.Arrays;
import org.eclipse.cdt.debug.internal.core.model.IRegisterGroupDescriptor;
-import org.eclipse.cdt.dsf.datamodel.DMContexts;
import org.eclipse.cdt.dsf.debug.service.IProcesses.IProcessDMContext;
-import org.eclipse.cdt.dsf.debug.service.IRunControl.IContainerDMContext;
import org.eclipse.cdt.dsf.mi.service.IMIContainerDMContext;
import org.eclipse.cdt.dsf.mi.service.MIProcesses;
import org.eclipse.cdt.dsf.mi.service.MIRegisters.MIRegisterDMC;
@@ -130,72 +128,4 @@ public class GDBRegisterTest extends CommonDsfTest {
assertTrue(Arrays.equals(expectedRegisterGroups, savedRegisterGroups));
}
-
- /* ----------------- ----------------- */
-
- /**
- * Variant of {@link GDBRegisterTest} where register groups are saved without a container id.
- * This is the default behavior for register group persistence.
- */
- public static class GDBRegisterTest_NoContainerTest extends GDBRegisterTest {
-
- @Override
- protected GDBRegisters createGdbRegisters() {
- return new GDBRegisters(fSession) {
- @Override
- protected boolean useProcessIdAsRegisterGroupPersistanceId() {
- return false;
- }
- };
- }
-
- @Override
- protected void checkAfterAdding_GroupA(IMIContainerDMContext containerA, IMIContainerDMContext containerB,
- MIRegisterGroupDMC registerGroupA) {
- checkRegisterGroupMemento(containerA, registerGroupA);
- checkRegisterGroupMemento(containerB, registerGroupA);
- }
-
- @Override
- protected void checkAfterAdding_GroupB(IMIContainerDMContext containerA, IMIContainerDMContext containerB,
- MIRegisterGroupDMC registerGroupA, MIRegisterGroupDMC registerGroupB) {
- checkRegisterGroupsMemento(containerA, array(registerGroupA, registerGroupB));
- checkRegisterGroupsMemento(containerB, array(registerGroupA, registerGroupB));
- }
- }
-
- public static class GDBRegisterTest_WithAlternativeProcessIdTest extends GDBRegisterTest {
-
- @Override
- protected GDBRegisters createGdbRegisters() {
- return new GDBRegisters(fSession) {
- @Override
- protected boolean useProcessIdAsRegisterGroupPersistanceId() {
- return true;
- }
-
- @Override
- protected String getPersistenceIdForRegisterGroupContainer(IContainerDMContext contDmc) {
- return super.getPersistenceIdForRegisterGroupContainer(contDmc) + "XXX";
- }
- };
- }
-
- }
-
- public static class GDBRegisterTest_WithContainerDMContextTest extends GDBRegisterTest {
-
- @Override
- protected GDBRegisters createGdbRegisters() {
- return new GDBRegisters(fSession) {
- @Override
- protected String getPersistenceIdForRegisterGroupContainer(IContainerDMContext contDmc) {
- IMIContainerDMContext contextDmc = DMContexts.getAncestorOfType(contDmc,
- IMIContainerDMContext.class);
- return contextDmc.getGroupId();
- }
- };
- }
-
- }
} \ No newline at end of file
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/src/org/eclipse/cdt/dsf/gdb/service/GDBRegisterTest_NoContainerTest.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/src/org/eclipse/cdt/dsf/gdb/service/GDBRegisterTest_NoContainerTest.java
new file mode 100644
index 00000000000..ca541e40f4f
--- /dev/null
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/src/org/eclipse/cdt/dsf/gdb/service/GDBRegisterTest_NoContainerTest.java
@@ -0,0 +1,35 @@
+package org.eclipse.cdt.dsf.gdb.service;
+
+import org.eclipse.cdt.dsf.mi.service.IMIContainerDMContext;
+import org.eclipse.cdt.dsf.mi.service.MIRegisters.MIRegisterGroupDMC;
+
+/**
+ * Variant of {@link GDBRegisterTest} where register groups are saved without a container id.
+ * This is the default behavior for register group persistence.
+ */
+public class GDBRegisterTest_NoContainerTest extends GDBRegisterTest {
+
+ @Override
+ protected GDBRegisters createGdbRegisters() {
+ return new GDBRegisters(fSession) {
+ @Override
+ protected boolean useProcessIdAsRegisterGroupPersistanceId() {
+ return false;
+ }
+ };
+ }
+
+ @Override
+ protected void checkAfterAdding_GroupA(IMIContainerDMContext containerA, IMIContainerDMContext containerB,
+ MIRegisterGroupDMC registerGroupA) {
+ checkRegisterGroupMemento(containerA, registerGroupA);
+ checkRegisterGroupMemento(containerB, registerGroupA);
+ }
+
+ @Override
+ protected void checkAfterAdding_GroupB(IMIContainerDMContext containerA, IMIContainerDMContext containerB,
+ MIRegisterGroupDMC registerGroupA, MIRegisterGroupDMC registerGroupB) {
+ checkRegisterGroupsMemento(containerA, array(registerGroupA, registerGroupB));
+ checkRegisterGroupsMemento(containerB, array(registerGroupA, registerGroupB));
+ }
+} \ No newline at end of file
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/src/org/eclipse/cdt/dsf/gdb/service/GDBRegisterTest_WithAlternativeProcessIdTest.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/src/org/eclipse/cdt/dsf/gdb/service/GDBRegisterTest_WithAlternativeProcessIdTest.java
new file mode 100644
index 00000000000..f303baf9138
--- /dev/null
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/src/org/eclipse/cdt/dsf/gdb/service/GDBRegisterTest_WithAlternativeProcessIdTest.java
@@ -0,0 +1,22 @@
+package org.eclipse.cdt.dsf.gdb.service;
+
+import org.eclipse.cdt.dsf.debug.service.IRunControl.IContainerDMContext;
+
+public class GDBRegisterTest_WithAlternativeProcessIdTest extends GDBRegisterTest {
+
+ @Override
+ protected GDBRegisters createGdbRegisters() {
+ return new GDBRegisters(fSession) {
+ @Override
+ protected boolean useProcessIdAsRegisterGroupPersistanceId() {
+ return true;
+ }
+
+ @Override
+ protected String getPersistenceIdForRegisterGroupContainer(IContainerDMContext contDmc) {
+ return super.getPersistenceIdForRegisterGroupContainer(contDmc) + "XXX";
+ }
+ };
+ }
+
+} \ No newline at end of file
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/src/org/eclipse/cdt/dsf/gdb/service/GDBRegisterTest_WithContainerDMContextTest.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/src/org/eclipse/cdt/dsf/gdb/service/GDBRegisterTest_WithContainerDMContextTest.java
new file mode 100644
index 00000000000..f7c3cc4dc0f
--- /dev/null
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/src/org/eclipse/cdt/dsf/gdb/service/GDBRegisterTest_WithContainerDMContextTest.java
@@ -0,0 +1,20 @@
+package org.eclipse.cdt.dsf.gdb.service;
+
+import org.eclipse.cdt.dsf.datamodel.DMContexts;
+import org.eclipse.cdt.dsf.debug.service.IRunControl.IContainerDMContext;
+import org.eclipse.cdt.dsf.mi.service.IMIContainerDMContext;
+
+public class GDBRegisterTest_WithContainerDMContextTest extends GDBRegisterTest {
+
+ @Override
+ protected GDBRegisters createGdbRegisters() {
+ return new GDBRegisters(fSession) {
+ @Override
+ protected String getPersistenceIdForRegisterGroupContainer(IContainerDMContext contDmc) {
+ IMIContainerDMContext contextDmc = DMContexts.getAncestorOfType(contDmc, IMIContainerDMContext.class);
+ return contextDmc.getGroupId();
+ }
+ };
+ }
+
+} \ No newline at end of file
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/src/org/eclipse/cdt/dsf/gdb/tests/AutomatedIntegrationSuite.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/src/org/eclipse/cdt/dsf/gdb/tests/AutomatedIntegrationSuite.java
index 9bdce96b080..7422dee7733 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/src/org/eclipse/cdt/dsf/gdb/tests/AutomatedIntegrationSuite.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/src/org/eclipse/cdt/dsf/gdb/tests/AutomatedIntegrationSuite.java
@@ -14,9 +14,9 @@
package org.eclipse.cdt.dsf.gdb.tests;
import org.eclipse.cdt.dsf.gdb.service.GDBRegisterTest;
-import org.eclipse.cdt.dsf.gdb.service.GDBRegisterTest.GDBRegisterTest_NoContainerTest;
-import org.eclipse.cdt.dsf.gdb.service.GDBRegisterTest.GDBRegisterTest_WithAlternativeProcessIdTest;
-import org.eclipse.cdt.dsf.gdb.service.GDBRegisterTest.GDBRegisterTest_WithContainerDMContextTest;
+import org.eclipse.cdt.dsf.gdb.service.GDBRegisterTest_NoContainerTest;
+import org.eclipse.cdt.dsf.gdb.service.GDBRegisterTest_WithAlternativeProcessIdTest;
+import org.eclipse.cdt.dsf.gdb.service.GDBRegisterTest_WithContainerDMContextTest;
import org.eclipse.cdt.dsf.mi.service.command.commands.TestMIBreakInsertCommand;
import org.eclipse.cdt.dsf.mi.service.command.commands.TestMICommandConstructCommand;
import org.eclipse.cdt.dsf.mi.service.command.commands.TestMIGDBSetSysroot;
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/src/org/eclipse/cdt/dsf/gdb/tests/FilePartsTest.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/src/org/eclipse/cdt/dsf/gdb/tests/FilePartsTest.java
index e46bddcc59a..bf17f769d46 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/src/org/eclipse/cdt/dsf/gdb/tests/FilePartsTest.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.tests/src/org/eclipse/cdt/dsf/gdb/tests/FilePartsTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2016 Kichwa Coders AB and others.
+ * Copyright (c) 2016 Kichwa Coders Ltd and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/.classpath b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/.classpath
index 22f30643cba..e801ebfb468 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/.classpath
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/.classpath
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/.settings/org.eclipse.core.resources.prefs b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/.settings/org.eclipse.jdt.core.prefs b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/.settings/org.eclipse.jdt.core.prefs
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/.settings/org.eclipse.jdt.ui.prefs b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/.settings/org.eclipse.jdt.ui.prefs
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/META-INF/MANIFEST.MF b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/META-INF/MANIFEST.MF
index d8a7d4c4ef6..ac29e713cc0 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/META-INF/MANIFEST.MF
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@ Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-Vendor: %providerName
Bundle-SymbolicName: org.eclipse.cdt.dsf.gdb.ui;singleton:=true
-Bundle-Version: 2.6.400.qualifier
+Bundle-Version: 2.7.500.qualifier
Bundle-Activator: org.eclipse.cdt.dsf.gdb.internal.ui.GdbUIPlugin
Bundle-Localization: plugin
Require-Bundle: org.eclipse.ui,
@@ -12,7 +12,7 @@ Require-Bundle: org.eclipse.ui,
org.eclipse.cdt.dsf.ui,
org.eclipse.debug.ui,
org.eclipse.cdt.debug.core,
- org.eclipse.cdt.dsf.gdb;bundle-version="[5.5.0,6.0.0)",
+ org.eclipse.cdt.dsf.gdb;bundle-version="[6.0.0,7.0.0)",
org.eclipse.cdt.debug.ui,
org.eclipse.cdt.core,
org.eclipse.cdt.ui,
@@ -30,13 +30,15 @@ Require-Bundle: org.eclipse.ui,
org.eclipse.cdt.native.serial;bundle-version="1.1.100",
org.eclipse.launchbar.ui;bundle-version="2.3.0"
Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Export-Package: org.eclipse.cdt.dsf.gdb.internal.ui;x-friends:="org.eclipse.cdt.docker.launcher",
org.eclipse.cdt.dsf.gdb.internal.ui.actions;x-friends:="org.eclipse.cdt.examples.dsf.gdb",
org.eclipse.cdt.dsf.gdb.internal.ui.breakpoints;x-internal:=true,
org.eclipse.cdt.dsf.gdb.internal.ui.commands;x-internal:=true,
org.eclipse.cdt.dsf.gdb.internal.ui.console;x-friends:="org.eclipse.cdt.examples.dsf.gdb",
org.eclipse.cdt.dsf.gdb.internal.ui.console.actions;x-internal:=true,
+ org.eclipse.cdt.dsf.gdb.internal.ui.debugsources;x-internal:=true,
+ org.eclipse.cdt.dsf.gdb.internal.ui.debugsources.actions;x-internal:=true,
org.eclipse.cdt.dsf.gdb.internal.ui.disassembly;x-internal:=true,
org.eclipse.cdt.dsf.gdb.internal.ui.launching;x-friends:="org.eclipse.cdt.debug.gdbjtag.ui,org.eclipse.cdt.examples.dsf.gdb,org.eclipse.cdt.docker.launcher",
org.eclipse.cdt.dsf.gdb.internal.ui.memory;x-internal:=true,
@@ -49,5 +51,4 @@ Export-Package: org.eclipse.cdt.dsf.gdb.internal.ui;x-friends:="org.eclipse.cdt.
org.eclipse.cdt.dsf.gdb.internal.ui.viewmodel.breakpoints;x-internal:=true,
org.eclipse.cdt.dsf.gdb.internal.ui.viewmodel.commands;x-internal:=true,
org.eclipse.cdt.dsf.gdb.internal.ui.viewmodel.launch;x-internal:=true
-Import-Package: com.ibm.icu.text
Automatic-Module-Name: org.eclipse.cdt.dsf.gdb.ui
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/about.html b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/about.html
index 164f781a8fd..b3134865230 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/about.html
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/about.ini b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/about.ini
new file mode 100644
index 00000000000..e07a7bb377e
--- /dev/null
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/about.ini
@@ -0,0 +1,24 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%blurb
+
+# Property "windowImage" contains path to window icon (16x16)
+# needed for primary features only
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=cdt_logo_icon32.png
+
+# Property "aboutImage" contains path to product image (500x330 or 115x164)
+# needed for primary features only
+
+# Property "appName" contains name of the application (translated)
+# needed for primary features only
+
+# Property "welcomePerspective" contains the id of the perspective in which the
+# welcome page is to be opened.
+# optional
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/about.mappings b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/about.mappings
new file mode 100644
index 00000000000..936a8039c3e
--- /dev/null
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/about.mappings
@@ -0,0 +1,9 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+# The following should contain the build version.
+# e.g. "0=20200106-1728"
+# This value will be added automatically via the build scripts
+0=${buildId}
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/about.properties b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/about.properties
new file mode 100644
index 00000000000..6c4bee154ea
--- /dev/null
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/about.properties
@@ -0,0 +1,32 @@
+###############################################################################
+# Copyright (c) 2009, 2022 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+# about.properties
+# contains externalized strings for about.ini
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# fill-ins are supplied by about.mappings
+# This file should be translated.
+# NOTE TO TRANSLATOR: Please do not translate the featureVersion variable.
+
+
+blurb=C/C++ DSF GDB Debugger Integration\n\
+\n\
+Version: {featureVersion}\n\
+Build id: {0}\n\
+\n\
+Copyright (c) 2009, 2022 Contributors to the Eclipse Foundation
+\n\
+See the NOTICE file(s) distributed with this work for additional\n\
+information regarding copyright ownership.\n\
+\n\
+Visit http://www.eclipse.org/cdt
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/build.properties b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/build.properties
index 5678143efcc..48c97b80342 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/build.properties
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/build.properties
@@ -18,5 +18,9 @@ bin.includes = META-INF/,\
plugin.xml,\
about.html,\
icons/,\
- plugin.properties
+ plugin.properties,\
+ cdt_logo_icon32.png,\
+ about.properties,\
+ about.mappings,\
+ about.ini
src.includes = about.html
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/cdt_logo_icon32.png b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/cdt_logo_icon32.png
new file mode 100644
index 00000000000..470ca81b327
--- /dev/null
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/cdt_logo_icon32.png
Binary files differ
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/dlcl16/flatLayout.png b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/dlcl16/flatLayout.png
new file mode 100644
index 00000000000..061b593caa2
--- /dev/null
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/dlcl16/flatLayout.png
Binary files differ
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/dlcl16/flatLayout@2x.png b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/dlcl16/flatLayout@2x.png
new file mode 100644
index 00000000000..23540f72b63
--- /dev/null
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/dlcl16/flatLayout@2x.png
Binary files differ
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/dlcl16/hierarchicalLayout.png b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/dlcl16/hierarchicalLayout.png
new file mode 100644
index 00000000000..64822eaa0d8
--- /dev/null
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/dlcl16/hierarchicalLayout.png
Binary files differ
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/dlcl16/hierarchicalLayout@2x.png b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/dlcl16/hierarchicalLayout@2x.png
new file mode 100644
index 00000000000..b84fb01bf15
--- /dev/null
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/dlcl16/hierarchicalLayout@2x.png
Binary files differ
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/elcl16/collapse_all.gif b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/elcl16/collapse_all.gif
new file mode 100644
index 00000000000..b004e7c3374
--- /dev/null
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/elcl16/collapse_all.gif
Binary files differ
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/elcl16/existingFiles.gif b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/elcl16/existingFiles.gif
new file mode 100644
index 00000000000..b226e41c527
--- /dev/null
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/elcl16/existingFiles.gif
Binary files differ
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/elcl16/expand_all.gif b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/elcl16/expand_all.gif
new file mode 100644
index 00000000000..d66de6d100e
--- /dev/null
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/elcl16/expand_all.gif
Binary files differ
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/elcl16/flatLayout.png b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/elcl16/flatLayout.png
new file mode 100644
index 00000000000..13f83a23741
--- /dev/null
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/elcl16/flatLayout.png
Binary files differ
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/elcl16/flatLayout@2x.png b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/elcl16/flatLayout@2x.png
new file mode 100644
index 00000000000..280561aeb4c
--- /dev/null
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/elcl16/flatLayout@2x.png
Binary files differ
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/elcl16/hierarchicalLayout.png b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/elcl16/hierarchicalLayout.png
new file mode 100644
index 00000000000..665aa5cee3a
--- /dev/null
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/elcl16/hierarchicalLayout.png
Binary files differ
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/elcl16/hierarchicalLayout@2x.png b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/elcl16/hierarchicalLayout@2x.png
new file mode 100644
index 00000000000..84039be3a93
--- /dev/null
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/elcl16/hierarchicalLayout@2x.png
Binary files differ
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/obj16/connect.gif b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/obj16/connect.gif
index 866ad338250..866ad338250 100755..100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/obj16/connect.gif
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/obj16/connect.gif
Binary files differ
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/obj16/reversestepinto.gif b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/obj16/reversestepinto.gif
index bda91578236..bda91578236 100755..100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/obj16/reversestepinto.gif
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/obj16/reversestepinto.gif
Binary files differ
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/obj16/reversestepover.gif b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/obj16/reversestepover.gif
index 95ea1f0496c..95ea1f0496c 100755..100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/obj16/reversestepover.gif
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/obj16/reversestepover.gif
Binary files differ
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/obj16/stop_visual_trace.gif b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/obj16/stop_visual_trace.gif
index 72b9f1964c2..72b9f1964c2 100755..100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/obj16/stop_visual_trace.gif
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/obj16/stop_visual_trace.gif
Binary files differ
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/obj16/uncall.gif b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/obj16/uncall.gif
index 8e7a780a358..8e7a780a358 100755..100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/obj16/uncall.gif
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/obj16/uncall.gif
Binary files differ
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/view16/debugsources_view.gif b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/view16/debugsources_view.gif
new file mode 100644
index 00000000000..37b47054630
--- /dev/null
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/view16/debugsources_view.gif
Binary files differ
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/wizban/advtosettings_wiz.png b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/wizban/advtosettings_wiz.png
index 7229ca07fd3..7229ca07fd3 100755..100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/wizban/advtosettings_wiz.png
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/wizban/advtosettings_wiz.png
Binary files differ
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/refresh.gif b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/refresh.gif
new file mode 100644
index 00000000000..b6b8dc6836d
--- /dev/null
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/refresh.gif
Binary files differ
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/plugin.properties b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/plugin.properties
index 14cee021f4b..bb0e517600e 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/plugin.properties
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/plugin.properties
@@ -36,6 +36,7 @@ tracepoints.action.page.label=Actions
tracepointActionsPrefPage.name=Tracepoint Actions\u0020
dynamicPrintf.property.common=Common
action.addDynamicPrintf.label=Add Dynamic-Printf...
+debugSourcesRefresh.name=Refresh
# Tracepoints
view.traceControl.name=Trace Control
@@ -59,6 +60,7 @@ action.fetchMoreChildren.label=Fetch More Children
# OS view
view.osresources.name=OS Resources
+view.debugsources.name=Debug Sources
command.connect.description = Connect to selected processes
command.connect.name = Connect
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/plugin.xml b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/plugin.xml
index 75ae7454c99..bc74c689b2f 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/plugin.xml
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/plugin.xml
@@ -296,6 +296,14 @@
name="%view.osresources.name"
icon="icons/full/view16/osresources_view.gif">
</view>
+ <view
+ category="org.eclipse.debug.ui"
+ class="org.eclipse.cdt.dsf.gdb.internal.ui.debugsources.DebugSourcesView"
+ icon="icons/full/view16/debugsources_view.gif"
+ id="org.eclipse.cdt.dsf.gdb.ui.debugsources.view"
+ name="%view.debugsources.name"
+ restorable="true">
+ </view>
</extension>
<extension
point="org.eclipse.ui.perspectiveExtensions">
@@ -327,6 +335,18 @@
id="org.eclipse.cdt.debug.ui.debuggerConsoleView">
</viewShortcut>
</perspectiveExtension>
+ <perspectiveExtension
+ targetID="org.eclipse.debug.ui.DebugPerspective">
+ <view
+ relative="org.eclipse.ui.console.ConsoleView"
+ visible="false"
+ relationship="stack"
+ id="org.eclipse.cdt.dsf.gdb.ui.debugsources.view">
+ </view>
+ <viewShortcut
+ id="org.eclipse.cdt.dsf.gdb.ui.debugsources.view">
+ </viewShortcut>
+ </perspectiveExtension>
</extension>
<extension
point="org.eclipse.ui.commands">
@@ -630,4 +650,25 @@
name="GDB Remote Serial">
</wizard2>
</extension>
+ <extension
+ point="org.eclipse.debug.ui.contextViewBindings">
+ <contextViewBinding
+ autoOpen="false"
+ contextId="org.eclipse.cdt.debug.ui.debugging"
+ viewId="org.eclipse.cdt.dsf.gdb.ui.debugsources.view">
+ </contextViewBinding>
+ </extension>
+ <extension point="org.eclipse.ui.viewActions">
+ <viewContribution
+ id="org.eclipse.cdt.dsf.gdb.ui.debugsources.view.refresh"
+ targetID="org.eclipse.cdt.dsf.gdb.ui.debugsources.view">
+ <action
+ class="org.eclipse.cdt.dsf.gdb.internal.ui.debugsources.actions.DebugSourcesViewRefresh"
+ icon="icons/refresh.gif"
+ id="org.eclipse.cdt.dsf.gdb.ui.debugsources.view.refresh"
+ label="%debugSourcesRefresh.name"
+ toolbarPath="additions">
+ </action>
+ </viewContribution>
+ </extension>
</plugin>
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/GdbPinProvider.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/GdbPinProvider.java
index e979d05e960..fb1c11fdfa4 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/GdbPinProvider.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/GdbPinProvider.java
@@ -133,7 +133,7 @@ public class GdbPinProvider implements IPinProvider {
IThreadDMData data = null;
final DsfServicesTracker tracker = new DsfServicesTracker(GdbUIPlugin.getBundleContext(), fSession.getId());
try {
- Query<IThreadDMData> query = new Query<IThreadDMData>() {
+ Query<IThreadDMData> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<IThreadDMData> rm) {
final IProcesses processes = tracker.getService(IProcesses.class);
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/GdbUIPlugin.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/GdbUIPlugin.java
index 44d8be2b0f7..d9e5011d5e5 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/GdbUIPlugin.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/GdbUIPlugin.java
@@ -34,6 +34,7 @@ import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.eclipse.ui.preferences.ScopedPreferenceStore;
import org.osgi.framework.BundleContext;
@@ -151,7 +152,7 @@ public class GdbUIPlugin extends AbstractUIPlugin {
return debugDialogShell;
debugDialogShell = null;
}
- IWorkbenchWindow[] windows = getDefault().getWorkbench().getWorkbenchWindows();
+ IWorkbenchWindow[] windows = PlatformUI.getWorkbench().getWorkbenchWindows();
return windows[0].getShell();
}
@@ -208,7 +209,7 @@ public class GdbUIPlugin extends AbstractUIPlugin {
* @return the active workbench window
*/
public static IWorkbenchWindow getActiveWorkbenchWindow() {
- return getDefault().getWorkbench().getActiveWorkbenchWindow();
+ return PlatformUI.getWorkbench().getActiveWorkbenchWindow();
}
public static IWorkbenchPage getActivePage() {
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/actions/GdbSteppingModeTarget.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/actions/GdbSteppingModeTarget.java
index d279ba86875..3e2d4274200 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/actions/GdbSteppingModeTarget.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/actions/GdbSteppingModeTarget.java
@@ -46,7 +46,7 @@ public class GdbSteppingModeTarget extends DsfSteppingModeTarget {
@Override
public boolean supportsInstructionStepping() {
- Query<Boolean> supportInstructionStepping = new Query<Boolean>() {
+ Query<Boolean> supportInstructionStepping = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Boolean> rm) {
IGDBBackend backend = fTracker.getService(IGDBBackend.class);
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbAbstractReverseStepCommand.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbAbstractReverseStepCommand.java
index eacb2c268f5..0c3b7bf5210 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbAbstractReverseStepCommand.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbAbstractReverseStepCommand.java
@@ -75,7 +75,7 @@ public abstract class GdbAbstractReverseStepCommand extends AbstractDebugCommand
}
final StepType stepType = getStepType();
- Query<Object> reverseStepQuery = new Query<Object>() {
+ Query<Object> reverseStepQuery = new Query<>() {
@Override
public void execute(DataRequestMonitor<Object> rm) {
IReverseRunControl runControl = fTracker.getService(IReverseRunControl.class);
@@ -111,7 +111,7 @@ public abstract class GdbAbstractReverseStepCommand extends AbstractDebugCommand
}
final StepType stepType = getStepType();
- Query<Boolean> canReverseQuery = new Query<Boolean>() {
+ Query<Boolean> canReverseQuery = new Query<>() {
@Override
public void execute(DataRequestMonitor<Boolean> rm) {
IReverseRunControl runControl = fTracker.getService(IReverseRunControl.class);
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbConnectCommand.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbConnectCommand.java
index 17cb1a2a6b6..538bc46e8d9 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbConnectCommand.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbConnectCommand.java
@@ -115,7 +115,7 @@ public class GdbConnectCommand extends RefreshableDebugCommand implements IConne
*/
@Override
public boolean canConnect() {
- Query<Boolean> canConnectQuery = new Query<Boolean>() {
+ Query<Boolean> canConnectQuery = new Query<>() {
@Override
public void execute(DataRequestMonitor<Boolean> rm) {
IProcesses procService = fTracker.getService(IProcesses.class);
@@ -271,7 +271,7 @@ public class GdbConnectCommand extends RefreshableDebugCommand implements IConne
@Override
protected void doExecute(Object[] targets, IProgressMonitor monitor, final IRequest request) throws CoreException {
- Query<Boolean> connectQuery = new Query<Boolean>() {
+ Query<Boolean> connectQuery = new Query<>() {
@Override
public void execute(final DataRequestMonitor<Boolean> rm) {
connect(new RequestMonitor(fExecutor, rm) {
@@ -417,39 +417,7 @@ public class GdbConnectCommand extends RefreshableDebugCommand implements IConne
new ImmediateDataRequestMonitor<List<String>>(rm) {
@Override
protected void handleSuccess() {
- List<String> dbgPids = getData();
-
- // Prompt the user to choose one or more processes
- new PromptForPidJob(
- LaunchUIMessages
- .getString("ProcessPrompter.PromptJob"), //$NON-NLS-1$
- procInfoList.toArray(
- new IProcessExtendedInfo[procInfoList
- .size()]),
- dbgPids,
- new DataRequestMonitor<Object>(fExecutor, rm) {
- @Override
- protected void handleCancel() {
- rm.cancel();
- rm.done();
- }
-
- @Override
- protected void handleSuccess() {
- Object data = getData();
- if (data instanceof IProcessExtendedInfo[]) {
- attachToProcesses(controlCtx,
- (IProcessExtendedInfo[]) data,
- rm);
- } else {
- rm.done(new Status(IStatus.ERROR,
- GdbUIPlugin.PLUGIN_ID,
- IDsfStatusConstants.INTERNAL_ERROR,
- "Invalid return type for process prompter", //$NON-NLS-1$
- null));
- }
- }
- }).schedule();
+ connectToProcesses(controlCtx, procInfoList, getData(), rm);
}
});
}
@@ -538,7 +506,43 @@ public class GdbConnectCommand extends RefreshableDebugCommand implements IConne
});
}
- private void attachToProcesses(final ICommandControlDMContext controlDmc, IProcessExtendedInfo[] processes,
+ /**
+ * This method is called by {@link #connect(RequestMonitor)}.<br>
+ * The default implementation schedules a {@link PromptForPidJob}, which calls
+ * {@link #attachToProcesses(ICommandControlDMContext, IProcessExtendedInfo[], RequestMonitor)} on success.
+ *
+ * @param controlDmc
+ * @param processes
+ * @param dbgPids
+ * @param rm
+ */
+ protected void connectToProcesses(final ICommandControlDMContext controlDmc,
+ final List<IProcessExtendedInfo> processes, List<String> debuggedProcesses, final RequestMonitor rm) {
+ // Prompt the user to choose one or more processes
+ new PromptForPidJob(LaunchUIMessages.getString("ProcessPrompter.PromptJob"), //$NON-NLS-1$
+ processes.toArray(new IProcessExtendedInfo[processes.size()]), debuggedProcesses,
+ new DataRequestMonitor<>(fExecutor, rm) {
+ @Override
+ protected void handleCancel() {
+ rm.cancel();
+ rm.done();
+ }
+
+ @Override
+ protected void handleSuccess() {
+ Object data = getData();
+ if (data instanceof IProcessExtendedInfo[]) {
+ attachToProcesses(controlDmc, (IProcessExtendedInfo[]) data, rm);
+ } else {
+ rm.done(new Status(IStatus.ERROR, GdbUIPlugin.PLUGIN_ID, IDsfStatusConstants.INTERNAL_ERROR,
+ "Invalid return type for process prompter", //$NON-NLS-1$
+ null));
+ }
+ }
+ }).schedule();
+ }
+
+ protected void attachToProcesses(final ICommandControlDMContext controlDmc, IProcessExtendedInfo[] processes,
final RequestMonitor rm) {
// For a local attach, GDB can figure out the binary automatically,
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbDebugNewExecutableCommand.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbDebugNewExecutableCommand.java
index d4948f90740..19d36b8032c 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbDebugNewExecutableCommand.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbDebugNewExecutableCommand.java
@@ -95,7 +95,7 @@ public class GdbDebugNewExecutableCommand extends RefreshableDebugCommand implem
public boolean canDebugNewExecutable() {
- Query<Boolean> canDebugQuery = new Query<Boolean>() {
+ Query<Boolean> canDebugQuery = new Query<>() {
@Override
public void execute(DataRequestMonitor<Boolean> rm) {
IProcesses procService = fTracker.getService(IProcesses.class);
@@ -157,7 +157,7 @@ public class GdbDebugNewExecutableCommand extends RefreshableDebugCommand implem
@Override
protected void doExecute(Object[] targets, IProgressMonitor monitor, IRequest request) throws CoreException {
- Query<Boolean> query = new Query<Boolean>() {
+ Query<Boolean> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Boolean> rm) {
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbResumeWithoutSignalCommand.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbResumeWithoutSignalCommand.java
index 80f2c0e05a5..77e1f445da4 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbResumeWithoutSignalCommand.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbResumeWithoutSignalCommand.java
@@ -64,7 +64,7 @@ public class GdbResumeWithoutSignalCommand extends AbstractDebugCommand implemen
return;
}
- Query<Object> query = new Query<Object>() {
+ Query<Object> query = new Query<>() {
@Override
public void execute(DataRequestMonitor<Object> rm) {
IRunControl runControl = fTracker.getService(IRunControl.class);
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbReverseResumeCommand.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbReverseResumeCommand.java
index 3a1a57092f8..b1593edf026 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbReverseResumeCommand.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbReverseResumeCommand.java
@@ -64,7 +64,7 @@ public class GdbReverseResumeCommand extends AbstractDebugCommand implements IRe
return;
}
- Query<Object> reverseResume = new Query<Object>() {
+ Query<Object> reverseResume = new Query<>() {
@Override
public void execute(DataRequestMonitor<Object> rm) {
IReverseRunControl runControl = fTracker.getService(IReverseRunControl.class);
@@ -99,7 +99,7 @@ public class GdbReverseResumeCommand extends AbstractDebugCommand implements IRe
return false;
}
- Query<Boolean> canReverseResume = new Query<Boolean>() {
+ Query<Boolean> canReverseResume = new Query<>() {
@Override
public void execute(DataRequestMonitor<Boolean> rm) {
IReverseRunControl runControl = fTracker.getService(IReverseRunControl.class);
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbReverseToggleCommand.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbReverseToggleCommand.java
index c69d5105bae..7270f44707a 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbReverseToggleCommand.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbReverseToggleCommand.java
@@ -118,7 +118,7 @@ public class GdbReverseToggleCommand extends AbstractDebugCommand implements ICh
return;
}
- Query<Object> setReverseMode = new Query<Object>() {
+ Query<Object> setReverseMode = new Query<>() {
@Override
public void execute(final DataRequestMonitor<Object> rm) {
final IReverseRunControl2 runControl = fTracker.getService(IReverseRunControl2.class);
@@ -209,7 +209,7 @@ public class GdbReverseToggleCommand extends AbstractDebugCommand implements ICh
return false;
}
- Query<Boolean> canSetReverseMode = new Query<Boolean>() {
+ Query<Boolean> canSetReverseMode = new Query<>() {
@Override
public void execute(DataRequestMonitor<Boolean> rm) {
IReverseRunControl runControl = fTracker.getService(IReverseRunControl.class);
@@ -273,7 +273,7 @@ public class GdbReverseToggleCommand extends AbstractDebugCommand implements ICh
return false;
}
- Query<Boolean> isToggledQuery = new Query<Boolean>() {
+ Query<Boolean> isToggledQuery = new Query<>() {
@Override
public void execute(final DataRequestMonitor<Boolean> rm) {
final IReverseRunControl runControl = fTracker.getService(IReverseRunControl.class);
@@ -349,7 +349,7 @@ public class GdbReverseToggleCommand extends AbstractDebugCommand implements ICh
return ReverseDebugMethod.OFF;
}
- Query<ReverseDebugMethod> reverseMethodQuery = new Query<ReverseDebugMethod>() {
+ Query<ReverseDebugMethod> reverseMethodQuery = new Query<>() {
@Override
public void execute(DataRequestMonitor<ReverseDebugMethod> rm) {
IReverseRunControl2 runControl = fTracker.getService(IReverseRunControl2.class);
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbSaveTraceDataCommand.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbSaveTraceDataCommand.java
index ed908246f2b..05155e7eae5 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbSaveTraceDataCommand.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbSaveTraceDataCommand.java
@@ -74,7 +74,7 @@ public class GdbSaveTraceDataCommand extends AbstractDebugCommand implements ISa
PlatformUI.getWorkbench().getDisplay().syncExec(() -> fileName[0] = promptForFileName());
if (fileName[0] != null) {
- Query<Object> saveTraceDataQuery = new Query<Object>() {
+ Query<Object> saveTraceDataQuery = new Query<>() {
@Override
public void execute(final DataRequestMonitor<Object> rm) {
IGDBTraceControl traceControl = fTracker.getService(IGDBTraceControl.class);
@@ -110,7 +110,7 @@ public class GdbSaveTraceDataCommand extends AbstractDebugCommand implements ISa
return false;
}
- Query<Boolean> canSaveQuery = new Query<Boolean>() {
+ Query<Boolean> canSaveQuery = new Query<>() {
@Override
public void execute(DataRequestMonitor<Boolean> rm) {
IGDBTraceControl traceControl = fTracker.getService(IGDBTraceControl.class);
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbSelectNextTraceRecordCommand.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbSelectNextTraceRecordCommand.java
index e5192e19f80..ea62787ef37 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbSelectNextTraceRecordCommand.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbSelectNextTraceRecordCommand.java
@@ -71,7 +71,7 @@ public class GdbSelectNextTraceRecordCommand extends AbstractDebugCommand implem
return;
}
- Query<Object> selectRecordQuery = new Query<Object>() {
+ Query<Object> selectRecordQuery = new Query<>() {
@Override
public void execute(final DataRequestMonitor<Object> rm) {
final IGDBTraceControl traceControl = fTracker.getService(IGDBTraceControl.class);
@@ -129,7 +129,7 @@ public class GdbSelectNextTraceRecordCommand extends AbstractDebugCommand implem
return false;
}
- Query<Boolean> canSelectRecordQuery = new Query<Boolean>() {
+ Query<Boolean> canSelectRecordQuery = new Query<>() {
@Override
public void execute(final DataRequestMonitor<Boolean> rm) {
IGDBTraceControl traceControl = fTracker.getService(IGDBTraceControl.class);
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbSelectPrevTraceRecordCommand.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbSelectPrevTraceRecordCommand.java
index 2fb085dcb5b..37c9deff147 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbSelectPrevTraceRecordCommand.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbSelectPrevTraceRecordCommand.java
@@ -73,7 +73,7 @@ public class GdbSelectPrevTraceRecordCommand extends AbstractDebugCommand implem
return;
}
- Query<Object> selectRecordQuery = new Query<Object>() {
+ Query<Object> selectRecordQuery = new Query<>() {
@Override
public void execute(final DataRequestMonitor<Object> rm) {
final IGDBTraceControl traceControl = fTracker.getService(IGDBTraceControl.class);
@@ -123,7 +123,7 @@ public class GdbSelectPrevTraceRecordCommand extends AbstractDebugCommand implem
return false;
}
- Query<Boolean> canSelectRecordQuery = new Query<Boolean>() {
+ Query<Boolean> canSelectRecordQuery = new Query<>() {
@Override
public void execute(final DataRequestMonitor<Boolean> rm) {
final IGDBTraceControl traceControl = fTracker.getService(IGDBTraceControl.class);
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbStartTracingCommand.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbStartTracingCommand.java
index f52ade7deb0..78c36635f71 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbStartTracingCommand.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbStartTracingCommand.java
@@ -66,7 +66,7 @@ public class GdbStartTracingCommand extends AbstractDebugCommand implements ISta
return;
}
- Query<Object> startTracingQuery = new Query<Object>() {
+ Query<Object> startTracingQuery = new Query<>() {
@Override
public void execute(final DataRequestMonitor<Object> rm) {
final IGDBTraceControl traceControl = fTracker.getService(IGDBTraceControl.class);
@@ -110,7 +110,7 @@ public class GdbStartTracingCommand extends AbstractDebugCommand implements ISta
return false;
}
- Query<Boolean> canStartTracingQuery = new Query<Boolean>() {
+ Query<Boolean> canStartTracingQuery = new Query<>() {
@Override
public void execute(DataRequestMonitor<Boolean> rm) {
IGDBTraceControl traceControl = fTracker.getService(IGDBTraceControl.class);
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbStopTracingCommand.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbStopTracingCommand.java
index b6c2de62f74..1a21cd7ac89 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbStopTracingCommand.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbStopTracingCommand.java
@@ -64,7 +64,7 @@ public class GdbStopTracingCommand extends AbstractDebugCommand implements IStop
return;
}
- Query<Object> stopTracingQuery = new Query<Object>() {
+ Query<Object> stopTracingQuery = new Query<>() {
@Override
public void execute(final DataRequestMonitor<Object> rm) {
IGDBTraceControl traceControl = fTracker.getService(IGDBTraceControl.class);
@@ -99,7 +99,7 @@ public class GdbStopTracingCommand extends AbstractDebugCommand implements IStop
return false;
}
- Query<Boolean> canStopTracingQuery = new Query<Boolean>() {
+ Query<Boolean> canStopTracingQuery = new Query<>() {
@Override
public void execute(DataRequestMonitor<Boolean> rm) {
IGDBTraceControl traceControl = fTracker.getService(IGDBTraceControl.class);
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/debugsources/DebugSourcesLabelProvider.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/debugsources/DebugSourcesLabelProvider.java
new file mode 100644
index 00000000000..8a72da8c42f
--- /dev/null
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/debugsources/DebugSourcesLabelProvider.java
@@ -0,0 +1,119 @@
+/*******************************************************************************
+ * Copyright (c) 2018, 2019 Kichwa Coders Ltd and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Baha El-Kassaby - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.dsf.gdb.internal.ui.debugsources;
+
+import java.io.File;
+import java.util.Set;
+
+import org.eclipse.cdt.dsf.gdb.internal.ui.debugsources.DebugSourcesTreeElement.FileExist;
+import org.eclipse.jface.viewers.ColumnLabelProvider;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.widgets.Display;
+
+public class DebugSourcesLabelProvider extends ColumnLabelProvider {
+ private int index;
+ private boolean flattenFoldersWithNoFiles = true;
+ private boolean showExistingFilesOnly = true;
+
+ /**
+ *
+ * @param index
+ * of column
+ */
+ public DebugSourcesLabelProvider(int index) {
+ this.index = index;
+ }
+
+ public void setFlattenFoldersWithNoFiles(boolean flattenFoldersWithNoFiles) {
+ this.flattenFoldersWithNoFiles = flattenFoldersWithNoFiles;
+ }
+
+ public boolean isFlattenFoldersWithNoFiles() {
+ return flattenFoldersWithNoFiles;
+ }
+
+ public void setShowExistingFilesOnly(boolean showExistingFilesOnly) {
+ this.showExistingFilesOnly = showExistingFilesOnly;
+ }
+
+ public boolean isShowExistingFilesOnly() {
+ return showExistingFilesOnly;
+ }
+
+ @Override
+ public String getText(Object element) {
+ return getLabel(element, index);
+ }
+
+ private String getLabel(Object element, int columnIdx) {
+ String emptyString = ""; //$NON-NLS-1$
+ if (element instanceof DebugSourcesTreeElement) {
+ DebugSourcesTreeElement node = (DebugSourcesTreeElement) element;
+ if (columnIdx == 0) {
+ Set<DebugSourcesTreeElement> children;
+ StringBuilder sb = new StringBuilder();
+ sb.append(node.getName());
+ if (flattenFoldersWithNoFiles) {
+ while (true) {
+ if (node.getFullPath() != null) {
+ break;
+ }
+ children = node.getChildren(showExistingFilesOnly);
+
+ if (children.size() != 1) {
+ break;
+ }
+ DebugSourcesTreeElement child = children.iterator().next();
+ if (child.getFullPath() != null) {
+ break;
+ }
+
+ node = child;
+ if (sb.length() > 0 && sb.charAt(sb.length() - 1) != File.separatorChar) {
+ sb.append(File.separatorChar);
+ }
+ sb.append(node.getName());
+ }
+ }
+ return sb.toString();
+ }
+ if (columnIdx == 1) {
+ return node.hasChildren() ? emptyString : (String) node.getFullPath();
+ }
+ }
+ return emptyString;
+ }
+
+ @Override
+ public Color getForeground(Object element) {
+ if (index == 1) {
+ if (element instanceof DebugSourcesTreeElement) {
+ DebugSourcesTreeElement node = (DebugSourcesTreeElement) element;
+ if (node.getExists() == FileExist.NO) {
+ return Display.getDefault().getSystemColor(SWT.COLOR_GRAY);
+ }
+ }
+ }
+
+ return super.getForeground(element);
+ }
+
+ @Override
+ public Font getFont(Object element) {
+ // TODO Auto-generated method stub
+ return super.getFont(element);
+ }
+}
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/debugsources/DebugSourcesMessages.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/debugsources/DebugSourcesMessages.java
new file mode 100644
index 00000000000..3a804c5d302
--- /dev/null
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/debugsources/DebugSourcesMessages.java
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ * Copyright (c) 2018, 2019 Kichwa Coders Ltd and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Baha El-Kassaby - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.dsf.gdb.internal.ui.debugsources;
+
+import org.eclipse.osgi.util.NLS;
+
+/**
+ *
+ */
+public class DebugSourcesMessages extends NLS {
+
+ public static String DebugSourcesMessages_name_column;
+ public static String DebugSourcesMessages_path_column;
+ public static String DebugSourcesMessages_unknown;
+
+ public static String DebugSourcesMessages_filter_search_tooltip;
+ public static String DebugSourcesMessages_sort_name_column_tooltip;
+ public static String DebugSourcesMessages_sort_path_column_tooltip;
+
+ public static String DebugSourcesExpandAction_name;
+ public static String DebugSourcesExpandAction_description;
+ public static String DebugSourcesCollapseAction_name;
+ public static String DebugSourcesCollapseAction_description;
+ public static String DebugSourcesFlattendedTree_name;
+ public static String DebugSourcesFlattendedTree_description;
+ public static String DebugSourcesNormalTree_description;
+ public static String DebugSourcesNormalTree_name;
+ public static String DebugSourcesShowExistingFilesOnly_description;
+ public static String DebugSourcesShowExistingFilesOnly_name;
+ public static String DebugSourcesView_unrooted;
+
+ public static String GdbDebugSourcesPreferences_name;
+
+ static {
+ // initialize resource bundle
+ NLS.initializeMessages(DebugSourcesMessages.class.getName(), DebugSourcesMessages.class);
+ }
+
+ private DebugSourcesMessages() {
+ }
+}
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/debugsources/DebugSourcesMessages.properties b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/debugsources/DebugSourcesMessages.properties
new file mode 100644
index 00000000000..901830dbd67
--- /dev/null
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/debugsources/DebugSourcesMessages.properties
@@ -0,0 +1,35 @@
+##########################################################################
+# Copyright (c) 2018, 2019 Kichwa Coders Ltd and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Baha El-Kassaby - Initial API and implementation
+##########################################################################
+
+DebugSourcesMessages_name_column=Name
+DebugSourcesMessages_path_column=Path
+DebugSourcesMessages_unknown=Unknown
+
+DebugSourcesMessages_filter_search_tooltip=Search on debug sources file names
+DebugSourcesMessages_sort_name_column_tooltip=Left-click on the \"Name\" column to sort by name
+DebugSourcesMessages_sort_path_column_tooltip=Left-click on the \"Path\" column to sort by path
+
+DebugSourcesExpandAction_name=Expand
+DebugSourcesExpandAction_description=Expand the tree structure
+DebugSourcesCollapseAction_name=Collapse
+DebugSourcesCollapseAction_description=Collapse the tree structure
+DebugSourcesFlattendedTree_name=Flat View
+DebugSourcesFlattendedTree_description=Display tree by flattening folders with no files.
+DebugSourcesNormalTree_description=Normal tree view
+DebugSourcesNormalTree_name=Normal View
+DebugSourcesShowExistingFilesOnly_description=Show only files that are found on disk.
+DebugSourcesShowExistingFilesOnly_name=Show
+DebugSourcesView_unrooted=<unrooted>
+
+GdbDebugSourcesPreferences_name=Preferences...
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/debugsources/DebugSourcesTreeContentProvider.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/debugsources/DebugSourcesTreeContentProvider.java
new file mode 100644
index 00000000000..e504d06f992
--- /dev/null
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/debugsources/DebugSourcesTreeContentProvider.java
@@ -0,0 +1,105 @@
+/*******************************************************************************
+ * Copyright (c) 2018, 2019 Kichwa Coders Ltd and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Baha El-Kassaby - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.dsf.gdb.internal.ui.debugsources;
+
+import java.util.Set;
+
+import org.eclipse.jface.viewers.ITreeContentProvider;
+
+public class DebugSourcesTreeContentProvider implements ITreeContentProvider {
+ private boolean flattenFoldersWithNoFiles = true;
+ private boolean showExistingFilesOnly = true;
+
+ public DebugSourcesTreeContentProvider() {
+ }
+
+ public void setFlattenFoldersWithNoFiles(boolean flattenFoldersWithNoFiles) {
+ this.flattenFoldersWithNoFiles = flattenFoldersWithNoFiles;
+ }
+
+ public boolean isFlattenFoldersWithNoFiles() {
+ return flattenFoldersWithNoFiles;
+ }
+
+ public void setShowExistingFilesOnly(boolean showExistingFilesOnly) {
+ this.showExistingFilesOnly = showExistingFilesOnly;
+ }
+
+ public boolean isShowExistingFilesOnly() {
+ return showExistingFilesOnly;
+ }
+
+ @Override
+ public Object[] getElements(Object inputElement) {
+ if (inputElement instanceof DebugSourcesTreeElement) {
+ DebugSourcesTreeElement tree = (DebugSourcesTreeElement) inputElement;
+ Set<DebugSourcesTreeElement> children = tree.getChildren(showExistingFilesOnly);
+ return children.toArray();
+ }
+ return null;
+ }
+
+ @Override
+ public Object[] getChildren(Object parentElement) {
+ if (parentElement instanceof DebugSourcesTreeElement) {
+ DebugSourcesTreeElement tree = (DebugSourcesTreeElement) parentElement;
+ Set<DebugSourcesTreeElement> children = tree.getChildren(showExistingFilesOnly);
+
+ if (flattenFoldersWithNoFiles) {
+ if (children.size() == 1) {
+ DebugSourcesTreeElement child = children.iterator().next();
+ if (child.getFullPath() == null) {
+ return getChildren(child);
+ }
+ }
+ }
+ return children.toArray();
+ }
+ return null;
+ }
+
+ @Override
+ public Object getParent(Object element) {
+ if (element == null)
+ return null;
+ if (element instanceof DebugSourcesTreeElement) {
+ DebugSourcesTreeElement node = (DebugSourcesTreeElement) element;
+ DebugSourcesTreeElement parent = node.getParent();
+ if (parent == null) {
+ return null;
+ }
+ if (flattenFoldersWithNoFiles) {
+ DebugSourcesTreeElement grandParent = parent.getParent();
+ if (grandParent != null) {
+ Set<DebugSourcesTreeElement> children = grandParent.getChildren(showExistingFilesOnly);
+ if (children.size() == 1) {
+ return getParent(parent);
+ }
+ }
+ }
+ return parent;
+ }
+ return null;
+
+ }
+
+ @Override
+ public boolean hasChildren(Object element) {
+ if (element instanceof DebugSourcesTreeElement) {
+ return getChildren(element).length > 0;
+ }
+ return false;
+ }
+
+}
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/debugsources/DebugSourcesTreeElement.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/debugsources/DebugSourcesTreeElement.java
new file mode 100644
index 00000000000..001311475ec
--- /dev/null
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/debugsources/DebugSourcesTreeElement.java
@@ -0,0 +1,220 @@
+/*******************************************************************************
+ * Copyright (c) 2018, 2019 Kichwa Coders Ltd and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Baha El-Kassaby - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.dsf.gdb.internal.ui.debugsources;
+
+import java.util.LinkedHashSet;
+import java.util.Objects;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+ * A basic tree used to display source files in the debug view
+ */
+public class DebugSourcesTreeElement {
+
+ public enum FileExist {
+ YES, NO, UNKNOWN;
+ }
+
+ // preserve insertion order with LinkedHashSet
+ private final Set<DebugSourcesTreeElement> children = new LinkedHashSet<>();
+ private final String name;
+ private final String fullPath;
+ private DebugSourcesTreeElement parent;
+ private FileExist exists;
+
+ /**
+ *
+ * @param name part of the path
+ * @param exists
+ */
+ public DebugSourcesTreeElement(String name, FileExist exists) {
+ this.name = name;
+ this.fullPath = null;
+ this.exists = exists;
+ }
+
+ /**
+ * If node is a leaf, add the fullPath as well
+ *
+ * @param name part of the path
+ * @param leafData full path of the file
+ */
+ private DebugSourcesTreeElement(String name, String fullPath, FileExist exist) {
+ this.name = name;
+ this.fullPath = fullPath;
+ this.exists = exist;
+ }
+
+ /**
+ *
+ * @param name part of the path
+ * @param exists
+ * @return a new node if not already existing, existing node otherwise
+ */
+ public DebugSourcesTreeElement addNode(String name, FileExist exists) {
+ for (DebugSourcesTreeElement child : children) {
+ if (child.name.equals(name)) {
+ if (exists == FileExist.YES) {
+ child.exists = FileExist.YES;
+ }
+ return child;
+ }
+ }
+ return addChild(new DebugSourcesTreeElement(name, exists));
+ }
+
+ /**
+ *
+ * @param name part of the path
+ * @param fullPath of leaf
+ * @return a new leaf if not already existing, existing leaf otherwise
+ */
+ public DebugSourcesTreeElement addLeaf(String name, String fullPath, FileExist exists) {
+ for (DebugSourcesTreeElement child : children) {
+ if (child.name.equals(name)) {
+ return child;
+ }
+ }
+ return addChild(new DebugSourcesTreeElement(name, fullPath, exists));
+ }
+
+ private DebugSourcesTreeElement addChild(DebugSourcesTreeElement child) {
+ children.add(child);
+ return child;
+ }
+
+ /**
+ *
+ * @return list of children of the node
+ */
+ public Set<DebugSourcesTreeElement> getChildren() {
+ return children;
+ }
+
+ /**
+ *
+ * @param filesThatMayExistOnly only include files that may exist
+ * @return list of children of the node
+ */
+ public Set<DebugSourcesTreeElement> getChildren(boolean filesThatMayExistOnly) {
+ if (filesThatMayExistOnly) {
+ return children.stream().filter(c -> c.getExists() != FileExist.NO).collect(Collectors.toSet());
+ } else {
+ return children;
+ }
+ }
+
+ /**
+ *
+ * @return true if node has children, false otherwise
+ */
+ public boolean hasChildren() {
+ if (children != null && children.size() > 0)
+ return true;
+ return false;
+ }
+
+ /**
+ *
+ * @return name of the file or folder segment
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ *
+ * @return full path to file (or null if not a file)
+ */
+ public String getFullPath() {
+ return fullPath;
+ }
+
+ /**
+ * Return true for leaf data that really exists on disk.
+ *
+ * This can be used to display differently.
+ */
+ public FileExist getExists() {
+ return exists;
+ }
+
+ /**
+ *
+ * @return node parent
+ */
+ public DebugSourcesTreeElement getParent() {
+ return parent;
+ }
+
+ /**
+ * Set parent of node
+ *
+ * @param parent
+ */
+ public void setParent(DebugSourcesTreeElement parent) {
+ this.parent = parent;
+ }
+
+ public void setExist(FileExist exists) {
+ this.exists = exists;
+ }
+
+ @Override
+ public String toString() {
+ return Objects.toString(getName());
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((name == null) ? 0 : name.hashCode());
+ result = prime * result + ((exists == null) ? 0 : exists.hashCode());
+ result = prime * result + ((fullPath == null) ? 0 : fullPath.hashCode());
+ result = prime * result + ((parent == null) ? 0 : parent.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ DebugSourcesTreeElement other = (DebugSourcesTreeElement) obj;
+ if (name == null) {
+ if (other.name != null)
+ return false;
+ } else if (!name.equals(other.name))
+ return false;
+ if (exists != other.exists)
+ return false;
+ if (fullPath == null) {
+ if (other.fullPath != null)
+ return false;
+ } else if (!fullPath.equals(other.fullPath))
+ return false;
+ if (parent == null) {
+ if (other.parent != null)
+ return false;
+ } else if (!parent.equals(other.parent))
+ return false;
+ return true;
+ }
+
+}
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/debugsources/DebugSourcesView.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/debugsources/DebugSourcesView.java
new file mode 100644
index 00000000000..cd2b0aca7ba
--- /dev/null
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/debugsources/DebugSourcesView.java
@@ -0,0 +1,736 @@
+/*******************************************************************************
+ * Copyright (c) 2018, 2019 Kichwa Coders Ltd and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Tracy Miranda / Baha El-Kassaby - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.dsf.gdb.internal.ui.debugsources;
+
+import java.net.URI;
+import java.nio.file.Files;
+import java.nio.file.InvalidPathException;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.Objects;
+import java.util.Set;
+
+import org.eclipse.cdt.debug.internal.core.sourcelookup.CSourceNotFoundElement;
+import org.eclipse.cdt.debug.internal.core.sourcelookup.ICSourceNotFoundDescription;
+import org.eclipse.cdt.debug.internal.ui.sourcelookup.CSourceNotFoundEditorInput;
+import org.eclipse.cdt.debug.ui.ICDebugUIConstants;
+import org.eclipse.cdt.dsf.concurrent.DataRequestMonitor;
+import org.eclipse.cdt.dsf.concurrent.DsfRunnable;
+import org.eclipse.cdt.dsf.datamodel.DMContexts;
+import org.eclipse.cdt.dsf.datamodel.IDMContext;
+import org.eclipse.cdt.dsf.debug.service.ICachingService;
+import org.eclipse.cdt.dsf.debug.service.IRunControl.IContainerDMContext;
+import org.eclipse.cdt.dsf.debug.service.IRunControl.ISuspendedDMEvent;
+import org.eclipse.cdt.dsf.gdb.internal.ui.GdbUIPlugin;
+import org.eclipse.cdt.dsf.gdb.internal.ui.debugsources.DebugSourcesTreeElement.FileExist;
+import org.eclipse.cdt.dsf.gdb.internal.ui.debugsources.actions.DebugSourcesCollapseAction;
+import org.eclipse.cdt.dsf.gdb.internal.ui.debugsources.actions.DebugSourcesExpandAction;
+import org.eclipse.cdt.dsf.gdb.internal.ui.debugsources.actions.DebugSourcesFlattendedTree;
+import org.eclipse.cdt.dsf.gdb.internal.ui.debugsources.actions.DebugSourcesNormalTree;
+import org.eclipse.cdt.dsf.gdb.internal.ui.debugsources.actions.DebugSourcesShowExistingFilesOnly;
+import org.eclipse.cdt.dsf.gdb.service.IDebugSourceFiles;
+import org.eclipse.cdt.dsf.gdb.service.IDebugSourceFiles.IDebugSourceFileInfo;
+import org.eclipse.cdt.dsf.gdb.service.IDebugSourceFiles.IDebugSourceFilesChangedEvent;
+import org.eclipse.cdt.dsf.service.DsfServiceEventHandler;
+import org.eclipse.cdt.dsf.service.DsfServicesTracker;
+import org.eclipse.cdt.dsf.service.DsfSession;
+import org.eclipse.cdt.ui.CUIPlugin;
+import org.eclipse.core.filesystem.EFS;
+import org.eclipse.core.filesystem.IFileStore;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.IJobChangeEvent;
+import org.eclipse.core.runtime.jobs.IJobManager;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.core.runtime.jobs.JobChangeAdapter;
+import org.eclipse.debug.ui.DebugUITools;
+import org.eclipse.debug.ui.contexts.DebugContextEvent;
+import org.eclipse.debug.ui.contexts.IDebugContextListener;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.viewers.ColumnViewerToolTipSupport;
+import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.TreeViewerColumn;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.TreeColumn;
+import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IMemento;
+import org.eclipse.ui.IViewSite;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.dialogs.FilteredTree;
+import org.eclipse.ui.dialogs.PatternFilter;
+import org.eclipse.ui.ide.FileStoreEditorInput;
+import org.eclipse.ui.ide.IDE;
+import org.eclipse.ui.part.ViewPart;
+
+@SuppressWarnings("restriction")
+public class DebugSourcesView extends ViewPart implements IDebugContextListener {
+
+ public static final String ID = "org.eclipse.cdt.dsf.gdb.ui.debugsources.view"; //$NON-NLS-1$
+ private static final String KEY_FLATTEN_FOLDERS_WITH_NO_FILES = "KEY_FLATTEN_FOLDERS_WITH_NO_FILES"; //$NON-NLS-1$
+ private static final String KEY_SHOW_EXISTING_FILES_ONLY = "KEY_SHOW_EXISTING_FILES_ONLY"; //$NON-NLS-1$
+
+ private DsfSession fSession;
+ private TreeViewer viewer;
+ private DebugSourcesViewComparator<DebugSourcesTreeElement> comparator;
+ private IContainerDMContext dmcontext;
+ private DebugSourcesTreeElement debugTree;
+ private IMemento fMemento;
+
+ public DebugSourcesView() {
+ }
+
+ @Override
+ public void createPartControl(Composite parent) {
+ Composite composite = new Composite(parent, SWT.NONE);
+ composite.setLayout(new GridLayout(1, false));
+ composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+
+ final DebugPatternFilter filter = new DebugPatternFilter();
+
+ int treeStyle = SWT.MULTI | SWT.FULL_SELECTION | SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER;
+ FilteredTree tree = new FilteredTree(composite, treeStyle, filter, true, true);
+ tree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ tree.getFilterControl().setToolTipText(DebugSourcesMessages.DebugSourcesMessages_filter_search_tooltip);
+ viewer = tree.getViewer();
+ viewer.getTree().setLinesVisible(true);
+ viewer.getTree().setHeaderVisible(true);
+ viewer.setContentProvider(new DebugSourcesTreeContentProvider());
+ viewer.setUseHashlookup(true);
+
+ comparator = new DebugSourcesViewComparator<>();
+
+ createColumns(viewer);
+
+ loadState();
+
+ viewer.setComparator(comparator);
+ viewer.addDoubleClickListener(new IDoubleClickListener() {
+ @Override
+ public void doubleClick(DoubleClickEvent event) {
+ IStructuredSelection thisSelection = (IStructuredSelection) event.getSelection();
+ Object selectedNode = thisSelection.getFirstElement();
+ if (selectedNode instanceof DebugSourcesTreeElement) {
+ DebugSourcesTreeElement node = (DebugSourcesTreeElement) selectedNode;
+ // only leafs can be opened!
+ if (!node.hasChildren()) {
+ openSourceFile(node.getFullPath());
+ }
+ }
+ }
+ });
+
+ createActions(viewer);
+
+ registerForEvents();
+ DebugUITools.getDebugContextManager().getContextService(getSite().getWorkbenchWindow())
+ .addDebugContextListener(this);
+
+ }
+
+ @Override
+ public void init(IViewSite site, IMemento memento) throws PartInitException {
+ fMemento = memento;
+ super.init(site, memento);
+ }
+
+ public void loadState() {
+ boolean flattenFoldersWithNoFiles = true;
+ boolean showExistingFilesOnly = true;
+
+ if (fMemento != null) {
+ Boolean b = fMemento.getBoolean(KEY_FLATTEN_FOLDERS_WITH_NO_FILES);
+ if (b != null) {
+ flattenFoldersWithNoFiles = b;
+ }
+ b = fMemento.getBoolean(KEY_SHOW_EXISTING_FILES_ONLY);
+ if (b != null) {
+ showExistingFilesOnly = b;
+ }
+ }
+
+ if (viewer != null) {
+ DebugSourcesTreeContentProvider contentProvider = (DebugSourcesTreeContentProvider) viewer
+ .getContentProvider();
+
+ contentProvider.setFlattenFoldersWithNoFiles(flattenFoldersWithNoFiles);
+ contentProvider.setShowExistingFilesOnly(showExistingFilesOnly);
+ for (int i = 0; i < viewer.getTree().getColumnCount(); i++) {
+ DebugSourcesLabelProvider labelProvider = (DebugSourcesLabelProvider) viewer.getLabelProvider(i);
+ labelProvider.setFlattenFoldersWithNoFiles(flattenFoldersWithNoFiles);
+ labelProvider.setShowExistingFilesOnly(showExistingFilesOnly);
+ }
+
+ }
+ }
+
+ @Override
+ public void saveState(IMemento memento) {
+ DebugSourcesTreeContentProvider contentProvider = (DebugSourcesTreeContentProvider) viewer.getContentProvider();
+ memento.putBoolean(KEY_FLATTEN_FOLDERS_WITH_NO_FILES, contentProvider.isFlattenFoldersWithNoFiles());
+ memento.putBoolean(KEY_SHOW_EXISTING_FILES_ONLY, contentProvider.isShowExistingFilesOnly());
+ super.saveState(memento);
+ }
+
+ private void createColumns(TreeViewer viewer) {
+ String[] titles = { DebugSourcesMessages.DebugSourcesMessages_name_column,
+ DebugSourcesMessages.DebugSourcesMessages_path_column };
+ String[] tooltips = { DebugSourcesMessages.DebugSourcesMessages_sort_name_column_tooltip,
+ DebugSourcesMessages.DebugSourcesMessages_sort_path_column_tooltip };
+ int[] bounds = { 300, 800 };
+ ColumnViewerToolTipSupport.enableFor(viewer);
+
+ for (int i = 0; i < titles.length; i++) {
+ TreeViewerColumn tc = createTreeViewerColumn(viewer, titles[i], bounds[i], i);
+ tc.getColumn().setToolTipText(tooltips[i]);
+ tc.setLabelProvider(new DebugSourcesLabelProvider(i));
+ }
+ }
+
+ private TreeViewerColumn createTreeViewerColumn(TreeViewer viewer, String title, int bound, final int colNumber) {
+ final TreeViewerColumn viewerColumn = new TreeViewerColumn(viewer, SWT.NONE);
+ final TreeColumn column = viewerColumn.getColumn();
+ column.setText(title);
+ column.setWidth(bound);
+ column.setResizable(true);
+ column.setMoveable(true);
+ if (colNumber == 0)
+ comparator.setColumn(e -> e.getName(), colNumber);
+ if (colNumber == 1)
+ comparator.setColumn(e -> e.getFullPath() != null ? e.getFullPath() : e.getName(), colNumber);
+
+ column.addSelectionListener(getSelectionAdapter(column, colNumber));
+ return viewerColumn;
+ }
+
+ private SelectionAdapter getSelectionAdapter(final TreeColumn column, final int index) {
+ SelectionAdapter selectionAdapter = new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ if (index == 0)
+ comparator.setColumn(e1 -> e1.getName(), index);
+ if (index == 1)
+ comparator.setColumn(e1 -> e1.getFullPath() != null ? e1.getFullPath() : e1.getName(), index);
+ int dir = comparator.getDirection();
+ viewer.getTree().setSortDirection(dir);
+ viewer.getTree().setSortColumn(column);
+ viewer.refresh();
+ // This is due to the tree collapsing to level 2 at every comparison
+ viewer.expandAll();
+ }
+ };
+ return selectionAdapter;
+ }
+
+ private void createActions(TreeViewer viewer) {
+ IActionBars actionBars = getViewSite().getActionBars();
+ IToolBarManager toolBar = actionBars.getToolBarManager();
+ toolBar.add(new DebugSourcesExpandAction(viewer));
+ toolBar.add(new DebugSourcesCollapseAction(viewer));
+ toolBar.add(new DebugSourcesFlattendedTree(viewer));
+ toolBar.add(new DebugSourcesNormalTree(viewer));
+ toolBar.add(new DebugSourcesShowExistingFilesOnly(viewer));
+ }
+
+ private DsfSession getSession() {
+ if (viewer == null || viewer.getControl().isDisposed()) {
+ return null;
+ }
+
+ // Get the debug selection to know what the user is looking at in the Debug view
+ IAdaptable context = DebugUITools.getDebugContext();
+ if (context == null) {
+ return null;
+ }
+
+ // Extract the data model context to use with the DSF services
+ IDMContext dmcontext = context.getAdapter(IDMContext.class);
+ if (dmcontext == null) {
+ // Not dealing with a DSF session
+ return null;
+ }
+
+ // Extract DSF session id from the DM context
+ String sessionId = dmcontext.getSessionId();
+ // Get the full DSF session to have access to the DSF executor
+ DsfSession session = DsfSession.getSession(sessionId);
+ if (session == null) {
+ // It could be that this session is no longer active
+ return null;
+ }
+
+ if (!session.isActive() || session.getExecutor().isShutdown()) {
+ return null;
+ }
+
+ return session;
+ }
+
+ private void asyncExecRegisterForEvents() {
+ if (getSite() == null || getSite().getShell() == null || getSite().getShell().getDisplay() == null
+ || getSite().getShell().getDisplay().isDisposed()) {
+ return;
+ }
+ getSite().getShell().getDisplay().asyncExec(this::registerForEvents);
+ }
+
+ private void registerForEvents() {
+ DsfSession session = getSession();
+ if (session == null) {
+ return;
+ }
+
+ // Get the debug selection to know what the user is looking at in the Debug view
+ IAdaptable context = DebugUITools.getDebugContext();
+ if (context == null) {
+ return;
+ }
+
+ // Extract the data model context to use with the DSF services
+ IDMContext dmcontext = context.getAdapter(IDMContext.class);
+ if (dmcontext == null) {
+ // Not dealing with a DSF session
+ return;
+ }
+
+ registerForEvents(session);
+
+ // Show the current frame if there is one
+ displaySourceFiles(session, dmcontext);
+ }
+
+ @Override
+ public void setFocus() {
+ viewer.getControl().setFocus();
+ }
+
+ @Override
+ public void dispose() {
+ super.dispose();
+ viewer.getControl().dispose();
+ DebugUITools.getDebugContextManager().getContextService(getSite().getWorkbenchWindow())
+ .removeDebugContextListener(this);
+ if (fSession != null) {
+ DsfSession lastSession = fSession;
+ if (!lastSession.getExecutor().isShutdown()) {
+ lastSession.getExecutor().submit(new DsfRunnable() {
+ @Override
+ public void run() {
+ lastSession.removeServiceEventListener(DebugSourcesView.this);
+ }
+ });
+ }
+ }
+ }
+
+ /**
+ * This method registers with the specified session to receive DSF events.
+ *
+ * @param session
+ * The session for which we want to receive events
+ */
+ private void registerForEvents(DsfSession session) {
+ if (session != null) {
+ if (fSession != session) {
+ if (fSession != null) {
+ DsfSession lastSession = fSession;
+ if (!lastSession.getExecutor().isShutdown()) {
+ lastSession.getExecutor().submit(new DsfRunnable() {
+ @Override
+ public void run() {
+ lastSession.removeServiceEventListener(DebugSourcesView.this);
+ }
+ });
+ }
+ }
+ fSession = session;
+ fSession.getExecutor().submit(new DsfRunnable() {
+
+ @Override
+ public void run() {
+ fSession.addServiceEventListener(DebugSourcesView.this, null);
+ }
+
+ });
+ }
+ }
+ }
+
+ private void displaySourceFiles(DsfSession session, IDMContext dmcontext) {
+ if (session.getExecutor().isShutdown()) {
+ // can't do anything
+ return;
+ }
+
+ IContainerDMContext containerDMContext = DMContexts.getAncestorOfType(dmcontext, IContainerDMContext.class);
+ if (containerDMContext == null || Objects.equals(containerDMContext, this.dmcontext)) {
+ return;
+ }
+ this.dmcontext = containerDMContext;
+ session.getExecutor().submit(new DsfRunnable() {
+ @Override
+ public void run() {
+ DsfServicesTracker tracker = new DsfServicesTracker(GdbUIPlugin.getBundleContext(), session.getId());
+ IDebugSourceFiles srcService = tracker.getService(IDebugSourceFiles.class);
+ // Don't forgot to dispose of a tracker before it goes out of scope
+ tracker.dispose();
+
+ if (srcService == null) {
+ // service not available. The debug session
+ // is probably terminating.
+ return;
+ }
+
+ // Get the full DSF session to have access to the DSF executor
+ srcService.getSources(containerDMContext,
+ new DataRequestMonitor<IDebugSourceFileInfo[]>(session.getExecutor(), null) {
+ @Override
+ protected void handleSuccess() {
+ // The service called 'handleSuccess()' so we know there is no error.
+ IDebugSourceFileInfo[] srcFileInfo = getData();
+ // We have a frame context. It is just a 'pointer' though.
+ // We need to get the data associated with it.
+ // Populate the tree synchronously
+ PopulateTreeJob populateTreeJob = new PopulateTreeJob(srcFileInfo);
+ CheckFileExistenceJob checkFileExistenceJob = new CheckFileExistenceJob();
+
+ populateTreeJob.addJobChangeListener(new JobChangeAdapter() {
+ @Override
+ public void done(IJobChangeEvent event) {
+ debugTree = populateTreeJob.getTree();
+ Display.getDefault().asyncExec(new Runnable() {
+ @Override
+ public void run() {
+ if (!viewer.getControl().isDisposed()) {
+ viewer.setInput(debugTree);
+ }
+ }
+ });
+ if (checkFileExistenceJob.getState() == Job.RUNNING)
+ checkFileExistenceJob.cancel();
+ checkFileExistenceJob.schedule();
+ }
+ });
+ checkFileExistenceJob.addJobChangeListener(new JobChangeAdapter() {
+ @Override
+ public void done(IJobChangeEvent event) {
+ Display.getDefault().asyncExec(new Runnable() {
+ @Override
+ public void run() {
+ if (!viewer.getControl().isDisposed()) {
+ viewer.refresh();
+ }
+ }
+ });
+ }
+ });
+ // return all populate and file check jobs already running and cancel them.
+ IJobManager jobMan = Job.getJobManager();
+ Job[] populateJobS = jobMan.find(POPULATE_FAMILY);
+ for (Job job : populateJobS) {
+ job.cancel();
+ }
+ Job[] fileCheckJobS = jobMan.find(FILECHECK_FAMILY);
+ for (Job job : fileCheckJobS) {
+ job.cancel();
+ }
+ populateTreeJob.schedule();
+ }
+
+ @Override
+ protected void handleError() {
+ // Ignore errors when we select elements
+ // that don't contain frames
+ }
+ });
+ }
+ });
+ }
+
+ // This method must be public for the DSF callback to be found
+ @DsfServiceEventHandler
+ public void eventReceived(ISuspendedDMEvent event) {
+ asyncExecRegisterForEvents();
+ }
+
+ // This method must be public for the DSF callback to be found
+ @DsfServiceEventHandler
+ public void eventReceived(IDebugSourceFilesChangedEvent event) {
+ asyncExecRegisterForEvents();
+ }
+
+ public boolean canRefresh() {
+ return getSession() != null;
+ }
+
+ public void refresh() {
+ this.dmcontext = null; // force the refresh
+ DsfSession session = getSession();
+ if (session == null) {
+ return;
+ }
+ session.getExecutor().submit(new DsfRunnable() {
+
+ @Override
+ public void run() {
+ DsfServicesTracker tracker = new DsfServicesTracker(GdbUIPlugin.getBundleContext(), session.getId());
+ IDebugSourceFiles srcService = tracker.getService(IDebugSourceFiles.class);
+ // Don't forgot to dispose of a tracker before it goes out of scope
+ tracker.dispose();
+
+ if (srcService instanceof ICachingService) {
+ ICachingService cache = (ICachingService) srcService;
+ cache.flushCache(dmcontext);
+ }
+ }
+ });
+ }
+
+ @Override
+ public void debugContextChanged(DebugContextEvent event) {
+ if ((event.getFlags() & DebugContextEvent.ACTIVATED) > 0) {
+ registerForEvents();
+ }
+ }
+
+ private void openSourceFile(String fullPath) {
+ if (fullPath == null) {
+ return;
+ }
+ Path path = Paths.get(fullPath);
+ boolean exists = Files.exists(path);
+ IEditorInput editorInput = null;
+ String editorId = null;
+ if (exists) {
+ try {
+ URI uriLocation = path.toUri();
+ IFileStore fileStore = EFS.getStore(uriLocation);
+ editorInput = new FileStoreEditorInput(fileStore);
+ editorId = IDE.getEditorDescriptorForFileStore(fileStore, false).getId();
+ } catch (CoreException e1) {
+ CSourceNotFoundElement element = new CSourceNotFoundElement(new TempElement(), null, fullPath);
+ editorInput = new CSourceNotFoundEditorInput(element);
+ editorId = ICDebugUIConstants.CSOURCENOTFOUND_EDITOR_ID;
+ }
+ } else {
+ CSourceNotFoundElement element = new CSourceNotFoundElement(new TempElement(), null, fullPath);
+ editorInput = new CSourceNotFoundEditorInput(element);
+ editorId = ICDebugUIConstants.CSOURCENOTFOUND_EDITOR_ID;
+ }
+ IWorkbenchPage page = CUIPlugin.getActivePage();
+ try {
+ page.openEditor(editorInput, editorId);
+ } catch (PartInitException e) {
+ GdbUIPlugin.log(e);
+ }
+ }
+
+ private class TempElement implements IAdaptable, ICSourceNotFoundDescription {
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public <T> T getAdapter(Class<T> adapter) {
+ if (adapter == ICSourceNotFoundDescription.class)
+ return (T) this;
+ return null;
+ }
+
+ @Override
+ public String getDescription() {
+ return DebugSourcesMessages.DebugSourcesMessages_unknown;
+ }
+
+ @Override
+ public boolean isAddressOnly() {
+ return false;
+ }
+ }
+
+ class DebugPatternFilter extends PatternFilter {
+
+ @Override
+ protected boolean isLeafMatch(Viewer viewer, Object element) {
+ String name = ((DebugSourcesTreeElement) element).getName();
+ String path = ((DebugSourcesTreeElement) element).getFullPath();
+ return wordMatches(path) || wordMatches(name);
+ }
+ }
+
+ private static final String POPULATE_FAMILY = "populateJobFamily"; //$NON-NLS-1$
+ private static final String FILECHECK_FAMILY = "fileCheckJobFamily"; //$NON-NLS-1$
+
+ /**
+ * Job used to populate the tree
+ *
+ */
+ class PopulateTreeJob extends Job {
+
+ private IDebugSourceFileInfo[] srcFileInfo;
+ private DebugSourcesTreeElement populateTree;
+
+ public PopulateTreeJob(IDebugSourceFileInfo[] srcFileInfo) {
+ super("Populate Tree Job"); //$NON-NLS-1$
+ this.srcFileInfo = srcFileInfo;
+ }
+
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ if (srcFileInfo == null)
+ return Status.CANCEL_STATUS;
+ populateTree = populateTree(srcFileInfo, monitor);
+ return Status.OK_STATUS;
+ }
+
+ @Override
+ public boolean belongsTo(Object family) {
+ return POPULATE_FAMILY.equals(family);
+ }
+
+ public DebugSourcesTreeElement getTree() {
+ return populateTree;
+ }
+
+ private DebugSourcesTreeElement populateTree(IDebugSourceFileInfo[] srcFileInfo, IProgressMonitor monitor) {
+ DebugSourcesTreeElement debugTree = new DebugSourcesTreeElement("", FileExist.UNKNOWN); //$NON-NLS-1$
+ DebugSourcesTreeElement current = debugTree;
+ for (int i = 0; i < srcFileInfo.length; i++) {
+ DebugSourcesTreeElement root = current;
+ DebugSourcesTreeElement parent = root;
+ String path = srcFileInfo[i].getPath();
+ if (path == null) {
+ continue;
+ }
+ // Use Path API to clean the path
+ try {
+ Path p = Paths.get(path);
+ Path filename = p.getFileName();
+ // add root
+ Path pRoot = p.getRoot();
+ if (pRoot == null || !p.isAbsolute()) {
+ current = current.addLeaf(DebugSourcesMessages.DebugSourcesView_unrooted, p.toString(),
+ FileExist.UNKNOWN);
+ } else if (pRoot.equals(filename)) {
+ current = current.addLeaf(srcFileInfo[i].getName(), p.toString(), FileExist.UNKNOWN);
+ } else {
+ current = current.addNode(pRoot.toString(), FileExist.UNKNOWN);
+ }
+ parent = current;
+ // Add each sub-path
+ Path normalizedPath = p.normalize();
+ for (Path subpath : normalizedPath) {
+ if (subpath.equals(filename)) { // this is a leaf
+ current = current.addLeaf(srcFileInfo[i].getName(), p.toString(), FileExist.UNKNOWN);
+ } else {
+ current = current.addNode(subpath.toString(), FileExist.UNKNOWN);
+ }
+ current.setParent(parent);
+ parent = current;
+ }
+ current = root;
+ parent = root;
+ } catch (InvalidPathException e) {
+ GdbUIPlugin.log(e);
+ }
+ if (monitor != null && monitor.isCanceled()) {
+ return current;
+ }
+ }
+ return current;
+ }
+ }
+
+ /**
+ * Job used to check the existence of a file, updates the tree accordingly
+ *
+ */
+ class CheckFileExistenceJob extends Job {
+
+ public CheckFileExistenceJob() {
+ super("Checking file existence"); //$NON-NLS-1$
+ }
+
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ try {
+ DebugSourcesTreeElement tmpTree = debugTree;
+ traverseDebugTree(tmpTree, monitor);
+ debugTree = tmpTree;
+ if (monitor != null && monitor.isCanceled())
+ return Status.CANCEL_STATUS;
+ } catch (Exception e) {
+ GdbUIPlugin.log(e);
+ }
+ return Status.OK_STATUS;
+ }
+
+ @Override
+ public boolean belongsTo(Object family) {
+ return FILECHECK_FAMILY.equals(family);
+ }
+
+ /**
+ * Sets the file exist field of a leaf node
+ *
+ * @param child
+ * @param monitor
+ */
+ private void traverseDebugTree(DebugSourcesTreeElement child, IProgressMonitor monitor) {
+ Set<DebugSourcesTreeElement> children = child.getChildren();
+ for (DebugSourcesTreeElement each : children) {
+ String path = each.getFullPath();
+ if (path != null) {
+ Path p = Paths.get(path);
+ boolean exists = Files.exists(p);
+ each.setExist(exists ? FileExist.YES : FileExist.NO);
+ // if leaf, and it exists, we need to make the parent nodes exist too
+ if (!each.hasChildren() && exists) {
+ traverseParent(each);
+ }
+ }
+ if (monitor != null && monitor.isCanceled())
+ return;
+
+ traverseDebugTree(each, monitor);
+ }
+ if (child.getExists() == FileExist.UNKNOWN) {
+ child.setExist(FileExist.NO);
+ }
+ }
+
+ private void traverseParent(DebugSourcesTreeElement node) {
+ DebugSourcesTreeElement parent = node.getParent();
+ if (parent.getExists() != FileExist.YES) {
+ parent.setExist(FileExist.YES);
+ if (parent.getParent() != null) {
+ traverseParent(parent);
+ }
+ }
+ }
+ }
+
+}
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/debugsources/DebugSourcesViewComparator.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/debugsources/DebugSourcesViewComparator.java
new file mode 100644
index 00000000000..d3ce28b851f
--- /dev/null
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/debugsources/DebugSourcesViewComparator.java
@@ -0,0 +1,85 @@
+/*******************************************************************************
+ * Copyright (c) 2018, 2019 Kichwa Coders Ltd and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Baha El-Kassaby - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.dsf.gdb.internal.ui.debugsources;
+
+import java.util.function.Function;
+
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerComparator;
+import org.eclipse.swt.SWT;
+
+/**
+ * Comparator used for the Debug Sources Table viewer
+ *
+ */
+public class DebugSourcesViewComparator<T> extends ViewerComparator {
+
+ private Function<T, Comparable<?>> func;
+
+ private int propertyIndex;
+
+ private enum Direction {
+ ASCENDING, DESCENDING;
+
+ /**
+ *
+ * @param direction the previous direction
+ * @return the new direction
+ */
+ public static Direction toggle(Direction direction) {
+ return direction == ASCENDING ? DESCENDING : ASCENDING;
+ }
+ }
+
+ private Direction direction = Direction.DESCENDING;
+
+ public DebugSourcesViewComparator(Function<T, Comparable<?>> func) {
+ this.func = func;
+ }
+
+ public DebugSourcesViewComparator() {
+ this.propertyIndex = 0;
+ direction = Direction.DESCENDING;
+ }
+
+ public int getDirection() {
+ return direction == Direction.DESCENDING ? SWT.DOWN : SWT.UP;
+ }
+
+ public void setColumn(Function<T, Comparable<?>> column, int idx) {
+ this.func = column;
+ if (idx == this.propertyIndex) {
+ // Same column as last sort; toggle the direction
+ direction = Direction.toggle(direction);
+ } else {
+ // New column
+ this.propertyIndex = idx;
+ direction = Direction.DESCENDING;
+ }
+ }
+
+ @SuppressWarnings({ "unchecked", "rawtypes" })
+ @Override
+ public int compare(Viewer viewer, Object e1, Object e2) {
+ Comparable s1 = func.apply((T) e1);
+ Comparable s2 = func.apply((T) e2);
+ int rc = s1.compareTo(s2);
+ // If descending order, flip the direction
+ if (direction.equals(Direction.DESCENDING)) {
+ rc = -rc;
+ }
+ return rc;
+ }
+
+}
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/debugsources/IDebugSourcesImagesConst.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/debugsources/IDebugSourcesImagesConst.java
new file mode 100644
index 00000000000..1dfe81e36ba
--- /dev/null
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/debugsources/IDebugSourcesImagesConst.java
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * Copyright (c) 2018, 2919 Kichwa Coders Ltd and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Baha El-Kassaby - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.dsf.gdb.internal.ui.debugsources;
+
+/**
+ *
+ */
+public interface IDebugSourcesImagesConst {
+
+ public static final String IMG_COLLAPSE_DEBUG_SOURCES = "icons/full/elcl16/collapse_all.gif"; //$NON-NLS-1$
+
+ public static final String IMG_EXPAND_DEBUG_SOURCES = "icons/full/elcl16/expand_all.gif"; //$NON-NLS-1$
+
+ public static final String IMG_FLAT_LAYOUT = "icons/full/elcl16/flatLayout.png"; //$NON-NLS-1$
+
+ public static final String IMG_NORMAL_LAYOUT = "icons/full/elcl16/hierarchicalLayout.png"; //$NON-NLS-1$
+
+ public static final String IMG_SHOW_EXISTING_FILES_ONLY = "icons/full/elcl16/existingFiles.gif"; //$NON-NLS-1$
+}
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/debugsources/actions/DebugSourcesCollapseAction.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/debugsources/actions/DebugSourcesCollapseAction.java
new file mode 100644
index 00000000000..6c81e1d63ea
--- /dev/null
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/debugsources/actions/DebugSourcesCollapseAction.java
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ * Copyright (c) 2018, 2019 Kichwa Coders Ltd and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Baha El-Kassaby - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.dsf.gdb.internal.ui.debugsources.actions;
+
+import java.util.Optional;
+
+import org.eclipse.cdt.dsf.gdb.internal.ui.GdbUIPlugin;
+import org.eclipse.cdt.dsf.gdb.internal.ui.debugsources.DebugSourcesMessages;
+import org.eclipse.cdt.dsf.gdb.internal.ui.debugsources.IDebugSourcesImagesConst;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.resource.ResourceLocator;
+import org.eclipse.jface.viewers.TreeViewer;
+
+/**
+ * Action to collapse of the nodes of the Debug Sources tree
+ */
+public class DebugSourcesCollapseAction extends Action {
+
+ private final TreeViewer viewer;
+
+ public DebugSourcesCollapseAction(TreeViewer viewer) {
+ super();
+ this.viewer = viewer;
+ if (viewer == null || viewer.getControl().isDisposed()) {
+ setEnabled(false);
+ }
+ setText(DebugSourcesMessages.DebugSourcesCollapseAction_name);
+ setToolTipText(DebugSourcesMessages.DebugSourcesCollapseAction_description);
+ Optional<ImageDescriptor> descriptor = ResourceLocator.imageDescriptorFromBundle(GdbUIPlugin.PLUGIN_ID,
+ IDebugSourcesImagesConst.IMG_COLLAPSE_DEBUG_SOURCES);
+ descriptor.ifPresent(this::setImageDescriptor);
+ }
+
+ @Override
+ public void run() {
+ if (viewer != null) {
+ viewer.collapseAll();
+ }
+ }
+}
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/debugsources/actions/DebugSourcesExpandAction.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/debugsources/actions/DebugSourcesExpandAction.java
new file mode 100644
index 00000000000..da70a25a2ad
--- /dev/null
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/debugsources/actions/DebugSourcesExpandAction.java
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * Copyright (c) 2018, 2019 Kichwa Coders Ltd and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Baha El-Kassaby - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.dsf.gdb.internal.ui.debugsources.actions;
+
+import java.util.Optional;
+
+import org.eclipse.cdt.dsf.gdb.internal.ui.GdbUIPlugin;
+import org.eclipse.cdt.dsf.gdb.internal.ui.debugsources.DebugSourcesMessages;
+import org.eclipse.cdt.dsf.gdb.internal.ui.debugsources.IDebugSourcesImagesConst;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.resource.ResourceLocator;
+import org.eclipse.jface.viewers.TreeViewer;
+
+/**
+ * Action to Expand all the nodes of the Debug Sources tree
+ */
+public class DebugSourcesExpandAction extends Action {
+
+ private final TreeViewer viewer;
+
+ public DebugSourcesExpandAction(TreeViewer viewer) {
+ this.viewer = viewer;
+ if (viewer == null || viewer.getControl().isDisposed()) {
+ setEnabled(false);
+ }
+ setText(DebugSourcesMessages.DebugSourcesExpandAction_name);
+ setToolTipText(DebugSourcesMessages.DebugSourcesExpandAction_description);
+ Optional<ImageDescriptor> descriptor = ResourceLocator.imageDescriptorFromBundle(GdbUIPlugin.PLUGIN_ID,
+ IDebugSourcesImagesConst.IMG_EXPAND_DEBUG_SOURCES);
+ descriptor.ifPresent(this::setImageDescriptor);
+ }
+
+ @Override
+ public void run() {
+ if (viewer != null) {
+ viewer.expandAll();
+ }
+ }
+}
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/debugsources/actions/DebugSourcesFlattendedTree.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/debugsources/actions/DebugSourcesFlattendedTree.java
new file mode 100644
index 00000000000..aa1629bb432
--- /dev/null
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/debugsources/actions/DebugSourcesFlattendedTree.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * Copyright (c) 2018, 2019 Kichwa Coders Ltd and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Jonah Graham- Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.dsf.gdb.internal.ui.debugsources.actions;
+
+import java.util.Optional;
+
+import org.eclipse.cdt.dsf.gdb.internal.ui.GdbUIPlugin;
+import org.eclipse.cdt.dsf.gdb.internal.ui.debugsources.DebugSourcesLabelProvider;
+import org.eclipse.cdt.dsf.gdb.internal.ui.debugsources.DebugSourcesMessages;
+import org.eclipse.cdt.dsf.gdb.internal.ui.debugsources.DebugSourcesTreeContentProvider;
+import org.eclipse.cdt.dsf.gdb.internal.ui.debugsources.IDebugSourcesImagesConst;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.resource.ResourceLocator;
+import org.eclipse.jface.viewers.TreeViewer;
+
+public class DebugSourcesFlattendedTree extends Action {
+ private final TreeViewer viewer;
+
+ public DebugSourcesFlattendedTree(TreeViewer viewer) {
+ super(null, IAction.AS_RADIO_BUTTON);
+ this.viewer = viewer;
+ if (viewer == null || viewer.getControl().isDisposed()) {
+ setEnabled(false);
+ }
+ setText(DebugSourcesMessages.DebugSourcesFlattendedTree_name);
+ setToolTipText(DebugSourcesMessages.DebugSourcesFlattendedTree_description);
+ Optional<ImageDescriptor> descriptor = ResourceLocator.imageDescriptorFromBundle(GdbUIPlugin.PLUGIN_ID,
+ IDebugSourcesImagesConst.IMG_FLAT_LAYOUT);
+ descriptor.ifPresent(this::setImageDescriptor);
+ if (viewer != null) {
+ DebugSourcesTreeContentProvider contentProvider = (DebugSourcesTreeContentProvider) viewer
+ .getContentProvider();
+ setChecked(contentProvider.isFlattenFoldersWithNoFiles());
+ }
+ }
+
+ @Override
+ public void run() {
+ if (isChecked()) {
+ DebugSourcesTreeContentProvider contentProvider = (DebugSourcesTreeContentProvider) viewer
+ .getContentProvider();
+ contentProvider.setFlattenFoldersWithNoFiles(true);
+ for (int i = 0; i < viewer.getTree().getColumnCount(); i++) {
+ DebugSourcesLabelProvider labelProvider = (DebugSourcesLabelProvider) viewer.getLabelProvider(i);
+ labelProvider.setFlattenFoldersWithNoFiles(true);
+ }
+ viewer.refresh(true);
+ }
+ }
+
+} \ No newline at end of file
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/debugsources/actions/DebugSourcesNormalTree.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/debugsources/actions/DebugSourcesNormalTree.java
new file mode 100644
index 00000000000..7416646f29f
--- /dev/null
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/debugsources/actions/DebugSourcesNormalTree.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * Copyright (c) 2018, 2019 Kichwa Coders Ltd and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Jonah Graham- Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.dsf.gdb.internal.ui.debugsources.actions;
+
+import java.util.Optional;
+
+import org.eclipse.cdt.dsf.gdb.internal.ui.GdbUIPlugin;
+import org.eclipse.cdt.dsf.gdb.internal.ui.debugsources.DebugSourcesLabelProvider;
+import org.eclipse.cdt.dsf.gdb.internal.ui.debugsources.DebugSourcesMessages;
+import org.eclipse.cdt.dsf.gdb.internal.ui.debugsources.DebugSourcesTreeContentProvider;
+import org.eclipse.cdt.dsf.gdb.internal.ui.debugsources.IDebugSourcesImagesConst;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.resource.ResourceLocator;
+import org.eclipse.jface.viewers.TreeViewer;
+
+public class DebugSourcesNormalTree extends Action {
+ private final TreeViewer viewer;
+
+ public DebugSourcesNormalTree(TreeViewer viewer) {
+ super(null, IAction.AS_RADIO_BUTTON);
+ this.viewer = viewer;
+ if (viewer == null || viewer.getControl().isDisposed()) {
+ setEnabled(false);
+ }
+ setText(DebugSourcesMessages.DebugSourcesNormalTree_name);
+ setToolTipText(DebugSourcesMessages.DebugSourcesNormalTree_description);
+ Optional<ImageDescriptor> descriptor = ResourceLocator.imageDescriptorFromBundle(GdbUIPlugin.PLUGIN_ID,
+ IDebugSourcesImagesConst.IMG_NORMAL_LAYOUT);
+ descriptor.ifPresent(this::setImageDescriptor);
+ if (viewer != null) {
+ DebugSourcesTreeContentProvider contentProvider = (DebugSourcesTreeContentProvider) viewer
+ .getContentProvider();
+ setChecked(!contentProvider.isFlattenFoldersWithNoFiles());
+ }
+ }
+
+ @Override
+ public void run() {
+ if (isChecked()) {
+ DebugSourcesTreeContentProvider contentProvider = (DebugSourcesTreeContentProvider) viewer
+ .getContentProvider();
+ contentProvider.setFlattenFoldersWithNoFiles(false);
+ for (int i = 0; i < viewer.getTree().getColumnCount(); i++) {
+ DebugSourcesLabelProvider labelProvider = (DebugSourcesLabelProvider) viewer.getLabelProvider(i);
+ labelProvider.setFlattenFoldersWithNoFiles(false);
+ }
+ viewer.refresh(true);
+ }
+ }
+
+} \ No newline at end of file
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/debugsources/actions/DebugSourcesShowExistingFilesOnly.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/debugsources/actions/DebugSourcesShowExistingFilesOnly.java
new file mode 100644
index 00000000000..c9be90707dd
--- /dev/null
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/debugsources/actions/DebugSourcesShowExistingFilesOnly.java
@@ -0,0 +1,66 @@
+/*******************************************************************************
+ * Copyright (c) 2018, 2019 Kichwa Coders Ltd and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Jonah Graham- Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.dsf.gdb.internal.ui.debugsources.actions;
+
+import java.util.Optional;
+
+import org.eclipse.cdt.dsf.gdb.internal.ui.GdbUIPlugin;
+import org.eclipse.cdt.dsf.gdb.internal.ui.debugsources.DebugSourcesLabelProvider;
+import org.eclipse.cdt.dsf.gdb.internal.ui.debugsources.DebugSourcesMessages;
+import org.eclipse.cdt.dsf.gdb.internal.ui.debugsources.DebugSourcesTreeContentProvider;
+import org.eclipse.cdt.dsf.gdb.internal.ui.debugsources.IDebugSourcesImagesConst;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.resource.ResourceLocator;
+import org.eclipse.jface.viewers.TreeViewer;
+
+public class DebugSourcesShowExistingFilesOnly extends Action {
+ private final TreeViewer viewer;
+
+ public DebugSourcesShowExistingFilesOnly(TreeViewer viewer) {
+ super(null, IAction.AS_CHECK_BOX);
+ this.viewer = viewer;
+ if (viewer == null || viewer.getControl().isDisposed()) {
+ setEnabled(false);
+ }
+ setText(DebugSourcesMessages.DebugSourcesShowExistingFilesOnly_name);
+ setToolTipText(DebugSourcesMessages.DebugSourcesShowExistingFilesOnly_description);
+ Optional<ImageDescriptor> descriptor = ResourceLocator.imageDescriptorFromBundle(GdbUIPlugin.PLUGIN_ID,
+ IDebugSourcesImagesConst.IMG_SHOW_EXISTING_FILES_ONLY);
+ descriptor.ifPresent(this::setImageDescriptor);
+ if (viewer != null) {
+ DebugSourcesTreeContentProvider contentProvider = (DebugSourcesTreeContentProvider) viewer
+ .getContentProvider();
+ setChecked(contentProvider.isShowExistingFilesOnly());
+ }
+ }
+
+ @Override
+ public void run() {
+ DebugSourcesTreeContentProvider contentProvider = (DebugSourcesTreeContentProvider) viewer.getContentProvider();
+ boolean showExistingFilesOnly = contentProvider.isShowExistingFilesOnly();
+ showExistingFilesOnly = !showExistingFilesOnly;
+ contentProvider.setShowExistingFilesOnly(showExistingFilesOnly);
+
+ for (int i = 0; i < viewer.getTree().getColumnCount(); i++) {
+ DebugSourcesLabelProvider labelProvider = (DebugSourcesLabelProvider) viewer.getLabelProvider(i);
+ labelProvider.setShowExistingFilesOnly(showExistingFilesOnly);
+ }
+
+ setChecked(showExistingFilesOnly);
+ viewer.refresh(true);
+ }
+
+} \ No newline at end of file
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/debugsources/actions/DebugSourcesViewRefresh.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/debugsources/actions/DebugSourcesViewRefresh.java
new file mode 100644
index 00000000000..f1d3d731945
--- /dev/null
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/debugsources/actions/DebugSourcesViewRefresh.java
@@ -0,0 +1,93 @@
+/*******************************************************************************
+ * Copyright (c) 2018, 2019 Kichwa Coders Ltd and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Jonah Graham- Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.dsf.gdb.internal.ui.debugsources.actions;
+
+import org.eclipse.cdt.dsf.gdb.internal.ui.debugsources.DebugSourcesView;
+import org.eclipse.debug.ui.DebugUITools;
+import org.eclipse.debug.ui.contexts.DebugContextEvent;
+import org.eclipse.debug.ui.contexts.IDebugContextListener;
+import org.eclipse.debug.ui.contexts.IDebugContextService;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.ui.IActionDelegate2;
+import org.eclipse.ui.IViewActionDelegate;
+import org.eclipse.ui.IViewPart;
+
+public class DebugSourcesViewRefresh implements IViewActionDelegate, IDebugContextListener, IActionDelegate2 {
+
+ private IViewPart view;
+ private IAction action;
+
+ @Override
+ public void selectionChanged(IAction action, ISelection selection) {
+ this.action = action;
+ updateEnablement();
+ }
+
+ @Override
+ public void init(IViewPart view) {
+ this.view = view;
+ if (view != null) {
+ IDebugContextService debugContextService = DebugUITools.getDebugContextManager()
+ .getContextService(view.getSite().getWorkbenchWindow());
+ debugContextService.addPostDebugContextListener(this);
+ }
+ updateEnablement();
+ }
+
+ private void updateEnablement() {
+ if (view instanceof DebugSourcesView) {
+ DebugSourcesView debugSourcesView = (DebugSourcesView) view;
+ action.setEnabled(debugSourcesView.canRefresh());
+ } else {
+ action.setEnabled(false);
+ }
+ }
+
+ @Override
+ public void init(IAction action) {
+ this.action = action;
+ updateEnablement();
+ }
+
+ @Override
+ public void dispose() {
+ if (view != null) {
+ DebugUITools.getDebugContextManager().getContextService(view.getSite().getWorkbenchWindow())
+ .removePostDebugContextListener(this);
+ view = null;
+ }
+ updateEnablement();
+ }
+
+ @Override
+ public void debugContextChanged(DebugContextEvent event) {
+ updateEnablement();
+ }
+
+ @Override
+ public void run(IAction action) {
+ throw new UnsupportedOperationException("call runWithEvent instead"); //$NON-NLS-1$
+ }
+
+ @Override
+ public void runWithEvent(IAction action, Event event) {
+ if (view instanceof DebugSourcesView) {
+ DebugSourcesView debugSourcesView = (DebugSourcesView) view;
+ debugSourcesView.refresh();
+ }
+ }
+
+}
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/CDebuggerTab.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/CDebuggerTab.java
index c817b791436..12fea2ec06b 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/CDebuggerTab.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/CDebuggerTab.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2016 QNX Software Systems and others.
+ * Copyright (c) 2008, 2021 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -44,7 +44,6 @@ import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
@@ -55,6 +54,7 @@ import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.PlatformUI;
public class CDebuggerTab extends CLaunchConfigurationTab {
/**
@@ -87,8 +87,6 @@ public class CDebuggerTab extends CLaunchConfigurationTab {
protected Button fStopInMain;
protected Text fStopInMainSymbol;
- private ScrolledComposite fContainer;
-
private Composite fContents;
private IContentChangeListener fContentListener = new IContentChangeListener() {
@@ -114,15 +112,9 @@ public class CDebuggerTab extends CLaunchConfigurationTab {
@Override
public void createControl(Composite parent) {
- fContainer = new ScrolledComposite(parent, SWT.V_SCROLL | SWT.H_SCROLL);
- fContainer.setLayoutData(new GridData(GridData.FILL_BOTH));
- fContainer.setLayout(new FillLayout());
- fContainer.setExpandHorizontal(true);
- fContainer.setExpandVertical(true);
-
- fContents = new Composite(fContainer, SWT.NONE);
- setControl(fContainer);
- GdbUIPlugin.getDefault().getWorkbench().getHelpSystem().setHelp(getControl(),
+ fContents = new Composite(parent, SWT.NONE);
+ setControl(fContents);
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(getControl(),
ICDTLaunchHelpContextIds.LAUNCH_CONFIGURATION_DIALOG_DEBBUGER_TAB);
int numberOfColumns = fAttachMode ? 2 : 1;
GridLayout layout = new GridLayout(numberOfColumns, false);
@@ -136,8 +128,6 @@ public class CDebuggerTab extends CLaunchConfigurationTab {
createOptionsComposite(fContents);
createDebuggerGroup(fContents, 2);
-
- fContainer.setContent(fContents);
}
protected void initDebuggerTypes(String selection) {
@@ -377,7 +367,8 @@ public class CDebuggerTab extends CLaunchConfigurationTab {
}
protected void contentsChanged() {
- fContainer.setMinSize(fContents.computeSize(SWT.DEFAULT, SWT.DEFAULT));
+ ScrolledComposite parent = (ScrolledComposite) fContents.getParent();
+ parent.setMinSize(fContents.computeSize(SWT.DEFAULT, SWT.DEFAULT));
}
protected void loadDynamicDebugArea() {
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/GdbCoreDebuggerPage.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/GdbCoreDebuggerPage.java
index d645e5c5c1a..acb289bea7a 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/GdbCoreDebuggerPage.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/GdbCoreDebuggerPage.java
@@ -27,6 +27,8 @@ import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CTabFolder;
+import org.eclipse.swt.custom.CTabItem;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
@@ -38,8 +40,6 @@ import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.TabFolder;
-import org.eclipse.swt.widgets.TabItem;
import org.eclipse.swt.widgets.Text;
/**
@@ -49,7 +49,7 @@ import org.eclipse.swt.widgets.Text;
* @since 2.0
*/
public class GdbCoreDebuggerPage extends AbstractCDebuggerPage implements Observer {
- protected TabFolder fTabFolder;
+ protected CTabFolder fTabFolder;
protected Text fGDBCommandText;
protected Text fGDBInitText;
@@ -61,7 +61,7 @@ public class GdbCoreDebuggerPage extends AbstractCDebuggerPage implements Observ
Composite comp = new Composite(parent, SWT.NONE);
comp.setLayout(new GridLayout());
comp.setLayoutData(new GridData(GridData.FILL_BOTH));
- fTabFolder = new TabFolder(comp, SWT.NONE);
+ fTabFolder = new CTabFolder(comp, SWT.NONE);
fTabFolder.setLayoutData(new GridData(GridData.FILL_BOTH | GridData.GRAB_VERTICAL));
createTabs(fTabFolder);
fTabFolder.setSelection(0);
@@ -163,13 +163,13 @@ public class GdbCoreDebuggerPage extends AbstractCDebuggerPage implements Observ
return block;
}
- public void createTabs(TabFolder tabFolder) {
+ public void createTabs(CTabFolder tabFolder) {
createMainTab(tabFolder);
createSolibTab(tabFolder);
}
- public void createMainTab(TabFolder tabFolder) {
- TabItem tabItem = new TabItem(tabFolder, SWT.NONE);
+ public void createMainTab(CTabFolder tabFolder) {
+ CTabItem tabItem = new CTabItem(tabFolder, SWT.NONE);
tabItem.setText(LaunchUIMessages.getString("GDBDebuggerPage.main_tab_name")); //$NON-NLS-1$
Composite comp = ControlFactory.createCompositeEx(tabFolder, 1, GridData.FILL_BOTH);
((GridLayout) comp.getLayout()).makeColumnsEqualWidth = false;
@@ -269,8 +269,8 @@ public class GdbCoreDebuggerPage extends AbstractCDebuggerPage implements Observ
label.setLayoutData(gd);
}
- public void createSolibTab(TabFolder tabFolder) {
- TabItem tabItem = new TabItem(tabFolder, SWT.NONE);
+ public void createSolibTab(CTabFolder tabFolder) {
+ CTabItem tabItem = new CTabItem(tabFolder, SWT.NONE);
tabItem.setText(LaunchUIMessages.getString("GDBDebuggerPage.shared_libraries")); //$NON-NLS-1$
Composite comp = ControlFactory.createCompositeEx(fTabFolder, 1, GridData.FILL_BOTH);
comp.setFont(tabFolder.getFont());
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/GdbDebuggerPage.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/GdbDebuggerPage.java
index da39e99a2be..50b1a69cde1 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/GdbDebuggerPage.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/GdbDebuggerPage.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2017 QNX Software Systems and others.
+ * Copyright (c) 2008, 2020 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -22,6 +22,7 @@ import java.util.Observable;
import java.util.Observer;
import org.eclipse.cdt.debug.ui.AbstractCDebuggerPage;
+import org.eclipse.cdt.dsf.gdb.IGDBFlatpakLaunchConstants;
import org.eclipse.cdt.dsf.gdb.IGDBLaunchConfigurationConstants;
import org.eclipse.cdt.dsf.gdb.IGdbDebugPreferenceConstants;
import org.eclipse.cdt.dsf.gdb.internal.ui.GdbUIPlugin;
@@ -32,6 +33,8 @@ import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CTabFolder;
+import org.eclipse.swt.custom.CTabItem;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
@@ -42,9 +45,8 @@ import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.FileDialog;
+import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.TabFolder;
-import org.eclipse.swt.widgets.TabItem;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.PlatformUI;
@@ -52,7 +54,7 @@ import org.eclipse.ui.PlatformUI;
* The dynamic tab for gdb-based debugger implementations.
*/
public class GdbDebuggerPage extends AbstractCDebuggerPage implements Observer {
- protected TabFolder fTabFolder;
+ protected CTabFolder fTabFolder;
protected Text fGDBCommandText;
protected Text fGDBInitText;
protected Button fNonStopCheckBox;
@@ -66,6 +68,12 @@ public class GdbDebuggerPage extends AbstractCDebuggerPage implements Observer {
protected Button fUpdateThreadlistOnSuspend;
protected Button fDebugOnFork;
+
+ protected Text fGDBServerCommandText;
+ protected Text fGDBServerPortNumberText;
+ protected Button fRemoteTimeoutEnabledCheckbox;
+ protected Text fRemoteTimeoutValueText;
+
/**
* Checkbox for using GDB's new-console -- only displayed on Windows. Will be null if unsupported.
*/
@@ -87,7 +95,7 @@ public class GdbDebuggerPage extends AbstractCDebuggerPage implements Observer {
Composite comp = new Composite(parent, SWT.NONE);
comp.setLayout(new GridLayout());
comp.setLayoutData(new GridData(GridData.FILL_BOTH));
- fTabFolder = new TabFolder(comp, SWT.NONE);
+ fTabFolder = new CTabFolder(comp, SWT.NONE);
fTabFolder.setLayoutData(new GridData(GridData.FILL_BOTH | GridData.GRAB_VERTICAL));
createTabs(fTabFolder);
fTabFolder.setSelection(0);
@@ -118,6 +126,18 @@ public class GdbDebuggerPage extends AbstractCDebuggerPage implements Observer {
if (fSolibBlock != null)
fSolibBlock.setDefaults(configuration);
+
+ if (System.getenv("FLATPAK_SANDBOX_DIR") != null) { //$NON-NLS-1$
+ configuration.setAttribute(IGDBFlatpakLaunchConstants.ATTR_GDBSERVER_COMMAND,
+ IGDBFlatpakLaunchConstants.ATTR_GDBSERVER_COMMAND_DEFAULT);
+ configuration.setAttribute(IGDBFlatpakLaunchConstants.ATTR_GDBSERVER_PORT,
+ IGDBFlatpakLaunchConstants.ATTR_GDBSERVER_PORT_DEFAULT);
+ configuration.setAttribute(IGDBLaunchConfigurationConstants.ATTR_DEBUGGER_REMOTE_TIMEOUT_ENABLED,
+ IGDBLaunchConfigurationConstants.DEBUGGER_REMOTE_TIMEOUT_ENABLED_DEFAULT);
+ configuration.setAttribute(IGDBLaunchConfigurationConstants.ATTR_DEBUGGER_REMOTE_TIMEOUT_VALUE,
+ IGDBLaunchConfigurationConstants.DEBUGGER_REMOTE_TIMEOUT_VALUE_DEFAULT);
+ }
+
}
@Override
@@ -188,6 +208,23 @@ public class GdbDebuggerPage extends AbstractCDebuggerPage implements Observer {
fExternalConsole.setSelection(externalConsole);
}
+ if (System.getenv("FLATPAK_SANDBOX_DIR") != null) { //$NON-NLS-1$
+ String gdbServerCommand = getStringAttr(configuration, IGDBFlatpakLaunchConstants.ATTR_GDBSERVER_COMMAND,
+ IGDBFlatpakLaunchConstants.ATTR_GDBSERVER_COMMAND_DEFAULT);
+ boolean remoteTimeoutEnabled = getBooleanAttr(configuration,
+ IGDBLaunchConfigurationConstants.ATTR_DEBUGGER_REMOTE_TIMEOUT_ENABLED,
+ preferenceStore.getBoolean(IGdbDebugPreferenceConstants.PREF_DEFAULT_REMOTE_TIMEOUT_ENABLED));
+ String remoteTimeOut = getStringAttr(configuration,
+ IGDBLaunchConfigurationConstants.ATTR_DEBUGGER_REMOTE_TIMEOUT_VALUE,
+ preferenceStore.getString(IGdbDebugPreferenceConstants.PREF_DEFAULT_REMOTE_TIMEOUT_VALUE));
+ String port = getStringAttr(configuration, IGDBFlatpakLaunchConstants.ATTR_GDBSERVER_PORT,
+ IGDBFlatpakLaunchConstants.ATTR_GDBSERVER_PORT_DEFAULT);
+ fGDBServerCommandText.setText(gdbServerCommand);
+ fRemoteTimeoutEnabledCheckbox.setSelection(remoteTimeoutEnabled);
+ fRemoteTimeoutValueText.setText(remoteTimeOut);
+ fGDBServerPortNumberText.setText(port);
+ }
+
updateTracepointModeFromConfig(configuration);
setInitializing(false);
@@ -289,6 +326,18 @@ public class GdbDebuggerPage extends AbstractCDebuggerPage implements Observer {
if (fSolibBlock != null)
fSolibBlock.performApply(configuration);
+
+ if (System.getenv("FLATPAK_SANDBOX_DIR") != null) { //$NON-NLS-1$
+ configuration.setAttribute(IGDBFlatpakLaunchConstants.ATTR_GDBSERVER_COMMAND,
+ fGDBServerCommandText.getText());
+ configuration.setAttribute(IGDBFlatpakLaunchConstants.ATTR_GDBSERVER_PORT,
+ fGDBServerPortNumberText.getText());
+ configuration.setAttribute(IGDBLaunchConfigurationConstants.ATTR_DEBUGGER_REMOTE_TIMEOUT_ENABLED,
+ fRemoteTimeoutEnabledCheckbox.getSelection());
+ configuration.setAttribute(IGDBLaunchConfigurationConstants.ATTR_DEBUGGER_REMOTE_TIMEOUT_VALUE,
+ fRemoteTimeoutValueText.getText());
+ }
+
}
@Override
@@ -324,13 +373,94 @@ public class GdbDebuggerPage extends AbstractCDebuggerPage implements Observer {
return block;
}
- public void createTabs(TabFolder tabFolder) {
+ public void createTabs(CTabFolder tabFolder) {
createMainTab(tabFolder);
createSolibTab(tabFolder);
+ if (System.getenv("FLATPAK_SANDBOX_DIR") != null) { //$NON-NLS-1$
+ createFlatpakTab(tabFolder);
+ }
+ }
+
+ public void createFlatpakTab(CTabFolder tabFolder) {
+ CTabItem tabItem = new CTabItem(tabFolder, SWT.NONE);
+ tabItem.setText(LaunchUIMessages.getString("GDBDebuggerPage.flatpak_tab_name")); //$NON-NLS-1$
+ Composite comp = ControlFactory.createCompositeEx(tabFolder, 1, GridData.FILL_BOTH);
+ ((GridLayout) comp.getLayout()).makeColumnsEqualWidth = false;
+ tabItem.setControl(comp);
+
+ Composite subComp = new Composite(comp, SWT.NULL);
+ subComp.setLayout(new GridLayout(2, true));
+ subComp.setLayoutData(new GridData(GridData.FILL_BOTH));
+ ((GridLayout) subComp.getLayout()).makeColumnsEqualWidth = false;
+ subComp.setFont(tabFolder.getFont());
+
+ Label label = new Label(subComp, SWT.LEFT);
+ label.setText(LaunchUIMessages.getString("GDBDebuggerPage.gdbserver_name_textfield_label")); //$NON-NLS-1$
+ GridData gd = new GridData();
+ label.setLayoutData(gd);
+
+ fGDBServerCommandText = new Text(subComp, SWT.SINGLE | SWT.BORDER);
+ GridData data = new GridData(SWT.FILL, SWT.TOP, true, false);
+ fGDBServerCommandText.setLayoutData(data);
+ fGDBServerCommandText.addModifyListener(new ModifyListener() {
+
+ @Override
+ public void modifyText(ModifyEvent evt) {
+ updateLaunchConfigurationDialog();
+ }
+ });
+ label = new Label(subComp, SWT.LEFT);
+ label.setText(LaunchUIMessages.getString("GDBDebuggerPage.port_number_textfield_label")); //$NON-NLS-1$
+ gd = new GridData();
+ label.setLayoutData(gd);
+
+ fGDBServerPortNumberText = new Text(subComp, SWT.SINGLE | SWT.BORDER);
+ data = new GridData(SWT.FILL, SWT.TOP, true, false);
+ fGDBServerPortNumberText.setLayoutData(data);
+ fGDBServerPortNumberText.addModifyListener(new ModifyListener() {
+
+ @Override
+ public void modifyText(ModifyEvent evt) {
+ updateLaunchConfigurationDialog();
+ }
+ });
+
+ fRemoteTimeoutEnabledCheckbox = new Button(subComp, SWT.CHECK);
+ fRemoteTimeoutEnabledCheckbox
+ .setText(LaunchUIMessages.getString("GDBDebuggerPage.gdbserver_Settings_Remotetimeout_label")); //$NON-NLS-1$
+ fRemoteTimeoutEnabledCheckbox
+ .setToolTipText(LaunchUIMessages.getString("GDBDebuggerPage.gdbserver_Settings_Remotetimeout_tooltip")); //$NON-NLS-1$
+ gd = new GridData();
+ fRemoteTimeoutEnabledCheckbox.setLayoutData(gd);
+ fRemoteTimeoutEnabledCheckbox.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ remoteTimeoutEnabledChanged();
+ updateLaunchConfigurationDialog();
+ }
+ });
+
+ fRemoteTimeoutValueText = new Text(subComp, SWT.SINGLE | SWT.BORDER);
+ data = new GridData(SWT.FILL, SWT.TOP, true, false);
+ fRemoteTimeoutValueText.setLayoutData(data);
+ fRemoteTimeoutValueText
+ .setToolTipText(LaunchUIMessages.getString("GDBDebuggerPage.gdbserver_Settings_Remotetimeout_tooltip")); //$NON-NLS-1$
+ fRemoteTimeoutValueText.addModifyListener(new ModifyListener() {
+
+ @Override
+ public void modifyText(ModifyEvent evt) {
+ updateLaunchConfigurationDialog();
+ }
+ });
+ remoteTimeoutEnabledChanged();
+ }
+
+ private void remoteTimeoutEnabledChanged() {
+ fRemoteTimeoutValueText.setEnabled(fRemoteTimeoutEnabledCheckbox.getSelection());
}
- public void createMainTab(TabFolder tabFolder) {
- TabItem tabItem = new TabItem(tabFolder, SWT.NONE);
+ public void createMainTab(CTabFolder tabFolder) {
+ CTabItem tabItem = new CTabItem(tabFolder, SWT.NONE);
tabItem.setText(LaunchUIMessages.getString("GDBDebuggerPage.main_tab_name")); //$NON-NLS-1$
Composite comp = ControlFactory.createCompositeEx(tabFolder, 1, GridData.FILL_BOTH);
((GridLayout) comp.getLayout()).makeColumnsEqualWidth = false;
@@ -492,8 +622,8 @@ public class GdbDebuggerPage extends AbstractCDebuggerPage implements Observer {
fReverseDebugMode.select(0);
}
- public void createSolibTab(TabFolder tabFolder) {
- TabItem tabItem = new TabItem(tabFolder, SWT.NONE);
+ public void createSolibTab(CTabFolder tabFolder) {
+ CTabItem tabItem = new CTabItem(tabFolder, SWT.NONE);
tabItem.setText(LaunchUIMessages.getString("GDBDebuggerPage.shared_libraries")); //$NON-NLS-1$
Composite comp = ControlFactory.createCompositeEx(fTabFolder, 1, GridData.FILL_BOTH);
comp.setFont(tabFolder.getFont());
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/GdbServerDebuggerPage.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/GdbServerDebuggerPage.java
index 05c6e415fab..9a6ffe434bb 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/GdbServerDebuggerPage.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/GdbServerDebuggerPage.java
@@ -29,12 +29,12 @@ import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
import org.eclipse.jface.layout.PixelConverter;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CTabFolder;
+import org.eclipse.swt.custom.CTabItem;
import org.eclipse.swt.custom.StackLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.TabFolder;
-import org.eclipse.swt.widgets.TabItem;
/**
* The dynamic debugger tab for remote launches using gdb server.
@@ -71,8 +71,8 @@ public class GdbServerDebuggerPage extends GdbDebuggerPage {
createRemoteTimeoutFields();
}
- protected void createConnectionTab(TabFolder tabFolder) {
- TabItem tabItem = new TabItem(tabFolder, SWT.NONE);
+ protected void createConnectionTab(CTabFolder tabFolder) {
+ CTabItem tabItem = new CTabItem(tabFolder, SWT.NONE);
tabItem.setText(LaunchUIMessages.getString("GDBServerDebuggerPage.10")); //$NON-NLS-1$
Composite comp1 = ControlFactory.createCompositeEx(tabFolder, 1, GridData.FILL_BOTH);
((GridLayout) comp1.getLayout()).makeColumnsEqualWidth = false;
@@ -260,7 +260,7 @@ public class GdbServerDebuggerPage extends GdbDebuggerPage {
}
@Override
- public void createTabs(TabFolder tabFolder) {
+ public void createTabs(CTabFolder tabFolder) {
super.createTabs(tabFolder);
createConnectionTab(tabFolder);
}
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/LaunchUIMessages.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/LaunchUIMessages.java
index da7d91e0d97..05cf4442cde 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/LaunchUIMessages.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/LaunchUIMessages.java
@@ -13,11 +13,10 @@
*******************************************************************************/
package org.eclipse.cdt.dsf.gdb.internal.ui.launching;
+import java.text.MessageFormat;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
-import com.ibm.icu.text.MessageFormat;
-
public class LaunchUIMessages {
private static final String BUNDLE_NAME = "org.eclipse.cdt.dsf.gdb.internal.ui.launching.LaunchUIMessages";//$NON-NLS-1$
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/LaunchUIMessages.properties b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/LaunchUIMessages.properties
index 80164ffcc54..148badd9cd4 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/LaunchUIMessages.properties
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/LaunchUIMessages.properties
@@ -1,5 +1,5 @@
###############################################################################
-# Copyright (c) 2003, 2018 QNX Software Systems and others.
+# Copyright (c) 2003, 2020 QNX Software Systems and others.
#
# This program and the accompanying materials
# are made available under the terms of the Eclipse Public License 2.0
@@ -37,6 +37,13 @@ GDBDebuggerPage.tracepoint_mode_label=Tracepoint mode:
GDBDebuggerPage.tracepoint_mode_fast=Fast
GDBDebuggerPage.tracepoint_mode_normal=Normal
GDBDebuggerPage.tracepoint_mode_auto=Automatic
+
+GDBDebuggerPage.flatpak_tab_name=Flatpak
+GDBDebuggerPage.gdbserver_name_textfield_label=GDB server:
+GDBDebuggerPage.port_number_textfield_label=Port:
+GDBDebuggerPage.gdbserver_Settings_Remotetimeout_label=Remote timeout (seconds):
+GDBDebuggerPage.gdbserver_Settings_Remotetimeout_tooltip=Timeout for the remote target to respond. If unchecked, uses GDB default value. See GDB's help for "set remotetimeout num".
+
StandardGDBDebuggerPage.0=Debugger executable must be specified.
StandardGDBDebuggerPage.1=GDB Debugger Options
StandardGDBDebuggerPage.2=Main
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/ProcessPrompter.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/ProcessPrompter.java
index 770db858d63..2bd1434b324 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/ProcessPrompter.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/ProcessPrompter.java
@@ -36,8 +36,6 @@ import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.dialogs.ISelectionStatusValidator;
-import com.ibm.icu.text.MessageFormat;
-
public class ProcessPrompter implements IStatusHandler {
public static class PrompterInfo {
@@ -181,8 +179,8 @@ public class ProcessPrompter implements IStatusHandler {
for (Object sel : selection) {
String pid = Integer.toString(((IProcessExtendedInfo) sel).getPid(), 10);
if (prompterInfo.debuggedProcesses.contains(pid)) {
- return new Status(IStatus.ERROR, GdbUIPlugin.getUniqueIdentifier(), MessageFormat
- .format(LaunchUIMessages.getString("ProcessPrompter.ErrProcessConected"), pid)); //$NON-NLS-1$
+ return new Status(IStatus.ERROR, GdbUIPlugin.getUniqueIdentifier(),
+ LaunchUIMessages.getFormattedString("ProcessPrompter.ErrProcessConected", pid)); //$NON-NLS-1$
}
}
return new Status(IStatus.OK, GdbUIPlugin.getUniqueIdentifier(), ""); //$NON-NLS-1$
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/ProcessPrompterDialog.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/ProcessPrompterDialog.java
index 7cfeabb43ff..1ace78a6c95 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/ProcessPrompterDialog.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/ProcessPrompterDialog.java
@@ -89,7 +89,8 @@ public class ProcessPrompterDialog extends TwoPaneElementSelector {
@Override
public boolean match(Object element) {
- return matcher.matches(elementRenderer.getText(element));
+ String patternString = elementRenderer.getText(element);
+ return patternString != null && matcher.matches(patternString);
}
});
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/osview/AttachProcessHandler.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/osview/AttachProcessHandler.java
index 25d08102ae2..d9260565a74 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/osview/AttachProcessHandler.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/osview/AttachProcessHandler.java
@@ -91,7 +91,7 @@ public class AttachProcessHandler extends AbstractHandler {
return false;
}
- Query<Boolean> canConnectQuery = new Query<Boolean>() {
+ Query<Boolean> canConnectQuery = new Query<>() {
@Override
public void execute(DataRequestMonitor<Boolean> rm) {
BundleContext c = GdbUIPlugin.getDefault().getBundle().getBundleContext();
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/osview/OSResourcesView.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/osview/OSResourcesView.java
index 36040994a26..36a6c379f8f 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/osview/OSResourcesView.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/osview/OSResourcesView.java
@@ -297,7 +297,7 @@ public class OSResourcesView extends ViewPart implements DsfSession.SessionEnded
GdbLaunch l = (GdbLaunch) obj;
final DsfServicesTracker tracker = new DsfServicesTracker(GdbPlugin.getBundleContext(),
l.getSession().getId());
- Query<IDMContext> contextQuery = new Query<IDMContext>() {
+ Query<IDMContext> contextQuery = new Query<>() {
@Override
protected void execute(DataRequestMonitor<IDMContext> rm) {
ICommandControlService commandControl = tracker.getService(ICommandControlService.class);
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/preferences/GdbDebugPreferencePage.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/preferences/GdbDebugPreferencePage.java
index 0eb6abd767b..28aed42482a 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/preferences/GdbDebugPreferencePage.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/preferences/GdbDebugPreferencePage.java
@@ -630,6 +630,13 @@ public class GdbDebugPreferencePage extends FieldEditorPreferencePage implements
group2.setLayout(groupLayout);
group2.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ final IntegerFieldEditor suspendTimeout = new IntegerFieldEditor(
+ IGdbDebugPreferenceConstants.PREF_SUSPEND_TIMEOUT_VALUE,
+ MessagesForPreferences.GdbDebugPreferencePage_suspendTimeout_label, group2);
+ suspendTimeout.setValidRange(5, Integer.MAX_VALUE);
+ suspendTimeout.fillIntoGrid(group2, 3);
+ addField(suspendTimeout);
+
BooleanFieldEditor boolField = new BooleanFieldEditor(IGdbDebugPreferenceConstants.PREF_AUTO_TERMINATE_GDB,
MessagesForPreferences.GdbDebugPreferencePage_autoTerminateGdb_label, group2);
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/preferences/MessagesForPreferences.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/preferences/MessagesForPreferences.java
index aae5e188437..40ec2ffe99d 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/preferences/MessagesForPreferences.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/preferences/MessagesForPreferences.java
@@ -83,6 +83,8 @@ class MessagesForPreferences extends NLS {
public static String GdbDebugPreferencePage_remoteTimeout_label;
public static String GdbDebugPreferencePage_remoteTimeout_tooltip;
+ public static String GdbDebugPreferencePage_suspendTimeout_label;
+
static {
// initialize resource bundle
NLS.initializeMessages(MessagesForPreferences.class.getName(), MessagesForPreferences.class);
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/preferences/MessagesForPreferences.properties b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/preferences/MessagesForPreferences.properties
index 803818bf147..8f63e159308 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/preferences/MessagesForPreferences.properties
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/preferences/MessagesForPreferences.properties
@@ -73,3 +73,5 @@ GdbConsolePreferencePage_BufferLines = Console buffer lines:
GdbDebugPreferencePage_remoteTimeout_label=Remote timeout (seconds):
GdbDebugPreferencePage_remoteTimeout_tooltip=Default timeout for the remote target to respond. If unchecked, uses GDB default value. See GDB's help for "set remotetimeout num".
+
+GdbDebugPreferencePage_suspendTimeout_label=Suspend timeout (seconds): \ No newline at end of file
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/tracepoints/TraceControlModel.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/tracepoints/TraceControlModel.java
index 3d034d61c69..cd8cc64b224 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/tracepoints/TraceControlModel.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/tracepoints/TraceControlModel.java
@@ -245,7 +245,7 @@ public class TraceControlModel {
return null;
}
- Query<ITraceVariableDMData[]> query = new Query<ITraceVariableDMData[]>() {
+ Query<ITraceVariableDMData[]> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<ITraceVariableDMData[]> rm) {
@@ -292,7 +292,7 @@ public class TraceControlModel {
TracepointsMessages.TraceControlView_create_variable_error);
}
- Query<String> query = new Query<String>() {
+ Query<String> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<String> rm) {
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/viewmodel/GdbVariableVMNode.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/viewmodel/GdbVariableVMNode.java
index eb3b2750882..02cedc97d19 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/viewmodel/GdbVariableVMNode.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/viewmodel/GdbVariableVMNode.java
@@ -122,7 +122,7 @@ public class GdbVariableVMNode extends VariableVMNode {
getSession().getExecutor().execute(() -> {
final IExpressions expressionService = getServicesTracker().getService(IExpressions.class);
if (expressionService != null) {
- final DataRequestMonitor<IExpressionDMAddress> drm = new DataRequestMonitor<IExpressionDMAddress>(
+ final DataRequestMonitor<IExpressionDMAddress> drm = new DataRequestMonitor<>(
getSession().getExecutor(), null) {
@Override
public void handleCompleted() {
@@ -161,7 +161,7 @@ public class GdbVariableVMNode extends VariableVMNode {
getSession().getExecutor().execute(() -> {
final IExpressions expressionService = getServicesTracker().getService(IExpressions.class);
if (expressionService != null) {
- final DataRequestMonitor<IExpressionDMAddress> drm = new DataRequestMonitor<IExpressionDMAddress>(
+ final DataRequestMonitor<IExpressionDMAddress> drm = new DataRequestMonitor<>(
getSession().getExecutor(), null) {
@Override
public void handleCompleted() {
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/viewmodel/breakpoints/GdbBreakpointVMProvider.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/viewmodel/breakpoints/GdbBreakpointVMProvider.java
index f2d31424529..a7834a2442f 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/viewmodel/breakpoints/GdbBreakpointVMProvider.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/viewmodel/breakpoints/GdbBreakpointVMProvider.java
@@ -48,6 +48,7 @@ import org.eclipse.cdt.dsf.mi.service.IMIContainerDMContext;
import org.eclipse.cdt.dsf.mi.service.IMIExecutionDMContext;
import org.eclipse.cdt.dsf.mi.service.MIBreakpointDMData;
import org.eclipse.cdt.dsf.mi.service.MIBreakpointsManager;
+import org.eclipse.cdt.dsf.mi.service.MIBreakpointsSynchronizer;
import org.eclipse.cdt.dsf.service.DsfServicesTracker;
import org.eclipse.cdt.dsf.service.DsfSession;
import org.eclipse.cdt.dsf.ui.viewmodel.AbstractVMAdapter;
@@ -398,4 +399,26 @@ public class GdbBreakpointVMProvider extends BreakpointVMProvider {
rm.done(true);
}
}
+
+ @Override
+ public void refresh() {
+ super.refresh();
+ try {
+ fSession.getExecutor().execute(new DsfRunnable() {
+ @Override
+ public void run() {
+ DsfServicesTracker tracker = new DsfServicesTracker(GdbUIPlugin.getBundleContext(),
+ fSession.getId());
+ MIBreakpointsSynchronizer breakpointsSynchronizer = tracker
+ .getService(MIBreakpointsSynchronizer.class);
+ if (breakpointsSynchronizer != null) {
+ breakpointsSynchronizer.flushCache(null);
+ }
+ tracker.dispose();
+ }
+ });
+ } catch (RejectedExecutionException e) {
+ // Session disposed, ignore.
+ }
+ }
}
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/.classpath b/dsf-gdb/org.eclipse.cdt.dsf.gdb/.classpath
index 22f30643cba..e801ebfb468 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/.classpath
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/.classpath
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/.settings/org.eclipse.core.resources.prefs b/dsf-gdb/org.eclipse.cdt.dsf.gdb/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/.settings/org.eclipse.jdt.core.prefs b/dsf-gdb/org.eclipse.cdt.dsf.gdb/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/.settings/org.eclipse.jdt.core.prefs
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/.settings/org.eclipse.jdt.ui.prefs b/dsf-gdb/org.eclipse.cdt.dsf.gdb/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/.settings/org.eclipse.jdt.ui.prefs
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/META-INF/MANIFEST.MF b/dsf-gdb/org.eclipse.cdt.dsf.gdb/META-INF/MANIFEST.MF
index f040489bedb..439cdcab572 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/META-INF/MANIFEST.MF
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@ Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-Vendor: %providerName
Bundle-SymbolicName: org.eclipse.cdt.dsf.gdb;singleton:=true
-Bundle-Version: 5.7.300.qualifier
+Bundle-Version: 6.6.0.qualifier
Bundle-Activator: org.eclipse.cdt.dsf.gdb.internal.GdbPlugin
Bundle-Localization: plugin
Require-Bundle: org.eclipse.core.runtime,
@@ -12,14 +12,14 @@ Require-Bundle: org.eclipse.core.runtime,
org.eclipse.cdt.core,
org.eclipse.cdt.debug.core,
org.eclipse.core.variables,
- org.eclipse.cdt.launch;bundle-version="9.3.0",
+ org.eclipse.cdt.launch;bundle-version="10.3.0",
org.eclipse.cdt.gdb;bundle-version="7.0.0",
org.eclipse.core.resources,
org.eclipse.launchbar.core;bundle-version="2.0.0";visibility:=reexport,
- org.eclipse.cdt.core.native;bundle-version="[5.10.0,6.0.0)",
+ org.eclipse.cdt.core.native;bundle-version="[6.0.0,7.0.0)",
org.eclipse.cdt.native.serial;bundle-version="1.1.100"
Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Export-Package: org.eclipse.cdt.dsf.gdb,
org.eclipse.cdt.dsf.gdb.actions,
org.eclipse.cdt.dsf.gdb.breakpoints,
@@ -48,5 +48,4 @@ Export-Package: org.eclipse.cdt.dsf.gdb,
org.eclipse.cdt.dsf.mi.service.command.commands,
org.eclipse.cdt.dsf.mi.service.command.events,
org.eclipse.cdt.dsf.mi.service.command.output
-Import-Package: com.ibm.icu.text
Automatic-Module-Name: org.eclipse.cdt.dsf.gdb
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/about.html b/dsf-gdb/org.eclipse.cdt.dsf.gdb/about.html
index 164f781a8fd..b3134865230 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/about.html
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/IGDBFlatpakLaunchConstants.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/IGDBFlatpakLaunchConstants.java
new file mode 100644
index 00000000000..e72b8125a20
--- /dev/null
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/IGDBFlatpakLaunchConstants.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Red Hat.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Red Hat - Initial Contribution
+ *******************************************************************************/
+package org.eclipse.cdt.dsf.gdb;
+
+import org.eclipse.debug.core.DebugPlugin;
+
+/**
+ * Flatpak debugging constants
+ *
+ * @since 6.0
+ */
+public interface IGDBFlatpakLaunchConstants {
+
+ // Attributes that need to match CDT attribute names
+ public static final String ATTR_GDBSERVER_PORT = DebugPlugin.getUniqueIdentifier() + ".ATTR_GDBSERVER_PORT"; //$NON-NLS-1$
+ public static final String ATTR_GDBSERVER_COMMAND = DebugPlugin.getUniqueIdentifier() + ".ATTR_GDBSERVER_COMMAND"; //$NON-NLS-1$
+
+ public static final String ATTR_GDBSERVER_PORT_DEFAULT = "2345"; //$NON-NLS-1$
+ public static final String ATTR_GDBSERVER_COMMAND_DEFAULT = "gdbserver"; //$NON-NLS-1$
+
+}
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/IGdbDebugPreferenceConstants.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/IGdbDebugPreferenceConstants.java
index b000efa2f82..acc672f5ba9 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/IGdbDebugPreferenceConstants.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/IGdbDebugPreferenceConstants.java
@@ -247,4 +247,18 @@ public interface IGdbDebugPreferenceConstants {
* @since 5.5
*/
public static final String PREF_DEFAULT_REMOTE_TIMEOUT_VALUE = "defaultRemoteTimeoutValue"; //$NON-NLS-1$
+
+ /**
+ * The value of suspend timeout
+ *
+ * @since 6.5
+ */
+ public static final String PREF_SUSPEND_TIMEOUT_VALUE = "suspendTimeoutValue"; //$NON-NLS-1$
+
+ /**
+ * Default value of {@link #PREF_SUSPEND_TIMEOUT_VALUE}
+ *
+ * @since 6.5
+ */
+ public static final int SUSPEND_TIMEOUT_VALUE_DEFAULT = 10;
}
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/internal/GdbPlugin.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/internal/GdbPlugin.java
index 9b79416996b..8f1e49ce66e 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/internal/GdbPlugin.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/internal/GdbPlugin.java
@@ -114,7 +114,7 @@ public class GdbPlugin extends Plugin {
if (launch instanceof GdbLaunch && ((GdbLaunch) launch).getSession().isActive()) {
final GdbLaunch gdbLaunch = (GdbLaunch) launch;
- Query<Object> launchShutdownQuery = new Query<Object>() {
+ Query<Object> launchShutdownQuery = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Object> rm) {
gdbLaunch.shutdownSession(rm);
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/internal/GdbPreferenceInitializer.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/internal/GdbPreferenceInitializer.java
index 8056d779697..d2ae06c4822 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/internal/GdbPreferenceInitializer.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/internal/GdbPreferenceInitializer.java
@@ -71,5 +71,7 @@ public class GdbPreferenceInitializer extends AbstractPreferenceInitializer {
IGDBLaunchConfigurationConstants.DEBUGGER_REMOTE_TIMEOUT_ENABLED_DEFAULT);
node.put(IGdbDebugPreferenceConstants.PREF_DEFAULT_REMOTE_TIMEOUT_VALUE,
IGDBLaunchConfigurationConstants.DEBUGGER_REMOTE_TIMEOUT_VALUE_DEFAULT);
+ node.putInt(IGdbDebugPreferenceConstants.PREF_SUSPEND_TIMEOUT_VALUE,
+ IGdbDebugPreferenceConstants.SUSPEND_TIMEOUT_VALUE_DEFAULT);
}
}
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/internal/launching/CoreBuildLocalDebugLaunchDelegate.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/internal/launching/CoreBuildLocalDebugLaunchDelegate.java
index 8af06ee4fac..24877b3c275 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/internal/launching/CoreBuildLocalDebugLaunchDelegate.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/internal/launching/CoreBuildLocalDebugLaunchDelegate.java
@@ -59,7 +59,11 @@ public class CoreBuildLocalDebugLaunchDelegate extends CoreBuildLaunchConfigDele
} else {
locator.initializeFromMemento(memento, configuration);
}
-
+ String type = configuration.getAttribute(ILaunchConfiguration.ATTR_SOURCE_LOCATOR_ID, (String) null);
+ if (type == null) {
+ type = configuration.getType().getSourceLocatorId();
+ }
+ locator.setId(type);
launch.setSourceLocator(locator);
return launch;
}
@@ -100,7 +104,7 @@ public class CoreBuildLocalDebugLaunchDelegate extends CoreBuildLaunchConfigDele
gdbLaunch.addCLIProcess(gdbLaunch.getGDBPath().toOSString() + " (" + gdbVersion + ")"); //$NON-NLS-1$ //$NON-NLS-2$
- Query<Object> ready = new Query<Object>() {
+ Query<Object> ready = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<Object> rm) {
DsfServicesTracker tracker = new DsfServicesTracker(
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/internal/launching/FlatpakLaunch.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/internal/launching/FlatpakLaunch.java
new file mode 100644
index 00000000000..fb7b68fc09b
--- /dev/null
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/internal/launching/FlatpakLaunch.java
@@ -0,0 +1,315 @@
+/*******************************************************************************
+ * Copyright (c) 2020, 2021 Red Hat and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Red Hat - Initial Contribution
+ *******************************************************************************/
+package org.eclipse.cdt.dsf.gdb.internal.launching;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import org.eclipse.cdt.core.CCorePlugin;
+import org.eclipse.cdt.core.cdtvariables.CdtVariableException;
+import org.eclipse.cdt.core.cdtvariables.ICdtVariable;
+import org.eclipse.cdt.core.cdtvariables.ICdtVariableManager;
+import org.eclipse.cdt.core.envvar.IEnvironmentVariable;
+import org.eclipse.cdt.core.model.CoreModel;
+import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
+import org.eclipse.cdt.core.settings.model.ICProjectDescription;
+import org.eclipse.cdt.debug.core.ICDTLaunchConfigurationConstants;
+import org.eclipse.cdt.dsf.gdb.IGDBFlatpakLaunchConstants;
+import org.eclipse.cdt.dsf.gdb.IGDBLaunchConfigurationConstants;
+import org.eclipse.cdt.dsf.gdb.internal.GdbPlugin;
+import org.eclipse.cdt.dsf.gdb.launching.LaunchMessages;
+import org.eclipse.cdt.utils.pty.PTY;
+import org.eclipse.cdt.utils.spawner.ProcessFactory;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.variables.VariablesPlugin;
+import org.eclipse.debug.core.DebugException;
+import org.eclipse.debug.core.DebugPlugin;
+import org.eclipse.debug.core.ILaunch;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
+import org.eclipse.debug.core.model.IProcess;
+
+public class FlatpakLaunch {
+
+ private final static String LOCAL_HOST = "localhost"; //$NON-NLS-1$
+ private final static String FLATPAK_DEBUG_PROCESS_LABEL = "FlatpakDebugProcess_label"; //$NON-NLS-1$
+
+ public FlatpakLaunch() {
+ }
+
+ private String[] getLaunchEnvironment(IProject project, ILaunchConfiguration config) throws CoreException {
+ HashMap<String, String> envMap = new HashMap<>();
+ ICProjectDescription projDesc = CoreModel.getDefault().getProjectDescription(project, false);
+ if (projDesc != null) {
+ String buildConfigID = config.getAttribute(ICDTLaunchConfigurationConstants.ATTR_PROJECT_BUILD_CONFIG_ID,
+ ""); //$NON-NLS-1$
+ ICConfigurationDescription cfg = null;
+ if (buildConfigID.length() != 0) {
+ cfg = projDesc.getConfigurationById(buildConfigID);
+ }
+
+ // if configuration is null fall-back to active
+ if (cfg == null) {
+ cfg = projDesc.getActiveConfiguration();
+ }
+
+ // Environment variables and inherited vars
+ IEnvironmentVariable[] vars = CCorePlugin.getDefault().getBuildEnvironmentManager().getVariables(cfg, true);
+ for (IEnvironmentVariable var : vars) {
+ envMap.put(var.getName(), var.getValue());
+ }
+
+ // Add variables from build info
+ ICdtVariableManager manager = CCorePlugin.getDefault().getCdtVariableManager();
+ ICdtVariable[] buildVars = manager.getVariables(cfg);
+ for (ICdtVariable var : buildVars) {
+ try {
+ // The project_classpath variable contributed by JDT is
+ // useless for running C/C++ binaries, but it can be lethal
+ // if it has a very large value that exceeds shell limit. See
+ // http://bugs.eclipse.org/bugs/show_bug.cgi?id=408522
+ if (!"project_classpath".equals(var.getName())) {//$NON-NLS-1$
+ String value = manager.resolveValue(var.getStringValue(), "", File.pathSeparator, cfg); //$NON-NLS-1$
+ envMap.put(var.getName(), value);
+ }
+ } catch (CdtVariableException e) {
+ // Some Eclipse dynamic variables can't be resolved
+ // dynamically... we don't care.
+ }
+ }
+ }
+
+ // Turn it into an envp format
+ List<String> strings = new ArrayList<>(envMap.size());
+ for (Entry<String, String> entry : envMap.entrySet()) {
+ StringBuilder buffer = new StringBuilder(entry.getKey());
+ buffer.append('=').append(entry.getValue());
+ strings.add(buffer.toString());
+ }
+
+ return strings.toArray(new String[strings.size()]);
+ }
+
+ protected Map<String, String> createProcessAttributes() {
+ Map<String, String> attributes = new HashMap<>();
+
+ // Specify that the process factory (GdbProcessFactory) should use
+ // InferiorRuntimeProcess to wrap
+ // the process that we are about to run.
+ // Note that GdbProcessFactory is only used for launches created using
+ // DSF-GDB not CDI
+ attributes.put("org.eclipse.cdt.dsf.gdb.createProcessType" /* IGdbDebugConstants.PROCESS_TYPE_CREATION_ATTR */, //$NON-NLS-1$
+ "org.eclipse.cdt.dsf.gdb.inferiorProcess" /* IGdbDebugConstants.INFERIOR_PROCESS_CREATION_VALUE */); //$NON-NLS-1$
+
+ // Show the exit code of the process in the console title once it has
+ // terminated
+ attributes.put("org.eclipse.cdt.dsf.gdb.inferiorExited" /* IGdbDebugConstants.INFERIOR_EXITED_ATTR */, //$NON-NLS-1$
+ ""); //$NON-NLS-1$
+ return attributes;
+ }
+
+ public int prelaunch(ILaunchConfiguration configuration, ILaunch launch, IProgressMonitor monitor)
+ throws CoreException {
+
+ IPath commandPath = getCommandPath(configuration);
+ if (commandPath != null) {
+ String projectName = configuration.getAttribute(ICDTLaunchConfigurationConstants.ATTR_PROJECT_NAME, ""); //$NON-NLS-1$
+ IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
+ String gdbserverPortNumber = configuration.getAttribute(IGDBFlatpakLaunchConstants.ATTR_GDBSERVER_PORT,
+ IGDBFlatpakLaunchConstants.ATTR_GDBSERVER_PORT_DEFAULT);
+
+ // Do not modify port string value by adding any suffix like `/tcp`, to the port string,
+ // keeping it clean port number value on order to make NODE:PORT-like address string later
+ // when a DGB launch is created
+ // See: https://github.com/flathub/org.eclipse.Java/issues/36
+ String gdbserverPort = gdbserverPortNumber;
+
+ String gdbserverCommand = configuration.getAttribute(IGDBFlatpakLaunchConstants.ATTR_GDBSERVER_COMMAND,
+ IGDBFlatpakLaunchConstants.ATTR_GDBSERVER_COMMAND_DEFAULT);
+
+ String commandString = commandPath.toPortableString();
+ String commandDir = commandPath.removeLastSegments(1).toPortableString();
+
+ if (commandPath.getDevice() != null) {
+ commandDir = "/" + commandDir.replace(':', '/'); //$NON-NLS-1$
+ commandString = "/" + commandString.replace(':', '/'); //$NON-NLS-1$
+ }
+
+ String commandArguments = ":" + gdbserverPortNumber + " " //$NON-NLS-1$ //$NON-NLS-2$
+ + spaceEscapify(commandString);
+
+ StringBuilder b = new StringBuilder();
+
+ String[] commandArray = new String[3];
+ commandArray[0] = "/bin/sh"; //$NON-NLS-1$
+ commandArray[1] = "-c"; //$NON-NLS-1$
+ commandArray[2] = b.append(gdbserverCommand).append(' ').append(commandArguments).toString();
+
+ String arguments = getProgramArguments(configuration);
+ if (arguments.trim().length() > 0) {
+ b.append(" "); //$NON-NLS-1$
+ b.append(arguments);
+ }
+
+ String workingDir = configuration.getAttribute(ICDTLaunchConfigurationConstants.ATTR_WORKING_DIRECTORY,
+ (String) null);
+ // if we don't have a working directory, the default is to use
+ // the project
+ if (workingDir == null && projectName != null) {
+ workingDir = project.getLocation().toOSString();
+ }
+ if (workingDir != null) {
+ IPath workingPath = new Path(workingDir);
+ if (workingPath.getDevice() != null) {
+ workingDir = "/" + workingPath.toPortableString() //$NON-NLS-1$
+ .replace(':', '/');
+ }
+ }
+
+ String[] envp = getLaunchEnvironment(project, configuration);
+ boolean gdbserverStarted = false;
+ try {
+ Process p = ProcessFactory.getFactory().exec(commandArray, envp, new File(workingDir),
+ new PTY(PTY.Mode.TERMINAL));
+ IProcess gdbserver = DebugPlugin.newProcess(launch, p,
+ LaunchMessages.getString(FLATPAK_DEBUG_PROCESS_LABEL), createProcessAttributes());
+ Thread.sleep(200); // pause to allow gdbserver to start
+ try {
+ @SuppressWarnings("unused")
+ int rc = gdbserver.getExitValue(); // verify gdbserver is started
+ } catch (DebugException e2) {
+ gdbserverStarted = true;
+ }
+ } catch (IOException e) {
+ GdbPlugin.log(e);
+ } catch (InterruptedException e) {
+ DebugPlugin.log(e);
+ }
+
+ // if gdbserver started successfully launch the debugger
+ if (gdbserverStarted) {
+ // Let debugger know how gdbserver was started on the remote
+ // container
+ ILaunchConfigurationWorkingCopy wc = configuration.getWorkingCopy();
+ wc.setAttribute(IGDBLaunchConfigurationConstants.ATTR_REMOTE_TCP, true);
+ wc.setAttribute(ICDTLaunchConfigurationConstants.ATTR_DEBUGGER_START_MODE,
+ IGDBLaunchConfigurationConstants.DEBUGGER_MODE_REMOTE);
+ wc.setAttribute(IGDBLaunchConfigurationConstants.ATTR_HOST, LOCAL_HOST);
+ wc.setAttribute(IGDBLaunchConfigurationConstants.ATTR_PORT, gdbserverPort);
+ wc.doSave();
+ return 0;
+ } else {
+ return -1;
+ }
+ }
+ return -1;
+ }
+
+ /**
+ * Get the program arguments and perform substitution.
+ *
+ * @param config
+ * launch configuration
+ * @return argument String
+ * @throws CoreException
+ */
+ private String getProgramArguments(ILaunchConfiguration config) throws CoreException {
+ String args = config.getAttribute(ICDTLaunchConfigurationConstants.ATTR_PROGRAM_ARGUMENTS, ""); //$NON-NLS-1$
+ if (args != null && args.length() > 0) {
+ args = VariablesPlugin.getDefault().getStringVariableManager().performStringSubstitution(args);
+ }
+ return args;
+ }
+
+ /**
+ * Form command path using the project and program name.
+ *
+ * @param configuration
+ * @return command path
+ * @throws CoreException
+ */
+ private IPath getCommandPath(ILaunchConfiguration configuration) throws CoreException {
+ String projectName = configuration.getAttribute(ICDTLaunchConfigurationConstants.ATTR_PROJECT_NAME, ""); //$NON-NLS-1$
+ if (projectName.length() > 0) {
+ IProject project = CCorePlugin.getWorkspace().getRoot().getProject(projectName);
+ if (project == null)
+ return null;
+
+ String name = configuration.getAttribute(ICDTLaunchConfigurationConstants.ATTR_PROGRAM_NAME, ""); //$NON-NLS-1$
+
+ if (name.length() == 0)
+ return null;
+
+ IPath exePath = new Path(name);
+ if (!exePath.isAbsolute()) {
+ IPath location = project.getLocation();
+ if (location == null) {
+ return null;
+ }
+
+ exePath = location.append(name);
+ if (!exePath.toFile().exists()) {
+ // Try the old way, which is required to support linked
+ // resources.
+ IFile projFile = null;
+ try {
+ projFile = project.getFile(name);
+ } catch (IllegalArgumentException e) {
+ // thrown if relative path that resolves to a root file
+ // ("..\somefile")
+ }
+ if (projFile == null || !projFile.exists()) {
+ return null;
+ } else {
+ exePath = projFile.getLocation();
+ }
+ }
+ }
+ if (!exePath.toFile().exists()) {
+ return null;
+ }
+
+ if (!exePath.toFile().isFile()) {
+ return null;
+ }
+ return exePath;
+ } else {
+ return null;
+ }
+ }
+
+ private String spaceEscapify(String inputString) {
+ if (inputString == null)
+ return null;
+
+ return inputString.replaceAll(" ", "\\\\ "); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ public static IProject getProject(ILaunchConfiguration configuration) throws CoreException {
+ // TODO - make sure this is really the correct project
+ return configuration.getMappedResources()[0].getProject();
+ }
+
+}
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/internal/memory/GdbMemoryBlockRetrieval.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/internal/memory/GdbMemoryBlockRetrieval.java
index c0f8e14f2e7..f15500caea2 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/internal/memory/GdbMemoryBlockRetrieval.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/internal/memory/GdbMemoryBlockRetrieval.java
@@ -18,6 +18,7 @@
package org.eclipse.cdt.dsf.gdb.internal.memory;
import java.math.BigInteger;
+import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutionException;
@@ -42,6 +43,7 @@ import org.eclipse.cdt.dsf.gdb.service.IGDBMemory;
import org.eclipse.cdt.dsf.gdb.service.IGDBMemory2;
import org.eclipse.cdt.dsf.service.DsfServices;
import org.eclipse.cdt.dsf.service.DsfSession;
+import org.eclipse.cdt.internal.core.XmlUtil;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IStatus;
@@ -59,8 +61,6 @@ import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
-import com.ibm.icu.text.MessageFormat;
-
/**
* A specialization of the DSF memory block retrieval implementation supporting
* memory spaces. The memory space support is provisional, thus this class is
@@ -370,7 +370,7 @@ public class GdbMemoryBlockRetrieval extends DsfMemoryBlockRetrieval implements
if (service instanceof IMemorySpaces2) {
final IMemorySpaces2 memSpaceService = (IMemorySpaces2) service;
- Query<IMemorySpaces.DecodeResult> query = new Query<IMemorySpaces.DecodeResult>() {
+ Query<IMemorySpaces.DecodeResult> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<IMemorySpaces.DecodeResult> drm) {
memSpaceService.decodeExpression(dmc, expression, drm);
@@ -445,7 +445,7 @@ public class GdbMemoryBlockRetrieval extends DsfMemoryBlockRetrieval implements
}
}
document.appendChild(expressionList);
- return DebugPlugin.serializeDocument(document);
+ return XmlUtil.toString(document);
}
/* (non-Javadoc)
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/FinalLaunchSequence.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/FinalLaunchSequence.java
index 64370c349e8..cf07edf79bd 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/FinalLaunchSequence.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/FinalLaunchSequence.java
@@ -19,6 +19,7 @@
* Anton Gorenkov - A preference to use RTTI for variable types determination (Bug 377536)
* Xavier Raynaud (Kalray) - Avoid duplicating fields in sub-classes (add protected accessors)
* Marc Khouzam (Ericsson) - Output the version of GDB at startup (Bug 455408)
+ * Jonathan Tousignant (NordiaSoft) - Remote session breakpoint (Bug 528145)
*******************************************************************************/
package org.eclipse.cdt.dsf.gdb.launching;
@@ -38,6 +39,7 @@ import org.eclipse.cdt.dsf.concurrent.RequestMonitor;
import org.eclipse.cdt.dsf.concurrent.RequestMonitorWithProgress;
import org.eclipse.cdt.dsf.datamodel.DataModelInitializedEvent;
import org.eclipse.cdt.dsf.datamodel.IDMContext;
+import org.eclipse.cdt.dsf.debug.service.IProcesses.IProcessDMContext;
import org.eclipse.cdt.dsf.debug.service.ISourceLookup.ISourceLookupDMContext;
import org.eclipse.cdt.dsf.debug.service.command.ICommandControlService.ICommandControlDMContext;
import org.eclipse.cdt.dsf.gdb.IGDBLaunchConfigurationConstants;
@@ -50,6 +52,7 @@ import org.eclipse.cdt.dsf.gdb.service.SessionType;
import org.eclipse.cdt.dsf.gdb.service.command.IGDBControl;
import org.eclipse.cdt.dsf.mi.service.CSourceLookup;
import org.eclipse.cdt.dsf.mi.service.IMIProcesses;
+import org.eclipse.cdt.dsf.mi.service.MIProcesses;
import org.eclipse.cdt.dsf.mi.service.command.CommandFactory;
import org.eclipse.cdt.dsf.mi.service.command.output.MIGDBVersionInfo;
import org.eclipse.cdt.dsf.mi.service.command.output.MIInfo;
@@ -63,6 +66,11 @@ import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.Status;
import org.eclipse.debug.core.ILaunch;
+/**
+ * Final launch sequence for GDB < 7.0, extended by subclasses for newer versions.
+ *
+ * @see FinalLaunchSequence_7_0
+ */
public class FinalLaunchSequence extends ReflectionSequence {
// The launchConfiguration attributes
private Map<String, Object> fAttributes;
@@ -134,6 +142,8 @@ public class FinalLaunchSequence extends ReflectionSequence {
"stepNewProcess", //$NON-NLS-1$
// For local attach launch only
"stepAttachToProcess", //$NON-NLS-1$
+ // For remote attach launch only
+ "stepAttachRemoteToDebugger", //$NON-NLS-1$
// Global
"stepDataModelInitializationComplete", //$NON-NLS-1$
"stepCleanup", //$NON-NLS-1$
@@ -643,6 +653,28 @@ public class FinalLaunchSequence extends ReflectionSequence {
}
/**
+ * If we are dealing with an remote attach session, perform the attach to debugger.
+ * Bug 528145
+ * @since 6.6
+ */
+ @Execute
+ public void stepAttachRemoteToDebugger(final RequestMonitor requestMonitor) {
+ if (fGDBBackend.getIsAttachSession() && fGDBBackend.getSessionType() == SessionType.REMOTE) {
+ DataRequestMonitor<Boolean> rm = new DataRequestMonitor<>(getExecutor(), null);
+ fProcService.canDetachDebuggerFromProcess(null, rm);
+
+ if (rm.getData()) {
+ IProcessDMContext processContext = fProcService.createProcessContext(fCommandControl.getContext(),
+ MIProcesses.UNKNOWN_PROCESS_ID);
+ fProcService.attachDebuggerToProcess(processContext,
+ new DataRequestMonitor<IDMContext>(getExecutor(), requestMonitor));
+ return;
+ }
+ }
+ requestMonitor.done();
+ }
+
+ /**
* Indicate that the Data Model has been filled. This will trigger the Debug view to expand.
* @since 4.0
*/
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/FinalLaunchSequence_7_12.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/FinalLaunchSequence_7_12.java
index 3cd02b138e2..6e53e683bd4 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/FinalLaunchSequence_7_12.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/FinalLaunchSequence_7_12.java
@@ -107,11 +107,11 @@ public class FinalLaunchSequence_7_12 extends FinalLaunchSequence_7_7 {
return;
}
- // Use target async for non-stop mode or when the
- // Full GDB CLI console is being used.
+ // Use target async for non-stop mode or when
+ // it is specifically enabled by backend in all-stop mode
// Otherwise Explicitly set target-async to off
boolean asyncOn = false;
- if (isNonStop() || fGdbBackEnd.isFullGdbConsoleSupported()) {
+ if (isNonStop() || fGdbBackEnd.useTargetAsync()) {
asyncOn = true;
}
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/GdbLaunch.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/GdbLaunch.java
index fc302e776de..e072dd4c4de 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/GdbLaunch.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/GdbLaunch.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2006, 2018 Wind River Systems and others.
+ * Copyright (c) 2006, 2021 Wind River Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -14,20 +14,17 @@
* Marc Khouzam (Ericsson) - Create the gdb process through the process factory (Bug 210366)
* Alvaro Sanchez-Leon (Ericsson AB) - Each memory context needs a different MemoryRetrieval (Bug 250323)
* John Dallaway - Resolve variables using launch context (Bug 399460)
+ * John Dallaway - Set GDB process attributes (Bug 572944)
*******************************************************************************/
package org.eclipse.cdt.dsf.gdb.launching;
-import java.io.BufferedReader;
import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.Reader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
+import java.util.Optional;
import java.util.Properties;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
@@ -40,6 +37,7 @@ import org.eclipse.cdt.core.cdtvariables.ICdtVariableManager;
import org.eclipse.cdt.core.envvar.IEnvironmentVariable;
import org.eclipse.cdt.core.model.CoreModel;
import org.eclipse.cdt.core.model.ICProject;
+import org.eclipse.cdt.core.parser.util.StringUtil;
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
import org.eclipse.cdt.core.settings.model.ICProjectDescription;
import org.eclipse.cdt.debug.core.ICDTLaunchConfigurationConstants;
@@ -66,6 +64,7 @@ import org.eclipse.cdt.dsf.gdb.IGdbDebugConstants;
import org.eclipse.cdt.dsf.gdb.IGdbDebugPreferenceConstants;
import org.eclipse.cdt.dsf.gdb.internal.GdbPlugin;
import org.eclipse.cdt.dsf.gdb.internal.memory.GdbMemoryBlockRetrievalManager;
+import org.eclipse.cdt.dsf.gdb.service.IGDBBackend;
import org.eclipse.cdt.dsf.gdb.service.command.IGDBControl;
import org.eclipse.cdt.dsf.service.DsfServiceEventHandler;
import org.eclipse.cdt.dsf.service.DsfServicesTracker;
@@ -92,6 +91,7 @@ import org.eclipse.debug.core.IStatusHandler;
import org.eclipse.debug.core.commands.IDebugCommandRequest;
import org.eclipse.debug.core.commands.IDisconnectHandler;
import org.eclipse.debug.core.commands.ITerminateHandler;
+import org.eclipse.debug.core.model.IProcess;
import org.eclipse.debug.core.model.ISourceLocator;
import org.eclipse.launchbar.core.target.ILaunchTarget;
import org.eclipse.launchbar.core.target.launch.ITargetedLaunch;
@@ -170,7 +170,7 @@ public class GdbLaunch extends DsfLaunch implements ITracedLaunch, ITargetedLaun
// To maintain a mapping of memory contexts to the corresponding memory
// retrieval in this session
try {
- fExecutor.submit(new Callable<Object>() {
+ fExecutor.submit(new Callable<>() {
@Override
public Object call() throws CoreException {
fMemRetrievalManager = new GdbMemoryBlockRetrievalManager(GdbLaunchDelegate.GDB_DEBUG_MODEL_ID,
@@ -210,11 +210,25 @@ public class GdbLaunch extends DsfLaunch implements ITracedLaunch, ITargetedLaun
}
}).get();
+ IGDBBackend gdbBackend = getDsfExecutor().submit(new Callable<IGDBBackend>() {
+ @Override
+ public IGDBBackend call() throws CoreException {
+ return fTracker.getService(IGDBBackend.class);
+ }
+ }).get();
+
+ // Set process attributes for presentation in process properties page
+ Map<String, String> attributes = new HashMap<>();
+ attributes.put(IProcess.ATTR_CMDLINE, StringUtil.join(gdbBackend.getDebuggerCommandLineArray(), "\n")); //$NON-NLS-1$
+ attributes.put(DebugPlugin.ATTR_ENVIRONMENT, StringUtil.join(getLaunchEnvironment(), "\n")); //$NON-NLS-1$
+ attributes.put(DebugPlugin.ATTR_LAUNCH_TIMESTAMP, Long.toString(System.currentTimeMillis()));
+ Optional.ofNullable(gdbBackend.getGDBWorkingDirectory()).map(IPath::toOSString)
+ .ifPresent(dir -> attributes.put(DebugPlugin.ATTR_WORKING_DIRECTORY, dir));
+
// Need to go through DebugPlugin.newProcess so that we can use
// the overrideable process factory to allow others to override.
// First set attribute to specify we want to create the gdb process.
// Bug 210366
- Map<String, String> attributes = new HashMap<>();
attributes.put(IGdbDebugConstants.PROCESS_TYPE_CREATION_ATTR,
IGdbDebugConstants.GDB_PROCESS_CREATION_VALUE);
DebugPlugin.newProcess(this, gdbProc, label, attributes);
@@ -289,6 +303,17 @@ public class GdbLaunch extends DsfLaunch implements ITracedLaunch, ITargetedLaun
return;
}
+ if (handler instanceof org.eclipse.debug.internal.core.commands.TerminateCommand) {
+ // The org.eclipse.debug.internal.core.commands.TerminateCommand adapter
+ // calls Launch#terminate (asynchronously) so don't use that adapter.
+ // This special case code is needed because of behaviour changes
+ // introduced in Platform. See Bug 576622 and Bug 576024. CDT, when running
+ // tests, was relying on the undocumented behaviour that meant getAdapter
+ // was returning null here.
+ super.terminate();
+ return;
+ }
+
LaunchCommandRequest req = new LaunchCommandRequest(new Object[] { this });
handler.execute(req);
}
@@ -515,42 +540,12 @@ public class GdbLaunch extends DsfLaunch implements ITracedLaunch, ITargetedLaun
}
/**
- * Read from the specified stream and return what was read.
- *
- * @param stream
- * The input stream to be used to read the data. This method will
- * close the stream.
- * @return The data read from the stream
- * @throws IOException
- * If an IOException happens when reading the stream
- */
- private static String readStream(InputStream stream) throws IOException {
- StringBuilder cmdOutput = new StringBuilder(200);
- try {
- Reader r = new InputStreamReader(stream);
- BufferedReader reader = new BufferedReader(r);
-
- String line;
- while ((line = reader.readLine()) != null) {
- cmdOutput.append(line);
- cmdOutput.append('\n');
- }
- return cmdOutput.toString();
- } finally {
- // Cleanup to avoid leaking pipes
- // Bug 345164
- if (stream != null) {
- try {
- stream.close();
- } catch (IOException e) {
- }
- }
- }
- }
-
- /**
* Gets the CDT environment from the CDT project's configuration referenced
- * by the launch
+ * by the launch. This environment is used as the environment to run GDB in
+ * and is different than the launch environment in ILaunchManager.ATTR_ENVIRONMENT_VARIABLES
+ * which is used to run the inferior in.
+ *
+ * Essentially this is getting the build environment of the associated project.
*
* @since 5.0
*/
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/GdbLaunchDelegate.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/GdbLaunchDelegate.java
index 126baca1386..bf84a51e921 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/GdbLaunchDelegate.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/GdbLaunchDelegate.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2016 QNX Software Systems and others.
+ * Copyright (c) 2008, 2021 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -20,6 +20,8 @@
* Marc-Andre Laperle - Bug 382462
* Marc Khouzam (Ericsson - Show GDB version in debug view node label (Bug 455408)
* Samuel Hultgren (STMicroelectronics) - Bug 533769
+ * Red Hat Inc. - add Flatpak support
+ * John Dallaway - Show GDB path in OS format (Bug 572944)
*******************************************************************************/
package org.eclipse.cdt.dsf.gdb.launching;
@@ -37,6 +39,7 @@ import org.eclipse.cdt.dsf.debug.service.IDsfDebugServicesFactory;
import org.eclipse.cdt.dsf.debug.sourcelookup.DsfSourceLookupDirector;
import org.eclipse.cdt.dsf.gdb.IGDBLaunchConfigurationConstants;
import org.eclipse.cdt.dsf.gdb.internal.GdbPlugin;
+import org.eclipse.cdt.dsf.gdb.internal.launching.FlatpakLaunch;
import org.eclipse.cdt.dsf.gdb.service.GdbDebugServicesFactory;
import org.eclipse.cdt.dsf.gdb.service.SessionType;
import org.eclipse.cdt.dsf.gdb.service.command.IGDBControl;
@@ -116,6 +119,13 @@ public class GdbLaunchDelegate extends AbstractCLaunchDelegate2 {
return;
}
+ if (System.getenv("FLATPAK_SANDBOX_DIR") != null) { //$NON-NLS-1$
+ FlatpakLaunch flatpak = new FlatpakLaunch();
+ if (flatpak.prelaunch(config, l, monitor) != 0) {
+ return;
+ }
+ }
+
SessionType sessionType = LaunchUtils.getSessionType(config);
boolean attach = LaunchUtils.getIsAttach(config);
@@ -156,7 +166,7 @@ public class GdbLaunchDelegate extends AbstractCLaunchDelegate2 {
if (LaunchUtils.getIsPostMortemTracing(config) && !isPostMortemTracingSupportedInGdbVersion(gdbVersion)) {
throw new DebugException(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, DebugException.REQUEST_FAILED,
- "Post-mortem tracing is not supported for GDB " + gdbVersion + ", GDB " + NON_STOP_FIRST_VERSION //$NON-NLS-1$//$NON-NLS-2$
+ "Post-mortem tracing is not supported for GDB " + gdbVersion + ", GDB " + TRACING_FIRST_VERSION //$NON-NLS-1$//$NON-NLS-2$
+ " or higher is required.", //$NON-NLS-1$
null));
}
@@ -206,7 +216,7 @@ public class GdbLaunchDelegate extends AbstractCLaunchDelegate2 {
launch.initializeControl();
// Add the GDB process object to the launch.
- launch.addCLIProcess(getCLILabel(config, gdbVersion));
+ launch.addCLIProcess(getCLILabel(launch, config, gdbVersion));
monitor.worked(1);
@@ -214,7 +224,7 @@ public class GdbLaunchDelegate extends AbstractCLaunchDelegate2 {
final IProgressMonitor subMon2 = new SubProgressMonitor(monitor, 4,
SubProgressMonitor.PREPEND_MAIN_LABEL_TO_SUBTASK);
- Query<Object> completeLaunchQuery = new Query<Object>() {
+ Query<Object> completeLaunchQuery = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<Object> rm) {
DsfServicesTracker tracker = new DsfServicesTracker(GdbPlugin.getBundleContext(),
@@ -266,10 +276,15 @@ public class GdbLaunchDelegate extends AbstractCLaunchDelegate2 {
/**
* Return the label to be used for the CLI node
- * @since 4.6
+ * @since 6.0
*/
- protected String getCLILabel(ILaunchConfiguration config, String gdbVersion) throws CoreException {
- return LaunchUtils.getGDBPath(config).toString().trim() + " (" + gdbVersion + ")"; //$NON-NLS-1$ //$NON-NLS-2$
+ protected String getCLILabel(GdbLaunch launch, ILaunchConfiguration config, String gdbVersion)
+ throws CoreException {
+ IPath gdbPath = launch.getGDBPath();
+ if (gdbPath == null) {
+ gdbPath = LaunchUtils.getGDBPath(config);
+ }
+ return gdbPath.toOSString().trim() + " (" + gdbVersion + ")"; //$NON-NLS-1$ //$NON-NLS-2$
}
/**
@@ -279,7 +294,7 @@ public class GdbLaunchDelegate extends AbstractCLaunchDelegate2 {
protected void cleanupLaunch(ILaunch launch) throws DebugException {
if (launch instanceof GdbLaunch) {
final GdbLaunch gdbLaunch = (GdbLaunch) launch;
- Query<Object> launchShutdownQuery = new Query<Object>() {
+ Query<Object> launchShutdownQuery = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Object> rm) {
gdbLaunch.shutdownSession(rm);
@@ -440,6 +455,11 @@ public class GdbLaunchDelegate extends AbstractCLaunchDelegate2 {
} else {
locator.initializeFromMemento(memento, configuration);
}
+ String type = configuration.getAttribute(ILaunchConfiguration.ATTR_SOURCE_LOCATOR_ID, (String) null);
+ if (type == null) {
+ type = configuration.getType().getSourceLocatorId();
+ }
+ locator.setId(type);
return locator;
}
@@ -465,7 +485,7 @@ public class GdbLaunchDelegate extends AbstractCLaunchDelegate2 {
* @since 4.0
*/
protected boolean isNonStopSupportedInGdbVersion(String version) {
- if (NON_STOP_FIRST_VERSION.compareTo(version) <= 0) {// XXX: 7.2 > 7.11 !!!
+ if (LaunchUtils.compareVersions(NON_STOP_FIRST_VERSION, version) <= 0) {
return true;
}
return false;
@@ -477,7 +497,7 @@ public class GdbLaunchDelegate extends AbstractCLaunchDelegate2 {
* @since 4.0
*/
protected boolean isPostMortemTracingSupportedInGdbVersion(String version) {
- if (TRACING_FIRST_VERSION.compareTo(version) <= 0
+ if (LaunchUtils.compareVersions(TRACING_FIRST_VERSION, version) <= 0
// This feature will be available for GDB 7.2. But until that GDB is itself available
// there is a pre-release that has a version of 6.8.50.20090414
|| "6.8.50.20090414".equals(version)) { //$NON-NLS-1$
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/GdbSourceLookupDirector.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/GdbSourceLookupDirector.java
index f333db6176a..87af49df70c 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/GdbSourceLookupDirector.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/GdbSourceLookupDirector.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2015 Kichwa Coders and others.
+ * Copyright (c) 2015 Kichwa Coders Ltd and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/GdbSourceLookupParticipant.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/GdbSourceLookupParticipant.java
index 8940a4fd534..63f3be81945 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/GdbSourceLookupParticipant.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/GdbSourceLookupParticipant.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2015, 2016 Kichwa Coders and others.
+ * Copyright (c) 2015, 2016 Kichwa Coders Ltd and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/InferiorRuntimeProcess.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/InferiorRuntimeProcess.java
index 2651b8df4cc..0f3ede5943f 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/InferiorRuntimeProcess.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/InferiorRuntimeProcess.java
@@ -14,6 +14,7 @@
*******************************************************************************/
package org.eclipse.cdt.dsf.gdb.launching;
+import java.text.MessageFormat;
import java.util.Map;
import org.eclipse.cdt.dsf.gdb.IGdbDebugConstants;
@@ -23,8 +24,6 @@ import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.debug.core.model.IProcess;
import org.eclipse.debug.core.model.RuntimeProcess;
-import com.ibm.icu.text.MessageFormat;
-
/**
* A process for the inferior to know it belongs to a DSF-GDB session.
* This class also adds the exit code of the inferior to the console.
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/LaunchMessages.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/LaunchMessages.java
index aa2b39be682..ef64de05266 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/LaunchMessages.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/LaunchMessages.java
@@ -15,11 +15,10 @@
*******************************************************************************/
package org.eclipse.cdt.dsf.gdb.launching;
+import java.text.MessageFormat;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
-import com.ibm.icu.text.MessageFormat;
-
public class LaunchMessages {
private static final String BUNDLE_NAME = "org.eclipse.cdt.dsf.gdb.launching.LaunchMessages";//$NON-NLS-1$
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/LaunchMessages.properties b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/LaunchMessages.properties
index 17952d59e59..93d82fccde7 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/LaunchMessages.properties
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/LaunchMessages.properties
@@ -1,5 +1,5 @@
###############################################################################
-# Copyright (c) 2008, 2018 QNX Software Systems and others.
+# Copyright (c) 2008, 2020 QNX Software Systems and others.
#
# This program and the accompanying materials
# are made available under the terms of the Eclipse Public License 2.0
@@ -184,3 +184,5 @@ ServicesLaunchSequence_0=Initializing debugger services
ServicesLaunchSequence_1=Aborting debugger services initialization
InferiorRuntimeProcess_ExitValue=(exit value: {0})\u0020
+
+FlatpakDebugProcess_label=Flatpak Debug
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/LaunchUtils.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/LaunchUtils.java
index ecee91644c3..4ba7534fecf 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/LaunchUtils.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/LaunchUtils.java
@@ -19,6 +19,7 @@
package org.eclipse.cdt.dsf.gdb.launching;
import java.io.BufferedReader;
+import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
@@ -52,7 +53,6 @@ import org.eclipse.cdt.dsf.gdb.internal.GdbPlugin;
import org.eclipse.cdt.dsf.gdb.service.SessionType;
import org.eclipse.cdt.utils.CommandLineUtil;
import org.eclipse.cdt.utils.spawner.ProcessFactory;
-import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
@@ -120,13 +120,12 @@ public class LaunchUtils {
ICDTLaunchConfigurationConstants.ERR_PROGRAM_NOT_EXIST);
}
- if (!programPath.isAbsolute() && cproject != null) {
- // Find the specified program within the specified project
- IFile wsProgramPath = cproject.getProject().getFile(programPath);
- programPath = wsProgramPath.getLocation();
+ if (cproject != null) {
+ programPath = org.eclipse.cdt.launch.LaunchUtils.toAbsoluteProgramPath(cproject.getProject(), programPath);
}
- if (!programPath.toFile().exists()) {
+ File executable = programPath.toFile();
+ if (!executable.exists() || !executable.isFile()) {
abort(LaunchMessages.getString("AbstractCLaunchDelegate.Program_file_does_not_exist"), //$NON-NLS-1$
new FileNotFoundException(
LaunchMessages.getFormattedString("AbstractCLaunchDelegate.PROGRAM_PATH_not_found", //$NON-NLS-1$
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/DebugNewProcessSequence.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/DebugNewProcessSequence.java
index 8523e08b046..3c7b4a73c38 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/DebugNewProcessSequence.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/DebugNewProcessSequence.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2011, 2015 Ericsson and others.
+ * Copyright (c) 2011, 2022 Ericsson and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -13,6 +13,7 @@
* Marc Khouzam (Ericsson) - Support setting the path in which the core file
* dialog should start (Bug 362039)
* Sergey Prigogin (Google) - Bug 381804
+ * John Dallaway - Initialize memory data before remote connection (Bug 578323)
*******************************************************************************/
package org.eclipse.cdt.dsf.gdb.service;
@@ -103,12 +104,14 @@ public class DebugNewProcessSequence extends ReflectionSequence {
"stepSetExecutable", //$NON-NLS-1$
"stepSetArguments", //$NON-NLS-1$
- // For remote non-attach only
- "stepRemoteConnection", //$NON-NLS-1$
// For post-mortem launch only
"stepSpecifyCoreFile", //$NON-NLS-1$
"stepInitializeMemory", //$NON-NLS-1$
+
+ // For remote non-attach only
+ "stepRemoteConnection", //$NON-NLS-1$
+
"stepStartTrackingBreakpoints", //$NON-NLS-1$
"stepStartExecution", //$NON-NLS-1$
"stepCleanupBaseSequence", //$NON-NLS-1$
@@ -204,23 +207,48 @@ public class DebugNewProcessSequence extends ReflectionSequence {
*/
@Execute
public void stepSetArguments(RequestMonitor rm) {
+ String[] argArray = null;
try {
String args = CDebugUtils.getAttribute(fAttributes, ICDTLaunchConfigurationConstants.ATTR_PROGRAM_ARGUMENTS,
""); //$NON-NLS-1$
if (args.length() != 0) {
args = VariablesPlugin.getDefault().getStringVariableManager().performStringSubstitution(args);
- String[] argArray = CommandLineUtil.argumentsToArray(args);
- fCommandControl.queueCommand(fCommandFactory.createMIGDBSetArgs(getContainerContext(), argArray),
- new ImmediateDataRequestMonitor<MIInfo>(rm));
- } else {
- rm.done();
+ argArray = CommandLineUtil.argumentsToArray(args);
}
} catch (CoreException e) {
rm.setStatus(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, IDsfStatusConstants.REQUEST_FAILED,
"Cannot get inferior arguments", e)); //$NON-NLS-1$
rm.done();
+ return;
+ }
+
+ final String[] finalArgArray = argArray;
+ ImmediateDataRequestMonitor<MIInfo> setArgsRm = new ImmediateDataRequestMonitor<>(rm) {
+ @Override
+ protected void handleSuccess() {
+ if (finalArgArray != null) {
+ fCommandControl.queueCommand(
+ fCommandFactory.createMIGDBSetArgs(getContainerContext(), finalArgArray),
+ new ImmediateDataRequestMonitor<MIInfo>(rm));
+ } else {
+ rm.done();
+ }
+ }
+ };
+
+ String withshellString = CDebugUtils.getAttribute(fAttributes,
+ ICDTLaunchConfigurationConstants.ATTR_STARTUP_WITH_SHELL,
+ ICDTLaunchConfigurationConstants.STARTUP_WITH_SHELL_DEFAULT);
+ if (ICDTLaunchConfigurationConstants.STARTUP_WITH_SHELL_ON.equals(withshellString)
+ || ICDTLaunchConfigurationConstants.STARTUP_WITH_SHELL_OFF.equals(withshellString)) {
+ boolean withShell = ICDTLaunchConfigurationConstants.STARTUP_WITH_SHELL_ON.equals(withshellString);
+ fCommandControl.queueCommand(
+ fCommandFactory.createMIGDBSetStartupWithShell(fCommandControl.getContext(), withShell), setArgsRm);
+ } else {
+ setArgsRm.done();
}
+
}
/**
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBBackend.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBBackend.java
index ad8b76ce30a..344358655fb 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBBackend.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBBackend.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2006, 2015 Wind River Systems, Nokia and others.
+ * Copyright (c) 2006, 2021 Wind River Systems, Nokia and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -15,6 +15,7 @@
* Marc Khouzam (Ericsson) - Use the new IMIBackend2 interface (Bug 350837)
* Mark Bozeman (Mentor Graphics) - Report GDB start failures (Bug 376203)
* Iulia Vasii (Freescale Semiconductor) - Separate GDB command from its arguments (Bug 445360)
+ * John Dallaway - Implement getDebuggerCommandLineArray() method (Bug 572944)
*******************************************************************************/
package org.eclipse.cdt.dsf.gdb.service;
@@ -36,6 +37,7 @@ import org.eclipse.cdt.dsf.concurrent.IDsfStatusConstants;
import org.eclipse.cdt.dsf.concurrent.ImmediateRequestMonitor;
import org.eclipse.cdt.dsf.concurrent.RequestMonitor;
import org.eclipse.cdt.dsf.concurrent.Sequence;
+import org.eclipse.cdt.dsf.gdb.IGdbDebugPreferenceConstants;
import org.eclipse.cdt.dsf.gdb.internal.GdbPlugin;
import org.eclipse.cdt.dsf.gdb.launching.GdbLaunch;
import org.eclipse.cdt.dsf.gdb.launching.LaunchUtils;
@@ -54,6 +56,7 @@ import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.debug.core.DebugException;
@@ -176,9 +179,9 @@ public class GDBBackend extends AbstractDsfService implements IGDBBackend, IMIBa
* array. Allow subclass to override.
*
* @since 4.6
- * @deprecated Replaced by getDebuggerCommandLine()
+ * @deprecated Override {@link #getDebuggerCommandLineArray()} instead
*/
- @Deprecated
+ @Deprecated(since = "5.2", forRemoval = true)
protected String[] getGDBCommandLineArray() {
// The goal here is to keep options to an absolute minimum.
// All configuration should be done in the final launch sequence
@@ -196,10 +199,17 @@ public class GDBBackend extends AbstractDsfService implements IGDBBackend, IMIBa
return CommandLineUtil.argumentsToArray(cmd);
}
+ @Override
+ public String[] getDebuggerCommandLineArray() {
+ // Call the deprecated method which might be overridden
+ return getDebuggerCommandLine();
+ }
+
/**
* Returns the GDB command and its arguments as an array.
* Allow subclass to override.
* @since 5.2
+ * @deprecated Override {@link #getDebuggerCommandLineArray()} instead
*/
// This method replaces getGDBCommandLineArray() because we need
// to override it for GDB 7.12 even if an extender has overridden
@@ -224,6 +234,7 @@ public class GDBBackend extends AbstractDsfService implements IGDBBackend, IMIBa
// Note that we didn't name this method getGDBCommandLine() because
// this name had been used in CDT 8.8 and could still be part of
// extenders' code.
+ @Deprecated(since = "6.4", forRemoval = true)
protected String[] getDebuggerCommandLine() {
// Call the old method in case it was overridden
return getGDBCommandLineArray();
@@ -294,7 +305,7 @@ public class GDBBackend extends AbstractDsfService implements IGDBBackend, IMIBa
// not starting the full GDB console properly.
protected Process launchGDBProcess() throws CoreException {
// Call the old method in case it was overridden
- return launchGDBProcess(getDebuggerCommandLine());
+ return launchGDBProcess(getDebuggerCommandLineArray());
}
/**
@@ -809,17 +820,15 @@ public class GDBBackend extends AbstractDsfService implements IGDBBackend, IMIBa
* backend, and the current job will indicate this in the request monitor.
*
* The specified timeout is used to indicate how many milliseconds this job
- * should wait for. INTERRUPT_TIMEOUT_DEFAULT indicates to use the default
- * of 5 seconds. The default is also use if the timeout value is 0 or
+ * should wait for. Default timeout is provided by preference
+ * {@code IGdbDebugPreferenceConstants.PREF_SUSPEND_TIMEOUT_VALUE}.
+ * The default is also used if the timeout value is 0 or
* negative.
*
* @since 3.0
*/
protected class MonitorInterruptJob extends Job {
- // Bug 310274. Until we have a preference to configure timeouts,
- // we need a large enough default timeout to accommodate slow
- // remote sessions.
- private final static int TIMEOUT_DEFAULT_VALUE = 5000;
+
private final RequestMonitor fRequestMonitor;
public MonitorInterruptJob(int timeout, RequestMonitor rm) {
@@ -828,7 +837,9 @@ public class GDBBackend extends AbstractDsfService implements IGDBBackend, IMIBa
fRequestMonitor = rm;
if (timeout == INTERRUPT_TIMEOUT_DEFAULT || timeout <= 0) {
- timeout = TIMEOUT_DEFAULT_VALUE; // default of 5 seconds
+ timeout = 1000 * Platform.getPreferencesService().getInt(GdbPlugin.PLUGIN_ID,
+ IGdbDebugPreferenceConstants.PREF_SUSPEND_TIMEOUT_VALUE,
+ IGdbDebugPreferenceConstants.SUSPEND_TIMEOUT_VALUE_DEFAULT, null);
}
schedule(timeout);
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBBackend_7_12.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBBackend_7_12.java
index a1255e2d357..d5652d12def 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBBackend_7_12.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBBackend_7_12.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2016 Ericsson and others.
+ * Copyright (c) 2016, 2021 Ericsson and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -59,10 +59,22 @@ public class GDBBackend_7_12 extends GDBBackend {
@Override
public boolean isFullGdbConsoleSupported() {
- return !Platform.getOS().equals(Platform.OS_WIN32) && !Platform.getOS().equals(Platform.OS_MACOSX)
+ return System.getenv("FLATPAK_SANDBOX_DIR") == null //$NON-NLS-1$
+ && !Platform.getOS().equals(Platform.OS_WIN32) && !Platform.getOS().equals(Platform.OS_MACOSX)
&& !fPtyFailure;
}
+ /**
+ * @since 6.2
+ */
+ @Override
+ public boolean useTargetAsync() {
+ // Enable target asynchronously if there is Full GDB console as Full GDB Console requires async target or
+ // If Windows remote debugging as remote debugging in GDB has lots of issues with handling Ctrl-C (See Bug 516371)
+ return isFullGdbConsoleSupported()
+ || (Platform.getOS().equals(Platform.OS_WIN32) && getSessionType() == SessionType.REMOTE);
+ }
+
protected void createPty() {
if (!isFullGdbConsoleSupported()) {
return;
@@ -112,13 +124,14 @@ public class GDBBackend_7_12 extends GDBBackend {
return fDummyErrorStream;
}
+ /** @deprecated Override {@link #getDebuggerCommandLineArray()} instead */
@Override
+ @Deprecated(since = "6.4", forRemoval = true)
protected String[] getDebuggerCommandLine() {
// Start from the original command line method which
// could have been overridden by extenders, and add what we need
// to convert it to a command that will launch in CLI mode.
// Then trigger the MI console
- @SuppressWarnings("deprecation")
String[] originalCommandLine = getGDBCommandLineArray();
if (!isFullGdbConsoleSupported()) {
@@ -184,7 +197,7 @@ public class GDBBackend_7_12 extends GDBBackend {
// If we are launching the full console, we need to use a PTY in TERMINAL mode
// for the GDB CLI to properly display in its view
Process proc = null;
- String[] commandLine = getDebuggerCommandLine();
+ String[] commandLine = getDebuggerCommandLineArray();
try {
fCLIPty = new PTY(Mode.TERMINAL);
IPath path = getGDBWorkingDirectory();
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBPatternMatchingExpressions.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBPatternMatchingExpressions.java
index 40da8bd16e1..f67c9d3450a 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBPatternMatchingExpressions.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBPatternMatchingExpressions.java
@@ -16,6 +16,7 @@
*******************************************************************************/
package org.eclipse.cdt.dsf.gdb.service;
+import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
@@ -57,8 +58,6 @@ import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.osgi.framework.BundleContext;
-import com.ibm.icu.text.MessageFormat;
-
/**
* Expressions service added as a layer above the standard Expressions service.
* This layer allows to support expression-groups and glob-pattern matching.
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBProcesses.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBProcesses.java
index 71d46a6f22d..5aa1e3045e2 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBProcesses.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBProcesses.java
@@ -235,7 +235,7 @@ public class GDBProcesses extends MIProcesses implements IGDBProcesses {
final DataRequestMonitor<IDMContext> rm) {
final IMIContainerDMContext containerDmc = createContainerContext(procCtx, MIProcesses.UNIQUE_GROUP_ID);
- DataRequestMonitor<MIInfo> attachRm = new ImmediateDataRequestMonitor<MIInfo>(rm) {
+ DataRequestMonitor<MIInfo> attachRm = new ImmediateDataRequestMonitor<>(rm) {
@Override
protected void handleSuccess() {
GDBProcesses.super.attachDebuggerToProcess(procCtx, new ImmediateDataRequestMonitor<IDMContext>(rm) {
@@ -602,8 +602,7 @@ public class GDBProcesses extends MIProcesses implements IGDBProcesses {
createConsole(containerDmc, restart, new ImmediateRequestMonitor(requestMonitor) {
@Override
protected void handleSuccess() {
- final DataRequestMonitor<MIInfo> execMonitor = new DataRequestMonitor<MIInfo>(getExecutor(),
- requestMonitor) {
+ final DataRequestMonitor<MIInfo> execMonitor = new DataRequestMonitor<>(getExecutor(), requestMonitor) {
@Override
protected void handleSuccess() {
if (fBackend.getSessionType() != SessionType.REMOTE) {
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBProcesses_7_0.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBProcesses_7_0.java
index a53634e9013..8bca1e10eef 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBProcesses_7_0.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBProcesses_7_0.java
@@ -1473,8 +1473,7 @@ public class GDBProcesses_7_0 extends AbstractDsfService implements IGDBProcesse
});
} else {
- final DataRequestMonitor<IMIContainerDMContext[]> addExitedDRM = new ImmediateDataRequestMonitor<IMIContainerDMContext[]>(
- rm) {
+ final DataRequestMonitor<IMIContainerDMContext[]> addExitedDRM = new ImmediateDataRequestMonitor<>(rm) {
@Override
protected void handleCompleted() {
List<IMIContainerDMContext> containerDmcs = new ArrayList<>(Arrays.asList(getData()));
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBProcesses_7_1.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBProcesses_7_1.java
index abfaa3f0da3..81ff87d0b0a 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBProcesses_7_1.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBProcesses_7_1.java
@@ -41,7 +41,6 @@ import org.eclipse.cdt.dsf.mi.service.command.CommandFactory;
import org.eclipse.cdt.dsf.mi.service.command.output.MIListThreadGroupsInfo;
import org.eclipse.cdt.dsf.mi.service.command.output.MIListThreadGroupsInfo.IThreadGroupInfo;
import org.eclipse.cdt.dsf.mi.service.command.output.MIThread;
-import org.eclipse.cdt.dsf.mi.service.command.output.MIThreadInfoInfo;
import org.eclipse.cdt.dsf.service.DsfServiceEventHandler;
import org.eclipse.cdt.dsf.service.DsfSession;
import org.eclipse.core.runtime.IStatus;
@@ -178,20 +177,25 @@ public class GDBProcesses_7_1 extends GDBProcesses_7_0 {
}
});
} else if (dmc instanceof MIThreadDMC) {
- // Starting with GDB 7.1, we can obtain the core on which a thread
- // is currently located. The info is a new field in -thread-info
- final MIThreadDMC threadDmc = (MIThreadDMC) dmc;
-
ICommandControlDMContext controlDmc = DMContexts.getAncestorOfType(dmc, ICommandControlDMContext.class);
- fCommandForCoresCache.execute(fCommandFactory.createMIThreadInfo(controlDmc, threadDmc.getId()),
- new ImmediateDataRequestMonitor<MIThreadInfoInfo>(rm) {
+ final String groupId = getGroupFromPid(
+ (DMContexts.getParentOfType(dmc, IMIProcessDMContext.class)).getProcId());
+ String threadId = ((MIThreadDMC) dmc).getId();
+
+ fCommandForCoresCache.execute(fCommandFactory.createMIListThreadGroups(controlDmc, groupId),
+ new ImmediateDataRequestMonitor<MIListThreadGroupsInfo>(rm) {
@Override
- protected void handleSuccess() {
+ protected void handleCompleted() {
IThreadDMData threadData = null;
- if (getData().getThreadList().length != 0) {
- MIThread thread = getData().getThreadList()[0];
- if (thread.getThreadId().equals(threadDmc.getId())) {
- threadData = createThreadDMData(thread);
+ if (isSuccess()) {
+ MIThread[] threads = getData().getThreadInfo().getThreadList();
+ if (threads != null) {
+ for (MIThread thread : threads) {
+ if (thread.getThreadId().equals(threadId)) {
+ threadData = createThreadDMData(thread);
+ break;
+ }
+ }
}
}
@@ -199,7 +203,7 @@ public class GDBProcesses_7_1 extends GDBProcesses_7_0 {
rm.setData(threadData);
} else {
rm.setStatus(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, INVALID_HANDLE,
- "Could not get thread info", null)); //$NON-NLS-1$
+ "Could not get thread info", getStatus().getException())); //$NON-NLS-1$
}
rm.done();
}
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBProcesses_7_11.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBProcesses_7_11.java
index c2e8a8696d4..b7f875ece4c 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBProcesses_7_11.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBProcesses_7_11.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2017 Kichwa Coders and others.
+ * Copyright (c) 2017 Kichwa Coders Ltd and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBProcesses_7_12.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBProcesses_7_12.java
index ce585b07ce8..c69c86d7091 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBProcesses_7_12.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBProcesses_7_12.java
@@ -47,12 +47,12 @@ public class GDBProcesses_7_12 extends GDBProcesses_7_11 {
@Override
public void terminate(IThreadDMContext thread, RequestMonitor rm) {
IGDBBackend backend = getServicesTracker().getService(IGDBBackend.class);
- if (!backend.isFullGdbConsoleSupported()) {
+ if (!backend.useTargetAsync()) {
super.terminate(thread, rm);
return;
}
- // If we are running the full GDB console, there is a bug with GDB 7.12
+ // If we are running the target-async support, there is a bug with GDB 7.12
// where after we terminate the process, the GDB prompt does not come
// back in the console. As a workaround, we first interrupt the process
// to get the prompt back, and only then kill the process.
@@ -93,12 +93,12 @@ public class GDBProcesses_7_12 extends GDBProcesses_7_11 {
}
IGDBBackend backend = getServicesTracker().getService(IGDBBackend.class);
- if (!backend.isFullGdbConsoleSupported()) {
+ if (!backend.useTargetAsync()) {
super.detachDebuggerFromProcess(dmc, rm);
return;
}
- // If we are running the full GDB console, there is a bug with GDB 7.12
+ // If we are running the target-async support, there is a bug with GDB 7.12
// where after we detach the process, the GDB prompt does not come
// back in the console. As a workaround, we first interrupt the process
// to get the prompt back, and only then detach the process.
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBProcesses_7_2.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBProcesses_7_2.java
index 98e43c98481..136116a6ed5 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBProcesses_7_2.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBProcesses_7_2.java
@@ -13,9 +13,11 @@
* Marc Khouzam (Ericsson) - Workaround for Bug 352998
* Marc Khouzam (Ericsson) - Update breakpoint handling for GDB >= 7.4 (Bug 389945)
* Alvaro Sanchez-Leon (Ericsson) - Breakpoint Enable does not work after restarting the application (Bug 456959)
+ * Jonathan Tousignant (NordiaSoft) - Remote session breakpoint (Bug 528145)
*******************************************************************************/
package org.eclipse.cdt.dsf.gdb.service;
+import java.text.MessageFormat;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
@@ -72,8 +74,6 @@ import org.eclipse.debug.core.ILaunch;
import org.eclipse.launchbar.core.target.ILaunchTarget;
import org.eclipse.launchbar.core.target.launch.ITargetedLaunch;
-import com.ibm.icu.text.MessageFormat;
-
/**
* Adding support for multi-process with GDB 7.2
*
@@ -266,13 +266,15 @@ public class GDBProcesses_7_2 extends GDBProcesses_7_1 implements IMultiTerminat
@Override
protected boolean doIsDebuggerAttachSupported() {
+ SessionType sessionType = fBackend.getSessionType();
+
// Multi-process is not applicable to post-mortem sessions (core)
// or to non-attach remote sessions.
- if (fBackend.getSessionType() == SessionType.CORE) {
+ if (sessionType == SessionType.CORE) {
return false;
}
- if (fBackend.getSessionType() == SessionType.REMOTE && !fBackend.getIsAttachSession()) {
+ if (sessionType == SessionType.REMOTE && !fBackend.getIsAttachSession()) {
return false;
}
@@ -280,9 +282,16 @@ public class GDBProcesses_7_2 extends GDBProcesses_7_1 implements IMultiTerminat
IMIRunControl runControl = getServicesTracker().getService(IMIRunControl.class);
if (runControl != null && runControl.getRunMode() == MIRunMode.ALL_STOP) {
// Only one process is allowed in all-stop (for now)
- return getNumConnected() == 0;
// NOTE: when we support multi-process in all-stop mode,
// we will need to interrupt the target to when doing the attach.
+ int numConnected = getNumConnected();
+
+ if (numConnected == 1 && sessionType == SessionType.REMOTE) {
+ // Bug 528145: Special case for remote sessions with an existing connection.
+ return true;
+ }
+
+ return numConnected == 0;
}
return true;
@@ -316,6 +325,14 @@ public class GDBProcesses_7_2 extends GDBProcesses_7_1 implements IMultiTerminat
new Step() {
@Override
public void execute(final RequestMonitor rm) {
+ // The remote session is already connected to the process
+ // Bug 528145
+ if (fBackend.getSessionType() == SessionType.REMOTE
+ && doCanDetachDebuggerFromProcess()) {
+ rm.done();
+ return;
+ }
+
getProcessesBeingDebugged(procCtx, new ImmediateDataRequestMonitor<IDMContext[]>(rm) {
@Override
protected void handleSuccess() {
@@ -452,6 +469,14 @@ public class GDBProcesses_7_2 extends GDBProcesses_7_1 implements IMultiTerminat
new Step() {
@Override
public void execute(RequestMonitor rm) {
+ // This call end the current attach to the gdbserver in remote session
+ // Bug 528145
+ if (fBackend.getSessionType() == SessionType.REMOTE
+ && doCanDetachDebuggerFromProcess()) {
+ rm.done();
+ return;
+ }
+
// For non-stop mode, we do a non-interrupting attach
// Bug 333284
boolean shouldInterrupt = true;
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBRegisters.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBRegisters.java
index c55f8406b27..5603c3e73ab 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBRegisters.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBRegisters.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2014 Ericsson AB and others.
+ * Copyright (c) 2014, 2021 Ericsson AB and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -11,6 +11,7 @@
* Contributors:
* Alvaro Sanchez-Leon (Ericsson) - First Implementation and API (Bug 235747)
* Bruno Medeiros (Renesas) - Persistence of register groups per process (449104)
+ * Santiago Gil-Sanchez (Microchip) - Avoid save of register groups before init done (Bug 562407)
*******************************************************************************/
package org.eclipse.cdt.dsf.gdb.service;
@@ -64,6 +65,12 @@ import org.eclipse.osgi.util.NLS;
public class GDBRegisters extends MIRegisters implements IRegisters2 {
/**
+ * true if groups have been read on initialization.
+ * Will prevent save of blank register groups if eclipse shuts down on startup
+ */
+ private boolean groupsRead = false;
+
+ /**
* Unique temporary id for a group. 0 is reserved for the root group
*/
private static int fGroupBookingCount = 1;
@@ -723,7 +730,11 @@ public class GDBRegisters extends MIRegisters implements IRegisters2 {
@Override
public void shutdown(RequestMonitor rm) {
- save();
+ //If register groups have not been read before shutdown is invoked
+ //then do not attempt a save as existing register groups will be overwritten with an empty list.
+ if (groupsRead) {
+ save();
+ }
super.shutdown(rm);
}
@@ -900,6 +911,9 @@ public class GDBRegisters extends MIRegisters implements IRegisters2 {
}
MIRegisterGroupDMC[] readGroupsFromMemento(final IContainerDMContext contDmc) {
+ //Set to true so shutdown will have register groups to save.
+ groupsRead = true;
+
String containerId = getPersistenceIdForRegisterGroupContainer(contDmc);
RegisterGroupsPersistance deserializer = new RegisterGroupsPersistance(getLaunchConfig());
@@ -916,7 +930,6 @@ public class GDBRegisters extends MIRegisters implements IRegisters2 {
groups.add(new MIRegisterGroupDMC(this, contDmc, fGroupBookingCount, group.getName()));
fGroupBookingCount++;
}
-
return groups.toArray(new MIRegisterGroupDMC[groups.size()]);
}
@@ -1174,5 +1187,4 @@ public class GDBRegisters extends MIRegisters implements IRegisters2 {
rm.setData(true);
rm.done();
}
-
}
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBRunControl_7_0_NS.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBRunControl_7_0_NS.java
index 72dd8b38dcc..53002bdd736 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBRunControl_7_0_NS.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBRunControl_7_0_NS.java
@@ -67,6 +67,7 @@ import org.eclipse.cdt.dsf.debug.service.IStack.IFrameDMContext;
import org.eclipse.cdt.dsf.debug.service.command.ICommand;
import org.eclipse.cdt.dsf.debug.service.command.ICommandControlService;
import org.eclipse.cdt.dsf.debug.service.command.ICommandControlService.ICommandControlShutdownDMEvent;
+import org.eclipse.cdt.dsf.gdb.IGdbDebugPreferenceConstants;
import org.eclipse.cdt.dsf.gdb.internal.GdbPlugin;
import org.eclipse.cdt.dsf.gdb.internal.service.command.events.MITracepointSelectedEvent;
import org.eclipse.cdt.dsf.gdb.internal.service.control.StepIntoSelectionActiveOperation;
@@ -109,6 +110,7 @@ import org.eclipse.cdt.dsf.service.DsfServiceEventHandler;
import org.eclipse.cdt.dsf.service.DsfSession;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.debug.core.DebugException;
@@ -636,10 +638,6 @@ public class GDBRunControl_7_0_NS extends AbstractDsfService
* @since 4.5
*/
protected class MonitorSuspendJob extends Job {
- // Bug 310274. Until we have a preference to configure timeouts,
- // we need a large enough default timeout to accommodate slow
- // remote sessions.
- private final static int TIMEOUT_DEFAULT_VALUE = 5000;
private final RequestMonitor fRequestMonitor;
private final IMIExecutionDMContext fThread;
@@ -651,7 +649,9 @@ public class GDBRunControl_7_0_NS extends AbstractDsfService
fRequestMonitor = rm;
if (timeout <= 0) {
- timeout = TIMEOUT_DEFAULT_VALUE; // default of 5 seconds
+ timeout = 1000 * Platform.getPreferencesService().getInt(GdbPlugin.PLUGIN_ID,
+ IGdbDebugPreferenceConstants.PREF_SUSPEND_TIMEOUT_VALUE,
+ IGdbDebugPreferenceConstants.SUSPEND_TIMEOUT_VALUE_DEFAULT, null);
}
// Register to listen for the stopped event
@@ -1588,8 +1588,7 @@ public class GDBRunControl_7_0_NS extends AbstractDsfService
// It is important to use an ImmediateExecutor for this RM, to make sure we don't risk getting a new
// call to ExecuteWithTargetAvailable() when we just finished executing the steps.
- fExecuteQueuedOpsStepMonitor = new MultiRequestMonitor<RequestMonitor>(ImmediateExecutor.getInstance(),
- rm) {
+ fExecuteQueuedOpsStepMonitor = new MultiRequestMonitor<>(ImmediateExecutor.getInstance(), rm) {
@Override
protected void handleCompleted() {
assert fOperationsPending.size() == 0;
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBRunControl_7_12.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBRunControl_7_12.java
index b578bb90b5f..dd722427847 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBRunControl_7_12.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBRunControl_7_12.java
@@ -23,6 +23,7 @@ import org.eclipse.cdt.dsf.concurrent.ImmediateRequestMonitor;
import org.eclipse.cdt.dsf.concurrent.RequestMonitor;
import org.eclipse.cdt.dsf.datamodel.DMContexts;
import org.eclipse.cdt.dsf.debug.service.command.ICommandControlService.ICommandControlDMContext;
+import org.eclipse.cdt.dsf.gdb.IGdbDebugPreferenceConstants;
import org.eclipse.cdt.dsf.gdb.internal.GdbPlugin;
import org.eclipse.cdt.dsf.mi.service.IMICommandControl;
import org.eclipse.cdt.dsf.mi.service.IMIExecutionDMContext;
@@ -37,6 +38,7 @@ import org.eclipse.cdt.dsf.service.DsfServiceEventHandler;
import org.eclipse.cdt.dsf.service.DsfSession;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.Job;
@@ -92,10 +94,7 @@ public class GDBRunControl_7_12 extends GDBRunControl_7_10 {
private void doSuspend(IExecutionDMContext context, final RequestMonitor rm) {
// We use the MI interrupt command when working in async mode.
- // Since this run control service is specifically for all-stop mode,
- // the only possibility to be running asynchronously is if the Full GDB console
- // is being used.
- if (fGDBBackEnd.isFullGdbConsoleSupported()) {
+ if (fGDBBackEnd.useTargetAsync()) {
// Start the job before sending the interrupt command
// to make sure we don't miss the *stopped event
final MonitorSuspendJob monitorJob = new MonitorSuspendJob(0, rm);
@@ -124,11 +123,8 @@ public class GDBRunControl_7_12 extends GDBRunControl_7_10 {
@Override
public boolean isTargetAcceptingCommands() {
- // We shall directly return true if the async mode is ON,
- // Since this run control service is specifically for all-stop mode,
- // The only possibility to be running asynchronously is if the Full GDB console
- // is being used.
- if (fGDBBackEnd.isFullGdbConsoleSupported()) {
+ // We shall directly return true if the async mode is ON.
+ if (fGDBBackEnd.useTargetAsync()) {
return true;
}
@@ -307,10 +303,6 @@ public class GDBRunControl_7_12 extends GDBRunControl_7_10 {
}
protected class MonitorSuspendJob extends Job {
- // Bug 310274. Until we have a preference to configure timeouts,
- // we need a large enough default timeout to accommodate slow
- // remote sessions.
- private final static int TIMEOUT_DEFAULT_VALUE = 5000;
private final RequestMonitor fRequestMonitor;
@@ -320,7 +312,9 @@ public class GDBRunControl_7_12 extends GDBRunControl_7_10 {
fRequestMonitor = rm;
if (timeout <= 0) {
- timeout = TIMEOUT_DEFAULT_VALUE; // default of 5 seconds
+ timeout = 1000 * Platform.getPreferencesService().getInt(GdbPlugin.PLUGIN_ID,
+ IGdbDebugPreferenceConstants.PREF_SUSPEND_TIMEOUT_VALUE,
+ IGdbDebugPreferenceConstants.SUSPEND_TIMEOUT_VALUE_DEFAULT, null);
}
// Register to listen for the stopped event
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBSourceLookup.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBSourceLookup.java
index 3a292ea7953..3ab9f34769d 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBSourceLookup.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBSourceLookup.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2015, 2016 Kichwa Coders and others.
+ * Copyright (c) 2015, 2018 Kichwa Coders Ltd and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -13,6 +13,10 @@
*******************************************************************************/
package org.eclipse.cdt.dsf.gdb.service;
+import java.nio.file.InvalidPathException;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.Hashtable;
@@ -24,13 +28,19 @@ import org.eclipse.cdt.dsf.concurrent.DataRequestMonitor;
import org.eclipse.cdt.dsf.concurrent.IDsfStatusConstants;
import org.eclipse.cdt.dsf.concurrent.ImmediateRequestMonitor;
import org.eclipse.cdt.dsf.concurrent.RequestMonitor;
-import org.eclipse.cdt.dsf.debug.service.command.ICommandControl;
+import org.eclipse.cdt.dsf.datamodel.AbstractDMEvent;
+import org.eclipse.cdt.dsf.datamodel.IDMContext;
+import org.eclipse.cdt.dsf.debug.service.ICachingService;
+import org.eclipse.cdt.dsf.debug.service.command.CommandCache;
+import org.eclipse.cdt.dsf.debug.service.command.ICommandControlService;
import org.eclipse.cdt.dsf.gdb.internal.GdbPlugin;
import org.eclipse.cdt.dsf.gdb.launching.GdbSourceLookupDirector;
import org.eclipse.cdt.dsf.mi.service.CSourceLookup;
import org.eclipse.cdt.dsf.mi.service.IMICommandControl;
import org.eclipse.cdt.dsf.mi.service.command.CommandFactory;
import org.eclipse.cdt.dsf.mi.service.command.output.MIInfo;
+import org.eclipse.cdt.dsf.mi.service.command.output.MiSourceFilesInfo;
+import org.eclipse.cdt.dsf.mi.service.command.output.MiSourceFilesInfo.SourceFileInfo;
import org.eclipse.cdt.dsf.service.DsfSession;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
@@ -40,9 +50,16 @@ import org.eclipse.core.runtime.Status;
*
* @since 5.0
*/
-public class GDBSourceLookup extends CSourceLookup implements IGDBSourceLookup {
+public class GDBSourceLookup extends CSourceLookup implements IGDBSourceLookup, IDebugSourceFiles, ICachingService {
- private ICommandControl fCommand;
+ private static class DebugSourceFilesChangedEvent extends AbstractDMEvent<IDMContext>
+ implements IDebugSourceFilesChangedEvent {
+ public DebugSourceFilesChangedEvent(IDMContext context) {
+ super(context);
+ }
+ }
+
+ private ICommandControlService fCommand;
private CommandFactory fCommandFactory;
private Map<ISourceLookupDMContext, CSourceLookupDirector> fDirectors = new HashMap<>();
/**
@@ -50,6 +67,8 @@ public class GDBSourceLookup extends CSourceLookup implements IGDBSourceLookup {
*/
private Map<String, String> fCachedEntries = Collections.emptyMap();
+ private CommandCache fDebugSourceFilesCache;
+
public GDBSourceLookup(DsfSession session) {
super(session);
}
@@ -65,12 +84,14 @@ public class GDBSourceLookup extends CSourceLookup implements IGDBSourceLookup {
}
private void doInitialize(RequestMonitor rm) {
- fCommand = getServicesTracker().getService(ICommandControl.class);
+ fCommand = getServicesTracker().getService(ICommandControlService.class);
fCommandFactory = getServicesTracker().getService(IMICommandControl.class).getCommandFactory();
- register(new String[] { IGDBSourceLookup.class.getName(), GDBSourceLookup.class.getName() },
- new Hashtable<String, String>());
+ fDebugSourceFilesCache = new CommandCache(getSession(), fCommand);
+ fDebugSourceFilesCache.setContextAvailable(fCommand.getContext(), true);
+ register(new String[] { IGDBSourceLookup.class.getName(), GDBSourceLookup.class.getName(),
+ IDebugSourceFiles.class.getName() }, new Hashtable<String, String>());
rm.done();
}
@@ -120,10 +141,9 @@ public class GDBSourceLookup extends CSourceLookup implements IGDBSourceLookup {
rm.done(false);
} else {
/*
- * Issue the clear and set commands back to back so that the
- * executor thread atomically changes the source lookup settings.
- * Any commands to GDB issued after this call will get the new
- * source substitute settings.
+ * Issue the clear and set commands back to back so that the executor thread
+ * atomically changes the source lookup settings. Any commands to GDB issued
+ * after this call will get the new source substitute settings.
*/
CountingRequestMonitor countingRm = new CountingRequestMonitor(getExecutor(), rm) {
@Override
@@ -143,14 +163,19 @@ public class GDBSourceLookup extends CSourceLookup implements IGDBSourceLookup {
fCachedEntries = entries;
CountingRequestMonitor countingRm = new CountingRequestMonitor(getExecutor(), rm) {
@Override
- protected void handleFailure() {
- /*
- * We failed to apply the changes. Clear the cache as it does
- * not represent the state of the backend. However we don't have
- * a good recovery here, so on future sourceContainersChanged()
- * calls we will simply reissue the substitutions.
- */
- fCachedEntries = null;
+ protected void handleCompleted() {
+ // Reset the list of source files when source path substitutions change
+ fDebugSourceFilesCache.reset();
+ getSession().dispatchEvent(new DebugSourceFilesChangedEvent(sourceLookupCtx), getProperties());
+ if (!isSuccess()) {
+ /*
+ * We failed to apply the changes. Clear the cache as it does not represent the
+ * state of the backend. However we don't have a good recovery here, so on
+ * future sourceContainersChanged() calls we will simply reissue the
+ * substitutions.
+ */
+ fCachedEntries = null;
+ }
rm.done();
}
};
@@ -160,6 +185,100 @@ public class GDBSourceLookup extends CSourceLookup implements IGDBSourceLookup {
fCommandFactory.createMISetSubstitutePath(sourceLookupCtx, entry.getKey(), entry.getValue()),
new DataRequestMonitor<MIInfo>(getExecutor(), countingRm));
}
+
+ }
+
+ private static final class DebugSourceFileInfo implements IDebugSourceFileInfo {
+ private final SourceFileInfo miInfo;
+
+ private DebugSourceFileInfo(SourceFileInfo miInfo) {
+ if (miInfo == null)
+ throw new IllegalArgumentException("The SourceFileInfo provided is null"); //$NON-NLS-1$
+ this.miInfo = miInfo;
+ }
+
+ @Override
+ public String getName() {
+ // we get the file name without the path
+ String name = miInfo != null ? miInfo.getFile() : null;
+ if (name == null)
+ return name;
+ try {
+ Path p = Paths.get(name);
+ name = p.getFileName() != null ? p.getFileName().toString() : ""; //$NON-NLS-1$
+ } catch (InvalidPathException e) {
+ // do nothing
+ }
+ return name;
+ }
+
+ @Override
+ public String getPath() {
+ // we get the file name without the path
+ String path = miInfo != null ? miInfo.getFullName() : null;
+ if (path == null)
+ return path;
+ try {
+ Path p = Paths.get(path);
+ path = p.toString();
+ } catch (InvalidPathException e) {
+ // do nothing
+ }
+ return path;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((miInfo == null) ? 0 : miInfo.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ DebugSourceFileInfo other = (DebugSourceFileInfo) obj;
+ if (miInfo == null) {
+ if (other.miInfo != null)
+ return false;
+ } else if (!miInfo.equals(other.miInfo))
+ return false;
+ return true;
+ }
+
+ @Override
+ public String toString() {
+ return "DebugSourceFileInfo [miInfo=" + miInfo + "]"; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
}
+ @Override
+ public void getSources(final IDMContext dmc, final DataRequestMonitor<IDebugSourceFileInfo[]> rm) {
+ fDebugSourceFilesCache.execute(fCommandFactory.createMiFileListExecSourceFiles(dmc),
+ new DataRequestMonitor<MiSourceFilesInfo>(getExecutor(), rm) {
+ @Override
+ protected void handleSuccess() {
+ IDebugSourceFileInfo[] result = null;
+ MiSourceFilesInfo sourceFiles = getData();
+ SourceFileInfo[] info = sourceFiles.getSourceFiles();
+ result = Arrays.asList(info).stream().map(DebugSourceFileInfo::new)
+ .toArray(IDebugSourceFileInfo[]::new);
+ rm.setData(result);
+ rm.done();
+ }
+ });
+ }
+
+ @Override
+ public void flushCache(IDMContext context) {
+ fDebugSourceFilesCache.reset();
+ getSession().dispatchEvent(new DebugSourceFilesChangedEvent(fCommand.getContext()), getProperties());
+ }
}
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/IDebugSourceFiles.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/IDebugSourceFiles.java
new file mode 100644
index 00000000000..e0060df9cd4
--- /dev/null
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/IDebugSourceFiles.java
@@ -0,0 +1,67 @@
+/*******************************************************************************
+ * Copyright (c) 2017, 2018 Kichwa Coders Ltd and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Jonah Graham (Kichwa Coders) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.dsf.gdb.service;
+
+import org.eclipse.cdt.dsf.concurrent.DataRequestMonitor;
+import org.eclipse.cdt.dsf.datamodel.IDMContext;
+import org.eclipse.cdt.dsf.datamodel.IDMEvent;
+import org.eclipse.cdt.dsf.service.IDsfService;
+
+/**
+ * Provides the ability to obtain the list of source files for the given debug
+ * context. For GDB this is using the -file-list-exec-source-files command
+ *
+ * @since 5.8
+ */
+public interface IDebugSourceFiles extends IDsfService {
+
+ /**
+ * Data type for what is returned by
+ * {@link IDebugSourceFiles#getSources(IDMContext, DataRequestMonitor)}
+ */
+ public interface IDebugSourceFileInfo {
+
+ /**
+ * The name of the source file as it appears in the debug information. This may
+ * be relative, just the name, or absolute. Use {@link #getPath()} for the
+ * absolute path to the file name.
+ *
+ * @return name of the file
+ */
+ public String getName();
+
+ /**
+ * The absolute path of the the file.
+ *
+ * @return path to the file
+ */
+ public String getPath();
+ }
+
+ /**
+ * Event indicating that the list of the files may have changed for the given context.
+ */
+ public interface IDebugSourceFilesChangedEvent extends IDMEvent<IDMContext> {
+ }
+
+ /**
+ * Retrieves the list of sources data/files for the given context.
+ *
+ * @param context
+ * execution context
+ * @param rm
+ * Request completion monitor.
+ */
+ void getSources(IDMContext context, DataRequestMonitor<IDebugSourceFileInfo[]> rm);
+} \ No newline at end of file
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/IGDBBackend.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/IGDBBackend.java
index e283b628d65..f58b992c791 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/IGDBBackend.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/IGDBBackend.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2011 Nokia Corporation.
+ * Copyright (c) 2008, 2021 Nokia Corporation.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -11,6 +11,7 @@
* Contributors:
* Nokia - initial version
* Ericsson - Minor cleanup
+ * John Dallaway - Add getDebuggerCommandLineArray() method (Bug 572944)
*******************************************************************************/
package org.eclipse.cdt.dsf.gdb.service;
@@ -86,6 +87,16 @@ public interface IGDBBackend extends IMIBackend {
public IPath getGDBWorkingDirectory() throws CoreException;
/**
+ * Get the command line used to invoke GDB.
+ *
+ * @return String[] - the GDB command and its arguments as an array
+ * @since 6.4
+ */
+ default String[] getDebuggerCommandLineArray() {
+ return new String[0];
+ }
+
+ /**
* @throws CoreException
* - error in getting the option.
*/
@@ -171,6 +182,14 @@ public interface IGDBBackend extends IMIBackend {
}
/**
+ * @return True if CDT should use target async in all-stop mode.
+ * @since 6.2
+ */
+ default boolean useTargetAsync() {
+ return false;
+ }
+
+ /**
* @return The real GDB process that was started for the debug session
* @since 5.2
*/
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/IGDBSourceLookup.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/IGDBSourceLookup.java
index b227246293a..7626196cea6 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/IGDBSourceLookup.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/IGDBSourceLookup.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2015 Kichwa Coders and others.
+ * Copyright (c) 2015 Kichwa Coders Ltd and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/StartOrRestartProcessSequence_7_0.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/StartOrRestartProcessSequence_7_0.java
index ac18ef3e340..b2ae8cb9a60 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/StartOrRestartProcessSequence_7_0.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/StartOrRestartProcessSequence_7_0.java
@@ -263,6 +263,14 @@ public class StartOrRestartProcessSequence_7_0 extends ReflectionSequence {
if (fUserBreakpoint != null) {
fUserBreakpointIsOnMain = fBreakPointForReverse.getAddress()
.equals(fUserBreakpoint.getAddress());
+ if (fUserBreakpointIsOnMain) {
+ String number = fBreakPointForReverse.getNumber();
+ fBreakPointForReverse = fUserBreakpoint;
+ fCommandControl.queueCommand(
+ fCommandFactory.createMIBreakDelete(bpTargetDmc, number),
+ new ImmediateDataRequestMonitor<MIInfo>(rm));
+ return;
+ }
}
}
}
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIBreakpoints.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIBreakpoints.java
index 5b539f2aca5..1ee5724f045 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIBreakpoints.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIBreakpoints.java
@@ -809,8 +809,7 @@ public class MIBreakpoints extends AbstractDsfService implements IBreakpointsExt
expression = adjustWatchPointExpression(attributes, expression);
// The DataRequestMonitor for the add request
- DataRequestMonitor<MIBreakInsertInfo> addWatchpointDRM = new DataRequestMonitor<MIBreakInsertInfo>(
- getExecutor(), drm) {
+ DataRequestMonitor<MIBreakInsertInfo> addWatchpointDRM = new DataRequestMonitor<>(getExecutor(), drm) {
@Override
protected void handleSuccess() {
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIBreakpointsManager.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIBreakpointsManager.java
index 34837112624..1296c097c2b 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIBreakpointsManager.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIBreakpointsManager.java
@@ -24,6 +24,7 @@
package org.eclipse.cdt.dsf.mi.service;
+import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
@@ -112,8 +113,6 @@ import org.eclipse.debug.core.IBreakpointManagerListener;
import org.eclipse.debug.core.model.IBreakpoint;
import org.osgi.framework.BundleContext;
-import com.ibm.icu.text.MessageFormat;
-
/**
* Breakpoint service interface. The breakpoint service tracks CDT breakpoint
* objects, and based on those, it manages breakpoints in the debugger back end.
@@ -659,8 +658,7 @@ public class MIBreakpointsManager extends AbstractDsfService
// Install the back-end breakpoint(s)
for (final String thread : threads) {
- DataRequestMonitor<IBreakpointDMContext> drm = new DataRequestMonitor<IBreakpointDMContext>(getExecutor(),
- installRM) {
+ DataRequestMonitor<IBreakpointDMContext> drm = new DataRequestMonitor<>(getExecutor(), installRM) {
@Override
protected void handleSuccess() {
// Add the new back-end breakpoint to the map
@@ -1116,8 +1114,8 @@ public class MIBreakpointsManager extends AbstractDsfService
// New back-end breakpoints insertion monitor
// Holds the list of new back-end breakpoint contexts of the platform breakpoint
- final DataRequestMonitor<Vector<IBreakpointDMContext>> insertRM = new DataRequestMonitor<Vector<IBreakpointDMContext>>(
- getExecutor(), null) {
+ final DataRequestMonitor<Vector<IBreakpointDMContext>> insertRM = new DataRequestMonitor<>(getExecutor(),
+ null) {
@Override
// In theory, we could have had a partial success and the original threads
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIBreakpointsSynchronizer.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIBreakpointsSynchronizer.java
index b87ceda8e07..581f27a9002 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIBreakpointsSynchronizer.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIBreakpointsSynchronizer.java
@@ -15,6 +15,7 @@
* Marc Khouzam (Ericsson) - Support for dynamic printf (Bug 400628)
* Jonah Graham (Kichwa Coders) - Bug 317173 - cleanup warnings
* Jonah Graham (Kichwa Coders) - Bug 530377 - Corruption of state due to fast events from GDB
+ * Umair Sair (Siemens) - Bug 571161 - MIBreakpointsSynchronizer is broken in certain scenarios
*******************************************************************************/
package org.eclipse.cdt.dsf.mi.service;
@@ -24,6 +25,7 @@ import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
+import java.util.Collections;
import java.util.Deque;
import java.util.HashMap;
import java.util.HashSet;
@@ -384,33 +386,39 @@ public class MIBreakpointsSynchronizer extends AbstractDsfService
.getBPToPlatformMaps();
Stream<IBreakpointDMContext> breakpointsKnownToManager = bpToPlatformMaps.entrySet().stream()
.flatMap(m -> m.getValue().keySet().stream());
- Collector<MIBreakpointDMContext, ?, Map<IBreakpointsTargetDMContext, String>> collector = Collectors.toMap(
+ Collector<MIBreakpointDMContext, ?, Map<IBreakpointsTargetDMContext, Set<String>>> collector = Collectors.toMap(
(MIBreakpointDMContext dmc) -> DMContexts.getAncestorOfType(dmc, IBreakpointsTargetDMContext.class),
- (MIBreakpointDMContext dmc) -> dmc.getReference());
- Map<IBreakpointsTargetDMContext, String> numbersKnownToManager = breakpointsKnownToManager
+ (MIBreakpointDMContext dmc) -> new HashSet<>(Collections.singleton(dmc.getReference())),
+ (a, b) -> Stream.concat(a.stream(), b.stream()).collect(Collectors.toCollection(HashSet::new)));
+ Map<IBreakpointsTargetDMContext, Set<String>> numbersKnownToManager = breakpointsKnownToManager
.filter(MIBreakpointDMContext.class::isInstance).map(MIBreakpointDMContext.class::cast)
.collect(collector);
for (MIBreakpoint miBpt : data.getMIBreakpoints()) {
String number = miBpt.getNumber();
- if (numbersKnownToManager.values().remove(number)) {
- BreakpointEvent event = new BreakpointEvent();
+
+ boolean found = false;
+ for (Set<String> bpNumbers : numbersKnownToManager.values())
+ if (bpNumbers.remove(number))
+ found = true;
+
+ BreakpointEvent event = new BreakpointEvent();
+ if (found)
event.modified = miBpt;
- fBreakpointEvents.addFirst(event);
- } else {
- BreakpointEvent event = new BreakpointEvent();
+ else
event.created = miBpt;
- fBreakpointEvents.addFirst(event);
- }
+ fBreakpointEvents.addFirst(event);
}
- for (Entry<IBreakpointsTargetDMContext, String> entry : numbersKnownToManager.entrySet()) {
+
+ for (Entry<IBreakpointsTargetDMContext, Set<String>> entry : numbersKnownToManager.entrySet()) {
IBreakpointsTargetDMContext dmc = entry.getKey();
- String number = entry.getValue();
- if (number != null && !number.isEmpty() && (breakpointsContext == null || breakpointsContext.equals(dmc))) {
- BreakpointEvent event = new BreakpointEvent();
- event.deleted = number;
- fBreakpointEvents.addFirst(event);
- }
+ for (String number : entry.getValue())
+ if (number != null && !number.isEmpty()
+ && (breakpointsContext == null || breakpointsContext.equals(dmc))) {
+ BreakpointEvent event = new BreakpointEvent();
+ event.deleted = number;
+ fBreakpointEvents.addFirst(event);
+ }
}
rm.done();
@@ -750,7 +758,9 @@ public class MIBreakpointsSynchronizer extends AbstractDsfService
if (!plBpt.getCondition().equals(miBpt.getCondition())) {
plBpt.setCondition(miBpt.getCondition());
}
- if (oldData.isPending() != miBpt.isPending()) {
+ // oldData can be null for notifications of breakpoints that are inserted using DSF but
+ // not with breakpoint service
+ if (oldData != null && oldData.isPending() != miBpt.isPending()) {
if (miBpt.isPending()) {
plBpt.decrementInstallCount();
} else {
@@ -801,7 +811,10 @@ public class MIBreakpointsSynchronizer extends AbstractDsfService
// }
}
} catch (CoreException e) {
- contextBreakpoints.put(miBpt.getNumber(), oldData);
+ if (oldData != null)
+ contextBreakpoints.put(miBpt.getNumber(), oldData);
+ else
+ contextBreakpoints.remove(miBpt.getNumber());
GdbPlugin.log(e.getStatus());
}
}
@@ -1559,7 +1572,7 @@ public class MIBreakpointsSynchronizer extends AbstractDsfService
return;
}
- sourceLookup.getSource(srcDmc, debuggerPath, new DataRequestMonitor<Object>(getExecutor(), rm) {
+ sourceLookup.getSource(srcDmc, debuggerPath, new DataRequestMonitor<>(getExecutor(), rm) {
@Override
@ConfinedToDsfExecutor("fExecutor")
protected void handleCompleted() {
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIRunControl.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIRunControl.java
index d846f3c1369..635600a00f6 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIRunControl.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIRunControl.java
@@ -1383,8 +1383,7 @@ public class MIRunControl extends AbstractDsfService implements IMIRunControl, I
// It is important to use an ImmediateExecutor for this RM, to make sure we don't risk getting a new
// call to ExecuteWithTargetAvailable() when we just finished executing the steps.
- fExecuteQueuedOpsStepMonitor = new MultiRequestMonitor<RequestMonitor>(ImmediateExecutor.getInstance(),
- rm) {
+ fExecuteQueuedOpsStepMonitor = new MultiRequestMonitor<>(ImmediateExecutor.getInstance(), rm) {
@Override
protected void handleCompleted() {
assert fOperationsPending.size() == 0;
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIVariableManager.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIVariableManager.java
index 8b4e90f51e0..6da3f467708 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIVariableManager.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIVariableManager.java
@@ -1525,7 +1525,7 @@ public class MIVariableManager implements ICommandControl {
}
}
- final DataRequestMonitor<ChildFullExpressionInfo> childPathRm = new DataRequestMonitor<ChildFullExpressionInfo>(
+ final DataRequestMonitor<ChildFullExpressionInfo> childPathRm = new DataRequestMonitor<>(
fSession.getExecutor(), countingRm) {
@Override
protected void handleSuccess() {
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/breakpoint/actions/MILogActionEnabler.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/breakpoint/actions/MILogActionEnabler.java
index b0ccfdb0bee..f71e1af45a8 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/breakpoint/actions/MILogActionEnabler.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/breakpoint/actions/MILogActionEnabler.java
@@ -46,7 +46,7 @@ public class MILogActionEnabler implements ILogActionEnabler {
@Override
public String evaluateExpression(final String expression) throws Exception {
// Use a Query to synchronize the call
- Query<String> query = new Query<String>() {
+ Query<String> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<String> drm) {
final IExpressions expressionService = fServiceTracker.getService(IExpressions.class);
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/AbstractMIControl.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/AbstractMIControl.java
index d94e9dd2901..2421ccb4fab 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/AbstractMIControl.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/AbstractMIControl.java
@@ -25,13 +25,17 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
+import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.RejectedExecutionException;
@@ -39,8 +43,12 @@ import java.util.concurrent.RejectedExecutionException;
import org.eclipse.cdt.dsf.concurrent.ConfinedToDsfExecutor;
import org.eclipse.cdt.dsf.concurrent.DataRequestMonitor;
import org.eclipse.cdt.dsf.concurrent.DsfRunnable;
+import org.eclipse.cdt.dsf.concurrent.RequestMonitor;
+import org.eclipse.cdt.dsf.datamodel.AbstractDMEvent;
import org.eclipse.cdt.dsf.datamodel.DMContexts;
import org.eclipse.cdt.dsf.datamodel.IDMContext;
+import org.eclipse.cdt.dsf.debug.service.ICachingService;
+import org.eclipse.cdt.dsf.debug.service.IDsfDebugServicesFactory;
import org.eclipse.cdt.dsf.debug.service.IRunControl;
import org.eclipse.cdt.dsf.debug.service.IStack.IFrameDMContext;
import org.eclipse.cdt.dsf.debug.service.command.ICommand;
@@ -52,6 +60,9 @@ import org.eclipse.cdt.dsf.debug.service.command.IEventListener;
import org.eclipse.cdt.dsf.gdb.IGdbDebugPreferenceConstants;
import org.eclipse.cdt.dsf.gdb.internal.GdbDebugOptions;
import org.eclipse.cdt.dsf.gdb.internal.GdbPlugin;
+import org.eclipse.cdt.dsf.gdb.launching.GdbLaunch;
+import org.eclipse.cdt.dsf.gdb.launching.LaunchUtils;
+import org.eclipse.cdt.dsf.gdb.service.GdbDebugServicesFactory;
import org.eclipse.cdt.dsf.mi.service.IMICommandControl;
import org.eclipse.cdt.dsf.mi.service.IMIContainerDMContext;
import org.eclipse.cdt.dsf.mi.service.IMIExecutionDMContext;
@@ -68,15 +79,16 @@ import org.eclipse.cdt.dsf.mi.service.command.output.MIResultRecord;
import org.eclipse.cdt.dsf.mi.service.command.output.MIStreamRecord;
import org.eclipse.cdt.dsf.mi.service.command.output.MIValue;
import org.eclipse.cdt.dsf.service.AbstractDsfService;
+import org.eclipse.cdt.dsf.service.DsfServicesTracker;
import org.eclipse.cdt.dsf.service.DsfSession;
import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
import org.eclipse.core.runtime.preferences.InstanceScope;
+import org.eclipse.debug.core.ILaunch;
import org.eclipse.osgi.util.NLS;
-import com.ibm.icu.text.MessageFormat;
-
/**
* Base implementation of an MI control service. It provides basic handling
* of input/output channels, and processing of the commands.
@@ -95,6 +107,7 @@ public abstract class AbstractMIControl extends AbstractDsfService implements IM
private TxThread fTxThread;
private RxThread fRxThread;
private ErrorThread fErrorThread;
+ private final int fNumberOfConcurrentCommands;
// MI did not always support the --thread/--frame options
// This boolean is used to know if we should use -thread-select and -stack-select-frame instead
@@ -145,6 +158,16 @@ public abstract class AbstractMIControl extends AbstractDsfService implements IM
private CommandFactory fCommandFactory;
+ /**
+ * Event indicating that the back end process has started.
+ */
+ private static class RefreshAllDMEvent extends AbstractDMEvent<ICommandControlDMContext>
+ implements ICommandControlRefreshAllDMEvent {
+ public RefreshAllDMEvent(ICommandControlDMContext context) {
+ super(context);
+ }
+ }
+
public AbstractMIControl(DsfSession session) {
this(session, false, false, new CommandFactory());
}
@@ -174,6 +197,12 @@ public abstract class AbstractMIControl extends AbstractDsfService implements IM
fUseThreadAndFrameOptions = true;
}
fCommandFactory = factory;
+
+ if (isConcurrentCommandsSupported()) {
+ fNumberOfConcurrentCommands = NUMBER_CONCURRENT_COMMANDS;
+ } else {
+ fNumberOfConcurrentCommands = 1;
+ }
}
/**
@@ -311,14 +340,18 @@ public abstract class AbstractMIControl extends AbstractDsfService implements IM
fTxCommands.add(fTerminatorHandle);
}
- private synchronized void cancelRxCommands() {
- for (CommandHandle commandHandle : fRxCommands.values()) {
+ private void cancelRxCommands() {
+ Map<Integer, CommandHandle> rxCommandsCopy;
+ synchronized (fRxCommands) {
+ rxCommandsCopy = new LinkedHashMap<>(fRxCommands);
+ fRxCommands.clear();
+ }
+ for (CommandHandle commandHandle : rxCommandsCopy.values()) {
if (commandHandle.getRequestMonitor() == null)
continue;
commandHandle.getRequestMonitor().setStatus(genStatus("Connection is shut down")); //$NON-NLS-1$
commandHandle.getRequestMonitor().done();
}
- fRxCommands.clear();
}
/**
@@ -361,23 +394,21 @@ public abstract class AbstractMIControl extends AbstractDsfService implements IM
fCommandQueue.add(handle);
processCommandQueued(handle);
- if (fRxCommands.size() < NUMBER_CONCURRENT_COMMANDS) {
- // In a separate dispatch cycle. This allows command listeners
- // to respond to the command queued event.
- getExecutor().execute(new DsfRunnable() {
- @Override
- public void run() {
- processNextQueuedCommand();
- }
- });
- }
+ // In a separate dispatch cycle. This allows command listeners
+ // to respond to the command queued event.
+ getExecutor().execute(new DsfRunnable() {
+ @Override
+ public void run() {
+ processNextQueuedCommand();
+ }
+ });
}
return handle;
}
private void processNextQueuedCommand() {
- if (!fCommandQueue.isEmpty()) {
+ if (!fCommandQueue.isEmpty() && fRxCommands.size() < fNumberOfConcurrentCommands) {
final CommandHandle handle = fCommandQueue.remove(0);
if (handle != null) {
processCommandSent(handle);
@@ -1067,8 +1098,9 @@ public abstract class AbstractMIControl extends AbstractDsfService implements IM
fAccumulatedOOBRecords.add(oob);
// limit growth, but only if these are not responses to CLI commands
- // Bug 302927 & 330608
- if (fRxCommands.isEmpty() && fAccumulatedOOBRecords.size() > 20) {
+ // Bug 302927 & 330608 & 569911
+ if (fRxCommands.isEmpty() && fAccumulatedOOBRecords.size() > 20
+ || fAccumulatedOOBRecords.size() > 100000) {
fAccumulatedOOBRecords.remove(0);
}
@@ -1226,4 +1258,57 @@ public abstract class AbstractMIControl extends AbstractDsfService implements IM
processCommandDone(commandHandle, info);
}
}
+
+ /**
+ * @since 6.1
+ */
+ @Override
+ public void flushAllCachesAndRefresh(RequestMonitor rm) {
+ DsfServicesTracker servicesTracker = getServicesTracker();
+
+ Set<ICachingService> services = new HashSet<>(servicesTracker.getServices(ICachingService.class));
+ for (ICachingService service : services) {
+ service.flushCache(null);
+ }
+
+ // Issue a refresh event for any services or UI that is not an ICachingService
+ getSession().dispatchEvent(new RefreshAllDMEvent(getContext()), getProperties());
+ rm.done();
+ }
+
+ /**
+ * @since 6.6
+ */
+ protected String getGdbVersion() {
+ ILaunch launch = (ILaunch) getSession().getModelAdapter(ILaunch.class);
+ if (launch instanceof GdbLaunch) {
+ IDsfDebugServicesFactory servicesFactory = ((GdbLaunch) launch).getServiceFactory();
+ if (servicesFactory instanceof GdbDebugServicesFactory) {
+ return ((GdbDebugServicesFactory) servicesFactory).getVersion();
+ }
+ }
+ return null;
+ }
+
+ /**
+ * @since 6.6
+ */
+ protected boolean isConcurrentCommandsSupported() {
+ if (Platform.getOS().equals(Platform.OS_LINUX)) {
+ // Check if GDB client version is in range [8.3.50, 12.1)
+ // See https://sourceware.org/bugzilla/show_bug.cgi?id=28711 for details
+
+ String version = getGdbVersion();
+ if (version == null || version.isEmpty()) {
+ // Unknown version, assume it's affected
+ return false;
+ }
+ if (LaunchUtils.compareVersions(version, "8.3.50") >= 0 //$NON-NLS-1$
+ && LaunchUtils.compareVersions(version, "12.1") < 0) { //$NON-NLS-1$
+ // Within problematic version range
+ return false;
+ }
+ }
+ return true;
+ }
}
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/CommandFactory.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/CommandFactory.java
index a1aef544584..0ea669903d9 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/CommandFactory.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/CommandFactory.java
@@ -120,6 +120,7 @@ import org.eclipse.cdt.dsf.mi.service.command.commands.MIExecUncall;
import org.eclipse.cdt.dsf.mi.service.command.commands.MIExecUntil;
import org.eclipse.cdt.dsf.mi.service.command.commands.MIFileExecAndSymbols;
import org.eclipse.cdt.dsf.mi.service.command.commands.MIFileExecFile;
+import org.eclipse.cdt.dsf.mi.service.command.commands.MIFileListExecSourceFiles;
import org.eclipse.cdt.dsf.mi.service.command.commands.MIFileSymbolFile;
import org.eclipse.cdt.dsf.mi.service.command.commands.MIGDBExit;
import org.eclipse.cdt.dsf.mi.service.command.commands.MIGDBSet;
@@ -145,6 +146,7 @@ import org.eclipse.cdt.dsf.mi.service.command.commands.MIGDBSetRemoteTimeout;
import org.eclipse.cdt.dsf.mi.service.command.commands.MIGDBSetSchedulerLocking;
import org.eclipse.cdt.dsf.mi.service.command.commands.MIGDBSetSolibAbsolutePrefix;
import org.eclipse.cdt.dsf.mi.service.command.commands.MIGDBSetSolibSearchPath;
+import org.eclipse.cdt.dsf.mi.service.command.commands.MIGDBSetStartupWithShell;
import org.eclipse.cdt.dsf.mi.service.command.commands.MIGDBSetTargetAsync;
import org.eclipse.cdt.dsf.mi.service.command.commands.MIGDBSetTargetCharset;
import org.eclipse.cdt.dsf.mi.service.command.commands.MIGDBSetTargetWideCharset;
@@ -254,6 +256,7 @@ import org.eclipse.cdt.dsf.mi.service.command.output.MIVarSetFormatInfo;
import org.eclipse.cdt.dsf.mi.service.command.output.MIVarShowAttributesInfo;
import org.eclipse.cdt.dsf.mi.service.command.output.MIVarShowFormatInfo;
import org.eclipse.cdt.dsf.mi.service.command.output.MIVarUpdateInfo;
+import org.eclipse.cdt.dsf.mi.service.command.output.MiSourceFilesInfo;
/**
* Factory to create MI/CLI commands.
@@ -427,17 +430,17 @@ public class CommandFactory {
}
/** @since 5.0 */
- public ICommand<MIInfo> createMIBreakDelete(IBreakpointsTargetDMContext ctx, String[] array) {
+ public ICommand<MIInfo> createMIBreakDelete(IBreakpointsTargetDMContext ctx, String... array) {
return new MIBreakDelete(ctx, array);
}
/** @since 5.0 */
- public ICommand<MIInfo> createMIBreakDisable(IBreakpointsTargetDMContext ctx, String[] array) {
+ public ICommand<MIInfo> createMIBreakDisable(IBreakpointsTargetDMContext ctx, String... array) {
return new MIBreakDisable(ctx, array);
}
/** @since 5.0 */
- public ICommand<MIInfo> createMIBreakEnable(IBreakpointsTargetDMContext ctx, String[] array) {
+ public ICommand<MIInfo> createMIBreakEnable(IBreakpointsTargetDMContext ctx, String... array) {
return new MIBreakEnable(ctx, array);
}
@@ -739,6 +742,11 @@ public class CommandFactory {
return new MIFileExecFile(dmc);
}
+ /** @since 5.8*/
+ public ICommand<MiSourceFilesInfo> createMiFileListExecSourceFiles(IDMContext ctx) {
+ return new MIFileListExecSourceFiles(ctx);
+ }
+
public ICommand<MIInfo> createMIFileSymbolFile(ICommandControlDMContext dmc, String file) {
return new MIFileSymbolFile(dmc, file);
}
@@ -878,6 +886,11 @@ public class CommandFactory {
return new MIGDBSetSolibSearchPath(ctx, paths);
}
+ /** @since 6.4 */
+ public ICommand<MIInfo> createMIGDBSetStartupWithShell(ICommandControlDMContext ctx, boolean enable) {
+ return new MIGDBSetStartupWithShell(ctx, enable);
+ }
+
public ICommand<MIInfo> createMIGDBSetTargetAsync(ICommandControlDMContext ctx, boolean isSet) {
return new MIGDBSetTargetAsync(ctx, isSet);
}
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/MIBackendCLIProcess.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/MIBackendCLIProcess.java
index b896dd5ce7e..b341e976eae 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/MIBackendCLIProcess.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/MIBackendCLIProcess.java
@@ -99,7 +99,7 @@ public class MIBackendCLIProcess extends AbstractCLIProcess {
}
try {
- Query<Object> query = new Query<Object>() {
+ Query<Object> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<Object> rm) {
if (!DsfSession.isSessionActive(getSession().getId()) || isDisposed()
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/MIInferiorProcess.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/MIInferiorProcess.java
index ff10903d7b8..7061cba1ada 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/MIInferiorProcess.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/MIInferiorProcess.java
@@ -295,7 +295,7 @@ public class MIInferiorProcess extends Process implements IEventListener, IComma
// with multi-process (it is re-used by the different processes).
// We use it still for GDB 7.2, since the single-process case is the most common.
try {
- Query<Integer> exitCodeQuery = new Query<Integer>() {
+ Query<Integer> exitCodeQuery = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<Integer> rm) {
// Guard against session disposed.
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/Messages.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/Messages.java
index 4b32a993a25..2e3b4cee2e1 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/Messages.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/Messages.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2018 Kichwa Coders and others.
+ * Copyright (c) 2018 Kichwa Coders Ltd and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/CLIUnsetSubstitutePath.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/CLIUnsetSubstitutePath.java
index 8fadc9a4033..32224bf8170 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/CLIUnsetSubstitutePath.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/CLIUnsetSubstitutePath.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2015 Kichwa Coders and others.
+ * Copyright (c) 2015 Kichwa Coders Ltd and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/MIFileListExecSourceFiles.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/MIFileListExecSourceFiles.java
new file mode 100644
index 00000000000..c1f43f914c4
--- /dev/null
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/MIFileListExecSourceFiles.java
@@ -0,0 +1,39 @@
+/*******************************************************************************
+ * Copyright (c) 2017, 2018 Kichwa Coders Ltd and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Jonah Graham (Kichwa Coders) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.dsf.mi.service.command.commands;
+
+import org.eclipse.cdt.dsf.datamodel.IDMContext;
+import org.eclipse.cdt.dsf.mi.service.command.output.MIOutput;
+import org.eclipse.cdt.dsf.mi.service.command.output.MiSourceFilesInfo;
+
+/**
+ *
+ * -file-list-exec-source-files
+ *
+ * Returns the list of source files for the current execution context. It
+ * outputs both filename and full (absolute path) file name of a source file.
+ *
+ * @since 5.8
+ */
+public class MIFileListExecSourceFiles extends MICommand<MiSourceFilesInfo> {
+
+ public MIFileListExecSourceFiles(IDMContext ctx) {
+ super(ctx, "-file-list-exec-source-files"); //$NON-NLS-1$
+ }
+
+ @Override
+ public MiSourceFilesInfo getResult(MIOutput out) {
+ return new MiSourceFilesInfo(out);
+ }
+} \ No newline at end of file
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/MIGDBSetNewConsole.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/MIGDBSetNewConsole.java
index ee173cc5eae..c042294c16d 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/MIGDBSetNewConsole.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/MIGDBSetNewConsole.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2017 Kichwa Coders and others.
+ * Copyright (c) 2017 Kichwa Coders Ltd and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/MIGDBSetRemoteTimeout.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/MIGDBSetRemoteTimeout.java
index 7d6feb15184..05e87fdb25b 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/MIGDBSetRemoteTimeout.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/MIGDBSetRemoteTimeout.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2018 Kichwa Coders
+ * Copyright (c) 2018 Kichwa Coders Ltd
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/MIGDBSetStartupWithShell.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/MIGDBSetStartupWithShell.java
new file mode 100644
index 00000000000..351118c3c9f
--- /dev/null
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/MIGDBSetStartupWithShell.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2021 Kichwa Coders Canada Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.dsf.mi.service.command.commands;
+
+import org.eclipse.cdt.dsf.debug.service.command.ICommandControlService.ICommandControlDMContext;
+
+/**
+ *
+ * -gdb-set startup-with-shell [on | off]
+ *
+ * Available with GDB 7.7 in GDB and 8.1 for gdbserver
+ *
+ * @since 6.4
+ *
+ */
+public class MIGDBSetStartupWithShell extends MIGDBSet {
+ public MIGDBSetStartupWithShell(ICommandControlDMContext ctx, boolean enable) {
+ super(ctx, new String[] { "startup-with-shell", enable ? "on" : "off" });//$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
+ }
+} \ No newline at end of file
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/MIGDBShowNewConsole.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/MIGDBShowNewConsole.java
index bd1a88f6742..70cf80fabb3 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/MIGDBShowNewConsole.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/MIGDBShowNewConsole.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2017 Kichwa Coders and others.
+ * Copyright (c) 2017 Kichwa Coders Ltd and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/MISetSubstitutePath.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/MISetSubstitutePath.java
index 09ada39f31b..d3e00805e96 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/MISetSubstitutePath.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/MISetSubstitutePath.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2015 Kichwa Coders and others.
+ * Copyright (c) 2015 Kichwa Coders Ltd and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/messages.properties b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/messages.properties
index d2ccd80cb8c..40daa5f8299 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/messages.properties
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/messages.properties
@@ -1,5 +1,5 @@
###############################################################################
-# Copyright (c) 2018 Kichwa Coders and others.
+# Copyright (c) 2018 Kichwa Coders Ltd and others.
#
# This program and the accompanying materials
# are made available under the terms of the Eclipse Public License 2.0
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/output/MIGDBShowNewConsoleInfo.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/output/MIGDBShowNewConsoleInfo.java
index a3b8eab7825..5757d760bd8 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/output/MIGDBShowNewConsoleInfo.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/output/MIGDBShowNewConsoleInfo.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2017 Kichwa Coders and others.
+ * Copyright (c) 2017 Kichwa Coders Ltd and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/output/MIInstruction.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/output/MIInstruction.java
index 56d00ec696c..7207534908f 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/output/MIInstruction.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/output/MIInstruction.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2015 QNX Software Systems and others.
+ * Copyright (c) 2000, 2021 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -13,6 +13,7 @@
* Ericsson - Adapted for DSF
* Dmitry Kozlov (Mentor Graphics) - Add tab symbols parsing (Bug 391115)
* William Riley (Renesas) - Add raw Opcode parsing (Bug 357270)
+ * John Dallaway - Fix counting of opcode bytes (Bug 573506)
*******************************************************************************/
package org.eclipse.cdt.dsf.mi.service.command.output;
@@ -28,6 +29,7 @@ public class MIInstruction extends AbstractInstruction {
String function = ""; //$NON-NLS-1$
long offset;
String opcode = ""; //$NON-NLS-1$
+ String rawOpcodeString = null;
String args = ""; //$NON-NLS-1$
BigInteger rawOpcodes = null;
Integer opcodeSize = null;
@@ -71,6 +73,11 @@ public class MIInstruction extends AbstractInstruction {
return rawOpcodes;
}
+ @Override
+ public String getRawOpcode() {
+ return rawOpcodeString;
+ }
+
/**
* Parse the assembly instruction result. Each instruction has the following
* fields:
@@ -157,8 +164,11 @@ public class MIInstruction extends AbstractInstruction {
if (var.equals("opcodes")) { //$NON-NLS-1$
try {
+ rawOpcodeString = str;
rawOpcodes = decodeOpcodes(str);
- opcodeSize = Integer.valueOf(str.replace(" ", "").length() / 2); //$NON-NLS-1$//$NON-NLS-2$
+
+ // count the space-separated bytes (do not assume 8 bits per byte)
+ opcodeSize = (int) str.chars().filter(ch -> (' ' == ch)).count() + 1;
} catch (NumberFormatException e) {
}
continue;
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/output/MiSourceFilesInfo.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/output/MiSourceFilesInfo.java
new file mode 100644
index 00000000000..0f521496bda
--- /dev/null
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/output/MiSourceFilesInfo.java
@@ -0,0 +1,164 @@
+/*******************************************************************************
+ * Copyright (c) 2017, 2018 Kichwa Coders Ltd and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Jonah Graham (Kichwa Coders) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.dsf.mi.service.command.output;
+
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * Example output is:
+ *
+ * <pre>
+ * (gdb) -file-list-exec-source-files
+ * ^done,files=[{file=foo.c,fullname=/home/foo.c},
+ * {file=/home/bar.c,fullname=/home/bar.c},
+ * {file=gdb_could_not_find_fullpath.c}]
+ * </pre>
+ *
+ * @since 5.8
+ */
+public class MiSourceFilesInfo extends MIInfo {
+
+ private SourceFileInfo[] sourceFileInfos;
+
+ public MiSourceFilesInfo(MIOutput record) {
+ super(record);
+ parse();
+ if (sourceFileInfos == null) {
+ sourceFileInfos = new SourceFileInfo[0];
+ }
+ }
+
+ /**
+ * Returns array of source files infos
+ *
+ * @return
+ */
+ public SourceFileInfo[] getSourceFiles() {
+ return sourceFileInfos;
+ }
+
+ private void parse() {
+ if (isDone()) {
+ MIOutput out = getMIOutput();
+ MIResultRecord rr = out.getMIResultRecord();
+ if (rr != null) {
+ MIResult[] results = rr.getMIResults();
+ for (int i = 0; i < results.length; i++) {
+ String var = results[i].getVariable();
+ if (var.equals("files")) { //$NON-NLS-1$
+ MIValue value = results[i].getMIValue();
+ if (value instanceof MIList) {
+ parseResults((MIList) value);
+ }
+ }
+ }
+ }
+ }
+
+ }
+
+ private void parseResults(MIList list) {
+ MIValue[] miValues = list.getMIValues();
+ List<SourceFileInfo> infos = new LinkedList<>();
+ if (miValues != null) {
+ for (MIValue miValue : miValues) {
+ if (miValue instanceof MITuple) {
+ MITuple miTuple = (MITuple) miValue;
+ SourceFileInfo info = new SourceFileInfo();
+ info.parse(miTuple.getMIResults());
+ infos.add(info);
+ }
+ }
+ }
+ sourceFileInfos = infos.toArray(new SourceFileInfo[infos.size()]);
+ }
+
+ public static class SourceFileInfo {
+ private String file;
+ private String fullname;
+
+ public void setFile(String file) {
+ this.file = file;
+ }
+
+ public String getFile() {
+ return file;
+ }
+
+ public void setFullName(String fullname) {
+ this.fullname = fullname;
+ }
+
+ public String getFullName() {
+ return fullname;
+ }
+
+ private void parse(MIResult[] results) {
+ for (MIResult result : results) {
+ String variable = result.getVariable();
+ MIValue miVal = result.getMIValue();
+ if (!(miVal instanceof MIConst)) {
+ continue;
+ }
+ String value = ((MIConst) miVal).getCString();
+ switch (variable) {
+ case "file": //$NON-NLS-1$
+ file = value;
+ break;
+ case "fullname": //$NON-NLS-1$
+ fullname = value;
+ break;
+ }
+ }
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((file == null) ? 0 : file.hashCode());
+ result = prime * result + ((fullname == null) ? 0 : fullname.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ SourceFileInfo other = (SourceFileInfo) obj;
+ if (file == null) {
+ if (other.file != null)
+ return false;
+ } else if (!file.equals(other.file))
+ return false;
+ if (fullname == null) {
+ if (other.fullname != null)
+ return false;
+ } else if (!fullname.equals(other.fullname))
+ return false;
+ return true;
+ }
+
+ @Override
+ public String toString() {
+ return "SourceFileInfo [file=" + file + ", fullname=" + fullname + "]"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ }
+
+ }
+}
diff --git a/dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/.classpath b/dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/.classpath
index eca7bdba8f0..e801ebfb468 100644
--- a/dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/.classpath
+++ b/dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/.project b/dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/.project
index 9bcd88e7af4..151743cea52 100644
--- a/dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/.project
+++ b/dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/.project
@@ -20,9 +20,15 @@
<arguments>
</arguments>
</buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.pde.PluginNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
</natures>
</projectDescription>
diff --git a/dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/.settings/org.eclipse.core.resources.prefs b/dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/.settings/org.eclipse.jdt.core.prefs b/dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/.settings/org.eclipse.jdt.core.prefs
index 1e4fd5e53f6..b3f421f43cd 100644
--- a/dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/.settings/org.eclipse.jdt.core.prefs
+++ b/dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/.settings/org.eclipse.jdt.ui.prefs b/dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/.settings/org.eclipse.jdt.ui.prefs
+++ b/dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/META-INF/MANIFEST.MF b/dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/META-INF/MANIFEST.MF
index ee68be122e6..ab8e33c4fdd 100644
--- a/dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/META-INF/MANIFEST.MF
+++ b/dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/META-INF/MANIFEST.MF
@@ -1,8 +1,8 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
-Bundle-Name: GDB DSF Debugger Extension Example
+Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.examples.dsf.gdb;singleton:=true
-Bundle-Version: 1.1.0.qualifier
+Bundle-Version: 1.1.200.qualifier
Bundle-Activator: org.eclipse.cdt.examples.dsf.gdb.GDBExamplePlugin
Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime,
@@ -18,9 +18,9 @@ Require-Bundle: org.eclipse.ui,
org.eclipse.cdt.debug.ui,
org.eclipse.ui.console,
org.eclipse.tm.terminal.control
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-ActivationPolicy: lazy
-Bundle-Vendor: Eclipse CDT
+Bundle-Vendor: %providerName
Export-Package: org.eclipse.cdt.examples.dsf.gdb;x-internal:=true,
org.eclipse.cdt.examples.dsf.gdb.launch;x-internal:=true,
org.eclipse.cdt.examples.dsf.gdb.service;x-internal:=true,
@@ -28,3 +28,4 @@ Export-Package: org.eclipse.cdt.examples.dsf.gdb;x-internal:=true,
org.eclipse.cdt.examples.dsf.gdb.service.command.commands;x-internal:=true,
org.eclipse.cdt.examples.dsf.gdb.viewmodel;x-internal:=true
Automatic-Module-Name: org.eclipse.cdt.examples.dsf.gdb
+Bundle-Localization: plugin
diff --git a/dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/about.html b/dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/about.html
index 164f781a8fd..b3134865230 100644
--- a/dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/about.html
+++ b/dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/build.properties b/dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/build.properties
index 72c892905d1..1f5b1eb5b5c 100644
--- a/dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/build.properties
+++ b/dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/build.properties
@@ -2,5 +2,7 @@ source.. = src/
output.. = bin/
bin.includes = META-INF/,\
.,\
- plugin.xml
+ plugin.properties,\
+ plugin.xml,\
+ about.html
src.includes = about.html
diff --git a/dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/plugin.properties b/dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/plugin.properties
new file mode 100644
index 00000000000..6d3c04f009a
--- /dev/null
+++ b/dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/plugin.properties
@@ -0,0 +1,14 @@
+##################################################################################
+# Copyright (c) 2020 Torbjörn Svensson and others. All rights reserved.
+# This program and the accompanying materials are made available under the terms
+# of the Eclipse Public License 2.0 which accompanies this distribution, and is
+# available at https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Torbjörn Svensson - initial API and implementation
+##################################################################################
+
+pluginName = GDB DSF Debugger Extension Example
+providerName = Eclipse CDT
diff --git a/dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/src/org/eclipse/cdt/examples/dsf/gdb/actions/GdbShowVersionHandler.java b/dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/src/org/eclipse/cdt/examples/dsf/gdb/actions/GdbShowVersionHandler.java
index e2bf3467443..9c4ef1d1cb0 100644
--- a/dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/src/org/eclipse/cdt/examples/dsf/gdb/actions/GdbShowVersionHandler.java
+++ b/dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/src/org/eclipse/cdt/examples/dsf/gdb/actions/GdbShowVersionHandler.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2015, 2016 Kichwa Coders and others.
+ * Copyright (c) 2015, 2016 Kichwa Coders Ltd and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -114,7 +114,7 @@ public class GdbShowVersionHandler implements IShowVersionHandler {
str = "======= GDB version: " + getData() + " ======="; //$NON-NLS-1$ //$NON-NLS-2$
} else {
str = "Could not obtain GDB version. Error: " + //$NON-NLS-1$
- getStatus();
+ getStatus();
}
funcService.notify(context.get(), str, new RequestMonitor(fExecutor, null) {
@Override
diff --git a/dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/src/org/eclipse/cdt/examples/dsf/gdb/commands/IShowVersionHandler.java b/dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/src/org/eclipse/cdt/examples/dsf/gdb/commands/IShowVersionHandler.java
index 1e9e53d3a93..732d09c8d0b 100644
--- a/dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/src/org/eclipse/cdt/examples/dsf/gdb/commands/IShowVersionHandler.java
+++ b/dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/src/org/eclipse/cdt/examples/dsf/gdb/commands/IShowVersionHandler.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2015, 2016 Kichwa Coders and others.
+ * Copyright (c) 2015, 2016 Kichwa Coders Ltd and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
diff --git a/dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/src/org/eclipse/cdt/examples/dsf/gdb/commands/ShowVersionHandler.java b/dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/src/org/eclipse/cdt/examples/dsf/gdb/commands/ShowVersionHandler.java
index cc5c0329e0b..cb92b374fb4 100644
--- a/dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/src/org/eclipse/cdt/examples/dsf/gdb/commands/ShowVersionHandler.java
+++ b/dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/src/org/eclipse/cdt/examples/dsf/gdb/commands/ShowVersionHandler.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2015, 2016 Kichwa Coders and others.
+ * Copyright (c) 2015, 2016 Kichwa Coders Ltd and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
diff --git a/dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/src/org/eclipse/cdt/examples/dsf/gdb/launch/GdbExtendedFinalLaunchSequence.java b/dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/src/org/eclipse/cdt/examples/dsf/gdb/launch/GdbExtendedFinalLaunchSequence.java
index e2e41250ee0..28b508ac201 100644
--- a/dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/src/org/eclipse/cdt/examples/dsf/gdb/launch/GdbExtendedFinalLaunchSequence.java
+++ b/dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/src/org/eclipse/cdt/examples/dsf/gdb/launch/GdbExtendedFinalLaunchSequence.java
@@ -99,7 +99,7 @@ public class GdbExtendedFinalLaunchSequence extends FinalLaunchSequence_7_12 {
str = "======= GDB version: " + getData() + " ======="; //$NON-NLS-1$ //$NON-NLS-2$
} else {
str = "Could not obtain GDB version. Error: " + //$NON-NLS-1$
- getStatus();
+ getStatus();
}
funcService.notify(fControl.getContext(), str, rm);
}
diff --git a/dsf-gdb/org.eclipse.cdt.gnu.dsf-feature/.settings/org.eclipse.core.resources.prefs b/dsf-gdb/org.eclipse.cdt.gnu.dsf-feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/dsf-gdb/org.eclipse.cdt.gnu.dsf-feature/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/dsf-gdb/org.eclipse.cdt.gnu.dsf-feature/feature.xml b/dsf-gdb/org.eclipse.cdt.gnu.dsf-feature/feature.xml
index 28e8cccdf79..140cf1329e7 100644
--- a/dsf-gdb/org.eclipse.cdt.gnu.dsf-feature/feature.xml
+++ b/dsf-gdb/org.eclipse.cdt.gnu.dsf-feature/feature.xml
@@ -1,9 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2009, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<feature
id="org.eclipse.cdt.gnu.dsf"
label="%featureName"
- version="9.10.0.qualifier"
+ version="10.7.0.qualifier"
provider-name="%providerName"
+ plugin="org.eclipse.cdt.dsf.gdb.ui"
license-feature="org.eclipse.license"
license-feature-version="0.0.0">
diff --git a/dsf-gdb/org.eclipse.cdt.gnu.multicorevisualizer-feature/.settings/org.eclipse.core.resources.prefs b/dsf-gdb/org.eclipse.cdt.gnu.multicorevisualizer-feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/dsf-gdb/org.eclipse.cdt.gnu.multicorevisualizer-feature/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/dsf-gdb/org.eclipse.cdt.gnu.multicorevisualizer-feature/build.properties b/dsf-gdb/org.eclipse.cdt.gnu.multicorevisualizer-feature/build.properties
index 9b9d087c0e2..9b9d087c0e2 100755..100644
--- a/dsf-gdb/org.eclipse.cdt.gnu.multicorevisualizer-feature/build.properties
+++ b/dsf-gdb/org.eclipse.cdt.gnu.multicorevisualizer-feature/build.properties
diff --git a/dsf-gdb/org.eclipse.cdt.gnu.multicorevisualizer-feature/feature.xml b/dsf-gdb/org.eclipse.cdt.gnu.multicorevisualizer-feature/feature.xml
index 6fe342dd080..92cc856decf 100644
--- a/dsf-gdb/org.eclipse.cdt.gnu.multicorevisualizer-feature/feature.xml
+++ b/dsf-gdb/org.eclipse.cdt.gnu.multicorevisualizer-feature/feature.xml
@@ -1,9 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2012, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<feature
id="org.eclipse.cdt.gnu.multicorevisualizer"
label="%featureName"
- version="9.10.0.qualifier"
+ version="10.7.0.qualifier"
provider-name="%providerName"
+ plugin="org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui"
license-feature="org.eclipse.license"
license-feature-version="0.0.0">
diff --git a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/.classpath b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/.classpath
index eca7bdba8f0..a42a828e04a 100644
--- a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/.classpath
+++ b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/.classpath
@@ -1,7 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="src" path="src"/>
+ <classpathentry kind="src" path="src">
+ <attributes>
+ <attribute name="test" value="true"/>
+ </attributes>
+ </classpathentry>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/.project b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/.project
index abafad66df8..aa2bbf65013 100644
--- a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/.project
+++ b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/.project
@@ -30,9 +30,15 @@
<arguments>
</arguments>
</buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.pde.PluginNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
</natures>
</projectDescription>
diff --git a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/.settings/org.eclipse.core.resources.prefs b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/.settings/org.eclipse.jdt.core.prefs b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/.settings/org.eclipse.jdt.core.prefs
index ad05599159f..5b1c443114d 100644
--- a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/.settings/org.eclipse.jdt.core.prefs
+++ b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/.settings/org.eclipse.jdt.ui.prefs b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/.settings/org.eclipse.jdt.ui.prefs
+++ b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/META-INF/MANIFEST.MF b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/META-INF/MANIFEST.MF
index f11bab1ed88..fd51297975b 100644
--- a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/META-INF/MANIFEST.MF
+++ b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/META-INF/MANIFEST.MF
@@ -1,10 +1,10 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
-Bundle-Name: GDB/MI reference application tests
+Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.tests.dsf.gdb;singleton:=true
-Bundle-Version: 2.3.0.qualifier
+Bundle-Version: 2.3.100.qualifier
Bundle-Activator: org.eclipse.cdt.tests.dsf.gdb.launching.TestsPlugin
-Bundle-Vendor: Ericsson
+Bundle-Vendor: %providerName
Require-Bundle: org.eclipse.core.runtime,
org.eclipse.cdt.dsf,
org.eclipse.cdt.core,
@@ -17,9 +17,9 @@ Require-Bundle: org.eclipse.core.runtime,
org.eclipse.cdt.dsf.gdb,
org.eclipse.core.variables,
org.mockito,
- org.hamcrest
+ org.hamcrest.library
Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-ClassPath: .
Export-Package: org.eclipse.cdt.dsf.mi.service;x-internal:=true,
org.eclipse.cdt.tests.dsf.gdb.framework;x-internal:=true,
@@ -27,3 +27,4 @@ Export-Package: org.eclipse.cdt.dsf.mi.service;x-internal:=true,
org.eclipse.cdt.tests.dsf.gdb.tests;x-internal:=true,
org.eclipse.cdt.tests.dsf.gdb.tests.nonstop;x-internal:=true
Automatic-Module-Name: org.eclipse.cdt.tests.dsf.gdb
+Bundle-Localization: plugin
diff --git a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/about.html b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/about.html
index 164f781a8fd..b3134865230 100644
--- a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/about.html
+++ b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/build.properties b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/build.properties
index cc6772ab01e..29199d6236a 100644
--- a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/build.properties
+++ b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/build.properties
@@ -17,6 +17,7 @@ bin.includes = plugin.xml,\
META-INF/,\
.,\
data/,\
+ plugin.properties,\
about.html
source.. = src/
src.includes = about.html
diff --git a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/data/launch/src/ExpressionTestApp.cc b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/data/launch/src/ExpressionTestApp.cc
index fe113029acd..3deb936dd35 100644
--- a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/data/launch/src/ExpressionTestApp.cc
+++ b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/data/launch/src/ExpressionTestApp.cc
@@ -78,6 +78,8 @@ public:
BaseTest() {}
void test() {
nested = 8;
+ pNested = &nested;
+ /* BaseTest::test_init */
return;
}
Base Base; // make sure we don't get confused by the same name
@@ -92,7 +94,7 @@ void locals2() {
char lCharVar = 'i';
char *lCharPtr = &lCharVar;
bool *lBoolPtr2 = (bool*)0xABCDE123;
- lBoolPtr2 = 0; // step up to this line to ensure all locals are in scope
+ /* locals2_init */
return;
}
@@ -117,6 +119,7 @@ void testLocals() {
double *lDoublePtr2 = (double*)0x2345;
char *lCharPtr2 = (char*)0x1234;
bool *lBoolPtr2 = (bool*)0x123ABCDE;
+ /* testLocals_init */
locals2();
lBoolPtr2 = (bool*)0; // step-out from locals2() will land here; ensures our vars are still visible
@@ -127,7 +130,7 @@ int testChildren() {
foo f;
f.d = 1;
-
+ /* testChildren_init */
return 0;
}
@@ -142,11 +145,13 @@ int testWrite() {
int testName1(int newVal) {
int a = newVal;
+ /* testName1_init */
return a;
}
int testName2(int newVal) {
int a = newVal;
+ /* testName2_init */
return a;
}
@@ -154,6 +159,7 @@ int testSameName1(int newVal) {
int a = newVal;
Z z;
z.x = newVal;
+ /* testSameName1_a_init */
z.x = newVal; // this redundant line is here to ensure 3 steps after running to this func leaves locals visible
return a;
}
@@ -161,6 +167,7 @@ int testSameName1(int newVal, int ignore) {
int a = newVal;
Z z;
z.x = newVal;
+ /* testSameName1_b_init */
a = newVal; // this redundant line is here to ensure 3 steps after running to this func leaves locals visible
return a;
}
@@ -176,14 +183,17 @@ int testSameName() {
int testConcurrent() {
int a[2] = {28, 32};
+ /* testConcurrent_init */
return a[0];
}
int testSubblock() {
int a = 8;
int b = 1;
+ /* testSubblock_init */
if (a) {
int a = 12;
+ /* testSubblock_subblock_init */
b = a;
}
return b;
@@ -192,7 +202,7 @@ int testSubblock() {
int testAddress() {
int a = 8;
int* a_ptr = &a;
-
+ /* testAddress_init */
return a;
}
@@ -202,7 +212,7 @@ int testUpdateChildren(int val) {
childStruct a;
a.z.x = val + 10;
a.z.y = val + 11;
-
+ /* testUpdateChildren_init */
a.z.x = val + 20;
a.z.y = val + 21;
@@ -212,7 +222,7 @@ int testUpdateChildren2(int val) {
childStruct a;
a.z.x = val + 10;
a.z.y = val + 11;
-
+ /* testUpdateChildren2_init */
a.z.x = val + 20;
a.z.y = val + 21;
@@ -232,12 +242,14 @@ int testUpdateGDBBug() {
// since binary of 3 is 11 which is the same as the old value
// in natural format
int a = 11;
+ /* testUpdateGDBBug_init */
a = 3;
return 0;
}
int testUpdateIssue() {
double a = 1.99;
+ /* testUpdateIssue_init */
a = 1.22;
a = 1.22; // this redundant line is here to ensure 3 steps after running to this func leaves locals visible
}
@@ -248,6 +260,7 @@ int testUpdateIssue2() {
} z;
z.d = 1.0;
+ /* testUpdateIssue2_init */
z.d = 1.22;
z.d = 1.22; // this redundant line is here to ensure 3 steps after running to this func leaves locals visible
}
@@ -258,6 +271,7 @@ int testConcurrentReadAndUpdateChild() {
}z;
z.d = 1;
+ /* testConcurrentReadAndUpdateChild_init */
z.d = 2;
}
@@ -267,6 +281,7 @@ int testConcurrentUpdateOutOfScopeChildThenParent1() {
}z;
z.d = 1;
+ /* testConcurrentUpdateOutOfScopeChildThenParent1_init */
z.d = 1; // this redundant line is here to ensure 2 steps after running to this func leaves locals visible
}
@@ -276,6 +291,7 @@ int testConcurrentUpdateOutOfScopeChildThenParent2() {
}z;
z.d = 2;
+ /* testConcurrentUpdateOutOfScopeChildThenParent2_init */
z.d = 2; // this redundant line is here to ensure 2 steps after running to this func leaves locals visible
}
@@ -356,7 +372,7 @@ int testCasting() {
int array_small[4] = {65, 0x41424344, 0x45464748}; // Decimal: 65, 1094861636, 1162233672, Char: A, ABCD, EFGH
int* int_ptr = &array_small[0];
-
+ /* testCasting_init */
return 1;
}
@@ -386,13 +402,14 @@ private:
int f[4];
};
int testRTTI() {
- Derived derived;
+ Derived derived; // here derived.ptr is of type VirtualBase
Derived child1;
OtherDerived child2;
-
- derived.ptr = &child1; // here derived.b is of type bar
-
- derived.ptr = &child2; // here derived.b is of type foo
+ /* testRTTI_tag1 */
+ derived.ptr = &child1; // here derived.ptr is of type Derived
+ /* testRTTI_tag2 */
+ derived.ptr = &child2; // here derived.ptr is of type OtherDerived
+ /* testRTTI_tag3 */
return 1; // here derived.b is of type Derived
}
diff --git a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/data/launch/src/LaunchConfigurationAndRestartTestApp.cc b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/data/launch/src/LaunchConfigurationAndRestartTestApp.cc
index 8fa1492e62e..bb107bfadf5 100644
--- a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/data/launch/src/LaunchConfigurationAndRestartTestApp.cc
+++ b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/data/launch/src/LaunchConfigurationAndRestartTestApp.cc
@@ -23,10 +23,15 @@ int envTest() {
}
int main (int argc, char *argv[])
-{
- envTest(); // FIRST_LINE_IN_MAIN
+{ int dummy = 1; // FIRST_LINE_IN_MAIN (make the line of code the same as opening brace to account for different gdb/gcc combinations)
+ int var = 1; // GDB has incomplete support for reverse debugging - so for the purpose of tests reverse debug these simple assignment statements
+ var = 2;
+ var = 3;
+ var = 4; // three_steps_back_from_b_stopAtOther
+ var = 5;
+ stopAtOther(); // main_init
reverseTest(); // tests assume that every line between first and last
- stopAtOther(); // is steppable, so no blank lines allowed.
+ envTest(); // is steppable, so no blank lines allowed.
return 36; // LAST_LINE_IN_MAIN
// Return special value to allow
// testing exit code feature
diff --git a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/data/launch/src/Makefile b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/data/launch/src/Makefile
index 0e49ec76dfc..50b090a7411 100644
--- a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/data/launch/src/Makefile
+++ b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/data/launch/src/Makefile
@@ -66,8 +66,12 @@ $(BINDIR)/%.exe: %.cc $(HEADERS) Makefile | $(BINDIR)
# Generate a core file that is needed for post-morted core-file tests
$(COREFILE): $(BINDIR)/ExpressionTestApp.exe Makefile | $(BINDIR)
- gdb -nx --batch -ex 'b testLocals' -ex 'run' --ex 'next 16' \
- -ex 'gcore ../bin/core' $(BINDIR)/ExpressionTestApp.exe > /dev/null
+ line=$(shell grep -n testLocals_init ../src/ExpressionTestApp.cc | cut -d : -f 1); \
+ gdb -nx --batch \
+ -ex 'b ExpressionTestApp.cc:'$$line \
+ -ex 'run' \
+ -ex 'gcore ../bin/core' \
+ $(BINDIR)/ExpressionTestApp.exe > /dev/null
# Compile sourcelookup once with old dwarf flags
$(BINDIR)/SourceLookupDwarf2.exe: SourceLookup.cc $(HEADERS) Makefile | $(BINDIR)
diff --git a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/data/launch/src/MultiThread.cc b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/data/launch/src/MultiThread.cc
index 71cd0165c18..cad04f7bbc7 100644
--- a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/data/launch/src/MultiThread.cc
+++ b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/data/launch/src/MultiThread.cc
@@ -33,7 +33,7 @@ static ThreadRet THREAD_CALL_CONV PrintHello(void *void_arg)
/* Make sure that all threads are started before the breakpoint in main hits. */
ThreadBarrierWait(barrier_start);
- printf("Thread %d in the middle\n", thread_id);
+ printf("Thread %d in the middle\n", thread_id); /* LINE_THREAD_IN_HELLO */
/* Make sure that the thread does not finish before the breakpoint in main hits. */
ThreadBarrierWait(barrier_finish);
diff --git a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/plugin.properties b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/plugin.properties
new file mode 100644
index 00000000000..90dac2f70d3
--- /dev/null
+++ b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/plugin.properties
@@ -0,0 +1,14 @@
+##################################################################################
+# Copyright (c) 2020 Torbjörn Svensson and others. All rights reserved.
+# This program and the accompanying materials are made available under the terms
+# of the Eclipse Public License 2.0 which accompanies this distribution, and is
+# available at https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Torbjörn Svensson - initial API and implementation
+##################################################################################
+
+pluginName = GDB/MI reference application tests
+providerName = Eclipse CDT
diff --git a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/pom.xml b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/pom.xml
index 682d6ab1e22..b984effeb29 100644
--- a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/pom.xml
+++ b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/pom.xml
@@ -1,4 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2012, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
@@ -7,16 +17,15 @@
<parent>
<groupId>org.eclipse.cdt</groupId>
<artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
+ <version>10.7.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
- <version>2.3.0-SNAPSHOT</version>
+ <version>2.3.100-SNAPSHOT</version>
<artifactId>org.eclipse.cdt.tests.dsf.gdb</artifactId>
<packaging>eclipse-test-plugin</packaging>
<properties>
- <dsf.gdb.tests.gdbTestSuite>AutomatedSuite.java</dsf.gdb.tests.gdbTestSuite>
<dsf.gdb.tests.timeout.multiplier>1</dsf.gdb.tests.timeout.multiplier>
<skipTests>${dsf-gdb.skip.tests}</skipTests>
</properties>
@@ -24,15 +33,14 @@
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.8</version>
<executions>
<execution>
<id>clean</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<ant antfile="TestAppBuilder.xml" target="clean"/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -42,9 +50,9 @@
<id>prepare</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<ant antfile="TestAppBuilder.xml" target="makeTestApps"/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -59,11 +67,11 @@
<configuration>
<useUIHarness>false</useUIHarness>
<argLine>${tycho.testArgLine} ${base.ui.test.vmargs} -ea -Xms256m -Xmx512m -Dcdt.tests.dsf.gdb.path=${dsf.gdb.tests.gdbPath} -Ddsf.gdb.tests.timeout.multiplier=${dsf.gdb.tests.timeout.multiplier} -Dcdt.tests.dsf.gdb.versions=${cdt.tests.dsf.gdb.versions}</argLine>
- <appArgLine>-debug ./dsf.debug.options -pluginCustomization ${basedir}/../../disable_intro_in_tests.ini</appArgLine>
- <includes>
- <include>**/${dsf.gdb.tests.gdbTestSuite}</include>
- </includes>
- <testFailureIgnore>true</testFailureIgnore>
+ <appArgLine>-debug ./dsf.debug.options -pluginCustomization ${basedir}/../../disable_intro_in_tests.ini</appArgLine>
+ <environmentVariables>
+ <!-- See org.eclipse.cdt.tests.dsf.gdb.tests.CommandLineArgsTest.setLaunchAttributes() for why -->
+ <SHELL>/bin/bash</SHELL>
+ </environmentVariables>
</configuration>
</plugin>
<plugin>
diff --git a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/framework/AsyncCompletionWaitor.java b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/framework/AsyncCompletionWaitor.java
index 8ea6c23bfe5..e1b2de32cdc 100644
--- a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/framework/AsyncCompletionWaitor.java
+++ b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/framework/AsyncCompletionWaitor.java
@@ -31,7 +31,7 @@ public class AsyncCompletionWaitor {
*/
private IStatus fStatus;
private Object fReturnInfo;
- private boolean fWaitFinished;
+ private volatile boolean fWaitFinished;
private int fNumWaiting;
/*
diff --git a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/framework/BaseParametrizedTestCase.java b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/framework/BaseParametrizedTestCase.java
index 5d79edeb42a..eb05cfd9f31 100644
--- a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/framework/BaseParametrizedTestCase.java
+++ b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/framework/BaseParametrizedTestCase.java
@@ -217,16 +217,29 @@ public abstract class BaseParametrizedTestCase extends BaseTestCase {
String[] expectedParts = expected.split("\\."); //$NON-NLS-1$
String[] actualParts = actual.split("\\."); //$NON-NLS-1$
-
String comparableActualString = actual;
- if (expectedParts.length == 2 // If the expected version does not care about the maintenance number
- && actualParts.length > 2) { // and the actual version has a maintenance number (and possibly more)
- // We should ignore the maintenance number.
- // For example, if we expect 7.12, then the actual
- // version we should accept can be 7.12 or 7.12.1 or 7.12.2, 7.12.50.20170214, etc.
- int firstDot = actual.indexOf('.');
- int secondDot = actual.indexOf('.', firstDot + 1);
- comparableActualString = actual.substring(0, secondDot);
+
+ // Starting in GDB 9 the versions are MAJOR.PATCH so we only care about first number
+ int majorVersion = Integer.parseInt(expectedParts[0]);
+ if (majorVersion >= 9) {
+ if (expectedParts.length == 1 // If the expected version does not care about the maintenance number
+ && actualParts.length > 1) { // and the actual version has a maintenance number (and possibly more)
+ // We should ignore the maintenance number.
+ // For example, if we expect 11, then the actual
+ // version we should accept can be 11.1 or 11.0.50 or 11.0.50.20210303-git, etc.
+ int firstDot = actual.indexOf('.');
+ comparableActualString = actual.substring(0, firstDot);
+ }
+ } else {
+ if (expectedParts.length == 2 // If the expected version does not care about the maintenance number
+ && actualParts.length > 2) { // and the actual version has a maintenance number (and possibly more)
+ // We should ignore the maintenance number.
+ // For example, if we expect 7.12, then the actual
+ // version we should accept can be 7.12 or 7.12.1 or 7.12.2, 7.12.50.20170214, etc.
+ int firstDot = actual.indexOf('.');
+ int secondDot = actual.indexOf('.', firstDot + 1);
+ comparableActualString = actual.substring(0, secondDot);
+ }
}
assertTrue("Unexpected GDB version. Expected " + expected + " actual " + actual,
diff --git a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/framework/BaseTestCase.java b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/framework/BaseTestCase.java
index bb467e61562..936c39ad473 100644
--- a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/framework/BaseTestCase.java
+++ b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/framework/BaseTestCase.java
@@ -18,7 +18,6 @@ package org.eclipse.cdt.tests.dsf.gdb.framework;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
import java.io.BufferedReader;
import java.io.FileReader;
@@ -225,8 +224,11 @@ public class BaseTestCase {
private ILaunchConfiguration fLaunchConfiguration;
+ private boolean ignoreFirstStop = false;
+
public SessionEventListener(ILaunchConfiguration launchConfiguration) {
fLaunchConfiguration = launchConfiguration;
+ this.ignoreFirstStop = SyncUtil.shouldIgnoreFirstStopAtStartup(launchConfiguration);
}
public void setSession(DsfSession session) {
@@ -261,38 +263,59 @@ public class BaseTestCase {
Object miEvent = iMIEvent.getMIEvent();
if (miEvent instanceof MIStoppedEvent) {
- // Store the corresponding MI *stopped event
- fInitialStoppedEvent = (MIStoppedEvent) miEvent;
-
- // Check the content of the frame for the method we
- // should stop at
- String stopAt = null;
- try {
- stopAt = fLaunchConfiguration.getAttribute(
- ICDTLaunchConfigurationConstants.ATTR_DEBUGGER_STOP_AT_MAIN_SYMBOL, "main");
- } catch (CoreException e) {
- }
- if (stopAt == null)
- stopAt = "main";
-
- MIFrame frame = fInitialStoppedEvent.getFrame();
- if (frame != null && frame.getFunction() != null && frame.getFunction().indexOf(stopAt) != -1) {
- // Set the event semaphore that will allow the test
- // to proceed
- synchronized (fTargetSuspendedSem) {
- fTargetSuspended = true;
- fTargetSuspendedSem.notify();
+ if (ignoreFirstStop) {
+ ignoreFirstStop = false;
+
+ } else {
+ // Store the corresponding MI *stopped event
+ fInitialStoppedEvent = (MIStoppedEvent) miEvent;
+
+ // Check the content of the frame for the method we
+ // should stop at
+ String stopAt = null;
+ boolean stopAtEnabled = true;
+ boolean reverseEnabledAtStartup = true;
+ try {
+ stopAt = fLaunchConfiguration.getAttribute(
+ ICDTLaunchConfigurationConstants.ATTR_DEBUGGER_STOP_AT_MAIN_SYMBOL, "main");
+ stopAtEnabled = fLaunchConfiguration.getAttribute(
+ ICDTLaunchConfigurationConstants.ATTR_DEBUGGER_STOP_AT_MAIN, true);
+ reverseEnabledAtStartup = fLaunchConfiguration
+ .getAttribute(IGDBLaunchConfigurationConstants.ATTR_DEBUGGER_REVERSE, false);
+ } catch (CoreException e) {
}
- // We found our event, no further need for this
- // listener
- fSession.removeServiceEventListener(this);
+ if (!stopAtEnabled) {
+ success();
+ } else {
+ if (stopAt == null)
+ stopAt = "main";
+
+ MIFrame frame = fInitialStoppedEvent.getFrame();
+ if (frame != null && frame.getFunction() != null
+ && frame.getFunction().indexOf(stopAt) != -1) {
+ success();
+ }
+ }
}
}
}
}
}
+ private void success() {
+ // Set the event semaphore that will allow the test
+ // to proceed
+ synchronized (fTargetSuspendedSem) {
+ fTargetSuspended = true;
+ fTargetSuspendedSem.notify();
+ }
+
+ // We found our event, no further need for this
+ // listener
+ fSession.removeServiceEventListener(this);
+ }
+
public void waitUntilTargetSuspended() throws InterruptedException {
if (!fTargetSuspended) {
synchronized (fTargetSuspendedSem) {
@@ -305,6 +328,7 @@ public class BaseTestCase {
public MIStoppedEvent getInitialStoppedEvent() {
return fInitialStoppedEvent;
}
+
}
/**
@@ -321,12 +345,12 @@ public class BaseTestCase {
* Make sure we are starting with a clean/known state. That means no
* existing launches.
*/
- public void removeTeminatedLaunchesBeforeTest() throws CoreException {
+ public void teminateAndRemoveLaunches() throws Exception {
ILaunchManager launchManager = DebugPlugin.getDefault().getLaunchManager();
ILaunch[] launches = launchManager.getLaunches();
for (ILaunch launch : launches) {
if (!launch.isTerminated()) {
- fail("Something has gone wrong, there is an unterminated launch from a previous test!");
+ assertLaunchTerminates((GdbLaunch) launch, true);
}
}
if (launches.length > 0) {
@@ -354,7 +378,7 @@ public class BaseTestCase {
@Before
public void doBeforeTest() throws Exception {
- removeTeminatedLaunchesBeforeTest();
+ teminateAndRemoveLaunches();
removeAllPlatformBreakpoints();
setLaunchAttributes();
doLaunch();
@@ -455,7 +479,7 @@ public class BaseTestCase {
* @return The line number corresponding to tag.
* @throws NoSuchElementException if the tag does not exist.
*/
- protected int getLineForTag(String tag) {
+ protected int getLineForTag(String tag) throws Exception {
if (!fTagLocations.containsKey(tag)) {
throw new NoSuchElementException("tag " + tag);
}
@@ -602,11 +626,26 @@ public class BaseTestCase {
assertLaunchTerminates(launch);
}
- protected void assertLaunchTerminates(GdbLaunch launch) throws InterruptedException {
+ /**
+ * Assert that the launch terminates, optionally requesting this method to terminate unterminated launch.
+ */
+ protected void assertLaunchTerminates(boolean terminate) throws Exception {
+ GdbLaunch launch = fLaunch;
+ assertLaunchTerminates(launch, terminate);
+ }
+
+ protected void assertLaunchTerminates(GdbLaunch launch) throws Exception {
+ assertLaunchTerminates(launch, false);
+ }
+
+ protected void assertLaunchTerminates(GdbLaunch launch, boolean terminate) throws Exception {
if (launch != null) {
// Give a few seconds to allow the launch to terminate
int waitCount = 100;
while (!launch.isTerminated() && !launch.getDsfExecutor().isShutdown() && --waitCount > 0) {
+ if (terminate) {
+ launch.terminate();
+ }
Thread.sleep(TestsPlugin.massageTimeout(100));
}
assertTrue("Launch failed to terminate before timeout", launch.isTerminated());
@@ -621,6 +660,7 @@ public class BaseTestCase {
fLaunch = null;
}
removeAllPlatformBreakpoints();
+ teminateAndRemoveLaunches();
}
/**
@@ -640,10 +680,11 @@ public class BaseTestCase {
String server = (String) launchAttributes.get(ATTR_DEBUG_SERVER_NAME);
String port = (String) launchAttributes.get(IGDBLaunchConfigurationConstants.ATTR_PORT);
String program = (String) launchAttributes.get(ICDTLaunchConfigurationConstants.ATTR_PROGRAM_NAME);
- String commandLine = server + " :" + port + " " + program;
+ String[] commandLine = { server, ":" + port, program };
try {
if (GdbDebugOptions.DEBUG)
- GdbDebugOptions.trace("Starting gdbserver with command: " + commandLine + "\n");
+ GdbDebugOptions
+ .trace("Starting gdbserver with command: " + Arrays.toString(commandLine) + "\n");
gdbserverProc = ProcessFactory.getFactory().exec(commandLine);
Reader r = new InputStreamReader(gdbserverProc.getErrorStream());
@@ -747,7 +788,7 @@ public class BaseTestCase {
}
protected static String doReadGdbVersion(String gdb) throws IOException {
- Process process = ProcessFactory.getFactory().exec(gdb + " --version");
+ Process process = ProcessFactory.getFactory().exec(new String[] { gdb, "--version" });
try {
String streamOutput;
try (BufferedReader buffer = new BufferedReader(new InputStreamReader(process.getInputStream()))) {
diff --git a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/framework/Intermittent.java b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/framework/Intermittent.java
deleted file mode 100644
index 2d4f2bc6244..00000000000
--- a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/framework/Intermittent.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 Alena Laskavaia and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Alena Laskavaia - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.tests.dsf.gdb.framework;
-
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.ElementType.TYPE;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-@Target({ METHOD, TYPE })
-@Retention(RUNTIME)
-public @interface Intermittent {
- int repetition() default 5;
-}
diff --git a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/framework/IntermittentRule.java b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/framework/IntermittentRule.java
deleted file mode 100644
index c31e21f84e1..00000000000
--- a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/framework/IntermittentRule.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 Alena Laskavaia and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Alena Laskavaia - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.tests.dsf.gdb.framework;
-
-import org.junit.rules.MethodRule;
-import org.junit.runners.model.FrameworkMethod;
-import org.junit.runners.model.Statement;
-
-/**
- * This is the rule to add to tests that rarely fail randomly and you want to keep them but cannot figure out they fail.
- * It is safe to use it in any class, it will only apply to tests which have @Intermittent annotation
- <code>
- import org.eclipse.cdt.tests.dsf.gdb.framework.Intermittent
- import org.eclipse.cdt.tests.dsf.gdb.framework.IntermittentRule
-
- class SomeTest {
- public @Rule IntermittentRule rule = new IntermittentRule();
-
- @Test
- @Intermittent(repetition = 3)
- public void someTest (){...}
- }
- </code>
-
- You can also ally this to the whole class
- <code>
- import org.eclipse.cdt.tests.dsf.gdb.framework.Intermittent
- import org.eclipse.cdt.tests.dsf.gdb.framework.IntermittentRule
-
- @Intermittent(repetition = 3)
- class SomeTest {
- public @Rule IntermittentRule rule = new IntermittentRule();
- ...
- }
-
- </code>
- */
-public class IntermittentRule implements MethodRule {
- public static class RunIntermittent extends Statement {
- private final FrameworkMethod method;
- private final Statement statement;
-
- public RunIntermittent(FrameworkMethod method, Statement statement) {
- this.method = method;
- this.statement = statement;
- }
-
- @Override
- public void evaluate() throws Throwable {
- int repetition = 1;
- Intermittent methodAnnot = method.getAnnotation(Intermittent.class);
- if (methodAnnot != null) {
- repetition = methodAnnot.repetition();
- } else {
- Intermittent classAnnot = method.getDeclaringClass().getAnnotation(Intermittent.class);
- if (classAnnot != null) {
- repetition = classAnnot.repetition();
- }
- }
- if (repetition > 1) {
- for (int i = 0; i < repetition; i++) {
- try {
- statement.evaluate();
- break; // did not fail yay, we are done
- } catch (Throwable e) {
- if (i < repetition - 1)
- continue; // try again
- throw e;
- }
- }
- } else
- statement.evaluate();
- }
- }
-
- @Override
- public Statement apply(Statement base, final FrameworkMethod method, final Object target) {
- return new RunIntermittent(method, base);
- }
-}
diff --git a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/framework/SyncUtil.java b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/framework/SyncUtil.java
index 0a97f39caf7..d155ab8f6e2 100644
--- a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/framework/SyncUtil.java
+++ b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/framework/SyncUtil.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2016 Ericsson and others.
+ * Copyright (c) 2007, 2018 Ericsson and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -37,10 +37,12 @@ import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import org.eclipse.cdt.core.IAddress;
+import org.eclipse.cdt.debug.core.ICDTLaunchConfigurationConstants;
import org.eclipse.cdt.dsf.concurrent.CountingRequestMonitor;
import org.eclipse.cdt.dsf.concurrent.DataRequestMonitor;
import org.eclipse.cdt.dsf.concurrent.ImmediateDataRequestMonitor;
import org.eclipse.cdt.dsf.concurrent.ImmediateExecutor;
+import org.eclipse.cdt.dsf.concurrent.ImmediateRequestMonitor;
import org.eclipse.cdt.dsf.concurrent.Query;
import org.eclipse.cdt.dsf.concurrent.ThreadSafeAndProhibitedFromDsfExecutor;
import org.eclipse.cdt.dsf.datamodel.DMContexts;
@@ -66,9 +68,13 @@ import org.eclipse.cdt.dsf.debug.service.IStack.IFrameDMContext;
import org.eclipse.cdt.dsf.debug.service.IStack.IFrameDMData;
import org.eclipse.cdt.dsf.debug.service.IStack.IVariableDMContext;
import org.eclipse.cdt.dsf.debug.service.IStack.IVariableDMData;
+import org.eclipse.cdt.dsf.gdb.IGDBLaunchConfigurationConstants;
import org.eclipse.cdt.dsf.gdb.launching.GdbLaunch;
+import org.eclipse.cdt.dsf.gdb.service.IDebugSourceFiles;
+import org.eclipse.cdt.dsf.gdb.service.IDebugSourceFiles.IDebugSourceFileInfo;
import org.eclipse.cdt.dsf.gdb.service.IGDBMemory2;
import org.eclipse.cdt.dsf.gdb.service.IGDBProcesses;
+import org.eclipse.cdt.dsf.gdb.service.IReverseRunControl;
import org.eclipse.cdt.dsf.gdb.service.command.IGDBControl;
import org.eclipse.cdt.dsf.mi.service.IMIExecutionDMContext;
import org.eclipse.cdt.dsf.mi.service.IMIRunControl;
@@ -88,10 +94,20 @@ import org.eclipse.cdt.tests.dsf.gdb.launching.TestsPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
+import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.debug.core.model.MemoryByte;
/**
- * Timeout wait values are in milliseconds, or WAIT_FOREVER.
+ * Utility class for common testing APIs
+ *
+ * <p>
+ * Note: Most, if not all, methods in this class timeouts unless otherwise
+ * stated. If the method takes a timeout parameter then it would timeout after
+ * that much time elapses. However, even if the method does not take that
+ * parameter it would still timeout but with a default one as hardcoded in that
+ * method's implementation or, in most cases, as specified in {@code ETimeout}.
+ * Wherever a timeout is mentioned its wait values are or must be in
+ * milliseconds, or WAIT_FOREVER
*/
public class SyncUtil {
@@ -107,13 +123,20 @@ public class SyncUtil {
private static ISourceLookup fSourceLookup;
+ private static IDebugSourceFiles fDebugSourceFiles;
+
// Static list of register names as obtained directly from GDB.
// We make it static, key'ed on each version of gdb, so it does not
// get re-set for every test.
// Each version of GDB can expose the set of register differently
private static Map<String, List<String>> fRegisterNames = new HashMap<>();
- // Initialize some common things, once the session has been established
+ /**
+ * Initialize some common things, once the session has been established
+ *
+ * @param session
+ * @throws Exception
+ */
public static void initialize(DsfSession session) throws Exception {
fSession = session;
@@ -128,16 +151,61 @@ public class SyncUtil {
fMemory = tracker.getService(IMemory.class);
fCommandFactory = fGdbControl.getCommandFactory();
fSourceLookup = tracker.getService(ISourceLookup.class);
-
+ fDebugSourceFiles = tracker.getService(IDebugSourceFiles.class);
tracker.dispose();
};
fSession.getExecutor().submit(runnable).get();
}
+ /**
+ * Enable reverse mode on the target and checks that the reverse service thinks it is set.
+ *
+ * Will fail the test if reverse debugging is not supported.
+ */
+ public static void enableReverseMode() throws Throwable {
+ assertTrue("Reverse debugging is not supported", fRunControl instanceof IReverseRunControl);
+ final IReverseRunControl reverseService = (IReverseRunControl) fRunControl;
+ Query<Boolean> query = new Query<>() {
+ @Override
+ protected void execute(final DataRequestMonitor<Boolean> rm) {
+ reverseService.enableReverseMode(fGdbControl.getContext(), true, new ImmediateRequestMonitor(rm) {
+ @Override
+ protected void handleSuccess() {
+ reverseService.isReverseModeEnabled(fGdbControl.getContext(), rm);
+ }
+ });
+ }
+ };
+
+ fSession.getExecutor().execute(query);
+ Boolean enabled = query.get(TestsPlugin.massageTimeout(500), TimeUnit.MILLISECONDS);
+ assertTrue("Reverse debugging should be enabled", enabled);
+ }
+
+ /**
+ * Steps forward with the given {@code stepType} and can also specify to step a
+ * fixed number of time/s using {@code numSteps}. For possible step types see
+ * {@link SyncUtil#step(StepType) step(StepType)}
+ *
+ * @param numSteps
+ * @param stepType
+ * @return
+ * @throws Throwable
+ */
public static MIStoppedEvent step(int numSteps, StepType stepType) throws Throwable {
return step(numSteps, stepType, false);
}
+ /**
+ * Steps forward or backward with the given {@code stepType} and can also
+ * specify to step a fixed number of time/s using {@code numSteps}. For a list
+ * of possible step types see {@link SyncUtil#step(StepType) step(StepType)}
+ *
+ * @param numSteps
+ * @param stepType
+ * @return
+ * @throws Throwable
+ */
public static MIStoppedEvent step(int numSteps, StepType stepType, boolean reverse) throws Throwable {
MIStoppedEvent retVal = null;
for (int i = 0; i < numSteps; i++) {
@@ -146,24 +214,82 @@ public class SyncUtil {
return retVal;
}
+ /**
+ * Steps forward with the given {@code stepType} A {@code stepType} can be one
+ * of the following:
+ * <ul>
+ * <li>{@code StepType.STEP_OVER}
+ * <li>{@code StepType.STEP_INTO}
+ * <li>{@code StepType.STEP_RETURN}
+ * <li>{@code StepType.INSTRUCTION_STEP_OVER}
+ * <li>{@code StepType.INSTRUCTION_STEP_INTO}
+ * <li>{@code StepType.INSTRUCTION_STEP_RETURN}
+ * </ul>
+ *
+ * @param stepType
+ * @return
+ * @throws Throwable
+ */
public static MIStoppedEvent step(StepType stepType) throws Throwable {
return step(stepType, false, DefaultTimeouts.get(ETimeout.step));
}
+ /**
+ * Steps forward or backward with the given {@code stepType}. For possible step
+ * types see {@link SyncUtil#step(StepType) step(StepType)}
+ *
+ * @param stepType
+ * @param reverse
+ * @param massagedTimeout
+ * @return
+ * @throws Throwable
+ */
public static MIStoppedEvent step(StepType stepType, boolean reverse, int massagedTimeout) throws Throwable {
IContainerDMContext containerDmc = SyncUtil.getContainerContext();
return step(containerDmc, stepType, reverse, massagedTimeout);
}
+ /**
+ * Steps forward with the given {@code stepType} and can also specify to step a
+ * given process or thread {@code dmc}. For possible step types see
+ * {@link SyncUtil#step(StepType) step(StepType)}
+ *
+ * @param dmc
+ * @param stepType
+ * @return
+ * @throws Throwable
+ */
public static MIStoppedEvent step(IExecutionDMContext dmc, StepType stepType) throws Throwable {
return step(dmc, stepType, DefaultTimeouts.get(ETimeout.step));
}
+ /**
+ * Steps forward with the given {@code stepType} and can also specify to step a
+ * given process or thread {@code dmc}. For possible step types see
+ * {@link SyncUtil#step(StepType) step(StepType)}
+ *
+ * @param dmc
+ * @param stepType
+ * @return
+ * @throws Throwable
+ */
public static MIStoppedEvent step(final IExecutionDMContext dmc, final StepType stepType, int massagedTimeout)
throws Throwable {
return step(dmc, stepType, false, massagedTimeout);
}
+ /**
+ * Steps forward or backward with the given {@code stepType} and can also
+ * specify to step a given process or thread {@code dmc}. For possible step
+ * types see {@link SyncUtil#step(StepType) step(StepType)}
+ *
+ * @param dmc
+ * @param stepType
+ * @param reverse
+ * @param massagedTimeout
+ * @return
+ * @throws Throwable
+ */
public static MIStoppedEvent step(final IExecutionDMContext dmc, final StepType stepType, boolean reverse,
int massagedTimeout) throws Throwable {
final ServiceEventWaitor<MIStoppedEvent> eventWaitor = new ServiceEventWaitor<>(fSession, MIStoppedEvent.class);
@@ -212,30 +338,84 @@ public class SyncUtil {
return eventWaitor.waitForEvent(massagedTimeout);
}
+ /**
+ * Adds a breakpoint at {@code location}. The {@code location} is the one which
+ * the underlying debugger understands. For example, in case of gdb
+ * "<current-file>:<line#>" or "<line#>" or "<function-name>" are all valid
+ * locations. Refer to the debugger documentation to see all valid locations
+ *
+ * @param location
+ * @return
+ * @throws Throwable
+ */
public static String addBreakpoint(String location) throws Throwable {
return addBreakpoint(location, DefaultTimeouts.get(ETimeout.addBreakpoint));
}
+ /**
+ * Adds a breakpoint at {@code location}. For an example of possible locations
+ * see {@link SyncUtil#addBreakpoint(String) addBreakpoint(String)}
+ *
+ * @param location
+ * @param massagedTimeout
+ * @return
+ * @throws Throwable
+ */
public static String addBreakpoint(String location, int massagedTimeout) throws Throwable {
return addBreakpoint(location, true, massagedTimeout);
}
+ /**
+ * Adds a (possible temporary) breakpoint at {@code location}. For possible
+ * locations see {@link SyncUtil#addBreakpoint(String) addBreakpoint(String)}
+ *
+ * @param location
+ * @param temporary
+ * @return
+ * @throws Throwable
+ */
public static String addBreakpoint(String location, boolean temporary) throws Throwable {
return addBreakpoint(location, temporary, DefaultTimeouts.get(ETimeout.addBreakpoint));
}
- private static String addBreakpoint(final String location, final boolean temporary, int massagedTimeout)
+ /**
+ * Adds a (possible temporary) breakpoint at {@code location}. For possible
+ * locations see {@link SyncUtil#addBreakpoint(String) addBreakpoint(String)}
+ *
+ * @param location
+ * @param temporary
+ * @param massagedTimeout
+ * @return
+ * @throws Throwable
+ */
+ public static String addBreakpoint(final String location, boolean temporary, int massagedTimeout) throws Throwable {
+ return addBreakpoint(location, temporary, false, massagedTimeout);
+ }
+
+ /**
+ * Adds a (possible temporary/hardware) breakpoint at {@code location}. For possible
+ * locations see {@link SyncUtil#addBreakpoint(String) addBreakpoint(String)}
+ *
+ * @param location
+ * @param temporary
+ * @param hardware
+ * @param massagedTimeout
+ * @return
+ * @throws Throwable
+ */
+ public static String addBreakpoint(final String location, boolean temporary, boolean hardware, int massagedTimeout)
throws Throwable {
IContainerDMContext containerDmc = SyncUtil.getContainerContext();
final IBreakpointsTargetDMContext bpTargetDmc = DMContexts.getAncestorOfType(containerDmc,
IBreakpointsTargetDMContext.class);
- Query<MIBreakInsertInfo> query = new Query<MIBreakInsertInfo>() {
+ Query<MIBreakInsertInfo> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<MIBreakInsertInfo> rm) {
fGdbControl.queueCommand(
- fCommandFactory.createMIBreakInsert(bpTargetDmc, temporary, false, null, 0, location, "0"), rm);
+ fCommandFactory.createMIBreakInsert(bpTargetDmc, temporary, hardware, null, 0, location, "0"),
+ rm);
}
};
@@ -244,12 +424,19 @@ public class SyncUtil {
return info.getMIBreakpoints()[0].getNumber();
}
+ /**
+ * Gets the breakpoint list
+ *
+ * @param timeout
+ * @return
+ * @throws Throwable
+ */
public static String[] getBreakpointList(int timeout) throws Throwable {
IContainerDMContext containerDmc = SyncUtil.getContainerContext();
final IBreakpointsTargetDMContext bpTargetDmc = DMContexts.getAncestorOfType(containerDmc,
IBreakpointsTargetDMContext.class);
- Query<MIBreakListInfo> query = new Query<MIBreakListInfo>() {
+ Query<MIBreakListInfo> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<MIBreakListInfo> rm) {
fGdbControl.queueCommand(fCommandFactory.createMIBreakList(bpTargetDmc), rm);
@@ -267,6 +454,15 @@ public class SyncUtil {
return result;
}
+ /**
+ * Resumes the process or thread ({@code dmc}) until its stopped (via
+ * breakpoint, termination or, any other means)
+ *
+ * @param dmc
+ * @param timeout
+ * @return
+ * @throws Throwable
+ */
private static MIStoppedEvent resumeUntilStopped(final IExecutionDMContext dmc, int massagedTimeout)
throws Throwable {
final ServiceEventWaitor<MIStoppedEvent> eventWaitor = new ServiceEventWaitor<>(fSession, MIStoppedEvent.class);
@@ -279,17 +475,40 @@ public class SyncUtil {
return eventWaitor.waitForEvent(massagedTimeout);
}
+ /**
+ * Resumes the process until its stopped (via breakpoint, termination or, any
+ * other means)
+ *
+ * @return
+ * @throws Throwable
+ */
public static MIStoppedEvent resumeUntilStopped() throws Throwable {
IContainerDMContext containerDmc = SyncUtil.getContainerContext();
// Don't call resumeUtilStopped(int timeout) as this will duplicate the timeout massage
return resumeUntilStopped(containerDmc, DefaultTimeouts.get(ETimeout.resumeUntilStopped));
}
+ /**
+ * Resumes the process until its stopped (via breakpoint, termination or, any
+ * other means)
+ *
+ * @param timeout
+ * @return
+ * @throws Throwable
+ */
public static MIStoppedEvent resumeUntilStopped(int timeout) throws Throwable {
IContainerDMContext containerDmc = SyncUtil.getContainerContext();
return resumeUntilStopped(containerDmc, TestsPlugin.massageTimeout(timeout));
}
+ /**
+ * Resumes the process or thread ({@code dmc})
+ *
+ * @param dmc
+ * @param massagedTimeout
+ * @return
+ * @throws Throwable
+ */
public static MIRunningEvent resume(final IExecutionDMContext dmc, int massagedTimeout) throws Throwable {
final ServiceEventWaitor<MIRunningEvent> eventWaitor = new ServiceEventWaitor<>(fSession, MIRunningEvent.class);
@@ -301,8 +520,15 @@ public class SyncUtil {
return eventWaitor.waitForEvent(massagedTimeout);
}
+ /**
+ * Checks whether the process or thread ({@code execDmc}) can resume or not
+ *
+ * @param execDmc
+ * @return
+ * @throws Throwable
+ */
public static boolean canResume(final IExecutionDMContext execDmc) throws Throwable {
- Query<Boolean> query = new Query<Boolean>() {
+ Query<Boolean> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<Boolean> rm) {
fRunControl.canResume(execDmc, new ImmediateDataRequestMonitor<Boolean>(rm) {
@@ -319,19 +545,43 @@ public class SyncUtil {
return canResume;
}
+ /**
+ * Resumes the process timeout
+ *
+ * @return
+ * @throws Throwable
+ */
public static MIRunningEvent resume() throws Throwable {
return resume(DefaultTimeouts.get(ETimeout.resume));
}
+ /**
+ * Resumes the process
+ *
+ * @param massagedTimeout
+ * @return
+ * @throws Throwable
+ */
public static MIRunningEvent resume(int massagedTimeout) throws Throwable {
IContainerDMContext containerDmc = SyncUtil.getContainerContext();
return resume(containerDmc, massagedTimeout);
}
+ /**
+ * Resumes all the threads
+ *
+ * @throws Throwable
+ */
public static void resumeAll() throws Throwable {
resumeAll(DefaultTimeouts.get(ETimeout.resume));
}
+ /**
+ * Resumes all the threads
+ *
+ * @param massagedTimeout
+ * @throws Throwable
+ */
public static void resumeAll(int massagedTimeout) throws Throwable {
IMIExecutionDMContext[] threadDmcs = SyncUtil.getExecutionContexts();
for (IMIExecutionDMContext thread : threadDmcs) {
@@ -341,19 +591,33 @@ public class SyncUtil {
}
}
+ /**
+ * Waits for and gets the stop event
+ *
+ * @return
+ * @throws Throwable
+ */
public static MIStoppedEvent waitForStop() throws Throwable {
// Use a direct value to avoid double call to TestsPlugin.massageTimeout
return waitForStop(10000);
}
- // This method is risky. If the command to resume/step execution
- // is sent and the stopped event is received before we call this method
- // here, then we will miss the stopped event.
- // Normally, one should initialize the ServiveEventWaitor before
- // triggering the resume to make sure not to miss the stopped event.
- // However, in some case this method will still work, for instance
- // if there is a sleep in the code between the resume and the time
- // it stops; this will give us plenty of time to call this method.
+ /**
+ * Waits for and gets the stop event
+ *
+ * <p>
+ * Note: This method is risky. If the command to resume/step execution is sent
+ * and the stopped event is received before we call this method here, then we
+ * will miss the stopped event. Normally, one should initialize the
+ * ServiveEventWaitor before triggering the resume to make sure not to miss the
+ * stopped event. However, in some case this method will still work, for
+ * instance if there is a sleep in the code between the resume and the time it
+ * stops; this will give us plenty of time to call this method.
+ *
+ * @param timeout
+ * @return
+ * @throws Throwable
+ */
public static MIStoppedEvent waitForStop(int timeout) throws Throwable {
final ServiceEventWaitor<MIStoppedEvent> eventWaitor = new ServiceEventWaitor<>(fSession, MIStoppedEvent.class);
@@ -361,22 +625,79 @@ public class SyncUtil {
return eventWaitor.waitForEvent(TestsPlugin.massageTimeout(timeout));
}
+ /**
+ * Runs the process' execution to {@code location}. For an example of possible
+ * locations see {@link SyncUtil#addBreakpoint(String) addBreakpoint(String)}
+ *
+ * @param location
+ * @return
+ * @throws Throwable
+ */
public static MIStoppedEvent runToLocation(String location) throws Throwable {
- return runToLocation(location, DefaultTimeouts.get(ETimeout.runToLocation));
+ return runToLocation(location, false, DefaultTimeouts.get(ETimeout.runToLocation));
}
+ /**
+ * Runs the process' execution to {@code location}. For an example of possible
+ * locations see {@link SyncUtil#addBreakpoint(String) addBreakpoint(String)}
+ *
+ * @param location
+ * @param timeout
+ * @return
+ * @throws Throwable
+ */
public static MIStoppedEvent runToLocation(String location, int timeout) throws Throwable {
+ return runToLocation(location, false, DefaultTimeouts.get(ETimeout.runToLocation));
+ }
+
+ /**
+ * Runs the process' execution to {@code location} using a {@code hardware}
+ * breakpoint. For an example of possible locations see
+ * {@link SyncUtil#addBreakpoint(String) addBreakpoint(String)}
+ *
+ * @param location
+ * @param timeout
+ * @return
+ *
+ * @throws Throwable
+ */
+ public static MIStoppedEvent runToLocation(String location, boolean hardware) throws Throwable {
+ return runToLocation(location, hardware, DefaultTimeouts.get(ETimeout.runToLocation));
+ }
+
+ /**
+ * Runs the process' execution to {@code location} using a {@code hardware}
+ * breakpoint. For an example of possible locations see
+ * {@link SyncUtil#addBreakpoint(String) addBreakpoint(String)}
+ *
+ * @param location
+ * @param timeout
+ * @return
+ * @throws Throwable
+ */
+ public static MIStoppedEvent runToLocation(String location, boolean hardware, int timeout) throws Throwable {
// Set a temporary breakpoint and run to it.
// Note that if there were other breakpoints set ahead of this one,
// they will stop execution earlier than planned
- addBreakpoint(location, true, timeout);
+ addBreakpoint(location, true, hardware, timeout);
// Don't provide a timeout so we use the resume default timeout for this step
// if a timeout value is provided via DefaultTimeouts the value will be massaged twice
return resumeUntilStopped();
}
+ /**
+ * Gets the stack frame of the thread ({@code execCtx}). As each stack frame
+ * consists of many levels therefore {@code level} is needed to signify the
+ * level of the stack frame to get, like, 0 for the top-most level or 1 for the
+ * one after that
+ *
+ * @param execCtx
+ * @param level
+ * @return
+ * @throws Exception
+ */
public static IFrameDMContext getStackFrame(final IExecutionDMContext execCtx, final int level) throws Exception {
- Query<IFrameDMContext> query = new Query<IFrameDMContext>() {
+ Query<IFrameDMContext> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<IFrameDMContext> rm) {
fStack.getFrames(execCtx, level, level, new ImmediateDataRequestMonitor<IFrameDMContext[]>(rm) {
@@ -397,19 +718,51 @@ public class SyncUtil {
}
/**
- * Utility method to return a specific frame DM context.
+ * Gets the stack frame of the thread whose index corresponds with the specified
+ * {@code threadIndex}. As each stack frame consists of many levels therefore
+ * {@code level} is needed to signify the level of the stack frame to get, like,
+ * 0 for the top-most level or 1 for the one after that
+ *
+ * @param threadIndex
+ * @param level
+ * @return
+ * @throws Exception
*/
@ThreadSafeAndProhibitedFromDsfExecutor("fSession.getExecutor()")
public static IFrameDMContext getStackFrame(int threadIndex, final int level) throws Exception {
return getStackFrame(getExecutionContext(threadIndex), level);
}
+ /**
+ * Gets the stack depth of the thread ({@code execCtx}). A stack depth is the
+ * maximum level of that stack frame
+ *
+ * @param execCtx
+ * @return
+ * @throws Throwable
+ */
public static Integer getStackDepth(final IExecutionDMContext execCtx) throws Throwable {
return getStackDepth(execCtx, 0);
}
+ /**
+ * Gets the stack depth of the thread ({@code execCtx}). A stack depth is the
+ * maximum level of that stack frame. If {@code maxDepth} is specified then it
+ * does not count beyond {@code maxDepth} frames
+ *
+ * <p>
+ * For example, given stack with frame levels 0 through 11 and a
+ * {@code maxDepth} of 4 would return 4. However, with a {@code maxDepth} of 13
+ * it would return 12 (i.e. the actual depth)
+ *
+ * @param execCtx
+ * @param maxDepth
+ * @return If {@code maxDepth} is greater than the actual depth then actual
+ * depth is returned else {@code maxDepth} is returned
+ * @throws Throwable
+ */
public static Integer getStackDepth(final IExecutionDMContext execCtx, final int maxDepth) throws Throwable {
- Query<Integer> query = new Query<Integer>() {
+ Query<Integer> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<Integer> rm) {
fStack.getStackDepth(execCtx, maxDepth, rm);
@@ -420,8 +773,17 @@ public class SyncUtil {
return query.get(TestsPlugin.massageTimeout(500), TimeUnit.MILLISECONDS);
}
+ /**
+ * Gets the frame data of the stack frame belonging to the specified thread
+ * ({@code execCtx}) and whose level is given by {@code level}
+ *
+ * @param execCtx
+ * @param level
+ * @return
+ * @throws Throwable
+ */
public static IFrameDMData getFrameData(final IExecutionDMContext execCtx, final int level) throws Throwable {
- Query<IFrameDMData> query = new Query<IFrameDMData>() {
+ Query<IFrameDMData> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<IFrameDMData> rm) {
fStack.getFrames(execCtx, level, level, new ImmediateDataRequestMonitor<IFrameDMContext[]>(rm) {
@@ -440,16 +802,33 @@ public class SyncUtil {
return query.get(TestsPlugin.massageTimeout(500), TimeUnit.MILLISECONDS);
}
- public static IFrameDMData getFrameData(final int threadId, final int level) throws Throwable {
- return getFrameData(getExecutionContext(threadId), level);
+ /**
+ * Gets the frame data of the stack frame belonging to that thread whose index
+ * is specified by {@code threadIndex} and whose level is given by {@code level}
+ *
+ * @param threadIndex
+ * @param level
+ * @return
+ * @throws Throwable
+ */
+ public static IFrameDMData getFrameData(final int threadIndex, final int level) throws Throwable {
+ return getFrameData(getExecutionContext(threadIndex), level);
}
+ /**
+ * Gets the thread data of the thread whose thread id is specifed by
+ * {@code threadId}
+ *
+ * @param threadId
+ * @return
+ * @throws Throwable
+ */
public static IThreadDMData getThreadData(final int threadId)
throws InterruptedException, ExecutionException, TimeoutException {
final IProcessDMContext processContext = DMContexts.getAncestorOfType(SyncUtil.getContainerContext(),
IProcessDMContext.class);
- Query<IThreadDMData> query = new Query<IThreadDMData>() {
+ Query<IThreadDMData> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<IThreadDMData> rm) {
IThreadDMContext threadDmc = fProcessesService.createThreadContext(processContext,
@@ -463,15 +842,35 @@ public class SyncUtil {
return query.get(TestsPlugin.massageTimeout(500), TimeUnit.MILLISECONDS);
}
+ /**
+ * Creates and gets the expression ({@code expression}) in the context of the
+ * given process, thread or, frame ({@code parentCtx}). For example, given 2
+ * thread, thread1 and thread2, an expression may not be valid in the context of
+ * thread1 but it may be valid in the context of thread2. Therefore, while
+ * creating expression it's important that the correct context is passed
+ *
+ * @param parentCtx
+ * @param expression
+ * @return the expression
+ * @throws Throwable
+ */
public static IExpressionDMContext createExpression(final IDMContext parentCtx, final String expression)
throws Throwable {
Callable<IExpressionDMContext> callable = () -> fExpressions.createExpression(parentCtx, expression);
return fSession.getExecutor().submit(callable).get();
}
+ /**
+ * Gets all the sub-expressions in the given expression ({@code dmc})
+ *
+ * @param dmc
+ * @return
+ * @throws InterruptedException
+ * @throws ExecutionException
+ */
public static IExpressionDMContext[] getSubExpressions(final IExpressionDMContext dmc)
throws InterruptedException, ExecutionException {
- Query<IExpressionDMContext[]> query = new Query<IExpressionDMContext[]>() {
+ Query<IExpressionDMContext[]> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<IExpressionDMContext[]> rm) {
fExpressions.getSubExpressions(dmc, rm);
@@ -482,9 +881,13 @@ public class SyncUtil {
return query.get();
}
- /*
- * Like getSubExpressions, but for cases where we know there will be only
- * one child.
+ /**
+ * Gets the first sub-expression in the expression ({@code dmc})
+ *
+ * @param dmc
+ * @return
+ * @throws InterruptedException
+ * @throws ExecutionException
*/
public static IExpressionDMContext getSubExpression(final IExpressionDMContext dmc)
throws InterruptedException, ExecutionException {
@@ -495,8 +898,27 @@ public class SyncUtil {
return subExpressions[0];
}
+ /**
+ * Gets the {@code String} representation of the specified expression
+ * ({@code dmc}) in the given {@code format}. The {@code format} may be one of
+ * the following:
+ * <ul>
+ * <li>@{code IFormattedValues.HEX_FORMAT}
+ * <li>@{code IFormattedValues.OCTAL_FORMAT}
+ * <li>@{code IFormattedValues.NATURAL_FORMAT}
+ * <li>@{code IFormattedValues.BINARY_FORMAT}
+ * <li>@{code IFormattedValues.DECIMAL_FORMAT}
+ * <li>@{code IFormattedValues.STRING_FORMAT}
+ * <li>@{code MIExpressions.DETAILS_FORMAT}
+ * </ul>
+ *
+ * @param exprDmc
+ * @param format
+ * @return
+ * @throws Throwable
+ */
public static String getExpressionValue(final IExpressionDMContext exprDmc, final String format) throws Throwable {
- Query<String> query = new Query<String>() {
+ Query<String> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<String> rm) {
FormattedValueDMContext valueDmc = fExpressions.getFormattedValueContext(exprDmc, format);
@@ -514,12 +936,40 @@ public class SyncUtil {
return query.get();
}
+ /**
+ * Gets the formatted value of the specified data ({@code dmc}) in the given
+ * {@code formatId}. The {@code formatId} may be one of the following:
+ * <ul>
+ * <li>@{code IFormattedValues.HEX_FORMAT}
+ * <li>@{code IFormattedValues.OCTAL_FORMAT}
+ * <li>@{code IFormattedValues.NATURAL_FORMAT}
+ * <li>@{code IFormattedValues.BINARY_FORMAT}
+ * <li>@{code IFormattedValues.DECIMAL_FORMAT}
+ * <li>@{code IFormattedValues.STRING_FORMAT}
+ * <li>@{code MIExpressions.DETAILS_FORMAT}
+ * </ul>
+ *
+ * @param service
+ * @param dmc
+ * @param formatId
+ * @return
+ * @throws Throwable
+ */
public static FormattedValueDMContext getFormattedValue(final IFormattedValues service,
final IFormattedDataDMContext dmc, final String formatId) throws Throwable {
Callable<FormattedValueDMContext> callable = () -> service.getFormattedValueContext(dmc, formatId);
return fSession.getExecutor().submit(callable).get();
}
+ /**
+ * Gets the thread belonging to the specified process ({@code parentCtx}) and
+ * whose thread id is specified by {@code threadId}
+ *
+ * @param parentCtx
+ * @param threadId
+ * @return
+ * @throws Throwable
+ */
public static IMIExecutionDMContext createExecutionContext(final IContainerDMContext parentCtx, final int threadId)
throws Throwable {
Callable<IMIExecutionDMContext> callable = () -> {
@@ -531,14 +981,22 @@ public class SyncUtil {
return fSession.getExecutor().submit(callable).get();
}
- static class DefaultTimeouts {
+ /**
+ * Timeout manager for tests. Its reponsibilities include:
+ * <ul>
+ * <li>Specify default timeouts
+ * <li>Make timeouts configurable
+ * <li>Massage timeouts i.e. a common multiplier for all timeouts
+ * <ul>
+ */
+ public static class DefaultTimeouts {
/**
* Overridable default timeout values. An override is specified using a
* system property that is "dsf.gdb.tests.timeout.default." plus the
* name of the enum below.
*/
- enum ETimeout {
+ public enum ETimeout {
addBreakpoint, deleteBreakpoint, getBreakpointList, createExecutionContext, createExpression,
getFormattedValue, getStackFrame, resume, resumeUntilStopped, runToLine, runToLocation, step, waitForStop
}
@@ -582,13 +1040,13 @@ public class SyncUtil {
* the timeout enum
* @return the default value
*/
- static int get(ETimeout timeout) {
+ public static int get(ETimeout timeout) {
int value = -1;
final String propname = "dsf.gdb.tests.timeout.default." + timeout.toString();
final String prop = System.getProperty(propname);
if (prop != null) {
try {
- value = Integer.valueOf(value);
+ value = Integer.valueOf(prop);
if (value < 0) {
TestsPlugin.log(new Status(IStatus.ERROR, TestsPlugin.getUniqueIdentifier(), "\"" + propname //$NON-NLS-1$
+ "\" property incorrectly specified. Should be an integer value or not specified at all."));
@@ -627,7 +1085,7 @@ public class SyncUtil {
throws InterruptedException, ExecutionException, TimeoutException {
assert !fProcessesService.getExecutor().isInExecutorThread();
- Query<IContainerDMContext> query = new Query<IContainerDMContext>() {
+ Query<IContainerDMContext> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<IContainerDMContext> rm) {
fProcessesService.getProcessesBeingDebugged(fGdbControl.getContext(),
@@ -654,9 +1112,12 @@ public class SyncUtil {
}
/**
- * Utility method to return all thread execution contexts.
- * @throws TimeoutException
+ * Utility method to return all threads
+ *
+ * @return
+ * @throws InterruptedException
* @throws ExecutionException
+ * @throws TimeoutException
*/
@ThreadSafeAndProhibitedFromDsfExecutor("fSession.getExecutor()")
public static IMIExecutionDMContext[] getExecutionContexts()
@@ -665,7 +1126,7 @@ public class SyncUtil {
final IContainerDMContext containerDmc = SyncUtil.getContainerContext();
- Query<IMIExecutionDMContext[]> query = new Query<IMIExecutionDMContext[]>() {
+ Query<IMIExecutionDMContext[]> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<IMIExecutionDMContext[]> rm) {
fProcessesService.getProcessesBeingDebugged(containerDmc,
@@ -690,9 +1151,13 @@ public class SyncUtil {
}
/**
- * Utility method to return a specific execution DM context.
- * @throws TimeoutException
+ * Utility method to return a specific thread via {@code threadIndex}
+ *
+ * @param threadIndex
+ * @return
+ * @throws InterruptedException
* @throws ExecutionException
+ * @throws TimeoutException
*/
@ThreadSafeAndProhibitedFromDsfExecutor("fSession.getExecutor()")
public static IMIExecutionDMContext getExecutionContext(int threadIndex)
@@ -705,12 +1170,15 @@ public class SyncUtil {
/**
* Check if the restart operation is supported
+ *
+ * @return
+ * @throws Exception
*/
public static boolean canRestart() throws Exception {
final IContainerDMContext containerDmc = getContainerContext();
// Check if restart is allowed
- Query<Boolean> query = new Query<Boolean>() {
+ Query<Boolean> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<Boolean> rm) {
fProcessesService.canRestart(containerDmc, new ImmediateDataRequestMonitor<Boolean>(rm) {
@@ -730,7 +1198,37 @@ public class SyncUtil {
}
/**
- * Restart the program.
+ * Under some conditions the startup code of CDT runs, stops and then resumes. This method
+ * can be used to determine if that first stop should be ignored while waiting for startup.
+ */
+ public static boolean shouldIgnoreFirstStopAtStartup(ILaunchConfiguration launchConfiguration) {
+ boolean ignoreFirstStop = false;
+ try {
+ String stopAt = launchConfiguration
+ .getAttribute(ICDTLaunchConfigurationConstants.ATTR_DEBUGGER_STOP_AT_MAIN_SYMBOL, "main");
+ boolean stopAtEnabled = launchConfiguration
+ .getAttribute(ICDTLaunchConfigurationConstants.ATTR_DEBUGGER_STOP_AT_MAIN, true);
+ boolean reverseEnabledAtStartup = launchConfiguration
+ .getAttribute(IGDBLaunchConfigurationConstants.ATTR_DEBUGGER_REVERSE, false);
+ if (stopAt == null)
+ stopAt = "main";
+ if (reverseEnabledAtStartup && !stopAtEnabled) {
+ ignoreFirstStop = true;
+ }
+ if (reverseEnabledAtStartup && stopAtEnabled && !"main".equals(stopAt)) {
+ ignoreFirstStop = true;
+ }
+ } catch (CoreException e) {
+ }
+ return ignoreFirstStop;
+ }
+
+ /**
+ * Restarts the program ({@code launch})
+ *
+ * @param launch
+ * @return
+ * @throws Exception
*/
public static MIStoppedEvent restart(final GdbLaunch launch) throws Exception {
final IContainerDMContext containerDmc = getContainerContext();
@@ -744,7 +1242,7 @@ public class SyncUtil {
final ServiceEventWaitor<MIStoppedEvent> eventWaitor = new ServiceEventWaitor<>(fSession, MIStoppedEvent.class);
// Perform the restart
- Query<IContainerDMContext> query2 = new Query<IContainerDMContext>() {
+ Query<IContainerDMContext> query2 = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<IContainerDMContext> rm) {
Map<String, Object> attributes = null;
@@ -765,11 +1263,26 @@ public class SyncUtil {
// This is not the stopped event we were waiting for. Get the next one.
event = eventWaitor.waitForEvent(DefaultTimeouts.get(ETimeout.waitForStop));
}
+
+ if (shouldIgnoreFirstStopAtStartup(launch.getLaunchConfiguration())) {
+ event = eventWaitor.waitForEvent(DefaultTimeouts.get(ETimeout.waitForStop));
+ if (event instanceof MISignalEvent) {
+ // This is not the stopped event we were waiting for. Get the next one.
+ event = eventWaitor.waitForEvent(DefaultTimeouts.get(ETimeout.waitForStop));
+ }
+ }
return event;
}
+ /**
+ * Gets the local variables of the frame ({@code frameDmc})
+ *
+ * @param frameDmc
+ * @return
+ * @throws Throwable
+ */
public static IVariableDMData[] getLocals(final IFrameDMContext frameDmc) throws Throwable {
- Query<IVariableDMData[]> query = new Query<IVariableDMData[]>() {
+ Query<IVariableDMData[]> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<IVariableDMData[]> rm) {
fStack.getLocals(frameDmc, new ImmediateDataRequestMonitor<IVariableDMContext[]>() {
@@ -811,6 +1324,7 @@ public class SyncUtil {
/**
* Get the registers directly from GDB (without using the registers service)
+ *
* @param gdbVersion
* @param context
* @return
@@ -823,7 +1337,7 @@ public class SyncUtil {
// Note that we send an MI Command in this code and do not use the IRegister service;
// this is because we want to test the service later, comparing it to what we find
// by asking GDB directly.
- Query<MIDataListRegisterNamesInfo> query = new Query<MIDataListRegisterNamesInfo>() {
+ Query<MIDataListRegisterNamesInfo> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<MIDataListRegisterNamesInfo> rm) {
IContainerDMContext containerDmc = DMContexts.getAncestorOfType(context, IContainerDMContext.class);
@@ -866,7 +1380,7 @@ public class SyncUtil {
*/
public static MemoryByte[] readMemory(final IMemoryDMContext dmc, final IAddress address, final long offset,
final int wordSize, final int count) throws InterruptedException, ExecutionException {
- Query<MemoryByte[]> query = new Query<MemoryByte[]>() {
+ Query<MemoryByte[]> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<MemoryByte[]> rm) {
fMemory.getMemory(dmc, address, offset, wordSize, count, rm);
@@ -892,7 +1406,7 @@ public class SyncUtil {
*/
public static void writeMemory(final IMemoryDMContext dmc, final IAddress address, final long offset,
final int wordSize, final int count, final byte[] buffer) throws InterruptedException, ExecutionException {
- Query<Void> query = new Query<Void>() {
+ Query<Void> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Void> rm) {
fMemory.setMemory(dmc, address, offset, wordSize, count, buffer, rm);
@@ -918,7 +1432,7 @@ public class SyncUtil {
*/
public static void fillMemory(final IMemoryDMContext dmc, final IAddress address, final long offset,
final int wordSize, final int count, final byte[] pattern) throws InterruptedException, ExecutionException {
- Query<Void> query = new Query<Void>() {
+ Query<Void> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Void> rm) {
fMemory.fillMemory(dmc, address, offset, wordSize, count, pattern, rm);
@@ -966,7 +1480,7 @@ public class SyncUtil {
* {@link ISourceLookup#getSource(ISourceLookupDMContext, String, DataRequestMonitor)}
*/
public static Object getSource(final String debuggerPath) throws Exception {
- Query<Object> query = new Query<Object>() {
+ Query<Object> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Object> rm) {
final ISourceLookupDMContext ctx = DMContexts.getAncestorOfType(fGdbControl.getContext(),
@@ -979,4 +1493,21 @@ public class SyncUtil {
return query.get();
}
+
+ /**
+ * Get the sources from the debugger.
+ *
+ * Wrapper around
+ * {@link IDebugSourceFiles#getSources(IDMContext, DataRequestMonitor)}
+ */
+ public static IDebugSourceFileInfo[] getSources(IDMContext ctx) throws Exception {
+ Query<IDebugSourceFileInfo[]> query = new Query<>() {
+ @Override
+ protected void execute(DataRequestMonitor<IDebugSourceFileInfo[]> rm) {
+ fDebugSourceFiles.getSources(ctx, rm);
+ }
+ };
+ fDebugSourceFiles.getExecutor().execute(query);
+ return query.get();
+ }
}
diff --git a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/CommandLineArgsTest.java b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/CommandLineArgsTest.java
index 2cc8a719f7a..f59ac212bd8 100644
--- a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/CommandLineArgsTest.java
+++ b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/CommandLineArgsTest.java
@@ -22,8 +22,10 @@ import static org.hamcrest.Matchers.endsWith;
import static org.hamcrest.Matchers.startsWith;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
import java.util.concurrent.TimeUnit;
import org.eclipse.cdt.debug.core.ICDTLaunchConfigurationConstants;
@@ -39,13 +41,13 @@ import org.eclipse.cdt.dsf.service.DsfSession;
import org.eclipse.cdt.tests.dsf.gdb.framework.BaseParametrizedTestCase;
import org.eclipse.cdt.tests.dsf.gdb.framework.SyncUtil;
import org.eclipse.cdt.tests.dsf.gdb.launching.TestsPlugin;
-import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
@RunWith(Parameterized.class)
public class CommandLineArgsTest extends BaseParametrizedTestCase {
+ protected static final String SOURCE_NAME = "LaunchConfigurationAndRestartTestApp.cc";
protected static final String EXEC_NAME = "LaunchConfigurationAndRestartTestApp.exe";
private DsfSession fSession;
@@ -55,7 +57,7 @@ public class CommandLineArgsTest extends BaseParametrizedTestCase {
@Override
public void doBeforeTest() throws Exception {
assumeLocalSession();
- removeTeminatedLaunchesBeforeTest();
+ teminateAndRemoveLaunches();
setLaunchAttributes();
// Can't run the launch right away because each test needs to first set
// ICDTLaunchConfigurationConstants.ATTR_PROGRAM_ARGUMENTS
@@ -67,6 +69,20 @@ public class CommandLineArgsTest extends BaseParametrizedTestCase {
// Set the binary
setLaunchAttribute(ICDTLaunchConfigurationConstants.ATTR_PROGRAM_NAME, EXEC_PATH + EXEC_NAME);
+
+ // while testing command line arguments we are trying to make sure command line gets from
+ // cdt to gdb as expected - we don't want to be affected by whatever shell may be on
+ // the machine. We can't turn startup_with_shell off because GDB's primitive argument
+ // parsing in that mode causes these tests to be useless. Therefore, force a specific
+ // shell to use so that we have consistent results.
+ // There is no way today of setting the SHELL environement variable when GDB runs from
+ // these tests (that comes from org.eclipse.cdt.dsf.gdb.launching.GdbLaunch.getLaunchEnvironment())
+ // So, instead we ensure that the environement we have has SHELL set appropriately
+ // and rely on what we are running in to have SHELL set properly.
+ assertEquals("/bin/bash", System.getenv("SHELL"));
+ // XXX: The above may need to be updated to verify their validity on Windows/Mac. To
+ // make it easier to know where to look for such testers fail the test here as
+ // almost surely the SHELL work above need to be addressed on those platforms.
}
// This method cannot be tagged as @Before, because the launch is not
@@ -86,6 +102,26 @@ public class CommandLineArgsTest extends BaseParametrizedTestCase {
fSession.getExecutor().submit(runnable).get();
}
+ @Override
+ protected int getLineForTag(String tag) throws Exception {
+ try {
+ super.getLineForTag(tag);
+ } catch (Exception e) {
+ resolveLineTagLocations(SOURCE_NAME, tag);
+ }
+ return super.getLineForTag(tag);
+ }
+
+ /**
+ * Run to one of the tags in {@link #LINE_TAGS}
+ * @throws Throwable
+ */
+ private MIStoppedEvent runToTag(String tag) throws Throwable {
+ String location = String.format("%s:%d", SOURCE_NAME, getLineForTag(tag));
+ MIStoppedEvent stoppedEvent = SyncUtil.runToLocation(location);
+ return stoppedEvent;
+ }
+
/**
* Convert a string of form 0x123456 "ab\"cd" to ab"cd
*/
@@ -138,11 +174,11 @@ public class CommandLineArgsTest extends BaseParametrizedTestCase {
*/
protected void checkArguments(String... expected) throws Throwable {
- MIStoppedEvent stoppedEvent = getInitialStoppedEvent();
+ MIStoppedEvent stoppedEvent = runToTag("main_init");
// Check that argc is correct
final IExpressionDMContext argcDmc = SyncUtil.createExpression(stoppedEvent.getDMContext(), "argc");
- Query<FormattedValueDMData> query = new Query<FormattedValueDMData>() {
+ Query<FormattedValueDMData> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<FormattedValueDMData> rm) {
fExpService.getFormattedExpressionValue(
@@ -152,15 +188,13 @@ public class CommandLineArgsTest extends BaseParametrizedTestCase {
fExpService.getExecutor().execute(query);
FormattedValueDMData value = query.get(TestsPlugin.massageTimeout(500), TimeUnit.MILLISECONDS);
-
- assertTrue("Expected " + (1 + expected.length) + " but got " + value.getFormattedValue(),
- value.getFormattedValue().trim().equals(Integer.toString(1 + expected.length)));
-
+ int actualArgc = Integer.parseInt(value.getFormattedValue().trim());
+ List<String> actualArgv = new ArrayList<>();
// check all argvs are correct
- for (int i = 0; i < expected.length; i++) {
+ for (int i = 1; i < actualArgc; i++) {
final IExpressionDMContext argvDmc = SyncUtil.createExpression(stoppedEvent.getDMContext(),
- "argv[" + (i + 1) + "]");
- Query<FormattedValueDMData> query2 = new Query<FormattedValueDMData>() {
+ "argv[" + i + "]");
+ Query<FormattedValueDMData> query2 = new Query<>() {
@Override
protected void execute(DataRequestMonitor<FormattedValueDMData> rm) {
fExpService.getFormattedExpressionValue(
@@ -172,8 +206,9 @@ public class CommandLineArgsTest extends BaseParametrizedTestCase {
FormattedValueDMData value2 = query2.get(TestsPlugin.massageTimeout(500), TimeUnit.MILLISECONDS);
String details = value2.getFormattedValue();
String actual = convertDetails(details);
- assertEquals(expected[i], actual);
+ actualArgv.add(actual);
}
+ assertEquals(Arrays.asList(expected), actualArgv);
}
/**
@@ -213,7 +248,6 @@ public class CommandLineArgsTest extends BaseParametrizedTestCase {
* bug 474648
*/
@Test
- @Ignore
public void testSettingArgumentsWithSpecialSymbols() throws Throwable {
// Test that arguments are parsed correctly:
// The string provided by the user is split into arguments on spaces
diff --git a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/CommandTimeoutTest.java b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/CommandTimeoutTest.java
index 80834bc719b..f2ef211c420 100644
--- a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/CommandTimeoutTest.java
+++ b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/CommandTimeoutTest.java
@@ -61,7 +61,7 @@ public class CommandTimeoutTest extends BaseParametrizedTestCase {
@Override
public void doBeforeTest() throws Exception {
- removeTeminatedLaunchesBeforeTest();
+ teminateAndRemoveLaunches();
setLaunchAttributes();
// Can't run the launch right away because each test needs to first set some
// parameters. The individual tests will be responsible for starting the launch.
@@ -101,7 +101,7 @@ public class CommandTimeoutTest extends BaseParametrizedTestCase {
ICommandControlShutdownDMEvent.class);
// Send the command that will timeout
- Query<MIInfo> query = new Query<MIInfo>() {
+ Query<MIInfo> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<MIInfo> rm) {
DsfServicesTracker tracker = new DsfServicesTracker(TestsPlugin.getBundleContext(), session.getId());
diff --git a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/GDBConsoleBreakpointsTest.java b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/GDBConsoleBreakpointsTest.java
index e0f8d371063..c7bb2945327 100644
--- a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/GDBConsoleBreakpointsTest.java
+++ b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/GDBConsoleBreakpointsTest.java
@@ -679,7 +679,7 @@ public class GDBConsoleBreakpointsTest extends BaseParametrizedTestCase {
}
private MIBreakpoint[] getTargetBreakpoints(int timeout, TimeUnit unit) throws Throwable {
- Query<MIBreakListInfo> query = new Query<MIBreakListInfo>() {
+ Query<MIBreakListInfo> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<MIBreakListInfo> rm) {
fCommandControl.queueCommand(fCommandControl.getCommandFactory().createMIBreakList(fBreakpointsDmc),
@@ -715,7 +715,7 @@ public class GDBConsoleBreakpointsTest extends BaseParametrizedTestCase {
}
private void queueConsoleCommand(final String command, int timeout, TimeUnit unit) throws Throwable {
- Query<MIInfo> query = new Query<MIInfo>() {
+ Query<MIInfo> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<MIInfo> rm) {
fCommandControl.queueCommand(fCommandControl.getCommandFactory()
diff --git a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/GDBConsoleSynchronizingTest.java b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/GDBConsoleSynchronizingTest.java
index a7b02084ef3..143f867d01f 100644
--- a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/GDBConsoleSynchronizingTest.java
+++ b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/GDBConsoleSynchronizingTest.java
@@ -141,7 +141,7 @@ public class GDBConsoleSynchronizingTest extends BaseParametrizedTestCase {
final IExpressionDMContext exprDmc = SyncUtil.createExpression(frameDmc, "i");
// Read the memory that will change first, or else there will be no event for it
- Query<IExpressionDMAddress> query = new Query<IExpressionDMAddress>() {
+ Query<IExpressionDMAddress> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<IExpressionDMAddress> rm) {
fExprService.getExpressionAddressData(exprDmc, rm);
@@ -186,7 +186,7 @@ public class GDBConsoleSynchronizingTest extends BaseParametrizedTestCase {
final IExpressionDMContext exprDmc = SyncUtil.createExpression(frameDmc, "i");
// Read the memory that will change first, or else there will be no event for it
- Query<IExpressionDMAddress> query = new Query<IExpressionDMAddress>() {
+ Query<IExpressionDMAddress> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<IExpressionDMAddress> rm) {
fExprService.getExpressionAddressData(exprDmc, rm);
@@ -254,7 +254,7 @@ public class GDBConsoleSynchronizingTest extends BaseParametrizedTestCase {
final IExpressionDMContext exprDmc = SyncUtil.createExpression(frameDmc, "i");
// Read the memory that will change first, or else there will be no event for it
- Query<IExpressionDMAddress> query = new Query<IExpressionDMAddress>() {
+ Query<IExpressionDMAddress> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<IExpressionDMAddress> rm) {
fExprService.getExpressionAddressData(exprDmc, rm);
@@ -303,7 +303,7 @@ public class GDBConsoleSynchronizingTest extends BaseParametrizedTestCase {
SyncUtil.runToLocation("testMemoryChanges");
// check starting state
- Query<Boolean> query = new Query<Boolean>() {
+ Query<Boolean> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<Boolean> rm) {
reverseService.isReverseModeEnabled(fCommandControl.getContext(), rm);
@@ -323,7 +323,7 @@ public class GDBConsoleSynchronizingTest extends BaseParametrizedTestCase {
assertEquals(true, event.isReverseModeEnabled());
// Check the service
- query = new Query<Boolean>() {
+ query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<Boolean> rm) {
reverseService.isReverseModeEnabled(fCommandControl.getContext(), rm);
@@ -349,7 +349,7 @@ public class GDBConsoleSynchronizingTest extends BaseParametrizedTestCase {
fEventsReceived.clear();
// check starting state
- Query<Boolean> query = new Query<Boolean>() {
+ Query<Boolean> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<Boolean> rm) {
reverseService.enableReverseMode(fCommandControl.getContext(), true, new ImmediateRequestMonitor(rm) {
@@ -377,7 +377,7 @@ public class GDBConsoleSynchronizingTest extends BaseParametrizedTestCase {
assertEquals(false, event.isReverseModeEnabled());
// Check the service
- query = new Query<Boolean>() {
+ query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<Boolean> rm) {
reverseService.isReverseModeEnabled(fCommandControl.getContext(), rm);
@@ -405,7 +405,7 @@ public class GDBConsoleSynchronizingTest extends BaseParametrizedTestCase {
}
private void queueConsoleCommand(final String command, int timeout, TimeUnit unit) throws Throwable {
- Query<MIInfo> query = new Query<MIInfo>() {
+ Query<MIInfo> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<MIInfo> rm) {
fCommandControl.queueCommand(fCommandControl.getCommandFactory()
diff --git a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/GDBPatternMatchingExpressionsTest.java b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/GDBPatternMatchingExpressionsTest.java
index 020547d18fa..5f52d56c6b0 100644
--- a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/GDBPatternMatchingExpressionsTest.java
+++ b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/GDBPatternMatchingExpressionsTest.java
@@ -92,12 +92,12 @@ public class GDBPatternMatchingExpressionsTest extends BaseParametrizedTestCase
@Override
public void doAfterTest() throws Exception {
- super.doAfterTest();
fExpService = null;
if (fServicesTracker != null) {
fServicesTracker.dispose();
fServicesTracker = null;
}
+ super.doAfterTest();
}
//**************************************************************************************
@@ -115,7 +115,7 @@ public class GDBPatternMatchingExpressionsTest extends BaseParametrizedTestCase
"var", "var2" };
protected void checkChildrenCount(final IExpressionDMContext parentDmc, final int expectedCount) throws Throwable {
- Query<Integer> query = new Query<Integer>() {
+ Query<Integer> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<Integer> rm) {
fExpService.getSubExpressionCount(parentDmc, rm);
@@ -129,7 +129,7 @@ public class GDBPatternMatchingExpressionsTest extends BaseParametrizedTestCase
}
protected String getRegisterValue(final String regName, final IMIExecutionDMContext threadDmc) throws Exception {
- Query<String> query = new Query<String>() {
+ Query<String> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<String> rm) {
fRegService.getRegisters(threadDmc, new ImmediateDataRequestMonitor<IRegisterDMContext[]>(rm) {
@@ -162,7 +162,7 @@ public class GDBPatternMatchingExpressionsTest extends BaseParametrizedTestCase
}
protected String getExpressionValue(final IExpressionDMContext exprDmc) throws Throwable {
- Query<String> query = new Query<String>() {
+ Query<String> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<String> rm) {
final FormattedValueDMContext valueDmc = fExpService.getFormattedValueContext(exprDmc,
@@ -185,7 +185,7 @@ public class GDBPatternMatchingExpressionsTest extends BaseParametrizedTestCase
protected IExpressionDMContext[] checkChildren(final IExpressionDMContext parentDmc, final int startIndex,
final int length, String[] expectedValues) throws Throwable {
- Query<IExpressionDMContext[]> query = new Query<IExpressionDMContext[]>() {
+ Query<IExpressionDMContext[]> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<IExpressionDMContext[]> rm) {
fExpService.getSubExpressions(parentDmc, startIndex, length, rm);
@@ -1430,7 +1430,7 @@ public class GDBPatternMatchingExpressionsTest extends BaseParametrizedTestCase
final IExpressionDMContext exprDmc = SyncUtil.createExpression(frameDmc, exprString);
- Query<IExpressionDMData> query = new Query<IExpressionDMData>() {
+ Query<IExpressionDMData> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<IExpressionDMData> rm) {
fExpService.getExpressionData(exprDmc, rm);
@@ -1439,7 +1439,7 @@ public class GDBPatternMatchingExpressionsTest extends BaseParametrizedTestCase
fSession.getExecutor().execute(query);
IExpressionDMData data = query.get();
- Query<IExpressionDMDataExtension> query2 = new Query<IExpressionDMDataExtension>() {
+ Query<IExpressionDMDataExtension> query2 = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<IExpressionDMDataExtension> rm) {
fExpService.getExpressionDataExtension(exprDmc, rm);
@@ -1474,7 +1474,7 @@ public class GDBPatternMatchingExpressionsTest extends BaseParametrizedTestCase
final IExpressionDMContext exprDmc = SyncUtil.createExpression(frameDmc, exprString);
- Query<IExpressionDMAddress> query = new Query<IExpressionDMAddress>() {
+ Query<IExpressionDMAddress> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<IExpressionDMAddress> rm) {
fExpService.getExpressionAddressData(exprDmc, rm);
@@ -1509,7 +1509,7 @@ public class GDBPatternMatchingExpressionsTest extends BaseParametrizedTestCase
final IExpressionDMContext exprDmc = SyncUtil.createExpression(frameDmc, exprString);
- Query<IExpressionDMContext[]> query = new Query<IExpressionDMContext[]>() {
+ Query<IExpressionDMContext[]> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<IExpressionDMContext[]> rm) {
fExpService.getSubExpressions(exprDmc, rm);
@@ -1550,7 +1550,7 @@ public class GDBPatternMatchingExpressionsTest extends BaseParametrizedTestCase
final IExpressionDMContext exprDmc = SyncUtil.createExpression(frameDmc, exprString);
- Query<Boolean> query = new Query<Boolean>() {
+ Query<Boolean> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<Boolean> rm) {
fExpService.canWriteExpression(exprDmc, rm);
@@ -1577,7 +1577,7 @@ public class GDBPatternMatchingExpressionsTest extends BaseParametrizedTestCase
final IExpressionDMContext exprDmc = SyncUtil.createExpression(frameDmc, exprString);
- Query<String[]> query = new Query<String[]>() {
+ Query<String[]> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<String[]> rm) {
fExpService.getAvailableFormats(exprDmc, rm);
diff --git a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/GDBProcessesTest.java b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/GDBProcessesTest.java
index 36bdf242a58..c2ff5583fdd 100644
--- a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/GDBProcessesTest.java
+++ b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/GDBProcessesTest.java
@@ -69,11 +69,10 @@ public class GDBProcessesTest extends BaseParametrizedTestCase {
@Override
public void doAfterTest() throws Exception {
- super.doAfterTest();
-
fProcService = null;
if (fServicesTracker != null)
fServicesTracker.dispose();
+ super.doAfterTest();
}
@Override
@@ -90,7 +89,7 @@ public class GDBProcessesTest extends BaseParametrizedTestCase {
public void getProcessData() throws InterruptedException, ExecutionException, TimeoutException {
final IProcessDMContext processContext = DMContexts.getAncestorOfType(SyncUtil.getContainerContext(),
IProcessDMContext.class);
- Query<IThreadDMData> query = new Query<IThreadDMData>() {
+ Query<IThreadDMData> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<IThreadDMData> rm) {
fProcService.getExecutionData(processContext, rm);
@@ -146,8 +145,16 @@ public class GDBProcessesTest extends BaseParametrizedTestCase {
for (int i = 1; i <= 6; i++) {
IThreadDMData threadData = SyncUtil.getThreadData(i);
String name = threadData.getName();
- String expectedName = threadNamesSupported() ? names[i - 1] : "";
- assertEquals("Thread name of thread " + i, expectedName, name);
+ if (threadNamesSupported()) {
+ assertEquals("Thread name of thread " + i, names[i - 1], name);
+ } else {
+ // Sometimes GDBserver does provide this info - it seems unreliable. So
+ // we allow an empty name, but if not empty when !threadNamesSupported
+ // we require it to be the correct name. See Bug 518689
+ if (!"".equals(name)) {
+ assertEquals("Thread name of thread " + i, names[i - 1], name);
+ }
+ }
}
}
}
diff --git a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/GDBRemoteTracepointsTest.java b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/GDBRemoteTracepointsTest.java
index 5e047087b5d..2e94151b37d 100644
--- a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/GDBRemoteTracepointsTest.java
+++ b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/GDBRemoteTracepointsTest.java
@@ -205,13 +205,13 @@ public class GDBRemoteTracepointsTest extends BaseParametrizedTestCase {
@Override
public void doAfterTest() throws Exception {
- super.doAfterTest();
if (fSession != null)
fSession.getExecutor().submit(() -> fSession.removeServiceEventListener(GDBRemoteTracepointsTest.this))
.get();
fBreakpointService = null;
if (fServicesTracker != null)
fServicesTracker.dispose();
+ super.doAfterTest();
}
// *********************************************************************
@@ -301,7 +301,7 @@ public class GDBRemoteTracepointsTest extends BaseParametrizedTestCase {
protected IBreakpointDMContext insertBreakpoint(final IBreakpointsTargetDMContext context,
final Map<String, Object> attributes) throws Throwable {
- Query<IBreakpointDMContext> query = new Query<IBreakpointDMContext>() {
+ Query<IBreakpointDMContext> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<IBreakpointDMContext> rm) {
fBreakpointService.insertBreakpoint(context, attributes, rm);
@@ -318,7 +318,7 @@ public class GDBRemoteTracepointsTest extends BaseParametrizedTestCase {
}
protected void removeBreakpoint(final IBreakpointDMContext breakpoint) throws Throwable {
- Query<Object> query = new Query<Object>() {
+ Query<Object> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<Object> rm) {
fBreakpointService.removeBreakpoint(breakpoint, rm);
@@ -335,7 +335,7 @@ public class GDBRemoteTracepointsTest extends BaseParametrizedTestCase {
protected void updateBreakpoint(final IBreakpointDMContext breakpoint, final Map<String, Object> delta)
throws Throwable {
- Query<Object> query = new Query<Object>() {
+ Query<Object> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Object> rm) {
fBreakpointService.updateBreakpoint(breakpoint, delta, rm);
@@ -351,7 +351,7 @@ public class GDBRemoteTracepointsTest extends BaseParametrizedTestCase {
}
protected IBreakpointDMData getBreakpoint(final IBreakpointDMContext breakpoint) throws Throwable {
- Query<IBreakpointDMData> query = new Query<IBreakpointDMData>() {
+ Query<IBreakpointDMData> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<IBreakpointDMData> rm) {
fBreakpointService.getBreakpointDMData(breakpoint, rm);
@@ -368,7 +368,7 @@ public class GDBRemoteTracepointsTest extends BaseParametrizedTestCase {
}
protected IBreakpointDMContext[] getBreakpoints(final IBreakpointsTargetDMContext context) throws Throwable {
- Query<IBreakpointDMContext[]> query = new Query<IBreakpointDMContext[]>() {
+ Query<IBreakpointDMContext[]> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<IBreakpointDMContext[]> rm) {
fBreakpointService.getBreakpoints(context, rm);
@@ -707,7 +707,7 @@ public class GDBRemoteTracepointsTest extends BaseParametrizedTestCase {
assumeGdbVersionAtLeast(ITestConstants.SUFFIX_GDB_7_5);
IContainerDMContext containerDmc = SyncUtil.getContainerContext();
- Query<MIInfo> query = new Query<MIInfo>() {
+ Query<MIInfo> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<MIInfo> rm) {
fGdbControl.queueCommand(
diff --git a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/GDBTestTest.java b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/GDBTestTest.java
index 11eb18207ce..3afc6eaba71 100644
--- a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/GDBTestTest.java
+++ b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/GDBTestTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2016 Kichwa Coders and others.
+ * Copyright (c) 2016 Kichwa Coders Ltd and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
diff --git a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/ITestConstants.java b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/ITestConstants.java
index 26a9ffb4160..91713d1b44f 100644
--- a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/ITestConstants.java
+++ b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/ITestConstants.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010, 2015 Ericsson and others.
+ * Copyright (c) 2010, 2021 Ericsson and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -36,18 +36,22 @@ public class ITestConstants {
public static final String SUFFIX_GDB_8_0 = "8.0";
public static final String SUFFIX_GDB_8_1 = "8.1";
public static final String SUFFIX_GDB_8_2 = "8.2";
+ public static final String SUFFIX_GDB_8_3 = "8.3";
+ // From GDB 9 the number scheme changed to MAJOR.PATCH so 9.2 is a patch for 9.1 release
+ public static final String SUFFIX_GDB_9 = "9";
+ public static final String SUFFIX_GDB_10 = "10";
public static String[] ALL_SUPPORTED_VERSIONS = new String[] {
// add new versions here
- ITestConstants.SUFFIX_GDB_8_2, ITestConstants.SUFFIX_GDB_8_1, ITestConstants.SUFFIX_GDB_8_0,
- ITestConstants.SUFFIX_GDB_7_12, ITestConstants.SUFFIX_GDB_7_11, ITestConstants.SUFFIX_GDB_7_10,
- ITestConstants.SUFFIX_GDB_7_9, ITestConstants.SUFFIX_GDB_7_8, ITestConstants.SUFFIX_GDB_7_7,
- ITestConstants.SUFFIX_GDB_7_6, ITestConstants.SUFFIX_GDB_7_5, };
+ ITestConstants.SUFFIX_GDB_10, ITestConstants.SUFFIX_GDB_9, ITestConstants.SUFFIX_GDB_8_3,
+ ITestConstants.SUFFIX_GDB_8_2, ITestConstants.SUFFIX_GDB_8_1, ITestConstants.SUFFIX_GDB_8_0, };
- public static String[] ALL_UNSUPPORTED_VERSIONS = new String[] { ITestConstants.SUFFIX_GDB_7_4,
- ITestConstants.SUFFIX_GDB_7_3, ITestConstants.SUFFIX_GDB_7_2, ITestConstants.SUFFIX_GDB_7_1,
- ITestConstants.SUFFIX_GDB_7_0, ITestConstants.SUFFIX_GDB_6_8, ITestConstants.SUFFIX_GDB_6_7,
- ITestConstants.SUFFIX_GDB_6_6, };
+ public static String[] ALL_UNSUPPORTED_VERSIONS = new String[] { ITestConstants.SUFFIX_GDB_7_12,
+ ITestConstants.SUFFIX_GDB_7_11, ITestConstants.SUFFIX_GDB_7_10, ITestConstants.SUFFIX_GDB_7_9,
+ ITestConstants.SUFFIX_GDB_7_8, ITestConstants.SUFFIX_GDB_7_7, ITestConstants.SUFFIX_GDB_7_6,
+ ITestConstants.SUFFIX_GDB_7_5, ITestConstants.SUFFIX_GDB_7_4, ITestConstants.SUFFIX_GDB_7_3,
+ ITestConstants.SUFFIX_GDB_7_2, ITestConstants.SUFFIX_GDB_7_1, ITestConstants.SUFFIX_GDB_7_0,
+ ITestConstants.SUFFIX_GDB_6_8, ITestConstants.SUFFIX_GDB_6_7, ITestConstants.SUFFIX_GDB_6_6, };
public static String[] ALL_KNOWN_VERSIONS;
static {
diff --git a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/LaunchConfigurationAndRestartTest.java b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/LaunchConfigurationAndRestartTest.java
index 715db49d7a8..ea823041a13 100644
--- a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/LaunchConfigurationAndRestartTest.java
+++ b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/LaunchConfigurationAndRestartTest.java
@@ -29,7 +29,6 @@ import java.util.concurrent.TimeUnit;
import org.eclipse.cdt.debug.core.CDIDebugModel;
import org.eclipse.cdt.debug.core.ICDTLaunchConfigurationConstants;
-import org.eclipse.cdt.debug.core.model.ICBreakpointType;
import org.eclipse.cdt.dsf.concurrent.DataRequestMonitor;
import org.eclipse.cdt.dsf.concurrent.ImmediateDataRequestMonitor;
import org.eclipse.cdt.dsf.concurrent.Query;
@@ -38,6 +37,7 @@ import org.eclipse.cdt.dsf.debug.service.IBreakpoints.IBreakpointsTargetDMContex
import org.eclipse.cdt.dsf.debug.service.IExpressions;
import org.eclipse.cdt.dsf.debug.service.IExpressions.IExpressionDMContext;
import org.eclipse.cdt.dsf.debug.service.IFormattedValues.FormattedValueDMData;
+import org.eclipse.cdt.dsf.debug.service.IRunControl.IContainerDMContext;
import org.eclipse.cdt.dsf.debug.service.IRunControl.IExecutionDMContext;
import org.eclipse.cdt.dsf.debug.service.IRunControl.StepType;
import org.eclipse.cdt.dsf.debug.service.IStack.IFrameDMData;
@@ -55,33 +55,28 @@ import org.eclipse.cdt.dsf.mi.service.command.output.MIInfo;
import org.eclipse.cdt.dsf.service.DsfServicesTracker;
import org.eclipse.cdt.dsf.service.DsfSession;
import org.eclipse.cdt.tests.dsf.gdb.framework.BaseParametrizedTestCase;
-import org.eclipse.cdt.tests.dsf.gdb.framework.Intermittent;
-import org.eclipse.cdt.tests.dsf.gdb.framework.IntermittentRule;
import org.eclipse.cdt.tests.dsf.gdb.framework.ServiceEventWaitor;
import org.eclipse.cdt.tests.dsf.gdb.framework.SyncUtil;
import org.eclipse.cdt.tests.dsf.gdb.launching.TestsPlugin;
-import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.debug.core.ILaunchManager;
import org.eclipse.debug.core.model.IProcess;
-import org.junit.Ignore;
-import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
@RunWith(Parameterized.class)
-@Intermittent(repetition = 3)
-@Ignore
public class LaunchConfigurationAndRestartTest extends BaseParametrizedTestCase {
- public @Rule IntermittentRule intermittentRule = new IntermittentRule();
protected static final String EXEC_NAME = "LaunchConfigurationAndRestartTestApp.exe";
protected static final String SOURCE_NAME = "LaunchConfigurationAndRestartTestApp.cc";
- protected static final String[] LINE_TAGS = new String[] { "FIRST_LINE_IN_MAIN", "LAST_LINE_IN_MAIN", };
+ protected static final String[] LINE_TAGS = new String[] { "FIRST_LINE_IN_MAIN", "LAST_LINE_IN_MAIN",
+ "three_steps_back_from_b_stopAtOther" };
protected int FIRST_LINE_IN_MAIN;
protected int LAST_LINE_IN_MAIN;
+ protected int three_steps_back_from_b_stopAtOther;
// The exit code returned by the test program
private static final int TEST_EXIT_CODE = 36;
@@ -98,7 +93,7 @@ public class LaunchConfigurationAndRestartTest extends BaseParametrizedTestCase
@Override
public void doBeforeTest() throws Exception {
assumeLocalSession();
- removeTeminatedLaunchesBeforeTest();
+ teminateAndRemoveLaunches();
setLaunchAttributes();
// Can't run the launch right away because each test needs to first set some
// parameters. The individual tests will be responsible for starting the launch.
@@ -109,6 +104,7 @@ public class LaunchConfigurationAndRestartTest extends BaseParametrizedTestCase
FIRST_LINE_IN_MAIN = getLineForTag("FIRST_LINE_IN_MAIN");
LAST_LINE_IN_MAIN = getLineForTag("LAST_LINE_IN_MAIN");
+ three_steps_back_from_b_stopAtOther = getLineForTag("three_steps_back_from_b_stopAtOther");
}
@Override
@@ -148,10 +144,9 @@ public class LaunchConfigurationAndRestartTest extends BaseParametrizedTestCase
@Override
public void doAfterTest() throws Exception {
- super.doAfterTest();
-
if (fServicesTracker != null)
fServicesTracker.dispose();
+ super.doAfterTest();
}
// *********************************************************************
@@ -171,7 +166,7 @@ public class LaunchConfigurationAndRestartTest extends BaseParametrizedTestCase
doLaunch();
- Query<MIInfo> query = new Query<MIInfo>() {
+ Query<MIInfo> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<MIInfo> rm) {
fGdbControl.queueCommand(
@@ -241,7 +236,7 @@ public class LaunchConfigurationAndRestartTest extends BaseParametrizedTestCase
// Check that argc is correct
final IExpressionDMContext argcDmc = SyncUtil.createExpression(stoppedEvent.getDMContext(), "argc");
- Query<FormattedValueDMData> query = new Query<FormattedValueDMData>() {
+ Query<FormattedValueDMData> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<FormattedValueDMData> rm) {
fExpService.getFormattedExpressionValue(
@@ -258,7 +253,7 @@ public class LaunchConfigurationAndRestartTest extends BaseParametrizedTestCase
// Check that argv is also correct. For simplicity we only check the last argument
final IExpressionDMContext argvDmc = SyncUtil.createExpression(stoppedEvent.getDMContext(), "argv[argc-1]");
- Query<FormattedValueDMData> query2 = new Query<FormattedValueDMData>() {
+ Query<FormattedValueDMData> query2 = new Query<>() {
@Override
protected void execute(DataRequestMonitor<FormattedValueDMData> rm) {
fExpService.getFormattedExpressionValue(
@@ -298,7 +293,7 @@ public class LaunchConfigurationAndRestartTest extends BaseParametrizedTestCase
// The program has stored the content of $HOME into a variable called 'home'.
// Let's verify this variable is 0x0 which means $HOME does not exist.
final IExpressionDMContext exprDmc = SyncUtil.createExpression(stoppedEvent.getDMContext(), "home");
- Query<FormattedValueDMData> query = new Query<FormattedValueDMData>() {
+ Query<FormattedValueDMData> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<FormattedValueDMData> rm) {
fExpService.getFormattedExpressionValue(
@@ -340,7 +335,7 @@ public class LaunchConfigurationAndRestartTest extends BaseParametrizedTestCase
// The program has stored the content of $LAUNCHTEST into a variable called 'launchTest'.
// Let's verify this variable is set to "IS SET".
final IExpressionDMContext exprDmc = SyncUtil.createExpression(stoppedEvent.getDMContext(), "launchTest");
- Query<FormattedValueDMData> query = new Query<FormattedValueDMData>() {
+ Query<FormattedValueDMData> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<FormattedValueDMData> rm) {
fExpService.getFormattedExpressionValue(
@@ -356,7 +351,7 @@ public class LaunchConfigurationAndRestartTest extends BaseParametrizedTestCase
// Check that the normal environment is there by checking that $HOME (which is stored in 'home" exists.
final IExpressionDMContext exprDmc2 = SyncUtil.createExpression(stoppedEvent.getDMContext(), "home");
- Query<FormattedValueDMData> query2 = new Query<FormattedValueDMData>() {
+ Query<FormattedValueDMData> query2 = new Query<>() {
@Override
protected void execute(DataRequestMonitor<FormattedValueDMData> rm) {
fExpService.getFormattedExpressionValue(
@@ -401,7 +396,7 @@ public class LaunchConfigurationAndRestartTest extends BaseParametrizedTestCase
// The program has stored the content of $LAUNCHTEST into a variable called 'launchTest'.
// Let's verify this variable is set to "IS SET".
final IExpressionDMContext exprDmc = SyncUtil.createExpression(stoppedEvent.getDMContext(), "launchTest");
- Query<FormattedValueDMData> query = new Query<FormattedValueDMData>() {
+ Query<FormattedValueDMData> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<FormattedValueDMData> rm) {
fExpService.getFormattedExpressionValue(
@@ -418,7 +413,7 @@ public class LaunchConfigurationAndRestartTest extends BaseParametrizedTestCase
// The program has stored the content of $HOME into a variable called 'home'.
// Let's verify this variable is 0x0 which means it does not exist.
final IExpressionDMContext exprDmc2 = SyncUtil.createExpression(stoppedEvent.getDMContext(), "home");
- Query<FormattedValueDMData> query2 = new Query<FormattedValueDMData>() {
+ Query<FormattedValueDMData> query2 = new Query<>() {
@Override
protected void execute(DataRequestMonitor<FormattedValueDMData> rm) {
fExpService.getFormattedExpressionValue(
@@ -458,7 +453,7 @@ public class LaunchConfigurationAndRestartTest extends BaseParametrizedTestCase
// Check that argc is correct
final IExpressionDMContext argcDmc = SyncUtil.createExpression(stoppedEvent.getDMContext(), "argc");
- Query<FormattedValueDMData> query = new Query<FormattedValueDMData>() {
+ Query<FormattedValueDMData> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<FormattedValueDMData> rm) {
fExpService.getFormattedExpressionValue(
@@ -475,7 +470,7 @@ public class LaunchConfigurationAndRestartTest extends BaseParametrizedTestCase
// Check that argv is also correct. For simplicity we only check the last argument
final IExpressionDMContext argvDmc = SyncUtil.createExpression(stoppedEvent.getDMContext(), "argv[argc-1]");
- Query<FormattedValueDMData> query2 = new Query<FormattedValueDMData>() {
+ Query<FormattedValueDMData> query2 = new Query<>() {
@Override
protected void execute(DataRequestMonitor<FormattedValueDMData> rm) {
fExpService.getFormattedExpressionValue(
@@ -510,9 +505,10 @@ public class LaunchConfigurationAndRestartTest extends BaseParametrizedTestCase
MIStoppedEvent stoppedEvent = getInitialStoppedEvent();
assertTrue(
- "Expected to stop at main:27 but got " + stoppedEvent.getFrame().getFunction() + ":"
- + Integer.toString(stoppedEvent.getFrame().getLine()),
- stoppedEvent.getFrame().getFunction().equals("main") && stoppedEvent.getFrame().getLine() == 27);
+ "Expected to stop at main:" + FIRST_LINE_IN_MAIN + " but got " + stoppedEvent.getFrame().getFunction()
+ + ":" + Integer.toString(stoppedEvent.getFrame().getLine()),
+ stoppedEvent.getFrame().getFunction().equals("main")
+ && stoppedEvent.getFrame().getLine() == FIRST_LINE_IN_MAIN);
}
/**
@@ -553,32 +549,28 @@ public class LaunchConfigurationAndRestartTest extends BaseParametrizedTestCase
* the launch to NOT "stop on main". We will verify that the first stop is
* at the breakpoint that we set.
*/
- @Ignore
@Test
public void testNoStopAtMain() throws Throwable {
setLaunchAttribute(ICDTLaunchConfigurationConstants.ATTR_DEBUGGER_STOP_AT_MAIN, false);
// Set this one as well to make sure it gets ignored
setLaunchAttribute(ICDTLaunchConfigurationConstants.ATTR_DEBUGGER_STOP_AT_MAIN_SYMBOL, "main");
- // We need to set the breakpoint before the launch is started, but the only way to do that is
- // to set it in the platorm. Ok, but how do I get an IResource that points to my binary?
- // The current workspace is the JUnit runtime workspace instead of the workspace containing
- // the JUnit tests.
-
- IFile fakeFile = null;
- CDIDebugModel.createLineBreakpoint(EXEC_PATH + EXEC_NAME, fakeFile, ICBreakpointType.REGULAR,
- LAST_LINE_IN_MAIN + 1, true, 0, "", true); //$NON-NLS-1$
+ CDIDebugModel.createFunctionBreakpoint(null, ResourcesPlugin.getWorkspace().getRoot(), 0, "stopAtOther", -1, -1,
+ -1, true, 0, "", true);
doLaunch();
MIStoppedEvent stoppedEvent = getInitialStoppedEvent();
- assertTrue("Expected to stop at envTest but got " + stoppedEvent.getFrame().getFunction() + ":",
- stoppedEvent.getFrame().getFunction().equals("envTest"));
+ assertTrue("Expected to stop at stopAtOther but got " + stoppedEvent.getFrame().getFunction() + ":",
+ stoppedEvent.getFrame().getFunction().equals("stopAtOther"));
+ final IExecutionDMContext execDmc = stoppedEvent.getDMContext();
+ IFrameDMData frame = SyncUtil.getFrameData(execDmc, 0);
+ assertTrue("Expected to stop at stopAtOther but got " + frame.getFunction() + ":",
+ frame.getFunction().equals("stopAtOther"));
}
/**
* Repeat the test testNoStopAtMain, but after a restart.
*/
- @Ignore
@Test
public void testNoStopAtMainRestart() throws Throwable {
fRestart = true;
@@ -648,7 +640,7 @@ public class LaunchConfigurationAndRestartTest extends BaseParametrizedTestCase
final IBreakpointsTargetDMContext bpTargetDmc = DMContexts.getAncestorOfType(stoppedEvent.getDMContext(),
IBreakpointsTargetDMContext.class);
- Query<MIBreakListInfo> query = new Query<MIBreakListInfo>() {
+ Query<MIBreakListInfo> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<MIBreakListInfo> rm) {
fGdbControl.queueCommand(fGdbControl.getCommandFactory().createCLITrace(bpTargetDmc, "invalid", ""),
@@ -716,11 +708,12 @@ public class LaunchConfigurationAndRestartTest extends BaseParametrizedTestCase
final int REVERSE_NUM_STEPS = 2;
final IExecutionDMContext execDmc = stoppedEvent.getDMContext();
- Query<MIInfo> query = new Query<MIInfo>() {
+ IContainerDMContext containerDmc = SyncUtil.getContainerContext();
+ Query<MIInfo> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<MIInfo> rm) {
fGdbControl.queueCommand(
- fGdbControl.getCommandFactory().createMIExecReverseNext(execDmc, REVERSE_NUM_STEPS), rm);
+ fGdbControl.getCommandFactory().createMIExecReverseNext(containerDmc, REVERSE_NUM_STEPS), rm);
}
};
{
@@ -780,7 +773,7 @@ public class LaunchConfigurationAndRestartTest extends BaseParametrizedTestCase
final ServiceEventWaitor<MIStoppedEvent> eventWaitor = new ServiceEventWaitor<>(fSession, MIStoppedEvent.class);
final int REVERSE_NUM_STEPS = 3;
- Query<MIInfo> query2 = new Query<MIInfo>() {
+ Query<MIInfo> query2 = new Query<>() {
@Override
protected void execute(DataRequestMonitor<MIInfo> rm) {
fGdbControl.queueCommand(
@@ -794,18 +787,16 @@ public class LaunchConfigurationAndRestartTest extends BaseParametrizedTestCase
stoppedEvent = eventWaitor.waitForEvent(TestsPlugin.massageTimeout(1000));
- assertTrue(
- "Expected to stop at main:" + (FIRST_LINE_IN_MAIN) + " but got " + stoppedEvent.getFrame().getFunction()
- + ":" + Integer.toString(stoppedEvent.getFrame().getLine()),
+ assertTrue("Expected to stop at main:" + (three_steps_back_from_b_stopAtOther) + " but got "
+ + stoppedEvent.getFrame().getFunction() + ":" + Integer.toString(stoppedEvent.getFrame().getLine()),
stoppedEvent.getFrame().getFunction().equals("main")
- && stoppedEvent.getFrame().getLine() == FIRST_LINE_IN_MAIN);
+ && stoppedEvent.getFrame().getLine() == three_steps_back_from_b_stopAtOther);
}
/**
* Repeat the test testStopAtOtherWithReverse, but after a restart.
*/
@Test
- @Ignore("Fails. Investigate what it needs to wait for.")
public void testStopAtOtherWithReverseRestart() throws Throwable {
assumeGdbVersionAtLeast(ITestConstants.SUFFIX_GDB_7_2);
fRestart = true;
@@ -820,7 +811,6 @@ public class LaunchConfigurationAndRestartTest extends BaseParametrizedTestCase
* enabled at the very start).
*/
@Test
- @Ignore("TODO: this is not working because it does not insert the breakpoint propertly")
public void testNoStopAtMainWithReverse() throws Throwable {
assumeGdbVersionAtLeast(ITestConstants.SUFFIX_GDB_7_2);
setLaunchAttribute(ICDTLaunchConfigurationConstants.ATTR_DEBUGGER_STOP_AT_MAIN, false);
@@ -828,58 +818,47 @@ public class LaunchConfigurationAndRestartTest extends BaseParametrizedTestCase
setLaunchAttribute(ICDTLaunchConfigurationConstants.ATTR_DEBUGGER_STOP_AT_MAIN_SYMBOL, "main");
setLaunchAttribute(IGDBLaunchConfigurationConstants.ATTR_DEBUGGER_REVERSE, true);
- // MUST SET BREAKPOINT AT LAST LINE BUT BEFORE LAUNCH IS STARTED
- // MUST SET BREAKPOINT AT LAST LINE BUT BEFORE LAUNCH IS STARTED
- // MUST SET BREAKPOINT AT LAST LINE BUT BEFORE LAUNCH IS STARTED
- // see testNoStopAtMain()
-
+ CDIDebugModel.createFunctionBreakpoint(null, ResourcesPlugin.getWorkspace().getRoot(), 0, "stopAtOther", -1, -1,
+ -1, true, 0, "", true);
doLaunch();
MIStoppedEvent stoppedEvent = getInitialStoppedEvent();
-
- // The initial stopped event is not the last stopped event.
- // With reverse we have to stop the program, turn on reverse and start it again.
- // Let's get the frame where we really are stopped right now.
+ assertTrue("Expected to stop at stopAtOther but got " + stoppedEvent.getFrame().getFunction() + ":",
+ stoppedEvent.getFrame().getFunction().equals("stopAtOther"));
final IExecutionDMContext execDmc = stoppedEvent.getDMContext();
IFrameDMData frame = SyncUtil.getFrameData(execDmc, 0);
-
- // Make sure we stopped at the first line of main
- assertTrue(
- "Expected to stop at main:" + LAST_LINE_IN_MAIN + " but got " + frame.getFunction() + ":"
- + Integer.toString(frame.getLine()),
- frame.getFunction().equals("main") && frame.getLine() == LAST_LINE_IN_MAIN);
+ assertTrue("Expected to stop at stopAtOther but got " + frame.getFunction() + ":",
+ frame.getFunction().equals("stopAtOther"));
// Now step backwards all the way to the start to make sure reverse was enabled from the very start
final ServiceEventWaitor<MIStoppedEvent> eventWaitor = new ServiceEventWaitor<>(fSession, MIStoppedEvent.class);
- final int REVERSE_NUM_STEPS = 3;
- Query<MIInfo> query2 = new Query<MIInfo>() {
- @Override
- protected void execute(DataRequestMonitor<MIInfo> rm) {
- fGdbControl.queueCommand(
- fGdbControl.getCommandFactory().createMIExecReverseNext(execDmc, REVERSE_NUM_STEPS), rm);
- }
- };
- {
+ int maxSteps = 100;
+ while (--maxSteps > 0) {
+ Query<MIInfo> query2 = new Query<>() {
+ @Override
+ protected void execute(DataRequestMonitor<MIInfo> rm) {
+ fGdbControl.queueCommand(fGdbControl.getCommandFactory().createMIExecReverseNext(execDmc, 1), rm);
+ }
+ };
fGdbControl.getExecutor().execute(query2);
query2.get(TestsPlugin.massageTimeout(500), TimeUnit.MILLISECONDS);
- }
+ stoppedEvent = eventWaitor.waitForEvent(TestsPlugin.massageTimeout(1000));
- stoppedEvent = eventWaitor.waitForEvent(TestsPlugin.massageTimeout(1000));
+ if (stoppedEvent.getFrame().getFunction().equals("main")
+ && stoppedEvent.getFrame().getLine() == FIRST_LINE_IN_MAIN) {
+ // success
+ return;
+ }
- assertTrue(
- "Expected to stop at main:" + (FIRST_LINE_IN_MAIN) + " but got " + stoppedEvent.getFrame().getFunction()
- + ":" + Integer.toString(stoppedEvent.getFrame().getLine()),
- stoppedEvent.getFrame().getFunction().equals("main")
- && stoppedEvent.getFrame().getLine() == FIRST_LINE_IN_MAIN);
+ }
+ fail("Expected to eventually stop at main:" + (FIRST_LINE_IN_MAIN));
}
/**
* Repeat the test testNoStopAtMainWithReverse, but after a restart.
- * TODO: remove ignore when parent test is fixed
*/
@Test
- @Ignore
public void testNoStopAtMainWithReverseRestart() throws Throwable {
assumeGdbVersionAtLeast(ITestConstants.SUFFIX_GDB_7_2);
fRestart = true;
diff --git a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/MIBreakpointsTest.java b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/MIBreakpointsTest.java
index 9e576db32d0..0d56e0a923e 100644
--- a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/MIBreakpointsTest.java
+++ b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/MIBreakpointsTest.java
@@ -220,7 +220,6 @@ public class MIBreakpointsTest extends BaseParametrizedTestCase {
@Override
public void doAfterTest() throws Exception {
- super.doAfterTest();
// cleanup cannot assume sane state since it runs even test is failed or skipped
if (fSession != null) {
// Clear the references (not strictly necessary)
@@ -233,6 +232,7 @@ public class MIBreakpointsTest extends BaseParametrizedTestCase {
fServicesTracker.dispose();
fServicesTracker = null;
clearEventCounters();
+ super.doAfterTest();
}
// ========================================================================
// Event Management Functions
@@ -405,7 +405,7 @@ public class MIBreakpointsTest extends BaseParametrizedTestCase {
final FormattedValueDMContext formattedValueDMC = SyncUtil.getFormattedValue(fExpressionService, expressionDMC,
IFormattedValues.DECIMAL_FORMAT);
- Query<FormattedValueDMData> query = new Query<FormattedValueDMData>() {
+ Query<FormattedValueDMData> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<FormattedValueDMData> rm) {
fExpressionService.getFormattedExpressionValue(formattedValueDMC, rm);
@@ -432,7 +432,7 @@ public class MIBreakpointsTest extends BaseParametrizedTestCase {
*/
protected IBreakpointDMContext[] getBreakpoints(final IBreakpointsTargetDMContext context)
throws InterruptedException, ExecutionException, TimeoutException {
- Query<IBreakpointDMContext[]> query = new Query<IBreakpointDMContext[]>() {
+ Query<IBreakpointDMContext[]> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<IBreakpointDMContext[]> rm) {
fBreakpointService.getBreakpoints(context, rm);
@@ -458,7 +458,7 @@ public class MIBreakpointsTest extends BaseParametrizedTestCase {
*/
protected IBreakpointDMData getBreakpoint(final IBreakpointDMContext breakpoint)
throws InterruptedException, ExecutionException, TimeoutException {
- Query<IBreakpointDMData> query = new Query<IBreakpoints.IBreakpointDMData>() {
+ Query<IBreakpointDMData> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<IBreakpointDMData> rm) {
fBreakpointService.getBreakpointDMData(breakpoint, rm);
@@ -516,7 +516,7 @@ public class MIBreakpointsTest extends BaseParametrizedTestCase {
*/
protected IBreakpointDMContext insertBreakpoint(final IBreakpointsTargetDMContext context,
final Map<String, Object> attributes) throws InterruptedException, ExecutionException, TimeoutException {
- Query<IBreakpointDMContext> query = new Query<IBreakpointDMContext>() {
+ Query<IBreakpointDMContext> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<IBreakpointDMContext> rm) {
fBreakpointService.insertBreakpoint(context, attributes, rm);
@@ -566,7 +566,7 @@ public class MIBreakpointsTest extends BaseParametrizedTestCase {
*/
private void removeBreakpoint(final IBreakpointDMContext breakpoint)
throws InterruptedException, ExecutionException, TimeoutException {
- Query<Void> query = new Query<Void>() {
+ Query<Void> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Void> rm) {
fBreakpointService.removeBreakpoint(breakpoint, rm);
@@ -617,7 +617,7 @@ public class MIBreakpointsTest extends BaseParametrizedTestCase {
*/
private void updateBreakpoint(final IBreakpointDMContext breakpoint, final Map<String, Object> delta)
throws InterruptedException, ExecutionException, TimeoutException {
- Query<Void> query = new Query<Void>() {
+ Query<Void> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Void> rm) {
fBreakpointService.updateBreakpoint(breakpoint, delta, rm);
@@ -2509,7 +2509,7 @@ public class MIBreakpointsTest extends BaseParametrizedTestCase {
}
private void queueConsoleCommand(final String command) throws Throwable {
- Query<MIInfo> query = new Query<MIInfo>() {
+ Query<MIInfo> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<MIInfo> rm) {
fCommandControl.queueCommand(fCommandControl.getCommandFactory()
diff --git a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/MICatchpointsTest.java b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/MICatchpointsTest.java
index c525cebc52a..2a7e3801c81 100644
--- a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/MICatchpointsTest.java
+++ b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/MICatchpointsTest.java
@@ -196,7 +196,6 @@ public class MICatchpointsTest extends BaseParametrizedTestCase {
@Override
public void doAfterTest() throws Exception {
- super.doAfterTest();
if (fSession != null) {
Runnable runnable = () -> fRunControl.getSession().removeServiceEventListener(MICatchpointsTest.this);
fSession.getExecutor().submit(runnable).get();
@@ -208,6 +207,7 @@ public class MICatchpointsTest extends BaseParametrizedTestCase {
fServicesTracker.dispose();
fServicesTracker = null;
clearEventCounters();
+ super.doAfterTest();
}
// ========================================================================
@@ -344,8 +344,7 @@ public class MICatchpointsTest extends BaseParametrizedTestCase {
IFormattedValues.DECIMAL_FORMAT);
// Create the DataRequestMonitor which will store the operation result in the wait object
- final DataRequestMonitor<FormattedValueDMData> drm = new DataRequestMonitor<FormattedValueDMData>(
- fSession.getExecutor(), null) {
+ final DataRequestMonitor<FormattedValueDMData> drm = new DataRequestMonitor<>(fSession.getExecutor(), null) {
@Override
protected void handleCompleted() {
if (isSuccess()) {
@@ -388,7 +387,7 @@ public class MICatchpointsTest extends BaseParametrizedTestCase {
fWait.waitReset();
// Set the Request Monitor
- final DataRequestMonitor<IBreakpointDMContext[]> drm = new DataRequestMonitor<IBreakpointDMContext[]>(
+ final DataRequestMonitor<IBreakpointDMContext[]> drm = new DataRequestMonitor<>(
fBreakpointService.getExecutor(), null) {
@Override
protected void handleCompleted() {
@@ -425,8 +424,8 @@ public class MICatchpointsTest extends BaseParametrizedTestCase {
fWait.waitReset();
// Set the Request Monitor
- final DataRequestMonitor<IBreakpointDMData> drm = new DataRequestMonitor<IBreakpointDMData>(
- fBreakpointService.getExecutor(), null) {
+ final DataRequestMonitor<IBreakpointDMData> drm = new DataRequestMonitor<>(fBreakpointService.getExecutor(),
+ null) {
@Override
protected void handleCompleted() {
fWait.waitFinished(getStatus());
@@ -464,8 +463,8 @@ public class MICatchpointsTest extends BaseParametrizedTestCase {
fWait.waitReset();
// Set the Request Monitor
- final DataRequestMonitor<IBreakpointDMContext> drm = new DataRequestMonitor<IBreakpointDMContext>(
- fBreakpointService.getExecutor(), null) {
+ final DataRequestMonitor<IBreakpointDMContext> drm = new DataRequestMonitor<>(fBreakpointService.getExecutor(),
+ null) {
@Override
protected void handleCompleted() {
fWait.waitFinished(getStatus());
diff --git a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/MIDisassemblyTest.java b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/MIDisassemblyTest.java
index 77ae0e15035..55fc17ad58b 100644
--- a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/MIDisassemblyTest.java
+++ b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/MIDisassemblyTest.java
@@ -120,14 +120,13 @@ public class MIDisassemblyTest extends BaseParametrizedTestCase {
@Override
public void doAfterTest() throws Exception {
- super.doAfterTest();
-
fExpressionService = null;
fDisassembly = null;
if (fServicesTracker != null) {
fServicesTracker.dispose();
fServicesTracker = null;
}
+ super.doAfterTest();
}
// ========================================================================
@@ -172,7 +171,7 @@ public class MIDisassemblyTest extends BaseParametrizedTestCase {
*/
private IInstruction[] getInstruction(final IDisassemblyDMContext dmc, final BigInteger startAddress,
final BigInteger endAddress) throws InterruptedException, ExecutionException {
- Query<IInstruction[]> query = new Query<IInstruction[]>() {
+ Query<IInstruction[]> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<IInstruction[]> rm) {
@@ -204,7 +203,7 @@ public class MIDisassemblyTest extends BaseParametrizedTestCase {
*/
private IInstruction[] getInstruction(final IDisassemblyDMContext dmc, final String function, final int linenum,
final int count) throws InterruptedException, ExecutionException {
- Query<IInstruction[]> query = new Query<IInstruction[]>() {
+ Query<IInstruction[]> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<IInstruction[]> rm) {
@@ -235,7 +234,7 @@ public class MIDisassemblyTest extends BaseParametrizedTestCase {
*/
private IMixedInstruction[] getMixedInstruction(final IDisassemblyDMContext dmc, final BigInteger startAddress,
final BigInteger endAddress) throws InterruptedException, ExecutionException {
- Query<IMixedInstruction[]> query = new Query<IMixedInstruction[]>() {
+ Query<IMixedInstruction[]> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<IMixedInstruction[]> rm) {
@@ -266,7 +265,7 @@ public class MIDisassemblyTest extends BaseParametrizedTestCase {
*/
private IMixedInstruction[] getMixedInstruction(final IDisassemblyDMContext dmc, final String function,
final int linenum, final int count) throws InterruptedException, ExecutionException {
- Query<IMixedInstruction[]> query = new Query<IMixedInstruction[]>() {
+ Query<IMixedInstruction[]> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<IMixedInstruction[]> rm) {
diff --git a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/MIExpressionsTest.java b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/MIExpressionsTest.java
index ca9f8681d9a..83b5a1ac0e8 100644
--- a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/MIExpressionsTest.java
+++ b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/MIExpressionsTest.java
@@ -23,7 +23,9 @@ import static org.junit.Assert.assertTrue;
import java.util.Arrays;
import java.util.HashMap;
+import java.util.LinkedHashMap;
import java.util.Map;
+import java.util.Map.Entry;
import java.util.concurrent.TimeUnit;
import org.eclipse.cdt.core.IAddress;
@@ -95,17 +97,10 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
setLaunchAttribute(ICDTLaunchConfigurationConstants.ATTR_PROGRAM_NAME, EXEC_PATH + EXEC_NAME);
}
- /* Line tags in the source file. */
- private static final String[] LINE_TAGS = new String[] { "testUpdateOfPointer_1", "testUpdateOfPointer_2",
- "testUpdateOfPointerTypedef_1", "testUpdateOfPointerTypedef_2", };
-
@Override
public void doBeforeTest() throws Exception {
super.doBeforeTest();
- /* Resolve line tags in source file. */
- resolveLineTagLocations(SOURCE_NAME, LINE_TAGS);
-
fSession = getGDBLaunch().getSession();
Runnable runnable = () -> {
fServicesTracker = new DsfServicesTracker(TestsPlugin.getBundleContext(), fSession.getId());
@@ -119,7 +114,6 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
@Override
public void doAfterTest() throws Exception {
- super.doAfterTest();
if (fSession != null) {
fSession.getExecutor().submit(() -> fSession.removeServiceEventListener(MIExpressionsTest.this)).get();
}
@@ -127,6 +121,27 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
if (fServicesTracker != null) {
fServicesTracker.dispose();
}
+ super.doAfterTest();
+ }
+
+ @Override
+ protected int getLineForTag(String tag) throws Exception {
+ try {
+ super.getLineForTag(tag);
+ } catch (Exception e) {
+ resolveLineTagLocations(SOURCE_NAME, tag);
+ }
+ return super.getLineForTag(tag);
+ }
+
+ /**
+ * Run to one of the tags in {@link #LINE_TAGS}
+ * @throws Throwable
+ */
+ private MIStoppedEvent runToTag(String tag) throws Throwable {
+ String location = String.format("%s:%d", SOURCE_NAME, getLineForTag(tag));
+ MIStoppedEvent stoppedEvent = SyncUtil.runToLocation(location);
+ return stoppedEvent;
}
// Handles ExpressionChangedEvent
@@ -160,8 +175,7 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
*/
@Test
public void testLiteralIntegerExpressions() throws Throwable {
- MIStoppedEvent stoppedEvent = SyncUtil.runToLocation("testLocals");
-
+ MIStoppedEvent stoppedEvent = runToTag("testLocals_init");
// Create a map of expressions and their expected values.
Map<String, String[]> tests = new HashMap<>();
@@ -183,10 +197,10 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
*/
@Test
public void testLiteralFloatingPointExpressions() throws Throwable {
- MIStoppedEvent stoppedEvent = SyncUtil.runToLocation("testLocals");
+ MIStoppedEvent stoppedEvent = runToTag("testLocals_init");
// Create a map of expressions and their expected values.
- Map<String, String[]> tests = new HashMap<>();
+ Map<String, String[]> tests = new LinkedHashMap<>();
tests.put("3.14159 + 1.1111", new String[] { "0x4", "04", "100", "4", "4.2526", "4.2526" });
tests.put("100.0 / 3.0", new String[] { "0x21", "041", "100001", "33", "33.3333", "33.3333" });
@@ -206,11 +220,9 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
* variables.
*/
@Test
- @Ignore
public void testLocalVariables() throws Throwable {
// Run to the point where all local variables are initialized
- SyncUtil.runToLocation("testLocals");
- MIStoppedEvent stoppedEvent = SyncUtil.step(16, StepType.STEP_OVER);
+ MIStoppedEvent stoppedEvent = runToTag("testLocals_init");
// Create a map of expressions to expected values.
Map<String, String[]> tests1 = new HashMap<>();
@@ -245,8 +257,7 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
// Step into the method and stop until all new local variables are
// initialized
- SyncUtil.step(StepType.STEP_INTO);
- stoppedEvent = SyncUtil.step(5, StepType.STEP_OVER);
+ stoppedEvent = runToTag("locals2_init");
// Create a map of expressions to expected values.
Map<String, String[]> tests2 = new HashMap<>();
@@ -278,8 +289,7 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
@Ignore("Sublocks do not work with GDB")
@Test
public void testSubBlock() throws Throwable {
- SyncUtil.runToLocation("testSubblock");
- MIStoppedEvent stoppedEvent = SyncUtil.step(2, StepType.STEP_OVER);
+ MIStoppedEvent stoppedEvent = runToTag("testSubblock_init");
IFrameDMContext frameDmc = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
Map<String, String[]> tests = new HashMap<>();
@@ -290,7 +300,7 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
executeExpressionSubTests(tests, frameDmc);
// Now enter a subblock with the same variable names
- SyncUtil.step(2, StepType.STEP_OVER);
+ runToTag("testSubblock_subblock_init");
tests = new HashMap<>();
@@ -372,7 +382,7 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
// First we get the expected value of the array pointer.
final IExpressionDMContext exprDmc = SyncUtil.createExpression(frameDmc, "f");
- Query<IExpressionDMData> query = new Query<IExpressionDMData>() {
+ Query<IExpressionDMData> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<IExpressionDMData> rm) {
fExpService.getExpressionData(exprDmc, rm);
@@ -421,7 +431,7 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
final IExpressionDMContext exprDmc = SyncUtil.createExpression(frameDmc, "this");
final IExpressionDMContext[] children = getChildren(exprDmc, new String[] { "Base", "Base" });
- Query<FormattedValueDMData> query = new Query<FormattedValueDMData>() {
+ Query<FormattedValueDMData> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<FormattedValueDMData> rm) {
FormattedValueDMContext dmc = fExpService.getFormattedValueContext(children[0],
@@ -436,7 +446,7 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
// This second child is testing the fact that we could have the child named
// the same as its type and we still want to be able to get the details without error.
- query = new Query<FormattedValueDMData>() {
+ query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<FormattedValueDMData> rm) {
FormattedValueDMContext dmc = fExpService.getFormattedValueContext(children[1],
@@ -455,10 +465,9 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
* children. See bug 320277.
*/
@Test
- @Ignore
public void testNestedBaseChildrenBug() throws Throwable {
- MIStoppedEvent stoppedEvent = SyncUtil.runToLocation("BaseTest::test");
+ MIStoppedEvent stoppedEvent = runToTag("BaseTest::test_init");
final IFrameDMContext frameDmc = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
@@ -468,7 +477,7 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
final IExpressionDMContext[] children = getChildren(children1[0], new String[] { "nested", "pNested" });
final IExpressionDMContext[] childOfPointer = getChildren(children[1], new String[] { "*pNested" });
- Query<FormattedValueDMData> query = new Query<FormattedValueDMData>() {
+ Query<FormattedValueDMData> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<FormattedValueDMData> rm) {
@@ -481,7 +490,7 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
fExpService.getExecutor().submit(query);
query.get();
- query = new Query<FormattedValueDMData>() {
+ query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<FormattedValueDMData> rm) {
@@ -494,7 +503,7 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
fExpService.getExecutor().submit(query);
query.get();
- query = new Query<FormattedValueDMData>() {
+ query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<FormattedValueDMData> rm) {
@@ -542,7 +551,7 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
ServiceEventWaitor<IExpressionChangedDMEvent> eventWaitor = new ServiceEventWaitor<>(fSession,
IExpressionChangedDMEvent.class);
// Write the new value using its formatted value
- Query<Void> writeQuery = new Query<Void>() {
+ Query<Void> writeQuery = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Void> rm) {
@@ -557,7 +566,7 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
assertThat(event.getDMContext(), is(exprDmc));
// Read the new value in decimal and check that it is what we expected
- Query<FormattedValueDMData> readQuery = new Query<FormattedValueDMData>() {
+ Query<FormattedValueDMData> readQuery = new Query<>() {
@Override
protected void execute(DataRequestMonitor<FormattedValueDMData> rm) {
@@ -626,13 +635,11 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
* make sure the internal MI commands are sequenced properly.
*/
@Test
- @Ignore
public void testConcurrentReads() throws Throwable {
// Next we test that we can read the value more than once
// of the same variable object at the exact same time
- SyncUtil.runToLocation("testConcurrent");
- MIStoppedEvent stoppedEvent = SyncUtil.step(1, StepType.STEP_OVER);
+ MIStoppedEvent stoppedEvent = runToTag("testConcurrent_init");
final IFrameDMContext frameDmc = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
@@ -919,14 +926,12 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
* sure the internal MI commands are sequenced properly.
*/
@Test
- @Ignore
public void testConcurrentReadWrite() throws Throwable {
// Next we test that we can deal with a write request and read request
// at
// the same time and vice-versa
- SyncUtil.runToLocation("testConcurrent");
- MIStoppedEvent stoppedEvent = SyncUtil.step(1, StepType.STEP_OVER);
+ MIStoppedEvent stoppedEvent = runToTag("testConcurrent_init");
IFrameDMContext frameDmc = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
@@ -1007,7 +1012,6 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
* to make sure the internal MI commands are sequenced properly.
*/
@Test
- @Ignore
public void testConcurrentReadWriteChildren() throws Throwable {
// Finally, we go nuts and request two reads, while requesting
// a get children and get children count.
@@ -1015,8 +1019,7 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
// go through at any time and we don't exactly know when it will
// change the value we are reading.
- SyncUtil.runToLocation("testConcurrent");
- MIStoppedEvent stoppedEvent = SyncUtil.step(1, StepType.STEP_OVER);
+ MIStoppedEvent stoppedEvent = runToTag("testConcurrent_init");
IFrameDMContext frameDmc = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
@@ -1148,13 +1151,11 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
* an MI command to the back-end
*/
@Test
- @Ignore
public void testWriteCache() throws Throwable {
// Test the cache by changing a value but triggering a read before the
// write clears the cache
- SyncUtil.runToLocation("testConcurrent");
- MIStoppedEvent stoppedEvent = SyncUtil.step(1, StepType.STEP_OVER);
+ MIStoppedEvent stoppedEvent = runToTag("testConcurrent_init");
IFrameDMContext frameDmc = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
@@ -1295,11 +1296,9 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
* expression
*/
@Test
- @Ignore
public void testExprAddress() throws Throwable {
- SyncUtil.runToLocation("testAddress");
- MIStoppedEvent stoppedEvent = SyncUtil.step(2, StepType.STEP_OVER);
+ MIStoppedEvent stoppedEvent = runToTag("testAddress_init");
IFrameDMContext frameDmc = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
@@ -1392,22 +1391,21 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
*/
@Test
public void testNamingSameDepth() throws Throwable {
- SyncUtil.runToLocation("testName1");
- MIStoppedEvent stoppedEvent = SyncUtil.step(1, StepType.STEP_OVER);
+ MIStoppedEvent stoppedEvent = runToTag("testName1_init");
IFrameDMContext frameDmc = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
Map<String, String[]> tests = new HashMap<>();
tests.put("a", new String[] { "0x1", "01", "1", "1", "1", "1" });
executeExpressionSubTests(tests, frameDmc);
- SyncUtil.runToLocation("testName2");
+ runToTag("testName2_init");
stoppedEvent = SyncUtil.step(1, StepType.STEP_INTO);
frameDmc = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
tests = new HashMap<>();
tests.put("a", new String[] { "0x2", "02", "10", "2", "2", "2" });
executeExpressionSubTests(tests, frameDmc);
- SyncUtil.runToLocation("testName1");
+ runToTag("testName1_init");
stoppedEvent = SyncUtil.step(1, StepType.STEP_INTO);
frameDmc = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
tests = new HashMap<>();
@@ -1421,23 +1419,21 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
*/
@Test
public void testNamingSameMethod() throws Throwable {
- SyncUtil.runToLocation("testSameName");
- MIStoppedEvent stoppedEvent = SyncUtil.step(2, StepType.STEP_INTO);
+ MIStoppedEvent stoppedEvent = runToTag("testSameName1_a_init");
IFrameDMContext frameDmc = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
Map<String, String[]> tests = new HashMap<>();
tests.put("a", new String[] { "0x1", "01", "1", "1", "1", "1" });
executeExpressionSubTests(tests, frameDmc);
- SyncUtil.step(StepType.STEP_RETURN);
- stoppedEvent = SyncUtil.step(2, StepType.STEP_INTO);
+ stoppedEvent = runToTag("testSameName1_b_init");
frameDmc = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
tests = new HashMap<>();
tests.put("a", new String[] { "0x2", "02", "10", "2", "2", "2" });
executeExpressionSubTests(tests, frameDmc);
SyncUtil.step(StepType.STEP_RETURN);
- stoppedEvent = SyncUtil.step(2, StepType.STEP_INTO);
+ stoppedEvent = runToTag("testSameName1_a_init");
frameDmc = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
tests = new HashMap<>();
tests.put("a", new String[] { "0x3", "03", "11", "3", "3", "3" });
@@ -1449,12 +1445,11 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
* a thread selected, the top-most stack frame is used for evaluation
*/
@Test
- @Ignore
public void testThreadContext() throws Throwable {
- // Step to a stack level of 2 to be able to test differen stack frames
- SyncUtil.runToLocation("locals2");
- MIStoppedEvent stoppedEvent = SyncUtil.step(StepType.STEP_OVER);
+ // Step to a stack level of 2 to be able to test different stack frames
+ String tag = String.format("%s:%d", SOURCE_NAME, getLineForTag("locals2_init"));
+ MIStoppedEvent stoppedEvent = SyncUtil.runToLocation(tag);
// Create a map of expressions to expected values.
Map<String, String[]> tests = new HashMap<>();
@@ -1477,7 +1472,7 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
@Test
public void testChildNamingSameMethod() throws Throwable {
SyncUtil.runToLocation("testSameName");
- MIStoppedEvent stoppedEvent = SyncUtil.step(4, StepType.STEP_INTO);
+ MIStoppedEvent stoppedEvent = SyncUtil.step(5, StepType.STEP_INTO);
final IFrameDMContext frameDmc = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
final AsyncCompletionWaitor wait = new AsyncCompletionWaitor();
@@ -1637,20 +1632,17 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
*/
@Test
public void testUpdatingChildren() throws Throwable {
- SyncUtil.runToLocation("testUpdateChildren");
- MIStoppedEvent stoppedEvent = SyncUtil.step(2, StepType.STEP_OVER);
+ MIStoppedEvent stoppedEvent = runToTag("testUpdateChildren_init");
final IFrameDMContext frameDmc = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
doUpdateTest(frameDmc, 0);
// Re-run the test to test out-of-scope update again
- SyncUtil.step(StepType.STEP_RETURN);
- stoppedEvent = SyncUtil.step(3, StepType.STEP_INTO);
+ stoppedEvent = runToTag("testUpdateChildren_init");
final IFrameDMContext frameDmc2 = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
doUpdateTest(frameDmc2, 100);
// Re-run the test within a different method test out-of-scope updates
- SyncUtil.step(StepType.STEP_RETURN);
- stoppedEvent = SyncUtil.step(3, StepType.STEP_INTO);
+ stoppedEvent = runToTag("testUpdateChildren2_init");
final IFrameDMContext frameDmc3 = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
doUpdateTest(frameDmc3, 200);
@@ -1963,8 +1955,7 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
*/
@Test
public void testUpdateGDBBug() throws Throwable {
- SyncUtil.runToLocation("testUpdateGDBBug");
- MIStoppedEvent stoppedEvent = SyncUtil.step(1, StepType.STEP_OVER);
+ MIStoppedEvent stoppedEvent = runToTag("testUpdateGDBBug_init");
final IFrameDMContext frameDmc = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
final AsyncCompletionWaitor wait = new AsyncCompletionWaitor();
@@ -2060,8 +2051,7 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
*/
@Test
public void testUpdateIssue() throws Throwable {
- SyncUtil.runToLocation("testUpdateIssue");
- MIStoppedEvent stoppedEvent = SyncUtil.step(1, StepType.STEP_OVER);
+ MIStoppedEvent stoppedEvent = runToTag("testUpdateIssue_init");
final IFrameDMContext frameDmc = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
final AsyncCompletionWaitor wait = new AsyncCompletionWaitor();
@@ -2178,8 +2168,7 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
*/
@Test
public void testUpdateIssue2() throws Throwable {
- SyncUtil.runToLocation("testUpdateIssue2");
- MIStoppedEvent stoppedEvent = SyncUtil.step(1, StepType.STEP_OVER);
+ MIStoppedEvent stoppedEvent = runToTag("testUpdateIssue2_init");
final IFrameDMContext frameDmc = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
final AsyncCompletionWaitor wait = new AsyncCompletionWaitor();
@@ -2300,8 +2289,7 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
*/
@Test
public void testConcurrentReadAndUpdateChild() throws Throwable {
- SyncUtil.runToLocation("testConcurrentReadAndUpdateChild");
- MIStoppedEvent stoppedEvent = SyncUtil.step(1, StepType.STEP_OVER);
+ MIStoppedEvent stoppedEvent = runToTag("testConcurrentReadAndUpdateChild_init");
final IFrameDMContext frameDmc = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
final AsyncCompletionWaitor wait = new AsyncCompletionWaitor();
@@ -2418,7 +2406,7 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
@Test
public void testConcurrentUpdateOutOfScopeChildThenParent() throws Throwable {
SyncUtil.runToLocation("testConcurrentUpdateOutOfScopeChildThenParent");
- MIStoppedEvent stoppedEvent = SyncUtil.step(2, StepType.STEP_INTO);
+ MIStoppedEvent stoppedEvent = runToTag("testConcurrentUpdateOutOfScopeChildThenParent1_init");
final IFrameDMContext frameDmc = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
@@ -2471,7 +2459,7 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
wait.waitReset();
SyncUtil.step(StepType.STEP_RETURN);
- stoppedEvent = SyncUtil.step(2, StepType.STEP_INTO);
+ stoppedEvent = runToTag("testConcurrentUpdateOutOfScopeChildThenParent2_init");
// Now step to another method to make the previous variable objects out-of-scope
// then first request the child and then the parent. We want to test this order
@@ -2802,11 +2790,10 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
// Now evaluate each of the above expressions and compare the actual
// value against
// the expected value.
- for (final String expressionToEvaluate : tests.keySet()) {
-
+ for (final Entry<String, String[]> test : tests.entrySet()) {
// Get an IExpressionDMContext object representing the expression to
// be evaluated.
- final IExpressionDMContext exprDMC = SyncUtil.createExpression(dmc, expressionToEvaluate);
+ final IExpressionDMContext exprDMC = SyncUtil.createExpression(dmc, test.getKey());
final AsyncCompletionWaitor wait = new AsyncCompletionWaitor();
@@ -2825,7 +2812,7 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
// Now run the current sub-test using each of
// the formats available for the type of
// the expression in the sub-test.
-
+ System.out.println(Arrays.toString(formatIds));
for (final String formatId : formatIds) {
// Get a FormattedValueCMContext object for
// the expression-formatID pair.
@@ -2854,7 +2841,7 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
// object from the waiter.
FormattedValueDMData exprValueDMData = getData();
- final String[] expectedValues = tests.get(expressionToEvaluate);
+ final String[] expectedValues = test.getValue();
// Check the value of the expression for correctness.
String actualValue = exprValueDMData.getFormattedValue();
@@ -2889,8 +2876,8 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
wait.waitFinished();
} else {
String errorMsg = "Failed to correctly evalutate '"
- + expressionToEvaluate + "': expected '"
- + expectedValue + "', got '" + actualValue + "'";
+ + test.getKey() + "': expected '" + expectedValue
+ + "', got '" + actualValue + "'";
wait.waitFinished(new Status(IStatus.ERROR,
TestsPlugin.PLUGIN_ID, errorMsg, null));
}
@@ -2945,10 +2932,8 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
IExpressionDMAddress addr = (IExpressionDMAddress) wait.getReturnInfo();
assertTrue("Unable to get address", addr != null);
- if (addr != null) {
- assertTrue("Received wrong address of " + addr.toString() + " instead of (" + actualAddrStr + ", "
- + actualAddrSize + ")", addressesEqual(addr, actualAddrStr, actualAddrSize));
- }
+ assertTrue("Received wrong address of " + addr.toString() + " instead of (" + actualAddrStr + ", "
+ + actualAddrSize + ")", addressesEqual(addr, actualAddrStr, actualAddrSize));
}
private void doTestChildren(IExpressionDMContext exprDMC) throws Throwable {
@@ -3320,10 +3305,8 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
* This test verifies that we can cast to a type and then revert.
*/
@Test
- @Ignore
public void testCastToType() throws Throwable {
- SyncUtil.runToLocation("testCasting");
- MIStoppedEvent stoppedEvent = SyncUtil.step(3, StepType.STEP_OVER);
+ MIStoppedEvent stoppedEvent = runToTag("testCasting_init");
IFrameDMContext frameDmc = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
IExpressionDMContext exprDmc = SyncUtil.createExpression(frameDmc, "int_ptr");
@@ -3341,7 +3324,7 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
// get child and its value
final IExpressionDMContext[] children = getChildren(exprDmc, new String[] { "*int_ptr" });
- Query<String> query = new Query<String>() {
+ Query<String> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<String> rm) {
fExpService.getFormattedExpressionValue(
@@ -3360,7 +3343,7 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
assertEquals("65", value);
final IExpressionDMContext[] castChildren = getChildren(castExprDmc, new String[] { "*((char*)(int_ptr))" });
- query = new Query<String>() {
+ query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<String> rm) {
fExpService.getFormattedExpressionValue(
@@ -3385,10 +3368,8 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
* This test verifies that we can display as array and then revert.
*/
@Test
- @Ignore
public void testDisplayAsArray() throws Throwable {
- SyncUtil.runToLocation("testCasting");
- MIStoppedEvent stoppedEvent = SyncUtil.step(3, StepType.STEP_OVER);
+ MIStoppedEvent stoppedEvent = runToTag("testCasting_init");
IFrameDMContext frameDmc = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
IExpressionDMContext exprDmc = SyncUtil.createExpression(frameDmc, "int_ptr");
@@ -3409,7 +3390,7 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
String[] expectedValues = new String[] { "1094861636", "1162233672" };
for (int i = 0; i < children.length; i++) {
final IExpressionDMContext child = children[i];
- Query<String> query = new Query<String>() {
+ Query<String> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<String> rm) {
fExpService.getFormattedExpressionValue(
@@ -3437,10 +3418,8 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
* and then revert.
*/
@Test
- @Ignore
public void testDisplayAsArrayAndCastToType() throws Throwable {
- SyncUtil.runToLocation("testCasting");
- MIStoppedEvent stoppedEvent = SyncUtil.step(3, StepType.STEP_OVER);
+ MIStoppedEvent stoppedEvent = runToTag("testCasting_init");
IFrameDMContext frameDmc = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
IExpressionDMContext exprDmc = SyncUtil.createExpression(frameDmc, "int_ptr");
@@ -3467,7 +3446,7 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
getExpressionType(child, "char");
- Query<String> query = new Query<String>() {
+ Query<String> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<String> rm) {
fExpService.getFormattedExpressionValue(
@@ -3524,7 +3503,7 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
getExpressionType(child, "char");
- Query<String> query = new Query<String>() {
+ Query<String> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<String> rm) {
fExpService.getFormattedExpressionValue(
@@ -3590,7 +3569,7 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
final IExpressionDMContext child = castedChildren[i];
getExpressionType(child, "char");
- Query<String> query = new Query<String>() {
+ Query<String> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<String> rm) {
fExpService.getFormattedExpressionValue(
@@ -3662,7 +3641,7 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
final IExpressionDMContext child = castedChildren[i];
getExpressionType(child, "int");
- Query<String> query = new Query<String>() {
+ Query<String> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<String> rm) {
fExpService.getFormattedExpressionValue(
@@ -3732,7 +3711,7 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
final IExpressionDMContext child = castedChildren[i];
getExpressionType(child, "char");
- Query<String> query = new Query<String>() {
+ Query<String> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<String> rm) {
fExpService.getFormattedExpressionValue(
@@ -3782,7 +3761,7 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
// Now check how the return value will be displayed to the user
final IExpressionDMContext returnExprDmc = SyncUtil.createExpression(frameDmc, "$2");
- Query<IExpressionDMData> query = new Query<IExpressionDMData>() {
+ Query<IExpressionDMData> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<IExpressionDMData> rm) {
fExpService.getExpressionData(returnExprDmc, rm);
@@ -3832,7 +3811,7 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
// Now check how the return value will be displayed to the user
final IExpressionDMContext returnExprDmc = SyncUtil.createExpression(frameDmc, "$2");
- Query<IExpressionDMData> query = new Query<IExpressionDMData>() {
+ Query<IExpressionDMData> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<IExpressionDMData> rm) {
fExpService.getExpressionData(returnExprDmc, rm);
@@ -3893,7 +3872,7 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
// Fetch the child directly
final IExpressionDMContext childDmc = SyncUtil.createExpression(frameDmc, CHILD_EXPR);
- Query<String> query = new Query<String>() {
+ Query<String> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<String> rm) {
fExpService.getFormattedExpressionValue(
@@ -3913,7 +3892,7 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
// Now fetch the child through its parent
final IExpressionDMContext parentDmc = SyncUtil.createExpression(frameDmc, PARENT_EXPR);
- query = new Query<String>() {
+ query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<String> rm) {
fExpService.getSubExpressions(parentDmc, new ImmediateDataRequestMonitor<IExpressionDMContext[]>(rm) {
@@ -3978,7 +3957,7 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
// First fetch the child through its parent
final IExpressionDMContext parentDmc = SyncUtil.createExpression(frameDmc, PARENT_EXPR);
- Query<String> query = new Query<String>() {
+ Query<String> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<String> rm) {
fExpService.getSubExpressions(parentDmc, new ImmediateDataRequestMonitor<IExpressionDMContext[]>(rm) {
@@ -4026,7 +4005,7 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
// Now access the child directly
final IExpressionDMContext childDmc = SyncUtil.createExpression(frameDmc, CHILD_EXPR);
- query = new Query<String>() {
+ query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<String> rm) {
fExpService.getFormattedExpressionValue(
@@ -4046,7 +4025,7 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
}
protected void assertChildrenCount(final IExpressionDMContext parentDmc, final int expectedCount) throws Throwable {
- Query<Integer> query = new Query<Integer>() {
+ Query<Integer> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Integer> rm) {
@@ -4063,7 +4042,7 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
protected String getExpressionType(final IExpressionDMContext exprDmc, final String expectedType) throws Throwable {
- Query<String> query = new Query<String>() {
+ Query<String> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<String> rm) {
fExpService.getExpressionData(exprDmc, new ImmediateDataRequestMonitor<IExpressionDMData>(rm) {
@@ -4211,11 +4190,9 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
* 7.5.
*/
@Test
- @Ignore
public void testRTTI_7_5() throws Throwable {
assumeGdbVersionAtLeast(ITestConstants.SUFFIX_GDB_7_5);
- SyncUtil.runToLocation("testRTTI");
- MIStoppedEvent stoppedEvent = SyncUtil.step(3, StepType.STEP_OVER);
+ MIStoppedEvent stoppedEvent = runToTag("testRTTI_tag1");
IFrameDMContext frameDmc = SyncUtil.getStackFrame(stoppedEvent.getDMContext(), 0);
// The expression we will follow as it changes types: derived.ptr
@@ -4231,7 +4208,7 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
getChildren(exprDmc, expectedValues);
// Make the type of our expression change
- SyncUtil.step(1, StepType.STEP_OVER);
+ runToTag("testRTTI_tag2");
// Now, the expression should be type Derived
getExpressionType(exprDmc, "Derived *");
assertChildrenCount(exprDmc, 5);
@@ -4245,7 +4222,7 @@ public class MIExpressionsTest extends BaseParametrizedTestCase {
getChildren(exprDmc, expectedValues);
// Make the type of our expression change
- SyncUtil.step(1, StepType.STEP_OVER);
+ runToTag("testRTTI_tag3");
// Now, the expression should be type OtherDerived
getExpressionType(exprDmc, "OtherDerived *");
assertChildrenCount(exprDmc, 4);
diff --git a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/MIMemoryTest.java b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/MIMemoryTest.java
index dce41175a84..0ba82236d66 100644
--- a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/MIMemoryTest.java
+++ b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/MIMemoryTest.java
@@ -138,7 +138,6 @@ public class MIMemoryTest extends BaseParametrizedTestCase {
@Override
public void doAfterTest() throws Exception {
- super.doAfterTest();
// Clear the references (not strictly necessary)
if (fSession != null)
fSession.getExecutor().submit(() -> fSession.removeServiceEventListener(MIMemoryTest.this)).get();
@@ -150,6 +149,7 @@ public class MIMemoryTest extends BaseParametrizedTestCase {
fServicesTracker.dispose();
fServicesTracker = null;
clearEventCounters();
+ super.doAfterTest();
}
// ========================================================================
diff --git a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/MIModifiedServicesTest.java b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/MIModifiedServicesTest.java
index 57da9731567..6de4919a388 100644
--- a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/MIModifiedServicesTest.java
+++ b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/MIModifiedServicesTest.java
@@ -104,7 +104,7 @@ public class MIModifiedServicesTest extends BaseParametrizedTestCase {
@Override
public void doBeforeTest() throws Exception {
- removeTeminatedLaunchesBeforeTest();
+ teminateAndRemoveLaunches();
setLaunchAttributes();
// Can't run the launch right away because each test needs to first set some
@@ -133,42 +133,36 @@ public class MIModifiedServicesTest extends BaseParametrizedTestCase {
// that is relative to the working directory.
File file = new File(EXEC_PATH + EXEC_NAME);
- FileInputStream fis = null;
- try {
- fis = new FileInputStream(file);
- } catch (FileNotFoundException e) {
- Assert.fail(e.getLocalizedMessage());
- return; // needed to avoid warning at fis usage below
- }
-
- final String MATCH = "cygwin1.dll";
- final int MATCH_LEN = MATCH.length();
- int i = 0;
- int ch = 0;
- while (true) {
- try {
- ch = fis.read();
- } catch (IOException e) {
- Assert.fail(
- "Problem inspecting file to see if it's a cygwin executable : " + e.getLocalizedMessage());
- }
- if (ch == -1) { // EOF
- break;
- }
- if (ch == MATCH.charAt(i)) {
- if (i == MATCH_LEN - 1) {
- break; // found it!
+ try (FileInputStream fis = new FileInputStream(file);) {
+
+ final String MATCH = "cygwin1.dll";
+ final int MATCH_LEN = MATCH.length();
+ int i = 0;
+ int ch = 0;
+ while (true) {
+ try {
+ ch = fis.read();
+ } catch (IOException e) {
+ Assert.fail("Problem inspecting file to see if it's a cygwin executable : "
+ + e.getLocalizedMessage());
+ }
+ if (ch == -1) { // EOF
+ break;
+ }
+ if (ch == MATCH.charAt(i)) {
+ if (i == MATCH_LEN - 1) {
+ break; // found it!
+ }
+ i++;
+ } else {
+ i = 0;
}
- i++;
- } else {
- i = 0;
- }
- }
- if (fis != null) {
- try {
- fis.close();
- } catch (IOException e) {
}
+ } catch (FileNotFoundException e) {
+ Assert.fail(e.getLocalizedMessage());
+ return; // needed to avoid warning at fis usage
+ } catch (IOException e) {
+ //ignore
}
}
}
@@ -185,7 +179,7 @@ public class MIModifiedServicesTest extends BaseParametrizedTestCase {
final DsfSession session = getGDBLaunch().getSession();
- Query<Void> query = new Query<Void>() {
+ Query<Void> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Void> rm) {
DsfServicesTracker servicesTracker = new DsfServicesTracker(TestsPlugin.getBundleContext(),
@@ -227,7 +221,7 @@ public class MIModifiedServicesTest extends BaseParametrizedTestCase {
final ServiceEventWaitor<IResumedDMEvent> resumedWaitor = new ServiceEventWaitor<>(getGDBLaunch().getSession(),
IResumedDMEvent.class);
- Query<Void> query = new Query<Void>() {
+ Query<Void> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Void> rm) {
fRunCtrl.resume(fContainerDmc, rm);
@@ -245,7 +239,7 @@ public class MIModifiedServicesTest extends BaseParametrizedTestCase {
return;
}
- Query<Boolean> querySuspend = new Query<Boolean>() {
+ Query<Boolean> querySuspend = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Boolean> rm) {
rm.done(fRunCtrl.isSuspended(fContainerDmc));
@@ -271,7 +265,7 @@ public class MIModifiedServicesTest extends BaseParametrizedTestCase {
ServiceEventWaitor<ISuspendedDMEvent> suspendedEventWaitor = new ServiceEventWaitor<>(
getGDBLaunch().getSession(), ISuspendedDMEvent.class);
- Query<MIInfo> requestSuspend = new Query<MIInfo>() {
+ Query<MIInfo> requestSuspend = new Query<>() {
@Override
protected void execute(DataRequestMonitor<MIInfo> rm) {
fRunCtrl.suspend(fThreadExecDmc, rm);
@@ -285,7 +279,7 @@ public class MIModifiedServicesTest extends BaseParametrizedTestCase {
suspendedEventWaitor.waitForEvent(TestsPlugin.massageTimeout(2000));
// Double check that the target is in the suspended state
- Query<Boolean> querySuspend = new Query<Boolean>() {
+ Query<Boolean> querySuspend = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Boolean> rm) {
rm.done(fRunCtrl.isSuspended(fContainerDmc));
diff --git a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/MIRegistersTest.java b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/MIRegistersTest.java
index 42794ba2462..8d4abc59083 100644
--- a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/MIRegistersTest.java
+++ b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/MIRegistersTest.java
@@ -133,11 +133,10 @@ public class MIRegistersTest extends BaseParametrizedTestCase {
@Override
public void doAfterTest() throws Exception {
- super.doAfterTest();
-
if (fServicesTracker != null)
fServicesTracker.dispose();
fRegService = null;
+ super.doAfterTest();
}
/*
@@ -161,7 +160,7 @@ public class MIRegistersTest extends BaseParametrizedTestCase {
*/
private IRegisterDMContext[] getAllRegisters(final IFrameDMContext frameDmc) throws Throwable {
- Query<IRegisterDMContext[]> queryRegisters = new Query<IRegisterDMContext[]>() {
+ Query<IRegisterDMContext[]> queryRegisters = new Query<>() {
@Override
protected void execute(DataRequestMonitor<IRegisterDMContext[]> rm) {
fRegService.getRegisters(new CompositeDMContext(new IDMContext[] { fCompositeDmc, frameDmc }), rm);
@@ -182,7 +181,7 @@ public class MIRegistersTest extends BaseParametrizedTestCase {
*/
private IRegisterDMContext[] getRegisters(final IDMContext dmc) throws Throwable {
- Query<IRegisterDMContext[]> queryRegistersDmc = new Query<IRegisterDMContext[]>() {
+ Query<IRegisterDMContext[]> queryRegistersDmc = new Query<>() {
@Override
protected void execute(DataRequestMonitor<IRegisterDMContext[]> rm) {
fRegService.getRegisters(dmc, rm);
@@ -246,7 +245,7 @@ public class MIRegistersTest extends BaseParametrizedTestCase {
private IRegisterDMData[] getRegistersData(final IRegisterDMContext[] regDMCs)
throws InterruptedException, ExecutionException {
- Query<IRegisterDMData[]> query = new Query<IRegisterDMData[]>() {
+ Query<IRegisterDMData[]> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<IRegisterDMData[]> rm) {
final IRegisterDMData[] datas = new IRegisterDMData[regDMCs.length];
@@ -283,7 +282,7 @@ public class MIRegistersTest extends BaseParametrizedTestCase {
final FormattedValueDMContext valueDmc = fRegService.getFormattedValueContext(registerDmc, format);
- Query<FormattedValueDMData> queryFormattedData = new Query<FormattedValueDMData>() {
+ Query<FormattedValueDMData> queryFormattedData = new Query<>() {
@Override
protected void execute(DataRequestMonitor<FormattedValueDMData> rm) {
fRegService.getFormattedExpressionValue(valueDmc, rm);
@@ -331,7 +330,7 @@ public class MIRegistersTest extends BaseParametrizedTestCase {
final IContainerDMContext containerDmc = DMContexts.getAncestorOfType(stoppedEvent.getDMContext(),
IContainerDMContext.class);
- Query<IExecutionDMContext[]> queryExecutionContexts = new Query<IExecutionDMContext[]>() {
+ Query<IExecutionDMContext[]> queryExecutionContexts = new Query<>() {
@Override
protected void execute(DataRequestMonitor<IExecutionDMContext[]> rm) {
fRunControl.getExecutionContexts(containerDmc, rm);
@@ -394,7 +393,7 @@ public class MIRegistersTest extends BaseParametrizedTestCase {
private void writeRegister(final IRegisterDMContext registerDmc, final String regValue, final String formatId)
throws Throwable {
- Query<Object> queryAction = new Query<Object>() {
+ Query<Object> queryAction = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Object> rm) {
fRegService.writeRegister(registerDmc, regValue, formatId, rm);
@@ -905,7 +904,7 @@ public class MIRegistersTest extends BaseParametrizedTestCase {
*/
private IRegisterGroupDMContext[] getRegisterGroups() throws Throwable {
- Query<IRegisterGroupDMContext[]> queryGroupsCtx = new Query<IRegisterGroupDMContext[]>() {
+ Query<IRegisterGroupDMContext[]> queryGroupsCtx = new Query<>() {
@Override
protected void execute(DataRequestMonitor<IRegisterGroupDMContext[]> rm) {
fRegService.getRegisterGroups(fCompositeDmc, rm);
@@ -936,7 +935,7 @@ public class MIRegistersTest extends BaseParametrizedTestCase {
}
private boolean canAddRegisterGroup(final IDMContext context) throws Throwable {
- Query<Boolean> queryAction = new Query<Boolean>() {
+ Query<Boolean> queryAction = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Boolean> rm) {
fRegService.canAddRegisterGroup(context, rm);
@@ -948,7 +947,7 @@ public class MIRegistersTest extends BaseParametrizedTestCase {
}
private boolean canEditRegisterGroup(final IRegisterGroupDMContext context) throws Throwable {
- Query<Boolean> queryAction = new Query<Boolean>() {
+ Query<Boolean> queryAction = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Boolean> rm) {
fRegService.canEditRegisterGroup(context, rm);
@@ -960,7 +959,7 @@ public class MIRegistersTest extends BaseParametrizedTestCase {
}
private boolean canRemoveRegisterGroups(final IRegisterGroupDMContext[] groupsContext) throws Throwable {
- Query<Boolean> queryAction = new Query<Boolean>() {
+ Query<Boolean> queryAction = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Boolean> rm) {
fRegService.canRemoveRegisterGroups(groupsContext, rm);
@@ -978,7 +977,7 @@ public class MIRegistersTest extends BaseParametrizedTestCase {
return;
}
- Query<Object> queryAction = new Query<Object>() {
+ Query<Object> queryAction = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Object> rm) {
IContainerDMContext contDmc = DMContexts.getAncestorOfType(regIndexes[0], IContainerDMContext.class);
@@ -993,7 +992,7 @@ public class MIRegistersTest extends BaseParametrizedTestCase {
private void editGroup(final IRegisterGroupDMContext group, final String newGroupName,
final IRegisterDMContext[] regIndexes) throws Throwable {
- Query<Object> queryAction = new Query<Object>() {
+ Query<Object> queryAction = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Object> rm) {
fRegService.editRegisterGroup(group, newGroupName, regIndexes, rm);
@@ -1006,7 +1005,7 @@ public class MIRegistersTest extends BaseParametrizedTestCase {
private void removeGroups(final IRegisterGroupDMContext[] groups) throws Throwable {
- Query<Object> queryAction = new Query<Object>() {
+ Query<Object> queryAction = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Object> rm) {
fRegService.removeRegisterGroups(groups, rm);
@@ -1018,7 +1017,7 @@ public class MIRegistersTest extends BaseParametrizedTestCase {
}
private boolean canRestoreDefaultGroups() throws Throwable {
- Query<Boolean> queryCanRestore = new Query<Boolean>() {
+ Query<Boolean> queryCanRestore = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Boolean> rm) {
@@ -1035,7 +1034,7 @@ public class MIRegistersTest extends BaseParametrizedTestCase {
}
private void restoreDefaultGroups() throws Throwable {
- Query<Object> queryRestore = new Query<Object>() {
+ Query<Object> queryRestore = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Object> rm) {
@@ -1053,7 +1052,7 @@ public class MIRegistersTest extends BaseParametrizedTestCase {
private void resetRegService() throws Throwable {
assert (fRegService instanceof GDBRegisters);
final GDBRegisters regManager = (GDBRegisters) fRegService;
- Query<Object> queryReset = new Query<Object>() {
+ Query<Object> queryReset = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Object> rm) {
@@ -1070,7 +1069,7 @@ public class MIRegistersTest extends BaseParametrizedTestCase {
private void saveRegGroups() throws Throwable {
assert (fRegService instanceof GDBRegisters);
final GDBRegisters regManager = (GDBRegisters) fRegService;
- Query<Object> querySave = new Query<Object>() {
+ Query<Object> querySave = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Object> rm) {
@@ -1086,7 +1085,7 @@ public class MIRegistersTest extends BaseParametrizedTestCase {
}
private IRegisterDMData getRegisterData(final IRegisterDMContext registerDmc) throws Throwable {
- Query<IRegisterDMData> registerDataQ = new Query<IRegisterDMData>() {
+ Query<IRegisterDMData> registerDataQ = new Query<>() {
@Override
protected void execute(DataRequestMonitor<IRegisterDMData> rm) {
fRegService.getRegisterData(registerDmc, rm);
@@ -1101,7 +1100,7 @@ public class MIRegistersTest extends BaseParametrizedTestCase {
}
private FormattedValueDMData getRegisterValue(final IRegisterDMContext registerDmc) throws Throwable {
- Query<FormattedValueDMData> registerValueQ = new Query<FormattedValueDMData>() {
+ Query<FormattedValueDMData> registerValueQ = new Query<>() {
@Override
protected void execute(DataRequestMonitor<FormattedValueDMData> rm) {
FormattedValueDMContext valueDmc = new FormattedValueDMContext(fRegService, registerDmc,
@@ -1118,7 +1117,7 @@ public class MIRegistersTest extends BaseParametrizedTestCase {
}
private IRegisterGroupDMData getRegisterGroupData(final IRegisterGroupDMContext groupDmc) throws Throwable {
- Query<IRegisterGroupDMData> groupDataQ = new Query<IRegisterGroupDMData>() {
+ Query<IRegisterGroupDMData> groupDataQ = new Query<>() {
@Override
protected void execute(DataRequestMonitor<IRegisterGroupDMData> rm) {
fRegService.getRegisterGroupData(groupDmc, rm);
@@ -1133,7 +1132,7 @@ public class MIRegistersTest extends BaseParametrizedTestCase {
}
private IRegisterGroupDMData[] getRegisterGroupsData(final IDMContext dmc) throws Throwable {
- Query<IRegisterGroupDMData[]> groupDataQ = new Query<IRegisterGroupDMData[]>() {
+ Query<IRegisterGroupDMData[]> groupDataQ = new Query<>() {
@Override
protected void execute(DataRequestMonitor<IRegisterGroupDMData[]> rm) {
getRegisterGroupsData(dmc, rm);
diff --git a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/MIRunControlReverseTest.java b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/MIRunControlReverseTest.java
index 75fe7a60fd2..1ca26698f30 100644
--- a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/MIRunControlReverseTest.java
+++ b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/MIRunControlReverseTest.java
@@ -18,14 +18,12 @@ import java.util.concurrent.TimeoutException;
import org.eclipse.cdt.debug.core.ICDTLaunchConfigurationConstants;
import org.eclipse.cdt.dsf.concurrent.DataRequestMonitor;
-import org.eclipse.cdt.dsf.concurrent.ImmediateRequestMonitor;
import org.eclipse.cdt.dsf.concurrent.Query;
import org.eclipse.cdt.dsf.debug.service.IExpressions;
import org.eclipse.cdt.dsf.debug.service.IExpressions.IExpressionDMContext;
import org.eclipse.cdt.dsf.debug.service.IFormattedValues;
import org.eclipse.cdt.dsf.debug.service.IRunControl.StepType;
import org.eclipse.cdt.dsf.debug.service.command.IEventListener;
-import org.eclipse.cdt.dsf.gdb.service.IReverseRunControl;
import org.eclipse.cdt.dsf.gdb.service.command.IGDBControl;
import org.eclipse.cdt.dsf.mi.service.IMIRunControl;
import org.eclipse.cdt.dsf.mi.service.command.events.MIStoppedEvent;
@@ -76,11 +74,10 @@ public class MIRunControlReverseTest extends BaseParametrizedTestCase {
@Override
public void doAfterTest() throws Exception {
- super.doAfterTest();
-
if (fServicesTracker != null) {
fServicesTracker.dispose();
}
+ super.doAfterTest();
}
@Override
@@ -102,25 +99,7 @@ public class MIRunControlReverseTest extends BaseParametrizedTestCase {
@Test
public void testQueryHandling() throws Throwable {
SyncUtil.runToLocation("testLocals");
-
- assertTrue("Reverse debugging is not supported", fRunCtrl instanceof IReverseRunControl);
- final IReverseRunControl reverseService = (IReverseRunControl) fRunCtrl;
-
- Query<Boolean> query = new Query<Boolean>() {
- @Override
- protected void execute(final DataRequestMonitor<Boolean> rm) {
- reverseService.enableReverseMode(fGDBCtrl.getContext(), true, new ImmediateRequestMonitor(rm) {
- @Override
- protected void handleSuccess() {
- reverseService.isReverseModeEnabled(fGDBCtrl.getContext(), rm);
- }
- });
- }
- };
-
- fSession.getExecutor().execute(query);
- Boolean enabled = query.get(TestsPlugin.massageTimeout(500), TimeUnit.MILLISECONDS);
- assertTrue("Reverse debugging should be enabled", enabled);
+ SyncUtil.enableReverseMode();
// Step forward a couple of times
SyncUtil.step(2, StepType.STEP_OVER);
@@ -150,7 +129,7 @@ public class MIRunControlReverseTest extends BaseParametrizedTestCase {
String newValue = "8989";
// Now modify a variable to trigger the query as we are modifying a recorded value
- Query<Void> writeQuery = new Query<Void>() {
+ Query<Void> writeQuery = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<Void> rm) {
fExpressions.writeExpression(expr, newValue, IFormattedValues.DECIMAL_FORMAT, rm);
diff --git a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/MIRunControlTargetAvailableTest.java b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/MIRunControlTargetAvailableTest.java
index 0ab15521303..d2056279995 100644
--- a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/MIRunControlTargetAvailableTest.java
+++ b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/MIRunControlTargetAvailableTest.java
@@ -78,10 +78,9 @@ public class MIRunControlTargetAvailableTest extends BaseParametrizedTestCase {
@Override
public void doAfterTest() throws Exception {
- super.doAfterTest();
-
if (fServicesTracker != null)
fServicesTracker.dispose();
+ super.doAfterTest();
}
@Override
@@ -113,7 +112,7 @@ public class MIRunControlTargetAvailableTest extends BaseParametrizedTestCase {
}
} };
- Query<Boolean> query = new Query<Boolean>() {
+ Query<Boolean> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Boolean> rm) {
fRunCtrl.executeWithTargetAvailable(fContainerDmc, steps, rm);
@@ -161,7 +160,7 @@ public class MIRunControlTargetAvailableTest extends BaseParametrizedTestCase {
SyncUtil.resume();
- Query<Boolean> query = new Query<Boolean>() {
+ Query<Boolean> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Boolean> rm) {
fRunCtrl.executeWithTargetAvailable(fContainerDmc, steps, rm);
@@ -220,7 +219,7 @@ public class MIRunControlTargetAvailableTest extends BaseParametrizedTestCase {
}
} };
- Query<Boolean> query = new Query<Boolean>() {
+ Query<Boolean> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Boolean> rm) {
fRunCtrl.executeWithTargetAvailable(fContainerDmc, steps, rm);
@@ -289,7 +288,7 @@ public class MIRunControlTargetAvailableTest extends BaseParametrizedTestCase {
}
} };
- Query<Boolean> query = new Query<Boolean>() {
+ Query<Boolean> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Boolean> rm) {
fRunCtrl.executeWithTargetAvailable(fContainerDmc, steps, rm);
@@ -353,7 +352,7 @@ public class MIRunControlTargetAvailableTest extends BaseParametrizedTestCase {
SyncUtil.resume();
- Query<Boolean> query = new Query<Boolean>() {
+ Query<Boolean> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Boolean> rm) {
fRunCtrl.executeWithTargetAvailable(fContainerDmc, steps, rm);
@@ -426,7 +425,7 @@ public class MIRunControlTargetAvailableTest extends BaseParametrizedTestCase {
SyncUtil.resume();
- Query<Boolean> query = new Query<Boolean>() {
+ Query<Boolean> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Boolean> rm) {
fRunCtrl.executeWithTargetAvailable(fContainerDmc, steps, rm);
@@ -476,7 +475,7 @@ public class MIRunControlTargetAvailableTest extends BaseParametrizedTestCase {
} };
}
- Query<Boolean> query = new Query<Boolean>() {
+ Query<Boolean> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<Boolean> rm) {
CountingRequestMonitor crm = new CountingRequestMonitor(fGDBCtrl.getExecutor(), null) {
@@ -543,7 +542,7 @@ public class MIRunControlTargetAvailableTest extends BaseParametrizedTestCase {
SyncUtil.resume();
- Query<Boolean> query = new Query<Boolean>() {
+ Query<Boolean> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<Boolean> rm) {
CountingRequestMonitor crm = new CountingRequestMonitor(fGDBCtrl.getExecutor(), null) {
@@ -618,7 +617,7 @@ public class MIRunControlTargetAvailableTest extends BaseParametrizedTestCase {
}
} };
- Query<Boolean> query = new Query<Boolean>() {
+ Query<Boolean> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<Boolean> rm) {
fRunCtrl.executeWithTargetAvailable(fContainerDmc, steps, rm);
@@ -686,7 +685,7 @@ public class MIRunControlTargetAvailableTest extends BaseParametrizedTestCase {
SyncUtil.resume();
- Query<Boolean> query = new Query<Boolean>() {
+ Query<Boolean> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<Boolean> rm) {
fRunCtrl.executeWithTargetAvailable(fContainerDmc, steps, rm);
@@ -747,7 +746,7 @@ public class MIRunControlTargetAvailableTest extends BaseParametrizedTestCase {
}
} };
- Query<Boolean> query = new Query<Boolean>() {
+ Query<Boolean> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<Boolean> rm) {
fRunCtrl.executeWithTargetAvailable(fContainerDmc, steps, rm);
@@ -813,7 +812,7 @@ public class MIRunControlTargetAvailableTest extends BaseParametrizedTestCase {
SyncUtil.resume();
- Query<Boolean> query = new Query<Boolean>() {
+ Query<Boolean> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<Boolean> rm) {
fRunCtrl.executeWithTargetAvailable(fContainerDmc, steps, rm);
diff --git a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/MIRunControlTest.java b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/MIRunControlTest.java
index 3cc2906ead5..4e0b1fc8dff 100644
--- a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/MIRunControlTest.java
+++ b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/MIRunControlTest.java
@@ -128,10 +128,9 @@ public class MIRunControlTest extends BaseParametrizedTestCase {
@Override
public void doAfterTest() throws Exception {
- super.doAfterTest();
-
if (fServicesTracker != null)
fServicesTracker.dispose();
+ super.doAfterTest();
}
@Override
@@ -152,43 +151,36 @@ public class MIRunControlTest extends BaseParametrizedTestCase {
// that is relative to the working directory.
File file = new File(EXEC_PATH + EXEC_NAME);
- FileInputStream fis = null;
- try {
- fis = new FileInputStream(file);
+ try (FileInputStream fis = new FileInputStream(file);) {
+ final String MATCH = "cygwin1.dll";
+ final int MATCH_LEN = MATCH.length();
+ int i = 0;
+ int ch = 0;
+ while (true) {
+ try {
+ ch = fis.read();
+ } catch (IOException e) {
+ Assert.fail("Problem inspecting file to see if it's a cygwin executable : "
+ + e.getLocalizedMessage());
+ }
+ if (ch == -1) { // EOF
+ break;
+ }
+ if (ch == MATCH.charAt(i)) {
+ if (i == MATCH_LEN - 1) {
+ sProgramIsCygwin = true;
+ break; // found it!
+ }
+ i++;
+ } else {
+ i = 0;
+ }
+ }
} catch (FileNotFoundException e) {
Assert.fail(e.getLocalizedMessage());
return; // needed to avoid warning at fis usage below
- }
-
- final String MATCH = "cygwin1.dll";
- final int MATCH_LEN = MATCH.length();
- int i = 0;
- int ch = 0;
- while (true) {
- try {
- ch = fis.read();
- } catch (IOException e) {
- Assert.fail(
- "Problem inspecting file to see if it's a cygwin executable : " + e.getLocalizedMessage());
- }
- if (ch == -1) { // EOF
- break;
- }
- if (ch == MATCH.charAt(i)) {
- if (i == MATCH_LEN - 1) {
- sProgramIsCygwin = true;
- break; // found it!
- }
- i++;
- } else {
- i = 0;
- }
- }
- if (fis != null) {
- try {
- fis.close();
- } catch (IOException e) {
- }
+ } catch (IOException e1) {
+ //ignore
}
}
}
@@ -202,8 +194,7 @@ public class MIRunControlTest extends BaseParametrizedTestCase {
/*
* Create a request monitor
*/
- final DataRequestMonitor<IExecutionDMContext[]> rm = new DataRequestMonitor<IExecutionDMContext[]>(
- fRunCtrl.getExecutor(), null) {
+ final DataRequestMonitor<IExecutionDMContext[]> rm = new DataRequestMonitor<>(fRunCtrl.getExecutor(), null) {
@Override
protected void handleCompleted() {
if (isSuccess()) {
@@ -257,7 +248,7 @@ public class MIRunControlTest extends BaseParametrizedTestCase {
/*
* Create a request monitor
*/
- final DataRequestMonitor<IExecutionDMContext[]> rmExecutionCtxts = new DataRequestMonitor<IExecutionDMContext[]>(
+ final DataRequestMonitor<IExecutionDMContext[]> rmExecutionCtxts = new DataRequestMonitor<>(
fRunCtrl.getExecutor(), null) {
@Override
protected void handleCompleted() {
@@ -324,8 +315,7 @@ public class MIRunControlTest extends BaseParametrizedTestCase {
/*
* Create a request monitor
*/
- final DataRequestMonitor<IExecutionDMData> rm = new DataRequestMonitor<IExecutionDMData>(fRunCtrl.getExecutor(),
- null) {
+ final DataRequestMonitor<IExecutionDMData> rm = new DataRequestMonitor<>(fRunCtrl.getExecutor(), null) {
@Override
protected void handleCompleted() {
if (isSuccess()) {
@@ -373,8 +363,7 @@ public class MIRunControlTest extends BaseParametrizedTestCase {
*/
final MIStoppedEvent stoppedEvent = SyncUtil.step(StepType.STEP_OVER);
- final DataRequestMonitor<IExecutionDMData> rm = new DataRequestMonitor<IExecutionDMData>(fRunCtrl.getExecutor(),
- null) {
+ final DataRequestMonitor<IExecutionDMData> rm = new DataRequestMonitor<>(fRunCtrl.getExecutor(), null) {
@Override
protected void handleCompleted() {
if (isSuccess()) {
@@ -418,8 +407,7 @@ public class MIRunControlTest extends BaseParametrizedTestCase {
*/
final MIStoppedEvent stoppedEvent = SyncUtil.resumeUntilStopped();
- final DataRequestMonitor<IExecutionDMData> rm = new DataRequestMonitor<IExecutionDMData>(fRunCtrl.getExecutor(),
- null) {
+ final DataRequestMonitor<IExecutionDMData> rm = new DataRequestMonitor<>(fRunCtrl.getExecutor(), null) {
@Override
protected void handleCompleted() {
if (isSuccess()) {
@@ -459,8 +447,7 @@ public class MIRunControlTest extends BaseParametrizedTestCase {
*/
SyncUtil.resumeUntilStopped();
- final DataRequestMonitor<IExecutionDMData> rm = new DataRequestMonitor<IExecutionDMData>(fRunCtrl.getExecutor(),
- null) {
+ final DataRequestMonitor<IExecutionDMData> rm = new DataRequestMonitor<>(fRunCtrl.getExecutor(), null) {
@Override
protected void handleCompleted() {
if (isSuccess()) {
@@ -491,8 +478,7 @@ public class MIRunControlTest extends BaseParametrizedTestCase {
public void getExecutionContextsForInvalidContainerDMC() throws InterruptedException {
final AsyncCompletionWaitor wait = new AsyncCompletionWaitor();
- final DataRequestMonitor<IExecutionDMContext[]> rm = new DataRequestMonitor<IExecutionDMContext[]>(
- fRunCtrl.getExecutor(), null) {
+ final DataRequestMonitor<IExecutionDMContext[]> rm = new DataRequestMonitor<>(fRunCtrl.getExecutor(), null) {
@Override
protected void handleCompleted() {
if (isSuccess()) {
@@ -535,7 +521,7 @@ public class MIRunControlTest extends BaseParametrizedTestCase {
public void resume() throws InterruptedException, ExecutionException, TimeoutException {
final AsyncCompletionWaitor wait = new AsyncCompletionWaitor();
- final DataRequestMonitor<MIInfo> rm = new DataRequestMonitor<MIInfo>(fRunCtrl.getExecutor(), null) {
+ final DataRequestMonitor<MIInfo> rm = new DataRequestMonitor<>(fRunCtrl.getExecutor(), null) {
@Override
protected void handleCompleted() {
wait.waitFinished(getStatus());
@@ -576,7 +562,7 @@ public class MIRunControlTest extends BaseParametrizedTestCase {
public void resumeContainerContext() throws InterruptedException, ExecutionException, TimeoutException {
final AsyncCompletionWaitor wait = new AsyncCompletionWaitor();
- final DataRequestMonitor<MIInfo> rm = new DataRequestMonitor<MIInfo>(fRunCtrl.getExecutor(), null) {
+ final DataRequestMonitor<MIInfo> rm = new DataRequestMonitor<>(fRunCtrl.getExecutor(), null) {
@Override
protected void handleCompleted() {
wait.waitFinished(getStatus());
@@ -631,8 +617,10 @@ public class MIRunControlTest extends BaseParametrizedTestCase {
ServiceEventWaitor<ISuspendedDMEvent> suspendedEventWaitor = new ServiceEventWaitor<>(
getGDBLaunch().getSession(), ISuspendedDMEvent.class);
- fRunCtrl.getExecutor().submit(() -> fRunCtrl.runToLine(fThreadExecDmc, SOURCE_NAME,
- getLineForTag("LINE_MAIN_ALL_THREADS_STARTED"), true, new RequestMonitor(fRunCtrl.getExecutor(), null) {
+ int lineForTag = getLineForTag("LINE_MAIN_ALL_THREADS_STARTED");
+
+ fRunCtrl.getExecutor().submit(() -> fRunCtrl.runToLine(fThreadExecDmc, SOURCE_NAME, lineForTag, true,
+ new RequestMonitor(fRunCtrl.getExecutor(), null) {
@Override
protected void handleCompleted() {
wait.waitFinished(getStatus());
diff --git a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/OperationsWhileTargetIsRunningTest.java b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/OperationsWhileTargetIsRunningTest.java
index 1fc39f91c27..a9ddd50915b 100644
--- a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/OperationsWhileTargetIsRunningTest.java
+++ b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/OperationsWhileTargetIsRunningTest.java
@@ -87,14 +87,13 @@ public class OperationsWhileTargetIsRunningTest extends BaseParametrizedTestCase
@Override
public void doAfterTest() throws Exception {
- super.doAfterTest();
-
if (fServicesTracker != null)
fServicesTracker.dispose();
// Restore the different preferences we might have changed
IEclipsePreferences node = InstanceScope.INSTANCE.getNode(GdbPlugin.PLUGIN_ID);
node.putBoolean(IGdbDebugPreferenceConstants.PREF_AUTO_TERMINATE_GDB, fgAutoTerminate);
+ super.doAfterTest();
}
@Override
@@ -212,7 +211,7 @@ public class OperationsWhileTargetIsRunningTest extends BaseParametrizedTestCase
ServiceEventWaitor<IExitedDMEvent> exitedEventWaitor = new ServiceEventWaitor<>(getGDBLaunch().getSession(),
IExitedDMEvent.class);
- Query<Object> query = new Query<Object>() {
+ Query<Object> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<Object> rm) {
IProcessDMContext processDmc = DMContexts.getAncestorOfType(fContainerDmc, IProcessDMContext.class);
@@ -289,7 +288,7 @@ public class OperationsWhileTargetIsRunningTest extends BaseParametrizedTestCase
ServiceEventWaitor<IExitedDMEvent> exitedEventWaitor = new ServiceEventWaitor<>(getGDBLaunch().getSession(),
IExitedDMEvent.class);
- Query<Object> query = new Query<Object>() {
+ Query<Object> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<Object> rm) {
fProcesses.detachDebuggerFromProcess(fContainerDmc, rm);
diff --git a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/PostMortemCoreTest.java b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/PostMortemCoreTest.java
index 897fe8b1009..87aadfa86c3 100644
--- a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/PostMortemCoreTest.java
+++ b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/PostMortemCoreTest.java
@@ -74,7 +74,7 @@ public class PostMortemCoreTest extends BaseParametrizedTestCase {
@Override
public void doBeforeTest() throws Exception {
assumeLocalSession();
- removeTeminatedLaunchesBeforeTest();
+ teminateAndRemoveLaunches();
setLaunchAttributes();
// Can't run the launch right away because each test needs to first set some
// parameters. The individual tests will be responsible for starting the launch.
@@ -124,8 +124,6 @@ public class PostMortemCoreTest extends BaseParametrizedTestCase {
@Override
public void doAfterTest() throws Exception {
- super.doAfterTest();
-
if (fSession != null) {
fSession.getExecutor().submit(() -> fSession.removeServiceEventListener(PostMortemCoreTest.this)).get();
}
@@ -133,6 +131,8 @@ public class PostMortemCoreTest extends BaseParametrizedTestCase {
fExpService = null;
if (fServicesTracker != null)
fServicesTracker.dispose();
+
+ super.doAfterTest();
}
/**
@@ -360,7 +360,6 @@ public class PostMortemCoreTest extends BaseParametrizedTestCase {
* variables.
*/
@Test
- @Ignore
public void testLocalVariables() throws Throwable {
doLaunch();
@@ -397,7 +396,6 @@ public class PostMortemCoreTest extends BaseParametrizedTestCase {
}
@Test
- @Ignore
public void readMemoryArray() throws Throwable {
doLaunch();
@@ -470,7 +468,7 @@ public class PostMortemCoreTest extends BaseParametrizedTestCase {
final FormattedValueDMContext formattedValueDMC = SyncUtil.getFormattedValue(fExpService, expressionDMC,
IFormattedValues.HEX_FORMAT);
- Query<FormattedValueDMData> query = new Query<FormattedValueDMData>() {
+ Query<FormattedValueDMData> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<FormattedValueDMData> rm) {
fExpService.getFormattedExpressionValue(formattedValueDMC, rm);
diff --git a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/SourceLookupTest.java b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/SourceLookupTest.java
index c4bb8c8d648..ce39d3c8828 100644
--- a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/SourceLookupTest.java
+++ b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/SourceLookupTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2015, 2016 Kichwa Coders and others.
+ * Copyright (c) 2015, 2018 Kichwa Coders Ltd and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -54,6 +54,8 @@ import org.eclipse.cdt.dsf.debug.service.IStack.IFrameDMData;
import org.eclipse.cdt.dsf.debug.sourcelookup.DsfSourceLookupDirector;
import org.eclipse.cdt.dsf.gdb.launching.GdbLaunch;
import org.eclipse.cdt.dsf.gdb.launching.LaunchUtils;
+import org.eclipse.cdt.dsf.gdb.service.IDebugSourceFiles;
+import org.eclipse.cdt.dsf.gdb.service.IDebugSourceFiles.IDebugSourceFileInfo;
import org.eclipse.cdt.dsf.gdb.service.command.IGDBControl;
import org.eclipse.cdt.dsf.mi.service.command.CommandFactory;
import org.eclipse.cdt.dsf.mi.service.command.output.MIInfo;
@@ -213,7 +215,7 @@ public class SourceLookupTest extends BaseParametrizedTestCase {
@Override
public void doBeforeTest() throws Exception {
- removeTeminatedLaunchesBeforeTest();
+ teminateAndRemoveLaunches();
IBreakpointManager manager = DebugPlugin.getDefault().getBreakpointManager();
manager.addBreakpointListener(fBreakpointListener);
setExeNames();
@@ -227,11 +229,10 @@ public class SourceLookupTest extends BaseParametrizedTestCase {
*/
@Override
public void doAfterTest() throws Exception {
- super.doAfterTest();
-
removeAllPlatformBreakpoints();
IBreakpointManager manager = DebugPlugin.getDefault().getBreakpointManager();
manager.removeBreakpointListener(fBreakpointListener);
+ super.doAfterTest();
}
protected void doLaunch(String programName) throws Exception {
@@ -670,7 +671,7 @@ public class SourceLookupTest extends BaseParametrizedTestCase {
* Change directory to the binary (aka EXEC_PATH)
*/
protected void doCdToBinDir() throws Exception {
- Query<MIInfo> query = new Query<MIInfo>() {
+ Query<MIInfo> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<MIInfo> rm) {
fCommandControl.queueCommand(fCommandFactory.createMIEnvironmentCD(fCommandControl.getContext(),
@@ -910,7 +911,7 @@ public class SourceLookupTest extends BaseParametrizedTestCase {
sourceFinderMappingAC_ActiveLaunchHelper(withBackend);
// Terminate the launch, but don't remove it
- doAfterTest();
+ assertLaunchTerminates(true);
assertFinderFinds(EXEC_AC_NAME, new File(SOURCE_PATH, SOURCE_NAME).getAbsolutePath());
}
@@ -1157,4 +1158,58 @@ public class SourceLookupTest extends BaseParametrizedTestCase {
*/
waitUntil("Timeout waiting for launches to terminate", () -> launch1.isTerminated() && launch2.isTerminated());
}
+
+ /**
+ * Helper method that actually performs the test/assertions for
+ * {@link IDebugSourceFiles#getSources(IDMContext, DataRequestMonitor)} tests.
+ */
+ private void testGetSourcesListInner(String path) throws Throwable {
+ IDebugSourceFileInfo[] sources = SyncUtil.getSources(SyncUtil.getContainerContext());
+ String expectedPath = Paths.get(path, SOURCE_NAME).toString();
+ boolean anyMatch = Arrays.asList(sources).stream().anyMatch(source -> {
+ return source.getPath().equals(expectedPath);
+ });
+ assertTrue(anyMatch);
+ }
+
+ /**
+ * Test for {@link IDebugSourceFiles#getSources(IDMContext, DataRequestMonitor)}
+ * with source path substitution on. Therefore make sure there is an entry
+ * for the resolved source path of {@value #SOURCE_NAME}
+ */
+ private void testGetSourcesList(String execName) throws Throwable {
+ doMappingAndLaunch(execName, true);
+ testGetSourcesListInner(SOURCE_ABSPATH);
+ }
+
+ /**
+ * Test for {@link IDebugSourceFiles#getSources(IDMContext, DataRequestMonitor)}
+ * with no source path substitution on. Therefore make sure there is an entry
+ * for the build path of {@value #SOURCE_NAME}
+ */
+ @Test
+ public void testGetSourcesListNoSourceLookup() throws Throwable {
+ doLaunch(EXEC_PATH + EXEC_AC_NAME);
+ testGetSourcesListInner(BUILD_ABSPATH);
+ }
+
+ @Test
+ public void testGetSourcesListAC() throws Throwable {
+ testGetSourcesList(EXEC_AC_NAME);
+ }
+
+ @Test
+ public void testGetSourcesListAN() throws Throwable {
+ testGetSourcesList(EXEC_AN_NAME);
+ }
+
+ @Test
+ public void testGetSourcesListRC() throws Throwable {
+ testGetSourcesList(EXEC_RC_NAME);
+ }
+
+ @Test
+ public void testGetSourcesListRN() throws Throwable {
+ testGetSourcesList(EXEC_RN_NAME);
+ }
}
diff --git a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/StepIntoSelectionTest.java b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/StepIntoSelectionTest.java
index 39289660795..48d40e33b36 100644
--- a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/StepIntoSelectionTest.java
+++ b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/StepIntoSelectionTest.java
@@ -125,10 +125,9 @@ public class StepIntoSelectionTest extends BaseParametrizedTestCase {
@Override
public void doAfterTest() throws Exception {
- super.doAfterTest();
-
if (fServicesTracker != null)
fServicesTracker.dispose();
+ super.doAfterTest();
}
@Override
@@ -165,7 +164,7 @@ public class StepIntoSelectionTest extends BaseParametrizedTestCase {
private void checkGdbIsSuspended() throws Throwable {
final IContainerDMContext containerDmc = SyncUtil.getContainerContext();
- Query<Boolean> query = new Query<Boolean>() {
+ Query<Boolean> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Boolean> rm) {
rm.done(fRunCtrl.isSuspended(containerDmc));
@@ -185,7 +184,7 @@ public class StepIntoSelectionTest extends BaseParametrizedTestCase {
final int targetLine, final IFunctionDeclaration function, final boolean skipBreakPoints) throws Throwable {
ServiceEventWaitor<ISuspendedDMEvent> eventWaitor = new ServiceEventWaitor<>(fSession, ISuspendedDMEvent.class);
- Query<Object> query = new Query<Object>() {
+ Query<Object> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Object> rm) {
fRunCtrl.stepIntoSelection(exeContext, sourceName, targetLine, skipBreakPoints, function, rm);
@@ -205,7 +204,7 @@ public class StepIntoSelectionTest extends BaseParametrizedTestCase {
final int targetLine, final boolean skipBreakPoints) throws Throwable {
ServiceEventWaitor<ISuspendedDMEvent> eventWaitor = new ServiceEventWaitor<>(fSession, ISuspendedDMEvent.class);
- Query<Object> query = new Query<Object>() {
+ Query<Object> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Object> rm) {
fRunCtrl.runToLine(exeContext, sourceName, targetLine, skipBreakPoints, rm);
diff --git a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/SuiteGdb.java b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/SuiteGdb.java
index 76ebe71e9f3..c03ecd44b7b 100644
--- a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/SuiteGdb.java
+++ b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/SuiteGdb.java
@@ -47,7 +47,7 @@ import org.junit.runners.Suite;
GDBRemoteTracepointsTest.class, TraceFileTest.class, GDBConsoleSynchronizingTest.class, MIMemoryTest.class,
MIDisassemblyTest.class, GDBProcessesTest.class, PostMortemCoreTest.class, CommandTimeoutTest.class,
ThreadStackFrameSyncTest.class, CommandLineArgsTest.class, MIAsyncErrorProcessorTests.class
- /* Add your test class here */
+/* Add your test class here */
})
public class SuiteGdb {
diff --git a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/TraceFileTest.java b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/TraceFileTest.java
index 1ca93eaa7e6..d82d1ad47e4 100644
--- a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/TraceFileTest.java
+++ b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/TraceFileTest.java
@@ -93,7 +93,7 @@ public class TraceFileTest extends BaseParametrizedTestCase {
assumeRemoteSession();
resolveLineTagLocations(SOURCE_NAME, LINE_TAGS);
assumeGdbVersionAtLeast(ITestConstants.SUFFIX_GDB_7_4);
- removeTeminatedLaunchesBeforeTest();
+ teminateAndRemoveLaunches();
// Suppress settings of the launch attributes and launching.
// Each test sets its own launch attributes
}
@@ -125,7 +125,6 @@ public class TraceFileTest extends BaseParametrizedTestCase {
@Override
@After
public void doAfterTest() throws Exception {
- super.doAfterTest();
fBreakpointService = null;
fTraceService = null;
fBreakpointsDmc = null;
@@ -134,6 +133,7 @@ public class TraceFileTest extends BaseParametrizedTestCase {
fServicesTracker.dispose();
fServicesTracker = null;
}
+ super.doAfterTest();
}
/**
@@ -325,7 +325,7 @@ public class TraceFileTest extends BaseParametrizedTestCase {
|| getLineForTag("INCR_X") == tracepoint.getLineNumber());
String[] actionNames = ((String) tracepoint.getMarker()
.getAttribute(BreakpointActionManager.BREAKPOINT_ACTION_ATTRIBUTE))
- .split(TracepointActionManager.TRACEPOINT_ACTION_DELIMITER);
+ .split(TracepointActionManager.TRACEPOINT_ACTION_DELIMITER);
for (String name : actionNames) {
ITracepointAction a = tam.findAction(name);
assertNotNull(a);
diff --git a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/nonstop/GDBMultiNonStopRunControlTest.java b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/nonstop/GDBMultiNonStopRunControlTest.java
index e00b5aecc59..bc527a729ad 100644
--- a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/nonstop/GDBMultiNonStopRunControlTest.java
+++ b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/nonstop/GDBMultiNonStopRunControlTest.java
@@ -34,15 +34,12 @@ import org.eclipse.cdt.dsf.mi.service.command.events.MIStoppedEvent;
import org.eclipse.cdt.dsf.service.DsfServicesTracker;
import org.eclipse.cdt.dsf.service.DsfSession;
import org.eclipse.cdt.tests.dsf.gdb.framework.BaseParametrizedTestCase;
-import org.eclipse.cdt.tests.dsf.gdb.framework.Intermittent;
-import org.eclipse.cdt.tests.dsf.gdb.framework.IntermittentRule;
import org.eclipse.cdt.tests.dsf.gdb.framework.ServiceEventWaitor;
import org.eclipse.cdt.tests.dsf.gdb.framework.SyncUtil;
import org.eclipse.cdt.tests.dsf.gdb.launching.TestsPlugin;
import org.eclipse.cdt.tests.dsf.gdb.tests.ITestConstants;
import org.junit.Assume;
import org.junit.BeforeClass;
-import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
@@ -51,9 +48,7 @@ import org.junit.runners.Parameterized;
* Tests IMultiRunControl class for Non-stop multi-threaded application.
*/
@RunWith(Parameterized.class)
-@Intermittent
public class GDBMultiNonStopRunControlTest extends BaseParametrizedTestCase {
- public @Rule IntermittentRule irule = new IntermittentRule();
private DsfServicesTracker fServicesTracker;
@@ -95,10 +90,9 @@ public class GDBMultiNonStopRunControlTest extends BaseParametrizedTestCase {
@Override
public void doAfterTest() throws Exception {
- super.doAfterTest();
-
if (fServicesTracker != null)
fServicesTracker.dispose();
+ super.doAfterTest();
}
private abstract class AsyncRunnable<V> {
@@ -110,7 +104,7 @@ public class GDBMultiNonStopRunControlTest extends BaseParametrizedTestCase {
}
private <V> V runAsyncCall(final AsyncRunnable<V> runnable, boolean expectExecutionException) throws Exception {
- Query<V> query = new Query<V>() {
+ Query<V> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<V> rm) {
runnable.run(rm);
@@ -696,7 +690,7 @@ public class GDBMultiNonStopRunControlTest extends BaseParametrizedTestCase {
final ServiceEventWaitor<MIRunningEvent> eventWaitor = new ServiceEventWaitor<>(fMultiRun.getSession(),
MIRunningEvent.class);
- runAsyncCall(new AsyncRunnable<Object>() {
+ runAsyncCall(new AsyncRunnable<>() {
@Override
public void run(DataRequestMonitor<Object> drm) {
fMultiRun.resume(threads, drm);
@@ -736,7 +730,7 @@ public class GDBMultiNonStopRunControlTest extends BaseParametrizedTestCase {
assertFalse("expected no threads to be suspended, but found some", result);
// No error should be thrown, the call should ignore running threads
- runAsyncCall(new AsyncRunnable<Object>() {
+ runAsyncCall(new AsyncRunnable<>() {
@Override
public void run(DataRequestMonitor<Object> drm) {
fMultiRun.resume(threads, drm);
@@ -777,7 +771,7 @@ public class GDBMultiNonStopRunControlTest extends BaseParametrizedTestCase {
final ServiceEventWaitor<MIRunningEvent> eventWaitorRunning = new ServiceEventWaitor<>(fMultiRun.getSession(),
MIRunningEvent.class);
- runAsyncCall(new AsyncRunnable<Object>() {
+ runAsyncCall(new AsyncRunnable<>() {
@Override
public void run(DataRequestMonitor<Object> drm) {
fMultiRun.resume(threads[0], drm);
@@ -829,7 +823,7 @@ public class GDBMultiNonStopRunControlTest extends BaseParametrizedTestCase {
final ServiceEventWaitor<MIRunningEvent> eventWaitorRunning = new ServiceEventWaitor<>(fMultiRun.getSession(),
MIRunningEvent.class);
- runAsyncCall(new AsyncRunnable<Object>() {
+ runAsyncCall(new AsyncRunnable<>() {
@Override
public void run(DataRequestMonitor<Object> drm) {
fMultiRun.resume(threads, drm);
@@ -877,7 +871,7 @@ public class GDBMultiNonStopRunControlTest extends BaseParametrizedTestCase {
MIRunningEvent.class);
// No error should be thrown, the call should ignore running threads
- runAsyncCall(new AsyncRunnable<Object>() {
+ runAsyncCall(new AsyncRunnable<>() {
@Override
public void run(DataRequestMonitor<Object> drm) {
fMultiRun.resume(threads, drm);
@@ -928,7 +922,7 @@ public class GDBMultiNonStopRunControlTest extends BaseParametrizedTestCase {
MIRunningEvent.class);
// No error should be thrown, the call should ignore running threads
- runAsyncCall(new AsyncRunnable<Object>() {
+ runAsyncCall(new AsyncRunnable<>() {
@Override
public void run(DataRequestMonitor<Object> drm) {
fMultiRun.resume(threads, drm);
@@ -960,7 +954,7 @@ public class GDBMultiNonStopRunControlTest extends BaseParametrizedTestCase {
assertTrue("Expected a single thread but got " + threads.length, threads.length == 1);
// No error should be thrown, the already suspended threads should be ignored
- runAsyncCall(new AsyncRunnable<Object>() {
+ runAsyncCall(new AsyncRunnable<>() {
@Override
public void run(DataRequestMonitor<Object> drm) {
fMultiRun.suspend(threads, drm);
@@ -1000,7 +994,7 @@ public class GDBMultiNonStopRunControlTest extends BaseParametrizedTestCase {
final ServiceEventWaitor<MIStoppedEvent> eventWaitor = new ServiceEventWaitor<>(fMultiRun.getSession(),
MIStoppedEvent.class);
- runAsyncCall(new AsyncRunnable<Object>() {
+ runAsyncCall(new AsyncRunnable<>() {
@Override
public void run(DataRequestMonitor<Object> drm) {
fMultiRun.suspend(threads, drm);
@@ -1039,7 +1033,7 @@ public class GDBMultiNonStopRunControlTest extends BaseParametrizedTestCase {
assertTrue("Expected two threads but got " + threads.length, threads.length == 2);
// No error should be thrown, the already suspended threads should be ignored
- runAsyncCall(new AsyncRunnable<Object>() {
+ runAsyncCall(new AsyncRunnable<>() {
@Override
public void run(DataRequestMonitor<Object> drm) {
fMultiRun.suspend(threads, drm);
@@ -1081,7 +1075,7 @@ public class GDBMultiNonStopRunControlTest extends BaseParametrizedTestCase {
assertTrue("Expected two threads but got " + threads.length, threads.length == 2);
// No error should be thrown, the call should ignore the suspended threads
- runAsyncCall(new AsyncRunnable<Object>() {
+ runAsyncCall(new AsyncRunnable<>() {
@Override
public void run(DataRequestMonitor<Object> drm) {
fMultiRun.suspend(threads, drm);
@@ -1128,7 +1122,7 @@ public class GDBMultiNonStopRunControlTest extends BaseParametrizedTestCase {
assertTrue("Expected two threads but got " + threads.length, threads.length == 2);
// No error should be thrown, the call should ignore running threads
- runAsyncCall(new AsyncRunnable<Object>() {
+ runAsyncCall(new AsyncRunnable<>() {
@Override
public void run(DataRequestMonitor<Object> drm) {
fMultiRun.suspend(threads[0], drm);
@@ -1183,7 +1177,7 @@ public class GDBMultiNonStopRunControlTest extends BaseParametrizedTestCase {
final IMIExecutionDMContext[] threads = SyncUtil.getExecutionContexts();
assertTrue("Expected two threads but got " + threads.length, threads.length == 2);
- runAsyncCall(new AsyncRunnable<Object>() {
+ runAsyncCall(new AsyncRunnable<>() {
@Override
public void run(DataRequestMonitor<Object> drm) {
fMultiRun.suspend(threads, drm);
@@ -1217,7 +1211,7 @@ public class GDBMultiNonStopRunControlTest extends BaseParametrizedTestCase {
assertTrue("Expected a single thread but got " + threads.length, threads.length == 1);
for (final IRunControl.StepType type : IRunControl.StepType.values()) {
- runAsyncCall(new AsyncRunnable<Object>() {
+ runAsyncCall(new AsyncRunnable<>() {
@Override
public void run(DataRequestMonitor<Object> drm) {
fMultiRun.step(threads, type, drm);
@@ -2824,7 +2818,7 @@ public class GDBMultiNonStopRunControlTest extends BaseParametrizedTestCase {
final ServiceEventWaitor<MIRunningEvent> eventWaitor = new ServiceEventWaitor<>(fMultiRun.getSession(),
MIRunningEvent.class);
- runAsyncCall(new AsyncRunnable<Object>() {
+ runAsyncCall(new AsyncRunnable<>() {
@Override
public void run(DataRequestMonitor<Object> drm) {
fMultiRun.resume(processes, drm);
@@ -2863,7 +2857,7 @@ public class GDBMultiNonStopRunControlTest extends BaseParametrizedTestCase {
assertFalse("expected no process to be suspended, but found some", result);
// No error should be thrown, the call should ignore running processes
- runAsyncCall(new AsyncRunnable<Object>() {
+ runAsyncCall(new AsyncRunnable<>() {
@Override
public void run(DataRequestMonitor<Object> drm) {
fMultiRun.resume(processes, drm);
@@ -2903,7 +2897,7 @@ public class GDBMultiNonStopRunControlTest extends BaseParametrizedTestCase {
final ServiceEventWaitor<MIRunningEvent> eventWaitorRunning = new ServiceEventWaitor<>(fMultiRun.getSession(),
MIRunningEvent.class);
- runAsyncCall(new AsyncRunnable<Object>() {
+ runAsyncCall(new AsyncRunnable<>() {
@Override
public void run(DataRequestMonitor<Object> drm) {
fMultiRun.resume(processes, drm);
@@ -2950,7 +2944,7 @@ public class GDBMultiNonStopRunControlTest extends BaseParametrizedTestCase {
MIRunningEvent.class);
// No error should be thrown, the call should ignore running threads
- runAsyncCall(new AsyncRunnable<Object>() {
+ runAsyncCall(new AsyncRunnable<>() {
@Override
public void run(DataRequestMonitor<Object> drm) {
fMultiRun.resume(processes, drm);
@@ -3000,7 +2994,7 @@ public class GDBMultiNonStopRunControlTest extends BaseParametrizedTestCase {
MIRunningEvent.class);
// No error should be thrown, the call should ignore running threads
- runAsyncCall(new AsyncRunnable<Object>() {
+ runAsyncCall(new AsyncRunnable<>() {
@Override
public void run(DataRequestMonitor<Object> drm) {
fMultiRun.resume(processes, drm);
@@ -3034,7 +3028,7 @@ public class GDBMultiNonStopRunControlTest extends BaseParametrizedTestCase {
assertTrue("Expected a single thread but got " + threads.length, threads.length == 1);
// No error should be thrown, the already suspended processes should be ignored
- runAsyncCall(new AsyncRunnable<Object>() {
+ runAsyncCall(new AsyncRunnable<>() {
@Override
public void run(DataRequestMonitor<Object> drm) {
fMultiRun.suspend(processes, drm);
@@ -3082,7 +3076,7 @@ public class GDBMultiNonStopRunControlTest extends BaseParametrizedTestCase {
final ServiceEventWaitor<MIStoppedEvent> eventWaitor = new ServiceEventWaitor<>(fMultiRun.getSession(),
MIStoppedEvent.class);
- runAsyncCall(new AsyncRunnable<Object>() {
+ runAsyncCall(new AsyncRunnable<>() {
@Override
public void run(DataRequestMonitor<Object> drm) {
fMultiRun.suspend(processes, drm);
@@ -3123,7 +3117,7 @@ public class GDBMultiNonStopRunControlTest extends BaseParametrizedTestCase {
assertTrue("Expected two threads but got " + threads.length, threads.length == 2);
// No error should be thrown, the already suspended threads should be ignored
- runAsyncCall(new AsyncRunnable<Object>() {
+ runAsyncCall(new AsyncRunnable<>() {
@Override
public void run(DataRequestMonitor<Object> drm) {
fMultiRun.suspend(processes, drm);
@@ -3176,7 +3170,7 @@ public class GDBMultiNonStopRunControlTest extends BaseParametrizedTestCase {
assertTrue("Expected two threads but got " + threads.length, threads.length == 2);
// No error should be thrown, the call should ignore the suspended threads
- runAsyncCall(new AsyncRunnable<Object>() {
+ runAsyncCall(new AsyncRunnable<>() {
@Override
public void run(DataRequestMonitor<Object> drm) {
fMultiRun.suspend(processes, drm);
@@ -3233,7 +3227,7 @@ public class GDBMultiNonStopRunControlTest extends BaseParametrizedTestCase {
final IMIExecutionDMContext[] threads = SyncUtil.getExecutionContexts();
assertTrue("Expected two threads but got " + threads.length, threads.length == 2);
- runAsyncCall(new AsyncRunnable<Object>() {
+ runAsyncCall(new AsyncRunnable<>() {
@Override
public void run(DataRequestMonitor<Object> drm) {
fMultiRun.suspend(processes, drm);
@@ -3275,7 +3269,7 @@ public class GDBMultiNonStopRunControlTest extends BaseParametrizedTestCase {
final IExecutionDMContext[] processes = new IExecutionDMContext[] { SyncUtil.getContainerContext() };
for (final IRunControl.StepType type : IRunControl.StepType.values()) {
- runAsyncCall(new AsyncRunnable<Object>() {
+ runAsyncCall(new AsyncRunnable<>() {
@Override
public void run(DataRequestMonitor<Object> drm) {
fMultiRun.step(processes, type, drm);
@@ -3302,7 +3296,7 @@ public class GDBMultiNonStopRunControlTest extends BaseParametrizedTestCase {
final ServiceEventWaitor<MIRunningEvent> eventWaitor = new ServiceEventWaitor<>(fMultiRun.getSession(),
MIRunningEvent.class);
- runAsyncCall(new AsyncRunnable<Object>() {
+ runAsyncCall(new AsyncRunnable<>() {
@Override
public void run(DataRequestMonitor<Object> drm) {
fMultiRun.resume(execDmcs, drm);
@@ -3348,7 +3342,7 @@ public class GDBMultiNonStopRunControlTest extends BaseParametrizedTestCase {
MIRunningEvent.class);
// No error should be thrown, the call should ignore running processes
- runAsyncCall(new AsyncRunnable<Object>() {
+ runAsyncCall(new AsyncRunnable<>() {
@Override
public void run(DataRequestMonitor<Object> drm) {
fMultiRun.resume(execDmcs, drm);
@@ -3391,7 +3385,7 @@ public class GDBMultiNonStopRunControlTest extends BaseParametrizedTestCase {
final ServiceEventWaitor<MIRunningEvent> eventWaitorRunning = new ServiceEventWaitor<>(fMultiRun.getSession(),
MIRunningEvent.class);
- runAsyncCall(new AsyncRunnable<Object>() {
+ runAsyncCall(new AsyncRunnable<>() {
@Override
public void run(DataRequestMonitor<Object> drm) {
fMultiRun.resume(execDmcs, drm);
@@ -3442,7 +3436,7 @@ public class GDBMultiNonStopRunControlTest extends BaseParametrizedTestCase {
MIRunningEvent.class);
// No error should be thrown, the call should ignore running threads
- runAsyncCall(new AsyncRunnable<Object>() {
+ runAsyncCall(new AsyncRunnable<>() {
@Override
public void run(DataRequestMonitor<Object> drm) {
fMultiRun.resume(execDmcs, drm);
@@ -3492,7 +3486,7 @@ public class GDBMultiNonStopRunControlTest extends BaseParametrizedTestCase {
MIRunningEvent.class);
// No error should be thrown, the call should ignore running threads
- runAsyncCall(new AsyncRunnable<Object>() {
+ runAsyncCall(new AsyncRunnable<>() {
@Override
public void run(DataRequestMonitor<Object> drm) {
fMultiRun.resume(execDmcs, drm);
@@ -3544,7 +3538,7 @@ public class GDBMultiNonStopRunControlTest extends BaseParametrizedTestCase {
MIRunningEvent.class);
// No error should be thrown, the call should ignore running threads
- runAsyncCall(new AsyncRunnable<Object>() {
+ runAsyncCall(new AsyncRunnable<>() {
@Override
public void run(DataRequestMonitor<Object> drm) {
fMultiRun.resume(execDmcs, drm);
@@ -3600,7 +3594,7 @@ public class GDBMultiNonStopRunControlTest extends BaseParametrizedTestCase {
assertTrue("Expected a single thread but got " + threads.length, threads.length == 1);
// No error should be thrown, the already suspended processes should be ignored
- runAsyncCall(new AsyncRunnable<Object>() {
+ runAsyncCall(new AsyncRunnable<>() {
@Override
public void run(DataRequestMonitor<Object> drm) {
fMultiRun.suspend(execDmcs, drm);
@@ -3650,7 +3644,7 @@ public class GDBMultiNonStopRunControlTest extends BaseParametrizedTestCase {
final ServiceEventWaitor<MIStoppedEvent> eventWaitor = new ServiceEventWaitor<>(fMultiRun.getSession(),
MIStoppedEvent.class);
- runAsyncCall(new AsyncRunnable<Object>() {
+ runAsyncCall(new AsyncRunnable<>() {
@Override
public void run(DataRequestMonitor<Object> drm) {
fMultiRun.suspend(execDmcs, drm);
@@ -3693,7 +3687,7 @@ public class GDBMultiNonStopRunControlTest extends BaseParametrizedTestCase {
assertTrue("Expected two threads but got " + threads.length, threads.length == 2);
// No error should be thrown, the already suspended threads should be ignored
- runAsyncCall(new AsyncRunnable<Object>() {
+ runAsyncCall(new AsyncRunnable<>() {
@Override
public void run(DataRequestMonitor<Object> drm) {
fMultiRun.suspend(execDmcs, drm);
@@ -3748,7 +3742,7 @@ public class GDBMultiNonStopRunControlTest extends BaseParametrizedTestCase {
assertTrue("Expected two threads but got " + threads.length, threads.length == 2);
// No error should be thrown, the call should ignore the suspended threads
- runAsyncCall(new AsyncRunnable<Object>() {
+ runAsyncCall(new AsyncRunnable<>() {
@Override
public void run(DataRequestMonitor<Object> drm) {
fMultiRun.suspend(execDmcs, drm);
@@ -3805,7 +3799,7 @@ public class GDBMultiNonStopRunControlTest extends BaseParametrizedTestCase {
assertTrue("Expected two threads but got " + threads.length, threads.length == 2);
// No error should be thrown, the call should ignore the suspended threads
- runAsyncCall(new AsyncRunnable<Object>() {
+ runAsyncCall(new AsyncRunnable<>() {
@Override
public void run(DataRequestMonitor<Object> drm) {
fMultiRun.suspend(execDmcs, drm);
@@ -3864,7 +3858,7 @@ public class GDBMultiNonStopRunControlTest extends BaseParametrizedTestCase {
final IMIExecutionDMContext[] threads = SyncUtil.getExecutionContexts();
assertTrue("Expected two threads but got " + threads.length, threads.length == 2);
- runAsyncCall(new AsyncRunnable<Object>() {
+ runAsyncCall(new AsyncRunnable<>() {
@Override
public void run(DataRequestMonitor<Object> drm) {
fMultiRun.suspend(execDmcs, drm);
@@ -3908,7 +3902,7 @@ public class GDBMultiNonStopRunControlTest extends BaseParametrizedTestCase {
SyncUtil.getExecutionContext(0) };
for (final IRunControl.StepType type : IRunControl.StepType.values()) {
- runAsyncCall(new AsyncRunnable<Object>() {
+ runAsyncCall(new AsyncRunnable<>() {
@Override
public void run(DataRequestMonitor<Object> drm) {
fMultiRun.step(execDmcs, type, drm);
@@ -3947,7 +3941,7 @@ public class GDBMultiNonStopRunControlTest extends BaseParametrizedTestCase {
final ServiceEventWaitor<MIRunningEvent> eventWaitorRunning = new ServiceEventWaitor<>(fMultiRun.getSession(),
MIRunningEvent.class);
- runAsyncCall(new AsyncRunnable<Object>() {
+ runAsyncCall(new AsyncRunnable<>() {
@Override
public void run(DataRequestMonitor<Object> drm) {
fMultiRun.resume(execDmcs, drm);
@@ -3998,7 +3992,7 @@ public class GDBMultiNonStopRunControlTest extends BaseParametrizedTestCase {
MIRunningEvent.class);
// No error should be thrown, the call should ignore running threads
- runAsyncCall(new AsyncRunnable<Object>() {
+ runAsyncCall(new AsyncRunnable<>() {
@Override
public void run(DataRequestMonitor<Object> drm) {
fMultiRun.resume(execDmcs, drm);
@@ -4050,7 +4044,7 @@ public class GDBMultiNonStopRunControlTest extends BaseParametrizedTestCase {
MIRunningEvent.class);
// No error should be thrown, the call should ignore running threads
- runAsyncCall(new AsyncRunnable<Object>() {
+ runAsyncCall(new AsyncRunnable<>() {
@Override
public void run(DataRequestMonitor<Object> drm) {
fMultiRun.resume(execDmcs, drm);
@@ -4097,7 +4091,7 @@ public class GDBMultiNonStopRunControlTest extends BaseParametrizedTestCase {
assertTrue("Expected two threads but got " + threads.length, threads.length == 2);
// No error should be thrown, the already suspended threads should be ignored
- runAsyncCall(new AsyncRunnable<Object>() {
+ runAsyncCall(new AsyncRunnable<>() {
@Override
public void run(DataRequestMonitor<Object> drm) {
fMultiRun.suspend(execDmcs, drm);
@@ -4152,7 +4146,7 @@ public class GDBMultiNonStopRunControlTest extends BaseParametrizedTestCase {
assertTrue("Expected two threads but got " + threads.length, threads.length == 2);
// No error should be thrown, the call should ignore the suspended threads
- runAsyncCall(new AsyncRunnable<Object>() {
+ runAsyncCall(new AsyncRunnable<>() {
@Override
public void run(DataRequestMonitor<Object> drm) {
fMultiRun.suspend(execDmcs, drm);
@@ -4211,7 +4205,7 @@ public class GDBMultiNonStopRunControlTest extends BaseParametrizedTestCase {
final IMIExecutionDMContext[] threads = SyncUtil.getExecutionContexts();
assertTrue("Expected two threads but got " + threads.length, threads.length == 2);
- runAsyncCall(new AsyncRunnable<Object>() {
+ runAsyncCall(new AsyncRunnable<>() {
@Override
public void run(DataRequestMonitor<Object> drm) {
fMultiRun.suspend(execDmcs, drm);
diff --git a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/nonstop/MIExpressionsNonStopTest.java b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/nonstop/MIExpressionsNonStopTest.java
index f9b0823b95b..626903086c0 100644
--- a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/nonstop/MIExpressionsNonStopTest.java
+++ b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/nonstop/MIExpressionsNonStopTest.java
@@ -18,12 +18,10 @@ import org.eclipse.cdt.tests.dsf.gdb.tests.ITestConstants;
import org.eclipse.cdt.tests.dsf.gdb.tests.MIExpressionsTest;
import org.junit.Assume;
import org.junit.BeforeClass;
-import org.junit.Ignore;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
@RunWith(Parameterized.class)
-@Ignore
public class MIExpressionsNonStopTest extends MIExpressionsTest {
@BeforeClass
diff --git a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/nonstop/ThreadStackFrameSyncTest.java b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/nonstop/ThreadStackFrameSyncTest.java
index 56f3bac1b1f..2c56ae5b22b 100644
--- a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/nonstop/ThreadStackFrameSyncTest.java
+++ b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/gdb/tests/nonstop/ThreadStackFrameSyncTest.java
@@ -12,8 +12,6 @@ package org.eclipse.cdt.tests.dsf.gdb.tests.nonstop;
import static org.junit.Assert.assertEquals;
-import java.util.ArrayList;
-import java.util.List;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
@@ -24,7 +22,6 @@ import org.eclipse.cdt.dsf.concurrent.ImmediateRequestMonitor;
import org.eclipse.cdt.dsf.concurrent.Query;
import org.eclipse.cdt.dsf.datamodel.DMContexts;
import org.eclipse.cdt.dsf.datamodel.IDMContext;
-import org.eclipse.cdt.dsf.datamodel.IDMEvent;
import org.eclipse.cdt.dsf.debug.service.IMultiRunControl;
import org.eclipse.cdt.dsf.debug.service.IRunControl.IContainerDMContext;
import org.eclipse.cdt.dsf.debug.service.IStack.IFrameDMContext;
@@ -46,7 +43,6 @@ import org.eclipse.cdt.dsf.mi.service.command.output.MIOutput;
import org.eclipse.cdt.dsf.mi.service.command.output.MIResult;
import org.eclipse.cdt.dsf.mi.service.command.output.MITuple;
import org.eclipse.cdt.dsf.mi.service.command.output.MIValue;
-import org.eclipse.cdt.dsf.service.DsfServiceEventHandler;
import org.eclipse.cdt.dsf.service.DsfServicesTracker;
import org.eclipse.cdt.dsf.service.DsfSession;
import org.eclipse.cdt.tests.dsf.gdb.framework.BaseParametrizedTestCase;
@@ -57,7 +53,6 @@ import org.eclipse.cdt.tests.dsf.gdb.tests.ITestConstants;
import org.junit.Assert;
import org.junit.Assume;
import org.junit.BeforeClass;
-import org.junit.Ignore;
import org.junit.Test;
public class ThreadStackFrameSyncTest extends BaseParametrizedTestCase {
@@ -69,12 +64,12 @@ public class ThreadStackFrameSyncTest extends BaseParametrizedTestCase {
private IGDBControl fCommandControl;
private IGDBFocusSynchronizer fGdbSync;
private DsfSession fSession;
- private List<IDMEvent<? extends IDMContext>> fEventsReceived = new ArrayList<>();
// Breakpoint tags in MultiThread.cc
public static final String[] LINE_TAGS = new String[] { "LINE_MAIN_BEFORE_THREAD_START", // Just before StartThread
"LINE_MAIN_AFTER_THREAD_START", // Just after StartThread
- "LINE_MAIN_ALL_THREADS_STARTED", // Where all threads are guaranteed to be started.
+ "LINE_MAIN_ALL_THREADS_STARTED", // Where all threads are guaranteed to be started,
+ "LINE_THREAD_IN_HELLO", // in the middle of one of the threads
};
/*
@@ -115,8 +110,6 @@ public class ThreadStackFrameSyncTest extends BaseParametrizedTestCase {
IMIProcesses procService = fServicesTracker.getService(IMIProcesses.class);
Assert.assertTrue(procService != null);
- // Register to receive DSF events
- fSession.addServiceEventListener(ThreadStackFrameSyncTest.this, null);
};
fSession.getExecutor().submit(runnable).get();
}
@@ -133,16 +126,9 @@ public class ThreadStackFrameSyncTest extends BaseParametrizedTestCase {
@Override
public void doAfterTest() throws Exception {
- super.doAfterTest();
-
- if (fSession != null) {
- fSession.getExecutor().submit(() -> fSession.removeServiceEventListener(ThreadStackFrameSyncTest.this))
- .get();
- }
- fEventsReceived.clear();
-
if (fServicesTracker != null)
fServicesTracker.dispose();
+ super.doAfterTest();
}
//////////////////////////////////////////////////////////////////////////////////////
@@ -190,7 +176,6 @@ public class ThreadStackFrameSyncTest extends BaseParametrizedTestCase {
* triggers a GDB notification that a new frame has been selected.
*/
@Test
- @Ignore
public void testChangingCurrentFrameCLINotification() throws Throwable {
ServiceEventWaitor<MIStoppedEvent> eventWaitor = new ServiceEventWaitor<>(fMultiRunControl.getSession(),
MIStoppedEvent.class);
@@ -198,7 +183,7 @@ public class ThreadStackFrameSyncTest extends BaseParametrizedTestCase {
// add a breakpoint in main
SyncUtil.addBreakpoint(SOURCE_NAME + ":" + getLineForTag("LINE_MAIN_ALL_THREADS_STARTED"), false);
// add a breakpoint in thread code
- SyncUtil.addBreakpoint("36", false);
+ SyncUtil.addBreakpoint(SOURCE_NAME + ":" + getLineForTag("LINE_THREAD_IN_HELLO"), false);
// Run program
SyncUtil.resumeAll();
@@ -247,19 +232,29 @@ public class ThreadStackFrameSyncTest extends BaseParametrizedTestCase {
// *** at this point all 5 threads should be stopped
// have the sync service set GDB current tid to thread 5
- fGdbSync.setFocus(new IDMContext[] { getContextForThreadId(5) }, new ImmediateRequestMonitor());
+ IMIExecutionDMContext contextForThreadId5 = getContextForThreadId(5);
+ fSession.getExecutor().execute(
+ () -> fGdbSync.setFocus(new IDMContext[] { contextForThreadId5 }, new ImmediateRequestMonitor()));
assertEquals("5", getCurrentThread());
- fGdbSync.setFocus(new IDMContext[] { getContextForThreadId(4) }, new ImmediateRequestMonitor());
+ IMIExecutionDMContext contextForThreadId4 = getContextForThreadId(4);
+ fSession.getExecutor().execute(
+ () -> fGdbSync.setFocus(new IDMContext[] { contextForThreadId4 }, new ImmediateRequestMonitor()));
assertEquals("4", getCurrentThread());
- fGdbSync.setFocus(new IDMContext[] { getContextForThreadId(3) }, new ImmediateRequestMonitor());
+ IMIExecutionDMContext contextForThreadId3 = getContextForThreadId(3);
+ fSession.getExecutor().execute(
+ () -> fGdbSync.setFocus(new IDMContext[] { contextForThreadId3 }, new ImmediateRequestMonitor()));
assertEquals("3", getCurrentThread());
- fGdbSync.setFocus(new IDMContext[] { getContextForThreadId(2) }, new ImmediateRequestMonitor());
+ IMIExecutionDMContext contextForThreadId2 = getContextForThreadId(2);
+ fSession.getExecutor().execute(
+ () -> fGdbSync.setFocus(new IDMContext[] { contextForThreadId2 }, new ImmediateRequestMonitor()));
assertEquals("2", getCurrentThread());
- fGdbSync.setFocus(new IDMContext[] { getContextForThreadId(1) }, new ImmediateRequestMonitor());
+ IMIExecutionDMContext contextForThreadId1 = getContextForThreadId(1);
+ fSession.getExecutor().execute(
+ () -> fGdbSync.setFocus(new IDMContext[] { contextForThreadId1 }, new ImmediateRequestMonitor()));
assertEquals("1", getCurrentThread());
}
@@ -268,7 +263,6 @@ public class ThreadStackFrameSyncTest extends BaseParametrizedTestCase {
* the current GDB stack frame
*/
@Test
- @Ignore
public void testGdbSyncServiceCanSwitchGDBStackFrame() throws Throwable {
ServiceEventWaitor<MIStoppedEvent> eventWaitor = new ServiceEventWaitor<>(fMultiRunControl.getSession(),
MIStoppedEvent.class);
@@ -294,15 +288,25 @@ public class ThreadStackFrameSyncTest extends BaseParametrizedTestCase {
// do a few of times
for (int i = 0; i < 50; i++) {
// have the sync service switch stack frame to 1
- fSession.getExecutor()
- .execute(() -> fGdbSync.setFocus(new IDMContext[] { frame1 }, new ImmediateRequestMonitor()));
- Thread.sleep(100);
+ Query<MIInfo> query1 = new Query<>() {
+ @Override
+ protected void execute(DataRequestMonitor<MIInfo> rm) {
+ fGdbSync.setFocus(new IDMContext[] { frame1 }, rm);
+ }
+ };
+ fCommandControl.getExecutor().execute(query1);
+ query1.get();
assertEquals("1", getCurrentStackFrameLevel());
// have the sync service switch stack frame to 0
- fSession.getExecutor()
- .execute(() -> fGdbSync.setFocus(new IDMContext[] { frame0 }, new ImmediateRequestMonitor()));
- Thread.sleep(100);
+ Query<MIInfo> query0 = new Query<>() {
+ @Override
+ protected void execute(DataRequestMonitor<MIInfo> rm) {
+ fGdbSync.setFocus(new IDMContext[] { frame0 }, rm);
+ }
+ };
+ fCommandControl.getExecutor().execute(query0);
+ query0.get();
assertEquals("0", getCurrentStackFrameLevel());
}
}
@@ -325,11 +329,10 @@ public class ThreadStackFrameSyncTest extends BaseParametrizedTestCase {
* @throws Throwable
*/
private String switchThreadAndCaptureThreadSwitchedEvent(String tid) throws Throwable {
- Thread.sleep(100);
- fEventsReceived.clear();
+ ServiceEventWaitor<IGDBFocusChangedEvent> waitor = new ServiceEventWaitor(fSession,
+ IGDBFocusChangedEvent.class);
selectGdbThread(tid);
-
- IDMContext ctx = waitForEvent(IGDBFocusChangedEvent.class).getDMContext();
+ IDMContext ctx = waitor.waitForEvent(TestsPlugin.massageTimeout(2000)).getDMContext();
if (ctx instanceof IMIExecutionDMContext) {
IMIExecutionDMContext execDmc = (IMIExecutionDMContext) ctx;
return execDmc.getThreadId();
@@ -347,11 +350,21 @@ public class ThreadStackFrameSyncTest extends BaseParametrizedTestCase {
private String switchFrameAndCaptureStackFrameSwitchedEvent(String frameLevel) throws Throwable {
IFrameDMContext newFrame = null;
- Thread.sleep(100);
- fEventsReceived.clear();
+ ServiceEventWaitor<IGDBFocusChangedEvent> waitor = new ServiceEventWaitor<>(fSession,
+ IGDBFocusChangedEvent.class);
+
selectGdbStackFrame(frameLevel);
+ waitor.waitForEvent(TestsPlugin.massageTimeout(DEFAULT_TIMEOUT));
- Object[] elems = fGdbSync.getFocus();
+ Query<Object[]> query = new Query<>() {
+ @Override
+ protected void execute(DataRequestMonitor<Object[]> rm) {
+ rm.done(fGdbSync.getFocus());
+ }
+ };
+
+ fCommandControl.getExecutor().execute(query);
+ Object[] elems = query.get();
for (Object elem : elems) {
if (elem instanceof IFrameDMContext) {
newFrame = (IFrameDMContext) elem;
@@ -372,7 +385,7 @@ public class ThreadStackFrameSyncTest extends BaseParametrizedTestCase {
private String sendCLIThread(String tid) throws Exception {
IContainerDMContext containerDmc = SyncUtil.getContainerContext();
- Query<CLIThreadInfo> query = new Query<CLIThreadInfo>() {
+ Query<CLIThreadInfo> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<CLIThreadInfo> rm) {
fCommandControl.queueCommand(new CLICommand<CLIThreadInfo>(containerDmc, "thread " + tid) {
@@ -404,10 +417,10 @@ public class ThreadStackFrameSyncTest extends BaseParametrizedTestCase {
private String sendCLIFrame(String level) throws Exception {
IContainerDMContext containerDmc = SyncUtil.getContainerContext();
- Query<MIInfo> query = new Query<MIInfo>() {
+ Query<MIInfo> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<MIInfo> rm) {
- fCommandControl.queueCommand(new CLICommand<MIInfo>(containerDmc, "frame " + level) {
+ fCommandControl.queueCommand(new CLICommand<>(containerDmc, "frame " + level) {
@Override
public CLIThreadInfo getResult(MIOutput output) {
return new CLIThreadInfo(output);
@@ -469,14 +482,6 @@ public class ThreadStackFrameSyncTest extends BaseParametrizedTestCase {
return sendCLIFrame("");
}
- @DsfServiceEventHandler
- public void eventDispatched(IDMEvent<? extends IDMContext> e) {
- synchronized (this) {
- fEventsReceived.add(e);
- notifyAll();
- }
- }
-
private void selectGdbThread(String tid) throws Throwable {
queueConsoleCommand(String.format("thread %s", tid));
}
@@ -490,7 +495,7 @@ public class ThreadStackFrameSyncTest extends BaseParametrizedTestCase {
}
private void queueConsoleCommand(final String command, int timeout, TimeUnit unit) throws Throwable {
- Query<MIInfo> query = new Query<MIInfo>() {
+ Query<MIInfo> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<MIInfo> rm) {
fCommandControl.queueCommand(fCommandControl.getCommandFactory()
@@ -501,38 +506,4 @@ public class ThreadStackFrameSyncTest extends BaseParametrizedTestCase {
query.get(timeout, unit);
}
- private <V extends IDMEvent<? extends IDMContext>> V waitForEvent(Class<V> eventType) throws Exception {
- return waitForEvent(eventType, TestsPlugin.massageTimeout(DEFAULT_TIMEOUT));
- }
-
- @SuppressWarnings("unchecked")
- private <V extends IDMEvent<? extends IDMContext>> V waitForEvent(Class<V> eventType, int timeout)
- throws Exception {
- IDMEvent<?> event = getEvent(eventType);
- if (event == null) {
- synchronized (this) {
- try {
- wait(timeout);
- } catch (InterruptedException ex) {
- }
- }
- event = getEvent(eventType);
- if (event == null) {
- throw new Exception(String.format("Timed out waiting for '%s' to occur.", eventType.getName()));
- }
- }
- return (V) event;
- }
-
- @SuppressWarnings("unchecked")
- private synchronized <V extends IDMEvent<? extends IDMContext>> V getEvent(Class<V> eventType) {
- for (IDMEvent<?> e : fEventsReceived) {
- if (eventType.isAssignableFrom(e.getClass())) {
- fEventsReceived.remove(e);
- return (V) e;
- }
- }
- return null;
- }
-
-}
+} \ No newline at end of file
diff --git a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/mi/service/command/MIAsyncErrorProcessorTests.java b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/mi/service/command/MIAsyncErrorProcessorTests.java
index afc903444a8..aabe5b00150 100644
--- a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/mi/service/command/MIAsyncErrorProcessorTests.java
+++ b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/src/org/eclipse/cdt/tests/dsf/mi/service/command/MIAsyncErrorProcessorTests.java
@@ -195,7 +195,7 @@ public class MIAsyncErrorProcessorTests extends BaseParametrizedTestCase {
if (!runControl.isSuspended(containerDmc))
return false;
- Query<Boolean> query = new Query<Boolean>() {
+ Query<Boolean> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Boolean> rm) {
runControl.getExecutionData(containerDmc, new ImmediateDataRequestMonitor<IExecutionDMData>(rm) {
diff --git a/dsf-gdb/pom.xml b/dsf-gdb/pom.xml
index 0557a5cf443..ed5e500dd7e 100644
--- a/dsf-gdb/pom.xml
+++ b/dsf-gdb/pom.xml
@@ -1,4 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2017, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
@@ -7,7 +17,7 @@
<parent>
<groupId>org.eclipse.cdt</groupId>
<artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
+ <version>10.7.0-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.cdt.dsf-gdb-parent</artifactId>
diff --git a/dsf/org.eclipse.cdt.dsf.ui/.classpath b/dsf/org.eclipse.cdt.dsf.ui/.classpath
index 22f30643cba..e801ebfb468 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/.classpath
+++ b/dsf/org.eclipse.cdt.dsf.ui/.classpath
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/dsf/org.eclipse.cdt.dsf.ui/.settings/.api_filters b/dsf/org.eclipse.cdt.dsf.ui/.settings/.api_filters
new file mode 100644
index 00000000000..2f515c64d90
--- /dev/null
+++ b/dsf/org.eclipse.cdt.dsf.ui/.settings/.api_filters
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<component id="org.eclipse.cdt.dsf.ui" version="2">
+ <resource path="src/org/eclipse/cdt/dsf/debug/ui/sourcelookup/DsfSourceDisplayAdapter.java" type="org.eclipse.cdt.dsf.debug.ui.sourcelookup.DsfSourceDisplayAdapter">
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
+ <message_arguments>
+ <message_argument value="ISteppingControlParticipant"/>
+ <message_argument value="DsfSourceDisplayAdapter"/>
+ </message_arguments>
+ </filter>
+ </resource>
+</component>
diff --git a/dsf/org.eclipse.cdt.dsf.ui/.settings/org.eclipse.core.resources.prefs b/dsf/org.eclipse.cdt.dsf.ui/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/dsf/org.eclipse.cdt.dsf.ui/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/dsf/org.eclipse.cdt.dsf.ui/.settings/org.eclipse.jdt.core.prefs b/dsf/org.eclipse.cdt.dsf.ui/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/.settings/org.eclipse.jdt.core.prefs
+++ b/dsf/org.eclipse.cdt.dsf.ui/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/dsf/org.eclipse.cdt.dsf.ui/.settings/org.eclipse.jdt.ui.prefs b/dsf/org.eclipse.cdt.dsf.ui/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/.settings/org.eclipse.jdt.ui.prefs
+++ b/dsf/org.eclipse.cdt.dsf.ui/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/dsf/org.eclipse.cdt.dsf.ui/META-INF/MANIFEST.MF b/dsf/org.eclipse.cdt.dsf.ui/META-INF/MANIFEST.MF
index 9864ef34aed..046408b0853 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/META-INF/MANIFEST.MF
+++ b/dsf/org.eclipse.cdt.dsf.ui/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@ Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-Vendor: %providerName
Bundle-SymbolicName: org.eclipse.cdt.dsf.ui;singleton:=true
-Bundle-Version: 2.5.300.qualifier
+Bundle-Version: 2.6.500.qualifier
Bundle-Activator: org.eclipse.cdt.dsf.internal.ui.DsfUIPlugin
Bundle-Localization: plugin
Require-Bundle: org.eclipse.ui;bundle-version="3.5.0",
@@ -80,6 +80,6 @@ Export-Package: org.eclipse.cdt.dsf.debug.internal.ui;x-internal:=true,
org.eclipse.cdt.examples.dsf.pda.ui,
org.eclipse.cdt.debug.edc.ui",
org.eclipse.cdt.dsf.ui.viewmodel.update;x-friends:="org.eclipse.cdt.dsf.gdb.ui,org.eclipse.cdt.examples.dsf,org.eclipse.cdt.examples.dsf.pda.ui"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Import-Package: com.ibm.icu.text
Automatic-Module-Name: org.eclipse.cdt.dsf.ui
diff --git a/dsf/org.eclipse.cdt.dsf.ui/about.html b/dsf/org.eclipse.cdt.dsf.ui/about.html
index 164f781a8fd..b3134865230 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/about.html
+++ b/dsf/org.eclipse.cdt.dsf.ui/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/dsf/org.eclipse.cdt.dsf.ui/build.properties b/dsf/org.eclipse.cdt.dsf.ui/build.properties
index 086f5702a79..58590f0008e 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/build.properties
+++ b/dsf/org.eclipse.cdt.dsf.ui/build.properties
@@ -19,5 +19,6 @@ bin.includes = META-INF/,\
plugin.properties,\
about.html,\
icons/,\
- .options
+ .options,\
+ css/
src.includes = about.html
diff --git a/dsf/org.eclipse.cdt.dsf.ui/css/e4-dark_dsf.css b/dsf/org.eclipse.cdt.dsf.ui/css/e4-dark_dsf.css
new file mode 100644
index 00000000000..1c231ab78f7
--- /dev/null
+++ b/dsf/org.eclipse.cdt.dsf.ui/css/e4-dark_dsf.css
@@ -0,0 +1,22 @@
+/*******************************************************************************
+ * Copyright (c) 2022 STMicroelectronics and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ******************************************************************************/
+
+IEclipsePreferences#org-eclipse-cdt-dsf-ui:org-eclipse-cdt-dsf-ui {
+ preferences:
+ "disassembly.functionOffsetsColor=221,40,103"
+ "disassembly.addressColor=0,170,0"
+ "disassembly.codeBytesColor=221,40,103"
+ "disassembly.rulerBackgroundColor=47,47,47"
+ "disassembly.errorColor=221,40,103"
+ "disassembly.instructionColor=18,144,195"
+ "disassembly.sourceColor=200,200,200"
+ "disassembly.labelColor=255,191,38"
+}
diff --git a/dsf/org.eclipse.cdt.dsf.ui/plugin.properties b/dsf/org.eclipse.cdt.dsf.ui/plugin.properties
index b5a30947906..6dd13d5b1c8 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/plugin.properties
+++ b/dsf/org.eclipse.cdt.dsf.ui/plugin.properties
@@ -53,6 +53,8 @@ action.refreshAll.name=Refresh Debug Views
action.refresh.label=Refresh
+action.jumpToMemory.label=Jump to Memory
+
popup.addExpression.label=Add Watch Expression...
popup.resumeAtLine.label=Resume At Li&ne
popup.moveToLine.label=&Move To Line\u0020
@@ -67,6 +69,10 @@ command.addRegisters.name=Add Expression Group > Registers
command.refreshAll.name=Refresh Debug Views
command.refreshAll.description=Refresh all data in debug views
+# jump to memory
+command.jumpToMemory.name=Jump to Memory
+command.jumpToMemory.description=Open memory view and add memory monitor for address
+
# Preferences
StaleData.foreground.label=Stale data foreground color\u0020
diff --git a/dsf/org.eclipse.cdt.dsf.ui/plugin.xml b/dsf/org.eclipse.cdt.dsf.ui/plugin.xml
index 3e296015d9c..301d9cce2a5 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/plugin.xml
+++ b/dsf/org.eclipse.cdt.dsf.ui/plugin.xml
@@ -12,6 +12,19 @@
</extension>
<extension point="org.eclipse.ui.viewActions">
+ <!-- Breakpoints View menu contributions -->
+ <viewContribution
+ id="org.eclipse.cdt.dsf.debug.ui.viewmodel.breakpoints.update.Refresh"
+ targetID="org.eclipse.debug.ui.BreakpointView">
+ <action
+ class="org.eclipse.cdt.dsf.debug.internal.ui.viewmodel.actions.RefreshActionDelegate"
+ icon="icons/refresh.gif"
+ id="org.eclipse.cdt.dsf.debug.ui.breakpoints.viewmodel.update.actions.refresh"
+ label="%action.refresh.label"
+ toolbarPath="additions">
+ </action>
+ </viewContribution>
+
<!-- Variables View menu contributions -->
<viewContribution
id="org.eclipse.cdt.dsf.debug.ui.viewmodel.variables.update.Refresh"
@@ -616,6 +629,12 @@
categoryId="org.eclipse.debug.ui.category.run"
>
</command>
+ <command
+ categoryId="org.eclipse.debug.ui.category.run"
+ defaultHandler="org.eclipse.cdt.dsf.debug.internal.ui.disassembly.actions.RulerJumpToMemoryHandler"
+ description="%command.jumpToMemory.description"
+ id="org.eclipse.cdt.debug.ui.memory.memorybrowser.jumpToMemory"
+ name="%command.jumpToMemory.name"/>
</extension>
<extension point="org.eclipse.ui.bindings">
@@ -694,6 +713,12 @@
label="%action.toggleBreakpoint.label"
menubarPath="debug">
</action>
+ <action
+ class="org.eclipse.cdt.dsf.debug.internal.ui.disassembly.actions.RulerJumpToMemoryActionDelegate"
+ id="org.eclipse.debug.ui.actions.RulerJumpToMemoryAction"
+ label="%action.jumpToMemory.label"
+ menubarPath="debug">
+ </action>
</viewerContribution>
</extension>
@@ -999,4 +1024,13 @@
id="org.eclipse.cdt.dsf.ui.simpleMapPersistableFactory">
</factory>
</extension>
+ <extension
+ point="org.eclipse.e4.ui.css.swt.theme">
+ <stylesheet
+ uri="css/e4-dark_dsf.css">
+ <themeid
+ refid="org.eclipse.e4.ui.css.theme.e4_dark">
+ </themeid>
+ </stylesheet>
+ </extension>
</plugin>
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/CSourceNotFoundDescriptionFactory.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/CSourceNotFoundDescriptionFactory.java
index c6a4a5f84ac..868939de060 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/CSourceNotFoundDescriptionFactory.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/CSourceNotFoundDescriptionFactory.java
@@ -47,7 +47,7 @@ public class CSourceNotFoundDescriptionFactory implements IAdapterFactory {
public <T> T getAdapter(Object adaptableObject, Class<T> adapterType) {
if (adapterType.equals(ICSourceNotFoundDescription.class) && adaptableObject instanceof IFrameDMContext) {
final IFrameDMContext frameDMC = (IFrameDMContext) adaptableObject;
- Query<IStack.IFrameDMData> query = new Query<IStack.IFrameDMData>() {
+ Query<IStack.IFrameDMData> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<IStack.IFrameDMData> rm) {
DsfServicesTracker tracker = new DsfServicesTracker(DsfUIPlugin.getBundleContext(),
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/ExpressionInformationControlCreator.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/ExpressionInformationControlCreator.java
index bed7e8d6ce7..55bad139fc7 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/ExpressionInformationControlCreator.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/ExpressionInformationControlCreator.java
@@ -33,6 +33,10 @@ import org.eclipse.debug.internal.ui.views.variables.details.IDetailPaneContaine
import org.eclipse.debug.ui.AbstractDebugView;
import org.eclipse.debug.ui.IDebugUIConstants;
import org.eclipse.jface.dialogs.IDialogSettings;
+import org.eclipse.jface.preference.JFacePreferences;
+import org.eclipse.jface.resource.ColorRegistry;
+import org.eclipse.jface.resource.JFaceColors;
+import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.jface.text.AbstractInformationControl;
import org.eclipse.jface.text.IInformationControl;
import org.eclipse.jface.text.IInformationControlCreator;
@@ -50,11 +54,13 @@ import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Layout;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchPartSite;
+import org.eclipse.ui.PlatformUI;
/**
* Creates an information control to display an expression in a hover control.
@@ -124,6 +130,7 @@ public class ExpressionInformationControlCreator implements IInformationControlC
*/
private Object fVariable;
+ private IPresentationContext fContext;
private TreeModelViewer fViewer;
private SashForm fSashForm;
private Composite fDetailPaneComposite;
@@ -187,8 +194,8 @@ public class ExpressionInformationControlCreator implements IInformationControlC
@Override
public void paneChanged(String newPaneID) {
if (DefaultDetailPane.ID.equals(newPaneID)) {
- fDetailPane.getCurrentControl()
- .setBackground(getShell().getDisplay().getSystemColor(SWT.COLOR_INFO_BACKGROUND));
+ fDetailPane.getCurrentControl().setForeground(getSystemForegroundColor());
+ fDetailPane.getCurrentControl().setBackground(getSystemBackgroundColor());
}
}
@@ -264,7 +271,7 @@ public class ExpressionInformationControlCreator implements IInformationControlC
private IDialogSettings getDialogSettings(boolean create) {
IDialogSettings settings = DsfUIPlugin.getDefault().getDialogSettings();
IDialogSettings section = settings.getSection(this.getClass().getName());
- if (section == null & create) {
+ if (section == null && create) {
section = settings.addNewSection(this.getClass().getName());
}
return section;
@@ -288,6 +295,7 @@ public class ExpressionInformationControlCreator implements IInformationControlC
@Override
public void dispose() {
persistSettings(getShell());
+ fContext.dispose();
super.dispose();
}
@@ -338,8 +346,7 @@ public class ExpressionInformationControlCreator implements IInformationControlC
// update presentation context
AbstractDebugView view = getViewToEmulate();
- IPresentationContext context = new ExpressionHoverPresentationContext(
- IDsfDebugUIConstants.ID_EXPRESSION_HOVER);
+ fContext = new ExpressionHoverPresentationContext(IDsfDebugUIConstants.ID_EXPRESSION_HOVER);
if (view != null) {
// copy over properties
IPresentationContext copy = ((TreeModelViewer) view.getViewer()).getPresentationContext();
@@ -347,14 +354,14 @@ public class ExpressionInformationControlCreator implements IInformationControlC
String[] properties = copy.getProperties();
for (int i = 0; i < properties.length; i++) {
String key = properties[i];
- context.setProperty(key, copy.getProperty(key));
+ fContext.setProperty(key, copy.getProperty(key));
}
} catch (NoSuchMethodError e) {
// ignore
}
}
- fViewer = new TreeModelViewer(fSashForm, SWT.MULTI | SWT.VIRTUAL | SWT.FULL_SELECTION, context);
+ fViewer = new TreeModelViewer(fSashForm, SWT.MULTI | SWT.VIRTUAL | SWT.FULL_SELECTION, fContext);
fViewer.setAutoExpandLevel(fExpansionLevel);
if (view != null) {
@@ -429,8 +436,8 @@ public class ExpressionInformationControlCreator implements IInformationControlC
fViewer.addViewerUpdateListener(fViewerUpdateListener);
- setForegroundColor(getShell().getDisplay().getSystemColor(SWT.COLOR_INFO_FOREGROUND));
- setBackgroundColor(getShell().getDisplay().getSystemColor(SWT.COLOR_INFO_BACKGROUND));
+ setForegroundColor(getSystemForegroundColor());
+ setBackgroundColor(getSystemBackgroundColor());
}
/**
@@ -439,7 +446,7 @@ public class ExpressionInformationControlCreator implements IInformationControlC
* @return a view to emulate or <code>null</code>
*/
private AbstractDebugView getViewToEmulate() {
- IWorkbenchPage page = DsfUIPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getActivePage();
+ IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
AbstractDebugView expressionsView = (AbstractDebugView) page.findView(IDebugUIConstants.ID_EXPRESSION_VIEW);
if (expressionsView != null && expressionsView.isVisible()) {
return expressionsView;
@@ -536,7 +543,6 @@ public class ExpressionInformationControlCreator implements IInformationControlC
public void viewerInputComplete(IViewerInputUpdate update) {
fViewer.setInput(fVariable = update.getInputElement());
}
-
}
protected final boolean fShowDetailPane;
@@ -571,4 +577,26 @@ public class ExpressionInformationControlCreator implements IInformationControlC
return new ExpressionInformationControl(parent, false);
}
+ private static Color getSystemForegroundColor() {
+ ColorRegistry colorRegistry = JFaceResources.getColorRegistry();
+ Color foreground = colorRegistry.get(JFacePreferences.INFORMATION_FOREGROUND_COLOR);
+
+ if (foreground == null) {
+ return JFaceColors.getInformationViewerForegroundColor(Display.getDefault());
+ }
+
+ return foreground;
+ }
+
+ public static Color getSystemBackgroundColor() {
+ ColorRegistry colorRegistry = JFaceResources.getColorRegistry();
+ Color background = colorRegistry.get(JFacePreferences.INFORMATION_BACKGROUND_COLOR);
+
+ if (background == null) {
+ return JFaceColors.getInformationViewerBackgroundColor(Display.getDefault());
+ }
+
+ return background;
+ }
+
}
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/actions/AbstractDsfRegisterGroupActions.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/actions/AbstractDsfRegisterGroupActions.java
index 7ed3bb22309..5a2f11438cb 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/actions/AbstractDsfRegisterGroupActions.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/actions/AbstractDsfRegisterGroupActions.java
@@ -202,7 +202,7 @@ public abstract class AbstractDsfRegisterGroupActions extends AbstractHandler {
protected boolean canAddRegisterGroup(IWorkbenchPart part, IStructuredSelection selection) {
try {
final SelectionDMContext selectionContext = new SelectionDMContext(selection);
- Query<Boolean> query = new Query<Boolean>() {
+ Query<Boolean> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Boolean> rm) {
IRegisters2 registersService;
@@ -267,7 +267,7 @@ public abstract class AbstractDsfRegisterGroupActions extends AbstractHandler {
return false;
}
- Query<Boolean> query = new Query<Boolean>() {
+ Query<Boolean> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<Boolean> rm) {
IRegisters2 registersService;
@@ -346,7 +346,7 @@ public abstract class AbstractDsfRegisterGroupActions extends AbstractHandler {
}
//Prepare to Query the service and check if the selected groups can be removed
- Query<Boolean> query = new Query<Boolean>() {
+ Query<Boolean> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Boolean> rm) {
IRegisters2 regService;
@@ -422,7 +422,7 @@ public abstract class AbstractDsfRegisterGroupActions extends AbstractHandler {
}
//Prepare to Query the service
- Query<Boolean> query = new Query<Boolean>() {
+ Query<Boolean> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Boolean> rm) {
IRegisters2 regService;
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/actions/MoveToLine.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/actions/MoveToLine.java
index cb55025b976..511e1dc64f3 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/actions/MoveToLine.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/actions/MoveToLine.java
@@ -51,7 +51,7 @@ public class MoveToLine implements IMoveToLine, IMoveToAddress {
DsfSession session = DsfSession.getSession(fContext.getSessionId());
if (session != null && session.isActive()) {
try {
- Query<Boolean> query = new Query<Boolean>() {
+ Query<Boolean> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Boolean> rm) {
DsfServicesTracker tracker = new DsfServicesTracker(DsfUIPlugin.getBundleContext(),
@@ -84,7 +84,7 @@ public class MoveToLine implements IMoveToLine, IMoveToAddress {
if (session != null && session.isActive()) {
Throwable exception = null;
try {
- Query<Object> query = new Query<Object>() {
+ Query<Object> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<Object> rm) {
DsfServicesTracker tracker = new DsfServicesTracker(DsfUIPlugin.getBundleContext(),
@@ -125,7 +125,7 @@ public class MoveToLine implements IMoveToLine, IMoveToAddress {
DsfSession session = DsfSession.getSession(fContext.getSessionId());
if (session != null && session.isActive()) {
try {
- Query<Boolean> query = new Query<Boolean>() {
+ Query<Boolean> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Boolean> rm) {
DsfServicesTracker tracker = new DsfServicesTracker(DsfUIPlugin.getBundleContext(),
@@ -158,7 +158,7 @@ public class MoveToLine implements IMoveToLine, IMoveToAddress {
if (session != null && session.isActive()) {
Throwable exception = null;
try {
- Query<Object> query = new Query<Object>() {
+ Query<Object> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<Object> rm) {
DsfServicesTracker tracker = new DsfServicesTracker(DsfUIPlugin.getBundleContext(),
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/actions/ResumeAtLine.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/actions/ResumeAtLine.java
index 9f388774a1a..68fa7f274ac 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/actions/ResumeAtLine.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/actions/ResumeAtLine.java
@@ -57,7 +57,7 @@ public class ResumeAtLine implements IResumeAtLine, IResumeAtAddress {
DsfSession session = DsfSession.getSession(fContext.getSessionId());
if (session != null && session.isActive()) {
try {
- Query<Boolean> query = new Query<Boolean>() {
+ Query<Boolean> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Boolean> rm) {
DsfServicesTracker tracker = new DsfServicesTracker(DsfUIPlugin.getBundleContext(),
@@ -95,7 +95,7 @@ public class ResumeAtLine implements IResumeAtLine, IResumeAtAddress {
if (session != null && session.isActive()) {
Throwable exception = null;
try {
- Query<Object> query = new Query<Object>() {
+ Query<Object> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<Object> rm) {
DsfServicesTracker tracker = new DsfServicesTracker(DsfUIPlugin.getBundleContext(),
@@ -136,7 +136,7 @@ public class ResumeAtLine implements IResumeAtLine, IResumeAtAddress {
DsfSession session = DsfSession.getSession(fContext.getSessionId());
if (session != null && session.isActive()) {
try {
- Query<Boolean> query = new Query<Boolean>() {
+ Query<Boolean> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Boolean> rm) {
DsfServicesTracker tracker = new DsfServicesTracker(DsfUIPlugin.getBundleContext(),
@@ -169,7 +169,7 @@ public class ResumeAtLine implements IResumeAtLine, IResumeAtAddress {
if (session != null && session.isActive()) {
Throwable exception = null;
try {
- Query<Object> query = new Query<Object>() {
+ Query<Object> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<Object> rm) {
DsfServicesTracker tracker = new DsfServicesTracker(DsfUIPlugin.getBundleContext(),
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/actions/RunToLine.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/actions/RunToLine.java
index f40fa3b7bb6..a734c6d2679 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/actions/RunToLine.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/actions/RunToLine.java
@@ -60,7 +60,7 @@ public class RunToLine implements IRunToLine, IRunToAddress {
DsfSession session = DsfSession.getSession(fContext.getSessionId());
if (session != null && session.isActive()) {
try {
- Query<Boolean> query = new Query<Boolean>() {
+ Query<Boolean> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Boolean> rm) {
DsfServicesTracker tracker = new DsfServicesTracker(DsfUIPlugin.getBundleContext(),
@@ -99,7 +99,7 @@ public class RunToLine implements IRunToLine, IRunToAddress {
if (session != null && session.isActive()) {
Throwable exception = null;
try {
- Query<Object> query = new Query<Object>() {
+ Query<Object> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<Object> rm) {
DsfServicesTracker tracker = new DsfServicesTracker(DsfUIPlugin.getBundleContext(),
@@ -140,7 +140,7 @@ public class RunToLine implements IRunToLine, IRunToAddress {
DsfSession session = DsfSession.getSession(fContext.getSessionId());
if (session != null && session.isActive()) {
try {
- Query<Boolean> query = new Query<Boolean>() {
+ Query<Boolean> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Boolean> rm) {
DsfServicesTracker tracker = new DsfServicesTracker(DsfUIPlugin.getBundleContext(),
@@ -173,7 +173,7 @@ public class RunToLine implements IRunToLine, IRunToAddress {
if (session != null && session.isActive()) {
Throwable exception = null;
try {
- Query<Object> query = new Query<Object>() {
+ Query<Object> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<Object> rm) {
DsfServicesTracker tracker = new DsfServicesTracker(DsfUIPlugin.getBundleContext(),
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/DisassemblyBackendDsf.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/DisassemblyBackendDsf.java
index c01adeaefee..d61cf3309da 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/DisassemblyBackendDsf.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/DisassemblyBackendDsf.java
@@ -25,6 +25,7 @@ import static org.eclipse.cdt.debug.internal.ui.disassembly.dsf.DisassemblyUtils
import java.math.BigInteger;
import java.text.MessageFormat;
+import java.util.List;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.RejectedExecutionException;
import java.util.concurrent.TimeUnit;
@@ -45,6 +46,7 @@ import org.eclipse.cdt.dsf.concurrent.ImmediateDataRequestMonitor;
import org.eclipse.cdt.dsf.concurrent.Query;
import org.eclipse.cdt.dsf.datamodel.DMContexts;
import org.eclipse.cdt.dsf.datamodel.IDMContext;
+import org.eclipse.cdt.dsf.debug.service.ICachingService;
import org.eclipse.cdt.dsf.debug.service.IDisassembly;
import org.eclipse.cdt.dsf.debug.service.IDisassembly.IDisassemblyDMContext;
import org.eclipse.cdt.dsf.debug.service.IDisassembly2;
@@ -56,7 +58,7 @@ import org.eclipse.cdt.dsf.debug.service.IFormattedValues;
import org.eclipse.cdt.dsf.debug.service.IFormattedValues.FormattedValueDMContext;
import org.eclipse.cdt.dsf.debug.service.IFormattedValues.FormattedValueDMData;
import org.eclipse.cdt.dsf.debug.service.IInstruction;
-import org.eclipse.cdt.dsf.debug.service.IInstructionWithRawOpcodes;
+import org.eclipse.cdt.dsf.debug.service.IInstructionWithRawOpcode;
import org.eclipse.cdt.dsf.debug.service.IInstructionWithSize;
import org.eclipse.cdt.dsf.debug.service.IMixedInstruction;
import org.eclipse.cdt.dsf.debug.service.IRegisters;
@@ -71,6 +73,7 @@ import org.eclipse.cdt.dsf.debug.service.ISourceLookup.ISourceLookupDMContext;
import org.eclipse.cdt.dsf.debug.service.IStack;
import org.eclipse.cdt.dsf.debug.service.IStack.IFrameDMContext;
import org.eclipse.cdt.dsf.debug.service.IStack.IFrameDMData;
+import org.eclipse.cdt.dsf.debug.service.command.ICommandControlService.ICommandControlRefreshAllDMEvent;
import org.eclipse.cdt.dsf.internal.ui.DsfUIPlugin;
import org.eclipse.cdt.dsf.service.DsfServiceEventHandler;
import org.eclipse.cdt.dsf.service.DsfServicesTracker;
@@ -131,7 +134,7 @@ public class DisassemblyBackendDsf extends AbstractDisassemblyBackend implements
tracker.dispose();
return disassSvc != null;
}
- Query<Boolean> query = new Query<Boolean>() {
+ Query<Boolean> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Boolean> rm) {
try {
@@ -419,7 +422,7 @@ public class DisassemblyBackendDsf extends AbstractDisassemblyBackend implements
return runControl.isSuspended(fTargetContext);
}
}
- Query<Boolean> query = new Query<Boolean>() {
+ Query<Boolean> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Boolean> rm) {
try {
@@ -460,6 +463,15 @@ public class DisassemblyBackendDsf extends AbstractDisassemblyBackend implements
}
@DsfServiceEventHandler
+ public void handleEvent(ICommandControlRefreshAllDMEvent event) {
+ if (fTargetContext == null) {
+ return;
+ }
+
+ fCallback.asyncExec(() -> fCallback.refresh());
+ }
+
+ @DsfServiceEventHandler
public void handleEvent(IExitedDMEvent event) {
if (fTargetContext == null) {
return;
@@ -564,7 +576,7 @@ public class DisassemblyBackendDsf extends AbstractDisassemblyBackend implements
public void handleCompleted() {
final BigInteger finalStartAddress = getData();
if (mixed) {
- final DataRequestMonitor<IMixedInstruction[]> disassemblyRequest = new DataRequestMonitor<IMixedInstruction[]>(
+ final DataRequestMonitor<IMixedInstruction[]> disassemblyRequest = new DataRequestMonitor<>(
executor, null) {
@Override
public void handleCompleted() {
@@ -616,8 +628,8 @@ public class DisassemblyBackendDsf extends AbstractDisassemblyBackend implements
});
}
} else {
- final DataRequestMonitor<IInstruction[]> disassemblyRequest = new DataRequestMonitor<IInstruction[]>(
- executor, null) {
+ final DataRequestMonitor<IInstruction[]> disassemblyRequest = new DataRequestMonitor<>(executor,
+ null) {
@Override
public void handleCompleted() {
if (!isCanceled() && getData() != null) {
@@ -739,14 +751,14 @@ public class DisassemblyBackendDsf extends AbstractDisassemblyBackend implements
functionOffset = ""; //$NON-NLS-1$
}
- BigInteger opCodes = null;
+ String opcode = null;
// Get raw Opcodes if available
- if (instruction instanceof IInstructionWithRawOpcodes) {
- opCodes = ((IInstructionWithRawOpcodes) instruction).getRawOpcodes();
+ if (instruction instanceof IInstructionWithRawOpcode) {
+ opcode = ((IInstructionWithRawOpcode) instruction).getRawOpcode();
}
p = fCallback.getDocument().insertDisassemblyLine(p, address, instrLength.intValue(), functionOffset,
- opCodes, instruction.getInstruction(), compilationPath, -1);
+ opcode, instruction.getInstruction(), compilationPath, -1);
if (p == null) {
break;
}
@@ -895,13 +907,13 @@ public class DisassemblyBackendDsf extends AbstractDisassemblyBackend implements
funcOffset = ""; //$NON-NLS-1$
}
- BigInteger opCodes = null;
- if (instruction instanceof IInstructionWithRawOpcodes) {
- opCodes = ((IInstructionWithRawOpcodes) instruction).getRawOpcodes();
+ String opcode = null;
+ if (instruction instanceof IInstructionWithRawOpcode) {
+ opcode = ((IInstructionWithRawOpcode) instruction).getRawOpcode();
}
p = fCallback.getDocument().insertDisassemblyLine(p, address, instrLength.intValue(), funcOffset,
- opCodes, instruction.getInstruction(), file, lineNumber);
+ opcode, instruction.getInstruction(), file, lineNumber);
if (p == null) {
break;
}
@@ -934,10 +946,10 @@ public class DisassemblyBackendDsf extends AbstractDisassemblyBackend implements
Object sourceElement = null;
final ISourceLookupDMContext ctx = DMContexts.getAncestorOfType(fTargetContext, ISourceLookupDMContext.class);
final DsfExecutor executor = getSession().getExecutor();
- Query<Object> query = new Query<Object>() {
+ Query<Object> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<Object> rm) {
- final DataRequestMonitor<Object> request = new DataRequestMonitor<Object>(executor, rm) {
+ final DataRequestMonitor<Object> request = new DataRequestMonitor<>(executor, rm) {
@Override
protected void handleSuccess() {
rm.setData(getData());
@@ -984,7 +996,7 @@ public class DisassemblyBackendDsf extends AbstractDisassemblyBackend implements
if (!hasFrameContext()) {
return null;
}
- Query<BigInteger> query = new Query<BigInteger>() {
+ Query<BigInteger> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<BigInteger> rm) {
evaluateAddressExpression(symbol, suppressError, rm);
@@ -1082,10 +1094,10 @@ public class DisassemblyBackendDsf extends AbstractDisassemblyBackend implements
// try reverse lookup
final ISourceLookupDMContext ctx = DMContexts.getAncestorOfType(fTargetContext, ISourceLookupDMContext.class);
final DsfExecutor executor = getSession().getExecutor();
- Query<String> query = new Query<String>() {
+ Query<String> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<String> rm) {
- final DataRequestMonitor<String> request = new DataRequestMonitor<String>(executor, rm) {
+ final DataRequestMonitor<String> request = new DataRequestMonitor<>(executor, rm) {
@Override
protected void handleSuccess() {
rm.setData(getData());
@@ -1108,8 +1120,7 @@ public class DisassemblyBackendDsf extends AbstractDisassemblyBackend implements
final IDisassemblyDMContext context = DMContexts.getAncestorOfType(fTargetContext, IDisassemblyDMContext.class);
final String finalFile = debuggerPath;
- final DataRequestMonitor<IMixedInstruction[]> disassemblyRequest = new DataRequestMonitor<IMixedInstruction[]>(
- executor, null) {
+ final DataRequestMonitor<IMixedInstruction[]> disassemblyRequest = new DataRequestMonitor<>(executor, null) {
@Override
public void handleCompleted() {
final IMixedInstruction[] data = getData();
@@ -1151,7 +1162,7 @@ public class DisassemblyBackendDsf extends AbstractDisassemblyBackend implements
return null;
}
final DsfExecutor executor = DsfSession.getSession(fDsfSessionId).getExecutor();
- Query<FormattedValueDMData> query = new Query<FormattedValueDMData>() {
+ Query<FormattedValueDMData> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<FormattedValueDMData> rm) {
IExecutionDMContext exeCtx = DMContexts.getAncestorOfType(fTargetFrameContext,
@@ -1202,7 +1213,7 @@ public class DisassemblyBackendDsf extends AbstractDisassemblyBackend implements
}
final DsfExecutor executor = DsfSession.getSession(fDsfSessionId).getExecutor();
- Query<FormattedValueDMData> query = new Query<FormattedValueDMData>() {
+ Query<FormattedValueDMData> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<FormattedValueDMData> rm) {
IExecutionDMContext exeCtx = DMContexts.getAncestorOfType(fTargetFrameContext,
@@ -1308,4 +1319,23 @@ public class DisassemblyBackendDsf extends AbstractDisassemblyBackend implements
protected void handleError(IStatus status) {
DsfUIPlugin.log(status);
}
+
+ @Override
+ public void clearCaches() {
+ final DsfExecutor executor = getSession().getExecutor();
+ executor.execute(new DsfRunnable() {
+ @Override
+ public void run() {
+ List.of(IStack.class, IDisassembly.class, IExpressions.class, IRunControl.class, IRegisters.class,
+ ISourceLookup.class).forEach((clazz) -> {
+ Object o = getService(clazz);
+ if (o instanceof ICachingService) {
+ ICachingService cs = (ICachingService) o;
+ cs.flushCache(getExecutionDMContext());
+ }
+ });
+ }
+ });
+
+ }
}
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/DisassemblyMessages.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/DisassemblyMessages.java
index 5812994e0a8..e282e5fee95 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/DisassemblyMessages.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/DisassemblyMessages.java
@@ -92,6 +92,10 @@ public final class DisassemblyMessages extends NLS {
public static String Disassembly_action_AddBreakpoint_errorTitle;
public static String Disassembly_action_AddBreakpoint_errorMessage;
public static String Disassembly_action_ToggleBreakpoint_accelerator;
+ public static String Disassembly_action_JumpToMemory_label;
+ public static String Disassembly_action_JumpToMemory_tooltip;
+ public static String Disassembly_action_JumpToMemory_errorTitle;
+ public static String Disassembly_action_JumpToMemory_errorMessage;
static {
NLS.initializeMessages(DisassemblyMessages.class.getName(), DisassemblyMessages.class);
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/DisassemblyMessages.properties b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/DisassemblyMessages.properties
index dea56eafa68..21ee653865a 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/DisassemblyMessages.properties
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/DisassemblyMessages.properties
@@ -32,6 +32,10 @@ Disassembly_action_TrackExpression_label=Track Expression
Disassembly_action_AddBreakpoint_label=Add Breakpoint...
Disassembly_action_AddBreakpoint_errorTitle=Error
Disassembly_action_AddBreakpoint_errorMessage=Unable to create breakpoint
+Disassembly_action_JumpToMemory_label=Jump To Memory
+Disassembly_action_JumpToMemory_tooltip=Open memory view and add memory monitor for address
+Disassembly_action_JumpToMemory_errorTitle=Error on jump to memory
+Disassembly_action_JumpToMemory_errorMessage=Unable to jump to memory location
Disassembly_GotoAddressDialog_title=Go to Address
Disassembly_GotoAddressDialog_label=Address expression:
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/DisassemblyPart.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/DisassemblyPart.java
index e40499ca0ac..73ab03b6f63 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/DisassemblyPart.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/DisassemblyPart.java
@@ -418,8 +418,7 @@ public abstract class DisassemblyPart extends WorkbenchPart
@Override
public void run() {
- fPCLastAddress = getTopAddress();
- refreshView(10);
+ refresh();
}
}
@@ -2934,9 +2933,10 @@ public abstract class DisassemblyPart extends WorkbenchPart
}
// update pc history trail
if (fPCHistory.size() > 1) {
+ final double bgLuminance = new HSL(fViewer.getTextWidget().getBackground().getRGB()).luminance;
HSL hsv = new HSL(fPCAnnotationRGB);
- double luminanceStep = (1 - hsv.luminance) / (fPCHistorySizeMax + 1);
- hsv.luminance = 1 - luminanceStep * (fPCHistorySizeMax - fPCHistory.size());
+ double luminanceStep = (bgLuminance - hsv.luminance) / (fPCHistorySizeMax + 1);
+ hsv.luminance = bgLuminance - luminanceStep * (fPCHistorySizeMax - fPCHistory.size());
for (ListIterator<AddressRangePosition> listIt = fPCHistory.listIterator(fPCHistory.size()); listIt
.hasPrevious();) {
AddressRangePosition pcPos = listIt.previous();
@@ -3275,4 +3275,12 @@ public abstract class DisassemblyPart extends WorkbenchPart
}
return bottomAddress;
}
+
+ @Override
+ public void refresh() {
+ fBackend.clearCaches();
+ asyncExec(() -> {
+ updatePC(PC_UNKNOWN);
+ });
+ }
}
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/OpcodeRulerColumn.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/OpcodeRulerColumn.java
index 43a09856829..417650219eb 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/OpcodeRulerColumn.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/OpcodeRulerColumn.java
@@ -18,7 +18,6 @@ import org.eclipse.cdt.debug.internal.ui.disassembly.dsf.DisassemblyPosition;
import org.eclipse.cdt.dsf.debug.internal.ui.disassembly.model.DisassemblyDocument;
import org.eclipse.cdt.dsf.debug.internal.ui.disassembly.preferences.DisassemblyPreferenceConstants;
import org.eclipse.cdt.dsf.debug.internal.ui.disassembly.provisional.DisassemblyRulerColumn;
-import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.util.PropertyChangeEvent;
@@ -30,10 +29,8 @@ public class OpcodeRulerColumn extends DisassemblyRulerColumn {
public static final String ID = "org.eclipse.cdt.dsf.ui.disassemblyColumn.opcode"; //$NON-NLS-1$
/** Maximum width of column (in characters) */
- private static final int MAXWIDTH = 20;
-
- private int fRadix;
- private String fRadixPrefix;
+ /** 15 bytes plus separator for typical 8-bit instruction words */
+ private static final int MAXWIDTH = 44;
/**
* Default constructor.
@@ -42,22 +39,6 @@ public class OpcodeRulerColumn extends DisassemblyRulerColumn {
super();
setBackground(getColor(DisassemblyPreferenceConstants.RULER_BACKGROUND_COLOR));
setForeground(getColor(DisassemblyPreferenceConstants.CODE_BYTES_COLOR));
- setRadix(getPreferenceStore().getInt(DisassemblyPreferenceConstants.OPCODE_RADIX));
- }
-
- public void setRadix(int radix) {
- fRadix = radix;
- setShowRadixPrefix();
- }
-
- public void setShowRadixPrefix() {
- if (fRadix == 16) {
- fRadixPrefix = "0x"; //$NON-NLS-1$
- } else if (fRadix == 8) {
- fRadixPrefix = "0"; //$NON-NLS-1$
- } else {
- fRadixPrefix = null;
- }
}
/*
@@ -73,25 +54,12 @@ public class OpcodeRulerColumn extends DisassemblyRulerColumn {
AddressRangePosition pos = doc.getDisassemblyPosition(offset);
if (pos instanceof DisassemblyPosition && pos.length > 0 && pos.offset == offset && pos.fValid) {
DisassemblyPosition disassPos = (DisassemblyPosition) pos;
- if (disassPos.fOpcodes != null) {
- // Format the output.
- String str = disassPos.fOpcodes.toString(fRadix);
- int prefixLength = 0;
-
- if (fRadixPrefix != null)
- prefixLength = fRadixPrefix.length();
-
- StringBuilder buf = new StringBuilder(nChars);
-
- if (prefixLength != 0)
- buf.append(fRadixPrefix);
-
- for (int i = str.length() + prefixLength; i < nChars; ++i)
- buf.append('0');
- buf.append(str);
- if (buf.length() > nChars)
- buf.delete(nChars, buf.length());
- return buf.toString();
+ if (disassPos.fRawOpcode != null) {
+ if (disassPos.fRawOpcode.length() > nChars) {
+ return disassPos.fRawOpcode.substring(0, nChars - 1) + "…"; //$NON-NLS-1$
+ } else {
+ return disassPos.fRawOpcode;
+ }
}
} else if (pos != null && !pos.fValid) {
return DOTS.substring(0, nChars);
@@ -106,21 +74,16 @@ public class OpcodeRulerColumn extends DisassemblyRulerColumn {
@Override
protected int computeNumberOfCharacters() {
DisassemblyDocument doc = (DisassemblyDocument) getParentRuler().getTextViewer().getDocument();
- return Math.min(MAXWIDTH, doc.getMaxOpcodeLength(fRadix));
+ return Math.min(MAXWIDTH, doc.getMaxOpcodeLength());
}
@Override
public void propertyChange(PropertyChangeEvent event) {
String property = event.getProperty();
- IPreferenceStore store = getPreferenceStore();
boolean needRedraw = false;
if (DisassemblyPreferenceConstants.CODE_BYTES_COLOR.equals(property)) {
setForeground(getColor(property));
needRedraw = true;
- } else if (DisassemblyPreferenceConstants.OPCODE_RADIX.equals(property)) {
- setRadix(store.getInt(property));
- layout(false);
- needRedraw = true;
} else if (DisassemblyPreferenceConstants.RULER_BACKGROUND_COLOR.equals(property)) {
setBackground(getColor(property));
needRedraw = true;
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/actions/RulerJumpToMemoryAction.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/actions/RulerJumpToMemoryAction.java
new file mode 100644
index 00000000000..8a2d21b6abe
--- /dev/null
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/actions/RulerJumpToMemoryAction.java
@@ -0,0 +1,182 @@
+/*******************************************************************************
+ * Copyright (c) 2021 Intel Corporation.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Intel Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.dsf.debug.internal.ui.disassembly.actions;
+
+import org.eclipse.cdt.core.IAddress;
+import org.eclipse.cdt.debug.ui.CDebugUIPlugin;
+import org.eclipse.cdt.dsf.debug.internal.ui.disassembly.DisassemblyMessages;
+import org.eclipse.cdt.dsf.debug.internal.ui.disassembly.provisional.DisassemblySelection;
+import org.eclipse.cdt.dsf.debug.internal.ui.disassembly.provisional.IDisassemblyPart;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.debug.core.DebugPlugin;
+import org.eclipse.debug.core.model.IMemoryBlock;
+import org.eclipse.debug.core.model.IMemoryBlockExtension;
+import org.eclipse.debug.core.model.IMemoryBlockRetrievalExtension;
+import org.eclipse.debug.internal.ui.views.memory.MemoryViewUtil;
+import org.eclipse.debug.ui.DebugUITools;
+import org.eclipse.debug.ui.IDebugUIConstants;
+import org.eclipse.debug.ui.memory.IMemoryRendering;
+import org.eclipse.debug.ui.memory.IMemoryRenderingContainer;
+import org.eclipse.debug.ui.memory.IMemoryRenderingSite;
+import org.eclipse.debug.ui.memory.IMemoryRenderingType;
+import org.eclipse.jface.dialogs.ErrorDialog;
+import org.eclipse.jface.text.BadLocationException;
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.IRegion;
+import org.eclipse.jface.text.ITextSelection;
+import org.eclipse.jface.text.TextSelection;
+import org.eclipse.jface.text.source.IVerticalRulerInfo;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.ui.IViewPart;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPartSite;
+import org.eclipse.ui.PartInitException;
+
+/**
+ * Ruler action to jump to a memory location using the address of the last row selection.
+ */
+@SuppressWarnings("restriction")
+public final class RulerJumpToMemoryAction extends AbstractDisassemblyRulerAction {
+ private static final String MEMORY_VIEW_ID = "org.eclipse.debug.ui.MemoryView"; //$NON-NLS-1$
+
+ public RulerJumpToMemoryAction(IDisassemblyPart disassemblyPart, IVerticalRulerInfo rulerInfo) {
+ super(disassemblyPart, rulerInfo);
+ setText(DisassemblyMessages.Disassembly_action_JumpToMemory_label);
+ setToolTipText(DisassemblyMessages.Disassembly_action_JumpToMemory_tooltip);
+ }
+
+ @Override
+ public void run() {
+ if (getRulerInfo() == null || getDisassemblyPart() == null) {
+ reportException(new Exception("The current selection is invalid.")); //$NON-NLS-1$
+ return;
+ }
+
+ IAddress address = getAddress();
+ if (address == null) {
+ reportException(new Exception("Failed to retrieve memory address.")); //$NON-NLS-1$
+ return;
+ }
+
+ IWorkbenchPartSite site = getDisassemblyPart().getSite();
+ if (site == null) {
+ reportException(new Exception("No workbench site available. Disassembly view not initialized?")); //$NON-NLS-1$
+ return;
+ }
+ IWorkbenchPage page = site.getPage();
+ if (page == null) {
+ reportException(new Exception("No workbench page available. Disassembly view not initialized?")); //$NON-NLS-1$
+ return;
+ }
+ IViewPart viewPart = page.findView(MEMORY_VIEW_ID);
+ if (viewPart != null) {
+ page.activate(viewPart);
+ } else {
+ try {
+ viewPart = page.showView(MEMORY_VIEW_ID);
+ } catch (PartInitException e) {
+ reportException(e);
+ return;
+ }
+ }
+
+ if (!(viewPart instanceof IMemoryRenderingSite)) {
+ reportException(new Exception("Failed to open memory view.")); //$NON-NLS-1$
+ return;
+ }
+
+ addMemoryBlock((IMemoryRenderingSite) viewPart, address.toHexAddressString());
+ }
+
+ /**
+ * Add memory block for the given address.
+ *
+ * @param memoryView the memory view
+ * @param address the memory address to add the block for
+ */
+ private void addMemoryBlock(IMemoryRenderingSite memoryView, String address) {
+ try {
+ IAdaptable debugContext = DebugUITools.getPartDebugContext(getDisassemblyPart().getSite());
+
+ IMemoryBlockRetrievalExtension memRetrieval = (IMemoryBlockRetrievalExtension) MemoryViewUtil
+ .getMemoryBlockRetrieval(debugContext);
+
+ // get extended memory block with the expression entered
+ IMemoryBlockExtension memBlock = memRetrieval.getExtendedMemoryBlock(address, debugContext);
+
+ // add block to memory block manager
+ if (memBlock == null) {
+ throw new Exception("Failed to retrieve memory block."); //$NON-NLS-1$
+ }
+ IMemoryBlock[] memArray = new IMemoryBlock[] { memBlock };
+
+ DebugPlugin.getDefault().getMemoryBlockManager().addMemoryBlocks(memArray);
+
+ IMemoryRenderingType renderingType = DebugUITools.getMemoryRenderingManager()
+ .getPrimaryRenderingType(memBlock);
+
+ IMemoryRendering rendering = renderingType.createRendering();
+
+ IMemoryRenderingContainer container = memoryView.getContainer(IDebugUIConstants.ID_RENDERING_VIEW_PANE_1);
+
+ rendering.init(container, memBlock);
+ container.addMemoryRendering(rendering);
+ } catch (Exception e) {
+ reportException(e);
+ }
+ }
+
+ /**
+ * @return the address from the current selection, or <code>null</code>
+ */
+ private IAddress getAddress() {
+ int lastLine = getRulerInfo().getLineOfLastMouseButtonActivity();
+ if (lastLine < 0) {
+ return null;
+ }
+ ISelectionProvider provider = getDisassemblyPart().getSite().getSelectionProvider();
+ if (provider == null) {
+ return null;
+ }
+ IDocument document = getDisassemblyPart().getTextViewer().getDocument();
+ if (document == null) {
+ return null;
+ }
+
+ IRegion region;
+ try {
+ region = document.getLineInformation(lastLine);
+ } catch (BadLocationException e) {
+ return null;
+ }
+ ITextSelection textSelection = new TextSelection(document, region.getOffset(), 0);
+ DisassemblySelection selection = new DisassemblySelection(textSelection, getDisassemblyPart());
+ return selection.getStartAddress();
+ }
+
+ /**
+ * Report an error to the user.
+ *
+ * @param e underlying exception
+ */
+ private void reportException(Exception e) {
+ IStatus status = new Status(IStatus.ERROR, CDebugUIPlugin.PLUGIN_ID, "Error on jump to memory: ", e); //$NON-NLS-1$
+ ErrorDialog.openError(getDisassemblyPart().getSite().getShell(),
+ DisassemblyMessages.Disassembly_action_JumpToMemory_errorTitle,
+ DisassemblyMessages.Disassembly_action_JumpToMemory_errorMessage, status);
+ CDebugUIPlugin.log(status);
+ }
+}
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/actions/RulerJumpToMemoryActionDelegate.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/actions/RulerJumpToMemoryActionDelegate.java
new file mode 100644
index 00000000000..227064522c5
--- /dev/null
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/actions/RulerJumpToMemoryActionDelegate.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2021 Intel Corporation.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Intel Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.dsf.debug.internal.ui.disassembly.actions;
+
+import org.eclipse.cdt.dsf.debug.internal.ui.disassembly.provisional.IDisassemblyPart;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.text.source.IVerticalRulerInfo;
+
+/**
+ * Ruler jump to memory delegate for disassembly parts.
+ */
+public class RulerJumpToMemoryActionDelegate extends AbstractDisassemblyRulerActionDelegate {
+
+ /*
+ * @see org.eclipse.cdt.dsf.debug.internal.ui.disassembly.actions.AbstractDisassemblyRulerActionDelegate#createAction(org.eclipse.cdt.dsf.debug.internal.ui.disassembly.provisional.IDisassemblyPart, org.eclipse.jface.text.source.IVerticalRulerInfo)
+ */
+ @Override
+ protected IAction createAction(IDisassemblyPart disassemblyPart, IVerticalRulerInfo rulerInfo) {
+ return new RulerJumpToMemoryAction(disassemblyPart, rulerInfo);
+ }
+}
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/actions/RulerJumpToMemoryHandler.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/actions/RulerJumpToMemoryHandler.java
new file mode 100644
index 00000000000..14f4ff10b17
--- /dev/null
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/actions/RulerJumpToMemoryHandler.java
@@ -0,0 +1,43 @@
+/*******************************************************************************
+ * Copyright (c) 2021 Intel Corporation.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Intel Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.dsf.debug.internal.ui.disassembly.actions;
+
+import org.eclipse.cdt.dsf.debug.internal.ui.disassembly.provisional.IDisassemblyPart;
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.jface.text.source.IVerticalRulerInfo;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.handlers.HandlerUtil;
+
+/**
+ * Default handler for the jump to memory command in the disassembly ruler.
+ *
+ * @since 2.10
+ */
+public class RulerJumpToMemoryHandler extends AbstractHandler {
+
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ IWorkbenchPart part = HandlerUtil.getActivePartChecked(event);
+ if (part instanceof IDisassemblyPart) {
+ IDisassemblyPart disassemblyPart = (IDisassemblyPart) part;
+ final IVerticalRulerInfo rulerInfo = part.getAdapter(IVerticalRulerInfo.class);
+ if (rulerInfo != null) {
+ new RulerJumpToMemoryAction(disassemblyPart, rulerInfo).run();
+ }
+ }
+ return null;
+ }
+}
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/model/DisassemblyDocument.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/model/DisassemblyDocument.java
index 08bd832e0ab..157fa4666e4 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/model/DisassemblyDocument.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/model/DisassemblyDocument.java
@@ -24,6 +24,7 @@ import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.StringJoiner;
import org.eclipse.cdt.debug.internal.ui.disassembly.dsf.AddressRangePosition;
import org.eclipse.cdt.debug.internal.ui.disassembly.dsf.DisassemblyPosition;
@@ -73,7 +74,8 @@ public class DisassemblyDocument extends REDDocument implements IDisassemblyDocu
private final Map<IStorage, SourceFileInfo> fFileInfoMap = new HashMap<>();
private int fMaxFunctionLength = 0;
- private BigInteger fMaxOpcodeLength = null;
+ /** Max opcode length is the maximum string length of the opcode strings */
+ private int fMaxOpcodeLength = 0;
private boolean fShowAddresses = false;
private int fRadix = 16;
@@ -150,27 +152,12 @@ public class DisassemblyDocument extends REDDocument implements IDisassemblyDocu
return fMaxFunctionLength;
}
- public void setMaxOpcodeLength(BigInteger longOpcode) {
- fMaxOpcodeLength = longOpcode;
+ public void setMaxOpcodeLength(int opcodeLength) {
+ fMaxOpcodeLength = opcodeLength;
}
- public int getMaxOpcodeLength(int radix) {
- int retVal = 0;
- if (fMaxOpcodeLength != null) {
- String str = fMaxOpcodeLength.toString(radix);
- retVal = str.length();
- switch (radix) {
- case 8:
- retVal += 1; // Padded for 0 prefix
- break;
- case 16:
- retVal += 2; // Padded for 0x prefix
- break;
- default:
- break;
- }
- }
- return retVal;
+ public int getMaxOpcodeLength() {
+ return fMaxOpcodeLength;
}
public int getAddressLength() {
@@ -706,9 +693,10 @@ public class DisassemblyDocument extends REDDocument implements IDisassemblyDocu
if (functionLength > fMaxFunctionLength) {
fMaxFunctionLength = functionLength;
}
- if (disassPos.fOpcodes != null) {
- if (fMaxOpcodeLength == null || fMaxOpcodeLength.compareTo(disassPos.fOpcodes) == -1) {
- fMaxOpcodeLength = disassPos.fOpcodes;
+ if (disassPos.fRawOpcode != null) {
+ int opcodeLength = disassPos.fRawOpcode.length();
+ if (opcodeLength > fMaxOpcodeLength) {
+ fMaxOpcodeLength = opcodeLength;
}
}
if (fNumberOfInstructions < 100 && fMeanSizeOfInstructions < 16.0) {
@@ -1009,21 +997,32 @@ public class DisassemblyDocument extends REDDocument implements IDisassemblyDocu
return pos;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.debug.internal.ui.disassembly.dsf.IDisassemblyDocument#insertDisassemblyLine(org.eclipse.cdt.debug.internal.ui.disassembly.dsf.AddressRangePosition, java.math.BigInteger, int, java.lang.String, java.lang.String, java.lang.String, int)
- */
@Override
public AddressRangePosition insertDisassemblyLine(AddressRangePosition pos, BigInteger address, int length,
String functionOffset, String instruction, String file, int lineNr) throws BadLocationException {
- return insertDisassemblyLine(pos, address, length, functionOffset, null, instruction, file, lineNr);
+ return insertDisassemblyLine(pos, address, length, functionOffset, (String) null, instruction, file, lineNr);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.debug.internal.ui.disassembly.dsf.IDisassemblyDocument#insertDisassemblyLine(org.eclipse.cdt.debug.internal.ui.disassembly.dsf.AddressRangePosition, java.math.BigInteger, int, java.lang.String, java.lang.String, java.lang.String, int)
- */
@Override
public AddressRangePosition insertDisassemblyLine(AddressRangePosition pos, BigInteger address, int length,
- String functionOffset, BigInteger opcode, String instruction, String file, int lineNr)
+ String functionOffset, Byte[] opcode, String instruction, String file, int lineNr)
+ throws BadLocationException {
+
+ String opcodeString = "??"; //$NON-NLS-1$
+ if (opcode != null && opcode.length > 0) {
+ StringJoiner opcodeStringJoiner = new StringJoiner(" "); //$NON-NLS-1$
+ for (int i = 0; i < opcode.length; i++) {
+ opcodeStringJoiner.add(String.format("%02x", //$NON-NLS-1$
+ opcode[i].intValue() & 0xff));
+ }
+ opcodeString = opcodeStringJoiner.toString();
+ }
+ return insertDisassemblyLine(pos, address, length, functionOffset, opcodeString, instruction, file, lineNr);
+ }
+
+ @Override
+ public AddressRangePosition insertDisassemblyLine(AddressRangePosition pos, BigInteger address, int length,
+ String functionOffset, String rawOpcode, String instruction, String file, int lineNr)
throws BadLocationException {
assert isGuiThread();
String disassLine = null;
@@ -1035,14 +1034,15 @@ public class DisassemblyDocument extends REDDocument implements IDisassemblyDocu
AddressRangePosition disassPos;
if (lineNr < 0) {
disassPos = new DisassemblyPosition(0, disassLine.length(), address, BigInteger.valueOf(length),
- functionOffset, opcode);
+ functionOffset, rawOpcode);
} else {
disassPos = new DisassemblyWithSourcePosition(0, disassLine.length(), address, BigInteger.valueOf(length),
- functionOffset, opcode, file, lineNr);
+ functionOffset, rawOpcode, file, lineNr);
}
pos = insertAddressRange(pos, disassPos, disassLine, true);
addDisassemblyPosition(disassPos);
return pos;
+
}
/**
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/model/DisassemblyWithSourcePosition.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/model/DisassemblyWithSourcePosition.java
index a4ce9b845d7..4423831e23d 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/model/DisassemblyWithSourcePosition.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/model/DisassemblyWithSourcePosition.java
@@ -31,11 +31,11 @@ public class DisassemblyWithSourcePosition extends DisassemblyPosition {
* @param addressOffset
* @param addressLength
* @param functionOffset
- * @param opcode
+ * @param rawOpcode String of opcodes as it will be displayed to users. Can be null which is handled the same as empty string.
*/
public DisassemblyWithSourcePosition(int offset, int length, BigInteger addressOffset, BigInteger addressLength,
- String functionOffset, BigInteger opcode, String file, int lineNr) {
- super(offset, length, addressOffset, addressLength, functionOffset, opcode);
+ String functionOffset, String rawOpcode, String file, int lineNr) {
+ super(offset, length, addressOffset, addressLength, functionOffset, rawOpcode);
fFile = file;
fLine = lineNr;
}
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/preferences/DisassemblyPreferenceConstants.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/preferences/DisassemblyPreferenceConstants.java
index 44687f1666f..ce914f64175 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/preferences/DisassemblyPreferenceConstants.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/preferences/DisassemblyPreferenceConstants.java
@@ -33,7 +33,6 @@ public class DisassemblyPreferenceConstants {
public static final String SHOW_SOURCE = "disassembly.showSource"; //$NON-NLS-1$
public static final String SHOW_SYMBOLS = "disassembly.showSymbols"; //$NON-NLS-1$
public static final String ADDRESS_RADIX = "disassembly.addressRadix"; //$NON-NLS-1$
- public static final String OPCODE_RADIX = "disassembly.opcodeRadix"; //$NON-NLS-1$
public static final String SHOW_ADDRESS_RADIX = "disassembly.showAddressRadix"; //$NON-NLS-1$
public static final String ADDRESS_COLOR = "disassembly.addressColor"; //$NON-NLS-1$
public static final String FUNCTION_OFFSETS_COLOR = "disassembly.functionOffsetsColor"; //$NON-NLS-1$
@@ -65,7 +64,6 @@ public class DisassemblyPreferenceConstants {
store.setDefault(SHOW_SOURCE, true);
store.setDefault(SHOW_SYMBOLS, true);
store.setDefault(ADDRESS_RADIX, 16);
- store.setDefault(OPCODE_RADIX, 16);
store.setDefault(SHOW_ADDRESS_RADIX, false);
store.setDefault(AVOID_READ_BEFORE_PC, false);
PreferenceConverter.setDefault(store, ADDRESS_COLOR, new RGB(0, 96, 0));
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/preferences/DisassemblyPreferencePage.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/preferences/DisassemblyPreferencePage.java
index b63e96698ff..c3e15ae4d1e 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/preferences/DisassemblyPreferencePage.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/preferences/DisassemblyPreferencePage.java
@@ -57,7 +57,6 @@ public class DisassemblyPreferencePage extends PreferencePage implements IWorkbe
}
};
private Combo fAddressFormatCombo;
- private Combo fOpcodeFormatCombo;
private final static String[] fcRadixItems = { DisassemblyMessages.DisassemblyPreferencePage_radix_octal,
DisassemblyMessages.DisassemblyPreferencePage_radix_decimal,
DisassemblyMessages.DisassemblyPreferencePage_radix_hexadecimal, };
@@ -104,10 +103,6 @@ public class DisassemblyPreferencePage extends PreferencePage implements IWorkbe
Button showRadixCB = addCheckBox(composite, label, DisassemblyPreferenceConstants.SHOW_ADDRESS_RADIX, 0);
showRadixCB.setToolTipText(DisassemblyMessages.DisassemblyPreferencePage_showRadixTooltip);
- label = DisassemblyMessages.DisassemblyPreferencePage_OpcodeFormat;
- fOpcodeFormatCombo = addComboBox(composite, label, DisassemblyPreferenceConstants.OPCODE_RADIX, fcRadixItems);
- fOpcodeFormatCombo.setToolTipText(DisassemblyMessages.DisassemblyPreferencePage_OpcodeFormatTooltip);
-
label = DisassemblyMessages.DisassemblyPreferencePage_showSource;
Button showSourceCB = addCheckBox(composite, label, DisassemblyPreferenceConstants.SHOW_SOURCE, 0);
showSourceCB.setToolTipText(DisassemblyMessages.DisassemblyPreferencePage_showSourceTooltip);
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/provisional/DisassemblyRulerColumn.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/provisional/DisassemblyRulerColumn.java
index 35ca013667b..a8b970c1e8c 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/provisional/DisassemblyRulerColumn.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/provisional/DisassemblyRulerColumn.java
@@ -73,18 +73,12 @@ public class DisassemblyRulerColumn extends AbstractContributedRulerColumn imple
*/
class InternalListener implements IViewportListener, ITextListener, ISelectionChangedListener {
- /*
- * @see IViewportListener#viewportChanged(int)
- */
@Override
public void viewportChanged(int verticalPosition) {
if (verticalPosition != fScrollPos)
redraw();
}
- /*
- * @see ITextListener#textChanged(TextEvent)
- */
@Override
public void textChanged(TextEvent event) {
@@ -102,9 +96,6 @@ public class DisassemblyRulerColumn extends AbstractContributedRulerColumn imple
}
- /*
- * @see org.eclipse.jface.viewers.ISelectionChangedListener#selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent)
- */
@Override
public void selectionChanged(SelectionChangedEvent event) {
postRedraw();
@@ -125,9 +116,6 @@ public class DisassemblyRulerColumn extends AbstractContributedRulerColumn imple
/** The auto scroll direction */
private int fAutoScrollDirection;
- /*
- * @see org.eclipse.swt.events.MouseListener#mouseUp(org.eclipse.swt.events.MouseEvent)
- */
@Override
public void mouseUp(MouseEvent event) {
// see bug 45700
@@ -138,9 +126,6 @@ public class DisassemblyRulerColumn extends AbstractContributedRulerColumn imple
}
}
- /*
- * @see org.eclipse.swt.events.MouseListener#mouseDown(org.eclipse.swt.events.MouseEvent)
- */
@Override
public void mouseDown(MouseEvent event) {
fParentRuler.setLocationOfLastMouseButtonActivity(event.x, event.y);
@@ -150,9 +135,6 @@ public class DisassemblyRulerColumn extends AbstractContributedRulerColumn imple
}
}
- /*
- * @see org.eclipse.swt.events.MouseListener#mouseDoubleClick(org.eclipse.swt.events.MouseEvent)
- */
@Override
public void mouseDoubleClick(MouseEvent event) {
fParentRuler.setLocationOfLastMouseButtonActivity(event.x, event.y);
@@ -160,9 +142,6 @@ public class DisassemblyRulerColumn extends AbstractContributedRulerColumn imple
stopAutoScroll();
}
- /*
- * @see org.eclipse.swt.events.MouseMoveListener#mouseMove(org.eclipse.swt.events.MouseEvent)
- */
@Override
public void mouseMove(MouseEvent event) {
if (!autoScroll(event)) {
@@ -171,23 +150,14 @@ public class DisassemblyRulerColumn extends AbstractContributedRulerColumn imple
}
}
- /*
- * @see org.eclipse.swt.events.MouseTrackListener#mouseEnter(org.eclipse.swt.events.MouseEvent)
- */
@Override
public void mouseEnter(MouseEvent event) {
}
- /*
- * @see org.eclipse.swt.events.MouseTrackListener#mouseExit(org.eclipse.swt.events.MouseEvent)
- */
@Override
public void mouseExit(MouseEvent event) {
}
- /*
- * @see org.eclipse.swt.events.MouseTrackListener#mouseHover(org.eclipse.swt.events.MouseEvent)
- */
@Override
public void mouseHover(MouseEvent event) {
}
@@ -478,17 +448,11 @@ public class DisassemblyRulerColumn extends AbstractContributedRulerColumn imple
return DsfUIPlugin.getDefault().getPreferenceStore();
}
- /*
- * @see IVerticalRulerColumn#getControl()
- */
@Override
public Control getControl() {
return fCanvas;
}
- /*
- * @see IVerticalRuleColumnr#getWidth
- */
@Override
public int getWidth() {
return fIndentation[0];
@@ -587,9 +551,6 @@ public class DisassemblyRulerColumn extends AbstractContributedRulerColumn imple
}
}
- /*
- * @see IVerticalRulerColumn#createControl(CompositeRuler, Composite)
- */
@Override
public Control createControl(CompositeRuler parentRuler, Composite parentControl) {
@@ -932,9 +893,8 @@ public class DisassemblyRulerColumn extends AbstractContributedRulerColumn imple
int widgetBaseline = fCachedTextWidget.getBaseline();
FontMetrics fm = gc.getFontMetrics();
int fontBaseline = fm.getAscent() + fm.getLeading();
- Assert.isTrue(widgetBaseline >= fontBaseline);
int baselineBias = widgetBaseline - fontBaseline;
- return baselineBias;
+ return Math.max(0, baselineBias);
}
/**
@@ -977,9 +937,6 @@ public class DisassemblyRulerColumn extends AbstractContributedRulerColumn imple
}
}
- /*
- * @see IVerticalRulerColumn#redraw()
- */
@Override
public void redraw() {
@@ -995,16 +952,10 @@ public class DisassemblyRulerColumn extends AbstractContributedRulerColumn imple
}
}
- /*
- * @see IVerticalRulerColumn#setModel(IAnnotationModel)
- */
@Override
public void setModel(IAnnotationModel model) {
}
- /*
- * @see IVerticalRulerColumn#setFont(Font)
- */
@Override
public void setFont(Font font) {
fFont = font;
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/sourcelookup/DsfSourceSelectionResolver.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/sourcelookup/DsfSourceSelectionResolver.java
index 8aee0d5cc99..da30e8a50e5 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/sourcelookup/DsfSourceSelectionResolver.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/sourcelookup/DsfSourceSelectionResolver.java
@@ -27,6 +27,7 @@ import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.editors.text.TextEditor;
import org.eclipse.ui.texteditor.ITextEditor;
@@ -109,7 +110,7 @@ public class DsfSourceSelectionResolver implements Runnable {
return fEditorPage;
}
- final IWorkbench wb = DsfUIPlugin.getDefault().getWorkbench();
+ final IWorkbench wb = PlatformUI.getWorkbench();
// Run in UI thread to access UI resources
ResolveEditorRunnable reditorRunnable = new ResolveEditorRunnable() {
TextEditor result = null;
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/viewmodel/actions/DsfViewMemoryHandler.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/viewmodel/actions/DsfViewMemoryHandler.java
index 36e3c7bef7f..d01c8fc3e6f 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/viewmodel/actions/DsfViewMemoryHandler.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/viewmodel/actions/DsfViewMemoryHandler.java
@@ -61,6 +61,7 @@ import org.eclipse.ui.ISources;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
/**
* DSF version of handler for viewing variable in memory view command.
@@ -200,7 +201,7 @@ public class DsfViewMemoryHandler extends AbstractHandler {
private void showInMemoryView(VariableExpressionVMC contexts[]) {
try {
- IWorkbenchPage page = DsfUIPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getActivePage();
+ IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
IViewPart memoryView = page.showView(IDebugUIConstants.ID_MEMORY_VIEW, null, IWorkbenchPage.VIEW_ACTIVATE);
final IMemoryRenderingSite memRendSite = (IMemoryRenderingSite) memoryView;
for (final VariableExpressionVMC context : contexts) {
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/AbstractDsfDebugTextHover.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/AbstractDsfDebugTextHover.java
index b8fbf964aa2..9fbcafff3a6 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/AbstractDsfDebugTextHover.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/AbstractDsfDebugTextHover.java
@@ -230,7 +230,7 @@ abstract public class AbstractDsfDebugTextHover extends AbstractDebugTextHover i
if (frameDmc != null) {
final DsfSession dsfSession = DsfSession.getSession(frameDmc.getSessionId());
if (dsfSession != null) {
- Callable<IExpressionDMContext> callable = new Callable<IExpressionDMContext>() {
+ Callable<IExpressionDMContext> callable = new Callable<>() {
@Override
public IExpressionDMContext call() throws Exception {
DsfServicesTracker tracker = new DsfServicesTracker(DsfUIPlugin.getBundleContext(),
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/actions/DsfStepIntoSelectionCommand.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/actions/DsfStepIntoSelectionCommand.java
index 38693c6db1a..b3a4f03d8fc 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/actions/DsfStepIntoSelectionCommand.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/actions/DsfStepIntoSelectionCommand.java
@@ -118,7 +118,7 @@ public class DsfStepIntoSelectionCommand extends AbstractDebugCommand
if (fSession != null && fSession.isActive()) {
try {
- Query<Boolean> query = new Query<Boolean>() {
+ Query<Boolean> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Boolean> rm) {
IRunControl3 runControl = fTracker.getService(IRunControl3.class);
@@ -149,7 +149,7 @@ public class DsfStepIntoSelectionCommand extends AbstractDebugCommand
if (fSession != null && fSession.isActive()) {
Throwable exception = null;
try {
- Query<Object> query = new Query<Object>() {
+ Query<Object> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<Object> rm) {
IRunControl3 runControl = fTracker.getService(IRunControl3.class);
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/sourcelookup/DsfSourceDisplayAdapter.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/sourcelookup/DsfSourceDisplayAdapter.java
index 0e7bb3a9552..d2c9f815c51 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/sourcelookup/DsfSourceDisplayAdapter.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/sourcelookup/DsfSourceDisplayAdapter.java
@@ -43,6 +43,7 @@ import org.eclipse.cdt.dsf.debug.service.IRunControl.StateChangeReason;
import org.eclipse.cdt.dsf.debug.service.IStack;
import org.eclipse.cdt.dsf.debug.service.IStack.IFrameDMContext;
import org.eclipse.cdt.dsf.debug.service.IStack.IFrameDMData;
+import org.eclipse.cdt.dsf.debug.service.command.ICommandControlService;
import org.eclipse.cdt.dsf.debug.sourcelookup.DsfSourceLookupParticipant;
import org.eclipse.cdt.dsf.debug.ui.viewmodel.SteppingController;
import org.eclipse.cdt.dsf.debug.ui.viewmodel.SteppingController.ISteppingControlParticipant;
@@ -376,7 +377,7 @@ public class DsfSourceDisplayAdapter implements ISourceDisplay, ISteppingControl
}
private boolean shouldCancelSelectionChange() {
- Query<Boolean> delaySelectionChangeQuery = new Query<Boolean>() {
+ Query<Boolean> delaySelectionChangeQuery = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Boolean> rm) {
IExecutionDMContext execCtx = DMContexts.getAncestorOfType(fFrameData.fDmc,
@@ -986,6 +987,28 @@ public class DsfSourceDisplayAdapter implements ISourceDisplay, ISteppingControl
startAnnotationClearingJob(e.getDMContext());
}
+ /**
+ * @noreference This method is not intended to be referenced by clients.
+ */
+ @DsfServiceEventHandler
+ public void eventDispatched(final ICommandControlService.ICommandControlRefreshAllDMEvent e) {
+ if (DEBUG) {
+ System.out.println("[DsfSourceDisplayAdapter] eventDispatched e=" + e); //$NON-NLS-1$
+ }
+ // trigger source display immediately (should be optional?)
+ Display.getDefault().asyncExec(() -> {
+ Object context = DebugUITools.getDebugContext();
+ if (context instanceof IDMVMContext) {
+ final IDMContext dmc = ((IDMVMContext) context).getDMContext();
+ if (dmc instanceof IFrameDMContext && DMContexts.isAncestorOf(dmc, e.getDMContext())) {
+ IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
+ doDisplaySource((IFrameDMContext) dmc, page, false, true);
+ return;
+ }
+ }
+ });
+ }
+
@DsfServiceEventHandler
public void eventDispatched(final IRunControl.ISuspendedDMEvent e) {
updateStepTiming();
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/AbstractDebugVMAdapter.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/AbstractDebugVMAdapter.java
index 10a4b7eb6ed..352d921ccee 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/AbstractDebugVMAdapter.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/AbstractDebugVMAdapter.java
@@ -18,11 +18,21 @@ import java.util.concurrent.RejectedExecutionException;
import org.eclipse.cdt.dsf.concurrent.DsfRunnable;
import org.eclipse.cdt.dsf.debug.service.IRunControl;
import org.eclipse.cdt.dsf.debug.service.IRunControl.ISuspendedDMEvent;
+import org.eclipse.cdt.dsf.debug.service.command.ICommandControlService.ICommandControlRefreshAllDMEvent;
import org.eclipse.cdt.dsf.debug.ui.viewmodel.SteppingController.ISteppingControlParticipant;
+import org.eclipse.cdt.dsf.debug.ui.viewmodel.actions.IRefreshAllTarget;
+import org.eclipse.cdt.dsf.internal.ui.DsfUIPlugin;
+import org.eclipse.cdt.dsf.service.DsfServiceEventHandler;
import org.eclipse.cdt.dsf.service.DsfSession;
+import org.eclipse.cdt.dsf.ui.viewmodel.IVMAdapter;
import org.eclipse.cdt.dsf.ui.viewmodel.IVMProvider;
import org.eclipse.cdt.dsf.ui.viewmodel.datamodel.AbstractDMVMAdapter;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext;
+import org.eclipse.jface.viewers.StructuredSelection;
/**
* Base class for VM adapters used for implementing a debugger integration.
@@ -78,4 +88,34 @@ public class AbstractDebugVMAdapter extends AbstractDMVMAdapter implements IStep
} // Do nothing if session is shut down.
super.dispose();
}
+
+ @DsfServiceEventHandler
+ public void eventDispatched(ICommandControlRefreshAllDMEvent event) {
+ if (isDisposed()) {
+ return;
+ }
+
+ IRefreshAllTarget refreshTarget = (IRefreshAllTarget) getSession().getModelAdapter(IRefreshAllTarget.class);
+ if (refreshTarget == null) {
+ return;
+ }
+ StructuredSelection debugContext = new StructuredSelection(new IAdaptable() {
+ @Override
+ public <T> T getAdapter(Class<T> adapter) {
+ if (IVMAdapter.class.equals(adapter)) {
+ return adapter.cast(AbstractDebugVMAdapter.this);
+ }
+ return null;
+ }
+ });
+ try {
+ refreshTarget.refresh(debugContext);
+ } catch (CoreException e) {
+ // This is probably unreachable as the DefaultRefreshAllTarget.refresh does not
+ // throw CoreException in this case.
+ DsfUIPlugin.log(new Status(IStatus.ERROR, DsfUIPlugin.PLUGIN_ID,
+ "Failed to refresh following receipt of a Refresh All Event.", e)); //$NON-NLS-1$
+
+ }
+ }
}
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/breakpoints/BreakpointVMProvider.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/breakpoints/BreakpointVMProvider.java
index d699947880b..62c26174917 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/breakpoints/BreakpointVMProvider.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/breakpoints/BreakpointVMProvider.java
@@ -29,11 +29,11 @@ import org.eclipse.cdt.dsf.datamodel.IDMContext;
import org.eclipse.cdt.dsf.debug.service.IBreakpoints.IBreakpointsTargetDMContext;
import org.eclipse.cdt.dsf.internal.ui.DsfUIPlugin;
import org.eclipse.cdt.dsf.ui.viewmodel.AbstractVMAdapter;
-import org.eclipse.cdt.dsf.ui.viewmodel.AbstractVMProvider;
import org.eclipse.cdt.dsf.ui.viewmodel.IVMModelProxy;
import org.eclipse.cdt.dsf.ui.viewmodel.IVMNode;
import org.eclipse.cdt.dsf.ui.viewmodel.datamodel.IDMVMContext;
import org.eclipse.cdt.dsf.ui.viewmodel.datamodel.RootDMVMNode;
+import org.eclipse.cdt.dsf.ui.viewmodel.update.AbstractCachingVMProvider;
import org.eclipse.core.resources.IMarkerDelta;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IStatus;
@@ -65,7 +65,7 @@ import org.eclipse.ui.IWorkbenchWindow;
*
* @since 2.1
*/
-public class BreakpointVMProvider extends AbstractVMProvider {
+public class BreakpointVMProvider extends AbstractCachingVMProvider {
private IPropertyChangeListener fPresentationContextListener = new IPropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent event) {
@@ -166,7 +166,7 @@ public class BreakpointVMProvider extends AbstractVMProvider {
private final Map<TreePath, ContainerBreakpointsCache> fContainerBreakpointsCacheMap = new HashMap<>();
- private DataCache<IBreakpoint[]> fFilteredBreakpointsCache = new DataCache<IBreakpoint[]>(getExecutor()) {
+ private DataCache<IBreakpoint[]> fFilteredBreakpointsCache = new DataCache<>(getExecutor()) {
@Override
protected void retrieve(org.eclipse.cdt.dsf.concurrent.DataRequestMonitor<IBreakpoint[]> rm) {
calcFileteredBreakpoints(rm);
@@ -377,4 +377,10 @@ public class BreakpointVMProvider extends AbstractVMProvider {
}
fContainerBreakpointsCacheMap.clear();
}
+
+ @Override
+ public void refresh() {
+ flushCaches();
+ super.refresh();
+ }
}
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/breakpoints/DataCache.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/breakpoints/DataCache.java
index aa199baa743..92cc9f49dd4 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/breakpoints/DataCache.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/breakpoints/DataCache.java
@@ -110,7 +110,7 @@ abstract class DataCache<V> {
boolean first = fWaitingList.isEmpty();
fWaitingList.add(rm);
if (first) {
- fRm = new DataRequestMonitor<V>(fExecutor, null) {
+ fRm = new DataRequestMonitor<>(fExecutor, null) {
@Override
protected void handleCompleted() {
if (!isCanceled()) {
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/expression/AbstractExpressionVMNode.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/expression/AbstractExpressionVMNode.java
index dc953cceef6..a2f7e8a561f 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/expression/AbstractExpressionVMNode.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/expression/AbstractExpressionVMNode.java
@@ -80,7 +80,7 @@ public abstract class AbstractExpressionVMNode extends AbstractDMVMNode implemen
} else {
final List<Object> elements = getData();
- final MultiRequestMonitor<DataRequestMonitor<Boolean>> multiRm = new MultiRequestMonitor<DataRequestMonitor<Boolean>>(
+ final MultiRequestMonitor<DataRequestMonitor<Boolean>> multiRm = new MultiRequestMonitor<>(
getExecutor(), null) {
@Override
protected void handleCompleted() {
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/expression/ExpressionManagerVMNode.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/expression/ExpressionManagerVMNode.java
index 58fa493b258..15d5ae00482 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/expression/ExpressionManagerVMNode.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/expression/ExpressionManagerVMNode.java
@@ -197,7 +197,7 @@ public class ExpressionManagerVMNode extends AbstractVMNode implements IElementL
// the request monitor when it is finished. The request monitor
// will in turn set the element in the update argument in this method.
((ExpressionVMProvider) getVMProvider()).update(new VMExpressionUpdate(update, expression,
- new DataRequestMonitor<Object>(getVMProvider().getExecutor(), multiRm) {
+ new DataRequestMonitor<>(getVMProvider().getExecutor(), multiRm) {
@Override
protected void handleSuccess() {
update.setChild(getData(), childIndex);
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/expression/ExpressionVMProviderContentStragegy.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/expression/ExpressionVMProviderContentStragegy.java
index 3d264891909..e6a2c345c43 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/expression/ExpressionVMProviderContentStragegy.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/expression/ExpressionVMProviderContentStragegy.java
@@ -51,7 +51,7 @@ public class ExpressionVMProviderContentStragegy extends DefaultVMContentProvide
private void updateExpressionWithNode(final IExpressionVMNode node, final IExpressionUpdate update) {
// Call the expression node to parse the expression and fill in the value.
node.update(new VMExpressionUpdate(update, update.getExpression(),
- new ViewerDataRequestMonitor<Object>(getVMProvider().getExecutor(), update) {
+ new ViewerDataRequestMonitor<>(getVMProvider().getExecutor(), update) {
@Override
protected void handleSuccess() {
// Check if the evaluated node has child expression nodes.
@@ -63,17 +63,18 @@ public class ExpressionVMProviderContentStragegy extends DefaultVMContentProvide
update.getExpression());
if (matchingNode != null && !matchingNode.equals(node)) {
- updateExpressionWithNode(matchingNode, new VMExpressionUpdate(
- update.getElementPath().createChildPath(getData()), update.getViewerInput(),
- update.getPresentationContext(), update.getExpression(),
- new ViewerDataRequestMonitor<Object>(getVMProvider().getExecutor(), update) {
+ updateExpressionWithNode(matchingNode,
+ new VMExpressionUpdate(update.getElementPath().createChildPath(getData()),
+ update.getViewerInput(), update.getPresentationContext(),
+ update.getExpression(),
+ new ViewerDataRequestMonitor<>(getVMProvider().getExecutor(), update) {
- @Override
- protected void handleSuccess() {
- update.setExpressionElement(getData());
- update.done();
- }
- }));
+ @Override
+ protected void handleSuccess() {
+ update.setExpressionElement(getData());
+ update.done();
+ }
+ }));
} else {
update.setExpressionElement(getData());
update.done();
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/expression/ExpressionVMProviderModelProxyStrategy.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/expression/ExpressionVMProviderModelProxyStrategy.java
index 48d1f80c96b..a8d76d4516a 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/expression/ExpressionVMProviderModelProxyStrategy.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/expression/ExpressionVMProviderModelProxyStrategy.java
@@ -97,22 +97,22 @@ public class ExpressionVMProviderModelProxyStrategy extends DefaultVMModelProxyS
buildNodeDeltaForExpression(matchingNode, expression, expressionElementIdx, event,
parentDelta, path, rm);
} else {
- getExpressionVMProvider().update(new VMExpressionUpdate(parentDelta,
- getVMProvider().getPresentationContext(), expression,
- new DataRequestMonitor<Object>(getVMProvider().getExecutor(), rm) {
- @Override
- protected void handleSuccess() {
- buildDeltaForExpressionElement(node, expression, getData(),
- expressionElementIdx, event, parentDelta, path, rm);
- }
-
- @Override
- protected void handleErrorOrWarning() {
- // Avoid propagating the error to avoid processing the delta by
- // all nodes.
- rm.done();
- }
- }));
+ getExpressionVMProvider().update(
+ new VMExpressionUpdate(parentDelta, getVMProvider().getPresentationContext(),
+ expression, new DataRequestMonitor<>(getVMProvider().getExecutor(), rm) {
+ @Override
+ protected void handleSuccess() {
+ buildDeltaForExpressionElement(node, expression, getData(),
+ expressionElementIdx, event, parentDelta, path, rm);
+ }
+
+ @Override
+ protected void handleErrorOrWarning() {
+ // Avoid propagating the error to avoid processing the delta by
+ // all nodes.
+ rm.done();
+ }
+ }));
}
}
});
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/expression/SingleExpressionVMNode.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/expression/SingleExpressionVMNode.java
index 0af115c765f..9c51a4fe6b6 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/expression/SingleExpressionVMNode.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/expression/SingleExpressionVMNode.java
@@ -219,7 +219,7 @@ public class SingleExpressionVMNode extends AbstractVMNode implements IElementLa
// the request monitor when it is finished. The request monitor
// will in turn set the element in the update argument in this method.
((ExpressionVMProvider) getVMProvider()).update(new VMExpressionUpdate(update, expression,
- new ViewerDataRequestMonitor<Object>(getVMProvider().getExecutor(), update) {
+ new ViewerDataRequestMonitor<>(getVMProvider().getExecutor(), update) {
@Override
protected void handleSuccess() {
update.setChild(getData(), 0);
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/expression/VMExpressionUpdate.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/expression/VMExpressionUpdate.java
index fb6eb636204..0ded1ac5703 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/expression/VMExpressionUpdate.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/expression/VMExpressionUpdate.java
@@ -85,7 +85,7 @@ class VMExpressionUpdate extends VMViewerUpdate implements IExpressionUpdate {
if (VMViewerUpdateTracing.DEBUG_VMUPDATES && !isCanceled()
&& VMViewerUpdateTracing.matchesFilterRegex(this.getClass())) {
DsfUIPlugin.debug(DsfPlugin.getDebugTime() + " " + LoggingUtils.toString(this) + " marked done; element = " //$NON-NLS-1$//$NON-NLS-2$
- + LoggingUtils.toString(getElement()) + "\n expression = "
+ + LoggingUtils.toString(getElement()) + "\n expression = " //$NON-NLS-1$
+ (fExpressionElement != null ? LoggingUtils.toString(fExpressionElement) : "<unset>")); //$NON-NLS-1$
}
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/expression/WatchExpressionCellModifier.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/expression/WatchExpressionCellModifier.java
index 8d96619db13..5320a0ea20e 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/expression/WatchExpressionCellModifier.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/expression/WatchExpressionCellModifier.java
@@ -126,7 +126,7 @@ public class WatchExpressionCellModifier implements ICellModifier {
if (session == null) {
return null;
}
- Query<String> query = new Query<String>() {
+ Query<String> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<String> rm) {
// Since cell modifier does not provide the fully qualified
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/launch/DefaultDsfSelectionPolicy.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/launch/DefaultDsfSelectionPolicy.java
index cfce1eb28d3..25694859256 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/launch/DefaultDsfSelectionPolicy.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/launch/DefaultDsfSelectionPolicy.java
@@ -100,7 +100,7 @@ public class DefaultDsfSelectionPolicy implements IModelSelectionPolicy {
final IExecutionDMContext execContext = DMContexts.getAncestorOfType(dmContext,
IExecutionDMContext.class);
if (execContext != null) {
- Query<Boolean> query = new Query<Boolean>() {
+ Query<Boolean> query = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Boolean> rm) {
DsfServicesTracker servicesTracker = new DsfServicesTracker(DsfUIPlugin.getBundleContext(),
@@ -197,7 +197,7 @@ public class DefaultDsfSelectionPolicy implements IModelSelectionPolicy {
return false;
}
- Query<Boolean> query = new Query<Boolean>() {
+ Query<Boolean> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<Boolean> rm) {
DsfServicesTracker servicesTracker = new DsfServicesTracker(DsfUIPlugin.getBundleContext(),
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/launch/StackFramesVMNode.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/launch/StackFramesVMNode.java
index 9ac123bc867..f3234e3b89c 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/launch/StackFramesVMNode.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/launch/StackFramesVMNode.java
@@ -190,7 +190,7 @@ public class StackFramesVMNode extends AbstractDMVMNode
String function = (String) properties.get(ILaunchVMConstants.PROP_FRAME_FUNCTION);
String module = (String) properties.get(ILaunchVMConstants.PROP_FRAME_MODULE);
return function != null && !function.isEmpty() && function.contains(")") && //$NON-NLS-1$
- module != null && !module.isEmpty();
+ module != null && !module.isEmpty();
}
}, new LabelText(MessagesForLaunchVM.StackFramesVMNode_No_columns__No_line__add_parens__text_format,
new String[] { ILaunchVMConstants.PROP_FRAME_ADDRESS, ILaunchVMConstants.PROP_FRAME_FUNCTION,
@@ -200,7 +200,7 @@ public class StackFramesVMNode extends AbstractDMVMNode
String function = (String) properties.get(ILaunchVMConstants.PROP_FRAME_FUNCTION);
String module = (String) properties.get(ILaunchVMConstants.PROP_FRAME_MODULE);
return function != null && !function.isEmpty() && !function.contains(")") && //$NON-NLS-1$
- module != null && !module.isEmpty();
+ module != null && !module.isEmpty();
}
}, new LabelText(MessagesForLaunchVM.StackFramesVMNode_No_columns__No_function__text_format,
new String[] { ILaunchVMConstants.PROP_FRAME_ADDRESS, ILaunchVMConstants.PROP_FRAME_MODULE }) {
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/numberformat/FormattedValueRetriever.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/numberformat/FormattedValueRetriever.java
index 2f3507146e4..c57b7e435cf 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/numberformat/FormattedValueRetriever.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/numberformat/FormattedValueRetriever.java
@@ -437,7 +437,8 @@ public class FormattedValueRetriever {
elementFormatMap);
if (update.getProperties().contains(PROP_ACTIVE_FORMAT)) {
- assert activeFormat != null : "Our caller should have provided the available formats if this property was specified; given available formats, an 'active' nomination is guaranteed."; //$NON-NLS-1$
+ assert activeFormat != null
+ : "Our caller should have provided the available formats if this property was specified; given available formats, an 'active' nomination is guaranteed."; //$NON-NLS-1$
update.setProperty(PROP_ACTIVE_FORMAT, activeFormat);
}
List<String> requestedFormats = calcRequestedFormats(update, activeFormat, availableFormatsMap.get(update));
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/numberformat/FormattedValueVMUtil.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/numberformat/FormattedValueVMUtil.java
index d08ae709890..c600a63b8b4 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/numberformat/FormattedValueVMUtil.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/numberformat/FormattedValueVMUtil.java
@@ -364,7 +364,8 @@ public class FormattedValueVMUtil {
final String activeFormat = _activeFormat; // null means we don't need to know what the active format is
if (update.getProperties().contains(IDebugVMConstants.PROP_FORMATTED_VALUE_ACTIVE_FORMAT)) {
- assert activeFormat != null : "Our caller should have provided the available formats if this property was specified; given available formats, an 'active' nomination is guaranteed."; //$NON-NLS-1$
+ assert activeFormat != null
+ : "Our caller should have provided the available formats if this property was specified; given available formats, an 'active' nomination is guaranteed."; //$NON-NLS-1$
update.setProperty(IDebugVMConstants.PROP_FORMATTED_VALUE_ACTIVE_FORMAT, activeFormat);
}
@@ -376,7 +377,8 @@ public class FormattedValueVMUtil {
boolean activeFormatValueRequested = false; // does the update object ask for PROP_FORMATTED_VALUE_ACTIVE_FORMAT_VALUE?
boolean activeFormatValueHandled = false; // have we come across a specific format request that is the active format?
if (update.getProperties().contains(IDebugVMConstants.PROP_FORMATTED_VALUE_ACTIVE_FORMAT_VALUE)) {
- assert activeFormat != null : "Our caller should have provided the available formats if this property was specified; given available formats, an 'active' nomination is guaranteed."; //$NON-NLS-1$
+ assert activeFormat != null
+ : "Our caller should have provided the available formats if this property was specified; given available formats, an 'active' nomination is guaranteed."; //$NON-NLS-1$
activeFormatValueRequested = true; // we may end up making an additional run
}
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/variable/VariableVMNode.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/variable/VariableVMNode.java
index 79f2443d29b..3ae1bb979b9 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/variable/VariableVMNode.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/variable/VariableVMNode.java
@@ -1016,8 +1016,7 @@ public class VariableVMNode extends AbstractExpressionVMNode
// Call IExpressions.getSubExpressions() to get an Iterable of IExpressionDMContext objects representing
// the sub-expressions of the expression represented by the current expression node.
- final DataRequestMonitor<IExpressionDMContext[]> rm = new ViewerDataRequestMonitor<IExpressionDMContext[]>(
- dsfExecutor, update) {
+ final DataRequestMonitor<IExpressionDMContext[]> rm = new ViewerDataRequestMonitor<>(dsfExecutor, update) {
@Override
public void handleCompleted() {
if (!isSuccess()) {
@@ -1077,8 +1076,7 @@ public class VariableVMNode extends AbstractExpressionVMNode
// Call IStack.getLocals() to get an array of IVariableDMContext objects representing the local
// variables in the stack frame represented by frameDmc.
- final DataRequestMonitor<IVariableDMContext[]> rm = new ViewerDataRequestMonitor<IVariableDMContext[]>(
- dsfExecutor, update) {
+ final DataRequestMonitor<IVariableDMContext[]> rm = new ViewerDataRequestMonitor<>(dsfExecutor, update) {
@Override
public void handleCompleted() {
if (!isSuccess()) {
@@ -1147,7 +1145,7 @@ public class VariableVMNode extends AbstractExpressionVMNode
// IVariableDMData object to the localsDMData List for later processing (see above).
for (IVariableDMContext localDMC : localsDMCs) {
- DataRequestMonitor<IVariableDMData> rm = new DataRequestMonitor<IVariableDMData>(dsfExecutor, crm) {
+ DataRequestMonitor<IVariableDMData> rm = new DataRequestMonitor<>(dsfExecutor, crm) {
@Override
public void handleSuccess() {
localsDMData.add(getData());
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/internal/ui/DsfUIPlugin.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/internal/ui/DsfUIPlugin.java
index 94951fb8acc..5f568b16b87 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/internal/ui/DsfUIPlugin.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/internal/ui/DsfUIPlugin.java
@@ -29,6 +29,7 @@ import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.resource.ResourceLocator;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.osgi.framework.BundleContext;
@@ -174,7 +175,7 @@ public class DsfUIPlugin extends AbstractUIPlugin {
* @return the active workbench shell or <code>null</code> if none
*/
public static Shell getActiveWorkbenchShell() {
- IWorkbenchWindow window = getDefault().getWorkbench().getActiveWorkbenchWindow();
+ IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
if (window != null) {
return window.getShell();
}
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/concurrent/DisplayDsfExecutor.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/concurrent/DisplayDsfExecutor.java
index 1be706b500c..09a12eabb14 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/concurrent/DisplayDsfExecutor.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/concurrent/DisplayDsfExecutor.java
@@ -107,7 +107,7 @@ public class DisplayDsfExecutor extends DefaultDsfExecutor {
((DsfExecutable) callable).setSubmitted();
}
- return new Callable<V>() {
+ return new Callable<>() {
@Override
@SuppressWarnings("unchecked")
public V call() throws Exception {
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/DefaultVMContentProviderStrategy.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/DefaultVMContentProviderStrategy.java
index df0b8a9a40b..9113c824c35 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/DefaultVMContentProviderStrategy.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/DefaultVMContentProviderStrategy.java
@@ -141,7 +141,7 @@ public class DefaultVMContentProviderStrategy implements IElementContentProvider
for (int i = 0; i < updates.length; i++) {
final IHasChildrenUpdate update = updates[i];
- final MultiRequestMonitor<DataRequestMonitor<Boolean>> hasChildrenMultiRequestMon = new MultiRequestMonitor<DataRequestMonitor<Boolean>>(
+ final MultiRequestMonitor<DataRequestMonitor<Boolean>> hasChildrenMultiRequestMon = new MultiRequestMonitor<>(
getVMProvider().getExecutor(), null) {
@Override
protected void handleCompleted() {
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/properties/VMPropertiesUpdate.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/properties/VMPropertiesUpdate.java
index 930035664d2..0ac8e4b992b 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/properties/VMPropertiesUpdate.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/properties/VMPropertiesUpdate.java
@@ -123,8 +123,8 @@ public class VMPropertiesUpdate extends VMViewerUpdate implements IPropertiesUpd
} else if ((getStatus() instanceof PropertiesUpdateStatus)) {
((PropertiesUpdateStatus) getStatus()).add(status);
} else {
- assert getStatus()
- .getSeverity() == IStatus.CANCEL : "VMPropertiesUpdate status should always be a PropertiesUpdateStatus unless update is canceled."; //$NON-NLS-1$
+ assert getStatus().getSeverity() == IStatus.CANCEL
+ : "VMPropertiesUpdate status should always be a PropertiesUpdateStatus unless update is canceled."; //$NON-NLS-1$
}
}
diff --git a/dsf/org.eclipse.cdt.dsf/.classpath b/dsf/org.eclipse.cdt.dsf/.classpath
index 22f30643cba..e801ebfb468 100644
--- a/dsf/org.eclipse.cdt.dsf/.classpath
+++ b/dsf/org.eclipse.cdt.dsf/.classpath
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/dsf/org.eclipse.cdt.dsf/.settings/.api_filters b/dsf/org.eclipse.cdt.dsf/.settings/.api_filters
new file mode 100644
index 00000000000..fa5981fba8e
--- /dev/null
+++ b/dsf/org.eclipse.cdt.dsf/.settings/.api_filters
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<component id="org.eclipse.cdt.dsf" version="2">
+ <resource path="src/org/eclipse/cdt/dsf/debug/model/DsfMemoryBlock.java" type="org.eclipse.cdt.dsf.debug.model.DsfMemoryBlock">
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
+ <message_arguments>
+ <message_argument value="IMemoryBlockUpdatePolicyProvider"/>
+ <message_argument value="DsfMemoryBlock"/>
+ </message_arguments>
+ </filter>
+ </resource>
+ <resource path="src/org/eclipse/cdt/dsf/debug/service/AbstractInstruction.java" type="org.eclipse.cdt.dsf.debug.service.AbstractInstruction">
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
+ <message_arguments>
+ <message_argument value="IInstructionWithRawOpcode"/>
+ <message_argument value="AbstractInstruction"/>
+ </message_arguments>
+ </filter>
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
+ <message_arguments>
+ <message_argument value="IInstructionWithRawOpcodes"/>
+ <message_argument value="AbstractInstruction"/>
+ </message_arguments>
+ </filter>
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
+ <message_arguments>
+ <message_argument value="IInstructionWithSize"/>
+ <message_argument value="AbstractInstruction"/>
+ </message_arguments>
+ </filter>
+ </resource>
+</component>
diff --git a/dsf/org.eclipse.cdt.dsf/.settings/org.eclipse.core.resources.prefs b/dsf/org.eclipse.cdt.dsf/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/dsf/org.eclipse.cdt.dsf/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/dsf/org.eclipse.cdt.dsf/.settings/org.eclipse.jdt.core.prefs b/dsf/org.eclipse.cdt.dsf/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/dsf/org.eclipse.cdt.dsf/.settings/org.eclipse.jdt.core.prefs
+++ b/dsf/org.eclipse.cdt.dsf/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/dsf/org.eclipse.cdt.dsf/.settings/org.eclipse.jdt.ui.prefs b/dsf/org.eclipse.cdt.dsf/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/dsf/org.eclipse.cdt.dsf/.settings/org.eclipse.jdt.ui.prefs
+++ b/dsf/org.eclipse.cdt.dsf/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/dsf/org.eclipse.cdt.dsf/META-INF/MANIFEST.MF b/dsf/org.eclipse.cdt.dsf/META-INF/MANIFEST.MF
index fc444751fd0..cc1f1c6defb 100644
--- a/dsf/org.eclipse.cdt.dsf/META-INF/MANIFEST.MF
+++ b/dsf/org.eclipse.cdt.dsf/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@ Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-Vendor: %providerName
Bundle-SymbolicName: org.eclipse.cdt.dsf;singleton:=true
-Bundle-Version: 2.8.200.qualifier
+Bundle-Version: 2.11.200.qualifier
Bundle-Activator: org.eclipse.cdt.dsf.internal.DsfPlugin
Bundle-Localization: plugin
Require-Bundle: org.eclipse.core.runtime,
@@ -22,5 +22,5 @@ Export-Package: org.eclipse.cdt.dsf.concurrent,
org.eclipse.cdt.dsf.debug.sourcelookup,
org.eclipse.cdt.dsf.internal;x-friends:="org.eclipse.cdt.dsf.ui,org.eclipse.cdt.tests.dsf.gdb",
org.eclipse.cdt.dsf.service
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Automatic-Module-Name: org.eclipse.cdt.dsf
diff --git a/dsf/org.eclipse.cdt.dsf/about.html b/dsf/org.eclipse.cdt.dsf/about.html
index 164f781a8fd..b3134865230 100644
--- a/dsf/org.eclipse.cdt.dsf/about.html
+++ b/dsf/org.eclipse.cdt.dsf/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/concurrent/RangeCache.java b/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/concurrent/RangeCache.java
index 13bb598ff50..80531741e0b 100644
--- a/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/concurrent/RangeCache.java
+++ b/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/concurrent/RangeCache.java
@@ -162,7 +162,7 @@ abstract public class RangeCache<V> {
List<Request> requests = getRequests(offset, count);
- RequestCache<List<V>> range = new RequestCache<List<V>>(fExecutor) {
+ RequestCache<List<V>> range = new RequestCache<>(fExecutor) {
@Override
protected void retrieve(DataRequestMonitor<List<V>> rm) {
new RangeTransaction(offset, count).request(rm);
diff --git a/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/concurrent/RequestCache.java b/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/concurrent/RequestCache.java
index 3755a20cdfe..a95e1d1c9b3 100644
--- a/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/concurrent/RequestCache.java
+++ b/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/concurrent/RequestCache.java
@@ -44,7 +44,7 @@ public abstract class RequestCache<V> extends AbstractCache<V> {
fRm.cancel();
}
- fRm = new DataRequestMonitor<V>(getImmediateInDsfExecutor(), null) {
+ fRm = new DataRequestMonitor<>(getImmediateInDsfExecutor(), null) {
@Override
protected void handleCompleted() {
diff --git a/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/debug/model/DsfMemoryBlock.java b/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/debug/model/DsfMemoryBlock.java
index da7d1c06271..3e22d90af1b 100644
--- a/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/debug/model/DsfMemoryBlock.java
+++ b/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/debug/model/DsfMemoryBlock.java
@@ -397,9 +397,9 @@ public class DsfMemoryBlock extends PlatformObject implements IMemoryBlockExtens
// Process each cell, updating the status and history/change
for (int i = 0; i < length; i++) {
if (i < newLength) {
- newBlock[i].setFlags(fBlock[distance + i].getFlags());
newBlock[i].setHistoryKnown(true);
- if (newBlock[i].getValue() != fBlock[distance + i].getValue()) {
+ if (newBlock[i].getValue() != fBlock[distance + i].getValue()
+ || isReadableFlagSet(newBlock[i]) != isReadableFlagSet(fBlock[distance + i])) {
newBlock[i].setChanged(true);
}
}
@@ -482,9 +482,9 @@ public class DsfMemoryBlock extends PlatformObject implements IMemoryBlockExtens
// Process each cell, updating the status and history/change
for (int i = 0; i < length; i++) {
if ((distance + i) < newLength) {
- newBlock[distance + i].setFlags(fBlock[i].getFlags());
newBlock[distance + i].setHistoryKnown(true);
- if (newBlock[distance + i].getValue() != fBlock[i].getValue()) {
+ if (newBlock[distance + i].getValue() != fBlock[i].getValue()
+ || isReadableFlagSet(newBlock[distance + i]) != isReadableFlagSet(fBlock[i])) {
newBlock[distance + i].setChanged(true);
}
}
@@ -509,6 +509,10 @@ public class DsfMemoryBlock extends PlatformObject implements IMemoryBlockExtens
return fBlock;
}
+ private boolean isReadableFlagSet(MemoryByte mb) {
+ return (mb.getFlags() & MemoryByte.READABLE) != 0;
+ }
+
/* (non-Javadoc)
* @see org.eclipse.debug.core.model.IMemoryBlockExtension#setValue(java.math.BigInteger, byte[])
*/
@@ -613,7 +617,7 @@ public class DsfMemoryBlock extends PlatformObject implements IMemoryBlockExtens
final Addr64 address = new Addr64(bigAddress);
// Use a Query to synchronize the downstream calls
- Query<MemoryByte[]> query = new Query<MemoryByte[]>() {
+ Query<MemoryByte[]> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<MemoryByte[]> drm) {
IMemory memoryService = fRetrieval.getServiceTracker().getService();
@@ -669,7 +673,7 @@ public class DsfMemoryBlock extends PlatformObject implements IMemoryBlockExtens
final Addr64 address = new Addr64(fBaseAddress);
// Use a Query to synchronize the downstream calls
- Query<MemoryByte[]> query = new Query<MemoryByte[]>() {
+ Query<MemoryByte[]> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<MemoryByte[]> drm) {
IMemory memoryService = fRetrieval.getServiceTracker().getService();
diff --git a/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/debug/model/DsfMemoryBlockRetrieval.java b/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/debug/model/DsfMemoryBlockRetrieval.java
index 89957850042..034086a22df 100644
--- a/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/debug/model/DsfMemoryBlockRetrieval.java
+++ b/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/debug/model/DsfMemoryBlockRetrieval.java
@@ -40,6 +40,7 @@ import org.eclipse.cdt.dsf.internal.DsfPlugin;
import org.eclipse.cdt.dsf.service.DsfServices;
import org.eclipse.cdt.dsf.service.DsfSession;
import org.eclipse.cdt.dsf.service.IDsfService;
+import org.eclipse.cdt.internal.core.XmlUtil;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IStatus;
@@ -321,7 +322,7 @@ public class DsfMemoryBlockRetrieval extends PlatformObject implements IMemoryBl
}
}
document.appendChild(expressionList);
- return DebugPlugin.serializeDocument(document);
+ return XmlUtil.toString(document);
}
///////////////////////////////////////////////////////////////////////////
@@ -477,7 +478,7 @@ public class DsfMemoryBlockRetrieval extends PlatformObject implements IMemoryBl
protected BigInteger resolveMemoryAddress(final IDMContext dmc, final String expression) throws DebugException {
// Use a Query to "synchronize" the downstream calls
- Query<BigInteger> query = new Query<BigInteger>() {
+ Query<BigInteger> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<BigInteger> drm) {
// Lookup for the ExpressionService
diff --git a/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/debug/service/AbstractInstruction.java b/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/debug/service/AbstractInstruction.java
index 2c9ddf604a6..73065671f38 100644
--- a/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/debug/service/AbstractInstruction.java
+++ b/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/debug/service/AbstractInstruction.java
@@ -22,7 +22,8 @@ import java.math.BigInteger;
*
* @since 2.2
*/
-public abstract class AbstractInstruction implements IInstructionWithSize, IInstructionWithRawOpcodes {
+public abstract class AbstractInstruction
+ implements IInstructionWithSize, IInstructionWithRawOpcodes, IInstructionWithRawOpcode {
/*
* @see org.eclipse.cdt.dsf.debug.service.IInstructionWithSize#getSize()
*/
@@ -40,4 +41,11 @@ public abstract class AbstractInstruction implements IInstructionWithSize, IInst
return null;
}
+ /**
+ * @since 2.10
+ */
+ @Override
+ public String getRawOpcode() {
+ return null;
+ }
}
diff --git a/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/debug/service/IInstructionWithRawOpcode.java b/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/debug/service/IInstructionWithRawOpcode.java
new file mode 100644
index 00000000000..8b8090b83d9
--- /dev/null
+++ b/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/debug/service/IInstructionWithRawOpcode.java
@@ -0,0 +1,33 @@
+/*******************************************************************************
+ * Copyright (c) 2021 Intel Corporation.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ * Contributors:
+ * Intel Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.dsf.debug.service;
+
+/**
+ * Extension interface for instructions with raw Opcodes
+ * <p>
+ * Implementers must extend {@link AbstractInstruction} instead of implementing
+ * this interface directly.
+ * </p>
+ *
+ * @since 2.11
+ * @noimplement This interface is not intended to be implemented by clients.
+ * @noextend This interface is not intended to be extended by clients.
+ */
+public interface IInstructionWithRawOpcode extends IInstruction {
+
+ /**
+ * @return The raw opcode of the instruction as <code>String</code>, the instruction
+ * bytes are separated by space. If there is no opcode, <code>null</code> is returned.
+ */
+ String getRawOpcode();
+} \ No newline at end of file
diff --git a/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/debug/service/IInstructionWithRawOpcodes.java b/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/debug/service/IInstructionWithRawOpcodes.java
index f3f89b0b497..46802a032b2 100644
--- a/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/debug/service/IInstructionWithRawOpcodes.java
+++ b/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/debug/service/IInstructionWithRawOpcodes.java
@@ -25,7 +25,9 @@ import java.math.BigInteger;
* @since 2.5
* @noimplement This interface is not intended to be implemented by clients.
* @noextend This interface is not intended to be extended by clients.
+ * @deprecated use {@link IInstructionWithRawOpcode} instead.
*/
+@Deprecated
public interface IInstructionWithRawOpcodes extends IInstruction {
/**
diff --git a/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/debug/service/command/ICommandControlService.java b/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/debug/service/command/ICommandControlService.java
index fe4b7aa298b..463d0d29f1d 100644
--- a/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/debug/service/command/ICommandControlService.java
+++ b/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/debug/service/command/ICommandControlService.java
@@ -13,6 +13,7 @@
*******************************************************************************/
package org.eclipse.cdt.dsf.debug.service.command;
+import org.eclipse.cdt.dsf.concurrent.RequestMonitor;
import org.eclipse.cdt.dsf.datamodel.IDMContext;
import org.eclipse.cdt.dsf.datamodel.IDMEvent;
import org.eclipse.cdt.dsf.service.IDsfService;
@@ -52,6 +53,13 @@ public interface ICommandControlService extends ICommandControl, IDsfService {
}
/**
+ * Event indicating that the back end has had some change that means everything should be invalidated.
+ * @since 2.10
+ */
+ public interface ICommandControlRefreshAllDMEvent extends IDMEvent<ICommandControlDMContext> {
+ }
+
+ /**
* Returns the identifier of this command control service. It can be used
* to distinguish between multiple instances of command control services.
*/
@@ -69,4 +77,15 @@ public interface ICommandControlService extends ICommandControl, IDsfService {
* @return
*/
public boolean isActive();
+
+ /**
+ * This method should be called when a service knows that something has changed in the
+ * backend, but cannot update the state in an effective way, so the decision instead
+ * is to flush all caches and refresh by issuing an {@link ICommandControlRefreshAllDMEvent}.
+ * @since 2.10
+ */
+ default public void flushAllCachesAndRefresh(RequestMonitor rm) {
+ rm.done();
+ }
+
}
diff --git a/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/debug/sourcelookup/DsfSourceLookupParticipant.java b/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/debug/sourcelookup/DsfSourceLookupParticipant.java
index e078b8d3bdd..77b0ab0808e 100644
--- a/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/debug/sourcelookup/DsfSourceLookupParticipant.java
+++ b/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/debug/sourcelookup/DsfSourceLookupParticipant.java
@@ -153,7 +153,7 @@ public class DsfSourceLookupParticipant extends AbstractSourceLookupParticipant
}
final IDMContext dmc = (IDMContext) object;
- Query<String> query = new Query<String>() {
+ Query<String> query = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<String> rm) {
getSourceNameOnDispatchThread(dmc, rm);
diff --git a/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/service/AbstractDsfService.java b/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/service/AbstractDsfService.java
index c31f32014e6..0cc92788d57 100644
--- a/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/service/AbstractDsfService.java
+++ b/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/service/AbstractDsfService.java
@@ -23,6 +23,7 @@ import java.util.Set;
import org.eclipse.cdt.dsf.concurrent.DsfExecutor;
import org.eclipse.cdt.dsf.concurrent.IDsfStatusConstants;
import org.eclipse.cdt.dsf.concurrent.RequestMonitor;
+import org.eclipse.cdt.dsf.debug.service.ICachingService;
import org.osgi.framework.BundleContext;
import org.osgi.framework.Constants;
import org.osgi.framework.ServiceRegistration;
@@ -158,6 +159,8 @@ abstract public class AbstractDsfService implements IDsfService, IDsfStatusConst
*/
@SuppressWarnings({ "rawtypes", "unchecked" })
protected void register(String[] classes, Dictionary properties) {
+ // Use a HashSet to avoid duplicates
+ Set<String> classSet = new HashSet<>(Arrays.asList(classes));
/*
* If this service has already been registered, make sure we
@@ -167,12 +170,7 @@ abstract public class AbstractDsfService implements IDsfService, IDsfStatusConst
*/
if (fRegistration != null) {
String[] previousClasses = (String[]) fRegistration.getReference().getProperty(Constants.OBJECTCLASS);
-
- // Use a HashSet to avoid duplicates
- Set<String> newClasses = new HashSet<>();
- newClasses.addAll(Arrays.asList(previousClasses));
- newClasses.addAll(Arrays.asList(classes));
- classes = newClasses.toArray(new String[0]);
+ classSet.addAll(Arrays.asList(previousClasses));
/*
* Also keep all previous properties.
@@ -192,18 +190,16 @@ abstract public class AbstractDsfService implements IDsfService, IDsfStatusConst
* Ensure that the list of classes contains the base DSF service
* interface, as well as the actual class type of this object.
*/
- if (!Arrays.asList(classes).contains(IDsfService.class.getName())) {
- String[] newClasses = new String[classes.length + 1];
- System.arraycopy(classes, 0, newClasses, 1, classes.length);
- newClasses[0] = IDsfService.class.getName();
- classes = newClasses;
- }
- if (!Arrays.asList(classes).contains(getClass().getName())) {
- String[] newClasses = new String[classes.length + 1];
- System.arraycopy(classes, 0, newClasses, 1, classes.length);
- newClasses[0] = getClass().getName();
- classes = newClasses;
+ classSet.add(IDsfService.class.getName());
+ classSet.add(getClass().getName());
+
+ /*
+ * Ensure that the list of classes contains the ICachingService if implemented
+ */
+ if (this instanceof ICachingService) {
+ classSet.add(ICachingService.class.getName());
}
+
/*
* Make sure that the session ID is set in the service properties.
* The session ID distinguishes this service instance from instances
@@ -211,7 +207,7 @@ abstract public class AbstractDsfService implements IDsfService, IDsfStatusConst
*/
properties.put(PROP_SESSION_ID, getSession().getId());
fProperties = properties;
- fRegistration = getBundleContext().registerService(classes, this, properties);
+ fRegistration = getBundleContext().registerService(classSet.toArray(String[]::new), this, properties);
/*
* Retrieve the OBJECTCLASS property directly from the service
diff --git a/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/service/DsfServicesTracker.java b/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/service/DsfServicesTracker.java
index 97e1844cbdc..3e0822d5bc2 100644
--- a/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/service/DsfServicesTracker.java
+++ b/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/service/DsfServicesTracker.java
@@ -15,10 +15,12 @@
package org.eclipse.cdt.dsf.service;
import java.util.Collection;
+import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.concurrent.RejectedExecutionException;
+import java.util.stream.Collectors;
import org.eclipse.cdt.dsf.concurrent.ConfinedToDsfExecutor;
import org.eclipse.cdt.dsf.concurrent.DsfRunnable;
@@ -97,7 +99,7 @@ public class DsfServicesTracker {
private final Map<ServiceReference<?>, Object> fServices = new HashMap<>();
private final String fServiceFilter;
- private final ServiceListener fListner = new ServiceListener() {
+ private final ServiceListener fListener = new ServiceListener() {
@Override
public void serviceChanged(final ServiceEvent event) {
// Only listen to unregister events.
@@ -153,7 +155,7 @@ public class DsfServicesTracker {
fBundleContext = bundleContext;
fServiceFilter = getServiceFilter(sessionId);
try {
- fBundleContext.addServiceListener(fListner, fServiceFilter);
+ fBundleContext.addServiceListener(fListener, fServiceFilter);
} catch (InvalidSyntaxException e) {
assert false : "Invalid session ID syntax"; //$NON-NLS-1$
}
@@ -207,7 +209,39 @@ public class DsfServicesTracker {
}
/**
- * Convenience class to retrieve a service based on class name only.
+ * Retrieves all service references for given optional filter.
+ * Filter should be used if there are multiple instances of the desired service
+ * running within the same session.
+ * @param custom filter to use when searching for the service, this filter will
+ * be used instead of the standard filter so it should also specify the desired
+ * session-ID
+ * @return List of OSGI service references to the desired service
+ * @since 2.10
+ */
+ public <V> Collection<ServiceReference<V>> getServiceReferences(Class<V> serviceClass, String filter) {
+ if (fDisposed) {
+ return Collections.emptyList();
+ }
+
+ // If the session is not active, all of its services are gone.
+ DsfSession session = DsfSession.getSession(fSessionId);
+ if (session == null) {
+ return Collections.emptyList();
+ }
+ assert session.getExecutor().isInExecutorThread();
+
+ try {
+ return fBundleContext.getServiceReferences(serviceClass, filter != null ? filter : fServiceFilter);
+ } catch (InvalidSyntaxException e) {
+ assert false : "Invalid session ID syntax"; //$NON-NLS-1$
+ } catch (IllegalStateException e) {
+ // Can occur when plugin is shutting down.
+ }
+ return Collections.emptyList();
+ }
+
+ /**
+ * Convenience method to retrieve a service based on class name only.
* @param serviceClass class of the desired service
* @return instance of the desired service, null if not found
*/
@@ -216,6 +250,16 @@ public class DsfServicesTracker {
}
/**
+ * Convenience method to retrieve all services based on class name only.
+ * @param serviceClass class of the desired service
+ * @return List of instances of the desired service
+ * @since 2.10
+ */
+ public <V> Collection<V> getServices(Class<V> serviceClass) {
+ return getServices(serviceClass, null);
+ }
+
+ /**
* Retrieves the service given service class and optional filter.
* Filter should be used if there are multiple instances of the desired service
* running within the same session.
@@ -231,6 +275,26 @@ public class DsfServicesTracker {
return null;
}
+ V service = getServiceHelper(serviceRef);
+ return service;
+ }
+
+ /**
+ * Retrieves all services for given optional filter.
+ * Filter should be used if there are multiple instances of the desired service
+ * running within the same session.
+ * @param custom filter to use when searching for the service, this filter will
+ * be used instead of the standard filter so it should also specify the desired
+ * session-ID
+ * @return List of instances of the desired services
+ * @since 2.10
+ */
+ public <V> Collection<V> getServices(Class<V> serviceClass, String filter) {
+ return getServiceReferences(serviceClass, filter).stream().map(this::getServiceHelper)
+ .collect(Collectors.toList());
+ }
+
+ private <V> V getServiceHelper(ServiceReference<V> serviceRef) {
@SuppressWarnings("unchecked")
V service = (V) fServices.get(serviceRef);
if (service == null) {
@@ -258,12 +322,7 @@ public class DsfServicesTracker {
if (session != null) {
try {
if (!session.getExecutor().isInExecutorThread()) {
- session.getExecutor().execute(new DsfRunnable() {
- @Override
- public void run() {
- doDispose();
- }
- });
+ session.getExecutor().execute(this::doDispose);
return;
}
} catch (RejectedExecutionException e) {
@@ -279,9 +338,9 @@ public class DsfServicesTracker {
private void doDispose() {
try {
- fBundleContext.removeServiceListener(fListner);
- for (Iterator<ServiceReference<?>> itr = fServices.keySet().iterator(); itr.hasNext();) {
- fBundleContext.ungetService(itr.next());
+ fBundleContext.removeServiceListener(fListener);
+ for (ServiceReference<?> serviceRef : fServices.keySet()) {
+ fBundleContext.ungetService(serviceRef);
}
} catch (IllegalStateException e) {
// May be thrown during shutdown (bug 293049).
diff --git a/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/service/DsfSession.java b/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/service/DsfSession.java
index 65cf4066799..cc23aea5811 100644
--- a/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/service/DsfSession.java
+++ b/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/service/DsfSession.java
@@ -542,7 +542,8 @@ public class DsfSession {
} catch (IllegalAccessException e) {
DsfPlugin.getDefault().getLog().log(new Status(IStatus.ERROR, DsfPlugin.PLUGIN_ID, -1,
"Security exception when calling a service event handler method", e)); //$NON-NLS-1$
- assert false : "IServiceEventListener.ServiceHandlerMethod method not accessible, is listener declared public?"; //$NON-NLS-1$
+ assert false
+ : "IServiceEventListener.ServiceHandlerMethod method not accessible, is listener declared public?"; //$NON-NLS-1$
} catch (InvocationTargetException e) {
DsfPlugin.getDefault().getLog().log(new Status(IStatus.ERROR, DsfPlugin.PLUGIN_ID, -1,
"Invocation exception when calling a service event handler method", e)); //$NON-NLS-1$
diff --git a/dsf/org.eclipse.cdt.examples.dsf-feature/.settings/org.eclipse.core.resources.prefs b/dsf/org.eclipse.cdt.examples.dsf-feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/dsf/org.eclipse.cdt.examples.dsf-feature/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/dsf/org.eclipse.cdt.examples.dsf-feature/feature.xml b/dsf/org.eclipse.cdt.examples.dsf-feature/feature.xml
index 3a4433c1fb3..c1c7666a31f 100644
--- a/dsf/org.eclipse.cdt.examples.dsf-feature/feature.xml
+++ b/dsf/org.eclipse.cdt.examples.dsf-feature/feature.xml
@@ -1,8 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2009, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<feature
id="org.eclipse.cdt.examples.dsf"
label="%featureName"
- version="9.10.0.qualifier"
+ version="10.7.0.qualifier"
provider-name="%providerName"
plugin="org.eclipse.cdt.examples.dsf"
license-feature="org.eclipse.license"
diff --git a/dsf/org.eclipse.cdt.examples.dsf-feature/pom.xml b/dsf/org.eclipse.cdt.examples.dsf-feature/pom.xml
index a6204d20ad2..d8b1a9f17ba 100644
--- a/dsf/org.eclipse.cdt.examples.dsf-feature/pom.xml
+++ b/dsf/org.eclipse.cdt.examples.dsf-feature/pom.xml
@@ -1,4 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2011, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
@@ -7,7 +17,7 @@
<parent>
<groupId>org.eclipse.cdt</groupId>
<artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
+ <version>10.7.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
diff --git a/dsf/org.eclipse.cdt.examples.dsf.pda.ui/.classpath b/dsf/org.eclipse.cdt.examples.dsf.pda.ui/.classpath
index 22f30643cba..e801ebfb468 100644
--- a/dsf/org.eclipse.cdt.examples.dsf.pda.ui/.classpath
+++ b/dsf/org.eclipse.cdt.examples.dsf.pda.ui/.classpath
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/dsf/org.eclipse.cdt.examples.dsf.pda.ui/.settings/org.eclipse.core.resources.prefs b/dsf/org.eclipse.cdt.examples.dsf.pda.ui/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/dsf/org.eclipse.cdt.examples.dsf.pda.ui/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/dsf/org.eclipse.cdt.examples.dsf.pda.ui/.settings/org.eclipse.jdt.core.prefs b/dsf/org.eclipse.cdt.examples.dsf.pda.ui/.settings/org.eclipse.jdt.core.prefs
index 1e4fd5e53f6..b3f421f43cd 100644
--- a/dsf/org.eclipse.cdt.examples.dsf.pda.ui/.settings/org.eclipse.jdt.core.prefs
+++ b/dsf/org.eclipse.cdt.examples.dsf.pda.ui/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/dsf/org.eclipse.cdt.examples.dsf.pda.ui/.settings/org.eclipse.jdt.ui.prefs b/dsf/org.eclipse.cdt.examples.dsf.pda.ui/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/dsf/org.eclipse.cdt.examples.dsf.pda.ui/.settings/org.eclipse.jdt.ui.prefs
+++ b/dsf/org.eclipse.cdt.examples.dsf.pda.ui/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/dsf/org.eclipse.cdt.examples.dsf.pda.ui/META-INF/MANIFEST.MF b/dsf/org.eclipse.cdt.examples.dsf.pda.ui/META-INF/MANIFEST.MF
index 0f541773a77..7128f624b33 100644
--- a/dsf/org.eclipse.cdt.examples.dsf.pda.ui/META-INF/MANIFEST.MF
+++ b/dsf/org.eclipse.cdt.examples.dsf.pda.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.examples.dsf.pda.ui;singleton:=true
-Bundle-Version: 2.1.200.qualifier
+Bundle-Version: 2.2.100.qualifier
Bundle-Activator: org.eclipse.cdt.examples.dsf.pda.ui.PDAUIPlugin
Bundle-Localization: plugin
Require-Bundle: org.eclipse.core.runtime,
@@ -24,6 +24,6 @@ Export-Package: org.eclipse.cdt.examples.dsf.pda.ui,
org.eclipse.cdt.examples.dsf.pda.ui.breakpoints,
org.eclipse.cdt.examples.dsf.pda.ui.editor,
org.eclipse.cdt.examples.dsf.pda.ui.launcher
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-Vendor: %providerName
Automatic-Module-Name: org.eclipse.cdt.examples.dsf.pda.ui
diff --git a/dsf/org.eclipse.cdt.examples.dsf.pda.ui/about.html b/dsf/org.eclipse.cdt.examples.dsf.pda.ui/about.html
index 164f781a8fd..b3134865230 100644
--- a/dsf/org.eclipse.cdt.examples.dsf.pda.ui/about.html
+++ b/dsf/org.eclipse.cdt.examples.dsf.pda.ui/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/dsf/org.eclipse.cdt.examples.dsf.pda/.classpath b/dsf/org.eclipse.cdt.examples.dsf.pda/.classpath
index 02e5c0e2f82..add8e688d7e 100644
--- a/dsf/org.eclipse.cdt.examples.dsf.pda/.classpath
+++ b/dsf/org.eclipse.cdt.examples.dsf.pda/.classpath
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="pdavm/src"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
- <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/dsf/org.eclipse.cdt.examples.dsf.pda/.options b/dsf/org.eclipse.cdt.examples.dsf.pda/.options
index f796395f8e0..f796395f8e0 100755..100644
--- a/dsf/org.eclipse.cdt.examples.dsf.pda/.options
+++ b/dsf/org.eclipse.cdt.examples.dsf.pda/.options
diff --git a/dsf/org.eclipse.cdt.examples.dsf.pda/.settings/org.eclipse.core.resources.prefs b/dsf/org.eclipse.cdt.examples.dsf.pda/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/dsf/org.eclipse.cdt.examples.dsf.pda/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/dsf/org.eclipse.cdt.examples.dsf.pda/.settings/org.eclipse.jdt.core.prefs b/dsf/org.eclipse.cdt.examples.dsf.pda/.settings/org.eclipse.jdt.core.prefs
index 1e4fd5e53f6..b3f421f43cd 100644
--- a/dsf/org.eclipse.cdt.examples.dsf.pda/.settings/org.eclipse.jdt.core.prefs
+++ b/dsf/org.eclipse.cdt.examples.dsf.pda/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/dsf/org.eclipse.cdt.examples.dsf.pda/.settings/org.eclipse.jdt.ui.prefs b/dsf/org.eclipse.cdt.examples.dsf.pda/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/dsf/org.eclipse.cdt.examples.dsf.pda/.settings/org.eclipse.jdt.ui.prefs
+++ b/dsf/org.eclipse.cdt.examples.dsf.pda/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/dsf/org.eclipse.cdt.examples.dsf.pda/META-INF/MANIFEST.MF b/dsf/org.eclipse.cdt.examples.dsf.pda/META-INF/MANIFEST.MF
index 56d36677558..ee446c9f25d 100644
--- a/dsf/org.eclipse.cdt.examples.dsf.pda/META-INF/MANIFEST.MF
+++ b/dsf/org.eclipse.cdt.examples.dsf.pda/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.examples.dsf.pda;singleton:=true
-Bundle-Version: 2.1.300.qualifier
+Bundle-Version: 2.2.300.qualifier
Bundle-Activator: org.eclipse.cdt.examples.dsf.pda.PDAPlugin
Bundle-Localization: plugin
Require-Bundle: org.eclipse.core.runtime,
@@ -19,7 +19,6 @@ Export-Package: org.eclipse.cdt.examples.dsf.pda,
org.eclipse.cdt.examples.dsf.pda.service,
org.eclipse.cdt.examples.dsf.pda.service.commands,
org.eclipse.cdt.examples.dsf.pda.sourcelookup
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-Vendor: %providerName
-Import-Package: com.ibm.icu.text
Automatic-Module-Name: org.eclipse.cdt.examples.dsf.pda
diff --git a/dsf/org.eclipse.cdt.examples.dsf.pda/about.html b/dsf/org.eclipse.cdt.examples.dsf.pda/about.html
index 164f781a8fd..b3134865230 100644
--- a/dsf/org.eclipse.cdt.examples.dsf.pda/about.html
+++ b/dsf/org.eclipse.cdt.examples.dsf.pda/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/dsf/org.eclipse.cdt.examples.dsf.pda/src/org/eclipse/cdt/examples/dsf/pda/PDAPlugin.java b/dsf/org.eclipse.cdt.examples.dsf.pda/src/org/eclipse/cdt/examples/dsf/pda/PDAPlugin.java
index d545b74d59f..2f86c777754 100644
--- a/dsf/org.eclipse.cdt.examples.dsf.pda/src/org/eclipse/cdt/examples/dsf/pda/PDAPlugin.java
+++ b/dsf/org.eclipse.cdt.examples.dsf.pda/src/org/eclipse/cdt/examples/dsf/pda/PDAPlugin.java
@@ -176,7 +176,7 @@ public class PDAPlugin extends Plugin {
if (launch instanceof PDALaunch && !((PDALaunch) launch).isShutDown()) {
final PDALaunch pdaLaunch = (PDALaunch) launch;
- Query<Object> launchShutdownQuery = new Query<Object>() {
+ Query<Object> launchShutdownQuery = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Object> rm) {
pdaLaunch.shutdownServices(rm);
diff --git a/dsf/org.eclipse.cdt.examples.dsf.pda/src/org/eclipse/cdt/examples/dsf/pda/launch/PDALaunchDelegate.java b/dsf/org.eclipse.cdt.examples.dsf.pda/src/org/eclipse/cdt/examples/dsf/pda/launch/PDALaunchDelegate.java
index ce67c99d3e6..25240ca26e1 100644
--- a/dsf/org.eclipse.cdt.examples.dsf.pda/src/org/eclipse/cdt/examples/dsf/pda/launch/PDALaunchDelegate.java
+++ b/dsf/org.eclipse.cdt.examples.dsf.pda/src/org/eclipse/cdt/examples/dsf/pda/launch/PDALaunchDelegate.java
@@ -102,7 +102,7 @@ public class PDALaunchDelegate extends LaunchConfigurationDelegate {
*/
private void initServices(final PDALaunch pdaLaunch, final String program) throws CoreException {
// Synchronization object to use when waiting for the services initialization.
- Query<Object> initQuery = new Query<Object>() {
+ Query<Object> initQuery = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Object> rm) {
pdaLaunch.initializeServices(program, rm);
@@ -125,7 +125,7 @@ public class PDALaunchDelegate extends LaunchConfigurationDelegate {
private void createProcess(final PDALaunch pdaLaunch) throws CoreException {
// Synchronization object to use when waiting for the services initialization.
- Query<Object[]> initQuery = new Query<Object[]>() {
+ Query<Object[]> initQuery = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Object[]> rm) {
DsfServicesTracker tracker = new DsfServicesTracker(PDAPlugin.getBundleContext(),
diff --git a/dsf/org.eclipse.cdt.examples.dsf.pda/src/org/eclipse/cdt/examples/dsf/pda/service/PDABackend.java b/dsf/org.eclipse.cdt.examples.dsf.pda/src/org/eclipse/cdt/examples/dsf/pda/service/PDABackend.java
index 91ab830cb01..8cf80829270 100644
--- a/dsf/org.eclipse.cdt.examples.dsf.pda/src/org/eclipse/cdt/examples/dsf/pda/service/PDABackend.java
+++ b/dsf/org.eclipse.cdt.examples.dsf.pda/src/org/eclipse/cdt/examples/dsf/pda/service/PDABackend.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2009 Nokia Corporation.
+ * Copyright (c) 2008, 2021 Nokia Corporation.
*
* This fProgram and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -21,6 +21,7 @@ import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;
+import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.List;
@@ -44,8 +45,6 @@ import org.eclipse.debug.core.DebugPlugin;
import org.eclipse.debug.core.Launch;
import org.osgi.framework.BundleContext;
-import com.ibm.icu.text.MessageFormat;
-
/**
* Service that manages the backend process: starting the process
* and monitoring for its shutdown.
@@ -151,17 +150,19 @@ public class PDABackend extends AbstractDsfService {
Thread.sleep(1000);
} catch (InterruptedException e) {
}
- Socket socket = new Socket("localhost", fRequestPort);
- fRequestOutputStream = socket.getOutputStream();
- fRequestInputStream = socket.getInputStream();
+ try (Socket socket = new Socket("localhost", fRequestPort)) {
+ fRequestOutputStream = socket.getOutputStream();
+ fRequestInputStream = socket.getInputStream();
+ }
// give interpreter a chance to open next socket
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
}
- socket = new Socket("localhost", fEventPort);
- fEventInputStream = socket.getInputStream();
+ try (Socket socket = new Socket("localhost", fEventPort)) {
+ fEventInputStream = socket.getInputStream();
+ }
} catch (UnknownHostException e) {
rm.setStatus(new Status(IStatus.ERROR, PDAPlugin.PLUGIN_ID, REQUEST_FAILED,
@@ -233,8 +234,7 @@ public class PDABackend extends AbstractDsfService {
}
File exe = new File(javaVMExec);
if (!exe.exists()) {
- abort(MessageFormat.format("Specified java VM executable {0} does not exist.", new Object[] { javaVMExec }),
- null);
+ abort(MessageFormat.format("Specified java VM executable {0} does not exist.", javaVMExec), null);
}
fBackendProcessName = javaVMExec;
@@ -267,8 +267,8 @@ public class PDABackend extends AbstractDsfService {
if (file.exists())
absolutePath = file.getLocation().toPortableString();
else
- abort(MessageFormat.format("PDA program {0} does not exist.",
- new Object[] { file.getFullPath().toPortableString() }), null);
+ abort(MessageFormat.format("PDA program {0} does not exist.", file.getFullPath().toPortableString()),
+ null);
}
commandList.add(absolutePath);
diff --git a/dsf/org.eclipse.cdt.examples.dsf/.classpath b/dsf/org.eclipse.cdt.examples.dsf/.classpath
index fb483403bf8..736df04bbf8 100644
--- a/dsf/org.eclipse.cdt.examples.dsf/.classpath
+++ b/dsf/org.eclipse.cdt.examples.dsf/.classpath
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="src_ant"/>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/dsf/org.eclipse.cdt.examples.dsf/.settings/org.eclipse.core.resources.prefs b/dsf/org.eclipse.cdt.examples.dsf/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/dsf/org.eclipse.cdt.examples.dsf/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/dsf/org.eclipse.cdt.examples.dsf/.settings/org.eclipse.jdt.core.prefs b/dsf/org.eclipse.cdt.examples.dsf/.settings/org.eclipse.jdt.core.prefs
index 1e4fd5e53f6..b3f421f43cd 100644
--- a/dsf/org.eclipse.cdt.examples.dsf/.settings/org.eclipse.jdt.core.prefs
+++ b/dsf/org.eclipse.cdt.examples.dsf/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/dsf/org.eclipse.cdt.examples.dsf/.settings/org.eclipse.jdt.ui.prefs b/dsf/org.eclipse.cdt.examples.dsf/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/dsf/org.eclipse.cdt.examples.dsf/.settings/org.eclipse.jdt.ui.prefs
+++ b/dsf/org.eclipse.cdt.examples.dsf/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/dsf/org.eclipse.cdt.examples.dsf/META-INF/MANIFEST.MF b/dsf/org.eclipse.cdt.examples.dsf/META-INF/MANIFEST.MF
index 2feff70908d..f0518924713 100644
--- a/dsf/org.eclipse.cdt.examples.dsf/META-INF/MANIFEST.MF
+++ b/dsf/org.eclipse.cdt.examples.dsf/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@ Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-Vendor: %providerName
Bundle-SymbolicName: org.eclipse.cdt.examples.dsf;singleton:=true
-Bundle-Version: 2.2.200.qualifier
+Bundle-Version: 2.3.300.qualifier
Bundle-Activator: org.eclipse.cdt.examples.dsf.DsfExamplesPlugin
Bundle-Localization: plugin
Require-Bundle: org.eclipse.ui,
@@ -15,5 +15,5 @@ Require-Bundle: org.eclipse.ui,
org.eclipse.cdt.dsf.ui,
org.apache.ant;bundle-version="1.7.0";resolution:=optional
Eclipse-LazyStart: true
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Automatic-Module-Name: org.eclipse.cdt.examples.dsf
diff --git a/dsf/org.eclipse.cdt.examples.dsf/about.html b/dsf/org.eclipse.cdt.examples.dsf/about.html
index 164f781a8fd..b3134865230 100644
--- a/dsf/org.eclipse.cdt.examples.dsf/about.html
+++ b/dsf/org.eclipse.cdt.examples.dsf/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/dsf/org.eclipse.cdt.examples.dsf/about.mappings b/dsf/org.eclipse.cdt.examples.dsf/about.mappings
index 0824105e69d..936a8039c3e 100644
--- a/dsf/org.eclipse.cdt.examples.dsf/about.mappings
+++ b/dsf/org.eclipse.cdt.examples.dsf/about.mappings
@@ -4,6 +4,6 @@
# This file does not need to be translated.
# The following should contain the build version.
-# e.g. "0=20020612"
-# This value will be added automaticaly via the build scripts
-0=@build@ \ No newline at end of file
+# e.g. "0=20200106-1728"
+# This value will be added automatically via the build scripts
+0=${buildId}
diff --git a/dsf/org.eclipse.cdt.examples.dsf/about.properties b/dsf/org.eclipse.cdt.examples.dsf/about.properties
index 8effa34702d..378dfeb5796 100644
--- a/dsf/org.eclipse.cdt.examples.dsf/about.properties
+++ b/dsf/org.eclipse.cdt.examples.dsf/about.properties
@@ -1,15 +1,15 @@
###############################################################################
-# Copyright (c) 2002, 2009 Wind River Systems and others.
+# Copyright (c) 2009, 2022 Contributors to the Eclipse Foundation
#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
#
-# SPDX-License-Identifier: EPL-2.0
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
#
-# Contributors:
-# Wind River Systems - initial API and implementation
+# SPDX-License-Identifier: EPL-2.0
###############################################################################
# about.properties
# contains externalized strings for about.ini
@@ -18,10 +18,15 @@
# This file should be translated.
# NOTE TO TRANSLATOR: Please do not translate the featureVersion variable.
-blurb=CDT Debugger Services Framework (DSF) Examples\n\
+
+blurb=C/C++ Debugger Services Framework (DSF) Examples\n\
\n\
Version: {featureVersion}\n\
Build id: {0}\n\
\n\
-(c) Copyright Eclipse contributors and others, 2000, 2010.\n\
+Copyright (c) 2009, 2022 Contributors to the Eclipse Foundation
+\n\
+See the NOTICE file(s) distributed with this work for additional\n\
+information regarding copyright ownership.\n\
+\n\
Visit http://www.eclipse.org/cdt
diff --git a/dsf/org.eclipse.cdt.examples.dsf/src/org/eclipse/cdt/examples/dsf/timers/TriggerCellModifier.java b/dsf/org.eclipse.cdt.examples.dsf/src/org/eclipse/cdt/examples/dsf/timers/TriggerCellModifier.java
index e64831924bb..1237c512628 100644
--- a/dsf/org.eclipse.cdt.examples.dsf/src/org/eclipse/cdt/examples/dsf/timers/TriggerCellModifier.java
+++ b/dsf/org.eclipse.cdt.examples.dsf/src/org/eclipse/cdt/examples/dsf/timers/TriggerCellModifier.java
@@ -31,6 +31,7 @@ import org.eclipse.core.runtime.Status;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.ICellModifier;
import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.PlatformUI;
import org.osgi.framework.InvalidSyntaxException;
import org.osgi.util.tracker.ServiceTracker;
@@ -153,8 +154,8 @@ public class TriggerCellModifier implements ICellModifier {
}
private Shell getShell() {
- if (DsfExamplesPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow() != null) {
- return DsfExamplesPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getShell();
+ if (PlatformUI.getWorkbench().getActiveWorkbenchWindow() != null) {
+ return PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
}
return null;
}
diff --git a/dsf/org.eclipse.cdt.examples.dsf/src_preprocess/org/eclipse/cdt/examples/dsf/dataviewer/AsyncSumDataGenerator.java b/dsf/org.eclipse.cdt.examples.dsf/src_preprocess/org/eclipse/cdt/examples/dsf/dataviewer/AsyncSumDataGenerator.java
index d86219b2299..e005337b3b4 100644
--- a/dsf/org.eclipse.cdt.examples.dsf/src_preprocess/org/eclipse/cdt/examples/dsf/dataviewer/AsyncSumDataGenerator.java
+++ b/dsf/org.eclipse.cdt.examples.dsf/src_preprocess/org/eclipse/cdt/examples/dsf/dataviewer/AsyncSumDataGenerator.java
@@ -83,7 +83,7 @@ public class AsyncSumDataGenerator implements IDataGenerator {
int maxCount = counts[counts.length - 1];
rm.setData(maxCount);
rm.done();
- };
+ }
};
// Each call to data generator fills in one value in array.
@@ -131,7 +131,7 @@ public class AsyncSumDataGenerator implements IDataGenerator {
}
rm.setData(sum);
rm.done();
- };
+ }
};
// Each call to data generator fills in one value in array.
diff --git a/dsf/org.eclipse.cdt.examples.dsf/src_preprocess/org/eclipse/cdt/examples/dsf/dataviewer/AsyncSumDataViewer.java b/dsf/org.eclipse.cdt.examples.dsf/src_preprocess/org/eclipse/cdt/examples/dsf/dataviewer/AsyncSumDataViewer.java
index e8735bef270..2986ed18db8 100644
--- a/dsf/org.eclipse.cdt.examples.dsf/src_preprocess/org/eclipse/cdt/examples/dsf/dataviewer/AsyncSumDataViewer.java
+++ b/dsf/org.eclipse.cdt.examples.dsf/src_preprocess/org/eclipse/cdt/examples/dsf/dataviewer/AsyncSumDataViewer.java
@@ -219,7 +219,7 @@ public class AsyncSumDataViewer implements ILazyContentProvider {
}
setValueToViewer(fIndex, result.toString());
}
- };
+ }
};
// Request data from each data generator.
diff --git a/dsf/org.eclipse.cdt.examples.dsf/src_preprocess/org/eclipse/cdt/examples/dsf/dataviewer/DataGeneratorCacheManager.java b/dsf/org.eclipse.cdt.examples.dsf/src_preprocess/org/eclipse/cdt/examples/dsf/dataviewer/DataGeneratorCacheManager.java
index 39012a26749..71f3c6f795f 100644
--- a/dsf/org.eclipse.cdt.examples.dsf/src_preprocess/org/eclipse/cdt/examples/dsf/dataviewer/DataGeneratorCacheManager.java
+++ b/dsf/org.eclipse.cdt.examples.dsf/src_preprocess/org/eclipse/cdt/examples/dsf/dataviewer/DataGeneratorCacheManager.java
@@ -73,7 +73,7 @@ public class DataGeneratorCacheManager implements IDataGenerator.Listener {
@Override
protected void retrieve(org.eclipse.cdt.dsf.concurrent.DataRequestMonitor<Integer> rm) {
fDataGenerator.getValue(fIndex, rm);
- };
+ }
/**
* @see CountCache#countChanged()
diff --git a/dsf/org.eclipse.cdt.examples.dsf/src_preprocess/org/eclipse/cdt/examples/dsf/dataviewer/SyncDataViewer.java b/dsf/org.eclipse.cdt.examples.dsf/src_preprocess/org/eclipse/cdt/examples/dsf/dataviewer/SyncDataViewer.java
index cd86d2e515c..9713d41de5f 100644
--- a/dsf/org.eclipse.cdt.examples.dsf/src_preprocess/org/eclipse/cdt/examples/dsf/dataviewer/SyncDataViewer.java
+++ b/dsf/org.eclipse.cdt.examples.dsf/src_preprocess/org/eclipse/cdt/examples/dsf/dataviewer/SyncDataViewer.java
@@ -100,7 +100,7 @@ public class SyncDataViewer implements IStructuredContentProvider, IDataGenerato
protected void handleSuccess() {
rm.setData(Arrays.asList(retVal));
rm.done();
- };
+ }
};
for (int i = 0; i < finalCount; i++) {
final int finalI = i;
diff --git a/dsf/org.eclipse.cdt.tests.dsf/.classpath b/dsf/org.eclipse.cdt.tests.dsf/.classpath
index 22f30643cba..a42a828e04a 100644
--- a/dsf/org.eclipse.cdt.tests.dsf/.classpath
+++ b/dsf/org.eclipse.cdt.tests.dsf/.classpath
@@ -1,7 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src">
+ <attributes>
+ <attribute name="test" value="true"/>
+ </attributes>
+ </classpathentry>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/dsf/org.eclipse.cdt.tests.dsf/.settings/org.eclipse.core.resources.prefs b/dsf/org.eclipse.cdt.tests.dsf/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/dsf/org.eclipse.cdt.tests.dsf/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/dsf/org.eclipse.cdt.tests.dsf/.settings/org.eclipse.jdt.core.prefs b/dsf/org.eclipse.cdt.tests.dsf/.settings/org.eclipse.jdt.core.prefs
index ad05599159f..5b1c443114d 100644
--- a/dsf/org.eclipse.cdt.tests.dsf/.settings/org.eclipse.jdt.core.prefs
+++ b/dsf/org.eclipse.cdt.tests.dsf/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/dsf/org.eclipse.cdt.tests.dsf/.settings/org.eclipse.jdt.ui.prefs b/dsf/org.eclipse.cdt.tests.dsf/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/dsf/org.eclipse.cdt.tests.dsf/.settings/org.eclipse.jdt.ui.prefs
+++ b/dsf/org.eclipse.cdt.tests.dsf/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/dsf/org.eclipse.cdt.tests.dsf/META-INF/MANIFEST.MF b/dsf/org.eclipse.cdt.tests.dsf/META-INF/MANIFEST.MF
index 006f07a0523..c3005b548a3 100644
--- a/dsf/org.eclipse.cdt.tests.dsf/META-INF/MANIFEST.MF
+++ b/dsf/org.eclipse.cdt.tests.dsf/META-INF/MANIFEST.MF
@@ -1,7 +1,7 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
-Bundle-Vendor: %pluginProvider
+Bundle-Vendor: %providerName
Bundle-SymbolicName: org.eclipse.cdt.tests.dsf;singleton:=true
Bundle-Version: 2.1.0.qualifier
Bundle-Activator: org.eclipse.cdt.tests.dsf.DsfTestPlugin
@@ -17,5 +17,5 @@ Require-Bundle: org.eclipse.core.runtime,
org.eclipse.cdt.core;bundle-version="5.2.0",
org.eclipse.test.performance;bundle-version="3.6.0",
org.junit;bundle-version="3.8.2"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Automatic-Module-Name: org.eclipse.cdt.tests.dsf
diff --git a/dsf/org.eclipse.cdt.tests.dsf/about.html b/dsf/org.eclipse.cdt.tests.dsf/about.html
index 164f781a8fd..b3134865230 100644
--- a/dsf/org.eclipse.cdt.tests.dsf/about.html
+++ b/dsf/org.eclipse.cdt.tests.dsf/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/breakpoints/BreakpointMediatorTests.java b/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/breakpoints/BreakpointMediatorTests.java
index e441e1d573e..0b87f7b665a 100644
--- a/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/breakpoints/BreakpointMediatorTests.java
+++ b/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/breakpoints/BreakpointMediatorTests.java
@@ -94,7 +94,7 @@ public class BreakpointMediatorTests {
},
// Initialize breakpoints service
- new InitializeServiceStep<DsfTestBreakpoints>(DsfTestBreakpoints.class) {
+ new InitializeServiceStep<>(DsfTestBreakpoints.class) {
@Override
protected void setService(DsfTestBreakpoints service) {
fBreakpoints = service;
diff --git a/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/concurrent/CacheTests.java b/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/concurrent/CacheTests.java
index 65ef583c423..102cda2a744 100644
--- a/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/concurrent/CacheTests.java
+++ b/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/concurrent/CacheTests.java
@@ -556,7 +556,7 @@ public class CacheTests {
};
// Request data from cache
- Query<Integer> q = new Query<Integer>() {
+ Query<Integer> q = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<Integer> rm) {
@@ -625,7 +625,7 @@ public class CacheTests {
// Create a client request with a badly behaved cancel implementation.
final RequestMonitor[] rmBad = new RequestMonitor[1];
final boolean qBadCanceled[] = new boolean[] { false };
- Query<Integer> qBad = new Query<Integer>() {
+ Query<Integer> qBad = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<Integer> rm) {
rmBad[0] = new RequestMonitor(ImmediateExecutor.getInstance(), rm) {
diff --git a/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/concurrent/DsfQueryTests.java b/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/concurrent/DsfQueryTests.java
index 79ad3a95487..046f6c29f39 100644
--- a/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/concurrent/DsfQueryTests.java
+++ b/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/concurrent/DsfQueryTests.java
@@ -65,7 +65,7 @@ public class DsfQueryTests {
@Test
public void simpleGetTest() throws InterruptedException, ExecutionException {
- Query<Integer> q = new Query<Integer>() {
+ Query<Integer> q = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Integer> rm) {
rm.setData(1);
@@ -89,7 +89,7 @@ public class DsfQueryTests {
public void getErrorTest() throws InterruptedException, ExecutionException {
final String error_message = "Test Error";
- Query<Integer> q = new Query<Integer>() {
+ Query<Integer> q = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Integer> rm) {
rm.setStatus(new Status(IStatus.ERROR, DsfTestPlugin.PLUGIN_ID, IDsfStatusConstants.INTERNAL_ERROR,
@@ -119,7 +119,7 @@ public class DsfQueryTests {
@Test
public void doneExceptionTest() throws InterruptedException, ExecutionException {
- Query<Integer> q = new Query<Integer>() {
+ Query<Integer> q = new Query<>() {
@SuppressWarnings("deprecation")
@Override
protected void execute(DataRequestMonitor<Integer> rm) {
@@ -147,7 +147,7 @@ public class DsfQueryTests {
@Test
public void getWithMultipleDispatchesTest() throws InterruptedException, ExecutionException {
- Query<Integer> q = new Query<Integer>() {
+ Query<Integer> q = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<Integer> rm) {
fExecutor.execute(new DsfRunnable() {
@@ -175,7 +175,7 @@ public class DsfQueryTests {
@Test(expected = ExecutionException.class)
public void exceptionOnGetTest() throws InterruptedException, ExecutionException {
- Query<Integer> q = new Query<Integer>() {
+ Query<Integer> q = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<Integer> rm) {
rm.setStatus(new Status(IStatus.ERROR, DsfTestPlugin.PLUGIN_ID, -1, "", null)); //$NON-NLS-1$
@@ -195,7 +195,7 @@ public class DsfQueryTests {
@Test
public void cancelBeforeWaitingTest() throws InterruptedException, ExecutionException {
- final Query<Integer> q = new Query<Integer>() {
+ final Query<Integer> q = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<Integer> rm) {
fail("Query was cancelled, it should not be called."); //$NON-NLS-1$
@@ -229,7 +229,7 @@ public class DsfQueryTests {
final DataRequestMonitor<?>[] rmHolder = new DataRequestMonitor<?>[1];
final Boolean[] cancelCalled = new Boolean[] { Boolean.FALSE };
- final Query<Integer> q = new Query<Integer>() {
+ final Query<Integer> q = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<Integer> rm) {
synchronized (rmHolder) {
@@ -298,7 +298,7 @@ public class DsfQueryTests {
@Test
public void getTimeoutTest() throws InterruptedException, ExecutionException {
- final Query<Integer> q = new Query<Integer>() {
+ final Query<Integer> q = new Query<>() {
@Override
protected void execute(final DataRequestMonitor<Integer> rm) {
// Call done with a delay of 1 second, to avoid stalling the tests.
diff --git a/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/concurrent/TransactionTests.java b/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/concurrent/TransactionTests.java
index b6cc4739ac8..80b44ebec13 100644
--- a/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/concurrent/TransactionTests.java
+++ b/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/concurrent/TransactionTests.java
@@ -137,7 +137,7 @@ public class TransactionTests {
public void singleTransactionTest() throws InterruptedException, ExecutionException {
final TestSingleTransaction testTransaction = new TestSingleTransaction();
// Request data from cache
- Query<Integer> q = new Query<Integer>() {
+ Query<Integer> q = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Integer> rm) {
testTransaction.request(rm);
@@ -160,7 +160,7 @@ public class TransactionTests {
final TestSumTransaction testTransaction = new TestSumTransaction();
// Request data from cache
- Query<Integer> q = new Query<Integer>() {
+ Query<Integer> q = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Integer> rm) {
testTransaction.request(rm);
diff --git a/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/debug/vm/launch/VMTest1.java b/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/debug/vm/launch/VMTest1.java
index eac07d119c4..7856757e8b6 100644
--- a/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/debug/vm/launch/VMTest1.java
+++ b/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/debug/vm/launch/VMTest1.java
@@ -122,7 +122,7 @@ public class VMTest1 extends VMTestBase implements IViewerUpdatesListenerConstan
Assert.assertNotNull(containerPropProvider);
// Check if container is suspended.
- Query<Map<String, Object>> suspendedQuery = new Query<Map<String, Object>>() {
+ Query<Map<String, Object>> suspendedQuery = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Map<String, Object>> rm) {
Set<String> properties = new HashSet<>();
diff --git a/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/pda/service/command/BasicTests.java b/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/pda/service/command/BasicTests.java
index d34814e66ab..0308d97b87c 100644
--- a/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/pda/service/command/BasicTests.java
+++ b/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/pda/service/command/BasicTests.java
@@ -105,7 +105,7 @@ public class BasicTests extends CommandControlTestsBase {
final PDATestCommand testCommand = new PDATestCommand(fCommandControl.getContext(), "data 1");
// Test sending the command and checking all listeners were called.
- Query<PDACommandResult> sendCommandQuery = new Query<PDACommandResult>() {
+ Query<PDACommandResult> sendCommandQuery = new Query<>() {
@Override
protected void execute(DataRequestMonitor<PDACommandResult> rm) {
fCommandControl.queueCommand(testCommand, rm);
@@ -124,7 +124,7 @@ public class BasicTests extends CommandControlTestsBase {
// Test queuing then removing command
listener.reset();
- Query<Object> queueRemoveCommandQuery = new Query<Object>() {
+ Query<Object> queueRemoveCommandQuery = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Object> rm) {
ICommandToken token = fCommandControl.queueCommand(testCommand,
diff --git a/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/pda/service/command/CommandControlTestsBase.java b/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/pda/service/command/CommandControlTestsBase.java
index 0e9ce935a0b..103089dba10 100644
--- a/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/pda/service/command/CommandControlTestsBase.java
+++ b/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/pda/service/command/CommandControlTestsBase.java
@@ -133,7 +133,7 @@ public class CommandControlTestsBase {
final PDATestCommand testCommand = new PDATestCommand(fCommandControl.getContext(), command);
// Test sending the command and checking all listeners were called.
- Query<PDACommandResult> sendCommandQuery = new Query<PDACommandResult>() {
+ Query<PDACommandResult> sendCommandQuery = new Query<>() {
@Override
protected void execute(DataRequestMonitor<PDACommandResult> rm) {
fCommandControl.queueCommand(testCommand, rm);
diff --git a/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/vm/FormattedValueTests.java b/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/vm/FormattedValueTests.java
index de0a07630c4..8331ba09456 100644
--- a/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/vm/FormattedValueTests.java
+++ b/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/vm/FormattedValueTests.java
@@ -185,7 +185,7 @@ abstract public class FormattedValueTests extends TestCase
}
private void initializeService(final IDsfService service) throws InterruptedException, ExecutionException {
- Query<Object> initQuery = new Query<Object>() {
+ Query<Object> initQuery = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Object> rm) {
rm.setData(new Object());
@@ -227,7 +227,7 @@ abstract public class FormattedValueTests extends TestCase
}
private void shutdownService(final IDsfService service) throws InterruptedException, ExecutionException {
- Query<Object> shutdownQuery = new Query<Object>() {
+ Query<Object> shutdownQuery = new Query<>() {
@Override
protected void execute(DataRequestMonitor<Object> rm) {
rm.setData(new Object());
diff --git a/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/vm/TestModelUpdatesListener.java b/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/vm/TestModelUpdatesListener.java
index d28c4ead9cc..2b4cf36b215 100644
--- a/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/vm/TestModelUpdatesListener.java
+++ b/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/vm/TestModelUpdatesListener.java
@@ -30,7 +30,7 @@ import org.eclipse.jface.viewers.TreePath;
*/
public class TestModelUpdatesListener extends ViewerUpdatesListener {
- private final static Comparator<String> fStringComparator = new Comparator<String>() {
+ private final static Comparator<String> fStringComparator = new Comparator<>() {
@Override
public int compare(String s1, String s2) {
@@ -63,7 +63,7 @@ public class TestModelUpdatesListener extends ViewerUpdatesListener {
};
};
- private final static Comparator<TreePath> fTestElementVMCComparator = new Comparator<TreePath>() {
+ private final static Comparator<TreePath> fTestElementVMCComparator = new Comparator<>() {
@Override
public int compare(TreePath p1, TreePath p2) {
int l1 = p1.getSegmentCount();
diff --git a/dsf/pom.xml b/dsf/pom.xml
index a55a1d31385..dd1bbce9280 100644
--- a/dsf/pom.xml
+++ b/dsf/pom.xml
@@ -1,4 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2017, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
@@ -7,7 +17,7 @@
<parent>
<groupId>org.eclipse.cdt</groupId>
<artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
+ <version>10.7.0-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.cdt.dsf-parent</artifactId>
diff --git a/jsoncdb/aggregator/.project b/jsoncdb/aggregator/.project
new file mode 100644
index 00000000000..87378bbbb30
--- /dev/null
+++ b/jsoncdb/aggregator/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.cdt.jsoncdb-aggregator</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ </natures>
+</projectDescription>
diff --git a/jsoncdb/aggregator/.settings/org.eclipse.core.resources.prefs b/jsoncdb/aggregator/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/jsoncdb/aggregator/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.ui/.settings/org.eclipse.m2e.core.prefs b/jsoncdb/aggregator/.settings/org.eclipse.m2e.core.prefs
index f897a7f1cb2..f897a7f1cb2 100644
--- a/toolchains/arduino/org.eclipse.cdt.arduino.ui/.settings/org.eclipse.m2e.core.prefs
+++ b/jsoncdb/aggregator/.settings/org.eclipse.m2e.core.prefs
diff --git a/jsoncdb/aggregator/pom.xml b/jsoncdb/aggregator/pom.xml
new file mode 100644
index 00000000000..e2867dae0b6
--- /dev/null
+++ b/jsoncdb/aggregator/pom.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2020, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.cdt</groupId>
+ <artifactId>jsoncdb-parent</artifactId>
+ <version>10.7.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>jsoncdb-aggregator</artifactId>
+ <packaging>pom</packaging>
+ <!-- aggregates just the jsoncdb modules
+ Convenient if you focus on working on the jsoncdb modules only.
+ -->
+
+ <modules>
+ <module>../../releng/org.eclipse.cdt.target</module>
+ <module>..</module>
+ </modules>
+</project>
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/.classpath b/jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/.classpath
new file mode 100644
index 00000000000..73d6894a615
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/.classpath
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11">
+ <attributes>
+ <attribute name="module" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src">
+ <attributes>
+ <attribute name="test" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino-feature/.gitignore b/jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/.gitignore
index b83d22266ac..b83d22266ac 100644
--- a/toolchains/arduino/org.eclipse.cdt.arduino-feature/.gitignore
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/.gitignore
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/.project b/jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/.project
new file mode 100644
index 00000000000..eb5f4534d48
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/.project
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.cdt.jsoncdb.arm.tests</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/.settings/org.eclipse.core.resources.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/.settings/org.eclipse.jdt.core.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..5b1c443114d
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=ignore
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
+org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=ignore
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/core/org.eclipse.cdt.core.linux.ppc64le/.settings/org.eclipse.jdt.launching.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/.settings/org.eclipse.jdt.launching.prefs
index f8a131b56e0..f8a131b56e0 100644
--- a/core/org.eclipse.cdt.core.linux.ppc64le/.settings/org.eclipse.jdt.launching.prefs
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/.settings/org.eclipse.jdt.launching.prefs
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/.settings/org.eclipse.jdt.ui.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/.settings/org.eclipse.m2e.core.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 00000000000..f897a7f1cb2
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/releng/org.eclipse.cdt.repo/.settings/org.eclipse.pde.api.tools.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/.settings/org.eclipse.pde.api.tools.prefs
index ec9fbf321d0..ec9fbf321d0 100644
--- a/releng/org.eclipse.cdt.repo/.settings/org.eclipse.pde.api.tools.prefs
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/.settings/org.eclipse.pde.api.tools.prefs
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core.tests/.settings/org.eclipse.pde.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/.settings/org.eclipse.pde.prefs
index 51a63ec9988..51a63ec9988 100644
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core.tests/.settings/org.eclipse.pde.prefs
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/.settings/org.eclipse.pde.prefs
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/META-INF/MANIFEST.MF b/jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..e0ea1a582de
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,11 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Copyright: %Bundle-Copyright
+Bundle-SymbolicName: org.eclipse.cdt.jsoncdb.arm.tests
+Bundle-Version: 1.0.100.qualifier
+Bundle-Vendor: %Bundle-Vendor
+Fragment-Host: org.eclipse.cdt.jsoncdb.arm
+Import-Package: org.junit
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Automatic-Module-Name: org.eclipse.cdt.jsoncdb.arm.tests
+Bundle-Name: %Bundle-Name
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/OSGI-INF/l10n/bundle.properties b/jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/OSGI-INF/l10n/bundle.properties
new file mode 100644
index 00000000000..ab6ad0c721e
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/OSGI-INF/l10n/bundle.properties
@@ -0,0 +1,10 @@
+#Properties file for org.eclipse.cdt.jsoncdb.arm.tests
+Bundle-Name = org.eclipse.cdt.jsoncdb.arm.tests
+Bundle-Vendor = Eclipse CDT
+Bundle-Copyright = 2020 Martin Weber\n\
+\n\
+This program and the accompanying materials are made\n\
+available under the terms of the Eclipse Public License 2.0\n\
+which is available at https://www.eclipse.org/legal/epl-2.0/\n\
+\n\
+SPDX-License-Identifier: EPL-2.0\n\ \ No newline at end of file
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/about.html b/jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/build.properties b/jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/build.properties
new file mode 100644
index 00000000000..30c35d74ee2
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/build.properties
@@ -0,0 +1,7 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ OSGI-INF/,\
+ about.html
+src.includes = about.html
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/src/org/eclipse/cdt/jsoncdb/arm/SystemIncludePathTest.java b/jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/src/org/eclipse/cdt/jsoncdb/arm/SystemIncludePathTest.java
new file mode 100644
index 00000000000..e1ceb3819ee
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/src/org/eclipse/cdt/jsoncdb/arm/SystemIncludePathTest.java
@@ -0,0 +1,71 @@
+/*******************************************************************************
+ * Copyright (c) 2019-2020 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.jsoncdb.arm;
+
+import static org.junit.Assert.assertEquals;
+
+import org.eclipse.cdt.jsoncdb.core.participant.DefaultToolCommandlineParser;
+import org.eclipse.cdt.jsoncdb.core.participant.IToolCommandlineParser.IResult;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * @author Martin Weber
+ */
+public class SystemIncludePathTest {
+
+ private ArmccToolDetectionParticipant.SystemIncludePath_armcc testee;
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ testee = new ArmccToolDetectionParticipant.SystemIncludePath_armcc();
+ }
+
+ @Test
+ public final void testProcessArgument() {
+ DefaultToolCommandlineParser tcp = new DefaultToolCommandlineParser(null, null, testee);
+
+ final String more = " -g "
+ + " -o CMakeFiles/execut1.dir/util1.c.o -c /testprojects/C-subsrc/src/src-sub/main1.c";
+ final IPath cwd = new Path("");
+
+ String name = "/an/Include/Path";
+
+ IResult result;
+ // -J/an/Include/Path
+ result = tcp.processArgs(cwd, "-J" + name + more);
+ assertEquals("#entries", 1, result.getSystemIncludePaths().size());
+ assertEquals("name", name, result.getSystemIncludePaths().get(0));
+ // -J'/an/Include/Path'
+ result = tcp.processArgs(cwd, "-J" + "'" + name + "'" + more);
+ assertEquals("#entries", 1, result.getSystemIncludePaths().size());
+ assertEquals("name", name, result.getSystemIncludePaths().get(0));
+ // -J"/an/Include/Path"
+ result = tcp.processArgs(cwd, "-J" + "\"" + name + "\"" + more);
+ assertEquals("#entries", 1, result.getSystemIncludePaths().size());
+ assertEquals("name", name, result.getSystemIncludePaths().get(0));
+
+ name = (new Path("A:an\\In CLU de/Pat h")).toOSString();
+ // -J"A:an\In CLU de/Pat h"
+ result = tcp.processArgs(cwd, "-J" + "\"" + name + "\"" + more);
+ assertEquals("#entries", 1, result.getSystemIncludePaths().size());
+ assertEquals("name", name, result.getSystemIncludePaths().get(0));
+
+ // -J'A:an\In CLU de/Pat h'
+ result = tcp.processArgs(cwd, "-J" + "\"" + name + "\"" + more);
+ assertEquals("#entries", 1, result.getSystemIncludePaths().size());
+ assertEquals("name", name, result.getSystemIncludePaths().get(0));
+ }
+
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/src/org/eclipse/cdt/jsoncdb/arm/ToolDetectionParticipantTest.java b/jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/src/org/eclipse/cdt/jsoncdb/arm/ToolDetectionParticipantTest.java
new file mode 100644
index 00000000000..f8c7cab2a6b
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.arm.tests/src/org/eclipse/cdt/jsoncdb/arm/ToolDetectionParticipantTest.java
@@ -0,0 +1,88 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.jsoncdb.arm;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import java.util.Locale;
+
+import org.eclipse.cdt.jsoncdb.core.participant.IToolDetectionParticipant;
+import org.eclipse.cdt.jsoncdb.core.participant.ParticipantTestUtil;
+import org.junit.Test;
+
+/**
+ * @author Martin Weber
+ */
+public class ToolDetectionParticipantTest {
+ @Test
+ public void testDetermineToolDetectionParticipant_armcc() {
+ IToolDetectionParticipant result = ParticipantTestUtil
+ .determineToolDetectionParticipant("/usr/bin/armcc -I /foo/cc -C blah.c", null, true);
+ assertNotNull(result);
+ assertEquals(ArmccToolDetectionParticipant.class, result.getClass());
+
+ result = ParticipantTestUtil.determineToolDetectionParticipant("armcc -I /foo/cc -C blah.c", null, true);
+ assertNotNull(result);
+ assertEquals(ArmccToolDetectionParticipant.class, result.getClass());
+
+ result = ParticipantTestUtil.determineToolDetectionParticipant("/usr/bin/armcc.exe -I /foo/cc -C blah.c", null,
+ true);
+ assertNotNull(result);
+ assertEquals(ArmccToolDetectionParticipant.class, result.getClass());
+
+ result = ParticipantTestUtil.determineToolDetectionParticipant("armcc.exe -I /foo/cc -C blah.c", null, true);
+ assertNotNull(result);
+ assertEquals(ArmccToolDetectionParticipant.class, result.getClass());
+ }
+
+ @Test
+ public void testDetermineToolDetectionParticipant_armcc_quote() {
+ String[] quotes = { "\"", "'" };
+ for (String quote : quotes) {
+ String args = String.format(Locale.ROOT, "%1$s/usr/bin/armcc%1$s -I /foo/cc -C blah.c", quote);
+ IToolDetectionParticipant result = ParticipantTestUtil.determineToolDetectionParticipant(args, null, true);
+ assertNotNull("Command in quotes= " + quote, result);
+ assertEquals(ArmccToolDetectionParticipant.class, result.getClass());
+ }
+ }
+
+ @Test
+ public void testDetermineToolDetectionParticipant_armclang() {
+ IToolDetectionParticipant result = ParticipantTestUtil
+ .determineToolDetectionParticipant("/usr/bin/armclang -I /foo/clang -C blah.c", null, true);
+ assertNotNull(result);
+ assertEquals(ArmClangToolDetectionParticipant.class, result.getClass());
+
+ result = ParticipantTestUtil.determineToolDetectionParticipant("armclang -I /foo/clang -C blah.c", null, true);
+ assertNotNull(result);
+ assertEquals(ArmClangToolDetectionParticipant.class, result.getClass());
+
+ result = ParticipantTestUtil.determineToolDetectionParticipant("/usr/bin/armclang.exe -I /foo/clang -C blah.c",
+ null, true);
+ assertNotNull(result);
+ assertEquals(ArmClangToolDetectionParticipant.class, result.getClass());
+
+ result = ParticipantTestUtil.determineToolDetectionParticipant("armclang.exe -I /foo/clang -C blah.c", null,
+ true);
+ assertNotNull(result);
+ assertEquals(ArmClangToolDetectionParticipant.class, result.getClass());
+ }
+
+ @Test
+ public void testDetermineToolDetectionParticipant_armclang_quote() {
+ String[] quotes = { "\"", "'" };
+ for (String quote : quotes) {
+ String args = String.format(Locale.ROOT, "%1$s/usr/bin/armclang%1$s -I /foo/clang -C blah.c", quote);
+ IToolDetectionParticipant result = ParticipantTestUtil.determineToolDetectionParticipant(args, null, true);
+ assertNotNull("Command in quotes= " + quote, result);
+ assertEquals(ArmClangToolDetectionParticipant.class, result.getClass());
+ }
+ }
+} \ No newline at end of file
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.arm/.classpath b/jsoncdb/org.eclipse.cdt.jsoncdb.arm/.classpath
new file mode 100644
index 00000000000..fd968d06ff7
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.arm/.classpath
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11">
+ <attributes>
+ <attribute name="maven.pomderived" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.ui/.gitignore b/jsoncdb/org.eclipse.cdt.jsoncdb.arm/.gitignore
index b83d22266ac..b83d22266ac 100644
--- a/toolchains/arduino/org.eclipse.cdt.arduino.ui/.gitignore
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.arm/.gitignore
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.arm/.project b/jsoncdb/org.eclipse.cdt.jsoncdb.arm/.project
new file mode 100644
index 00000000000..6491517a263
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.arm/.project
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.cdt.jsoncdb.arm</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+ </natures>
+</projectDescription>
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.arm/.settings/org.eclipse.core.resources.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.arm/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.arm/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.arm/.settings/org.eclipse.jdt.core.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.arm/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..e3a8104f9ca
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.arm/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/core/org.eclipse.cdt.core.linux.x86_64/.settings/org.eclipse.jdt.launching.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.arm/.settings/org.eclipse.jdt.launching.prefs
index f8a131b56e0..f8a131b56e0 100644
--- a/core/org.eclipse.cdt.core.linux.x86_64/.settings/org.eclipse.jdt.launching.prefs
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.arm/.settings/org.eclipse.jdt.launching.prefs
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.arm/.settings/org.eclipse.jdt.ui.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.arm/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.arm/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.arm/.settings/org.eclipse.m2e.core.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.arm/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 00000000000..f897a7f1cb2
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.arm/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/releng/org.eclipse.cdt.target/.settings/org.eclipse.pde.api.tools.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.arm/.settings/org.eclipse.pde.api.tools.prefs
index ec9fbf321d0..ec9fbf321d0 100644
--- a/releng/org.eclipse.cdt.target/.settings/org.eclipse.pde.api.tools.prefs
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.arm/.settings/org.eclipse.pde.api.tools.prefs
diff --git a/releng/org.eclipse.cdt.repo/.settings/org.eclipse.pde.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.arm/.settings/org.eclipse.pde.prefs
index d2dc703ba9e..d2dc703ba9e 100644
--- a/releng/org.eclipse.cdt.repo/.settings/org.eclipse.pde.prefs
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.arm/.settings/org.eclipse.pde.prefs
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.arm/META-INF/MANIFEST.MF b/jsoncdb/org.eclipse.cdt.jsoncdb.arm/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..3bf824fff67
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.arm/META-INF/MANIFEST.MF
@@ -0,0 +1,14 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %bundleName
+Bundle-Copyright: %Bundle-Copyright
+Bundle-SymbolicName: org.eclipse.cdt.jsoncdb.arm;singleton:=true
+Bundle-Version: 1.0.200.qualifier
+Bundle-Vendor: %Bundle-Vendor
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.core.runtime;bundle-version="3.11.1",
+ org.eclipse.help,
+ org.eclipse.cdt.jsoncdb.core;bundle-version="1.0.0"
+Automatic-Module-Name: org.eclipse.cdt.jsoncdb.arm
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.arm/about.html b/jsoncdb/org.eclipse.cdt.jsoncdb.arm/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.arm/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.arm/build.properties b/jsoncdb/org.eclipse.cdt.jsoncdb.arm/build.properties
new file mode 100644
index 00000000000..2367d3898da
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.arm/build.properties
@@ -0,0 +1,10 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ plugin.properties,\
+ about.html,\
+ help_content_extension.xml,\
+ doc/
+src.includes = about.html
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.arm/doc/compiler.xhtml b/jsoncdb/org.eclipse.cdt.jsoncdb.arm/doc/compiler.xhtml
new file mode 100644
index 00000000000..f083c787cf0
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.arm/doc/compiler.xhtml
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
+ <head>
+ <title>ARM.com Compilers</title>
+ </head>
+ <body>
+ <div id="lsp">
+ <h4>ARM.com Compilers</h4>
+ <table style="border-collapse:collapse">
+ <thead>
+ <tr>
+ <th>Compiler</th>
+ <th>Vendor/Standard</th>
+ <th>Language</th>
+ <th>Macros</th>
+ <th>Include directories</th>
+ <th>
+ System include
+ <br />
+ directories
+ </th>
+ <th>Compiler executables</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>armclang</td>
+ <td>ARM</td>
+ <td>C/C++</td>
+ <td>Needs Testing</td>
+ <td>Needs Testing</td>
+ <td>No</td>
+ <td>armclang, armclang.exe</td>
+ </tr>
+ <tr>
+ <td>armcc</td>
+ <td>ARM</td>
+ <td>C/C++</td>
+ <td>Needs Testing</td>
+ <td>Needs Testing</td>
+ <td>Needs Testing</td>
+ <td>armcc, armcc.exe</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+
+ <div id="builtins">
+ <h4>ARM.com Compilers</h4>
+ <table style="border-collapse:collapse">
+ <thead>
+ <tr>
+ <th>Compiler</th>
+ <th>Vendor</th>
+ <th>Macros</th>
+ <th>
+ System
+ <br />
+ include paths
+ </th>
+ <th>
+ Local
+ <br />
+ include paths
+ </th>
+ <th>
+ MACOS Framework
+ <br />
+ include paths
+ </th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>armclang</td>
+ <td>Arm</td>
+ <td>N/A</td>
+ <td>N/A</td>
+ <td>N/A</td>
+ <td>N/A</td>
+ </tr>
+ <tr>
+ <td>armcc</td>
+ <td>Arm</td>
+ <td>tested</td>
+ <td>N/A</td>
+ <td>N/A</td>
+ <td>N/A</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.arm/help_content_extension.xml b/jsoncdb/org.eclipse.cdt.jsoncdb.arm/help_content_extension.xml
new file mode 100644
index 00000000000..8d21362bf67
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.arm/help_content_extension.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<contentExtension>
+ <contribution content="doc/compiler.xhtml#lsp"
+ path="/org.eclipse.cdt.jsoncdb.core.doc/doc/html/supported-compilers.xhtml#extra_detection_participant_list"/>
+ <contribution content="doc/compiler.xhtml#builtins"
+ path="/org.eclipse.cdt.jsoncdb.core.doc/doc/html/builtins-detection.xhtml#extra_detection_participant_builtins_list"/>
+</contentExtension> \ No newline at end of file
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.arm/plugin.properties b/jsoncdb/org.eclipse.cdt.jsoncdb.arm/plugin.properties
new file mode 100644
index 00000000000..355d6ab585f
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.arm/plugin.properties
@@ -0,0 +1,10 @@
+bundleName=JSON Compilation Database Parser Support for ARM C compilers
+
+Bundle-Vendor = Eclipse CDT
+Bundle-Copyright = 2019 Martin Weber\n\
+\n\
+This program and the accompanying materials are made\n\
+available under the terms of the Eclipse Public License 2.0\n\
+which is available at https://www.eclipse.org/legal/epl-2.0/\n\
+\n\
+SPDX-License-Identifier: EPL-2.0\n\ \ No newline at end of file
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.arm/plugin.xml b/jsoncdb/org.eclipse.cdt.jsoncdb.arm/plugin.xml
new file mode 100644
index 00000000000..6e82800d71e
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.arm/plugin.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension point="org.eclipse.cdt.jsoncdb.core.detectionParticipant">
+ <tool class="org.eclipse.cdt.jsoncdb.arm.ArmccToolDetectionParticipant"
+ displayName="ARM.com armcc, C &amp; C++"/>
+ <tool class="org.eclipse.cdt.jsoncdb.arm.ArmClangToolDetectionParticipant"
+ displayName="ARM.com armclang, C &amp; C++"/>
+ </extension>
+ <extension
+ point="org.eclipse.help.contentExtension">
+ <contentExtension
+ file="help_content_extension.xml">
+ </contentExtension>
+ </extension>
+</plugin>
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.arm/src/org/eclipse/cdt/jsoncdb/arm/ArmClangToolDetectionParticipant.java b/jsoncdb/org.eclipse.cdt.jsoncdb.arm/src/org/eclipse/cdt/jsoncdb/arm/ArmClangToolDetectionParticipant.java
new file mode 100644
index 00000000000..fe783658cff
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.arm/src/org/eclipse/cdt/jsoncdb/arm/ArmClangToolDetectionParticipant.java
@@ -0,0 +1,39 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.jsoncdb.arm;
+
+import org.eclipse.cdt.jsoncdb.core.participant.Arglets;
+import org.eclipse.cdt.jsoncdb.core.participant.DefaultToolCommandlineParser;
+import org.eclipse.cdt.jsoncdb.core.participant.DefaultToolDetectionParticipant;
+import org.eclipse.cdt.jsoncdb.core.participant.IArglet;
+import org.eclipse.cdt.jsoncdb.core.participant.ResponseFileArglets;
+
+/**
+ * armclang C & C++.
+ *
+ * @author Martin Weber
+ */
+public class ArmClangToolDetectionParticipant extends DefaultToolDetectionParticipant {
+
+ @SuppressWarnings("nls")
+ public ArmClangToolDetectionParticipant() {
+ super("armclang", true, "exe", new ToolCommandlineParser());
+ }
+
+ private static class ToolCommandlineParser extends DefaultToolCommandlineParser {
+
+ private static final IArglet[] arglets = { new Arglets.IncludePath_C_POSIX(), new Arglets.MacroDefine_C_POSIX(),
+ new Arglets.MacroUndefine_C_POSIX() };
+
+ private ToolCommandlineParser() {
+ super(new ResponseFileArglets.At(), null, arglets);
+ }
+ }
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.arm/src/org/eclipse/cdt/jsoncdb/arm/ArmccBuiltinDetectionBehavior.java b/jsoncdb/org.eclipse.cdt.jsoncdb.arm/src/org/eclipse/cdt/jsoncdb/arm/ArmccBuiltinDetectionBehavior.java
new file mode 100644
index 00000000000..a1c0a3864e5
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.arm/src/org/eclipse/cdt/jsoncdb/arm/ArmccBuiltinDetectionBehavior.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * Copyright (c) 2019-2020 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.jsoncdb.arm;
+
+import java.util.Arrays;
+import java.util.List;
+
+import org.eclipse.cdt.jsoncdb.core.participant.builtins.GccOutputProcessor;
+import org.eclipse.cdt.jsoncdb.core.participant.builtins.IBuiltinsDetectionBehavior;
+import org.eclipse.cdt.jsoncdb.core.participant.builtins.IBuiltinsOutputProcessor;
+
+/**
+ * The {link IBuiltinsDetectionBehavior} for the ARM C or C++ version 5
+ * compiler.
+ *
+ * @author Martin Weber
+ */
+class ArmccBuiltinDetectionBehavior implements IBuiltinsDetectionBehavior {
+ // --list_macros for macros
+ @SuppressWarnings("nls")
+ private final List<String> enablingArgs = Arrays.asList("--list_macros");
+
+ @Override
+ public List<String> getBuiltinsOutputEnablingArgs() {
+ return enablingArgs;
+ }
+
+ @Override
+ public IBuiltinsOutputProcessor createCompilerOutputProcessor() {
+ return new GccOutputProcessor();
+ }
+
+ @Override
+ public boolean suppressErrormessage() {
+ // report an error, if the compiler does not understand the arguments that
+ // enable built-in detection
+ return false;
+ }
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.arm/src/org/eclipse/cdt/jsoncdb/arm/ArmccToolDetectionParticipant.java b/jsoncdb/org.eclipse.cdt.jsoncdb.arm/src/org/eclipse/cdt/jsoncdb/arm/ArmccToolDetectionParticipant.java
new file mode 100644
index 00000000000..7e0f5810ef5
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.arm/src/org/eclipse/cdt/jsoncdb/arm/ArmccToolDetectionParticipant.java
@@ -0,0 +1,62 @@
+/*******************************************************************************
+ * Copyright (c) 2019-2020 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.jsoncdb.arm;
+
+import org.eclipse.cdt.jsoncdb.core.participant.Arglets;
+import org.eclipse.cdt.jsoncdb.core.participant.Arglets.IncludePathGeneric;
+import org.eclipse.cdt.jsoncdb.core.participant.Arglets.NameOptionMatcher;
+import org.eclipse.cdt.jsoncdb.core.participant.DefaultToolCommandlineParser;
+import org.eclipse.cdt.jsoncdb.core.participant.DefaultToolDetectionParticipant;
+import org.eclipse.cdt.jsoncdb.core.participant.IArglet;
+import org.eclipse.core.runtime.IPath;
+
+/**
+ * armcc C & C++.
+ *
+ * @author Martin Weber
+ */
+public class ArmccToolDetectionParticipant extends DefaultToolDetectionParticipant {
+
+ @SuppressWarnings("nls")
+ public ArmccToolDetectionParticipant() {
+ super("armcc", true, "exe", new ToolCommandlineParser());
+ }
+
+ private static class ToolCommandlineParser extends DefaultToolCommandlineParser {
+
+ private static final IArglet[] arglets = { new Arglets.IncludePath_C_POSIX(), new Arglets.MacroDefine_C_POSIX(),
+ new Arglets.MacroUndefine_C_POSIX(), new SystemIncludePath_armcc() };
+
+ private ToolCommandlineParser() {
+ super(null, new ArmccBuiltinDetectionBehavior(), arglets);
+ }
+ }
+
+ /**
+ * A tool argument parser capable to parse a armcc-compiler system include path
+ * argument: {@code -Jdir}.
+ */
+ /* package */ static class SystemIncludePath_armcc extends IncludePathGeneric implements IArglet {
+ @SuppressWarnings("nls")
+ static final NameOptionMatcher[] optionMatchers = {
+ /* quoted directory */
+ new NameOptionMatcher("-J" + "([\"'])(.+?)\\1", 2),
+ /* unquoted directory */
+ new NameOptionMatcher("-J" + "([^\\s]+)", 1), };
+
+ /*-
+ * @see org.eclipse.cdt.jsoncdb.IArglet#processArgs(java.lang.String)
+ */
+ @Override
+ public int processArgument(IArgumentCollector resultCollector, IPath cwd, String argsLine) {
+ return processArgument(true, resultCollector, cwd, argsLine, optionMatchers);
+ }
+ }
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core.doc/.project b/jsoncdb/org.eclipse.cdt.jsoncdb.core.doc/.project
new file mode 100644
index 00000000000..aee2425eff0
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.doc/.project
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.cdt.jsoncdb.core.doc</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ </natures>
+</projectDescription>
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core.doc/.settings/org.eclipse.core.resources.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.core.doc/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.doc/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/releng/org.eclipse.cdt.testing.repo/.settings/org.eclipse.pde.api.tools.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.core.doc/.settings/org.eclipse.pde.api.tools.prefs
index ec9fbf321d0..ec9fbf321d0 100644
--- a/releng/org.eclipse.cdt.testing.repo/.settings/org.eclipse.pde.api.tools.prefs
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.doc/.settings/org.eclipse.pde.api.tools.prefs
diff --git a/releng/org.eclipse.cdt.target/.settings/org.eclipse.pde.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.core.doc/.settings/org.eclipse.pde.prefs
index d2dc703ba9e..d2dc703ba9e 100644
--- a/releng/org.eclipse.cdt.target/.settings/org.eclipse.pde.prefs
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.doc/.settings/org.eclipse.pde.prefs
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core.doc/META-INF/MANIFEST.MF b/jsoncdb/org.eclipse.cdt.jsoncdb.core.doc/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..c5cff69b7be
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.doc/META-INF/MANIFEST.MF
@@ -0,0 +1,11 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %bundleName
+Bundle-Description: %Bundle-Description
+Bundle-Copyright: %Bundle-Copyright
+Bundle-SymbolicName: org.eclipse.cdt.jsoncdb.core.doc;singleton:=true
+Bundle-Version: 1.0.200.qualifier
+Bundle-Vendor: %Bundle-Vendor
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Bundle-ActivationPolicy: lazy
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core.doc/about.html b/jsoncdb/org.eclipse.cdt.jsoncdb.core.doc/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.doc/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core.doc/build.properties b/jsoncdb/org.eclipse.cdt.jsoncdb.core.doc/build.properties
new file mode 100644
index 00000000000..e419b5c2e0c
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.doc/build.properties
@@ -0,0 +1,9 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ plugin.properties,\
+ doc/,\
+ about.html
+src.includes = about.html
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core.doc/doc/html/builtins-detection.xhtml b/jsoncdb/org.eclipse.cdt.jsoncdb.core.doc/doc/html/builtins-detection.xhtml
new file mode 100644
index 00000000000..73a24008219
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.doc/doc/html/builtins-detection.xhtml
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
+<head>
+<title>Compiler Built-ins Detection Support Overview</title>
+<style type="text/css">
+table,
+th,
+td {
+ border: 1px solid black;
+}
+th,
+td {
+ padding: 2pt;
+}
+</style>
+</head>
+<body>
+ <h1>Compiler Built-ins Detection Support Overview</h1>
+ <p>JSON Compilation Database Parser support can detect compiler-built-in include paths and preprocessor macros.
+ </p>
+
+ <h2>Invariant Built-ins Detection Support</h2>
+ <p>The following table shows the compilers and their supported features detected.</p>
+ <table id="overview_table" style="border-collapse:collapse">
+ <thead>
+ <tr>
+ <th>Compiler</th>
+ <th>Vendor</th>
+ <th>Macros</th>
+ <th>System<br/>include paths</th>
+ <th>Local<br/>include paths</th>
+ <th>MACOS Framework<br/>include paths</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>gcc</td>
+ <td>GNU Project</td>
+ <td>tested</td>
+ <td>tested</td>
+ <td>tested</td>
+ <td>NYI <a href="#fw-help-gcc">[1]</a></td>
+ </tr>
+ <tr>
+ <td>clang</td>
+ <td>LLVM Project</td>
+ <td>tested</td>
+ <td>tested</td>
+ <td>tested</td>
+ <td>NYI <a href="#fw-help-clang">[2]</a></td>
+ </tr>
+ <tr>
+ <td>cl</td>
+ <td>Microsoft</td>
+ <td>N/A</td>
+ <td>N/A</td>
+ <td>N/A</td>
+ <td>N/A</td>
+ </tr>
+ </tbody>
+ </table>
+ <p>Support status above is either:</p>
+ <dl>
+ <dt>tested</dt><dd>detection is known to work</dd>
+ <dt>implemented (impl)</dt><dd>support is implemented, but not (yet) known to work</dd>
+ <dt>not yet implemented (NYI)</dt><dd>support is not implemented</dd>
+ <dt>not available (N/A)</dt><dd>the compiler does not support detection (regarding the online docs only)</dd>
+ </dl>
+
+ <h3>Compilers supported through separate plug-ins</h3>
+ <!-- extra compilers go here -->
+ <anchor id="extra_detection_participant_builtins_list"/>
+
+ <h2>Enhanced Built-ins Detection Support</h2>
+ <p>Some compilers, mainly those of the GNU Compiler Collection and derivatives, report different built-ins
+ depending on the arguments passed to the compiler. These arguments specify a non-default language level
+ or specify non-standard default system include directories.
+ The table below shows an overview of the supported compilers and the recognized command-line options.</p>
+ <table id="overview_table_eh" style="border-collapse:collapse">
+ <thead>
+ <tr>
+ <th>Compiler</th>
+ <th>Vendor</th>
+ <th>Language Standard<br/>options</th>
+ <th>Non-Standard System<br/>include paths options</th>
+ <th>Other options</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>gcc</td>
+ <td>GNU Project</td>
+ <td><code>-std=</code>, <code>-ansi</code>: tested</td>
+ <td><code>--sysroot=</code>, <code>-isysroot=</code>, <code>--no-sysroot-prefix</code>: tested</td>
+ <td><code>-fPIC</code>, <code>-fpic</code>, <code>-fPIE</code>, <code>-fpie</code>
+ <code>-fstack-protector*</code>, <code>-march=</code>, <code>-march=</code>, <code>-mcpu=</code>,
+ <code>-mtune=</code>, <code>-pthread</code>
+ </td>
+ </tr>
+ <tr>
+ <td>clang</td>
+ <td>LLVM Project</td>
+ <td><code>-std=</code>, <code>-ansi</code>: tested</td>
+ <td><code>--sysroot=</code>, <code>-isysroot=</code>, <code>--no-sysroot-prefix</code>: tested</td>
+ <td></td>
+ </tr>
+ </tbody>
+ </table>
+ <p>Remarks:</p>
+ <ul style="list-style-type:none">
+ <li id="fw-help-gcc">[1] Help wanted! To implement this, the output of <code>gcc -E -P -dM -Wp,-v emty.c</code>
+ running on OSX is needed.</li>
+ <li id="fw-help-clang">[2] Help wanted! To implement this, the output of <code>clang -E -P -dM -Wp,-v emty.c</code>
+ running on OSX is needed.</li>
+ </ul>
+
+ <h3>Compilers supported through separate plug-ins</h3>
+ <!-- extra compilers go here -->
+ <anchor id="extra_detection_participant_builtins_enhanced_list"/>
+</body>
+</html> \ No newline at end of file
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core.doc/doc/html/notices.html b/jsoncdb/org.eclipse.cdt.jsoncdb.core.doc/doc/html/notices.html
new file mode 100644
index 00000000000..bb0658d5bd7
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.doc/doc/html/notices.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta charset="UTF-8"/>
+<title>Legal Notices</title>
+</head>
+<body>
+ <div role="main">
+ <h1>
+ <a name="Notices"></a>Notices
+ </h1>
+ <p>The material in this guide is Copyright (c) Martin Weber 2013-2019.
+ </p>
+ <p>
+ <a href="../../about.html">Terms and conditions regarding the use of
+ this guide.</a>
+ </p>
+ </div>
+</body>
+</html>
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core.doc/doc/html/supported-compilers.xhtml b/jsoncdb/org.eclipse.cdt.jsoncdb.core.doc/doc/html/supported-compilers.xhtml
new file mode 100644
index 00000000000..e4c2b391975
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.doc/doc/html/supported-compilers.xhtml
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
+<head>
+<title>Available Compiler Support for the JSON Compilation Database Parser</title>
+<style type="text/css">
+table, th, td {
+ border: 1px solid black;
+}
+th, td {
+ padding: 2pt;
+}
+</style>
+</head>
+<body>
+ <h1>Preprocessor Include Paths, Macros</h1>
+ <P>The C/C++/CUDA editors use the CDT indexer to improve syntax highlighting, allowing you to jump to
+ macro definitions and to browse through include files.
+ </P>
+ <p>The following table lists the compiler executables supported by the JSON Compilation Database Parser.</p>
+ <table id="overview_table" style="border-collapse:collapse">
+ <thead>
+ <tr>
+ <th>Compiler</th>
+ <th>Vendor/Standard</th>
+ <th>Language</th>
+ <th>Macros</th>
+ <th>Include directories</th>
+ <th>System include<br/>directories</th>
+ <th>Macros file</th>
+ <th>Include file</th>
+ <th>Compiler executables</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>gcc</td>
+ <td>GNU Project</td>
+ <td>C</td>
+ <td>Yes</td>
+ <td>Yes</td>
+ <td>Yes</td>
+ <td>Yes (-imacros)</td>
+ <td>Yes (-include)</td>
+ <td>cc, cc.exe, gcc, gcc.exe, <a href="#fw-gcc-cross">".+-gcc"</a>, <a href="#fw-gcc-cross">".+-gcc.exe"</a></td>
+ </tr>
+ <tr>
+ <td>g++</td>
+ <td>GNU Project</td>
+ <td>C++</td>
+ <td>Yes</td>
+ <td>Yes</td>
+ <td>Yes</td>
+ <td>Yes (-imacros)</td>
+ <td>Yes (-include)</td>
+ <td>c++, c++.exe, g++, g++.exe, <a href="#fw-g++-cross">".+-g\+\+"</a>, <a href="#fw-g++-cross">".+-g\+\+.exe"</a>
+ , <a href="#fw-g++-cross">".+-c\+\+"</a>, <a href="#fw-g++-cross">".+-c\+\+.exe"</a></td>
+ </tr>
+ <tr>
+ <td>clang</td>
+ <td>LLVM Project</td>
+ <td>C</td>
+ <td>Yes</td>
+ <td>Yes</td>
+ <td>Yes</td>
+ <td>N/A</td>
+ <td>Yes (-include)</td>
+ <td>clang, clang.exe</td>
+ </tr>
+ <tr>
+ <td>clang++</td>
+ <td>LLVM Project</td>
+ <td>C++</td>
+ <td>Yes</td>
+ <td>Yes</td>
+ <td>Yes</td>
+ <td>N/A</td>
+ <td>Yes (-include)</td>
+ <td>clang++, clang++.exe</td>
+ </tr>
+ <tr>
+ <td>cc</td>
+ <td>POSIX</td>
+ <td>C</td>
+ <td>Yes</td>
+ <td>Yes</td>
+ <td>No</td>
+ <td>No</td>
+ <td>No</td>
+ <td>cc, cc.exe</td>
+ </tr>
+ <tr>
+ <td>c++</td>
+ <td>POSIX</td>
+ <td>C++</td>
+ <td>Yes</td>
+ <td>Yes</td>
+ <td>No</td>
+ <td>No</td>
+ <td>No</td>
+ <td>c++, c++.exe</td>
+ </tr>
+ </tbody>
+ </table>
+ <p>Remarks:</p>
+ <ul style="list-style-type:none">
+ <li id="fw-help-gcc-cross">".+-gcc" This representes a Java regular expression that also matches
+ a <a href="https://wiki.osdev.org/Target_Triplet#Structure">target triplet</a>, thus allowing to work with cross-compilers
+ named like e.g. <code>arm-none-eabi-gcc</code>.</li>
+ <li id="fw-help-gcc-cross">".+-g\+\+" This representes a Java regular expression that also matches
+ a <a href="https://wiki.osdev.org/Target_Triplet#Structure">target triplet</a>, thus allowing to work with cross-compilers
+ named like e.g. <code>arm-none-eabi-g++</code>.</li>
+ </ul>
+ <h3>Compilers supported through separate plug-ins</h3>
+ <!-- extra compilers go here -->
+ <anchor id="extra_detection_participant_list"/>
+
+ <h2>JSON Compilation Database Parser Compiler Built-ins detection</h2>
+ <p>This feature also tries to get the include paths and preprocessor macros
+ <strong>built-in to the compiler</strong>.<br/>
+ Note that this works only for compilers that supporting it.
+ See <a href="builtins-detection.xhtml">built-ins detection</a> for supported compilers.
+ </p>
+</body>
+</html> \ No newline at end of file
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core.doc/doc/toc.xml b/jsoncdb/org.eclipse.cdt.jsoncdb.core.doc/doc/toc.xml
new file mode 100644
index 00000000000..915149e0588
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.doc/doc/toc.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<toc label="JSON Compilation Database Parser User Guide">
+ <topic label="Tasks">
+ <link toc="doc/topics_Tasks.xml"/>
+ </topic>
+ <topic href="doc/html/notices.html" label="Legal">
+ </topic>
+</toc>
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core.doc/doc/topics_Tasks.xml b/jsoncdb/org.eclipse.cdt.jsoncdb.core.doc/doc/topics_Tasks.xml
new file mode 100644
index 00000000000..af81d3fe5fc
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.doc/doc/topics_Tasks.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<toc label="Tasks" link_to="jsoncdb_Tasks_Anchor" topic="doc/html/o_tasks.html">
+ <topic label="Build">
+ </topic>
+ <topic href="doc/html/supported-compilers.xhtml" label="Syntax Highlighting Support">
+ <topic href="doc/html/builtins-detection.xhtml" label="Compiler Built-ins Detection">
+ </topic>
+ </topic>
+</toc>
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core.doc/plugin.properties b/jsoncdb/org.eclipse.cdt.jsoncdb.core.doc/plugin.properties
new file mode 100644
index 00000000000..759bc3d25b0
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.doc/plugin.properties
@@ -0,0 +1,11 @@
+bundleName=JSON Compilation Database Parser user manual
+
+Bundle-Vendor = Eclipse CDT
+Bundle-Description = JSON compilation database parser
+Bundle-Copyright = 2013 Martin Weber\n\
+\n\
+This program and the accompanying materials are made\n\
+available under the terms of the Eclipse Public License 2.0\n\
+which is available at https://www.eclipse.org/legal/epl-2.0/\n\
+\n\
+SPDX-License-Identifier: EPL-2.0\n\ \ No newline at end of file
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core.doc/plugin.xml b/jsoncdb/org.eclipse.cdt.jsoncdb.core.doc/plugin.xml
new file mode 100644
index 00000000000..a3afecd00b8
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.doc/plugin.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <!-- project settings UI -->
+
+
+ <extension point="org.eclipse.help.toc">
+ <toc file="doc/toc.xml" primary="true"/>
+ <toc file="doc/topics_Tasks.xml"/>
+ </extension>
+</plugin>
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/.classpath b/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/.classpath
new file mode 100644
index 00000000000..73d6894a615
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/.classpath
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11">
+ <attributes>
+ <attribute name="module" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src">
+ <attributes>
+ <attribute name="test" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/.gitignore b/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/.gitignore
new file mode 100644
index 00000000000..b83d22266ac
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/.gitignore
@@ -0,0 +1 @@
+/target/
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/.project b/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/.project
new file mode 100644
index 00000000000..7d07b2d8d55
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.cdt.jsoncdb.core.tests</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/.settings/org.eclipse.core.resources.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/.settings/org.eclipse.jdt.core.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..5b1c443114d
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=ignore
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
+org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=ignore
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/core/org.eclipse.cdt.core.win32.x86_64/.settings/org.eclipse.jdt.launching.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/.settings/org.eclipse.jdt.launching.prefs
index f8a131b56e0..f8a131b56e0 100644
--- a/core/org.eclipse.cdt.core.win32.x86_64/.settings/org.eclipse.jdt.launching.prefs
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/.settings/org.eclipse.jdt.launching.prefs
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/.settings/org.eclipse.jdt.ui.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/.settings/org.eclipse.m2e.core.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 00000000000..f897a7f1cb2
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/releng/scripts/.settings/org.eclipse.pde.api.tools.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/.settings/org.eclipse.pde.api.tools.prefs
index ec9fbf321d0..ec9fbf321d0 100644
--- a/releng/scripts/.settings/org.eclipse.pde.api.tools.prefs
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/.settings/org.eclipse.pde.api.tools.prefs
diff --git a/upc/org.eclipse.cdt.core.parser.upc.tests/.settings/org.eclipse.pde.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/.settings/org.eclipse.pde.prefs
index 51a63ec9988..51a63ec9988 100644
--- a/upc/org.eclipse.cdt.core.parser.upc.tests/.settings/org.eclipse.pde.prefs
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/.settings/org.eclipse.pde.prefs
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/META-INF/MANIFEST.MF b/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..3cb3a33c8ec
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,11 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Copyright: %Bundle-Copyright
+Bundle-SymbolicName: org.eclipse.cdt.jsoncdb.core.tests
+Bundle-Version: 1.0.100.qualifier
+Bundle-Vendor: %Bundle-Vendor
+Fragment-Host: org.eclipse.cdt.jsoncdb.core
+Import-Package: org.junit
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Automatic-Module-Name: org.eclipse.cdt.jsoncdb.core.tests
+Bundle-Name: %Bundle-Name
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/OSGI-INF/l10n/bundle.properties b/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/OSGI-INF/l10n/bundle.properties
new file mode 100644
index 00000000000..ad3ee3f9890
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/OSGI-INF/l10n/bundle.properties
@@ -0,0 +1,10 @@
+#Properties file for org.eclipse.cdt.jsoncdb.core.tests
+Bundle-Name = org.eclipse.cdt.jsoncdb.core.tests
+Bundle-Vendor = Eclipse CDT
+Bundle-Copyright = 2020 Martin Weber\n\
+\n\
+This program and the accompanying materials are made\n\
+available under the terms of the Eclipse Public License 2.0\n\
+which is available at https://www.eclipse.org/legal/epl-2.0/\n\
+\n\
+SPDX-License-Identifier: EPL-2.0\n\ \ No newline at end of file
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/about.html b/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/build.properties b/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/build.properties
new file mode 100644
index 00000000000..0a753e1d198
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/build.properties
@@ -0,0 +1,8 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ OSGI-INF/l10n/bundle.properties,\
+ OSGI-INF/,\
+ about.html
+src.includes = about.html
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/src/org/eclipse/cdt/jsoncdb/core/internal/BuiltinsDetectLangStd_GCC_Test.java b/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/src/org/eclipse/cdt/jsoncdb/core/internal/BuiltinsDetectLangStd_GCC_Test.java
new file mode 100644
index 00000000000..ac8a99870b1
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/src/org/eclipse/cdt/jsoncdb/core/internal/BuiltinsDetectLangStd_GCC_Test.java
@@ -0,0 +1,97 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.jsoncdb.core.internal;
+
+import static org.junit.Assert.assertEquals;
+
+import org.eclipse.cdt.jsoncdb.core.participant.Arglets;
+import org.eclipse.cdt.jsoncdb.core.participant.Arglets.LangStd_GCC;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * @author Martin Weber
+ */
+public class BuiltinsDetectLangStd_GCC_Test {
+
+ private LangStd_GCC testee;
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ testee = new LangStd_GCC();
+ }
+
+ /**
+ * Test method for {@link Arglets.LangStd_GCC#processArgument}.
+ */
+ @Test
+ public final void testProcessArgument_std() {
+ final String more = " -g -MMD -MT CMakeFiles/execut1.dir/util1.c.o -MF \"CMakeFiles/execut1.dir/util1.c.o.d\""
+ + " -o CMakeFiles/execut1.dir/util1.c.o -c /testprojects/C-subsrc/src/src-sub/main1.c";
+ ParseContext context;
+ String parsed;
+
+ final IPath cwd = new Path("");
+ // -std=
+ String arg = "-std=c++14";
+
+ context = new ParseContext();
+ testee.processArgument(context, cwd, arg + more);
+ assertEquals("#entries", 1, context.getBuiltinDetectionArgs().size());
+ parsed = context.getBuiltinDetectionArgs().get(0);
+ assertEquals("name", arg, parsed);
+ // -std=c11
+ context = new ParseContext();
+ arg = "-std=c11";
+ testee.processArgument(context, cwd, arg + " " + arg + more);
+ assertEquals("#entries", 1, context.getBuiltinDetectionArgs().size());
+ parsed = context.getBuiltinDetectionArgs().get(0);
+ assertEquals("name", arg, parsed);
+ // -std=c1x
+ context = new ParseContext();
+ arg = "-std=c1x";
+ testee.processArgument(context, cwd, arg + " " + arg + more);
+ assertEquals("#entries", 1, context.getBuiltinDetectionArgs().size());
+ parsed = context.getBuiltinDetectionArgs().get(0);
+ assertEquals("name", arg, parsed);
+ // -std=iso9899:1999
+ context = new ParseContext();
+ arg = "-std=iso9899:1999";
+ testee.processArgument(context, cwd, arg + " " + arg + more);
+ assertEquals("#entries", 1, context.getBuiltinDetectionArgs().size());
+ parsed = context.getBuiltinDetectionArgs().get(0);
+ assertEquals("name", arg, parsed);
+ }
+
+ /**
+ * Test method for {@link Arglets.LangStd_GCC#processArgument}.
+ */
+ @Test
+ public final void testProcessArgument_ansi() {
+ final String more = " -g -MMD -MT CMakeFiles/execut1.dir/util1.c.o -MF \"CMakeFiles/execut1.dir/util1.c.o.d\""
+ + " -o CMakeFiles/execut1.dir/util1.c.o -c /testprojects/C-subsrc/src/src-sub/main1.c";
+ ParseContext context;
+ String parsed;
+
+ final IPath cwd = new Path("");
+ // -ansi
+ String arg = "-ansi";
+
+ context = new ParseContext();
+ testee.processArgument(context, cwd, arg + more);
+ assertEquals("#entries", 1, context.getBuiltinDetectionArgs().size());
+ parsed = context.getBuiltinDetectionArgs().get(0);
+ assertEquals("name", arg, parsed);
+ }
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/src/org/eclipse/cdt/jsoncdb/core/internal/BuiltinsDetectSysroot_GCC_Test.java b/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/src/org/eclipse/cdt/jsoncdb/core/internal/BuiltinsDetectSysroot_GCC_Test.java
new file mode 100644
index 00000000000..6347ba392bb
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/src/org/eclipse/cdt/jsoncdb/core/internal/BuiltinsDetectSysroot_GCC_Test.java
@@ -0,0 +1,111 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.jsoncdb.core.internal;
+
+import static org.junit.Assert.assertEquals;
+
+import org.eclipse.cdt.jsoncdb.core.participant.Arglets;
+import org.eclipse.cdt.jsoncdb.core.participant.Arglets.Sysroot_GCC;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * @author Martin Weber
+ */
+public class BuiltinsDetectSysroot_GCC_Test {
+
+ private Sysroot_GCC testee;
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ testee = new Sysroot_GCC();
+ }
+
+ /**
+ * Test method for {@link Arglets.Sysroot_GCC#processArgument}.
+ */
+ @Test
+ public final void testProcessArgument_sysroot() {
+ final String more = " -g -MMD -MT CMakeFiles/execut1.dir/util1.c.o -MF \"CMakeFiles/execut1.dir/util1.c.o.d\""
+ + " -o CMakeFiles/execut1.dir/util1.c.o -c /testprojects/C-subsrc/src/src-sub/main1.c";
+ ParseContext context;
+ String parsed;
+
+ final IPath cwd = new Path("");
+ // --sysroot=/a/Path
+ String arg = "--sysroot=/XAX/YYY";
+
+ context = new ParseContext();
+ testee.processArgument(context, cwd, arg + more);
+ assertEquals("#entries", 1, context.getBuiltinDetectionArgs().size());
+ parsed = context.getBuiltinDetectionArgs().get(0);
+ assertEquals("name", arg, parsed);
+ // --sysroot="/a/Path"
+ context = new ParseContext();
+ arg = "--sysroot=\"/XXX/YYY\"";
+ testee.processArgument(context, cwd, arg + " " + arg + more);
+ assertEquals("#entries", 1, context.getBuiltinDetectionArgs().size());
+ parsed = context.getBuiltinDetectionArgs().get(0);
+ assertEquals("name", arg, parsed);
+ }
+
+ /**
+ * Test method for {@link Arglets.Sysroot_GCC#processArgument}.
+ */
+ @Test
+ public final void testProcessArgument_isysroot() {
+ final String more = " -g -MMD -MT CMakeFiles/execut1.dir/util1.c.o -MF \"CMakeFiles/execut1.dir/util1.c.o.d\""
+ + " -o CMakeFiles/execut1.dir/util1.c.o -c /testprojects/C-subsrc/src/src-sub/main1.c";
+ ParseContext context;
+ String parsed;
+
+ final IPath cwd = new Path("");
+ // -isysroot=/a/Path
+ String arg = "-isysroot=/XAX/YYY";
+
+ context = new ParseContext();
+ testee.processArgument(context, cwd, arg + more);
+ assertEquals("#entries", 1, context.getBuiltinDetectionArgs().size());
+ parsed = context.getBuiltinDetectionArgs().get(0);
+ assertEquals("name", arg, parsed);
+ // -isysroot="/a/Path"
+ context = new ParseContext();
+ arg = "-isysroot=\"/XXX/YYY\"";
+ testee.processArgument(context, cwd, arg + more);
+ assertEquals("#entries", 1, context.getBuiltinDetectionArgs().size());
+ parsed = context.getBuiltinDetectionArgs().get(0);
+ assertEquals("name", arg, parsed);
+ }
+
+ /**
+ * Test method for {@link Arglets.Sysroot_GCC#processArgument}.
+ */
+ @Test
+ public final void testProcessArgument_no_sysroot_prefix() {
+ final String more = " -g -MMD -MT CMakeFiles/execut1.dir/util1.c.o -MF \"CMakeFiles/execut1.dir/util1.c.o.d\""
+ + " -o CMakeFiles/execut1.dir/util1.c.o -c /testprojects/C-subsrc/src/src-sub/main1.c";
+ ParseContext context;
+ String parsed;
+
+ final IPath cwd = new Path("");
+ // --no-sysroot-prefix
+ String arg = "--no-sysroot-prefix";
+
+ context = new ParseContext();
+ testee.processArgument(context, cwd, arg + more);
+ assertEquals("#entries", 1, context.getBuiltinDetectionArgs().size());
+ parsed = context.getBuiltinDetectionArgs().get(0);
+ assertEquals("name", arg, parsed);
+ }
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/src/org/eclipse/cdt/jsoncdb/core/internal/BuiltinsDetectTarget_Clang_Test.java b/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/src/org/eclipse/cdt/jsoncdb/core/internal/BuiltinsDetectTarget_Clang_Test.java
new file mode 100644
index 00000000000..fda40750660
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/src/org/eclipse/cdt/jsoncdb/core/internal/BuiltinsDetectTarget_Clang_Test.java
@@ -0,0 +1,58 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Ghaith Hachem.
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.jsoncdb.core.internal;
+
+import static org.junit.Assert.assertEquals;
+
+import org.eclipse.cdt.jsoncdb.core.participant.Arglets;
+import org.eclipse.cdt.jsoncdb.core.participant.Arglets.Target_Clang;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+import org.junit.Before;
+import org.junit.Test;
+
+public class BuiltinsDetectTarget_Clang_Test {
+
+ private Target_Clang testee;
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ testee = new Target_Clang();
+ }
+
+ /**
+ * Test method for {@link Arglets.Sysroot_GCC#processArgument}.
+ */
+ @Test
+ public final void testProcessArgument_target() {
+ final String more = " -g -MMD -MT CMakeFiles/execut1.dir/util1.c.o -MF \"CMakeFiles/execut1.dir/util1.c.o.d\""
+ + " -o CMakeFiles/execut1.dir/util1.c.o -c /testprojects/C-subsrc/src/src-sub/main1.c";
+ ParseContext context;
+ String parsed;
+
+ final IPath cwd = new Path("");
+ // --target=some-triplet-string
+ String arg = "--target=test-triplet-entry";
+
+ context = new ParseContext();
+ testee.processArgument(context, cwd, arg + more);
+ assertEquals("#entries", 1, context.getBuiltinDetectionArgs().size());
+ parsed = context.getBuiltinDetectionArgs().get(0);
+ assertEquals("name", arg, parsed);
+ // --sysroot="/a/Path"
+ context = new ParseContext();
+ arg = "--target=test-triplet-entry";
+ testee.processArgument(context, cwd, arg + " " + arg + more);
+ assertEquals("#entries", 1, context.getBuiltinDetectionArgs().size());
+ parsed = context.getBuiltinDetectionArgs().get(0);
+ assertEquals("name", arg, parsed);
+ }
+
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/src/org/eclipse/cdt/jsoncdb/core/internal/IncludeFile_GCCTest.java b/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/src/org/eclipse/cdt/jsoncdb/core/internal/IncludeFile_GCCTest.java
new file mode 100644
index 00000000000..e3fdc91de32
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/src/org/eclipse/cdt/jsoncdb/core/internal/IncludeFile_GCCTest.java
@@ -0,0 +1,143 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.jsoncdb.core.internal;
+
+import static org.junit.Assert.assertEquals;
+
+import org.eclipse.cdt.jsoncdb.core.participant.Arglets.IncludeFile_GCC;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * @author Martin Weber
+ */
+public class IncludeFile_GCCTest {
+ private IncludeFile_GCC testee;
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ testee = new IncludeFile_GCC();
+ }
+
+ /**
+ * Test method for {@link IncludeFile_GCC#processArgument(IParseContext, IPath, java.lang.String)} .
+ */
+ @Test
+ public final void testProcessArgument() {
+ final String more = " -o CMakeFiles/execut1.dir/util1.c.o -c /testprojects/C-subsrc/src/src-sub/main1.c";
+ ParseContext result;
+ String parsed;
+
+ String name = "/an/Include/file.inc";
+ IPath cwd = new Path("");
+ // -include/an/Include/file.inc
+ result = new ParseContext();
+ assertEquals(8 + name.length(), testee.processArgument(result, cwd, "-include" + name + more));
+ assertEquals("#entries", 1, result.getIncludeFiles().size());
+ parsed = result.getIncludeFiles().get(0);
+ assertEquals("name", name, parsed);
+ // -include'/an/Include/file.inc'
+ result = new ParseContext();
+ assertEquals(8 + name.length() + 2, testee.processArgument(result, cwd, "-include" + "'" + name + "'" + more));
+ assertEquals("#entries", 1, result.getIncludeFiles().size());
+ parsed = result.getIncludeFiles().get(0);
+ assertEquals("name", name, parsed);
+ // -include"/an/Include/file.inc"
+ result = new ParseContext();
+ assertEquals(8 + name.length() + 2,
+ testee.processArgument(result, cwd, "-include" + "\"" + name + "\"" + more));
+ assertEquals("#entries", 1, result.getIncludeFiles().size());
+ parsed = result.getIncludeFiles().get(0);
+ assertEquals("name", name, parsed);
+
+ // -include /an/Include/file.inc
+ result = new ParseContext();
+ assertEquals(8 + name.length() + 3, testee.processArgument(result, cwd, "-include " + name + more));
+ assertEquals("#entries", 1, result.getIncludeFiles().size());
+ parsed = result.getIncludeFiles().get(0);
+ assertEquals("name", name, parsed);
+ // -include '/an/Include/file.inc'
+ result = new ParseContext();
+ assertEquals(8 + name.length() + 3 + 2,
+ testee.processArgument(result, cwd, "-include " + "'" + name + "'" + more));
+ assertEquals("#entries", 1, result.getIncludeFiles().size());
+ parsed = result.getIncludeFiles().get(0);
+ assertEquals("name", name, parsed);
+ // -include "/an/Include/file.inc"
+ result = new ParseContext();
+ assertEquals(8 + name.length() + 3 + 2,
+ testee.processArgument(result, cwd, "-include " + "\"" + name + "\"" + more));
+ assertEquals("#entries", 1, result.getIncludeFiles().size());
+ parsed = result.getIncludeFiles().get(0);
+ assertEquals("name", name, parsed);
+
+ name = (new Path("A:an\\Include/file.inc")).toOSString();
+ // -includeA:an\Include/file.inc
+ result = new ParseContext();
+ assertEquals(8 + name.length(), testee.processArgument(result, cwd, "-include" + name + more));
+ assertEquals("#entries", 1, result.getIncludeFiles().size());
+ parsed = result.getIncludeFiles().get(0);
+ assertEquals("name", name, parsed);
+ }
+
+ /**
+ * Test method for {@link IncludeFile_GCC#processArgument(IParseContext, IPath, java.lang.String)}
+ */
+ @Test
+ public final void testProcessArgument_WS() {
+ final String more = " -o CMakeFiles/execut1.dir/util1.c.o -c /testprojects/C-subsrc/src/src-sub/main1.c";
+ ParseContext result = new ParseContext();
+ String parsed;
+
+ String name = "/ye olde/In clu de/fi le.inc";
+ IPath cwd = new Path("");
+ // -include'/ye olde/In clu de/fi le.inc'
+ result = new ParseContext();
+ assertEquals(8 + name.length() + 2, testee.processArgument(result, cwd, "-include" + "'" + name + "'" + more));
+ assertEquals("#entries", 1, result.getIncludeFiles().size());
+ parsed = result.getIncludeFiles().get(0);
+ assertEquals("name", name, parsed);
+ // -include"/ye olde/In clu de/fi le.inc"
+ result = new ParseContext();
+ assertEquals(8 + name.length() + 2,
+ testee.processArgument(result, cwd, "-include" + "\"" + name + "\"" + more));
+ assertEquals("#entries", 1, result.getIncludeFiles().size());
+ parsed = result.getIncludeFiles().get(0);
+ assertEquals("name", name, parsed);
+
+ // -include '/ye olde/In clu de/fi le.inc'
+ result = new ParseContext();
+ assertEquals(8 + name.length() + 3 + 2,
+ testee.processArgument(result, cwd, "-include " + "'" + name + "'" + more));
+ assertEquals("#entries", 1, result.getIncludeFiles().size());
+ parsed = result.getIncludeFiles().get(0);
+ assertEquals("name", name, parsed);
+ // -include "/ye olde/In clu de/fi le.inc"
+ result = new ParseContext();
+ assertEquals(8 + name.length() + 3 + 2,
+ testee.processArgument(result, cwd, "-include " + "\"" + name + "\"" + more));
+ assertEquals("#entries", 1, result.getIncludeFiles().size());
+ parsed = result.getIncludeFiles().get(0);
+ assertEquals("name", name, parsed);
+
+ name = (new Path("A:an\\In CLU de/fi le.inc")).toOSString();
+ // -include'A:an\In CLU de/fi le.inc'
+ result = new ParseContext();
+ assertEquals(8 + name.length() + 2,
+ testee.processArgument(result, cwd, "-include" + "\"" + name + "\"" + more));
+ assertEquals("#entries", 1, result.getIncludeFiles().size());
+ parsed = result.getIncludeFiles().get(0);
+ assertEquals("name", name, parsed);
+ }
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/src/org/eclipse/cdt/jsoncdb/core/internal/IncludePath_C_POSIXTest.java b/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/src/org/eclipse/cdt/jsoncdb/core/internal/IncludePath_C_POSIXTest.java
new file mode 100644
index 00000000000..4365adbb33e
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/src/org/eclipse/cdt/jsoncdb/core/internal/IncludePath_C_POSIXTest.java
@@ -0,0 +1,174 @@
+/*******************************************************************************
+ * Copyright (c) 2015-2020 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.jsoncdb.core.internal;
+
+import static org.junit.Assert.assertEquals;
+
+import org.eclipse.cdt.jsoncdb.core.participant.Arglets.IncludePath_C_POSIX;
+import org.eclipse.cdt.jsoncdb.core.participant.IArglet.IArgumentCollector;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * @author Martin Weber
+ */
+public class IncludePath_C_POSIXTest {
+
+ private IncludePath_C_POSIX testee;
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ testee = new IncludePath_C_POSIX();
+ }
+
+ /**
+ * Test method for
+ * {@link IncludePath_C_POSIX#processArgument(IArgumentCollector, IPath, java.lang.String)}
+ * .
+ */
+ @Test
+ public final void testProcessArgument() {
+ final String more = " -g -MMD -MT CMakeFiles/execut1.dir/util1.c.o -MF \"CMakeFiles/execut1.dir/util1.c.o.d\""
+ + " -o CMakeFiles/execut1.dir/util1.c.o -c /testprojects/C-subsrc/src/src-sub/main1.c";
+ ParseContext result;
+
+ String name = "/an/Include/Path";
+ IPath cwd = new Path("");
+ // -I/an/Include/Path
+ result = new ParseContext();
+ assertEquals(2 + name.length(), testee.processArgument(result, cwd, "-I" + name + more));
+ assertEquals("#entries", 1, result.getSystemIncludePaths().size());
+ assertEquals("name", name, result.getSystemIncludePaths().get(0));
+ // -I'/an/Include/Path'
+ result = new ParseContext();
+ assertEquals(2 + name.length() + 2, testee.processArgument(result, cwd, "-I" + "'" + name + "'" + more));
+ assertEquals("#entries", 1, result.getSystemIncludePaths().size());
+ assertEquals("name", name, result.getSystemIncludePaths().get(0));
+ // -I"/an/Include/Path"
+ result = new ParseContext();
+ assertEquals(2 + name.length() + 2, testee.processArgument(result, cwd, "-I" + "\"" + name + "\"" + more));
+ assertEquals("#entries", 1, result.getSystemIncludePaths().size());
+ assertEquals("name", name, result.getSystemIncludePaths().get(0));
+
+ // -I /an/Include/Path
+ result = new ParseContext();
+ assertEquals(2 + name.length() + 3, testee.processArgument(result, cwd, "-I " + name + more));
+ assertEquals("#entries", 1, result.getSystemIncludePaths().size());
+ assertEquals("name", name, result.getSystemIncludePaths().get(0));
+ // -I '/an/Include/Path'
+ result = new ParseContext();
+ assertEquals(2 + name.length() + 3 + 2, testee.processArgument(result, cwd, "-I " + "'" + name + "'" + more));
+ assertEquals("#entries", 1, result.getSystemIncludePaths().size());
+ assertEquals("name", name, result.getSystemIncludePaths().get(0));
+ // -I "/an/Include/Path"
+ result = new ParseContext();
+ assertEquals(2 + name.length() + 3 + 2,
+ testee.processArgument(result, cwd, "-I " + "\"" + name + "\"" + more));
+ assertEquals("#entries", 1, result.getSystemIncludePaths().size());
+ assertEquals("name", name, result.getSystemIncludePaths().get(0));
+
+ name = (new Path("A:an\\Include/Path")).toOSString();
+ // -IA:an\Include/Path
+ result = new ParseContext();
+ assertEquals(2 + name.length(), testee.processArgument(result, cwd, "-I" + name + more));
+ assertEquals("#entries", 1, result.getSystemIncludePaths().size());
+ assertEquals("name", name, result.getSystemIncludePaths().get(0));
+ }
+
+ /**
+ * Test method for
+ * {@link IncludePath_C_POSIX#processArgument(IArgumentCollector, IPath, java.lang.String)}
+ */
+ @Test
+ public final void testProcessArgument_WS() {
+ final String more = " -g -MMD -MT CMakeFiles/execut1.dir/util1.c.o -MF \"CMakeFiles/execut1.dir/util1.c.o.d\""
+ + " -o CMakeFiles/execut1.dir/util1.c.o -c /testprojects/C-subsrc/src/src-sub/main1.c";
+ ParseContext result = new ParseContext();
+
+ String name = "/ye olde/In clu de/Pa the";
+ IPath cwd = new Path("");
+ // -I'/ye olde/In clu de/Pa the'
+ result = new ParseContext();
+ assertEquals(2 + name.length() + 2, testee.processArgument(result, cwd, "-I" + "'" + name + "'" + more));
+ assertEquals("#entries", 1, result.getSystemIncludePaths().size());
+ assertEquals("name", name, result.getSystemIncludePaths().get(0));
+ // -I"/ye olde/In clu de/Pa the"
+ result = new ParseContext();
+ assertEquals(2 + name.length() + 2, testee.processArgument(result, cwd, "-I" + "\"" + name + "\"" + more));
+ assertEquals("#entries", 1, result.getSystemIncludePaths().size());
+ assertEquals("name", name, result.getSystemIncludePaths().get(0));
+
+ // -I '/ye olde/In clu de/Pa the'
+ result = new ParseContext();
+ assertEquals(2 + name.length() + 3 + 2, testee.processArgument(result, cwd, "-I " + "'" + name + "'" + more));
+ assertEquals("#entries", 1, result.getSystemIncludePaths().size());
+ assertEquals("name", name, result.getSystemIncludePaths().get(0));
+ // -I "/ye olde/In clu de/Pa the"
+ result = new ParseContext();
+ assertEquals(2 + name.length() + 3 + 2,
+ testee.processArgument(result, cwd, "-I " + "\"" + name + "\"" + more));
+ assertEquals("#entries", 1, result.getSystemIncludePaths().size());
+ assertEquals("name", name, result.getSystemIncludePaths().get(0));
+
+ name = (new Path("A:an\\In CLU de/Pat h")).toOSString();
+ // -I'A:an\In CLU de/Pat h'
+ result = new ParseContext();
+ assertEquals(2 + name.length() + 2, testee.processArgument(result, cwd, "-I" + "\"" + name + "\"" + more));
+ assertEquals("#entries", 1, result.getSystemIncludePaths().size());
+ assertEquals("name", name, result.getSystemIncludePaths().get(0));
+ }
+
+ /**
+ * Test method for
+ * {@link IncludePath_C_POSIX#processArgument(IArgumentCollector, IPath, java.lang.String)}
+ * .
+ */
+ @Test
+ public final void testProcessArgument_RelativePath() {
+ final String more = " -g -MMD -MT CMakeFiles/execut1.dir/util1.c.o -MF \"CMakeFiles/execut1.dir/util1.c.o.d\""
+ + " -o CMakeFiles/execut1.dir/util1.c.o -c /testprojects/C-subsrc/src/src-sub/main1.c";
+
+ String name = (new Path("a/relative/Include/Path")).toOSString();
+ IPath cwd = new Path("/compiler/working/dir");
+ ParseContext result = new ParseContext();
+ assertEquals(2 + name.length(), testee.processArgument(result, cwd, "-I" + name + more));
+ assertEquals("#entries", 1, result.getSystemIncludePaths().size());
+ String absPath = cwd.append(name).toString();
+ assertEquals("name", absPath, result.getSystemIncludePaths().get(0));
+
+ name = (new Path("a\\relative\\Include\\Path")).toOSString();
+ cwd = new Path("\\compiler\\working\\dir");
+ result = new ParseContext();
+ assertEquals(2 + name.length(), testee.processArgument(result, cwd, "-I" + name + more));
+ assertEquals("#entries", 1, result.getSystemIncludePaths().size());
+ absPath = cwd.append(name).toString();
+ assertEquals("name", absPath, result.getSystemIncludePaths().get(0));
+
+ name = (new Path("../../src/Include/Path")).toOSString();
+ cwd = new Path("/compiler/working/dir");
+ result = new ParseContext();
+ assertEquals(2 + name.length(), testee.processArgument(result, cwd, "-I" + name + more));
+ assertEquals("#entries", 1, result.getSystemIncludePaths().size());
+ absPath = cwd.append(name).toString();
+ assertEquals("name", absPath, result.getSystemIncludePaths().get(0));
+
+ name = (new Path("..\\..\\src\\Include\\Path")).toOSString();
+ cwd = new Path("\\compiler\\working\\dir");
+ result = new ParseContext();
+ assertEquals(2 + name.length(), testee.processArgument(result, cwd, "-I" + name + more));
+ assertEquals("#entries", 1, result.getSystemIncludePaths().size());
+ absPath = cwd.append(name).toString();
+ assertEquals("name", absPath, result.getSystemIncludePaths().get(0));
+ }
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/src/org/eclipse/cdt/jsoncdb/core/internal/MacroDefine_C_POSIXTest.java b/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/src/org/eclipse/cdt/jsoncdb/core/internal/MacroDefine_C_POSIXTest.java
new file mode 100644
index 00000000000..25e4432b6c1
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/src/org/eclipse/cdt/jsoncdb/core/internal/MacroDefine_C_POSIXTest.java
@@ -0,0 +1,311 @@
+/*******************************************************************************
+ * Copyright (c) 2015-2020 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.jsoncdb.core.internal;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.util.Map;
+
+import org.eclipse.cdt.jsoncdb.core.participant.Arglets;
+import org.eclipse.cdt.jsoncdb.core.participant.Arglets.MacroDefine_C_POSIX;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * @author Martin Weber
+ */
+public class MacroDefine_C_POSIXTest {
+
+ private MacroDefine_C_POSIX testee;
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ testee = new MacroDefine_C_POSIX();
+ }
+
+ /**
+ * Test method for {@link Arglets.MacroDefine_C_POSIX#processArgument}.
+ */
+ @Test
+ public final void testProcessArgument_NoValue() {
+ final String more = " -g -MMD -MT CMakeFiles/execut1.dir/util1.c.o -MF \"CMakeFiles/execut1.dir/util1.c.o.d\""
+ + " -o CMakeFiles/execut1.dir/util1.c.o -c /testprojects/C-subsrc/src/src-sub/main1.c";
+ ParseContext result;
+
+ final IPath cwd = new Path("");
+ int len;
+ // -DFOO
+ String name = "FOO";
+ String arg = "-D" + name;
+
+ result = new ParseContext();
+ len = testee.processArgument(result, cwd, arg + " " + arg + more);
+ assertTrue("found", result.getDefines().containsKey(name));
+ assertEquals("value", "1", result.getDefines().get(name));
+ assertEquals(2 + name.length(), len);
+ // -D FOO
+ result = new ParseContext();
+ arg = "-D " + name;
+ len = testee.processArgument(result, cwd, arg + " " + arg + more);
+ assertTrue("found", result.getDefines().containsKey(name));
+ assertEquals("value", "1", result.getDefines().get(name));
+ assertEquals(2 + name.length() + 3, len);
+ }
+
+ /**
+ * Test method for {@link Arglets.MacroDefine_C_POSIX#processArgument}.
+ */
+ @Test
+ public final void testProcessArgument_Value() {
+ final String more = " -g -MMD -MT CMakeFiles/execut1.dir/util1.c.o -MF \"CMakeFiles/execut1.dir/util1.c.o.d\""
+ + " -o CMakeFiles/execut1.dir/util1.c.o -c /testprojects/C-subsrc/src/src-sub/main1.c";
+ ParseContext result;
+ final IPath cwd = new Path("");
+
+ final String name = "FOO";
+ String val = "noWhiteSpace";
+
+ // -DFOO=noWhiteSpace
+ result = new ParseContext();
+ assertEquals(2 + name.length() + 1 + val.length(),
+ testee.processArgument(result, cwd, "-D" + name + "=" + val + more));
+ assertTrue("found", result.getDefines().containsKey(name));
+ assertEquals("value", val, result.getDefines().get(name));
+ // -D FOO=noWhiteSpace
+ result = new ParseContext();
+ assertEquals(2 + name.length() + 1 + 3 + val.length(),
+ testee.processArgument(result, cwd, "-D " + name + "=" + val + more));
+ assertTrue("found", result.getDefines().containsKey(name));
+ assertEquals("value", val, result.getDefines().get(name));
+
+ // ----------------------------------------
+ val = "Wh it e s ap ac ";
+ // -D 'FOO=Wh it e s ap ac '
+ result = new ParseContext();
+ assertEquals(2 + name.length() + 1 + 2 + 3 + val.length(),
+ testee.processArgument(result, cwd, "-D " + "'" + name + "=" + val + "'" + more));
+ assertTrue("found", result.getDefines().containsKey(name));
+ assertEquals("value", val, result.getDefines().get(name));
+ // -D "FOO=Wh it e s ap ac "
+ result = new ParseContext();
+ assertEquals(2 + name.length() + 1 + 2 + 3 + val.length(),
+ testee.processArgument(result, cwd, "-D " + "\"" + name + "=" + val + "\"" + more));
+ assertTrue("found", result.getDefines().containsKey(name));
+ assertEquals("value", val, result.getDefines().get(name));
+ }
+
+ /**
+ * Test method for {@link Arglets.MacroDefine_C_POSIX#processArgument}.
+ */
+ @Test
+ public final void testProcessArgument_Value_CharLiteral() {
+ final String more = " -g -MMD -MT CMakeFiles/execut1.dir/util1.c.o -MF \"CMakeFiles/execut1.dir/util1.c.o.d\""
+ + " -o CMakeFiles/execut1.dir/util1.c.o -c /testprojects/C-subsrc/src/src-sub/main1.c";
+ ParseContext result;
+ final IPath cwd = new Path("");
+ int len;
+ String val, arg;
+
+ final String name = "FOO";
+
+ // ----------------------------------------
+ // -DFOO='noWhiteSpace'
+ val = "'noWhiteSpace'";
+ arg = "-D" + name + "=" + val;
+ result = new ParseContext();
+ len = testee.processArgument(result, cwd, arg + " " + arg + more);
+ assertTrue("found", result.getDefines().containsKey(name));
+ assertEquals("value", val, result.getDefines().get(name));
+ assertEquals(arg.length(), len);
+ // -D FOO='noWhiteSpace'
+ arg = "-D " + name + "=" + val;
+ result = new ParseContext();
+ len = testee.processArgument(result, cwd, arg + " " + arg + more);
+ assertTrue("found", result.getDefines().containsKey(name));
+ assertEquals("value", val, result.getDefines().get(name));
+ assertEquals(arg.length(), len);
+ // ----------------------------------------
+ // -DFOO='noWhite\'escapedQuoteChar' (values with single quotes)
+ val = "'noWhite\\'escapedQuoteChar'";
+ arg = "-D" + name + "=" + val;
+ result = new ParseContext();
+ len = testee.processArgument(result, cwd, arg + " " + arg + more);
+ assertTrue("found", result.getDefines().containsKey(name));
+ assertEquals("value", val, result.getDefines().get(name));
+ assertEquals(arg.length(), len);
+ // -DFOO='noWhite\\escapedEscapeChar'
+ val = "'noWhite\\\\escapedEscapeChar'";
+ arg = "-D" + name + "=" + val;
+ result = new ParseContext();
+ len = testee.processArgument(result, cwd, arg + " " + arg + more);
+ assertTrue("found", result.getDefines().containsKey(name));
+ assertEquals("value", val, result.getDefines().get(name));
+ assertEquals(arg.length(), len);
+ // ----------------------------------------
+ // -DFOO='Wh it e s ap ac '
+ val = "'Wh it e s ap ac '";
+ arg = "-D" + name + "=" + val;
+ result = new ParseContext();
+ len = testee.processArgument(result, cwd, arg + " " + arg + more);
+ assertTrue("found", result.getDefines().containsKey(name));
+ assertEquals("value", val, result.getDefines().get(name));
+ assertEquals(arg.length(), len);
+ // -D FOO='Wh it e s ap ac '
+ arg = "-D " + name + "=" + val;
+ result = new ParseContext();
+ len = testee.processArgument(result, cwd, arg + " " + arg + more);
+ assertTrue("found", result.getDefines().containsKey(name));
+ assertEquals("value", val, result.getDefines().get(name));
+ assertEquals(arg.length(), len);
+ // -DFOO='Wh it e s ap ac \'escaped Quote Char' (values with single quotes)
+ val = "'Wh it e s ap ac \\'escaped Quote Char'";
+ arg = "-D" + name + "=" + val;
+ result = new ParseContext();
+ len = testee.processArgument(result, cwd, arg + " " + arg + more);
+ assertTrue("found", result.getDefines().containsKey(name));
+ assertEquals("value", val, result.getDefines().get(name));
+ assertEquals(arg.length(), len);
+ // -DFOO='Wh it e s ap ac \\escaped Escape Char'
+ val = "'Wh it e s ap ac \\\\escaped Escape Char'";
+ arg = "-D" + name + "=" + val;
+ result = new ParseContext();
+ len = testee.processArgument(result, cwd, arg + " " + arg + more);
+ assertTrue("found", result.getDefines().containsKey(name));
+ assertEquals("value", val, result.getDefines().get(name));
+ assertEquals(arg.length(), len);
+ }
+
+ /**
+ * Test method for {@link Arglets.MacroDefine_C_POSIX#processArgument}.
+ */
+ @Test
+ public final void testProcessArgument_Value_StringLiteral() {
+ final String more = " -g -MMD -MT CMakeFiles/execut1.dir/util1.c.o -MF \"CMakeFiles/execut1.dir/util1.c.o.d\""
+ + " -o CMakeFiles/execut1.dir/util1.c.o -c /testprojects/C-subsrc/src/src-sub/main1.c";
+ ParseContext result;
+ final IPath cwd = new Path("");
+ int len;
+ String val, arg;
+
+ final String name = "FO$O";
+ // ----------------------------------------
+ // -DFOO="noWhiteSpace"
+ val = "\"noWhiteSpace\"";
+ arg = "-D" + name + "=" + val;
+ result = new ParseContext();
+ len = testee.processArgument(result, cwd, arg + " " + arg + more);
+ assertTrue("found", result.getDefines().containsKey(name));
+ assertEquals("value", val, result.getDefines().get(name));
+ assertEquals(arg.length(), len);
+ // -D FOO="noWhiteSpace"
+ arg = "-D " + name + "=" + val;
+ result = new ParseContext();
+ len = testee.processArgument(result, cwd, arg + " " + arg + more);
+ assertTrue("found", result.getDefines().containsKey(name));
+ assertEquals("value", val, result.getDefines().get(name));
+ assertEquals(arg.length(), len);
+ // ----------------------------------------
+ // -DFOO="noWhite\"escapedQuoteChar" (values with single quotes)
+ val = "\"noWhite\\\"escapedQuoteChar\"";
+ arg = "-D" + name + "=" + val;
+ result = new ParseContext();
+ len = testee.processArgument(result, cwd, arg + " " + arg + more);
+ assertTrue("found", result.getDefines().containsKey(name));
+ assertEquals("value", val, result.getDefines().get(name));
+ assertEquals(arg.length(), len);
+ // -DFOO="noWhite\\escapedEscapeChar"
+ val = "\"noWhite\\\\escapedEscapeChar\"";
+ arg = "-D" + name + "=" + val;
+ result = new ParseContext();
+ len = testee.processArgument(result, cwd, arg + " " + arg + more);
+ assertTrue("found", result.getDefines().containsKey(name));
+ assertEquals("value", val, result.getDefines().get(name));
+ assertEquals(arg.length(), len);
+ // ----------------------------------------
+ // -DFOO="Wh it e s ap ac "
+ val = "\"Wh it e s ap ac \"";
+ arg = "-D" + name + "=" + val;
+ result = new ParseContext();
+ len = testee.processArgument(result, cwd, arg + " " + arg + more);
+ assertTrue("found", result.getDefines().containsKey(name));
+ assertEquals("value", val, result.getDefines().get(name));
+ assertEquals(arg.length(), len);
+ // -D FOO="Wh it e s ap ac "
+ arg = "-D " + name + "=" + val;
+ result = new ParseContext();
+ len = testee.processArgument(result, cwd, arg + " " + arg + more);
+ assertTrue("found", result.getDefines().containsKey(name));
+ assertEquals("value", val, result.getDefines().get(name));
+ assertEquals(arg.length(), len);
+ // -DFOO="Wh it e s ap ac \"escaped Quote Char" (values with single quotes)
+ val = "\"Wh it e s ap ac \\\"escaped Quote Char\"";
+ arg = "-D" + name + "=" + val;
+ result = new ParseContext();
+ len = testee.processArgument(result, cwd, arg + " " + arg + more);
+ assertTrue("found", result.getDefines().containsKey(name));
+ assertEquals("value", val, result.getDefines().get(name));
+ assertEquals(arg.length(), len);
+ // -DFOO="Wh it e s ap ac \\escaped Escape Char"
+ val = "\"Wh it e s ap ac \\\\escaped Escape Char\"";
+ arg = "-D" + name + "=" + val;
+ result = new ParseContext();
+ len = testee.processArgument(result, cwd, arg + " " + arg + more);
+ assertTrue("found", result.getDefines().containsKey(name));
+ assertEquals("value", val, result.getDefines().get(name));
+ assertEquals(arg.length(), len);
+
+ // ----------------------------------------
+ // special case
+ // -DFOO="2(vtkIOMySQL,vtkIOPostgreSQL)"
+ val = "\"2(vtkIOMySQL,vtkIOPostgreSQL)\"";
+ arg = "-D" + name + "=" + val;
+ result = new ParseContext();
+ len = testee.processArgument(result, cwd, arg + " " + arg + more);
+ assertEquals(arg.length(), len);
+ assertTrue("found", result.getDefines().containsKey(name));
+ assertEquals("value", val, result.getDefines().get(name));
+ }
+
+ /**
+ * Test method for {@link Arglets.MacroDefine_C_POSIX#processArgument}.
+ */
+ @Test
+ public final void testProcessArgument_MacroWithArgs() {
+ final String more = " -g -MMD -MT CMakeFiles/execut1.dir/util1.c.o -MF \"CMakeFiles/execut1.dir/util1.c.o.d\""
+ + " -o CMakeFiles/execut1.dir/util1.c.o -c /testprojects/C-subsrc/src/src-sub/main1.c";
+ ParseContext result;
+ final IPath cwd = new Path("");
+
+ // -DFOO=noWhiteSpace
+ final String name = "FOO";
+ final String args = "(a,b,c)";
+ String val = "(a)/((b)+(c))";
+
+ // -DFOO(a,b,c)=(a)/((b)+(c))
+ result = new ParseContext();
+ assertEquals(2 + name.length() + args.length() + 1 + val.length(),
+ testee.processArgument(result, cwd, "-D" + name + args + "=" + val + more));
+ Map<String, String> defines = result.getDefines();
+ assertEquals("#entries", 1, defines.size());
+ assertEquals("value", val, result.getDefines().get(name));
+ // -D FOO(a,b,c)=(a)/((b)+(c))
+ result = new ParseContext();
+ assertEquals(2 + name.length() + args.length() + 1 + 3 + val.length(),
+ testee.processArgument(result, cwd, "-D " + name + args + "=" + val + more));
+ defines = result.getDefines();
+ assertEquals("#entries", 1, defines.size());
+ assertEquals("value", val, result.getDefines().get(name));
+ }
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/src/org/eclipse/cdt/jsoncdb/core/internal/MacroUndefine_C_POSIXTest.java b/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/src/org/eclipse/cdt/jsoncdb/core/internal/MacroUndefine_C_POSIXTest.java
new file mode 100644
index 00000000000..a954b94f757
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/src/org/eclipse/cdt/jsoncdb/core/internal/MacroUndefine_C_POSIXTest.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2015-2020 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.jsoncdb.core.internal;
+
+import static org.junit.Assert.assertEquals;
+
+import org.eclipse.cdt.jsoncdb.core.participant.Arglets.MacroUndefine_C_POSIX;
+import org.eclipse.cdt.jsoncdb.core.participant.IArglet.IArgumentCollector;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * @author Martin Weber
+ */
+public class MacroUndefine_C_POSIXTest {
+
+ private MacroUndefine_C_POSIX testee;
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ testee = new MacroUndefine_C_POSIX();
+ }
+
+ /**
+ * Test method for
+ * {@link MacroUndefine_C_POSIX#processArgument(IArgumentCollector, IPath, java.lang.String)}
+ * .
+ */
+ @Test
+ public final void testProcessArgument() {
+ final String more = " -g -MMD -MT CMakeFiles/execut1.dir/util1.c.o -MF \"CMakeFiles/execut1.dir/util1.c.o.d\""
+ + " -o CMakeFiles/execut1.dir/util1.c.o -c /testprojects/C-subsrc/src/src-sub/main1.c";
+ ParseContext result;
+ final IPath cwd = new Path("");
+
+ String name = "FOO";
+ // -UFOO
+ result = new ParseContext();
+ assertEquals(2 + name.length(), testee.processArgument(result, cwd, "-U" + name + more));
+ assertEquals("#entries", 1, result.getUndefines().size());
+ assertEquals("name", name, result.getUndefines().get(0));
+ // -U FOO
+ result = new ParseContext();
+ assertEquals(2 + 2 + name.length(), testee.processArgument(result, cwd, "-U " + name + more));
+ assertEquals("#entries", 1, result.getUndefines().size());
+ assertEquals("name", name, result.getUndefines().get(0));
+ }
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/src/org/eclipse/cdt/jsoncdb/core/internal/MacrosFile_GCCTest.java b/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/src/org/eclipse/cdt/jsoncdb/core/internal/MacrosFile_GCCTest.java
new file mode 100644
index 00000000000..0b72350ad72
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/src/org/eclipse/cdt/jsoncdb/core/internal/MacrosFile_GCCTest.java
@@ -0,0 +1,143 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.jsoncdb.core.internal;
+
+import static org.junit.Assert.assertEquals;
+
+import org.eclipse.cdt.jsoncdb.core.participant.Arglets.MacrosFile_GCC;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * @author Martin Weber
+ */
+public class MacrosFile_GCCTest {
+ private MacrosFile_GCC testee;
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ testee = new MacrosFile_GCC();
+ }
+
+ /**
+ * Test method for {@link MacrosFile_GCC#processArgument(IParseContext, IPath, java.lang.String)} .
+ */
+ @Test
+ public final void testProcessArgument() {
+ final String more = " -o CMakeFiles/execut1.dir/util1.c.o -c /testprojects/C-subsrc/src/src-sub/main1.c";
+ ParseContext result;
+ String parsed;
+
+ String name = "/an/Macros/file.inc";
+ IPath cwd = new Path("");
+ // -imacros/an/Macros/file.inc
+ result = new ParseContext();
+ assertEquals(8 + name.length(), testee.processArgument(result, cwd, "-imacros" + name + more));
+ assertEquals("#entries", 1, result.getMacroFiles().size());
+ parsed = result.getMacroFiles().get(0);
+ assertEquals("name", name, parsed);
+ // -imacros'/an/Macros/file.inc'
+ result = new ParseContext();
+ assertEquals(8 + name.length() + 2, testee.processArgument(result, cwd, "-imacros" + "'" + name + "'" + more));
+ assertEquals("#entries", 1, result.getMacroFiles().size());
+ parsed = result.getMacroFiles().get(0);
+ assertEquals("name", name, parsed);
+ // -imacros"/an/Macros/file.inc"
+ result = new ParseContext();
+ assertEquals(8 + name.length() + 2,
+ testee.processArgument(result, cwd, "-imacros" + "\"" + name + "\"" + more));
+ assertEquals("#entries", 1, result.getMacroFiles().size());
+ parsed = result.getMacroFiles().get(0);
+ assertEquals("name", name, parsed);
+
+ // -imacros /an/Macros/file.inc
+ result = new ParseContext();
+ assertEquals(8 + name.length() + 3, testee.processArgument(result, cwd, "-imacros " + name + more));
+ assertEquals("#entries", 1, result.getMacroFiles().size());
+ parsed = result.getMacroFiles().get(0);
+ assertEquals("name", name, parsed);
+ // -imacros '/an/Macros/file.inc'
+ result = new ParseContext();
+ assertEquals(8 + name.length() + 3 + 2,
+ testee.processArgument(result, cwd, "-imacros " + "'" + name + "'" + more));
+ assertEquals("#entries", 1, result.getMacroFiles().size());
+ parsed = result.getMacroFiles().get(0);
+ assertEquals("name", name, parsed);
+ // -imacros "/an/Macros/file.inc"
+ result = new ParseContext();
+ assertEquals(8 + name.length() + 3 + 2,
+ testee.processArgument(result, cwd, "-imacros " + "\"" + name + "\"" + more));
+ assertEquals("#entries", 1, result.getMacroFiles().size());
+ parsed = result.getMacroFiles().get(0);
+ assertEquals("name", name, parsed);
+
+ name = (new Path("A:an\\Macros/file.inc")).toOSString();
+ // -imacrosA:an\Macros/file.inc
+ result = new ParseContext();
+ assertEquals(8 + name.length(), testee.processArgument(result, cwd, "-imacros" + name + more));
+ assertEquals("#entries", 1, result.getMacroFiles().size());
+ parsed = result.getMacroFiles().get(0);
+ assertEquals("name", name, parsed);
+ }
+
+ /**
+ * Test method for {@link MacrosFile_GCC#processArgument(IParseContext, IPath, java.lang.String)}
+ */
+ @Test
+ public final void testProcessArgument_WS() {
+ final String more = " -o CMakeFiles/execut1.dir/util1.c.o -c /testprojects/C-subsrc/src/src-sub/main1.c";
+ ParseContext result = new ParseContext();
+ String parsed;
+
+ String name = "/ye olde/Ma cr os/fi le.inc";
+ IPath cwd = new Path("");
+ // -imacros'/ye olde/Ma cr os/fi le.inc'
+ result = new ParseContext();
+ assertEquals(8 + name.length() + 2, testee.processArgument(result, cwd, "-imacros" + "'" + name + "'" + more));
+ assertEquals("#entries", 1, result.getMacroFiles().size());
+ parsed = result.getMacroFiles().get(0);
+ assertEquals("name", name, parsed);
+ // -imacros"/ye olde/Ma cr os/fi le.inc"
+ result = new ParseContext();
+ assertEquals(8 + name.length() + 2,
+ testee.processArgument(result, cwd, "-imacros" + "\"" + name + "\"" + more));
+ assertEquals("#entries", 1, result.getMacroFiles().size());
+ parsed = result.getMacroFiles().get(0);
+ assertEquals("name", name, parsed);
+
+ // -imacros '/ye olde/Ma cr os/fi le.inc'
+ result = new ParseContext();
+ assertEquals(8 + name.length() + 3 + 2,
+ testee.processArgument(result, cwd, "-imacros " + "'" + name + "'" + more));
+ assertEquals("#entries", 1, result.getMacroFiles().size());
+ parsed = result.getMacroFiles().get(0);
+ assertEquals("name", name, parsed);
+ // -imacros "/ye olde/Ma cr os/fi le.inc"
+ result = new ParseContext();
+ assertEquals(8 + name.length() + 3 + 2,
+ testee.processArgument(result, cwd, "-imacros " + "\"" + name + "\"" + more));
+ assertEquals("#entries", 1, result.getMacroFiles().size());
+ parsed = result.getMacroFiles().get(0);
+ assertEquals("name", name, parsed);
+
+ name = (new Path("A:an\\Ma cr os/fi le.inc")).toOSString();
+ // -imacros'A:an\Ma cr os/fi le.inc'
+ result = new ParseContext();
+ assertEquals(8 + name.length() + 2,
+ testee.processArgument(result, cwd, "-imacros" + "\"" + name + "\"" + more));
+ assertEquals("#entries", 1, result.getMacroFiles().size());
+ parsed = result.getMacroFiles().get(0);
+ assertEquals("name", name, parsed);
+ }
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/src/org/eclipse/cdt/jsoncdb/core/internal/ParserDetectionTest.java b/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/src/org/eclipse/cdt/jsoncdb/core/internal/ParserDetectionTest.java
new file mode 100644
index 00000000000..2c9bcf0665f
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/src/org/eclipse/cdt/jsoncdb/core/internal/ParserDetectionTest.java
@@ -0,0 +1,233 @@
+/*******************************************************************************
+ * Copyright (c) 2016-2020 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.jsoncdb.core.internal;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import java.util.Locale;
+
+import org.junit.Ignore;
+import org.junit.Test;
+
+/**
+ * @author Martin Weber
+ */
+public class ParserDetectionTest {
+
+ /**
+ * Test method for
+ * {@link org.eclipse.cdt.jsoncdb.core.internal.ParserDetection#determineDetector(String, String,boolean)}
+ * .
+ */
+ @Test
+ public void testForCommandline_clang() {
+ ParserDetection.ParserDetectionResult result = ParserDetection.determineDetector("/usr/bin/clang -C blah.c",
+ null, true);
+ assertNotNull(result);
+ }
+
+ @Test
+ public void testForCommandline_clangplusplus() {
+ ParserDetection.ParserDetectionResult result = ParserDetection.determineDetector("/usr/bin/clang++ -C blah.c",
+ null, true);
+ assertNotNull(result);
+ }
+
+ @Test
+ public void testForCommandline_clangplusplus_basename() {
+ ParserDetection.ParserDetectionResult result = ParserDetection.determineDetector("clang++ -C blah.c", null,
+ false);
+ assertNotNull(result);
+ }
+
+ /**
+ * Test method for
+ * {@link org.eclipse.cdt.jsoncdb.core.internal.ParserDetection#determineDetector(String, String,boolean)}
+ * . <a href="https://wiki.osdev.org/Target_Triplet"/>
+ */
+ @Test
+ public void testForCommandline_cross() {
+ ParserDetection.ParserDetectionResult result = ParserDetection
+ .determineDetector("/usr/bin/arm-none-eabi-gcc -C blah.c", null, true);
+ assertNotNull(result);
+
+ result = ParserDetection.determineDetector("/usr/bin/arm-none-eabi-gcc.exe -C blah.c", null, true);
+ assertNotNull(result);
+ }
+
+ @Test
+ public void testForCommandline_cross_withVersion() {
+ final String versionSuffixRegex = "-?\\d+(\\.\\d+)*";
+
+ ParserDetection.ParserDetectionResult result = ParserDetection
+ .determineDetector("/usr/bin/arm-none-eabi-gcc-9.2.0 -C blah.c", versionSuffixRegex, true);
+ assertNotNull(result);
+
+ result = ParserDetection.determineDetector("/usr/bin/arm-none-eabi-gcc-9.2.0.exe -C blah.c", versionSuffixRegex,
+ true);
+ assertNotNull(result);
+ }
+
+ /**
+ * <a href="https://wiki.osdev.org/Target_Triplet"/>
+ */
+ @Test
+ public void testForCommandline_crossplusplus() {
+ ParserDetection.ParserDetectionResult result = ParserDetection
+ .determineDetector("/usr/bin/arm-none-eabi-g++ -C blah.c", null, true);
+ assertNotNull(result);
+
+ result = ParserDetection.determineDetector("/usr/bin/arm-none-eabi-g++.exe -C blah.c", null, true);
+ assertNotNull(result);
+ }
+
+ /**
+ * <a href="https://wiki.osdev.org/Target_Triplet"/>
+ */
+ @Test
+ public void testForCommandline_crossplusplus_withVersion() {
+ final String versionSuffixRegex = "-?\\d+(\\.\\d+)*";
+
+ ParserDetection.ParserDetectionResult result = ParserDetection
+ .determineDetector("/usr/bin/arm-none-eabi-g++-9.2.0 -C blah.c", versionSuffixRegex, true);
+ assertNotNull(result);
+
+ result = ParserDetection.determineDetector("/usr/bin/arm-none-eabi-g++-9.2.0.exe -C blah.c", versionSuffixRegex,
+ true);
+ assertNotNull(result);
+ }
+
+ /**
+ * <a href="https://wiki.osdev.org/Target_Triplet"/>
+ */
+ @Test
+ public void testForCommandline_crossplusplus_basename() {
+ ParserDetection.ParserDetectionResult result = ParserDetection.determineDetector("arm-none-eabi-g++ -C blah.c",
+ null, false);
+ assertNotNull(result);
+
+ result = ParserDetection.determineDetector("arm-none-eabi-g++.exe -C blah.c", null, false);
+ assertNotNull(result);
+ }
+
+ @Test
+ @Ignore("Requires NFTS to run")
+ public void testForCommandline_MsdosShortNames() {
+ ParserDetection.ParserDetectionResult result = ParserDetection
+ .determineDetector("C:\\PROGRA2\\Atmel\\AVR8-G1\\bin\\AVR-G_~1.EXE -C blah.c", null, true);
+ assertNotNull(result);
+ }
+
+ @Test
+ public void testForCommandline_withVersion() {
+ final String versionSuffixRegex = "-?\\d+(\\.\\d+)*";
+
+ ParserDetection.ParserDetectionResult result = ParserDetection.determineDetector("/usr/bin/cc-4.1 -C blah.c",
+ versionSuffixRegex, false);
+ assertNotNull(result);
+
+ result = ParserDetection.determineDetector("/usr/bin/cc-4.1.exe -C blah.c", versionSuffixRegex, true);
+ assertNotNull(result);
+
+ result = ParserDetection.determineDetector("/usr/bin/c++-4.1 -C blah.c", versionSuffixRegex, false);
+ assertNotNull(result);
+
+ result = ParserDetection.determineDetector("/usr/bin/c++-4.1.exe -C blah.c", versionSuffixRegex, true);
+ assertNotNull(result);
+
+ // clang for issue #43
+ result = ParserDetection.determineDetector("/usr/local/bin/clang++40 -C blah.c", versionSuffixRegex, false);
+ assertNotNull(result);
+ result = ParserDetection.determineDetector("/usr/local/bin/clang++40 -C blah.c", "40", false);
+ // result = ParserDetection.determineDetector("/usr/local/bin/clang++40
+ // -I/home/me/workspace/first/test/../utility
+ // -I/home/me/workspace/first/test/../include -I/home/me/workspace/first/test -g
+ // -std=c++1y -stdlib=libc++ -include-pch
+ // /home/me/workspace/first/build/Debug/test/catch.hpp.pch -include-pch
+ // /home/me/workspace/first/build/Debug/test/pch.hpp.pch -o
+ // CMakeFiles/first_test.test.dir/__/utility/fun.cpp.o -c
+ // /home/me/workspace/first/utility/fun.cpp",
+ // "40", false);
+ assertNotNull(result);
+
+ result = ParserDetection.determineDetector("/apps/tools/cent_os72/binlinks/g++-7.1 "
+ + "-I/apps/tools/cent_os72/thirdparty/boost/boost_1_64_0/include "
+ + "-I/home/XXX/repositories/bepa/common/include -g -Wall "
+ + "-c /home/XXX/repositories/bepa/common/settings/src/settings.cpp", versionSuffixRegex, true);
+ assertNotNull(result);
+ }
+
+ @Test
+ public void testForCommandline_quoted() {
+ String more = " -DFoo=bar \"quoted\" 'quoted' -C blah.c";
+ String[] quotes = { "\"", "'" };
+
+ String name = "/us r/bi n/cc";
+
+ for (String quote : quotes) {
+ String args = String.format(Locale.ROOT, "%1$s%2$s%1$s %3$s", quote, name, more);
+ ParserDetection.ParserDetectionResult result = ParserDetection.determineDetector(args, null, false);
+ assertNotNull("Command in quotes= " + quote, result);
+ assertEquals(name, result.getCommandLine().getCommand());
+ }
+ // NOTE: detecting just 'cc' in quotes does not work, but no on of a sane mind
+ // would have compilers with spaces in
+ // the name
+
+ name += ".exe";
+ for (String quote : quotes) {
+ String args = String.format(Locale.ROOT, "%1$s%2$s%1$s %3$s", quote, name, more);
+ ParserDetection.ParserDetectionResult result = ParserDetection.determineDetector(args, null, false);
+ assertNotNull("Command in quotes= " + quote, result);
+ assertEquals(name, result.getCommandLine().getCommand());
+ }
+
+ name = "C:\\us r\\bi n\\cc";
+ for (String quote : quotes) {
+ String args = String.format(Locale.ROOT, "%1$s%2$s%1$s %3$s", quote, name, more);
+ ParserDetection.ParserDetectionResult result = ParserDetection.determineDetector(args, null, true);
+ assertNotNull("Command in quotes= " + quote, result);
+ assertEquals(name, result.getCommandLine().getCommand());
+ }
+
+ name += ".exe";
+ for (String quote : quotes) {
+ String args = String.format(Locale.ROOT, "%1$s%2$s%1$s %3$s", quote, name, more);
+ ParserDetection.ParserDetectionResult result = ParserDetection.determineDetector(args, null, true);
+ assertNotNull("Command in quotes= " + quote, result);
+ assertEquals(name, result.getCommandLine().getCommand());
+ }
+ }
+
+ /** Tests whether tool detection regex is too greedy, */
+ @Test
+ public void testForCommandline_greedyness() {
+ String more = " -DFoo=bar -I /opt/mingw53_32/mkspecs/win32-c++ -C blah.c";
+
+ String name = "/usr/bin/c++";
+ ParserDetection.ParserDetectionResult result = ParserDetection.determineDetector(name + more, null, false);
+ assertNotNull(result);
+ assertEquals(name, result.getCommandLine().getCommand());
+
+ result = ParserDetection.determineDetector("\"" + name + "\"" + more, null, false);
+ assertNotNull(result);
+ assertEquals(name, result.getCommandLine().getCommand());
+
+ // with filename extension
+ name += ".exe";
+ result = ParserDetection.determineDetector(name + more, null, true);
+ assertNotNull(result);
+ assertEquals(name, result.getCommandLine().getCommand());
+
+ result = ParserDetection.determineDetector("\"" + name + "\"" + more, null, true);
+ assertNotNull(result);
+ assertEquals(name, result.getCommandLine().getCommand());
+ }
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/src/org/eclipse/cdt/jsoncdb/core/internal/ParserLookupResultTest.java b/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/src/org/eclipse/cdt/jsoncdb/core/internal/ParserLookupResultTest.java
new file mode 100644
index 00000000000..f34fe710d4a
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/src/org/eclipse/cdt/jsoncdb/core/internal/ParserLookupResultTest.java
@@ -0,0 +1,82 @@
+/*******************************************************************************
+ * Copyright (c) 2016-2020 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.jsoncdb.core.internal;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import org.junit.Test;
+
+public class ParserLookupResultTest {
+ /**
+ * Test method for
+ * {@link org.eclipse.cdt.jsoncdb.core.internal.ParserDetection#determineDetector(String, String,boolean)}
+ */
+ @Test
+ public void testCanParse() {
+ String compiler = "/bin/c++";
+ String args = "-DQT_CORE_LIB -I/home/self/shared/qt5-project/build/Debug"
+ + " -isystem /home/self/Qt5.9.1/5.9.1/gcc_64/include/QtWidgets"
+ + " -g -fPIC -std=gnu++11 -o CMakeFiles/foo.dir/foo_automoc.cpp.o"
+ + " -c /home/self/shared/qt5-project/build/Debug/foo_automoc.cpp";
+ String cmd = compiler + " " + args;
+ ParserDetection.ParserDetectionResult result = ParserDetection.determineDetector(cmd, null, false);
+ assertNotNull(result);
+ }
+
+ /**
+ * Test method for
+ * {@link org.eclipse.cdt.jsoncdb.core.internal.ParserDetection.ParserDetectionResult#getReducedCommandLine()}.
+ */
+ @Test
+ public void testGetReducedCommandLine() {
+ String compiler = "/bin/c++";
+ String args = "-DQT_CORE_LIB -I/home/self/shared/qt5-project/build/Debug"
+ + " -isystem /home/self/Qt5.9.1/5.9.1/gcc_64/include/QtWidgets"
+ + " -g -fPIC -std=gnu++11 -o CMakeFiles/foo.dir/foo_automoc.cpp.o"
+ + " -c /home/self/shared/qt5-project/build/Debug/foo_automoc.cpp";
+ String cmd = compiler + " " + args;
+ ParserDetection.ParserDetectionResult result = ParserDetection.determineDetector(cmd, null, false);
+ assertNotNull(result);
+ assertEquals("reducedCommandLine", args, result.getReducedCommandLine());
+
+ // test without leading path
+ compiler = "c++";
+ cmd = compiler + " " + args;
+ result = ParserDetection.determineDetector(cmd, null, false);
+ assertNotNull(result);
+ assertEquals("reducedCommandLine", args, result.getReducedCommandLine());
+ }
+
+ /**
+ * Test method for
+ * {@link org.eclipse.cdt.jsoncdb.core.internal.ParserDetection.ParserDetectionResult#getCommandLine()}.
+ */
+ @Test
+ public void testGetCommandLine() {
+ String compiler = "/bin/c++";
+ String args = "-DQT_CORE_LIB -I/home/self/shared/qt5-project/build/Debug"
+ + " -isystem /home/self/Qt5.9.1/5.9.1/gcc_64/include/QtWidgets"
+ + " -g -fPIC -std=gnu++11 -o CMakeFiles/foo.dir/foo_automoc.cpp.o"
+ + " -c /home/self/shared/qt5-project/build/Debug/foo_automoc.cpp";
+ String cmd = compiler + " " + args;
+ ParserDetection.ParserDetectionResult result = ParserDetection.determineDetector(cmd, null, false);
+ assertNotNull(result);
+ assertEquals("command", compiler, result.getCommandLine().getCommand());
+ assertEquals("args", args, result.getCommandLine().getArguments());
+
+ // test without leading path
+ compiler = "c++";
+ cmd = compiler + " " + args;
+ result = ParserDetection.determineDetector(cmd, null, false);
+ assertNotNull(result);
+ assertEquals("command", compiler, result.getCommandLine().getCommand());
+ assertEquals("args", args, result.getCommandLine().getArguments());
+ }
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/src/org/eclipse/cdt/jsoncdb/core/internal/SystemIncludePath_C_Test.java b/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/src/org/eclipse/cdt/jsoncdb/core/internal/SystemIncludePath_C_Test.java
new file mode 100644
index 00000000000..ccd819a20d2
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/src/org/eclipse/cdt/jsoncdb/core/internal/SystemIncludePath_C_Test.java
@@ -0,0 +1,124 @@
+/*******************************************************************************
+ * Copyright (c) 2015-2020 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.jsoncdb.core.internal;
+
+import static org.junit.Assert.assertEquals;
+
+import org.eclipse.cdt.jsoncdb.core.participant.Arglets.IncludePath_C_POSIX;
+import org.eclipse.cdt.jsoncdb.core.participant.Arglets.SystemIncludePath_C;
+import org.eclipse.cdt.jsoncdb.core.participant.IArglet.IArgumentCollector;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * @author Martin Weber
+ */
+public class SystemIncludePath_C_Test {
+
+ private SystemIncludePath_C testee;
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ testee = new SystemIncludePath_C();
+ }
+
+ @Test
+ public final void testProcessArgument() {
+ final String more = " -g -MMD -MT CMakeFiles/execut1.dir/util1.c.o -MF \"CMakeFiles/execut1.dir/util1.c.o.d\""
+ + " -o CMakeFiles/execut1.dir/util1.c.o -c /testprojects/C-subsrc/src/src-sub/main1.c";
+ ParseContext result;
+ final IPath cwd = new Path("");
+
+ String name = "/an/Include/Path";
+
+ // -isystem /an/Include/Path
+ result = new ParseContext();
+ assertEquals(8 + name.length() + 3, testee.processArgument(result, cwd, "-isystem " + name + more));
+ assertEquals("#entries", 1, result.getSystemIncludePaths().size());
+ assertEquals("name", name, result.getSystemIncludePaths().get(0));
+ // -isystem '/an/Include/Path'
+ result = new ParseContext();
+ assertEquals(8 + name.length() + 3 + 2,
+ testee.processArgument(result, cwd, "-isystem " + "'" + name + "'" + more));
+ assertEquals("#entries", 1, result.getSystemIncludePaths().size());
+ assertEquals("name", name, result.getSystemIncludePaths().get(0));
+ // -isystem "/an/Include/Path"
+ result = new ParseContext();
+ assertEquals(8 + name.length() + 3 + 2,
+ testee.processArgument(result, cwd, "-isystem " + "\"" + name + "\"" + more));
+ assertEquals("#entries", 1, result.getSystemIncludePaths().size());
+ assertEquals("name", name, result.getSystemIncludePaths().get(0));
+
+ name = (new Path("A:an\\Include/Path")).toOSString();
+ // -isystem A:an\Include/Path
+ result = new ParseContext();
+ assertEquals(8 + 1 + name.length(), testee.processArgument(result, cwd, "-isystem " + name + more));
+ assertEquals("#entries", 1, result.getSystemIncludePaths().size());
+ assertEquals("name", name, result.getSystemIncludePaths().get(0));
+
+ // -isystemA:an\Include/Path
+ result = new ParseContext();
+ assertEquals(8 + name.length(), testee.processArgument(result, cwd, "-isystem" + name + more));
+ assertEquals("#entries", 1, result.getSystemIncludePaths().size());
+ assertEquals("name", name, result.getSystemIncludePaths().get(0));
+ }
+
+ /**
+ * Test method for
+ * {@link IncludePath_C_POSIX#processArgument(IArgumentCollector, IPath, java.lang.String)}
+ */
+ @Test
+ public final void testProcessArgument_WS() {
+ final String more = " -g -MMD -MT CMakeFiles/execut1.dir/util1.c.o -MF \"CMakeFiles/execut1.dir/util1.c.o.d\""
+ + " -o CMakeFiles/execut1.dir/util1.c.o -c /testprojects/C-subsrc/src/src-sub/main1.c";
+ ParseContext result;
+ final IPath cwd = new Path("");
+
+ String name = "/ye olde/In clu de/Pa the";
+ // -isystem '/ye olde/In clu de/Pa the'
+ result = new ParseContext();
+ assertEquals(8 + name.length() + 3 + 2,
+ testee.processArgument(result, cwd, "-isystem " + "'" + name + "'" + more));
+ assertEquals("#entries", 1, result.getSystemIncludePaths().size());
+ assertEquals("name", name, result.getSystemIncludePaths().get(0));
+ // -isystem "/ye olde/In clu de/Pa the"
+ result = new ParseContext();
+ assertEquals(8 + name.length() + 3 + 2,
+ testee.processArgument(result, cwd, "-isystem " + "\"" + name + "\"" + more));
+ assertEquals("#entries", 1, result.getSystemIncludePaths().size());
+ assertEquals("name", name, result.getSystemIncludePaths().get(0));
+
+ name = (new Path("A:an\\In CLU de/Pat h")).toOSString();
+ // -isystem"A:an\In CLU de/Pat h"
+ result = new ParseContext();
+ assertEquals(8 + name.length() + 2,
+ testee.processArgument(result, cwd, "-isystem" + "\"" + name + "\"" + more));
+ assertEquals("#entries", 1, result.getSystemIncludePaths().size());
+ assertEquals("name", name, result.getSystemIncludePaths().get(0));
+
+ // -isystem'A:an\In CLU de/Pat h'
+ result = new ParseContext();
+ assertEquals(8 + name.length() + 2, testee.processArgument(result, cwd, "-isystem" + "'" + name + "'" + more));
+ assertEquals("#entries", 1, result.getSystemIncludePaths().size());
+ assertEquals("name", name, result.getSystemIncludePaths().get(0));
+
+ name = (new Path("/Inc/CLUde/Path")).toOSString();
+ // -isystem/Inc/CLUde/Path
+ result = new ParseContext();
+ assertEquals(8 + name.length(), testee.processArgument(result, cwd, "-isystem" + name + more));
+ assertEquals("#entries", 1, result.getSystemIncludePaths().size());
+ assertEquals("name", name, result.getSystemIncludePaths().get(0));
+ }
+
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/src/org/eclipse/cdt/jsoncdb/core/internal/ToolCommandlineParserTest.java b/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/src/org/eclipse/cdt/jsoncdb/core/internal/ToolCommandlineParserTest.java
new file mode 100644
index 00000000000..0eb5714b103
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/src/org/eclipse/cdt/jsoncdb/core/internal/ToolCommandlineParserTest.java
@@ -0,0 +1,108 @@
+/*******************************************************************************
+ * Copyright (c) 2015-2020 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.jsoncdb.core.internal;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.io.PrintWriter;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.nio.file.StandardOpenOption;
+
+import org.eclipse.cdt.jsoncdb.core.participant.Arglets;
+import org.eclipse.cdt.jsoncdb.core.participant.DefaultToolCommandlineParser;
+import org.eclipse.cdt.jsoncdb.core.participant.IToolCommandlineParser;
+import org.eclipse.cdt.jsoncdb.core.participant.ResponseFileArglets;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+import org.junit.Test;
+
+/**
+ * @author Martin Weber
+ */
+public class ToolCommandlineParserTest {
+
+ @Test
+ public final void testResponseFileArgumentParser_At() throws Exception {
+
+ DefaultToolCommandlineParser testee = new DefaultToolCommandlineParser(new ResponseFileArglets.At(), null,
+ new Arglets.IncludePath_C_POSIX(), new Arglets.MacroDefine_C_POSIX());
+
+ IToolCommandlineParser.IResult result;
+
+ final String more = " -g -MMD -o CMakeFiles/execut1.dir/util1.c.o"
+ + " -c /testprojects/C-subsrc/src/src-sub/main.c";
+
+ // generate response file
+ final java.nio.file.Path dirP = Files.createTempDirectory("rfpt");
+ final java.nio.file.Path cwdP = dirP.getParent();
+ final java.nio.file.Path relRspP = dirP.getFileName().resolve(Paths.get("response.file.txt"));
+ final java.nio.file.Path absRspP = cwdP.resolve(relRspP);
+
+ final String incDirName = "an/include/dir";
+ final String def1Name = "def1";
+ final String def2Name = "def2";
+ final String defName = "DEF_ON_COMMANDLINE";
+
+ try (PrintWriter rspFilePw = new PrintWriter(
+ Files.newOutputStream(absRspP, StandardOpenOption.WRITE, StandardOpenOption.CREATE));) {
+ rspFilePw.printf(" -D%s=234 -I%s -D%s=987", def1Name, incDirName, def2Name);
+ rspFilePw.close();
+ }
+ // @a/response/file.txt
+ result = testee.processArgs(new Path(cwdP.toString()), "@" + relRspP.toString() + " -D" + defName + more);
+ assertEquals("#defines", 3, result.getDefines().size());
+ assertTrue("found", result.getDefines().containsKey(def1Name));
+ assertEquals("value", "234", result.getDefines().get(def1Name));
+ assertTrue("found", result.getDefines().containsKey(def2Name));
+ assertEquals("value", "987", result.getDefines().get(def2Name));
+ assertTrue("found", result.getDefines().containsKey(defName));
+ assertEquals("value", "1", result.getDefines().get(defName));
+
+ assertEquals("#paths", 1, result.getSystemIncludePaths().size());
+ assertEquals("value", cwdP.resolve(incDirName).toString(), result.getSystemIncludePaths().get(0));
+
+ // @ a/response.file.txt
+ result = testee.processArgs(new Path(cwdP.toString()), "@ " + relRspP.toString() + " -D" + defName + more);
+ assertEquals("#defines", 3, result.getDefines().size());
+ assertTrue("found", result.getDefines().containsKey(def1Name));
+ assertEquals("value", "234", result.getDefines().get(def1Name));
+ assertTrue("found", result.getDefines().containsKey(def2Name));
+ assertEquals("value", "987", result.getDefines().get(def2Name));
+ assertTrue("found", result.getDefines().containsKey(defName));
+ assertEquals("value", "1", result.getDefines().get(defName));
+
+ assertEquals("#paths", 1, result.getSystemIncludePaths().size());
+ assertEquals("value", cwdP.resolve(incDirName).toString(), result.getSystemIncludePaths().get(0));
+
+ Files.delete(absRspP);
+ }
+
+ /**
+ * Test for HERE documents on cmdline:@<< ... <<
+ */
+ @Test
+ public final void testResponseFileArgumentParser_At_heredoc() throws Exception {
+ DefaultToolCommandlineParser testee = new DefaultToolCommandlineParser(new ResponseFileArglets.At(), null,
+ new Arglets.IncludePath_C_POSIX(), new Arglets.MacroDefine_C_POSIX());
+
+ final String more = " -g -MMD -o CMakeFiles/execut1.dir/util1.c.o"
+ + " -c /testprojects/C-subsrc/src/src-sub/main.c";
+ IToolCommandlineParser.IResult result;
+
+ String name = "/ye/olde/Include/Pathe";
+ IPath cwd = new Path("");
+ result = new ParseContext();
+ // @<< ... <<
+ result = testee.processArgs(cwd, "@<<" + " -I" + name + " <<" + more);
+ assertEquals("#paths", 1, result.getSystemIncludePaths().size());
+ assertEquals("name", name, result.getSystemIncludePaths().get(0));
+ }
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/src/org/eclipse/cdt/jsoncdb/core/internal/builtins/GccOutputProcessorTest.java b/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/src/org/eclipse/cdt/jsoncdb/core/internal/builtins/GccOutputProcessorTest.java
new file mode 100644
index 00000000000..f2a7342937b
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/src/org/eclipse/cdt/jsoncdb/core/internal/builtins/GccOutputProcessorTest.java
@@ -0,0 +1,67 @@
+/*******************************************************************************
+ * Copyright (c) 2018-2020 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.jsoncdb.core.internal.builtins;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import org.eclipse.cdt.jsoncdb.core.participant.builtins.GccOutputProcessor;
+import org.eclipse.cdt.jsoncdb.core.participant.builtins.OutputSniffer;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+/**
+ * @author Martin Weber
+ *
+ */
+public class GccOutputProcessorTest {
+
+ private GccOutputProcessor testee;
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ testee = new GccOutputProcessor();
+ }
+
+ @Test
+ @Ignore
+ public void testProcessLine() {
+ testee.processLine("#define AAA xyz", new RawSourceFileInfo());
+ }
+
+ @Test
+ public void testProcessFile() throws IOException {
+ // pass resource content line-wise to the testee...
+ RawSourceFileInfo pc = new RawSourceFileInfo();
+ try (InputStream is = getClass().getResourceAsStream("cbd-gcc.output.txt");
+ OutputSniffer os = new OutputSniffer(testee, null, pc)) {
+ byte[] buffer = new byte[1024];
+ int length;
+ while ((length = is.read(buffer)) > 0) {
+ os.write(buffer, 0, length);
+ }
+ }
+
+ assertEquals("# include paths", 5, pc.getSystemIncludePaths().size());
+ assertEquals("# macros", 238, pc.getDefines().size());
+
+ // check __GNUC__
+ assertTrue("__GNUC__", pc.getDefines().containsKey("__GNUC__"));
+ assertNotNull("value", pc.getDefines().get("__GNUC__"));
+ }
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/src/org/eclipse/cdt/jsoncdb/core/internal/builtins/cbd-gcc.output.txt b/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/src/org/eclipse/cdt/jsoncdb/core/internal/builtins/cbd-gcc.output.txt
new file mode 100644
index 00000000000..3b0f2d5d2ea
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.tests/src/org/eclipse/cdt/jsoncdb/core/internal/builtins/cbd-gcc.output.txt
@@ -0,0 +1,246 @@
+#include "..." search starts here:
+#include <...> search starts here:
+ /usr/lib64/gcc/x86_64-suse-linux/4.8/include
+ /usr/local/include
+ /usr/lib64/gcc/x86_64-suse-linux/4.8/include-fixed
+ /usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/include
+ /usr/include
+End of search list.
+#define __STDC__ 1
+#define __STDC_HOSTED__ 1
+#define __GNUC__ 4
+#define __GNUC_MINOR__ 8
+#define __GNUC_PATCHLEVEL__ 5
+#define __VERSION__ "4.8.5"
+#define __ATOMIC_RELAXED 0
+#define __ATOMIC_SEQ_CST 5
+#define __ATOMIC_ACQUIRE 2
+#define __ATOMIC_RELEASE 3
+#define __ATOMIC_ACQ_REL 4
+#define __ATOMIC_CONSUME 1
+#define __FINITE_MATH_ONLY__ 0
+#define _LP64 1
+#define __LP64__ 1
+#define __SIZEOF_INT__ 4
+#define __SIZEOF_LONG__ 8
+#define __SIZEOF_LONG_LONG__ 8
+#define __SIZEOF_SHORT__ 2
+#define __SIZEOF_FLOAT__ 4
+#define __SIZEOF_DOUBLE__ 8
+#define __SIZEOF_LONG_DOUBLE__ 16
+#define __SIZEOF_SIZE_T__ 8
+#define __CHAR_BIT__ 8
+#define __BIGGEST_ALIGNMENT__ 16
+#define __ORDER_LITTLE_ENDIAN__ 1234
+#define __ORDER_BIG_ENDIAN__ 4321
+#define __ORDER_PDP_ENDIAN__ 3412
+#define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__
+#define __FLOAT_WORD_ORDER__ __ORDER_LITTLE_ENDIAN__
+#define __SIZEOF_POINTER__ 8
+#define __SIZE_TYPE__ long unsigned int
+#define __PTRDIFF_TYPE__ long int
+#define __WCHAR_TYPE__ int
+#define __WINT_TYPE__ unsigned int
+#define __INTMAX_TYPE__ long int
+#define __UINTMAX_TYPE__ long unsigned int
+#define __CHAR16_TYPE__ short unsigned int
+#define __CHAR32_TYPE__ unsigned int
+#define __SIG_ATOMIC_TYPE__ int
+#define __INT8_TYPE__ signed char
+#define __INT16_TYPE__ short int
+#define __INT32_TYPE__ int
+#define __INT64_TYPE__ long int
+#define __UINT8_TYPE__ unsigned char
+#define __UINT16_TYPE__ short unsigned int
+#define __UINT32_TYPE__ unsigned int
+#define __UINT64_TYPE__ long unsigned int
+#define __INT_LEAST8_TYPE__ signed char
+#define __INT_LEAST16_TYPE__ short int
+#define __INT_LEAST32_TYPE__ int
+#define __INT_LEAST64_TYPE__ long int
+#define __UINT_LEAST8_TYPE__ unsigned char
+#define __UINT_LEAST16_TYPE__ short unsigned int
+#define __UINT_LEAST32_TYPE__ unsigned int
+#define __UINT_LEAST64_TYPE__ long unsigned int
+#define __INT_FAST8_TYPE__ signed char
+#define __INT_FAST16_TYPE__ long int
+#define __INT_FAST32_TYPE__ long int
+#define __INT_FAST64_TYPE__ long int
+#define __UINT_FAST8_TYPE__ unsigned char
+#define __UINT_FAST16_TYPE__ long unsigned int
+#define __UINT_FAST32_TYPE__ long unsigned int
+#define __UINT_FAST64_TYPE__ long unsigned int
+#define __INTPTR_TYPE__ long int
+#define __UINTPTR_TYPE__ long unsigned int
+#define __GXX_ABI_VERSION 1002
+#define __SCHAR_MAX__ 127
+#define __SHRT_MAX__ 32767
+#define __INT_MAX__ 2147483647
+#define __LONG_MAX__ 9223372036854775807L
+#define __LONG_LONG_MAX__ 9223372036854775807LL
+#define __WCHAR_MAX__ 2147483647
+#define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1)
+#define __WINT_MAX__ 4294967295U
+#define __WINT_MIN__ 0U
+#define __PTRDIFF_MAX__ 9223372036854775807L
+#define __SIZE_MAX__ 18446744073709551615UL
+#define __INTMAX_MAX__ 9223372036854775807L
+#define __INTMAX_C(c) c ## L
+#define __UINTMAX_MAX__ 18446744073709551615UL
+#define __UINTMAX_C(c) c ## UL
+#define __SIG_ATOMIC_MAX__ 2147483647
+#define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1)
+#define __INT8_MAX__ 127
+#define __INT16_MAX__ 32767
+#define __INT32_MAX__ 2147483647
+#define __INT64_MAX__ 9223372036854775807L
+#define __UINT8_MAX__ 255
+#define __UINT16_MAX__ 65535
+#define __UINT32_MAX__ 4294967295U
+#define __UINT64_MAX__ 18446744073709551615UL
+#define __INT_LEAST8_MAX__ 127
+#define __INT8_C(c) c
+#define __INT_LEAST16_MAX__ 32767
+#define __INT16_C(c) c
+#define __INT_LEAST32_MAX__ 2147483647
+#define __INT32_C(c) c
+#define __INT_LEAST64_MAX__ 9223372036854775807L
+#define __INT64_C(c) c ## L
+#define __UINT_LEAST8_MAX__ 255
+#define __UINT8_C(c) c
+#define __UINT_LEAST16_MAX__ 65535
+#define __UINT16_C(c) c
+#define __UINT_LEAST32_MAX__ 4294967295U
+#define __UINT32_C(c) c ## U
+#define __UINT_LEAST64_MAX__ 18446744073709551615UL
+#define __UINT64_C(c) c ## UL
+#define __INT_FAST8_MAX__ 127
+#define __INT_FAST16_MAX__ 9223372036854775807L
+#define __INT_FAST32_MAX__ 9223372036854775807L
+#define __INT_FAST64_MAX__ 9223372036854775807L
+#define __UINT_FAST8_MAX__ 255
+#define __UINT_FAST16_MAX__ 18446744073709551615UL
+#define __UINT_FAST32_MAX__ 18446744073709551615UL
+#define __UINT_FAST64_MAX__ 18446744073709551615UL
+#define __INTPTR_MAX__ 9223372036854775807L
+#define __UINTPTR_MAX__ 18446744073709551615UL
+#define __FLT_EVAL_METHOD__ 0
+#define __DEC_EVAL_METHOD__ 2
+#define __FLT_RADIX__ 2
+#define __FLT_MANT_DIG__ 24
+#define __FLT_DIG__ 6
+#define __FLT_MIN_EXP__ (-125)
+#define __FLT_MIN_10_EXP__ (-37)
+#define __FLT_MAX_EXP__ 128
+#define __FLT_MAX_10_EXP__ 38
+#define __FLT_DECIMAL_DIG__ 9
+#define __FLT_MAX__ 3.40282346638528859812e+38F
+#define __FLT_MIN__ 1.17549435082228750797e-38F
+#define __FLT_EPSILON__ 1.19209289550781250000e-7F
+#define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F
+#define __FLT_HAS_DENORM__ 1
+#define __FLT_HAS_INFINITY__ 1
+#define __FLT_HAS_QUIET_NAN__ 1
+#define __DBL_MANT_DIG__ 53
+#define __DBL_DIG__ 15
+#define __DBL_MIN_EXP__ (-1021)
+#define __DBL_MIN_10_EXP__ (-307)
+#define __DBL_MAX_EXP__ 1024
+#define __DBL_MAX_10_EXP__ 308
+#define __DBL_DECIMAL_DIG__ 17
+#define __DBL_MAX__ ((double)1.79769313486231570815e+308L)
+#define __DBL_MIN__ ((double)2.22507385850720138309e-308L)
+#define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L)
+#define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L)
+#define __DBL_HAS_DENORM__ 1
+#define __DBL_HAS_INFINITY__ 1
+#define __DBL_HAS_QUIET_NAN__ 1
+#define __LDBL_MANT_DIG__ 64
+#define __LDBL_DIG__ 18
+#define __LDBL_MIN_EXP__ (-16381)
+#define __LDBL_MIN_10_EXP__ (-4931)
+#define __LDBL_MAX_EXP__ 16384
+#define __LDBL_MAX_10_EXP__ 4932
+#define __DECIMAL_DIG__ 21
+#define __LDBL_MAX__ 1.18973149535723176502e+4932L
+#define __LDBL_MIN__ 3.36210314311209350626e-4932L
+#define __LDBL_EPSILON__ 1.08420217248550443401e-19L
+#define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L
+#define __LDBL_HAS_DENORM__ 1
+#define __LDBL_HAS_INFINITY__ 1
+#define __LDBL_HAS_QUIET_NAN__ 1
+#define __DEC32_MANT_DIG__ 7
+#define __DEC32_MIN_EXP__ (-94)
+#define __DEC32_MAX_EXP__ 97
+#define __DEC32_MIN__ 1E-95DF
+#define __DEC32_MAX__ 9.999999E96DF
+#define __DEC32_EPSILON__ 1E-6DF
+#define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF
+#define __DEC64_MANT_DIG__ 16
+#define __DEC64_MIN_EXP__ (-382)
+#define __DEC64_MAX_EXP__ 385
+#define __DEC64_MIN__ 1E-383DD
+#define __DEC64_MAX__ 9.999999999999999E384DD
+#define __DEC64_EPSILON__ 1E-15DD
+#define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD
+#define __DEC128_MANT_DIG__ 34
+#define __DEC128_MIN_EXP__ (-6142)
+#define __DEC128_MAX_EXP__ 6145
+#define __DEC128_MIN__ 1E-6143DL
+#define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL
+#define __DEC128_EPSILON__ 1E-33DL
+#define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL
+#define __REGISTER_PREFIX__
+#define __USER_LABEL_PREFIX__
+#define __GNUC_GNU_INLINE__ 1
+#define __NO_INLINE__ 1
+#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1
+#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1
+#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1
+#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1
+#define __GCC_ATOMIC_BOOL_LOCK_FREE 2
+#define __GCC_ATOMIC_CHAR_LOCK_FREE 2
+#define __GCC_ATOMIC_CHAR16_T_LOCK_FREE 2
+#define __GCC_ATOMIC_CHAR32_T_LOCK_FREE 2
+#define __GCC_ATOMIC_WCHAR_T_LOCK_FREE 2
+#define __GCC_ATOMIC_SHORT_LOCK_FREE 2
+#define __GCC_ATOMIC_INT_LOCK_FREE 2
+#define __GCC_ATOMIC_LONG_LOCK_FREE 2
+#define __GCC_ATOMIC_LLONG_LOCK_FREE 2
+#define __GCC_ATOMIC_TEST_AND_SET_TRUEVAL 1
+#define __GCC_ATOMIC_POINTER_LOCK_FREE 2
+#define __GCC_HAVE_DWARF2_CFI_ASM 1
+#define __PRAGMA_REDEFINE_EXTNAME 1
+#define __SIZEOF_INT128__ 16
+#define __SIZEOF_WCHAR_T__ 4
+#define __SIZEOF_WINT_T__ 4
+#define __SIZEOF_PTRDIFF_T__ 8
+#define __amd64 1
+#define __amd64__ 1
+#define __x86_64 1
+#define __x86_64__ 1
+#define __ATOMIC_HLE_ACQUIRE 65536
+#define __ATOMIC_HLE_RELEASE 131072
+#define __k8 1
+#define __k8__ 1
+#define __code_model_small__ 1
+#define __MMX__ 1
+#define __SSE__ 1
+#define __SSE2__ 1
+#define __FXSR__ 1
+#define __SSE_MATH__ 1
+#define __SSE2_MATH__ 1
+#define __gnu_linux__ 1
+#define __linux 1
+#define __linux__ 1
+#define linux 1
+#define __unix 1
+#define __unix__ 1
+#define unix 1
+#define __ELF__ 1
+#define __DECIMAL_BID_FORMAT__ 1
+#define _STDC_PREDEF_H 1
+#define __STDC_IEC_559__ 1
+#define __STDC_IEC_559_COMPLEX__ 1
+#define __STDC_ISO_10646__ 201304L
+#define __STDC_NO_THREADS__ 1
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/.classpath b/jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/.classpath
new file mode 100644
index 00000000000..e801ebfb468
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/.project b/jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/.project
new file mode 100644
index 00000000000..c161f4b4f0f
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.cdt.jsoncdb.core.ui</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+ </natures>
+</projectDescription>
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/.settings/org.eclipse.core.resources.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/.settings/org.eclipse.jdt.core.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..e3a8104f9ca
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/debug/org.eclipse.cdt.debug.application.doc/.settings/org.eclipse.jdt.launching.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/.settings/org.eclipse.jdt.launching.prefs
index f8a131b56e0..f8a131b56e0 100644
--- a/debug/org.eclipse.cdt.debug.application.doc/.settings/org.eclipse.jdt.launching.prefs
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/.settings/org.eclipse.jdt.launching.prefs
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/.settings/org.eclipse.jdt.ui.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/.settings/org.eclipse.m2e.core.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 00000000000..f897a7f1cb2
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core.tests/.settings/org.eclipse.pde.api.tools.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/.settings/org.eclipse.pde.api.tools.prefs
index ec9fbf321d0..ec9fbf321d0 100644
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core.tests/.settings/org.eclipse.pde.api.tools.prefs
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/.settings/org.eclipse.pde.api.tools.prefs
diff --git a/releng/org.eclipse.cdt.testing.repo/.settings/org.eclipse.pde.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/.settings/org.eclipse.pde.prefs
index d2dc703ba9e..d2dc703ba9e 100644
--- a/releng/org.eclipse.cdt.testing.repo/.settings/org.eclipse.pde.prefs
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/.settings/org.eclipse.pde.prefs
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/META-INF/MANIFEST.MF b/jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..f4e3c0b6b87
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,14 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %bundleName
+Bundle-SymbolicName: org.eclipse.cdt.jsoncdb.core.ui;singleton:=true
+Bundle-Version: 1.0.200.qualifier
+Bundle-Vendor: %Bundle-Vendor
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.ui,
+ org.eclipse.cdt.jsoncdb.core;bundle-version="1.0.0",
+ org.eclipse.e4.ui.model.workbench;bundle-version="2.1.700.v20191222-1048"
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Automatic-Module-Name: org.eclipse.cdt.jsoncdb.core.ui
+Bundle-ActivationPolicy: lazy
+Import-Package: org.eclipse.e4.core.contexts
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/OSGI-INF/l10n/bundle.properties b/jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/OSGI-INF/l10n/bundle.properties
new file mode 100644
index 00000000000..3b6c736d3eb
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/OSGI-INF/l10n/bundle.properties
@@ -0,0 +1,12 @@
+#Properties file for org.eclipse.cdt.jsoncdb.core.ui
+bundleName=JSON Compilation Database Parser UI
+Bundle-Vendor = Eclipse CDT
+Bundle-Copyright = 2013 Martin Weber\n\
+\n\
+This program and the accompanying materials are made\n\
+available under the terms of the Eclipse Public License 2.0\n\
+which is available at https://www.eclipse.org/legal/epl-2.0/\n\
+\n\
+SPDX-License-Identifier: EPL-2.0\n\
+
+page.name= JSON Compilation Database Parser \ No newline at end of file
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/about.html b/jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/build.properties b/jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/build.properties
new file mode 100644
index 00000000000..80fd8dbc9ba
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/build.properties
@@ -0,0 +1,8 @@
+source.. = src/
+output.. = bin/
+bin.includes = plugin.xml,\
+ META-INF/,\
+ .,\
+ OSGI-INF/,\
+ about.html
+src.includes = about.html
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/plugin.xml b/jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/plugin.xml
new file mode 100644
index 00000000000..5eaf4b9c138
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/plugin.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<plugin>
+
+ <extension
+ point="org.eclipse.ui.preferencePages">
+ <page
+ category="org.eclipse.cdt.ui.preferences.CPluginPreferencePage"
+ class="org.eclipse.cdt.jsoncdb.core.ui.internal.JsonCdbPreferencePage"
+ id="org.eclipse.cdt.jsoncdb.core.ui.JsonCdbPreferencePage"
+ name="%page.name">
+ </page>
+ </extension>
+
+</plugin>
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/src/org/eclipse/cdt/jsoncdb/core/ui/internal/JsonCdbPreferencePage.java b/jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/src/org/eclipse/cdt/jsoncdb/core/ui/internal/JsonCdbPreferencePage.java
new file mode 100644
index 00000000000..975d3dd3d77
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/src/org/eclipse/cdt/jsoncdb/core/ui/internal/JsonCdbPreferencePage.java
@@ -0,0 +1,189 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Martin Weber.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.jsoncdb.core.ui.internal;
+
+import java.util.regex.Pattern;
+import java.util.regex.PatternSyntaxException;
+
+import org.eclipse.cdt.jsoncdb.core.IParserPreferences;
+import org.eclipse.cdt.jsoncdb.core.IParserPreferencesAccess;
+import org.eclipse.cdt.jsoncdb.core.IParserPreferencesMetadata;
+import org.eclipse.core.runtime.preferences.PreferenceMetadata;
+import org.eclipse.e4.core.contexts.EclipseContextFactory;
+import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.jface.preference.PreferencePage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.FocusAdapter;
+import org.eclipse.swt.events.FocusEvent;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPreferencePage;
+import org.osgi.framework.FrameworkUtil;
+
+/**
+ * Preference page for JSON Compilation Database Parser.
+ */
+public class JsonCdbPreferencePage extends PreferencePage implements IWorkbenchPreferencePage {
+
+ private Text pattern;
+ private Button btnVersionsEnabled;
+ private Button btnWithConsole;
+ private final IParserPreferencesAccess prefsAccess;
+
+ public JsonCdbPreferencePage() {
+ prefsAccess = EclipseContextFactory.getServiceContext(FrameworkUtil.getBundle(getClass()).getBundleContext())
+ .get(IParserPreferencesAccess.class);
+ setDescription(Messages.JsonCdbPreferencePage_description);
+ }
+
+ /**
+ * Creates the field editors.
+ */
+ @Override
+ protected Control createContents(Composite parent) {
+ final IParserPreferencesMetadata prefsMeta = prefsAccess.metadata();
+ final IParserPreferences prefs = prefsAccess.getWorkspacePreferences();
+
+ final Composite composite = new Composite(parent, SWT.NONE);
+ composite.setLayout(new GridLayout(1, false));
+ GridDataFactory.swtDefaults().applyTo(composite);
+
+ final Group gr = createGroup(composite, SWT.FILL, 1, Messages.JsonCdbPreferencePage_label_version_suffix_group,
+ 2);
+ btnVersionsEnabled = createCheckbox(gr, SWT.BEGINNING, 2, prefsMeta.tryVersionSuffix());
+ btnVersionsEnabled.setSelection(prefs.getTryVersionSuffix());
+ {
+ Label label = new Label(gr, SWT.NONE);
+ label.setText(Messages.JsonCdbPreferencePage_label_suffix_pattern);
+ GridDataFactory.defaultsFor(label).applyTo(label);
+ }
+
+ pattern = new Text(gr, SWT.SINGLE | SWT.BORDER);
+ GridDataFactory.defaultsFor(pattern).applyTo(pattern);
+ pattern.setToolTipText(prefsMeta.versionSuffixPattern().description());
+ pattern.setEnabled(btnVersionsEnabled.getSelection());
+ pattern.setText(prefs.getVersionSuffixPattern());
+ pattern.addFocusListener(new FocusAdapter() {
+ @Override
+ public void focusLost(FocusEvent e) {
+ if (btnVersionsEnabled.getSelection()) {
+ final String text = pattern.getText();
+ try {
+ Pattern.compile(text);
+ setErrorMessage(null);
+ } catch (PatternSyntaxException ex) {
+ String msg = String.format(Messages.JsonCdbPreferencePage_errmsg_suffix_regex,
+ ex.getDescription(), ex.getPattern(), ex.getIndex());
+ setErrorMessage(msg);
+ }
+ }
+ }
+ });
+
+ // to adjust sensitivity...
+ btnVersionsEnabled.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent event) {
+ boolean selected = ((Button) event.widget).getSelection();
+ pattern.setEnabled(selected);
+ if (!selected) {
+ setErrorMessage(null);
+ }
+ }
+ });
+
+ btnWithConsole = createCheckbox(composite, SWT.BEGINNING, 1, prefsMeta.allocateConsole());
+ btnWithConsole.setSelection(prefs.getAllocateConsole());
+
+ return composite;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
+ */
+ @Override
+ public void init(IWorkbench workbench) {
+ }
+
+ @Override
+ protected void performDefaults() {
+ final IParserPreferencesMetadata prefsMeta = prefsAccess.metadata();
+ btnVersionsEnabled.setSelection(prefsMeta.tryVersionSuffix().defaultValue());
+ pattern.setText(prefsMeta.versionSuffixPattern().defaultValue());
+ btnWithConsole.setSelection(prefsMeta.allocateConsole().defaultValue());
+ setErrorMessage(null);
+ super.performDefaults();
+ }
+
+ @Override
+ public boolean performOk() {
+ final IParserPreferences prefs = prefsAccess.getWorkspacePreferences();
+ prefs.setTryVersionSuffix(btnVersionsEnabled.getSelection());
+ prefs.setVersionSuffixPattern(pattern.getText());
+ prefs.setAllocateConsole(btnWithConsole.getSelection());
+ return true;
+ }
+
+ /**
+ * Creates a check-box button.
+ *
+ * @param parent
+ * @param horizontalAlignment how control will be positioned horizontally within
+ * a cell of the parent's grid layout, one of:
+ * SWT.BEGINNING (or SWT.LEFT), SWT.CENTER, SWT.END
+ * (or SWT.RIGHT), or SWT.FILL
+ * @param horizontalSpan number of column cells in the parent's grid layout
+ * that the control will take up.
+ * @param text text to display on the check-box
+ */
+ private static Button createCheckbox(Composite parent, int horizontalAlignment, int horizontalSpan,
+ PreferenceMetadata<Boolean> option) {
+ Button b = new Button(parent, SWT.CHECK);
+ b.setText(option.name());
+ b.setToolTipText(option.description());
+ GridDataFactory.defaultsFor(b).align(horizontalAlignment, SWT.CENTER).span(horizontalSpan, 1).grab(true, false)
+ .applyTo(b);
+ return b;
+ }
+
+ /**
+ * Creates a group with a grid layout.
+ *
+ * @param parent
+ * @param horizontalAlignment how control will be positioned horizontally within
+ * a cell of the parent's grid layout, one of:
+ * SWT.BEGINNING (or SWT.LEFT), SWT.CENTER, SWT.END
+ * (or SWT.RIGHT), or SWT.FILL
+ * @param horizontalSpan number of column cells in the parent's grid layout
+ * that the control will take up.
+ * @param text title text to display on the group
+ * @param numColumns the number of columns in the grid inside the group
+ */
+ private static Group createGroup(Composite parent, int horizontalAlignment, int horizontalSpan, String text,
+ int numColumns) {
+ Group gr = new Group(parent, SWT.NONE);
+ gr.setLayout(new GridLayout(numColumns, false));
+ gr.setText(text);
+ GridDataFactory.defaultsFor(gr).align(horizontalAlignment, SWT.CENTER).span(horizontalSpan, 1).grab(true, false)
+ .applyTo(gr);
+ return gr;
+ }
+} \ No newline at end of file
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/src/org/eclipse/cdt/jsoncdb/core/ui/internal/Messages.java b/jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/src/org/eclipse/cdt/jsoncdb/core/ui/internal/Messages.java
new file mode 100644
index 00000000000..7460087d20b
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/src/org/eclipse/cdt/jsoncdb/core/ui/internal/Messages.java
@@ -0,0 +1,33 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Martin Weber.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.jsoncdb.core.ui.internal;
+
+import org.eclipse.osgi.util.NLS;
+
+/**
+ * @author weber
+ *
+ */
+class Messages extends NLS {
+ private static final String BUNDLE_NAME = "org.eclipse.cdt.jsoncdb.core.ui.internal.messages"; //$NON-NLS-1$
+ public static String JsonCdbPreferencePage_description;
+ public static String JsonCdbPreferencePage_errmsg_suffix_regex;
+ public static String JsonCdbPreferencePage_label_suffix_pattern;
+ public static String JsonCdbPreferencePage_label_version_suffix_group;
+ static {
+ // initialize resource bundle
+ NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+ }
+
+ private Messages() {
+ }
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/src/org/eclipse/cdt/jsoncdb/core/ui/internal/messages.properties b/jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/src/org/eclipse/cdt/jsoncdb/core/ui/internal/messages.properties
new file mode 100644
index 00000000000..17e83b5df14
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core.ui/src/org/eclipse/cdt/jsoncdb/core/ui/internal/messages.properties
@@ -0,0 +1,17 @@
+###############################################################################
+# Copyright (c) 2020 Martin Weber and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Martin Weber - initial API and implementation
+###############################################################################
+JsonCdbPreferencePage_description=Configure how macros and include paths get extracted from the compile_commands.json file
+JsonCdbPreferencePage_errmsg_suffix_regex=Suffix pattern regular expression: %1$s in '%2$s' at index %3$d
+JsonCdbPreferencePage_label_suffix_pattern=&Suffix pattern:
+JsonCdbPreferencePage_label_version_suffix_group=For compilers with version in name
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/.classpath b/jsoncdb/org.eclipse.cdt.jsoncdb.core/.classpath
new file mode 100644
index 00000000000..79a7cca69b1
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/.classpath
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11">
+ <attributes>
+ <attribute name="maven.pomderived" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src/"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/.gitignore b/jsoncdb/org.eclipse.cdt.jsoncdb.core/.gitignore
new file mode 100644
index 00000000000..b83d22266ac
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/.gitignore
@@ -0,0 +1 @@
+/target/
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/.options b/jsoncdb/org.eclipse.cdt.jsoncdb.core/.options
new file mode 100644
index 00000000000..e978cfd4b00
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/.options
@@ -0,0 +1,10 @@
+# Debugging options for the org.eclipse.cdt.jsoncdb.core plugin.
+
+# Trace total time for parsing compile_commands.json files
+org.eclipse.cdt.jsoncdb.core/debug/performance=false
+# Trace compile_commands.json Parser tool detection participant lookup
+org.eclipse.cdt.jsoncdb.core/debug/participant=false
+# Trace how compiler command-line arguments are detected and parsed
+org.eclipse.cdt.jsoncdb.core/debug/arglets=false
+# Trace detected preprocessor symbols and include path entries as passed to the indexer
+org.eclipse.cdt.jsoncdb.core/debug/detected.entries=false
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/.project b/jsoncdb/org.eclipse.cdt.jsoncdb.core/.project
new file mode 100644
index 00000000000..d309ac1655f
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/.project
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.cdt.jsoncdb.core</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ds.core.builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+ </natures>
+</projectDescription>
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/.settings/.api_filters b/jsoncdb/org.eclipse.cdt.jsoncdb.core/.settings/.api_filters
new file mode 100644
index 00000000000..96215b79f80
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/.settings/.api_filters
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<component id="org.eclipse.cdt.jsoncdb.core" version="2">
+ <resource path="src/org/eclipse/cdt/jsoncdb/core/CompileCommandsJsonParser.java" type="org.eclipse.cdt.jsoncdb.core.CompileCommandsJsonParser">
+ <filter comment="&quot;A PDE bug incorrectly reports this as no longer API, yet it is still API. Appears to be because the last release was the first to make this package API" id="305365105">
+ <message_arguments>
+ <message_argument value="org.eclipse.cdt.jsoncdb.core.CompileCommandsJsonParser"/>
+ <message_argument value="org.eclipse.cdt.jsoncdb.core_1.2.0"/>
+ </message_arguments>
+ </filter>
+ </resource>
+ <resource path="src/org/eclipse/cdt/jsoncdb/core/IParserPreferences.java" type="org.eclipse.cdt.jsoncdb.core.IParserPreferences">
+ <filter comment="&quot;A PDE bug incorrectly reports this as no longer API, yet it is still API. Appears to be because the last release was the first to make this package API" id="305365105">
+ <message_arguments>
+ <message_argument value="org.eclipse.cdt.jsoncdb.core.IParserPreferences"/>
+ <message_argument value="org.eclipse.cdt.jsoncdb.core_1.2.0"/>
+ </message_arguments>
+ </filter>
+ </resource>
+ <resource path="src/org/eclipse/cdt/jsoncdb/core/IParserPreferencesAccess.java" type="org.eclipse.cdt.jsoncdb.core.IParserPreferencesAccess">
+ <filter comment="&quot;A PDE bug incorrectly reports this as no longer API, yet it is still API. Appears to be because the last release was the first to make this package API" id="305365105">
+ <message_arguments>
+ <message_argument value="org.eclipse.cdt.jsoncdb.core.IParserPreferencesAccess"/>
+ <message_argument value="org.eclipse.cdt.jsoncdb.core_1.2.0"/>
+ </message_arguments>
+ </filter>
+ </resource>
+ <resource path="src/org/eclipse/cdt/jsoncdb/core/IParserPreferencesMetadata.java" type="org.eclipse.cdt.jsoncdb.core.IParserPreferencesMetadata">
+ <filter comment="&quot;A PDE bug incorrectly reports this as no longer API, yet it is still API. Appears to be because the last release was the first to make this package API" id="305365105">
+ <message_arguments>
+ <message_argument value="org.eclipse.cdt.jsoncdb.core.IParserPreferencesMetadata"/>
+ <message_argument value="org.eclipse.cdt.jsoncdb.core_1.2.0"/>
+ </message_arguments>
+ </filter>
+ </resource>
+ <resource path="src/org/eclipse/cdt/jsoncdb/core/ISourceFileInfoConsumer.java" type="org.eclipse.cdt.jsoncdb.core.ISourceFileInfoConsumer">
+ <filter comment="&quot;A PDE bug incorrectly reports this as no longer API, yet it is still API. Appears to be because the last release was the first to make this package API" id="305365105">
+ <message_arguments>
+ <message_argument value="org.eclipse.cdt.jsoncdb.core.ISourceFileInfoConsumer"/>
+ <message_argument value="org.eclipse.cdt.jsoncdb.core_1.2.0"/>
+ </message_arguments>
+ </filter>
+ </resource>
+ <resource path="src/org/eclipse/cdt/jsoncdb/core/ParseRequest.java" type="org.eclipse.cdt.jsoncdb.core.ParseRequest">
+ <filter comment="&quot;A PDE bug incorrectly reports this as no longer API, yet it is still API. Appears to be because the last release was the first to make this package API" id="305365105">
+ <message_arguments>
+ <message_argument value="org.eclipse.cdt.jsoncdb.core.ParseRequest"/>
+ <message_argument value="org.eclipse.cdt.jsoncdb.core_1.2.0"/>
+ </message_arguments>
+ </filter>
+ </resource>
+ <resource path="src/org/eclipse/cdt/jsoncdb/core/participant/Arglets.java" type="org.eclipse.cdt.jsoncdb.core.participant.Arglets">
+ <filter comment="Incorrectly named class that could not have been used is getting an API filter rather than old @deprecated API" id="338886760">
+ <message_arguments>
+ <message_argument value="org.eclipse.cdt.jsoncdb.core.participant.Arglets.SystemIncludePath_armcc"/>
+ <message_argument value="org.eclipse.cdt.jsoncdb.core_1.2.0"/>
+ </message_arguments>
+ </filter>
+ </resource>
+</component>
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/.settings/org.eclipse.core.resources.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.core/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/.settings/org.eclipse.jdt.core.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.core/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..e3a8104f9ca
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/debug/org.eclipse.cdt.debug.application.product/.settings/org.eclipse.jdt.launching.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.core/.settings/org.eclipse.jdt.launching.prefs
index f8a131b56e0..f8a131b56e0 100644
--- a/debug/org.eclipse.cdt.debug.application.product/.settings/org.eclipse.jdt.launching.prefs
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/.settings/org.eclipse.jdt.launching.prefs
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/.settings/org.eclipse.jdt.ui.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.core/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/.settings/org.eclipse.m2e.core.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.core/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 00000000000..f897a7f1cb2
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/.settings/org.eclipse.pde.api.tools.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.core/.settings/org.eclipse.pde.api.tools.prefs
index ec9fbf321d0..ec9fbf321d0 100644
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core/.settings/org.eclipse.pde.api.tools.prefs
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/.settings/org.eclipse.pde.api.tools.prefs
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/.settings/org.eclipse.pde.ds.annotations.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.core/.settings/org.eclipse.pde.ds.annotations.prefs
new file mode 100644
index 00000000000..73a356b6d05
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/.settings/org.eclipse.pde.ds.annotations.prefs
@@ -0,0 +1,8 @@
+classpath=true
+dsVersion=V1_3
+eclipse.preferences.version=1
+enabled=true
+generateBundleActivationPolicyLazy=true
+path=OSGI-INF
+validationErrorLevel=error
+validationErrorLevel.missingImplicitUnbindMethod=error
diff --git a/releng/scripts/.settings/org.eclipse.pde.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.core/.settings/org.eclipse.pde.prefs
index d2dc703ba9e..d2dc703ba9e 100644
--- a/releng/scripts/.settings/org.eclipse.pde.prefs
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/.settings/org.eclipse.pde.prefs
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/META-INF/MANIFEST.MF b/jsoncdb/org.eclipse.cdt.jsoncdb.core/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..5ebfa03022a
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/META-INF/MANIFEST.MF
@@ -0,0 +1,27 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %bundleName
+Bundle-Description: %bundleDescription
+Bundle-Copyright: %Bundle-Copyright
+Bundle-SymbolicName: org.eclipse.cdt.jsoncdb.core;singleton:=true
+Bundle-Version: 1.3.0.qualifier
+Bundle-Vendor: %Bundle-Vendor
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Bundle-ActivationPolicy: lazy
+Bundle-Activator: org.eclipse.cdt.jsoncdb.core.internal.Plugin
+Export-Package: org.eclipse.cdt.jsoncdb.core;uses:="org.eclipse.core.runtime,org.eclipse.cdt.core.settings.model,org.eclipse.cdt.jsoncdb.core.builtins",
+ org.eclipse.cdt.jsoncdb.core.participant;uses:="org.eclipse.core.runtime,org.eclipse.cdt.jsoncdb.core.participant.builtins",
+ org.eclipse.cdt.jsoncdb.core.participant.builtins;uses:="org.eclipse.cdt.jsoncdb.core.participant"
+Require-Bundle: org.eclipse.ui.workbench;bundle-version="3.8.0",
+ org.eclipse.cdt.ui,
+ org.eclipse.core.resources;bundle-version="3.13.700",
+ org.eclipse.core.runtime;bundle-version="3.17.100",
+ org.eclipse.cdt.core,
+ org.eclipse.jface,
+ com.google.gson,
+ org.apache.commons.io;bundle-version="2.6.0"
+Automatic-Module-Name: org.eclipse.cdt.jsoncdb.core
+Import-Package: org.eclipse.e4.core.contexts;version="1.7.0",
+ org.osgi.service.component.annotations;version="1.2.0"
+Service-Component: OSGI-INF/org.eclipse.cdt.jsoncdb.core.internal.ParserPreferencesAccess.xml
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/OSGI-INF/org.eclipse.cdt.jsoncdb.core.internal.ParserPreferencesAccess.xml b/jsoncdb/org.eclipse.cdt.jsoncdb.core/OSGI-INF/org.eclipse.cdt.jsoncdb.core.internal.ParserPreferencesAccess.xml
new file mode 100644
index 00000000000..849ed3aed6f
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/OSGI-INF/org.eclipse.cdt.jsoncdb.core.internal.ParserPreferencesAccess.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.eclipse.cdt.jsoncdb.core.internal.ParserPreferencesAccess">
+ <service>
+ <provide interface="org.eclipse.cdt.jsoncdb.core.IParserPreferencesAccess"/>
+ </service>
+ <implementation class="org.eclipse.cdt.jsoncdb.core.internal.ParserPreferencesAccess"/>
+</scr:component> \ No newline at end of file
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/about.html b/jsoncdb/org.eclipse.cdt.jsoncdb.core/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/build.properties b/jsoncdb/org.eclipse.cdt.jsoncdb.core/build.properties
new file mode 100644
index 00000000000..cc2d2ec430c
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/build.properties
@@ -0,0 +1,11 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ plugin.properties,\
+ about.html,\
+ .options,\
+ schema/,\
+ OSGI-INF/
+src.includes = about.html
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/plugin.properties b/jsoncdb/org.eclipse.cdt.jsoncdb.core/plugin.properties
new file mode 100644
index 00000000000..ec44029a1bf
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/plugin.properties
@@ -0,0 +1,15 @@
+bundleName=JSON Compilation Database Parser
+bundleDescription= Support for parsing a JSON compilation database (usually compile_commands.json) \
+ as specified by https://clang.llvm.org/docs/JSONCompilationDatabase.html.
+
+Bundle-Vendor = Eclipse CDT
+Bundle-Copyright = 2013 Martin Weber\n\
+\n\
+This program and the accompanying materials are made\n\
+available under the terms of the Eclipse Public License 2.0\n\
+which is available at https://www.eclipse.org/legal/epl-2.0/\n\
+\n\
+SPDX-License-Identifier: EPL-2.0
+extension-point.name = Tool Detection Participant
+CompileCommandsJsonParserMarker.name = JSON compilation database
+CompilerBuiltinsDetectorMarker.name=Compiler Builtins Detector Problem
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/plugin.xml b/jsoncdb/org.eclipse.cdt.jsoncdb.core/plugin.xml
new file mode 100644
index 00000000000..a2c279069f5
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/plugin.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension-point id="detectionParticipant" name="%extension-point.name" schema="schema/participant.exsd"/>
+ <extension
+ id="CompileCommandsJsonParserMarker"
+ name="%CompileCommandsJsonParserMarker.name"
+ point="org.eclipse.core.resources.markers">
+ <persistent
+ value="false">
+ </persistent>
+ <super
+ type="org.eclipse.core.resources.problemmarker">
+ </super>
+ </extension>
+ <extension
+ id="CompilerBuiltinsDetectorMarker"
+ name="%CompilerBuiltinsDetectorMarker.name"
+ point="org.eclipse.core.resources.markers">
+ <super type="org.eclipse.cdt.jsoncdb.core.CompileCommandsJsonParserMarker"/>
+ </extension>
+</plugin>
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/schema/participant.exsd b/jsoncdb/org.eclipse.cdt.jsoncdb.core/schema/participant.exsd
new file mode 100644
index 00000000000..75656bfa0f8
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/schema/participant.exsd
@@ -0,0 +1,163 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.cdt.jsoncdb.core" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+ <appinfo>
+ <meta.schema plugin="org.eclipse.cdt.jsoncdb.core" id="detectionParticipant" name="Tool Detection Participants"/>
+ </appinfo>
+ <documentation>
+ Allows plug-ins to contribute to detection of compiler include paths and preprocessor defines from a command-line text.
+&lt;p&gt;This extension point teaches the &lt;i&gt;JSON Compilation Database Parser&lt;/i&gt; to analyze compiler-specific command-lines incl. options for a specific compiler. The detected include paths, preprocessor defines and
+preprocessor un-defines from the compiler command-line get passed to the
+&lt;i&gt;JSON Compilation Database Parser&lt;/i&gt; and finally to the CDT indexer.&lt;/p&gt;
+&lt;p&gt;Third party compiler vendors may use this extension point to add their compiler (or other tool) for improved syntax highlighting in the CDT&apos;s C/C++ editors.
+&lt;/p&gt;
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <annotation>
+ <appinfo>
+ <meta.element />
+ </appinfo>
+ </annotation>
+ <complexType>
+ <sequence minOccurs="1" maxOccurs="unbounded">
+ <element ref="tool"/>
+ </sequence>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+ a fully qualified identifier of the target extension point
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+ ID of the extension point, not used
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+ Name of the extension point, not used
+ </documentation>
+ <appinfo>
+ <meta.attribute translatable="true"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="tool">
+ <annotation>
+ <documentation>
+ Specifies the details for detection of a specific compiler by its executable name and how the include paths, preprocessor defines and preprocessor un-defines are processed.
+ </documentation>
+ </annotation>
+ <complexType>
+ <attribute name="class" type="string" use="required">
+ <annotation>
+ <documentation>
+ The fully qualified name of a class that implements &lt;code&gt;org.eclipse.cdt.jsoncdb.participant.IToolDetectionParticipant&lt;/code&gt;, The implementation must provide a public no-argument constructor.&lt;br/&gt;
+You may want to consider sub-classing &lt;code&gt;org.eclipse.cdt.jsoncdb.participant.DefaultToolDetectionParticipant&lt;/code&gt; for convenience instead of directly implementing the interface.
+ </documentation>
+ <appinfo>
+ <meta.attribute kind="java" basedOn=":org.eclipse.cdt.jsoncdb.participant.IToolDetectionParticipant"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ <attribute name="displayName" type="string" use="required">
+ <annotation>
+ <documentation>
+ The name of the compiler for display in the UI.
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="order" type="string" use="default" value="100000">
+ <annotation>
+ <documentation>
+ The order in which the participant takes place in the tool detection chain, specified as an positive integer value. Values below 10000 are reserved for internal purposes and will not be honored.
+ </documentation>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="since"/>
+ </appinfo>
+ <documentation>
+ 1.0.0
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="examples"/>
+ </appinfo>
+ <documentation>
+ Following is an example of a tool detection participant.
+&lt;p&gt;This participant detects the preprocessor macros and include directories for the C compiler made by
+the Foobar company:
+&lt;pre&gt;
+&lt;extension point=&quot;org.eclipse.cdt.jsoncdb.core.detectionParticipant&quot;&gt;
+ &lt;tool class=&quot;com.foobar.ToolDetectionParticipant&quot; displayName=&quot;Foobar C&quot; /&gt;
+&lt;/extension&gt;
+&lt;/pre&gt;
+&lt;/p&gt;
+&lt;p&gt;
+To provide online help that lists the supported compilers along with the recognized arguments,
+the extension point &lt;code&gt;org.eclipse.help.contentExtension&lt;/code&gt; can be used.&lt;br/&gt;
+Plugin &lt;i&gt;org.eclipse.cdt.jsoncdb.core.doc&lt;/i&gt; provides predefined help-anchors that allow to integrate the online help:
+&lt;ol&gt;
+&lt;li&gt;&lt;i&gt;extra_detection_participant_list&lt;/i&gt; for the commandline parser,&lt;/li&gt;
+&lt;li&gt;&lt;i&gt;extra_detection_participant_builtins_list&lt;/i&gt; and
+&lt;i&gt;extra_detection_participant_builtins_enhanced_list&lt;/i&gt; for the compiler built-ins parser.&lt;/li&gt;
+&lt;/ol&gt;
+Example file &lt;code&gt;help_content_extension.xml&lt;/code&gt;:
+&lt;pre&gt;
+&lt;contentExtension&gt;
+ &lt;contribution content=&quot;doc/compiler.xhtml#lsp&quot;
+ path=&quot;/org.eclipse.cdt.jsoncdb.core.doc/doc/html/supported-compilers.xhtml#extra_detection_participant_list&quot;/&gt;
+ &lt;contribution content=&quot;doc/compiler.xhtml#builtins&quot;
+ path=&quot;/org.eclipse.cdt.jsoncdb.core.doc/doc/html/builtins-detection.xhtml#extra_detection_participant_builtins_list&quot;/&gt;
+&lt;/contentExtension&gt;
+&lt;/pre&gt;
+&lt;/p&gt;
+
+&lt;p&gt;
+The easiest way to implement a tool detection participant would be to sub-class &lt;code&gt;org.eclipse.cdt.jsoncdb.participant.DefaultToolDetectionParticipant&lt;/code&gt;.
+To configure your class, pass an instance of &lt;code&gt;org.eclipse.cdt.jsoncdb.participant.DefaultToolCommandlineParser&lt;/code&gt; in its super-constructor.&lt;br/&gt;
+Some predifined parsers for tool arguments can be found in the classes &lt;code&gt;Arglets&lt;/code&gt; and &lt;code&gt;ResponseFileArglets&lt;/code&gt;.
+&lt;/p&gt;
+ </documentation>
+ </annotation>
+
+
+ <annotation>
+ <appinfo>
+ <meta.section type="implementation"/>
+ </appinfo>
+ <documentation>
+ The plugin &lt;i&gt;org.eclipse.cdt.jsoncdb.intel&lt;i&gt; provides implementations for various compiler made by Intel Corp.&lt;/br&gt;
+See, for example &lt;code&gt;org.eclipse.cdt.jsoncdb.intel.IcpcToolDetectionParticipant.java&lt;/code&gt;.
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="copyright"/>
+ </appinfo>
+ <documentation>
+ Copyright (c) 2019-20 Martin Weber&lt;br&gt;
+All rights reserved. Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 &quot;EPL&quot;.
+A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ </documentation>
+ </annotation>
+
+</schema>
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/CommandEntry.java b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/CommandEntry.java
new file mode 100644
index 00000000000..f24b76e732a
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/CommandEntry.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Martin Weber.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.jsoncdb.core;
+
+/**
+ * Represents a parsed command entry of a compile_commands.json file.<br>
+ * See the <a href="https://clang.llvm.org/docs/JSONCompilationDatabase.html">JSON Compilation Database Format Specification</a>.
+ *
+ * @author Martin Weber
+ */
+class CommandEntry {
+ private String directory;
+ private String command;
+ private String[] arguments;
+ private String file;
+
+ /**
+ * Gets the working directory of the compilation the build directory as a String.<br>
+ * The specification states: All paths specified in the command or file fields must be either absolute or relative to this directory.
+ */
+ public String getDirectory() {
+ return directory;
+ }
+
+ /**
+ * Gets the command-line to compile the source file.
+ */
+ public String getCommand() {
+ return command;
+ }
+
+ /**
+ * Gets the command-line to compile the source file split up into arguments.<br>
+ * Either {@link #getCommand()} or {@link #getArguments()} will return a non-null value.
+ */
+ public String[] getArguments() {
+ return arguments;
+ }
+
+ /**
+ * Gets the source file path as a String.
+ */
+ public String getFile() {
+ return file;
+ }
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/CompileCommandsJsonParser.java b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/CompileCommandsJsonParser.java
new file mode 100644
index 00000000000..898dd62b6d5
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/CompileCommandsJsonParser.java
@@ -0,0 +1,535 @@
+/*******************************************************************************
+ * Copyright (c) 2016-2020 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.jsoncdb.core;
+
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.Reader;
+import java.nio.file.Files;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Objects;
+import java.util.Optional;
+import java.util.Set;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import org.apache.commons.io.FilenameUtils;
+import org.eclipse.cdt.jsoncdb.core.internal.ParserDetection;
+import org.eclipse.cdt.jsoncdb.core.internal.ParserDetection.DetectorWithMethod;
+import org.eclipse.cdt.jsoncdb.core.internal.ParserDetection.ParserDetectionResult;
+import org.eclipse.cdt.jsoncdb.core.internal.Plugin;
+import org.eclipse.cdt.jsoncdb.core.internal.builtins.CompilerBuiltinsDetector;
+import org.eclipse.cdt.jsoncdb.core.participant.DefaultToolDetectionParticipant;
+import org.eclipse.cdt.jsoncdb.core.participant.IRawSourceFileInfo;
+import org.eclipse.cdt.jsoncdb.core.participant.IToolCommandlineParser;
+import org.eclipse.cdt.jsoncdb.core.participant.IToolCommandlineParser.IResult;
+import org.eclipse.cdt.jsoncdb.core.participant.IToolDetectionParticipant;
+import org.eclipse.cdt.jsoncdb.core.participant.builtins.IBuiltinsDetectionBehavior;
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.QualifiedName;
+import org.eclipse.e4.core.contexts.EclipseContextFactory;
+import org.osgi.framework.FrameworkUtil;
+
+import com.google.gson.Gson;
+import com.google.gson.JsonIOException;
+import com.google.gson.JsonSyntaxException;
+
+/**
+ * Parses the file 'compile_commands.json' produced by cmake when option
+ * {@code -DCMAKE_EXPORT_COMPILE_COMMANDS=ON} is given and generates information
+ * about preprocessor symbols and include paths of the files being compiled for
+ * the CDT indexer.
+ *
+ * @author Martin Weber
+ */
+public class CompileCommandsJsonParser {
+ private static final boolean DEBUG_TIME = Boolean
+ .parseBoolean(Platform.getDebugOption(Plugin.PLUGIN_ID + "/debug/performance")); //$NON-NLS-1$
+ private static final boolean DEBUG_ENTRIES = Boolean
+ .parseBoolean(Platform.getDebugOption(Plugin.PLUGIN_ID + "/debug/detected.entries")); //$NON-NLS-1$
+ /**
+ * property to store the file modification time of the "compile_commands.json"
+ * file
+ */
+ private static final QualifiedName TIMESTAMP_COMPILE_COMMANDS_PROPERTY = new QualifiedName(null,
+ "timestamp:compile_commands.json"); //$NON-NLS-1$
+
+ private static final String WORKBENCH_WILL_NOT_KNOW_ALL_MSG = Messages.CompileCommandsJsonParser_MSG_WORKBENCH_WILL_NOT_KNOW;
+
+ private static final String MARKER_ID = Plugin.PLUGIN_ID + ".CompileCommandsJsonParserMarker"; //$NON-NLS-1$
+
+ private ParseRequest parseRequest;
+
+ private final IParserPreferencesAccess prefsAccess;
+
+ /**
+ * last known working tool detector and its tool option parsers or {@code null},
+ * if unknown (to speed up parsing)
+ */
+ private DetectorWithMethod lastDetector;
+
+ /**
+ * markers for commands without a cmdline parser for the tool. just for error
+ * reporting, no technical effect
+ */
+ private Set<String> knownUnsupportedTools = new HashSet<>();
+
+ /**
+ * the raw scanner info results for each source file (source file name ->
+ * IResult)
+ */
+ private Map<String, IRawSourceFileInfo> fileResults;
+
+ /**
+ * minimized set of CompilerBuiltinsDetector to run. (detector key ->
+ * CompilerBuiltinsDetector). Key is created by
+ * {@link #makeBuiltinsDetectorKey(String, List, String)}.
+ */
+ private Map<String, CompilerBuiltinsDetector> builtinDetectorsToRun;
+
+ /**
+ * the built-ins detectors for each source file (source file name -> detector
+ * key)
+ */
+ private Map<String, String> fileToBuiltinDetectorLinks;
+
+ /**
+ * Creates a new object that will try to parse the {@code compile_commands.json}
+ * file in the build directory specified in the {@code ParseRequest#getBuildConfiguration()}.
+ *
+ * @param parseRequest the parser configuration
+ */
+ public CompileCommandsJsonParser(ParseRequest parseRequest) {
+ this.parseRequest = Objects.requireNonNull(parseRequest, "parseRequest"); //$NON-NLS-1$
+ prefsAccess = EclipseContextFactory.getServiceContext(FrameworkUtil.getBundle(getClass()).getBundleContext())
+ .get(IParserPreferencesAccess.class);
+ }
+
+ /**
+ * Parses the content of the 'compile_commands.json' file corresponding to the
+ * specified configuration, if time-stamps differ.
+ * @param monitor the job's progress monitor
+ *
+ * @return {@code true} if the json file did change since the last invocation of
+ * this method (new setting entries were discovered), otherwise
+ * {@code false}
+ * @throws CoreException
+ */
+ private boolean processJsonFile(IProgressMonitor monitor) throws CoreException {
+ final IFile jsonFile = parseRequest.getFile();
+ final IProject project = jsonFile.getProject();
+
+ project.deleteMarkers(MARKER_ID, false, IResource.DEPTH_INFINITE);
+ final java.nio.file.Path jsonDiskFile = java.nio.file.Path.of(jsonFile.getLocationURI());
+ if (!Files.exists(jsonDiskFile)) {
+ // no json file was produced in the build
+ final String msg = String.format(Messages.CompileCommandsJsonParser_errmsg_file_not_found, jsonDiskFile,
+ WORKBENCH_WILL_NOT_KNOW_ALL_MSG);
+ createMarker(project, msg);
+ return false;
+ }
+ // file exists on disk...
+ long tsJsonModified = 0;
+ try {
+ tsJsonModified = Files.getLastModifiedTime(jsonDiskFile).toMillis();
+ } catch (IOException e) {
+ // treat as 'file is not modified'
+ return false;
+ }
+
+ IContainer buildRootFolder = jsonFile.getParent();
+ Long sessionLastModified = (Long) buildRootFolder.getSessionProperty(TIMESTAMP_COMPILE_COMMANDS_PROPERTY);
+ if (sessionLastModified == null || sessionLastModified.longValue() < tsJsonModified) {
+ // must parse json file...
+ monitor.setTaskName(Messages.CompileCommandsJsonParser_msg_processing);
+
+ try (Reader in = new FileReader(jsonDiskFile.toFile())) {
+ // parse file...
+ Gson gson = new Gson();
+ CommandEntry[] sourceFileInfos = gson.fromJson(in, CommandEntry[].class);
+ if (sourceFileInfos == null) {
+ final String msg = String.format(Messages.CompileCommandsJsonParser_errmsg_empty_json, jsonDiskFile,
+ WORKBENCH_WILL_NOT_KNOW_ALL_MSG);
+ createMarker(jsonFile, msg);
+ return false;
+ }
+ for (CommandEntry sourceFileInfo : sourceFileInfos) {
+ processCommandEntry(sourceFileInfo, jsonFile);
+ }
+ } catch (JsonSyntaxException | JsonIOException ex) {
+ // file format error
+ final String msg = String.format(Messages.CompileCommandsJsonParser_errmsg_not_json, jsonDiskFile,
+ WORKBENCH_WILL_NOT_KNOW_ALL_MSG);
+ createMarker(jsonFile, msg);
+ return false;
+ } catch (IOException ex) {
+ final String msg = String.format(Messages.CompileCommandsJsonParser_errmsg_read_error, jsonDiskFile,
+ WORKBENCH_WILL_NOT_KNOW_ALL_MSG);
+ createMarker(jsonFile, msg);
+ return false;
+ }
+
+ detectBuiltins(monitor);
+ // store time-stamp
+ buildRootFolder.setSessionProperty(TIMESTAMP_COMPILE_COMMANDS_PROPERTY, tsJsonModified);
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * Processes an entry from a {@code compile_commands.json} file and remembers a
+ * {@link IRawSourceFileInfo} for the given sourceFileInfo.
+ *
+ * @param sourceFileInfo parsed command entry of a compile_commands.json file
+ * @param jsonFile the JSON file being parsed (for marker creation only)
+ *
+ * @throws CoreException if marker creation failed
+ */
+ private void processCommandEntry(CommandEntry sourceFileInfo, IFile jsonFile) throws CoreException {
+ // NOTE that this is the absolute file system path of the source file in
+ // CMake-notation (directory separator are forward slashes, even on windows)
+ final String file = sourceFileInfo.getFile();
+ String cmdLine = sourceFileInfo.getCommand();
+ if (cmdLine == null) {
+ cmdLine = String.join(" ", sourceFileInfo.getArguments()); //$NON-NLS-1$
+ }
+ if (file != null && !file.isEmpty() && cmdLine != null && !cmdLine.isEmpty()) {
+ ParserDetection.ParserDetectionResult pdr = fastDetermineDetector(cmdLine);
+ if (pdr != null) {
+ // found a matching command-line parser
+ final IToolCommandlineParser parser = pdr.getDetectorWithMethod().getToolDetectionParticipant()
+ .getParser();
+ // cwdStr is the absolute working directory of the compiler in
+ // CMake-notation (fileSep are forward slashes)
+ final String cwdStr = sourceFileInfo.getDirectory();
+ IPath cwd = cwdStr != null ? Path.fromOSString(cwdStr) : new Path(""); //$NON-NLS-1$
+ IResult result = parser.processArgs(cwd, pdr.getReducedCommandLine().stripLeading());
+ // remember result together with file name
+ rememberFileResult(file, result);
+
+ final Optional<IBuiltinsDetectionBehavior> builtinDetection = parser.getIBuiltinsDetectionBehavior();
+ if (builtinDetection.isPresent()) {
+ rememberBuiltinsDetection(file, builtinDetection.get(), pdr.getCommandLine().getCommand(),
+ result.getBuiltinDetectionArgs());
+ }
+ } else {
+ // no matching parser found
+
+ // complain only once if no cmdline parser for the tool is known (fortran,
+ // assembler, etc)
+ int idx = cmdLine.indexOf(' ');
+ String unkownMarker = (idx != -1 ? cmdLine.substring(0, idx) : cmdLine)
+ + FilenameUtils.getExtension(file);
+ if (knownUnsupportedTools.contains(unkownMarker)) {
+ return;
+ }
+ knownUnsupportedTools.add(unkownMarker);
+
+ final String msg = String.format(Messages.CompileCommandsJsonParser_errmsg_no_parser_for_commandline,
+ cmdLine, WORKBENCH_WILL_NOT_KNOW_ALL_MSG);
+ createMarker(jsonFile, msg);
+ }
+ return;
+ }
+ // unrecognized entry, skipping
+ final String msg = String.format(Messages.CompileCommandsJsonParser_errmsg_unexpected_json, jsonFile,
+ WORKBENCH_WILL_NOT_KNOW_ALL_MSG);
+ createMarker(jsonFile, msg);
+ }
+
+ /** Runs detection of compiler built-ins if supported and notifies the
+ * {@code ISourceFileInfoConsumer} that was specified in the constructor for each source file.
+ *
+ * @param monitor
+ * @throws CoreException
+ */
+ private void detectBuiltins(IProgressMonitor monitor) throws CoreException {
+ if (builtinDetectorsToRun.isEmpty()) {
+ // compiler does not support built-in detection:
+ // just feed the paths and defines with the file name to the indexer..
+ for (Entry<String, IRawSourceFileInfo> fileResultPair : fileResults.entrySet()) {
+ String sourceFileName = fileResultPair.getKey();
+ IRawSourceFileInfo fileResult = fileResultPair.getValue();
+ parseRequest.getSourceFileInfoConsumer().acceptSourceFileInfo(sourceFileName,
+ fileResult.getSystemIncludePaths(), fileResult.getDefines(), fileResult.getIncludePaths(),
+ fileResult.getMacroFiles(), fileResult.getIncludeFiles());
+ }
+ } else {
+ // run detection of compiler built-ins...
+ monitor.setTaskName(Messages.CompileCommandsJsonParser_msg_detecting_builtins);
+
+ final IFile jsonFile = parseRequest.getFile();
+ final IContainer buildRootFolder = jsonFile.getParent();
+
+ java.nio.file.Path buildDir = java.nio.file.Path.of(buildRootFolder.getLocationURI());
+ // run each built-in detector and collect the results..
+ Map<String, IRawSourceFileInfo> builtinDetectorsResults = new HashMap<>();
+ for (Entry<String, CompilerBuiltinsDetector> entry : builtinDetectorsToRun.entrySet()) {
+ IRawSourceFileInfo result = entry.getValue().detectBuiltins(jsonFile.getProject(), buildDir,
+ parseRequest.getLauncher(), parseRequest.getConsole(), monitor);
+ // store detector key with result
+ builtinDetectorsResults.put(entry.getKey(), result);
+ }
+ // all built-in detectors have been run at this point, reduce memory footprint
+ builtinDetectorsToRun.clear();
+
+ // most of the time we get different String objects for different source files
+ // that have the same sequence of characters. So reduce the number of String
+ // objects by pooling them..
+ Map<String, String> strPool = new HashMap<>();
+ Function<String, String> stringPooler = v -> {
+ String old = strPool.putIfAbsent(v, v);
+ return old == null ? v : old;
+ };
+
+ // merge built-in results with source file results
+ for (Entry<String, String> link : fileToBuiltinDetectorLinks.entrySet()) {
+ String sourceFileName = link.getKey();
+ IRawSourceFileInfo fileResult = fileResults.get(sourceFileName);
+ IRawSourceFileInfo builtinDetectorsResult = builtinDetectorsResults.get(link.getValue());
+ mergeResultsForFile(stringPooler, sourceFileName, fileResult, builtinDetectorsResult);
+ }
+ }
+ }
+
+ /**
+ * Merges preprocessor symbols and macros for a source file with compiler
+ * built-in preprocessor symbols and macros and passes them to the
+ * {@code ISourceFileInfoConsumer} that was specified in the constructor.
+ *
+ * @param fileResult source file preprocessor symbols and macros
+ * @param builtinDetectorsResult compiler built-in preprocessor symbols and
+ * macros
+ * @param stringPooler a function that returns a String from a pool
+ * for a given String
+ * @param sourceFileName the name of the source file
+ */
+ private void mergeResultsForFile(Function<String, String> stringPooler, String sourceFileName,
+ IRawSourceFileInfo fileResult, IRawSourceFileInfo builtinDetectorsResult) {
+ /*
+ * Handling of -U and -D is ambivalent here. - The GCC man page states: '-U name
+ * Cancel any previous definition of name, either built in or provided with a -D
+ * option.' - The POSIX c99 man page states: '-U name Remove any initial
+ * definition of name.' We implement handling of defines according to GCC here.
+ */
+ Map<String, String> builtinDefines = new HashMap<>(builtinDetectorsResult.getDefines());
+ for (String name : fileResult.getUndefines()) {
+ String value;
+ if ((value = builtinDefines.remove(name)) != null) {
+ if (DEBUG_ENTRIES)
+ System.out.printf(" Removed define: %s=%s%n", name, value); //$NON-NLS-1$
+ }
+ }
+
+ Map<String, String> effectiveDefines = Stream
+ .concat(builtinDefines.entrySet().stream(), fileResult.getDefines().entrySet().stream())
+ .collect(Collectors.toMap(stringPooler.compose(Map.Entry::getKey),
+ stringPooler.compose(Map.Entry::getValue), (e1, e2) -> e1));
+ List<String> includePaths = Stream
+ .concat(fileResult.getIncludePaths().stream(), builtinDetectorsResult.getIncludePaths().stream())
+ .map(stringPooler).collect(Collectors.toList());
+ List<String> systemIncludePaths = Stream
+ .concat(fileResult.getSystemIncludePaths().stream(),
+ builtinDetectorsResult.getSystemIncludePaths().stream())
+ .map(stringPooler).collect(Collectors.toList());
+ List<String> macroFiles = fileResult.getMacroFiles();
+ List<String> includeFiles = fileResult.getIncludeFiles();
+
+ // feed the paths and defines with the file name to the indexer..
+ parseRequest.getSourceFileInfoConsumer().acceptSourceFileInfo(sourceFileName, systemIncludePaths,
+ effectiveDefines, includePaths, macroFiles, includeFiles);
+ }
+
+ private static void createMarker(IResource rc, String message) throws CoreException {
+ IMarker marker = rc.createMarker(MARKER_ID);
+ marker.setAttribute(IMarker.SEVERITY, IMarker.SEVERITY_WARNING);
+ marker.setAttribute(IMarker.MESSAGE, message);
+ marker.setAttribute(IMarker.LOCATION, CompileCommandsJsonParser.class.getName());
+ }
+
+ /**
+ * Determines the parser detector that can parse the specified command-line.<br>
+ * Tries to be fast: That is, it tries the last known working detector first and
+ * will perform expensive detection required under windows only if needed.
+ *
+ * @param line the command line to process
+ *
+ * @return {@code null} if none of the detectors matched the tool name in the
+ * specified command-line string. Otherwise, if the tool name matches, a
+ * {@code ParserDetectionResult} holding the de-composed command-line is
+ * returned.
+ */
+ private ParserDetectionResult fastDetermineDetector(String line) {
+ final IParserPreferences prefs = prefsAccess.getWorkspacePreferences();
+ // try last known matching detector first...
+ if (lastDetector != null) {
+ Optional<DefaultToolDetectionParticipant.MatchResult> matchResult = Optional.empty();
+ final IToolDetectionParticipant detector = lastDetector.getToolDetectionParticipant();
+ switch (lastDetector.getHow()) {
+ case BASENAME:
+ matchResult = detector.basenameMatches(line, lastDetector.isMatchBackslash());
+ break;
+ case WITH_EXTENSION:
+ matchResult = detector.basenameWithExtensionMatches(line, lastDetector.isMatchBackslash());
+ break;
+ case WITH_VERSION:
+ if (prefs.getTryVersionSuffix()) {
+ matchResult = detector.basenameWithVersionMatches(line, lastDetector.isMatchBackslash(),
+ prefs.getVersionSuffixPattern());
+ }
+ break;
+ case WITH_VERSION_EXTENSION:
+ if (prefs.getTryVersionSuffix()) {
+ matchResult = detector.basenameWithVersionAndExtensionMatches(line, lastDetector.isMatchBackslash(),
+ prefs.getVersionSuffixPattern());
+ }
+ break;
+ default:
+ break;
+ }
+ if (matchResult.isPresent()) {
+ return new ParserDetection.ParserDetectionResult(lastDetector, matchResult.get());
+ } else {
+ lastDetector = null; // invalidate last working detector
+ }
+ }
+
+ // no working detector found, determine a new one...
+ String versionPattern = prefs.getTryVersionSuffix() ? prefs.getVersionSuffixPattern() : null;
+ ParserDetection.ParserDetectionResult result = ParserDetection.determineDetector(line, versionPattern,
+ File.separatorChar == '\\');
+ if (result != null) {
+ // cache last working detector
+ lastDetector = result.getDetectorWithMethod();
+ }
+ return result;
+ }
+
+ /**
+ * Parses the {@code compile_commands.json} file in the build directory of the
+ * build configuration if necessary and generates indexer information. If the JSON file did not change since the last invocation
+ * of this method on the same build configuration, parsing of the file will be skipped; that is:
+ * Method {@link ISourceFileInfoConsumer#accept()} is not invoked.
+ * @param monitor the job's progress monitor
+ *
+ * @return {@code true} if the {@code compile_commands.json} file did change
+ * since the last invocation of this method, otherwise {@code false}. If
+ * {@code true}, new scanner information was detected and the CDT
+ * indexer should be notified.
+ * @throws CoreException
+ */
+ public boolean parse(IProgressMonitor monitor) throws CoreException {
+ long start = 0;
+ fileResults = new HashMap<>();
+ builtinDetectorsToRun = new HashMap<>();
+ fileToBuiltinDetectorLinks = new HashMap<>();
+
+ try {
+ if (DEBUG_TIME) {
+ System.out.printf("Parsing file '%s' ...%n", //$NON-NLS-1$
+ parseRequest.getFile().getLocationURI().getPath());
+ start = System.currentTimeMillis();
+ }
+ return processJsonFile(monitor);
+ } finally {
+ parseRequest.getSourceFileInfoConsumer().shutdown();
+ if (DEBUG_TIME) {
+ long end = System.currentTimeMillis();
+ System.out.printf("Parsed file '%s' in %dms%n", //$NON-NLS-1$
+ parseRequest.getFile().getLocationURI().getPath(), end - start);
+ }
+ // clean up
+ builtinDetectorsToRun = null;
+ fileResults = null;
+ fileToBuiltinDetectorLinks = null;
+ }
+ }
+
+ /**
+ * Creates a Map-key suitable to minimize the set of CompilerBuiltinsDetector to
+ * run.
+ *
+ * @param compilerCommand the command name of the compiler
+ * @param builtinDetectionArgs the compiler arguments from the command-line that
+ * affect built-in detection. For the GNU compilers,
+ * these are options like {@code --sysroot} and
+ * options that specify the language's standard
+ * ({@code -std=c++17}.
+ * @param sourceFileExtension the extension of the source file name
+ * @return a Map-key suitable to minimize the set of CompilerBuiltinsDetector to
+ * run
+ */
+ @SuppressWarnings("nls")
+ private static String makeBuiltinsDetectorKey(String compilerCommand, List<String> builtinDetectionArgs,
+ String sourceFileExtension) {
+ switch (sourceFileExtension) {
+ case "C":
+ case "cc":
+ case "cpp":
+ case "CPP":
+ case "cp":
+ case "cxx":
+ case "c++":
+ // make sure we run built-ins detection only once for C++ files..
+ sourceFileExtension = "cpp";
+ break;
+ }
+ return compilerCommand + "#" + sourceFileExtension + "#"
+ // make sure we run the compiler for built-ins detection for each set of args
+ // that affect built-ins detection..
+ + String.join(" ", builtinDetectionArgs);
+ }
+
+ /**
+ * @param file
+ * @param result
+ */
+ private void rememberFileResult(String sourceFileName, IRawSourceFileInfo result) {
+ fileResults.put(sourceFileName, result);
+ }
+
+ /**
+ * @param sourceFileName the name of the source file
+ * @param compilerCommand the command name of the compiler
+ * @param builtinDetectionArgs the compiler arguments from the command-line that
+ * affect built-in detection. For the GNU compilers,
+ * these are options like {@code --sysroot} and
+ * options that specify the language's standard
+ * ({@code -std=c++17}.
+ */
+ private void rememberBuiltinsDetection(String sourceFileName, IBuiltinsDetectionBehavior builtinsDetectionBehavior,
+ String compilerCommand, List<String> builtinDetectionArgs) {
+ String extension = FilenameUtils.getExtension(sourceFileName);
+ String key = makeBuiltinsDetectorKey(compilerCommand, builtinDetectionArgs, extension);
+ if (!builtinDetectorsToRun.containsKey(key)) {
+ CompilerBuiltinsDetector detector = new CompilerBuiltinsDetector(builtinsDetectionBehavior, compilerCommand,
+ builtinDetectionArgs, extension);
+ builtinDetectorsToRun.put(key, detector);
+ }
+ // remember the built-ins detector for the source file
+ fileToBuiltinDetectorLinks.put(sourceFileName, key);
+ }
+
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/IParserPreferences.java b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/IParserPreferences.java
new file mode 100644
index 00000000000..e5b44fcfffe
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/IParserPreferences.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Martin Weber.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.jsoncdb.core;
+
+/**
+ * Preferences to configure the {@code compile_commands.json} parser.
+ *
+ * @author weber
+ */
+public interface IParserPreferences {
+ /** Gets whether to also try a version suffix to detect a compiler. */
+ boolean getTryVersionSuffix();
+
+ /** Sets whether to also try a version suffix to detect a compiler. */
+ void setTryVersionSuffix(boolean tryVersionSuffix);
+
+ /** Sets the version suffix to detect a compiler. This is interpreted as a regular expression pattern. */
+ String getVersionSuffixPattern();
+
+ /** Sets the version suffix to detect a compiler.
+ *
+ * @param versionSuffixPattern The version suffix as a regular expression pattern
+ */
+ void setVersionSuffixPattern(String versionSuffixPattern);
+
+ /** Gets whether to allocate a console showing the output of compiler built-ins detection. */
+ boolean getAllocateConsole();
+
+ /** Sets whether to allocate a console showing the output of compiler built-ins detection. */
+ void setAllocateConsole(boolean allocateConsole);
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/IParserPreferencesAccess.java b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/IParserPreferencesAccess.java
new file mode 100644
index 00000000000..b0fd225a43e
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/IParserPreferencesAccess.java
@@ -0,0 +1,33 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Martin Weber.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.jsoncdb.core;
+
+/**
+ * Provides access to the {@code compile_commands.json} parser preferences and its preference metadata.<br>
+ *
+ * A concrete implementation object of this interface can be retrieved through the OSGI service feature.
+ *
+ * @author weber
+ */
+public interface IParserPreferencesAccess {
+ /**
+ * Gets the workspace {@code compile_commands.json} parser preferences.
+ */
+ IParserPreferences getWorkspacePreferences();
+
+ /**
+ * Gets the metadata for the parser preferences to be used in UI.
+ *
+ * @return the parser option metadata
+ */
+ IParserPreferencesMetadata metadata();
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/IParserPreferencesMetadata.java b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/IParserPreferencesMetadata.java
new file mode 100644
index 00000000000..9f9c19204f9
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/IParserPreferencesMetadata.java
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Martin Weber.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.jsoncdb.core;
+
+import org.eclipse.core.runtime.preferences.PreferenceMetadata;
+
+/**
+ * The metadata for options to configure the {@code compile_commands.json} parser.
+ *
+ * @author weber
+ */
+public interface IParserPreferencesMetadata {
+ /**
+ * Returns the metadata for the {@link IParserPreferences#getTryVersionSuffix()} preference.
+ *
+ * @return the metadata for the preference option, never {@null}
+ */
+ PreferenceMetadata<Boolean> tryVersionSuffix();
+
+ /**
+ * Returns the metadata for the {@link IParserPreferences#getVersionSuffixPattern()} preference.
+ *
+ * @return the metadata for the preference option, never {@null}
+ */
+ PreferenceMetadata<String> versionSuffixPattern();
+
+ /**
+ * Returns the metadata for the {@link IParserPreferences#getAllocateConsole()} preference.
+ *
+ * @return the metadata for the preference option, never {@null}
+ */
+ PreferenceMetadata<Boolean> allocateConsole();
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/ISourceFileInfoConsumer.java b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/ISourceFileInfoConsumer.java
new file mode 100644
index 00000000000..153c6087cff
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/ISourceFileInfoConsumer.java
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Martin Weber.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.jsoncdb.core;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Receives the indexer relevant information for each source file while a {@link
+ * CompileCommandsJsonParser#parse() compile_commands.json file is parsed}.
+ *
+ * @see CompileCommandsJsonParser
+ *
+ * @author weber
+ */
+public interface ISourceFileInfoConsumer {
+ // Cmake writes filenames with forward slashes (/) even if it runs on windows.
+ // OTOH, IScannerInfoProvider requests info for IResourceS.
+ // Somewhere in the calling sequence, the filenames have to be converted/mapped to IResource. Conversion *could*
+ // be done in CompileCommandsJsonParser, but when I think of builds running
+ // in a Linux-Docker-Container under windows, it might be better to do the conversion
+ // on the ISourceFileInfoConsumer side which has more information on the build setup.
+
+ /** Adds indexer relevant information for a single source file.
+ *
+ * @param sourceFileName
+ * the name of the source file, in CMake notation. Note that on windows, CMake writes filenames with forward
+ * slashes (/) such as {@code H://path//to//source.c}.
+ * @param systemIncludePaths
+ * the system include paths ({@code #include <...>}) used to compile the given source file
+ * @param definedSymbols
+ * the preprocessor macros used to compile the given source file
+ * @param includePaths
+ * the local include paths ({@code #include "..."}) used to compile the given source file
+ * @param macroFiles
+ * the names of files that will be pre-processed by the compiler before parsing the source-file in
+ * order to populate the preprocessor macro-dictionary
+ * @param includeFiles
+ * the names of files that will be pre-processed by the compiler as if
+ * an {@code #include "file"} directive appeared as the first line of the source file
+ */
+ void acceptSourceFileInfo(String sourceFileName, List<String> systemIncludePaths,
+ Map<String, String> definedSymbols, List<String> includePaths, List<String> macroFiles,
+ List<String> includeFiles);
+
+ /**
+ * Notifies this consumer that no further calls to {link {@link #acceptSourceFileInfo(String, List, Map, List)} will
+ * happen during the current parse operation.
+ */
+ void shutdown();
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/Messages.java b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/Messages.java
new file mode 100644
index 00000000000..790e06c5e4a
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/Messages.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Martin Weber.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.jsoncdb.core;
+
+import org.eclipse.osgi.util.NLS;
+
+/**
+ * @author weber
+ *
+ */
+/* package */ class Messages extends NLS {
+ private static final String BUNDLE_NAME = "org.eclipse.cdt.jsoncdb.core.messages"; //$NON-NLS-1$
+ public static String CompileCommandsJsonParser_errmsg_empty_json;
+ public static String CompileCommandsJsonParser_errmsg_file_not_found;
+ public static String CompileCommandsJsonParser_errmsg_no_parser_for_commandline;
+ public static String CompileCommandsJsonParser_errmsg_not_json;
+ public static String CompileCommandsJsonParser_errmsg_read_error;
+ public static String CompileCommandsJsonParser_errmsg_unexpected_json;
+ public static String CompileCommandsJsonParser_msg_detecting_builtins;
+ public static String CompileCommandsJsonParser_msg_processing;
+ public static String CompileCommandsJsonParser_MSG_WORKBENCH_WILL_NOT_KNOW;
+ static {
+ // initialize resource bundle
+ NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+ }
+
+ private Messages() {
+ }
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/ParseRequest.java b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/ParseRequest.java
new file mode 100644
index 00000000000..59b64c031c9
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/ParseRequest.java
@@ -0,0 +1,76 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Martin Weber.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.jsoncdb.core;
+
+import java.util.Objects;
+
+import org.eclipse.cdt.core.ICommandLauncher;
+import org.eclipse.cdt.core.resources.IConsole;
+import org.eclipse.core.resources.IFile;
+
+/** Holds the arguments used to create a {@link CompileCommandsJsonParser}.
+ *
+ * @author weber
+ */
+public final class ParseRequest {
+ private final IFile compileCommandsJson;
+ private final ISourceFileInfoConsumer indexerInfoConsumer;
+ private final ICommandLauncher launcher;
+ private final IConsole console;
+
+ /** Creates a new ParseRequest object.
+ *
+ * @param compileCommandsJsonFile the file to parse
+ * @param indexerInfoConsumer the object that receives the indexer relevant
+ * information for each source file
+ * @param launcher the launcher to run the compiler for built-ins detection.
+ * Should be capable to run in docker container, if build in
+ * container is configured for the project.
+ * @param console the console to print the compiler output during built-ins
+ * detection to or <code>null</code> if no console output is requested.
+ * Ignored if workspace preferences indicate that no console output is wanted.
+ */
+ public ParseRequest(IFile compileCommandsJsonFile, ISourceFileInfoConsumer indexerInfoConsumer,
+ ICommandLauncher launcher, IConsole console) {
+ this.compileCommandsJson = Objects.requireNonNull(compileCommandsJsonFile, "compileCommandsJsonFile"); //$NON-NLS-1$
+ this.indexerInfoConsumer = Objects.requireNonNull(indexerInfoConsumer, "indexerInfoConsumer"); //$NON-NLS-1$
+ this.launcher = Objects.requireNonNull(launcher, "launcher"); //$NON-NLS-1$
+ this.console = console;
+ }
+
+ /** Gets the 'compile_commands.json' file to parse.
+ */
+ public IFile getFile() {
+ return compileCommandsJson;
+ }
+
+ /** Gets the object that receives the indexer relevant
+ * information for each source file
+ */
+ public ISourceFileInfoConsumer getSourceFileInfoConsumer() {
+ return indexerInfoConsumer;
+ }
+
+ /** Gets the launcher to run the compiler for built-ins detection.
+ */
+ public ICommandLauncher getLauncher() {
+ return launcher;
+ }
+
+ /** Gets the console to print the compiler output during built-ins detection to.
+ *
+ * @return the console or <code>null</code> if no console output is requested.
+ */
+ public IConsole getConsole() {
+ return console;
+ }
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/Messages.java b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/Messages.java
new file mode 100644
index 00000000000..bb49ea8d29f
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/Messages.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Martin Weber.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.jsoncdb.core.internal;
+
+import org.eclipse.osgi.util.NLS;
+
+/**
+ * @author weber
+ *
+ */
+class Messages extends NLS {
+ private static final String BUNDLE_NAME = "org.eclipse.cdt.jsoncdb.core.internal.messages"; //$NON-NLS-1$
+ public static String ParserPreferencesAccess_e_get_preferences;
+ public static String ParserPreferencesMetadata_label_console;
+ public static String ParserPreferencesMetadata_label_suffix;
+ public static String ParserPreferencesMetadata_label_try_suffix;
+ public static String ParserPreferencesMetadata_ttip_suffix;
+ public static String ParserPreferencesMetadata_ttip_try_suffix;
+ static {
+ // initialize resource bundle
+ NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+ }
+
+ private Messages() {
+ }
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/ParseContext.java b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/ParseContext.java
new file mode 100644
index 00000000000..0db1ccdd35d
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/ParseContext.java
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ * Copyright (c) 2019-2020 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.jsoncdb.core.internal;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.cdt.jsoncdb.core.internal.builtins.RawSourceFileInfo;
+import org.eclipse.cdt.jsoncdb.core.participant.IArglet;
+import org.eclipse.cdt.jsoncdb.core.participant.IToolCommandlineParser;
+
+/**
+ * Default implementation of IArgumentCollector.
+ *
+ * @author Martin Weber
+ */
+public final class ParseContext extends RawSourceFileInfo
+ implements IArglet.IArgumentCollector, IToolCommandlineParser.IResult {
+ private final List<String> args = new ArrayList<>();
+
+ @Override
+ public void addBuiltinDetectionArgument(String argument) {
+ args.add(argument);
+ }
+
+ @Override
+ public List<String> getBuiltinDetectionArgs() {
+ return args;
+ }
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/ParserDetection.java b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/ParserDetection.java
new file mode 100644
index 00000000000..ec9d1d17eba
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/ParserDetection.java
@@ -0,0 +1,423 @@
+/*******************************************************************************
+ * Copyright (c) 2017-2020 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.jsoncdb.core.internal;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Optional;
+import java.util.function.Consumer;
+
+import org.eclipse.cdt.jsoncdb.core.internal.builtins.GccBuiltinDetectionBehavior;
+import org.eclipse.cdt.jsoncdb.core.internal.builtins.MaybeGccBuiltinDetectionBehavior;
+import org.eclipse.cdt.jsoncdb.core.participant.Arglets;
+import org.eclipse.cdt.jsoncdb.core.participant.DefaultToolCommandlineParser;
+import org.eclipse.cdt.jsoncdb.core.participant.DefaultToolDetectionParticipant;
+import org.eclipse.cdt.jsoncdb.core.participant.IArglet;
+import org.eclipse.cdt.jsoncdb.core.participant.IToolCommandlineParser;
+import org.eclipse.cdt.jsoncdb.core.participant.IToolDetectionParticipant;
+import org.eclipse.cdt.jsoncdb.core.participant.IToolDetectionParticipant.MatchResult;
+import org.eclipse.cdt.jsoncdb.core.participant.ResponseFileArglets;
+import org.eclipse.cdt.jsoncdb.core.participant.builtins.IBuiltinsDetectionBehavior;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.ILog;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Status;
+
+/**
+ * Utility classes and methods to detect a parser for a compiler given on a
+ * command-line string.
+ *
+ * @author Martin Weber
+ *
+ */
+@SuppressWarnings("nls")
+public final class ParserDetection {
+ private static final ILog log = Plugin.getDefault().getLog();
+ private static final boolean DEBUG_PARTCIPANT_DETECTION = Boolean
+ .parseBoolean(Platform.getDebugOption(Plugin.PLUGIN_ID + "/debug/participant"));
+
+ /**
+ * tool detectors and their tool option parsers for each tool of interest that
+ * takes part in the current build. The Matcher detects whether a command line
+ * is an invocation of the tool.
+ */
+ private static List<IToolDetectionParticipant> parserDetectors;
+
+ private static synchronized void init() {
+ if (parserDetectors == null) {
+ parserDetectors = new ArrayList<>(22);
+
+ /** Names of known tools along with their command line argument parsers */
+ final IArglet[] gcc_args = { new Arglets.IncludePath_C_POSIX(), new Arglets.MacroDefine_C_POSIX(),
+ new Arglets.MacroUndefine_C_POSIX(),
+ // not defined by POSIX, but does not harm..
+ new Arglets.SystemIncludePath_C(), new Arglets.LangStd_GCC(), new Arglets.Sysroot_GCC(),
+ new Arglets.IncludeFile_GCC(), new Arglets.MacrosFile_GCC() };
+
+ IBuiltinsDetectionBehavior btbGccMaybee = new MaybeGccBuiltinDetectionBehavior();
+ IBuiltinsDetectionBehavior btbGcc = new GccBuiltinDetectionBehavior();
+
+ // POSIX compatible C compilers =================================
+ {
+ final IToolCommandlineParser cc = new DefaultToolCommandlineParser(new ResponseFileArglets.At(),
+ btbGccMaybee, gcc_args);
+ parserDetectors.add(new DefaultToolDetectionParticipant("cc", true, "exe", cc));
+ }
+ // POSIX compatible C++ compilers ===============================
+ {
+ final IToolCommandlineParser cxx = new DefaultToolCommandlineParser(new ResponseFileArglets.At(),
+ btbGccMaybee, gcc_args);
+ parserDetectors.add(new DefaultToolDetectionParticipant("c\\+\\+", true, "exe", cxx));
+ }
+
+ // GNU C compatible compilers ====
+ {
+ final IToolCommandlineParser gcc = new DefaultToolCommandlineParser(new ResponseFileArglets.At(),
+ btbGcc, gcc_args);
+ parserDetectors.add(new DefaultToolDetectionParticipant("gcc", true, "exe", gcc));
+ // cross compilers, e.g. arm-none-eabi-gcc ====
+ parserDetectors.add(new DefaultToolDetectionParticipant("\\S+?-gcc", true, "exe", gcc));
+ }
+ // GNU C++ compatible compilers ====
+ {
+ final IToolCommandlineParser gxx = new DefaultToolCommandlineParser(new ResponseFileArglets.At(),
+ btbGcc, gcc_args);
+ parserDetectors.add(new DefaultToolDetectionParticipant("g\\+\\+", true, "exe", gxx));
+ // cross compilers, e.g. arm-none-eabi-g++ ====
+ parserDetectors.add(new DefaultToolDetectionParticipant("\\S+?-g\\+\\+", true, "exe", gxx));
+ }
+ // Clang C & C++ Compiler ====
+ {
+ /** Names of known tools along with their command line argument parsers for clang */
+ final IArglet[] clang_args = { new Arglets.IncludePath_C_POSIX(), new Arglets.MacroDefine_C_POSIX(),
+ new Arglets.MacroUndefine_C_POSIX(),
+ // not defined by POSIX, but does not harm..
+ new Arglets.SystemIncludePath_C(), new Arglets.LangStd_GCC(), new Arglets.Sysroot_GCC(),
+ new Arglets.IncludeFile_GCC(), new Arglets.MacrosFile_GCC(),
+ // Clang only
+ new Arglets.Target_Clang() };
+
+ final IToolCommandlineParser clang = new DefaultToolCommandlineParser(new ResponseFileArglets.At(),
+ btbGcc, clang_args);
+ parserDetectors.add(new DefaultToolDetectionParticipant("clang", true, "exe", clang));
+ final IToolCommandlineParser clangxx = new DefaultToolCommandlineParser(new ResponseFileArglets.At(),
+ btbGcc, clang_args);
+ parserDetectors.add(new DefaultToolDetectionParticipant("clang\\+\\+", true, "exe", clangxx));
+ }
+ {
+ // cross compilers, e.g. arm-none-eabi-c++ ====
+ final IToolCommandlineParser cxx = new DefaultToolCommandlineParser(new ResponseFileArglets.At(),
+ btbGccMaybee, gcc_args);
+ parserDetectors.add(new DefaultToolDetectionParticipant("\\S+?-c\\+\\+", true, "exe", cxx));
+ }
+
+ // compilers from extension points
+ loadExtentionsSorted(parserDetectors::add);
+ }
+ }
+
+ /**
+ * @param consumer consumes the newly loaded IToolDetectionParticipant objects
+ */
+ private static void loadExtentionsSorted(Consumer<? super IToolDetectionParticipant> consumer) {
+ IConfigurationElement[] elements = Platform.getExtensionRegistry()
+ .getConfigurationElementsFor("org.eclipse.cdt.jsoncdb.core.detectionParticipant");
+ Map<IToolDetectionParticipant, Integer> sortMap = new HashMap<>();
+ for (IConfigurationElement e : elements) {
+ try {
+ Object obj = e.createExecutableExtension("class");
+ String attr = e.getAttribute("order");
+ Integer order = Integer.valueOf(Integer.MAX_VALUE);
+ try {
+ order = Integer.parseUnsignedInt(Optional.ofNullable(attr).orElse("100000"));
+ order = Integer.max(10000, order);
+ } catch (NumberFormatException takeMax) {
+ }
+ if (obj instanceof IToolDetectionParticipant) {
+ sortMap.put((IToolDetectionParticipant) obj, order);
+ }
+ } catch (CoreException ex) {
+ log.log(new Status(IStatus.ERROR, Plugin.PLUGIN_ID, e.getNamespaceIdentifier(), ex));
+ }
+ }
+ // sort by order and add to list
+ sortMap.entrySet().stream().sorted(Map.Entry.comparingByValue()).map(Map.Entry::getKey).forEach(consumer);
+ }
+
+ /** Just static methods */
+ private ParserDetection() {
+ }
+
+ /**
+ * Determines the parser detector that can parse the specified command-line.
+ *
+ * @param line the command line to process
+ * @param versionSuffixRegex the regular expression to match a version suffix
+ * in the compiler name or {@code null} to not try to
+ * detect the compiler with a version suffix
+ * @param tryWindowsDetectors whether to also try the detectors for ms windows
+ * OS
+ *
+ * @return {@code null} if none of the detectors matches the tool name in the
+ * specified command-line string. Otherwise, if the tool name matches, a
+ * {@code ParserDetectionResult} holding the remaining command-line
+ * string (without the portion that matched) is returned.
+ */
+ public static ParserDetectionResult determineDetector(String line, String versionSuffixRegex,
+ boolean tryWindowsDetectors) {
+ ParserDetectionResult result;
+ if (DEBUG_PARTCIPANT_DETECTION) {
+ System.out.printf("> Command-line '%s'%n", line);
+ System.out.printf("> Looking up detector for command '%s ...'%n",
+ line.substring(0, Math.min(40, line.length())));
+ }
+ // try default detectors
+ result = determineDetector0(line, versionSuffixRegex, false);
+ if (result == null && tryWindowsDetectors) {
+ // try with backslash as file separator on windows
+ result = determineDetector0(line, versionSuffixRegex, true);
+ if (result == null) {
+ // try workaround for windows short file names
+ final String shortPathExpanded = expandShortFileName(line);
+ result = determineDetector0(shortPathExpanded, versionSuffixRegex, false);
+ if (result == null) {
+ // try with backslash as file separator on windows
+ result = determineDetector0(shortPathExpanded, versionSuffixRegex, true);
+ }
+ }
+ }
+ if (result != null) {
+ if (DEBUG_PARTCIPANT_DETECTION)
+ System.out.printf("< Found detector for command '%s': %s (%s)%n", result.getCommandLine().getCommand(),
+ result.getDetectorWithMethod().getToolDetectionParticipant().getParser().getClass()
+ .getSimpleName(),
+ result.getDetectorWithMethod().getHow());
+ }
+ return result;
+ }
+
+ /**
+ * Determines a C-compiler-command line parser that is able to parse the
+ * relevant arguments in the specified command line.
+ *
+ * @param commandLine the command line to process
+ * @param versionSuffixRegex the regular expression to match a version suffix in
+ * the compiler name or {@code null} to not try to
+ * detect the compiler with a version suffix
+ * @param matchBackslash whether to match on file system paths with
+ * backslashes in the compiler argument or to match an
+ * paths with forward slashes
+ * @return {@code null} if none of the detectors matches the tool name in the
+ * specified command-line string. Otherwise, if the tool name matches, a
+ * {@code ParserDetectionResult} holding the de-compose command-line is
+ * returned.
+ */
+ private static ParserDetectionResult determineDetector0(String commandLine, String versionSuffixRegex,
+ boolean matchBackslash) {
+ init();
+
+ Optional<DefaultToolDetectionParticipant.MatchResult> cmdline;
+ // try basenames
+ for (IToolDetectionParticipant pd : parserDetectors) {
+ if (DEBUG_PARTCIPANT_DETECTION)
+ System.out.printf(" Trying participant %s (%s)%n", pd, DetectorWithMethod.DetectionMethod.BASENAME);
+ if ((cmdline = pd.basenameMatches(commandLine, matchBackslash)).isPresent()) {
+ return new ParserDetectionResult(
+ new DetectorWithMethod(pd, DetectorWithMethod.DetectionMethod.BASENAME, matchBackslash),
+ cmdline.get());
+ }
+ }
+ if (versionSuffixRegex != null) {
+ // try with version pattern
+ for (IToolDetectionParticipant pd : parserDetectors) {
+ if (DEBUG_PARTCIPANT_DETECTION)
+ System.out.printf(" Trying participant %s (%s)%n", pd,
+ DetectorWithMethod.DetectionMethod.WITH_VERSION);
+ if ((cmdline = pd.basenameWithVersionMatches(commandLine, matchBackslash, versionSuffixRegex))
+ .isPresent()) {
+ return new ParserDetectionResult(
+ new DetectorWithMethod(pd, DetectorWithMethod.DetectionMethod.WITH_VERSION, matchBackslash),
+ cmdline.get());
+ }
+ }
+ }
+ // try with extension
+ for (IToolDetectionParticipant pd : parserDetectors) {
+ if (DEBUG_PARTCIPANT_DETECTION)
+ System.out.printf(" Trying participant %s (%s)%n", pd,
+ DetectorWithMethod.DetectionMethod.WITH_EXTENSION);
+ if ((cmdline = pd.basenameWithExtensionMatches(commandLine, matchBackslash)).isPresent()) {
+ return new ParserDetectionResult(
+ new DetectorWithMethod(pd, DetectorWithMethod.DetectionMethod.WITH_EXTENSION, matchBackslash),
+ cmdline.get());
+ }
+ }
+ if (versionSuffixRegex != null) {
+ // try with extension and version
+ for (IToolDetectionParticipant pd : parserDetectors) {
+ if (DEBUG_PARTCIPANT_DETECTION)
+ System.out.printf(" Trying participant %s (%s)%n", pd,
+ DetectorWithMethod.DetectionMethod.WITH_VERSION_EXTENSION);
+ if ((cmdline = pd.basenameWithVersionAndExtensionMatches(commandLine, matchBackslash,
+ versionSuffixRegex)).isPresent()) {
+ return new ParserDetectionResult(new DetectorWithMethod(pd,
+ DetectorWithMethod.DetectionMethod.WITH_VERSION_EXTENSION, matchBackslash), cmdline.get());
+ }
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * Tries to convert windows short file names for the compiler executable (like
+ * {@code AVR-G_~1.EXE}) into their long representation. This is a workaround
+ * for a <a href="https://gitlab.kitware.com/cmake/cmake/issues/16138">bug in
+ * CMake under windows</a>.<br>
+ * See <a href="https://github.com/15knots/cmake4eclipse/issues/31">issue #31
+ */
+ private static String expandShortFileName(String commandLine) {
+ if (commandLine.indexOf('~', 6) == -1) {
+ // not a short file name
+ return commandLine;
+ }
+ String command;
+ StringBuilder commandLine2 = new StringBuilder();
+ // split at first space character
+ int idx = commandLine.indexOf(' ');
+ if (idx != -1) {
+ command = commandLine.substring(0, idx);
+ commandLine2.append(commandLine.substring(idx));
+ } else {
+ command = commandLine;
+ }
+ // convert to long file name and retry lookup
+ try {
+ command = new File(command).getCanonicalPath();
+ commandLine2.insert(0, command);
+ return commandLine2.toString();
+ } catch (IOException e) {
+ log.log(new Status(IStatus.ERROR, Plugin.PLUGIN_ID, command, e));
+ }
+ return commandLine;
+ }
+
+ // has public scope for unittest purposes
+ public static class DetectorWithMethod {
+ public enum DetectionMethod {
+ BASENAME, WITH_VERSION, WITH_EXTENSION, WITH_VERSION_EXTENSION;
+ }
+
+ /**
+ * the DefaultToolDetectionParticipant that matched the name of the tool on a
+ * given command-line
+ */
+ private final IToolDetectionParticipant detector;
+ /** describes the method that was used to match */
+ private final DetectionMethod how;
+ private final boolean matchBackslash;
+
+ /**
+ * @param detector the DefaultToolDetectionParticipant that matched the
+ * name of the tool on a given command-line
+ * @param how describes the method that was used to match
+ * @param matchBackslash whether the match is on file system paths with
+ * backslashes in the compiler argument or to match an
+ * paths with forward slashes
+ */
+ public DetectorWithMethod(IToolDetectionParticipant detector, DetectionMethod how, boolean matchBackslash) {
+ if (detector == null)
+ throw new NullPointerException("detector"); //$NON-NLS-1$
+ if (how == null)
+ throw new NullPointerException("how"); //$NON-NLS-1$
+ this.detector = detector;
+ this.how = how;
+ this.matchBackslash = matchBackslash;
+ }
+
+ /**
+ * Gets the DefaultToolDetectionParticipant that matched the name of the tool on
+ * a given command-line.
+ *
+ * @return the detector, never {@code null}
+ */
+ public IToolDetectionParticipant getToolDetectionParticipant() {
+ return detector;
+ }
+
+ /**
+ * Gets the method that was used to match.
+ *
+ * @return the detection method, never {@code null}
+ */
+ public DetectionMethod getHow() {
+ return how;
+ }
+
+ /**
+ * @return the matchBackslash
+ */
+ public boolean isMatchBackslash() {
+ return matchBackslash;
+ }
+
+ }
+
+ // has public scope for unittest purposes
+ public static class ParserDetectionResult {
+
+ private final DetectorWithMethod detectorWMethod;
+ private final MatchResult commandLine;
+
+ /**
+ * @param detectorWMethod the DefaultToolDetectionParticipant that matched the
+ * name of the tool on a given command-line
+ * @param commandLine the de-composed command-line, after the matcher has
+ * matched the tool name
+ */
+ public ParserDetectionResult(DetectorWithMethod detectorWMethod,
+ DefaultToolDetectionParticipant.MatchResult commandLine) {
+ this.detectorWMethod = Objects.requireNonNull(detectorWMethod, "detectorWMethod");
+ this.commandLine = Objects.requireNonNull(commandLine, "commandLine");
+ }
+
+ /**
+ * Gets the de-composed command-line.
+ */
+ public MatchResult getCommandLine() {
+ return commandLine;
+ }
+
+ /**
+ * Gets the remaining arguments of the command-line, after the matcher has
+ * matched the tool name (i.e. without the command).
+ */
+ public String getReducedCommandLine() {
+ return this.commandLine.getArguments();
+ }
+
+ /**
+ * Gets the DefaultToolDetectionParticipant that matched the name of the tool on
+ * a given command-line
+ *
+ * @return the detectorWMethod
+ */
+ public DetectorWithMethod getDetectorWithMethod() {
+ return detectorWMethod;
+ }
+ }
+
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/ParserPreferences.java b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/ParserPreferences.java
new file mode 100644
index 00000000000..d58db061875
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/ParserPreferences.java
@@ -0,0 +1,63 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Martin Weber.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.jsoncdb.core.internal;
+
+import java.util.Objects;
+
+import org.eclipse.cdt.jsoncdb.core.IParserPreferences;
+import org.eclipse.cdt.jsoncdb.core.IParserPreferencesMetadata;
+import org.eclipse.core.runtime.preferences.IPreferenceMetadataStore;
+
+/**
+ * @author weber
+ */
+final class ParserPreferences implements IParserPreferences {
+
+ private final IPreferenceMetadataStore optionStorage;
+ private final IParserPreferencesMetadata metadata;
+
+ public ParserPreferences(IPreferenceMetadataStore optionStorage, IParserPreferencesMetadata metadata) {
+ this.optionStorage = Objects.requireNonNull(optionStorage, "optionStorage"); //$NON-NLS-1$
+ this.metadata = Objects.requireNonNull(metadata, "metadata"); //$NON-NLS-1$
+ }
+
+ @Override
+ public boolean getTryVersionSuffix() {
+ return optionStorage.load(metadata.tryVersionSuffix());
+ }
+
+ @Override
+ public void setTryVersionSuffix(boolean tryVersionSuffix) {
+ optionStorage.save(tryVersionSuffix, metadata.tryVersionSuffix());
+ }
+
+ @Override
+ public String getVersionSuffixPattern() {
+ return optionStorage.load(metadata.versionSuffixPattern());
+ }
+
+ @Override
+ public void setVersionSuffixPattern(String versionSuffixPattern) {
+ Objects.requireNonNull(versionSuffixPattern);
+ optionStorage.save(versionSuffixPattern, metadata.versionSuffixPattern());
+ }
+
+ @Override
+ public boolean getAllocateConsole() {
+ return optionStorage.load(metadata.allocateConsole());
+ }
+
+ @Override
+ public void setAllocateConsole(boolean allocateConsole) {
+ optionStorage.save(allocateConsole, metadata.allocateConsole());
+ }
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/ParserPreferencesAccess.java b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/ParserPreferencesAccess.java
new file mode 100644
index 00000000000..52e96d311c7
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/ParserPreferencesAccess.java
@@ -0,0 +1,70 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Martin Weber.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.jsoncdb.core.internal;
+
+import java.util.Optional;
+
+import org.eclipse.cdt.jsoncdb.core.IParserPreferences;
+import org.eclipse.cdt.jsoncdb.core.IParserPreferencesAccess;
+import org.eclipse.cdt.jsoncdb.core.IParserPreferencesMetadata;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences;
+import org.eclipse.core.runtime.preferences.IPreferenceMetadataStore;
+import org.eclipse.core.runtime.preferences.IScopeContext;
+import org.eclipse.core.runtime.preferences.InstanceScope;
+import org.eclipse.core.runtime.preferences.OsgiPreferenceMetadataStore;
+import org.eclipse.osgi.util.NLS;
+import org.osgi.service.component.annotations.Component;
+
+/**
+ * @author weber
+ */
+@Component
+public class ParserPreferencesAccess implements IParserPreferencesAccess {
+
+ private final ParserPreferencesMetadata metadata;
+
+ public ParserPreferencesAccess() {
+ this.metadata = new ParserPreferencesMetadata();
+ }
+
+ private IPreferenceMetadataStore workspaceStorage() {
+ return new OsgiPreferenceMetadataStore(preferences(InstanceScope.INSTANCE));
+ }
+
+ @Override
+ public IParserPreferences getWorkspacePreferences() {
+ return new ParserPreferences(workspaceStorage(), metadata);
+ }
+
+ @Override
+ public IParserPreferencesMetadata metadata() {
+ return metadata;
+ }
+
+ private IEclipsePreferences preferences(IScopeContext scope) {
+ return Optional.ofNullable(scope.getNode(nodeQualifier()))//
+ .map(n -> n.node(nodePath()))//
+ .filter(IEclipsePreferences.class::isInstance)//
+ .map(IEclipsePreferences.class::cast)//
+ .orElseThrow(() -> new IllegalStateException(//
+ NLS.bind(Messages.ParserPreferencesAccess_e_get_preferences, //
+ nodeQualifier(), nodePath())));
+ }
+
+ private String nodeQualifier() {
+ return Plugin.PLUGIN_ID;
+ }
+
+ private String nodePath() {
+ return "parser"; //$NON-NLS-1$
+ }
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/ParserPreferencesMetadata.java b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/ParserPreferencesMetadata.java
new file mode 100644
index 00000000000..52b2d6fb7c7
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/ParserPreferencesMetadata.java
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Martin Weber.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.jsoncdb.core.internal;
+
+import org.eclipse.cdt.jsoncdb.core.IParserPreferencesMetadata;
+import org.eclipse.core.runtime.preferences.PreferenceMetadata;
+
+/**
+ * @author weber
+ */
+final class ParserPreferencesMetadata implements IParserPreferencesMetadata {
+
+ private final PreferenceMetadata<Boolean> tryVersionSuffixOption;
+ private final PreferenceMetadata<String> versionSuffixPatternOption;
+ private final PreferenceMetadata<Boolean> allocateConsoleOption;
+
+ public ParserPreferencesMetadata() {
+ this.tryVersionSuffixOption = new PreferenceMetadata<>(Boolean.class, "versionSuffixPatternEnabled", false, //$NON-NLS-1$
+ Messages.ParserPreferencesMetadata_label_try_suffix,
+ Messages.ParserPreferencesMetadata_ttip_try_suffix);
+ this.versionSuffixPatternOption = new PreferenceMetadata<>(String.class, "versionSuffixPattern", //$NON-NLS-1$
+ "-?\\d+(\\.\\d+)*", //$NON-NLS-1$
+ Messages.ParserPreferencesMetadata_label_suffix, Messages.ParserPreferencesMetadata_ttip_suffix);
+ this.allocateConsoleOption = new PreferenceMetadata<>(Boolean.class, "allocateConsole", false, //$NON-NLS-1$
+ Messages.ParserPreferencesMetadata_label_console);
+ }
+
+ @Override
+ public PreferenceMetadata<Boolean> tryVersionSuffix() {
+ return tryVersionSuffixOption;
+ }
+
+ @Override
+ public PreferenceMetadata<String> versionSuffixPattern() {
+ return versionSuffixPatternOption;
+ }
+
+ @Override
+ public PreferenceMetadata<Boolean> allocateConsole() {
+ return allocateConsoleOption;
+ }
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/Plugin.java b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/Plugin.java
new file mode 100644
index 00000000000..bf73b5ad06b
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/Plugin.java
@@ -0,0 +1,83 @@
+/*******************************************************************************
+ * Copyright (c) 2015-2020 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.jsoncdb.core.internal;
+
+import java.text.MessageFormat;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * @author Martin Weber
+ */
+public class Plugin extends AbstractUIPlugin {
+
+ public static final String PLUGIN_ID = "org.eclipse.cdt.jsoncdb.core"; //$NON-NLS-1$
+
+ // The shared instance.
+ private static Plugin plugin;
+
+ /**
+ * The constructor.
+ */
+ public Plugin() {
+ }
+
+ /**
+ * This method is called upon plug-in activation
+ */
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ /**
+ * This method is called when the plug-in is stopped
+ */
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ super.stop(context);
+ plugin = null;
+ }
+
+ /**
+ * Returns the shared instance.
+ */
+ public static Plugin getDefault() {
+ return plugin;
+ }
+
+ /**
+ * Returns the string from the plugin's resource bundle, or 'key' if not found.
+ *
+ * @param key the message key
+ * @return the resource bundle message
+ */
+ public static String getResourceString(String key) {
+ // ResourceBundle bundle = Plugin.getDefault().getResourceBundle();
+ // try {
+ // return bundle.getString(key);
+ // } catch (MissingResourceException e) {
+ // return key;
+ // }
+ return key;
+ }
+
+ /**
+ * Returns the string from the plugin's resource bundle, or 'key' if not found.
+ *
+ * @param key the message key
+ * @param args an array of substitution strings
+ * @return the resource bundle message
+ */
+ public static String getFormattedString(String key, String[] args) {
+ return MessageFormat.format(getResourceString(key), (Object[]) args);
+ }
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/builtins/AbstractConsole.java b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/builtins/AbstractConsole.java
new file mode 100644
index 00000000000..ead029458ed
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/builtins/AbstractConsole.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 2018 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.jsoncdb.core.internal.builtins;
+
+import org.eclipse.cdt.core.ConsoleOutputStream;
+import org.eclipse.cdt.core.resources.IConsole;
+import org.eclipse.cdt.ui.IBuildConsoleManager;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+
+/**
+ * @author Martin Weber
+ */
+public abstract class AbstractConsole implements IConsole {
+
+ private IConsole console;
+
+ /**
+ * Gets a console manager that is configured to the console`s display-name, the
+ * ID and icon.
+ *
+ * @see org.eclipse.cdt.ui.CUIPlugin#getConsoleManager(String, String)
+ */
+ protected abstract IBuildConsoleManager getConsoleManager();
+
+ @Override
+ public ConsoleOutputStream getOutputStream() throws CoreException {
+ return console.getOutputStream();
+ }
+
+ @Override
+ public ConsoleOutputStream getInfoStream() throws CoreException {
+ return console.getInfoStream();
+ }
+
+ @Override
+ public ConsoleOutputStream getErrorStream() throws CoreException {
+ return console.getErrorStream();
+ }
+
+ @Override
+ public void start(IProject project) {
+ IBuildConsoleManager consoleManager = getConsoleManager();
+ console = consoleManager.getConsole(project);
+ console.start(project);
+ }
+
+} \ No newline at end of file
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/builtins/CompilerBuiltinsDetector.java b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/builtins/CompilerBuiltinsDetector.java
new file mode 100644
index 00000000000..db4e691b050
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/builtins/CompilerBuiltinsDetector.java
@@ -0,0 +1,256 @@
+/*******************************************************************************
+ * Copyright (c) 2018-2020 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.jsoncdb.core.internal.builtins;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Objects;
+
+import org.eclipse.cdt.core.ConsoleOutputStream;
+import org.eclipse.cdt.core.ICommandLauncher;
+import org.eclipse.cdt.core.resources.IConsole;
+import org.eclipse.cdt.jsoncdb.core.IParserPreferences;
+import org.eclipse.cdt.jsoncdb.core.IParserPreferencesAccess;
+import org.eclipse.cdt.jsoncdb.core.internal.Plugin;
+import org.eclipse.cdt.jsoncdb.core.participant.IRawSourceFileInfo;
+import org.eclipse.cdt.jsoncdb.core.participant.builtins.IBuiltinsDetectionBehavior;
+import org.eclipse.cdt.jsoncdb.core.participant.builtins.IBuiltinsOutputProcessor;
+import org.eclipse.cdt.jsoncdb.core.participant.builtins.OutputSniffer;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.e4.core.contexts.EclipseContextFactory;
+import org.osgi.framework.FrameworkUtil;
+
+/**
+ * Detects preprocessor macros and include paths that are built-in to a
+ * compiler.
+ *
+ * @author Martin Weber
+ */
+public class CompilerBuiltinsDetector {
+ /** error marker ID */
+ private static final String MARKER_ID = Plugin.PLUGIN_ID + ".CompilerBuiltinsDetectorMarker"; //$NON-NLS-1$
+
+ private final String sourceFileExtension;
+ private final String command;
+ private final List<String> builtinsDetectionArgs;
+ private final IBuiltinsDetectionBehavior builtinsDetectionBehavior;
+
+ private IProject project;
+ private java.nio.file.Path buildDirectory;
+
+ /**
+ * @param builtinsDetectionBehavior how compiler built-ins are to be detected
+ * @param command the compiler command (argument # 0)
+ * @param builtinsDetectionArgs the compiler arguments from the command-line
+ * that affect built-in detection. For the GNU
+ * compilers, these are options like
+ * {@code --sysroot} and options that specify
+ * the language's standard (e.g.
+ * {@code -std=c++17}).
+ * @param sourceFileExtension the extension of the source file name
+ */
+ public CompilerBuiltinsDetector(IBuiltinsDetectionBehavior builtinsDetectionBehavior, String command,
+ List<String> builtinsDetectionArgs, String sourceFileExtension) {
+ this.sourceFileExtension = Objects.requireNonNull(sourceFileExtension, "sourceFileExtension"); //$NON-NLS-1$
+ this.builtinsDetectionBehavior = Objects.requireNonNull(builtinsDetectionBehavior, "builtinsDetectionBehavior"); //$NON-NLS-1$
+ this.command = Objects.requireNonNull(command, "command"); //$NON-NLS-1$
+ this.builtinsDetectionArgs = Objects.requireNonNull(builtinsDetectionArgs, "builtinsDetectionArgs"); //$NON-NLS-1$
+ }
+
+ /**
+ * Runs built-in detection.
+ *
+ * @param project the project
+ * @param buildDirectory the build root directory. This is the working directory of the compiler process. Temporary,
+ * but cacheable input files for the compiler are generated her also
+ * @param launcher the launcher for the compiler process
+ * @param console the console to print the compiler output to or
+ * <code>null</code> if no console output is requested.
+ * @throws CoreException
+ */
+ public IRawSourceFileInfo detectBuiltins(IProject project, java.nio.file.Path buildDirectory,
+ ICommandLauncher launcher, IConsole console, IProgressMonitor monitor) throws CoreException {
+ this.project = Objects.requireNonNull(project, "project"); //$NON-NLS-1$
+ this.buildDirectory = Objects.requireNonNull(buildDirectory, "buildDirectory"); //$NON-NLS-1$
+
+ if (monitor == null) {
+ monitor = new NullProgressMonitor();
+ }
+
+ RawSourceFileInfo result = new RawSourceFileInfo();
+
+ final List<String> argList = getCompilerArguments();
+ argList.addAll(builtinsDetectionArgs);
+
+ console = startOutputConsole(console);
+
+ launcher.setProject(project);
+ launcher.showCommand(console != null);
+ final Process proc = launcher.execute(new Path(command), argList.toArray(new String[argList.size()]), getEnvp(),
+ new Path(this.buildDirectory.toString()), monitor);
+ if (proc != null) {
+ try {
+ // Close the input of the process since we will never write to it
+ proc.getOutputStream().close();
+ } catch (IOException e) {
+ }
+ // NOTE: we need 2 of these, since the output streams are not synchronized,
+ // causing loss of the output processors' internal state
+ final IBuiltinsOutputProcessor bopOut = builtinsDetectionBehavior.createCompilerOutputProcessor();
+ final IBuiltinsOutputProcessor bopErr = builtinsDetectionBehavior.createCompilerOutputProcessor();
+ long start = System.currentTimeMillis();
+ int state = launcher.waitAndRead(
+ new OutputSniffer(bopOut, console == null ? null : console.getOutputStream(), result),
+ new OutputSniffer(bopErr, console == null ? null : console.getErrorStream(), result), monitor);
+ if (console != null) {
+ final ConsoleOutputStream cis = console.getInfoStream();
+ try {
+ cis.write(String.format(Messages.CompilerBuiltinsDetector_msg_detection_finished,
+ System.currentTimeMillis() - start).getBytes());
+ cis.write("\n".getBytes()); //$NON-NLS-1$
+ } catch (IOException ignore) {
+ }
+ }
+ if (state != ICommandLauncher.COMMAND_CANCELED) {
+ try {
+ // check exit status
+ final int exitValue = proc.exitValue();
+ if (exitValue != 0 && !builtinsDetectionBehavior.suppressErrormessage()) {
+ // compiler had errors...
+ String errMsg = String.format(Messages.CompilerBuiltinsDetector_errmsg_command_failed, command,
+ exitValue);
+ createMarker(errMsg);
+ }
+ } catch (IllegalThreadStateException e) {
+ // Bug 580045 - reused launcher race condition
+ String warnMsg = String.format(Messages.CompilerBuiltinsDetector_msg_unexpectedly_still_running,
+ command);
+
+ if (console != null) {
+ final ConsoleOutputStream cis = console.getInfoStream();
+ try {
+ cis.write(warnMsg.getBytes());
+ cis.write("\n".getBytes()); //$NON-NLS-1$
+ } catch (IOException ignore) {
+ }
+ }
+ createMarker(warnMsg);
+ Plugin.getDefault().getLog().log(Status.warning(warnMsg, e));
+ }
+ }
+ } else {
+ // process start failed
+ createMarker(launcher.getErrorMessage());
+ }
+ return result;
+ }
+
+ /**
+ * Gets the compiler-arguments corresponding to the builtinDetection.
+ */
+ private List<String> getCompilerArguments() {
+ List<String> args = new ArrayList<>();
+ args.addAll(builtinsDetectionBehavior.getBuiltinsOutputEnablingArgs());
+ String inputFile = getInputFile();
+ if (inputFile != null) {
+ args.add(inputFile);
+ }
+ return args;
+ }
+
+ /**
+ * Get environment variables from configuration as array of "var=value".
+ *
+ * @return String array of environment variables in format "var=value". Does not
+ * return {@code null}.
+ */
+ private String[] getEnvp() {
+ // On POSIX (Linux, UNIX) systems reset language variables to default (English)
+ // with UTF-8 encoding since GNU compilers can handle only UTF-8 characters.
+ // Include paths with locale characters will be handled properly regardless
+ // of the language as long as the encoding is set to UTF-8.
+ // English language is set for parser because it relies on English messages
+ // in the output of the 'gcc -v'.
+ String[] strings = {
+ // override for GNU gettext
+ "LANGUAGE" + "=en", //$NON-NLS-1$//$NON-NLS-2$
+ // for other parts of the system libraries
+ "LC_ALL" + "=C.UTF-8" }; //$NON-NLS-1$ //$NON-NLS-2$
+
+ return strings;
+ }
+
+ /**
+ * Gets a path to the source file which is the input for the compiler. The file
+ * will be created with no content in the build directory.
+ *
+ * @return the full file system path of the source file
+ */
+ private String getInputFile() {
+ String specFileName = "detect_compiler_builtins" + '.' + sourceFileExtension; //$NON-NLS-1$
+ java.nio.file.Path specFile = buildDirectory.resolve(specFileName);
+ if (!Files.exists(specFile)) {
+ try {
+ // In the typical case it is sufficient to have an empty file.
+ Files.createDirectories(specFile.getParent()); // no build ran yet, must create dirs
+ Files.createFile(specFile);
+ } catch (IOException e) {
+ Plugin.getDefault().getLog().log(new Status(IStatus.ERROR, Plugin.PLUGIN_ID, "getInputFile()", e)); //$NON-NLS-1$
+ }
+ }
+
+ return specFile.toString();
+ }
+
+ private void createMarker(String message) throws CoreException {
+ IMarker marker = project.createMarker(MARKER_ID);
+ marker.setAttribute(IMarker.SEVERITY, IMarker.SEVERITY_INFO);
+ marker.setAttribute(IMarker.MESSAGE, message);
+ }
+
+ /**
+ * Creates and starts the output console.
+ *
+ * @return CDT console or <code>null</code>
+ *
+ * @throws CoreException
+ */
+ private IConsole startOutputConsole(IConsole console) throws CoreException {
+ IParserPreferences prefs = EclipseContextFactory
+ .getServiceContext(FrameworkUtil.getBundle(getClass()).getBundleContext())
+ .get(IParserPreferencesAccess.class).getWorkspacePreferences();
+ if (console != null && prefs.getAllocateConsole()) {
+ console.start(project);
+ try {
+ final ConsoleOutputStream cis = console.getInfoStream();
+ String msg;
+ msg = String.format(Messages.CompilerBuiltinsDetector_msg_detection_start,
+ SimpleDateFormat.getTimeInstance().format(new Date()), project.getName());
+ cis.write(msg.getBytes());
+ cis.write("\n".getBytes()); //$NON-NLS-1$
+ } catch (IOException ignore) {
+ }
+ return console;
+ }
+ return null; // no console to allocate
+ }
+
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/builtins/DetectorConsole.java b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/builtins/DetectorConsole.java
new file mode 100644
index 00000000000..37b7798916a
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/builtins/DetectorConsole.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2018 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.jsoncdb.core.internal.builtins;
+
+import org.eclipse.cdt.ui.CUIPlugin;
+import org.eclipse.cdt.ui.IBuildConsoleManager;
+
+/**
+ * A console for cmake invocations.
+ *
+ * @author Martin Weber
+ */
+public class DetectorConsole extends AbstractConsole {
+
+ private static final String CONSOLE_CONTEXT_MENU_ID = "BuiltinDetectorConsole"; //$NON-NLS-1$
+
+ @Override
+ protected IBuildConsoleManager getConsoleManager() {
+ return CUIPlugin.getDefault().getConsoleManager(Messages.DetectorConsole_title, CONSOLE_CONTEXT_MENU_ID);
+ }
+
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/builtins/GccBuiltinDetectionBehavior.java b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/builtins/GccBuiltinDetectionBehavior.java
new file mode 100644
index 00000000000..30d5b71ade2
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/builtins/GccBuiltinDetectionBehavior.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.jsoncdb.core.internal.builtins;
+
+/**
+ * The {link IBuiltinsDetectionBehavior} for the GNU C and GNU C++ compiler
+ * (includes clang). This implementation is for the 'gcc' and 'g++' command.
+ *
+ * @author Martin Weber
+ */
+public class GccBuiltinDetectionBehavior extends MaybeGccBuiltinDetectionBehavior {
+ @Override
+ public boolean suppressErrormessage() {
+ // report an error, if the compiler does not understand the arguments that
+ // enable built-in detection
+ return false;
+ }
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/builtins/MaybeGccBuiltinDetectionBehavior.java b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/builtins/MaybeGccBuiltinDetectionBehavior.java
new file mode 100644
index 00000000000..f0bc88cd258
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/builtins/MaybeGccBuiltinDetectionBehavior.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2019-2020 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.jsoncdb.core.internal.builtins;
+
+import java.util.Arrays;
+import java.util.List;
+
+import org.eclipse.cdt.jsoncdb.core.participant.builtins.GccOutputProcessor;
+import org.eclipse.cdt.jsoncdb.core.participant.builtins.IBuiltinsDetectionBehavior;
+import org.eclipse.cdt.jsoncdb.core.participant.builtins.IBuiltinsOutputProcessor;
+
+/**
+ * The {link IBuiltinsDetectionBehavior} for the GNU C and GNU C++ compiler
+ * (includes clang). This implementation assumes that the 'cc' command (which is
+ * the same as any POSIX compliant compiler) actually is a GNU compiler.
+ *
+ * @author Martin Weber
+ */
+public class MaybeGccBuiltinDetectionBehavior implements IBuiltinsDetectionBehavior {
+ // -E -P -dM for macros, -Wp,-v for include paths
+ @SuppressWarnings("nls")
+ private final List<String> enablingArgs = Arrays.asList("-E", "-P", "-dM", "-Wp,-v");
+
+ @Override
+ public List<String> getBuiltinsOutputEnablingArgs() {
+ return enablingArgs;
+ }
+
+ @Override
+ public IBuiltinsOutputProcessor createCompilerOutputProcessor() {
+ return new GccOutputProcessor();
+ }
+
+ @Override
+ public boolean suppressErrormessage() {
+ // Assume 'cc' is a GNU compiler: do not report an error, if the compiler
+ // actually is
+ // a POSIX compiler that does not understand the arguments that enable built-in
+ // detection
+ return true;
+ }
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/builtins/Messages.java b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/builtins/Messages.java
new file mode 100644
index 00000000000..25b703e3ef2
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/builtins/Messages.java
@@ -0,0 +1,34 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Martin Weber.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.jsoncdb.core.internal.builtins;
+
+import org.eclipse.osgi.util.NLS;
+
+/**
+ * @author weber
+ *
+ */
+class Messages extends NLS {
+ private static final String BUNDLE_NAME = "org.eclipse.cdt.jsoncdb.core.internal.builtins.messages"; //$NON-NLS-1$
+ public static String CompilerBuiltinsDetector_errmsg_command_failed;
+ public static String CompilerBuiltinsDetector_msg_detection_finished;
+ public static String CompilerBuiltinsDetector_msg_detection_start;
+ public static String CompilerBuiltinsDetector_msg_unexpectedly_still_running;
+ public static String DetectorConsole_title;
+ static {
+ // initialize resource bundle
+ NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+ }
+
+ private Messages() {
+ }
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/builtins/RawSourceFileInfo.java b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/builtins/RawSourceFileInfo.java
new file mode 100644
index 00000000000..480861339ae
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/builtins/RawSourceFileInfo.java
@@ -0,0 +1,137 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Martin Weber.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.jsoncdb.core.internal.builtins;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Objects;
+
+import org.eclipse.cdt.jsoncdb.core.internal.Plugin;
+import org.eclipse.cdt.jsoncdb.core.participant.IRawSourceFileInfo;
+import org.eclipse.cdt.jsoncdb.core.participant.IRawSourceFileInfoCollector;
+import org.eclipse.core.runtime.Platform;
+
+/**
+ * Default implementation of IRawSourceFileInfo.
+ *
+ * @author weber
+ */
+public class RawSourceFileInfo implements IRawSourceFileInfo, IRawSourceFileInfoCollector {
+
+ @SuppressWarnings("nls")
+ private static final boolean DEBUG = Boolean
+ .parseBoolean(Platform.getDebugOption(Plugin.PLUGIN_ID + "/debug/detected.entries"));
+
+ private final Map<String, String> defines = new HashMap<>();
+ private final List<String> undefines = new ArrayList<>();
+ private final List<String> includePaths = new ArrayList<>();
+ private final List<String> systemIncludePaths = new ArrayList<>();
+ private final List<String> macroFiles = new ArrayList<>(0);
+ private final List<String> includeFiles = new ArrayList<>(0);
+
+ @Override
+ public void addDefine(String name, String value) {
+ Objects.requireNonNull(name);
+ value = Objects.toString(value, "1"); //$NON-NLS-1$
+ if (DEBUG)
+ System.out.printf(" Added define: %s=%s%n", name, value); //$NON-NLS-1$
+ defines.put(name, value);
+ }
+
+ @Override
+ public void addUndefine(String name) {
+ Objects.requireNonNull(name);
+ if (DEBUG)
+ System.out.printf(" Added undefine: %s%n", name); //$NON-NLS-1$
+ undefines.add(name);
+ // - The GCC man page states:
+ // '-U name Cancel any previous definition of name, either built in or provided
+ // with a -D option.'
+ // - The POSIX c99 man page states:
+ // '-U name Remove any initial definition of name.'
+ for (Iterator<Map.Entry<String, String>> iter = defines.entrySet().iterator(); iter.hasNext();) {
+ Entry<String, String> define = iter.next();
+ if (define.getKey().equals(name)) {
+ if (DEBUG)
+ System.out.printf(" Removed define: %s=%s%n", define.getKey(), define.getValue()); //$NON-NLS-1$
+ iter.remove();
+ }
+ }
+ }
+
+ @Override
+ public void addIncludePath(String path) {
+ Objects.requireNonNull(path);
+ if (DEBUG)
+ System.out.printf(" Added incl path: %s%n", path); //$NON-NLS-1$
+ includePaths.add(path);
+ }
+
+ @Override
+ public void addSystemIncludePath(String path) {
+ Objects.requireNonNull(path);
+ if (DEBUG)
+ System.out.printf(" Added sys incl path: %s%n", path); //$NON-NLS-1$
+ systemIncludePaths.add(path);
+ }
+
+ @Override
+ public void addMacroFile(String path) {
+ Objects.requireNonNull(path);
+ if (DEBUG)
+ System.out.printf(" Added macro file: %s%n", path); //$NON-NLS-1$
+ macroFiles.add(path);
+ }
+
+ @Override
+ public void addIncludeFile(String path) {
+ Objects.requireNonNull(path);
+ if (DEBUG)
+ System.out.printf(" Added include file: %s%n", path); //$NON-NLS-1$
+ includeFiles.add(path);
+ }
+
+ @Override
+ public Map<String, String> getDefines() {
+ return Collections.unmodifiableMap(defines);
+ }
+
+ @Override
+ public List<String> getUndefines() {
+ return Collections.unmodifiableList(undefines);
+ }
+
+ @Override
+ public List<String> getIncludePaths() {
+ return Collections.unmodifiableList(includePaths);
+ }
+
+ @Override
+ public List<String> getSystemIncludePaths() {
+ return Collections.unmodifiableList(systemIncludePaths);
+ }
+
+ @Override
+ public List<String> getMacroFiles() {
+ return Collections.unmodifiableList(macroFiles);
+ }
+
+ @Override
+ public List<String> getIncludeFiles() {
+ return Collections.unmodifiableList(includeFiles);
+ }
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/builtins/messages.properties b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/builtins/messages.properties
new file mode 100644
index 00000000000..09a209b9b21
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/builtins/messages.properties
@@ -0,0 +1,18 @@
+###############################################################################
+# Copyright (c) 2020 Martin Weber and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Martin Weber - initial API and implementation
+###############################################################################
+CompilerBuiltinsDetector_errmsg_command_failed=%1$s exited with status %2$d.
+CompilerBuiltinsDetector_msg_detection_finished=Detecting compiler built-ins took %d ms.
+CompilerBuiltinsDetector_msg_detection_start=%1$s Detecting compiler built-ins for project '%2$s'
+CompilerBuiltinsDetector_msg_unexpectedly_still_running=%1$s is unexpectedly still running. Some built-ins might not have been captured by the compiler built-ins detector.
+DetectorConsole_title=Compiler Built-ins Detection Console
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/messages.properties b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/messages.properties
new file mode 100644
index 00000000000..2055f216fd3
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/internal/messages.properties
@@ -0,0 +1,19 @@
+###############################################################################
+# Copyright (c) 2020 Martin Weber and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Martin Weber - initial API and implementation
+###############################################################################
+ParserPreferencesAccess_e_get_preferences=Unable to get preferences for node: {0}.{1}
+ParserPreferencesMetadata_label_console=&Show output of compiler built-in detection in the build console
+ParserPreferencesMetadata_label_suffix=&Suffix pattern:
+ParserPreferencesMetadata_label_try_suffix=&Also try with version suffix
+ParserPreferencesMetadata_ttip_suffix=Specify a Java regular expression pattern here
+ParserPreferencesMetadata_ttip_try_suffix=Can recognize gcc-12.9.2, clang++-7.5.4, ...
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/messages.properties b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/messages.properties
new file mode 100644
index 00000000000..4b2b5c4481c
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/messages.properties
@@ -0,0 +1,22 @@
+###############################################################################
+# Copyright (c) 2020 Martin Weber and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Martin Weber - initial API and implementation
+###############################################################################
+CompileCommandsJsonParser_errmsg_empty_json=File '%1$s' appears to be an empty file. %2$s
+CompileCommandsJsonParser_errmsg_file_not_found=File '%1$s' was not created in the build. %2$s
+CompileCommandsJsonParser_errmsg_no_parser_for_commandline=No parser for command '%1$s'. %2$s
+CompileCommandsJsonParser_errmsg_not_json=File '%1$s' does not seem to be in JSON format. %2$s
+CompileCommandsJsonParser_errmsg_read_error=Failed to read file '%1$s'. %2$s
+CompileCommandsJsonParser_errmsg_unexpected_json=Format error in file %1$s: 'file', 'command' or 'directory' missing in JSON object. %2$s
+CompileCommandsJsonParser_msg_detecting_builtins=Detecting compiler built-ins
+CompileCommandsJsonParser_msg_processing=Processing compile_commands.json
+CompileCommandsJsonParser_MSG_WORKBENCH_WILL_NOT_KNOW=Your workbench will not know all include paths and preprocessor defines.
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/package-info.java b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/package-info.java
new file mode 100644
index 00000000000..7fe1dc3fa12
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/package-info.java
@@ -0,0 +1,18 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+/**
+ * Classes and interfaces to parse a file 'compile_commands.json' produced by
+ * cmake and to generate information about preprocessor symbols and include
+ * paths of the files being compiled in order to support the CDT indexer/ syntax
+ * highlighting.
+ *
+ * @author Martin Weber
+ */
+package org.eclipse.cdt.jsoncdb.core; \ No newline at end of file
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/Arglets.java b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/Arglets.java
new file mode 100644
index 00000000000..c0ac01031f6
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/Arglets.java
@@ -0,0 +1,544 @@
+/*******************************************************************************
+ * Copyright (c) 2015-2020 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.jsoncdb.core.participant;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.eclipse.cdt.jsoncdb.core.participant.IArglet.IArgumentCollector;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+
+/**
+ * Various Arglet implementation for parsing tool arguments.
+ *
+ * @author Martin Weber
+ */
+public final class Arglets {
+ private static final String EMPTY_STR = ""; //$NON-NLS-1$
+
+ /** matches a macro name, with optional macro parameter list */
+ @SuppressWarnings("nls")
+ private static final String REGEX_MACRO_NAME = "([\\w$]+)(?:\\([\\w$, ]*?\\))?";
+ /**
+ * matches a macro name, skipping leading whitespace. Name in matcher group 1
+ */
+ @SuppressWarnings("nls")
+ private static final String REGEX_MACRO_NAME_SKIP_LEADING_WS = "\\s*" + REGEX_MACRO_NAME;
+ /**
+ * matches a macro argument in quotes, skipping leading whitespace. Quote
+ * character in matcher group 1, Name in matcher group 2
+ */
+ @SuppressWarnings("nls")
+ private static final String REGEX_MACRO_ARG_QUOTED__SKIP_LEADING_WS = "\\s*([\"'])" + REGEX_MACRO_NAME;
+ /** matches an include path with quoted directory. Name in matcher group 2 */
+ @SuppressWarnings("nls")
+ private static final String REGEX_INCLUDEPATH_QUOTED_DIR = "\\s*([\"'])(.+?)\\1";
+ /**
+ * matches an include path with unquoted directory. Name in matcher group 1
+ */
+ @SuppressWarnings("nls")
+ private static final String REGEX_INCLUDEPATH_UNQUOTED_DIR = "\\s*([^\\s]+)";
+
+ /**
+ * nothing to instantiate
+ */
+ private Arglets() {
+ }
+
+ ////////////////////////////////////////////////////////////////////
+ // Matchers for options
+ ////////////////////////////////////////////////////////////////////
+ /**
+ * A matcher for option names. Includes information of the matcher groups that
+ * hold the option name.
+ *
+ * @author Martin Weber
+ */
+ public static class NameOptionMatcher {
+ /**
+ * Do not use the matcher field, it is not thread safe. Instead use pattern.matcher(input).
+ * @deprecated
+ */
+ @Deprecated(forRemoval = true)
+ final Matcher matcher;
+ final Pattern pattern;
+ final int nameGroup;
+
+ /**
+ * Constructor.
+ *
+ * @param pattern - regular expression pattern being parsed by the parser.
+ * @param nameGroup - capturing group number defining name of an entry.
+ */
+ public NameOptionMatcher(String pattern, int nameGroup) {
+ this.pattern = Pattern.compile(pattern);
+ this.matcher = this.pattern.matcher(EMPTY_STR);
+ this.nameGroup = nameGroup;
+ }
+
+ @SuppressWarnings("nls")
+ @Override
+ public String toString() {
+ return "NameOptionMatcher [pattern=" + this.pattern + ", nameGroup=" + this.nameGroup + "]";
+ }
+ }
+
+ /**
+ * A matcher for preprocessor define options. Includes information of the
+ * matcher groups that hold the macro name and value.
+ *
+ * @author Martin Weber
+ */
+ public static class NameValueOptionMatcher extends NameOptionMatcher {
+ /**
+ * the number of the value group, or {@code -1} for a pattern that does not
+ * recognize a macro value
+ */
+ private final int valueGroup;
+
+ /**
+ * Constructor.
+ *
+ * @param pattern regular expression pattern being parsed by the parser.
+ * @param nameGroup the number of the value group
+ * @param valueGroup the number of the value group, or {@code -1} for a pattern
+ * that does not recognize a macro value
+ */
+ public NameValueOptionMatcher(String pattern, int nameGroup, int valueGroup) {
+ super(pattern, nameGroup);
+ this.valueGroup = valueGroup;
+ }
+
+ @SuppressWarnings("nls")
+ @Override
+ public String toString() {
+ return "NameValueOptionMatcher [pattern=" + this.pattern + ", nameGroup=" + this.nameGroup + ", valueGroup="
+ + this.valueGroup + "]";
+ }
+ }
+
+ ////////////////////////////////////////////////////////////////////
+ // generic option parsers
+ ////////////////////////////////////////////////////////////////////
+ /**
+ * A tool argument parser capable to parse a C-compiler macro definition
+ * argument.
+ */
+ public static abstract class MacroDefineGeneric {
+
+ protected final int processArgument(IArgumentCollector resultCollector, String args,
+ NameValueOptionMatcher[] optionMatchers) {
+ for (NameValueOptionMatcher oMatcher : optionMatchers) {
+ final Matcher matcher = oMatcher.pattern.matcher(args);
+
+ if (matcher.lookingAt()) {
+ final String name = matcher.group(oMatcher.nameGroup);
+ final String value = oMatcher.valueGroup == -1 ? null : matcher.group(oMatcher.valueGroup);
+ resultCollector.addDefine(name, value);
+ final int end = matcher.end();
+ return end;
+ }
+ }
+ return 0;// no input consumed
+ }
+ }
+
+ /**
+ * A tool argument parser capable to parse a C-compiler macro cancel argument.
+ */
+ public static class MacroUndefineGeneric {
+
+ /*-
+ * @see org.eclipse.cdt.jsoncdb.core.participant.IArglet.processArgument(IArgumentCollector, IPath, String)
+ */
+ protected final int processArgument(IArgumentCollector resultCollector, String argsLine,
+ NameOptionMatcher optionMatcher) {
+ final Matcher oMatcher = optionMatcher.pattern.matcher(argsLine);
+
+ if (oMatcher.lookingAt()) {
+ final String name = oMatcher.group(1);
+ resultCollector.addUndefine(name);
+ final int end = oMatcher.end();
+ return end;
+ }
+ return 0;// no input consumed
+ }
+ }
+
+ /**
+ * A tool argument parser capable to parse a C-compiler include path argument.
+ */
+ public static abstract class IncludePathGeneric {
+ /**
+ * @param isSystemIncludePath <code>true</code> if the include path is a system include path otherwise <code>false</code>
+ * @param cwd the current working directory of the compiler at its invocation
+ * @see org.eclipse.cdt.jsoncdb.core.participant.IArglet#processArgument(IArgumentCollector,
+ * IPath, String)
+ */
+ protected final int processArgument(boolean isSystemIncludePath, IArgumentCollector resultCollector, IPath cwd,
+ String argsLine, NameOptionMatcher[] optionMatchers) {
+ for (NameOptionMatcher oMatcher : optionMatchers) {
+ final Matcher matcher = oMatcher.pattern.matcher(argsLine);
+
+ if (matcher.lookingAt()) {
+ String name = matcher.group(oMatcher.nameGroup);
+ // workaround for relative path by cmake bug
+ // https://gitlab.kitware.com/cmake/cmake/issues/13894 : prepend cwd
+ IPath path = Path.fromOSString(name);
+ if (!path.isAbsolute()) {
+ // prepend CWD
+ name = cwd.append(path).toOSString();
+ }
+ if (isSystemIncludePath) {
+ resultCollector.addSystemIncludePath(name);
+ } else {
+ resultCollector.addIncludePath(name);
+ }
+ final int end = matcher.end();
+ return end;
+ }
+ }
+ return 0;// no input consumed
+ }
+ }
+
+ /**
+ * A tool argument parser capable to parse a C-compiler include file argument.
+ */
+ public static abstract class IncludeFileGeneric {
+ /**
+ * @param cwd
+ * the current working directory of the compiler at its invocation
+ */
+ protected final int processArgument(IArgumentCollector resultCollector, IPath cwd, String argsLine,
+ NameOptionMatcher[] optionMatchers) {
+ for (NameOptionMatcher oMatcher : optionMatchers) {
+ final Matcher matcher = oMatcher.pattern.matcher(argsLine);
+
+ if (matcher.lookingAt()) {
+ String name = matcher.group(oMatcher.nameGroup);
+ resultCollector.addIncludeFile(name);
+ final int end = matcher.end();
+ return end;
+ }
+ }
+ return 0;// no input consumed
+ }
+ }
+
+ /**
+ * A tool argument parser capable to parse a C-compiler macros file argument.
+ */
+ public static abstract class MacrosFileGeneric {
+ /**
+ * @param cwd
+ * the current working directory of the compiler at its invocation
+ */
+ protected final int processArgument(IArgumentCollector resultCollector, IPath cwd, String argsLine,
+ NameOptionMatcher[] optionMatchers) {
+ for (NameOptionMatcher oMatcher : optionMatchers) {
+ final Matcher matcher = oMatcher.pattern.matcher(argsLine);
+
+ if (matcher.lookingAt()) {
+ String name = matcher.group(oMatcher.nameGroup);
+ resultCollector.addMacroFile(name);
+ final int end = matcher.end();
+ return end;
+ }
+ }
+ return 0;// no input consumed
+ }
+ }
+
+ ////////////////////////////////////////////////////////////////////
+ // POSIX compatible option parsers
+ ////////////////////////////////////////////////////////////////////
+ /**
+ * A tool argument parser capable to parse a POSIX compatible C-compiler macro
+ * definition argument: {@code -DNAME=value}.
+ */
+ public static class MacroDefine_C_POSIX extends MacroDefineGeneric implements IArglet {
+
+ @SuppressWarnings("nls")
+ private static final NameValueOptionMatcher[] optionMatchers = {
+ /* string or char literal value, with whitespace in value and escaped quotes */
+ new NameValueOptionMatcher("-D" + REGEX_MACRO_NAME_SKIP_LEADING_WS + "=(" + "([\"'])" // the quote char
+ // in group 3
+ + "(?:" // non-capturing
+ + "\\\\\\\\" // the escaped escape char
+ + "|" // OR
+ + "\\\\\\3" // the escaped quote char
+ + "|" // OR
+ + "(?!\\3)." // any character except the quote char
+ + ")*" // zero or more times
+ + "\\3" // the quote char
+ + ")", 1, 2),
+ /* macro name only, w/ optional macro arglist */
+ new NameValueOptionMatcher("-D" + REGEX_MACRO_NAME_SKIP_LEADING_WS + "=((\\S+))", 1, 3),
+ /* separated, quoted name-value arg, whitespace in value */
+ new NameValueOptionMatcher("-D" + REGEX_MACRO_ARG_QUOTED__SKIP_LEADING_WS + "=((.+?))\\1", 2, 4),
+ /* macro name only */
+ new NameValueOptionMatcher("-D" + REGEX_MACRO_NAME_SKIP_LEADING_WS, 1, -1), };
+
+ /*-
+ * @see org.eclipse.cdt.jsoncdb.core.participant.IArglet.processArgument(IArgumentCollector, IPath, String)
+ */
+ @Override
+ public int processArgument(IArgumentCollector resultCollector, IPath cwd, String argsLine) {
+ return processArgument(resultCollector, argsLine, optionMatchers);
+ }
+
+ }
+
+ ////////////////////////////////////////////////////////////////////
+ /**
+ * A tool argument parser capable to parse a POSIX compatible C-compiler macro
+ * cancel argument: {@code -UNAME}.
+ */
+ public static class MacroUndefine_C_POSIX extends MacroUndefineGeneric implements IArglet {
+
+ @SuppressWarnings("nls")
+ private static final NameOptionMatcher optionMatcher = new NameOptionMatcher(
+ "-U" + REGEX_MACRO_NAME_SKIP_LEADING_WS, 1);
+
+ /*-
+ * @see org.eclipse.cdt.jsoncdb.core.participant.IArglet.processArgument(IArgumentCollector, IPath, String)
+ */
+ @Override
+ public int processArgument(IArgumentCollector resultCollector, IPath cwd, String argsLine) {
+ return processArgument(resultCollector, argsLine, optionMatcher);
+ }
+ }
+
+ ////////////////////////////////////////////////////////////////////
+ /**
+ * A tool argument parser capable to parse a POSIX compatible C-compiler include
+ * path argument: {@code -Ipath}.
+ */
+ public static class IncludePath_C_POSIX extends IncludePathGeneric implements IArglet {
+ @SuppressWarnings("nls")
+ private static final NameOptionMatcher[] optionMatchers = {
+ /* quoted directory */
+ new NameOptionMatcher("-I" + REGEX_INCLUDEPATH_QUOTED_DIR, 2),
+ /* unquoted directory */
+ new NameOptionMatcher("-I" + REGEX_INCLUDEPATH_UNQUOTED_DIR, 1) };
+
+ /*-
+ * @see org.eclipse.cdt.jsoncdb.core.participant.IArglet.processArgument(IArgumentCollector, IPath, String)
+ */
+ @Override
+ public int processArgument(IArgumentCollector resultCollector, IPath cwd, String argsLine) {
+ return processArgument(true, resultCollector, cwd, argsLine, optionMatchers);
+ }
+ }
+
+ ////////////////////////////////////////////////////////////////////
+ /**
+ * A tool argument parser capable to parse a C-compiler system include path
+ * argument: {@code -system path}.
+ */
+ public static class SystemIncludePath_C extends IncludePathGeneric implements IArglet {
+ @SuppressWarnings("nls")
+ static final NameOptionMatcher[] optionMatchers = {
+ /* quoted directory */
+ new NameOptionMatcher("-isystem" + REGEX_INCLUDEPATH_QUOTED_DIR, 2),
+ /* unquoted directory */
+ new NameOptionMatcher("-isystem" + REGEX_INCLUDEPATH_UNQUOTED_DIR, 1), };
+
+ /*-
+ * @see org.eclipse.cdt.jsoncdb.core.participant.IArglet.processArgument(IArgumentCollector, IPath, String)
+ */
+ @Override
+ public int processArgument(IArgumentCollector resultCollector, IPath cwd, String argsLine) {
+ return processArgument(true, resultCollector, cwd, argsLine, optionMatchers);
+ }
+ }
+
+ ////////////////////////////////////////////////////////////////////
+ // POSIX compatible option parsers
+ ////////////////////////////////////////////////////////////////////
+
+ ////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////
+ // compiler built-ins detection
+ ////////////////////////////////////////////////////////////////////
+
+ /**
+ * @deprecated use <code>BuiltinDetectionArgsGeneric</code> instead
+ */
+ @Deprecated(forRemoval = true)
+ public static abstract class BuiltinDetctionArgsGeneric {
+ protected int processArgument(IArgumentCollector resultCollector, String argsLine, Matcher[] optionMatchers) {
+ throw new IllegalStateException(
+ "This class is deprecated - extend class BuiltinDetectionArgsGeneric instead"); //$NON-NLS-1$
+ }
+ }
+
+ /**
+ * A tool argument parser capable to parse arguments from the command-line that
+ * affect built-in detection.
+ * @since 1.2
+ */
+ public static abstract class BuiltinDetectionArgsGeneric extends BuiltinDetctionArgsGeneric {
+
+ /**
+ * @see org.eclipse.cdt.jsoncdb.core.participant.IArglet#processArgument(IArgumentCollector,
+ * IPath, String)
+ * @since 1.3
+ */
+ protected final int processArgument(IArgumentCollector resultCollector, String argsLine,
+ Pattern[] optionPatterns) {
+ for (Pattern pattern : optionPatterns) {
+ Matcher matcher = pattern.matcher(argsLine);
+ if (matcher.lookingAt()) {
+ resultCollector.addBuiltinDetectionArgument(matcher.group());
+ return matcher.end();
+ }
+ }
+ return 0;// no input consumed
+ }
+
+ /**
+ * @see org.eclipse.cdt.jsoncdb.core.participant.IArglet#processArgument(IArgumentCollector,
+ * IPath, String)
+ * @deprecated Use {@link #processArgument(IArgumentCollector, String, Pattern[])} instead.
+ */
+ @Deprecated(forRemoval = true)
+ @Override
+ protected final int processArgument(IArgumentCollector resultCollector, String argsLine,
+ Matcher[] optionMatchers) {
+ for (Matcher matcher : optionMatchers) {
+ matcher.reset(argsLine);
+ if (matcher.lookingAt()) {
+ resultCollector.addBuiltinDetectionArgument(matcher.group());
+ return matcher.end();
+ }
+ }
+ return 0;// no input consumed
+ }
+ }
+
+ ////////////////////////////////////////////////////////////////////
+ /**
+ * A tool argument parser capable to parse a GCC include file argument {@code -include <file>}.
+ */
+ public static class IncludeFile_GCC extends IncludeFileGeneric implements IArglet {
+ @SuppressWarnings("nls")
+ private static final NameOptionMatcher[] optionMatchers = {
+ /* "-include=" quoted directory */
+ new NameOptionMatcher("-include" + REGEX_INCLUDEPATH_QUOTED_DIR, 2),
+ /* "-include=" unquoted directory */
+ new NameOptionMatcher("-include" + REGEX_INCLUDEPATH_UNQUOTED_DIR, 1), };
+
+ @Override
+ public int processArgument(IArgumentCollector resultCollector, IPath cwd, String argsLine) {
+ return processArgument(resultCollector, cwd, argsLine, optionMatchers);
+ }
+ }
+
+ /**
+ * A tool argument parser capable to parse a GCC macros file argument {@code -imacros <file>}.
+ */
+ public static class MacrosFile_GCC extends MacrosFileGeneric implements IArglet {
+ @SuppressWarnings("nls")
+ private static final NameOptionMatcher[] optionMatchers = {
+ /* "-include=" quoted directory */
+ new NameOptionMatcher("-imacros" + REGEX_INCLUDEPATH_QUOTED_DIR, 2),
+ /* "-include=" unquoted directory */
+ new NameOptionMatcher("-imacros" + REGEX_INCLUDEPATH_UNQUOTED_DIR, 1), };
+
+ /*-
+ * @see de.marw.cmake.cdt.lsp.IArglet#processArgs(java.lang.String)
+ */
+ @Override
+ public int processArgument(IArgumentCollector resultCollector, IPath cwd, String argsLine) {
+ return processArgument(resultCollector, cwd, argsLine, optionMatchers);
+ }
+ }
+
+ ////////////////////////////////////////////////////////////////////
+ /**
+ * A tool argument parser capable to parse a GCC option to specify paths
+ * {@code --sysrooot}.
+ */
+ public static class Sysroot_GCC extends BuiltinDetectionArgsGeneric implements IArglet {
+ @SuppressWarnings("nls")
+ private static final Pattern[] optionPatterns = {
+ /* "--sysroot=" quoted directory */
+ Pattern.compile("--sysroot=" + REGEX_INCLUDEPATH_QUOTED_DIR), //
+ /* "--sysroot=" unquoted directory */
+ Pattern.compile("--sysroot=" + REGEX_INCLUDEPATH_UNQUOTED_DIR), //
+ /* "-isysroot=" quoted directory */
+ Pattern.compile("-isysroot=" + REGEX_INCLUDEPATH_QUOTED_DIR), //
+ /* "-isysroot=" unquoted directory */
+ Pattern.compile("-isysroot=" + REGEX_INCLUDEPATH_UNQUOTED_DIR), //
+ /* "--no-sysroot-prefix" */
+ Pattern.compile("--no-sysroot-prefix"), //
+ };
+
+ /*-
+ * @see org.eclipse.cdt.jsoncdb.core.participant.IArglet#processArgs(java.lang.String)
+ */
+ @Override
+ public int processArgument(IArgumentCollector resultCollector, IPath cwd, String argsLine) {
+ return processArgument(resultCollector, argsLine, optionPatterns);
+ }
+ }
+
+ ////////////////////////////////////////////////////////////////////
+ /**
+ * A tool argument parser capable to parse a Clang option to specify the compilation target {@code --target}.
+ * @since 1.1
+ */
+ public static class Target_Clang extends BuiltinDetectionArgsGeneric implements IArglet {
+ @SuppressWarnings("nls")
+ private static final Pattern[] optionPatterns = {
+ /* "--target=" triple */
+ Pattern.compile("--target=\\w+(-\\w+)*") //
+ };
+
+ /*-
+ * @see org.eclipse.cdt.jsoncdb.core.participant.IArglet#processArgs(java.lang.String)
+ */
+ @Override
+ public int processArgument(IArgumentCollector resultCollector, IPath cwd, String argsLine) {
+ return processArgument(resultCollector, argsLine, optionPatterns);
+ }
+ }
+
+ ////////////////////////////////////////////////////////////////////
+ /**
+ * A tool argument parser capable to parse a GCC option to specify the language
+ * standard {@code -std=xxx}.
+ */
+ public static class LangStd_GCC extends BuiltinDetectionArgsGeneric implements IArglet {
+ @SuppressWarnings("nls")
+ private static final Pattern[] optionPatterns = { //
+ Pattern.compile("-std=\\S+"), //
+ Pattern.compile("-ansi"), //
+ Pattern.compile("-fPIC", Pattern.CASE_INSENSITIVE), //
+ Pattern.compile("-fPIE", Pattern.CASE_INSENSITIVE), //
+ Pattern.compile("-fstack-protector\\S+"), //
+ Pattern.compile("-march=\\\\S+"), //
+ Pattern.compile("-mcpu=\\\\S+"), //
+ Pattern.compile("-mtune=\\\\S+"), //
+ Pattern.compile("-pthread"), };
+
+ /*-
+ * @see org.eclipse.cdt.jsoncdb.core.participant.IArglet#processArgs(java.lang.String)
+ */
+ @Override
+ public int processArgument(IArgumentCollector resultCollector, IPath cwd, String argsLine) {
+ return processArgument(resultCollector, argsLine, optionPatterns);
+ }
+ }
+
+ ////////////////////////////////////////////////////////////////////
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/DefaultToolCommandlineParser.java b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/DefaultToolCommandlineParser.java
new file mode 100644
index 00000000000..6bab4815dc7
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/DefaultToolCommandlineParser.java
@@ -0,0 +1,196 @@
+/*******************************************************************************
+ * Copyright (c) 2016-2020 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.jsoncdb.core.participant;
+
+import java.util.Arrays;
+import java.util.Objects;
+import java.util.Optional;
+
+import org.eclipse.cdt.jsoncdb.core.internal.ParseContext;
+import org.eclipse.cdt.jsoncdb.core.internal.Plugin;
+import org.eclipse.cdt.jsoncdb.core.participant.builtins.IBuiltinsDetectionBehavior;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Platform;
+
+/**
+ * Parses the build output produced by a specific tool invocation and detects
+ * LanguageSettings.
+ *
+ * @author Martin Weber
+ */
+public class DefaultToolCommandlineParser implements IToolCommandlineParser {
+ private static final boolean DEBUG = Boolean
+ .parseBoolean(Platform.getDebugOption(Plugin.PLUGIN_ID + "/debug/arglets")); //$NON-NLS-1$
+
+ private final IArglet[] argumentParsers;
+ private final IResponseFileArglet responseFileArglet;
+ private final IBuiltinsDetectionBehavior builtinsDetection;
+
+ /**
+ * Constructs a new object with the given values.
+ *
+ * @param responseFileArglet the parsers for the response-file
+ * command-line argument for the tool or
+ * {@code null} if the tool does not recognize
+ * a response-file argument
+ * @param builtinsDetectionBehavior the {@code IBuiltinsDetectionBehavior} which
+ * specifies how built-in compiler macros and
+ * include path detection is handled for a
+ * specific compiler or {@code null} if the
+ * compiler does not support built-in
+ * detection.
+ * @param argumentParsers the parsers for the command line arguments
+ * of of interest for the tool
+ *
+ * @throws NullPointerException if the {@code argumentParsers} arguments is
+ * {@code null}
+ * @see Arglets various IArglet implementations you may want to use
+ * @see ResponseFileArglets IArglet implementations for response file arguments
+ * you may want to use
+ */
+ @SuppressWarnings("nls")
+ public DefaultToolCommandlineParser(IResponseFileArglet responseFileArglet,
+ IBuiltinsDetectionBehavior builtinsDetectionBehavior, IArglet... argumentParsers) {
+ this.builtinsDetection = builtinsDetectionBehavior;
+ this.argumentParsers = Objects.requireNonNull(argumentParsers, "argumentParsers");
+ this.responseFileArglet = responseFileArglet;
+ }
+
+ @Override
+ public IResult processArgs(IPath cwd, String args) {
+ ParserHandler ph = new ParserHandler(cwd);
+ return ph.parseArguments(responseFileArglet, args);
+ }
+
+ @Override
+ public Optional<IBuiltinsDetectionBehavior> getIBuiltinsDetectionBehavior() {
+ return Optional.ofNullable(builtinsDetection);
+ }
+
+ @SuppressWarnings("nls")
+ @Override
+ public String toString() {
+ return "[" + getClass().getName() + ", argumentParsers=" + Arrays.toString(this.argumentParsers) + "]";
+ }
+
+ /**
+ * @param buildOutput the command line arguments to process
+ * @return the number of characters consumed
+ */
+ private static int skipArgument(String buildOutput) {
+ int consumed;
+
+ // (blindly) advance to next whitespace
+ if ((consumed = buildOutput.indexOf(' ')) != -1) {
+ return consumed;
+ } else {
+ // non-option arg, may be a file name
+ // for now, we just clear/skip the output
+ return buildOutput.length();
+ }
+ }
+
+ /**
+ * Handles parsing of command-line arguments.
+ *
+ * @author Martin Weber
+ */
+ private class ParserHandler implements IParserHandler {
+
+ private final IPath cwd;
+ private final ParseContext result = new ParseContext();
+
+ /**
+ * @param cwd the current working directory of the compiler at the time of its
+ * invocation
+ *
+ * @throws NullPointerException if any of the arguments is {@code null}
+ */
+ public ParserHandler(IPath cwd) {
+ this.cwd = Objects.requireNonNull(cwd, "cwd"); //$NON-NLS-1$
+ }
+
+ /**
+ * @param responseFileArglet
+ * @param args the command line arguments to process
+ */
+ @SuppressWarnings("nls")
+ private IResult parseArguments(IResponseFileArglet responseFileArglet, String args) {
+ // eat buildOutput string argument by argument..
+ while (!(args = args.stripLeading()).isEmpty()) {
+ boolean argParsed = false;
+ int consumed;
+ // parse with first parser that can handle the first argument on the
+ // command-line
+ if (DEBUG)
+ System.out.printf(">> PARSING next argument in '%s ...'%n",
+ args.substring(0, Math.min(50, args.length())));
+ for (IArglet tap : argumentParsers) {
+ if (DEBUG)
+ System.out.printf(" Trying parser %s%n", tap.getClass().getSimpleName());
+ consumed = tap.processArgument(result, cwd, args);
+ if (consumed > 0) {
+ if (DEBUG)
+ System.out.printf("<< PARSED argument '%s'%n", args.substring(0, consumed));
+ args = args.substring(consumed);
+ argParsed = true;
+ break;
+ }
+ }
+
+ // try response file
+ if (!argParsed && responseFileArglet != null) {
+ if (DEBUG)
+ System.out.printf(" Trying parser %s%n", responseFileArglet.getClass().getSimpleName());
+ consumed = responseFileArglet.process(this, args);
+ if (consumed > 0) {
+ if (DEBUG)
+ System.out.printf("<< PARSED ARGUMENT '%s'%n", args.substring(0, consumed));
+ args = args.substring(consumed);
+ argParsed = true;
+ }
+ }
+ if (!argParsed && !args.isEmpty()) {
+ // tried all parsers, argument is still not parsed,
+ // skip argument
+ if (DEBUG)
+ System.out.printf("<< IGNORING next argument in '%s ...' (no matching parser found)%n",
+ args.substring(0, Math.min(50, args.length())));
+ consumed = skipArgument(args);
+ if (consumed > 0) {
+ args = args.substring(consumed);
+ }
+ }
+ }
+ return result;
+ }
+
+ /**
+ * Parses the given String with the first parser that can handle the first
+ * argument on the command-line.
+ *
+ * @param args the command line arguments to process
+ */
+ @Override
+ public void parseArguments(String args) {
+ parseArguments(null, args);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.cdt.jsoncdb.IParserHandler# getCompilerWorkingDirectory()
+ */
+ @Override
+ public IPath getCompilerWorkingDirectory() {
+ return cwd;
+ }
+
+ } // ParserHandler
+} // ToolOutputParser \ No newline at end of file
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/DefaultToolDetectionParticipant.java b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/DefaultToolDetectionParticipant.java
new file mode 100644
index 00000000000..3b03265f0ee
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/DefaultToolDetectionParticipant.java
@@ -0,0 +1,367 @@
+/*******************************************************************************
+ * Copyright (c) 2019-2020 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.jsoncdb.core.participant;
+
+import java.util.Locale;
+import java.util.Optional;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * Responsible to match the first argument (the tool command) of a command-line.
+ *
+ * @author Martin Weber
+ */
+public class DefaultToolDetectionParticipant implements IToolDetectionParticipant {
+ /**
+ * start of the named capturing group that holds the command name (w/o quotes,
+ * if any)
+ */
+ protected static final String REGEX_GROUP_CMD = "cmd"; //$NON-NLS-1$
+
+ /** pattern part that matches file-system paths with forward slashes */
+ @SuppressWarnings("nls")
+ protected static final String REGEX_CMD_PATH_SLASH = String.format(Locale.ROOT, "\\A(?<%s>(\\S*?%s)?",
+ REGEX_GROUP_CMD, "/");
+ /** end of pattern part that matches file-system paths with forward slashes */
+ @SuppressWarnings("nls")
+ protected static final String REGEX_CMD_PATH_SLASH_END = ")\\s";
+
+ /**
+ * pattern part that matches file-system paths with forward slashes and is in
+ * quotes
+ */
+ @SuppressWarnings("nls")
+ protected static final String REGEX_CMD_PATH_SLASH_QUOTE = String.format(Locale.ROOT,
+ "\\A([\"'])(?<%s>((?:(?!\\1).)*?%s)", REGEX_GROUP_CMD, "/");
+ /**
+ * end of pattern part that matches file-system paths with forward slashes and
+ * is in quotes
+ */
+ @SuppressWarnings("nls")
+ protected static final String REGEX_CMD_PATH_SLASH_QUOTE_END = ")\\1\\s";
+
+ /** pattern part that matches win32 file-system paths */
+ @SuppressWarnings("nls")
+ protected static final String REGEX_CMD_PATH_BSLASH = String.format(Locale.ROOT, "\\A(?<%s>(\\S*?%s)?",
+ REGEX_GROUP_CMD, "\\\\");
+ /** end of pattern part that matches win32 file-system paths */
+ @SuppressWarnings("nls")
+ protected static final String REGEX_CMD_PATH_BSLASH_END = ")\\s";
+
+ /**
+ * pattern part that matches file-system paths with back slashes and is in
+ * quotes
+ */
+ @SuppressWarnings("nls")
+ protected static final String REGEX_CMD_PATH_BSLASH_QUOTE = String.format(Locale.ROOT,
+ "\\A([\"'])(?<%s>((?:(?!\\1).)*?%s)?", REGEX_GROUP_CMD, "\\\\");
+ /**
+ * end of pattern part that matches file-system paths with back slashes and is
+ * in quotes
+ */
+ @SuppressWarnings("nls")
+ protected static final String REGEX_CMD_PATH_BSLASH_QUOTE_END = ")\\1\\s";
+
+ /**
+ * the Patterns to match the name of the tool (including its path, BUT WITHOUT
+ * its filename extension) on a given command-line
+ */
+ private final Pattern[] toolNamePatterns;
+ private final Pattern[] toolNamePatternsBackslash;
+
+ /**
+ * the Matcher that matches the name of the tool (including its path AND its
+ * filename extension) on a given command-line or {@code null}
+ *
+ * @deprecated Use toolNamePatternsExt instead
+ */
+ @Deprecated(forRemoval = true)
+ protected final Matcher[] toolNameMatchersExt;
+ /**
+ * @deprecated Use toolNamePatternsExtBackslash instead
+ */
+ @Deprecated(forRemoval = true)
+ protected final Matcher[] toolNameMatchersExtBackslash;
+
+ /**
+ * the Pattern that matches the name of the tool (including its path AND its
+ * filename extension) on a given command-line or {@code null}
+ */
+ private final Pattern[] toolNamePatternsExt;
+ private final Pattern[] toolNamePatternsExtBackslash;
+
+ /**
+ * the corresponding parser for the tool arguments
+ */
+ private final IToolCommandlineParser parser;
+
+ protected final String basenameRegex;
+ protected final String extensionRegex;
+
+ /**
+ * whether this object can handle NTFS file system paths in the compiler
+ * argument in addition to a Linux path (which has forward slashes to separate
+ * path name components). If {@code true} the detection logic will also try to
+ * match path name with backslashes and will try to expand windows short paths
+ * like <code>C:/pr~1/aa~1.exe</code>.
+ */
+ protected final boolean alsoHandleNtfsPaths;
+
+ /**
+ * Creates a {@code DefaultToolDetectionParticipant} that matches linux paths in
+ * the tool name.
+ *
+ * @param basenameRegex a regular expression that matches the base name of the
+ * tool to detect. The specified expression should be
+ * non-greedy.
+ * @param parser the corresponding parser for the tool arguments
+ * @throws NullPointerException if one of the arguments is {@code null}
+ */
+ public DefaultToolDetectionParticipant(String basenameRegex, IToolCommandlineParser parser) {
+ this(basenameRegex, false, parser);
+ }
+
+ /**
+ * Creates a {@code DefaultToolDetectionParticipant}.
+ *
+ * @param basenameRegex a regular expression that matches the base name of
+ * the tool to detect. The specified expression
+ * should be non-greedy.
+ * @param alsoHandleNtfsPaths whether this object can handle NTFS file system
+ * paths in the compiler argument in addition to a
+ * Linux path (which has forward slashes to separate
+ * path name components). If {@code true} the
+ * detection logic will also try to match path name
+ * with backslashes and will try to expand windows
+ * short paths like <code>C:/pr~1/aa~1.exe</code>.
+ * @param parser the corresponding parser for the tool arguments
+ */
+ public DefaultToolDetectionParticipant(String basenameRegex, boolean alsoHandleNtfsPaths,
+ IToolCommandlineParser parser) {
+ this(basenameRegex, alsoHandleNtfsPaths, null, parser);
+ }
+
+ /**
+ * a {@code ParserDetectorExt} that matches linux paths in the tool name.
+ *
+ * @param basenameRegex a regular expression that matches the base name of the
+ * tool to detect. The specified expression should be
+ * non-greedy.
+ * @param extensionRegex a regular expression that matches the filename
+ * extension of the tool to detect.
+ * @param parser the corresponding parser for the tool arguments
+ */
+ public DefaultToolDetectionParticipant(String basenameRegex, String extensionRegex, IToolCommandlineParser parser) {
+ this(basenameRegex, false, extensionRegex, parser);
+ }
+
+ /**
+ * Creates a {@code DefaultToolDetectionParticipant}.
+ *
+ * @param basenameRegex a regular expression that matches the base name of
+ * the tool to detect. The specified expression
+ * should be non-greedy.
+ * @param alsoHandleNtfsPaths whether this object can handle NTFS file system
+ * paths in the compiler argument in addition to a
+ * Linux path (which has forward slashes to separate
+ * path name components). If {@code true} the
+ * detection logic will also try to match path name
+ * with backslashes and will try to expand windows
+ * short paths like <code>C:/pr~1/aa~1.exe</code>.
+ * @param extensionRegex a regular expression that matches the filename
+ * extension of the tool to detect.
+ * @param parser the corresponding parser for the tool arguments
+ */
+ @SuppressWarnings("nls")
+ public DefaultToolDetectionParticipant(String basenameRegex, boolean alsoHandleNtfsPaths, String extensionRegex,
+ IToolCommandlineParser parser) {
+ this.basenameRegex = basenameRegex;
+ this.parser = parser;
+ this.alsoHandleNtfsPaths = alsoHandleNtfsPaths;
+ this.extensionRegex = extensionRegex;
+
+ this.toolNamePatterns = new Pattern[] {
+ Pattern.compile(String.format(Locale.ROOT, "%s%s%s", REGEX_CMD_PATH_SLASH_QUOTE, basenameRegex,
+ REGEX_CMD_PATH_SLASH_QUOTE_END)),
+ Pattern.compile(String.format(Locale.ROOT, "%s%s%s", REGEX_CMD_PATH_SLASH, basenameRegex,
+ REGEX_CMD_PATH_SLASH_END)) };
+ if (alsoHandleNtfsPaths) {
+ this.toolNamePatternsBackslash = new Pattern[] {
+ Pattern.compile(String.format(Locale.ROOT, "%s%s%s", REGEX_CMD_PATH_BSLASH_QUOTE, basenameRegex,
+ REGEX_CMD_PATH_BSLASH_QUOTE_END)),
+ Pattern.compile(String.format(Locale.ROOT, "%s%s%s", REGEX_CMD_PATH_BSLASH, basenameRegex,
+ REGEX_CMD_PATH_BSLASH_END)) };
+ } else {
+ this.toolNamePatternsBackslash = new Pattern[] {};
+ }
+
+ if (extensionRegex != null) {
+ this.toolNamePatternsExt = new Pattern[] {
+ Pattern.compile(String.format(Locale.ROOT, "%s%s\\.%s%s", REGEX_CMD_PATH_SLASH_QUOTE, basenameRegex,
+ extensionRegex, REGEX_CMD_PATH_SLASH_QUOTE_END)),
+ Pattern.compile(String.format(Locale.ROOT, "%s%s\\.%s%s", REGEX_CMD_PATH_SLASH, basenameRegex,
+ extensionRegex, REGEX_CMD_PATH_SLASH_END)) };
+ if (alsoHandleNtfsPaths) {
+ this.toolNamePatternsExtBackslash = new Pattern[] {
+ Pattern.compile(String.format(Locale.ROOT, "%s%s\\.%s%s", REGEX_CMD_PATH_BSLASH_QUOTE,
+ basenameRegex, extensionRegex, REGEX_CMD_PATH_BSLASH_QUOTE_END)),
+ Pattern.compile(String.format(Locale.ROOT, "%s%s\\.%s%s", REGEX_CMD_PATH_BSLASH, basenameRegex,
+ extensionRegex, REGEX_CMD_PATH_BSLASH_END)) };
+ } else {
+ this.toolNamePatternsExtBackslash = new Pattern[] {};
+ }
+ } else {
+ this.toolNamePatternsExt = new Pattern[] {};
+ this.toolNamePatternsExtBackslash = new Pattern[] {};
+ }
+
+ toolNameMatchersExt = new Matcher[toolNamePatternsExt.length];
+ for (int i = 0; i < toolNameMatchersExt.length; i++) {
+ toolNameMatchersExt[i] = toolNamePatternsExt[i].matcher("");
+ }
+ toolNameMatchersExtBackslash = new Matcher[toolNamePatternsExtBackslash.length];
+ for (int i = 0; i < toolNameMatchersExtBackslash.length; i++) {
+ toolNameMatchersExtBackslash[i] = toolNamePatternsExtBackslash[i].matcher((""));
+ }
+ }
+
+ @Override
+ public IToolCommandlineParser getParser() {
+ return parser;
+ }
+
+ @Override
+ public boolean canHandleNtfsPaths() {
+ return alsoHandleNtfsPaths;
+ }
+
+ @Override
+ public Optional<MatchResult> basenameMatches(String commandLine, boolean matchBackslash) {
+ if (matchBackslash && !canHandleNtfsPaths()) {
+ return Optional.empty();
+ }
+ for (Pattern pattern : matchBackslash ? toolNamePatternsBackslash : toolNamePatterns) {
+ Optional<MatchResult> result = patternMatches(pattern, commandLine);
+ if (result.isPresent()) {
+ return result;
+ }
+ }
+ return Optional.empty();
+ }
+
+ @SuppressWarnings("nls")
+ @Override
+ public Optional<MatchResult> basenameWithVersionMatches(String commandLine, boolean matchBackslash,
+ String versionRegex) {
+ if (matchBackslash && !canHandleNtfsPaths()) {
+ return Optional.empty();
+ }
+
+ Pattern[] toolNamePatterns;
+ if (matchBackslash) {
+ toolNamePatterns = new Pattern[] {
+ Pattern.compile(String.format(Locale.ROOT, "%s%s%s%s", REGEX_CMD_PATH_BSLASH_QUOTE, basenameRegex,
+ versionRegex, REGEX_CMD_PATH_BSLASH_QUOTE_END)),
+ Pattern.compile(String.format(Locale.ROOT, "%s%s%s%s", REGEX_CMD_PATH_BSLASH, basenameRegex,
+ versionRegex, REGEX_CMD_PATH_BSLASH_END)) };
+ } else {
+ toolNamePatterns = new Pattern[] {
+ Pattern.compile(String.format(Locale.ROOT, "%s%s%s%s", REGEX_CMD_PATH_SLASH_QUOTE, basenameRegex,
+ versionRegex, REGEX_CMD_PATH_SLASH_QUOTE_END)),
+ Pattern.compile(String.format(Locale.ROOT, "%s%s%s%s", REGEX_CMD_PATH_SLASH, basenameRegex,
+ versionRegex, REGEX_CMD_PATH_SLASH_END)) };
+ }
+
+ for (Pattern pattern : toolNamePatterns) {
+ Optional<MatchResult> result = patternMatches(pattern, commandLine);
+ if (result.isPresent()) {
+ return result;
+ }
+ }
+ return Optional.empty();
+ }
+
+ @Override
+ public Optional<MatchResult> basenameWithExtensionMatches(String commandLine, boolean matchBackslash) {
+ if (matchBackslash && !canHandleNtfsPaths()) {
+ return Optional.empty();
+ }
+ for (Pattern pattern : matchBackslash ? toolNamePatternsExtBackslash : toolNamePatternsExt) {
+ Optional<MatchResult> result = patternMatches(pattern, commandLine);
+ if (result.isPresent()) {
+ return result;
+ }
+ }
+ return Optional.empty();
+ }
+
+ @SuppressWarnings("nls")
+ @Override
+ public Optional<MatchResult> basenameWithVersionAndExtensionMatches(String commandLine, boolean matchBackslash,
+ String versionRegex) {
+ if (extensionRegex == null || (matchBackslash && !canHandleNtfsPaths())) {
+ return Optional.empty();
+ }
+
+ Pattern[] toolNamePatterns;
+ if (matchBackslash) {
+ toolNamePatterns = new Pattern[] {
+ Pattern.compile(String.format(Locale.ROOT, "%s%s%s\\.%s%s", REGEX_CMD_PATH_BSLASH_QUOTE,
+ basenameRegex, versionRegex, extensionRegex, REGEX_CMD_PATH_BSLASH_QUOTE_END)),
+ Pattern.compile(String.format(Locale.ROOT, "%s%s%s\\.%s%s", REGEX_CMD_PATH_BSLASH, basenameRegex,
+ versionRegex, extensionRegex, REGEX_CMD_PATH_BSLASH_END)) };
+ } else {
+ toolNamePatterns = new Pattern[] {
+ Pattern.compile(String.format(Locale.ROOT, "%s%s%s\\.%s%s", REGEX_CMD_PATH_SLASH_QUOTE,
+ basenameRegex, versionRegex, extensionRegex, REGEX_CMD_PATH_SLASH_QUOTE_END)),
+ Pattern.compile(String.format(Locale.ROOT, "%s%s%s\\.%s%s", REGEX_CMD_PATH_SLASH, basenameRegex,
+ versionRegex, extensionRegex, REGEX_CMD_PATH_SLASH_END)) };
+ }
+
+ for (Pattern pattern : toolNamePatterns) {
+ Optional<MatchResult> result = patternMatches(pattern, commandLine);
+ if (result.isPresent()) {
+ return result;
+ }
+ }
+ return Optional.empty();
+ }
+
+ /**
+ * Gets, whether the specified Pattern for the tool arguments can properly parse
+ * the specified command-line string. If so, the remaining arguments of the
+ * command-line are returned.
+ *
+ * @param pattern the pattern that performs the match a regular expression
+ * that matches the version string in the name of the tool to
+ * detect.
+ * @param commandLine the command-line to match
+ * @return An empty {@code Optional} if the matcher did not match the tool name in the
+ * command-line string. Otherwise, if the tool name matches, a
+ * MatchResult holding the de-composed command-line is returned.
+ */
+ private Optional<DefaultToolDetectionParticipant.MatchResult> patternMatches(Pattern pattern, String commandLine) {
+ Matcher matcher = pattern.matcher(commandLine);
+ if (matcher.lookingAt()) {
+ return Optional.of(new DefaultToolDetectionParticipant.MatchResult(matcher.group(REGEX_GROUP_CMD),
+ commandLine.substring(matcher.end())));
+ }
+ return Optional.empty();
+ }
+
+ @SuppressWarnings("nls")
+ @Override
+ public String toString() {
+ return getClass().getSimpleName() + " [basenameRegex=" + basenameRegex + ", extensionRegex=" + extensionRegex
+ + "]";
+ }
+
+} // DefaultToolDetectionParticipant \ No newline at end of file
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/IArglet.java b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/IArglet.java
new file mode 100644
index 00000000000..56c63524753
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/IArglet.java
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ * Copyright (c) 2015-2020 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.jsoncdb.core.participant;
+
+import org.eclipse.core.runtime.IPath;
+
+/**
+ * Converts tool arguments into LanguageSettings objects and compiler
+ * command-line arguments that affect built-in-settings detection.
+ *
+ * @author Martin Weber
+ */
+public interface IArglet {
+
+ /**
+ * Parses the next command-line argument and extracts all detected
+ * LanguageSettings objects.
+ *
+ * @param resultCollector the buffer that receives the parsed command-line
+ * arguments
+ * @param cwd the current working directory of the compiler at its
+ * invocation
+ * @param argsLine the arguments passed to the tool, as they appear in
+ * the build output. Implementers may safely assume that
+ * the specified value does not contain leading
+ * whitespace characters, but trailing WS may occur.
+ * @return the number of characters from {@code argsLine} that has been
+ * processed. Return a value of {@code zero} or less, if this tool
+ * argument parser cannot process the first argument from the input.
+ */
+ int processArgument(IArgumentCollector resultCollector, IPath cwd, String argsLine);
+
+ /**
+ * Gathers the results of argument parsing.
+ *
+ * @author Martin Weber
+ */
+ interface IArgumentCollector extends IRawSourceFileInfoCollector {
+ /**
+ * Adds a compiler argument that affects built-in detection. For the GNU
+ * compilers, these are options like {@code --sysroot} and options that specify
+ * the language's standard ({@code -std=c++17}.
+ */
+ void addBuiltinDetectionArgument(String argument);
+ }
+} \ No newline at end of file
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/IParserHandler.java b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/IParserHandler.java
new file mode 100644
index 00000000000..f2fb17b8952
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/IParserHandler.java
@@ -0,0 +1,34 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.jsoncdb.core.participant;
+
+import org.eclipse.core.runtime.IPath;
+
+/**
+ * Handles parsing of command-line arguments.
+ *
+ * @author Martin Weber
+ */
+public interface IParserHandler {
+
+ /**
+ * Parses the given String with the first parser that can handle the first
+ * argument on the command-line.
+ *
+ * @param args the command line arguments to process
+ */
+ void parseArguments(String args);
+
+ /**
+ * Gets the current working directory of the compiler at the time of its
+ * invocation.
+ */
+ IPath getCompilerWorkingDirectory();
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/IRawSourceFileInfo.java b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/IRawSourceFileInfo.java
new file mode 100644
index 00000000000..981ded20dcb
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/IRawSourceFileInfo.java
@@ -0,0 +1,56 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Martin Weber.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.jsoncdb.core.participant;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Information about C preprocessor symbols and include paths collected from a
+ * compiler command-line or by performing compiler built-ins detection.
+ *
+ * @author weber
+ */
+public interface IRawSourceFileInfo {
+ /**
+ * Gets the preprocessor symbols (macro definition)s.
+ */
+ Map<String, String> getDefines();
+
+ /**
+ * Gets the preprocessor symbol cancellations (macro undefine) collected from
+ * the command-line.
+ */
+ List<String> getUndefines();
+
+ /**
+ * Gets the preprocessor include paths collected from the command-line.
+ */
+ List<String> getIncludePaths();
+
+ /**
+ * Gets the preprocessor system include paths collected from the command-line.
+ */
+ List<String> getSystemIncludePaths();
+
+ /**
+ * Gets the names of files will be pre-processed by the compiler before parsing the source-file in
+ * order to populate the preprocessor macro-dictionary.
+ */
+ List<String> getMacroFiles();
+
+ /**
+ * Gets the names of files that will be pre-processed by the compiler as if
+ * an {@code #include "file"} directive appeared as the first line of the source file.
+ */
+ List<String> getIncludeFiles();
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/IRawSourceFileInfoCollector.java b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/IRawSourceFileInfoCollector.java
new file mode 100644
index 00000000000..e4828416ef2
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/IRawSourceFileInfoCollector.java
@@ -0,0 +1,69 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Martin Weber.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.jsoncdb.core.participant;
+
+/**
+ * Gathers information about C preprocessor symbols and include paths collected
+ * from a compiler command-line or by performing compiler built-ins detection.
+ *
+ * @author weber
+ */
+public interface IRawSourceFileInfoCollector {
+
+ /**
+ * Adds a preprocessor symbol (macro definition).
+ *
+ * @param name the name of the preprocessor symbol
+ * @param value the symbol value or {@code null} or the empty string if the
+ * symbol has no value
+ */
+ void addDefine(String name, String value);
+
+ /**
+ * Adds a preprocessor symbol cancellation (macro undefine) and cancels any
+ * previous definition of {@code name} that was added through
+ * {@link #addDefine(String, String)}.
+ *
+ * @param name the name of the preprocessor symbol to cancel
+ */
+ void addUndefine(String name);
+
+ /**
+ * Adds a preprocessor include path.
+ *
+ * @param path the name of the include directory
+ */
+ void addIncludePath(String path);
+
+ /**
+ * Adds the name of a file that will be pre-processed by the compiler before parsing the source-file in
+ * order to populate the preprocessor macro-dictionary.
+ *
+ * @param path the name of the file
+ */
+ void addSystemIncludePath(String path);
+
+ /**
+ * Adds the name of a file that will be pre-processed by the compiler as if
+ * an {@code #include "file"} directive appeared as the first line of the source file.
+ *
+ * @param path the name of the file
+ */
+ void addMacroFile(String path);
+
+ /**
+ * Adds a preprocessor system include path.
+ *
+ * @param path the name of the include directory
+ */
+ void addIncludeFile(String path);
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/IResponseFileArglet.java b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/IResponseFileArglet.java
new file mode 100644
index 00000000000..79e170b62ce
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/IResponseFileArglet.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2017-2019 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.jsoncdb.core.participant;
+
+/**
+ * Parses a 'response file' tool argument and its content.
+ *
+ * @author Martin Weber
+ */
+public interface IResponseFileArglet {
+
+ /**
+ * Detects whether the first argument on the given {@code argsLine} argument
+ * denotes a response file and parses that file.
+ *
+ * @param parserHandler the handler to parse the arguments in the
+ * response-file`s content
+ * @param argsLine the arguments passed to the tool, as they appear in the
+ * build output. Implementers may safely assume that the
+ * specified value does not contain leading whitespace
+ * characters, but trailing WS may occur.
+ * @return the number of characters from {@code argsLine} that has been
+ * processed. Return a value of {@code zero} or less, if this tool
+ * argument parser cannot process the first argument from the input.
+ */
+ int process(IParserHandler parserHandler, String argsLine);
+
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/IToolCommandlineParser.java b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/IToolCommandlineParser.java
new file mode 100644
index 00000000000..002e22160d8
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/IToolCommandlineParser.java
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * Copyright (c) 2016-2020 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.jsoncdb.core.participant;
+
+import java.util.List;
+import java.util.Optional;
+
+import org.eclipse.cdt.jsoncdb.core.participant.builtins.IBuiltinsDetectionBehavior;
+import org.eclipse.core.runtime.IPath;
+
+/**
+ * Parses the command-line produced by a specific tool invocation and detects
+ * LanguageSettings.
+ *
+ * @author Martin Weber
+ */
+public interface IToolCommandlineParser {
+ /**
+ * Parses all arguments given to the tool.
+ *
+ * @param cwd the current working directory of the compiler at the time of its
+ * invocation
+ * @param args the command line arguments to process
+ *
+ * @throws NullPointerException if any of the arguments is {@code null}
+ */
+ public IResult processArgs(IPath cwd, String args);
+
+ /**
+ * Gets the {@code IBuiltinsDetectionBehavior} which specifies how built-in
+ * compiler macros and include path detection is handled for a specific
+ * compiler.
+ *
+ * @return the {@code IBuiltinsDetectionBehavior} or an empty {@code Optional}
+ * if the compiler does not support built-in detection
+ */
+ public Optional<IBuiltinsDetectionBehavior> getIBuiltinsDetectionBehavior();
+
+ /**
+ * The result of processing a compiler command-line.
+ *
+ * @author Martin Weber
+ *
+ * @see IToolCommandlineParser#processArgs(IPath, String)
+ */
+ interface IResult extends IRawSourceFileInfo {
+ /**
+ * Gets the compiler arguments from the command-line that affect built-in
+ * detection. For the GNU compilers, these are options like {@code --sysroot}
+ * and options that specify the language's standard ({@code -std=c++17}.
+ */
+ List<String> getBuiltinDetectionArgs();
+ } // IResult
+} \ No newline at end of file
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/IToolDetectionParticipant.java b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/IToolDetectionParticipant.java
new file mode 100644
index 00000000000..0a2d782872f
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/IToolDetectionParticipant.java
@@ -0,0 +1,147 @@
+/*******************************************************************************
+ * Copyright (c) 2019-2020 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.jsoncdb.core.participant;
+
+import java.util.Objects;
+import java.util.Optional;
+
+/**
+ * Participates in generating {@link org.eclipse.cdt.core.parser.IScannerInfo}
+ * objects for the files being compiled in order to support the CDT indexer/
+ * syntax highlighting.<br>
+ * Generation of the {@code IScannerInfo} objects is done by analyzing a
+ * {@code compile_commands.json} file produced by cmake.
+ * <p>
+ * This interface is the expected interface for extensions provided for the
+ * {@code org.eclipse.cdt.jsoncdb.core.detectionParticipant} extension point.
+ * </p>
+ *
+ * @author Martin Weber
+ */
+public interface IToolDetectionParticipant {
+
+ /**
+ * Gets the parser for the tool-specific command-line arguments.
+ *
+ * @return the parser, never {@code null}
+ */
+ IToolCommandlineParser getParser();
+
+ /**
+ * Gets whether this object can handle NTFS file system paths in the compiler
+ * argument in addition to a Linux path (which has forward slashes to separate
+ * path name components). If {@code true} the detection logic will also try to
+ * match path name with backslashes and will try to expand windows short paths
+ * like <code>C:/pr~1/aa~1.exe</code>.
+ */
+ boolean canHandleNtfsPaths();
+
+ /**
+ * Gets, whether the parser for the tool arguments can properly parse the
+ * specified command-line string.
+ *
+ * @param commandLine the command line to match
+ * @param matchBackslash whether to match on file system paths with backslashes
+ * in the compiler argument or to match an paths with
+ * forward slashes
+ * @return An empty {@code Optional} if the tool/compiler handled by this object
+ * does not match the first argument (the tool name) from the
+ * command-line string. Otherwise, if the tool name matches, a
+ * MatchResult holding the de-composed command-line is returned.
+ */
+ Optional<MatchResult> basenameMatches(String commandLine, boolean matchBackslash);
+
+ /**
+ * Gets, whether the parser for the tool arguments can properly parse the
+ * specified command-line string. This may be time-consuming, since it creates a
+ * Matcher object on each invocation.
+ *
+ * @param commandLine the command-line to match
+ * @param matchBackslash whether to match on file system paths with backslashes
+ * in the compiler argument or to match an paths with
+ * forward slashes
+ * @param versionRegex a regular expression that matches the version string in
+ * the name of the tool to detect.
+ * @return An empty {@code Optional} if the tool/compiler handled by this object
+ * does not match the first argument (the tool name) from the
+ * command-line string. Otherwise, if the tool name matches, a
+ * MatchResult holding the de-composed command-line is returned.
+ */
+ Optional<MatchResult> basenameWithVersionMatches(String commandLine, boolean matchBackslash, String versionRegex);
+
+ /**
+ * Gets, whether the parser for the tool arguments can properly parse the
+ * specified command-line string.
+ *
+ * @param commandLine the command-line to match
+ * @param matchBackslash whether to match on file system paths with backslashes
+ * in the compiler argument or to match an paths with
+ * forward slashes
+ * @return An empty {@code Optional} if the tool/compiler handled by this object
+ * does not match the first argument (the tool name) from the
+ * command-line string. Otherwise, if the tool name matches, a
+ * MatchResult holding the de-composed command-line is returned.
+ */
+ Optional<MatchResult> basenameWithExtensionMatches(String commandLine, boolean matchBackslash);
+
+ /**
+ * Gets, whether the parser for the tool arguments can properly parse the
+ * specified command-line string. This may be time-consuming, since it creates a
+ * Matcher object on each invocation.
+ *
+ * @param commandLine the command-line to match
+ * @param matchBackslash whether to match on file system paths with backslashes
+ * in the compiler argument or to match an paths with
+ * forward slashes
+ * @param versionRegex a regular expression that matches the version string in
+ * the name of the tool to detect.
+ * @return An empty {@code Optional} if the tool/compiler handled by this object
+ * does not match the first argument (the tool name) from the
+ * command-line string. Otherwise, if the tool name matches, a
+ * MatchResult holding the de-composed command-line is returned.
+ */
+ Optional<MatchResult> basenameWithVersionAndExtensionMatches(String commandLine, boolean matchBackslash,
+ String versionRegex);
+
+ /**
+ * The result of matching a command-line string.
+ */
+ public static class MatchResult {
+ private final String command;
+ private final String arguments;
+
+ /**
+ * @param command the command from the command-line, without the argument
+ * string. If the command contains space characters, the
+ * surrounding quotes must have been removed,
+ * @param arguments the remaining arguments from the command-line, without the
+ * command
+ */
+ public MatchResult(String command, String arguments) {
+ this.command = Objects.requireNonNull(command, "command"); //$NON-NLS-1$
+ this.arguments = Objects.requireNonNull(arguments, "arguments"); //$NON-NLS-1$
+ }
+
+ /**
+ * Gets the command from the command-line, without the argument string. If the
+ * command contains space characters, the surrounding quotes have been removed,
+ */
+ public String getCommand() {
+ return this.command;
+ }
+
+ /**
+ * Gets the remaining arguments from the command-line, without the command.
+ */
+ public String getArguments() {
+ return this.arguments;
+ }
+ } // MatchResult
+} \ No newline at end of file
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/ParticipantTestUtil.java b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/ParticipantTestUtil.java
new file mode 100644
index 00000000000..0f55e7f731c
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/ParticipantTestUtil.java
@@ -0,0 +1,45 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.jsoncdb.core.participant;
+
+import org.eclipse.cdt.jsoncdb.core.internal.ParserDetection;
+
+/**
+ * Utility methods for unit testing.
+ *
+ * @author Martin Weber
+ */
+public class ParticipantTestUtil {
+
+ private ParticipantTestUtil() {
+ }
+
+ /**
+ * Determines the tool detection participant that can parse the specified
+ * command-line.
+ *
+ * @param line the command line to process
+ * @param versionSuffixRegex the regular expression to match a version suffix
+ * in the compiler name or {@code null} to not try to
+ * detect the compiler with a version suffix
+ * @param tryWindowsDetectors whether to also try the detectors for ms windows
+ * OS
+ *
+ * @return the detected {@link IToolDetectionParticipant} or {@code null} if
+ * none of the tool detection participants matched the tool name in the
+ * specified command-line string.
+ */
+ public static IToolDetectionParticipant determineToolDetectionParticipant(String line, String versionSuffixRegex,
+ boolean tryWindowsDetectors) {
+ ParserDetection.ParserDetectionResult result = ParserDetection.determineDetector(line, versionSuffixRegex,
+ tryWindowsDetectors);
+ return result == null ? null : result.getDetectorWithMethod().getToolDetectionParticipant();
+ }
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/ResponseFileArglets.java b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/ResponseFileArglets.java
new file mode 100644
index 00000000000..16f162eb2af
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/ResponseFileArglets.java
@@ -0,0 +1,94 @@
+/*******************************************************************************
+ * Copyright (c) 2017-2019 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.jsoncdb.core.participant;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.regex.Matcher;
+
+import org.eclipse.cdt.jsoncdb.core.participant.Arglets.NameOptionMatcher;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+
+/**
+ * Various response-file argument parser implementations.
+ *
+ * @author Martin Weber
+ */
+public class ResponseFileArglets {
+ /**
+ * matches a response file name with quoted file name. Name in matcher group 2
+ */
+ @SuppressWarnings("nls")
+ private static final String REGEX_QUOTED_FILE = "\\s*([\"'])(.+?)\\1";
+ /**
+ * matches a response file name with unquoted file name. Name in matcher group 1
+ */
+ @SuppressWarnings("nls")
+ private static final String REGEX_UNQUOTED_FILE = "\\s*([^\\s]+)";
+
+ /**
+ * Handles a response file argument that starts with the '@' character.
+ */
+ public static class At implements IResponseFileArglet {
+ @SuppressWarnings("nls")
+ private static final NameOptionMatcher[] optionMatchers = {
+ /* unquoted directory */
+ new NameOptionMatcher("@" + REGEX_UNQUOTED_FILE, 1),
+ /* quoted directory */
+ new NameOptionMatcher("@" + REGEX_QUOTED_FILE, 2) };
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.cdt.jsoncdb.IResponseFileArglet
+ * #process(org.eclipse.cdt.jsoncdb.IParserHandler, java.lang.String)
+ */
+ @Override
+ public int process(IParserHandler parserHandler, String argsLine) {
+ for (NameOptionMatcher oMatcher : optionMatchers) {
+ final Matcher matcher = oMatcher.pattern.matcher(argsLine);
+
+ if (matcher.lookingAt()) {
+ String fname = matcher.group(oMatcher.nameGroup);
+ final int consumed = matcher.end();
+ if ("<<".equals(fname)) { //$NON-NLS-1$
+ // see https://github.com/15knots/cmake4eclipse/issues/94
+ // Handle '@<< compiler-args <<' syntax: The file '<<' does not exist, arguments
+ // come from argsline.
+ // so we just do not open the non-existing file
+ return consumed;
+ }
+
+ IPath path = Path.fromOSString(fname);
+ if (!path.isAbsolute()) {
+ // relative path, prepend CWD
+ fname = parserHandler.getCompilerWorkingDirectory().append(path).toOSString();
+ }
+
+ // parse file
+ java.nio.file.Path fpath = Paths.get(fname);
+ try {
+ String args2 = new String(Files.readAllBytes(fpath));
+ parserHandler.parseArguments(args2);
+ } catch (IOException e) {
+ // swallow exception for now
+ e.printStackTrace();
+ }
+ return consumed;
+ }
+ }
+ return 0;// no input consumed
+ }
+
+ }
+
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/builtins/GccOutputProcessor.java b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/builtins/GccOutputProcessor.java
new file mode 100644
index 00000000000..e30d555fb2e
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/builtins/GccOutputProcessor.java
@@ -0,0 +1,175 @@
+/*******************************************************************************
+ * Copyright (c) 2018-2020 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.jsoncdb.core.participant.builtins;
+
+import java.util.Optional;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry;
+import org.eclipse.cdt.core.settings.model.ICSettingEntry;
+import org.eclipse.cdt.core.settings.model.util.CDataUtil;
+import org.eclipse.cdt.jsoncdb.core.participant.IRawSourceFileInfoCollector;
+
+/**
+ * A {link IBuiltinsOutputProcessor} for the GNU C and GNU C++ compiler and derivatives.
+ *
+ * @author Martin Weber
+ */
+public final class GccOutputProcessor implements IBuiltinsOutputProcessor {
+ @SuppressWarnings("nls")
+ private static final OutputLineProcessor[] macros = {
+ new OutputLineProcessor("#define\\s+(\\S+)\\s*(.*)", 1, 2, false, 0),
+ new OutputLineProcessor("#define\\s+(\\S+)\\(.*?\\)\\s*(.*)", 1, 2, false, 0), };
+
+ @SuppressWarnings("nls")
+ private static final OutputLineProcessor[] localIncludes = {
+ new OutputLineProcessor(" *(\\S.*)", 1, -1, true, ICSettingEntry.LOCAL) };
+
+ @SuppressWarnings("nls")
+ private static final OutputLineProcessor[] systemIncludes = {
+ new OutputLineProcessor(" *(\\S.*)", 1, -1, true, 0) };
+
+ @SuppressWarnings("nls")
+ private static final OutputLineProcessor[] frameworks = {
+ new OutputLineProcessor(" *(\\S.*)", 1, -1, true, ICSettingEntry.FRAMEWORKS_MAC) };
+
+ private State state = State.NONE;
+
+ // private static final String frameworkIndicator = "(framework directory)";
+
+ public GccOutputProcessor() {
+ }
+
+ @SuppressWarnings("nls")
+ @Override
+ public void processLine(String line, IRawSourceFileInfoCollector infoCollector) {
+
+ // include paths
+ if (line.equals("#include \"...\" search starts here:")) {
+ state = State.EXPECTING_LOCAL_INCLUDE;
+ return;
+ } else if (line.equals("#include <...> search starts here:")) {
+ state = State.EXPECTING_SYSTEM_INCLUDE;
+ return;
+ } else if (line.startsWith("End of search list.")) {
+ state = State.NONE;
+ return;
+ } else if (line.equals("Framework search starts here:")) {
+ // NOTE: need sample output of 'gcc -E -P -Wp,-v /tmp/foo.c' to implement this
+ state = State.EXPECTING_FRAMEWORK;
+ return;
+ } else if (line.startsWith("End of framework search list.")) {
+ state = State.NONE;
+ return;
+ }
+
+ if (state == State.EXPECTING_LOCAL_INCLUDE) {
+ for (OutputLineProcessor processor : localIncludes) {
+ Optional<ICLanguageSettingEntry> result = processor.process(line);
+ if (result.isPresent()) {
+ infoCollector.addIncludePath(result.get().getName());
+ return; // line matched
+ }
+ }
+ } else if (state == State.EXPECTING_SYSTEM_INCLUDE) {
+ for (OutputLineProcessor processor : systemIncludes) {
+ Optional<ICLanguageSettingEntry> result = processor.process(line);
+ if (result.isPresent()) {
+ infoCollector.addSystemIncludePath(result.get().getName());
+ return; // line matched
+ }
+ }
+ } else if (state == State.EXPECTING_FRAMEWORK) {
+ for (OutputLineProcessor processor : frameworks) {
+ Optional<ICLanguageSettingEntry> result = processor.process(line);
+ if (result.isPresent()) {
+ // IExtendedScannerInfo has no mean to specify ICSettingEntry.FRAMEWORKS_MAC
+ // infoCollector.addSettingEntry(result.get());
+ return; // line matched
+ }
+ }
+ } else {
+ // macros
+ for (OutputLineProcessor processor : macros) {
+ Optional<ICLanguageSettingEntry> result = processor.process(line);
+ if (result.isPresent()) {
+ ICLanguageSettingEntry settingEntry = result.get();
+ infoCollector.addDefine(settingEntry.getName(), settingEntry.getValue());
+ return; // line matched
+ }
+ }
+ // System.err.println("NO MATCH ON LINE: '" + line + "'");
+ }
+ }
+
+ private enum State {
+ NONE, EXPECTING_LOCAL_INCLUDE, EXPECTING_SYSTEM_INCLUDE, EXPECTING_FRAMEWORK
+ }
+
+ /**
+ * The purpose of this class is to parse a line from the compiler output when
+ * detecting built-in values and to create a language settings entry out of it.
+ *
+ * @author Martin Weber
+ */
+ private static class OutputLineProcessor {
+
+ private final Pattern pattern;
+ private final int nameGroup;
+ private final int valueGroup;
+ private final int kind;
+ private final int extraFlag;
+
+ /**
+ * Constructor.
+ *
+ * @param pattern regular expression pattern being parsed by the parser.
+ * @param nameGroup capturing group number defining the
+ * {@link ICSettingEntry#getName() name} of an entry.
+ * @param valueGroup capturing group number defining the
+ * {@link ICSettingEntry#getValue() value} of an entry.
+ * Specify {@code -1} if no value is captured.
+ * @param isIncludePath kind of language settings entries to create. Specify
+ * {@code true} to create a
+ * {@link ICSettingEntry#INCLUDE_PATH} entry, {@code false}
+ * to create a {@link ICLanguageSettingEntry#MACRO} entry
+ * @param extraFlag extra-flags to add to the created language settings
+ * entry, e.g. {@link ICSettingEntry#LOCAL} or
+ * {@link ICSettingEntry#FRAMEWORKS_MAC}.
+ */
+ public OutputLineProcessor(String pattern, int nameGroup, int valueGroup, boolean isIncludePath,
+ int extraFlag) {
+ this.pattern = Pattern.compile(pattern);
+ this.nameGroup = nameGroup;
+ this.valueGroup = valueGroup;
+ this.kind = isIncludePath ? ICSettingEntry.INCLUDE_PATH : ICSettingEntry.MACRO;
+ this.extraFlag = extraFlag;
+ }
+
+ /**
+ * Processes specified compiler output line.
+ *
+ * @param line the compiler output line to process
+ * @return the language settings entry constructed from the given output line or
+ * an empty Optional if the line did not match any settings entry
+ */
+ protected Optional<ICLanguageSettingEntry> process(String line) {
+ final Matcher matcher = pattern.matcher(line);
+ if (matcher.matches()) {
+ final String name = matcher.group(nameGroup);
+ final String value = valueGroup == -1 ? null : matcher.group(valueGroup);
+ return Optional.of((ICLanguageSettingEntry) CDataUtil.createEntry(kind, name, value, null,
+ ICSettingEntry.BUILTIN | ICSettingEntry.READONLY | extraFlag));
+ }
+ return Optional.empty(); // no match
+ }
+ }
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/builtins/IBuiltinsDetectionBehavior.java b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/builtins/IBuiltinsDetectionBehavior.java
new file mode 100644
index 00000000000..ff4b06c4854
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/builtins/IBuiltinsDetectionBehavior.java
@@ -0,0 +1,39 @@
+/*******************************************************************************
+ * Copyright (c) 2019-2020 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.jsoncdb.core.participant.builtins;
+
+import java.util.List;
+
+/**
+ * Specifies how built-in compiler macros and include path detection is handled
+ * for a specific compiler.
+ *
+ * @author Martin Weber
+ */
+public interface IBuiltinsDetectionBehavior {
+ /**
+ * Gets the compiler arguments that tell the compiler to output its built-in
+ * values for include search paths and predefined macros. For the GNU compilers,
+ * these are {@code -E -P -dM -Wp,-v}.
+ */
+ List<String> getBuiltinsOutputEnablingArgs();
+
+ /**
+ * Creates an object that parses the output from built-in detection.
+ */
+ IBuiltinsOutputProcessor createCompilerOutputProcessor();
+
+ /**
+ * Gets whether to suppress the error-message that is printed if the compiler
+ * process exited with a non-zero exit status code. Except for some special
+ * cases, most implementations, should return {@code false} here.
+ */
+ boolean suppressErrormessage();
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/builtins/IBuiltinsOutputProcessor.java b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/builtins/IBuiltinsOutputProcessor.java
new file mode 100644
index 00000000000..e75676d2211
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/builtins/IBuiltinsOutputProcessor.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2018-2020 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.jsoncdb.core.participant.builtins;
+
+import org.eclipse.cdt.jsoncdb.core.participant.IRawSourceFileInfoCollector;
+
+/**
+ * Responsible for parsing the output that is produced when a compiler is
+ * invoked to detect its-built-in preprocessor macros and include paths.
+ */
+public interface IBuiltinsOutputProcessor {
+
+ /**
+ * Parsers the given line from the compiler output and places each
+ * ICLanguageSettingEntry found in the given {@code IProcessingContext}.
+ *
+ * @param line a line from the compiler output to parse
+ * @param infoCollector the buffer that receives the new {@code LanguageSetting}
+ * entries
+ */
+ void processLine(String line, IRawSourceFileInfoCollector infoCollector);
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/builtins/OutputSniffer.java b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/builtins/OutputSniffer.java
new file mode 100644
index 00000000000..29f69f9ec22
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/builtins/OutputSniffer.java
@@ -0,0 +1,106 @@
+/*******************************************************************************
+ * Copyright (c) 2018-2020 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.jsoncdb.core.participant.builtins;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.Objects;
+
+import org.eclipse.cdt.jsoncdb.core.participant.IRawSourceFileInfoCollector;
+
+/**
+ * An OutputStream that passes each line written to it to a
+ * IBuiltinsOutputProcessor.
+ *
+ * @author Martin Weber
+ *
+ * @implNote this is visible for testing only
+ */
+public class OutputSniffer extends OutputStream {
+
+ private static final String SEP = System.lineSeparator();
+ private final StringBuilder buffer;
+ private final IBuiltinsOutputProcessor processor;
+ private final IRawSourceFileInfoCollector infoCollector;
+ private final OutputStream os;
+
+ /**
+ * @param outputStream the OutputStream to write to or {@code null}
+ * @param infoCollector collector for information about C preprocessor symbols
+ * and include paths
+ */
+ public OutputSniffer(IBuiltinsOutputProcessor processor, OutputStream outputStream,
+ IRawSourceFileInfoCollector infoCollector) {
+ this.processor = Objects.requireNonNull(processor, "processor"); //$NON-NLS-1$
+ this.infoCollector = Objects.requireNonNull(infoCollector, "infoCollector"); //$NON-NLS-1$
+ this.os = outputStream;
+ buffer = new StringBuilder(512);
+ }
+
+ @Override
+ public void write(int c) throws IOException {
+ if (os != null)
+ os.write(c);
+ synchronized (this) {
+ buffer.append(new String(new byte[] { (byte) c }));
+ splitLines();
+ }
+ }
+
+ @Override
+ public void write(byte[] b, int off, int len) throws IOException {
+ if (os != null)
+ os.write(b, off, len);
+ synchronized (this) {
+ buffer.append(new String(b, off, len));
+ splitLines();
+ }
+ }
+
+ @Override
+ public void flush() throws IOException {
+ if (os != null)
+ os.flush();
+ synchronized (this) {
+ splitLines();
+ // process remaining bytes
+ String line = buffer.toString();
+ buffer.setLength(0);
+ processLine(line);
+ }
+ }
+
+ @Override
+ public void close() throws IOException {
+ if (os != null)
+ os.close();
+ flush();
+ }
+
+ /**
+ * Splits the buffer into separate lines and sends these to the parsers.
+ *
+ */
+ private void splitLines() {
+ int idx;
+ while ((idx = buffer.indexOf(SEP)) != -1) {
+ String line = buffer.substring(0, idx);
+ buffer.delete(0, idx + SEP.length());
+ processLine(line);
+ }
+ }
+
+ /**
+ * @param line
+ */
+ private void processLine(String line) {
+ processor.processLine(line, infoCollector);
+ }
+} \ No newline at end of file
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/package-info.java b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/package-info.java
new file mode 100644
index 00000000000..720f806adb8
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.core/src/org/eclipse/cdt/jsoncdb/core/participant/package-info.java
@@ -0,0 +1,18 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+/**
+ * Classes and interfaces allowing for third-party compiler vendors so they can
+ * provide a plugin that understands their compiler specific command-line
+ * options and participates in command-line analysis in order to support the CDT
+ * indexer/ syntax highlighting.
+ *
+ * @author Martin Weber
+ */
+package org.eclipse.cdt.jsoncdb.core.participant; \ No newline at end of file
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop.tests/.classpath b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop.tests/.classpath
new file mode 100644
index 00000000000..73d6894a615
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop.tests/.classpath
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11">
+ <attributes>
+ <attribute name="module" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src">
+ <attributes>
+ <attribute name="test" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop.tests/.gitignore b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop.tests/.gitignore
new file mode 100644
index 00000000000..b83d22266ac
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop.tests/.gitignore
@@ -0,0 +1 @@
+/target/
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop.tests/.project b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop.tests/.project
new file mode 100644
index 00000000000..43e26b9e82c
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop.tests/.project
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.cdt.jsoncdb.hpenonstop.tests</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop.tests/.settings/org.eclipse.core.resources.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop.tests/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop.tests/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop.tests/.settings/org.eclipse.jdt.core.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop.tests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..5b1c443114d
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop.tests/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=ignore
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
+org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=ignore
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/doc/org.eclipse.cdt.doc.isv/.settings/org.eclipse.jdt.launching.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop.tests/.settings/org.eclipse.jdt.launching.prefs
index f8a131b56e0..f8a131b56e0 100644
--- a/doc/org.eclipse.cdt.doc.isv/.settings/org.eclipse.jdt.launching.prefs
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop.tests/.settings/org.eclipse.jdt.launching.prefs
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop.tests/.settings/org.eclipse.jdt.ui.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop.tests/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop.tests/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop.tests/.settings/org.eclipse.m2e.core.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop.tests/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 00000000000..f897a7f1cb2
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop.tests/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.ui/.settings/org.eclipse.pde.api.tools.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop.tests/.settings/org.eclipse.pde.api.tools.prefs
index ec9fbf321d0..ec9fbf321d0 100644
--- a/toolchains/arduino/org.eclipse.cdt.arduino.ui/.settings/org.eclipse.pde.api.tools.prefs
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop.tests/.settings/org.eclipse.pde.api.tools.prefs
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/.settings/org.eclipse.pde.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop.tests/.settings/org.eclipse.pde.prefs
index 51a63ec9988..51a63ec9988 100644
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/.settings/org.eclipse.pde.prefs
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop.tests/.settings/org.eclipse.pde.prefs
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop.tests/META-INF/MANIFEST.MF b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop.tests/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..9717be56672
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,11 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Copyright: %Bundle-Copyright
+Bundle-SymbolicName: org.eclipse.cdt.jsoncdb.hpenonstop.tests
+Bundle-Version: 1.0.200.qualifier
+Bundle-Vendor: %Bundle-Vendor
+Fragment-Host: org.eclipse.cdt.jsoncdb.hpenonstop
+Import-Package: org.junit
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Automatic-Module-Name: org.eclipse.cdt.jsoncdb.hpenonstop.tests
+Bundle-Name: %Bundle-Name
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop.tests/OSGI-INF/l10n/bundle.properties b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop.tests/OSGI-INF/l10n/bundle.properties
new file mode 100644
index 00000000000..e4e1f6111aa
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop.tests/OSGI-INF/l10n/bundle.properties
@@ -0,0 +1,10 @@
+#Properties file for org.eclipse.cdt.jsoncdb.hpenonstop.tests
+Bundle-Name = org.eclipse.cdt.jsoncdb.hpenonstop.tests
+Bundle-Vendor = Eclipse CDT
+Bundle-Copyright = 2020 Martin Weber\n\
+\n\
+This program and the accompanying materials are made\n\
+available under the terms of the Eclipse Public License 2.0\n\
+which is available at https://www.eclipse.org/legal/epl-2.0/\n\
+\n\
+SPDX-License-Identifier: EPL-2.0\n\ \ No newline at end of file
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop.tests/about.html b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop.tests/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop.tests/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop.tests/build.properties b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop.tests/build.properties
new file mode 100644
index 00000000000..0a753e1d198
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop.tests/build.properties
@@ -0,0 +1,8 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ OSGI-INF/l10n/bundle.properties,\
+ OSGI-INF/,\
+ about.html
+src.includes = about.html
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop.tests/src/org/eclipse/cdt/jsoncdb/hpenonstop/ToolDetectionParticipantTest.java b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop.tests/src/org/eclipse/cdt/jsoncdb/hpenonstop/ToolDetectionParticipantTest.java
new file mode 100644
index 00000000000..824645c7837
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop.tests/src/org/eclipse/cdt/jsoncdb/hpenonstop/ToolDetectionParticipantTest.java
@@ -0,0 +1,116 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.jsoncdb.hpenonstop;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import java.util.Locale;
+
+import org.eclipse.cdt.jsoncdb.core.participant.IToolDetectionParticipant;
+import org.eclipse.cdt.jsoncdb.core.participant.ParticipantTestUtil;
+import org.junit.Test;
+
+/**
+ * @author Martin Weber
+ */
+public class ToolDetectionParticipantTest {
+ @Test
+ public void testDetermineToolDetectionParticipant_c89() {
+ IToolDetectionParticipant result = ParticipantTestUtil
+ .determineToolDetectionParticipant("/usr/bin/c89 -C blah.c", null, true);
+ assertNotNull(result);
+ assertEquals(HpeC89ToolDetectionParticipant.class, result.getClass());
+
+ result = ParticipantTestUtil.determineToolDetectionParticipant("c89 -C blah.c", null, true);
+ assertNotNull(result);
+ assertEquals(HpeC89ToolDetectionParticipant.class, result.getClass());
+
+ result = ParticipantTestUtil.determineToolDetectionParticipant("/usr/bin/c89.exe -C blah.c", null, true);
+ assertNotNull(result);
+ assertEquals(HpeC89ToolDetectionParticipant.class, result.getClass());
+
+ result = ParticipantTestUtil.determineToolDetectionParticipant("c89.exe -C blah.c", null, true);
+ assertNotNull(result);
+ assertEquals(HpeC89ToolDetectionParticipant.class, result.getClass());
+ }
+
+ @Test
+ public void testDetermineToolDetectionParticipant_c89_quote() {
+ String[] quotes = { "\"", "'" };
+ for (String quote : quotes) {
+ String args = String.format(Locale.ROOT, "%1$s/usr/bin/c89%1$s -I /foo/c89 -C blah.c", quote);
+ IToolDetectionParticipant result = ParticipantTestUtil.determineToolDetectionParticipant(args, null, true);
+ assertNotNull("Command in quotes= " + quote, result);
+ assertEquals(HpeC89ToolDetectionParticipant.class, result.getClass());
+ }
+ }
+
+ @Test
+ public void testDetermineToolDetectionParticipant_c99() {
+ IToolDetectionParticipant result = ParticipantTestUtil
+ .determineToolDetectionParticipant("/usr/bin/c99 -C blah.c", null, true);
+ assertNotNull(result);
+ assertEquals(HpeC99ToolDetectionParticipant.class, result.getClass());
+
+ result = ParticipantTestUtil.determineToolDetectionParticipant("c99 -C blah.c", null, true);
+ assertNotNull(result);
+ assertEquals(HpeC99ToolDetectionParticipant.class, result.getClass());
+
+ result = ParticipantTestUtil.determineToolDetectionParticipant("/usr/bin/c99.exe -C blah.c", null, true);
+ assertNotNull(result);
+ assertEquals(HpeC99ToolDetectionParticipant.class, result.getClass());
+
+ result = ParticipantTestUtil.determineToolDetectionParticipant("c99.exe -C blah.c", null, true);
+ assertNotNull(result);
+ assertEquals(HpeC99ToolDetectionParticipant.class, result.getClass());
+ }
+
+ @Test
+ public void testDetermineToolDetectionParticipant_c99_quote() {
+ String[] quotes = { "\"", "'" };
+ for (String quote : quotes) {
+ String args = String.format(Locale.ROOT, "%1$s/usr/bin/c99%1$s -I /foo/c99 -C blah.c", quote);
+ IToolDetectionParticipant result = ParticipantTestUtil.determineToolDetectionParticipant(args, null, true);
+ assertNotNull("Command in quotes= " + quote, result);
+ assertEquals(HpeC99ToolDetectionParticipant.class, result.getClass());
+ }
+ }
+
+ @Test
+ public void testDetermineToolDetectionParticipant_c11() {
+ IToolDetectionParticipant result = ParticipantTestUtil
+ .determineToolDetectionParticipant("/usr/bin/c11 -C blah.c", null, true);
+ assertNotNull(result);
+ assertEquals(HpeC11ToolDetectionParticipant.class, result.getClass());
+
+ result = ParticipantTestUtil.determineToolDetectionParticipant("c11 -C blah.c", null, true);
+ assertNotNull(result);
+ assertEquals(HpeC11ToolDetectionParticipant.class, result.getClass());
+
+ result = ParticipantTestUtil.determineToolDetectionParticipant("/usr/bin/c11.exe -C blah.c", null, true);
+ assertNotNull(result);
+ assertEquals(HpeC11ToolDetectionParticipant.class, result.getClass());
+
+ result = ParticipantTestUtil.determineToolDetectionParticipant("c11.exe -C blah.c", null, true);
+ assertNotNull(result);
+ assertEquals(HpeC11ToolDetectionParticipant.class, result.getClass());
+ }
+
+ @Test
+ public void testDetermineToolDetectionParticipant_c11_quote() {
+ String[] quotes = { "\"", "'" };
+ for (String quote : quotes) {
+ String args = String.format(Locale.ROOT, "%1$s/usr/bin/c11%1$s -I /foo/c11 -C blah.c", quote);
+ IToolDetectionParticipant result = ParticipantTestUtil.determineToolDetectionParticipant(args, null, true);
+ assertNotNull("Command in quotes= " + quote, result);
+ assertEquals(HpeC11ToolDetectionParticipant.class, result.getClass());
+ }
+ }
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/.classpath b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/.classpath
new file mode 100644
index 00000000000..79a7cca69b1
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/.classpath
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11">
+ <attributes>
+ <attribute name="maven.pomderived" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src/"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/.gitignore b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/.gitignore
new file mode 100644
index 00000000000..b83d22266ac
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/.gitignore
@@ -0,0 +1 @@
+/target/
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/.project b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/.project
new file mode 100644
index 00000000000..2ad5219b460
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/.project
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.cdt.jsoncdb.hpenonstop</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+ </natures>
+</projectDescription>
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/.settings/org.eclipse.core.resources.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/.settings/org.eclipse.jdt.core.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..e3a8104f9ca
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/doc/org.eclipse.cdt.doc.user/.settings/org.eclipse.jdt.launching.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/.settings/org.eclipse.jdt.launching.prefs
index f8a131b56e0..f8a131b56e0 100644
--- a/doc/org.eclipse.cdt.doc.user/.settings/org.eclipse.jdt.launching.prefs
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/.settings/org.eclipse.jdt.launching.prefs
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/.settings/org.eclipse.jdt.ui.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/.settings/org.eclipse.m2e.core.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 00000000000..f897a7f1cb2
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/upc/org.eclipse.cdt.core.parser.upc.tests/.settings/org.eclipse.pde.api.tools.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/.settings/org.eclipse.pde.api.tools.prefs
index ec9fbf321d0..ec9fbf321d0 100644
--- a/upc/org.eclipse.cdt.core.parser.upc.tests/.settings/org.eclipse.pde.api.tools.prefs
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/.settings/org.eclipse.pde.api.tools.prefs
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/.settings/org.eclipse.pde.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/.settings/org.eclipse.pde.prefs
index d2dc703ba9e..d2dc703ba9e 100644
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core/.settings/org.eclipse.pde.prefs
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/.settings/org.eclipse.pde.prefs
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/META-INF/MANIFEST.MF b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..227dfc5daa8
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/META-INF/MANIFEST.MF
@@ -0,0 +1,14 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %bundleName
+Bundle-Copyright: %Bundle-Copyright
+Bundle-SymbolicName: org.eclipse.cdt.jsoncdb.hpenonstop;singleton:=true
+Bundle-Version: 1.0.100.qualifier
+Bundle-Vendor: %Bundle-Vendor
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.core.runtime;bundle-version="3.11.1",
+ org.eclipse.help,
+ org.eclipse.cdt.jsoncdb.core;bundle-version="1.0.0"
+Automatic-Module-Name: org.eclipse.cdt.jsoncdb.hpenonstop
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/about.html b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/build.properties b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/build.properties
new file mode 100644
index 00000000000..2367d3898da
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/build.properties
@@ -0,0 +1,10 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ plugin.properties,\
+ about.html,\
+ help_content_extension.xml,\
+ doc/
+src.includes = about.html
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/doc/compiler.xhtml b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/doc/compiler.xhtml
new file mode 100644
index 00000000000..4d6c26baa5a
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/doc/compiler.xhtml
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
+ <head>
+ <title>HPE NonStop Compilers</title>
+ </head>
+ <body>
+ <div id="lsp">
+ <h4>HPE NonStop Compilers</h4>
+ <table style="border-collapse:collapse">
+ <thead>
+ <tr>
+ <th>Compiler</th>
+ <th>Vendor</th>
+ <th>Language</th>
+ <th>Macros</th>
+ <th>Include directories</th>
+ <th>
+ System include
+ <br />
+ directories
+ </th>
+ <th>Compiler executables</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>c89</td>
+ <td>HPE</td>
+ <td>C/C++</td>
+ <td>Yes</td>
+ <td>Yes</td>
+ <td>No</td>
+ <td>c89, c89.exe</td>
+ </tr>
+ <tr>
+ <td>c99</td>
+ <td>HPE</td>
+ <td>C/C++</td>
+ <td>Yes</td>
+ <td>Yes</td>
+ <td>No</td>
+ <td>c99, c99.exe</td>
+ </tr>
+ <tr>
+ <td>c11</td>
+ <td>HPE</td>
+ <td>C/C++</td>
+ <td>Yes</td>
+ <td>Yes</td>
+ <td>No</td>
+ <td>c11, c11.exe</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+
+<!-- built-ins detection is not supported
+ <div id="builtins">
+ <h4>HPE NonStop Compilers</h4>
+ <table style="border-collapse:collapse">
+ <thead>
+ <tr>
+ <th>Compiler</th>
+ <th>Vendor</th>
+ <th>Macros</th>
+ <th>
+ System
+ <br />
+ include paths
+ </th>
+ <th>
+ Local
+ <br />
+ include paths
+ </th>
+ <th>
+ MACOS Framework
+ <br />
+ include paths
+ </th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>c89</td>
+ <td>HPE</td>
+ <td>N/A</td>
+ <td>N/A</td>
+ <td>N/A</td>
+ <td>N/A</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+-->
+ </body>
+</html> \ No newline at end of file
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/help_content_extension.xml b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/help_content_extension.xml
new file mode 100644
index 00000000000..8d21362bf67
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/help_content_extension.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<contentExtension>
+ <contribution content="doc/compiler.xhtml#lsp"
+ path="/org.eclipse.cdt.jsoncdb.core.doc/doc/html/supported-compilers.xhtml#extra_detection_participant_list"/>
+ <contribution content="doc/compiler.xhtml#builtins"
+ path="/org.eclipse.cdt.jsoncdb.core.doc/doc/html/builtins-detection.xhtml#extra_detection_participant_builtins_list"/>
+</contentExtension> \ No newline at end of file
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/plugin.properties b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/plugin.properties
new file mode 100644
index 00000000000..be01f1b08e8
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/plugin.properties
@@ -0,0 +1,10 @@
+bundleName=JSON Compilation Database Parser Support for HPE NonStop C/C++ compilers
+
+Bundle-Vendor = Eclipse CDT
+Bundle-Copyright = 2019 Martin Weber\n\
+\n\
+This program and the accompanying materials are made\n\
+available under the terms of the Eclipse Public License 2.0\n\
+which is available at https://www.eclipse.org/legal/epl-2.0/\n\
+\n\
+SPDX-License-Identifier: EPL-2.0\n\ \ No newline at end of file
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/plugin.xml b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/plugin.xml
new file mode 100644
index 00000000000..9c0a03c18e9
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/plugin.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension point="org.eclipse.cdt.jsoncdb.core.detectionParticipant">
+ <tool class="org.eclipse.cdt.jsoncdb.hpenonstop.HpeC89ToolDetectionParticipant"
+ displayName="HPE NonStop c89 C &amp; C++"/>
+ <tool class="org.eclipse.cdt.jsoncdb.hpenonstop.HpeC99ToolDetectionParticipant"
+ displayName="HPE NonStop c99 C &amp; C++"/>
+ <tool class="org.eclipse.cdt.jsoncdb.hpenonstop.HpeC11ToolDetectionParticipant"
+ displayName="HPE NonStop c11 C &amp; C++"/>
+ </extension>
+ <extension
+ point="org.eclipse.help.contentExtension">
+ <contentExtension
+ file="help_content_extension.xml">
+ </contentExtension>
+ </extension>
+</plugin>
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/src/org/eclipse/cdt/jsoncdb/hpenonstop/HpeC11ToolDetectionParticipant.java b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/src/org/eclipse/cdt/jsoncdb/hpenonstop/HpeC11ToolDetectionParticipant.java
new file mode 100644
index 00000000000..02982a68f17
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/src/org/eclipse/cdt/jsoncdb/hpenonstop/HpeC11ToolDetectionParticipant.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * Copyright (c) 2019-2020 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.jsoncdb.hpenonstop;
+
+import org.eclipse.cdt.jsoncdb.core.participant.Arglets;
+import org.eclipse.cdt.jsoncdb.core.participant.DefaultToolCommandlineParser;
+import org.eclipse.cdt.jsoncdb.core.participant.DefaultToolDetectionParticipant;
+import org.eclipse.cdt.jsoncdb.core.participant.IArglet;
+import org.eclipse.cdt.jsoncdb.core.participant.ResponseFileArglets;
+
+/**
+ * HPE NonStop c11 C & C++.
+ *
+ * @author Martin Weber
+ */
+public class HpeC11ToolDetectionParticipant extends DefaultToolDetectionParticipant {
+
+ public HpeC11ToolDetectionParticipant() {
+ super("c11", true, "exe", new ToolCommandlineParser()); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ private static class ToolCommandlineParser extends DefaultToolCommandlineParser {
+
+ private static final IArglet[] arglets = { new Arglets.IncludePath_C_POSIX(), new Arglets.MacroDefine_C_POSIX(),
+ new Arglets.MacroUndefine_C_POSIX() };
+
+ private ToolCommandlineParser() {
+ super(new ResponseFileArglets.At(), null, arglets);
+ }
+ }
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/src/org/eclipse/cdt/jsoncdb/hpenonstop/HpeC89ToolDetectionParticipant.java b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/src/org/eclipse/cdt/jsoncdb/hpenonstop/HpeC89ToolDetectionParticipant.java
new file mode 100644
index 00000000000..52ed265d952
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/src/org/eclipse/cdt/jsoncdb/hpenonstop/HpeC89ToolDetectionParticipant.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * Copyright (c) 2019-2020 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.jsoncdb.hpenonstop;
+
+import org.eclipse.cdt.jsoncdb.core.participant.Arglets;
+import org.eclipse.cdt.jsoncdb.core.participant.DefaultToolCommandlineParser;
+import org.eclipse.cdt.jsoncdb.core.participant.DefaultToolDetectionParticipant;
+import org.eclipse.cdt.jsoncdb.core.participant.IArglet;
+import org.eclipse.cdt.jsoncdb.core.participant.ResponseFileArglets;
+
+/**
+ * HPE NonStop c89 C & C++.
+ *
+ * @author Martin Weber
+ */
+public class HpeC89ToolDetectionParticipant extends DefaultToolDetectionParticipant {
+
+ public HpeC89ToolDetectionParticipant() {
+ super("c89", true, "exe", new ToolCommandlineParser()); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ private static class ToolCommandlineParser extends DefaultToolCommandlineParser {
+
+ private static final IArglet[] arglets = { new Arglets.IncludePath_C_POSIX(), new Arglets.MacroDefine_C_POSIX(),
+ new Arglets.MacroUndefine_C_POSIX() };
+
+ private ToolCommandlineParser() {
+ super(new ResponseFileArglets.At(), null, arglets);
+ }
+ }
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/src/org/eclipse/cdt/jsoncdb/hpenonstop/HpeC99ToolDetectionParticipant.java b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/src/org/eclipse/cdt/jsoncdb/hpenonstop/HpeC99ToolDetectionParticipant.java
new file mode 100644
index 00000000000..7902ea051a8
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.hpenonstop/src/org/eclipse/cdt/jsoncdb/hpenonstop/HpeC99ToolDetectionParticipant.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * Copyright (c) 2019-2020 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.jsoncdb.hpenonstop;
+
+import org.eclipse.cdt.jsoncdb.core.participant.Arglets;
+import org.eclipse.cdt.jsoncdb.core.participant.DefaultToolCommandlineParser;
+import org.eclipse.cdt.jsoncdb.core.participant.DefaultToolDetectionParticipant;
+import org.eclipse.cdt.jsoncdb.core.participant.IArglet;
+import org.eclipse.cdt.jsoncdb.core.participant.ResponseFileArglets;
+
+/**
+ * HPE NonStop c99 C & C++.
+ *
+ * @author Martin Weber
+ */
+public class HpeC99ToolDetectionParticipant extends DefaultToolDetectionParticipant {
+
+ public HpeC99ToolDetectionParticipant() {
+ super("c99", true, "exe", new ToolCommandlineParser()); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ private static class ToolCommandlineParser extends DefaultToolCommandlineParser {
+
+ private static final IArglet[] arglets = { new Arglets.IncludePath_C_POSIX(), new Arglets.MacroDefine_C_POSIX(),
+ new Arglets.MacroUndefine_C_POSIX() };
+
+ private ToolCommandlineParser() {
+ super(new ResponseFileArglets.At(), null, arglets);
+ }
+ }
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.intel/.classpath b/jsoncdb/org.eclipse.cdt.jsoncdb.intel/.classpath
new file mode 100644
index 00000000000..79a7cca69b1
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.intel/.classpath
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11">
+ <attributes>
+ <attribute name="maven.pomderived" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src/"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.intel/.gitignore b/jsoncdb/org.eclipse.cdt.jsoncdb.intel/.gitignore
new file mode 100644
index 00000000000..b83d22266ac
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.intel/.gitignore
@@ -0,0 +1 @@
+/target/
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.intel/.project b/jsoncdb/org.eclipse.cdt.jsoncdb.intel/.project
new file mode 100644
index 00000000000..d09a18a8d5c
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.intel/.project
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.cdt.jsoncdb.intel</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+ </natures>
+</projectDescription>
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.intel/.settings/org.eclipse.core.resources.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.intel/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.intel/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.intel/.settings/org.eclipse.jdt.core.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.intel/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..e3a8104f9ca
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.intel/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag/.settings/org.eclipse.jdt.launching.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.intel/.settings/org.eclipse.jdt.launching.prefs
index f8a131b56e0..f8a131b56e0 100644
--- a/jtag/org.eclipse.cdt.debug.gdbjtag/.settings/org.eclipse.jdt.launching.prefs
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.intel/.settings/org.eclipse.jdt.launching.prefs
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.intel/.settings/org.eclipse.jdt.ui.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.intel/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.intel/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.intel/.settings/org.eclipse.m2e.core.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.intel/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 00000000000..f897a7f1cb2
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.intel/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/upc/org.eclipse.cdt.core.parser.upc/.settings/org.eclipse.pde.api.tools.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.intel/.settings/org.eclipse.pde.api.tools.prefs
index ec9fbf321d0..ec9fbf321d0 100644
--- a/upc/org.eclipse.cdt.core.parser.upc/.settings/org.eclipse.pde.api.tools.prefs
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.intel/.settings/org.eclipse.pde.api.tools.prefs
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.ui/.settings/org.eclipse.pde.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.intel/.settings/org.eclipse.pde.prefs
index d2dc703ba9e..d2dc703ba9e 100644
--- a/toolchains/arduino/org.eclipse.cdt.arduino.ui/.settings/org.eclipse.pde.prefs
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.intel/.settings/org.eclipse.pde.prefs
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.intel/META-INF/MANIFEST.MF b/jsoncdb/org.eclipse.cdt.jsoncdb.intel/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..a626e0dae8f
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.intel/META-INF/MANIFEST.MF
@@ -0,0 +1,14 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %bundleName
+Bundle-Copyright: %Bundle-Copyright
+Bundle-SymbolicName: org.eclipse.cdt.jsoncdb.intel;singleton:=true
+Bundle-Version: 1.0.100.qualifier
+Bundle-Vendor: %Bundle-Vendor
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.core.runtime;bundle-version="3.11.1",
+ org.eclipse.help,
+ org.eclipse.cdt.jsoncdb.core;bundle-version="1.0.0"
+Automatic-Module-Name: org.eclipse.cdt.jsoncdb.intel
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.intel/about.html b/jsoncdb/org.eclipse.cdt.jsoncdb.intel/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.intel/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.intel/build.properties b/jsoncdb/org.eclipse.cdt.jsoncdb.intel/build.properties
new file mode 100644
index 00000000000..04dc5ce1555
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.intel/build.properties
@@ -0,0 +1,10 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ plugin.properties,\
+ about.html,\
+ doc/,\
+ help_content_extension.xml
+src.includes = about.html
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.intel/doc/compiler.xhtml b/jsoncdb/org.eclipse.cdt.jsoncdb.intel/doc/compiler.xhtml
new file mode 100644
index 00000000000..ba9cd7a2ac4
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.intel/doc/compiler.xhtml
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
+ <head>
+ <title>ARM.com Compilers</title>
+ </head>
+ <body>
+ <div id="lsp">
+ <h4>Intel Compilers</h4>
+ <table style="border-collapse:collapse">
+ <thead>
+ <tr>
+ <th>Compiler</th>
+ <th>Vendor</th>
+ <th>Language</th>
+ <th>Macros</th>
+ <th>Include directories</th>
+ <th>
+ System include
+ <br />
+ directories
+ </th>
+ <th>Compiler executables</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>icc</td>
+ <td>Intel</td>
+ <td>C</td>
+ <td>Yes</td>
+ <td>Yes</td>
+ <td>No</td>
+ <td>icc, icl</td>
+ </tr>
+ <tr>
+ <td>icpc</td>
+ <td>Intel</td>
+ <td>C++</td>
+ <td>Yes</td>
+ <td>Yes</td>
+ <td>No</td>
+ <td>icpc, icl++</td>
+ </tr>
+ <tr>
+ <td>icl</td>
+ <td>Intel</td>
+ <td>C/C++</td>
+ <td>Yes</td>
+ <td>Yes</td>
+ <td>No</td>
+ <td>icl.exe</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+
+ <div id="builtins">
+ <h4>Intel Compilers</h4>
+ <table style="border-collapse:collapse">
+ <thead>
+ <tr>
+ <th>Compiler</th>
+ <th>Vendor</th>
+ <th>Macros</th>
+ <th>
+ System
+ <br />
+ include paths
+ </th>
+ <th>
+ Local
+ <br />
+ include paths
+ </th>
+ <th>
+ MACOS Framework
+ <br />
+ include paths
+ </th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>icc</td>
+ <td>Intel</td>
+ <td>NYI <a href="#help-icc">[help]</a></td>
+ <td>NYI <a href="#help-icc">[help]</a></td>
+ <td>NYI <a href="#help-icc">[help]</a></td>
+ <td>NYI <a href="#fw-help-icc">[help]</a></td>
+ </tr>
+ </tbody>
+ </table>
+ <p>Remarks:</p>
+ <ul style="list-style-type:none">
+ <li id="fw-help-icc">[help] Help wanted! To implement this, the output of <code>icc -EP -dM empty.c</code>
+ is needed.</li>
+ </ul>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.intel/help_content_extension.xml b/jsoncdb/org.eclipse.cdt.jsoncdb.intel/help_content_extension.xml
new file mode 100644
index 00000000000..1601ab5e3a8
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.intel/help_content_extension.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<contentExtension>
+ <contribution content="doc/compiler.xhtml#lsp"
+ path="/org.eclipse.cdt.jsoncdb.core.doc/doc/html/supported-compilers.xhtml#extra_detection_participant_list"/>
+<!-- built-ins detection is not supported
+ <contribution content="doc/compiler.xhtml#builtins"
+ path="/org.eclipse.cdt.jsoncdb.core.doc/doc/html/builtins-detection.xhtml#extra_detection_participant_builtins_list"/>
+-->
+</contentExtension> \ No newline at end of file
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.intel/plugin.properties b/jsoncdb/org.eclipse.cdt.jsoncdb.intel/plugin.properties
new file mode 100644
index 00000000000..05b243db9b1
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.intel/plugin.properties
@@ -0,0 +1,10 @@
+bundleName=JSON Compilation Database Parser Support for Intel C compilers
+
+Bundle-Vendor = Eclipse CDT
+Bundle-Copyright = 2020 Martin Weber\n\
+\n\
+This program and the accompanying materials are made\n\
+available under the terms of the Eclipse Public License 2.0\n\
+which is available at https://www.eclipse.org/legal/epl-2.0/\n\
+\n\
+SPDX-License-Identifier: EPL-2.0\n\ \ No newline at end of file
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.intel/plugin.xml b/jsoncdb/org.eclipse.cdt.jsoncdb.intel/plugin.xml
new file mode 100644
index 00000000000..8d0734050af
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.intel/plugin.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension point="org.eclipse.cdt.jsoncdb.core.detectionParticipant">
+ <tool class="org.eclipse.cdt.jsoncdb.intel.IccToolDetectionParticipant"
+ displayName="Intel icc, C, Linux &amp; OS X, EDG"/>
+ <tool class="org.eclipse.cdt.jsoncdb.intel.IclCandCppToolDetectionParticipant"
+ displayName="Intel icl, C &amp; C++, Windows"/>
+ <tool class="org.eclipse.cdt.jsoncdb.intel.IclToolDetectionParticipant"
+ displayName="Intel icl, C, OS X, clang"/>
+ <tool class="org.eclipse.cdt.jsoncdb.intel.IcpcClangToolDetectionParticipant"
+ displayName="Intel icpc, C++, OS X, clang"/>
+ <tool class="org.eclipse.cdt.jsoncdb.intel.IcpcToolDetectionParticipant"
+ displayName="Intel icpc, C++, Linux &amp; OS X, EDG"/>
+ </extension>
+ <extension
+ point="org.eclipse.help.contentExtension">
+ <contentExtension
+ file="help_content_extension.xml">
+ </contentExtension>
+ </extension>
+</plugin>
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.intel/src/org/eclipse/cdt/jsoncdb/intel/IccToolDetectionParticipant.java b/jsoncdb/org.eclipse.cdt.jsoncdb.intel/src/org/eclipse/cdt/jsoncdb/intel/IccToolDetectionParticipant.java
new file mode 100644
index 00000000000..9c206012eed
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.intel/src/org/eclipse/cdt/jsoncdb/intel/IccToolDetectionParticipant.java
@@ -0,0 +1,26 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.jsoncdb.intel;
+
+import org.eclipse.cdt.jsoncdb.core.participant.DefaultToolDetectionParticipant;
+
+/**
+ * C, Linux & OS X, EDG.
+ *
+ * @author Martin Weber
+ */
+public class IccToolDetectionParticipant extends DefaultToolDetectionParticipant {
+
+ public IccToolDetectionParticipant() {
+ super("icc", IntelCToolCommandlineParser.INSTANCE); //$NON-NLS-1$
+ // for the record: builtin detection: -EP -dM for macros, -H for include FILES.
+ // NOTE: Windows: /QdM.
+ }
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.intel/src/org/eclipse/cdt/jsoncdb/intel/IclCandCppToolDetectionParticipant.java b/jsoncdb/org.eclipse.cdt.jsoncdb.intel/src/org/eclipse/cdt/jsoncdb/intel/IclCandCppToolDetectionParticipant.java
new file mode 100644
index 00000000000..e1b97085532
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.intel/src/org/eclipse/cdt/jsoncdb/intel/IclCandCppToolDetectionParticipant.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * Copyright (c) 2019-2020 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.jsoncdb.intel;
+
+import org.eclipse.cdt.jsoncdb.core.participant.Arglets;
+import org.eclipse.cdt.jsoncdb.core.participant.DefaultToolCommandlineParser;
+import org.eclipse.cdt.jsoncdb.core.participant.DefaultToolDetectionParticipant;
+import org.eclipse.cdt.jsoncdb.core.participant.IArglet;
+import org.eclipse.cdt.jsoncdb.core.participant.ResponseFileArglets;
+
+/**
+ * C + C++, Windows, EDG.
+ *
+ * @author Martin Weber
+ */
+public class IclCandCppToolDetectionParticipant extends DefaultToolDetectionParticipant {
+
+ public IclCandCppToolDetectionParticipant() {
+ super("icl", true, "exe", new CandCppToolCommandlineParser()); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ private static class CandCppToolCommandlineParser extends DefaultToolCommandlineParser {
+
+ private static final IArglet[] arglets = { new Arglets.IncludePath_C_POSIX(), new Arglets.MacroDefine_C_POSIX(),
+ new Arglets.MacroUndefine_C_POSIX() };
+
+ private CandCppToolCommandlineParser() {
+ super(new ResponseFileArglets.At(), null, arglets);
+ }
+ }
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.intel/src/org/eclipse/cdt/jsoncdb/intel/IclToolDetectionParticipant.java b/jsoncdb/org.eclipse.cdt.jsoncdb.intel/src/org/eclipse/cdt/jsoncdb/intel/IclToolDetectionParticipant.java
new file mode 100644
index 00000000000..04499998c33
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.intel/src/org/eclipse/cdt/jsoncdb/intel/IclToolDetectionParticipant.java
@@ -0,0 +1,24 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.jsoncdb.intel;
+
+import org.eclipse.cdt.jsoncdb.core.participant.DefaultToolDetectionParticipant;
+
+/**
+ * C, OS X, clang.
+ *
+ * @author Martin Weber
+ */
+public class IclToolDetectionParticipant extends DefaultToolDetectionParticipant {
+
+ public IclToolDetectionParticipant() {
+ super("icl", IntelCToolCommandlineParser.INSTANCE); //$NON-NLS-1$
+ }
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.intel/src/org/eclipse/cdt/jsoncdb/intel/IcpcClangToolDetectionParticipant.java b/jsoncdb/org.eclipse.cdt.jsoncdb.intel/src/org/eclipse/cdt/jsoncdb/intel/IcpcClangToolDetectionParticipant.java
new file mode 100644
index 00000000000..054ba6ff601
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.intel/src/org/eclipse/cdt/jsoncdb/intel/IcpcClangToolDetectionParticipant.java
@@ -0,0 +1,24 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.jsoncdb.intel;
+
+import org.eclipse.cdt.jsoncdb.core.participant.DefaultToolDetectionParticipant;
+
+/**
+ * C++, OS X, clang.
+ *
+ * @author Martin Weber
+ */
+public class IcpcClangToolDetectionParticipant extends DefaultToolDetectionParticipant {
+
+ public IcpcClangToolDetectionParticipant() {
+ super("icl\\+\\+", IntelCppToolCommandlineParser.INSTANCE); //$NON-NLS-1$
+ }
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.intel/src/org/eclipse/cdt/jsoncdb/intel/IcpcToolDetectionParticipant.java b/jsoncdb/org.eclipse.cdt.jsoncdb.intel/src/org/eclipse/cdt/jsoncdb/intel/IcpcToolDetectionParticipant.java
new file mode 100644
index 00000000000..148ffae1c52
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.intel/src/org/eclipse/cdt/jsoncdb/intel/IcpcToolDetectionParticipant.java
@@ -0,0 +1,24 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.jsoncdb.intel;
+
+import org.eclipse.cdt.jsoncdb.core.participant.DefaultToolDetectionParticipant;
+
+/**
+ * C++, Linux & OS X, EDG.
+ *
+ * @author Martin Weber
+ */
+public class IcpcToolDetectionParticipant extends DefaultToolDetectionParticipant {
+
+ public IcpcToolDetectionParticipant() {
+ super("icpc", IntelCppToolCommandlineParser.INSTANCE); //$NON-NLS-1$
+ }
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.intel/src/org/eclipse/cdt/jsoncdb/intel/IntelCToolCommandlineParser.java b/jsoncdb/org.eclipse.cdt.jsoncdb.intel/src/org/eclipse/cdt/jsoncdb/intel/IntelCToolCommandlineParser.java
new file mode 100644
index 00000000000..f5188c92ade
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.intel/src/org/eclipse/cdt/jsoncdb/intel/IntelCToolCommandlineParser.java
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * Copyright (c) 2019-2020 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.jsoncdb.intel;
+
+import org.eclipse.cdt.jsoncdb.core.participant.Arglets;
+import org.eclipse.cdt.jsoncdb.core.participant.DefaultToolCommandlineParser;
+import org.eclipse.cdt.jsoncdb.core.participant.IToolCommandlineParser;
+import org.eclipse.cdt.jsoncdb.core.participant.ResponseFileArglets;
+
+/**
+ * An {@link IToolCommandlineParser} for the Intel C compilers.
+ *
+ * @author Martin Weber
+ */
+class IntelCToolCommandlineParser extends DefaultToolCommandlineParser {
+
+ static final IntelCToolCommandlineParser INSTANCE = new IntelCToolCommandlineParser();
+
+ private IntelCToolCommandlineParser() {
+ super(new ResponseFileArglets.At(), null, new Arglets.IncludePath_C_POSIX(), new Arglets.MacroDefine_C_POSIX(),
+ new Arglets.MacroUndefine_C_POSIX());
+ }
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.intel/src/org/eclipse/cdt/jsoncdb/intel/IntelCppToolCommandlineParser.java b/jsoncdb/org.eclipse.cdt.jsoncdb.intel/src/org/eclipse/cdt/jsoncdb/intel/IntelCppToolCommandlineParser.java
new file mode 100644
index 00000000000..eca4db5095f
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.intel/src/org/eclipse/cdt/jsoncdb/intel/IntelCppToolCommandlineParser.java
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * Copyright (c) 2019-2020 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.jsoncdb.intel;
+
+import org.eclipse.cdt.jsoncdb.core.participant.Arglets;
+import org.eclipse.cdt.jsoncdb.core.participant.DefaultToolCommandlineParser;
+import org.eclipse.cdt.jsoncdb.core.participant.IToolCommandlineParser;
+import org.eclipse.cdt.jsoncdb.core.participant.ResponseFileArglets;
+
+/**
+ * An {@link IToolCommandlineParser} for the Intel C compilers.
+ *
+ * @author Martin Weber
+ */
+class IntelCppToolCommandlineParser extends DefaultToolCommandlineParser {
+
+ static final IntelCppToolCommandlineParser INSTANCE = new IntelCppToolCommandlineParser();
+
+ private IntelCppToolCommandlineParser() {
+ super(new ResponseFileArglets.At(), null, new Arglets.IncludePath_C_POSIX(), new Arglets.MacroDefine_C_POSIX(),
+ new Arglets.MacroUndefine_C_POSIX());
+ }
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft.tests/.classpath b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft.tests/.classpath
new file mode 100644
index 00000000000..73d6894a615
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft.tests/.classpath
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11">
+ <attributes>
+ <attribute name="module" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src">
+ <attributes>
+ <attribute name="test" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft.tests/.gitignore b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft.tests/.gitignore
new file mode 100644
index 00000000000..b83d22266ac
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft.tests/.gitignore
@@ -0,0 +1 @@
+/target/
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft.tests/.project b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft.tests/.project
new file mode 100644
index 00000000000..f6911058fdb
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft.tests/.project
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.cdt.jsoncdb.microsoft.tests</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft.tests/.settings/org.eclipse.core.resources.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft.tests/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft.tests/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft.tests/.settings/org.eclipse.jdt.core.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft.tests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..5b1c443114d
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft.tests/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=ignore
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
+org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=ignore
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/.settings/org.eclipse.jdt.launching.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft.tests/.settings/org.eclipse.jdt.launching.prefs
index f8a131b56e0..f8a131b56e0 100644
--- a/lrparser/org.eclipse.cdt.core.lrparser.tests/.settings/org.eclipse.jdt.launching.prefs
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft.tests/.settings/org.eclipse.jdt.launching.prefs
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft.tests/.settings/org.eclipse.jdt.ui.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft.tests/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft.tests/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft.tests/.settings/org.eclipse.m2e.core.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft.tests/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 00000000000..f897a7f1cb2
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft.tests/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/upc/org.eclipse.cdt.managedbuilder.bupc.ui/.settings/org.eclipse.pde.api.tools.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft.tests/.settings/org.eclipse.pde.api.tools.prefs
index ec9fbf321d0..ec9fbf321d0 100644
--- a/upc/org.eclipse.cdt.managedbuilder.bupc.ui/.settings/org.eclipse.pde.api.tools.prefs
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft.tests/.settings/org.eclipse.pde.api.tools.prefs
diff --git a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/.settings/org.eclipse.pde.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft.tests/.settings/org.eclipse.pde.prefs
index 51a63ec9988..51a63ec9988 100644
--- a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/.settings/org.eclipse.pde.prefs
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft.tests/.settings/org.eclipse.pde.prefs
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft.tests/META-INF/MANIFEST.MF b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft.tests/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..12ee51531f1
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,11 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Copyright: %Bundle-Copyright
+Bundle-SymbolicName: org.eclipse.cdt.jsoncdb.microsoft.tests
+Bundle-Version: 1.0.100.qualifier
+Bundle-Vendor: %Bundle-Vendor
+Fragment-Host: org.eclipse.cdt.jsoncdb.microsoft
+Import-Package: org.junit
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Automatic-Module-Name: org.eclipse.cdt.jsoncdb.microsoft.tests
+Bundle-Name: %Bundle-Name
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft.tests/OSGI-INF/l10n/bundle.properties b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft.tests/OSGI-INF/l10n/bundle.properties
new file mode 100644
index 00000000000..7af033ae5fb
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft.tests/OSGI-INF/l10n/bundle.properties
@@ -0,0 +1,10 @@
+#Properties file for org.eclipse.cdt.jsoncdb.microsoft.tests
+Bundle-Name = org.eclipse.cdt.jsoncdb.microsoft.tests
+Bundle-Vendor = Eclipse CDT
+Bundle-Copyright = 2020 Martin Weber\n\
+\n\
+This program and the accompanying materials are made\n\
+available under the terms of the Eclipse Public License 2.0\n\
+which is available at https://www.eclipse.org/legal/epl-2.0/\n\
+\n\
+SPDX-License-Identifier: EPL-2.0\n\ \ No newline at end of file
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft.tests/about.html b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft.tests/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft.tests/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft.tests/build.properties b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft.tests/build.properties
new file mode 100644
index 00000000000..0a753e1d198
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft.tests/build.properties
@@ -0,0 +1,8 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ OSGI-INF/l10n/bundle.properties,\
+ OSGI-INF/,\
+ about.html
+src.includes = about.html
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft.tests/src/org/eclipse/cdt/jsoncdb/microsoft/ToolDetectionParticipantTest.java b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft.tests/src/org/eclipse/cdt/jsoncdb/microsoft/ToolDetectionParticipantTest.java
new file mode 100644
index 00000000000..7920a6404bd
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft.tests/src/org/eclipse/cdt/jsoncdb/microsoft/ToolDetectionParticipantTest.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.jsoncdb.microsoft;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import java.util.Locale;
+
+import org.eclipse.cdt.jsoncdb.core.participant.IToolDetectionParticipant;
+import org.eclipse.cdt.jsoncdb.core.participant.ParticipantTestUtil;
+import org.junit.Test;
+
+/**
+ * @author Martin Weber
+ */
+public class ToolDetectionParticipantTest {
+ @Test
+ public void testDetermineToolDetectionParticipant() {
+ IToolDetectionParticipant result = ParticipantTestUtil
+ .determineToolDetectionParticipant("/usr/bin/cl -C blah.c", null, true);
+ assertNotNull(result);
+ assertEquals(MsclToolDetectionParticipant.class, result.getClass());
+
+ result = ParticipantTestUtil.determineToolDetectionParticipant("cl -C blah.c", null, true);
+ assertNotNull(result);
+ assertEquals(MsclToolDetectionParticipant.class, result.getClass());
+
+ result = ParticipantTestUtil.determineToolDetectionParticipant("/usr/bin/cl.exe -C blah.c", null, true);
+ assertNotNull(result);
+ assertEquals(MsclToolDetectionParticipant.class, result.getClass());
+
+ result = ParticipantTestUtil.determineToolDetectionParticipant("cl.exe -C blah.c", null, true);
+ assertNotNull(result);
+ assertEquals(MsclToolDetectionParticipant.class, result.getClass());
+ }
+
+ @Test
+ public void testDetermineToolDetectionParticipant_quote() {
+ String[] quotes = { "\"", "'" };
+ for (String quote : quotes) {
+ String args = String.format(Locale.ROOT, "%1$s/usr/bin/cl%1$s -I /foo/cl -C blah.c", quote);
+ IToolDetectionParticipant result = ParticipantTestUtil.determineToolDetectionParticipant(args, null, true);
+ assertNotNull("Command in quotes=" + quote, result);
+ assertEquals(MsclToolDetectionParticipant.class, result.getClass());
+ }
+ }
+
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/.classpath b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/.classpath
new file mode 100644
index 00000000000..79a7cca69b1
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/.classpath
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11">
+ <attributes>
+ <attribute name="maven.pomderived" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src/"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/.gitignore b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/.gitignore
new file mode 100644
index 00000000000..b83d22266ac
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/.gitignore
@@ -0,0 +1 @@
+/target/
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/.project b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/.project
new file mode 100644
index 00000000000..6fb72bda14c
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/.project
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.cdt.jsoncdb.microsoft</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+ </natures>
+</projectDescription>
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/.settings/org.eclipse.core.resources.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/.settings/org.eclipse.jdt.core.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..e3a8104f9ca
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/.settings/org.eclipse.jdt.launching.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/.settings/org.eclipse.jdt.launching.prefs
index f8a131b56e0..f8a131b56e0 100644
--- a/lrparser/org.eclipse.cdt.core.lrparser/.settings/org.eclipse.jdt.launching.prefs
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/.settings/org.eclipse.jdt.launching.prefs
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/.settings/org.eclipse.jdt.ui.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/.settings/org.eclipse.m2e.core.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 00000000000..f897a7f1cb2
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/.settings/org.eclipse.pde.api.tools.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/.settings/org.eclipse.pde.api.tools.prefs
index ec9fbf321d0..ec9fbf321d0 100644
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/.settings/org.eclipse.pde.api.tools.prefs
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/.settings/org.eclipse.pde.api.tools.prefs
diff --git a/upc/org.eclipse.cdt.core.parser.upc/.settings/org.eclipse.pde.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/.settings/org.eclipse.pde.prefs
index d2dc703ba9e..d2dc703ba9e 100644
--- a/upc/org.eclipse.cdt.core.parser.upc/.settings/org.eclipse.pde.prefs
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/.settings/org.eclipse.pde.prefs
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/META-INF/MANIFEST.MF b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..ab454149ad0
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/META-INF/MANIFEST.MF
@@ -0,0 +1,14 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %bundleName
+Bundle-Copyright: %Bundle-Copyright
+Bundle-SymbolicName: org.eclipse.cdt.jsoncdb.microsoft;singleton:=true
+Bundle-Version: 1.0.200.qualifier
+Bundle-Vendor: %Bundle-Vendor
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.core.runtime;bundle-version="3.11.1",
+ org.eclipse.help,
+ org.eclipse.cdt.jsoncdb.core;bundle-version="1.0.0"
+Automatic-Module-Name: org.eclipse.cdt.jsoncdb.microsoft
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/about.html b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/build.properties b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/build.properties
new file mode 100644
index 00000000000..2367d3898da
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/build.properties
@@ -0,0 +1,10 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ plugin.properties,\
+ about.html,\
+ help_content_extension.xml,\
+ doc/
+src.includes = about.html
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/doc/compiler.xhtml b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/doc/compiler.xhtml
new file mode 100644
index 00000000000..f5bdd0ce928
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/doc/compiler.xhtml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
+ <head>
+ <title>Microsoft Compilers</title>
+ </head>
+ <body>
+ <div id="lsp">
+ <h4>Microsoft Compilers</h4>
+ <table style="border-collapse:collapse">
+ <thead>
+ <tr>
+ <th>Compiler</th>
+ <th>Vendor</th>
+ <th>Language</th>
+ <th>Macros</th>
+ <th>Include directories</th>
+ <th>
+ System include
+ <br />
+ directories
+ </th>
+ <th>Compiler executables</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>cl</td>
+ <td>Microsoft</td>
+ <td>C/C++</td>
+ <td>Yes</td>
+ <td>Yes</td>
+ <td>No</td>
+ <td>cl, cl.exe</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+
+ </body>
+</html> \ No newline at end of file
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/help_content_extension.xml b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/help_content_extension.xml
new file mode 100644
index 00000000000..faacd166f60
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/help_content_extension.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<contentExtension>
+ <contribution content="doc/compiler.xhtml#lsp"
+ path="/org.eclipse.cdt.jsoncdb.core.doc/doc/html/supported-compilers.xhtml#extra_detection_participant_list"/>
+</contentExtension> \ No newline at end of file
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/plugin.properties b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/plugin.properties
new file mode 100644
index 00000000000..31ba7b4fcec
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/plugin.properties
@@ -0,0 +1,10 @@
+bundleName=JSON Compilation Database Parser Support for Microsoft cl C/C++ compiler
+
+Bundle-Vendor = Eclipse CDT
+Bundle-Copyright = 2020 Martin Weber\n\
+\n\
+This program and the accompanying materials are made\n\
+available under the terms of the Eclipse Public License 2.0\n\
+which is available at https://www.eclipse.org/legal/epl-2.0/\n\
+\n\
+SPDX-License-Identifier: EPL-2.0\n\ \ No newline at end of file
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/plugin.xml b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/plugin.xml
new file mode 100644
index 00000000000..ae49f493c44
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/plugin.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension point="org.eclipse.cdt.jsoncdb.core.detectionParticipant">
+ <tool class="org.eclipse.cdt.jsoncdb.microsoft.MsclToolDetectionParticipant"
+ displayName="Microsoft cl C &amp; C++"/>
+ </extension>
+ <extension
+ point="org.eclipse.help.contentExtension">
+ <contentExtension
+ file="help_content_extension.xml">
+ </contentExtension>
+ </extension>
+</plugin>
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/src/org/eclipse/cdt/jsoncdb/microsoft/MsclToolCommandlineParser.java b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/src/org/eclipse/cdt/jsoncdb/microsoft/MsclToolCommandlineParser.java
new file mode 100644
index 00000000000..0b6d19362c2
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/src/org/eclipse/cdt/jsoncdb/microsoft/MsclToolCommandlineParser.java
@@ -0,0 +1,114 @@
+/*******************************************************************************
+ * Copyright (c) 2019-2020 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.jsoncdb.microsoft;
+
+import org.eclipse.cdt.jsoncdb.core.participant.Arglets.IncludePathGeneric;
+import org.eclipse.cdt.jsoncdb.core.participant.Arglets.MacroDefineGeneric;
+import org.eclipse.cdt.jsoncdb.core.participant.Arglets.MacroUndefineGeneric;
+import org.eclipse.cdt.jsoncdb.core.participant.Arglets.NameOptionMatcher;
+import org.eclipse.cdt.jsoncdb.core.participant.Arglets.NameValueOptionMatcher;
+import org.eclipse.cdt.jsoncdb.core.participant.DefaultToolCommandlineParser;
+import org.eclipse.cdt.jsoncdb.core.participant.IArglet;
+import org.eclipse.cdt.jsoncdb.core.participant.IToolCommandlineParser;
+import org.eclipse.cdt.jsoncdb.core.participant.ResponseFileArglets;
+import org.eclipse.core.runtime.IPath;
+
+/**
+ * An {@link IToolCommandlineParser} for the microsoft C and C++ compiler (cl).
+ *
+ * @author Martin Weber
+ */
+class MsclToolCommandlineParser extends DefaultToolCommandlineParser {
+
+ private static final IArglet[] arglets = { new IncludePath_C_CL(), new MacroDefine_C_CL(),
+ new MacroUndefine_C_CL() };
+
+ public MsclToolCommandlineParser() {
+ super(new ResponseFileArglets.At(), null, arglets);
+ }
+
+ ////////////////////////////////////////////////////////////////////
+ /** matches a macro name, with optional macro parameter list */
+ private static final String REGEX_MACRO_NAME = "([\\w$]+)(?:\\([\\w$, ]*?\\))?"; //$NON-NLS-1$
+ /**
+ * matches a macro name, skipping leading whitespace. Name in matcher group 1
+ */
+ private static final String REGEX_MACRO_NAME_SKIP_LEADING_WS = "\\s*" + REGEX_MACRO_NAME; //$NON-NLS-1$
+ /** matches an include path with quoted directory. Name in matcher group 2 */
+ private static final String REGEX_INCLUDEPATH_QUOTED_DIR = "\\s*([\"'])(.+?)\\1"; //$NON-NLS-1$
+ /**
+ * matches an include path with unquoted directory. Name in matcher group 1
+ */
+ private static final String REGEX_INCLUDEPATH_UNQUOTED_DIR = "\\s*([^\\s]+)"; //$NON-NLS-1$
+
+ /**
+ * A tool argument parser capable to parse a cl (Microsoft c compiler)
+ * compatible C-compiler include path argument: {@code /Ipath}.
+ */
+ public static class IncludePath_C_CL extends IncludePathGeneric implements IArglet {
+ private static final NameOptionMatcher[] optionMatchers = {
+ /* quoted directory */
+ new NameOptionMatcher("[-/]I" + REGEX_INCLUDEPATH_QUOTED_DIR, 2), //$NON-NLS-1$
+ /* unquoted directory */
+ new NameOptionMatcher("[-/]I" + REGEX_INCLUDEPATH_UNQUOTED_DIR, 1), }; //$NON-NLS-1$
+
+ /*-
+ * @see org.eclipse.cdt.jsoncdb.core.participant.IArglet.processArgument(IArgumentCollector, IPath, String)
+ */
+ @Override
+ public int processArgument(IArgumentCollector resultCollector, IPath cwd, String argsLine) {
+ return processArgument(true, resultCollector, cwd, argsLine, optionMatchers);
+ }
+ }
+
+ /**
+ * A tool argument parser capable to parse a cl (Microsoft c compiler)
+ * compatible C-compiler macro definition argument: {@code /DNAME=value}.
+ */
+ public static class MacroDefine_C_CL extends MacroDefineGeneric implements IArglet {
+
+ private static final NameValueOptionMatcher[] optionMatchers = {
+ /* quoted value, whitespace in value, w/ macro arglist */
+ new NameValueOptionMatcher("[-/]D" + REGEX_MACRO_NAME_SKIP_LEADING_WS + "((?:=)([\"'])(.+?)\\4)", 1, 5), //$NON-NLS-1$ //$NON-NLS-2$
+ /* w/ macro arglist */
+ new NameValueOptionMatcher("[-/]D" + REGEX_MACRO_NAME_SKIP_LEADING_WS + "((?:=)(\\S+))?", 1, 3), //$NON-NLS-1$ //$NON-NLS-2$
+ /* quoted name, whitespace in value, w/ macro arglist */
+ new NameValueOptionMatcher("[-/]D" + REGEX_MACRO_NAME_SKIP_LEADING_WS + "((?:=)(.+?))?\\1", 2, 5), //$NON-NLS-1$ //$NON-NLS-2$
+ /* w/ macro arglist, shell escapes \' and \" in value */
+ new NameValueOptionMatcher("[-/]D" + REGEX_MACRO_NAME_SKIP_LEADING_WS + "(?:=)((\\\\([\"']))(.*?)\\2)", //$NON-NLS-1$ //$NON-NLS-2$
+ 1, 2), };
+
+ /*-
+ * @see org.eclipse.cdt.jsoncdb.core.participant.IArglet.processArgument(IArgumentCollector, IPath, String)
+ */
+ @Override
+ public int processArgument(IArgumentCollector resultCollector, IPath cwd, String argsLine) {
+ return processArgument(resultCollector, argsLine, optionMatchers);
+ }
+ }
+
+ /**
+ * A tool argument parser capable to parse a cl (Microsoft c compiler)
+ * compatible C-compiler macro cancel argument: {@code /UNAME}.
+ */
+ public static class MacroUndefine_C_CL extends MacroUndefineGeneric implements IArglet {
+
+ private static final NameOptionMatcher optionMatcher = new NameOptionMatcher(
+ "[-/]U" + REGEX_MACRO_NAME_SKIP_LEADING_WS, 1); //$NON-NLS-1$
+
+ /*-
+ * @see org.eclipse.cdt.jsoncdb.core.participant.IArglet.processArgument(IArgumentCollector, IPath, String)
+ */
+ @Override
+ public int processArgument(IArgumentCollector resultCollector, IPath cwd, String argsLine) {
+ return processArgument(resultCollector, argsLine, optionMatcher);
+ }
+ }
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/src/org/eclipse/cdt/jsoncdb/microsoft/MsclToolDetectionParticipant.java b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/src/org/eclipse/cdt/jsoncdb/microsoft/MsclToolDetectionParticipant.java
new file mode 100644
index 00000000000..7416175502e
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.microsoft/src/org/eclipse/cdt/jsoncdb/microsoft/MsclToolDetectionParticipant.java
@@ -0,0 +1,24 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.jsoncdb.microsoft;
+
+import org.eclipse.cdt.jsoncdb.core.participant.DefaultToolDetectionParticipant;
+
+/**
+ * Microsoft C and C++ compiler (cl).
+ *
+ * @author Martin Weber
+ */
+public class MsclToolDetectionParticipant extends DefaultToolDetectionParticipant {
+
+ public MsclToolDetectionParticipant() {
+ super("cl", true, "exe", new MsclToolCommandlineParser()); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/.classpath b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/.classpath
new file mode 100644
index 00000000000..73d6894a615
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/.classpath
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11">
+ <attributes>
+ <attribute name="module" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src">
+ <attributes>
+ <attribute name="test" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/.gitignore b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/.gitignore
new file mode 100644
index 00000000000..b83d22266ac
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/.gitignore
@@ -0,0 +1 @@
+/target/
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/.project b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/.project
new file mode 100644
index 00000000000..3a8617fbe3a
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/.project
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.cdt.jsoncdb.nvidia.tests</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/.settings/org.eclipse.core.resources.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/.settings/org.eclipse.jdt.core.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..5b1c443114d
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=ignore
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
+org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=ignore
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/releng/org.eclipse.cdt.repo/.settings/org.eclipse.jdt.launching.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/.settings/org.eclipse.jdt.launching.prefs
index f8a131b56e0..f8a131b56e0 100644
--- a/releng/org.eclipse.cdt.repo/.settings/org.eclipse.jdt.launching.prefs
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/.settings/org.eclipse.jdt.launching.prefs
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/.settings/org.eclipse.jdt.ui.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/.settings/org.eclipse.m2e.core.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 00000000000..f897a7f1cb2
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/.settings/org.eclipse.pde.api.tools.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/.settings/org.eclipse.pde.api.tools.prefs
index ec9fbf321d0..ec9fbf321d0 100644
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc/.settings/org.eclipse.pde.api.tools.prefs
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/.settings/org.eclipse.pde.api.tools.prefs
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/.settings/org.eclipse.pde.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/.settings/org.eclipse.pde.prefs
new file mode 100644
index 00000000000..51a63ec9988
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,35 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=2
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=2
+compilers.p.missing-version-export-package=2
+compilers.p.missing-version-import-package=2
+compilers.p.missing-version-require-bundle=2
+compilers.p.no-required-att=0
+compilers.p.no.automatic.module=1
+compilers.p.not-externalized-att=2
+compilers.p.service.component.without.lazyactivation=1
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/META-INF/MANIFEST.MF b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..3a70ac3a55f
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,12 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Copyright: %Bundle-Copyright
+Bundle-SymbolicName: org.eclipse.cdt.jsoncdb.nvidia.tests
+Bundle-Version: 1.0.0.qualifier
+Bundle-Vendor: %Bundle-Vendor
+Fragment-Host: org.eclipse.cdt.jsoncdb.nvidia
+Import-Package: org.eclipse.cdt.core.settings.model,
+ org.junit
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Automatic-Module-Name: org.eclipse.cdt.jsoncdb.nvidia.tests
+Bundle-Name: %Bundle-Name
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/OSGI-INF/l10n/bundle.properties b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/OSGI-INF/l10n/bundle.properties
new file mode 100644
index 00000000000..ece8440d8d2
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/OSGI-INF/l10n/bundle.properties
@@ -0,0 +1,10 @@
+#Properties file for org.eclipse.cdt.jsoncdb.nvidia.tests
+Bundle-Name = org.eclipse.cdt.jsoncdb.nvidia.tests
+Bundle-Vendor = Eclipse CDT
+Bundle-Copyright = 2020 Martin Weber\n\
+\n\
+This program and the accompanying materials are made\n\
+available under the terms of the Eclipse Public License 2.0\n\
+which is available at https://www.eclipse.org/legal/epl-2.0/\n\
+\n\
+SPDX-License-Identifier: EPL-2.0\n\ \ No newline at end of file
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/about.html b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/build.properties b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/build.properties
new file mode 100644
index 00000000000..0a753e1d198
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/build.properties
@@ -0,0 +1,8 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ OSGI-INF/l10n/bundle.properties,\
+ OSGI-INF/,\
+ about.html
+src.includes = about.html
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/src/org/eclipse/cdt/jsoncdb/nvidia/NvccSystemIncludePathTest.java b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/src/org/eclipse/cdt/jsoncdb/nvidia/NvccSystemIncludePathTest.java
new file mode 100644
index 00000000000..76ac388c2b0
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/src/org/eclipse/cdt/jsoncdb/nvidia/NvccSystemIncludePathTest.java
@@ -0,0 +1,67 @@
+/*******************************************************************************
+ * Copyright (c) 2018-2020 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.jsoncdb.nvidia;
+
+import static org.junit.Assert.assertEquals;
+
+import org.eclipse.cdt.jsoncdb.core.participant.DefaultToolCommandlineParser;
+import org.eclipse.cdt.jsoncdb.core.participant.IToolCommandlineParser.IResult;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * @author Martin Weber
+ */
+public class NvccSystemIncludePathTest {
+
+ private NvccSystemIncludePathArglet testee;
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ testee = new NvccSystemIncludePathArglet();
+ }
+
+ @Test
+ public final void testProcessArgument() {
+ DefaultToolCommandlineParser tcp = new DefaultToolCommandlineParser(null, null, testee);
+
+ final String more = " -g -MMD -MT CMakeFiles/execut1.dir/util1.c.o -MF \"CMakeFiles/execut1.dir/util1.c.o.d\""
+ + " -o CMakeFiles/execut1.dir/util1.c.o -c /testprojects/C-subsrc/src/src-sub/main1.cu";
+
+ final IPath cwd = new Path("");
+
+ // -isystem=/an/Include/Path
+ String name = "/an/Include/Path";
+ IResult result = tcp.processArgs(cwd, "-isystem" + "=" + name + more);
+ assertEquals("#entries", 1, result.getSystemIncludePaths().size());
+ assertEquals("name", name, result.getSystemIncludePaths().get(0));
+ // -isystem='/an/Include/Path'
+ result = tcp.processArgs(cwd, "-isystem" + "=" + "'" + name + "'" + more);
+ assertEquals("#entries", 1, result.getSystemIncludePaths().size());
+ assertEquals("name", name, result.getSystemIncludePaths().get(0));
+ // -isystem="/an/Include/Path"
+ result = tcp.processArgs(cwd, "-isystem" + "=" + "\"" + name + "\"" + more);
+ assertEquals("#entries", 1, result.getSystemIncludePaths().size());
+ assertEquals("name", name, result.getSystemIncludePaths().get(0));
+
+ name = (new Path("A:an\\In CLU de/Pat h")).toOSString();
+ // -isystem="A:an\In CLU de/Pat h"
+ result = tcp.processArgs(cwd, "-isystem" + "=" + "\"" + name + "\"" + more);
+ assertEquals("#entries", 1, result.getSystemIncludePaths().size());
+ assertEquals("name", name, result.getSystemIncludePaths().get(0));
+
+ // -isystem='A:an\In CLU de/Pat h'
+ }
+
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/src/org/eclipse/cdt/jsoncdb/nvidia/ToolDetectionParticipantTest.java b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/src/org/eclipse/cdt/jsoncdb/nvidia/ToolDetectionParticipantTest.java
new file mode 100644
index 00000000000..3ce009a58b2
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/src/org/eclipse/cdt/jsoncdb/nvidia/ToolDetectionParticipantTest.java
@@ -0,0 +1,54 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.jsoncdb.nvidia;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import java.util.Locale;
+
+import org.eclipse.cdt.jsoncdb.core.participant.IToolDetectionParticipant;
+import org.eclipse.cdt.jsoncdb.core.participant.ParticipantTestUtil;
+import org.junit.Test;
+
+/**
+ * @author Martin Weber
+ */
+public class ToolDetectionParticipantTest {
+ @Test
+ public void testDetermineToolDetectionParticipant() {
+ IToolDetectionParticipant result = ParticipantTestUtil
+ .determineToolDetectionParticipant("/usr/bin/nvcc -C blah.c", null, true);
+ assertNotNull(result);
+ assertEquals(NvccToolDetectionParticipant.class, result.getClass());
+
+ result = ParticipantTestUtil.determineToolDetectionParticipant("nvcc -C blah.c", null, true);
+ assertNotNull(result);
+ assertEquals(NvccToolDetectionParticipant.class, result.getClass());
+
+ result = ParticipantTestUtil.determineToolDetectionParticipant("/usr/bin/nvcc.exe -C blah.c", null, true);
+ assertNotNull(result);
+ assertEquals(NvccToolDetectionParticipant.class, result.getClass());
+
+ result = ParticipantTestUtil.determineToolDetectionParticipant("nvcc.exe -C blah.c", null, true);
+ assertNotNull(result);
+ assertEquals(NvccToolDetectionParticipant.class, result.getClass());
+ }
+
+ @Test
+ public void testDetermineToolDetectionParticipant_quote() {
+ String[] quotes = { "\"", "'" };
+ for (String quote : quotes) {
+ String args = String.format(Locale.ROOT, "%1$s/usr/bin/nvcc%1$s -I /foo/nvcc -C blah.c", quote);
+ IToolDetectionParticipant result = ParticipantTestUtil.determineToolDetectionParticipant(args, null, true);
+ assertNotNull("Command in quotes= " + quote, result);
+ assertEquals(NvccToolDetectionParticipant.class, result.getClass());
+ }
+ }
+} \ No newline at end of file
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/src/org/eclipse/cdt/jsoncdb/nvidia/builtins/NvccBuiltins_DetectLangStdTest.java b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/src/org/eclipse/cdt/jsoncdb/nvidia/builtins/NvccBuiltins_DetectLangStdTest.java
new file mode 100644
index 00000000000..1cfb803a313
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/src/org/eclipse/cdt/jsoncdb/nvidia/builtins/NvccBuiltins_DetectLangStdTest.java
@@ -0,0 +1,114 @@
+/*******************************************************************************
+ * Copyright (c) 2019-2020 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.jsoncdb.nvidia.builtins;
+
+import static org.junit.Assert.assertEquals;
+
+import org.eclipse.cdt.jsoncdb.core.participant.DefaultToolCommandlineParser;
+import org.eclipse.cdt.jsoncdb.core.participant.IToolCommandlineParser.IResult;
+import org.eclipse.cdt.jsoncdb.nvidia.NvccLangStdArglet;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * @author Martin Weber
+ */
+public class NvccBuiltins_DetectLangStdTest {
+
+ private NvccLangStdArglet testee;
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ testee = new NvccLangStdArglet();
+ }
+
+ /**
+ * Test method for {@link NvccLangStdArglet#processArgument}.
+ */
+ @Test
+ public final void testProcessArgument_std() {
+ DefaultToolCommandlineParser tcp = new DefaultToolCommandlineParser(null, null, testee);
+
+ final String more = " -g -MMD -MT CMakeFiles/execut1.dir/util1.c.o -MF \"CMakeFiles/execut1.dir/util1.c.o.d\""
+ + " -o CMakeFiles/execut1.dir/util1.c.o -c /testprojects/C-subsrc/src/src-sub/main1.c";
+
+ final IPath cwd = new Path("");
+ // --std=
+ String arg = "--std c++14";
+ String parsed;
+
+ IResult result = tcp.processArgs(cwd, arg + more);
+ assertEquals("#entries", 1, result.getBuiltinDetectionArgs().size());
+ parsed = result.getBuiltinDetectionArgs().get(0);
+ assertEquals("name", arg, parsed);
+ // --std=c11
+ arg = "--std c11";
+ result = tcp.processArgs(cwd, arg + more);
+ assertEquals("#entries", 1, result.getBuiltinDetectionArgs().size());
+ parsed = result.getBuiltinDetectionArgs().get(0);
+ assertEquals("name", arg, parsed);
+ // --std=c1x
+ arg = "--std c1x";
+ result = tcp.processArgs(cwd, arg + more);
+ assertEquals("#entries", 1, result.getBuiltinDetectionArgs().size());
+ parsed = result.getBuiltinDetectionArgs().get(0);
+ assertEquals("name", arg, parsed);
+ // --std=iso9899:1999
+ arg = "--std iso9899:1999";
+ result = tcp.processArgs(cwd, arg + more);
+ assertEquals("#entries", 1, result.getBuiltinDetectionArgs().size());
+ parsed = result.getBuiltinDetectionArgs().get(0);
+ assertEquals("name", arg, parsed);
+ }
+
+ /**
+ * Test method for {@link NvccLangStdArglet#processArgument}.
+ */
+ @Test
+ public final void testProcessArgument_std2() {
+ final String more = " -g -MMD -MT CMakeFiles/execut1.dir/util1.c.o -MF \"CMakeFiles/execut1.dir/util1.c.o.d\""
+ + " -o CMakeFiles/execut1.dir/util1.c.o -c /testprojects/C-subsrc/src/src-sub/main1.c";
+ DefaultToolCommandlineParser tcp = new DefaultToolCommandlineParser(null, null, testee);
+
+ String parsed;
+
+ final IPath cwd = new Path("");
+ // -std=
+ String arg = "-std c++14";
+
+ IResult result = tcp.processArgs(cwd, arg + more);
+ assertEquals("#entries", 1, result.getBuiltinDetectionArgs().size());
+ parsed = result.getBuiltinDetectionArgs().get(0);
+ assertEquals("name", arg, parsed);
+ // -std=c11
+ arg = "-std c11";
+ result = tcp.processArgs(cwd, arg + more);
+ assertEquals("#entries", 1, result.getBuiltinDetectionArgs().size());
+ parsed = result.getBuiltinDetectionArgs().get(0);
+ assertEquals("name", arg, parsed);
+ // -std=c1x
+ arg = "-std c1x";
+ result = tcp.processArgs(cwd, arg + more);
+ assertEquals("#entries", 1, result.getBuiltinDetectionArgs().size());
+ parsed = result.getBuiltinDetectionArgs().get(0);
+ assertEquals("name", arg, parsed);
+ // -std=iso9899:1999
+ arg = "-std iso9899:1999";
+ result = tcp.processArgs(cwd, arg + more);
+ assertEquals("#entries", 1, result.getBuiltinDetectionArgs().size());
+ parsed = result.getBuiltinDetectionArgs().get(0);
+ assertEquals("name", arg, parsed);
+ }
+
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/src/org/eclipse/cdt/jsoncdb/nvidia/builtins/NvccOutputProcessorTest.java b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/src/org/eclipse/cdt/jsoncdb/nvidia/builtins/NvccOutputProcessorTest.java
new file mode 100644
index 00000000000..21c50b3dd2c
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/src/org/eclipse/cdt/jsoncdb/nvidia/builtins/NvccOutputProcessorTest.java
@@ -0,0 +1,108 @@
+/*******************************************************************************
+ * Copyright (c) 2018-2020 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.jsoncdb.nvidia.builtins;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+
+import org.eclipse.cdt.jsoncdb.core.participant.IRawSourceFileInfoCollector;
+import org.eclipse.cdt.jsoncdb.core.participant.builtins.GccOutputProcessor;
+import org.eclipse.cdt.jsoncdb.core.participant.builtins.OutputSniffer;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * @author Martin Weber
+ *
+ */
+public class NvccOutputProcessorTest {
+
+ private GccOutputProcessor testee;
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ testee = new GccOutputProcessor();
+ }
+
+ @Test
+ public void testProcessFile() throws IOException {
+ // pass resource content line-wise to the testee...
+ RawSourceFileInfoMock pc = new RawSourceFileInfoMock();
+ try (InputStream is = getClass().getResourceAsStream("cbd-nvcc.output.txt");
+ OutputSniffer os = new OutputSniffer(testee, null, pc)) {
+ byte[] buffer = new byte[1024];
+ int length;
+ while ((length = is.read(buffer)) > 0) {
+ os.write(buffer, 0, length);
+ }
+ }
+
+ assertEquals("# include paths", 6, pc.systemIncludePaths.size());
+ assertEquals("# macros", 242, pc.defines.size());
+
+ // check __CUDACC_VER_BUILD__
+ assertTrue("__CUDACC_VER_BUILD__", pc.defines.containsKey("__GNUC__"));
+ assertEquals("value", "85", pc.defines.get("__CUDACC_VER_BUILD__"));
+ }
+
+ private static class RawSourceFileInfoMock implements IRawSourceFileInfoCollector {
+ private final Map<String, String> defines = new HashMap<>();
+ private final List<String> undefines = new ArrayList<>();
+ private final List<String> includePaths = new ArrayList<>();
+ private final List<String> systemIncludePaths = new ArrayList<>();
+
+ @Override
+ public void addDefine(String name, String value) {
+ Objects.requireNonNull(name);
+ value = Objects.toString(value, ""); //$NON-NLS-1$
+ defines.put(name, value);
+ }
+
+ @Override
+ public void addUndefine(String name) {
+ Objects.requireNonNull(name);
+ undefines.add(name);
+ }
+
+ @Override
+ public void addIncludePath(String path) {
+ Objects.requireNonNull(path);
+ includePaths.add(path);
+ }
+
+ @Override
+ public void addSystemIncludePath(String path) {
+ Objects.requireNonNull(path);
+ systemIncludePaths.add(path);
+ }
+
+ @Override
+ public void addMacroFile(String path) {
+ // nvcc does not have a corresponding option
+ }
+
+ @Override
+ public void addIncludeFile(String path) {
+ // nvcc does not have a corresponding option
+
+ }
+ }
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/src/org/eclipse/cdt/jsoncdb/nvidia/builtins/cbd-nvcc.output.txt b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/src/org/eclipse/cdt/jsoncdb/nvidia/builtins/cbd-nvcc.output.txt
new file mode 100644
index 00000000000..fb8b95eee37
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia.tests/src/org/eclipse/cdt/jsoncdb/nvidia/builtins/cbd-nvcc.output.txt
@@ -0,0 +1,262 @@
+Using built-in specs.
+COLLECT_GCC=gcc
+Target: x86_64-suse-linux
+Configured with: ../configure --prefix=/usr --infodir=/usr/share/info --mandir=/usr/share/man --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-languages=c,c++,objc,fortran,obj-c++,java,ada --enable-checking=release --with-gxx-include-dir=/usr/include/c++/4.8 --enable-ssp --disable-libssp --disable-plugin --with-bugurl=http://bugs.opensuse.org/ --with-pkgversion='SUSE Linux' --disable-libgcj --disable-libmudflap --with-slibdir=/lib64 --with-system-zlib --enable-__cxa_atexit --enable-libstdcxx-allocator=new --disable-libstdcxx-pch --enable-version-specific-runtime-libs --enable-linker-build-id --enable-linux-futex --program-suffix=-4.8 --without-system-libunwind --with-arch-32=i586 --with-tune=generic --build=x86_64-suse-linux --host=x86_64-suse-linux
+Thread model: posix
+gcc version 4.8.5 (SUSE Linux)
+COLLECT_GCC_OPTIONS='-E' '-D' '__NVCC__' '-P' '-v' '-dD' '-I' '/usr/local/cuda-9.1/bin/../targets/x86_64-linux/include' '-D' '__CUDACC_VER_BUILD__=85' '-D' '__CUDACC_VER_MINOR__=1' '-D' '__CUDACC_VER_MAJOR__=9' '-m64' '-mtune=generic' '-march=x86-64'
+ /usr/lib64/gcc/x86_64-suse-linux/4.8/cc1 -E -quiet -v -I /usr/local/cuda-9.1/bin/../targets/x86_64-linux/include -P -D __NVCC__ -D __CUDACC_VER_BUILD__=85 -D __CUDACC_VER_MINOR__=1 -D __CUDACC_VER_MAJOR__=9 /tmp/foo.c -m64 -mtune=generic -march=x86-64 -dD
+#include "..." search starts here:
+#include <...> search starts here:
+ /usr/local/cuda-9.1/bin/../targets/x86_64-linux/include
+ /usr/lib64/gcc/x86_64-suse-linux/4.8/include
+ /usr/local/include
+ /usr/lib64/gcc/x86_64-suse-linux/4.8/include-fixed
+ /usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/include
+ /usr/include
+End of search list.
+#define __STDC__ 1
+#define __STDC_HOSTED__ 1
+#define __GNUC__ 4
+#define __GNUC_MINOR__ 8
+#define __GNUC_PATCHLEVEL__ 5
+#define __VERSION__ "4.8.5"
+#define __ATOMIC_RELAXED 0
+#define __ATOMIC_SEQ_CST 5
+#define __ATOMIC_ACQUIRE 2
+#define __ATOMIC_RELEASE 3
+#define __ATOMIC_ACQ_REL 4
+#define __ATOMIC_CONSUME 1
+#define __FINITE_MATH_ONLY__ 0
+#define _LP64 1
+#define __LP64__ 1
+#define __SIZEOF_INT__ 4
+#define __SIZEOF_LONG__ 8
+#define __SIZEOF_LONG_LONG__ 8
+#define __SIZEOF_SHORT__ 2
+#define __SIZEOF_FLOAT__ 4
+#define __SIZEOF_DOUBLE__ 8
+#define __SIZEOF_LONG_DOUBLE__ 16
+#define __SIZEOF_SIZE_T__ 8
+#define __CHAR_BIT__ 8
+#define __BIGGEST_ALIGNMENT__ 16
+#define __ORDER_LITTLE_ENDIAN__ 1234
+#define __ORDER_BIG_ENDIAN__ 4321
+#define __ORDER_PDP_ENDIAN__ 3412
+#define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__
+#define __FLOAT_WORD_ORDER__ __ORDER_LITTLE_ENDIAN__
+#define __SIZEOF_POINTER__ 8
+#define __SIZE_TYPE__ long unsigned int
+#define __PTRDIFF_TYPE__ long int
+#define __WCHAR_TYPE__ int
+#define __WINT_TYPE__ unsigned int
+#define __INTMAX_TYPE__ long int
+#define __UINTMAX_TYPE__ long unsigned int
+#define __CHAR16_TYPE__ short unsigned int
+#define __CHAR32_TYPE__ unsigned int
+#define __SIG_ATOMIC_TYPE__ int
+#define __INT8_TYPE__ signed char
+#define __INT16_TYPE__ short int
+#define __INT32_TYPE__ int
+#define __INT64_TYPE__ long int
+#define __UINT8_TYPE__ unsigned char
+#define __UINT16_TYPE__ short unsigned int
+#define __UINT32_TYPE__ unsigned int
+#define __UINT64_TYPE__ long unsigned int
+#define __INT_LEAST8_TYPE__ signed char
+#define __INT_LEAST16_TYPE__ short int
+#define __INT_LEAST32_TYPE__ int
+#define __INT_LEAST64_TYPE__ long int
+#define __UINT_LEAST8_TYPE__ unsigned char
+#define __UINT_LEAST16_TYPE__ short unsigned int
+#define __UINT_LEAST32_TYPE__ unsigned int
+#define __UINT_LEAST64_TYPE__ long unsigned int
+#define __INT_FAST8_TYPE__ signed char
+#define __INT_FAST16_TYPE__ long int
+#define __INT_FAST32_TYPE__ long int
+#define __INT_FAST64_TYPE__ long int
+#define __UINT_FAST8_TYPE__ unsigned char
+#define __UINT_FAST16_TYPE__ long unsigned int
+#define __UINT_FAST32_TYPE__ long unsigned int
+#define __UINT_FAST64_TYPE__ long unsigned int
+#define __INTPTR_TYPE__ long int
+#define __UINTPTR_TYPE__ long unsigned int
+#define __GXX_ABI_VERSION 1002
+#define __SCHAR_MAX__ 127
+#define __SHRT_MAX__ 32767
+#define __INT_MAX__ 2147483647
+#define __LONG_MAX__ 9223372036854775807L
+#define __LONG_LONG_MAX__ 9223372036854775807LL
+#define __WCHAR_MAX__ 2147483647
+#define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1)
+#define __WINT_MAX__ 4294967295U
+#define __WINT_MIN__ 0U
+#define __PTRDIFF_MAX__ 9223372036854775807L
+#define __SIZE_MAX__ 18446744073709551615UL
+#define __INTMAX_MAX__ 9223372036854775807L
+#define __INTMAX_C(c) c ## L
+#define __UINTMAX_MAX__ 18446744073709551615UL
+#define __UINTMAX_C(c) c ## UL
+#define __SIG_ATOMIC_MAX__ 2147483647
+#define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1)
+#define __INT8_MAX__ 127
+#define __INT16_MAX__ 32767
+#define __INT32_MAX__ 2147483647
+#define __INT64_MAX__ 9223372036854775807L
+#define __UINT8_MAX__ 255
+#define __UINT16_MAX__ 65535
+#define __UINT32_MAX__ 4294967295U
+#define __UINT64_MAX__ 18446744073709551615UL
+#define __INT_LEAST8_MAX__ 127
+#define __INT8_C(c) c
+#define __INT_LEAST16_MAX__ 32767
+#define __INT16_C(c) c
+#define __INT_LEAST32_MAX__ 2147483647
+#define __INT32_C(c) c
+#define __INT_LEAST64_MAX__ 9223372036854775807L
+#define __INT64_C(c) c ## L
+#define __UINT_LEAST8_MAX__ 255
+#define __UINT8_C(c) c
+#define __UINT_LEAST16_MAX__ 65535
+#define __UINT16_C(c) c
+#define __UINT_LEAST32_MAX__ 4294967295U
+#define __UINT32_C(c) c ## U
+#define __UINT_LEAST64_MAX__ 18446744073709551615UL
+#define __UINT64_C(c) c ## UL
+#define __INT_FAST8_MAX__ 127
+#define __INT_FAST16_MAX__ 9223372036854775807L
+#define __INT_FAST32_MAX__ 9223372036854775807L
+#define __INT_FAST64_MAX__ 9223372036854775807L
+#define __UINT_FAST8_MAX__ 255
+#define __UINT_FAST16_MAX__ 18446744073709551615UL
+#define __UINT_FAST32_MAX__ 18446744073709551615UL
+#define __UINT_FAST64_MAX__ 18446744073709551615UL
+#define __INTPTR_MAX__ 9223372036854775807L
+#define __UINTPTR_MAX__ 18446744073709551615UL
+#define __FLT_EVAL_METHOD__ 0
+#define __DEC_EVAL_METHOD__ 2
+#define __FLT_RADIX__ 2
+#define __FLT_MANT_DIG__ 24
+#define __FLT_DIG__ 6
+#define __FLT_MIN_EXP__ (-125)
+#define __FLT_MIN_10_EXP__ (-37)
+#define __FLT_MAX_EXP__ 128
+#define __FLT_MAX_10_EXP__ 38
+#define __FLT_DECIMAL_DIG__ 9
+#define __FLT_MAX__ 3.40282346638528859812e+38F
+#define __FLT_MIN__ 1.17549435082228750797e-38F
+#define __FLT_EPSILON__ 1.19209289550781250000e-7F
+#define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F
+#define __FLT_HAS_DENORM__ 1
+#define __FLT_HAS_INFINITY__ 1
+#define __FLT_HAS_QUIET_NAN__ 1
+#define __DBL_MANT_DIG__ 53
+#define __DBL_DIG__ 15
+#define __DBL_MIN_EXP__ (-1021)
+#define __DBL_MIN_10_EXP__ (-307)
+#define __DBL_MAX_EXP__ 1024
+#define __DBL_MAX_10_EXP__ 308
+#define __DBL_DECIMAL_DIG__ 17
+#define __DBL_MAX__ ((double)1.79769313486231570815e+308L)
+#define __DBL_MIN__ ((double)2.22507385850720138309e-308L)
+#define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L)
+#define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L)
+#define __DBL_HAS_DENORM__ 1
+#define __DBL_HAS_INFINITY__ 1
+#define __DBL_HAS_QUIET_NAN__ 1
+#define __LDBL_MANT_DIG__ 64
+#define __LDBL_DIG__ 18
+#define __LDBL_MIN_EXP__ (-16381)
+#define __LDBL_MIN_10_EXP__ (-4931)
+#define __LDBL_MAX_EXP__ 16384
+#define __LDBL_MAX_10_EXP__ 4932
+#define __DECIMAL_DIG__ 21
+#define __LDBL_MAX__ 1.18973149535723176502e+4932L
+#define __LDBL_MIN__ 3.36210314311209350626e-4932L
+#define __LDBL_EPSILON__ 1.08420217248550443401e-19L
+#define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L
+#define __LDBL_HAS_DENORM__ 1
+#define __LDBL_HAS_INFINITY__ 1
+#define __LDBL_HAS_QUIET_NAN__ 1
+#define __DEC32_MANT_DIG__ 7
+#define __DEC32_MIN_EXP__ (-94)
+#define __DEC32_MAX_EXP__ 97
+#define __DEC32_MIN__ 1E-95DF
+#define __DEC32_MAX__ 9.999999E96DF
+#define __DEC32_EPSILON__ 1E-6DF
+#define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF
+#define __DEC64_MANT_DIG__ 16
+#define __DEC64_MIN_EXP__ (-382)
+#define __DEC64_MAX_EXP__ 385
+#define __DEC64_MIN__ 1E-383DD
+#define __DEC64_MAX__ 9.999999999999999E384DD
+#define __DEC64_EPSILON__ 1E-15DD
+#define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD
+#define __DEC128_MANT_DIG__ 34
+#define __DEC128_MIN_EXP__ (-6142)
+#define __DEC128_MAX_EXP__ 6145
+#define __DEC128_MIN__ 1E-6143DL
+#define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL
+#define __DEC128_EPSILON__ 1E-33DL
+#define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL
+#define __REGISTER_PREFIX__
+#define __USER_LABEL_PREFIX__
+#define __GNUC_GNU_INLINE__ 1
+#define __NO_INLINE__ 1
+#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1
+#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1
+#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1
+#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1
+#define __GCC_ATOMIC_BOOL_LOCK_FREE 2
+#define __GCC_ATOMIC_CHAR_LOCK_FREE 2
+#define __GCC_ATOMIC_CHAR16_T_LOCK_FREE 2
+#define __GCC_ATOMIC_CHAR32_T_LOCK_FREE 2
+#define __GCC_ATOMIC_WCHAR_T_LOCK_FREE 2
+#define __GCC_ATOMIC_SHORT_LOCK_FREE 2
+#define __GCC_ATOMIC_INT_LOCK_FREE 2
+#define __GCC_ATOMIC_LONG_LOCK_FREE 2
+#define __GCC_ATOMIC_LLONG_LOCK_FREE 2
+#define __GCC_ATOMIC_TEST_AND_SET_TRUEVAL 1
+#define __GCC_ATOMIC_POINTER_LOCK_FREE 2
+#define __GCC_HAVE_DWARF2_CFI_ASM 1
+#define __PRAGMA_REDEFINE_EXTNAME 1
+#define __SIZEOF_INT128__ 16
+#define __SIZEOF_WCHAR_T__ 4
+#define __SIZEOF_WINT_T__ 4
+#define __SIZEOF_PTRDIFF_T__ 8
+#define __amd64 1
+#define __amd64__ 1
+#define __x86_64 1
+#define __x86_64__ 1
+#define __ATOMIC_HLE_ACQUIRE 65536
+#define __ATOMIC_HLE_RELEASE 131072
+#define __k8 1
+#define __k8__ 1
+#define __code_model_small__ 1
+#define __MMX__ 1
+#define __SSE__ 1
+#define __SSE2__ 1
+#define __FXSR__ 1
+#define __SSE_MATH__ 1
+#define __SSE2_MATH__ 1
+#define __gnu_linux__ 1
+#define __linux 1
+#define __linux__ 1
+#define linux 1
+#define __unix 1
+#define __unix__ 1
+#define unix 1
+#define __ELF__ 1
+#define __DECIMAL_BID_FORMAT__ 1
+#define __NVCC__ 1
+#define __CUDACC_VER_BUILD__ 85
+#define __CUDACC_VER_MINOR__ 1
+#define __CUDACC_VER_MAJOR__ 9
+#define _STDC_PREDEF_H 1
+#define __STDC_IEC_559__ 1
+#define __STDC_IEC_559_COMPLEX__ 1
+#define __STDC_ISO_10646__ 201304L
+#define __STDC_NO_THREADS__ 1
+COMPILER_PATH=/usr/lib64/gcc/x86_64-suse-linux/4.8/:/usr/lib64/gcc/x86_64-suse-linux/4.8/:/usr/lib64/gcc/x86_64-suse-linux/:/usr/lib64/gcc/x86_64-suse-linux/4.8/:/usr/lib64/gcc/x86_64-suse-linux/:/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/bin/
+LIBRARY_PATH=/usr/lib64/gcc/x86_64-suse-linux/4.8/:/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/lib/:/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../:/lib/:/usr/lib/
+COLLECT_GCC_OPTIONS='-E' '-D' '__NVCC__' '-P' '-v' '-dD' '-I' '/usr/local/cuda-9.1/bin/../targets/x86_64-linux/include' '-D' '__CUDACC_VER_BUILD__=85' '-D' '__CUDACC_VER_MINOR__=1' '-D' '__CUDACC_VER_MAJOR__=9' '-m64' '-mtune=generic' '-march=x86-64' \ No newline at end of file
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/.classpath b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/.classpath
new file mode 100644
index 00000000000..79a7cca69b1
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/.classpath
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11">
+ <attributes>
+ <attribute name="maven.pomderived" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src/"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/.gitignore b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/.gitignore
new file mode 100644
index 00000000000..b83d22266ac
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/.gitignore
@@ -0,0 +1 @@
+/target/
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/.project b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/.project
new file mode 100644
index 00000000000..f6e5f9d9b79
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/.project
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.cdt.jsoncdb.nvidia</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+ </natures>
+</projectDescription>
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/.settings/org.eclipse.core.resources.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/.settings/org.eclipse.jdt.core.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..e3a8104f9ca
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/releng/org.eclipse.cdt.sdk/.settings/org.eclipse.jdt.launching.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/.settings/org.eclipse.jdt.launching.prefs
index f8a131b56e0..f8a131b56e0 100644
--- a/releng/org.eclipse.cdt.sdk/.settings/org.eclipse.jdt.launching.prefs
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/.settings/org.eclipse.jdt.launching.prefs
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/.settings/org.eclipse.jdt.ui.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/.settings/org.eclipse.m2e.core.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 00000000000..f897a7f1cb2
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/.settings/org.eclipse.pde.api.tools.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/.settings/org.eclipse.pde.api.tools.prefs
index ec9fbf321d0..ec9fbf321d0 100644
--- a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/.settings/org.eclipse.pde.api.tools.prefs
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/.settings/org.eclipse.pde.api.tools.prefs
diff --git a/upc/org.eclipse.cdt.managedbuilder.bupc.ui/.settings/org.eclipse.pde.prefs b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/.settings/org.eclipse.pde.prefs
index d2dc703ba9e..d2dc703ba9e 100644
--- a/upc/org.eclipse.cdt.managedbuilder.bupc.ui/.settings/org.eclipse.pde.prefs
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/.settings/org.eclipse.pde.prefs
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/META-INF/MANIFEST.MF b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..ac2a54704a1
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/META-INF/MANIFEST.MF
@@ -0,0 +1,14 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %bundleName
+Bundle-Copyright: %Bundle-Copyright
+Bundle-SymbolicName: org.eclipse.cdt.jsoncdb.nvidia;singleton:=true
+Bundle-Version: 1.0.200.qualifier
+Bundle-Vendor: %Bundle-Vendor
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.core.runtime;bundle-version="3.11.1",
+ org.eclipse.help,
+ org.eclipse.cdt.jsoncdb.core;bundle-version="1.0.0"
+Automatic-Module-Name: org.eclipse.cdt.jsoncdb.nvidia
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/about.html b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/build.properties b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/build.properties
new file mode 100644
index 00000000000..2367d3898da
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/build.properties
@@ -0,0 +1,10 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ plugin.properties,\
+ about.html,\
+ help_content_extension.xml,\
+ doc/
+src.includes = about.html
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/doc/compiler.xhtml b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/doc/compiler.xhtml
new file mode 100644
index 00000000000..195096da084
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/doc/compiler.xhtml
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
+ <head>
+ <title>NVidia.com Compilers</title>
+ </head>
+ <body>
+ <div id="lsp">
+ <h4>NVidia.com Compilers</h4>
+ <table style="border-collapse:collapse">
+ <thead>
+ <tr>
+ <th>Compiler</th>
+ <th>Vendor/Standard</th>
+ <th>Language</th>
+ <th>Macros</th>
+ <th>Include directories</th>
+ <th>System include
+ <br />
+ directories
+ </th>
+ <th>Compiler executables</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>nvcc</td>
+ <td>NVidia</td>
+ <td>CUDA</td>
+ <td>Yes</td>
+ <td>Yes</td>
+ <td>Yes</td>
+ <td>nvcc, nvcc.exe</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+
+ <div id="builtins">
+ <h4>NVidia.com Compilers</h4>
+ <table style="border-collapse:collapse">
+ <thead>
+ <tr>
+ <th>Compiler</th>
+ <th>Vendor</th>
+ <th>Macros</th>
+ <th>
+ System
+ <br />
+ include paths
+ </th>
+ <th>
+ Local
+ <br />
+ include paths
+ </th>
+ <th>
+ MACOS Framework
+ <br />
+ include paths
+ </th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>nvcc</td>
+ <td>NVidia</td>
+ <td>tested</td>
+ <td>tested</td>
+ <td>tested</td>
+ <td>NYI <a href="#fw-help-nvcc">[3]</a></td>
+ </tr>
+ </tbody>
+ </table>
+ <p>Remarks:</p>
+ <ul style="list-style-type:none">
+ <li id="fw-help-nvcc">[3] Help wanted! To implement this, the output of <code>nvcc -E -Xcompiler -P -Xcompiler -dD -Xcompiler -v emty.cu</code>
+ running on OSX is needed.</li>
+ </ul>
+ </div>
+
+ <div id="builtins_enhanced">
+ <table id="overview_table_eh" style="border-collapse:collapse">
+ <thead>
+ <tr>
+ <th>Compiler</th>
+ <th>Vendor</th>
+ <th>Language Standard<br/>options</th>
+ <th>Non-Standard System<br/>include paths options</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>nvcc</td>
+ <td>NVidia</td>
+ <td><code>-std</code>, <code>--std</code>: tested</td>
+ <td>N/A??? <a href="#fw-help-test">[4]</a><a href="#fw-help-test2">[4]</a></td>
+ </tr>
+ </tbody>
+ </table>
+ <p>Remarks:</p>
+ <ul style="list-style-type:none">
+ <li id="help-test">[4] If you can test it, please do so and report your findings on the
+ <a href="https://accounts.eclipse.org/mailing-list/cdt-dev">CDT General developers list</a>.</li>
+ </ul>
+ </div>
+
+ </body>
+</html> \ No newline at end of file
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/help_content_extension.xml b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/help_content_extension.xml
new file mode 100644
index 00000000000..823e61cb946
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/help_content_extension.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<contentExtension>
+ <contribution content="doc/compiler.xhtml#lsp"
+ path="/org.eclipse.cdt.jsoncdb.core.doc/doc/html/supported-compilers.xhtml#extra_detection_participant_list"/>
+ <contribution content="doc/compiler.xhtml#builtins"
+ path="/org.eclipse.cdt.jsoncdb.core.doc/doc/html/builtins-detection.xhtml#extra_detection_participant_builtins_list"/>
+ <contribution content="doc/compiler.xhtml#builtins_enhanced"
+ path="/org.eclipse.cdt.jsoncdb.core.doc/doc/html/builtins-detection.xhtml#extra_detection_participant_builtins_enhanced_list"/>
+</contentExtension> \ No newline at end of file
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/plugin.properties b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/plugin.properties
new file mode 100644
index 00000000000..5b3ef0c7935
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/plugin.properties
@@ -0,0 +1,10 @@
+bundleName=JSON Compilation Database Parser Support for NVidia CUDA compilers
+
+Bundle-Vendor = Eclipse CDT
+Bundle-Copyright = 2019 Martin Weber\n\
+\n\
+This program and the accompanying materials are made\n\
+available under the terms of the Eclipse Public License 2.0\n\
+which is available at https://www.eclipse.org/legal/epl-2.0/\n\
+\n\
+SPDX-License-Identifier: EPL-2.0\n\ \ No newline at end of file
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/plugin.xml b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/plugin.xml
new file mode 100644
index 00000000000..ec56aeedb4e
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/plugin.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension point="org.eclipse.cdt.jsoncdb.core.detectionParticipant">
+ <tool
+ class="org.eclipse.cdt.jsoncdb.nvidia.NvccToolDetectionParticipant"
+ displayName="NVidia.com nvcc, CUDA"/>
+ </extension>
+ <extension
+ point="org.eclipse.help.contentExtension">
+ <contentExtension
+ file="help_content_extension.xml">
+ </contentExtension>
+ </extension>
+</plugin>
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/src/org/eclipse/cdt/jsoncdb/nvidia/NvccBuiltinDetectionBehavior.java b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/src/org/eclipse/cdt/jsoncdb/nvidia/NvccBuiltinDetectionBehavior.java
new file mode 100644
index 00000000000..248341f9287
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/src/org/eclipse/cdt/jsoncdb/nvidia/NvccBuiltinDetectionBehavior.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * Copyright (c) 2019-2020 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.jsoncdb.nvidia;
+
+import java.util.Arrays;
+import java.util.List;
+
+import org.eclipse.cdt.jsoncdb.core.participant.builtins.GccOutputProcessor;
+import org.eclipse.cdt.jsoncdb.core.participant.builtins.IBuiltinsDetectionBehavior;
+import org.eclipse.cdt.jsoncdb.core.participant.builtins.IBuiltinsOutputProcessor;
+
+/**
+ * The {link IBuiltinsDetectionBehavior} for the NVidia CUDA compiler.
+ *
+ * @author Martin Weber
+ */
+class NvccBuiltinDetectionBehavior implements IBuiltinsDetectionBehavior {
+ // -E -Xcompiler -P -Xcompiler -dM for macros, -Xcompiler -v for include paths
+ @SuppressWarnings("nls")
+ private final List<String> enablingArgs = Arrays.asList("-E", "-Xcompiler", "-P", "-Xcompiler", "-dM", "-Xcompiler",
+ "-v");
+
+ @Override
+ public List<String> getBuiltinsOutputEnablingArgs() {
+ return enablingArgs;
+ }
+
+ @Override
+ public IBuiltinsOutputProcessor createCompilerOutputProcessor() {
+ return new GccOutputProcessor();
+ }
+
+ @Override
+ public boolean suppressErrormessage() {
+ // report an error, if the compiler does not understand the arguments that
+ // enable built-in detection
+ return false;
+ }
+}
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/src/org/eclipse/cdt/jsoncdb/nvidia/NvccLangStdArglet.java b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/src/org/eclipse/cdt/jsoncdb/nvidia/NvccLangStdArglet.java
new file mode 100644
index 00000000000..24dc0a46c3a
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/src/org/eclipse/cdt/jsoncdb/nvidia/NvccLangStdArglet.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.jsoncdb.nvidia;
+
+import java.util.regex.Pattern;
+
+import org.eclipse.cdt.jsoncdb.core.participant.Arglets.BuiltinDetectionArgsGeneric;
+import org.eclipse.cdt.jsoncdb.core.participant.IArglet;
+import org.eclipse.core.runtime.IPath;
+
+/**
+ * A tool argument parser capable to parse a nvcc option to specify the language
+ * standard {@code --std=xxx}.
+ */
+public class NvccLangStdArglet extends BuiltinDetectionArgsGeneric implements IArglet {
+ @SuppressWarnings("nls")
+ private static final Pattern[] optionPatterns = { Pattern.compile("--std \\S+"), //
+ Pattern.compile("-std \\S+"), //
+ };
+
+ /*-
+ * @see org.eclipse.cdt.jsoncdb.core.participant.IArglet.processArgument(IArgumentCollector, IPath, String)
+ */
+ @Override
+ public int processArgument(IArgumentCollector resultCollector, IPath cwd, String argsLine) {
+ return processArgument(resultCollector, argsLine, optionPatterns);
+ }
+} \ No newline at end of file
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/src/org/eclipse/cdt/jsoncdb/nvidia/NvccSystemIncludePathArglet.java b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/src/org/eclipse/cdt/jsoncdb/nvidia/NvccSystemIncludePathArglet.java
new file mode 100644
index 00000000000..feaf8b2eefb
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/src/org/eclipse/cdt/jsoncdb/nvidia/NvccSystemIncludePathArglet.java
@@ -0,0 +1,39 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.jsoncdb.nvidia;
+
+import org.eclipse.cdt.jsoncdb.core.participant.Arglets.IncludePathGeneric;
+import org.eclipse.cdt.jsoncdb.core.participant.Arglets.NameOptionMatcher;
+import org.eclipse.cdt.jsoncdb.core.participant.IArglet;
+import org.eclipse.core.runtime.IPath;
+
+/**
+ * A tool argument parser capable to parse a nvcc-compiler system include path
+ * argument: {@code -system=dir}.<br>
+ * Note that nvcc seems to treat {@code -system=dir} differently from GCC
+ * which`s manpage says:
+ * <q>If dir begins with "=", then the "=" will be replaced by the sysroot
+ * prefix; see --sysroot and -isysroot.</q>
+ */
+class NvccSystemIncludePathArglet extends IncludePathGeneric implements IArglet {
+ static final NameOptionMatcher[] optionMatchers = {
+ /* quoted directory */
+ new NameOptionMatcher("-isystem=" + "([\"'])(.+?)\\1", 2), //$NON-NLS-1$ //$NON-NLS-2$
+ /* unquoted directory */
+ new NameOptionMatcher("-isystem=" + "([^\\s]+)", 1), }; //$NON-NLS-1$ //$NON-NLS-2$
+
+ /*-
+ * @see org.eclipse.cdt.jsoncdb.core.participant.IArglet.processArgument(IArgumentCollector, IPath, String)
+ */
+ @Override
+ public int processArgument(IArgumentCollector resultCollector, IPath cwd, String argsLine) {
+ return processArgument(true, resultCollector, cwd, argsLine, optionMatchers);
+ }
+} \ No newline at end of file
diff --git a/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/src/org/eclipse/cdt/jsoncdb/nvidia/NvccToolDetectionParticipant.java b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/src/org/eclipse/cdt/jsoncdb/nvidia/NvccToolDetectionParticipant.java
new file mode 100644
index 00000000000..9737df7ac1a
--- /dev/null
+++ b/jsoncdb/org.eclipse.cdt.jsoncdb.nvidia/src/org/eclipse/cdt/jsoncdb/nvidia/NvccToolDetectionParticipant.java
@@ -0,0 +1,39 @@
+/*******************************************************************************
+ * Copyright (c) 2019-2020 Martin Weber.
+ *
+ * Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
+ * A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.jsoncdb.nvidia;
+
+import org.eclipse.cdt.jsoncdb.core.participant.Arglets;
+import org.eclipse.cdt.jsoncdb.core.participant.DefaultToolCommandlineParser;
+import org.eclipse.cdt.jsoncdb.core.participant.DefaultToolDetectionParticipant;
+import org.eclipse.cdt.jsoncdb.core.participant.IArglet;
+import org.eclipse.cdt.jsoncdb.core.participant.ResponseFileArglets;
+
+/**
+ * CUDA: nvcc compilers (POSIX compatible).
+ *
+ * @author Martin Weber
+ */
+public class NvccToolDetectionParticipant extends DefaultToolDetectionParticipant {
+
+ public NvccToolDetectionParticipant() {
+ super("nvcc", true, "exe", new ToolCommandlineParser()); //$NON-NLS-1$//$NON-NLS-2$
+ }
+
+ private static class ToolCommandlineParser extends DefaultToolCommandlineParser {
+
+ private static final IArglet[] arglets = { new Arglets.IncludePath_C_POSIX(), new Arglets.MacroDefine_C_POSIX(),
+ new Arglets.MacroUndefine_C_POSIX(), new NvccSystemIncludePathArglet(),
+ new Arglets.SystemIncludePath_C(), new NvccLangStdArglet() };
+
+ private ToolCommandlineParser() {
+ super(new ResponseFileArglets.At(), new NvccBuiltinDetectionBehavior(), arglets);
+ }
+ }
+}
diff --git a/jsoncdb/pom.xml b/jsoncdb/pom.xml
new file mode 100644
index 00000000000..9b111a76f87
--- /dev/null
+++ b/jsoncdb/pom.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2020, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
+<project
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+ xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.cdt</groupId>
+ <artifactId>cdt-parent</artifactId>
+ <version>10.7.0-SNAPSHOT</version>
+ </parent>
+
+ <groupId>org.eclipse.cdt</groupId>
+ <artifactId>jsoncdb-parent</artifactId>
+ <version>10.7.0-SNAPSHOT</version>
+ <packaging>pom</packaging>
+
+ <modules>
+ <module>org.eclipse.cdt.jsoncdb.core.doc</module>
+ <module>org.eclipse.cdt.jsoncdb.core</module>
+ <module>org.eclipse.cdt.jsoncdb.core.tests</module>
+ <module>org.eclipse.cdt.jsoncdb.core.ui</module>
+ <module>org.eclipse.cdt.jsoncdb.arm</module>
+ <module>org.eclipse.cdt.jsoncdb.arm.tests</module>
+ <module>org.eclipse.cdt.jsoncdb.hpenonstop</module>
+ <module>org.eclipse.cdt.jsoncdb.hpenonstop.tests</module>
+ <module>org.eclipse.cdt.jsoncdb.intel</module>
+ <module>org.eclipse.cdt.jsoncdb.nvidia</module>
+ <module>org.eclipse.cdt.jsoncdb.nvidia.tests</module>
+ <module>org.eclipse.cdt.jsoncdb.microsoft</module>
+ <module>org.eclipse.cdt.jsoncdb.microsoft.tests</module>
+ </modules>
+</project>
diff --git a/jtag/org.eclipse.cdt.debug.dap.gdbjtag-feature/.settings/org.eclipse.core.resources.prefs b/jtag/org.eclipse.cdt.debug.dap.gdbjtag-feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/jtag/org.eclipse.cdt.debug.dap.gdbjtag-feature/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/jtag/org.eclipse.cdt.debug.dap.gdbjtag-feature/build.properties b/jtag/org.eclipse.cdt.debug.dap.gdbjtag-feature/build.properties
index 274b1f45828..72da250726e 100644
--- a/jtag/org.eclipse.cdt.debug.dap.gdbjtag-feature/build.properties
+++ b/jtag/org.eclipse.cdt.debug.dap.gdbjtag-feature/build.properties
@@ -1,5 +1,5 @@
###############################################################################
-# Copyright (c) 2019 Kichwa Coders Canada and others.
+# Copyright (c) 2019 Kichwa Coders Canada Inc. and others.
#
# This program and the accompanying materials
# are made available under the terms of the Eclipse Public License 2.0
diff --git a/jtag/org.eclipse.cdt.debug.dap.gdbjtag-feature/feature.properties b/jtag/org.eclipse.cdt.debug.dap.gdbjtag-feature/feature.properties
index 0b1f5c741d5..2268191ffc6 100644
--- a/jtag/org.eclipse.cdt.debug.dap.gdbjtag-feature/feature.properties
+++ b/jtag/org.eclipse.cdt.debug.dap.gdbjtag-feature/feature.properties
@@ -1,5 +1,5 @@
###############################################################################
-# Copyright (c) 2019 Kichwa Coders Canada and others.
+# Copyright (c) 2019 Kichwa Coders Canada Inc. and others.
#
# This program and the accompanying materials
# are made available under the terms of the Eclipse Public License 2.0
@@ -16,7 +16,7 @@ featureName=C/C++ Debug Adapter GDB Hardware Debugger Integration
providerName=Eclipse CDT
description=Debug Adapter (DAP) integration with gdb hardware debugger
copyright=\
-Copyright (c) 2019 Kichwa Coders Canada and others.\n\
+Copyright (c) 2019 Kichwa Coders Canada Inc. and others.\n\
This program and the accompanying materials\n\
are made available under the terms of the Eclipse Public License 2.0\n\
which accompanies this distribution, and is available at\n\
diff --git a/jtag/org.eclipse.cdt.debug.dap.gdbjtag-feature/feature.xml b/jtag/org.eclipse.cdt.debug.dap.gdbjtag-feature/feature.xml
index 1abd314111b..d67b39fdd93 100644
--- a/jtag/org.eclipse.cdt.debug.dap.gdbjtag-feature/feature.xml
+++ b/jtag/org.eclipse.cdt.debug.dap.gdbjtag-feature/feature.xml
@@ -1,8 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2019, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<feature
id="org.eclipse.cdt.debug.dap.gdbjtag"
label="%featureName"
- version="9.10.0.qualifier"
+ version="10.7.0.qualifier"
provider-name="%providerName"
license-feature="org.eclipse.license"
license-feature-version="0.0.0">
diff --git a/jtag/org.eclipse.cdt.debug.dap.gdbjtag/.classpath b/jtag/org.eclipse.cdt.debug.dap.gdbjtag/.classpath
index eca7bdba8f0..e801ebfb468 100644
--- a/jtag/org.eclipse.cdt.debug.dap.gdbjtag/.classpath
+++ b/jtag/org.eclipse.cdt.debug.dap.gdbjtag/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/jtag/org.eclipse.cdt.debug.dap.gdbjtag/.project b/jtag/org.eclipse.cdt.debug.dap.gdbjtag/.project
index bbeb9c0c7a3..a2133a3b7c9 100644
--- a/jtag/org.eclipse.cdt.debug.dap.gdbjtag/.project
+++ b/jtag/org.eclipse.cdt.debug.dap.gdbjtag/.project
@@ -20,9 +20,15 @@
<arguments>
</arguments>
</buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.pde.PluginNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
</natures>
</projectDescription>
diff --git a/jtag/org.eclipse.cdt.debug.dap.gdbjtag/.settings/org.eclipse.core.resources.prefs b/jtag/org.eclipse.cdt.debug.dap.gdbjtag/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/jtag/org.eclipse.cdt.debug.dap.gdbjtag/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/jtag/org.eclipse.cdt.debug.dap.gdbjtag/.settings/org.eclipse.jdt.core.prefs b/jtag/org.eclipse.cdt.debug.dap.gdbjtag/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/jtag/org.eclipse.cdt.debug.dap.gdbjtag/.settings/org.eclipse.jdt.core.prefs
+++ b/jtag/org.eclipse.cdt.debug.dap.gdbjtag/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/jtag/org.eclipse.cdt.debug.dap.gdbjtag/.settings/org.eclipse.jdt.ui.prefs b/jtag/org.eclipse.cdt.debug.dap.gdbjtag/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/jtag/org.eclipse.cdt.debug.dap.gdbjtag/.settings/org.eclipse.jdt.ui.prefs
+++ b/jtag/org.eclipse.cdt.debug.dap.gdbjtag/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/jtag/org.eclipse.cdt.debug.dap.gdbjtag/META-INF/MANIFEST.MF b/jtag/org.eclipse.cdt.debug.dap.gdbjtag/META-INF/MANIFEST.MF
index 000958c0c1d..0223d98b70b 100644
--- a/jtag/org.eclipse.cdt.debug.dap.gdbjtag/META-INF/MANIFEST.MF
+++ b/jtag/org.eclipse.cdt.debug.dap.gdbjtag/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@ Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name
Bundle-Vendor: %Bundle-Vendor
Bundle-SymbolicName: org.eclipse.cdt.debug.dap.gdbjtag;singleton:=true
-Bundle-Version: 1.100.0.qualifier
+Bundle-Version: 1.101.300.qualifier
Bundle-Activator: org.eclipse.cdt.debug.dap.gdbjtag.Activator
Require-Bundle: org.apache.commons.io,
org.eclipse.core.runtime,
@@ -33,6 +33,6 @@ Require-Bundle: org.apache.commons.io,
org.eclipse.cdt.debug.gdbjtag.ui;bundle-version="8.1.1",
org.eclipse.cdt.debug.gdbjtag.core,
org.eclipse.core.variables;bundle-version="3.4.600"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Automatic-Module-Name: org.eclipse.cdt.debug.dap.gdbjtag
Bundle-ActivationPolicy: lazy
diff --git a/jtag/org.eclipse.cdt.debug.dap.gdbjtag/about.html b/jtag/org.eclipse.cdt.debug.dap.gdbjtag/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/jtag/org.eclipse.cdt.debug.dap.gdbjtag/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/jtag/org.eclipse.cdt.debug.dap.gdbjtag/about.ini b/jtag/org.eclipse.cdt.debug.dap.gdbjtag/about.ini
new file mode 100644
index 00000000000..e07a7bb377e
--- /dev/null
+++ b/jtag/org.eclipse.cdt.debug.dap.gdbjtag/about.ini
@@ -0,0 +1,24 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%blurb
+
+# Property "windowImage" contains path to window icon (16x16)
+# needed for primary features only
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=cdt_logo_icon32.png
+
+# Property "aboutImage" contains path to product image (500x330 or 115x164)
+# needed for primary features only
+
+# Property "appName" contains name of the application (translated)
+# needed for primary features only
+
+# Property "welcomePerspective" contains the id of the perspective in which the
+# welcome page is to be opened.
+# optional
diff --git a/jtag/org.eclipse.cdt.debug.dap.gdbjtag/about.mappings b/jtag/org.eclipse.cdt.debug.dap.gdbjtag/about.mappings
new file mode 100644
index 00000000000..936a8039c3e
--- /dev/null
+++ b/jtag/org.eclipse.cdt.debug.dap.gdbjtag/about.mappings
@@ -0,0 +1,9 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+# The following should contain the build version.
+# e.g. "0=20200106-1728"
+# This value will be added automatically via the build scripts
+0=${buildId}
diff --git a/jtag/org.eclipse.cdt.debug.dap.gdbjtag/about.properties b/jtag/org.eclipse.cdt.debug.dap.gdbjtag/about.properties
new file mode 100644
index 00000000000..c00f78a62cf
--- /dev/null
+++ b/jtag/org.eclipse.cdt.debug.dap.gdbjtag/about.properties
@@ -0,0 +1,32 @@
+###############################################################################
+# Copyright (c) 2019, 2022 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+# about.properties
+# contains externalized strings for about.ini
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# fill-ins are supplied by about.mappings
+# This file should be translated.
+# NOTE TO TRANSLATOR: Please do not translate the featureVersion variable.
+
+
+blurb=C/C++ Debug Adapter GDB Hardware Debugger Integration\n\
+\n\
+Version: {featureVersion}\n\
+Build id: {0}\n\
+\n\
+Copyright (c) 2019, 2022 Contributors to the Eclipse Foundation
+\n\
+See the NOTICE file(s) distributed with this work for additional\n\
+information regarding copyright ownership.\n\
+\n\
+Visit http://www.eclipse.org/cdt
diff --git a/jtag/org.eclipse.cdt.debug.dap.gdbjtag/build.properties b/jtag/org.eclipse.cdt.debug.dap.gdbjtag/build.properties
index 3e5f9ad7d0d..1819ac4be71 100644
--- a/jtag/org.eclipse.cdt.debug.dap.gdbjtag/build.properties
+++ b/jtag/org.eclipse.cdt.debug.dap.gdbjtag/build.properties
@@ -3,4 +3,10 @@ output.. = bin/
bin.includes = META-INF/,\
.,\
plugin.xml,\
- OSGI-INF/
+ OSGI-INF/,\
+ cdt_logo_icon32.png,\
+ about.properties,\
+ about.mappings,\
+ about.ini,\
+ about.html
+src.includes = about.html
diff --git a/jtag/org.eclipse.cdt.debug.dap.gdbjtag/cdt_logo_icon32.png b/jtag/org.eclipse.cdt.debug.dap.gdbjtag/cdt_logo_icon32.png
new file mode 100644
index 00000000000..470ca81b327
--- /dev/null
+++ b/jtag/org.eclipse.cdt.debug.dap.gdbjtag/cdt_logo_icon32.png
Binary files differ
diff --git a/jtag/org.eclipse.cdt.debug.dap.gdbjtag/src/org/eclipse/cdt/debug/dap/gdbjtag/DapGdbJtagLaunchDelegate.java b/jtag/org.eclipse.cdt.debug.dap.gdbjtag/src/org/eclipse/cdt/debug/dap/gdbjtag/DapGdbJtagLaunchDelegate.java
index 176ffac929f..f1f9515e30b 100644
--- a/jtag/org.eclipse.cdt.debug.dap.gdbjtag/src/org/eclipse/cdt/debug/dap/gdbjtag/DapGdbJtagLaunchDelegate.java
+++ b/jtag/org.eclipse.cdt.debug.dap.gdbjtag/src/org/eclipse/cdt/debug/dap/gdbjtag/DapGdbJtagLaunchDelegate.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2019 Kichwa Coders and others.
+ * Copyright (c) 2019, 2020 Kichwa Coders Ltd and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -10,6 +10,7 @@
*
* Contributors:
* John Dallaway - Use 'reset and halt' command (Bug 535163)
+ * John Dallaway - Eliminate deprecated API (Bug 566462)
*******************************************************************************/
package org.eclipse.cdt.debug.dap.gdbjtag;
@@ -59,6 +60,8 @@ public class DapGdbJtagLaunchDelegate extends DapLaunchDelegate {
// preRunCommands field
public static final String PRE_RUN_COMMANDS = "preRunCommands"; //$NON-NLS-1$
+ private static final String ATTR_JTAG_DEVICE = "org.eclipse.cdt.debug.gdbjtag.core.jtagDevice"; //$NON-NLS-1$
+
@Override
public void launch(ILaunchConfiguration configuration, String mode, ILaunch launch, IProgressMonitor monitor,
boolean targetDebugAdapter, Map<String, Object> params) throws CoreException {
@@ -112,7 +115,7 @@ public class DapGdbJtagLaunchDelegate extends DapLaunchDelegate {
String symbolsOffset = CDebugUtils.getAttribute(attributes, IGDBJtagConstants.ATTR_SYMBOLS_OFFSET,
IGDBJtagConstants.DEFAULT_SYMBOLS_OFFSET);
if (symbolsOffset != null && symbolsOffset.length() > 0) {
- symbolsOffset = "0x" + symbolsOffset;
+ symbolsOffset = "0x" + symbolsOffset; //$NON-NLS-1$
}
List<String> commands = new ArrayList<>();
jtagDevice.doLoadSymbol(symbolsFileName, symbolsOffset, commands);
@@ -170,7 +173,7 @@ public class DapGdbJtagLaunchDelegate extends DapLaunchDelegate {
String imageOffset = CDebugUtils.getAttribute(attributes, IGDBJtagConstants.ATTR_IMAGE_OFFSET,
IGDBJtagConstants.DEFAULT_IMAGE_OFFSET);
if (imageOffset != null && imageOffset.length() > 0) {
- imageOffset = "0x" + CDebugUtils.getAttribute(attributes, IGDBJtagConstants.ATTR_IMAGE_OFFSET,
+ imageOffset = "0x" + CDebugUtils.getAttribute(attributes, IGDBJtagConstants.ATTR_IMAGE_OFFSET, //$NON-NLS-1$
IGDBJtagConstants.DEFAULT_IMAGE_OFFSET);
}
List<String> commands = new ArrayList<>();
@@ -210,23 +213,27 @@ public class DapGdbJtagLaunchDelegate extends DapLaunchDelegate {
IGDBJtagConstants.DEFAULT_USE_REMOTE_TARGET)) {
List<String> commands = new ArrayList<>();
if (jtagDevice instanceof IGDBJtagConnection) {
- URI uri;
- try {
- uri = new URI(CDebugUtils.getAttribute(attributes, IGDBJtagConstants.ATTR_CONNECTION,
- IGDBJtagConstants.DEFAULT_CONNECTION));
- } catch (URISyntaxException e) {
- throw newCoreException("Invalid remote target connection syntax", e);
+ String connection = IGDBJtagConstants.DEFAULT_CONNECTION;
+ String connectionUri = CDebugUtils.getAttribute(attributes, IGDBJtagConstants.ATTR_CONNECTION,
+ IGDBJtagConstants.DEFAULT_CONNECTION);
+ if (!IGDBJtagConstants.DEFAULT_CONNECTION.equals(connectionUri)) {
+ try {
+ connection = new URI(connectionUri).getSchemeSpecificPart();
+ } catch (URISyntaxException e) {
+ throw newCoreException("Invalid remote target connection syntax", e);
+ }
+ } else {
+ // Handle legacy launch configurations
+ String ipAddress = CDebugUtils.getAttribute(attributes, IGDBJtagConstants.ATTR_IP_ADDRESS,
+ IGDBJtagConstants.DEFAULT_IP_ADDRESS);
+ int portNumber = CDebugUtils.getAttribute(attributes, IGDBJtagConstants.ATTR_PORT_NUMBER,
+ IGDBJtagConstants.DEFAULT_PORT_NUMBER);
+ if (!IGDBJtagConstants.DEFAULT_IP_ADDRESS.equals(ipAddress)) {
+ connection = String.format("%s:%d", ipAddress, portNumber); //$NON-NLS-1$
+ }
}
-
IGDBJtagConnection device = (IGDBJtagConnection) jtagDevice;
- device.doRemote(uri.getSchemeSpecificPart(), commands);
- } else {
- // Handle legacy network device contributions that don't understand URIs
- String ipAddress = CDebugUtils.getAttribute(attributes, IGDBJtagConstants.ATTR_IP_ADDRESS,
- IGDBJtagConstants.DEFAULT_IP_ADDRESS);
- int portNumber = CDebugUtils.getAttribute(attributes, IGDBJtagConstants.ATTR_PORT_NUMBER,
- IGDBJtagConstants.DEFAULT_PORT_NUMBER);
- jtagDevice.doRemote(ipAddress, portNumber, commands);
+ device.doRemote(connection, commands);
}
target.put(CONNECT_COMMANDS, commands);
}
@@ -349,19 +356,18 @@ public class DapGdbJtagLaunchDelegate extends DapLaunchDelegate {
return IGDBJtagConstants.DEFAULT_JTAG_DEVICE_NAME;
}
- @SuppressWarnings("deprecation")
private GDBJtagDeviceContribution getGDBJtagDeviceContribution(Map<String, Object> attributes)
throws CoreException {
if (attributes.containsKey(IGDBJtagConstants.ATTR_JTAG_DEVICE_ID)) {
- String deviceId = CDebugUtils.getAttribute(attributes, IGDBJtagConstants.ATTR_JTAG_DEVICE_ID, "");
+ String deviceId = CDebugUtils.getAttribute(attributes, IGDBJtagConstants.ATTR_JTAG_DEVICE_ID, ""); //$NON-NLS-1$
if (!deviceId.isEmpty()) {
return GDBJtagDeviceContributionFactory.getInstance().findByDeviceId(deviceId);
}
}
// Fall back to old behavior with name only if ID is missing
- if (attributes.containsKey(IGDBJtagConstants.ATTR_JTAG_DEVICE)) {
- String deviceName = CDebugUtils.getAttribute(attributes, IGDBJtagConstants.ATTR_JTAG_DEVICE, "");
+ if (attributes.containsKey(ATTR_JTAG_DEVICE)) {
+ String deviceName = CDebugUtils.getAttribute(attributes, ATTR_JTAG_DEVICE, ""); //$NON-NLS-1$
if (!deviceName.isEmpty()) {
return GDBJtagDeviceContributionFactory.getInstance().findByDeviceName(deviceName);
}
diff --git a/jtag/org.eclipse.cdt.debug.dap.gdbjtag/src/org/eclipse/cdt/debug/dap/gdbjtag/tabs/CMainTab.java b/jtag/org.eclipse.cdt.debug.dap.gdbjtag/src/org/eclipse/cdt/debug/dap/gdbjtag/tabs/CMainTab.java
index 373168361e4..c01b619518d 100644
--- a/jtag/org.eclipse.cdt.debug.dap.gdbjtag/src/org/eclipse/cdt/debug/dap/gdbjtag/tabs/CMainTab.java
+++ b/jtag/org.eclipse.cdt.debug.dap.gdbjtag/src/org/eclipse/cdt/debug/dap/gdbjtag/tabs/CMainTab.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2019 Kichwa Coders and others.
+ * Copyright (c) 2019 Kichwa Coders Ltd and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag-feature/.settings/org.eclipse.core.resources.prefs b/jtag/org.eclipse.cdt.debug.gdbjtag-feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag-feature/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag-feature/feature.xml b/jtag/org.eclipse.cdt.debug.gdbjtag-feature/feature.xml
index 9b16ef1b5cb..17463adc678 100644
--- a/jtag/org.eclipse.cdt.debug.gdbjtag-feature/feature.xml
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag-feature/feature.xml
@@ -1,8 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2007, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<feature
id="org.eclipse.cdt.debug.gdbjtag"
label="%featureName"
- version="9.10.0.qualifier"
+ version="10.7.0.qualifier"
provider-name="%providerName"
license-feature="org.eclipse.license"
license-feature-version="0.0.0">
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag-feature/pom.xml b/jtag/org.eclipse.cdt.debug.gdbjtag-feature/pom.xml
index f11b4467213..56e0b16e606 100644
--- a/jtag/org.eclipse.cdt.debug.gdbjtag-feature/pom.xml
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag-feature/pom.xml
@@ -1,4 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2011, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
@@ -7,7 +17,7 @@
<parent>
<groupId>org.eclipse.cdt</groupId>
<artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
+ <version>10.7.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/.classpath b/jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/.classpath
index 3e5654f17eb..a42a828e04a 100644
--- a/jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/.classpath
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src">
<attributes>
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/.settings/org.eclipse.core.resources.prefs b/jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/.settings/org.eclipse.jdt.core.prefs b/jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/.settings/org.eclipse.jdt.core.prefs
index ad05599159f..5b1c443114d 100644
--- a/jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/.settings/org.eclipse.jdt.core.prefs
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/.settings/org.eclipse.jdt.ui.prefs b/jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/.settings/org.eclipse.jdt.ui.prefs
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/META-INF/MANIFEST.MF b/jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/META-INF/MANIFEST.MF
index cee554fa5aa..2573a09165f 100644
--- a/jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/META-INF/MANIFEST.MF
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/META-INF/MANIFEST.MF
@@ -1,19 +1,20 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
-Bundle-Name: GDB Hardware Debugging Tests
+Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.debug.gdbjtag.core.tests;singleton:=true
-Bundle-Version: 1.0.100.qualifier
+Bundle-Version: 1.0.400.qualifier
Bundle-Activator: org.eclipse.cdt.debug.gdbjtag.core.tests.Activator
Require-Bundle: org.eclipse.core.runtime,
org.eclipse.cdt.tests.dsf.gdb;bundle-version="2.3.0",
org.junit,
org.eclipse.cdt.debug.core,
org.eclipse.cdt.dsf.gdb,
- org.eclipse.cdt.debug.gdbjtag.core;bundle-version="9.2.1",
+ org.eclipse.cdt.debug.gdbjtag.core;bundle-version="10.6.0",
org.eclipse.cdt.dsf,
org.eclipse.cdt.launch,
org.eclipse.debug.core
Bundle-ActivationPolicy: lazy
-Bundle-Vendor: Eclipse CDT
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-Vendor: %providerName
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Automatic-Module-Name: org.eclipse.cdt.debug.gdbjtag.core.tests
+Bundle-Localization: plugin
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/about.html b/jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/about.html
index 164f781a8fd..b3134865230 100644
--- a/jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/about.html
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/build.properties b/jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/build.properties
index 798d17d9722..3948c330454 100644
--- a/jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/build.properties
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/build.properties
@@ -3,5 +3,6 @@ output.. = bin/
bin.includes = META-INF/,\
.,\
data/,\
+ plugin.properties,\
about.html
src.includes = about.html
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/plugin.properties b/jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/plugin.properties
new file mode 100644
index 00000000000..466c9a6f317
--- /dev/null
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/plugin.properties
@@ -0,0 +1,14 @@
+##################################################################################
+# Copyright (c) 2020 Torbjörn Svensson and others. All rights reserved.
+# This program and the accompanying materials are made available under the terms
+# of the Eclipse Public License 2.0 which accompanies this distribution, and is
+# available at https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Torbjörn Svensson - initial API and implementation
+##################################################################################
+
+pluginName = GDB Hardware Debugging Tests
+providerName = Eclipse CDT
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/pom.xml b/jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/pom.xml
index 02f3ffaf4a6..cb343510332 100644
--- a/jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/pom.xml
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/pom.xml
@@ -1,4 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2018, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
@@ -7,16 +17,15 @@
<parent>
<groupId>org.eclipse.cdt</groupId>
<artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
+ <version>10.7.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
- <version>1.0.100-SNAPSHOT</version>
+ <version>1.0.400-SNAPSHOT</version>
<artifactId>org.eclipse.cdt.debug.gdbjtag.core.tests</artifactId>
<packaging>eclipse-test-plugin</packaging>
<properties>
- <dsf.gdb.tests.gdbTestSuite>AutomatedSuite.java</dsf.gdb.tests.gdbTestSuite>
<dsf.gdb.tests.timeout.multiplier>1</dsf.gdb.tests.timeout.multiplier>
<skipTests>${dsf-gdb.skip.tests}</skipTests>
</properties>
@@ -24,15 +33,14 @@
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.8</version>
<executions>
<execution>
<id>clean</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<ant antfile="../../dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/TestAppBuilder.xml" target="clean"/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -42,9 +50,9 @@
<id>prepare</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<ant antfile="../../dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/TestAppBuilder.xml" target="makeTestApps"/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -60,10 +68,6 @@
<useUIHarness>false</useUIHarness>
<argLine>${tycho.testArgLine} ${base.ui.test.vmargs} -ea -Xms256m -Xmx512m -Dcdt.tests.dsf.gdb.path=${dsf.gdb.tests.gdbPath} -Ddsf.gdb.tests.timeout.multiplier=${dsf.gdb.tests.timeout.multiplier} -Dcdt.tests.dsf.gdb.versions=${cdt.tests.dsf.gdb.versions}</argLine>
<appArgLine>-debug ./dsf.debug.options -pluginCustomization ${basedir}/../../disable_intro_in_tests.ini</appArgLine>
- <includes>
- <include>**/${dsf.gdb.tests.gdbTestSuite}</include>
- </includes>
- <testFailureIgnore>true</testFailureIgnore>
</configuration>
</plugin>
<plugin>
@@ -82,6 +86,12 @@
<id>org.eclipse.cdt</id>
<versionRange>0.0.0</versionRange>
</requirement>
+ <requirement>
+ <!-- Include the DAP bundle to test for any conflicts with it as both may be present in a user install. -->
+ <type>p2-installable-unit</type>
+ <id>org.eclipse.cdt.debug.dap.gdbjtag</id>
+ <versionRange>0.0.0</versionRange>
+ </requirement>
</extraRequirements>
</dependency-resolution>
</configuration>
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/src/org/eclipse/cdt/debug/gdbjtag/core/tests/launch/AutomatedSuite.java b/jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/src/org/eclipse/cdt/debug/gdbjtag/core/tests/AutomatedSuite.java
index dadb27e0174..0154a8a2134 100644
--- a/jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/src/org/eclipse/cdt/debug/gdbjtag/core/tests/launch/AutomatedSuite.java
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/src/org/eclipse/cdt/debug/gdbjtag/core/tests/AutomatedSuite.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2012, 2018 Ericsson and others.
+ * Copyright (c) 2012, 2022 Ericsson and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -12,7 +12,7 @@
* Marc Khouzam (Ericsson) - Base Implementation
* John Dallaway - GDB JTAG Implementation (bug 538282)
*******************************************************************************/
-package org.eclipse.cdt.debug.gdbjtag.core.tests.launch;
+package org.eclipse.cdt.debug.gdbjtag.core.tests;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/src/org/eclipse/cdt/debug/gdbjtag/core/tests/SuiteGDBJtag.java b/jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/src/org/eclipse/cdt/debug/gdbjtag/core/tests/SuiteGDBJtag.java
new file mode 100644
index 00000000000..015722804bf
--- /dev/null
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/src/org/eclipse/cdt/debug/gdbjtag/core/tests/SuiteGDBJtag.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2016, 2022 QNX Software System and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Elena Laskavaia (QNX Software System) - Base API and implementation
+ * John Dallaway - GDB JTAG implementation (bug 538282)
+ *******************************************************************************/
+package org.eclipse.cdt.debug.gdbjtag.core.tests;
+
+import org.eclipse.cdt.debug.gdbjtag.core.tests.jtagdevice.GDBJtagDeviceContributionTest;
+import org.eclipse.cdt.debug.gdbjtag.core.tests.launch.GDBJtagLaunchTest;
+import org.eclipse.cdt.tests.dsf.gdb.framework.BaseParametrizedTestCase;
+import org.junit.BeforeClass;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+
+@SuppressWarnings("restriction")
+@RunWith(Suite.class)
+@Suite.SuiteClasses({ GDBJtagDeviceContributionTest.class, GDBJtagLaunchTest.class })
+
+public class SuiteGDBJtag {
+
+ @BeforeClass
+ public static void before() {
+ BaseParametrizedTestCase.resetGlobalState();
+ }
+
+}
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/src/org/eclipse/cdt/debug/gdbjtag/core/tests/jtagdevice/GDBJtagDeviceContributionTest.java b/jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/src/org/eclipse/cdt/debug/gdbjtag/core/tests/jtagdevice/GDBJtagDeviceContributionTest.java
new file mode 100644
index 00000000000..f2718126103
--- /dev/null
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/src/org/eclipse/cdt/debug/gdbjtag/core/tests/jtagdevice/GDBJtagDeviceContributionTest.java
@@ -0,0 +1,41 @@
+/*******************************************************************************
+ * Copyright (c) 2022 John Dallaway and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * John Dallaway - Initial implementation (Bug 535143)
+ *******************************************************************************/
+package org.eclipse.cdt.debug.gdbjtag.core.tests.jtagdevice;
+
+import static org.junit.Assert.assertArrayEquals;
+
+import org.eclipse.cdt.debug.gdbjtag.core.IGDBJtagConnection;
+import org.eclipse.cdt.debug.gdbjtag.core.jtagdevice.GDBJtagDeviceContribution;
+import org.eclipse.cdt.debug.gdbjtag.core.jtagdevice.GDBJtagDeviceContributionFactory;
+import org.junit.Test;
+
+import junit.framework.TestCase;
+
+public class GDBJtagDeviceContributionTest extends TestCase {
+
+ private static final String TEST_JTAG_DEVICE_ID = "org.eclipse.cdt.debug.gdbjtag.core.jtagdevice.genericDevice"; //$NON-NLS-1$
+ private static final String EXPECTED_PROTOCOLS = "remote,extended-remote"; //$NON-NLS-1$
+ private static final String EXPECTED_DEFAULT_CONNECTION = "localhost:1234"; //$NON-NLS-1$
+
+ @Test
+ public void testGdbJtagDeviceContribution() {
+ final GDBJtagDeviceContribution contribution = GDBJtagDeviceContributionFactory.getInstance()
+ .findByDeviceId(TEST_JTAG_DEVICE_ID);
+ assertNotNull(contribution);
+ final IGDBJtagConnection device = (IGDBJtagConnection) contribution.getDevice();
+ assertArrayEquals(EXPECTED_PROTOCOLS.split(","), device.getDeviceProtocols());
+ assertEquals(EXPECTED_DEFAULT_CONNECTION, device.getDefaultDeviceConnection());
+ }
+
+}
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/src/org/eclipse/cdt/debug/gdbjtag/core/tests/launch/GDBJtagLaunchTest.java b/jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/src/org/eclipse/cdt/debug/gdbjtag/core/tests/launch/GDBJtagLaunchTest.java
index 9281bb5fc20..027eb33949f 100644
--- a/jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/src/org/eclipse/cdt/debug/gdbjtag/core/tests/launch/GDBJtagLaunchTest.java
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/src/org/eclipse/cdt/debug/gdbjtag/core/tests/launch/GDBJtagLaunchTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2016, 2019 Kichwa Coders and others.
+ * Copyright (c) 2016, 2021 Kichwa Coders Ltd and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -11,11 +11,14 @@
* Contributors:
* Jonah Graham (Kichwa Coders) - base API and implementation
* John Dallaway - GDB JTAG implementation (bug 538282)
+ * John Dallaway - Set preferred launch delegate (bug 570018)
*******************************************************************************/
package org.eclipse.cdt.debug.gdbjtag.core.tests.launch;
import static org.junit.Assert.assertFalse;
+import java.util.Set;
+
import org.eclipse.cdt.debug.core.ICDTLaunchConfigurationConstants;
import org.eclipse.cdt.debug.gdbjtag.core.IGDBJtagConstants;
import org.eclipse.cdt.dsf.gdb.IGDBLaunchConfigurationConstants;
@@ -24,15 +27,16 @@ import org.eclipse.cdt.dsf.gdb.launching.LaunchUtils;
import org.eclipse.cdt.dsf.gdb.service.GdbDebugServicesFactory;
import org.eclipse.cdt.tests.dsf.gdb.framework.BaseParametrizedTestCase;
import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
+import org.eclipse.debug.core.ILaunchManager;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
@RunWith(Parameterized.class)
-@SuppressWarnings("restriction")
public class GDBJtagLaunchTest extends BaseParametrizedTestCase {
private static final String TEST_LAUNCH_CONFIGURATION_TYPE_ID = "org.eclipse.cdt.debug.gdbjtag.launchConfigurationType"; //$NON-NLS-1$
+ private static final String TEST_LAUNCH_DELEGATE_ID = "org.eclipse.cdt.debug.gdbjtag.core.dsfLaunchDelegate"; //$NON-NLS-1$
private static final String TEST_JTAG_DEVICE_ID = "org.eclipse.cdt.debug.gdbjtag.core.jtagdevice.genericDevice"; //$NON-NLS-1$
private static final String TEST_PROGRAM_NAME = EXEC_PATH + "Minimal.exe"; //$NON-NLS-1$
private static final String X86_64_INIT = SOURCE_PATH + "x86_64.init"; //$NON-NLS-1$
@@ -63,7 +67,7 @@ public class GDBJtagLaunchTest extends BaseParametrizedTestCase {
setLaunchAttribute(IGDBJtagConstants.ATTR_USE_PROJ_BINARY_FOR_SYMBOLS, true);
if (0 > LaunchUtils.compareVersions(getGdbVersion(), GdbDebugServicesFactory.GDB_7_10_VERSION)) {
// Use a GDB initialization file to set x86_64 architecture for remote sessions with older GDB.
- // This much precede connection to the gdbserver so we cannot use IGDBJtagConstants.ATTR_INIT_COMMANDS.
+ // This must precede connection to the gdbserver so we cannot use IGDBJtagConstants.ATTR_INIT_COMMANDS.
setLaunchAttribute(IGDBLaunchConfigurationConstants.ATTR_GDB_INIT, X86_64_INIT);
}
} else {
@@ -75,8 +79,9 @@ public class GDBJtagLaunchTest extends BaseParametrizedTestCase {
@Override
protected GdbLaunch doLaunchInner() throws Exception {
+ final ILaunchConfigurationWorkingCopy wc = getLaunchConfiguration().getWorkingCopy();
+ wc.setPreferredLaunchDelegate(Set.of(ILaunchManager.DEBUG_MODE), TEST_LAUNCH_DELEGATE_ID);
if (remote) {
- final ILaunchConfigurationWorkingCopy wc = getLaunchConfiguration().getWorkingCopy();
// copy host from IGDBLaunchConfigurationConstants.ATTR_HOST to IGDBJtagConstants.ATTR_IP_ADDRESS
final Object host = getLaunchAttribute(IGDBLaunchConfigurationConstants.ATTR_HOST);
wc.setAttribute(IGDBJtagConstants.ATTR_IP_ADDRESS, host);
@@ -85,8 +90,8 @@ public class GDBJtagLaunchTest extends BaseParametrizedTestCase {
if (port instanceof String) {
wc.setAttribute(IGDBJtagConstants.ATTR_PORT_NUMBER, Integer.valueOf((String) port));
}
- wc.doSave();
}
+ wc.doSave();
return super.doLaunchInner();
}
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/src/org/eclipse/cdt/debug/gdbjtag/core/tests/launch/SuiteGDBJtag.java b/jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/src/org/eclipse/cdt/debug/gdbjtag/core/tests/launch/SuiteGDBJtag.java
deleted file mode 100644
index e331dd8e3b5..00000000000
--- a/jtag/org.eclipse.cdt.debug.gdbjtag.core.tests/src/org/eclipse/cdt/debug/gdbjtag/core/tests/launch/SuiteGDBJtag.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016, 2018 QNX Software System and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Elena Laskavaia (QNX Software System) - Base API and implementation
- * John Dallaway - GDB JTAG implementation (bug 538282)
- *******************************************************************************/
-package org.eclipse.cdt.debug.gdbjtag.core.tests.launch;
-
-import org.eclipse.cdt.tests.dsf.gdb.framework.BaseParametrizedTestCase;
-import org.junit.BeforeClass;
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-
-@SuppressWarnings("restriction")
-@RunWith(Suite.class)
-@Suite.SuiteClasses({ GDBJtagLaunchTest.class })
-
-public class SuiteGDBJtag {
-
- @BeforeClass
- public static void before() {
- BaseParametrizedTestCase.resetGlobalState();
- }
-
-}
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag.core/.classpath b/jtag/org.eclipse.cdt.debug.gdbjtag.core/.classpath
index eca7bdba8f0..e801ebfb468 100644
--- a/jtag/org.eclipse.cdt.debug.gdbjtag.core/.classpath
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag.core/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag.core/.settings/.api_filters b/jtag/org.eclipse.cdt.debug.gdbjtag.core/.settings/.api_filters
new file mode 100644
index 00000000000..746fa73a706
--- /dev/null
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag.core/.settings/.api_filters
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<component id="org.eclipse.cdt.debug.gdbjtag.core" version="2">
+ <resource path="src/org/eclipse/cdt/debug/gdbjtag/core/IGDBJtagConnection.java" type="org.eclipse.cdt.debug.gdbjtag.core.IGDBJtagConnection">
+ <filter id="404000815">
+ <message_arguments>
+ <message_argument value="org.eclipse.cdt.debug.gdbjtag.core.IGDBJtagConnection"/>
+ <message_argument value="doTarget(String, String, Collection&lt;String&gt;)"/>
+ </message_arguments>
+ </filter>
+ <filter id="404000815">
+ <message_arguments>
+ <message_argument value="org.eclipse.cdt.debug.gdbjtag.core.IGDBJtagConnection"/>
+ <message_argument value="getDeviceProtocols()"/>
+ </message_arguments>
+ </filter>
+ <filter id="404000815">
+ <message_arguments>
+ <message_argument value="org.eclipse.cdt.debug.gdbjtag.core.IGDBJtagConnection"/>
+ <message_argument value="setDeviceProtocols(String[])"/>
+ </message_arguments>
+ </filter>
+ </resource>
+</component>
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag.core/.settings/org.eclipse.core.resources.prefs b/jtag/org.eclipse.cdt.debug.gdbjtag.core/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag.core/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag.core/.settings/org.eclipse.jdt.core.prefs b/jtag/org.eclipse.cdt.debug.gdbjtag.core/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/jtag/org.eclipse.cdt.debug.gdbjtag.core/.settings/org.eclipse.jdt.core.prefs
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag.core/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag.core/.settings/org.eclipse.jdt.ui.prefs b/jtag/org.eclipse.cdt.debug.gdbjtag.core/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/jtag/org.eclipse.cdt.debug.gdbjtag.core/.settings/org.eclipse.jdt.ui.prefs
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag.core/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag.core/META-INF/MANIFEST.MF b/jtag/org.eclipse.cdt.debug.gdbjtag.core/META-INF/MANIFEST.MF
index f299161fafd..c2ddd0440ad 100644
--- a/jtag/org.eclipse.cdt.debug.gdbjtag.core/META-INF/MANIFEST.MF
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag.core/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.debug.gdbjtag.core;singleton:=true
-Bundle-Version: 9.4.0.qualifier
+Bundle-Version: 10.6.0.qualifier
Bundle-Activator: org.eclipse.cdt.debug.gdbjtag.core.Activator
Bundle-Localization: plugin
Require-Bundle: org.eclipse.core.runtime,
@@ -19,5 +19,5 @@ Export-Package: org.eclipse.cdt.debug.gdbjtag.core,
org.eclipse.cdt.debug.gdbjtag.core.dsf.gdb.service.extensions,
org.eclipse.cdt.debug.gdbjtag.core.jtagdevice
Bundle-Vendor: %providerName
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Automatic-Module-Name: org.eclipse.cdt.debug.gdbjtag.core
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag.core/about.html b/jtag/org.eclipse.cdt.debug.gdbjtag.core/about.html
index 164f781a8fd..b3134865230 100644
--- a/jtag/org.eclipse.cdt.debug.gdbjtag.core/about.html
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag.core/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag.core/build.properties b/jtag/org.eclipse.cdt.debug.gdbjtag.core/build.properties
index e89ca6284d7..b8dfc2839c6 100644
--- a/jtag/org.eclipse.cdt.debug.gdbjtag.core/build.properties
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag.core/build.properties
@@ -18,4 +18,5 @@ bin.includes = META-INF/,\
plugin.xml,\
plugin.properties,\
about.html
-src.includes = about.html
+src.includes = about.html,\
+ schema/
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag.core/plugin.properties b/jtag/org.eclipse.cdt.debug.gdbjtag.core/plugin.properties
index c25660b81da..b6b72e96cea 100644
--- a/jtag/org.eclipse.cdt.debug.gdbjtag.core/plugin.properties
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag.core/plugin.properties
@@ -1,5 +1,5 @@
###############################################################################
-# Copyright (c) 2007, 2019 QNX Software Systems and others
+# Copyright (c) 2007, 2022 QNX Software Systems and others
#
# This program and the accompanying materials
# are made available under the terms of the Eclipse Public License 2.0
@@ -14,6 +14,9 @@
# John Dallaway - migrate device extensions to core plugin, bug 538282
# John Dallaway - SEGGER J-Link extension, bug 548281
# John Dallaway - PEmicro extension, bug 552597
+# John Dallaway - ST-LINK extension, bug 558266
+# John Dallaway - PyOCD extension, bug 574928
+# John Dallaway - Black Magic Probe extension, bug 535143
###############################################################################
launchConfig.name=GDB Hardware Debugging
pluginName=Eclipse GDB Hardware Debug Core Plug-in
@@ -22,15 +25,18 @@ providerName=Eclipse CDT
JTagDevice.name=JTAG Device
AbatronBDI2000.name=Abatron BDI2000
+BlackMagicProbe.name=Black Magic Probe
MacraigorUsb2Demon.name=Macraigor USB2Demon
GenericSerial.name=Generic Serial
OpenOCDPipe.name=OpenOCD (via pipe)
OpenOCDSocket.name=OpenOCD (via socket)
PEMicro.name=PEmicro
+PyOCD.name=PyOCD
SeggerJLink.name=SEGGER J-Link
+STLink.name=ST-LINK
Generic.name=Generic TCP/IP
launchDelegate.jtag.name=Legacy GDB Hardware Debugging
-launchDelegate.jtag.description=Jtag hardware debugging using the legacy debugger Framework (CDI).
+launchDelegate.jtag.description=GDB hardware debugging using the legacy debugger Framework (CDI).
launchDelegate.jtagDsf.name=GDB (DSF) Hardware Debugging
-launchDelegate.jtagDsf.description=Jtag hardware debugging using the Debugger Services Framework (DSF).
+launchDelegate.jtagDsf.description=GDB hardware debugging using the Debugger Services Framework (DSF).
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag.core/plugin.xml b/jtag/org.eclipse.cdt.debug.gdbjtag.core/plugin.xml
index 3c2e244bf7a..564fc377770 100644
--- a/jtag/org.eclipse.cdt.debug.gdbjtag.core/plugin.xml
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag.core/plugin.xml
@@ -27,45 +27,80 @@
point="org.eclipse.cdt.debug.gdbjtag.core.JTagDevice">
<device
class="org.eclipse.cdt.debug.gdbjtag.core.jtagdevice.GenericDevice"
+ default_connection="localhost:1234"
id="org.eclipse.cdt.debug.gdbjtag.core.jtagdevice.genericDevice"
- name="%Generic.name">
+ name="%Generic.name"
+ protocols="remote,extended-remote">
</device>
<device
class="org.eclipse.cdt.debug.gdbjtag.core.jtagdevice.AbatronBDI2000"
+ default_connection="bdi2000:2001"
id="org.eclipse.cdt.debug.gdbjtag.core.jtagdevice.AbatronBDI2000"
- name="%AbatronBDI2000.name">
+ name="%AbatronBDI2000.name"
+ protocols="remote">
</device>
<device
class="org.eclipse.cdt.debug.gdbjtag.core.jtagdevice.MacraigorUsb2Demon"
+ default_connection="localhost:8888"
id="org.eclipse.cdt.debug.gdbjtag.core.jtagdevice.MacraigorUsb2Demon"
- name="%MacraigorUsb2Demon.name">
+ name="%MacraigorUsb2Demon.name"
+ protocols="remote">
</device>
<device
class="org.eclipse.cdt.debug.gdbjtag.core.jtagdevice.DefaultGDBJtagConnectionImpl"
- default_connection="/dev/com1"
+ default_connection="COM1"
id="org.eclipse.cdt.debug.gdbjtag.core.jtagdevice.GenericSerial"
- name="%GenericSerial.name">
+ name="%GenericSerial.name"
+ protocols="remote,extended-remote">
</device>
<device
class="org.eclipse.cdt.debug.gdbjtag.core.jtagdevice.OpenOCDPipe"
default_connection="| openocd --pipe"
id="org.eclipse.cdt.debug.gdbjtag.core.jtagdevice.OpenOCD"
- name="%OpenOCDPipe.name">
+ name="%OpenOCDPipe.name"
+ protocols="remote">
</device>
<device
class="org.eclipse.cdt.debug.gdbjtag.core.jtagdevice.OpenOCDSocket"
+ default_connection="localhost:3333"
id="org.eclipse.cdt.debug.gdbjtag.core.jtagdevice.OpenOCDSocket"
- name="%OpenOCDSocket.name">
+ name="%OpenOCDSocket.name"
+ protocols="remote">
</device>
<device
class="org.eclipse.cdt.debug.gdbjtag.core.jtagdevice.PEMicro"
+ default_connection="localhost:7224"
id="org.eclipse.cdt.debug.gdbjtag.core.jtagdevice.PEMicro"
- name="%PEMicro.name">
+ name="%PEMicro.name"
+ protocols="remote">
+ </device>
+ <device
+ class="org.eclipse.cdt.debug.gdbjtag.core.jtagdevice.PyOCD"
+ default_connection="localhost:3333"
+ id="org.eclipse.cdt.debug.gdbjtag.core.jtagdevice.PyOCD"
+ name="%PyOCD.name"
+ protocols="remote">
</device>
<device
class="org.eclipse.cdt.debug.gdbjtag.core.jtagdevice.SeggerJLink"
+ default_connection="localhost:2331"
id="org.eclipse.cdt.debug.gdbjtag.core.jtagdevice.SeggerJLink"
- name="%SeggerJLink.name">
+ name="%SeggerJLink.name"
+ protocols="remote">
+ </device>
+ <device
+ class="org.eclipse.cdt.debug.gdbjtag.core.jtagdevice.STLink"
+ default_connection="localhost:61234"
+ id="org.eclipse.cdt.debug.gdbjtag.core.jtagdevice.STLink"
+ name="%STLink.name"
+ protocols="remote">
+ </device>
+ <device
+ class="org.eclipse.cdt.debug.gdbjtag.core.jtagdevice.GenericDevice"
+ default_connection="COM1"
+ id="org.eclipse.cdt.debug.gdbjtag.core.jtagdevice.BlackMagicProbe"
+ name="%BlackMagicProbe.name"
+ protocols="extended-remote">
</device>
</extension>
</plugin>
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag.core/schema/JTagDevice.exsd b/jtag/org.eclipse.cdt.debug.gdbjtag.core/schema/JTagDevice.exsd
index de56b802698..5f3972450d5 100644
--- a/jtag/org.eclipse.cdt.debug.gdbjtag.core/schema/JTagDevice.exsd
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag.core/schema/JTagDevice.exsd
@@ -80,6 +80,13 @@
</documentation>
</annotation>
</attribute>
+ <attribute name="protocols" type="string">
+ <annotation>
+ <documentation>
+ The comma-separated set of GDB target types (protocols) supported by the JTAG device. If omitted, the &quot;remote&quot; protocol is assumed.
+ </documentation>
+ </annotation>
+ </attribute>
</complexType>
</element>
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/Activator.java b/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/Activator.java
index 646a4531ca9..d799d78c49f 100644
--- a/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/Activator.java
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/Activator.java
@@ -26,7 +26,7 @@ import org.osgi.framework.BundleContext;
public class Activator extends Plugin {
// The plug-in ID
- public static final String PLUGIN_ID = "org.eclipse.cdt.debug.gdbjtag.core";
+ public static final String PLUGIN_ID = "org.eclipse.cdt.debug.gdbjtag.core"; //$NON-NLS-1$
// The shared instance
private static Activator plugin;
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/GDBJtagDSFFinalLaunchSequence.java b/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/GDBJtagDSFFinalLaunchSequence.java
index 89c623f0640..39a697b3b1c 100644
--- a/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/GDBJtagDSFFinalLaunchSequence.java
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/GDBJtagDSFFinalLaunchSequence.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2019 QNX Software Systems and others.
+ * Copyright (c) 2007, 2022 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -23,6 +23,10 @@
* Torbjörn Svensson (STMicroelectronics) - Bug 535024
* John Dallaway - Report download progress (Bug 543149)
* John Dallaway - Use 'reset and halt' command (Bug 535163)
+ * John Dallaway - Eliminate deprecated API (Bug 566462)
+ * John Dallaway - Set executable file (Bug 457697)
+ * John Dallaway - Initialize memory data before connecting to target (Bug 575934)
+ * John Dallaway - Support multiple remote debug protocols (Bug 535143)
*******************************************************************************/
package org.eclipse.cdt.debug.gdbjtag.core;
@@ -98,6 +102,8 @@ import org.eclipse.core.variables.VariablesPlugin;
*/
public class GDBJtagDSFFinalLaunchSequence extends FinalLaunchSequence {
+ private static final String ATTR_JTAG_DEVICE = Activator.PLUGIN_ID + ".jtagDevice"; //$NON-NLS-1$
+
private abstract class DownloadStatusListener implements IEventListener {
private static final String ASYNC_CLASS_DOWNLOAD = "download"; //$NON-NLS-1$
@@ -195,7 +201,7 @@ public class GDBJtagDSFFinalLaunchSequence extends FinalLaunchSequence {
}
/** @since 8.2 */
- protected static final String GROUP_JTAG = "GROUP_JTAG";
+ protected static final String GROUP_JTAG = "GROUP_JTAG"; //$NON-NLS-1$
@Override
protected String[] getExecutionOrder(String group) {
@@ -209,15 +215,20 @@ public class GDBJtagDSFFinalLaunchSequence extends FinalLaunchSequence {
}));
// Now insert our steps before the data model initialized event is sent
- orderList.add(orderList.indexOf("stepDataModelInitializationComplete"), GROUP_JTAG);
+ orderList.add(orderList.indexOf("stepDataModelInitializationComplete"), GROUP_JTAG); //$NON-NLS-1$
return orderList.toArray(new String[orderList.size()]);
}
// Finally, deal with our groups and their steps.
if (GROUP_JTAG.equals(group)) {
- return new String[] { "stepInitializeJTAGFinalLaunchSequence", "stepRetrieveJTAGDevice", //$NON-NLS-2$
+ return new String[] { //
+ "stepInitializeJTAGFinalLaunchSequence", //$NON-NLS-1$
+ "stepRetrieveJTAGDevice", //$NON-NLS-1$
+ "stepSetExecutableFile", //$NON-NLS-1$
"stepLoadSymbols", //$NON-NLS-1$
+ "stepInitializeMemory", //$NON-NLS-1$
+
"stepConnectToTarget", //$NON-NLS-1$
"stepResetBoard", //$NON-NLS-1$
"stepDelayStartup", //$NON-NLS-1$
@@ -227,7 +238,6 @@ public class GDBJtagDSFFinalLaunchSequence extends FinalLaunchSequence {
"stepUpdateContainer", //$NON-NLS-1$
- "stepInitializeMemory", //$NON-NLS-1$
"stepSetArguments", //$NON-NLS-1$
"stepSetEnvironmentVariables", //$NON-NLS-1$
"stepStartTrackingBreakpoints", //$NON-NLS-1$
@@ -311,6 +321,23 @@ public class GDBJtagDSFFinalLaunchSequence extends FinalLaunchSequence {
}
/*
+ * Set the executable file
+ */
+ /** @since 10.3 */
+ @Execute
+ public void stepSetExecutableFile(final RequestMonitor rm) {
+ final IPath programPath = fGDBBackend.getProgramPath();
+ if (!programPath.isEmpty()) {
+ final String file = programPath.toOSString();
+ fCommandControl.queueCommand(
+ fCommandControl.getCommandFactory().createMIFileExecFile(fCommandControl.getContext(), file),
+ new ImmediateDataRequestMonitor<MIInfo>(rm));
+ } else {
+ rm.done();
+ }
+ }
+
+ /*
* Execute symbol loading
*/
/** @since 8.2 */
@@ -354,7 +381,7 @@ public class GDBJtagDSFFinalLaunchSequence extends FinalLaunchSequence {
String symbolsOffset = CDebugUtils.getAttribute(getAttributes(), IGDBJtagConstants.ATTR_SYMBOLS_OFFSET,
IGDBJtagConstants.DEFAULT_SYMBOLS_OFFSET);
if (symbolsOffset.length() > 0) {
- symbolsOffset = "0x" + symbolsOffset;
+ symbolsOffset = "0x" + symbolsOffset; //$NON-NLS-1$
}
List<String> commands = new ArrayList<>();
fGdbJtagDevice.doLoadSymbol(symbolsFileName, symbolsOffset, commands);
@@ -373,7 +400,6 @@ public class GDBJtagDSFFinalLaunchSequence extends FinalLaunchSequence {
* Hook up to remote target
*/
/** @since 8.2 */
- @SuppressWarnings("deprecation")
@Execute
public void stepConnectToTarget(final RequestMonitor rm) {
try {
@@ -381,19 +407,29 @@ public class GDBJtagDSFFinalLaunchSequence extends FinalLaunchSequence {
IGDBJtagConstants.DEFAULT_USE_REMOTE_TARGET)) {
List<String> commands = new ArrayList<>();
if (fGdbJtagDevice instanceof IGDBJtagConnection) {
- URI uri = new URI(CDebugUtils.getAttribute(getAttributes(), IGDBJtagConstants.ATTR_CONNECTION,
- IGDBJtagConstants.DEFAULT_CONNECTION));
+ String connection = IGDBJtagConstants.DEFAULT_CONNECTION;
+ String connectionUri = CDebugUtils.getAttribute(getAttributes(), IGDBJtagConstants.ATTR_CONNECTION,
+ IGDBJtagConstants.DEFAULT_CONNECTION);
+ if (!IGDBJtagConstants.DEFAULT_CONNECTION.equals(connectionUri)) {
+ connection = new URI(connectionUri).getSchemeSpecificPart();
+ } else {
+ // Handle legacy launch configurations
+ String ipAddress = CDebugUtils.getAttribute(getAttributes(), IGDBJtagConstants.ATTR_IP_ADDRESS,
+ IGDBJtagConstants.DEFAULT_IP_ADDRESS);
+ int portNumber = CDebugUtils.getAttribute(getAttributes(), IGDBJtagConstants.ATTR_PORT_NUMBER,
+ IGDBJtagConstants.DEFAULT_PORT_NUMBER);
+ if (!IGDBJtagConstants.DEFAULT_IP_ADDRESS.equals(ipAddress)) {
+ connection = String.format("%s:%d", ipAddress, portNumber); //$NON-NLS-1$
+ }
+ }
+ String protocol = CDebugUtils.getAttribute(getAttributes(), IGDBJtagConstants.ATTR_PROTOCOL,
+ IGDBJtagConstants.DEFAULT_PROTOCOL);
IGDBJtagConnection device = (IGDBJtagConnection) fGdbJtagDevice;
- device.doRemote(uri.getSchemeSpecificPart(), commands);
+ device.doTarget(protocol, connection, commands);
+ queueCommands(commands, rm);
} else {
- // Handle legacy network device contributions that don't understand URIs
- String ipAddress = CDebugUtils.getAttribute(getAttributes(), IGDBJtagConstants.ATTR_IP_ADDRESS,
- IGDBJtagConstants.DEFAULT_IP_ADDRESS);
- int portNumber = CDebugUtils.getAttribute(getAttributes(), IGDBJtagConstants.ATTR_PORT_NUMBER,
- IGDBJtagConstants.DEFAULT_PORT_NUMBER);
- fGdbJtagDevice.doRemote(ipAddress, portNumber, commands);
+ rm.done();
}
- queueCommands(commands, rm);
} else {
rm.done();
}
@@ -553,8 +589,8 @@ public class GDBJtagDSFFinalLaunchSequence extends FinalLaunchSequence {
String imageOffset = CDebugUtils.getAttribute(getAttributes(), IGDBJtagConstants.ATTR_IMAGE_OFFSET,
IGDBJtagConstants.DEFAULT_IMAGE_OFFSET);
if (imageOffset.length() > 0) {
- imageOffset = (imageFileName.endsWith(".elf")) ? "" //$NON-NLS-2$
- : "0x" + CDebugUtils.getAttribute(getAttributes(), IGDBJtagConstants.ATTR_IMAGE_OFFSET,
+ imageOffset = (imageFileName.endsWith(".elf")) ? "" //$NON-NLS-1$//$NON-NLS-2$
+ : "0x" + CDebugUtils.getAttribute(getAttributes(), IGDBJtagConstants.ATTR_IMAGE_OFFSET, //$NON-NLS-1$
IGDBJtagConstants.DEFAULT_IMAGE_OFFSET);
}
List<String> commands = new ArrayList<>();
@@ -703,7 +739,8 @@ public class GDBJtagDSFFinalLaunchSequence extends FinalLaunchSequence {
fGdbJtagDevice.doContinue(commands);
queueCommands(commands, rm);
} else {
- rm.done();
+ // Force UI to refresh collected data from target as it might have changed with complex GDB commands like 'load'.
+ fCommandControl.flushAllCachesAndRefresh(rm);
}
}
@@ -752,19 +789,18 @@ public class GDBJtagDSFFinalLaunchSequence extends FinalLaunchSequence {
return IGDBJtagConstants.DEFAULT_JTAG_DEVICE_NAME;
}
- @SuppressWarnings("deprecation")
private GDBJtagDeviceContribution getGDBJtagDeviceContribution() {
Map<String, Object> attributes = getAttributes();
if (attributes.containsKey(IGDBJtagConstants.ATTR_JTAG_DEVICE_ID)) {
- String deviceId = CDebugUtils.getAttribute(attributes, IGDBJtagConstants.ATTR_JTAG_DEVICE_ID, "");
+ String deviceId = CDebugUtils.getAttribute(attributes, IGDBJtagConstants.ATTR_JTAG_DEVICE_ID, ""); //$NON-NLS-1$
if (!deviceId.isEmpty()) {
return GDBJtagDeviceContributionFactory.getInstance().findByDeviceId(deviceId);
}
}
// Fall back to old behavior with name only if ID is missing
- if (attributes.containsKey(IGDBJtagConstants.ATTR_JTAG_DEVICE)) {
- String deviceName = CDebugUtils.getAttribute(attributes, IGDBJtagConstants.ATTR_JTAG_DEVICE, "");
+ if (attributes.containsKey(ATTR_JTAG_DEVICE)) {
+ String deviceName = CDebugUtils.getAttribute(attributes, ATTR_JTAG_DEVICE, ""); //$NON-NLS-1$
if (!deviceName.isEmpty()) {
return GDBJtagDeviceContributionFactory.getInstance().findByDeviceName(deviceName);
}
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/GDBJtagDSFFinalLaunchSequence_7_12.java b/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/GDBJtagDSFFinalLaunchSequence_7_12.java
index 07906b652f4..9ba9aab526c 100644
--- a/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/GDBJtagDSFFinalLaunchSequence_7_12.java
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/GDBJtagDSFFinalLaunchSequence_7_12.java
@@ -64,17 +64,15 @@ public class GDBJtagDSFFinalLaunchSequence_7_12 extends GDBJtagDSFFinalLaunchSeq
if (commandControl != null && gdbBackEnd != null) {
// Use target async when interfacing with the full GDB console (i.e. minimum GDB version 7.12)
// otherwise explicitly set it to off.
- commandControl
- .queueCommand(
- commandControl.getCommandFactory().createMIGDBSetTargetAsync(commandControl.getContext(),
- gdbBackEnd.isFullGdbConsoleSupported()),
- new DataRequestMonitor<MIInfo>(getExecutor(), rm) {
- @Override
- protected void handleError() {
- // Accept errors for older GDBs
- rm.done();
- }
- });
+ commandControl.queueCommand(commandControl.getCommandFactory()
+ .createMIGDBSetTargetAsync(commandControl.getContext(), gdbBackEnd.useTargetAsync()),
+ new DataRequestMonitor<MIInfo>(getExecutor(), rm) {
+ @Override
+ protected void handleError() {
+ // Accept errors for older GDBs
+ rm.done();
+ }
+ });
} else {
// Should not happen
rm.done();
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/IGDBJtagConnection.java b/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/IGDBJtagConnection.java
index 7f3a3c3f2d2..b60aa687e9a 100644
--- a/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/IGDBJtagConnection.java
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/IGDBJtagConnection.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008-2010 QNX Software Systems and others.
+ * Copyright (c) 2008, 2022 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -14,6 +14,7 @@
* Sage Electronic Engineering, LLC - bug 305943
* - API generalization to become transport-independent (e.g. to
* allow connections via serial ports and pipes).
+ * John Dallaway - Support multiple remote debug protocols - bug 535143
*******************************************************************************/
package org.eclipse.cdt.debug.gdbjtag.core;
@@ -22,30 +23,76 @@ import java.util.Collection;
/**
* Provides device specific debug commands for different hardware
- * JTAG devices. See <code>DefaultGDBJtagDeviceImpl</code> for
- * the default implementations.
+ * JTAG devices. See <code>DefaultGDBJtagConnectionImpl</code> for
+ * the default implementation.
* @since 7.0
*/
public interface IGDBJtagConnection {
/**
+ * Used during instantiation to set the supported protocol strings from XML
+ * @param protocols
+ * the array of supported protocols (default protocol first)
+ * @since 10.6
+ */
+ default void setDeviceProtocols(String[] protocols) {
+ // not implemented
+ }
+
+ /**
* Used during instantiation to set the device default connection string from XML
- * @param connection A device specific default connection string that GDB understands
+ * @param connection
+ * the GDB string describing the default connection to the target
*/
public void setDefaultDeviceConnection(String connection);
/**
* Commands to connect to remote JTAG device
- * @param connection defines the gdb string required to establish a connection to the target
- * @param commands gdb commands to execute on the remote device (usually the target probe)
+ * @param connection
+ * the GDB string describing the connection to the target
+ * @param commands
+ * implementation should populate the collection with the gdb
+ * commands that will connect to the JTAG device using the remote
+ * protocol, or leave the collection as-is if that operation is
+ * either unsupported or not applicable
+ * @deprecated call or override {@link #doTarget(String, String, Collection)} instead
*/
+ @Deprecated(since = "10.6")
public void doRemote(String connection, Collection<String> commands);
/**
+ * Supported protocols used by GDB to connect to a device
+ * @return the array of supported protocols (default protocol first)
+ * @since 10.6
+ */
+ default String[] getDeviceProtocols() {
+ return new String[] { "remote" }; //$NON-NLS-1$
+ }
+
+ /**
* Host specific default device name used by GDB to connect to a device
* @return identifier for the remote device. It is up to GDB to figure out how to interpret
* the connection string (e.g /dev/COM1, 127.0.0.1:8888, etc.)
*/
public String getDefaultDeviceConnection();
+ /**
+ * Commands to connect to remote JTAG device
+ * @param protocol
+ * the GDB string describing the communication protocol between host and target
+ * @param connection
+ * the GDB string required to establish a connection to the target
+ * @param commands
+ * implementation should populate the collection with the gdb
+ * commands that will connect to the JTAG device, or leave
+ * the collection as-is if that operation is either unsupported
+ * or not applicable
+ * @since 10.6
+ */
+ default void doTarget(String protocol, String connection, Collection<String> commands) {
+ if ("remote".equals(protocol)) { //$NON-NLS-1$
+ doRemote(connection, commands);
+ } // else protocol not supported
+ }
+
}
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/IGDBJtagConstants.java b/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/IGDBJtagConstants.java
index 1e9f5ed1c35..9c602419205 100644
--- a/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/IGDBJtagConstants.java
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/IGDBJtagConstants.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007 - 2018 QNX Software Systems and others.
+ * Copyright (c) 2007, 2022 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -13,6 +13,9 @@
* Andy Jin - Hardware debugging UI improvements, bug 229946
* John Dallaway - Disable reset and halt by default, bug 529171
* Torbjörn Svensson (STMicroelectronics) - Bug 535024
+ * John Dallaway - Sort JTAG device list, bug 560186
+ * John Dallaway - Eliminate deprecated API, bug 566462
+ * John Dallaway - Support multiple remote debug protocols, bug 535143
*******************************************************************************/
package org.eclipse.cdt.debug.gdbjtag.core;
@@ -28,9 +31,6 @@ public interface IGDBJtagConstants {
public static final String ATTR_USE_REMOTE_TARGET = Activator.PLUGIN_ID + ".useRemoteTarget"; //$NON-NLS-1$
public static final String ATTR_IP_ADDRESS = Activator.PLUGIN_ID + ".ipAddress"; //$NON-NLS-1$
public static final String ATTR_PORT_NUMBER = Activator.PLUGIN_ID + ".portNumber"; //$NON-NLS-1$
- /** @deprecated Use {@link #ATTR_JTAG_DEVICE ID} instead */
- @Deprecated
- public static final String ATTR_JTAG_DEVICE = Activator.PLUGIN_ID + ".jtagDevice"; //$NON-NLS-1$
/** @since 9.2 */
public static final String ATTR_JTAG_DEVICE_ID = Activator.PLUGIN_ID + ".jtagDeviceId"; //$NON-NLS-1$
@@ -53,6 +53,8 @@ public interface IGDBJtagConstants {
public static final String ATTR_STOP_AT = Activator.PLUGIN_ID + ".stopAt"; //$NON-NLS-1$
public static final String ATTR_SET_RESUME = Activator.PLUGIN_ID + ".setResume"; //$NON-NLS-1$
public static final String ATTR_RUN_COMMANDS = Activator.PLUGIN_ID + ".runCommands"; //$NON-NLS-1$
+ /** @since 10.6 */
+ public static final String ATTR_PROTOCOL = Activator.PLUGIN_ID + ".protocol"; //$NON-NLS-1$
/** @since 7.0 */
public static final String ATTR_CONNECTION = Activator.PLUGIN_ID + ".connection"; //$NON-NLS-1$
/** @since 7.0 */
@@ -66,7 +68,7 @@ public interface IGDBJtagConstants {
public static final boolean DEFAULT_DO_RESET = false;
public static final boolean DEFAULT_DO_HALT = false;
- public static final int DEFAULT_DELAY = 3;
+ public static final int DEFAULT_DELAY = 0;
public static final boolean DEFAULT_LOAD_IMAGE = true;
public static final boolean DEFAULT_LOAD_SYMBOLS = true;
public static final boolean DEFAULT_SET_PC_REGISTER = false;
@@ -74,6 +76,8 @@ public interface IGDBJtagConstants {
public static final boolean DEFAULT_SET_RESUME = false;
public static final boolean DEFAULT_USE_DEFAULT_RUN = true;
+ /** @since 10.6 */
+ public static final String DEFAULT_PROTOCOL = "remote"; //$NON-NLS-1$
/** @since 7.0 */
public static final String DEFAULT_CONNECTION = "unspecified-ip-address:unspecified-port-number"; //$NON-NLS-1$
/** @since 7.0 */
@@ -101,14 +105,6 @@ public interface IGDBJtagConstants {
/** @since 7.0 */
public static final String DEFAULT_STOP_AT = ""; //$NON-NLS-1$
/** @since 9.2 */
- public static final String DEFAULT_JTAG_DEVICE_ID = ""; //$NON-NLS-1$
- /** @since 9.2 */
public static final String DEFAULT_JTAG_DEVICE_NAME = ""; //$NON-NLS-1$
- /**
- * @since 7.0
- * @deprecated Use either {@link #DEFAULT_JTAG_DEVICE_ID} or {@link #DEFAULT_JTAG_DEVICE_NAME}
- */
- @Deprecated
- public static final String DEFAULT_JTAG_DEVICE = ""; //$NON-NLS-1$
}
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/Message.properties b/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/Message.properties
index e16f8a9999b..b19a86c50bf 100644
--- a/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/Message.properties
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/Message.properties
@@ -1,5 +1,5 @@
###############################################################################
-# Copyright (c) 2008 - 2019 QNX Software Systems and others.
+# Copyright (c) 2008, 2022 QNX Software Systems and others.
#
# This program and the accompanying materials
# are made available under the terms of the Eclipse Public License 2.0
@@ -12,6 +12,7 @@
# QNX Software Systems - initial API and implementation
# John Dallaway - Test for reset/delay/halt command not defined (Bug 361881)
# John Dallaway - Report download progress (Bug 543149)
+# John Dallaway - Unify remote target nomenclature (Bug 535143)
###############################################################################
GDBJtagDebugger.0=Starting debug session
GDBJtagDebugger.1=Error getting debug target
@@ -26,7 +27,7 @@ src.common.No_answer=No answer
GDBJtagDebugger.err_no_sym_file=Symbolics loading was requested but file was not specified or not found.
GDBJtagDebugger.err_no_img_file=Image loading was requested but file was not specified or not found.
-GDBJtagDebugger.delay_not_defined=Delay command not defined for device '%s'
-GDBJtagDebugger.halt_not_defined=Halt command not defined for device '%s'
-GDBJtagDebugger.reset_not_defined=Reset command not defined for device '%s'
+GDBJtagDebugger.delay_not_defined=Delay command not defined for debug server '%s'
+GDBJtagDebugger.halt_not_defined=Halt command not defined for debug server '%s'
+GDBJtagDebugger.reset_not_defined=Reset command not defined for debug server '%s'
GDBJtagDebugger.downloading=Downloading %s
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/AbatronBDI2000.java b/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/AbatronBDI2000.java
index 9e9685fbd56..404a46601b9 100644
--- a/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/AbatronBDI2000.java
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/AbatronBDI2000.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2019 QNX Software Systems and others.
+ * Copyright (c) 2008, 2021 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -12,21 +12,18 @@
* QNX Software Systems - Initial API and implementation
* Andy Jin - Hardware debugging UI improvements, bug 229946
* John Dallaway - Provide 'reset and halt' command, bug 550963
+ * John Dallaway - Eliminate deprecated API, bug 566462
+ * John Dallaway - Override default delay implementation, bug 576811
*******************************************************************************/
package org.eclipse.cdt.debug.gdbjtag.core.jtagdevice;
import java.util.Collection;
-public class AbatronBDI2000 extends DefaultGDBJtagDeviceImpl {
+public class AbatronBDI2000 extends DefaultGDBJtagConnectionImpl {
@Override
- public String getDefaultIpAddress() {
- return "bdi2000"; //$NON-NLS-1$
- }
-
- @Override
- public String getDefaultPortNumber() {
- return "2001"; //$NON-NLS-1$
+ public void doDelay(int delay, Collection<String> commands) {
+ addCmd(commands, "monitor delay " + String.valueOf(delay * 1000)); //$NON-NLS-1$
}
@Override
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/DefaultGDBJtagConnectionImpl.java b/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/DefaultGDBJtagConnectionImpl.java
index 34287001699..3fb438cdddd 100644
--- a/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/DefaultGDBJtagConnectionImpl.java
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/DefaultGDBJtagConnectionImpl.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010, 2012 Sage Electronic Engineering and others.
+ * Copyright (c) 2010, 2022 Sage Electronic Engineering and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -12,6 +12,8 @@
* Bruce Griffith,Sage Electronic Engineering, LLC - bug 305943
* - API generalization to become transport-independent (e.g. to
* allow connections via serial ports and pipes).
+ * John Dallaway - Eliminate deprecated API - bug 566462
+ * John Dallaway - Support multiple remote debug protocols - bug 535143
*******************************************************************************/
package org.eclipse.cdt.debug.gdbjtag.core.jtagdevice;
@@ -25,20 +27,24 @@ import org.eclipse.cdt.debug.gdbjtag.core.IGDBJtagConnection;
*/
public class DefaultGDBJtagConnectionImpl extends DefaultGDBJtagDeviceImpl implements IGDBJtagConnection {
+ private static final String PROTOCOL_REMOTE = "remote"; //$NON-NLS-1$
+
+ private String[] protocols = new String[0];
protected String connection = null;
- /* (non-Javadoc)
- * @see org.eclipse.cdt.debug.gdbjtag.core.jtagdevice.IGDBJtagDevice#doDelay(int, java.util.Collection)
- */
+ @Override
+ public final void setDeviceProtocols(String[] protocols) {
+ this.protocols = protocols;
+ }
+
@Override
public final void setDefaultDeviceConnection(String connection) {
this.connection = connection;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.debug.gdbjtag.core.jtagdevice.IGDBJtagDevice#doRemote(java.lang.String, java.util.Collection)
- */
+ /** @deprecated call or override {@link #doTarget(String, String, Collection)} instead */
@Override
+ @Deprecated(since = "10.6")
public void doRemote(String connection, Collection<String> commands) {
String cmd = ""; //$NON-NLS-1$
if (connection != null) {
@@ -52,22 +58,24 @@ public class DefaultGDBJtagConnectionImpl extends DefaultGDBJtagDeviceImpl imple
}
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.debug.gdbjtag.core.jtagdevice.IGDBJtagDevice#getDefaultDeviceConnection()
- */
@Override
- public String getDefaultDeviceConnection() {
- return connection;
+ public void doTarget(String protocol, String connection, Collection<String> commands) {
+ if (PROTOCOL_REMOTE.equals(protocol)) {
+ doRemote(connection, commands); // use legacy method which may have been overridden
+ } else if ((connection != null) && (protocol != null)) {
+ String cmd = String.format("-target-select %s %s", protocol, connection); //$NON-NLS-1$
+ addCmd(commands, cmd);
+ }
}
@Override
- public String getDefaultIpAddress() {
- throw new UnsupportedOperationException();
+ public String[] getDeviceProtocols() {
+ return protocols;
}
@Override
- public String getDefaultPortNumber() {
- throw new UnsupportedOperationException();
+ public String getDefaultDeviceConnection() {
+ return connection;
}
}
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/DefaultGDBJtagDeviceImpl.java b/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/DefaultGDBJtagDeviceImpl.java
index fc5b02278ed..73b70de8d55 100644
--- a/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/DefaultGDBJtagDeviceImpl.java
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/DefaultGDBJtagDeviceImpl.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2017 QNX Software Systems and others.
+ * Copyright (c) 2008, 2021 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -12,6 +12,8 @@
* QNX Software Systems - Initial API and implementation
* Andy Jin - Hardware debugging UI improvements, bug 229946
* John Dallaway - Use GDB/MI for temporary breakpoint, bug 525726
+ * John Dallaway - Eliminate deprecated API, bug 566462
+ * John Dallaway - Generalize default delay implementation, bug 576811
*******************************************************************************/
package org.eclipse.cdt.debug.gdbjtag.core.jtagdevice;
@@ -29,58 +31,32 @@ public class DefaultGDBJtagDeviceImpl implements IGDBJtagDevice {
*/
protected static final String LINESEP = System.getProperty("line.separator"); //$NON-NLS-1$
- /* (non-Javadoc)
- * @see org.eclipse.cdt.debug.gdbjtag.core.jtagdevice.IGDBJtagDevice#doDelay(int, java.util.Collection)
- */
@Override
public void doDelay(int delay, Collection<String> commands) {
- String cmd = "monitor delay " + String.valueOf(delay * 1000); //$NON-NLS-1$
+ // sleep is available on most hosts (including Cygwin and MSYS2) as
+ // part of the coreutils package but extenders should override this
+ // method to use an equivalent GDB "monitor" command if available
+ String cmd = "shell sleep " + String.valueOf(delay); //$NON-NLS-1$
addCmd(commands, cmd);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.debug.gdbjtag.core.jtagdevice.IGDBJtagDevice#doReset(java.util.Collection)
- */
@Override
public void doReset(Collection<String> commands) {
String cmd = "monitor reset run"; //$NON-NLS-1$
addCmd(commands, cmd);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.debug.gdbjtag.core.jtagdevice.IGDBJtagDevice#getDefaultDelay()
- */
@Override
public int getDefaultDelay() {
return 0;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.debug.gdbjtag.core.jtagdevice.IGDBJtagDevice#doRemote(java.lang.String, int, java.util.Collection)
- */
- @Override
- public void doRemote(String ip, int port, Collection<String> commands) {
- // The CLI version (target remote) does not let us know
- // that we have properly connected. For older GDBs (<= 6.8)
- // we need this information for a DSF session.
- // The MI version does tell us, which is why we must use it
- // Bug 348043
- String cmd = "-target-select remote " + ip + ":" + String.valueOf(port); //$NON-NLS-1$ //$NON-NLS-2$
- addCmd(commands, cmd);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.debug.gdbjtag.core.jtagdevice.IGDBJtagDevice#doHalt(java.util.Collection)
- */
@Override
public void doHalt(Collection<String> commands) {
String cmd = "monitor halt"; //$NON-NLS-1$
addCmd(commands, cmd);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.debug.gdbjtag.core.jtagdevice.IGDBJtagDevice#doContinue(java.util.Collection)
- */
@Override
public void doContinue(Collection<String> commands) {
// The CLI version "continue" causes GDB to block and would not be
@@ -93,24 +69,18 @@ public class DefaultGDBJtagDeviceImpl implements IGDBJtagDevice {
addCmd(commands, cmd);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.debug.gdbjtag.core.jtagdevice.IGDBJtagDevice#doLoadImage(java.lang.String, java.lang.String, java.util.Collection)
- */
@Override
public void doLoadImage(String imageFileName, String imageOffset, Collection<String> commands) {
- addCmd(commands, "load " + escapeScpaces(imageFileName) + ' ' + imageOffset);
+ addCmd(commands, "load " + escapeScpaces(imageFileName) + ' ' + imageOffset); //$NON-NLS-1$
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.debug.gdbjtag.core.jtagdevice.IGDBJtagDevice#doLoadSymbol(java.lang.String, java.lang.String, java.util.Collection)
- */
@Override
public void doLoadSymbol(String symbolFileName, String symbolOffset, Collection<String> commands) {
String file = escapeScpaces(symbolFileName);
if (symbolOffset == null || (symbolOffset.length() == 0)) {
- addCmd(commands, "symbol-file " + file);
+ addCmd(commands, "symbol-file " + file); //$NON-NLS-1$
} else {
- addCmd(commands, "add-symbol-file " + file + " " + symbolOffset);
+ addCmd(commands, "add-symbol-file " + file + " " + symbolOffset); //$NON-NLS-1$ //$NON-NLS-2$
}
}
@@ -121,18 +91,12 @@ public class DefaultGDBJtagDeviceImpl implements IGDBJtagDevice {
return file;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.debug.gdbjtag.core.jtagdevice.IGDBJtagDevice#doSetPC(java.lang.String, java.util.Collection)
- */
@Override
public void doSetPC(String pc, Collection<String> commands) {
String cmd = "set $pc=0x" + pc; //$NON-NLS-1$
addCmd(commands, cmd);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.debug.gdbjtag.core.jtagdevice.IGDBJtagDevice#doStopAt(java.lang.String, java.util.Collection)
- */
@Override
public void doStopAt(String stopAt, Collection<String> commands) {
String cmd = "-break-insert -t -f " + stopAt; //$NON-NLS-1$
@@ -146,20 +110,4 @@ public class DefaultGDBJtagDeviceImpl implements IGDBJtagDevice {
commands.add(cmd + LINESEP);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.debug.gdbjtag.core.jtagdevice.IGDBJtagDevice#getDefaultIpAddress()
- */
- @Override
- public String getDefaultIpAddress() {
- return "localhost"; //$NON-NLS-1$
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.debug.gdbjtag.core.jtagdevice.IGDBJtagDevice#getDefaultPortNumber()
- */
- @Override
- public String getDefaultPortNumber() {
- return "10000"; //$NON-NLS-1$
- }
-
}
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/GDBJtagDeviceContribution.java b/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/GDBJtagDeviceContribution.java
index da412e5ce2a..803118657e4 100644
--- a/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/GDBJtagDeviceContribution.java
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/GDBJtagDeviceContribution.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008 - 2010 QNX Software Systems and others.
+ * Copyright (c) 2008, 2022 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -14,6 +14,8 @@
* Bruce Griffith, Sage Electronic Engineering, LLC - bug 305943
* - API generalization to become transport-independent (allow
* connections via serial ports and pipes).
+ * John Dallaway - Eliminate deprecated API - bug 566462
+ * John Dallaway - Support multiple remote debug protocols - bug 535143
*******************************************************************************/
package org.eclipse.cdt.debug.gdbjtag.core.jtagdevice;
@@ -32,6 +34,7 @@ public class GDBJtagDeviceContribution {
private IGDBJtagDevice device;
private String deviceClassBundleName;
private String deviceDefaultConnection;
+ private String[] deviceProtocols;
/**
* @return the deviceId
@@ -95,8 +98,9 @@ public class GDBJtagDeviceContribution {
return device;
Object o = null;
try {
- o = Platform.getBundle(deviceClassBundleName).loadClass(deviceClassName).newInstance();
+ o = Platform.getBundle(deviceClassBundleName).loadClass(deviceClassName).getConstructor().newInstance();
if (o instanceof IGDBJtagConnection) {
+ ((IGDBJtagConnection) o).setDeviceProtocols(deviceProtocols);
((IGDBJtagConnection) o).setDefaultDeviceConnection(deviceDefaultConnection);
}
device = (IGDBJtagDevice) o;
@@ -109,4 +113,14 @@ public class GDBJtagDeviceContribution {
}
+ /** @since 10.6 */
+ public void setDeviceProtocols(String[] protocols) {
+ deviceProtocols = protocols;
+ }
+
+ /** @since 10.6 */
+ public String[] getDeviceProtocols() {
+ return deviceProtocols;
+ }
+
}
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/GDBJtagDeviceContributionFactory.java b/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/GDBJtagDeviceContributionFactory.java
index afda65663ba..7159693f298 100644
--- a/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/GDBJtagDeviceContributionFactory.java
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/GDBJtagDeviceContributionFactory.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2018 QNX Software Systems and others.
+ * Copyright (c) 2008, 2022 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -15,10 +15,12 @@
* - API generalization to become transport-independent (allow
* connections via serial ports and pipes).
* Torbjörn Svensson (STMicroelectronics) - Bug 535024
+ * John Dallaway - Support multiple remote debug protocols - bug 535143
*******************************************************************************/
package org.eclipse.cdt.debug.gdbjtag.core.jtagdevice;
import java.util.ArrayList;
+import java.util.Arrays;
import org.eclipse.cdt.debug.gdbjtag.core.Activator;
import org.eclipse.cdt.debug.gdbjtag.core.IGDBJtagConstants;
@@ -60,11 +62,15 @@ public class GDBJtagDeviceContributionFactory {
String className = getRequired(configurationElement, "class"); //$NON-NLS-1$
String connection = getOptional(configurationElement, "default_connection", //$NON-NLS-1$
IGDBJtagConstants.DEFAULT_CONNECTION);
+ String[] protocols = getOptional(configurationElement, "protocols", //$NON-NLS-1$
+ IGDBJtagConstants.DEFAULT_PROTOCOL).split(","); //$NON-NLS-1$
GDBJtagDeviceContribution adapter = new GDBJtagDeviceContribution();
adapter.setDeviceId(id);
adapter.setDeviceName(name);
adapter.setDeviceClassName(className);
adapter.setDeviceDefaultConnection(connection);
+ adapter.setDeviceProtocols(
+ Arrays.stream(protocols).map(String::trim).filter(s -> !s.isEmpty()).toArray(String[]::new));
adapter.setDeviceClassBundleName(configurationElement.getContributor().getName());
addContribution(adapter);
}
@@ -87,8 +93,8 @@ public class GDBJtagDeviceContributionFactory {
String elementValue = configurationElement.getAttribute(name);
if (elementValue == null)
Activator.log(new Status(IStatus.ERROR, Activator.getUniqueIdentifier(), DebugPlugin.INTERNAL_ERROR,
- "Extension " + configurationElement.getDeclaringExtension().getUniqueIdentifier()
- + " missing required attribute: " + name,
+ "Extension " + configurationElement.getDeclaringExtension().getUniqueIdentifier() //$NON-NLS-1$
+ + " missing required attribute: " + name, //$NON-NLS-1$
null));
return elementValue;
}
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/GenericDevice.java b/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/GenericDevice.java
index b3d1a183216..d42eb9586d1 100644
--- a/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/GenericDevice.java
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/GenericDevice.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2012 QNX Software Systems and others.
+ * Copyright (c) 2008, 2021 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -11,32 +11,23 @@
* Contributors:
* QNX Software Systems - Initial API and implementation
* Andy Jin - Hardware debugging UI improvements, bug 229946
+ * John Dallaway - Eliminate deprecated API, bug 566462
+ * John Dallaway - Use default delay implementation, bug 576811
*******************************************************************************/
package org.eclipse.cdt.debug.gdbjtag.core.jtagdevice;
import java.util.Collection;
-public class GenericDevice extends DefaultGDBJtagDeviceImpl {
+public class GenericDevice extends DefaultGDBJtagConnectionImpl {
- /* (non-Javadoc)
- * @see org.eclipse.cdt.debug.gdbjtag.core.jtagdevice.DefaultGDBJtagDeviceImpl#doDelay(int, java.util.Collection)
- */
- @Override
- public void doDelay(int delay, Collection<String> commands) {
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.debug.gdbjtag.core.jtagdevice.DefaultGDBJtagDeviceImpl#doHalt(java.util.Collection)
- */
@Override
public void doHalt(Collection<String> commands) {
+ /* not supported */
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.debug.gdbjtag.core.jtagdevice.DefaultGDBJtagDeviceImpl#doReset(java.util.Collection)
- */
@Override
public void doReset(Collection<String> commands) {
+ /* not supported */
}
}
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/IGDBJtagDevice.java b/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/IGDBJtagDevice.java
index 461b2528d8a..4c6a8998d89 100644
--- a/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/IGDBJtagDevice.java
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/IGDBJtagDevice.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2019 QNX Software Systems and others.
+ * Copyright (c) 2008, 2020 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -12,6 +12,7 @@
* QNX Software Systems - Initial API and implementation
* Andy Jin - Hardware debugging UI improvements, bug 229946
* John Dallaway - Support 'reset and halt' command, bug 535163
+ * John Dallaway - Eliminate deprecated API, bug 566462
*******************************************************************************/
package org.eclipse.cdt.debug.gdbjtag.core.jtagdevice;
@@ -84,25 +85,6 @@ public interface IGDBJtagDevice {
}
/**
- * Commands to connect to remote JTAG device
- *
- * @param ip
- * host name of IP address of JTAG device
- * @param port
- * TCP socket port number of JTAG device
- * @param commands
- * implementation should populate the collection with the gdb
- * commands that will connect to the device, or leave the
- * collection as-is if that operation is either unsupported or
- * not applicable
- * @deprecated an implementor should adapt to IGDBJtagConnection instead of
- * implementing this method (implementation should throw
- * UnsupportedOperationException)
- */
- @Deprecated
- public void doRemote(String ip, int port, Collection<String> commands);
-
- /**
* Commands to download the executable binary to target
*
* @param imageFileName
@@ -169,25 +151,4 @@ public interface IGDBJtagDevice {
*/
public void doContinue(Collection<String> commands);
- /**
- * Device specific default hostname of IP address
- *
- * @return default hostname of IP address
- * @deprecated an implementor should adapt to IGDBJtagConnection instead of
- * implementing this method (implementation should throw
- * UnsupportedOperationException)
- */
- @Deprecated
- public String getDefaultIpAddress();
-
- /**
- * Device specific default port number
- *
- * @return default port number
- * @deprecated an implementor should adapt to IGDBJtagConnection instead of
- * implementing this method (implementation should throw
- * UnsupportedOperationException)
- */
- @Deprecated
- public String getDefaultPortNumber();
}
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/MacraigorUsb2Demon.java b/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/MacraigorUsb2Demon.java
index e36ea08aa0a..25d0480c07a 100644
--- a/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/MacraigorUsb2Demon.java
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/MacraigorUsb2Demon.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2019 QNX Software Systems and others.
+ * Copyright (c) 2008, 2020 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -12,6 +12,7 @@
* QNX Software Systems - Initial API and implementation
* Andy Jin - Hardware debugging UI improvements, bug 229946
* John Dallaway - Provide 'reset and halt' command, bug 550963
+ * John Dallaway - Eliminate deprecated API, bug 566462
*******************************************************************************/
package org.eclipse.cdt.debug.gdbjtag.core.jtagdevice;
@@ -21,12 +22,7 @@ import java.util.Collection;
* @author ajin
*
*/
-public class MacraigorUsb2Demon extends DefaultGDBJtagDeviceImpl {
-
- @Override
- public String getDefaultPortNumber() {
- return "8888"; //$NON-NLS-1$
- }
+public class MacraigorUsb2Demon extends DefaultGDBJtagConnectionImpl {
@Override
public void doDelay(int delay, Collection<String> commands) {
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/OpenOCDSocket.java b/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/OpenOCDSocket.java
index 5eaf676bd78..72666ce803a 100644
--- a/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/OpenOCDSocket.java
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/OpenOCDSocket.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2019 QNX Software Systems and others.
+ * Copyright (c) 2008, 2020 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -13,6 +13,7 @@
* Andy Jin - Hardware debugging UI improvements, bug 229946
* John Dallaway - OpenOCD extensions, bug 494059
* John Dallaway - Provide 'reset and halt' command, bug 550963
+ * John Dallaway - Eliminate deprecated API, bug 566462
*******************************************************************************/
package org.eclipse.cdt.debug.gdbjtag.core.jtagdevice;
@@ -21,12 +22,7 @@ import java.util.Collection;
/**
* @since 9.2
*/
-public class OpenOCDSocket extends DefaultGDBJtagDeviceImpl {
-
- @Override
- public String getDefaultPortNumber() {
- return "3333"; //$NON-NLS-1$
- }
+public class OpenOCDSocket extends DefaultGDBJtagConnectionImpl {
@Override
public void doDelay(int delay, Collection<String> commands) {
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/PEMicro.java b/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/PEMicro.java
index 0fc57d3c055..c40241ca365 100644
--- a/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/PEMicro.java
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/PEMicro.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2019 QNX Software Systems and others.
+ * Copyright (c) 2008, 2021 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -12,6 +12,8 @@
* QNX Software Systems - Initial API and implementation
* Andy Jin - Hardware debugging UI improvements, bug 229946
* John Dallaway - PEmicro extension, bug 552597
+ * John Dallaway - Eliminate deprecated API, bug 566462
+ * John Dallaway - Use default delay implementation, bug 576811
*******************************************************************************/
package org.eclipse.cdt.debug.gdbjtag.core.jtagdevice;
@@ -20,17 +22,7 @@ import java.util.Collection;
/**
* @since 9.4
*/
-public class PEMicro extends DefaultGDBJtagDeviceImpl {
-
- @Override
- public String getDefaultPortNumber() {
- return "7224"; //$NON-NLS-1$
- }
-
- @Override
- public void doDelay(int delay, Collection<String> commands) {
- /* not supported */
- }
+public class PEMicro extends DefaultGDBJtagConnectionImpl {
@Override
public void doHalt(Collection<String> commands) {
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/PyOCD.java b/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/PyOCD.java
new file mode 100644
index 00000000000..dd91d5bfee8
--- /dev/null
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/PyOCD.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2021 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - Initial API and implementation
+ * Andy Jin - Hardware debugging UI improvements, bug 229946
+ * John Dallaway - PyOCD extension, bug 574928
+ * John Dallaway - Use default delay implementation, bug 576811
+ *******************************************************************************/
+package org.eclipse.cdt.debug.gdbjtag.core.jtagdevice;
+
+import java.util.Collection;
+
+/**
+ * @since 10.4
+ */
+public class PyOCD extends DefaultGDBJtagConnectionImpl {
+
+ @Override
+ public void doReset(Collection<String> commands) {
+ addCmd(commands, "monitor reset"); //$NON-NLS-1$
+ }
+
+ @Override
+ public void doResetAndHalt(Collection<String> commands) {
+ addCmd(commands, "monitor reset halt"); //$NON-NLS-1$
+ }
+
+}
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/STLink.java b/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/STLink.java
new file mode 100644
index 00000000000..221cda7f542
--- /dev/null
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/STLink.java
@@ -0,0 +1,43 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2021 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - Initial API and implementation
+ * Andy Jin - Hardware debugging UI improvements, bug 229946
+ * John Dallaway - ST-LINK extension, bug 558266
+ * John Dallaway - Eliminate deprecated API, bug 566462
+ * John Dallaway - Use default delay implementation, bug 576811
+ *******************************************************************************/
+package org.eclipse.cdt.debug.gdbjtag.core.jtagdevice;
+
+import java.util.Collection;
+
+/**
+ * @since 9.5
+ */
+public class STLink extends DefaultGDBJtagConnectionImpl {
+
+ @Override
+ public void doHalt(Collection<String> commands) {
+ /* not supported */
+ }
+
+ @Override
+ public void doReset(Collection<String> commands) {
+ doResetAndHalt(commands);
+ doContinue(commands);
+ }
+
+ @Override
+ public void doResetAndHalt(Collection<String> commands) {
+ addCmd(commands, "monitor reset"); //$NON-NLS-1$
+ }
+
+}
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/SeggerJLink.java b/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/SeggerJLink.java
index b86e0728c89..5c9eee25912 100644
--- a/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/SeggerJLink.java
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/jtagdevice/SeggerJLink.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2019 QNX Software Systems and others.
+ * Copyright (c) 2008, 2020 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -13,6 +13,7 @@
* Andy Jin - Hardware debugging UI improvements, bug 229946
* John Dallaway - SEGGER J-Link extension, bug 548281
* John Dallaway - Provide 'reset and halt' command, bug 550963
+ * John Dallaway - Eliminate deprecated API, bug 566462
*******************************************************************************/
package org.eclipse.cdt.debug.gdbjtag.core.jtagdevice;
@@ -21,12 +22,7 @@ import java.util.Collection;
/**
* @since 9.3
*/
-public class SeggerJLink extends DefaultGDBJtagDeviceImpl {
-
- @Override
- public String getDefaultPortNumber() {
- return "2331"; //$NON-NLS-1$
- }
+public class SeggerJLink extends DefaultGDBJtagConnectionImpl {
@Override
public void doDelay(int delay, Collection<String> commands) {
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag.ui/.classpath b/jtag/org.eclipse.cdt.debug.gdbjtag.ui/.classpath
index eca7bdba8f0..e801ebfb468 100644
--- a/jtag/org.eclipse.cdt.debug.gdbjtag.ui/.classpath
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag.ui/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag.ui/.settings/org.eclipse.core.resources.prefs b/jtag/org.eclipse.cdt.debug.gdbjtag.ui/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag.ui/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag.ui/.settings/org.eclipse.jdt.core.prefs b/jtag/org.eclipse.cdt.debug.gdbjtag.ui/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/jtag/org.eclipse.cdt.debug.gdbjtag.ui/.settings/org.eclipse.jdt.core.prefs
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag.ui/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag.ui/.settings/org.eclipse.jdt.ui.prefs b/jtag/org.eclipse.cdt.debug.gdbjtag.ui/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/jtag/org.eclipse.cdt.debug.gdbjtag.ui/.settings/org.eclipse.jdt.ui.prefs
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag.ui/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag.ui/META-INF/MANIFEST.MF b/jtag/org.eclipse.cdt.debug.gdbjtag.ui/META-INF/MANIFEST.MF
index f1d3e5f4492..a1b74f88f47 100644
--- a/jtag/org.eclipse.cdt.debug.gdbjtag.ui/META-INF/MANIFEST.MF
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.debug.gdbjtag.ui;singleton:=true
-Bundle-Version: 8.1.100.qualifier
+Bundle-Version: 9.0.300.qualifier
Bundle-Activator: org.eclipse.cdt.debug.gdbjtag.ui.Activator
Bundle-Localization: plugin
Require-Bundle: org.eclipse.ui,
@@ -13,11 +13,11 @@ Require-Bundle: org.eclipse.ui,
org.eclipse.core.variables,
org.eclipse.ui.ide,
org.eclipse.cdt.debug.core,
- org.eclipse.cdt.dsf.gdb;bundle-version="[5.5.0,6.0.0)",
+ org.eclipse.cdt.dsf.gdb;bundle-version="[6.0.0,7.0.0)",
org.eclipse.cdt.dsf.gdb.ui
Bundle-ActivationPolicy: lazy
Bundle-Vendor: %providerName
Export-Package: org.eclipse.cdt.debug.gdbjtag.internal.ui;x-internal:=true,
org.eclipse.cdt.debug.gdbjtag.ui
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Automatic-Module-Name: org.eclipse.cdt.debug.gdbjtag.ui
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag.ui/about.html b/jtag/org.eclipse.cdt.debug.gdbjtag.ui/about.html
index 164f781a8fd..b3134865230 100644
--- a/jtag/org.eclipse.cdt.debug.gdbjtag.ui/about.html
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag.ui/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag.ui/src/org/eclipse/cdt/debug/gdbjtag/internal/ui/GDBJtagDSFCMainTab.java b/jtag/org.eclipse.cdt.debug.gdbjtag.ui/src/org/eclipse/cdt/debug/gdbjtag/internal/ui/GDBJtagDSFCMainTab.java
index af49fbd4850..f10a2eaf690 100644
--- a/jtag/org.eclipse.cdt.debug.gdbjtag.ui/src/org/eclipse/cdt/debug/gdbjtag/internal/ui/GDBJtagDSFCMainTab.java
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag.ui/src/org/eclipse/cdt/debug/gdbjtag/internal/ui/GDBJtagDSFCMainTab.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007 - 2015 QNX Software Systems and others.
+ * Copyright (c) 2007 - 2020 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -10,18 +10,22 @@
*
* Contributors:
* QNX Software Systems - Initial implementation
+ * John Dallaway - Extend CMainTab2, bug 568454
*******************************************************************************/
package org.eclipse.cdt.debug.gdbjtag.internal.ui;
-import org.eclipse.cdt.dsf.gdb.internal.ui.launching.CMainTab;
+import org.eclipse.cdt.launch.ui.CMainTab2;
-/**
- * @since 7.0
- */
-@SuppressWarnings("deprecation")
-public class GDBJtagDSFCMainTab extends CMainTab {
+public class GDBJtagDSFCMainTab extends CMainTab2 {
public GDBJtagDSFCMainTab() {
- super(CMainTab.INCLUDE_BUILD_SETTINGS);
+ super(CMainTab2.INCLUDE_BUILD_SETTINGS);
}
+
+ @Override
+ public String getId() {
+ // return historic ID for compatibility with existing consumers
+ return "org.eclipse.cdt.dsf.gdb.launch.mainTab"; //$NON-NLS-1$
+ }
+
}
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag.ui/src/org/eclipse/cdt/debug/gdbjtag/ui/Activator.java b/jtag/org.eclipse.cdt.debug.gdbjtag.ui/src/org/eclipse/cdt/debug/gdbjtag/ui/Activator.java
index 9b3a6bf3559..0c3e8bf97f4 100644
--- a/jtag/org.eclipse.cdt.debug.gdbjtag.ui/src/org/eclipse/cdt/debug/gdbjtag/ui/Activator.java
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag.ui/src/org/eclipse/cdt/debug/gdbjtag/ui/Activator.java
@@ -32,7 +32,7 @@ import org.osgi.framework.BundleContext;
public class Activator extends AbstractUIPlugin {
// The plug-in ID
- public static final String PLUGIN_ID = "org.eclipse.cdt.debug.gdbjtag.ui";
+ public static final String PLUGIN_ID = "org.eclipse.cdt.debug.gdbjtag.ui"; //$NON-NLS-1$
private static final String HARDWARE_LAUNCH_TYPE = "org.eclipse.cdt.debug.gdbjtag.launchConfigurationType"; //$NON-NLS-1$
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag.ui/src/org/eclipse/cdt/debug/gdbjtag/ui/GDBJtagDSFDebuggerTab.java b/jtag/org.eclipse.cdt.debug.gdbjtag.ui/src/org/eclipse/cdt/debug/gdbjtag/ui/GDBJtagDSFDebuggerTab.java
index c2913f739df..8893bcb9d7c 100644
--- a/jtag/org.eclipse.cdt.debug.gdbjtag.ui/src/org/eclipse/cdt/debug/gdbjtag/ui/GDBJtagDSFDebuggerTab.java
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag.ui/src/org/eclipse/cdt/debug/gdbjtag/ui/GDBJtagDSFDebuggerTab.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2018 QNX Software Systems and others.
+ * Copyright (c) 2007, 2022 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -20,6 +20,10 @@
* allow connections via serial ports and pipes).
* John Dallaway - Ensure correct SessionType enabled, bug 334110
* Torbjörn Svensson (STMicroelectronics) - Bug 535024
+ * John Dallaway - Sort JTAG device list, bug 560186
+ * John Dallaway - Eliminate deprecated API, bug 566462
+ * John Dallaway - Eliminate pixel-level sizing, bug 567662
+ * John Dallaway - Support multiple remote debug protocols, bug 535143
*******************************************************************************/
package org.eclipse.cdt.debug.gdbjtag.ui;
@@ -27,6 +31,7 @@ package org.eclipse.cdt.debug.gdbjtag.ui;
import java.io.File;
import java.net.URI;
import java.net.URISyntaxException;
+import java.util.Arrays;
import org.eclipse.cdt.debug.core.ICDTLaunchConfigurationConstants;
import org.eclipse.cdt.debug.gdbjtag.core.Activator;
@@ -46,16 +51,15 @@ import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
import org.eclipse.debug.ui.AbstractLaunchConfigurationTab;
import org.eclipse.debug.ui.StringVariableSelectionDialog;
-import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.jface.layout.PixelConverter;
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.ComboViewer;
+import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.ScrolledComposite;
-import org.eclipse.swt.custom.StackLayout;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.VerifyEvent;
-import org.eclipse.swt.events.VerifyListener;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
@@ -73,18 +77,18 @@ import org.eclipse.ui.PlatformUI;
*/
public class GDBJtagDSFDebuggerTab extends AbstractLaunchConfigurationTab {
- private static final String TAB_NAME = "Debugger";
- private static final String TAB_ID = "org.eclipse.cdt.debug.gdbjtag.ui.debuggertab.dsf";
+ private static final String TAB_NAME = Messages.getString("GDBJtagDebuggerTab.tabName"); //$NON-NLS-1$
+ private static final String TAB_ID = "org.eclipse.cdt.debug.gdbjtag.ui.debuggertab.dsf"; //$NON-NLS-1$
+ private static final String DEFAULT_JTAG_DEVICE_ID = "org.eclipse.cdt.debug.gdbjtag.core.jtagdevice.genericDevice"; //$NON-NLS-1$
+ private static final String ATTR_JTAG_DEVICE = "org.eclipse.cdt.debug.gdbjtag.core.jtagDevice"; //$NON-NLS-1$
private Text gdbCommand;
private Button useRemote;
+ private Label jtagDeviceLabel;
private Combo jtagDevice;
- private Composite remoteConnectionParameters;
- private StackLayout remoteConnectParmsLayout;
- private Composite remoteTcpipBox;
- private Text ipAddress;
- private Text portNumber;
- private Composite remoteConnectionBox;
+ private Label protocolLabel;
+ private ComboViewer protocol;
+ private Label connectionLabel;
private Text connection;
private String savedJtagDevice;
protected Button fUpdateThreadlistOnSuspend;
@@ -103,13 +107,8 @@ public class GDBJtagDSFDebuggerTab extends AbstractLaunchConfigurationTab {
@Override
public void createControl(Composite parent) {
- ScrolledComposite sc = new ScrolledComposite(parent, SWT.V_SCROLL | SWT.H_SCROLL);
- sc.setExpandHorizontal(true);
- sc.setExpandVertical(true);
- setControl(sc);
-
- Composite comp = new Composite(sc, SWT.NONE);
- sc.setContent(comp);
+ Composite comp = new Composite(parent, SWT.NONE);
+ setControl(comp);
GridLayout layout = new GridLayout(2, false);
comp.setLayout(layout);
@@ -119,13 +118,13 @@ public class GDBJtagDSFDebuggerTab extends AbstractLaunchConfigurationTab {
GridData gd = new GridData(GridData.FILL_HORIZONTAL);
gd.horizontalSpan = 2;
group.setLayoutData(gd);
- group.setText(Messages.getString("GDBJtagDebuggerTab.gdbSetupGroup_Text"));
+ group.setText(Messages.getString("GDBJtagDebuggerTab.gdbSetupGroup_Text")); //$NON-NLS-1$
createCommandControl(group);
createRemoteControl(comp);
fUpdateThreadlistOnSuspend = new Button(comp, SWT.CHECK);
- fUpdateThreadlistOnSuspend.setText(Messages.getString("GDBJtagDebuggerTab.update_thread_list_on_suspend"));
+ fUpdateThreadlistOnSuspend.setText(Messages.getString("GDBJtagDebuggerTab.update_thread_list_on_suspend")); //$NON-NLS-1$
fUpdateThreadlistOnSuspend.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
@@ -173,7 +172,7 @@ public class GDBJtagDSFDebuggerTab extends AbstractLaunchConfigurationTab {
comp.setLayoutData(gd);
Label label = new Label(comp, SWT.NONE);
- label.setText(Messages.getString("GDBJtagDebuggerTab.gdbCommandLabel"));
+ label.setText(Messages.getString("GDBJtagDebuggerTab.gdbCommandLabel")); //$NON-NLS-1$
gd = new GridData();
gd.horizontalSpan = 3;
label.setLayoutData(gd);
@@ -189,16 +188,16 @@ public class GDBJtagDSFDebuggerTab extends AbstractLaunchConfigurationTab {
});
Button button = new Button(comp, SWT.NONE);
- button.setText(Messages.getString("GDBJtagDebuggerTab.gdbCommandBrowse"));
+ button.setText(Messages.getString("GDBJtagDebuggerTab.gdbCommandBrowse")); //$NON-NLS-1$
button.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
- browseButtonSelected(Messages.getString("GDBJtagDebuggerTab.gdbCommandBrowse_Title"), gdbCommand);
+ browseButtonSelected(Messages.getString("GDBJtagDebuggerTab.gdbCommandBrowse_Title"), gdbCommand); //$NON-NLS-1$
}
});
button = new Button(comp, SWT.NONE);
- button.setText(Messages.getString("GDBJtagDebuggerTab.gdbCommandVariable"));
+ button.setText(Messages.getString("GDBJtagDebuggerTab.gdbCommandVariable")); //$NON-NLS-1$
button.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
@@ -209,16 +208,15 @@ public class GDBJtagDSFDebuggerTab extends AbstractLaunchConfigurationTab {
private void createRemoteControl(Composite parent) {
Group group = new Group(parent, SWT.NONE);
- GridLayout layout = new GridLayout(2, false);
+ GridLayout layout = new GridLayout();
group.setLayout(layout);
- GridData gd = new GridData(GridData.FILL_HORIZONTAL);
- gd.horizontalSpan = 2;
- group.setLayoutData(gd);
- group.setText(Messages.getString("GDBJtagDebuggerTab.remoteGroup_Text"));
+ group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ group.setText(Messages.getString("GDBJtagDebuggerTab.remoteGroup_Text")); //$NON-NLS-1$
useRemote = new Button(group, SWT.CHECK);
- useRemote.setLayoutData(GridDataFactory.swtDefaults().span(2, 1).create());
- useRemote.setText(Messages.getString("GDBJtagDebuggerTab.useRemote_Text"));
+ useRemote.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ useRemote.setText(Messages.getString("GDBJtagDebuggerTab.useRemote_Text")); //$NON-NLS-1$
+ useRemote.setToolTipText(Messages.getString("GDBJtagDebuggerTab.useRemoteTooltip")); //$NON-NLS-1$
useRemote.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
@@ -227,9 +225,18 @@ public class GDBJtagDSFDebuggerTab extends AbstractLaunchConfigurationTab {
}
});
- remoteTimeoutEnabled = new Button(group, SWT.CHECK);
- remoteTimeoutEnabled.setText(Messages.getString("GDBJtagDebuggerTab.remoteTimeout"));
- remoteTimeoutEnabled.setToolTipText(Messages.getString("GDBJtagDebuggerTab.remoteTimeoutTooltip"));
+ Composite comp = new Composite(group, SWT.NONE);
+ layout = new GridLayout();
+ layout.numColumns = 2;
+ layout.marginHeight = 0;
+ layout.marginLeft = new PixelConverter(group).convertHorizontalDLUsToPixels(8);
+ layout.marginRight = 0;
+ comp.setLayout(layout);
+ comp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+ remoteTimeoutEnabled = new Button(comp, SWT.CHECK);
+ remoteTimeoutEnabled.setText(Messages.getString("GDBJtagDebuggerTab.remoteTimeout")); //$NON-NLS-1$
+ remoteTimeoutEnabled.setToolTipText(Messages.getString("GDBJtagDebuggerTab.remoteTimeoutTooltip")); //$NON-NLS-1$
remoteTimeoutEnabled.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
@@ -237,28 +244,22 @@ public class GDBJtagDSFDebuggerTab extends AbstractLaunchConfigurationTab {
updateLaunchConfigurationDialog();
}
});
- remoteTimeoutValue = new Text(group, SWT.BORDER);
- gd = new GridData();
- gd.widthHint = 125;
- remoteTimeoutValue.setLayoutData(gd);
- remoteTimeoutValue.setToolTipText(Messages.getString("GDBJtagDebuggerTab.remoteTimeoutTooltip"));
+ remoteTimeoutValue = new Text(comp, SWT.BORDER);
+ remoteTimeoutValue.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ remoteTimeoutValue.setToolTipText(Messages.getString("GDBJtagDebuggerTab.remoteTimeoutTooltip")); //$NON-NLS-1$
- Composite comp = new Composite(group, SWT.NONE);
- layout = new GridLayout();
- layout.numColumns = 2;
- comp.setLayout(layout);
- comp.setLayoutData(GridDataFactory.swtDefaults().span(2, 1).create());
-
- Label label = new Label(comp, SWT.NONE);
- label.setText(Messages.getString("GDBJtagDebuggerTab.jtagDeviceLabel"));
+ jtagDeviceLabel = new Label(comp, SWT.NONE);
+ jtagDeviceLabel.setText(Messages.getString("GDBJtagDebuggerTab.jtagDeviceLabel")); //$NON-NLS-1$
+ jtagDeviceLabel.setToolTipText(Messages.getString("GDBJtagDebuggerTab.jtagDeviceTooltip")); //$NON-NLS-1$
jtagDevice = new Combo(comp, SWT.READ_ONLY | SWT.DROP_DOWN);
+ jtagDevice.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ jtagDevice.setToolTipText(Messages.getString("GDBJtagDebuggerTab.jtagDeviceTooltip")); //$NON-NLS-1$
GDBJtagDeviceContribution[] availableDevices = GDBJtagDeviceContributionFactory.getInstance()
.getGDBJtagDeviceContribution();
- for (int i = 0; i < availableDevices.length; i++) {
- jtagDevice.add(availableDevices[i].getDeviceName());
- }
+ Arrays.stream(availableDevices).map(GDBJtagDeviceContribution::getDeviceName).sorted()
+ .forEach(name -> jtagDevice.add(name));
jtagDevice.addModifyListener(new ModifyListener() {
@Override
@@ -268,110 +269,54 @@ public class GDBJtagDSFDebuggerTab extends AbstractLaunchConfigurationTab {
}
});
- remoteConnectionParameters = new Composite(group, SWT.NO_TRIM | SWT.NO_FOCUS);
- remoteConnectParmsLayout = new StackLayout();
- remoteConnectionParameters.setLayout(remoteConnectParmsLayout);
- remoteConnectionParameters.setLayoutData(GridDataFactory.swtDefaults().span(2, 1).create());
-
- //
- // Create entry fields for TCP/IP connections
- //
-
- {
- remoteTcpipBox = new Composite(remoteConnectionParameters, SWT.NO_TRIM | SWT.NO_FOCUS);
- layout = new GridLayout();
- layout.numColumns = 2;
- remoteTcpipBox.setLayout(layout);
- remoteTcpipBox.setBackground(remoteConnectionParameters.getParent().getBackground());
-
- label = new Label(remoteTcpipBox, SWT.NONE);
- label.setText(Messages.getString("GDBJtagDebuggerTab.ipAddressLabel")); //$NON-NLS-1$
- ipAddress = new Text(remoteTcpipBox, SWT.BORDER);
- gd = new GridData();
- gd.widthHint = 125;
- ipAddress.setLayoutData(gd);
-
- label = new Label(remoteTcpipBox, SWT.NONE);
- label.setText(Messages.getString("GDBJtagDebuggerTab.portNumberLabel")); //$NON-NLS-1$
- portNumber = new Text(remoteTcpipBox, SWT.BORDER);
- gd = new GridData();
- gd.widthHint = 125;
- portNumber.setLayoutData(gd);
- }
-
- //
- // Create entry fields for other types of connections
- //
-
- {
- remoteConnectionBox = new Composite(remoteConnectionParameters, SWT.NO_TRIM | SWT.NO_FOCUS);
- layout = new GridLayout();
- layout.numColumns = 2;
- remoteConnectionBox.setLayout(layout);
- remoteConnectionBox.setBackground(remoteConnectionParameters.getParent().getBackground());
-
- label = new Label(remoteConnectionBox, SWT.NONE);
- label.setText(Messages.getString("GDBJtagDebuggerTab.connectionLabel")); //$NON-NLS-1$
- connection = new Text(remoteConnectionBox, SWT.BORDER);
- gd = new GridData();
- gd.widthHint = 125;
- connection.setLayoutData(gd);
- }
+ protocolLabel = new Label(comp, SWT.NONE);
+ protocolLabel.setText(Messages.getString("GDBJtagDebuggerTab.protocolLabel")); //$NON-NLS-1$
+ protocolLabel.setToolTipText(Messages.getString("GDBJtagDebuggerTab.protocolTooltip")); //$NON-NLS-1$
+ protocol = new ComboViewer(comp, SWT.READ_ONLY | SWT.DROP_DOWN);
+ protocol.setContentProvider(new ArrayContentProvider());
+ protocol.getCombo().setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ protocol.getCombo().setToolTipText(Messages.getString("GDBJtagDebuggerTab.protocolTooltip")); //$NON-NLS-1$
+
+ connectionLabel = new Label(comp, SWT.NONE);
+ connectionLabel.setText(Messages.getString("GDBJtagDebuggerTab.connectionLabel")); //$NON-NLS-1$
+ connectionLabel.setToolTipText(Messages.getString("GDBJtagDebuggerTab.connectionTooltip")); //$NON-NLS-1$
+ connection = new Text(comp, SWT.BORDER);
+ connection.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ connection.setToolTipText(Messages.getString("GDBJtagDebuggerTab.connectionTooltip")); //$NON-NLS-1$
//
// Add watchers for user data entry
//
-
- ipAddress.addModifyListener(new ModifyListener() {
- @Override
- public void modifyText(ModifyEvent e) {
- scheduleUpdateJob(); // provides much better performance for Text listeners
- }
- });
- portNumber.addVerifyListener(new VerifyListener() {
- @Override
- public void verifyText(VerifyEvent e) {
- e.doit = Character.isDigit(e.character) || Character.isISOControl(e.character);
- }
- });
- portNumber.addModifyListener(new ModifyListener() {
- @Override
- public void modifyText(ModifyEvent e) {
- scheduleUpdateJob(); // provides much better performance for Text listeners
- }
- });
-
- connection.addModifyListener(new ModifyListener() {
- @Override
- public void modifyText(ModifyEvent e) {
- scheduleUpdateJob(); // provides much better performance for Text listeners
- }
- });
+ protocol.getCombo().addListener(SWT.Selection, e -> scheduleUpdateJob());
+ connection.addListener(SWT.Modify, e -> scheduleUpdateJob());
}
/**
* @param text
*/
- @SuppressWarnings("deprecation")
protected void updateDeviceIpPort(String selectedDeviceName) {
- if (selectedDeviceName.equals(savedJtagDevice)) {
- return;
+ if (!selectedDeviceName.equals(savedJtagDevice)) {
+ resetTargetParameters(selectedDeviceName);
}
+ }
+
+ private void resetTargetParameters(String deviceName) {
GDBJtagDeviceContribution[] availableDevices = GDBJtagDeviceContributionFactory.getInstance()
.getGDBJtagDeviceContribution();
IGDBJtagDevice selectedDevice = null;
for (int i = 0; i < availableDevices.length; i++) {
String name = availableDevices[i].getDeviceName();
- if (name.equals(selectedDeviceName)) {
+ if (name.equals(deviceName)) {
selectedDevice = availableDevices[i].getDevice();
if (selectedDevice != null) {
if (selectedDevice instanceof IGDBJtagConnection) {
IGDBJtagConnection connectionDevice = (IGDBJtagConnection) selectedDevice;
connection.setText(connectionDevice.getDefaultDeviceConnection());
- } else {
- // support for deprecated TCP/IP based methods
- ipAddress.setText(selectedDevice.getDefaultIpAddress());
- portNumber.setText(selectedDevice.getDefaultPortNumber());
+ String[] protocols = connectionDevice.getDeviceProtocols();
+ protocol.setInput(protocols);
+ if (0 != protocols.length) {
+ protocol.setSelection(new StructuredSelection(protocols[0]));
+ }
}
useRemoteChanged();
updateLaunchConfigurationDialog();
@@ -388,26 +333,13 @@ public class GDBJtagDSFDebuggerTab extends AbstractLaunchConfigurationTab {
private void useRemoteChanged() {
boolean enabled = useRemote.getSelection();
remoteTimeoutEnabled.setEnabled(enabled);
- remoteTimeoutValue.setEnabled(remoteTimeoutEnabled.getSelection());
+ remoteTimeoutValue.setEnabled(enabled && remoteTimeoutEnabled.getSelection());
+ jtagDeviceLabel.setEnabled(enabled);
jtagDevice.setEnabled(enabled);
- ipAddress.setEnabled(enabled);
- portNumber.setEnabled(enabled);
+ protocolLabel.setEnabled(enabled);
+ protocol.getCombo().setEnabled(enabled);
+ connectionLabel.setEnabled(enabled);
connection.setEnabled(enabled);
- GDBJtagDeviceContribution selectedDeviceEntry = GDBJtagDeviceContributionFactory.getInstance()
- .findByDeviceName(jtagDevice.getText());
- if ((selectedDeviceEntry == null) || (selectedDeviceEntry.getDevice() == null)) {
- remoteConnectParmsLayout.topControl = null;
- remoteConnectionParameters.layout();
- } else {
- IGDBJtagDevice device = selectedDeviceEntry.getDevice();
- if (device instanceof IGDBJtagConnection) {
- remoteConnectParmsLayout.topControl = remoteConnectionBox;
- remoteConnectionBox.getParent().layout();
- } else {
- remoteConnectParmsLayout.topControl = remoteTcpipBox;
- remoteTcpipBox.getParent().layout();
- }
- }
}
/**
@@ -427,10 +359,10 @@ public class GDBJtagDSFDebuggerTab extends AbstractLaunchConfigurationTab {
}
/**
- * Returns the device id for a given device name or {@link IGDBJtagConstants.DEFAULT_JTAG_DEVICE_ID}
+ * Returns the device id for a given device name or {@link #DEFAULT_JTAG_DEVICE_ID}
*
* @param jtagDeviceName The device name
- * @return The device id if found, else {@link IGDBJtagConstants.DEFAULT_JTAG_DEVICE_ID}
+ * @return The device id if found, else {@link #DEFAULT_JTAG_DEVICE_ID}
* @since 8.1
*/
protected String getDeviceIdForDeviceName(String jtagDeviceName) {
@@ -439,7 +371,7 @@ public class GDBJtagDSFDebuggerTab extends AbstractLaunchConfigurationTab {
if (device != null) {
return device.getDeviceId();
}
- return IGDBJtagConstants.DEFAULT_JTAG_DEVICE_ID;
+ return DEFAULT_JTAG_DEVICE_ID;
}
private GDBJtagDeviceContribution getDeviceContribution(ILaunchConfiguration configuration) throws CoreException {
@@ -449,8 +381,7 @@ public class GDBJtagDSFDebuggerTab extends AbstractLaunchConfigurationTab {
}
// Fall back to old behavior with name only if ID is missing
- @SuppressWarnings("deprecation")
- String deviceName = configuration.getAttribute(IGDBJtagConstants.ATTR_JTAG_DEVICE, (String) null);
+ String deviceName = configuration.getAttribute(ATTR_JTAG_DEVICE, (String) null);
if (deviceName != null) {
return GDBJtagDeviceContributionFactory.getInstance().findByDeviceName(deviceName);
}
@@ -480,36 +411,44 @@ public class GDBJtagDSFDebuggerTab extends AbstractLaunchConfigurationTab {
}
if (savedJtagDevice.isEmpty()) {
- jtagDevice.select(0);
+ // saved device not known so use default device attributes
+ String deviceName = getDeviceNameForDeviceId(DEFAULT_JTAG_DEVICE_ID);
+ int index = 0;
+ for (int i = 0; i < jtagDevice.getItemCount(); i++) {
+ if (jtagDevice.getItem(i).equals(deviceName)) {
+ index = i;
+ break;
+ }
+ }
+ jtagDevice.select(index);
} else {
String storedAddress = ""; //$NON-NLS-1$
- int storedPort = 0;
- String storedConnection = ""; //$NON-NLS-1$
+ int storedPort = -1;
+ String storedConnection = null;
+ String storedProtocol = null;
for (int i = 0; i < jtagDevice.getItemCount(); i++) {
if (jtagDevice.getItem(i).equals(savedJtagDevice)) {
storedAddress = configuration.getAttribute(IGDBJtagConstants.ATTR_IP_ADDRESS, ""); //$NON-NLS-1$
- storedPort = configuration.getAttribute(IGDBJtagConstants.ATTR_PORT_NUMBER, 0);
- storedConnection = configuration.getAttribute(IGDBJtagConstants.ATTR_CONNECTION, ""); //$NON-NLS-1$
+ storedPort = configuration.getAttribute(IGDBJtagConstants.ATTR_PORT_NUMBER, -1);
+ storedConnection = configuration.getAttribute(IGDBJtagConstants.ATTR_CONNECTION, (String) null);
+ storedProtocol = configuration.getAttribute(IGDBJtagConstants.ATTR_PROTOCOL, (String) null);
jtagDevice.select(i);
+ resetTargetParameters(savedJtagDevice);
break;
}
}
-
- if (storedConnection != null) {
+ if (null != storedProtocol) {
+ protocol.setSelection(new StructuredSelection(storedProtocol));
+ }
+ if (null != storedConnection) { // if a connection URI
try {
connection.setText(new URI(storedConnection).getSchemeSpecificPart());
} catch (URISyntaxException e) {
Activator.log(e);
}
- }
- if (storedAddress != null) {
- // Treat as legacy network probe
- ipAddress.setText(storedAddress);
- String portString = (0 < storedPort) && (storedPort <= 65535)
- ? Integer.valueOf(storedPort).toString()
- : ""; //$NON-NLS-1$
- portNumber.setText(portString);
+ } else if (storedPort != -1) { // if a legacy address:port
+ connection.setText(String.format("%s:%d", storedAddress, storedPort)); //$NON-NLS-1$
}
}
boolean updateThreadsOnSuspend = configuration.getAttribute(
@@ -560,12 +499,13 @@ public class GDBJtagDSFDebuggerTab extends AbstractLaunchConfigurationTab {
if (device instanceof IGDBJtagConnection) {
String conn = connection.getText().trim();
URI uri = new URI("gdb", conn, ""); //$NON-NLS-1$ //$NON-NLS-2$
+ configuration.setAttribute(IGDBJtagConstants.ATTR_PROTOCOL, protocol.getCombo().getText());
configuration.setAttribute(IGDBJtagConstants.ATTR_CONNECTION, uri.toString());
+ configuration.removeAttribute(IGDBJtagConstants.ATTR_IP_ADDRESS);
+ configuration.removeAttribute(IGDBJtagConstants.ATTR_PORT_NUMBER);
} else {
- String ip = ipAddress.getText().trim();
- configuration.setAttribute(IGDBJtagConstants.ATTR_IP_ADDRESS, ip);
- int port = Integer.valueOf(portNumber.getText().trim()).intValue();
- configuration.setAttribute(IGDBJtagConstants.ATTR_PORT_NUMBER, port);
+ configuration.removeAttribute(IGDBJtagConstants.ATTR_PROTOCOL);
+ configuration.removeAttribute(IGDBJtagConstants.ATTR_CONNECTION);
}
} catch (URISyntaxException e) {
Activator.log(e);
@@ -589,6 +529,7 @@ public class GDBJtagDSFDebuggerTab extends AbstractLaunchConfigurationTab {
configuration.setAttribute(IGDBJtagConstants.ATTR_USE_REMOTE_TARGET,
IGDBJtagConstants.DEFAULT_USE_REMOTE_TARGET);
+ configuration.setAttribute(IGDBJtagConstants.ATTR_JTAG_DEVICE_ID, DEFAULT_JTAG_DEVICE_ID);
configuration.setAttribute(ICDTLaunchConfigurationConstants.ATTR_DEBUGGER_START_MODE,
IGDBLaunchConfigurationConstants.DEBUGGER_MODE_REMOTE);
configuration.setAttribute(IGDBLaunchConfigurationConstants.ATTR_DEBUGGER_UPDATE_THREADLIST_ON_SUSPEND,
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag.ui/src/org/eclipse/cdt/debug/gdbjtag/ui/GDBJtagStartupTab.java b/jtag/org.eclipse.cdt.debug.gdbjtag.ui/src/org/eclipse/cdt/debug/gdbjtag/ui/GDBJtagStartupTab.java
index 988faef7a9c..c32ac9d5dfa 100644
--- a/jtag/org.eclipse.cdt.debug.gdbjtag.ui/src/org/eclipse/cdt/debug/gdbjtag/ui/GDBJtagStartupTab.java
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag.ui/src/org/eclipse/cdt/debug/gdbjtag/ui/GDBJtagStartupTab.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007 - 2017 QNX Software Systems and others.
+ * Copyright (c) 2007 - 2021 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -13,6 +13,8 @@
* Andy Jin - Hardware debugging UI improvements, bug 229946
* Andy Jin - Added DSF debugging, bug 248593
* John Dallaway - Execute run commands before resume, bug 525692
+ * John Dallaway - Eliminate deprecated API, bug 566462
+ * John Dallaway - Eliminate pixel-level sizing, bug 567662
*******************************************************************************/
package org.eclipse.cdt.debug.gdbjtag.ui;
@@ -31,8 +33,8 @@ import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
import org.eclipse.debug.ui.AbstractLaunchConfigurationTab;
import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.layout.PixelConverter;
import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.ScrolledComposite;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
@@ -56,8 +58,12 @@ import org.eclipse.ui.views.navigator.ResourceComparator;
public class GDBJtagStartupTab extends AbstractLaunchConfigurationTab {
- private static final String TAB_NAME = "Startup";
- private static final String TAB_ID = "org.eclipse.cdt.debug.gdbjtag.ui.startuptab";
+ private static final String TAB_NAME = Messages.getString("GDBJtagStartupTab.tabName"); //$NON-NLS-1$
+ private static final String TAB_ID = "org.eclipse.cdt.debug.gdbjtag.ui.startuptab"; //$NON-NLS-1$
+
+ private static final int TEXT_COMMAND_BOX_HEIGHT = 4; // 4 lines
+ private static final int TEXT_HEX_ADDRESS_WIDTH = 22; // 22 chars
+ private static final int TEXT_SHORT_INTEGER_WIDTH = 10; // 10 chars
Text initCommands;
Text delay;
@@ -110,22 +116,14 @@ public class GDBJtagStartupTab extends AbstractLaunchConfigurationTab {
@Override
public void createControl(Composite parent) {
- ScrolledComposite sc = new ScrolledComposite(parent, SWT.V_SCROLL | SWT.H_SCROLL);
- sc.setExpandHorizontal(true);
- sc.setExpandVertical(true);
- setControl(sc);
-
- Composite comp = new Composite(sc, SWT.NONE);
- sc.setContent(comp);
+ Composite comp = new Composite(parent, SWT.NONE);
+ setControl(comp);
GridLayout layout = new GridLayout();
comp.setLayout(layout);
createInitGroup(comp);
createLoadGroup(comp);
- createRunOptionGroup(comp);
createRunGroup(comp);
-
- sc.setMinSize(comp.computeSize(SWT.DEFAULT, SWT.DEFAULT));
}
private void browseButtonSelected(String title, Text text) {
@@ -144,7 +142,7 @@ public class GDBJtagStartupTab extends AbstractLaunchConfigurationTab {
ElementTreeSelectionDialog dialog = new ElementTreeSelectionDialog(getShell(), new WorkbenchLabelProvider(),
new WorkbenchContentProvider());
dialog.setTitle(title);
- dialog.setMessage(Messages.getString("GDBJtagStartupTab.FileBrowseWs_Message"));
+ dialog.setMessage(Messages.getString("GDBJtagStartupTab.FileBrowseWs_Message")); //$NON-NLS-1$
dialog.setInput(ResourcesPlugin.getWorkspace().getRoot());
dialog.setComparator(new ResourceComparator(ResourceComparator.NAME));
if (dialog.open() == IDialogConstants.OK_ID) {
@@ -157,12 +155,13 @@ public class GDBJtagStartupTab extends AbstractLaunchConfigurationTab {
}
public void createInitGroup(Composite parent) {
+ PixelConverter pc = new PixelConverter(parent);
Group group = new Group(parent, SWT.NONE);
GridLayout layout = new GridLayout();
group.setLayout(layout);
GridData gd = new GridData(GridData.FILL_HORIZONTAL);
group.setLayoutData(gd);
- group.setText(Messages.getString("GDBJtagStartupTab.initGroup_Text"));
+ group.setText(Messages.getString("GDBJtagStartupTab.initGroup_Text")); //$NON-NLS-1$
Composite comp = new Composite(group, SWT.NONE);
layout = new GridLayout();
@@ -171,7 +170,7 @@ public class GDBJtagStartupTab extends AbstractLaunchConfigurationTab {
comp.setLayout(layout);
doReset = new Button(comp, SWT.CHECK);
- doReset.setText(Messages.getString("GDBJtagStartupTab.doReset_Text"));
+ doReset.setText(Messages.getString("GDBJtagStartupTab.doReset_Text")); //$NON-NLS-1$
doReset.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
@@ -182,7 +181,7 @@ public class GDBJtagStartupTab extends AbstractLaunchConfigurationTab {
delay = new Text(comp, SWT.BORDER);
gd = new GridData();
gd.horizontalSpan = 1;
- gd.widthHint = 60;
+ gd.widthHint = pc.convertWidthInCharsToPixels(TEXT_SHORT_INTEGER_WIDTH);
delay.setLayoutData(gd);
delay.addVerifyListener(new VerifyListener() {
@Override
@@ -204,7 +203,7 @@ public class GDBJtagStartupTab extends AbstractLaunchConfigurationTab {
comp.setLayout(layout);
doHalt = new Button(comp, SWT.CHECK);
- doHalt.setText(Messages.getString("GDBJtagStartupTab.doHalt_Text"));
+ doHalt.setText(Messages.getString("GDBJtagStartupTab.doHalt_Text")); //$NON-NLS-1$
gd = new GridData();
gd.horizontalSpan = 1;
doHalt.setLayoutData(gd);
@@ -217,7 +216,7 @@ public class GDBJtagStartupTab extends AbstractLaunchConfigurationTab {
initCommands = new Text(group, SWT.MULTI | SWT.WRAP | SWT.BORDER | SWT.V_SCROLL);
gd = new GridData(GridData.FILL_BOTH);
- gd.heightHint = 60;
+ gd.heightHint = pc.convertHeightInCharsToPixels(TEXT_COMMAND_BOX_HEIGHT);
initCommands.setLayoutData(gd);
initCommands.addModifyListener(new ModifyListener() {
@Override
@@ -229,6 +228,7 @@ public class GDBJtagStartupTab extends AbstractLaunchConfigurationTab {
}
private void createLoadGroup(Composite parent) {
+ PixelConverter pc = new PixelConverter(parent);
Group group = new Group(parent, SWT.NONE);
GridLayout layout = new GridLayout();
group.setLayout(layout);
@@ -236,10 +236,10 @@ public class GDBJtagStartupTab extends AbstractLaunchConfigurationTab {
GridData gd = new GridData(GridData.FILL_HORIZONTAL);
gd.horizontalSpan = 1;
group.setLayoutData(gd);
- group.setText(Messages.getString("GDBJtagStartupTab.loadGroup_Text"));
+ group.setText(Messages.getString("GDBJtagStartupTab.loadGroup_Text")); //$NON-NLS-1$
loadImage = new Button(group, SWT.CHECK);
- loadImage.setText(Messages.getString("GDBJtagStartupTab.loadImage_Text"));
+ loadImage.setText(Messages.getString("GDBJtagStartupTab.loadImage_Text")); //$NON-NLS-1$
gd = new GridData();
gd.horizontalSpan = 4;
loadImage.setLayoutData(gd);
@@ -270,8 +270,8 @@ public class GDBJtagStartupTab extends AbstractLaunchConfigurationTab {
};
useProjectBinaryForImage = new Button(comp, SWT.RADIO);
- useProjectBinaryForImage.setText(Messages.getString("GDBJtagStartupTab.useProjectBinary_Label"));
- useProjectBinaryForImage.setToolTipText(Messages.getString("GDBJtagStartupTab.useProjectBinary_ToolTip"));
+ useProjectBinaryForImage.setText(Messages.getString("GDBJtagStartupTab.useProjectBinary_Label")); //$NON-NLS-1$
+ useProjectBinaryForImage.setToolTipText(Messages.getString("GDBJtagStartupTab.useProjectBinary_ToolTip")); //$NON-NLS-1$
gd = new GridData();
gd.horizontalSpan = 1;
useProjectBinaryForImage.setLayoutData(gd);
@@ -283,7 +283,7 @@ public class GDBJtagStartupTab extends AbstractLaunchConfigurationTab {
projBinaryLabel1.setLayoutData(gd);
useFileForImage = new Button(comp, SWT.RADIO);
- useFileForImage.setText(Messages.getString("GDBJtagStartupTab.useFile_Label"));
+ useFileForImage.setText(Messages.getString("GDBJtagStartupTab.useFile_Label")); //$NON-NLS-1$
gd = new GridData();
gd.horizontalSpan = 1;
useFileForImage.setLayoutData(gd);
@@ -300,34 +300,34 @@ public class GDBJtagStartupTab extends AbstractLaunchConfigurationTab {
}
});
- imageFileBrowseWs = createPushButton(comp, Messages.getString("GDBJtagStartupTab.FileBrowseWs_Label"), null);
+ imageFileBrowseWs = createPushButton(comp, Messages.getString("GDBJtagStartupTab.FileBrowseWs_Label"), null); //$NON-NLS-1$
imageFileBrowseWs.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
- browseWsButtonSelected(Messages.getString("GDBJtagStartupTab.imageFileBrowseWs_Title"), imageFileName);
+ browseWsButtonSelected(Messages.getString("GDBJtagStartupTab.imageFileBrowseWs_Title"), imageFileName); //$NON-NLS-1$
}
});
- imageFileBrowse = createPushButton(comp, Messages.getString("GDBJtagStartupTab.FileBrowse_Label"), null);
+ imageFileBrowse = createPushButton(comp, Messages.getString("GDBJtagStartupTab.FileBrowse_Label"), null); //$NON-NLS-1$
imageFileBrowse.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
- browseButtonSelected(Messages.getString("GDBJtagStartupTab.imageFileBrowse_Title"), imageFileName);
+ browseButtonSelected(Messages.getString("GDBJtagStartupTab.imageFileBrowse_Title"), imageFileName); //$NON-NLS-1$
}
});
imageOffsetLabel = new Label(comp, SWT.NONE);
- imageOffsetLabel.setText(Messages.getString("GDBJtagStartupTab.imageOffsetLabel_Text"));
+ imageOffsetLabel.setText(Messages.getString("GDBJtagStartupTab.imageOffsetLabel_Text")); //$NON-NLS-1$
imageOffset = new Text(comp, SWT.BORDER);
gd = new GridData();
gd.horizontalSpan = 1;
- gd.widthHint = 100;
+ gd.widthHint = pc.convertWidthInCharsToPixels(TEXT_HEX_ADDRESS_WIDTH);
imageOffset.setLayoutData(gd);
imageOffset.addVerifyListener(new VerifyListener() {
@Override
public void verifyText(VerifyEvent e) {
e.doit = (Character.isDigit(e.character) || Character.isISOControl(e.character)
- || "abcdef".contains(String.valueOf(e.character).toLowerCase()));
+ || "abcdef".contains(String.valueOf(e.character).toLowerCase())); //$NON-NLS-1$
}
});
imageOffset.addModifyListener(new ModifyListener() {
@@ -338,7 +338,7 @@ public class GDBJtagStartupTab extends AbstractLaunchConfigurationTab {
});
loadSymbols = new Button(group, SWT.CHECK);
- loadSymbols.setText(Messages.getString("GDBJtagStartupTab.loadSymbols_Text"));
+ loadSymbols.setText(Messages.getString("GDBJtagStartupTab.loadSymbols_Text")); //$NON-NLS-1$
gd = new GridData();
gd.horizontalSpan = 4;
loadSymbols.setLayoutData(gd);
@@ -357,8 +357,8 @@ public class GDBJtagStartupTab extends AbstractLaunchConfigurationTab {
comp.setLayout(layout);
useProjectBinaryForSymbols = new Button(comp, SWT.RADIO);
- useProjectBinaryForSymbols.setText(Messages.getString("GDBJtagStartupTab.useProjectBinary_Label"));
- useProjectBinaryForSymbols.setToolTipText(Messages.getString("GDBJtagStartupTab.useProjectBinary_ToolTip"));
+ useProjectBinaryForSymbols.setText(Messages.getString("GDBJtagStartupTab.useProjectBinary_Label")); //$NON-NLS-1$
+ useProjectBinaryForSymbols.setToolTipText(Messages.getString("GDBJtagStartupTab.useProjectBinary_ToolTip")); //$NON-NLS-1$
gd = new GridData();
gd.horizontalSpan = 1;
useProjectBinaryForSymbols.setLayoutData(gd);
@@ -370,7 +370,7 @@ public class GDBJtagStartupTab extends AbstractLaunchConfigurationTab {
projBinaryLabel2.setLayoutData(gd);
useFileForSymbols = new Button(comp, SWT.RADIO);
- useFileForSymbols.setText(Messages.getString("GDBJtagStartupTab.useFile_Label"));
+ useFileForSymbols.setText(Messages.getString("GDBJtagStartupTab.useFile_Label")); //$NON-NLS-1$
gd = new GridData();
gd.horizontalSpan = 1;
useFileForSymbols.setLayoutData(gd);
@@ -387,35 +387,35 @@ public class GDBJtagStartupTab extends AbstractLaunchConfigurationTab {
}
});
- symbolsFileBrowseWs = createPushButton(comp, Messages.getString("GDBJtagStartupTab.FileBrowseWs_Label"), null);
+ symbolsFileBrowseWs = createPushButton(comp, Messages.getString("GDBJtagStartupTab.FileBrowseWs_Label"), null); //$NON-NLS-1$
symbolsFileBrowseWs.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
- browseWsButtonSelected(Messages.getString("GDBJtagStartupTab.symbolsFileBrowseWs_Title"),
+ browseWsButtonSelected(Messages.getString("GDBJtagStartupTab.symbolsFileBrowseWs_Title"), //$NON-NLS-1$
symbolsFileName);
}
});
- symbolsFileBrowse = createPushButton(comp, Messages.getString("GDBJtagStartupTab.FileBrowse_Label"), null);
+ symbolsFileBrowse = createPushButton(comp, Messages.getString("GDBJtagStartupTab.FileBrowse_Label"), null); //$NON-NLS-1$
symbolsFileBrowse.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
- browseButtonSelected(Messages.getString("GDBJtagStartupTab.symbolsFileBrowse_Title"), symbolsFileName);
+ browseButtonSelected(Messages.getString("GDBJtagStartupTab.symbolsFileBrowse_Title"), symbolsFileName); //$NON-NLS-1$
}
});
symbolsOffsetLabel = new Label(comp, SWT.NONE);
- symbolsOffsetLabel.setText(Messages.getString("GDBJtagStartupTab.symbolsOffsetLabel_Text"));
+ symbolsOffsetLabel.setText(Messages.getString("GDBJtagStartupTab.symbolsOffsetLabel_Text")); //$NON-NLS-1$
symbolsOffset = new Text(comp, SWT.BORDER);
gd = new GridData();
gd.horizontalSpan = 1;
- gd.widthHint = 100;
+ gd.widthHint = pc.convertWidthInCharsToPixels(TEXT_HEX_ADDRESS_WIDTH);
symbolsOffset.setLayoutData(gd);
symbolsOffset.addVerifyListener(new VerifyListener() {
@Override
public void verifyText(VerifyEvent e) {
e.doit = (Character.isDigit(e.character) || Character.isISOControl(e.character)
- || "abcdef".contains(String.valueOf(e.character).toLowerCase()));
+ || "abcdef".contains(String.valueOf(e.character).toLowerCase())); //$NON-NLS-1$
}
});
symbolsOffset.addModifyListener(new ModifyListener() {
@@ -439,12 +439,8 @@ public class GDBJtagStartupTab extends AbstractLaunchConfigurationTab {
symbolsFileBrowse.setEnabled(enabled);
}
- /** Implementation migrated to {@link #createRunGroup(Composite)} */
- @Deprecated
- public void createRunOptionGroup(Composite parent) {
- }
-
public void createRunGroup(Composite parent) {
+ PixelConverter pc = new PixelConverter(parent);
Group group = new Group(parent, SWT.NONE);
GridLayout layout = new GridLayout();
group.setLayout(layout);
@@ -452,10 +448,10 @@ public class GDBJtagStartupTab extends AbstractLaunchConfigurationTab {
GridData gd = new GridData(GridData.FILL_HORIZONTAL);
gd.horizontalSpan = 1;
group.setLayoutData(gd);
- group.setText(Messages.getString("GDBJtagStartupTab.runGroup_Text"));
+ group.setText(Messages.getString("GDBJtagStartupTab.runGroup_Text")); //$NON-NLS-1$
setPcRegister = new Button(group, SWT.CHECK);
- setPcRegister.setText(Messages.getString("GDBJtagStartupTab.setPcRegister_Text"));
+ setPcRegister.setText(Messages.getString("GDBJtagStartupTab.setPcRegister_Text")); //$NON-NLS-1$
gd = new GridData();
gd.horizontalSpan = 1;
setPcRegister.setLayoutData(gd);
@@ -470,13 +466,13 @@ public class GDBJtagStartupTab extends AbstractLaunchConfigurationTab {
pcRegister = new Text(group, SWT.BORDER);
gd = new GridData();
gd.horizontalSpan = 1;
- gd.widthHint = 100;
+ gd.widthHint = pc.convertWidthInCharsToPixels(TEXT_HEX_ADDRESS_WIDTH);
pcRegister.setLayoutData(gd);
pcRegister.addVerifyListener(new VerifyListener() {
@Override
public void verifyText(VerifyEvent e) {
e.doit = (Character.isDigit(e.character) || Character.isISOControl(e.character)
- || "abcdef".contains(String.valueOf(e.character).toLowerCase()));
+ || "abcdef".contains(String.valueOf(e.character).toLowerCase())); //$NON-NLS-1$
}
});
pcRegister.addModifyListener(new ModifyListener() {
@@ -487,7 +483,7 @@ public class GDBJtagStartupTab extends AbstractLaunchConfigurationTab {
});
setStopAt = new Button(group, SWT.CHECK);
- setStopAt.setText(Messages.getString("GDBJtagStartupTab.setStopAt_Text"));
+ setStopAt.setText(Messages.getString("GDBJtagStartupTab.setStopAt_Text")); //$NON-NLS-1$
gd = new GridData();
gd.horizontalSpan = 1;
setStopAt.setLayoutData(gd);
@@ -500,9 +496,8 @@ public class GDBJtagStartupTab extends AbstractLaunchConfigurationTab {
});
stopAt = new Text(group, SWT.BORDER);
- gd = new GridData();
+ gd = new GridData(GridData.FILL_HORIZONTAL);
gd.horizontalSpan = 1;
- gd.widthHint = 100;
stopAt.setLayoutData(gd);
stopAt.addModifyListener(new ModifyListener() {
@Override
@@ -514,7 +509,7 @@ public class GDBJtagStartupTab extends AbstractLaunchConfigurationTab {
runCommands = new Text(group, SWT.MULTI | SWT.WRAP | SWT.BORDER | SWT.V_SCROLL);
gd = new GridData(GridData.FILL_BOTH);
gd.horizontalSpan = 2;
- gd.heightHint = 60;
+ gd.heightHint = pc.convertHeightInCharsToPixels(TEXT_COMMAND_BOX_HEIGHT);
runCommands.setLayoutData(gd);
runCommands.addModifyListener(new ModifyListener() {
@Override
@@ -524,7 +519,7 @@ public class GDBJtagStartupTab extends AbstractLaunchConfigurationTab {
});
setResume = new Button(group, SWT.CHECK);
- setResume.setText(Messages.getString("GDBJtagStartupTab.setResume_Text"));
+ setResume.setText(Messages.getString("GDBJtagStartupTab.setResume_Text")); //$NON-NLS-1$
gd = new GridData();
gd.horizontalSpan = 1;
setResume.setLayoutData(gd);
@@ -584,7 +579,7 @@ public class GDBJtagStartupTab extends AbstractLaunchConfigurationTab {
if (loadImage.getSelection()) {
if (!useProjectBinaryForImage.getSelection()) {
if (imageFileName.getText().trim().length() == 0) {
- setErrorMessage(Messages.getString("GDBJtagStartupTab.imageFileName_not_specified"));
+ setErrorMessage(Messages.getString("GDBJtagStartupTab.imageFileName_not_specified")); //$NON-NLS-1$
return false;
}
@@ -593,11 +588,11 @@ public class GDBJtagStartupTab extends AbstractLaunchConfigurationTab {
.performStringSubstitution(imageFileName.getText().trim());
IPath filePath = new Path(path);
if (!filePath.toFile().exists()) {
- setErrorMessage(Messages.getString("GDBJtagStartupTab.imageFileName_does_not_exist"));
+ setErrorMessage(Messages.getString("GDBJtagStartupTab.imageFileName_does_not_exist")); //$NON-NLS-1$
return false;
}
} catch (CoreException e) { // string substitution throws this if expression doesn't resolve
- setErrorMessage(Messages.getString("GDBJtagStartupTab.imageFileName_does_not_exist"));
+ setErrorMessage(Messages.getString("GDBJtagStartupTab.imageFileName_does_not_exist")); //$NON-NLS-1$
return false;
}
}
@@ -607,7 +602,7 @@ public class GDBJtagStartupTab extends AbstractLaunchConfigurationTab {
if (loadSymbols.getSelection()) {
if (!useProjectBinaryForSymbols.getSelection()) {
if (symbolsFileName.getText().trim().length() == 0) {
- setErrorMessage(Messages.getString("GDBJtagStartupTab.symbolsFileName_not_specified"));
+ setErrorMessage(Messages.getString("GDBJtagStartupTab.symbolsFileName_not_specified")); //$NON-NLS-1$
return false;
}
@@ -616,11 +611,11 @@ public class GDBJtagStartupTab extends AbstractLaunchConfigurationTab {
.performStringSubstitution(symbolsFileName.getText().trim());
IPath filePath = new Path(path);
if (!filePath.toFile().exists()) {
- setErrorMessage(Messages.getString("GDBJtagStartupTab.symbolsFileName_does_not_exist"));
+ setErrorMessage(Messages.getString("GDBJtagStartupTab.symbolsFileName_does_not_exist")); //$NON-NLS-1$
return false;
}
} catch (CoreException e) { // string substitution throws this if expression doesn't resolve
- setErrorMessage(Messages.getString("GDBJtagStartupTab.symbolsFileName_does_not_exist"));
+ setErrorMessage(Messages.getString("GDBJtagStartupTab.symbolsFileName_does_not_exist")); //$NON-NLS-1$
return false;
}
}
@@ -630,7 +625,7 @@ public class GDBJtagStartupTab extends AbstractLaunchConfigurationTab {
if (setPcRegister.getSelection()) {
if (pcRegister.getText().trim().length() == 0) {
- setErrorMessage(Messages.getString("GDBJtagStartupTab.pcRegister_not_specified"));
+ setErrorMessage(Messages.getString("GDBJtagStartupTab.pcRegister_not_specified")); //$NON-NLS-1$
return false;
}
} else {
@@ -638,7 +633,7 @@ public class GDBJtagStartupTab extends AbstractLaunchConfigurationTab {
}
if (setStopAt.getSelection()) {
if (stopAt.getText().trim().length() == 0) {
- setErrorMessage(Messages.getString("GDBJtagStartupTab.stopAt_not_specified"));
+ setErrorMessage(Messages.getString("GDBJtagStartupTab.stopAt_not_specified")); //$NON-NLS-1$
}
} else {
setErrorMessage(null);
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag.ui/src/org/eclipse/cdt/debug/gdbjtag/ui/JtagUi.properties b/jtag/org.eclipse.cdt.debug.gdbjtag.ui/src/org/eclipse/cdt/debug/gdbjtag/ui/JtagUi.properties
index 032bc3e9bc9..1d62a2f05b2 100644
--- a/jtag/org.eclipse.cdt.debug.gdbjtag.ui/src/org/eclipse/cdt/debug/gdbjtag/ui/JtagUi.properties
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag.ui/src/org/eclipse/cdt/debug/gdbjtag/ui/JtagUi.properties
@@ -29,6 +29,7 @@ GDBJtagStartupTab.FileBrowseWs_Label=Workspace...
GDBJtagStartupTab.FileBrowseWs_Message=Select a workspace resource
GDBJtagStartupTab.FileBrowse_Label=File System...
GDBJtagStartupTab.FileBrowse_Message=Select a file from file system
+GDBJtagStartupTab.tabName=Startup
GDBJtagStartupTab.loadSymbols_Text=Load symbols
GDBJtagStartupTab.symbolsLabel_Text=Symbols file name:
GDBJtagStartupTab.symbolsFileBrowseWs_Title=Select symbols file
@@ -64,10 +65,16 @@ GDBJtagDebuggerTab.miProtocolLabel=Protocol Version:
GDBJtagDebuggerTab.verboseModeLabel=Verbose console mode
GDBJtagDebuggerTab.remoteGroup_Text=Remote Target
GDBJtagDebuggerTab.useRemote_Text=Use remote target
-GDBJtagDebuggerTab.jtagDeviceLabel=JTAG Device:
+GDBJtagDebuggerTab.useRemoteTooltip=Refer to the GDB documentation section "Connecting to a Remote Target".
+GDBJtagDebuggerTab.jtagDeviceLabel=Debug server:
+GDBJtagDebuggerTab.jtagDeviceTooltip=The debug server to which GDB will connect. The debug server must be listening for a connection prior to launch of the debug session.
GDBJtagDebuggerTab.ipAddressLabel=Host name or IP address:
GDBJtagDebuggerTab.portNumberLabel=Port number:
-GDBJtagDebuggerTab.connectionLabel=GDB Connection String:
+GDBJtagDebuggerTab.protocolLabel=Protocol:
+GDBJtagDebuggerTab.protocolTooltip=The protocol used by GDB to communicate with the debug server.
+GDBJtagDebuggerTab.connectionLabel=Connection:
+GDBJtagDebuggerTab.connectionTooltip=The protocol-specific connection parameters used to locate the debug server. Examples:\n \u2022 192.168.0.100:1234\n \u2022 /dev/ttyS0\n \u2022 COM1\n \u2022 \\\\.\\COM10
GDBJtagDebuggerTab.update_thread_list_on_suspend=Force thread list update on suspend
-GDBJtagDebuggerTab.remoteTimeout=Remote timeout (seconds):
+GDBJtagDebuggerTab.remoteTimeout=Timeout (seconds):
GDBJtagDebuggerTab.remoteTimeoutTooltip=Timeout for the remote target to respond. If unchecked, uses GDB default value. See GDB's help for "set remotetimeout num".
+GDBJtagDebuggerTab.tabName=Debugger
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag/.settings/org.eclipse.core.resources.prefs b/jtag/org.eclipse.cdt.debug.gdbjtag/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag/.settings/org.eclipse.jdt.core.prefs b/jtag/org.eclipse.cdt.debug.gdbjtag/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 2b6ecff8a01..00000000000
--- a/jtag/org.eclipse.cdt.debug.gdbjtag/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,464 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
-org.eclipse.jdt.core.codeComplete.argumentPrefixes=
-org.eclipse.jdt.core.codeComplete.argumentSuffixes=
-org.eclipse.jdt.core.codeComplete.fieldPrefixes=
-org.eclipse.jdt.core.codeComplete.fieldSuffixes=
-org.eclipse.jdt.core.codeComplete.localPrefixes=
-org.eclipse.jdt.core.codeComplete.localSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
-org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
-org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
-org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
-org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
-org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
-org.eclipse.jdt.core.compiler.problem.APILeak=warning
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
-org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
-org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
-org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
-org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
-org.eclipse.jdt.core.compiler.problem.nullReference=error
-org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
-org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
-org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
-org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
-org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
-org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
-org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
-org.eclipse.jdt.core.formatter.align_with_spaces=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
-org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
-org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
-org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
-org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=0
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
-org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
-org.eclipse.jdt.core.formatter.comment.format_block_comments=false
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
-org.eclipse.jdt.core.formatter.comment.format_line_comments=false
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
-org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
-org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
-org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.join_lines_in_comments=true
-org.eclipse.jdt.core.formatter.join_wrapped_lines=true
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=120
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_on_off_tags=true
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
-org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
-org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag/.settings/org.eclipse.jdt.ui.prefs b/jtag/org.eclipse.cdt.debug.gdbjtag/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index e44576346c4..00000000000
--- a/jtag/org.eclipse.cdt.debug.gdbjtag/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,133 +0,0 @@
-cleanup.add_default_serial_version_id=true
-cleanup.add_generated_serial_version_id=false
-cleanup.add_missing_annotations=true
-cleanup.add_missing_deprecated_annotations=true
-cleanup.add_missing_methods=false
-cleanup.add_missing_nls_tags=false
-cleanup.add_missing_override_annotations=true
-cleanup.add_missing_override_annotations_interface_methods=true
-cleanup.add_serial_version_id=false
-cleanup.always_use_blocks=true
-cleanup.always_use_parentheses_in_expressions=false
-cleanup.always_use_this_for_non_static_field_access=false
-cleanup.always_use_this_for_non_static_method_access=false
-cleanup.convert_functional_interfaces=false
-cleanup.convert_to_enhanced_for_loop=false
-cleanup.correct_indentation=false
-cleanup.format_source_code=true
-cleanup.format_source_code_changes_only=false
-cleanup.insert_inferred_type_arguments=false
-cleanup.make_local_variable_final=true
-cleanup.make_parameters_final=false
-cleanup.make_private_fields_final=true
-cleanup.make_type_abstract_if_missing_method=false
-cleanup.make_variable_declarations_final=false
-cleanup.never_use_blocks=false
-cleanup.never_use_parentheses_in_expressions=true
-cleanup.organize_imports=true
-cleanup.qualify_static_field_accesses_with_declaring_class=false
-cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-cleanup.qualify_static_member_accesses_with_declaring_class=false
-cleanup.qualify_static_method_accesses_with_declaring_class=false
-cleanup.remove_private_constructors=true
-cleanup.remove_redundant_modifiers=false
-cleanup.remove_redundant_semicolons=true
-cleanup.remove_redundant_type_arguments=true
-cleanup.remove_trailing_whitespaces=true
-cleanup.remove_trailing_whitespaces_all=true
-cleanup.remove_trailing_whitespaces_ignore_empty=false
-cleanup.remove_unnecessary_casts=true
-cleanup.remove_unnecessary_nls_tags=false
-cleanup.remove_unused_imports=true
-cleanup.remove_unused_local_variables=false
-cleanup.remove_unused_private_fields=true
-cleanup.remove_unused_private_members=false
-cleanup.remove_unused_private_methods=true
-cleanup.remove_unused_private_types=true
-cleanup.sort_members=false
-cleanup.sort_members_all=false
-cleanup.use_anonymous_class_creation=false
-cleanup.use_blocks=false
-cleanup.use_blocks_only_for_return_and_throw=false
-cleanup.use_lambda=true
-cleanup.use_parentheses_in_expressions=false
-cleanup.use_this_for_non_static_field_access=false
-cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-cleanup.use_this_for_non_static_method_access=false
-cleanup.use_this_for_non_static_method_access_only_if_necessary=true
-cleanup_profile=_CDT
-cleanup_settings_version=2
-eclipse.preferences.version=1
-editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=_CDT
-formatter_settings_version=14
-internal.default.compliance=user
-org.eclipse.jdt.ui.exception.name=e
-org.eclipse.jdt.ui.gettersetter.use.is=true
-org.eclipse.jdt.ui.ignorelowercasenames=true
-org.eclipse.jdt.ui.importorder=java;javax;org;com;
-org.eclipse.jdt.ui.keywordthis=false
-org.eclipse.jdt.ui.ondemandthreshold=1000
-org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.staticondemandthreshold=1000
-org.eclipse.jdt.ui.text.custom_code_templates=
-sp_cleanup.add_default_serial_version_id=true
-sp_cleanup.add_generated_serial_version_id=false
-sp_cleanup.add_missing_annotations=true
-sp_cleanup.add_missing_deprecated_annotations=true
-sp_cleanup.add_missing_methods=false
-sp_cleanup.add_missing_nls_tags=false
-sp_cleanup.add_missing_override_annotations=true
-sp_cleanup.add_missing_override_annotations_interface_methods=true
-sp_cleanup.add_serial_version_id=false
-sp_cleanup.always_use_blocks=true
-sp_cleanup.always_use_parentheses_in_expressions=false
-sp_cleanup.always_use_this_for_non_static_field_access=false
-sp_cleanup.always_use_this_for_non_static_method_access=false
-sp_cleanup.convert_functional_interfaces=false
-sp_cleanup.convert_to_enhanced_for_loop=false
-sp_cleanup.correct_indentation=false
-sp_cleanup.format_source_code=true
-sp_cleanup.format_source_code_changes_only=false
-sp_cleanup.insert_inferred_type_arguments=false
-sp_cleanup.make_local_variable_final=true
-sp_cleanup.make_parameters_final=false
-sp_cleanup.make_private_fields_final=true
-sp_cleanup.make_type_abstract_if_missing_method=false
-sp_cleanup.make_variable_declarations_final=false
-sp_cleanup.never_use_blocks=false
-sp_cleanup.never_use_parentheses_in_expressions=true
-sp_cleanup.on_save_use_additional_actions=true
-sp_cleanup.organize_imports=true
-sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
-sp_cleanup.remove_private_constructors=true
-sp_cleanup.remove_redundant_modifiers=false
-sp_cleanup.remove_redundant_semicolons=true
-sp_cleanup.remove_redundant_type_arguments=true
-sp_cleanup.remove_trailing_whitespaces=true
-sp_cleanup.remove_trailing_whitespaces_all=true
-sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
-sp_cleanup.remove_unnecessary_casts=true
-sp_cleanup.remove_unnecessary_nls_tags=false
-sp_cleanup.remove_unused_imports=true
-sp_cleanup.remove_unused_local_variables=false
-sp_cleanup.remove_unused_private_fields=true
-sp_cleanup.remove_unused_private_members=false
-sp_cleanup.remove_unused_private_methods=true
-sp_cleanup.remove_unused_private_types=true
-sp_cleanup.sort_members=false
-sp_cleanup.sort_members_all=false
-sp_cleanup.use_anonymous_class_creation=false
-sp_cleanup.use_blocks=false
-sp_cleanup.use_blocks_only_for_return_and_throw=false
-sp_cleanup.use_lambda=true
-sp_cleanup.use_parentheses_in_expressions=false
-sp_cleanup.use_this_for_non_static_field_access=false
-sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-sp_cleanup.use_this_for_non_static_method_access=false
-sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag/META-INF/MANIFEST.MF b/jtag/org.eclipse.cdt.debug.gdbjtag/META-INF/MANIFEST.MF
index 5086fd887c2..7fdc864af73 100644
--- a/jtag/org.eclipse.cdt.debug.gdbjtag/META-INF/MANIFEST.MF
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag/META-INF/MANIFEST.MF
@@ -2,6 +2,6 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.debug.gdbjtag
-Bundle-Version: 7.0.100.qualifier
+Bundle-Version: 7.0.800.qualifier
Bundle-Vendor: %providerName
Bundle-Localization: plugin
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag/about.html b/jtag/org.eclipse.cdt.debug.gdbjtag/about.html
index 164f781a8fd..b3134865230 100644
--- a/jtag/org.eclipse.cdt.debug.gdbjtag/about.html
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag/about.mappings b/jtag/org.eclipse.cdt.debug.gdbjtag/about.mappings
index 0824105e69d..936a8039c3e 100644
--- a/jtag/org.eclipse.cdt.debug.gdbjtag/about.mappings
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag/about.mappings
@@ -4,6 +4,6 @@
# This file does not need to be translated.
# The following should contain the build version.
-# e.g. "0=20020612"
-# This value will be added automaticaly via the build scripts
-0=@build@ \ No newline at end of file
+# e.g. "0=20200106-1728"
+# This value will be added automatically via the build scripts
+0=${buildId}
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag/about.properties b/jtag/org.eclipse.cdt.debug.gdbjtag/about.properties
index 232e4df44e2..80fd118f339 100644
--- a/jtag/org.eclipse.cdt.debug.gdbjtag/about.properties
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag/about.properties
@@ -1,15 +1,15 @@
###############################################################################
-# Copyright (c) 2005, 2007 IBM Corporation and others.
+# Copyright (c) 2007, 2022 Contributors to the Eclipse Foundation
#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
#
-# SPDX-License-Identifier: EPL-2.0
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
#
-# Contributors:
-# IBM Corporation - initial API and implementation
+# SPDX-License-Identifier: EPL-2.0
###############################################################################
# about.properties
# contains externalized strings for about.ini
@@ -18,10 +18,15 @@
# This file should be translated.
# NOTE TO TRANSLATOR: Please do not translate the featureVersion variable.
-blurb=Eclipse GDB Hardware Debugging\n\
+
+blurb=C/C++ GDB Hardware Debugging\n\
\n\
Version: {featureVersion}\n\
Build id: {0}\n\
\n\
-(c) Copyright Eclipse contributors and others, 2007, 2010.\n\
+Copyright (c) 2007, 2022 Contributors to the Eclipse Foundation
+\n\
+See the NOTICE file(s) distributed with this work for additional\n\
+information regarding copyright ownership.\n\
+\n\
Visit http://www.eclipse.org/cdt
diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag/pom.xml b/jtag/org.eclipse.cdt.debug.gdbjtag/pom.xml
new file mode 100644
index 00000000000..ee634d5dc34
--- /dev/null
+++ b/jtag/org.eclipse.cdt.debug.gdbjtag/pom.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2011, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
+<project
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+ xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.cdt</groupId>
+ <artifactId>cdt-parent</artifactId>
+ <version>10.7.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent>
+
+ <artifactId>org.eclipse.cdt.debug.gdbjtag</artifactId>
+ <packaging>eclipse-plugin</packaging>
+ <version>7.0.800-SNAPSHOT</version>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-source-plugin</artifactId>
+ <version>${tycho-version}</version>
+ <executions>
+ <execution>
+ <id>plugin-source</id>
+ <phase>none</phase>
+ </execution>
+ <execution>
+ <id>attach-source</id>
+ <phase>none</phase>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/jtag/pom.xml b/jtag/pom.xml
index 3fe4bc3512d..07cbb140972 100644
--- a/jtag/pom.xml
+++ b/jtag/pom.xml
@@ -1,4 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2017, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
@@ -7,7 +17,7 @@
<parent>
<groupId>org.eclipse.cdt</groupId>
<artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
+ <version>10.7.0-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.cdt.jtag-parent</artifactId>
diff --git a/launch/org.eclipse.cdt.docker.launcher-feature/.settings/org.eclipse.core.resources.prefs b/launch/org.eclipse.cdt.docker.launcher-feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/launch/org.eclipse.cdt.docker.launcher-feature/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/launch/org.eclipse.cdt.docker.launcher-feature/feature.xml b/launch/org.eclipse.cdt.docker.launcher-feature/feature.xml
index 52043a70c28..194a1194aa2 100644
--- a/launch/org.eclipse.cdt.docker.launcher-feature/feature.xml
+++ b/launch/org.eclipse.cdt.docker.launcher-feature/feature.xml
@@ -1,8 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2015, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<feature
id="org.eclipse.cdt.docker.launcher"
label="%featureName"
- version="9.10.0.qualifier"
+ version="10.7.0.qualifier"
provider-name="%provider"
license-feature="org.eclipse.license"
license-feature-version="0.0.0">
@@ -20,8 +30,7 @@
</license>
<requires>
- <import plugin="org.eclipse.linuxtools.docker.core"/>
- <import plugin="org.eclipse.linuxtools.docker.ui"/>
+ <import feature="org.eclipse.linuxtools.docker.feature" version="5.6.0" match="greaterOrEqual"/>
</requires>
<plugin
diff --git a/launch/org.eclipse.cdt.docker.launcher-feature/pom.xml b/launch/org.eclipse.cdt.docker.launcher-feature/pom.xml
index 9ba01fc8ad4..96ffed3295e 100644
--- a/launch/org.eclipse.cdt.docker.launcher-feature/pom.xml
+++ b/launch/org.eclipse.cdt.docker.launcher-feature/pom.xml
@@ -1,4 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2015, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
@@ -7,7 +17,7 @@
<parent>
<groupId>org.eclipse.cdt</groupId>
<artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
+ <version>10.7.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
diff --git a/launch/org.eclipse.cdt.docker.launcher/.classpath b/launch/org.eclipse.cdt.docker.launcher/.classpath
index eca7bdba8f0..e801ebfb468 100644
--- a/launch/org.eclipse.cdt.docker.launcher/.classpath
+++ b/launch/org.eclipse.cdt.docker.launcher/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/launch/org.eclipse.cdt.docker.launcher/.project b/launch/org.eclipse.cdt.docker.launcher/.project
index 709ce94ecce..10f2488449b 100644
--- a/launch/org.eclipse.cdt.docker.launcher/.project
+++ b/launch/org.eclipse.cdt.docker.launcher/.project
@@ -20,9 +20,15 @@
<arguments>
</arguments>
</buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.pde.PluginNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
</natures>
</projectDescription>
diff --git a/launch/org.eclipse.cdt.docker.launcher/.settings/org.eclipse.core.resources.prefs b/launch/org.eclipse.cdt.docker.launcher/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/launch/org.eclipse.cdt.docker.launcher/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/launch/org.eclipse.cdt.docker.launcher/.settings/org.eclipse.jdt.core.prefs b/launch/org.eclipse.cdt.docker.launcher/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/launch/org.eclipse.cdt.docker.launcher/.settings/org.eclipse.jdt.core.prefs
+++ b/launch/org.eclipse.cdt.docker.launcher/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/launch/org.eclipse.cdt.docker.launcher/.settings/org.eclipse.jdt.ui.prefs b/launch/org.eclipse.cdt.docker.launcher/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/launch/org.eclipse.cdt.docker.launcher/.settings/org.eclipse.jdt.ui.prefs
+++ b/launch/org.eclipse.cdt.docker.launcher/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/launch/org.eclipse.cdt.docker.launcher/META-INF/MANIFEST.MF b/launch/org.eclipse.cdt.docker.launcher/META-INF/MANIFEST.MF
index d35f850b571..2f27aba1f8d 100644
--- a/launch/org.eclipse.cdt.docker.launcher/META-INF/MANIFEST.MF
+++ b/launch/org.eclipse.cdt.docker.launcher/META-INF/MANIFEST.MF
@@ -2,14 +2,14 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %Plugin.name
Bundle-SymbolicName: org.eclipse.cdt.docker.launcher;singleton:=true
-Bundle-Version: 1.2.400.qualifier
+Bundle-Version: 1.3.400.qualifier
Bundle-Activator: org.eclipse.cdt.docker.launcher.DockerLaunchUIPlugin
Bundle-Vendor: %Plugin.vendor
Bundle-Localization: plugin
Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime,
- org.eclipse.linuxtools.docker.core;bundle-version="[4.0.0,5.0.0)",
- org.eclipse.linuxtools.docker.ui;bundle-version="[4.0.0,5.0.0)",
+ org.eclipse.linuxtools.docker.core;bundle-version="[5.0.0,6.0.0)",
+ org.eclipse.linuxtools.docker.ui;bundle-version="[5.0.0,6.0.0)",
org.eclipse.cdt.launch;bundle-version="7.1.0",
org.eclipse.debug.core;bundle-version="3.9.1",
org.eclipse.debug.ui;bundle-version="3.10.1",
@@ -30,7 +30,7 @@ Require-Bundle: org.eclipse.ui,
org.eclipse.core.databinding.property;bundle-version="1.6.0",
org.eclipse.launchbar.ui;bundle-version="2.2.0",
com.google.gson
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-ActivationPolicy: lazy
Export-Package: org.eclipse.cdt.docker.launcher,
org.eclipse.cdt.internal.docker.launcher;x-internal:=true,
diff --git a/launch/org.eclipse.cdt.docker.launcher/about.html b/launch/org.eclipse.cdt.docker.launcher/about.html
index 164f781a8fd..b3134865230 100644
--- a/launch/org.eclipse.cdt.docker.launcher/about.html
+++ b/launch/org.eclipse.cdt.docker.launcher/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/launch/org.eclipse.cdt.docker.launcher/about.ini b/launch/org.eclipse.cdt.docker.launcher/about.ini
new file mode 100644
index 00000000000..e07a7bb377e
--- /dev/null
+++ b/launch/org.eclipse.cdt.docker.launcher/about.ini
@@ -0,0 +1,24 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%blurb
+
+# Property "windowImage" contains path to window icon (16x16)
+# needed for primary features only
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=cdt_logo_icon32.png
+
+# Property "aboutImage" contains path to product image (500x330 or 115x164)
+# needed for primary features only
+
+# Property "appName" contains name of the application (translated)
+# needed for primary features only
+
+# Property "welcomePerspective" contains the id of the perspective in which the
+# welcome page is to be opened.
+# optional
diff --git a/launch/org.eclipse.cdt.docker.launcher/about.mappings b/launch/org.eclipse.cdt.docker.launcher/about.mappings
new file mode 100644
index 00000000000..936a8039c3e
--- /dev/null
+++ b/launch/org.eclipse.cdt.docker.launcher/about.mappings
@@ -0,0 +1,9 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+# The following should contain the build version.
+# e.g. "0=20200106-1728"
+# This value will be added automatically via the build scripts
+0=${buildId}
diff --git a/launch/org.eclipse.cdt.docker.launcher/about.properties b/launch/org.eclipse.cdt.docker.launcher/about.properties
new file mode 100644
index 00000000000..f83ce303065
--- /dev/null
+++ b/launch/org.eclipse.cdt.docker.launcher/about.properties
@@ -0,0 +1,32 @@
+###############################################################################
+# Copyright (c) 2015, 2022 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+# about.properties
+# contains externalized strings for about.ini
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# fill-ins are supplied by about.mappings
+# This file should be translated.
+# NOTE TO TRANSLATOR: Please do not translate the featureVersion variable.
+
+
+blurb=C/C++ Docker Container Launch Support\n\
+\n\
+Version: {featureVersion}\n\
+Build id: {0}\n\
+\n\
+Copyright (c) 2015, 2022 Contributors to the Eclipse Foundation
+\n\
+See the NOTICE file(s) distributed with this work for additional\n\
+information regarding copyright ownership.\n\
+\n\
+Visit http://www.eclipse.org/cdt
diff --git a/launch/org.eclipse.cdt.docker.launcher/build.properties b/launch/org.eclipse.cdt.docker.launcher/build.properties
index d78771edb1d..1ebebe97c3a 100644
--- a/launch/org.eclipse.cdt.docker.launcher/build.properties
+++ b/launch/org.eclipse.cdt.docker.launcher/build.properties
@@ -18,5 +18,9 @@ bin.includes = plugin.xml,\
.,\
plugin.properties,\
about.html,\
- icons/
+ icons/,\
+ cdt_logo_icon32.png,\
+ about.properties,\
+ about.mappings,\
+ about.ini
src.includes = about.html
diff --git a/launch/org.eclipse.cdt.docker.launcher/cdt_logo_icon32.png b/launch/org.eclipse.cdt.docker.launcher/cdt_logo_icon32.png
new file mode 100644
index 00000000000..470ca81b327
--- /dev/null
+++ b/launch/org.eclipse.cdt.docker.launcher/cdt_logo_icon32.png
Binary files differ
diff --git a/launch/org.eclipse.cdt.docker.launcher/plugin.xml b/launch/org.eclipse.cdt.docker.launcher/plugin.xml
index 76a4658bdd0..91715fe4fbd 100644
--- a/launch/org.eclipse.cdt.docker.launcher/plugin.xml
+++ b/launch/org.eclipse.cdt.docker.launcher/plugin.xml
@@ -99,8 +99,9 @@
name="%ContainerCommandLauncherFactory.name"
point="org.eclipse.cdt.core.CommandLauncherFactory">
<factory
- id="ContainerCommandLauncherFactory"
- class="org.eclipse.cdt.docker.launcher.ContainerCommandLauncherFactory">
+ class="org.eclipse.cdt.docker.launcher.ContainerCommandLauncherFactory"
+ id="ContainerCommandLauncherFactory"
+ priority="5">
</factory>
</extension>
<extension
diff --git a/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/docker/launcher/ContainerCommandLauncher.java b/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/docker/launcher/ContainerCommandLauncher.java
index 029bab3eb9d..cae5dadc7e5 100644
--- a/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/docker/launcher/ContainerCommandLauncher.java
+++ b/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/docker/launcher/ContainerCommandLauncher.java
@@ -1,3 +1,17 @@
+/*******************************************************************************
+ * Copyright (c) 2017, 2022 Red Hat Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Red Hat Inc. - initial API and implementation
+ * Mathema - Refactor
+ *******************************************************************************/
package org.eclipse.cdt.docker.launcher;
import java.io.File;
@@ -9,6 +23,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
+import java.util.stream.Collectors;
import org.eclipse.cdt.core.ICommandLauncher;
import org.eclipse.cdt.core.build.ICBuildCommandLauncher;
@@ -17,6 +32,7 @@ import org.eclipse.cdt.core.build.IToolChain;
import org.eclipse.cdt.core.model.CoreModel;
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
import org.eclipse.cdt.internal.core.ProcessClosure;
+import org.eclipse.cdt.internal.docker.launcher.ContainerLaunchUtils;
import org.eclipse.cdt.internal.docker.launcher.Messages;
import org.eclipse.cdt.internal.docker.launcher.PreferenceConstants;
import org.eclipse.cdt.managedbuilder.buildproperties.IOptionalBuildProperties;
@@ -158,23 +174,16 @@ public class ContainerCommandLauncher implements ICommandLauncher, ICBuildComman
labels.put("org.eclipse.cdt.project-name", projectName); //$NON-NLS-1$
List<String> additionalDirs = new ArrayList<>();
+ List<IPath> additionalPaths = new ArrayList<>();
- //
- IPath projectLocation = fProject.getLocation();
- String projectPath = projectLocation.toPortableString();
- if (projectLocation.getDevice() != null) {
- projectPath = "/" + projectPath.replace(':', '/'); //$NON-NLS-1$
- }
- additionalDirs.add(projectPath);
+ additionalPaths.add(fProject.getLocation());
ArrayList<String> commandSegments = new ArrayList<>();
List<String> cmdList = new ArrayList<>();
- String commandString = commandPath.toPortableString();
- if (commandPath.getDevice() != null) {
- commandString = "/" + commandString.replace(':', '/'); //$NON-NLS-1$
- }
+ String commandString = ContainerLaunchUtils.toDockerPath(commandPath);
+
cmdList.add(commandString);
commandSegments.add(commandString);
for (String arg : args) {
@@ -189,12 +198,11 @@ public class ContainerCommandLauncher implements ICommandLauncher, ICBuildComman
// and modify the argument to be unix-style
if (f.isFile() || f.isDirectory()) {
f = f.getParentFile();
- modifiedArg = "/" //$NON-NLS-1$
- + p.toPortableString().replace(':', '/');
+ modifiedArg = ContainerLaunchUtils.toDockerPath(p);
p = p.removeLastSegments(1);
}
if (f != null && f.exists()) {
- additionalDirs.add("/" + p.toPortableString().replace(':', '/')); //$NON-NLS-1$
+ additionalPaths.add(p);
realArg = modifiedArg;
}
}
@@ -206,9 +214,10 @@ public class ContainerCommandLauncher implements ICommandLauncher, ICBuildComman
File f = p.toFile();
if (f.isFile()) {
f = f.getParentFile();
+ p.removeLastSegments(1);
}
if (f != null && f.exists()) {
- additionalDirs.add(f.getAbsolutePath());
+ additionalPaths.add(p);
}
}
}
@@ -220,19 +229,15 @@ public class ContainerCommandLauncher implements ICommandLauncher, ICBuildComman
IProject[] referencedProjects = fProject.getReferencedProjects();
for (IProject referencedProject : referencedProjects) {
- String referencedProjectPath = referencedProject.getLocation().toPortableString();
- if (referencedProject.getLocation().getDevice() != null) {
- referencedProjectPath = "/" //$NON-NLS-1$
- + referencedProjectPath.replace(':', '/');
- }
- additionalDirs.add(referencedProjectPath);
+ IPath referencedProjectPath = referencedProject.getLocation();
+ additionalPaths.add(referencedProjectPath);
}
- String workingDir = workingDirectory.makeAbsolute().toPortableString();
+ String workingDir;
if (workingDirectory.toPortableString().equals(".")) { //$NON-NLS-1$
workingDir = "/tmp"; //$NON-NLS-1$
- } else if (workingDirectory.getDevice() != null) {
- workingDir = "/" + workingDir.replace(':', '/'); //$NON-NLS-1$
+ } else {
+ workingDir = ContainerLaunchUtils.toDockerPath(workingDirectory.makeAbsolute());
}
parseEnvironment(env);
Map<String, String> origEnv = null;
@@ -272,18 +277,7 @@ public class ContainerCommandLauncher implements ICommandLauncher, ICBuildComman
// Add any specified volumes to additional dir list
if (selectedVolumeString != null && !selectedVolumeString.isEmpty()) {
String[] selectedVolumes = selectedVolumeString.split(VOLUME_SEPARATOR_REGEX);
- if (Platform.getOS().equals(Platform.OS_WIN32)) {
- for (String selectedVolume : selectedVolumes) {
- IPath path = new Path(selectedVolume);
- String selectedPath = path.toPortableString();
- if (path.getDevice() != null) {
- selectedPath = "/" + selectedPath.replace(':', '/'); //$NON-NLS-1$
- }
- additionalDirs.add(selectedPath);
- }
- } else {
- additionalDirs.addAll(Arrays.asList(selectedVolumes));
- }
+ additionalDirs.addAll(Arrays.asList(selectedVolumes));
}
if (connectionName == null) {
@@ -294,6 +288,9 @@ public class ContainerCommandLauncher implements ICommandLauncher, ICBuildComman
}
setImageName(imageName);
+ additionalDirs.addAll(
+ additionalPaths.stream().map(p -> ContainerLaunchUtils.toDockerVolume(p)).collect(Collectors.toList()));
+
fProcess = launcher.runCommand(connectionName, imageName, fProject, this, cmdList, workingDir, additionalDirs,
origEnv, fEnvironment, supportStdin, privilegedMode, labels, keepContainer);
diff --git a/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/docker/launcher/ContainerCommandLauncherFactory.java b/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/docker/launcher/ContainerCommandLauncherFactory.java
index 24a48609bc5..2f2a064f923 100644
--- a/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/docker/launcher/ContainerCommandLauncherFactory.java
+++ b/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/docker/launcher/ContainerCommandLauncherFactory.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2017 Red Hat Inc. and others.
+ * Copyright (c) 2017, 2022 Red Hat Inc. and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -10,16 +10,14 @@
*
* Contributors:
* Red Hat Inc. - initial API and implementation
+ * Mathema - Refactor
*******************************************************************************/
package org.eclipse.cdt.docker.launcher;
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
+import java.util.stream.Collectors;
import org.eclipse.cdt.core.ICommandLauncher;
import org.eclipse.cdt.core.ICommandLauncherFactory;
@@ -27,8 +25,10 @@ import org.eclipse.cdt.core.ICommandLauncherFactory2;
import org.eclipse.cdt.core.build.ICBuildConfiguration;
import org.eclipse.cdt.core.build.IToolChain;
import org.eclipse.cdt.core.model.CoreModel;
+import org.eclipse.cdt.core.settings.model.CIncludeFileEntry;
import org.eclipse.cdt.core.settings.model.CIncludePathEntry;
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
+import org.eclipse.cdt.core.settings.model.ICIncludeFileEntry;
import org.eclipse.cdt.core.settings.model.ICIncludePathEntry;
import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry;
import org.eclipse.cdt.core.settings.model.extension.CConfigurationData;
@@ -41,21 +41,128 @@ import org.eclipse.cdt.managedbuilder.internal.dataprovider.BuildConfigurationDa
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Platform;
import org.eclipse.linuxtools.docker.ui.launch.ContainerLauncher;
@SuppressWarnings("restriction")
public class ContainerCommandLauncherFactory implements ICommandLauncherFactory, ICommandLauncherFactory2 {
- private IProject project;
+ private IProject m_project;
+
+ /**
+ * Helper-Struct
+ */
+ private class ImageConnection {
+ final String connectionName;
+ final String imageName;
+
+ public ImageConnection(String connectionName, String imageName) {
+ this.connectionName = connectionName;
+ this.imageName = imageName;
+ }
+
+ }
+
+ /**
+ * Filter out paths that should not be copied from the container
+ * @param dirs A List of paths that should be filtered
+ * @return The filtered list
+ */
+ private List<String> filterOutLocalPaths(List<String> dirs) {
+ String prj = m_project.getLocation().toString();
+ return dirs.stream().filter(x -> !(x.startsWith(prj) || x.startsWith("/${ProjName}")) //$NON-NLS-1$
+ ).collect(Collectors.toList());
+
+ }
+
+ /**
+ * Transform a string into something that can be used as path name
+ * @param name The name that should be used as part of a path
+ * @return A string that should be usable as path name
+ */
+ private String normalizeToPathName(String name) {
+ String cleanName = name.replace("unix:///", "unix_"); //$NON-NLS-1$ //$NON-NLS-2$
+ cleanName = cleanName.replace("tcp://", "tcp_"); //$NON-NLS-1$ //$NON-NLS-2$
+ cleanName = cleanName.replaceAll("[:/.]", "_"); //$NON-NLS-1$ //$NON-NLS-2$#
+ assert Path.ROOT.isValidSegment(cleanName) : "Invalid Path - please file a bug"; //$NON-NLS-1$
+ return cleanName;
+ }
+
+ /**
+ * Convert the ImageConnection to the local path where the data is mirrored to
+ * @param imgCon The connection
+ * @return A host path
+ */
+ private IPath getHostMirrorPath(ImageConnection imgCon) {
+ IPath pluginPath = Platform.getStateLocation(Platform.getBundle(DockerLaunchUIPlugin.PLUGIN_ID))
+ .append("HEADERS"); //$NON-NLS-1$
+ pluginPath = pluginPath.append(normalizeToPathName(imgCon.connectionName));
+ pluginPath = pluginPath.append(normalizeToPathName(imgCon.imageName));
+ return pluginPath;
+ }
+
+ /**
+ * Mirror a list of paths from the imgCon to the host
+ * @param imgCon The image and connection to copy from
+ * @param paths The paths to copy
+ * @return Whether the operation was successful
+ */
+ private boolean getPaths(ImageConnection imgCon, List<String> paths) {
+ IPath targetPath = getHostMirrorPath(imgCon);
+
+ ContainerLauncher launcher = new ContainerLauncher();
+ int rv = launcher.fetchContainerDirs(imgCon.connectionName, imgCon.imageName, paths, null, targetPath);
+ return (rv == 0);
+
+ }
+
+ /**
+ * Get the Image and Connection from the current project configuration
+ * @return An ImageConnection or null if connection and image are configured
+ */
+ private ImageConnection getImgCnn() {
+ ICConfigurationDescription cfgd = CoreModel.getDefault().getProjectDescription(m_project)
+ .getActiveConfiguration();
+ IConfiguration cfg = ManagedBuildManager.getConfigurationForDescription(cfgd);
+ IOptionalBuildProperties props = cfg.getOptionalBuildProperties();
+ if (props == null) {
+ return null;
+ }
+
+ String enablementProperty = props.getProperty(ContainerCommandLauncher.CONTAINER_BUILD_ENABLED);
+ if (enablementProperty == null) {
+ return null;
+ }
+
+ if (!Boolean.parseBoolean(enablementProperty)) {
+ return null;
+ }
+
+ String connectionName = props.getProperty(ContainerCommandLauncher.CONNECTION_ID);
+ String imageName = props.getProperty(ContainerCommandLauncher.IMAGE_ID);
+ if (connectionName == null || connectionName.isEmpty() || imageName == null || imageName.isEmpty()) {
+ DockerLaunchUIPlugin.logErrorMessage(Messages.ContainerCommandLauncher_invalid_values);
+ return null;
+ }
+
+ return new ImageConnection(connectionName, imageName);
+
+ }
@Override
public ICommandLauncher getCommandLauncher(IProject project) {
- this.project = project;
+ m_project = project;
// check if container build enablement has been checked
ICConfigurationDescription cfgd = CoreModel.getDefault().getProjectDescription(project, false)
.getActiveConfiguration();
+ return getCommandLauncher(cfgd);
+ }
+
+ @Override
+ public ICommandLauncher getCommandLauncher(ICConfigurationDescription cfgd) {
+ // check if container build enablement has been checked
IConfiguration cfg = null;
try {
@@ -76,31 +183,8 @@ public class ContainerCommandLauncherFactory implements ICommandLauncherFactory,
if (cfg == null) {
return null;
}
- IOptionalBuildProperties props = cfg.getOptionalBuildProperties();
- if (props != null) {
- String enablementProperty = props.getProperty(ContainerCommandLauncher.CONTAINER_BUILD_ENABLED);
- if (enablementProperty != null) {
- boolean enableContainer = Boolean.parseBoolean(enablementProperty);
- // enablement has occurred, we can return a
- // ContainerCommandLauncher
- if (enableContainer) {
- return new ContainerCommandLauncher();
- }
- }
- }
- return null;
- }
-
- @Override
- public ICommandLauncher getCommandLauncher(ICConfigurationDescription cfgd) {
- // check if container build enablement has been checked
- IConfiguration cfg = ManagedBuildManager.getConfigurationForDescription(cfgd);
- // TODO: figure out why this occurs
- if (cfg == null) {
- return null;
- }
- this.project = (IProject) cfg.getManagedProject().getOwner();
+ m_project = (IProject) cfg.getManagedProject().getOwner();
IOptionalBuildProperties props = cfg.getOptionalBuildProperties();
if (props != null) {
String enablementProperty = props.getProperty(ContainerCommandLauncher.CONTAINER_BUILD_ENABLED);
@@ -119,7 +203,7 @@ public class ContainerCommandLauncherFactory implements ICommandLauncherFactory,
@Override
public ICommandLauncher getCommandLauncher(ICBuildConfiguration cfgd) {
try {
- this.project = cfgd.getBuildConfiguration().getProject();
+ m_project = cfgd.getBuildConfiguration().getProject();
} catch (CoreException e1) {
return null;
}
@@ -140,88 +224,32 @@ public class ContainerCommandLauncherFactory implements ICommandLauncherFactory,
@Override
public void registerLanguageSettingEntries(IProject project, List<? extends ICLanguageSettingEntry> langEntries) {
+ if (langEntries == null) {
+ // langEntries can be null when the last item is removed from a list,
+ // see org.eclipse.cdt.internal.ui.language.settings.providers.LanguageSettingsEntriesTab.saveEntries(ILanguageSettingsProvider, List<ICLanguageSettingEntry>)
+ // for an example that passes null to mean "use parent entries instead".
+ return;
+ }
+
@SuppressWarnings("unchecked")
List<ICLanguageSettingEntry> entries = (List<ICLanguageSettingEntry>) langEntries;
- ICConfigurationDescription cfgd = CoreModel.getDefault().getProjectDescription(project)
- .getActiveConfiguration();
- IConfiguration cfg = ManagedBuildManager.getConfigurationForDescription(cfgd);
- IOptionalBuildProperties props = cfg.getOptionalBuildProperties();
- if (props != null) {
- String enablementProperty = props.getProperty(ContainerCommandLauncher.CONTAINER_BUILD_ENABLED);
- if (enablementProperty != null) {
- boolean enableContainer = Boolean.parseBoolean(enablementProperty);
- if (enableContainer) {
- String connectionName = props.getProperty(ContainerCommandLauncher.CONNECTION_ID);
- String imageName = props.getProperty(ContainerCommandLauncher.IMAGE_ID);
- if (connectionName == null || connectionName.isEmpty() || imageName == null
- || imageName.isEmpty()) {
- DockerLaunchUIPlugin.logErrorMessage(Messages.ContainerCommandLauncher_invalid_values);
- return;
- }
- ContainerLauncher launcher = new ContainerLauncher();
- List<String> paths = new ArrayList<>();
- for (ICLanguageSettingEntry entry : entries) {
- if (entry instanceof ICIncludePathEntry) {
- paths.add(entry.getValue());
- }
- }
- if (paths.size() > 0) {
- // Create a directory to put the header files for
- // the image. Use the connection name to form
- // the directory name as the connection may be
- // connected to a different repo using the same
- // image name.
- IPath pluginPath = Platform.getStateLocation(Platform.getBundle(DockerLaunchUIPlugin.PLUGIN_ID))
- .append("HEADERS"); //$NON-NLS-1$
- pluginPath.toFile().mkdir();
- pluginPath = pluginPath.append(getCleanName(connectionName));
- pluginPath.toFile().mkdir();
- // To allow the user to later manage the headers, store
- // the
- // real connection name in a file.
- IPath connectionNamePath = pluginPath.append(".name"); //$NON-NLS-1$
- File f = connectionNamePath.toFile();
- try {
- f.createNewFile();
- try (FileWriter writer = new FileWriter(f);
- BufferedWriter bufferedWriter = new BufferedWriter(writer);) {
- bufferedWriter.write(connectionName);
- bufferedWriter.newLine();
- } catch (IOException e) {
- DockerLaunchUIPlugin.log(e);
- return;
- }
- pluginPath = pluginPath.append(getCleanName(imageName));
- pluginPath.toFile().mkdir();
- // To allow the user to later manage the headers,
- // store the
- // real image name in a file.
- IPath imageNamePath = pluginPath.append(".name"); //$NON-NLS-1$
- f = imageNamePath.toFile();
- f.createNewFile();
- try (FileWriter writer = new FileWriter(f);
- BufferedWriter bufferedWriter = new BufferedWriter(writer);) {
- bufferedWriter.write(imageName);
- bufferedWriter.newLine();
- } catch (IOException e) {
- DockerLaunchUIPlugin.log(e);
- return;
- }
- } catch (IOException e) {
- DockerLaunchUIPlugin.log(e);
- return;
- }
- IPath hostDir = pluginPath;
- List<String> excludeList = new ArrayList<>();
- excludeList.add(project.getLocation().toString());
- @SuppressWarnings("unused")
- int status = launcher.fetchContainerDirs(connectionName, imageName, paths, excludeList,
- hostDir);
- }
- }
+
+ List<String> paths = new ArrayList<>();
+ for (ICLanguageSettingEntry entry : entries) {
+ if (entry instanceof ICIncludePathEntry) {
+ paths.add(entry.getValue());
+ } else if (entry instanceof ICIncludeFileEntry) {
+ paths.add(new org.eclipse.core.runtime.Path(entry.getValue()).removeLastSegments(1).toString());
}
}
+ paths = filterOutLocalPaths(paths);
+ if (paths.size() == 0) {
+ return;
+ }
+ ImageConnection imgCnn = getImgCnn();
+ getPaths(imgCnn, paths);
+
}
/**
@@ -230,109 +258,72 @@ public class ContainerCommandLauncherFactory implements ICommandLauncherFactory,
@Override
public List<String> verifyIncludePaths(ICBuildConfiguration cfgd, List<String> includePaths) {
IToolChain toolchain = null;
- boolean isContainerEnabled = false;
+
try {
toolchain = cfgd.getToolChain();
- if (toolchain != null) {
- if (ContainerTargetTypeProvider.CONTAINER_LINUX.equals(toolchain.getProperty(IToolChain.ATTR_OS))) {
- isContainerEnabled = true;
- }
- }
} catch (CoreException e) {
DockerLaunchUIPlugin.log(e);
}
- if (isContainerEnabled) {
- String connectionName = toolchain.getProperty(IContainerLaunchTarget.ATTR_CONNECTION_URI);
- String imageName = toolchain.getProperty(IContainerLaunchTarget.ATTR_IMAGE_ID);
- if (connectionName == null || connectionName.isEmpty() || imageName == null || imageName.isEmpty()) {
- DockerLaunchUIPlugin.logErrorMessage(Messages.ContainerCommandLauncher_invalid_values);
- return includePaths;
- }
- if (includePaths.size() > 0) {
- ContainerLauncher launcher = new ContainerLauncher();
- // Create a directory to put the header files for
- // the image. Use the connection name to form
- // the directory name as the connection may be
- // connected to a different repo using the same
- // image name.
- IPath pluginPath = Platform.getStateLocation(Platform.getBundle(DockerLaunchUIPlugin.PLUGIN_ID))
- .append("HEADERS"); //$NON-NLS-1$
- pluginPath.toFile().mkdir();
- pluginPath = pluginPath.append(getCleanName(connectionName));
- pluginPath.toFile().mkdir();
- // To allow the user to later manage the headers, store
- // the
- // real connection name in a file.
- IPath connectionNamePath = pluginPath.append(".name"); //$NON-NLS-1$
- File f = connectionNamePath.toFile();
- try {
- f.createNewFile();
- try (FileWriter writer = new FileWriter(f);
- BufferedWriter bufferedWriter = new BufferedWriter(writer);) {
- bufferedWriter.write(connectionName);
- bufferedWriter.newLine();
- } catch (IOException e) {
- DockerLaunchUIPlugin.log(e);
- return includePaths;
- }
- pluginPath = pluginPath.append(getCleanName(imageName));
- pluginPath.toFile().mkdir();
- // To allow the user to later manage the headers,
- // store the
- // real image name in a file.
- IPath imageNamePath = pluginPath.append(".name"); //$NON-NLS-1$
- f = imageNamePath.toFile();
- f.createNewFile();
- try (FileWriter writer = new FileWriter(f);
- BufferedWriter bufferedWriter = new BufferedWriter(writer);) {
- bufferedWriter.write(imageName);
- bufferedWriter.newLine();
- } catch (IOException e) {
- DockerLaunchUIPlugin.log(e);
- return includePaths;
- }
- } catch (IOException e) {
- DockerLaunchUIPlugin.log(e);
- return includePaths;
- }
- IPath hostDir = pluginPath;
- // exclude project directories from any copying operation
- List<String> excludeList = new ArrayList<>();
- excludeList.add(project.getLocation().toString());
- int status = launcher.fetchContainerDirsSync(connectionName, imageName, includePaths, excludeList,
- hostDir);
- if (status == 0) {
- Set<String> copiedVolumes = launcher.getCopiedVolumes(connectionName, imageName);
- List<String> newEntries = new ArrayList<>();
-
- for (String path : includePaths) {
- if (copiedVolumes.contains(path)) {
- IPath newPath = hostDir.append(path);
- String newEntry = newPath.toOSString();
- newEntries.add(newEntry);
- } else {
- newEntries.add(path);
- }
- }
- return newEntries;
- }
+ if (toolchain == null) {
+ return includePaths;
+ }
+
+ if (!ContainerTargetTypeProvider.CONTAINER_LINUX.equals(toolchain.getProperty(IToolChain.ATTR_OS))) {
+ DockerLaunchUIPlugin.logErrorMessage(Messages.ContainerCommandLauncher_invalid_container_type);
+ return includePaths;
+ }
+
+ String connectionName = toolchain.getProperty(IContainerLaunchTarget.ATTR_CONNECTION_URI);
+ String imageName = toolchain.getProperty(IContainerLaunchTarget.ATTR_IMAGE_ID);
+
+ if (connectionName == null || connectionName.isEmpty() || imageName == null || imageName.isEmpty()) {
+ DockerLaunchUIPlugin.logErrorMessage(Messages.ContainerCommandLauncher_invalid_values);
+ return includePaths;
+ }
+
+ ImageConnection imgCnn = new ImageConnection(connectionName, imageName);
+
+ if (includePaths.isEmpty()) {
+ // Bug 536884 - if no include entries, check if the copied
+ // header files have been erased by the end-user in which
+ // case mark that scanner info needs refreshing (only way
+ // the headers will be recopied)
+ // TODO: fix this in a minor release to be an additional method
+ // that can be registered by the removal of the header files
+ IPath pluginPath = getHostMirrorPath(imgCnn);
+ toolchain.setProperty("cdt.needScannerRefresh", //$NON-NLS-1$
+ pluginPath.toFile().exists() ? "false" : "true"); //$NON-NLS-1$ //$NON-NLS-2$
+ return includePaths;
+ }
+
+ List<String> fetchPaths = filterOutLocalPaths(includePaths);
+ if (fetchPaths.size() == 0) {
+ return includePaths;
+ }
+ if (!getPaths(imgCnn, includePaths)) {
+ // There should be sufficient log messages by the root cause
+ return includePaths;
+ }
+
+ // Do the actual work
+
+ IPath tpath = getHostMirrorPath(imgCnn);
+ Set<IPath> copiedVolumes = ContainerLauncher.getCopiedVolumes(tpath);
+ List<String> newEntries = new ArrayList<>();
+
+ for (String path : includePaths) {
+ if (copiedVolumes.contains(new Path(path))) {
+ IPath newPath = tpath.append(path);
+ String newEntry = newPath.toOSString();
+ newEntries.add(newEntry);
} else {
- // Bug 536884 - if no include entries, check if the copied
- // header files have been erased by the end-user in which
- // case mark that scanner info needs refreshing (only way
- // the headers will be recopied)
- // TODO: fix this in a minor release to be an additional method
- // that can be registered by the removal of the header files
- IPath pluginPath = Platform.getStateLocation(Platform.getBundle(DockerLaunchUIPlugin.PLUGIN_ID))
- .append("HEADERS").append(getCleanName(connectionName)) //$NON-NLS-1$
- .append(getCleanName(imageName));
- toolchain.setProperty("cdt.needScannerRefresh", //$NON-NLS-1$
- pluginPath.toFile().exists() ? "false" : "true"); //$NON-NLS-2$
+ newEntries.add(path);
}
}
- return includePaths;
+ return newEntries;
+
}
@Override
@@ -341,57 +332,56 @@ public class ContainerCommandLauncherFactory implements ICommandLauncherFactory,
if (entries == null) {
return null;
}
+
ICConfigurationDescription cfgd = CoreModel.getDefault().getProjectDescription(project)
.getActiveConfiguration();
IConfiguration cfg = ManagedBuildManager.getConfigurationForDescription(cfgd);
IOptionalBuildProperties props = cfg.getOptionalBuildProperties();
- if (props != null) {
- String enablementProperty = props.getProperty(ContainerCommandLauncher.CONTAINER_BUILD_ENABLED);
- if (enablementProperty != null) {
- boolean enableContainer = Boolean.parseBoolean(enablementProperty);
- if (enableContainer) {
- String connectionName = props.getProperty(ContainerCommandLauncher.CONNECTION_ID);
- String imageName = props.getProperty(ContainerCommandLauncher.IMAGE_ID);
- if (connectionName == null || connectionName.isEmpty() || imageName == null
- || imageName.isEmpty()) {
- DockerLaunchUIPlugin.logErrorMessage(Messages.ContainerCommandLauncher_invalid_values);
- return entries;
- }
-
- ContainerLauncher launcher = new ContainerLauncher();
- Set<String> copiedVolumes = launcher.getCopiedVolumes(connectionName, imageName);
- List<ICLanguageSettingEntry> newEntries = new ArrayList<>();
- IPath pluginPath = Platform.getStateLocation(Platform.getBundle(DockerLaunchUIPlugin.PLUGIN_ID));
- IPath hostDir = pluginPath.append("HEADERS") //$NON-NLS-1$
- .append(getCleanName(connectionName)).append(getCleanName(imageName));
-
- for (ICLanguageSettingEntry entry : entries) {
- if (entry instanceof ICIncludePathEntry) {
- if (copiedVolumes.contains(((ICIncludePathEntry) entry).getName().toString())) {
- // //$NON-NLS-2$
- IPath newPath = hostDir.append(entry.getName());
- CIncludePathEntry newEntry = new CIncludePathEntry(newPath.toString(),
- entry.getFlags());
- newEntries.add(newEntry);
- continue;
- } else {
- newEntries.add(entry);
- }
- } else {
- newEntries.add(entry);
- }
- }
- return newEntries;
+
+ if (props == null)
+ return entries;
+
+ String enablementProperty = props.getProperty(ContainerCommandLauncher.CONTAINER_BUILD_ENABLED);
+ if (enablementProperty == null)
+ return entries;
+
+ boolean enableContainer = Boolean.parseBoolean(enablementProperty);
+ if (!enableContainer)
+ return entries;
+
+ String connectionName = props.getProperty(ContainerCommandLauncher.CONNECTION_ID);
+ String imageName = props.getProperty(ContainerCommandLauncher.IMAGE_ID);
+ if (connectionName == null || connectionName.isEmpty() || imageName == null || imageName.isEmpty()) {
+ DockerLaunchUIPlugin.logErrorMessage(Messages.ContainerCommandLauncher_invalid_values);
+ return entries;
+ }
+
+ IPath tpath = getHostMirrorPath(new ImageConnection(connectionName, imageName));
+ Set<IPath> copiedVolumes = ContainerLauncher.getCopiedVolumes(tpath);
+ List<ICLanguageSettingEntry> newEntries = new ArrayList<>();
+
+ for (ICLanguageSettingEntry entry : entries) {
+ if (entry instanceof ICIncludePathEntry) {
+ Path tp = new Path(((ICIncludePathEntry) entry).getName().toString());
+ if (copiedVolumes.stream().anyMatch(p -> p.isPrefixOf(tp))) {
+ IPath newPath = tpath.append(entry.getName());
+ CIncludePathEntry newEntry = new CIncludePathEntry(newPath.toString(), entry.getFlags());
+ newEntries.add(newEntry);
+ continue;
+ }
+ }
+ if (entry instanceof ICIncludeFileEntry) {
+ IPath tp = new Path(((ICIncludeFileEntry) entry).getName()).removeLastSegments(1);
+ if (copiedVolumes.stream().anyMatch(p -> p.isPrefixOf(tp))) {
+ IPath newPath = tpath.append(entry.getName());
+ CIncludeFileEntry newEntry = new CIncludeFileEntry(newPath.toString(), entry.getFlags());
+ newEntries.add(newEntry);
+ continue;
}
}
+ newEntries.add(entry);
}
- return entries;
- }
-
- private String getCleanName(String name) {
- String cleanName = name.replace("unix:///", "unix_"); //$NON-NLS-1$ //$NON-NLS-2$
- cleanName = cleanName.replace("tcp://", "tcp_"); //$NON-NLS-1$ //$NON-NLS-2$
- return cleanName.replaceAll("[:/.]", "_"); //$NON-NLS-1$ //$NON-NLS-2$
+ return newEntries;
}
}
diff --git a/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/docker/launcher/ContainerTargetTypeProvider.java b/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/docker/launcher/ContainerTargetTypeProvider.java
index 4491501dd61..371e62d9b4a 100644
--- a/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/docker/launcher/ContainerTargetTypeProvider.java
+++ b/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/docker/launcher/ContainerTargetTypeProvider.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2017, 2019 QNX Software Systems and others.
+ * Copyright (c) 2017, 2020 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -27,6 +27,7 @@ import org.eclipse.cdt.core.build.IToolChain;
import org.eclipse.cdt.core.build.IToolChainManager;
import org.eclipse.cdt.core.build.IToolChainProvider;
import org.eclipse.cdt.debug.core.CDebugCorePlugin;
+import org.eclipse.cdt.internal.docker.launcher.Messages;
import org.eclipse.cdt.internal.docker.launcher.ui.launchbar.ContainerGCCToolChain;
import org.eclipse.cdt.internal.docker.launcher.ui.launchbar.ContainerGCCToolChainProvider;
import org.eclipse.cdt.make.core.MakeCorePlugin;
@@ -36,6 +37,7 @@ import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.core.runtime.jobs.JobGroup;
import org.eclipse.launchbar.core.ILaunchBarManager;
import org.eclipse.launchbar.core.target.ILaunchTarget;
import org.eclipse.launchbar.core.target.ILaunchTargetManager;
@@ -59,6 +61,9 @@ public class ContainerTargetTypeProvider implements ILaunchTargetProvider, IDock
public static final String TYPE_ID = "org.eclipse.cdt.docker.launcher.launchTargetType.container"; //$NON-NLS-1$
public static final String CONTAINER_LINUX = "linux-container"; //$NON-NLS-1$
+ private static final JobGroup containerTargetTypeGroup = new JobGroup(
+ Messages.ContainerTargetTypeProviderJobGroup_name, 1, 1);
+
private ILaunchTargetManager targetManager;
@Override
@@ -139,6 +144,7 @@ public class ContainerTargetTypeProvider implements ILaunchTargetProvider, IDock
return Status.OK_STATUS;
}
};
+ checkConfigs.setJobGroup(containerTargetTypeGroup);
checkConfigs.setUser(true);
checkConfigs.schedule();
@@ -153,6 +159,16 @@ public class ContainerTargetTypeProvider implements ILaunchTargetProvider, IDock
@Override
public TargetStatus getStatus(ILaunchTarget target) {
+ // don't allow status to be ok until all check jobs are complete
+ // we could do a join() here but to be absolutely sure we don't cause a deadlock, we will sleep
+ // until there are no jobs scheduled
+ while (containerTargetTypeGroup.getState() != JobGroup.NONE) {
+ try {
+ Thread.sleep(200);
+ } catch (InterruptedException e) {
+ // do nothing
+ }
+ }
// Always OK
return TargetStatus.OK_STATUS;
}
@@ -268,6 +284,7 @@ public class ContainerTargetTypeProvider implements ILaunchTargetProvider, IDock
}
};
checkConfigs.setUser(true);
+ checkConfigs.setJobGroup(containerTargetTypeGroup);
checkConfigs.schedule();
}
diff --git a/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/docker/launcher/DockerLaunchUIPlugin.java b/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/docker/launcher/DockerLaunchUIPlugin.java
index e68f5c48a72..1e392b94ae8 100644
--- a/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/docker/launcher/DockerLaunchUIPlugin.java
+++ b/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/docker/launcher/DockerLaunchUIPlugin.java
@@ -20,6 +20,7 @@ import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.resource.ResourceLocator;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.osgi.framework.BundleContext;
@@ -65,7 +66,7 @@ public class DockerLaunchUIPlugin extends AbstractUIPlugin {
}
public static Shell getActiveWorkbenchShell() {
- IWorkbenchWindow window = getDefault().getWorkbench().getActiveWorkbenchWindow();
+ IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
if (window != null) {
return window.getShell();
}
@@ -76,7 +77,7 @@ public class DockerLaunchUIPlugin extends AbstractUIPlugin {
if (getActiveWorkbenchShell() != null) {
return getActiveWorkbenchShell();
}
- IWorkbenchWindow[] windows = getDefault().getWorkbench().getWorkbenchWindows();
+ IWorkbenchWindow[] windows = PlatformUI.getWorkbench().getWorkbenchWindows();
return windows[0].getShell();
}
diff --git a/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/ConnectionListener.java b/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/ConnectionListener.java
index d5ba9bd686d..1867758b93f 100644
--- a/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/ConnectionListener.java
+++ b/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/ConnectionListener.java
@@ -10,7 +10,6 @@
*******************************************************************************/
package org.eclipse.cdt.internal.docker.launcher;
-import org.eclipse.cdt.docker.launcher.DockerLaunchUIPlugin;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ITreeSelection;
import org.eclipse.linuxtools.docker.core.IDockerConnection;
@@ -18,6 +17,7 @@ import org.eclipse.ui.ISelectionListener;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
public class ConnectionListener implements ISelectionListener {
@@ -35,7 +35,7 @@ public class ConnectionListener implements ISelectionListener {
}
public void init() {
- IWorkbench workbench = DockerLaunchUIPlugin.getDefault().getWorkbench();
+ IWorkbench workbench = PlatformUI.getWorkbench();
if (workbench != null) {
IWorkbenchWindow window = workbench.getActiveWorkbenchWindow();
if (window != null) {
diff --git a/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/ContainerLaunchConfigurationDelegate.java b/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/ContainerLaunchConfigurationDelegate.java
index c8cc207b615..15ba069db6e 100644
--- a/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/ContainerLaunchConfigurationDelegate.java
+++ b/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/ContainerLaunchConfigurationDelegate.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2015, 2016 Red Hat and others.
+ * Copyright (c) 2015, 2022 Red Hat and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -58,6 +58,7 @@ import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
import org.eclipse.debug.core.ILaunchManager;
import org.eclipse.launchbar.core.target.ILaunchTarget;
import org.eclipse.launchbar.core.target.ILaunchTargetManager;
+import org.eclipse.launchbar.core.target.ILaunchTargetWorkingCopy;
import org.eclipse.linuxtools.docker.core.Activator;
import org.eclipse.linuxtools.docker.core.IDockerContainerInfo;
import org.eclipse.linuxtools.docker.core.IDockerNetworkSettings;
@@ -69,6 +70,8 @@ public class ContainerLaunchConfigurationDelegate extends GdbLaunchDelegate {
private ContainerLauncher launcher;
+ private final static String NONE = ""; //$NON-NLS-1$
+
private class StartGdbServerJob extends Job implements IContainerLaunchListener {
private boolean started;
@@ -157,13 +160,8 @@ public class ContainerLaunchConfigurationDelegate extends GdbLaunchDelegate {
String projectName = configuration.getAttribute(ICDTLaunchConfigurationConstants.ATTR_PROJECT_NAME, ""); //$NON-NLS-1$
labels.put("org.eclipse.cdt.project-name", projectName); //$NON-NLS-1$
if (mode.equals(ILaunchManager.RUN_MODE)) {
- String commandDir = commandPath.removeLastSegments(1).toPortableString();
- String commandString = commandPath.toPortableString();
-
- if (commandPath.getDevice() != null) {
- commandDir = "/" + commandDir.replace(':', '/'); //$NON-NLS-1$
- commandString = "/" + commandString.replace(':', '/'); //$NON-NLS-1$
- }
+ String commandDir = ContainerLaunchUtils.toDockerPath(commandPath.removeLastSegments(1));
+ String commandString = ContainerLaunchUtils.toDockerPath(commandPath);
StringBuilder b = new StringBuilder();
b.append(commandString);
@@ -188,8 +186,7 @@ public class ContainerLaunchConfigurationDelegate extends GdbLaunchDelegate {
if (workingDir != null) {
IPath workingPath = new Path(workingDir);
if (workingPath.getDevice() != null) {
- workingDir = "/" + workingPath.toPortableString() //$NON-NLS-1$
- .replace(':', '/');
+ workingDir = ContainerLaunchUtils.toDockerPath(workingPath);
}
}
Map<String, String> envMap = configuration.getAttribute(ILaunchManager.ATTR_ENVIRONMENT_VARIABLES,
@@ -205,10 +202,8 @@ public class ContainerLaunchConfigurationDelegate extends GdbLaunchDelegate {
List<String> dirs = new ArrayList<>();
for (String additionalDir : additionalDirs) {
IPath path = new Path(additionalDir);
- String dir = path.toPortableString();
- if (path.getDevice() != null) {
- dir = "/" + dir.replace(':', '/');
- }
+ String dir = ContainerLaunchUtils.toDockerPath(path);
+
dirs.add(dir);
}
additionalDirs = dirs;
@@ -243,7 +238,7 @@ public class ContainerLaunchConfigurationDelegate extends GdbLaunchDelegate {
}
String image = configuration.getAttribute(ILaunchConstants.ATTR_IMAGE, (String) null);
- String connectionUri = configuration.getAttribute(ILaunchConstants.ATTR_CONNECTION_URI, "");
+ String connectionUri = configuration.getAttribute(ILaunchConstants.ATTR_CONNECTION_URI, NONE);
boolean keepContainer = configuration.getAttribute(ILaunchConstants.ATTR_KEEP_AFTER_LAUNCH, false);
boolean supportStdin = configuration.getAttribute(ILaunchConstants.ATTR_STDIN_SUPPORT, false);
@@ -295,20 +290,15 @@ public class ContainerLaunchConfigurationDelegate extends GdbLaunchDelegate {
String gdbserverCommand = configuration.getAttribute(ILaunchConstants.ATTR_GDBSERVER_COMMAND,
ILaunchConstants.ATTR_GDBSERVER_COMMAND_DEFAULT);
- String commandString = commandPath.toPortableString();
- String commandDir = commandPath.removeLastSegments(1).toPortableString();
-
- if (commandPath.getDevice() != null) {
- commandDir = "/" + commandDir.replace(':', '/'); //$NON-NLS-1$
- commandString = "/" + commandString.replace(':', '/'); //$NON-NLS-1$
- }
+ String commandString = ContainerLaunchUtils.toDockerPath(commandPath);
+ String commandDir = ContainerLaunchUtils.toDockerPath(commandPath.removeLastSegments(1));
String commandArguments = ":" + gdbserverPortNumber + " " //$NON-NLS-1$ //$NON-NLS-2$
+ spaceEscapify(commandString);
StringBuilder b = new StringBuilder();
- b.append(gdbserverCommand).append(' ').append(commandArguments); //$NON-NLS-1$
+ b.append(gdbserverCommand).append(' ').append(commandArguments);
String arguments = getProgramArguments(configuration);
if (arguments.trim().length() > 0) {
@@ -328,8 +318,7 @@ public class ContainerLaunchConfigurationDelegate extends GdbLaunchDelegate {
if (workingDir != null) {
IPath workingPath = new Path(workingDir);
if (workingPath.getDevice() != null) {
- workingDir = "/" + workingPath.toPortableString() //$NON-NLS-1$
- .replace(':', '/');
+ workingDir = ContainerLaunchUtils.toDockerPath(workingPath);
}
}
@@ -346,20 +335,17 @@ public class ContainerLaunchConfigurationDelegate extends GdbLaunchDelegate {
List<String> dirs = new ArrayList<>();
for (String additionalDir : additionalDirs) {
IPath path = new Path(additionalDir);
- String dir = path.toPortableString();
- if (path.getDevice() != null) {
- dir = "/" + dir.replace(':', '/');
- }
+ String dir = ContainerLaunchUtils.toDockerPath(path);
dirs.add(dir);
}
additionalDirs = dirs;
}
String image = configuration.getAttribute(ILaunchConstants.ATTR_IMAGE, (String) null);
- String connectionUri = configuration.getAttribute(ILaunchConstants.ATTR_CONNECTION_URI, "");
+ String connectionUri = configuration.getAttribute(ILaunchConstants.ATTR_CONNECTION_URI, NONE);
boolean isLocalConnection = true;
try {
- Pattern ipaddrPattern = Pattern.compile("[a-z]*://([0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+)[:]*[0-9]*");
+ Pattern ipaddrPattern = Pattern.compile("[a-z]*://([0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+)[:]*[0-9]*"); //$NON-NLS-1$
Matcher m = ipaddrPattern.matcher(connectionUri);
if (m.matches()) {
String ipaddr = m.group(1);
@@ -448,7 +434,7 @@ public class ContainerLaunchConfigurationDelegate extends GdbLaunchDelegate {
* @throws CoreException
*/
private String getProgramArguments(ILaunchConfiguration config) throws CoreException {
- String args = config.getAttribute(ICDTLaunchConfigurationConstants.ATTR_PROGRAM_ARGUMENTS, "");
+ String args = config.getAttribute(ICDTLaunchConfigurationConstants.ATTR_PROGRAM_ARGUMENTS, NONE);
if (args != null && args.length() > 0) {
args = VariablesPlugin.getDefault().getStringVariableManager().performStringSubstitution(args);
}
@@ -463,13 +449,13 @@ public class ContainerLaunchConfigurationDelegate extends GdbLaunchDelegate {
* @throws CoreException
*/
private IPath getCommandPath(ILaunchConfiguration configuration) throws CoreException {
- String projectName = configuration.getAttribute(ICDTLaunchConfigurationConstants.ATTR_PROJECT_NAME, "");
+ String projectName = configuration.getAttribute(ICDTLaunchConfigurationConstants.ATTR_PROJECT_NAME, NONE);
if (projectName.length() > 0) {
IProject project = CCorePlugin.getWorkspace().getRoot().getProject(projectName);
if (project == null)
return null;
- String name = configuration.getAttribute(ICDTLaunchConfigurationConstants.ATTR_PROGRAM_NAME, "");
+ String name = configuration.getAttribute(ICDTLaunchConfigurationConstants.ATTR_PROGRAM_NAME, NONE);
if (name.length() == 0)
return null;
@@ -574,7 +560,7 @@ public class ContainerLaunchConfigurationDelegate extends GdbLaunchDelegate {
ILaunchTarget target = null;
ILaunchTarget[] targets = targetManager.getLaunchTargetsOfType(ContainerTargetTypeProvider.TYPE_ID);
for (ILaunchTarget t : targets) {
- if (t.getAttribute(IContainerLaunchTarget.ATTR_IMAGE_ID, "").replaceAll(":", "_").equals(m.group(1))) {
+ if (t.getAttribute(IContainerLaunchTarget.ATTR_IMAGE_ID, "").replaceAll(":", "_").equals(m.group(1))) { //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
target = t;
break;
}
@@ -601,11 +587,48 @@ public class ContainerLaunchConfigurationDelegate extends GdbLaunchDelegate {
IProject project = getProject(configuration);
ILaunchTargetManager targetManager = CCorePlugin.getService(ILaunchTargetManager.class);
ILaunchTarget target = null;
+ // force ContainerTargetTypeProvider to flush all check jobs by calling getStatus()
+ ILaunchTarget fakeTarget = new ILaunchTarget() {
+
+ @Override
+ public <T> T getAdapter(Class<T> adapter) {
+ return null;
+ }
+
+ @Override
+ public String getId() {
+ return "org.eclipse.cdt.docker.launch.fakeTarget"; //$NON-NLS-1$
+ }
+
+ @Override
+ public String getTypeId() {
+ return ContainerTargetTypeProvider.TYPE_ID;
+ }
+
+ @Override
+ public String getAttribute(String key, String defValue) {
+ return defValue;
+ }
+
+ @Override
+ public Map<String, String> getAttributes() {
+ return Collections.emptyMap();
+ }
+
+ @Override
+ public ILaunchTargetWorkingCopy getWorkingCopy() {
+ throw new UnsupportedOperationException();
+ }
+
+ };
+ targetManager.getStatus(fakeTarget);
+
+ // now that check jobs are flushed, get launch targets
ILaunchTarget[] targets = targetManager.getLaunchTargetsOfType(ContainerTargetTypeProvider.TYPE_ID);
String image = configuration.getAttribute(IContainerLaunchTarget.ATTR_IMAGE_ID, (String) null);
String connection = configuration.getAttribute(IContainerLaunchTarget.ATTR_CONNECTION_URI, (String) null);
for (ILaunchTarget t : targets) {
- if (t.getAttribute(IContainerLaunchTarget.ATTR_IMAGE_ID, "").equals(image)) {
+ if (t.getAttribute(IContainerLaunchTarget.ATTR_IMAGE_ID, "").equals(image)) { //$NON-NLS-1$
target = t;
break;
}
@@ -642,12 +665,14 @@ public class ContainerLaunchConfigurationDelegate extends GdbLaunchDelegate {
IProject project = null;
if (projectName == null) {
IResource[] resources = config.getMappedResources();
- if (resources != null && resources.length > 0 && resources[0] instanceof IProject) {
- project = (IProject) resources[0];
+ if (resources != null && resources.length > 0) {
+ project = resources[0].getProject();
+ }
+ if (project != null) {
+ ILaunchConfigurationWorkingCopy wc = config.getWorkingCopy();
+ wc.setAttribute(ICDTLaunchConfigurationConstants.ATTR_PROJECT_NAME, project.getName());
+ wc.doSave();
}
- ILaunchConfigurationWorkingCopy wc = config.getWorkingCopy();
- wc.setAttribute(ICDTLaunchConfigurationConstants.ATTR_PROJECT_NAME, project.getName());
- wc.doSave();
} else {
projectName = projectName.trim();
if (!projectName.isEmpty()) {
diff --git a/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/ContainerLaunchUtils.java b/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/ContainerLaunchUtils.java
new file mode 100644
index 00000000000..ff55ba042b9
--- /dev/null
+++ b/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/ContainerLaunchUtils.java
@@ -0,0 +1,71 @@
+/*******************************************************************************
+ * Copyright (c) 2022 Red Hat Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Red Hat Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.internal.docker.launcher;
+
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Platform;
+
+public class ContainerLaunchUtils {
+
+ /**
+ * Maps the local path, to a path that is used within a docker container.
+ * @param path The host path
+ * @return the path within the docker container
+ * @see toDockerPath(String)
+ */
+ public static final String toDockerPath(IPath path) {
+ String pathstring = path.toPortableString();
+ if (path.getDevice() != null) {
+ if (pathstring.charAt(0) != '/') {
+ pathstring = '/' + pathstring;
+ }
+ }
+ return ContainerLaunchUtils.toDockerPath(pathstring);
+
+ }
+
+ /**
+ * Maps the local path, to a path that is used within a docker container.
+ * C: is mapped to /c, etc.
+ * //$WSL/<NAME>/ is a bit more tricky. For now it will be mapped to /WSL/<NAME>/
+ * @param path The host path
+ * @return the path within the docker container
+ */
+ public static final String toDockerPath(String path) {
+ if (Platform.getOS().equals(Platform.OS_WIN32)) {
+ path = path.replace(':', '/');
+ //Fix WSL which starts with //$WSL - TODO: Make more robust
+ path = path.replace("//WSL$/", "/WSL/"); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ //Ensure the path is global.
+
+ return path;
+ }
+
+ /**
+ * Convert a Path to a string that can be passed as docker volume to be mapped into the Docker container
+ * toDockerPath() is used to get the path within the Docker container.
+ * @param path The path on the hose
+ * @return The string to be passed to the docker daemon
+ */
+ public static final String toDockerVolume(IPath path) {
+ IPath p = path.makeAbsolute();
+ String rv = toDockerPath(p);
+ rv += ":HOST_FILE_SYSTEM:"; //$NON-NLS-1$
+ rv += p.toOSString();
+ rv += ":false:true"; //$NON-NLS-1$ RO=false, selected = true
+ return rv;
+ }
+
+}
diff --git a/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/ContainerPropertyTab.java b/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/ContainerPropertyTab.java
index 3e175f2093f..72bf3344fe5 100644
--- a/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/ContainerPropertyTab.java
+++ b/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/ContainerPropertyTab.java
@@ -134,7 +134,7 @@ public class ContainerPropertyTab extends AbstractCBuildPropertyTab
int index = connectionSelector.getSelectionIndex();
if (index < 0) {
connection = null;
- connectionName = "";
+ connectionName = ""; //$NON-NLS-1$
return;
}
if (connection != null)
@@ -142,7 +142,7 @@ public class ContainerPropertyTab extends AbstractCBuildPropertyTab
connection = connections[index];
connectionUri = connection.getUri();
if (!connectionName.equals(connection.getName())) {
- imageCombo.setText("");
+ imageCombo.setText(""); //$NON-NLS-1$
initialImageId = null;
refreshImages();
setVolumeControlsEnabled(new Button[] { addButton }, false);
@@ -188,6 +188,7 @@ public class ContainerPropertyTab extends AbstractCBuildPropertyTab
connectionSelectorLabel.setLayoutData(gd);
connectionSelector = new Combo(usercomp, SWT.BORDER | SWT.READ_ONLY);
+ connectionSelector.setToolTipText(Messages.ContainerTab_Connection_Selector_Tooltip);
initializeConnectionSelector();
connectionSelector.addModifyListener(connectionModifyListener);
// Following is a kludge so that on Linux the Combo is read-only but
@@ -308,7 +309,7 @@ public class ContainerPropertyTab extends AbstractCBuildPropertyTab
GridDataFactory.fillDefaults().align(SWT.FILL, SWT.TOP).grab(true, false).applyTo(addButton);
addButton.setText(WizardMessages.getString("ImageRunResourceVolVarPage.addButton")); //$NON-NLS-1$
addButton.addSelectionListener(onAddDataVolume(dataVolumesTableViewer));
- if (imageCombo.getText() != null && !imageCombo.getText().equals("")) {
+ if (imageCombo.getText() != null && !imageCombo.getText().equals("")) { //$NON-NLS-1$
setVolumeControlsEnabled(new Button[] { addButton }, true);
}
final Button editButton = new Button(buttonsContainers, SWT.NONE);
@@ -911,7 +912,7 @@ public class ContainerPropertyTab extends AbstractCBuildPropertyTab
}
imageCombo.setText(""); //$NON-NLS-1$
model.setDataVolumes(null);
- model.setSelectedDataVolumes(null);
+ model.setSelectedDataVolumes(new HashSet<>());
enableButton.setSelection(false);
setControlsEnabled(false);
}
@@ -967,8 +968,8 @@ public class ContainerPropertyTab extends AbstractCBuildPropertyTab
connection = null;
model.setConnection(null);
model.setSelectedImage(null);
- connectionUri = "";
- connectionSelector.setText("");
+ connectionUri = ""; //$NON-NLS-1$
+ connectionSelector.setText(""); //$NON-NLS-1$
}
connectionSelector.addModifyListener(connectionModifyListener);
}
diff --git a/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/ContainerPropertyVolumesModel.java b/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/ContainerPropertyVolumesModel.java
index bbcb6caf954..b520dcdd557 100644
--- a/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/ContainerPropertyVolumesModel.java
+++ b/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/ContainerPropertyVolumesModel.java
@@ -21,6 +21,7 @@ import java.util.List;
import java.util.Set;
import org.eclipse.core.databinding.observable.list.WritableList;
+import org.eclipse.core.runtime.Assert;
import org.eclipse.linuxtools.docker.core.DockerException;
import org.eclipse.linuxtools.docker.core.IDockerConnection;
import org.eclipse.linuxtools.docker.core.IDockerImage;
@@ -129,7 +130,12 @@ public class ContainerPropertyVolumesModel extends BaseDatabindingModel {
return selectedDataVolumes;
}
+ /**
+ *
+ * @param selectedDataVolumes non-<code>null</code> set of selected data volumes
+ */
public void setSelectedDataVolumes(final Set<DataVolumeModel> selectedDataVolumes) {
+ Assert.isNotNull(selectedDataVolumes);
firePropertyChange(SELECTED_DATA_VOLUMES, this.selectedDataVolumes,
this.selectedDataVolumes = selectedDataVolumes);
}
diff --git a/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/ContainerTab.java b/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/ContainerTab.java
index 2842dcc0eae..5eab9ec1ca8 100644
--- a/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/ContainerTab.java
+++ b/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/ContainerTab.java
@@ -78,7 +78,7 @@ public class ContainerTab extends AbstractLaunchConfigurationTab
private List directoriesList;
private String imageName;
private String connectionName;
- private String connectionUri = "";
+ private String connectionUri = ""; //$NON-NLS-1$
private Boolean keepValue;
private Boolean stdinValue;
private Boolean privilegedValue;
@@ -217,7 +217,7 @@ public class ContainerTab extends AbstractLaunchConfigurationTab
Composite composite = createComposite(parent, 1, 1,
GridData.VERTICAL_ALIGN_BEGINNING | GridData.HORIZONTAL_ALIGN_END);
composite.setFont(font);
- newButton = createPushButton(composite, Messages.ContainerTab_New_Button, null); //$NON-NLS-1$
+ newButton = createPushButton(composite, Messages.ContainerTab_New_Button, null);
newButton.setLayoutData(new GridData(GridData.FILL_BOTH));
GridData gdb = new GridData(GridData.VERTICAL_ALIGN_CENTER);
gdb.grabExcessHorizontalSpace = false;
@@ -231,7 +231,7 @@ public class ContainerTab extends AbstractLaunchConfigurationTab
}
});
- removeButton = createPushButton(composite, Messages.ContainerTab_Remove_Button, null); //$NON-NLS-1$
+ removeButton = createPushButton(composite, Messages.ContainerTab_Remove_Button, null);
removeButton.setLayoutData(new GridData(GridData.FILL_BOTH));
removeButton.addSelectionListener(new SelectionAdapter() {
@Override
@@ -612,7 +612,7 @@ public class ContainerTab extends AbstractLaunchConfigurationTab
tableViewer.setChecked(m, true);
}
}
- connectionUri = configuration.getAttribute(ILaunchConstants.ATTR_CONNECTION_URI, "");
+ connectionUri = configuration.getAttribute(ILaunchConstants.ATTR_CONNECTION_URI, ""); //$NON-NLS-1$
int defaultIndex = 0;
connections = DockerConnectionManager.getInstance().getConnections();
if (connections.length > 0) {
@@ -628,7 +628,7 @@ public class ContainerTab extends AbstractLaunchConfigurationTab
connectionUri = connections[0].getUri();
}
}
- imageName = configuration.getAttribute(ILaunchConstants.ATTR_IMAGE, "");
+ imageName = configuration.getAttribute(ILaunchConstants.ATTR_IMAGE, ""); //$NON-NLS-1$
imageCombo.setText(imageName);
keepValue = configuration.getAttribute(ILaunchConstants.ATTR_KEEP_AFTER_LAUNCH, false);
keepButton.setSelection(keepValue);
@@ -638,7 +638,7 @@ public class ContainerTab extends AbstractLaunchConfigurationTab
privilegedButton.setSelection(privilegedValue);
} catch (CoreException e) {
setErrorMessage(
- Messages.bind(Messages.ContainerTab_Error_Reading_Configuration, e.getStatus().getMessage())); //$NON-NLS-1$
+ Messages.bind(Messages.ContainerTab_Error_Reading_Configuration, e.getStatus().getMessage()));
DockerLaunchUIPlugin.log(e);
}
}
@@ -663,7 +663,7 @@ public class ContainerTab extends AbstractLaunchConfigurationTab
String image = launchConfig.getAttribute(ILaunchConstants.ATTR_IMAGE, (String) null);
if (image == null)
return false;
- int index = image.lastIndexOf(':'); //$NON-NLS-1$
+ int index = image.lastIndexOf(':');
if (index <= 0)
return false;
if (connection.hasImage(image.substring(0, index), image.substring(index + 1))) {
@@ -722,8 +722,8 @@ public class ContainerTab extends AbstractLaunchConfigurationTab
} else {
setErrorMessage(Messages.ContainerTab_Error_No_Connections);
connection = null;
- connectionUri = "";
- connectionSelector.setText("");
+ connectionUri = ""; //$NON-NLS-1$
+ connectionSelector.setText(""); //$NON-NLS-1$
}
connectionSelector.addModifyListener(connectionModifyListener);
}
diff --git a/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/DataVolumeModel.java b/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/DataVolumeModel.java
index fe7bfe98709..6e4474d1ac8 100644
--- a/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/DataVolumeModel.java
+++ b/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/DataVolumeModel.java
@@ -177,7 +177,7 @@ public class DataVolumeModel extends BaseDatabindingModel implements Comparable<
model.setHostPathMount(convertToWin32Path(Platform.getOS(), items[0]));
model.containerPath = items[1];
model.mountType = MountType.HOST_FILE_SYSTEM;
- if (items[2].equals("ro")) {
+ if (items[2].equals("ro")) { //$NON-NLS-1$
model.setReadOnly(true);
} else {
model.setReadOnly(false);
@@ -242,7 +242,7 @@ public class DataVolumeModel extends BaseDatabindingModel implements Comparable<
}
firePropertyChange(MOUNT_TYPE, this.mountType, this.mountType = mountType);
if (this.mountType == MountType.NONE) {
- setMount("");
+ setMount(""); //$NON-NLS-1$
}
}
diff --git a/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/ExposedPortModel.java b/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/ExposedPortModel.java
index 12e9a8cacfe..3202c8326bc 100644
--- a/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/ExposedPortModel.java
+++ b/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/ExposedPortModel.java
@@ -79,8 +79,8 @@ public class ExposedPortModel extends BaseDatabindingModel implements Comparable
public static List<String> toArrayString(final Collection<ExposedPortModel> exposedPorts) {
final List<String> exposedPortList = new ArrayList<>();
for (ExposedPortModel exposedPort : exposedPorts) {
- final String exposedPortString = exposedPort.toString();
if (exposedPort != null) {
+ final String exposedPortString = exposedPort.toString();
exposedPortList.add(exposedPortString);
}
}
@@ -101,7 +101,7 @@ public class ExposedPortModel extends BaseDatabindingModel implements Comparable
final int firstColumnSeparator = exposedPortInfo.indexOf(SEPARATOR);
if (firstColumnSeparator == -1 && exposedPortInfo.indexOf(CONTAINER_TYPE_SEPARATOR) != -1) {
final String type = exposedPortInfo.substring(exposedPortInfo.indexOf(CONTAINER_TYPE_SEPARATOR)); // $NON-NLS-1$
- final ExposedPortModel exposedPort = new ExposedPortModel(privatePort, type, "", privatePort); // $NON-NLS-1$
+ final ExposedPortModel exposedPort = new ExposedPortModel(privatePort, type, "", privatePort); //$NON-NLS-1$
return exposedPort; // $NON-NLS-1$
} else {
final int secondColumnSeparator = exposedPortInfo.indexOf(SEPARATOR, firstColumnSeparator + 1);
@@ -223,7 +223,7 @@ public class ExposedPortModel extends BaseDatabindingModel implements Comparable
public String toString() {
StringBuffer buffer = new StringBuffer();
buffer.append(containerPort + CONTAINER_TYPE_SEPARATOR + portType + SEPARATOR
- + (hostAddress != null ? hostAddress : "") + SEPARATOR + hostPort + SEPARATOR + selected);
+ + (hostAddress != null ? hostAddress : "") + SEPARATOR + hostPort + SEPARATOR + selected); //$NON-NLS-1$
return buffer.toString();
}
diff --git a/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/GdbDebuggerPage.java b/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/GdbDebuggerPage.java
index d5a20d1933a..ec5baddf34b 100644
--- a/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/GdbDebuggerPage.java
+++ b/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/GdbDebuggerPage.java
@@ -31,6 +31,8 @@ import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CTabFolder;
+import org.eclipse.swt.custom.CTabItem;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
@@ -44,8 +46,6 @@ import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.TabFolder;
-import org.eclipse.swt.widgets.TabItem;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.PlatformUI;
@@ -53,7 +53,7 @@ import org.eclipse.ui.PlatformUI;
* The dynamic tab for gdb-based debugger implementations.
*/
public class GdbDebuggerPage extends AbstractCDebuggerPage implements Observer {
- protected TabFolder fTabFolder;
+ protected CTabFolder fTabFolder;
protected Text fGDBCommandText;
protected Text fGDBInitText;
protected Button fNonStopCheckBox;
@@ -77,7 +77,7 @@ public class GdbDebuggerPage extends AbstractCDebuggerPage implements Observer {
Composite comp = new Composite(parent, SWT.NONE);
comp.setLayout(new GridLayout());
comp.setLayoutData(new GridData(GridData.FILL_BOTH));
- fTabFolder = new TabFolder(comp, SWT.NONE);
+ fTabFolder = new CTabFolder(comp, SWT.NONE);
fTabFolder.setLayoutData(new GridData(GridData.FILL_BOTH | GridData.GRAB_VERTICAL));
createTabs(fTabFolder);
fTabFolder.setSelection(0);
@@ -113,7 +113,7 @@ public class GdbDebuggerPage extends AbstractCDebuggerPage implements Observer {
setErrorMessage(null);
setMessage(null);
} else {
- setErrorMessage(Messages.GDBDebuggerPage0); //$NON-NLS-1$
+ setErrorMessage(Messages.GDBDebuggerPage0);
setMessage(null);
}
return valid;
@@ -261,13 +261,13 @@ public class GdbDebuggerPage extends AbstractCDebuggerPage implements Observer {
return block;
}
- public void createTabs(TabFolder tabFolder) {
+ public void createTabs(CTabFolder tabFolder) {
createMainTab(tabFolder);
createSolibTab(tabFolder);
}
- public void createMainTab(TabFolder tabFolder) {
- TabItem tabItem = new TabItem(tabFolder, SWT.NONE);
+ public void createMainTab(CTabFolder tabFolder) {
+ CTabItem tabItem = new CTabItem(tabFolder, SWT.NONE);
tabItem.setText(Messages.GDBDebuggerPage_main_tab_name);
Composite comp = ControlFactory.createCompositeEx(tabFolder, 1, GridData.FILL_BOTH);
((GridLayout) comp.getLayout()).makeColumnsEqualWidth = false;
@@ -423,8 +423,8 @@ public class GdbDebuggerPage extends AbstractCDebuggerPage implements Observer {
fTracepointModeCombo.select(0);
}
- public void createSolibTab(TabFolder tabFolder) {
- TabItem tabItem = new TabItem(tabFolder, SWT.NONE);
+ public void createSolibTab(CTabFolder tabFolder) {
+ CTabItem tabItem = new CTabItem(tabFolder, SWT.NONE);
tabItem.setText(Messages.GDBDebuggerPage10);
Composite comp = ControlFactory.createCompositeEx(fTabFolder, 1, GridData.FILL_BOTH);
comp.setFont(tabFolder.getFont());
diff --git a/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/Messages.java b/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/Messages.java
index 3d2565222d2..ebe386b5df4 100644
--- a/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/Messages.java
+++ b/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/Messages.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2012, 2018 Red Hat, Inc.
+ * Copyright (c) 2012, 2022 Red Hat, Inc.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -32,12 +32,12 @@ public class Messages extends NLS {
public static String LaunchShortcut_Launcher;
public static String Default_Image;
public static String Keep_Container_After_Launch;
+
public static String ContainerTab_Name;
public static String ContainerTab_Group_Name;
public static String ContainerTab_Option_Group_Name;
public static String ContainerTab_Ports_Group_Name;
public static String ContainerTab_Specify_Ports_Label;
-
public static String ContainerTab_Add_Button;
public static String ContainerTab_Edit_Button;
public static String ContainerTab_New_Button;
@@ -48,6 +48,7 @@ public class Messages extends NLS {
public static String ContainerTab_Privileged_Mode_Label;
public static String ContainerTab_Error_Reading_Configuration;
public static String ContainerTab_Connection_Selector_Label;
+ public static String ContainerTab_Connection_Selector_Tooltip;
public static String ContainerTab_Image_Selector_Label;
public static String ContainerTab_Port_Column;
public static String ContainerTab_Type_Column;
@@ -59,6 +60,8 @@ public class Messages extends NLS {
public static String ContainerTab_Warning_Connection_Not_Found;
public static String ContainerTab_Warning_Image_Not_Found;
+ public static String ContainerTargetTypeProviderJobGroup_name;
+
public static String HeaderPreferencePage_Connection_Label;
public static String HeaderPreferencePage_Image_Label;
public static String HeaderPreferencePage_Remove_Label;
@@ -120,6 +123,7 @@ public class Messages extends NLS {
public static String ContainerTarget_name;
public static String ContainerCommandLauncher_invalid_values;
+ public static String ContainerCommandLauncher_invalid_container_type;
public static String Gdbserver_Settings_Remotetimeout_label;
diff --git a/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/RemoteDebuggerPage.java b/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/RemoteDebuggerPage.java
index a9f73175295..deb55bc7dde 100644
--- a/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/RemoteDebuggerPage.java
+++ b/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/RemoteDebuggerPage.java
@@ -24,6 +24,8 @@ import org.eclipse.core.runtime.CoreException;
import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CTabFolder;
+import org.eclipse.swt.custom.CTabItem;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
@@ -33,8 +35,6 @@ import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.TabFolder;
-import org.eclipse.swt.widgets.TabItem;
import org.eclipse.swt.widgets.Text;
/**
@@ -121,8 +121,8 @@ public class RemoteDebuggerPage extends GdbDebuggerPage {
configuration.setAttribute(IGDBLaunchConfigurationConstants.ATTR_DEBUGGER_REMOTE_TIMEOUT_VALUE, str);
}
- protected void createGdbserverSettingsTab(TabFolder tabFolder) {
- TabItem tabItem = new TabItem(tabFolder, SWT.NONE);
+ protected void createGdbserverSettingsTab(CTabFolder tabFolder) {
+ CTabItem tabItem = new CTabItem(tabFolder, SWT.NONE);
tabItem.setText(Messages.Gdbserver_Settings_Tab_Name);
Composite comp = new Composite(tabFolder, SWT.NULL);
@@ -201,7 +201,7 @@ public class RemoteDebuggerPage extends GdbDebuggerPage {
}
@Override
- public void createTabs(TabFolder tabFolder) {
+ public void createTabs(CTabFolder tabFolder) {
super.createTabs(tabFolder);
createGdbserverSettingsTab(tabFolder);
}
diff --git a/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/SWTImagesFactory.java b/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/SWTImagesFactory.java
index f05af735723..b542aaa3b82 100644
--- a/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/SWTImagesFactory.java
+++ b/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/SWTImagesFactory.java
@@ -46,11 +46,11 @@ public class SWTImagesFactory {
public static final String IMG_WARNING = NAME_PREFIX + "warning_obj.gif"; //$NON-NLS-1$
public static final String IMG_ERROR = NAME_PREFIX + "error_obj.gif"; //$NON-NLS-1$
- public static final ImageDescriptor DESC_CONTAINER = createManaged("", IMG_CONTAINER);
- public static final ImageDescriptor DESC_FOLDER_CLOSED = createManaged("", IMG_FOLDER_CLOSED);
- public static final ImageDescriptor DESC_FILE = createManaged("", IMG_FILE);
- public static final ImageDescriptor DESC_WARNING = createManaged("", IMG_WARNING);
- public static final ImageDescriptor DESC_ERROR = createManaged("", IMG_ERROR);
+ public static final ImageDescriptor DESC_CONTAINER = createManaged("", IMG_CONTAINER); //$NON-NLS-1$
+ public static final ImageDescriptor DESC_FOLDER_CLOSED = createManaged("", IMG_FOLDER_CLOSED); //$NON-NLS-1$
+ public static final ImageDescriptor DESC_FILE = createManaged("", IMG_FILE); //$NON-NLS-1$
+ public static final ImageDescriptor DESC_WARNING = createManaged("", IMG_WARNING); //$NON-NLS-1$
+ public static final ImageDescriptor DESC_ERROR = createManaged("", IMG_ERROR); //$NON-NLS-1$
private static ImageDescriptor createManaged(String prefix, String name) {
return createManaged(imageRegistry, prefix, name);
diff --git a/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/messages.properties b/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/messages.properties
index 4a9999226d8..c2542845474 100644
--- a/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/messages.properties
+++ b/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/messages.properties
@@ -1,5 +1,5 @@
#*******************************************************************************
-# Copyright (c) 2015, 2018 Red Hat.
+# Copyright (c) 2015, 2022 Red Hat.
#
# This program and the accompanying materials
# are made available under the terms of the Eclipse Public License 2.0
@@ -41,6 +41,7 @@ ContainerTab_Specify_Ports_Label=Manually specify ports and only publish selecte
ContainerTab_Publish_All_Ports_Label=Publish all default exposed ports for image to random ports on the host
ContainerTab_Option_Group_Name=Additional Options
ContainerTab_Connection_Selector_Label=Connection:\u0020
+ContainerTab_Connection_Selector_Tooltip=The connections can be managed in the "Docker Explorer" window
ContainerTab_Image_Selector_Label=Image:
ContainerTab_Port_Column=Container Port
ContainerTab_Type_Column=Type
@@ -52,6 +53,8 @@ ContainerTab_Error_No_Images=No Docker Images exist
ContainerTab_Warning_Connection_Not_Found=Docker Connection: {0} for Launch Configuration not found: defaulting to {1}
ContainerTab_Warning_Image_Not_Found=Docker Image: {0} is not a valid pulled image in current Connection: {1}
+ContainerTargetTypeProviderJobGroup_name=Detecting and checking for valid Container Launch Targets
+
ContainerPortDialog_shellTitle=Exposing a Container Port
ContainerPortDialog_explanationLabel=Specify the container port to expose:
ContainerPortDialog_containerLabel=Container port:
@@ -74,6 +77,7 @@ HeaderPreferencePage_Confirm_Removal_Msg=Confirm removal of specified cached hea
ContainerCommandLauncher_image_msg=[Running in image <{0}>]
ContainerCommandLauncher_invalid_values=Invalid values for Connection and/or Image name
+ContainerCommandLauncher_invalid_container_type=Toolchain is not a Linux Container toolchain
CommandLauncher_CommandCancelled=Command cancelled
diff --git a/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/ui/launchbar/ContainerGCCToolChain.java b/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/ui/launchbar/ContainerGCCToolChain.java
index afcd8d5669e..be0bd7fb2d3 100644
--- a/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/ui/launchbar/ContainerGCCToolChain.java
+++ b/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/ui/launchbar/ContainerGCCToolChain.java
@@ -213,7 +213,7 @@ public class ContainerGCCToolChain extends PlatformObject implements IToolChain,
if (baseScannerInfo.getDefinedSymbols() != null) {
for (Map.Entry<String, String> macro : baseScannerInfo.getDefinedSymbols().entrySet()) {
if (macro.getValue() != null && !macro.getValue().isEmpty()) {
- commandLine.add("-D" + macro.getKey() + "=" + macro.getValue()); //$NON-NLS-1$
+ commandLine.add("-D" + macro.getKey() + "=" + macro.getValue()); //$NON-NLS-1$ //$NON-NLS-2$
} else {
commandLine.add("-D" + macro.getKey()); //$NON-NLS-1$
}
@@ -331,7 +331,7 @@ public class ContainerGCCToolChain extends PlatformObject implements IToolChain,
if (baseScannerInfo.getDefinedSymbols() != null) {
for (Map.Entry<String, String> macro : baseScannerInfo.getDefinedSymbols().entrySet()) {
if (macro.getValue() != null && !macro.getValue().isEmpty()) {
- commandLine.add("-D" + macro.getKey() + "=" + macro.getValue()); //$NON-NLS-1$
+ commandLine.add("-D" + macro.getKey() + "=" + macro.getValue()); //$NON-NLS-1$ //$NON-NLS-2$
} else {
commandLine.add("-D" + macro.getKey()); //$NON-NLS-1$
}
diff --git a/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/ui/launchbar/NewContainerTargetWizardPage.java b/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/ui/launchbar/NewContainerTargetWizardPage.java
index 986d441745c..fd582c7e1ee 100644
--- a/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/ui/launchbar/NewContainerTargetWizardPage.java
+++ b/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/ui/launchbar/NewContainerTargetWizardPage.java
@@ -58,7 +58,7 @@ public class NewContainerTargetWizardPage extends WizardPage
private IDockerImageListener wizardPage;
private String imageName;
private String connectionName;
- private String connectionUri = "";
+ private String connectionUri = ""; //$NON-NLS-1$
public NewContainerTargetWizardPage(ILaunchTarget launchTarget) {
super(NewContainerTargetWizardPage.class.getName());
@@ -259,8 +259,8 @@ public class NewContainerTargetWizardPage extends WizardPage
} else {
setErrorMessage(Messages.NewContainerTargetWizardPage_no_connections);
connection = null;
- connectionUri = "";
- connectionSelector.setText("");
+ connectionUri = ""; //$NON-NLS-1$
+ connectionSelector.setText(""); //$NON-NLS-1$
}
connectionSelector.addModifyListener(connectionModifyListener);
}
diff --git a/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/ui/preferences/PreferenceInitializer.java b/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/ui/preferences/PreferenceInitializer.java
index 3e989fa6700..06b755cf0f0 100644
--- a/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/ui/preferences/PreferenceInitializer.java
+++ b/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/ui/preferences/PreferenceInitializer.java
@@ -23,7 +23,7 @@ public class PreferenceInitializer extends AbstractPreferenceInitializer {
@Override
public void initializeDefaultPreferences() {
IPreferenceStore store = DockerLaunchUIPlugin.getDefault().getPreferenceStore();
- store.setDefault(PreferenceConstants.DEFAULT_IMAGE, "");
+ store.setDefault(PreferenceConstants.DEFAULT_IMAGE, ""); //$NON-NLS-1$
store.setDefault(PreferenceConstants.KEEP_CONTAINER_AFTER_LAUNCH, false);
}
diff --git a/launch/org.eclipse.cdt.flatpak.launcher-feature/.project b/launch/org.eclipse.cdt.flatpak.launcher-feature/.project
new file mode 100644
index 00000000000..629c28e0d64
--- /dev/null
+++ b/launch/org.eclipse.cdt.flatpak.launcher-feature/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.cdt.flatpak.launcher-feature</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.pde.FeatureBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.FeatureNature</nature>
+ </natures>
+</projectDescription>
diff --git a/launch/org.eclipse.cdt.flatpak.launcher-feature/.settings/org.eclipse.core.resources.prefs b/launch/org.eclipse.cdt.flatpak.launcher-feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/launch/org.eclipse.cdt.flatpak.launcher-feature/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino-feature/build.properties b/launch/org.eclipse.cdt.flatpak.launcher-feature/build.properties
index b3a611b5c93..b3a611b5c93 100644
--- a/toolchains/arduino/org.eclipse.cdt.arduino-feature/build.properties
+++ b/launch/org.eclipse.cdt.flatpak.launcher-feature/build.properties
diff --git a/launch/org.eclipse.cdt.flatpak.launcher-feature/feature.properties b/launch/org.eclipse.cdt.flatpak.launcher-feature/feature.properties
new file mode 100644
index 00000000000..d2607680dc3
--- /dev/null
+++ b/launch/org.eclipse.cdt.flatpak.launcher-feature/feature.properties
@@ -0,0 +1,22 @@
+#################################################################################
+# Copyright (c) 2020, 2021 Red Hat, Inc.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Red Hat Incorporated - initial API and implementation
+#################################################################################
+featureName=C/C++ Flatpak Launch Support
+description=Plugins for launching C/C++ applications in Eclipse Flatpak.
+provider=Eclipse CDT
+copyright=\
+Copyright (c) 2020, 2021 Red Hat, Inc. and others.\n\
+This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License 2.0\n\
+which accompanies this distribution, and is available at\n\
+https://www.eclipse.org/legal/epl-2.0/
diff --git a/launch/org.eclipse.cdt.flatpak.launcher-feature/feature.xml b/launch/org.eclipse.cdt.flatpak.launcher-feature/feature.xml
new file mode 100644
index 00000000000..8c3a3bc8e5d
--- /dev/null
+++ b/launch/org.eclipse.cdt.flatpak.launcher-feature/feature.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2020, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
+<feature
+ id="org.eclipse.cdt.flatpak.launcher"
+ label="%featureName"
+ version="10.7.0.qualifier"
+ provider-name="%provider"
+ license-feature="org.eclipse.license"
+ license-feature-version="0.0.0">
+
+ <description url="http://www.example.com/description">
+ %description
+ </description>
+
+ <copyright>
+ %copyright
+ </copyright>
+
+ <license url="%licenseURL">
+ %license
+ </license>
+
+ <plugin
+ id="org.eclipse.cdt.flatpak.launcher"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+</feature>
diff --git a/launch/org.eclipse.cdt.flatpak.launcher-feature/pom.xml b/launch/org.eclipse.cdt.flatpak.launcher-feature/pom.xml
new file mode 100644
index 00000000000..7284f5ff6a9
--- /dev/null
+++ b/launch/org.eclipse.cdt.flatpak.launcher-feature/pom.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2020, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
+<project
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+ xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.cdt</groupId>
+ <artifactId>cdt-parent</artifactId>
+ <version>10.7.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent>
+
+ <groupId>org.eclipse.cdt.features</groupId>
+ <artifactId>org.eclipse.cdt.flatpak.launcher</artifactId>
+ <packaging>eclipse-feature</packaging>
+</project>
diff --git a/launch/org.eclipse.cdt.flatpak.launcher/.classpath b/launch/org.eclipse.cdt.flatpak.launcher/.classpath
new file mode 100644
index 00000000000..e801ebfb468
--- /dev/null
+++ b/launch/org.eclipse.cdt.flatpak.launcher/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/lsp/org.eclipse.cdt.lsp.core/.gitignore b/launch/org.eclipse.cdt.flatpak.launcher/.gitignore
index ae3c1726048..ae3c1726048 100644
--- a/lsp/org.eclipse.cdt.lsp.core/.gitignore
+++ b/launch/org.eclipse.cdt.flatpak.launcher/.gitignore
diff --git a/launch/org.eclipse.cdt.flatpak.launcher/.project b/launch/org.eclipse.cdt.flatpak.launcher/.project
new file mode 100644
index 00000000000..60ab768d2df
--- /dev/null
+++ b/launch/org.eclipse.cdt.flatpak.launcher/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.cdt.flatpak.launcher</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+ </natures>
+</projectDescription>
diff --git a/launch/org.eclipse.cdt.flatpak.launcher/.settings/org.eclipse.core.resources.prefs b/launch/org.eclipse.cdt.flatpak.launcher/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/launch/org.eclipse.cdt.flatpak.launcher/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/launch/org.eclipse.cdt.flatpak.launcher/.settings/org.eclipse.jdt.core.prefs b/launch/org.eclipse.cdt.flatpak.launcher/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..e3a8104f9ca
--- /dev/null
+++ b/launch/org.eclipse.cdt.flatpak.launcher/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/releng/org.eclipse.cdt.target/.settings/org.eclipse.jdt.launching.prefs b/launch/org.eclipse.cdt.flatpak.launcher/.settings/org.eclipse.jdt.launching.prefs
index f8a131b56e0..f8a131b56e0 100644
--- a/releng/org.eclipse.cdt.target/.settings/org.eclipse.jdt.launching.prefs
+++ b/launch/org.eclipse.cdt.flatpak.launcher/.settings/org.eclipse.jdt.launching.prefs
diff --git a/launch/org.eclipse.cdt.flatpak.launcher/.settings/org.eclipse.jdt.ui.prefs b/launch/org.eclipse.cdt.flatpak.launcher/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/launch/org.eclipse.cdt.flatpak.launcher/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/xlc/org.eclipse.cdt.errorparsers.xlc/.settings/org.eclipse.pde.api.tools.prefs b/launch/org.eclipse.cdt.flatpak.launcher/.settings/org.eclipse.pde.api.tools.prefs
index ec9fbf321d0..ec9fbf321d0 100644
--- a/xlc/org.eclipse.cdt.errorparsers.xlc/.settings/org.eclipse.pde.api.tools.prefs
+++ b/launch/org.eclipse.cdt.flatpak.launcher/.settings/org.eclipse.pde.api.tools.prefs
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/.settings/org.eclipse.pde.prefs b/launch/org.eclipse.cdt.flatpak.launcher/.settings/org.eclipse.pde.prefs
index d2dc703ba9e..d2dc703ba9e 100644
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc/.settings/org.eclipse.pde.prefs
+++ b/launch/org.eclipse.cdt.flatpak.launcher/.settings/org.eclipse.pde.prefs
diff --git a/launch/org.eclipse.cdt.flatpak.launcher/META-INF/MANIFEST.MF b/launch/org.eclipse.cdt.flatpak.launcher/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..3d4016994ec
--- /dev/null
+++ b/launch/org.eclipse.cdt.flatpak.launcher/META-INF/MANIFEST.MF
@@ -0,0 +1,34 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %Plugin.name
+Bundle-SymbolicName: org.eclipse.cdt.flatpak.launcher;singleton:=true
+Bundle-Version: 1.0.400.qualifier
+Bundle-Activator: org.eclipse.cdt.flatpak.launcher.FlatpakLaunchPlugin
+Bundle-Vendor: %Plugin.vendor
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.cdt.launch;bundle-version="7.1.0",
+ org.eclipse.debug.core;bundle-version="3.9.1",
+ org.eclipse.debug.ui;bundle-version="3.10.1",
+ org.eclipse.cdt.core;bundle-version="6.5.0",
+ org.eclipse.cdt.debug.core;bundle-version="7.5.0",
+ org.eclipse.cdt.ui;bundle-version="5.8.0",
+ org.eclipse.ui.ide;bundle-version="3.10.1",
+ org.eclipse.cdt.debug.ui;bundle-version="7.5.0",
+ org.eclipse.cdt.dsf.gdb;bundle-version="4.6.0",
+ org.eclipse.cdt.dsf.gdb.ui;bundle-version="2.4.0",
+ org.eclipse.core.variables,
+ org.eclipse.cdt.managedbuilder.ui,
+ org.eclipse.cdt.managedbuilder.core,
+ org.eclipse.core.databinding.observable,
+ org.eclipse.core.databinding.beans,
+ org.eclipse.jface.databinding,
+ org.eclipse.core.databinding;bundle-version="1.6.0",
+ org.eclipse.core.databinding.property;bundle-version="1.6.0",
+ org.eclipse.launchbar.ui;bundle-version="2.2.0",
+ com.google.gson
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.cdt.flatpak.launcher
+Automatic-Module-Name: org.eclipse.cdt.flatpak.launcher
diff --git a/launch/org.eclipse.cdt.flatpak.launcher/about.html b/launch/org.eclipse.cdt.flatpak.launcher/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/launch/org.eclipse.cdt.flatpak.launcher/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/launch/org.eclipse.cdt.flatpak.launcher/about.ini b/launch/org.eclipse.cdt.flatpak.launcher/about.ini
new file mode 100644
index 00000000000..e07a7bb377e
--- /dev/null
+++ b/launch/org.eclipse.cdt.flatpak.launcher/about.ini
@@ -0,0 +1,24 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%blurb
+
+# Property "windowImage" contains path to window icon (16x16)
+# needed for primary features only
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=cdt_logo_icon32.png
+
+# Property "aboutImage" contains path to product image (500x330 or 115x164)
+# needed for primary features only
+
+# Property "appName" contains name of the application (translated)
+# needed for primary features only
+
+# Property "welcomePerspective" contains the id of the perspective in which the
+# welcome page is to be opened.
+# optional
diff --git a/launch/org.eclipse.cdt.flatpak.launcher/about.mappings b/launch/org.eclipse.cdt.flatpak.launcher/about.mappings
new file mode 100644
index 00000000000..936a8039c3e
--- /dev/null
+++ b/launch/org.eclipse.cdt.flatpak.launcher/about.mappings
@@ -0,0 +1,9 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+# The following should contain the build version.
+# e.g. "0=20200106-1728"
+# This value will be added automatically via the build scripts
+0=${buildId}
diff --git a/launch/org.eclipse.cdt.flatpak.launcher/about.properties b/launch/org.eclipse.cdt.flatpak.launcher/about.properties
new file mode 100644
index 00000000000..941d10b0e1d
--- /dev/null
+++ b/launch/org.eclipse.cdt.flatpak.launcher/about.properties
@@ -0,0 +1,32 @@
+###############################################################################
+# Copyright (c) 2020, 2022 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+# about.properties
+# contains externalized strings for about.ini
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# fill-ins are supplied by about.mappings
+# This file should be translated.
+# NOTE TO TRANSLATOR: Please do not translate the featureVersion variable.
+
+
+blurb=C/C++ Flatpak Launch Support\n\
+\n\
+Version: {featureVersion}\n\
+Build id: {0}\n\
+\n\
+Copyright (c) 2020, 2022 Contributors to the Eclipse Foundation
+\n\
+See the NOTICE file(s) distributed with this work for additional\n\
+information regarding copyright ownership.\n\
+\n\
+Visit http://www.eclipse.org/cdt
diff --git a/launch/org.eclipse.cdt.flatpak.launcher/build.properties b/launch/org.eclipse.cdt.flatpak.launcher/build.properties
new file mode 100644
index 00000000000..9c548b3b846
--- /dev/null
+++ b/launch/org.eclipse.cdt.flatpak.launcher/build.properties
@@ -0,0 +1,26 @@
+###############################################################################
+# Copyright (c) 2020 Red Hat Inc. and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Red Hat Inc. - initial API and implementation
+###############################################################################
+source.. = src/
+output.. = bin/
+bin.includes = plugin.xml,\
+ META-INF/,\
+ .,\
+ plugin.properties,\
+ about.html,\
+ cdt_logo_icon32.png,\
+ about.properties,\
+ about.mappings,\
+ about.ini,\
+ schema/
+src.includes = about.html
diff --git a/launch/org.eclipse.cdt.flatpak.launcher/cdt_logo_icon32.png b/launch/org.eclipse.cdt.flatpak.launcher/cdt_logo_icon32.png
new file mode 100644
index 00000000000..470ca81b327
--- /dev/null
+++ b/launch/org.eclipse.cdt.flatpak.launcher/cdt_logo_icon32.png
Binary files differ
diff --git a/launch/org.eclipse.cdt.flatpak.launcher/plugin.properties b/launch/org.eclipse.cdt.flatpak.launcher/plugin.properties
new file mode 100644
index 00000000000..d7ccc1d29ff
--- /dev/null
+++ b/launch/org.eclipse.cdt.flatpak.launcher/plugin.properties
@@ -0,0 +1,19 @@
+###############################################################################
+# Copyright (c) 2020 Red Hat Inc. and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Red Hat Inc. - initial API and implementation
+###############################################################################
+Plugin.name=C/C++ Flatpak Launch Plug-in
+Plugin.vendor=Eclipse CDT
+Delegate.name=C/C++ Flatpak Launcher
+Delegate.desc=This launcher supports C/C++ development on Eclipse flatpak.
+FlatpakHeaderPreferencePage.name=Workspace Cached Headers
+FlatpakPreferencePages.name=Flatpak Preference Pages
diff --git a/launch/org.eclipse.cdt.flatpak.launcher/plugin.xml b/launch/org.eclipse.cdt.flatpak.launcher/plugin.xml
new file mode 100644
index 00000000000..1fb70774c4f
--- /dev/null
+++ b/launch/org.eclipse.cdt.flatpak.launcher/plugin.xml
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+<plugin
+>
+ <extension-point id="flatpakPreferencePages" name="%FlatpakPreferencePages.name" schema="schema/flatpakPreferencePages.exsd"/>
+<!--
+ <extension
+ point="org.eclipse.debug.core.launchConfigurationTypes">
+ <launchConfigurationType
+ id="org.eclipse.cdt.flatpak.launcher.launchConfigurationType"
+ name="%LaunchConfigurationType.name"
+ public="true">
+ </launchConfigurationType>
+ </extension>
+ <extension point="org.eclipse.debug.core.launchDelegates">
+ <launchDelegate
+ id="org.eclipse.cdt.flatpak.launcher.launchConfigurationType"
+ type="org.eclipse.cdt.flatpak.launcher.launchConfigurationType"
+ modes="run,debug"
+ name="%LaunchConfigurationType.name"
+ delegate="org.eclipse.cdt.internal.flatpak.launcher.FlatpakLaunchConfigurationDelegate"
+ delegateDescription="%Delegate.desc"
+ sourceLocatorId="org.eclipse.cdt.debug.core.sourceLocator"
+ sourcePathComputerId="org.eclipse.cdt.debug.core.sourcePathComputer">
+ </launchDelegate>
+ </extension>
+ <extension
+ point="org.eclipse.debug.ui.launchConfigurationTabGroups">
+ <launchConfigurationTabGroup
+ class="org.eclipse.cdt.internal.flatpak.launcher.FlatpakLaunchConfigurationTabGroup"
+ id="org.eclipse.cdt.flatpak.launcher.launchConfigurationTabGroup"
+ type="org.eclipse.cdt.flatpak.launcher.launchConfigurationType">
+ </launchConfigurationTabGroup>
+ </extension>
+ <extension
+ point="org.eclipse.core.runtime.preferences">
+ <initializer
+ class="org.eclipse.cdt.internal.flatpak.launcher.ui.preferences.PreferenceInitializer">
+ </initializer>
+ </extension>
+ <extension
+ point="org.eclipse.debug.ui.launchConfigurationTypeImages">
+ <launchConfigurationTypeImage
+ configTypeID="org.eclipse.cdt.flatpak.launcher.launchConfigurationType"
+ icon="icons/c_app.gif"
+ id="org.eclipse.cdt.flatpak.launcher.launchConfigurationTypeImage1">
+ </launchConfigurationTypeImage>
+ </extension>
+ <extension
+ point="org.eclipse.launchbar.core.launchTargetTypes">
+ <launchTargetType
+ id="org.eclipse.cdt.flatpak.launcher.launchTargetType.flatpak"
+ provider="org.eclipse.cdt.flatpak.launcher.FlatpakTargetTypeProvider">
+ </launchTargetType>
+ </extension>
+ <extension
+ point="org.eclipse.launchbar.ui.launchTargetTypeUI">
+ <launchTargetTypeUI
+ id="org.eclipse.cdt.flatpak.launcher.launchTargetType.flatpak"
+ labelProvider="org.eclipse.cdt.internal.flatpak.launcher.ui.launchbar.FlatpakTargetLabelProvider">
+ </launchTargetTypeUI>
+ <wizard2
+ class="org.eclipse.cdt.internal.flatpak.launcher.ui.launchbar.NewFlatpakTargetWizard"
+ icon="icons/repository-middle.gif"
+ id="org.eclipse.cdt.flatpak.launcher.launchTargetType.flatpak"
+ name="%ContainerTarget.name">
+ </wizard2>
+ </extension>
+ -->
+ <extension
+ point="org.eclipse.cdt.core.CommandLauncherFactory">
+ <factory
+ class="org.eclipse.cdt.flatpak.launcher.FlatpakCommandLauncherFactory"
+ id="FlatpakCommandLauncherFactory"
+ priority="0">
+ </factory>
+ </extension>
+ <extension
+ point="org.eclipse.cdt.flatpak.launcher.flatpakPreferencePages">
+ <page
+ category="org.eclipse.cdt.ui.preferences.CPluginPreferencePage"
+ class="org.eclipse.cdt.internal.flatpak.launcher.ui.preferences.FlatpakHeaderPreferencePage"
+ id="org.eclipse.cdt.flatpak.launcher.page2"
+ name="%FlatpakHeaderPreferencePage.name">
+ </page>
+ </extension>
+
+</plugin>
diff --git a/launch/org.eclipse.cdt.flatpak.launcher/schema/flatpakPreferencePages.exsd b/launch/org.eclipse.cdt.flatpak.launcher/schema/flatpakPreferencePages.exsd
new file mode 100644
index 00000000000..32ae448716d
--- /dev/null
+++ b/launch/org.eclipse.cdt.flatpak.launcher/schema/flatpakPreferencePages.exsd
@@ -0,0 +1,175 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.cdt.flatpak.launcher" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+ <appInfo>
+ <meta.schema plugin="org.eclipse.cdt.flatpak.launcher" id="flatpakPreferencePages" name="flatpakPreferencePages"/>
+ </appInfo>
+ <documentation>
+ Specify a Preference page which only gets added if running under Eclipse flatpak
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <complexType>
+ <sequence>
+ <element ref="page" minOccurs="1" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+ a fully qualified identifier of the target extension point
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+ an optional identifier of the extension instance
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+ an optional name of the extension instance
+ </documentation>
+ <appInfo>
+ <meta.attribute translatable="true"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="page">
+ <annotation>
+ <appInfo>
+ <meta.element labelAttribute="name"/>
+ </appInfo>
+ </annotation>
+ <complexType>
+ <sequence>
+ <element ref="keywordReference" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="id" type="string" use="required">
+ <annotation>
+ <documentation>
+ a unique name that will be used to identify the page
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string" use="required">
+ <annotation>
+ <documentation>
+ a translatable name that will be used in the UI for this page
+ </documentation>
+ <appInfo>
+ <meta.attribute translatable="true"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ <attribute name="class" type="string" use="required">
+ <annotation>
+ <documentation>
+ A class that implements org.eclipse.ui.IWorkbenchPreferencePage
+ </documentation>
+ <appInfo>
+ <meta.attribute kind="java" basedOn="org.eclipse.jface.preference.PreferencePage:org.eclipse.ui.IWorkbenchPreferencePage"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ <attribute name="category" type="string">
+ <annotation>
+ <documentation>
+ a path indicating the location of the page in the preference tree. The path may either be a parent node ID or a sequence
+ of IDs separated by &amp;apos;/&amp;apos;, representing the full path from the root node.
+ </documentation>
+ <appInfo>
+ <meta.attribute kind="identifier" basedOn="org.eclipse.ui.preferencePages/page/@id"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="keywordReference">
+ <annotation>
+ <documentation>
+ A reference by a preference page to a keyword. See the keywords extension point.
+ </documentation>
+ </annotation>
+ <complexType>
+ <attribute name="id" type="string" use="required">
+ <annotation>
+ <documentation>
+ The id of the keyword being referred to.
+ </documentation>
+ <appinfo>
+ <meta.attribute kind="identifier" basedOn="org.eclipse.ui.keywords/keyword/@id"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="since"/>
+ </appInfo>
+ <documentation>
+ 10.0.0
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="examples"/>
+ </appInfo>
+ <documentation>
+ The following is an example for the preference extension point:
+&lt;p&gt;
+&lt;pre&gt;
+ &lt;extension
+ point=&quot;org.eclipse.cdt.flatpak.launch.preferencePages&quot;&gt;
+ &lt;page
+ id=&quot;com.xyz.prefpage1&quot;
+ name=&quot;XYZ&quot;
+ class=&quot;com.xyz.prefpages.PrefPage1&quot;&gt;
+ &lt;keywordReference id=&quot;xyz.Keyword&quot;/&gt;
+ &lt;/page&gt;
+ &lt;page
+ id=&quot;com.xyz.prefpage2&quot;
+ name=&quot;Keyboard Settings&quot;
+ class=&quot;com.xyz.prefpages.PrefPage2&quot;
+ category=&quot;com.xyz.prefpage1&quot;&gt;
+ &lt;/page&gt;
+ &lt;/extension&gt;
+&lt;/pre&gt;
+&lt;/p&gt;
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="apiinfo"/>
+ </appInfo>
+ <documentation>
+ The value of the attribute class must represent a fully qualified name of the class that implements
+&lt;samp&gt;org.eclipse.ui.IWorkbenchPreferencePage&lt;/samp&gt;.
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="implementation"/>
+ </appInfo>
+ <documentation>
+ The workbench adds several pages for setting the preferences of the platform. Pages registered
+through this extension will be added after them according to their category information but only if
+running under Eclipse flatpak.
+ </documentation>
+ </annotation>
+
+
+</schema>
diff --git a/launch/org.eclipse.cdt.flatpak.launcher/src/org/eclipse/cdt/flatpak/launcher/FlatpakCommandLauncher.java b/launch/org.eclipse.cdt.flatpak.launcher/src/org/eclipse/cdt/flatpak/launcher/FlatpakCommandLauncher.java
new file mode 100644
index 00000000000..8a016c6ff16
--- /dev/null
+++ b/launch/org.eclipse.cdt.flatpak.launcher/src/org/eclipse/cdt/flatpak/launcher/FlatpakCommandLauncher.java
@@ -0,0 +1,22 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Red Hat Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Red Hat Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.flatpak.launcher;
+
+import org.eclipse.cdt.core.CommandLauncher;
+
+public class FlatpakCommandLauncher extends CommandLauncher {
+
+ // placeholder for now to distinguish from regular local command launcher
+
+}
diff --git a/launch/org.eclipse.cdt.flatpak.launcher/src/org/eclipse/cdt/flatpak/launcher/FlatpakCommandLauncherFactory.java b/launch/org.eclipse.cdt.flatpak.launcher/src/org/eclipse/cdt/flatpak/launcher/FlatpakCommandLauncherFactory.java
new file mode 100644
index 00000000000..1bfa1edbc3a
--- /dev/null
+++ b/launch/org.eclipse.cdt.flatpak.launcher/src/org/eclipse/cdt/flatpak/launcher/FlatpakCommandLauncherFactory.java
@@ -0,0 +1,371 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Red Hat Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Red Hat Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.flatpak.launcher;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.eclipse.cdt.core.ICommandLauncher;
+import org.eclipse.cdt.core.ICommandLauncherFactory;
+import org.eclipse.cdt.core.ICommandLauncherFactory2;
+import org.eclipse.cdt.core.ICommandLauncherFactory3;
+import org.eclipse.cdt.core.build.ICBuildConfiguration;
+import org.eclipse.cdt.core.settings.model.CIncludePathEntry;
+import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
+import org.eclipse.cdt.core.settings.model.ICIncludePathEntry;
+import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry;
+import org.eclipse.cdt.internal.flatpak.launcher.ui.preferences.FlatpakPreferenceNode;
+import org.eclipse.cdt.utils.spawner.ProcessFactory;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.jface.preference.PreferenceNode;
+import org.eclipse.ui.PlatformUI;
+
+public class FlatpakCommandLauncherFactory
+ implements ICommandLauncherFactory, ICommandLauncherFactory2, ICommandLauncherFactory3 {
+
+ private static Set<String> copiedDirs = null;
+ private static Set<String> removedDirs = new HashSet<>();
+ private static Object lockObject = new Object();
+ private final static String HEADERS = "HEADERS"; //$NON-NLS-1$
+ private final static String COPIED = ".copied"; //$NON-NLS-1$
+ private final static String REMOVED = ".removed"; //$NON-NLS-1$
+
+ public static final String FLATPAK_PREFERENCE_PAGES = "flatpakPreferencePages"; //$NON-NLS-1$
+
+ public FlatpakCommandLauncherFactory() {
+ initialize();
+ }
+
+ private void initialize() {
+ synchronized (lockObject) {
+ if (copiedDirs == null) {
+ copiedDirs = new HashSet<>();
+ IPath pluginPath = Platform.getStateLocation(Platform.getBundle(FlatpakLaunchPlugin.PLUGIN_ID))
+ .append(HEADERS);
+ IPath copiedPath = pluginPath.append(COPIED);
+ File copiedFile = copiedPath.toFile();
+ if (copiedFile.exists()) {
+ try (FileReader reader = new FileReader(copiedFile);
+ BufferedReader bufferedReader = new BufferedReader(reader)) {
+ String dir = bufferedReader.readLine();
+ while (dir != null) {
+ if (!dir.isEmpty()) {
+ copiedDirs.add(dir);
+ }
+ dir = bufferedReader.readLine();
+ }
+ } catch (IOException e) {
+ FlatpakLaunchPlugin.log(e);
+ }
+ }
+ IPath removedPath = pluginPath.append(REMOVED);
+ File removedFile = removedPath.toFile();
+ if (removedFile.exists()) {
+ try (FileReader reader = new FileReader(removedFile);
+ BufferedReader bufferedReader = new BufferedReader(reader)) {
+ String dir = bufferedReader.readLine();
+ while (dir != null) {
+ if (!dir.isEmpty()) {
+ removedDirs.add(dir);
+ }
+ dir = bufferedReader.readLine();
+ }
+ } catch (IOException e) {
+ FlatpakLaunchPlugin.log(e);
+ }
+ }
+ }
+ }
+
+ if (System.getenv("FLATPAK_SANDBOX_DIR") != null) { //$NON-NLS-1$
+ IExtensionPoint ep = Platform.getExtensionRegistry().getExtensionPoint(FlatpakLaunchPlugin.PLUGIN_ID,
+ FLATPAK_PREFERENCE_PAGES);
+ IConfigurationElement[] elements = ep.getConfigurationElements();
+ for (int i = 0; i < elements.length; i++) {
+ String id = elements[i].getAttribute("id"); //$NON-NLS-1$
+ String category = elements[i].getAttribute("category"); //$NON-NLS-1$
+ String className = elements[i].getAttribute("class"); //$NON-NLS-1$
+ String name = elements[i].getAttribute("name"); //$NON-NLS-1$
+ if (category != null && name != null && id != null && className != null) {
+ PreferenceNode node = new FlatpakPreferenceNode(id, name, null, className);
+ PlatformUI.getWorkbench().getPreferenceManager().addTo(category, node);
+ }
+ }
+ }
+ }
+
+ public static void removeDir(String path) throws IOException {
+ synchronized (lockObject) {
+ List<String> removedEntries = new ArrayList<>();
+ for (String copiedDir : copiedDirs) {
+ if (copiedDir.startsWith(path)) {
+ removedEntries.add(copiedDir);
+ }
+ }
+ for (String removedEntry : removedEntries) {
+ copiedDirs.remove(removedEntry);
+ removedDirs.add(removedEntry);
+ }
+ updateFiles();
+ }
+ }
+
+ public static List<String> getDirs() {
+ synchronized (lockObject) {
+ List<String> newDirs = new ArrayList<>(copiedDirs);
+ return newDirs;
+ }
+ }
+
+ private IProject project;
+
+ @Override
+ public ICommandLauncher getCommandLauncher(IProject project) {
+ this.project = project;
+
+ if (System.getenv("FLATPAK_SANDBOX_DIR") != null) { //$NON-NLS-1$
+ return new FlatpakCommandLauncher();
+ }
+ return null;
+ }
+
+ @Override
+ public ICommandLauncher getCommandLauncher(ICConfigurationDescription cfgd) {
+ if (System.getenv("FLATPAK_SANDBOX_DIR") != null) { //$NON-NLS-1$
+ return new FlatpakCommandLauncher();
+ }
+ return null;
+ }
+
+ @Override
+ public ICommandLauncher getCommandLauncher(ICBuildConfiguration cfgd) {
+ if (System.getenv("FLATPAK_SANDBOX_DIR") != null) { //$NON-NLS-1$
+ return new FlatpakCommandLauncher();
+ }
+ return null;
+ }
+
+ @Override
+ public void registerLanguageSettingEntries(IProject project, List<? extends ICLanguageSettingEntry> langEntries) {
+ synchronized (lockObject) {
+ @SuppressWarnings("unchecked")
+ List<ICLanguageSettingEntry> entries = (List<ICLanguageSettingEntry>) langEntries;
+ List<String> paths = new ArrayList<>();
+ for (ICLanguageSettingEntry entry : entries) {
+ if (entry instanceof ICIncludePathEntry) {
+ paths.add(entry.getValue());
+ }
+ }
+ if (paths.size() > 0) {
+ // Create a directory to put the header files for
+ // the host.
+ IPath pluginPath = Platform.getStateLocation(Platform.getBundle(FlatpakLaunchPlugin.PLUGIN_ID))
+ .append(HEADERS);
+ pluginPath.toFile().mkdir();
+ for (String path : paths) {
+ if (path.startsWith(project.getWorkspace().getRoot().getLocation().toString())) {
+ continue;
+ }
+ try {
+ Process p1 = ProcessFactory.getFactory()
+ .exec(new String[] { "mkdir", "-p", pluginPath.append(path).toOSString() }); //$NON-NLS-1$ //$NON-NLS-2$
+ int rc1 = waitFor(p1);
+ if (rc1 == 0) {
+ Process p2 = ProcessFactory.getFactory().exec(new String[] { "cp", "-ru", "path", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ pluginPath.append(path).removeLastSegments(1).toOSString() });
+ int rc2 = waitFor(p2);
+ if (rc2 == 0) {
+ copiedDirs.add(path);
+ String[] removedEntries = removedDirs.toArray(new String[0]);
+ for (String removedDir : removedEntries) {
+ if (removedDir.startsWith(path)) {
+ removedDirs.remove(removedDir);
+ copiedDirs.add(removedDir);
+ }
+ }
+ updateFiles();
+ }
+ }
+ } catch (IOException e) {
+ FlatpakLaunchPlugin.log(e);
+ }
+ }
+ }
+ }
+ }
+
+ protected static void updateFiles() throws IOException {
+ IPath pluginPath = Platform.getStateLocation(Platform.getBundle(FlatpakLaunchPlugin.PLUGIN_ID)).append(HEADERS);
+ pluginPath.toFile().mkdir();
+ IPath copiedListPath = pluginPath.append(COPIED);
+ try (FileWriter writer = new FileWriter(copiedListPath.toFile());
+ BufferedWriter bufferedWriter = new BufferedWriter(writer)) {
+ for (String copiedDir : copiedDirs) {
+ bufferedWriter.write(copiedDir);
+ bufferedWriter.newLine();
+ }
+ }
+ IPath removedListPath = pluginPath.append(REMOVED);
+ try (FileWriter writer = new FileWriter(removedListPath.toFile());
+ BufferedWriter bufferedWriter = new BufferedWriter(writer)) {
+ for (String removedDir : removedDirs) {
+ bufferedWriter.write(removedDir);
+ bufferedWriter.newLine();
+ }
+ }
+ }
+
+ private int waitFor(Process p) {
+ int rc = -1;
+ boolean finished = false;
+ try {
+ Thread.sleep(100);
+ while (!finished) {
+ rc = p.exitValue();
+ finished = true;
+ }
+ } catch (IllegalThreadStateException e) {
+ // do nothing
+ } catch (InterruptedException e) {
+ finished = true;
+ }
+ return rc;
+ }
+
+ @Override
+ public List<String> verifyIncludePaths(ICBuildConfiguration cfgd, List<String> includePaths) {
+ synchronized (lockObject) {
+ if (includePaths.size() > 0) {
+ IPath copiedPath = Platform.getStateLocation(Platform.getBundle(FlatpakLaunchPlugin.PLUGIN_ID))
+ .append(HEADERS);
+ copiedPath.toFile().mkdir();
+ List<String> newEntries = new ArrayList<>();
+ for (String path : includePaths) {
+ if (path.startsWith(project.getWorkspace().getRoot().getLocation().toString())) {
+ continue;
+ }
+ if (!copiedDirs.contains(path)) {
+ try {
+ Process p1 = ProcessFactory.getFactory()
+ .exec(new String[] { "mkdir", "-p", copiedPath.append(path).toOSString() }); //$NON-NLS-1$ //$NON-NLS-2$
+ int rc1 = waitFor(p1);
+ if (rc1 == 0) {
+ Process p2 = ProcessFactory.getFactory().exec(new String[] { "cp", "-ru", path, //$NON-NLS-1$ //$NON-NLS-2$
+ copiedPath.append(path).removeLastSegments(1).toOSString() });
+ int rc2 = waitFor(p2);
+ if (rc2 == 0) {
+ copiedDirs.add(path);
+ newEntries.add(copiedPath.append(path).toOSString());
+ String[] removedEntries = removedDirs.toArray(new String[0]);
+ for (String removedDir : removedEntries) {
+ if (removedDir.startsWith(path)) {
+ removedDirs.remove(removedDir);
+ copiedDirs.add(removedDir);
+ }
+ }
+ updateFiles();
+ } else {
+ newEntries.add(path);
+ }
+ }
+ } catch (IOException e) {
+ FlatpakLaunchPlugin.log(e);
+ }
+ } else {
+ newEntries.add(copiedPath.append(path).toOSString());
+ }
+ }
+ return newEntries;
+ }
+ return includePaths;
+ }
+ }
+
+ @Override
+ public List<ICLanguageSettingEntry> verifyLanguageSettingEntries(IProject project,
+ List<ICLanguageSettingEntry> entries) {
+ if (entries == null) {
+ return null;
+ }
+ synchronized (lockObject) {
+ List<ICLanguageSettingEntry> newEntries = new ArrayList<>();
+ IPath pluginPath = Platform.getStateLocation(Platform.getBundle(FlatpakLaunchPlugin.PLUGIN_ID));
+ IPath hostDir = pluginPath.append(HEADERS);
+
+ for (ICLanguageSettingEntry entry : entries) {
+ if (entry instanceof ICIncludePathEntry) {
+ String path = entry.getName().toString();
+ if (removedDirs.contains(path)) {
+ try {
+ Process p1 = ProcessFactory.getFactory()
+ .exec(new String[] { "mkdir", "-p", hostDir.append(path).toOSString() }); //$NON-NLS-1$ //$NON-NLS-2$
+ int rc1 = waitFor(p1);
+ if (rc1 == 0) {
+ Process p2 = ProcessFactory.getFactory().exec(new String[] { "cp", "-ru", path, //$NON-NLS-1$ //$NON-NLS-2$
+ hostDir.append(path).removeLastSegments(1).toOSString() });
+ int rc2 = waitFor(p2);
+ if (rc2 == 0) {
+ copiedDirs.add(path);
+ String[] removedEntries = removedDirs.toArray(new String[0]);
+ for (String removedDir : removedEntries) {
+ if (removedDir.startsWith(path)) {
+ removedDirs.remove(removedDir);
+ copiedDirs.add(removedDir);
+ }
+ }
+ updateFiles();
+ }
+ }
+ } catch (IOException e) {
+ FlatpakLaunchPlugin.log(e);
+ }
+
+ }
+ if (copiedDirs.contains(path)) {
+ // //$NON-NLS-2$
+ IPath newPath = hostDir.append(entry.getName());
+ CIncludePathEntry newEntry = new CIncludePathEntry(newPath.toString(), entry.getFlags());
+ newEntries.add(newEntry);
+ continue;
+ } else {
+ newEntries.add(entry);
+ }
+ } else {
+ newEntries.add(entry);
+ }
+ }
+ return newEntries;
+ }
+ }
+
+ @Override
+ public boolean checkIfIncludesChanged(ICBuildConfiguration cfg) {
+ synchronized (lockObject) {
+ return !removedDirs.isEmpty();
+ }
+ }
+
+}
diff --git a/launch/org.eclipse.cdt.flatpak.launcher/src/org/eclipse/cdt/flatpak/launcher/FlatpakLaunchPlugin.java b/launch/org.eclipse.cdt.flatpak.launcher/src/org/eclipse/cdt/flatpak/launcher/FlatpakLaunchPlugin.java
new file mode 100644
index 00000000000..917d65a83e4
--- /dev/null
+++ b/launch/org.eclipse.cdt.flatpak.launcher/src/org/eclipse/cdt/flatpak/launcher/FlatpakLaunchPlugin.java
@@ -0,0 +1,148 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Red Hat.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Red Hat - Initial Contribution
+ *******************************************************************************/
+package org.eclipse.cdt.flatpak.launcher;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.resource.ResourceLocator;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ *
+ * @noextend This class is not intended to be subclassed by Clients
+ */
+public class FlatpakLaunchPlugin extends AbstractUIPlugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.eclipse.cdt.flatpak.launcher"; //$NON-NLS-1$
+
+ // The shared instance
+ private static FlatpakLaunchPlugin plugin;
+
+ /**
+ * The constructor
+ */
+ public FlatpakLaunchPlugin() {
+ }
+
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static FlatpakLaunchPlugin getDefault() {
+ return plugin;
+ }
+
+ public static Shell getActiveWorkbenchShell() {
+ IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
+ if (window != null) {
+ return window.getShell();
+ }
+ return null;
+ }
+
+ public static Shell getShell() {
+ if (getActiveWorkbenchShell() != null) {
+ return getActiveWorkbenchShell();
+ }
+ IWorkbenchWindow[] windows = PlatformUI.getWorkbench().getWorkbenchWindows();
+ return windows[0].getShell();
+ }
+
+ /**
+ * Convenience method which returns the unique identifier of this plugin.
+ *
+ * @return The identifier.
+ */
+ public static String getUniqueIdentifier() {
+ if (getDefault() == null) {
+ // If the default instance is not yet initialized,
+ // return a static identifier. This identifier must
+ // match the plugin id defined in plugin.xml
+ return PLUGIN_ID;
+ }
+ return getDefault().getBundle().getSymbolicName();
+ }
+
+ /**
+ * Logs the specified status with this plug-in's log.
+ *
+ * @param status
+ * status to log
+ * @since 1.1
+ */
+ public static void log(IStatus status) {
+ getDefault().getLog().log(status);
+ }
+
+ /**
+ * Logs an internal error with the specified message.
+ *
+ * @param message
+ * the error message to log
+ * @since 1.1
+ */
+ public static void logErrorMessage(String message) {
+ log(new Status(IStatus.ERROR, getUniqueIdentifier(), IStatus.ERROR, message, null));
+ }
+
+ /**
+ * Logs an internal error with the specified throwable
+ *
+ * @param e
+ * the exception to be logged
+ */
+ public static void log(Throwable e) {
+ log(new Status(IStatus.ERROR, getUniqueIdentifier(), IStatus.ERROR, e.getMessage(), e));
+ }
+
+ public static void log(int status, String msg, Throwable e) {
+ plugin.getLog().log(new Status(status, PLUGIN_ID, IStatus.OK, msg, e));
+ }
+
+ public static void log(int status, String msg) {
+ log(status, msg, null);
+ }
+
+ /**
+ * Returns an image descriptor for the image file at the given plug-in
+ * relative path
+ *
+ * @param path
+ * the path
+ * @return the image descriptor
+ */
+ public static ImageDescriptor getImageDescriptor(String path) {
+ return ResourceLocator.imageDescriptorFromBundle(PLUGIN_ID, path).get();
+ }
+}
diff --git a/launch/org.eclipse.cdt.flatpak.launcher/src/org/eclipse/cdt/internal/flatpak/launcher/ui/preferences/FlatpakHeaderPreferencePage.java b/launch/org.eclipse.cdt.flatpak.launcher/src/org/eclipse/cdt/internal/flatpak/launcher/ui/preferences/FlatpakHeaderPreferencePage.java
new file mode 100644
index 00000000000..68feae13f7f
--- /dev/null
+++ b/launch/org.eclipse.cdt.flatpak.launcher/src/org/eclipse/cdt/internal/flatpak/launcher/ui/preferences/FlatpakHeaderPreferencePage.java
@@ -0,0 +1,311 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Red Hat.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Red Hat - Initial Contribution
+ *******************************************************************************/
+package org.eclipse.cdt.internal.flatpak.launcher.ui.preferences;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+
+import org.eclipse.cdt.flatpak.launcher.FlatpakCommandLauncherFactory;
+import org.eclipse.cdt.flatpak.launcher.FlatpakLaunchPlugin;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.preference.PreferencePage;
+import org.eclipse.jface.viewers.ColumnWeightData;
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.TableLayout;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPreferencePage;
+
+public class FlatpakHeaderPreferencePage extends PreferencePage implements IWorkbenchPreferencePage, Listener {
+
+ // SWT Widgets and content providers
+ private Table hdrTable;
+ private TableViewer hdrTableViewer;
+ private HeaderContentProvider provider;
+ private Button removeButton;
+ private List<String> directories;
+
+ private final class HeaderContentProvider implements IStructuredContentProvider, ITableLabelProvider {
+
+ /**
+ * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(Object)
+ */
+ @Override
+ public Object[] getElements(Object inputElement) {
+ return directories.toArray();
+ }
+
+ /**
+ * @see org.eclipse.jface.viewers.IContentProvider#dispose()
+ */
+ @Override
+ public void dispose() {
+ }
+
+ /**
+ * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(Viewer,
+ * Object, Object)
+ */
+ @Override
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ }
+
+ /**
+ * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(Object,
+ * int)
+ */
+ @Override
+ public Image getColumnImage(Object element, int columnIndex) {
+ return null;
+ }
+
+ /**
+ * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(Object,
+ * int)
+ */
+ @Override
+ public String getColumnText(Object element, int columnIndex) {
+ return element.toString();
+ }
+
+ /**
+ * @see org.eclipse.jface.viewers.IBaseLabelProvider#addListener(ILabelProviderListener)
+ */
+ @Override
+ public void addListener(ILabelProviderListener listener) {
+ }
+
+ /**
+ * @see org.eclipse.jface.viewers.IBaseLabelProvider#isLabelProperty(Object,
+ * String)
+ */
+ @Override
+ public boolean isLabelProperty(Object element, String property) {
+ return false;
+ }
+
+ /**
+ * @see org.eclipse.jface.viewers.IBaseLabelProvider#removeListener(ILabelProviderListener)
+ */
+ @Override
+ public void removeListener(ILabelProviderListener listener) {
+ }
+
+ }
+
+ public FlatpakHeaderPreferencePage() {
+ noDefaultAndApplyButton();
+ provider = new HeaderContentProvider();
+ }
+
+ @Override
+ public void init(IWorkbench workbench) {
+ directories = FlatpakCommandLauncherFactory.getDirs();
+ }
+
+ @Override
+ protected Control createContents(Composite parent) {
+ Composite page = createComposite(parent, 1, 2, false, null, -1, -1, GridData.FILL);
+ GridData gd = (GridData) page.getLayoutData();
+ gd.grabExcessHorizontalSpace = true;
+ gd.grabExcessVerticalSpace = true;
+
+ // SystemWidgetHelpers.createLabel(page,
+ // SystemResources.RESID_PREF_SIGNON_DESCRIPTION, 2);
+
+ // Header table
+ hdrTable = new Table(page, SWT.FULL_SELECTION | SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER);
+ hdrTable.setLinesVisible(true);
+ hdrTable.setHeaderVisible(true);
+ hdrTable.addListener(SWT.Selection, this);
+
+ TableLayout tableLayout = new TableLayout();
+ tableLayout.addColumnData(new ColumnWeightData(100, true));
+ hdrTable.setLayout(tableLayout);
+
+ gd = new GridData(GridData.FILL_BOTH);
+ gd.grabExcessHorizontalSpace = true;
+ gd.grabExcessVerticalSpace = true;
+
+ hdrTable.setLayoutData(gd);
+
+ // Connection column
+ TableColumn directoriesColumn = new TableColumn(hdrTable, SWT.NONE);
+ directoriesColumn.setText(Messages.FlatpakDirectories_label);
+
+ hdrTableViewer = new TableViewer(hdrTable);
+ hdrTableViewer.setContentProvider(provider);
+ hdrTableViewer.setLabelProvider(provider);
+ hdrTableViewer.setInput(directories);
+
+ // Create the Button bar for add, change and remove
+ Composite buttonBar = createComposite(page, 1, 1, false, null, -1, -1, GridData.FILL);
+ gd = (GridData) buttonBar.getLayoutData();
+ gd.grabExcessHorizontalSpace = false;
+ gd.grabExcessVerticalSpace = true;
+
+ removeButton = createPushButton(buttonBar, this, Messages.FlatpakRemoveHeaders_label,
+ Messages.FlatpakRemoveHeaders_tooltip);
+
+ removeButton.setEnabled(false);
+ return parent;
+ }
+
+ private static Composite createComposite(Composite parent, int parentSpan, int numColumns, boolean border,
+ String label, int marginSize, int spacingSize, int verticalAlignment) {
+ // border = true;
+ boolean borderNeeded = border;
+ if (label != null)
+ borderNeeded = true; // force the case
+ int style = SWT.NULL;
+ if (borderNeeded)
+ style |= SWT.SHADOW_ETCHED_IN;
+ Composite composite = null;
+ if (borderNeeded) {
+ composite = new Group(parent, style);
+ if (label != null)
+ ((Group) composite).setText(label);
+ } else {
+ composite = new Composite(parent, style);
+ }
+ // GridLayout
+ GridLayout layout = new GridLayout();
+ layout.numColumns = numColumns;
+ if (marginSize != -1) {
+ layout.marginWidth = 0;
+ layout.marginHeight = 0;
+ }
+ if (spacingSize != -1) {
+ layout.horizontalSpacing = 0;
+ layout.verticalSpacing = 0;
+ }
+ composite.setLayout(layout);
+ // GridData
+ GridData data = new GridData();
+ data.horizontalSpan = parentSpan;
+ data.horizontalAlignment = GridData.FILL;
+ data.grabExcessHorizontalSpace = true;
+
+ data.verticalAlignment = verticalAlignment;
+ data.grabExcessVerticalSpace = false;
+
+ composite.setLayoutData(data);
+ return composite;
+ }
+
+ public static Button createPushButton(Composite group, Listener listener, String label, String tooltip) {
+ Button button = new Button(group, SWT.PUSH);
+ button.setText(label);
+ if (listener != null)
+ button.addListener(SWT.Selection, listener);
+ GridData data = new GridData();
+ data.horizontalAlignment = GridData.FILL;
+ data.grabExcessHorizontalSpace = true;
+ button.setLayoutData(data);
+ if (tooltip != null)
+ button.setToolTipText(tooltip);
+ return button;
+ }
+
+ private class DialogStatus {
+ private boolean status;
+
+ public DialogStatus(boolean status) {
+ this.status = status;
+ }
+
+ public void setStatus(boolean status) {
+ this.status = status;
+ }
+
+ public boolean getStatus() {
+ return status;
+ }
+ }
+
+ /**
+ * @see org.eclipse.swt.widgets.Listener#handleEvent(Event)
+ */
+ @Override
+ public void handleEvent(Event event) {
+ if (event.type == SWT.Selection) {
+ if (event.widget == removeButton) {
+ final DialogStatus confirmed = new DialogStatus(false);
+ Display.getDefault().syncExec(() -> {
+ boolean status = MessageDialog.openConfirm(getShell(), Messages.FlatpakConfirmRemoval_title,
+ Messages.FlatpakConfirmRemoval_msg);
+ confirmed.setStatus(status);
+ });
+ if (!confirmed.getStatus()) {
+ return;
+ }
+ int[] indicies = hdrTable.getSelectionIndices();
+ IPath pluginPath = Platform.getStateLocation(Platform.getBundle(FlatpakLaunchPlugin.PLUGIN_ID))
+ .append("HEADERS"); //$NON-NLS-1$
+ for (int idx = indicies.length - 1; idx >= 0; idx--) {
+ String dirPath = directories.get(indicies[idx]);
+ File f = pluginPath.append(dirPath).toFile();
+ if (f.exists() && f.isDirectory()) {
+ recursiveDelete(f);
+ }
+ directories.remove(dirPath);
+ try {
+ FlatpakCommandLauncherFactory.removeDir(dirPath);
+ } catch (IOException e) {
+ FlatpakLaunchPlugin.log(e);
+ }
+ }
+ hdrTable.remove(indicies);
+ hdrTable.redraw();
+ hdrTableViewer.refresh();
+ }
+
+ // Update table buttons based on changes
+ if (hdrTable.getSelectionCount() > 0) {
+ removeButton.setEnabled(true);
+ } else {
+ removeButton.setEnabled(false);
+ }
+ }
+ }
+
+ private void recursiveDelete(File dir) {
+ File[] contents = dir.listFiles();
+ if (contents != null) {
+ for (File f : contents) {
+ recursiveDelete(f);
+ }
+ }
+ dir.delete();
+ }
+} \ No newline at end of file
diff --git a/launch/org.eclipse.cdt.flatpak.launcher/src/org/eclipse/cdt/internal/flatpak/launcher/ui/preferences/FlatpakPreferenceNode.java b/launch/org.eclipse.cdt.flatpak.launcher/src/org/eclipse/cdt/internal/flatpak/launcher/ui/preferences/FlatpakPreferenceNode.java
new file mode 100644
index 00000000000..e883e2f9e65
--- /dev/null
+++ b/launch/org.eclipse.cdt.flatpak.launcher/src/org/eclipse/cdt/internal/flatpak/launcher/ui/preferences/FlatpakPreferenceNode.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Red Hat Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Red Hat Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.internal.flatpak.launcher.ui.preferences;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.cdt.flatpak.launcher.FlatpakLaunchPlugin;
+import org.eclipse.jface.preference.PreferenceNode;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.ui.IWorkbenchPreferencePage;
+import org.eclipse.ui.PlatformUI;
+
+public class FlatpakPreferenceNode extends PreferenceNode {
+
+ private String label;
+ private String className;
+
+ public FlatpakPreferenceNode(String id, String label, ImageDescriptor image, String className) {
+ super(id, label, image, className);
+ this.label = label;
+ this.className = className;
+ }
+
+ @Override
+ public void createPage() {
+ IWorkbenchPreferencePage page = (IWorkbenchPreferencePage) getPage();
+ if (page == null) {
+ try {
+ Class<?> cl = Class.forName(className);
+ page = (IWorkbenchPreferencePage) cl.getDeclaredConstructor().newInstance();
+ if (page != null) {
+ page.setTitle(label);
+ page.init(PlatformUI.getWorkbench());
+ setPage(page);
+ }
+ } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | NoSuchMethodError
+ | IllegalArgumentException | InvocationTargetException | NoSuchMethodException
+ | SecurityException e) {
+ FlatpakLaunchPlugin.log(e);
+ }
+ }
+ }
+
+}
diff --git a/launch/org.eclipse.cdt.flatpak.launcher/src/org/eclipse/cdt/internal/flatpak/launcher/ui/preferences/Messages.java b/launch/org.eclipse.cdt.flatpak.launcher/src/org/eclipse/cdt/internal/flatpak/launcher/ui/preferences/Messages.java
new file mode 100644
index 00000000000..31575c25cca
--- /dev/null
+++ b/launch/org.eclipse.cdt.flatpak.launcher/src/org/eclipse/cdt/internal/flatpak/launcher/ui/preferences/Messages.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Red Hat, Inc.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Red Hat initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.internal.flatpak.launcher.ui.preferences;
+
+import org.eclipse.osgi.util.NLS;
+
+public class Messages extends NLS {
+ private static final String BUNDLE_NAME = "org.eclipse.cdt.internal.flatpak.launcher.ui.preferences.messages"; //$NON-NLS-1$
+
+ public static String FlatpakDebugProcess_label;
+ public static String FlatpakRemoveHeaders_label;
+ public static String FlatpakRemoveHeaders_tooltip;
+ public static String FlatpakConfirmRemoval_title;
+ public static String FlatpakConfirmRemoval_msg;
+ public static String FlatpakDirectories_label;
+
+ static {
+ // initialize resource bundle
+ NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+ }
+
+ private Messages() {
+ }
+}
diff --git a/launch/org.eclipse.cdt.flatpak.launcher/src/org/eclipse/cdt/internal/flatpak/launcher/ui/preferences/messages.properties b/launch/org.eclipse.cdt.flatpak.launcher/src/org/eclipse/cdt/internal/flatpak/launcher/ui/preferences/messages.properties
new file mode 100644
index 00000000000..8778bd3fcd7
--- /dev/null
+++ b/launch/org.eclipse.cdt.flatpak.launcher/src/org/eclipse/cdt/internal/flatpak/launcher/ui/preferences/messages.properties
@@ -0,0 +1,21 @@
+#*******************************************************************************
+# Copyright (c) 2020 Red Hat.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Red Hat - Initial Contribution
+#*****************************************************************************/
+
+FlatpakDebugProcess_label=Debug
+FlatpakRemoveHeaders_label=Remove
+FlatpakRemoveHeaders_tooltip=Remove headers cached from local host
+FlatpakConfirmRemoval_title=Confirm Header File Removal
+FlatpakConfirmRemoval_msg=Confirm removal of cached header files
+FlatpakDirectories_label=Cached Directories
+
diff --git a/launch/org.eclipse.cdt.launch/.classpath b/launch/org.eclipse.cdt.launch/.classpath
index 01836c4842f..e801ebfb468 100644
--- a/launch/org.eclipse.cdt.launch/.classpath
+++ b/launch/org.eclipse.cdt.launch/.classpath
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/launch/org.eclipse.cdt.launch/.settings/org.eclipse.core.resources.prefs b/launch/org.eclipse.cdt.launch/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/launch/org.eclipse.cdt.launch/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/launch/org.eclipse.cdt.launch/.settings/org.eclipse.jdt.core.prefs b/launch/org.eclipse.cdt.launch/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/launch/org.eclipse.cdt.launch/.settings/org.eclipse.jdt.core.prefs
+++ b/launch/org.eclipse.cdt.launch/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/launch/org.eclipse.cdt.launch/.settings/org.eclipse.jdt.ui.prefs b/launch/org.eclipse.cdt.launch/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/launch/org.eclipse.cdt.launch/.settings/org.eclipse.jdt.ui.prefs
+++ b/launch/org.eclipse.cdt.launch/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/launch/org.eclipse.cdt.launch/META-INF/MANIFEST.MF b/launch/org.eclipse.cdt.launch/META-INF/MANIFEST.MF
index 2ebdd361fe8..2f150508123 100644
--- a/launch/org.eclipse.cdt.launch/META-INF/MANIFEST.MF
+++ b/launch/org.eclipse.cdt.launch/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.launch; singleton:=true
-Bundle-Version: 9.3.100.qualifier
+Bundle-Version: 10.3.300.qualifier
Bundle-Activator: org.eclipse.cdt.launch.internal.ui.LaunchUIPlugin
Bundle-Vendor: %providerName
Bundle-Localization: plugin
@@ -19,8 +19,8 @@ Require-Bundle: org.eclipse.ui.ide;bundle-version="[3.2.0,4.0.0)",
org.eclipse.debug.core;bundle-version="[3.2.0,4.0.0)",
org.eclipse.debug.ui;bundle-version="[3.2.0,4.0.0)",
org.eclipse.ui;bundle-version="[3.2.0,4.0.0)",
- org.eclipse.cdt.core;bundle-version="[5.0.0,7.0.0)",
- org.eclipse.cdt.ui;bundle-version="[6.0.0,7.0.0)",
+ org.eclipse.cdt.core;bundle-version="[7.0.0,8.0.0)",
+ org.eclipse.cdt.ui;bundle-version="[7.0.0,8.0.0)",
org.eclipse.cdt.debug.core;bundle-version="[7.0.0,9.0.0)",
org.eclipse.cdt.debug.ui;bundle-version="[7.0.0,9.0.0)",
org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)",
@@ -29,6 +29,5 @@ Require-Bundle: org.eclipse.ui.ide;bundle-version="[3.2.0,4.0.0)",
org.eclipse.launchbar.ui;bundle-version="2.1.0",
org.eclipse.launchbar.core;bundle-version="2.1.0"
Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Import-Package: com.ibm.icu.text
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Automatic-Module-Name: org.eclipse.cdt.launch
diff --git a/launch/org.eclipse.cdt.launch/about.html b/launch/org.eclipse.cdt.launch/about.html
index 164f781a8fd..b3134865230 100644
--- a/launch/org.eclipse.cdt.launch/about.html
+++ b/launch/org.eclipse.cdt.launch/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/launch/org.eclipse.cdt.launch/about.ini b/launch/org.eclipse.cdt.launch/about.ini
new file mode 100644
index 00000000000..e07a7bb377e
--- /dev/null
+++ b/launch/org.eclipse.cdt.launch/about.ini
@@ -0,0 +1,24 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%blurb
+
+# Property "windowImage" contains path to window icon (16x16)
+# needed for primary features only
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=cdt_logo_icon32.png
+
+# Property "aboutImage" contains path to product image (500x330 or 115x164)
+# needed for primary features only
+
+# Property "appName" contains name of the application (translated)
+# needed for primary features only
+
+# Property "welcomePerspective" contains the id of the perspective in which the
+# welcome page is to be opened.
+# optional
diff --git a/launch/org.eclipse.cdt.launch/about.mappings b/launch/org.eclipse.cdt.launch/about.mappings
new file mode 100644
index 00000000000..936a8039c3e
--- /dev/null
+++ b/launch/org.eclipse.cdt.launch/about.mappings
@@ -0,0 +1,9 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+# The following should contain the build version.
+# e.g. "0=20200106-1728"
+# This value will be added automatically via the build scripts
+0=${buildId}
diff --git a/launch/org.eclipse.cdt.launch/about.properties b/launch/org.eclipse.cdt.launch/about.properties
new file mode 100644
index 00000000000..6228d1945af
--- /dev/null
+++ b/launch/org.eclipse.cdt.launch/about.properties
@@ -0,0 +1,32 @@
+###############################################################################
+# Copyright (c) 2002, 2022 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+# about.properties
+# contains externalized strings for about.ini
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# fill-ins are supplied by about.mappings
+# This file should be translated.
+# NOTE TO TRANSLATOR: Please do not translate the featureVersion variable.
+
+
+blurb=C/C++ GNU Toolchain Debug Support\n\
+\n\
+Version: {featureVersion}\n\
+Build id: {0}\n\
+\n\
+Copyright (c) 2002, 2022 Contributors to the Eclipse Foundation
+\n\
+See the NOTICE file(s) distributed with this work for additional\n\
+information regarding copyright ownership.\n\
+\n\
+Visit http://www.eclipse.org/cdt
diff --git a/launch/org.eclipse.cdt.launch/build.properties b/launch/org.eclipse.cdt.launch/build.properties
index ddbe3bdcb09..4b943c9c682 100644
--- a/launch/org.eclipse.cdt.launch/build.properties
+++ b/launch/org.eclipse.cdt.launch/build.properties
@@ -17,7 +17,11 @@ bin.includes = plugin.xml,\
icons/,\
about.html,\
.,\
- META-INF/
+ META-INF/,\
+ about.ini,\
+ about.mappings,\
+ about.properties,\
+ cdt_logo_icon32.png
javadoc.packages = org.eclipse.cdt.launch.ui.*,\
org.eclipse.cdt.launch.sourcelookup*,\
org.eclipse.cdt.launch.*
diff --git a/launch/org.eclipse.cdt.launch/cdt_logo_icon32.png b/launch/org.eclipse.cdt.launch/cdt_logo_icon32.png
new file mode 100644
index 00000000000..470ca81b327
--- /dev/null
+++ b/launch/org.eclipse.cdt.launch/cdt_logo_icon32.png
Binary files differ
diff --git a/launch/org.eclipse.cdt.launch/plugin.properties b/launch/org.eclipse.cdt.launch/plugin.properties
index 52a2c9bec4f..c90a3c5d7c3 100644
--- a/launch/org.eclipse.cdt.launch/plugin.properties
+++ b/launch/org.eclipse.cdt.launch/plugin.properties
@@ -1,5 +1,5 @@
###############################################################################
-# Copyright (c) 2005, 2010 QNX Software Systems and others.
+# Copyright (c) 2005, 2020 QNX Software Systems and others.
#
# This program and the accompanying materials
# are made available under the terms of the Eclipse Public License 2.0
@@ -17,8 +17,6 @@ providerName=Eclipse CDT
LocalCDTLaunch.name=Run Process
LocalCDTLaunch.description=Execute the specified process
-LaunchGroup.name=Launch Group (Deprecated)
-LaunchGroup.description=This version of Launch Group is now deprecated, a newer and better one is now available as part of the Eclipse Platform.
MainLaunchTab.name=Main
ArgumentsLaunchTab.name=Arguments
diff --git a/launch/org.eclipse.cdt.launch/plugin.xml b/launch/org.eclipse.cdt.launch/plugin.xml
index c85ea032a69..662f0ae9710 100644
--- a/launch/org.eclipse.cdt.launch/plugin.xml
+++ b/launch/org.eclipse.cdt.launch/plugin.xml
@@ -17,21 +17,10 @@
sourcePathComputerId="org.eclipse.cdt.debug.core.sourcePathComputer">
</launchDelegate>
- <!-- Deprecated, See Bug 517722 -->
- <launchDelegate
- delegate="org.eclipse.cdt.launch.internal.MultiLaunchConfigurationDelegate"
- delegateDescription="%LaunchGroup.description"
- id="org.eclipse.cdt.launch.launchGroup.delegate"
- type="org.eclipse.cdt.launch.launchGroup"
- modes="run,debug,profile"
- name="%LaunchGroup.name"
- sourceLocatorId="org.eclipse.cdt.debug.core.sourceLocator"
- sourcePathComputerId="org.eclipse.cdt.debug.core.sourcePathComputer">
- </launchDelegate>
</extension>
-
+
<extension
- point="org.eclipse.debug.ui.launchConfigurationTabs">
+ point="org.eclipse.debug.ui.launchConfigurationTabs">
<!-- Run launch tabs-->
<tab
id="org.eclipse.cdt.cdi.launch.runApplicationLaunch.mainTab"
@@ -72,50 +61,20 @@
plugin="org.eclipse.cdt.launch"
class="org.eclipse.cdt.launch.internal.ui.ProcessPrompter"
id="org.eclipse.cdt.launch.statusHandler.processPrompter">
- </statusHandler>
+ </statusHandler>
<statusHandler
class="org.eclipse.cdt.launch.internal.ui.BuildErrPrompter"
code="1002"
id="org.eclipse.cdt.launch.statusHandler.buildErrPrompter"
plugin="org.eclipse.cdt.launch">
- </statusHandler>
+ </statusHandler>
<statusHandler
class="org.eclipse.cdt.launch.internal.ui.BuildErrPrompter"
code="1003"
id="org.eclipse.cdt.launch.statusHandler.buildErrPrompter"
plugin="org.eclipse.cdt.launch">
- </statusHandler>
+ </statusHandler>
</extension>
-
- <extension
- point="org.eclipse.debug.core.launchConfigurationTypes">
- <!-- Deprecated, See Bug 517722 -->
- <launchConfigurationType
- id="org.eclipse.cdt.launch.launchGroup"
- name="%LaunchGroup.name"
- public="true">
- </launchConfigurationType>
- </extension>
-
- <extension
- point="org.eclipse.debug.ui.launchConfigurationTabGroups">
- <!-- Deprecated, See Bug 517722 -->
- <launchConfigurationTabGroup
- class="org.eclipse.cdt.launch.internal.ui.MultiLaunchConfigurationTabGroup"
- id="org.eclipse.cdt.launch.launchGroup.tabgroup"
- type="org.eclipse.cdt.launch.launchGroup">
- </launchConfigurationTabGroup>
- </extension>
-
- <extension
- point="org.eclipse.debug.ui.launchConfigurationTypeImages">
- <!-- Deprecated, See Bug 517722 -->
- <launchConfigurationTypeImage
- icon="icons/obj16/exec_obj.gif"
- configTypeID="org.eclipse.cdt.launch.launchGroup"
- id="org.eclipse.cdt.launch.launchGroup.image">
- </launchConfigurationTypeImage>
- </extension>
<extension
point="org.eclipse.ltk.core.refactoring.renameParticipants">
<renameParticipant
diff --git a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/AbstractCLaunchDelegate.java b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/AbstractCLaunchDelegate.java
index e1e73f1fb67..fb68ed6d8b5 100644
--- a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/AbstractCLaunchDelegate.java
+++ b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/AbstractCLaunchDelegate.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2005, 2016 QNX Software Systems and others.
+ * Copyright (c) 2005, 2021 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -16,11 +16,14 @@
* Alex Collins (Broadcom Corp.) - choose build config automatically
* James Blackburn (Broadcom Corp.)
* Philip Langer (EclipseSource Services GmbH) - bug 506843
+ * Alexander Fedorov (ArSysOp) - bug 567966
*******************************************************************************/
package org.eclipse.cdt.launch;
import java.io.File;
import java.io.FileNotFoundException;
+import java.text.DateFormat;
+import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
@@ -77,9 +80,6 @@ import org.eclipse.debug.core.model.LaunchConfigurationDelegate;
import org.eclipse.debug.ui.RefreshTab;
import org.eclipse.osgi.util.NLS;
-import com.ibm.icu.text.DateFormat;
-import com.ibm.icu.text.MessageFormat;
-
/**
* AbstractCLaunchDelegate is the launch delegate used by most CDI based debuggers.
* It has been superseded by AbstractCLaunchDelegate2 which is used by most DSF based
@@ -154,7 +154,7 @@ abstract public class AbstractCLaunchDelegate extends LaunchConfigurationDelegat
/**
* A list of prequisite projects ordered by their build order.
*/
- private List orderedProjects;
+ private List<IProject> orderedProjects;
private String preLaunchBuildConfiguration;
/**
@@ -480,7 +480,7 @@ abstract public class AbstractCLaunchDelegate extends LaunchConfigurationDelegat
* if an error occurs while getting referenced projects from the
* current project
*/
- private void getReferencedProjectSet(IProject proj, HashSet referencedProjSet) throws CoreException {
+ private void getReferencedProjectSet(IProject proj, HashSet<IProject> referencedProjSet) throws CoreException {
IProject[] projects = proj.getReferencedProjects();
for (int i = 0; i < projects.length; i++) {
IProject refProject = projects[i];
@@ -584,8 +584,8 @@ abstract public class AbstractCLaunchDelegate extends LaunchConfigurationDelegat
monitor.beginTask(LaunchMessages.AbstractCLaunchDelegate_building_projects, totalWork);
try {
- for (Iterator i = orderedProjects.iterator(); i.hasNext();) {
- IProject proj = (IProject) i.next();
+ for (Iterator<IProject> i = orderedProjects.iterator(); i.hasNext();) {
+ IProject proj = i.next();
monitor.subTask(LaunchMessages.AbstractCLaunchDelegate_building + proj.getName());
proj.build(IncrementalProjectBuilder.INCREMENTAL_BUILD,
new LaunchUtils.BuildProgressMonitor(monitor, scale));
@@ -707,8 +707,8 @@ abstract public class AbstractCLaunchDelegate extends LaunchConfigurationDelegat
//check prerequisite projects for compile errors.
if (!compileErrorsInProjs) {
- for (Iterator i = orderedProjects.iterator(); i.hasNext();) {
- IProject proj = (IProject) i.next();
+ for (Iterator<IProject> i = orderedProjects.iterator(); i.hasNext();) {
+ IProject proj = i.next();
monitor.subTask(LaunchMessages.AbstractCLaunchDelegate_searching_for_errors_in + proj.getName());
monitor.worked(scale);
compileErrorsInProjs = existsErrors(proj);
@@ -870,11 +870,13 @@ abstract public class AbstractCLaunchDelegate extends LaunchConfigurationDelegat
protected String[] getEnvironment(ILaunchConfiguration config) throws CoreException {
try {
// Migrate old env settings to new.
- Map map = config.getAttribute(ICDTLaunchConfigurationConstants.ATTR_PROGRAM_ENVIROMENT_MAP, (Map) null);
+ Map<String, String> map = config.getAttribute(ICDTLaunchConfigurationConstants.ATTR_PROGRAM_ENVIROMENT_MAP,
+ (Map<String, String>) null);
ILaunchConfigurationWorkingCopy wc = config.getWorkingCopy();
if (map != null) {
wc.setAttribute(ILaunchManager.ATTR_ENVIRONMENT_VARIABLES, map);
- wc.setAttribute(ICDTLaunchConfigurationConstants.ATTR_PROGRAM_ENVIROMENT_MAP, (Map) null);
+ wc.setAttribute(ICDTLaunchConfigurationConstants.ATTR_PROGRAM_ENVIROMENT_MAP,
+ (Map<String, String>) null);
config = wc.doSave();
}
boolean append = config.getAttribute(ICDTLaunchConfigurationConstants.ATTR_PROGRAM_ENVIROMENT_INHERIT,
@@ -897,20 +899,21 @@ abstract public class AbstractCLaunchDelegate extends LaunchConfigurationDelegat
*/
@Deprecated
protected String[] getEnvironmentArray(ILaunchConfiguration config) {
- Map env = null;
+ Map<String, String> env = null;
try {
- env = config.getAttribute(ICDTLaunchConfigurationConstants.ATTR_PROGRAM_ENVIROMENT_MAP, (Map) null);
+ env = config.getAttribute(ICDTLaunchConfigurationConstants.ATTR_PROGRAM_ENVIROMENT_MAP,
+ (Map<String, String>) null);
} catch (CoreException e) {
}
if (env == null) {
return new String[0];
}
String[] array = new String[env.size()];
- Iterator entries = env.entrySet().iterator();
- Entry entry;
+ Iterator<Entry<String, String>> entries = env.entrySet().iterator();
+ Entry<String, String> entry;
for (int i = 0; entries.hasNext() && i < array.length; i++) {
- entry = (Entry) entries.next();
- array[i] = ((String) entry.getKey()) + "=" + ((String) entry.getValue()); //$NON-NLS-1$
+ entry = entries.next();
+ array[i] = (entry.getKey()) + "=" + (entry.getValue()); //$NON-NLS-1$
}
return array;
}
@@ -923,18 +926,19 @@ abstract public class AbstractCLaunchDelegate extends LaunchConfigurationDelegat
@Deprecated
protected Properties getEnvironmentProperty(ILaunchConfiguration config) {
Properties prop = new Properties();
- Map env = null;
+ Map<String, String> env = null;
try {
- env = config.getAttribute(ICDTLaunchConfigurationConstants.ATTR_PROGRAM_ENVIROMENT_MAP, (Map) null);
+ env = config.getAttribute(ICDTLaunchConfigurationConstants.ATTR_PROGRAM_ENVIROMENT_MAP,
+ (Map<String, String>) null);
} catch (CoreException e) {
}
if (env == null)
return prop;
- Iterator entries = env.entrySet().iterator();
- Entry entry;
+ Iterator<Entry<String, String>> entries = env.entrySet().iterator();
+ Entry<String, String> entry;
while (entries.hasNext()) {
- entry = (Entry) entries.next();
- prop.setProperty((String) entry.getKey(), (String) entry.getValue());
+ entry = entries.next();
+ prop.setProperty(entry.getKey(), entry.getValue());
}
return prop;
}
@@ -945,7 +949,7 @@ abstract public class AbstractCLaunchDelegate extends LaunchConfigurationDelegat
* @return default process attribute map for C/C++ processes
*/
protected Map getDefaultProcessMap() {
- Map map = new HashMap();
+ Map<String, String> map = new HashMap<>();
map.put(IProcess.ATTR_PROCESS_TYPE, ICDTLaunchConfigurationConstants.ID_PROGRAM_PROCESS_TYPE);
return map;
}
diff --git a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/AbstractCLaunchDelegate2.java b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/AbstractCLaunchDelegate2.java
index 721927ab270..8cc28c210dc 100644
--- a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/AbstractCLaunchDelegate2.java
+++ b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/AbstractCLaunchDelegate2.java
@@ -39,7 +39,6 @@ import org.eclipse.cdt.launch.internal.ui.LaunchMessages;
import org.eclipse.cdt.launch.internal.ui.LaunchUIPlugin;
import org.eclipse.core.resources.ICommand;
import org.eclipse.core.resources.IContainer;
-import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
@@ -692,13 +691,12 @@ public abstract class AbstractCLaunchDelegate2 extends LaunchConfigurationDelega
ICDTLaunchConfigurationConstants.ERR_PROGRAM_NOT_EXIST);
}
- if (!programPath.isAbsolute() && cproject != null) {
- // Find the specified program within the specified project
- IFile wsProgramPath = cproject.getProject().getFile(programPath);
- programPath = wsProgramPath.getLocation();
+ if (cproject != null) {
+ programPath = LaunchUtils.toAbsoluteProgramPath(cproject.getProject(), programPath);
}
- if (!programPath.toFile().exists()) {
+ File executable = programPath.toFile();
+ if (!executable.exists() || !executable.isFile()) {
abort(LaunchMessages.AbstractCLaunchDelegate_Program_file_does_not_exist, new FileNotFoundException(
NLS.bind(LaunchMessages.AbstractCLaunchDelegate_PROGRAM_PATH_not_found, programPath.toOSString())),
ICDTLaunchConfigurationConstants.ERR_PROGRAM_NOT_EXIST);
diff --git a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/LaunchUtils.java b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/LaunchUtils.java
index e90b1be21cb..cbf5db85086 100644
--- a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/LaunchUtils.java
+++ b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/LaunchUtils.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004, 2016 QNX Software Systems and others.
+ * Copyright (c) 2004, 2021 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -15,8 +15,10 @@
*******************************************************************************/
package org.eclipse.cdt.launch;
+import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
+import java.text.MessageFormat;
import java.util.HashSet;
import java.util.Set;
@@ -56,8 +58,6 @@ import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.activities.IActivityManager;
import org.eclipse.ui.activities.IWorkbenchActivitySupport;
-import com.ibm.icu.text.MessageFormat;
-
/**
* Utility methods.
*/
@@ -152,12 +152,11 @@ public class LaunchUtils {
IProject project = getProject(configuration);
ICProject cproject = CCorePlugin.getDefault().getCoreModel().create(project);
if (cproject != null) {
- // Find the specified program within the specified project
- IFile wsProgramPath = cproject.getProject().getFile(programPath);
- programPath = wsProgramPath.getLocation();
+ programPath = toAbsoluteProgramPath(cproject.getProject(), programPath);
}
}
- if (!programPath.toFile().exists()) {
+ File executable = programPath.toFile();
+ if (!executable.exists() || !executable.isFile()) {
throwException(Messages.LaunchUtils_program_file_does_not_exist,
new FileNotFoundException(
MessageFormat.format(Messages.LaunchUtils__0_not_found, programPath.toOSString())),
@@ -168,6 +167,33 @@ public class LaunchUtils {
}
/**
+ * Return the program path, resolved as an absolute IPath.
+ *
+ * @param project Project to resolve relative paths to
+ * @param programPath The program path to resolve
+ * @return the program path
+ * @since 10.3
+ */
+ public static IPath toAbsoluteProgramPath(IProject project, IPath programPath) {
+ if (project == null || programPath == null || programPath.isAbsolute()) {
+ return programPath;
+ }
+
+ // Find the specified program within the specified project
+ try {
+ IPath resolvedPath = project.getFile(programPath).getLocation();
+ if (resolvedPath != null && resolvedPath.isAbsolute() && resolvedPath.toFile().exists()) {
+ return resolvedPath;
+ }
+ } catch (IllegalArgumentException e) {
+ }
+
+ // Find the specified program relative to the specified project
+ IPath projectPath = project.getLocation();
+ return projectPath.append(programPath).makeAbsolute();
+ }
+
+ /**
* Return project or <code>null</code> if project is not accessible or not specified.
* @param configuration Launch configuration to obtain project from
* @return the project
@@ -322,7 +348,8 @@ public class LaunchUtils {
if (dirLocation == null)
continue;
for (IFile file : files) {
- if (dirLocation.isPrefixOf(file.getLocation())) {
+ IPath location = file.getLocation();
+ if (location != null && dirLocation.isPrefixOf(location)) {
if (buildConfig != null && buildConfig != cfgDes) {
// Matched more than one, so use the active configuration
buildConfig = null;
diff --git a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/Messages.java b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/Messages.java
index 7002a1a5479..d6d6ce8000b 100644
--- a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/Messages.java
+++ b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/Messages.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2019 Kichwa Coders and others.
+ * Copyright (c) 2019 Kichwa Coders Ltd and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
diff --git a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/internal/LocalRunLaunchDelegate.java b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/internal/LocalRunLaunchDelegate.java
index b7e28b2eb29..62f8f3f9e52 100644
--- a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/internal/LocalRunLaunchDelegate.java
+++ b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/internal/LocalRunLaunchDelegate.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2005, 2015 QNX Software Systems and others.
+ * Copyright (c) 2005, 2021 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -17,6 +17,7 @@ package org.eclipse.cdt.launch.internal;
import java.io.File;
import java.io.IOException;
+import java.text.DateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
@@ -55,8 +56,6 @@ import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
import org.eclipse.debug.core.ILaunchManager;
-import com.ibm.icu.text.DateFormat;
-
/**
* The launch delegate for Run mode.
*/
@@ -280,7 +279,7 @@ public class LocalRunLaunchDelegate extends AbstractCLaunchDelegate2 {
*/
protected Process exec(String[] cmdLine, String[] environ, File workingDirectory) throws CoreException {
try {
- if (PTY.isSupported()) {
+ if (PTY.isSupported(PTY.Mode.CONSOLE)) {
return ProcessFactory.getFactory().exec(cmdLine, environ, workingDirectory, new PTY());
} else {
return ProcessFactory.getFactory().exec(cmdLine, environ, workingDirectory);
diff --git a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/internal/MultiLaunchConfigurationDelegate.java b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/internal/MultiLaunchConfigurationDelegate.java
deleted file mode 100644
index 851ac30e364..00000000000
--- a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/internal/MultiLaunchConfigurationDelegate.java
+++ /dev/null
@@ -1,600 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2016 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - initial API and implementation
- * Freescale Semiconductor
- *******************************************************************************/
-package org.eclipse.cdt.launch.internal;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.cdt.launch.internal.MultiLaunchConfigurationDelegate.LaunchElement.EPostLaunchAction;
-import org.eclipse.cdt.launch.internal.ui.LaunchMessages;
-import org.eclipse.cdt.launch.internal.ui.LaunchUIPlugin;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.MultiStatus;
-import org.eclipse.core.runtime.SubProgressMonitor;
-import org.eclipse.debug.core.DebugException;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.ILaunch;
-import org.eclipse.debug.core.ILaunchConfiguration;
-import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
-import org.eclipse.debug.core.ILaunchManager;
-import org.eclipse.debug.core.ILaunchesListener2;
-import org.eclipse.debug.core.Launch;
-import org.eclipse.debug.core.model.IProcess;
-import org.eclipse.debug.core.model.LaunchConfigurationDelegate;
-import org.eclipse.debug.internal.core.DebugCoreMessages;
-import org.eclipse.debug.internal.ui.DebugUIPlugin;
-import org.eclipse.debug.ui.IDebugUIConstants;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.activities.WorkbenchActivityHelper;
-
-/**
- * Group Launch delegate. Launches each configuration in the user selected mode
- * @deprecated See Bug 517722, Launch Groups are now part of Platform.
- */
-@Deprecated
-public class MultiLaunchConfigurationDelegate extends LaunchConfigurationDelegate {
- public static final String DEFAULT_MODE = "default"; //$NON-NLS-1$
- private static final String NAME_PROP = "name"; //$NON-NLS-1$
- private static final String ENABLED_PROP = "enabled"; //$NON-NLS-1$
- private static final String MODE_PROP = "mode"; //$NON-NLS-1$
- private static final String ACTION_PROP = "action"; //$NON-NLS-1$
- private static final String ACTION_PARAM_PROP = "actionParam"; //$NON-NLS-1$
- public static String MULTI_LAUNCH_CONSTANTS_PREFIX = "org.eclipse.cdt.launch.launchGroup"; //$NON-NLS-1$
-
- public static class LaunchElement {
- public static enum EPostLaunchAction {
- NONE, WAIT_FOR_TERMINATION, DELAY
- }
-
- /**
- * Allows us decouple the enum identifier in the code from its textual representation in the GUI
- */
- public static String actionEnumToStr(EPostLaunchAction action) {
- switch (action) {
- case NONE:
- return LaunchMessages.MultiLaunchConfigurationDelegate_Action_None;
- case WAIT_FOR_TERMINATION:
- return LaunchMessages.MultiLaunchConfigurationDelegate_Action_WaitUntilTerminated;
- case DELAY:
- return LaunchMessages.MultiLaunchConfigurationDelegate_Action_Delay;
- default:
- assert false : "new post launch action type is missing logic"; //$NON-NLS-1$
- return LaunchMessages.MultiLaunchConfigurationDelegate_Action_None;
- }
- }
-
- /**
- * Allows us decouple the enum identifier in the code from its textual representation in the GUI
- */
- public static EPostLaunchAction strToActionEnum(String str) {
- if (str.equals(LaunchMessages.MultiLaunchConfigurationDelegate_Action_None)) {
- return EPostLaunchAction.NONE;
- } else if (str.equals(LaunchMessages.MultiLaunchConfigurationDelegate_Action_WaitUntilTerminated)) {
- return EPostLaunchAction.WAIT_FOR_TERMINATION;
- } else if (str.equals(LaunchMessages.MultiLaunchConfigurationDelegate_Action_Delay)) {
- return EPostLaunchAction.DELAY;
- } else {
- assert false : "new post launch action type is missing logic"; //$NON-NLS-1$
- return EPostLaunchAction.NONE;
- }
- }
-
- public int index;
- public boolean enabled;
- public String mode;
- public EPostLaunchAction action;
- public Object actionParam;
- public String name;
- public ILaunchConfiguration data;
- }
-
- public MultiLaunchConfigurationDelegate() {
- // nothing
- }
-
- /**
- * A specialization of launch to track sublaunches lifecycle, also terminates itself when all sublaunches are terminated
- *
- */
- private class MultiLaunch extends Launch implements ILaunchesListener2 {
-
- /**
- * Whether this process has been terminated
- */
- private boolean fTerminated;
-
- /**
- * A map of all our sub-launches and the current processes that belong
- * to each one.
- */
- private Map<ILaunch, IProcess[]> subLaunches = new HashMap<>();
-
- public MultiLaunch(ILaunchConfiguration launchConfiguration, String mode) {
- super(launchConfiguration, mode, null);
- getLaunchManager().addLaunchListener((ILaunchesListener2) this);
- }
-
- /**
- * Associate the launch
- * @param subLaunch
- */
- public void addSubLaunch(ILaunch subLaunch) {
- subLaunches.put(subLaunch, new IProcess[] {});
- }
-
- private ILaunch[] getSubLaunches() {
- return subLaunches.keySet().toArray(new ILaunch[subLaunches.keySet().size()]);
- }
-
- private boolean isChild(ILaunch launch) {
- for (ILaunch subLaunch : getSubLaunches()) {
- if (subLaunch == launch) {
- return true;
- }
- }
- return false;
- }
-
- /**
- * Override default behavior by querying all sub-launches to see if they are terminated
- * @see org.eclipse.debug.core.Launch#isTerminated()
- */
- @Override
- public boolean isTerminated() {
- if (fTerminated)
- return true;
-
- if (subLaunches.size() == 0)
- return false;
-
- for (ILaunch launch : getSubLaunches()) {
- if (!launch.isTerminated()) {
- return false;
- }
- }
- return true;
- }
-
- /**
- * Override default behavior by querying all sub-launches if they can be terminated
- * @see org.eclipse.debug.core.Launch#canTerminate()
- */
- @Override
- public boolean canTerminate() {
- if (subLaunches.size() == 0)
- return false;
-
- for (ILaunch launch : getSubLaunches()) {
- if (launch.canTerminate()) {
- return true;
- }
- }
- return false;
- }
-
- /**
- * Override default behavior by terminating all sub-launches
- * @see org.eclipse.debug.core.Launch#terminate()
- */
- @Override
- public void terminate() throws DebugException {
- MultiStatus status = new MultiStatus(DebugPlugin.getUniqueIdentifier(), DebugException.REQUEST_FAILED,
- DebugCoreMessages.Launch_terminate_failed, null);
-
- for (ILaunch launch : getSubLaunches()) {
- if (launch.canTerminate()) {
- try {
- launch.terminate();
- } catch (DebugException e) {
- status.merge(e.getStatus());
- }
- }
- }
-
- if (status.isOK()) {
- return;
- }
-
- IStatus[] children = status.getChildren();
- if (children.length == 1) {
- throw new DebugException(children[0]);
- }
-
- throw new DebugException(status);
- }
-
- /**
- * Handle terminated sub-launch
- * @param launch
- */
- private void launchTerminated(ILaunch launch) {
- if (this == launch)
- return;
-
- // Remove sub launch, keeping the processes of the terminated launch to
- // show the association and to keep the console content accessible
- if (subLaunches.remove(launch) != null) {
- // terminate ourselves if this is the last sub launch
- if (subLaunches.size() == 0) {
- fTerminated = true;
- fireTerminate();
- }
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.Launch#launchChanged(org.eclipse.debug.core.ILaunch)
- */
- @Override
- public void launchChanged(ILaunch launch) {
- if (this == launch)
- return;
-
- // add/remove processes
- if (isChild(launch)) {
- // Remove old processes
- IProcess[] oldProcesses = subLaunches.get(launch);
- IProcess[] newProcesses = launch.getProcesses();
-
- // avoid notifications when processes have not changed.
- if (!Arrays.equals(oldProcesses, newProcesses)) {
- for (IProcess oldProcess : oldProcesses) {
- removeProcess(oldProcess);
- }
-
- // Add new processes
- for (IProcess newProcess : newProcesses) {
- addProcess(newProcess);
- }
-
- // Replace the processes of the changed launch
- subLaunches.put(launch, newProcesses);
- }
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.Launch#launchRemoved(org.eclipse.debug.core.ILaunch)
- */
- @Override
- public void launchRemoved(ILaunch launch) {
- if (this == launch) {
- super.launchRemoved(launch);
- // Remove the processes we got from the sub-launches from this launch
- IProcess[] processes = getProcesses();
- for (IProcess process : processes) {
- removeProcess(process);
- }
-
- getLaunchManager().removeLaunchListener((ILaunchesListener2) this);
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchesListener2#launchesTerminated(org.eclipse.debug.core.ILaunch[])
- */
- @Override
- public void launchesTerminated(ILaunch[] launches) {
- for (ILaunch launch : launches) {
- launchTerminated(launch);
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchesListener#launchesAdded(org.eclipse.debug.core.ILaunch[])
- */
- @Override
- public void launchesAdded(ILaunch[] launches) {
- for (ILaunch launch : launches) {
- launchAdded(launch);
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchesListener#launchesChanged(org.eclipse.debug.core.ILaunch[])
- */
- @Override
- public void launchesChanged(ILaunch[] launches) {
- for (ILaunch launch : launches) {
- launchChanged(launch);
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchesListener#launchesRemoved(org.eclipse.debug.core.ILaunch[])
- */
- @Override
- public void launchesRemoved(ILaunch[] launches) {
- for (ILaunch launch : launches) {
- launchRemoved(launch);
- }
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.model.LaunchConfigurationDelegate#getLaunch(org.eclipse.debug.core.ILaunchConfiguration, java.lang.String)
- */
- @Override
- public ILaunch getLaunch(ILaunchConfiguration configuration, String mode) throws CoreException {
- return new MultiLaunch(configuration, mode);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.model.ILaunchConfigurationDelegate#launch(org.eclipse.debug.core.ILaunchConfiguration, java.lang.String, org.eclipse.debug.core.ILaunch, org.eclipse.core.runtime.IProgressMonitor)
- */
- @Override
- public void launch(ILaunchConfiguration configuration, String mode, final ILaunch launch, IProgressMonitor monitor)
- throws CoreException {
-
- // Have to temporarily turn off the "remove terminated launches when new one created"
- // preference because it does not work well for multilaunch
-
- final IPreferenceStore prefStore = DebugUIPlugin.getDefault().getPreferenceStore();
- boolean dstore = prefStore.getBoolean(IDebugUIConstants.PREF_AUTO_REMOVE_OLD_LAUNCHES);
-
- try {
- monitor.beginTask(LaunchMessages.MultiLaunchConfigurationDelegate_0 + configuration.getName(), 1000);
-
- prefStore.setValue(IDebugUIConstants.PREF_AUTO_REMOVE_OLD_LAUNCHES, false);
-
- List<LaunchElement> launches = createLaunchElements(configuration, new ArrayList<LaunchElement>());
- for (LaunchElement le : launches) {
- if (!le.enabled)
- continue;
-
- // find launch; if not found, skip (error?)
- final ILaunchConfiguration conf = findLaunch(le.name);
- if (conf == null)
- continue;
-
- // determine mode for each launch
- final String localMode;
- if (le.mode != null && !le.mode.equals(DEFAULT_MODE)) {
- localMode = le.mode;
- } else {
- localMode = mode;
- }
- if (!conf.supportsMode(localMode)) {
- PlatformUI.getWorkbench().getDisplay()
- .asyncExec(() -> MessageDialog.openError(
- PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(),
- LaunchMessages.LaunchUIPlugin_Error,
- NLS.bind(LaunchMessages.MultiLaunchConfigurationDelegate_Cannot, conf.toString(),
- localMode)));
-
- continue;
- }
- try {
- if (configuration.getName().equals(conf.getName()))
- throw new StackOverflowError();
-
- // LAUNCH child here
- ILaunch subLaunch = DebugUIPlugin.buildAndLaunch(conf, localMode,
- new SubProgressMonitor(monitor, 1000 / launches.size()));
- ((MultiLaunch) launch).addSubLaunch(subLaunch);
-
- // Now that we added the launch in our list, we have already
- // received the real launchChanged event, and did not know it was part of our list
- // So, fake another event now.
- ((MultiLaunch) launch).launchChanged(subLaunch);
-
- //Now we need to override the history to make multi-launch appear last, if we
- //don't do it last launch would be our child's launch which is not correct
- //for repeating the experience
- DebugUIPlugin.getDefault().getLaunchConfigurationManager().setRecentLaunch(launch);
-
- postLaunchAction(subLaunch, le.action, le.actionParam, monitor);
-
- } catch (StackOverflowError e) {
- PlatformUI.getWorkbench().getDisplay()
- .asyncExec(() -> MessageDialog.openError(
- PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(),
- LaunchMessages.LaunchUIPlugin_Error,
- NLS.bind(LaunchMessages.MultiLaunchConfigurationDelegate_Loop, conf.toString())));
- }
- }
- if (!launch.hasChildren()) {
- DebugPlugin.getDefault().getLaunchManager().removeLaunch(launch);
- }
- } finally {
- prefStore.setValue(IDebugUIConstants.PREF_AUTO_REMOVE_OLD_LAUNCHES, dstore);
- monitor.done();
- }
- }
-
- private void postLaunchAction(ILaunch subLaunch, EPostLaunchAction action, Object actionParam,
- IProgressMonitor monitor) {
- switch (action) {
- case NONE:
- return;
- case WAIT_FOR_TERMINATION:
- monitor.subTask(LaunchMessages.MultiLaunchConfigurationDelegate_Action_WaitingForTermination + " " //$NON-NLS-1$
- + subLaunch.getLaunchConfiguration().getName());
- while (!subLaunch.isTerminated() && !monitor.isCanceled()) {
- try {
- Thread.sleep(1000);
- } catch (InterruptedException e) {
- break;
- }
- }
- monitor.subTask(""); //$NON-NLS-1$
- break;
- case DELAY:
- Integer waitSecs = (Integer) actionParam;
- if (waitSecs != null) {
- monitor.subTask(
- NLS.bind(LaunchMessages.MultiLaunchConfigurationDelegate_Action_Delaying, waitSecs.toString()));
- try {
- Thread.sleep(waitSecs * 1000); // param is milliseconds
- } catch (InterruptedException e) {
- // ok
- }
- }
- break;
-
- default:
- assert false : "new post launch action type is missing logic"; //$NON-NLS-1$
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.model.LaunchConfigurationDelegate#buildProjects(org.eclipse.core.resources.IProject[], org.eclipse.core.runtime.IProgressMonitor)
- */
- @Override
- protected void buildProjects(IProject[] projects, IProgressMonitor monitor) throws CoreException {
- // do nothing, project can be rebuild for each launch individually
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.model.LaunchConfigurationDelegate#buildForLaunch(org.eclipse.debug.core.ILaunchConfiguration, java.lang.String, org.eclipse.core.runtime.IProgressMonitor)
- */
- @Override
- public boolean buildForLaunch(ILaunchConfiguration configuration, String mode, IProgressMonitor monitor)
- throws CoreException {
- // not build for this one
- return false;
- }
-
- protected static ILaunchConfiguration findLaunch(String name) throws CoreException {
- ILaunchManager launchManager = DebugPlugin.getDefault().getLaunchManager();
- ILaunchConfiguration[] launchConfigurations = launchManager.getLaunchConfigurations();
- for (int i = 0; i < launchConfigurations.length; i++) {
- ILaunchConfiguration lConf = launchConfigurations[i];
- if (lConf.getName().equals(name))
- return lConf;
- }
- return null;
- }
-
- public static List<LaunchElement> createLaunchElements(ILaunchConfiguration configuration,
- List<MultiLaunchConfigurationDelegate.LaunchElement> input) {
- try {
- Map<?, ?> attrs = configuration.getAttributes();
- for (Iterator<?> iterator = attrs.keySet().iterator(); iterator.hasNext();) {
- String attr = (String) iterator.next();
- try {
- if (attr.startsWith(MultiLaunchConfigurationDelegate.MULTI_LAUNCH_CONSTANTS_PREFIX)) {
- String prop = attr
- .substring(MultiLaunchConfigurationDelegate.MULTI_LAUNCH_CONSTANTS_PREFIX.length() + 1);
- int k = prop.indexOf('.');
- String num = prop.substring(0, k);
- int index = Integer.parseInt(num);
- String name = prop.substring(k + 1);
- if (name.equals(NAME_PROP)) {
- MultiLaunchConfigurationDelegate.LaunchElement el = new MultiLaunchConfigurationDelegate.LaunchElement();
- el.index = index;
- el.name = (String) attrs.get(attr);
-
- Object actionParam = null;
- String actionStr = (String) attrs.get(getProp(index, ACTION_PROP));
-
- EPostLaunchAction action;
- try {
- action = EPostLaunchAction.valueOf(actionStr);
- } catch (Exception e) {
- action = EPostLaunchAction.NONE;
- }
- if (action == EPostLaunchAction.DELAY) {
- try {
- actionParam = Integer
- .parseInt((String) attrs.get(getProp(index, ACTION_PARAM_PROP)));
- } catch (NumberFormatException exc) {
- LaunchUIPlugin.log(exc);
- }
- }
- el.action = action;
- el.actionParam = actionParam;
- el.mode = (String) attrs.get(getProp(index, MODE_PROP));
- el.enabled = Boolean.parseBoolean((String) attrs.get(getProp(index, ENABLED_PROP)));
- try {
- el.data = findLaunch(el.name);
- } catch (Exception e) {
- el.data = null;
- }
- while (index >= input.size()) {
- input.add(null);
- }
- input.set(index, el);
-
- }
- }
- } catch (Exception e) {
- LaunchUIPlugin.log(e);
- }
- }
- } catch (CoreException e) {
- LaunchUIPlugin.log(e);
- }
- return input;
- }
-
- public static void storeLaunchElements(ILaunchConfigurationWorkingCopy configuration, List<LaunchElement> input) {
- int i = 0;
- removeLaunchElements(configuration);
- for (LaunchElement el : input) {
- if (el == null)
- continue;
- configuration.setAttribute(MultiLaunchConfigurationDelegate.getProp(i, NAME_PROP), el.name);
- configuration.setAttribute(MultiLaunchConfigurationDelegate.getProp(i, ACTION_PROP), el.action.toString());
- // note: the saving of the action param will need to be enhanced if ever an action type is introduced that uses something that can't be reconstructed from its toString()
- configuration.setAttribute(MultiLaunchConfigurationDelegate.getProp(i, ACTION_PARAM_PROP),
- el.actionParam != null ? el.actionParam.toString() : null);
- configuration.setAttribute(MultiLaunchConfigurationDelegate.getProp(i, MODE_PROP), el.mode);
- configuration.setAttribute(MultiLaunchConfigurationDelegate.getProp(i, ENABLED_PROP), el.enabled + ""); //$NON-NLS-1$
- i++;
- }
- }
-
- public static void removeLaunchElements(ILaunchConfigurationWorkingCopy configuration) {
- try {
- Map<?, ?> attrs = configuration.getAttributes();
- for (Iterator<?> iterator = attrs.keySet().iterator(); iterator.hasNext();) {
- String attr = (String) iterator.next();
- try {
- if (attr.startsWith(MultiLaunchConfigurationDelegate.MULTI_LAUNCH_CONSTANTS_PREFIX)) {
- configuration.removeAttribute(attr);
- }
- } catch (Exception e) {
- LaunchUIPlugin.log(e);
- }
- }
- } catch (CoreException e) {
- LaunchUIPlugin.log(e);
- }
- }
-
- public static String getProp(int index, String string) {
- return MultiLaunchConfigurationDelegate.MULTI_LAUNCH_CONSTANTS_PREFIX + "." + index + "." + string; //$NON-NLS-1$ //$NON-NLS-2$
- }
-
- /**
- * Test if a launch configuration is a valid reference.
- * @param config configuration reference
- * @return <code>true</code> if it is a valid reference, <code>false</code> if launch configuration should be filtered
- */
- public static boolean isValidLaunchReference(ILaunchConfiguration config) {
- return DebugUIPlugin.doLaunchConfigurationFiltering(config) && !WorkbenchActivityHelper.filterItem(config);
- }
-}
diff --git a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/internal/ui/LaunchMessages.java b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/internal/ui/LaunchMessages.java
index 4d5877cf871..945f83e21c2 100644
--- a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/internal/ui/LaunchMessages.java
+++ b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/internal/ui/LaunchMessages.java
@@ -164,40 +164,6 @@ public class LaunchMessages extends NLS {
public static String LocalCDILaunchDelegate_8;
public static String LocalCDILaunchDelegate_9;
public static String LocalCDILaunchDelegate_10;
- public static String MultiLaunchConfigurationDelegate_0;
- public static String MultiLaunchConfigurationDelegate_Cannot;
- public static String MultiLaunchConfigurationDelegate_Loop;
- public static String MultiLaunchConfigurationDelegate_Action_None;
- public static String MultiLaunchConfigurationDelegate_Action_WaitUntilTerminated;
- public static String MultiLaunchConfigurationDelegate_Action_Delay;
- public static String MultiLaunchConfigurationDelegate_Action_WaitingForTermination;
- public static String MultiLaunchConfigurationDelegate_Action_Delaying;
- public static String MultiLaunchConfigurationSelectionDialog_0;
- public static String MultiLaunchConfigurationSelectionDialog_4;
- public static String MultiLaunchConfigurationSelectionDialog_5;
- public static String MultiLaunchConfigurationSelectionDialog_7;
- public static String MultiLaunchConfigurationSelectionDialog_8;
- public static String MultiLaunchConfigurationSelectionDialog_9;
- public static String MultiLaunchConfigurationSelectionDialog_10;
- public static String MultiLaunchConfigurationSelectionDialog_11;
- public static String MultiLaunchConfigurationSelectionDialog_12;
- public static String MultiLaunchConfigurationSelectionDialog_13;
- public static String MultiLaunchConfigurationSelectionDialog_14;
- public static String MultiLaunchConfigurationSelectionDialog_15;
- public static String MultiLaunchConfigurationTabGroup_1;
- public static String MultiLaunchConfigurationTabGroup_2;
- public static String MultiLaunchConfigurationTabGroup_3;
- public static String MultiLaunchConfigurationTabGroup_4;
- public static String MultiLaunchConfigurationTabGroup_5;
- public static String MultiLaunchConfigurationTabGroup_6;
- public static String MultiLaunchConfigurationTabGroup_7;
- public static String MultiLaunchConfigurationTabGroup_10;
- public static String MultiLaunchConfigurationTabGroup_11;
- public static String MultiLaunchConfigurationTabGroup_12;
- public static String MultiLaunchConfigurationTabGroup_13;
- public static String MultiLaunchConfigurationTabGroup_14;
- public static String MultiLaunchConfigurationTabGroup_15;
- public static String MultiLaunchConfigurationTabGroup_16;
public static String ProjectRenameChange_name;
public static String ProjectRenameChange_saveFailed;
public static String BuildErrPrompter_error_in_specific_config;
diff --git a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/internal/ui/LaunchMessages.properties b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/internal/ui/LaunchMessages.properties
index 2cffe910b03..cd420e37c48 100644
--- a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/internal/ui/LaunchMessages.properties
+++ b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/internal/ui/LaunchMessages.properties
@@ -187,40 +187,7 @@ LocalCDILaunchDelegate_7=Core file does not exist or is not readable.
LocalCDILaunchDelegate_8=Error starting process.
LocalCDILaunchDelegate_9=Eclipse runtime does not support working directory.
LocalCDILaunchDelegate_10=Failed to set program arguments, environment or working directory.
-MultiLaunchConfigurationDelegate_0=Launching\u0020
-MultiLaunchConfigurationDelegate_Cannot=Cannot launch ''{0}'' in the ''{1}'' mode
-MultiLaunchConfigurationDelegate_Loop=Infinite loop detected for ''{0}'' configuration
-MultiLaunchConfigurationDelegate_Action_None=None
-MultiLaunchConfigurationDelegate_Action_WaitUntilTerminated=Wait until terminated
-MultiLaunchConfigurationDelegate_Action_Delay=Delay
-MultiLaunchConfigurationDelegate_Action_WaitingForTermination=Waiting for termination of
-MultiLaunchConfigurationDelegate_Action_Delaying=Delaying next launch by {0} seconds
-MultiLaunchConfigurationSelectionDialog_0=Launch Configuration Selector
-MultiLaunchConfigurationSelectionDialog_4=Launch Mode:
-MultiLaunchConfigurationSelectionDialog_5=Use default mode when launching
-MultiLaunchConfigurationSelectionDialog_7=Select a launch configuration
-MultiLaunchConfigurationSelectionDialog_8=Post launch action:
-MultiLaunchConfigurationSelectionDialog_9=Seconds:
-MultiLaunchConfigurationSelectionDialog_10=Enter valid number of seconds
-MultiLaunchConfigurationSelectionDialog_11=Select only one launch configuration
-MultiLaunchConfigurationSelectionDialog_12=Add Launch Configuration
-MultiLaunchConfigurationSelectionDialog_13=Edit Launch Configuration
-MultiLaunchConfigurationSelectionDialog_14=Add one or more launch configurations to the launch group
-MultiLaunchConfigurationSelectionDialog_15=Edit an existing entry in the launch group
-MultiLaunchConfigurationTabGroup_1=Up
-MultiLaunchConfigurationTabGroup_2=Down
-MultiLaunchConfigurationTabGroup_3=Edit...
-MultiLaunchConfigurationTabGroup_4=Add...
-MultiLaunchConfigurationTabGroup_5=Remove
-MultiLaunchConfigurationTabGroup_6=Name
-MultiLaunchConfigurationTabGroup_7=Mode
-MultiLaunchConfigurationTabGroup_10=Launches
-MultiLaunchConfigurationTabGroup_11=seconds
-MultiLaunchConfigurationTabGroup_12=Action
-MultiLaunchConfigurationTabGroup_13=Delay {0} seconds
-MultiLaunchConfigurationTabGroup_14=Launch {0} does not exist.
-MultiLaunchConfigurationTabGroup_15=Launch {0} is filtered.
-MultiLaunchConfigurationTabGroup_16=Must have at least one valid enabled launch.
+
ProjectRenameChange_name=Update launch configuration "{0}"
ProjectRenameChange_saveFailed=Failed to save updated launch configuration "{0}"
diff --git a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/internal/ui/LaunchUIPlugin.java b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/internal/ui/LaunchUIPlugin.java
index 575ba114079..dd3378a8a56 100644
--- a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/internal/ui/LaunchUIPlugin.java
+++ b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/internal/ui/LaunchUIPlugin.java
@@ -24,6 +24,7 @@ import org.eclipse.jface.dialogs.ErrorDialog;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceReference;
@@ -78,7 +79,7 @@ public class LaunchUIPlugin extends AbstractUIPlugin implements ILaunchesListene
return debugDialogShell;
debugDialogShell = null;
}
- IWorkbenchWindow[] windows = getDefault().getWorkbench().getWorkbenchWindows();
+ IWorkbenchWindow[] windows = PlatformUI.getWorkbench().getWorkbenchWindows();
return windows[0].getShell();
}
@@ -135,7 +136,7 @@ public class LaunchUIPlugin extends AbstractUIPlugin implements ILaunchesListene
* @return the active workbench window
*/
public static IWorkbenchWindow getActiveWorkbenchWindow() {
- return getDefault().getWorkbench().getActiveWorkbenchWindow();
+ return PlatformUI.getWorkbench().getActiveWorkbenchWindow();
}
public static IWorkbenchPage getActivePage() {
diff --git a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/internal/ui/MultiLaunchConfigurationSelectionDialog.java b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/internal/ui/MultiLaunchConfigurationSelectionDialog.java
deleted file mode 100644
index c4fdd796303..00000000000
--- a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/internal/ui/MultiLaunchConfigurationSelectionDialog.java
+++ /dev/null
@@ -1,383 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2016 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - initial API and implementation
- * Freescale Semiconductor
- *******************************************************************************/
-package org.eclipse.cdt.launch.internal.ui;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.cdt.launch.internal.MultiLaunchConfigurationDelegate;
-import org.eclipse.cdt.launch.internal.MultiLaunchConfigurationDelegate.LaunchElement;
-import org.eclipse.cdt.launch.internal.MultiLaunchConfigurationDelegate.LaunchElement.EPostLaunchAction;
-import org.eclipse.cdt.launch.ui.ComboControlledStackComposite;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.ILaunchConfiguration;
-import org.eclipse.debug.core.ILaunchConfigurationType;
-import org.eclipse.debug.core.ILaunchManager;
-import org.eclipse.debug.internal.ui.DebugUIPlugin;
-import org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationFilteredTree;
-import org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationManager;
-import org.eclipse.debug.internal.ui.launchConfigurations.LaunchGroupFilter;
-import org.eclipse.debug.ui.ILaunchGroup;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.TitleAreaDialog;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerFilter;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Combo;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.swt.widgets.Tree;
-import org.eclipse.ui.dialogs.FilteredTree;
-import org.eclipse.ui.dialogs.PatternFilter;
-
-/**
- * Dialog to select launch configuration(s)
- * @deprecated See Bug 517722, Launch Groups are now part of Platform.
- */
-@Deprecated
-public class MultiLaunchConfigurationSelectionDialog extends TitleAreaDialog implements ISelectionChangedListener {
- private ViewerFilter[] fFilters = null;
- private ISelection fSelection;
- private ILaunchGroup[] launchGroups;
- private String mode;
- private EPostLaunchAction action = EPostLaunchAction.NONE;
- private Object actionParam;
- private boolean isDefaultMode;
- private ViewerFilter emptyTypeFilter;
- private IStructuredSelection fInitialSelection;
- private ComboControlledStackComposite fStackComposite;
- private Label fDelayAmountLabel;
- private Text fDelayAmountWidget; // in seconds
- private boolean fForEditing; // true if dialog was opened to edit an entry, otherwise it was opened to add one
-
- public MultiLaunchConfigurationSelectionDialog(Shell shell, String initMode, boolean forEditing) {
- super(shell);
- LaunchConfigurationManager manager = DebugUIPlugin.getDefault().getLaunchConfigurationManager();
- launchGroups = manager.getLaunchGroups();
- mode = initMode;
- fForEditing = forEditing;
- fFilters = null;
- setShellStyle(getShellStyle() | SWT.RESIZE);
- emptyTypeFilter = new ViewerFilter() {
- @Override
- public boolean select(Viewer viewer, Object parentElement, Object element) {
- if (element instanceof ILaunchConfigurationType) {
- try {
- ILaunchConfigurationType type = (ILaunchConfigurationType) element;
- return getLaunchManager().getLaunchConfigurations(type).length > 0;
- } catch (CoreException e) {
- return false;
- }
- } else if (element instanceof ILaunchConfiguration) {
- return MultiLaunchConfigurationDelegate.isValidLaunchReference((ILaunchConfiguration) element);
- }
- return true;
- }
- };
- }
-
- protected ILaunchManager getLaunchManager() {
- return DebugPlugin.getDefault().getLaunchManager();
- }
-
- @Override
- protected Control createContents(Composite parent) {
- Control x = super.createContents(parent);
- validate();
- setErrorMessage(null);
- return x;
- }
-
- @Override
- protected Control createDialogArea(Composite parent2) {
- Composite comp = (Composite) super.createDialogArea(parent2);
-
- // title bar
- getShell().setText(fForEditing ? LaunchMessages.MultiLaunchConfigurationSelectionDialog_13
- : LaunchMessages.MultiLaunchConfigurationSelectionDialog_12);
-
- // dialog message area (not title bar)
- setTitle(fForEditing ? LaunchMessages.MultiLaunchConfigurationSelectionDialog_15
- : LaunchMessages.MultiLaunchConfigurationSelectionDialog_14);
-
- fStackComposite = new ComboControlledStackComposite(comp, SWT.NONE);
- HashMap<String, ILaunchGroup> modes = new HashMap<>();
- for (ILaunchGroup launchGroup : launchGroups) {
- if (!modes.containsKey(launchGroup.getMode())) {
- modes.put(launchGroup.getMode(), launchGroup);
- }
- }
- if (this.mode.equals(MultiLaunchConfigurationDelegate.DEFAULT_MODE)) {
- try {
- this.mode = "run"; //$NON-NLS-1$
- ILaunchConfiguration[] configs = getSelectedLaunchConfigurations();
- if (configs.length > 0) {
- // we care only about the first selected element
- for (Iterator<String> iterator = modes.keySet().iterator(); iterator.hasNext();) {
- String mode = iterator.next();
- if (configs[0].supportsMode(mode)) {
- this.mode = mode;
- break;
- }
- }
- }
- } catch (Exception e) {
- }
- }
- for (Iterator<String> iterator = modes.keySet().iterator(); iterator.hasNext();) {
- String mode = iterator.next();
- ILaunchGroup launchGroup = modes.get(mode);
- LaunchConfigurationFilteredTree fTree = new LaunchConfigurationFilteredTree(
- fStackComposite.getStackParent(), SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER,
- new PatternFilter(), launchGroup, fFilters);
- String label = mode;
- fStackComposite.addItem(label, fTree);
- fTree.createViewControl();
- ViewerFilter[] filters = fTree.getViewer().getFilters();
- for (ViewerFilter viewerFilter : filters) {
- if (viewerFilter instanceof LaunchGroupFilter) {
- fTree.getViewer().removeFilter(viewerFilter);
- }
- }
- fTree.getViewer().addFilter(emptyTypeFilter);
- fTree.getViewer().addSelectionChangedListener(this);
- if (launchGroup.getMode().equals(this.mode)) {
- fStackComposite.setSelection(label);
- }
- if (fInitialSelection != null) {
-
- fTree.getViewer().setSelection(fInitialSelection, true);
- }
- }
- fStackComposite.setLabelText(LaunchMessages.MultiLaunchConfigurationSelectionDialog_4);
- fStackComposite.pack();
- Rectangle bounds = fStackComposite.getBounds();
- // adjust size
- GridData data = ((GridData) fStackComposite.getLayoutData());
- if (data == null) {
- data = new GridData(GridData.FILL_BOTH);
- fStackComposite.setLayoutData(data);
- }
- data.heightHint = Math.max(convertHeightInCharsToPixels(15), bounds.height);
- data.widthHint = Math.max(convertWidthInCharsToPixels(40), bounds.width);
- fStackComposite.getCombo().addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- mode = ((Combo) e.widget).getText();
- }
- });
- // "Use default mode" checkbox. Use a parent composite to provide consistent left-side padding
- Composite checkboxComp = new Composite(comp, SWT.NONE);
- checkboxComp.setLayout(new GridLayout(1, false));
- checkboxComp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- Button checkBox = new Button(checkboxComp, SWT.CHECK);
- checkBox.setText(LaunchMessages.MultiLaunchConfigurationSelectionDialog_5);
- checkBox.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- isDefaultMode = ((Button) e.widget).getSelection();
- }
- });
- checkBox.setSelection(isDefaultMode);
-
- createPostLaunchControl(comp);
- return comp;
- }
-
- private void createPostLaunchControl(Composite parent) {
- Composite comp = new Composite(parent, SWT.NONE);
- comp.setLayout(new GridLayout(4, false));
- comp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- Label label = new Label(comp, SWT.NONE);
- label.setText(LaunchMessages.MultiLaunchConfigurationSelectionDialog_8);
- Combo combo = new Combo(comp, SWT.READ_ONLY);
- combo.add(LaunchElement.actionEnumToStr(EPostLaunchAction.NONE));
- combo.add(LaunchElement.actionEnumToStr(EPostLaunchAction.WAIT_FOR_TERMINATION));
- combo.add(LaunchElement.actionEnumToStr(EPostLaunchAction.DELAY));
- combo.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- final String actionStr = ((Combo) e.widget).getText();
- action = MultiLaunchConfigurationDelegate.LaunchElement.strToActionEnum(actionStr);
- showHideDelayAmountWidgets();
- validate();
- }
- });
- combo.setText(MultiLaunchConfigurationDelegate.LaunchElement.actionEnumToStr(action));
-
- fDelayAmountLabel = new Label(comp, SWT.NONE);
- fDelayAmountLabel.setText(LaunchMessages.MultiLaunchConfigurationSelectionDialog_9);
-
- fDelayAmountWidget = new Text(comp, SWT.SINGLE | SWT.BORDER);
- GridData gridData = new GridData();
- gridData.widthHint = convertWidthInCharsToPixels(8);
- fDelayAmountWidget.setLayoutData(gridData);
- fDelayAmountWidget.addModifyListener(new ModifyListener() {
- @Override
- public void modifyText(ModifyEvent e) {
- String text = ((Text) e.widget).getText();
- try {
- actionParam = Integer.valueOf(text);
- } catch (NumberFormatException exc) {
- actionParam = null;
- }
- validate();
- }
- });
- if (actionParam instanceof Integer) {
- fDelayAmountWidget.setText(((Integer) actionParam).toString());
- }
-
- showHideDelayAmountWidgets();
- }
-
- private void showHideDelayAmountWidgets() {
- final boolean visible = action == EPostLaunchAction.DELAY;
- fDelayAmountLabel.setVisible(visible);
- fDelayAmountWidget.setVisible(visible);
- }
-
- public ILaunchConfiguration[] getSelectedLaunchConfigurations() {
- List<ILaunchConfiguration> configs = new ArrayList<>();
- if (fSelection != null && !fSelection.isEmpty()) {
- for (Iterator<?> iter = ((IStructuredSelection) fSelection).iterator(); iter.hasNext();) {
- Object selection = iter.next();
- if (selection instanceof ILaunchConfiguration) {
- configs.add((ILaunchConfiguration) selection);
- }
- }
- }
- return configs.toArray(new ILaunchConfiguration[configs.size()]);
- }
-
- public String getMode() {
- return isDefaultMode ? MultiLaunchConfigurationDelegate.DEFAULT_MODE : mode;
- }
-
- public EPostLaunchAction getAction() {
- return action;
- }
-
- public Object getActionParam() {
- return actionParam;
- }
-
- public static MultiLaunchConfigurationSelectionDialog createDialog(Shell shell, String groupId,
- boolean forEditing) {
- return new MultiLaunchConfigurationSelectionDialog(shell, groupId, forEditing);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.viewers.ISelectionChangedListener#selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent)
- */
- @Override
- public void selectionChanged(SelectionChangedEvent event) {
-
- // This listener gets called for a selection change in the launch
- // configuration viewer embedded in the dialog. Problem is, there are
- // numerous viewers--one for each platform debug ILaunchGroup (run,
- // debug, profile). These viewers are stacked, so only one is ever
- // visible to the user. During initialization, we get a selection change
- // notification for every viewer. We need to ignore all but the one that
- // matters--the visible one.
-
- Tree topTree = null;
- final Control topControl = fStackComposite.getTopControl();
- if (topControl instanceof FilteredTree) {
- final TreeViewer viewer = ((FilteredTree) topControl).getViewer();
- if (viewer != null) {
- topTree = viewer.getTree();
- }
- }
- if (topTree == null) {
- return;
- }
-
- boolean selectionIsForVisibleViewer = false;
- final Object src = event.getSource();
- if (src instanceof Viewer) {
- final Control viewerControl = ((Viewer) src).getControl();
- if (viewerControl == topTree) {
- selectionIsForVisibleViewer = true;
- }
- }
-
- if (!selectionIsForVisibleViewer) {
- return;
- }
-
- fSelection = event.getSelection();
- validate();
- }
-
- protected void validate() {
- Button ok_button = getButton(IDialogConstants.OK_ID);
- boolean isValid = true;
- if (getSelectedLaunchConfigurations().length < 1) {
- setErrorMessage(LaunchMessages.MultiLaunchConfigurationSelectionDialog_7);
- isValid = false;
- } else {
- setErrorMessage(null);
- }
-
- if (isValid) {
- if (fForEditing) {
- // must have only one selection
- if (getSelectedLaunchConfigurations().length > 1) {
- setErrorMessage(LaunchMessages.MultiLaunchConfigurationSelectionDialog_11);
- isValid = false;
- }
- }
- }
-
- if (isValid) {
- if (action == EPostLaunchAction.DELAY) {
- isValid = (actionParam instanceof Integer) && ((Integer) actionParam > 0);
- setErrorMessage(isValid ? null : LaunchMessages.MultiLaunchConfigurationSelectionDialog_10);
- }
- }
-
- if (ok_button != null)
- ok_button.setEnabled(isValid);
- }
-
- public void setInitialSelection(LaunchElement el) {
- action = el.action;
- actionParam = el.actionParam;
- isDefaultMode = el.mode.equals(MultiLaunchConfigurationDelegate.DEFAULT_MODE);
- fInitialSelection = new StructuredSelection(el.data);
- fSelection = fInitialSelection;
- }
-}
diff --git a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/internal/ui/MultiLaunchConfigurationTabGroup.java b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/internal/ui/MultiLaunchConfigurationTabGroup.java
deleted file mode 100644
index 62c57fa3957..00000000000
--- a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/internal/ui/MultiLaunchConfigurationTabGroup.java
+++ /dev/null
@@ -1,549 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2012 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - initial API and implementation
- * Freescale Semiconductor
- *******************************************************************************/
-package org.eclipse.cdt.launch.internal.ui;
-
-import java.text.MessageFormat;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.cdt.launch.internal.MultiLaunchConfigurationDelegate;
-import org.eclipse.cdt.launch.internal.MultiLaunchConfigurationDelegate.LaunchElement;
-import org.eclipse.cdt.launch.internal.MultiLaunchConfigurationDelegate.LaunchElement.EPostLaunchAction;
-import org.eclipse.cdt.launch.ui.CommonTabLite;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.debug.core.ILaunchConfiguration;
-import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
-import org.eclipse.debug.internal.ui.DebugPluginImages;
-import org.eclipse.debug.ui.AbstractLaunchConfigurationTab;
-import org.eclipse.debug.ui.AbstractLaunchConfigurationTabGroup;
-import org.eclipse.debug.ui.ILaunchConfigurationDialog;
-import org.eclipse.debug.ui.ILaunchConfigurationTab;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.viewers.BaseLabelProvider;
-import org.eclipse.jface.viewers.CheckStateChangedEvent;
-import org.eclipse.jface.viewers.CheckboxTreeViewer;
-import org.eclipse.jface.viewers.ICheckStateListener;
-import org.eclipse.jface.viewers.ICheckStateProvider;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Tree;
-import org.eclipse.swt.widgets.TreeColumn;
-import org.eclipse.swt.widgets.Widget;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * Tab group for Launch Group.
- * @deprecated See Bug 517722, Launch Groups are now part of Platform.
- */
-@Deprecated
-public class MultiLaunchConfigurationTabGroup extends AbstractLaunchConfigurationTabGroup {
- static class ContentProvider implements ITreeContentProvider {
- protected List<LaunchElement> input;
-
- @Override
- public Object[] getElements(Object inputElement) {
- return getChildren(inputElement);
- }
-
- @Override
- public void dispose() {
- input = null;
- }
-
- @Override
- @SuppressWarnings("unchecked") // nothing we can do about this
- public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
- if (newInput instanceof List<?>)
- input = (List<LaunchElement>) newInput;
- }
-
- @Override
- public Object[] getChildren(Object parentElement) {
- return (parentElement == input) ? input.toArray() : null;
- }
-
- @Override
- public Object getParent(Object element) {
- return (element == input) ? null : input;
- }
-
- @Override
- public boolean hasChildren(Object element) {
- return (element == input) ? (input.size() > 0) : false;
- }
- }
-
- static class LabelProvider extends BaseLabelProvider implements ITableLabelProvider {
- @Override
- public Image getColumnImage(Object element, int columnIndex) {
- if (!(element instanceof MultiLaunchConfigurationDelegate.LaunchElement))
- return null;
- if (columnIndex == 0) {
- MultiLaunchConfigurationDelegate.LaunchElement el = (MultiLaunchConfigurationDelegate.LaunchElement) element;
- if (el.data == null || !MultiLaunchConfigurationDelegate.isValidLaunchReference(el.data)) {
- Image errorImage = PlatformUI.getWorkbench().getSharedImages()
- .getImage(ISharedImages.IMG_OBJS_ERROR_TSK);
- return errorImage;
- }
-
- try {
- String key = el.data.getType().getIdentifier();
- return DebugPluginImages.getImage(key);
- } catch (CoreException e) {
- Image errorImage = PlatformUI.getWorkbench().getSharedImages()
- .getImage(ISharedImages.IMG_OBJS_ERROR_TSK);
- return errorImage;
- }
- }
- return null;
- }
-
- @Override
- public String getColumnText(Object element, int columnIndex) {
- if (!(element instanceof MultiLaunchConfigurationDelegate.LaunchElement))
- return null;
- MultiLaunchConfigurationDelegate.LaunchElement el = (MultiLaunchConfigurationDelegate.LaunchElement) element;
-
- // launch name
- if (columnIndex == 0) {
- try {
- return (el.data != null) ? el.data.getType().getName() + "::" + el.name : el.name; //$NON-NLS-1$
- } catch (CoreException e) {
- return el.name;
- }
- }
-
- // launch mode
- if (columnIndex == 1)
- return el.mode;
-
- // launch post action
- if (columnIndex == 2) {
- EPostLaunchAction action = el.action;
- switch (action) {
- case NONE:
- return ""; //$NON-NLS-1$
- case WAIT_FOR_TERMINATION:
- return LaunchMessages.MultiLaunchConfigurationDelegate_Action_WaitUntilTerminated;
- case DELAY:
- final Object actionParam = el.actionParam;
- return NLS.bind(LaunchMessages.MultiLaunchConfigurationTabGroup_13,
- actionParam instanceof Integer ? Integer.toString((Integer) actionParam) : "?"); //$NON-NLS-1$
- default:
- assert false : "new post launch action missing logic here"; //$NON-NLS-1$
- return ""; //$NON-NLS-1$
- }
- }
- return null;
- }
- }
-
- static class CheckStateProvider implements ICheckStateProvider {
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.viewers.ICheckStateProvider#isChecked(java.lang.Object)
- */
- @Override
- public boolean isChecked(Object element) {
- if (element instanceof LaunchElement) {
- return ((LaunchElement) element).enabled;
- }
- return false;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.viewers.ICheckStateProvider#isGrayed(java.lang.Object)
- */
- @Override
- public boolean isGrayed(Object element) {
- return false;
- }
- }
-
- static abstract class ButtonComposite extends Composite implements SelectionListener {
- Button upButton;
- Button downButton;
- Button addButton;
- Button deleteButton;
- Button editButton;
-
- public ButtonComposite(Composite parent, int style) {
- super(parent, style);
- setLayout(new GridLayout());
- upButton = createPushButton(this, LaunchMessages.MultiLaunchConfigurationTabGroup_1);
- downButton = createPushButton(this, LaunchMessages.MultiLaunchConfigurationTabGroup_2);
- editButton = createPushButton(this, LaunchMessages.MultiLaunchConfigurationTabGroup_3);
- addButton = createPushButton(this, LaunchMessages.MultiLaunchConfigurationTabGroup_4);
- deleteButton = createPushButton(this, LaunchMessages.MultiLaunchConfigurationTabGroup_5);
-
- }
-
- protected void updateWidgetEnablement() {
-
- }
-
- /**
- * Helper method to create a push button.
- *
- * @param parent
- * the parent control
- * @param key
- * the resource name used to supply the button's label text
- * @return Button
- */
- protected Button createPushButton(Composite parent, String key) {
- Button button = new Button(parent, SWT.PUSH);
- button.setText(key);
- button.setFont(parent.getFont());
- GridData data = new GridData(GridData.FILL_HORIZONTAL);
- button.setLayoutData(data);
- button.addSelectionListener(this);
- return button;
- }
-
- @Override
- public void widgetDefaultSelected(SelectionEvent e) {
- // nothing
- }
-
- @Override
- public void widgetSelected(SelectionEvent e) {
- Widget widget = e.widget;
- if (widget == upButton) {
- upPressed();
- } else if (widget == downButton) {
- downPressed();
- } else if (widget == addButton) {
- addPressed();
- } else if (widget == deleteButton) {
- deletePressed();
- } else if (widget == editButton) {
- editPressed();
- }
- }
-
- protected abstract void addPressed();
-
- protected abstract void editPressed();
-
- protected abstract void deletePressed();
-
- protected abstract void downPressed();
-
- protected abstract void upPressed();
- }
-
- static class GroupLaunchTab extends AbstractLaunchConfigurationTab {
- protected CheckboxTreeViewer treeViewer;
- protected List<LaunchElement> input = new ArrayList<>();
- private String mode;
-
- public GroupLaunchTab(String mode) {
- this.mode = mode;
- }
-
- @Override
- public void createControl(Composite parent) {
- Composite comp = new Composite(parent, SWT.NONE);
- setControl(comp);
- //comp.setBackground(PlatformUI.getWorkbench().getDisplay().getSystemColor(SWT.COLOR_DARK_GREEN));
- comp.setLayout(new GridLayout(2, false));
- treeViewer = new CheckboxTreeViewer(comp, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL);
- Tree table = treeViewer.getTree();
- table.setFont(parent.getFont());
- treeViewer.setContentProvider(new ContentProvider());
- treeViewer.setLabelProvider(new LabelProvider());
- treeViewer.setCheckStateProvider(new CheckStateProvider());
- table.setHeaderVisible(true);
- table.setLayoutData(new GridData(GridData.FILL_BOTH));
- TreeColumn col1 = new TreeColumn(table, SWT.NONE);
- col1.setText(LaunchMessages.MultiLaunchConfigurationTabGroup_6);
- col1.setWidth(300);
- TreeColumn col2 = new TreeColumn(table, SWT.NONE);
- col2.setText(LaunchMessages.MultiLaunchConfigurationTabGroup_7);
- col2.setWidth(100);
- TreeColumn col3 = new TreeColumn(table, SWT.NONE);
- col3.setText(LaunchMessages.MultiLaunchConfigurationTabGroup_12);
- col3.setWidth(100);
-
- treeViewer.setInput(input);
- final ButtonComposite buts = new ButtonComposite(comp, SWT.NONE) {
- @Override
- protected void addPressed() {
- MultiLaunchConfigurationSelectionDialog dialog = MultiLaunchConfigurationSelectionDialog
- .createDialog(treeViewer.getControl().getShell(), mode, false);
- if (dialog.open() == Dialog.OK) {
- ILaunchConfiguration[] configs = dialog.getSelectedLaunchConfigurations();
- if (configs.length < 1)
- return;
- for (ILaunchConfiguration config : configs) {
- MultiLaunchConfigurationDelegate.LaunchElement el = new MultiLaunchConfigurationDelegate.LaunchElement();
- input.add(el);
- el.index = input.size() - 1;
- el.enabled = true;
- el.name = config.getName();
- el.data = config;
- el.mode = dialog.getMode();
- el.action = dialog.getAction();
- el.actionParam = dialog.getActionParam();
- treeViewer.refresh(true);
- treeViewer.setChecked(el, el.enabled);
- }
- updateWidgetEnablement();
- updateLaunchConfigurationDialog();
- }
- }
-
- @Override
- protected void updateWidgetEnablement() {
- downButton.setEnabled(isDownEnabled());
- upButton.setEnabled(isUpEnabled());
-
- int selectionCount = getSelectionCount();
- editButton.setEnabled(selectionCount == 1);
- deleteButton.setEnabled(selectionCount > 0);
- }
-
- @Override
- protected void editPressed() {
- int index = getSingleSelectionIndex();
- if (index < 0)
- return;
- MultiLaunchConfigurationDelegate.LaunchElement el = input.get(index);
- MultiLaunchConfigurationSelectionDialog dialog = MultiLaunchConfigurationSelectionDialog
- .createDialog(treeViewer.getControl().getShell(), el.mode, true);
- if (MultiLaunchConfigurationDelegate.isValidLaunchReference(el.data)) {
- dialog.setInitialSelection(el);
- }
- if (dialog.open() == Dialog.OK) {
- ILaunchConfiguration[] confs = dialog.getSelectedLaunchConfigurations();
- if (confs.length < 0)
- return;
- assert confs.length == 1 : "invocation of the dialog for editing an entry sholdn't allow OK to be hit if the user chooses multiple launch configs in the dialog"; //$NON-NLS-1$
- el.name = confs[0].getName();
- el.data = confs[0];
- el.mode = dialog.getMode();
- el.action = dialog.getAction();
- el.actionParam = dialog.getActionParam();
- treeViewer.refresh(true);
- updateWidgetEnablement();
- updateLaunchConfigurationDialog();
- }
- }
-
- @Override
- protected void deletePressed() {
- int[] indices = getMultiSelectionIndices();
- if (indices.length < 1)
- return;
- // need to delete from high to low
- for (int i = indices.length - 1; i >= 0; i--) {
- input.remove(indices[i]);
- }
- treeViewer.refresh(true);
- updateWidgetEnablement();
- updateLaunchConfigurationDialog();
- }
-
- /**
- * @return the index of the selection if a single item is
- * selected. If zero or multiple are selected, -1 is
- * returned
- */
- private int getSingleSelectionIndex() {
- StructuredSelection sel = (StructuredSelection) treeViewer.getSelection();
- if (sel.size() != 1)
- return -1;
- MultiLaunchConfigurationDelegate.LaunchElement el = ((MultiLaunchConfigurationDelegate.LaunchElement) sel
- .getFirstElement());
- return input.indexOf(el);
- }
-
- /**
- * @return the indices of one or more selected items. Indices
- * are always returned in ascending order
- */
- private int[] getMultiSelectionIndices() {
- StructuredSelection sel = (StructuredSelection) treeViewer.getSelection();
- List<Integer> indices = new ArrayList<>();
-
- for (Iterator<?> iter = sel.iterator(); iter.hasNext();) {
- MultiLaunchConfigurationDelegate.LaunchElement el = (MultiLaunchConfigurationDelegate.LaunchElement) iter
- .next();
- indices.add(input.indexOf(el));
-
- }
- int[] result = new int[indices.size()];
- for (int i = 0; i < result.length; i++) {
- result[i] = indices.get(i);
- }
- return result;
- }
-
- private int getSelectionCount() {
- return ((StructuredSelection) treeViewer.getSelection()).size();
- }
-
- @Override
- protected void downPressed() {
- if (!isDownEnabled())
- return;
- int index = getSingleSelectionIndex();
-
- MultiLaunchConfigurationDelegate.LaunchElement x = input.get(index);
- input.set(index, input.get(index + 1));
- input.set(index + 1, x);
- treeViewer.refresh(true);
- updateWidgetEnablement();
- updateLaunchConfigurationDialog();
- }
-
- protected boolean isDownEnabled() {
- final int index = getSingleSelectionIndex();
- return (index >= 0) && (index != input.size() - 1);
- }
-
- protected boolean isUpEnabled() {
- return getSingleSelectionIndex() > 0;
- }
-
- @Override
- protected void upPressed() {
- if (!isUpEnabled())
- return;
- int index = getSingleSelectionIndex();
- MultiLaunchConfigurationDelegate.LaunchElement x = input.get(index);
- input.set(index, input.get(index - 1));
- input.set(index - 1, x);
- treeViewer.refresh(true);
- updateWidgetEnablement();
- updateLaunchConfigurationDialog();
- }
- };
- treeViewer.addSelectionChangedListener(new ISelectionChangedListener() {
- @Override
- public void selectionChanged(SelectionChangedEvent event) {
- buts.updateWidgetEnablement();
- }
- });
-
- treeViewer.getTree().addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetDefaultSelected(SelectionEvent e) {
- buts.editPressed();
- }
- });
-
- treeViewer.addCheckStateListener(new ICheckStateListener() {
- @Override
- public void checkStateChanged(CheckStateChangedEvent event) {
- ((LaunchElement) event.getElement()).enabled = event.getChecked();
- updateLaunchConfigurationDialog();
- }
- });
- buts.updateWidgetEnablement();
- GridData layoutData = new GridData(GridData.GRAB_VERTICAL);
- layoutData.verticalAlignment = SWT.BEGINNING;
- buts.setLayoutData(layoutData);
- }
-
- @Override
- public String getName() {
- return LaunchMessages.MultiLaunchConfigurationTabGroup_10;
- }
-
- @Override
- public void initializeFrom(ILaunchConfiguration configuration) {
- // replace the input from previously shown launch configurations
- input = MultiLaunchConfigurationDelegate.createLaunchElements(configuration,
- new ArrayList<LaunchElement>());
- if (treeViewer != null) {
- treeViewer.setInput(input);
- }
- }
-
- @Override
- public void performApply(ILaunchConfigurationWorkingCopy configuration) {
- MultiLaunchConfigurationDelegate.storeLaunchElements(configuration, input);
- }
-
- @Override
- public void setDefaults(ILaunchConfigurationWorkingCopy configuration) {
- // defaults is empty list
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.ui.AbstractLaunchConfigurationTab#isValid(org.eclipse.debug.core.ILaunchConfiguration)
- */
- @Override
- public boolean isValid(ILaunchConfiguration launchConfig) {
- setMessage(null);
- setErrorMessage(null);
- int validLaunches = 0;
- // test if each launch is valid
- for (LaunchElement element : input) {
- if (element.enabled) {
- if (element.data == null) {
- // error referencing invalid launch
- setErrorMessage(
- MessageFormat.format(LaunchMessages.MultiLaunchConfigurationTabGroup_14, element.name));
- return false;
- } else if (!MultiLaunchConfigurationDelegate.isValidLaunchReference(element.data)) {
- // error referencing invalid launch
- setErrorMessage(
- MessageFormat.format(LaunchMessages.MultiLaunchConfigurationTabGroup_15, element.name));
- return false;
- }
- validLaunches++;
- }
- }
- if (validLaunches < 1) {
- // must have at least one valid and enabled launch
- setErrorMessage(LaunchMessages.MultiLaunchConfigurationTabGroup_16);
- return false;
- }
- return true;
- }
- }
-
- public MultiLaunchConfigurationTabGroup() {
- // nothing
- }
-
- @Override
- public void createTabs(ILaunchConfigurationDialog dialog, String mode) {
- ILaunchConfigurationTab[] tabs = new ILaunchConfigurationTab[] { //
- new GroupLaunchTab(mode), //
- new CommonTabLite() //
- };
- setTabs(tabs);
- }
-}
diff --git a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/messages.properties b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/messages.properties
index 426d03f33f4..b7249c6c487 100644
--- a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/messages.properties
+++ b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/messages.properties
@@ -1,5 +1,5 @@
###############################################################################
-# Copyright (c) 2019 Kichwa Coders and others.
+# Copyright (c) 2019 Kichwa Coders Ltd and others.
#
# This program and the accompanying materials
# are made available under the terms of the Eclipse Public License 2.0
diff --git a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CAbstractArgumentsTab.java b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CAbstractArgumentsTab.java
index 55c2f479c81..29c2c3254f2 100644
--- a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CAbstractArgumentsTab.java
+++ b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CAbstractArgumentsTab.java
@@ -39,6 +39,7 @@ import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.PlatformUI;
/**
* A launch configuration tab that displays and edits program arguments,
@@ -69,7 +70,7 @@ public abstract class CAbstractArgumentsTab extends CLaunchConfigurationTab {
comp.setLayoutData(gd);
setControl(comp);
- LaunchUIPlugin.getDefault().getWorkbench().getHelpSystem().setHelp(getControl(),
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(getControl(),
ICDTLaunchHelpContextIds.LAUNCH_CONFIGURATION_DIALOG_ARGUMNETS_TAB);
createArgumentComponent(comp, 1);
diff --git a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CEnvironmentTab.java b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CEnvironmentTab.java
index 7aa9f052b5f..e2a8ddd39cd 100644
--- a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CEnvironmentTab.java
+++ b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CEnvironmentTab.java
@@ -398,8 +398,7 @@ public class CEnvironmentTab extends CLaunchConfigurationTab {
}
//Iterate through each key/value property we discover
- try {
- BufferedReader reader = new BufferedReader(new FileReader(file));
+ try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
String line, key, value;
while ((line = reader.readLine()) != null) {
diff --git a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CMainAttachTab.java b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CMainAttachTab.java
deleted file mode 100644
index 2b837c90049..00000000000
--- a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CMainAttachTab.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2012 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.launch.ui;
-
-import org.eclipse.debug.core.ILaunchConfiguration;
-
-@Deprecated
-public class CMainAttachTab extends CMainTab {
-
- public CMainAttachTab() {
- super(false);
- }
-
- @Override
- public boolean isValid(ILaunchConfiguration config) {
- if (super.isValid(config) == false) {
- String name = fProgText.getText().trim();
- if (name.length() == 0) { // allow no program for attach config.
- setErrorMessage(null);
- return true;
- }
- return false;
- }
- return true;
- }
-}
diff --git a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CMainCoreTab.java b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CMainCoreTab.java
deleted file mode 100644
index 348c0a05a78..00000000000
--- a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CMainCoreTab.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 Ericsson and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Ericsson - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.launch.ui;
-
-/**
- * @since 6.0
- */
-@Deprecated
-public class CMainCoreTab extends CMainTab {
- public CMainCoreTab() {
- super(CMainTab.SPECIFY_CORE_FILE);
- }
-}
diff --git a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CMainTab.java b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CMainTab.java
deleted file mode 100644
index b422c227974..00000000000
--- a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CMainTab.java
+++ /dev/null
@@ -1,615 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2016 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - initial API and implementation
- * Ken Ryall (Nokia) - bug 178731
- * IBM Corporation
- * Sergey Prigogin (Google)
- * Anton Gorenkov
- *******************************************************************************/
-package org.eclipse.cdt.launch.ui;
-
-import org.eclipse.cdt.core.CCorePlugin;
-import org.eclipse.cdt.core.model.IBinary;
-import org.eclipse.cdt.core.model.ICElement;
-import org.eclipse.cdt.core.model.ICProject;
-import org.eclipse.cdt.core.settings.model.ICProjectDescription;
-import org.eclipse.cdt.debug.core.ICDTLaunchConfigurationConstants;
-import org.eclipse.cdt.launch.internal.ui.LaunchImages;
-import org.eclipse.cdt.launch.internal.ui.LaunchMessages;
-import org.eclipse.cdt.launch.internal.ui.LaunchUIPlugin;
-import org.eclipse.cdt.ui.CElementLabelProvider;
-import org.eclipse.cdt.utils.pty.PTY;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.variables.VariablesPlugin;
-import org.eclipse.debug.core.ILaunchConfiguration;
-import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
-import org.eclipse.debug.ui.DebugUITools;
-import org.eclipse.debug.ui.IDebugUIConstants;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.jface.window.Window;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.FileDialog;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.dialogs.TwoPaneElementSelector;
-
-/**
- * A launch configuration tab that displays and edits project and main type name launch
- * configuration attributes.
- * <p>
- * This class may be instantiated. This class is not intended to be subclassed.
- * </p>
- * @since 2.0
- */
-@Deprecated // see https://git.eclipse.org/r/#/c/68010/
-public class CMainTab extends CAbstractMainTab {
-
- /**
- * Tab identifier used for ordering of tabs added using the
- * <code>org.eclipse.debug.ui.launchConfigurationTabs</code>
- * extension point.
- *
- * @since 6.0
- */
- public static final String TAB_ID = "org.eclipse.cdt.cdi.launch.mainTab"; //$NON-NLS-1$
-
- private final boolean fWantsTerminalOption;
- protected Button fTerminalButton;
-
- private final boolean dontCheckProgram;
- private final boolean fSpecifyCoreFile;
-
- public static final int WANTS_TERMINAL = 1;
- public static final int DONT_CHECK_PROGRAM = 2;
- /** @since 6.0 */
- public static final int SPECIFY_CORE_FILE = 4;
-
- public CMainTab() {
- this(WANTS_TERMINAL);
- }
-
- public CMainTab(boolean terminalOption) {
- this(terminalOption ? WANTS_TERMINAL : 0);
- }
-
- public CMainTab(int flags) {
- fWantsTerminalOption = (flags & WANTS_TERMINAL) != 0;
- dontCheckProgram = (flags & DONT_CHECK_PROGRAM) != 0;
- fSpecifyCoreFile = (flags & SPECIFY_CORE_FILE) != 0;
- }
-
- @Override
- public void createControl(Composite parent) {
- Composite comp = new Composite(parent, SWT.NONE);
- setControl(comp);
-
- LaunchUIPlugin.getDefault().getWorkbench().getHelpSystem().setHelp(getControl(),
- ICDTLaunchHelpContextIds.LAUNCH_CONFIGURATION_DIALOG_MAIN_TAB);
-
- GridLayout topLayout = new GridLayout();
- comp.setLayout(topLayout);
-
- createVerticalSpacer(comp, 1);
- createExeFileGroup(comp, 1);
- createProjectGroup(comp, 1);
- createBuildOptionGroup(comp, 1);
- createVerticalSpacer(comp, 1);
- if (fSpecifyCoreFile) {
- createCoreFileGroup(comp, 1);
- }
- if (wantsTerminalOption() /* && ProcessFactory.supportesTerminal() */) {
- createTerminalOption(comp, 1);
- }
- LaunchUIPlugin.setDialogShell(parent.getShell());
- }
-
- protected boolean wantsTerminalOption() {
- return fWantsTerminalOption;
- }
-
- protected void createTerminalOption(Composite parent, int colSpan) {
- Composite mainComp = new Composite(parent, SWT.NONE);
- GridLayout mainLayout = new GridLayout();
- mainLayout.numColumns = 1;
- mainLayout.marginHeight = 0;
- mainLayout.marginWidth = 0;
- mainComp.setLayout(mainLayout);
- GridData gd = new GridData(GridData.FILL_HORIZONTAL);
- gd.horizontalSpan = colSpan;
- mainComp.setLayoutData(gd);
-
- fTerminalButton = createCheckButton(mainComp, LaunchMessages.CMainTab_UseTerminal);
- fTerminalButton.addSelectionListener(new SelectionAdapter() {
-
- @Override
- public void widgetSelected(SelectionEvent evt) {
- updateLaunchConfigurationDialog();
- }
- });
- fTerminalButton.setEnabled(PTY.isSupported());
- }
-
- @Override
- public void initializeFrom(ILaunchConfiguration config) {
- filterPlatform = getPlatform(config);
- updateProjectFromConfig(config);
- updateProgramFromConfig(config);
- updateCoreFromConfig(config);
- updateBuildOptionFromConfig(config);
- updateTerminalFromConfig(config);
- }
-
- protected void updateTerminalFromConfig(ILaunchConfiguration config) {
- if (fTerminalButton != null) {
- boolean useTerminal = true;
- try {
- useTerminal = config.getAttribute(ICDTLaunchConfigurationConstants.ATTR_USE_TERMINAL,
- ICDTLaunchConfigurationConstants.USE_TERMINAL_DEFAULT);
- } catch (CoreException e) {
- LaunchUIPlugin.log(e);
- }
- fTerminalButton.setSelection(useTerminal);
- }
- }
-
- /** @since 6.0 */
- protected void updateCoreFromConfig(ILaunchConfiguration config) {
- if (fCoreText != null) {
- String coreName = EMPTY_STRING;
- try {
- coreName = config.getAttribute(ICDTLaunchConfigurationConstants.ATTR_COREFILE_PATH, EMPTY_STRING);
- } catch (CoreException ce) {
- LaunchUIPlugin.log(ce);
- }
- fCoreText.setText(coreName);
- }
- }
-
- @Override
- public void performApply(ILaunchConfigurationWorkingCopy config) {
- super.performApply(config);
- ICProject cProject = this.getCProject();
- if (cProject != null && cProject.exists()) {
- config.setMappedResources(new IResource[] { cProject.getProject() });
- } else {
- // the user typed in a non-existent project name. Ensure that
- // won't be suppressed from the dialog. This matches JDT behaviour
- config.setMappedResources(null);
- }
- config.setAttribute(ICDTLaunchConfigurationConstants.ATTR_PROJECT_NAME, fProjText.getText());
- if (fProgText != null) {
- config.setAttribute(ICDTLaunchConfigurationConstants.ATTR_PROGRAM_NAME, fProgText.getText());
- }
- if (fCoreText != null) {
- config.setAttribute(ICDTLaunchConfigurationConstants.ATTR_COREFILE_PATH, fCoreText.getText());
- }
- if (fTerminalButton != null) {
- config.setAttribute(ICDTLaunchConfigurationConstants.ATTR_USE_TERMINAL, fTerminalButton.getSelection());
- }
- }
-
- /**
- * Show a dialog that lists all main types
- */
- @Override
- protected void handleSearchButtonSelected() {
- if (getCProject() == null) {
- MessageDialog.openInformation(getShell(), LaunchMessages.CMainTab_Project_required,
- LaunchMessages.CMainTab_Enter_project_before_searching_for_program);
- return;
- }
- ILabelProvider programLabelProvider = new CElementLabelProvider() {
-
- @Override
- public String getText(Object element) {
- if (element instanceof IBinary) {
- IBinary bin = (IBinary) element;
- StringBuilder name = new StringBuilder();
- name.append(bin.getPath().lastSegment());
- return name.toString();
- }
- return super.getText(element);
- }
-
- @Override
- public Image getImage(Object element) {
- if (!(element instanceof ICElement)) {
- return super.getImage(element);
- }
- ICElement celement = (ICElement) element;
-
- if (celement.getElementType() == ICElement.C_BINARY) {
- IBinary belement = (IBinary) celement;
- if (belement.isExecutable()) {
- return DebugUITools.getImage(IDebugUIConstants.IMG_ACT_RUN);
- }
- }
-
- return super.getImage(element);
- }
- };
-
- ILabelProvider qualifierLabelProvider = new CElementLabelProvider() {
-
- @Override
- public String getText(Object element) {
- if (element instanceof IBinary) {
- IBinary bin = (IBinary) element;
- StringBuilder name = new StringBuilder();
- name.append(bin.getCPU()).append(bin.isLittleEndian() ? "le" : "be"); //$NON-NLS-1$ //$NON-NLS-2$
- name.append(" - "); //$NON-NLS-1$
- name.append(bin.getPath().toString());
- return name.toString();
- }
- return super.getText(element);
- }
- };
-
- TwoPaneElementSelector dialog = new TwoPaneElementSelector(getShell(), programLabelProvider,
- qualifierLabelProvider);
- dialog.setElements(getBinaryFiles(getCProject()));
- dialog.setMessage(LaunchMessages.CMainTab_Choose_program_to_run);
- dialog.setTitle(LaunchMessages.CMainTab_Program_Selection);
- dialog.setUpperListLabel(LaunchMessages.Launch_common_BinariesColon);
- dialog.setLowerListLabel(LaunchMessages.Launch_common_QualifierColon);
- dialog.setMultipleSelection(false);
- // dialog.set
- if (dialog.open() == Window.OK) {
- IBinary binary = (IBinary) dialog.getFirstResult();
- fProgText.setText(binary.getResource().getProjectRelativePath().toString());
- }
- }
-
- /**
- * @since 6.0
- */
- @Override
- protected void createProjectGroup(Composite parent, int colSpan) {
- Composite projComp = new Composite(parent, SWT.NONE);
- GridLayout projLayout = new GridLayout();
- projLayout.numColumns = 2;
- projLayout.marginHeight = 0;
- projLayout.marginWidth = 0;
- projComp.setLayout(projLayout);
- GridData gd = new GridData(GridData.FILL_HORIZONTAL);
- gd.horizontalSpan = colSpan;
- projComp.setLayoutData(gd);
-
- fProjLabel = new Label(projComp, SWT.NONE);
- fProjLabel.setText(LaunchMessages.CMainTab_ProjectColon);
- gd = new GridData();
- gd.horizontalSpan = 2;
- fProjLabel.setLayoutData(gd);
-
- fProjText = new Text(projComp, SWT.SINGLE | SWT.BORDER);
- gd = new GridData(GridData.FILL_HORIZONTAL);
- fProjText.setLayoutData(gd);
- fProjText.addModifyListener(new ModifyListener() {
-
- @Override
- public void modifyText(ModifyEvent evt) {
- // if project changes, invalidate program name cache
- fPreviouslyCheckedProgram = null;
-
- updateBuildConfigCombo(""); //$NON-NLS-1$
- updateLaunchConfigurationDialog();
- }
- });
-
- fProjButton = createPushButton(projComp, LaunchMessages.Launch_common_Browse_1, null);
- fProjButton.addSelectionListener(new SelectionAdapter() {
-
- @Override
- public void widgetSelected(SelectionEvent evt) {
- handleProjectButtonSelected();
- updateLaunchConfigurationDialog();
- }
- });
- }
-
- protected void createExeFileGroup(Composite parent, int colSpan) {
- Composite mainComp = new Composite(parent, SWT.NONE);
- GridLayout mainLayout = new GridLayout();
- mainLayout.marginHeight = 0;
- mainLayout.marginWidth = 0;
- mainComp.setLayout(mainLayout);
- GridData gd = new GridData(GridData.FILL_HORIZONTAL);
- gd.horizontalSpan = colSpan;
- mainComp.setLayoutData(gd);
- fProgLabel = new Label(mainComp, SWT.NONE);
- fProgLabel.setText(LaunchMessages.CMainTab_C_Application);
- gd = new GridData();
- fProgLabel.setLayoutData(gd);
- fProgText = new Text(mainComp, SWT.SINGLE | SWT.BORDER);
- gd = new GridData(GridData.FILL_HORIZONTAL);
- fProgText.setLayoutData(gd);
- fProgText.addModifyListener(new ModifyListener() {
- @Override
- public void modifyText(ModifyEvent evt) {
- updateLaunchConfigurationDialog();
- }
- });
-
- Composite buttonComp = new Composite(mainComp, SWT.NONE);
- GridLayout layout = new GridLayout(3, false);
- layout.marginHeight = 0;
- layout.marginWidth = 0;
- buttonComp.setLayout(layout);
- gd = new GridData(GridData.HORIZONTAL_ALIGN_END);
- buttonComp.setLayoutData(gd);
- buttonComp.setFont(parent.getFont());
-
- createVariablesButton(buttonComp, LaunchMessages.CMainTab_Variables, fProgText);
- fSearchButton = createPushButton(buttonComp, LaunchMessages.CMainTab_Search, null);
- fSearchButton.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent evt) {
- handleSearchButtonSelected();
- updateLaunchConfigurationDialog();
- }
- });
-
- Button fBrowseForBinaryButton;
- fBrowseForBinaryButton = createPushButton(buttonComp, LaunchMessages.Launch_common_Browse_2, null);
- fBrowseForBinaryButton.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent evt) {
- handleBinaryBrowseButtonSelected();
- updateLaunchConfigurationDialog();
- }
- });
- }
-
- /**
- * Show a dialog that lets the user select a project. This in turn provides context for the main
- * type, allowing the user to key a main type name, or constraining the search for main types to
- * the specified project.
- */
- protected void handleBinaryBrowseButtonSelected() {
- FileDialog fileDialog = new FileDialog(getShell(), SWT.NONE);
- fileDialog.setFileName(fProgText.getText());
- String text = fileDialog.open();
- if (text != null) {
- fProgText.setText(text);
- }
- }
-
- @Override
- public boolean isValid(ILaunchConfiguration config) {
- setErrorMessage(null);
- setMessage(null);
-
- if (!dontCheckProgram) {
- String name = fProjText.getText().trim();
- if (name.length() == 0) {
- setErrorMessage(LaunchMessages.CMainTab_Project_not_specified);
- return false;
- }
- if (!ResourcesPlugin.getWorkspace().getRoot().getProject(name).exists()) {
- setErrorMessage(LaunchMessages.Launch_common_Project_does_not_exist);
- return false;
- }
- IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(name);
- if (!project.isOpen()) {
- setErrorMessage(LaunchMessages.CMainTab_Project_must_be_opened);
- return false;
- }
-
- name = fProgText.getText().trim();
- try {
- name = VariablesPlugin.getDefault().getStringVariableManager().performStringSubstitution(name);
- } catch (CoreException e) {
- // Silently ignore substitution failure (for consistency with "Arguments" and "Work directory" fields)
- }
- if (name.length() == 0) {
- setErrorMessage(LaunchMessages.CMainTab_Program_not_specified);
- return false;
- }
- if (name.equals(".") || name.equals("..")) { //$NON-NLS-1$ //$NON-NLS-2$
- setErrorMessage(LaunchMessages.CMainTab_Program_does_not_exist);
- return false;
- }
- // Avoid constantly checking the binary if nothing relevant has
- // changed (binary or project name). See bug 277663.
- if (name.equals(fPreviouslyCheckedProgram)) {
- if (fPreviouslyCheckedProgramErrorMsg != null) {
- setErrorMessage(fPreviouslyCheckedProgramErrorMsg);
- }
- return fPreviouslyCheckedProgramIsValid;
- } else {
- fPreviouslyCheckedProgram = name;
- fPreviouslyCheckedProgramIsValid = true; // we'll flip this below if not true
- fPreviouslyCheckedProgramErrorMsg = null; // we'll set this below if there's an error
- IPath exePath = new Path(name);
- if (!exePath.isAbsolute()) {
- IPath location = project.getLocation();
- if (location == null) {
- setErrorMessage(
- fPreviouslyCheckedProgramErrorMsg = LaunchMessages.CMainTab_Program_does_not_exist);
- return (fPreviouslyCheckedProgramIsValid = false);
- }
-
- exePath = location.append(name);
- if (!exePath.toFile().exists()) {
- // Try the old way, which is required to support linked resources.
- IFile projFile = null;
- try {
- projFile = project.getFile(name);
- } catch (IllegalArgumentException e) {
- // thrown if relative path that resolves to a root file ("..\somefile")
- }
- if (projFile == null || !projFile.exists()) {
- setErrorMessage(
- fPreviouslyCheckedProgramErrorMsg = LaunchMessages.CMainTab_Program_does_not_exist);
- return (fPreviouslyCheckedProgramIsValid = false);
- } else {
- exePath = projFile.getLocation();
- }
- }
- }
- if (!exePath.toFile().exists()) {
- setErrorMessage(fPreviouslyCheckedProgramErrorMsg = LaunchMessages.CMainTab_Program_does_not_exist);
- return (fPreviouslyCheckedProgramIsValid = false);
- }
- // Notice that we don't check if exePath points to a valid executable since such
- // check is too expensive to be done on the UI thread.
- // See "https://bugs.eclipse.org/bugs/show_bug.cgi?id=328012".
- // We only verify that the program path represents a file.
- if (!exePath.toFile().isFile()) {
- setErrorMessage(fPreviouslyCheckedProgramErrorMsg = LaunchMessages.CMainTab_Selection_must_be_file);
- return (fPreviouslyCheckedProgramIsValid = false);
- }
- }
- }
-
- if (fCoreText != null) {
- String coreName = fCoreText.getText().trim();
- // We accept an empty string. This should trigger a prompt to the user
- // This allows to re-use the launch, with a different core file.
- if (!coreName.equals(EMPTY_STRING)) {
- if (coreName.equals(".") || coreName.equals("..")) { //$NON-NLS-1$ //$NON-NLS-2$
- setErrorMessage(LaunchMessages.CMainTab_Core_does_not_exist);
- return false;
- }
- IPath corePath = new Path(coreName);
- if (!corePath.toFile().exists()) {
- setErrorMessage(LaunchMessages.CMainTab_Core_does_not_exist);
- return false;
- }
- }
- }
-
- return true;
- }
-
- @Override
- public void setDefaults(ILaunchConfigurationWorkingCopy config) {
- // We set empty attributes for project & program so that when one config
- // is
- // compared to another, the existence of empty attributes doesn't cause
- // an
- // incorrect result (the performApply() method can result in empty
- // values
- // for these attributes being set on a config if there is nothing in the
- // corresponding text boxes)
- // plus getContext will use this to base context from if set.
- config.setAttribute(ICDTLaunchConfigurationConstants.ATTR_PROJECT_NAME, EMPTY_STRING);
- config.setAttribute(ICDTLaunchConfigurationConstants.ATTR_PROJECT_BUILD_CONFIG_ID, EMPTY_STRING);
- config.setAttribute(ICDTLaunchConfigurationConstants.ATTR_COREFILE_PATH, EMPTY_STRING);
-
- // Set the auto choose build configuration to true for new configurations.
- // Existing configurations created before this setting was introduced will have this disabled.
- config.setAttribute(ICDTLaunchConfigurationConstants.ATTR_PROJECT_BUILD_CONFIG_AUTO, true);
-
- ICElement cElement = null;
- cElement = getContext(config, getPlatform(config));
- if (cElement != null) {
- initializeCProject(cElement, config);
- initializeProgramName(cElement, config);
- } else {
- // don't want to remember the interim value from before
- config.setMappedResources(null);
- }
- if (wantsTerminalOption()) {
- config.setAttribute(ICDTLaunchConfigurationConstants.ATTR_USE_TERMINAL,
- ICDTLaunchConfigurationConstants.USE_TERMINAL_DEFAULT);
- }
- }
-
- /**
- * Set the program name attributes on the working copy based on the ICElement
- */
- protected void initializeProgramName(ICElement cElement, ILaunchConfigurationWorkingCopy config) {
- boolean renamed = false;
-
- if (!(cElement instanceof IBinary)) {
- cElement = cElement.getCProject();
- }
-
- if (cElement instanceof ICProject) {
- IProject project = cElement.getCProject().getProject();
- String name = project.getName();
- ICProjectDescription projDes = CCorePlugin.getDefault().getProjectDescription(project);
- if (projDes != null) {
- String buildConfigName = projDes.getActiveConfiguration().getName();
- // Bug 234951
- name = NLS.bind(LaunchMessages.CMainTab_Configuration_name, name, buildConfigName);
- }
- name = getLaunchConfigurationDialog().generateName(name);
- config.rename(name);
- renamed = true;
- }
-
- IBinary binary = null;
- if (cElement instanceof ICProject) {
- IBinary[] bins = getBinaryFiles((ICProject) cElement);
- if (bins != null && bins.length == 1) {
- binary = bins[0];
- }
- } else if (cElement instanceof IBinary) {
- binary = (IBinary) cElement;
- }
-
- if (binary != null) {
- String path;
- path = binary.getResource().getProjectRelativePath().toOSString();
- config.setAttribute(ICDTLaunchConfigurationConstants.ATTR_PROGRAM_NAME, path);
- if (!renamed) {
- String name = binary.getElementName();
- int index = name.lastIndexOf('.');
- if (index > 0) {
- name = name.substring(0, index);
- }
- name = getLaunchConfigurationDialog().generateName(name);
- config.rename(name);
- renamed = true;
- }
- }
-
- if (!renamed) {
- String name = getLaunchConfigurationDialog().generateName(cElement.getCProject().getElementName());
- config.rename(name);
- }
- }
-
- @Override
- public String getId() {
- return TAB_ID;
- }
-
- @Override
- public String getName() {
- return LaunchMessages.CMainTab_Main;
- }
-
- @Override
- public Image getImage() {
- return LaunchImages.get(LaunchImages.IMG_VIEW_MAIN_TAB);
- }
-}
diff --git a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CMainTab2.java b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CMainTab2.java
index 75505440b7c..44c90a15bdf 100644
--- a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CMainTab2.java
+++ b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CMainTab2.java
@@ -28,6 +28,7 @@ import org.eclipse.cdt.core.model.ICElement;
import org.eclipse.cdt.core.model.ICProject;
import org.eclipse.cdt.core.settings.model.ICProjectDescription;
import org.eclipse.cdt.debug.core.ICDTLaunchConfigurationConstants;
+import org.eclipse.cdt.launch.LaunchUtils;
import org.eclipse.cdt.launch.internal.ui.LaunchImages;
import org.eclipse.cdt.launch.internal.ui.LaunchMessages;
import org.eclipse.cdt.launch.internal.ui.LaunchUIPlugin;
@@ -61,6 +62,7 @@ import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.dialogs.TwoPaneElementSelector;
/**
@@ -114,7 +116,7 @@ public class CMainTab2 extends CAbstractMainTab {
Composite comp = new Composite(parent, SWT.NONE);
setControl(comp);
- LaunchUIPlugin.getDefault().getWorkbench().getHelpSystem().setHelp(getControl(),
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(getControl(),
ICDTLaunchHelpContextIds.LAUNCH_CONFIGURATION_DIALOG_MAIN_TAB);
GridLayout topLayout = new GridLayout();
@@ -474,10 +476,16 @@ public class CMainTab2 extends CAbstractMainTab {
setErrorMessage(LaunchMessages.CMainTab_Project_must_be_opened);
return false;
}
- if (!project.getFile(programName).exists()) {
+ exePath = LaunchUtils.toAbsoluteProgramPath(project, exePath);
+ File executable = exePath.toFile();
+ if (!executable.exists()) {
setErrorMessage(LaunchMessages.CMainTab_Program_does_not_exist);
return false;
}
+ if (!executable.isFile()) {
+ setErrorMessage(LaunchMessages.CMainTab_Selection_must_be_file);
+ return false;
+ }
}
// Notice that we don't check if exePath points to a valid executable since such
// check is too expensive to be done on the UI thread.
diff --git a/launch/pom.xml b/launch/pom.xml
index 359b6169085..cf9b6e1faf0 100644
--- a/launch/pom.xml
+++ b/launch/pom.xml
@@ -1,4 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2017, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
@@ -7,7 +17,7 @@
<parent>
<groupId>org.eclipse.cdt</groupId>
<artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
+ <version>10.7.0-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.cdt.launch-parent</artifactId>
diff --git a/launchbar/org.eclipse.launchbar.core.tests/.classpath b/launchbar/org.eclipse.launchbar.core.tests/.classpath
new file mode 100644
index 00000000000..a42a828e04a
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core.tests/.classpath
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src">
+ <attributes>
+ <attribute name="test" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core.tests/.gitignore b/launchbar/org.eclipse.launchbar.core.tests/.gitignore
index ae3c1726048..ae3c1726048 100644
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core.tests/.gitignore
+++ b/launchbar/org.eclipse.launchbar.core.tests/.gitignore
diff --git a/launchbar/org.eclipse.launchbar.core.tests/.project b/launchbar/org.eclipse.launchbar.core.tests/.project
new file mode 100644
index 00000000000..b553de43630
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core.tests/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.launchbar.core.tests</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/launchbar/org.eclipse.launchbar.core.tests/.settings/org.eclipse.core.resources.prefs b/launchbar/org.eclipse.launchbar.core.tests/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core.tests/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/launchbar/org.eclipse.launchbar.core.tests/.settings/org.eclipse.jdt.core.prefs b/launchbar/org.eclipse.launchbar.core.tests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..5b1c443114d
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core.tests/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=ignore
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
+org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=ignore
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/releng/org.eclipse.cdt.testing.repo/.settings/org.eclipse.jdt.launching.prefs b/launchbar/org.eclipse.launchbar.core.tests/.settings/org.eclipse.jdt.launching.prefs
index f8a131b56e0..f8a131b56e0 100644
--- a/releng/org.eclipse.cdt.testing.repo/.settings/org.eclipse.jdt.launching.prefs
+++ b/launchbar/org.eclipse.launchbar.core.tests/.settings/org.eclipse.jdt.launching.prefs
diff --git a/launchbar/org.eclipse.launchbar.core.tests/.settings/org.eclipse.jdt.ui.prefs b/launchbar/org.eclipse.launchbar.core.tests/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core.tests/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/xlc/org.eclipse.cdt.make.xlc.core/.settings/org.eclipse.pde.api.tools.prefs b/launchbar/org.eclipse.launchbar.core.tests/.settings/org.eclipse.pde.api.tools.prefs
index ec9fbf321d0..ec9fbf321d0 100644
--- a/xlc/org.eclipse.cdt.make.xlc.core/.settings/org.eclipse.pde.api.tools.prefs
+++ b/launchbar/org.eclipse.launchbar.core.tests/.settings/org.eclipse.pde.api.tools.prefs
diff --git a/launchbar/org.eclipse.launchbar.core.tests/.settings/org.eclipse.pde.prefs b/launchbar/org.eclipse.launchbar.core.tests/.settings/org.eclipse.pde.prefs
new file mode 100644
index 00000000000..51a63ec9988
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core.tests/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,35 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=2
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=2
+compilers.p.missing-version-export-package=2
+compilers.p.missing-version-import-package=2
+compilers.p.missing-version-require-bundle=2
+compilers.p.no-required-att=0
+compilers.p.no.automatic.module=1
+compilers.p.not-externalized-att=2
+compilers.p.service.component.without.lazyactivation=1
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/launchbar/org.eclipse.launchbar.core.tests/META-INF/MANIFEST.MF b/launchbar/org.eclipse.launchbar.core.tests/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..b1dff2c5487
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,12 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.launchbar.core.tests;singleton:=true
+Bundle-Version: 1.0.100.qualifier
+Fragment-Host: org.eclipse.launchbar.core;bundle-version="1.0.0"
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Require-Bundle: org.junit;bundle-version="4.12.0",
+ org.mockito;bundle-version="2.23.0"
+Automatic-Module-Name: org.eclipse.launchbar.core.tests
+Bundle-Localization: fragment
+Bundle-Vendor: %providerName
diff --git a/launchbar/org.eclipse.launchbar.core.tests/about.html b/launchbar/org.eclipse.launchbar.core.tests/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core.tests/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/launchbar/org.eclipse.launchbar.core.tests/build.properties b/launchbar/org.eclipse.launchbar.core.tests/build.properties
new file mode 100644
index 00000000000..5f3cdf594be
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core.tests/build.properties
@@ -0,0 +1,8 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ fragment.xml,\
+ fragment.properties,\
+ about.html
+src.includes = about.html
diff --git a/launchbar/org.eclipse.launchbar.core.tests/fragment.properties b/launchbar/org.eclipse.launchbar.core.tests/fragment.properties
new file mode 100644
index 00000000000..2b7fc27c60b
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core.tests/fragment.properties
@@ -0,0 +1,14 @@
+##################################################################################
+# Copyright (c) 2020 Torbjörn Svensson and others. All rights reserved.
+# This program and the accompanying materials are made available under the terms
+# of the Eclipse Public License 2.0 which accompanies this distribution, and is
+# available at https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Torbjörn Svensson - initial API and implementation
+##################################################################################
+
+pluginName = Launch Bar Core Tests
+providerName = Eclipse CDT
diff --git a/launchbar/org.eclipse.launchbar.core.tests/fragment.xml b/launchbar/org.eclipse.launchbar.core.tests/fragment.xml
new file mode 100644
index 00000000000..25d5965ecbc
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core.tests/fragment.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<fragment>
+ <extension
+ point="org.eclipse.debug.core.launchConfigurationTypes">
+ <launchConfigurationType
+ id="org.eclipse.launchbar.core.tests.lctype1"
+ modes="run, debug, xxx"
+ name="Launch Bar Test Launch Configuration"
+ public="true">
+ </launchConfigurationType>
+ </extension>
+
+</fragment>
diff --git a/launchbar/org.eclipse.launchbar.core.tests/src/org/eclipse/launchbar/core/PerTargetLaunchConfigProviderTest.java b/launchbar/org.eclipse.launchbar.core.tests/src/org/eclipse/launchbar/core/PerTargetLaunchConfigProviderTest.java
new file mode 100644
index 00000000000..c8c8158ed58
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core.tests/src/org/eclipse/launchbar/core/PerTargetLaunchConfigProviderTest.java
@@ -0,0 +1,309 @@
+/*******************************************************************************
+ * Copyright (c) 2015, 2018 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Elena Laskavaia
+ *******************************************************************************/
+package org.eclipse.launchbar.core;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.debug.core.DebugPlugin;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.ILaunchConfigurationType;
+import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
+import org.eclipse.debug.core.ILaunchManager;
+import org.eclipse.launchbar.core.internal.Activator;
+import org.eclipse.launchbar.core.target.ILaunchTarget;
+import org.eclipse.launchbar.core.target.ILaunchTargetManager;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.FixMethodOrder;
+import org.junit.Test;
+import org.junit.runners.MethodSorters;
+
+@FixMethodOrder(MethodSorters.JVM)
+public class PerTargetLaunchConfigProviderTest {
+ private ILaunchTarget localTarget;
+ private String launchName;
+ private ILaunchTarget otherTarget;
+ private ILaunchConfigurationType launchConfigType;
+ private ILaunchDescriptorType descriptorType;
+ private ILaunchDescriptor descriptor;
+ private PerTargetLaunchConfigProvider1 provider;
+
+ @Before
+ public void basicSetupOnly() {
+ ILaunchTargetManager targetManager = mock(ILaunchTargetManager.class);
+ Activator.getDefault().getBundle().getBundleContext().registerService(ILaunchTargetManager.class, targetManager,
+ null);
+
+ localTarget = mock(ILaunchTarget.class);
+ doReturn("Local").when(localTarget).getId();
+ doReturn(ILaunchTargetManager.localLaunchTargetTypeId).when(localTarget).getTypeId();
+ doReturn(localTarget).when(targetManager).getLaunchTarget(ILaunchTargetManager.localLaunchTargetTypeId,
+ "Local");
+
+ // other mocked remote connections
+ otherTarget = mock(ILaunchTarget.class);
+ doReturn("otherTargetType").when(otherTarget).getTypeId();
+ doReturn("otherTarget").when(otherTarget).getId();
+ doReturn(otherTarget).when(targetManager).getLaunchTarget("otherTargetType", "otherTarget");
+
+ doReturn(new ILaunchTarget[] { localTarget, otherTarget }).when(targetManager).getLaunchTargets();
+
+ // launch stuff
+ launchName = "test";
+ // launch config type
+ launchConfigType = getLaunchManager().getLaunchConfigurationType("org.eclipse.launchbar.core.tests.lctype1");
+ // launch descriptor and type
+ descriptorType = mock(ILaunchDescriptorType.class);
+ descriptor = mock(ILaunchDescriptor.class);
+ doReturn(descriptorType).when(descriptor).getType();
+ doReturn(launchName).when(descriptor).getName();
+ // configProvider
+ provider = new PerTargetLaunchConfigProvider1();
+ }
+
+ private ILaunchManager getLaunchManager() {
+ return DebugPlugin.getDefault().getLaunchManager();
+ }
+
+ @After
+ public void after() throws CoreException {
+ ILaunchConfiguration[] launchConfigurations = getLaunchManager().getLaunchConfigurations();
+ for (ILaunchConfiguration lc : launchConfigurations) {
+ lc.delete();
+ }
+ }
+
+ public class PerTargetLaunchConfigProvider1 extends PerTargetLaunchConfigProvider {
+ public static final String CONNECTION_NAME_ATTR = "connectionName";
+ private ILaunchBarManager manager = mock(ILaunchBarManager.class);
+
+ @Override
+ public boolean supports(ILaunchDescriptor descriptor, ILaunchTarget target) throws CoreException {
+ return true;
+ }
+
+ @Override
+ public ILaunchConfigurationType getLaunchConfigurationType(ILaunchDescriptor descriptor, ILaunchTarget target)
+ throws CoreException {
+ return launchConfigType;
+ }
+
+ @Override
+ protected void populateLaunchConfiguration(ILaunchDescriptor descriptor, ILaunchTarget target,
+ ILaunchConfigurationWorkingCopy workingCopy) throws CoreException {
+ super.populateLaunchConfiguration(descriptor, target, workingCopy);
+ workingCopy.setAttribute(CONNECTION_NAME_ATTR, target.getId());
+ }
+
+ @Override
+ protected ILaunchDescriptor getLaunchDescriptor(ILaunchConfiguration configuration) throws CoreException {
+ return descriptor;
+ }
+
+ @Override
+ protected ILaunchTarget getLaunchTarget(ILaunchConfiguration configuration) throws CoreException {
+ String name = configuration.getAttribute(CONNECTION_NAME_ATTR, "");
+ if (localTarget.getId().equals(name)) {
+ return localTarget;
+ } else if (otherTarget.getId().equals(name)) {
+ return otherTarget;
+ } else {
+ return null;
+ }
+ }
+
+ @Override
+ protected ILaunchBarManager getManager() {
+ return manager;
+ }
+
+ @Override
+ public ILaunchConfiguration getLaunchConfiguration(ILaunchDescriptor descriptor, ILaunchTarget target)
+ throws CoreException {
+ ILaunchConfiguration config = super.getLaunchConfiguration(descriptor, target);
+ // Since this provider isn't hooked in properly, need to manually
+ // add in the config
+ launchConfigurationAdded(config);
+ return config;
+ }
+
+ }
+
+ @Test
+ public void testPopulateLaunchConfiguration() throws CoreException {
+ ILaunchConfiguration launchConfig = launchConfigType.newInstance(null, launchName).doSave();
+ ILaunchConfigurationWorkingCopy launchConfigWC = launchConfig.getWorkingCopy();
+ provider.populateLaunchConfiguration(descriptor, localTarget, launchConfigWC);
+ assertTrue(provider.ownsLaunchConfiguration(launchConfigWC));
+ }
+
+ @Test
+ public void testOwnsLaunchConfiguration() throws CoreException {
+ ILaunchConfiguration launchConfig = launchConfigType.newInstance(null, launchName).doSave();
+ assertFalse(provider.ownsLaunchConfiguration(launchConfig));
+ ILaunchConfiguration launchConfiguration = provider.getLaunchConfiguration(descriptor, localTarget);
+ assertTrue(provider.ownsLaunchConfiguration(launchConfiguration));
+ }
+
+ @Test
+ public void testGetLaunchConfiguration() throws CoreException {
+ ILaunchConfiguration launchConfiguration1 = provider.getLaunchConfiguration(descriptor, localTarget);
+ ILaunchConfiguration launchConfiguration2 = provider.getLaunchConfiguration(descriptor, otherTarget);
+ assertNotNull(launchConfiguration1);
+ assertNotNull(launchConfiguration2);
+ assertNotEquals(launchConfiguration1, launchConfiguration2);
+ }
+
+ @Test
+ public void testGetLaunchConfigurationReuse() throws CoreException {
+ ILaunchConfiguration launchConfiguration1 = provider.getLaunchConfiguration(descriptor, localTarget);
+ assertNotNull(launchConfiguration1);
+ ILaunchConfiguration launchConfiguration2 = provider.getLaunchConfiguration(descriptor, localTarget);
+ assertNotNull(launchConfiguration2);
+ assertSame(launchConfiguration1, launchConfiguration2);
+ }
+
+ @Test
+ public void testGetLaunchConfigurationPersistance() throws CoreException {
+ ILaunchConfiguration launchConfiguration1 = provider.getLaunchConfiguration(descriptor, localTarget);
+ assertNotNull(launchConfiguration1);
+ // reset provider
+ provider = new PerTargetLaunchConfigProvider1();
+ // simulate provider initialization on startup
+ provider.launchConfigurationAdded(launchConfiguration1);
+ ILaunchConfiguration launchConfiguration2 = provider.getLaunchConfiguration(descriptor, localTarget);
+ assertNotNull(launchConfiguration2);
+ assertEquals(launchConfiguration1, launchConfiguration2);
+ }
+
+ @Test
+ public void testGetTarget() throws CoreException {
+ ILaunchConfiguration launchConfiguration1 = provider.getLaunchConfiguration(descriptor, localTarget);
+ assertNotNull(launchConfiguration1);
+ assertSame(localTarget, provider.getLaunchTarget(launchConfiguration1));
+ }
+
+ @Test
+ public void testLaunchConfigurationRemoved() throws CoreException {
+ ILaunchConfiguration launchConfiguration1 = provider.getLaunchConfiguration(descriptor, localTarget);
+ assertNotNull(launchConfiguration1);
+ provider.launchConfigurationRemoved(launchConfiguration1);
+ ILaunchConfiguration launchConfiguration2 = provider.getLaunchConfiguration(descriptor, localTarget);
+ assertNotNull(launchConfiguration2);
+ assertNotEquals(launchConfiguration1, launchConfiguration2);
+ }
+
+ @Test
+ public void testLaunchConfigurationChanged_NotReallyChanged() throws CoreException {
+ ILaunchConfiguration launchConfiguration1 = provider.getLaunchConfiguration(descriptor, localTarget);
+ assertNotNull(launchConfiguration1);
+ provider.launchConfigurationChanged(launchConfiguration1);
+ ILaunchConfiguration launchConfiguration2 = provider.getLaunchConfiguration(descriptor, localTarget);
+ assertNotNull(launchConfiguration2);
+ assertSame(launchConfiguration1, launchConfiguration2);
+ }
+
+ @Test
+ public void testLaunchConfigurationChanged_Target() throws CoreException {
+ ILaunchConfiguration launchConfiguration1 = provider.getLaunchConfiguration(descriptor, localTarget);
+ assertNotNull(launchConfiguration1);
+ ILaunchConfigurationWorkingCopy wc = launchConfiguration1.getWorkingCopy();
+ wc.setAttribute(PerTargetLaunchConfigProvider1.CONNECTION_NAME_ATTR, otherTarget.getId());
+ wc.doSave();
+ provider.launchConfigurationChanged(launchConfiguration1);
+ // provider.launchConfigurationChanged(lc3);
+ ILaunchConfiguration launchConfiguration2 = provider.getLaunchConfiguration(descriptor, localTarget);
+ assertNotNull(launchConfiguration2);
+ assertNotEquals(launchConfiguration1, launchConfiguration2);
+ }
+
+ @Test
+ public void testLaunchConfigurationChanged_OrgName() throws CoreException {
+ ILaunchConfiguration launchConfiguration1 = provider.getLaunchConfiguration(descriptor, localTarget);
+ assertNotNull(launchConfiguration1);
+ ILaunchConfigurationWorkingCopy wc = launchConfiguration1.getWorkingCopy();
+ wc.rename("blah");
+ launchConfiguration1 = wc.doSave();
+ provider.launchConfigurationChanged(launchConfiguration1);
+ // we should still maintain ownership on a rename
+ assertTrue(provider.ownsLaunchConfiguration(launchConfiguration1));
+ // provider not hooked up properly to verify these.
+ // TODO not sure this test is valid as a result
+ // verify(provider.manager).launchConfigurationAdded(launchConfiguration1);
+ // verify(provider.manager).launchConfigurationRemoved(launchConfiguration1);
+ // have to fake out the remove
+ provider.launchConfigurationRemoved(launchConfiguration1);
+ ILaunchConfiguration launchConfiguration2 = provider.getLaunchConfiguration(descriptor, localTarget);
+ assertNotNull(launchConfiguration2);
+ assertNotEquals(launchConfiguration1, launchConfiguration2);
+ }
+
+ @Test
+ public void testLaunchDescriptorRemoved() throws CoreException {
+ ILaunchConfiguration launchConfiguration1 = provider.getLaunchConfiguration(descriptor, localTarget);
+ assertNotNull(launchConfiguration1);
+ provider.launchDescriptorRemoved(descriptor);
+ assertFalse(provider.ownsLaunchConfiguration(launchConfiguration1));
+ assertFalse(launchConfiguration1.exists());
+ }
+
+ @Test
+ public void testLaunchDescriptorRemoved2() throws CoreException {
+ provider.launchDescriptorRemoved(descriptor);
+ }
+
+ @Test
+ public void testLaunchTargetRemoved() throws CoreException {
+ ILaunchConfiguration launchConfiguration1 = provider.getLaunchConfiguration(descriptor, otherTarget);
+ assertNotNull(launchConfiguration1);
+ provider.launchTargetRemoved(otherTarget);
+ assertFalse(launchConfiguration1.exists());
+ }
+
+ @Test
+ public void testLaunchTargetRemoved2() throws CoreException {
+ ILaunchConfiguration launchConfiguration1 = provider.getLaunchConfiguration(descriptor, otherTarget);
+ assertNotNull(launchConfiguration1);
+ ILaunchConfiguration launchConfiguration2 = provider.getLaunchConfiguration(descriptor, localTarget);
+ assertNotNull(launchConfiguration2);
+ provider.launchTargetRemoved(otherTarget);
+ assertFalse(launchConfiguration1.exists());
+ assertTrue(launchConfiguration2.exists());
+ }
+
+ @Test
+ public void testLaunchTargetRemoved3() throws CoreException {
+ ILaunchConfiguration launchConfiguration1 = provider.getLaunchConfiguration(descriptor, otherTarget);
+ assertNotNull(launchConfiguration1);
+ provider.launchTargetRemoved(localTarget);
+ }
+
+ @Test
+ public void testLCRemoved() throws CoreException {
+ ILaunchConfiguration launchConfiguration1 = provider.getLaunchConfiguration(descriptor, otherTarget);
+ assertNotNull(launchConfiguration1);
+ assertTrue(provider.ownsLaunchConfiguration(launchConfiguration1));
+ launchConfiguration1.delete();
+ provider.launchConfigurationRemoved(launchConfiguration1);
+ assertFalse(provider.ownsLaunchConfiguration(launchConfiguration1));
+ }
+}
diff --git a/launchbar/org.eclipse.launchbar.core.tests/src/org/eclipse/launchbar/core/internal/LaunchBarManager2Test.java b/launchbar/org.eclipse.launchbar.core.tests/src/org/eclipse/launchbar/core/internal/LaunchBarManager2Test.java
new file mode 100644
index 00000000000..a214309bc32
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core.tests/src/org/eclipse/launchbar/core/internal/LaunchBarManager2Test.java
@@ -0,0 +1,969 @@
+/*******************************************************************************
+ * Copyright (c) 2014, 2018 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Elena Laskavaia
+ *******************************************************************************/
+package org.eclipse.launchbar.core.internal;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.doThrow;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.reset;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyZeroInteractions;
+import static org.mockito.Mockito.when;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
+
+import org.eclipse.core.internal.preferences.EclipsePreferences;
+import org.eclipse.core.internal.resources.Project;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtension;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.PlatformObject;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.ILaunchConfigurationType;
+import org.eclipse.debug.core.ILaunchManager;
+import org.eclipse.debug.core.ILaunchMode;
+import org.eclipse.launchbar.core.DefaultLaunchConfigProvider;
+import org.eclipse.launchbar.core.DefaultLaunchDescriptorType;
+import org.eclipse.launchbar.core.ILaunchBarListener;
+import org.eclipse.launchbar.core.ILaunchConfigurationProvider;
+import org.eclipse.launchbar.core.ILaunchDescriptor;
+import org.eclipse.launchbar.core.ILaunchDescriptorType;
+import org.eclipse.launchbar.core.ProjectLaunchDescriptor;
+import org.eclipse.launchbar.core.ProjectPerTargetLaunchConfigProvider;
+import org.eclipse.launchbar.core.target.ILaunchTarget;
+import org.eclipse.launchbar.core.target.ILaunchTargetManager;
+import org.junit.Before;
+import org.junit.FixMethodOrder;
+import org.junit.Test;
+import org.junit.runners.MethodSorters;
+
+@SuppressWarnings({ "restriction" })
+@FixMethodOrder(MethodSorters.JVM)
+public class LaunchBarManager2Test {
+ private LaunchBarManager manager;
+ private ILaunchConfigurationProvider provider;
+ private ILaunchDescriptor descriptor;
+ private ILaunchDescriptorType descriptorType;
+ private ILaunchConfigurationType launchConfigType;
+ private ILaunchConfiguration launchConfig;
+ private ILaunchManager lman;
+ private IProject aaa;
+ private ArrayList<ILaunchMode> globalmodes = new ArrayList<>();
+ IExtensionPoint point;
+ IEclipsePreferences store = new EclipsePreferences();
+ private ArrayList<IConfigurationElement> elements;
+ private IExtension extension;
+ private String descriptorTypeId;
+ private ILaunchTargetManager targetManager;
+ private ILaunchTarget localTarget;
+ private String launchObject;
+ private ILaunchTarget otherTarget;
+ private ILaunchTarget[] targets;
+
+ public class FixedLaunchBarManager extends LaunchBarManager {
+ public FixedLaunchBarManager() {
+ super(false);
+ }
+
+ @Override
+ public IExtensionPoint getExtensionPoint() {
+ return point;
+ }
+
+ @Override
+ protected ILaunchManager getLaunchManager() {
+ return lman;
+ }
+
+ @Override
+ protected IEclipsePreferences getPreferenceStore() {
+ return store;
+ }
+
+ @Override
+ ILaunchTargetManager getLaunchTargetManager() {
+ return targetManager;
+ }
+ }
+
+ @Before
+ public void setUp() throws Exception {
+ basicSetup();
+ }
+
+ protected void mockProviderElement(String descriptorTypeId, int priority, ILaunchConfigurationProvider provider)
+ throws CoreException {
+ IConfigurationElement element = mockElementAndAdd("configProvider");
+ doReturn(descriptorTypeId).when(element).getAttribute("descriptorType");
+ doReturn(Integer.toString(priority)).when(element).getAttribute("priority");
+ doReturn(provider).when(element).createExecutableExtension("class");
+ }
+
+ protected ILaunchConfigurationProvider mockConfigProviderElement(String descriptorTypeId, int priority,
+ ILaunchDescriptor descriptor, ILaunchTarget target, ILaunchConfiguration config, Object launchObj)
+ throws CoreException {
+ ILaunchConfigurationProvider provider = mock(ILaunchConfigurationProvider.class);
+ mockProviderElement(descriptorTypeId, priority, provider);
+ doReturn(config.getType()).when(provider).getLaunchConfigurationType(descriptor, target);
+ doReturn(config).when(provider).getLaunchConfiguration(descriptor, target);
+ doReturn(true).when(provider).supports(descriptor, target);
+ doReturn(true).when(provider).launchConfigurationAdded(config);
+ return provider;
+ }
+
+ protected IConfigurationElement mockDescriptorTypeElement(String descriptorTypeId, int priority,
+ ILaunchDescriptorType descriptorType) throws CoreException {
+ IConfigurationElement element = mockElementAndAdd("descriptorType");
+ doReturn(descriptorTypeId).when(element).getAttribute("id");
+ doReturn(Integer.toString(priority)).when(element).getAttribute("priority");
+ doReturn(descriptorType).when(element).createExecutableExtension("class");
+ // TODO need a real enablement here, not an empty one
+ // mockEnablementElement(element);
+ return element;
+ }
+
+ private void mockSubElement(IConfigurationElement parent, IConfigurationElement... elements) {
+ doReturn(elements).when(parent).getChildren();
+ String name = elements[0].getName();
+ doReturn(elements).when(parent).getChildren(name);
+ }
+
+ private IConfigurationElement mockEnablementElement(IConfigurationElement parent) {
+ IConfigurationElement enablement = mock(IConfigurationElement.class);
+ doReturn("enablement").when(enablement).getName();
+ mockSubElement(parent, new IConfigurationElement[] { enablement });
+ return enablement;
+ }
+
+ protected void init() throws CoreException {
+ doReturn(elements.toArray(new IConfigurationElement[0])).when(extension).getConfigurationElements();
+ doReturn(targets).when(targetManager).getLaunchTargets();
+ manager.init();
+ }
+
+ protected IConfigurationElement mockElementAndAdd(final String configElement) {
+ IConfigurationElement element = mock(IConfigurationElement.class);
+ doReturn(configElement).when(element).getName();
+ elements.add(element);
+ return element;
+ }
+
+ protected void mockLaunchObjectOnDescriptor(Object launchObject) throws CoreException {
+ doReturn(descriptor).when(descriptorType).getDescriptor(launchObject);
+ doReturn(launchObject.toString()).when(descriptor).getName();
+ }
+
+ private ILaunchConfiguration mockLC(String string, ILaunchConfigurationType lctype2) throws CoreException {
+ ILaunchConfiguration lc = mock(ILaunchConfiguration.class);
+ doReturn(string).when(lc).getName();
+ doReturn(lctype2).when(lc).getType();
+ doReturn("").when(lc).getAttribute(eq(ATTR_ORIGINAL_NAME), eq(""));
+ doReturn("").when(lc).getAttribute(eq(ATTR_PROVIDER_CLASS), eq(""));
+ return lc;
+ }
+
+ protected ILaunchConfigurationType mockLCType(String id) {
+ ILaunchConfigurationType lctype = mock(ILaunchConfigurationType.class);
+ doReturn(true).when(lctype).isPublic();
+ doReturn(id).when(lctype).getIdentifier();
+ doReturn(lctype).when(lman).getLaunchConfigurationType(id);
+ return lctype;
+ }
+
+ protected ILaunchMode[] mockLaunchModes(ILaunchConfigurationType type, String... modes) {
+ ILaunchMode res[] = new ILaunchMode[modes.length];
+ for (int i = 0; i < modes.length; i++) {
+ String modeId = modes[i];
+ doReturn(true).when(type).supportsMode(modeId);
+ ILaunchMode mode = mock(ILaunchMode.class);
+ res[i] = mode;
+ doReturn(modeId).when(mode).getIdentifier();
+ doReturn(mode).when(lman).getLaunchMode(modeId);
+ globalmodes.add(mode);
+ }
+ doReturn(new HashSet<>(Arrays.asList(modes))).when(type).getSupportedModes();
+ doReturn(globalmodes.toArray(new ILaunchMode[globalmodes.size()])).when(lman).getLaunchModes();
+ return res;
+ }
+
+ /**
+ * @param t2
+ * @return
+ */
+ private ILaunchTarget mockRemoteConnection(String t2) {
+ ILaunchTarget target = mock(ILaunchTarget.class);
+ doReturn(t2).when(target).getTypeId();
+ doReturn(t2 + ".target").when(target).getId();
+ return target;
+ }
+
+ class ConfigBasedLaunchDescriptor extends PlatformObject implements ILaunchDescriptor {
+ private ILaunchConfiguration conf;
+ private ILaunchDescriptorType type;
+
+ public ConfigBasedLaunchDescriptor(ILaunchDescriptorType type, ILaunchConfiguration conf) {
+ this.conf = conf;
+ this.type = type;
+ }
+
+ @Override
+ public <T> T getAdapter(Class<T> adapter) {
+ if (adapter.isInstance(conf))
+ return adapter.cast(conf);
+ return super.getAdapter(adapter);
+ }
+
+ @Override
+ public String getName() {
+ return conf.getName();
+ }
+
+ @Override
+ public ILaunchDescriptorType getType() {
+ return type;
+ }
+ }
+
+ private void basicSetup() throws CoreException {
+ basicSetupOnly();
+ init();
+ }
+
+ protected void basicSetupOnly() throws CoreException {
+ globalmodes.clear();
+ point = mock(IExtensionPoint.class);
+ extension = mock(IExtension.class);
+ elements = new ArrayList<>();
+ doReturn(new IExtension[] { extension }).when(point).getExtensions();
+ lman = mock(ILaunchManager.class);
+ doReturn(globalmodes.toArray(new ILaunchMode[globalmodes.size()])).when(lman).getLaunchModes();
+ doReturn(new ILaunchConfiguration[] {}).when(lman).getLaunchConfigurations();
+ targetManager = mock(ILaunchTargetManager.class);
+ manager = new FixedLaunchBarManager();
+ localTarget = mock(ILaunchTarget.class);
+ doReturn(ILaunchTargetManager.localLaunchTargetTypeId).when(localTarget).getTypeId();
+ doReturn("Local").when(localTarget).getId();
+ // mock
+ launchObject = "test";
+ // remote connections
+ otherTarget = mock(ILaunchTarget.class);
+ doReturn("otherTargetType").when(otherTarget).getTypeId();
+ doReturn("otherTarget").when(otherTarget).getId();
+ targets = new ILaunchTarget[] { otherTarget, localTarget };
+ // lc
+ String launchConfigTypeId = "lctype1";
+ launchConfigType = mockLCType(launchConfigTypeId);
+ launchConfig = mockLC(launchObject, launchConfigType);
+ // launch config type
+ mockLaunchModes(launchConfigType, "run", "debug");
+ // launch descriptor and type
+ descriptorType = mock(ILaunchDescriptorType.class);
+ descriptorTypeId = "descType";
+ mockDescriptorTypeElement(descriptorTypeId, 10, descriptorType);
+ descriptor = mock(ILaunchDescriptor.class);
+ doReturn(descriptorType).when(descriptor).getType();
+ doReturn(descriptor).when(descriptorType).getDescriptor(launchObject);
+ // configProvider
+ provider = mockConfigProviderElement(descriptorTypeId, 10, descriptor, otherTarget, launchConfig, launchObject);
+ mockLaunchObjectOnDescriptor(launchObject);
+ // default descriptor
+ String defaultDescTypeId = "defaultDescType";
+ mockDescriptorTypeElement(defaultDescTypeId, 0, new DefaultLaunchDescriptorType());
+ ILaunchConfigurationProvider defaultProvider = new DefaultLaunchConfigProvider();
+ mockProviderElement(defaultDescTypeId, 0, defaultProvider);
+ }
+
+ @Test
+ public void testDescriptor() throws Exception {
+ // Create a descriptor type and inject an associated object
+ // Make sure the descriptor is active with the local target and proper
+ // mode
+ // Make sure the associated launch config is active too
+ // Mocking
+ manager.launchObjectAdded(launchObject);
+ assertEquals(descriptor, manager.getActiveLaunchDescriptor());
+ assertEquals(otherTarget, manager.getActiveLaunchTarget());
+ assertEquals(launchConfig, manager.getActiveLaunchConfiguration());
+ assertNotNull(manager.getActiveLaunchMode());
+ assertEquals("run", manager.getActiveLaunchMode().getIdentifier());
+ }
+
+ @Test
+ public void testLaunchBarManager() {
+ assertNull(manager.getActiveLaunchDescriptor());
+ assertNull(manager.getActiveLaunchTarget());
+ assertNull(manager.getActiveLaunchMode());
+ }
+
+ @Test
+ public void testAddConfigMappingTwo() throws CoreException {
+ basicSetupOnly();
+ ILaunchTarget target = mockRemoteConnection("t2");
+ mockConfigProviderElement(descriptorTypeId, 10, descriptor, target, launchConfig, launchObject);
+ // now create another lc type, which is not registered in config type
+ ILaunchConfigurationType lctype2 = mockLCType("lctypeid2");
+ ILaunchConfiguration lc2 = mockLC("bla2", lctype2);
+ ConfigBasedLaunchDescriptor desc2 = new ConfigBasedLaunchDescriptor(descriptorType, lc2);
+ mockConfigProviderElement(descriptorTypeId, 10, desc2, target, lc2, lc2);
+ init();
+ manager.launchObjectAdded(launchObject);
+ // it return original lctype because we did not associate this
+ // dynmaically
+ assertEquals(launchConfigType, manager.getLaunchConfigurationType(descriptor, target));
+ }
+
+ @Test
+ public void testAddConfigProviderTwo2() throws CoreException {
+ basicSetupOnly();
+ ILaunchTarget target = mockRemoteConnection("t2");
+ mockConfigProviderElement(descriptorTypeId, 15, descriptor, target, launchConfig, launchObject);
+ ILaunchConfigurationType lctype2 = mockLCType("lctypeid2");
+ ILaunchConfiguration lc2 = mockLC("lc2", lctype2);
+ mockConfigProviderElement(descriptorTypeId, 20, descriptor, target, lc2, launchObject);
+ init();
+ manager.launchObjectAdded(launchObject);
+ assertEquals(lctype2, manager.getLaunchConfigurationType(descriptor, target));
+ }
+
+ @Test
+ public void testGetLaunchTargets() throws CoreException {
+ manager.launchObjectAdded(launchObject);
+ manager.setActiveLaunchDescriptor(descriptor);
+ ILaunchTarget[] launchTargets = manager.getLaunchTargets(descriptor);
+ assertEquals(1, launchTargets.length);
+ assertEquals(otherTarget, launchTargets[0]);
+ }
+
+ @Test
+ public void testGetLaunchTargetsNoConfigMapping() throws CoreException {
+ basicSetupOnly();
+ elements.clear();
+ mockDescriptorTypeElement(descriptorTypeId, 10, descriptorType);
+ mockProviderElement(descriptorTypeId, 10, new DefaultLaunchConfigProvider());
+ init();
+ manager.launchObjectAdded(launchObject);
+ ILaunchDescriptor desc = manager.getActiveLaunchDescriptor();
+ ILaunchTarget[] launchTargets = manager.getLaunchTargets(desc);
+ assertEquals(1, launchTargets.length);
+ }
+
+ @Test
+ public void testGetLaunchTargetsConfigMapping() throws CoreException {
+ basicSetupOnly();
+ elements.clear();
+ mockDescriptorTypeElement(descriptorTypeId, 10, descriptorType);
+ mockConfigProviderElement(descriptorTypeId, 10, descriptor, localTarget, launchConfig, launchObject);
+ init();
+ manager.launchObjectAdded(launchObject);
+ ILaunchDescriptor desc = manager.getActiveLaunchDescriptor();
+ ILaunchTarget[] launchTargets = manager.getLaunchTargets(desc);
+ assertEquals(1, launchTargets.length);
+ }
+
+ @Test
+ public void testGetLaunchDescriptorsNull() {
+ ILaunchDescriptor[] launchDescriptors = manager.getLaunchDescriptors();
+ assertEquals(0, launchDescriptors.length);
+ }
+
+ @Test
+ public void testGetLaunchDescriptorsNull1() throws CoreException {
+ init();
+ ILaunchDescriptor[] launchDescriptors = manager.getLaunchDescriptors();
+ assertEquals(0, launchDescriptors.length);
+ }
+
+ @Test
+ public void testGetLaunchDescriptors() {
+ manager.launchObjectAdded(launchObject);
+ manager.launchConfigurationAdded(launchConfig);
+ ILaunchDescriptor[] launchDescriptors = manager.getLaunchDescriptors();
+ assertEquals(1, launchDescriptors.length);
+ }
+
+ //
+ // public void testGetLaunchDescriptorsSort() {
+ // final ILaunchDescriptor res[] = new ILaunchDescriptor[1];
+ // manager.addTargetType(targetType);
+ // ConfigBasedLaunchDescriptorType descType1 = new
+ // ConfigBasedLaunchDescriptorType("id1", lctype.getIdentifier());
+ // ConfigBasedLaunchDescriptorType descType2 = new
+ // ConfigBasedLaunchDescriptorType("id2", lctype.getIdentifier()) {
+ // @Override
+ // public ILaunchDescriptor getDescriptor(Object element) {
+ // return res[0] = super.getDescriptor(element);
+ // }
+ // };
+ // ConfigBasedLaunchDescriptorType descType3 = new
+ // ConfigBasedLaunchDescriptorType("id3", lctype.getIdentifier());
+ // manager.addDescriptorType(descType1, 3);
+ // manager.addDescriptorType(descType2, 5);
+ // manager.addDescriptorType(descType3, 1);
+ // manager.addConfigProvider(descType1.getId(), targetType.getId(), true,
+ // provider);
+ // manager.addConfigProvider(descType2.getId(), targetType.getId(), true,
+ // provider);
+ // manager.addConfigProvider(descType3.getId(), targetType.getId(), true,
+ // provider);
+ // targetType.targets.add(mytarget);
+ // manager.launchObjectAdded(launchObject);
+ // ILaunchDescriptor[] launchDescriptors = manager.getLaunchDescriptors();
+ // assertEquals(1, launchDescriptors.length);
+ // assertNotNull(launchDescriptors[0]);
+ // assertSame(res[0], launchDescriptors[0]);
+ // }
+ //
+ @Test
+ public void testLaunchObjectAdded() throws CoreException {
+ mockLaunchObjectOnDescriptor(launchConfig);
+ doReturn(launchConfig.getName()).when(descriptor).getName();
+ manager.launchObjectAdded(launchObject);
+ ILaunchDescriptor[] launchDescriptors = manager.getLaunchDescriptors();
+ assertEquals(1, launchDescriptors.length);
+ assertNotNull(launchDescriptors[0]);
+ assertEquals(launchConfig.getName(), launchDescriptors[0].getName());
+ }
+
+ @Test
+ public void testLaunchConfigurationAdded() throws CoreException {
+ manager.launchObjectAdded(launchObject);
+ manager.launchConfigurationAdded(launchConfig);
+ ILaunchConfiguration lc2 = mockLC("lc2", launchConfigType);
+ manager.launchConfigurationAdded(lc2);
+ assertEquals(2, manager.getLaunchDescriptors().length);
+ }
+
+ @Test
+ public void testLaunchObjectChanged() throws CoreException {
+ // todo FIX me
+ manager.launchObjectChanged(launchObject);
+ }
+
+ public IProject mockProject(String projectName) {
+ IProject project = mock(Project.class);
+ when(project.getAdapter(IResource.class)).thenReturn(project);
+ when(project.getProject()).thenReturn(project);
+ when(project.getName()).thenReturn(projectName);
+ IPath path = new Path(projectName);
+ when(project.getFullPath()).thenReturn(path);
+ when(project.getType()).thenReturn(IResource.PROJECT);
+ return project;
+ }
+
+ public static final String ATTR_PROJECT_NAME = "org.eclipse.cdt.launch" + ".PROJECT_ATTR";
+ public static final String ATTR_PROGRAM_NAME = "org.eclipse.cdt.launch" + ".PROGRAM_NAME";
+
+ public ILaunchConfiguration mockLCProject(ILaunchConfiguration lc, String projectName) {
+ mockLCAttribute(lc, ATTR_PROJECT_NAME, projectName);
+ return lc;
+ }
+
+ public ILaunchConfiguration mockLCProject(ILaunchConfiguration lc, IProject project) {
+ String projectName = project.getName();
+ doReturn(projectName).when(lc).getName();
+ mockLCProject(lc, projectName);
+ try {
+ doReturn(new IResource[] { project }).when(lc).getMappedResources();
+ } catch (CoreException e) {
+ throw new RuntimeException(e);
+ }
+ return lc;
+ }
+
+ public ILaunchConfiguration mockLCBinary(ILaunchConfiguration lc, String binname) {
+ mockLCAttribute(lc, ATTR_PROGRAM_NAME, binname);
+ return lc;
+ }
+
+ public ILaunchConfiguration mockLCAttribute(ILaunchConfiguration lc, String attr, String value) {
+ try {
+ doReturn(value).when(lc).getAttribute(eq(attr), anyString());
+ } catch (CoreException e) {
+ throw new RuntimeException(e);
+ }
+ return lc;
+ }
+
+ public ILaunchConfiguration mockLCAttribute(ILaunchConfiguration lc, String attr, boolean value) {
+ try {
+ doReturn(value).when(lc).getAttribute(attr, false);
+ } catch (CoreException e) {
+ throw new RuntimeException(e);
+ }
+ return lc;
+ }
+
+ protected String getProjectName(ILaunchConfiguration llc) {
+ try {
+ return llc.getAttribute(ATTR_PROJECT_NAME, "");
+ } catch (CoreException e) {
+ //
+ }
+ return "";
+ }
+
+ IProject getProjectByName(String p) {
+ if (p.equals("aaa"))
+ return aaa;
+ return mockProject(p);
+ }
+
+ protected void userDeletesLC(ILaunchConfiguration lc2) {
+ String string = lc2.getName();
+ reset(lc2);
+ doReturn(string).when(lc2).getName();
+ manager.launchConfigurationRemoved(lc2);
+ }
+
+ public class ProjectBasedLaunchDescriptorType implements ILaunchDescriptorType {
+ @Override
+ public ILaunchDescriptor getDescriptor(Object launchObject) throws CoreException {
+ return new ProjectLaunchDescriptor(this, (IProject) launchObject);
+ }
+
+ public String getId() {
+ return "pbtype";
+ }
+ }
+
+ public static final String ATTR_ORIGINAL_NAME = org.eclipse.launchbar.core.internal.Activator.PLUGIN_ID
+ + ".originalName"; //$NON-NLS-1$
+ public static final String ATTR_PROVIDER_CLASS = org.eclipse.launchbar.core.internal.Activator.PLUGIN_ID
+ + ".providerClass"; //$NON-NLS-1$
+
+ protected void projectMappingSetup() throws CoreException {
+ descriptorType = new ProjectBasedLaunchDescriptorType();
+ descriptorTypeId = ((ProjectBasedLaunchDescriptorType) descriptorType).getId();
+ aaa = mockProject("aaa");
+ descriptor = new ProjectLaunchDescriptor(descriptorType, aaa);
+ // setup some stuff
+ mockDescriptorTypeElement(descriptorTypeId, 10, descriptorType);
+ // lc = provider.createLaunchConfiguration(lman,
+ // descType.getDescriptor(aaa));
+ mockLCProject(launchConfig, aaa);
+ mockLCAttribute(launchConfig, ATTR_ORIGINAL_NAME, aaa.getName());
+ assertEquals(0, manager.getLaunchDescriptors().length);
+ provider = new ProjectPerTargetLaunchConfigProvider() {
+ @Override
+ public ILaunchConfigurationType getLaunchConfigurationType(ILaunchDescriptor descriptor,
+ ILaunchTarget target) throws CoreException {
+ return launchConfigType;
+ }
+
+ @Override
+ public boolean ownsLaunchConfiguration(ILaunchConfiguration configuration) throws CoreException {
+ return configuration == launchConfig;
+ }
+
+ @Override
+ protected ILaunchDescriptor getLaunchDescriptor(ILaunchConfiguration configuration) throws CoreException {
+ return descriptor;
+ }
+
+ @Override
+ protected ILaunchTarget getLaunchTarget(ILaunchConfiguration configuration) throws CoreException {
+ return localTarget;
+ }
+ };
+ mockProviderElement(descriptorTypeId, 10, provider);
+ mockLCAttribute(launchConfig, ATTR_PROVIDER_CLASS, provider.getClass().getName());
+ init();
+ }
+
+ /**
+ * Test duplicating a config. make sure it's default desc and same targets
+ */
+ @Test
+ public void testLaunchObjectAddedRemapping() throws CoreException {
+ projectMappingSetup();
+ // user created a project
+ manager.launchObjectAdded(aaa);
+ assertEquals(1, manager.getLaunchDescriptors().length);
+ assertTrue(manager.getLaunchDescriptors()[0].getName().startsWith(aaa.getName()));
+ // user clicked on descriptor gear to edit lc, new lc is created
+ manager.launchConfigurationAdded(launchConfig);
+ // the project launch config should have caught this
+ assertEquals(1, manager.getLaunchDescriptors().length);
+ assertEquals(launchConfig.getName(), manager.getLaunchDescriptors()[0].getName());
+ // user cloned lc and changed some settings
+ ILaunchConfiguration lc2 = mockLC("lc2", launchConfigType);
+ mockLCProject(lc2, aaa);
+ doReturn("name2").when(lc2).getName();
+ manager.launchConfigurationAdded(lc2);
+ assertEquals(2, manager.getLaunchDescriptors().length);
+ // user deleted lc
+ userDeletesLC(lc2);
+ assertEquals(1, manager.getLaunchDescriptors().length);
+ // user deleted last lc, now we back to project default
+ userDeletesLC(launchConfig);
+ assertEquals(1, manager.getLaunchDescriptors().length);
+ }
+
+ @Test
+ public void testLaunchObjectAddedRemapping2() throws CoreException {
+ projectMappingSetup();
+ // test unmapping
+ manager.launchObjectAdded(aaa);
+ manager.launchConfigurationAdded(launchConfig);
+ assertEquals(1, manager.getLaunchDescriptors().length);
+ manager.launchObjectAdded(aaa);
+ assertEquals(1, manager.getLaunchDescriptors().length);
+ assertEquals(launchConfig.getName(), manager.getLaunchDescriptors()[0].getName());
+ }
+
+ @Test
+ public void testLaunchObjectAddedBadDescriptor() throws CoreException {
+ doThrow(new NullPointerException()).when(descriptorType).getDescriptor(any());
+ // check events
+ manager.launchObjectAdded(launchObject);
+ verify(descriptorType).getDescriptor(launchObject);
+ }
+
+ @Test
+ public void testLaunchObjectAddedBadDescriptor2() throws CoreException {
+ doThrow(new NullPointerException()).when(descriptorType).getDescriptor(any());
+ // check events
+ manager.launchObjectAdded(launchObject);
+ verify(descriptorType).getDescriptor(launchObject);
+ }
+
+ @Test
+ public void testLaunchObjectRemoveBadDescriptor() throws CoreException {
+ doThrow(new NullPointerException()).when(descriptorType).getDescriptor(any());
+ // check events
+ manager.launchObjectRemoved(launchObject);
+ }
+
+ @Test
+ public void testLaunchObjectRemoved() throws CoreException {
+ manager.launchObjectAdded(launchObject);
+ assertEquals(1, manager.getLaunchDescriptors().length);
+ manager.launchObjectRemoved(launchObject);
+ assertEquals(0, manager.getLaunchDescriptors().length);
+ }
+
+ @Test
+ public void testGetActiveLaunchDescriptor() {
+ ILaunchBarListener lis = mock(ILaunchBarListener.class);
+ manager.addListener(lis);
+ manager.launchObjectAdded(launchObject);
+ // manager.setActiveLaunchDescriptor(desc);
+ assertEquals(descriptor, manager.getActiveLaunchDescriptor());
+ verify(lis).activeLaunchDescriptorChanged(descriptor);
+ }
+
+ @Test
+ public void testSetActiveLaunchDescriptorUnkn() {
+ try {
+ manager.setActiveLaunchDescriptor(descriptor);
+ fail();
+ } catch (Exception e) {
+ // pass
+ }
+ }
+
+ @Test
+ public void testSetActiveLaunchDescriptorNullBad() throws CoreException {
+ manager.launchObjectAdded(launchObject);
+ manager.setActiveLaunchDescriptor(null);
+ assertEquals(descriptor, manager.getActiveLaunchDescriptor());
+ }
+
+ @Test
+ public void testSetActiveLaunchDescriptorLisBad() {
+ ILaunchBarListener lis = mock(ILaunchBarListener.class);
+ manager.addListener(lis);
+ doThrow(new NullPointerException()).when(lis).activeLaunchDescriptorChanged(any(ILaunchDescriptor.class));
+ manager.launchObjectAdded(launchObject);
+ manager.launchConfigurationAdded(launchConfig);
+ verify(lis).activeLaunchDescriptorChanged(descriptor);
+ }
+
+ @Test
+ public void testSetActiveLaunchDescriptorNull() throws CoreException {
+ manager.launchObjectAdded(launchObject);
+ manager.launchObjectRemoved(launchObject);
+ assertEquals(null, manager.getActiveLaunchDescriptor());
+ manager.setActiveLaunchDescriptor(null);
+ }
+
+ @Test
+ public void testGetLaunchModes() throws CoreException {
+ ILaunchMode[] launchModes = manager.getLaunchModes();
+ assertEquals(0, launchModes.length);
+ }
+
+ @Test
+ public void testGetLaunchModesFew() throws CoreException {
+ globalmodes.clear();
+ ILaunchConfigurationType lctype2 = mockLCType("lctype2");
+ mockLaunchModes(lctype2, "modex");
+ mockLaunchModes(launchConfigType, "run", "debug", "foo");
+ manager.launchObjectAdded(launchObject);
+ manager.launchConfigurationAdded(launchConfig);
+ ILaunchMode[] launchModes = manager.getLaunchModes();
+ assertEquals(3, launchModes.length);
+ }
+
+ @Test
+ public void testSetActiveLaunchMode() throws CoreException {
+ ILaunchMode mode = mock(ILaunchMode.class);
+ doReturn("bla").when(mode).getIdentifier();
+ doReturn("Bla").when(mode).getLabel();
+ manager.setActiveLaunchMode(mode);
+ assertEquals(mode, manager.getActiveLaunchMode());
+ }
+
+ @Test
+ public void testSetActiveLaunchModeNull() throws CoreException {
+ manager.setActiveLaunchMode(null);
+ assertEquals(null, manager.getActiveLaunchMode());
+ }
+
+ @Test
+ public void testSetActiveLaunchModeNull2() throws CoreException {
+ ILaunchMode modes[] = mockLaunchModes(launchConfigType, "run", "debug", "foo");
+ manager.setActiveLaunchMode(modes[0]);
+ manager.setActiveLaunchMode(null);
+ assertEquals(null, manager.getActiveLaunchMode());
+ }
+
+ @Test
+ public void testSetActiveLaunchModeUnsupported() {
+ ILaunchConfigurationType lctype2 = mockLCType("lctype2");
+ ILaunchMode mode = mockLaunchModes(lctype2, "modex")[0];
+ mockLaunchModes(launchConfigType, "run", "debug", "foo");
+ manager.launchObjectAdded(launchObject);
+ manager.launchConfigurationAdded(launchConfig);
+ try {
+ manager.setActiveLaunchMode(mode);
+ fail();
+ } catch (Exception e) {
+ // works
+ assertNotEquals(mode, manager.getActiveLaunchMode());
+ }
+ }
+
+ @Test
+ public void testSetActiveLaunchModeLis() throws CoreException {
+ ILaunchMode mode = mock(ILaunchMode.class);
+ doReturn("bla").when(mode).getIdentifier();
+ ILaunchBarListener lis = mock(ILaunchBarListener.class);
+ manager.addListener(lis);
+ manager.setActiveLaunchMode(mode);
+ manager.setActiveLaunchMode(null);
+ verify(lis, times(1)).activeLaunchModeChanged(mode);
+ verify(lis, times(1)).activeLaunchModeChanged(null);
+ }
+
+ @Test
+ public void testSetActiveLaunchModeLisBad() throws CoreException {
+ ILaunchMode mode = mock(ILaunchMode.class);
+ doReturn("bla").when(mode).getIdentifier();
+ ILaunchBarListener lis = mock(ILaunchBarListener.class);
+ manager.addListener(lis);
+ doThrow(new NullPointerException()).when(lis).activeLaunchModeChanged(mode);
+ manager.setActiveLaunchMode(mode);
+ verify(lis).activeLaunchModeChanged(mode);
+ }
+
+ @Test
+ public void testGetActiveLaunchModeFromDesc() throws CoreException {
+ manager.launchObjectAdded(launchObject);
+ manager.setActiveLaunchDescriptor(descriptor);
+ ILaunchMode resmode = manager.getActiveLaunchMode();
+ assertNotNull(resmode);
+ assertEquals("run", resmode.getIdentifier());
+ }
+
+ @Test
+ public void testGetActiveLaunchModeFromDescDebug() throws CoreException {
+ globalmodes.clear();
+ mockLaunchModes(launchConfigType, "xrun");
+ manager.launchObjectAdded(launchObject);
+ manager.setActiveLaunchDescriptor(descriptor);
+ ILaunchMode resmode = manager.getActiveLaunchMode();
+ assertNotNull(resmode);
+ assertEquals("xrun", resmode.getIdentifier());
+ }
+
+ @Test
+ public void testGetActiveLaunchModeFromDescActive() throws CoreException {
+ globalmodes.clear();
+ ILaunchMode mode = mockLaunchModes(launchConfigType, "foo", "run")[0];
+ manager.launchObjectAdded(launchObject);
+ manager.setActiveLaunchDescriptor(descriptor);
+ manager.setActiveLaunchMode(mode);
+ ILaunchMode resmode = manager.getActiveLaunchMode();
+ assertNotNull(resmode);
+ assertEquals("foo", resmode.getIdentifier());
+ }
+
+ @Test
+ public void testGetActiveLaunchTarget() throws CoreException {
+ manager.setActiveLaunchTarget(localTarget);
+ assertEquals(localTarget, manager.getActiveLaunchTarget());
+ }
+
+ @Test
+ public void testGetLaunchConfigurationType() throws CoreException {
+ manager.launchObjectAdded(launchObject);
+ assertNotNull(manager.getLaunchConfigurationType(descriptor, otherTarget));
+ }
+
+ @Test
+ public void testGetLaunchConfigurationNull() throws CoreException {
+ assertNull(manager.getLaunchConfiguration(null, otherTarget));
+ }
+
+ @Test
+ public void testGetLaunchConfigurationNull2() throws CoreException {
+ manager.launchObjectAdded(launchObject);
+ assertNull(manager.getLaunchConfiguration(descriptor, null));
+ }
+
+ @Test
+ public void testGetLaunchConfiguration() throws CoreException {
+ basicSetup();
+ manager.launchObjectAdded(launchObject);
+ assertTrue(manager.supportsTarget(descriptor, otherTarget));
+ assertNotNull(manager.getLaunchConfiguration(descriptor, otherTarget));
+ }
+
+ @Test
+ public void testAddListener() throws CoreException {
+ ILaunchBarListener lis = mock(ILaunchBarListener.class);
+ manager.addListener(lis);
+ // check events
+ manager.launchObjectAdded(launchObject);
+ manager.setActiveLaunchDescriptor(descriptor);
+ verify(lis).activeLaunchTargetChanged(any(ILaunchTarget.class));
+ }
+
+ @Test
+ public void testAddListenerBad() throws CoreException {
+ ILaunchBarListener lis = mock(ILaunchBarListener.class);
+ manager.addListener(lis);
+ doThrow(new NullPointerException()).when(lis).activeLaunchTargetChanged(any(ILaunchTarget.class));
+ // check events
+ manager.launchObjectAdded(launchObject);
+ manager.setActiveLaunchDescriptor(descriptor);
+ verify(lis).activeLaunchTargetChanged(any(ILaunchTarget.class));
+ }
+
+ @Test
+ public void testRemoveListener() {
+ ILaunchBarListener lis = mock(ILaunchBarListener.class);
+ manager.addListener(lis);
+ manager.removeListener(lis);
+ verifyZeroInteractions(lis);
+ }
+
+ @Test
+ public void testLaunchConfigurationAdded2() throws CoreException {
+ globalmodes.clear();
+ ILaunchMode mode = mockLaunchModes(launchConfigType, "foo")[0];
+ manager.launchObjectAdded(launchObject);
+ manager.launchConfigurationAdded(launchConfig);
+ verify(provider).launchConfigurationAdded(launchConfig);
+ ILaunchDescriptor[] launchDescriptors = manager.getLaunchDescriptors();
+ assertEquals(1, launchDescriptors.length);
+ assertNotNull(launchDescriptors[0]);
+ assertEquals(launchConfig.getName(), launchDescriptors[0].getName());
+ manager.setActiveLaunchDescriptor(launchDescriptors[0]);
+ assertEquals(otherTarget, manager.getActiveLaunchTarget());
+ assertEquals(mode, manager.getActiveLaunchMode());
+ }
+
+ @Test
+ public void testLaunchConfigurationAddedDefault() throws CoreException {
+ // another lc not covered by provider
+ ILaunchConfigurationType lctype2 = mockLCType("lctype2");
+ ILaunchConfiguration lc2 = mockLC("lc2", lctype2);
+ manager.launchConfigurationAdded(lc2);
+ // verify(provider).launchConfigurationAdded(lc2);
+ ILaunchDescriptor[] launchDescriptors = manager.getLaunchDescriptors();
+ assertEquals(1, launchDescriptors.length);
+ assertNotNull(launchDescriptors[0]);
+ assertEquals(lc2.getName(), launchDescriptors[0].getName());
+ manager.setActiveLaunchDescriptor(launchDescriptors[0]);
+ assertEquals(localTarget, manager.getActiveLaunchTarget());
+ }
+
+ @Test
+ public void testLaunchConfigurationAddedBad() throws CoreException {
+ doThrow(new NullPointerException()).when(provider).launchConfigurationAdded(any(ILaunchConfiguration.class));
+ manager.launchConfigurationAdded(launchConfig);
+ verify(provider).launchConfigurationAdded(launchConfig);
+ }
+
+ @Test
+ public void testLaunchConfigurationChanged() throws CoreException {
+ manager.launchConfigurationChanged(launchConfig);
+ verify(provider).launchConfigurationChanged(launchConfig);
+ }
+
+ @Test
+ public void testLaunchConfigurationRemoved() throws CoreException {
+ manager.launchConfigurationRemoved(launchConfig);
+ verify(provider).launchConfigurationRemoved(launchConfig);
+ }
+
+ @Test
+ public void testLaunchConfigurationRemovedBad() throws CoreException {
+ doThrow(new NullPointerException()).when(provider).launchConfigurationRemoved(any(ILaunchConfiguration.class));
+ manager.launchConfigurationRemoved(launchConfig);
+ verify(provider).launchConfigurationRemoved(launchConfig);
+ }
+
+ @Test
+ public void testDescriptorEnablement() throws CoreException {
+ basicSetupOnly();
+ elements.clear();
+
+ IConfigurationElement element = mockDescriptorTypeElement("type2", 10, descriptorType);
+ IConfigurationElement enablement = mockEnablementElement(element);
+ IConfigurationElement instance = mock(IConfigurationElement.class);
+ doReturn("instanceof").when(instance).getName();
+ mockSubElement(enablement, new IConfigurationElement[] { instance });
+ doReturn("java.lang.Integer").when(instance).getAttribute("value");
+ init();
+ // this will be refused by enablement expression
+ assertNull(manager.launchObjectAdded(launchObject));
+ // we programmatically refuse this
+ assertNull(manager.launchObjectAdded(1));
+ mockLaunchObjectOnDescriptor(1);
+ // now we both good programmatically and in expression in extension
+ assertNotNull(manager.launchObjectAdded(1));
+ }
+
+}
diff --git a/launchbar/org.eclipse.launchbar.core.tests/src/org/eclipse/launchbar/core/internal/LaunchBarManagerTest.java b/launchbar/org.eclipse.launchbar.core.tests/src/org/eclipse/launchbar/core/internal/LaunchBarManagerTest.java
new file mode 100644
index 00000000000..175a7353814
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core.tests/src/org/eclipse/launchbar/core/internal/LaunchBarManagerTest.java
@@ -0,0 +1,323 @@
+/*******************************************************************************
+ * Copyright (c) 2014, 2018 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Doug Schaefer
+ *******************************************************************************/
+package org.eclipse.launchbar.core.internal;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtension;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.ILaunchConfigurationType;
+import org.eclipse.debug.core.ILaunchManager;
+import org.eclipse.debug.core.ILaunchMode;
+import org.eclipse.launchbar.core.DefaultLaunchDescriptor;
+import org.eclipse.launchbar.core.ILaunchConfigurationProvider;
+import org.eclipse.launchbar.core.ILaunchDescriptor;
+import org.eclipse.launchbar.core.ILaunchDescriptorType;
+import org.eclipse.launchbar.core.target.ILaunchTarget;
+import org.eclipse.launchbar.core.target.ILaunchTargetManager;
+import org.junit.Test;
+
+public class LaunchBarManagerTest {
+ @Test
+ public void startupTest() throws Exception {
+ // Make sure the manager starts up and defaults everything to null
+ LaunchBarManager manager = new LaunchBarManager(false);
+ manager.init();
+ assertNull(manager.getActiveLaunchDescriptor());
+ assertNull(manager.getActiveLaunchMode());
+ assertNull(manager.getActiveLaunchTarget());
+ }
+
+ @Test
+ public void defaultTest() throws Exception {
+ // Create a launch config, make sure default mode and local target are
+ // active
+ // And that that config is the active config.
+
+ // Mocking
+ ILaunchConfigurationType launchConfigType = mock(ILaunchConfigurationType.class);
+ ILaunchConfiguration launchConfig = mock(ILaunchConfiguration.class);
+ String launchConfigName = "launchConfig";
+ doReturn(launchConfigName).when(launchConfig).getName();
+ doReturn(launchConfigName).when(launchConfig).getAttribute(eq("org.eclipse.launchbar.core.originalName"),
+ anyString());
+ doReturn("").when(launchConfig).getAttribute(eq("org.eclipse.launchbar.core.providerClass"), anyString());
+ doReturn(true).when(launchConfigType).isPublic();
+ doReturn(launchConfigType).when(launchConfig).getType();
+ doReturn("launchConfigType").when(launchConfigType).getIdentifier();
+ doReturn(true).when(launchConfigType).supportsMode("run");
+ doReturn(true).when(launchConfigType).supportsMode("debug");
+
+ final ILaunchTargetManager targetManager = mock(ILaunchTargetManager.class);
+ ILaunchTarget localTarget = mock(ILaunchTarget.class);
+ doReturn(ILaunchTargetManager.localLaunchTargetTypeId).when(localTarget).getTypeId();
+ doReturn("Local").when(localTarget).getId();
+ doReturn(new ILaunchTarget[] { localTarget }).when(targetManager).getLaunchTargets();
+
+ // Inject the launch config
+ LaunchBarManager manager = new LaunchBarManager(false) {
+ @Override
+ ILaunchTargetManager getLaunchTargetManager() {
+ return targetManager;
+ }
+ };
+ manager.init();
+ manager.launchConfigurationAdded(launchConfig);
+
+ // Verify state
+ assertNotNull(manager.getActiveLaunchDescriptor());
+ assertEquals(launchConfig, manager.getActiveLaunchDescriptor().getAdapter(ILaunchConfiguration.class));
+
+ assertNotNull(manager.getActiveLaunchTarget());
+ assertEquals(ILaunchTargetManager.localLaunchTargetTypeId, manager.getActiveLaunchTarget().getTypeId());
+ assertEquals("Local", manager.getActiveLaunchTarget().getId());
+
+ assertNotNull(manager.getActiveLaunchMode());
+ assertEquals("run", manager.getActiveLaunchMode().getIdentifier());
+
+ assertEquals(launchConfig, manager.getActiveLaunchConfiguration());
+ }
+
+ @Test
+ public void descriptorTest() throws Exception {
+ // Create a descriptor type and inject an associated object
+ // Make sure the descriptor is active with the local target and proper
+ // mode
+ // Make sure the associated launch config is active too
+
+ // Mocking
+ final IExtensionPoint extensionPoint = mock(IExtensionPoint.class);
+ IExtension extension = mock(IExtension.class);
+ doReturn(new IExtension[] { extension }).when(extensionPoint).getExtensions();
+
+ List<IConfigurationElement> elements = new ArrayList<>();
+ IConfigurationElement element;
+
+ // fake launch object
+ String launchObject = "fakeObject";
+
+ // launch descriptor for that object
+ element = mock(IConfigurationElement.class);
+ elements.add(element);
+ doReturn("descriptorType").when(element).getName();
+ String descriptorTypeId = "fakeDescriptorType";
+ doReturn(descriptorTypeId).when(element).getAttribute("id");
+ ILaunchDescriptorType descriptorType = mock(ILaunchDescriptorType.class);
+ doReturn(descriptorType).when(element).createExecutableExtension("class");
+ ILaunchDescriptor descriptor = mock(ILaunchDescriptor.class);
+ doReturn(descriptor).when(descriptorType).getDescriptor(launchObject);
+ doReturn(descriptorType).when(descriptor).getType();
+ doReturn(launchObject).when(descriptor).getName();
+
+ // launch config type
+ final ILaunchManager launchManager = mock(ILaunchManager.class);
+ ILaunchMode runMode = mock(ILaunchMode.class);
+ String run = "run";
+ doReturn(run).when(runMode).getIdentifier();
+ doReturn(runMode).when(launchManager).getLaunchMode(run);
+ ILaunchMode debugMode = mock(ILaunchMode.class);
+ String debug = "debug";
+ doReturn(debug).when(debugMode).getIdentifier();
+ doReturn(debugMode).when(launchManager).getLaunchMode(debug);
+ doReturn(new ILaunchMode[] { runMode, debugMode }).when(launchManager).getLaunchModes();
+ ILaunchConfigurationType launchConfigType = mock(ILaunchConfigurationType.class);
+ String launchConfigTypeId = "fakeLaunchConfigType";
+ doReturn(launchConfigTypeId).when(launchConfigType).getIdentifier();
+ doReturn(true).when(launchConfigType).supportsMode(run);
+ doReturn(true).when(launchConfigType).supportsMode(debug);
+ doReturn(launchConfigType).when(launchManager).getLaunchConfigurationType(launchConfigTypeId);
+ // TODO assuming this is only called at init time when there aren't any
+ doReturn(new ILaunchConfiguration[0]).when(launchManager).getLaunchConfigurations();
+
+ // configProvider
+ element = mock(IConfigurationElement.class);
+ elements.add(element);
+ doReturn("configProvider").when(element).getName();
+ doReturn(descriptorTypeId).when(element).getAttribute("descriptorType");
+ doReturn("10").when(element).getAttribute("priority");
+
+ ILaunchConfigurationProvider configProvider = mock(ILaunchConfigurationProvider.class);
+ doReturn(configProvider).when(element).createExecutableExtension("class");
+
+ final ILaunchTargetManager targetManager = mock(ILaunchTargetManager.class);
+ ILaunchTarget localTarget = mock(ILaunchTarget.class);
+ doReturn(ILaunchTargetManager.localLaunchTargetTypeId).when(localTarget).getTypeId();
+ doReturn("Local").when(localTarget).getId();
+ doReturn(new ILaunchTarget[] { localTarget }).when(targetManager).getLaunchTargets();
+
+ ILaunchConfiguration launchConfig = mock(ILaunchConfiguration.class);
+ doReturn(launchConfig).when(configProvider).getLaunchConfiguration(eq(descriptor), any(ILaunchTarget.class));
+ doReturn(launchConfigType).when(configProvider).getLaunchConfigurationType(any(ILaunchDescriptor.class),
+ any(ILaunchTarget.class));
+ doAnswer(invocation -> {
+ ILaunchTarget target = (ILaunchTarget) invocation.getArguments()[1];
+ return target.getTypeId().equals(ILaunchTargetManager.localLaunchTargetTypeId);
+ }).when(configProvider).supports(eq(descriptor), any(ILaunchTarget.class));
+
+ doReturn(elements.toArray(new IConfigurationElement[0])).when(extension).getConfigurationElements();
+
+ // Now inject the launch object
+ LaunchBarManager manager = new LaunchBarManager(false) {
+ @Override
+ IExtensionPoint getExtensionPoint() throws CoreException {
+ return extensionPoint;
+ }
+
+ @Override
+ ILaunchManager getLaunchManager() {
+ return launchManager;
+ }
+
+ @Override
+ ILaunchTargetManager getLaunchTargetManager() {
+ return targetManager;
+ }
+
+ };
+ manager.init();
+ manager.launchObjectAdded(launchObject);
+
+ assertEquals(descriptor, manager.getActiveLaunchDescriptor());
+ assertEquals(runMode, manager.getActiveLaunchMode());
+ assertEquals(ILaunchTargetManager.localLaunchTargetTypeId, manager.getActiveLaunchTarget().getTypeId());
+ assertEquals("Local", manager.getActiveLaunchTarget().getId());
+ assertEquals(launchConfig, manager.getActiveLaunchConfiguration());
+ }
+
+ @Test
+ public void descriptorWithTargetsTest() throws Exception {
+ // Create a descriptor derived from DefaultLaunchDescriptor whose type
+ // supports targets.
+ // Check the active config after adding the launchObject and make sure it came from the provider
+
+ // Mocking
+ final IExtensionPoint extensionPoint = mock(IExtensionPoint.class);
+ IExtension extension = mock(IExtension.class);
+ doReturn(new IExtension[] { extension }).when(extensionPoint).getExtensions();
+
+ List<IConfigurationElement> elements = new ArrayList<>();
+ IConfigurationElement element;
+
+ // fake launch object
+ String launchObject = "fakeObject";
+
+ // launch descriptor for that object
+ element = mock(IConfigurationElement.class);
+ elements.add(element);
+ doReturn("descriptorType").when(element).getName();
+ String descriptorTypeId = "fakeDescriptorType";
+ doReturn(descriptorTypeId).when(element).getAttribute("id");
+ ILaunchDescriptorType descriptorType = mock(ILaunchDescriptorType.class);
+ doReturn(descriptorType).when(element).createExecutableExtension("class");
+ ILaunchDescriptor descriptor = mock(DefaultLaunchDescriptor.class);
+ doReturn(true).when(descriptorType).supportsTargets();
+ doReturn(descriptor).when(descriptorType).getDescriptor(launchObject);
+ doReturn(descriptorType).when(descriptor).getType();
+ doReturn(launchObject).when(descriptor).getName();
+
+ // launch config type
+ final ILaunchManager launchManager = mock(ILaunchManager.class);
+ ILaunchMode runMode = mock(ILaunchMode.class);
+ String run = "run";
+ doReturn(run).when(runMode).getIdentifier();
+ doReturn(runMode).when(launchManager).getLaunchMode(run);
+ ILaunchMode debugMode = mock(ILaunchMode.class);
+ String debug = "debug";
+ doReturn(debug).when(debugMode).getIdentifier();
+ doReturn(debugMode).when(launchManager).getLaunchMode(debug);
+ doReturn(new ILaunchMode[] { runMode, debugMode }).when(launchManager).getLaunchModes();
+ ILaunchConfigurationType launchConfigType = mock(ILaunchConfigurationType.class);
+ String launchConfigTypeId = "fakeLaunchConfigType";
+ doReturn(launchConfigTypeId).when(launchConfigType).getIdentifier();
+ doReturn(true).when(launchConfigType).supportsMode(run);
+ doReturn(true).when(launchConfigType).supportsMode(debug);
+ doReturn(launchConfigType).when(launchManager).getLaunchConfigurationType(launchConfigTypeId);
+ doReturn(new ILaunchConfiguration[0]).when(launchManager).getLaunchConfigurations();
+
+ // configProvider
+ element = mock(IConfigurationElement.class);
+ elements.add(element);
+ doReturn("configProvider").when(element).getName();
+ doReturn(descriptorTypeId).when(element).getAttribute("descriptorType");
+ doReturn("10").when(element).getAttribute("priority");
+
+ ILaunchConfigurationProvider configProvider = mock(ILaunchConfigurationProvider.class);
+ doReturn(configProvider).when(element).createExecutableExtension("class");
+
+ final ILaunchTargetManager targetManager = mock(ILaunchTargetManager.class);
+ ILaunchTarget localTarget = mock(ILaunchTarget.class);
+ doReturn(ILaunchTargetManager.localLaunchTargetTypeId).when(localTarget).getTypeId();
+ doReturn("Local").when(localTarget).getId();
+ doReturn(new ILaunchTarget[] { localTarget }).when(targetManager).getLaunchTargets();
+
+ ILaunchConfiguration launchConfig = mock(ILaunchConfiguration.class);
+ doReturn(launchConfig).when(configProvider).getLaunchConfiguration(eq(descriptor), any(ILaunchTarget.class));
+ doReturn(launchConfigType).when(configProvider).getLaunchConfigurationType(any(ILaunchDescriptor.class),
+ any(ILaunchTarget.class));
+ doAnswer(invocation -> {
+ ILaunchTarget target = (ILaunchTarget) invocation.getArguments()[1];
+ return target.getTypeId().equals(ILaunchTargetManager.localLaunchTargetTypeId);
+ }).when(configProvider).supports(eq(descriptor), any(ILaunchTarget.class));
+
+ doReturn(elements.toArray(new IConfigurationElement[0])).when(extension).getConfigurationElements();
+
+ // Now inject the launch object
+ LaunchBarManager manager = new LaunchBarManager(false) {
+ @Override
+ IExtensionPoint getExtensionPoint() throws CoreException {
+ return extensionPoint;
+ }
+
+ @Override
+ ILaunchManager getLaunchManager() {
+ return launchManager;
+ }
+
+ @Override
+ ILaunchTargetManager getLaunchTargetManager() {
+ return targetManager;
+ }
+
+ };
+ manager.init();
+ manager.launchObjectAdded(launchObject);
+
+ assertEquals(launchConfig, manager.getActiveLaunchConfiguration());
+ }
+
+ // TODO - test that changing active target type produces a different launch
+ // config type
+ // TODO - test that settings are maintained after a restart
+ // TODO - test that two target types that map to the same desc type and
+ // config type share configs
+ // TODO - test duplicating a config. make sure it's default desc and same
+ // targets
+ // TODO - test project descriptors and stuff
+ // TODO - test descriptor takeovers (new descriptors on launchObjectChange
+
+}
diff --git a/launchbar/org.eclipse.launchbar.core.tests/src/org/eclipse/launchbar/core/internal/target/LaunchTargetTest.java b/launchbar/org.eclipse.launchbar.core.tests/src/org/eclipse/launchbar/core/internal/target/LaunchTargetTest.java
new file mode 100644
index 00000000000..3afd94b95c0
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core.tests/src/org/eclipse/launchbar/core/internal/target/LaunchTargetTest.java
@@ -0,0 +1,113 @@
+/*******************************************************************************
+ * Copyright (c) 2016, 2018 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.launchbar.core.internal.target;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.eclipse.launchbar.core.internal.Activator;
+import org.eclipse.launchbar.core.target.ILaunchTarget;
+import org.eclipse.launchbar.core.target.ILaunchTargetManager;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mockito;
+import org.osgi.service.prefs.Preferences;
+
+public class LaunchTargetTest {
+ private org.osgi.service.prefs.Preferences pref;
+
+ @Before
+ public void setUp() {
+ pref = Mockito.mock(Preferences.class);
+ }
+
+ @Test
+ public void testRemoveLaunchTarget() {
+ ILaunchTargetManager manager = Activator.getLaunchTargetManager();
+ // Account for pre-populated targets
+ int baseSize = manager.getLaunchTargets().length;
+ ILaunchTarget target1 = manager.addLaunchTarget("mytype", "target1");
+ ILaunchTarget target2 = manager.addLaunchTarget("mytype", "target2");
+ Set<ILaunchTarget> targetSet = new HashSet<>(Arrays.asList(manager.getLaunchTargets()));
+ assertEquals(baseSize + 2, targetSet.size());
+ assertTrue(targetSet.contains(target1));
+ assertTrue(targetSet.contains(target2));
+ manager.removeLaunchTarget(target2);
+ targetSet = new HashSet<>(Arrays.asList(manager.getLaunchTargets()));
+ assertEquals(baseSize + 1, targetSet.size());
+ assertTrue(targetSet.contains(target1));
+ assertFalse(targetSet.contains(target2));
+ manager.removeLaunchTarget(target1);
+ targetSet = new HashSet<>(Arrays.asList(manager.getLaunchTargets()));
+ assertEquals(baseSize, targetSet.size());
+ assertFalse(targetSet.contains(target1));
+ assertFalse(targetSet.contains(target2));
+ }
+
+ @Test
+ public void testEquals() {
+ LaunchTarget t1 = new LaunchTarget("a", "b", pref);
+ LaunchTarget t2 = new LaunchTarget("a", "b", pref);
+ assertEquals(t1, t2);
+ LaunchTarget t3 = new LaunchTarget("a", "a", pref);
+ assertNotEquals(t1, t3);
+ LaunchTarget t4 = new LaunchTarget("b", "a", pref);
+ assertNotEquals(t4, t3);
+ assertNotEquals(t4, null);
+ }
+
+ @Test
+ public void testEqualsHashode() {
+ LaunchTarget t1 = new LaunchTarget("a", "b", pref);
+ LaunchTarget t2 = new LaunchTarget("a", "b", pref);
+ assertEquals(t1.hashCode(), t2.hashCode());
+ }
+
+ @Test
+ public void testBasic() {
+ LaunchTarget t1 = new LaunchTarget("a", "b", pref);
+ ILaunchTarget save = t1.getWorkingCopy().save();
+ assertEquals(t1, save);
+ }
+
+ @Test
+ public void testNullTarget() {
+ ILaunchTarget nt = ILaunchTarget.NULL_TARGET;
+ assertEquals("b", nt.getAttribute("a", "b"));
+ }
+
+ @Test(expected = NullPointerException.class)
+ public void testNPEInConstrPref() {
+ new LaunchTarget("a", "b", null);
+ }
+
+ @Test(expected = NullPointerException.class)
+ public void testNPEInConstrType() {
+ new LaunchTarget(null, "b", pref);
+ }
+
+ @Test(expected = NullPointerException.class)
+ public void testNPEInConstrId() {
+ new LaunchTarget("type", null, pref);
+ }
+
+ @Test(expected = UnsupportedOperationException.class)
+ public void testWConNULL() {
+ ILaunchTarget nt = ILaunchTarget.NULL_TARGET;
+ nt.getWorkingCopy();
+ }
+}
diff --git a/launchbar/org.eclipse.launchbar.core.tests/src/org/eclipse/launchbar/core/tests/AutomatedIntegrationSuite.java b/launchbar/org.eclipse.launchbar.core.tests/src/org/eclipse/launchbar/core/tests/AutomatedIntegrationSuite.java
new file mode 100644
index 00000000000..4fb036d17bb
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core.tests/src/org/eclipse/launchbar/core/tests/AutomatedIntegrationSuite.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Kichwa Coders Canada and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.launchbar.core.tests;
+
+import org.eclipse.launchbar.core.PerTargetLaunchConfigProviderTest;
+import org.eclipse.launchbar.core.internal.LaunchBarManager2Test;
+import org.eclipse.launchbar.core.internal.LaunchBarManagerTest;
+import org.eclipse.launchbar.core.internal.target.LaunchTargetTest;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+
+@RunWith(Suite.class)
+@Suite.SuiteClasses({ TargetAttributesTest.class, LaunchTargetTest.class, LaunchBarManager2Test.class,
+ LaunchBarManagerTest.class, PerTargetLaunchConfigProviderTest.class })
+public class AutomatedIntegrationSuite {
+
+}
diff --git a/launchbar/org.eclipse.launchbar.core.tests/src/org/eclipse/launchbar/core/tests/TargetAttributesTest.java b/launchbar/org.eclipse.launchbar.core.tests/src/org/eclipse/launchbar/core/tests/TargetAttributesTest.java
new file mode 100644
index 00000000000..d29dfbe2086
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core.tests/src/org/eclipse/launchbar/core/tests/TargetAttributesTest.java
@@ -0,0 +1,46 @@
+package org.eclipse.launchbar.core.tests;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
+
+import org.eclipse.launchbar.core.internal.Activator;
+import org.eclipse.launchbar.core.target.ILaunchTarget;
+import org.eclipse.launchbar.core.target.ILaunchTargetManager;
+import org.eclipse.launchbar.core.target.ILaunchTargetWorkingCopy;
+import org.junit.Test;
+
+public class TargetAttributesTest {
+
+ @Test
+ public void testAttribute() {
+ ILaunchTargetManager manager = Activator.getLaunchTargetManager();
+ String targetType = "testType";
+ String targetId = "testTarget";
+ String attributeKey = "testKey";
+ String attributeValue = "testValue";
+ // Make sure the target doesn't exist
+ ILaunchTarget target = manager.getLaunchTarget(targetType, targetId);
+ if (target != null) {
+ manager.removeLaunchTarget(target);
+ }
+ // Add the target
+ target = manager.addLaunchTarget(targetType, targetId);
+ // Attribute should be empty
+ assertEquals(target.getAttribute(attributeKey, ""), "");
+ // Set the attribute and make sure it's set
+ ILaunchTargetWorkingCopy wc = target.getWorkingCopy();
+ assertNotEquals(target, wc);
+ wc.setAttribute(attributeKey, attributeValue);
+ assertEquals(wc.getAttribute(attributeKey, ""), attributeValue);
+ ILaunchTarget savedTarget = wc.save();
+ // Make sure we get our original back
+ assertEquals(target, savedTarget);
+ assertEquals(target.getAttribute(attributeKey, ""), attributeValue);
+ // Make sure remove removes the attribute
+ manager.removeLaunchTarget(target);
+ target = manager.addLaunchTarget(targetType, targetId);
+ assertEquals(target.getAttribute(attributeKey, ""), "");
+ // Cleanup
+ manager.removeLaunchTarget(target);
+ }
+}
diff --git a/launchbar/org.eclipse.launchbar.core/.classpath b/launchbar/org.eclipse.launchbar.core/.classpath
new file mode 100644
index 00000000000..e801ebfb468
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/launchbar/org.eclipse.launchbar.core/.gitignore b/launchbar/org.eclipse.launchbar.core/.gitignore
new file mode 100644
index 00000000000..ae3c1726048
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/launchbar/org.eclipse.launchbar.core/.options b/launchbar/org.eclipse.launchbar.core/.options
new file mode 100644
index 00000000000..e66b4dfa81e
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core/.options
@@ -0,0 +1,2 @@
+org.eclipse.launchbar.core/debug=true
+org.eclipse.launchbar.core/debug/launchbar=true
diff --git a/launchbar/org.eclipse.launchbar.core/.project b/launchbar/org.eclipse.launchbar.core/.project
new file mode 100644
index 00000000000..48a27f43ebe
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.launchbar.core</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+ </natures>
+</projectDescription>
diff --git a/launchbar/org.eclipse.launchbar.core/.settings/org.eclipse.core.resources.prefs b/launchbar/org.eclipse.launchbar.core/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/launchbar/org.eclipse.launchbar.core/.settings/org.eclipse.jdt.core.prefs b/launchbar/org.eclipse.launchbar.core/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..e3a8104f9ca
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/releng/org.eclipse.cdt.testing/.settings/org.eclipse.jdt.launching.prefs b/launchbar/org.eclipse.launchbar.core/.settings/org.eclipse.jdt.launching.prefs
index f8a131b56e0..f8a131b56e0 100644
--- a/releng/org.eclipse.cdt.testing/.settings/org.eclipse.jdt.launching.prefs
+++ b/launchbar/org.eclipse.launchbar.core/.settings/org.eclipse.jdt.launching.prefs
diff --git a/launchbar/org.eclipse.launchbar.core/.settings/org.eclipse.jdt.ui.prefs b/launchbar/org.eclipse.launchbar.core/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.core/.settings/org.eclipse.pde.api.tools.prefs b/launchbar/org.eclipse.launchbar.core/.settings/org.eclipse.pde.api.tools.prefs
index ec9fbf321d0..ec9fbf321d0 100644
--- a/xlc/org.eclipse.cdt.managedbuilder.xlc.core/.settings/org.eclipse.pde.api.tools.prefs
+++ b/launchbar/org.eclipse.launchbar.core/.settings/org.eclipse.pde.api.tools.prefs
diff --git a/xlc/org.eclipse.cdt.errorparsers.xlc/.settings/org.eclipse.pde.prefs b/launchbar/org.eclipse.launchbar.core/.settings/org.eclipse.pde.prefs
index d2dc703ba9e..d2dc703ba9e 100644
--- a/xlc/org.eclipse.cdt.errorparsers.xlc/.settings/org.eclipse.pde.prefs
+++ b/launchbar/org.eclipse.launchbar.core/.settings/org.eclipse.pde.prefs
diff --git a/launchbar/org.eclipse.launchbar.core/META-INF/MANIFEST.MF b/launchbar/org.eclipse.launchbar.core/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..f585102b502
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core/META-INF/MANIFEST.MF
@@ -0,0 +1,18 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.launchbar.core;singleton:=true
+Bundle-Version: 2.4.300.qualifier
+Bundle-Activator: org.eclipse.launchbar.core.internal.Activator
+Bundle-Vendor: %providerName
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.debug.core,
+ org.eclipse.core.expressions
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.launchbar.core,
+ org.eclipse.launchbar.core.internal;x-friends:="org.eclipse.launchbar.core.tests,org.eclipse.launchbar.ui",
+ org.eclipse.launchbar.core.target,
+ org.eclipse.launchbar.core.target.launch
+Automatic-Module-Name: org.eclipse.launchbar.core
+Bundle-Localization: plugin
diff --git a/launchbar/org.eclipse.launchbar.core/about.html b/launchbar/org.eclipse.launchbar.core/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/launchbar/org.eclipse.launchbar.core/build.properties b/launchbar/org.eclipse.launchbar.core/build.properties
new file mode 100644
index 00000000000..18d0150dfcf
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core/build.properties
@@ -0,0 +1,9 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ plugin.properties,\
+ about.html,\
+ schema/
+src.includes = about.html
diff --git a/launchbar/org.eclipse.launchbar.core/plugin.properties b/launchbar/org.eclipse.launchbar.core/plugin.properties
new file mode 100644
index 00000000000..f571f35d922
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core/plugin.properties
@@ -0,0 +1,14 @@
+##################################################################################
+# Copyright (c) 2020 Torbjörn Svensson and others. All rights reserved.
+# This program and the accompanying materials are made available under the terms
+# of the Eclipse Public License 2.0 which accompanies this distribution, and is
+# available at https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Torbjörn Svensson - initial API and implementation
+##################################################################################
+
+pluginName = LaunchBar Core
+providerName = Eclipse CDT
diff --git a/launchbar/org.eclipse.launchbar.core/plugin.xml b/launchbar/org.eclipse.launchbar.core/plugin.xml
new file mode 100644
index 00000000000..207ec12cd0a
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core/plugin.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension-point id="launchBarContributions" name="Launch Bar Contributions" schema="schema/launchBarContributions.exsd"/>
+ <extension-point id="launchTargetTypes" name="Launch Target Types" schema="schema/launchTargetTypes.exsd"/>
+ <extension
+ point="org.eclipse.launchbar.core.launchBarContributions">
+ <objectProvider
+ class="org.eclipse.launchbar.core.internal.ProjectLaunchObjectProvider"
+ id="org.eclipse.launchbar.core.objectProvider.project">
+ </objectProvider>
+ <descriptorType
+ class="org.eclipse.launchbar.core.DefaultLaunchDescriptorType"
+ id="org.eclipse.launchbar.core.descriptorType.default"
+ priority="0">
+ <enablement>
+ <instanceof
+ value="org.eclipse.debug.core.ILaunchConfiguration">
+ </instanceof></enablement>
+ </descriptorType>
+ <configProvider
+ class="org.eclipse.launchbar.core.DefaultLaunchConfigProvider"
+ descriptorType="org.eclipse.launchbar.core.descriptorType.default"
+ priority="0">
+ <enablement>
+ </enablement>
+ </configProvider>
+ </extension>
+ <extension
+ point="org.eclipse.launchbar.core.launchTargetTypes">
+ <launchTargetType
+ id="org.eclipse.launchbar.core.launchTargetType.local"
+ provider="org.eclipse.launchbar.core.internal.target.LocalLaunchTargetProvider">
+ </launchTargetType>
+ </extension>
+ <extension
+ point="org.eclipse.core.expressions.propertyTesters">
+ <propertyTester
+ class="org.eclipse.launchbar.core.internal.target.LaunchTargetPropertyTester"
+ id="org.eclipse.launchbar.core.targetPropertyTester"
+ namespace="org.eclipse.launchbar.core"
+ properties="launchTargetType"
+ type="org.eclipse.launchbar.core.target.ILaunchTarget">
+ </propertyTester>
+ </extension>
+
+</plugin>
diff --git a/launchbar/org.eclipse.launchbar.core/schema/launchBarContributions.exsd b/launchbar/org.eclipse.launchbar.core/schema/launchBarContributions.exsd
new file mode 100644
index 00000000000..6fa1fe86532
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core/schema/launchBarContributions.exsd
@@ -0,0 +1,208 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.launchbar.core" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+ <appinfo>
+ <meta.schema plugin="org.eclipse.launchbar.core" id="launchBarContributions" name="Launch Bar Contributions"/>
+ </appinfo>
+ <documentation>
+ [Enter description of this extension point.]
+ </documentation>
+ </annotation>
+
+ <include schemaLocation="schema://org.eclipse.core.expressions/schema/expressionLanguage.exsd"/>
+
+ <element name="extension">
+ <annotation>
+ <appinfo>
+ <meta.element />
+ </appinfo>
+ </annotation>
+ <complexType>
+ <sequence minOccurs="0" maxOccurs="unbounded">
+ <element ref="descriptorType"/>
+ <element ref="configProvider"/>
+ <element ref="objectProvider"/>
+ </sequence>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute translatable="true"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="descriptorType">
+ <annotation>
+ <documentation>
+ A descriptor represents an object that can be converted into a launch configuration. The typical example is IProject. Launch configurations can be created that launch the build output of the project.
+ </documentation>
+ </annotation>
+ <complexType>
+ <sequence>
+ <element ref="enablement" minOccurs="0" maxOccurs="1"/>
+ </sequence>
+ <attribute name="id" type="string" use="required">
+ <annotation>
+ <documentation>
+ Global descriptor type id. I.e. com.example.mytype
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="priority" type="string" use="required">
+ <annotation>
+ <documentation>
+ Priority of the descriptor, values from 1 to 100.
+Lower values represent lower priority.
+I.e. descriptor with priority 10 will override
+descriptor with priority 5. Priority 0 is reserved for default descriptor.
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="class" type="string" use="required">
+ <annotation>
+ <documentation>
+ Class that implements ILaunchDescriptorType
+ </documentation>
+ <appinfo>
+ <meta.attribute kind="java" basedOn=":org.eclipse.launchbar.core.ILaunchDescriptorType"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="configProvider">
+ <annotation>
+ <documentation>
+ Descriptor types and target types map to a launch configuration type. Configurations of that type knows how to launch for the desciptor on targets of that type.
+ </documentation>
+ </annotation>
+ <complexType>
+ <sequence>
+ <element ref="enablement" minOccurs="0" maxOccurs="1"/>
+ </sequence>
+ <attribute name="descriptorType" type="string" use="required">
+ <annotation>
+ <documentation>
+ Id of the descriptor type defined in descriptorType element (can be from another extension)
+ </documentation>
+ <appinfo>
+ <meta.attribute kind="identifier" basedOn="org.eclipse.launchbar.core.launchBarContributions/descriptorType/@id"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ <attribute name="priority" type="string" use="required">
+ <annotation>
+ <documentation>
+ Priority of the provider, values from 1 to 100.
+Lower values represent lower priority.
+I.e. provider with priority 10 will be checked before
+provider with priority 5. Priority 0 is reserved for default provider.
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="class" type="string" use="required">
+ <annotation>
+ <documentation>
+ Class that implements ILaunchConfigurationProvider
+ </documentation>
+ <appinfo>
+ <meta.attribute kind="java" basedOn=":org.eclipse.launchbar.core.ILaunchConfigurationProvider"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ <attribute name="supportsNullTarget" type="boolean">
+ <annotation>
+ <documentation>
+ Does the descriptor managed by this config provider support the null target.
+ </documentation>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="objectProvider">
+ <annotation>
+ <documentation>
+ Object providers pump launch objects into the model as they are created and removed. These are used to create descriptors for these objects.
+ </documentation>
+ </annotation>
+ <complexType>
+ <attribute name="id" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="class" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute kind="java" basedOn=":org.eclipse.launchbar.core.ILaunchObjectProvider"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="since"/>
+ </appinfo>
+ <documentation>
+ [Enter the first release in which this extension point appears.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="examples"/>
+ </appinfo>
+ <documentation>
+ [Enter extension point usage example here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="apiinfo"/>
+ </appinfo>
+ <documentation>
+ [Enter API information here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="implementation"/>
+ </appinfo>
+ <documentation>
+ [Enter information about supplied implementation of this extension point.]
+ </documentation>
+ </annotation>
+
+
+</schema>
diff --git a/launchbar/org.eclipse.launchbar.core/schema/launchTargetTypes.exsd b/launchbar/org.eclipse.launchbar.core/schema/launchTargetTypes.exsd
new file mode 100644
index 00000000000..290bf844499
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core/schema/launchTargetTypes.exsd
@@ -0,0 +1,109 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.launchbar.core" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+ <appinfo>
+ <meta.schema plugin="org.eclipse.launchbar.core" id="launchTargetTypes" name="Launch Target Types"/>
+ </appinfo>
+ <documentation>
+ [Enter description of this extension point.]
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <annotation>
+ <appinfo>
+ <meta.element />
+ </appinfo>
+ </annotation>
+ <complexType>
+ <sequence>
+ <element ref="launchTargetType" minOccurs="1" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute translatable="true"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="launchTargetType">
+ <complexType>
+ <attribute name="id" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="provider" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute kind="java" basedOn=":org.eclipse.launchbar.core.target.ILaunchTargetProvider"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="since"/>
+ </appinfo>
+ <documentation>
+ [Enter the first release in which this extension point appears.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="examples"/>
+ </appinfo>
+ <documentation>
+ [Enter extension point usage example here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="apiinfo"/>
+ </appinfo>
+ <documentation>
+ [Enter API information here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="implementation"/>
+ </appinfo>
+ <documentation>
+ [Enter information about supplied implementation of this extension point.]
+ </documentation>
+ </annotation>
+
+
+</schema>
diff --git a/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/AbstractLaunchConfigProvider.java b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/AbstractLaunchConfigProvider.java
new file mode 100644
index 00000000000..c6eb02e0978
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/AbstractLaunchConfigProvider.java
@@ -0,0 +1,80 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Doug Schaefer
+ *******************************************************************************/
+package org.eclipse.launchbar.core;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.debug.core.DebugPlugin;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.ILaunchConfigurationType;
+import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
+import org.eclipse.debug.core.ILaunchManager;
+import org.eclipse.launchbar.core.internal.Activator;
+import org.eclipse.launchbar.core.target.ILaunchTarget;
+
+/**
+ * Common launch config provider. Manages creating launch configurations and
+ * ensuring duplicates are managed properly.
+ */
+public abstract class AbstractLaunchConfigProvider implements ILaunchConfigurationProvider {
+
+ private static final String ATTR_ORIGINAL_NAME = Activator.PLUGIN_ID + ".originalName"; //$NON-NLS-1$
+ private static final String ATTR_PROVIDER_CLASS = Activator.PLUGIN_ID + ".providerClass"; //$NON-NLS-1$
+
+ protected ILaunchConfiguration createLaunchConfiguration(ILaunchDescriptor descriptor, ILaunchTarget target)
+ throws CoreException {
+ ILaunchManager launchManager = DebugPlugin.getDefault().getLaunchManager();
+ String name = launchManager.generateLaunchConfigurationName(descriptor.getName());
+ ILaunchConfigurationType type = getLaunchConfigurationType(descriptor, target);
+ ILaunchConfigurationWorkingCopy workingCopy = type.newInstance(null, name);
+
+ populateLaunchConfiguration(descriptor, target, workingCopy);
+
+ return workingCopy.doSave();
+ }
+
+ protected void populateLaunchConfiguration(ILaunchDescriptor descriptor, ILaunchTarget target,
+ ILaunchConfigurationWorkingCopy workingCopy) throws CoreException {
+ // Leave our breadcrumb
+ workingCopy.setAttribute(ATTR_ORIGINAL_NAME, workingCopy.getName());
+ workingCopy.setAttribute(ATTR_PROVIDER_CLASS, getClass().getName());
+ }
+
+ @Override
+ public boolean launchDescriptorMatches(ILaunchDescriptor descriptor, ILaunchConfiguration configuration,
+ ILaunchTarget target) throws CoreException {
+ ILaunchConfiguration lc = descriptor.getAdapter(ILaunchConfiguration.class);
+ if (lc == null)
+ return false;
+ return configuration.getName().equals(lc.getName());
+ }
+
+ protected boolean ownsLaunchConfiguration(ILaunchConfiguration configuration) throws CoreException {
+ if (!configuration.exists()) {
+ // can't own it if it doesn't exist
+ return false;
+ }
+
+ if (configuration.getAttribute(ATTR_PROVIDER_CLASS, "").equals(getClass().getName())) { //$NON-NLS-1$
+ // We provided the configuration but we need to check if this is a duplicate and
+ // not own it. Check the original name and if there is still a config with that
+ // name, this is the duplicate. Otherwise it's simply a rename
+ String origName = configuration.getAttribute(ATTR_ORIGINAL_NAME, ""); //$NON-NLS-1$
+ return origName.equals(configuration.getName())
+ || !DebugPlugin.getDefault().getLaunchManager().isExistingLaunchConfigurationName(origName);
+ } else {
+ return false;
+ }
+ }
+
+}
diff --git a/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/DefaultLaunchConfigProvider.java b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/DefaultLaunchConfigProvider.java
new file mode 100644
index 00000000000..73ec61eb8f9
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/DefaultLaunchConfigProvider.java
@@ -0,0 +1,82 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Doug Schaefer
+ *******************************************************************************/
+package org.eclipse.launchbar.core;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.ILaunchConfigurationType;
+import org.eclipse.launchbar.core.target.ILaunchTarget;
+import org.eclipse.launchbar.core.target.ILaunchTargetManager;
+
+/**
+ * The launch config provider for the default descriptor which is the launch
+ * config itself.
+ *
+ * Override this class and register an extension if you want to support targets
+ * other than the local connection.
+ */
+public class DefaultLaunchConfigProvider implements ILaunchConfigurationProvider {
+ @Override
+ public boolean supports(ILaunchDescriptor descriptor, ILaunchTarget target) throws CoreException {
+ // Only supports Local connection
+ return target != null && target.getTypeId().equals(ILaunchTargetManager.localLaunchTargetTypeId);
+ }
+
+ @Override
+ public ILaunchConfigurationType getLaunchConfigurationType(ILaunchDescriptor descriptor, ILaunchTarget target)
+ throws CoreException {
+ return descriptor.getAdapter(ILaunchConfiguration.class).getType();
+ }
+
+ @Override
+ public ILaunchConfiguration getLaunchConfiguration(ILaunchDescriptor descriptor, ILaunchTarget target)
+ throws CoreException {
+ return descriptor.getAdapter(ILaunchConfiguration.class);
+ }
+
+ @Override
+ public boolean launchConfigurationAdded(ILaunchConfiguration configuration) throws CoreException {
+ // return false so that the configuration can become a launch object
+ return false;
+ }
+
+ @Override
+ public boolean launchConfigurationChanged(ILaunchConfiguration configuration) throws CoreException {
+ return false;
+ }
+
+ @Override
+ public boolean launchConfigurationRemoved(ILaunchConfiguration configuration) throws CoreException {
+ return false;
+ }
+
+ @Override
+ public void launchDescriptorRemoved(ILaunchDescriptor descriptor) throws CoreException {
+ // nothing to do
+ }
+
+ @Override
+ public void launchTargetRemoved(ILaunchTarget target) throws CoreException {
+ // nothing to do
+ }
+
+ @Override
+ public boolean launchDescriptorMatches(ILaunchDescriptor descriptor, ILaunchConfiguration configuration,
+ ILaunchTarget target) throws CoreException {
+ ILaunchConfiguration lc = descriptor.getAdapter(ILaunchConfiguration.class);
+ if (lc == null)
+ return false;
+ return configuration.getName().equals(lc.getName());
+ }
+}
diff --git a/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/DefaultLaunchDescriptor.java b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/DefaultLaunchDescriptor.java
new file mode 100644
index 00000000000..4dba61e0916
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/DefaultLaunchDescriptor.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2014, 2017 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Doug Schaefer
+ *******************************************************************************/
+package org.eclipse.launchbar.core;
+
+import org.eclipse.core.runtime.PlatformObject;
+import org.eclipse.debug.core.ILaunchConfiguration;
+
+/**
+ * A special launch descriptor that managed configurations that aren't owned by other
+ * descriptors.
+ *
+ * @since 2.3
+ */
+public class DefaultLaunchDescriptor extends PlatformObject implements ILaunchDescriptor {
+
+ private final ILaunchDescriptorType type;
+ private final ILaunchConfiguration configuration;
+
+ public DefaultLaunchDescriptor(ILaunchDescriptorType type, ILaunchConfiguration configuration) {
+ this.type = type;
+ this.configuration = configuration;
+ }
+
+ @Override
+ public <T> T getAdapter(Class<T> adapter) {
+ if (ILaunchConfiguration.class.equals(adapter)) {
+ return adapter.cast(configuration);
+ }
+
+ T obj = configuration.getAdapter(adapter);
+ if (obj != null) {
+ return obj;
+ }
+
+ return super.getAdapter(adapter);
+ }
+
+ @Override
+ public String getName() {
+ return configuration.getName();
+ }
+
+ @Override
+ public ILaunchDescriptorType getType() {
+ return type;
+ }
+
+}
diff --git a/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/DefaultLaunchDescriptorType.java b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/DefaultLaunchDescriptorType.java
new file mode 100644
index 00000000000..f00b8237a35
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/DefaultLaunchDescriptorType.java
@@ -0,0 +1,84 @@
+/*******************************************************************************
+ * Copyright (c) 2014, 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Doug Schaefer
+ *******************************************************************************/
+package org.eclipse.launchbar.core;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.ILaunchConfigurationType;
+import org.eclipse.debug.core.ILaunchManager;
+import org.eclipse.launchbar.core.internal.Activator;
+
+/**
+ * A special descriptor type that managed configurations that aren't owned by
+ * other descriptor types.
+ *
+ * @since 2.3
+ */
+public class DefaultLaunchDescriptorType implements ILaunchDescriptorType {
+
+ public static final String ID = Activator.PLUGIN_ID + ".descriptorType.default"; //$NON-NLS-1$
+
+ private Map<ILaunchConfiguration, DefaultLaunchDescriptor> descriptors = new HashMap<>();
+
+ @Override
+ public boolean supportsTargets() throws CoreException {
+ // Old style launch configs do not support targets.
+ // Though if yours does, you can always subclass and override this.
+ return false;
+ }
+
+ /**
+ * Used to filter out private and external tools builders
+ *
+ * @param config
+ * @return
+ * @throws CoreException
+ */
+ public static boolean isPublic(ILaunchConfiguration config) throws CoreException {
+ ILaunchConfigurationType type = config.getType();
+ if (type == null) {
+ return false;
+ }
+
+ String category = type.getCategory();
+
+ return type.isPublic() && !(config.getAttribute(ILaunchManager.ATTR_PRIVATE, false))
+ && !("org.eclipse.ui.externaltools.builder".equals(category)); //$NON-NLS-1$
+ }
+
+ @Override
+ public ILaunchDescriptor getDescriptor(Object launchObject) {
+ if (launchObject instanceof ILaunchConfiguration) {
+ ILaunchConfiguration config = (ILaunchConfiguration) launchObject;
+ try {
+ if (isPublic(config)) {
+ DefaultLaunchDescriptor descriptor = descriptors.get(config);
+ if (descriptor == null) {
+ descriptor = new DefaultLaunchDescriptor(this, config);
+ descriptors.put(config, descriptor);
+ }
+ return descriptor;
+ }
+ } catch (CoreException ce) {
+ Activator.log(ce.getStatus());
+ }
+ }
+
+ return null;
+ }
+
+}
diff --git a/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/ILaunchBarListener.java b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/ILaunchBarListener.java
new file mode 100644
index 00000000000..a7800174345
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/ILaunchBarListener.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2016 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.launchbar.core;
+
+import org.eclipse.debug.core.ILaunchMode;
+import org.eclipse.launchbar.core.target.ILaunchTarget;
+
+/**
+ * Listener that can be installed on launch bar to listen for state changes.
+ * {@link ILaunchBarManager#addListener(ILaunchBarListener)}.
+ *
+ * <code>
+ * Activator.getService(ILaunchBarManager.class).addListener(new ILaunchBarListener(){
+ * public void activeLaunchTargetChanged(ILaunchTarget target) {
+ * // do something
+ * }
+ * });
+ * </code>
+ */
+public interface ILaunchBarListener {
+ default void activeLaunchDescriptorChanged(ILaunchDescriptor descriptor) {
+ }
+
+ default void activeLaunchModeChanged(ILaunchMode mode) {
+ }
+
+ default void activeLaunchTargetChanged(ILaunchTarget target) {
+ }
+
+ default void launchTargetsChanged() {
+ }
+} \ No newline at end of file
diff --git a/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/ILaunchBarManager.java b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/ILaunchBarManager.java
new file mode 100644
index 00000000000..44121189c75
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/ILaunchBarManager.java
@@ -0,0 +1,186 @@
+/*******************************************************************************
+ * Copyright (c) 2014 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Doug Schaefer
+ *******************************************************************************/
+package org.eclipse.launchbar.core;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.ILaunchConfigurationListener;
+import org.eclipse.debug.core.ILaunchConfigurationType;
+import org.eclipse.debug.core.ILaunchMode;
+import org.eclipse.launchbar.core.target.ILaunchTarget;
+
+/**
+ * Interface to the Launch Bar Manager.
+ *
+ * @noimplement This interface is not intended to be implemented by clients.
+ */
+public interface ILaunchBarManager extends ILaunchConfigurationListener {
+
+ /**
+ * A launch object has been added. Create a matching launch descriptor if
+ * available.
+ *
+ * @param element launch object
+ * @return the launch descriptor that got created, null of none was
+ * @throws CoreException
+ */
+ ILaunchDescriptor launchObjectAdded(Object launchObject) throws CoreException;
+
+ /**
+ * A launch object has been removed. Remove the associated launch descriptor if
+ * there is one.
+ *
+ * @param element launch object
+ * @throws CoreException
+ */
+ void launchObjectRemoved(Object launchObject) throws CoreException;
+
+ /**
+ * A launch object has changed in some way that affects the launch bar.
+ *
+ * @param launchObject
+ * @throws CoreException
+ */
+ void launchObjectChanged(Object launchObject) throws CoreException;
+
+ /**
+ * Add a listener that can react to launch bar changes
+ *
+ * @param listener
+ */
+ void addListener(ILaunchBarListener listener);
+
+ /**
+ * Remove a listener
+ *
+ * @param listener
+ */
+ void removeListener(ILaunchBarListener listener);
+
+ /**
+ * Return the type id for the given launch descriptor type. This is defined in
+ * the extension point that defines the type.
+ *
+ * @param descType descriptor type
+ * @return the type id for the descriptor type
+ */
+ String getDescriptorTypeId(ILaunchDescriptorType descType) throws CoreException;
+
+ /**
+ * Returns the active launch descriptor.
+ *
+ * @return active launch descriptor
+ * @throws CoreException
+ */
+ ILaunchDescriptor getActiveLaunchDescriptor() throws CoreException;
+
+ /**
+ * Returns the active launch mode.
+ *
+ * @return active launch mode
+ * @throws CoreException
+ */
+ ILaunchMode getActiveLaunchMode() throws CoreException;
+
+ /**
+ * Returns the active launch target.
+ *
+ * @return active launch target
+ * @throws CoreException
+ */
+ ILaunchTarget getActiveLaunchTarget() throws CoreException;
+
+ /**
+ * Returns the active launch configuration as derived from the active descriptor
+ * and target.
+ *
+ * @return active launch configuration
+ * @throws CoreException
+ */
+ ILaunchConfiguration getActiveLaunchConfiguration() throws CoreException;
+
+ /**
+ * Returns the launch configuration derived from the given launch descriptor and
+ * target.
+ *
+ * @param desc launch descriptor
+ * @param target launch target
+ * @return launch configuration
+ * @throws CoreException
+ */
+ ILaunchConfiguration getLaunchConfiguration(ILaunchDescriptor desc, ILaunchTarget target) throws CoreException;
+
+ /**
+ * Returns the launch configuration type used for configurations that are
+ * derived from the given launch descriptor and launch target without creating a
+ * launch configuration.
+ *
+ * @param desc launch descriptor
+ * @param target launch target
+ * @return launch configuration type
+ * @throws CoreException
+ */
+ ILaunchConfigurationType getLaunchConfigurationType(ILaunchDescriptor desc, ILaunchTarget target)
+ throws CoreException;
+
+ /**
+ * Returns all know launch descriptors.
+ *
+ * @return launch descriptors
+ * @throws CoreException
+ */
+ ILaunchDescriptor[] getLaunchDescriptors() throws CoreException;
+
+ /**
+ * Set the active launch descriptor.
+ *
+ * @param desc launch descriptor
+ * @throws CoreException
+ */
+ void setActiveLaunchDescriptor(ILaunchDescriptor desc) throws CoreException;
+
+ /**
+ * Return all launch modes for the active launch descriptor and active launch target.
+ *
+ * @return launch modes
+ * @throws CoreException
+ */
+ ILaunchMode[] getLaunchModes() throws CoreException;
+
+ /**
+ * Set the active launch mode.
+ *
+ * @param mode launch mode
+ * @throws CoreException
+ */
+ void setActiveLaunchMode(ILaunchMode mode) throws CoreException;
+
+ /**
+ * Return all launch targets supported by the given launch descriptor.
+ *
+ * @param desc launch descriptor
+ * @return launch targets
+ * @throws CoreException
+ */
+ ILaunchTarget[] getLaunchTargets(ILaunchDescriptor desc) throws CoreException;
+
+ /**
+ * Set the active launch target.
+ *
+ * @param target launch target
+ * @throws CoreException
+ */
+ void setActiveLaunchTarget(ILaunchTarget target) throws CoreException;
+
+}
diff --git a/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/ILaunchConfigurationProvider.java b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/ILaunchConfigurationProvider.java
new file mode 100644
index 00000000000..5cabc260af5
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/ILaunchConfigurationProvider.java
@@ -0,0 +1,134 @@
+/*******************************************************************************
+ * Copyright (c) 2014, 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - initial
+ *******************************************************************************/
+package org.eclipse.launchbar.core;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.ILaunchConfigurationType;
+import org.eclipse.launchbar.core.target.ILaunchTarget;
+
+/**
+ * The provider of launch configurations of a given type for a given descriptor
+ * type and a given target type.
+ *
+ * It is recommended to extend {@link AbstractLaunchConfigProvider} or one of
+ * it's subclasses instead of implementing this directly.
+ */
+public interface ILaunchConfigurationProvider {
+ /**
+ * Does this config provider provide launch configurations for the
+ * combination of descriptor and target.
+ *
+ * Note: this is called when filtering targets for a descriptor. Processing
+ * should be minimal.
+ *
+ * @param descriptor
+ * @param target
+ * @return true if target is supported, false otherwise.
+ */
+ boolean supports(ILaunchDescriptor descriptor, ILaunchTarget target) throws CoreException;
+
+ /**
+ * Return the launch configuation type for the descriptor and target.
+ *
+ * @param descriptor
+ * @param target
+ * launch configuration type or null if not supported
+ * @return
+ * @throws CoreException
+ */
+ ILaunchConfigurationType getLaunchConfigurationType(ILaunchDescriptor descriptor, ILaunchTarget target)
+ throws CoreException;
+
+ /**
+ * Create a launch configuration for the descriptor to launch on the target.
+ *
+ * @param descriptor
+ * the descriptor to create the config for
+ * @param target
+ * the target to launch the config on
+ * @return launch configuration
+ * @throws CoreException
+ */
+ ILaunchConfiguration getLaunchConfiguration(ILaunchDescriptor descriptor, ILaunchTarget target)
+ throws CoreException;
+
+ /**
+ * Return true if given descriptor is associated with given launch configuration.
+ * I.e. if getLaunchConfiguration(descriptor, target) returns a launch configuration,
+ * calling launchDescriptorMatches(descriptor, configuration, target) should return true.
+ *
+ * This method is used to activate descriptor when launch happens, return false all the time would mean
+ * launch would track launches of this specific descriptor (if they occur outside of launchbar).
+ * @param configuration
+ * launch configuration in question
+ * @param target - target to match, it can be null if launch bar cannot determine target,
+ * in this case it should act as wildcard
+ *
+ * @return launch configuration
+ * @throws CoreException
+ */
+ boolean launchDescriptorMatches(ILaunchDescriptor descriptor, ILaunchConfiguration configuration,
+ ILaunchTarget target) throws CoreException;
+
+ /**
+ * A launch configuration has been added. Provider can inspect it and
+ * associate with internal map. Provider should make sure it owns this
+ * launch configuration or it can modify it to take over.
+ *
+ * @return true of provider owns this launch configuration
+ */
+ boolean launchConfigurationAdded(ILaunchConfiguration configuration) throws CoreException;
+
+ /**
+ * A launch configuration has been removed. This notification can be used to
+ * purge internal cache for example. This method is called after launch
+ * configuration has been removed from file system, so accessing its
+ * attributes won't work. If provider cannot determine if it owns it it
+ * should return false.
+ *
+ * @param configuration
+ * @return true if provider owns this launch configuration
+ * @throws CoreException
+ */
+ boolean launchConfigurationRemoved(ILaunchConfiguration configuration) throws CoreException;
+
+ /**
+ * A launch configuration has been changed. Provider can inspect it to
+ * re-evaluate its internal map. Provider should make sure it owns this
+ * launch configuration or it can modify it to take over.
+ *
+ * @return true of provider owns this launch configuration
+ */
+ boolean launchConfigurationChanged(ILaunchConfiguration configuration) throws CoreException;
+
+ /**
+ * A launch descriptor has been removed. Remove any launch configurations
+ * that were created for it.
+ *
+ * @param descriptor
+ * @throws CoreException
+ */
+ void launchDescriptorRemoved(ILaunchDescriptor descriptor) throws CoreException;
+
+ /**
+ * A launch target has been removed. Remove any launch configurations that
+ * were created for it.
+ *
+ * @param target
+ * @throws CoreException
+ */
+ void launchTargetRemoved(ILaunchTarget target) throws CoreException;
+
+}
diff --git a/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/ILaunchDescriptor.java b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/ILaunchDescriptor.java
new file mode 100644
index 00000000000..3aa0753f496
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/ILaunchDescriptor.java
@@ -0,0 +1,39 @@
+/*******************************************************************************
+ * Copyright (c) 2014 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Doug Schaefer
+ *******************************************************************************/
+package org.eclipse.launchbar.core;
+
+import org.eclipse.core.runtime.IAdaptable;
+
+/**
+ * Represents a thing that can be launched. It is good practice that the
+ * descriptor is adaptable to the launch object it is representing.
+ */
+public interface ILaunchDescriptor extends IAdaptable {
+
+ /**
+ * Name to show in the launch descriptor selector. Names must be unique for
+ * all descriptors of a given type.
+ *
+ * @return name of the launch descriptor
+ */
+ String getName();
+
+ /**
+ * The type of launch descriptor.
+ *
+ * @return provider
+ */
+ ILaunchDescriptorType getType();
+
+}
diff --git a/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/ILaunchDescriptorType.java b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/ILaunchDescriptorType.java
new file mode 100644
index 00000000000..ccac2e66f5c
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/ILaunchDescriptorType.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2014 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Doug Schaefer
+ *******************************************************************************/
+package org.eclipse.launchbar.core;
+
+import org.eclipse.core.runtime.CoreException;
+
+/**
+ * Provides mapping between launch objects and launch descriptors.
+ */
+public interface ILaunchDescriptorType {
+
+ /**
+ * Return a descriptor for the given launch object.
+ *
+ * May return null to essentially eat the element so no other types create a
+ * descriptor for it.
+ *
+ * The enablement expression for a given launch object must pass for this
+ * clause to be executed.
+ *
+ * @param descriptor
+ * launch object for descriptor
+ * @return the best descriptor
+ * @throws CoreException
+ */
+ ILaunchDescriptor getDescriptor(Object launchObject) throws CoreException;
+
+ /**
+ * Does this descriptor type support launching on targets other than Local?
+ *
+ * @return supports targets
+ * @throws CoreException
+ * @since 2.1
+ */
+ default boolean supportsTargets() throws CoreException {
+ return true;
+ }
+
+ /**
+ * Do the launch configurations of this type support being deleted.
+ *
+ * @return true if can be deleted
+ * @since 2.4
+ */
+ default boolean canDelete() {
+ return true;
+ }
+} \ No newline at end of file
diff --git a/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/ILaunchObjectProvider.java b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/ILaunchObjectProvider.java
new file mode 100644
index 00000000000..3dd7cf02b43
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/ILaunchObjectProvider.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * Copyright (c) 2014 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Doug Schaefer
+ *******************************************************************************/
+package org.eclipse.launchbar.core;
+
+import org.eclipse.core.runtime.CoreException;
+
+/**
+ * An extension that serves up objects to feed launch descriptors.
+ *
+ */
+public interface ILaunchObjectProvider {
+
+ /**
+ * Add initial launch objects and set up listeners for new ones.
+ *
+ * @param launchbar
+ * manager
+ * @throws CoreException
+ */
+ void init(ILaunchBarManager manager) throws CoreException;
+
+ /**
+ * Shutting down, remove any listeners.
+ */
+ void dispose();
+
+}
diff --git a/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/PerTargetLaunchConfigProvider.java b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/PerTargetLaunchConfigProvider.java
new file mode 100644
index 00000000000..eeb4a317c1e
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/PerTargetLaunchConfigProvider.java
@@ -0,0 +1,171 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Doug Schaefer
+ *******************************************************************************/
+package org.eclipse.launchbar.core;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashSet;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.launchbar.core.internal.Activator;
+import org.eclipse.launchbar.core.target.ILaunchTarget;
+
+public abstract class PerTargetLaunchConfigProvider extends AbstractLaunchConfigProvider {
+ private final Map<ILaunchDescriptor, Map<ILaunchTarget, ILaunchConfiguration>> configMap = new HashMap<>();
+ private final Map<ILaunchDescriptor, ILaunchConfiguration> defaultConfigs = new HashMap<>();
+ private final Collection<ILaunchConfiguration> ownedConfigs = new LinkedHashSet<>();
+
+ protected ILaunchBarManager getManager() {
+ return Activator.getService(ILaunchBarManager.class);
+ }
+
+ @Override
+ public ILaunchConfiguration getLaunchConfiguration(ILaunchDescriptor descriptor, ILaunchTarget target)
+ throws CoreException {
+ if (target != null) {
+ Map<ILaunchTarget, ILaunchConfiguration> targetMap = configMap.get(descriptor);
+ if (targetMap != null) {
+ ILaunchConfiguration config = targetMap.get(target);
+ if (config != null) {
+ return config;
+ }
+ }
+ } else {
+ ILaunchConfiguration config = defaultConfigs.get(descriptor);
+ if (config != null) {
+ return config;
+ }
+ }
+
+ // The config will get added to the cache when launchConfigurationAdded
+ // is called when the new config is saved.
+ return createLaunchConfiguration(descriptor, target);
+ }
+
+ protected abstract ILaunchDescriptor getLaunchDescriptor(ILaunchConfiguration configuration) throws CoreException;
+
+ protected abstract ILaunchTarget getLaunchTarget(ILaunchConfiguration configuration) throws CoreException;
+
+ protected boolean providesForNullTarget() {
+ return false;
+ }
+
+ private boolean addLaunchConfiguration(ILaunchConfiguration configuration) throws CoreException {
+ ILaunchDescriptor desc = getLaunchDescriptor(configuration);
+ if (desc == null) {
+ return false;
+ }
+
+ ILaunchTarget target = getLaunchTarget(configuration);
+ if (target == null) {
+ if (providesForNullTarget()) {
+ defaultConfigs.put(desc, configuration);
+ } else {
+ return false;
+ }
+ } else {
+ Map<ILaunchTarget, ILaunchConfiguration> targetMap = configMap.get(desc);
+ if (targetMap == null) {
+ targetMap = new HashMap<>();
+ configMap.put(desc, targetMap);
+ }
+ targetMap.put(target, configuration);
+ }
+
+ ownedConfigs.add(configuration);
+ return true;
+ }
+
+ @Override
+ public boolean launchConfigurationAdded(ILaunchConfiguration configuration) throws CoreException {
+ if (ownsLaunchConfiguration(configuration)) {
+ return addLaunchConfiguration(configuration);
+ }
+ return false;
+ }
+
+ @Override
+ public boolean launchConfigurationChanged(ILaunchConfiguration configuration) throws CoreException {
+ if (ownsLaunchConfiguration(configuration)) {
+ // clear cache, target could have changed
+ launchConfigurationRemoved(configuration);
+ return addLaunchConfiguration(configuration);
+ } else if (ownedConfigs.contains(configuration)) {
+ // something changed that will cause us to loose ownership of this
+ // configuration. Remove and add it back in.
+ ILaunchBarManager manager = getManager();
+ manager.launchConfigurationRemoved(configuration);
+ manager.launchConfigurationAdded(configuration);
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ @Override
+ public boolean launchConfigurationRemoved(ILaunchConfiguration configuration) throws CoreException {
+ ownedConfigs.remove(configuration);
+ for (Entry<ILaunchDescriptor, Map<ILaunchTarget, ILaunchConfiguration>> descEntry : configMap.entrySet()) {
+ for (Entry<ILaunchTarget, ILaunchConfiguration> targetEntry : descEntry.getValue().entrySet()) {
+ if (targetEntry.getValue().equals(configuration)) {
+ descEntry.getValue().remove(targetEntry.getKey());
+ if (descEntry.getValue().isEmpty()) {
+ configMap.remove(descEntry.getKey());
+ }
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public void launchDescriptorRemoved(ILaunchDescriptor descriptor) throws CoreException {
+ Map<ILaunchTarget, ILaunchConfiguration> map = configMap.remove(descriptor);
+ if (map != null) {
+ for (ILaunchConfiguration config : map.values()) {
+ ownedConfigs.remove(config);
+ // remove all auto-configs associated with descriptor
+ config.delete();
+ }
+ }
+
+ ILaunchConfiguration config = defaultConfigs.remove(descriptor);
+ if (config != null) {
+ ownedConfigs.remove(config);
+ config.delete();
+ }
+ }
+
+ @Override
+ public void launchTargetRemoved(ILaunchTarget target) throws CoreException {
+ for (Iterator<Entry<ILaunchDescriptor, Map<ILaunchTarget, ILaunchConfiguration>>> iterator = configMap
+ .entrySet().iterator(); iterator.hasNext();) {
+ Entry<ILaunchDescriptor, Map<ILaunchTarget, ILaunchConfiguration>> descEntry = iterator.next();
+ Map<ILaunchTarget, ILaunchConfiguration> map = descEntry.getValue();
+ ILaunchConfiguration config = map.remove(target);
+ if (config != null) {
+ // remove all auto-configs associated with target
+ config.delete();
+ }
+ if (map.isEmpty()) {
+ iterator.remove();
+ }
+ }
+ }
+}
diff --git a/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/ProjectLaunchConfigProvider.java b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/ProjectLaunchConfigProvider.java
new file mode 100644
index 00000000000..03b66ee9ada
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/ProjectLaunchConfigProvider.java
@@ -0,0 +1,93 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.launchbar.core;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
+import org.eclipse.launchbar.core.target.ILaunchTarget;
+
+public abstract class ProjectLaunchConfigProvider extends AbstractLaunchConfigProvider {
+
+ private Map<IProject, ILaunchConfiguration> configs = new HashMap<>();
+
+ @Override
+ public ILaunchConfiguration getLaunchConfiguration(ILaunchDescriptor descriptor, ILaunchTarget target)
+ throws CoreException {
+ ILaunchConfiguration config = null;
+ IProject project = descriptor.getAdapter(IProject.class);
+ if (project != null) {
+ config = configs.get(project);
+ if (config == null) {
+ config = createLaunchConfiguration(descriptor, target);
+ // launch config added will get called below to add it to the
+ // configs map
+ }
+ }
+ return config;
+ }
+
+ @Override
+ protected void populateLaunchConfiguration(ILaunchDescriptor descriptor, ILaunchTarget target,
+ ILaunchConfigurationWorkingCopy workingCopy) throws CoreException {
+ super.populateLaunchConfiguration(descriptor, target, workingCopy);
+
+ // Set the project
+ workingCopy.setMappedResources(new IResource[] { descriptor.getAdapter(IProject.class) });
+ }
+
+ @Override
+ public boolean launchConfigurationAdded(ILaunchConfiguration configuration) throws CoreException {
+ if (ownsLaunchConfiguration(configuration)) {
+ IProject project = configuration.getMappedResources()[0].getProject();
+ configs.put(project, configuration);
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public boolean launchConfigurationRemoved(ILaunchConfiguration configuration) throws CoreException {
+ for (Entry<IProject, ILaunchConfiguration> entry : configs.entrySet()) {
+ if (configuration.equals(entry.getValue())) {
+ configs.remove(entry.getKey());
+ return true;
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public boolean launchConfigurationChanged(ILaunchConfiguration configuration) throws CoreException {
+ return false;
+ }
+
+ @Override
+ public void launchDescriptorRemoved(ILaunchDescriptor descriptor) throws CoreException {
+ IProject project = descriptor.getAdapter(IProject.class);
+ if (project != null) {
+ configs.remove(project);
+ }
+ }
+
+ @Override
+ public void launchTargetRemoved(ILaunchTarget target) throws CoreException {
+ // nothing to do since this provider isn't associated with a single
+ // target.
+ }
+
+}
diff --git a/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/ProjectLaunchDescriptor.java b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/ProjectLaunchDescriptor.java
new file mode 100644
index 00000000000..de161cc97e4
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/ProjectLaunchDescriptor.java
@@ -0,0 +1,87 @@
+/*******************************************************************************
+ * Copyright (c) 2014 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Doug Schaefer
+ *******************************************************************************/
+package org.eclipse.launchbar.core;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.PlatformObject;
+
+/**
+ * A reusable descriptor for wrapping projects that can be used by descriptor
+ * types that map to projects.
+ */
+public class ProjectLaunchDescriptor extends PlatformObject implements ILaunchDescriptor {
+
+ private final ILaunchDescriptorType type;
+ private final IProject project;
+
+ public ProjectLaunchDescriptor(ILaunchDescriptorType type, IProject project) {
+ this.type = type;
+ this.project = project;
+ }
+
+ @Override
+ public <T> T getAdapter(Class<T> adapter) {
+ if (IProject.class.equals(adapter)) {
+ return adapter.cast(project);
+ }
+ return super.getAdapter(adapter);
+ }
+
+ @Override
+ public String getName() {
+ return project.getName();
+ }
+
+ @Override
+ public ILaunchDescriptorType getType() {
+ return type;
+ }
+
+ @Override
+ public String toString() {
+ return getName(); // for debugging purposes
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((project == null) ? 0 : project.hashCode());
+ result = prime * result + ((type == null) ? 0 : type.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ ProjectLaunchDescriptor other = (ProjectLaunchDescriptor) obj;
+ if (project == null) {
+ if (other.project != null)
+ return false;
+ } else if (!project.equals(other.project))
+ return false;
+ if (type == null) {
+ if (other.type != null)
+ return false;
+ } else if (!type.equals(other.type))
+ return false;
+ return true;
+ }
+
+}
diff --git a/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/ProjectPerTargetLaunchConfigProvider.java b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/ProjectPerTargetLaunchConfigProvider.java
new file mode 100644
index 00000000000..47306ef5fb6
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/ProjectPerTargetLaunchConfigProvider.java
@@ -0,0 +1,69 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.launchbar.core;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
+import org.eclipse.launchbar.core.internal.Activator;
+import org.eclipse.launchbar.core.target.ILaunchTarget;
+
+public abstract class ProjectPerTargetLaunchConfigProvider extends PerTargetLaunchConfigProvider {
+
+ @Override
+ public boolean supports(ILaunchDescriptor descriptor, ILaunchTarget target) throws CoreException {
+ return (descriptor.getAdapter(IProject.class) != null);
+ }
+
+ @Override
+ protected void populateLaunchConfiguration(ILaunchDescriptor descriptor, ILaunchTarget target,
+ ILaunchConfigurationWorkingCopy workingCopy) throws CoreException {
+ super.populateLaunchConfiguration(descriptor, target, workingCopy);
+
+ // Add our project to the mapped resources
+ IProject project = descriptor.getAdapter(IProject.class);
+ IResource[] mappedResources = workingCopy.getMappedResources();
+ if (mappedResources == null || mappedResources.length == 0) {
+ workingCopy.setMappedResources(new IResource[] { project });
+ } else {
+ IResource[] newResources = new IResource[mappedResources.length + 1];
+ System.arraycopy(mappedResources, 0, newResources, 0, mappedResources.length);
+ newResources[mappedResources.length] = project;
+ workingCopy.setMappedResources(newResources);
+ }
+ }
+
+ @Override
+ protected ILaunchDescriptor getLaunchDescriptor(ILaunchConfiguration configuration) throws CoreException {
+ IResource[] mappedResources = configuration.getMappedResources();
+ if (mappedResources == null) {
+ return null;
+ }
+
+ IProject project = null;
+ for (IResource resource : mappedResources) {
+ if (resource instanceof IProject)
+ project = (IProject) resource;
+ }
+ if (project == null) {
+ return null;
+ }
+
+ ILaunchBarManager manager = Activator.getService(ILaunchBarManager.class);
+ return manager.launchObjectAdded(project);
+ }
+
+}
diff --git a/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/Activator.java b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/Activator.java
new file mode 100644
index 00000000000..ba17d2770d3
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/Activator.java
@@ -0,0 +1,105 @@
+/*******************************************************************************
+ * Copyright (c) 2014 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Doug Schaefer
+ *******************************************************************************/
+package org.eclipse.launchbar.core.internal;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Plugin;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.launchbar.core.ILaunchBarManager;
+import org.eclipse.launchbar.core.internal.target.LaunchTargetManager;
+import org.eclipse.launchbar.core.target.ILaunchTargetManager;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+
+public class Activator extends Plugin {
+
+ public static final String PLUGIN_ID = "org.eclipse.launchbar.core"; //$NON-NLS-1$
+ private static Activator plugin;
+
+ private static LaunchTargetManager launchTargetManager;
+ private static LaunchBarManager launchBarManager;
+
+ @Override
+ public void start(BundleContext bundleContext) throws Exception {
+ super.start(bundleContext);
+ plugin = this;
+
+ launchTargetManager = new LaunchTargetManager();
+ bundleContext.registerService(ILaunchTargetManager.class, launchTargetManager, null);
+
+ launchBarManager = new LaunchBarManager();
+ bundleContext.registerService(ILaunchBarManager.class, launchBarManager, null);
+ }
+
+ @Override
+ public void stop(BundleContext bundleContext) throws Exception {
+ super.stop(bundleContext);
+ plugin = null;
+ launchTargetManager = null;
+ launchBarManager = null;
+ }
+
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+ public static LaunchBarManager getLaunchBarManager() {
+ return launchBarManager;
+ }
+
+ public static LaunchTargetManager getLaunchTargetManager() {
+ return launchTargetManager;
+ }
+
+ /**
+ * Return the OSGi service with the given service interface.
+ *
+ * @param service
+ * service interface
+ * @return the specified service or null if it's not registered
+ */
+ public static <T> T getService(Class<T> service) {
+ BundleContext context = plugin.getBundle().getBundleContext();
+ ServiceReference<T> ref = context.getServiceReference(service);
+ return ref != null ? context.getService(ref) : null;
+ }
+
+ public static void throwCoreException(Exception e) throws CoreException {
+ throw new CoreException(new Status(IStatus.ERROR, PLUGIN_ID, e.getLocalizedMessage(), e));
+ }
+
+ public static void log(IStatus status) {
+ if (plugin != null)
+ plugin.getLog().log(status);
+ else
+ System.err.println(status.getMessage());
+ }
+
+ public static void log(Throwable exception) {
+ if (exception instanceof CoreException) {
+ log(((CoreException) exception).getStatus());
+ } else {
+ log(new Status(IStatus.ERROR, PLUGIN_ID, exception.getLocalizedMessage(), exception));
+ }
+ }
+
+ private static final String DEBUG_ONE = PLUGIN_ID + "/debug/launchbar"; //$NON-NLS-1$
+
+ public static void trace(String str) {
+ if (plugin == null || (plugin.isDebugging() && "true".equalsIgnoreCase(Platform.getDebugOption(DEBUG_ONE)))) //$NON-NLS-1$
+ System.out.println("launchbar: " + str); //$NON-NLS-1$
+ }
+}
diff --git a/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/ExecutableExtension.java b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/ExecutableExtension.java
new file mode 100644
index 00000000000..c509b2d91dc
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/ExecutableExtension.java
@@ -0,0 +1,68 @@
+/*******************************************************************************
+ * Copyright (c) 2014 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Doug Schaefer
+ *******************************************************************************/
+package org.eclipse.launchbar.core.internal;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+
+/**
+ * A wrapper class that delays instantiation of classes until they're needed
+ * to prevent early plug-in loading.
+ *
+ * @param <T> the type of the object created
+ */
+public class ExecutableExtension<T> {
+
+ private IConfigurationElement element;
+ private String propertyName;
+ private T object;
+
+ public ExecutableExtension(IConfigurationElement element, String propertyName) {
+ this.element = element;
+ this.propertyName = propertyName;
+ }
+
+ // For testing, pre-populate the object
+ public ExecutableExtension(T object) {
+ this.object = object;
+ }
+
+ /**
+ * Get the object instantiating it if necessary.
+ * @return object
+ * @throws CoreException
+ */
+ @SuppressWarnings("unchecked")
+ public T get() throws CoreException {
+ if (element != null) {
+ object = (T) element.createExecutableExtension(propertyName);
+ element = null;
+ propertyName = null;
+ }
+ return object;
+ }
+
+ /**
+ * Creates a new object. Can't be done if you've done a get already.
+ * @return a new object from the extension or null if get was called earlier
+ * @throws CoreException
+ */
+ @SuppressWarnings("unchecked")
+ public T create() throws CoreException {
+ if (element != null) {
+ return (T) element.createExecutableExtension(propertyName);
+ }
+ return null;
+ }
+}
diff --git a/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/LaunchBarManager.java b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/LaunchBarManager.java
new file mode 100644
index 00000000000..b6d828fbde5
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/LaunchBarManager.java
@@ -0,0 +1,1036 @@
+/*******************************************************************************
+ * Copyright (c) 2014, 2018 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Doug Schaefer
+ *******************************************************************************/
+package org.eclipse.launchbar.core.internal;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtension;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences;
+import org.eclipse.core.runtime.preferences.InstanceScope;
+import org.eclipse.debug.core.DebugPlugin;
+import org.eclipse.debug.core.ILaunch;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.ILaunchConfigurationType;
+import org.eclipse.debug.core.ILaunchListener;
+import org.eclipse.debug.core.ILaunchManager;
+import org.eclipse.debug.core.ILaunchMode;
+import org.eclipse.launchbar.core.DefaultLaunchDescriptor;
+import org.eclipse.launchbar.core.ILaunchBarListener;
+import org.eclipse.launchbar.core.ILaunchBarManager;
+import org.eclipse.launchbar.core.ILaunchConfigurationProvider;
+import org.eclipse.launchbar.core.ILaunchDescriptor;
+import org.eclipse.launchbar.core.ILaunchDescriptorType;
+import org.eclipse.launchbar.core.ILaunchObjectProvider;
+import org.eclipse.launchbar.core.target.ILaunchTarget;
+import org.eclipse.launchbar.core.target.ILaunchTargetListener;
+import org.eclipse.launchbar.core.target.ILaunchTargetManager;
+import org.eclipse.launchbar.core.target.launch.ITargetedLaunch;
+import org.osgi.service.prefs.BackingStoreException;
+import org.osgi.service.prefs.Preferences;
+
+/**
+ * The brains of the launch bar.
+ */
+public class LaunchBarManager implements ILaunchBarManager, ILaunchTargetListener {
+ private final List<ILaunchBarListener> listeners = new LinkedList<>();
+ // The launch object providers
+ private final List<ILaunchObjectProvider> objectProviders = new ArrayList<>();
+ // The descriptor types
+ private final Map<String, LaunchDescriptorTypeInfo> descriptorTypes = new HashMap<>();
+ // Descriptor types ordered from highest priority to lowest
+ private List<LaunchDescriptorTypeInfo> orderedDescriptorTypes;
+ // the extended info for loaded descriptor types
+ private final Map<ILaunchDescriptorType, LaunchDescriptorTypeInfo> descriptorTypeInfo = new HashMap<>();
+ private final Map<String, List<LaunchConfigProviderInfo>> configProviders = new HashMap<>();
+ // Descriptors in MRU order, key is desc type id and desc name.
+ private final Map<Pair<String, String>, ILaunchDescriptor> descriptors = new LinkedHashMap<>();
+ // Map of launch objects to launch descriptors
+ private final Map<Object, ILaunchDescriptor> objectDescriptorMap = new HashMap<>();
+ private ILaunchTargetManager launchTargetManager;
+ private ILaunchDescriptor activeLaunchDesc;
+ private ILaunchMode activeLaunchMode;
+ private ILaunchTarget activeLaunchTarget;
+ // private static final String PREF_ACTIVE_CONFIG_DESC = "activeConfigDesc";
+ private static final String PREF_ACTIVE_LAUNCH_MODE = "activeLaunchMode"; //$NON-NLS-1$
+ private static final String PREF_ACTIVE_LAUNCH_TARGET = "activeLaunchTarget"; //$NON-NLS-1$
+ private static final String PREF_CONFIG_DESC_ORDER = "configDescList"; //$NON-NLS-1$
+ private static final String PREF_TRACK_LAUNCHES = "trackLaunches"; //$NON-NLS-1$
+ boolean initialized = false;
+
+ public LaunchBarManager() {
+ this(true);
+ }
+
+ // called from unit tests to ensure everything is inited
+ LaunchBarManager(boolean doInit) {
+ launchTargetManager = getLaunchTargetManager();
+ launchTargetManager.addListener(this);
+ if (doInit) {
+ new Job(Messages.LaunchBarManager_0) {
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ try {
+ init();
+ return Status.OK_STATUS;
+ } catch (CoreException e) {
+ return e.getStatus();
+ }
+ }
+ }.schedule();
+ }
+ }
+
+ // To allow override by tests
+ IExtensionPoint getExtensionPoint() throws CoreException {
+ return Platform.getExtensionRegistry().getExtensionPoint(Activator.PLUGIN_ID, "launchBarContributions"); //$NON-NLS-1$
+ }
+
+ // To allow override by tests
+ ILaunchManager getLaunchManager() {
+ return DebugPlugin.getDefault().getLaunchManager();
+ }
+
+ ILaunchTargetManager getLaunchTargetManager() {
+ return Activator.getService(ILaunchTargetManager.class);
+ }
+
+ // When testing, call this after setting up the mocks.
+ void init() throws CoreException {
+ try {
+ // Fetch the desc order before the init messes it up
+ IEclipsePreferences store = getPreferenceStore();
+ String configDescIds = store.get(PREF_CONFIG_DESC_ORDER, ""); //$NON-NLS-1$
+ // Load up the types
+ loadExtensions();
+ // Hook up the existing launch configurations and listen
+ ILaunchManager launchManager = getLaunchManager();
+ for (ILaunchConfiguration configuration : launchManager.getLaunchConfigurations()) {
+ launchConfigurationAdded(configuration);
+ }
+ launchManager.addLaunchConfigurationListener(this);
+ // Reorder the descriptors based on the preference
+ if (!configDescIds.isEmpty()) {
+ String[] split = configDescIds.split(","); //$NON-NLS-1$
+ ILaunchDescriptor last = null;
+ for (String id : split) {
+ Pair<String, String> key = toId(id);
+ ILaunchDescriptor desc = descriptors.get(key);
+ if (desc != null) {
+ descriptors.remove(key);
+ descriptors.put(key, desc);
+ last = desc;
+ }
+ }
+ // Set the active desc, with MRU, it should be the last one
+ if (last != null) {
+ setActiveLaunchDescriptor(last);
+ }
+ }
+ launchManager.addLaunchListener(new ILaunchListener() {
+ @Override
+ public void launchRemoved(ILaunch launch) {
+ // ignore
+ }
+
+ @Override
+ public void launchAdded(ILaunch launch) {
+ if (!getPreferenceStore().getBoolean(PREF_TRACK_LAUNCHES, true))
+ return;
+ ILaunchConfiguration lc = launch.getLaunchConfiguration();
+ String mode = launch.getLaunchMode();
+ ILaunchTarget target = null;
+ if (launch instanceof ITargetedLaunch) {
+ target = ((ITargetedLaunch) launch).getLaunchTarget();
+ }
+ try {
+ setActive(lc, mode, target);
+ } catch (CoreException e) {
+ Activator.log(e);
+ }
+ }
+
+ @Override
+ public void launchChanged(ILaunch launch) {
+ ILaunchConfiguration lc = launch.getLaunchConfiguration();
+ ILaunchTarget target = null;
+ if (launch instanceof ITargetedLaunch) {
+ target = ((ITargetedLaunch) launch).getLaunchTarget();
+ }
+ if (target == null)
+ return;
+ if (launchDescriptorMatches(activeLaunchDesc, lc, target)) {
+ // active launch delegate may have changed target
+ try {
+ setActiveLaunchTarget(target);
+ } catch (CoreException e) {
+ Activator.log(e);
+ }
+ }
+ }
+ });
+ } finally {
+ initialized = true;
+ }
+ fireActiveLaunchDescriptorChanged();
+ fireActiveLaunchTargetChanged();
+ fireActiveLaunchModeChanged();
+ fireLaunchTargetsChanged();
+ }
+
+ private void loadExtensions() throws CoreException {
+ IExtensionPoint point = getExtensionPoint();
+ IExtension[] extensions = point.getExtensions();
+ // Load up the types
+ for (IExtension extension : extensions) {
+ for (IConfigurationElement element : extension.getConfigurationElements()) {
+ try {
+ String elementName = element.getName();
+ if (elementName.equals("descriptorType")) { //$NON-NLS-1$
+ LaunchDescriptorTypeInfo typeInfo = new LaunchDescriptorTypeInfo(element);
+ descriptorTypes.put(typeInfo.getId(), typeInfo);
+ if (configProviders.get(typeInfo.getId()) == null) {
+ // Make sure we initialize the list
+ configProviders.put(typeInfo.getId(), new ArrayList<LaunchConfigProviderInfo>());
+ }
+ } else if (elementName.equals("configProvider")) { //$NON-NLS-1$
+ LaunchConfigProviderInfo info = new LaunchConfigProviderInfo(element);
+ List<LaunchConfigProviderInfo> providers = configProviders.get(info.getDescriptorTypeId());
+ if (providers == null) {
+ providers = new ArrayList<>();
+ configProviders.put(info.getDescriptorTypeId(), providers);
+ }
+ providers.add(info);
+ }
+ } catch (Exception e) {
+ Activator.log(e);
+ }
+ }
+ }
+ // Sort things
+ orderedDescriptorTypes = new ArrayList<>(descriptorTypes.values());
+ Collections.sort(orderedDescriptorTypes, (o1, o2) -> {
+ int p1 = o1.getPriority();
+ int p2 = o2.getPriority();
+ if (p1 < p2) {
+ return 1;
+ } else if (p1 > p2) {
+ return -1;
+ } else {
+ return 0;
+ }
+ });
+ for (List<LaunchConfigProviderInfo> providers : configProviders.values()) {
+ Collections.sort(providers, (o1, o2) -> {
+ int p1 = o1.getPriority();
+ int p2 = o2.getPriority();
+ if (p1 < p2) {
+ return 1;
+ } else if (p1 > p2) {
+ return -1;
+ } else {
+ return 0;
+ }
+ });
+ }
+ // Now that all the types are loaded, the object providers which now
+ // populate the descriptors
+ for (IExtension extension : extensions) {
+ for (IConfigurationElement element : extension.getConfigurationElements()) {
+ try {
+ String elementName = element.getName();
+ if (elementName.equals("objectProvider")) { //$NON-NLS-1$
+ ILaunchObjectProvider objectProvider = (ILaunchObjectProvider) element
+ .createExecutableExtension("class"); //$NON-NLS-1$
+ objectProviders.add(objectProvider);
+ objectProvider.init(this);
+ }
+ } catch (Exception e) {
+ // exceptions during extension loading, log and move on
+ Activator.log(e);
+ }
+ }
+ }
+ }
+
+ private String toString(Pair<String, String> key) {
+ return key.getFirst() + ":" + key.getSecond(); //$NON-NLS-1$
+ }
+
+ private Pair<String, String> toId(String key) {
+ int i = key.indexOf(':');
+ if (i < 0) {
+ return null;
+ }
+ return new Pair<>(key.substring(0, i), key.substring(i + 1));
+ }
+
+ @Override
+ public String getDescriptorTypeId(ILaunchDescriptorType type) {
+ return descriptorTypeInfo.get(type).getId();
+ }
+
+ private Pair<String, String> getDescriptorId(ILaunchDescriptor descriptor) {
+ return new Pair<>(getDescriptorTypeId(descriptor.getType()), descriptor.getName());
+ }
+
+ private Pair<String, String> getTargetId(ILaunchTarget target) {
+ return new Pair<>(target.getTypeId(), target.getId());
+ }
+
+ private void addDescriptor(Object launchObject, ILaunchDescriptor descriptor) throws CoreException {
+ descriptors.put(getDescriptorId(descriptor), descriptor);
+ objectDescriptorMap.put(launchObject, descriptor);
+ setActiveLaunchDescriptor(descriptor);
+ }
+
+ @Override
+ public ILaunchConfigurationType getLaunchConfigurationType(ILaunchDescriptor descriptor, ILaunchTarget target)
+ throws CoreException {
+ if (descriptor == null)
+ return null;
+
+ if (descriptor instanceof DefaultLaunchDescriptor) {
+ // With the default descriptor, we already have the config, just return the type
+ // Doesn't matter what the target is, that's dealt with at launch time
+ ILaunchConfiguration config = descriptor.getAdapter(ILaunchConfiguration.class);
+ return config.getType();
+ }
+
+ for (LaunchConfigProviderInfo providerInfo : configProviders.get(getDescriptorTypeId(descriptor.getType()))) {
+ if (providerInfo.enabled(descriptor) && providerInfo.enabled(target)) {
+ ILaunchConfigurationProvider provider = providerInfo.getProvider();
+ if (provider != null && provider.supports(descriptor, target)) {
+ ILaunchConfigurationType type = provider.getLaunchConfigurationType(descriptor, target);
+ if (type != null) {
+ return type;
+ }
+ }
+ }
+ }
+
+ // not found
+ return null;
+ }
+
+ @Override
+ public ILaunchDescriptor launchObjectAdded(Object launchObject) {
+ Activator.trace("launch object added " + launchObject); //$NON-NLS-1$
+ ILaunchDescriptor desc = objectDescriptorMap.get(launchObject);
+ if (desc != null) {
+ return desc;
+ }
+ for (LaunchDescriptorTypeInfo descriptorInfo : orderedDescriptorTypes) {
+ try {
+ if (descriptorInfo.enabled(launchObject)) {
+ ILaunchDescriptorType type = descriptorInfo.getType();
+ // For newly loaded types, this is the first time we see
+ // them
+ // Add it to the info map.
+ descriptorTypeInfo.put(type, descriptorInfo);
+ desc = type.getDescriptor(launchObject);
+ if (desc != null) {
+ addDescriptor(launchObject, desc);
+ return desc;
+ }
+ }
+ } catch (Throwable e) {
+ Activator.log(e);
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public void launchObjectRemoved(Object launchObject) throws CoreException {
+ Activator.trace("launch object removed " + launchObject); //$NON-NLS-1$
+ ILaunchDescriptor descriptor = objectDescriptorMap.remove(launchObject);
+ if (descriptor != null) {
+ descriptors.remove(getDescriptorId(descriptor));
+ if (descriptor.equals(activeLaunchDesc)) {
+ setActiveLaunchDescriptor(getLastUsedDescriptor());
+ }
+ for (LaunchConfigProviderInfo providerInfo : configProviders
+ .get(getDescriptorTypeId(descriptor.getType()))) {
+ if (providerInfo.enabled(descriptor)) {
+ providerInfo.getProvider().launchDescriptorRemoved(descriptor);
+ }
+ }
+ }
+ }
+
+ @Override
+ public void launchObjectChanged(Object launchObject) throws CoreException {
+ // TODO deal with object renames here, somehow
+ ILaunchDescriptor origDesc = objectDescriptorMap.get(launchObject);
+ if (origDesc == null) {
+ // See if anyone wants it now
+ launchObjectAdded(launchObject);
+ return;
+ }
+ // check if descriptor still wants it
+ ILaunchDescriptorType origDescType = origDesc.getType();
+ try {
+ ILaunchDescriptor newDesc = origDescType.getDescriptor(launchObject);
+ if (newDesc == null) {
+ // nope, give it back to the pool
+ objectDescriptorMap.remove(launchObject);
+ launchObjectAdded(launchObject);
+ } else if (!newDesc.equals(origDesc)) {
+ // record the new descriptor
+ objectDescriptorMap.put(launchObject, newDesc);
+ }
+ } catch (Throwable e) {
+ Activator.log(e);
+ }
+ }
+
+ private ILaunchDescriptor getLastUsedDescriptor() {
+ if (descriptors.size() == 0)
+ return null;
+ ILaunchDescriptor[] descs = descriptors.values().toArray(new ILaunchDescriptor[descriptors.size()]);
+ return descs[descs.length - 1];
+ }
+
+ @Override
+ public ILaunchDescriptor[] getLaunchDescriptors() {
+ // return descriptor in usage order (most used first). UI can sort them
+ // later as it wishes
+ ArrayList<ILaunchDescriptor> values = new ArrayList<>(descriptors.values());
+ Collections.reverse(values);
+ return values.toArray(new ILaunchDescriptor[values.size()]);
+ }
+
+ @Override
+ public ILaunchDescriptor getActiveLaunchDescriptor() {
+ return activeLaunchDesc;
+ }
+
+ private void setActive(ILaunchConfiguration config, String mode, ILaunchTarget target) throws CoreException {
+ ILaunchDescriptor descriptor = getLaunchDescriptor(config, target);
+ if (descriptor == null)
+ return; // not found
+ // we do not call setActiveLaunchTarget because it will cause
+ // mode/target switch and cause flickering
+ boolean changeDesc = activeLaunchDesc != descriptor;
+ boolean changeTarget = target != null && activeLaunchTarget != target;
+ if (changeDesc) {
+ doSetActiveLaunchDescriptor(descriptor);
+ // store in persistent storage
+ storeActiveDescriptor(activeLaunchDesc);
+ }
+ if (changeTarget) {
+ activeLaunchTarget = target;
+ storeLaunchTarget(activeLaunchDesc, target);
+ }
+ ILaunchMode[] supportedModes = getLaunchModes();
+ for (ILaunchMode launchMode : supportedModes) {
+ if (launchMode.getIdentifier().equals(mode)) {
+ setActiveLaunchMode(launchMode);
+ break;
+ }
+ }
+ // send delayed notification about descriptor change
+ if (changeDesc) {
+ fireActiveLaunchDescriptorChanged();
+ }
+ if (changeTarget) {
+ fireActiveLaunchTargetChanged(); // notify target listeners
+ }
+ }
+
+ @Override
+ public void setActiveLaunchDescriptor(ILaunchDescriptor descriptor) throws CoreException {
+ Activator.trace("set active descriptor " + descriptor); //$NON-NLS-1$
+ if (activeLaunchDesc == descriptor) {
+ // Sync since targets could be changed since last time (and modes
+ // theoretically too)
+ syncActiveTarget();
+ syncActiveMode();
+ Activator.trace("resync for " + descriptor); //$NON-NLS-1$
+ return;
+ }
+ if (descriptor != null && !descriptors.containsValue(descriptor)) {
+ throw new IllegalStateException(Messages.LaunchBarManager_1);
+ }
+ if (descriptor == null) {
+ // do not set to null unless no descriptors
+ descriptor = getLastUsedDescriptor();
+ }
+ doSetActiveLaunchDescriptor(descriptor);
+ // store in persistent storage
+ storeActiveDescriptor(activeLaunchDesc);
+ // Send notifications
+ fireActiveLaunchDescriptorChanged();
+ // Set active target
+ syncActiveTarget();
+ // Set active mode
+ syncActiveMode();
+ }
+
+ private void doSetActiveLaunchDescriptor(ILaunchDescriptor descriptor) {
+ activeLaunchDesc = descriptor;
+ if (descriptor != null) {
+ // keeps most used descriptor last
+ Pair<String, String> id = getDescriptorId(descriptor);
+ descriptors.remove(id);
+ descriptors.put(id, descriptor);
+ }
+ }
+
+ private void storeActiveDescriptor(ILaunchDescriptor descriptor) {
+ Activator.trace("new active config is stored " + descriptor); //$NON-NLS-1$
+ // Store the desc order, active one is the last one
+ StringBuffer buff = new StringBuffer();
+ // TODO: this can be very long string
+ for (Pair<String, String> key : descriptors.keySet()) {
+ if (buff.length() > 0) {
+ buff.append(',');
+ }
+ buff.append(toString(key));
+ }
+ setPreference(getPreferenceStore(), PREF_CONFIG_DESC_ORDER, buff.toString());
+ }
+
+ private void syncActiveTarget() throws CoreException {
+ if (activeLaunchDesc == null) {
+ setActiveLaunchTarget(null);
+ return;
+ }
+ // last stored target from persistent storage
+ String activeTargetId = getPerDescriptorStore().get(PREF_ACTIVE_LAUNCH_TARGET, null);
+ if (activeTargetId != null) {
+ Pair<String, String> id = toId(activeTargetId);
+ ILaunchTarget storedTarget = launchTargetManager.getLaunchTarget(id.getFirst(), id.getSecond());
+ if (storedTarget != null && supportsTarget(activeLaunchDesc, storedTarget)) {
+ setActiveLaunchTarget(storedTarget);
+ return;
+ }
+ } else {
+ // current active target, check if it is supported
+ if (activeLaunchTarget != null && activeLaunchTarget != ILaunchTarget.NULL_TARGET
+ && supportsTarget(activeLaunchDesc, activeLaunchTarget)) {
+ setActiveLaunchTarget(activeLaunchTarget);
+ return;
+ }
+ }
+ // default target for descriptor
+ setActiveLaunchTarget(getDefaultLaunchTarget(activeLaunchDesc));
+ }
+
+ private void syncActiveMode() throws CoreException {
+ if (activeLaunchDesc == null) {
+ setActiveLaunchMode(null);
+ return;
+ }
+ ILaunchMode foundMode = null;
+ // last desc mode id
+ String storedModeId = getPerDescriptorStore().get(PREF_ACTIVE_LAUNCH_MODE, null);
+ String lastActiveModeId = activeLaunchMode == null ? null : activeLaunchMode.getIdentifier();
+ // this is based on active desc and target which are already set
+ ILaunchMode[] supportedModes = getLaunchModes();
+ if (supportedModes.length > 0) { // mna, what if no modes are supported?
+ String modeNames[] = new String[] { storedModeId, lastActiveModeId, "run", //$NON-NLS-1$
+ "debug", //$NON-NLS-1$
+ supportedModes[0].getIdentifier() };
+ for (int i = 0; i < modeNames.length; i++) {
+ foundMode = getLaunchManager().getLaunchMode(modeNames[i]);
+ if (supportsMode(foundMode))
+ break;
+ }
+ }
+ setActiveLaunchMode(foundMode);
+ }
+
+ private boolean supportsMode(ILaunchMode mode) throws CoreException {
+ // check that active descriptor supports the given mode
+ if (mode == null)
+ return false;
+ ILaunchMode[] supportedModes = getLaunchModes();
+ for (int j = 0; j < supportedModes.length; j++) {
+ ILaunchMode lm = supportedModes[j];
+ if (lm.equals(mode))
+ return true;
+ }
+ return false;
+ }
+
+ private void setPreference(Preferences store, String prefId, String value) {
+ if (value != null) {
+ store.put(prefId, value);
+ } else {
+ store.remove(prefId);
+ }
+ try {
+ store.flush();
+ } catch (BackingStoreException e) {
+ Activator.log(e);
+ }
+ }
+
+ private Preferences getPerDescriptorStore() {
+ return getPerDescriptorStore(activeLaunchDesc);
+ }
+
+ private Preferences getPerDescriptorStore(ILaunchDescriptor launchDesc) {
+ if (launchDesc == null)
+ return getPreferenceStore();
+ String string;
+ try {
+ string = toString(getDescriptorId(launchDesc));
+ } catch (Exception e) {
+ Activator.log(e);
+ string = launchDesc.getName();
+ }
+ return getPreferenceStore().node(string);
+ }
+
+ // package private so tests can access it
+ IEclipsePreferences getPreferenceStore() {
+ return InstanceScope.INSTANCE.getNode(Activator.PLUGIN_ID);
+ }
+
+ private interface FireAction {
+ void run(ILaunchBarListener listener);
+ }
+
+ private void fireEvent(FireAction action) {
+ Collection<ILaunchBarListener> l;
+ synchronized (listeners) {
+ l = new ArrayList<>(listeners);
+ }
+
+ for (ILaunchBarListener listener : l) {
+ action.run(listener);
+ }
+ }
+
+ private void fireActiveLaunchDescriptorChanged() {
+ if (!initialized)
+ return;
+ fireEvent(listener -> {
+ try {
+ listener.activeLaunchDescriptorChanged(activeLaunchDesc);
+ } catch (Exception e) {
+ Activator.log(e);
+ }
+ });
+ }
+
+ @Override
+ public ILaunchMode[] getLaunchModes() throws CoreException {
+ ILaunchConfigurationType configType = getLaunchConfigurationType(activeLaunchDesc, activeLaunchTarget);
+ if (configType == null)
+ return new ILaunchMode[0];
+ List<ILaunchMode> modeList = new ArrayList<>();
+ ILaunchMode[] modes = getLaunchManager().getLaunchModes();
+ for (ILaunchMode mode : modes) {
+ if (configType.supportsMode(mode.getIdentifier())) {
+ modeList.add(mode);
+ }
+ }
+ return modeList.toArray(new ILaunchMode[modeList.size()]);
+ }
+
+ @Override
+ public ILaunchMode getActiveLaunchMode() {
+ return activeLaunchMode;
+ }
+
+ /**
+ * Sets the preferred mode for the given descriptor
+ *
+ * @param desc
+ * @param mode
+ * @throws CoreException
+ */
+ public void setLaunchMode(ILaunchDescriptor desc, ILaunchMode mode) throws CoreException {
+ if (desc == activeLaunchDesc) {
+ setActiveLaunchMode(mode);
+ } else {
+ storeLaunchMode(desc, mode);
+ }
+ }
+
+ @Override
+ public void setActiveLaunchMode(ILaunchMode mode) throws CoreException {
+ if (activeLaunchMode == mode) {
+ // we have to modify listeners here because same mode does not mean
+ // same launch group. ModeSelector has to update.
+ fireActiveLaunchModeChanged(); // notify listeners
+ return;
+ }
+ if (activeLaunchDesc != null && mode != null && !supportsMode(mode))
+ throw new IllegalStateException(Messages.LaunchBarManager_2);
+ // change mode
+ activeLaunchMode = mode;
+ storeLaunchMode(activeLaunchDesc, mode);
+ fireActiveLaunchModeChanged(); // notify listeners
+ }
+
+ private void fireActiveLaunchModeChanged() {
+ if (!initialized)
+ return;
+ fireEvent(listener -> {
+ try {
+ listener.activeLaunchModeChanged(activeLaunchMode);
+ } catch (Exception e) {
+ Activator.log(e);
+ }
+ });
+ }
+
+ private void storeLaunchMode(ILaunchDescriptor desc, ILaunchMode mode) {
+ if (mode != null) {
+ // per desc store, desc can null if will be stored globally
+ setPreference(getPerDescriptorStore(desc), PREF_ACTIVE_LAUNCH_MODE, mode.getIdentifier());
+ }
+ }
+
+ @Override
+ public ILaunchTarget[] getLaunchTargets(ILaunchDescriptor descriptor) {
+ if (descriptor == null)
+ return launchTargetManager.getLaunchTargets();
+ List<ILaunchTarget> targets = new ArrayList<>();
+ for (ILaunchTarget target : launchTargetManager.getLaunchTargets()) {
+ if (supportsTarget(descriptor, target)) {
+ targets.add(target);
+ }
+ }
+ if (supportsNullTarget(descriptor)) {
+ targets.add(ILaunchTarget.NULL_TARGET);
+ }
+ return targets.toArray(new ILaunchTarget[targets.size()]);
+ }
+
+ boolean supportsTarget(ILaunchDescriptor descriptor, ILaunchTarget target) {
+ String descriptorTypeId = getDescriptorTypeId(descriptor.getType());
+ for (LaunchConfigProviderInfo providerInfo : configProviders.get(descriptorTypeId)) {
+ try {
+ if (providerInfo.enabled(descriptor) && providerInfo.enabled(target)) {
+ if (providerInfo.getProvider().supports(descriptor, target)) {
+ return true;
+ }
+ }
+ } catch (Throwable e) {
+ Activator.log(e);
+ }
+ }
+ return false;
+ }
+
+ boolean supportsNullTarget(ILaunchDescriptor descriptor) {
+ String descriptorTypeId = getDescriptorTypeId(descriptor.getType());
+ for (LaunchConfigProviderInfo providerInfo : configProviders.get(descriptorTypeId)) {
+ if (providerInfo.enabled(descriptor) && providerInfo.supportsNullTarget()) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public ILaunchTarget getActiveLaunchTarget() {
+ return activeLaunchTarget;
+ }
+
+ /**
+ * Sets preferred target for launch descriptor
+ *
+ * @param desc
+ * @param target
+ * @throws CoreException
+ */
+ public void setLaunchTarget(ILaunchDescriptor desc, ILaunchTarget target) throws CoreException {
+ if (desc == activeLaunchDesc) {
+ setActiveLaunchTarget(target);
+ } else {
+ storeLaunchTarget(desc, target);
+ }
+ }
+
+ @Override
+ public void setActiveLaunchTarget(ILaunchTarget target) throws CoreException {
+ if (target == null)
+ target = ILaunchTarget.NULL_TARGET;
+ if (activeLaunchTarget == target) {
+ return;
+ }
+ activeLaunchTarget = target;
+ storeLaunchTarget(activeLaunchDesc, target);
+ syncActiveMode();
+ fireActiveLaunchTargetChanged(); // notify listeners
+ }
+
+ private void storeLaunchTarget(ILaunchDescriptor desc, ILaunchTarget target) {
+ if (target == null) {
+ // Don't store if it's null. Not sure we're null any more anyway.
+ return;
+ }
+ // per desc store, desc can be null means it store globally
+ setPreference(getPerDescriptorStore(desc), PREF_ACTIVE_LAUNCH_TARGET, toString(getTargetId(target)));
+ }
+
+ private void fireActiveLaunchTargetChanged() {
+ if (!initialized)
+ return;
+ fireEvent(listener -> {
+ try {
+ listener.activeLaunchTargetChanged(activeLaunchTarget);
+ } catch (Exception e) {
+ Activator.log(e);
+ }
+ });
+ }
+
+ private ILaunchTarget getDefaultLaunchTarget(ILaunchDescriptor descriptor) {
+ ILaunchTarget[] targets = getLaunchTargets(descriptor);
+ // chances are that better target is most recently added, rather then
+ // the oldest
+ return targets.length == 0 ? ILaunchTarget.NULL_TARGET : targets[targets.length - 1];
+ }
+
+ @Override
+ public ILaunchConfiguration getActiveLaunchConfiguration() throws CoreException {
+ ILaunchConfiguration configuration = getLaunchConfiguration(activeLaunchDesc, activeLaunchTarget);
+ // This is the only concrete time we have the mapping from launch
+ // configuration to launch target. Record it in the target manager for
+ // the launch delegates to use.
+ if (configuration != null) {
+ launchTargetManager.setDefaultLaunchTarget(configuration, activeLaunchTarget);
+ }
+ return configuration;
+ }
+
+ @Override
+ public ILaunchConfiguration getLaunchConfiguration(ILaunchDescriptor descriptor, ILaunchTarget target)
+ throws CoreException {
+ if (descriptor == null) {
+ return null;
+ }
+
+ if (descriptor instanceof DefaultLaunchDescriptor) {
+ if (!descriptor.getType().supportsTargets()) {
+ return descriptor.getAdapter(ILaunchConfiguration.class);
+ }
+ }
+
+ String descTypeId = getDescriptorTypeId(descriptor.getType());
+ for (LaunchConfigProviderInfo providerInfo : configProviders.get(descTypeId)) {
+ try {
+ if (providerInfo.enabled(descriptor) && providerInfo.enabled(target)) {
+ ILaunchConfigurationProvider provider = providerInfo.getProvider();
+ // between multiple provider who support this descriptor we
+ // need to find one that supports this target
+ if (provider.supports(descriptor, target)) {
+ ILaunchConfiguration config = provider.getLaunchConfiguration(descriptor, target);
+ if (config != null) {
+ return config;
+ }
+ }
+ }
+ } catch (Throwable e) {
+ Activator.log(e);
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public void addListener(ILaunchBarListener listener) {
+ if (listener == null)
+ return;
+ synchronized (listeners) {
+ if (!listeners.contains(listener)) // cannot add duplicates
+ listeners.add(listener);
+ }
+ }
+
+ @Override
+ public void removeListener(ILaunchBarListener listener) {
+ if (listener == null)
+ return;
+ synchronized (listener) {
+ listeners.remove(listener);
+ }
+ }
+
+ @Override
+ public void launchConfigurationAdded(ILaunchConfiguration configuration) {
+ for (LaunchDescriptorTypeInfo descTypeInfo : orderedDescriptorTypes) {
+ for (LaunchConfigProviderInfo providerInfo : configProviders.get(descTypeInfo.getId())) {
+ try {
+ if (providerInfo.enabled(configuration)) {
+ if (providerInfo.getProvider().launchConfigurationAdded(configuration)) {
+ return;
+ }
+ }
+ } catch (Throwable e) {
+ Activator.log(e);
+ }
+ }
+ }
+ // No one clamed it, add it as a launch object
+ launchObjectAdded(configuration);
+ }
+
+ @Override
+ public void launchConfigurationRemoved(ILaunchConfiguration configuration) {
+ try {
+ launchObjectRemoved(configuration);
+ } catch (Throwable e) {
+ Activator.log(e);
+ }
+ for (LaunchDescriptorTypeInfo descTypeInfo : orderedDescriptorTypes) {
+ for (LaunchConfigProviderInfo providerInfo : configProviders.get(descTypeInfo.getId())) {
+ try {
+ if (providerInfo.enabled(configuration)) {
+ if (providerInfo.getProvider().launchConfigurationRemoved(configuration)) {
+ return;
+ }
+ }
+ } catch (Throwable e) {
+ Activator.log(e);
+ }
+ }
+ }
+ }
+
+ @Override
+ public void launchConfigurationChanged(ILaunchConfiguration configuration) {
+ // we have to ignore notifications from working copies, otherwise
+ // we will get thousand of events and we don't track working copies
+ // (add/remove events are not sent for WCs)
+ if (configuration.isWorkingCopy())
+ return;
+ for (LaunchDescriptorTypeInfo descTypeInfo : orderedDescriptorTypes) {
+ for (LaunchConfigProviderInfo providerInfo : configProviders.get(descTypeInfo.getId())) {
+ try {
+ if (providerInfo.enabled(configuration)) {
+ ILaunchConfigurationProvider provider = providerInfo.getProvider();
+ if (provider != null) {
+ if (provider.launchConfigurationChanged(configuration)) {
+ return;
+ }
+ }
+ }
+ } catch (Throwable e) {
+ Activator.log(e);
+ }
+ }
+ }
+ }
+
+ public void dispose() {
+ ILaunchManager launchManager = getLaunchManager();
+ launchManager.removeLaunchConfigurationListener(this);
+ for (ILaunchObjectProvider o : objectProviders) {
+ try {
+ o.dispose();
+ } catch (Exception e) {
+ Activator.log(e);
+ }
+ }
+ }
+
+ private void fireLaunchTargetsChanged() {
+ if (!initialized)
+ return;
+ fireEvent(listener -> {
+ try {
+ listener.launchTargetsChanged();
+ } catch (Exception e) {
+ Activator.log(e);
+ }
+ });
+ }
+
+ @Override
+ public void launchTargetAdded(ILaunchTarget target) {
+ if (!initialized)
+ return;
+ fireLaunchTargetsChanged();
+ // if we added new target we probably want to use it
+ if (activeLaunchDesc != null && supportsTarget(activeLaunchDesc, target)) {
+ try {
+ setActiveLaunchTarget(target);
+ } catch (CoreException e) {
+ Activator.log(e);
+ }
+ }
+ }
+
+ @Override
+ public void launchTargetRemoved(ILaunchTarget target) {
+ if (!initialized)
+ return;
+ fireLaunchTargetsChanged();
+ if (activeLaunchTarget == target) {
+ try {
+ setActiveLaunchTarget(getDefaultLaunchTarget(activeLaunchDesc));
+ } catch (CoreException e) {
+ Activator.log(e);
+ }
+ }
+ }
+
+ private ILaunchDescriptor getLaunchDescriptor(ILaunchConfiguration configuration, ILaunchTarget target) {
+ // shortcut - check active first
+ if (launchDescriptorMatches(activeLaunchDesc, configuration, target)) {
+ return activeLaunchDesc;
+ }
+ for (ILaunchDescriptor desc : getLaunchDescriptors()) { // this should
+ // be in MRU,
+ // most used
+ // first
+ if (launchDescriptorMatches(desc, configuration, target)) {
+ return desc;
+ }
+ }
+ return null;
+ }
+
+ private boolean launchDescriptorMatches(ILaunchDescriptor desc, ILaunchConfiguration configuration,
+ ILaunchTarget target) {
+ if (desc == null || configuration == null)
+ return false;
+ try {
+ String descriptorTypeId = getDescriptorTypeId(desc.getType());
+ for (LaunchConfigProviderInfo providerInfo : configProviders.get(descriptorTypeId)) {
+ if (providerInfo.enabled(desc) && (target == null || providerInfo.enabled(target))) {
+ if (providerInfo.getProvider().launchDescriptorMatches(desc, configuration, target)) {
+ return true;
+ }
+ }
+ }
+ } catch (CoreException e) {
+ Activator.log(e);
+ }
+ return false;
+ }
+}
diff --git a/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/LaunchConfigProviderInfo.java b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/LaunchConfigProviderInfo.java
new file mode 100644
index 00000000000..f0172116fe6
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/LaunchConfigProviderInfo.java
@@ -0,0 +1,116 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Doug Schaefer
+ *******************************************************************************/
+package org.eclipse.launchbar.core.internal;
+
+import org.eclipse.core.expressions.EvaluationContext;
+import org.eclipse.core.expressions.EvaluationResult;
+import org.eclipse.core.expressions.Expression;
+import org.eclipse.core.expressions.ExpressionConverter;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.launchbar.core.ILaunchConfigurationProvider;
+
+public class LaunchConfigProviderInfo {
+ private final String descriptorTypeId;
+ private final int priority;
+ private final boolean supportsNullTarget;
+ private IConfigurationElement element;
+ private ILaunchConfigurationProvider provider;
+ private Expression expression;
+
+ public LaunchConfigProviderInfo(IConfigurationElement element) {
+ this.descriptorTypeId = element.getAttribute("descriptorType"); //$NON-NLS-1$
+
+ String priorityStr = element.getAttribute("priority"); //$NON-NLS-1$
+ int priorityNum;
+ try {
+ priorityNum = Integer.parseInt(priorityStr);
+ } catch (NumberFormatException e) {
+ priorityNum = 0;
+ }
+ priority = priorityNum;
+
+ String nullTargetString = element.getAttribute("supportsNullTarget"); //$NON-NLS-1$
+ if (nullTargetString != null) {
+ supportsNullTarget = Boolean.parseBoolean(nullTargetString);
+ } else {
+ supportsNullTarget = false;
+ }
+
+ this.element = element;
+
+ IConfigurationElement[] enabledExpressions = element.getChildren("enablement");//$NON-NLS-1$
+ if (enabledExpressions == null || enabledExpressions.length == 0) {
+ Activator.log(new Status(Status.WARNING, Activator.PLUGIN_ID,
+ "Enablement expression is missing for config provider for " + descriptorTypeId)); //$NON-NLS-1$
+ } else if (enabledExpressions.length > 1) {
+ Activator.log(new Status(Status.WARNING, Activator.PLUGIN_ID,
+ "Multiple enablement expressions are detected for config provider for "//$NON-NLS-1$
+ + descriptorTypeId));
+ } else {
+ try {
+ expression = ExpressionConverter.getDefault().perform(enabledExpressions[0]);
+ } catch (CoreException e) {
+ Activator.log(e);
+ }
+ if (expression == null) {
+ Activator.log(new Status(Status.ERROR, Activator.PLUGIN_ID,
+ "Cannot parse enablement expression defined in config provider for " + descriptorTypeId)); //$NON-NLS-1$
+ }
+ }
+
+ }
+
+ public String getDescriptorTypeId() {
+ return descriptorTypeId;
+ }
+
+ public int getPriority() {
+ return priority;
+ }
+
+ public boolean supportsNullTarget() {
+ return supportsNullTarget;
+ }
+
+ public ILaunchConfigurationProvider getProvider() {
+ if (provider == null) {
+ try {
+ provider = (ILaunchConfigurationProvider) element.createExecutableExtension("class"); //$NON-NLS-1$
+ element = null;
+ } catch (CoreException e) {
+ Activator.log(e);
+ }
+ }
+ return provider;
+ }
+
+ public boolean enabled(Object element) {
+ if (expression == null) {
+ return true;
+ }
+ if (element == null) {
+ return true;
+ }
+ try {
+ EvaluationResult result = expression.evaluate(new EvaluationContext(null, element));
+ return (result == EvaluationResult.TRUE);
+ } catch (CoreException e) {
+ Activator.log(e);
+ return false;
+ }
+ }
+
+} \ No newline at end of file
diff --git a/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/LaunchDescriptorTypeInfo.java b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/LaunchDescriptorTypeInfo.java
new file mode 100644
index 00000000000..aea72201687
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/LaunchDescriptorTypeInfo.java
@@ -0,0 +1,99 @@
+/*******************************************************************************
+ * Copyright (c) 2014, 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Doug Schaefer
+ *******************************************************************************/
+package org.eclipse.launchbar.core.internal;
+
+import org.eclipse.core.expressions.EvaluationContext;
+import org.eclipse.core.expressions.EvaluationResult;
+import org.eclipse.core.expressions.Expression;
+import org.eclipse.core.expressions.ExpressionConverter;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.launchbar.core.ILaunchDescriptorType;
+
+public class LaunchDescriptorTypeInfo {
+ private final String id;
+ private int priority;
+ private IConfigurationElement element;
+ private ILaunchDescriptorType type;
+ private Expression expression;
+
+ public LaunchDescriptorTypeInfo(IConfigurationElement element) {
+ this.id = element.getAttribute("id"); //$NON-NLS-1$
+ String priorityStr = element.getAttribute("priority"); //$NON-NLS-1$
+ this.priority = 1;
+ if (priorityStr != null) {
+ try {
+ priority = Integer.parseInt(priorityStr);
+ } catch (NumberFormatException e) {
+ // Log it but keep going with the default
+ Activator.log(e);
+ }
+ }
+
+ this.element = element;
+
+ IConfigurationElement[] enabledExpressions = element.getChildren("enablement");//$NON-NLS-1$
+ if (enabledExpressions == null || enabledExpressions.length == 0) {
+ Activator.log(new Status(Status.WARNING, Activator.PLUGIN_ID,
+ "Enablement expression is missing for descriptor type " + id));//$NON-NLS-1$
+ } else if (enabledExpressions.length > 1) {
+ Activator.log(new Status(Status.WARNING, Activator.PLUGIN_ID,
+ "Multiple enablement expressions are detected for descriptor type "//$NON-NLS-1$
+ + id));
+ } else {
+ try {
+ expression = ExpressionConverter.getDefault().perform(enabledExpressions[0]);
+ } catch (CoreException e) {
+ Activator.log(e);
+ }
+ if (expression == null) {
+ Activator.log(new Status(Status.ERROR, Activator.PLUGIN_ID,
+ "Cannot parse enablement expression defined in descriptor type " + id)); //$NON-NLS-1$
+ }
+ }
+ }
+
+ // Used for testing
+ LaunchDescriptorTypeInfo(String id, int priority, ILaunchDescriptorType type) {
+ this.id = id;
+ this.priority = priority;
+ this.type = type;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public int getPriority() {
+ return priority;
+ }
+
+ public ILaunchDescriptorType getType() throws CoreException {
+ if (type == null) {
+ type = (ILaunchDescriptorType) element.createExecutableExtension("class"); //$NON-NLS-1$
+ element = null;
+ }
+ return type;
+ }
+
+ public boolean enabled(Object launchObject) throws CoreException {
+ if (expression == null)
+ return true;
+ EvaluationContext context = new EvaluationContext(null, launchObject);
+ context.setAllowPluginActivation(true);
+ EvaluationResult result = expression.evaluate(context);
+ return (result == EvaluationResult.TRUE);
+ }
+} \ No newline at end of file
diff --git a/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/Messages.java b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/Messages.java
new file mode 100644
index 00000000000..3e0163cb8f4
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/Messages.java
@@ -0,0 +1,34 @@
+/*******************************************************************************
+ * Copyright (c) 2014 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Doug Schaefer
+ *******************************************************************************/
+package org.eclipse.launchbar.core.internal;
+
+import org.eclipse.osgi.util.NLS;
+
+public class Messages extends NLS {
+ private static final String BUNDLE_NAME = "org.eclipse.launchbar.core.internal.messages"; //$NON-NLS-1$
+ public static String ILaunchTarget_notSupported;
+ public static String LaunchBarManager_0;
+ public static String LaunchBarManager_1;
+ public static String LaunchBarManager_2;
+ public static String LocalTarget_name;
+ public static String OK;
+
+ static {
+ // initialize resource bundle
+ NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+ }
+
+ private Messages() {
+ }
+}
diff --git a/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/Pair.java b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/Pair.java
new file mode 100644
index 00000000000..35a27314605
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/Pair.java
@@ -0,0 +1,74 @@
+/*******************************************************************************
+ * Copyright (c) 2014 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Doug Schaefer
+ *******************************************************************************/
+package org.eclipse.launchbar.core.internal;
+
+/**
+ * Yet another implementation for Pair. You'd figure Java would have this out of the box.
+ * Used in the launch bar mainly for modeling descriptor and target id's which includ both
+ * type id and the object name.
+ *
+ * @param <S> first element
+ * @param <T> second element
+ */
+public class Pair<S, T> {
+
+ private final S first;
+ private final T second;
+
+ public Pair(S first, T second) {
+ this.first = first;
+ this.second = second;
+ }
+
+ public S getFirst() {
+ return first;
+ }
+
+ public T getSecond() {
+ return second;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((first == null) ? 0 : first.hashCode());
+ result = prime * result + ((second == null) ? 0 : second.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ @SuppressWarnings("unchecked")
+ Pair<S, T> other = (Pair<S, T>) obj;
+ if (first == null) {
+ if (other.first != null)
+ return false;
+ } else if (!first.equals(other.first))
+ return false;
+ if (second == null) {
+ if (other.second != null)
+ return false;
+ } else if (!second.equals(other.second))
+ return false;
+ return true;
+ }
+
+}
diff --git a/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/ProjectLaunchObjectProvider.java b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/ProjectLaunchObjectProvider.java
new file mode 100644
index 00000000000..12981d68d1e
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/ProjectLaunchObjectProvider.java
@@ -0,0 +1,81 @@
+/*******************************************************************************
+ * Copyright (c) 2014, 2018 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Doug Schaefer - Initial API and implementation
+ * Alena Laskavaia
+ *******************************************************************************/
+package org.eclipse.launchbar.core.internal;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceChangeEvent;
+import org.eclipse.core.resources.IResourceChangeListener;
+import org.eclipse.core.resources.IResourceDelta;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.launchbar.core.ILaunchBarManager;
+import org.eclipse.launchbar.core.ILaunchObjectProvider;
+
+/**
+ * Injects IProject objects from platform resources into the launch bar model
+ * for potential project descriptors.
+ */
+public class ProjectLaunchObjectProvider implements ILaunchObjectProvider, IResourceChangeListener {
+ private ILaunchBarManager manager;
+
+ @Override
+ public void init(ILaunchBarManager manager) throws CoreException {
+ this.manager = manager;
+ for (IProject project : ResourcesPlugin.getWorkspace().getRoot().getProjects()) {
+ if (project.isOpen()) {
+ manager.launchObjectAdded(project);
+ }
+ }
+ ResourcesPlugin.getWorkspace().addResourceChangeListener(this, IResourceChangeEvent.POST_CHANGE);
+ }
+
+ @Override
+ public void dispose() {
+ ResourcesPlugin.getWorkspace().removeResourceChangeListener(this);
+ }
+
+ @Override
+ public void resourceChanged(IResourceChangeEvent event) {
+ try {
+ event.getDelta().accept(delta -> {
+ IResource res = delta.getResource();
+ if (res instanceof IProject) {
+ IProject project = (IProject) res;
+ int kind = delta.getKind();
+ if ((kind & IResourceDelta.ADDED) != 0) {
+ manager.launchObjectAdded(project);
+ } else if ((kind & IResourceDelta.REMOVED) != 0) {
+ manager.launchObjectRemoved(project);
+ } else if ((kind & IResourceDelta.CHANGED) != 0) {
+ int flags = delta.getFlags();
+ // Right now, only care about nature changes
+ if ((flags & IResourceDelta.DESCRIPTION) != 0) {
+ manager.launchObjectChanged(project);
+ }
+ }
+ return false;
+ } else if (res instanceof IFile || res instanceof IFolder) {
+ return false;
+ }
+ return true;
+ });
+ } catch (CoreException e) {
+ Activator.log(e.getStatus());
+ }
+ }
+}
diff --git a/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/messages.properties b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/messages.properties
new file mode 100644
index 00000000000..52f961bd86f
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/messages.properties
@@ -0,0 +1,19 @@
+################################################################################
+# Copyright (c) 2014 QNX Software Systems and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Doug Schaefer
+################################################################################
+ILaunchTarget_notSupported=getWorkingCopy is not supported for NULL_TARGET
+LaunchBarManager_0=Launch Bar Initialization
+LaunchBarManager_1=Active descriptor must be in the map of descriptors
+LaunchBarManager_2=Mode is not supported by descriptor
+LocalTarget_name=Local
+OK=OK
diff --git a/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/target/LaunchTarget.java b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/target/LaunchTarget.java
new file mode 100644
index 00000000000..cfdece3f9bc
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/target/LaunchTarget.java
@@ -0,0 +1,112 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.launchbar.core.internal.target;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.core.runtime.PlatformObject;
+import org.eclipse.launchbar.core.internal.Activator;
+import org.eclipse.launchbar.core.target.ILaunchTarget;
+import org.eclipse.launchbar.core.target.ILaunchTargetWorkingCopy;
+import org.osgi.service.prefs.BackingStoreException;
+import org.osgi.service.prefs.Preferences;
+
+public class LaunchTarget extends PlatformObject implements ILaunchTarget {
+ private final String typeId;
+ private final String id;
+ final Preferences attributes;
+
+ /**
+ * This should only be used to create the null target. There are no attributes supported on the
+ * null target.
+ */
+ public LaunchTarget(String typeId, String id) {
+ this.typeId = typeId;
+ this.id = id;
+ this.attributes = null;
+ }
+
+ public LaunchTarget(String typeId, String id, Preferences attributes) {
+ if (typeId == null || id == null || attributes == null)
+ throw new NullPointerException();
+ this.typeId = typeId;
+ this.id = id;
+ this.attributes = attributes;
+ }
+
+ @Override
+ public String getId() {
+ return id;
+ }
+
+ @Override
+ public String getTypeId() {
+ return typeId;
+ }
+
+ @Override
+ public ILaunchTargetWorkingCopy getWorkingCopy() {
+ return new LaunchTargetWorkingCopy(this);
+ }
+
+ @Override
+ public String getAttribute(String key, String defValue) {
+ if (attributes != null) {
+ return attributes.get(key, defValue);
+ } else {
+ return defValue;
+ }
+ }
+
+ @Override
+ public Map<String, String> getAttributes() {
+ Map<String, String> attrs = new HashMap<>();
+ if (attributes != null) {
+ try {
+ for (String key : attributes.keys()) {
+ String value = attributes.get(key, null);
+ if (value != null) {
+ attrs.put(key, value);
+ }
+ }
+ } catch (BackingStoreException e) {
+ Activator.log(e);
+ }
+ }
+ return attrs;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + id.hashCode();
+ result = prime * result + typeId.hashCode();
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ LaunchTarget other = (LaunchTarget) obj;
+ if (!id.equals(other.id))
+ return false;
+ if (!typeId.equals(other.typeId))
+ return false;
+ return true;
+ }
+}
diff --git a/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/target/LaunchTargetManager.java b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/target/LaunchTargetManager.java
new file mode 100644
index 00000000000..474ff44dad1
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/target/LaunchTargetManager.java
@@ -0,0 +1,309 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.launchbar.core.internal.target;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.LinkedHashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtension;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.IExtensionRegistry;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.preferences.InstanceScope;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.launchbar.core.internal.Activator;
+import org.eclipse.launchbar.core.target.ILaunchTarget;
+import org.eclipse.launchbar.core.target.ILaunchTargetListener;
+import org.eclipse.launchbar.core.target.ILaunchTargetManager;
+import org.eclipse.launchbar.core.target.ILaunchTargetManager2;
+import org.eclipse.launchbar.core.target.ILaunchTargetProvider;
+import org.eclipse.launchbar.core.target.TargetStatus;
+import org.osgi.service.prefs.BackingStoreException;
+import org.osgi.service.prefs.Preferences;
+
+public class LaunchTargetManager implements ILaunchTargetManager, ILaunchTargetManager2 {
+
+ private Map<String, Map<String, ILaunchTarget>> targets;
+ private Map<String, IConfigurationElement> typeElements;
+ private Map<String, ILaunchTargetProvider> typeProviders = new LinkedHashMap<>();
+ private List<ILaunchTargetListener> listeners = Collections.synchronizedList(new LinkedList<>());
+
+ private static final String DELIMETER1 = ","; //$NON-NLS-1$
+ private static final String DELIMETER2 = ":"; //$NON-NLS-1$
+ private static final String SLASH = "/"; //$NON-NLS-1$
+ private static final String SLASH_REPLACER = ";"; //$NON-NLS-1$
+
+ private Preferences getTargetsPref() {
+ return InstanceScope.INSTANCE.getNode(Activator.getDefault().getBundle().getSymbolicName())
+ .node(getClass().getSimpleName());
+ }
+
+ private synchronized void initTargets() {
+ if (targets == null) {
+ // load target type elements from registry
+ typeElements = new LinkedHashMap<>();
+ IExtensionRegistry registry = Platform.getExtensionRegistry();
+ IExtensionPoint point = registry
+ .getExtensionPoint(Activator.getDefault().getBundle().getSymbolicName() + ".launchTargetTypes"); //$NON-NLS-1$
+ for (IExtension extension : point.getExtensions()) {
+ for (IConfigurationElement element : extension.getConfigurationElements()) {
+ String id = element.getAttribute("id"); //$NON-NLS-1$
+ if (id != null) {
+ typeElements.put(id, element);
+ }
+ }
+ }
+
+ // load targets from preference store
+ targets = new LinkedHashMap<>();
+ Preferences prefs = getTargetsPref();
+ try {
+ for (String childName : prefs.childrenNames()) {
+ String[] segments = childName.split(DELIMETER1);
+ if (segments.length == 2) {
+ String typeId = segments[0];
+ // Bug 536889 - we need to restore any slashes we changed when creating
+ // the target node so the name will appear correct to the end-user
+ String name = segments[1].replaceAll(SLASH_REPLACER, SLASH);
+
+ Map<String, ILaunchTarget> type = targets.get(typeId);
+ if (type == null) {
+ type = new LinkedHashMap<>();
+ targets.put(typeId, type);
+ }
+
+ type.put(name, new LaunchTarget(typeId, name, prefs.node(childName)));
+ }
+ }
+
+ // convert old type keys
+ if (prefs.keys().length > 0) {
+ for (String typeId : prefs.keys()) {
+ Map<String, ILaunchTarget> type = targets.get(typeId);
+ if (type == null) {
+ type = new LinkedHashMap<>();
+ targets.put(typeId, type);
+ }
+
+ for (String name : prefs.get(typeId, "").split(DELIMETER1)) { //$NON-NLS-1$
+ if (!type.containsKey(name)) {
+ type.put(name, new LaunchTarget(typeId, name, prefs.node(typeId + DELIMETER1 + name)));
+ }
+ }
+
+ // Use children going forward
+ prefs.remove(typeId);
+ }
+
+ prefs.flush();
+ }
+ } catch (BackingStoreException e) {
+ Activator.log(e);
+ }
+
+ // Call the provider's init
+ // TODO check enablement so we don't call them if we don't need to
+ for (String typeId : typeElements.keySet()) {
+ ILaunchTargetProvider provider = getProvider(typeId);
+ if (provider != null) {
+ provider.init(this);
+ }
+ }
+ }
+ }
+
+ private ILaunchTargetProvider getProvider(String typeId) {
+ initTargets();
+ ILaunchTargetProvider provider = typeProviders.get(typeId);
+ if (provider == null) {
+ IConfigurationElement element = typeElements.get(typeId);
+ if (element != null) {
+ try {
+ provider = (ILaunchTargetProvider) element.createExecutableExtension("provider"); //$NON-NLS-1$
+ } catch (CoreException e) {
+ Activator.log(e);
+ }
+ }
+
+ if (provider == null) {
+ provider = new ILaunchTargetProvider() {
+ @Override
+ public void init(ILaunchTargetManager targetManager) {
+ }
+
+ @Override
+ public TargetStatus getStatus(ILaunchTarget target) {
+ return TargetStatus.OK_STATUS;
+ }
+ };
+ }
+ typeProviders.put(typeId, provider);
+ }
+ return provider;
+ }
+
+ @Override
+ public ILaunchTarget[] getLaunchTargets() {
+ initTargets();
+ List<ILaunchTarget> targetList = new ArrayList<>();
+ for (Map<String, ILaunchTarget> type : targets.values()) {
+ targetList.addAll(type.values());
+ }
+ return targetList.toArray(new ILaunchTarget[targetList.size()]);
+ }
+
+ @Override
+ public ILaunchTarget[] getLaunchTargetsOfType(String typeId) {
+ initTargets();
+ Map<String, ILaunchTarget> type = targets.get(typeId);
+ if (type != null) {
+ return type.values().toArray(new ILaunchTarget[type.size()]);
+ }
+ return new ILaunchTarget[0];
+ }
+
+ @Override
+ public ILaunchTarget getLaunchTarget(String typeId, String id) {
+ initTargets();
+ Map<String, ILaunchTarget> type = targets.get(typeId);
+ if (type != null) {
+ return type.get(id);
+ }
+ return null;
+ }
+
+ @Override
+ public TargetStatus getStatus(ILaunchTarget target) {
+ return getProvider(target.getTypeId()).getStatus(target);
+ }
+
+ @Override
+ public ILaunchTarget addLaunchTargetNoNotify(String typeId, String id) {
+ initTargets();
+ Map<String, ILaunchTarget> type = targets.get(typeId);
+ if (type == null) {
+ type = new LinkedHashMap<>();
+ targets.put(typeId, type);
+ }
+
+ try {
+ Preferences prefs = getTargetsPref();
+ // Bug 536889 - replace any slashes in the id with a replacement character
+ // for the child node name but still leave the id intact for the launch target
+ String childName = typeId + DELIMETER1 + id.replaceAll(SLASH, SLASH_REPLACER);
+ Preferences child;
+ if (prefs.nodeExists(childName)) {
+ child = prefs.node(childName);
+ } else {
+ child = prefs.node(childName);
+ // set the id so we have at least one attribute to save
+ child.put("name", id); //$NON-NLS-1$
+ }
+ ILaunchTarget target = new LaunchTarget(typeId, id, child);
+ type.put(id, target);
+ prefs.flush();
+ return target;
+ } catch (BackingStoreException e) {
+ Activator.log(e);
+ return null;
+ }
+ }
+
+ @Override
+ public ILaunchTarget addLaunchTarget(String typeId, String id) {
+ ILaunchTarget target = addLaunchTargetNoNotify(typeId, id);
+ if (target != null) {
+ synchronized (listeners) {
+ for (ILaunchTargetListener listener : listeners) {
+ listener.launchTargetAdded(target);
+ }
+ }
+ }
+ return target;
+ }
+
+ @Override
+ public void removeLaunchTarget(ILaunchTarget target) {
+ initTargets();
+ String typeId = target.getTypeId();
+ Map<String, ILaunchTarget> type = targets.get(typeId);
+ if (type != null) {
+ type.remove(target.getId());
+ if (type.isEmpty()) {
+ targets.remove(target.getTypeId());
+ }
+
+ // Remove the attribute node
+ try {
+ // Bug 536889 - calculate the node name to remove, replacing slashes with a replacement character
+ getTargetsPref().node(typeId + DELIMETER1 + target.getId().replaceAll(SLASH, SLASH_REPLACER))
+ .removeNode();
+ } catch (BackingStoreException e) {
+ Activator.log(e);
+ }
+
+ synchronized (listeners) {
+ for (ILaunchTargetListener listener : listeners) {
+ listener.launchTargetRemoved(target);
+ }
+ }
+ }
+ }
+
+ @Override
+ public void targetStatusChanged(ILaunchTarget target) {
+ synchronized (listeners) {
+ for (ILaunchTargetListener listener : listeners) {
+ listener.launchTargetStatusChanged(target);
+ }
+ }
+ }
+
+ @Override
+ public ILaunchTarget getDefaultLaunchTarget(ILaunchConfiguration configuration) {
+ Preferences prefs = getTargetsPref().node("configs"); //$NON-NLS-1$
+ String targetId = prefs.get(configuration.getName(), null);
+ if (targetId != null) {
+ String[] parts = targetId.split(DELIMETER2);
+ return getLaunchTarget(parts[0], parts[1]);
+ }
+ return null;
+ }
+
+ @Override
+ public void setDefaultLaunchTarget(ILaunchConfiguration configuration, ILaunchTarget target) {
+ Preferences prefs = getTargetsPref().node("configs"); //$NON-NLS-1$
+ String targetId = String.join(DELIMETER2, target.getTypeId(), target.getId());
+ prefs.put(configuration.getName(), targetId);
+ try {
+ prefs.flush();
+ } catch (BackingStoreException e) {
+ Activator.log(e);
+ }
+ }
+
+ @Override
+ public void addListener(ILaunchTargetListener listener) {
+ listeners.add(listener);
+ }
+
+ @Override
+ public void removeListener(ILaunchTargetListener listener) {
+ listeners.remove(listener);
+ }
+
+}
diff --git a/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/target/LaunchTargetPropertyTester.java b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/target/LaunchTargetPropertyTester.java
new file mode 100644
index 00000000000..88c02ec505a
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/target/LaunchTargetPropertyTester.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2016 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.launchbar.core.internal.target;
+
+import org.eclipse.core.expressions.PropertyTester;
+import org.eclipse.launchbar.core.target.ILaunchTarget;
+
+public class LaunchTargetPropertyTester extends PropertyTester {
+
+ @Override
+ public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
+ if (receiver instanceof ILaunchTarget) {
+ if (property.equals("launchTargetType")) { //$NON-NLS-1$
+ return ((ILaunchTarget) receiver).getTypeId().equals(expectedValue);
+ }
+ }
+ return false;
+ }
+
+}
diff --git a/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/target/LaunchTargetWorkingCopy.java b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/target/LaunchTargetWorkingCopy.java
new file mode 100644
index 00000000000..dd68cb73a03
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/target/LaunchTargetWorkingCopy.java
@@ -0,0 +1,113 @@
+/*******************************************************************************
+ * Copyright (c) 2016 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.launchbar.core.internal.target;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.core.runtime.PlatformObject;
+import org.eclipse.launchbar.core.internal.Activator;
+import org.eclipse.launchbar.core.target.ILaunchTarget;
+import org.eclipse.launchbar.core.target.ILaunchTargetManager;
+import org.eclipse.launchbar.core.target.ILaunchTargetWorkingCopy;
+import org.osgi.service.prefs.BackingStoreException;
+
+public class LaunchTargetWorkingCopy extends PlatformObject implements ILaunchTargetWorkingCopy {
+
+ private final LaunchTarget original;
+ private final Map<String, String> changes = new HashMap<>();
+ private String newId;
+
+ public LaunchTargetWorkingCopy(LaunchTarget original) {
+ this.original = original;
+ }
+
+ @Override
+ public ILaunchTarget getOriginal() {
+ return original;
+ }
+
+ @Override
+ public String getTypeId() {
+ return original.getTypeId();
+ }
+
+ @Override
+ public String getId() {
+ return newId != null ? newId : original.getId();
+ }
+
+ @Override
+ public void setId(String id) {
+ newId = id;
+ }
+
+ @Override
+ public ILaunchTargetWorkingCopy getWorkingCopy() {
+ return this;
+ }
+
+ @Override
+ public String getAttribute(String key, String defValue) {
+ if (changes.containsKey(key)) {
+ return changes.get(key);
+ } else {
+ return original.getAttribute(key, defValue);
+ }
+ }
+
+ @Override
+ public Map<String, String> getAttributes() {
+ Map<String, String> attrs = original.getAttributes();
+ attrs.putAll(changes);
+ return attrs;
+ }
+
+ @Override
+ public void setAttribute(String key, String value) {
+ changes.put(key, value);
+ }
+
+ @Override
+ public ILaunchTarget save() {
+ try {
+ LaunchTarget target;
+ if (newId == null || newId.equals(original.getId())) {
+ target = original;
+ } else {
+ // make a new one and remove the old one
+ ILaunchTargetManager manager = Activator.getLaunchTargetManager();
+ target = (LaunchTarget) manager.addLaunchTarget(original.getTypeId(), newId);
+ for (String key : original.attributes.keys()) {
+ target.attributes.put(key, original.getAttribute(key, "")); //$NON-NLS-1$
+ }
+ manager.removeLaunchTarget(original);
+ }
+
+ // set the changed attributes
+ for (Map.Entry<String, String> entry : changes.entrySet()) {
+ String key = entry.getKey();
+ String value = entry.getValue();
+ if (value != null) {
+ target.attributes.put(key, value);
+ } else {
+ target.attributes.remove(key);
+ }
+ }
+ target.attributes.flush();
+ return target;
+ } catch (BackingStoreException e) {
+ Activator.log(e);
+ return original;
+ }
+ }
+
+}
diff --git a/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/target/LocalLaunchTargetProvider.java b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/target/LocalLaunchTargetProvider.java
new file mode 100644
index 00000000000..b010d43881f
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/target/LocalLaunchTargetProvider.java
@@ -0,0 +1,41 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.launchbar.core.internal.target;
+
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.launchbar.core.internal.Messages;
+import org.eclipse.launchbar.core.target.ILaunchTarget;
+import org.eclipse.launchbar.core.target.ILaunchTargetManager;
+import org.eclipse.launchbar.core.target.ILaunchTargetProvider;
+import org.eclipse.launchbar.core.target.ILaunchTargetWorkingCopy;
+import org.eclipse.launchbar.core.target.TargetStatus;
+
+public class LocalLaunchTargetProvider implements ILaunchTargetProvider {
+
+ @Override
+ public void init(ILaunchTargetManager targetManager) {
+ if (targetManager.getLaunchTarget(ILaunchTargetManager.localLaunchTargetTypeId,
+ Messages.LocalTarget_name) == null) {
+ ILaunchTarget target = targetManager.addLaunchTarget(ILaunchTargetManager.localLaunchTargetTypeId,
+ Messages.LocalTarget_name);
+ ILaunchTargetWorkingCopy wc = target.getWorkingCopy();
+ wc.setAttribute(ILaunchTarget.ATTR_OS, Platform.getOS());
+ wc.setAttribute(ILaunchTarget.ATTR_ARCH, Platform.getOSArch());
+ wc.save();
+ }
+ }
+
+ @Override
+ public TargetStatus getStatus(ILaunchTarget target) {
+ return TargetStatus.OK_STATUS;
+ }
+
+}
diff --git a/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/target/ILaunchTarget.java b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/target/ILaunchTarget.java
new file mode 100644
index 00000000000..d45b44a06fe
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/target/ILaunchTarget.java
@@ -0,0 +1,94 @@
+/*******************************************************************************
+ * Copyright (c) 2015, 2016 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.launchbar.core.target;
+
+import java.util.Map;
+
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.launchbar.core.internal.Messages;
+import org.eclipse.launchbar.core.internal.target.LaunchTarget;
+
+/**
+ * A launch target is a thing that a launch will run on. Launch targets are simple objects with the
+ * intention that the launch delegates and launches will adapt this object to an object that will
+ * assist in performing the launch.
+ *
+ * @noimplement not to be implemented by clients
+ */
+public interface ILaunchTarget extends IAdaptable {
+
+ // Standard attributes
+ public static final String ATTR_OS = "os"; //$NON-NLS-1$
+ public static final String ATTR_ARCH = "arch"; //$NON-NLS-1$
+
+ /**
+ * The null target, which is the default when no other target is available.
+ */
+ public static final ILaunchTarget NULL_TARGET = new LaunchTarget("null", "---") { //$NON-NLS-1$ //$NON-NLS-2$
+ @Override
+ public ILaunchTargetWorkingCopy getWorkingCopy() {
+ throw new UnsupportedOperationException(Messages.ILaunchTarget_notSupported);
+ }
+ };
+
+ /**
+ * The id for the target. It is unique for each type.
+ *
+ * @return id for the target.
+ */
+ String getId();
+
+ /**
+ * The user consumable name of the target.
+ *
+ * @deprecated this will be the same as the id
+ * @return name of the target
+ */
+ @Deprecated
+ default String getName() {
+ return getId();
+ }
+
+ /**
+ * The type of the target.
+ *
+ * @return type of the target
+ */
+ String getTypeId();
+
+ /**
+ * Return a string attribute of this target
+ *
+ * @param key
+ * key
+ * @param defValue
+ * default value
+ * @return value of attribute
+ */
+ String getAttribute(String key, String defValue);
+
+ /**
+ * Returns a read-only map of the attributes.
+ *
+ * @return the attributes for this target
+ * @since 2.1
+ */
+ Map<String, String> getAttributes();
+
+ /**
+ * Create a working copy of this launch target to allow setting of attributes. It also allows
+ * changing the id, which results in a new launch target when saved.
+ *
+ * @return launch target working copy
+ */
+ ILaunchTargetWorkingCopy getWorkingCopy();
+
+}
diff --git a/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/target/ILaunchTargetListener.java b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/target/ILaunchTargetListener.java
new file mode 100644
index 00000000000..29b16a4c68c
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/target/ILaunchTargetListener.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.launchbar.core.target;
+
+/**
+ * A listener to changes in the list and status of launch targets.
+ */
+public interface ILaunchTargetListener {
+
+ /**
+ * A launch target was added.
+ *
+ * @param target
+ * the new launch target
+ */
+ default void launchTargetAdded(ILaunchTarget target) {
+ }
+
+ /**
+ * A launch target was removed.
+ *
+ * @param target
+ * the target about to be removed.
+ */
+ default void launchTargetRemoved(ILaunchTarget target) {
+ }
+
+ /**
+ * The status of a target has changed. Query the target to find out what the
+ * new status is.
+ *
+ * @param target
+ * the target whose status has changed
+ */
+ default void launchTargetStatusChanged(ILaunchTarget target) {
+ }
+
+}
diff --git a/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/target/ILaunchTargetManager.java b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/target/ILaunchTargetManager.java
new file mode 100644
index 00000000000..ebb83bef2eb
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/target/ILaunchTargetManager.java
@@ -0,0 +1,125 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.launchbar.core.target;
+
+import org.eclipse.debug.core.ILaunchConfiguration;
+
+/**
+ * The manager for the launch targets. It is registered as an OSGi service.
+ *
+ * @noimplement not to be implemented by clients
+ */
+public interface ILaunchTargetManager {
+
+ /**
+ * The type id for the local launch target type. It is the default launch
+ * target type. It represents launching on the underlying machine on which
+ * we are running. There is only one launch target of this type which
+ * represents that machine.
+ */
+ final String localLaunchTargetTypeId = "org.eclipse.launchbar.core.launchTargetType.local"; //$NON-NLS-1$
+
+ /**
+ * The list of all launch targets.
+ *
+ * @return list of launch targets
+ */
+ ILaunchTarget[] getLaunchTargets();
+
+ /**
+ * The list of launch targets with a given type id.
+ *
+ * @param typeId
+ * the launch target type id
+ * @return list of launch targets
+ */
+ ILaunchTarget[] getLaunchTargetsOfType(String typeId);
+
+ /**
+ * Return the launch target with the given typeId and name
+ *
+ * @param typeId
+ * type of the launch target
+ * @param id
+ * id of the launch target
+ * @return the launch target
+ */
+ ILaunchTarget getLaunchTarget(String typeId, String id);
+
+ /**
+ * Return the status of the launch target.
+ *
+ * @param target
+ * the launch target
+ * @return status
+ */
+ TargetStatus getStatus(ILaunchTarget target);
+
+ /**
+ * Add a launch target with the given typeId, id, and name.
+ *
+ * @param typeId
+ * type id of the launch target
+ * @param id
+ * id for the target.
+ * @return the created launch target
+ */
+ ILaunchTarget addLaunchTarget(String typeId, String id);
+
+ /**
+ * Removes a launch target.
+ *
+ * @param target
+ * the launch target to remove
+ */
+ void removeLaunchTarget(ILaunchTarget target);
+
+ /**
+ * The status of the launch target has changed.
+ *
+ * @param target
+ */
+ void targetStatusChanged(ILaunchTarget target);
+
+ /**
+ * What is the default target to use for this launch configuration.
+ *
+ * @param configuration
+ * launch configuration or null if not set
+ * @return default target for this launch configuration
+ */
+ ILaunchTarget getDefaultLaunchTarget(ILaunchConfiguration configuration);
+
+ /**
+ * Set the default target for the given launch configuration.
+ *
+ * @param configuration
+ * launch configuration
+ * @param target
+ * default target for this launch configuration
+ */
+ void setDefaultLaunchTarget(ILaunchConfiguration configuration, ILaunchTarget target);
+
+ /**
+ * Add a listener.
+ *
+ * @param listener
+ */
+ void addListener(ILaunchTargetListener listener);
+
+ /**
+ * Remove a listener.
+ *
+ * @param listener
+ */
+ void removeListener(ILaunchTargetListener listener);
+
+}
diff --git a/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/target/ILaunchTargetManager2.java b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/target/ILaunchTargetManager2.java
new file mode 100644
index 00000000000..f22867ee2ee
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/target/ILaunchTargetManager2.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Red Hat Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.launchbar.core.target;
+
+/**
+ * Launch target manager extensions.
+ *
+ * @noimplement not to be implemented by clients
+ */
+public interface ILaunchTargetManager2 {
+
+ /**
+ * Add a launch target with the given typeId, id, and name but no notification.
+ *
+ * @param typeId
+ * type id of the launch target
+ * @param id
+ * id for the target.
+ * @return the created launch target
+ */
+ ILaunchTarget addLaunchTargetNoNotify(String typeId, String id);
+
+}
diff --git a/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/target/ILaunchTargetProvider.java b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/target/ILaunchTargetProvider.java
new file mode 100644
index 00000000000..15f660447ec
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/target/ILaunchTargetProvider.java
@@ -0,0 +1,29 @@
+package org.eclipse.launchbar.core.target;
+
+/**
+ * A launch target provider is responsible for managing the list and status of
+ * launch targets. Providers are associated with launch target types in the
+ * launchTargetTypes extension point.
+ */
+public interface ILaunchTargetProvider {
+
+ /**
+ * Called by the launch target manager when it first sees a target of the
+ * type. Or on startup if the provider is enabled. It is expected the
+ * provider will sync the list of targets with it's internal list and alert
+ * the manager of any non-OK statuses.
+ *
+ * @param targetManager
+ */
+ void init(ILaunchTargetManager targetManager);
+
+ /**
+ * Fetch the status for the launch target.
+ *
+ * @param target
+ * the launch target
+ * @return status of the launch target
+ */
+ TargetStatus getStatus(ILaunchTarget target);
+
+}
diff --git a/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/target/ILaunchTargetWorkingCopy.java b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/target/ILaunchTargetWorkingCopy.java
new file mode 100644
index 00000000000..9eb27ff736f
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/target/ILaunchTargetWorkingCopy.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * Copyright (c) 2016 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.launchbar.core.target;
+
+/**
+ * Working copy to set attributes on a target and then save them.
+ */
+public interface ILaunchTargetWorkingCopy extends ILaunchTarget {
+
+ /**
+ * Get the original launch target.
+ *
+ * @return the original launch target
+ */
+ ILaunchTarget getOriginal();
+
+ /**
+ * Gives the target a new ID. The save method will return a new target with the given name.e
+ *
+ * @param id
+ * new target ID
+ */
+ void setId(String id);
+
+ /**
+ * Set an attribute.
+ *
+ * @param key
+ * key
+ * @param value
+ * value
+ */
+ void setAttribute(String key, String value);
+
+ /**
+ * Save the changes to the original working copy.
+ *
+ * @return original launch target unless the id was changed in which case returns a new target
+ */
+ ILaunchTarget save();
+
+}
diff --git a/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/target/TargetStatus.java b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/target/TargetStatus.java
new file mode 100644
index 00000000000..05fea9e02f3
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/target/TargetStatus.java
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.launchbar.core.target;
+
+import org.eclipse.launchbar.core.internal.Messages;
+
+/**
+ * The status for a launch target.
+ */
+public class TargetStatus {
+
+ public enum Code {
+ OK, WARNING, ERROR
+ }
+
+ private final TargetStatus.Code code;
+ private final String message;
+
+ public static final TargetStatus OK_STATUS = new TargetStatus(Code.OK, Messages.OK);
+
+ public TargetStatus(TargetStatus.Code code, String message) {
+ this.code = code;
+ this.message = message;
+ }
+
+ public TargetStatus.Code getCode() {
+ return code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+} \ No newline at end of file
diff --git a/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/target/launch/ILaunchConfigurationTargetedDelegate.java b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/target/launch/ILaunchConfigurationTargetedDelegate.java
new file mode 100644
index 00000000000..c9005707cd9
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/target/launch/ILaunchConfigurationTargetedDelegate.java
@@ -0,0 +1,133 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.launchbar.core.target.launch;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.model.ILaunchConfigurationDelegate;
+import org.eclipse.launchbar.core.target.ILaunchTarget;
+
+/**
+ * An ILaunchConfigurationDelegate2 converted to take ILaunchTarget as an
+ * additional parameter.
+ */
+public interface ILaunchConfigurationTargetedDelegate extends ILaunchConfigurationDelegate {
+
+ /**
+ * Returns a launch object to use when launching the given launch
+ * configuration in the given mode, or <code>null</code> if a new default
+ * launch object should be created by the debug platform. If a launch object
+ * is returned, its launch mode must match that of the mode specified in
+ * this method call.
+ *
+ * @param configuration
+ * the configuration being launched
+ * @param mode
+ * the mode the configuration is being launched in
+ * @return a launch object or <code>null</code>
+ * @throws CoreException
+ * if unable to launch
+ */
+ public ITargetedLaunch getLaunch(ILaunchConfiguration configuration, String mode, ILaunchTarget target)
+ throws CoreException;
+
+ /**
+ * Optionally performs any required building before launching the given
+ * configuration in the specified mode, and returns whether the debug
+ * platform should perform an incremental workspace build before the launch
+ * continues. If <code>false</code> is returned the launch will proceed
+ * without further building, and if <code>true</code> is returned an
+ * incremental build will be performed on the workspace before launching.
+ * <p>
+ * This method is only called if the launch is invoked with flag indicating
+ * building should take place before the launch. This is done via the method
+ * <code>ILaunchConfiguration.launch(String mode, IProgressMonitor monitor, boolean build)</code>
+ * .
+ * </p>
+ *
+ * @param configuration
+ * the configuration being launched
+ * @param mode
+ * the mode the configuration is being launched in
+ * @param monitor
+ * progress monitor, or <code>null</code>. A cancelable progress
+ * monitor is provided by the Job framework. It should be noted
+ * that the setCanceled(boolean) method should never be called on
+ * the provided monitor or the monitor passed to any delegates
+ * from this method; due to a limitation in the progress monitor
+ * framework using the setCanceled method can cause entire
+ * workspace batch jobs to be canceled, as the canceled flag is
+ * propagated up the top-level parent monitor. The provided
+ * monitor is not guaranteed to have been started.
+ * @return whether the debug platform should perform an incremental
+ * workspace build before the launch
+ * @throws CoreException
+ * if an exception occurs while building
+ */
+ public boolean buildForLaunch(ILaunchConfiguration configuration, String mode, ILaunchTarget target,
+ IProgressMonitor monitor) throws CoreException;
+
+ /**
+ * Returns whether a launch should proceed. This method is called after
+ * <code>preLaunchCheck()</code> and <code>buildForLaunch()</code> providing
+ * a final chance for this launch delegate to abort a launch if required.
+ * For example, a delegate could cancel a launch if it discovered
+ * compilation errors that would prevent the launch from succeeding.
+ *
+ * @param configuration
+ * the configuration being launched
+ * @param mode
+ * launch mode
+ * @param monitor
+ * progress monitor, or <code>null</code>. A cancelable progress
+ * monitor is provided by the Job framework. It should be noted
+ * that the setCanceled(boolean) method should never be called on
+ * the provided monitor or the monitor passed to any delegates
+ * from this method; due to a limitation in the progress monitor
+ * framework using the setCanceled method can cause entire
+ * workspace batch jobs to be canceled, as the canceled flag is
+ * propagated up the top-level parent monitor. The provided
+ * monitor is not guaranteed to have been started.
+ * @return whether the launch should proceed
+ * @throws CoreException
+ * if an exception occurs during final checks
+ */
+ public boolean finalLaunchCheck(ILaunchConfiguration configuration, String mode, ILaunchTarget target,
+ IProgressMonitor monitor) throws CoreException;
+
+ /**
+ * Returns whether a launch should proceed. This method is called first in
+ * the launch sequence providing an opportunity for this launch delegate to
+ * abort the launch.
+ *
+ * @param configuration
+ * configuration being launched
+ * @param mode
+ * launch mode
+ * @param monitor
+ * progress monitor, or <code>null</code>. A cancelable progress
+ * monitor is provided by the Job framework. It should be noted
+ * that the setCanceled(boolean) method should never be called on
+ * the provided monitor or the monitor passed to any delegates
+ * from this method; due to a limitation in the progress monitor
+ * framework using the setCanceled method can cause entire
+ * workspace batch jobs to be canceled, as the canceled flag is
+ * propagated up the top-level parent monitor. The provided
+ * monitor is not guaranteed to have been started.
+ * @return whether the launch should proceed
+ * @throws CoreException
+ * if an exception occurs while performing pre-launch checks
+ */
+ public boolean preLaunchCheck(ILaunchConfiguration configuration, String mode, ILaunchTarget target,
+ IProgressMonitor monitor) throws CoreException;
+
+}
diff --git a/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/target/launch/ITargetedLaunch.java b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/target/launch/ITargetedLaunch.java
new file mode 100644
index 00000000000..31da57d676e
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/target/launch/ITargetedLaunch.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.launchbar.core.target.launch;
+
+import org.eclipse.debug.core.ILaunch;
+import org.eclipse.launchbar.core.target.ILaunchTarget;
+
+/**
+ * A launch that knows what target it's running on.
+ */
+public interface ITargetedLaunch extends ILaunch {
+
+ /**
+ * The target this launch will or is running on.
+ *
+ * @return launch target
+ */
+ ILaunchTarget getLaunchTarget();
+
+}
diff --git a/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/target/launch/LaunchConfigurationTargetedDelegate.java b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/target/launch/LaunchConfigurationTargetedDelegate.java
new file mode 100644
index 00000000000..00d621e78bd
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/target/launch/LaunchConfigurationTargetedDelegate.java
@@ -0,0 +1,90 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.launchbar.core.target.launch;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.debug.core.ILaunch;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.model.LaunchConfigurationDelegate;
+import org.eclipse.launchbar.core.internal.Activator;
+import org.eclipse.launchbar.core.target.ILaunchTarget;
+
+/**
+ * An implementation of the ILaunchConfigurationTargetedDelegate.
+ *
+ * Implements the ILaunchConfigurationDelegate2 interfaces to pick out the
+ * default target and pass it the targeted delegate methods.
+ *
+ * The default for the targeted delegate methods is to call the non targeted
+ * methods in the super class.
+ *
+ */
+public abstract class LaunchConfigurationTargetedDelegate extends LaunchConfigurationDelegate
+ implements ILaunchConfigurationTargetedDelegate {
+
+ @Override
+ public ILaunch getLaunch(ILaunchConfiguration configuration, String mode) throws CoreException {
+ ILaunchTarget target = Activator.getLaunchTargetManager().getDefaultLaunchTarget(configuration);
+ return getLaunch(configuration, mode, target);
+ }
+
+ @Override
+ public ITargetedLaunch getLaunch(ILaunchConfiguration configuration, String mode, ILaunchTarget target)
+ throws CoreException {
+ return new TargetedLaunch(configuration, mode, target, null);
+ }
+
+ @Override
+ public boolean buildForLaunch(ILaunchConfiguration configuration, String mode, IProgressMonitor monitor)
+ throws CoreException {
+ ILaunchTarget target = Activator.getLaunchTargetManager().getDefaultLaunchTarget(configuration);
+ return buildForLaunch(configuration, mode, target, monitor);
+ }
+
+ @Override
+ public boolean buildForLaunch(ILaunchConfiguration configuration, String mode, ILaunchTarget target,
+ IProgressMonitor monitor) throws CoreException {
+ return super.buildForLaunch(configuration, mode, monitor);
+ }
+
+ public boolean superBuildForLaunch(ILaunchConfiguration configuration, String mode, IProgressMonitor monitor)
+ throws CoreException {
+ return super.buildForLaunch(configuration, mode, monitor);
+ }
+
+ @Override
+ public boolean preLaunchCheck(ILaunchConfiguration configuration, String mode, IProgressMonitor monitor)
+ throws CoreException {
+ ILaunchTarget target = Activator.getLaunchTargetManager().getDefaultLaunchTarget(configuration);
+ return preLaunchCheck(configuration, mode, target, monitor);
+ }
+
+ @Override
+ public boolean preLaunchCheck(ILaunchConfiguration configuration, String mode, ILaunchTarget target,
+ IProgressMonitor monitor) throws CoreException {
+ return super.preLaunchCheck(configuration, mode, monitor);
+ }
+
+ @Override
+ public boolean finalLaunchCheck(ILaunchConfiguration configuration, String mode, IProgressMonitor monitor)
+ throws CoreException {
+ ILaunchTarget target = Activator.getLaunchTargetManager().getDefaultLaunchTarget(configuration);
+ return finalLaunchCheck(configuration, mode, target, monitor);
+ }
+
+ @Override
+ public boolean finalLaunchCheck(ILaunchConfiguration configuration, String mode, ILaunchTarget target,
+ IProgressMonitor monitor) throws CoreException {
+ return super.finalLaunchCheck(configuration, mode, monitor);
+ }
+
+}
diff --git a/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/target/launch/TargetedLaunch.java b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/target/launch/TargetedLaunch.java
new file mode 100644
index 00000000000..6ac911185a3
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/target/launch/TargetedLaunch.java
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.launchbar.core.target.launch;
+
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.Launch;
+import org.eclipse.debug.core.model.ISourceLocator;
+import org.eclipse.launchbar.core.target.ILaunchTarget;
+
+/**
+ * A ITargetedLaunch implementation that simply extends the standard Launch
+ * class to store the launch target.
+ */
+public class TargetedLaunch extends Launch implements ITargetedLaunch {
+
+ private final ILaunchTarget launchTarget;
+
+ public TargetedLaunch(ILaunchConfiguration launchConfiguration, String mode, ILaunchTarget launchTarget,
+ ISourceLocator locator) {
+ super(launchConfiguration, mode, locator);
+ this.launchTarget = launchTarget;
+ }
+
+ @Override
+ public ILaunchTarget getLaunchTarget() {
+ return launchTarget;
+ }
+
+}
diff --git a/launchbar/org.eclipse.launchbar.remote.core/.classpath b/launchbar/org.eclipse.launchbar.remote.core/.classpath
new file mode 100644
index 00000000000..e801ebfb468
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.remote.core/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/launchbar/org.eclipse.launchbar.remote.core/.project b/launchbar/org.eclipse.launchbar.remote.core/.project
new file mode 100644
index 00000000000..1196bb65c5f
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.remote.core/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.launchbar.remote.core</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+ </natures>
+</projectDescription>
diff --git a/launchbar/org.eclipse.launchbar.remote.core/.settings/org.eclipse.core.resources.prefs b/launchbar/org.eclipse.launchbar.remote.core/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.remote.core/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/launchbar/org.eclipse.launchbar.remote.core/.settings/org.eclipse.jdt.core.prefs b/launchbar/org.eclipse.launchbar.remote.core/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..e3a8104f9ca
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.remote.core/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/releng/org.eclipse.cdt/.settings/org.eclipse.jdt.launching.prefs b/launchbar/org.eclipse.launchbar.remote.core/.settings/org.eclipse.jdt.launching.prefs
index f8a131b56e0..f8a131b56e0 100644
--- a/releng/org.eclipse.cdt/.settings/org.eclipse.jdt.launching.prefs
+++ b/launchbar/org.eclipse.launchbar.remote.core/.settings/org.eclipse.jdt.launching.prefs
diff --git a/launchbar/org.eclipse.launchbar.remote.core/.settings/org.eclipse.jdt.ui.prefs b/launchbar/org.eclipse.launchbar.remote.core/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.remote.core/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/.settings/org.eclipse.pde.api.tools.prefs b/launchbar/org.eclipse.launchbar.remote.core/.settings/org.eclipse.pde.api.tools.prefs
index ec9fbf321d0..ec9fbf321d0 100644
--- a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/.settings/org.eclipse.pde.api.tools.prefs
+++ b/launchbar/org.eclipse.launchbar.remote.core/.settings/org.eclipse.pde.api.tools.prefs
diff --git a/xlc/org.eclipse.cdt.make.xlc.core/.settings/org.eclipse.pde.prefs b/launchbar/org.eclipse.launchbar.remote.core/.settings/org.eclipse.pde.prefs
index d2dc703ba9e..d2dc703ba9e 100644
--- a/xlc/org.eclipse.cdt.make.xlc.core/.settings/org.eclipse.pde.prefs
+++ b/launchbar/org.eclipse.launchbar.remote.core/.settings/org.eclipse.pde.prefs
diff --git a/launchbar/org.eclipse.launchbar.remote.core/META-INF/MANIFEST.MF b/launchbar/org.eclipse.launchbar.remote.core/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..b6f5fd5f2e5
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.remote.core/META-INF/MANIFEST.MF
@@ -0,0 +1,17 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.launchbar.remote.core;singleton:=true
+Bundle-Version: 1.1.100.qualifier
+Bundle-Activator: org.eclipse.launchbar.remote.core.internal.Activator
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.launchbar.core;bundle-version="2.0.0",
+ org.eclipse.remote.core;bundle-version="2.0.0"
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.launchbar.remote.core,
+ org.eclipse.launchbar.remote.core.internal;x-friends:="org.eclipse.launchbar.remote.ui"
+Automatic-Module-Name: org.eclipse.launchbar.remote.core
+Bundle-Localization: plugin
+Bundle-Vendor: %providerName
diff --git a/launchbar/org.eclipse.launchbar.remote.core/about.html b/launchbar/org.eclipse.launchbar.remote.core/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.remote.core/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/launchbar/org.eclipse.launchbar.remote.core/build.properties b/launchbar/org.eclipse.launchbar.remote.core/build.properties
new file mode 100644
index 00000000000..1dde0d2c61c
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.remote.core/build.properties
@@ -0,0 +1,8 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.properties,\
+ about.html,\
+ plugin.xml
+src.includes = about.html
diff --git a/launchbar/org.eclipse.launchbar.remote.core/plugin.properties b/launchbar/org.eclipse.launchbar.remote.core/plugin.properties
new file mode 100644
index 00000000000..6202a705fde
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.remote.core/plugin.properties
@@ -0,0 +1,14 @@
+##################################################################################
+# Copyright (c) 2020 Torbjörn Svensson and others. All rights reserved.
+# This program and the accompanying materials are made available under the terms
+# of the Eclipse Public License 2.0 which accompanies this distribution, and is
+# available at https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Torbjörn Svensson - initial API and implementation
+##################################################################################
+
+pluginName = LaunchBar Remote Core
+providerName = Eclipse CDT
diff --git a/launchbar/org.eclipse.launchbar.remote.core/plugin.xml b/launchbar/org.eclipse.launchbar.remote.core/plugin.xml
new file mode 100644
index 00000000000..326a151ef5e
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.remote.core/plugin.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension
+ point="org.eclipse.core.runtime.adapters">
+ <factory
+ adaptableType="org.eclipse.launchbar.core.target.ILaunchTarget"
+ class="org.eclipse.launchbar.remote.core.internal.RemoteTargetAdapterFactory">
+ <adapter
+ type="org.eclipse.remote.core.IRemoteConnection">
+ </adapter>
+ </factory>
+ </extension>
+
+</plugin>
diff --git a/launchbar/org.eclipse.launchbar.remote.core/src/org/eclipse/launchbar/remote/core/RemoteLaunchTargetProvider.java b/launchbar/org.eclipse.launchbar.remote.core/src/org/eclipse/launchbar/remote/core/RemoteLaunchTargetProvider.java
new file mode 100644
index 00000000000..ee2cbbf34f3
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.remote.core/src/org/eclipse/launchbar/remote/core/RemoteLaunchTargetProvider.java
@@ -0,0 +1,108 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.launchbar.remote.core;
+
+import org.eclipse.launchbar.core.target.ILaunchTarget;
+import org.eclipse.launchbar.core.target.ILaunchTargetManager;
+import org.eclipse.launchbar.core.target.ILaunchTargetProvider;
+import org.eclipse.launchbar.core.target.TargetStatus;
+import org.eclipse.launchbar.core.target.TargetStatus.Code;
+import org.eclipse.launchbar.remote.core.internal.Activator;
+import org.eclipse.launchbar.remote.core.internal.Messages;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteConnectionChangeListener;
+import org.eclipse.remote.core.IRemoteConnectionType;
+import org.eclipse.remote.core.IRemoteConnectionWorkingCopy;
+import org.eclipse.remote.core.IRemoteServicesManager;
+import org.eclipse.remote.core.RemoteConnectionChangeEvent;
+
+public abstract class RemoteLaunchTargetProvider implements ILaunchTargetProvider, IRemoteConnectionChangeListener {
+
+ private static final TargetStatus CLOSED = new TargetStatus(Code.ERROR, Messages.RemoteLaunchTargetProvider_Closed);
+
+ private ILaunchTargetManager targetManager;
+
+ protected abstract String getTypeId();
+
+ protected void initLaunchTarget(ILaunchTarget target) {
+ // default nothing
+ }
+
+ @Override
+ public void init(ILaunchTargetManager targetManager) {
+ this.targetManager = targetManager;
+ String typeId = getTypeId();
+
+ IRemoteServicesManager remoteManager = Activator.getService(IRemoteServicesManager.class);
+
+ // Remove missing ones
+ for (ILaunchTarget target : targetManager.getLaunchTargetsOfType(typeId)) {
+ IRemoteConnection connection = target.getAdapter(IRemoteConnection.class);
+ if (connection == null) {
+ targetManager.removeLaunchTarget(target);
+ }
+ }
+
+ // Add new ones
+ IRemoteConnectionType remoteType = remoteManager.getConnectionType(typeId);
+ for (IRemoteConnection remote : remoteType.getConnections()) {
+ String id = remote.getName();
+ if (targetManager.getLaunchTarget(typeId, id) == null) {
+ initLaunchTarget(targetManager.addLaunchTarget(typeId, id));
+ }
+ }
+
+ remoteManager.addRemoteConnectionChangeListener(this);
+ }
+
+ @Override
+ public TargetStatus getStatus(ILaunchTarget target) {
+ IRemoteConnection connection = target.getAdapter(IRemoteConnection.class);
+ if (connection != null) {
+ if (connection.isOpen()) {
+ return TargetStatus.OK_STATUS;
+ } else {
+ return CLOSED;
+ }
+ }
+ return new TargetStatus(Code.ERROR, Messages.RemoteLaunchTargetProvider_Missing);
+ }
+
+ @Override
+ public void connectionChanged(RemoteConnectionChangeEvent event) {
+ IRemoteConnection connection = event.getConnection();
+ if (connection.getConnectionType().getId().equals(getTypeId())) {
+ switch (event.getType()) {
+ case RemoteConnectionChangeEvent.CONNECTION_ADDED:
+ initLaunchTarget(targetManager.addLaunchTarget(getTypeId(), connection.getName()));
+ break;
+ case RemoteConnectionChangeEvent.CONNECTION_REMOVED:
+ ILaunchTarget target = targetManager.getLaunchTarget(getTypeId(), connection.getName());
+ if (target != null) {
+ targetManager.removeLaunchTarget(target);
+ }
+ break;
+ case RemoteConnectionChangeEvent.CONNECTION_RENAMED:
+ if (connection instanceof IRemoteConnectionWorkingCopy) {
+ IRemoteConnectionWorkingCopy wc = (IRemoteConnectionWorkingCopy) connection;
+ IRemoteConnection original = ((IRemoteConnectionWorkingCopy) connection).getOriginal();
+ target = targetManager.getLaunchTarget(getTypeId(), original.getName());
+ if (target != null) {
+ targetManager.removeLaunchTarget(target);
+ }
+ initLaunchTarget(targetManager.addLaunchTarget(getTypeId(), wc.getName()));
+ }
+ break;
+ }
+ }
+ }
+
+}
diff --git a/launchbar/org.eclipse.launchbar.remote.core/src/org/eclipse/launchbar/remote/core/internal/Activator.java b/launchbar/org.eclipse.launchbar.remote.core/src/org/eclipse/launchbar/remote/core/internal/Activator.java
new file mode 100644
index 00000000000..1583f34c241
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.remote.core/src/org/eclipse/launchbar/remote/core/internal/Activator.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.launchbar.remote.core.internal;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.eclipse.launchbar.remote.core"; //$NON-NLS-1$
+
+ // The shared instance
+ private static Activator plugin;
+
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+ public static <T> T getService(Class<T> service) {
+ BundleContext context = plugin.getBundle().getBundleContext();
+ ServiceReference<T> ref = context.getServiceReference(service);
+ return ref != null ? context.getService(ref) : null;
+ }
+
+}
diff --git a/launchbar/org.eclipse.launchbar.remote.core/src/org/eclipse/launchbar/remote/core/internal/Messages.java b/launchbar/org.eclipse.launchbar.remote.core/src/org/eclipse/launchbar/remote/core/internal/Messages.java
new file mode 100644
index 00000000000..6a27294d7b4
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.remote.core/src/org/eclipse/launchbar/remote/core/internal/Messages.java
@@ -0,0 +1,26 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.launchbar.remote.core.internal;
+
+import org.eclipse.osgi.util.NLS;
+
+public class Messages extends NLS {
+ private static final String BUNDLE_NAME = "org.eclipse.launchbar.remote.core.internal.messages"; //$NON-NLS-1$
+ public static String RemoteLaunchTargetProvider_Closed;
+ public static String RemoteLaunchTargetProvider_Missing;
+ static {
+ // initialize resource bundle
+ NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+ }
+
+ private Messages() {
+ }
+}
diff --git a/launchbar/org.eclipse.launchbar.remote.core/src/org/eclipse/launchbar/remote/core/internal/RemoteTargetAdapterFactory.java b/launchbar/org.eclipse.launchbar.remote.core/src/org/eclipse/launchbar/remote/core/internal/RemoteTargetAdapterFactory.java
new file mode 100644
index 00000000000..9fd2a658efd
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.remote.core/src/org/eclipse/launchbar/remote/core/internal/RemoteTargetAdapterFactory.java
@@ -0,0 +1,41 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.launchbar.remote.core.internal;
+
+import org.eclipse.core.runtime.IAdapterFactory;
+import org.eclipse.launchbar.core.target.ILaunchTarget;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteConnectionType;
+import org.eclipse.remote.core.IRemoteServicesManager;
+
+public class RemoteTargetAdapterFactory implements IAdapterFactory {
+
+ private static final IRemoteServicesManager remoteManager = Activator.getService(IRemoteServicesManager.class);
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public <T> T getAdapter(Object adaptableObject, Class<T> adapterType) {
+ if (adaptableObject instanceof ILaunchTarget) {
+ ILaunchTarget target = (ILaunchTarget) adaptableObject;
+ IRemoteConnectionType remoteType = remoteManager.getConnectionType(target.getTypeId());
+ if (remoteType != null) {
+ return (T) remoteType.getConnection(target.getId());
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public Class<?>[] getAdapterList() {
+ return new Class[] { IRemoteConnection.class };
+ }
+
+}
diff --git a/launchbar/org.eclipse.launchbar.remote.core/src/org/eclipse/launchbar/remote/core/internal/messages.properties b/launchbar/org.eclipse.launchbar.remote.core/src/org/eclipse/launchbar/remote/core/internal/messages.properties
new file mode 100644
index 00000000000..fcc2297dd0f
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.remote.core/src/org/eclipse/launchbar/remote/core/internal/messages.properties
@@ -0,0 +1,12 @@
+#******************************************************************************
+# Copyright (c) 2015 QNX Software Systems and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#******************************************************************************
+RemoteLaunchTargetProvider_Closed=Closed
+RemoteLaunchTargetProvider_Missing=Connection missing
diff --git a/launchbar/org.eclipse.launchbar.remote.ui/.classpath b/launchbar/org.eclipse.launchbar.remote.ui/.classpath
new file mode 100644
index 00000000000..e801ebfb468
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.remote.ui/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/launchbar/org.eclipse.launchbar.remote.ui/.project b/launchbar/org.eclipse.launchbar.remote.ui/.project
new file mode 100644
index 00000000000..adb9b38ff34
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.remote.ui/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.launchbar.remote.ui</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+ </natures>
+</projectDescription>
diff --git a/launchbar/org.eclipse.launchbar.remote.ui/.settings/org.eclipse.core.resources.prefs b/launchbar/org.eclipse.launchbar.remote.ui/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.remote.ui/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/launchbar/org.eclipse.launchbar.remote.ui/.settings/org.eclipse.jdt.core.prefs b/launchbar/org.eclipse.launchbar.remote.ui/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..e3a8104f9ca
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.remote.ui/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/releng/scripts/.settings/org.eclipse.jdt.launching.prefs b/launchbar/org.eclipse.launchbar.remote.ui/.settings/org.eclipse.jdt.launching.prefs
index f8a131b56e0..f8a131b56e0 100644
--- a/releng/scripts/.settings/org.eclipse.jdt.launching.prefs
+++ b/launchbar/org.eclipse.launchbar.remote.ui/.settings/org.eclipse.jdt.launching.prefs
diff --git a/launchbar/org.eclipse.launchbar.remote.ui/.settings/org.eclipse.jdt.ui.prefs b/launchbar/org.eclipse.launchbar.remote.ui/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.remote.ui/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/.settings/org.eclipse.pde.api.tools.prefs b/launchbar/org.eclipse.launchbar.remote.ui/.settings/org.eclipse.pde.api.tools.prefs
index ec9fbf321d0..ec9fbf321d0 100644
--- a/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/.settings/org.eclipse.pde.api.tools.prefs
+++ b/launchbar/org.eclipse.launchbar.remote.ui/.settings/org.eclipse.pde.api.tools.prefs
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.core/.settings/org.eclipse.pde.prefs b/launchbar/org.eclipse.launchbar.remote.ui/.settings/org.eclipse.pde.prefs
index d2dc703ba9e..d2dc703ba9e 100644
--- a/xlc/org.eclipse.cdt.managedbuilder.xlc.core/.settings/org.eclipse.pde.prefs
+++ b/launchbar/org.eclipse.launchbar.remote.ui/.settings/org.eclipse.pde.prefs
diff --git a/launchbar/org.eclipse.launchbar.remote.ui/META-INF/MANIFEST.MF b/launchbar/org.eclipse.launchbar.remote.ui/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..24f1d77adf7
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.remote.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,19 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.launchbar.remote.ui;singleton:=true
+Bundle-Version: 1.1.300.qualifier
+Bundle-Activator: org.eclipse.launchbar.remote.ui.internal.Activator
+Bundle-Vendor: %providerName
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.remote.core;bundle-version="2.0.0",
+ org.eclipse.remote.ui;bundle-version="2.0.0",
+ org.eclipse.launchbar.core;bundle-version="2.0.0",
+ org.eclipse.launchbar.ui;bundle-version="2.0.0",
+ org.eclipse.launchbar.remote.core;bundle-version="1.0.0"
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.launchbar.remote.ui
+Automatic-Module-Name: org.eclipse.launchbar.remote.ui
+Bundle-Localization: plugin
diff --git a/launchbar/org.eclipse.launchbar.remote.ui/about.html b/launchbar/org.eclipse.launchbar.remote.ui/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.remote.ui/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/launchbar/org.eclipse.launchbar.remote.ui/about.ini b/launchbar/org.eclipse.launchbar.remote.ui/about.ini
new file mode 100644
index 00000000000..e07a7bb377e
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.remote.ui/about.ini
@@ -0,0 +1,24 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%blurb
+
+# Property "windowImage" contains path to window icon (16x16)
+# needed for primary features only
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=cdt_logo_icon32.png
+
+# Property "aboutImage" contains path to product image (500x330 or 115x164)
+# needed for primary features only
+
+# Property "appName" contains name of the application (translated)
+# needed for primary features only
+
+# Property "welcomePerspective" contains the id of the perspective in which the
+# welcome page is to be opened.
+# optional
diff --git a/launchbar/org.eclipse.launchbar.remote.ui/about.mappings b/launchbar/org.eclipse.launchbar.remote.ui/about.mappings
new file mode 100644
index 00000000000..936a8039c3e
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.remote.ui/about.mappings
@@ -0,0 +1,9 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+# The following should contain the build version.
+# e.g. "0=20200106-1728"
+# This value will be added automatically via the build scripts
+0=${buildId}
diff --git a/launchbar/org.eclipse.launchbar.remote.ui/about.properties b/launchbar/org.eclipse.launchbar.remote.ui/about.properties
new file mode 100644
index 00000000000..c81f5cffbd8
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.remote.ui/about.properties
@@ -0,0 +1,32 @@
+###############################################################################
+# Copyright (c) 2014, 2022 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+# about.properties
+# contains externalized strings for about.ini
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# fill-ins are supplied by about.mappings
+# This file should be translated.
+# NOTE TO TRANSLATOR: Please do not translate the featureVersion variable.
+
+
+blurb=Remote Launch Targets\n\
+\n\
+Version: {featureVersion}\n\
+Build id: {0}\n\
+\n\
+Copyright (c) 2014, 2022 Contributors to the Eclipse Foundation
+\n\
+See the NOTICE file(s) distributed with this work for additional\n\
+information regarding copyright ownership.\n\
+\n\
+Visit http://www.eclipse.org/cdt
diff --git a/launchbar/org.eclipse.launchbar.remote.ui/build.properties b/launchbar/org.eclipse.launchbar.remote.ui/build.properties
new file mode 100644
index 00000000000..6afede3b44d
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.remote.ui/build.properties
@@ -0,0 +1,11 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.properties,\
+ about.html,\
+ about.ini,\
+ about.mappings,\
+ about.properties,\
+ cdt_logo_icon32.png
+src.includes = about.html
diff --git a/launchbar/org.eclipse.launchbar.remote.ui/cdt_logo_icon32.png b/launchbar/org.eclipse.launchbar.remote.ui/cdt_logo_icon32.png
new file mode 100644
index 00000000000..470ca81b327
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.remote.ui/cdt_logo_icon32.png
Binary files differ
diff --git a/launchbar/org.eclipse.launchbar.remote.ui/plugin.properties b/launchbar/org.eclipse.launchbar.remote.ui/plugin.properties
new file mode 100644
index 00000000000..cfa8aa9d13f
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.remote.ui/plugin.properties
@@ -0,0 +1,14 @@
+##################################################################################
+# Copyright (c) 2020 Torbjörn Svensson and others. All rights reserved.
+# This program and the accompanying materials are made available under the terms
+# of the Eclipse Public License 2.0 which accompanies this distribution, and is
+# available at https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Torbjörn Svensson - initial API and implementation
+##################################################################################
+
+pluginName = Remote Launch Target UI
+providerName = Eclipse CDT
diff --git a/launchbar/org.eclipse.launchbar.remote.ui/src/org/eclipse/launchbar/remote/ui/RemoteLaunchTargetLabelProvider.java b/launchbar/org.eclipse.launchbar.remote.ui/src/org/eclipse/launchbar/remote/ui/RemoteLaunchTargetLabelProvider.java
new file mode 100644
index 00000000000..c6d76cf7872
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.remote.ui/src/org/eclipse/launchbar/remote/ui/RemoteLaunchTargetLabelProvider.java
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.launchbar.remote.ui;
+
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.launchbar.core.target.ILaunchTarget;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.ui.IRemoteUIConnectionService;
+import org.eclipse.swt.graphics.Image;
+
+public class RemoteLaunchTargetLabelProvider extends LabelProvider {
+
+ @Override
+ public String getText(Object element) {
+ if (element instanceof ILaunchTarget) {
+ IRemoteConnection connection = ((ILaunchTarget) element).getAdapter(IRemoteConnection.class);
+ if (connection != null) {
+ IRemoteUIConnectionService uiService = connection.getConnectionType()
+ .getService(IRemoteUIConnectionService.class);
+ if (uiService != null) {
+ return uiService.getLabelProvider().getText(connection);
+ }
+ }
+ }
+ return super.getText(element);
+ }
+
+ @Override
+ public Image getImage(Object element) {
+ if (element instanceof ILaunchTarget) {
+ IRemoteConnection connection = ((ILaunchTarget) element).getAdapter(IRemoteConnection.class);
+ if (connection != null) {
+ IRemoteUIConnectionService uiService = connection.getConnectionType()
+ .getService(IRemoteUIConnectionService.class);
+ if (uiService != null) {
+ return uiService.getLabelProvider().getImage(connection);
+ }
+ }
+ }
+ return super.getImage(element);
+ }
+
+}
diff --git a/launchbar/org.eclipse.launchbar.remote.ui/src/org/eclipse/launchbar/remote/ui/internal/Activator.java b/launchbar/org.eclipse.launchbar.remote.ui/src/org/eclipse/launchbar/remote/ui/internal/Activator.java
new file mode 100644
index 00000000000..16e1fcb7fcd
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.remote.ui/src/org/eclipse/launchbar/remote/ui/internal/Activator.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.launchbar.remote.ui.internal;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.eclipse.launchbar.remote.ui"; //$NON-NLS-1$
+
+ // The shared instance
+ private static Activator plugin;
+
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+ public static <T> T getService(Class<T> service) {
+ BundleContext context = plugin.getBundle().getBundleContext();
+ ServiceReference<T> ref = context.getServiceReference(service);
+ return ref != null ? context.getService(ref) : null;
+ }
+
+}
diff --git a/launchbar/org.eclipse.launchbar.remote/.project b/launchbar/org.eclipse.launchbar.remote/.project
new file mode 100644
index 00000000000..d9d66858d17
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.remote/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.launchbar.remote-feature</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.pde.FeatureBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.FeatureNature</nature>
+ </natures>
+</projectDescription>
diff --git a/launchbar/org.eclipse.launchbar.remote/.settings/org.eclipse.core.resources.prefs b/launchbar/org.eclipse.launchbar.remote/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.remote/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/launchbar/org.eclipse.launchbar.remote/about.html b/launchbar/org.eclipse.launchbar.remote/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.remote/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/launchbar/org.eclipse.launchbar.remote/build.properties b/launchbar/org.eclipse.launchbar.remote/build.properties
new file mode 100644
index 00000000000..41fa92fa5b6
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.remote/build.properties
@@ -0,0 +1,3 @@
+bin.includes = feature.xml,\
+ feature.properties,\
+ about.html
diff --git a/launchbar/org.eclipse.launchbar.remote/feature.properties b/launchbar/org.eclipse.launchbar.remote/feature.properties
new file mode 100644
index 00000000000..a500c84cb5c
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.remote/feature.properties
@@ -0,0 +1,36 @@
+###############################################################################
+# Copyright (c) 2005, 2010 IBM Corporation and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# IBM Corporation - initial API and implementation
+###############################################################################
+# features.properties
+# contains externalized strings for feature.xml
+# "%foo" in feature.xml corresponds to the key "foo" in this file
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file should be translated.
+
+# "featureName" property - name of the feature
+featureName=Remote Launch Targets
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse CDT
+
+# "description" property - description of the feature
+description=Support for IRemoteConnections as ILaunchTargets
+
+# copyright
+copyright=\
+Copyright (c) 2015 QNX Software Systems and others\n\
+This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License 2.0\n\
+which accompanies this distribution, and is available at\n\
+https://www.eclipse.org/legal/epl-2.0/
+
diff --git a/launchbar/org.eclipse.launchbar.remote/feature.xml b/launchbar/org.eclipse.launchbar.remote/feature.xml
new file mode 100644
index 00000000000..39f81da91d3
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.remote/feature.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2015, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
+<feature
+ id="org.eclipse.launchbar.remote"
+ label="%featureName"
+ version="10.7.0.qualifier"
+ provider-name="%providerName"
+ plugin="org.eclipse.launchbar.remote.ui"
+ license-feature="org.eclipse.license"
+ license-feature-version="0.0.0">
+
+ <description>
+ %description
+ </description>
+
+ <copyright>
+ %copyright
+ </copyright>
+
+ <license url="%licenseURL">
+ %license
+ </license>
+
+ <plugin
+ id="org.eclipse.launchbar.remote.core"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.launchbar.remote.ui"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+</feature>
diff --git a/launchbar/org.eclipse.launchbar.ui.controls/.classpath b/launchbar/org.eclipse.launchbar.ui.controls/.classpath
new file mode 100644
index 00000000000..e801ebfb468
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.controls/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/launchbar/org.eclipse.launchbar.ui.controls/.project b/launchbar/org.eclipse.launchbar.ui.controls/.project
new file mode 100644
index 00000000000..8939237ebc6
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.controls/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.launchbar.ui.controls</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+ </natures>
+</projectDescription>
diff --git a/launchbar/org.eclipse.launchbar.ui.controls/.settings/org.eclipse.core.resources.prefs b/launchbar/org.eclipse.launchbar.ui.controls/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.controls/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/launchbar/org.eclipse.launchbar.ui.controls/.settings/org.eclipse.jdt.core.prefs b/launchbar/org.eclipse.launchbar.ui.controls/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..e3a8104f9ca
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.controls/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core.tests/.settings/org.eclipse.jdt.launching.prefs b/launchbar/org.eclipse.launchbar.ui.controls/.settings/org.eclipse.jdt.launching.prefs
index f8a131b56e0..f8a131b56e0 100644
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core.tests/.settings/org.eclipse.jdt.launching.prefs
+++ b/launchbar/org.eclipse.launchbar.ui.controls/.settings/org.eclipse.jdt.launching.prefs
diff --git a/launchbar/org.eclipse.launchbar.ui.controls/.settings/org.eclipse.jdt.ui.prefs b/launchbar/org.eclipse.launchbar.ui.controls/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.controls/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/launchbar/org.eclipse.launchbar.ui.controls/.settings/org.eclipse.pde.api.tools.prefs b/launchbar/org.eclipse.launchbar.ui.controls/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 00000000000..ec9fbf321d0
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.controls/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,184 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITH_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_FIELD=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERCLASS_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_CHANGED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENTS=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETERS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Error
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Warning
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+MISSING_EE_DESCRIPTIONS=Warning
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=false
+changed_execution_env=Error
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+incompatible_api_component_version_report_major_without_breaking_change=Warning
+incompatible_api_component_version_report_minor_without_api_change=Warning
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/.settings/org.eclipse.pde.prefs b/launchbar/org.eclipse.launchbar.ui.controls/.settings/org.eclipse.pde.prefs
index d2dc703ba9e..d2dc703ba9e 100644
--- a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/.settings/org.eclipse.pde.prefs
+++ b/launchbar/org.eclipse.launchbar.ui.controls/.settings/org.eclipse.pde.prefs
diff --git a/launchbar/org.eclipse.launchbar.ui.controls/META-INF/MANIFEST.MF b/launchbar/org.eclipse.launchbar.ui.controls/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..85eae4d3b68
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.controls/META-INF/MANIFEST.MF
@@ -0,0 +1,25 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.launchbar.ui.controls;singleton:=true
+Bundle-Version: 1.1.200.qualifier
+Bundle-Activator: org.eclipse.launchbar.ui.controls.internal.Activator
+Bundle-Vendor: %providerName
+Require-Bundle: org.eclipse.osgi.services;bundle-version="3.5.0",
+ org.eclipse.core.runtime,
+ org.eclipse.ui,
+ org.eclipse.e4.core.di.annotations;bundle-version="1.5.0",
+ org.eclipse.e4.core.contexts;bundle-version="1.5.0",
+ org.eclipse.e4.core.services;bundle-version="2.0.0",
+ org.eclipse.e4.ui.model.workbench;bundle-version="1.2.0",
+ org.eclipse.e4.ui.workbench;bundle-version="1.4.0",
+ org.eclipse.debug.ui;bundle-version="3.11.200",
+ org.eclipse.launchbar.core;bundle-version="2.0.0",
+ org.eclipse.launchbar.ui;bundle-version="2.0.0"
+Import-Package: javax.annotation,
+ javax.inject
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Bundle-ActivationPolicy: lazy
+Bundle-Localization: plugin
+Export-Package: org.eclipse.launchbar.ui.controls.internal;x-friends:="org.eclipse.launchbar.ui.tests"
+Automatic-Module-Name: org.eclipse.launchbar.ui.controls
diff --git a/launchbar/org.eclipse.launchbar.ui.controls/about.html b/launchbar/org.eclipse.launchbar.ui.controls/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.controls/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/build/org.eclipse.cdt.cmake.ui/build.properties b/launchbar/org.eclipse.launchbar.ui.controls/build.properties
index a005a482cc3..a005a482cc3 100644
--- a/build/org.eclipse.cdt.cmake.ui/build.properties
+++ b/launchbar/org.eclipse.launchbar.ui.controls/build.properties
diff --git a/launchbar/org.eclipse.launchbar.ui.controls/icons/bgButton.png b/launchbar/org.eclipse.launchbar.ui.controls/icons/bgButton.png
new file mode 100644
index 00000000000..e951bd34a15
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.controls/icons/bgButton.png
Binary files differ
diff --git a/launchbar/org.eclipse.launchbar.ui.controls/icons/build.png b/launchbar/org.eclipse.launchbar.ui.controls/icons/build.png
new file mode 100644
index 00000000000..110cb3a6315
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.controls/icons/build.png
Binary files differ
diff --git a/launchbar/org.eclipse.launchbar.ui.controls/icons/build2_24.png b/launchbar/org.eclipse.launchbar.ui.controls/icons/build2_24.png
new file mode 100644
index 00000000000..d917acea6ab
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.controls/icons/build2_24.png
Binary files differ
diff --git a/launchbar/org.eclipse.launchbar.ui.controls/icons/build2_hot_24.png b/launchbar/org.eclipse.launchbar.ui.controls/icons/build2_hot_24.png
new file mode 100644
index 00000000000..e77ea27915e
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.controls/icons/build2_hot_24.png
Binary files differ
diff --git a/launchbar/org.eclipse.launchbar.ui.controls/icons/build_16.png b/launchbar/org.eclipse.launchbar.ui.controls/icons/build_16.png
new file mode 100644
index 00000000000..c0272bb5d88
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.controls/icons/build_16.png
Binary files differ
diff --git a/launchbar/org.eclipse.launchbar.ui.controls/icons/config_config.png b/launchbar/org.eclipse.launchbar.ui.controls/icons/config_config.png
new file mode 100644
index 00000000000..c3b2ddc8887
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.controls/icons/config_config.png
Binary files differ
diff --git a/launchbar/org.eclipse.launchbar.ui.controls/icons/connected.png b/launchbar/org.eclipse.launchbar.ui.controls/icons/connected.png
new file mode 100644
index 00000000000..4a67a216044
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.controls/icons/connected.png
Binary files differ
diff --git a/launchbar/org.eclipse.launchbar.ui.controls/icons/disconnected.png b/launchbar/org.eclipse.launchbar.ui.controls/icons/disconnected.png
new file mode 100644
index 00000000000..84b1395766c
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.controls/icons/disconnected.png
Binary files differ
diff --git a/launchbar/org.eclipse.launchbar.ui.controls/icons/edit_cold.png b/launchbar/org.eclipse.launchbar.ui.controls/icons/edit_cold.png
new file mode 100644
index 00000000000..5a49a09fa00
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.controls/icons/edit_cold.png
Binary files differ
diff --git a/launchbar/org.eclipse.launchbar.ui.controls/icons/icon_debug_32x32.png b/launchbar/org.eclipse.launchbar.ui.controls/icons/icon_debug_32x32.png
new file mode 100644
index 00000000000..eb338673155
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.controls/icons/icon_debug_32x32.png
Binary files differ
diff --git a/launchbar/org.eclipse.launchbar.ui.controls/icons/icon_profile_32x32.png b/launchbar/org.eclipse.launchbar.ui.controls/icons/icon_profile_32x32.png
new file mode 100644
index 00000000000..1e28fd9f8b0
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.controls/icons/icon_profile_32x32.png
Binary files differ
diff --git a/launchbar/org.eclipse.launchbar.ui.controls/icons/icon_run_32x32.png b/launchbar/org.eclipse.launchbar.ui.controls/icons/icon_run_32x32.png
new file mode 100644
index 00000000000..d704b703b71
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.controls/icons/icon_run_32x32.png
Binary files differ
diff --git a/launchbar/org.eclipse.launchbar.ui.controls/icons/launch.png b/launchbar/org.eclipse.launchbar.ui.controls/icons/launch.png
new file mode 100644
index 00000000000..d704b703b71
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.controls/icons/launch.png
Binary files differ
diff --git a/launchbar/org.eclipse.launchbar.ui.controls/icons/launch2_24.png b/launchbar/org.eclipse.launchbar.ui.controls/icons/launch2_24.png
new file mode 100644
index 00000000000..b8cee6ed158
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.controls/icons/launch2_24.png
Binary files differ
diff --git a/launchbar/org.eclipse.launchbar.ui.controls/icons/launch2_hot_24.png b/launchbar/org.eclipse.launchbar.ui.controls/icons/launch2_hot_24.png
new file mode 100644
index 00000000000..21cba47b579
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.controls/icons/launch2_hot_24.png
Binary files differ
diff --git a/launchbar/org.eclipse.launchbar.ui.controls/icons/launch_16.png b/launchbar/org.eclipse.launchbar.ui.controls/icons/launch_16.png
new file mode 100644
index 00000000000..08571c1f22e
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.controls/icons/launch_16.png
Binary files differ
diff --git a/launchbar/org.eclipse.launchbar.ui.controls/icons/launch_base_blank.png b/launchbar/org.eclipse.launchbar.ui.controls/icons/launch_base_blank.png
new file mode 100644
index 00000000000..9259f65398f
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.controls/icons/launch_base_blank.png
Binary files differ
diff --git a/launchbar/org.eclipse.launchbar.ui.controls/icons/stop.png b/launchbar/org.eclipse.launchbar.ui.controls/icons/stop.png
new file mode 100644
index 00000000000..b55b7c4e4c6
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.controls/icons/stop.png
Binary files differ
diff --git a/launchbar/org.eclipse.launchbar.ui.controls/icons/stop2_24.png b/launchbar/org.eclipse.launchbar.ui.controls/icons/stop2_24.png
new file mode 100644
index 00000000000..88ba331b3e2
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.controls/icons/stop2_24.png
Binary files differ
diff --git a/launchbar/org.eclipse.launchbar.ui.controls/icons/stop2_hot_24.png b/launchbar/org.eclipse.launchbar.ui.controls/icons/stop2_hot_24.png
new file mode 100644
index 00000000000..d3ec021963b
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.controls/icons/stop2_hot_24.png
Binary files differ
diff --git a/launchbar/org.eclipse.launchbar.ui.controls/icons/stop_16.png b/launchbar/org.eclipse.launchbar.ui.controls/icons/stop_16.png
new file mode 100644
index 00000000000..3544673b689
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.controls/icons/stop_16.png
Binary files differ
diff --git a/launchbar/org.eclipse.launchbar.ui.controls/plugin.properties b/launchbar/org.eclipse.launchbar.ui.controls/plugin.properties
new file mode 100644
index 00000000000..96d32888b5e
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.controls/plugin.properties
@@ -0,0 +1,6 @@
+pluginName = Launch Bar UI Controls
+providerName = Eclipse CDT
+
+launchToolBar.label = LaunchBar
+targetsView.name = Launch Targets
+targetsContent.name = Launch Targets
diff --git a/launchbar/org.eclipse.launchbar.ui.controls/plugin.xml b/launchbar/org.eclipse.launchbar.ui.controls/plugin.xml
new file mode 100644
index 00000000000..653a81b1021
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.controls/plugin.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension
+ id="launchBarInjector"
+ point="org.eclipse.e4.workbench.model">
+ <processor
+ apply="always"
+ beforefragment="false"
+ class="org.eclipse.launchbar.ui.controls.internal.LaunchBarInjector">
+ </processor>
+ </extension>
+ <extension
+ point="org.eclipse.core.runtime.preferences">
+ <initializer
+ class="org.eclipse.launchbar.ui.controls.internal.LaunchBarPreferenceInitializer">
+ </initializer>
+ </extension>
+ <extension
+ point="org.eclipse.ui.preferencePages">
+ <page
+ category="org.eclipse.debug.ui.LaunchingPreferencePage"
+ class="org.eclipse.launchbar.ui.controls.internal.LaunchBarPreferencePage"
+ id="org.eclipse.launchbar.ui.prefPage"
+ name="Launch Bar">
+ </page>
+ </extension>
+ <extension
+ point="org.eclipse.ui.commands">
+ <command
+ categoryId="org.eclipse.launchbar.ui.category.launchBar"
+ defaultHandler="org.eclipse.launchbar.ui.controls.internal.OpenLaunchSelector"
+ id="org.eclipse.launchbar.ui.command.openLaunchSelector"
+ name="Open Launch Bar Config Selector">
+ </command>
+ </extension>
+
+</plugin>
diff --git a/launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/Activator.java b/launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/Activator.java
new file mode 100644
index 00000000000..382b137a1bc
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/Activator.java
@@ -0,0 +1,89 @@
+/*******************************************************************************
+ * Copyright (c) 2016 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.launchbar.ui.controls.internal;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.resource.ImageRegistry;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.eclipse.launchbar.ui.controls"; //$NON-NLS-1$
+
+ // images
+ public static final String IMG_BUTTON_BACKGROUND = "bgButton"; //$NON-NLS-1$
+ public static final String IMG_BUTTON_BUILD = "build"; //$NON-NLS-1$
+ public static final String IMG_BUTTON_LAUNCH = "launch"; //$NON-NLS-1$
+ public static final String IMG_BUTTON_STOP = "stop"; //$NON-NLS-1$
+ public static final String IMG_CONFIG_CONFIG = "config_config"; //$NON-NLS-1$
+ public static final String IMG_EDIT_COLD = "edit_cold"; //$NON-NLS-1$
+
+ // Preference ids
+ public static final String PREF_ENABLE_LAUNCHBAR = "enableLaunchBar"; //$NON-NLS-1$
+ public static final String PREF_ALWAYS_TARGETSELECTOR = "alwaysTargetSelector"; //$NON-NLS-1$
+ public static final String PREF_ENABLE_BUILDBUTTON = "enableBuildButton"; //$NON-NLS-1$
+ public static final String PREF_LAUNCH_HISTORY_SIZE = "launchHistorySize"; //$NON-NLS-1$
+
+ // The shared instance
+ private static Activator plugin;
+
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+
+ ImageRegistry imageRegistry = getImageRegistry();
+ imageRegistry.put(IMG_BUTTON_BACKGROUND, imageDescriptorFromPlugin(PLUGIN_ID, "icons/bgButton.png")); //$NON-NLS-1$
+ imageRegistry.put(IMG_BUTTON_BUILD, imageDescriptorFromPlugin(PLUGIN_ID, "icons/build_16.png")); //$NON-NLS-1$
+ imageRegistry.put(IMG_BUTTON_LAUNCH, imageDescriptorFromPlugin(PLUGIN_ID, "icons/launch_16.png")); //$NON-NLS-1$
+ imageRegistry.put(IMG_BUTTON_STOP, imageDescriptorFromPlugin(PLUGIN_ID, "icons/stop_16.png")); //$NON-NLS-1$
+ imageRegistry.put(IMG_CONFIG_CONFIG, imageDescriptorFromPlugin(PLUGIN_ID, "icons/config_config.png")); //$NON-NLS-1$
+ imageRegistry.put(IMG_EDIT_COLD, imageDescriptorFromPlugin(PLUGIN_ID, "icons/edit_cold.png")); //$NON-NLS-1$
+ }
+
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+ public static <T> T getService(Class<T> service) {
+ BundleContext context = plugin.getBundle().getBundleContext();
+ ServiceReference<T> ref = context.getServiceReference(service);
+ return ref != null ? context.getService(ref) : null;
+ }
+
+ public static void log(Throwable e) {
+ IStatus status;
+ if (e instanceof CoreException) {
+ status = ((CoreException) e).getStatus();
+ } else {
+ status = new Status(IStatus.ERROR, PLUGIN_ID, e.getMessage(), e);
+ }
+ plugin.getLog().log(status);
+ }
+
+ public static void log(String msg) {
+ plugin.getLog().log(new Status(IStatus.ERROR, PLUGIN_ID, msg));
+ }
+}
diff --git a/launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/CButton.java b/launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/CButton.java
new file mode 100644
index 00000000000..4b33fbfbb58
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/CButton.java
@@ -0,0 +1,137 @@
+/*******************************************************************************
+ * Copyright (c) 2014, 2018 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Doug Schaefer
+ *******************************************************************************/
+package org.eclipse.launchbar.ui.controls.internal;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.MouseAdapter;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.events.MouseTrackAdapter;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.widgets.Canvas;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.TypedListener;
+
+public class CButton extends Canvas {
+ private boolean inButton;
+ private Image hotImage;
+ private Image coldImage;
+
+ public CButton(Composite parent, int style) {
+ super(parent, style);
+ addPaintListener(e -> {
+ if (inButton) {
+ if (hotImage != null) {
+ e.gc.drawImage(hotImage, 0, 0);
+ } else if (coldImage != null) {
+ e.gc.drawImage(coldImage, 0, 0);
+ }
+ } else {
+ if (coldImage != null) {
+ e.gc.drawImage(coldImage, 0, 0);
+ } else if (hotImage != null) {
+ e.gc.drawImage(hotImage, 0, 0);
+ }
+ }
+ });
+ addMouseTrackListener(new MouseTrackAdapter() {
+ @Override
+ public void mouseEnter(MouseEvent e) {
+ setSelected(true);
+ }
+
+ @Override
+ public void mouseExit(MouseEvent e) {
+ setSelected(false);
+ }
+ });
+ addMouseListener(new MouseAdapter() {
+ @Override
+ public void mouseUp(MouseEvent e) {
+ setSelected(true);
+ handleSelection(inButton);
+ }
+
+ @Override
+ public void mouseDoubleClick(MouseEvent e) {
+ setSelected(true);
+ handleDefaultSelection(inButton);
+ }
+ });
+ }
+
+ @Override
+ public void dispose() {
+ super.dispose();
+ if (hotImage != null)
+ hotImage.dispose();
+ if (coldImage != null)
+ coldImage.dispose();
+ }
+
+ @Override
+ public Point computeSize(int wHint, int hHint, boolean changed) {
+ int width = 0;
+ int height = 0;
+ if (hotImage != null) {
+ Rectangle bounds = hotImage.getBounds();
+ width = bounds.width;
+ height = bounds.height;
+ }
+ if (coldImage != null) {
+ Rectangle bounds = coldImage.getBounds();
+ if (bounds.width > width)
+ width = bounds.width;
+ if (bounds.height > height)
+ height = bounds.height;
+ }
+ return new Point(width, height);
+ }
+
+ public void setHotImage(Image image) {
+ this.hotImage = image;
+ }
+
+ public void setColdImage(Image image) {
+ this.coldImage = image;
+ }
+
+ protected void handleSelection(boolean selection) {
+ // Send event
+ notifyListeners(SWT.Selection, null);
+ }
+
+ protected void handleDefaultSelection(boolean selection) {
+ // Send event
+ notifyListeners(SWT.DefaultSelection, null);
+ }
+
+ public void addSelectionListener(SelectionListener listener) {
+ checkWidget();
+ TypedListener typedListener = new TypedListener(listener);
+ addListener(SWT.Selection, typedListener);
+ addListener(SWT.DefaultSelection, typedListener);
+ }
+
+ public void setSelected(boolean sel) {
+ inButton = sel;
+ redraw();
+ }
+
+ public boolean isSelected() {
+ return inButton;
+ }
+}
diff --git a/launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/CSelector.java b/launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/CSelector.java
new file mode 100644
index 00000000000..ce1ccc4cbb6
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/CSelector.java
@@ -0,0 +1,522 @@
+/*******************************************************************************
+ * Copyright (c) 2014, 2018 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Doug Schaefer
+ *******************************************************************************/
+package org.eclipse.launchbar.ui.controls.internal;
+
+import java.util.Comparator;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jface.layout.GridLayoutFactory;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.MouseAdapter;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.events.MouseListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.LineAttributes;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Canvas;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.PlatformUI;
+
+public abstract class CSelector extends Composite {
+ private IStructuredContentProvider contentProvider;
+ private ILabelProvider labelProvider;
+ private Comparator<?> sorter;
+ private Comparator<?> sorterTop;
+ private Object input;
+ private Composite buttonComposite;
+ private static final int arrowMax = 2;
+ private Transition arrowTransition;
+ private Object selection;
+ private boolean mouseOver;
+ private Label currentIcon;
+ private Label currentLabel;
+ private Shell popup;
+ private LaunchBarListViewer listViewer;
+ private Job delayJob;
+ private MouseListener mouseListener = new MouseAdapter() {
+ @Override
+ public void mouseUp(MouseEvent event) {
+ if (popup == null || popup.isDisposed()) {
+ setFocus();
+ openPopup();
+ } else {
+ closePopup();
+ }
+ }
+ };
+
+ protected boolean myIsFocusAncestor(Control control) {
+ while (control != null && control != this && !(control instanceof Shell)) {
+ control = control.getParent();
+ }
+ return control == this;
+ }
+
+ private Listener focusOutListener = new Listener() {
+ private Job closingJob;
+
+ @Override
+ public void handleEvent(Event event) {
+ switch (event.type) {
+ case SWT.FocusIn:
+ if (closingJob != null)
+ closingJob.cancel();
+ if (event.widget instanceof Control && myIsFocusAncestor((Control) event.widget)) {
+ break; // not closing
+ }
+ if (!isPopUpInFocus()) {
+ closePopup();
+ }
+ break;
+ case SWT.FocusOut:
+ if (isPopUpInFocus()) {
+ // we about to loose focus from popup children, but it may
+ // go to another child, lets schedule a job to wait before
+ // we close
+ if (closingJob != null)
+ closingJob.cancel();
+ closingJob = new Job(Messages.CSelector_0) {
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ if (monitor.isCanceled())
+ return Status.CANCEL_STATUS;
+ closePopup();
+ closingJob = null;
+ return Status.OK_STATUS;
+ }
+ };
+ closingJob.schedule(300);
+ }
+ break;
+ case SWT.MouseUp:
+ if (popup != null && !popup.isDisposed()) {
+ Point loc = getDisplay().getCursorLocation();
+ if (!popup.getBounds().contains(loc) && !getBounds().contains(getParent().toControl(loc))) {
+ closePopup();
+ }
+ }
+ break;
+ default:
+ break;
+ }
+ }
+ };
+
+ public CSelector(Composite parent, int style) {
+ super(parent, style);
+ setBackground(getDisplay().getSystemColor(SWT.COLOR_LIST_BACKGROUND));
+
+ GridLayout mainButtonLayout = new GridLayout();
+ setLayout(mainButtonLayout);
+ addPaintListener(e -> {
+ GC gc = e.gc;
+ gc.setBackground(getBackground());
+ gc.setForeground(getOutlineColor());
+ Point size = getSize();
+ final int arc = 3;
+ gc.fillRoundRectangle(0, 0, size.x - 1, size.y - 1, arc, arc);
+ gc.drawRoundRectangle(0, 0, size.x - 1, size.y - 1, arc, arc);
+ });
+ addMouseListener(mouseListener);
+ }
+
+ private boolean isPopUpInFocus() {
+ Control focusControl = getDisplay().getFocusControl();
+ if (focusControl != null && focusControl.getShell() == popup) {
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public void dispose() {
+ super.dispose();
+ if (popup != null)
+ popup.dispose();
+ }
+
+ public void setDelayedSelection(final Object element, long millis) {
+ if (delayJob != null)
+ delayJob.cancel();
+ delayJob = new Job(Messages.CSelector_1) {
+ @Override
+ protected IStatus run(final IProgressMonitor monitor) {
+ if (monitor.isCanceled())
+ return Status.CANCEL_STATUS;
+ if (isDisposed())
+ return Status.CANCEL_STATUS;
+ getDisplay().asyncExec(() -> {
+ if (monitor.isCanceled())
+ return;
+ setSelection(element);
+ });
+ return Status.OK_STATUS;
+ }
+ };
+ delayJob.schedule(millis);
+ }
+
+ public void setSelection(Object element) {
+ if (isDisposed())
+ return;
+ this.selection = element;
+ if (buttonComposite != null)
+ buttonComposite.dispose();
+ String toolTipText = getToolTipText();
+ boolean editable = false;
+ int columns = 2;
+ Image image = labelProvider.getImage(element);
+ if (image != null)
+ columns++;
+ editable = isEditable(element);
+ if (editable)
+ columns++;
+ buttonComposite = new Composite(this, SWT.NONE);
+ GridLayout buttonLayout = new GridLayout(columns, false);
+ buttonLayout.marginHeight = buttonLayout.marginWidth = 0;
+ buttonComposite.setLayout(buttonLayout);
+ buttonComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+ buttonComposite.setBackground(getBackground());
+ buttonComposite.addMouseListener(mouseListener);
+ buttonComposite.setToolTipText(toolTipText);
+ if (element != null) {
+ if (image != null) {
+ Label icon = createImage(buttonComposite, image);
+ icon.addMouseListener(mouseListener);
+ currentIcon = icon;
+ currentIcon.setToolTipText(toolTipText);
+ }
+ Label label = createLabel(buttonComposite, element);
+ label.addMouseListener(mouseListener);
+ currentLabel = label;
+ currentLabel.setToolTipText(toolTipText);
+ } else {
+ Composite blank = new Composite(buttonComposite, SWT.NONE);
+ blank.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ currentIcon = null;
+ currentLabel = null;
+ }
+ final Canvas arrow = new Canvas(buttonComposite, SWT.NONE) {
+ @Override
+ public Point computeSize(int wHint, int hHint, boolean changed) {
+ return new Point(12, 16);
+ }
+ };
+ arrow.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, true));
+ arrow.setBackground(getBackground());
+ arrow.setForeground(getForeground());
+ arrowTransition = new Transition(arrow, arrowMax, 80);
+ arrow.addPaintListener(e -> {
+ final int hPadding = 2;
+ GC gc = e.gc;
+ LineAttributes attributes = new LineAttributes(2);
+ attributes.cap = SWT.CAP_ROUND;
+ gc.setLineAttributes(attributes);
+ gc.setAlpha(mouseOver ? 255 : 100);
+ Rectangle bounds = arrow.getBounds();
+ int arrowWidth = bounds.width - hPadding * 2;
+ int current = arrowTransition.getCurrent();
+ gc.drawPolyline(new int[] { hPadding, bounds.height / 2 - current, hPadding + (arrowWidth / 2),
+ bounds.height / 2 + current, hPadding + arrowWidth, bounds.height / 2 - current });
+ });
+ arrow.addMouseListener(mouseListener);
+ if (editable) {
+ final EditButton editButton = new EditButton(buttonComposite, SWT.NONE);
+ editButton.setData(LaunchBarWidgetIds.ID, LaunchBarWidgetIds.EDIT);
+ editButton.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, true));
+ editButton.setBackground(getBackground());
+ editButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ // Need to run this after the current event storm
+ // Or we get a disposed error.
+ getDisplay().asyncExec(() -> {
+ if (CSelector.this.selection != null)
+ handleEdit(selection);
+ });
+ }
+ });
+ }
+ layout();
+ }
+
+ protected abstract void fireSelectionChanged();
+
+ public Object getSelection() {
+ return selection;
+ }
+
+ public MouseListener getMouseListener() {
+ return mouseListener;
+ }
+
+ protected void openPopup() {
+ Object[] elements = contentProvider.getElements(input);
+ if (elements.length == 0 && !hasActionArea())
+ return;
+ arrowTransition.to(-arrowMax);
+ if (popup != null && !popup.isDisposed()) {
+ popup.dispose();
+ }
+ popup = new Shell(getShell(), SWT.TOOL | SWT.ON_TOP | SWT.RESIZE);
+ popup.setData(LaunchBarWidgetIds.ID, LaunchBarWidgetIds.POPUP);
+ popup.setLayout(GridLayoutFactory.fillDefaults().spacing(0, 0).create());
+ popup.setBackground(getBackground());
+ listViewer = new LaunchBarListViewer(popup);
+ initializeListViewer(listViewer);
+ listViewer.setFilterVisible(elements.length > 7);
+ listViewer.setInput(input);
+ listViewer.addSelectionChangedListener(event -> {
+ if (!listViewer.isFinalSelection())
+ return;
+ StructuredSelection ss = (StructuredSelection) event.getSelection();
+ if (!ss.isEmpty()) {
+ setSelection(ss.getFirstElement());
+ fireSelectionChanged();
+ }
+ closePopup();
+ });
+ if (hasActionArea())
+ createActionArea(popup);
+ Rectangle buttonBounds = getBounds();
+ Point popupLocation = popup.getDisplay().map(this, null, 0, buttonBounds.height);
+ popup.setLocation(popupLocation.x, popupLocation.y + 5);
+ restoreShellSize();
+ popup.setVisible(true);
+ popup.setFocus();
+ getDisplay().addFilter(SWT.FocusIn, focusOutListener);
+ getDisplay().addFilter(SWT.FocusOut, focusOutListener);
+ getDisplay().addFilter(SWT.MouseUp, focusOutListener);
+ popup.addDisposeListener(e -> {
+ getDisplay().removeFilter(SWT.FocusIn, focusOutListener);
+ getDisplay().removeFilter(SWT.FocusOut, focusOutListener);
+ getDisplay().removeFilter(SWT.MouseUp, focusOutListener);
+ saveShellSize();
+ });
+ }
+
+ protected String getDialogPreferencePrefix() {
+ return getClass().getSimpleName();
+ }
+
+ protected void restoreShellSize() {
+ Point size = popup.computeSize(SWT.DEFAULT, SWT.DEFAULT);
+ Point buttonSize = getSize();
+ size.x = Math.max(size.x, buttonSize.x);
+ size.y = Math.min(size.y, 300);
+ try {
+ IPreferenceStore store = Activator.getDefault().getPreferenceStore();
+ String prefName = getDialogPreferencePrefix();
+ int w = store.getInt(prefName + ".shell.w"); //$NON-NLS-1$
+ int h = store.getInt(prefName + ".shell.h"); //$NON-NLS-1$
+ size.x = Math.max(size.x, w);
+ size.y = Math.max(size.y, h);
+ } catch (Exception e) {
+ Activator.log(e);
+ }
+ popup.setSize(size);
+ }
+
+ protected void saveShellSize() {
+ Point size = popup.getSize();
+ IPreferenceStore store = Activator.getDefault().getPreferenceStore();
+ String prefName = getDialogPreferencePrefix();
+ store.setValue(prefName + ".shell.w", size.x); //$NON-NLS-1$
+ store.setValue(prefName + ".shell.h", size.y); //$NON-NLS-1$
+ }
+
+ protected void initializeListViewer(LaunchBarListViewer listViewer) {
+ listViewer.setContentProvider(contentProvider);
+ listViewer.setLabelProvider(labelProvider);
+ listViewer.setComparator(sorter);
+ listViewer.setHistoryComparator(sorterTop);
+ }
+
+ private void closePopup() {
+ getDisplay().asyncExec(() -> {
+ if (popup == null || popup.isDisposed()) {
+ return;
+ }
+ arrowTransition.to(arrowMax);
+ popup.setVisible(false);
+ popup.dispose();
+ });
+ }
+
+ private Label createImage(Composite parent, Image image) {
+ Rectangle bounds = image.getBounds();
+ boolean disposeImage = false;
+ if (bounds.height > 16 || bounds.width > 16) {
+ Image buttonImage = new Image(getDisplay(), 16, 16);
+ GC gc = new GC(buttonImage);
+ gc.setAntialias(SWT.ON);
+ gc.setInterpolation(SWT.HIGH);
+ gc.drawImage(image, 0, 0, image.getBounds().width, image.getBounds().height, 0, 0, 16, 16);
+ gc.dispose();
+ image = buttonImage;
+ disposeImage = true;
+ }
+ Label icon = new Label(parent, SWT.NONE);
+ icon.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, true));
+ icon.setImage(image);
+ if (disposeImage) {
+ final Image disposableImage = image;
+ icon.addDisposeListener(e -> disposableImage.dispose());
+ }
+ return icon;
+ }
+
+ private Label createLabel(Composite parent, Object element) {
+ Label label = new Label(parent, SWT.NONE);
+ label.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, true));
+ label.setText(labelProvider.getText(element));
+ label.setFont(getDisplay().getSystemFont());
+ return label;
+ }
+
+ public void setContentProvider(IStructuredContentProvider contentProvider) {
+ this.contentProvider = contentProvider;
+ }
+
+ public IStructuredContentProvider getContentProvider() {
+ return contentProvider;
+ }
+
+ public void setLabelProvider(ILabelProvider labelProvider) {
+ this.labelProvider = labelProvider;
+ }
+
+ public ILabelProvider getLabelProvider() {
+ return labelProvider;
+ }
+
+ @Override
+ public void setToolTipText(String toolTipText) {
+ super.setToolTipText(toolTipText);
+ if (buttonComposite != null) {
+ buttonComposite.setToolTipText(toolTipText);
+ }
+ if (currentLabel != null && !currentLabel.isDisposed()) {
+ currentLabel.setToolTipText(toolTipText);
+ }
+ if (currentIcon != null && !currentIcon.isDisposed()) {
+ currentIcon.setToolTipText(toolTipText);
+ }
+ }
+
+ /**
+ * Set sorter for the bottom part of the selector
+ *
+ * @param sorter
+ */
+ public void setSorter(Comparator<?> sorter) {
+ this.sorter = sorter;
+ }
+
+ /**
+ * Set sorter for the "history" part of the selector
+ *
+ * @param sorter
+ */
+ public void setHistorySortComparator(Comparator<?> sorter) {
+ this.sorterTop = sorter;
+ }
+
+ public void setInput(Object input) {
+ this.input = input;
+ }
+
+ public Object getInput() {
+ return input;
+ }
+
+ public void refresh() {
+ PlatformUI.getWorkbench().getDisplay().asyncExec(() -> {
+ if (isDisposed())
+ return;
+ update(selection); // update current selection - name or icon
+ // may have changed
+ if (popup != null && !popup.isDisposed()) {
+ listViewer.refresh(true); // update all labels in the popup
+ }
+ });
+ }
+
+ public void update(Object element) {
+ if (selection == element) {
+ if (currentIcon != null && !currentIcon.isDisposed()) {
+ currentIcon.setImage(labelProvider.getImage(element));
+ }
+ if (currentLabel != null && !currentLabel.isDisposed()) {
+ currentLabel.setText(labelProvider.getText(element));
+ }
+ }
+ if (popup != null && !popup.isDisposed()) {
+ listViewer.update(element, null);
+ }
+ }
+
+ /**
+ * Returns the text currently visible in the selector
+ */
+ public String getText() {
+ if (currentLabel != null) {
+ currentLabel.getText();
+ }
+ return ""; //$NON-NLS-1$
+ }
+
+ protected boolean hasActionArea() {
+ return false;
+ }
+
+ protected void createActionArea(Composite parent) {
+ // empty
+ }
+
+ protected boolean isEditable(Object element) {
+ return false;
+ }
+
+ protected void handleEdit(Object element) {
+ // nothing to do here
+ }
+
+ public Color getOutlineColor() {
+ return getDisplay().getSystemColor(SWT.COLOR_WIDGET_NORMAL_SHADOW);
+ }
+
+ public Color getHighlightColor() {
+ return getDisplay().getSystemColor(SWT.COLOR_LIST_SELECTION);
+ }
+}
diff --git a/launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/ConfigSelector.java b/launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/ConfigSelector.java
new file mode 100644
index 00000000000..cadeb5c55a9
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/ConfigSelector.java
@@ -0,0 +1,232 @@
+/*******************************************************************************
+ * Copyright (c) 2014, 2018 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Doug Schaefer
+ *******************************************************************************/
+package org.eclipse.launchbar.ui.controls.internal;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.jface.layout.GridLayoutFactory;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.window.Window;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.launchbar.core.ILaunchBarManager;
+import org.eclipse.launchbar.core.ILaunchDescriptor;
+import org.eclipse.launchbar.ui.DefaultDescriptorLabelProvider;
+import org.eclipse.launchbar.ui.ILaunchBarUIManager;
+import org.eclipse.launchbar.ui.NewLaunchConfigWizard;
+import org.eclipse.launchbar.ui.NewLaunchConfigWizardDialog;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.MouseAdapter;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.events.MouseListener;
+import org.eclipse.swt.events.MouseTrackAdapter;
+import org.eclipse.swt.events.MouseTrackListener;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+
+public class ConfigSelector extends CSelector {
+ private ILaunchBarManager manager = Activator.getService(ILaunchBarManager.class);
+ private ILaunchBarUIManager uiManager = Activator.getService(ILaunchBarUIManager.class);
+ private DefaultDescriptorLabelProvider defaultProvider;
+
+ private static final String[] noConfigs = new String[] { Messages.ConfigSelector_0 };
+
+ public ConfigSelector(Composite parent, int style) {
+ super(parent, style);
+ setData(LaunchBarWidgetIds.ID, LaunchBarWidgetIds.CONFIG_SELECTOR);
+
+ setToolTipText(Messages.ConfigSelector_1);
+ defaultProvider = new DefaultDescriptorLabelProvider();
+
+ setContentProvider(new IStructuredContentProvider() {
+ @Override
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ }
+
+ @Override
+ public void dispose() {
+ }
+
+ @Override
+ public Object[] getElements(Object inputElement) {
+ try {
+ ILaunchDescriptor[] descs = manager.getLaunchDescriptors();
+ if (descs.length == 0)
+ return noConfigs;
+ return descs;
+ } catch (CoreException e) {
+ return noConfigs;
+ }
+ }
+ });
+
+ setLabelProvider(new LabelProvider() {
+ @Override
+ public Image getImage(Object element) {
+ if (element instanceof ILaunchDescriptor) {
+ try {
+ ILaunchDescriptor configDesc = (ILaunchDescriptor) element;
+ ILabelProvider labelProvider = uiManager.getLabelProvider(configDesc);
+ if (labelProvider != null) {
+ Image img = labelProvider.getImage(element);
+ if (img != null)
+ return img;
+ }
+ } catch (CoreException e) {
+ Activator.log(e);
+ }
+ }
+ return defaultProvider.getImage(element);
+ }
+
+ @Override
+ public String getText(Object element) {
+ if (element instanceof String) {
+ return (String) element;
+ } else if (element instanceof ILaunchDescriptor) {
+ try {
+ ILaunchDescriptor configDesc = (ILaunchDescriptor) element;
+ ILabelProvider labelProvider = uiManager.getLabelProvider(configDesc);
+ if (labelProvider != null) {
+ String text = labelProvider.getText(element);
+ if (text != null)
+ return text;
+ }
+ } catch (CoreException e) {
+ Activator.log(e);
+ }
+ }
+ return defaultProvider.getText(element);
+ }
+ });
+ // no sorter for top, data is sorted by provider in historical order
+ setHistorySortComparator(null);
+ // alphabetic sorter
+ setSorter((ILaunchDescriptor o1, ILaunchDescriptor o2) -> o1.getName().compareTo(o2.getName()));
+
+ }
+
+ @Override
+ protected void initializeListViewer(LaunchBarListViewer listViewer) {
+ listViewer.setHistorySupported(true);
+ listViewer.setHistoryPreferenceName(Activator.PREF_LAUNCH_HISTORY_SIZE);
+ super.initializeListViewer(listViewer);
+ }
+
+ @Override
+ protected void fireSelectionChanged() {
+ Object selected = getSelection();
+ if (selected instanceof ILaunchDescriptor) {
+ ILaunchDescriptor configDesc = (ILaunchDescriptor) selected;
+ try {
+ manager.setActiveLaunchDescriptor(configDesc);
+ } catch (CoreException e) {
+ Activator.log(e);
+ }
+ }
+ }
+
+ @Override
+ public boolean isEditable(Object element) {
+ return element instanceof ILaunchDescriptor;
+ }
+
+ @Override
+ public void handleEdit(Object element) {
+ uiManager.openConfigurationEditor((ILaunchDescriptor) element);
+ }
+
+ @Override
+ public boolean hasActionArea() {
+ return true;
+ }
+
+ @Override
+ public void createActionArea(Composite parent) {
+ final Composite createButton = new Composite(parent, SWT.BORDER);
+ createButton.setData(LaunchBarWidgetIds.ID, LaunchBarWidgetIds.NEW);
+ GridDataFactory.fillDefaults().grab(true, false).applyTo(createButton);
+ GridLayoutFactory.fillDefaults().margins(7, 7).applyTo(createButton);
+ createButton.setBackground(getBackground());
+
+ final Label createLabel = new Label(createButton, SWT.NONE);
+ GridDataFactory.fillDefaults().grab(true, false).applyTo(createLabel);
+ createLabel.setBackground(getBackground());
+ createLabel.setText(Messages.ConfigSelector_2);
+
+ MouseListener mouseListener = new MouseAdapter() {
+ @Override
+ public void mouseUp(org.eclipse.swt.events.MouseEvent e) {
+ final NewLaunchConfigWizard wizard = new NewLaunchConfigWizard();
+ WizardDialog dialog = new NewLaunchConfigWizardDialog(getShell(), wizard);
+ if (dialog.open() == Window.OK) {
+ new Job(Messages.ConfigSelector_3) {
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ try {
+ wizard.getWorkingCopy().doSave();
+ return Status.OK_STATUS;
+ } catch (CoreException e) {
+ return e.getStatus();
+ }
+ }
+ }.schedule();
+ }
+ }
+ };
+
+ createButton.addMouseListener(mouseListener);
+ createLabel.addMouseListener(mouseListener);
+
+ MouseTrackListener mouseTrackListener = new MouseTrackAdapter() {
+ @Override
+ public void mouseEnter(MouseEvent e) {
+ Color highlightColor = getHighlightColor();
+ createButton.setBackground(highlightColor);
+ createLabel.setBackground(highlightColor);
+ }
+
+ @Override
+ public void mouseExit(MouseEvent e) {
+ Color backgroundColor = getBackground();
+ createButton.setBackground(backgroundColor);
+ createLabel.setBackground(backgroundColor);
+ }
+ };
+ createButton.addMouseTrackListener(mouseTrackListener);
+ createLabel.addMouseTrackListener(mouseTrackListener);
+ }
+
+ @Override
+ public Point computeSize(int wHint, int hHint, boolean changed) {
+ return super.computeSize(250, hHint, changed);
+ }
+
+ @Override
+ public void setSelection(Object element) {
+ if (element == null)
+ element = noConfigs[0];
+ super.setSelection(element);
+ }
+
+}
diff --git a/launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/EditButton.java b/launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/EditButton.java
new file mode 100644
index 00000000000..c05a31a4781
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/EditButton.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alena Laskavaia
+ *******************************************************************************/
+package org.eclipse.launchbar.ui.controls.internal;
+
+import org.eclipse.swt.widgets.Composite;
+
+public class EditButton extends CButton {
+
+ public EditButton(Composite parent, int style) {
+ super(parent, style);
+ setHotImage(Activator.getDefault().getImageRegistry().get(Activator.IMG_CONFIG_CONFIG));
+ setColdImage(Activator.getDefault().getImageRegistry().get(Activator.IMG_EDIT_COLD));
+ setToolTipText(Messages.EditButton_0);
+ }
+
+}
diff --git a/launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/FilterControl.java b/launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/FilterControl.java
new file mode 100644
index 00000000000..140a9b9ce67
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/FilterControl.java
@@ -0,0 +1,460 @@
+/*******************************************************************************
+ * Copyright (c) 2014, 2018 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alena Laskavaia
+ *******************************************************************************/
+package org.eclipse.launchbar.ui.controls.internal;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.jface.layout.GridLayoutFactory;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerFilter;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.accessibility.AccessibleAdapter;
+import org.eclipse.swt.accessibility.AccessibleEvent;
+import org.eclipse.swt.events.FocusAdapter;
+import org.eclipse.swt.events.FocusEvent;
+import org.eclipse.swt.events.MouseAdapter;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.progress.WorkbenchJob;
+
+/**
+ * A simple control that provides a text widget and controls a list viewer
+ */
+public class FilterControl extends Composite {
+ /**
+ * The filter text widget to be used by this tree. This value may be <code>null</code> if there is no filter widget, or if the
+ * controls have not yet been created.
+ */
+ protected Text filterText;
+ /**
+ * The viewer for the filtered tree. This value should never be <code>null</code> after the widget creation methods are
+ * complete.
+ */
+ protected LaunchBarListViewer listViewer;
+
+ protected ViewerFilter patternFilter;
+ /**
+ * The text to initially show in the filter text control.
+ */
+ protected String initialText = ""; //$NON-NLS-1$
+ protected String patternText = null;
+ /**
+ * The job used to refresh the tree.
+ */
+ private Job refreshJob;
+ /**
+ * The parent composite this control.
+ */
+ protected Composite parent;
+
+ /**
+ * Creates a filter control, to be fully function attachListViewer must be called shortly after
+ *
+ * @param parent
+ */
+ public FilterControl(Composite parent) {
+ super(parent, SWT.NONE);
+ this.parent = parent;
+ patternFilter = new ViewerFilter() {
+ @Override
+ public boolean select(Viewer viewer, Object parentElement, Object element) {
+ String text = ((ILabelProvider) listViewer.getLabelProvider()).getText(element);
+ if (patternText == null)
+ return true;
+ String trim = patternText.trim();
+ if (trim.isEmpty())
+ return true;
+ if (text == null)
+ return false;
+ if (text.contains(trim))
+ return true;
+ if (text.toLowerCase().contains(trim.toLowerCase()))
+ return true;
+ return false;
+ }
+ };
+ init();
+ }
+
+ /**
+ * Create the filtered list.
+ */
+ protected void init() {
+ createControl(this, SWT.NONE);
+ createRefreshJob();
+ setInitialText(Messages.FilterControl_0);
+ setFont(parent.getFont());
+ }
+
+ /**
+ * Create the filtered tree's controls. Subclasses should override.
+ *
+ * @param parent
+ * @param treeStyle
+ */
+ protected void createControl(Composite parent, int treeStyle) {
+ setLayout(GridLayoutFactory.fillDefaults().spacing(0, 0).create());
+ if (parent.getLayout() instanceof GridLayout) {
+ setLayoutData(GridDataFactory.fillDefaults().grab(true, true).create());
+ }
+ Composite fc = createFilterControls(parent);
+ fc.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false));
+ }
+
+ /**
+ * Create the filter controls. By default, a text and corresponding tool bar button that clears the contents of the text is
+ * created. Subclasses may override.
+ *
+ * @param parent
+ * parent <code>Composite</code> of the filter controls
+ * @return the <code>Composite</code> that contains the filter controls
+ */
+ protected Composite createFilterControls(Composite parent) {
+ createFilterText(parent);
+ return parent;
+ }
+
+ public Control attachListViewer(LaunchBarListViewer listViewer) {
+ this.listViewer = listViewer;
+ // listViewer.getControl().setLayoutData(GridDataFactory.fillDefaults().grab(true, true).create());
+ listViewer.getControl().addDisposeListener(e -> refreshJob.cancel());
+ listViewer.addFilter(patternFilter);
+ return listViewer.getControl();
+ }
+
+ /**
+ * Create the refresh job for the receiver.
+ *
+ */
+ private void createRefreshJob() {
+ refreshJob = doCreateRefreshJob();
+ refreshJob.setSystem(true);
+ }
+
+ @Override
+ public void setVisible(boolean visible) {
+ boolean oldVisible = getVisible();
+ if (oldVisible == true && visible == false && listViewer != null && filterText.isFocusControl()) {
+ listViewer.setFocus();
+ }
+ if (getLayoutData() instanceof GridData) {
+ ((GridData) getLayoutData()).heightHint = visible ? SWT.DEFAULT : 0;
+ }
+ super.setVisible(visible);
+ }
+
+ /**
+ * Creates a workbench job that will refresh the tree based on the current filter text. Subclasses may override.
+ *
+ * @return a workbench job that can be scheduled to refresh the tree
+ *
+ * @since 3.4
+ */
+ protected WorkbenchJob doCreateRefreshJob() {
+ return new WorkbenchJob("Refresh Filter") {//$NON-NLS-1$
+ @Override
+ public IStatus runInUIThread(IProgressMonitor monitor) {
+ if (listViewer == null)
+ return Status.CANCEL_STATUS;
+ if (listViewer.getControl().isDisposed()) {
+ return Status.CANCEL_STATUS;
+ }
+ updatePatternText();
+ if (patternText == null) {
+ return Status.OK_STATUS;
+ }
+ Control redrawControl = listViewer.getControl();
+ try {
+ // don't want the user to see updates that will be made to
+ // the tree
+ // we are setting redraw(false) on the composite to avoid
+ // dancing scrollbar
+ redrawControl.setRedraw(false);
+ listViewer.setHistorySupported(patternText == null || patternText.isEmpty());
+ listViewer.refresh(true);
+ updateListSelection(false);
+ // re-focus filterText in case it lost the focus
+ filterText.setFocus();
+ } finally {
+ redrawControl.setRedraw(true);
+ }
+ return Status.OK_STATUS;
+ }
+ };
+ }
+
+ /**
+ * Creates the filter text and adds listeners. This method calls {@link #doCreateFilterText(Composite)} to create the text
+ * control. Subclasses should override {@link #doCreateFilterText(Composite)} instead of overriding this method.
+ *
+ * @param parent
+ * <code>Composite</code> of the filter text
+ */
+ protected void createFilterText(Composite parent) {
+ filterText = doCreateFilterText(parent);
+ filterText.getAccessible().addAccessibleListener(new AccessibleAdapter() {
+ @Override
+ public void getName(AccessibleEvent e) {
+ String filterTextString = filterText.getText();
+ if (filterTextString.length() == 0 || filterTextString.equals(initialText)) {
+ e.result = initialText;
+ } else {
+ e.result = NLS.bind(Messages.FilterControl_1,
+ new String[] { filterTextString, String.valueOf(getFilteredItemsCount()) });
+ }
+ }
+
+ /**
+ * Return the number of filtered items
+ *
+ * @return int
+ */
+ private int getFilteredItemsCount() {
+ return listViewer.getItemCount();
+ }
+ });
+ filterText.addFocusListener(new FocusAdapter() {
+ @Override
+ public void focusGained(FocusEvent e) {
+ }
+
+ @Override
+ public void focusLost(FocusEvent e) {
+ if (filterText.getText().equals(initialText)) {
+ setFilterText(""); //$NON-NLS-1$
+ }
+ }
+ });
+ filterText.addMouseListener(new MouseAdapter() {
+ @Override
+ public void mouseDown(MouseEvent e) {
+ if (filterText.getText().equals(initialText)) {
+ clearText();
+ }
+ }
+ });
+ // enter key set focus to tree
+ filterText.addTraverseListener(e -> {
+ if (e.detail == SWT.TRAVERSE_RETURN) {
+ e.doit = false;
+ listViewer.setFocus();
+ updateListSelection(true);
+ } else if (e.detail == SWT.TRAVERSE_ARROW_NEXT) {
+ listViewer.setFocus();
+ updateListSelection(false);
+ } else if (e.detail == SWT.TRAVERSE_ESCAPE) {
+ listViewer.setDefaultSelection(new StructuredSelection());
+ e.doit = false;
+ }
+ });
+ filterText.addModifyListener(e -> textChanged());
+ // if we're using a field with built in cancel we need to listen for
+ // default selection changes (which tell us the cancel button has been
+ // pressed)
+ if ((filterText.getStyle() & SWT.ICON_CANCEL) != 0) {
+ filterText.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetDefaultSelected(SelectionEvent e) {
+ if (e.detail == SWT.ICON_CANCEL)
+ clearText();
+ }
+ });
+ }
+ filterText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
+ }
+
+ protected void updateListSelection(boolean enter) {
+ if (listViewer.getItemCount() == 0) {
+ if (enter)
+ Display.getCurrent().beep();
+ } else {
+ StructuredSelection sel;
+ // if the initial filter text hasn't changed, do not try to match
+ if (patternText != null && !patternText.trim().isEmpty()) {
+ // select item with triggering event, it may close the popup if list used as combo
+ sel = new StructuredSelection(listViewer.getTopFilteredElement());
+ } else {
+ sel = new StructuredSelection(listViewer.getTopElement());
+ }
+ if (enter)
+ listViewer.setDefaultSelection(sel);
+ else
+ listViewer.setSelection(sel);
+ }
+ }
+
+ protected Text doCreateFilterText(Composite parent) {
+ return new Text(parent, SWT.SINGLE | SWT.BORDER | SWT.SEARCH | SWT.ICON_CANCEL);
+ }
+
+ /**
+ * Update the receiver after the text has changed.
+ */
+ protected void textChanged() {
+ String old = patternText;
+ updatePatternText();
+ if (patternText != null && old == null && patternText.isEmpty())
+ return;// we changing from initial selection to empty string
+ if (patternText == old)
+ return;
+ // cancel currently running job first, to prevent unnecessary redraw
+ refreshJob.cancel();
+ refreshJob.schedule(getRefreshJobDelay());
+ }
+
+ /**
+ * Return the time delay that should be used when scheduling the filter refresh job. Subclasses may override.
+ *
+ * @return a time delay in milliseconds before the job should run
+ *
+ */
+ protected long getRefreshJobDelay() {
+ return 200;
+ }
+
+ /**
+ * Set the background for the widgets that support the filter text area.
+ *
+ * @param background
+ * background <code>Color</code> to set
+ */
+ @Override
+ public void setBackground(Color background) {
+ super.setBackground(background);
+ // listComposite.setBackground(background);
+ // filterText.setBackground(background);
+ }
+
+ /**
+ * Clears the text in the filter text widget.
+ */
+ protected void clearText() {
+ setFilterText(""); //$NON-NLS-1$
+ // textChanged();
+ }
+
+ /**
+ * Set the text in the filter control.
+ *
+ * @param string
+ */
+ protected void setFilterText(String string) {
+ if (filterText != null) {
+ filterText.setText(string);
+ selectAll();
+ }
+ }
+
+ public Text getFilterText() {
+ return filterText;
+ }
+
+ /**
+ * Get the tree viewer of the receiver.
+ *
+ * @return the tree viewer
+ */
+ public LaunchBarListViewer getViewer() {
+ return listViewer;
+ }
+
+ /**
+ * Get the filter text for the receiver, if it was created. Otherwise return <code>null</code>.
+ *
+ * @return the filter Text, or null if it was not created
+ */
+ public Text getFilterControl() {
+ return filterText;
+ }
+
+ /**
+ * Convenience method to return the text of the filter control. If the text widget is not created, then null is returned.
+ *
+ * @return String in the text, or null if the text does not exist
+ */
+ protected String getFilterString() {
+ return filterText != null ? filterText.getText() : null;
+ }
+
+ /**
+ * Set the text that will be shown until the first focus. A default value is provided, so this method only need be called if
+ * overriding the default initial text is desired.
+ *
+ * @param text
+ * initial text to appear in text field
+ */
+ public void setInitialText(String text) {
+ initialText = text;
+ if (filterText != null) {
+ filterText.setMessage(text);
+ if (filterText.isFocusControl()) {
+ setFilterText(initialText);
+ textChanged();
+ } else {
+ getDisplay().asyncExec(() -> {
+ if (!filterText.isDisposed() && filterText.isFocusControl()) {
+ setFilterText(initialText);
+ textChanged();
+ }
+ });
+ }
+ } else {
+ setFilterText(initialText);
+ textChanged();
+ }
+ }
+
+ /**
+ * Select all text in the filter text field.
+ *
+ */
+ protected void selectAll() {
+ if (filterText != null) {
+ filterText.selectAll();
+ }
+ }
+
+ /**
+ * Get the initial text for the receiver.
+ *
+ * @return String
+ */
+ protected String getInitialText() {
+ return initialText;
+ }
+
+ private void updatePatternText() {
+ String text = getFilterString();
+ boolean initial = initialText != null && initialText.equals(text);
+ if (initial) {
+ patternText = null;
+ } else if (text != null) {
+ patternText = text;
+ }
+ }
+}
diff --git a/launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/LaunchBarButtonImageDescriptor.java b/launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/LaunchBarButtonImageDescriptor.java
new file mode 100644
index 00000000000..80047ba9a0d
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/LaunchBarButtonImageDescriptor.java
@@ -0,0 +1,54 @@
+/*******************************************************************************
+ * Copyright (c) 2016 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Doug Schaefer - initial API and implementation
+ * Elena Laskavaia - moved to a separate class
+ *******************************************************************************/
+package org.eclipse.launchbar.ui.controls.internal;
+
+import org.eclipse.jface.resource.CompositeImageDescriptor;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.graphics.Rectangle;
+
+/**
+ * This class will take two images and create descriptor that will overlay them, mainImage will be centered
+ */
+public class LaunchBarButtonImageDescriptor extends CompositeImageDescriptor {
+ private Image bgImage;
+ private Image mainImage;
+
+ /**
+ * @param mainImage - main image, will be centered
+ * @param bgImage - background image
+ */
+ public LaunchBarButtonImageDescriptor(Image mainImage, Image bgImage) {
+ super();
+ this.bgImage = bgImage;
+ this.mainImage = mainImage;
+ }
+
+ @Override
+ protected Point getSize() {
+ Rectangle bounds = bgImage.getBounds();
+ return new Point(bounds.width - bounds.y, bounds.height - bounds.x);
+ }
+
+ @Override
+ protected void drawCompositeImage(int width, int height) {
+ drawImage(bgImage.getImageData(), 0, 0);
+ Rectangle bgBounds = bgImage.getBounds();
+ Rectangle modeBounds = mainImage.getBounds();
+ int x = ((bgBounds.width - bgBounds.x) - (modeBounds.width - modeBounds.x)) / 2;
+ int y = ((bgBounds.height - bgBounds.y) - (modeBounds.height - modeBounds.y)) / 2;
+ drawImage(mainImage.getImageData(), x, y);
+ }
+}
diff --git a/launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/LaunchBarControl.java b/launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/LaunchBarControl.java
new file mode 100644
index 00000000000..90d31b71a62
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/LaunchBarControl.java
@@ -0,0 +1,250 @@
+/*******************************************************************************
+ * Copyright (c) 2014, 2018 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Doug Schaefer
+ * Torkild U. Resheim - add preference to control target selector
+ * Vincent Guignot - Ingenico - add preference to control Build button
+ *******************************************************************************/
+package org.eclipse.launchbar.ui.controls.internal;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+
+import org.eclipse.core.commands.Command;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.OperationCanceledException;
+import org.eclipse.debug.core.ILaunchMode;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.launchbar.core.ILaunchBarListener;
+import org.eclipse.launchbar.core.ILaunchBarManager;
+import org.eclipse.launchbar.core.ILaunchDescriptor;
+import org.eclipse.launchbar.core.target.ILaunchTarget;
+import org.eclipse.launchbar.ui.ILaunchBarUIConstants;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.ToolBar;
+import org.eclipse.swt.widgets.ToolItem;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.commands.ICommandService;
+import org.eclipse.ui.handlers.IHandlerService;
+
+public class LaunchBarControl implements ILaunchBarListener {
+ public static final String ID = "org.eclipse.launchbar"; //$NON-NLS-1$
+ public static final String CLASS_URI = "bundleclass://" + Activator.PLUGIN_ID + "/" //$NON-NLS-1$ //$NON-NLS-2$
+ + LaunchBarControl.class.getName();
+
+ private ILaunchBarManager manager = Activator.getService(ILaunchBarManager.class);
+
+ private Composite container;
+ private ConfigSelector configSelector;
+ private ModeSelector modeSelector;
+ private Label onLabel;
+ private TargetSelector targetSelector;
+
+ private static final int SELECTION_DELAY = 200;
+
+ @PostConstruct
+ public void createControl(Composite parent) {
+ manager.addListener(this);
+
+ container = new Composite(parent, SWT.NONE);
+ container.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false));
+ GridLayout layout = new GridLayout(5, false);
+ layout.marginHeight = 2;
+ layout.marginWidth = 2;
+ container.setLayout(layout);
+ container.addDisposeListener(e -> LaunchBarControl.this.dispose());
+
+ ToolBar toolBar = new ToolBar(container, SWT.FLAT);
+ IPreferenceStore store = Activator.getDefault().getPreferenceStore();
+ boolean buildEnabled = store.getBoolean(Activator.PREF_ENABLE_BUILDBUTTON);
+ if (buildEnabled) {
+ createButton(toolBar, Activator.IMG_BUTTON_BUILD, Messages.LaunchBarControl_Build,
+ ILaunchBarUIConstants.CMD_BUILD);
+ }
+
+ createButton(toolBar, Activator.IMG_BUTTON_LAUNCH, Messages.LaunchBarControl_Launch,
+ ILaunchBarUIConstants.CMD_LAUNCH);
+ createButton(toolBar, Activator.IMG_BUTTON_STOP, Messages.LaunchBarControl_Stop,
+ ILaunchBarUIConstants.CMD_STOP);
+
+ modeSelector = new ModeSelector(container, SWT.NONE);
+ modeSelector.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false));
+ modeSelector.setInput(manager);
+
+ configSelector = new ConfigSelector(container, SWT.NONE);
+ configSelector.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false));
+ configSelector.setInput(manager);
+
+ boolean supportsTargets;
+ try {
+ supportsTargets = supportsTargets(manager.getActiveLaunchDescriptor());
+ } catch (CoreException e) {
+ Activator.log(e);
+ supportsTargets = true;
+ }
+
+ if (supportsTargets) {
+ createTargetSelector();
+ }
+
+ syncSelectors();
+ }
+
+ private void createTargetSelector() {
+ if (container.isDisposed()) {
+ return;
+ }
+
+ onLabel = new Label(container, SWT.NONE);
+ onLabel.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false));
+ onLabel.setText(Messages.LaunchBarControl_0 + ":"); //$NON-NLS-1$
+
+ targetSelector = new TargetSelector(container, SWT.NONE);
+ targetSelector.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false));
+ targetSelector.setInput(manager);
+ }
+
+ protected void syncSelectors() {
+ try {
+ if (configSelector != null)
+ configSelector.setSelection(manager.getActiveLaunchDescriptor());
+ if (modeSelector != null)
+ modeSelector.setSelection(manager.getActiveLaunchMode());
+ if (targetSelector != null)
+ targetSelector.setSelection(manager.getActiveLaunchTarget());
+ } catch (CoreException e) {
+ Activator.log(e);
+ }
+ }
+
+ @PreDestroy
+ public void dispose() {
+ manager.removeListener(this);
+ }
+
+ private ToolItem createButton(Composite parent, String imageName, String toolTipText, final String commandId) {
+ ToolItem button = new ToolItem((ToolBar) parent, SWT.FLAT);
+
+ Image bgImage = Activator.getDefault().getImageRegistry().get(Activator.IMG_BUTTON_BACKGROUND);
+ Image fgImage = Activator.getDefault().getImageRegistry().get(imageName);
+
+ ImageDescriptor imageDesc = new LaunchBarButtonImageDescriptor(fgImage, bgImage);
+ Image image = imageDesc.createImage();
+ button.setImage(image);
+ button.setToolTipText(toolTipText);
+ button.setData("command", commandId); //$NON-NLS-1$
+ button.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
+ final ICommandService commandService = PlatformUI.getWorkbench().getService(ICommandService.class);
+ Command command = commandService.getCommand(commandId);
+ final Event trigger = new Event();
+ final IHandlerService handlerService = PlatformUI.getWorkbench().getService(IHandlerService.class);
+ ExecutionEvent executionEvent = handlerService.createExecutionEvent(command, trigger);
+ try {
+ command.executeWithChecks(executionEvent);
+ } catch (OperationCanceledException ex) {
+ // abort
+ } catch (Exception ex) {
+ Activator.log(ex);
+ }
+ }
+ });
+ button.addDisposeListener(e -> image.dispose());
+ return button;
+ }
+
+ @Override
+ public void activeLaunchDescriptorChanged(ILaunchDescriptor descriptor) {
+ if (container == null || container.isDisposed()) {
+ return;
+ }
+
+ container.getDisplay().asyncExec(() -> {
+ if (configSelector != null) {
+ configSelector.setDelayedSelection(descriptor, SELECTION_DELAY);
+ }
+
+ if (supportsTargets(descriptor)) {
+ if (targetSelector == null || targetSelector.isDisposed()) {
+ createTargetSelector();
+ syncSelectors();
+ if (!container.isDisposed()) {
+ Composite parent = container.getParent();
+ parent.layout(true);
+ }
+ }
+ } else {
+ if (targetSelector != null && !targetSelector.isDisposed()) {
+ onLabel.dispose();
+ targetSelector.dispose();
+ if (!container.isDisposed()) {
+ Composite parent = container.getParent();
+ parent.layout(true);
+ }
+ }
+ }
+ });
+ }
+
+ private boolean supportsTargets(ILaunchDescriptor descriptor) {
+ if (descriptor == null) {
+ return true;
+ }
+
+ IPreferenceStore store = Activator.getDefault().getPreferenceStore();
+ if (store.getBoolean(Activator.PREF_ALWAYS_TARGETSELECTOR)) {
+ return true;
+ }
+
+ try {
+ return descriptor.getType().supportsTargets();
+ } catch (CoreException e) {
+ Activator.log(e);
+ return true;
+ }
+ }
+
+ @Override
+ public void activeLaunchModeChanged(ILaunchMode mode) {
+ if (modeSelector != null) {
+ modeSelector.setDelayedSelection(mode, SELECTION_DELAY);
+ }
+ }
+
+ @Override
+ public void activeLaunchTargetChanged(ILaunchTarget target) {
+ if (targetSelector != null) {
+ targetSelector.setDelayedSelection(target, SELECTION_DELAY);
+ }
+ }
+
+ @Override
+ public void launchTargetsChanged() {
+ if (targetSelector != null) {
+ targetSelector.refresh();
+ }
+ }
+
+ public ConfigSelector getConfigSelector() {
+ return configSelector;
+ }
+
+}
diff --git a/launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/LaunchBarInjector.java b/launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/LaunchBarInjector.java
new file mode 100644
index 00000000000..a2a1d278578
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/LaunchBarInjector.java
@@ -0,0 +1,138 @@
+/*******************************************************************************
+ * Copyright (c) 2014, 2018 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Doug Schaefer
+ * Torkild U. Resheim - add preference to control target selector
+ * Vincent Guignot - Ingenico - add preference to control Build button
+ *******************************************************************************/
+package org.eclipse.launchbar.ui.controls.internal;
+
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.core.services.events.IEventBroker;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.ui.SideValue;
+import org.eclipse.e4.ui.model.application.ui.basic.MTrimBar;
+import org.eclipse.e4.ui.model.application.ui.basic.MTrimElement;
+import org.eclipse.e4.ui.model.application.ui.basic.MTrimmedWindow;
+import org.eclipse.e4.ui.model.application.ui.basic.MWindow;
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuFactory;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolControl;
+import org.eclipse.e4.ui.workbench.UIEvents;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.swt.widgets.Widget;
+
+public class LaunchBarInjector {
+
+ @Inject
+ MApplication application;
+
+ @Inject
+ IEventBroker eventBroker;
+
+ @Execute
+ void execute() {
+ if (application == null) {
+ // We are running headless, don't need the launch bar here.
+ return;
+ }
+
+ IPreferenceStore store = Activator.getDefault().getPreferenceStore();
+ boolean enabled = store.getBoolean(Activator.PREF_ENABLE_LAUNCHBAR);
+ injectIntoAll(enabled);
+
+ // Watch for new trimmed windows and inject there too.
+ eventBroker.subscribe(UIEvents.TrimmedWindow.TOPIC_TRIMBARS, event -> {
+ if (!UIEvents.isADD(event))
+ return;
+ Object newValue = event.getProperty(UIEvents.EventTags.NEW_VALUE);
+ if (newValue instanceof MTrimBar) {
+ MTrimBar trimBar = (MTrimBar) newValue;
+ if (trimBar.getSide() == SideValue.TOP) {
+ IPreferenceStore store1 = Activator.getDefault().getPreferenceStore();
+ boolean enabled1 = store1.getBoolean(Activator.PREF_ENABLE_LAUNCHBAR);
+ injectLaunchBar(trimBar, enabled1);
+ }
+ }
+ });
+
+ // Watch for preference changes
+ Activator.getDefault().getPreferenceStore().addPropertyChangeListener(event -> {
+ if (event.getProperty().equals(Activator.PREF_ENABLE_LAUNCHBAR)) {
+ boolean enabled1 = Boolean.parseBoolean(event.getNewValue().toString());
+ injectIntoAll(enabled1);
+ }
+ if (event.getProperty().equals(Activator.PREF_ALWAYS_TARGETSELECTOR)
+ || event.getProperty().equals(Activator.PREF_ENABLE_BUILDBUTTON)) {
+ IPreferenceStore store1 = Activator.getDefault().getPreferenceStore();
+ boolean enabled2 = store1.getBoolean(Activator.PREF_ENABLE_LAUNCHBAR);
+ if (enabled2) {
+ injectIntoAll(false);
+ injectIntoAll(true);
+ }
+ }
+ });
+ }
+
+ private void injectIntoAll(boolean enabled) {
+ // Inject the toolbar into all top trims
+ for (MWindow window : application.getChildren()) {
+ if (window instanceof MTrimmedWindow) {
+ for (MTrimBar trimBar : ((MTrimmedWindow) window).getTrimBars()) {
+ if (trimBar.getSide() == SideValue.TOP) {
+ injectLaunchBar(trimBar, enabled);
+ }
+ }
+ }
+ }
+ }
+
+ private void injectLaunchBar(MTrimBar trimBar, boolean enabled) {
+ // are we enabled or not
+ // and fix up the class URI for 2.0
+
+ // Search for control in trimbar
+ MToolControl launchBarElement = null;
+ for (MTrimElement trimElement : trimBar.getChildren()) {
+ if (LaunchBarControl.ID.equals(trimElement.getElementId())) {
+ launchBarElement = (MToolControl) trimElement;
+ break;
+ }
+ }
+
+ if (launchBarElement != null) {
+ // Fix up class name
+ if (!LaunchBarControl.CLASS_URI.equals(launchBarElement.getContributionURI())) {
+ launchBarElement.setContributionURI(LaunchBarControl.CLASS_URI);
+ }
+
+ // remove it if we're disabled
+ if (!enabled) {
+ trimBar.getChildren().remove(launchBarElement);
+ // This seems to be a bug in the platform but for now, dispose of the widget
+ Widget widget = (Widget) launchBarElement.getWidget();
+ widget.dispose();
+ }
+ // either way, we're done
+ return;
+ }
+
+ if (enabled) {
+ // Add it
+ MToolControl launchBar = MMenuFactory.INSTANCE.createToolControl();
+ launchBar.setElementId(LaunchBarControl.ID);
+ launchBar.setContributionURI(LaunchBarControl.CLASS_URI);
+ trimBar.getChildren().add(0, launchBar);
+ }
+ }
+
+}
diff --git a/launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/LaunchBarListViewer.java b/launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/LaunchBarListViewer.java
new file mode 100644
index 00000000000..e73b76d516c
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/LaunchBarListViewer.java
@@ -0,0 +1,641 @@
+/*******************************************************************************
+ * Copyright (c) 2014, 2018 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alena Laskavaia
+ *******************************************************************************/
+package org.eclipse.launchbar.ui.controls.internal;
+
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.List;
+
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.jface.layout.GridLayoutFactory;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.viewers.IFontProvider;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.StructuredViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerComparator;
+import org.eclipse.jface.viewers.ViewerFilter;
+import org.eclipse.launchbar.core.ILaunchDescriptor;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.ScrolledComposite;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.KeyListener;
+import org.eclipse.swt.events.MouseAdapter;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.events.MouseListener;
+import org.eclipse.swt.events.MouseTrackAdapter;
+import org.eclipse.swt.events.MouseTrackListener;
+import org.eclipse.swt.events.PaintEvent;
+import org.eclipse.swt.events.PaintListener;
+import org.eclipse.swt.events.TraverseListener;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Sash;
+import org.eclipse.swt.widgets.Widget;
+
+public class LaunchBarListViewer extends StructuredViewer {
+ private ScrolledComposite listScrolled;
+ private Composite listComposite;
+ private ListItem[] listItems;
+ private int selIndex;
+ private int itemH = 30;
+ private int scrollBucket;
+ private final int maxScrollBucket = 6;
+ private int separatorIndex = -1;
+ private boolean historySupported = true;
+ private ViewerComparator historyComparator;
+ private boolean finalSelection = false;
+ private FilterControl filterControl;
+ private Sash sash;
+ private String historyPref;
+
+ private static class LaunchBarListViewerComparator extends ViewerComparator {
+ public LaunchBarListViewerComparator(Comparator comp) {
+ super(comp);
+ }
+
+ // have to override it because standard ViewerComparator compares by labels only
+ @SuppressWarnings("unchecked")
+ @Override
+ public int compare(Viewer viewer, Object e1, Object e2) {
+ return ((Comparator) getComparator()).compare(e1, e2);
+ }
+ }
+
+ private TraverseListener listItemTraverseListener = e -> {
+ final ListItem currItem = selIndex >= 0 ? listItems[selIndex] : null;
+ if (currItem == null && e.keyCode != SWT.ARROW_DOWN) {
+ return;
+ }
+ if (e.detail == SWT.TRAVERSE_ARROW_NEXT || e.detail == SWT.TRAVERSE_TAB_NEXT) {
+ if (e.keyCode == SWT.ARROW_DOWN) {
+ int maxIdx = listItems.length - 1;
+ if (selIndex < maxIdx) {
+ // move to next item
+ listItems[selIndex + 1].setSelected(true);
+ if (scrollBucket < maxScrollBucket) {
+ scrollBucket++;
+ } else {
+ // need to scroll the list up 1 item
+ int sY1 = listScrolled.getOrigin().y;
+ listScrolled.setOrigin(0, sY1 + itemH);
+ }
+ } else if (selIndex == maxIdx && maxIdx > maxScrollBucket) {
+ // level the scroll for any offset at the bottom of the list
+ listScrolled.setOrigin(0, itemH * (maxIdx - maxScrollBucket + 1));
+ }
+ }
+ } else if (e.detail == SWT.TRAVERSE_ARROW_PREVIOUS || e.detail == SWT.TRAVERSE_TAB_PREVIOUS) {
+ if (e.keyCode == SWT.ARROW_UP) {
+ if (selIndex > 0) {
+ // move to previous item
+ if (scrollBucket > 0) {
+ scrollBucket--;
+ } else {
+ // need to scroll the list down 1 item
+ int sY2 = listScrolled.getOrigin().y;
+ listScrolled.setOrigin(0, sY2 - itemH);
+ }
+ listItems[selIndex - 1].setSelected(true);
+ } else if (selIndex == 0) {
+ // level any offset @ beginning
+ listScrolled.setOrigin(0, 0);
+ }
+ } else if (currItem.editButton != null) {
+ // remove focus from edit button
+ currItem.editButton.setSelected(false);
+ currItem.editButton.redraw();
+ }
+ } else if (e.detail == SWT.TRAVERSE_RETURN) {
+ setDefaultSelection(new StructuredSelection(currItem.element));
+ } else if (e.detail == SWT.TRAVERSE_ESCAPE) {
+ setDefaultSelection(new StructuredSelection());
+ }
+ };
+
+ private KeyListener lisItemKeyListener = new KeyListener() {
+ @Override
+ public void keyReleased(KeyEvent e) {
+ // ignore
+ }
+
+ @Override
+ public void keyPressed(KeyEvent e) {
+ if (e.character != 0 && e.character >= 0x20 && !filterControl.isVisible()) {
+ if (listItems.length <= 1)
+ return; // no filter for 1 item!
+ // enable filter control and send the character there
+ filterControl.setVisible(true);
+ filterControl.setFocus();
+ filterControl.getParent().layout(true);
+ filterControl.getFilterText().setText(e.character + ""); //$NON-NLS-1$
+ filterControl.getFilterText().setSelection(1);
+ } else if (e.character == SWT.ESC) {
+ setDefaultSelection(new StructuredSelection());
+ }
+ }
+ };
+
+ private class ListItem extends Composite {
+ protected final Object element;
+ private Label icon;
+ private Label label;
+ protected EditButton editButton;
+ private int index;
+ private ILabelProvider labelProvider;
+
+ @Override
+ public String toString() {
+ return "[" + index + "] " + labelProvider.getText(element); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ public ListItem(Composite parent, int style, Object element, int index, ILabelProvider labelProvider) {
+ super(parent, style);
+ this.element = element;
+ this.index = index;
+ this.labelProvider = labelProvider;
+ setData(element);
+ setBackground(parent.getBackground());
+ addPaintListener(new PaintListener() {
+ @Override
+ public void paintControl(PaintEvent e) {
+ removePaintListener(this);
+ if (label == null) {
+ lazyInit();
+ }
+ }
+ });
+ } // end ListItem(..)
+
+ protected void lazyInit() {
+ Image image = labelProvider.getImage(element);
+ int columns = 1;
+ if (image != null)
+ columns++;
+ GridLayout layout = new GridLayout(columns, false);
+ layout.marginWidth = layout.marginHeight = 7;
+ setLayout(layout);
+ MouseListener listItemMouseListener = new MouseAdapter() {
+ @Override
+ public void mouseUp(MouseEvent e) {
+ setDefaultSelection(new StructuredSelection(element));
+ }
+ };
+ MouseTrackListener listItemMouseTrackListener = new MouseTrackAdapter() {
+ @Override
+ public void mouseEnter(MouseEvent e) {
+ setSelected(true);
+ }
+
+ @Override
+ public void mouseExit(MouseEvent e) {
+ setSelected(false);
+ }
+ };
+ addMouseListener(listItemMouseListener);
+ addMouseTrackListener(listItemMouseTrackListener);
+ if (image != null) {
+ icon = createImage(this, image);
+ icon.addMouseListener(listItemMouseListener);
+ icon.addMouseTrackListener(listItemMouseTrackListener);
+ }
+ label = createLabel(this, element);
+ label.addMouseListener(listItemMouseListener);
+ label.addMouseTrackListener(listItemMouseTrackListener);
+ // add traverse listnener to control which will have keyboard focus
+ addTraverseListener(listItemTraverseListener);
+ addKeyListener(lisItemKeyListener);
+
+ layout(true);
+ }
+
+ public void setSelected(boolean selected) {
+ if (selected) {
+ setBackground(getDisplay().getSystemColor(SWT.COLOR_LIST_SELECTION));
+ int idx = getIndex();
+ if (idx != selIndex) {
+ if (selIndex >= 0) {
+ listItems[selIndex].setBackground(getParent().getBackground());
+ scrollBucket = Math.max(Math.min(scrollBucket + idx - selIndex, maxScrollBucket), 0);
+ } else { // initially
+ scrollBucket = Math.min(idx, maxScrollBucket);
+ }
+ }
+ selIndex = idx;
+ } else {
+ setBackground(getParent().getBackground());
+ }
+ if (editButton != null) {
+ editButton.setSelected(selected);
+ }
+ }
+
+ @Override
+ public void setBackground(Color color) {
+ super.setBackground(color);
+ if (icon != null && !icon.isDisposed())
+ icon.setBackground(color);
+ if (label != null && !label.isDisposed())
+ label.setBackground(color);
+ if (editButton != null && !editButton.isDisposed())
+ editButton.setBackground(color);
+ }
+
+ public void setImage(Image image) {
+ if (icon != null && !icon.isDisposed())
+ icon.setImage(image);
+ }
+
+ public void setText(String text) {
+ if (!label.isDisposed())
+ label.setText(text);
+ }
+
+ @Override
+ public boolean setFocus() {
+ super.setFocus();
+ return true;
+ }
+
+ protected int getIndex() {
+ return index;
+ }
+
+ private Label createImage(Composite parent, Image image) {
+ Rectangle bounds = image.getBounds();
+ boolean disposeImage = false;
+ if (bounds.height > 16 || bounds.width > 16) {
+ Image buttonImage = new Image(getDisplay(), 16, 16);
+ GC gc = new GC(buttonImage);
+ gc.setAntialias(SWT.ON);
+ gc.setInterpolation(SWT.HIGH);
+ // resize to 16 pixels
+ gc.drawImage(image, 0, 0, image.getBounds().width, image.getBounds().height, 0, 0, 16, 16);
+ gc.dispose();
+ image = buttonImage;
+ disposeImage = true;
+ }
+ Label icon = new Label(parent, SWT.NONE);
+ icon.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, true));
+ icon.setImage(image);
+ if (disposeImage) {
+ final Image disposableImage = image;
+ icon.addDisposeListener(e -> disposableImage.dispose());
+ }
+ icon.setBackground(parent.getBackground());
+ return icon;
+ }
+
+ private Label createLabel(Composite parent, Object element) {
+ Label label = new Label(parent, SWT.NONE);
+ label.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, true));
+ ILabelProvider labelProvider = (ILabelProvider) getLabelProvider();
+ label.setText(labelProvider.getText(element));
+ if (labelProvider instanceof IFontProvider) {
+ label.setFont(((IFontProvider) labelProvider).getFont(element));
+ }
+ label.setBackground(parent.getBackground());
+ return label;
+ }
+ } // end ListItem class
+
+ public LaunchBarListViewer(Composite parent) {
+ filterControl = new FilterControl(parent);
+ filterControl.setBackground(parent.getBackground());
+ listScrolled = new ScrolledComposite(parent, SWT.V_SCROLL | SWT.NO_BACKGROUND);
+ listScrolled.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ listScrolled.setExpandHorizontal(true);
+ listScrolled.setBackground(parent.getBackground());
+ listComposite = new Composite(listScrolled, SWT.NONE);
+ listComposite.setBackground(parent.getBackground());
+ listScrolled.setContent(listComposite);
+ listComposite.setLayout(GridLayoutFactory.fillDefaults().spacing(0, 0).create());
+ selIndex = -1;
+ scrollBucket = 0;
+ filterControl.attachListViewer(this);
+ historySupported = false;
+ setHistoryPreferenceName(getHistoryPreferenceName());
+ }
+
+ private void createSash(final Composite listComp) {
+ if (separatorIndex < 0 || !historySupported)
+ return;
+ sash = new Sash(listComp, SWT.BORDER | SWT.HORIZONTAL);
+ sash.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ if (separatorIndex < listItems.length)
+ sash.moveAbove(listItems[separatorIndex]);
+ else
+ sash.moveBelow(null);
+
+ sash.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_LIST_SELECTION));
+ sash.addListener(SWT.Selection, e -> separatorIndex = (e.y + itemH / 2) / itemH);
+ sash.addMouseListener(new MouseListener() {
+ @Override
+ public void mouseUp(MouseEvent e) {
+ setSeparatorIndex(separatorIndex); // call setter if it was overriden
+ if (separatorIndex >= 0) {
+ if (separatorIndex < listItems.length)
+ sash.moveAbove(listItems[separatorIndex]);
+ else
+ sash.moveBelow(null);
+ listComp.layout();
+ }
+ }
+
+ @Override
+ public void mouseDown(MouseEvent e) {
+ if (!Platform.getOS().equals(Platform.OS_MACOSX)) { // does not work on mac
+ sash.moveAbove(null); // keep on top so user see it when moving
+ }
+ }
+
+ @Override
+ public void mouseDoubleClick(MouseEvent e) {
+ // ignore
+ }
+
+ });
+ sash.setToolTipText(Messages.LaunchBarListViewer_0);
+ }
+
+ @Override
+ public Control getControl() {
+ return listScrolled;
+ }
+
+ @Override
+ protected void inputChanged(Object input, Object oldInput) {
+ super.inputChanged(input, oldInput);
+ refreshAll();
+ }
+
+ protected void refreshAll() {
+ selIndex = -1;
+ Control[] children = listComposite.getChildren();
+ for (Control control : children) {
+ control.dispose();
+ }
+ Object[] origElements = getElements();
+ Object[] elements = filterElements(origElements);
+ listItems = new ListItem[elements.length];
+ if (elements.length > 0) {
+ listItems[0] = createListItem(elements, 0);
+ itemH = Math.max(listItems[0].computeSize(SWT.DEFAULT, SWT.DEFAULT).y, 16);
+ for (int i = 1; i < elements.length; ++i) {
+ listItems[i] = createListItem(elements, i);
+ }
+ createSash(listComposite);
+ }
+ listComposite.pack(true);
+ listComposite.layout(true, true);
+ GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
+ if (elements.length > maxScrollBucket) {
+ Rectangle bounds = listItems[maxScrollBucket].getBounds();
+ gd.heightHint = Math.max(bounds.y + bounds.height, itemH * (maxScrollBucket + 1));
+ }
+ listScrolled.setLayoutData(gd);
+ listScrolled.layout(true);
+ }
+
+ private ListItem createListItem(Object[] elements, int i) {
+ ListItem item = new ListItem(listComposite, SWT.NONE, elements[i], i, (ILabelProvider) getLabelProvider());
+ GridData gd = new GridData(SWT.FILL, SWT.FILL, true, false);
+ item.setLayoutData(gd);
+ if (i <= maxScrollBucket) { // this is how many visible by default
+ item.lazyInit();
+ } else {
+ gd.heightHint = itemH;
+ }
+ return item;
+ }
+
+ @Override
+ protected Widget doFindInputItem(Object element) {
+ return doFindItem(element);
+ }
+
+ @Override
+ protected Widget doFindItem(Object element) {
+ if (listItems == null)
+ return null;
+ for (ListItem listItem : listItems) {
+ if (listItem.element.equals(element))
+ return listItem;
+ }
+ return null;
+ }
+
+ @Override
+ protected void doUpdateItem(Widget item, Object element, boolean fullMap) {
+ if (item instanceof ListItem) {
+ ((ListItem) item).lazyInit();
+ }
+ }
+
+ @SuppressWarnings("rawtypes")
+ @Override
+ protected List getSelectionFromWidget() {
+ ArrayList<Object> arrayList = new ArrayList<>();
+ if (selIndex >= 0)
+ arrayList.add(listItems[selIndex].element);
+ return arrayList;
+ }
+
+ @Override
+ protected void internalRefresh(Object element) {
+ if (element == null || element == getRoot()) {
+ refreshAll();
+ return;
+ }
+ ListItem item = (ListItem) doFindItem(element);
+ ILabelProvider lp = (ILabelProvider) getLabelProvider();
+ if (lp == null || item == null)
+ return;
+ item.setImage(lp.getImage(element));
+ item.setText(lp.getText(element));
+ }
+
+ private Object[] filterElements(Object[] elements) {
+ Object[] topElements = elements.clone();
+ if (getComparator() != null)
+ getComparator().sort(this, elements);
+ if (getTopComparator() != null)
+ getTopComparator().sort(this, topElements);
+ // only bottom part will be filtered
+ Object[] result = elements;
+ if (getFilters() != null) {
+ for (ViewerFilter f : getFilters()) {
+ result = f.filter(this, (Object) null, result);
+ }
+ }
+ if (separatorIndex <= 0 || !historySupported)
+ return result;
+ if (separatorIndex >= topElements.length) {
+ return topElements; // all elements will fit in top elements
+ }
+ ILaunchDescriptor[] descsCopy = new ILaunchDescriptor[separatorIndex + result.length];
+ System.arraycopy(topElements, 0, descsCopy, 0, separatorIndex); // copy first N elements
+ System.arraycopy(result, 0, descsCopy, separatorIndex, result.length); // copy all into rest
+ return descsCopy;
+ }
+
+ private Object[] getElements() {
+ IStructuredContentProvider cp = (IStructuredContentProvider) getContentProvider();
+ if (cp == null)
+ return new Object[0];
+ Object[] elements = cp.getElements(getInput());
+ return elements;
+ }
+
+ @Override
+ public void reveal(Object element) {
+ // TODO Auto-generated method stub
+ }
+
+ public void setDefaultSelection(StructuredSelection selection) {
+ finalSelection = true;
+ setSelection(selection, true);
+ }
+
+ @Override
+ protected void setSelectionToWidget(@SuppressWarnings("rawtypes") List l, boolean reveal) {
+ if (l.size() == 0) {
+ return;
+ }
+ Object sel = l.get(0);
+ Widget wid = doFindItem(sel);
+ if (wid instanceof ListItem) {
+ ListItem listItem = (ListItem) wid;
+ listItem.setSelected(true);
+ }
+ }
+
+ public int getSeparatorIndex() {
+ return separatorIndex;
+ }
+
+ public void setSeparatorIndex(int separatorIndex) {
+ this.separatorIndex = separatorIndex;
+ if (separatorIndex <= 0)
+ return;
+ IPreferenceStore store = Activator.getDefault().getPreferenceStore();
+ String prefName = getHistoryPreferenceName();
+ if (prefName != null && store.getInt(prefName) != getSeparatorIndex()) {
+ store.setValue(prefName, getSeparatorIndex());
+ }
+ }
+
+ protected String getHistoryPreferenceName() {
+ return historyPref;
+ }
+
+ public int getItemCount() {
+ return listItems.length;
+ }
+
+ /**
+ * Returns top element (provider element) in the begging on non-history list
+ *
+ * @return
+ */
+ public Object getTopFilteredElement() {
+ if (listItems.length > 0) {
+ if (separatorIndex <= 0 || separatorIndex >= listItems.length || !historySupported)
+ return listItems[0].element;
+ else
+ return listItems[separatorIndex].element;
+ }
+ return null;
+ }
+
+ public Object getTopElement() {
+ if (listItems.length > 0) {
+ return listItems[0].element;
+ }
+ return null;
+ }
+
+ public ViewerComparator getTopComparator() {
+ return historyComparator;
+ }
+
+ /**
+ * ViewerComparator comparator labels of elements by default
+ *
+ * @param comp
+ */
+ public void setHistoryComparator(ViewerComparator comp) {
+ historyComparator = comp;
+ }
+
+ public void setHistoryComparator(Comparator<?> comp) {
+ historyComparator = comp == null ? null : new LaunchBarListViewerComparator(comp);
+ }
+
+ public void setComparator(Comparator<?> comp) {
+ setComparator(comp == null ? null : new LaunchBarListViewerComparator(comp));
+ }
+
+ public boolean isHistorySupported() {
+ return historySupported;
+ }
+
+ public void setHistorySupported(boolean historySupported) {
+ this.historySupported = historySupported;
+ }
+
+ public void setHistoryPreferenceName(String historyPreferenceName) {
+ this.historyPref = historyPreferenceName;
+ if (historyPreferenceName != null) {
+ IPreferenceStore store = Activator.getDefault().getPreferenceStore();
+ int separator = store.getInt(historyPreferenceName);
+ if (separator <= 0)
+ separator = 1;
+ setSeparatorIndex(separator);
+ }
+ }
+
+ /**
+ * final selection will be set to true when user made a final selection in a list for example when double click on entry or
+ * pressed enter key
+ */
+ public boolean isFinalSelection() {
+ return finalSelection;
+ }
+
+ public void setFinalSelection(boolean finalSelection) {
+ this.finalSelection = finalSelection;
+ }
+
+ public void setFocus() {
+ if (selIndex >= 0 && listItems != null && listItems.length < selIndex)
+ listItems[selIndex].setFocus();
+ else
+ getControl().setFocus();
+ }
+
+ public void setFilterVisible(boolean vis) {
+ filterControl.setVisible(vis);
+ }
+}
diff --git a/launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/LaunchBarPreferenceInitializer.java b/launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/LaunchBarPreferenceInitializer.java
new file mode 100644
index 00000000000..13ae9196f8d
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/LaunchBarPreferenceInitializer.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2014, 2016 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Doug Schaefer
+ * Torkild U. Resheim - add preference to control target selector
+ * Vincent Guignot - Ingenico - add preference to control Build button
+ *******************************************************************************/
+package org.eclipse.launchbar.ui.controls.internal;
+
+import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
+import org.eclipse.jface.preference.IPreferenceStore;
+
+public class LaunchBarPreferenceInitializer extends AbstractPreferenceInitializer {
+
+ @Override
+ public void initializeDefaultPreferences() {
+ IPreferenceStore store = Activator.getDefault().getPreferenceStore();
+ store.setDefault(Activator.PREF_ENABLE_LAUNCHBAR, true);
+ store.setDefault(Activator.PREF_ENABLE_BUILDBUTTON, true);
+ store.setDefault(Activator.PREF_ALWAYS_TARGETSELECTOR, false);
+ store.setDefault(Activator.PREF_LAUNCH_HISTORY_SIZE, 3);
+ }
+
+}
diff --git a/launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/LaunchBarPreferencePage.java b/launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/LaunchBarPreferencePage.java
new file mode 100644
index 00000000000..629aa3047de
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/LaunchBarPreferencePage.java
@@ -0,0 +1,45 @@
+/*******************************************************************************
+ * Copyright (c) 2014, 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Doug Schaefer
+ * Torkild U. Resheim - add preference to control target selector
+ * Vincent Guignot - Ingenico - add preference to control Build button
+ *******************************************************************************/
+package org.eclipse.launchbar.ui.controls.internal;
+
+import org.eclipse.jface.preference.BooleanFieldEditor;
+import org.eclipse.jface.preference.FieldEditorPreferencePage;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPreferencePage;
+
+public class LaunchBarPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {
+
+ public LaunchBarPreferencePage() {
+ super(GRID);
+ }
+
+ @Override
+ public void init(IWorkbench workbench) {
+ setPreferenceStore(Activator.getDefault().getPreferenceStore());
+ setDescription(Messages.LaunchBarPreferencePage_0);
+ }
+
+ @Override
+ protected void createFieldEditors() {
+ addField(new BooleanFieldEditor(Activator.PREF_ENABLE_LAUNCHBAR, Messages.LaunchBarPreferencePage_1,
+ getFieldEditorParent()));
+ addField(new BooleanFieldEditor(Activator.PREF_ENABLE_BUILDBUTTON,
+ Messages.LaunchBarPreferencePage_EnableBuildButton, getFieldEditorParent()));
+ addField(new BooleanFieldEditor(Activator.PREF_ALWAYS_TARGETSELECTOR,
+ Messages.LaunchBarPreferencePage_AlwaysTargetSelector, getFieldEditorParent()));
+ }
+
+}
diff --git a/launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/LaunchBarWidgetIds.java b/launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/LaunchBarWidgetIds.java
new file mode 100644
index 00000000000..f1ae03ff455
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/LaunchBarWidgetIds.java
@@ -0,0 +1,23 @@
+/*******************************************************************************
+ * Copyright (c) 2017 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.launchbar.ui.controls.internal;
+
+public interface LaunchBarWidgetIds {
+
+ public static final String ID = "org.eclipse.swtbot.widget.key"; //$NON-NLS-1$
+
+ public static final String CONFIG_SELECTOR = "org.eclipse.launchbar.selector.config"; //$NON-NLS-1$
+
+ public static final String POPUP = "org.eclipse.launchbar.popup"; //$NON-NLS-1$
+ public static final String EDIT = "org.eclipse.launchbar.edit"; //$NON-NLS-1$
+ public static final String NEW = "org.eclipse.launchbar.new"; //$NON-NLS-1$
+
+}
diff --git a/launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/Messages.java b/launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/Messages.java
new file mode 100644
index 00000000000..f2bf8fa27b5
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/Messages.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2014, 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Doug Schaefer
+ * Torkild U. Resheim - add preference to control target selector
+ * Vincent Guignot - Ingenico - add preference to control Build button
+ *******************************************************************************/
+package org.eclipse.launchbar.ui.controls.internal;
+
+import org.eclipse.osgi.util.NLS;
+
+public class Messages extends NLS {
+ private static final String BUNDLE_NAME = "org.eclipse.launchbar.ui.controls.internal.messages"; //$NON-NLS-1$
+ public static String ConfigSelector_0;
+ public static String ConfigSelector_1;
+ public static String ConfigSelector_2;
+ public static String ConfigSelector_3;
+ public static String CSelector_0;
+ public static String CSelector_1;
+ public static String EditButton_0;
+ public static String FilterControl_0;
+ public static String FilterControl_1;
+ public static String LaunchBarControl_0;
+ public static String LaunchBarControl_Build;
+ public static String LaunchBarControl_Launch;
+ public static String LaunchBarControl_Stop;
+ public static String LaunchBarListViewer_0;
+ public static String LaunchBarPreferencePage_0;
+ public static String LaunchBarPreferencePage_1;
+ public static String LaunchBarPreferencePage_AlwaysTargetSelector;
+ public static String LaunchBarPreferencePage_EnableBuildButton;
+ public static String LaunchConfigurationEditDialog_0;
+ public static String LaunchConfigurationEditDialog_1;
+ public static String LaunchConfigurationEditDialog_2;
+ public static String LaunchConfigurationEditDialog_3;
+ public static String LaunchConfigurationEditDialog_4;
+ public static String LaunchConfigurationEditDialog_5;
+ public static String LaunchConfigurationEditDialog_6;
+ public static String ModeSelector_0;
+ public static String ModeSelector_ToolTip;
+ public static String TargetSelector_ToolTipPrefix;
+ public static String TargetSelector_CreateNewTarget;
+
+ static {
+ // initialize resource bundle
+ NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+ }
+
+ private Messages() {
+ }
+}
diff --git a/launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/ModeSelector.java b/launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/ModeSelector.java
new file mode 100644
index 00000000000..d885b581456
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/ModeSelector.java
@@ -0,0 +1,251 @@
+/*******************************************************************************
+ * Copyright (c) 2014, 2018 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Doug Schaefer
+ *******************************************************************************/
+package org.eclipse.launchbar.ui.controls.internal;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.debug.core.ILaunchConfigurationType;
+import org.eclipse.debug.core.ILaunchManager;
+import org.eclipse.debug.core.ILaunchMode;
+import org.eclipse.debug.internal.ui.DebugUIPlugin;
+import org.eclipse.debug.ui.IDebugUIConstants;
+import org.eclipse.debug.ui.ILaunchGroup;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.launchbar.core.ILaunchBarManager;
+import org.eclipse.launchbar.ui.ILaunchBarUIConstants;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.ToolBar;
+import org.eclipse.swt.widgets.ToolItem;
+
+public class ModeSelector extends CSelector {
+ private static final String[] noModes = new String[] { "---" }; //$NON-NLS-1$
+ private final ILaunchBarManager manager = Activator.getService(ILaunchBarManager.class);
+ private Map<String, Image> modeButtonImages = new HashMap<>();
+
+ public ModeSelector(Composite parent, int style) {
+ super(parent, style);
+ setToolTipText(Messages.ModeSelector_0);
+ setContentProvider(new IStructuredContentProvider() {
+ @Override
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ }
+
+ @Override
+ public void dispose() {
+ }
+
+ @Override
+ public Object[] getElements(Object inputElement) {
+ try {
+ ILaunchMode[] modes = manager.getLaunchModes();
+ if (modes.length > 0)
+ return modes;
+ } catch (CoreException e) {
+ Activator.log(e);
+ }
+ return noModes;
+ }
+ });
+ setLabelProvider(new LabelProvider() {
+ private Map<ImageDescriptor, Image> images = new HashMap<>();
+
+ @Override
+ public void dispose() {
+ super.dispose();
+ for (Image image : images.values()) {
+ image.dispose();
+ }
+ }
+
+ @Override
+ public Image getImage(Object element) {
+ if (element instanceof ILaunchMode) {
+ ILaunchMode mode = (ILaunchMode) element;
+ ILaunchGroup group = getLaunchGroup(mode);
+ if (group != null) {
+ ImageDescriptor imageDesc = group.getImageDescriptor();
+ if (imageDesc == null)
+ return null;
+ Image image = images.get(imageDesc);
+ if (image == null) {
+ image = imageDesc.createImage();
+ images.put(imageDesc, image);
+ }
+ return image;
+ }
+ }
+ return super.getImage(element);
+ }
+
+ @Override
+ public String getText(Object element) {
+ if (element instanceof ILaunchMode) {
+ ILaunchMode mode = (ILaunchMode) element;
+ ILaunchGroup group = getLaunchGroup(mode);
+ if (group != null) {
+ return group.getLabel().replace("&", ""); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ }
+ return super.getText(element);
+ }
+ });
+ setSorter((o1, o2) -> {
+ if (o1 instanceof ILaunchMode && o2 instanceof ILaunchMode) {
+ String mode1 = ((ILaunchMode) o1).getIdentifier();
+ String mode2 = ((ILaunchMode) o2).getIdentifier();
+ // run comes first, then debug, then the rest
+ if (mode1.equals("run")) { //$NON-NLS-1$
+ if (mode2.equals("run")) //$NON-NLS-1$
+ return 0;
+ else
+ return -1;
+ }
+ if (mode2.equals("run")) //$NON-NLS-1$
+ return 1;
+ if (mode1.equals("debug")) { //$NON-NLS-1$
+ if (mode2.equals("debug")) //$NON-NLS-1$
+ return 0;
+ else
+ return -1;
+ }
+ if (mode2.equals("debug")) //$NON-NLS-1$
+ return 1;
+ }
+ return 0;
+ });
+ }
+
+ @Override
+ public void dispose() {
+ super.dispose();
+
+ for (Image image : modeButtonImages.values()) {
+ image.dispose();
+ }
+ }
+
+ protected ILaunchGroup getDefaultLaunchGroup(String mode) {
+ String groupId;
+ if (mode.equals(ILaunchManager.DEBUG_MODE)) {
+ groupId = IDebugUIConstants.ID_DEBUG_LAUNCH_GROUP;
+ } else if (mode.equals(ILaunchManager.PROFILE_MODE)) {
+ groupId = IDebugUIConstants.ID_PROFILE_LAUNCH_GROUP;
+ } else {
+ groupId = IDebugUIConstants.ID_RUN_LAUNCH_GROUP;
+ }
+ return DebugUIPlugin.getDefault().getLaunchConfigurationManager().getLaunchGroup(groupId);
+ }
+
+ protected ILaunchGroup getLaunchGroup(String mode) throws CoreException {
+ ILaunchConfigurationType type = manager.getLaunchConfigurationType(manager.getActiveLaunchDescriptor(),
+ manager.getActiveLaunchTarget());
+ if (type == null)
+ return null;
+ return DebugUIPlugin.getDefault().getLaunchConfigurationManager().getLaunchGroup(type, mode);
+ }
+
+ @Override
+ protected void fireSelectionChanged() {
+ Object selected = getSelection();
+ if (selected instanceof ILaunchMode) {
+ ILaunchMode mode = (ILaunchMode) selected;
+ try {
+ manager.setActiveLaunchMode(mode);
+ } catch (CoreException e) {
+ Activator.log(e);
+ } catch (Exception e) {
+ // manager can throw illegal state exception hopefully we never
+ // get it
+ Activator.log(e);
+ }
+ }
+ }
+
+ @Override
+ public Point computeSize(int wHint, int hHint, boolean changed) {
+ return super.computeSize(150, hHint, changed);
+ }
+
+ @Override
+ public void setSelection(Object element) {
+ if (element == null)
+ element = noModes[0];
+ if (isDisposed())
+ return;
+ super.setSelection(element);
+ updateLaunchButton(findLaunchButton());
+ }
+
+ private ToolItem findLaunchButton() {
+ String commandId = ILaunchBarUIConstants.CMD_LAUNCH;
+ for (Control control : getParent().getChildren()) {
+ if (control instanceof ToolBar) {
+ for (ToolItem toolItem : ((ToolBar) control).getItems()) {
+ if (commandId.equals(toolItem.getData("command"))) { //$NON-NLS-1$
+ // found launch button
+ return toolItem;
+ }
+ }
+ }
+ }
+ Activator.log(new RuntimeException("Launch button is not found in toolbar")); //$NON-NLS-1$
+ return null;
+ }
+
+ private void updateLaunchButton(ToolItem toolItem) {
+ if (toolItem == null || isDisposed()) {
+ return;
+ }
+ Object selection = getSelection();
+ if (selection instanceof ILaunchMode) {
+ ILaunchMode mode = (ILaunchMode) selection;
+ toolItem.setToolTipText(NLS.bind(Messages.ModeSelector_ToolTip, mode.getLabel()));
+ ILaunchGroup group = getLaunchGroup(mode);
+ // we cannot use mode id as id, since external tool group and run group have same "run" id for the mode
+ // but different images
+ String id = group.getIdentifier();
+ Image image = modeButtonImages.get(id);
+ if (image == null) {
+ Image bgImage = Activator.getDefault().getImageRegistry().get(Activator.IMG_BUTTON_BACKGROUND);
+ Image modeImage = getLabelProvider().getImage(mode);
+ ImageDescriptor imageDesc = new LaunchBarButtonImageDescriptor(modeImage, bgImage);
+ image = imageDesc.createImage();
+ modeButtonImages.put(id, image);
+ }
+ toolItem.setImage(image);
+ }
+ }
+
+ public ILaunchGroup getLaunchGroup(ILaunchMode mode) {
+ ILaunchGroup group = null;
+ try {
+ group = getLaunchGroup(mode.getIdentifier());
+ } catch (CoreException e) {
+ Activator.log(e);
+ }
+ if (group == null) {
+ group = getDefaultLaunchGroup(mode.getIdentifier());
+ }
+ return group;
+ }
+}
diff --git a/launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/OpenLaunchSelector.java b/launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/OpenLaunchSelector.java
new file mode 100644
index 00000000000..f2ee5997b3a
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/OpenLaunchSelector.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * Copyright (c) 2015, 2019 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alena Laskavaia
+ *******************************************************************************/
+package org.eclipse.launchbar.ui.controls.internal;
+
+import java.util.List;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.e4.core.contexts.EclipseContextFactory;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolControl;
+import org.eclipse.e4.ui.workbench.modeling.EModelService;
+import org.osgi.framework.FrameworkUtil;
+
+public class OpenLaunchSelector extends AbstractHandler {
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ IEclipseContext serviceContext = EclipseContextFactory.getServiceContext(
+ FrameworkUtil.getBundle(org.eclipse.e4.ui.workbench.IWorkbench.class).getBundleContext());
+ MApplication application = serviceContext.get(MApplication.class);
+ EModelService service = application.getContext().get(EModelService.class);
+ List<Object> findElements = service.findElements(application, LaunchBarControl.ID, null, null);
+ if (!findElements.isEmpty()) {
+ MToolControl mpart = (MToolControl) findElements.get(0);
+ Object bar = mpart.getObject();
+ if (bar instanceof LaunchBarControl) {
+ ((LaunchBarControl) bar).getConfigSelector().openPopup();
+ }
+ }
+ return Status.OK_STATUS;
+ }
+}
diff --git a/launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/TargetSelector.java b/launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/TargetSelector.java
new file mode 100644
index 00000000000..66a51a26aa9
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/TargetSelector.java
@@ -0,0 +1,265 @@
+/*******************************************************************************
+ * Copyright (c) 2014, 2018 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Doug Schaefer
+ *******************************************************************************/
+package org.eclipse.launchbar.ui.controls.internal;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.jface.layout.GridLayoutFactory;
+import org.eclipse.jface.resource.CompositeImageDescriptor;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.launchbar.core.ILaunchBarManager;
+import org.eclipse.launchbar.core.target.ILaunchTarget;
+import org.eclipse.launchbar.core.target.ILaunchTargetListener;
+import org.eclipse.launchbar.core.target.ILaunchTargetManager;
+import org.eclipse.launchbar.core.target.TargetStatus;
+import org.eclipse.launchbar.core.target.TargetStatus.Code;
+import org.eclipse.launchbar.ui.target.ILaunchTargetUIManager;
+import org.eclipse.launchbar.ui.target.NewLaunchTargetWizardAction;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.MouseAdapter;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.events.MouseListener;
+import org.eclipse.swt.events.MouseTrackAdapter;
+import org.eclipse.swt.events.MouseTrackListener;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.PlatformUI;
+
+public class TargetSelector extends CSelector implements ILaunchTargetListener {
+
+ private final ILaunchBarManager manager = Activator.getService(ILaunchBarManager.class);
+ private final ILaunchTargetUIManager targetUIManager = Activator.getService(ILaunchTargetUIManager.class);
+ private final ILaunchTargetManager targetManager = Activator.getService(ILaunchTargetManager.class);
+
+ private static final ILaunchTarget[] noTargets = new ILaunchTarget[] { ILaunchTarget.NULL_TARGET };
+
+ public TargetSelector(Composite parent, int style) {
+ super(parent, style);
+
+ targetManager.addListener(this);
+
+ setContentProvider(new IStructuredContentProvider() {
+ @Override
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ }
+
+ @Override
+ public void dispose() {
+ }
+
+ @Override
+ public Object[] getElements(Object inputElement) {
+ try {
+ return manager.getLaunchTargets(manager.getActiveLaunchDescriptor());
+ } catch (CoreException e) {
+ Activator.log(e);
+ return noTargets;
+ }
+ }
+ });
+
+ setLabelProvider(new LabelProvider() {
+ @Override
+ public String getText(Object element) {
+ if (element instanceof ILaunchTarget) {
+ ILaunchTarget target = (ILaunchTarget) element;
+ ILabelProvider provider = targetUIManager.getLabelProvider(target);
+ return provider != null ? provider.getText(target) : target.getId();
+ }
+ return super.getText(element);
+ }
+
+ @Override
+ public Image getImage(Object element) {
+ if (element == ILaunchTarget.NULL_TARGET) {
+ return null;
+ }
+ if (element instanceof ILaunchTarget) {
+ ILaunchTarget target = (ILaunchTarget) element;
+ ILabelProvider provider = targetUIManager.getLabelProvider(target);
+ if (provider != null) {
+ final Image baseImage = provider.getImage(target);
+ final TargetStatus status = targetManager.getStatus(target);
+ if (status.getCode() == Code.OK) {
+ return baseImage;
+ } else {
+ String compId = String.format("%s.%s.%s", target.getTypeId(), target.getId(), //$NON-NLS-1$
+ status.getCode());
+ Image image = Activator.getDefault().getImageRegistry().get(compId);
+ if (image == null && baseImage != null) {
+ ImageDescriptor desc = new CompositeImageDescriptor() {
+ @Override
+ protected Point getSize() {
+ Rectangle bounds = baseImage.getBounds();
+ return new Point(bounds.width, bounds.height);
+ }
+
+ @Override
+ protected void drawCompositeImage(int width, int height) {
+ Image overlay = PlatformUI.getWorkbench().getSharedImages()
+ .getImage(status.getCode() == Code.ERROR
+ ? ISharedImages.IMG_DEC_FIELD_ERROR
+ : ISharedImages.IMG_DEC_FIELD_WARNING);
+ drawImage(baseImage.getImageData(), 0, 0);
+ int y = baseImage.getBounds().height - overlay.getBounds().height;
+ drawImage(overlay.getImageData(), 0, y);
+ }
+ };
+ image = desc.createImage();
+ Activator.getDefault().getImageRegistry().put(compId, image);
+ }
+ return image;
+ }
+ }
+ }
+ return super.getImage(element);
+ }
+ });
+
+ setSorter((o1, o2) -> {
+ // Sort by name
+ String s1 = String.valueOf(o1);
+ String s2 = String.valueOf(o2);
+ return s1.compareTo(s2);
+ });
+ }
+
+ @Override
+ public boolean isEditable(Object element) {
+ return true;
+ }
+
+ @Override
+ public void handleEdit(Object element) {
+ targetUIManager.editLaunchTarget((ILaunchTarget) getSelection());
+ }
+
+ @Override
+ public boolean hasActionArea() {
+ return true;
+ }
+
+ @Override
+ public void createActionArea(final Composite parent) {
+ final Composite createButton = new Composite(parent, SWT.BORDER);
+ GridDataFactory.fillDefaults().grab(true, false).applyTo(createButton);
+ GridLayoutFactory.fillDefaults().margins(7, 7).applyTo(createButton);
+ createButton.setBackground(getBackground());
+
+ final Label createLabel = new Label(createButton, SWT.NONE);
+ GridDataFactory.fillDefaults().grab(true, false).applyTo(createLabel);
+ createLabel.setBackground(getBackground());
+ createLabel.setText(Messages.TargetSelector_CreateNewTarget);
+
+ MouseListener mouseListener = new MouseAdapter() {
+ @Override
+ public void mouseUp(org.eclipse.swt.events.MouseEvent event) {
+ new NewLaunchTargetWizardAction().run();
+ }
+ };
+
+ createButton.addMouseListener(mouseListener);
+ createLabel.addMouseListener(mouseListener);
+
+ MouseTrackListener mouseTrackListener = new MouseTrackAdapter() {
+ @Override
+ public void mouseEnter(MouseEvent e) {
+ Color highlightColor = getHighlightColor();
+ createButton.setBackground(highlightColor);
+ createLabel.setBackground(highlightColor);
+ }
+
+ @Override
+ public void mouseExit(MouseEvent e) {
+ Color backgroundColor = getBackground();
+ createButton.setBackground(backgroundColor);
+ createLabel.setBackground(backgroundColor);
+ }
+ };
+ createButton.addMouseTrackListener(mouseTrackListener);
+ createLabel.addMouseTrackListener(mouseTrackListener);
+ }
+
+ @Override
+ protected void fireSelectionChanged() {
+ Object selection = getSelection();
+ if (selection instanceof ILaunchTarget) {
+ ILaunchTarget target = (ILaunchTarget) selection;
+ try {
+ manager.setActiveLaunchTarget(target);
+ } catch (CoreException e) {
+ Activator.log(e);
+ }
+ }
+ }
+
+ public void setToolTipText(ILaunchTarget target) {
+ String text = Messages.TargetSelector_ToolTipPrefix + ": " + targetManager.getStatus(target).getMessage(); //$NON-NLS-1$
+ setToolTipText(text);
+ }
+
+ @Override
+ public Point computeSize(int wHint, int hHint, boolean changed) {
+ return super.computeSize(200, hHint, changed);
+ }
+
+ @Override
+ public void setSelection(Object element) {
+ if (isDisposed())
+ return;
+ if (element == null) {
+ element = noTargets[0];
+ } else if (element instanceof ILaunchTarget) {
+ setToolTipText((ILaunchTarget) element);
+ }
+ super.setSelection(element);
+ }
+
+ @Override
+ public void dispose() {
+ super.dispose();
+ targetManager.removeListener(this);
+ }
+
+ @Override
+ public void update(Object element) {
+ super.update(element);
+ if (element != null && element instanceof ILaunchTarget) {
+ setToolTipText((ILaunchTarget) element);
+ } else {
+ setToolTipText(Messages.TargetSelector_ToolTipPrefix);
+ }
+ }
+
+ @Override
+ public void launchTargetStatusChanged(ILaunchTarget target) {
+ try {
+ if (target.equals(manager.getActiveLaunchTarget())) {
+ refresh();
+ }
+ } catch (CoreException e) {
+ Activator.log(e);
+ }
+ }
+
+}
diff --git a/launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/Transition.java b/launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/Transition.java
new file mode 100644
index 00000000000..06eb83433a4
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/Transition.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2014 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Doug Schaefer
+ *******************************************************************************/
+package org.eclipse.launchbar.ui.controls.internal;
+
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+
+public class Transition implements Runnable {
+
+ private final Control control;
+ private final int tick;
+ private int current;
+ private int to;
+ private int incr;
+
+ public Transition(Control control, int current, int tick) {
+ this.control = control;
+ this.current = current;
+ this.tick = tick;
+ }
+
+ @Override
+ public void run() {
+ current += incr;
+ if (!control.isDisposed())
+ control.redraw();
+ if (!done())
+ Display.getCurrent().timerExec(tick, this);
+ }
+
+ public void to(int to) {
+ if (current == to)
+ return;
+
+ this.to = to;
+ this.incr = current > to ? -1 : 1;
+ Display.getCurrent().timerExec(tick, this);
+ }
+
+ public int getCurrent() {
+ return current;
+ }
+
+ public boolean done() {
+ return current == to;
+ }
+
+}
diff --git a/launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/messages.properties b/launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/messages.properties
new file mode 100644
index 00000000000..a6b1af4cd02
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.controls/src/org/eclipse/launchbar/ui/controls/internal/messages.properties
@@ -0,0 +1,39 @@
+################################################################################
+# Copyright (c) 2016 QNX Software Systems and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+################################################################################
+ConfigSelector_0=No Launch Configurations
+ConfigSelector_1=Launch Configuration
+ConfigSelector_2=New Launch Configuration...
+ConfigSelector_3=Create Launch Configuration
+CSelector_0=Closing popup
+CSelector_1=Updating launch bar selection
+EditButton_0=Edit
+FilterControl_0=type filter text
+FilterControl_1={0} {1} matches.
+LaunchBarControl_0=on
+LaunchBarControl_Build=Build
+LaunchBarControl_Launch=Launch
+LaunchBarControl_Stop=Stop
+LaunchBarListViewer_0=Increase/Decrease size of recently used elements pane
+LaunchBarPreferencePage_0=Preferences for the Launch Bar
+LaunchBarPreferencePage_1=Enable the Launch Bar
+LaunchBarPreferencePage_AlwaysTargetSelector=Always show the target selector
+LaunchBarPreferencePage_EnableBuildButton=Enable the Build button
+LaunchConfigurationEditDialog_0=Delete
+LaunchConfigurationEditDialog_1=Duplicate
+LaunchConfigurationEditDialog_2=Launch
+LaunchConfigurationEditDialog_3=Confirm Delete
+LaunchConfigurationEditDialog_4=Are you sure you want to delete
+LaunchConfigurationEditDialog_5=Deleting launch configuration
+LaunchConfigurationEditDialog_6=Duplicating launch configuration
+ModeSelector_0=Launch Mode
+ModeSelector_ToolTip=Launch in ''{0}'' mode
+TargetSelector_ToolTipPrefix=Launch Target
+TargetSelector_CreateNewTarget=New Launch Target...
diff --git a/launchbar/org.eclipse.launchbar.ui.tests/.classpath b/launchbar/org.eclipse.launchbar.ui.tests/.classpath
new file mode 100644
index 00000000000..a42a828e04a
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.tests/.classpath
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src">
+ <attributes>
+ <attribute name="test" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/launchbar/org.eclipse.launchbar.ui.tests/.project b/launchbar/org.eclipse.launchbar.ui.tests/.project
new file mode 100644
index 00000000000..4883f55ece3
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.tests/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.launchbar.ui.tests</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/launchbar/org.eclipse.launchbar.ui.tests/.settings/org.eclipse.core.resources.prefs b/launchbar/org.eclipse.launchbar.ui.tests/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.tests/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/launchbar/org.eclipse.launchbar.ui.tests/.settings/org.eclipse.jdt.core.prefs b/launchbar/org.eclipse.launchbar.ui.tests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..5b1c443114d
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.tests/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=ignore
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
+org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=ignore
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/.settings/org.eclipse.jdt.launching.prefs b/launchbar/org.eclipse.launchbar.ui.tests/.settings/org.eclipse.jdt.launching.prefs
index f8a131b56e0..f8a131b56e0 100644
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core/.settings/org.eclipse.jdt.launching.prefs
+++ b/launchbar/org.eclipse.launchbar.ui.tests/.settings/org.eclipse.jdt.launching.prefs
diff --git a/launchbar/org.eclipse.launchbar.ui.tests/.settings/org.eclipse.jdt.ui.prefs b/launchbar/org.eclipse.launchbar.ui.tests/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.tests/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/launchbar/org.eclipse.launchbar.ui.tests/.settings/org.eclipse.pde.api.tools.prefs b/launchbar/org.eclipse.launchbar.ui.tests/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 00000000000..ec9fbf321d0
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.tests/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,184 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITH_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_FIELD=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERCLASS_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_CHANGED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENTS=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETERS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Error
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Warning
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+MISSING_EE_DESCRIPTIONS=Warning
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=false
+changed_execution_env=Error
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+incompatible_api_component_version_report_major_without_breaking_change=Warning
+incompatible_api_component_version_report_minor_without_api_change=Warning
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/launchbar/org.eclipse.launchbar.ui.tests/.settings/org.eclipse.pde.prefs b/launchbar/org.eclipse.launchbar.ui.tests/.settings/org.eclipse.pde.prefs
new file mode 100644
index 00000000000..51a63ec9988
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.tests/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,35 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=2
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=2
+compilers.p.missing-version-export-package=2
+compilers.p.missing-version-import-package=2
+compilers.p.missing-version-require-bundle=2
+compilers.p.no-required-att=0
+compilers.p.no.automatic.module=1
+compilers.p.not-externalized-att=2
+compilers.p.service.component.without.lazyactivation=1
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/launchbar/org.eclipse.launchbar.ui.tests/META-INF/MANIFEST.MF b/launchbar/org.eclipse.launchbar.ui.tests/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..789df36a54b
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,17 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.launchbar.ui.tests;singleton:=true
+Bundle-Version: 1.1.0.qualifier
+Bundle-Vendor: %providerName
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.swtbot.go;bundle-version="2.7.0",
+ org.eclipse.debug.core;bundle-version="3.18.300",
+ org.eclipse.debug.ui;bundle-version="3.15.200"
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Bundle-ActivationPolicy: lazy
+Import-Package: org.eclipse.launchbar.ui.controls.internal,
+ org.junit.jupiter.api;version="5.8.1"
+Automatic-Module-Name: org.eclipse.launchbar.ui.tests
+Bundle-Localization: plugin
diff --git a/launchbar/org.eclipse.launchbar.ui.tests/about.html b/launchbar/org.eclipse.launchbar.ui.tests/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.tests/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/launchbar/org.eclipse.launchbar.ui.tests/build.properties b/launchbar/org.eclipse.launchbar.ui.tests/build.properties
new file mode 100644
index 00000000000..1dde0d2c61c
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.tests/build.properties
@@ -0,0 +1,8 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.properties,\
+ about.html,\
+ plugin.xml
+src.includes = about.html
diff --git a/launchbar/org.eclipse.launchbar.ui.tests/plugin.properties b/launchbar/org.eclipse.launchbar.ui.tests/plugin.properties
new file mode 100644
index 00000000000..573511b45e3
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.tests/plugin.properties
@@ -0,0 +1,14 @@
+##################################################################################
+# Copyright (c) 2020 Torbjörn Svensson and others. All rights reserved.
+# This program and the accompanying materials are made available under the terms
+# of the Eclipse Public License 2.0 which accompanies this distribution, and is
+# available at https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Torbjörn Svensson - initial API and implementation
+##################################################################################
+
+pluginName = Launch Bar UI Tests
+providerName = Eclipse CDT
diff --git a/launchbar/org.eclipse.launchbar.ui.tests/plugin.xml b/launchbar/org.eclipse.launchbar.ui.tests/plugin.xml
new file mode 100644
index 00000000000..9f94260993c
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.tests/plugin.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension
+ point="org.eclipse.debug.ui.launchConfigurationTabs">
+ <tab
+ class="org.eclipse.launchbar.ui.tests.internal.CustomLaunchConfigTab"
+ group="org.eclipse.pde.ui.launcher.WorkbenchLauncherTabGroup"
+ id="org.eclipse.launchbar.ui.tests.internal.MyCustomTab"
+ name="My Custom Tab">
+ <placement
+ after="org.eclipse.debug.ui.prototypeTab">
+ </placement>
+ </tab>
+ </extension>
+
+</plugin>
diff --git a/launchbar/org.eclipse.launchbar.ui.tests/pom.xml b/launchbar/org.eclipse.launchbar.ui.tests/pom.xml
new file mode 100644
index 00000000000..cebc85c2efc
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.tests/pom.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2017, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
+<project
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+ xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.cdt</groupId>
+ <artifactId>cdt-parent</artifactId>
+ <version>10.7.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent>
+
+ <artifactId>org.eclipse.launchbar.ui.tests</artifactId>
+ <version>1.1.0-SNAPSHOT</version>
+ <packaging>eclipse-test-plugin</packaging>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-surefire-plugin</artifactId>
+ <configuration>
+ <dependencies>
+ <dependency>
+ <type>p2-installable-unit</type>
+ <artifactId>org.eclipse.pde.feature.group</artifactId>
+ </dependency>
+ </dependencies>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/launchbar/org.eclipse.launchbar.ui.tests/src/org/eclipse/launchbar/ui/tests/SWTBotCSelector.java b/launchbar/org.eclipse.launchbar.ui.tests/src/org/eclipse/launchbar/ui/tests/SWTBotCSelector.java
new file mode 100644
index 00000000000..cea6f477bfe
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.tests/src/org/eclipse/launchbar/ui/tests/SWTBotCSelector.java
@@ -0,0 +1,63 @@
+/*******************************************************************************
+ * Copyright (c) 2017, 2021 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.launchbar.ui.tests;
+
+import org.eclipse.launchbar.ui.controls.internal.CSelector;
+import org.eclipse.launchbar.ui.controls.internal.LaunchBarWidgetIds;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swtbot.swt.finder.SWTBot;
+import org.eclipse.swtbot.swt.finder.SWTBotWidget;
+import org.eclipse.swtbot.swt.finder.exceptions.WidgetNotFoundException;
+import org.eclipse.swtbot.swt.finder.matchers.WidgetMatcherFactory;
+import org.eclipse.swtbot.swt.finder.results.Result;
+import org.eclipse.swtbot.swt.finder.widgets.AbstractSWTBotControl;
+
+@SWTBotWidget(clasz = CSelector.class, preferredName = "cselector")
+public class SWTBotCSelector extends AbstractSWTBotControl<CSelector> {
+
+ public static SWTBotCSelector withId(String id) throws WidgetNotFoundException {
+ return new SWTBotCSelector(new SWTBot().widget(WidgetMatcherFactory.withId(id)));
+ }
+
+ public SWTBotCSelector(CSelector w) throws WidgetNotFoundException {
+ super(w);
+ }
+
+ public SWTBot bot() {
+ return new SWTBot(widget);
+ }
+
+ public void click(int x, int y) {
+ notify(SWT.MouseEnter);
+ notify(SWT.MouseMove);
+ notify(SWT.Activate);
+ notify(SWT.FocusIn);
+ notify(SWT.MouseDown, createMouseEvent(x, y, 1, SWT.NONE, 1));
+ notify(SWT.MouseUp, createMouseEvent(x, y, 1, SWT.BUTTON1, 1));
+ }
+
+ @Override
+ public SWTBotCSelector click() {
+ Point size = syncExec((Result<Point>) () -> widget.getSize());
+ click(size.x / 2, size.y / 2);
+ return this;
+ }
+
+ public void clickEdit() {
+ bot().canvasWithId(LaunchBarWidgetIds.EDIT).click();
+ }
+
+ public void select(String text) {
+ click();
+ }
+
+}
diff --git a/launchbar/org.eclipse.launchbar.ui.tests/src/org/eclipse/launchbar/ui/tests/SWTBotConfigSelector.java b/launchbar/org.eclipse.launchbar.ui.tests/src/org/eclipse/launchbar/ui/tests/SWTBotConfigSelector.java
new file mode 100644
index 00000000000..27ec403c011
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.tests/src/org/eclipse/launchbar/ui/tests/SWTBotConfigSelector.java
@@ -0,0 +1,110 @@
+/*******************************************************************************
+ * Copyright (c) 2017, 2021 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.launchbar.ui.tests;
+
+import org.eclipse.launchbar.ui.controls.internal.ConfigSelector;
+import org.eclipse.launchbar.ui.controls.internal.LaunchBarWidgetIds;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swtbot.swt.finder.SWTBot;
+import org.eclipse.swtbot.swt.finder.exceptions.WidgetNotFoundException;
+import org.eclipse.swtbot.swt.finder.matchers.WidgetMatcherFactory;
+import org.eclipse.swtbot.swt.finder.results.Result;
+import org.eclipse.swtbot.swt.finder.widgets.AbstractSWTBotControl;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotShell;
+
+public class SWTBotConfigSelector extends SWTBotCSelector {
+
+ private class ActionArea extends AbstractSWTBotControl<Composite> {
+ public ActionArea(SWTBotShell shell) throws WidgetNotFoundException {
+ super(shell.bot().widget(WidgetMatcherFactory.withId(LaunchBarWidgetIds.NEW)));
+ }
+
+ public void click(int x, int y) {
+ notify(SWT.MouseEnter);
+ notify(SWT.MouseMove);
+ notify(SWT.Activate);
+ notify(SWT.FocusIn);
+ notify(SWT.MouseDown, createMouseEvent(x, y, 1, SWT.NONE, 1));
+ notify(SWT.MouseUp, createMouseEvent(x, y, 1, SWT.BUTTON1, 1));
+ }
+
+ @Override
+ public ActionArea click() {
+ Point size = syncExec((Result<Point>) () -> widget.getSize());
+ click(size.x / 2, size.y / 2);
+ return this;
+ }
+ }
+
+ public static class NewConfigDialog extends SWTBotShell {
+ public NewConfigDialog(Shell shell) {
+ super(shell);
+ }
+
+ public NewConfigDialog setMode(String mode) {
+ bot().tableInGroup("Launch Mode").select(mode);
+ return this;
+ }
+
+ public NewConfigDialog setType(String type) {
+ bot().tableInGroup("Launch Configuration Type").select(type);
+ return this;
+ }
+
+ public NewConfigDialog next() {
+ bot().button("Next >").click();
+ return this;
+ }
+
+ public NewConfigDialog finish() {
+ bot().button("Finish").click();
+ return this;
+ }
+ }
+
+ public static class EditConfigDialog extends SWTBotShell {
+ public EditConfigDialog(Shell shell) {
+ super(shell);
+ }
+
+ public EditConfigDialog selectTab(String tab) {
+ bot().cTabItem(tab).activate();
+ return this;
+ }
+
+ public EditConfigDialog ok() {
+ bot().button("OK").click();
+ return this;
+ }
+ }
+
+ public SWTBotConfigSelector(ConfigSelector configSelector) {
+ super(configSelector);
+ }
+
+ public SWTBotConfigSelector(SWTBot bot) {
+ this(bot.widget(WidgetMatcherFactory.withId(LaunchBarWidgetIds.CONFIG_SELECTOR)));
+ }
+
+ public NewConfigDialog newConfigDialog() {
+ click();
+ new ActionArea(bot().shellWithId(LaunchBarWidgetIds.POPUP)).click();
+ return new NewConfigDialog(bot().shell("Create Launch Configuration").widget);
+ }
+
+ public EditConfigDialog editConfigDialog() {
+ clickEdit();
+ return new EditConfigDialog(bot().shell("Edit Configuration").widget);
+ }
+}
diff --git a/launchbar/org.eclipse.launchbar.ui.tests/src/org/eclipse/launchbar/ui/tests/internal/CreateLaunchConfigTests.java b/launchbar/org.eclipse.launchbar.ui.tests/src/org/eclipse/launchbar/ui/tests/internal/CreateLaunchConfigTests.java
new file mode 100644
index 00000000000..026ddffe441
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.tests/src/org/eclipse/launchbar/ui/tests/internal/CreateLaunchConfigTests.java
@@ -0,0 +1,142 @@
+/*******************************************************************************
+ * Copyright (c) 2017, 2021 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.launchbar.ui.tests.internal;
+
+import static org.eclipse.swtbot.eclipse.finder.matchers.WidgetMatcherFactory.withPartName;
+import static org.junit.jupiter.api.Assertions.fail;
+
+import java.util.concurrent.TimeUnit;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.debug.core.DebugPlugin;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.ILaunchConfigurationType;
+import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
+import org.eclipse.debug.core.ILaunchManager;
+import org.eclipse.launchbar.ui.tests.SWTBotConfigSelector;
+import org.eclipse.launchbar.ui.tests.SWTBotConfigSelector.EditConfigDialog;
+import org.eclipse.launchbar.ui.tests.SWTBotConfigSelector.NewConfigDialog;
+import org.eclipse.swtbot.eclipse.finder.SWTWorkbenchBot;
+import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotView;
+import org.eclipse.swtbot.swt.finder.SWTBot;
+import org.eclipse.swtbot.swt.finder.utils.SWTBotPreferences;
+import org.eclipse.swtbot.swt.finder.waits.ICondition;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.Timeout;
+
+public class CreateLaunchConfigTests {
+
+ private static SWTWorkbenchBot bot;
+
+ @BeforeAll
+ public static void beforeClass() {
+ SWTBotPreferences.KEYBOARD_LAYOUT = "EN_US";
+ SWTBotPreferences.TIMEOUT = 10000;
+ bot = new SWTWorkbenchBot();
+ }
+
+ @BeforeEach
+ public void before() {
+ bot.resetWorkbench();
+
+ for (SWTBotView view : bot.views(withPartName("Welcome"))) {
+ view.close();
+ }
+ }
+
+ @AfterEach
+ public void after() {
+ // Delete created launch configs after we are done with them
+ ILaunchManager launchManager = DebugPlugin.getDefault().getLaunchManager();
+ try {
+ for (ILaunchConfiguration config : launchManager.getLaunchConfigurations()) {
+ config.delete();
+ }
+ } catch (CoreException e) {
+ fail(e);
+ }
+ }
+
+ @Test
+ @Timeout(value = 2, unit = TimeUnit.MINUTES)
+ public void createNewLaunchConfig() throws Exception {
+ String configName = "Test Config";
+
+ // Create config with launchbar
+ bot.waitUntil(new ICondition() {
+ @Override
+ public void init(SWTBot bot) {
+ NewConfigDialog dialog = new SWTBotConfigSelector(bot).newConfigDialog();
+ dialog.setMode("Debug").setType("Eclipse Application").next();
+ dialog.bot().textWithLabel("Name:").setText(configName);
+ dialog.finish();
+ }
+
+ @Override
+ public boolean test() throws Exception {
+ ILaunchManager launchManager = DebugPlugin.getDefault().getLaunchManager();
+ for (ILaunchConfiguration config : launchManager.getLaunchConfigurations()) {
+ if (config.getName().equals(configName)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public String getFailureMessage() {
+ return "Test config not found";
+ }
+ });
+ }
+
+ @Test
+ @Timeout(value = 2, unit = TimeUnit.MINUTES)
+ public void editExistingLaunchConfig() throws Exception {
+ // Create a launch config to edit
+ ILaunchConfigurationType type = DebugPlugin.getDefault().getLaunchManager()
+ .getLaunchConfigurationType("org.eclipse.pde.ui.RuntimeWorkbench");
+ ILaunchConfigurationWorkingCopy wc = type.newInstance(null, "Test Config 2");
+ wc.doSave();
+
+ // Edit config with launchbar
+ String configName = "Edited Config";
+ bot.waitUntil(new ICondition() {
+ @Override
+ public void init(SWTBot bot) {
+ EditConfigDialog dialog = new SWTBotConfigSelector(bot).editConfigDialog();
+ dialog.bot().textWithLabel("Launch Configuration Name:").setText(configName);
+ dialog.selectTab("Arguments");
+ dialog.selectTab("My Custom Tab"); // See CustomLaunchConfigTab.java
+ dialog.ok();
+ }
+
+ @Override
+ public boolean test() throws Exception {
+ ILaunchManager launchManager = DebugPlugin.getDefault().getLaunchManager();
+ for (ILaunchConfiguration config : launchManager.getLaunchConfigurations()) {
+ if (config.getName().equals(configName)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public String getFailureMessage() {
+ return "Unable to edit test config";
+ }
+ });
+ }
+}
diff --git a/launchbar/org.eclipse.launchbar.ui.tests/src/org/eclipse/launchbar/ui/tests/internal/CustomLaunchConfigTab.java b/launchbar/org.eclipse.launchbar.ui.tests/src/org/eclipse/launchbar/ui/tests/internal/CustomLaunchConfigTab.java
new file mode 100644
index 00000000000..aa4a67eee0d
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.tests/src/org/eclipse/launchbar/ui/tests/internal/CustomLaunchConfigTab.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2021 Mat Booth and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.launchbar.ui.tests.internal;
+
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
+import org.eclipse.debug.ui.AbstractLaunchConfigurationTab;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.RowLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+
+/**
+ * This is a custom tab that uses a non-GridLayout to test the assumptions made
+ * by the Launchbar's launch configuration editing dialog. The dialog should not
+ * generate CCEs if bespoke tabs do not use GridLayout.
+ *
+ * See bug 560287
+ */
+public class CustomLaunchConfigTab extends AbstractLaunchConfigurationTab {
+
+ @Override
+ public void createControl(Composite parent) {
+ parent.setLayout(new RowLayout());
+ Label label = new Label(parent, SWT.NONE);
+ label.setText("This is my custom tab!");
+ setControl(label);
+ }
+
+ @Override
+ public void setDefaults(ILaunchConfigurationWorkingCopy configuration) {
+ }
+
+ @Override
+ public void initializeFrom(ILaunchConfiguration configuration) {
+ }
+
+ @Override
+ public void performApply(ILaunchConfigurationWorkingCopy configuration) {
+ }
+
+ @Override
+ public String getName() {
+ return "My Custom Tab";
+ }
+
+ @Override
+ public String getId() {
+ return "my.custom.tab";
+ }
+}
diff --git a/launchbar/org.eclipse.launchbar.ui.tests/swtbot-test-plugin.properties b/launchbar/org.eclipse.launchbar.ui.tests/swtbot-test-plugin.properties
new file mode 100644
index 00000000000..338038b9345
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui.tests/swtbot-test-plugin.properties
@@ -0,0 +1 @@
+# This file tells the Maven build to use the settings for SWTBot test plugins
diff --git a/launchbar/org.eclipse.launchbar.ui/.classpath b/launchbar/org.eclipse.launchbar.ui/.classpath
new file mode 100644
index 00000000000..e801ebfb468
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/launchbar/org.eclipse.launchbar.ui/.gitignore b/launchbar/org.eclipse.launchbar.ui/.gitignore
new file mode 100644
index 00000000000..ae3c1726048
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/launchbar/org.eclipse.launchbar.ui/.options b/launchbar/org.eclipse.launchbar.ui/.options
new file mode 100644
index 00000000000..ed790682059
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui/.options
@@ -0,0 +1,2 @@
+org.eclipse.launchbar.ui/iconSize32=false
+org.eclipse.launchbar.ui/launchIconUpdater=false
diff --git a/launchbar/org.eclipse.launchbar.ui/.project b/launchbar/org.eclipse.launchbar.ui/.project
new file mode 100644
index 00000000000..73d17ab8a8b
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.launchbar.ui</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+ </natures>
+</projectDescription>
diff --git a/launchbar/org.eclipse.launchbar.ui/.settings/org.eclipse.core.resources.prefs b/launchbar/org.eclipse.launchbar.ui/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/launchbar/org.eclipse.launchbar.ui/.settings/org.eclipse.jdt.core.prefs b/launchbar/org.eclipse.launchbar.ui/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..e3a8104f9ca
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.ui/.settings/org.eclipse.jdt.launching.prefs b/launchbar/org.eclipse.launchbar.ui/.settings/org.eclipse.jdt.launching.prefs
index f8a131b56e0..f8a131b56e0 100644
--- a/toolchains/arduino/org.eclipse.cdt.arduino.ui/.settings/org.eclipse.jdt.launching.prefs
+++ b/launchbar/org.eclipse.launchbar.ui/.settings/org.eclipse.jdt.launching.prefs
diff --git a/launchbar/org.eclipse.launchbar.ui/.settings/org.eclipse.jdt.ui.prefs b/launchbar/org.eclipse.launchbar.ui/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/launchbar/org.eclipse.launchbar.ui/.settings/org.eclipse.pde.api.tools.prefs b/launchbar/org.eclipse.launchbar.ui/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 00000000000..ec9fbf321d0
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,184 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITH_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_FIELD=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERCLASS_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_CHANGED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENTS=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETERS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Error
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Warning
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+MISSING_EE_DESCRIPTIONS=Warning
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=false
+changed_execution_env=Error
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+incompatible_api_component_version_report_major_without_breaking_change=Warning
+incompatible_api_component_version_report_minor_without_api_change=Warning
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/.settings/org.eclipse.pde.prefs b/launchbar/org.eclipse.launchbar.ui/.settings/org.eclipse.pde.prefs
index d2dc703ba9e..d2dc703ba9e 100644
--- a/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/.settings/org.eclipse.pde.prefs
+++ b/launchbar/org.eclipse.launchbar.ui/.settings/org.eclipse.pde.prefs
diff --git a/launchbar/org.eclipse.launchbar.ui/META-INF/MANIFEST.MF b/launchbar/org.eclipse.launchbar.ui/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..17833751f1e
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,21 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.launchbar.ui;singleton:=true
+Bundle-Version: 2.4.500.qualifier
+Bundle-Activator: org.eclipse.launchbar.ui.internal.Activator
+Bundle-Vendor: %providerName
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.ui,
+ org.eclipse.ui.ide,
+ org.eclipse.debug.ui,
+ org.eclipse.launchbar.core
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Bundle-ActivationPolicy: lazy
+Bundle-Localization: plugin
+Export-Package: org.eclipse.launchbar.ui,
+ org.eclipse.launchbar.ui.internal;x-internal:=true,
+ org.eclipse.launchbar.ui.internal.commands;x-internal:=true,
+ org.eclipse.launchbar.ui.internal.dialogs;x-internal:=true,
+ org.eclipse.launchbar.ui.target
+Automatic-Module-Name: org.eclipse.launchbar.ui
diff --git a/launchbar/org.eclipse.launchbar.ui/about.html b/launchbar/org.eclipse.launchbar.ui/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/launchbar/org.eclipse.launchbar.ui/about.ini b/launchbar/org.eclipse.launchbar.ui/about.ini
new file mode 100644
index 00000000000..e07a7bb377e
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui/about.ini
@@ -0,0 +1,24 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%blurb
+
+# Property "windowImage" contains path to window icon (16x16)
+# needed for primary features only
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=cdt_logo_icon32.png
+
+# Property "aboutImage" contains path to product image (500x330 or 115x164)
+# needed for primary features only
+
+# Property "appName" contains name of the application (translated)
+# needed for primary features only
+
+# Property "welcomePerspective" contains the id of the perspective in which the
+# welcome page is to be opened.
+# optional
diff --git a/launchbar/org.eclipse.launchbar.ui/about.mappings b/launchbar/org.eclipse.launchbar.ui/about.mappings
new file mode 100644
index 00000000000..936a8039c3e
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui/about.mappings
@@ -0,0 +1,9 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+# The following should contain the build version.
+# e.g. "0=20200106-1728"
+# This value will be added automatically via the build scripts
+0=${buildId}
diff --git a/launchbar/org.eclipse.launchbar.ui/about.properties b/launchbar/org.eclipse.launchbar.ui/about.properties
new file mode 100644
index 00000000000..59fb3920d28
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui/about.properties
@@ -0,0 +1,32 @@
+###############################################################################
+# Copyright (c) 2014, 2022 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+# about.properties
+# contains externalized strings for about.ini
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# fill-ins are supplied by about.mappings
+# This file should be translated.
+# NOTE TO TRANSLATOR: Please do not translate the featureVersion variable.
+
+
+blurb=LaunchBar\n\
+\n\
+Version: {featureVersion}\n\
+Build id: {0}\n\
+\n\
+Copyright (c) 2014, 2022 Contributors to the Eclipse Foundation
+\n\
+See the NOTICE file(s) distributed with this work for additional\n\
+information regarding copyright ownership.\n\
+\n\
+Visit http://www.eclipse.org/cdt
diff --git a/launchbar/org.eclipse.launchbar.ui/build.properties b/launchbar/org.eclipse.launchbar.ui/build.properties
new file mode 100644
index 00000000000..95bfba2f5cc
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui/build.properties
@@ -0,0 +1,15 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ icons/,\
+ plugin.properties,\
+ about.html,\
+ schema/,\
+ about.ini,\
+ about.mappings,\
+ about.properties,\
+ build.properties,\
+ cdt_logo_icon32.png
+src.includes = about.html
diff --git a/launchbar/org.eclipse.launchbar.ui/cdt_logo_icon32.png b/launchbar/org.eclipse.launchbar.ui/cdt_logo_icon32.png
new file mode 100644
index 00000000000..470ca81b327
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui/cdt_logo_icon32.png
Binary files differ
diff --git a/launchbar/org.eclipse.launchbar.ui/icons/localTarget.png b/launchbar/org.eclipse.launchbar.ui/icons/localTarget.png
new file mode 100644
index 00000000000..ca77aee5bca
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui/icons/localTarget.png
Binary files differ
diff --git a/launchbar/org.eclipse.launchbar.ui/plugin.properties b/launchbar/org.eclipse.launchbar.ui/plugin.properties
new file mode 100644
index 00000000000..cd8c044c4dc
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui/plugin.properties
@@ -0,0 +1,6 @@
+pluginName = LaunchBar UI
+providerName = Eclipse CDT
+
+launchToolBar.label = LaunchBar
+targetsView.name = Launch Targets
+targetsContent.name = Launch Targets
diff --git a/launchbar/org.eclipse.launchbar.ui/plugin.xml b/launchbar/org.eclipse.launchbar.ui/plugin.xml
new file mode 100644
index 00000000000..da51d5e03f3
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui/plugin.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension-point id="launchBarUIContributions" name="launchBar UI Contributions" schema="schema/launchBarUIContributions.exsd"/>
+ <extension-point id="launchTargetTypeUI" name="Launch Target Type UI" schema="schema/launchTargetTypeUI.exsd"/>
+ <extension
+ point="org.eclipse.ui.commands">
+ <category
+ id="org.eclipse.launchbar.ui.category.launchBar"
+ name="Launch Bar">
+ </category>
+ <command
+ categoryId="org.eclipse.launchbar.ui.category.launchBar"
+ defaultHandler="org.eclipse.launchbar.ui.internal.commands.BuildActiveCommandHandler"
+ id="org.eclipse.launchbar.ui.command.buildActive"
+ name="Build Active Launch Configuration">
+ </command>
+ <command
+ categoryId="org.eclipse.launchbar.ui.category.launchBar"
+ defaultHandler="org.eclipse.launchbar.ui.internal.commands.LaunchActiveCommandHandler"
+ id="org.eclipse.launchbar.ui.command.launchActive"
+ name="Launch Active Launch Configuration">
+ </command>
+ <command
+ categoryId="org.eclipse.launchbar.ui.category.launchBar"
+ defaultHandler="org.eclipse.launchbar.ui.internal.commands.StopActiveCommandHandler"
+ id="org.eclipse.launchbar.ui.command.stop"
+ name="Stop">
+ </command>
+ <command
+ categoryId="org.eclipse.launchbar.ui.category.launchBar"
+ defaultHandler="org.eclipse.launchbar.ui.internal.commands.ConfigureActiveLaunchHandler"
+ id="org.eclipse.launchbar.ui.command.configureActiveLaunch"
+ name="Edit Active Launch Configuration">
+ </command>
+ </extension>
+ <extension
+ point="org.eclipse.launchbar.ui.launchBarUIContributions">
+ <descriptorUI
+ descriptorTypeId="org.eclipse.launchbar.core.descriptor.default"
+ labelProvider="org.eclipse.launchbar.ui.DefaultDescriptorLabelProvider">
+ </descriptorUI>
+ </extension>
+
+
+ <extension
+ point="org.eclipse.ui.newWizards">
+ <category
+ id="org.eclipse.launchbar.ui.targetWizards"
+ name="Launch Targets">
+ </category>
+ <wizard
+ category="org.eclipse.launchbar.ui.targetWizards"
+ class="org.eclipse.launchbar.ui.internal.target.NewLaunchTargetWizard"
+ icon="icons/localTarget.png"
+ id="org.eclipse.launchbar.ui.superTargetWizard"
+ name="Launch Target"
+ project="false">
+ </wizard>
+
+ </extension>
+
+</plugin>
diff --git a/launchbar/org.eclipse.launchbar.ui/schema/launchBarUIContributions.exsd b/launchbar/org.eclipse.launchbar.ui/schema/launchBarUIContributions.exsd
new file mode 100644
index 00000000000..facbd8234f1
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui/schema/launchBarUIContributions.exsd
@@ -0,0 +1,178 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.launchbar.ui" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+ <appinfo>
+ <meta.schema plugin="org.eclipse.launchbar.ui" id="launchBarUIContributions" name="launchBar UI Contributions"/>
+ </appinfo>
+ <documentation>
+ [Enter description of this extension point.]
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <annotation>
+ <appinfo>
+ <meta.element />
+ </appinfo>
+ </annotation>
+ <complexType>
+ <sequence minOccurs="0" maxOccurs="unbounded">
+ <element ref="descriptorUI"/>
+ <element ref="buildTabGroup"/>
+ </sequence>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute translatable="true"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="descriptorUI">
+ <annotation>
+ <documentation>
+ Provides a label provider to visualize launch descriptors in the descriptor selector.
+ </documentation>
+ </annotation>
+ <complexType>
+ <attribute name="descriptorTypeId" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute kind="identifier" basedOn="org.eclipse.launchbar.core.launchBarContributions/descriptorType/@id"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ <attribute name="labelProvider" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute kind="java" basedOn=":org.eclipse.jface.viewers.ILabelProvider"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="buildTabGroup">
+ <annotation>
+ <documentation>
+ Allows launch config providers to add build settings tabs to existing launch configuration tab groups when edited from the launch bar.
+ </documentation>
+ </annotation>
+ <complexType>
+ <attribute name="launchConfigType" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute kind="identifier" basedOn="org.eclipse.debug.core.launchConfigurationTypes/launchConfigurationType/@id"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ <attribute name="launchDescriptorType" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute kind="identifier" basedOn="org.eclipse.launchbar.core.launchBarContributions/descriptorType/@id"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ <attribute name="tabGroup" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute kind="java" basedOn=":org.eclipse.debug.ui.ILaunchConfigurationTabGroup"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="since"/>
+ </appinfo>
+ <documentation>
+ [Enter the first release in which this extension point appears.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="examples"/>
+ </appinfo>
+ <documentation>
+ [Enter extension point usage example here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="apiinfo"/>
+ </appinfo>
+ <documentation>
+ [Enter API information here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="implementation"/>
+ </appinfo>
+ <documentation>
+ [Enter information about supplied implementation of this extension point.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="copyright"/>
+ </appinfo>
+ <documentation>
+ /*******************************************************************************
+ * Copyright (c) 2014, 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Doug Schaefer
+ *******************************************************************************/
+ </documentation>
+ </annotation>
+
+</schema>
diff --git a/launchbar/org.eclipse.launchbar.ui/schema/launchTargetTypeUI.exsd b/launchbar/org.eclipse.launchbar.ui/schema/launchTargetTypeUI.exsd
new file mode 100644
index 00000000000..5d964f9875c
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui/schema/launchTargetTypeUI.exsd
@@ -0,0 +1,273 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.launchbar.ui" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+ <appinfo>
+ <meta.schema plugin="org.eclipse.launchbar.ui" id="launchTargetTypeUI" name="Launch Target Type UI"/>
+ </appinfo>
+ <documentation>
+ This extension point allow to contribute UI element for launch targets, specifically target label provider
+and target creation wizard.
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <annotation>
+ <appinfo>
+ <meta.element />
+ </appinfo>
+ </annotation>
+ <complexType>
+ <sequence>
+ <element ref="launchTargetTypeUI" minOccurs="1" maxOccurs="unbounded"/>
+ <element ref="wizard" minOccurs="0" maxOccurs="unbounded"/>
+ <element ref="wizard2" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute translatable="true"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="launchTargetTypeUI">
+ <complexType>
+ <attribute name="id" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute kind="identifier" basedOn="org.eclipse.launchbar.core.launchTargetTypes/launchTargetType/@id"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ <attribute name="labelProvider" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute kind="java" basedOn=":org.eclipse.jface.viewers.ILabelProvider"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="wizard">
+ <annotation>
+ <documentation>
+ Contribute a wizard that can create a launch target, normally it would be a wizard per target type.
+ </documentation>
+ </annotation>
+ <complexType>
+ <sequence>
+ <element ref="description" minOccurs="0" maxOccurs="1"/>
+ </sequence>
+ <attribute name="id" type="string" use="required">
+ <annotation>
+ <documentation>
+ a unique name that can be used to identify this wizard
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string" use="required">
+ <annotation>
+ <documentation>
+ a translatable name of the wizard that will be used in the dialog box
+ </documentation>
+ <appinfo>
+ <meta.attribute translatable="true"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ <attribute name="icon" type="string">
+ <annotation>
+ <documentation>
+ a relative path of an icon that will be used together with the name to represent the wizard
+as one of the choices in the creation dialog box.
+ </documentation>
+ <appinfo>
+ <meta.attribute kind="resource"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ <attribute name="class" type="string" use="required">
+ <annotation>
+ <documentation>
+ a fully qualified name of the Java class implementing &lt;samp&gt;org.eclipse.ui.INewWizard&lt;/samp&gt;.
+ </documentation>
+ <appinfo>
+ <meta.attribute kind="java" basedOn="org.eclipse.jface.wizard.Wizard:org.eclipse.ui.INewWizard"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ <attribute name="helpHref" type="string">
+ <annotation>
+ <documentation>
+ a help url that can describe this wizard in detail.
+&lt;p&gt;
+Since 3.0
+&lt;/p&gt;
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="descriptionImage" type="string">
+ <annotation>
+ <documentation>
+ a larger image that can help describe this wizard.
+&lt;p&gt;
+Since 3.0
+&lt;/p&gt;
+ </documentation>
+ <appinfo>
+ <meta.attribute kind="resource"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ <attribute name="canFinishEarly" type="boolean">
+ <annotation>
+ <documentation>
+ whether the wizard is capable of finishing without ever showing pages to the user.
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="hasPages" type="boolean">
+ <annotation>
+ <documentation>
+ whether the wizard provides any pages.
+ </documentation>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="description" type="string">
+ <annotation>
+ <appinfo>
+ <meta.element translatable="true"/>
+ </appinfo>
+ <documentation>
+ an optional subelement whose body contains a short text describing what the wizard will do when started
+ </documentation>
+ </annotation>
+ </element>
+
+ <element name="wizard2">
+ <annotation>
+ <documentation>
+ Wizard that supports creation and editing of targets. These wizards are per target type.
+ </documentation>
+ </annotation>
+ <complexType>
+ <attribute name="id" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute kind="identifier" basedOn="org.eclipse.launchbar.core.launchTargetTypes/launchTargetType/@id"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="class" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute kind="java" basedOn="org.eclipse.launchbar.ui.target.LaunchTargetWizard:"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ <attribute name="icon" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute kind="resource"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="since"/>
+ </appinfo>
+ <documentation>
+ [Enter the first release in which this extension point appears.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="examples"/>
+ </appinfo>
+ <documentation>
+ &lt;extension
+ point=&quot;org.eclipse.launchbar.ui.launchTargetTypeUI&quot;&gt;
+ &lt;launchTargetTypeUI
+ id=&quot;com.qnx.tools.ide.target.qconn&quot;
+ labelProvider=&quot;com.qnx.tools.ide.target.qconn.internal.ui.QConnLaunchTargetLabelProvider&quot;&gt;
+
+ &lt;/launchTargetTypeUI&gt;
+ &lt;wizard
+ class=&quot;com.qnx.tools.ide.target.qconn.internal.ui.wizards.NewQconnTargetWizard&quot;
+ id=&quot;com.qnx.tools.ide.target.qconn.ui.NewQNXTarget&quot;
+ name=&quot;New QNX Target&quot;&gt;
+ &lt;/wizard&gt;
+ &lt;/extension&gt;
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="apiinfo"/>
+ </appinfo>
+ <documentation>
+ [Enter API information here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="implementation"/>
+ </appinfo>
+ <documentation>
+ [Enter information about supplied implementation of this extension point.]
+ </documentation>
+ </annotation>
+
+
+</schema>
diff --git a/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/DefaultDescriptorLabelProvider.java b/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/DefaultDescriptorLabelProvider.java
new file mode 100644
index 00000000000..0c5e3ba8e1f
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/DefaultDescriptorLabelProvider.java
@@ -0,0 +1,73 @@
+/*******************************************************************************
+ * Copyright (c) 2014, 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Doug Schaefer
+ *******************************************************************************/
+package org.eclipse.launchbar.ui;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.ILaunchConfigurationType;
+import org.eclipse.debug.ui.DebugUITools;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.launchbar.core.ILaunchDescriptor;
+import org.eclipse.launchbar.core.internal.Activator;
+import org.eclipse.swt.graphics.Image;
+
+public class DefaultDescriptorLabelProvider extends LabelProvider {
+
+ private Map<ImageDescriptor, Image> images = new HashMap<>();
+
+ @Override
+ public void dispose() {
+ super.dispose();
+ for (Image image : images.values()) {
+ image.dispose();
+ }
+ }
+
+ @Override
+ public Image getImage(Object element) {
+ if (element instanceof ILaunchDescriptor) {
+ ILaunchConfiguration config = ((ILaunchDescriptor) element).getAdapter(ILaunchConfiguration.class);
+ if (config != null) {
+ try {
+ ILaunchConfigurationType type = config.getType();
+ ImageDescriptor imageDescriptor = DebugUITools.getDefaultImageDescriptor(type);
+ if (imageDescriptor != null) {
+ Image image = images.get(imageDescriptor);
+ if (image == null) {
+ image = imageDescriptor.createImage();
+ images.put(imageDescriptor, image);
+ }
+ return image;
+ }
+ } catch (CoreException e) {
+ Activator.log(e.getStatus());
+ }
+ }
+ }
+ return super.getImage(element);
+ }
+
+ @Override
+ public String getText(Object element) {
+ if (element instanceof ILaunchDescriptor) {
+ return ((ILaunchDescriptor) element).getName();
+ }
+ return super.getText(element);
+ }
+
+}
diff --git a/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/ILaunchBarLaunchConfigDialog.java b/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/ILaunchBarLaunchConfigDialog.java
new file mode 100644
index 00000000000..1188dafcc84
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/ILaunchBarLaunchConfigDialog.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2016 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.launchbar.ui;
+
+import org.eclipse.debug.ui.ILaunchConfigurationDialog;
+import org.eclipse.launchbar.core.target.ILaunchTarget;
+
+/**
+ * The edit dialog for launch configurations created by the launch bar. Allows tabs to get the
+ * target associated with the edit session.
+ *
+ * @since 2.1
+ */
+public interface ILaunchBarLaunchConfigDialog extends ILaunchConfigurationDialog {
+
+ /**
+ * The target associated with the edit session, usually the active target when the session was
+ * started.
+ *
+ * @return launch target
+ */
+ ILaunchTarget getLaunchTarget();
+
+}
diff --git a/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/ILaunchBarUIConstants.java b/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/ILaunchBarUIConstants.java
new file mode 100644
index 00000000000..9aefe2e4740
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/ILaunchBarUIConstants.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * Copyright (c) 2014 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Doug Schaefer
+ *******************************************************************************/
+package org.eclipse.launchbar.ui;
+
+import org.eclipse.launchbar.ui.internal.Activator;
+
+public interface ILaunchBarUIConstants {
+
+ /**
+ * Parameter name for the edit target command.
+ */
+ public static final String TARGET_NAME = "targetName"; //$NON-NLS-1$
+
+ // Command ids
+ public static final String CMD_BUILD = Activator.PLUGIN_ID + ".command.buildActive"; //$NON-NLS-1$
+ public static final String CMD_LAUNCH = Activator.PLUGIN_ID + ".command.launchActive"; //$NON-NLS-1$
+ public static final String CMD_STOP = Activator.PLUGIN_ID + ".command.stop"; //$NON-NLS-1$
+ public static final String CMD_CONFIG = Activator.PLUGIN_ID + ".command.configureActiveLaunch"; //$NON-NLS-1$
+
+}
diff --git a/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/ILaunchBarUIManager.java b/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/ILaunchBarUIManager.java
new file mode 100644
index 00000000000..4527c267b6d
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/ILaunchBarUIManager.java
@@ -0,0 +1,24 @@
+/*******************************************************************************
+ * Copyright (c) 2016 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.launchbar.ui;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.launchbar.core.ILaunchDescriptor;
+
+public interface ILaunchBarUIManager {
+
+ ILabelProvider getLabelProvider(ILaunchDescriptor descriptor) throws CoreException;
+
+ IStatus openConfigurationEditor(ILaunchDescriptor descriptor);
+
+}
diff --git a/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/NewLaunchConfigWizard.java b/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/NewLaunchConfigWizard.java
new file mode 100644
index 00000000000..96569e8110c
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/NewLaunchConfigWizard.java
@@ -0,0 +1,127 @@
+/*******************************************************************************
+ * Copyright (c) 2014 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Doug Schaefer
+ *******************************************************************************/
+package org.eclipse.launchbar.ui;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.debug.core.DebugPlugin;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.ILaunchConfigurationListener;
+import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
+import org.eclipse.debug.core.ILaunchMode;
+import org.eclipse.jface.wizard.IWizardContainer;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.launchbar.ui.internal.Activator;
+import org.eclipse.launchbar.ui.internal.Messages;
+import org.eclipse.launchbar.ui.internal.dialogs.NewLaunchConfigEditPage;
+import org.eclipse.launchbar.ui.internal.dialogs.NewLaunchConfigTypePage2;
+
+public class NewLaunchConfigWizard extends Wizard implements ILaunchConfigurationListener {
+
+ private NewLaunchConfigTypePage2 typePage;
+ private NewLaunchConfigEditPage editPage;
+
+ private List<ILaunchConfiguration> configsToDelete = new ArrayList<>();
+
+ public NewLaunchConfigWizard() {
+ editPage = new NewLaunchConfigEditPage();
+ typePage = new NewLaunchConfigTypePage2(editPage);
+
+ setWindowTitle(Messages.NewLaunchConfigWizard_0);
+
+ // while the wizard is open, some ill behaved launch config tabs save the working copy.
+ // We need to make sure those saves are deleted when the dialog is finished.
+ // We also need to turn off listening in the tool bar manager so that we don't treat these
+ // as real launch configs.
+ DebugPlugin.getDefault().getLaunchManager().addLaunchConfigurationListener(this);
+ }
+
+ @Override
+ public void setContainer(IWizardContainer wizardContainer) {
+ super.setContainer(wizardContainer);
+
+ if (wizardContainer != null) {
+ // Edit page wants to know when it's about to change to itself
+ ((WizardDialog) wizardContainer).addPageChangingListener(editPage);
+ }
+ }
+
+ @Override
+ public void addPages() {
+ addPage(typePage);
+ addPage(editPage);
+ }
+
+ @Override
+ public boolean canFinish() {
+ if (getPage(editPage.getName()) == null) {
+ return false;
+ }
+ return super.canFinish();
+ }
+
+ public ILaunchConfigurationWorkingCopy getWorkingCopy() {
+ return editPage.getWorkingCopy();
+ }
+
+ public ILaunchMode getLaunchMode() {
+ // TODO we want to make sure the newly created config has the right mode
+ // selected in the launch bar
+ return null;
+ }
+
+ @Override
+ public boolean performFinish() {
+ cleanUpConfigs();
+ return editPage.performFinish();
+ }
+
+ @Override
+ public boolean performCancel() {
+ cleanUpConfigs();
+ return super.performCancel();
+ }
+
+ void cleanUpConfigs() {
+ DebugPlugin.getDefault().getLaunchManager().removeLaunchConfigurationListener(this);
+ for (ILaunchConfiguration config : configsToDelete) {
+ try {
+ config.delete();
+ } catch (CoreException e) {
+ Activator.log(e);
+ }
+ }
+ }
+
+ @Override
+ public void launchConfigurationAdded(ILaunchConfiguration configuration) {
+ if (!configuration.isWorkingCopy())
+ configsToDelete.add(configuration);
+ }
+
+ @Override
+ public void launchConfigurationChanged(ILaunchConfiguration configuration) {
+ // Nothing to do
+ }
+
+ @Override
+ public void launchConfigurationRemoved(ILaunchConfiguration configuration) {
+ if (!configuration.isWorkingCopy())
+ configsToDelete.remove(configuration);
+ }
+
+}
diff --git a/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/NewLaunchConfigWizardDialog.java b/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/NewLaunchConfigWizardDialog.java
new file mode 100644
index 00000000000..88836cdc720
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/NewLaunchConfigWizardDialog.java
@@ -0,0 +1,69 @@
+/*******************************************************************************
+ * Copyright (c) 2014, 2018 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.launchbar.ui;
+
+import org.eclipse.jface.dialogs.IDialogSettings;
+import org.eclipse.jface.wizard.IWizard;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.launchbar.ui.internal.Activator;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.widgets.Shell;
+
+/**
+ * Wizard Dialog for Launch Bar's new Launch Configuration Wizard.
+ *
+ * @since 2.3
+ */
+public class NewLaunchConfigWizardDialog extends WizardDialog {
+
+ /**
+ * Size of this dialog if there is no preference specifying a size.
+ */
+ protected static final Point DEFAULT_INITIAL_DIALOG_SIZE = new Point(800, 720);
+
+ public NewLaunchConfigWizardDialog(Shell parentShell, IWizard newWizard) {
+ super(parentShell, newWizard);
+ }
+
+ /**
+ * Returns the name of the section that this dialog stores its settings in
+ *
+ * @return String
+ */
+ protected String getDialogSettingsSectionName() {
+ return Activator.PLUGIN_ID + ".LAUNCH_CONFIGURATIONS_DIALOG_SECTION"; //$NON-NLS-1$
+ }
+
+ @Override
+ protected IDialogSettings getDialogBoundsSettings() {
+ IDialogSettings settings = Activator.getDefault().getDialogSettings();
+ IDialogSettings section = settings.getSection(getDialogSettingsSectionName());
+ if (section == null) {
+ section = settings.addNewSection(getDialogSettingsSectionName());
+ }
+ return section;
+ }
+
+ @Override
+ protected Point getInitialSize() {
+ try {
+ // Check if we've saved the height before
+ getDialogBoundsSettings().getInt("DIALOG_HEIGHT"); //$NON-NLS-1$
+ return super.getInitialSize();
+ } catch (NumberFormatException nfe) {
+ // Nope, return the default size
+ return DEFAULT_INITIAL_DIALOG_SIZE;
+ }
+ }
+
+}
diff --git a/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/Activator.java b/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/Activator.java
new file mode 100644
index 00000000000..cf673cad40f
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/Activator.java
@@ -0,0 +1,110 @@
+/*******************************************************************************
+ * Copyright (c) 2014, 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Doug Schaefer
+ * Torkild U. Resheim - add preference to control target selector
+ * Vincent Guignot - Ingenico - add preference to control Build button
+ *******************************************************************************/
+package org.eclipse.launchbar.ui.internal;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.resource.ImageRegistry;
+import org.eclipse.launchbar.ui.ILaunchBarUIManager;
+import org.eclipse.launchbar.ui.internal.target.LaunchTargetUIManager;
+import org.eclipse.launchbar.ui.target.ILaunchTargetUIManager;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.eclipse.launchbar.ui"; //$NON-NLS-1$
+
+ // Images
+ public static final String IMG_LOCAL_TARGET = "localTarget"; //$NON-NLS-1$
+
+ // The shared instance
+ private static Activator plugin;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+
+ ImageRegistry imageRegistry = getImageRegistry();
+ imageRegistry.put(IMG_LOCAL_TARGET, imageDescriptorFromPlugin(PLUGIN_ID, "icons/localTarget.png")); //$NON-NLS-1$
+
+ context.registerService(ILaunchTargetUIManager.class, new LaunchTargetUIManager(), null);
+ context.registerService(ILaunchBarUIManager.class, new LaunchBarUIManager(), null);
+ }
+
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+ public Image getImage(String id) {
+ Image im = getImageRegistry().get(id);
+ if (im == null) {
+ ImageDescriptor des = getImageDescriptor(id);
+ if (des != null) {
+ im = des.createImage();
+ getImageRegistry().put(id, im);
+ }
+ }
+ return im;
+ }
+
+ public static ImageDescriptor getImageDescriptor(String path) {
+ return imageDescriptorFromPlugin(PLUGIN_ID, path);
+ }
+
+ public static void log(IStatus status) {
+ plugin.getLog().log(status);
+ }
+
+ public static void log(Exception e) {
+ if (e instanceof CoreException)
+ log(((CoreException) e).getStatus());
+ plugin.getLog().log(new Status(IStatus.ERROR, PLUGIN_ID, e.getLocalizedMessage(), e));
+ }
+
+ public static <T> T getService(Class<T> cls) {
+ BundleContext context = getDefault().getBundle().getBundleContext();
+ ServiceReference<T> ref = context.getServiceReference(cls);
+ return ref != null ? context.getService(ref) : null;
+ }
+
+}
diff --git a/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/LaunchBarLaunchConfigDialog.java b/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/LaunchBarLaunchConfigDialog.java
new file mode 100644
index 00000000000..59d055fb03d
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/LaunchBarLaunchConfigDialog.java
@@ -0,0 +1,515 @@
+/*******************************************************************************
+ * Copyright (c) 2016, 2021 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.launchbar.ui.internal;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.debug.core.DebugPlugin;
+import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
+import org.eclipse.debug.core.ILaunchManager;
+import org.eclipse.debug.core.ILaunchMode;
+import org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationPresentationManager;
+import org.eclipse.debug.ui.ILaunchConfigurationTab;
+import org.eclipse.debug.ui.ILaunchConfigurationTabGroup;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.dialogs.IMessageProvider;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.dialogs.TitleAreaDialog;
+import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.jface.operation.ModalContext;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.wizard.ProgressMonitorPart;
+import org.eclipse.launchbar.core.DefaultLaunchDescriptorType;
+import org.eclipse.launchbar.core.ILaunchDescriptor;
+import org.eclipse.launchbar.core.target.ILaunchTarget;
+import org.eclipse.launchbar.ui.ILaunchBarLaunchConfigDialog;
+import org.eclipse.launchbar.ui.ILaunchBarUIManager;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CTabFolder;
+import org.eclipse.swt.custom.CTabItem;
+import org.eclipse.swt.custom.ScrolledComposite;
+import org.eclipse.swt.events.FocusAdapter;
+import org.eclipse.swt.events.FocusEvent;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+
+public class LaunchBarLaunchConfigDialog extends TitleAreaDialog implements ILaunchBarLaunchConfigDialog {
+
+ private final ILaunchConfigurationWorkingCopy workingCopy;
+ private final ILaunchDescriptor descriptor;
+ private final ILaunchMode mode;
+ private final ILaunchTarget target;
+ private final ILaunchConfigurationTabGroup buildTabGroup;
+ private final String originalName;
+
+ private ILaunchConfigurationTabGroup group;
+ private Text nameText;
+ private CTabFolder tabFolder;
+ private CTabItem lastSelection;
+ private ProgressMonitorPart pmPart;
+ private boolean initing;
+
+ public static final int ID_DUPLICATE = IDialogConstants.CLIENT_ID + 1;
+ public static final int ID_DELETE = IDialogConstants.CLIENT_ID + 2;
+
+ public LaunchBarLaunchConfigDialog(Shell shell, ILaunchConfigurationWorkingCopy workingCopy,
+ ILaunchDescriptor descriptor, ILaunchMode mode, ILaunchTarget target,
+ ILaunchConfigurationTabGroup buildTabGroup) {
+ super(shell);
+
+ this.workingCopy = workingCopy;
+ this.descriptor = descriptor;
+ this.mode = mode;
+ this.target = target;
+ this.buildTabGroup = buildTabGroup;
+ this.originalName = workingCopy.getName();
+
+ setShellStyle(getShellStyle() | SWT.RESIZE);
+ }
+
+ @Override
+ protected int getDialogBoundsStrategy() {
+ // Don't persist the size since it'll be different for every config
+ return DIALOG_PERSISTLOCATION;
+ }
+
+ @Override
+ protected Control createDialogArea(Composite parent) {
+ initing = true;
+
+ getShell().setText(Messages.LaunchBarLaunchConfigDialog_EditConfiguration);
+ boolean supportsTargets = true;
+ try {
+ supportsTargets = descriptor.getType().supportsTargets();
+ } catch (CoreException e) {
+ Activator.log(e);
+ }
+
+ try {
+ ILaunchBarUIManager uiManager = Activator.getService(ILaunchBarUIManager.class);
+ ILabelProvider labelProvider = uiManager.getLabelProvider(descriptor);
+ String descName = labelProvider != null ? labelProvider.getText(descriptor) : descriptor.getName();
+ String typeName = workingCopy.getType().getName();
+ if (supportsTargets) {
+ setTitle(String.format(Messages.LaunchBarLaunchConfigDialog_Edit2, typeName, descName, mode.getLabel(),
+ target.getId()));
+ } else {
+ setTitle(
+ String.format(Messages.LaunchBarLaunchConfigDialog_Edit1, typeName, descName, mode.getLabel()));
+ }
+ } catch (CoreException e) {
+ Activator.log(e);
+ }
+
+ setMessage(Messages.LaunchBarLaunchConfigDialog_SetParameters);
+
+ // create the top level composite for the dialog area
+ Composite composite = new Composite(parent, SWT.NONE);
+ GridLayout layout = new GridLayout();
+ layout.verticalSpacing = 0;
+ composite.setLayout(layout);
+ composite.setLayoutData(new GridData(GridData.FILL_BOTH));
+ composite.setFont(parent.getFont());
+
+ Composite nameComp = new Composite(composite, SWT.NONE);
+ nameComp.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+ nameComp.setLayout(new GridLayout(2, false));
+
+ Label nameLabel = new Label(nameComp, SWT.NONE);
+ nameLabel.setText(Messages.LaunchBarLaunchConfigDialog_LaunchConfigName);
+
+ nameText = new Text(nameComp, SWT.BORDER);
+ nameText.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ nameText.setText(workingCopy.getName());
+ nameText.addModifyListener(e -> updateMessage());
+
+ tabFolder = new CTabFolder(composite, SWT.BORDER);
+ tabFolder.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ tabFolder.addFocusListener(new FocusAdapter() {
+ @Override
+ public void focusGained(FocusEvent e) {
+ CTabItem selItem = tabFolder.getSelection();
+ if (selItem != null) {
+ selItem.getControl().setFocus();
+ }
+ }
+ });
+ tabFolder.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ ILaunchConfigurationTab oldTab = (ILaunchConfigurationTab) lastSelection.getData();
+ oldTab.deactivated(workingCopy);
+
+ CTabItem selItem = tabFolder.getSelection();
+ ILaunchConfigurationTab newTab = (ILaunchConfigurationTab) selItem.getData();
+ newTab.activated(workingCopy);
+
+ selItem.getControl().setFocus();
+ }
+ });
+
+ try {
+ if (buildTabGroup != null) {
+ buildTabGroup.createTabs(this, mode.getIdentifier());
+
+ for (ILaunchConfigurationTab configTab : buildTabGroup.getTabs()) {
+ installTab(configTab, tabFolder);
+ }
+
+ buildTabGroup.initializeFrom(workingCopy);
+ }
+
+ group = LaunchConfigurationPresentationManager.getDefault().getTabGroup(workingCopy, mode.getIdentifier());
+ group.createTabs(this, mode.getIdentifier());
+
+ for (ILaunchConfigurationTab configTab : group.getTabs()) {
+ CTabItem tabItem = installTab(configTab, tabFolder);
+ if (lastSelection == null) {
+ // Select the first tab by default
+ tabFolder.setSelection(tabItem);
+ lastSelection = tabItem;
+ }
+ }
+
+ group.initializeFrom(workingCopy);
+ } catch (CoreException e) {
+ Activator.log(e.getStatus());
+ }
+
+ pmPart = new ProgressMonitorPart(composite, new GridLayout(), true);
+ pmPart.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+ pmPart.setVisible(false);
+
+ initing = false;
+ return composite;
+ }
+
+ private CTabItem installTab(ILaunchConfigurationTab tab, CTabFolder tabFolder) {
+ tab.setLaunchConfigurationDialog(this);
+
+ CTabItem tabItem = new CTabItem(tabFolder, SWT.NONE);
+ tabItem.setData(tab);
+ tabItem.setText(tab.getName());
+ tabItem.setImage(tab.getImage());
+
+ ScrolledComposite sc = new ScrolledComposite(tabItem.getParent(), SWT.V_SCROLL | SWT.H_SCROLL);
+ sc.setFont(tabItem.getParent().getFont());
+ sc.setExpandHorizontal(true);
+ sc.setExpandVertical(true);
+ sc.setShowFocusedControl(true);
+ tab.createControl(sc);
+ Control control = tab.getControl();
+ if (control != null) {
+ sc.setContent(control);
+ sc.setMinSize(control.computeSize(SWT.DEFAULT, SWT.DEFAULT));
+ tabItem.setControl(control.getParent());
+ }
+
+ return tabItem;
+ }
+
+ @Override
+ protected Control createButtonBar(Composite parent) {
+ Composite buttonBar = (Composite) super.createButtonBar(parent);
+ Control[] children = buttonBar.getChildren();
+ Control okCancelButtons = children[children.length - 1];
+ Control configButtons = createConfigButtons(buttonBar);
+
+ // insert our buttons ahead of the OK/Cancel buttons
+ configButtons.moveAbove(okCancelButtons);
+
+ return buttonBar;
+ }
+
+ protected Control createConfigButtons(Composite parent) {
+ ((GridLayout) parent.getLayout()).numColumns++;
+ Composite composite = new Composite(parent, SWT.NONE);
+ // create a layout with spacing and margins appropriate for the font size.
+ GridLayout layout = new GridLayout();
+ layout.numColumns = 0; // this is incremented by createButton
+ layout.makeColumnsEqualWidth = true;
+ layout.marginWidth = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN);
+ layout.marginHeight = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN);
+ layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
+ layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
+ composite.setLayout(layout);
+ GridData data = new GridData(GridData.HORIZONTAL_ALIGN_CENTER | GridData.VERTICAL_ALIGN_CENTER);
+ composite.setLayoutData(data);
+ composite.setFont(parent.getFont());
+
+ // Allow Duplicate only if the resulting configuration is public
+ try {
+ if (DefaultLaunchDescriptorType.isPublic(workingCopy.getOriginal())) {
+ createButton(composite, ID_DUPLICATE, Messages.LaunchBarLaunchConfigDialog_Duplicate, false);
+ }
+ } catch (CoreException e) {
+ Activator.log(e.getStatus());
+ }
+
+ String deleteText;
+ if (descriptor.getType().canDelete()) {
+ deleteText = Messages.LaunchBarLaunchConfigDialog_Delete;
+ } else {
+ deleteText = Messages.LaunchBarLaunchConfigDialog_Reset;
+ }
+
+ // TODO if the descriptor is not a launch config, this should really say Reset
+ createButton(composite, ID_DELETE, deleteText, false);
+
+ return composite;
+ }
+
+ @Override
+ protected void buttonPressed(int buttonId) {
+ if (buttonId == ID_DUPLICATE) {
+ duplicatePressed();
+ } else if (buttonId == ID_DELETE) {
+ deletePressed();
+ } else {
+ super.buttonPressed(buttonId);
+ }
+ }
+
+ protected void deletePressed() {
+ String title, message;
+ if (descriptor.getType().canDelete()) {
+ title = Messages.LaunchBarLaunchConfigDialog_DeleteTitle;
+ message = Messages.LaunchBarLaunchConfigDialog_DeleteConfirm;
+ } else {
+ title = Messages.LaunchBarLaunchConfigDialog_ResetTitle;
+ message = Messages.LaunchBarLaunchConfigDialog_ResetConfirm;
+ }
+
+ if (MessageDialog.openConfirm(getShell(), title, String.format(message, workingCopy.getName()))) {
+ setReturnCode(ID_DELETE);
+ close();
+ }
+ }
+
+ protected void duplicatePressed() {
+ setReturnCode(ID_DUPLICATE);
+ close();
+ }
+
+ @Override
+ protected void okPressed() {
+ String newName = nameText.getText().trim();
+ if (!newName.equals(originalName)) {
+ workingCopy.rename(newName);
+ }
+
+ if (buildTabGroup != null) {
+ buildTabGroup.performApply(workingCopy);
+ }
+ group.performApply(workingCopy);
+ super.okPressed();
+ }
+
+ @Override
+ public void run(boolean fork, boolean cancelable, IRunnableWithProgress runnable)
+ throws InvocationTargetException, InterruptedException {
+ Control lastControl = getShell().getDisplay().getFocusControl();
+ if (lastControl != null && lastControl.getShell() != getShell()) {
+ lastControl = null;
+ }
+ getButton(IDialogConstants.OK_ID).setEnabled(false);
+ getButton(IDialogConstants.CANCEL_ID).setEnabled(false);
+ pmPart.attachToCancelComponent(null);
+
+ try {
+ ModalContext.run(runnable, fork, pmPart, getShell().getDisplay());
+ } finally {
+ pmPart.removeFromCancelComponent(null);
+ getButton(IDialogConstants.OK_ID).setEnabled(true);
+ getButton(IDialogConstants.CANCEL_ID).setEnabled(true);
+ if (lastControl != null) {
+ lastControl.setFocus();
+ }
+ updateButtons();
+ }
+ }
+
+ @Override
+ public void updateButtons() {
+ // Lots of tabs want to be applied when this is called
+ if (!initing) {
+ ILaunchConfigurationTab[] tabs = getTabs();
+ if (tabFolder != null && tabs != null) {
+ int pageIndex = tabFolder.getSelectionIndex();
+ if (pageIndex >= 0) {
+ tabs[pageIndex].performApply(workingCopy);
+ }
+ }
+ }
+ }
+
+ private String getTabsErrorMessage() {
+ ILaunchConfigurationTab activeTab = getActiveTab();
+ if (activeTab != null) {
+ String message = activeTab.getErrorMessage();
+ if (message != null) {
+ return message;
+ }
+ }
+
+ for (ILaunchConfigurationTab tab : getTabs()) {
+ if (tab != activeTab) {
+ String message = tab.getErrorMessage();
+ if (message != null) {
+ return message;
+ }
+ }
+ }
+
+ return null;
+ }
+
+ private String getTabsMessage() {
+ ILaunchConfigurationTab activeTab = getActiveTab();
+ if (activeTab != null) {
+ String message = activeTab.getMessage();
+ if (message != null) {
+ return message;
+ }
+ }
+
+ for (ILaunchConfigurationTab tab : getTabs()) {
+ if (tab != activeTab) {
+ String message = tab.getMessage();
+ if (message != null) {
+ return message;
+ }
+ }
+ }
+
+ return null;
+ }
+
+ @Override
+ public void updateMessage() {
+ if (initing) {
+ return;
+ }
+
+ String newName = nameText.getText().trim();
+ if (newName.isEmpty()) {
+ setMessage(Messages.LaunchBarLaunchConfigDialog_LCMustHaveName, IMessageProvider.ERROR);
+ return;
+ }
+
+ if (!newName.equals(originalName)) {
+ // make sure it's not taken
+ try {
+ ILaunchManager manager = DebugPlugin.getDefault().getLaunchManager();
+
+ if (manager.isExistingLaunchConfigurationName(newName)) {
+ setMessage(Messages.LaunchBarLaunchConfigDialog_LCNameExists, IMessageProvider.ERROR);
+ return;
+ }
+
+ if (!manager.isValidLaunchConfigurationName(newName)) {
+ setMessage(Messages.LaunchBarLaunchConfigDialog_LCNameNotValid, IMessageProvider.ERROR);
+ return;
+ }
+ } catch (CoreException e1) {
+ Activator.log(e1.getStatus());
+ }
+ }
+
+ for (ILaunchConfigurationTab tab : getTabs()) {
+ tab.isValid(workingCopy);
+ }
+
+ Button okButton = getButton(IDialogConstants.OK_ID);
+
+ String message = getTabsErrorMessage();
+ if (message != null) {
+ setMessage(message, IMessageProvider.ERROR);
+ okButton.setEnabled(false);
+ return;
+ }
+
+ message = getTabsMessage();
+ setMessage(message);
+ okButton.setEnabled(true);
+ }
+
+ @Override
+ public void setName(String name) {
+ if (nameText != null && !nameText.isDisposed()) {
+ nameText.setText(name);
+ }
+ }
+
+ @Override
+ public String generateName(String name) {
+ return DebugPlugin.getDefault().getLaunchManager().generateLaunchConfigurationName(name);
+ }
+
+ @Override
+ public ILaunchConfigurationTab[] getTabs() {
+ if (buildTabGroup != null) {
+ ILaunchConfigurationTab[] buildTabs = buildTabGroup.getTabs();
+ ILaunchConfigurationTab[] mainTabs = group.getTabs();
+ ILaunchConfigurationTab[] tabs = new ILaunchConfigurationTab[buildTabs.length + mainTabs.length];
+ System.arraycopy(buildTabs, 0, tabs, 0, buildTabs.length);
+ System.arraycopy(mainTabs, 0, tabs, buildTabs.length, mainTabs.length);
+ return tabs;
+ } else {
+ return group.getTabs();
+ }
+ }
+
+ @Override
+ public ILaunchConfigurationTab getActiveTab() {
+ CTabItem selItem = tabFolder.getSelection();
+ if (selItem != null) {
+ return (ILaunchConfigurationTab) selItem.getData();
+ } else {
+ return null;
+ }
+ }
+
+ @Override
+ public String getMode() {
+ return mode.getIdentifier();
+ }
+
+ @Override
+ public ILaunchTarget getLaunchTarget() {
+ return target;
+ }
+
+ @Override
+ public void setActiveTab(ILaunchConfigurationTab tab) {
+ for (CTabItem item : tabFolder.getItems()) {
+ if (tab.equals(item.getData())) {
+ tabFolder.setSelection(item);
+ return;
+ }
+ }
+ }
+
+ @Override
+ public void setActiveTab(int index) {
+ tabFolder.setSelection(index);
+ }
+
+}
diff --git a/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/LaunchBarUIManager.java b/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/LaunchBarUIManager.java
new file mode 100644
index 00000000000..7988001ce7c
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/LaunchBarUIManager.java
@@ -0,0 +1,232 @@
+/*******************************************************************************
+ * Copyright (c) 2014 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Doug Schaefer
+ *******************************************************************************/
+package org.eclipse.launchbar.ui.internal;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtension;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.debug.core.DebugPlugin;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.ILaunchConfigurationType;
+import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
+import org.eclipse.debug.core.ILaunchMode;
+import org.eclipse.debug.internal.ui.DebugUIPlugin;
+import org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationPresentationManager;
+import org.eclipse.debug.internal.ui.launchConfigurations.LaunchGroupExtension;
+import org.eclipse.debug.ui.ILaunchConfigurationTabGroup;
+import org.eclipse.debug.ui.ILaunchGroup;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.window.Window;
+import org.eclipse.launchbar.core.ILaunchBarManager;
+import org.eclipse.launchbar.core.ILaunchDescriptor;
+import org.eclipse.launchbar.core.internal.ExecutableExtension;
+import org.eclipse.launchbar.core.target.ILaunchTarget;
+import org.eclipse.launchbar.ui.ILaunchBarUIManager;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.PlatformUI;
+
+public class LaunchBarUIManager implements ILaunchBarUIManager {
+
+ private Map<String, ExecutableExtension<ILabelProvider>> descriptorLabelProviders;
+
+ // Map<configTypeId, descriptorTypeId, tabGroup>
+ private Map<String, Map<String, ExecutableExtension<ILaunchConfigurationTabGroup>>> buildTabGroups;
+
+ private ILaunchBarManager manager = Activator.getService(ILaunchBarManager.class);
+
+ private void init() {
+ if (descriptorLabelProviders == null) {
+ descriptorLabelProviders = new HashMap<>();
+ buildTabGroups = new HashMap<>();
+
+ IExtensionPoint point = Platform.getExtensionRegistry().getExtensionPoint(Activator.PLUGIN_ID,
+ "launchBarUIContributions"); //$NON-NLS-1$
+ IExtension[] extensions = point.getExtensions();
+ for (IExtension extension : extensions) {
+ for (IConfigurationElement element : extension.getConfigurationElements()) {
+ String elementName = element.getName();
+ if (elementName.equals("descriptorUI")) { //$NON-NLS-1$
+ String descriptorTypeId = element.getAttribute("descriptorTypeId"); //$NON-NLS-1$
+ ExecutableExtension<ILabelProvider> labelProvider = new ExecutableExtension<>(element,
+ "labelProvider"); //$NON-NLS-1$
+ descriptorLabelProviders.put(descriptorTypeId, labelProvider);
+ } else if (elementName.equals("buildTabGroup")) { //$NON-NLS-1$
+ String launchConfigTypeId = element.getAttribute("launchConfigType"); //$NON-NLS-1$
+ String descriptorTypeId = element.getAttribute("launchDescriptorType"); //$NON-NLS-1$
+ ExecutableExtension<ILaunchConfigurationTabGroup> tabGroup = new ExecutableExtension<>(element,
+ "tabGroup"); //$NON-NLS-1$
+
+ Map<String, ExecutableExtension<ILaunchConfigurationTabGroup>> descGroup = buildTabGroups
+ .get(launchConfigTypeId);
+ if (descGroup == null) {
+ descGroup = new HashMap<>();
+ buildTabGroups.put(launchConfigTypeId, descGroup);
+ }
+
+ descGroup.put(descriptorTypeId, tabGroup);
+ }
+ }
+ }
+ }
+ }
+
+ @Override
+ public ILabelProvider getLabelProvider(ILaunchDescriptor descriptor) throws CoreException {
+ init();
+ ExecutableExtension<ILabelProvider> provider = descriptorLabelProviders
+ .get(manager.getDescriptorTypeId(descriptor.getType()));
+ return provider != null ? provider.get() : null;
+ }
+
+ @Override
+ public IStatus openConfigurationEditor(ILaunchDescriptor descriptor) {
+ if (descriptor == null)
+ return Status.OK_STATUS;
+
+ // Display the error message
+ Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
+ IStatus s = canOpenConfigurationEditor(descriptor);
+ if (!s.isOK()) {
+ MessageDialog.openError(shell, s.getMessage(),
+ s.getException() == null ? s.getMessage() : s.getException().getMessage());
+ return s;
+ }
+
+ try {
+ ILaunchMode mode = manager.getActiveLaunchMode();
+ ILaunchTarget target = manager.getActiveLaunchTarget();
+ ILaunchConfiguration config = manager.getLaunchConfiguration(descriptor, target);
+
+ ILaunchConfigurationWorkingCopy workingCopy = config.getWorkingCopy();
+
+ ILaunchConfigurationTabGroup buildTabGroup = null;
+ Map<String, ExecutableExtension<ILaunchConfigurationTabGroup>> descGroups = buildTabGroups
+ .get(config.getType().getIdentifier());
+ if (descGroups != null) {
+ ExecutableExtension<ILaunchConfigurationTabGroup> tabGroup = descGroups
+ .get(manager.getDescriptorTypeId(descriptor.getType()));
+ if (tabGroup != null) {
+ buildTabGroup = tabGroup.create();
+ }
+ }
+
+ LaunchBarLaunchConfigDialog dialog = new LaunchBarLaunchConfigDialog(shell, workingCopy, descriptor, mode,
+ target, buildTabGroup);
+ switch (dialog.open()) {
+ case Window.OK:
+ if (!workingCopy.getOriginal().equals(workingCopy)
+ && (!workingCopy.getOriginal().getAttributes().equals(workingCopy.getAttributes())
+ || !workingCopy.getOriginal().getName().equals(workingCopy.getName()))) {
+ workingCopy.doSave();
+ }
+ break;
+ case LaunchBarLaunchConfigDialog.ID_DUPLICATE: {
+ String newName = DebugPlugin.getDefault().getLaunchManager()
+ .generateLaunchConfigurationName(workingCopy.getName());
+ ILaunchConfigurationWorkingCopy newWorkingCopy = workingCopy.copy(newName);
+ newWorkingCopy.doSave();
+ }
+ break;
+ case LaunchBarLaunchConfigDialog.ID_DELETE:
+ config.delete();
+ break;
+ default:
+ break;
+ }
+ } catch (CoreException e) {
+ return e.getStatus();
+ }
+
+ return Status.OK_STATUS;
+ }
+
+ private IStatus canOpenConfigurationEditor(ILaunchDescriptor desc) {
+ if (desc == null)
+ return new Status(IStatus.ERROR, Activator.PLUGIN_ID, Messages.DescriptorMustNotBeNull,
+ new Exception(Messages.DescriptorMustNotBeNullDesc));
+ ILaunchBarManager manager = Activator.getService(ILaunchBarManager.class);
+ ILaunchMode mode = null;
+ ILaunchTarget target = null;
+ try {
+ mode = manager.getActiveLaunchMode();
+ target = manager.getActiveLaunchTarget();
+ } catch (CoreException e) {
+ return e.getStatus();
+ }
+ if (target == null) {
+ return new Status(IStatus.ERROR, Activator.PLUGIN_ID, Messages.NoActiveTarget,
+ new Exception(Messages.NoActiveTargetDesc));
+ }
+
+ ILaunchConfigurationType configType = null;
+ try {
+ configType = manager.getLaunchConfigurationType(desc, target);
+ } catch (CoreException ce) {
+ return ce.getStatus();
+ }
+
+ if (mode == null) {
+ return new Status(IStatus.ERROR, Activator.PLUGIN_ID, Messages.NoLaunchModeSelected,
+ new Exception(Messages.NoLaunchModeSelected));
+ }
+
+ ILaunchGroup group = DebugUIPlugin.getDefault().getLaunchConfigurationManager().getLaunchGroup(configType,
+ mode.getIdentifier());
+ if (group == null) {
+ return new Status(IStatus.ERROR, Activator.PLUGIN_ID, Messages.NoLaunchGroupSelected,
+ new Exception(Messages.NoLaunchGroupSelected));
+ }
+
+ String mode2 = group.getMode();
+ if (mode2 == null) {
+ return new Status(IStatus.ERROR, Activator.PLUGIN_ID, Messages.NoLaunchModeSelected,
+ new Exception(Messages.CannotEditLaunchConfiguration));
+ }
+
+ LaunchGroupExtension groupExt = DebugUIPlugin.getDefault().getLaunchConfigurationManager()
+ .getLaunchGroup(group.getIdentifier());
+ if (groupExt != null) {
+ ILaunchConfiguration config = null;
+ try {
+ config = manager.getLaunchConfiguration(desc, target);
+ } catch (CoreException ce) {
+ // Ignore
+ }
+ if (config == null) {
+ return new Status(IStatus.ERROR, Activator.PLUGIN_ID, Messages.LaunchConfigurationNotFound,
+ new Exception(Messages.LaunchConfigurationNotFoundDesc));
+ }
+ try {
+ LaunchConfigurationPresentationManager mgr = LaunchConfigurationPresentationManager.getDefault();
+ ILaunchConfigurationTabGroup tabgroup = mgr.getTabGroup(config, mode.getIdentifier());
+ } catch (CoreException ce) {
+ return new Status(IStatus.ERROR, Activator.PLUGIN_ID, Messages.NoLaunchTabsDefined,
+ new Exception(Messages.NoLaunchTabsDefinedDesc));
+ }
+ } else {
+ return new Status(IStatus.ERROR, Activator.PLUGIN_ID, Messages.CannotEditLaunchConfiguration,
+ new Exception(Messages.CannotEditLaunchConfiguration));
+ }
+ return Status.OK_STATUS;
+ }
+
+}
diff --git a/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/Messages.java b/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/Messages.java
new file mode 100644
index 00000000000..c8b2d135337
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/Messages.java
@@ -0,0 +1,87 @@
+/*******************************************************************************
+ * Copyright (c) 2014, 2016 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.launchbar.ui.internal;
+
+import org.eclipse.osgi.util.NLS;
+
+public class Messages extends NLS {
+ private static final String BUNDLE_NAME = "org.eclipse.launchbar.ui.internal.messages"; //$NON-NLS-1$
+
+ public static String BuildActiveCommandHandler_0;
+ public static String BuildActiveCommandHandler_1;
+ public static String StopActiveCommandHandler_0;
+ public static String StopActiveCommandHandler_1;
+
+ public static String NewLaunchConfigEditPage_0;
+ public static String NewLaunchConfigEditPage_1;
+ public static String NewLaunchConfigEditPage_2;
+ public static String NewLaunchConfigEditPage_3;
+ public static String NewLaunchConfigEditPage_4;
+ public static String NewLaunchConfigEditPage_5;
+ public static String NewLaunchConfigEditPage_6;
+ public static String NewLaunchConfigEditPage_7;
+ public static String NewLaunchConfigModePage_0;
+ public static String NewLaunchConfigModePage_1;
+ public static String NewLaunchConfigModePage_2;
+ public static String NewLaunchConfigTypePage_0;
+ public static String NewLaunchConfigTypePage_1;
+ public static String NewLaunchConfigTypePage_2;
+
+ public static String NewLaunchConfigTypePage2_Mode;
+
+ public static String NewLaunchConfigTypePage2_Type;
+ public static String NewLaunchConfigWizard_0;
+
+ public static String NewLaunchTargetWizard_Title;
+
+ public static String NewLaunchTargetWizardSelectionPage_Description;
+
+ public static String NewLaunchTargetWizardSelectionPage_Title;
+
+ public static String DescriptorMustNotBeNull;
+ public static String DescriptorMustNotBeNullDesc;
+ public static String NoActiveTarget;
+ public static String NoActiveTargetDesc;
+ public static String NoLaunchConfigType;
+ public static String CannotEditLaunchConfiguration;
+ public static String NoLaunchModeSelected;
+ public static String NoLaunchGroupSelected;
+ public static String LaunchBarLaunchConfigDialog_Edit1;
+ public static String LaunchBarLaunchConfigDialog_Edit2;
+ public static String LaunchBarLaunchConfigDialog_EditConfiguration;
+ public static String LaunchBarLaunchConfigDialog_LaunchConfigName;
+ public static String LaunchBarLaunchConfigDialog_LCMustHaveName;
+ public static String LaunchBarLaunchConfigDialog_LCNameExists;
+ public static String LaunchBarLaunchConfigDialog_LCNameNotValid;
+ public static String LaunchBarLaunchConfigDialog_SetParameters;
+ public static String LaunchBarLaunchConfigDialog_Duplicate;
+ public static String LaunchBarLaunchConfigDialog_Delete;
+ public static String LaunchBarLaunchConfigDialog_Reset;
+ public static String LaunchBarLaunchConfigDialog_DeleteTitle;
+ public static String LaunchBarLaunchConfigDialog_ResetTitle;
+ public static String LaunchBarLaunchConfigDialog_DeleteConfirm;
+ public static String LaunchBarLaunchConfigDialog_ResetConfirm;
+
+ public static String LaunchConfigurationNotFound;
+ public static String LaunchConfigurationNotFoundDesc;
+
+ public static String LaunchTargetWizardDialog_Delete;
+ public static String NoLaunchTabsDefined;
+ public static String NoLaunchTabsDefinedDesc;
+
+ static {
+ // initialize resource bundle
+ NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+ }
+
+ private Messages() {
+ }
+}
diff --git a/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/commands/BuildActiveCommandHandler.java b/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/commands/BuildActiveCommandHandler.java
new file mode 100644
index 00000000000..5ca972b1385
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/commands/BuildActiveCommandHandler.java
@@ -0,0 +1,220 @@
+/*******************************************************************************
+ * Copyright (c) 2014, 2018 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Doug Schaefer
+ *******************************************************************************/
+package org.eclipse.launchbar.ui.internal.commands;
+
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.resources.IBuildConfiguration;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IncrementalProjectBuilder;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.ILaunchDelegate;
+import org.eclipse.debug.core.ILaunchMode;
+import org.eclipse.debug.core.model.ILaunchConfigurationDelegate;
+import org.eclipse.debug.core.model.ILaunchConfigurationDelegate2;
+import org.eclipse.launchbar.core.ILaunchBarManager;
+import org.eclipse.launchbar.core.target.ILaunchTarget;
+import org.eclipse.launchbar.core.target.launch.ILaunchConfigurationTargetedDelegate;
+import org.eclipse.launchbar.ui.internal.Activator;
+import org.eclipse.launchbar.ui.internal.Messages;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.actions.BuildAction;
+import org.eclipse.ui.ide.ResourceUtil;
+import org.eclipse.ui.progress.UIJob;
+
+/**
+ * Build active project
+ */
+public class BuildActiveCommandHandler extends AbstractHandler {
+
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ try {
+ ILaunchBarManager launchBarManager = Activator.getService(ILaunchBarManager.class);
+ ILaunchConfiguration config = launchBarManager.getActiveLaunchConfiguration();
+ ILaunchMode launchMode = launchBarManager.getActiveLaunchMode();
+ ILaunchTarget target = launchBarManager.getActiveLaunchTarget();
+
+ new UIJob(Display.getDefault(), Messages.BuildActiveCommandHandler_0) {
+ @Override
+ public boolean belongsTo(Object family) {
+ return ResourcesPlugin.FAMILY_MANUAL_BUILD.equals(family);
+ }
+
+ @Override
+ public IStatus runInUIThread(IProgressMonitor monitor) {
+ final Collection<IProject> projects = getProjects(config);
+ if (BuildAction.isSaveAllSet()) {
+ saveEditors(projects);
+ }
+
+ new Job(Messages.BuildActiveCommandHandler_1) {
+ @Override
+ public boolean belongsTo(Object family) {
+ return ResourcesPlugin.FAMILY_MANUAL_BUILD.equals(family);
+ }
+
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ try {
+ if (config == null) {
+ // Default, build the workspace
+ ResourcesPlugin.getWorkspace().build(IncrementalProjectBuilder.INCREMENTAL_BUILD,
+ monitor);
+ return Status.OK_STATUS;
+ }
+
+ String mode = launchMode != null ? launchMode.getIdentifier() : "run"; //$NON-NLS-1$
+ Set<String> modes = new HashSet<>();
+ modes.add(mode);
+ ILaunchDelegate delegate = config.getType().getPreferredDelegate(modes);
+ if (delegate == null)
+ delegate = config.getType().getDelegates(modes)[0];
+ ILaunchConfigurationDelegate configDel = delegate.getDelegate();
+ if (configDel instanceof ILaunchConfigurationTargetedDelegate) {
+ ILaunchConfigurationTargetedDelegate configDel2 = (ILaunchConfigurationTargetedDelegate) configDel;
+ boolean ret;
+ ret = configDel2.preLaunchCheck(config, mode, target, monitor);
+ if (!ret) {
+ return Status.CANCEL_STATUS;
+ }
+ if (!configDel2.buildForLaunch(config, mode, target, monitor)) {
+ return Status.OK_STATUS;
+ }
+ } else if (configDel instanceof ILaunchConfigurationDelegate2) {
+ ILaunchConfigurationDelegate2 configDel2 = (ILaunchConfigurationDelegate2) configDel;
+ boolean ret;
+ ret = configDel2.preLaunchCheck(config, mode, monitor);
+ if (!ret) {
+ return Status.CANCEL_STATUS;
+ }
+ if (!configDel2.buildForLaunch(config, mode, monitor)) {
+ return Status.OK_STATUS;
+ }
+ }
+
+ // Fall through, do a normal build
+ if (projects.isEmpty()) {
+ ResourcesPlugin.getWorkspace().build(IncrementalProjectBuilder.INCREMENTAL_BUILD,
+ monitor);
+ } else {
+ Collection<IBuildConfiguration> buildConfigs = getBuildConfigs(projects);
+ ResourcesPlugin.getWorkspace().build(
+ buildConfigs.toArray(new IBuildConfiguration[buildConfigs.size()]),
+ IncrementalProjectBuilder.INCREMENTAL_BUILD, true, monitor);
+ // TODO, may need to get the buildReferences
+ // argument from the descriptor
+ }
+ return Status.OK_STATUS;
+ } catch (CoreException e) {
+ return e.getStatus();
+ }
+ }
+ }.schedule();
+
+ return Status.OK_STATUS;
+ }
+ }.schedule();
+
+ } catch (CoreException e) {
+ return e.getStatus();
+ }
+ return Status.OK_STATUS;
+ }
+
+ protected Collection<IProject> getProjects(ILaunchConfiguration config) {
+ Set<IProject> projects = new HashSet<>();
+
+ if (config != null) {
+ IResource[] mappedResources;
+ try {
+ mappedResources = config.getMappedResources();
+ } catch (CoreException e) {
+ return projects;
+ }
+ if (mappedResources != null) {
+ for (IResource resource : mappedResources) {
+ IProject project = resource.getProject();
+ if (projects.contains(project))
+ continue;
+ projects.add(project);
+ try {
+ projects.addAll(Arrays.asList(project.getReferencedProjects()));
+ } catch (CoreException e) {
+ // skip
+ }
+ }
+ }
+ }
+
+ return projects;
+ }
+
+ protected Collection<IBuildConfiguration> getBuildConfigs(Collection<IProject> projects) {
+ Set<IBuildConfiguration> configs = new HashSet<>();
+
+ for (IProject project : projects) {
+ try {
+ configs.add(project.getActiveBuildConfig());
+ } catch (CoreException e) {
+ // skip
+ }
+ }
+
+ return configs;
+ }
+
+ protected void saveEditors(final Collection<IProject> projects) {
+ Display.getDefault().syncExec(() -> {
+ IWorkbenchWindow[] windows = PlatformUI.getWorkbench().getWorkbenchWindows();
+ for (IWorkbenchWindow window : windows) {
+ IWorkbenchPage[] pages = window.getPages();
+ for (IWorkbenchPage page : pages) {
+ if (projects.isEmpty()) {
+ page.saveAllEditors(false);
+ } else {
+ IEditorPart[] editors = page.getDirtyEditors();
+ for (IEditorPart editor : editors) {
+ IFile inputFile = ResourceUtil.getFile(editor.getEditorInput());
+ if (inputFile != null) {
+ if (projects.contains(inputFile.getProject())) {
+ page.saveEditor(editor, false);
+ }
+ }
+ }
+ }
+ }
+ }
+ });
+ }
+
+}
diff --git a/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/commands/ConfigureActiveLaunchHandler.java b/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/commands/ConfigureActiveLaunchHandler.java
new file mode 100644
index 00000000000..43e7c9ee97d
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/commands/ConfigureActiveLaunchHandler.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2014,2016 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.launchbar.ui.internal.commands;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.launchbar.core.ILaunchBarManager;
+import org.eclipse.launchbar.core.ILaunchDescriptor;
+import org.eclipse.launchbar.ui.ILaunchBarUIManager;
+import org.eclipse.launchbar.ui.internal.Activator;
+
+public class ConfigureActiveLaunchHandler extends AbstractHandler {
+
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ try {
+ ILaunchBarManager launchBarManager = Activator.getService(ILaunchBarManager.class);
+ ILaunchDescriptor launchDesc = launchBarManager.getActiveLaunchDescriptor();
+ ILaunchBarUIManager uiManager = Activator.getService(ILaunchBarUIManager.class);
+ return uiManager.openConfigurationEditor(launchDesc);
+ } catch (CoreException e) {
+ return e.getStatus();
+ }
+ }
+
+}
diff --git a/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/commands/LaunchActiveCommandHandler.java b/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/commands/LaunchActiveCommandHandler.java
new file mode 100644
index 00000000000..799a0c8a383
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/commands/LaunchActiveCommandHandler.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 2014 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Doug Schaefer
+ *******************************************************************************/
+package org.eclipse.launchbar.ui.internal.commands;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.ILaunchMode;
+import org.eclipse.debug.ui.DebugUITools;
+import org.eclipse.launchbar.core.ILaunchBarManager;
+import org.eclipse.launchbar.ui.internal.Activator;
+
+public class LaunchActiveCommandHandler extends AbstractHandler {
+
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ try {
+ ILaunchBarManager launchBarManager = Activator.getService(ILaunchBarManager.class);
+ StopActiveCommandHandler.stopActiveLaunches(launchBarManager);
+ ILaunchConfiguration config = launchBarManager.getActiveLaunchConfiguration();
+ if (config == null) {
+ return Status.OK_STATUS;
+ }
+
+ ILaunchMode launchMode = launchBarManager.getActiveLaunchMode();
+ if (launchMode == null) {
+ return Status.OK_STATUS;
+ }
+ DebugUITools.launch(config, launchMode.getIdentifier());
+
+ return Status.OK_STATUS;
+ } catch (CoreException e) {
+ return e.getStatus();
+ }
+ }
+
+ protected String getMode(ILaunchMode launchMode) {
+ return launchMode.getIdentifier();
+ }
+
+}
diff --git a/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/commands/StopActiveCommandHandler.java b/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/commands/StopActiveCommandHandler.java
new file mode 100644
index 00000000000..8ab0ebd033a
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/commands/StopActiveCommandHandler.java
@@ -0,0 +1,107 @@
+/*******************************************************************************
+ * Copyright (c) 2014 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Doug Schaefer
+ *******************************************************************************/
+package org.eclipse.launchbar.ui.internal.commands;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.IJobManager;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.debug.core.DebugPlugin;
+import org.eclipse.debug.core.ILaunch;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
+import org.eclipse.launchbar.core.ILaunchBarManager;
+import org.eclipse.launchbar.ui.internal.Activator;
+import org.eclipse.launchbar.ui.internal.Messages;
+
+public class StopActiveCommandHandler extends AbstractHandler {
+
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ stop();
+ return null;
+ }
+
+ public void stop() {
+ stopBuild();
+ stopActiveLaunches(Activator.getService(ILaunchBarManager.class));
+ }
+
+ static void stopActiveLaunches(ILaunchBarManager launchBarManager) {
+ final ILaunch[] activeLaunches = DebugPlugin.getDefault().getLaunchManager().getLaunches();
+ if (activeLaunches != null && activeLaunches.length > 0) {
+ new Job(Messages.StopActiveCommandHandler_0) {
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ try {
+ ILaunchConfiguration activeConfig = launchBarManager.getActiveLaunchConfiguration();
+ if (activeConfig == null) {
+ return Status.OK_STATUS;
+ }
+ for (ILaunch launch : activeLaunches) {
+ if (launch.canTerminate()) {
+ ILaunchConfiguration launchConfig = launch.getLaunchConfiguration();
+ if (activeConfig.equals(launchConfig)) {
+ launch.terminate();
+ continue;
+ }
+ if (launchConfig instanceof ILaunchConfigurationWorkingCopy) {
+ // There are evil delegates that use a
+ // working copy for scratch storage
+ if (activeConfig
+ .equals(((ILaunchConfigurationWorkingCopy) launchConfig).getOriginal())) {
+ launch.terminate();
+ continue;
+ }
+ }
+ }
+ }
+ return Status.OK_STATUS;
+ } catch (CoreException e) {
+ return e.getStatus();
+ }
+ }
+ }.schedule();
+ }
+ }
+
+ protected void stopBuild() {
+ Job job = new Job(Messages.StopActiveCommandHandler_1) {
+ @Override
+ protected IStatus run(IProgressMonitor progress) {
+ // stops all builds
+ final IJobManager jobManager = Job.getJobManager();
+ Job[] jobs = jobManager.find(ResourcesPlugin.FAMILY_MANUAL_BUILD);
+ for (int i = 0; i < jobs.length; i++) {
+ Job job = jobs[i];
+ job.cancel();
+ }
+ jobs = jobManager.find(ResourcesPlugin.FAMILY_AUTO_BUILD);
+ for (int i = 0; i < jobs.length; i++) {
+ Job job = jobs[i];
+ job.cancel();
+ }
+ return Status.OK_STATUS;
+ }
+ };
+ job.schedule();
+ }
+
+}
diff --git a/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/dialogs/NewLaunchConfigEditPage.java b/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/dialogs/NewLaunchConfigEditPage.java
new file mode 100644
index 00000000000..2f825ee02bd
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/dialogs/NewLaunchConfigEditPage.java
@@ -0,0 +1,223 @@
+/*******************************************************************************
+ * Copyright (c) 2014 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Doug Schaefer
+ *******************************************************************************/
+package org.eclipse.launchbar.ui.internal.dialogs;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.debug.core.DebugPlugin;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.ILaunchConfigurationType;
+import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
+import org.eclipse.debug.internal.ui.DebugUIPlugin;
+import org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationDialog;
+import org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer;
+import org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationsDialog;
+import org.eclipse.debug.internal.ui.launchConfigurations.LaunchGroupExtension;
+import org.eclipse.debug.ui.ILaunchConfigurationDialog;
+import org.eclipse.debug.ui.ILaunchGroup;
+import org.eclipse.jface.dialogs.IPageChangingListener;
+import org.eclipse.jface.dialogs.PageChangingEvent;
+import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.launchbar.ui.internal.Activator;
+import org.eclipse.launchbar.ui.internal.Messages;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+
+@SuppressWarnings("restriction")
+public class NewLaunchConfigEditPage extends WizardPage implements IPageChangingListener {
+ private ILaunchConfigurationWorkingCopy workingCopy;
+ private LaunchConfigurationDialogExt launchConfigurationDialog = new LaunchConfigurationDialogExt();
+ private LaunchConfigurationTabGroupViewerExt tabViewer;
+
+ private ILaunchGroup launchGroup;
+ private ILaunchConfigurationType launchConfigType;
+
+ public NewLaunchConfigEditPage() {
+ super(Messages.NewLaunchConfigEditPage_0);
+ setTitle(Messages.NewLaunchConfigEditPage_1);
+ setDescription(Messages.NewLaunchConfigEditPage_2);
+ }
+
+ @Override
+ public void createControl(Composite parent) {
+ Composite comp = new Composite(parent, SWT.NONE);
+ comp.setLayout(new GridLayout(1, false));
+ setControl(comp);
+ // create tab viewer
+ LaunchConfigurationsDialog.setCurrentlyVisibleLaunchConfigurationDialog(launchConfigurationDialog);
+ tabViewer = new LaunchConfigurationTabGroupViewerExt(comp, launchConfigurationDialog);
+ launchConfigurationDialog.setTabViewer(tabViewer);
+ GridData data = new GridData(SWT.FILL, SWT.BEGINNING, true, false);
+ data.heightHint = 500;
+ tabViewer.getControl().setLayoutData(data);
+ parent.layout(true, true);
+ validateFields();
+ }
+
+ public void setLaunchGroup(ILaunchGroup launchGroup) {
+ this.launchGroup = launchGroup;
+ }
+
+ public void setLaunchConfigType(ILaunchConfigurationType type) {
+ this.launchConfigType = type;
+ }
+
+ /**
+ * @return the workingCopy
+ */
+ public ILaunchConfigurationWorkingCopy getWorkingCopy() {
+ return workingCopy;
+ }
+
+ @Override
+ public void handlePageChanging(PageChangingEvent event) {
+ if (launchConfigType == null || event.getTargetPage() != this) {
+ if (tabViewer != null)
+ tabViewer.setInput(null);
+ return;
+ }
+ LaunchConfigurationsDialog.setCurrentlyVisibleLaunchConfigurationDialog(launchConfigurationDialog);
+ if (tabViewer != null) {
+ try {
+ String name = launchConfigurationDialog.generateName("launchConfiguration"); //$NON-NLS-1$
+ workingCopy = launchConfigType.newInstance(null, name);
+ launchConfigurationDialog.doSetDefaults(workingCopy);
+ tabViewer.setInput(workingCopy);
+ setTitle(String.format(Messages.NewLaunchConfigEditPage_7, launchConfigType.getName()));
+ } catch (CoreException e) {
+ Activator.log(e);
+ }
+ }
+ }
+
+ public boolean performFinish() {
+ if (workingCopy == null)
+ return false;
+ workingCopy.rename(tabViewer.getWorkingCopy().getName());
+ tabViewer.getTabGroup().performApply(workingCopy);
+ LaunchConfigurationsDialog.setCurrentlyVisibleLaunchConfigurationDialog(null);
+ return true;
+ }
+
+ @Override
+ public void dispose() {
+ LaunchConfigurationsDialog.setCurrentlyVisibleLaunchConfigurationDialog(null);
+ }
+
+ public void validateFields() {
+ // page is not complete unless we finish validation successfully
+ setPageComplete(false);
+ if (workingCopy == null)
+ return;
+ String message = tabViewer.getErrorMesssage();
+ setErrorMessage(message);
+ if (getErrorMessage() != null) {
+ setPageComplete(false);
+ } else {
+ setPageComplete(true);
+ }
+ }
+
+ private class LaunchConfigurationDialogExt extends LaunchConfigurationDialog {
+ public LaunchConfigurationDialogExt() {
+ super(NewLaunchConfigEditPage.this.getShell(), null, null);
+ }
+
+ @Override
+ protected ILaunchConfiguration getLaunchConfiguration() {
+ return workingCopy;
+ }
+
+ @Override
+ public void launchConfigurationAdded(ILaunchConfiguration configuration) {
+ if (getLaunchConfiguration() == null)
+ return;
+ super.launchConfigurationAdded(configuration);
+ }
+
+ @Override
+ public LaunchGroupExtension getLaunchGroup() {
+ return NewLaunchConfigEditPage.this.getLaunchGroup();
+ }
+
+ @Override
+ public void updateMessage() {
+ validateFields();
+ }
+
+ @Override
+ public void updateButtons() {
+ // Launch button
+ getTabViewer().refresh();
+ // getButton(ID_LAUNCH_BUTTON).setEnabled(getTabViewer().canLaunch()
+ // & getTabViewer().canLaunchWithModes() &
+ // !getTabViewer().hasDuplicateDelegates());
+ }
+
+ @Override
+ public void run(boolean fork, boolean cancelable, IRunnableWithProgress runnable)
+ throws InvocationTargetException, InterruptedException {
+ // ignore
+ }
+
+ @Override
+ public String generateName(String name) {
+ if (name == null)
+ return ""; //$NON-NLS-1$
+ return DebugPlugin.getDefault().getLaunchManager().generateLaunchConfigurationName(name);
+ }
+
+ @Override
+ public void doSetDefaults(ILaunchConfigurationWorkingCopy wc) {
+ super.doSetDefaults(wc);
+ }
+
+ @Override
+ public void setTabViewer(LaunchConfigurationTabGroupViewer viewer) {
+ super.setTabViewer(viewer);
+ }
+
+ @Override
+ public boolean isTreeSelectionEmpty() {
+ return false;
+ }
+ }
+
+ private class LaunchConfigurationTabGroupViewerExt extends LaunchConfigurationTabGroupViewer {
+ public LaunchConfigurationTabGroupViewerExt(Composite parent, ILaunchConfigurationDialog dialog) {
+ super(parent, dialog);
+ }
+
+ @Override
+ public ILaunchConfigurationWorkingCopy getWorkingCopy() {
+ return super.getWorkingCopy();
+ }
+ }
+
+ public LaunchGroupExtension getLaunchGroup() {
+ if (workingCopy == null)
+ return null;
+ if (launchGroup == null) {
+ return null;
+ }
+ LaunchGroupExtension groupExt = DebugUIPlugin.getDefault().getLaunchConfigurationManager()
+ .getLaunchGroup(launchGroup.getIdentifier());
+ return groupExt;
+ }
+
+}
diff --git a/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/dialogs/NewLaunchConfigModePage.java b/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/dialogs/NewLaunchConfigModePage.java
new file mode 100644
index 00000000000..c6e10f0446e
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/dialogs/NewLaunchConfigModePage.java
@@ -0,0 +1,118 @@
+/*******************************************************************************
+ * Copyright (c) 2014 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Doug Schaefer
+ *******************************************************************************/
+package org.eclipse.launchbar.ui.internal.dialogs;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.eclipse.debug.ui.DebugUITools;
+import org.eclipse.debug.ui.ILaunchGroup;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.launchbar.ui.internal.Messages;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableItem;
+
+public class NewLaunchConfigModePage extends WizardPage {
+
+ private Table table;
+
+ public NewLaunchConfigModePage() {
+ super(Messages.NewLaunchConfigModePage_0);
+ setTitle(Messages.NewLaunchConfigModePage_1);
+ setDescription(Messages.NewLaunchConfigModePage_2);
+ }
+
+ @Override
+ public void createControl(Composite parent) {
+ Composite comp = new Composite(parent, SWT.NONE);
+ comp.setLayout(new GridLayout(1, false));
+
+ table = new Table(comp, SWT.SINGLE | SWT.BORDER);
+ GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);
+ table.setLayoutData(data);
+
+ Set<ILaunchGroup> done = new HashSet<>();
+
+ for (ILaunchGroup group : DebugUITools.getLaunchGroups()) {
+ if (group.getMode().equals("run")) { //$NON-NLS-1$
+ createModeItem(group);
+ done.add(group);
+ }
+ }
+
+ for (ILaunchGroup group : DebugUITools.getLaunchGroups()) {
+ if (group.getMode().equals("debug")) { //$NON-NLS-1$
+ createModeItem(group);
+ done.add(group);
+ }
+ }
+
+ for (ILaunchGroup group : DebugUITools.getLaunchGroups()) {
+ if (!done.contains(group)) {
+ createModeItem(group);
+ }
+ }
+
+ if (table.getItemCount() > 0) {
+ // Select debug as default
+ int i = 0;
+ boolean hasDebug = false;
+ for (TableItem item : table.getItems()) {
+ if ("debug".equals(((ILaunchGroup) item.getData()).getMode())) { //$NON-NLS-1$
+ hasDebug = true;
+ table.select(i);
+ break;
+ }
+ i++;
+ }
+
+ if (!hasDebug) {
+ table.select(0);
+ }
+
+ // We're guaranteed to have made a selection here
+ table.notifyListeners(SWT.Selection, null);
+ }
+
+ setControl(comp);
+ }
+
+ private void createModeItem(ILaunchGroup group) {
+ if (group.getCategory() != null || !group.isPublic())
+ return;
+
+ TableItem item = new TableItem(table, SWT.NONE);
+ item.setText(group.getLabel().replace("&", "")); //$NON-NLS-1$ //$NON-NLS-2$
+ ImageDescriptor imageDesc = group.getImageDescriptor();
+ if (imageDesc != null) {
+ item.setImage(imageDesc.createImage());
+ }
+ item.setData(group);
+ }
+
+ public ILaunchGroup getSelectedGroup() {
+ return (ILaunchGroup) table.getSelection()[0].getData();
+ }
+
+ public void addGroupSelectionListener(SelectionListener listener) {
+ table.addSelectionListener(listener);
+ }
+
+}
diff --git a/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/dialogs/NewLaunchConfigTypePage.java b/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/dialogs/NewLaunchConfigTypePage.java
new file mode 100644
index 00000000000..4bafe25a2b9
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/dialogs/NewLaunchConfigTypePage.java
@@ -0,0 +1,97 @@
+/*******************************************************************************
+ * Copyright (c) 2014 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Doug Schaefer
+ *******************************************************************************/
+package org.eclipse.launchbar.ui.internal.dialogs;
+
+import org.eclipse.debug.core.DebugPlugin;
+import org.eclipse.debug.core.ILaunchConfigurationType;
+import org.eclipse.debug.ui.DebugUITools;
+import org.eclipse.debug.ui.ILaunchGroup;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.launchbar.ui.internal.Messages;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableItem;
+
+public class NewLaunchConfigTypePage extends WizardPage {
+ private Table table;
+
+ public NewLaunchConfigTypePage() {
+ super(Messages.NewLaunchConfigTypePage_0);
+ setTitle(Messages.NewLaunchConfigTypePage_1);
+ setDescription(Messages.NewLaunchConfigTypePage_2);
+ }
+
+ @Override
+ public void createControl(Composite parent) {
+ Composite comp = new Composite(parent, SWT.NONE);
+ comp.setLayout(new GridLayout(1, false));
+
+ table = new Table(comp, SWT.SINGLE | SWT.BORDER);
+ GridData data = new GridData(SWT.FILL, SWT.FILL, true, false);
+ data.heightHint = 500;
+ table.setLayoutData(data);
+ table.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetDefaultSelected(SelectionEvent e) {
+ getContainer().showPage(getNextPage());
+ }
+ });
+
+ setControl(comp);
+ }
+
+ public void setLaunchGroup(ILaunchGroup group) {
+ if (group == null)
+ return;
+
+ table.removeAll();
+
+ boolean haveItems = false;
+ for (ILaunchConfigurationType type : DebugPlugin.getDefault().getLaunchManager()
+ .getLaunchConfigurationTypes()) {
+ if (!type.isPublic() || type.getCategory() != null || !type.supportsMode(group.getMode()))
+ continue;
+
+ haveItems = true;
+ TableItem item = new TableItem(table, SWT.NONE);
+ item.setText(type.getName());
+ ImageDescriptor imageDesc = DebugUITools.getDefaultImageDescriptor(type);
+ if (imageDesc != null)
+ item.setImage(imageDesc.createImage());
+ item.setData(type);
+ }
+
+ if (haveItems) {
+ table.select(0);
+ table.notifyListeners(SWT.Selection, null);
+ }
+ setPageComplete(haveItems);
+ }
+
+ public void addTypeSelectionListener(SelectionListener listener) {
+ table.addSelectionListener(listener);
+ }
+
+ public ILaunchConfigurationType getSelectedType() {
+ return (ILaunchConfigurationType) table.getSelection()[0].getData();
+ }
+
+}
diff --git a/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/dialogs/NewLaunchConfigTypePage2.java b/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/dialogs/NewLaunchConfigTypePage2.java
new file mode 100644
index 00000000000..0a3e1bd8a01
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/dialogs/NewLaunchConfigTypePage2.java
@@ -0,0 +1,199 @@
+/*******************************************************************************
+ * Copyright (c) 2017, 2018 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.launchbar.ui.internal.dialogs;
+
+import java.util.Arrays;
+
+import org.eclipse.debug.core.DebugPlugin;
+import org.eclipse.debug.core.ILaunchConfigurationType;
+import org.eclipse.debug.ui.DebugUITools;
+import org.eclipse.debug.ui.ILaunchGroup;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.launchbar.ui.internal.Messages;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableItem;
+
+public class NewLaunchConfigTypePage2 extends WizardPage {
+
+ private final NewLaunchConfigEditPage editPage;
+
+ private Table modeTable;
+ private Table typeTable;
+
+ public NewLaunchConfigTypePage2(NewLaunchConfigEditPage editPage) {
+ super(NewLaunchConfigTypePage2.class.getName());
+ this.editPage = editPage;
+ setTitle(Messages.NewLaunchConfigTypePage_1);
+ setDescription(Messages.NewLaunchConfigTypePage_2);
+ }
+
+ @Override
+ public void createControl(Composite parent) {
+ Composite comp = new Composite(parent, SWT.NONE);
+ comp.setLayout(new GridLayout());
+
+ Group modeGroup = new Group(comp, SWT.NONE);
+ modeGroup.setText(Messages.NewLaunchConfigTypePage2_Mode);
+ modeGroup.setLayout(new GridLayout());
+ modeGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+
+ modeTable = new Table(modeGroup, SWT.SINGLE | SWT.BORDER);
+ GridData data = new GridData(SWT.FILL, SWT.FILL, true, false);
+ data.heightHint = 100;
+ modeTable.setLayoutData(data);
+ modeTable.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ modeChanged();
+ }
+ });
+
+ Group typeGroup = new Group(comp, SWT.NONE);
+ typeGroup.setText(Messages.NewLaunchConfigTypePage2_Type);
+ typeGroup.setLayout(new GridLayout());
+ typeGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+
+ typeTable = new Table(typeGroup, SWT.SINGLE | SWT.BORDER);
+ typeTable.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ typeTable.addSelectionListener(new SelectionListener() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ typeChanged();
+ }
+
+ @Override
+ public void widgetDefaultSelected(SelectionEvent e) {
+ widgetSelected(e);
+ getContainer().showPage(getNextPage());
+ }
+ });
+
+ populateMode();
+
+ setControl(comp);
+ }
+
+ private void populateMode() {
+ int select = -1;
+
+ for (ILaunchGroup group : DebugUITools.getLaunchGroups()) {
+ if (group.getMode().equals("run")) { //$NON-NLS-1$
+ if (createModeItem(modeTable, group)) {
+ select++;
+ }
+ }
+ }
+
+ for (ILaunchGroup group : DebugUITools.getLaunchGroups()) {
+ if (group.getMode().equals("debug")) { //$NON-NLS-1$
+ if (createModeItem(modeTable, group)) {
+ select++;
+ }
+ }
+ }
+
+ for (ILaunchGroup group : DebugUITools.getLaunchGroups()) {
+ if (!group.getMode().equals("run") && !group.getMode().equals("debug")) { //$NON-NLS-1$ //$NON-NLS-2$
+ createModeItem(modeTable, group);
+ }
+ }
+
+ if (select >= 0) {
+ modeTable.select(select);
+ modeChanged();
+ } else if (modeTable.getItemCount() > 0) {
+ modeTable.select(0);
+ modeChanged();
+ } else {
+ setPageComplete(false);
+ }
+ }
+
+ private boolean createModeItem(Table table, ILaunchGroup group) {
+ if (group.getCategory() != null || !group.isPublic())
+ return false;
+
+ TableItem item = new TableItem(table, SWT.NONE);
+ item.setText(group.getLabel().replace("&", "")); //$NON-NLS-1$ //$NON-NLS-2$
+ ImageDescriptor imageDesc = group.getImageDescriptor();
+ if (imageDesc != null) {
+ item.setImage(imageDesc.createImage());
+ }
+ item.setData(group);
+
+ return true;
+ }
+
+ private void modeChanged() {
+ TableItem[] selection = modeTable.getSelection();
+ if (selection.length == 0) {
+ editPage.setLaunchGroup(null);
+ setPageComplete(false);
+ return;
+ }
+
+ ILaunchGroup group = (ILaunchGroup) selection[0].getData();
+ editPage.setLaunchGroup(group);
+
+ ILaunchConfigurationType[] types = DebugPlugin.getDefault().getLaunchManager().getLaunchConfigurationTypes();
+ Arrays.sort(types, (type0, type1) -> {
+ int comp = type0.getPluginIdentifier().compareTo(type1.getPluginIdentifier());
+ if (comp != 0) {
+ return comp;
+ } else {
+ return type0.getName().compareTo(type1.getName());
+ }
+ });
+
+ typeTable.removeAll();
+ for (ILaunchConfigurationType type : types) {
+ if (!type.isPublic() || type.getCategory() != null || !type.supportsMode(group.getMode()))
+ continue;
+
+ TableItem item = new TableItem(typeTable, SWT.NONE);
+ item.setText(type.getName());
+ ImageDescriptor imageDesc = DebugUITools.getDefaultImageDescriptor(type);
+ if (imageDesc != null)
+ item.setImage(imageDesc.createImage());
+ item.setData(type);
+ }
+
+ if (typeTable.getItemCount() > 0) {
+ typeTable.select(0);
+ typeChanged();
+ } else {
+ setPageComplete(false);
+ }
+ }
+
+ private void typeChanged() {
+ TableItem[] selection = typeTable.getSelection();
+ if (selection.length == 0) {
+ editPage.setLaunchConfigType(null);
+ setPageComplete(false);
+ return;
+ }
+
+ ILaunchConfigurationType type = (ILaunchConfigurationType) selection[0].getData();
+ editPage.setLaunchConfigType(type);
+ setPageComplete(true);
+ }
+
+}
diff --git a/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/messages.properties b/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/messages.properties
new file mode 100644
index 00000000000..3c8291f53d6
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/messages.properties
@@ -0,0 +1,66 @@
+################################################################################
+# Copyright (c) 2016 QNX Software Systems and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+################################################################################
+BuildActiveCommandHandler_0=Building Active Configuration
+BuildActiveCommandHandler_1=Building Active Configuration
+StopActiveCommandHandler_0=Stopping launches
+StopActiveCommandHandler_1=Stopping build
+
+NewLaunchConfigEditPage_0=NewLaunchConfigEditPage
+NewLaunchConfigEditPage_1=Launch Configuration Properties
+NewLaunchConfigEditPage_2=Edit the new launch configuration properties
+NewLaunchConfigEditPage_3=Name
+NewLaunchConfigEditPage_4=Name can not be empty
+NewLaunchConfigEditPage_5=A configuration with this name already exists
+NewLaunchConfigEditPage_6=New Configuration
+NewLaunchConfigEditPage_7=%s Launch Configuration Properties
+NewLaunchConfigModePage_0=Select Initial Launch Mode
+NewLaunchConfigModePage_1=Initial Launch Mode
+NewLaunchConfigModePage_2=Select initial launch mode.
+NewLaunchConfigTypePage_0=Select Launch Configuration Type
+NewLaunchConfigTypePage_1=Launch Configuration Type
+NewLaunchConfigTypePage_2=Select the mode and type of the launch configuration to create.
+NewLaunchConfigTypePage2_Mode=Launch Mode
+NewLaunchConfigTypePage2_Type=Launch Configuration Type
+NewLaunchConfigWizard_0=Create Launch Configuration
+NewLaunchTargetWizard_Title=New Launch Target
+NewLaunchTargetWizardSelectionPage_Description=Select the type of target to create.
+NewLaunchTargetWizardSelectionPage_Title=New Launch Target
+
+DescriptorMustNotBeNull=Descriptor must not be null
+DescriptorMustNotBeNullDesc=The launch descriptor must not be null.
+NoActiveTarget=No Active Target
+NoActiveTargetDesc=You must create a target to edit this launch configuration.
+NoLaunchConfigType=No launch configuration type matches selected launch descriptor.
+CannotEditLaunchConfiguration=Cannot edit this configuration.
+NoLaunchModeSelected=No launch mode selected.
+NoLaunchGroupSelected=No launch group found for the current selection.
+
+LaunchBarLaunchConfigDialog_Edit1=Edit %s configuration %s for %s
+LaunchBarLaunchConfigDialog_Edit2=Edit %s configuration %s for %s on %s
+LaunchBarLaunchConfigDialog_EditConfiguration=Edit Configuration
+LaunchBarLaunchConfigDialog_LaunchConfigName=Launch Configuration Name:
+LaunchBarLaunchConfigDialog_LCMustHaveName=Launch configuration must have a name
+LaunchBarLaunchConfigDialog_LCNameExists=A launch configuration with that name already exists.
+LaunchBarLaunchConfigDialog_LCNameNotValid=The launch configuration name is not valid.
+LaunchBarLaunchConfigDialog_SetParameters=Set parameters for the configuration.
+LaunchBarLaunchConfigDialog_Duplicate=Duplicate
+LaunchBarLaunchConfigDialog_Delete=Delete
+LaunchBarLaunchConfigDialog_Reset=Restore Defaults
+LaunchBarLaunchConfigDialog_DeleteTitle=Delete Launch Configuration
+LaunchBarLaunchConfigDialog_ResetTitle=Restore Launch Configuration Defaults
+LaunchBarLaunchConfigDialog_DeleteConfirm=Are you sure you would like to delete %s
+LaunchBarLaunchConfigDialog_ResetConfirm=Are you sure you want to restore defaults on %s
+
+LaunchConfigurationNotFound=Launch Configuration Not Found
+LaunchConfigurationNotFoundDesc=No launch configuration is found for the given launch descriptor and target.
+LaunchTargetWizardDialog_Delete=Delete
+NoLaunchTabsDefined=No launch tabs defined.
+NoLaunchTabsDefinedDesc=No launch tabs have been defined for this launch configuration type.
diff --git a/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/target/LaunchTargetUIManager.java b/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/target/LaunchTargetUIManager.java
new file mode 100644
index 00000000000..9b1acdbe237
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/target/LaunchTargetUIManager.java
@@ -0,0 +1,162 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.launchbar.ui.internal.target;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtension;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.IExtensionRegistry;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.window.SameShellProvider;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.launchbar.core.target.ILaunchTarget;
+import org.eclipse.launchbar.ui.internal.Activator;
+import org.eclipse.launchbar.ui.target.ILaunchTargetUIManager;
+import org.eclipse.launchbar.ui.target.LaunchTargetWizard;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.dialogs.PropertyDialogAction;
+import org.eclipse.ui.wizards.IWizardDescriptor;
+
+public class LaunchTargetUIManager implements ILaunchTargetUIManager {
+ private Map<String, IConfigurationElement> typeElements;
+ private Map<String, ILabelProvider> labelProviders = new HashMap<>();
+ private Map<String, IConfigurationElement> editElements;
+
+ @Override
+ public synchronized ILabelProvider getLabelProvider(ILaunchTarget target) {
+ if (typeElements == null) {
+ // Load them up
+ typeElements = new HashMap<>();
+ IExtensionRegistry registry = Platform.getExtensionRegistry();
+ IExtensionPoint point = registry
+ .getExtensionPoint(Activator.getDefault().getBundle().getSymbolicName() + ".launchTargetTypeUI"); //$NON-NLS-1$
+ for (IExtension extension : point.getExtensions()) {
+ for (IConfigurationElement element : extension.getConfigurationElements()) {
+ if ("launchTargetTypeUI".equals(element.getName())) { //$NON-NLS-1$
+ String id = element.getAttribute("id"); //$NON-NLS-1$
+ if (id != null) {
+ typeElements.put(id, element);
+ }
+ }
+ }
+ }
+ }
+
+ String typeId = target.getTypeId();
+ ILabelProvider labelProvider = labelProviders.get(typeId);
+ if (labelProvider == null) {
+ IConfigurationElement element = typeElements.get(typeId);
+ if (element != null) {
+ try {
+ labelProvider = (ILabelProvider) element.createExecutableExtension("labelProvider"); //$NON-NLS-1$
+ } catch (CoreException e) {
+ Activator.log(e);
+ }
+ }
+ if (labelProvider == null) {
+ labelProvider = new LabelProvider() {
+ @Override
+ public String getText(Object element) {
+ if (element instanceof ILaunchTarget) {
+ return ((ILaunchTarget) element).getId();
+ }
+ return super.getText(element);
+ }
+
+ @Override
+ public Image getImage(Object element) {
+ if (element instanceof ILaunchTarget) {
+ return Activator.getDefault().getImage(Activator.IMG_LOCAL_TARGET);
+ }
+ return super.getImage(element);
+ }
+ };
+ }
+ }
+ return labelProvider;
+ }
+
+ @Override
+ public IWizardDescriptor[] getLaunchTargetWizards() {
+ // No one one should be using this. The new target wizard is internal.
+ return null;
+ }
+
+ @Override
+ public void editLaunchTarget(ILaunchTarget target) {
+ if (editElements == null) {
+ // Load them up
+ editElements = new HashMap<>();
+ IExtensionRegistry registry = Platform.getExtensionRegistry();
+ IExtensionPoint point = registry
+ .getExtensionPoint(Activator.getDefault().getBundle().getSymbolicName() + ".launchTargetTypeUI"); //$NON-NLS-1$
+ for (IExtension extension : point.getExtensions()) {
+ for (IConfigurationElement element : extension.getConfigurationElements()) {
+ if ("wizard2".equals(element.getName())) { //$NON-NLS-1$
+ String id = element.getAttribute("id"); //$NON-NLS-1$
+ if (id != null) {
+ editElements.put(id, element);
+ }
+ }
+ }
+ }
+ }
+
+ Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
+ IConfigurationElement element = editElements.get(target.getTypeId());
+ if (element != null) {
+ try {
+ LaunchTargetWizard wizard = (LaunchTargetWizard) element.createExecutableExtension("class"); //$NON-NLS-1$
+ wizard.setLaunchTarget(target);
+ WizardDialog dialog = wizard.canDelete() ? new LaunchTargetWizardDialog(shell, wizard)
+ : new WizardDialog(shell, wizard);
+ dialog.open();
+ } catch (CoreException e) {
+ Activator.log(e.getStatus());
+ }
+ } else {
+ new PropertyDialogAction(new SameShellProvider(shell), new ISelectionProvider() {
+ @Override
+ public void setSelection(ISelection selection) {
+ // ignore
+ }
+
+ @Override
+ public void removeSelectionChangedListener(ISelectionChangedListener listener) {
+ // ignore
+ }
+
+ @Override
+ public ISelection getSelection() {
+ return new StructuredSelection(target);
+ }
+
+ @Override
+ public void addSelectionChangedListener(ISelectionChangedListener listener) {
+ // ignore
+ }
+ }).run();
+ }
+ }
+
+}
diff --git a/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/target/LaunchTargetWizardDialog.java b/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/target/LaunchTargetWizardDialog.java
new file mode 100644
index 00000000000..0dd5c6841a8
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/target/LaunchTargetWizardDialog.java
@@ -0,0 +1,47 @@
+/*******************************************************************************
+ * Copyright (c) 2017 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.launchbar.ui.internal.target;
+
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.wizard.IWizard;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.launchbar.ui.internal.Messages;
+import org.eclipse.launchbar.ui.target.LaunchTargetWizard;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Shell;
+
+public class LaunchTargetWizardDialog extends WizardDialog {
+
+ public static final int ID_DELETE = IDialogConstants.CLIENT_ID + 0;
+
+ public LaunchTargetWizardDialog(Shell parentShell, IWizard newWizard) {
+ super(parentShell, newWizard);
+ }
+
+ @Override
+ protected void createButtonsForButtonBar(Composite parent) {
+ createButton(parent, ID_DELETE, Messages.LaunchTargetWizardDialog_Delete, false);
+
+ super.createButtonsForButtonBar(parent);
+ }
+
+ @Override
+ protected void buttonPressed(int buttonId) {
+ if (buttonId == ID_DELETE) {
+ ((LaunchTargetWizard) getWizard()).performDelete();
+ setReturnCode(CANCEL);
+ close();
+ } else {
+ super.buttonPressed(buttonId);
+ }
+ }
+
+}
diff --git a/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/target/NewLaunchTargetWizard.java b/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/target/NewLaunchTargetWizard.java
new file mode 100644
index 00000000000..376c0124583
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/target/NewLaunchTargetWizard.java
@@ -0,0 +1,53 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2015 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.launchbar.ui.internal.target;
+
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.launchbar.ui.internal.Messages;
+import org.eclipse.ui.INewWizard;
+import org.eclipse.ui.IWorkbench;
+
+/**
+ * The new wizard is responsible for allowing the user to choose which new
+ * (nested) wizard to run. The set of available new wizards comes from the new
+ * extension point.
+ */
+public class NewLaunchTargetWizard extends Wizard implements INewWizard {
+
+ public NewLaunchTargetWizard() {
+ setForcePreviousAndNextButtons(true);
+ }
+
+ /**
+ * Create the wizard pages
+ */
+ @Override
+ public void addPages() {
+ addPage(new NewLaunchTargetWizardSelectionPage());
+ setWindowTitle(Messages.NewLaunchTargetWizard_Title);
+ }
+
+ @Override
+ public boolean performFinish() {
+ // Downstream wizards do finish
+ return false;
+ }
+
+ @Override
+ public void init(IWorkbench workbench, IStructuredSelection selection) {
+ // Nothing to do
+ }
+
+}
diff --git a/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/target/NewLaunchTargetWizardSelectionPage.java b/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/target/NewLaunchTargetWizardSelectionPage.java
new file mode 100644
index 00000000000..4ee6c8d59de
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/target/NewLaunchTargetWizardSelectionPage.java
@@ -0,0 +1,166 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.launchbar.ui.internal.target;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtension;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.wizard.IWizardPage;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.launchbar.ui.internal.Activator;
+import org.eclipse.launchbar.ui.internal.Messages;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableItem;
+import org.eclipse.ui.IWorkbenchWizard;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+
+class NewLaunchTargetWizardSelectionPage extends WizardPage {
+
+ private Table table;
+
+ public NewLaunchTargetWizardSelectionPage() {
+ super(NewLaunchTargetWizardSelectionPage.class.getName());
+ setTitle(Messages.NewLaunchTargetWizardSelectionPage_Title);
+ setDescription(Messages.NewLaunchTargetWizardSelectionPage_Description);
+ }
+
+ @Override
+ public void createControl(Composite parent) {
+ Composite comp = new Composite(parent, SWT.NONE);
+ comp.setLayout(new GridLayout());
+
+ table = new Table(comp, SWT.BORDER | SWT.SINGLE);
+ table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+
+ List<IConfigurationElement> elements = new ArrayList<>();
+ IExtensionPoint point = Platform.getExtensionRegistry()
+ .getExtensionPoint(Activator.PLUGIN_ID + ".launchTargetTypeUI"); //$NON-NLS-1$
+ for (IExtension extension : point.getExtensions()) {
+ for (IConfigurationElement element : extension.getConfigurationElements()) {
+ String elementName = element.getName();
+ if ("wizard2".equals(elementName) || "wizard".equals(elementName)) { //$NON-NLS-1$ //$NON-NLS-2$
+ elements.add(element);
+ }
+ }
+ }
+
+ elements.sort((o1, o2) -> {
+ String name1 = o1.getAttribute("name"); //$NON-NLS-1$
+ String name2 = o2.getAttribute("name"); //$NON-NLS-1$
+ return name1.compareTo(name2);
+ });
+
+ for (IConfigurationElement element : elements) {
+ String name = element.getAttribute("name"); //$NON-NLS-1$
+ TableItem item = new TableItem(table, SWT.NONE);
+ item.setText(name);
+
+ String iconFile = element.getAttribute("icon"); //$NON-NLS-1$
+ if (iconFile != null) {
+ ImageDescriptor desc = Activator.imageDescriptorFromPlugin(element.getNamespaceIdentifier(), iconFile);
+ if (desc != null) {
+ item.setImage(desc.createImage());
+ }
+ }
+
+ item.setData(element);
+ }
+
+ table.addSelectionListener(new SelectionListener() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ getContainer().updateButtons();
+ }
+
+ @Override
+ public void widgetDefaultSelected(SelectionEvent e) {
+ widgetSelected(e);
+ if (canFlipToNextPage()) {
+ getContainer().showPage(getNextPage());
+ }
+ }
+ });
+
+ setControl(comp);
+ }
+
+ @Override
+ public void dispose() {
+ for (TableItem item : table.getItems()) {
+ Object obj = item.getData();
+ if (obj instanceof Wizard) {
+ ((Wizard) obj).dispose();
+ }
+ }
+ super.dispose();
+ }
+
+ public ImageDescriptor getDescriptionImage(IConfigurationElement element) {
+ String descImage = element.getAttribute("icon"); //$NON-NLS-1$
+ if (descImage == null) {
+ return null;
+ }
+ return AbstractUIPlugin.imageDescriptorFromPlugin(element.getNamespaceIdentifier(), descImage);
+ }
+
+ @Override
+ public boolean canFlipToNextPage() {
+ return table.getSelectionIndex() >= 0;
+ }
+
+ @Override
+ public IWizardPage getNextPage() {
+ int i = table.getSelectionIndex();
+ if (i >= 0) {
+ TableItem item = table.getItem(i);
+ Object obj = item.getData();
+ Wizard nextWizard;
+ if (obj instanceof IConfigurationElement) {
+ IConfigurationElement element = (IConfigurationElement) obj;
+ try {
+ nextWizard = (Wizard) element.createExecutableExtension("class"); //$NON-NLS-1$
+ nextWizard.addPages();
+ if (nextWizard instanceof IWorkbenchWizard) {
+ ((IWorkbenchWizard) nextWizard).init(PlatformUI.getWorkbench(), new StructuredSelection());
+ }
+ item.setData(nextWizard);
+ } catch (CoreException e) {
+ Activator.log(e);
+ return null;
+ }
+ } else {
+ nextWizard = (Wizard) obj;
+ }
+
+ return nextWizard.getStartingPage();
+ }
+ return super.getNextPage();
+ }
+
+}
diff --git a/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/target/ILaunchTargetUIManager.java b/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/target/ILaunchTargetUIManager.java
new file mode 100644
index 00000000000..981f0e5b70b
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/target/ILaunchTargetUIManager.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.launchbar.ui.target;
+
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.launchbar.core.target.ILaunchTarget;
+import org.eclipse.ui.wizards.IWizardDescriptor;
+
+/**
+ * A manager for the launch target UI.
+ */
+public interface ILaunchTargetUIManager {
+
+ /**
+ * Return a label provider that gives the test and image for the target.
+ *
+ * @param target
+ * the launch target
+ * @return the label provider for the launch target
+ */
+ ILabelProvider getLabelProvider(ILaunchTarget target);
+
+ /**
+ * @deprecated this should never have been in the interface, now returns null
+ * @return null
+ */
+ @Deprecated
+ public IWizardDescriptor[] getLaunchTargetWizards();
+
+ /**
+ * Open a dialog to edit the specified launch target.
+ *
+ * @param target
+ * launch target to edit
+ */
+ void editLaunchTarget(ILaunchTarget target);
+
+}
diff --git a/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/target/LaunchTargetWizard.java b/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/target/LaunchTargetWizard.java
new file mode 100644
index 00000000000..18aa90d7fce
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/target/LaunchTargetWizard.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2017 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.launchbar.ui.target;
+
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.launchbar.core.target.ILaunchTarget;
+
+public abstract class LaunchTargetWizard extends Wizard {
+
+ protected ILaunchTarget launchTarget;
+
+ public void setLaunchTarget(ILaunchTarget launchTarget) {
+ this.launchTarget = launchTarget;
+ }
+
+ public ILaunchTarget getLaunchTarget() {
+ return launchTarget;
+ }
+
+ public boolean canDelete() {
+ return false;
+ }
+
+ public void performDelete() {
+ // do nothing by default
+ }
+
+}
diff --git a/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/target/NewLaunchTargetWizardAction.java b/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/target/NewLaunchTargetWizardAction.java
new file mode 100644
index 00000000000..49ff4025ab7
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/target/NewLaunchTargetWizardAction.java
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * Copyright (c) 2017 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.launchbar.ui.target;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.launchbar.ui.internal.target.NewLaunchTargetWizard;
+import org.eclipse.ui.PlatformUI;
+
+/**
+ * Open the new launch target wizard.
+ */
+public class NewLaunchTargetWizardAction extends Action {
+
+ @Override
+ public void run() {
+ Wizard wizard = new NewLaunchTargetWizard();
+ new WizardDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), wizard).open();
+ }
+
+}
diff --git a/launchbar/org.eclipse.launchbar/.project b/launchbar/org.eclipse.launchbar/.project
new file mode 100644
index 00000000000..493b389be33
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.launchbar-feature</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.pde.FeatureBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.FeatureNature</nature>
+ </natures>
+</projectDescription>
diff --git a/launchbar/org.eclipse.launchbar/.settings/org.eclipse.core.resources.prefs b/launchbar/org.eclipse.launchbar/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/launchbar/org.eclipse.launchbar/about.html b/launchbar/org.eclipse.launchbar/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/launchbar/org.eclipse.launchbar/build.properties b/launchbar/org.eclipse.launchbar/build.properties
new file mode 100644
index 00000000000..ade11de0837
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar/build.properties
@@ -0,0 +1,15 @@
+###############################################################################
+# Copyright (c) 2014 QNX and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# QNX - initial API and implementation
+###############################################################################
+bin.includes = feature.xml,\
+ feature.properties
diff --git a/launchbar/org.eclipse.launchbar/feature.properties b/launchbar/org.eclipse.launchbar/feature.properties
new file mode 100644
index 00000000000..abdbebf2f4b
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar/feature.properties
@@ -0,0 +1,36 @@
+###############################################################################
+# Copyright (c) 2005, 2010 IBM Corporation and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# IBM Corporation - initial API and implementation
+###############################################################################
+# features.properties
+# contains externalized strings for feature.xml
+# "%foo" in feature.xml corresponds to the key "foo" in this file
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file should be translated.
+
+# "featureName" property - name of the feature
+featureName=LaunchBar
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse CDT
+
+# "description" property - description of the feature
+description=A Tool Control that sits in the TOP trim bar that controls build and launch.
+
+# copyright
+copyright=\
+Copyright (c) 2014 QNX Software Systems and others\n\
+This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License 2.0\n\
+which accompanies this distribution, and is available at\n\
+https://www.eclipse.org/legal/epl-2.0/
+
diff --git a/launchbar/org.eclipse.launchbar/feature.xml b/launchbar/org.eclipse.launchbar/feature.xml
new file mode 100644
index 00000000000..9794e85e687
--- /dev/null
+++ b/launchbar/org.eclipse.launchbar/feature.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2014, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
+<feature
+ id="org.eclipse.launchbar"
+ label="%featureName"
+ version="10.7.0.qualifier"
+ provider-name="%providerName"
+ plugin="org.eclipse.launchbar.ui"
+ license-feature="org.eclipse.license"
+ license-feature-version="0.0.0">
+
+ <description>
+ %description
+ </description>
+
+ <copyright>
+ %copyright
+ </copyright>
+
+ <license url="%licenseURL">
+ %license
+ </license>
+
+ <plugin
+ id="org.eclipse.launchbar.core"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.launchbar.ui"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.launchbar.ui.controls"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+</feature>
diff --git a/launchbar/pom.xml b/launchbar/pom.xml
new file mode 100644
index 00000000000..1b6ac0ace57
--- /dev/null
+++ b/launchbar/pom.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2017, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
+<project
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+ xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.cdt</groupId>
+ <artifactId>cdt-parent</artifactId>
+ <version>10.7.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>org.eclipse.cdt.launchbar-parent</artifactId>
+ <packaging>pom</packaging>
+</project>
diff --git a/llvm/org.eclipse.cdt.llvm.dsf.lldb-feature/.settings/org.eclipse.core.resources.prefs b/llvm/org.eclipse.cdt.llvm.dsf.lldb-feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/llvm/org.eclipse.cdt.llvm.dsf.lldb-feature/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/llvm/org.eclipse.cdt.llvm.dsf.lldb-feature/feature.xml b/llvm/org.eclipse.cdt.llvm.dsf.lldb-feature/feature.xml
index d0e6c6dfeaa..35eed519e45 100644
--- a/llvm/org.eclipse.cdt.llvm.dsf.lldb-feature/feature.xml
+++ b/llvm/org.eclipse.cdt.llvm.dsf.lldb-feature/feature.xml
@@ -1,9 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2016, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<feature
id="org.eclipse.cdt.llvm.dsf.lldb"
label="%featureName"
- version="9.10.0.qualifier"
+ version="10.7.0.qualifier"
provider-name="%providerName"
+ plugin="org.eclipse.cdt.llvm.dsf.lldb.ui"
license-feature="org.eclipse.license"
license-feature-version="0.0.0">
diff --git a/llvm/org.eclipse.cdt.llvm.dsf.lldb.core/.classpath b/llvm/org.eclipse.cdt.llvm.dsf.lldb.core/.classpath
index eca7bdba8f0..e801ebfb468 100644
--- a/llvm/org.eclipse.cdt.llvm.dsf.lldb.core/.classpath
+++ b/llvm/org.eclipse.cdt.llvm.dsf.lldb.core/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/llvm/org.eclipse.cdt.llvm.dsf.lldb.core/.settings/org.eclipse.core.resources.prefs b/llvm/org.eclipse.cdt.llvm.dsf.lldb.core/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/llvm/org.eclipse.cdt.llvm.dsf.lldb.core/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/llvm/org.eclipse.cdt.llvm.dsf.lldb.core/.settings/org.eclipse.jdt.core.prefs b/llvm/org.eclipse.cdt.llvm.dsf.lldb.core/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/llvm/org.eclipse.cdt.llvm.dsf.lldb.core/.settings/org.eclipse.jdt.core.prefs
+++ b/llvm/org.eclipse.cdt.llvm.dsf.lldb.core/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/llvm/org.eclipse.cdt.llvm.dsf.lldb.core/.settings/org.eclipse.jdt.ui.prefs b/llvm/org.eclipse.cdt.llvm.dsf.lldb.core/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/llvm/org.eclipse.cdt.llvm.dsf.lldb.core/.settings/org.eclipse.jdt.ui.prefs
+++ b/llvm/org.eclipse.cdt.llvm.dsf.lldb.core/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/llvm/org.eclipse.cdt.llvm.dsf.lldb.core/META-INF/MANIFEST.MF b/llvm/org.eclipse.cdt.llvm.dsf.lldb.core/META-INF/MANIFEST.MF
index c45ed6ab50a..2de589f7323 100644
--- a/llvm/org.eclipse.cdt.llvm.dsf.lldb.core/META-INF/MANIFEST.MF
+++ b/llvm/org.eclipse.cdt.llvm.dsf.lldb.core/META-INF/MANIFEST.MF
@@ -3,8 +3,8 @@ Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-Vendor: %providerName
Bundle-SymbolicName: org.eclipse.cdt.llvm.dsf.lldb.core;singleton:=true
-Bundle-Version: 1.100.0.qualifier
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-Version: 1.101.200.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-Localization: plugin
Require-Bundle: org.eclipse.debug.core,
org.eclipse.cdt.dsf.gdb,
diff --git a/llvm/org.eclipse.cdt.llvm.dsf.lldb.core/about.html b/llvm/org.eclipse.cdt.llvm.dsf.lldb.core/about.html
index 164f781a8fd..b3134865230 100644
--- a/llvm/org.eclipse.cdt.llvm.dsf.lldb.core/about.html
+++ b/llvm/org.eclipse.cdt.llvm.dsf.lldb.core/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/llvm/org.eclipse.cdt.llvm.dsf.lldb.core/src/org/eclipse/cdt/llvm/dsf/lldb/core/internal/launching/LLDBLaunch.java b/llvm/org.eclipse.cdt.llvm.dsf.lldb.core/src/org/eclipse/cdt/llvm/dsf/lldb/core/internal/launching/LLDBLaunch.java
index 62f645a6780..b4f75892adc 100644
--- a/llvm/org.eclipse.cdt.llvm.dsf.lldb.core/src/org/eclipse/cdt/llvm/dsf/lldb/core/internal/launching/LLDBLaunch.java
+++ b/llvm/org.eclipse.cdt.llvm.dsf.lldb.core/src/org/eclipse/cdt/llvm/dsf/lldb/core/internal/launching/LLDBLaunch.java
@@ -18,6 +18,7 @@ import java.io.InputStreamReader;
import java.io.Reader;
import java.text.MessageFormat;
import java.util.HashSet;
+import java.util.Optional;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -57,9 +58,9 @@ public class LLDBLaunch extends GdbLaunch {
private static final Pattern LLDB_REVISION_PATTERN = Pattern.compile("lldb-(\\d+)\\.(\\d+)\\.(\\d+)(\\.(\\d)+)?.*", //$NON-NLS-1$
Pattern.DOTALL);
- private IntegerTuple fLldbVersion;
- private IntegerTuple fLldbRevision;
- private Set<LLDBTrait> fTraits;
+ private Optional<IntegerTuple> fLldbVersion;
+ private Optional<IntegerTuple> fLldbRevision;
+ private Set<LLDBTrait> fTraits = new HashSet<>();
/**
* Constructs a launch.
@@ -125,15 +126,16 @@ public class LLDBLaunch extends GdbLaunch {
public String getGDBVersion() throws CoreException {
String gdbVersion = super.getGDBVersion();
computeLLDBVersions();
- if (fLldbRevision != null) {
- if (fLldbRevision.compareTo(LLDB_MINIMUM_REVISION) < 0) {
- throw new DebugException(LLDBCorePlugin.createStatus(MessageFormat.format(
- Messages.LLDBLaunch_minimum_version_error, fLldbRevision, LLDB_MINIMUM_REVISION, XCODE_HINT)));
+ if (fLldbRevision.isPresent()) {
+ if (fLldbRevision.get().compareTo(LLDB_MINIMUM_REVISION) < 0) {
+ throw new DebugException(
+ LLDBCorePlugin.createStatus(MessageFormat.format(Messages.LLDBLaunch_minimum_version_error,
+ fLldbRevision.get(), LLDB_MINIMUM_REVISION, XCODE_HINT)));
}
- } else if (fLldbVersion != null) {
- if (fLldbVersion.compareTo(LLDB_MINIMUM_VERSION) < 0) {
- throw new DebugException(LLDBCorePlugin.createStatus(MessageFormat
- .format(Messages.LLDBLaunch_minimum_version_error, fLldbVersion, LLDB_MINIMUM_VERSION, ""))); //$NON-NLS-1$
+ } else if (fLldbVersion.isPresent()) {
+ if (fLldbVersion.get().compareTo(LLDB_MINIMUM_VERSION) < 0) {
+ throw new DebugException(LLDBCorePlugin.createStatus(MessageFormat.format(
+ Messages.LLDBLaunch_minimum_version_error, fLldbVersion.get(), LLDB_MINIMUM_VERSION, ""))); //$NON-NLS-1$
}
}
@@ -145,9 +147,14 @@ public class LLDBLaunch extends GdbLaunch {
return;
}
+ // Initialize to non-null here so that we don't try to retrieve the version and spawn a process repeatedly.
+ fLldbRevision = Optional.empty();
+ fLldbVersion = Optional.empty();
+
// LLDB-MI always outputs the GDB version so try LLDB (non-MI)
// FIXME: There should be a better way to get the lldb version number
- // from lldb-mi
+ // from lldb-mi because "lldb" is not guaranteed to be next to lldb-mi.
+ // (Especially since Xcode doesn't include lldb-mi anymore).
IPath lldbMiPath = getGDBPath();
String lastSegment = lldbMiPath.lastSegment();
if (lastSegment.contains(ILLDBConstants.LLDB_MI_EXECUTABLE_NAME)) {
@@ -189,7 +196,7 @@ public class LLDBLaunch extends GdbLaunch {
fLldbVersion = getLLDBVersionFromText(streamOutput);
fLldbRevision = getLLDBRevisionFromText(streamOutput);
- if (fLldbVersion == null && fLldbRevision == null) {
+ if (fLldbVersion.isEmpty() && fLldbRevision.isEmpty()) {
if (!streamOutput.isEmpty()) {
// We got some output but couldn't parse it. Make that
// output visible to the user in the error dialog.
@@ -224,33 +231,29 @@ public class LLDBLaunch extends GdbLaunch {
}
private void computeTraits() {
- if (fTraits == null) {
- fTraits = new HashSet<>();
-
- // Here are some LLDB/Xcode version mappings
- // 360.1.65 => Xcode 8.1.0
- // 360.1.70 => Xcode 8.2.1, 8.2.0
- // 370.0.37 => Xcode 8.3.0
- // 370.0.40 => Xcode 8.3.1
- // 902.0.79.7 => Xcode 9.4.1
- // 1000.11.37.1 => Xcode 10.0
- // 1100.0.28.19 => Xcode 11.1 (lldb-mi not included anymore)
- //
- // Note that a LLDB built from source on macOS can report the same
- // Apple-style version even for different LLDB/Clang-style version
- // For example, 3.9.1 and 4.0.0 both report 360.99.0, how
- // inconvenient! But this will only affect people building it from
- // source, not LLDB included in Xcode.
-
- if (fLldbVersion != null && fLldbVersion.compareTo(new IntegerTuple(4, 0, 0)) < 0
- || fLldbRevision != null && fLldbRevision.compareTo(new IntegerTuple(370, 0, 37)) < 0) {
- fTraits.add(LLDBTrait.BROKEN_BREAKPOINT_INSERT_FULL_PATH_LLVM_BUG_28709);
- }
+ // Here are some LLDB/Xcode version mappings
+ // 360.1.65 => Xcode 8.1.0
+ // 360.1.70 => Xcode 8.2.1, 8.2.0
+ // 370.0.37 => Xcode 8.3.0
+ // 370.0.40 => Xcode 8.3.1
+ // 902.0.79.7 => Xcode 9.4.1
+ // 1000.11.37.1 => Xcode 10.0
+ // 1100.0.28.19 => Xcode 11.1 (lldb-mi not included anymore)
+ //
+ // Note that a LLDB built from source on macOS can report the same
+ // Apple-style version even for different LLDB/Clang-style version
+ // For example, 3.9.1 and 4.0.0 both report 360.99.0, how
+ // inconvenient! But this will only affect people building it from
+ // source, not LLDB included in Xcode.
+
+ if (fLldbVersion.isPresent() && fLldbVersion.get().compareTo(new IntegerTuple(4, 0, 0)) < 0
+ || fLldbRevision.isPresent() && fLldbRevision.get().compareTo(new IntegerTuple(370, 0, 37)) < 0) {
+ fTraits.add(LLDBTrait.BROKEN_BREAKPOINT_INSERT_FULL_PATH_LLVM_BUG_28709);
+ }
- if (fLldbVersion != null && fLldbVersion.compareTo(new IntegerTuple(8, 0, 0)) < 0
- || fLldbRevision != null) {
- fTraits.add(LLDBTrait.MISSING_GDB_SET_BREAKPOINT_PENDING);
- }
+ if (fLldbVersion.isPresent() && fLldbVersion.get().compareTo(new IntegerTuple(8, 0, 0)) < 0
+ || fLldbRevision.isPresent()) {
+ fTraits.add(LLDBTrait.MISSING_GDB_SET_BREAKPOINT_PENDING);
}
}
@@ -340,14 +343,14 @@ public class LLDBLaunch extends GdbLaunch {
* @return String representation of revision of lldb such as "350.0.21.9" on
* success; null otherwise.
*/
- private static IntegerTuple getLLDBRevisionFromText(String versionOutput) {
+ private static Optional<IntegerTuple> getLLDBRevisionFromText(String versionOutput) {
// These are the LLDB version patterns I have seen up to now
// Apple Xcode 7.3.1: lldb-350.0.21.9
// LLVM build: lldb-360.99.0
Matcher matcher = LLDB_REVISION_PATTERN.matcher(versionOutput);
if (!matcher.matches()) {
- return null;
+ return Optional.empty();
}
try {
@@ -357,14 +360,14 @@ public class LLDBLaunch extends GdbLaunch {
String patchGroup = matcher.group(5);
if (patchGroup != null) {
Integer patch = Integer.valueOf(patchGroup);
- return new IntegerTuple(major, minor, micro, patch);
+ return Optional.of(new IntegerTuple(major, minor, micro, patch));
} else {
- return new IntegerTuple(major, minor, micro);
+ return Optional.of(new IntegerTuple(major, minor, micro));
}
} catch (NumberFormatException e) {
LLDBCorePlugin.log(e);
}
- return null;
+ return Optional.empty();
}
/**
@@ -375,14 +378,14 @@ public class LLDBLaunch extends GdbLaunch {
* @return String representation of version of lldb such as "3.9.0" on
* success; null otherwise.
*/
- private static IntegerTuple getLLDBVersionFromText(String versionOutput) {
+ private static Optional<IntegerTuple> getLLDBVersionFromText(String versionOutput) {
// These are the LLDB version patterns I have seen up to now
// Ubuntu 14.04: lldb version 3.6.0 ( revision )
// Ubuntu 14.04: lldb version 3.8.0 ( revision )
Matcher matcher = LLDB_VERSION_PATTERN.matcher(versionOutput);
if (!matcher.find()) {
- return null;
+ return Optional.empty();
}
try {
@@ -390,11 +393,11 @@ public class LLDBLaunch extends GdbLaunch {
Integer minor = Integer.valueOf(matcher.group(2));
Integer micro = Integer.valueOf(matcher.group(3));
IntegerTuple version = new IntegerTuple(major, minor, micro);
- return version;
+ return Optional.of(version);
} catch (NumberFormatException e) {
LLDBCorePlugin.log(e);
}
- return null;
+ return Optional.empty();
}
private static String getDefaultLLDBPath() {
diff --git a/llvm/org.eclipse.cdt.llvm.dsf.lldb.core/src/org/eclipse/cdt/llvm/dsf/lldb/core/internal/launching/LLDBLaunchDelegate.java b/llvm/org.eclipse.cdt.llvm.dsf.lldb.core/src/org/eclipse/cdt/llvm/dsf/lldb/core/internal/launching/LLDBLaunchDelegate.java
index 54c27cb6c53..d88117a5f8c 100644
--- a/llvm/org.eclipse.cdt.llvm.dsf.lldb.core/src/org/eclipse/cdt/llvm/dsf/lldb/core/internal/launching/LLDBLaunchDelegate.java
+++ b/llvm/org.eclipse.cdt.llvm.dsf.lldb.core/src/org/eclipse/cdt/llvm/dsf/lldb/core/internal/launching/LLDBLaunchDelegate.java
@@ -16,8 +16,10 @@ import org.eclipse.cdt.dsf.gdb.launching.GdbLaunch;
import org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate;
import org.eclipse.cdt.llvm.dsf.lldb.core.internal.service.LLDBServiceFactory;
import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.debug.core.model.ISourceLocator;
+import org.eclipse.osgi.util.NLS;
/**
* A specific LLDB launch delegate that allows customization such as setting the
@@ -44,16 +46,14 @@ public class LLDBLaunchDelegate extends GdbLaunchDelegate {
super(requireCProject);
}
- /*
- * TODO: The fact that both getCLILabel and GdbLaunch.getGDBPath have to be
- * overridden and made consistent seems error prone. getCLILabel should call
- * GdbLaunch.getGDBPath somehow by default. This is something that should be
- * looked into in dsf-gdb.
- */
@Override
- protected String getCLILabel(ILaunchConfiguration config, String gdbVersion) throws CoreException {
- return LLDBLaunch.getLLDBPath(config).toString().trim() + " (" + Messages.LLDBLaunchDelegate_mimicking_gdb //$NON-NLS-1$
- + " gdb " + gdbVersion + ")"; //$NON-NLS-1$ //$NON-NLS-2$
+ protected String getCLILabel(GdbLaunch launch, ILaunchConfiguration config, String gdbVersion)
+ throws CoreException {
+ IPath path = launch.getGDBPath();
+ if (path == null) {
+ path = LLDBLaunch.getLLDBPath(config);
+ }
+ return NLS.bind(Messages.LLDBLaunchDelegate_cli_label, path.toString().trim(), gdbVersion);
}
@Override
diff --git a/llvm/org.eclipse.cdt.llvm.dsf.lldb.core/src/org/eclipse/cdt/llvm/dsf/lldb/core/internal/launching/Messages.java b/llvm/org.eclipse.cdt.llvm.dsf.lldb.core/src/org/eclipse/cdt/llvm/dsf/lldb/core/internal/launching/Messages.java
index af30fab8fc9..e76bcfe157f 100644
--- a/llvm/org.eclipse.cdt.llvm.dsf.lldb.core/src/org/eclipse/cdt/llvm/dsf/lldb/core/internal/launching/Messages.java
+++ b/llvm/org.eclipse.cdt.llvm.dsf.lldb.core/src/org/eclipse/cdt/llvm/dsf/lldb/core/internal/launching/Messages.java
@@ -20,7 +20,7 @@ import org.eclipse.osgi.util.NLS;
public class Messages extends NLS {
private static final String BUNDLE_NAME = "org.eclipse.cdt.llvm.dsf.lldb.core.internal.launching.messages"; //$NON-NLS-1$
public static String LLDBLaunch_minimum_version_error;
- public static String LLDBLaunchDelegate_mimicking_gdb;
+ public static String LLDBLaunchDelegate_cli_label;
static {
// initialize resource bundle
NLS.initializeMessages(BUNDLE_NAME, Messages.class);
diff --git a/llvm/org.eclipse.cdt.llvm.dsf.lldb.core/src/org/eclipse/cdt/llvm/dsf/lldb/core/internal/launching/messages.properties b/llvm/org.eclipse.cdt.llvm.dsf.lldb.core/src/org/eclipse/cdt/llvm/dsf/lldb/core/internal/launching/messages.properties
index 9ad5ca5bb61..1bd9515ec87 100644
--- a/llvm/org.eclipse.cdt.llvm.dsf.lldb.core/src/org/eclipse/cdt/llvm/dsf/lldb/core/internal/launching/messages.properties
+++ b/llvm/org.eclipse.cdt.llvm.dsf.lldb.core/src/org/eclipse/cdt/llvm/dsf/lldb/core/internal/launching/messages.properties
@@ -10,4 +10,4 @@
###############################################################################
LLDBLaunch_minimum_version_error=The lldb debugger does not meet the minimum version requirement. Current: {0}, required: {1} {2}.
-LLDBLaunchDelegate_mimicking_gdb=mimicking
+LLDBLaunchDelegate_cli_label={0} (mimicking gdb {1})
diff --git a/llvm/org.eclipse.cdt.llvm.dsf.lldb.ui/.classpath b/llvm/org.eclipse.cdt.llvm.dsf.lldb.ui/.classpath
index 22f30643cba..e801ebfb468 100644
--- a/llvm/org.eclipse.cdt.llvm.dsf.lldb.ui/.classpath
+++ b/llvm/org.eclipse.cdt.llvm.dsf.lldb.ui/.classpath
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/llvm/org.eclipse.cdt.llvm.dsf.lldb.ui/.settings/org.eclipse.core.resources.prefs b/llvm/org.eclipse.cdt.llvm.dsf.lldb.ui/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/llvm/org.eclipse.cdt.llvm.dsf.lldb.ui/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/llvm/org.eclipse.cdt.llvm.dsf.lldb.ui/.settings/org.eclipse.jdt.core.prefs b/llvm/org.eclipse.cdt.llvm.dsf.lldb.ui/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/llvm/org.eclipse.cdt.llvm.dsf.lldb.ui/.settings/org.eclipse.jdt.core.prefs
+++ b/llvm/org.eclipse.cdt.llvm.dsf.lldb.ui/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/llvm/org.eclipse.cdt.llvm.dsf.lldb.ui/.settings/org.eclipse.jdt.ui.prefs b/llvm/org.eclipse.cdt.llvm.dsf.lldb.ui/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/llvm/org.eclipse.cdt.llvm.dsf.lldb.ui/.settings/org.eclipse.jdt.ui.prefs
+++ b/llvm/org.eclipse.cdt.llvm.dsf.lldb.ui/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/llvm/org.eclipse.cdt.llvm.dsf.lldb.ui/META-INF/MANIFEST.MF b/llvm/org.eclipse.cdt.llvm.dsf.lldb.ui/META-INF/MANIFEST.MF
index 589ac4a3711..fe24e063e0b 100644
--- a/llvm/org.eclipse.cdt.llvm.dsf.lldb.ui/META-INF/MANIFEST.MF
+++ b/llvm/org.eclipse.cdt.llvm.dsf.lldb.ui/META-INF/MANIFEST.MF
@@ -3,8 +3,8 @@ Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-Vendor: %providerName
Bundle-SymbolicName: org.eclipse.cdt.llvm.dsf.lldb.ui;singleton:=true
-Bundle-Version: 1.0.100.qualifier
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-Version: 1.1.300.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-Localization: plugin
Require-Bundle: org.eclipse.cdt.debug.ui,
org.eclipse.cdt.dsf.gdb.ui,
diff --git a/llvm/org.eclipse.cdt.llvm.dsf.lldb.ui/about.html b/llvm/org.eclipse.cdt.llvm.dsf.lldb.ui/about.html
index 164f781a8fd..b3134865230 100644
--- a/llvm/org.eclipse.cdt.llvm.dsf.lldb.ui/about.html
+++ b/llvm/org.eclipse.cdt.llvm.dsf.lldb.ui/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/llvm/org.eclipse.cdt.llvm.dsf.lldb.ui/about.ini b/llvm/org.eclipse.cdt.llvm.dsf.lldb.ui/about.ini
new file mode 100644
index 00000000000..e07a7bb377e
--- /dev/null
+++ b/llvm/org.eclipse.cdt.llvm.dsf.lldb.ui/about.ini
@@ -0,0 +1,24 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%blurb
+
+# Property "windowImage" contains path to window icon (16x16)
+# needed for primary features only
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=cdt_logo_icon32.png
+
+# Property "aboutImage" contains path to product image (500x330 or 115x164)
+# needed for primary features only
+
+# Property "appName" contains name of the application (translated)
+# needed for primary features only
+
+# Property "welcomePerspective" contains the id of the perspective in which the
+# welcome page is to be opened.
+# optional
diff --git a/llvm/org.eclipse.cdt.llvm.dsf.lldb.ui/about.mappings b/llvm/org.eclipse.cdt.llvm.dsf.lldb.ui/about.mappings
new file mode 100644
index 00000000000..936a8039c3e
--- /dev/null
+++ b/llvm/org.eclipse.cdt.llvm.dsf.lldb.ui/about.mappings
@@ -0,0 +1,9 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+# The following should contain the build version.
+# e.g. "0=20200106-1728"
+# This value will be added automatically via the build scripts
+0=${buildId}
diff --git a/llvm/org.eclipse.cdt.llvm.dsf.lldb.ui/about.properties b/llvm/org.eclipse.cdt.llvm.dsf.lldb.ui/about.properties
new file mode 100644
index 00000000000..e27e0dca85f
--- /dev/null
+++ b/llvm/org.eclipse.cdt.llvm.dsf.lldb.ui/about.properties
@@ -0,0 +1,32 @@
+###############################################################################
+# Copyright (c) 2016, 2022 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+# about.properties
+# contains externalized strings for about.ini
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# fill-ins are supplied by about.mappings
+# This file should be translated.
+# NOTE TO TRANSLATOR: Please do not translate the featureVersion variable.
+
+
+blurb=C/C++ LLDB Debugger Integration (experimental)\n\
+\n\
+Version: {featureVersion}\n\
+Build id: {0}\n\
+\n\
+Copyright (c) 2016, 2022 Contributors to the Eclipse Foundation
+\n\
+See the NOTICE file(s) distributed with this work for additional\n\
+information regarding copyright ownership.\n\
+\n\
+Visit http://www.eclipse.org/cdt
diff --git a/llvm/org.eclipse.cdt.llvm.dsf.lldb.ui/build.properties b/llvm/org.eclipse.cdt.llvm.dsf.lldb.ui/build.properties
index 2b63999577f..3798be30af3 100644
--- a/llvm/org.eclipse.cdt.llvm.dsf.lldb.ui/build.properties
+++ b/llvm/org.eclipse.cdt.llvm.dsf.lldb.ui/build.properties
@@ -4,5 +4,9 @@ bin.includes = META-INF/,\
.,\
plugin.xml,\
about.html,\
- plugin.properties
+ plugin.properties,\
+ cdt_logo_icon32.png,\
+ about.properties,\
+ about.mappings,\
+ about.ini
src.includes = about.html
diff --git a/llvm/org.eclipse.cdt.llvm.dsf.lldb.ui/cdt_logo_icon32.png b/llvm/org.eclipse.cdt.llvm.dsf.lldb.ui/cdt_logo_icon32.png
new file mode 100644
index 00000000000..470ca81b327
--- /dev/null
+++ b/llvm/org.eclipse.cdt.llvm.dsf.lldb.ui/cdt_logo_icon32.png
Binary files differ
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm-feature/.settings/org.eclipse.core.resources.prefs b/llvm/org.eclipse.cdt.managedbuilder.llvm-feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm-feature/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm-feature/feature.xml b/llvm/org.eclipse.cdt.managedbuilder.llvm-feature/feature.xml
index ab97f9342cf..47fab1aa15f 100644
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm-feature/feature.xml
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm-feature/feature.xml
@@ -1,8 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2013, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<feature
id="org.eclipse.cdt.managedbuilder.llvm"
label="%featureName"
- version="9.10.0.qualifier"
+ version="10.7.0.qualifier"
provider-name="%providerName"
plugin="org.eclipse.cdt.managedbuilder.llvm.ui"
license-feature="org.eclipse.license"
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.tests/.classpath b/llvm/org.eclipse.cdt.managedbuilder.llvm.tests/.classpath
index 707ff80c7a0..a42a828e04a 100644
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.tests/.classpath
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.tests/.classpath
@@ -1,8 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
+ <classpathentry kind="src" path="src">
+ <attributes>
+ <attribute name="test" value="true"/>
+ </attributes>
+ </classpathentry>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.tests/.settings/org.eclipse.core.resources.prefs b/llvm/org.eclipse.cdt.managedbuilder.llvm.tests/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.tests/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.tests/.settings/org.eclipse.jdt.core.prefs b/llvm/org.eclipse.cdt.managedbuilder.llvm.tests/.settings/org.eclipse.jdt.core.prefs
index ad05599159f..5b1c443114d 100644
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.tests/.settings/org.eclipse.jdt.core.prefs
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.tests/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.tests/.settings/org.eclipse.jdt.ui.prefs b/llvm/org.eclipse.cdt.managedbuilder.llvm.tests/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.tests/.settings/org.eclipse.jdt.ui.prefs
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.tests/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.tests/META-INF/MANIFEST.MF b/llvm/org.eclipse.cdt.managedbuilder.llvm.tests/META-INF/MANIFEST.MF
index e65e9c72363..ce66e7528e4 100644
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.tests/META-INF/MANIFEST.MF
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.tests/META-INF/MANIFEST.MF
@@ -7,7 +7,7 @@ Bundle-Activator: org.eclipse.cdt.managedbuilder.llvm.tests.Activator
Bundle-Vendor: %Bundle-Vendor
Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-ActivationPolicy: lazy
Import-Package: junit.framework
Automatic-Module-Name: org.eclipse.cdt.managedbuilder.llvm.tests
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.tests/about.html b/llvm/org.eclipse.cdt.managedbuilder.llvm.tests/about.html
index 164f781a8fd..b3134865230 100644
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.tests/about.html
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.tests/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/.classpath b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/.classpath
index eca7bdba8f0..e801ebfb468 100755..100644
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/.classpath
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/.euml2 b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/.euml2
index c979a4316c7..c979a4316c7 100755..100644
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/.euml2
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/.euml2
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/.project b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/.project
index 7bf5e5da254..7bf5e5da254 100755..100644
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/.project
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/.project
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/.settings/org.eclipse.jdt.core.prefs b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100755..100644
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/.settings/org.eclipse.jdt.core.prefs
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/.settings/org.eclipse.jdt.ui.prefs b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/.settings/org.eclipse.jdt.ui.prefs
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/.umlproject b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/.umlproject
index 30c973c184f..30c973c184f 100755..100644
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/.umlproject
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/.umlproject
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/META-INF/MANIFEST.MF b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/META-INF/MANIFEST.MF
index e3a3b854eca..cc7c7892329 100755..100644
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/META-INF/MANIFEST.MF
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.managedbuilder.llvm.ui;singleton:=true
-Bundle-Version: 1.1.200.qualifier
+Bundle-Version: 1.3.400.qualifier
Bundle-Activator: org.eclipse.cdt.managedbuilder.llvm.ui.LlvmUIPlugin
Bundle-Vendor: %providerName
Bundle-Localization: plugin
@@ -12,7 +12,7 @@ Require-Bundle: org.eclipse.ui,
org.eclipse.cdt.managedbuilder.core,
org.eclipse.cdt.managedbuilder.gnu.ui,
org.eclipse.cdt.core
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-ActivationPolicy: lazy
Export-Package: org.eclipse.cdt.managedbuilder.llvm.makegen;
uses:="org.eclipse.core.runtime,
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/llvm.ui.preferences_package_class_dependencies.ucd b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/llvm.ui.preferences_package_class_dependencies.ucd
index 96dac9898c0..96dac9898c0 100755..100644
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/llvm.ui.preferences_package_class_dependencies.ucd
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/llvm.ui.preferences_package_class_dependencies.ucd
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/llvm.util_package_dependencies.ucd b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/llvm.util_package_dependencies.ucd
index e3e395cdcb8..e3e395cdcb8 100755..100644
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/llvm.util_package_dependencies.ucd
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/llvm.util_package_dependencies.ucd
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/llvm_package_dependencies.ucd b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/llvm_package_dependencies.ucd
index d1c6b67b6d5..d1c6b67b6d5 100755..100644
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/llvm_package_dependencies.ucd
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/llvm_package_dependencies.ucd
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/llvm_packages_with_eclipse_package_dependencies.ucd b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/llvm_packages_with_eclipse_package_dependencies.ucd
index 7c528447692..7c528447692 100755..100644
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/llvm_packages_with_eclipse_package_dependencies.ucd
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/llvm_packages_with_eclipse_package_dependencies.ucd
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/llvm_project_dependencies.ucd b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/llvm_project_dependencies.ucd
index d70eec696fc..d70eec696fc 100755..100644
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/llvm_project_dependencies.ucd
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/llvm_project_dependencies.ucd
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/llvm_project_dependencies_low_level_with_class_dependencies.ucd b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/llvm_project_dependencies_low_level_with_class_dependencies.ucd
index 0ad940ad86e..0ad940ad86e 100755..100644
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/llvm_project_dependencies_low_level_with_class_dependencies.ucd
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/llvm_project_dependencies_low_level_with_class_dependencies.ucd
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/other/Toolchain Inheritance Schema.dia b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/other/Toolchain Inheritance Schema.dia
index 8af0de6dc6f..8af0de6dc6f 100755..100644
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/other/Toolchain Inheritance Schema.dia
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/other/Toolchain Inheritance Schema.dia
Binary files differ
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/other/Toolchain Inheritance Schema.png b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/other/Toolchain Inheritance Schema.png
index d8454f5ff22..d8454f5ff22 100755..100644
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/other/Toolchain Inheritance Schema.png
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/other/Toolchain Inheritance Schema.png
Binary files differ
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/other/buildDefinitions Schema.dia b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/other/buildDefinitions Schema.dia
index 5a0dddc3a3d..5a0dddc3a3d 100755..100644
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/other/buildDefinitions Schema.dia
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/other/buildDefinitions Schema.dia
Binary files differ
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/other/buildDefinitions Schema.png b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/other/buildDefinitions Schema.png
index a665e8823cf..a665e8823cf 100755..100644
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/other/buildDefinitions Schema.png
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/other/buildDefinitions Schema.png
Binary files differ
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/other/llvm.dia b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/other/llvm.dia
index bb1a3a4400a..bb1a3a4400a 100755..100644
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/other/llvm.dia
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/other/llvm.dia
Binary files differ
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/other/llvm.png b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/other/llvm.png
index 81763809d17..81763809d17 100755..100644
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/other/llvm.png
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/other/llvm.png
Binary files differ
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/preferences_package_class_inheritance.ucd b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/preferences_package_class_inheritance.ucd
index 00f57567fd7..00f57567fd7 100755..100644
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/preferences_package_class_inheritance.ucd
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/preferences_package_class_inheritance.ucd
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/readme.txt b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/readme.txt
index 106d3d9484f..106d3d9484f 100755..100644
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/readme.txt
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/UML/readme.txt
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/about.html b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/about.html
index 164f781a8fd..b3134865230 100644
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/about.html
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/about.mappings b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/about.mappings
index 0824105e69d..936a8039c3e 100644
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/about.mappings
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/about.mappings
@@ -4,6 +4,6 @@
# This file does not need to be translated.
# The following should contain the build version.
-# e.g. "0=20020612"
-# This value will be added automaticaly via the build scripts
-0=@build@ \ No newline at end of file
+# e.g. "0=20200106-1728"
+# This value will be added automatically via the build scripts
+0=${buildId}
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/about.properties b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/about.properties
index 079be253ddf..f2133d71480 100644
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/about.properties
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/about.properties
@@ -1,15 +1,15 @@
###############################################################################
-# Copyright (c) 2002, 2009 Wind River Systems and others.
+# Copyright (c) 2013, 2022 Contributors to the Eclipse Foundation
#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
#
-# SPDX-License-Identifier: EPL-2.0
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
#
-# Contributors:
-# Wind River Systems - initial API and implementation
+# SPDX-License-Identifier: EPL-2.0
###############################################################################
# about.properties
# contains externalized strings for about.ini
@@ -18,10 +18,15 @@
# This file should be translated.
# NOTE TO TRANSLATOR: Please do not translate the featureVersion variable.
-blurb=Eclipse CDT P2 Customizations for SDK installation\n\
+
+blurb=C/C++ LLVM-Family Compiler Build Support\n\
\n\
Version: {featureVersion}\n\
Build id: {0}\n\
\n\
-(c) Copyright Eclipse contributors and others, 2000, 2010.\n\
+Copyright (c) 2013, 2022 Contributors to the Eclipse Foundation
+\n\
+See the NOTICE file(s) distributed with this work for additional\n\
+information regarding copyright ownership.\n\
+\n\
Visit http://www.eclipse.org/cdt
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/build.properties b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/build.properties
index 28288d4a0b6..28288d4a0b6 100755..100644
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/build.properties
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/build.properties
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/help/general.html b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/help/general.html
index 2a461924401..2a461924401 100755..100644
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/help/general.html
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/help/general.html
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/help/initial_configuration.html b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/help/initial_configuration.html
index 3b14c092593..3b14c092593 100755..100644
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/help/initial_configuration.html
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/help/initial_configuration.html
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/help/llvm_specific.html b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/help/llvm_specific.html
index bc127ab3990..bc127ab3990 100755..100644
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/help/llvm_specific.html
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/help/llvm_specific.html
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/help/toc.xml b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/help/toc.xml
index cd02aa7ae74..cd02aa7ae74 100755..100644
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/help/toc.xml
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/help/toc.xml
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/help/user_manual.html b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/help/user_manual.html
index 6f6ddc9241f..6f6ddc9241f 100755..100644
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/help/user_manual.html
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/help/user_manual.html
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/patches/CDT_Bug_321040.patch b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/patches/CDT_Bug_321040.patch
index f856ff034ca..f856ff034ca 100755..100644
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/patches/CDT_Bug_321040.patch
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/patches/CDT_Bug_321040.patch
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/patches/MinGW_export_fix.patch b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/patches/MinGW_export_fix.patch
index ec39ddeafd2..ec39ddeafd2 100755..100644
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/patches/MinGW_export_fix.patch
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/patches/MinGW_export_fix.patch
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/patches/readme.txt b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/patches/readme.txt
index a7dd99e52b1..a7dd99e52b1 100755..100644
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/patches/readme.txt
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/patches/readme.txt
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/patches/stack_overflow_fix_bug_317004.patch b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/patches/stack_overflow_fix_bug_317004.patch
index 927e1546a18..927e1546a18 100755..100644
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/patches/stack_overflow_fix_bug_317004.patch
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/patches/stack_overflow_fix_bug_317004.patch
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/plugin.properties b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/plugin.properties
index 82d141adbfe..e75ba9126ad 100755..100644
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/plugin.properties
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/plugin.properties
@@ -120,6 +120,11 @@ Option.Posix.Debug.Max=Maximum (-g3)
Option.Posix.Debug.Other=Other debugging flags
#Option.Posix.Debug.gprof=Generate gprof information (-pg)
#Option.Posix.Debug.prof=Generate prof information (-p)
+Option.Posix.Debug.sanitaddress=Sanitize address (-fsanitize=address)
+Option.Posix.Debug.sanitpointers=Sanitize pointer operations (-fsanitize=pointer-compare -fsanitize=pointer-subtract)
+Option.Posix.Debug.sanitthread=Sanitize data race in multi-thread (-fsanitize=thread)
+Option.Posix.Debug.sanitleak=Sanitize memory leak (-fsanitize=leak)
+Option.Posix.Debug.sanitundefined=Sanitize undefined behavior (-fsanitize=undefined)
Option.Posix.Warn.Syntax=Check syntax only (-fsyntax-only)
Option.Posix.Warn.Pedandic=Pedantic (-pedantic)
@@ -127,6 +132,13 @@ Option.Posix.Warn.PedErrors=Pedantic warnings as errors (-pedantic-errors)
Option.Posix.Warn.nowarn=Inhibit all warnings (-w)
Option.Posix.Warn.allwarn=All warnings (-Wall)
Option.Posix.Warn.toerrs=Warnings as errors (-Werror)
+Option.Posix.Warn.wfloatequal=Direct float equal check (-Wfloat-equal)
+Option.Posix.Warn.wcastalign=Pointer cast with different alignment (-Wcast-align)
+Option.Posix.Warn.wcastqual=Removing type qualifier from cast target type (-Wcast-qual)
+Option.Posix.Warn.woldstylecast=C-style cast used (-Wold-style-cast)
+Option.Posix.Warn.wsignconv=Implicit conversions that may change the sign (-Wsign-conversion)
+Option.Posix.Warn.wundef=An undefined identifier is evaluated in an #if directive (-Wundef)
+Option.Posix.Warn.weffcpp=Effective C++ guidelines (-Weffc++)
Option.Posix.Verbose=Verbose (-v)
Option.OtherFlags=Other flags
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/plugin.xml b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/plugin.xml
index 396d33637f8..8e18a2ae13d 100755..100644
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/plugin.xml
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/plugin.xml
@@ -876,6 +876,46 @@
name="%Option.Posix.Debug.Other"
valueType="string">
</option>
+ <option
+ defaultValue="false"
+ category="llvm.c_cpp.compiler.category.debug"
+ id="llvm.c_cpp.compiler.option.debugging.sanitaddress"
+ command="-fsanitize=address"
+ name="%Option.Posix.Debug.sanitaddress"
+ valueType="boolean">
+ </option>
+ <option
+ defaultValue="false"
+ category="llvm.c_cpp.compiler.category.debug"
+ id="llvm.c_cpp.compiler.option.debugging.sanitpointers"
+ command="-fsanitize=pointer-compare -fsanitize=pointer-subtract"
+ name="%Option.Posix.Debug.sanitpointers"
+ valueType="boolean">
+ </option>
+ <option
+ defaultValue="false"
+ category="llvm.c_cpp.compiler.category.debug"
+ id="llvm.c_cpp.compiler.option.debugging.sanitthread"
+ command="-fsanitize=thread"
+ name="%Option.Posix.Debug.sanitthread"
+ valueType="boolean">
+ </option>
+ <option
+ defaultValue="false"
+ category="llvm.c_cpp.compiler.category.debug"
+ id="llvm.c_cpp.compiler.option.debugging.sanitleak"
+ command="-fsanitize=leak"
+ name="%Option.Posix.Debug.sanitleak"
+ valueType="boolean">
+ </option>
+ <option
+ defaultValue="false"
+ category="llvm.c_cpp.compiler.category.debug"
+ id="llvm.c_cpp.compiler.option.debugging.sanitundefined"
+ command="-fsanitize=undefined"
+ name="%Option.Posix.Debug.sanitundefined"
+ valueType="boolean">
+ </option>
<optionCategory
id="llvm.c_cpp.compiler.category.warnings"
name="%OptionCategory.Warn"
@@ -929,6 +969,62 @@
name="%Option.Posix.Warn.toerrs"
valueType="boolean">
</option>
+ <option
+ category="llvm.c_cpp.compiler.category.warnings"
+ command="-Wfloat-equal"
+ defaultValue="false"
+ id="llvm.c_cpp.compiler.option.warnings.wfloatequal"
+ name="%Option.Posix.Warn.wfloatequal"
+ valueType="boolean">
+ </option>
+ <option
+ category="llvm.c_cpp.compiler.category.warnings"
+ command="-Wcast-align"
+ defaultValue="false"
+ id="llvm.c_cpp.compiler.option.warnings.wcastalign"
+ name="%Option.Posix.Warn.wcastalign"
+ valueType="boolean">
+ </option>
+ <option
+ category="llvm.c_cpp.compiler.category.warnings"
+ command="-Wcast-qual"
+ defaultValue="false"
+ id="llvm.c_cpp.compiler.option.warnings.wcastqual"
+ name="%Option.Posix.Warn.wcastqual"
+ valueType="boolean">
+ </option>
+ <option
+ category="llvm.c_cpp.compiler.category.warnings"
+ command="-Wold-style-cast"
+ defaultValue="false"
+ id="llvm.c_cpp.compiler.option.warnings.woldstylecast"
+ name="%Option.Posix.Warn.woldstylecast"
+ valueType="boolean">
+ </option>
+ <option
+ category="llvm.c_cpp.compiler.category.warnings"
+ command="-Wsign-conversion"
+ defaultValue="false"
+ id="llvm.c_cpp.compiler.option.warnings.wsignconv"
+ name="%Option.Posix.Warn.wsignconv"
+ valueType="boolean">
+ </option>
+ <option
+ category="llvm.c_cpp.compiler.category.warnings"
+ command="-Wundef"
+ defaultValue="false"
+ id="llvm.c_cpp.compiler.option.warnings.wundef"
+ name="%Option.Posix.Warn.wundef"
+ valueType="boolean">
+ </option>
+ <option
+ category="llvm.c_cpp.compiler.category.warnings"
+ command="-Weffc++"
+ defaultValue="false"
+ id="llvm.c_cpp.compiler.option.warnings.weffcpp"
+ name="%Option.Posix.Warn.weffcpp"
+ valueType="boolean">
+ </option>
<optionCategory
id="llvm.c_cpp.compiler.category.other"
name="%OptionCategory.Misc"
@@ -5116,15 +5212,6 @@
</projectType>
</extension>
<extension
- point="org.eclipse.ui.preferencePages">
- <page
- category="org.eclipse.cdt.ui.preferences.CPluginPreferencePage"
- class="org.eclipse.cdt.managedbuilder.llvm.ui.preferences.LlvmPreferencePage"
- id="org.eclipse.cdt.managedbuilder.llvm.ui.preferences.LlvmPreferencePage"
- name="%page.name">
- </page>
- </extension>
- <extension
point="org.eclipse.core.runtime.preferences">
<initializer
class="org.eclipse.cdt.managedbuilder.llvm.ui.preferences.PreferenceInitializer">
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/scripts/find_path.bat b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/scripts/find_path.bat
index b30a8f51ce0..b30a8f51ce0 100644..100755
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/scripts/find_path.bat
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/scripts/find_path.bat
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/scripts/stdlib_path.sh b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/scripts/stdlib_path.sh
index 67a336013cf..67a336013cf 100644..100755
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/scripts/stdlib_path.sh
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/scripts/stdlib_path.sh
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/makegen/LlvmDependencyCalculator2.java b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/makegen/LlvmDependencyCalculator2.java
index 54f801d9d34..54f801d9d34 100755..100644
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/makegen/LlvmDependencyCalculator2.java
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/makegen/LlvmDependencyCalculator2.java
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/makegen/LlvmDependencyCalculator2Commands.java b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/makegen/LlvmDependencyCalculator2Commands.java
index aa349ee11c0..aa349ee11c0 100755..100644
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/makegen/LlvmDependencyCalculator2Commands.java
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/makegen/LlvmDependencyCalculator2Commands.java
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/LlvmBuildEnvironmentVariable.java b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/LlvmBuildEnvironmentVariable.java
index a949b505ea0..a949b505ea0 100755..100644
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/LlvmBuildEnvironmentVariable.java
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/LlvmBuildEnvironmentVariable.java
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/LlvmEnvironmentVariableSupplier.java b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/LlvmEnvironmentVariableSupplier.java
index 4a0aec2207e..4a0aec2207e 100755..100644
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/LlvmEnvironmentVariableSupplier.java
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/LlvmEnvironmentVariableSupplier.java
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/LlvmIsToolChainSupported.java b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/LlvmIsToolChainSupported.java
index 464124e5c9c..464124e5c9c 100755..100644
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/LlvmIsToolChainSupported.java
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/LlvmIsToolChainSupported.java
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/LlvmProjectNature.java b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/LlvmProjectNature.java
index 6d95f5144fe..6d95f5144fe 100755..100644
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/LlvmProjectNature.java
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/LlvmProjectNature.java
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/LlvmUIPlugin.java b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/LlvmUIPlugin.java
index fdcf4fb11ef..9da2773ac61 100755..100644
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/LlvmUIPlugin.java
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/LlvmUIPlugin.java
@@ -20,10 +20,6 @@ import java.util.MissingResourceException;
import java.util.PropertyResourceBundle;
import java.util.ResourceBundle;
-import org.eclipse.cdt.managedbuilder.llvm.util.LlvmResourceListener;
-import org.eclipse.core.resources.IResourceChangeEvent;
-import org.eclipse.core.resources.IResourceChangeListener;
-import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Path;
@@ -54,10 +50,6 @@ public class LlvmUIPlugin extends AbstractUIPlugin {
//Property Resource bundle
private PropertyResourceBundle properties;
- //Resource listeners
- private IResourceChangeListener listener = new LlvmResourceListener();
- private IResourceChangeListener listener2 = new LlvmResourceListener();
-
/**
* Constructor.
*/
@@ -71,9 +63,6 @@ public class LlvmUIPlugin extends AbstractUIPlugin {
super.start(context);
plugin = this;
// LlvmEnvironmentVariableSupplier.initializePaths();
- //add resource change listeners to the workspace
- ResourcesPlugin.getWorkspace().addResourceChangeListener(this.listener, IResourceChangeEvent.PRE_BUILD);
- ResourcesPlugin.getWorkspace().addResourceChangeListener(this.listener2, IResourceChangeEvent.POST_BUILD);
}
@Override
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/preferences/IncludePathListEditor.java b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/preferences/IncludePathListEditor.java
index 5831b3af3ae..5831b3af3ae 100755..100644
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/preferences/IncludePathListEditor.java
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/preferences/IncludePathListEditor.java
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/preferences/LibraryListEditor.java b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/preferences/LibraryListEditor.java
index 9ef50c8c3cb..9ef50c8c3cb 100755..100644
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/preferences/LibraryListEditor.java
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/preferences/LibraryListEditor.java
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/preferences/LibraryPathListEditor.java b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/preferences/LibraryPathListEditor.java
index c31851b3905..c31851b3905 100755..100644
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/preferences/LibraryPathListEditor.java
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/preferences/LibraryPathListEditor.java
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/preferences/LlvmListEditor.java b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/preferences/LlvmListEditor.java
index 5882ebd5205..5882ebd5205 100755..100644
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/preferences/LlvmListEditor.java
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/preferences/LlvmListEditor.java
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/preferences/LlvmPreferencePage.java b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/preferences/LlvmPreferencePage.java
deleted file mode 100755
index 1c5ff6eeceb..00000000000
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/preferences/LlvmPreferencePage.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010-2015 Nokia Siemens Networks Oyj, Finland.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Nokia Siemens Networks - initial implementation
- * Leo Hippelainen - Initial implementation
- * Petri Tuononen - Initial implementation
- *******************************************************************************/
-package org.eclipse.cdt.managedbuilder.llvm.ui.preferences;
-
-import org.eclipse.cdt.managedbuilder.llvm.ui.LlvmUIPlugin;
-import org.eclipse.jface.preference.DirectoryFieldEditor;
-import org.eclipse.jface.preference.FieldEditorPreferencePage;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferencePage;
-
-/**
- * This class represents a preference page that
- * is contributed to the Preferences dialog. By
- * subclassing <samp>FieldEditorPreferencePage</samp>, we
- * can use the field support built into JFace that allows
- * us to create a page that is small and knows how to
- * save, restore and apply itself.
- * <p>
- * This page is used to modify preferences only. They
- * are stored in the preference store that belongs to
- * the main plug-in class. That way, preferences can
- * be accessed directly via the preference store.
- *
- */
-public class LlvmPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {
-
- /**
- * Constructor.
- * Set preference page to use the LLVM preference store.
- */
- public LlvmPreferencePage() {
- setPreferenceStore(LlvmUIPlugin.getDefault().getPreferenceStore());
- setDescription(Messages.LlvmPreferencePage_0);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
- */
- @Override
- public void init(IWorkbench workbench) {
- }
-
- @Override
- /**
- * Get Description name.
- * @param String Description
- */
- public String getDescription() {
- return null;
- }
-
- // @Override
- // public boolean performOk() {
- // //rebuilt the index of all projects
- // IProject[] projects = LlvmToolOptionPathUtil.getProjectsInWorkspace();
- // for (IProject proj : projects) {
- // ProjectIndex.rebuiltIndex(proj);
- // }
- // return true;
- // }
-
- @Override
- /**
- * Creates field editors for the preference page.
- */
- protected void createFieldEditors() {
- //field for installation path
- addField(new DirectoryFieldEditor(PreferenceConstants.P_LLVM_PATH, Messages.LlvmPreferencePage_1,
- getFieldEditorParent()));
- //list editor for include paths
- IncludePathListEditor includePathListEditor = new IncludePathListEditor(PreferenceConstants.P_LLVM_INCLUDE_PATH,
- Messages.LlvmPreferencePage_2, getFieldEditorParent());
- addField(includePathListEditor);
- //list editor for libraries
- LibraryListEditor libraryListEditor = new LibraryListEditor(PreferenceConstants.P_LLVM_LIBRARIES,
- Messages.LlvmPreferencePage_3, getFieldEditorParent());
- addField(libraryListEditor);
- //list editor for library paths
- LibraryPathListEditor libraryPathListEditor = new LibraryPathListEditor(PreferenceConstants.P_LLVM_LIBRARY_PATH,
- Messages.LlvmPreferencePage_4, getFieldEditorParent());
- addField(libraryPathListEditor);
- }
-
-}
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/preferences/LlvmPreferenceStore.java b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/preferences/LlvmPreferenceStore.java
index 82368a98c5f..82368a98c5f 100755..100644
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/preferences/LlvmPreferenceStore.java
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/preferences/LlvmPreferenceStore.java
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/preferences/PreferenceConstants.java b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/preferences/PreferenceConstants.java
index 465042146df..465042146df 100755..100644
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/preferences/PreferenceConstants.java
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/preferences/PreferenceConstants.java
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/preferences/PreferenceInitializer.java b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/preferences/PreferenceInitializer.java
index 2e033096253..2e033096253 100755..100644
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/preferences/PreferenceInitializer.java
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/ui/preferences/PreferenceInitializer.java
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/util/LlvmResourceListener.java b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/util/LlvmResourceListener.java
deleted file mode 100644
index 10ceecfeb08..00000000000
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/util/LlvmResourceListener.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010, 2015 Nokia Siemens Networks Oyj, Finland.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Nokia Siemens Networks - initial implementation
- * Petri Tuononen - Initial implementation
- * Marc-Andre Laperle (Ericsson)
- *******************************************************************************/
-package org.eclipse.cdt.managedbuilder.llvm.util;
-
-import org.eclipse.cdt.managedbuilder.llvm.ui.preferences.LlvmPreferenceStore;
-import org.eclipse.core.resources.IResourceChangeEvent;
-import org.eclipse.core.resources.IResourceChangeListener;
-
-/**
- * Implements Resource listener.
- */
-public class LlvmResourceListener implements IResourceChangeListener {
-
- /**
- * Defines what happens when resources have changed.
- *
- * @param event IResourceChangeEvent
- */
- @Override
- public void resourceChanged(IResourceChangeEvent event) {
-
- if (event.getType() == IResourceChangeEvent.POST_BUILD) { //refresh every project after build
-
- /*
- * FIXME: M-A.L: (Bug 405909) I commented out the refresh code because it was a
- * major performance issue even without LLVM projects in the
- * workspace. Unfortunately, I could not track down the reason as to
- * why there was a refresh in the first the place by looking at the
- * history (git and svn) and by manual testing
- */
-
- // //get all projects
- // IProject[] projects = LlvmToolOptionPathUtil.getProjectsInWorkspace();
- //
- // //refresh the projects
- // for (IProject proj : projects) {
- // try {
- // proj.refreshLocal(IResource.DEPTH_INFINITE, null);
- // } catch (CoreException e) {
- // e.printStackTrace();
- // }
- // }
- } else if (event.getType() == IResourceChangeEvent.PRE_BUILD) {
- String os = System.getProperty("os.name").toLowerCase(); //$NON-NLS-1$
- if (os.indexOf("win") >= 0) { //$NON-NLS-1$
- LlvmPreferenceStore.addMinGWStdLib();
- // LlvmToolOptionPathUtil.addMissingCppIncludesForMingw(); //TODO: Remove when Scanner Discovery has been fixed
- } else if (os.indexOf("nix") >= 0 || os.indexOf("nux") >= 0 /*|| os.indexOf( "mac") >=0 */) { //$NON-NLS-1$ //$NON-NLS-2$
- LlvmPreferenceStore.addStdLibUnix();
- }
-
- /*
- * try to add values (include and library paths and libraries) to
- * projects's build configurations to ensure that newly added projects
- * have necessary paths.
- */
- LlvmToolOptionPathUtil.addAllIncludesToBuildConf();
- LlvmToolOptionPathUtil.addAllLibsToBuildConf();
- LlvmToolOptionPathUtil.addAllLibPathsToBuildConf();
- } else {
- return;
- }
-
- }
-
-} \ No newline at end of file
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/util/LlvmToolOptionPathUtil.java b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/util/LlvmToolOptionPathUtil.java
index 6cbde1e50db..6cbde1e50db 100755..100644
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/util/LlvmToolOptionPathUtil.java
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/util/LlvmToolOptionPathUtil.java
diff --git a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/util/Separators.java b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/util/Separators.java
index e36744830fd..e36744830fd 100755..100644
--- a/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/util/Separators.java
+++ b/llvm/org.eclipse.cdt.managedbuilder.llvm.ui/src/org/eclipse/cdt/managedbuilder/llvm/util/Separators.java
diff --git a/llvm/pom.xml b/llvm/pom.xml
index 183209a7b72..ce6c6cb925c 100644
--- a/llvm/pom.xml
+++ b/llvm/pom.xml
@@ -1,4 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2017, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
@@ -7,7 +17,7 @@
<parent>
<groupId>org.eclipse.cdt</groupId>
<artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
+ <version>10.7.0-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.cdt.llvm-parent</artifactId>
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.feature/.project b/lrparser/org.eclipse.cdt.core.lrparser.feature/.project
deleted file mode 100644
index 96ca112d3b6..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser.feature/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.cdt.core.lrparser.feature</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.pde.FeatureBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.pde.FeatureNature</nature>
- </natures>
-</projectDescription>
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.feature/build.properties b/lrparser/org.eclipse.cdt.core.lrparser.feature/build.properties
deleted file mode 100644
index cae59d603e0..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser.feature/build.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-###############################################################################
-# Copyright (c) 2007, 2008 IBM Corporation and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-bin.includes = feature.xml,\
- feature.properties
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.feature/feature.properties b/lrparser/org.eclipse.cdt.core.lrparser.feature/feature.properties
deleted file mode 100644
index c8755e0b614..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser.feature/feature.properties
+++ /dev/null
@@ -1,36 +0,0 @@
-###############################################################################
-# Copyright (c) 2006, 2010 IBM Corporation and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-# feature.properties
-# contains externalized strings for feature.xml
-# "%foo" in feature.xml corresponds to the key "foo" in this file
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# This file should be translated.
-
-# "featureName" property - name of the feature
-featureName=C/C++ C99 LR Parser
-
-# "providerName" property - name of the company that provides the feature
-providerName=Eclipse CDT
-
-# "description" property - description of the feature
-description=Parser and language support for the C99 variant of the C programming language.
-
-# copyright
-copyright=\
-Copyright (c) 2006, 2011 IBM Corporation and others.\n\
-This program and the accompanying materials\n\
-are made available under the terms of the Eclipse Public License 2.0\n\
-which accompanies this distribution, and is available at\n\
-https://www.eclipse.org/legal/epl-2.0/
-
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.feature/feature.xml b/lrparser/org.eclipse.cdt.core.lrparser.feature/feature.xml
deleted file mode 100644
index 33ff372494b..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser.feature/feature.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
- id="org.eclipse.cdt.core.lrparser.feature"
- label="%featureName"
- version="9.10.0.qualifier"
- provider-name="%providerName"
- plugin="org.eclipse.cdt.core.lrparser"
- license-feature="org.eclipse.license"
- license-feature-version="0.0.0">
-
- <description>
- %description
- </description>
-
- <copyright>
- %copyright
- </copyright>
-
- <license url="%licenseURL">
- %license
- </license>
-
- <plugin
- id="net.sourceforge.lpg.lpgjavaruntime"
- download-size="0"
- install-size="0"
- version="0.0.0"
- unpack="false"/>
-
- <plugin
- id="org.eclipse.cdt.core.lrparser"
- download-size="0"
- install-size="0"
- version="0.0.0"
- unpack="false"/>
-
-</feature>
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.feature/sourceTemplateFeature/p2.inf b/lrparser/org.eclipse.cdt.core.lrparser.feature/sourceTemplateFeature/p2.inf
deleted file mode 100644
index b96f60ebe47..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser.feature/sourceTemplateFeature/p2.inf
+++ /dev/null
@@ -1 +0,0 @@
-update.matchExp=providedCapabilities.exists(pc | pc.namespace == 'org.eclipse.equinox.p2.iu' && (pc.name == 'org.eclipse.cdt.core.lrparser.source.feature.group' || pc.name == 'org.eclipse.cdt.core.lrparser.feature.source.feature.group'))
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.sdk.feature/.project b/lrparser/org.eclipse.cdt.core.lrparser.sdk.feature/.project
deleted file mode 100644
index a3acfb34d6e..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser.sdk.feature/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.cdt.core.lrparser.sdk.feature</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.pde.FeatureBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.pde.FeatureNature</nature>
- </natures>
-</projectDescription>
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.sdk.feature/build.properties b/lrparser/org.eclipse.cdt.core.lrparser.sdk.feature/build.properties
deleted file mode 100644
index 9fb4480816a..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser.sdk.feature/build.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-###############################################################################
-# Copyright (c) 2009 IBM Corporation and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-bin.includes = feature.xml,\
- feature.properties
-
-generate.feature@org.eclipse.cdt.core.lrparser.source = org.eclipse.cdt.core.lrparser.feature
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.sdk.feature/feature-no-source.properties b/lrparser/org.eclipse.cdt.core.lrparser.sdk.feature/feature-no-source.properties
deleted file mode 100644
index 8c2b2f70c57..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser.sdk.feature/feature-no-source.properties
+++ /dev/null
@@ -1 +0,0 @@
-# This file tells the Maven build to not generate sources for this feature
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.sdk.feature/feature.properties b/lrparser/org.eclipse.cdt.core.lrparser.sdk.feature/feature.properties
deleted file mode 100644
index dd4f016fcc7..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser.sdk.feature/feature.properties
+++ /dev/null
@@ -1,36 +0,0 @@
-###############################################################################
-# Copyright (c) 2009, 2010 IBM Corporation and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-# feature.properties
-# contains externalized strings for feature.xml
-# "%foo" in feature.xml corresponds to the key "foo" in this file
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# This file should be translated.
-
-# "featureName" property - name of the feature
-featureName=C/C++ C99 LR Parser SDK
-
-# "providerName" property - name of the company that provides the feature
-providerName=Eclipse CDT
-
-# "description" property - description of the feature
-description=Parser and language support for the C99 variant of the C programming language. Software development kit including source code and developer documentation.
-
-# copyright
-copyright=\
-Copyright (c) 2006, 2011 IBM Corporation and others.\n\
-This program and the accompanying materials\n\
-are made available under the terms of the Eclipse Public License 2.0\n\
-which accompanies this distribution, and is available at\n\
-https://www.eclipse.org/legal/epl-2.0/
-
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.sdk.feature/feature.xml b/lrparser/org.eclipse.cdt.core.lrparser.sdk.feature/feature.xml
deleted file mode 100644
index 67bdd276d87..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser.sdk.feature/feature.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
- id="org.eclipse.cdt.core.lrparser.sdk"
- label="%featureName"
- version="9.10.0.qualifier"
- provider-name="%providerName"
- plugin="org.eclipse.cdt.core.lrparser.source"
- license-feature="org.eclipse.license"
- license-feature-version="0.0.0">
-
- <description>
- %description
- </description>
-
- <copyright>
- %copyright
- </copyright>
-
- <license url="%licenseURL">
- %license
- </license>
-
- <includes
- id="org.eclipse.cdt.core.lrparser.feature.source"
- version="0.0.0"/>
-
- <includes
- id="org.eclipse.cdt.core.lrparser.feature"
- version="0.0.0"/>
-
-</feature>
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/.classpath b/lrparser/org.eclipse.cdt.core.lrparser.tests/.classpath
deleted file mode 100644
index eca7bdba8f0..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser.tests/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
- <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/.project b/lrparser/org.eclipse.cdt.core.lrparser.tests/.project
deleted file mode 100644
index 23cd5c32013..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser.tests/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.cdt.core.lrparser.tests</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.ManifestBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.SchemaBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.pde.PluginNature</nature>
- <nature>org.eclipse.jdt.core.javanature</nature>
- </natures>
-</projectDescription>
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/.settings/org.eclipse.jdt.core.prefs b/lrparser/org.eclipse.cdt.core.lrparser.tests/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index ad05599159f..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser.tests/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,464 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
-org.eclipse.jdt.core.codeComplete.argumentPrefixes=
-org.eclipse.jdt.core.codeComplete.argumentSuffixes=
-org.eclipse.jdt.core.codeComplete.fieldPrefixes=
-org.eclipse.jdt.core.codeComplete.fieldSuffixes=
-org.eclipse.jdt.core.codeComplete.localPrefixes=
-org.eclipse.jdt.core.codeComplete.localSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
-org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
-org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
-org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
-org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
-org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
-org.eclipse.jdt.core.compiler.problem.APILeak=warning
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=ignore
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
-org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
-org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
-org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
-org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
-org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
-org.eclipse.jdt.core.compiler.problem.nullReference=error
-org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
-org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
-org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
-org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
-org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
-org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
-org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=ignore
-org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore
-org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
-org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
-org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
-org.eclipse.jdt.core.formatter.align_with_spaces=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
-org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
-org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
-org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
-org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=0
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
-org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
-org.eclipse.jdt.core.formatter.comment.format_block_comments=false
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
-org.eclipse.jdt.core.formatter.comment.format_line_comments=false
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
-org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
-org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
-org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.join_lines_in_comments=true
-org.eclipse.jdt.core.formatter.join_wrapped_lines=true
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=120
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_on_off_tags=true
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
-org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
-org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/.settings/org.eclipse.jdt.ui.prefs b/lrparser/org.eclipse.cdt.core.lrparser.tests/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index e44576346c4..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser.tests/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,133 +0,0 @@
-cleanup.add_default_serial_version_id=true
-cleanup.add_generated_serial_version_id=false
-cleanup.add_missing_annotations=true
-cleanup.add_missing_deprecated_annotations=true
-cleanup.add_missing_methods=false
-cleanup.add_missing_nls_tags=false
-cleanup.add_missing_override_annotations=true
-cleanup.add_missing_override_annotations_interface_methods=true
-cleanup.add_serial_version_id=false
-cleanup.always_use_blocks=true
-cleanup.always_use_parentheses_in_expressions=false
-cleanup.always_use_this_for_non_static_field_access=false
-cleanup.always_use_this_for_non_static_method_access=false
-cleanup.convert_functional_interfaces=false
-cleanup.convert_to_enhanced_for_loop=false
-cleanup.correct_indentation=false
-cleanup.format_source_code=true
-cleanup.format_source_code_changes_only=false
-cleanup.insert_inferred_type_arguments=false
-cleanup.make_local_variable_final=true
-cleanup.make_parameters_final=false
-cleanup.make_private_fields_final=true
-cleanup.make_type_abstract_if_missing_method=false
-cleanup.make_variable_declarations_final=false
-cleanup.never_use_blocks=false
-cleanup.never_use_parentheses_in_expressions=true
-cleanup.organize_imports=true
-cleanup.qualify_static_field_accesses_with_declaring_class=false
-cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-cleanup.qualify_static_member_accesses_with_declaring_class=false
-cleanup.qualify_static_method_accesses_with_declaring_class=false
-cleanup.remove_private_constructors=true
-cleanup.remove_redundant_modifiers=false
-cleanup.remove_redundant_semicolons=true
-cleanup.remove_redundant_type_arguments=true
-cleanup.remove_trailing_whitespaces=true
-cleanup.remove_trailing_whitespaces_all=true
-cleanup.remove_trailing_whitespaces_ignore_empty=false
-cleanup.remove_unnecessary_casts=true
-cleanup.remove_unnecessary_nls_tags=false
-cleanup.remove_unused_imports=true
-cleanup.remove_unused_local_variables=false
-cleanup.remove_unused_private_fields=true
-cleanup.remove_unused_private_members=false
-cleanup.remove_unused_private_methods=true
-cleanup.remove_unused_private_types=true
-cleanup.sort_members=false
-cleanup.sort_members_all=false
-cleanup.use_anonymous_class_creation=false
-cleanup.use_blocks=false
-cleanup.use_blocks_only_for_return_and_throw=false
-cleanup.use_lambda=true
-cleanup.use_parentheses_in_expressions=false
-cleanup.use_this_for_non_static_field_access=false
-cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-cleanup.use_this_for_non_static_method_access=false
-cleanup.use_this_for_non_static_method_access_only_if_necessary=true
-cleanup_profile=_CDT
-cleanup_settings_version=2
-eclipse.preferences.version=1
-editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=_CDT
-formatter_settings_version=14
-internal.default.compliance=user
-org.eclipse.jdt.ui.exception.name=e
-org.eclipse.jdt.ui.gettersetter.use.is=true
-org.eclipse.jdt.ui.ignorelowercasenames=true
-org.eclipse.jdt.ui.importorder=java;javax;org;com;
-org.eclipse.jdt.ui.keywordthis=false
-org.eclipse.jdt.ui.ondemandthreshold=1000
-org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.staticondemandthreshold=1000
-org.eclipse.jdt.ui.text.custom_code_templates=
-sp_cleanup.add_default_serial_version_id=true
-sp_cleanup.add_generated_serial_version_id=false
-sp_cleanup.add_missing_annotations=true
-sp_cleanup.add_missing_deprecated_annotations=true
-sp_cleanup.add_missing_methods=false
-sp_cleanup.add_missing_nls_tags=false
-sp_cleanup.add_missing_override_annotations=true
-sp_cleanup.add_missing_override_annotations_interface_methods=true
-sp_cleanup.add_serial_version_id=false
-sp_cleanup.always_use_blocks=true
-sp_cleanup.always_use_parentheses_in_expressions=false
-sp_cleanup.always_use_this_for_non_static_field_access=false
-sp_cleanup.always_use_this_for_non_static_method_access=false
-sp_cleanup.convert_functional_interfaces=false
-sp_cleanup.convert_to_enhanced_for_loop=false
-sp_cleanup.correct_indentation=false
-sp_cleanup.format_source_code=true
-sp_cleanup.format_source_code_changes_only=false
-sp_cleanup.insert_inferred_type_arguments=false
-sp_cleanup.make_local_variable_final=true
-sp_cleanup.make_parameters_final=false
-sp_cleanup.make_private_fields_final=true
-sp_cleanup.make_type_abstract_if_missing_method=false
-sp_cleanup.make_variable_declarations_final=false
-sp_cleanup.never_use_blocks=false
-sp_cleanup.never_use_parentheses_in_expressions=true
-sp_cleanup.on_save_use_additional_actions=true
-sp_cleanup.organize_imports=true
-sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
-sp_cleanup.remove_private_constructors=true
-sp_cleanup.remove_redundant_modifiers=false
-sp_cleanup.remove_redundant_semicolons=true
-sp_cleanup.remove_redundant_type_arguments=true
-sp_cleanup.remove_trailing_whitespaces=true
-sp_cleanup.remove_trailing_whitespaces_all=true
-sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
-sp_cleanup.remove_unnecessary_casts=true
-sp_cleanup.remove_unnecessary_nls_tags=false
-sp_cleanup.remove_unused_imports=true
-sp_cleanup.remove_unused_local_variables=false
-sp_cleanup.remove_unused_private_fields=true
-sp_cleanup.remove_unused_private_members=false
-sp_cleanup.remove_unused_private_methods=true
-sp_cleanup.remove_unused_private_types=true
-sp_cleanup.sort_members=false
-sp_cleanup.sort_members_all=false
-sp_cleanup.use_anonymous_class_creation=false
-sp_cleanup.use_blocks=false
-sp_cleanup.use_blocks_only_for_return_and_throw=false
-sp_cleanup.use_lambda=true
-sp_cleanup.use_parentheses_in_expressions=false
-sp_cleanup.use_this_for_non_static_field_access=false
-sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-sp_cleanup.use_this_for_non_static_method_access=false
-sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/META-INF/MANIFEST.MF b/lrparser/org.eclipse.cdt.core.lrparser.tests/META-INF/MANIFEST.MF
deleted file mode 100644
index 20777cfc242..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser.tests/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,16 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %Bundle-Name.0
-Bundle-SymbolicName: org.eclipse.cdt.core.lrparser.tests
-Bundle-Version: 5.2.0.qualifier
-Require-Bundle: org.eclipse.core.runtime,
- org.junit,
- org.eclipse.cdt.core.tests,
- org.eclipse.cdt.core,
- org.eclipse.core.resources,
- org.eclipse.cdt.core.lrparser;bundle-version="4.0.1"
-Export-Package: org.eclipse.cdt.core.lrparser.tests
-Bundle-Vendor: %Bundle-Vendor.0
-Bundle-Localization: plugin
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Automatic-Module-Name: org.eclipse.cdt.core.lrparser.tests
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/about.html b/lrparser/org.eclipse.cdt.core.lrparser.tests/about.html
deleted file mode 100644
index 164f781a8fd..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser.tests/about.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
-</head>
-<body lang="EN-US">
- <h2>About This Content</h2>
-
- <p>November 30, 2017</p>
- <h3>License</h3>
-
- <p>
- The Eclipse Foundation makes available all content in this plug-in
- (&quot;Content&quot;). Unless otherwise indicated below, the Content
- is provided to you under the terms and conditions of the Eclipse
- Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
- For purposes of the EPL, &quot;Program&quot; will mean the Content.
- </p>
-
- <p>
- If you did not receive this Content directly from the Eclipse
- Foundation, the Content is being redistributed by another party
- (&quot;Redistributor&quot;) and different terms and conditions may
- apply to your use of any object code in the Content. Check the
- Redistributor's license that was provided with the Content. If no such
- license exists, contact the Redistributor. Unless otherwise indicated
- below, the terms and conditions of the EPL still apply to any source
- code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
- </p>
-
-</body>
-</html> \ No newline at end of file
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/build.properties b/lrparser/org.eclipse.cdt.core.lrparser.tests/build.properties
deleted file mode 100644
index 2efd6977db3..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser.tests/build.properties
+++ /dev/null
@@ -1,20 +0,0 @@
-###############################################################################
-# Copyright (c) 2007, 2009 IBM Corporation and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
- .,\
- about.html,\
- plugin.properties
-src.includes = about.html
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/plugin.properties b/lrparser/org.eclipse.cdt.core.lrparser.tests/plugin.properties
deleted file mode 100644
index d2af05f91ce..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser.tests/plugin.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-###############################################################################
-# Copyright (c) 2007, 2009 IBM Corporation and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-# properties file for org.eclipse.cdt.core.parser.c99.tests
-Bundle-Vendor.0 = Eclipse CDT
-Bundle-Name.0 = C99 Parser Tests Plug-in
-
-upcSourceName=UPC Source File \ No newline at end of file
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/AbstractLRHangingTest.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/AbstractLRHangingTest.java
deleted file mode 100644
index c62e1f76981..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/AbstractLRHangingTest.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010, 2015 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.lrparser.tests;
-
-import org.eclipse.cdt.core.dom.ast.IASTCompletionNode;
-import org.eclipse.cdt.core.dom.lrparser.gnu.GCCLanguage;
-import org.eclipse.cdt.core.dom.lrparser.gnu.GPPLanguage;
-import org.eclipse.cdt.core.model.ILanguage;
-
-import junit.framework.TestCase;
-
-public class AbstractLRHangingTest extends TestCase {
-
- public AbstractLRHangingTest() {
- }
-
- public AbstractLRHangingTest(String name) {
- super(name);
- }
-
- protected ILanguage getCLanguage() {
- return GCCLanguage.getDefault();
- }
-
- protected ILanguage getCPPLanguage() {
- return GPPLanguage.getDefault();
- }
-
- protected void runThreadByLimitedTime(long limitTime, Thread testThread) throws Exception {
- testThread.start();
- testThread.join(limitTime);
-
- if (testThread.isAlive()) {
- testThread.interrupt();
- fail("timeout by " + limitTime / 1000 + " seconds"); //$NON-NLS-2$
- } else {
- // Finished
- }
- }
-
- // 1mins
- public static long THREAD_TIMEOUT_LIMIT = 1 * 60 * 1000;
- public static String CONTENT_ASIST_CURSOR = " /*<ctrl-space>*/ ";
-
- private String errMsg = "";
-
- public void resetErrMsg() {
- errMsg = "";
- }
-
- public void setErrMsg(String errMsg) {
- this.errMsg = errMsg;
- }
-
- protected void runTestCase(final String code, final ILanguage language) throws Exception {
-
- Thread testThread = new Thread() {
-
- @Override
- public void run() {
-
- String errMsg = "";
- resetErrMsg();
- String msg = null;
- int offset = code.indexOf(CONTENT_ASIST_CURSOR);
- int index = 0;
- while (offset >= 0) {
-
- IASTCompletionNode node = null;
- try {
- node = ParseHelper.getCompletionNode(code, language, offset);
- } catch (Exception e) {
- if (errMsg.length() == 0) {
- errMsg = "caught an exception when the code is parsed for cursor number " + index;
- } else {
- errMsg = errMsg + "\n" + "caught an exception when the code is parsed for cursor number "
- + index;
- }
-
- }
- if (node == null) {
- if (errMsg.length() == 0) {
- errMsg = "return completion node is null when the code is parsed for cursor number "
- + index;
- } else {
- errMsg = errMsg + "\n"
- + "return completion node is null when the code is parsed for cursor number "
- + index;
- }
-
- }
- offset = code.indexOf(CONTENT_ASIST_CURSOR, offset + 1);
- index++;
- }
- setErrMsg(errMsg);
-
- }
-
- };
-
- runThreadByLimitedTime(THREAD_TIMEOUT_LIMIT, testThread);
- if (errMsg.length() > 0) {
- //fail(errMsg);
- }
-
- }
-
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/AutomatedIntegrationSuite.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/AutomatedIntegrationSuite.java
deleted file mode 100644
index 2fa9ff861b9..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/AutomatedIntegrationSuite.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2010 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.lrparser.tests;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-public class AutomatedIntegrationSuite extends TestSuite {
-
- // TODO: the following test are not being reused
- //
- // DOMGCCSelectionParseExtensionsTest
- // DOMSelectionParseTest
- // GCCCompleteParseExtensionsTest
- // QuickParser2Tests
- //
- // and perhaps others
-
- public static Test suite() {
- return new TestSuite() {
- {
-
- addTest(LRCommentTests.suite());
- addTest(LRCompleteParser2Tests.suite());
- addTest(LRCompletionBasicTest.suite());
- addTest(LRCompletionParseTest.suite());
- addTest(LRCPPSpecTest.suite());
- addTest(LRCPPTests.suite());
- addTest(LRCSpecTests.suite()); // a couple of failures
- addTest(LRDigraphTrigraphTests.suite());
- addTest(LRDOMLocationMacroTests.suite());
- addTest(LRDOMLocationTests.suite());
- addTest(LRDOMPreprocessorInformationTest.suite());
- addTest(LRGCCTests.suite());
- addTest(LRGCCCompleteParseExtensionsTest.suite());
- addTest(LRImageLocationTests.suite());
- addTest(LRKnRTests.suite()); // mostly fail due to ambiguities
- addTest(LRNodeSelectorTest.suite());
- addTestSuite(LRQuickParser2Tests.class);
- addTest(LRSelectionParseTest.suite()); // this one still has a lot of failing tests though
- addTest(LRSemanticsTests.suite());
- addTest(LRTaskParserTest.suite());
- addTest(LRTemplateTests.suite());
- addTest(LRTests.suite()); // has some tests that do fail
- addTest(LRUtilOldTests.suite());
- addTest(LRUtilTests.suite());
- addTest(LRCompletionHangingTest.suite());
- addTest(LRCPPImplicitNameTests.suite());
- //addTest(LRInactiveCodeTests.suite());
-
- }
- };
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCPPImplicitNameTests.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCPPImplicitNameTests.java
deleted file mode 100644
index 3419540959d..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCPPImplicitNameTests.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2013 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.lrparser.tests;
-
-import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
-import org.eclipse.cdt.core.dom.lrparser.gnu.GCCLanguage;
-import org.eclipse.cdt.core.dom.lrparser.gnu.GPPLanguage;
-import org.eclipse.cdt.core.model.ILanguage;
-import org.eclipse.cdt.core.parser.ParserLanguage;
-import org.eclipse.cdt.core.parser.tests.ast2.AST2CPPImplicitNameTests;
-
-import junit.framework.TestSuite;
-
-public class LRCPPImplicitNameTests extends AST2CPPImplicitNameTests {
-
- public static TestSuite suite() {
- return suite(LRCPPImplicitNameTests.class);
- }
-
- public LRCPPImplicitNameTests() {
- }
-
- public LRCPPImplicitNameTests(String name) {
- super(name);
- }
-
- //TODO ??? overwrite some failed test cases
- @Override
- public void testNew() throws Exception {
- }
-
- @Override
- protected IASTTranslationUnit parse(String code, ParserLanguage lang,
- @SuppressWarnings("unused") boolean useGNUExtensions, boolean expectNoProblems,
- int limitTrivialInitializers) {
- ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
- ParseHelper.Options options = new ParseHelper.Options();
- options.setCheckSyntaxProblems(expectNoProblems);
- options.setCheckPreprocessorProblems(expectNoProblems);
- options.setLimitTrivialInitializers(limitTrivialInitializers);
- return ParseHelper.parse(code, language, options);
- }
-
- protected ILanguage getCLanguage() {
- return GCCLanguage.getDefault();
- }
-
- protected ILanguage getCPPLanguage() {
- return GPPLanguage.getDefault();
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCPPSpecTest.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCPPSpecTest.java
deleted file mode 100644
index 55cc8307e7b..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCPPSpecTest.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2013 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.lrparser.tests;
-
-import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
-import org.eclipse.cdt.core.dom.lrparser.gnu.GCCLanguage;
-import org.eclipse.cdt.core.dom.lrparser.gnu.GPPLanguage;
-import org.eclipse.cdt.core.model.ILanguage;
-import org.eclipse.cdt.core.parser.ParserLanguage;
-import org.eclipse.cdt.core.parser.tests.ast2.AST2CPPSpecTest;
-import org.eclipse.cdt.internal.core.parser.ParserException;
-
-import junit.framework.TestSuite;
-
-@SuppressWarnings("restriction")
-public class LRCPPSpecTest extends AST2CPPSpecTest {
-
- public static TestSuite suite() {
- return suite(LRCPPSpecTest.class);
- }
-
- public LRCPPSpecTest() {
- }
-
- public LRCPPSpecTest(String name) {
- super(name);
- }
-
- //TODO ??? overwrite some failed test cases
- @Override
- public void test7_1_3s5b() throws Exception {
- }
-
- @Override
- public void test8_2s7a() throws Exception {
- }
-
- @Override
- public void test8_2s7b() throws Exception {
- }
-
- @Override
- public void test14_8_2s8a() throws Exception {
- }
-
- @Override
- public void test14_8_2_1s1a() throws Exception {
- }
-
- @Override
- public void test14_8_2_1s1b() throws Exception {
- }
-
- @Override
- public void test14_8_2_1s3() throws Exception {
- }
-
- @Override
- public void test14_8_2_4s12() throws Exception {
- }
-
- @Override
- public void test14_8_2_5s5() throws Exception {
- }
-
- @Override
- public void test14_8_2_5s10() throws Exception {
- }
-
- @Override
- public void test14_8_2_4s21() throws Exception {
- }
-
- @Override
- public void test14_8_2_5s22() throws Exception {
- }
-
- @Override
- protected void parseCandCPP(String code, boolean checkBindings, int expectedProblemBindings)
- throws ParserException {
- parse(code, ParserLanguage.C, checkBindings, expectedProblemBindings);
- parse(code, ParserLanguage.CPP, checkBindings, expectedProblemBindings);
- }
-
- @Override
- protected IASTTranslationUnit parseWithErrors(String code, ParserLanguage lang) throws ParserException {
- ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
- ParseHelper.Options options = new ParseHelper.Options();
- options.setCheckBindings(false);
- options.setCheckPreprocessorProblems(false);
- options.setCheckSyntaxProblems(false);
- return ParseHelper.parse(code, language, options);
- }
-
- @Override
- protected IASTTranslationUnit parse(String code, ParserLanguage lang, boolean checkBindings,
- int expectedProblemBindings) throws ParserException {
- ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
- ParseHelper.Options options = new ParseHelper.Options();
- options.setCheckBindings(checkBindings);
- options.setExpectedProblemBindings(expectedProblemBindings);
- return ParseHelper.parse(code, language, options);
- }
-
- @Override
- protected IASTTranslationUnit parse(String code, ParserLanguage lang,
- @SuppressWarnings("unused") boolean useGNUExtensions, boolean expectNoProblems,
- int limitTrivialInitializers) throws ParserException {
- ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
- ParseHelper.Options options = new ParseHelper.Options();
- options.setCheckSyntaxProblems(expectNoProblems);
- options.setCheckPreprocessorProblems(expectNoProblems);
- options.setLimitTrivialInitializers(limitTrivialInitializers);
- return ParseHelper.parse(code, language, options);
- }
-
- @Override
- protected IASTTranslationUnit parse(String code, ParserLanguage lang, String[] problems) throws ParserException {
- ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
- ParseHelper.Options options = new ParseHelper.Options();
- options.setProblems(problems);
- return ParseHelper.parse(code, language, options);
- }
-
- protected ILanguage getCLanguage() {
- return GCCLanguage.getDefault();
- }
-
- protected ILanguage getCPPLanguage() {
- return GPPLanguage.getDefault();
- }
-
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCPPTests.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCPPTests.java
deleted file mode 100644
index fb7044795ac..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCPPTests.java
+++ /dev/null
@@ -1,331 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2015 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.lrparser.tests;
-
-import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
-import org.eclipse.cdt.core.dom.lrparser.gnu.GCCLanguage;
-import org.eclipse.cdt.core.dom.lrparser.gnu.GPPLanguage;
-import org.eclipse.cdt.core.model.ILanguage;
-import org.eclipse.cdt.core.parser.ParserLanguage;
-import org.eclipse.cdt.core.parser.tests.ast2.AST2CPPTests;
-import org.eclipse.cdt.internal.core.parser.ParserException;
-
-import junit.framework.TestSuite;
-
-@SuppressWarnings("restriction")
-public class LRCPPTests extends AST2CPPTests {
-
- public static TestSuite suite() {
- return suite(LRCPPTests.class);
- }
-
- public LRCPPTests() {
- }
-
- public LRCPPTests(String name) {
- super(name);
- }
-
- //the below test case are for C++0x features which are not included in XLC++ yet
-
- @Override
- public void testRValueReference_294730() throws Exception {
- }
-
- @Override
- public void testRValueReferenceTypedefs_294730() throws Exception {
- }
-
- @Override
- public void testDirectBinding_294730() throws Exception {
- }
-
- @Override
- public void testListInitialization_302412a() throws Exception {
- }
-
- @Override
- public void testListInitialization_302412b() throws Exception {
- }
-
- @Override
- public void testListInitialization_302412c() throws Exception {
- }
-
- @Override
- public void testListInitialization_302412d() throws Exception {
- }
-
- @Override
- public void testListInitialization_302412e() throws Exception {
- }
-
- @Override
- public void testListInitialization_302412f() throws Exception {
- }
-
- @Override
- public void testScopedEnums_305975a() throws Exception {
- }
-
- @Override
- public void testScopedEnums_305975b() throws Exception {
- }
-
- @Override
- public void testScopedEnums_305975c() throws Exception {
- }
-
- @Override
- public void testScopedEnums_305975d() throws Exception {
- }
-
- @Override
- public void testScopedEnums_305975e() throws Exception {
- }
-
- @Override
- public void testScopedEnums_305975g() throws Exception {
- }
-
- @Override
- public void testBug332114b() throws Exception {
- }
-
- //unicode character type
- @Override
- public void testNewCharacterTypes_305976() throws Exception {
- }
-
- //auto type
- @Override
- public void testAutoType_289542() throws Exception {
- }
-
- @Override
- public void testAutoType_305970() throws Exception {
- }
-
- @Override
- public void testAutoType_305987() throws Exception {
- }
-
- @Override
- public void testNewFunctionDeclaratorSyntax_305972() throws Exception {
- }
-
- @Override
- public void testBug332114a() throws Exception {
- }
-
- @Override
- public void testResolutionInTrailingReturnType_333256() throws Exception {
- }
-
- @Override
- public void testAutoTypeInRangeBasedFor_332883a() throws Exception {
- }
-
- @Override
- public void testAutoTypeInRangeBasedFor_332883b() throws Exception {
- }
-
- //DeclType
- @Override
- public void testDecltype_294730() throws Exception {
- }
-
- //Defaulted and deleted functions
- @Override
- public void testDefaultedAndDeletedFunctions_305978() throws Exception {
- }
-
- @Override
- public void testDefaultedAndDeletedFunctions_305978b() throws Exception {
- }
-
- //Inline namespaces
- @Override
- public void testInlineNamespace_305980a() throws Exception {
- }
-
- @Override
- public void testInlineNamespace_305980b() throws Exception {
- }
-
- @Override
- public void testInlineNamespace_305980c() throws Exception {
- }
-
- @Override
- public void testInlineNamespace_305980d() throws Exception {
- }
-
- //New wording for C++0x lambdas
- @Override
- public void testLambdaExpression_316307a() throws Exception {
- }
-
- @Override
- public void testLambdaExpression_316307b() throws Exception {
- }
-
- //xvalue
- @Override
- public void testXValueCategories() throws Exception {
- }
-
- @Override
- public void testRankingOfReferenceBindings_a() throws Exception {
- }
-
- @Override
- public void testRankingOfReferenceBindings_b() throws Exception {
- }
-
- @Override
- public void testInlineNamespaceLookup_324096() throws Exception {
- }
-
- @Override
- public void testCtorForAutomaticVariables_156668() throws Exception {
- }
-
- @Override
- public void testRangeBasedForLoop_327223() throws Exception {
- }
-
- //TODO ??? overwrite some failed test cases
- @Override
- public void testOrderOfAmbiguityResolution_259373() throws Exception {
- }
-
- @Override
- public void testPureVirtualVsInitDeclarator_267184() throws Exception {
- }
-
- @Override
- public void testDeclarationAmbiguity_269953() throws Exception {
- }
-
- @Override
- public void testInitSyntax_302412() throws Exception {
- }
-
- @Override
- public void testStaticAssertions_294730() throws Exception {
- }
-
- //outer::foo x
- @Override
- public void testAttributeInUsingDirective_351228() throws Exception {
- }
-
- @Override
- protected IASTTranslationUnit parse(String code, ParserLanguage lang,
- @SuppressWarnings("unused") boolean useGNUExtensions, boolean expectNoProblems,
- int limitTrivialInitializers) throws ParserException {
- ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
- ParseHelper.Options options = new ParseHelper.Options();
- options.setCheckSyntaxProblems(expectNoProblems);
- options.setCheckPreprocessorProblems(expectNoProblems);
- options.setLimitTrivialInitializers(limitTrivialInitializers);
- return ParseHelper.parse(code, language, options);
- }
-
- protected ILanguage getCLanguage() {
- return GCCLanguage.getDefault();
- }
-
- protected ILanguage getCPPLanguage() {
- return GPPLanguage.getDefault();
- }
-
- @Override
- public void testBug98704() throws Exception {
- // this one gets stuck in infinite loop
-
- }
-
- // @Override
- // public void testBug87424() throws Exception { // gcc extension
- // try {
- // super.testBug87424();
- // fail();
- // } catch(AssertionFailedError _) {
- // }
- // }
- //
- //
- // @Override
- // public void testBug95757() throws Exception { // gcc extension
- // try {
- // super.testBug95757();
- // fail();
- // } catch(AssertionFailedError _) {
- // }
- // }
- //
- // @Override
- // public void testBug108202() throws Exception { // gcc attributes not supported
- // try {
- // super.testBug108202();
- // fail();
- // } catch(AssertionFailedError _) {
- // }
- // }
- //
- //
- // @Override
- // public void testBug195701() throws Exception { // gcc attributes not supported
- // try {
- // super.testBug195701();
- // fail();
- // } catch(AssertionFailedError _) {
- // }
- // }
- //
- // @Override
- // public void testBug179712() throws Exception { // gcc attributes not supported
- // try {
- // super.testBug179712();
- // fail();
- // } catch(AssertionFailedError _) {
- // }
- // }
- //
- // @Override
- // public void testBug240567() throws Exception { // gcc
- // try {
- // super.testBug240567();
- // fail();
- // } catch(AssertionFailedError _) {
- // }
- // }
- //
- // @Override
- // public void testLiteralsViaOverloads_225534() throws Exception { // gcc, I think
- // try {
- // super.testLiteralsViaOverloads_225534();
- // fail();
- // } catch(AssertionFailedError _) {
- // }
- // }
-
- @Override
- public void testNestedTemplateIDAmbiguity_259501() throws Exception {
- // this test hangs, not sure I'll ever fix it
- }
-
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCSpecTests.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCSpecTests.java
deleted file mode 100644
index 72b7051b773..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCSpecTests.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.lrparser.tests;
-
-import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
-import org.eclipse.cdt.core.dom.lrparser.gnu.GCCLanguage;
-import org.eclipse.cdt.core.dom.lrparser.gnu.GPPLanguage;
-import org.eclipse.cdt.core.model.ILanguage;
-import org.eclipse.cdt.core.parser.ParserLanguage;
-import org.eclipse.cdt.core.parser.tests.ast2.AST2CSpecTest;
-import org.eclipse.cdt.internal.core.parser.ParserException;
-
-import junit.framework.TestSuite;
-
-@SuppressWarnings({ "restriction", "nls" })
-public class LRCSpecTests extends AST2CSpecTest {
-
- public static TestSuite suite() {
- return suite(LRCSpecTests.class);
- }
-
- public LRCSpecTests() {
- }
-
- public LRCSpecTests(String name) {
- super(name);
- }
-
- @Override
- protected void parseCandCPP(String code, boolean checkBindings, int expectedProblemBindings)
- throws ParserException {
- parse(code, ParserLanguage.C, checkBindings, expectedProblemBindings);
- parse(code, ParserLanguage.CPP, checkBindings, expectedProblemBindings);
- }
-
- @Override
- protected IASTTranslationUnit parse(String code, ParserLanguage lang, boolean checkBindings,
- int expectedProblemBindings) throws ParserException {
- ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
- ParseHelper.Options options = new ParseHelper.Options();
- options.setCheckSyntaxProblems(true);
- options.setCheckPreprocessorProblems(true);
- options.setCheckBindings(checkBindings);
- options.setExpectedProblemBindings(expectedProblemBindings);
- return ParseHelper.parse(code, language, options);
- }
-
- @Override
- protected IASTTranslationUnit parse(String code, ParserLanguage lang, String[] problems) throws ParserException {
- ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
- ParseHelper.Options options = new ParseHelper.Options();
- options.setProblems(problems);
- options.setCheckSyntaxProblems(true);
- options.setCheckPreprocessorProblems(true);
- return ParseHelper.parse(code, language, options);
- }
-
- protected ILanguage getCLanguage() {
- return GCCLanguage.getDefault();
- }
-
- protected ILanguage getCPPLanguage() {
- return GPPLanguage.getDefault();
- }
-
- @Override // example code needs to be nested in a function body
- public void test5_1_2_3s15() throws Exception {
- String code = "//#include <stdio.h>\n" + "int foo() { \n" + "int sum;\n" + "char *p;\n"
- + "sum = sum * 10 - '0' + (*p++ = getchar());\n"
- + "sum = (((sum * 10) - '0') + ((*(p++)) = (getchar())));\n" + "} \n";
-
- parseCandCPP(code, false, 0);
- }
-
- // @Override
- // public void test6_7_2_1s17() throws Exception { // what the heck is offsetof
- // try {
- // super.test6_7_2_1s17();
- // fail();
- // } catch(AssertionFailedError _) { }
- // }
-
- public void testBug276360() throws Exception {
- String code = "int foo(int*[]) {} ";
-
- parseCandCPP(code, false, 0);
- }
-
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCommentTests.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCommentTests.java
deleted file mode 100644
index c630db78383..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCommentTests.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2013 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.lrparser.tests;
-
-import org.eclipse.cdt.core.dom.ast.IASTComment;
-import org.eclipse.cdt.core.dom.ast.IASTFileLocation;
-import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
-import org.eclipse.cdt.core.dom.lrparser.gnu.GCCLanguage;
-import org.eclipse.cdt.core.dom.lrparser.gnu.GPPLanguage;
-import org.eclipse.cdt.core.model.ILanguage;
-import org.eclipse.cdt.core.parser.ParserLanguage;
-import org.eclipse.cdt.core.parser.tests.ast2.CommentTests;
-import org.eclipse.cdt.internal.core.parser.ParserException;
-
-import junit.framework.TestSuite;
-
-@SuppressWarnings("restriction")
-public class LRCommentTests extends CommentTests {
-
- public static TestSuite suite() {
- return suite(LRCommentTests.class);
- }
-
- @Override
- @SuppressWarnings("unused")
- protected IASTTranslationUnit parse(String code, ParserLanguage lang, boolean useGNUExtensions,
- boolean expectNoProblems) throws ParserException {
- ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
- return ParseHelper.parse(code, language, expectNoProblems);
- }
-
- @Override
- @SuppressWarnings("unused")
- protected IASTTranslationUnit parse(String code, ParserLanguage lang, boolean useGNUExtensions,
- boolean expectNoProblems, int limitTrivialInitializers) throws ParserException {
-
- ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
- ParseHelper.Options options = new ParseHelper.Options();
- options.setCheckSyntaxProblems(expectNoProblems);
- options.setCheckPreprocessorProblems(expectNoProblems);
- options.setLimitTrivialInitializers(limitTrivialInitializers);
- return ParseHelper.commentParse(code, language);
- }
-
- protected ILanguage getCLanguage() {
- return GCCLanguage.getDefault();
- }
-
- protected ILanguage getCPPLanguage() {
- return GPPLanguage.getDefault();
- }
-
- @SuppressWarnings("nls")
- public void testBug191266() throws Exception {
- String code = "#define MACRO 1000000000000 \n" + "int x = MACRO; \n" + "//comment\n";
-
- IASTTranslationUnit tu = parse(code, ParserLanguage.C, false, false, 0);
-
- IASTComment[] comments = tu.getComments();
- assertEquals(1, comments.length);
-
- IASTFileLocation location = comments[0].getFileLocation();
- assertEquals(code.indexOf("//"), location.getNodeOffset());
- assertEquals("//comment".length(), location.getNodeLength());
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCompleteParser2Tests.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCompleteParser2Tests.java
deleted file mode 100644
index fed07103fda..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCompleteParser2Tests.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.lrparser.tests;
-
-import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
-import org.eclipse.cdt.core.dom.lrparser.gnu.GCCLanguage;
-import org.eclipse.cdt.core.dom.lrparser.gnu.GPPLanguage;
-import org.eclipse.cdt.core.model.ILanguage;
-import org.eclipse.cdt.core.parser.ParserLanguage;
-import org.eclipse.cdt.core.parser.tests.ast2.CompleteParser2Tests;
-
-import junit.framework.AssertionFailedError;
-import junit.framework.TestSuite;
-
-public class LRCompleteParser2Tests extends CompleteParser2Tests {
-
- public static TestSuite suite() {
- return suite(LRCompleteParser2Tests.class);
- }
-
- public LRCompleteParser2Tests() {
- }
-
- public LRCompleteParser2Tests(String name) {
- super(name);
- }
-
- @Override
- @SuppressWarnings("unused")
- protected IASTTranslationUnit parse(String code, boolean expectedToPass, ParserLanguage lang, boolean gcc)
- throws Exception {
- ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
- return ParseHelper.parse(code, language, expectedToPass);
- }
-
- protected ILanguage getCLanguage() {
- return GCCLanguage.getDefault();
- }
-
- protected ILanguage getCPPLanguage() {
- return GPPLanguage.getDefault();
- }
-
- // Tests that are failing at this point
-
- // @Override
- // public void testBug39676_tough() { // is this C99?
- // try {
- // super.testBug39676_tough();
- // } catch(AssertionFailedError expectedException) {
- // return;
- // } catch(Exception expectedException) {
- // return;
- // }
- // fail();
- // }
-
- // public void testPredefinedSymbol_bug70928_infinite_loop_test1() throws Exception { // gcc extension
- // try {
- // super.testPredefinedSymbol_bug70928_infinite_loop_test1();
- // fail();
- // } catch(AssertionError expectedException) { }
- // }
- //
- // public void testPredefinedSymbol_bug70928_infinite_loop_test2() throws Exception { // gcc extension
- // try {
- // super.testPredefinedSymbol_bug70928_infinite_loop_test2();
- // fail();
- // } catch(AssertionError expectedException) { }
- // }
-
- // @Override
- // public void testBug102376() throws Exception { // gcc extension
- // try {
- // super.testBug102376();
- // fail();
- // } catch(AssertionFailedError expectedException) { }
- // }
-
- // @Override
- // public void test158192_declspec_in_declarator() throws Exception {
- // try {
- // super.test158192_declspec_in_declarator();
- // fail();
- // } catch(AssertionFailedError expectedException) { }
- // }
- //
- // @Override
- // public void test158192_declspec_on_class() throws Exception {
- // try {
- // super.test158192_declspec_on_class();
- // fail();
- // } catch(AssertionFailedError expectedException) { }
- // }
- //
- // @Override
- // public void test158192_declspec_on_variable() throws Exception {
- // try {
- // super.test158192_declspec_on_variable();
- // fail();
- // } catch(AssertionFailedError expectedException) { }
- // }
- //
- // @Override
- // public void testPredefinedSymbol_bug70928() throws Exception {
- // try {
- // super.testPredefinedSymbol_bug70928();
- // fail();
- // } catch(AssertionFailedError expectedException) { }
- // }
-
- @Override
- public void testBug64010() throws Exception { // 10000 else-ifs, busts LPG's stack
- try {
- //super.testBug64010();
- //fail();
- } catch (AssertionFailedError expectedException) {
- }
- }
-
- //
- // @Override
- // public void testGNUASMExtension() throws Exception {
- // try {
- // super.testGNUASMExtension();
- // fail();
- // } catch(AssertionFailedError expectedException) {
- // } catch(AssertionError expectedException) {
- // }
- // }
- //
- // @Override
- // public void testBug39551B() throws Exception {
- // try {
- // super.testBug39551B();
- // fail();
- // } catch(AssertionFailedError expectedException) { }
- // }
- //
- //
- //
-
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCompletionBasicTest.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCompletionBasicTest.java
deleted file mode 100644
index c1d6bb988c2..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCompletionBasicTest.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2013 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.lrparser.tests;
-
-import org.eclipse.cdt.core.dom.ast.IASTCompletionNode;
-import org.eclipse.cdt.core.dom.ast.IBinding;
-import org.eclipse.cdt.core.dom.ast.IFunction;
-import org.eclipse.cdt.core.dom.ast.ITypedef;
-import org.eclipse.cdt.core.dom.lrparser.gnu.GCCLanguage;
-import org.eclipse.cdt.core.dom.lrparser.gnu.GPPLanguage;
-import org.eclipse.cdt.core.model.ILanguage;
-import org.eclipse.cdt.core.parser.ParserLanguage;
-import org.eclipse.cdt.core.parser.tests.prefix.BasicCompletionTest;
-import org.eclipse.cdt.internal.core.parser.ParserException;
-
-import junit.framework.TestSuite;
-
-@SuppressWarnings({ "restriction", "nls" })
-public class LRCompletionBasicTest extends BasicCompletionTest {
-
- public static TestSuite suite() {
- return new TestSuite(LRCompletionBasicTest.class);
- }
-
- public LRCompletionBasicTest() {
- }
-
- //override the test failed case for 340664
- @Override
- public void testCompletionInSizeof340664() throws Exception {
- }
-
- //override some failed test cases
- @Override
- public void testBug279931() throws Exception {
- }
-
- @Override
- public void testBug279931a() throws Exception {
- }
-
- @Override
- public void testQualifiedMemberAccess_Bug300139() throws Exception {
- }
-
- @Override
- public void testCastExpression_Bug301933() throws Exception {
- }
-
- @Override
- public void testConditionalOperator_Bug308611() throws Exception {
- }
-
- @Override
- public void testCompletionInDesignatedInitializor_353281a() throws Exception {
- }
-
- @Override
- @SuppressWarnings("unused")
- protected IASTCompletionNode getCompletionNode(String code, ParserLanguage lang, boolean useGNUExtensions)
- throws ParserException {
-
- ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
- return ParseHelper.getCompletionNode(code, language);
- }
-
- protected ILanguage getCLanguage() {
- return GCCLanguage.getDefault();
- }
-
- protected ILanguage getCPPLanguage() {
- return GPPLanguage.getDefault();
- }
-
- @Override
- public void testFunction() throws Exception {
- String code = "void func(int x) { }" + "void func2() { fu";
-
- // C++
- IASTCompletionNode node = getGPPCompletionNode(code);
- IBinding[] bindings = LRCompletionParseTest.getBindings(node.getNames());
-
- assertEquals(2, bindings.length);
- assertEquals("func", ((IFunction) bindings[0]).getName());
- assertEquals("func2", ((IFunction) bindings[1]).getName());
-
- // C
- node = getGCCCompletionNode(code);
- bindings = LRCompletionParseTest.getBindings(node.getNames());
-
- assertEquals(2, bindings.length);
- assertEquals("func", ((IFunction) bindings[0]).getName());
- assertEquals("func2", ((IFunction) bindings[1]).getName());
- }
-
- @Override
- public void testTypedef() throws Exception {
- String code = "typedef int blah;" + "bl";
-
- // C++
- IASTCompletionNode node = getGPPCompletionNode(code);
- IBinding[] bindings = LRCompletionParseTest.getBindings(node.getNames());
-
- assertEquals(1, bindings.length);
- assertEquals("blah", ((ITypedef) bindings[0]).getName());
-
- // C
- node = getGCCCompletionNode(code);
- bindings = LRCompletionParseTest.getBindings(node.getNames());
-
- assertEquals(1, bindings.length);
- assertEquals("blah", ((ITypedef) bindings[0]).getName());
- }
-
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCompletionHangingTest.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCompletionHangingTest.java
deleted file mode 100644
index 4a627c56d86..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCompletionHangingTest.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.cdt.core.lrparser.tests;
-
-import junit.framework.TestSuite;
-
-public class LRCompletionHangingTest extends AbstractLRHangingTest {
-
- public static TestSuite suite() {
- return new TestSuite(LRCompletionHangingTest.class);
- }
-
- //test c
- public void testCompletionDoWhileForC() throws Exception {
-
- String code = "int main(int argc, char **argv) {" + "do{" + CONTENT_ASIST_CURSOR + "} while (i < 3);" + "}";
-
- runTestCase(code, getCLanguage());
-
- }
-
- //test cpp
- public void testCompletionDoWhileForCPP() throws Exception {
-
- String code = "int main(int argc, char **argv) {" + "do{" + CONTENT_ASIST_CURSOR + "} while (i < 3);" + "}";
- runTestCase(code, getCPPLanguage());
- }
-
- public void testCompletionTryCatch() throws Exception {
-
- String code = "int main(int argc, char **argv) {" + "try {" + CONTENT_ASIST_CURSOR + "}" +
-
- "catch(x){}" + "}";
- runTestCase(code, getCPPLanguage());
-
- }
-
- public void testCompletionTemplateFunctionForCPP() throws Exception {
-
- String code = "template " + CONTENT_ASIST_CURSOR + "<class myType>" + "myType GetA (myType a) {" + "return a;"
- + "}" +
-
- "int main(int argc, char **argv) {" + "int x=0;" + "int y = GetA " + CONTENT_ASIST_CURSOR
- + " <int> (x);" + "}";
- runTestCase(code, getCPPLanguage());
- }
-
- public void testCompletionIfForCPP() throws Exception {
- String code = "int main(int argc, char **argv) {" + "int x=0;" + "if" + CONTENT_ASIST_CURSOR + "(x>0){}" + "}";
- runTestCase(code, getCPPLanguage());
-
- }
-
- public void testCompletionTemplateClassForCPP() throws Exception {
-
- String code = "template" + CONTENT_ASIST_CURSOR + " <class T> " + "class Test {" + "T val;"
- + "public:Test(T arg){" + "val = arg;" + "}" + "~" + CONTENT_ASIST_CURSOR + "Test();" + "};" + "Test::"
- + CONTENT_ASIST_CURSOR + "~" + CONTENT_ASIST_CURSOR + "Test(){}" + "int main(int argc, char **argv) {"
- + CONTENT_ASIST_CURSOR + "Test<" + CONTENT_ASIST_CURSOR + "int> t(1);" + "Test<" + CONTENT_ASIST_CURSOR
- + "double>" + CONTENT_ASIST_CURSOR + "* dt = new dt(1.0);" + "S* s = dynamic_cast<S*"
- + CONTENT_ASIST_CURSOR + ">(dt);" + "S* s = dynamic_cast" + CONTENT_ASIST_CURSOR + "<S*>(dt);" + "}";
- runTestCase(code, getCPPLanguage());
- }
-
- public void testCompletionSimpleIfForCPP() throws Exception {
- String code = "#" + CONTENT_ASIST_CURSOR + "include " + CONTENT_ASIST_CURSOR + "<iostream>" + "using "
- + CONTENT_ASIST_CURSOR + "namespace std;" + "if" + CONTENT_ASIST_CURSOR + "(i>0)){}" + "int "
- + CONTENT_ASIST_CURSOR + "*" + CONTENT_ASIST_CURSOR + " i " + CONTENT_ASIST_CURSOR + "="
- + CONTENT_ASIST_CURSOR + " &" + CONTENT_ASIST_CURSOR + "j;" + "*" + CONTENT_ASIST_CURSOR + "j=0;" + "*"
- + CONTENT_ASIST_CURSOR + "j++;" + "*i" + CONTENT_ASIST_CURSOR + "++ = " + CONTENT_ASIST_CURSOR
- + "*j++;";
- runTestCase(code, getCPPLanguage());
-
- }
-
- public void testCompletionStructForCPP() throws Exception {
- String code = "struct " + CONTENT_ASIST_CURSOR + "p " + CONTENT_ASIST_CURSOR + "{" + CONTENT_ASIST_CURSOR
- + "int w;" + "float p;" + "} " + CONTENT_ASIST_CURSOR + "a," + CONTENT_ASIST_CURSOR + "b,c;";
-
- runTestCase(code, getCPPLanguage());
-
- }
-
- public void testCompletionGnuCPP() throws Exception {
- String code = "if a>b ? " + CONTENT_ASIST_CURSOR + "g" + CONTENT_ASIST_CURSOR + ":l;" + "case 1..."
- + CONTENT_ASIST_CURSOR + "3 : ok; ";
- runTestCase(code, getCPPLanguage());
- }
-
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCompletionParseTest.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCompletionParseTest.java
deleted file mode 100644
index 30252214fab..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCompletionParseTest.java
+++ /dev/null
@@ -1,347 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2015 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.lrparser.tests;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-
-import org.eclipse.cdt.core.dom.ast.IASTCompletionNode;
-import org.eclipse.cdt.core.dom.ast.IASTName;
-import org.eclipse.cdt.core.dom.ast.IBinding;
-import org.eclipse.cdt.core.dom.ast.IEnumerator;
-import org.eclipse.cdt.core.dom.ast.IField;
-import org.eclipse.cdt.core.dom.ast.ITypedef;
-import org.eclipse.cdt.core.dom.ast.IVariable;
-import org.eclipse.cdt.core.dom.lrparser.gnu.GCCLanguage;
-import org.eclipse.cdt.core.model.ILanguage;
-
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-/**
- * Reuse the completion parse tests from the old parser for now.
- */
-@SuppressWarnings("nls")
-public class LRCompletionParseTest extends TestCase {
-
- public static TestSuite suite() {
- return new TestSuite(LRCompletionParseTest.class);
- }
-
- public LRCompletionParseTest() {
- }
-
- public LRCompletionParseTest(String name) {
- super(name);
- }
-
- protected IASTCompletionNode parse(String code, int offset) throws Exception {
- return ParseHelper.getCompletionNode(code, getCLanguage(), offset);
- }
-
- private static final Comparator<IBinding> BINDING_COMPARATOR = new Comparator<IBinding>() {
- @Override
- public int compare(IBinding b1, IBinding b2) {
- return b1.getName().compareTo(b2.getName());
- }
- };
-
- public static IBinding[] getBindings(IASTName[] names) {
- List<IBinding> bindings = new ArrayList<>();
-
- for (IASTName name : names) {
- if (name.getTranslationUnit() == null)
- continue;
-
- for (IBinding binding : name.getCompletionContext().findBindings(name, true)) {
- bindings.add(binding);
- }
- }
-
- Collections.sort(bindings, BINDING_COMPARATOR);
- return bindings.toArray(new IBinding[bindings.size()]);
- }
-
- protected ILanguage getCLanguage() {
- return GCCLanguage.getDefault();
- }
-
- // First steal tests from CompletionParseTest
-
- public void testCompletionStructField() throws Exception {
- String code = "int aVar; " + "struct D{ " + " int aField1; " + " int aField2; " + "}; " + "void foo() {"
- + " struct D d; " + " d.a " + "}\n";
-
- int index = code.indexOf("d.a");
-
- IASTCompletionNode node = parse(code, index + 3);
- assertNotNull(node);
-
- String prefix = node.getPrefix();
- assertNotNull(prefix);
- assertEquals(prefix, "a");
-
- IASTName[] names = node.getNames();
- assertEquals(1, names.length);
-
- IBinding[] bindings = getBindings(names);
-
- assertEquals(2, bindings.length);
- assertEquals("aField1", ((IField) bindings[0]).getName());
- assertEquals("aField2", ((IField) bindings[1]).getName());
- }
-
- public void testCompletionStructFieldPointer() throws Exception {
- String code = "struct Cube { " + " int nLen; "
- + " int nWidth; " + " int nHeight; "
- + "}; " + "int volume(struct Cube * pCube) { "
- + " pCube->SP ";
-
- IASTCompletionNode node = parse(code, code.indexOf("SP"));
-
- IASTName[] names = node.getNames();
- assertEquals(1, names.length);
-
- IBinding[] bindings = getBindings(names);
-
- assertEquals(3, bindings.length);
- assertEquals("nHeight", ((IField) bindings[0]).getName());
- assertEquals("nLen", ((IField) bindings[1]).getName());
- assertEquals("nWidth", ((IField) bindings[2]).getName());
- }
-
- public void testCompletionParametersAsLocalVariables() throws Exception {
- String code = "int foo(int aParameter) {" + " int aLocal;" + " if (aLocal != 0) {"
- + " int aBlockLocal;" + " a \n";
-
- int index = code.indexOf(" a ");
-
- IASTCompletionNode node = parse(code, index + 2);
- assertNotNull(node);
-
- assertEquals("a", node.getPrefix()); //$NON-NLS-1$
-
- IASTName[] names = node.getNames();
- assertEquals(2, names.length);
-
- IBinding[] bindings = getBindings(names);
-
- assertEquals(3, bindings.length);
- assertEquals("aBlockLocal", ((IVariable) bindings[0]).getName());
- assertEquals("aLocal", ((IVariable) bindings[1]).getName());
- assertEquals("aParameter", ((IVariable) bindings[2]).getName());
- }
-
- public void testCompletionTypedef() throws Exception {
- String code = "typedef int Int; " + "InSP";
-
- int index = code.indexOf("SP");
-
- IASTCompletionNode node = parse(code, index);
- assertNotNull(node);
-
- IASTName[] names = node.getNames();
- assertEquals(1, names.length);
-
- assertEquals("In", node.getPrefix());
-
- IBinding[] bindings = getBindings(names);
-
- assertEquals(1, bindings.length);
- assertEquals("Int", ((ITypedef) bindings[0]).getName());
- }
-
- public void testCompletion() throws Exception {
- String code = "#define GL_T 0x2001\n" + "#define GL_TRUE 0x1\n" + "typedef unsigned char GLboolean;\n"
- + "static GLboolean should_rotate = GL_T";
-
- int index = code.indexOf("= GL_T");
-
- IASTCompletionNode node = parse(code, index + 6);
- assertNotNull(node);
-
- assertEquals("GL_T", node.getPrefix()); //$NON-NLS-1$
-
- IASTName[] names = node.getNames();
- assertEquals(1, names.length);
- }
-
- public void testCompletionInTypeDef() throws Exception {
- String code = "struct A { int name; }; \n" + "typedef struct A * PA; \n"
- + "int main() { \n" + " PA a; \n" + " a->SP \n"
- + "} \n";
-
- int index = code.indexOf("SP"); //$NON-NLS-1$
-
- IASTCompletionNode node = parse(code, index);
- assertNotNull(node);
-
- IASTName[] names = node.getNames();
- assertEquals(1, names.length);
-
- IBinding[] bindings = getBindings(names);
-
- assertEquals(1, bindings.length);
- assertEquals("name", ((IField) bindings[0]).getName());
- }
-
- public void _testCompletionFunctionCall() throws Exception {
- String code = "struct A { \n" + " int f2; \n" + " int f4; \n"
- + "}; \n" + "const A * foo() {} \n" + "void main() \n"
- + "{ \n" + " foo()->SP \n";
-
- int index = code.indexOf("SP");
-
- IASTCompletionNode node = parse(code, index);
- assertNotNull(node);
-
- IASTName[] names = node.getNames();
- assertEquals(1, names.length);
-
- IBinding[] bindings = getBindings(names);
-
- assertEquals(2, bindings.length);
- assertEquals("f2", ((IField) bindings[0]).getName());
- assertEquals("f4", ((IField) bindings[1]).getName());
- }
-
- public void _testCompletionSizeof() throws Exception {
- String code = "int f() {\n" + "short blah;\n" + "int x = sizeof(bl";
-
- int index = code.indexOf("of(bl");
-
- IASTCompletionNode node = parse(code, index + 5);
- assertNotNull(node);
-
- IASTName[] names = node.getNames();
- assertEquals(1, names.length);
-
- IBinding[] bindings = getBindings(names);
-
- assertEquals(1, bindings.length);
- assertEquals("blah", ((IVariable) bindings[0]).getName());
- }
-
- public void testCompletionForLoop() throws Exception {
- String code = "int f() {\n" + " int biSizeImage = 5;\n" + "for (int i = 0; i < bi ";
-
- int index = code.indexOf("< bi");
-
- IASTCompletionNode node = parse(code, index + 4);
- assertNotNull(node);
-
- IASTName[] names = node.getNames();
- assertEquals(1, names.length);
-
- IBinding[] bindings = getBindings(names);
-
- assertEquals(1, bindings.length);
- assertEquals("biSizeImage", ((IVariable) bindings[0]).getName());
- }
-
- public void testCompletionStructPointer() throws Exception {
- String code = " struct Temp { char * total; };" + " int f(struct Temp * t) {" + " t->t[5] = t->";
-
- int index = code.indexOf("= t->");
-
- IASTCompletionNode node = parse(code, index + 5);
- assertNotNull(node);
-
- IASTName[] names = node.getNames();
- assertEquals(1, names.length);
-
- IBinding[] bindings = getBindings(names);
-
- assertEquals(1, bindings.length);
- assertEquals("total", ((IVariable) bindings[0]).getName());
- }
-
- public void testCompletionEnum() throws Exception {
- String code = "typedef int DWORD;\n" + "typedef char BYTE;\n"
- + "#define MAKEFOURCC(ch0, ch1, ch2, ch3) \\\n"
- + "((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) | \\\n"
- + "((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24))\n" + "enum e {\n" + "blah1 = 5,\n"
- + "blah2 = MAKEFOURCC('a', 'b', 'c', 'd'),\n" + "blah3\n" + "};\n" + "e mye = bl\n";
-
- int index = code.indexOf("= bl");
-
- IASTCompletionNode node = parse(code, index + 4);
- assertNotNull(node);
-
- IASTName[] names = node.getNames();
- assertEquals(1, names.length);
-
- IBinding[] bindings = getBindings(names);
-
- assertEquals(3, bindings.length);
- assertEquals("blah1", ((IEnumerator) bindings[0]).getName());
- assertEquals("blah2", ((IEnumerator) bindings[1]).getName());
- assertEquals("blah3", ((IEnumerator) bindings[2]).getName());
- }
-
- public void testCompletionStructArray() throws Exception {
- String code = "struct packet { int a; int b; };\n" + "struct packet buffer[5];\n"
- + "int main(int argc, char **argv) {\n" + " buffer[2].";
-
- int index = code.indexOf("[2].");
-
- IASTCompletionNode node = parse(code, index + 4);
- assertNotNull(node);
-
- IASTName[] names = node.getNames();
- assertEquals(1, names.length);
-
- IBinding[] bindings = getBindings(names);
-
- assertEquals(2, bindings.length);
- assertEquals("a", ((IField) bindings[0]).getName());
- assertEquals("b", ((IField) bindings[1]).getName());
- }
-
- public void testCompletionPreprocessorDirective() throws Exception {
- IASTCompletionNode node = parse("#", 1);
- assertNotNull(node);
-
- IASTName[] names = node.getNames();
- assertEquals(1, names.length);
-
- //assertEquals("#", node.getPrefix());
- }
-
- public void testCompletionPreprocessorMacro() throws Exception {
- String code = "#define AMACRO 99 \n" + "int main() { \n" + " int AVAR; \n" + " int x = A \n";
-
- int index = code.indexOf("= A");
-
- IASTCompletionNode node = parse(code, index + 3);
- assertNotNull(node);
-
- IASTName[] names = node.getNames();
- assertEquals(1, names.length);
- assertEquals("A", node.getPrefix());
- }
-
- public void testCompletionInsidePreprocessorDirective() throws Exception {
- String code = "#define MAC1 99 \n" + "#define MAC2 99 \n" + "#ifdef MA";
-
- int index = code.length();
-
- IASTCompletionNode node = parse(code, index);
- assertNotNull(node);
-
- assertEquals("MA", node.getPrefix());
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRDOMLocationMacroTests.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRDOMLocationMacroTests.java
deleted file mode 100644
index 5e410e8f3f2..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRDOMLocationMacroTests.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.lrparser.tests;
-
-import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
-import org.eclipse.cdt.core.dom.lrparser.gnu.GCCLanguage;
-import org.eclipse.cdt.core.dom.lrparser.gnu.GPPLanguage;
-import org.eclipse.cdt.core.model.ILanguage;
-import org.eclipse.cdt.core.parser.ParserLanguage;
-import org.eclipse.cdt.core.parser.tests.ast2.DOMLocationMacroTests;
-import org.eclipse.cdt.internal.core.parser.ParserException;
-
-import junit.framework.TestSuite;
-
-@SuppressWarnings("restriction")
-public class LRDOMLocationMacroTests extends DOMLocationMacroTests {
-
- public static TestSuite suite() {
- return suite(LRDOMLocationMacroTests.class);
- }
-
- public LRDOMLocationMacroTests() {
- }
-
- public LRDOMLocationMacroTests(String name) {
- super(name);
- }
-
- @Override
- @SuppressWarnings("unused")
- protected IASTTranslationUnit parse(String code, ParserLanguage lang, boolean useGNUExtensions,
- boolean expectNoProblems) throws ParserException {
- ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
- ParseHelper.Options options = new ParseHelper.Options().setCheckSyntaxProblems(expectNoProblems)
- .setCheckPreprocessorProblems(expectNoProblems);
- return ParseHelper.parse(code, language, options);
- }
-
- protected ILanguage getCLanguage() {
- return GCCLanguage.getDefault();
- }
-
- protected ILanguage getCPPLanguage() {
- return GPPLanguage.getDefault();
- }
-
- /**
- * Tests GCC specific stuff, not applicable at this point
- */
-
- // @Override
- // public void testStdioBug() throws ParserException {
- // try {
- // super.testStdioBug();
- // fail();
- // }
- // catch(Throwable e) { }
- // }
-
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRDOMLocationTests.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRDOMLocationTests.java
deleted file mode 100644
index 6cf11abcbf8..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRDOMLocationTests.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2010 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.lrparser.tests;
-
-import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
-import org.eclipse.cdt.core.dom.lrparser.gnu.GCCLanguage;
-import org.eclipse.cdt.core.dom.lrparser.gnu.GPPLanguage;
-import org.eclipse.cdt.core.model.ILanguage;
-import org.eclipse.cdt.core.parser.ParserLanguage;
-import org.eclipse.cdt.core.parser.tests.ast2.DOMLocationTests;
-import org.eclipse.cdt.internal.core.parser.ParserException;
-
-import junit.framework.AssertionFailedError;
-import junit.framework.TestSuite;
-
-@SuppressWarnings("restriction")
-public class LRDOMLocationTests extends DOMLocationTests {
-
- public static TestSuite suite() {
- return suite(LRDOMLocationTests.class);
- }
-
- public LRDOMLocationTests() {
- }
-
- public LRDOMLocationTests(String name) {
- super(name);
- }
-
- //TODO ??? overwrite some failed test cases
- @Override
- public void test162180_3() throws Exception {
- }
-
- @Override
- @SuppressWarnings("unused")
- protected IASTTranslationUnit parse(String code, ParserLanguage lang, boolean useGNUExtensions,
- boolean expectNoProblems) throws ParserException {
- ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
- ParseHelper.Options options = new ParseHelper.Options().setCheckSyntaxProblems(expectNoProblems)
- .setCheckPreprocessorProblems(expectNoProblems);
- return ParseHelper.parse(code, language, options);
- }
-
- protected ILanguage getCLanguage() {
- return GCCLanguage.getDefault();
- }
-
- protected ILanguage getCPPLanguage() {
- return GPPLanguage.getDefault();
- }
-
- // this one fails because the C99 parser does error recovery differently
- @Override
- public void test162180_1() throws Exception {
- try {
- super.test162180_1();
- fail();
- } catch (AssertionFailedError e) {
- }
-
- }
- //
- // @Override
- // public void test162180_3() throws Exception {
- // try {
- // super.test162180_3();
- // fail();
- // }
- // catch(AssertionFailedError e) {}
- // }
- //
- // @Override
- // public void testBug86698_2() throws Exception { // I don't think C++ supports nested functions
- // try {
- // super.testBug86698_2();
- // fail();
- // }
- // catch(AssertionFailedError e) {}
- // }
- //
- //
- // @Override
- // public void testBug120607() throws Exception { // #assert and #unassert are gcc extensions
- // try {
- // super.testBug120607();
- // fail();
- // }
- // catch(AssertionFailedError e) {}
- // }
-
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRDOMPreprocessorInformationTest.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRDOMPreprocessorInformationTest.java
deleted file mode 100644
index 29bf24ef98f..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRDOMPreprocessorInformationTest.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.lrparser.tests;
-
-import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
-import org.eclipse.cdt.core.dom.lrparser.gnu.GCCLanguage;
-import org.eclipse.cdt.core.dom.lrparser.gnu.GPPLanguage;
-import org.eclipse.cdt.core.model.ILanguage;
-import org.eclipse.cdt.core.parser.ParserLanguage;
-import org.eclipse.cdt.core.parser.tests.ast2.DOMPreprocessorInformationTest;
-import org.eclipse.cdt.internal.core.parser.ParserException;
-
-import junit.framework.TestSuite;
-
-@SuppressWarnings("restriction")
-public class LRDOMPreprocessorInformationTest extends DOMPreprocessorInformationTest {
-
- public static TestSuite suite() {
- return suite(LRDOMPreprocessorInformationTest.class);
- }
-
- @Override
- @SuppressWarnings("unused")
- protected IASTTranslationUnit parse(String code, ParserLanguage lang, boolean useGNUExtensions,
- boolean expectNoProblems) throws ParserException {
- ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
- ParseHelper.Options options = new ParseHelper.Options().setCheckSyntaxProblems(expectNoProblems)
- .setCheckPreprocessorProblems(expectNoProblems);
- return ParseHelper.parse(code, language, options);
- }
-
- protected ILanguage getCLanguage() {
- return GCCLanguage.getDefault();
- }
-
- protected ILanguage getCPPLanguage() {
- return GPPLanguage.getDefault();
- }
-
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRDigraphTrigraphTests.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRDigraphTrigraphTests.java
deleted file mode 100644
index 95628e3b9c4..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRDigraphTrigraphTests.java
+++ /dev/null
@@ -1,174 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2010 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.lrparser.tests;
-
-import org.eclipse.cdt.core.dom.ast.IASTArrayDeclarator;
-import org.eclipse.cdt.core.dom.ast.IASTArrayModifier;
-import org.eclipse.cdt.core.dom.ast.IASTArraySubscriptExpression;
-import org.eclipse.cdt.core.dom.ast.IASTBinaryExpression;
-import org.eclipse.cdt.core.dom.ast.IASTCompoundStatement;
-import org.eclipse.cdt.core.dom.ast.IASTDeclarationStatement;
-import org.eclipse.cdt.core.dom.ast.IASTDeclarator;
-import org.eclipse.cdt.core.dom.ast.IASTEqualsInitializer;
-import org.eclipse.cdt.core.dom.ast.IASTExpressionStatement;
-import org.eclipse.cdt.core.dom.ast.IASTFunctionCallExpression;
-import org.eclipse.cdt.core.dom.ast.IASTFunctionDefinition;
-import org.eclipse.cdt.core.dom.ast.IASTInitializerClause;
-import org.eclipse.cdt.core.dom.ast.IASTLiteralExpression;
-import org.eclipse.cdt.core.dom.ast.IASTPreprocessorMacroDefinition;
-import org.eclipse.cdt.core.dom.ast.IASTPreprocessorStatement;
-import org.eclipse.cdt.core.dom.ast.IASTSimpleDeclaration;
-import org.eclipse.cdt.core.dom.ast.IASTStatement;
-import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
-import org.eclipse.cdt.core.dom.ast.IASTUnaryExpression;
-import org.eclipse.cdt.core.dom.lrparser.gnu.GCCLanguage;
-import org.eclipse.cdt.core.model.ILanguage;
-
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-/**
- * TODO these tests can be moved into the core
- */
-@SuppressWarnings("nls")
-public class LRDigraphTrigraphTests extends TestCase {
-
- public static TestSuite suite() {
- return new TestSuite(LRDigraphTrigraphTests.class);
- }
-
- public LRDigraphTrigraphTests() {
- }
-
- public LRDigraphTrigraphTests(String name) {
- super(name);
- }
-
- protected IASTTranslationUnit parse(String code) {
- ParseHelper.Options options = new ParseHelper.Options();
- options.setCheckSyntaxProblems(true);
- options.setCheckPreprocessorProblems(true);
- return ParseHelper.parse(code, getCLanguage(), options);
- }
-
- protected ILanguage getCLanguage() {
- return GCCLanguage.getDefault();
- }
-
- public void testTrigraphSequences() {
- String code = "??=define SIZE ??/ \n" + // trigraph used as backslash to ignore newline
- "99 \n" + "int main(void)??< \n" + " int arr??(SIZE??); \n"
- + " arr??(4??) = '0' - (??-0 ??' 1 ??! 2); \n" + " printf(\"%c??/n\", arr??(4??)); \n"
- + "??> \n";
-
- IASTTranslationUnit tu = parse(code);
- assertNotNull(tu);
-
- IASTPreprocessorStatement[] defines = tu.getAllPreprocessorStatements();
- assertEquals(1, defines.length);
- IASTPreprocessorMacroDefinition macro = (IASTPreprocessorMacroDefinition) defines[0];
- assertEquals("SIZE", macro.getName().toString());
- //assertEquals("99", macro.getExpansion());
-
- IASTFunctionDefinition main = (IASTFunctionDefinition) tu.getDeclarations()[0];
- IASTCompoundStatement body = (IASTCompoundStatement) main.getBody();
- IASTStatement[] statements = body.getStatements();
- assertEquals(3, statements.length);
-
- // int arr??(SIZE??);
- IASTSimpleDeclaration arr = (IASTSimpleDeclaration) ((IASTDeclarationStatement) statements[0]).getDeclaration();
- IASTArrayDeclarator arr_decl = (IASTArrayDeclarator) arr.getDeclarators()[0];
- IASTArrayModifier modifier = arr_decl.getArrayModifiers()[0];
- IASTLiteralExpression lit = (IASTLiteralExpression) modifier.getConstantExpression();
- assertEquals(IASTLiteralExpression.lk_integer_constant, lit.getKind());
-
- // arr??(4??) = '0' - (??-0 ??' 1 ??! 2);
- IASTBinaryExpression expr = (IASTBinaryExpression) ((IASTExpressionStatement) statements[1]).getExpression();
- assertEquals(IASTBinaryExpression.op_assign, expr.getOperator());
- IASTArraySubscriptExpression arr_op = (IASTArraySubscriptExpression) expr.getOperand1();
- assertEquals("4", ((IASTLiteralExpression) arr_op.getSubscriptExpression()).toString());
- IASTBinaryExpression cond = (IASTBinaryExpression) ((IASTUnaryExpression) ((IASTBinaryExpression) expr
- .getOperand2()).getOperand2()).getOperand();
- assertEquals(IASTBinaryExpression.op_binaryOr, cond.getOperator());
- IASTBinaryExpression cond2 = (IASTBinaryExpression) cond.getOperand1();
- assertEquals(IASTBinaryExpression.op_binaryXor, cond2.getOperator());
- IASTUnaryExpression not = (IASTUnaryExpression) cond2.getOperand1();
- assertEquals(IASTUnaryExpression.op_tilde, not.getOperator());
-
- // printf(\"%c??/n\", arr??(4??));
- IASTFunctionCallExpression expr2 = (IASTFunctionCallExpression) ((IASTExpressionStatement) statements[2])
- .getExpression();
- IASTInitializerClause[] args = expr2.getArguments();
- IASTArraySubscriptExpression arr_op2 = (IASTArraySubscriptExpression) args[1];
- assertEquals("4", ((IASTLiteralExpression) arr_op2.getSubscriptExpression()).toString());
- }
-
- public void testTrigraphEscapeSequences() {
- // a ??/ trigraph should act just like a backslash in a string literal
- String code = "int main(void)??< \n" + " char str[] = \"??/\"??/n\"; \n" + " char c = '??/u0000'; \n"
- + "??> \n";
-
- parse(code); // will throw an exception if there are parse errors
- }
-
- public void testDigraphSequences() {
- String code = "%:define join(a, b) a %:%: b \n" + "int main() <% \n" + " int arr<:5:>; \n" + "%> \n";
-
- IASTTranslationUnit tu = parse(code); // will throw an exception if there are parse errors
-
- IASTFunctionDefinition main = (IASTFunctionDefinition) tu.getDeclarations()[0];
- IASTCompoundStatement body = (IASTCompoundStatement) main.getBody();
- IASTStatement[] statements = body.getStatements();
- assertEquals(1, statements.length);
-
- IASTSimpleDeclaration arr = (IASTSimpleDeclaration) ((IASTDeclarationStatement) statements[0]).getDeclaration();
- IASTArrayDeclarator arr_decl = (IASTArrayDeclarator) arr.getDeclarators()[0];
- IASTArrayModifier modifier = arr_decl.getArrayModifiers()[0];
- IASTLiteralExpression lit = (IASTLiteralExpression) modifier.getConstantExpression();
- assertEquals("5", lit.toString());
-
- }
-
- public void testTrigraphAndDigraphSequecesInPreprocessorDirectives() {
- String code = "%:define join1(a, b) a %:%: b \n" + "%:define str1(a) %: a \n"
- + "??=define join2(a, b) a ??=??= b \n" + "??=define str2(a) ??= a \n" + "int main() <% \n"
- + " int join1(x, y) = str1(its all good); \n" + " int join2(a, b) = str2(its still good); \n"
- + "%> \n";
-
- IASTTranslationUnit tu = parse(code); // will throw an exception if there are parse errors
-
- IASTFunctionDefinition main = (IASTFunctionDefinition) tu.getDeclarations()[0];
- IASTCompoundStatement body = (IASTCompoundStatement) main.getBody();
- IASTStatement[] statements = body.getStatements();
- assertEquals(2, statements.length);
-
- IASTSimpleDeclaration decl1 = (IASTSimpleDeclaration) ((IASTDeclarationStatement) statements[0])
- .getDeclaration();
- IASTDeclarator declarator1 = decl1.getDeclarators()[0];
- assertEquals("xy", declarator1.getName().toString());
- IASTLiteralExpression expr1 = (IASTLiteralExpression) ((IASTEqualsInitializer) declarator1.getInitializer())
- .getInitializerClause();
- assertEquals(IASTLiteralExpression.lk_string_literal, expr1.getKind());
- assertEquals("\"its all good\"", expr1.toString());
-
- IASTSimpleDeclaration decl2 = (IASTSimpleDeclaration) ((IASTDeclarationStatement) statements[1])
- .getDeclaration();
- IASTDeclarator declarator2 = decl2.getDeclarators()[0];
- assertEquals("ab", declarator2.getName().toString());
- IASTLiteralExpression expr2 = (IASTLiteralExpression) ((IASTEqualsInitializer) declarator2.getInitializer())
- .getInitializerClause();
- assertEquals(IASTLiteralExpression.lk_string_literal, expr2.getKind());
- assertEquals("\"its still good\"", expr2.toString());
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRGCCCompleteParseExtensionsTest.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRGCCCompleteParseExtensionsTest.java
deleted file mode 100644
index d92c5cdbbd1..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRGCCCompleteParseExtensionsTest.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.lrparser.tests;
-
-import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
-import org.eclipse.cdt.core.dom.lrparser.gnu.GCCLanguage;
-import org.eclipse.cdt.core.dom.lrparser.gnu.GPPLanguage;
-import org.eclipse.cdt.core.model.ILanguage;
-import org.eclipse.cdt.core.parser.ParserLanguage;
-import org.eclipse.cdt.core.parser.tests.ast2.GCCCompleteParseExtensionsTest;
-import org.eclipse.cdt.internal.core.parser.ParserException;
-
-import junit.framework.TestSuite;
-
-@SuppressWarnings("restriction")
-public class LRGCCCompleteParseExtensionsTest extends GCCCompleteParseExtensionsTest {
-
- public static TestSuite suite() {
- return suite(LRGCCCompleteParseExtensionsTest.class);
- }
-
- public LRGCCCompleteParseExtensionsTest() {
- }
-
- public LRGCCCompleteParseExtensionsTest(String name) {
- super(name);
- }
-
- //override the test failed case for 342683
- @Override
- public void testTypeTraits_Bug342683() throws Exception {
- }
-
- @Override
- @SuppressWarnings("unused")
- protected IASTTranslationUnit parse(String code, ParserLanguage lang, boolean useGNUExtensions,
- boolean expectNoProblems) throws ParserException {
- ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
- ParseHelper.Options options = new ParseHelper.Options().setCheckSyntaxProblems(expectNoProblems)
- .setCheckPreprocessorProblems(expectNoProblems);
- return ParseHelper.parse(code, language, options);
- }
-
- protected ILanguage getCLanguage() {
- return GCCLanguage.getDefault();
- }
-
- protected ILanguage getCPPLanguage() {
- return GPPLanguage.getDefault();
- }
-
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRGCCTests.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRGCCTests.java
deleted file mode 100644
index d6dc8bd452a..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRGCCTests.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.lrparser.tests;
-
-import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
-import org.eclipse.cdt.core.dom.lrparser.gnu.GCCLanguage;
-import org.eclipse.cdt.core.dom.lrparser.gnu.GPPLanguage;
-import org.eclipse.cdt.core.model.ILanguage;
-import org.eclipse.cdt.core.parser.ParserLanguage;
-import org.eclipse.cdt.core.parser.tests.ast2.GCCTests;
-import org.eclipse.cdt.internal.core.parser.ParserException;
-
-import junit.framework.TestSuite;
-
-@SuppressWarnings("restriction")
-public class LRGCCTests extends GCCTests {
-
- public static TestSuite suite() {
- return suite(LRGCCTests.class);
- }
-
- public LRGCCTests() {
- }
-
- public LRGCCTests(String name) {
- super(name);
- }
-
- @Override
- @SuppressWarnings("unused")
- protected IASTTranslationUnit parse(String code, ParserLanguage lang, boolean useGNUExtensions,
- boolean expectNoProblems) throws ParserException {
- ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
- ParseHelper.Options options = new ParseHelper.Options().setCheckSyntaxProblems(expectNoProblems)
- .setCheckPreprocessorProblems(expectNoProblems);
- return ParseHelper.parse(code, language, options);
- }
-
- protected ILanguage getCLanguage() {
- return GCCLanguage.getDefault();
- }
-
- protected ILanguage getCPPLanguage() {
- return GPPLanguage.getDefault();
- }
-
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRImageLocationTests.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRImageLocationTests.java
deleted file mode 100644
index f3403fc94a8..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRImageLocationTests.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2013 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.lrparser.tests;
-
-import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
-import org.eclipse.cdt.core.dom.lrparser.gnu.GCCLanguage;
-import org.eclipse.cdt.core.dom.lrparser.gnu.GPPLanguage;
-import org.eclipse.cdt.core.model.ILanguage;
-import org.eclipse.cdt.core.parser.ParserLanguage;
-import org.eclipse.cdt.core.parser.tests.ast2.ImageLocationTests;
-import org.eclipse.cdt.internal.core.parser.ParserException;
-
-import junit.framework.TestSuite;
-
-@SuppressWarnings("restriction")
-public class LRImageLocationTests extends ImageLocationTests {
-
- public static TestSuite suite() {
- return suite(LRImageLocationTests.class);
- }
-
- public LRImageLocationTests() {
- }
-
- public LRImageLocationTests(String name) {
- super(name);
- }
-
- @Override
- @SuppressWarnings("unused")
- protected IASTTranslationUnit parse(String code, ParserLanguage lang, boolean useGNUExtensions,
- boolean expectNoProblems, int limitTrivialInitializers) throws ParserException {
- ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
- ParseHelper.Options options = new ParseHelper.Options();
- options.setCheckSyntaxProblems(expectNoProblems);
- options.setCheckPreprocessorProblems(expectNoProblems);
- options.setLimitTrivialInitializers(limitTrivialInitializers);
- return ParseHelper.parse(code, language, options);
- }
-
- protected ILanguage getCLanguage() {
- return GCCLanguage.getDefault();
- }
-
- protected ILanguage getCPPLanguage() {
- return GPPLanguage.getDefault();
- }
-
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRInactiveCodeTests.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRInactiveCodeTests.java
deleted file mode 100644
index 6c1e3fe338d..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRInactiveCodeTests.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2013 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.lrparser.tests;
-
-import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
-import org.eclipse.cdt.core.dom.lrparser.gnu.GCCLanguage;
-import org.eclipse.cdt.core.dom.lrparser.gnu.GPPLanguage;
-import org.eclipse.cdt.core.model.ILanguage;
-import org.eclipse.cdt.core.parser.ParserLanguage;
-import org.eclipse.cdt.core.parser.tests.ast2.ASTInactiveCodeTests;
-
-import junit.framework.TestSuite;
-
-public class LRInactiveCodeTests extends ASTInactiveCodeTests {
-
- public static TestSuite suite() {
- return suite(LRInactiveCodeTests.class);
- }
-
- public LRInactiveCodeTests() {
- }
-
- public LRInactiveCodeTests(String name) {
- super(name);
- }
-
- @Override
- protected IASTTranslationUnit parse(String code, ParserLanguage lang,
- @SuppressWarnings("unused") boolean useGNUExtensions, boolean expectNoProblems,
- int limitTrivialInitializers) {
- ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
- ParseHelper.Options options = new ParseHelper.Options();
- options.setCheckSyntaxProblems(expectNoProblems);
- options.setCheckPreprocessorProblems(expectNoProblems);
- options.setLimitTrivialInitializers(limitTrivialInitializers);
- return ParseHelper.parse(code, language, options);
- }
-
- protected ILanguage getCLanguage() {
- return GCCLanguage.getDefault();
- }
-
- protected ILanguage getCPPLanguage() {
- return GPPLanguage.getDefault();
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRKnRTests.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRKnRTests.java
deleted file mode 100644
index bcbf84819cf..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRKnRTests.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.lrparser.tests;
-
-import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
-import org.eclipse.cdt.core.dom.lrparser.gnu.GCCLanguage;
-import org.eclipse.cdt.core.dom.lrparser.gnu.GPPLanguage;
-import org.eclipse.cdt.core.model.ILanguage;
-import org.eclipse.cdt.core.parser.ParserLanguage;
-import org.eclipse.cdt.core.parser.tests.ast2.AST2KnRTests;
-import org.eclipse.cdt.internal.core.parser.ParserException;
-
-import junit.framework.TestSuite;
-
-/**
- * @author Mike Kucera
- */
-@SuppressWarnings("restriction")
-public class LRKnRTests extends AST2KnRTests {
-
- public static TestSuite suite() {
- return suite(LRKnRTests.class);
- }
-
- @Override
- @SuppressWarnings("unused")
- protected IASTTranslationUnit parse(String code, ParserLanguage lang, boolean useGNUExtensions,
- boolean expectNoProblems) throws ParserException {
- ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
- return ParseHelper.parse(code, language, expectNoProblems);
- }
-
- protected ILanguage getCLanguage() {
- return GCCLanguage.getDefault();
- }
-
- protected ILanguage getCPPLanguage() {
- return GPPLanguage.getDefault();
- }
-
- // LPG handles syntax errors differently than the DOM parser
- // these tests look for syntax errors in specific places and they fail
-
- @Override
- public void testKRCProblem3() throws Exception {
- try {
- super.testKRCProblem3();
- fail();
- } catch (Throwable expectedException) {
- }
- }
-
- @Override
- public void testKRCProblem4() throws Exception {
- try {
- super.testKRCProblem4();
- fail();
- } catch (Throwable expectedException) {
- }
- }
-
- @Override
- public void testKRCProblem5() throws Exception {
- try {
- super.testKRCProblem5();
- fail();
- } catch (Throwable expectedException) {
- }
- }
-
- @Override
- public void testKRCProblem2() throws Exception {
- try {
- super.testKRCProblem2();
- fail();
- } catch (Throwable expectedException) {
- }
- }
-
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRNodeSelectorTest.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRNodeSelectorTest.java
deleted file mode 100644
index c4765a56528..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRNodeSelectorTest.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2013 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.lrparser.tests;
-
-import java.io.IOException;
-
-import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
-import org.eclipse.cdt.core.dom.lrparser.gnu.GCCLanguage;
-import org.eclipse.cdt.core.dom.lrparser.gnu.GPPLanguage;
-import org.eclipse.cdt.core.model.ILanguage;
-import org.eclipse.cdt.core.parser.ParserLanguage;
-import org.eclipse.cdt.core.parser.tests.ast2.ASTNodeSelectorTest;
-import org.eclipse.cdt.internal.core.parser.ParserException;
-
-import junit.framework.TestSuite;
-
-@SuppressWarnings("restriction")
-public class LRNodeSelectorTest extends ASTNodeSelectorTest {
-
- public static TestSuite suite() {
- return suite(LRNodeSelectorTest.class);
- }
-
- public LRNodeSelectorTest() {
- }
-
- public LRNodeSelectorTest(String name) {
- super(name);
- }
-
- @Override
- protected IASTTranslationUnit parse(String code, ParserLanguage lang,
- @SuppressWarnings("unused") boolean useGNUExtensions, boolean expectNoProblems,
- int limitTrivialInitializers) throws ParserException {
- ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
- ParseHelper.Options options = new ParseHelper.Options();
- options.setCheckSyntaxProblems(expectNoProblems);
- options.setCheckPreprocessorProblems(expectNoProblems);
- options.setLimitTrivialInitializers(limitTrivialInitializers);
- return ParseHelper.parse(code, language, options);
- }
-
- @Override
- protected void createTranslationUnit() throws IOException {
- fCode = getContents(1)[0].toString();
- fTu = ParseHelper.parse(fCode, getCPPLanguage(), false);
- fSelector = fTu.getNodeSelector(null);
- }
-
- protected ILanguage getCLanguage() {
- return GCCLanguage.getDefault();
- }
-
- protected ILanguage getCPPLanguage() {
- return GPPLanguage.getDefault();
- }
-
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRQuickParser2Tests.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRQuickParser2Tests.java
deleted file mode 100644
index 29d803327b0..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRQuickParser2Tests.java
+++ /dev/null
@@ -1,184 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.lrparser.tests;
-
-import org.eclipse.cdt.core.dom.lrparser.gnu.GCCLanguage;
-import org.eclipse.cdt.core.dom.lrparser.gnu.GPPLanguage;
-import org.eclipse.cdt.core.model.ILanguage;
-import org.eclipse.cdt.core.parser.ParserLanguage;
-import org.eclipse.cdt.core.parser.tests.ast2.QuickParser2Tests;
-
-public class LRQuickParser2Tests extends QuickParser2Tests {
-
- public LRQuickParser2Tests() {
- }
-
- public LRQuickParser2Tests(String name) {
- super(name);
- }
-
- @Override
- protected void parse(String code, boolean expectedToPass, ParserLanguage lang,
- @SuppressWarnings("unused") boolean gcc) throws Exception {
- ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
- // don't check preprocessor problems for this test suite (causes tons of failures)
- ParseHelper.Options options = new ParseHelper.Options();
- options.setCheckSyntaxProblems(expectedToPass);
- options.setCheckPreprocessorProblems(false);
- ParseHelper.parse(code, language, options);
- }
-
- protected ILanguage getCLanguage() {
- return GCCLanguage.getDefault();
- }
-
- protected ILanguage getCPPLanguage() {
- return GPPLanguage.getDefault();
- }
-
- @Override
- public void testBug36532() {
- // ParseHelper does not throw ParserException
- // just ignore this test
- }
-
- // @Override
- // public void testBug39695() throws Exception { // no support for __alignof__
- // try {
- // super.testBug39695();
- // fail();
- // } catch(AssertionFailedError _) { }
- // }
- //
- // @Override
- // public void testBug39684() throws Exception { // typeof is gcc extension
- // try {
- // super.testBug39684();
- // fail();
- // } catch(AssertionFailedError _) { }
- // }
- //
- // @Override
- // public void testBug39698A() throws Exception { // gcc extension
- // try {
- // super.testBug39698A();
- // fail();
- // } catch(AssertionFailedError _) { }
- // }
- //
- // @Override
- // public void testBug39698B() throws Exception { // gcc extension
- // try {
- // super.testBug39698B();
- // fail();
- // } catch(AssertionFailedError _) { }
- // }
- //
- // @Override
- // public void testBug39704B() throws Exception { // gcc extension
- // try {
- // super.testBug39704B();
- // fail();
- // } catch(AssertionFailedError _) { }
- // }
- //
- // @Override
- // public void testBug39704C() throws Exception { // gcc extension
- // try {
- // super.testBug39704C();
- // fail();
- // } catch(AssertionFailedError _) { }
- // }
- //
- // @Override
- // public void testBug39677() throws Exception { // gcc extension
- // try {
- // super.testBug39677();
- // fail();
- // } catch(AssertionFailedError _) { }
- // }
- //
- //
- // @Override
- // public void testBug57652() throws Exception { // gcc extension
- // try {
- // super.testBug57652();
- // fail();
- // } catch(AssertionFailedError _) { }
- // }
- //
- //
- // @Override
- // public void testBug39701A() throws Exception { // gcc extension
- // try {
- // super.testBug39701A();
- // fail();
- // } catch(AssertionFailedError _) { }
- // }
- //
- // @Override
- // public void testBug39701B() throws Exception { // gcc extension
- // try {
- // super.testBug39701B();
- // fail();
- // } catch(AssertionFailedError _) { }
- // }
- //
- // @Override
- // public void testBug39701C() throws Exception { // gcc extension
- // try {
- // super.testBug39701C();
- // fail();
- // } catch(AssertionFailedError _) { }
- // }
- //
- //
- // @Override
- // public void testBug40007() throws Exception { // gcc extension
- // try {
- // super.testBug40007();
- // fail();
- // } catch(AssertionFailedError _) {
- // } catch(AssertionError _) {
- // }
- //
- // }
- //
- // @Override
- // public void testBug39703() throws Exception { // gcc extension
- // try {
- // super.testBug39703();
- // fail();
- // } catch(AssertionFailedError _) { }
- // }
- //
- //
- // @Override
- // public void testBug39554() throws Exception { // gcc extension
- // try {
- // super.testBug39554();
- // fail();
- // } catch(AssertionFailedError _) { }
- // }
- //
- //
- // @Override
- // public void testBug39686() throws Exception { // gcc extension
- // try {
- // super.testBug39686();
- // fail();
- // } catch(AssertionFailedError _) { }
- // }
-
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRSelectionParseTest.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRSelectionParseTest.java
deleted file mode 100644
index b2b49980cd0..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRSelectionParseTest.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.lrparser.tests;
-
-import org.eclipse.cdt.core.dom.ICodeReaderFactory;
-import org.eclipse.cdt.core.dom.ast.IASTNode;
-import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
-import org.eclipse.cdt.core.dom.lrparser.gnu.GCCLanguage;
-import org.eclipse.cdt.core.dom.lrparser.gnu.GPPLanguage;
-import org.eclipse.cdt.core.model.ILanguage;
-import org.eclipse.cdt.core.parser.CodeReader;
-import org.eclipse.cdt.core.parser.IScannerInfo;
-import org.eclipse.cdt.core.parser.ParserLanguage;
-import org.eclipse.cdt.core.parser.ScannerInfo;
-import org.eclipse.cdt.core.parser.tests.ast2.AST2SelectionParseTest;
-import org.eclipse.cdt.internal.core.dom.SavedCodeReaderFactory;
-import org.eclipse.cdt.internal.core.parser.ParserException;
-import org.eclipse.core.resources.IFile;
-
-import junit.framework.TestSuite;
-
-@SuppressWarnings("restriction")
-public class LRSelectionParseTest extends AST2SelectionParseTest {
-
- public static TestSuite suite() {
- return new TestSuite(LRSelectionParseTest.class);
- }
-
- public LRSelectionParseTest() {
- }
-
- public LRSelectionParseTest(String name) {
- super(name);
- }
-
- @Override
- protected IASTNode parse(String code, ParserLanguage lang, int offset, int length) throws ParserException {
- return parse(code, lang, false, false, offset, length);
- }
-
- @Override
- protected IASTNode parse(IFile file, ParserLanguage lang, int offset, int length) throws ParserException {
- IASTTranslationUnit tu = parse(file, lang, false, false);
- return tu.selectNodeForLocation(tu.getFilePath(), offset, length);
- }
-
- @Override
- protected IASTNode parse(String code, ParserLanguage lang, int offset, int length, boolean expectedToPass)
- throws ParserException {
- return parse(code, lang, false, expectedToPass, offset, length);
- }
-
- @Override
- protected IASTNode parse(String code, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems,
- int offset, int length) throws ParserException {
- ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
- ParseHelper.Options options = new ParseHelper.Options();
- options.setCheckPreprocessorProblems(expectNoProblems);
- options.setCheckSyntaxProblems(expectNoProblems);
- IASTTranslationUnit tu = ParseHelper.parse(code, language, options);
- return tu.selectNodeForLocation(tu.getFilePath(), offset, length);
- }
-
- protected IASTTranslationUnit parse(IFile file, ParserLanguage lang, IScannerInfo scanInfo,
- boolean useGNUExtensions, boolean expectNoProblems) {
-
- ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
-
- String fileName = file.getLocation().toOSString();
- ICodeReaderFactory fileCreator = SavedCodeReaderFactory.getInstance();
- CodeReader reader = fileCreator.createCodeReaderForTranslationUnit(fileName);
-
- ParseHelper.Options options = new ParseHelper.Options();
- options.setCheckPreprocessorProblems(expectNoProblems);
- options.setCheckSyntaxProblems(expectNoProblems);
- options.setCheckBindings(true);
-
- return ParseHelper.parse(reader, language, scanInfo, fileCreator, options);
- }
-
- @Override
- protected IASTTranslationUnit parse(IFile file, ParserLanguage lang, boolean useGNUExtensions,
- boolean expectNoProblems) throws ParserException {
- return parse(file, lang, new ScannerInfo(), useGNUExtensions, expectNoProblems);
- }
-
- protected ILanguage getCLanguage() {
- return GCCLanguage.getDefault();
- }
-
- protected ILanguage getCPPLanguage() {
- return GPPLanguage.getDefault();
- }
-
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRSemanticsTests.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRSemanticsTests.java
deleted file mode 100644
index 24d0c715304..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRSemanticsTests.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2013 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.lrparser.tests;
-
-import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
-import org.eclipse.cdt.core.dom.lrparser.gnu.GCCLanguage;
-import org.eclipse.cdt.core.dom.lrparser.gnu.GPPLanguage;
-import org.eclipse.cdt.core.model.ILanguage;
-import org.eclipse.cdt.core.parser.ParserLanguage;
-import org.eclipse.cdt.core.parser.tests.ast2.SemanticsTests;
-import org.eclipse.cdt.internal.core.parser.ParserException;
-
-import junit.framework.TestSuite;
-
-@SuppressWarnings("restriction")
-public class LRSemanticsTests extends SemanticsTests {
-
- public static TestSuite suite() {
- return suite(LRSemanticsTests.class);
- }
-
- public LRSemanticsTests() {
- }
-
- public LRSemanticsTests(String name) {
- super(name);
- }
-
- @SuppressWarnings("unused")
- @Override
- protected IASTTranslationUnit parse(String code, ParserLanguage lang, boolean useGNUExtensions,
- boolean expectNoProblems, int limitTrivialInitializers) throws ParserException {
- ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
- ParseHelper.Options options = new ParseHelper.Options();
- options.setCheckSyntaxProblems(expectNoProblems);
- options.setCheckPreprocessorProblems(expectNoProblems);
- options.setLimitTrivialInitializers(limitTrivialInitializers);
- return ParseHelper.parse(code, language, options);
- }
-
- protected ILanguage getCLanguage() {
- return GCCLanguage.getDefault();
- }
-
- protected ILanguage getCPPLanguage() {
- return GPPLanguage.getDefault();
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRTaskParserTest.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRTaskParserTest.java
deleted file mode 100644
index eff62df073a..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRTaskParserTest.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2013 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.lrparser.tests;
-
-import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
-import org.eclipse.cdt.core.dom.lrparser.gnu.GCCLanguage;
-import org.eclipse.cdt.core.dom.lrparser.gnu.GPPLanguage;
-import org.eclipse.cdt.core.model.ILanguage;
-import org.eclipse.cdt.core.parser.ParserLanguage;
-import org.eclipse.cdt.core.parser.tests.ast2.TaskParserTest;
-import org.eclipse.cdt.internal.core.parser.ParserException;
-
-import junit.framework.TestSuite;
-
-@SuppressWarnings("restriction")
-public class LRTaskParserTest extends TaskParserTest {
-
- public static TestSuite suite() {
- return new TestSuite(LRTaskParserTest.class);
- }
-
- @Override
- protected IASTTranslationUnit parse(String code, ParserLanguage lang, boolean useGNUExtensions,
- boolean expectNoProblems) throws ParserException {
- return parse(code, lang, useGNUExtensions, expectNoProblems, -1);
- }
-
- @Override
- protected IASTTranslationUnit parse(String code, ParserLanguage lang,
- @SuppressWarnings("unused") boolean useGNUExtensions, boolean expectNoProblems,
- int limitTrivialInitializers) throws ParserException {
- ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
- ParseHelper.Options options = new ParseHelper.Options();
- options.setCheckSyntaxProblems(expectNoProblems);
- options.setCheckPreprocessorProblems(expectNoProblems);
- options.setLimitTrivialInitializers(limitTrivialInitializers);
- return ParseHelper.parse(code, language, options);
- }
-
- protected ILanguage getCLanguage() {
- return GCCLanguage.getDefault();
- }
-
- protected ILanguage getCPPLanguage() {
- return GPPLanguage.getDefault();
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRTemplateTests.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRTemplateTests.java
deleted file mode 100644
index 3a4bdb7ae8e..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRTemplateTests.java
+++ /dev/null
@@ -1,212 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2013 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.lrparser.tests;
-
-import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
-import org.eclipse.cdt.core.dom.lrparser.gnu.GCCLanguage;
-import org.eclipse.cdt.core.dom.lrparser.gnu.GPPLanguage;
-import org.eclipse.cdt.core.model.ILanguage;
-import org.eclipse.cdt.core.parser.ParserLanguage;
-import org.eclipse.cdt.core.parser.tests.ast2.AST2TemplateTests;
-import org.eclipse.cdt.internal.core.parser.ParserException;
-
-import junit.framework.TestSuite;
-
-@SuppressWarnings("restriction")
-public class LRTemplateTests extends AST2TemplateTests {
-
- public static TestSuite suite() {
- return suite(LRTemplateTests.class);
- }
-
- //override the test failed cases of 341747
- @Override
- public void testTemplateIDAmbiguity_341747a() throws Exception {
- }
-
- @Override
- public void testTemplateIDAmbiguity_341747b() throws Exception {
- }
-
- @Override
- public void testTemplateIDAmbiguity_341747c() throws Exception {
- }
-
- @Override
- public void testTemplateIDAmbiguity_341747d() throws Exception {
- }
-
- //override some failed test cases
- @Override
- public void testNestedArguments_246079() throws Throwable {
- }
-
- @Override
- public void testTypeVsExpressionInArgsOfDependentTemplateID_257194() throws Exception {
- }
-
- @Override
- public void testCtorWithTemplateID_259600() throws Exception {
- }
-
- @Override
- public void testClosingAngleBrackets1_261268() throws Exception {
- }
-
- @Override
- public void testClosingAngleBracketsAmbiguity_261268() throws Exception {
- }
-
- @Override
- public void testFunctionParameterPacks_280909() throws Exception {
- }
-
- @Override
- public void testTemplateParameterPacks_280909() throws Exception {
- }
-
- @Override
- public void testParameterPackExpansions_280909() throws Exception {
- }
-
- @Override
- public void testTemplateParameterPacksAmbiguity_280909() throws Exception {
- }
-
- @Override
- public void testNonTypeTemplateParameterPack_280909() throws Exception {
- }
-
- //the below test case are for C++0x features which are not included in XLC++ yet
- @Override
- public void testRValueReferences_294730() throws Exception {
- }
-
- @Override
- public void testVariadicTemplateExamples_280909a() throws Exception {
- }
-
- @Override
- public void testVariadicTemplateExamples_280909b() throws Exception {
- }
-
- @Override
- public void testVariadicTemplateExamples_280909c() throws Exception {
- }
-
- @Override
- public void testVariadicTemplateExamples_280909d() throws Exception {
- }
-
- @Override
- public void testVariadicTemplateExamples_280909e() throws Exception {
- }
-
- @Override
- public void testVariadicTemplateExamples_280909f() throws Exception {
- }
-
- @Override
- public void testVariadicTemplateExamples_280909g() throws Exception {
- }
-
- @Override
- public void testVariadicTemplateExamples_280909i() throws Exception {
- }
-
- @Override
- public void testVariadicTemplateExamples_280909j() throws Exception {
- }
-
- @Override
- public void testVariadicTemplateExamples_280909k() throws Exception {
- }
-
- @Override
- public void testVariadicTemplateExamples_280909n() throws Exception {
- }
-
- @Override
- public void testVariadicTemplateExamples_280909p() throws Exception {
- }
-
- @Override
- public void testVariadicTemplateExamples_280909q() throws Exception {
- }
-
- @Override
- public void testVariadicTemplateExamples_280909r() throws Exception {
- }
-
- @Override
- public void testVariadicTemplateExamples_280909s() throws Exception {
- }
-
- @Override
- public void testExtendingVariadicTemplateTemplateParameters_302282() throws Exception {
- }
-
- @Override
- public void testVariadicTemplateExamples_280909h() throws Exception {
- }
-
- @Override
- public void testInlineNamespaces_305980() throws Exception {
- }
-
- @Override
- public void testFunctionParameterPacksInNonFinalPosition_324096() throws Exception {
- }
-
- //decltype related
- @Override
- public void testFunctionCallOnDependentName_337686() throws Exception {
- }
-
- //variadic template
- @Override
- public void testVariadicFunctionTemplate_333389() throws Exception {
- }
-
- //auto
- @Override
- public void testRRefVsRef_351927() throws Exception {
- }
-
- //Variadic template arguments
- @Override
- public void testTemplateTemplateParameterMatching_352859() throws Exception {
- }
-
- @Override
- @SuppressWarnings("unused")
- protected IASTTranslationUnit parse(String code, ParserLanguage lang, boolean useGNUExtensions,
- boolean expectNoProblems, int limitTrivialInitializers) throws ParserException {
- ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
- ParseHelper.Options options = new ParseHelper.Options();
- options.setCheckSyntaxProblems(expectNoProblems);
- options.setCheckPreprocessorProblems(expectNoProblems);
- options.setLimitTrivialInitializers(limitTrivialInitializers);
- return ParseHelper.parse(code, language, options);
- }
-
- protected ILanguage getCLanguage() {
- return GCCLanguage.getDefault();
- }
-
- protected ILanguage getCPPLanguage() {
- return GPPLanguage.getDefault();
- }
-
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRTests.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRTests.java
deleted file mode 100644
index 2b0bbac05d7..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRTests.java
+++ /dev/null
@@ -1,253 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2016 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.lrparser.tests;
-
-import org.eclipse.cdt.core.dom.ast.IASTDeclaration;
-import org.eclipse.cdt.core.dom.ast.IASTFunctionDefinition;
-import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
-import org.eclipse.cdt.core.dom.ast.c.ICASTSimpleDeclSpecifier;
-import org.eclipse.cdt.core.dom.lrparser.gnu.GCCLanguage;
-import org.eclipse.cdt.core.dom.lrparser.gnu.GPPLanguage;
-import org.eclipse.cdt.core.model.ILanguage;
-import org.eclipse.cdt.core.parser.ParserLanguage;
-import org.eclipse.cdt.core.parser.tests.ast2.AST2Tests;
-import org.eclipse.cdt.internal.core.parser.ParserException;
-
-import junit.framework.TestSuite;
-
-/**
- *
- * @author Mike Kucera
- *
- */
-@SuppressWarnings({ "nls", "restriction" })
-public class LRTests extends AST2Tests {
-
- public static TestSuite suite() {
- return suite(LRTests.class);
- }
-
- public LRTests(String name) {
- super(name);
- }
-
- //TODO ??? overwrite some failed test cases
- @Override
- public void testFnReturningPtrToFn() throws Exception {
- }
-
- @Override
- public void testBug270275_int_is_equivalent_to_signed_int() throws Exception {
- }
-
- @Override
- public void testFunctionDefTypes() throws Exception {
- }
-
- @Override
- public void testBug80171() throws Exception {
- }
-
- @Override
- public void testBug192165() throws Exception {
- }
-
- @Override
- public void testTypenameInExpression() throws Exception {
- }
-
- @Override
- public void testParamWithFunctionType_84242() throws Exception {
- }
-
- @Override
- public void testParamWithFunctionTypeCpp_84242() throws Exception {
- }
-
- @Override
- public void testFunctionReturningPtrToArray_216609() throws Exception {
- }
-
- @Override
- public void testNestedFunctionDeclarators() throws Exception {
- }
-
- @Override
- public void testConstantExpressionBinding() throws Exception {
- }
-
- @Override
- public void testAmbiguousDeclaration_259373() throws Exception {
- }
-
- @Override
- public void testSizeofFunctionType_252243() throws Exception {
- }
-
- @Override
- public void testSkipAggregateInitializer_297550() throws Exception {
- }
-
- @Override
- public void testDeepElseif_298455() throws Exception {
- }
-
- @Override
- public void testAttributeSyntax_298841() throws Exception {
- }
-
- @Override
- public void testEmptyTrailingMacro_303152() throws Exception {
- }
-
- @Override // not applicable to lr parser memory usage.
- public void testLargeTrivialAggregateInitializer_253690() throws Exception {
- }
-
- @Override
- public void testMaximumTrivialExpressionsInInitializers_412380() throws Exception {
- }
-
- @Override
- public void testNoSkipTrivialAggregateInitializer_412380() throws Exception {
- }
-
- @Override
- public void testNoSkipNonTrivialAggregateInitializer_412380() throws Exception {
- }
-
- @Override
- protected IASTTranslationUnit parse(String code, ParserLanguage lang, boolean useGNUExtensions,
- boolean expectNoProblems) throws ParserException {
- return parse(code, lang, useGNUExtensions, expectNoProblems, -1);
- }
-
- @Override
- protected IASTTranslationUnit parse(String code, ParserLanguage lang, boolean useGNUExtensions,
- boolean expectNoProblems, int limitTrivialInitializers) throws ParserException {
- ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
- ParseHelper.Options options = new ParseHelper.Options();
- options.setCheckSyntaxProblems(expectNoProblems);
- options.setCheckPreprocessorProblems(expectNoProblems);
- options.setLimitTrivialInitializers(limitTrivialInitializers);
- return ParseHelper.parse(code, language, options);
- }
-
- protected ILanguage getCLanguage() {
- return GCCLanguage.getDefault();
- }
-
- protected ILanguage getCPPLanguage() {
- return GPPLanguage.getDefault();
- }
-
- public void testMultipleHashHash() throws Exception {
- String code = "#define TWICE(a) int a##tera; int a##ther; \n TWICE(pan)";
- parseAndCheckBindings(code, ParserLanguage.C);
- }
-
- public void testBug191279() throws Exception {
- StringBuilder sb = new StringBuilder();
- sb.append(" /**/ \n");
- sb.append("# define YO 99 /**/ \n");
- sb.append("# undef YO /**/ ");
- sb.append(" /* $ */ ");
- String code = sb.toString();
- parseAndCheckBindings(code, ParserLanguage.C);
- }
-
- public void testBug191324() throws Exception {
- StringBuilder sb = new StringBuilder();
- sb.append("int x$y = 99; \n");
- sb.append("int $q = 100; \n"); // can use $ as first character in identifier
- sb.append("#ifndef SS$_INVFILFOROP \n");
- sb.append("int z; \n");
- sb.append("#endif \n");
- String code = sb.toString();
- parseAndCheckBindings(code, ParserLanguage.C);
- }
-
- public void testBug192009_implicitInt() throws Exception {
- String code = "main() { int x; }";
- IASTTranslationUnit tu = parse(code, ParserLanguage.C, false, true);
-
- IASTDeclaration[] declarations = tu.getDeclarations();
- assertEquals(1, declarations.length);
-
- IASTFunctionDefinition main = (IASTFunctionDefinition) declarations[0];
- ICASTSimpleDeclSpecifier declSpec = (ICASTSimpleDeclSpecifier) main.getDeclSpecifier();
- assertEquals(0, declSpec.getType());
-
- assertEquals("main", main.getDeclarator().getName().toString());
- }
-
- /* I don't care about C98
- */
- @Override
- public void testBug196468_emptyArrayInitializer() {
- }
-
- public void _testBug196468_emptyArrayInitializer() throws Exception {
- super.testBug196468_emptyArrayInitializer();
- }
-
- /* LPG holds on to all the tokens as you parse, so I don't think
- * it would be easy to fix this bug.
- */
- @Override
- public void testScalabilityOfLargeTrivialInitializer_253690() {
- }
-
- public void _testScalabilityOfLargeTrivialInitializer_253690() throws Exception {
-
- super.testScalabilityOfLargeTrivialInitializer_253690();
- }
-
- /* All of the identifiers in the code resolve correctly.
- * The problem is that some of the expressions parse wrong but
- * thats not actually a big deal. Fixing this bug will be
- * difficult so defer it to the future.
- */
- @Override
- public void testBinaryVsCastAmbiguities_237057() {
- }
-
- public void _testBinaryVsCastAmbiguities_237057() throws Exception {
- super.testBinaryVsCastAmbiguities_237057();
- }
-
- /* All of the identifiers in the code resolve correctly.
- * The problem is that some of the expressions parse wrong but
- * thats not actually a big deal. Fixing this bug will be
- * difficult so defer it to the future.
- */
- @Override
- public void testCastVsFunctionCallAmbiguities_237057() {
- }
-
- public void _testCastVsFunctionCallAmbiguities_237057() throws Exception {
- super.testCastVsFunctionCallAmbiguities_237057();
- }
-
- /* The LR parser generates the AST for switch statements
- * differently than the DOM parser.
- */
- @Override
- public void testCaseRange_211882() {
- }
-
- public void _testCaseRange_211882() throws Exception {
- super.testCaseRange_211882();
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRUtilOldTests.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRUtilOldTests.java
deleted file mode 100644
index 9b15b9092f8..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRUtilOldTests.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.lrparser.tests;
-
-import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
-import org.eclipse.cdt.core.dom.lrparser.gnu.GCCLanguage;
-import org.eclipse.cdt.core.dom.lrparser.gnu.GPPLanguage;
-import org.eclipse.cdt.core.model.ILanguage;
-import org.eclipse.cdt.core.parser.ParserLanguage;
-import org.eclipse.cdt.core.parser.tests.ast2.AST2UtilOldTests;
-import org.eclipse.cdt.internal.core.parser.ParserException;
-
-import junit.framework.AssertionFailedError;
-import junit.framework.TestSuite;
-
-@SuppressWarnings("restriction")
-public class LRUtilOldTests extends AST2UtilOldTests {
-
- public static TestSuite suite() {
- return suite(LRUtilOldTests.class);
- }
-
- @Override
- @SuppressWarnings("unused")
- protected IASTTranslationUnit parse(String code, ParserLanguage lang, boolean useGNUExtensions,
- boolean expectNoProblems) throws ParserException {
- ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
- return ParseHelper.parse(code, language, expectNoProblems);
- }
-
- protected ILanguage getCLanguage() {
- return GCCLanguage.getDefault();
- }
-
- protected ILanguage getCPPLanguage() {
- return GPPLanguage.getDefault();
- }
-
- @Override
- public void testCastExpression() throws Exception { // A not typedefed
- try {
- super.testCastExpression();
- fail();
- } catch (AssertionFailedError expectedException) {
- }
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRUtilTests.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRUtilTests.java
deleted file mode 100644
index f94e7816171..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRUtilTests.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.lrparser.tests;
-
-import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
-import org.eclipse.cdt.core.dom.lrparser.gnu.GCCLanguage;
-import org.eclipse.cdt.core.dom.lrparser.gnu.GPPLanguage;
-import org.eclipse.cdt.core.model.ILanguage;
-import org.eclipse.cdt.core.parser.ParserLanguage;
-import org.eclipse.cdt.core.parser.tests.ast2.AST2UtilTests;
-import org.eclipse.cdt.internal.core.parser.ParserException;
-
-import junit.framework.TestSuite;
-
-@SuppressWarnings("restriction")
-public class LRUtilTests extends AST2UtilTests {
-
- public static TestSuite suite() {
- return suite(LRUtilTests.class);
- }
-
- @Override
- protected IASTTranslationUnit parse(String code, ParserLanguage lang) throws ParserException {
- return parse(code, lang, false, true);
- }
-
- @Override
- protected IASTTranslationUnit parse(String code, ParserLanguage lang, boolean useGNUExtensions)
- throws ParserException {
- return parse(code, lang, useGNUExtensions, true);
- }
-
- @Override
- @SuppressWarnings("unused")
- protected IASTTranslationUnit parse(String code, ParserLanguage lang, boolean useGNUExtensions,
- boolean expectNoProblems) throws ParserException {
- ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
- return ParseHelper.parse(code, language, expectNoProblems);
- }
-
- protected ILanguage getCLanguage() {
- return GCCLanguage.getDefault();
- }
-
- protected ILanguage getCPPLanguage() {
- return GPPLanguage.getDefault();
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/ParseHelper.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/ParseHelper.java
deleted file mode 100644
index f0b8a091cc0..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/ParseHelper.java
+++ /dev/null
@@ -1,289 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2013 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.lrparser.tests;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.cdt.core.dom.ICodeReaderFactory;
-import org.eclipse.cdt.core.dom.ast.ASTVisitor;
-import org.eclipse.cdt.core.dom.ast.IASTCompletionNode;
-import org.eclipse.cdt.core.dom.ast.IASTName;
-import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
-import org.eclipse.cdt.core.dom.ast.IBinding;
-import org.eclipse.cdt.core.dom.ast.IProblemBinding;
-import org.eclipse.cdt.core.model.ILanguage;
-import org.eclipse.cdt.core.parser.CodeReader;
-import org.eclipse.cdt.core.parser.FileContent;
-import org.eclipse.cdt.core.parser.IScannerInfo;
-import org.eclipse.cdt.core.parser.IncludeFileContentProvider;
-import org.eclipse.cdt.core.parser.ParserUtil;
-import org.eclipse.cdt.core.parser.ScannerInfo;
-import org.eclipse.cdt.core.parser.tests.ast2.AST2TestBase;
-import org.eclipse.cdt.internal.core.dom.parser.c.CVisitor;
-import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTNameBase;
-import org.eclipse.core.runtime.CoreException;
-
-import junit.framework.AssertionFailedError;
-
-/**
- * Utility methods for parsing test code using the C99 LPG parser.
- *
- * @author Mike Kucera
- */
-@SuppressWarnings({ "restriction", "nls" })
-public class ParseHelper {
-
- static int testsRun = 0;
-
- static protected class NameResolver extends ASTVisitor {
- {
- shouldVisitNames = true;
- }
-
- public List<IASTName> nameList = new ArrayList<>();
- public List<String> problemBindings = new ArrayList<>();
- public int numNullBindings = 0;
-
- @Override
- public int visit(IASTName name) {
- nameList.add(name);
- IBinding binding = name.resolveBinding();
- if (binding instanceof IProblemBinding) {
- // Suppress assertion that would be thrown for computing string representation
- // of template-ids. The flag will be reset by BaseTestCase.setUp().
- CPPASTNameBase.sAllowNameComputation = true;
- problemBindings.add(name.toString());
- }
- if (binding == null)
- numNullBindings++;
- return PROCESS_CONTINUE;
- }
-
- public IASTName getName(int idx) {
- if (idx < 0 || idx >= nameList.size())
- return null;
- return nameList.get(idx);
- }
-
- public int size() {
- return nameList.size();
- }
- }
-
- public static class Options {
-
- boolean checkSyntaxProblems = true;
- boolean checkPreprocessorProblems = true;
- boolean checkBindings = false;
-
- int expectedProblemBindings;
- String[] problems;
- int limitTrivialInitializers = -1;
-
- public Options setCheckSyntaxProblems(boolean checkSyntaxProblems) {
- this.checkSyntaxProblems = checkSyntaxProblems;
- return this;
- }
-
- public Options setCheckBindings(boolean checkBindings) {
- this.checkBindings = checkBindings;
- return this;
- }
-
- public Options setCheckPreprocessorProblems(boolean checkPreprocessorProblems) {
- this.checkPreprocessorProblems = checkPreprocessorProblems;
- return this;
- }
-
- public Options setExpectedProblemBindings(int expectedProblemBindings) {
- this.expectedProblemBindings = expectedProblemBindings;
- return this;
- }
-
- public Options setProblems(String[] problems) {
- this.problems = problems;
- setExpectedProblemBindings(problems.length);
- setCheckBindings(true);
- return this;
- }
-
- public Options setLimitTrivialInitializers(int limitTrivialInitializers) {
- this.limitTrivialInitializers = limitTrivialInitializers;
- return this;
- }
-
- }
-
- public static IASTTranslationUnit parse(String code, ILanguage lang, boolean expectNoProblems) {
- Options options = new Options().setCheckSyntaxProblems(expectNoProblems)
- .setCheckPreprocessorProblems(expectNoProblems);
- return parse(code.toCharArray(), lang, options);
- }
-
- public static IASTTranslationUnit parse(String code, ILanguage lang, Options options) {
- return parse(code.toCharArray(), lang, options);
- }
-
- public static IASTTranslationUnit parse(char[] code, ILanguage lang, Options options) {
-
- return parse(FileContent.create(AST2TestBase.TEST_CODE, code), lang, new ScannerInfo(), null, options);
- }
-
- /**
- * TODO thats WAY too many parameters, need to use a parameter object, need to refactor the
- * DOM parser test suite so that its a lot cleaner.
- * @Deprecated
- */
- public static IASTTranslationUnit parse(CodeReader codeReader, ILanguage language, IScannerInfo scanInfo,
- ICodeReaderFactory fileCreator, Options options) {
- testsRun++;
-
- IASTTranslationUnit tu;
- try {
- int languageOptions = 0;
- if (options.limitTrivialInitializers >= 0 && options.limitTrivialInitializers != Integer.MAX_VALUE)
- languageOptions |= ILanguage.OPTION_SKIP_TRIVIAL_EXPRESSIONS_IN_AGGREGATE_INITIALIZERS;
-
- tu = language.getASTTranslationUnit(codeReader, scanInfo, fileCreator, null, languageOptions,
- ParserUtil.getParserLogService());
- } catch (CoreException e) {
- throw new AssertionFailedError(e.toString());
- }
-
- // should parse correctly first before we look at the bindings
- if (options.checkSyntaxProblems) {
-
- // this should work for C++ also, CVisitor.getProblems() and CPPVisitor.getProblems() are exactly the same code!
- if (CVisitor.getProblems(tu).length != 0) {
- throw new AssertionFailedError(" CVisitor has AST Problems ");
- }
- }
-
- if (options.checkPreprocessorProblems) {
- if (tu.getPreprocessorProblems().length != 0) {
- throw new AssertionFailedError(language.getName() + " TranslationUnit has Preprocessor Problems ");
- }
- }
-
- // resolve all bindings
- if (options.checkBindings) {
- NameResolver res = new NameResolver();
- tu.accept(res);
- if (res.problemBindings.size() != options.expectedProblemBindings)
- throw new AssertionFailedError("Expected " + options.expectedProblemBindings
- + " problem(s), encountered " + res.problemBindings.size());
-
- if (options.problems != null) {
- for (int i = 0; i < options.problems.length; i++) {
- String expected = options.problems[i];
- String actual = res.problemBindings.get(i);
- if (!expected.equals(actual))
- throw new AssertionFailedError(
- String.format("Problem binding not equal, expected: %s, got: %s", expected, actual));
- }
- }
- }
-
- return tu;
- }
-
- /**
- * TODO thats WAY too many parameters, need to use a parameter object, need to refactor the
- * DOM parser test suite so that its a lot cleaner.
- */
- public static IASTTranslationUnit parse(FileContent fileContent, ILanguage language, IScannerInfo scanInfo,
- IncludeFileContentProvider fileContentProvider, Options options) {
- testsRun++;
-
- IASTTranslationUnit tu;
- try {
- int languageOptions = 0;
- if (options.limitTrivialInitializers >= 0 && options.limitTrivialInitializers != Integer.MAX_VALUE)
- languageOptions |= ILanguage.OPTION_SKIP_TRIVIAL_EXPRESSIONS_IN_AGGREGATE_INITIALIZERS;
-
- tu = language.getASTTranslationUnit(fileContent, scanInfo, fileContentProvider, null, languageOptions,
- ParserUtil.getParserLogService());
- } catch (CoreException e) {
- throw new AssertionFailedError(e.toString());
- }
-
- // should parse correctly first before we look at the bindings
- if (options.checkSyntaxProblems) {
-
- // this should work for C++ also, CVisitor.getProblems() and CPPVisitor.getProblems() are exactly the same code!
- if (CVisitor.getProblems(tu).length != 0) {
- throw new AssertionFailedError(" CVisitor has AST Problems ");
- }
- }
-
- if (options.checkPreprocessorProblems) {
- if (tu.getPreprocessorProblems().length != 0) {
- throw new AssertionFailedError(language.getName() + " TranslationUnit has Preprocessor Problems ");
- }
- }
-
- // resolve all bindings
- if (options.checkBindings) {
- NameResolver res = new NameResolver();
- tu.accept(res);
- if (res.problemBindings.size() != options.expectedProblemBindings)
- throw new AssertionFailedError("Expected " + options.expectedProblemBindings
- + " problem(s), encountered " + res.problemBindings.size());
-
- if (options.problems != null) {
- for (int i = 0; i < options.problems.length; i++) {
- String expected = options.problems[i];
- String actual = res.problemBindings.get(i);
- if (!expected.equals(actual))
- throw new AssertionFailedError(
- String.format("Problem binding not equal, expected: %s, got: %s", expected, actual));
- }
- }
- }
-
- return tu;
- }
-
- public static IASTTranslationUnit commentParse(String code, ILanguage language) {
-
- IASTTranslationUnit tu;
- try {
- tu = language.getASTTranslationUnit(FileContent.create(AST2TestBase.TEST_CODE, code.toCharArray()),
- new ScannerInfo(), null, null, ILanguage.OPTION_ADD_COMMENTS, ParserUtil.getParserLogService());
- } catch (CoreException e) {
- throw new AssertionFailedError(e.toString());
- }
- return tu;
- }
-
- public static IASTCompletionNode getCompletionNode(String code, ILanguage lang) {
- int offset = code.length();
- if (offset > 0 && '\n' == code.charAt(offset - 1)) {
- offset--;
- }
- return getCompletionNode(code, lang, offset);
- }
-
- public static IASTCompletionNode getCompletionNode(String code, ILanguage language, int offset) {
-
- try {
- return language.getCompletionNode(FileContent.create(AST2TestBase.TEST_CODE, code.toCharArray()),
- new ScannerInfo(), null, null, ParserUtil.getParserLogService(), offset);
- } catch (CoreException e) {
- throw new RuntimeException(e);
- }
- }
-
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/.classpath b/lrparser/org.eclipse.cdt.core.lrparser/.classpath
deleted file mode 100644
index d9af9f5c892..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/.classpath
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="src" path="old"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/.project b/lrparser/org.eclipse.cdt.core.lrparser/.project
deleted file mode 100644
index 80cab22b5fa..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/.project
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.cdt.core.lrparser</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.ManifestBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.SchemaBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>net.sourceforge.metrics.builder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.pde.PluginNature</nature>
- <nature>org.eclipse.jdt.core.javanature</nature>
- <nature>net.sourceforge.metrics.nature</nature>
- </natures>
-</projectDescription>
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/.settings/org.eclipse.jdt.core.prefs b/lrparser/org.eclipse.cdt.core.lrparser/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 2b6ecff8a01..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,464 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
-org.eclipse.jdt.core.codeComplete.argumentPrefixes=
-org.eclipse.jdt.core.codeComplete.argumentSuffixes=
-org.eclipse.jdt.core.codeComplete.fieldPrefixes=
-org.eclipse.jdt.core.codeComplete.fieldSuffixes=
-org.eclipse.jdt.core.codeComplete.localPrefixes=
-org.eclipse.jdt.core.codeComplete.localSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
-org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
-org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
-org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
-org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
-org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
-org.eclipse.jdt.core.compiler.problem.APILeak=warning
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
-org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
-org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
-org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
-org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
-org.eclipse.jdt.core.compiler.problem.nullReference=error
-org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
-org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
-org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
-org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
-org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
-org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
-org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
-org.eclipse.jdt.core.formatter.align_with_spaces=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
-org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
-org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
-org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
-org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=0
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
-org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
-org.eclipse.jdt.core.formatter.comment.format_block_comments=false
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
-org.eclipse.jdt.core.formatter.comment.format_line_comments=false
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
-org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
-org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
-org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.join_lines_in_comments=true
-org.eclipse.jdt.core.formatter.join_wrapped_lines=true
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=120
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_on_off_tags=true
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
-org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
-org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/.settings/org.eclipse.jdt.ui.prefs b/lrparser/org.eclipse.cdt.core.lrparser/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index e44576346c4..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,133 +0,0 @@
-cleanup.add_default_serial_version_id=true
-cleanup.add_generated_serial_version_id=false
-cleanup.add_missing_annotations=true
-cleanup.add_missing_deprecated_annotations=true
-cleanup.add_missing_methods=false
-cleanup.add_missing_nls_tags=false
-cleanup.add_missing_override_annotations=true
-cleanup.add_missing_override_annotations_interface_methods=true
-cleanup.add_serial_version_id=false
-cleanup.always_use_blocks=true
-cleanup.always_use_parentheses_in_expressions=false
-cleanup.always_use_this_for_non_static_field_access=false
-cleanup.always_use_this_for_non_static_method_access=false
-cleanup.convert_functional_interfaces=false
-cleanup.convert_to_enhanced_for_loop=false
-cleanup.correct_indentation=false
-cleanup.format_source_code=true
-cleanup.format_source_code_changes_only=false
-cleanup.insert_inferred_type_arguments=false
-cleanup.make_local_variable_final=true
-cleanup.make_parameters_final=false
-cleanup.make_private_fields_final=true
-cleanup.make_type_abstract_if_missing_method=false
-cleanup.make_variable_declarations_final=false
-cleanup.never_use_blocks=false
-cleanup.never_use_parentheses_in_expressions=true
-cleanup.organize_imports=true
-cleanup.qualify_static_field_accesses_with_declaring_class=false
-cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-cleanup.qualify_static_member_accesses_with_declaring_class=false
-cleanup.qualify_static_method_accesses_with_declaring_class=false
-cleanup.remove_private_constructors=true
-cleanup.remove_redundant_modifiers=false
-cleanup.remove_redundant_semicolons=true
-cleanup.remove_redundant_type_arguments=true
-cleanup.remove_trailing_whitespaces=true
-cleanup.remove_trailing_whitespaces_all=true
-cleanup.remove_trailing_whitespaces_ignore_empty=false
-cleanup.remove_unnecessary_casts=true
-cleanup.remove_unnecessary_nls_tags=false
-cleanup.remove_unused_imports=true
-cleanup.remove_unused_local_variables=false
-cleanup.remove_unused_private_fields=true
-cleanup.remove_unused_private_members=false
-cleanup.remove_unused_private_methods=true
-cleanup.remove_unused_private_types=true
-cleanup.sort_members=false
-cleanup.sort_members_all=false
-cleanup.use_anonymous_class_creation=false
-cleanup.use_blocks=false
-cleanup.use_blocks_only_for_return_and_throw=false
-cleanup.use_lambda=true
-cleanup.use_parentheses_in_expressions=false
-cleanup.use_this_for_non_static_field_access=false
-cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-cleanup.use_this_for_non_static_method_access=false
-cleanup.use_this_for_non_static_method_access_only_if_necessary=true
-cleanup_profile=_CDT
-cleanup_settings_version=2
-eclipse.preferences.version=1
-editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=_CDT
-formatter_settings_version=14
-internal.default.compliance=user
-org.eclipse.jdt.ui.exception.name=e
-org.eclipse.jdt.ui.gettersetter.use.is=true
-org.eclipse.jdt.ui.ignorelowercasenames=true
-org.eclipse.jdt.ui.importorder=java;javax;org;com;
-org.eclipse.jdt.ui.keywordthis=false
-org.eclipse.jdt.ui.ondemandthreshold=1000
-org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.staticondemandthreshold=1000
-org.eclipse.jdt.ui.text.custom_code_templates=
-sp_cleanup.add_default_serial_version_id=true
-sp_cleanup.add_generated_serial_version_id=false
-sp_cleanup.add_missing_annotations=true
-sp_cleanup.add_missing_deprecated_annotations=true
-sp_cleanup.add_missing_methods=false
-sp_cleanup.add_missing_nls_tags=false
-sp_cleanup.add_missing_override_annotations=true
-sp_cleanup.add_missing_override_annotations_interface_methods=true
-sp_cleanup.add_serial_version_id=false
-sp_cleanup.always_use_blocks=true
-sp_cleanup.always_use_parentheses_in_expressions=false
-sp_cleanup.always_use_this_for_non_static_field_access=false
-sp_cleanup.always_use_this_for_non_static_method_access=false
-sp_cleanup.convert_functional_interfaces=false
-sp_cleanup.convert_to_enhanced_for_loop=false
-sp_cleanup.correct_indentation=false
-sp_cleanup.format_source_code=true
-sp_cleanup.format_source_code_changes_only=false
-sp_cleanup.insert_inferred_type_arguments=false
-sp_cleanup.make_local_variable_final=true
-sp_cleanup.make_parameters_final=false
-sp_cleanup.make_private_fields_final=true
-sp_cleanup.make_type_abstract_if_missing_method=false
-sp_cleanup.make_variable_declarations_final=false
-sp_cleanup.never_use_blocks=false
-sp_cleanup.never_use_parentheses_in_expressions=true
-sp_cleanup.on_save_use_additional_actions=true
-sp_cleanup.organize_imports=true
-sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
-sp_cleanup.remove_private_constructors=true
-sp_cleanup.remove_redundant_modifiers=false
-sp_cleanup.remove_redundant_semicolons=true
-sp_cleanup.remove_redundant_type_arguments=true
-sp_cleanup.remove_trailing_whitespaces=true
-sp_cleanup.remove_trailing_whitespaces_all=true
-sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
-sp_cleanup.remove_unnecessary_casts=true
-sp_cleanup.remove_unnecessary_nls_tags=false
-sp_cleanup.remove_unused_imports=true
-sp_cleanup.remove_unused_local_variables=false
-sp_cleanup.remove_unused_private_fields=true
-sp_cleanup.remove_unused_private_members=false
-sp_cleanup.remove_unused_private_methods=true
-sp_cleanup.remove_unused_private_types=true
-sp_cleanup.sort_members=false
-sp_cleanup.sort_members_all=false
-sp_cleanup.use_anonymous_class_creation=false
-sp_cleanup.use_blocks=false
-sp_cleanup.use_blocks_only_for_return_and_throw=false
-sp_cleanup.use_lambda=true
-sp_cleanup.use_parentheses_in_expressions=false
-sp_cleanup.use_this_for_non_static_field_access=false
-sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-sp_cleanup.use_this_for_non_static_method_access=false
-sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/META-INF/MANIFEST.MF b/lrparser/org.eclipse.cdt.core.lrparser/META-INF/MANIFEST.MF
deleted file mode 100644
index efe68befc97..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,29 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %Bundle-Name.1
-Bundle-SymbolicName: org.eclipse.cdt.core.lrparser;singleton:=true
-Bundle-Version: 5.2.200.qualifier
-Bundle-ClassPath: .
-Require-Bundle: org.eclipse.cdt.core,
- net.sourceforge.lpg.lpgjavaruntime;bundle-version="1.1.0";visibility:=reexport,
- org.eclipse.core.runtime,
- org.apache.ant;bundle-version="1.7.0"
-Export-Package: org.eclipse.cdt.core.dom.lrparser,
- org.eclipse.cdt.core.dom.lrparser.action,
- org.eclipse.cdt.core.dom.lrparser.action.c99,
- org.eclipse.cdt.core.dom.lrparser.action.cpp,
- org.eclipse.cdt.core.dom.lrparser.action.gnu,
- org.eclipse.cdt.core.dom.lrparser.c99,
- org.eclipse.cdt.core.dom.lrparser.cpp,
- org.eclipse.cdt.core.dom.lrparser.gnu,
- org.eclipse.cdt.core.dom.lrparser.lpgextensions,
- org.eclipse.cdt.internal.core.dom.lrparser.c99;x-internal:=true,
- org.eclipse.cdt.internal.core.dom.lrparser.cpp,
- org.eclipse.cdt.internal.core.dom.lrparser.gcc,
- org.eclipse.cdt.internal.core.dom.lrparser.gpp
-Bundle-Localization: plugin
-Bundle-Vendor: %Bundle-Vendor.0
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Bundle-ActivationPolicy: lazy
-Bundle-Activator: org.eclipse.cdt.core.dom.lrparser.LRParserPlugin
-Automatic-Module-Name: org.eclipse.cdt.core.lrparser
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/about.html b/lrparser/org.eclipse.cdt.core.lrparser/about.html
deleted file mode 100644
index 164f781a8fd..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/about.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
-</head>
-<body lang="EN-US">
- <h2>About This Content</h2>
-
- <p>November 30, 2017</p>
- <h3>License</h3>
-
- <p>
- The Eclipse Foundation makes available all content in this plug-in
- (&quot;Content&quot;). Unless otherwise indicated below, the Content
- is provided to you under the terms and conditions of the Eclipse
- Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
- For purposes of the EPL, &quot;Program&quot; will mean the Content.
- </p>
-
- <p>
- If you did not receive this Content directly from the Eclipse
- Foundation, the Content is being redistributed by another party
- (&quot;Redistributor&quot;) and different terms and conditions may
- apply to your use of any object code in the Content. Check the
- Redistributor's license that was provided with the Content. If no such
- license exists, contact the Redistributor. Unless otherwise indicated
- below, the terms and conditions of the EPL still apply to any source
- code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
- </p>
-
-</body>
-</html> \ No newline at end of file
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/about.mappings b/lrparser/org.eclipse.cdt.core.lrparser/about.mappings
deleted file mode 100644
index 0824105e69d..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/about.mappings
+++ /dev/null
@@ -1,9 +0,0 @@
-# about.mappings
-# contains fill-ins for about.properties
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# This file does not need to be translated.
-
-# The following should contain the build version.
-# e.g. "0=20020612"
-# This value will be added automaticaly via the build scripts
-0=@build@ \ No newline at end of file
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/about.properties b/lrparser/org.eclipse.cdt.core.lrparser/about.properties
deleted file mode 100644
index 9fc886053cd..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/about.properties
+++ /dev/null
@@ -1,28 +0,0 @@
-###############################################################################
-# Copyright (c) 2007, 2008 IBM Corporation and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-# about.properties
-# contains externalized strings for about.ini
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# fill-ins are supplied by about.mappings
-# This file should be translated.
-# NOTE TO TRANSLATOR: Please do not translate the featureVersion variable.
-
-
-blurb=CDT LR Parser Support\n\
-\n\
-Version: {featureVersion}\n\
-Build id: {0}\n\
-\n\
-(c) Copyright Eclipse contributors and others, 2007, 2010.\n\
-Visit http://www.eclipse.org/cdt
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/build.properties b/lrparser/org.eclipse.cdt.core.lrparser/build.properties
deleted file mode 100644
index 6b2ef4995e2..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/build.properties
+++ /dev/null
@@ -1,25 +0,0 @@
-###############################################################################
-# Copyright (c) 2007, 2009 IBM Corporation and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
- .,\
- about.html,\
- plugin.properties,\
- plugin.xml,\
- about.ini,\
- about.mappings,\
- about.properties,\
- cdt_logo_icon32.png
-src.includes = about.html
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/grammar/build.xml b/lrparser/org.eclipse.cdt.core.lrparser/grammar/build.xml
deleted file mode 100644
index 0844cd4b168..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/grammar/build.xml
+++ /dev/null
@@ -1,146 +0,0 @@
-<!--
- Copyright (c) 2006, 2009 IBM Corporation and others.
- This program and the accompanying materials
- are made available under the terms of the Eclipse Public License 2.0
- which accompanies this distribution, and is available at
- https://www.eclipse.org/legal/epl-2.0/
-
- SPDX-License-Identifier: EPL-2.0
-
- Contributors:
- IBM Corporation - initial API and implementation
--->
-
-<project name="CDT Extensible LR Parser Framework" basedir=".">
- <description>Generates LPG parsers from grammar files</description>
-
- <import file="generate.xml"/>
-
- <property name="c99_location" value="../src/org/eclipse/cdt/internal/core/dom/lrparser/c99"/>
- <property name="gcc_location" value="../src/org/eclipse/cdt/internal/core/dom/lrparser/gcc"/>
- <property name="cpp_location" value="../src/org/eclipse/cdt/internal/core/dom/lrparser/cpp"/>
- <property name="gpp_location" value="../src/org/eclipse/cdt/internal/core/dom/lrparser/gpp"/>
-
- <target name="all" depends="c99, gcc, cpp, gpp"/>
-
- <target name="clean_l_files">
- <delete>
- <fileset dir="${c99_location}" includes="**/*.l"/>
- <fileset dir="${gcc_location}" includes="**/*.l"/>
- <fileset dir="${cpp_location}" includes="**/*.l"/>
- <fileset dir="${gpp_location}" includes="**/*.l"/>
- </delete>
- </target>
-
-
- <target name="c99">
- <description>Generate the C99 parser</description>
- <!-- Generate main parser -->
- <antcall target="generate_c99">
- <param name="grammar_name" value="C99Parser"/>
- </antcall>
- <!-- Generate parser for disambiguating declarations vs expression statements -->
- <antcall target="generate_c99">
- <param name="grammar_name" value="C99ExpressionParser"/>
- </antcall>
- <!-- Generate parser for disambiguating cast expressions vs binary expressions-->
- <antcall target="generate_c99">
- <param name="grammar_name" value="C99NoCastExpressionParser"/>
- </antcall>
- <!-- Generate parser for disambiguating sizeof expressions -->
- <antcall target="generate_c99">
- <param name="grammar_name" value="C99SizeofExpressionParser"/>
- </antcall>
- </target>
-
- <target name="generate_c99">
- <antcall target="generate">
- <param name="grammar_dir" value="c99"/>
- <param name="output_dir" value="${c99_location}"/>
- <param name="grammar_name" value="${grammar_name}"/>
- </antcall>
- </target>
-
-
- <target name="gcc">
- <description>Generate the GCC parser</description>
- <!-- Generate main parser -->
- <antcall target="generate_gcc">
- <param name="grammar_name" value="GCCParser"/>
- </antcall>
- <antcall target="generate_gcc">
- <param name="grammar_name" value="GCCSizeofExpressionParser"/>
- </antcall>
- </target>
-
-
- <target name="generate_gcc">
- <antcall target="generate">
- <param name="grammar_dir" value="gcc"/>
- <param name="output_dir" value="${gcc_location}"/>
- <param name="grammar_name" value="${grammar_name}"/>
- </antcall>
- </target>
-
-
- <target name="cpp">
- <description>Generate the C++ parser</description>
- <antcall target="generate_cpp">
- <param name="grammar_name" value="CPPParser"/>
- </antcall>
- <!-- Generate parser for disambiguating declarations vs expression statements -->
- <antcall target="generate_cpp">
- <param name="grammar_name" value="CPPExpressionParser"/>
- </antcall>
- <!-- Generate parser for disambiguating cast expressions vs binary expressions-->
- <antcall target="generate_cpp">
- <param name="grammar_name" value="CPPNoCastExpressionParser"/>
- </antcall>
- <!-- Generate parser for disambiguating sizeof expressions -->
- <antcall target="generate_cpp">
- <param name="grammar_name" value="CPPSizeofExpressionParser"/>
- </antcall>
- <!-- Generate parser for disambiguating declarators -->
- <antcall target="generate_cpp">
- <param name="grammar_name" value="CPPNoFunctionDeclaratorParser"/>
- </antcall>
- <!-- Generate parser for disambiguating template parameters -->
- <antcall target="generate_cpp">
- <param name="grammar_name" value="CPPTemplateTypeParameterParser"/>
- </antcall>
- </target>
-
- <target name="generate_cpp">
- <antcall target="generate">
- <param name="grammar_dir" value="cpp"/>
- <param name="output_dir" value="${cpp_location}"/>
- <param name="grammar_name" value="${grammar_name}"/>
- </antcall>
- </target>
-
-
- <target name="gpp">
- <description>Generate the GCC parser</description>
- <!-- Generate main parser -->
- <antcall target="generate_gpp">
- <param name="grammar_name" value="GPPParser"/>
- </antcall>
- <antcall target="generate_gpp">
- <param name="grammar_name" value="GPPSizeofExpressionParser"/>
- </antcall>
- </target>
-
-
- <target name="generate_gpp">
- <antcall target="generate">
- <param name="grammar_dir" value="gpp"/>
- <param name="output_dir" value="${gpp_location}"/>
- <param name="grammar_name" value="${grammar_name}"/>
- </antcall>
- </target>
-
-
-
-
-
-</project> \ No newline at end of file
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/grammar/c99/C99ExpressionParser.g b/lrparser/org.eclipse.cdt.core.lrparser/grammar/c99/C99ExpressionParser.g
deleted file mode 100644
index 48a1934c59e..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/grammar/c99/C99ExpressionParser.g
+++ /dev/null
@@ -1,40 +0,0 @@
------------------------------------------------------------------------------------
--- Copyright (c) 2006, 2008 IBM Corporation and others.
--- This program and the accompanying materials
--- are made available under the terms of the Eclipse Public License 2.0
--- which accompanies this distribution, and is available at
--- https://www.eclipse.org/legal/epl-2.0/
---
--- SPDX-License-Identifier: EPL-2.0
---
--- Contributors:
--- IBM Corporation - initial API and implementation
------------------------------------------------------------------------------------
-
-%options la=2
-%options package=org.eclipse.cdt.internal.core.dom.lrparser.c99
-%options template=LRSecondaryParserTemplate.g
-
--- All we need to do is import the main parser and redefine the start symbol.
-
-
-$Import
- C99Grammar.g
-$End
-
-$Define
- $ast_class /. IASTExpression ./
-$End
-
-$Start
- expression_parser_start
-$End
-
-$Rules
-
- expression_parser_start
- ::= expression
- | ERROR_TOKEN
- /. $Build consumeEmpty(); $EndBuild ./
-
-$End \ No newline at end of file
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/grammar/c99/C99Grammar.g b/lrparser/org.eclipse.cdt.core.lrparser/grammar/c99/C99Grammar.g
deleted file mode 100644
index 50b8746049e..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/grammar/c99/C99Grammar.g
+++ /dev/null
@@ -1,1006 +0,0 @@
------------------------------------------------------------------------------------
--- Copyright (c) 2006, 2010 IBM Corporation and others.
--- This program and the accompanying materials
--- are made available under the terms of the Eclipse Public License 2.0
--- which accompanies this distribution, and is available at
--- https://www.eclipse.org/legal/epl-2.0/
---
--- SPDX-License-Identifier: EPL-2.0
---
--- Contributors:
--- IBM Corporation - initial API and implementation
------------------------------------------------------------------------------------
-
-$Terminals
-
- -- Keywords
-
- auto break case char const continue default do
- double else enum extern float for goto if
- inline int long register restrict return short signed
- sizeof static struct switch typedef union unsigned void
- volatile while _Bool _Complex _Imaginary
-
- -- Literals
-
- integer floating charconst stringlit
-
- -- identifiers
-
- identifier
-
- -- Special tokens used in content assist
-
- Completion
- EndOfCompletion
-
- -- Unrecognized token
-
- Invalid
-
- -- Punctuation (with aliases to make grammar more readable)
-
- LeftBracket ::= '['
- LeftParen ::= '('
- LeftBrace ::= '{'
- Dot ::= '.'
- Arrow ::= '->'
- PlusPlus ::= '++'
- MinusMinus ::= '--'
- And ::= '&'
- Star ::= '*'
- Plus ::= '+'
- Minus ::= '-'
- Tilde ::= '~'
- Bang ::= '!'
- Slash ::= '/'
- Percent ::= '%'
- RightShift ::= '>>'
- LeftShift ::= '<<'
- LT ::= '<'
- GT ::= '>'
- LE ::= '<='
- GE ::= '>='
- EQ ::= '=='
- NE ::= '!='
- Caret ::= '^'
- Or ::= '|'
- AndAnd ::= '&&'
- OrOr ::= '||'
- Question ::= '?'
- Colon ::= ':'
- DotDotDot ::= '...'
- Assign ::= '='
- StarAssign ::= '*='
- SlashAssign ::= '/='
- PercentAssign ::= '%='
- PlusAssign ::= '+='
- MinusAssign ::= '-='
- RightShiftAssign ::= '>>='
- LeftShiftAssign ::= '<<='
- AndAssign ::= '&='
- CaretAssign ::= '^='
- OrAssign ::= '|='
- Comma ::= ','
-
- RightBracket -- these four have special rules for content assist
- RightParen
- RightBrace
- SemiColon
-
-
-$End
-
-
-$Globals
-/.
- import org.eclipse.cdt.internal.core.dom.parser.c.CNodeFactory;
- import org.eclipse.cdt.core.dom.lrparser.action.c99.C99BuildASTParserAction;
- import org.eclipse.cdt.core.dom.lrparser.action.c99.C99SecondaryParserFactory;
-./
-$End
-
--- TODO move this code into a common template
-
-$Define
- $build_action_class /. C99BuildASTParserAction ./
- $node_factory_create_expression /. CNodeFactory.getDefault() ./
- $parser_factory_create_expression /. C99SecondaryParserFactory.getDefault() ./
-$End
-
-
-
-$Rules
-
--------------------------------------------------------------------------------------------
--- AST scopes
--------------------------------------------------------------------------------------------
-
-
-<openscope-ast>
- ::= $empty
- /. $Build openASTScope(); $EndBuild ./
-
-<empty>
- ::= $empty
- /. $Build consumeEmpty(); $EndBuild ./
-
-
--------------------------------------------------------------------------------------------
--- Content assist
--------------------------------------------------------------------------------------------
-
--- The EndOfCompletion token is a special token that matches some punctuation.
--- These tokens allow the parse to complete successfully after a Completion token
--- is encountered.
-
-
-']' ::=? 'RightBracket'
- | 'EndOfCompletion'
-
-')' ::=? 'RightParen'
- | 'EndOfCompletion'
-
-'}' ::=? 'RightBrace'
- | 'EndOfCompletion'
-
-';' ::=? 'SemiColon'
- | 'EndOfCompletion'
-
-
-
--------------------------------------------------------------------------------------------
--- Expressions
--------------------------------------------------------------------------------------------
-
-identifier_token
- ::= 'identifier'
- | 'Completion'
-
-
-literal
- ::= 'integer'
- /. $Build consumeExpressionLiteral(IASTLiteralExpression.lk_integer_constant); $EndBuild ./
- | 'floating'
- /. $Build consumeExpressionLiteral(IASTLiteralExpression.lk_float_constant); $EndBuild ./
- | 'charconst'
- /. $Build consumeExpressionLiteral(IASTLiteralExpression.lk_char_constant); $EndBuild ./
- | 'stringlit'
- /. $Build consumeExpressionLiteral(IASTLiteralExpression.lk_string_literal); $EndBuild ./
-
-
-primary_expression
- ::= literal
- | primary_expression_id
- /. $Build consumeExpressionID(); $EndBuild ./
- | '(' expression ')'
- /. $Build consumeExpressionBracketed(); $EndBuild ./
-
-
-primary_expression_id
- ::= identifier_token
-
-
-postfix_expression
- ::= primary_expression
- | postfix_expression '[' expression ']'
- /. $Build consumeExpressionArraySubscript(); $EndBuild ./
- | postfix_expression '(' expression_list_opt ')'
- /. $Build consumeExpressionFunctionCall(); $EndBuild ./
- | postfix_expression '.' member_name
- /. $Build consumeExpressionFieldReference(false); $EndBuild ./
- | postfix_expression '->' member_name
- /. $Build consumeExpressionFieldReference(true); $EndBuild ./
- | postfix_expression '++'
- /. $Build consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixIncr); $EndBuild ./
- | postfix_expression '--'
- /. $Build consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixDecr); $EndBuild ./
- | '(' type_id ')' initializer_list
- /. $Build consumeExpressionTypeIdInitializer(); $EndBuild ./
-
-
-comma_opt
- ::= ',' | $empty
-
-
-member_name
- ::= identifier_token
-
-
-unary_expression
- ::= postfix_expression
- | '++' unary_expression
- /. $Build consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixIncr); $EndBuild ./
- | '--' unary_expression
- /. $Build consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixDecr); $EndBuild ./
- | '&' cast_expression
- /. $Build consumeExpressionUnaryOperator(IASTUnaryExpression.op_amper); $EndBuild ./
- | '*' cast_expression
- /. $Build consumeExpressionUnaryOperator(IASTUnaryExpression.op_star); $EndBuild ./
- | '+' cast_expression
- /. $Build consumeExpressionUnaryOperator(IASTUnaryExpression.op_plus); $EndBuild ./
- | '-' cast_expression
- /. $Build consumeExpressionUnaryOperator(IASTUnaryExpression.op_minus); $EndBuild ./
- | '~' cast_expression
- /. $Build consumeExpressionUnaryOperator(IASTUnaryExpression.op_tilde); $EndBuild ./
- | '!' cast_expression
- /. $Build consumeExpressionUnaryOperator(IASTUnaryExpression.op_not); $EndBuild ./
- | 'sizeof' unary_expression
- /. $Build consumeExpressionUnaryOperator(IASTUnaryExpression.op_sizeof); $EndBuild ./
- | 'sizeof' '(' type_id ')'
- /. $Build consumeExpressionTypeId(IASTTypeIdExpression.op_sizeof); $EndBuild ./
-
-
-cast_expression
- ::= unary_expression
- | '(' type_id ')' cast_expression
- /. $Build consumeExpressionCast(IASTCastExpression.op_cast); $EndBuild ./
-
-
-multiplicative_expression
- ::= cast_expression
- | multiplicative_expression '*' cast_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_multiply); $EndBuild ./
- | multiplicative_expression '/' cast_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_divide); $EndBuild ./
- | multiplicative_expression '%' cast_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_modulo); $EndBuild ./
-
-
-additive_expression
- ::= multiplicative_expression
- | additive_expression '+' multiplicative_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_plus); $EndBuild ./
- | additive_expression '-' multiplicative_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_minus); $EndBuild ./
-
-
-shift_expression
- ::= additive_expression
- | shift_expression '<<' additive_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftLeft); $EndBuild ./
- | shift_expression '>>' additive_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftRight); $EndBuild ./
-
-
-relational_expression
- ::= shift_expression
- | relational_expression '<' shift_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_lessThan); $EndBuild ./
- | relational_expression '>' shift_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_greaterThan); $EndBuild ./
- | relational_expression '<=' shift_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_lessEqual); $EndBuild ./
- | relational_expression '>=' shift_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_greaterEqual); $EndBuild ./
-
-
-equality_expression
- ::= relational_expression
- | equality_expression '==' relational_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_equals); $EndBuild ./
- | equality_expression '!=' relational_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_notequals); $EndBuild ./
-
-
-and_expression
- ::= equality_expression
- | and_expression '&' equality_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryAnd); $EndBuild ./
-
-
-exclusive_or_expression
- ::= and_expression
- | exclusive_or_expression '^' and_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryXor); $EndBuild ./
-
-
-inclusive_or_expression
- ::= exclusive_or_expression
- | inclusive_or_expression '|' exclusive_or_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryOr); $EndBuild ./
-
-
-logical_and_expression
- ::= inclusive_or_expression
- | logical_and_expression '&&' inclusive_or_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_logicalAnd); $EndBuild ./
-
-
-logical_or_expression
- ::= logical_and_expression
- | logical_or_expression '||' logical_and_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_logicalOr); $EndBuild ./
-
-
-conditional_expression
- ::= logical_or_expression
- | logical_or_expression '?' expression ':' assignment_expression
- /. $Build consumeExpressionConditional(); $EndBuild ./
-
-
-assignment_expression
- ::= conditional_expression
- | unary_expression '=' assignment_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_assign); $EndBuild ./
- | unary_expression '*=' assignment_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_multiplyAssign); $EndBuild ./
- | unary_expression '/=' assignment_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_divideAssign); $EndBuild ./
- | unary_expression '%=' assignment_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_moduloAssign); $EndBuild ./
- | unary_expression '+=' assignment_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_plusAssign); $EndBuild ./
- | unary_expression '-=' assignment_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_minusAssign); $EndBuild ./
- | unary_expression '<<=' assignment_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftLeftAssign); $EndBuild ./
- | unary_expression '>>=' assignment_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftRightAssign); $EndBuild ./
- | unary_expression '&=' assignment_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryAndAssign); $EndBuild ./
- | unary_expression '^=' assignment_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryXorAssign); $EndBuild ./
- | unary_expression '|=' assignment_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryOrAssign); $EndBuild ./
-
-
--- special rule to avoid conflict between problem statements and problem expressions
-expression_in_statement
- ::= expression_list
-
-
-expression
- ::= expression_list
-
-
-expression_list
- ::= <openscope-ast> expression_list_actual
- /. $Build consumeExpressionList(); $EndBuild ./
-
-
-expression_list_opt
- ::= expression_list
- | $empty
- /. $Build consumeEmpty(); $EndBuild ./
-
-
-expression_list_actual
- ::= assignment_expression
- | expression_list_actual ',' assignment_expression
-
-
-constant_expression
- ::= conditional_expression
-
-
--------------------------------------------------------------------------------------------
--- Statements
--------------------------------------------------------------------------------------------
-
-
-
-statement
- ::= labeled_statement
- | compound_statement
- | expression_statement
- | selection_statement
- | iteration_statement
- | jump_statement
- | ERROR_TOKEN
- /. $Build consumeStatementProblem(); $EndBuild ./
-
-
-labeled_statement
- ::= identifier_token ':' statement
- /. $Build consumeStatementLabeled(); $EndBuild ./
- | 'case' constant_expression ':' statement
- /. $Build consumeStatementCase(); $EndBuild ./
- | 'default' ':' statement
- /. $Build consumeStatementDefault(); $EndBuild ./
-
-
-compound_statement
- ::= '{' '}'
- /. $Build consumeStatementCompoundStatement(false); $EndBuild ./
- | '{' <openscope-ast> block_item_list '}'
- /. $Build consumeStatementCompoundStatement(true); $EndBuild ./
-
-
-block_item_list
- ::= block_item
- | block_item_list block_item
-
-
-block_item
- ::= statement
- | declaration
- /. $Build consumeStatementDeclarationWithDisambiguation(); $EndBuild ./
-
-
-expression_statement
- ::= ';'
- /. $Build consumeStatementNull(); $EndBuild ./
- | expression_in_statement ';'
- /. $Build consumeStatementExpression(); $EndBuild ./
-
-
-selection_statement
- ::= 'if' '(' expression ')' statement
- /. $Build consumeStatementIf(false); $EndBuild ./
- | 'if' '(' expression ')' statement 'else' statement
- /. $Build consumeStatementIf(true); $EndBuild ./
- | 'switch' '(' expression ')' statement
- /. $Build consumeStatementSwitch(); $EndBuild ./
-
-
-expression_opt
- ::= expression
- | $empty
- /. $Build consumeEmpty(); $EndBuild ./
-
-
-iteration_statement
- ::= 'do' statement 'while' '(' expression ')' ';'
- /. $Build consumeStatementDoLoop(true); $EndBuild ./
- | 'do' statement
- /. $Build consumeStatementDoLoop(false); $EndBuild ./
- | 'while' '(' expression ')' statement
- /. $Build consumeStatementWhileLoop(); $EndBuild ./
- | 'for' '(' expression_opt ';' expression_opt ';' expression_opt ')' statement
- /. $Build consumeStatementForLoop(); $EndBuild ./
- | 'for' '(' declaration expression_opt ';' expression_opt ')' statement
- /. $Build consumeStatementForLoop(); $EndBuild ./
-
-
-jump_statement
- ::= 'goto' identifier_token ';'
- /. $Build consumeStatementGoto(); $EndBuild ./
- | 'continue' ';'
- /. $Build consumeStatementContinue(); $EndBuild ./
- | 'break' ';'
- /. $Build consumeStatementBreak(); $EndBuild ./
- | 'return' ';'
- /. $Build consumeStatementReturn(false); $EndBuild ./
- | 'return' expression ';'
- /. $Build consumeStatementReturn(true); $EndBuild ./
-
-
-
--------------------------------------------------------------------------------------------
--- Declarations
--------------------------------------------------------------------------------------------
-
-
-
-declaration
- ::= declaration_specifiers ';'
- /. $Build consumeDeclarationSimple(false); $EndBuild ./
- | declaration_specifiers <openscope-ast> init_declarator_list ';'
- /. $Build consumeDeclarationSimple(true); $EndBuild ./
-
-
-declaration_specifiers
- ::= <openscope-ast> simple_declaration_specifiers
- /. $Build consumeDeclarationSpecifiersSimple(); $EndBuild ./
- | <openscope-ast> struct_or_union_declaration_specifiers
- /. $Build consumeDeclarationSpecifiersStructUnionEnum(); $EndBuild ./
- | <openscope-ast> elaborated_declaration_specifiers
- /. $Build consumeDeclarationSpecifiersStructUnionEnum(); $EndBuild ./
- | <openscope-ast> enum_declaration_specifiers
- /. $Build consumeDeclarationSpecifiersStructUnionEnum(); $EndBuild ./
- | <openscope-ast> typdef_name_declaration_specifiers
- /. $Build consumeDeclarationSpecifiersTypedefName(); $EndBuild ./
-
-
-no_type_declaration_specifier
- ::= storage_class_specifier
- | type_qualifier
- | function_specifier
-
-
-no_type_declaration_specifiers
- ::= no_type_declaration_specifier
- | no_type_declaration_specifiers no_type_declaration_specifier
-
-
-simple_declaration_specifiers
- ::= simple_type_specifier
- | no_type_declaration_specifiers simple_type_specifier
- | simple_declaration_specifiers simple_type_specifier
- | simple_declaration_specifiers no_type_declaration_specifier
-
-
-struct_or_union_declaration_specifiers
- ::= struct_or_union_specifier
- | no_type_declaration_specifiers struct_or_union_specifier
- | struct_or_union_declaration_specifiers no_type_declaration_specifier
-
-
-elaborated_declaration_specifiers
- ::= elaborated_specifier
- | no_type_declaration_specifiers elaborated_specifier
- | elaborated_declaration_specifiers no_type_declaration_specifier
-
-
-enum_declaration_specifiers
- ::= enum_specifier
- | no_type_declaration_specifiers enum_specifier
- | enum_declaration_specifiers no_type_declaration_specifier
-
-
-typdef_name_declaration_specifiers
- ::= type_name_specifier
- | no_type_declaration_specifiers type_name_specifier
- | typdef_name_declaration_specifiers no_type_declaration_specifier
-
-
-init_declarator_list
- ::= init_declarator
- | init_declarator_list ',' init_declarator
-
-
-init_declarator
- ::= complete_declarator
- | complete_declarator '=' initializer
- /. $Build consumeDeclaratorWithInitializer(true); $EndBuild ./
-
-
-complete_declarator
- ::= declarator
-
-
-storage_class_specifier
- ::= storage_class_specifier_token
- /. $Build consumeToken(); $EndBuild ./
-
-
-storage_class_specifier_token
- ::= 'typedef'
- | 'extern'
- | 'static'
- | 'auto'
- | 'register'
-
-
-simple_type_specifier
- ::= simple_type_specifier_token
- /. $Build consumeToken(); $EndBuild ./
-
-simple_type_specifier_token
- ::= 'void'
- | 'char'
- | 'short'
- | 'int'
- | 'long'
- | 'float'
- | 'double'
- | 'signed'
- | 'unsigned'
- | '_Bool'
- | '_Complex'
- | '_Imaginary'
-
-
-type_name_specifier
- ::= identifier_token
- /. $Build consumeToken(); $EndBuild ./
-
-
-
-struct_or_union_specifier
- ::= struct_or_union struct_or_union_specifier_hook '{' <openscope-ast> struct_declaration_list_opt '}'
- /. $Build consumeTypeSpecifierComposite(false); $EndBuild ./
- | struct_or_union struct_or_union_specifier_hook identifier_token struct_or_union_specifier_suffix_hook '{' <openscope-ast> struct_declaration_list_opt '}'
- /. $Build consumeTypeSpecifierComposite(true); $EndBuild ./
-
-struct_or_union_specifier_hook
- ::= $empty
-
-struct_or_union_specifier_suffix_hook
- ::= $empty
-
-struct_or_union
- ::= 'struct'
- | 'union'
-
-
-elaborated_specifier
- ::= 'struct' elaborated_specifier_hook identifier_token
- /. $Build consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_struct); $EndBuild ./
- | 'union' elaborated_specifier_hook identifier_token
- /. $Build consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_union); $EndBuild ./
- | 'enum' elaborated_specifier_hook identifier_token
- /. $Build consumeTypeSpecifierElaborated(IASTElaboratedTypeSpecifier.k_enum); $EndBuild ./
-
-elaborated_specifier_hook
- ::= $empty
-
-
-struct_declaration_list_opt
- ::= struct_declaration_list
- | $empty
-
-struct_declaration_list
- ::= struct_declaration
- | struct_declaration_list struct_declaration
-
-
-struct_declaration
- ::= specifier_qualifier_list <openscope-ast> struct_declarator_list ';' -- regular declarators plus bit fields
- /. $Build consumeStructDeclaration(true); $EndBuild ./
- | specifier_qualifier_list ';'
- /. $Build consumeStructDeclaration(false); $EndBuild ./
- | ERROR_TOKEN
- /. $Build consumeDeclarationProblem(); $EndBuild ./
-
-
--- just reuse declaration_specifiers, makes grammar a bit more lenient but thats OK
-specifier_qualifier_list
- ::= declaration_specifiers
-
-
-struct_declarator_list
- ::= complete_struct_declarator
- | struct_declarator_list ',' complete_struct_declarator
-
-
-complete_struct_declarator
- ::= struct_declarator
-
-
-struct_declarator
- ::= declarator
- | ':' constant_expression
- /. $Build consumeBitField(false); $EndBuild ./
- | declarator ':' constant_expression
- /. $Build consumeBitField(true); $EndBuild ./
-
-
-enum_specifier
- ::= 'enum' enum_specifier_hook '{' <openscope-ast> enumerator_list_opt comma_opt '}'
- /. $Build consumeTypeSpecifierEnumeration(false); $EndBuild ./
- | 'enum' enum_specifier_hook identifier_token '{' <openscope-ast> enumerator_list_opt comma_opt '}'
- /. $Build consumeTypeSpecifierEnumeration(true); $EndBuild ./
-
-enum_specifier_hook
- ::= $empty
-
-
-enumerator_list_opt
- ::= enumerator_list
- | $empty
-
-
-enumerator_list
- ::= enumerator
- | enumerator_list ',' enumerator
-
-
-enumerator
- ::= identifier_token
- /. $Build consumeEnumerator(false); $EndBuild ./
- | identifier_token '=' constant_expression
- /. $Build consumeEnumerator(true); $EndBuild ./
-
-
-type_qualifier
- ::= type_qualifier_token
- /. $Build consumeToken(); $EndBuild ./
-
-
-type_qualifier_token
- ::= 'const'
- | 'restrict'
- | 'volatile'
-
-
-function_specifier
- ::= 'inline'
- /. $Build consumeToken(); $EndBuild ./
-
-
-declarator
- ::= direct_declarator
- | <openscope-ast> pointer_seq direct_declarator
- /. $Build consumeDeclaratorWithPointer(true); $EndBuild ./
-
-
-direct_declarator
- ::= array_direct_declarator
- | function_prototype_direct_declarator
- | basic_direct_declarator
- | knr_direct_declarator
-
-
-basic_direct_declarator
- ::= declarator_id_name
- /. $Build consumeDirectDeclaratorIdentifier(); $EndBuild ./
- | '(' declarator ')'
- /. $Build consumeDirectDeclaratorBracketed(); $EndBuild ./
-
-
-declarator_id_name
- ::= 'identifier'
- /. $Build consumeIdentifierName(); $EndBuild ./
-
-
-array_direct_declarator
- ::= basic_direct_declarator array_modifier
- /. $Build consumeDirectDeclaratorArrayDeclarator(true); $EndBuild ./
- | array_direct_declarator array_modifier
- /. $Build consumeDirectDeclaratorArrayDeclarator(true); $EndBuild ./
-
-
-function_prototype_direct_declarator
- ::= function_direct_declarator
-
-
-function_direct_declarator
- ::= basic_direct_declarator '(' <openscope-ast> parameter_type_list ')'
- /. $Build consumeDirectDeclaratorFunctionDeclarator(true, true); $EndBuild ./
- | basic_direct_declarator '(' ')'
- /. $Build consumeDirectDeclaratorFunctionDeclarator(true, false); $EndBuild ./
-
-
-function_declarator
- ::= function_direct_declarator
- | <openscope-ast> pointer_seq function_direct_declarator
- /. $Build consumeDeclaratorWithPointer(true); $EndBuild ./
-
-
--- This is a hack because the parser cannot tell the difference between
--- plain identifiers and types. Because of this an identifier_list would
--- always be parsed as a parameter_type_list instead. In a KnR funciton
--- definition we can use the extra list of declarators to disambiguate.
--- This rule should be merged back into direct_declarator if type info is
--- added to the parser.
-
-knr_direct_declarator
- ::= basic_direct_declarator '(' <openscope-ast> identifier_list ')'
- /. $Build consumeDirectDeclaratorFunctionDeclaratorKnR(); $EndBuild ./
-
-
-knr_function_declarator
- ::= knr_direct_declarator
- | <openscope-ast> pointer_seq knr_direct_declarator
- /. $Build consumeDeclaratorWithPointer(true); $EndBuild ./
-
-
-identifier_list
- ::= 'identifier'
- /. $Build consumeIdentifierKnR(); $EndBuild ./
- | identifier_list ',' 'identifier'
- /. $Build consumeIdentifierKnR(); $EndBuild ./
-
-
-array_modifier
- ::= '[' ']'
- /. $Build consumeDirectDeclaratorArrayModifier(false); $EndBuild ./
- | '[' <openscope-ast> array_modifier_type_qualifiers ']'
- /. $Build consumeDirectDeclaratorModifiedArrayModifier(false, false, true, false); $EndBuild ./
- | '[' assignment_expression ']'
- /. $Build consumeDirectDeclaratorArrayModifier(true); $EndBuild ./
- | '[' <openscope-ast> array_modifier_type_qualifiers assignment_expression ']'
- /. $Build consumeDirectDeclaratorModifiedArrayModifier(false, false, true, true); $EndBuild ./
- | '[' 'static' assignment_expression ']'
- /. $Build consumeDirectDeclaratorModifiedArrayModifier(true, false, false, true); $EndBuild ./
- | '[' 'static' <openscope-ast> array_modifier_type_qualifiers assignment_expression ']'
- /. $Build consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true); $EndBuild ./
- | '[' <openscope-ast> array_modifier_type_qualifiers 'static' assignment_expression ']'
- /. $Build consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true); $EndBuild ./
- | '[' '*' ']'
- /. $Build consumeDirectDeclaratorModifiedArrayModifier(false, true, false, false); $EndBuild ./
- | '[' <openscope-ast> array_modifier_type_qualifiers '*' ']'
- /. $Build consumeDirectDeclaratorModifiedArrayModifier(false, true, true, false); $EndBuild ./
-
-
-array_modifier_type_qualifiers
- ::= type_qualifier_list
-
-
-pointer_seq
- ::= pointer_hook '*' pointer_hook
- /. $Build consumePointer(); $EndBuild ./
- | pointer_seq pointer_hook '*' pointer_hook
- /. $Build consumePointer(); $EndBuild ./
- | pointer_hook '*' pointer_hook <openscope-ast> type_qualifier_list
- /. $Build consumePointerTypeQualifierList(); $EndBuild ./
- | pointer_seq pointer_hook '*' pointer_hook <openscope-ast> type_qualifier_list
- /. $Build consumePointerTypeQualifierList(); $EndBuild ./
-
-pointer_hook
- ::= $empty
-
-
-type_qualifier_list
- ::= type_qualifier
- | type_qualifier_list type_qualifier
-
-
-parameter_type_list
- ::= parameter_list
- /. $Build consumeEmpty(); $EndBuild ./
- | parameter_list ',' '...'
- /. $Build consumePlaceHolder(); $EndBuild ./
- | '...' -- not spec
- /. $Build consumePlaceHolder(); $EndBuild ./
-
-
-parameter_list
- ::= parameter_declaration
- | parameter_list ',' parameter_declaration
-
-
-parameter_declaration
- ::= declaration_specifiers complete_parameter_declarator
- /. $Build consumeParameterDeclaration(); $EndBuild ./
- | declaration_specifiers
- /. $Build consumeParameterDeclarationWithoutDeclarator(); $EndBuild ./
-
-
-complete_parameter_declarator
- ::= declarator
- | abstract_declarator
-
-
-
--- only used in expressions, eg) sizeof, casts etc...
-type_id
- ::= specifier_qualifier_list
- /. $Build consumeTypeId(false); $EndBuild ./
- | specifier_qualifier_list abstract_declarator
- /. $Build consumeTypeId(true); $EndBuild ./
-
-
-abstract_declarator -- a declarator that does not include an identifier
- ::= direct_abstract_declarator
- | <openscope-ast> pointer_seq
- /. $Build consumeDeclaratorWithPointer(false); $EndBuild ./
- | <openscope-ast> pointer_seq direct_abstract_declarator
- /. $Build consumeDeclaratorWithPointer(true); $EndBuild ./
-
-
-direct_abstract_declarator
- ::= basic_direct_abstract_declarator
- | array_direct_abstract_declarator
- | function_direct_abstract_declarator
-
-
-basic_direct_abstract_declarator
- ::= '(' abstract_declarator ')'
- /. $Build consumeDirectDeclaratorBracketed(); $EndBuild ./
-
-
-array_direct_abstract_declarator
- ::= array_modifier
- /. $Build consumeDirectDeclaratorArrayDeclarator(false); $EndBuild ./
- | array_direct_abstract_declarator array_modifier
- /. $Build consumeDirectDeclaratorArrayDeclarator(true); $EndBuild ./
- | basic_direct_abstract_declarator array_modifier
- /. $Build consumeDirectDeclaratorArrayDeclarator(true); $EndBuild ./
-
-
-function_direct_abstract_declarator
- ::= '(' ')'
- /. $Build consumeDirectDeclaratorFunctionDeclarator(false, false); $EndBuild ./
- | basic_direct_abstract_declarator '(' ')'
- /. $Build consumeDirectDeclaratorFunctionDeclarator(true, false); $EndBuild ./
- | '(' <openscope-ast> parameter_type_list ')'
- /. $Build consumeDirectDeclaratorFunctionDeclarator(false, true); $EndBuild ./
- | basic_direct_abstract_declarator '(' <openscope-ast> parameter_type_list ')'
- /. $Build consumeDirectDeclaratorFunctionDeclarator(true, true); $EndBuild ./
-
-
-initializer
- ::= assignment_expression
- /. $Build consumeInitializer(); $EndBuild ./
- | initializer_list
---CDT_70_FIX_FROM_50-#4
- /. $Build consumeInitializer(); $EndBuild ./
-
-
-initializer_list
- ::= start_initializer_list '{' <openscope-ast> initializer_seq comma_opt '}' end_initializer_list
- /. $Build consumeInitializerList(); $EndBuild ./
- | '{' <openscope-ast> '}'
- /. $Build consumeInitializerList(); $EndBuild ./
-
-
-start_initializer_list
- ::= $empty
- /. $Build initializerListStart(); $EndBuild ./
-
-end_initializer_list
- ::= $empty
- /. $Build initializerListEnd(); $EndBuild ./
-
-
-initializer_seq
- ::= initializer
- | designated_initializer
- | initializer_seq ',' initializer
- | initializer_seq ',' designated_initializer
-
-
-designated_initializer
- ::= <openscope-ast> designation '=' initializer
- /. $Build consumeInitializerDesignated(); $EndBuild ./
-
-
-designation
- ::= designator_list
-
-
-designator_list
- ::= designator_base
- | designator_list designator
-
-
-designator_base
- ::= '[' constant_expression ']'
- /. $Build consumeDesignatorArray(); $EndBuild ./
- | '.' identifier_token
- /. $Build consumeDesignatorField(); $EndBuild ./
-
-designator
- ::= '[' constant_expression ']'
- /. $Build consumeDesignatorArray(); $EndBuild ./
- | '.' identifier_token
- /. $Build consumeDesignatorField(); $EndBuild ./
-
-
--------------------------------------------------------------------------------------------
--- External Definitions
--------------------------------------------------------------------------------------------
-
-translation_unit
- ::= external_declaration_list
- /. $Build consumeTranslationUnit(); $EndBuild ./
- | $empty
- /. $Build consumeTranslationUnit(); $EndBuild ./
-
-
-external_declaration_list
- ::= external_declaration
- | external_declaration_list external_declaration
-
-
-external_declaration
- ::= function_definition
- | declaration
- | ';'
- /. $Build consumeDeclarationEmpty(); $EndBuild ./
- | ERROR_TOKEN
- /. $Build consumeDeclarationProblem(); $EndBuild ./
-
-
--- Used by KnR
-declaration_list
- ::= declaration
- | declaration_list declaration
-
-
--- The extra <openscope-ast> nonterminal before declarator in this rule is only there
--- to avoid a shift/reduce error with the rule for declaration.
--- The symbol table scoped is opened in the rule for function_direct_declarator
-function_definition
- ::= normal_function_definition
- -- this rule is here as a special case (its not C99 spec) just to support implicit int in function definitions
- | <openscope-ast> function_declarator function_body
- /. $Build consumeFunctionDefinition(false); $EndBuild ./
- | declaration_specifiers <openscope-ast> knr_function_declarator <openscope-ast> declaration_list compound_statement
- /. $Build consumeFunctionDefinitionKnR(); $EndBuild ./
-
-normal_function_definition
- ::= declaration_specifiers <openscope-ast> function_declarator function_body
- /. $Build consumeFunctionDefinition(true); $EndBuild ./
-
--- same syntax as compound_statement but a symbol table scope isn't opened
-function_body
- ::= '{' '}'
- /. $Build consumeStatementCompoundStatement(false); $EndBuild ./
- | '{' <openscope-ast> block_item_list '}'
- /. $Build consumeStatementCompoundStatement(true); $EndBuild ./
-
-$End
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/grammar/c99/C99NoCastExpressionParser.g b/lrparser/org.eclipse.cdt.core.lrparser/grammar/c99/C99NoCastExpressionParser.g
deleted file mode 100644
index cc2dd60556e..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/grammar/c99/C99NoCastExpressionParser.g
+++ /dev/null
@@ -1,42 +0,0 @@
------------------------------------------------------------------------------------
--- Copyright (c) 2006, 2009 IBM Corporation and others.
--- This program and the accompanying materials
--- are made available under the terms of the Eclipse Public License 2.0
--- which accompanies this distribution, and is available at
--- https://www.eclipse.org/legal/epl-2.0/
---
--- SPDX-License-Identifier: EPL-2.0
---
--- Contributors:
--- IBM Corporation - initial API and implementation
------------------------------------------------------------------------------------
-
-%options la=2
-%options package=org.eclipse.cdt.internal.core.dom.lrparser.c99
-%options template=LRSecondaryParserTemplate.g
-
-$Import
- C99Grammar.g
-$DropRules
-
- cast_expression
- ::= '(' type_id ')' cast_expression
-
-$End
-
-$Define
- $ast_class /. IASTExpression ./
-$End
-
-$Start
- no_cast_start
-$End
-
-$Rules
-
- no_cast_start
- ::= expression
- | ERROR_TOKEN
- /. $Build consumeEmpty(); $EndBuild ./
-
-$End \ No newline at end of file
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/grammar/c99/C99Parser.g b/lrparser/org.eclipse.cdt.core.lrparser/grammar/c99/C99Parser.g
deleted file mode 100644
index 2a2bdca5d87..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/grammar/c99/C99Parser.g
+++ /dev/null
@@ -1,27 +0,0 @@
------------------------------------------------------------------------------------
--- Copyright (c) 2006, 2008 IBM Corporation and others.
--- This program and the accompanying materials
--- are made available under the terms of the Eclipse Public License 2.0
--- which accompanies this distribution, and is available at
--- https://www.eclipse.org/legal/epl-2.0/
---
--- SPDX-License-Identifier: EPL-2.0
---
--- Contributors:
--- IBM Corporation - initial API and implementation
------------------------------------------------------------------------------------
-
-%options la=2
-%options package=org.eclipse.cdt.internal.core.dom.lrparser.c99
-%options template=LRParserTemplate.g
-
--- This file is needed because LPG won't allow redefinition of the
--- start symbol, so C99Grammar.g cannot define the start symbol.
-
-$Import
- C99Grammar.g
-$End
-
-$Start
- translation_unit
-$End \ No newline at end of file
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/grammar/c99/C99SizeofExpressionParser.g b/lrparser/org.eclipse.cdt.core.lrparser/grammar/c99/C99SizeofExpressionParser.g
deleted file mode 100644
index 0e475cd9a9c..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/grammar/c99/C99SizeofExpressionParser.g
+++ /dev/null
@@ -1,43 +0,0 @@
------------------------------------------------------------------------------------
--- Copyright (c) 2006, 2009 IBM Corporation and others.
--- This program and the accompanying materials
--- are made available under the terms of the Eclipse Public License 2.0
--- which accompanies this distribution, and is available at
--- https://www.eclipse.org/legal/epl-2.0/
---
--- SPDX-License-Identifier: EPL-2.0
---
--- Contributors:
--- IBM Corporation - initial API and implementation
------------------------------------------------------------------------------------
-
-%options la=2
-%options package=org.eclipse.cdt.internal.core.dom.lrparser.c99
-%options template=LRSecondaryParserTemplate.g
-
-
-$Import
- C99Grammar.g
-$DropRules
-
- unary_expression
- ::= 'sizeof' '(' type_id ')'
-
-$End
-
-$Define
- $ast_class /. IASTExpression ./
-$End
-
-$Start
- no_sizeof_type_id_start
-$End
-
-$Rules
-
- no_sizeof_type_id_start
- ::= expression
- | ERROR_TOKEN
- /. $Build consumeEmpty(); $EndBuild ./
-
-$End \ No newline at end of file
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/grammar/cpp/CPPExpressionParser.g b/lrparser/org.eclipse.cdt.core.lrparser/grammar/cpp/CPPExpressionParser.g
deleted file mode 100644
index 5d52628a86b..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/grammar/cpp/CPPExpressionParser.g
+++ /dev/null
@@ -1,39 +0,0 @@
------------------------------------------------------------------------------------
--- Copyright (c) 2006, 2008 IBM Corporation and others.
--- This program and the accompanying materials
--- are made available under the terms of the Eclipse Public License 2.0
--- which accompanies this distribution, and is available at
--- https://www.eclipse.org/legal/epl-2.0/
---
--- SPDX-License-Identifier: EPL-2.0
---
--- Contributors:
--- IBM Corporation - initial API and implementation
------------------------------------------------------------------------------------
-
-%options la=2
-%options package=org.eclipse.cdt.internal.core.dom.lrparser.cpp
-%options template=LRSecondaryParserTemplate.g
-
--- All we need to do is import the main parser and redefine the start symbol.
-
-$Import
- CPPGrammar.g
-$End
-
-$Define
- $ast_class /. IASTExpression ./
-$End
-
-$Start
- expression_parser_start
-$End
-
-$Rules
-
- expression_parser_start
- ::= expression
- | ERROR_TOKEN
- /. $Build consumeEmpty(); $EndBuild ./
-
-$End \ No newline at end of file
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/grammar/cpp/CPPGrammar.g b/lrparser/org.eclipse.cdt.core.lrparser/grammar/cpp/CPPGrammar.g
deleted file mode 100644
index b11e9c8457a..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/grammar/cpp/CPPGrammar.g
+++ /dev/null
@@ -1,1832 +0,0 @@
-----------------------------------------------------------------------------------
--- Copyright (c) 2006, 2010 IBM Corporation and others.
--- This program and the accompanying materials
--- are made available under the terms of the Eclipse Public License 2.0
--- which accompanies this distribution, and is available at
--- https://www.eclipse.org/legal/epl-2.0/
---
--- SPDX-License-Identifier: EPL-2.0
---
--- Contributors:
--- IBM Corporation - initial API and implementation
-----------------------------------------------------------------------------------
-
-
-$Terminals
-
- -- Keywords
-
- asm auto bool break case catch char class
- const const_cast continue default delete do
- double dynamic_cast else enum explicit export
- extern false float for friend goto if inline
- int long mutable namespace new operator private
- protected public register reinterpret_cast return
- short signed sizeof static static_cast struct
- switch template this throw try true typedef
- typeid typename union unsigned using virtual
- void volatile wchar_t while
-
- -- Literals
-
- integer floating charconst stringlit
-
- -- Identifiers
-
- identifier
-
- -- Special tokens used in content assist
-
- Completion
- EndOfCompletion
-
- -- Unrecognized token, not actually used anywhere in the grammar, always leads to syntax error
-
- Invalid
-
- -- Punctuation (with aliases to make grammar more readable)
-
- LeftBracket ::= '['
- LeftParen ::= '('
- Dot ::= '.'
- DotStar ::= '.*'
- Arrow ::= '->'
- ArrowStar ::= '->*'
- PlusPlus ::= '++'
- MinusMinus ::= '--'
- And ::= '&'
- Star ::= '*'
- Plus ::= '+'
- Minus ::= '-'
- Tilde ::= '~'
- Bang ::= '!'
- Slash ::= '/'
- Percent ::= '%'
- RightShift ::= '>>'
- LeftShift ::= '<<'
- LT ::= '<'
- GT ::= '>'
- LE ::= '<='
- GE ::= '>='
- EQ ::= '=='
- NE ::= '!='
- Caret ::= '^'
- Or ::= '|'
- AndAnd ::= '&&'
- OrOr ::= '||'
- Question ::= '?'
- Colon ::= ':'
- ColonColon ::= '::'
- DotDotDot ::= '...'
- Assign ::= '='
- StarAssign ::= '*='
- SlashAssign ::= '/='
- PercentAssign ::= '%='
- PlusAssign ::= '+='
- MinusAssign ::= '-='
- RightShiftAssign ::= '>>='
- LeftShiftAssign ::= '<<='
- AndAssign ::= '&='
- CaretAssign ::= '^='
- OrAssign ::= '|='
- Comma ::= ','
-
- RightBracket -- these four have special rules for content assist
- RightParen
- RightBrace
- SemiColon
- LeftBrace
-
-$End
-
-
-$Globals
-/.
- import org.eclipse.cdt.core.dom.ast.cpp.*;
- import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPNodeFactory;
- import org.eclipse.cdt.core.dom.lrparser.action.cpp.CPPBuildASTParserAction;
- import org.eclipse.cdt.core.dom.lrparser.action.cpp.CPPSecondaryParserFactory;
-./
-$End
-
-
-$Define
- $build_action_class /. CPPBuildASTParserAction ./
- $node_factory_create_expression /. CPPNodeFactory.getDefault() ./
- $parser_factory_create_expression /. CPPSecondaryParserFactory.getDefault() ./
-$End
-
-
-$Rules
-
-------------------------------------------------------------------------------------------
--- AST scoping
-------------------------------------------------------------------------------------------
-
-
-<openscope-ast>
- ::= $empty
- /. $Build openASTScope(); $EndBuild ./
-
-<empty>
- ::= $empty
- /. $Build consumeEmpty(); $EndBuild ./
-
-------------------------------------------------------------------------------------------
--- Content assist
-------------------------------------------------------------------------------------------
-
--- The EndOfCompletion token is a special token that matches some punctuation.
--- These tokens allow the parse to complete successfully after a Completion token
--- is encountered.
-
-
-']' ::=? 'RightBracket'
- | 'EndOfCompletion'
-
-')' ::=? 'RightParen'
- | 'EndOfCompletion'
-
-'}' ::=? 'RightBrace'
- | 'EndOfCompletion'
-
-';' ::=? 'SemiColon'
- | 'EndOfCompletion'
-
-'{' ::=? 'LeftBrace'
- | 'EndOfCompletion'
-
-
-
-------------------------------------------------------------------------------------------
--- Basic Concepts
-------------------------------------------------------------------------------------------
-
--- The extra external declaration rules are there just so that ERROR_TOKEN can be
--- caught at the top level.
-
-translation_unit
- ::= declaration_seq_opt
- /. $Build consumeTranslationUnit(); $EndBuild ./
-
-
-------------------------------------------------------------------------------------------
--- Expressions
-------------------------------------------------------------------------------------------
-
-identifier_token
- ::= 'identifier'
- | 'Completion'
-
-
-literal
- ::= 'integer'
- /. $Build consumeExpressionLiteral(ICPPASTLiteralExpression.lk_integer_constant); $EndBuild ./
- | 'floating'
- /. $Build consumeExpressionLiteral(ICPPASTLiteralExpression.lk_float_constant); $EndBuild ./
- | 'charconst'
- /. $Build consumeExpressionLiteral(ICPPASTLiteralExpression.lk_char_constant); $EndBuild ./
- | 'stringlit'
- /. $Build consumeExpressionLiteral(ICPPASTLiteralExpression.lk_string_literal); $EndBuild ./
- | 'true'
- /. $Build consumeExpressionLiteral(ICPPASTLiteralExpression.lk_true); $EndBuild ./
- | 'false'
- /. $Build consumeExpressionLiteral(ICPPASTLiteralExpression.lk_false); $EndBuild ./
- | 'this'
- /. $Build consumeExpressionLiteral(ICPPASTLiteralExpression.lk_this); $EndBuild ./
-
-
-primary_expression
- ::= literal
- | '(' expression ')'
- /. $Build consumeExpressionBracketed(); $EndBuild ./
- | id_expression
-
-
-id_expression
- ::= qualified_or_unqualified_name
- /. $Build consumeExpressionName(); $EndBuild ./
-
-
--- Pushes an IASTName on the stack, if you want an id expression then wrap the name
-qualified_or_unqualified_name
- ::= unqualified_id_name
- | qualified_id_name
-
-
-unqualified_id_name
- ::= identifier_name
- | operator_function_id_name
- | conversion_function_id_name
- | template_id_name
- | '~' identifier_token
- /. $Build consumeDestructorName(); $EndBuild ./
- | '~' template_id_name
- /. $Build consumeDestructorNameTemplateId(); $EndBuild ./
- -- | '~' class_name
-
-
-
--- wrap an identifier in a name node
-identifier_name
- ::= identifier_token
- /. $Build consumeIdentifierName(); $EndBuild ./
-
-
-template_opt
- ::= 'template'
- /. $Build consumePlaceHolder(); $EndBuild ./
- | $empty
- /. $Build consumeEmpty(); $EndBuild ./
-
-
--- the ::=? is necessary for example 8.2.1 in the C++ spec to parse correctly
-dcolon_opt
- ::=? '::'
- /. $Build consumeToken(); $EndBuild ./ -- need the actual token to compute offsets
- | $empty
- /. $Build consumeEmpty(); $EndBuild ./
-
-
-
-qualified_id_name
- ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name
- /. $Build consumeQualifiedId(true); $EndBuild ./
- | '::' unqualified_id_name
- /. $Build consumeGlobalQualifiedId(); $EndBuild ./
-
- --| '::' identifier_name
- -- /. $Build consumeGlobalQualifiedId(); $EndBuild ./
- --| '::' operator_function_id_name
- -- /. $Build consumeGlobalQualifiedId(); $EndBuild ./
- --| '::' template_id_name
- -- /. $Build consumeGlobalQualifiedId(); $EndBuild ./
-
-
-
---unqualified_id_with_template_name
--- ::= template_opt unqualified_id_name
--- /. $Build consumeNameWithTemplateKeyword(); $EndBuild ./
-
-
--- puts a list of names in reverse order on the stack
--- always ends with ::
--- this is the part of a qualified id that comes before the last ::
--- but does not include a :: at the front
-nested_name_specifier
- ::= class_or_namespace_name '::' nested_name_specifier_with_template
- /. $Build consumeNestedNameSpecifier(true); $EndBuild ./
- | class_or_namespace_name '::'
- /. $Build consumeNestedNameSpecifier(false); $EndBuild ./
-
-
-nested_name_specifier_with_template
- ::= class_or_namespace_name_with_template '::' nested_name_specifier_with_template
- /. $Build consumeNestedNameSpecifier(true); $EndBuild ./
- | class_or_namespace_name_with_template '::'
- /. $Build consumeNestedNameSpecifier(false); $EndBuild ./
-
-
-class_or_namespace_name_with_template
- ::= template_opt class_or_namespace_name
- /. $Build consumeNameWithTemplateKeyword(); $EndBuild ./
-
-
-
-nested_name_specifier_opt
- ::= nested_name_specifier
- | $empty
- /. $Build consumeNestedNameSpecifierEmpty(); $EndBuild ./
-
-
-class_or_namespace_name -- just identifiers
- ::= class_name
- --| namespace_name -- namespace_name name can only be an identifier token, which is already accepted by class_name
-
-
-postfix_expression
- ::= primary_expression
- | postfix_expression '[' expression ']'
- /. $Build consumeExpressionArraySubscript(); $EndBuild ./
- | postfix_expression '(' expression_list_opt ')'
- /. $Build consumeExpressionFunctionCall(); $EndBuild ./
- | simple_type_specifier '(' expression_list_opt ')' -- explicit type conversion operator
- /. $Build consumeExpressionSimpleTypeConstructor(); $EndBuild ./
- | 'typename' dcolon_opt nested_name_specifier <empty> identifier_name '(' expression_list_opt ')'
- /. $Build consumeExpressionTypeName(); $EndBuild ./
- | 'typename' dcolon_opt nested_name_specifier template_opt template_id_name '(' expression_list_opt ')'
- /. $Build consumeExpressionTypeName(); $EndBuild ./
- | postfix_expression '.' qualified_or_unqualified_name
- /. $Build consumeExpressionFieldReference(false, false); $EndBuild ./
- | postfix_expression '->' qualified_or_unqualified_name
- /. $Build consumeExpressionFieldReference(true, false); $EndBuild ./
- | postfix_expression '.' 'template' qualified_or_unqualified_name
- /. $Build consumeExpressionFieldReference(false, true); $EndBuild ./
- | postfix_expression '->' 'template' qualified_or_unqualified_name
- /. $Build consumeExpressionFieldReference(true, true); $EndBuild ./
- | postfix_expression '.' pseudo_destructor_name
- /. $Build consumeExpressionFieldReference(false, false); $EndBuild ./
- | postfix_expression '->' pseudo_destructor_name
- /. $Build consumeExpressionFieldReference(true, false); $EndBuild ./
- | postfix_expression '++'
- /. $Build consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixIncr); $EndBuild ./
- | postfix_expression '--'
- /. $Build consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixDecr); $EndBuild ./
- | 'dynamic_cast' '<' type_id '>' '(' expression ')'
- /. $Build consumeExpressionCast(ICPPASTCastExpression.op_dynamic_cast); $EndBuild ./
- | 'static_cast' '<' type_id '>' '(' expression ')'
- /. $Build consumeExpressionCast(ICPPASTCastExpression.op_static_cast); $EndBuild ./
- | 'reinterpret_cast' '<' type_id '>' '(' expression ')'
- /. $Build consumeExpressionCast(ICPPASTCastExpression.op_reinterpret_cast); $EndBuild ./
- | 'const_cast' '<' type_id '>' '(' expression ')'
- /. $Build consumeExpressionCast(ICPPASTCastExpression.op_const_cast); $EndBuild ./
- | 'typeid' '(' expression ')'
- /. $Build consumeExpressionUnaryOperator(ICPPASTUnaryExpression.op_typeid); $EndBuild ./
- | 'typeid' '(' type_id ')'
- /. $Build consumeExpressionTypeId(ICPPASTTypeIdExpression.op_typeid); $EndBuild ./
-
-
-
--- just names
--- Don't even know if I really need this rule, the DOM parser just parses qualified_or_unqualified_name
--- instead of pseudo_destructor_name. But the difference is I have different
--- token types, so maybe I do need this rule.
-pseudo_destructor_name
- ::= dcolon_opt nested_name_specifier_opt type_name '::' destructor_type_name
- /. $Build consumePsudoDestructorName(true); $EndBuild ./
- | dcolon_opt nested_name_specifier 'template' template_id_name '::' destructor_type_name
- /. $Build consumePsudoDestructorName(true); $EndBuild ./
- | dcolon_opt nested_name_specifier_opt destructor_type_name
- /. $Build consumePsudoDestructorName(false); $EndBuild ./
-
-
-destructor_type_name
- ::= '~' identifier_token
- /. $Build consumeDestructorName(); $EndBuild ./
- | '~' template_id_name
- /. $Build consumeDestructorNameTemplateId(); $EndBuild ./
-
-
---destructor_type_name
--- ::= '~' type_name
--- /. $Build consumeDestructorName(); $EndBuild ./
-
-
-
-unary_expression
- ::= postfix_expression
- | new_expression
- | delete_expression
- | '++' cast_expression
- /. $Build consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixIncr); $EndBuild ./
- | '--' cast_expression
- /. $Build consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixDecr); $EndBuild ./
- | '&' cast_expression
- /. $Build consumeExpressionUnaryOperator(IASTUnaryExpression.op_amper); $EndBuild ./
- | '*' cast_expression
- /. $Build consumeExpressionUnaryOperator(IASTUnaryExpression.op_star); $EndBuild ./
- | '+' cast_expression
- /. $Build consumeExpressionUnaryOperator(IASTUnaryExpression.op_plus); $EndBuild ./
- | '-' cast_expression
- /. $Build consumeExpressionUnaryOperator(IASTUnaryExpression.op_minus); $EndBuild ./
- | '~' cast_expression
- /. $Build consumeExpressionUnaryOperator(IASTUnaryExpression.op_tilde); $EndBuild ./
- | '!' cast_expression
- /. $Build consumeExpressionUnaryOperator(IASTUnaryExpression.op_not); $EndBuild ./
- | 'sizeof' unary_expression
- /. $Build consumeExpressionUnaryOperator(IASTUnaryExpression.op_sizeof); $EndBuild ./
- | 'sizeof' '(' type_id ')'
- /. $Build consumeExpressionTypeId(ICPPASTTypeIdExpression.op_sizeof); $EndBuild ./
-
-
-new_expression
- ::= dcolon_opt 'new' new_placement_opt new_type_id <openscope-ast> new_array_expressions_opt new_initializer_opt
- /. $Build consumeExpressionNew(true); $EndBuild ./
- | dcolon_opt 'new' new_placement_opt '(' type_id ')' <openscope-ast> new_array_expressions_opt new_initializer_opt
- /. $Build consumeExpressionNew(false); $EndBuild ./
-
-
-new_placement_opt
- ::= '(' expression_list ')'
- | $empty
- /. $Build consumeEmpty(); $EndBuild ./
-
-
-new_type_id
- ::= type_specifier_seq
- /. $Build consumeTypeId(false); $EndBuild ./
- | type_specifier_seq new_declarator
- /. $Build consumeTypeId(true); $EndBuild ./
-
-
-new_declarator -- pointer operators are part of the type id, held in an empty declarator
- ::= <openscope-ast> new_pointer_operators
- /. $Build consumeNewDeclarator(); $EndBuild ./
-
-
-new_pointer_operators -- presumably this will not need an action as ptr_operator will have one
- ::= ptr_operator
- | ptr_operator new_pointer_operators
-
-
-new_array_expressions
- ::= '[' expression ']'
- | new_array_expressions '[' constant_expression ']'
-
-
-new_array_expressions_opt
- ::= new_array_expressions
- | $empty
-
-
-new_initializer
- ::= '(' expression_list_opt ')' -- even if the parens are there we get null in the AST
- /. $Build consumeNewInitializer(); $EndBuild ./
-
-
-new_initializer_opt
- ::= new_initializer
- | $empty
- /. $Build consumeEmpty(); $EndBuild ./
-
-
-delete_expression
- ::= dcolon_opt 'delete' cast_expression
- /. $Build consumeExpressionDelete(false); $EndBuild ./
- | dcolon_opt 'delete' '[' ']' cast_expression
- /. $Build consumeExpressionDelete(true); $EndBuild ./
-
-
-cast_expression
- ::= unary_expression
- | '(' type_id ')' cast_expression
- /. $Build consumeExpressionCast(ICPPASTCastExpression.op_cast); $EndBuild ./
-
-
-pm_expression
- ::= cast_expression
- | pm_expression '.*' cast_expression
- /. $Build consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_pmdot); $EndBuild ./
- | pm_expression '->*' cast_expression
- /. $Build consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_pmarrow); $EndBuild ./
-
-
-multiplicative_expression
- ::= pm_expression
- | multiplicative_expression '*' pm_expression
- /. $Build consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_multiply); $EndBuild ./
- | multiplicative_expression '/' pm_expression
- /. $Build consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_divide); $EndBuild ./
- | multiplicative_expression '%' pm_expression
- /. $Build consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_modulo); $EndBuild ./
-
-
-additive_expression
- ::= multiplicative_expression
- | additive_expression '+' multiplicative_expression
- /. $Build consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_plus); $EndBuild ./
- | additive_expression '-' multiplicative_expression
- /. $Build consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_minus); $EndBuild ./
-
-
-shift_expression
- ::= additive_expression
- | shift_expression '<<' additive_expression
- /. $Build consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftLeft); $EndBuild ./
- | shift_expression '>>' additive_expression
- /. $Build consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftRight); $EndBuild ./
-
-
-relational_expression
- ::= shift_expression
- | relational_expression '<' shift_expression
- /. $Build consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessThan); $EndBuild ./
- | relational_expression '>' shift_expression
- /. $Build consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterThan); $EndBuild ./
- | relational_expression '<=' shift_expression
- /. $Build consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessEqual); $EndBuild ./
- | relational_expression '>=' shift_expression
- /. $Build consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterEqual); $EndBuild ./
-
-
-equality_expression
- ::= relational_expression
- | equality_expression '==' relational_expression
- /. $Build consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_equals); $EndBuild ./
- | equality_expression '!=' relational_expression
- /. $Build consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_notequals); $EndBuild ./
-
-
-and_expression
- ::= equality_expression
- | and_expression '&' equality_expression
- /. $Build consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAnd); $EndBuild ./
-
-
-exclusive_or_expression
- ::= and_expression
- | exclusive_or_expression '^' and_expression
- /. $Build consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXor); $EndBuild ./
-
-
-inclusive_or_expression
- ::= exclusive_or_expression
- | inclusive_or_expression '|' exclusive_or_expression
- /. $Build consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOr); $EndBuild ./
-
-
-logical_and_expression
- ::= inclusive_or_expression
- | logical_and_expression '&&' inclusive_or_expression
- /. $Build consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalAnd); $EndBuild ./
-
-
-logical_or_expression
- ::= logical_and_expression
- | logical_or_expression '||' logical_and_expression
- /. $Build consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalOr); $EndBuild ./
-
-
-conditional_expression
- ::= logical_or_expression
- | logical_or_expression '?' expression ':' assignment_expression
- /. $Build consumeExpressionConditional(); $EndBuild ./
-
-
---rules for template arguments, relational_expression needs brackets when it contains >
-
-relational_expression_inTemplate
- ::= shift_expression
- | relational_expression_inTemplate '<' shift_expression
- /. $Build consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessThan); $EndBuild ./
- | '(' relational_expression_inTemplate '>' shift_expression ')'
- /. $Build consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterThan); $EndBuild ./
- | relational_expression_inTemplate '<=' shift_expression
- /. $Build consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessEqual); $EndBuild ./
- | relational_expression_inTemplate '>=' shift_expression
- /. $Build consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterEqual); $EndBuild ./
-
-equality_expression_inTemplate
- ::= relational_expression_inTemplate
- | equality_expression_inTemplate '==' relational_expression_inTemplate
- /. $Build consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_equals); $EndBuild ./
- | equality_expression_inTemplate '!=' relational_expression_inTemplate
- /. $Build consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_notequals); $EndBuild ./
-
-
-and_expression_inTemplate
- ::= equality_expression_inTemplate
- | and_expression_inTemplate '&' equality_expression_inTemplate
- /. $Build consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAnd); $EndBuild ./
-exclusive_or_expression_inTemplate
- ::= and_expression_inTemplate
- | exclusive_or_expression_inTemplate '^' and_expression_inTemplate
- /. $Build consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXor); $EndBuild ./
-
-
-inclusive_or_expression_inTemplate
- ::= exclusive_or_expression_inTemplate
- | inclusive_or_expression_inTemplate '|' exclusive_or_expression_inTemplate
- /. $Build consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOr); $EndBuild ./
-
-
-logical_and_expression_inTemplate
- ::= inclusive_or_expression_inTemplate
- | logical_and_expression_inTemplate '&&' inclusive_or_expression_inTemplate
- /. $Build consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalAnd); $EndBuild ./
-
-
-logical_or_expression_inTemplate
- ::= logical_and_expression_inTemplate
- | logical_or_expression_inTemplate '||' logical_and_expression_inTemplate
- /. $Build consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalOr); $EndBuild ./
-
-
-conditional_expression_inTemplate
- ::= logical_or_expression_inTemplate
- | logical_or_expression_inTemplate '?' expression ':' assignment_expression_inTemplate
- /. $Build consumeExpressionConditional(); $EndBuild ./
-
-assignment_expression_inTemplate
- ::= conditional_expression_inTemplate
- | throw_expression
- | logical_or_expression_inTemplate '=' assignment_expression_inTemplate
- /. $Build consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_assign); $EndBuild ./
- | logical_or_expression_inTemplate '*=' assignment_expression_inTemplate
- /. $Build consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_multiplyAssign); $EndBuild ./
- | logical_or_expression_inTemplate '/=' assignment_expression_inTemplate
- /. $Build consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_divideAssign); $EndBuild ./
- | logical_or_expression_inTemplate '%=' assignment_expression_inTemplate
- /. $Build consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_moduloAssign); $EndBuild ./
- | logical_or_expression_inTemplate '+=' assignment_expression_inTemplate
- /. $Build consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_plusAssign); $EndBuild ./
- | logical_or_expression_inTemplate '-=' assignment_expression_inTemplate
- /. $Build consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_minusAssign); $EndBuild ./
- | logical_or_expression_inTemplate '>>=' assignment_expression_inTemplate
- /. $Build consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftRightAssign); $EndBuild ./
- | logical_or_expression_inTemplate '<<=' assignment_expression_inTemplate
- /. $Build consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftLeftAssign); $EndBuild ./
- | logical_or_expression_inTemplate '&=' assignment_expression_inTemplate
- /. $Build consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAndAssign); $EndBuild ./
- | logical_or_expression_inTemplate '^=' assignment_expression_inTemplate
- /. $Build consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXorAssign); $EndBuild ./
- | logical_or_expression_inTemplate '|=' assignment_expression_inTemplate
- /. $Build consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOrAssign); $EndBuild ./
-
-
-
-
---end of rules for template arguments
-throw_expression
- ::= 'throw'
- /. $Build consumeExpressionThrow(false); $EndBuild ./
- | 'throw' assignment_expression
- /. $Build consumeExpressionThrow(true); $EndBuild ./
-
-
-assignment_expression
- ::= conditional_expression
- | throw_expression
- | logical_or_expression '=' assignment_expression
- /. $Build consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_assign); $EndBuild ./
- | logical_or_expression '*=' assignment_expression
- /. $Build consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_multiplyAssign); $EndBuild ./
- | logical_or_expression '/=' assignment_expression
- /. $Build consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_divideAssign); $EndBuild ./
- | logical_or_expression '%=' assignment_expression
- /. $Build consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_moduloAssign); $EndBuild ./
- | logical_or_expression '+=' assignment_expression
- /. $Build consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_plusAssign); $EndBuild ./
- | logical_or_expression '-=' assignment_expression
- /. $Build consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_minusAssign); $EndBuild ./
- | logical_or_expression '>>=' assignment_expression
- /. $Build consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftRightAssign); $EndBuild ./
- | logical_or_expression '<<=' assignment_expression
- /. $Build consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftLeftAssign); $EndBuild ./
- | logical_or_expression '&=' assignment_expression
- /. $Build consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAndAssign); $EndBuild ./
- | logical_or_expression '^=' assignment_expression
- /. $Build consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXorAssign); $EndBuild ./
- | logical_or_expression '|=' assignment_expression
- /. $Build consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOrAssign); $EndBuild ./
-
-
-expression
- ::= expression_list
- -- | ERROR_TOKEN
- -- /. $Build consumeExpressionProblem(); $EndBuild ./
-
--- expression_list and expression_list_opt always result in a single element on the stack
--- the element might be an expression, an expression list or null
-
-expression_list
- ::= <openscope-ast> expression_list_actual
- /. $Build consumeExpressionList(); $EndBuild ./
-
-
-expression_list_actual
- ::= assignment_expression
- | expression_list_actual ',' assignment_expression
-
-
-expression_list_opt
- ::= expression_list
- | $empty
- /. $Build consumeEmpty(); $EndBuild ./
-
-
-expression_opt
- ::= expression
- | $empty
- /. $Build consumeEmpty(); $EndBuild ./
-
-
-constant_expression
- ::= conditional_expression
-
-
-constant_expression_opt
- ::= constant_expression
- | $empty
- /. $Build consumeEmpty(); $EndBuild ./
-
-
-------------------------------------------------------------------------------------------
--- Statements
-------------------------------------------------------------------------------------------
-
-statement
- ::= labeled_statement
- | expression_statement
- | compound_statement
- | selection_statement
- | iteration_statement
- | jump_statement
- | declaration_statement
- | try_block
- | ERROR_TOKEN
- /. $Build consumeStatementProblem(); $EndBuild ./
-
-
-labeled_statement
- ::= 'identifier' ':' statement
- /. $Build consumeStatementLabeled(); $EndBuild ./
- | 'case' constant_expression ':' statement
- /. $Build consumeStatementCase(); $EndBuild ./
- | 'default' ':' statement
- /. $Build consumeStatementDefault(); $EndBuild ./
-
-
-expression_statement
- ::= expression ';'
- /. $Build consumeStatementExpression(); $EndBuild ./
- | ';'
- /. $Build consumeStatementNull(); $EndBuild ./
-
-
-compound_statement
- ::= '{' <openscope-ast> statement_seq '}'
- /. $Build consumeStatementCompoundStatement(true); $EndBuild ./
- | '{' '}'
- /. $Build consumeStatementCompoundStatement(false); $EndBuild ./
-
-
-statement_seq
- ::= statement
- | statement_seq statement
-
-
-selection_statement
- ::= 'if' '(' condition ')' statement
- /. $Build consumeStatementIf(false); $EndBuild ./
- | 'if' '(' condition ')' statement 'else' statement
- /. $Build consumeStatementIf(true); $EndBuild ./
- | 'switch' '(' condition ')' statement
- /. $Build consumeStatementSwitch(); $EndBuild ./
-
-
-
-condition
- ::= expression
- | type_specifier_seq declarator '=' assignment_expression
- /. $Build consumeConditionDeclaration(); $EndBuild ./
-
-condition_opt
- ::= condition
- | $empty
- /. $Build consumeEmpty(); $EndBuild ./
-
-
-iteration_statement
- ::= 'while' '(' condition ')' statement
- /. $Build consumeStatementWhileLoop(); $EndBuild ./
- | 'do' statement 'while' '(' expression ')' ';'
- /. $Build consumeStatementDoLoop(true); $EndBuild ./
- | 'do' statement
- /. $Build consumeStatementDoLoop(false); $EndBuild ./
- | 'for' '(' for_init_statement condition_opt ';' expression_opt ')' statement
- /. $Build consumeStatementForLoop(); $EndBuild ./
-
-
--- I'm sure there are ambiguities here but we won't worry about it
-for_init_statement
- ::= expression_statement
- | simple_declaration_with_declspec
- /. $Build consumeStatementDeclaration(); $EndBuild ./
-
-
-jump_statement
- ::= 'break' ';'
- /. $Build consumeStatementBreak(); $EndBuild ./
- | 'continue' ';'
- /. $Build consumeStatementContinue(); $EndBuild ./
- | 'return' expression ';'
- /. $Build consumeStatementReturn(true); $EndBuild ./
- | 'return' ';'
- /. $Build consumeStatementReturn(false); $EndBuild ./
- | 'goto' identifier_token ';'
- /. $Build consumeStatementGoto(); $EndBuild ./
-
-
--- Nested functions are not part of the C++ spec, but several
--- of the parser test cases expect them to work.
-declaration_statement
- ::= block_declaration
- /. $Build consumeStatementDeclarationWithDisambiguation(); $EndBuild ./
- | function_definition -- not spec
- /. $Build consumeStatementDeclaration(); $EndBuild ./
-
-
-
-------------------------------------------------------------------------------------------
--- Declarations
-------------------------------------------------------------------------------------------
-
-
-declaration
- ::= block_declaration
- | function_definition
- | template_declaration
- | explicit_instantiation
- | explicit_specialization
- | linkage_specification
- | namespace_definition
- | ERROR_TOKEN
- /. $Build consumeDeclarationProblem(); $EndBuild ./
-
-
-block_declaration
- ::= simple_declaration
- | asm_definition
- | namespace_alias_definition
- | using_declaration
- | using_directive
-
-
-declaration_seq
- ::= declaration
- | declaration_seq declaration
-
-
-
-declaration_seq_opt
- ::= declaration_seq
- | $empty
-
-
-
-simple_declaration
- ::= declaration_specifiers_opt <openscope-ast> init_declarator_list_opt ';'
- /. $Build consumeDeclarationSimple(true); $EndBuild ./
-
-
-simple_declaration_with_declspec
- ::= declaration_specifiers <openscope-ast> init_declarator_list_opt ';'
- /. $Build consumeDeclarationSimple(true); $EndBuild ./
-
-
--- declaration specifier nodes not created here, they are created by sub-rules
--- these rules add IToken modifiers to the declspec nodes
-declaration_specifiers
- ::= <openscope-ast> simple_declaration_specifiers
- /. $Build consumeDeclarationSpecifiersSimple(); $EndBuild ./
- | <openscope-ast> class_declaration_specifiers
- /. $Build consumeDeclarationSpecifiersComposite(); $EndBuild ./
- | <openscope-ast> elaborated_declaration_specifiers
- /. $Build consumeDeclarationSpecifiersComposite(); $EndBuild ./
- | <openscope-ast> enum_declaration_specifiers
- /. $Build consumeDeclarationSpecifiersComposite(); $EndBuild ./
- | <openscope-ast> type_name_declaration_specifiers
- /. $Build consumeDeclarationSpecifiersTypeName(); $EndBuild ./
-
-
-declaration_specifiers_opt
- ::= declaration_specifiers
- | $empty
- /. $Build consumeEmpty(); $EndBuild ./
-
-
-
--- what about type qualifiers... cv_qualifier
-no_type_declaration_specifier
- ::= storage_class_specifier
- | function_specifier
- | cv_qualifier
- | 'friend'
- /. $Build consumeToken(); $EndBuild ./
- | 'typedef'
- /. $Build consumeToken(); $EndBuild ./
-
-
-no_type_declaration_specifiers
- ::= no_type_declaration_specifier
- | no_type_declaration_specifiers no_type_declaration_specifier
-
-
--- now also includes qualified names
--- if there is no long long then this may be simplified
-simple_declaration_specifiers
- ::= simple_type_specifier
- | no_type_declaration_specifiers simple_type_specifier
- | simple_declaration_specifiers simple_type_specifier
- | simple_declaration_specifiers no_type_declaration_specifier
- | no_type_declaration_specifiers
-
-
--- struct, union or class!
-class_declaration_specifiers
- ::= class_specifier
- | no_type_declaration_specifiers class_specifier
- | class_declaration_specifiers no_type_declaration_specifier
-
-
--- elaborated means something different, but how different?
-elaborated_declaration_specifiers
- ::= elaborated_type_specifier
- | no_type_declaration_specifiers elaborated_type_specifier
- | elaborated_declaration_specifiers no_type_declaration_specifier
-
-
--- Think this is the same
-enum_declaration_specifiers
- ::= enum_specifier
- | no_type_declaration_specifiers enum_specifier
- | enum_declaration_specifiers no_type_declaration_specifier
-
-
--- just typedefs in C99, but expanded to type names in C++ (no tagging needed)
-type_name_declaration_specifiers
- ::= type_name_specifier
- | no_type_declaration_specifiers type_name_specifier
- | type_name_declaration_specifiers no_type_declaration_specifier
-
-
- -- TODO comment this out
---decl_specifier
--- ::= storage_class_specifier -- just keywords
--- | type_specifier -- this is where the fun is
- -- | function_specifier -- just keywords
- -- | 'friend'
- -- | 'typedef'
-
-
-storage_class_specifier
- ::= 'auto'
- /. $Build consumeToken(); $EndBuild ./
- | 'register'
- /. $Build consumeToken(); $EndBuild ./
- | 'static'
- /. $Build consumeToken(); $EndBuild ./
- | 'extern'
- /. $Build consumeToken(); $EndBuild ./
- | 'mutable'
- /. $Build consumeToken(); $EndBuild ./
-
-
-function_specifier
- ::= 'inline'
- /. $Build consumeToken(); $EndBuild ./
- | 'virtual'
- /. $Build consumeToken(); $EndBuild ./
- | 'explicit'
- /. $Build consumeToken(); $EndBuild ./
-
-
--- We have no way to disambiguate token types
---typedef_name
--- ::= identifier_token
-
-
---type_specifier
--- ::= simple_type_specifier -- int, void etc...
--- | class_specifier -- structs, unions, classes
--- | enum_specifier -- enums
--- | elaborated_type_specifier -- its elaborated, but this is different than c, includes typename
--- | cv_qualifier -- the const and volatile keywords (separated because they can be applied to pointer modifiers)
-
-
---simple_type_specifier
--- ::= dcolon_opt nested_name_specifier_opt type_name
--- /. $Build consumeQualifiedId(false); $EndBuild ./
--- | dcolon_opt nested_name_specifier 'template' template_id_name
--- /. $Build consumeQualifiedId(false); $EndBuild ./
--- | simple_type_primitive_specifier
-
-
-
-simple_type_specifier
- ::= simple_type_specifier_token
- /. $Build consumeToken(); $EndBuild ./
-
-simple_type_specifier_token
- ::= 'char'
- | 'wchar_t'
- | 'bool'
- | 'short'
- | 'int'
- | 'long'
- | 'signed'
- | 'unsigned'
- | 'float'
- | 'double'
- | 'void'
-
-
--- last two rules moved here from simple_type_specifier
-type_name -- all identifiers of some kind
- ::= class_name
- -- | enum_name
- -- | typedef_name
-
-
--- last two rules moved here from simple_type_specifier
-type_name_specifier -- all identifiers of some kind
- ::= type_name
- | dcolon_opt nested_name_specifier_opt type_name
- /. $Build consumeQualifiedId(false); $EndBuild ./
- | dcolon_opt nested_name_specifier 'template' template_id_name
- /. $Build consumeQualifiedId(false); $EndBuild ./
- | 'typename' dcolon_opt nested_name_specifier identifier_name
- /. $Build consumeQualifiedId(false); $EndBuild ./
- | 'typename' dcolon_opt nested_name_specifier template_opt template_id_name
- /. $Build consumeQualifiedId(true); $EndBuild ./
- | 'typename' identifier_name
-
-
--- used for forward declaration and incomplete types
-elaborated_type_specifier
- ::= class_keyword elaborated_specifier_hook dcolon_opt nested_name_specifier_opt identifier_name
- /. $Build consumeTypeSpecifierElaborated(false); $EndBuild ./
- | class_keyword elaborated_specifier_hook dcolon_opt nested_name_specifier_opt template_opt template_id_name
- /. $Build consumeTypeSpecifierElaborated(true); $EndBuild ./
- | 'enum' elaborated_specifier_hook dcolon_opt nested_name_specifier_opt identifier_name
- /. $Build consumeTypeSpecifierElaborated(false); $EndBuild ./
-
-
-elaborated_specifier_hook
- ::= $empty
-
-
--- there is currently no way to disambiguate identifier tokens
---enum_name
--- ::= identifier_token
-
-
-comma_opt
- ::= ',' | $empty
-
-
-enum_specifier
- ::= 'enum' enum_specifier_hook '{' <openscope-ast> enumerator_list_opt comma_opt '}'
- /. $Build consumeTypeSpecifierEnumeration(false); $EndBuild ./
- | 'enum' enum_specifier_hook identifier_token '{' <openscope-ast> enumerator_list_opt comma_opt '}'
- /. $Build consumeTypeSpecifierEnumeration(true); $EndBuild ./
-
-enum_specifier_hook
- ::= $empty
-
-enumerator_list
- ::= enumerator_definition
- | enumerator_list ',' enumerator_definition
-
-
-enumerator_list_opt
- ::= enumerator_list
- | $empty
-
-
-enumerator_definition
- ::= identifier_token
- /. $Build consumeEnumerator(false); $EndBuild ./
- | identifier_token '=' constant_expression
- /. $Build consumeEnumerator(true); $EndBuild ./
-
-
-namespace_name
- ::= identifier_name
-
-
--- In the spec grammar this is broken down into original_namespace_definition and extension_namespace_definition.
--- But since we are not tracking identifiers it becomes the same thing, so its simplified here.
-namespace_definition
- ::= 'namespace' namespace_name namespace_definition_hook '{' <openscope-ast> declaration_seq_opt '}'
- /. $Build consumeNamespaceDefinition(true); $EndBuild ./
- | 'namespace' namespace_definition_hook '{' <openscope-ast> declaration_seq_opt '}'
- /. $Build consumeNamespaceDefinition(false); $EndBuild ./
-
-namespace_definition_hook
- ::= $empty
-
-
-namespace_alias_definition
- ::= 'namespace' identifier_token '=' dcolon_opt nested_name_specifier_opt namespace_name ';'
- /. $Build consumeNamespaceAliasDefinition(); $EndBuild ./
-
-
--- make more lenient!
--- using_declaration
--- ::= 'using' typename_opt dcolon_opt nested_name_specifier unqualified_id_name ';'
--- | 'using' '::' unqualified_id_name ';'
-
-
--- TODO why not just check if the second token is 'typename'?
-using_declaration
- ::= 'using' typename_opt dcolon_opt nested_name_specifier_opt unqualified_id_name ';'
- /. $Build consumeUsingDeclaration(); $EndBuild ./
-
-
-typename_opt
- ::= 'typename'
- /. $Build consumePlaceHolder(); $EndBuild ./
- | $empty
- /. $Build consumeEmpty(); $EndBuild ./
-
-
-using_directive
- ::= 'using' 'namespace' dcolon_opt nested_name_specifier_opt namespace_name ';'
- /. $Build consumeUsingDirective(); $EndBuild ./
-
-
-asm_definition
- ::= 'asm' '(' 'stringlit' ')' ';'
- /. $Build consumeDeclarationASM(); $EndBuild ./
-
-
-linkage_specification
- ::= 'extern' 'stringlit' '{' <openscope-ast> declaration_seq_opt '}'
- /. $Build consumeLinkageSpecification(); $EndBuild ./
- | 'extern' 'stringlit' <openscope-ast> declaration
- /. $Build consumeLinkageSpecification(); $EndBuild ./
-
-
-init_declarator_list
- ::= init_declarator_complete
- | init_declarator_list ',' init_declarator_complete
-
-
-init_declarator_list_opt
- ::= init_declarator_list
- | $empty
-
-
-init_declarator_complete
- ::= init_declarator
- /. $Build consumeInitDeclaratorComplete(); $EndBuild ./
-
-
-init_declarator
- ::= complete_declarator
- | complete_declarator initializer
- /. $Build consumeDeclaratorWithInitializer(true); $EndBuild ./
-
-complete_declarator
- ::= declarator
-
-declarator
- ::= direct_declarator
- | <openscope-ast> ptr_operator_seq direct_declarator
- /. $Build consumeDeclaratorWithPointer(true); $EndBuild ./
-
-function_declarator
- ::= function_direct_declarator
- | <openscope-ast> ptr_operator_seq direct_declarator
- /. $Build consumeDeclaratorWithPointer(true); $EndBuild ./
-
-
-direct_declarator
- ::= basic_direct_declarator
- | function_direct_declarator
- | array_direct_declarator
-
-
-basic_direct_declarator
- ::= declarator_id_name
- /. $Build consumeDirectDeclaratorIdentifier(); $EndBuild ./
- | '(' declarator ')'
- /. $Build consumeDirectDeclaratorBracketed(); $EndBuild ./
-
-
-function_direct_declarator
- ::= basic_direct_declarator '(' <openscope-ast> parameter_declaration_clause ')' <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
- /. $Build consumeDirectDeclaratorFunctionDeclarator(true); $EndBuild ./
-
-
-array_direct_declarator
- ::= array_direct_declarator array_modifier
- /. $Build consumeDirectDeclaratorArrayDeclarator(true); $EndBuild ./
- | basic_direct_declarator array_modifier
- /. $Build consumeDirectDeclaratorArrayDeclarator(true); $EndBuild ./
-
-
-array_modifier
- ::= '[' constant_expression ']'
- /. $Build consumeDirectDeclaratorArrayModifier(true); $EndBuild ./
- | '[' ']'
- /. $Build consumeDirectDeclaratorArrayModifier(false); $EndBuild ./
-
-
-ptr_operator
- ::= pointer_hook '*' pointer_hook <openscope-ast> cv_qualifier_seq_opt
- /. $Build consumePointer(); $EndBuild ./
- | pointer_hook '&' pointer_hook
- /. $Build consumeReferenceOperator(); $EndBuild ./
- | dcolon_opt nested_name_specifier pointer_hook '*' pointer_hook <openscope-ast> cv_qualifier_seq_opt
- /. $Build consumePointerToMember(); $EndBuild ./
-
-pointer_hook
- ::= $empty
-
-ptr_operator_seq
- ::= ptr_operator
- | ptr_operator_seq ptr_operator
-
-
---ptr_operator_seq_opt
--- ::= ptr_operator_seq
--- | $empty
-
-
-cv_qualifier_seq
- ::= cv_qualifier cv_qualifier_seq_opt
-
-
-cv_qualifier_seq_opt
- ::= cv_qualifier_seq
- | $empty
-
-
-cv_qualifier
- ::= 'const'
- /. $Build consumeToken(); $EndBuild ./
- | 'volatile'
- /. $Build consumeToken(); $EndBuild ./
-
-
-declarator_id_name
- ::= qualified_or_unqualified_name
- | dcolon_opt nested_name_specifier_opt type_name
- /. $Build consumeQualifiedId(false); $EndBuild ./
-
---declarator_id_name
--- ::= unqualified_id_name
--- | <empty> nested_name_specifier template_opt unqualified_id_name
--- /. $Build consumeQualifiedId(true); $EndBuild ./
-
-
-type_id
- ::= type_specifier_seq
- /. $Build consumeTypeId(false); $EndBuild ./
- | type_specifier_seq abstract_declarator
- /. $Build consumeTypeId(true); $EndBuild ./
-
-
---type_specifier_seq
--- ::= type_specifier
--- | type_specifier_seq type_specifier
-
-
--- more lenient than spec, but easier to deal with
--- TODO are conflicts resolved by using the more strict rule?
-type_specifier_seq
- ::= declaration_specifiers
-
-
-abstract_declarator
- ::= direct_abstract_declarator
- | <openscope-ast> ptr_operator_seq
- /. $Build consumeDeclaratorWithPointer(false); $EndBuild ./
- | <openscope-ast> ptr_operator_seq direct_abstract_declarator
- /. $Build consumeDeclaratorWithPointer(true); $EndBuild ./
-
-
-direct_abstract_declarator
- ::= basic_direct_abstract_declarator
- | array_direct_abstract_declarator
- | function_direct_abstract_declarator
-
-
-basic_direct_abstract_declarator
- ::= '(' abstract_declarator ')'
- /. $Build consumeDirectDeclaratorBracketed(); $EndBuild ./
- | '(' ')'
- /. $Build consumeAbstractDeclaratorEmpty(); $EndBuild ./
-
-
-array_direct_abstract_declarator
- ::= array_modifier
- /. $Build consumeDirectDeclaratorArrayDeclarator(false); $EndBuild ./
- | array_direct_abstract_declarator array_modifier
- /. $Build consumeDirectDeclaratorArrayDeclarator(true); $EndBuild ./
- | basic_direct_abstract_declarator array_modifier
- /. $Build consumeDirectDeclaratorArrayDeclarator(true); $EndBuild ./
-
-
-function_direct_abstract_declarator
- ::= basic_direct_abstract_declarator '(' <openscope-ast> parameter_declaration_clause ')' <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
- /. $Build consumeDirectDeclaratorFunctionDeclarator(true); $EndBuild ./
- | '(' <openscope-ast> parameter_declaration_clause ')' <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
- /. $Build consumeDirectDeclaratorFunctionDeclarator(false); $EndBuild ./
-
-
--- actions just place a marker indicating if '...' was parsed
-parameter_declaration_clause
- ::= parameter_declaration_list_opt '...'
- /. $Build consumePlaceHolder(); $EndBuild ./
- | parameter_declaration_list_opt
- /. $Build consumeEmpty(); $EndBuild ./
- | parameter_declaration_list ',' '...'
- /. $Build consumePlaceHolder(); $EndBuild ./
-
-
-parameter_declaration_list
- ::= parameter_declaration
- | parameter_declaration_list ',' parameter_declaration
-
-
-parameter_declaration_list_opt
- ::= parameter_declaration_list
- | $empty
-
-
-abstract_declarator_opt
- ::= abstract_declarator
- | $empty
- /. $Build consumeEmpty(); $EndBuild ./
-
-
-parameter_declaration
- ::= declaration_specifiers parameter_init_declarator
- /. $Build consumeParameterDeclaration(); $EndBuild ./
- | declaration_specifiers
- /. $Build consumeParameterDeclarationWithoutDeclarator(); $EndBuild ./
-
-
-parameter_init_declarator
- ::= declarator
- | declarator '=' parameter_initializer
- /. $Build consumeDeclaratorWithInitializer(true); $EndBuild ./
- | abstract_declarator
- | abstract_declarator '=' parameter_initializer
- /. $Build consumeDeclaratorWithInitializer(true); $EndBuild ./
- | '=' parameter_initializer
- /. $Build consumeDeclaratorWithInitializer(false); $EndBuild ./
-
-
-parameter_initializer
- ::= assignment_expression
- /. $Build consumeInitializer(); $EndBuild ./
-
-
-function_definition
- ::= declaration_specifiers_opt function_declarator <openscope-ast> ctor_initializer_list_opt function_body
- /. $Build consumeFunctionDefinition(false); $EndBuild ./
- | declaration_specifiers_opt function_declarator 'try' <openscope-ast> ctor_initializer_list_opt function_body <openscope-ast> handler_seq
- /. $Build consumeFunctionDefinition(true); $EndBuild ./
-
-
-function_body
- ::= compound_statement
-
-
-initializer
- ::= '=' initializer_clause
- | '(' expression_list ')'
- /. $Build consumeInitializerConstructor(); $EndBuild ./
-
-
-initializer_clause
- ::= assignment_expression
- /. $Build consumeInitializer(); $EndBuild ./
- | initializer_list
---CDT_70_FIX_FROM_50-#4
- /. $Build consumeInitializer(); $EndBuild ./
-
-initializer_list
- ::= start_initializer_list '{' <openscope-ast> initializer_seq ',' '}' end_initializer_list
- /. $Build consumeInitializerList(); $EndBuild ./
- | start_initializer_list '{' <openscope-ast> initializer_seq '}' end_initializer_list
- /. $Build consumeInitializerList(); $EndBuild ./
- | '{' <openscope-ast> '}'
- /. $Build consumeInitializerList(); $EndBuild ./
-
-
-start_initializer_list
- ::= $empty
- /. $Build initializerListStart(); $EndBuild ./
-
-end_initializer_list
- ::= $empty
- /. $Build initializerListEnd(); $EndBuild ./
-
-initializer_seq
- ::= initializer_clause
- | initializer_seq ',' initializer_clause
-
-
-
-------------------------------------------------------------------------------------------
--- Classes
-------------------------------------------------------------------------------------------
-
-
-class_name
- ::= identifier_name
- | template_id_name
-
-
-class_specifier
- ::= class_head '{' <openscope-ast> member_declaration_list_opt '}'
- /. $Build consumeClassSpecifier(); $EndBuild ./
-
-
-class_head
- ::= class_keyword composite_specifier_hook identifier_name_opt class_name_suffix_hook <openscope-ast> base_clause_opt
- /. $Build consumeClassHead(false); $EndBuild ./
- | class_keyword composite_specifier_hook template_id_name class_name_suffix_hook <openscope-ast> base_clause_opt
- /. $Build consumeClassHead(false); $EndBuild ./
- | class_keyword composite_specifier_hook nested_name_specifier identifier_name class_name_suffix_hook <openscope-ast> base_clause_opt
- /. $Build consumeClassHead(true); $EndBuild ./
- | class_keyword composite_specifier_hook nested_name_specifier template_id_name class_name_suffix_hook <openscope-ast> base_clause_opt
- /. $Build consumeClassHead(true); $EndBuild ./
-
-composite_specifier_hook
- ::= $empty
-
-class_name_suffix_hook
- ::= $empty
-
-identifier_name_opt
- ::= identifier_name
- | $empty
- /. $Build consumeEmpty(); $EndBuild./
-
-
-class_keyword
- ::= 'class'
- | 'struct'
- | 'union'
-
-
-visibility_label
- ::= access_specifier_keyword ':'
- /. $Build consumeVisibilityLabel(); $EndBuild ./
-
-
-
-member_declaration
- ::= declaration_specifiers_opt <openscope-ast> member_declarator_list ';'
- /. $Build consumeDeclarationSimple(true); $EndBuild ./
- | declaration_specifiers_opt ';'
- /. $Build consumeDeclarationSimple(false); $EndBuild ./
- | function_definition ';'
- | function_definition
- | dcolon_opt nested_name_specifier template_opt unqualified_id_name ';'
- /. $Build consumeMemberDeclarationQualifiedId(); $EndBuild ./
- | using_declaration
- | template_declaration
- | explicit_specialization -- not spec
- | namespace_definition -- not spec
- | visibility_label
- | ERROR_TOKEN
- /. $Build consumeDeclarationProblem(); $EndBuild ./
-
-
-member_declaration_list
- ::= member_declaration
- | member_declaration_list member_declaration
-
-
-member_declaration_list_opt
- ::= member_declaration_list
- | $empty
-
-
-member_declarator_list
- ::= member_declarator_complete
- | member_declarator_list ',' member_declarator_complete
-
-
-member_declarator_complete
- ::= member_declarator
-
-member_declarator
- ::= declarator
- -- parse pure specifier as a constant_initializer, reduces conflicts
- -- | declarator pure_specifier
- | declarator constant_initializer
- /. $Build consumeMemberDeclaratorWithInitializer(); $EndBuild ./
- | bit_field_declarator ':' constant_expression
- /. $Build consumeBitField(true); $EndBuild ./
- | ':' constant_expression
- /. $Build consumeBitField(false); $EndBuild ./
-
-
-bit_field_declarator
- ::= identifier_name
- /. $Build consumeDirectDeclaratorIdentifier(); $EndBuild ./
-
-
-constant_initializer
- ::= '=' constant_expression
- /. $Build consumeInitializer(); $EndBuild ./
-
-
-base_clause
- ::= ':' base_specifier_list
-
-
-base_clause_opt
- ::= base_clause
- | $empty
-
-
-base_specifier_list
- ::= base_specifier
- | base_specifier_list ',' base_specifier
-
-
-
-base_specifier
- ::= dcolon_opt nested_name_specifier_opt class_name
- /. $Build consumeBaseSpecifier(false, false); $EndBuild ./
- | 'virtual' access_specifier_keyword_opt dcolon_opt nested_name_specifier_opt class_name
- /. $Build consumeBaseSpecifier(true, true); $EndBuild ./
- | access_specifier_keyword 'virtual' dcolon_opt nested_name_specifier_opt class_name
- /. $Build consumeBaseSpecifier(true, true); $EndBuild ./
- | access_specifier_keyword dcolon_opt nested_name_specifier_opt class_name
- /. $Build consumeBaseSpecifier(true, false); $EndBuild ./
-
-
-access_specifier_keyword
- ::= 'private'
- /. $Build consumeToken(); $EndBuild ./
- | 'protected'
- /. $Build consumeToken(); $EndBuild ./
- | 'public'
- /. $Build consumeToken(); $EndBuild ./
-
-
-access_specifier_keyword_opt
- ::= access_specifier_keyword
- | $empty
- /. $Build consumeEmpty(); $EndBuild ./
-
-
-conversion_function_id_name
- ::= conversion_function_id
- | conversion_function_id '<' <openscope-ast> template_argument_list_opt '>'
- /. $Build consumeTemplateId(); $EndBuild ./
-
-conversion_function_id
- ::= 'operator' conversion_type_id
- /. $Build consumeConversionName(); $EndBuild ./
-
-
-conversion_type_id
- ::= type_specifier_seq conversion_declarator
- /. $Build consumeTypeId(true); $EndBuild ./
- | type_specifier_seq
- /. $Build consumeTypeId(false); $EndBuild ./
-
-
-conversion_declarator
- ::= <openscope-ast> ptr_operator_seq
- /. $Build consumeDeclaratorWithPointer(false); $EndBuild ./
-
-
-
---conversion_declarator_opt
--- ::= conversion_declarator
--- | $empty
-
-
-ctor_initializer_list
- ::= ':' mem_initializer_list
-
-
-ctor_initializer_list_opt
- ::= ctor_initializer_list
- | $empty
-
-
-mem_initializer_list
- ::= mem_initializer
- | mem_initializer ',' mem_initializer_list
-
-
-mem_initializer
- ::= mem_initializer_name '(' expression_list_opt ')'
- /. $Build consumeConstructorChainInitializer(); $EndBuild ./
-
-
-mem_initializer_name
- ::= dcolon_opt nested_name_specifier_opt class_name
- /. $Build consumeQualifiedId(false); $EndBuild ./
- | identifier_name
-
-
-operator_function_id_name
- ::= operator_id_name
- | operator_id_name '<' <openscope-ast> template_argument_list_opt '>'
- /. $Build consumeTemplateId(); $EndBuild ./
-
-
-operator_id_name
- ::= 'operator' overloadable_operator
- /. $Build consumeOperatorName(); $EndBuild ./
-
-
-overloadable_operator
- ::= 'new' | 'delete' | 'new' '[' ']' | 'delete' '[' ']'
- | '+' | '-' | '*' | '/' | '%' | '^' | '&' | '|' | '~'
- | '!' | '=' | '<' | '>' | '+=' | '-=' | '*=' | '/=' | '%='
- | '^=' | '&=' | '|=' | '<<' | '>>' | '>>=' | '<<=' | '==' | '!='
- | '<=' | '>=' | '&&' | '||' | '++' | '--' | ',' | '->*' | '->'
- | '(' ')' | '[' ']'
-
-
-template_declaration
- ::= export_opt 'template' '<' <openscope-ast> template_parameter_list '>' declaration
- /. $Build consumeTemplateDeclaration(); $EndBuild ./
-
-
-export_opt
- ::= 'export'
- /. $Build consumePlaceHolder(); $EndBuild ./
- | $empty
- /. $Build consumeEmpty(); $EndBuild ./
-
-
-template_parameter_list
- ::= template_parameter
- | template_parameter_list ',' template_parameter
-
-
--- TODO There is an ambiguity in the spec grammar here,
--- "class X" should be parsed as a type_parameter
--- and not as a parameter_declaration. Here precedence is used to disambiguate
--- but it would be better to refactor the grammar to remove the conflict.
-
-template_parameter
- ::= type_parameter
- | parameter_declaration
- /. $Build consumeTemplateParamterDeclaration(); $EndBuild ./
-
-
-type_parameter
- ::= 'class' identifier_name_opt
- /. $Build consumeSimpleTypeTemplateParameter(false); $EndBuild ./
- | 'class' identifier_name_opt '=' type_id
- /. $Build consumeSimpleTypeTemplateParameter(true); $EndBuild ./
- | 'typename' identifier_name_opt
- /. $Build consumeSimpleTypeTemplateParameter(false); $EndBuild ./
- | 'typename' identifier_name_opt '=' type_id
- /. $Build consumeSimpleTypeTemplateParameter(true); $EndBuild ./
- | 'template' '<' <openscope-ast> template_parameter_list '>' 'class' identifier_name_opt
- /. $Build consumeTemplatedTypeTemplateParameter(false); $EndBuild ./
- | 'template' '<' <openscope-ast> template_parameter_list '>' 'class' identifier_name_opt '=' id_expression
- /. $Build consumeTemplatedTypeTemplateParameter(true); $EndBuild ./
-
-
-template_id_name
- ::= identifier_name '<' <openscope-ast> template_argument_list_opt '>'
- /. $Build consumeTemplateId(); $EndBuild ./
--- | ERROR_TOKEN
--- /. $Build consumeTemplateIDError(); $EndBuild ./
-
-
-template_argument_list
- ::= template_argument
- | template_argument_list ',' template_argument
-
-
-template_argument_list_opt
- ::= template_argument_list
- | $empty
-
---type_id in template
-
-class_name_inTemplate
- ::= identifier_name
-
-class_or_namespace_name_inTemplate -- just identifiers
- ::= class_name_inTemplate
- --| namespace_name -- namespace_name name can only be an identifier token, which is already accepted by
-
-nested_name_specifier_inTemplate
- ::= class_or_namespace_name_inTemplate '::' nested_name_specifier_with_template_inTemplate
- /. $Build consumeNestedNameSpecifier(true); $EndBuild ./
- | class_or_namespace_name_inTemplate '::'
- /. $Build consumeNestedNameSpecifier(false); $EndBuild ./
-
-
-nested_name_specifier_with_template_inTemplate
- ::= class_or_namespace_name_with_template_inTemplate '::' nested_name_specifier_with_template_inTemplate
- /. $Build consumeNestedNameSpecifier(true); $EndBuild ./
- | class_or_namespace_name_with_template_inTemplate '::'
- /. $Build consumeNestedNameSpecifier(false); $EndBuild ./
-
-
-class_or_namespace_name_with_template_inTemplate
- ::= template_opt class_or_namespace_name_inTemplate
- /. $Build consumeNameWithTemplateKeyword(); $EndBuild ./
-
-nested_name_specifier_opt_inTemplate
- ::= nested_name_specifier_inTemplate
- | $empty
- /. $Build consumeNestedNameSpecifierEmpty(); $EndBuild ./
-
-
-type_name_inTemplate -- all identifiers of some kind
- ::= class_name_inTemplate
-
--- last two rules moved here from simple_type_specifier
-type_name_specifier_inTemplate -- all identifiers of some kind
- ::= type_name_inTemplate
--- | dcolon_opt nested_name_specifier_opt_inTemplate type_name_inTemplate
--- /. $Build consumeQualifiedId(false); $EndBuild ./
--- | dcolon_opt nested_name_specifier_inTemplate 'template' template_id_name
--- /. $Build consumeQualifiedId(false); $EndBuild ./
- | 'typename' dcolon_opt nested_name_specifier identifier_name
- /. $Build consumeQualifiedId(false); $EndBuild ./
- | 'typename' dcolon_opt nested_name_specifier template_opt template_id_name
- /. $Build consumeQualifiedId(true); $EndBuild ./
- | 'typename' identifier_name
-
-type_name_declaration_specifiers_inTemplate
- ::= type_name_specifier_inTemplate
- | no_type_declaration_specifiers type_name_specifier_inTemplate
- | type_name_declaration_specifiers_inTemplate no_type_declaration_specifier
-
-
-
-declaration_specifiers_inTemplate
- ::= <openscope-ast> simple_declaration_specifiers
- /. $Build consumeDeclarationSpecifiersSimple(); $EndBuild ./
- | <openscope-ast> class_declaration_specifiers
- /. $Build consumeDeclarationSpecifiersComposite(); $EndBuild ./
- | <openscope-ast> elaborated_declaration_specifiers
- /. $Build consumeDeclarationSpecifiersComposite(); $EndBuild ./
- | <openscope-ast> enum_declaration_specifiers
- /. $Build consumeDeclarationSpecifiersComposite(); $EndBuild ./
- | <openscope-ast> type_name_declaration_specifiers_inTemplate
- /. $Build consumeDeclarationSpecifiersTypeName(); $EndBuild ./
-
-
-type_specifier_seq_inTemplate
- ::= declaration_specifiers_inTemplate
-
-
-type_id_inTemplate
- ::= type_specifier_seq_inTemplate
- /. $Build consumeTypeId(false); $EndBuild ./
- | type_specifier_seq_inTemplate abstract_declarator
- /. $Build consumeTypeId(true); $EndBuild ./
-
---end type_id in template
-
-
-template_argument
- ::= assignment_expression_inTemplate
- /. $Build consumeTemplateArgumentExpression(); $EndBuild ./
- | type_id_inTemplate
- /. $Build consumeTemplateArgumentTypeId(); $EndBuild ./
-
-
-explicit_instantiation
- ::= 'template' declaration
- /. $Build consumeTemplateExplicitInstantiation(); $EndBuild ./
-
-
-explicit_specialization
- ::= 'template' '<' '>' declaration
- /. $Build consumeTemplateExplicitSpecialization(); $EndBuild ./
-
-
-try_block
- ::= 'try' compound_statement <openscope-ast> handler_seq
- /. $Build consumeStatementTryBlock(true); $EndBuild ./
- | 'try' compound_statement
- /. $Build consumeStatementTryBlock(false); $EndBuild ./
-
-
-
-
-
-handler_seq
- ::= handler
- | handler_seq handler
-
-
-handler
- ::= 'catch' '(' exception_declaration ')' compound_statement
- /. $Build consumeStatementCatchHandler(false); $EndBuild ./
- | 'catch' '(' '...' ')' compound_statement
- /. $Build consumeStatementCatchHandler(true); $EndBuild ./
-
-
--- open a scope just so that we can reuse consumeDeclarationSimple()
-exception_declaration
- ::= type_specifier_seq <openscope-ast> declarator
- /. $Build consumeDeclarationSimple(true); $EndBuild ./
- | type_specifier_seq <openscope-ast> abstract_declarator
- /. $Build consumeDeclarationSimple(true); $EndBuild ./
- | type_specifier_seq
- /. $Build consumeDeclarationSimple(false); $EndBuild ./
-
-
--- puts type ids on the stack
-exception_specification
- ::= 'throw' '(' type_id_list ')'
- | 'throw' '(' ')'
- /. $Build consumePlaceHolder(); $EndBuild ./
-
-
-exception_specification_opt
- ::= exception_specification
- | $empty
-
-
-type_id_list
- ::= type_id
- | type_id_list ',' type_id \ No newline at end of file
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/grammar/cpp/CPPNoCastExpressionParser.g b/lrparser/org.eclipse.cdt.core.lrparser/grammar/cpp/CPPNoCastExpressionParser.g
deleted file mode 100644
index 6e1479ebab6..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/grammar/cpp/CPPNoCastExpressionParser.g
+++ /dev/null
@@ -1,42 +0,0 @@
------------------------------------------------------------------------------------
--- Copyright (c) 2006, 2008 IBM Corporation and others.
--- This program and the accompanying materials
--- are made available under the terms of the Eclipse Public License 2.0
--- which accompanies this distribution, and is available at
--- https://www.eclipse.org/legal/epl-2.0/
---
--- SPDX-License-Identifier: EPL-2.0
---
--- Contributors:
--- IBM Corporation - initial API and implementation
------------------------------------------------------------------------------------
-
-%options la=2
-%options package=org.eclipse.cdt.internal.core.dom.lrparser.cpp
-%options template=LRSecondaryParserTemplate.g
-
-$Import
- CPPGrammar.g
-$DropRules
-
- cast_expression
- ::= '(' type_id ')' cast_expression
-
-$End
-
-$Define
- $ast_class /. IASTExpression ./
-$End
-
-$Start
- no_cast_start
-$End
-
-$Rules
-
- no_cast_start
- ::= expression
- | ERROR_TOKEN
- /. $Build consumeEmpty(); $EndBuild ./
-
-$End \ No newline at end of file
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/grammar/cpp/CPPNoFunctionDeclaratorParser.g b/lrparser/org.eclipse.cdt.core.lrparser/grammar/cpp/CPPNoFunctionDeclaratorParser.g
deleted file mode 100644
index 7cc0112c7fa..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/grammar/cpp/CPPNoFunctionDeclaratorParser.g
+++ /dev/null
@@ -1,49 +0,0 @@
------------------------------------------------------------------------------------
--- Copyright (c) 2006, 2008 IBM Corporation and others.
--- This program and the accompanying materials
--- are made available under the terms of the Eclipse Public License 2.0
--- which accompanies this distribution, and is available at
--- https://www.eclipse.org/legal/epl-2.0/
---
--- SPDX-License-Identifier: EPL-2.0
---
--- Contributors:
--- IBM Corporation - initial API and implementation
------------------------------------------------------------------------------------
-
-%options la=2
-%options package=org.eclipse.cdt.internal.core.dom.lrparser.cpp
-%options template=LRSecondaryParserTemplate.g
-
-$Import
- CPPGrammar.g
-$DropRules
-
- direct_declarator
- ::= function_direct_declarator
-
- init_declarator_complete
- ::= init_declarator
-
-$End
-
-$Define
- $ast_class /. IASTDeclarator ./
-$End
-
-$Start
- no_function_declarator_start
-$End
-
-$Rules
-
- no_function_declarator_start
- ::= init_declarator_complete
- | ERROR_TOKEN
- /. $Build consumeEmpty(); $EndBuild ./
-
- -- redeclare this rule with no semantic action, prevents recursion
- init_declarator_complete
- ::= init_declarator
-
-$End \ No newline at end of file
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/grammar/cpp/CPPParser.g b/lrparser/org.eclipse.cdt.core.lrparser/grammar/cpp/CPPParser.g
deleted file mode 100644
index fd35a61dcb2..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/grammar/cpp/CPPParser.g
+++ /dev/null
@@ -1,28 +0,0 @@
-----------------------------------------------------------------------------------
--- Copyright (c) 2006, 2008 IBM Corporation and others.
--- This program and the accompanying materials
--- are made available under the terms of the Eclipse Public License 2.0
--- which accompanies this distribution, and is available at
--- https://www.eclipse.org/legal/epl-2.0/
---
--- SPDX-License-Identifier: EPL-2.0
---
--- Contributors:
--- IBM Corporation - initial API and implementation
-----------------------------------------------------------------------------------
-
-%options la=2
-%options package=org.eclipse.cdt.internal.core.dom.lrparser.cpp
-%options template=LRParserTemplate.g
-
-
--- This file is needed because LPG won't allow redefinition of the
--- start symbol, so CPPGrammar.g cannot define a start symbol.
-
-$Import
- CPPGrammar.g
-$End
-
-$Start
- translation_unit
-$End \ No newline at end of file
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/grammar/cpp/CPPSizeofExpressionParser.g b/lrparser/org.eclipse.cdt.core.lrparser/grammar/cpp/CPPSizeofExpressionParser.g
deleted file mode 100644
index 025947276bc..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/grammar/cpp/CPPSizeofExpressionParser.g
+++ /dev/null
@@ -1,46 +0,0 @@
------------------------------------------------------------------------------------
--- Copyright (c) 2006, 2009 IBM Corporation and others.
--- This program and the accompanying materials
--- are made available under the terms of the Eclipse Public License 2.0
--- which accompanies this distribution, and is available at
--- https://www.eclipse.org/legal/epl-2.0/
---
--- SPDX-License-Identifier: EPL-2.0
---
--- Contributors:
--- IBM Corporation - initial API and implementation
------------------------------------------------------------------------------------
-
-%options la=2
-%options package=org.eclipse.cdt.internal.core.dom.lrparser.cpp
-%options template=LRSecondaryParserTemplate.g
-
-
-$Import
- CPPGrammar.g
-$DropRules
-
- unary_expression
- ::= 'sizeof' '(' type_id ')'
-
- postfix_expression
- ::= 'typeid' '(' type_id ')'
-
-$End
-
-$Define
- $ast_class /. IASTExpression ./
-$End
-
-$Start
- no_sizeof_type_id_start
-$End
-
-$Rules
-
- no_sizeof_type_id_start
- ::= expression
- | ERROR_TOKEN
- /. $Build consumeEmpty(); $EndBuild ./
-
-$End \ No newline at end of file
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/grammar/cpp/CPPTemplateTypeParameterParser.g b/lrparser/org.eclipse.cdt.core.lrparser/grammar/cpp/CPPTemplateTypeParameterParser.g
deleted file mode 100644
index 91086aeb753..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/grammar/cpp/CPPTemplateTypeParameterParser.g
+++ /dev/null
@@ -1,59 +0,0 @@
------------------------------------------------------------------------------------
--- Copyright (c) 2006, 2008 IBM Corporation and others.
--- This program and the accompanying materials
--- are made available under the terms of the Eclipse Public License 2.0
--- which accompanies this distribution, and is available at
--- https://www.eclipse.org/legal/epl-2.0/
---
--- SPDX-License-Identifier: EPL-2.0
---
--- Contributors:
--- IBM Corporation - initial API and implementation
------------------------------------------------------------------------------------
-
-%options la=2
-%options package=org.eclipse.cdt.internal.core.dom.lrparser.cpp
-%options template=LRSecondaryParserTemplate.g
-
--- This parser is a bit of a hack.
-
--- There are ambiguities between type_parameter and parameter_declaration
--- when parsing a template_parameter.
-
--- I believe the correct disambiguation is to simply favor type_parameter
--- over parameter_declaration.
-
--- I have tried to resolve this by refactoring the grammar file so that
--- the parser will give precedence to type_parameter, but I have failed.
-
--- So the hacky solution is to reparse the tokens as a type_parameter and if
--- it succeeds, throw away the paramter_declaration and use the type_parameter
--- in its place.
-
-
-$Import
- CPPGrammar.g
-$End
-
-$Globals
-/.
- import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateParameter;
-./
-$End
-
-$Define
- $ast_class /. ICPPASTTemplateParameter ./
-$End
-
-$Start
- type_parameter_start
-$End
-
-$Rules
-
- type_parameter_start
- ::= type_parameter
- | ERROR_TOKEN
- /. $Build consumeEmpty(); $EndBuild ./
-
-$End \ No newline at end of file
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/grammar/gcc/GCCGrammar.g b/lrparser/org.eclipse.cdt.core.lrparser/grammar/gcc/GCCGrammar.g
deleted file mode 100644
index 16b35999d84..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/grammar/gcc/GCCGrammar.g
+++ /dev/null
@@ -1,114 +0,0 @@
------------------------------------------------------------------------------------
--- Copyright (c) 2009 IBM Corporation and others.
--- This program and the accompanying materials
--- are made available under the terms of the Eclipse Public License 2.0
--- which accompanies this distribution, and is available at
--- https://www.eclipse.org/legal/epl-2.0/
---
--- SPDX-License-Identifier: EPL-2.0
---
--- Contributors:
--- IBM Corporation - initial API and implementation
------------------------------------------------------------------------------------
-
-
--- For this to work the environment variable LPG_INCLUDE must be set up
--- to point at the directory where the C99Parser.g file is located.
-$Import
- ../c99/C99Grammar.g
-$End
-
-$Import
- ../gnu/GNUExtensions.g
-$End
-
-
--- Tokens used by GCC but not part of the C99 spec
-$Terminals
-
- asm
-
-$End
-
-
-$Globals
-/.
- import org.eclipse.cdt.core.dom.lrparser.action.gnu.GCCBuildASTParserAction;
- import org.eclipse.cdt.core.dom.lrparser.action.gnu.GCCSecondaryParserFactory;
-./
-$End
-
-$Define
-
- $build_action_class /. GCCBuildASTParserAction ./
- $parser_factory_create_expression /. GCCSecondaryParserFactory.getDefault() ./
-
-$End
-
-
-$Rules
-
-
-declaration
- ::= extended_asm_declaration
-
-
-no_type_declaration_specifier
- ::= attribute_or_decl_specifier
-
-complete_declarator
- ::= attribute_or_decl_specifier_seq declarator
- | declarator attribute_or_decl_specifier_seq
- | attribute_or_decl_specifier_seq declarator attribute_or_decl_specifier_seq
-
-complete_struct_declarator
- ::= attribute_or_decl_specifier_seq struct_declarator
- | struct_declarator attribute_or_decl_specifier_seq
- | attribute_or_decl_specifier_seq struct_declarator attribute_or_decl_specifier_seq
-
-enum_specifier_hook
- ::= attribute_or_decl_specifier_seq
-
-struct_or_union_specifier_hook
- ::= attribute_or_decl_specifier_seq
-
-struct_or_union_specifier_suffix_hook
- ::= attribute_or_decl_specifier_seq
-
-pointer_hook
- ::= attribute_or_decl_specifier_seq
-
-elaborated_specifier_hook
- ::= attribute_or_decl_specifier_seq
-
-
-
-
-
--- GCC extensions to designated initializers
-
-designator_base
- ::= field_name_designator
- | array_range_designator
-
-field_name_designator
- ::= identifier_token ':'
- /. $Build consumeDesignatorFieldGCC(); $EndBuild ./
-
-array_range_designator
- ::= '[' constant_expression '...' constant_expression ']'
- /. $Build consumeDesignatorArrayRange(); $EndBuild ./
-
-designated_initializer
- ::= <openscope-ast> field_name_designator initializer
- /. $Build consumeInitializerDesignated(); $EndBuild ./
-
-
-
--- Nested functions
-
-block_item
- ::= normal_function_definition
- /. $Build consumeStatementDeclaration(); $EndBuild ./
-
-$End \ No newline at end of file
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/grammar/gcc/GCCParser.g b/lrparser/org.eclipse.cdt.core.lrparser/grammar/gcc/GCCParser.g
deleted file mode 100644
index 247807bf239..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/grammar/gcc/GCCParser.g
+++ /dev/null
@@ -1,28 +0,0 @@
------------------------------------------------------------------------------------
--- Copyright (c) 2008, 2009 IBM Corporation and others.
--- This program and the accompanying materials
--- are made available under the terms of the Eclipse Public License 2.0
--- which accompanies this distribution, and is available at
--- https://www.eclipse.org/legal/epl-2.0/
---
--- SPDX-License-Identifier: EPL-2.0
---
--- Contributors:
--- IBM Corporation - initial API and implementation
------------------------------------------------------------------------------------
-
-%options la=2
-%options package=org.eclipse.cdt.internal.core.dom.lrparser.gcc
-%options template=LRParserTemplate.g
-
-
--- This file is needed because LPG won't allow redefinition of the
--- start symbol, so C99Grammar.g cannot define a start symbol.
-
-$Import
- GCCGrammar.g
-$End
-
-$Start
- translation_unit
-$End \ No newline at end of file
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/grammar/gcc/GCCSizeofExpressionParser.g b/lrparser/org.eclipse.cdt.core.lrparser/grammar/gcc/GCCSizeofExpressionParser.g
deleted file mode 100644
index 29762cf7e80..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/grammar/gcc/GCCSizeofExpressionParser.g
+++ /dev/null
@@ -1,45 +0,0 @@
------------------------------------------------------------------------------------
--- Copyright (c) 2009 IBM Corporation and others.
--- This program and the accompanying materials
--- are made available under the terms of the Eclipse Public License 2.0
--- which accompanies this distribution, and is available at
--- https://www.eclipse.org/legal/epl-2.0/
---
--- SPDX-License-Identifier: EPL-2.0
---
--- Contributors:
--- IBM Corporation - initial API and implementation
------------------------------------------------------------------------------------
-
-%options la=2
-%options package=org.eclipse.cdt.internal.core.dom.lrparser.gcc
-%options template=LRSecondaryParserTemplate.g
-
-
-$Import
- GCCGrammar.g
-$DropRules
-
- unary_expression
- ::= 'sizeof' '(' type_id ')'
- | '__alignof__' '(' type_id ')'
- | 'typeof' '(' type_id ')'
-
-$End
-
-$Define
- $ast_class /. IASTExpression ./
-$End
-
-$Start
- no_sizeof_type_name_start
-$End
-
-$Rules
-
- no_sizeof_type_name_start
- ::= expression
- | ERROR_TOKEN
- /. $Build consumeEmpty(); $EndBuild ./
-
-$End \ No newline at end of file
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/grammar/generate.xml b/lrparser/org.eclipse.cdt.core.lrparser/grammar/generate.xml
deleted file mode 100644
index bed67eb6ac7..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/grammar/generate.xml
+++ /dev/null
@@ -1,95 +0,0 @@
-<!--
- Copyright (c) 2009, 2010 IBM Corporation and others.
- This program and the accompanying materials
- are made available under the terms of the Eclipse Public License 2.0
- which accompanies this distribution, and is available at
- https://www.eclipse.org/legal/epl-2.0/
-
- SPDX-License-Identifier: EPL-2.0
-
- Contributors:
- IBM Corporation - initial API and implementation
--->
-
-<project name="CDT Extensible LR Parser Framework" basedir=".">
-
- <!--
- Common tasks that can be used to generate a parser using LPG and the
- LR parser framework.
-
- There are two ANT properties that must be defined:
- 1) lpg_exe - This property must be set to the full path to the LPG generator executable (lpg.exe).
- 2) lpg_template - This property must be set to the full path to the folder that contains the LRParserTemplate.g file.
-
- Additionally if the $Import or $Include directives are being used in a grammar
- file then the LPG_INCLUDE environment variable must be set to the directory
- of the files being included.
- lpg_include - is an optional property to set, if it is set, LPG_INCLUDE will be set by its value before execute lpg_exe.
- -->
-
- <fail unless="lpg_exe">
- Property $${lpg_exe} not set.
- This property must be set to the full path to the LPG generator executable.
- </fail>
-
- <fail unless="lpg_template">
- Property $${lpg_template} not set.
- This property must be set to the full path to the LPG templates folder.
- </fail>
-
-
- <!--
- Parameters:
- ${grammar_dir} - directory that contains the grammar files
- ${grammar_name} - the name of the main grammar file to run LPG on (not including the .g extension)
- ${output_dir} - name of directory where generated files should go
- -->
- <target name="generate" depends="moveFile">
-
-
- <echo message="Code generation is done."/>
-
-
- </target>
-
- <target name="init">
-
- <property name="grammar_file" value="${grammar_dir}/${grammar_name}.g"/>
- <echo message="lpg_exe=${lpg_exe}"/>
- <echo message="lpg_template=${lpg_template}"/>
- <echo message="lpg_include=${lpg_include}"/>
- <echo message="grammar_file=${grammar_file}.g"/>
- <echo message="output_dir=${output_dir}"/>
-
-
- </target>
-
- <target name="generateWithIncludeSet" if="lpg_include" depends="init">
-
- <exec executable="${lpg_exe}">
- <arg value="${grammar_file}"/>
- <env key="LPG_TEMPLATE" path="${lpg_template}"/>
- <env key="LPG_INCLUDE" path="${lpg_include}"/>
- </exec>
- </target>
-
- <target name="generateWithoutIncludeSet" unless="lpg_include" depends="generateWithIncludeSet">
-
-
- <exec executable="${lpg_exe}">
- <arg value="${grammar_file}"/>
- <env key="LPG_TEMPLATE" path="${lpg_template}"/>
-
- </exec>
- </target>
-
- <target name="moveFile" depends="generateWithoutIncludeSet">
- <move overwrite="true" toDir="${output_dir}">
- <fileset dir=".">
- <include name="${grammar_name}*.*"/>
- </fileset>
- </move>
- </target>
-
-
-</project> \ No newline at end of file
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/grammar/gnu/GNUExtensions.g b/lrparser/org.eclipse.cdt.core.lrparser/grammar/gnu/GNUExtensions.g
deleted file mode 100644
index bc9e9ab8711..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/grammar/gnu/GNUExtensions.g
+++ /dev/null
@@ -1,207 +0,0 @@
------------------------------------------------------------------------------------
--- Copyright (c) 2008, 2009 IBM Corporation and others.
--- This program and the accompanying materials
--- are made available under the terms of the Eclipse Public License 2.0
--- which accompanies this distribution, and is available at
--- https://www.eclipse.org/legal/epl-2.0/
---
--- SPDX-License-Identifier: EPL-2.0
---
--- Contributors:
--- IBM Corporation - initial API and implementation
------------------------------------------------------------------------------------
-
-
--- These are additional rules that allow for parsing of GNU extensions.
--- This file is intended to be mixed-in with C99Parser.g or GPPParser.g
-
-
-$Terminals
- -- additional GCC only tokens as defined in IGCCToken
-
- typeof
- __alignof__
- __attribute__
- __declspec
- MAX
- MIN
-
- MAX ::= '>?'
- MIN ::= '<?'
-
-$End
-
-
-$Headers
-/.
- private $gnu_action_class gnuAction;
-./
-$End
-
-
-$Globals
-/.
- import org.eclipse.cdt.core.dom.lrparser.action.gnu.GNUBuildASTParserAction;
-./
-$End
-
-
-$Define
-
- $gnu_action_class /. GNUBuildASTParserAction ./ -- overridable
-
- $action_initializations /.
-
- gnuAction = new $gnu_action_class (this, astStack, $node_factory_create_expression);
- gnuAction.setParserProperties(properties);
- ./
-
-$End
-
-$Rules
-
-------------------------------------------------------------------------------------
--- Support for __attribute__ and __declspec
-------------------------------------------------------------------------------------
-
-attribute_or_decl_specifier
- ::= attribute_specifier
- | decl_specifier
- | asm_label
-
-attribute_or_decl_specifier_seq
- ::= attribute_or_decl_specifier
- | attribute_or_decl_specifier_seq attribute_or_decl_specifier
-
-
-
-attribute_specifier
- ::= '__attribute__' '(' '(' attribute_list ')' ')'
- | '__attribute__' '(' ')'
-
-attribute_list
- ::= attribute
- | attribute_list ',' attribute
-
-attribute
- ::= word
- | word '(' attribute_parameter_list ')'
- | $empty
-
-word
- ::= 'identifier'
- | 'const'
-
-attribute_parameter_list
- ::= attribute_parameter
- | attribute_parameter_list ',' attribute_parameter
-
-attribute_parameter
- ::= assignment_expression
- /. $Build consumeIgnore(); $EndBuild ./
- | $empty
-
-
-
-decl_specifier
- ::= '__declspec' '(' extended_decl_modifier_seq ')'
- | '__declspec' '(' ')'
-
-extended_decl_modifier_seq
- ::= extended_decl_modifier
- | extended_decl_modifier_seq extended_decl_modifier
-
-extended_decl_modifier
- ::= 'identifier'
- | 'identifier' '(' ')'
- | 'identifier' '(' 'identifier' ')'
- | 'identifier' '(' 'stringlit' ')'
-
-
-------------------------------------------------------------------------------------
--- Other stuff
-------------------------------------------------------------------------------------
-
-asm_label
- ::= 'asm' '(' 'stringlit' ')'
-
-
-extended_asm_declaration
- ::= 'asm' volatile_opt '(' extended_asm_param_seq ')' ';'
- /. $BeginAction gnuAction.consumeDeclarationASM(); $EndAction ./
-
-volatile_opt ::= 'volatile' | $empty
-
-extended_asm_param_seq
- ::= extended_asm_param_with_operand
- | extended_asm_param_seq ':' extended_asm_param_with_operand
-
-extended_asm_param_with_operand
- ::= extended_asm_param
- | extended_asm_param ',' extended_asm_param
- | $empty
-
-extended_asm_param
- ::= 'stringlit'
- | 'stringlit' '(' 'identifier' ')'
- | 'stringlit' '(' '*' 'identifier' ')'
-
-
-
-unary_expression
- ::= '__alignof__' unary_expression
- /. $Build consumeExpressionUnaryOperator(IASTUnaryExpression.op_alignOf); $EndBuild ./
- | '__alignof__' '(' type_id ')'
- /. $Build consumeExpressionTypeId(IASTTypeIdExpression.op_alignof); $EndBuild ./
- | 'typeof' unary_expression
- /. $Build consumeExpressionUnaryOperator(IASTUnaryExpression.op_typeof); $EndBuild ./
- | 'typeof' '(' type_id ')'
- /. $Build consumeExpressionTypeId(IASTTypeIdExpression.op_typeof); $EndBuild ./
-
-
-relational_expression
- ::= relational_expression '>?' shift_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_max); $EndBuild ./
- | relational_expression '<?' shift_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_min); $EndBuild ./
-
-
-conditional_expression
- ::= logical_or_expression '?' <empty> ':' assignment_expression
- /. $Build consumeExpressionConditional(); $EndBuild ./
-
-
-primary_expression
- ::= '(' compound_statement ')'
- /. $BeginAction gnuAction.consumeCompoundStatementExpression(); $EndAction ./
-
-
-labeled_statement
- ::= 'case' case_range_expression ':' statement
- /. $Build consumeStatementCase(); $EndBuild ./
-
-
-case_range_expression
- ::= constant_expression '...' constant_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_assign); $EndBuild ./
-
-
-typeof_declaration_specifiers
- ::= typeof_type_specifier
- | no_type_declaration_specifiers typeof_type_specifier
- | typeof_declaration_specifiers no_type_declaration_specifier
-
-
-typeof_type_specifier
- ::= 'typeof' unary_expression
- /. $Build consumeExpressionUnaryOperator(IASTUnaryExpression.op_typeof); $EndBuild ./
- | 'typeof' '(' type_id ')'
- /. $Build consumeExpressionTypeId(IASTTypeIdExpression.op_typeof); $EndBuild ./
-
-
-declaration_specifiers
- ::= <openscope-ast> typeof_declaration_specifiers
- /. $Build consumeDeclarationSpecifiersTypeof(); $EndBuild ./
-
-$End
-
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/grammar/gpp/GPPGrammar.g b/lrparser/org.eclipse.cdt.core.lrparser/grammar/gpp/GPPGrammar.g
deleted file mode 100644
index 16b072c48b4..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/grammar/gpp/GPPGrammar.g
+++ /dev/null
@@ -1,131 +0,0 @@
------------------------------------------------------------------------------------
--- Copyright (c) 2009 IBM Corporation and others.
--- This program and the accompanying materials
--- are made available under the terms of the Eclipse Public License 2.0
--- which accompanies this distribution, and is available at
--- https://www.eclipse.org/legal/epl-2.0/
---
--- SPDX-License-Identifier: EPL-2.0
---
--- Contributors:
--- IBM Corporation - initial API and implementation
------------------------------------------------------------------------------------
-
-%options la=2
-%options package=org.eclipse.cdt.internal.core.dom.lrparser.gpp
-%options template=FixedBtParserTemplateD.g
-
-
-$Terminals
-
- -- GCC allows these keywords to be used in C++
-
- _Complex
- _Imaginary
- restrict
-
-$End
-
-
--- For this to work the environment variable LPG_INCLUDE must be set up
--- to point at the directory where the CPPParser.g file is located.
-$Import
- ../cpp/CPPGrammar.g
-
-$DropRules
-
--- will be replaced by extended asm syntax
-asm_definition
- ::= 'asm' '(' 'stringlit' ')' ';'
-
-$End
-
-
-$Import
- ../gnu/GNUExtensions.g
-$End
-
-$Globals
-/.
- import org.eclipse.cdt.core.dom.lrparser.action.gnu.GPPBuildASTParserAction;
- import org.eclipse.cdt.core.dom.lrparser.action.gnu.GPPSecondaryParserFactory;
- import org.eclipse.cdt.core.dom.ast.gnu.cpp.*;
-./
-$End
-
-$Define
-
- $build_action_class /. GPPBuildASTParserAction ./
- $parser_factory_create_expression /. GPPSecondaryParserFactory.getDefault() ./
-
-$End
-
-$Rules
-
-
-asm_definition
- ::= extended_asm_declaration
-
-
-no_type_declaration_specifier
- ::= attribute_or_decl_specifier
-
-complete_declarator
- ::= attribute_or_decl_specifier_seq declarator
- | declarator attribute_or_decl_specifier_seq
- | attribute_or_decl_specifier_seq declarator attribute_or_decl_specifier_seq
-
-member_declarator_complete
- ::= attribute_or_decl_specifier_seq member_declarator_complete
- | member_declarator_complete attribute_or_decl_specifier_seq
- | attribute_or_decl_specifier_seq member_declarator_complete attribute_or_decl_specifier_seq
-
-enum_specifier_hook
- ::= attribute_or_decl_specifier_seq
-
-composite_specifier_hook
- ::= attribute_or_decl_specifier_seq
-
-class_name_suffix_hook
- ::= attribute_or_decl_specifier_seq
-
-pointer_hook
- ::= attribute_or_decl_specifier_seq
-
-declarator
- ::= <openscope-ast> ptr_operator_seq attribute_or_decl_specifier_seq direct_declarator
- /. $Build consumeDeclaratorWithPointer(true); $EndBuild ./
-
-elaborated_specifier_hook
- ::= attribute_or_decl_specifier_seq
-
-namespace_definition_hook
- ::= attribute_or_decl_specifier_seq
-
-
-simple_type_specifier
- ::= '_Complex'
- /. $Build consumeToken(); $EndBuild ./
- | '_Imaginary'
- /. $Build consumeToken(); $EndBuild ./
-
-cv_qualifier
- ::= 'restrict'
- /. $Build consumeToken(); $EndBuild ./
-
-
-explicit_instantiation
- ::= 'extern' 'template' declaration
- /. $Build consumeTemplateExplicitInstantiationGCC(IGPPASTExplicitTemplateInstantiation.ti_extern); $EndBuild ./
- | 'static' 'template' declaration
- /. $Build consumeTemplateExplicitInstantiationGCC(IGPPASTExplicitTemplateInstantiation.ti_static); $EndBuild ./
- | 'inline' 'template' declaration
- /. $Build consumeTemplateExplicitInstantiationGCC(IGPPASTExplicitTemplateInstantiation.ti_inline); $EndBuild ./
-
-
-postfix_expression
- ::= '(' type_id ')' initializer_list
- /. $Build consumeExpressionTypeIdInitializer(); $EndBuild ./
-
-
-$End \ No newline at end of file
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/grammar/gpp/GPPParser.g b/lrparser/org.eclipse.cdt.core.lrparser/grammar/gpp/GPPParser.g
deleted file mode 100644
index 1ede67f3afb..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/grammar/gpp/GPPParser.g
+++ /dev/null
@@ -1,28 +0,0 @@
-----------------------------------------------------------------------------------
--- Copyright (c) 2008, 2009 IBM Corporation and others.
--- This program and the accompanying materials
--- are made available under the terms of the Eclipse Public License 2.0
--- which accompanies this distribution, and is available at
--- https://www.eclipse.org/legal/epl-2.0/
---
--- SPDX-License-Identifier: EPL-2.0
---
--- Contributors:
--- IBM Corporation - initial API and implementation
-----------------------------------------------------------------------------------
-
-%options la=2
-%options package=org.eclipse.cdt.internal.core.dom.lrparser.gpp
-%options template=LRParserTemplate.g
-
-
--- This file is needed because LPG won't allow redefinition of the
--- start symbol, so CPPGrammar.g cannot define a start symbol.
-
-$Import
- GPPGrammar.g
-$End
-
-$Start
- translation_unit
-$End \ No newline at end of file
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/grammar/gpp/GPPSizeofExpressionParser.g b/lrparser/org.eclipse.cdt.core.lrparser/grammar/gpp/GPPSizeofExpressionParser.g
deleted file mode 100644
index 2b3af67954a..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/grammar/gpp/GPPSizeofExpressionParser.g
+++ /dev/null
@@ -1,48 +0,0 @@
------------------------------------------------------------------------------------
--- Copyright (c) 2009 IBM Corporation and others.
--- This program and the accompanying materials
--- are made available under the terms of the Eclipse Public License 2.0
--- which accompanies this distribution, and is available at
--- https://www.eclipse.org/legal/epl-2.0/
---
--- SPDX-License-Identifier: EPL-2.0
---
--- Contributors:
--- IBM Corporation - initial API and implementation
------------------------------------------------------------------------------------
-
-%options la=2
-%options package=org.eclipse.cdt.internal.core.dom.lrparser.gpp
-%options template=LRSecondaryParserTemplate.g
-
-
-$Import
- GPPGrammar.g
-$DropRules
-
- unary_expression
- ::= 'sizeof' '(' type_id ')'
- | '__alignof__' '(' type_id ')'
- | 'typeof' '(' type_id ')'
-
- postfix_expression
- ::= 'typeid' '(' type_id ')'
-
-$End
-
-$Define
- $ast_class /. IASTExpression ./
-$End
-
-$Start
- no_sizeof_type_id_start
-$End
-
-$Rules
-
- no_sizeof_type_id_start
- ::= expression
- | ERROR_TOKEN
- /. $Build consumeEmpty(); $EndBuild ./
-
-$End \ No newline at end of file
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/grammar/parserBuild.properties b/lrparser/org.eclipse.cdt.core.lrparser/grammar/parserBuild.properties
deleted file mode 100644
index 03f5f9749ab..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/grammar/parserBuild.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-
-###############################################################################
-# Copyright (c) 2010 IBM Corporation and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-
-lpg_exe=D:/lpg/lpgdistribution/lpgexe/lpg.exe
-lpg_template=D:/newWorkspace/rdp80_dev/org.eclipse.cdt.core.lrparser/grammar/template \ No newline at end of file
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/grammar/template/LRParserTemplate.g b/lrparser/org.eclipse.cdt.core.lrparser/grammar/template/LRParserTemplate.g
deleted file mode 100644
index b86f35ca860..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/grammar/template/LRParserTemplate.g
+++ /dev/null
@@ -1,417 +0,0 @@
-----------------------------------------------------------------------------------
--- Copyright (c) 2006, 2010 IBM Corporation and others.
--- This program and the accompanying materials
--- are made available under the terms of the Eclipse Public License 2.0
--- which accompanies this distribution, and is available at
--- https://www.eclipse.org/legal/epl-2.0/
---
--- SPDX-License-Identifier: EPL-2.0
---
--- Contributors:
--- IBM Corporation - initial API and implementation
-----------------------------------------------------------------------------------
-
-
--- This template is a modified version of BtParserTemplateD.g. for use with the LR parsers.
--- This template contains a fix for an LPG bug:
--- http://sourceforge.net/tracker/index.php?func=detail&aid=1732851&group_id=155963&atid=797879
-
-
-
---
--- In a parser using this template, the following macro may be redefined:
---
--- $additional_interfaces
--- $ast_class
---
--- B E G I N N I N G O F T E M P L A T E btParserTemplateD
---
-%Options programming_language=java,margin=4,backtrack
-%Options table,error_maps,scopes
-%options prefix=TK_,
-%options action=("*.java", "/.", "./")
-%options ParseTable=lpg.lpgjavaruntime.ParseTable
-
---
--- This template requires that the name of the EOF token be set
--- to EOF_TOKEN to be consistent with LexerTemplateD and LexerTemplateE
---
-$EOF
- EOF_TOKEN
-$End
-
-$ERROR
- ERROR_TOKEN
-$End
-
-$Define
-
- $Header
- /.
- //
- // Rule $rule_number: $rule_text
- //./
-
- $BeginAction
- /. $Header
- case $rule_number: {./
-
- $EndAction
- /. break;
- }./
-
- $BeginJava
- /.$BeginAction
- $symbol_declarations./
-
- $EndJava /.$EndAction./
-
- $NoAction
- /. $Header
- case $rule_number:
- break;./
-
- $BadAction
- /. $Header
- case $rule_number:
- throw new Error("No action specified for rule " + $rule_number);./
-
- $NullAction
- /. $Header
- case $rule_number:
- setResult(null);
- break;./
-
- $BeginActions
- /.
- public void ruleAction(int ruleNumber)
- {
- switch (ruleNumber)
- {./
-
- $SplitActions
- /.
- default:
- ruleAction$rule_number(ruleNumber);
- break;
- }
- return;
- }
-
- public void ruleAction$rule_number(int ruleNumber)
- {
- switch (ruleNumber)
- {./
-
- $EndActions
- /.
- default:
- break;
- }
- return;
- }./
-
- --
- -- Macros that may be needed in a parser using this template
- --
- $additional_interfaces /../
- $ast_class /.$ast_type./
-
- --
- -- Old deprecated macros that should NEVER be used.
- --
- $setSym1 /. // macro setSym1 is deprecated. Use function setResult
- getParser().setSym1./
- $setResult /. // macro setResult is deprecated. Use function setResult
- getParser().setSym1./
- $getSym /. // macro getSym is deprecated. Use function getRhsSym
- getParser().getSym./
- $getToken /. // macro getToken is deprecated. Use function getRhsTokenIndex
- getParser().getToken./
- $getIToken /. // macro getIToken is deprecated. Use function getRhsIToken
- super.getIToken./
- $getLeftSpan /. // macro getLeftSpan is deprecated. Use function getLeftSpan
- getParser().getFirstToken./
- $getRightSpan /. // macro getRightSpan is deprecated. Use function getRightSpan
- getParser().getLastToken./
-$End
-
-$Globals
- /.import lpg.lpgjavaruntime.*;
- ./
-$End
-
-$Headers
- /.
- public class $action_type extends PrsStream implements RuleAction, ITokenStream,
- ITokenCollector, IParser<$ast_class>
- $additional_interfaces
- {
- private static ParseTable prs = new $prs_type();
- private FixedBacktrackingParser btParser;
-
- public FixedBacktrackingParser getParser() { return btParser; }
- private void setResult(Object object) { btParser.setSym1(object); }
- public Object getRhsSym(int i) { return btParser.getSym(i); }
-
- public int getRhsTokenIndex(int i) { return btParser.getToken(i); }
- public IToken getRhsIToken(int i) { return super.getIToken(getRhsTokenIndex(i)); }
-
- public int getRhsFirstTokenIndex(int i) { return btParser.getFirstToken(i); }
- public IToken getRhsFirstIToken(int i) { return super.getIToken(getRhsFirstTokenIndex(i)); }
-
- public int getRhsLastTokenIndex(int i) { return btParser.getLastToken(i); }
- public IToken getRhsLastIToken(int i) { return super.getIToken(getRhsLastTokenIndex(i)); }
-
- public int getLeftSpan() { return btParser.getFirstToken(); }
- public IToken getLeftIToken() { return super.getIToken(getLeftSpan()); }
-
- public int getRightSpan() { return btParser.getLastToken(); }
- public IToken getRightIToken() { return super.getIToken(getRightSpan()); }
-
- public int getRhsErrorTokenIndex(int i)
- {
- int index = btParser.getToken(i);
- IToken err = super.getIToken(index);
- return (err instanceof ErrorToken ? index : 0);
- }
- public ErrorToken getRhsErrorIToken(int i)
- {
- int index = btParser.getToken(i);
- IToken err = super.getIToken(index);
- return (ErrorToken) (err instanceof ErrorToken ? err : null);
- }
-
- public $action_type(LexStream lexStream)
- {
- super(lexStream);
-
- try
- {
- super.remapTerminalSymbols(orderedTerminalSymbols(), $prs_type.EOFT_SYMBOL);
- }
- catch(NullExportedSymbolsException e) {
- }
- catch(NullTerminalSymbolsException e) {
- }
- catch(UnimplementedTerminalsException e)
- {
- java.util.ArrayList unimplemented_symbols = e.getSymbols();
- System.out.println("The Lexer will not scan the following token(s):");
- for (int i = 0; i < unimplemented_symbols.size(); i++)
- {
- Integer id = (Integer) unimplemented_symbols.get(i);
- System.out.println(" " + $sym_type.orderedTerminalSymbols[id.intValue()]);
- }
- System.out.println();
- }
- catch(UndefinedEofSymbolException e)
- {
- throw new Error(new UndefinedEofSymbolException
- ("The Lexer does not implement the Eof symbol " +
- $sym_type.orderedTerminalSymbols[$prs_type.EOFT_SYMBOL]));
- }
- }
-
- public String[] orderedTerminalSymbols() { return $sym_type.orderedTerminalSymbols; }
- public String getTokenKindName(int kind) { return $sym_type.orderedTerminalSymbols[kind]; }
- public int getEOFTokenKind() { return $prs_type.EOFT_SYMBOL; }
- public PrsStream getParseStream() { return (PrsStream) this; }
-
- //
- // Report error message for given error_token.
- //
- public final void reportErrorTokenMessage(int error_token, String msg)
- {
- int firsttok = super.getFirstErrorToken(error_token),
- lasttok = super.getLastErrorToken(error_token);
- String location = super.getFileName() + ':' +
- (firsttok > lasttok
- ? (super.getEndLine(lasttok) + ":" + super.getEndColumn(lasttok))
- : (super.getLine(error_token) + ":" +
- super.getColumn(error_token) + ":" +
- super.getEndLine(error_token) + ":" +
- super.getEndColumn(error_token)))
- + ": ";
- super.reportError((firsttok > lasttok ? ParseErrorCodes.INSERTION_CODE : ParseErrorCodes.SUBSTITUTION_CODE), location, msg);
- }
-
- public void parser()
- {
- parser(null, 0);
- }
-
- public void parser(Monitor monitor)
- {
- parser(monitor, 0);
- }
-
- public void parser(int error_repair_count)
- {
- parser(null, error_repair_count);
- }
-
- public void parser(Monitor monitor, int error_repair_count)
- {
- try
- {
- btParser = new FixedBacktrackingParser(monitor, (TokenStream) this, prs, (RuleAction) this);
- }
- catch (NotBacktrackParseTableException e)
- {
- throw new Error(new NotBacktrackParseTableException
- ("Regenerate $prs_type.java with -BACKTRACK option"));
- }
- catch (BadParseSymFileException e)
- {
- throw new Error(new BadParseSymFileException("Bad Parser Symbol File -- $sym_type.java"));
- }
-
- try
- {
- btParser.parse(error_repair_count);
- }
- catch (BadParseException e)
- {
- reset(e.error_token); // point to error token
- DiagnoseParser diagnoseParser = new DiagnoseParser(this, prs);
- diagnoseParser.diagnose(e.error_token);
- }
- }
-
- ./
-
-$End
-
-$Rules
- /.$BeginActions./
-$End
-
-$Trailers
- /.
- $EndActions
- }
- ./
-$End
-
-
-$Notice
--- Copied into all files generated by LPG
-/./*******************************************************************************
- * Copyright (c) 2006, 2010 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *********************************************************************************/
-
- // This file was generated by LPG
-./
-$End
-
-
-$Define
- -- These macros allow the template and header code to be customized by an extending parser.
-
- $ast_class /. IASTTranslationUnit ./ -- override in secondary parsers
-
- $extra_interfaces /. ./ -- can override this macro to provide additional interfaces
- $additional_interfaces /. $extra_interfaces ./
-
- $build_action_class /. ./ -- name of the class that has the AST building callbacks
- $node_factory_create_expression /. ./ -- expression that will create the INodeFactory
- $parser_factory_create_expression /. ./ -- expression that will create the ISecondaryParserFactory
-
- $action_initializations /. ./
-
- $Build /. $BeginAction action. ./ -- special action just for calling methods on the builder
- $EndBuild /. $EndAction ./
-$End
-
-
-$Globals
-/.
- import java.util.*;
- import org.eclipse.cdt.core.dom.ast.*;
- import org.eclipse.cdt.core.dom.lrparser.IDOMTokenMap;
- import org.eclipse.cdt.core.dom.lrparser.IParser;
- import org.eclipse.cdt.core.dom.lrparser.ITokenCollector;
- import org.eclipse.cdt.core.dom.lrparser.CPreprocessorAdapter;
- import org.eclipse.cdt.core.dom.lrparser.action.ITokenStream;
- import org.eclipse.cdt.core.dom.lrparser.lpgextensions.FixedBacktrackingParser;
- import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack;
- import org.eclipse.cdt.core.parser.IScanner;
- import org.eclipse.cdt.core.dom.parser.IBuiltinBindingsProvider;
- import org.eclipse.cdt.core.index.IIndex;
-./
-$End
-
-$Headers
-/.
- private $build_action_class action;
- private IASTCompletionNode compNode;
-
-
- public $action_type(IScanner scanner, IDOMTokenMap tokenMap, IBuiltinBindingsProvider builtinBindingsProvider, IIndex index, Map<String,String> properties) {
- initActions(properties);
- action.initializeTranslationUnit(scanner, builtinBindingsProvider, index);
- CPreprocessorAdapter.runCPreprocessor(scanner, this, tokenMap);
- }
-
- private void initActions(Map<String,String> properties) {
- ScopedStack<Object> astStack = new ScopedStack<Object>();
-
- action = new $build_action_class(this, astStack, $node_factory_create_expression, $parser_factory_create_expression);
- action.setParserProperties(properties);
-
- $action_initializations
- }
-
-
- public void addToken(IToken token) {
- token.setKind(mapKind(token.getKind())); // TODO does mapKind need to be called?
- super.addToken(token);
- }
-
-
- public $ast_class parse() {
- // this has to be done, or... kaboom!
- setStreamLength(getSize());
-
- final int errorRepairCount = -1; // -1 means full error handling
- parser(null, errorRepairCount); // do the actual parse
- super.resetTokenStream(); // allow tokens to be garbage collected
-
- compNode = action.getASTCompletionNode(); // the completion node may be null
- return ($ast_class) action.getParseResult();
- }
-
-
- public IASTCompletionNode getCompletionNode() {
- return compNode;
- }
-
- // uncomment this method to use with backtracking parser
- public List<IToken> getRuleTokens() {
- return getTokens().subList(getLeftSpan(), getRightSpan() + 1);
- }
-
- public String[] getOrderedTerminalSymbols() {
- return $sym_type.orderedTerminalSymbols;
- }
-
- @SuppressWarnings("nls")
- public String getName() {
- return "$action_type";
- }
-
-./
-$End
-
-
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/grammar/template/LRSecondaryParserTemplate.g b/lrparser/org.eclipse.cdt.core.lrparser/grammar/template/LRSecondaryParserTemplate.g
deleted file mode 100644
index fe86a6e9d98..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/grammar/template/LRSecondaryParserTemplate.g
+++ /dev/null
@@ -1,68 +0,0 @@
-----------------------------------------------------------------------------------
--- Copyright (c) 2006, 2010 IBM Corporation and others.
--- This program and the accompanying materials
--- are made available under the terms of the Eclipse Public License 2.0
--- which accompanies this distribution, and is available at
--- https://www.eclipse.org/legal/epl-2.0/
---
--- SPDX-License-Identifier: EPL-2.0
---
--- Contributors:
--- IBM Corporation - initial API and implementation
-----------------------------------------------------------------------------------
-
-
-%Options programming_language=java,margin=4,backtrack
-%Options table,error_maps,scopes
-%options prefix=TK_,
-%options action=("*.java", "/.", "./")
-%options ParseTable=lpg.lpgjavaruntime.ParseTable
-
-
--- additional code needed by secondary parsers
-
--- path is relative to the grammar file that uses the template
-$Include
-../template/LRParserTemplate.g
-$End
-
-
-
-
-$Define
-
- $additional_interfaces /. , ISecondaryParser<$ast_class> $extra_interfaces ./
-
-$End
-
-$Globals
-/.
- import org.eclipse.cdt.core.dom.lrparser.action.ITokenMap;
- import org.eclipse.cdt.core.dom.lrparser.action.TokenMap;
- import org.eclipse.cdt.core.dom.lrparser.ISecondaryParser;
-./
-$End
-
-$Headers
-/.
-
- private ITokenMap tokenMap = null;
-
- public void setTokens(List<IToken> tokens) {
- resetTokenStream();
- addToken(new Token(null, 0, 0, 0)); // dummy token
- for(IToken token : tokens) {
- token.setKind(tokenMap.mapKind(token.getKind()));
- addToken(token);
- }
- addToken(new Token(null, 0, 0, $sym_type.TK_EOF_TOKEN));
- }
-
- public $action_type(ITokenStream stream, Map<String,String> properties) { // constructor for creating secondary parser
- initActions(properties);
- tokenMap = new TokenMap($sym_type.orderedTerminalSymbols, stream.getOrderedTerminalSymbols());
- }
-
-./
-$End
-
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/action/deprecated/C99ResolveParserAction.java b/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/action/deprecated/C99ResolveParserAction.java
deleted file mode 100644
index 61df620b94f..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/action/deprecated/C99ResolveParserAction.java
+++ /dev/null
@@ -1,1625 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2015 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.internal.core.dom.lrparser.c99.action.deprecated;
-
-import static org.eclipse.cdt.core.parser.util.CollectionUtils.reverseIterable;
-import static org.eclipse.cdt.internal.core.dom.lrparser.symboltable.CNamespace.GOTO_LABEL;
-import static org.eclipse.cdt.internal.core.dom.lrparser.symboltable.CNamespace.IDENTIFIER;
-import static org.eclipse.cdt.internal.core.dom.lrparser.symboltable.CNamespace.STRUCT_TAG;
-
-import java.util.LinkedList;
-import java.util.List;
-
-import org.eclipse.cdt.core.dom.ast.EScopeKind;
-import org.eclipse.cdt.core.dom.ast.IASTBinaryExpression;
-import org.eclipse.cdt.core.dom.ast.IASTElaboratedTypeSpecifier;
-import org.eclipse.cdt.core.dom.ast.IASTLiteralExpression;
-import org.eclipse.cdt.core.dom.ast.IArrayType;
-import org.eclipse.cdt.core.dom.ast.IBasicType;
-import org.eclipse.cdt.core.dom.ast.IBinding;
-import org.eclipse.cdt.core.dom.ast.ICompositeType;
-import org.eclipse.cdt.core.dom.ast.IField;
-import org.eclipse.cdt.core.dom.ast.IFunctionType;
-import org.eclipse.cdt.core.dom.ast.IParameter;
-import org.eclipse.cdt.core.dom.ast.IPointerType;
-import org.eclipse.cdt.core.dom.ast.IType;
-import org.eclipse.cdt.core.dom.ast.ITypedef;
-import org.eclipse.cdt.core.dom.lrparser.action.ITokenStream;
-import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack;
-import org.eclipse.cdt.core.parser.util.DebugUtil;
-import org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym;
-import org.eclipse.cdt.internal.core.dom.lrparser.c99.bindings.C99ArrayType;
-import org.eclipse.cdt.internal.core.dom.lrparser.c99.bindings.C99BasicType;
-import org.eclipse.cdt.internal.core.dom.lrparser.c99.bindings.C99Enumeration;
-import org.eclipse.cdt.internal.core.dom.lrparser.c99.bindings.C99Enumerator;
-import org.eclipse.cdt.internal.core.dom.lrparser.c99.bindings.C99Field;
-import org.eclipse.cdt.internal.core.dom.lrparser.c99.bindings.C99Function;
-import org.eclipse.cdt.internal.core.dom.lrparser.c99.bindings.C99FunctionScope;
-import org.eclipse.cdt.internal.core.dom.lrparser.c99.bindings.C99FunctionType;
-import org.eclipse.cdt.internal.core.dom.lrparser.c99.bindings.C99Label;
-import org.eclipse.cdt.internal.core.dom.lrparser.c99.bindings.C99Parameter;
-import org.eclipse.cdt.internal.core.dom.lrparser.c99.bindings.C99PointerType;
-import org.eclipse.cdt.internal.core.dom.lrparser.c99.bindings.C99ProblemBinding;
-import org.eclipse.cdt.internal.core.dom.lrparser.c99.bindings.C99Scope;
-import org.eclipse.cdt.internal.core.dom.lrparser.c99.bindings.C99Structure;
-import org.eclipse.cdt.internal.core.dom.lrparser.c99.bindings.C99Typedef;
-import org.eclipse.cdt.internal.core.dom.lrparser.c99.bindings.C99Variable;
-import org.eclipse.cdt.internal.core.dom.lrparser.c99.bindings.IC99Binding;
-import org.eclipse.cdt.internal.core.dom.lrparser.c99.bindings.IC99Scope;
-import org.eclipse.cdt.internal.core.dom.lrparser.c99.bindings.ITypeable;
-import org.eclipse.cdt.internal.core.dom.lrparser.symboltable.C99SymbolTable;
-import org.eclipse.cdt.internal.core.dom.parser.ITypeContainer;
-
-import lpg.lpgjavaruntime.IToken;
-
-/**
- * This class was an attempt at doing full binding resolution during the parse
- * as opposed to doing it after the parse as is normally done with the DOM parser.
- *
- *
- * TODO: token mapping so that this will work with UPC
- * TODO: what about function definitions, don't they count as declarations?
- *
- * Try to resolve bindings without using the ASTStack, that way I can resolve bindings
- * without generating an AST. In the future I can remove this as a subclass of C99ParserAction.
- *
- * TODO: if I'm calculating scopes then those scopes need to be linked to AST nodes
- *
- * TODO: some language constructs are not handled yet: typeIds (casts), field designators
- *
- * @author Mike Kucera
- *
- * @deprecated Binding resolution is too hard, replacing with simpler C99TypedefTrackerParserAction
- */
-@SuppressWarnings("restriction")
-@Deprecated
-public class C99ResolveParserAction {
-
- private static final boolean DEBUG = true;
- private static final String NO_IDENT = ""; //$NON-NLS-1$
-
- // provides limited access to the token stream
- private final ITokenStream parser;
-
- // The symbolTable currently in use
- private C99SymbolTable symbolTable = C99SymbolTable.EMPTY_TABLE;
-
- // A stack that keeps track of scopes in the symbol table, used to "close" scopes and to undo the opening of scopes
- private final LinkedList<C99SymbolTable> symbolTableScopeStack = new LinkedList<>();
-
- // A stack that keeps track of scopes that are set on bindings
- private final LinkedList<IC99Scope> bindingScopeStack = new LinkedList<>();
-
- // keeps track of nested declarations
- private final LinkedList<DeclaratorFrame> declarationStack = new LinkedList<>();
-
- // keeps track of expression types
- private final ScopedStack<IType> exprTypeStack = new ScopedStack<>();
-
- private TypeQualifiers typeQualifiers; // TODO: can this go in the declaration stack?
-
- private static class TypeQualifiers {
- boolean isConst, isRestrict, isVolatile;
- }
-
- // "For every action there is an equal and opposite reaction." - Newton's third law
- private final LinkedList<IUndoAction> undoStack = new LinkedList<>();
-
- private interface IUndoAction {
- void undo();
- }
-
- public void undo() {
- undoStack.removeLast().undo();
- }
-
- public void undo(int steps) {
- for (int i = 0; i < steps; i++) {
- undo();
- }
- }
-
- public IC99Scope getCurrentScope() {
- return bindingScopeStack.getLast();
- }
-
- public C99ResolveParserAction(ITokenStream parser) {
- this.parser = parser;
- bindingScopeStack.add(new C99Scope(EScopeKind.eGlobal)); // the global scope
- System.out.println();
- }
-
- private static IType rawType(IType type) {
- while (type instanceof ITypedef) {
- type = ((C99Typedef) type).getType();
- }
- return type;
- }
-
- /**
- * Lexer feedback hack, used by the parser to identify typedefname tokens.
- */
- public boolean isTypedef(String ident) {
- boolean result = symbolTable.lookup(IDENTIFIER, ident) instanceof ITypedef;
- return result;
- }
-
- /**
- * Methods used by tests, package local access.
- */
- C99SymbolTable getSymbolTable() {
- return symbolTable;
- }
-
- int undoStackSize() {
- return undoStack.size();
- }
-
- LinkedList<DeclaratorFrame> getDeclarationStack() {
- return declarationStack;
- }
-
- /**
- * Called from the grammar file in places where a scope is created.
- *
- * Scopes are created by compound statements, however special care
- * must also be taken with for loops because they may contain
- * declarations.
- *
- * TODO: scope object now need to be handled explicitly
- */
- public void openSymbolScope() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- symbolTableScopeStack.add(symbolTable);
- bindingScopeStack.add(new C99Scope(EScopeKind.eLocal));
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
-
- bindingScopeStack.removeLast();
- symbolTable = symbolTableScopeStack.removeLast();
- }
- });
- }
-
- public IC99Scope closeSymbolScope() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- final C99SymbolTable undoTable = symbolTable;
- symbolTable = symbolTableScopeStack.removeLast(); // close the scope
-
- final IC99Scope undoScope = bindingScopeStack.removeLast();
- if (!bindingScopeStack.isEmpty())
- undoScope.setParent(bindingScopeStack.getLast());
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- undoScope.setParent(null);
- bindingScopeStack.add(undoScope);
-
- symbolTableScopeStack.add(symbolTable);
- symbolTable = undoTable;
- }
- });
-
- return undoScope;
- }
-
- // TODO, this needs an undo action
- public void openPointerScope() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- final DeclaratorFrame frame = declarationStack.getLast();
- frame.openPointerModifierScope();
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- frame.closePointerModifierScope();
- }
- });
- }
-
- /**
- * Called from the grammar before a declaration is about to be reduced.
- */
- public void openDeclarationScope() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- declarationStack.add(new DeclaratorFrame());
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- declarationStack.removeLast();
- }
- });
- }
-
- public void closeDeclarationScope() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- final DeclaratorFrame undoFrame = declarationStack.removeLast();
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- declarationStack.add(undoFrame);
- }
- });
- }
-
- public void consumeFunctionDefinition() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- // final IC99Scope undoScope = bindingScope;
- //
- // C99FunctionScope functionScope = new C99FunctionScope();
- // functionScope.setBodyScope(undoScope);
- // undoScope.setParent(functionScope);
- // bindingScope = bindingScopeStack.removeLast();
- // functionScope.setParent(bindingScope);
-
- final IC99Scope undoScope = bindingScopeStack.removeLast();
-
- C99FunctionScope functionScope = new C99FunctionScope();
- functionScope.setBodyScope(undoScope);
- undoScope.setParent(functionScope);
- functionScope.setParent(bindingScopeStack.getLast());
-
- final DeclaratorFrame frame = declarationStack.removeLast();
-
- // the function binding needs to be available outside of the function's scope
- String functionName = frame.getDeclaratorName().toString();
- C99Function functionBinding = (C99Function) symbolTable.lookup(IDENTIFIER, functionName);
- functionBinding.setFunctionScope(functionScope);
-
- final C99SymbolTable undoTable = symbolTable;
- final C99SymbolTable outerTable = symbolTableScopeStack.removeLast();
- symbolTable = outerTable.insert(IDENTIFIER, functionName, functionBinding);
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- symbolTableScopeStack.add(outerTable);
- symbolTable = undoTable;
- declarationStack.add(frame);
- bindingScopeStack.add(undoScope);
- }
- });
- }
-
- public void consumeAbstractDeclaratorFunctionDeclarator() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- final DeclaratorFrame frame = declarationStack.getLast();
- frame.setFunctionDeclarator(true);
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- frame.setFunctionDeclarator(false);
- }
- });
- }
-
- public void consumeDirectDeclaratorFunctionDeclarator() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- final DeclaratorFrame frame = declarationStack.getLast();
- frame.setFunctionDeclarator(true);
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
- frame.setFunctionDeclarator(false);
- }
- });
- }
-
- public void consumeDeclSpecToken() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- IToken token = parser.getRightIToken();
- final int kind = token.getKind();
-
- // creates a DeclSpec if there isn't one already
- DeclaratorFrame frame = declarationStack.getLast();
- final DeclSpec declSpec = frame.getDeclSpec();
- declSpec.add(kind);
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- declSpec.remove(kind);
- }
- });
- }
-
- /**
- * A labeled statement is creates an implicit declaration of the label identifier.
- *
- * TODO: a label has function scope, meaning the same label cannot be declared twice
- * in a function regardless of block scope.
- * TODO: labels can be implicitly declared, that is a goto can exist above the label
- */
- public IBinding consumeStatementLabeled() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- IToken token = parser.getLeftIToken();
- String ident = token.toString();
-
- IC99Binding labelBinding = new C99Label(ident);
- // TODO: strictly speaking the same label cannot be declared twice,
- // but we aren't checking that here
- final C99SymbolTable oldTable = symbolTable;
- symbolTable = symbolTable.insert(GOTO_LABEL, ident, labelBinding);
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- symbolTable = oldTable;
- }
- });
-
- return labelBinding;
- }
-
- public IBinding consumeStatementGoto() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- List<IToken> ruleTokens = parser.getRuleTokens();
- assert ruleTokens.size() == 3 : "a goto statement must always consist of 3 tokens"; //$NON-NLS-1$
- String ident = ruleTokens.get(1).toString();
-
- final C99SymbolTable oldTable = symbolTable;
-
- IC99Binding labelBinding = symbolTable.lookup(GOTO_LABEL, ident);
- if (labelBinding == null) {
- labelBinding = new C99Label(ident);
- symbolTable = symbolTable.insert(GOTO_LABEL, ident, labelBinding);
- }
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
- symbolTable = oldTable;
- }
- });
-
- return labelBinding;
- }
-
- public IBinding consumeDeclarationSpecifiersTypedefName() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- // find the typedef token
- String typedefName = null;
- for (IToken token : parser.getRuleTokens()) {
- // the token kind will still be TK_identifier, but there can only be one
- if (token.getKind() == C99Parsersym.TK_identifier) {
- typedefName = token.toString();
- break;
- }
- }
- assert typedefName != null : "a typedef token must have been parsed for this action to fire"; //$NON-NLS-1$
-
- // we know that the binding is a typedef because the lexer feedback hack worked and got us here
- ITypedef binding = (ITypedef) symbolTable.lookup(IDENTIFIER, typedefName);
- // TODO: do I need to clone the typedef in case it is further modified like with const?
- DeclaratorFrame frame = declarationStack.getLast();
- final DeclSpec declSpec = frame.getDeclSpec();
- declSpec.setType(binding);
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
- declSpec.setType(null);
- }
- });
-
- return binding;
- }
-
- public void consumeDirectDeclaratorIdentifier() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- final DeclaratorFrame frame = declarationStack.getLast();
- DebugUtil.printMethodTrace();
- frame.setDeclaratorName(parser.getRightIToken());
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
- DebugUtil.printMethodTrace();
- frame.setDeclaratorName(null);
- }
- });
- }
-
- // TODO need to be careful, this is called in a lot of places in the grammar
- public void consumeDeclaratorWithPointer() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- final DeclaratorFrame frame = declarationStack.getLast();
- final LinkedList<C99PointerType> scope = frame.closePointerModifierScope();
- final int scopeSize = scope.size();
-
- for (C99PointerType pt : reverseIterable(scope)) {
- frame.addTypeModifier(pt);
- }
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
- for (int i = 0; i < scopeSize; i++) {
- frame.removeLastTypeModifier();
- }
- frame.openPointerModifierScope(scope);
- }
- });
- }
-
- public void consumeDirectDeclaratorBracketed() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- // Used to tell the difference between function prototype declarations and function pointer declarations
- final DeclaratorFrame frame = declarationStack.getLast();
- frame.setDeclaratorBracketed(true);
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
- frame.setDeclaratorBracketed(false);
- }
- });
- }
-
- public IBinding consumeDeclaratorComplete() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- final DeclaratorFrame frame = declarationStack.getLast();
-
- IToken token = frame.getDeclaratorName();
- IType type = frame.getDeclaratorType();
- DeclSpec declSpec = frame.getDeclSpec();
- boolean isFunction = frame.isFunctionDeclarator();
- List<IBinding> nestedDeclarators = frame.getNestedDeclarations();
-
- if (isFunction)
- type = createFunctionType(type, nestedDeclarators);
-
- String ident = (token == null) ? null : token.toString();
-
- // compute the binding
- IC99Binding binding;
- if (declSpec.isTypedef())
- binding = createTypedefBinding(ident, type);
- else if (isFunction && !frame.isDeclaratorBracketed())
- binding = createFunctionBinding(ident, (IFunctionType) type, declSpec, nestedDeclarators);
- else
- binding = createVariableBinding(ident, type, declSpec);
-
- binding.setScope(bindingScopeStack.getLast());
-
- // insert into symbol table
- final C99SymbolTable oldTable = symbolTable;
- if (ident != null)
- symbolTable = symbolTable.insert(IDENTIFIER, ident, binding);
-
- declarationStack.removeLast();
- declarationStack.add(new DeclaratorFrame(frame.getDeclSpec())); // reset the declarator
- exprTypeStack.push(type);
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- exprTypeStack.pop();
- declarationStack.removeLast();
- declarationStack.add(frame);
- symbolTable = oldTable;
- }
- });
-
- return binding;
- }
-
- /**
- * Just gets rid of the type that was on the type stack.
- */
- public void consumeInitDeclarator() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- final IType type = exprTypeStack.pop();
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- exprTypeStack.push(type);
- }
- });
- }
-
- public IBinding consumeFunctionDefinitionHeader() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- DeclaratorFrame frame = declarationStack.getLast();
- DeclSpec declSpec = frame.getDeclSpec();
- String functionName = frame.getDeclaratorName().toString();
-
- final C99SymbolTable oldTable = symbolTable;
-
- // there may have been a function prototype, hence there may already be a binding for the function
- IC99Binding binding = symbolTable.lookup(IDENTIFIER, functionName);
- if (binding == null) {
- IType type = frame.getDeclaratorType();
- List<IBinding> nestedDeclarators = frame.getNestedDeclarations();
-
- IFunctionType functionType = createFunctionType(type, nestedDeclarators);
- binding = createFunctionBinding(functionName, functionType, declSpec, nestedDeclarators);
-
- // a scope has already been opened for the function body, use the outer scope
- IC99Scope topScope = bindingScopeStack.removeLast();
- binding.setScope(bindingScopeStack.getLast());
- bindingScopeStack.add(topScope);
-
- symbolTable = symbolTable.insert(IDENTIFIER, functionName, binding);
- }
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
- symbolTable = oldTable;
- }
- });
-
- return binding;
- }
-
- public IBinding consumeDeclaratorCompleteParameter() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- final DeclaratorFrame frame = declarationStack.removeLast();
- IToken token = frame.getDeclaratorName();
- IType type = frame.getDeclaratorType();
- DeclSpec declSpec = frame.getDeclSpec();
- boolean isFunction = frame.isFunctionDeclarator();
-
- // its a function pointer
- if (isFunction)
- type = createFunctionType(type, frame.getNestedDeclarations());
-
- String ident = (token == null) ? NO_IDENT : token.toString();
-
- IC99Binding parameterBinding = createParameterBinding(ident, type, declSpec);
- parameterBinding.setScope(bindingScopeStack.getLast());
-
- // check to see if there is already a parameter binding
- String functionName = declarationStack.getLast().getDeclaratorName().toString();
- C99Function function = (C99Function) symbolTable.lookup(IDENTIFIER, functionName);
-
- if (function != null) {
- // there is already a function binding for this function, that means there
- // is a function prototype and there is already a binding for this parameter
- int position = declarationStack.getLast().getNestedDeclarations().size();
- IParameter[] parameters = function.getParameters();
- if (parameters != null && position < parameters.length) {
- parameterBinding = (IC99Binding) parameters[position];
- }
- }
-
- // even if the binding is reused it still might be under a different name
- final C99SymbolTable oldTable = symbolTable;
- if (ident != null) {
- symbolTable = symbolTable.insert(IDENTIFIER, ident, parameterBinding);
- }
-
- declarationStack.getLast().addNestedDeclaration(parameterBinding);
-
- // parameter declarations can only have one declarator, so don't reset
- //declarationStack.add(new DeclaratorFrame()); // reset
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
- //declarationStack.removeLast();
- declarationStack.getLast().removeLastNestedDeclaration();
- declarationStack.add(frame);
- symbolTable = oldTable;
- }
- });
-
- return parameterBinding;
- }
-
- /**
- * This is a special case for the rule:
- * parameter_declaration ::= declaration_specifiers
- *
- * In this case there is no declarator at all
- *
- * TODO: creating bindings that have no identifier seems really dumb,
- * why does it need to be done? Why not just have a null binding or
- * for that matter don't even have a name node
- *
- */
- public IBinding consumeParameterDeclarationWithoutDeclarator() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- final DeclaratorFrame frame = declarationStack.removeLast();
- DeclSpec declSpec = frame.getDeclSpec();
- C99Parameter param = createParameterBinding(null, declSpec.getType(), declSpec);
- declarationStack.getLast().addNestedDeclaration(param);
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
- declarationStack.getLast().removeLastNestedDeclaration();
- declarationStack.add(frame);
- }
- });
-
- return param;
- }
-
- public IBinding consumeDeclaratorCompleteField() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- final DeclaratorFrame frame = declarationStack.getLast();
- IToken token = frame.getDeclaratorName();
- IType type = frame.getDeclaratorType();
-
- // its a function pointer
- if (frame.isFunctionDeclarator())
- type = createFunctionType(type, frame.getNestedDeclarations());
-
- IBinding binding = createFieldBinding(token.toString(), type, frame.getDeclSpec());
-
- declarationStack.removeLast();
- declarationStack.getLast().addNestedDeclaration(binding);
- declarationStack.add(new DeclaratorFrame(frame.getDeclSpec())); // reset the declarator
- exprTypeStack.push(type);
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
- exprTypeStack.pop();
- declarationStack.removeLast();
- declarationStack.getLast().removeLastNestedDeclaration();
- declarationStack.add(frame);
- }
- });
-
- return binding;
- }
-
- /**
- * An abstract declarator used as part of an expression, eg) a cast.
- * Only need the type.
- *
- * TODO: this isn't enough, I need a binding for the abstract declarator
- * what I really need is a consumeDeclaratorCompleteTypeId similar to above
- */
- public void consumeTypeId() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- final DeclaratorFrame frame = declarationStack.removeLast();
- IType type = frame.getDeclaratorType();
- if (frame.isFunctionDeclarator()) // its a function pointer
- type = createFunctionType(type, frame.getNestedDeclarations());
-
- exprTypeStack.push(type);
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
- exprTypeStack.pop();
- declarationStack.add(frame);
- }
- });
- }
-
- public void consumeDirectDeclaratorArrayModifier() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- final DeclaratorFrame frame = declarationStack.getLast();
- frame.addTypeModifier(new C99ArrayType());
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
- frame.removeLastTypeModifier();
- }
- });
- }
-
- public void consumeAbstractDeclaratorArrayModifier() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- final DeclaratorFrame frame = declarationStack.getLast();
- frame.addTypeModifier(new C99ArrayType());
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
- frame.removeLastTypeModifier();
- }
- });
- }
-
- public void consumeDirectDeclaratorModifiedArrayModifier(boolean isStatic, boolean isVarSized,
- boolean hasTypeQualifierList) {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- C99ArrayType arrayType = new C99ArrayType();
- arrayType.setStatic(isStatic);
- arrayType.setVariableLength(isVarSized);
-
- if (hasTypeQualifierList) {
- arrayType.setConst(typeQualifiers.isConst);
- arrayType.setRestrict(typeQualifiers.isRestrict);
- arrayType.setVolatile(typeQualifiers.isVolatile);
- }
-
- final DeclaratorFrame frame = declarationStack.getLast();
- frame.addTypeModifier(arrayType);
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
- frame.removeLastTypeModifier();
- }
- });
- }
-
- public void consumePointer() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- final DeclaratorFrame frame = declarationStack.getLast();
- frame.addPointerModifier(new C99PointerType());
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
- frame.removeLastPointerModifier();
- }
- });
- }
-
- public void consumePointerTypeQualifierList() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- C99PointerType pointerType = new C99PointerType();
- pointerType.setConst(typeQualifiers.isConst);
- pointerType.setRestrict(typeQualifiers.isRestrict);
- pointerType.setVolatile(typeQualifiers.isVolatile);
-
- final DeclaratorFrame frame = declarationStack.getLast();
- frame.addPointerModifier(pointerType);
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
- frame.removeLastPointerModifier();
- }
- });
- }
-
- public void consumeTypeQualifiers() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- typeQualifiers = new TypeQualifiers();
-
- for (IToken token : parser.getRuleTokens()) {
- switch (token.getKind()) {
- case C99Parsersym.TK_const:
- typeQualifiers.isConst = true;
- break;
- case C99Parsersym.TK_restrict:
- typeQualifiers.isRestrict = true;
- break;
- case C99Parsersym.TK_volatile:
- typeQualifiers.isVolatile = true;
- break;
- }
- }
-
- // I don't think this is really necessary but I need an undo action anyway
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
- typeQualifiers = null;
- }
- });
- }
-
- /**
- * Works for structs, unions and enums.
- * If the struct tag is not in the symbol table then it is treated
- * as a declaration.
- */
- public IBinding consumeTypeSpecifierElaborated(int kind) {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- String tag = parser.getRightIToken().toString();
-
- IC99Binding structBinding = symbolTable.lookup(STRUCT_TAG, tag);
-
- final C99SymbolTable undoTable;
-
- final boolean isDeclaration = (structBinding == null);
-
- if (isDeclaration) { // declaration of an incomplete type
- if (kind == IASTElaboratedTypeSpecifier.k_enum)
- structBinding = new C99Enumeration();
- else
- structBinding = new C99Structure(kind);
-
- undoTable = symbolTable;
- symbolTable = symbolTable.insert(STRUCT_TAG, tag, structBinding);
- } else {
- undoTable = null; // final variable must be initialized
- }
-
- final DeclSpec declSpec = declarationStack.getLast().getDeclSpec();
- declSpec.setType((IType) structBinding); // upcast
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
- declSpec.setType(null);
-
- if (isDeclaration) {
- assert undoTable != null;
- symbolTable = undoTable;
- }
- }
- });
-
- return structBinding;
- }
-
- /**
- * @param key A field in IASTCompositeTypeSpecifier.
- */
- public IBinding consumeTypeSpecifierComposite(final boolean hasName, int key) {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- // If the symbol table isn't updated then its still ok to undo
- // because setting symbolTable to oldTable will effectively be a no-op.
- final C99SymbolTable oldTable = symbolTable;
-
- C99Structure struct;
- if (hasName) {
- String ident = parser.getRuleTokens().get(1).toString();
- struct = (C99Structure) symbolTable.lookup(STRUCT_TAG, ident); // structure may have already been declared
- if (struct == null) {
- struct = new C99Structure(ident, key);
- symbolTable = symbolTable.insert(STRUCT_TAG, ident, struct);
- }
- } else {
- struct = new C99Structure(key);
- }
-
- final DeclaratorFrame frame = declarationStack.getLast();
- for (IBinding binding : frame.getNestedDeclarations()) {
- // the parser may allow invalid declarations like typedefs inside of structures, ignore those
- if (binding instanceof C99Field) {
- C99Field field = (C99Field) binding;
- struct.addField(field);
- field.setCompositeTypeOwner(struct);
- }
- }
-
- frame.getDeclSpec().setType(struct);
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
- frame.getDeclSpec().setType(null);
- symbolTable = oldTable;
- }
- });
-
- return struct;
- }
-
- public IBinding consumeTypeSpecifierEnumeration(final boolean hasName) {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- C99Enumeration enumeration = new C99Enumeration();
-
- final C99SymbolTable oldTable = symbolTable;
- if (hasName) {
- String ident = parser.getRuleTokens().get(1).toString();
- enumeration.setName(ident);
- symbolTable = symbolTable.insert(STRUCT_TAG, ident, enumeration);
- }
-
- final DeclaratorFrame frame = declarationStack.getLast();
- for (IBinding binding : frame.getNestedDeclarations()) {
- C99Enumerator enumerator = (C99Enumerator) binding;
- enumeration.addEnumerator(enumerator);
- enumerator.setType(enumeration);
- }
-
- frame.getDeclSpec().setType(enumeration);
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
- frame.getDeclSpec().setType(null);
- if (hasName)
- symbolTable = oldTable;
- }
- });
-
- return enumeration;
- }
-
- public IBinding consumeEnumerator() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- IToken token = parser.getLeftIToken();
- String ident = token.toString();
- C99Enumerator enumerator = new C99Enumerator(ident);
-
- final C99SymbolTable oldTable = symbolTable;
- symbolTable = symbolTable.insert(IDENTIFIER, ident, enumerator);
-
- // enumerators are not declarations in the standard sense, so a scope won't be opened for them
- declarationStack.getLast().addNestedDeclaration(enumerator);
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
- declarationStack.getLast().removeLastNestedDeclaration();
- symbolTable = oldTable;
- }
- });
-
- return enumerator;
- }
-
- public IField consumeDesignatorBaseField() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- IType baseType = getInitializerType();
- String fieldName = parser.getRightIToken().toString();
-
- C99Field fieldBinding = computeFieldBinding(baseType, fieldName, false);
- IType type = fieldBinding == null ? C99ProblemBinding.badType() : fieldBinding.getType();
-
- exprTypeStack.push(type);
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
- exprTypeStack.pop();
- }
- });
-
- return fieldBinding;
- }
-
- private IType getInitializerType() {
- List<IType> outerScope = exprTypeStack.outerScope();
- return outerScope.get(outerScope.size() - 1);
- }
-
- public void consumeDesignatorBaseArray() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- IType baseType = getInitializerType();
-
- IType type = C99ProblemBinding.badType();
- if (baseType instanceof C99ArrayType) {
- type = ((C99ArrayType) baseType).getType();
- }
-
- exprTypeStack.push(type);
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
- exprTypeStack.pop();
- }
- });
- }
-
- public void consumeInitializerStartPositional() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
- DebugUtil.printMethodTrace();
-
- IType type = getInitializerType();
- type = rawType(type);
-
- IType positionType;
- if (type instanceof C99Structure) {
- int position = exprTypeStack.topScope().size();
- C99Field field = (C99Field) ((C99Structure) type).getFields()[position];
- positionType = field.getType();
- } else if (type instanceof IArrayType) {
- positionType = ((C99ArrayType) type).getType();
- } else {
- positionType = C99ProblemBinding.badType();
- }
-
- exprTypeStack.push(positionType);
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
- exprTypeStack.pop();
- }
- });
- }
-
- private static C99FunctionType createFunctionType(IType returnType, List<IBinding> parameterDeclarations) {
- C99FunctionType functionType = new C99FunctionType();
- functionType.setReturnType(returnType);
- for (IBinding b : parameterDeclarations) {
- C99Variable parameter = (C99Variable) b;
- functionType.addParameterType(parameter.getType());
- }
- return functionType;
- }
-
- // helper functions for creating binding objects
-
- private static C99Function createFunctionBinding(String ident, IFunctionType type, DeclSpec declSpec) {
- C99Function func = new C99Function(ident == null ? NO_IDENT : ident, type);
- declSpec.modifyBinding(func);
- return func;
- }
-
- private static C99Function createFunctionBinding(String ident, IFunctionType type, DeclSpec declSpec,
- List<IBinding> params) {
- C99Function func = createFunctionBinding(ident, type, declSpec);
- for (IBinding b : params) {
- func.addParameter((IParameter) b);
- }
- return func;
- }
-
- private static C99Field createFieldBinding(String ident, IType type, DeclSpec declSpec) {
- C99Field var = new C99Field(ident == null ? NO_IDENT : ident);
- var.setType(type);
- declSpec.modifyBinding(var);
- return var;
- }
-
- private static C99Parameter createParameterBinding(String ident, IType type, DeclSpec declSpec) {
- C99Parameter param = new C99Parameter(ident == null ? NO_IDENT : ident);
- param.setType(type);
- declSpec.modifyBinding(param);
- return param;
- }
-
- private static C99Variable createVariableBinding(String ident, IType type, DeclSpec declSpec) {
- C99Variable var = new C99Variable(ident == null ? NO_IDENT : ident);
- var.setType(type);
- declSpec.modifyBinding(var);
- return var;
- }
-
- private static C99Typedef createTypedefBinding(String ident, IType type) {
- return new C99Typedef(type, ident == null ? NO_IDENT : ident);
- }
-
- public void openTypeScope() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- exprTypeStack.openScope();
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
- exprTypeStack.closeScope();
- }
- });
- }
-
- @SuppressWarnings("nls")
- public void consumeExpressionConstant(int kind) {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- //super.consumeExpressionConstant(kind);
- // TODO: this is incomplete, what about double constants, int constants with long suffix etc
- String constant = parser.getRightIToken().toString();
-
- IType type = null;
- switch (kind) {
- case IASTLiteralExpression.lk_char_constant:
- if (constant.startsWith("L")) {//unsigned short int
- C99BasicType charType = new C99BasicType(IBasicType.t_int);
- charType.setShort(true);
- charType.setUnsigned(true);
- type = charType;
- } else
- type = new C99BasicType(IBasicType.t_char);
- break;
-
- case IASTLiteralExpression.lk_float_constant:
- C99BasicType floatType;
- if (constant.contains("f") || constant.contains("F"))
- floatType = new C99BasicType(IBasicType.t_float);
- else
- floatType = new C99BasicType(IBasicType.t_double);
-
- if (constant.contains("l") || constant.contains("L"))
- floatType.setLong(true);
-
- type = floatType;
- break;
-
- case IASTLiteralExpression.lk_integer_constant:
- C99BasicType intType = new C99BasicType(IBasicType.t_int);
- if (constant.contains("l") || constant.contains("L"))
- intType.setLong(true);
-
- if (constant.contains("ll") || constant.contains("LL")) {
- intType.setLongLong(true);
- intType.setLong(false);
- }
- if (constant.contains("u") || constant.contains("U"))
- intType.setUnsigned(true);
-
- type = intType;
- break;
-
- case IASTLiteralExpression.lk_string_literal:
- type = new C99PointerType(new C99BasicType(IBasicType.t_char));
- break;
-
- default:
- assert false : "can't get here"; //$NON-NLS-1$
- }
-
- exprTypeStack.push(type);
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
- exprTypeStack.pop();
- }
- });
- }
-
- public IBinding consumeExpressionID() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- IToken token = parser.getRightIToken();
- String ident = token.toString();
- IBinding binding = symbolTable.lookup(IDENTIFIER, ident);
-
- IType type = C99ProblemBinding.badType();
- if (binding instanceof ITypeable)
- type = ((ITypeable) binding).getType();
-
- exprTypeStack.push(type);
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
- exprTypeStack.pop();
- }
- });
-
- return binding;
- }
-
- public IField consumeExpressionFieldReference(boolean isPointerDereference) {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- String memberName = parser.getRightIToken().toString();
- final IType identType = exprTypeStack.pop();
-
- C99Field field = computeFieldBinding(identType, memberName, isPointerDereference);
- IType resultType = field == null ? C99ProblemBinding.badType() : field.getType();
-
- exprTypeStack.push(resultType);
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
- exprTypeStack.pop();
- exprTypeStack.push(identType);
- }
- });
-
- return field;
- }
-
- /**
- * Computes the type of a field member access in an expression.
- * eg) x.a; computes the type of a
- */
- private C99Field computeFieldBinding(IType identType, String memberName, boolean isPointerDereference) {
- IType type = identType;
- if (isPointerDereference) {
- if (type instanceof IPointerType)
- type = ((ITypeContainer) type).getType(); // do the dereference
- else
- return null;
- }
-
- type = rawType(type);
- if (type instanceof ICompositeType) {
- ICompositeType struct = (ICompositeType) type;
- return (C99Field) struct.findField(memberName);
- }
-
- return null;
- }
-
- // TODO In C a function name can be used without parenthesis, the result is the address of
- // the function (which is an int I think). This means an identifier that happens to be
- // a function name should probably evaluate to an int, and then if it subsequently gets parsed
- // as a function call we can look up its function type from the symbol table.
- public void consumeExpressionFunctionCall(final boolean hasArgs) {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- final List<IType> scope = hasArgs ? exprTypeStack.closeScope() : null;
- final IType identifierType = exprTypeStack.pop();
-
- IType resultType = C99ProblemBinding.badType();
-
- if (identifierType instanceof IFunctionType) {
- // TODO: check the parameter types
- IFunctionType functionType = (IFunctionType) identifierType;
- resultType = functionType.getReturnType();
-
- }
-
- exprTypeStack.push(resultType);
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
- exprTypeStack.pop();
- exprTypeStack.push(identifierType);
- if (hasArgs)
- exprTypeStack.openScope(scope);
- }
- });
- }
-
- public void consumeExpressionArraySubscript() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- // Not doing type checking so it doesn't matter that this is integral type
- final IType subscriptType = exprTypeStack.pop();
- final IType exprType = exprTypeStack.pop();
-
- IType resultType = C99ProblemBinding.badType();
- if (exprType instanceof IArrayType) {
- IArrayType arrType = (IArrayType) exprType;
- resultType = arrType.getType(); // strip off the array type
-
- }
-
- exprTypeStack.push(resultType);
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
- exprTypeStack.pop();
- exprTypeStack.push(exprType);
- exprTypeStack.push(subscriptType);
- }
- });
- }
-
- public void consumeExpressionUnaryOperator() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- // TODO: this is lazy, need to check the actual rules for types and operators
- final IType expressionType = exprTypeStack.pop();
-
- IType resultType = new C99BasicType(IBasicType.t_int);
- exprTypeStack.push(resultType);
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
- exprTypeStack.pop();
- exprTypeStack.push(expressionType);
- }
- });
- }
-
- public void consumeExpressionUnarySizeofTypeName() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- final IType typeNameType = exprTypeStack.pop();
-
- IType resultType = new C99BasicType(IBasicType.t_int);
- exprTypeStack.push(resultType);
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
- exprTypeStack.pop();
- exprTypeStack.push(typeNameType);
- }
- });
- }
-
- public void consumeExpressionCast() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- final IType exprType = exprTypeStack.pop();
-
- // pop then push is no-op
- //IType castType = exprTypeStack.pop();
- //exprTypeStack.push(castType);
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
- exprTypeStack.push(exprType);
- }
- });
- }
-
- public void consumeExpressionTypeIdInitializer() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- // Throw away the types of the initializer list
- final List<IType> scope = exprTypeStack.closeScope();
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
- exprTypeStack.openScope(scope);
- }
- });
- }
-
- public void consumeExpressionInitializer() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- final IType type = exprTypeStack.pop();
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- exprTypeStack.push(type);
- }
- });
- }
-
- public void consumeExpressionBinaryOperator(int op) {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- final IType op2type = exprTypeStack.pop();
- final IType op1type = exprTypeStack.pop();
-
- switch (op) {
- case IASTBinaryExpression.op_assign:
- case IASTBinaryExpression.op_multiplyAssign:
- case IASTBinaryExpression.op_divideAssign:
- case IASTBinaryExpression.op_moduloAssign:
- case IASTBinaryExpression.op_plusAssign:
- case IASTBinaryExpression.op_minusAssign:
- case IASTBinaryExpression.op_shiftLeftAssign:
- case IASTBinaryExpression.op_shiftRightAssign:
- case IASTBinaryExpression.op_binaryAndAssign:
- case IASTBinaryExpression.op_binaryXorAssign:
- case IASTBinaryExpression.op_binaryOrAssign:
- exprTypeStack.push(op1type);
- break;
-
- default:
- IType resultType = new C99BasicType(IBasicType.t_int);
- exprTypeStack.push(resultType);
- }
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- exprTypeStack.pop();
- exprTypeStack.push(op1type);
- exprTypeStack.push(op2type);
- }
- });
- }
-
- public void consumeExpressionConditional() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- final IType expr2Type = exprTypeStack.pop();
- final IType expr1Type = exprTypeStack.pop();
- final IType condType = exprTypeStack.pop();
- exprTypeStack.push(expr1Type);
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
- exprTypeStack.pop();
- exprTypeStack.push(condType);
- exprTypeStack.push(expr1Type);
- exprTypeStack.push(expr2Type);
- }
- });
- }
-
- // // TODO: expression lists are changing
- // public void consumeExpressionList(boolean baseCase) {
- // // This is a hack, the type of an expression
- // // list will be the first expression in the list.
- // if(!baseCase) {
- // exprTypeStack.pop();
- // }
- // }
-
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/action/deprecated/C99TypedefTrackerParserAction.java b/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/action/deprecated/C99TypedefTrackerParserAction.java
deleted file mode 100644
index 74e784810a9..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/action/deprecated/C99TypedefTrackerParserAction.java
+++ /dev/null
@@ -1,368 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2015 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.internal.core.dom.lrparser.c99.action.deprecated;
-
-import java.util.LinkedList;
-
-import org.eclipse.cdt.core.dom.lrparser.action.ITokenStream;
-import org.eclipse.cdt.core.parser.util.DebugUtil;
-import org.eclipse.cdt.internal.core.dom.lrparser.symboltable.TypedefSymbolTable;
-
-import lpg.lpgjavaruntime.IToken;
-
-/**
- * A simple set of trial and undo actions that just keep track
- * of typedef names. This information is then fed back to the parser
- * in order to disambiguate certain parser grammar rules.
- *
- * The command design pattern is used to implement undo actions.
- *
- * @author Mike Kucera
- */
-public class C99TypedefTrackerParserAction {
-
- private static final boolean DEBUG = true;
-
- // provides limited access to the token stream
- private final ITokenStream parser;
-
- // The symbolTable currently in use
- private TypedefSymbolTable symbolTable = TypedefSymbolTable.EMPTY_TABLE;
-
- // A stack that keeps track of scopes in the symbol table, used to "close" scopes and to undo the opening of scopes
- private final LinkedList<TypedefSymbolTable> symbolTableScopeStack = new LinkedList<>();
-
- // keeps track of nested declarations
- private final LinkedList<DeclaratorFrame> declarationStack = new LinkedList<>();
-
- // "For every action there is an equal and opposite reaction." - Newton's third law
- private final LinkedList<IUndoAction> undoStack = new LinkedList<>();
-
- /**
- * A command object that provides undo functionality.
- */
- private interface IUndoAction {
- void undo();
- }
-
- /**
- * Undoes the last fired action.
- */
- public void undo() {
- undoStack.removeLast().undo();
- }
-
- public C99TypedefTrackerParserAction(ITokenStream parser) {
- this.parser = parser;
- }
-
- /**
- * Lexer feedback hack, used by the parser to identify typedefname tokens.
- */
- public boolean isTypedef(String ident) {
- return symbolTable.contains(ident);
- }
-
- /**
- * Methods used by tests, package local access.
- */
- TypedefSymbolTable getSymbolTable() {
- return symbolTable;
- }
-
- int undoStackSize() {
- return undoStack.size();
- }
-
- LinkedList<DeclaratorFrame> getDeclarationStack() {
- return declarationStack;
- }
-
- /**
- * Called from the grammar file in places where a scope is created.
- *
- * Scopes are created by compound statements, however special care
- * must also be taken with for loops because they may contain
- * declarations.
- *
- * TODO: scope object now need to be handled explicitly
- */
- public void openSymbolScope() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- symbolTableScopeStack.add(symbolTable);
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- symbolTable = symbolTableScopeStack.removeLast();
- }
- });
- }
-
- public void closeSymbolScope() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- final TypedefSymbolTable undoTable = symbolTable;
- symbolTable = symbolTableScopeStack.removeLast(); // close the scope
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- symbolTableScopeStack.add(symbolTable);
- symbolTable = undoTable;
- }
- });
- }
-
- /**
- * Called from the grammar before a declaration is about to be reduced.
- */
- public void openDeclarationScope() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- declarationStack.add(new DeclaratorFrame());
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- declarationStack.removeLast();
- }
- });
- }
-
- public void closeDeclarationScope() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- final DeclaratorFrame undoFrame = declarationStack.removeLast();
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- declarationStack.add(undoFrame);
- }
- });
- }
-
- public void consumeFunctionDefinition() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- final DeclaratorFrame frame = declarationStack.removeLast();
-
- final TypedefSymbolTable undoTable = symbolTable;
- symbolTable = symbolTableScopeStack.removeLast();
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- symbolTableScopeStack.add(symbolTable);
- symbolTable = undoTable;
-
- declarationStack.add(frame);
- }
- });
- }
-
- public void consumeDeclSpecToken() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- IToken token = parser.getRightIToken();
- final int kind = token.getKind();
-
- // creates a DeclSpec if there isn't one already
- DeclaratorFrame frame = declarationStack.getLast();
- final DeclSpec declSpec = frame.getDeclSpec();
- declSpec.add(kind);
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- declSpec.remove(kind);
- }
- });
- }
-
- public void consumeDirectDeclaratorIdentifier() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- final DeclaratorFrame frame = declarationStack.getLast();
- frame.setDeclaratorName(parser.getRightIToken());
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- frame.setDeclaratorName(null);
- }
- });
- }
-
- public void consumeDeclaratorComplete() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- final DeclaratorFrame frame = declarationStack.getLast();
-
- IToken token = frame.getDeclaratorName();
- DeclSpec declSpec = frame.getDeclSpec();
-
- String ident = (token == null) ? null : token.toString();
- //System.out.println("declarator complete: " + ident);
-
- final TypedefSymbolTable oldTable = symbolTable;
- if (declSpec.isTypedef()) {
- //System.out.println("adding typedef: " + ident);
- symbolTable = symbolTable.add(ident);
- }
-
- declarationStack.removeLast();
- declarationStack.add(new DeclaratorFrame(frame.getDeclSpec())); // reset the declarator
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- declarationStack.removeLast();
- declarationStack.add(frame);
- symbolTable = oldTable;
- }
- });
- }
-
- public void consumeDeclaratorCompleteParameter() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- final DeclaratorFrame frame = declarationStack.removeLast();
-
- //declarationStack.getLast().addNestedDeclaration(parameterBinding);
-
- // parameter declarations can only have one declarator, so don't reset
- //declarationStack.add(new DeclaratorFrame()); // reset
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
- //declarationStack.removeLast();
- //declarationStack.getLast().removeLastNestedDeclaration();
- declarationStack.add(frame);
- }
- });
- }
-
- /**
- * This is a special case for the rule:
- * parameter_declaration ::= declaration_specifiers
- *
- * In this case there is no declarator at all
- *
- * TODO: creating bindings that have no identifier seems really dumb,
- * why does it need to be done? Why not just have a null binding or
- * for that matter don't even have a name node
- *
- */
- public void consumeParameterDeclarationWithoutDeclarator() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- final DeclaratorFrame frame = declarationStack.removeLast();
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- declarationStack.add(frame);
- }
- });
- }
-
- public void consumeDeclaratorCompleteField() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- final DeclaratorFrame frame = declarationStack.removeLast();
-
- declarationStack.add(new DeclaratorFrame(frame.getDeclSpec())); // reset the declarator
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- declarationStack.removeLast();
-
- declarationStack.add(frame);
- }
- });
- }
-
- /**
- * An abstract declarator used as part of an expression, eg) a cast.
- * Only need the type.
- *
- * TODO: this isn't enough, I need a binding for the abstract declarator
- * what I really need is a consumeDeclaratorCompleteTypeId similar to above
- */
- public void consumeTypeId() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- final DeclaratorFrame frame = declarationStack.removeLast();
-
- undoStack.add(new IUndoAction() {
- @Override
- public void undo() {
- if (DEBUG)
- DebugUtil.printMethodTrace();
-
- declarationStack.add(frame);
- }
- });
- }
-
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/action/deprecated/DeclSpec.java b/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/action/deprecated/DeclSpec.java
deleted file mode 100644
index feb69f60b9b..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/action/deprecated/DeclSpec.java
+++ /dev/null
@@ -1,185 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.internal.core.dom.lrparser.c99.action.deprecated;
-
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK__Bool;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK__Complex;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK__Imaginary;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_auto;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_char;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_const;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_double;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_extern;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_float;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_inline;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_int;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_long;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_register;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_restrict;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_short;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_signed;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_static;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_unsigned;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_void;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_volatile;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.cdt.core.dom.ast.IBasicType;
-import org.eclipse.cdt.core.dom.ast.IType;
-import org.eclipse.cdt.core.dom.ast.c.ICBasicType;
-import org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym;
-import org.eclipse.cdt.internal.core.dom.lrparser.c99.bindings.C99BasicType;
-import org.eclipse.cdt.internal.core.dom.lrparser.c99.bindings.C99Function;
-import org.eclipse.cdt.internal.core.dom.lrparser.c99.bindings.C99QualifierType;
-import org.eclipse.cdt.internal.core.dom.lrparser.c99.bindings.C99Variable;
-
-/**
- * Keeps track of declaration specifiers during the parse.
- * Used to compute types and determine if a declarator is a typedef.
- *
- * @author Mike Kucera
- */
-class DeclSpec {
-
- // maps token kinds to the number of occurrences of that kind
- private Map<Integer, Integer> tokenKindMap = new HashMap<>();
-
- private IType type = null;
-
- public void add(int kind) {
- tokenKindMap.put(kind, count(kind) + 1);
- }
-
- public void remove(final int kind) {
- Integer count = tokenKindMap.get(kind);
- if (count == null)
- return;
-
- if (count <= 1)
- tokenKindMap.remove(kind);
- else
- tokenKindMap.put(kind, count - 1);
- }
-
- public boolean contains(int kind) {
- return tokenKindMap.containsKey(kind);
- }
-
- public boolean isTypedef() {
- return contains(C99Parsersym.TK_typedef);
- }
-
- /**
- * Need to keep track of how many times a particular
- * declaration specifier appears in order to support
- * long long.
- */
- public int count(int kind) {
- Integer count = tokenKindMap.get(kind);
- return count == null ? 0 : count;
- }
-
- /**
- * Set if the type should be a structure.
- */
- public void setType(IType type) {
- this.type = type;
- }
-
- public IType getType() {
- if (type != null)
- return type;
- if (tokenKindMap.isEmpty()) // there are no type tokens, so it must be implicit int
- return new C99BasicType(IBasicType.t_int);
-
- C99BasicType basicType = new C99BasicType();
-
- for (int kind : tokenKindMap.keySet()) {
- switch (kind) {
- case TK_void:
- basicType.setType(IBasicType.t_void);
- break;
- case TK_char:
- basicType.setType(IBasicType.t_char);
- break;
- case TK_int:
- basicType.setType(IBasicType.t_int);
- break;
- case TK_float:
- basicType.setType(IBasicType.t_float);
- break;
- case TK_double:
- basicType.setType(IBasicType.t_double);
- break;
- case TK_long:
- boolean isLongLong = count(TK_long) > 1;
- basicType.setLongLong(isLongLong);
- basicType.setLong(!isLongLong);
- break;
- case TK_signed:
- basicType.setSigned(true);
- break;
- case TK_unsigned:
- basicType.setUnsigned(true);
- break;
- case TK_short:
- basicType.setShort(true);
- break;
- case TK__Bool:
- basicType.setType(ICBasicType.t_Bool);
- break;
- case TK__Complex:
- basicType.setComplex(true);
- break;
- case TK__Imaginary:
- basicType.setImaginary(true);
- break;
- }
- }
-
- boolean isConst = contains(TK_const);
- boolean isRestrict = contains(TK_restrict);
- boolean isVolatile = contains(TK_volatile);
-
- if (isConst || isRestrict || isVolatile)
- return new C99QualifierType(basicType, isConst, isVolatile, isRestrict);
- return basicType;
- }
-
- public void modifyBinding(C99Variable var) {
- if (!var.isAuto())
- var.setAuto(contains(TK_auto));
- if (!var.isExtern())
- var.setExtern(contains(TK_extern));
- if (!var.isRegister())
- var.setRegister(contains(TK_register));
- if (!var.isStatic())
- var.setStatic(contains(TK_static));
- }
-
- public void modifyBinding(C99Function function) {
- if (!function.isAuto())
- function.setAuto(contains(TK_auto));
- if (!function.isExtern())
- function.setExtern(contains(TK_extern));
- if (!function.isInline())
- function.setInline(contains(TK_inline));
- if (!function.isRegister())
- function.setRegister(contains(TK_register));
- if (!function.isStatic())
- function.setStatic(contains(TK_static));
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/action/deprecated/DeclaratorFrame.java b/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/action/deprecated/DeclaratorFrame.java
deleted file mode 100644
index d4c9c6cf304..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/action/deprecated/DeclaratorFrame.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.internal.core.dom.lrparser.c99.action.deprecated;
-
-import java.util.LinkedList;
-import java.util.List;
-
-import org.eclipse.cdt.core.dom.ast.IBinding;
-import org.eclipse.cdt.core.dom.ast.IType;
-import org.eclipse.cdt.internal.core.dom.lrparser.c99.bindings.C99PointerType;
-import org.eclipse.cdt.internal.core.dom.parser.ITypeContainer;
-
-import lpg.lpgjavaruntime.IToken;
-
-/**
- * Represents a frame on the declaration stack used by the resolver actions.
- *
- * TODO: document this class better
- *
- * @author Mike Kucera
- */
-@SuppressWarnings("restriction")
-public class DeclaratorFrame {
- private DeclSpec declSpec;
- //IBinding declarator;
- private IToken declaratorName;
- private boolean isDeclaratorBracketed;
- private boolean isFunctionDeclarator = false;
-
- // temporary storage for pointer modifiers
- private LinkedList<LinkedList<C99PointerType>> pointerModifiers = new LinkedList<>();
-
- // stores pointer and array modifiers that are applied to the declarator
- private LinkedList<ITypeContainer> typeModifiers = new LinkedList<>();
-
- private LinkedList<IBinding> nestedDeclarations = new LinkedList<>();
-
- public DeclaratorFrame() {
- }
-
- public DeclaratorFrame(DeclSpec declSpec) {
- this.declSpec = declSpec;
- }
-
- public DeclSpec getDeclSpec() {
- if (declSpec == null)
- declSpec = new DeclSpec();
-
- return declSpec;
- }
-
- public IType getDeclaratorType() {
- // the declSpec may be null, so use getDeclSpec()
- IType baseType = getDeclSpec().getType();
-
- if (typeModifiers.isEmpty())
- return baseType;
-
- IType type = typeModifiers.get(0);
-
- // link the types together
- for (int i = 1; i < typeModifiers.size(); i++) {
- ITypeContainer t1 = typeModifiers.get(i - 1);
- ITypeContainer t2 = typeModifiers.get(i);
- t1.setType(t2);
- }
-
- ITypeContainer last = typeModifiers.get(typeModifiers.size() - 1);
- last.setType(baseType);
- return type;
- }
-
- public IToken getDeclaratorName() {
- return declaratorName;
- }
-
- public void setDeclaratorName(IToken declaratorName) {
- this.declaratorName = declaratorName;
- }
-
- public boolean isDeclaratorBracketed() {
- return isDeclaratorBracketed;
- }
-
- public void setDeclaratorBracketed(boolean isDeclaratorBracketed) {
- this.isDeclaratorBracketed = isDeclaratorBracketed;
- }
-
- public boolean isFunctionDeclarator() {
- return isFunctionDeclarator;
- }
-
- public void setFunctionDeclarator(boolean isFunctionDeclarator) {
- this.isFunctionDeclarator = isFunctionDeclarator;
- }
-
- public List<IBinding> getNestedDeclarations() {
- return nestedDeclarations;
- }
-
- public void addNestedDeclaration(IBinding binding) {
- nestedDeclarations.add(binding);
- }
-
- public void removeLastNestedDeclaration() {
- nestedDeclarations.removeLast();
- }
-
- public void addTypeModifier(ITypeContainer x) {
- typeModifiers.add(x);
- }
-
- public void removeLastTypeModifier() {
- typeModifiers.removeLast();
- }
-
- public void addPointerModifier(C99PointerType x) {
- pointerModifiers.getLast().add(x);
- }
-
- public void removeLastPointerModifier() {
- pointerModifiers.getLast().removeLast();
- }
-
- public void openPointerModifierScope() {
- pointerModifiers.add(new LinkedList<C99PointerType>());
- }
-
- public void openPointerModifierScope(LinkedList<C99PointerType> scope) {
- pointerModifiers.add(scope);
- }
-
- public LinkedList<C99PointerType> closePointerModifierScope() {
- return pointerModifiers.removeLast();
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99ArrayType.java b/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99ArrayType.java
deleted file mode 100644
index c03186fd9e5..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99ArrayType.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2014 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.internal.core.dom.lrparser.c99.bindings;
-
-import org.eclipse.cdt.core.dom.ast.DOMException;
-import org.eclipse.cdt.core.dom.ast.IASTExpression;
-import org.eclipse.cdt.core.dom.ast.IType;
-import org.eclipse.cdt.core.dom.ast.ITypedef;
-import org.eclipse.cdt.core.dom.ast.IValue;
-import org.eclipse.cdt.core.dom.ast.c.ICArrayType;
-import org.eclipse.cdt.internal.core.dom.parser.ITypeContainer;
-
-@SuppressWarnings("restriction")
-public class C99ArrayType implements ICArrayType, ITypeContainer {
- private boolean isConst;
- private boolean isRestrict;
- private boolean isStatic;
- private boolean isVolatile;
- private boolean isVariableLength;
-
- private IType type;
-
- public C99ArrayType() {
- }
-
- public C99ArrayType(IType type) {
- this.type = type;
- }
-
- @Override
- public boolean isConst() {
- return isConst;
- }
-
- public void setConst(boolean isConst) {
- this.isConst = isConst;
- }
-
- @Override
- public boolean isRestrict() {
- return isRestrict;
- }
-
- public void setRestrict(boolean isRestrict) {
- this.isRestrict = isRestrict;
- }
-
- @Override
- public boolean isStatic() {
- return isStatic;
- }
-
- public void setStatic(boolean isStatic) {
- this.isStatic = isStatic;
- }
-
- @Override
- public boolean isVolatile() {
- return isVolatile;
- }
-
- public void setVolatile(boolean isVolatile) {
- this.isVolatile = isVolatile;
- }
-
- @Override
- public boolean isVariableLength() {
- return isVariableLength;
- }
-
- public void setVariableLength(boolean isVariableLength) {
- this.isVariableLength = isVariableLength;
- }
-
- @Deprecated
- @Override
- public IASTExpression getArraySizeExpression() throws DOMException {
- return null;
- }
-
- @Override
- public IType getType() {
- return type;
- }
-
- @Override
- public void setType(IType type) {
- this.type = type;
- }
-
- @Override
- public boolean isSameType(IType t) {
- if (t == this)
- return true;
- if (t instanceof ITypedef)
- return t.isSameType(this);
- if (t instanceof ICArrayType) {
- ICArrayType at = (ICArrayType) t;
- if (at.isConst() == isConst && at.isRestrict() == isRestrict && at.isStatic() == isStatic
- && at.isVolatile() == isVolatile && at.isVariableLength() == isVariableLength) {
- return at.isSameType(type);
- }
- }
- return false;
- }
-
- @Override
- public IValue getSize() {
- return null;
- }
-
- @Override
- public boolean hasSize() {
- return false;
- }
-
- @Override
- public C99ArrayType clone() {
- C99ArrayType clone = null;
- try {
- clone = (C99ArrayType) super.clone();
- clone.type = (IType) type.clone();
- } catch (CloneNotSupportedException e) {
- assert false; // not going to happen
- }
- return clone;
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99BasicType.java b/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99BasicType.java
deleted file mode 100644
index e33c7e7c955..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99BasicType.java
+++ /dev/null
@@ -1,153 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2015 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.internal.core.dom.lrparser.c99.bindings;
-
-import org.eclipse.cdt.core.dom.ast.IASTExpression;
-import org.eclipse.cdt.core.dom.ast.IType;
-import org.eclipse.cdt.core.dom.ast.c.ICBasicType;
-
-public class C99BasicType implements ICBasicType {
-
- /* Type flags given in IBasicType */
- private int type;
-
- private boolean isLong;
- private boolean isShort;
- private boolean isSigned;
- private boolean isUnsigned;
- private boolean isComplex;
- private boolean isImaginary;
- private boolean isLongLong;
-
- public C99BasicType() {
- }
-
- public C99BasicType(int type) {
- this.type = type;
- }
-
- @Override
- public int getType() {
- return type;
- }
-
- public void setType(int type) {
- this.type = type;
- }
-
- @Override
- public boolean isLong() {
- return isLong;
- }
-
- public void setLong(boolean isLong) {
- this.isLong = isLong;
- }
-
- @Override
- public boolean isShort() {
- return isShort;
- }
-
- public void setShort(boolean isShort) {
- this.isShort = isShort;
- }
-
- @Override
- public boolean isSigned() {
- return isSigned;
- }
-
- public void setSigned(boolean isSigned) {
- this.isSigned = isSigned;
- }
-
- @Override
- public boolean isUnsigned() {
- return isUnsigned;
- }
-
- public void setUnsigned(boolean isUnsigned) {
- this.isUnsigned = isUnsigned;
- }
-
- @Override
- public boolean isComplex() {
- return isComplex;
- }
-
- public void setComplex(boolean isComplex) {
- this.isComplex = isComplex;
- }
-
- @Override
- public boolean isImaginary() {
- return isImaginary;
- }
-
- public void setImaginary(boolean isImaginary) {
- this.isImaginary = isImaginary;
- }
-
- @Override
- public boolean isLongLong() {
- return isLongLong;
- }
-
- public void setLongLong(boolean isLongLong) {
- this.isLongLong = isLongLong;
- }
-
- @Override
- @Deprecated
- public IASTExpression getValue() {
- return null;
- }
-
- @Override
- public boolean isSameType(IType t) {
- if (t == this)
- return true;
- if (!(t instanceof C99BasicType))
- return false;
-
- C99BasicType bt = (C99BasicType) t;
- return bt.type == this.type && bt.isLong == this.isLong && bt.isShort == this.isShort
- && bt.isSigned == this.isSigned && bt.isUnsigned == this.isUnsigned && bt.isComplex == this.isComplex
- && bt.isImaginary == this.isImaginary && bt.isLongLong == this.isLongLong;
- }
-
- @Override
- public C99BasicType clone() {
- try {
- return (C99BasicType) super.clone();
- } catch (CloneNotSupportedException e) {
- assert false;
- return null;
- }
- }
-
- @Override
- public Kind getKind() {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public int getModifiers() {
- // TODO Auto-generated method stub
- return 0;
- }
-
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99CompositeTypeScope.java b/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99CompositeTypeScope.java
deleted file mode 100644
index 6cbc4e7bdca..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99CompositeTypeScope.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2015 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.internal.core.dom.lrparser.c99.bindings;
-
-import org.eclipse.cdt.core.dom.ast.EScopeKind;
-import org.eclipse.cdt.core.dom.ast.IBinding;
-import org.eclipse.cdt.core.dom.ast.ICompositeType;
-import org.eclipse.cdt.core.dom.ast.c.ICCompositeTypeScope;
-
-public class C99CompositeTypeScope extends C99Scope implements ICCompositeTypeScope {
-
- private ICompositeType struct;
-
- public C99CompositeTypeScope(ICompositeType struct) {
- super(EScopeKind.eClassType);
- this.struct = struct;
- }
-
- @Override
- public ICompositeType getCompositeType() {
- return struct;
- }
-
- @Override
- public IBinding getBinding(@SuppressWarnings("unused") char[] name) {
- throw new UnsupportedOperationException();
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Enumeration.java b/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Enumeration.java
deleted file mode 100644
index f8964535df2..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Enumeration.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2015 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.internal.core.dom.lrparser.c99.bindings;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.cdt.core.dom.ILinkage;
-import org.eclipse.cdt.core.dom.ast.IASTNode;
-import org.eclipse.cdt.core.dom.ast.IBinding;
-import org.eclipse.cdt.core.dom.ast.IEnumeration;
-import org.eclipse.cdt.core.dom.ast.IEnumerator;
-import org.eclipse.cdt.core.dom.ast.IScope;
-import org.eclipse.cdt.core.dom.ast.IType;
-import org.eclipse.cdt.core.dom.ast.ITypedef;
-import org.eclipse.cdt.internal.core.dom.Linkage;
-import org.eclipse.cdt.internal.core.dom.parser.c.CVisitor;
-import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.SemanticUtil;
-import org.eclipse.core.runtime.PlatformObject;
-
-@SuppressWarnings("restriction")
-public class C99Enumeration extends PlatformObject implements IC99Binding, IEnumeration, ITypeable {
-
- private List<IEnumerator> enumerators = new ArrayList<>();
- private String name;
-
- private IScope scope;
-
- public C99Enumeration() {
- }
-
- public C99Enumeration(String name) {
- this.name = name;
- }
-
- public void addEnumerator(IEnumerator e) {
- enumerators.add(e);
- }
-
- @Override
- public IEnumerator[] getEnumerators() {
- return enumerators.toArray(new IEnumerator[enumerators.size()]);
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- @Override
- public String getName() {
- return name;
- }
-
- @Override
- public char[] getNameCharArray() {
- return name.toCharArray();
- }
-
- @Override
- public IType getType() {
- return this;
- }
-
- @Override
- public boolean isSameType(IType type) {
- if (type == this)
- return true;
- if (type instanceof ITypedef)
- return type.isSameType(this);
-
- return false;
- }
-
- @Override
- public C99Enumeration clone() {
- try {
- C99Enumeration clone = (C99Enumeration) super.clone();
- clone.enumerators = new ArrayList<>();
- for (IEnumerator e : enumerators) {
- // TODO this is wrong,
- // IEnumerator is not Cloneable so we are not returning a deep copy here
- clone.addEnumerator(e);
- }
- return clone;
- } catch (CloneNotSupportedException e1) {
- assert false;
- return null;
- }
-
- }
-
- @Override
- public ILinkage getLinkage() {
- return Linkage.C_LINKAGE;
- }
-
- @Override
- public IScope getScope() {
- return scope;
- }
-
- @Override
- public void setScope(IScope scope) {
- this.scope = scope;
- }
-
- @Override
- public IBinding getOwner() {
- if (scope != null) {
- return CVisitor.findEnclosingFunction((IASTNode) scope.getScopeName()); // local or global
- }
- return null;
- }
-
- @Override
- public long getMinValue() {
- return SemanticUtil.computeMinValue(this);
- }
-
- @Override
- public long getMaxValue() {
- return SemanticUtil.computeMaxValue(this);
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Enumerator.java b/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Enumerator.java
deleted file mode 100644
index 4d844050605..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Enumerator.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2015 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.internal.core.dom.lrparser.c99.bindings;
-
-import org.eclipse.cdt.core.dom.ILinkage;
-import org.eclipse.cdt.core.dom.ast.IBinding;
-import org.eclipse.cdt.core.dom.ast.IEnumerator;
-import org.eclipse.cdt.core.dom.ast.IScope;
-import org.eclipse.cdt.core.dom.ast.IType;
-import org.eclipse.cdt.core.dom.ast.IValue;
-import org.eclipse.cdt.internal.core.dom.Linkage;
-import org.eclipse.cdt.internal.core.dom.parser.IntegralValue;
-import org.eclipse.core.runtime.PlatformObject;
-
-@SuppressWarnings("restriction")
-public class C99Enumerator extends PlatformObject implements IC99Binding, IEnumerator, ITypeable {
-
- private String name;
- private IType type;
- private IScope scope;
-
- public C99Enumerator() {
- }
-
- public C99Enumerator(String name) {
- this.name = name;
- }
-
- @Override
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- @Override
- public IType getType() {
- return type;
- }
-
- public void setType(IType type) {
- this.type = type;
- }
-
- @Override
- public ILinkage getLinkage() {
- return Linkage.C_LINKAGE;
- }
-
- @Override
- public char[] getNameCharArray() {
- return name.toCharArray();
- }
-
- @Override
- public IScope getScope() {
- return scope;
- }
-
- @Override
- public void setScope(IScope scope) {
- this.scope = scope;
- }
-
- @Override
- public IBinding getOwner() {
- if (type instanceof IBinding)
- return (IBinding) type;
- return null;
- }
-
- @Override
- public IValue getValue() {
- return IntegralValue.UNKNOWN;
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Field.java b/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Field.java
deleted file mode 100644
index 9116b222e57..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Field.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2015 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.internal.core.dom.lrparser.c99.bindings;
-
-import org.eclipse.cdt.core.dom.ast.ICompositeType;
-import org.eclipse.cdt.core.dom.ast.IField;
-import org.eclipse.cdt.core.dom.ast.IScope;
-
-public class C99Field extends C99Variable implements IField {
-
- private ICompositeType compositeTypeOwner;
-
- public C99Field() {
- }
-
- public C99Field(String name) {
- super(name);
- }
-
- @Override
- public ICompositeType getCompositeTypeOwner() {
- return compositeTypeOwner;
- }
-
- public void setCompositeTypeOwner(ICompositeType compositeTypeOwner) {
- this.compositeTypeOwner = compositeTypeOwner;
- }
-
- @Override
- public IScope getScope() {
- return compositeTypeOwner.getCompositeScope();
- }
-
-} \ No newline at end of file
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Function.java b/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Function.java
deleted file mode 100644
index b6c73081316..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Function.java
+++ /dev/null
@@ -1,184 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2015 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- * Sergey Prigogin (Google)
- *******************************************************************************/
-package org.eclipse.cdt.internal.core.dom.lrparser.c99.bindings;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.cdt.core.dom.ILinkage;
-import org.eclipse.cdt.core.dom.ast.IBinding;
-import org.eclipse.cdt.core.dom.ast.IFunction;
-import org.eclipse.cdt.core.dom.ast.IFunctionType;
-import org.eclipse.cdt.core.dom.ast.IParameter;
-import org.eclipse.cdt.core.dom.ast.IScope;
-import org.eclipse.cdt.internal.core.dom.Linkage;
-import org.eclipse.core.runtime.PlatformObject;
-
-@SuppressWarnings("restriction")
-public class C99Function extends PlatformObject implements IC99Binding, IFunction, ITypeable {
- private String name;
- private IFunctionType type;
- private List<IParameter> parameters = new ArrayList<>();
-
- private boolean isAuto;
- private boolean isExtern;
- private boolean isInline;
- private boolean isRegister;
- private boolean isStatic;
- private boolean isVarArgs;
- private boolean isNoReturn;
-
- // the scope that the function is in (must be the global scope, no?)
- private IScope scope;
-
- // the scope that represents the body of the function
- private IScope bodyScope;
-
- public C99Function() {
- }
-
- public C99Function(String name) {
- this.name = name;
- }
-
- public C99Function(String name, IFunctionType type) {
- this(name);
- this.type = type;
- }
-
- @Override
- public IParameter[] getParameters() {
- return parameters.toArray(new IParameter[parameters.size()]);
- }
-
- public void addParameter(IParameter parameter) {
- parameters.add(parameter);
- }
-
- @Override
- public IFunctionType getType() {
- return type;
- }
-
- public void setType(IFunctionType type) {
- this.type = type;
- }
-
- @Override
- public boolean isAuto() {
- return isAuto;
- }
-
- public void setAuto(boolean isAuto) {
- this.isAuto = isAuto;
- }
-
- @Override
- public boolean isExtern() {
- return isExtern;
- }
-
- public void setExtern(boolean isExtern) {
- this.isExtern = isExtern;
- }
-
- @Override
- public boolean isInline() {
- return isInline;
- }
-
- public void setInline(boolean isInline) {
- this.isInline = isInline;
- }
-
- @Override
- public boolean isRegister() {
- return isRegister;
- }
-
- public void setRegister(boolean isRegister) {
- this.isRegister = isRegister;
- }
-
- @Override
- public boolean isStatic() {
- return isStatic;
- }
-
- public void setStatic(boolean isStatic) {
- this.isStatic = isStatic;
- }
-
- @Override
- public boolean takesVarArgs() {
- return isVarArgs;
- }
-
- public void setTakesVarArgs(boolean isVarArgs) {
- this.isVarArgs = isVarArgs;
- }
-
- @Override
- public boolean isNoReturn() {
- return isNoReturn;
- }
-
- public void setNoReturn(boolean isNoReturn) {
- this.isNoReturn = isNoReturn;
- }
-
- @Override
- public ILinkage getLinkage() {
- return Linkage.C_LINKAGE;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- @Override
- public String getName() {
- return name;
- }
-
- @Override
- public char[] getNameCharArray() {
- return name.toCharArray();
- }
-
- @Override
- public IScope getScope() {
- return scope;
- }
-
- @Override
- public IScope getFunctionScope() {
- return bodyScope;
- }
-
- public void setFunctionScope(IScope bodyScope) {
- this.bodyScope = bodyScope;
- }
-
- @Override
- public void setScope(IScope scope) {
- this.scope = scope;
- }
-
- @Override
- public IBinding getOwner() {
- return null;
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99FunctionScope.java b/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99FunctionScope.java
deleted file mode 100644
index f7f4131ef8f..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99FunctionScope.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2015 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.internal.core.dom.lrparser.c99.bindings;
-
-import org.eclipse.cdt.core.dom.ast.DOMException;
-import org.eclipse.cdt.core.dom.ast.EScopeKind;
-import org.eclipse.cdt.core.dom.ast.IBinding;
-import org.eclipse.cdt.core.dom.ast.IScope;
-import org.eclipse.cdt.core.dom.ast.c.ICFunctionScope;
-
-public class C99FunctionScope extends C99Scope implements ICFunctionScope {
-
- public C99FunctionScope() {
- super(EScopeKind.eLocal);
- }
-
- /**
- * Scope that represents the compound statement of the body of this scope.
- * Does not include the parameters which are part of this function scope.
- */
- private IScope bodyScope;
-
- @Override
- public IBinding getBinding(@SuppressWarnings("unused") char[] name) throws DOMException {
- // TODO Auto-generated method stub
- return null;
- }
-
- public void setBodyScope(IScope bodyScope) {
- this.bodyScope = bodyScope;
- }
-
- @Override
- public IScope getBodyScope() throws DOMException {
- return bodyScope;
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99FunctionType.java b/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99FunctionType.java
deleted file mode 100644
index 085352c45f2..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99FunctionType.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2015 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.internal.core.dom.lrparser.c99.bindings;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.cdt.core.dom.ast.IFunctionType;
-import org.eclipse.cdt.core.dom.ast.IType;
-
-public class C99FunctionType implements IFunctionType {
-
- private IType returnType;
- private List<IType> parameterTypes = new ArrayList<>();
-
- @Override
- public IType[] getParameterTypes() {
- return parameterTypes.toArray(new IType[parameterTypes.size()]);
- }
-
- public void addParameterType(IType parameterType) {
- parameterTypes.add(parameterType);
- }
-
- @Override
- public IType getReturnType() {
- return returnType;
- }
-
- public void setReturnType(IType returnType) {
- this.returnType = returnType;
- }
-
- @Override
- public boolean isSameType(@SuppressWarnings("unused") IType type) {
- // TODO Auto-generated method stub
- return false;
- }
-
- @Override
- public C99FunctionType clone() {
- try {
- C99FunctionType clone = (C99FunctionType) super.clone();
- clone.setReturnType((IType) returnType.clone());
- clone.parameterTypes = new ArrayList<>();
- for (IType parameterType : parameterTypes) {
- clone.addParameterType((IType) parameterType.clone());
- }
- return clone;
- } catch (CloneNotSupportedException e) {
- assert false;
- return null;
- }
-
- }
-
- @Override
- public boolean takesVarArgs() {
- // Not implemented
- return false;
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Label.java b/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Label.java
deleted file mode 100644
index 4c86975ce2d..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Label.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2015 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.internal.core.dom.lrparser.c99.bindings;
-
-import org.eclipse.cdt.core.dom.ILinkage;
-import org.eclipse.cdt.core.dom.ast.IASTLabelStatement;
-import org.eclipse.cdt.core.dom.ast.IASTNode;
-import org.eclipse.cdt.core.dom.ast.IBinding;
-import org.eclipse.cdt.core.dom.ast.ILabel;
-import org.eclipse.cdt.core.dom.ast.IScope;
-import org.eclipse.cdt.internal.core.dom.Linkage;
-import org.eclipse.cdt.internal.core.dom.parser.c.CVisitor;
-import org.eclipse.core.runtime.PlatformObject;
-
-@SuppressWarnings("restriction")
-public class C99Label extends PlatformObject implements IC99Binding, ILabel {
-
- private String name;
- private IScope scope;
-
- public C99Label() {
- }
-
- public C99Label(String name) {
- this.name = name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- @Override
- public String getName() {
- return name;
- }
-
- @Override
- public char[] getNameCharArray() {
- return name.toCharArray();
- }
-
- @Override
- public IASTLabelStatement getLabelStatement() {
- return null;
- }
-
- @Override
- public ILinkage getLinkage() {
- return Linkage.C_LINKAGE;
- }
-
- @Override
- public IScope getScope() {
- return scope;
- }
-
- @Override
- public void setScope(IScope scope) {
- this.scope = scope;
- }
-
- @Override
- public IBinding getOwner() {
- if (scope != null) {
- return CVisitor.findEnclosingFunction((IASTNode) scope.getScopeName()); // local or global
- }
- return null;
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Parameter.java b/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Parameter.java
deleted file mode 100644
index 8dc28c3ea28..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Parameter.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.internal.core.dom.lrparser.c99.bindings;
-
-import org.eclipse.cdt.core.dom.ast.IParameter;
-
-public class C99Parameter extends C99Variable implements IParameter {
-
- public C99Parameter() {
- }
-
- public C99Parameter(String name) {
- super(name);
- }
-
- public static C99Parameter valueOf(C99Variable var) {
- C99Parameter param = new C99Parameter(var.getName());
- param.setType(var.getType());
- param.setAuto(var.isAuto());
- param.setExtern(var.isExtern());
- param.setRegister(var.isRegister());
- param.setStatic(var.isStatic());
- return param;
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99PointerType.java b/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99PointerType.java
deleted file mode 100644
index 20c8aebcb89..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99PointerType.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2015 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.internal.core.dom.lrparser.c99.bindings;
-
-import org.eclipse.cdt.core.dom.ast.IType;
-import org.eclipse.cdt.core.dom.ast.c.ICPointerType;
-import org.eclipse.cdt.internal.core.dom.parser.ITypeContainer;
-
-@SuppressWarnings("restriction")
-public class C99PointerType implements ITypeContainer, ICPointerType {
-
- private IType type;
- private boolean isConst;
- private boolean isRestrict;
- private boolean isVolatile;
-
- public C99PointerType() {
- }
-
- public C99PointerType(IType type) {
- this.type = type;
- }
-
- @Override
- public IType getType() {
- return type;
- }
-
- @Override
- public void setType(IType type) {
- this.type = type;
- }
-
- @Override
- public boolean isConst() {
- return isConst;
- }
-
- public void setConst(boolean isConst) {
- this.isConst = isConst;
- }
-
- @Override
- public boolean isRestrict() {
- return isRestrict;
- }
-
- public void setRestrict(boolean isRestrict) {
- this.isRestrict = isRestrict;
- }
-
- @Override
- public boolean isVolatile() {
- return isVolatile;
- }
-
- public void setVolatile(boolean isVolatile) {
- this.isVolatile = isVolatile;
- }
-
- @Override
- public boolean isSameType(IType t) {
- if (t == this)
- return true;
-
- if (t instanceof ICPointerType) {
- ICPointerType pointerType = (ICPointerType) t;
- if (pointerType.isConst() == isConst && pointerType.isRestrict() == isRestrict
- && pointerType.isVolatile() == isVolatile) {
- return type.isSameType(pointerType.getType());
- }
-
- }
- return false;
- }
-
- @Override
- public C99PointerType clone() {
- try {
- C99PointerType clone = (C99PointerType) super.clone();
- clone.type = (IType) type.clone();
- return clone;
- } catch (CloneNotSupportedException e) {
- assert false;
- return null;
- }
-
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99ProblemBinding.java b/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99ProblemBinding.java
deleted file mode 100644
index d024ebb2697..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99ProblemBinding.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.internal.core.dom.lrparser.c99.bindings;
-
-import org.eclipse.cdt.core.dom.ast.IProblemBinding;
-import org.eclipse.cdt.internal.core.dom.parser.ProblemBinding;
-
-@SuppressWarnings("restriction")
-public class C99ProblemBinding extends ProblemBinding {
-
- public C99ProblemBinding(int messageId) {
- super(null, messageId);
- }
-
- public C99ProblemBinding(int messageId, String arg) {
- super(null, messageId, arg.toCharArray());
- }
-
- public static C99ProblemBinding badType() {
- return new C99ProblemBinding(IProblemBinding.SEMANTIC_INVALID_TYPE);
- }
-
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99QualifierType.java b/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99QualifierType.java
deleted file mode 100644
index ff5d67ef4dc..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99QualifierType.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2015 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.internal.core.dom.lrparser.c99.bindings;
-
-import org.eclipse.cdt.core.dom.ast.IType;
-import org.eclipse.cdt.core.dom.ast.c.ICQualifierType;
-import org.eclipse.cdt.internal.core.dom.parser.ITypeContainer;
-
-@SuppressWarnings("restriction")
-public class C99QualifierType implements ICQualifierType, ITypeContainer {
-
- private boolean isRestrict;
- private boolean isConst;
- private boolean isVolatile;
-
- private IType type;
-
- public C99QualifierType() {
- }
-
- public C99QualifierType(IType type) {
- this.type = type;
- }
-
- public C99QualifierType(IType type, boolean isConst, boolean isVolatile, boolean isRestrict) {
- this.isConst = isConst;
- this.isRestrict = isRestrict;
- this.isVolatile = isVolatile;
- this.type = type;
- }
-
- @Override
- public boolean isRestrict() {
- return isRestrict;
- }
-
- public void setRestrict(boolean isRestrict) {
- this.isRestrict = isRestrict;
- }
-
- @Override
- public boolean isConst() {
- return isConst;
- }
-
- public void setConst(boolean isConst) {
- this.isConst = isConst;
- }
-
- @Override
- public boolean isVolatile() {
- return isVolatile;
- }
-
- public void setVolatile(boolean isVolatile) {
- this.isVolatile = isVolatile;
- }
-
- @Override
- public IType getType() {
- return type;
- }
-
- @Override
- public void setType(IType type) {
- this.type = type;
- }
-
- @Override
- public boolean isSameType(IType t) {
- if (t == this)
- return true;
-
- if (t instanceof ICQualifierType) {
-
- ICQualifierType pointerType = (ICQualifierType) t;
- if (pointerType.isConst() == isConst && pointerType.isRestrict() == isRestrict
- && pointerType.isVolatile() == isVolatile) {
- return type.isSameType(pointerType.getType());
- }
-
- }
- return false;
- }
-
- @Override
- public C99QualifierType clone() {
- try {
- C99QualifierType clone = (C99QualifierType) super.clone();
- clone.type = (IType) type.clone();
- return clone;
- } catch (CloneNotSupportedException e) {
- assert false;
- return null;
- }
- }
-
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Scope.java b/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Scope.java
deleted file mode 100644
index 72beb896af3..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Scope.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2015 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.internal.core.dom.lrparser.c99.bindings;
-
-import org.eclipse.cdt.core.dom.IName;
-import org.eclipse.cdt.core.dom.ast.EScopeKind;
-import org.eclipse.cdt.core.dom.ast.IASTName;
-import org.eclipse.cdt.core.dom.ast.IASTNode;
-import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
-import org.eclipse.cdt.core.dom.ast.IBinding;
-import org.eclipse.cdt.core.dom.ast.IScope;
-import org.eclipse.cdt.core.index.IIndexFileSet;
-import org.eclipse.cdt.internal.core.dom.parser.IASTInternalScope;
-
-/**
- * @author Mike Kucera
- *
- */
-@SuppressWarnings({ "restriction", "unused" })
-public class C99Scope implements IC99Scope, IASTInternalScope {
- private IScope parent;
- private IASTNode physicalNode;
- private IName scopeName;
- private final EScopeKind kind;
-
- public C99Scope(EScopeKind eKind) {
- kind = eKind;
- }
-
- @Override
- public IScope getParent() {
- return parent;
- }
-
- @Override
- public void setParent(IScope parent) {
- this.parent = parent;
- }
-
- @Override
- public IASTNode getPhysicalNode() {
- return physicalNode;
- }
-
- @Override
- public void setPhysicalNode(IASTNode physicalNode) {
- this.physicalNode = physicalNode;
- }
-
- @Override
- public final EScopeKind getKind() {
- return kind;
- }
-
- @Override
- public IName getScopeName() {
- return scopeName;
- }
-
- @Override
- public void setScopeName(IName scopeName) {
- this.scopeName = scopeName;
- }
-
- @Override
- public IBinding[] find(String name, IASTTranslationUnit tu) {
- throw new UnsupportedOperationException();
- }
-
- @Override
- @Deprecated
- public IBinding[] find(String name) {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public IBinding getBinding(IASTName name, boolean resolve) {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public IBinding[] getBindings(IASTName name, boolean resolve, boolean prefixLookup) {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public void addBinding(IBinding binding) {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public void addName(IASTName name, boolean adlOnly) {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public void populateCache() {
- }
-
- @Override
- public void removeNestedFromCache(IASTNode container) {
- }
-
- @Override
- public IBinding getBinding(IASTName name, boolean resolve, IIndexFileSet acceptLocalBindings) {
- return null;
- }
-
- /**
- * @deprecated Use {@link #getBindings(ScopeLookupData)} instead
- */
- @Override
- @Deprecated
- public IBinding[] getBindings(IASTName name, boolean resolve, boolean prefixLookup,
- IIndexFileSet acceptLocalBindings) {
- return getBindings(new ScopeLookupData(name, resolve, prefixLookup));
- }
-
- @Override
- public IBinding[] getBindings(ScopeLookupData lookup) {
- return IBinding.EMPTY_BINDING_ARRAY;
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Structure.java b/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Structure.java
deleted file mode 100644
index 9f74f221916..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Structure.java
+++ /dev/null
@@ -1,172 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2015 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.internal.core.dom.lrparser.c99.bindings;
-
-import java.util.LinkedHashMap;
-import java.util.Map;
-
-import org.eclipse.cdt.core.dom.ILinkage;
-import org.eclipse.cdt.core.dom.ast.IASTNode;
-import org.eclipse.cdt.core.dom.ast.IBinding;
-import org.eclipse.cdt.core.dom.ast.ICompositeType;
-import org.eclipse.cdt.core.dom.ast.IField;
-import org.eclipse.cdt.core.dom.ast.IScope;
-import org.eclipse.cdt.core.dom.ast.IType;
-import org.eclipse.cdt.core.dom.ast.ITypedef;
-import org.eclipse.cdt.internal.core.dom.Linkage;
-import org.eclipse.cdt.internal.core.dom.parser.c.CVisitor;
-import org.eclipse.core.runtime.PlatformObject;
-
-@SuppressWarnings("restriction")
-public class C99Structure extends PlatformObject implements IC99Binding, ICompositeType, ITypeable {
-
- private Map<String, IField> fields = new LinkedHashMap<>();
- private IField[] fieldArray = null;
-
- /** either t_union or t_structure defined in IASTCompositeTypeSpecifier */
- private int key;
- private String name;
-
- private IScope scope;
-
- public C99Structure() {
- }
-
- public C99Structure(String name) {
- this.name = name;
- }
-
- public C99Structure(int key) {
- this.key = key;
- }
-
- public C99Structure(String name, int key) {
- this.name = name;
- this.key = key;
- }
-
- public void addField(IField field) {
- fields.put(field.getName(), field);
- fieldArray = null;
- }
-
- @Override
- public IField findField(String name) {
- return fields.get(name);
- }
-
- @Override
- public IScope getCompositeScope() {
- // C99Scope scope = new C99CompositeTypeScope(this);
- // scope.setScopeName(nameNode);
- // return scope;
- return null;
- }
-
- @Override
- public IField[] getFields() {
- if (fieldArray == null)
- fieldArray = fields.values().toArray(new IField[fields.size()]);
- return fieldArray;
- }
-
- public void setKey(int key) {
- this.key = key;
- }
-
- @Override
- public int getKey() {
- return key;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- @Override
- public String getName() {
- return name;
- }
-
- @Override
- public char[] getNameCharArray() {
- if (name == null)
- return new char[0];
-
- return name.toCharArray();
- }
-
- @Override
- public ILinkage getLinkage() {
- return Linkage.C_LINKAGE;
- }
-
- @Override
- public IType getType() {
- return this;
- }
-
- @Override
- public boolean isSameType(IType type) {
- if (type == this)
- return true;
- if (type instanceof ITypedef)
- return type.isSameType(this);
- return false;
- }
-
- //private Map<String,IField> fields = new LinkedHashMap<String,IField>();
- //private IField[] fieldArray = null;
-
- //private IScope scope;
-
- @Override
- public C99Structure clone() {
- try {
- C99Structure clone = (C99Structure) super.clone();
- //clone.scope = (IScope) scope.clone(); TODO
- clone.fieldArray = null;
- clone.fields = new LinkedHashMap<>();
- for (IField field : fields.values())
- clone.addField(field); // TODO not a deep clone
- return clone;
- } catch (CloneNotSupportedException e) {
- assert false;
- return null;
- }
- }
-
- @Override
- public IScope getScope() {
- return scope;
- }
-
- @Override
- public void setScope(IScope scope) {
- this.scope = scope;
- }
-
- @Override
- public IBinding getOwner() {
- if (scope != null) {
- return CVisitor.findEnclosingFunction((IASTNode) scope.getScopeName()); // local or global
- }
- return null;
- }
-
- @Override
- public boolean isAnonymous() {
- return name == null || name.length() == 0;
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Typedef.java b/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Typedef.java
deleted file mode 100644
index fa8bcef41e9..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Typedef.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2015 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.internal.core.dom.lrparser.c99.bindings;
-
-import org.eclipse.cdt.core.dom.ILinkage;
-import org.eclipse.cdt.core.dom.ast.ASTTypeUtil;
-import org.eclipse.cdt.core.dom.ast.IASTNode;
-import org.eclipse.cdt.core.dom.ast.IBinding;
-import org.eclipse.cdt.core.dom.ast.IScope;
-import org.eclipse.cdt.core.dom.ast.IType;
-import org.eclipse.cdt.core.dom.ast.ITypedef;
-import org.eclipse.cdt.internal.core.dom.Linkage;
-import org.eclipse.cdt.internal.core.dom.parser.ITypeContainer;
-import org.eclipse.cdt.internal.core.dom.parser.c.CVisitor;
-import org.eclipse.core.runtime.PlatformObject;
-
-@SuppressWarnings("restriction")
-public class C99Typedef extends PlatformObject implements IC99Binding, ITypedef, ITypeContainer, ITypeable {
- private IType type;
- private String name;
-
- private IScope scope;
-
- public C99Typedef() {
- }
-
- public C99Typedef(IType type) {
- this.type = type;
- }
-
- public C99Typedef(IType type, String name) {
- this.type = type;
- this.name = name;
- }
-
- @Override
- public IType getType() {
- return type;
- }
-
- @Override
- public void setType(IType type) {
- this.type = type;
- }
-
- @Override
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- @Override
- public char[] getNameCharArray() {
- return name.toCharArray();
- }
-
- @Override
- public boolean isSameType(IType t) {
- if (t == this)
- return true;
-
- if (t instanceof ITypedef)
- return type.isSameType(((ITypedef) t).getType());
- return type.isSameType(t);
- }
-
- @Override
- public C99Typedef clone() {
- try {
- C99Typedef clone = (C99Typedef) super.clone();
- clone.type = (IType) type.clone();
- return clone;
- } catch (CloneNotSupportedException e) {
- assert false;
- return null;
- }
- }
-
- @Override
- public ILinkage getLinkage() {
- return Linkage.C_LINKAGE;
- }
-
- @Override
- public IScope getScope() {
- return scope;
- }
-
- @Override
- public void setScope(IScope scope) {
- this.scope = scope;
- }
-
- @Override
- public IBinding getOwner() {
- if (scope != null) {
- return CVisitor.findEnclosingFunction((IASTNode) scope.getScopeName()); // local or global
- }
- return null;
- }
-
- @Override
- public String toString() {
- return getName() + " -> " + ASTTypeUtil.getType(this, true); //$NON-NLS-1$
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Variable.java b/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Variable.java
deleted file mode 100644
index 4c1faa00045..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Variable.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2015 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.internal.core.dom.lrparser.c99.bindings;
-
-import org.eclipse.cdt.core.dom.ILinkage;
-import org.eclipse.cdt.core.dom.ast.IASTNode;
-import org.eclipse.cdt.core.dom.ast.IBinding;
-import org.eclipse.cdt.core.dom.ast.IScope;
-import org.eclipse.cdt.core.dom.ast.IType;
-import org.eclipse.cdt.core.dom.ast.IValue;
-import org.eclipse.cdt.core.dom.ast.IVariable;
-import org.eclipse.cdt.internal.core.dom.Linkage;
-import org.eclipse.cdt.internal.core.dom.parser.c.CVisitor;
-import org.eclipse.core.runtime.PlatformObject;
-
-@SuppressWarnings("restriction")
-public class C99Variable extends PlatformObject implements IC99Binding, IVariable, ITypeable {
- private boolean isAuto;
- private boolean isExtern;
- private boolean isRegister;
- private boolean isStatic;
-
- private String name;
- private IType type;
-
- private IScope scope;
-
- public C99Variable() {
- }
-
- public C99Variable(String name) {
- this.name = name;
- }
-
- public void setType(IType type) {
- this.type = type;
- }
-
- @Override
- public IType getType() {
- return type;
- }
-
- public void setAuto(boolean auto) {
- this.isAuto = auto;
- }
-
- @Override
- public boolean isAuto() {
- return isAuto;
- }
-
- public void setExtern(boolean extern) {
- this.isExtern = extern;
- }
-
- @Override
- public boolean isExtern() {
- return isExtern;
- }
-
- public void setRegister(boolean isRegister) {
- this.isRegister = isRegister;
- }
-
- @Override
- public boolean isRegister() {
- return isRegister;
- }
-
- public void setStatic(boolean isStatic) {
- this.isStatic = isStatic;
- }
-
- @Override
- public boolean isStatic() {
- return isStatic;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- @Override
- public String getName() {
- return name;
- }
-
- @Override
- public char[] getNameCharArray() {
- return name.toCharArray();
- }
-
- @Override
- public ILinkage getLinkage() {
- return Linkage.C_LINKAGE;
- }
-
- @Override
- public IScope getScope() {
- return scope;
- }
-
- @Override
- public void setScope(IScope scope) {
- this.scope = scope;
- }
-
- @Override
- public IBinding getOwner() {
- if (scope == null)
- return null;
-
- return CVisitor.findDeclarationOwner((IASTNode) scope.getScopeName(), true);
- }
-
- @Override
- public IValue getInitialValue() {
- return null;
- }
-
- @Override
- public String toString() {
- return getName();
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/IC99Binding.java b/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/IC99Binding.java
deleted file mode 100644
index 4ffcb20132e..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/IC99Binding.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.internal.core.dom.lrparser.c99.bindings;
-
-import org.eclipse.cdt.core.dom.ast.IBinding;
-import org.eclipse.cdt.core.dom.ast.IScope;
-
-public interface IC99Binding extends IBinding {
-
- void setScope(IScope scope);
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/IC99Scope.java b/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/IC99Scope.java
deleted file mode 100644
index 899e88d03b8..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/IC99Scope.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.internal.core.dom.lrparser.c99.bindings;
-
-import org.eclipse.cdt.core.dom.IName;
-import org.eclipse.cdt.core.dom.ast.IASTNode;
-import org.eclipse.cdt.core.dom.ast.IScope;
-import org.eclipse.cdt.core.dom.ast.c.ICScope;
-
-/**
- * TODO maybe rename to IC99InternalScope or something else.
- *
- * @author Mike Kucera
- */
-public interface IC99Scope extends ICScope {
-
- void setParent(IScope parent);
-
- void setPhysicalNode(IASTNode node);
-
- void setScopeName(IName name);
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/ITypeable.java b/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/ITypeable.java
deleted file mode 100644
index e3a79d58903..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/ITypeable.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.internal.core.dom.lrparser.c99.bindings;
-
-import org.eclipse.cdt.core.dom.ast.IType;
-
-public interface ITypeable {
- IType getType();
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/symboltable/C99SymbolTable.java b/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/symboltable/C99SymbolTable.java
deleted file mode 100644
index 66f5cbeb364..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/symboltable/C99SymbolTable.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2015 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.internal.core.dom.lrparser.symboltable;
-
-import org.eclipse.cdt.internal.core.dom.lrparser.c99.bindings.IC99Binding;
-
-/**
- * A facade for a FunctionalMap to make it behave like
- * a symbol table for C99.
- *
- * In particular we need to be able to lookup identifiers based both
- * on the String representation of the identifier and its "namespace".
- *
- * @author Mike Kucera
- */
-public class C99SymbolTable {
-
- /**
- * Adapter objects are used as the keys. The trick here is to implement
- * compareTo() in such a way that identifiers are separated by their namespace.
- */
- private static class Key implements Comparable<Key> {
- private final String ident;
- private final CNamespace namespace;
-
- public Key(CNamespace namespace, String ident) {
- if (namespace == null || ident == null)
- throw new NullPointerException();
-
- this.ident = ident;
- this.namespace = namespace;
- }
-
- @Override
- public int compareTo(Key x) {
- // this separates namespaces in the symbol table
- int c = namespace.compareTo(x.namespace);
- // only if the namespace is the same do we check the identifier
- return (c == 0) ? ident.compareTo(x.ident) : c;
- }
-
- @Override
- public String toString() {
- return ident + "::" + namespace;//$NON-NLS-1$
- }
- }
-
- /**
- * Start with EMPTY_TABLE and build up a symbol table using insert().
- */
- public static final C99SymbolTable EMPTY_TABLE = new C99SymbolTable();
-
- // the map we are providing a facade for
- private final FunctionalMap<Key, IC99Binding> map;
-
- /**
- * Constructors are private, start with EMPTY_TABLE
- * and build it up using insert().
- */
- private C99SymbolTable() {
- map = FunctionalMap.emptyMap();
- }
-
- private C99SymbolTable(FunctionalMap<Key, IC99Binding> newRoot) {
- map = newRoot;
- }
-
- /**
- * Returns a new symbol table that contains the given mapping.
- * @throws NullPointerException if the namespace or key is null.
- */
- public C99SymbolTable insert(CNamespace ns, String key, IC99Binding binding) {
- return new C99SymbolTable(map.insert(new Key(ns, key), binding));
- }
-
- /**
- * Looks up the binding given its namespace and identifier.
- * @return null If there is no binding corresponding to the key.
- * @throws NullPointerException if the namespace or key is null.
- */
- public IC99Binding lookup(CNamespace ns, String key) {
- return map.lookup(new Key(ns, key));
- }
-
- public int size() {
- return map.size();
- }
-
- public boolean isEmpty() {
- return map.size() == 0;
- }
-
- @Override
- public String toString() {
- return map.toString();
- }
-
- // void printStructure() {
- // map.printStructure();
- // }
-
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/symboltable/CImperativeSymbolTable.java b/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/symboltable/CImperativeSymbolTable.java
deleted file mode 100644
index ce2db41b52b..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/symboltable/CImperativeSymbolTable.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.internal.core.dom.lrparser.symboltable;
-
-import java.util.ArrayList;
-import java.util.LinkedList;
-import java.util.List;
-
-import org.eclipse.cdt.core.dom.ast.IBinding;
-
-/**
- * Used to compute binding resolution during the parse.
- *
- * Imperative style symbol table with destructive update.
- *
- * Consists of two data structures, a hash table for fast lookup
- * of bindings given their names, and a stack used to keep track
- * of scopes.
- *
- *
- * @author Mike Kucera
- */
-public class CImperativeSymbolTable {
-
- private static final int TABLE_SIZE = 256;
-
- private Bucket[] table = new Bucket[TABLE_SIZE];
-
- private LinkedList<SymbolScope> scopeStack = new LinkedList<>();
-
- /**
- * Represents a scope in the C language.
- */
- private static class SymbolScope {
-
- /**
- * List of buckets that have been modified in the current scope.
- * When the scope is closed these buckets are popped, returning the
- * symbol table to the state it was in before the scope was opened.
- */
- List<Integer> modifiedBuckets = new ArrayList<>();
- }
-
- /**
- * A bucket object used to hold elements in the hash table.
- */
- private static class Bucket {
- String key;
- CNamespace namespace;
- IBinding binding;
- Bucket next;
-
- Bucket(Bucket next, CNamespace namespace, String key, IBinding binding) {
- this.key = key;
- this.namespace = namespace;
- this.binding = binding;
- this.next = next;
- }
- }
-
- public CImperativeSymbolTable() {
- openScope(); // open the global scope
- // TODO populate the global scope with built-ins
- }
-
- /**
- * Hashes a key into an index in the hash table.
- */
- private int index(String key) {
- return Math.abs(key.hashCode() % TABLE_SIZE);
- }
-
- /**
- * Adds a binding to the symbol table in the current scope.
- *
- * @param mask A bit mask used to identify the namespace of the identifier.
- */
- public void put(CNamespace namespace, String ident, IBinding b) {
- int index = index(ident);
- table[index] = new Bucket(table[index], namespace, ident, b);
-
- SymbolScope scope = scopeStack.getLast();
- scope.modifiedBuckets.add(index);
- }
-
- /**
- * Returns the binding associated with the given identifier, or
- * null if there is none.
- *
- * @param mask A bit mask used to identify the namespace of the identifier.
- */
- public IBinding get(CNamespace namespace, String ident) {
- Bucket b = table[index(ident)];
- while (b != null) {
- if (namespace == b.namespace && ident.equals(b.key))
- return b.binding;
- b = b.next;
- }
- return null;
- }
-
- /**
- * Opens a new inner scope for identifiers.
- *
- * If an identifier is added that already exists in an outer scope
- * then it will be shadowed.
- */
- public void openScope() {
- scopeStack.add(new SymbolScope());
- }
-
- /**
- * Remove all the symbols defined in the scope that is being closed.
- *
- * @param scope An IScope object that will be used to represent this scope.
- * @throws SymbolTableException If the global scope has already been closed or if bindingScope is null.
- */
- public void closeScope() {
- SymbolScope poppedScope = scopeStack.removeLast(); // pop the scopeStack
-
- // pop each bucket that was modified in the scope
- for (int index : poppedScope.modifiedBuckets)
- table[index] = table[index].next;
- }
-
- @SuppressWarnings("nls")
- @Override
- public String toString() {
- StringBuilder buff = new StringBuilder('[');
- for (Bucket b : table) {
- while (b != null) {
- buff.append('<').append(b.key).append(": ").append(b.binding).append(">, ");
- b = b.next;
- }
- }
- return buff.append(']').toString();
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/symboltable/CNamespace.java b/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/symboltable/CNamespace.java
deleted file mode 100644
index 7e4a360f34b..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/symboltable/CNamespace.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.internal.core.dom.lrparser.symboltable;
-
-/**
- * The C language has 4 namespaces for identifiers.
- * This enum represents three of them, the "member" namespace
- * is represented by IStructure.getFields().
- *
- * The symbol table uses these to mark identifiers and keep
- * the namespaces separate.
- *
- * @author Mike Kucera
- */
-public enum CNamespace {
-
- GOTO_LABEL, // goto labels
- STRUCT_TAG, // structs, unions, enums
- IDENTIFIER; // all other identifiers
-
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/symboltable/FunctionalMap.java b/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/symboltable/FunctionalMap.java
deleted file mode 100644
index 98f70bc07ad..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/symboltable/FunctionalMap.java
+++ /dev/null
@@ -1,279 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.internal.core.dom.lrparser.symboltable;
-
-/**
- * An immutable map, like you would find in a functional programming language.
- *
- * Inserting a new pair into the map leaves the original map untouched,
- * instead a new map that contains the pair is returned. Therefore
- * an assignment is needed to "modify" the map (just like with Strings).
- *
- * <code>
- * myMap = myMap.insert(key,value);
- * </code>
- *
- * There is no remove() method because it is not needed. In order to
- * "delete" a pair from the map simply save a reference to an old version
- * of the map and restore the map from that old reference. This makes
- * "undo" operations trivial to implement.
- *
- * <code>
- * FunctionalMap oldMap = myMap; // save a reference
- * myMap = myMap.insert(key,value); // insert the pair into the map
- * myMap = oldMap; // delete the pair from the map
- * </code>
- *
- * This map is implemented as a red-black tree data structure,
- * and is based on the implementation found at:
- * http://www.eecs.usma.edu/webs/people/okasaki/jfp99.ps
- *
- * @author Mike Kucera
- */
-public class FunctionalMap<K extends Comparable<K>, V> {
-
- private static final boolean RED = true, BLACK = false;
-
- private static class Node<K, V> {
- final K key;
- final V val;
- Node<K, V> left;
- Node<K, V> right;
- boolean color;
-
- public Node(K key, V val, boolean color, Node<K, V> left, Node<K, V> right) {
- this.key = key;
- this.val = val;
- this.left = left;
- this.right = right;
- this.color = color;
- }
-
- @SuppressWarnings("nls")
- @Override
- public String toString() {
- return "Node(" + key + "," + val + "," + (color ? "R" : "B") + ")";
- }
- }
-
- private Node<K, V> root = null;
-
- private FunctionalMap() {
- // private constructor, use static factory method to instantiate
- }
-
- // factory method makes it cleaner to instantiate objects
- public static <K extends Comparable<K>, V> FunctionalMap<K, V> emptyMap() {
- return new FunctionalMap<>();
- }
-
- /**
- * Returns a new map that contains the key-value pair.
- * @throws NullPointerException if key is null
- */
- public FunctionalMap<K, V> insert(K key, V val) {
- if (key == null)
- throw new NullPointerException();
-
- FunctionalMap<K, V> newMap = new FunctionalMap<>();
- newMap.root = insert(this.root, key, val);
- newMap.root.color = BLACK; // force the root to be black
-
- assert checkInvariants(newMap.root);
-
- return newMap;
- }
-
- private Node<K, V> insert(Node<K, V> n, K key, V val) {
- if (n == null)
- return new Node<>(key, val, RED, null, null); // new nodes are always red
-
- int c = key.compareTo(n.key);
- if (c < 0)
- return balance(n.key, n.val, n.color, insert(n.left, key, val), n.right);
- else if (c > 0)
- return balance(n.key, n.val, n.color, n.left, insert(n.right, key, val));
- else // equal, create a new node that overwrites the old value
- return new Node<>(key, val, n.color, n.left, n.right);
- }
-
- private Node<K, V> balance(K key, V val, boolean color, Node<K, V> left, Node<K, V> right) {
- if (color == RED)
- return new Node<>(key, val, color, left, right);
-
- final Node<K, V> newLeft, newRight;
-
- // now for the madness...
-
- if (left != null && left.color == RED) {
- if (left.left != null && left.left.color == RED) {
- newLeft = new Node<>(left.left.key, left.left.val, BLACK, left.left.left, left.left.right);
- newRight = new Node<>(key, val, BLACK, left.right, right);
- return new Node<>(left.key, left.val, RED, newLeft, newRight);
- }
- if (left.right != null && left.right.color == RED) {
- newLeft = new Node<>(left.key, left.val, BLACK, left.left, left.right.left);
- newRight = new Node<>(key, val, BLACK, left.right.right, right);
- return new Node<>(left.right.key, left.right.val, RED, newLeft, newRight);
- }
- }
- if (right != null && right.color == RED) {
- if (right.left != null && right.left.color == RED) {
- newLeft = new Node<>(key, val, BLACK, left, right.left.left);
- newRight = new Node<>(right.key, right.val, BLACK, right.left.right, right.right);
- return new Node<>(right.left.key, right.left.val, RED, newLeft, newRight);
- }
- if (right.right != null && right.right.color == RED) {
- newLeft = new Node<>(key, val, BLACK, left, right.left);
- newRight = new Node<>(right.right.key, right.right.val, BLACK, right.right.left, right.right.right);
- return new Node<>(right.key, right.val, RED, newLeft, newRight);
- }
- }
-
- return new Node<>(key, val, BLACK, left, right);
- }
-
- /**
- * Returns the value if it is in the map, null otherwise.
- * @throws NullPointerException if key is null
- */
- public V lookup(K key) {
- if (key == null)
- throw new NullPointerException();
-
- // no need for recursion here
- Node<K, V> n = root;
- while (n != null) {
- int x = key.compareTo(n.key); // throws NPE if key is null
- if (x == 0)
- return n.val;
- n = (x < 0) ? n.left : n.right;
- }
- return null;
- }
-
- /**
- * Returns true if there exists a mapping with the given key
- * in this map.
- * @throws NullPointerException if key is null
- */
- public boolean containsKey(K key) {
- if (key == null)
- throw new NullPointerException();
-
- // lookup uses an iterative algorithm
- Node<K, V> n = root;
- while (n != null) {
- int x = key.compareTo(n.key); // throws NPE if key is null
- if (x == 0)
- return true;
- n = (x < 0) ? n.left : n.right;
- }
- return false;
- }
-
- public boolean isEmpty() {
- return root == null;
- }
-
- @Override
- public String toString() {
- StringBuilder sb = new StringBuilder('[');
- inorderPrint(root, sb);
- sb.append(']');
- return sb.toString();
- }
-
- private static <K, V> void inorderPrint(Node<K, V> n, StringBuilder sb) {
- if (n == null)
- return;
-
- inorderPrint(n.left, sb);
- if (sb.length() > 1)
- sb.append(", ");//$NON-NLS-1$
- sb.append(n.toString());
- inorderPrint(n.right, sb);
- }
-
- void printStructure() {
- if (root == null)
- System.out.println("empty map"); //$NON-NLS-1$
- else
- printStructure(root, 0);
- }
-
- private static <K, V> void printStructure(Node<K, V> node, int level) {
- for (int i = 0; i < level; i++)
- System.out.print("--");//$NON-NLS-1$
-
- if (node == null) {
- System.out.println("null");//$NON-NLS-1$
- } else if (node.right == null && node.left == null) {
- System.out.println(node);
- } else {
- System.out.println(node);
- printStructure(node.right, level + 1);
- printStructure(node.left, level + 1);
- }
- }
-
- private static <K, V> int depth(Node<K, V> node) {
- if (node == null)
- return 0;
- return Math.max(depth(node.left), depth(node.right)) + 1;
- }
-
- /**
- * Warning, this is a linear operation.
- */
- public int size() {
- return size(root);
- }
-
- private static <K, V> int size(Node<K, V> node) {
- if (node == null)
- return 0;
- return size(node.left) + size(node.right) + 1;
- }
-
- /**********************************************************************************************
- * Built-in testing
- **********************************************************************************************/
-
- private boolean checkInvariants(Node<K, V> n) {
- // the number of black nodes on every path through the tree is the same
- assertBalanced(n);
- return true;
- }
-
- // not exactly sure if this is right
- private int assertBalanced(Node<K, V> node) {
- if (node == null)
- return 1; // nulls are considered as black children
-
- // both children of every red node are black
- if (node.color == RED) {
- assert node.left == null || node.left.color == BLACK;
- assert node.right == null || node.right.color == BLACK;
- }
-
- int left = assertBalanced(node.left);
- int right = assertBalanced(node.right);
-
- assert left == right;
-
- return left + (node.color == BLACK ? 1 : 0);
- }
-
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/symboltable/SymbolTableTests.java b/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/symboltable/SymbolTableTests.java
deleted file mode 100644
index 62dbb1beb87..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/symboltable/SymbolTableTests.java
+++ /dev/null
@@ -1,220 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2016 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.internal.core.dom.lrparser.symboltable;
-
-//import junit.framework.TestCase;
-
-import org.eclipse.cdt.core.dom.ast.IBinding;
-import org.eclipse.cdt.internal.core.dom.lrparser.c99.bindings.C99Label;
-import org.eclipse.cdt.internal.core.dom.lrparser.c99.bindings.C99Structure;
-import org.eclipse.cdt.internal.core.dom.lrparser.c99.bindings.C99Variable;
-
-@SuppressWarnings("nls")
-public class SymbolTableTests {//extends TestCase {
- // TODO write tests for imperative symbol table
-
- private final String[] KEYS = { "pantera", "soulfly", "inflames", "megadeth", "archenemy", "carcass" };
-
- public void testPersistence() {
- FunctionalMap<String, Integer> st0 = FunctionalMap.emptyMap();
- assertTrue(st0.isEmpty());
-
- FunctionalMap<String, Integer> st1 = st0.insert(KEYS[0], 1);
-
- // empty symbol table does not change
- assertTrue(st0.isEmpty());
- assertNull(st0.lookup(KEYS[1]));
-
- // a new symbol table was created
- assertFalse(st1.isEmpty());
- assertEquals(Integer.valueOf(1), st1.lookup(KEYS[0]));
-
- FunctionalMap<String, Integer> st2 = st1.insert(KEYS[1], 2);
- FunctionalMap<String, Integer> st3 = st2.insert(KEYS[2], 3);
- FunctionalMap<String, Integer> st4 = st3.insert(KEYS[3], 4);
- FunctionalMap<String, Integer> st5 = st4.insert(KEYS[4], 5);
-
- assertMap(st0, KEYS, new Integer[] { null, null, null, null, null, null });
- assertMap(st1, KEYS, new Integer[] { 1, null, null, null, null, null });
- assertMap(st2, KEYS, new Integer[] { 1, 2, null, null, null, null });
- assertMap(st3, KEYS, new Integer[] { 1, 2, 3, null, null, null });
- assertMap(st4, KEYS, new Integer[] { 1, 2, 3, 4, null, null });
- assertMap(st5, KEYS, new Integer[] { 1, 2, 3, 4, 5, null });
- }
-
- // these are here just to get the tests to compile
- // JUnit is not available in this plugin, this is old code that I just didn't want to delete
-
- @SuppressWarnings("unused")
- private void assertEquals(Integer integer, Integer lookup) {
- // TODO Auto-generated method stub
-
- }
-
- @SuppressWarnings("unused")
- private void assertFalse(boolean empty) {
- // TODO Auto-generated method stub
-
- }
-
- @SuppressWarnings("unused")
- private void assertNull(Integer lookup) {
- // TODO Auto-generated method stub
-
- }
-
- @SuppressWarnings("unused")
- private void assertTrue(boolean empty) {
- // TODO Auto-generated method stub
-
- }
-
- public void testOverride() {
- FunctionalMap<String, Integer> map1 = FunctionalMap.emptyMap();
- for (int i = 0; i < KEYS.length; i++) {
- map1 = map1.insert(KEYS[i], i);
- }
-
- assertMap(map1, KEYS, new Integer[] { 0, 1, 2, 3, 4, 5 });
-
- FunctionalMap<String, Integer> map2 = map1.insert(KEYS[5], 999);
- FunctionalMap<String, Integer> map3 = map2.insert(KEYS[5], null);
-
- assertEquals(Integer.valueOf(5), map1.lookup(KEYS[5]));
- assertEquals(Integer.valueOf(999), map2.lookup(KEYS[5]));
- assertNull(map3.lookup(KEYS[5]));
- }
-
- @SuppressWarnings("unchecked")
- private static void assertMap(FunctionalMap map, Comparable[] keys, Object[] vals) {
- assert keys.length == vals.length;
-
- for (int i = 0; i < keys.length; i++) {
- assertEquals("the key '" + keys[i] + "' did not match", vals[i], map.lookup((keys[i])));
- if (vals[i] != null) {
- assertTrue("key '" + keys[i] + "' not in map", map.containsKey(keys[i]));
- }
- }
- }
-
- @SuppressWarnings("unused")
- private static void assertTrue(String string, boolean containsKey) {
- // TODO Auto-generated method stub
-
- }
-
- @SuppressWarnings("unused")
- private static void assertEquals(String string, Object object, Object lookup) {
- // TODO Auto-generated method stub
-
- }
-
- public void testFunctionalSymbolTable1() {
- C99SymbolTable st = C99SymbolTable.EMPTY_TABLE;
-
- for (String key : KEYS) {
- st = st.insert(CNamespace.IDENTIFIER, key, new C99Variable(key));
- }
- for (String key : KEYS) {
- st = st.insert(CNamespace.GOTO_LABEL, key, new C99Label(key));
- }
- for (String key : KEYS) {
- st = st.insert(CNamespace.STRUCT_TAG, key, new C99Structure(key));
- }
-
- assertFunctionalSymbolTableContainsAllThePairs(st);
- }
-
- public void testFunctionalSymbolTable2() {
- C99SymbolTable st = C99SymbolTable.EMPTY_TABLE;
-
- // same test as above but this time we insert the keys in a different order
- for (String key : KEYS) {
- st = st.insert(CNamespace.IDENTIFIER, key, new C99Variable(key));
- st = st.insert(CNamespace.GOTO_LABEL, key, new C99Label(key));
- st = st.insert(CNamespace.STRUCT_TAG, key, new C99Structure(key));
- }
-
- assertFunctionalSymbolTableContainsAllThePairs(st);
- }
-
- private void assertFunctionalSymbolTableContainsAllThePairs(C99SymbolTable st) {
- assertEquals(KEYS.length * 3, st.size());
- for (String key : KEYS) {
- IBinding b = st.lookup(CNamespace.IDENTIFIER, key);
- assertNotNull(b);
- C99Variable x = (C99Variable) b;
- assertEquals(key, x.getName());
- }
- for (String key : KEYS) {
- IBinding b = st.lookup(CNamespace.GOTO_LABEL, key);
- assertNotNull(b);
- C99Label x = (C99Label) b;
- assertEquals(key, x.getName());
- }
- for (String key : KEYS) {
- IBinding b = st.lookup(CNamespace.STRUCT_TAG, key);
- assertNotNull(b);
- C99Structure x = (C99Structure) b;
- assertEquals(key, x.getName());
- }
- }
-
- @SuppressWarnings("unused")
- private void assertEquals(String key, String name) {
- // TODO Auto-generated method stub
-
- }
-
- @SuppressWarnings("unused")
- private void assertNotNull(IBinding b) {
- // TODO Auto-generated method stub
-
- }
-
- public void testProperFail() {
- FunctionalMap<Integer, Integer> map = FunctionalMap.emptyMap();
- try {
- map.insert(null, 99);
- fail();
- } catch (NullPointerException e) {
- }
-
- try {
- map.containsKey(null);
- fail();
- } catch (NullPointerException e) {
- }
-
- try {
- map.lookup(null);
- fail();
- } catch (NullPointerException e) {
- }
-
- C99SymbolTable table = C99SymbolTable.EMPTY_TABLE;
- try {
- table.insert(null, null, new C99Variable("blah")); //$NON-NLS-1$
- fail();
- } catch (NullPointerException e) {
- }
-
- }
-
- private void fail() {
- // TODO Auto-generated method stub
-
- }
-
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/symboltable/TypedefSymbolTable.java b/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/symboltable/TypedefSymbolTable.java
deleted file mode 100644
index 6dcec3b674d..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/symboltable/TypedefSymbolTable.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.internal.core.dom.lrparser.symboltable;
-
-/**
- * A facade for a FunctionalMap that is used just to track typedef
- * declarations.
- *
- * This class acts like a set. No information needs to be associated
- * with a typedef declaration, all we need to know is if the identifier
- * has been declared as a typedef.
- *
- * @author Mike Kucera
- */
-public class TypedefSymbolTable {
-
- /**
- * Start with EMPTY_TABLE and build up a symbol table using add().
- */
- public static final TypedefSymbolTable EMPTY_TABLE = new TypedefSymbolTable();
-
- // the map we are providing a facade for
- private final FunctionalMap<String, Object> map;
-
- /**
- * Constructors are private, start with EMPTY_TABLE
- * and build it up using insert().
- */
- private TypedefSymbolTable() {
- map = FunctionalMap.emptyMap();
- }
-
- private TypedefSymbolTable(FunctionalMap<String, Object> newRoot) {
- map = newRoot;
- }
-
- public TypedefSymbolTable add(String typedefIdent) {
- return new TypedefSymbolTable(map.insert(typedefIdent, null));
- }
-
- public boolean contains(String typedef) {
- return map.containsKey(typedef);
- }
-
- public int size() {
- return map.size();
- }
-
- public boolean isEmpty() {
- return map.size() == 0;
- }
-
- @Override
- public String toString() {
- return map.toString();
- }
-
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/plugin.properties b/lrparser/org.eclipse.cdt.core.lrparser/plugin.properties
deleted file mode 100644
index a2e49a31358..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/plugin.properties
+++ /dev/null
@@ -1,21 +0,0 @@
-###############################################################################
-# Copyright (c) 2007, 2009 IBM Corporation and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-
-Bundle-Name.0 = LR Parser Plug-in
-Bundle-Vendor.0 = Eclipse CDT
-Bundle-Name.1 = LR Parser Plug-in
-
-# built-in languages
-language.name.c99= C99
-language.name.isocpp= ISO C++ \ No newline at end of file
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/plugin.xml b/lrparser/org.eclipse.cdt.core.lrparser/plugin.xml
deleted file mode 100644
index 508db114007..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/plugin.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.2"?>
-<plugin>
-
- <!--
- <extension point="org.eclipse.cdt.core.language">
- <language
- class="org.eclipse.cdt.core.dom.lrparser.c99.C99Language"
- id="c99"
- name="%language.name.c99">
- </language>
- <language
- class="org.eclipse.cdt.core.dom.lrparser.gnu.GCCLanguage"
- id="gcc"
- name="LR GCC">
- </language>
-
- <language
- class="org.eclipse.cdt.core.dom.lrparser.cpp.ISOCPPLanguage"
- id="isocpp"
- name="%language.name.isocpp">
- </language>
- <language
- class="org.eclipse.cdt.core.dom.lrparser.gnu.GPPLanguage"
- id="gpp"
- name="LR GPP">
- </language>
- </extension>
- -->
-
-</plugin> \ No newline at end of file
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/BaseExtensibleLanguage.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/BaseExtensibleLanguage.java
deleted file mode 100644
index 20996aa3a99..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/BaseExtensibleLanguage.java
+++ /dev/null
@@ -1,482 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2015 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.dom.lrparser;
-
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.cdt.core.dom.ICodeReaderFactory;
-import org.eclipse.cdt.core.dom.ast.IASTCompletionNode;
-import org.eclipse.cdt.core.dom.ast.IASTName;
-import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
-import org.eclipse.cdt.core.dom.ast.gnu.c.GCCLanguage;
-import org.eclipse.cdt.core.dom.ast.gnu.cpp.GPPLanguage;
-import org.eclipse.cdt.core.dom.lrparser.action.ITokenStream;
-import org.eclipse.cdt.core.dom.parser.CLanguageKeywords;
-import org.eclipse.cdt.core.dom.parser.IScannerExtensionConfiguration;
-import org.eclipse.cdt.core.index.IIndex;
-import org.eclipse.cdt.core.model.AbstractLanguage;
-import org.eclipse.cdt.core.model.ICLanguageKeywords;
-import org.eclipse.cdt.core.model.IContributedModelBuilder;
-import org.eclipse.cdt.core.model.ILanguage;
-import org.eclipse.cdt.core.model.ITranslationUnit;
-import org.eclipse.cdt.core.parser.FileContent;
-import org.eclipse.cdt.core.parser.IParserLogService;
-import org.eclipse.cdt.core.parser.IScanner;
-import org.eclipse.cdt.core.parser.IScannerInfo;
-import org.eclipse.cdt.core.parser.IncludeFileContentProvider;
-import org.eclipse.cdt.core.parser.ParserLanguage;
-import org.eclipse.cdt.core.parser.util.ASTPrinter;
-import org.eclipse.cdt.core.parser.util.DebugUtil;
-import org.eclipse.cdt.internal.core.dom.parser.ASTNode;
-import org.eclipse.cdt.internal.core.parser.scanner.CPreprocessor;
-import org.eclipse.cdt.internal.core.pdom.dom.IPDOMLinkageFactory;
-import org.eclipse.cdt.internal.core.pdom.dom.c.PDOMCLinkageFactory;
-import org.eclipse.cdt.internal.core.pdom.dom.cpp.PDOMCPPLinkageFactory;
-import org.eclipse.core.runtime.CoreException;
-
-import lpg.lpgjavaruntime.IToken;
-import lpg.lpgjavaruntime.PrsStream;
-
-/**
- * Implementation of the ILanguage extension point,
- * provides the ability to add LPG based languages to CDT.
- */
-@SuppressWarnings({ "restriction", "nls" })
-public abstract class BaseExtensibleLanguage extends AbstractLanguage {
-
- private static final boolean DEBUG_PRINT_GCC_AST = false;
- private static final boolean DEBUG_PRINT_AST = false;
- // default 0.5 min
- private long parser_timeout_limit_lowerBoundary = 1 * 30 * 1000;
- // default 2 mins
- private long parser_timeout_limit_uppperBoundary = 1 * 60 * 1000;
- //time limit for each token, 1ms
- public static long UNIT_PARSER_TIMEOUT_LIMIT = 10;
-
- private static long LONGEST_CORE_RUNTIME;
- private static long LONGEST_LPR_RUNTIME;
-
- public static boolean CATCH_TEMPLATEID_ERROR = false;
-
- private ICLanguageKeywords keywords = null;
-
- /**
- * Retrieve the parser (runs after the preprocessor runs).
- *
- * Can be overridden in subclasses to provide a different parser
- * for a language extension.
- */
- protected abstract IParser<IASTTranslationUnit> getParser(IScanner scanner, IIndex index,
- Map<String, String> properties);
-
- protected IParser<IASTTranslationUnit> getCompleteParser(IScanner scanner, IIndex index,
- Map<String, String> properties) {
- return getParser(scanner, index, properties);
- }
-
- protected ISecondaryParser<IASTTranslationUnit> getCompleteParser(ITokenStream stream, IScanner scanner,
- IIndex index, Map<String, String> properties) {
- return (ISecondaryParser) getParser(scanner, index, properties);
- }
-
- /**
- * Returns the ParserLanguage value that is to be used when creating
- * an instance of CPreprocessor.
- *
- */
- protected abstract ParserLanguage getParserLanguage();
-
- /**
- * Returns the scanner extension configuration for this language, may not return null
- */
- protected abstract IScannerExtensionConfiguration getScannerExtensionConfiguration();
-
- private class ParseThread<AST_TYPE> extends Thread {
- ParseThread() {
- super();
- super.setName("ParserThread");
- }
-
- AST_TYPE astUnit = null;
-
- AST_TYPE getASTUnit() {
- return astUnit;
- }
- }
-
- private <AST_TYPE> AST_TYPE runThreadByLimitedTime(long limitTime, ParseThread<AST_TYPE> parseThread)
- throws InterruptedException {
- parseThread.start();
-
- parseThread.join(limitTime);
-
- return parseThread.getASTUnit();
- }
-
- @Override
- @Deprecated
- public IASTTranslationUnit getASTTranslationUnit(org.eclipse.cdt.core.parser.CodeReader reader,
- IScannerInfo scanInfo, ICodeReaderFactory codeReaderFactory, IIndex index, int options,
- IParserLogService log) throws CoreException {
- return getASTTranslationUnit(FileContent.adapt(reader), scanInfo,
- IncludeFileContentProvider.adapt(codeReaderFactory), index, options, log);
- }
-
- public void setParser_timeout_limit_lowerBoundary(long parser_timeout_limit_lowerBoundary) {
- this.parser_timeout_limit_lowerBoundary = parser_timeout_limit_lowerBoundary;
- }
-
- public void setParser_timeout_limit_uppperBoundary(long parser_timeout_limit_uppperBoundary) {
- this.parser_timeout_limit_uppperBoundary = parser_timeout_limit_uppperBoundary;
- }
-
- @Override
- public IASTTranslationUnit getASTTranslationUnit(final FileContent reader, final IScannerInfo scanInfo,
- final IncludeFileContentProvider fileCreator, final IIndex index, int options, final IParserLogService log)
- throws CoreException {
- CATCH_TEMPLATEID_ERROR = false;
- long startTime = 0;
- java.util.Date today = null;
- if (log.isTracing()) {
- today = new java.util.Date();
- startTime = today.getTime();
- log.traceLog(
- "^^^^^^ Start parsing " + reader.getFileLocation() + " at " + new java.sql.Timestamp(startTime));
- }
- IASTTranslationUnit gtu = null;
- if (DEBUG_PRINT_GCC_AST) {
- System.out.println(
- "\n********************************************************\nParsing\nOptions: " + options);
-
- ILanguage gppLanguage = getParserLanguage() == ParserLanguage.CPP ? GPPLanguage.getDefault()
- : GCCLanguage.getDefault();
- gtu = gppLanguage.getASTTranslationUnit(reader, scanInfo, fileCreator, index, options, log);
-
- System.out.println(gppLanguage.getName() + " AST:");
- ASTPrinter.print(gtu);
- System.out.println();
- }
-
- final IScannerExtensionConfiguration config = getScannerExtensionConfiguration();
-
- final ParserLanguage pl = getParserLanguage();
- final IScanner preprocessor = new CPreprocessor(reader, scanInfo, pl, log, config, fileCreator);
- preprocessor.setComputeImageLocations((options & ILanguage.OPTION_NO_IMAGE_LOCATIONS) == 0);
-
- final Map<String, String> parserProperties = new HashMap<>();
- parserProperties.put(LRParserProperties.TRANSLATION_UNIT_PATH, reader.getFileLocation());
- if ((options & OPTION_SKIP_FUNCTION_BODIES) != 0)
- parserProperties.put(LRParserProperties.SKIP_FUNCTION_BODIES, "true");
- if ((options & OPTION_SKIP_TRIVIAL_EXPRESSIONS_IN_AGGREGATE_INITIALIZERS) != 0)
- parserProperties.put(LRParserProperties.SKIP_TRIVIAL_EXPRESSIONS_IN_AGGREGATE_INITIALIZERS, "true");
-
- final IParser<IASTTranslationUnit> parser = getParser(preprocessor, index, parserProperties);
- long parser_timeout_limit = parser_timeout_limit_uppperBoundary;
- if (parser instanceof PrsStream) {
- int token_size = ((PrsStream) parser).getSize();
- parser_timeout_limit = token_size * UNIT_PARSER_TIMEOUT_LIMIT;
- if (parser_timeout_limit < parser_timeout_limit_lowerBoundary)
- parser_timeout_limit = parser_timeout_limit_lowerBoundary;
- if (parser_timeout_limit > parser_timeout_limit_uppperBoundary)
- parser_timeout_limit = parser_timeout_limit_uppperBoundary;
- log.traceLog("^^^^^^ adjusted time out limit with token size: " + token_size + " and the time out limit: "
- + parser_timeout_limit);
- }
- IASTTranslationUnit tu = null;
- //real token size, substract a dummy token and a eof token
- final int orgTokenSize = ((PrsStream) parser).getTokens().size();
- //final List orginalTokens = copyList(((PrsStream)parser).getTokens());
- ParseThread<IASTTranslationUnit> parseThread = new ParseThread<IASTTranslationUnit>() {
-
- @Override
- public void run() {
- try {
- astUnit = parser.parse();
- }
-
- catch (Exception e) {
-
- /*
- if(e instanceof TemplateIDErrorException){
- //IScanner completePreprocessor = new CPreprocessor(reader, scanInfo, pl, log, config, fileCreator);
- //IParser<IASTTranslationUnit> completeParser = getCompleteParser(preprocessor, index, parserProperties);
-
- ISecondaryParser<IASTTranslationUnit> completeParser = getCompleteParser((ITokenStream)parser, preprocessor, index, parserProperties);
- //completeParser.setAction(parser.getAction());
- //((ISecondaryParser)completeParser).setTokenMap((ITokenStream)parser);
- //copyTokensToParser((PrsStream)completeParser, ((PrsStream)parser).getTokens().subList(0, orgTokenSize));
- ((ISecondaryParser)completeParser).setTokens(((PrsStream)parser).getTokens().subList(1, orgTokenSize-1));
- astUnit = completeParser.parse();
- }else{
- */
- if (log.isTracing()) {
- StringWriter stringW = new StringWriter();
- PrintWriter printW = new PrintWriter(stringW);
- e.printStackTrace(printW);
-
- log.traceLog("^^^^^^ PARSER_ERR_STACK" + stringW.toString());
- }
- //}
-
- }
-
- }
-
- };
-
- try {
- tu = runThreadByLimitedTime(parser_timeout_limit, parseThread);
- } catch (InterruptedException e) {
-
- StringWriter stringW = new StringWriter();
- PrintWriter printW = new PrintWriter(stringW);
- e.printStackTrace(printW);
-
- log.traceLog("^^^^^^_ERR_STACK" + stringW.toString());
- //e.printStackTrace();
- }
- parseThread.stop();
- long lprFinishTime = 0;
- long coreFinishTime = 0;
- if (log.isTracing()) {
- today = new java.util.Date();
- lprFinishTime = today.getTime();
- }
-
- if (tu == null) {
- long lpr_fail_time = 0;
- if (log.isTracing()) {
- lpr_fail_time = lprFinishTime;
- log.traceLog("^^^^^^ LR parser fails in parsing " + reader.getFileLocation() + " after running "
- + (lpr_fail_time - startTime) / 1000 + " seconds");
- }
-
- ILanguage gppLanguage = getParserLanguage() == ParserLanguage.CPP ? GPPLanguage.getDefault()
- : GCCLanguage.getDefault();
- tu = gppLanguage.getASTTranslationUnit(reader, scanInfo, fileCreator, index, options, log);
- if (log.isTracing()) {
- today = new java.util.Date();
- coreFinishTime = today.getTime();
-
- log.traceLog("^^^^^^ core parser parses " + reader.getFileLocation() + " in "
- + (coreFinishTime - lpr_fail_time) / 1000 + " seconds");
- }
- }
-
- if (DEBUG_PRINT_AST) {
- System.out.println("Base Extensible Language AST:");
- ASTPrinter.print(tu);
- }
- long finishTime;
- if (log.isTracing()) {
- if (coreFinishTime > 0) {
- //parsed by core parser.
- finishTime = coreFinishTime;
- long core_runtime = finishTime - startTime;
- log.traceLog("^^^^^^ Finish parsing with cdt core parser " + reader.getFileLocation() + " at "
- + new java.sql.Timestamp(finishTime) + " runtime: " + core_runtime);
- if (core_runtime > LONGEST_CORE_RUNTIME) {
- LONGEST_CORE_RUNTIME = core_runtime;
- log.traceLog(
- "^^^^^^ CLCLCLCL so far the longest runtime with core parser is: " + core_runtime / 1000);
- }
- } else {
- finishTime = lprFinishTime;
- long lpr_runtime = finishTime - startTime;
- log.traceLog("^^^^^^ Finish parsing " + reader.getFileLocation() + " at "
- + new java.sql.Timestamp(finishTime) + " runtime: " + lpr_runtime);
- if (lpr_runtime > LONGEST_LPR_RUNTIME) {
- LONGEST_LPR_RUNTIME = lpr_runtime;
- log.traceLog("^^^^^^ LLLLLLLL so far the longest runtime by LPR Parser is: " + lpr_runtime / 1000);
- }
- }
- }
-
- return tu;
- }
-
- public void copyTokensToParser(PrsStream parser, List<IToken> tokens) {
- parser.resetTokenStream();
-
- for (IToken token : tokens) {
-
- parser.addToken(token);
- }
-
- }
-
- public List copyList(List orgList) {
- List returnList = new ArrayList(orgList.size());
- for (int i = 0; i < orgList.size(); i++) {
- returnList.add(orgList.get(i));
- }
- return returnList;
-
- }
-
- @Override
- @Deprecated
- public IASTTranslationUnit getASTTranslationUnit(org.eclipse.cdt.core.parser.CodeReader reader,
- IScannerInfo scanInfo, ICodeReaderFactory fileCreator, IIndex index, IParserLogService log)
- throws CoreException {
-
- return getASTTranslationUnit(reader, scanInfo, fileCreator, index, 0, log);
- }
-
- @Override
- @Deprecated
- public IASTCompletionNode getCompletionNode(org.eclipse.cdt.core.parser.CodeReader reader, IScannerInfo scanInfo,
- ICodeReaderFactory fileCreator, IIndex index, IParserLogService log, int offset) throws CoreException {
- return getCompletionNode(FileContent.adapt(reader), scanInfo, IncludeFileContentProvider.adapt(fileCreator),
- index, log, offset);
- }
-
- @Override
- public IASTCompletionNode getCompletionNode(FileContent reader, IScannerInfo scanInfo,
- IncludeFileContentProvider fileCreator, IIndex index, IParserLogService log, int offset)
- throws CoreException {
-
- IASTCompletionNode cn;
- if (DEBUG_PRINT_GCC_AST) {
- ILanguage gppLanguage = GCCLanguage.getDefault();
- cn = gppLanguage.getCompletionNode(reader, scanInfo, fileCreator, index, log, offset);
-
- System.out.println();
- System.out.println("********************************************************");
- System.out.println("GPP AST:");
- printCompletionNode(cn);
- }
-
- IScannerExtensionConfiguration config = getScannerExtensionConfiguration();
-
- ParserLanguage pl = getParserLanguage();
- IScanner preprocessor = new CPreprocessor(reader, scanInfo, pl, log, config, fileCreator);
- preprocessor.setContentAssistMode(offset);
-
- Map<String, String> parserProperties = new HashMap<>();
- parserProperties.put(LRParserProperties.TRANSLATION_UNIT_PATH, reader.getFileLocation());
- parserProperties.put(LRParserProperties.SKIP_FUNCTION_BODIES, "true");
- parserProperties.put(LRParserProperties.SKIP_TRIVIAL_EXPRESSIONS_IN_AGGREGATE_INITIALIZERS, "true");
-
- final IParser<IASTTranslationUnit> parser = getParser(preprocessor, index, parserProperties);
-
- long parser_timeout_limit = parser_timeout_limit_uppperBoundary;
- if (parser instanceof PrsStream) {
- int token_size = ((PrsStream) parser).getSize();
- parser_timeout_limit = token_size * UNIT_PARSER_TIMEOUT_LIMIT;
- if (parser_timeout_limit < parser_timeout_limit_lowerBoundary)
- parser_timeout_limit = parser_timeout_limit_lowerBoundary;
- if (parser_timeout_limit > parser_timeout_limit_uppperBoundary)
- parser_timeout_limit = parser_timeout_limit_uppperBoundary;
- if (log.isTracing()) {
- log.traceLog("^^^^^^ adjusted time out limit with token size: " + token_size
- + " and the time out limit: " + parser_timeout_limit);
- }
- }
- ParseThread<IASTCompletionNode> parseThread = new ParseThread<IASTCompletionNode>() {
-
- @Override
- public void run() {
- parser.parse();
- astUnit = parser.getCompletionNode();
- }
-
- };
-
- IASTCompletionNode completionNode = null;
- try {
- completionNode = runThreadByLimitedTime(parser_timeout_limit * 100, parseThread);
- } catch (InterruptedException e) {
- if (log.isTracing()) {
- StringWriter stringW = new StringWriter();
- PrintWriter printW = new PrintWriter(stringW);
- e.printStackTrace(printW);
-
- log.traceLog("^^^^^^_ERR_STACK" + stringW.toString());
- }
- //e.printStackTrace();
- }
- parseThread.stop();
- if (completionNode == null) {
- log.traceLog("LR parser fails in parsing " + reader.getFileLocation());
- if (log.isTracing()) {
- log.traceLog("LR parser fails in parsing " + reader.getFileLocation());
- }
- ILanguage gppLanguage = getParserLanguage() == ParserLanguage.CPP ? GPPLanguage.getDefault()
- : GCCLanguage.getDefault();
- completionNode = gppLanguage.getCompletionNode(reader, scanInfo, fileCreator, index, log, offset);
- }
-
- if (DEBUG_PRINT_AST) {
- System.out.println("Base Extensible Language AST:");
- printCompletionNode(completionNode);
- }
-
- return completionNode;
- }
-
- /*
- * For debugging.
- */
- private static void printCompletionNode(IASTCompletionNode cn) {
- if (cn == null) {
- System.out.println("Completion node is null");
- return;
- }
-
- ASTPrinter.print(cn.getTranslationUnit());
- for (IASTName name : cn.getNames()) {
- ASTNode context = (ASTNode) name.getCompletionContext();
- System.out.printf("Name: %s, Context: %s, At: %d", name, DebugUtil.safeClassName(context),
- context == null ? null : context.getOffset());
- if (name.getTranslationUnit() == null) // some name nodes are not hooked up to the AST
- System.out.print(", not hooked up");
- System.out.println();
- }
- System.out.println();
- }
-
- @Override
- @Deprecated
- public IASTName[] getSelectedNames(IASTTranslationUnit ast, int start, int length) {
- return GCCLanguage.getDefault().getSelectedNames(ast, start, length);
- }
-
- private ICLanguageKeywords cLanguageKeywords = new CLanguageKeywords(getParserLanguage(),
- getScannerExtensionConfiguration());
-
- @Override
- public <T> T getAdapter(Class<T> adapter) {
- if (ICLanguageKeywords.class.equals(adapter))
- return adapter.cast(cLanguageKeywords);
- if (IPDOMLinkageFactory.class.equals(adapter)) {
- if (getParserLanguage().isCPP())
- return adapter.cast(new PDOMCPPLinkageFactory());
- return adapter.cast(new PDOMCLinkageFactory());
- }
-
- return super.getAdapter(adapter);
- }
-
- @Override
- public IContributedModelBuilder createModelBuilder(@SuppressWarnings("unused") ITranslationUnit tu) {
- return null;
- }
-
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/CPreprocessorAdapter.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/CPreprocessorAdapter.java
deleted file mode 100644
index ca82d49cfa3..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/CPreprocessorAdapter.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2013 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.dom.lrparser;
-
-import org.eclipse.cdt.core.parser.EndOfFileException;
-import org.eclipse.cdt.core.parser.IScanner;
-import org.eclipse.cdt.core.parser.OffsetLimitReachedException;
-
-import lpg.lpgjavaruntime.IToken;
-import lpg.lpgjavaruntime.Token;
-
-/**
- * Adapts the CPreprocessor from the CDT core for use with LPG based parsers.
- *
- * @author Mike Kucera
- * @noreference
- * TODO move into an internal package
- */
-public class CPreprocessorAdapter {
- /**
- * During content assist the preprocessor may return a completion token
- * which represents the identifier on which the user invoked content assist.
- * Then the preprocessor normally returns arbitrarily many end-of-completion
- * (EOC) tokens.
- *
- * A bottom-up parser cannot know ahead of time how many EOC tokens are
- * needed in order for the parse to complete successfully. So we pick
- * a number that seems arbitrarily large enough.
- */
- private static final int NUM_EOC_TOKENS = 50;
-
- private static final int DUMMY_TOKEN_KIND = 0;
- private static final int tCOMPLETION = org.eclipse.cdt.core.parser.IToken.tCOMPLETION;
-
- /**
- * Collect the tokens generated by the preprocessor.
- * TODO: should preprocessor.nextTokenRaw() be called instead?
- */
- public static void runCPreprocessor(IScanner preprocessor, ITokenCollector tokenCollector, IDOMTokenMap tokenMap) {
- // LPG requires that the token stream start with a dummy token
- tokenCollector.addToken(createDummyToken());
-
- org.eclipse.cdt.core.parser.IToken lastToken = null;
- try {
- while (true) {
- // the preprocessor throws EndOfFileException when it reaches the end of input
- org.eclipse.cdt.core.parser.IToken domToken = preprocessor.nextToken();
- processDOMToken(domToken, tokenCollector, tokenMap);
- lastToken = domToken;
-
- if (domToken.getType() == tCOMPLETION)
- break;
- }
- } catch (OffsetLimitReachedException e) {
- // preprocessor throws this when content assist is invoked inside a preprocessor directive
- org.eclipse.cdt.core.parser.IToken domToken = e.getFinalToken();
- assert domToken.getType() == tCOMPLETION;
- processDOMToken(domToken, tokenCollector, tokenMap);
- lastToken = domToken;
- } catch (EndOfFileException e) {
- // use thrown exception to break out of loop
- }
-
- // TODO
- // This computation is actually incorrect. The "offset" of the EOF token should
- // be equal to the size of the file. But since the CPreprocessor throws an exception when it
- // reaches the end we can't get this info. So we just use the offset of the last real token
- // that was returned.
- int eofTokenOffset = lastToken == null ? 0 : lastToken.getOffset();
-
- // LPG requires that the token stream end with an EOF token
- tokenCollector.addToken(createEOFToken(tokenMap, eofTokenOffset));
- }
-
- private static void processDOMToken(org.eclipse.cdt.core.parser.IToken domToken, ITokenCollector tokenCollector,
- IDOMTokenMap tokenMap) {
- int newKind = tokenMap.mapKind(domToken);
- tokenCollector.addToken(new LPGTokenAdapter(domToken, newKind));
-
- if (domToken.getType() == tCOMPLETION) {
- int offset = domToken.getOffset();
- for (int i = 0; i < NUM_EOC_TOKENS; i++)
- tokenCollector.addToken(createEOCToken(tokenMap, offset));
- }
- }
-
- private static IToken createEOCToken(IDOMTokenMap tokenMap, int offset) {
- return new Token(null, offset, offset + 1, tokenMap.getEOCTokenKind());
- }
-
- private static IToken createDummyToken() {
- return new Token(null, 0, 0, DUMMY_TOKEN_KIND);
- }
-
- private static IToken createEOFToken(IDOMTokenMap tokenMap, int offset) {
- return new Token(null, offset, offset + 1, tokenMap.getEOFTokenKind());
- }
-
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/IDOMTokenMap.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/IDOMTokenMap.java
deleted file mode 100644
index 911de12803b..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/IDOMTokenMap.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.dom.lrparser;
-
-import org.eclipse.cdt.core.parser.IToken;
-
-/**
- * Maps tokens returned by CPreprocessor to the corresponding
- * token kind used by an LPG based parser.
- *
- * @author Mike Kucera
- */
-public interface IDOMTokenMap {
-
- /**
- * Returns the LPG token kind for the given DOM token.
- * @throws NullPointerException if token is null
- */
- int mapKind(IToken token);
-
- /**
- * Returns the LPG token type for End Of File (TK_EOF_TOKEN) token.
- */
- int getEOFTokenKind();
-
- /**
- * Returns the LPG token type for End Of Completion (TK_EndOfCompletion) token.
- */
- int getEOCTokenKind();
-
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/IParser.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/IParser.java
deleted file mode 100644
index 97fad538d13..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/IParser.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.dom.lrparser;
-
-import org.eclipse.cdt.core.dom.ast.IASTCompletionNode;
-import org.eclipse.cdt.core.dom.ast.IASTNode;
-
-/**
- * Represents a parser that can be used by BaseExtensibleLanguage.
- *
- * @author Mike Kucera
- */
-public interface IParser<N extends IASTNode> {
-
- /**
- * Performs the actual parse.
- *
- * If there were any errors during the parse these will be represented in the
- * AST as problem nodes.
- *
- * If the parser encounters a completion token then a completion node
- * will be available via the getCompletionNode() method.
- */
- public N parse();
-
- /**
- * Returns the completion node if a completion token was encountered
- * during the parse, null otherwise.
- */
- public IASTCompletionNode getCompletionNode();
-
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/ISecondaryParser.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/ISecondaryParser.java
deleted file mode 100644
index 584c4ee8ee9..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/ISecondaryParser.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.dom.lrparser;
-
-import java.util.List;
-
-import org.eclipse.cdt.core.dom.ast.IASTNode;
-
-import lpg.lpgjavaruntime.IToken;
-
-public interface ISecondaryParser<N extends IASTNode> extends IParser<N> {
-
- /**
- * Set the list of tokens that will be parsed.
- *
- * The given list does not need to contain dummy and EOF tokens,
- * these will be added automatically.
- *
- * This method causes any tokens already contained in the parser
- * to be removed.
- *
- * This method is mainly used by secondary parsers that are called
- * from a main parser.
- *
- * @throws NullPointerException if tokens is null
- */
- public void setTokens(List<IToken> tokens);
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/ITokenCollector.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/ITokenCollector.java
deleted file mode 100644
index dd780f988bd..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/ITokenCollector.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.dom.lrparser;
-
-import lpg.lpgjavaruntime.IToken;
-
-/**
- * An LPG parser object is initialized with the list of tokens
- * before parsing is invoked.
- *
- * @author Mike Kucera
- */
-public interface ITokenCollector {
-
- /**
- * Used to add one token at a time to the parser.
- * If this method is used to add tokens then the dummy token
- * and the EOF token must be added by the client.
- *
- * This is really just an optimization, no intermediate data structures
- * are required between the preprocessor and the parser.
- *
- * @throws NullPointerException if token is null
- */
- public void addToken(IToken token);
-
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/LPGTokenAdapter.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/LPGTokenAdapter.java
deleted file mode 100644
index 0ea784d88d5..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/LPGTokenAdapter.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2015 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.dom.lrparser;
-
-import lpg.lpgjavaruntime.PrsStream;
-
-/**
- * The CPreprocessor from the CDT core returns tokens that
- * are of the type org.eclipse.cdt.core.parser.IToken,
- * however LPG wants the tokens to be of the type lpg.lpgjavaruntime.IToken.
- *
- * So these adapter objects are used to wrap the tokens returned
- * by CPreprocessor so that they can be used with LPG.
- *
- * @author Mike Kucera
- */
-public class LPGTokenAdapter implements lpg.lpgjavaruntime.IToken {
-
- /** The token object that is being wrapped */
- private final org.eclipse.cdt.core.parser.IToken token;
-
- private int tokenIndex;
- private int adjunctIndex;
-
- private int kind;
-
- public LPGTokenAdapter(org.eclipse.cdt.core.parser.IToken token, int parserKind) {
- this.token = token;
- this.kind = parserKind;
- }
-
- public org.eclipse.cdt.core.parser.IToken getWrappedToken() {
- return token;
- }
-
- @Override
- public int getAdjunctIndex() {
- return adjunctIndex;
- }
-
- @Override
- public int getColumn() {
- return 0;
- }
-
- @Override
- public int getEndColumn() {
- return 0;
- }
-
- @Override
- public int getEndLine() {
- return 0;
- }
-
- @Override
- public int getEndOffset() {
- return token.getEndOffset();
- }
-
- @Override
- public lpg.lpgjavaruntime.IToken[] getFollowingAdjuncts() {
- return null;
- }
-
- @Override
- public int getKind() {
- return kind;
- }
-
- @Override
- public int getLine() {
- return 0;
- }
-
- @Override
- public lpg.lpgjavaruntime.IToken[] getPrecedingAdjuncts() {
- return null;
- }
-
- @Override
- public PrsStream getPrsStream() {
- return null;
- }
-
- @Override
- public int getStartOffset() {
- return token.getOffset();
- }
-
- @Override
- public int getTokenIndex() {
- return tokenIndex;
- }
-
- @Override
- @Deprecated
- public String getValue(@SuppressWarnings("unused") char[] arg0) {
- return toString();
- }
-
- @Override
- public void setAdjunctIndex(int adjunctIndex) {
- this.adjunctIndex = adjunctIndex;
- }
-
- @Override
- public void setEndOffset(@SuppressWarnings("unused") int arg0) {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public void setKind(int kind) {
- this.kind = kind;
- }
-
- @Override
- public void setStartOffset(@SuppressWarnings("unused") int arg0) {
- throw new UnsupportedOperationException();
-
- }
-
- @Override
- public void setTokenIndex(int tokenIndex) {
- this.tokenIndex = tokenIndex;
- }
-
- @Override
- public String toString() {
- return token.toString();
- }
-
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/LRParserPlugin.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/LRParserPlugin.java
deleted file mode 100644
index 26e0eaa3315..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/LRParserPlugin.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.dom.lrparser;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Plugin;
-import org.eclipse.core.runtime.Status;
-import org.osgi.framework.BundleContext;
-
-public class LRParserPlugin extends Plugin {
-
- public static final String PLUGIN_ID = "org.eclipse.cdt.core.lrparser"; //$NON-NLS-1$
-
- private static LRParserPlugin plugin;
-
- @Override
- public void start(BundleContext context) throws Exception {
- super.start(context);
- plugin = this;
- }
-
- @Override
- public void stop(BundleContext context) throws Exception {
- try {
- // shutdown code goes here
- plugin = null;
- } finally {
- super.stop(context);
- }
- }
-
- /**
- * @noreference
- */
- public static IStatus createStatus(String msg, Throwable e) {
- return new Status(IStatus.ERROR, PLUGIN_ID, IStatus.ERROR, msg, e);
- }
-
- /**
- * @noreference
- */
- public static IStatus createStatus(Throwable e) {
- return createStatus(e.getMessage(), e);
- }
-
- /**
- * @noreference
- */
- public static void log(IStatus status) {
- plugin.getLog().log(status);
- }
-
- /**
- * @noreference
- */
- public static void logError(Throwable exception, String message) {
- log(new Status(IStatus.ERROR, PLUGIN_ID, IStatus.OK, message, exception));
- }
-
- /**
- * @noreference
- */
- public static void logError(Throwable exception) {
- logError(exception, exception.getMessage());
- }
-
- /**
- * @noreference
- */
- public static void logError(String message) {
- log(new Status(IStatus.ERROR, PLUGIN_ID, message));
- }
-
- /**
- * @noreference
- */
- public static void logInfo(String message) {
- log(new Status(IStatus.INFO, PLUGIN_ID, message));
- }
-
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/LRParserProperties.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/LRParserProperties.java
deleted file mode 100644
index c840d6e6443..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/LRParserProperties.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.dom.lrparser;
-
-@SuppressWarnings("nls")
-public final class LRParserProperties {
-
- /**
- * The LR parsers do not actually skip the parsing of function bodies,
- * but this option does have the effect of not generating AST nodes
- * for function bodies.
- *
- * TODO this is not implemented yet in the LR parser
- *
- * Possible values: "true", null
- */
- public static final String SKIP_FUNCTION_BODIES = "org.eclipse.cdt.core.dom.lrparser.skipFunctionBodies";
-
- /**
- * Instructs the parser not to create AST nodes for expressions
- * within aggregate initializers when they do not contain names.
- *
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=253690
- *
- * Possible values: "true", null
- */
- public static final String SKIP_TRIVIAL_EXPRESSIONS_IN_AGGREGATE_INITIALIZERS = "org.eclipse.cdt.core.dom.lrparser.skipTrivialExpressionsInAggregateInitializers";
-
- /**
- * The location of the translation unit as given by the CodeReader.
- */
- public static final String TRANSLATION_UNIT_PATH = "org.eclipse.cdt.core.dom.lrparser.translationUnitPath";
-
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/ScannerExtensionConfiguration.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/ScannerExtensionConfiguration.java
deleted file mode 100644
index f7d2b076892..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/ScannerExtensionConfiguration.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2015 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors: IBM Corporation - initial API and implementation
- ******************************************************************************/
-package org.eclipse.cdt.core.dom.lrparser;
-
-import org.eclipse.cdt.core.dom.parser.AbstractScannerExtensionConfiguration;
-
-/**
- * A minimalistic scanner configuration for the LR parser.
- *
- * @author Mike Kucera
- *
- */
-@SuppressWarnings("nls")
-public class ScannerExtensionConfiguration extends AbstractScannerExtensionConfiguration {
-
- private ScannerExtensionConfiguration() {
- addMacro("__STDC__", "1");
- }
-
- public static ScannerExtensionConfiguration createC() {
- ScannerExtensionConfiguration sec = new ScannerExtensionConfiguration();
- sec.addMacro("__null", "(void *)0");
- return sec;
- }
-
- public static ScannerExtensionConfiguration createCPP() {
- ScannerExtensionConfiguration sec = new ScannerExtensionConfiguration();
- sec.addMacro("__null", "0");
- return sec;
- }
-
- @Override
- public boolean support$InIdentifiers() {
- return true;
- }
-
- @Override
- public boolean supportUserDefinedLiterals() {
- return false;
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/ASTCompletionNode.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/ASTCompletionNode.java
deleted file mode 100644
index 36eb0556c25..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/ASTCompletionNode.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2015 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.dom.lrparser.action;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.cdt.core.dom.ast.IASTCompletionNode;
-import org.eclipse.cdt.core.dom.ast.IASTName;
-import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
-
-/**
- * An AST node that represents the location of content assist
- * in the source file.
- *
- * This node may contain the prefix text of an identifier up to the point. If
- * there is no prefix, the completion occurred at the point where a new token
- * would have begun.
- *
- * Contains a list of name nodes, each name represents an identifier
- * at the point where content assist was invoked. There is usually
- * a single name node, however if an ambiguity is detected then that section
- * of the source may be interpreted in more than one way (for example, as an expression then as a declaration).
- * This results in an ambiguity node in the tree and one name node for each of the ways it can be interpreted.
- *
- * The full AST may be accessed via getTranslationUnit() or by following
- * the parent pointers of the name nodes.
- *
- * @author Mike Kucera
- */
-public class ASTCompletionNode implements IASTCompletionNode {
-
- private final List<CompletionNameEntry> entries = new ArrayList<>();
-
- private final String prefix;
- private IASTTranslationUnit tu;
-
- /**
- * Creates a completion node.
- * @param prefix The completion prefix, set to null if the empty string is passed.
- */
- public ASTCompletionNode(String prefix, IASTTranslationUnit tu) {
- if ("".equals(prefix)) //$NON-NLS-1$
- prefix = null;
-
- this.prefix = prefix;
- this.tu = tu;
- }
-
- public ASTCompletionNode(String prefix) {
- this(prefix, null);
- }
-
- public void addName(IASTName name) {
- entries.add(new CompletionNameEntry(name, name.getParent()));
- }
-
- /**
- * Returns the length of the prefix.
- */
- @Override
- public int getLength() {
- return prefix == null ? 0 : prefix.length();
- }
-
- @Override
- public IASTName[] getNames() {
- IASTName[] names = new IASTName[entries.size()];
- for (int i = 0; i < entries.size(); ++i) {
- names[i] = entries.get(i).fName;
- }
- return names;
- }
-
- /**
- * If the point of completion was at the end of a potential identifier, this
- * string contains the text of that identifier.
- *
- * @returns a string of length >= 1 or null
- */
- @Override
- public String getPrefix() {
- return prefix;
- }
-
- public void setTranslationUnit(IASTTranslationUnit tu) {
- this.tu = tu;
- }
-
- @Override
- public IASTTranslationUnit getTranslationUnit() {
- return tu;
- }
-
- @Override
- public boolean containsName(IASTName name) {
- for (CompletionNameEntry entry : entries) {
- if (entry.fName == name) {
- return true;
- }
- }
- return false;
- }
-
- @Override
- public CompletionNameEntry[] getEntries() {
- return entries.toArray(new CompletionNameEntry[entries.size()]);
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/AbstractParserAction.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/AbstractParserAction.java
deleted file mode 100644
index 456ad6a8d03..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/AbstractParserAction.java
+++ /dev/null
@@ -1,213 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.dom.lrparser.action;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.cdt.core.dom.ast.IASTCompletionNode;
-import org.eclipse.cdt.core.dom.ast.IASTName;
-import org.eclipse.cdt.core.dom.ast.IASTNode;
-import org.eclipse.cdt.core.dom.lrparser.ISecondaryParser;
-import org.eclipse.cdt.internal.core.dom.parser.ASTNode;
-
-import lpg.lpgjavaruntime.IToken;
-
-@SuppressWarnings("restriction")
-public abstract class AbstractParserAction {
-
- /**
- * Used with very simple optional rules that just say
- * that some particular token or keyword is optional.
- * The presence of the PLACE_HOLDER on the stack means that the keyword
- * was parsed, the presence of null means the keyword wasn't parsed.
- *
- * @see BuildASTParserAction#consumePlaceHolder()
- * @see BuildASTParserAction#consumeEmpty()
- */
- protected static final Object PLACE_HOLDER = Boolean.TRUE; // any object will do
-
- /** Provides an interface to the token stream */
- protected final ITokenStream stream;
-
- /** Stack that holds the intermediate nodes as the AST is being built */
- protected final ScopedStack<Object> astStack;
-
- /** The completion node, only generated during a completion parse */
- protected ASTCompletionNode completionNode;
-
- /** Options that change the behavior of the parser actions */
- protected Map<String, String> properties = Collections.emptyMap();
-
- /**
- * Completion tokens are represented by different kinds by different parsers.
- */
- protected abstract boolean isCompletionToken(IToken token);
-
- protected abstract IASTName createName(char[] image);
-
- /**
- * Create a new parser action.
- * @param tu Root node of the AST, its list of declarations should be empty.
- * @throws NullPointerException if any of the parameters are null
- */
- public AbstractParserAction(ITokenStream parser, ScopedStack<Object> astStack) {
- if (parser == null)
- throw new NullPointerException("parser is null"); //$NON-NLS-1$
- if (astStack == null)
- throw new NullPointerException("astStack is null"); //$NON-NLS-1$
-
- this.stream = parser;
- this.astStack = astStack;
- }
-
- protected void setOffsetAndLength(IASTNode node) {
- int ruleOffset = stream.getLeftIToken().getStartOffset();
- int ruleLength = stream.getRightIToken().getEndOffset() - ruleOffset;
- ((ASTNode) node).setOffsetAndLength(ruleOffset, ruleLength < 0 ? 0 : ruleLength);
- }
-
- /**
- * Creates a IASTName node from an identifier token.
- * If the token is a completion token then it is added to the completion node.
- */
- protected IASTName createName(IToken token) {
- IASTName name = createName(token.toString().toCharArray()); // TODO, token.toCharArray();
- ParserUtil.setOffsetAndLength(name, token);
-
- if (isCompletionToken(token))
- addNameToCompletionNode(name, token.toString());
-
- return name;
- }
-
- public void setParserProperties(Map<String, String> properties) {
- this.properties = properties == null ? Collections.<String, String>emptyMap() : properties;
- }
-
- /**
- * Creates a completion node if one does not yet exist and adds the
- * given name to it.
- */
- protected void addNameToCompletionNode(IASTName name, String prefix) {
- if (completionNode == null) {
- completionNode = newCompletionNode(prefix);
- }
-
- completionNode.addName(name);
- }
-
- public ASTCompletionNode newCompletionNode(String prefix) {
- return new ASTCompletionNode(prefix);
- }
-
- /**
- * Returns the completion node if this is a completion parse, null otherwise.
- */
- public IASTCompletionNode getASTCompletionNode() {
- return completionNode;
- }
-
- /**
- * Returns the parse result.
- * @return
- */
- public IASTNode getParseResult() {
- return (IASTNode) astStack.peek();
- }
-
- /**
- * Runs the given parser on the given token list.
- *
- */
- protected <N extends IASTNode> N runSecondaryParser(ISecondaryParser<N> secondaryParser) {
- return runSecondaryParser(secondaryParser, stream.getRuleTokens());
- }
-
- /**
- * Runs the given parser on the tokens that make up the current rule.
- */
- protected <N extends IASTNode> N runSecondaryParser(ISecondaryParser<N> secondaryParser, List<IToken> tokens) {
- // the secondary parser will alter the token kinds, which will need to be undone
- int[] savedKinds = new int[tokens.size()];
-
- int i = 0;
- for (IToken token : tokens)
- savedKinds[i++] = token.getKind();
-
- secondaryParser.setTokens(tokens);
- N result = secondaryParser.parse();
-
- IASTCompletionNode compNode = secondaryParser.getCompletionNode();
- if (compNode != null) {
- for (IASTName name : compNode.getNames())
- addNameToCompletionNode(name, compNode.getPrefix());
- }
-
- // restore the token kinds
- i = 0;
- for (IToken token : tokens)
- token.setKind(savedKinds[i++]);
-
- return result;
- }
-
- /*************************************************************************************************************
- * Basic Actions
- ************************************************************************************************************/
-
- /**
- * Method that is called by the special <openscope> production
- * in order to create a new scope in the AST stack.
- */
- public void openASTScope() {
- astStack.openScope();
- }
-
- /**
- * Place null on the stack.
- * Usually called for optional element to indicate the element
- * was not parsed.
- */
- public void consumeEmpty() {
- astStack.push(null);
- }
-
- /**
- * Place a marker on the stack.
- * Usually used for very simple optional elements to indicate
- * the element was parsed. Usually the existence of an AST node
- * on the stack is used instead of the marker, but for simple
- * cases like an optional keyword this action is useful.
- */
- public void consumePlaceHolder() {
- astStack.push(PLACE_HOLDER);
- }
-
- /**
- * Just pops the stack, useful if you have a rule that generates
- * a node but you don't need the node.
- */
- public void consumeIgnore() {
- astStack.pop();
- }
-
- /**
- * Gets the current token and places it on the stack for later consumption.
- */
- public void consumeToken() {
- astStack.push(stream.getRightIToken());
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/BuildASTParserAction.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/BuildASTParserAction.java
deleted file mode 100644
index 5c5df984965..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/BuildASTParserAction.java
+++ /dev/null
@@ -1,1026 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2016 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.dom.lrparser.action;
-
-import static org.eclipse.cdt.core.dom.lrparser.action.ParserUtil.endOffset;
-import static org.eclipse.cdt.core.dom.lrparser.action.ParserUtil.length;
-import static org.eclipse.cdt.core.dom.lrparser.action.ParserUtil.offset;
-
-import java.util.List;
-
-import org.eclipse.cdt.core.dom.ast.IASTASMDeclaration;
-import org.eclipse.cdt.core.dom.ast.IASTArrayDeclarator;
-import org.eclipse.cdt.core.dom.ast.IASTArrayModifier;
-import org.eclipse.cdt.core.dom.ast.IASTArraySubscriptExpression;
-import org.eclipse.cdt.core.dom.ast.IASTBinaryExpression;
-import org.eclipse.cdt.core.dom.ast.IASTBreakStatement;
-import org.eclipse.cdt.core.dom.ast.IASTCaseStatement;
-import org.eclipse.cdt.core.dom.ast.IASTCastExpression;
-import org.eclipse.cdt.core.dom.ast.IASTCompoundStatement;
-import org.eclipse.cdt.core.dom.ast.IASTConditionalExpression;
-import org.eclipse.cdt.core.dom.ast.IASTContinueStatement;
-import org.eclipse.cdt.core.dom.ast.IASTDeclSpecifier;
-import org.eclipse.cdt.core.dom.ast.IASTDeclaration;
-import org.eclipse.cdt.core.dom.ast.IASTDeclarationStatement;
-import org.eclipse.cdt.core.dom.ast.IASTDeclarator;
-import org.eclipse.cdt.core.dom.ast.IASTDefaultStatement;
-import org.eclipse.cdt.core.dom.ast.IASTDoStatement;
-import org.eclipse.cdt.core.dom.ast.IASTEnumerationSpecifier;
-import org.eclipse.cdt.core.dom.ast.IASTEnumerationSpecifier.IASTEnumerator;
-import org.eclipse.cdt.core.dom.ast.IASTEqualsInitializer;
-import org.eclipse.cdt.core.dom.ast.IASTExpression;
-import org.eclipse.cdt.core.dom.ast.IASTExpressionList;
-import org.eclipse.cdt.core.dom.ast.IASTExpressionStatement;
-import org.eclipse.cdt.core.dom.ast.IASTFieldDeclarator;
-import org.eclipse.cdt.core.dom.ast.IASTFunctionCallExpression;
-import org.eclipse.cdt.core.dom.ast.IASTFunctionDeclarator;
-import org.eclipse.cdt.core.dom.ast.IASTGotoStatement;
-import org.eclipse.cdt.core.dom.ast.IASTIdExpression;
-import org.eclipse.cdt.core.dom.ast.IASTInitializer;
-import org.eclipse.cdt.core.dom.ast.IASTInitializerClause;
-import org.eclipse.cdt.core.dom.ast.IASTInitializerList;
-import org.eclipse.cdt.core.dom.ast.IASTLabelStatement;
-import org.eclipse.cdt.core.dom.ast.IASTLiteralExpression;
-import org.eclipse.cdt.core.dom.ast.IASTName;
-import org.eclipse.cdt.core.dom.ast.IASTNode;
-import org.eclipse.cdt.core.dom.ast.IASTNullStatement;
-import org.eclipse.cdt.core.dom.ast.IASTParameterDeclaration;
-import org.eclipse.cdt.core.dom.ast.IASTPointerOperator;
-import org.eclipse.cdt.core.dom.ast.IASTProblem;
-import org.eclipse.cdt.core.dom.ast.IASTProblemHolder;
-import org.eclipse.cdt.core.dom.ast.IASTReturnStatement;
-import org.eclipse.cdt.core.dom.ast.IASTSimpleDeclSpecifier;
-import org.eclipse.cdt.core.dom.ast.IASTSimpleDeclaration;
-import org.eclipse.cdt.core.dom.ast.IASTStatement;
-import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
-import org.eclipse.cdt.core.dom.ast.IASTTypeId;
-import org.eclipse.cdt.core.dom.ast.IASTTypeIdExpression;
-import org.eclipse.cdt.core.dom.ast.IASTUnaryExpression;
-import org.eclipse.cdt.core.dom.ast.IBinding;
-import org.eclipse.cdt.core.dom.ast.INodeFactory;
-import org.eclipse.cdt.core.dom.ast.IScope;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCastExpression;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTLiteralExpression;
-import org.eclipse.cdt.core.dom.lrparser.ISecondaryParser;
-import org.eclipse.cdt.core.dom.lrparser.LRParserProperties;
-import org.eclipse.cdt.core.dom.parser.IBuiltinBindingsProvider;
-import org.eclipse.cdt.core.index.IIndex;
-import org.eclipse.cdt.core.parser.IProblem;
-import org.eclipse.cdt.core.parser.IScanner;
-import org.eclipse.cdt.internal.core.dom.parser.ASTInternal;
-import org.eclipse.cdt.internal.core.dom.parser.ASTNode;
-import org.eclipse.cdt.internal.core.dom.parser.ASTQueries;
-import org.eclipse.cdt.internal.core.dom.parser.ASTTranslationUnit;
-import org.eclipse.cdt.internal.core.dom.parser.AbstractGNUSourceCodeParser;
-import org.eclipse.cdt.internal.core.dom.parser.IASTAmbiguousExpression;
-import org.eclipse.cdt.internal.core.dom.parser.IASTAmbiguousStatement;
-
-import lpg.lpgjavaruntime.IToken;
-
-/**
- * Parser semantic actions that are common to both C and C++.
- *
- * @author Mike Kucera
- */
-@SuppressWarnings("restriction")
-public abstract class BuildASTParserAction extends AbstractParserAction {
-
- /** Abstract factory for creating AST node objects */
- private final INodeFactory nodeFactory;
-
- /** Abstract factory for creating secondary parsers */
- private final ISecondaryParserFactory parserFactory;
-
- /**
- * Returns true if the token is an identifier.
- */
- protected abstract boolean isIdentifierToken(IToken token);
-
- protected IASTTranslationUnit tu = null;
-
- /**
- * Create a new parser action.
- * @param tu Root node of the AST, its list of declarations should be empty.
- * @throws NullPointerException if any of the parameters are null
- */
- public BuildASTParserAction(ITokenStream parser, ScopedStack<Object> astStack, INodeFactory nodeFactory,
- ISecondaryParserFactory parserFactory) {
- super(parser, astStack);
-
- if (nodeFactory == null)
- throw new NullPointerException("nodeFactory is null"); //$NON-NLS-1$
- if (parserFactory == null)
- throw new NullPointerException("parserFactory is null"); //$NON-NLS-1$
-
- this.nodeFactory = nodeFactory;
- this.parserFactory = parserFactory;
- }
-
- public void initializeTranslationUnit(IScanner scanner, IBuiltinBindingsProvider builtinBindingsProvider,
- IIndex index) {
- tu = nodeFactory.newTranslationUnit(scanner);
- tu.setIndex(index);
-
- // add built-in names to the scope
- if (builtinBindingsProvider != null) {
- IScope tuScope = tu.getScope();
- IBinding[] bindings = builtinBindingsProvider.getBuiltinBindings(tuScope);
- for (IBinding binding : bindings) {
- ASTInternal.addBinding(tuScope, binding);
- }
- }
-
- if (tu instanceof ASTTranslationUnit) {
- ((ASTTranslationUnit) tu).setLocationResolver(scanner.getLocationResolver());
- }
- }
-
- public void consumeTranslationUnit() {
- if (tu == null)
- tu = nodeFactory.newTranslationUnit(null);
-
- // can't close the outermost scope
- for (Object o : astStack.topScope()) {
- tu.addDeclaration((IASTDeclaration) o);
- }
- while (!astStack.isEmpty()) {
- astStack.pop();
- }
-
- // this is the same way that the DOM parser computes the length
- IASTDeclaration[] declarations = tu.getDeclarations();
- if (declarations.length != 0) {
- IASTNode d = declarations[declarations.length - 1];
- ParserUtil.setOffsetAndLength(tu, 0, offset(d) + length(d));
- }
-
- resolveAmbiguityNodes(tu);
- tu.freeze();
-
- astStack.push(tu);
- }
-
- @Override
- public ASTCompletionNode newCompletionNode(String prefix) {
- return new ASTCompletionNode(prefix, tu);
- }
-
- /**
- * Removes ambiguity nodes from the AST by resolving them.
- *
- * @see AbstractGNUSourceCodeParser#resolveAmbiguities()
- */
- private static void resolveAmbiguityNodes(IASTTranslationUnit tu) {
- if (tu instanceof ASTTranslationUnit) {
- ((ASTTranslationUnit) tu).resolveAmbiguities();
- }
- }
-
- /**
- * Consumes a single identifier token.
- */
- public void consumeIdentifierName() {
- astStack.push(createName(stream.getRightIToken()));
- }
-
- /**
- * block_item ::= declaration | statement
- *
- * TODO, be careful where exactly in the grammar this is called, it may be called unnecessarily
- */
- public void consumeStatementDeclarationWithDisambiguation() {
- IASTDeclaration decl = (IASTDeclaration) astStack.pop();
- IASTDeclarationStatement declarationStatement = nodeFactory.newDeclarationStatement(decl);
- setOffsetAndLength(declarationStatement);
-
- // attempt to also parse the tokens as an expression
- IASTExpressionStatement expressionStatement = null;
- if (decl instanceof IASTSimpleDeclaration) {
- List<IToken> expressionTokens = stream.getRuleTokens();
- expressionTokens = expressionTokens.subList(0, expressionTokens.size() - 1); // remove the semicolon at the end
-
- ISecondaryParser<IASTExpression> expressionParser = parserFactory.getExpressionParser(stream, properties);
- IASTExpression expr = runSecondaryParser(expressionParser, expressionTokens);
-
- if (expr != null) { // the parse may fail
- expressionStatement = nodeFactory.newExpressionStatement(expr);
- setOffsetAndLength(expressionStatement);
- }
- }
-
- List<IToken> tokens = stream.getRuleTokens();
-
- IASTNode result;
- if (expressionStatement == null)
- result = declarationStatement;
- else if (expressionStatement.getExpression() instanceof IASTFunctionCallExpression)
- result = expressionStatement;
- else if (tokens.size() == 2 && (isCompletionToken(tokens.get(0)) || isIdentifierToken(tokens.get(0)))) // identifier followed by semicolon
- result = expressionStatement;
- else if (isImplicitInt(decl))
- result = expressionStatement;
- else {
- result = createAmbiguousStatement(declarationStatement, expressionStatement);
- setOffsetAndLength(result);
- }
-
- astStack.push(result);
- }
-
- protected abstract IASTAmbiguousStatement createAmbiguousStatement(IASTStatement... statements);
-
- /**
- * Wrap a declaration in a DeclarationStatement.
- */
- public void consumeStatementDeclaration() {
- IASTDeclaration decl = (IASTDeclaration) astStack.pop();
- IASTDeclarationStatement declarationStatement = nodeFactory.newDeclarationStatement(decl);
- setOffsetAndLength(declarationStatement);
- astStack.push(declarationStatement);
- }
-
- /**
- * Returns true if the given declaration has unspecified type,
- * in this case the type defaults to int and is know as "implicit int".
- *
- * With implicit int a lot of language constructs can be accidentally parsed
- * as declarations:
- *
- * eg) x = 1;
- * Should be an assignment statement but can also be parsed as a declaration
- * of a variable x, of unspecified type, initialized to 1.
- *
- * These cases are easy to detect (using this method) and the wrong interpretation
- * as a declaration is discarded.
- */
- protected static boolean isImplicitInt(IASTDeclaration declaration) {
- if (declaration instanceof IASTSimpleDeclaration) {
- IASTDeclSpecifier declSpec = ((IASTSimpleDeclaration) declaration).getDeclSpecifier();
- if (declSpec instanceof IASTSimpleDeclSpecifier
- && ((IASTSimpleDeclSpecifier) declSpec).getType() == IASTSimpleDeclSpecifier.t_unspecified) {
- return true;
- }
- }
- return false;
- }
-
- /**
- * @param kind One of the kind flags from IASTLiteralExpression or ICPPASTLiteralExpression
- * @see IASTLiteralExpression
- * @see ICPPASTLiteralExpression
- */
- public void consumeExpressionLiteral(int kind) {
- IToken token = stream.getRightIToken();
- String rep = token.toString();
-
- // Strip the quotes from string literals, this is just to be consistent
- // with the dom parser (i.e. to make a test pass)
- // if(kind == IASTLiteralExpression.lk_string_literal &&
- // rep.startsWith("\"") && rep.endsWith("\"")) {
- // rep = rep.substring(1, rep.length()-1);
- // }
-
- IASTLiteralExpression expr = nodeFactory.newLiteralExpression(kind, rep);
- ParserUtil.setOffsetAndLength(expr, token);
- astStack.push(expr);
- }
-
- public void consumeExpressionBracketed() {
- IASTExpression operand = (IASTExpression) astStack.pop();
- IASTUnaryExpression expr = nodeFactory.newUnaryExpression(IASTUnaryExpression.op_bracketedPrimary, operand);
- setOffsetAndLength(expr);
- astStack.push(expr);
- }
-
- public void consumeExpressionID() {
- IASTName name = createName(stream.getLeftIToken());
- IASTIdExpression expr = nodeFactory.newIdExpression(name);
- setOffsetAndLength(expr);
- astStack.push(expr);
- }
-
- public void consumeExpressionName() {
- IASTName name = (IASTName) astStack.pop();
- IASTIdExpression expr = nodeFactory.newIdExpression(name);
- setOffsetAndLength(expr);
- astStack.push(expr);
- }
-
- /**
- * expression ::= <openscope-ast> expression_list_actual
- */
- public void consumeExpressionList() {
- List<Object> expressions = astStack.closeScope();
- if (expressions.size() == 1) {
- astStack.push(expressions.get(0));
- } else {
- IASTExpressionList exprList = nodeFactory.newExpressionList();
-
- for (Object o : expressions) {
- exprList.addExpression((IASTExpression) o);
- }
-
- setOffsetAndLength(exprList);
- astStack.push(exprList);
- }
- }
-
- /**
- * postfix_expression ::= postfix_expression '[' expression ']'
- */
- public void consumeExpressionArraySubscript() {
- IASTExpression subscript = (IASTExpression) astStack.pop();
- IASTExpression arrayExpr = (IASTExpression) astStack.pop();
- IASTArraySubscriptExpression expr = nodeFactory.newArraySubscriptExpression(arrayExpr, subscript);
- setOffsetAndLength(expr);
- astStack.push(expr);
- }
-
- /**
- * postfix_expression ::= postfix_expression '(' expression_list_opt ')'
- */
- public void consumeExpressionFunctionCall() {
- IASTExpression argList = (IASTExpression) astStack.pop(); // may be null
- IASTExpression idExpr = (IASTExpression) astStack.pop();
-
- IASTFunctionCallExpression expr = nodeFactory.newFunctionCallExpression(idExpr, argList);
- setOffsetAndLength(expr);
- astStack.push(expr);
- }
-
- /**
- * @param operator constant for {@link ICPPASTCastExpression}
- */
- public void consumeExpressionCast(int operator) {
- IASTExpression operand = (IASTExpression) astStack.pop();
- IASTTypeId typeId = (IASTTypeId) astStack.pop();
- IASTCastExpression expr = nodeFactory.newCastExpression(operator, typeId, operand);
- setOffsetAndLength(expr);
-
- IASTExpression alternateExpr = null;
- if (operator == IASTCastExpression.op_cast) { // don't reparse for dynamic_cast etc as those are not ambiguous
- // try parsing as non-cast to resolve ambiguities
- ISecondaryParser<IASTExpression> secondaryParser = parserFactory.getNoCastExpressionParser(stream,
- properties);
- alternateExpr = runSecondaryParser(secondaryParser);
- }
-
- if (alternateExpr == null)
- astStack.push(expr);
- else {
- IASTNode ambiguityNode = createAmbiguousExpression(expr, alternateExpr);
- setOffsetAndLength(ambiguityNode);
- astStack.push(ambiguityNode);
- }
- }
-
- protected abstract IASTAmbiguousExpression createAmbiguousExpression(IASTExpression... expressions);
-
- /**
- * Lots of rules, no need to list them.
- * @param operator From IASTUnaryExpression
- */
- public void consumeExpressionUnaryOperator(int operator) {
- IASTExpression operand = (IASTExpression) astStack.pop();
- IASTUnaryExpression expr = nodeFactory.newUnaryExpression(operator, operand);
- setOffsetAndLength(expr);
- astStack.push(expr);
- }
-
- /**
- * unary_operation ::= 'sizeof' '(' type_name ')'
- * @see consumeExpressionUnaryOperator For the other use of sizeof
- */
- public void consumeExpressionTypeId(int operator) {
- IASTTypeId typeId = (IASTTypeId) astStack.pop();
- IASTTypeIdExpression expr = nodeFactory.newTypeIdExpression(operator, typeId);
- setOffsetAndLength(expr);
-
- // try parsing as an expression to resolve ambiguities
- ISecondaryParser<IASTExpression> secondaryParser = parserFactory.getSizeofExpressionParser(stream, properties);
- IASTExpression alternateExpr = runSecondaryParser(secondaryParser);
-
- if (alternateExpr == null)
- astStack.push(expr);
- else if (isFunctionType(expr)) // bug 252243
- astStack.push(alternateExpr);
- else {
- IASTNode ambiguityNode = createAmbiguousExpression(expr, alternateExpr);
- setOffsetAndLength(ambiguityNode);
- astStack.push(ambiguityNode);
- }
- }
-
- private static boolean isFunctionType(IASTExpression expr) {
- if (expr instanceof IASTTypeIdExpression) {
- IASTTypeId typeId = ((IASTTypeIdExpression) expr).getTypeId();
- return typeId.getAbstractDeclarator() instanceof IASTFunctionDeclarator;
- }
- return false;
- }
-
- /**
- * Lots of rules, no need to list them all.
- * @param op Field from IASTBinaryExpression
- */
- public void consumeExpressionBinaryOperator(int op) {
- IASTExpression expr2 = (IASTExpression) astStack.pop();
- IASTExpression expr1 = (IASTExpression) astStack.pop();
- IASTBinaryExpression binExpr = nodeFactory.newBinaryExpression(op, expr1, expr2);
- setOffsetAndLength(binExpr);
- astStack.push(binExpr);
- }
-
- /**
- * conditional_expression ::= logical_OR_expression '?' expression ':' conditional_expression
- */
- public void consumeExpressionConditional() {
- IASTExpression expr3 = (IASTExpression) astStack.pop();
- IASTExpression expr2 = (IASTExpression) astStack.pop();
- IASTExpression expr1 = (IASTExpression) astStack.pop();
- IASTConditionalExpression condExpr = nodeFactory.newConditionalExpession(expr1, expr2, expr3);
- setOffsetAndLength(condExpr);
- astStack.push(condExpr);
- }
-
- /**
- * labeled_statement ::= label_identifier ':' statement
- * label_identifier ::= identifier
- */
- public void consumeStatementLabeled() {
- IASTStatement body = (IASTStatement) astStack.pop();
- IASTName label = createName(stream.getLeftIToken());
-
- IASTLabelStatement stat = nodeFactory.newLabelStatement(label, body);
- setOffsetAndLength(stat);
- astStack.push(stat);
- }
-
- /**
- * labeled_statement ::= 'case' constant_expression ':' statement
- */
- public void consumeStatementCase() {
- IASTStatement body = (IASTStatement) astStack.pop();
- IASTExpression expr = (IASTExpression) astStack.pop();
-
- IASTCaseStatement caseStatement = nodeFactory.newCaseStatement(expr);
- setOffsetAndLength(caseStatement); // TODO this is wrong, need to adjust length to end of colon
-
- // this is a hackey fix because case statements are not modeled correctly in the AST
- IASTCompoundStatement compound = nodeFactory.newCompoundStatement();
- setOffsetAndLength(compound);
- compound.addStatement(caseStatement);
- compound.addStatement(body);
-
- astStack.push(compound);
- }
-
- /**
- * labeled_statement ::= 'default' ':' <openscope-ast> statement
- */
- public void consumeStatementDefault() {
- IASTStatement body = (IASTStatement) astStack.pop();
-
- IASTDefaultStatement stat = nodeFactory.newDefaultStatement();
- List<IToken> tokens = stream.getRuleTokens();
- IToken defaultToken = tokens.get(0);
- IToken colonToken = tokens.get(1);
- ParserUtil.setOffsetAndLength(stat, offset(defaultToken), offset(colonToken) - offset(defaultToken) + 1);
-
- IASTCompoundStatement compound = nodeFactory.newCompoundStatement();
- setOffsetAndLength(compound);
- compound.addStatement(stat);
- compound.addStatement(body);
-
- astStack.push(compound);
- }
-
- /**
- * expression_statement ::= ';'
- */
- public void consumeStatementNull() {
- IASTNullStatement stat = nodeFactory.newNullStatement();
- setOffsetAndLength(stat);
- astStack.push(stat);
- }
-
- /**
- * expression_statement ::= expression ';'
- */
- public void consumeStatementExpression() {
- IASTExpression expr = (IASTExpression) astStack.pop();
- IASTExpressionStatement stat = nodeFactory.newExpressionStatement(expr);
- setOffsetAndLength(stat);
- astStack.push(stat);
- }
-
- /**
- * compound_statement ::= <openscope> '{' block_item_list '}'
- *
- * block_item_list ::= block_item | block_item_list block_item
- */
- public void consumeStatementCompoundStatement(boolean hasStatementsInBody) {
- IASTCompoundStatement block = nodeFactory.newCompoundStatement();
-
- if (hasStatementsInBody) {
- for (Object o : astStack.closeScope()) {
- block.addStatement((IASTStatement) o);
- }
- }
-
- setOffsetAndLength(block);
- astStack.push(block);
- }
-
- /**
- * iteration_statement_matched
- * ::= 'do' statement 'while' '(' expression ')' ';'
- * | 'do' statement
- */
- public void consumeStatementDoLoop(boolean hasWhileBlock) {
- IASTExpression condition = hasWhileBlock ? (IASTExpression) astStack.pop() : null;
- IASTStatement body = (IASTStatement) astStack.pop();
- IASTDoStatement stat = nodeFactory.newDoStatement(body, condition);
- setOffsetAndLength(stat);
- astStack.push(stat);
- }
-
- /**
- * jump_statement ::= goto goto_identifier ';'
- */
- public void consumeStatementGoto() {
- IASTName name = createName(stream.getRuleTokens().get(1));
- IASTGotoStatement gotoStat = nodeFactory.newGotoStatement(name);
- setOffsetAndLength(gotoStat);
- astStack.push(gotoStat);
- }
-
- /**
- * jump_statement ::= continue ';'
- */
- public void consumeStatementContinue() {
- IASTContinueStatement stat = nodeFactory.newContinueStatement();
- setOffsetAndLength(stat);
- astStack.push(stat);
- }
-
- /**
- * jump_statement ::= break ';'
- */
- public void consumeStatementBreak() {
- IASTBreakStatement stat = nodeFactory.newBreakStatement();
- setOffsetAndLength(stat);
- astStack.push(stat);
- }
-
- /**
- * jump_statement ::= return ';'
- * jump_statement ::= return expression ';'
- */
- public void consumeStatementReturn(boolean hasExpr) {
- IASTExpression expr = hasExpr ? (IASTExpression) astStack.pop() : null;
- IASTReturnStatement returnStat = nodeFactory.newReturnStatement(expr);
- setOffsetAndLength(returnStat);
- astStack.push(returnStat);
- }
-
- /**
- * type_name ::= specifier_qualifier_list
- * | specifier_qualifier_list abstract_declarator
- */
- public void consumeTypeId(boolean hasDeclarator) {
- IASTDeclarator declarator;
- if (hasDeclarator)
- declarator = (IASTDeclarator) astStack.pop();
- else {
- declarator = nodeFactory.newDeclarator(nodeFactory.newName());
- ParserUtil.setOffsetAndLength(declarator, stream.getRightIToken().getEndOffset(), 0);
- }
-
- IASTDeclSpecifier declSpecifier = (IASTDeclSpecifier) astStack.pop();
- IASTTypeId typeId = nodeFactory.newTypeId(declSpecifier, declarator);
- setOffsetAndLength(typeId);
- astStack.push(typeId);
- }
-
- /**
- * declarator
- * ::= <openscope-ast> ptr_operator_seq direct_declarator
- *
- * abstract_declarator
- * ::= <openscope-ast> ptr_operator_seq
- * | <openscope-ast> ptr_operator_seq direct_declarator
- */
- public void consumeDeclaratorWithPointer(boolean hasDeclarator) {
- IASTDeclarator decl;
- if (hasDeclarator)
- decl = (IASTDeclarator) astStack.pop();
- else
- decl = nodeFactory.newDeclarator(nodeFactory.newName());
-
- for (Object pointer : astStack.closeScope())
- decl.addPointerOperator((IASTPointerOperator) pointer);
-
- setOffsetAndLength(decl);
- astStack.push(decl);
- }
-
- /**
- * init_declarator
- * ::= declarator initializer
- *
- * @param hasDeclarator in C++ its possible for a parameter declaration to specifiy
- * a default value without also specifying a named declarator
- */
- public void consumeDeclaratorWithInitializer(boolean hasDeclarator) {
- IASTInitializer initializer = (IASTInitializer) astStack.pop();
-
- IASTDeclarator declarator;
- if (hasDeclarator) {
- declarator = (IASTDeclarator) astStack.peek();
- } else {
- IASTName emptyName = nodeFactory.newName();
- declarator = nodeFactory.newDeclarator(emptyName);
- setOffsetAndLength(emptyName);
- astStack.push(declarator);
- }
-
- declarator.setInitializer(initializer);
- setOffsetAndLength(declarator); // adjust the length to include the initializer
- }
-
- /**
- * asm_definition
- * ::= 'asm' '(' 'stringlit' ')' ';'
- */
- public void consumeDeclarationASM() {
- String s = stream.getRuleTokens().get(2).toString();
- IASTASMDeclaration asm = nodeFactory.newASMDeclaration(s);
-
- setOffsetAndLength(asm);
- astStack.push(asm);
- }
-
- /**
- * parameter_declaration ::= declaration_specifiers declarator
- * | declaration_specifiers abstract_declarator
- */
- public void consumeParameterDeclaration() {
- IASTDeclarator declarator = (IASTDeclarator) astStack.pop();
- IASTDeclSpecifier declSpec = (IASTDeclSpecifier) astStack.pop();
- IASTParameterDeclaration declaration = nodeFactory.newParameterDeclaration(declSpec, declarator);
- setOffsetAndLength(declaration);
- astStack.push(declaration);
- }
-
- /**
- * parameter_declaration ::= declaration_specifiers
- */
- public void consumeParameterDeclarationWithoutDeclarator() {
- // offsets need to be calculated differently in this case
- final int endOffset = stream.getRightIToken().getEndOffset();
-
- IASTName name = nodeFactory.newName();
- ParserUtil.setOffsetAndLength(name, endOffset, 0);
-
- // it appears that a declarator is always required in the AST here
- IASTDeclarator declarator = nodeFactory.newDeclarator(name);
- ParserUtil.setOffsetAndLength(declarator, endOffset, 0);
-
- IASTDeclSpecifier declSpec = (IASTDeclSpecifier) astStack.pop();
- IASTParameterDeclaration declaration = nodeFactory.newParameterDeclaration(declSpec, declarator);
-
- setOffsetAndLength(declaration);
- astStack.push(declaration);
- }
-
- /**
- * TODO: do I really want to share declaration rules between the two parsers.
- * Even if there is potential for reuse it still may be cleaner to leave the
- * common stuff to just simple expressions and statements.
- *
- * For C99:
- *
- * declaration ::= declaration_specifiers <openscope> init_declarator_list ';'
- * declaration ::= declaration_specifiers ';'
- *
- *
- * For C++:
- *
- * simple_declaration
- * ::= declaration_specifiers_opt <openscope-ast> init_declarator_list_opt ';'
- *
- *
- * TODO Make both grammars the same here.
- */
- // public void consumeDeclarationSimple(boolean hasDeclaratorList) {
- // if(TRACE_ACTIONS) DebugUtil.printMethodTrace();
- //
- // List<Object> declarators = (hasDeclaratorList) ? astStack.closeScope() : Collections.emptyList();
- // IASTDeclSpecifier declSpecifier = (IASTDeclSpecifier) astStack.pop(); // may be null
- //
- // // do not generate nodes for extra EOC tokens
- // if(matchTokens(parser.getRuleTokens(), CPPParsersym.TK_EndOfCompletion))
- // return;
- //
- // if(declSpecifier == null) { // can happen if implicit int is used
- // declSpecifier = nodeFactory.newSimpleDeclSpecifier();
- // setOffsetAndLength(declSpecifier, parser.getLeftIToken().getStartOffset(), 0);
- // }
- //
- // IASTSimpleDeclaration declaration = nodeFactory.newSimpleDeclaration(declSpecifier);
- //
- // for(Object declarator : declarators)
- // declaration.addDeclarator((IASTDeclarator)declarator);
- //
- // setOffsetAndLength(declaration);
- // astStack.push(declaration);
- //
- // if(TRACE_AST_STACK) System.out.println(astStack);
- // }
-
- /**
- * direct_declarator ::= '(' declarator ')'
- */
- public void consumeDirectDeclaratorBracketed() {
- IASTDeclarator nested = (IASTDeclarator) astStack.pop();
- IASTDeclarator declarator = nodeFactory.newDeclarator(nodeFactory.newName());
- declarator.setNestedDeclarator(nested);
- setOffsetAndLength(declarator);
- astStack.push(declarator);
- }
-
- /**
- * direct_declarator ::= declarator_id_name
- */
- public void consumeDirectDeclaratorIdentifier() {
- IASTName name = (IASTName) astStack.pop();
- IASTDeclarator declarator = nodeFactory.newDeclarator(name);
- setOffsetAndLength(declarator);
- astStack.push(declarator);
- }
-
- /**
- * array_modifier
- * ::= '[' ']'
- * | '[' assignment_expression ']'
- */
- public void consumeDirectDeclaratorArrayModifier(boolean hasAssignmentExpr) {
- IASTExpression expr = hasAssignmentExpr ? (IASTExpression) astStack.pop() : null;
- IASTArrayModifier arrayModifier = nodeFactory.newArrayModifier(expr);
- setOffsetAndLength(arrayModifier);
- astStack.push(arrayModifier);
- }
-
- /**
- * When the identifier part of a declarator is parsed it will put a plain IASTDeclarator on the stack.
- * When the array modifier part is parsed we will need to throw away the plain
- * declarator and replace it with an array declarator. If its a multidimensional array then
- * the additional array modifiers will need to be added to the array declarator.
- * Special care is taken for nested declarators.
- */
- protected void addArrayModifier(IASTArrayModifier arrayModifier) {
- IASTDeclarator node = (IASTDeclarator) astStack.pop();
-
- // Its a nested declarator so create an new ArrayDeclarator
- if (node.getNestedDeclarator() != null) { //node.getPropertyInParent() == IASTDeclarator.NESTED_DECLARATOR) {
- IASTArrayDeclarator declarator = nodeFactory.newArrayDeclarator(nodeFactory.newName());
- IASTDeclarator nested = node;
- declarator.setNestedDeclarator(nested);
-
- int offset = offset(nested);
- int length = endOffset(arrayModifier) - offset;
- ParserUtil.setOffsetAndLength(declarator, offset, length);
-
- declarator.addArrayModifier(arrayModifier);
- astStack.push(declarator);
- }
- // There is already an array declarator so just add the modifier to it
- else if (node instanceof IASTArrayDeclarator) {
- IASTArrayDeclarator decl = (IASTArrayDeclarator) node;
- ((ASTNode) decl).setLength(endOffset(arrayModifier) - offset(decl));
-
- decl.addArrayModifier(arrayModifier);
- astStack.push(decl);
- }
- // The declarator is an identifier so create a new array declarator
- else {
- IASTName name = node.getName();
- IASTArrayDeclarator decl = nodeFactory.newArrayDeclarator(name);
-
- int offset = offset(name);
- int length = endOffset(arrayModifier) - offset;
- ParserUtil.setOffsetAndLength(decl, offset, length);
-
- decl.addArrayModifier(arrayModifier);
- astStack.push(decl);
- }
- }
-
- /**
- * Pops a simple declarator from the stack, converts it into
- * a FunctionDeclator, then pushes it.
- * TODO: is this the best way of doing this?
- * TODO, rename this method, its an accidental overload
- */
- protected void addFunctionModifier(IASTFunctionDeclarator declarator, int endOffset) {
- IASTDeclarator decl = (IASTDeclarator) astStack.pop();
-
- if (decl.getNestedDeclarator() != null) {
- decl = decl.getNestedDeclarator(); // need to remove one level of nesting for function pointers
- declarator.setNestedDeclarator(decl);
- declarator.setName(nodeFactory.newName());
- int offset = offset(decl);
- ParserUtil.setOffsetAndLength(declarator, offset, endOffset - offset);
- astStack.push(declarator);
- } else {
- IASTName name = decl.getName();
- if (name == null) {
- name = nodeFactory.newName();
- }
- declarator.setName(name);
-
- IASTPointerOperator[] pointers = decl.getPointerOperators();
- for (IASTPointerOperator pointer : pointers) {
- declarator.addPointerOperator(pointer);
- }
-
- int offset = offset(name); // TODO
- ParserUtil.setOffsetAndLength(declarator, offset, endOffset - offset);
- astStack.push(declarator);
- }
- }
-
- // TODO why is this here
- // /**
- // * direct_declarator ::= direct_declarator array_modifier
- // * consume the direct_declarator part and add the array modifier
- // */
- // public void consumeDirectDeclaratorArrayDeclarator() {
- // if(TRACE_ACTIONS) DebugUtil.printMethodTrace();
- //
- // IASTArrayModifier arrayModifier = (IASTArrayModifier) astStack.pop();
- // addArrayModifier(arrayModifier);
- // }
-
- /**
- * direct_abstract_declarator
- * ::= array_modifier
- * | direct_abstract_declarator array_modifier
- */
- public void consumeDirectDeclaratorArrayDeclarator(boolean hasDeclarator) {
- IASTArrayModifier arrayModifier = (IASTArrayModifier) astStack.pop();
-
- if (hasDeclarator) {
- addArrayModifier(arrayModifier);
- } else {
- IASTArrayDeclarator decl = nodeFactory.newArrayDeclarator(nodeFactory.newName());
- decl.addArrayModifier(arrayModifier);
- setOffsetAndLength(decl);
- astStack.push(decl);
- }
- }
-
- /**
- * enum_specifier ::= 'enum' '{' <openscope> enumerator_list_opt '}'
- * | 'enum' enum_identifier '{' <openscope> enumerator_list_opt '}'
- */
- public void consumeTypeSpecifierEnumeration(boolean hasIdent) {
- IASTName name = (hasIdent) ? createName(stream.getRuleTokens().get(1)) : nodeFactory.newName();
-
- IASTEnumerationSpecifier enumSpec = nodeFactory.newEnumerationSpecifier(name);
-
- for (Object o : astStack.closeScope())
- enumSpec.addEnumerator((IASTEnumerator) o);
-
- setOffsetAndLength(enumSpec);
- astStack.push(enumSpec);
- }
-
- /**
- * enumerator ::= enum_identifier
- * | enum_identifier '=' constant_expression
- */
- public void consumeEnumerator(boolean hasInitializer) {
- IASTName name = createName(stream.getLeftIToken());
-
- IASTExpression value = null;
- if (hasInitializer)
- value = (IASTExpression) astStack.pop();
-
- IASTEnumerator enumerator = nodeFactory.newEnumerator(name, value);
- setOffsetAndLength(enumerator);
- astStack.push(enumerator);
- }
-
- private int initializerListNestingLevel = 0;
-
- public void initializerListStart() {
- initializerListNestingLevel++;
- }
-
- public void initializerListEnd() {
- initializerListNestingLevel--;
- }
-
- /**
- * initializer ::= assignment_expression
- */
- public void consumeInitializer() {
- //CDT_70_FIX_FROM_50-#4
- IASTInitializerClause initClause = (IASTInitializerClause) astStack.pop();
- if (initClause instanceof IASTExpression) {
- if (discardInitializer((IASTExpression) initClause)) {
- astStack.push(null);
- return;
- }
- }
- //CDT_70_FIX_FROM_50-#2
- //IASTInitializerExpression initializer = nodeFactory.newInitializerExpression(expr);
- IASTEqualsInitializer initializer = nodeFactory.newEqualsInitializer(initClause);
- setOffsetAndLength(initializer);
- astStack.push(initializer);
- }
-
- private boolean discardInitializer(IASTExpression expression) {
- return initializerListNestingLevel > 0
- && Boolean.parseBoolean(
- properties.get(LRParserProperties.SKIP_TRIVIAL_EXPRESSIONS_IN_AGGREGATE_INITIALIZERS))
- && !ASTQueries.canContainName(expression);
- }
-
- /**
- * initializer ::= '{' <openscope> initializer_list '}'
- * | '{' <openscope> initializer_list ',' '}'
- */
- public void consumeInitializerList() {
- IASTInitializerList list = nodeFactory.newInitializerList();
-
- for (Object o : astStack.closeScope())
- list.addInitializer((IASTInitializer) o);
-
- setOffsetAndLength(list);
- astStack.push(list);
- }
-
- /**
- * struct_declarator
- * ::= ':' constant_expression
- * | declarator ':' constant_expression
- */
- public void consumeBitField(boolean hasDeclarator) {
- IASTExpression expr = (IASTExpression) astStack.pop();
-
- IASTName name;
- if (hasDeclarator) // it should have been parsed into a regular declarator
- name = ((IASTDeclarator) astStack.pop()).getName();
- else
- name = nodeFactory.newName();
-
- IASTFieldDeclarator fieldDecl = nodeFactory.newFieldDeclarator(name, expr);
- setOffsetAndLength(fieldDecl);
- astStack.push(fieldDecl);
- }
-
- /**
- * statement ::= ERROR_TOKEN
- */
- public void consumeStatementProblem() {
- consumeProblem(nodeFactory.newProblemStatement(null));
- }
-
- /**
- * assignment_expression ::= ERROR_TOKEN
- * constant_expression ::= ERROR_TOKEN
- */
- public void consumeExpressionProblem() {
- consumeProblem(nodeFactory.newProblemExpression(null));
- }
-
- /**
- * external_declaration ::= ERROR_TOKEN
- */
- public void consumeDeclarationProblem() {
- consumeProblem(nodeFactory.newProblemDeclaration(null));
- }
-
- private void consumeProblem(IASTProblemHolder problemHolder) {
- IASTProblem problem = nodeFactory.newProblem(IProblem.SYNTAX_ERROR, new char[0], true);
- problemHolder.setProblem(problem);
- setOffsetAndLength(problem);
- setOffsetAndLength((ASTNode) problemHolder);
- astStack.push(problemHolder);
- }
-
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/ISecondaryParserFactory.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/ISecondaryParserFactory.java
deleted file mode 100644
index 1a4b03fb744..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/ISecondaryParserFactory.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.dom.lrparser.action;
-
-import java.util.Map;
-
-import org.eclipse.cdt.core.dom.ast.IASTExpression;
-import org.eclipse.cdt.core.dom.lrparser.ISecondaryParser;
-
-/**
- * Some ambiguities are resolved by spawning a secondary parser
- * to re-parse a sequence of tokens using a modified grammar.
- * This factory is used to create these secondary parsers.
- *
- * @author Mike Kucera
- */
-public interface ISecondaryParserFactory {
-
- /**
- * Get the parser that will recognize expressions.
- */
- ISecondaryParser<IASTExpression> getExpressionParser(ITokenStream stream, Map<String, String> properties);
-
- /**
- * Expression parser that does not recognize cast expressions,
- * used to disambiguate casts.
- */
- ISecondaryParser<IASTExpression> getNoCastExpressionParser(ITokenStream stream, Map<String, String> properties);
-
- /**
- * Expression parser that treats all sizeof and typeid expressions
- * as unary expressions.
- */
- ISecondaryParser<IASTExpression> getSizeofExpressionParser(ITokenStream stream, Map<String, String> properties);
-
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/ITokenMap.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/ITokenMap.java
deleted file mode 100644
index 400dbf281ff..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/ITokenMap.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2008 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-package org.eclipse.cdt.core.dom.lrparser.action;
-
-/**
- * Maps tokens defined in parser extensions back to the token kinds
- * defined in the lr parsers.
- *
- *
- * @author Mike Kucera
- */
-public interface ITokenMap {
-
- /**
- * Maps the given token kind back to the same token kind defined in C99Parsersym.
- */
- int mapKind(int kind);
-
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/ITokenStream.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/ITokenStream.java
deleted file mode 100644
index a1f6933512b..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/ITokenStream.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.dom.lrparser.action;
-
-import java.util.List;
-
-import lpg.lpgjavaruntime.IToken;
-
-/**
- * Provides an interface to the token stream that
- * can be used by the parser semantic actions.
- *
- * Allows the semantic actions to directly inspect the token
- * stream. Used to calculate AST node offsets and for
- * other purposes.
- *
- * TODO There are still issues with getLeftIToken() and
- * getRightIToken(), they should return null when used with
- * an empty rule but currently they don't.
- *
- * @author Mike Kucera
- */
-public interface ITokenStream {
-
- /**
- * Returns the tokens that were parsed to recognized
- * the currently executing rule.
- *
- * @returns a read-only list of tokens, will not be null but may be empty
- */
- public List<IToken> getRuleTokens();
-
- /**
- * Usually equivalent to getRuleTokens().get(0); but more efficient.
- *
- * However, when called during an empty rule it will return the token to the
- * left of the location of the empty rule.
- */
- public IToken getLeftIToken();
-
- /**
- * Usually equivalent to getRuleTokens().get(getRuleTokens().size()-1); but more efficient.
- *
- * However, when called during an empty rule it will return the token to the
- * right of the location of the empty rule.
- */
- public IToken getRightIToken();
-
- /**
- * Returns the orderedTerminalSymbol field of the corresponding sym class
- * generated by LPG.
- */
- public String[] getOrderedTerminalSymbols();
-
- /**
- * Returns the parser's name, useful for debugging.
- */
- public String getName();
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/ParserUtil.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/ParserUtil.java
deleted file mode 100644
index 8c347d47c56..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/ParserUtil.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.dom.lrparser.action;
-
-import java.util.Arrays;
-import java.util.List;
-
-import org.eclipse.cdt.core.dom.ast.IASTName;
-import org.eclipse.cdt.core.dom.ast.IASTNode;
-import org.eclipse.cdt.internal.core.dom.parser.ASTNode;
-
-import lpg.lpgjavaruntime.IToken;
-
-@SuppressWarnings("restriction")
-public final class ParserUtil {
-
- private ParserUtil() {
- }
-
- public static int offset(IToken token) {
- return token.getStartOffset();
- }
-
- public static int offset(IASTNode node) {
- return ((ASTNode) node).getOffset();
- }
-
- public static int length(IToken token) {
- return endOffset(token) - offset(token);
- }
-
- public static int length(IASTNode node) {
- return ((ASTNode) node).getLength();
- }
-
- public static int endOffset(IASTNode node) {
- return offset(node) + length(node);
- }
-
- public static int endOffset(IToken token) {
- return token.getEndOffset();
- }
-
- public static void setOffsetAndLength(IASTNode node, IToken token) {
- ((ASTNode) node).setOffsetAndLength(offset(token), length(token));
- }
-
- public static void setOffsetAndLength(IASTNode node, int offset, int length) {
- ((ASTNode) node).setOffsetAndLength(offset, length);
- }
-
- public static void setOffsetAndLength(IASTNode node, IASTNode from) {
- setOffsetAndLength(node, offset(from), length(from));
- }
-
- public static boolean isSameName(IASTName name1, IASTName name2) {
- return Arrays.equals(name1.getLookupKey(), name2.getLookupKey());
- }
-
- /**
- * Allows simple pattern match testing of lists of tokens.
- *
- * @throws NullPointerException if source or pattern is null
- */
- public static boolean matchTokens(List<IToken> source, ITokenMap tokenMap, Integer... pattern) {
- if (source.size() != pattern.length) // throws NPE if either parameter is null
- return false;
-
- for (int i = 0, n = pattern.length; i < n; i++) {
- if (tokenMap.mapKind(source.get(i).getKind()) != pattern[i].intValue())
- return false;
- }
- return true;
- }
-
- /**
- * Finds the tokens in the given list that are between startOffset and endOffset.
- * Note, the offsets have to be exact.
- */
- public static List<IToken> tokenOffsetSubList(List<IToken> tokens, int startOffset, int endOffset) {
- int first = 0, last = 0;
- int i = 0;
- for (IToken t : tokens) {
- if (offset(t) == startOffset) {
- first = i;
- }
- if (endOffset(t) == endOffset) {
- last = i;
- break;
- }
- i++;
- }
- return tokens.subList(first, last + 1);
- }
-
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/ScopedStack.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/ScopedStack.java
deleted file mode 100644
index 77078b613d9..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/ScopedStack.java
+++ /dev/null
@@ -1,206 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.cdt.core.dom.lrparser.action;
-
-import static org.eclipse.cdt.core.parser.util.CollectionUtils.reverseIterable;
-
-import java.util.Collection;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.NoSuchElementException;
-
-/**
- * A stack that can be "marked", that is the stack can be divided
- * into chunks that can be conveniently processed. There is always at
- * least one open scope.
- *
- *
- * This stack was designed to be used to store AST nodes while
- * the AST is built during the parse, however it is useful for other
- * purposes as well.
- *
- * Some grammar rules have arbitrary length lists on the right side.
- * For example the rule for compound statements (where block_item_list is any
- * number of statements or declarations):
- *
- * compound-statement ::= '{' <openscope-ast> block_item_list '}'
- *
- * There is a problem when trying to build the AST node for the compound statement...
- * you don't know how many block_items are contained in the compound statement, so
- * you don't know how many times to pop the AST stack.
- *
- * One inelegant solution is to count the block-items as they are parsed. This
- * is inelegant because nested compound-statements are allowed so you would
- * have to maintain several counts at the same time.
- *
- * Another solution would be to build the list of block-items as part of the
- * block_item_list rule, but just using this stack is simpler.
- *
- * This class can be used as an AST stack that is implemented as a stack of "AST Scopes".
- * There is a special grammar rule <openscope-ast> that creates a new AST Scope.
- * So, in order to consume all the block_items, all that has to be done is
- * iterate over the topmost scope and then close it when done.
- *
- *
- * @author Mike Kucera
- */
-public class ScopedStack<T> {
-
- private LinkedList<T> topScope;
-
- // A stack of stacks, used to implement scoping
- private final LinkedList<LinkedList<T>> scopeStack;
-
- /**
- * Creates a new ScopedStack with the first scope already open.
- */
- public ScopedStack() {
- topScope = new LinkedList<>();
- scopeStack = new LinkedList<>();
- }
-
- /**
- * Opens a new scope.
- */
- public void openScope() {
- scopeStack.add(topScope);
- topScope = new LinkedList<>();
- }
-
- /**
- * Opens a scope then pushes all the items in the given list.
- *
- * @throws NullPointerException if items is null
- */
- public void openScope(Collection<T> items) {
- openScope();
- for (T item : items)
- push(item);
- }
-
- /**
- * Marks the stack then pushes all the items in the given array.
- *
- * @throws NullPointerException if items is null
- */
- public void openScope(T[] items) {
- // looks the same as above but compiles into different bytecode
- openScope();
- for (T item : items)
- push(item);
- }
-
- /**
- * Pops all the items in the topmost scope.
- * The outermost scope cannot be closed.
- *
- * @throws NoSuchElementException If the outermost scope is closed.
- */
- public List<T> closeScope() {
- if (scopeStack.isEmpty())
- throw new NoSuchElementException("cannot close outermost scope"); //$NON-NLS-1$
-
- List<T> top = topScope;
- topScope = scopeStack.removeLast();
- return top;
- }
-
- /**
- * Pushes an item onto the topmost scope.
- */
- public void push(T o) {
- topScope.add(o);
- }
-
- /**
- * @throws NoSuchElementException if the topmost scope is empty
- */
- public T pop() {
- return topScope.removeLast();
- }
-
- /**
- * @throws NoSuchElementException if the topmost scope is empty
- */
- public T peek() {
- return topScope.getLast();
- }
-
- /**
- * Returns the entire top scope as a List.
- */
- public List<T> topScope() {
- return topScope;
- }
-
- /**
- * Returns the next outermost scope.
- * @throws NoSuchElementException if size() < 2
- */
- public List<T> outerScope() {
- return scopeStack.getLast();
- }
-
- public boolean isEmpty() {
- return topScope.isEmpty() && scopeStack.isEmpty();
- }
-
- /**
- * Why oh why does java not have reverse iterators?????
- */
- public void print() {
- final String separator = "----------"; //$NON-NLS-1$
- System.out.println();
- System.out.println('-');
-
- printScope(topScope);
- System.out.println(separator);
-
- for (List<T> list : reverseIterable(scopeStack)) {
- printScope(list);
- }
-
- System.out.println();
- }
-
- private void printScope(List<T> scope) {
- for (T t : reverseIterable(scope)) {
- System.out.println(t);
- }
- }
-
- @Override
- public String toString() {
- StringBuilder sb = new StringBuilder();
- for (List<T> scope : scopeStack)
- appendScopeContents(sb, scope);
- appendScopeContents(sb, topScope);
- return sb.toString();
- }
-
- private void appendScopeContents(StringBuilder sb, List<T> scope) {
- sb.append('[');
- boolean first = true;
- for (T t : scope) {
- if (first)
- first = false;
- else
- sb.append(',');
- sb.append(t);
- }
- sb.append(']');
- }
-
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/TokenMap.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/TokenMap.java
deleted file mode 100644
index a63388091df..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/TokenMap.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2015 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-package org.eclipse.cdt.core.dom.lrparser.action;
-
-import java.util.HashMap;
-
-/**
- * Maps token kinds from a sub-parser back to the corresponding
- * token kinds in a base parser.
- *
- * @author Mike Kucera
- */
-public class TokenMap implements ITokenMap {
-
- // LPG token kinds start at 0
- // the kind is not part of the base language parser
- public static final int INVALID_KIND = -1;
-
- private final int[] kindMap;
-
- /**
- * @param toSymbols An array of symbols where the index is the token kind and the
- * element data is a string representing the token kind. It is expected
- * to pass the orderedTerminalSymbols field from an LPG generated symbol
- * file, for example C99Parsersym.orderedTerminalSymbols.
- */
- public TokenMap(String[] toSymbols, String[] fromSymbols) {
- // If this map is not being used with an extension then it becomes an "identity map".
- if (toSymbols == fromSymbols) {
- kindMap = null;
- return;
- }
-
- kindMap = new int[fromSymbols.length];
-
- HashMap<String, Integer> toMap = new HashMap<>();
- for (int i = 0, n = toSymbols.length; i < n; i++) {
- toMap.put(toSymbols[i], i);
- }
-
- for (int i = 0, n = fromSymbols.length; i < n; i++) {
- Integer kind = toMap.get(fromSymbols[i]);
- kindMap[i] = kind == null ? INVALID_KIND : kind;
- }
- }
-
- /**
- * Maps a token kind back to the corresponding kind define in the base C99 parser.
- */
- @Override
- public int mapKind(int kind) {
- if (kindMap == null)
- return kind;
- if (kind < 0 || kind >= kindMap.length)
- return INVALID_KIND;
-
- return kindMap[kind];
- }
-
- @Override
- public String toString() {
- StringBuilder sb = new StringBuilder('(');
- boolean first = true;
- for (int i = 0, n = kindMap.length; i < n; i++) {
- if (!first)
- sb.append(", "); //$NON-NLS-1$
- sb.append(i).append('=').append(kindMap[i]);
- first = false;
- }
- return sb.append(')').toString();
- }
-} \ No newline at end of file
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/c99/C99BuildASTParserAction.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/c99/C99BuildASTParserAction.java
deleted file mode 100644
index d4862fa2d5f..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/c99/C99BuildASTParserAction.java
+++ /dev/null
@@ -1,768 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.cdt.core.dom.lrparser.action.c99;
-
-import static org.eclipse.cdt.core.dom.lrparser.action.ParserUtil.endOffset;
-import static org.eclipse.cdt.core.dom.lrparser.action.ParserUtil.length;
-import static org.eclipse.cdt.core.dom.lrparser.action.ParserUtil.matchTokens;
-import static org.eclipse.cdt.core.dom.lrparser.action.ParserUtil.offset;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_Completion;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_EndOfCompletion;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_LeftParen;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_SemiColon;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK__Bool;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK__Complex;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_auto;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_char;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_const;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_double;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_extern;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_float;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_for;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_identifier;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_inline;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_int;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_long;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_register;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_restrict;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_short;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_signed;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_static;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_struct;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_typedef;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_union;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_unsigned;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_void;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_volatile;
-
-import java.util.Collections;
-import java.util.List;
-
-import org.eclipse.cdt.core.dom.ast.IASTCompositeTypeSpecifier;
-import org.eclipse.cdt.core.dom.ast.IASTCompoundStatement;
-import org.eclipse.cdt.core.dom.ast.IASTDeclSpecifier;
-import org.eclipse.cdt.core.dom.ast.IASTDeclaration;
-import org.eclipse.cdt.core.dom.ast.IASTDeclarationStatement;
-import org.eclipse.cdt.core.dom.ast.IASTDeclarator;
-import org.eclipse.cdt.core.dom.ast.IASTElaboratedTypeSpecifier;
-import org.eclipse.cdt.core.dom.ast.IASTExpression;
-import org.eclipse.cdt.core.dom.ast.IASTExpressionStatement;
-import org.eclipse.cdt.core.dom.ast.IASTFieldReference;
-import org.eclipse.cdt.core.dom.ast.IASTForStatement;
-import org.eclipse.cdt.core.dom.ast.IASTFunctionDeclarator;
-import org.eclipse.cdt.core.dom.ast.IASTFunctionDefinition;
-import org.eclipse.cdt.core.dom.ast.IASTIdExpression;
-import org.eclipse.cdt.core.dom.ast.IASTIfStatement;
-import org.eclipse.cdt.core.dom.ast.IASTInitializer;
-import org.eclipse.cdt.core.dom.ast.IASTInitializerList;
-import org.eclipse.cdt.core.dom.ast.IASTName;
-import org.eclipse.cdt.core.dom.ast.IASTNode;
-import org.eclipse.cdt.core.dom.ast.IASTParameterDeclaration;
-import org.eclipse.cdt.core.dom.ast.IASTPointer;
-import org.eclipse.cdt.core.dom.ast.IASTSimpleDeclSpecifier;
-import org.eclipse.cdt.core.dom.ast.IASTSimpleDeclaration;
-import org.eclipse.cdt.core.dom.ast.IASTStandardFunctionDeclarator;
-import org.eclipse.cdt.core.dom.ast.IASTStatement;
-import org.eclipse.cdt.core.dom.ast.IASTSwitchStatement;
-import org.eclipse.cdt.core.dom.ast.IASTTypeId;
-import org.eclipse.cdt.core.dom.ast.IASTWhileStatement;
-import org.eclipse.cdt.core.dom.ast.c.ICASTArrayDesignator;
-import org.eclipse.cdt.core.dom.ast.c.ICASTArrayModifier;
-import org.eclipse.cdt.core.dom.ast.c.ICASTCompositeTypeSpecifier;
-import org.eclipse.cdt.core.dom.ast.c.ICASTDeclSpecifier;
-import org.eclipse.cdt.core.dom.ast.c.ICASTDesignatedInitializer;
-import org.eclipse.cdt.core.dom.ast.c.ICASTDesignator;
-import org.eclipse.cdt.core.dom.ast.c.ICASTFieldDesignator;
-import org.eclipse.cdt.core.dom.ast.c.ICASTPointer;
-import org.eclipse.cdt.core.dom.ast.c.ICASTSimpleDeclSpecifier;
-import org.eclipse.cdt.core.dom.ast.c.ICASTTypeIdInitializerExpression;
-import org.eclipse.cdt.core.dom.ast.c.ICASTTypedefNameSpecifier;
-import org.eclipse.cdt.core.dom.ast.c.ICNodeFactory;
-import org.eclipse.cdt.core.dom.ast.gnu.c.ICASTKnRFunctionDeclarator;
-import org.eclipse.cdt.core.dom.lrparser.ISecondaryParser;
-import org.eclipse.cdt.core.dom.lrparser.action.BuildASTParserAction;
-import org.eclipse.cdt.core.dom.lrparser.action.ISecondaryParserFactory;
-import org.eclipse.cdt.core.dom.lrparser.action.ITokenMap;
-import org.eclipse.cdt.core.dom.lrparser.action.ITokenStream;
-import org.eclipse.cdt.core.dom.lrparser.action.ParserUtil;
-import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack;
-import org.eclipse.cdt.core.dom.lrparser.action.TokenMap;
-import org.eclipse.cdt.core.parser.util.CollectionUtils;
-import org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym;
-import org.eclipse.cdt.internal.core.dom.parser.ASTNode;
-import org.eclipse.cdt.internal.core.dom.parser.IASTAmbiguousExpression;
-import org.eclipse.cdt.internal.core.dom.parser.IASTAmbiguousStatement;
-import org.eclipse.cdt.internal.core.dom.parser.c.CASTAmbiguousExpression;
-import org.eclipse.cdt.internal.core.dom.parser.c.CASTAmbiguousStatement;
-
-import lpg.lpgjavaruntime.IToken;
-
-/**
- * Semantic actions called by the C99 parser to build an AST.
- *
- * @author Mike Kucera
- */
-@SuppressWarnings("restriction")
-public class C99BuildASTParserAction extends BuildASTParserAction {
-
- private final ITokenMap tokenMap;
-
- /** Used to create the AST node objects */
- protected final ICNodeFactory nodeFactory;
-
- private final ISecondaryParserFactory parserFactory;
-
- /**
- * @param parser
- * @param orderedTerminalSymbols When an instance of this class is created for a parser
- * that parsers token kinds will be mapped back to the base C99 parser's token kinds.
- */
- public C99BuildASTParserAction(ITokenStream parser, ScopedStack<Object> astStack, ICNodeFactory nodeFactory,
- ISecondaryParserFactory parserFactory) {
- super(parser, astStack, nodeFactory, parserFactory);
-
- this.nodeFactory = nodeFactory;
- this.parserFactory = parserFactory;
- this.tokenMap = new TokenMap(C99Parsersym.orderedTerminalSymbols, parser.getOrderedTerminalSymbols());
- }
-
- private int baseKind(IToken token) {
- return tokenMap.mapKind(token.getKind());
- }
-
- @Override
- protected boolean isCompletionToken(IToken token) {
- return baseKind(token) == TK_Completion;
- }
-
- @Override
- protected boolean isIdentifierToken(IToken token) {
- return baseKind(token) == TK_identifier;
- }
-
- @Override
- protected IASTName createName(char[] image) {
- return nodeFactory.newName(image);
- }
-
- /********************************************************************
- * Start of semantic actions.
- ********************************************************************/
-
- /**
- * postfix_expression ::= postfix_expression '.' ident
- * postfix_expression ::= postfix_expression '->' ident
- */
- public void consumeExpressionFieldReference(boolean isPointerDereference) {
- IASTName name = createName(stream.getRightIToken());
- IASTExpression owner = (IASTExpression) astStack.pop();
- IASTFieldReference expr = nodeFactory.newFieldReference(name, owner);
- expr.setIsPointerDereference(isPointerDereference);
- setOffsetAndLength(expr);
- astStack.push(expr);
- }
-
- /**
- * postfix_expression ::= '(' type_id ')' initializer_list
- */
- public void consumeExpressionTypeIdInitializer() {
- IASTInitializerList list = (IASTInitializerList) astStack.pop();
- IASTTypeId typeId = (IASTTypeId) astStack.pop();
- ICASTTypeIdInitializerExpression expr = nodeFactory.newTypeIdInitializerExpression(typeId, list);
- setOffsetAndLength(expr);
- astStack.push(expr);
- }
-
- /**
- * Applies a specifier to a decl spec node.
- *
- * In plain C99 specifiers are always just single tokens, but in language
- * extensions specifiers may be more complex. Thats why this method takes
- * Object as the type of the specifier, so that it may be overridden in subclasses
- * and used with arbitrary objects as the specifier.
- */
- public void setSpecifier(ICASTDeclSpecifier node, Object specifier) {
- if (!(specifier instanceof IToken))
- return;
- IToken token = (IToken) specifier;
-
- int kind = baseKind(token);
- switch (kind) {
- case TK_typedef:
- node.setStorageClass(IASTDeclSpecifier.sc_typedef);
- return;
- case TK_extern:
- node.setStorageClass(IASTDeclSpecifier.sc_extern);
- return;
- case TK_static:
- node.setStorageClass(IASTDeclSpecifier.sc_static);
- return;
- case TK_auto:
- node.setStorageClass(IASTDeclSpecifier.sc_auto);
- return;
- case TK_register:
- node.setStorageClass(IASTDeclSpecifier.sc_register);
- return;
- case TK_inline:
- node.setInline(true);
- return;
- case TK_const:
- node.setConst(true);
- return;
- case TK_restrict:
- node.setRestrict(true);
- return;
- case TK_volatile:
- node.setVolatile(true);
- return;
- }
-
- if (node instanceof ICASTSimpleDeclSpecifier) {
- ICASTSimpleDeclSpecifier n = (ICASTSimpleDeclSpecifier) node;
- switch (kind) {
- case TK_void:
- n.setType(IASTSimpleDeclSpecifier.t_void);
- break;
- case TK_char:
- n.setType(IASTSimpleDeclSpecifier.t_char);
- break;
- case TK__Bool:
- n.setType(ICASTSimpleDeclSpecifier.t_Bool);
- break;
- case TK_int:
- n.setType(IASTSimpleDeclSpecifier.t_int);
- break;
- case TK_float:
- n.setType(IASTSimpleDeclSpecifier.t_float);
- break;
- case TK_double:
- n.setType(IASTSimpleDeclSpecifier.t_double);
- break;
- case TK_signed:
- n.setSigned(true);
- break;
- case TK_unsigned:
- n.setUnsigned(true);
- break;
- case TK_short:
- n.setShort(true);
- break;
- case TK__Complex:
- n.setComplex(true);
- break;
- case TK_long:
- boolean isLong = n.isLong();
- n.setLongLong(isLong);
- n.setLong(!isLong);
- break;
- }
- }
- }
-
- /**
- * type_qualifier ::= const | restrict | volatile
- */
- private void collectArrayModifierTypeQualifiers(ICASTArrayModifier arrayModifier) {
- for (Object o : astStack.closeScope()) {
- switch (baseKind((IToken) o)) {
- case TK_const:
- arrayModifier.setConst(true);
- break;
- case TK_restrict:
- arrayModifier.setRestrict(true);
- break;
- case TK_volatile:
- arrayModifier.setVolatile(true);
- break;
- }
- }
- }
-
- /**
- * array_modifier
- * ::= '[' <openscope> type_qualifier_list ']'
- * | '[' <openscope> type_qualifier_list assignment_expression ']'
- * | '[' 'static' assignment_expression ']'
- * | '[' 'static' <openscope> type_qualifier_list assignment_expression ']'
- * | '[' <openscope> type_qualifier_list 'static' assignment_expression ']'
- * | '[' '*' ']'
- * | '[' <openscope> type_qualifier_list '*' ']'
- *
- * The main reason to separate array_modifier into its own rule is to
- * make calculating the offset and length much easier.
- */
- public void consumeDirectDeclaratorModifiedArrayModifier(boolean isStatic, boolean isVarSized,
- boolean hasTypeQualifierList, boolean hasAssignmentExpr) {
- assert isStatic || isVarSized || hasTypeQualifierList;
-
- ICASTArrayModifier arrayModifier = nodeFactory.newArrayModifier(null);
-
- // consume all the stuff between the square brackets into an array modifier
- arrayModifier.setStatic(isStatic);
- arrayModifier.setVariableSized(isVarSized);
-
- if (hasAssignmentExpr)
- arrayModifier.setConstantExpression((IASTExpression) astStack.pop());
-
- if (hasTypeQualifierList)
- collectArrayModifierTypeQualifiers(arrayModifier);
-
- setOffsetAndLength(arrayModifier);
- astStack.push(arrayModifier);
- }
-
- /**
- * direct_declarator ::= direct_declarator '(' <openscope> identifier_list ')'
- */
- public void consumeDirectDeclaratorFunctionDeclaratorKnR() {
- ICASTKnRFunctionDeclarator declarator = nodeFactory.newKnRFunctionDeclarator(null, null);
- IASTName[] names = astStack.topScope().toArray(new IASTName[0]);
- declarator.setParameterNames(names);
- astStack.closeScope();
- int endOffset = endOffset(stream.getRightIToken());
- addFunctionModifier(declarator, endOffset);
- }
-
- /**
- * identifier_list
- * ::= 'identifier'
- * | identifier_list ',' 'identifier'
- */
- public void consumeIdentifierKnR() {
- IASTName name = createName(stream.getRightIToken());
- astStack.push(name);
- }
-
- /**
- * pointer ::= '*'
- * | pointer '*'
- */
- public void consumePointer() {
- IASTPointer pointer = nodeFactory.newPointer();
- IToken star = stream.getRightIToken();
- ParserUtil.setOffsetAndLength(pointer, star);
- astStack.push(pointer);
- }
-
- /**
- * pointer ::= '*' <openscope> type_qualifier_list
- * | pointer '*' <openscope> type_qualifier_list
- */
- public void consumePointerTypeQualifierList() {
- ICASTPointer pointer = nodeFactory.newPointer();
-
- for (Object o : astStack.closeScope()) {
- IToken token = (IToken) o;
- switch (baseKind(token)) {
- default:
- assert false;
- case TK_const:
- pointer.setConst(true);
- break;
- case TK_volatile:
- pointer.setVolatile(true);
- break;
- case TK_restrict:
- pointer.setRestrict(true);
- break;
- }
- }
-
- setOffsetAndLength(pointer);
- astStack.push(pointer);
- }
-
- /**
- * direct_abstract_declarator
- * ::= '(' ')'
- * | direct_abstract_declarator '(' ')'
- * | '(' <openscope> parameter_type_list ')'
- * | direct_abstract_declarator '(' <openscope> parameter_type_list ')'
- */
- public void consumeDirectDeclaratorFunctionDeclarator(boolean hasDeclarator, boolean hasParameters) {
- IASTName name = nodeFactory.newName();
- IASTStandardFunctionDeclarator declarator = nodeFactory.newFunctionDeclarator(name);
-
- if (hasParameters) {
- boolean isVarArgs = astStack.pop() == PLACE_HOLDER;
- declarator.setVarArgs(isVarArgs);
-
- for (Object param : astStack.closeScope())
- declarator.addParameterDeclaration((IASTParameterDeclaration) param);
- }
-
- if (hasDeclarator) {
- addFunctionModifier(declarator, endOffset(stream.getRightIToken()));
- } else {
- setOffsetAndLength(declarator);
- astStack.push(declarator);
- }
- }
-
- /**
- * designated_initializer ::= <openscope> designation initializer
- */
- public void consumeInitializerDesignated() {
- IASTInitializer initializer = (IASTInitializer) astStack.pop();
- ICASTDesignatedInitializer result = nodeFactory.newDesignatedInitializer(initializer);
-
- for (Object o : astStack.closeScope())
- result.addDesignator((ICASTDesignator) o);
-
- setOffsetAndLength(result);
- astStack.push(result);
- }
-
- /**
- * designator ::= '[' constant_expression ']'
- */
- public void consumeDesignatorArray() {
- IASTExpression expr = (IASTExpression) astStack.pop();
- ICASTArrayDesignator designator = nodeFactory.newArrayDesignator(expr);
- setOffsetAndLength(designator);
- astStack.push(designator);
- }
-
- /**
- * designator ::= '.' 'identifier'
- */
- public void consumeDesignatorField() {
- IASTName name = createName(stream.getRightIToken());
- ICASTFieldDesignator designator = nodeFactory.newFieldDesignator(name);
- setOffsetAndLength(designator);
- astStack.push(designator);
- }
-
- /**
- * declaration_specifiers ::= <openscope> simple_declaration_specifiers
- */
- public void consumeDeclarationSpecifiersSimple() {
- ICASTSimpleDeclSpecifier declSpec = nodeFactory.newSimpleDeclSpecifier();
-
- for (Object specifier : astStack.closeScope())
- setSpecifier(declSpec, specifier);
-
- setOffsetAndLength(declSpec);
- astStack.push(declSpec);
- }
-
- /**
- * declaration_specifiers ::= <openscope> struct_or_union_declaration_specifiers
- * declaration_specifiers ::= <openscope> enum_declaration_specifiers
- */
- public void consumeDeclarationSpecifiersStructUnionEnum() {
- List<Object> topScope = astStack.closeScope();
- ICASTDeclSpecifier declSpec = CollectionUtils.findFirstAndRemove(topScope, ICASTDeclSpecifier.class);
-
- // now apply the rest of the specifiers
- for (Object specifier : topScope)
- setSpecifier(declSpec, specifier);
-
- setOffsetAndLength(declSpec);
- astStack.push(declSpec);
- }
-
- /**
- * declaration_specifiers ::= <openscope> typdef_name_declaration_specifiers
- */
- public void consumeDeclarationSpecifiersTypedefName() {
- ICASTTypedefNameSpecifier declSpec = nodeFactory.newTypedefNameSpecifier(null);
-
- for (Object o : astStack.topScope()) {
- if (o instanceof IToken) {
- IToken token = (IToken) o;
- // There is one identifier token on the stack
- int kind = baseKind(token);
- if (kind == TK_identifier || kind == TK_Completion) {
- IASTName name = createName(token);
- declSpec.setName(name);
- } else {
- setSpecifier(declSpec, token);
- }
- }
- }
-
- astStack.closeScope();
- setOffsetAndLength(declSpec);
- astStack.push(declSpec);
- }
-
- /**
- * declaration ::= declaration_specifiers <openscope> init_declarator_list ';'
- * declaration ::= declaration_specifiers ';'
- */
- public void consumeDeclarationSimple(boolean hasDeclaratorList) {
- List<Object> declarators = (hasDeclaratorList) ? astStack.closeScope() : Collections.emptyList();
- IASTDeclSpecifier declSpecifier = (IASTDeclSpecifier) astStack.pop();
-
- List<IToken> ruleTokens = stream.getRuleTokens();
- if (ruleTokens.size() == 1 && baseKind(ruleTokens.get(0)) == TK_EndOfCompletion)
- return; // do not generate nodes for extra EOC tokens
-
- IASTSimpleDeclaration declaration = nodeFactory.newSimpleDeclaration(declSpecifier);
-
- for (Object declarator : declarators)
- declaration.addDeclarator((IASTDeclarator) declarator);
-
- setOffsetAndLength(declaration);
- astStack.push(declaration);
- }
-
- /**
- * external_declaration ::= ';'
- *
- * TODO: doesn't the declaration need a name?
- */
- public void consumeDeclarationEmpty() {
- // Don't generate declaration nodes for extra EOC tokens
- if (baseKind(stream.getLeftIToken()) == C99Parsersym.TK_EndOfCompletion)
- return;
-
- IASTDeclSpecifier declSpecifier = nodeFactory.newSimpleDeclSpecifier();
- IASTSimpleDeclaration declaration = nodeFactory.newSimpleDeclaration(declSpecifier);
- setOffsetAndLength(declSpecifier);
- setOffsetAndLength(declaration);
- astStack.push(declaration);
- }
-
- /**
- * a declaration inside of a struct
- *
- * struct_declaration ::= specifier_qualifier_list <openscope> struct_declarator_list ';'
- *
- * specifier_qualifier_list is a subset of declaration_specifiers,
- * struct_declarators are declarators that are allowed inside a struct,
- * a struct declarator is a regular declarator plus bit fields
- */
- public void consumeStructDeclaration(boolean hasDeclaration) {
- consumeDeclarationSimple(hasDeclaration); // TODO this is ok as long as bit fields implement IASTDeclarator (see consumeDeclaration())
- }
-
- /**
- * struct_or_union_specifier
- * ::= 'struct' '{' <openscope> struct_declaration_list_opt '}'
- * | 'union' '{' <openscope> struct_declaration_list_opt '}'
- * | 'struct' struct_or_union_identifier '{' <openscope> struct_declaration_list_opt '}'
- * | 'union' struct_or_union_identifier '{' <openscope> struct_declaration_list_opt '}'
- *
- * @param key either k_struct or k_union from IASTCompositeTypeSpecifier
- */
- public void consumeTypeSpecifierComposite(boolean hasName) {
-
- int key = 0;
- switch (baseKind(stream.getLeftIToken())) {
- case TK_struct:
- key = IASTCompositeTypeSpecifier.k_struct;
- case TK_union:
- key = IASTCompositeTypeSpecifier.k_union;
- }
-
- IASTName name = (hasName) ? createName(stream.getRuleTokens().get(1)) : nodeFactory.newName();
-
- ICASTCompositeTypeSpecifier typeSpec = nodeFactory.newCompositeTypeSpecifier(key, name);
-
- for (Object o : astStack.closeScope())
- typeSpec.addMemberDeclaration((IASTDeclaration) o);
-
- setOffsetAndLength(typeSpec);
- astStack.push(typeSpec);
- }
-
- /**
- * struct_or_union_specifier
- * ::= 'struct' struct_or_union_identifier
- * | 'union' struct_or_union_identifier
- *
- * enum_specifier ::= 'enum' enum_identifier
- */
- public void consumeTypeSpecifierElaborated(int kind) {
- IASTName name = createName(stream.getRuleTokens().get(1));
- IASTElaboratedTypeSpecifier typeSpec = nodeFactory.newElaboratedTypeSpecifier(kind, name);
- setOffsetAndLength(typeSpec);
- astStack.push(typeSpec);
- }
-
- /**
- * iteration_statement ::= 'while' '(' expression ')' statement
- */
- public void consumeStatementWhileLoop() {
- IASTStatement body = (IASTStatement) astStack.pop();
- IASTExpression condition = (IASTExpression) astStack.pop();
- IASTWhileStatement whileStatement = nodeFactory.newWhileStatement(condition, body);
- setOffsetAndLength(whileStatement);
- astStack.push(whileStatement);
- }
-
- /**
- * iteration_statement_matched
- * ::= 'for' '(' expression_opt ';' expression_opt ';' expression_opt ')' statement
- */
- public void consumeStatementForLoop() {
- IASTStatement body = (IASTStatement) astStack.pop();
- // these two expressions may be null, see consumeExpressionOptional()
- IASTExpression expr3 = (IASTExpression) astStack.pop();
- IASTExpression expr2 = (IASTExpression) astStack.pop();
- IASTNode node = (IASTNode) astStack.pop(); // may be an expression or a declaration
-
- IASTStatement initializer;
- if (node instanceof IASTExpression)
- initializer = nodeFactory.newExpressionStatement((IASTExpression) node);
- else if (node instanceof IASTDeclaration)
- initializer = nodeFactory.newDeclarationStatement((IASTDeclaration) node);
- else // its null
- initializer = nodeFactory.newNullStatement();
-
- // bug 234463, fix for content assist to work in this case
- int TK_EOC = TK_EndOfCompletion; // TODO: change this in the grammar file
- List<IToken> tokens = stream.getRuleTokens();
- if (matchTokens(tokens, tokenMap, TK_for, TK_LeftParen, TK_Completion, TK_EOC, TK_EOC, TK_EOC, TK_EOC)) {
- IASTName name = createName(tokens.get(2));
- IASTIdExpression idExpression = nodeFactory.newIdExpression(name);
- ParserUtil.setOffsetAndLength(idExpression, offset(name), length(name));
- initializer = nodeFactory.newExpressionStatement(idExpression);
- ParserUtil.setOffsetAndLength(initializer, offset(name), length(name));
- }
-
- //initializer could be an expression or a declaration
- int TK_SC = TK_SemiColon;
- IASTExpressionStatement expressionStatement = null;
- if (initializer instanceof IASTDeclarationStatement) {
- IASTDeclarationStatement declarationStatement = (IASTDeclarationStatement) initializer;
- List<IToken> expressionTokens = stream.getRuleTokens();
-
- //find the first semicolon
- int end_pos = -1;
- for (int i = 0, n = expressionTokens.size(); i < n; i++) {
- if (tokenMap.mapKind(expressionTokens.get(i).getKind()) == TK_SC) {
- end_pos = i;
- break;
- }
- }
-
- if (end_pos != -1) {
- expressionTokens = expressionTokens.subList(2, end_pos);
-
- ISecondaryParser<IASTExpression> expressionParser = parserFactory.getExpressionParser(stream,
- properties);
- IASTExpression expr1 = runSecondaryParser(expressionParser, expressionTokens);
-
- if (expr1 != null) { // the parse may fail
- expressionStatement = nodeFactory.newExpressionStatement(expr1);
- setOffsetAndLength(expressionStatement);
- }
- }
-
- if (expressionStatement == null)
- initializer = declarationStatement;
- else {
- initializer = createAmbiguousStatement(expressionStatement, declarationStatement);
- setOffsetAndLength(initializer);
- }
- }
-
- if (node != null)
- ParserUtil.setOffsetAndLength(initializer, offset(node), length(node));
-
- IASTForStatement forStat = nodeFactory.newForStatement(initializer, expr2, expr3, body);
- setOffsetAndLength(forStat);
- astStack.push(forStat);
- }
-
- /**
- * selection_statement ::= switch '(' expression ')' statement
- */
- public void consumeStatementSwitch() {
- IASTStatement body = (IASTStatement) astStack.pop();
- IASTExpression expr = (IASTExpression) astStack.pop();
- IASTSwitchStatement stat = nodeFactory.newSwitchStatement(expr, body);
- setOffsetAndLength(stat);
- astStack.push(stat);
- }
-
- public void consumeStatementIf(boolean hasElse) {
- IASTStatement elseClause = null;
- if (hasElse)
- elseClause = (IASTStatement) astStack.pop();
-
- IASTStatement thenClause = (IASTStatement) astStack.pop();
- IASTExpression condition = (IASTExpression) astStack.pop();
-
- IASTIfStatement ifStatement = nodeFactory.newIfStatement(condition, thenClause, elseClause);
- setOffsetAndLength(ifStatement);
- astStack.push(ifStatement);
- }
-
- /**
- * function_definition
- * ::= declaration_specifiers <openscope> declarator compound_statement
- * | function_declarator compound_statement
- *
- * The seemingly pointless <openscope> is just there to
- * prevent a shift/reduce conflict in the grammar.
- */
- public void consumeFunctionDefinition(boolean hasDeclSpecifiers) {
- IASTCompoundStatement body = (IASTCompoundStatement) astStack.pop();
- IASTFunctionDeclarator decl = (IASTFunctionDeclarator) astStack.pop();
- astStack.closeScope();
-
- IASTDeclSpecifier declSpecifier;
- if (hasDeclSpecifiers) {
- declSpecifier = (IASTDeclSpecifier) astStack.pop();
- } else { // there are no decl specifiers, implicit int
- declSpecifier = nodeFactory.newSimpleDeclSpecifier();
- }
-
- IASTFunctionDefinition def = nodeFactory.newFunctionDefinition(declSpecifier, decl, body);
- setOffsetAndLength(def);
- astStack.push(def);
- }
-
- /**
- * function_definition
- * ::= declaration_specifiers <openscope-ast> knr_function_declarator
- * <openscope-ast> declaration_list compound_statement
- */
- public void consumeFunctionDefinitionKnR() {
- IASTCompoundStatement body = (IASTCompoundStatement) astStack.pop();
-
- IASTDeclaration[] declarations = astStack.topScope().toArray(new IASTDeclaration[0]);
- astStack.closeScope();
-
- ICASTKnRFunctionDeclarator decl = (ICASTKnRFunctionDeclarator) astStack.pop();
- astStack.closeScope();
-
- ICASTDeclSpecifier declSpecifier = (ICASTDeclSpecifier) astStack.pop();
- decl.setParameterDeclarations(declarations);
-
- // re-compute the length of the declaration to take the parameter declarations into account
- ASTNode lastDeclaration = (ASTNode) declarations[declarations.length - 1];
- int endOffset = lastDeclaration.getOffset() + lastDeclaration.getLength();
- ((ASTNode) decl).setLength(endOffset - offset(decl));
-
- IASTFunctionDefinition def = nodeFactory.newFunctionDefinition(declSpecifier, decl, body);
- setOffsetAndLength(def);
- astStack.push(def);
- }
-
- @Override
- protected IASTAmbiguousExpression createAmbiguousExpression(IASTExpression... expressions) {
- return new CASTAmbiguousExpression(expressions);
- }
-
- @Override
- protected IASTAmbiguousStatement createAmbiguousStatement(IASTStatement... statements) {
- return new CASTAmbiguousStatement(statements);
- }
-} \ No newline at end of file
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/c99/C99SecondaryParserFactory.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/c99/C99SecondaryParserFactory.java
deleted file mode 100644
index cd2c43b13b9..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/c99/C99SecondaryParserFactory.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2015 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.dom.lrparser.action.c99;
-
-import java.util.Map;
-
-import org.eclipse.cdt.core.dom.ast.IASTExpression;
-import org.eclipse.cdt.core.dom.lrparser.ISecondaryParser;
-import org.eclipse.cdt.core.dom.lrparser.action.ISecondaryParserFactory;
-import org.eclipse.cdt.core.dom.lrparser.action.ITokenStream;
-import org.eclipse.cdt.internal.core.dom.lrparser.c99.C99ExpressionParser;
-import org.eclipse.cdt.internal.core.dom.lrparser.c99.C99NoCastExpressionParser;
-import org.eclipse.cdt.internal.core.dom.lrparser.c99.C99SizeofExpressionParser;
-
-public class C99SecondaryParserFactory implements ISecondaryParserFactory {
-
- public static final C99SecondaryParserFactory DEFAULT_INSTANCE = new C99SecondaryParserFactory();
-
- public static C99SecondaryParserFactory getDefault() {
- return DEFAULT_INSTANCE;
- }
-
- @Override
- public ISecondaryParser<IASTExpression> getExpressionParser(ITokenStream stream, Map<String, String> properties) {
- return new C99ExpressionParser(stream, properties);
- }
-
- @Override
- public ISecondaryParser<IASTExpression> getNoCastExpressionParser(ITokenStream stream,
- Map<String, String> properties) {
- return new C99NoCastExpressionParser(stream, properties);
- }
-
- @Override
- public ISecondaryParser<IASTExpression> getSizeofExpressionParser(ITokenStream stream,
- Map<String, String> properties) {
- return new C99SizeofExpressionParser(stream, properties);
- }
-} \ No newline at end of file
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/cpp/CPPBuildASTParserAction.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/cpp/CPPBuildASTParserAction.java
deleted file mode 100644
index a2408001604..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/cpp/CPPBuildASTParserAction.java
+++ /dev/null
@@ -1,1908 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2013 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.dom.lrparser.action.cpp;
-
-import static org.eclipse.cdt.core.dom.lrparser.action.ParserUtil.endOffset;
-import static org.eclipse.cdt.core.dom.lrparser.action.ParserUtil.length;
-import static org.eclipse.cdt.core.dom.lrparser.action.ParserUtil.matchTokens;
-import static org.eclipse.cdt.core.dom.lrparser.action.ParserUtil.offset;
-import static org.eclipse.cdt.core.parser.util.CollectionUtils.findFirstAndRemove;
-import static org.eclipse.cdt.core.parser.util.CollectionUtils.reverseIterable;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_ColonColon;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_Completion;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_EndOfCompletion;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_LeftBracket;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_LeftParen;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_RightBracket;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_RightParen;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_SemiColon;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_auto;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_bool;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_char;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_class;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_const;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_delete;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_double;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_enum;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_explicit;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_extern;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_float;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_for;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_friend;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_identifier;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_inline;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_int;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_long;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_mutable;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_new;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_private;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_protected;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_public;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_register;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_short;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_signed;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_static;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_struct;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_typedef;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_typename;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_union;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_unsigned;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_virtual;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_void;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_volatile;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_wchar_t;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.LinkedList;
-import java.util.List;
-
-import org.eclipse.cdt.core.dom.ast.IASTCompositeTypeSpecifier;
-import org.eclipse.cdt.core.dom.ast.IASTCompoundStatement;
-import org.eclipse.cdt.core.dom.ast.IASTDeclSpecifier;
-import org.eclipse.cdt.core.dom.ast.IASTDeclaration;
-import org.eclipse.cdt.core.dom.ast.IASTDeclarationStatement;
-import org.eclipse.cdt.core.dom.ast.IASTDeclarator;
-import org.eclipse.cdt.core.dom.ast.IASTElaboratedTypeSpecifier;
-import org.eclipse.cdt.core.dom.ast.IASTEqualsInitializer;
-import org.eclipse.cdt.core.dom.ast.IASTExpression;
-import org.eclipse.cdt.core.dom.ast.IASTExpressionList;
-import org.eclipse.cdt.core.dom.ast.IASTExpressionStatement;
-import org.eclipse.cdt.core.dom.ast.IASTForStatement;
-import org.eclipse.cdt.core.dom.ast.IASTFunctionDeclarator;
-import org.eclipse.cdt.core.dom.ast.IASTIdExpression;
-import org.eclipse.cdt.core.dom.ast.IASTIfStatement;
-import org.eclipse.cdt.core.dom.ast.IASTInitializerClause;
-import org.eclipse.cdt.core.dom.ast.IASTLiteralExpression;
-import org.eclipse.cdt.core.dom.ast.IASTName;
-import org.eclipse.cdt.core.dom.ast.IASTNamedTypeSpecifier;
-import org.eclipse.cdt.core.dom.ast.IASTNode;
-import org.eclipse.cdt.core.dom.ast.IASTParameterDeclaration;
-import org.eclipse.cdt.core.dom.ast.IASTPointer;
-import org.eclipse.cdt.core.dom.ast.IASTPointerOperator;
-import org.eclipse.cdt.core.dom.ast.IASTSimpleDeclSpecifier;
-import org.eclipse.cdt.core.dom.ast.IASTSimpleDeclaration;
-import org.eclipse.cdt.core.dom.ast.IASTStatement;
-import org.eclipse.cdt.core.dom.ast.IASTSwitchStatement;
-import org.eclipse.cdt.core.dom.ast.IASTTypeId;
-import org.eclipse.cdt.core.dom.ast.IASTUnaryExpression;
-import org.eclipse.cdt.core.dom.ast.IASTWhileStatement;
-import org.eclipse.cdt.core.dom.ast.IBasicType.Kind;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTAmbiguousTemplateArgument;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCatchHandler;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCompositeTypeSpecifier;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCompositeTypeSpecifier.ICPPASTBaseSpecifier;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTConstructorChainInitializer;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTConstructorInitializer;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTConversionName;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTDeclSpecifier;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTDeleteExpression;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTElaboratedTypeSpecifier;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTExplicitTemplateInstantiation;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTFieldReference;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTFunctionDeclarator;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTFunctionDefinition;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTFunctionWithTryBlock;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTLinkageSpecification;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTNameSpecifier;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTNamedTypeSpecifier;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTNamespaceAlias;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTNamespaceDefinition;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTNewExpression;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTOperatorName;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTParameterDeclaration;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTPointerToMember;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTQualifiedName;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTReferenceOperator;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTSimpleDeclSpecifier;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTSimpleTypeConstructorExpression;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTSimpleTypeTemplateParameter;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateDeclaration;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateId;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateParameter;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateSpecialization;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplatedTypeTemplateParameter;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTryBlockStatement;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTypenameExpression;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTUnaryExpression;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTUsingDeclaration;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTUsingDirective;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTVisibilityLabel;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPNodeFactory;
-import org.eclipse.cdt.core.dom.lrparser.ISecondaryParser;
-import org.eclipse.cdt.core.dom.lrparser.LPGTokenAdapter;
-import org.eclipse.cdt.core.dom.lrparser.action.BuildASTParserAction;
-import org.eclipse.cdt.core.dom.lrparser.action.ITokenMap;
-import org.eclipse.cdt.core.dom.lrparser.action.ITokenStream;
-import org.eclipse.cdt.core.dom.lrparser.action.ParserUtil;
-import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack;
-import org.eclipse.cdt.core.dom.lrparser.action.TokenMap;
-import org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym;
-import org.eclipse.cdt.internal.core.dom.parser.ASTNode;
-import org.eclipse.cdt.internal.core.dom.parser.IASTAmbiguityParent;
-import org.eclipse.cdt.internal.core.dom.parser.IASTAmbiguousExpression;
-import org.eclipse.cdt.internal.core.dom.parser.IASTAmbiguousStatement;
-import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTAmbiguousDeclarator;
-import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTAmbiguousExpression;
-import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTAmbiguousStatement;
-import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTAmbiguousTemplateArgument;
-import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTConstructorInitializer;
-import org.eclipse.cdt.internal.core.dom.parser.cpp.OverloadableOperator;
-
-import lpg.lpgjavaruntime.IToken;
-
-/**
- * Semantic actions that build the AST during the parse.
- * These are the actions that are specific to the C++ parser, the superclass
- * contains actions that can be shared with the C99 parser.
- *
- * @author Mike Kucera
- */
-@SuppressWarnings("restriction")
-public class CPPBuildASTParserAction extends BuildASTParserAction {
-
- /** Allows code in this class to refer to the token kinds in CPPParsersym */
- private final ITokenMap tokenMap;
-
- /** Used to create the AST node objects */
- protected final ICPPNodeFactory nodeFactory;
-
- protected final ICPPSecondaryParserFactory parserFactory;
-
- /** Stack that provides easy access to the current class name, used to disambiguate declarators. */
- protected final LinkedList<IASTName> classNames = new LinkedList<>();
-
- /**
- * @param parser
- * @param orderedTerminalSymbols When an instance of this class is created for a parser
- * that parsers token kinds will be mapped back to the base C99 parser's token kinds.
- */
- public CPPBuildASTParserAction(ITokenStream parser, ScopedStack<Object> astStack, ICPPNodeFactory nodeFactory,
- ICPPSecondaryParserFactory parserFactory) {
- super(parser, astStack, nodeFactory, parserFactory);
-
- this.nodeFactory = nodeFactory;
- this.parserFactory = parserFactory;
- this.tokenMap = new TokenMap(CPPParsersym.orderedTerminalSymbols, parser.getOrderedTerminalSymbols());
- }
-
- private int baseKind(IToken token) {
- return tokenMap.mapKind(token.getKind());
- }
-
- @Override
- protected boolean isCompletionToken(IToken token) {
- return baseKind(token) == TK_Completion;
- }
-
- @Override
- protected boolean isIdentifierToken(IToken token) {
- return baseKind(token) == TK_identifier;
- }
-
- @Override
- protected IASTName createName(char[] image) {
- return nodeFactory.newName(image);
- }
-
- public void consumeNewInitializer() {
- IASTExpression expr;
- if (astStack.peek() == null) { // if there is an empty set of parens
- astStack.pop();
- expr = nodeFactory.newExpressionList();
- setOffsetAndLength(expr);
- } else {
- expr = (IASTExpression) astStack.pop(); // may be null
- }
- ICPPASTConstructorInitializer initializer = nodeFactory.newConstructorInitializer(expr);
- setOffsetAndLength(initializer);
- astStack.push(initializer);
- }
-
- // TODO can the new_array_expressions be removed? it looks like they parse as part of the type id
- /**
- * new_expression
- * ::= dcolon_opt 'new' new_placement_opt new_type_id <openscope-ast> new_array_expressions_op new_initializer_opt
- * | dcolon_opt 'new' new_placement_opt '(' type_id ')' <openscope-ast> new_array_expressions_op new_initializer_opt
- */
- public void consumeExpressionNew(boolean isNewTypeId) {
- ICPPASTConstructorInitializer initializer = (ICPPASTConstructorInitializer) astStack.pop(); // may be null
- List<Object> arrayExpressions = astStack.closeScope();
- IASTTypeId typeId = (IASTTypeId) astStack.pop();
- IASTExpression placement = (IASTExpression) astStack.pop(); // may be null
- boolean hasDoubleColon = astStack.pop() != null;
-
- ICPPASTNewExpression newExpression = nodeFactory.newNewExpression(new IASTExpression[] { placement },
- initializer, typeId);
- newExpression.setIsGlobal(hasDoubleColon);
- newExpression.setIsNewTypeId(isNewTypeId);
- setOffsetAndLength(newExpression);
-
- for (Object expr : arrayExpressions)
- newExpression.addNewTypeIdArrayExpression((IASTExpression) expr);
-
- // handle ambiguities of the form: (A)(B)
- if (!isNewTypeId && initializer == null && placement instanceof IASTIdExpression && typeId != null
- && typeId.getDeclSpecifier() instanceof IASTNamedTypeSpecifier) {
-
- IASTName firstName = ((IASTIdExpression) placement).getName();
- IASTName secondName = ((IASTNamedTypeSpecifier) typeId.getDeclSpecifier()).getName();
-
- IASTNamedTypeSpecifier newTypeSpecifier = nodeFactory.newTypedefNameSpecifier(firstName.copy());
- ParserUtil.setOffsetAndLength(newTypeSpecifier, firstName);
- IASTDeclarator newDeclarator = nodeFactory.newDeclarator(nodeFactory.newName());
- ParserUtil.setOffsetAndLength(newDeclarator, endOffset(firstName), 0);
- IASTTypeId newTypeId = nodeFactory.newTypeId(newTypeSpecifier, newDeclarator);
- ParserUtil.setOffsetAndLength(newTypeId, firstName);
-
- IASTIdExpression newInitializer = nodeFactory.newIdExpression(secondName.copy());
- ParserUtil.setOffsetAndLength(newInitializer, secondName);
-
- ICPPASTNewExpression alternate = nodeFactory.newNewExpression(null, newInitializer, newTypeId);
- ParserUtil.setOffsetAndLength(alternate, newExpression);
- newExpression.setIsGlobal(hasDoubleColon);
- newExpression.setIsNewTypeId(isNewTypeId);
-
- IASTAmbiguousExpression ambiguity = createAmbiguousExpression(newExpression, alternate);
- astStack.push(ambiguity);
- } else {
- astStack.push(newExpression);
- }
- }
-
- /**
- * new_declarator -- pointer operators are part of the type id, held in an empty declarator
- * ::= <openscope-ast> new_pointer_operators
- */
- public void consumeNewDeclarator() {
- IASTName name = nodeFactory.newName();
- IASTDeclarator declarator = nodeFactory.newDeclarator(name);
-
- for (Object pointer : astStack.closeScope())
- declarator.addPointerOperator((IASTPointerOperator) pointer);
-
- setOffsetAndLength(declarator);
- astStack.push(declarator);
- }
-
- /**
- * throw_expression
- * ::= 'throw'
- * | 'throw' assignment_expression
- */
- public void consumeExpressionThrow(boolean hasExpr) {
- IASTExpression operand = hasExpr ? (IASTExpression) astStack.pop() : null;
- IASTUnaryExpression expr = nodeFactory.newUnaryExpression(ICPPASTUnaryExpression.op_throw, operand);
- setOffsetAndLength(expr);
- astStack.push(expr);
- }
-
- /**
- * delete_expression
- * ::= dcolon_opt 'delete' cast_expression
- * | dcolon_opt 'delete' '[' ']' cast_expression
- * @param isVectorized
- */
- public void consumeExpressionDelete(boolean isVectorized) {
- IASTExpression operand = (IASTExpression) astStack.pop();
- boolean hasDoubleColon = astStack.pop() != null;
-
- ICPPASTDeleteExpression deleteExpr = nodeFactory.newDeleteExpression(operand);
- deleteExpr.setIsGlobal(hasDoubleColon);
- deleteExpr.setIsVectored(isVectorized);
-
- setOffsetAndLength(deleteExpr);
- astStack.push(deleteExpr);
- }
-
- /**
- *
- */
- public void consumeExpressionFieldReference(boolean isPointerDereference, boolean hasTemplateKeyword) {
- IASTName name = (IASTName) astStack.pop();
- IASTExpression owner = (IASTExpression) astStack.pop();
- ICPPASTFieldReference expr = nodeFactory.newFieldReference(name, owner);
- expr.setIsPointerDereference(isPointerDereference);
- expr.setIsTemplate(hasTemplateKeyword);
-
- setOffsetAndLength(expr);
- astStack.push(expr);
- }
-
- /**
- * postfix_expression
- * ::= simple_type_specifier '(' expression_list_opt ')'
- */
- public void consumeExpressionSimpleTypeConstructor() {
- IASTExpression expression = (IASTExpression) astStack.pop();
- IToken token = (IToken) astStack.pop();
- ////CDT_70_FIX_FROM_50-#3
- //int type = asICPPASTSimpleTypeConstructorExpressionType(token);
- ICPPASTConstructorInitializer init = null;
- if (expression != null) {
- init = new CPPASTConstructorInitializer();
- init.setExpression(expression);
-
- ((ASTNode) init).setOffsetAndLength(((ASTNode) expression).getOffset(), ((ASTNode) expression).getLength());
- }
- ICPPASTDeclSpecifier declspec = transformIntoSimpleTypeSpecifier(token);
- ICPPASTSimpleTypeConstructorExpression typeConstructor = nodeFactory
- .newSimpleTypeConstructorExpression(declspec, init);
-
- setOffsetAndLength(typeConstructor);
- astStack.push(typeConstructor);
- }
-
- private int asICPPASTSimpleTypeConstructorExpressionType(IToken token) {
- assert token != null;
-
- switch (baseKind(token)) {
- case TK_char:
- return ICPPASTSimpleTypeConstructorExpression.t_char;
- case TK_wchar_t:
- return ICPPASTSimpleTypeConstructorExpression.t_wchar_t;
- case TK_bool:
- return ICPPASTSimpleTypeConstructorExpression.t_bool;
- case TK_short:
- return ICPPASTSimpleTypeConstructorExpression.t_short;
- case TK_int:
- return ICPPASTSimpleTypeConstructorExpression.t_int;
- case TK_long:
- return ICPPASTSimpleTypeConstructorExpression.t_long;
- case TK_signed:
- return ICPPASTSimpleTypeConstructorExpression.t_signed;
- case TK_unsigned:
- return ICPPASTSimpleTypeConstructorExpression.t_unsigned;
- case TK_float:
- return ICPPASTSimpleTypeConstructorExpression.t_float;
- case TK_double:
- return ICPPASTSimpleTypeConstructorExpression.t_double;
- case TK_void:
- return ICPPASTSimpleTypeConstructorExpression.t_void;
-
- default:
- assert false : "type parsed wrong"; //$NON-NLS-1$
- return ICPPASTSimpleTypeConstructorExpression.t_unspecified;
- }
- }
-
- private ICPPASTDeclSpecifier transformIntoSimpleTypeSpecifier(IToken token) {
- ICPPASTSimpleDeclSpecifier declspec = nodeFactory.newSimpleDeclSpecifier();
- switch (baseKind(token)) {
- case TK_char:
- declspec.setType(Kind.eChar);
- break;
- case TK_wchar_t:
- declspec.setType(Kind.eWChar);
- break;
- case TK_bool:
- declspec.setType(Kind.eBoolean);
- break;
- case TK_short:
- declspec.setShort(true);
- break;
- case TK_int:
- declspec.setType(Kind.eInt);
- break;
- case TK_long:
- declspec.setLong(true);
- break;
- case TK_signed:
- declspec.setSigned(true);
- break;
- case TK_unsigned:
- declspec.setUnsigned(true);
- break;
- case TK_float:
- declspec.setType(Kind.eFloat);
- break;
- case TK_double:
- declspec.setType(Kind.eDouble);
- break;
- case TK_void:
- declspec.setType(Kind.eVoid);
- break;
-
- default:
- assert false : "type parsed wrong"; //$NON-NLS-1$
- declspec.setType(Kind.eUnspecified);
- break;
- }
- ((ASTNode) declspec).setOffset(token.getStartOffset());
- int ruleLength = token.getEndOffset() - token.getStartOffset();
- ((ASTNode) declspec).setLength(ruleLength < 0 ? 0 : ruleLength);
-
- return declspec;
-
- }
-
- /**
- * postfix_expression
- * ::= 'typename' dcolon_opt nested_name_specifier <empty> identifier_name '(' expression_list_opt ')'
- * | 'typename' dcolon_opt nested_name_specifier template_opt template_id '(' expression_list_opt ')'
- */
- @SuppressWarnings("unchecked")
- public void consumeExpressionTypeName() {
- IASTExpression expr = (IASTExpression) astStack.pop();
- IASTName name = (IASTName) astStack.pop();
- boolean isTemplate = astStack.pop() == PLACE_HOLDER;
- LinkedList<IASTName> nestedNames = (LinkedList<IASTName>) astStack.pop();
- IToken dColon = (IToken) astStack.pop();
-
- nestedNames.addFirst(name);
-
- int startOffset = dColon == null ? offset(nestedNames.getLast()) : offset(dColon);
- int endOffset = endOffset(name);
- IASTName qualifiedName = createQualifiedName(nestedNames, startOffset, endOffset, dColon != null);
-
- ICPPASTTypenameExpression typenameExpr = nodeFactory.newTypenameExpression(qualifiedName, expr, isTemplate);
-
- setOffsetAndLength(typenameExpr);
- astStack.push(typenameExpr);
- }
-
- /**
- * condition
- * ::= type_specifier_seq declarator '=' assignment_expression
- */
- public void consumeConditionDeclaration() {
- IASTExpression expr = (IASTExpression) astStack.pop();
- IASTDeclarator declarator = (IASTDeclarator) astStack.pop();
- IASTDeclSpecifier declSpec = (IASTDeclSpecifier) astStack.pop();
- //CDT_70_FIX_FROM_50-#2
- //IASTInitializerExpression initializer = nodeFactory.newInitializerExpression(expr);
- IASTEqualsInitializer initializer = nodeFactory.newEqualsInitializer(expr);
- ParserUtil.setOffsetAndLength(initializer, offset(expr), length(expr));
- declarator.setInitializer(initializer);
-
- IASTSimpleDeclaration declaration = nodeFactory.newSimpleDeclaration(declSpec);
- declaration.addDeclarator(declarator);
-
- setOffsetAndLength(declaration);
- astStack.push(declaration);
- }
-
- /**
- * template_id
- * ::= identifier_name '<' <openscope-ast> template_argument_list_opt '>'
- *
- * operator_function_id
- * ::= operator_id '<' <openscope-ast> template_argument_list_opt '>'
- */
- public void consumeTemplateId() {
- List<Object> templateArguments = astStack.closeScope();
- IASTName name = (IASTName) astStack.pop();
-
- ICPPASTTemplateId templateId = nodeFactory.newTemplateId(name);
-
- for (Object arg : templateArguments) {
- if (arg instanceof IASTExpression)
- templateId.addTemplateArgument((IASTExpression) arg);
- else if (arg instanceof IASTTypeId)
- templateId.addTemplateArgument((IASTTypeId) arg);
- else if (arg instanceof ICPPASTAmbiguousTemplateArgument)
- templateId.addTemplateArgument((ICPPASTAmbiguousTemplateArgument) arg);
- }
-
- setOffsetAndLength(templateId);
- astStack.push(templateId);
- }
-
- /**
- * Disambiguates template arguments.
- */
- public void consumeTemplateArgumentTypeId() {
- // TODO is this necessary? It should be able to tell if it looks like an id expression
- ISecondaryParser<IASTExpression> secondaryParser = parserFactory.getExpressionParser(stream, properties);
- IASTExpression result = runSecondaryParser(secondaryParser);
-
- // The grammar rule allows assignment_expression, but the ambiguity
- // only arises with id_expressions.
- if (!(result instanceof IASTIdExpression))
- return;
-
- IASTTypeId typeId = (IASTTypeId) astStack.pop();
- IASTIdExpression expr = (IASTIdExpression) result;
-
- ICPPASTAmbiguousTemplateArgument ambiguityNode = new CPPASTAmbiguousTemplateArgument(typeId, expr);
- //setOffsetAndLength(ambiguityNode);
-
- astStack.push(ambiguityNode);
- }
-
- /**
- * Disambiguates template arguments.
- * Qualified names parse as an expression, so generate the corresponding
- * typeId and create an ambiguity node.
- */
- public void consumeTemplateArgumentExpression() {
- IASTExpression expr = (IASTExpression) astStack.peek();
-
- if (expr instanceof IASTIdExpression) {
- IASTName name = ((IASTIdExpression) expr).getName().copy();
-
- IASTNamedTypeSpecifier declSpec = nodeFactory.newTypedefNameSpecifier(name);
- ParserUtil.setOffsetAndLength(declSpec, name);
-
- IASTDeclarator declarator = nodeFactory.newDeclarator(nodeFactory.newName());
- ParserUtil.setOffsetAndLength(declarator, endOffset(declSpec), 0);
-
- IASTTypeId typeId = nodeFactory.newTypeId(declSpec, declarator);
- setOffsetAndLength(typeId);
-
- ICPPASTAmbiguousTemplateArgument ambiguityNode = new CPPASTAmbiguousTemplateArgument(typeId, expr);
-
- astStack.pop();
- astStack.push(ambiguityNode);
- }
- }
-
- /**
- * operator_id
- * ::= 'operator' overloadable_operator
- */
- public void consumeOperatorName() {
- List<IToken> tokens = stream.getRuleTokens();
- tokens = tokens.subList(1, tokens.size());
- OverloadableOperator operator = getOverloadableOperator(tokens);
-
- ICPPASTOperatorName name = nodeFactory.newOperatorName(operator.toCharArray());
- setOffsetAndLength(name);
- astStack.push(name);
- }
-
- private OverloadableOperator getOverloadableOperator(List<IToken> tokens) {
- if (tokens.size() == 1) {
- // TODO this is a hack that I did to save time
- LPGTokenAdapter coreToken = (LPGTokenAdapter) tokens.get(0);
- return OverloadableOperator.valueOf(coreToken.getWrappedToken());
- } else if (matchTokens(tokens, tokenMap, TK_new, TK_LeftBracket, TK_RightBracket)) {
- return OverloadableOperator.NEW_ARRAY;
- } else if (matchTokens(tokens, tokenMap, TK_delete, TK_LeftBracket, TK_RightBracket)) {
- return OverloadableOperator.DELETE_ARRAY;
- } else if (matchTokens(tokens, tokenMap, TK_LeftBracket, TK_RightBracket)) {
- return OverloadableOperator.BRACKET;
- } else if (matchTokens(tokens, tokenMap, TK_LeftParen, TK_RightParen)) {
- return OverloadableOperator.PAREN;
- }
-
- return null;
- }
-
- /**
- * conversion_function_id
- * ::= 'operator' conversion_type_id
- */
- public void consumeConversionName() {
- // Representation is computed by the conversion name itself, see bug 258054
- // String rep = createStringRepresentation(parser.getRuleTokens());
- // char[] chars = rep.toCharArray();
-
- IASTTypeId typeId = (IASTTypeId) astStack.pop();
- ICPPASTConversionName name = nodeFactory.newConversionName(typeId);
- setOffsetAndLength(name);
- astStack.push(name);
- }
-
- /**
- * unqualified_id
- * ::= '~' identifier_token
- */
- public void consumeDestructorName() {
- char[] chars = ("~" + stream.getRightIToken()).toCharArray(); //$NON-NLS-1$
-
- IASTName name = nodeFactory.newName(chars);
- setOffsetAndLength(name);
- astStack.push(name);
- }
-
- /**
- * destructor_type_name
- * ::= '~' template_id_name
- */
- public void consumeDestructorNameTemplateId() {
- ICPPASTTemplateId templateId = (ICPPASTTemplateId) astStack.peek();
-
- IASTName oldName = templateId.getTemplateName();
- char[] newChars = ("~" + oldName).toCharArray(); //$NON-NLS-1$
-
- IASTName newName = nodeFactory.newName(newChars);
-
- int offset = offset(stream.getLeftIToken());
- int length = offset - endOffset(oldName);
- ParserUtil.setOffsetAndLength(newName, offset, length);
-
- templateId.setTemplateName(newName);
- }
-
- /**
- * qualified_id
- * ::= '::' identifier_name
- * | '::' operator_function_id
- * | '::' template_id
- */
-
- public void consumeGlobalQualifiedId() {
- IASTName name = (IASTName) astStack.pop();
-
- ICPPASTQualifiedName qualifiedName = nodeFactory.newQualifiedName();
- qualifiedName.addName(name);
- qualifiedName.setFullyQualified(true);
- setOffsetAndLength(qualifiedName);
- astStack.push(qualifiedName);
- }
-
- /**
- * selection_statement ::= switch '(' condition ')' statement
- */
- public void consumeStatementSwitch() {
- IASTStatement body = (IASTStatement) astStack.pop();
-
- Object condition = astStack.pop();
-
- IASTSwitchStatement stat;
- if (condition instanceof IASTExpression)
- stat = nodeFactory.newSwitchStatement((IASTExpression) condition, body);
- else
- stat = nodeFactory.newSwitchStatement((IASTDeclaration) condition, body);
-
- setOffsetAndLength(stat);
- astStack.push(stat);
- }
-
- public void consumeStatementIf(boolean hasElse) {
- IASTStatement elseClause = hasElse ? (IASTStatement) astStack.pop() : null;
- IASTStatement thenClause = (IASTStatement) astStack.pop();
-
- Object condition = astStack.pop();
-
- IASTIfStatement ifStatement;
- if (condition instanceof IASTExpression)
- ifStatement = nodeFactory.newIfStatement((IASTExpression) condition, thenClause, elseClause);
- else
- ifStatement = nodeFactory.newIfStatement((IASTDeclaration) condition, thenClause, elseClause);
-
- setOffsetAndLength(ifStatement);
- astStack.push(ifStatement);
- }
-
- /**
- * iteration_statement ::= 'while' '(' condition ')' statement
- */
- public void consumeStatementWhileLoop() {
- IASTStatement body = (IASTStatement) astStack.pop();
-
- Object condition = astStack.pop();
-
- IASTWhileStatement whileStatement;
- if (condition instanceof IASTExpression)
- whileStatement = nodeFactory.newWhileStatement((IASTExpression) condition, body);
- else
- whileStatement = nodeFactory.newWhileStatement((IASTDeclaration) condition, body);
-
- setOffsetAndLength(whileStatement);
- astStack.push(whileStatement);
- }
-
- /**
- */
- public void consumeStatementForLoop() {
- IASTStatement body = (IASTStatement) astStack.pop();
- IASTExpression expr = (IASTExpression) astStack.pop();
- Object condition = astStack.pop(); // can be an expression or a declaration
- IASTStatement initializer = (IASTStatement) astStack.pop();
-
- // bug 234463, fix for content assist to work in this case
- int TK_EOC = TK_EndOfCompletion; // TODO: change this in the grammar file
- List<IToken> tokens = stream.getRuleTokens();
- if (matchTokens(tokens, tokenMap, TK_for, TK_LeftParen, TK_Completion, TK_EOC, TK_EOC, TK_EOC, TK_EOC)) {
- IASTName name = createName(tokens.get(2));
- IASTIdExpression idExpression = nodeFactory.newIdExpression(name);
- ParserUtil.setOffsetAndLength(idExpression, offset(name), length(name));
- initializer = nodeFactory.newExpressionStatement(idExpression);
- ParserUtil.setOffsetAndLength(initializer, offset(name), length(name));
- }
-
- int TK_SC = TK_SemiColon;
- IASTExpressionStatement expressionStatement = null;
- if (initializer instanceof IASTDeclarationStatement) {
- IASTDeclarationStatement declarationStatement = (IASTDeclarationStatement) initializer;
- List<IToken> expressionTokens = stream.getRuleTokens();
-
- //find the first semicolon
- int end_pos = -1;
- for (int i = 0, n = expressionTokens.size(); i < n; i++) {
- if (tokenMap.mapKind(expressionTokens.get(i).getKind()) == TK_SC) {
- end_pos = i;
- break;
- }
- }
-
- if (end_pos != -1) {
- expressionTokens = expressionTokens.subList(2, end_pos);
-
- ISecondaryParser<IASTExpression> expressionParser = parserFactory.getExpressionParser(stream,
- properties);
- IASTExpression expr1 = runSecondaryParser(expressionParser, expressionTokens);
-
- if (expr1 != null) { // the parse may fail
- expressionStatement = nodeFactory.newExpressionStatement(expr1);
- setOffsetAndLength(expressionStatement);
- }
- }
-
- if (expressionStatement == null)
- initializer = declarationStatement;
- else {
- initializer = createAmbiguousStatement(declarationStatement, expressionStatement);
- setOffsetAndLength(initializer);
- }
- }
-
- IASTForStatement forStat;
- if (condition instanceof IASTExpression)
- forStat = nodeFactory.newForStatement(initializer, (IASTExpression) condition, expr, body);
- else // its a declaration or its null
- forStat = nodeFactory.newForStatement(initializer, (IASTDeclaration) condition, expr, body);
-
- setOffsetAndLength(forStat);
- astStack.push(forStat);
- }
-
- /**
- * try_block
- * ::= 'try' compound_statement <openscope-ast> handler_seq
- */
- public void consumeStatementTryBlock(boolean hasCatchBlock) {
- List<Object> handlerSeq = hasCatchBlock ? astStack.closeScope() : Collections.emptyList();
- IASTStatement body = (IASTStatement) astStack.pop();
-
- ICPPASTTryBlockStatement tryStatement = nodeFactory.newTryBlockStatement(body);
-
- for (Object handler : handlerSeq)
- tryStatement.addCatchHandler((ICPPASTCatchHandler) handler);
-
- setOffsetAndLength(tryStatement);
- astStack.push(tryStatement);
- }
-
- /**
- * handler
- * ::= 'catch' '(' exception_declaration ')' compound_statement
- * | 'catch' '(' '...' ')' compound_statement
- */
- public void consumeStatementCatchHandler(boolean hasEllipsis) {
- IASTStatement body = (IASTStatement) astStack.pop();
- IASTDeclaration decl = hasEllipsis ? null : (IASTDeclaration) astStack.pop();
-
- ICPPASTCatchHandler catchHandler = nodeFactory.newCatchHandler(decl, body);
- catchHandler.setIsCatchAll(hasEllipsis);
-
- setOffsetAndLength(catchHandler);
- astStack.push(catchHandler);
- }
-
- /**
- * nested_name_specifier
- * ::= class_or_namespace_name '::' nested_name_specifier_with_template
- * | class_or_namespace_name '::'
- *
- * nested_name_specifier_with_template
- * ::= class_or_namespace_name_with_template '::' nested_name_specifier_with_template
- * | class_or_namespace_name_with_template '::'
- *
- *
- * Creates and updates a list of the nested names on the stack.
- * Important: the names in the list are in *reverse* order,
- * this is because the actions fire in reverse order.
- */
- @SuppressWarnings("unchecked")
- public void consumeNestedNameSpecifier(final boolean hasNested) {
- LinkedList<IASTName> names;
- if (hasNested)
- names = (LinkedList<IASTName>) astStack.pop();
- else
- names = new LinkedList<>();
-
- IASTName name = (IASTName) astStack.pop();
- names.add(name);
-
- astStack.push(names);
- }
-
- public void consumeNestedNameSpecifierEmpty() {
- // can't use Collections.EMPTY_LIST because we need a list thats mutable
- astStack.push(new LinkedList<IASTName>());
- }
-
- /**
- * The template keyword is optional but must be the leftmost token.
- *
- * This just throws away the template keyword.
- */
- public void consumeNameWithTemplateKeyword() {
- IASTName name = (IASTName) astStack.pop();
- astStack.pop(); // pop the template keyword
- astStack.push(name);
- }
-
- /**
- * qualified_id
- * ::= dcolon_opt nested_name_specifier any_name
- */
- public void consumeQualifiedId(boolean hasTemplateKeyword) {
- IASTName qualifiedName = subRuleQualifiedName(hasTemplateKeyword);
- astStack.push(qualifiedName);
- }
-
- private IASTName createQualifiedName(LinkedList<IASTName> nestedNames, int startOffset, int endOffset,
- boolean startsWithColonColon) {
- return createQualifiedName(nestedNames, startOffset, endOffset, startsWithColonColon, false);
- }
-
- /**
- * Creates a qualified name from a list of names (that must be in reverse order).
- *
- * @param names List of name nodes in reverse order
- */
- private IASTName createQualifiedName(LinkedList<IASTName> names, int startOffset, int endOffset,
- boolean startsWithColonColon, boolean endsWithColonColon) {
- if (!endsWithColonColon && !startsWithColonColon && names.size() == 1)
- return names.getFirst(); // its actually an unqualified name
-
- ICPPASTQualifiedName qualifiedName = nodeFactory.newQualifiedName();
- qualifiedName.setFullyQualified(startsWithColonColon);
- ParserUtil.setOffsetAndLength(qualifiedName, startOffset, endOffset - startOffset);
- for (IASTName name : reverseIterable(names))
- qualifiedName.addName(name);
-
- // there must be a dummy name in the AST after the last double colon, this happens with pointer to member names
- if (endsWithColonColon) {
- IASTName dummyName = nodeFactory.newName();
- ParserUtil.setOffsetAndLength(dummyName, endOffset, 0);
- qualifiedName.addName(dummyName);
- }
-
- return qualifiedName;
- }
-
- /**
- * Consumes grammar sub-rules of the following form:
- *
- * dcolon_opt nested_name_specifier_opt keyword_opt name
- *
- * Where name is any rule that produces an IASTName node on the stack.
- * Does not place the resulting node on the stack, returns it instead.
- */
- @SuppressWarnings("unchecked")
- private IASTName subRuleQualifiedName(boolean hasOptionalKeyword) {
- IASTName lastName = (IASTName) astStack.pop();
-
- if (hasOptionalKeyword) // this is usually a template keyword and can be ignored
- astStack.pop();
-
- LinkedList<IASTName> nestedNames = (LinkedList<IASTName>) astStack.pop();
- IToken dColon = (IToken) astStack.pop();
-
- if (nestedNames.isEmpty() && dColon == null) { // then its not a qualified name
- return lastName;
- }
-
- nestedNames.addFirst(lastName); // the list of names is in reverse order
-
- int startOffset = dColon == null ? offset(nestedNames.getLast()) : offset(dColon);
- int endOffset = endOffset(lastName);
-
- return createQualifiedName(nestedNames, startOffset, endOffset, dColon != null);
- }
-
- /**
- * pseudo_destructor_name
- * ::= dcolon_opt nested_name_specifier_opt type_name '::' destructor_type_name
- * | dcolon_opt nested_name_specifier 'template' template_id '::' destructor_type_name
- * | dcolon_opt nested_name_specifier_opt destructor_type_name
- */
- @SuppressWarnings("unchecked")
- public void consumePsudoDestructorName(boolean hasExtraTypeName) {
- IASTName destructorTypeName = (IASTName) astStack.pop();
- IASTName extraName = hasExtraTypeName ? (IASTName) astStack.pop() : null;
- LinkedList<IASTName> nestedNames = (LinkedList<IASTName>) astStack.pop();
- IToken dColon = (IToken) astStack.pop();
-
- if (hasExtraTypeName)
- nestedNames.addFirst(extraName);
-
- nestedNames.addFirst(destructorTypeName);
-
- int startOffset = dColon == null ? offset(nestedNames.getLast()) : offset(dColon);
- int endOffset = endOffset(destructorTypeName);
- IASTName qualifiedName = createQualifiedName(nestedNames, startOffset, endOffset, dColon != null);
-
- setOffsetAndLength(qualifiedName);
- astStack.push(qualifiedName);
- }
-
- /**
- * namespace_alias_definition
- * ::= 'namespace' 'identifier' '=' dcolon_opt nested_name_specifier_opt namespace_name ';'
- */
- public void consumeNamespaceAliasDefinition() {
- IASTName qualifiedName = subRuleQualifiedName(false);
-
- IASTName alias = createName(stream.getRuleTokens().get(1));
- ICPPASTNamespaceAlias namespaceAlias = nodeFactory.newNamespaceAlias(alias, qualifiedName);
-
- setOffsetAndLength(namespaceAlias);
- astStack.push(namespaceAlias);
- }
-
- /**
- * using_declaration
- * ::= 'using' typename_opt dcolon_opt nested_name_specifier_opt unqualified_id ';'
- */
- public void consumeUsingDeclaration() {
- IASTName qualifiedName = subRuleQualifiedName(false);
- boolean hasTypenameKeyword = astStack.pop() == PLACE_HOLDER;
-
- ICPPASTUsingDeclaration usingDeclaration = nodeFactory.newUsingDeclaration(qualifiedName);
- usingDeclaration.setIsTypename(hasTypenameKeyword);
-
- setOffsetAndLength(usingDeclaration);
- astStack.push(usingDeclaration);
- }
-
- /**
- * using_directive
- * ::= 'using' 'namespace' dcolon_opt nested_name_specifier_opt namespace_name ';'
- */
- public void consumeUsingDirective() {
- IASTName qualifiedName = subRuleQualifiedName(false);
-
- ICPPASTUsingDirective usingDirective = nodeFactory.newUsingDirective(qualifiedName);
- setOffsetAndLength(usingDirective);
- astStack.push(usingDirective);
- }
-
- /**
- * linkage_specification
- * ::= 'extern' 'stringlit' '{' <openscope-ast> declaration_seq_opt '}'
- * | 'extern' 'stringlit' <openscope-ast> declaration
- */
- public void consumeLinkageSpecification() {
- String name = stream.getRuleTokens().get(1).toString();
- ICPPASTLinkageSpecification linkageSpec = nodeFactory.newLinkageSpecification(name);
-
- for (Object declaration : astStack.closeScope())
- linkageSpec.addDeclaration((IASTDeclaration) declaration);
-
- setOffsetAndLength(linkageSpec);
- astStack.push(linkageSpec);
- }
-
- /**
- * original_namespace_definition
- * ::= 'namespace' identifier_name '{' <openscope-ast> declaration_seq_opt '}'
- *
- * extension_namespace_definition
- * ::= 'namespace' original_namespace_name '{' <openscope-ast> declaration_seq_opt '}'
- *
- * unnamed_namespace_definition
- * ::= 'namespace' '{' <openscope-ast> declaration_seq_opt '}'
- */
- public void consumeNamespaceDefinition(boolean hasName) {
- List<Object> declarations = astStack.closeScope();
- IASTName namespaceName = hasName ? (IASTName) astStack.pop() : nodeFactory.newName();
-
- ICPPASTNamespaceDefinition definition = nodeFactory.newNamespaceDefinition(namespaceName);
-
- for (Object declaration : declarations)
- definition.addDeclaration((IASTDeclaration) declaration);
-
- setOffsetAndLength(definition);
- astStack.push(definition);
- }
-
- /**
- * template_declaration
- * ::= export_opt 'template' '<' <openscope-ast> template_parameter_list '>' declaration
- */
- public void consumeTemplateDeclaration() {
- IASTDeclaration declaration = (IASTDeclaration) astStack.pop();
-
- // For some reason ambiguous declarators cause bugs when they are a part of a template declaration.
- // But it shouldn't be ambiguous anyway, so just throw away the ambiguity node.
- resolveAmbiguousDeclaratorsToFunction(declaration);
-
- ICPPASTTemplateDeclaration templateDeclaration = nodeFactory.newTemplateDeclaration(declaration);
-
- for (Object param : astStack.closeScope())
- templateDeclaration.addTemplateParamter((ICPPASTTemplateParameter) param);
-
- boolean hasExportKeyword = astStack.pop() == PLACE_HOLDER;
- templateDeclaration.setExported(hasExportKeyword);
-
- setOffsetAndLength(templateDeclaration);
- astStack.push(templateDeclaration);
- }
-
- /**
- * If we know that a declarator must be a function declarator then we can resolve
- * the ambiguity without resorting to binding resolution.
- */
- private static void resolveAmbiguousDeclaratorsToFunction(IASTDeclaration declaration) {
- if (declaration instanceof IASTSimpleDeclaration) {
- for (IASTDeclarator declarator : ((IASTSimpleDeclaration) declaration).getDeclarators()) {
- if (declarator instanceof CPPASTAmbiguousDeclarator) {
- IASTAmbiguityParent owner = (IASTAmbiguityParent) declaration;
- CPPASTAmbiguousDeclarator ambiguity = (CPPASTAmbiguousDeclarator) declarator;
- owner.replace(ambiguity, ambiguity.getDeclarators()[0]);
- }
- }
- }
- }
-
- /**
- * explicit_instantiation
- * ::= 'template' declaration
- */
- public void consumeTemplateExplicitInstantiation() {
- IASTDeclaration declaration = (IASTDeclaration) astStack.pop();
- ICPPASTExplicitTemplateInstantiation instantiation = nodeFactory.newExplicitTemplateInstantiation(declaration);
-
- setOffsetAndLength(instantiation);
- astStack.push(instantiation);
- }
-
- /**
- * explicit_specialization
- * ::= 'template' '<' '>' declaration
- */
- public void consumeTemplateExplicitSpecialization() {
- IASTDeclaration declaration = (IASTDeclaration) astStack.pop();
- ICPPASTTemplateSpecialization specialization = nodeFactory.newTemplateSpecialization(declaration);
-
- setOffsetAndLength(specialization);
- astStack.push(specialization);
- }
-
- /**
- * Sets a token specifier.
- * Needs to be overrideable for new decl spec keywords.
- *
- * @param token Allows subclasses to override this method and use any
- * object to determine how to set a specifier.
- */
- public void setSpecifier(ICPPASTDeclSpecifier node, Object specifier) {
- if (!(specifier instanceof IToken))
- return;
-
- IToken token = (IToken) specifier;
- int kind = baseKind(token);
- switch (kind) {
- case TK_typedef:
- node.setStorageClass(IASTDeclSpecifier.sc_typedef);
- return;
- case TK_extern:
- node.setStorageClass(IASTDeclSpecifier.sc_extern);
- return;
- case TK_static:
- node.setStorageClass(IASTDeclSpecifier.sc_static);
- return;
- case TK_auto:
- node.setStorageClass(IASTDeclSpecifier.sc_auto);
- return;
- case TK_register:
- node.setStorageClass(IASTDeclSpecifier.sc_register);
- return;
- case TK_mutable:
- node.setStorageClass(ICPPASTDeclSpecifier.sc_mutable);
- return;
-
- case TK_inline:
- node.setInline(true);
- return;
- case TK_const:
- node.setConst(true);
- return;
- case TK_friend:
- node.setFriend(true);
- return;
- case TK_virtual:
- node.setVirtual(true);
- return;
- case TK_volatile:
- node.setVolatile(true);
- return;
- case TK_explicit:
- node.setExplicit(true);
- return;
- }
-
- if (node instanceof ICPPASTSimpleDeclSpecifier) {
- ICPPASTSimpleDeclSpecifier n = (ICPPASTSimpleDeclSpecifier) node;
- switch (kind) {
- case TK_void:
- n.setType(IASTSimpleDeclSpecifier.t_void);
- return;
- case TK_char:
- n.setType(IASTSimpleDeclSpecifier.t_char);
- return;
- case TK_int:
- n.setType(IASTSimpleDeclSpecifier.t_int);
- return;
- case TK_float:
- n.setType(IASTSimpleDeclSpecifier.t_float);
- return;
- case TK_double:
- n.setType(IASTSimpleDeclSpecifier.t_double);
- return;
- case TK_bool:
- n.setType(ICPPASTSimpleDeclSpecifier.t_bool);
- return;
- case TK_wchar_t:
- n.setType(ICPPASTSimpleDeclSpecifier.t_wchar_t);
- return;
-
- case TK_signed:
- n.setSigned(true);
- return;
- case TK_unsigned:
- n.setUnsigned(true);
- return;
- //if it is a longlong, donot set long, CDT_70_FIX_FROM_50-#8
- case TK_long:
- if (!n.isLongLong())
- n.setLong(true);
- return;
- case TK_short:
- n.setShort(true);
- return;
- }
- }
- }
-
- public void consumeDeclarationSpecifiersSimple() {
- ICPPASTDeclSpecifier declSpec = nodeFactory.newSimpleDeclSpecifier();
-
- for (Object token : astStack.closeScope())
- setSpecifier(declSpec, token);
-
- setOffsetAndLength(declSpec);
- astStack.push(declSpec);
- }
-
- /**
- * TODO: maybe move this into the superclass
- */
- public void consumeDeclarationSpecifiersComposite() {
- List<Object> topScope = astStack.closeScope();
-
- // There's already a composite or elaborated or enum type specifier somewhere on the stack, find it.
- ICPPASTDeclSpecifier declSpec = findFirstAndRemove(topScope, ICPPASTDeclSpecifier.class);
-
- // now apply the rest of the specifiers
- for (Object token : topScope)
- setSpecifier(declSpec, token);
-
- setOffsetAndLength(declSpec);
- astStack.push(declSpec);
- }
-
- // /**
- // * declaration_specifiers ::= <openscope> type_name_declaration_specifiers
- // */
- public void consumeDeclarationSpecifiersTypeName() {
- List<Object> topScope = astStack.closeScope();
- // There's a name somewhere on the stack, find it
- IASTName typeName = findFirstAndRemove(topScope, IASTName.class);
-
- // TODO what does the second argument mean?
- ICPPASTNamedTypeSpecifier declSpec = nodeFactory.newTypedefNameSpecifier(typeName);
-
- // now apply the rest of the specifiers
- for (Object token : topScope) {
- setSpecifier(declSpec, token);
- }
-
- // the only way there could be a typename token
- for (IToken token : stream.getRuleTokens()) {
- if (baseKind(token) == TK_typename) {
- declSpec.setIsTypename(true);
- break;
- }
- }
-
- setOffsetAndLength(declSpec);
- astStack.push(declSpec);
- }
-
- /**
- * elaborated_type_specifier
- * ::= class_keyword dcolon_opt nested_name_specifier_opt identifier_name
- * | class_keyword dcolon_opt nested_name_specifier_opt template_opt template_id_name
- * | 'enum' dcolon_opt nested_name_specifier_opt identifier_name
- */
- public void consumeTypeSpecifierElaborated(boolean hasOptionalTemplateKeyword) {
- IASTName name = subRuleQualifiedName(hasOptionalTemplateKeyword);
- int kind = getElaboratedTypeSpecifier(stream.getLeftIToken());
-
- IASTElaboratedTypeSpecifier typeSpecifier = nodeFactory.newElaboratedTypeSpecifier(kind, name);
-
- setOffsetAndLength(typeSpecifier);
- astStack.push(typeSpecifier);
- }
-
- private int getElaboratedTypeSpecifier(IToken token) {
- int kind = baseKind(token);
- switch (kind) {
- default:
- assert false : "wrong token kind: " + kind; //$NON-NLS-1$
- case TK_struct:
- return IASTElaboratedTypeSpecifier.k_struct;
- case TK_union:
- return IASTElaboratedTypeSpecifier.k_union;
- case TK_enum:
- return IASTElaboratedTypeSpecifier.k_enum;
- case TK_class:
- return ICPPASTElaboratedTypeSpecifier.k_class;
- }
- }
-
- /**
- * simple_declaration
- * ::= declaration_specifiers_opt <openscope-ast> init_declarator_list_opt ';'
- */
- public void consumeDeclarationSimple(boolean hasDeclaratorList) {
- List<Object> declarators = hasDeclaratorList ? astStack.closeScope() : new ArrayList<>();
- ICPPASTDeclSpecifier declSpec = (ICPPASTDeclSpecifier) astStack.pop(); // may be null
-
- List<IToken> ruleTokens = stream.getRuleTokens();
- IToken nameToken = null;
-
- // do not generate nodes for extra EOC tokens
- if (matchTokens(ruleTokens, tokenMap, TK_EndOfCompletion)) {
- return;
- }
-
- // In the case that a single completion token is parsed then it needs
- // to be interpreted as a named type specifier for content assist to work.
- else if (matchTokens(ruleTokens, tokenMap, TK_Completion, TK_EndOfCompletion)) {
- IASTName name = createName(stream.getLeftIToken());
- declSpec = nodeFactory.newTypedefNameSpecifier(name);
- ParserUtil.setOffsetAndLength(declSpec, offset(name), length(name));
- declarators = new ArrayList<>(); // throw away the bogus declarator
- }
-
- // can happen if implicit int is used
- else if (declSpec == null) {
- declSpec = nodeFactory.newSimpleDeclSpecifier();
- ParserUtil.setOffsetAndLength(declSpec, stream.getLeftIToken().getStartOffset(), 0);
- }
-
- else if (declarators.size() == 1 && disambiguateToConstructor(declSpec, (IASTDeclarator) declarators.get(0))) { // puts results of disambiguation onto stack
- declSpec = (ICPPASTDeclSpecifier) astStack.pop();
- declarators = Arrays.asList(astStack.pop());
- }
-
- // bug 80171, check for situation similar to: static var;
- // this will get parsed wrong, the following is a hack to rebuild the AST as it should have been parsed
- // exclude syntax "friend xxx"
- else if (declarators.isEmpty() && declSpec instanceof ICPPASTNamedTypeSpecifier && !declSpec.isFriend()
- && ruleTokens.size() >= 2
- && baseKind(nameToken = ruleTokens.get(ruleTokens.size() - 2)) == TK_identifier) {
-
- declSpec = nodeFactory.newSimpleDeclSpecifier();
- for (IToken t : ruleTokens.subList(0, ruleTokens.size() - 1))
- setSpecifier(declSpec, t);
-
- int offset = offset(stream.getLeftIToken());
- int length = endOffset(ruleTokens.get(ruleTokens.size() - 2)) - offset;
- ParserUtil.setOffsetAndLength(declSpec, offset, length);
-
- IASTName name = createName(nameToken);
- IASTDeclarator declarator = nodeFactory.newDeclarator(name);
- ParserUtil.setOffsetAndLength(declarator, nameToken);
- declarators.add(declarator);
- }
-
- IASTSimpleDeclaration declaration = nodeFactory.newSimpleDeclaration(declSpec);
- setOffsetAndLength(declaration);
- for (Object declarator : declarators)
- declaration.addDeclarator((IASTDeclarator) declarator);
-
- // simple ambiguity resolutions
- // if(declSpecifier.isFriend())
- // resolveAmbiguousDeclaratorsToFunction(declaration);
- //
- // if(declSpecifier instanceof IASTSimpleDeclSpecifier) {
- // IASTSimpleDeclSpecifier simple = (IASTSimpleDeclSpecifier) declSpecifier;
- // if(simple.getType() == IASTSimpleDeclSpecifier.t_void && declaration.getDeclarators()[0].getPointerOperators().length == 0)
- // resolveAmbiguousDeclaratorsToFunction(declaration);
- //
- // }
-
- astStack.push(declaration);
- }
-
- private boolean disambiguateToConstructor(IASTDeclSpecifier declSpec, IASTDeclarator declarator) {
- if (!(declSpec instanceof IASTNamedTypeSpecifier))
- return false;
-
- IASTNamedTypeSpecifier namedTypeSpecifier = (IASTNamedTypeSpecifier) declSpec;
- IASTName name = namedTypeSpecifier.getName();
- IASTDeclarator nested = declarator.getNestedDeclarator();
-
- ICPPASTSimpleDeclSpecifier simpleDeclSpec = nodeFactory.newSimpleDeclSpecifier(); // empty
- ParserUtil.setOffsetAndLength(simpleDeclSpec, stream.getLeftIToken().getStartOffset(), 0);
-
- if (!classNames.isEmpty() && nested != null && ParserUtil.isSameName(name, classNames.getLast())) {
-
- IASTName paramTypeName = nested.getName(); // reuse the parameter name node
- IASTNamedTypeSpecifier paramName = nodeFactory.newTypedefNameSpecifier(paramTypeName);
- ParserUtil.setOffsetAndLength(paramName, paramTypeName);
-
- IASTDeclarator paramDeclarator = nodeFactory.newDeclarator(nodeFactory.newName());
- ParserUtil.setOffsetAndLength(paramDeclarator, offset(paramName) + length(paramName), 0);
-
- ICPPASTParameterDeclaration parameter = nodeFactory.newParameterDeclaration(paramName, paramDeclarator);
- ParserUtil.setOffsetAndLength(parameter, paramName);
-
- ICPPASTFunctionDeclarator constructorDeclarator = nodeFactory.newFunctionDeclarator(name); // reuse the name node
- constructorDeclarator.addParameterDeclaration(parameter);
- ParserUtil.setOffsetAndLength(constructorDeclarator, offset(simpleDeclSpec),
- endOffset(paramDeclarator) - offset(simpleDeclSpec) + 1);
-
- astStack.push(constructorDeclarator);
- astStack.push(simpleDeclSpec);
- return true;
- }
-
- if (declarator instanceof IASTFunctionDeclarator && declarator.getName() instanceof ICPPASTQualifiedName) {
- ICPPASTQualifiedName qualifiedName = (ICPPASTQualifiedName) declarator.getName();
- //IASTName lastName = qualifiedName.getLastName();
-
- if (qualifiedName.isFullyQualified()) {
-
- ICPPASTQualifiedName newQualifiedName = nodeFactory.newQualifiedName();
- newQualifiedName.addName(name);
- for (ICPPASTNameSpecifier n : qualifiedName.getQualifier())
- newQualifiedName.addNameSpecifier(n);
- newQualifiedName.addName(qualifiedName.getLastName());
-
- ParserUtil.setOffsetAndLength(newQualifiedName, offset(name),
- endOffset(qualifiedName.getLastName()) - offset(name));
-
- declarator.setName(newQualifiedName);
- ParserUtil.setOffsetAndLength(declarator, offset(name),
- length(declarator) + offset(declarator) - offset(name));
-
- astStack.push(declarator);
- astStack.push(simpleDeclSpec);
- return true;
- }
- }
-
- return false;
- }
-
- public void consumeInitDeclaratorComplete() {
- // Don't do disambiguation when parsing for content assist,
- // trust me this makes things work out a lot better.
- if (completionNode != null)
- return;
-
- IASTDeclarator declarator = (IASTDeclarator) astStack.peek();
- if (!(declarator instanceof IASTFunctionDeclarator))
- return;
-
- ISecondaryParser<IASTDeclarator> secondaryParser = parserFactory.getNoFunctionDeclaratorParser(stream,
- properties);
- IASTDeclarator notFunctionDeclarator = runSecondaryParser(secondaryParser);
-
- if (notFunctionDeclarator == null)
- return;
-
- astStack.pop();
-
- IASTNode ambiguityNode = new CPPASTAmbiguousDeclarator(declarator, notFunctionDeclarator);
-
- setOffsetAndLength(ambiguityNode);
- astStack.push(ambiguityNode);
- }
-
- /**
- * visibility_label
- * ::= access_specifier_keyword ':'
- */
- public void consumeVisibilityLabel() {
- IToken specifier = (IToken) astStack.pop();
- int visibility = getAccessSpecifier(specifier);
- ICPPASTVisibilityLabel visibilityLabel = nodeFactory.newVisibilityLabel(visibility);
- setOffsetAndLength(visibilityLabel);
- astStack.push(visibilityLabel);
- }
-
- private int getAccessSpecifier(IToken token) {
- int kind = baseKind(token);
- switch (kind) {
- default:
- assert false : "wrong token kind: " + kind; //$NON-NLS-1$
- case TK_private:
- return ICPPASTVisibilityLabel.v_private;
- case TK_public:
- return ICPPASTVisibilityLabel.v_public;
- case TK_protected:
- return ICPPASTVisibilityLabel.v_protected;
- }
- }
-
- /**
- * base_specifier
- * ::= dcolon_opt nested_name_specifier_opt class_name
- * | 'virtual' access_specifier_keyword_opt dcolon_opt nested_name_specifier_opt class_name
- * | access_specifier_keyword 'virtual' dcolon_opt nested_name_specifier_opt class_name
- * | access_specifier_keyword dcolon_opt nested_name_specifier_opt class_name
- */
- public void consumeBaseSpecifier(boolean hasAccessSpecifier, boolean isVirtual) {
- IASTName name = subRuleQualifiedName(false);
-
- int visibility = 0; // this is the default value that the DOM parser uses
- if (hasAccessSpecifier) {
- IToken accessSpecifierToken = (IToken) astStack.pop();
- if (accessSpecifierToken != null)
- visibility = getAccessSpecifier(accessSpecifierToken);
- }
-
- ICPPASTBaseSpecifier baseSpecifier = nodeFactory.newBaseSpecifier(name, visibility, isVirtual);
- setOffsetAndLength(baseSpecifier);
- astStack.push(baseSpecifier);
- }
-
- /**
- * class_specifier
- * ::= class_head '{' <openscope-ast> member_declaration_list_opt '}'
- */
- public void consumeClassSpecifier() {
- List<Object> declarations = astStack.closeScope();
-
- // the class specifier is created by the rule for class_head
- IASTCompositeTypeSpecifier classSpecifier = (IASTCompositeTypeSpecifier) astStack.peek();
-
- for (Object declaration : declarations)
- classSpecifier.addMemberDeclaration((IASTDeclaration) declaration);
-
- setOffsetAndLength(classSpecifier);
-
- classNames.removeLast(); // pop the stack of class names
- }
-
- /**
- * class_head
- * ::= class_keyword identifier_name_opt <openscope-ast> base_clause_opt
- * | class_keyword template_id <openscope-ast> base_clause_opt
- * | class_keyword nested_name_specifier identifier_name <openscope-ast> base_clause_opt
- * | class_keyword nested_name_specifier template_id <openscope-ast> base_clause_opt
- */
- @SuppressWarnings("unchecked")
- public void consumeClassHead(boolean hasNestedNameSpecifier) {
- int key = getCompositeTypeSpecifier(stream.getLeftIToken());
- List<Object> baseSpecifiers = astStack.closeScope();
- // may be null, but if it is then hasNestedNameSpecifier == false
- IASTName className = (IASTName) astStack.pop();
-
- if (hasNestedNameSpecifier) {
- LinkedList<IASTName> nestedNames = (LinkedList<IASTName>) astStack.pop();
- nestedNames.addFirst(className);
- int startOffset = offset(nestedNames.getLast());
- int endOffset = endOffset(className);
- className = createQualifiedName(nestedNames, startOffset, endOffset, false);
- }
-
- if (className == null)
- className = nodeFactory.newName();
-
- ICPPASTCompositeTypeSpecifier classSpecifier = nodeFactory.newCompositeTypeSpecifier(key, className);
-
- for (Object base : baseSpecifiers)
- classSpecifier.addBaseSpecifier((ICPPASTBaseSpecifier) base);
-
- // the offset and length are set in consumeClassSpecifier()
- astStack.push(classSpecifier);
- classNames.add(className); // push
- }
-
- private int getCompositeTypeSpecifier(IToken token) {
- final int kind = baseKind(token);
- switch (kind) {
- default:
- assert false : "wrong token kind: " + kind; //$NON-NLS-1$
- case TK_struct:
- return IASTCompositeTypeSpecifier.k_struct;
- case TK_union:
- return IASTCompositeTypeSpecifier.k_union;
- case TK_class:
- return ICPPASTCompositeTypeSpecifier.k_class;
- }
- }
-
- /**
- * ptr_operator
- * ::= '*' <openscope-ast> cv_qualifier_seq_opt
- */
- public void consumePointer() {
- IASTPointer pointer = nodeFactory.newPointer();
- List<Object> tokens = astStack.closeScope();
- addCVQualifiersToPointer(pointer, tokens);
- setOffsetAndLength(pointer);
- astStack.push(pointer);
- }
-
- protected void addCVQualifiersToPointer(IASTPointer pointer, List<Object> tokens) {
- for (Object t : tokens) {
- switch (baseKind((IToken) t)) {
- case TK_const:
- pointer.setConst(true);
- break;
- case TK_volatile:
- pointer.setVolatile(true);
- break;
- }
- }
- }
-
- /**
- * ptr_operator
- * ::= '&'
- */
- public void consumeReferenceOperator() {
- ICPPASTReferenceOperator referenceOperator = nodeFactory.newReferenceOperator();
- setOffsetAndLength(referenceOperator);
- astStack.push(referenceOperator);
- }
-
- /**
- * ptr_operator
- * ::= dcolon_opt nested_name_specifier '*' <openscope-ast> cv_qualifier_seq_opt
- */
- @SuppressWarnings("unchecked")
- public void consumePointerToMember() {
- List<Object> qualifiers = astStack.closeScope();
- LinkedList<IASTName> nestedNames = (LinkedList<IASTName>) astStack.pop();
- IToken dColon = (IToken) astStack.pop();
-
- int startOffset = dColon == null ? offset(nestedNames.getLast()) : offset(dColon);
- int endOffset = endOffset(nestedNames.getFirst()); // temporary
-
- // find the last double colon by searching for it
- for (IToken t : reverseIterable(stream.getRuleTokens())) {
- if (baseKind(t) == TK_ColonColon) {
- endOffset = endOffset(t);
- break;
- }
- }
-
- IASTName name = createQualifiedName(nestedNames, startOffset, endOffset, dColon != null, true);
-
- ICPPASTPointerToMember pointer = nodeFactory.newPointerToMember(name);
- addCVQualifiersToPointer(pointer, qualifiers);
- setOffsetAndLength(pointer);
- astStack.push(pointer);
- }
-
- /**
- * initializer
- * ::= '(' expression_list ')'
- */
- public void consumeInitializerConstructor() {
- //CDT_70_FIX_FROM_50-#5
- Object o = astStack.pop();
- IASTInitializerClause[] initClauseList = null;
- if (o instanceof IASTExpressionList) {
- initClauseList = ((IASTExpressionList) o).getExpressions();
- } else if (o instanceof IASTInitializerClause) {
- initClauseList = new IASTInitializerClause[] { (IASTInitializerClause) o };
- }
-
- ICPPASTConstructorInitializer initializer = nodeFactory.newConstructorInitializer(initClauseList);
- setOffsetAndLength(initializer);
- astStack.push(initializer);
- }
-
- /**
- * function_direct_declarator
- * ::= basic_direct_declarator '(' <openscope-ast> parameter_declaration_clause ')'
- * <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
- */
- public void consumeDirectDeclaratorFunctionDeclarator(boolean hasDeclarator) {
- IASTName name = nodeFactory.newName();
- ICPPASTFunctionDeclarator declarator = nodeFactory.newFunctionDeclarator(name);
-
- List<Object> typeIds = astStack.closeScope();
- if (typeIds.size() == 1 && typeIds.get(0) == PLACE_HOLDER) { // fix for bug 86943
- declarator.setEmptyExceptionSpecification();
- } else {
- for (Object typeId : typeIds) {
- declarator.addExceptionSpecificationTypeId((IASTTypeId) typeId);
- }
- }
-
- for (Object token : astStack.closeScope()) {
- int kind = baseKind((IToken) token);
- switch (kind) {
- default:
- assert false : "wrong token kind: " + kind; //$NON-NLS-1$
- case TK_const:
- declarator.setConst(true);
- break;
- case TK_volatile:
- declarator.setVolatile(true);
- break;
- }
- }
-
- boolean isVarArgs = astStack.pop() == PLACE_HOLDER;
- declarator.setVarArgs(isVarArgs);
-
- for (Object o : astStack.closeScope()) {
- declarator.addParameterDeclaration((IASTParameterDeclaration) o);
- }
-
- if (hasDeclarator) {
- int endOffset = endOffset(stream.getRightIToken());
- addFunctionModifier(declarator, endOffset);
- } else {
- setOffsetAndLength(declarator);
- astStack.push(declarator);
- }
- }
-
- /**
- * Consume an empty bracketed abstract declarator.
- */
- public void consumeAbstractDeclaratorEmpty() {
- IASTName name = nodeFactory.newName();
- ParserUtil.setOffsetAndLength(name, offset(stream.getLeftIToken()) + 1, 0);
- IASTDeclarator declarator = nodeFactory.newDeclarator(name);
- setOffsetAndLength(declarator);
- astStack.push(declarator);
- }
-
- /**
- * mem_initializer
- * ::= mem_initializer_id '(' expression_list_opt ')'
- */
- public void consumeConstructorChainInitializer() {
- Object o = astStack.pop();
- IASTName name = (IASTName) astStack.pop();
- IASTInitializerClause[] initClauseList = null;
- if (o instanceof IASTExpressionList) {
- initClauseList = ((IASTExpressionList) o).getExpressions();
- } else if (o instanceof IASTInitializerClause) {
- initClauseList = new IASTInitializerClause[] { (IASTInitializerClause) o };
- }
- ICPPASTConstructorInitializer init = nodeFactory.newConstructorInitializer(initClauseList);
- int rule_start_offset = stream.getLeftIToken().getStartOffset();
- int initClauseList_offset = ParserUtil.offset(initClauseList[0]);
- List<IToken> ruleTokens = stream.getRuleTokens();
- int start_offset = -1;
-
- for (int i = initClauseList_offset, n = rule_start_offset; i >= n; i--) {
- if (tokenMap.mapKind(ruleTokens.get(i).getKind()) == TK_LeftParen) {
- start_offset = ruleTokens.get(i).getStartOffset();
- break;
- }
- }
- int ruleLength = stream.getRightIToken().getEndOffset() - start_offset;
- ParserUtil.setOffsetAndLength(init, start_offset, ruleLength < 0 ? 0 : ruleLength);
-
- ICPPASTConstructorChainInitializer initializer = nodeFactory.newConstructorChainInitializer(name, init);
- setOffsetAndLength(initializer);
- astStack.push(initializer);
- }
-
- /**
- * function_definition
- * ::= declaration_specifiers_opt function_direct_declarator
- * <openscope-ast> ctor_initializer_list_opt function_body
- *
- * | declaration_specifiers_opt function_direct_declarator
- * 'try' <openscope-ast> ctor_initializer_list_opt function_body <openscope-ast> handler_seq
- *
- */
- public void consumeFunctionDefinition(boolean isTryBlockDeclarator) {
- List<Object> handlers = isTryBlockDeclarator ? astStack.closeScope() : Collections.emptyList();
- IASTCompoundStatement body = (IASTCompoundStatement) astStack.pop();
- List<Object> initializers = astStack.closeScope();
- Object o = astStack.pop();
- IASTFunctionDeclarator declarator = (IASTFunctionDeclarator) o;
- Object o2 = astStack.pop();
- IASTDeclSpecifier declSpec = (IASTDeclSpecifier) o2; // may be null
-
- if (declSpec == null) { // can happen if implicit int is used
- declSpec = nodeFactory.newSimpleDeclSpecifier();
- ParserUtil.setOffsetAndLength(declSpec, stream.getLeftIToken().getStartOffset(), 0);
- } else if (disambiguateToConstructor(declSpec, declarator)) {
- declSpec = (IASTDeclSpecifier) astStack.pop();
- declarator = (IASTFunctionDeclarator) astStack.pop();
- }
-
- ICPPASTFunctionDefinition definition;
- if (isTryBlockDeclarator) {
- ICPPASTFunctionWithTryBlock tryblock = nodeFactory.newFunctionTryBlock(declSpec, declarator, body);
- for (Object handler : handlers)
- tryblock.addCatchHandler((ICPPASTCatchHandler) handler);
- definition = tryblock;
- } else {
- definition = nodeFactory.newFunctionDefinition(declSpec, declarator, body);
- }
-
- if (initializers != null && !initializers.isEmpty()) {
- for (Object initializer : initializers)
- definition.addMemberInitializer((ICPPASTConstructorChainInitializer) initializer);
- }
-
- setOffsetAndLength(definition);
- astStack.push(definition);
- }
-
- /**
- * member_declaration
- * ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name ';'
- */
- public void consumeMemberDeclarationQualifiedId() {
- IASTName qualifiedId = subRuleQualifiedName(true);
-
- // https://bugs.eclipse.org/bugs/show_bug.cgi?id=92793
- ICPPASTUsingDeclaration declaration = nodeFactory.newUsingDeclaration(qualifiedId);
- setOffsetAndLength(declaration);
-
- astStack.push(declaration);
- }
-
- /**
- * member_declarator
- * ::= declarator constant_initializer
- */
-
- public void consumeMemberDeclaratorWithInitializer() {
-
- //CDT_70_FIX_FROM_50-#2
- //IASTInitializerExpression initializer = (IASTInitializerExpression) astStack.pop();
- IASTEqualsInitializer initializer = (IASTEqualsInitializer) astStack.pop();
- IASTDeclarator declarator = (IASTDeclarator) astStack.peek();
- setOffsetAndLength(declarator);
-
- if (declarator instanceof ICPPASTFunctionDeclarator) {
- IASTExpression expr = (IASTExpression) initializer.getInitializerClause();
- if (expr instanceof IASTLiteralExpression && "0".equals(expr.toString())) { //$NON-NLS-1$
- ((ICPPASTFunctionDeclarator) declarator).setPureVirtual(true);
- return;
- }
- }
-
- declarator.setInitializer(initializer);
- }
-
- /**
- * type_parameter
- * ::= 'class' identifier_name_opt -- simple type template parameter
- * | 'class' identifier_name_opt '=' type_id
- * | 'typename' identifier_name_opt
- * | 'typename' identifier_name_opt '=' type_id
- */
- public void consumeSimpleTypeTemplateParameter(boolean hasTypeId) {
- IASTTypeId typeId = hasTypeId ? (IASTTypeId) astStack.pop() : null;
-
- IASTName name = (IASTName) astStack.pop();
- if (name == null)
- name = nodeFactory.newName();
-
- int type = getTemplateParameterType(stream.getLeftIToken());
-
- ICPPASTSimpleTypeTemplateParameter templateParameter = nodeFactory.newSimpleTypeTemplateParameter(type, name,
- typeId);
-
- setOffsetAndLength(templateParameter);
- astStack.push(templateParameter);
- }
-
- private int getTemplateParameterType(IToken token) {
- int kind = baseKind(token);
- switch (kind) {
- default:
- assert false : "wrong token kind: " + kind; //$NON-NLS-1$
- case TK_class:
- return ICPPASTSimpleTypeTemplateParameter.st_class;
- case TK_typename:
- return ICPPASTSimpleTypeTemplateParameter.st_typename;
- }
- }
-
- /**
- * Simple type template parameters using the 'class' keyword are being parsed
- * wrong due to an ambiguity between type_parameter and parameter_declaration.
- *
- * eg) template <class T>
- *
- * The 'class T' part is being parsed as an elaborated type specifier instead
- * of a simple type template parameter.
- *
- * This method detects the incorrect parse, throws away the incorrect AST fragment,
- * and replaces it with the correct AST fragment.
- *
- * Yes its a hack.
- */
- public void consumeTemplateParamterDeclaration() {
- ISecondaryParser<ICPPASTTemplateParameter> typeParameterParser = parserFactory
- .getTemplateTypeParameterParser(stream, properties);
- IASTNode alternate = runSecondaryParser(typeParameterParser);
-
- if (alternate == null)
- return;
-
- astStack.pop(); // throw away the incorrect AST
- astStack.push(alternate); // replace it with the correct AST
- }
-
- /**
- * type_parameter
- * ::= 'template' '<' <openscope-ast> template_parameter_list '>' 'class' identifier_name_opt
- * | 'template' '<' <openscope-ast> template_parameter_list '>' 'class' identifier_name_opt '=' id_expression
- * @param hasIdExpr
- */
- public void consumeTemplatedTypeTemplateParameter(boolean hasIdExpr) {
- IASTExpression idExpression = hasIdExpr ? (IASTExpression) astStack.pop() : null;
- IASTName name = (IASTName) astStack.pop();
-
- ICPPASTTemplatedTypeTemplateParameter templateParameter = nodeFactory.newTemplatedTypeTemplateParameter(name,
- idExpression);
-
- for (Object param : astStack.closeScope())
- templateParameter.addTemplateParamter((ICPPASTTemplateParameter) param);
-
- setOffsetAndLength(templateParameter);
- astStack.push(templateParameter);
- }
-
- @Override
- protected IASTAmbiguousExpression createAmbiguousExpression(IASTExpression... expressions) {
- return new CPPASTAmbiguousExpression(expressions);
- }
-
- @Override
- protected IASTAmbiguousStatement createAmbiguousStatement(IASTStatement... statements) {
- return new CPPASTAmbiguousStatement(statements);
- }
-} \ No newline at end of file
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/cpp/CPPSecondaryParserFactory.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/cpp/CPPSecondaryParserFactory.java
deleted file mode 100644
index c936ea0c7f9..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/cpp/CPPSecondaryParserFactory.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2015 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.dom.lrparser.action.cpp;
-
-import java.util.Map;
-
-import org.eclipse.cdt.core.dom.ast.IASTDeclarator;
-import org.eclipse.cdt.core.dom.ast.IASTExpression;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateParameter;
-import org.eclipse.cdt.core.dom.lrparser.ISecondaryParser;
-import org.eclipse.cdt.core.dom.lrparser.action.ITokenStream;
-import org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPExpressionParser;
-import org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPNoCastExpressionParser;
-import org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPNoFunctionDeclaratorParser;
-import org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPSizeofExpressionParser;
-import org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPTemplateTypeParameterParser;
-
-public class CPPSecondaryParserFactory implements ICPPSecondaryParserFactory {
-
- private static final CPPSecondaryParserFactory DEFAULT_INSTANCE = new CPPSecondaryParserFactory();
-
- public static CPPSecondaryParserFactory getDefault() {
- return DEFAULT_INSTANCE;
- }
-
- @Override
- public ISecondaryParser<ICPPASTTemplateParameter> getTemplateTypeParameterParser(ITokenStream stream,
- Map<String, String> properties) {
- return new CPPTemplateTypeParameterParser(stream, properties);
- }
-
- @Override
- public ISecondaryParser<IASTDeclarator> getNoFunctionDeclaratorParser(ITokenStream stream,
- Map<String, String> properties) {
- return new CPPNoFunctionDeclaratorParser(stream, properties);
- }
-
- @Override
- public ISecondaryParser<IASTExpression> getExpressionParser(ITokenStream stream, Map<String, String> properties) {
- return new CPPExpressionParser(stream, properties);
- }
-
- @Override
- public ISecondaryParser<IASTExpression> getNoCastExpressionParser(ITokenStream stream,
- Map<String, String> properties) {
- return new CPPNoCastExpressionParser(stream, properties);
- }
-
- @Override
- public ISecondaryParser<IASTExpression> getSizeofExpressionParser(ITokenStream stream,
- Map<String, String> properties) {
- return new CPPSizeofExpressionParser(stream, properties);
- }
-
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/cpp/ICPPSecondaryParserFactory.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/cpp/ICPPSecondaryParserFactory.java
deleted file mode 100644
index 10af137eb5b..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/cpp/ICPPSecondaryParserFactory.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.dom.lrparser.action.cpp;
-
-import java.util.Map;
-
-import org.eclipse.cdt.core.dom.ast.IASTDeclarator;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateParameter;
-import org.eclipse.cdt.core.dom.lrparser.ISecondaryParser;
-import org.eclipse.cdt.core.dom.lrparser.action.ISecondaryParserFactory;
-import org.eclipse.cdt.core.dom.lrparser.action.ITokenStream;
-
-/**
- * Secondary parsers for resolving ambiguities specific to C++.
- *
- * @author Mike Kucera
- */
-public interface ICPPSecondaryParserFactory extends ISecondaryParserFactory {
-
- ISecondaryParser<ICPPASTTemplateParameter> getTemplateTypeParameterParser(ITokenStream stream,
- Map<String, String> properties);
-
- ISecondaryParser<IASTDeclarator> getNoFunctionDeclaratorParser(ITokenStream stream, Map<String, String> properties);
-
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/gnu/GCCBuildASTParserAction.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/gnu/GCCBuildASTParserAction.java
deleted file mode 100644
index cab1adf59ea..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/gnu/GCCBuildASTParserAction.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.dom.lrparser.action.gnu;
-
-import static org.eclipse.cdt.core.parser.util.CollectionUtils.findFirstAndRemove;
-
-import java.util.List;
-
-import org.eclipse.cdt.core.dom.ast.IASTExpression;
-import org.eclipse.cdt.core.dom.ast.IASTName;
-import org.eclipse.cdt.core.dom.ast.c.ICASTFieldDesignator;
-import org.eclipse.cdt.core.dom.ast.c.ICASTSimpleDeclSpecifier;
-import org.eclipse.cdt.core.dom.ast.c.ICNodeFactory;
-import org.eclipse.cdt.core.dom.ast.gnu.c.IGCCASTArrayRangeDesignator;
-import org.eclipse.cdt.core.dom.lrparser.action.ISecondaryParserFactory;
-import org.eclipse.cdt.core.dom.lrparser.action.ITokenStream;
-import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack;
-import org.eclipse.cdt.core.dom.lrparser.action.c99.C99BuildASTParserAction;
-
-public class GCCBuildASTParserAction extends C99BuildASTParserAction {
-
- private final ICNodeFactory nodeFactory;
-
- public GCCBuildASTParserAction(ITokenStream parser, ScopedStack<Object> astStack, ICNodeFactory nodeFactory,
- ISecondaryParserFactory parserFactory) {
- super(parser, astStack, nodeFactory, parserFactory);
- this.nodeFactory = nodeFactory;
- }
-
- /**
- * designator_base
- * ::= identifier_token ':'
- */
- public void consumeDesignatorFieldGCC() {
- IASTName name = createName(stream.getLeftIToken());
- ICASTFieldDesignator designator = nodeFactory.newFieldDesignator(name);
- setOffsetAndLength(designator);
- astStack.push(designator);
- }
-
- /**
- * designator ::= '[' constant_expression '...' constant_expression']'
- */
- public void consumeDesignatorArrayRange() {
- IASTExpression ceiling = (IASTExpression) astStack.pop();
- IASTExpression floor = (IASTExpression) astStack.pop();
- IGCCASTArrayRangeDesignator designator = nodeFactory.newArrayRangeDesignatorGCC(floor, ceiling);
- setOffsetAndLength(designator);
- astStack.push(designator);
- }
-
- /**
- * typeof_type_specifier
- * ::= 'typeof' unary_expression
- *
- * typeof_declaration_specifiers
- * ::= typeof_type_specifier
- * | no_type_declaration_specifiers typeof_type_specifier
- * | typeof_declaration_specifiers no_type_declaration_specifier
- *
- * declaration_specifiers
- * ::= <openscope-ast> typeof_declaration_specifiers
- */
- public void consumeDeclarationSpecifiersTypeof() {
- List<Object> topScope = astStack.closeScope();
-
- // There's an expression somewhere on the stack, find it
- IASTExpression expr = findFirstAndRemove(topScope, IASTExpression.class);
- ICASTSimpleDeclSpecifier declSpec = nodeFactory.newSimpleDeclSpecifierGCC(expr);
-
- // now apply the rest of the specifiers
- for (Object token : topScope) {
- setSpecifier(declSpec, token);
- }
-
- setOffsetAndLength(declSpec);
- astStack.push(declSpec);
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/gnu/GCCSecondaryParserFactory.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/gnu/GCCSecondaryParserFactory.java
deleted file mode 100644
index 831737c20fa..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/gnu/GCCSecondaryParserFactory.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2015 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.dom.lrparser.action.gnu;
-
-import java.util.Map;
-
-import org.eclipse.cdt.core.dom.ast.IASTExpression;
-import org.eclipse.cdt.core.dom.lrparser.ISecondaryParser;
-import org.eclipse.cdt.core.dom.lrparser.action.ISecondaryParserFactory;
-import org.eclipse.cdt.core.dom.lrparser.action.ITokenStream;
-import org.eclipse.cdt.internal.core.dom.lrparser.c99.C99ExpressionParser;
-import org.eclipse.cdt.internal.core.dom.lrparser.c99.C99NoCastExpressionParser;
-import org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCSizeofExpressionParser;
-
-public class GCCSecondaryParserFactory implements ISecondaryParserFactory {
-
- public static final GCCSecondaryParserFactory DEFAULT_INSTANCE = new GCCSecondaryParserFactory();
-
- public static GCCSecondaryParserFactory getDefault() {
- return DEFAULT_INSTANCE;
- }
-
- @Override
- public ISecondaryParser<IASTExpression> getExpressionParser(ITokenStream stream, Map<String, String> properties) {
- return new C99ExpressionParser(stream, properties);
- }
-
- @Override
- public ISecondaryParser<IASTExpression> getNoCastExpressionParser(ITokenStream stream,
- Map<String, String> properties) {
- return new C99NoCastExpressionParser(stream, properties);
- }
-
- @Override
- public ISecondaryParser<IASTExpression> getSizeofExpressionParser(ITokenStream stream,
- Map<String, String> properties) {
- return new GCCSizeofExpressionParser(stream, properties);
- }
-} \ No newline at end of file
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/gnu/GNUBuildASTParserAction.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/gnu/GNUBuildASTParserAction.java
deleted file mode 100644
index 21f7c9c7a69..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/gnu/GNUBuildASTParserAction.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.dom.lrparser.action.gnu;
-
-import java.util.List;
-
-import org.eclipse.cdt.core.dom.ast.IASTASMDeclaration;
-import org.eclipse.cdt.core.dom.ast.IASTCompoundStatement;
-import org.eclipse.cdt.core.dom.ast.IASTName;
-import org.eclipse.cdt.core.dom.ast.INodeFactory;
-import org.eclipse.cdt.core.dom.ast.gnu.IGNUASTCompoundStatementExpression;
-import org.eclipse.cdt.core.dom.lrparser.action.AbstractParserAction;
-import org.eclipse.cdt.core.dom.lrparser.action.ITokenStream;
-import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack;
-import org.eclipse.cdt.core.dom.lrparser.action.TokenMap;
-import org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym;
-
-import lpg.lpgjavaruntime.IToken;
-
-public class GNUBuildASTParserAction extends AbstractParserAction {
-
- private final INodeFactory nodeFactory;
-
- private final TokenMap tokenMap;
-
- public GNUBuildASTParserAction(ITokenStream parser, ScopedStack<Object> astStack, INodeFactory nodeFactory) {
- super(parser, astStack);
-
- this.nodeFactory = nodeFactory;
- this.tokenMap = new TokenMap(GCCParsersym.orderedTerminalSymbols, parser.getOrderedTerminalSymbols());
- }
-
- @Override
- protected IASTName createName(char[] image) {
- return nodeFactory.newName(image);
- }
-
- @Override
- protected boolean isCompletionToken(IToken token) {
- return tokenMap.mapKind(token.getKind()) == GCCParsersym.TK_Completion;
- }
-
- /**
- * Add support for GCC extended ASM declaration syntax.
- *
- *
- * asm_definition -- same as in C++ but its not in C99 spec so we put it here
- * ::= 'asm' '(' 'stringlit' ')' ';'
- *
- * extended_asm_declaration
- * ::= 'asm' 'volatile' '(' extended_asm_param_seq ')' ';'
- * | 'asm' '(' extended_asm_param_seq ')' ';'
- *
- */
- public void consumeDeclarationASM() {
- List<IToken> tokens = stream.getRuleTokens();
-
- int firstToken = 2;
- if (tokenMap.mapKind(tokens.get(1).getKind()) == GCCParsersym.TK_volatile)
- firstToken = 3;
-
- StringBuilder sb = new StringBuilder();
- boolean first = true;
- for (IToken token : tokens.subList(firstToken, tokens.size() - 2)) {
- if (!first)
- sb.append(' ');
- sb.append(token.toString());
- first = false;
- }
-
- IASTASMDeclaration asm = nodeFactory.newASMDeclaration(sb.toString());
- setOffsetAndLength(asm);
- astStack.push(asm);
- }
-
- /**
- * primary_expression
- * ::= '(' compound_statement ')'
- */
- public void consumeCompoundStatementExpression() {
- IASTCompoundStatement compoundStatement = (IASTCompoundStatement) astStack.pop();
- IGNUASTCompoundStatementExpression expr = nodeFactory.newGNUCompoundStatementExpression(compoundStatement);
- setOffsetAndLength(expr);
- astStack.push(expr);
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/gnu/GPPBuildASTParserAction.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/gnu/GPPBuildASTParserAction.java
deleted file mode 100644
index 8d426ae8381..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/gnu/GPPBuildASTParserAction.java
+++ /dev/null
@@ -1,195 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2014 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.dom.lrparser.action.gnu;
-
-import static org.eclipse.cdt.core.parser.util.CollectionUtils.findFirstAndRemove;
-
-import java.util.List;
-
-import org.eclipse.cdt.core.dom.ast.IASTDeclaration;
-import org.eclipse.cdt.core.dom.ast.IASTExpression;
-import org.eclipse.cdt.core.dom.ast.IASTInitializerList;
-import org.eclipse.cdt.core.dom.ast.IASTPointer;
-import org.eclipse.cdt.core.dom.ast.IASTTypeId;
-import org.eclipse.cdt.core.dom.ast.IASTTypeIdInitializerExpression;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTExplicitTemplateInstantiation;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTPointerToMember;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTSimpleDeclSpecifier;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPNodeFactory;
-import org.eclipse.cdt.core.dom.lrparser.action.ITokenMap;
-import org.eclipse.cdt.core.dom.lrparser.action.ITokenStream;
-import org.eclipse.cdt.core.dom.lrparser.action.ParserUtil;
-import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack;
-import org.eclipse.cdt.core.dom.lrparser.action.TokenMap;
-import org.eclipse.cdt.core.dom.lrparser.action.cpp.CPPBuildASTParserAction;
-import org.eclipse.cdt.core.dom.lrparser.action.cpp.ICPPSecondaryParserFactory;
-import org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym;
-
-import lpg.lpgjavaruntime.IToken;
-
-public class GPPBuildASTParserAction extends CPPBuildASTParserAction {
- private final ICPPNodeFactory nodeFactory;
-
- private final ITokenMap gppTokenMap;
-
- public GPPBuildASTParserAction(ITokenStream stream, ScopedStack<Object> astStack, ICPPNodeFactory nodeFactory,
- ICPPSecondaryParserFactory parserFactory) {
- super(stream, astStack, nodeFactory, parserFactory);
- this.nodeFactory = nodeFactory;
- this.gppTokenMap = new TokenMap(GPPParsersym.orderedTerminalSymbols, stream.getOrderedTerminalSymbols());
- }
-
- /**
- * typeof_type_specifier
- * ::= 'typeof' unary_expression
- *
- * typeof_declaration_specifiers
- * ::= typeof_type_specifier
- * | no_type_declaration_specifiers typeof_type_specifier
- * | typeof_declaration_specifiers no_type_declaration_specifier
- *
- * declaration_specifiers
- * ::= <openscope-ast> typeof_declaration_specifiers
- */
- public void consumeDeclarationSpecifiersTypeof() {
- List<Object> topScope = astStack.closeScope();
-
- // There's an expression somewhere on the stack, find it
- IASTExpression expr = findFirstAndRemove(topScope, IASTExpression.class);
- //CDT_70_FIX_FROM_50-#7
- ICPPASTSimpleDeclSpecifier declSpec = nodeFactory.newSimpleDeclSpecifier();
- declSpec.setDeclTypeExpression(expr);
-
- // now apply the rest of the specifiers
- for (Object token : topScope) {
- setSpecifier(declSpec, token);
- }
-
- setOffsetAndLength(declSpec);
- astStack.push(declSpec);
- }
-
- /**
- * Replacement for the same method in CPPBuildASTParserAction
- */
- @Override
- public void consumeDeclarationSpecifiersSimple() {
- boolean isComplex = false;
- boolean isImaginary = false;
- int numLong = 0;
-
- List<Object> tokens = astStack.closeScope();
-
- for (Object o : tokens) {
- if (o instanceof IToken) {
- IToken token = (IToken) o;
- switch (gppTokenMap.mapKind(token.getKind())) {
- case GPPParsersym.TK__Complex:
- isComplex = true;
- break;
- case GPPParsersym.TK__Imaginary:
- isImaginary = true;
- break;
- case GPPParsersym.TK_long:
- numLong++;
- break;
- }
- }
- }
- //CDT_70_FIX_FROM_50-#7
- ICPPASTSimpleDeclSpecifier declSpec = nodeFactory.newSimpleDeclSpecifier();
- if (isComplex || isImaginary || numLong > 1) {
- // IGPPASTSimpleDeclSpecifier gppDeclSpec = nodeFactory.newSimpleDeclSpecifierGPP();
- declSpec.setComplex(isComplex);
- declSpec.setImaginary(isImaginary);
- declSpec.setLongLong(numLong > 1);
- declSpec.setLong(numLong == 1);
- //declSpec = gppDeclSpec;
- } else {
- declSpec = nodeFactory.newSimpleDeclSpecifier();
- }
-
- for (Object token : tokens) {
- setSpecifier(declSpec, token);
- }
-
- setOffsetAndLength(declSpec);
- astStack.push(declSpec);
- }
-
- private boolean hasRestrict(List<Object> tokens) {
- for (Object o : tokens) {
- IToken t = (IToken) o;
- if (gppTokenMap.mapKind(t.getKind()) == GPPParsersym.TK_restrict) {
- return true;
- }
- }
- return false;
- }
-
- /**
- * Restrict is allowed as a keyword.
- */
- @Override
- public void consumePointer() {
- boolean hasRestrict = hasRestrict(astStack.topScope());
- super.consumePointer();
-
- if (hasRestrict) {
- IASTPointer gppPointer = nodeFactory.newPointer();
- initializePointer((IASTPointer) astStack.pop(), gppPointer);
- astStack.push(gppPointer);
- }
- }
-
- private static void initializePointer(IASTPointer pointer, IASTPointer gppPointer) {
- gppPointer.setConst(pointer.isConst());
- gppPointer.setVolatile(pointer.isVolatile());
- gppPointer.setRestrict(true);
- ParserUtil.setOffsetAndLength(gppPointer, pointer);
- }
-
- @Override
- public void consumePointerToMember() {
- boolean hasRestrict = hasRestrict(astStack.topScope());
- super.consumePointerToMember();
-
- if (hasRestrict) {
- ICPPASTPointerToMember pointer = (ICPPASTPointerToMember) astStack.pop();
- ICPPASTPointerToMember gppPointer = nodeFactory.newPointerToMember(pointer.getName());
- initializePointer(pointer, gppPointer);
- astStack.push(gppPointer);
- }
-
- }
-
- public void consumeTemplateExplicitInstantiationGCC(int modifier) {
- IASTDeclaration declaration = (IASTDeclaration) astStack.pop();
- ICPPASTExplicitTemplateInstantiation instantiation = nodeFactory.newExplicitTemplateInstantiation(declaration);
- instantiation.setModifier(modifier);
- setOffsetAndLength(instantiation);
- astStack.push(instantiation);
- }
-
- /**
- * postfix_expression ::= '(' type_id ')' initializer_list
- */
- public void consumeExpressionTypeIdInitializer() {
- IASTInitializerList list = (IASTInitializerList) astStack.pop();
- IASTTypeId typeId = (IASTTypeId) astStack.pop();
- IASTTypeIdInitializerExpression expr = nodeFactory.newTypeIdInitializerExpression(typeId, list);
- setOffsetAndLength(expr);
- astStack.push(expr);
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/gnu/GPPSecondaryParserFactory.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/gnu/GPPSecondaryParserFactory.java
deleted file mode 100644
index 7c2e1c8b37b..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/gnu/GPPSecondaryParserFactory.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2015 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.dom.lrparser.action.gnu;
-
-import java.util.Map;
-
-import org.eclipse.cdt.core.dom.ast.IASTDeclarator;
-import org.eclipse.cdt.core.dom.ast.IASTExpression;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateParameter;
-import org.eclipse.cdt.core.dom.lrparser.ISecondaryParser;
-import org.eclipse.cdt.core.dom.lrparser.action.ITokenStream;
-import org.eclipse.cdt.core.dom.lrparser.action.cpp.ICPPSecondaryParserFactory;
-import org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPExpressionParser;
-import org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPNoCastExpressionParser;
-import org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPNoFunctionDeclaratorParser;
-import org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPTemplateTypeParameterParser;
-import org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPSizeofExpressionParser;
-
-public class GPPSecondaryParserFactory implements ICPPSecondaryParserFactory {
-
- private static final GPPSecondaryParserFactory DEFAULT_INSTANCE = new GPPSecondaryParserFactory();
-
- public static GPPSecondaryParserFactory getDefault() {
- return DEFAULT_INSTANCE;
- }
-
- @Override
- public ISecondaryParser<ICPPASTTemplateParameter> getTemplateTypeParameterParser(ITokenStream stream,
- Map<String, String> properties) {
- return new CPPTemplateTypeParameterParser(stream, properties);
- }
-
- @Override
- public ISecondaryParser<IASTDeclarator> getNoFunctionDeclaratorParser(ITokenStream stream,
- Map<String, String> properties) {
- return new CPPNoFunctionDeclaratorParser(stream, properties);
- }
-
- @Override
- public ISecondaryParser<IASTExpression> getExpressionParser(ITokenStream stream, Map<String, String> properties) {
- return new CPPExpressionParser(stream, properties);
- }
-
- @Override
- public ISecondaryParser<IASTExpression> getNoCastExpressionParser(ITokenStream stream,
- Map<String, String> properties) {
- return new CPPNoCastExpressionParser(stream, properties);
- }
-
- @Override
- public ISecondaryParser<IASTExpression> getSizeofExpressionParser(ITokenStream stream,
- Map<String, String> properties) {
- return new GPPSizeofExpressionParser(stream, properties);
- }
-
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/c99/C99Language.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/c99/C99Language.java
deleted file mode 100644
index 6ba449b2a8e..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/c99/C99Language.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2015 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.dom.lrparser.c99;
-
-import java.util.Map;
-
-import org.eclipse.cdt.core.dom.ILinkage;
-import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
-import org.eclipse.cdt.core.dom.lrparser.BaseExtensibleLanguage;
-import org.eclipse.cdt.core.dom.lrparser.IParser;
-import org.eclipse.cdt.core.dom.lrparser.ScannerExtensionConfiguration;
-import org.eclipse.cdt.core.dom.parser.IBuiltinBindingsProvider;
-import org.eclipse.cdt.core.dom.parser.IScannerExtensionConfiguration;
-import org.eclipse.cdt.core.dom.parser.c.ANSICParserExtensionConfiguration;
-import org.eclipse.cdt.core.index.IIndex;
-import org.eclipse.cdt.core.parser.IScanner;
-import org.eclipse.cdt.core.parser.ParserLanguage;
-import org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parser;
-
-/**
- * ILanguage implementation for the C99 parser.
- *
- * @author Mike Kucera
- */
-public class C99Language extends BaseExtensibleLanguage {
-
- public static final String ID = "org.eclipse.cdt.core.lrparser.c99"; //$NON-NLS-1$
-
- private static C99Language DEFAULT = new C99Language();
-
- public static C99Language getDefault() {
- return DEFAULT;
- }
-
- @Override
- protected IParser<IASTTranslationUnit> getParser(IScanner scanner, IIndex index, Map<String, String> properties) {
- return new C99Parser(scanner, DOMToC99TokenMap.DEFAULT_MAP, getBuiltinBindingsProvider(), index, properties);
- }
-
- @Override
- protected IScannerExtensionConfiguration getScannerExtensionConfiguration() {
- return ScannerExtensionConfiguration.createC();
- }
-
- @Override
- public String getId() {
- return ID;
- }
-
- @Override
- public int getLinkageID() {
- return ILinkage.C_LINKAGE_ID;
- }
-
- @Override
- protected ParserLanguage getParserLanguage() {
- return ParserLanguage.C;
- }
-
- private IBuiltinBindingsProvider getBuiltinBindingsProvider() {
- return new ANSICParserExtensionConfiguration().getBuiltinBindingsProvider();
- }
-
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/c99/DOMToC99TokenMap.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/c99/DOMToC99TokenMap.java
deleted file mode 100644
index b49ed623cf2..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/c99/DOMToC99TokenMap.java
+++ /dev/null
@@ -1,441 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2015 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.dom.lrparser.c99;
-
-import static org.eclipse.cdt.core.parser.IToken.tAMPER;
-import static org.eclipse.cdt.core.parser.IToken.tAMPERASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tAND;
-import static org.eclipse.cdt.core.parser.IToken.tARROW;
-import static org.eclipse.cdt.core.parser.IToken.tASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tBITCOMPLEMENT;
-import static org.eclipse.cdt.core.parser.IToken.tBITOR;
-import static org.eclipse.cdt.core.parser.IToken.tBITORASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tCHAR;
-import static org.eclipse.cdt.core.parser.IToken.tCOLON;
-import static org.eclipse.cdt.core.parser.IToken.tCOMMA;
-import static org.eclipse.cdt.core.parser.IToken.tCOMPLETION;
-import static org.eclipse.cdt.core.parser.IToken.tDECR;
-import static org.eclipse.cdt.core.parser.IToken.tDIV;
-import static org.eclipse.cdt.core.parser.IToken.tDIVASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tDOT;
-import static org.eclipse.cdt.core.parser.IToken.tELLIPSIS;
-import static org.eclipse.cdt.core.parser.IToken.tEND_OF_INPUT;
-import static org.eclipse.cdt.core.parser.IToken.tEOC;
-import static org.eclipse.cdt.core.parser.IToken.tEQUAL;
-import static org.eclipse.cdt.core.parser.IToken.tFLOATINGPT;
-import static org.eclipse.cdt.core.parser.IToken.tGT;
-import static org.eclipse.cdt.core.parser.IToken.tGTEQUAL;
-import static org.eclipse.cdt.core.parser.IToken.tIDENTIFIER;
-import static org.eclipse.cdt.core.parser.IToken.tINCR;
-import static org.eclipse.cdt.core.parser.IToken.tINTEGER;
-import static org.eclipse.cdt.core.parser.IToken.tLBRACE;
-import static org.eclipse.cdt.core.parser.IToken.tLBRACKET;
-import static org.eclipse.cdt.core.parser.IToken.tLCHAR;
-import static org.eclipse.cdt.core.parser.IToken.tLPAREN;
-import static org.eclipse.cdt.core.parser.IToken.tLSTRING;
-import static org.eclipse.cdt.core.parser.IToken.tLT;
-import static org.eclipse.cdt.core.parser.IToken.tLTEQUAL;
-import static org.eclipse.cdt.core.parser.IToken.tMINUS;
-import static org.eclipse.cdt.core.parser.IToken.tMINUSASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tMOD;
-import static org.eclipse.cdt.core.parser.IToken.tMODASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tNOT;
-import static org.eclipse.cdt.core.parser.IToken.tNOTEQUAL;
-import static org.eclipse.cdt.core.parser.IToken.tOR;
-import static org.eclipse.cdt.core.parser.IToken.tPLUS;
-import static org.eclipse.cdt.core.parser.IToken.tPLUSASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tQUESTION;
-import static org.eclipse.cdt.core.parser.IToken.tRBRACE;
-import static org.eclipse.cdt.core.parser.IToken.tRBRACKET;
-import static org.eclipse.cdt.core.parser.IToken.tRPAREN;
-import static org.eclipse.cdt.core.parser.IToken.tSEMI;
-import static org.eclipse.cdt.core.parser.IToken.tSHIFTL;
-import static org.eclipse.cdt.core.parser.IToken.tSHIFTLASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tSHIFTR;
-import static org.eclipse.cdt.core.parser.IToken.tSHIFTRASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tSTAR;
-import static org.eclipse.cdt.core.parser.IToken.tSTARASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tSTRING;
-import static org.eclipse.cdt.core.parser.IToken.tUNKNOWN_CHAR;
-import static org.eclipse.cdt.core.parser.IToken.tUTF16CHAR;
-import static org.eclipse.cdt.core.parser.IToken.tUTF16STRING;
-import static org.eclipse.cdt.core.parser.IToken.tUTF32CHAR;
-import static org.eclipse.cdt.core.parser.IToken.tUTF32STRING;
-import static org.eclipse.cdt.core.parser.IToken.tXOR;
-import static org.eclipse.cdt.core.parser.IToken.tXORASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.t__Bool;
-import static org.eclipse.cdt.core.parser.IToken.t__Complex;
-import static org.eclipse.cdt.core.parser.IToken.t__Imaginary;
-import static org.eclipse.cdt.core.parser.IToken.t_auto;
-import static org.eclipse.cdt.core.parser.IToken.t_break;
-import static org.eclipse.cdt.core.parser.IToken.t_case;
-import static org.eclipse.cdt.core.parser.IToken.t_char;
-import static org.eclipse.cdt.core.parser.IToken.t_const;
-import static org.eclipse.cdt.core.parser.IToken.t_continue;
-import static org.eclipse.cdt.core.parser.IToken.t_default;
-import static org.eclipse.cdt.core.parser.IToken.t_do;
-import static org.eclipse.cdt.core.parser.IToken.t_double;
-import static org.eclipse.cdt.core.parser.IToken.t_else;
-import static org.eclipse.cdt.core.parser.IToken.t_enum;
-import static org.eclipse.cdt.core.parser.IToken.t_extern;
-import static org.eclipse.cdt.core.parser.IToken.t_float;
-import static org.eclipse.cdt.core.parser.IToken.t_for;
-import static org.eclipse.cdt.core.parser.IToken.t_goto;
-import static org.eclipse.cdt.core.parser.IToken.t_if;
-import static org.eclipse.cdt.core.parser.IToken.t_inline;
-import static org.eclipse.cdt.core.parser.IToken.t_int;
-import static org.eclipse.cdt.core.parser.IToken.t_long;
-import static org.eclipse.cdt.core.parser.IToken.t_register;
-import static org.eclipse.cdt.core.parser.IToken.t_restrict;
-import static org.eclipse.cdt.core.parser.IToken.t_return;
-import static org.eclipse.cdt.core.parser.IToken.t_short;
-import static org.eclipse.cdt.core.parser.IToken.t_signed;
-import static org.eclipse.cdt.core.parser.IToken.t_sizeof;
-import static org.eclipse.cdt.core.parser.IToken.t_static;
-import static org.eclipse.cdt.core.parser.IToken.t_struct;
-import static org.eclipse.cdt.core.parser.IToken.t_switch;
-import static org.eclipse.cdt.core.parser.IToken.t_typedef;
-import static org.eclipse.cdt.core.parser.IToken.t_union;
-import static org.eclipse.cdt.core.parser.IToken.t_unsigned;
-import static org.eclipse.cdt.core.parser.IToken.t_void;
-import static org.eclipse.cdt.core.parser.IToken.t_volatile;
-import static org.eclipse.cdt.core.parser.IToken.t_while;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_And;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_AndAnd;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_AndAssign;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_Arrow;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_Assign;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_Bang;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_Caret;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_CaretAssign;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_Colon;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_Comma;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_Completion;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_Dot;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_DotDotDot;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_EOF_TOKEN;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_EQ;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_EndOfCompletion;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_GE;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_GT;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_Invalid;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_LE;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_LT;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_LeftBrace;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_LeftBracket;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_LeftParen;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_LeftShift;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_LeftShiftAssign;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_Minus;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_MinusAssign;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_MinusMinus;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_NE;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_Or;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_OrAssign;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_OrOr;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_Percent;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_PercentAssign;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_Plus;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_PlusAssign;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_PlusPlus;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_Question;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_RightBrace;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_RightBracket;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_RightParen;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_RightShift;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_RightShiftAssign;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_SemiColon;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_Slash;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_SlashAssign;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_Star;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_StarAssign;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_Tilde;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK__Bool;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK__Complex;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK__Imaginary;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_auto;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_break;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_case;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_char;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_charconst;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_const;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_continue;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_default;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_do;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_double;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_else;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_enum;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_extern;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_float;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_floating;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_for;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_goto;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_identifier;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_if;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_inline;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_int;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_integer;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_long;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_register;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_restrict;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_return;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_short;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_signed;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_sizeof;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_static;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_stringlit;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_struct;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_switch;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_typedef;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_union;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_unsigned;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_void;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_volatile;
-import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_while;
-
-import org.eclipse.cdt.core.dom.lrparser.IDOMTokenMap;
-import org.eclipse.cdt.core.parser.IToken;
-
-/**
- * Maps tokens types returned by CPreprocessor to token types
- * expected by the C99 parser.
- *
- * @author Mike Kucera
- */
-public final class DOMToC99TokenMap implements IDOMTokenMap {
-
- public static final DOMToC99TokenMap DEFAULT_MAP = new DOMToC99TokenMap();
-
- private DOMToC99TokenMap() {
- // just a private constructor
- }
-
- @Override
- public int getEOFTokenKind() {
- return TK_EOF_TOKEN;
- }
-
- @Override
- public int getEOCTokenKind() {
- return TK_EndOfCompletion;
- }
-
- @Override
- public int mapKind(IToken token) {
-
- switch (token.getType()) {
- case tIDENTIFIER:
- return TK_identifier;
- case tINTEGER:
- return TK_integer;
- case tCOLON:
- return TK_Colon;
- case tSEMI:
- return TK_SemiColon;
- case tCOMMA:
- return TK_Comma;
- case tQUESTION:
- return TK_Question;
- case tLPAREN:
- return TK_LeftParen;
- case tRPAREN:
- return TK_RightParen;
- case tLBRACKET:
- return TK_LeftBracket;
- case tRBRACKET:
- return TK_RightBracket;
- case tLBRACE:
- return TK_LeftBrace;
- case tRBRACE:
- return TK_RightBrace;
- case tPLUSASSIGN:
- return TK_PlusAssign;
- case tINCR:
- return TK_PlusPlus;
- case tPLUS:
- return TK_Plus;
- case tMINUSASSIGN:
- return TK_MinusAssign;
- case tDECR:
- return TK_MinusMinus;
- case tARROW:
- return TK_Arrow;
- case tMINUS:
- return TK_Minus;
- case tSTARASSIGN:
- return TK_StarAssign;
- case tSTAR:
- return TK_Star;
- case tMODASSIGN:
- return TK_PercentAssign;
- case tMOD:
- return TK_Percent;
- case tXORASSIGN:
- return TK_CaretAssign;
- case tXOR:
- return TK_Caret;
- case tAMPERASSIGN:
- return TK_AndAssign;
- case tAND:
- return TK_AndAnd;
- case tAMPER:
- return TK_And;
- case tBITORASSIGN:
- return TK_OrAssign;
- case tOR:
- return TK_OrOr;
- case tBITOR:
- return TK_Or;
- case tBITCOMPLEMENT:
- return TK_Tilde;
- case tNOTEQUAL:
- return TK_NE;
- case tNOT:
- return TK_Bang;
- case tEQUAL:
- return TK_EQ;
- case tASSIGN:
- return TK_Assign;
- case tUNKNOWN_CHAR:
- return TK_Invalid;
- case tSHIFTL:
- return TK_LeftShift;
- case tLTEQUAL:
- return TK_LE;
- case tLT:
- return TK_LT;
- case tSHIFTRASSIGN:
- return TK_RightShiftAssign;
- case tSHIFTR:
- return TK_RightShift;
- case tGTEQUAL:
- return TK_GE;
- case tGT:
- return TK_GT;
- case tSHIFTLASSIGN:
- return TK_LeftShiftAssign;
- case tELLIPSIS:
- return TK_DotDotDot;
- case tDOT:
- return TK_Dot;
- case tDIVASSIGN:
- return TK_SlashAssign;
- case tDIV:
- return TK_Slash;
-
- case t_auto:
- return TK_auto;
- case t_break:
- return TK_break;
- case t_case:
- return TK_case;
- case t_char:
- return TK_char;
- case t_const:
- return TK_const;
- case t_continue:
- return TK_continue;
- case t_default:
- return TK_default;
- case t_do:
- return TK_do;
- case t_double:
- return TK_double;
- case t_else:
- return TK_else;
- case t_enum:
- return TK_enum;
- case t_extern:
- return TK_extern;
- case t_float:
- return TK_float;
- case t_for:
- return TK_for;
- case t_goto:
- return TK_goto;
- case t_if:
- return TK_if;
- case t_inline:
- return TK_inline;
- case t_int:
- return TK_int;
- case t_long:
- return TK_long;
- case t_register:
- return TK_register;
- case t_return:
- return TK_return;
- case t_short:
- return TK_short;
- case t_sizeof:
- return TK_sizeof;
- case t_static:
- return TK_static;
- case t_signed:
- return TK_signed;
- case t_struct:
- return TK_struct;
- case t_switch:
- return TK_switch;
- case t_typedef:
- return TK_typedef;
- case t_union:
- return TK_union;
- case t_unsigned:
- return TK_unsigned;
- case t_void:
- return TK_void;
- case t_volatile:
- return TK_volatile;
- case t_while:
- return TK_while;
- case tFLOATINGPT:
- return TK_floating;
- case tSTRING:
- return TK_stringlit;
- case tLSTRING:
- return TK_stringlit;
- case tUTF16STRING:
- return TK_stringlit;
- case tUTF32STRING:
- return TK_stringlit;
- case tCHAR:
- return TK_charconst;
- case tLCHAR:
- return TK_charconst;
- case tUTF16CHAR:
- return TK_charconst;
- case tUTF32CHAR:
- return TK_charconst;
- case t__Bool:
- return TK__Bool;
- case t__Complex:
- return TK__Complex;
- case t__Imaginary:
- return TK__Imaginary;
- case t_restrict:
- return TK_restrict;
- case tCOMPLETION:
- return TK_Completion;
- case tEOC:
- return TK_EndOfCompletion;
- case tEND_OF_INPUT:
- return TK_EOF_TOKEN;
-
- default:
- assert false : "token not recognized by the C99 parser: " + token.getType(); //$NON-NLS-1$
- return TK_Invalid;
- }
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/cpp/DOMToISOCPPTokenMap.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/cpp/DOMToISOCPPTokenMap.java
deleted file mode 100644
index fe465f6821a..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/cpp/DOMToISOCPPTokenMap.java
+++ /dev/null
@@ -1,562 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2015 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.dom.lrparser.cpp;
-
-import static org.eclipse.cdt.core.parser.IToken.tAMPER;
-import static org.eclipse.cdt.core.parser.IToken.tAMPERASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tAND;
-import static org.eclipse.cdt.core.parser.IToken.tARROW;
-import static org.eclipse.cdt.core.parser.IToken.tARROWSTAR;
-import static org.eclipse.cdt.core.parser.IToken.tASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tBITCOMPLEMENT;
-import static org.eclipse.cdt.core.parser.IToken.tBITOR;
-import static org.eclipse.cdt.core.parser.IToken.tBITORASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tCHAR;
-import static org.eclipse.cdt.core.parser.IToken.tCOLON;
-import static org.eclipse.cdt.core.parser.IToken.tCOLONCOLON;
-import static org.eclipse.cdt.core.parser.IToken.tCOMMA;
-import static org.eclipse.cdt.core.parser.IToken.tCOMPLETION;
-import static org.eclipse.cdt.core.parser.IToken.tDECR;
-import static org.eclipse.cdt.core.parser.IToken.tDIV;
-import static org.eclipse.cdt.core.parser.IToken.tDIVASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tDOT;
-import static org.eclipse.cdt.core.parser.IToken.tDOTSTAR;
-import static org.eclipse.cdt.core.parser.IToken.tELLIPSIS;
-import static org.eclipse.cdt.core.parser.IToken.tEND_OF_INPUT;
-import static org.eclipse.cdt.core.parser.IToken.tEOC;
-import static org.eclipse.cdt.core.parser.IToken.tEQUAL;
-import static org.eclipse.cdt.core.parser.IToken.tFLOATINGPT;
-import static org.eclipse.cdt.core.parser.IToken.tGT;
-import static org.eclipse.cdt.core.parser.IToken.tGTEQUAL;
-import static org.eclipse.cdt.core.parser.IToken.tIDENTIFIER;
-import static org.eclipse.cdt.core.parser.IToken.tINCR;
-import static org.eclipse.cdt.core.parser.IToken.tINTEGER;
-import static org.eclipse.cdt.core.parser.IToken.tLBRACE;
-import static org.eclipse.cdt.core.parser.IToken.tLBRACKET;
-import static org.eclipse.cdt.core.parser.IToken.tLCHAR;
-import static org.eclipse.cdt.core.parser.IToken.tLPAREN;
-import static org.eclipse.cdt.core.parser.IToken.tLSTRING;
-import static org.eclipse.cdt.core.parser.IToken.tLT;
-import static org.eclipse.cdt.core.parser.IToken.tLTEQUAL;
-import static org.eclipse.cdt.core.parser.IToken.tMINUS;
-import static org.eclipse.cdt.core.parser.IToken.tMINUSASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tMOD;
-import static org.eclipse.cdt.core.parser.IToken.tMODASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tNOT;
-import static org.eclipse.cdt.core.parser.IToken.tNOTEQUAL;
-import static org.eclipse.cdt.core.parser.IToken.tOR;
-import static org.eclipse.cdt.core.parser.IToken.tPLUS;
-import static org.eclipse.cdt.core.parser.IToken.tPLUSASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tPOUND;
-import static org.eclipse.cdt.core.parser.IToken.tQUESTION;
-import static org.eclipse.cdt.core.parser.IToken.tRBRACE;
-import static org.eclipse.cdt.core.parser.IToken.tRBRACKET;
-import static org.eclipse.cdt.core.parser.IToken.tRPAREN;
-import static org.eclipse.cdt.core.parser.IToken.tSEMI;
-import static org.eclipse.cdt.core.parser.IToken.tSHIFTL;
-import static org.eclipse.cdt.core.parser.IToken.tSHIFTLASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tSHIFTR;
-import static org.eclipse.cdt.core.parser.IToken.tSHIFTRASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tSTAR;
-import static org.eclipse.cdt.core.parser.IToken.tSTARASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tSTRING;
-import static org.eclipse.cdt.core.parser.IToken.tUNKNOWN_CHAR;
-import static org.eclipse.cdt.core.parser.IToken.tUTF16CHAR;
-import static org.eclipse.cdt.core.parser.IToken.tUTF16STRING;
-import static org.eclipse.cdt.core.parser.IToken.tUTF32CHAR;
-import static org.eclipse.cdt.core.parser.IToken.tUTF32STRING;
-import static org.eclipse.cdt.core.parser.IToken.tXOR;
-import static org.eclipse.cdt.core.parser.IToken.tXORASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.t_asm;
-import static org.eclipse.cdt.core.parser.IToken.t_auto;
-import static org.eclipse.cdt.core.parser.IToken.t_bool;
-import static org.eclipse.cdt.core.parser.IToken.t_break;
-import static org.eclipse.cdt.core.parser.IToken.t_case;
-import static org.eclipse.cdt.core.parser.IToken.t_catch;
-import static org.eclipse.cdt.core.parser.IToken.t_char;
-import static org.eclipse.cdt.core.parser.IToken.t_class;
-import static org.eclipse.cdt.core.parser.IToken.t_const;
-import static org.eclipse.cdt.core.parser.IToken.t_const_cast;
-import static org.eclipse.cdt.core.parser.IToken.t_continue;
-import static org.eclipse.cdt.core.parser.IToken.t_default;
-import static org.eclipse.cdt.core.parser.IToken.t_delete;
-import static org.eclipse.cdt.core.parser.IToken.t_do;
-import static org.eclipse.cdt.core.parser.IToken.t_double;
-import static org.eclipse.cdt.core.parser.IToken.t_dynamic_cast;
-import static org.eclipse.cdt.core.parser.IToken.t_else;
-import static org.eclipse.cdt.core.parser.IToken.t_enum;
-import static org.eclipse.cdt.core.parser.IToken.t_explicit;
-import static org.eclipse.cdt.core.parser.IToken.t_export;
-import static org.eclipse.cdt.core.parser.IToken.t_extern;
-import static org.eclipse.cdt.core.parser.IToken.t_false;
-import static org.eclipse.cdt.core.parser.IToken.t_float;
-import static org.eclipse.cdt.core.parser.IToken.t_for;
-import static org.eclipse.cdt.core.parser.IToken.t_friend;
-import static org.eclipse.cdt.core.parser.IToken.t_goto;
-import static org.eclipse.cdt.core.parser.IToken.t_if;
-import static org.eclipse.cdt.core.parser.IToken.t_inline;
-import static org.eclipse.cdt.core.parser.IToken.t_int;
-import static org.eclipse.cdt.core.parser.IToken.t_long;
-import static org.eclipse.cdt.core.parser.IToken.t_mutable;
-import static org.eclipse.cdt.core.parser.IToken.t_namespace;
-import static org.eclipse.cdt.core.parser.IToken.t_new;
-import static org.eclipse.cdt.core.parser.IToken.t_operator;
-import static org.eclipse.cdt.core.parser.IToken.t_private;
-import static org.eclipse.cdt.core.parser.IToken.t_protected;
-import static org.eclipse.cdt.core.parser.IToken.t_public;
-import static org.eclipse.cdt.core.parser.IToken.t_register;
-import static org.eclipse.cdt.core.parser.IToken.t_reinterpret_cast;
-import static org.eclipse.cdt.core.parser.IToken.t_return;
-import static org.eclipse.cdt.core.parser.IToken.t_short;
-import static org.eclipse.cdt.core.parser.IToken.t_signed;
-import static org.eclipse.cdt.core.parser.IToken.t_sizeof;
-import static org.eclipse.cdt.core.parser.IToken.t_static;
-import static org.eclipse.cdt.core.parser.IToken.t_static_cast;
-import static org.eclipse.cdt.core.parser.IToken.t_struct;
-import static org.eclipse.cdt.core.parser.IToken.t_switch;
-import static org.eclipse.cdt.core.parser.IToken.t_template;
-import static org.eclipse.cdt.core.parser.IToken.t_this;
-import static org.eclipse.cdt.core.parser.IToken.t_throw;
-import static org.eclipse.cdt.core.parser.IToken.t_true;
-import static org.eclipse.cdt.core.parser.IToken.t_try;
-import static org.eclipse.cdt.core.parser.IToken.t_typedef;
-import static org.eclipse.cdt.core.parser.IToken.t_typeid;
-import static org.eclipse.cdt.core.parser.IToken.t_typename;
-import static org.eclipse.cdt.core.parser.IToken.t_union;
-import static org.eclipse.cdt.core.parser.IToken.t_unsigned;
-import static org.eclipse.cdt.core.parser.IToken.t_using;
-import static org.eclipse.cdt.core.parser.IToken.t_virtual;
-import static org.eclipse.cdt.core.parser.IToken.t_void;
-import static org.eclipse.cdt.core.parser.IToken.t_volatile;
-import static org.eclipse.cdt.core.parser.IToken.t_wchar_t;
-import static org.eclipse.cdt.core.parser.IToken.t_while;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_And;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_AndAnd;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_AndAssign;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_Arrow;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_ArrowStar;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_Assign;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_Bang;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_Caret;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_CaretAssign;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_Colon;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_ColonColon;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_Comma;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_Completion;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_Dot;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_DotDotDot;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_DotStar;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_EOF_TOKEN;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_EQ;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_EndOfCompletion;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_GE;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_GT;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_Invalid;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_LE;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_LT;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_LeftBrace;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_LeftBracket;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_LeftParen;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_LeftShift;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_LeftShiftAssign;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_Minus;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_MinusAssign;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_MinusMinus;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_NE;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_Or;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_OrAssign;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_OrOr;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_Percent;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_PercentAssign;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_Plus;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_PlusAssign;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_PlusPlus;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_Question;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_RightBrace;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_RightBracket;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_RightParen;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_RightShift;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_RightShiftAssign;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_SemiColon;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_Slash;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_SlashAssign;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_Star;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_StarAssign;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_Tilde;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_asm;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_auto;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_bool;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_break;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_case;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_catch;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_char;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_charconst;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_class;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_const;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_const_cast;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_continue;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_default;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_delete;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_do;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_double;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_dynamic_cast;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_else;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_enum;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_explicit;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_export;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_extern;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_false;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_float;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_floating;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_for;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_friend;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_goto;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_identifier;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_if;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_inline;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_int;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_integer;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_long;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_mutable;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_namespace;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_new;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_operator;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_private;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_protected;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_public;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_register;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_reinterpret_cast;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_return;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_short;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_signed;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_sizeof;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_static;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_static_cast;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_stringlit;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_struct;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_switch;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_template;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_this;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_throw;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_true;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_try;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_typedef;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_typeid;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_typename;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_union;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_unsigned;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_using;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_virtual;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_void;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_volatile;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_wchar_t;
-import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.TK_while;
-
-import org.eclipse.cdt.core.dom.lrparser.IDOMTokenMap;
-import org.eclipse.cdt.core.parser.IToken;
-
-/**
- * Maps tokens types returned by CPreprocessor to token types
- * expected by the C++ parser.
- *
- * @author Mike Kucera
- */
-public class DOMToISOCPPTokenMap implements IDOMTokenMap {
-
- public static final DOMToISOCPPTokenMap DEFAULT_MAP = new DOMToISOCPPTokenMap();
-
- private DOMToISOCPPTokenMap() {
- // just a private constructor
- }
-
- @Override
- public int getEOFTokenKind() {
- return TK_EOF_TOKEN;
- }
-
- @Override
- public int getEOCTokenKind() {
- return TK_EndOfCompletion;
- }
-
- @Override
- public int mapKind(IToken token) {
-
- switch (token.getType()) {
- case tIDENTIFIER:
- return TK_identifier;
- case tINTEGER:
- return TK_integer;
- case tCOLONCOLON:
- return TK_ColonColon;
- case tCOLON:
- return TK_Colon;
- case tSEMI:
- return TK_SemiColon;
- case tCOMMA:
- return TK_Comma;
- case tQUESTION:
- return TK_Question;
- case tLPAREN:
- return TK_LeftParen;
- case tRPAREN:
- return TK_RightParen;
- case tLBRACKET:
- return TK_LeftBracket;
- case tRBRACKET:
- return TK_RightBracket;
- case tLBRACE:
- return TK_LeftBrace;
- case tRBRACE:
- return TK_RightBrace;
- case tPLUSASSIGN:
- return TK_PlusAssign;
- case tINCR:
- return TK_PlusPlus;
- case tPLUS:
- return TK_Plus;
- case tMINUSASSIGN:
- return TK_MinusAssign;
- case tDECR:
- return TK_MinusMinus;
- case tARROWSTAR:
- return TK_ArrowStar;
- case tARROW:
- return TK_Arrow;
- case tMINUS:
- return TK_Minus;
- case tSTARASSIGN:
- return TK_StarAssign;
- case tSTAR:
- return TK_Star;
- case tMODASSIGN:
- return TK_PercentAssign;
- case tMOD:
- return TK_Percent;
- case tXORASSIGN:
- return TK_CaretAssign;
- case tXOR:
- return TK_Caret;
- case tAMPERASSIGN:
- return TK_AndAssign;
- case tAND:
- return TK_AndAnd;
- case tAMPER:
- return TK_And;
- case tBITORASSIGN:
- return TK_OrAssign;
- case tOR:
- return TK_OrOr;
- case tBITOR:
- return TK_Or;
- case tBITCOMPLEMENT:
- return TK_Tilde;
- case tNOTEQUAL:
- return TK_NE;
- case tNOT:
- return TK_Bang;
- case tEQUAL:
- return TK_EQ;
- case tASSIGN:
- return TK_Assign;
- case tUNKNOWN_CHAR:
- return TK_Invalid;
- case tSHIFTL:
- return TK_LeftShift;
- case tLTEQUAL:
- return TK_LE;
- case tLT:
- return TK_LT;
- case tSHIFTRASSIGN:
- return TK_RightShiftAssign;
- case tSHIFTR:
- return TK_RightShift;
- case tGTEQUAL:
- return TK_GE;
- case tGT:
- return TK_GT;
- case tSHIFTLASSIGN:
- return TK_LeftShiftAssign;
- case tELLIPSIS:
- return TK_DotDotDot;
- case tDOTSTAR:
- return TK_DotStar;
- case tDOT:
- return TK_Dot;
- case tDIVASSIGN:
- return TK_SlashAssign;
- case tDIV:
- return TK_Slash;
-
- case t_asm:
- return TK_asm;
- case t_auto:
- return TK_auto;
- case t_bool:
- return TK_bool;
- case t_break:
- return TK_break;
- case t_case:
- return TK_case;
- case t_catch:
- return TK_catch;
- case t_char:
- return TK_char;
- case t_class:
- return TK_class;
- case t_const:
- return TK_const;
- case t_const_cast:
- return TK_const_cast;
- case t_continue:
- return TK_continue;
- case t_default:
- return TK_default;
- case t_delete:
- return TK_delete;
- case t_do:
- return TK_do;
- case t_double:
- return TK_double;
- case t_dynamic_cast:
- return TK_dynamic_cast;
- case t_else:
- return TK_else;
- case t_enum:
- return TK_enum;
- case t_explicit:
- return TK_explicit;
- case t_export:
- return TK_export;
- case t_extern:
- return TK_extern;
- case t_false:
- return TK_false;
- case t_float:
- return TK_float;
- case t_for:
- return TK_for;
- case t_friend:
- return TK_friend;
- case t_goto:
- return TK_goto;
- case t_if:
- return TK_if;
- case t_inline:
- return TK_inline;
- case t_int:
- return TK_int;
- case t_long:
- return TK_long;
- case t_mutable:
- return TK_mutable;
- case t_namespace:
- return TK_namespace;
- case t_new:
- return TK_new;
- case t_operator:
- return TK_operator;
- case t_private:
- return TK_private;
- case t_protected:
- return TK_protected;
- case t_public:
- return TK_public;
- case t_register:
- return TK_register;
- case t_reinterpret_cast:
- return TK_reinterpret_cast;
- case t_return:
- return TK_return;
- case t_short:
- return TK_short;
- case t_sizeof:
- return TK_sizeof;
- case t_static:
- return TK_static;
- case t_static_cast:
- return TK_static_cast;
- case t_signed:
- return TK_signed;
- case t_struct:
- return TK_struct;
- case t_switch:
- return TK_switch;
- case t_template:
- return TK_template;
- case t_this:
- return TK_this;
- case t_throw:
- return TK_throw;
- case t_true:
- return TK_true;
- case t_try:
- return TK_try;
- case t_typedef:
- return TK_typedef;
- case t_typeid:
- return TK_typeid;
- case t_typename:
- return TK_typename;
- case t_union:
- return TK_union;
- case t_unsigned:
- return TK_unsigned;
- case t_using:
- return TK_using;
- case t_virtual:
- return TK_virtual;
- case t_void:
- return TK_void;
- case t_volatile:
- return TK_volatile;
- case t_wchar_t:
- return TK_wchar_t;
- case t_while:
- return TK_while;
-
- case tFLOATINGPT:
- return TK_floating;
- case tSTRING:
- return TK_stringlit;
- case tLSTRING:
- return TK_stringlit;
- case tUTF16STRING:
- return TK_stringlit;
- case tUTF32STRING:
- return TK_stringlit;
- case tCHAR:
- return TK_charconst;
- case tLCHAR:
- return TK_charconst;
- case tUTF16CHAR:
- return TK_charconst;
- case tUTF32CHAR:
- return TK_charconst;
- case tCOMPLETION:
- return TK_Completion;
- case tEOC:
- return TK_EndOfCompletion;
- case tEND_OF_INPUT:
- return TK_EOF_TOKEN;
- case tPOUND:
- return TK_Invalid;
-
- default:
- assert false : "token not recognized by the ISO CPP parser: " + token.getType(); //$NON-NLS-1$
- return TK_Invalid;
- }
- }
-
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/cpp/ISOCPPLanguage.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/cpp/ISOCPPLanguage.java
deleted file mode 100644
index 56a359691af..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/cpp/ISOCPPLanguage.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2015 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.dom.lrparser.cpp;
-
-import java.util.Map;
-
-import org.eclipse.cdt.core.dom.ILinkage;
-import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
-import org.eclipse.cdt.core.dom.lrparser.BaseExtensibleLanguage;
-import org.eclipse.cdt.core.dom.lrparser.IParser;
-import org.eclipse.cdt.core.dom.lrparser.ScannerExtensionConfiguration;
-import org.eclipse.cdt.core.dom.parser.IBuiltinBindingsProvider;
-import org.eclipse.cdt.core.dom.parser.IScannerExtensionConfiguration;
-import org.eclipse.cdt.core.dom.parser.cpp.ANSICPPParserExtensionConfiguration;
-import org.eclipse.cdt.core.index.IIndex;
-import org.eclipse.cdt.core.parser.IScanner;
-import org.eclipse.cdt.core.parser.ParserLanguage;
-import org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParser;
-
-/**
- * ILanguage implementation for the C++ parser.
- *
- * @author Mike Kucera
- */
-public class ISOCPPLanguage extends BaseExtensibleLanguage {
-
- public static final String ID = "org.eclipse.cdt.core.lrparser.isocpp"; //$NON-NLS-1$
-
- private static ISOCPPLanguage DEFAULT = new ISOCPPLanguage();
-
- public static ISOCPPLanguage getDefault() {
- return DEFAULT;
- }
-
- @Override
- protected IParser<IASTTranslationUnit> getParser(IScanner scanner, IIndex index, Map<String, String> properties) {
- return new CPPParser(scanner, DOMToISOCPPTokenMap.DEFAULT_MAP, getBuiltinBindingsProvider(), index, properties);
- }
-
- @Override
- protected IScannerExtensionConfiguration getScannerExtensionConfiguration() {
- return ScannerExtensionConfiguration.createCPP();
- }
-
- @Override
- public String getId() {
- return ID;
- }
-
- @Override
- public int getLinkageID() {
- return ILinkage.CPP_LINKAGE_ID;
- }
-
- @Override
- protected ParserLanguage getParserLanguage() {
- return ParserLanguage.CPP;
- }
-
- protected IBuiltinBindingsProvider getBuiltinBindingsProvider() {
- return new ANSICPPParserExtensionConfiguration().getBuiltinBindingsProvider();
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/gnu/DOMToGCCTokenMap.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/gnu/DOMToGCCTokenMap.java
deleted file mode 100644
index ab23aa22d19..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/gnu/DOMToGCCTokenMap.java
+++ /dev/null
@@ -1,466 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2015 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.dom.lrparser.gnu;
-
-import static org.eclipse.cdt.core.parser.IToken.tAMPER;
-import static org.eclipse.cdt.core.parser.IToken.tAMPERASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tAND;
-import static org.eclipse.cdt.core.parser.IToken.tARROW;
-import static org.eclipse.cdt.core.parser.IToken.tASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tBITCOMPLEMENT;
-import static org.eclipse.cdt.core.parser.IToken.tBITOR;
-import static org.eclipse.cdt.core.parser.IToken.tBITORASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tCHAR;
-import static org.eclipse.cdt.core.parser.IToken.tCOLON;
-import static org.eclipse.cdt.core.parser.IToken.tCOMMA;
-import static org.eclipse.cdt.core.parser.IToken.tCOMPLETION;
-import static org.eclipse.cdt.core.parser.IToken.tDECR;
-import static org.eclipse.cdt.core.parser.IToken.tDIV;
-import static org.eclipse.cdt.core.parser.IToken.tDIVASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tDOT;
-import static org.eclipse.cdt.core.parser.IToken.tELLIPSIS;
-import static org.eclipse.cdt.core.parser.IToken.tEND_OF_INPUT;
-import static org.eclipse.cdt.core.parser.IToken.tEOC;
-import static org.eclipse.cdt.core.parser.IToken.tEQUAL;
-import static org.eclipse.cdt.core.parser.IToken.tFLOATINGPT;
-import static org.eclipse.cdt.core.parser.IToken.tGT;
-import static org.eclipse.cdt.core.parser.IToken.tGTEQUAL;
-import static org.eclipse.cdt.core.parser.IToken.tIDENTIFIER;
-import static org.eclipse.cdt.core.parser.IToken.tINCR;
-import static org.eclipse.cdt.core.parser.IToken.tINTEGER;
-import static org.eclipse.cdt.core.parser.IToken.tLBRACE;
-import static org.eclipse.cdt.core.parser.IToken.tLBRACKET;
-import static org.eclipse.cdt.core.parser.IToken.tLCHAR;
-import static org.eclipse.cdt.core.parser.IToken.tLPAREN;
-import static org.eclipse.cdt.core.parser.IToken.tLSTRING;
-import static org.eclipse.cdt.core.parser.IToken.tLT;
-import static org.eclipse.cdt.core.parser.IToken.tLTEQUAL;
-import static org.eclipse.cdt.core.parser.IToken.tMINUS;
-import static org.eclipse.cdt.core.parser.IToken.tMINUSASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tMOD;
-import static org.eclipse.cdt.core.parser.IToken.tMODASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tNOT;
-import static org.eclipse.cdt.core.parser.IToken.tNOTEQUAL;
-import static org.eclipse.cdt.core.parser.IToken.tOR;
-import static org.eclipse.cdt.core.parser.IToken.tPLUS;
-import static org.eclipse.cdt.core.parser.IToken.tPLUSASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tQUESTION;
-import static org.eclipse.cdt.core.parser.IToken.tRBRACE;
-import static org.eclipse.cdt.core.parser.IToken.tRBRACKET;
-import static org.eclipse.cdt.core.parser.IToken.tRPAREN;
-import static org.eclipse.cdt.core.parser.IToken.tSEMI;
-import static org.eclipse.cdt.core.parser.IToken.tSHIFTL;
-import static org.eclipse.cdt.core.parser.IToken.tSHIFTLASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tSHIFTR;
-import static org.eclipse.cdt.core.parser.IToken.tSHIFTRASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tSTAR;
-import static org.eclipse.cdt.core.parser.IToken.tSTARASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tSTRING;
-import static org.eclipse.cdt.core.parser.IToken.tUNKNOWN_CHAR;
-import static org.eclipse.cdt.core.parser.IToken.tUTF16CHAR;
-import static org.eclipse.cdt.core.parser.IToken.tUTF16STRING;
-import static org.eclipse.cdt.core.parser.IToken.tUTF32CHAR;
-import static org.eclipse.cdt.core.parser.IToken.tUTF32STRING;
-import static org.eclipse.cdt.core.parser.IToken.tXOR;
-import static org.eclipse.cdt.core.parser.IToken.tXORASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.t__Bool;
-import static org.eclipse.cdt.core.parser.IToken.t__Complex;
-import static org.eclipse.cdt.core.parser.IToken.t__Imaginary;
-import static org.eclipse.cdt.core.parser.IToken.t_asm;
-import static org.eclipse.cdt.core.parser.IToken.t_auto;
-import static org.eclipse.cdt.core.parser.IToken.t_break;
-import static org.eclipse.cdt.core.parser.IToken.t_case;
-import static org.eclipse.cdt.core.parser.IToken.t_char;
-import static org.eclipse.cdt.core.parser.IToken.t_const;
-import static org.eclipse.cdt.core.parser.IToken.t_continue;
-import static org.eclipse.cdt.core.parser.IToken.t_default;
-import static org.eclipse.cdt.core.parser.IToken.t_do;
-import static org.eclipse.cdt.core.parser.IToken.t_double;
-import static org.eclipse.cdt.core.parser.IToken.t_else;
-import static org.eclipse.cdt.core.parser.IToken.t_enum;
-import static org.eclipse.cdt.core.parser.IToken.t_extern;
-import static org.eclipse.cdt.core.parser.IToken.t_float;
-import static org.eclipse.cdt.core.parser.IToken.t_for;
-import static org.eclipse.cdt.core.parser.IToken.t_goto;
-import static org.eclipse.cdt.core.parser.IToken.t_if;
-import static org.eclipse.cdt.core.parser.IToken.t_inline;
-import static org.eclipse.cdt.core.parser.IToken.t_int;
-import static org.eclipse.cdt.core.parser.IToken.t_long;
-import static org.eclipse.cdt.core.parser.IToken.t_register;
-import static org.eclipse.cdt.core.parser.IToken.t_restrict;
-import static org.eclipse.cdt.core.parser.IToken.t_return;
-import static org.eclipse.cdt.core.parser.IToken.t_short;
-import static org.eclipse.cdt.core.parser.IToken.t_signed;
-import static org.eclipse.cdt.core.parser.IToken.t_sizeof;
-import static org.eclipse.cdt.core.parser.IToken.t_static;
-import static org.eclipse.cdt.core.parser.IToken.t_struct;
-import static org.eclipse.cdt.core.parser.IToken.t_switch;
-import static org.eclipse.cdt.core.parser.IToken.t_typedef;
-import static org.eclipse.cdt.core.parser.IToken.t_union;
-import static org.eclipse.cdt.core.parser.IToken.t_unsigned;
-import static org.eclipse.cdt.core.parser.IToken.t_void;
-import static org.eclipse.cdt.core.parser.IToken.t_volatile;
-import static org.eclipse.cdt.core.parser.IToken.t_while;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_And;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_AndAnd;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_AndAssign;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_Arrow;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_Assign;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_Bang;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_Caret;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_CaretAssign;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_Colon;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_Comma;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_Completion;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_Dot;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_DotDotDot;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_EOF_TOKEN;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_EQ;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_EndOfCompletion;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_GE;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_GT;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_Invalid;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_LE;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_LT;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_LeftBrace;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_LeftBracket;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_LeftParen;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_LeftShift;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_LeftShiftAssign;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_MAX;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_MIN;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_Minus;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_MinusAssign;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_MinusMinus;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_NE;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_Or;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_OrAssign;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_OrOr;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_Percent;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_PercentAssign;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_Plus;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_PlusAssign;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_PlusPlus;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_Question;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_RightBrace;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_RightBracket;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_RightParen;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_RightShift;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_RightShiftAssign;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_SemiColon;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_Slash;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_SlashAssign;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_Star;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_StarAssign;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_Tilde;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK__Bool;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK__Complex;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK__Imaginary;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK___alignof__;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK___attribute__;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK___declspec;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_asm;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_auto;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_break;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_case;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_char;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_charconst;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_const;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_continue;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_default;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_do;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_double;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_else;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_enum;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_extern;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_float;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_floating;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_for;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_goto;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_identifier;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_if;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_inline;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_int;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_integer;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_long;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_register;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_restrict;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_return;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_short;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_signed;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_sizeof;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_static;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_stringlit;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_struct;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_switch;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_typedef;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_typeof;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_union;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_unsigned;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_void;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_volatile;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.TK_while;
-
-import org.eclipse.cdt.core.dom.lrparser.IDOMTokenMap;
-import org.eclipse.cdt.core.parser.IGCCToken;
-import org.eclipse.cdt.core.parser.IToken;
-
-/**
- * Maps tokens types returned by CPreprocessor to token types
- * expected by the C99 parser.
- *
- * @author Mike Kucera
- */
-public final class DOMToGCCTokenMap implements IDOMTokenMap {
-
- public static final DOMToGCCTokenMap DEFAULT_MAP = new DOMToGCCTokenMap();
-
- private DOMToGCCTokenMap() {
- // just a private constructor
- }
-
- @Override
- public int getEOFTokenKind() {
- return TK_EOF_TOKEN;
- }
-
- @Override
- public int getEOCTokenKind() {
- return TK_EndOfCompletion;
- }
-
- @Override
- public int mapKind(IToken token) {
-
- switch (token.getType()) {
- case tIDENTIFIER:
- return TK_identifier;
- case tINTEGER:
- return TK_integer;
- case tCOLON:
- return TK_Colon;
- case tSEMI:
- return TK_SemiColon;
- case tCOMMA:
- return TK_Comma;
- case tQUESTION:
- return TK_Question;
- case tLPAREN:
- return TK_LeftParen;
- case tRPAREN:
- return TK_RightParen;
- case tLBRACKET:
- return TK_LeftBracket;
- case tRBRACKET:
- return TK_RightBracket;
- case tLBRACE:
- return TK_LeftBrace;
- case tRBRACE:
- return TK_RightBrace;
- case tPLUSASSIGN:
- return TK_PlusAssign;
- case tINCR:
- return TK_PlusPlus;
- case tPLUS:
- return TK_Plus;
- case tMINUSASSIGN:
- return TK_MinusAssign;
- case tDECR:
- return TK_MinusMinus;
- case tARROW:
- return TK_Arrow;
- case tMINUS:
- return TK_Minus;
- case tSTARASSIGN:
- return TK_StarAssign;
- case tSTAR:
- return TK_Star;
- case tMODASSIGN:
- return TK_PercentAssign;
- case tMOD:
- return TK_Percent;
- case tXORASSIGN:
- return TK_CaretAssign;
- case tXOR:
- return TK_Caret;
- case tAMPERASSIGN:
- return TK_AndAssign;
- case tAND:
- return TK_AndAnd;
- case tAMPER:
- return TK_And;
- case tBITORASSIGN:
- return TK_OrAssign;
- case tOR:
- return TK_OrOr;
- case tBITOR:
- return TK_Or;
- case tBITCOMPLEMENT:
- return TK_Tilde;
- case tNOTEQUAL:
- return TK_NE;
- case tNOT:
- return TK_Bang;
- case tEQUAL:
- return TK_EQ;
- case tASSIGN:
- return TK_Assign;
- case tUNKNOWN_CHAR:
- return TK_Invalid;
- case tSHIFTL:
- return TK_LeftShift;
- case tLTEQUAL:
- return TK_LE;
- case tLT:
- return TK_LT;
- case tSHIFTRASSIGN:
- return TK_RightShiftAssign;
- case tSHIFTR:
- return TK_RightShift;
- case tGTEQUAL:
- return TK_GE;
- case tGT:
- return TK_GT;
- case tSHIFTLASSIGN:
- return TK_LeftShiftAssign;
- case tELLIPSIS:
- return TK_DotDotDot;
- case tDOT:
- return TK_Dot;
- case tDIVASSIGN:
- return TK_SlashAssign;
- case tDIV:
- return TK_Slash;
-
- case t_auto:
- return TK_auto;
- case t_break:
- return TK_break;
- case t_case:
- return TK_case;
- case t_char:
- return TK_char;
- case t_const:
- return TK_const;
- case t_continue:
- return TK_continue;
- case t_default:
- return TK_default;
- case t_do:
- return TK_do;
- case t_double:
- return TK_double;
- case t_else:
- return TK_else;
- case t_enum:
- return TK_enum;
- case t_extern:
- return TK_extern;
- case t_float:
- return TK_float;
- case t_for:
- return TK_for;
- case t_goto:
- return TK_goto;
- case t_if:
- return TK_if;
- case t_inline:
- return TK_inline;
- case t_int:
- return TK_int;
- case t_long:
- return TK_long;
- case t_register:
- return TK_register;
- case t_return:
- return TK_return;
- case t_short:
- return TK_short;
- case t_sizeof:
- return TK_sizeof;
- case t_static:
- return TK_static;
- case t_signed:
- return TK_signed;
- case t_struct:
- return TK_struct;
- case t_switch:
- return TK_switch;
- case t_typedef:
- return TK_typedef;
- case t_union:
- return TK_union;
- case t_unsigned:
- return TK_unsigned;
- case t_void:
- return TK_void;
- case t_volatile:
- return TK_volatile;
- case t_while:
- return TK_while;
- case tFLOATINGPT:
- return TK_floating;
- case tSTRING:
- return TK_stringlit;
- case tLSTRING:
- return TK_stringlit;
- case tUTF16STRING:
- return TK_stringlit;
- case tUTF32STRING:
- return TK_stringlit;
- case tCHAR:
- return TK_charconst;
- case tLCHAR:
- return TK_charconst;
- case tUTF16CHAR:
- return TK_charconst;
- case tUTF32CHAR:
- return TK_charconst;
- case t__Bool:
- return TK__Bool;
- case t__Complex:
- return TK__Complex;
- case t__Imaginary:
- return TK__Imaginary;
- case t_restrict:
- return TK_restrict;
- case tCOMPLETION:
- return TK_Completion;
- case tEOC:
- return TK_EndOfCompletion;
- case tEND_OF_INPUT:
- return TK_EOF_TOKEN;
-
- case IGCCToken.t_typeof:
- return TK_typeof;
- case IGCCToken.t___alignof__:
- return TK___alignof__;
- case IGCCToken.tMAX:
- return TK_MAX;
- case IGCCToken.tMIN:
- return TK_MIN;
- case IGCCToken.t__attribute__:
- return TK___attribute__;
- case IGCCToken.t__declspec:
- return TK___declspec;
-
- case t_asm:
- return TK_asm;
-
- default:
- assert false : "token not recognized by the GCC parser: " + token.getType(); //$NON-NLS-1$
- return TK_Invalid;
- }
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/gnu/DOMToGPPTokenMap.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/gnu/DOMToGPPTokenMap.java
deleted file mode 100644
index 8f48d4f4160..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/gnu/DOMToGPPTokenMap.java
+++ /dev/null
@@ -1,597 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2015 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.dom.lrparser.gnu;
-
-import static org.eclipse.cdt.core.parser.IToken.tAMPER;
-import static org.eclipse.cdt.core.parser.IToken.tAMPERASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tAND;
-import static org.eclipse.cdt.core.parser.IToken.tARROW;
-import static org.eclipse.cdt.core.parser.IToken.tARROWSTAR;
-import static org.eclipse.cdt.core.parser.IToken.tASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tBITCOMPLEMENT;
-import static org.eclipse.cdt.core.parser.IToken.tBITOR;
-import static org.eclipse.cdt.core.parser.IToken.tBITORASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tCHAR;
-import static org.eclipse.cdt.core.parser.IToken.tCOLON;
-import static org.eclipse.cdt.core.parser.IToken.tCOLONCOLON;
-import static org.eclipse.cdt.core.parser.IToken.tCOMMA;
-import static org.eclipse.cdt.core.parser.IToken.tCOMPLETION;
-import static org.eclipse.cdt.core.parser.IToken.tDECR;
-import static org.eclipse.cdt.core.parser.IToken.tDIV;
-import static org.eclipse.cdt.core.parser.IToken.tDIVASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tDOT;
-import static org.eclipse.cdt.core.parser.IToken.tDOTSTAR;
-import static org.eclipse.cdt.core.parser.IToken.tELLIPSIS;
-import static org.eclipse.cdt.core.parser.IToken.tEND_OF_INPUT;
-import static org.eclipse.cdt.core.parser.IToken.tEOC;
-import static org.eclipse.cdt.core.parser.IToken.tEQUAL;
-import static org.eclipse.cdt.core.parser.IToken.tFLOATINGPT;
-import static org.eclipse.cdt.core.parser.IToken.tGT;
-import static org.eclipse.cdt.core.parser.IToken.tGTEQUAL;
-import static org.eclipse.cdt.core.parser.IToken.tIDENTIFIER;
-import static org.eclipse.cdt.core.parser.IToken.tINCR;
-import static org.eclipse.cdt.core.parser.IToken.tINTEGER;
-import static org.eclipse.cdt.core.parser.IToken.tLBRACE;
-import static org.eclipse.cdt.core.parser.IToken.tLBRACKET;
-import static org.eclipse.cdt.core.parser.IToken.tLCHAR;
-import static org.eclipse.cdt.core.parser.IToken.tLPAREN;
-import static org.eclipse.cdt.core.parser.IToken.tLSTRING;
-import static org.eclipse.cdt.core.parser.IToken.tLT;
-import static org.eclipse.cdt.core.parser.IToken.tLTEQUAL;
-import static org.eclipse.cdt.core.parser.IToken.tMINUS;
-import static org.eclipse.cdt.core.parser.IToken.tMINUSASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tMOD;
-import static org.eclipse.cdt.core.parser.IToken.tMODASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tNOT;
-import static org.eclipse.cdt.core.parser.IToken.tNOTEQUAL;
-import static org.eclipse.cdt.core.parser.IToken.tOR;
-import static org.eclipse.cdt.core.parser.IToken.tPLUS;
-import static org.eclipse.cdt.core.parser.IToken.tPLUSASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tPOUND;
-import static org.eclipse.cdt.core.parser.IToken.tQUESTION;
-import static org.eclipse.cdt.core.parser.IToken.tRBRACE;
-import static org.eclipse.cdt.core.parser.IToken.tRBRACKET;
-import static org.eclipse.cdt.core.parser.IToken.tRPAREN;
-import static org.eclipse.cdt.core.parser.IToken.tSEMI;
-import static org.eclipse.cdt.core.parser.IToken.tSHIFTL;
-import static org.eclipse.cdt.core.parser.IToken.tSHIFTLASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tSHIFTR;
-import static org.eclipse.cdt.core.parser.IToken.tSHIFTRASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tSTAR;
-import static org.eclipse.cdt.core.parser.IToken.tSTARASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tSTRING;
-import static org.eclipse.cdt.core.parser.IToken.tUNKNOWN_CHAR;
-import static org.eclipse.cdt.core.parser.IToken.tUTF16CHAR;
-import static org.eclipse.cdt.core.parser.IToken.tUTF16STRING;
-import static org.eclipse.cdt.core.parser.IToken.tUTF32CHAR;
-import static org.eclipse.cdt.core.parser.IToken.tUTF32STRING;
-import static org.eclipse.cdt.core.parser.IToken.tXOR;
-import static org.eclipse.cdt.core.parser.IToken.tXORASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.t__Complex;
-import static org.eclipse.cdt.core.parser.IToken.t__Imaginary;
-import static org.eclipse.cdt.core.parser.IToken.t_asm;
-import static org.eclipse.cdt.core.parser.IToken.t_auto;
-import static org.eclipse.cdt.core.parser.IToken.t_bool;
-import static org.eclipse.cdt.core.parser.IToken.t_break;
-import static org.eclipse.cdt.core.parser.IToken.t_case;
-import static org.eclipse.cdt.core.parser.IToken.t_catch;
-import static org.eclipse.cdt.core.parser.IToken.t_char;
-import static org.eclipse.cdt.core.parser.IToken.t_class;
-import static org.eclipse.cdt.core.parser.IToken.t_const;
-import static org.eclipse.cdt.core.parser.IToken.t_const_cast;
-import static org.eclipse.cdt.core.parser.IToken.t_continue;
-import static org.eclipse.cdt.core.parser.IToken.t_default;
-import static org.eclipse.cdt.core.parser.IToken.t_delete;
-import static org.eclipse.cdt.core.parser.IToken.t_do;
-import static org.eclipse.cdt.core.parser.IToken.t_double;
-import static org.eclipse.cdt.core.parser.IToken.t_dynamic_cast;
-import static org.eclipse.cdt.core.parser.IToken.t_else;
-import static org.eclipse.cdt.core.parser.IToken.t_enum;
-import static org.eclipse.cdt.core.parser.IToken.t_explicit;
-import static org.eclipse.cdt.core.parser.IToken.t_export;
-import static org.eclipse.cdt.core.parser.IToken.t_extern;
-import static org.eclipse.cdt.core.parser.IToken.t_false;
-import static org.eclipse.cdt.core.parser.IToken.t_float;
-import static org.eclipse.cdt.core.parser.IToken.t_for;
-import static org.eclipse.cdt.core.parser.IToken.t_friend;
-import static org.eclipse.cdt.core.parser.IToken.t_goto;
-import static org.eclipse.cdt.core.parser.IToken.t_if;
-import static org.eclipse.cdt.core.parser.IToken.t_inline;
-import static org.eclipse.cdt.core.parser.IToken.t_int;
-import static org.eclipse.cdt.core.parser.IToken.t_long;
-import static org.eclipse.cdt.core.parser.IToken.t_mutable;
-import static org.eclipse.cdt.core.parser.IToken.t_namespace;
-import static org.eclipse.cdt.core.parser.IToken.t_new;
-import static org.eclipse.cdt.core.parser.IToken.t_operator;
-import static org.eclipse.cdt.core.parser.IToken.t_private;
-import static org.eclipse.cdt.core.parser.IToken.t_protected;
-import static org.eclipse.cdt.core.parser.IToken.t_public;
-import static org.eclipse.cdt.core.parser.IToken.t_register;
-import static org.eclipse.cdt.core.parser.IToken.t_reinterpret_cast;
-import static org.eclipse.cdt.core.parser.IToken.t_restrict;
-import static org.eclipse.cdt.core.parser.IToken.t_return;
-import static org.eclipse.cdt.core.parser.IToken.t_short;
-import static org.eclipse.cdt.core.parser.IToken.t_signed;
-import static org.eclipse.cdt.core.parser.IToken.t_sizeof;
-import static org.eclipse.cdt.core.parser.IToken.t_static;
-import static org.eclipse.cdt.core.parser.IToken.t_static_cast;
-import static org.eclipse.cdt.core.parser.IToken.t_struct;
-import static org.eclipse.cdt.core.parser.IToken.t_switch;
-import static org.eclipse.cdt.core.parser.IToken.t_template;
-import static org.eclipse.cdt.core.parser.IToken.t_this;
-import static org.eclipse.cdt.core.parser.IToken.t_throw;
-import static org.eclipse.cdt.core.parser.IToken.t_true;
-import static org.eclipse.cdt.core.parser.IToken.t_try;
-import static org.eclipse.cdt.core.parser.IToken.t_typedef;
-import static org.eclipse.cdt.core.parser.IToken.t_typeid;
-import static org.eclipse.cdt.core.parser.IToken.t_typename;
-import static org.eclipse.cdt.core.parser.IToken.t_union;
-import static org.eclipse.cdt.core.parser.IToken.t_unsigned;
-import static org.eclipse.cdt.core.parser.IToken.t_using;
-import static org.eclipse.cdt.core.parser.IToken.t_virtual;
-import static org.eclipse.cdt.core.parser.IToken.t_void;
-import static org.eclipse.cdt.core.parser.IToken.t_volatile;
-import static org.eclipse.cdt.core.parser.IToken.t_wchar_t;
-import static org.eclipse.cdt.core.parser.IToken.t_while;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_And;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_AndAnd;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_AndAssign;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_Arrow;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_ArrowStar;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_Assign;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_Bang;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_Caret;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_CaretAssign;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_Colon;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_ColonColon;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_Comma;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_Completion;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_Dot;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_DotDotDot;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_DotStar;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_EOF_TOKEN;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_EQ;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_EndOfCompletion;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_GE;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_GT;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_Invalid;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_LE;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_LT;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_LeftBrace;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_LeftBracket;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_LeftParen;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_LeftShift;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_LeftShiftAssign;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_MAX;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_MIN;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_Minus;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_MinusAssign;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_MinusMinus;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_NE;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_Or;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_OrAssign;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_OrOr;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_Percent;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_PercentAssign;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_Plus;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_PlusAssign;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_PlusPlus;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_Question;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_RightBrace;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_RightBracket;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_RightParen;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_RightShift;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_RightShiftAssign;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_SemiColon;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_Slash;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_SlashAssign;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_Star;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_StarAssign;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_Tilde;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK__Complex;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK__Imaginary;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK___alignof__;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK___attribute__;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK___declspec;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_asm;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_auto;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_bool;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_break;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_case;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_catch;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_char;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_charconst;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_class;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_const;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_const_cast;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_continue;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_default;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_delete;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_do;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_double;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_dynamic_cast;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_else;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_enum;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_explicit;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_export;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_extern;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_false;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_float;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_floating;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_for;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_friend;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_goto;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_identifier;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_if;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_inline;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_int;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_integer;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_long;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_mutable;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_namespace;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_new;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_operator;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_private;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_protected;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_public;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_register;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_reinterpret_cast;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_restrict;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_return;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_short;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_signed;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_sizeof;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_static;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_static_cast;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_stringlit;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_struct;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_switch;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_template;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_this;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_throw;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_true;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_try;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_typedef;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_typeid;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_typename;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_typeof;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_union;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_unsigned;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_using;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_virtual;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_void;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_volatile;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_wchar_t;
-import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.TK_while;
-
-import org.eclipse.cdt.core.dom.lrparser.IDOMTokenMap;
-import org.eclipse.cdt.core.parser.IGCCToken;
-import org.eclipse.cdt.core.parser.IToken;
-
-/**
- * Maps tokens types returned by CPreprocessor to token types
- * expected by the C++ parser.
- *
- * @author Mike Kucera
- */
-public class DOMToGPPTokenMap implements IDOMTokenMap {
-
- public static final DOMToGPPTokenMap DEFAULT_MAP = new DOMToGPPTokenMap();
-
- private DOMToGPPTokenMap() {
- // just a private constructor
- }
-
- @Override
- public int getEOFTokenKind() {
- return TK_EOF_TOKEN;
- }
-
- @Override
- public int getEOCTokenKind() {
- return TK_EndOfCompletion;
- }
-
- @Override
- public int mapKind(IToken token) {
-
- switch (token.getType()) {
- case tIDENTIFIER:
- return TK_identifier;
- case tINTEGER:
- return TK_integer;
- case tCOLONCOLON:
- return TK_ColonColon;
- case tCOLON:
- return TK_Colon;
- case tSEMI:
- return TK_SemiColon;
- case tCOMMA:
- return TK_Comma;
- case tQUESTION:
- return TK_Question;
- case tLPAREN:
- return TK_LeftParen;
- case tRPAREN:
- return TK_RightParen;
- case tLBRACKET:
- return TK_LeftBracket;
- case tRBRACKET:
- return TK_RightBracket;
- case tLBRACE:
- return TK_LeftBrace;
- case tRBRACE:
- return TK_RightBrace;
- case tPLUSASSIGN:
- return TK_PlusAssign;
- case tINCR:
- return TK_PlusPlus;
- case tPLUS:
- return TK_Plus;
- case tMINUSASSIGN:
- return TK_MinusAssign;
- case tDECR:
- return TK_MinusMinus;
- case tARROWSTAR:
- return TK_ArrowStar;
- case tARROW:
- return TK_Arrow;
- case tMINUS:
- return TK_Minus;
- case tSTARASSIGN:
- return TK_StarAssign;
- case tSTAR:
- return TK_Star;
- case tMODASSIGN:
- return TK_PercentAssign;
- case tMOD:
- return TK_Percent;
- case tXORASSIGN:
- return TK_CaretAssign;
- case tXOR:
- return TK_Caret;
- case tAMPERASSIGN:
- return TK_AndAssign;
- case tAND:
- return TK_AndAnd;
- case tAMPER:
- return TK_And;
- case tBITORASSIGN:
- return TK_OrAssign;
- case tOR:
- return TK_OrOr;
- case tBITOR:
- return TK_Or;
- case tBITCOMPLEMENT:
- return TK_Tilde;
- case tNOTEQUAL:
- return TK_NE;
- case tNOT:
- return TK_Bang;
- case tEQUAL:
- return TK_EQ;
- case tASSIGN:
- return TK_Assign;
- case tUNKNOWN_CHAR:
- return TK_Invalid;
- case tSHIFTL:
- return TK_LeftShift;
- case tLTEQUAL:
- return TK_LE;
- case tLT:
- return TK_LT;
- case tSHIFTRASSIGN:
- return TK_RightShiftAssign;
- case tSHIFTR:
- return TK_RightShift;
- case tGTEQUAL:
- return TK_GE;
- case tGT:
- return TK_GT;
- case tSHIFTLASSIGN:
- return TK_LeftShiftAssign;
- case tELLIPSIS:
- return TK_DotDotDot;
- case tDOTSTAR:
- return TK_DotStar;
- case tDOT:
- return TK_Dot;
- case tDIVASSIGN:
- return TK_SlashAssign;
- case tDIV:
- return TK_Slash;
-
- case t_asm:
- return TK_asm;
- case t_auto:
- return TK_auto;
- case t_bool:
- return TK_bool;
- case t_break:
- return TK_break;
- case t_case:
- return TK_case;
- case t_catch:
- return TK_catch;
- case t_char:
- return TK_char;
- case t_class:
- return TK_class;
- case t_const:
- return TK_const;
- case t_const_cast:
- return TK_const_cast;
- case t_continue:
- return TK_continue;
- case t_default:
- return TK_default;
- case t_delete:
- return TK_delete;
- case t_do:
- return TK_do;
- case t_double:
- return TK_double;
- case t_dynamic_cast:
- return TK_dynamic_cast;
- case t_else:
- return TK_else;
- case t_enum:
- return TK_enum;
- case t_explicit:
- return TK_explicit;
- case t_export:
- return TK_export;
- case t_extern:
- return TK_extern;
- case t_false:
- return TK_false;
- case t_float:
- return TK_float;
- case t_for:
- return TK_for;
- case t_friend:
- return TK_friend;
- case t_goto:
- return TK_goto;
- case t_if:
- return TK_if;
- case t_inline:
- return TK_inline;
- case t_int:
- return TK_int;
- case t_long:
- return TK_long;
- case t_mutable:
- return TK_mutable;
- case t_namespace:
- return TK_namespace;
- case t_new:
- return TK_new;
- case t_operator:
- return TK_operator;
- case t_private:
- return TK_private;
- case t_protected:
- return TK_protected;
- case t_public:
- return TK_public;
- case t_register:
- return TK_register;
- case t_reinterpret_cast:
- return TK_reinterpret_cast;
- case t_return:
- return TK_return;
- case t_short:
- return TK_short;
- case t_sizeof:
- return TK_sizeof;
- case t_static:
- return TK_static;
- case t_static_cast:
- return TK_static_cast;
- case t_signed:
- return TK_signed;
- case t_struct:
- return TK_struct;
- case t_switch:
- return TK_switch;
- case t_template:
- return TK_template;
- case t_this:
- return TK_this;
- case t_throw:
- return TK_throw;
- case t_true:
- return TK_true;
- case t_try:
- return TK_try;
- case t_typedef:
- return TK_typedef;
- case t_typeid:
- return TK_typeid;
- case t_typename:
- return TK_typename;
- case t_union:
- return TK_union;
- case t_unsigned:
- return TK_unsigned;
- case t_using:
- return TK_using;
- case t_virtual:
- return TK_virtual;
- case t_void:
- return TK_void;
- case t_volatile:
- return TK_volatile;
- case t_wchar_t:
- return TK_wchar_t;
- case t_while:
- return TK_while;
-
- case tFLOATINGPT:
- return TK_floating;
- case tSTRING:
- return TK_stringlit;
- case tLSTRING:
- return TK_stringlit;
- case tUTF16STRING:
- return TK_stringlit;
- case tUTF32STRING:
- return TK_stringlit;
- case tUTF16CHAR:
- return TK_charconst;
- case tUTF32CHAR:
- return TK_charconst;
- case tCHAR:
- return TK_charconst;
- case tLCHAR:
- return TK_charconst;
- case tCOMPLETION:
- return TK_Completion;
- case tEOC:
- return TK_EndOfCompletion;
- case tEND_OF_INPUT:
- return TK_EOF_TOKEN;
-
- case IGCCToken.t_typeof:
- return TK_typeof;
- case IGCCToken.t___alignof__:
- return TK___alignof__;
- case IGCCToken.tMAX:
- return TK_MAX;
- case IGCCToken.tMIN:
- return TK_MIN;
- case IGCCToken.t__attribute__:
- return TK___attribute__;
- case IGCCToken.t__declspec:
- return TK___declspec;
-
- // GNU supports these but they are not in the C++ spec
- case t__Complex:
- return TK__Complex;
- case t__Imaginary:
- return TK__Imaginary;
- case t_restrict:
- return TK_restrict;
-
- case tPOUND:
- return TK_Invalid;
-
- default:
- assert false : "token not recognized by the GPP parser: " + token.getType(); //$NON-NLS-1$
- return TK_Invalid;
- }
- }
-
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/gnu/GCCLanguage.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/gnu/GCCLanguage.java
deleted file mode 100644
index ce45703a39b..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/gnu/GCCLanguage.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2015 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.dom.lrparser.gnu;
-
-import java.util.Map;
-
-import org.eclipse.cdt.core.dom.ILinkage;
-import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
-import org.eclipse.cdt.core.dom.lrparser.BaseExtensibleLanguage;
-import org.eclipse.cdt.core.dom.lrparser.IParser;
-import org.eclipse.cdt.core.dom.parser.IBuiltinBindingsProvider;
-import org.eclipse.cdt.core.dom.parser.IScannerExtensionConfiguration;
-import org.eclipse.cdt.core.dom.parser.c.GCCParserExtensionConfiguration;
-import org.eclipse.cdt.core.dom.parser.c.GCCScannerExtensionConfiguration;
-import org.eclipse.cdt.core.index.IIndex;
-import org.eclipse.cdt.core.parser.IScanner;
-import org.eclipse.cdt.core.parser.ParserLanguage;
-import org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParser;
-
-/**
- * ILanguage implementation for the C99 parser.
- *
- * @author Mike Kucera
- */
-public class GCCLanguage extends BaseExtensibleLanguage {
- public static final String ID = "org.eclipse.cdt.core.lrparser.gcc"; //$NON-NLS-1$
-
- private static GCCLanguage DEFAULT = new GCCLanguage();
-
- public static GCCLanguage getDefault() {
- return DEFAULT;
- }
-
- @Override
- protected IParser<IASTTranslationUnit> getParser(IScanner scanner, IIndex index, Map<String, String> properties) {
- return new GCCParser(scanner, DOMToGCCTokenMap.DEFAULT_MAP, getBuiltinBindingsProvider(), index, properties);
- }
-
- @Override
- protected IScannerExtensionConfiguration getScannerExtensionConfiguration() {
- return GCCScannerExtensionConfiguration.getInstance();
- }
-
- @Override
- public String getId() {
- return ID;
- }
-
- @Override
- public int getLinkageID() {
- return ILinkage.C_LINKAGE_ID;
- }
-
- @Override
- protected ParserLanguage getParserLanguage() {
- return ParserLanguage.C;
- }
-
- protected IBuiltinBindingsProvider getBuiltinBindingsProvider() {
- return new GCCParserExtensionConfiguration().getBuiltinBindingsProvider();
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/gnu/GPPLanguage.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/gnu/GPPLanguage.java
deleted file mode 100644
index 744bd6efd93..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/gnu/GPPLanguage.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2015 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.dom.lrparser.gnu;
-
-import java.util.Map;
-
-import org.eclipse.cdt.core.dom.ILinkage;
-import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
-import org.eclipse.cdt.core.dom.lrparser.BaseExtensibleLanguage;
-import org.eclipse.cdt.core.dom.lrparser.IParser;
-import org.eclipse.cdt.core.dom.parser.IBuiltinBindingsProvider;
-import org.eclipse.cdt.core.dom.parser.IScannerExtensionConfiguration;
-import org.eclipse.cdt.core.dom.parser.cpp.GPPParserExtensionConfiguration;
-import org.eclipse.cdt.core.dom.parser.cpp.GPPScannerExtensionConfiguration;
-import org.eclipse.cdt.core.index.IIndex;
-import org.eclipse.cdt.core.parser.IScanner;
-import org.eclipse.cdt.core.parser.ParserLanguage;
-import org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParser;
-
-/**
- * ILanguage implementation for the GPP parser.
- *
- * @author Mike Kucera
- */
-public class GPPLanguage extends BaseExtensibleLanguage {
-
- public static final String ID = "org.eclipse.cdt.core.lrparser.gpp"; //$NON-NLS-1$
-
- private static GPPLanguage DEFAULT = new GPPLanguage();
-
- public static GPPLanguage getDefault() {
- return DEFAULT;
- }
-
- @Override
- protected IParser<IASTTranslationUnit> getParser(IScanner scanner, IIndex index, Map<String, String> properties) {
- return new GPPParser(scanner, DOMToGPPTokenMap.DEFAULT_MAP, getBuiltinBindingsProvider(), index, properties);
- }
-
- @Override
- protected IScannerExtensionConfiguration getScannerExtensionConfiguration() {
- return GPPScannerExtensionConfiguration.getInstance();
- }
-
- @Override
- public String getId() {
- return ID;
- }
-
- @Override
- public int getLinkageID() {
- return ILinkage.CPP_LINKAGE_ID;
- }
-
- @Override
- protected ParserLanguage getParserLanguage() {
- return ParserLanguage.CPP;
- }
-
- protected IBuiltinBindingsProvider getBuiltinBindingsProvider() {
- return new GPPParserExtensionConfiguration().getBuiltinBindingsProvider();
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/lpgextensions/AbstractTrialUndoActionProvider.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/lpgextensions/AbstractTrialUndoActionProvider.java
deleted file mode 100644
index 94bd6db7fde..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/lpgextensions/AbstractTrialUndoActionProvider.java
+++ /dev/null
@@ -1,211 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2015 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.dom.lrparser.lpgextensions;
-
-import java.util.Collections;
-import java.util.List;
-
-import lpg.lpgjavaruntime.IToken;
-import lpg.lpgjavaruntime.LexStream;
-import lpg.lpgjavaruntime.PrsStream;
-
-/**
- * Base class for parser action classes which support trial, undo and
- * final actions.
- */
-public abstract class AbstractTrialUndoActionProvider<ACT, RULE_DATA> extends PrsStream
- implements ITrialUndoActionProvider<RULE_DATA> {
- /**
- * An action that does nothing.
- */
- public static final Action<Object, Object> EMPTY_ACTION = new Action<>();
-
- /**
- * The parser table interpreter.
- */
- protected TrialUndoParser btParser;
-
- public AbstractTrialUndoActionProvider() {
- super();
- }
-
- public AbstractTrialUndoActionProvider(LexStream lexStream) {
- super(lexStream);
- }
-
- /**
- * Actions for reduction rules.
- */
- protected Action<ACT, RULE_DATA>[] ruleAction;
-
- protected ACT parserAction;
-
- public void setParserAction(ACT parserAction) {
- this.parserAction = parserAction;
- }
-
- /**
- * The reduction rule which is currently being processed.
- */
- protected Rule<RULE_DATA> activeRule;
-
- /**
- * Returns the number of tokens in the rule being reduced.
- */
- public int getRuleTokenCount() {
- return activeRule.getEndTokenOffset() - activeRule.getStartTokenOffset() + 1;
- }
-
- /**
- * Returns the tokens in the rule being reduced.
- */
- @SuppressWarnings("unchecked")
- public List<IToken> getRuleTokens() {
- return Collections.unmodifiableList(getTokens().subList(getFirstRealToken(activeRule.getStartTokenOffset()),
- activeRule.getEndTokenOffset() + 1));
- }
-
- public void backtrack() {
- btParser.backtrack();
- }
-
- @Override
- public void setActiveRule(Rule<RULE_DATA> rule) {
- activeRule = rule;
- }
-
- @Override
- public Rule<RULE_DATA> getActiveRule() {
- return activeRule;
- }
-
- @Override
- public final boolean trialAction(int rule_number) {
- return ruleAction[rule_number].doTrial(this, parserAction);
- }
-
- @Override
- public final void undoAction(int rule_number) {
- ruleAction[rule_number].doUndo(this, parserAction);
- }
-
- @Override
- public final void finalAction(int rule_number) {
- //System.out.println("finalAction: " + rule_number); //$NON-NLS-1$
- ruleAction[rule_number].doFinal(this, parserAction);
- }
-
- public TrialUndoParser getParser() {
- return btParser;
- }
-
- /**
- * Returns the offset of the leftmost token of the
- * rule being reduced.
- */
- private int getLeftSpan() {
- return getFirstRealToken(activeRule.getStartTokenOffset());
- }
-
- /**
- * Returns the leftmost token of the rule being reduced.
- */
- public IToken getLeftIToken() {
- return super.getIToken(getLeftSpan());
- }
-
- /**
- * Returns the offset of the rightmost token of the
- * rule being reduced.
- */
- private int getRightSpan() {
- return activeRule.getEndTokenOffset();
- }
-
- /**
- * Returns the rightmost token of the rule being reduced.
- */
- public IToken getRightIToken() {
- return super.getIToken(getRightSpan());
- }
-
- public static <ACT, RULE_DATA> Action<ACT, RULE_DATA> emptyAction() {
- return new Action<>();
- }
-
- @SuppressWarnings("unused")
- public static class Action<ACT, RULE_DATA> {
-
- public void doFinal(ITrialUndoActionProvider<RULE_DATA> provider, ACT action) {
- // convenience method, can be overridden
-
- }
-
- public boolean doTrial(ITrialUndoActionProvider<RULE_DATA> provider, ACT action) {
- //System.out.println(provider.getActiveRule());
- //System.out.println(Rules.lookup(provider.getActiveRule().getRuleNumber()));
- return false;
- }
-
- public void doUndo(ITrialUndoActionProvider<RULE_DATA> provider, ACT action) {
- //System.out.println(provider.getActiveRule() + " - undo");
- // convenience method, can be overridden
- }
- }
-
- public static class DeclaredAction<ACT, RULE_DATA> extends Action<ACT, RULE_DATA> {
- protected boolean hasUndo = false;
-
- @Override
- @SuppressWarnings("unused")
- public boolean doTrial(ITrialUndoActionProvider<RULE_DATA> provider, ACT action) {
- return true;
- }
- }
-
- /**
- * Action for a null rule
- */
- static final class NullAction<ACT, RULE_DATA> extends Action<ACT, RULE_DATA> {
- @Override
- @SuppressWarnings("unused")
- public void doFinal(ITrialUndoActionProvider<RULE_DATA> provider, ACT action) {
- // do nothing
- }
- }
-
- static final class BadAction<ACT, RULE_DATA> extends Action<ACT, RULE_DATA> {
- @Override
- @SuppressWarnings("unused")
- public void doFinal(ITrialUndoActionProvider<RULE_DATA> provider, ACT action) {
- throw new Error(new BadActionException());
- }
-
- @Override
- @SuppressWarnings("unused")
- public boolean doTrial(ITrialUndoActionProvider<RULE_DATA> provider, ACT action) {
- throw new Error(new BadActionException());
- }
-
- @Override
- @SuppressWarnings("unused")
- public void doUndo(ITrialUndoActionProvider<RULE_DATA> provider, ACT action) {
- throw new Error(new BadActionException());
- }
- }
-
- static public class BadActionException extends Exception {
- private static final long serialVersionUID = 1L;
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/lpgextensions/FixedBacktrackingParser.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/lpgextensions/FixedBacktrackingParser.java
deleted file mode 100644
index f0646c2e4a0..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/lpgextensions/FixedBacktrackingParser.java
+++ /dev/null
@@ -1,614 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2015 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.dom.lrparser.lpgextensions;
-
-import lpg.lpgjavaruntime.BadParseException;
-import lpg.lpgjavaruntime.BadParseSymFileException;
-import lpg.lpgjavaruntime.ConfigurationElement;
-import lpg.lpgjavaruntime.ConfigurationStack;
-import lpg.lpgjavaruntime.IntTuple;
-import lpg.lpgjavaruntime.Monitor;
-import lpg.lpgjavaruntime.NotBacktrackParseTableException;
-import lpg.lpgjavaruntime.ParseTable;
-import lpg.lpgjavaruntime.RuleAction;
-import lpg.lpgjavaruntime.Stacks;
-import lpg.lpgjavaruntime.TokenStream;
-
-public class FixedBacktrackingParser extends Stacks {
- private Monitor monitor = null;
- private int START_STATE, NUM_RULES, LA_STATE_OFFSET, EOFT_SYMBOL, ERROR_SYMBOL, ACCEPT_ACTION, ERROR_ACTION;
-
- private int lastToken, currentAction;
- private TokenStream tokStream;
- private ParseTable prs;
- private RuleAction ra;
- private IntTuple action = new IntTuple(1 << 10), tokens;
- private int actionStack[];
- private boolean skipTokens = false; // true if error productions are used to skip tokens
-
- //
- // Override the getToken function in Stacks.
- //
- @Override
- public final int getToken(int i) {
- return tokens.get(locationStack[stateStackTop + (i - 1)]);
- }
-
- public final int getCurrentRule() {
- return currentAction;
- }
-
- public final int getFirstToken() {
- return tokStream.getFirstErrorToken(getToken(1));
- }
-
- public final int getFirstToken(int i) {
- return tokStream.getFirstErrorToken(getToken(i));
- }
-
- public final int getLastToken() {
- return tokStream.getLastErrorToken(lastToken);
- }
-
- public final int getLastToken(int i) {
- int l = (i >= prs.rhs(currentAction) ? lastToken : tokens.get(locationStack[stateStackTop + i] - 1));
- return tokStream.getLastErrorToken(l);
- }
-
- public FixedBacktrackingParser(TokenStream tokStream, ParseTable prs, RuleAction ra)
- throws BadParseSymFileException, NotBacktrackParseTableException {
- this.tokStream = tokStream;
- this.prs = prs;
- this.ra = ra;
-
- START_STATE = prs.getStartState();
- NUM_RULES = prs.getNumRules();
- LA_STATE_OFFSET = prs.getLaStateOffset();
- EOFT_SYMBOL = prs.getEoftSymbol();
- ERROR_SYMBOL = prs.getErrorSymbol();
- ACCEPT_ACTION = prs.getAcceptAction();
- ERROR_ACTION = prs.getErrorAction();
-
- if (!prs.isValidForParser())
- throw new BadParseSymFileException();
- if (!prs.getBacktrack())
- throw new NotBacktrackParseTableException();
- }
-
- public FixedBacktrackingParser(Monitor monitor, TokenStream tokStream, ParseTable prs, RuleAction ra)
- throws BadParseSymFileException, NotBacktrackParseTableException {
- this(tokStream, prs, ra);
- this.monitor = monitor;
- }
-
- //
- // Allocate or reallocate all the stacks. Their sizes should always be the same.
- //
- public void reallocateOtherStacks(int start_token_index) {
- // assert(super.stateStack != null);
- if (this.actionStack == null) {
- this.actionStack = new int[super.stateStack.length];
- super.locationStack = new int[super.stateStack.length];
- super.parseStack = new Object[super.stateStack.length];
-
- actionStack[0] = 0;
- locationStack[0] = start_token_index;
- } else if (this.actionStack.length < super.stateStack.length) {
- int old_length = this.actionStack.length;
-
- System.arraycopy(this.actionStack, 0, this.actionStack = new int[super.stateStack.length], 0, old_length);
- System.arraycopy(super.locationStack, 0, super.locationStack = new int[super.stateStack.length], 0,
- old_length);
- System.arraycopy(super.parseStack, 0, super.parseStack = new Object[super.stateStack.length], 0,
- old_length);
- }
- return;
- }
-
- //
- // Parse without attempting any Error token recovery
- //
- public Object parse() throws BadParseException {
- // without an argument parse() will ignore error productions
- return parse(0);
- }
-
- //
- // Parse input allowing up to max_error_count Error token recoveries.
- // When max_error_count is 0, no Error token recoveries occur.
- // When max_error is > 0, it limits the number of Error token recoveries.
- // When max_error is < 0, the number of error token recoveries is unlimited.
- // Also, such recoveries only require one token to be parsed beyond the recovery point.
- // (normally two tokens beyond the recovery point must be parsed)
- // Thus, a negative max_error_count should be used when error productions are used to
- // skip tokens.
- //
- public Object parse(int max_error_count) throws BadParseException {
- action.reset();
- tokStream.reset(); // Position at first token.
- reallocateStateStack();
- stateStackTop = 0;
- stateStack[0] = START_STATE;
- skipTokens = max_error_count < 0;
-
- //
- // The tuple tokens will eventually contain the sequence
- // of tokens that resulted in a successful parse. We leave
- // it up to the "Stream" implementer to define the predecessor
- // of the first token as he sees fit.
- //
- tokens = new IntTuple(tokStream.getStreamLength());
- tokens.add(tokStream.getPrevious(tokStream.peek()));
-
- int repair_token = 0, start_token_index = tokStream.peek(), start_action_index = action.size(), // obviously 0
- temp_stack[] = new int[1];
- temp_stack[0] = START_STATE;
- int initial_error_token = backtrackParse(repair_token);
- for (int error_token = initial_error_token, count = 0; error_token != 0; error_token = backtrackParse(
- repair_token), count++) {
- if (count == max_error_count)
- throw new BadParseException(initial_error_token);
- action.reset(start_action_index);
- tokStream.reset(start_token_index);
- stateStackTop = temp_stack.length - 1;
- System.arraycopy(temp_stack, 0, stateStack, 0, temp_stack.length);
- reallocateOtherStacks(start_token_index);
-
- backtrackParseUpToError(repair_token, error_token);
-
- for (stateStackTop = findRecoveryStateIndex(
- stateStackTop); stateStackTop >= 0; stateStackTop = findRecoveryStateIndex(stateStackTop - 1)) {
- int recovery_token = tokens.get(locationStack[stateStackTop] - 1);
- repair_token = errorRepair((recovery_token >= start_token_index ? recovery_token : error_token),
- error_token);
- if (repair_token != 0)
- break;
- }
-
- if (stateStackTop < 0)
- throw new BadParseException(initial_error_token);
-
- temp_stack = new int[stateStackTop + 1];
- System.arraycopy(stateStack, 0, temp_stack, 0, temp_stack.length);
-
- start_action_index = action.size();
- start_token_index = tokStream.peek();
- }
-
- if (repair_token != 0)
- tokens.add(repair_token);
- int t;
- for (t = start_token_index; tokStream.getKind(t) != EOFT_SYMBOL; t = tokStream.getNext(t))
- tokens.add(t);
- tokens.add(t);
-
- return parseActions();
- }
-
- //
- // Process reductions and continue...
- //
- private final void process_reductions() {
- do {
- stateStackTop -= (prs.rhs(currentAction) - 1);
- ra.ruleAction(currentAction);
- currentAction = prs.ntAction(stateStack[stateStackTop], prs.lhs(currentAction));
- } while (currentAction <= NUM_RULES);
- return;
- }
-
- //
- // Now do the final parse of the input based on the actions in
- // the list "action" and the sequence of tokens in list "tokens".
- //
- private Object parseActions() throws BadParseException {
- int ti = -1, curtok;
- lastToken = tokens.get(++ti);
- curtok = tokens.get(++ti);
- allocateOtherStacks();
-
- //
- // Reparse the input...
- //
- stateStackTop = -1;
- currentAction = START_STATE;
- for (int i = 0; i < action.size(); i++) {
- //
- // if the parser needs to stop processing,
- // it may do so here.
- //
- if (monitor != null && monitor.isCancelled())
- return null;
-
- stateStack[++stateStackTop] = currentAction;
- locationStack[stateStackTop] = ti;
-
- currentAction = action.get(i);
- if (currentAction <= NUM_RULES) // a reduce action?
- {
- stateStackTop--; // make reduction look like shift-reduction
- process_reductions();
- } else // a shift or shift-reduce action
- {
- lastToken = curtok;
- curtok = tokens.get(++ti);
- if (currentAction > ERROR_ACTION) // a shift-reduce action?
- {
- currentAction -= ERROR_ACTION;
- process_reductions();
- }
- }
- }
-
- return parseStack[0];
- }
-
- //
- // Process reductions and continue...
- //
- private int process_backtrack_reductions(int act) {
- do {
- stateStackTop -= (prs.rhs(act) - 1);
- act = prs.ntAction(stateStack[stateStackTop], prs.lhs(act));
- } while (act <= NUM_RULES);
-
- return act;
- }
-
- //
- // Parse the input until either the parse completes successfully or
- // an error is encountered. This function returns an integer that
- // represents the last action that was executed by the parser. If
- // the parse was succesful, then the tuple "action" contains the
- // successful sequence of actions that was executed.
- //
- private int backtrackParse(int initial_token) {
- //
- // Allocate configuration stack.
- //
- ConfigurationStack configuration_stack = new ConfigurationStack(prs);
-
- //
- // Keep parsing until we successfully reach the end of file or
- // an error is encountered. The list of actions executed will
- // be stored in the "action" tuple.
- //
- int error_token = 0, maxStackTop = stateStackTop, start_token = tokStream.peek(),
- curtok = (initial_token > 0 ? initial_token : tokStream.getToken()),
- current_kind = tokStream.getKind(curtok), act = tAction(stateStack[stateStackTop], current_kind);
-
- //
- // The main driver loop
- //
- for (;;) {
- //
- // if the parser needs to stop processing,
- // it may do so here.
- //
- if (monitor != null && monitor.isCancelled())
- return 0;
-
- if (act <= NUM_RULES) {
- action.add(act); // save this reduce action
- stateStackTop--;
- act = process_backtrack_reductions(act);
- } else if (act > ERROR_ACTION) {
- action.add(act); // save this shift-reduce action
- curtok = tokStream.getToken();
- current_kind = tokStream.getKind(curtok);
- act = process_backtrack_reductions(act - ERROR_ACTION);
- } else if (act < ACCEPT_ACTION) {
- action.add(act); // save this shift action
- curtok = tokStream.getToken();
- current_kind = tokStream.getKind(curtok);
- } else if (act == ERROR_ACTION) {
- error_token = (error_token > curtok ? error_token : curtok);
-
- ConfigurationElement configuration = configuration_stack.pop();
- if (configuration == null)
- act = ERROR_ACTION;
- else {
- action.reset(configuration.action_length);
- act = configuration.act;
- curtok = configuration.curtok;
- current_kind = tokStream.getKind(curtok);
- tokStream.reset(curtok == initial_token ? start_token : tokStream.getNext(curtok));
- stateStackTop = configuration.stack_top;
- configuration.retrieveStack(stateStack);
- continue;
- }
- break;
- } else if (act > ACCEPT_ACTION) {
- if (configuration_stack.findConfiguration(stateStack, stateStackTop, curtok))
- act = ERROR_ACTION;
- else {
- configuration_stack.push(stateStack, stateStackTop, act + 1, curtok, action.size());
- act = prs.baseAction(act);
- maxStackTop = stateStackTop > maxStackTop ? stateStackTop : maxStackTop;
- }
- continue;
- } else
- break; // assert(act == ACCEPT_ACTION);
- try {
- stateStack[++stateStackTop] = act;
- } catch (IndexOutOfBoundsException e) {
- reallocateStateStack();
- stateStack[stateStackTop] = act;
- }
-
- act = tAction(act, current_kind);
- }
-
- //System.out.println("****Number of configurations: " + configuration_stack.configurationSize());
- //System.out.println("****Number of elements in stack tree: " + configuration_stack.numStateElements());
- //System.out.println("****Number of elements in stacks: " + configuration_stack.stacksSize());
- //System.out.println("****Number of actions: " + action.size());
- //System.out.println("****Max Stack Size = " + maxStackTop);
- //System.out.flush();
- return (act == ERROR_ACTION ? error_token : 0);
- }
-
- private void backtrackParseUpToError(int initial_token, int error_token) {
- //
- // Allocate configuration stack.
- //
- ConfigurationStack configuration_stack = new ConfigurationStack(prs);
-
- //
- // Keep parsing until we successfully reach the end of file or
- // an error is encountered. The list of actions executed will
- // be stored in the "action" tuple.
- //
- int start_token = tokStream.peek(), curtok = (initial_token > 0 ? initial_token : tokStream.getToken()),
- current_kind = tokStream.getKind(curtok), act = tAction(stateStack[stateStackTop], current_kind);
-
- tokens.add(curtok);
- locationStack[stateStackTop] = tokens.size();
- actionStack[stateStackTop] = action.size();
-
- for (;;) {
- //
- // if the parser needs to stop processing,
- // it may do so here.
- //
- if (monitor != null && monitor.isCancelled())
- return;
-
- if (act <= NUM_RULES) {
- action.add(act); // save this reduce action
- stateStackTop--;
- act = process_backtrack_reductions(act);
- } else if (act > ERROR_ACTION) {
- action.add(act); // save this shift-reduce action
- curtok = tokStream.getToken();
- current_kind = tokStream.getKind(curtok);
- tokens.add(curtok);
- act = process_backtrack_reductions(act - ERROR_ACTION);
- } else if (act < ACCEPT_ACTION) {
- action.add(act); // save this shift action
- curtok = tokStream.getToken();
- current_kind = tokStream.getKind(curtok);
- tokens.add(curtok);
- } else if (act == ERROR_ACTION) {
- if (curtok != error_token) {
- ConfigurationElement configuration = configuration_stack.pop();
- if (configuration == null)
- act = ERROR_ACTION;
- else {
- action.reset(configuration.action_length);
- act = configuration.act;
- int next_token_index = configuration.curtok;
- tokens.reset(next_token_index);
- curtok = tokens.get(next_token_index - 1);
- current_kind = tokStream.getKind(curtok);
- tokStream.reset(curtok == initial_token ? start_token : tokStream.getNext(curtok));
- stateStackTop = configuration.stack_top;
- configuration.retrieveStack(stateStack);
- locationStack[stateStackTop] = tokens.size();
- actionStack[stateStackTop] = action.size();
- continue;
- }
- }
- break;
- } else if (act > ACCEPT_ACTION) {
- if (configuration_stack.findConfiguration(stateStack, stateStackTop, tokens.size()))
- act = ERROR_ACTION;
- else {
- configuration_stack.push(stateStack, stateStackTop, act + 1, tokens.size(), action.size());
- act = prs.baseAction(act);
- }
- continue;
- } else
- break; // assert(act == ACCEPT_ACTION);
-
- stateStack[++stateStackTop] = act; // no need to check if out of bounds
- locationStack[stateStackTop] = tokens.size();
- actionStack[stateStackTop] = action.size();
- act = tAction(act, current_kind);
- }
-
- // assert(curtok == error_token);
-
- return;
- }
-
- private boolean repairable(int error_token) {
- //
- // Allocate configuration stack.
- //
- ConfigurationStack configuration_stack = new ConfigurationStack(prs);
-
- //
- // Keep parsing until we successfully reach the end of file or
- // an error is encountered. The list of actions executed will
- // be stored in the "action" tuple.
- //
- int start_token = tokStream.peek(), final_token = tokStream.getStreamLength(), // unreachable
- curtok = 0, current_kind = ERROR_SYMBOL, act = tAction(stateStack[stateStackTop], current_kind);
-
- for (;;) {
- if (act <= NUM_RULES) {
- stateStackTop--;
- act = process_backtrack_reductions(act);
- } else if (act > ERROR_ACTION) {
- curtok = tokStream.getToken();
- if (curtok > final_token)
- return true;
- current_kind = tokStream.getKind(curtok);
- act = process_backtrack_reductions(act - ERROR_ACTION);
- } else if (act < ACCEPT_ACTION) {
- curtok = tokStream.getToken();
- if (curtok > final_token)
- return true;
- current_kind = tokStream.getKind(curtok);
- } else if (act == ERROR_ACTION) {
- ConfigurationElement configuration = configuration_stack.pop();
- if (configuration == null)
- act = ERROR_ACTION;
- else {
- stateStackTop = configuration.stack_top;
- configuration.retrieveStack(stateStack);
- act = configuration.act;
- curtok = configuration.curtok;
- if (curtok == 0) {
- current_kind = ERROR_SYMBOL;
- tokStream.reset(start_token);
- } else {
- current_kind = tokStream.getKind(curtok);
- tokStream.reset(tokStream.getNext(curtok));
- }
- continue;
- }
- break;
- } else if (act > ACCEPT_ACTION) {
- if (configuration_stack.findConfiguration(stateStack, stateStackTop, curtok))
- act = ERROR_ACTION;
- else {
- configuration_stack.push(stateStack, stateStackTop, act + 1, curtok, 0);
- act = prs.baseAction(act);
- }
- continue;
- } else
- break; // assert(act == ACCEPT_ACTION);
- try {
- //
- // We consider a configuration to be acceptable for recovery
- // if we are able to consume enough symbols in the remainining
- // tokens to reach another potential recovery point past the
- // original error token.
- //
- if ((curtok > error_token) && (final_token == tokStream.getStreamLength())) {
- //
- // If the ERROR_SYMBOL is a valid Action Adjunct in the state
- // "act" then we set the terminating token as the successor of
- // the current token. I.e., we have to be able to parse at least
- // two tokens past the resynch point before we claim victory.
- //
- if (recoverableState(act))
- final_token = skipTokens ? curtok : tokStream.getNext(curtok);
- }
-
- stateStack[++stateStackTop] = act;
- } catch (IndexOutOfBoundsException e) {
- reallocateStateStack();
- stateStack[stateStackTop] = act;
- }
-
- act = tAction(act, current_kind);
- }
-
- //
- // If we can reach the end of the input successfully, we claim victory.
- //
- return (act == ACCEPT_ACTION);
- }
-
- private boolean recoverableState(int state) {
- for (int k = prs.asi(state); prs.asr(k) != 0; k++) {
- if (prs.asr(k) == ERROR_SYMBOL)
- return true;
- }
- return false;
- }
-
- private int findRecoveryStateIndex(int start_index) {
- int i;
- for (i = start_index; i >= 0; i--) {
- //
- // If the ERROR_SYMBOL is an Action Adjunct in state stateStack[i]
- // then chose i as the index of the state to recover on.
- //
- if (recoverableState(stateStack[i]))
- break;
- }
-
- if (i >= 0) // if a recoverable state, remove null reductions, if any.
- {
- int k;
- for (k = i - 1; k >= 0; k--) {
- if (locationStack[k] != locationStack[i])
- break;
- }
- i = k + 1;
- }
-
- return i;
- }
-
- private int errorRepair(int recovery_token, int error_token) {
- int temp_stack[] = new int[stateStackTop + 1];
- System.arraycopy(stateStack, 0, temp_stack, 0, temp_stack.length);
- for (; tokStream.getKind(recovery_token) != EOFT_SYMBOL; recovery_token = tokStream.getNext(recovery_token)) {
- tokStream.reset(recovery_token);
- if (repairable(error_token))
- break;
- stateStackTop = temp_stack.length - 1;
- System.arraycopy(temp_stack, 0, stateStack, 0, temp_stack.length);
- }
-
- if (tokStream.getKind(recovery_token) == EOFT_SYMBOL) {
- tokStream.reset(recovery_token);
- if (!repairable(error_token)) {
- stateStackTop = temp_stack.length - 1;
- System.arraycopy(temp_stack, 0, stateStack, 0, temp_stack.length);
- return 0;
- }
- }
-
- //
- //
- //
- stateStackTop = temp_stack.length - 1;
- System.arraycopy(temp_stack, 0, stateStack, 0, temp_stack.length);
- tokStream.reset(recovery_token);
- tokens.reset(locationStack[stateStackTop] - 1);
- action.reset(actionStack[stateStackTop]);
-
- return tokStream.makeErrorToken(tokens.get(locationStack[stateStackTop] - 1),
- tokStream.getPrevious(recovery_token), error_token, ERROR_SYMBOL);
- }
-
- private int tAction(int act, int sym) {
- act = prs.tAction(act, sym);
- if (act > LA_STATE_OFFSET) {
- int next_token = tokStream.peek();
- act = prs.lookAhead(act - LA_STATE_OFFSET, tokStream.getKind(next_token));
- while (act > LA_STATE_OFFSET) {
- next_token = tokStream.getNext(next_token);
- act = prs.lookAhead(act - LA_STATE_OFFSET, tokStream.getKind(next_token));
- }
- }
- return act;
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/lpgextensions/ITrialUndoActionProvider.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/lpgextensions/ITrialUndoActionProvider.java
deleted file mode 100644
index 36073a13d7e..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/lpgextensions/ITrialUndoActionProvider.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *********************************************************************************/
-
-package org.eclipse.cdt.core.dom.lrparser.lpgextensions;
-
-/**
- * Provides trial, undo, and final actions for the
- * TrialUndoBacktrackingParser.
- */
-public interface ITrialUndoActionProvider<RULE_DATA> {
- /**
- * Invokes the trial action that corresponds to the given rule number.
- */
- boolean trialAction(int ruleNumber);
-
- /**
- * Invokes the undo action that corresponds to the given rule number.
- */
- void undoAction(int ruleNumber);
-
- /**
- * Invokes the final action that corresponds to the given rule number.
- */
- void finalAction(int ruleNumber);
-
- /**
- * Sets the given Rule as the active rule for this provider.
- */
- void setActiveRule(Rule<RULE_DATA> rule);
-
- /**
- * Returns the active rule for this provider.
- */
- Rule<RULE_DATA> getActiveRule();
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/lpgextensions/ParserState.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/lpgextensions/ParserState.java
deleted file mode 100644
index a99ec136eb6..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/lpgextensions/ParserState.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2015 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.dom.lrparser.lpgextensions;
-
-import java.util.LinkedList;
-
-import lpg.lpgjavaruntime.ConfigurationStack;
-import lpg.lpgjavaruntime.IntTuple;
-import lpg.lpgjavaruntime.TokenStream;
-
-class ParserState {
- private static final int STACK_INCREMENT = 1024;
-
- public int lastToken;
- public int currentAction;
- public IntTuple tokens;
- public int actionStack[];
- public int stateStackTop;
- public int[] stateStack;
- public int actionCount;
- public int totalCommits;
-
- public int[] parserLocationStack;
- public int[] undoStack;
-
- // Error recovery
- public int[] locationStack;
- public int repair_token;
-
- /**
- * The number of trial actions that have been executed since the last backtrackable point was encountered.
- */
- public int trialActionCount;
-
- /**
- * A stack that contains the number of trial actions that were executed at different backtrackable points.
- */
- public LinkedList<Integer> trialActionStack;
-
- /**
- * Trial actions that have been executed but not yet committed.
- */
- @SuppressWarnings("rawtypes")
- public LinkedList pendingCommits;
-
- public ConfigurationStack configurationStack;
-
- public int act;
-
- public int curtok;
-
- public ParserState(int startState, TokenStream tokStream) {
- reallocateStateStack();
- stateStackTop = 0;
- stateStack[0] = startState;
-
- //
- // The tuple tokens will eventually contain the sequence
- // of tokens that resulted in a successful parse. We leave
- // it up to the "Stream" implementer to define the predecessor
- // of the first token as he sees fit.
- //
- tokStream.reset(); // Position at first token.
- tokens = new IntTuple(tokStream.getStreamLength());
- tokens.add(tokStream.getPrevious(tokStream.peek()));
- }
-
- public void allocateOtherStacks() {
- locationStack = new int[stateStack.length];
- }
-
- public void reallocateStateStack() {
- int old_stack_length = (stateStack == null ? 0 : stateStack.length),
- stack_length = old_stack_length + STACK_INCREMENT;
- if (stateStack == null)
- stateStack = new int[stack_length];
- else
- System.arraycopy(stateStack, 0, stateStack = new int[stack_length], 0, old_stack_length);
- return;
- }
-
- //
- // Allocate or reallocate all the stacks. Their sizes should always be the
- // same.
- //
- public void reallocateOtherStacks(int start_token_index) {
- // assert(stateStack != null);
- if (this.actionStack == null) {
- this.actionStack = new int[stateStack.length];
- locationStack = new int[stateStack.length];
-
- actionStack[0] = 0;
- undoStack = new int[stateStack.length];
-
- locationStack[0] = start_token_index;
-
- parserLocationStack = new int[stateStack.length];
- parserLocationStack[0] = start_token_index;
-
- } else if (this.actionStack.length < stateStack.length) {
- int old_length = this.actionStack.length;
-
- System.arraycopy(this.actionStack, 0, this.actionStack = new int[stateStack.length], 0, old_length);
- System.arraycopy(this.undoStack, 0, this.undoStack = new int[stateStack.length], 0, old_length);
- System.arraycopy(locationStack, 0, locationStack = new int[stateStack.length], 0, old_length);
- }
- return;
- }
-
- @SuppressWarnings("nls")
- public void dumpState() {
- System.out.print(curtok);
- System.out.print("\t");
- System.out.print(act);
- System.out.print("\t");
- dump(stateStack, stateStackTop);
- System.out.print("\t");
- dump(parserLocationStack, stateStackTop);
- System.out.println();
- }
-
- @SuppressWarnings("nls")
- private void dump(int[] array, int limit) {
- System.out.print("[");
- for (int i = 0; i < limit; i++) {
- if (i > 0) {
- System.out.print(", ");
- }
- System.out.print(array[i]);
- }
- System.out.print("]");
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/lpgextensions/Rule.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/lpgextensions/Rule.java
deleted file mode 100644
index 6089895b8d6..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/lpgextensions/Rule.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *********************************************************************************/
-
-package org.eclipse.cdt.core.dom.lrparser.lpgextensions;
-
-/**
- * Provides information about a reduction rule that a parser has
- * encountered.
- */
-class Rule<RULE_DATA> {
- private int ruleNumber;
- private int startTokenOffset;
- private int endTokenOffset;
- private RULE_DATA data;
-
- public Rule(int ruleNumber, int startTokenOffset, int endTokenOffset) {
- this.ruleNumber = ruleNumber;
- this.startTokenOffset = startTokenOffset;
- this.endTokenOffset = endTokenOffset;
- }
-
- public int getRuleNumber() {
- return ruleNumber;
- }
-
- public int getStartTokenOffset() {
- return startTokenOffset;
- }
-
- public int getEndTokenOffset() {
- return endTokenOffset;
- }
-
- @Override
- public String toString() {
- return String.valueOf(ruleNumber);
- }
-
- public RULE_DATA getData() {
- return data;
- }
-
- public void setData(RULE_DATA data) {
- this.data = data;
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/lpgextensions/TrialUndoParser.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/lpgextensions/TrialUndoParser.java
deleted file mode 100644
index 6181c7b67d4..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/lpgextensions/TrialUndoParser.java
+++ /dev/null
@@ -1,671 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.dom.lrparser.lpgextensions;
-
-import java.util.LinkedList;
-
-import lpg.lpgjavaruntime.BadParseException;
-import lpg.lpgjavaruntime.BadParseSymFileException;
-import lpg.lpgjavaruntime.ConfigurationElement;
-import lpg.lpgjavaruntime.ConfigurationStack;
-import lpg.lpgjavaruntime.Monitor;
-import lpg.lpgjavaruntime.NotBacktrackParseTableException;
-import lpg.lpgjavaruntime.ParseTable;
-import lpg.lpgjavaruntime.TokenStream;
-
-public class TrialUndoParser {
- private Monitor monitor = null;
- private int START_STATE, NUM_RULES, LA_STATE_OFFSET, EOFT_SYMBOL, ERROR_SYMBOL, ACCEPT_ACTION, ERROR_ACTION;
-
- private TokenStream tokStream;
- private ParseTable prs;
- private ITrialUndoActionProvider actionProvider;
- private boolean skipTokens = false; // true if error productions are used to
- // skip tokens
-
- private ParserState state;
-
- /**
- * Signals that a backtrack was requested by a trial action.
- */
- private boolean backtrackRequested;
-
- //
- // Override the getToken function in Stacks.
- //
- public final int getToken(int i) {
- return state.tokens.get(state.parserLocationStack[state.stateStackTop + (i - 1)]);
- }
-
- public int getTokenOffset() {
- return state.parserLocationStack[state.stateStackTop];
- }
-
- public final int getCurrentRule() {
- return state.currentAction;
- }
-
- public final int getFirstToken() {
- return tokStream.getFirstErrorToken(getToken(1));
- }
-
- public final int getFirstToken(int i) {
- return tokStream.getFirstErrorToken(getToken(i));
- }
-
- public final int getLastToken() {
- return tokStream.getLastErrorToken(state.lastToken);
- }
-
- public final int getLastToken(int i) {
- int l = (i >= prs.rhs(state.currentAction) ? state.lastToken
- : state.tokens.get(state.locationStack[state.stateStackTop + i] - 1));
- return tokStream.getLastErrorToken(l);
- }
-
- public TrialUndoParser(TokenStream tokStream, ParseTable prs, ITrialUndoActionProvider ra)
- throws BadParseSymFileException, NotBacktrackParseTableException {
- this.tokStream = tokStream;
- this.prs = prs;
- this.actionProvider = ra;
-
- START_STATE = prs.getStartState();
- NUM_RULES = prs.getNumRules();
- LA_STATE_OFFSET = prs.getLaStateOffset();
- EOFT_SYMBOL = prs.getEoftSymbol();
- ERROR_SYMBOL = prs.getErrorSymbol();
- ACCEPT_ACTION = prs.getAcceptAction();
- ERROR_ACTION = prs.getErrorAction();
-
- if (!prs.isValidForParser())
- throw new BadParseSymFileException();
- if (!prs.getBacktrack())
- throw new NotBacktrackParseTableException();
- }
-
- public TrialUndoParser(Monitor monitor, TokenStream tokStream, ParseTable prs, ITrialUndoActionProvider ra)
- throws BadParseSymFileException, NotBacktrackParseTableException {
- this(tokStream, prs, ra);
- this.monitor = monitor;
- }
-
- //
- // Parse without attempting any Error token recovery
- //
- public Object parse() throws BadParseException {
- // without an argument parse() will ignore error productions
- return parse(0);
- }
-
- //
- // Parse input allowing up to max_error_count Error token recoveries.
- // When max_error_count is 0, no Error token recoveries occur.
- // When max_error is > 0, it limits the number of Error token recoveries.
- // When max_error is < 0, the number of error token recoveries is unlimited.
- // Also, such recoveries only require one token to be parsed beyond the
- // recovery point.
- // (normally two tokens beyond the recovery point must be parsed)
- // Thus, a negative max_error_count should be used when error productions
- // are used to
- // skip tokens.
- //
- public Object parse(int max_error_count) throws BadParseException {
- state = new ParserState(START_STATE, tokStream);
- skipTokens = max_error_count < 0;
-
- state.pendingCommits = new LinkedList();
- backtrackRequested = false;
- state.trialActionCount = 0;
-
- // Next "start" token
- state.repair_token = 0;
-
- int start_token_index = tokStream.peek();
- int start_action_index = 0;
-
- // Last commit point
- int[] temp_stack = new int[1];
- temp_stack[0] = START_STATE;
-
- state.reallocateOtherStacks(start_token_index);
-
- int initial_error_token = backtrackParse(state.repair_token);
- for (int error_token = initial_error_token, count = 0; error_token != 0; error_token = backtrackParse(
- state.repair_token), count++) {
- if (count == max_error_count)
- throw new BadParseException(initial_error_token);
- state.actionCount = start_action_index;
- tokStream.reset(start_token_index);
- state.stateStackTop = temp_stack.length - 1;
- System.arraycopy(temp_stack, 0, state.stateStack, 0, temp_stack.length);
- state.reallocateOtherStacks(start_token_index);
-
- backtrackParseUpToError(state.repair_token, error_token);
-
- for (state.stateStackTop = findRecoveryStateIndex(
- state.stateStackTop); state.stateStackTop >= 0; state.stateStackTop = findRecoveryStateIndex(
- state.stateStackTop - 1)) {
- int recovery_token = state.tokens.get(state.locationStack[state.stateStackTop] - 1);
- state.repair_token = errorRepair((recovery_token >= start_token_index ? recovery_token : error_token),
- error_token);
- if (state.repair_token != 0)
- break;
- }
-
- if (state.stateStackTop < 0)
- throw new BadParseException(initial_error_token);
-
- temp_stack = new int[state.stateStackTop + 1];
- System.arraycopy(state.stateStack, 0, temp_stack, 0, temp_stack.length);
-
- start_action_index = state.actionCount;
- start_token_index = tokStream.peek();
- }
-
- if (state.repair_token != 0)
- state.tokens.add(state.repair_token);
- int t;
- for (t = start_token_index; tokStream.getKind(t) != EOFT_SYMBOL; t = tokStream.getNext(t))
- state.tokens.add(t);
- state.tokens.add(t);
-
- return null;
- }
-
- //
- // Process reductions and continue...
- //
- private int process_backtrack_reductions(int act) {
- do {
- state.stateStackTop -= (prs.rhs(act) - 1);
- trialAction(act);
- if (backtrackRequested) {
- backtrackRequested = false;
- return ERROR_ACTION;
- }
- act = prs.ntAction(state.stateStack[state.stateStackTop], prs.lhs(act));
- } while (act <= NUM_RULES);
- return act;
- }
-
- //
- // Process reductions and continue...
- //
- private int process_repair_reductions(int act) {
- do {
- System.out.println("process_repair_reductions: " + act);
- state.stateStackTop -= (prs.rhs(act) - 1);
- act = prs.ntAction(state.stateStack[state.stateStackTop], prs.lhs(act));
- } while (act <= NUM_RULES);
- return act;
- }
-
- //
- // Parse the input until either the parse completes successfully or
- // an error is encountered. This function returns an integer that
- // represents the last action that was executed by the parser. If
- // the parse was succesful, then the tuple "action" contains the
- // successful sequence of actions that was executed.
- //
- private int backtrackParse(int initial_token) {
- //
- // Allocate configuration stack.
- //
- state.configurationStack = new ConfigurationStack(prs);
- state.trialActionStack = new LinkedList<>();
- state.trialActionStack.add(Integer.valueOf(state.trialActionCount));
-
- //
- // Keep parsing until we successfully reach the end of file or
- // an error is encountered. The list of actions executed will
- // be stored in the "action" tuple.
- //
- int error_token = 0;
- int maxStackTop = state.stateStackTop;
- int start_token = tokStream.peek();
- state.curtok = (initial_token > 0 ? initial_token : tokStream.getToken());
- int current_kind = tokStream.getKind(state.curtok);
- state.act = tAction(state.stateStack[state.stateStackTop], current_kind);
-
- //
- // The main driver loop
- //
- for (;;) {
- //
- // if the parser needs to stop processing,
- // it may do so here.
- //
- if (monitor != null && monitor.isCancelled())
- return 0;
-
- state.parserLocationStack[state.stateStackTop] = state.curtok;
-
- if (state.act <= NUM_RULES) {
- state.actionCount++;
- state.stateStackTop--;
- state.act = process_backtrack_reductions(state.act);
- } else if (state.act > ERROR_ACTION) {
- state.actionCount++;
- state.lastToken = state.curtok;
- state.curtok = tokStream.getToken();
- current_kind = tokStream.getKind(state.curtok);
- state.act = process_backtrack_reductions(state.act - ERROR_ACTION);
- } else if (state.act < ACCEPT_ACTION) {
- state.actionCount++;
- state.lastToken = state.curtok;
- state.curtok = tokStream.getToken();
- current_kind = tokStream.getKind(state.curtok);
- }
-
- if (state.act == ERROR_ACTION) {
- error_token = (error_token > state.curtok ? error_token : state.curtok);
-
- ConfigurationElement configuration = state.configurationStack.pop();
- if (configuration == null)
- state.act = ERROR_ACTION;
- else {
- boolean shouldPop = prs.baseAction(configuration.conflict_index) == 0;
- undoActions(shouldPop);
- state.actionCount = configuration.action_length;
- state.act = configuration.act;
- state.curtok = configuration.curtok;
- current_kind = tokStream.getKind(state.curtok);
- tokStream.reset(state.curtok == initial_token ? start_token : tokStream.getNext(state.curtok));
- state.stateStackTop = configuration.stack_top;
- configuration.retrieveStack(state.stateStack);
- continue;
- }
- break;
- }
- if (state.act > ACCEPT_ACTION && state.act != ERROR_ACTION) {
- if (state.configurationStack.findConfiguration(state.stateStack, state.stateStackTop, state.curtok))
- state.act = ERROR_ACTION;
- else {
- state.configurationStack.push(state.stateStack, state.stateStackTop, state.act + 1, state.curtok,
- state.actionCount);
- state.trialActionStack.add(Integer.valueOf(state.trialActionCount));
- state.act = prs.baseAction(state.act);
- maxStackTop = state.stateStackTop > maxStackTop ? state.stateStackTop : maxStackTop;
- }
- continue;
- } else if (state.act == ACCEPT_ACTION) {
- break;
- }
- try {
- state.stateStack[++state.stateStackTop] = state.act;
- } catch (IndexOutOfBoundsException e) {
- state.reallocateStateStack();
- state.stateStack[state.stateStackTop] = state.act;
- }
-
- state.act = tAction(state.act, current_kind);
- }
-
- // System.out.println("****Number of configurations: " +
- // configuration_stack.configurationSize());
- // System.out.println("****Number of elements in stack tree: " +
- // configuration_stack.numStateElements());
- // System.out.println("****Number of elements in stacks: " +
- // configuration_stack.stacksSize());
- // System.out.println("****Number of actions: " + action.size());
- // System.out.println("****Max Stack Size = " + maxStackTop);
- // System.out.flush();
- return (state.act == ERROR_ACTION ? error_token : 0);
- }
-
- private void backtrackParseUpToError(int initial_token, int error_token) {
- //
- // Allocate configuration stack.
- //
- state.configurationStack = new ConfigurationStack(prs);
- state.trialActionStack = new LinkedList<>();
- state.trialActionStack.add(Integer.valueOf(state.trialActionCount));
-
- //
- // Keep parsing until we successfully reach the end of file or
- // an error is encountered. The list of actions executed will
- // be stored in the "action" tuple.
- //
-
- // tokStream.reset(initial_token);
- int start_token = tokStream.peek();
- state.curtok = (initial_token > 0 ? initial_token : tokStream.getToken());
- int current_kind = tokStream.getKind(state.curtok);
- state.act = tAction(state.stateStack[state.stateStackTop], current_kind);
-
- state.tokens.add(state.curtok);
- state.locationStack[state.stateStackTop] = state.tokens.size();
- state.actionStack[state.stateStackTop] = state.actionCount;
- state.undoStack[state.stateStackTop] = state.trialActionCount;
-
- for (;;) {
- //
- // if the parser needs to stop processing,
- // it may do so here.
- //
- if (monitor != null && monitor.isCancelled())
- return;
-
- state.parserLocationStack[state.stateStackTop] = state.curtok;
-
- if (state.act <= NUM_RULES) {
- state.actionCount++;
- state.stateStackTop--;
- state.act = process_backtrack_reductions(state.act);
- } else if (state.act > ERROR_ACTION) {
- state.actionCount++;
- state.lastToken = state.curtok;
- state.curtok = tokStream.getToken();
- current_kind = tokStream.getKind(state.curtok);
- state.tokens.add(state.curtok);
- state.act = process_backtrack_reductions(state.act - ERROR_ACTION);
- } else if (state.act < ACCEPT_ACTION) {
- state.actionCount++;
- state.lastToken = state.curtok;
- state.curtok = tokStream.getToken();
- current_kind = tokStream.getKind(state.curtok);
- state.tokens.add(state.curtok);
- } else if (state.act == ERROR_ACTION) {
- if (state.curtok != error_token) {
- ConfigurationElement configuration = state.configurationStack.pop();
- if (configuration == null)
- state.act = ERROR_ACTION;
- else {
- boolean shouldPop = prs.baseAction(configuration.conflict_index) == 0;
- undoActions(shouldPop);
- state.actionCount = configuration.action_length;
- state.act = configuration.act;
- int next_token_index = configuration.curtok;
- state.tokens.reset(next_token_index);
- state.curtok = state.tokens.get(next_token_index - 1);
- current_kind = tokStream.getKind(state.curtok);
- tokStream.reset(state.curtok == initial_token ? start_token : tokStream.getNext(state.curtok));
- state.stateStackTop = configuration.stack_top;
- configuration.retrieveStack(state.stateStack);
- state.locationStack[state.stateStackTop] = state.tokens.size();
- state.actionStack[state.stateStackTop] = state.actionCount;
- state.undoStack[state.stateStackTop] = state.trialActionCount;
- continue;
- }
- }
- break;
- } else if (state.act > ACCEPT_ACTION) {
- if (state.configurationStack.findConfiguration(state.stateStack, state.stateStackTop,
- state.tokens.size()))
- state.act = ERROR_ACTION;
- else {
- state.configurationStack.push(state.stateStack, state.stateStackTop, state.act + 1,
- state.tokens.size(), state.actionCount);
- state.trialActionStack.add(Integer.valueOf(state.trialActionCount));
- state.act = prs.baseAction(state.act);
- }
- continue;
- } else
- break; // assert(act == ACCEPT_ACTION);
-
- state.stateStack[++state.stateStackTop] = state.act; // no need
- // to check
- // if out of
- // bounds
- state.locationStack[state.stateStackTop] = state.tokens.size();
- state.actionStack[state.stateStackTop] = state.actionCount;
- state.undoStack[state.stateStackTop] = state.trialActionCount;
- state.act = tAction(state.act, current_kind);
- }
-
- // assert(curtok == error_token);
-
- return;
- }
-
- private boolean repairable(int error_token) {
- //
- // Allocate configuration stack.
- //
- ConfigurationStack configuration_stack = new ConfigurationStack(prs);
-
- //
- // Keep parsing until we successfully reach the end of file or
- // an error is encountered. The list of actions executed will
- // be stored in the "action" tuple.
- //
- int start_token = tokStream.peek();
- int final_token = tokStream.getStreamLength(); // unreachable
- int curtok = 0;
- int current_kind = ERROR_SYMBOL;
- int act = tAction(state.stateStack[state.stateStackTop], current_kind);
-
- for (;;) {
- if (act <= NUM_RULES) {
- state.stateStackTop--;
- act = process_repair_reductions(act);
- } else if (act > ERROR_ACTION) {
- curtok = tokStream.getToken();
- if (curtok > final_token)
- return true;
- current_kind = tokStream.getKind(curtok);
- act = process_repair_reductions(act - ERROR_ACTION);
- } else if (act < ACCEPT_ACTION) {
- curtok = tokStream.getToken();
- if (curtok > final_token)
- return true;
- current_kind = tokStream.getKind(curtok);
- } else if (act == ERROR_ACTION) {
- ConfigurationElement configuration = configuration_stack.pop();
- if (configuration == null)
- act = ERROR_ACTION;
- else {
- state.stateStackTop = configuration.stack_top;
- configuration.retrieveStack(state.stateStack);
- act = configuration.act;
- curtok = configuration.curtok;
- if (curtok == 0) {
- current_kind = ERROR_SYMBOL;
- tokStream.reset(start_token);
- } else {
- current_kind = tokStream.getKind(curtok);
- tokStream.reset(tokStream.getNext(curtok));
- }
- continue;
- }
- break;
- } else if (act > ACCEPT_ACTION) {
- if (configuration_stack.findConfiguration(state.stateStack, state.stateStackTop, curtok))
- act = ERROR_ACTION;
- else {
- configuration_stack.push(state.stateStack, state.stateStackTop, act + 1, curtok, 0);
- act = prs.baseAction(act);
- }
- continue;
- } else
- break; // assert(act == ACCEPT_ACTION);
- try {
- //
- // We consider a configuration to be acceptable for recovery
- // if we are able to consume enough symbols in the remaining
- // tokens to reach another potential recovery point past the
- // original error token.
- //
- if ((curtok > error_token) && (final_token == tokStream.getStreamLength())) {
- //
- // If the ERROR_SYMBOL is a valid Action Adjunct in the
- // state
- // "act" then we set the terminating token as the successor
- // of
- // the current token. I.e., we have to be able to parse at
- // least
- // two tokens past the re-synch point before we claim
- // victory.
- //
- if (recoverableState(act))
- final_token = skipTokens ? curtok : tokStream.getNext(curtok);
- }
-
- state.stateStack[++state.stateStackTop] = act;
- } catch (IndexOutOfBoundsException e) {
- state.reallocateStateStack();
- state.stateStack[state.stateStackTop] = act;
- }
-
- act = tAction(act, current_kind);
- }
-
- //
- // If we can reach the end of the input successfully, we claim victory.
- //
- return (act == ACCEPT_ACTION);
- }
-
- private boolean recoverableState(int state) {
- for (int k = prs.asi(state); prs.asr(k) != 0; k++) {
- if (prs.asr(k) == ERROR_SYMBOL)
- return true;
- }
- return false;
- }
-
- private int findRecoveryStateIndex(int start_index) {
- int i;
- for (i = start_index; i >= 0; i--) {
- //
- // If the ERROR_SYMBOL is an Action Adjunct in state stateStack[i]
- // then chose i as the index of the state to recover on.
- //
- if (recoverableState(state.stateStack[i]))
- break;
- }
-
- if (i >= 0) // if a recoverable state, remove null reductions, if any.
- {
- int k;
- for (k = i - 1; k >= 0; k--) {
- if (state.locationStack[k] != state.locationStack[i])
- break;
- }
- i = k + 1;
- }
-
- return i;
- }
-
- private int errorRepair(int recovery_token, int error_token) {
- int temp_stack[] = new int[state.stateStackTop + 1];
- System.arraycopy(state.stateStack, 0, temp_stack, 0, temp_stack.length);
- for (; tokStream.getKind(recovery_token) != EOFT_SYMBOL; recovery_token = tokStream.getNext(recovery_token)) {
- System.out.println("recovery token: " + tokStream.getKind(recovery_token)); //$NON-NLS-1$
- tokStream.reset(recovery_token);
- if (repairable(error_token))
- break;
- state.stateStackTop = temp_stack.length - 1;
- System.arraycopy(temp_stack, 0, state.stateStack, 0, temp_stack.length);
- }
-
- if (tokStream.getKind(recovery_token) == EOFT_SYMBOL) {
- tokStream.reset(recovery_token);
- if (!repairable(error_token)) {
- state.stateStackTop = temp_stack.length - 1;
- System.arraycopy(temp_stack, 0, state.stateStack, 0, temp_stack.length);
- return 0;
- }
- }
-
- state.stateStackTop = temp_stack.length - 1;
- System.arraycopy(temp_stack, 0, state.stateStack, 0, temp_stack.length);
-
- undoActions(state.undoStack[state.stateStackTop]);
- tokStream.reset(recovery_token);
- state.tokens.reset(state.locationStack[state.stateStackTop] - 1);
- state.actionCount = state.actionStack[state.stateStackTop];
- state.trialActionCount = state.undoStack[state.stateStackTop];
-
- return tokStream.makeErrorToken(state.tokens.get(state.locationStack[state.stateStackTop] - 1),
- tokStream.getPrevious(recovery_token), error_token, ERROR_SYMBOL);
- }
-
- private int tAction(int act, int sym) {
- act = prs.tAction(act, sym);
- if (act > LA_STATE_OFFSET) {
- int next_token = tokStream.peek();
- act = prs.lookAhead(act - LA_STATE_OFFSET, tokStream.getKind(next_token));
- while (act > LA_STATE_OFFSET) {
- next_token = tokStream.getNext(next_token);
- act = prs.lookAhead(act - LA_STATE_OFFSET, tokStream.getKind(next_token));
- }
- }
- return act;
- }
-
- private void trialAction(int action) {
- int start = getTokenOffset();
- int end = getLastToken();
- Rule rule = new Rule(action, start, end);
-
- actionProvider.setActiveRule(rule);
- boolean saveAction = actionProvider.trialAction(action);
- if (backtrackRequested) {
- return;
- }
- if (saveAction) {
- state.trialActionCount++;
- state.pendingCommits.add(rule);
- }
- }
-
- /**
- * Performs the undo actions (in reverse order) for the corresponding trial
- * actions that have been executed since the last backtrackable point.
- */
- private void undoActions(boolean shouldPop) {
- int oldTrialActionCount;
- if (state.trialActionStack.size() == 0) {
- oldTrialActionCount = 0;
- } else {
- oldTrialActionCount = state.trialActionStack.getLast();
- if (shouldPop) {
- state.trialActionStack.removeLast();
- }
- }
- safeUndoActions(oldTrialActionCount);
-
- // needs to be a real checked exception if we ever decide to implement commits
- //assert (state.trialActionCount == 0 && oldTrialActionCount == 0) || oldTrialActionCount != state.trialActionCount : "Went back in time too far";
- }
-
- private void safeUndoActions(int total) {
- assert total >= 0 : "Tried to go back in time but the door was already shut."; //$NON-NLS-1$
- undoActions(total);
- }
-
- private void undoActions(int total) {
- while (state.trialActionCount > total) {
- Rule action = ((Rule) state.pendingCommits.removeLast());
- actionProvider.setActiveRule(action);
- actionProvider.undoAction(action.getRuleNumber());
- state.trialActionCount--;
- }
- }
-
- public void backtrack() {
- backtrackRequested = true;
- }
-
- public void commit() {
- while (state.pendingCommits.size() > 0) {
- Rule activeRule = (Rule) state.pendingCommits.removeFirst();
- actionProvider.setActiveRule(activeRule);
- actionProvider.finalAction(activeRule.getRuleNumber());
- state.totalCommits++;
- }
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/lpgextensions/TrialUndoParserTemplate.g b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/lpgextensions/TrialUndoParserTemplate.g
deleted file mode 100644
index e323a8ee6fd..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/lpgextensions/TrialUndoParserTemplate.g
+++ /dev/null
@@ -1,305 +0,0 @@
---------------------------------------------------------------------------------
--- Copyright (c) 2006, 2007 IBM Corporation and others.
--- This program and the accompanying materials
--- are made available under the terms of the Eclipse Public License 2.0
--- which accompanies this distribution, and is available at
--- https://www.eclipse.org/legal/epl-2.0/
---
--- SPDX-License-Identifier: EPL-2.0
---
--- Contributors:
--- IBM Corporation - initial API and implementation
---------------------------------------------------------------------------------
-
---
--- In a parser using this template, the following macro may be redefined:
---
--- $additional_interfaces
--- $ast_class
---
--- B E G I N N I N G O F T E M P L A T E TrialUndoParserTemplate
---
-%Options programming_language=java,margin=8,backtrack
-%Options table,error_maps,scopes
-%options prefix=TK_,
-%options action=("*.java", "/.", "./")
-%options headers=("*.java", "/:", ":/")
-%options ParseTable=lpg.lpgjavaruntime.ParseTable
-
---
--- This template requires that the name of the EOF token be set
--- to EOF_TOKEN to be consistent with LexerTemplateD and LexerTemplateE
---
-$EOF
- EOF_TOKEN
-$End
-
-$ERROR
- ERROR_TOKEN
-$End
-
-$Define
- $DefaultAllocation
- /:
- RULE_ACTIONS[$rule_number] = new Action$rule_number$();:/
-
- $NoAllocation
- /:
- RULE_ACTIONS[$rule_number] = EMPTY_ACTION:/
-
- $NullAllocation
- /:
- RULE_ACTIONS[$rule_number] = new NullAction();:/
-
- $BadAllocation
- /:
- RULE_ACTIONS[$rule_number] = new BadAction();:/
-
- $Header
- /.
- //
- // Rule $rule_number: $rule_text
- //./
-
- $DefaultAction
- /.$DefaultAllocation $Header
- static final class Action$rule_number extends Action./
-
- --
- -- This macro is used to initialize the ruleAction array
- -- to the null_action function.
- --
- $NullAction
- /. $NullAllocation $Header
- //
- // final class NullAction extends Action
- //
- ./
-
- --
- -- This macro is used to initialize the ruleAction array
- -- to the no_action function.
- --
- $NoAction
- /. $NoAllocation $Header
- //
- // final class NullAction extends Action
- //
- ./
-
- --
- -- This macro is used to initialize the ruleAction array
- -- to the bad_action function.
- --
- $BadAction
- /. $BadAllocation $Header
- //
- // final class NullAction extends Action
- //
- ./
-
- --
- -- This is the header for a ruleAction class
- --
- $BeginAction
- /.$DefaultAllocation $Header
- static final class Action$rule_number extends DeclaredAction<$action_class, $data_class> {
- ./
-
- $EndAction
- /.
- }./
-
- $BeginTrial
- /.
- public boolean doTrial(ITrialUndoActionProvider<$data_class> provider, $action_class action) {./
-
- $EndTrial
- /.
- return hasUndo;
- }./
-
- $BeginUndo
- /.
- public Action$rule_number() { hasUndo = true; };
- public void doUndo(ITrialUndoActionProvider<$data_class> provider, $action_class action) {./
-
- $EndUndo
- /.
- }./
-
- $BeginFinal
- /.
- public void doFinal(ITrialUndoActionProvider<$data_class> provider, $action_class action) {./
-
- $EndFinal
- /.
- }./
-
- $BeginJava
- /.$BeginAction
- $symbol_declarations./
-
- $EndJava /.$EndAction./
-
- $SplitActions /../
-
- --
- -- Macros that may be needed in a parser using this template
- --
- $additional_interfaces /../
- $ast_class /.$ast_type./
- $action_class /.Object./
-
- $Trial /.$BeginTrial./
- $Undo /.$BeginUndo./
- $Final /.$BeginFinal./
- $Action /.$BeginAction./
-
-$End
-
-$Globals
- /.
-import lpg.lpgjavaruntime.*;
-import org.eclipse.cdt.core.dom.lrparser.lpgextensions.ITrialUndoActionProvider;
-import org.eclipse.cdt.core.dom.lrparser.lpgextensions.AbstractTrialUndoActionProvider;
-import org.eclipse.cdt.core.dom.lrparser.lpgextensions.TrialUndoParser;
-./
-$End
-
-$Headers
- /.
-public class $action_type extends AbstractTrialUndoActionProvider<$action_class, $data_class> implements IParserActionTokenProvider, IParser $additional_interfaces {
- private static ParseTable prs = new $prs_type();
- protected static final Action<$action_class, $data_class>[] RULE_ACTIONS;
-
- {
- ruleAction = RULE_ACTIONS;
- }
-
- public $action_type(LexStream lexStream) {
- super(lexStream);
-
- try {
- super.remapTerminalSymbols(orderedTerminalSymbols(), $prs_type.EOFT_SYMBOL);
- } catch (NullExportedSymbolsException e) {
- } catch (NullTerminalSymbolsException e) {
- } catch (UnimplementedTerminalsException e) {
- java.util.ArrayList unimplemented_symbols = e.getSymbols();
- System.out.println("The Lexer will not scan the following token(s):");
- for (int i = 0; i < unimplemented_symbols.size(); i++) {
- Integer id = (Integer) unimplemented_symbols.get(i);
- System.out.println(" " + $sym_type.orderedTerminalSymbols[id.intValue()]);
- }
- System.out.println();
- } catch (UndefinedEofSymbolException e) {
- throw new Error(new UndefinedEofSymbolException("The Lexer does not implement the Eof symbol " + $sym_type.orderedTerminalSymbols[$prs_type.EOFT_SYMBOL]));
- }
- }
-
-
- public $action_type() { // constructor
- // this(new $lexer_class());
- }
-
- public String[] orderedTerminalSymbols() {
- return $sym_type.orderedTerminalSymbols;
- }
-
- public String getTokenKindName(int kind) {
- return $sym_type.orderedTerminalSymbols[kind];
- }
-
- public int getEOFTokenKind() {
- return $prs_type.EOFT_SYMBOL;
- }
-
- public PrsStream getParseStream() {
- return (PrsStream) this;
- }
-
- //
- // Report error message for given error_token.
- //
- public final void reportErrorTokenMessage(int error_token, String msg) {
- int firsttok = super.getFirstRealToken(error_token), lasttok = super.getLastRealToken(error_token);
- String location = super.getFileName() + ':' +
- (firsttok > lasttok
- ? (super.getEndLine(lasttok) + ":" + super.getEndColumn(lasttok))
- : (super.getLine(error_token) + ":" +
- super.getColumn(error_token) + ":" +
- super.getEndLine(error_token) + ":" +
- super.getEndColumn(error_token))) + ": ";
- super.reportError((firsttok > lasttok ? ParseErrorCodes.INSERTION_CODE : ParseErrorCodes.SUBSTITUTION_CODE), location, msg);
- }
-
- public $ast_class parser() {
- return parser(null, 0);
- }
-
- public $ast_class parser(Monitor monitor) {
- return parser(monitor, 0);
- }
-
- public $ast_class parser(int error_repair_count) {
- return parser(null, error_repair_count);
- }
-
- public $ast_class parser(Monitor monitor, int error_repair_count) {
- try {
- btParser = new TrialUndoParser((TokenStream) this, prs, (ITrialUndoActionProvider<$data_class>) this);
- } catch (NotBacktrackParseTableException e) {
- throw new Error(new NotBacktrackParseTableException("Regenerate $prs_type.java with -BACKTRACK option"));
- } catch (BadParseSymFileException e) {
- throw new Error(new BadParseSymFileException("Bad Parser Symbol File -- $sym_type.java"));
- }
-
- try {
- Object result = (Object) btParser.parse(error_repair_count);
- btParser.commit();
- return result;
- } catch (BadParseException e) {
- reset(e.error_token); // point to error token
-
- //DiagnoseParser diagnoseParser = new DiagnoseParser((TokenStream) this, prs);
- //diagnoseParser.diagnose(e.error_token);
- }
-
- return null;
- }
-
- ./
-
- /:
-
- //
- // Initialize ruleAction array.
- //
- static {
- RULE_ACTIONS = new Action[$NUM_RULES + 1];
- RULE_ACTIONS[0] = null;
- :/
-$End
-
-$Trailers
- /.
- }
- ./
-
- /:
-
-
- //
- // Make sure that all elements of ruleAction are properly initialized
- //
- for (int i = 0; i < RULE_ACTIONS.length; i++) {
- if (RULE_ACTIONS[i] == null) {
- RULE_ACTIONS[i] = emptyAction();
- }
- }
- }
- :/
-$End
---
--- E N D O F T E M P L A T E
---
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99ExpressionParser.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99ExpressionParser.java
deleted file mode 100644
index f8569f15064..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99ExpressionParser.java
+++ /dev/null
@@ -1,1682 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2015 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.dom.lrparser.c99;
-
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.cdt.core.dom.ast.IASTBinaryExpression;
-import org.eclipse.cdt.core.dom.ast.IASTCastExpression;
-import org.eclipse.cdt.core.dom.ast.IASTCompletionNode;
-import org.eclipse.cdt.core.dom.ast.IASTCompositeTypeSpecifier;
-import org.eclipse.cdt.core.dom.ast.IASTElaboratedTypeSpecifier;
-import org.eclipse.cdt.core.dom.ast.IASTExpression;
-import org.eclipse.cdt.core.dom.ast.IASTLiteralExpression;
-import org.eclipse.cdt.core.dom.ast.IASTTypeIdExpression;
-import org.eclipse.cdt.core.dom.ast.IASTUnaryExpression;
-import org.eclipse.cdt.core.dom.lrparser.CPreprocessorAdapter;
-import org.eclipse.cdt.core.dom.lrparser.IDOMTokenMap;
-import org.eclipse.cdt.core.dom.lrparser.ISecondaryParser;
-import org.eclipse.cdt.core.dom.lrparser.ITokenCollector;
-import org.eclipse.cdt.core.dom.lrparser.action.ITokenMap;
-import org.eclipse.cdt.core.dom.lrparser.action.ITokenStream;
-import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack;
-import org.eclipse.cdt.core.dom.lrparser.action.TokenMap;
-import org.eclipse.cdt.core.dom.lrparser.action.c99.C99BuildASTParserAction;
-import org.eclipse.cdt.core.dom.lrparser.action.c99.C99SecondaryParserFactory;
-import org.eclipse.cdt.core.dom.lrparser.lpgextensions.FixedBacktrackingParser;
-import org.eclipse.cdt.core.dom.parser.IBuiltinBindingsProvider;
-import org.eclipse.cdt.core.index.IIndex;
-import org.eclipse.cdt.core.parser.IScanner;
-import org.eclipse.cdt.internal.core.dom.parser.c.CNodeFactory;
-
-import lpg.lpgjavaruntime.BadParseException;
-import lpg.lpgjavaruntime.BadParseSymFileException;
-import lpg.lpgjavaruntime.DiagnoseParser;
-import lpg.lpgjavaruntime.ErrorToken;
-import lpg.lpgjavaruntime.IToken;
-import lpg.lpgjavaruntime.LexStream;
-import lpg.lpgjavaruntime.Monitor;
-import lpg.lpgjavaruntime.NotBacktrackParseTableException;
-import lpg.lpgjavaruntime.NullExportedSymbolsException;
-import lpg.lpgjavaruntime.NullTerminalSymbolsException;
-import lpg.lpgjavaruntime.ParseErrorCodes;
-import lpg.lpgjavaruntime.ParseTable;
-import lpg.lpgjavaruntime.PrsStream;
-import lpg.lpgjavaruntime.RuleAction;
-import lpg.lpgjavaruntime.Token;
-import lpg.lpgjavaruntime.UndefinedEofSymbolException;
-import lpg.lpgjavaruntime.UnimplementedTerminalsException;
-
-public class C99ExpressionParser extends PrsStream
- implements RuleAction, ITokenStream, ITokenCollector, ISecondaryParser<IASTExpression> {
- private static ParseTable prs = new C99ExpressionParserprs();
- private FixedBacktrackingParser btParser;
-
- public FixedBacktrackingParser getParser() {
- return btParser;
- }
-
- private void setResult(Object object) {
- btParser.setSym1(object);
- }
-
- public Object getRhsSym(int i) {
- return btParser.getSym(i);
- }
-
- public int getRhsTokenIndex(int i) {
- return btParser.getToken(i);
- }
-
- public IToken getRhsIToken(int i) {
- return super.getIToken(getRhsTokenIndex(i));
- }
-
- public int getRhsFirstTokenIndex(int i) {
- return btParser.getFirstToken(i);
- }
-
- public IToken getRhsFirstIToken(int i) {
- return super.getIToken(getRhsFirstTokenIndex(i));
- }
-
- public int getRhsLastTokenIndex(int i) {
- return btParser.getLastToken(i);
- }
-
- public IToken getRhsLastIToken(int i) {
- return super.getIToken(getRhsLastTokenIndex(i));
- }
-
- public int getLeftSpan() {
- return btParser.getFirstToken();
- }
-
- @Override
- public IToken getLeftIToken() {
- return super.getIToken(getLeftSpan());
- }
-
- public int getRightSpan() {
- return btParser.getLastToken();
- }
-
- @Override
- public IToken getRightIToken() {
- return super.getIToken(getRightSpan());
- }
-
- public int getRhsErrorTokenIndex(int i) {
- int index = btParser.getToken(i);
- IToken err = super.getIToken(index);
- return (err instanceof ErrorToken ? index : 0);
- }
-
- public ErrorToken getRhsErrorIToken(int i) {
- int index = btParser.getToken(i);
- IToken err = super.getIToken(index);
- return (ErrorToken) (err instanceof ErrorToken ? err : null);
- }
-
- public C99ExpressionParser(LexStream lexStream) {
- super(lexStream);
-
- try {
- super.remapTerminalSymbols(orderedTerminalSymbols(), C99ExpressionParserprs.EOFT_SYMBOL);
- } catch (NullExportedSymbolsException e) {
- } catch (NullTerminalSymbolsException e) {
- } catch (UnimplementedTerminalsException e) {
- java.util.ArrayList unimplemented_symbols = e.getSymbols();
- System.out.println("The Lexer will not scan the following token(s):");
- for (int i = 0; i < unimplemented_symbols.size(); i++) {
- Integer id = (Integer) unimplemented_symbols.get(i);
- System.out.println(" " + C99ExpressionParsersym.orderedTerminalSymbols[id.intValue()]);
- }
- System.out.println();
- } catch (UndefinedEofSymbolException e) {
- throw new Error(new UndefinedEofSymbolException("The Lexer does not implement the Eof symbol "
- + C99ExpressionParsersym.orderedTerminalSymbols[C99ExpressionParserprs.EOFT_SYMBOL]));
- }
- }
-
- @Override
- public String[] orderedTerminalSymbols() {
- return C99ExpressionParsersym.orderedTerminalSymbols;
- }
-
- public String getTokenKindName(int kind) {
- return C99ExpressionParsersym.orderedTerminalSymbols[kind];
- }
-
- public int getEOFTokenKind() {
- return C99ExpressionParserprs.EOFT_SYMBOL;
- }
-
- public PrsStream getParseStream() {
- return this;
- }
-
- //
- // Report error message for given error_token.
- //
- public final void reportErrorTokenMessage(int error_token, String msg) {
- int firsttok = super.getFirstErrorToken(error_token), lasttok = super.getLastErrorToken(error_token);
- String location = super.getFileName() + ':'
- + (firsttok > lasttok ? (super.getEndLine(lasttok) + ":" + super.getEndColumn(lasttok))
- : (super.getLine(error_token) + ":" + super.getColumn(error_token) + ":"
- + super.getEndLine(error_token) + ":" + super.getEndColumn(error_token)))
- + ": ";
- super.reportError((firsttok > lasttok ? ParseErrorCodes.INSERTION_CODE : ParseErrorCodes.SUBSTITUTION_CODE),
- location, msg);
- }
-
- public void parser() {
- parser(null, 0);
- }
-
- public void parser(Monitor monitor) {
- parser(monitor, 0);
- }
-
- public void parser(int error_repair_count) {
- parser(null, error_repair_count);
- }
-
- public void parser(Monitor monitor, int error_repair_count) {
- try {
- btParser = new FixedBacktrackingParser(monitor, this, prs, this);
- } catch (NotBacktrackParseTableException e) {
- throw new Error(new NotBacktrackParseTableException(
- "Regenerate C99ExpressionParserprs.java with -BACKTRACK option"));
- } catch (BadParseSymFileException e) {
- throw new Error(new BadParseSymFileException("Bad Parser Symbol File -- C99ExpressionParsersym.java"));
- }
-
- try {
- btParser.parse(error_repair_count);
- } catch (BadParseException e) {
- reset(e.error_token); // point to error token
- DiagnoseParser diagnoseParser = new DiagnoseParser(this, prs);
- diagnoseParser.diagnose(e.error_token);
- }
- }
-
- private C99BuildASTParserAction action;
- private IASTCompletionNode compNode;
-
- public C99ExpressionParser(IScanner scanner, IDOMTokenMap tokenMap,
- IBuiltinBindingsProvider builtinBindingsProvider, IIndex index, Map<String, String> properties) {
- initActions(properties);
- action.initializeTranslationUnit(scanner, builtinBindingsProvider, index);
- CPreprocessorAdapter.runCPreprocessor(scanner, this, tokenMap);
- }
-
- private void initActions(Map<String, String> properties) {
- ScopedStack<Object> astStack = new ScopedStack<>();
-
- action = new C99BuildASTParserAction(this, astStack, CNodeFactory.getDefault(),
- C99SecondaryParserFactory.getDefault());
- action.setParserProperties(properties);
-
- }
-
- @Override
- public void addToken(IToken token) {
- token.setKind(mapKind(token.getKind())); // TODO does mapKind need to be called?
- super.addToken(token);
- }
-
- @Override
- public IASTExpression parse() {
- // this has to be done, or... kaboom!
- setStreamLength(getSize());
-
- final int errorRepairCount = -1; // -1 means full error handling
- parser(null, errorRepairCount); // do the actual parse
- super.resetTokenStream(); // allow tokens to be garbage collected
-
- compNode = action.getASTCompletionNode(); // the completion node may be null
- return (IASTExpression) action.getParseResult();
- }
-
- @Override
- public IASTCompletionNode getCompletionNode() {
- return compNode;
- }
-
- // uncomment this method to use with backtracking parser
- @Override
- public List<IToken> getRuleTokens() {
- return getTokens().subList(getLeftSpan(), getRightSpan() + 1);
- }
-
- @Override
- public String[] getOrderedTerminalSymbols() {
- return C99ExpressionParsersym.orderedTerminalSymbols;
- }
-
- @Override
- @SuppressWarnings("nls")
- public String getName() {
- return "C99ExpressionParser";
- }
-
- private ITokenMap tokenMap = null;
-
- @Override
- public void setTokens(List<IToken> tokens) {
- resetTokenStream();
- addToken(new Token(null, 0, 0, 0)); // dummy token
- for (IToken token : tokens) {
- token.setKind(tokenMap.mapKind(token.getKind()));
- addToken(token);
- }
- addToken(new Token(null, 0, 0, C99ExpressionParsersym.TK_EOF_TOKEN));
- }
-
- public C99ExpressionParser(ITokenStream stream, Map<String, String> properties) { // constructor for creating secondary parser
- initActions(properties);
- tokenMap = new TokenMap(C99ExpressionParsersym.orderedTerminalSymbols, stream.getOrderedTerminalSymbols());
- }
-
- @Override
- public void ruleAction(int ruleNumber) {
- switch (ruleNumber) {
-
- //
- // Rule 1: <openscope-ast> ::= $Empty
- //
- case 1: {
- action.openASTScope();
- break;
- }
-
- //
- // Rule 2: <empty> ::= $Empty
- //
- case 2: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 13: literal ::= integer
- //
- case 13: {
- action.consumeExpressionLiteral(IASTLiteralExpression.lk_integer_constant);
- break;
- }
-
- //
- // Rule 14: literal ::= floating
- //
- case 14: {
- action.consumeExpressionLiteral(IASTLiteralExpression.lk_float_constant);
- break;
- }
-
- //
- // Rule 15: literal ::= charconst
- //
- case 15: {
- action.consumeExpressionLiteral(IASTLiteralExpression.lk_char_constant);
- break;
- }
-
- //
- // Rule 16: literal ::= stringlit
- //
- case 16: {
- action.consumeExpressionLiteral(IASTLiteralExpression.lk_string_literal);
- break;
- }
-
- //
- // Rule 18: primary_expression ::= primary_expression_id
- //
- case 18: {
- action.consumeExpressionID();
- break;
- }
-
- //
- // Rule 19: primary_expression ::= ( expression )
- //
- case 19: {
- action.consumeExpressionBracketed();
- break;
- }
-
- //
- // Rule 22: postfix_expression ::= postfix_expression [ expression ]
- //
- case 22: {
- action.consumeExpressionArraySubscript();
- break;
- }
-
- //
- // Rule 23: postfix_expression ::= postfix_expression ( expression_list_opt )
- //
- case 23: {
- action.consumeExpressionFunctionCall();
- break;
- }
-
- //
- // Rule 24: postfix_expression ::= postfix_expression . member_name
- //
- case 24: {
- action.consumeExpressionFieldReference(false);
- break;
- }
-
- //
- // Rule 25: postfix_expression ::= postfix_expression -> member_name
- //
- case 25: {
- action.consumeExpressionFieldReference(true);
- break;
- }
-
- //
- // Rule 26: postfix_expression ::= postfix_expression ++
- //
- case 26: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixIncr);
- break;
- }
-
- //
- // Rule 27: postfix_expression ::= postfix_expression --
- //
- case 27: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixDecr);
- break;
- }
-
- //
- // Rule 28: postfix_expression ::= ( type_id ) initializer_list
- //
- case 28: {
- action.consumeExpressionTypeIdInitializer();
- break;
- }
-
- //
- // Rule 33: unary_expression ::= ++ unary_expression
- //
- case 33: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixIncr);
- break;
- }
-
- //
- // Rule 34: unary_expression ::= -- unary_expression
- //
- case 34: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixDecr);
- break;
- }
-
- //
- // Rule 35: unary_expression ::= & cast_expression
- //
- case 35: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_amper);
- break;
- }
-
- //
- // Rule 36: unary_expression ::= * cast_expression
- //
- case 36: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_star);
- break;
- }
-
- //
- // Rule 37: unary_expression ::= + cast_expression
- //
- case 37: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_plus);
- break;
- }
-
- //
- // Rule 38: unary_expression ::= - cast_expression
- //
- case 38: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_minus);
- break;
- }
-
- //
- // Rule 39: unary_expression ::= ~ cast_expression
- //
- case 39: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_tilde);
- break;
- }
-
- //
- // Rule 40: unary_expression ::= ! cast_expression
- //
- case 40: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_not);
- break;
- }
-
- //
- // Rule 41: unary_expression ::= sizeof unary_expression
- //
- case 41: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_sizeof);
- break;
- }
-
- //
- // Rule 42: unary_expression ::= sizeof ( type_id )
- //
- case 42: {
- action.consumeExpressionTypeId(IASTTypeIdExpression.op_sizeof);
- break;
- }
-
- //
- // Rule 44: cast_expression ::= ( type_id ) cast_expression
- //
- case 44: {
- action.consumeExpressionCast(IASTCastExpression.op_cast);
- break;
- }
-
- //
- // Rule 46: multiplicative_expression ::= multiplicative_expression * cast_expression
- //
- case 46: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_multiply);
- break;
- }
-
- //
- // Rule 47: multiplicative_expression ::= multiplicative_expression / cast_expression
- //
- case 47: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_divide);
- break;
- }
-
- //
- // Rule 48: multiplicative_expression ::= multiplicative_expression % cast_expression
- //
- case 48: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_modulo);
- break;
- }
-
- //
- // Rule 50: additive_expression ::= additive_expression + multiplicative_expression
- //
- case 50: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_plus);
- break;
- }
-
- //
- // Rule 51: additive_expression ::= additive_expression - multiplicative_expression
- //
- case 51: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_minus);
- break;
- }
-
- //
- // Rule 53: shift_expression ::= shift_expression << additive_expression
- //
- case 53: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftLeft);
- break;
- }
-
- //
- // Rule 54: shift_expression ::= shift_expression >> additive_expression
- //
- case 54: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftRight);
- break;
- }
-
- //
- // Rule 56: relational_expression ::= relational_expression < shift_expression
- //
- case 56: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_lessThan);
- break;
- }
-
- //
- // Rule 57: relational_expression ::= relational_expression > shift_expression
- //
- case 57: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_greaterThan);
- break;
- }
-
- //
- // Rule 58: relational_expression ::= relational_expression <= shift_expression
- //
- case 58: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_lessEqual);
- break;
- }
-
- //
- // Rule 59: relational_expression ::= relational_expression >= shift_expression
- //
- case 59: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_greaterEqual);
- break;
- }
-
- //
- // Rule 61: equality_expression ::= equality_expression == relational_expression
- //
- case 61: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_equals);
- break;
- }
-
- //
- // Rule 62: equality_expression ::= equality_expression != relational_expression
- //
- case 62: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_notequals);
- break;
- }
-
- //
- // Rule 64: and_expression ::= and_expression & equality_expression
- //
- case 64: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryAnd);
- break;
- }
-
- //
- // Rule 66: exclusive_or_expression ::= exclusive_or_expression ^ and_expression
- //
- case 66: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryXor);
- break;
- }
-
- //
- // Rule 68: inclusive_or_expression ::= inclusive_or_expression | exclusive_or_expression
- //
- case 68: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryOr);
- break;
- }
-
- //
- // Rule 70: logical_and_expression ::= logical_and_expression && inclusive_or_expression
- //
- case 70: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_logicalAnd);
- break;
- }
-
- //
- // Rule 72: logical_or_expression ::= logical_or_expression || logical_and_expression
- //
- case 72: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_logicalOr);
- break;
- }
-
- //
- // Rule 74: conditional_expression ::= logical_or_expression ? expression : assignment_expression
- //
- case 74: {
- action.consumeExpressionConditional();
- break;
- }
-
- //
- // Rule 76: assignment_expression ::= unary_expression = assignment_expression
- //
- case 76: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_assign);
- break;
- }
-
- //
- // Rule 77: assignment_expression ::= unary_expression *= assignment_expression
- //
- case 77: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_multiplyAssign);
- break;
- }
-
- //
- // Rule 78: assignment_expression ::= unary_expression /= assignment_expression
- //
- case 78: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_divideAssign);
- break;
- }
-
- //
- // Rule 79: assignment_expression ::= unary_expression %= assignment_expression
- //
- case 79: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_moduloAssign);
- break;
- }
-
- //
- // Rule 80: assignment_expression ::= unary_expression += assignment_expression
- //
- case 80: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_plusAssign);
- break;
- }
-
- //
- // Rule 81: assignment_expression ::= unary_expression -= assignment_expression
- //
- case 81: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_minusAssign);
- break;
- }
-
- //
- // Rule 82: assignment_expression ::= unary_expression <<= assignment_expression
- //
- case 82: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftLeftAssign);
- break;
- }
-
- //
- // Rule 83: assignment_expression ::= unary_expression >>= assignment_expression
- //
- case 83: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftRightAssign);
- break;
- }
-
- //
- // Rule 84: assignment_expression ::= unary_expression &= assignment_expression
- //
- case 84: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryAndAssign);
- break;
- }
-
- //
- // Rule 85: assignment_expression ::= unary_expression ^= assignment_expression
- //
- case 85: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryXorAssign);
- break;
- }
-
- //
- // Rule 86: assignment_expression ::= unary_expression |= assignment_expression
- //
- case 86: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryOrAssign);
- break;
- }
-
- //
- // Rule 89: expression_list ::= <openscope-ast> expression_list_actual
- //
- case 89: {
- action.consumeExpressionList();
- break;
- }
-
- //
- // Rule 91: expression_list_opt ::= $Empty
- //
- case 91: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 101: statement ::= ERROR_TOKEN
- //
- case 101: {
- action.consumeStatementProblem();
- break;
- }
-
- //
- // Rule 102: labeled_statement ::= identifier_token : statement
- //
- case 102: {
- action.consumeStatementLabeled();
- break;
- }
-
- //
- // Rule 103: labeled_statement ::= case constant_expression : statement
- //
- case 103: {
- action.consumeStatementCase();
- break;
- }
-
- //
- // Rule 104: labeled_statement ::= default : statement
- //
- case 104: {
- action.consumeStatementDefault();
- break;
- }
-
- //
- // Rule 105: compound_statement ::= { }
- //
- case 105: {
- action.consumeStatementCompoundStatement(false);
- break;
- }
-
- //
- // Rule 106: compound_statement ::= { <openscope-ast> block_item_list }
- //
- case 106: {
- action.consumeStatementCompoundStatement(true);
- break;
- }
-
- //
- // Rule 110: block_item ::= declaration
- //
- case 110: {
- action.consumeStatementDeclarationWithDisambiguation();
- break;
- }
-
- //
- // Rule 111: expression_statement ::= ;
- //
- case 111: {
- action.consumeStatementNull();
- break;
- }
-
- //
- // Rule 112: expression_statement ::= expression_in_statement ;
- //
- case 112: {
- action.consumeStatementExpression();
- break;
- }
-
- //
- // Rule 113: selection_statement ::= if ( expression ) statement
- //
- case 113: {
- action.consumeStatementIf(false);
- break;
- }
-
- //
- // Rule 114: selection_statement ::= if ( expression ) statement else statement
- //
- case 114: {
- action.consumeStatementIf(true);
- break;
- }
-
- //
- // Rule 115: selection_statement ::= switch ( expression ) statement
- //
- case 115: {
- action.consumeStatementSwitch();
- break;
- }
-
- //
- // Rule 117: expression_opt ::= $Empty
- //
- case 117: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 118: iteration_statement ::= do statement while ( expression ) ;
- //
- case 118: {
- action.consumeStatementDoLoop(true);
- break;
- }
-
- //
- // Rule 119: iteration_statement ::= do statement
- //
- case 119: {
- action.consumeStatementDoLoop(false);
- break;
- }
-
- //
- // Rule 120: iteration_statement ::= while ( expression ) statement
- //
- case 120: {
- action.consumeStatementWhileLoop();
- break;
- }
-
- //
- // Rule 121: iteration_statement ::= for ( expression_opt ; expression_opt ; expression_opt ) statement
- //
- case 121: {
- action.consumeStatementForLoop();
- break;
- }
-
- //
- // Rule 122: iteration_statement ::= for ( declaration expression_opt ; expression_opt ) statement
- //
- case 122: {
- action.consumeStatementForLoop();
- break;
- }
-
- //
- // Rule 123: jump_statement ::= goto identifier_token ;
- //
- case 123: {
- action.consumeStatementGoto();
- break;
- }
-
- //
- // Rule 124: jump_statement ::= continue ;
- //
- case 124: {
- action.consumeStatementContinue();
- break;
- }
-
- //
- // Rule 125: jump_statement ::= break ;
- //
- case 125: {
- action.consumeStatementBreak();
- break;
- }
-
- //
- // Rule 126: jump_statement ::= return ;
- //
- case 126: {
- action.consumeStatementReturn(false);
- break;
- }
-
- //
- // Rule 127: jump_statement ::= return expression ;
- //
- case 127: {
- action.consumeStatementReturn(true);
- break;
- }
-
- //
- // Rule 128: declaration ::= declaration_specifiers ;
- //
- case 128: {
- action.consumeDeclarationSimple(false);
- break;
- }
-
- //
- // Rule 129: declaration ::= declaration_specifiers <openscope-ast> init_declarator_list ;
- //
- case 129: {
- action.consumeDeclarationSimple(true);
- break;
- }
-
- //
- // Rule 130: declaration_specifiers ::= <openscope-ast> simple_declaration_specifiers
- //
- case 130: {
- action.consumeDeclarationSpecifiersSimple();
- break;
- }
-
- //
- // Rule 131: declaration_specifiers ::= <openscope-ast> struct_or_union_declaration_specifiers
- //
- case 131: {
- action.consumeDeclarationSpecifiersStructUnionEnum();
- break;
- }
-
- //
- // Rule 132: declaration_specifiers ::= <openscope-ast> elaborated_declaration_specifiers
- //
- case 132: {
- action.consumeDeclarationSpecifiersStructUnionEnum();
- break;
- }
-
- //
- // Rule 133: declaration_specifiers ::= <openscope-ast> enum_declaration_specifiers
- //
- case 133: {
- action.consumeDeclarationSpecifiersStructUnionEnum();
- break;
- }
-
- //
- // Rule 134: declaration_specifiers ::= <openscope-ast> typdef_name_declaration_specifiers
- //
- case 134: {
- action.consumeDeclarationSpecifiersTypedefName();
- break;
- }
-
- //
- // Rule 159: init_declarator ::= complete_declarator = initializer
- //
- case 159: {
- action.consumeDeclaratorWithInitializer(true);
- break;
- }
-
- //
- // Rule 161: storage_class_specifier ::= storage_class_specifier_token
- //
- case 161: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 167: simple_type_specifier ::= simple_type_specifier_token
- //
- case 167: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 180: type_name_specifier ::= identifier_token
- //
- case 180: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 181: struct_or_union_specifier ::= struct_or_union struct_or_union_specifier_hook { <openscope-ast> struct_declaration_list_opt }
- //
- case 181: {
- action.consumeTypeSpecifierComposite(false);
- break;
- }
-
- //
- // Rule 182: struct_or_union_specifier ::= struct_or_union struct_or_union_specifier_hook identifier_token struct_or_union_specifier_suffix_hook { <openscope-ast> struct_declaration_list_opt }
- //
- case 182: {
- action.consumeTypeSpecifierComposite(true);
- break;
- }
-
- //
- // Rule 187: elaborated_specifier ::= struct elaborated_specifier_hook identifier_token
- //
- case 187: {
- action.consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_struct);
- break;
- }
-
- //
- // Rule 188: elaborated_specifier ::= union elaborated_specifier_hook identifier_token
- //
- case 188: {
- action.consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_union);
- break;
- }
-
- //
- // Rule 189: elaborated_specifier ::= enum elaborated_specifier_hook identifier_token
- //
- case 189: {
- action.consumeTypeSpecifierElaborated(IASTElaboratedTypeSpecifier.k_enum);
- break;
- }
-
- //
- // Rule 195: struct_declaration ::= specifier_qualifier_list <openscope-ast> struct_declarator_list ;
- //
- case 195: {
- action.consumeStructDeclaration(true);
- break;
- }
-
- //
- // Rule 196: struct_declaration ::= specifier_qualifier_list ;
- //
- case 196: {
- action.consumeStructDeclaration(false);
- break;
- }
-
- //
- // Rule 197: struct_declaration ::= ERROR_TOKEN
- //
- case 197: {
- action.consumeDeclarationProblem();
- break;
- }
-
- //
- // Rule 203: struct_declarator ::= : constant_expression
- //
- case 203: {
- action.consumeBitField(false);
- break;
- }
-
- //
- // Rule 204: struct_declarator ::= declarator : constant_expression
- //
- case 204: {
- action.consumeBitField(true);
- break;
- }
-
- //
- // Rule 205: enum_specifier ::= enum enum_specifier_hook { <openscope-ast> enumerator_list_opt comma_opt }
- //
- case 205: {
- action.consumeTypeSpecifierEnumeration(false);
- break;
- }
-
- //
- // Rule 206: enum_specifier ::= enum enum_specifier_hook identifier_token { <openscope-ast> enumerator_list_opt comma_opt }
- //
- case 206: {
- action.consumeTypeSpecifierEnumeration(true);
- break;
- }
-
- //
- // Rule 212: enumerator ::= identifier_token
- //
- case 212: {
- action.consumeEnumerator(false);
- break;
- }
-
- //
- // Rule 213: enumerator ::= identifier_token = constant_expression
- //
- case 213: {
- action.consumeEnumerator(true);
- break;
- }
-
- //
- // Rule 214: type_qualifier ::= type_qualifier_token
- //
- case 214: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 218: function_specifier ::= inline
- //
- case 218: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 220: declarator ::= <openscope-ast> pointer_seq direct_declarator
- //
- case 220: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 225: basic_direct_declarator ::= declarator_id_name
- //
- case 225: {
- action.consumeDirectDeclaratorIdentifier();
- break;
- }
-
- //
- // Rule 226: basic_direct_declarator ::= ( declarator )
- //
- case 226: {
- action.consumeDirectDeclaratorBracketed();
- break;
- }
-
- //
- // Rule 227: declarator_id_name ::= identifier
- //
- case 227: {
- action.consumeIdentifierName();
- break;
- }
-
- //
- // Rule 228: array_direct_declarator ::= basic_direct_declarator array_modifier
- //
- case 228: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 229: array_direct_declarator ::= array_direct_declarator array_modifier
- //
- case 229: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 231: function_direct_declarator ::= basic_direct_declarator ( <openscope-ast> parameter_type_list )
- //
- case 231: {
- action.consumeDirectDeclaratorFunctionDeclarator(true, true);
- break;
- }
-
- //
- // Rule 232: function_direct_declarator ::= basic_direct_declarator ( )
- //
- case 232: {
- action.consumeDirectDeclaratorFunctionDeclarator(true, false);
- break;
- }
-
- //
- // Rule 234: function_declarator ::= <openscope-ast> pointer_seq function_direct_declarator
- //
- case 234: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 235: knr_direct_declarator ::= basic_direct_declarator ( <openscope-ast> identifier_list )
- //
- case 235: {
- action.consumeDirectDeclaratorFunctionDeclaratorKnR();
- break;
- }
-
- //
- // Rule 237: knr_function_declarator ::= <openscope-ast> pointer_seq knr_direct_declarator
- //
- case 237: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 238: identifier_list ::= identifier
- //
- case 238: {
- action.consumeIdentifierKnR();
- break;
- }
-
- //
- // Rule 239: identifier_list ::= identifier_list , identifier
- //
- case 239: {
- action.consumeIdentifierKnR();
- break;
- }
-
- //
- // Rule 240: array_modifier ::= [ ]
- //
- case 240: {
- action.consumeDirectDeclaratorArrayModifier(false);
- break;
- }
-
- //
- // Rule 241: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers ]
- //
- case 241: {
- action.consumeDirectDeclaratorModifiedArrayModifier(false, false, true, false);
- break;
- }
-
- //
- // Rule 242: array_modifier ::= [ assignment_expression ]
- //
- case 242: {
- action.consumeDirectDeclaratorArrayModifier(true);
- break;
- }
-
- //
- // Rule 243: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers assignment_expression ]
- //
- case 243: {
- action.consumeDirectDeclaratorModifiedArrayModifier(false, false, true, true);
- break;
- }
-
- //
- // Rule 244: array_modifier ::= [ static assignment_expression ]
- //
- case 244: {
- action.consumeDirectDeclaratorModifiedArrayModifier(true, false, false, true);
- break;
- }
-
- //
- // Rule 245: array_modifier ::= [ static <openscope-ast> array_modifier_type_qualifiers assignment_expression ]
- //
- case 245: {
- action.consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true);
- break;
- }
-
- //
- // Rule 246: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers static assignment_expression ]
- //
- case 246: {
- action.consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true);
- break;
- }
-
- //
- // Rule 247: array_modifier ::= [ * ]
- //
- case 247: {
- action.consumeDirectDeclaratorModifiedArrayModifier(false, true, false, false);
- break;
- }
-
- //
- // Rule 248: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers * ]
- //
- case 248: {
- action.consumeDirectDeclaratorModifiedArrayModifier(false, true, true, false);
- break;
- }
-
- //
- // Rule 250: pointer_seq ::= pointer_hook * pointer_hook
- //
- case 250: {
- action.consumePointer();
- break;
- }
-
- //
- // Rule 251: pointer_seq ::= pointer_seq pointer_hook * pointer_hook
- //
- case 251: {
- action.consumePointer();
- break;
- }
-
- //
- // Rule 252: pointer_seq ::= pointer_hook * pointer_hook <openscope-ast> type_qualifier_list
- //
- case 252: {
- action.consumePointerTypeQualifierList();
- break;
- }
-
- //
- // Rule 253: pointer_seq ::= pointer_seq pointer_hook * pointer_hook <openscope-ast> type_qualifier_list
- //
- case 253: {
- action.consumePointerTypeQualifierList();
- break;
- }
-
- //
- // Rule 257: parameter_type_list ::= parameter_list
- //
- case 257: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 258: parameter_type_list ::= parameter_list , ...
- //
- case 258: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 259: parameter_type_list ::= ...
- //
- case 259: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 262: parameter_declaration ::= declaration_specifiers complete_parameter_declarator
- //
- case 262: {
- action.consumeParameterDeclaration();
- break;
- }
-
- //
- // Rule 263: parameter_declaration ::= declaration_specifiers
- //
- case 263: {
- action.consumeParameterDeclarationWithoutDeclarator();
- break;
- }
-
- //
- // Rule 266: type_id ::= specifier_qualifier_list
- //
- case 266: {
- action.consumeTypeId(false);
- break;
- }
-
- //
- // Rule 267: type_id ::= specifier_qualifier_list abstract_declarator
- //
- case 267: {
- action.consumeTypeId(true);
- break;
- }
-
- //
- // Rule 269: abstract_declarator ::= <openscope-ast> pointer_seq
- //
- case 269: {
- action.consumeDeclaratorWithPointer(false);
- break;
- }
-
- //
- // Rule 270: abstract_declarator ::= <openscope-ast> pointer_seq direct_abstract_declarator
- //
- case 270: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 274: basic_direct_abstract_declarator ::= ( abstract_declarator )
- //
- case 274: {
- action.consumeDirectDeclaratorBracketed();
- break;
- }
-
- //
- // Rule 275: array_direct_abstract_declarator ::= array_modifier
- //
- case 275: {
- action.consumeDirectDeclaratorArrayDeclarator(false);
- break;
- }
-
- //
- // Rule 276: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier
- //
- case 276: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 277: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier
- //
- case 277: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 278: function_direct_abstract_declarator ::= ( )
- //
- case 278: {
- action.consumeDirectDeclaratorFunctionDeclarator(false, false);
- break;
- }
-
- //
- // Rule 279: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( )
- //
- case 279: {
- action.consumeDirectDeclaratorFunctionDeclarator(true, false);
- break;
- }
-
- //
- // Rule 280: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_type_list )
- //
- case 280: {
- action.consumeDirectDeclaratorFunctionDeclarator(false, true);
- break;
- }
-
- //
- // Rule 281: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( <openscope-ast> parameter_type_list )
- //
- case 281: {
- action.consumeDirectDeclaratorFunctionDeclarator(true, true);
- break;
- }
-
- //
- // Rule 282: initializer ::= assignment_expression
- //
- case 282: {
- action.consumeInitializer();
- break;
- }
-
- //
- // Rule 283: initializer ::= initializer_list
- //
- case 283: {
- action.consumeInitializer();
- break;
- }
-
- //
- // Rule 284: initializer_list ::= start_initializer_list { <openscope-ast> initializer_seq comma_opt } end_initializer_list
- //
- case 284: {
- action.consumeInitializerList();
- break;
- }
-
- //
- // Rule 285: initializer_list ::= { <openscope-ast> }
- //
- case 285: {
- action.consumeInitializerList();
- break;
- }
-
- //
- // Rule 286: start_initializer_list ::= $Empty
- //
- case 286: {
- action.initializerListStart();
- break;
- }
-
- //
- // Rule 287: end_initializer_list ::= $Empty
- //
- case 287: {
- action.initializerListEnd();
- break;
- }
-
- //
- // Rule 292: designated_initializer ::= <openscope-ast> designation = initializer
- //
- case 292: {
- action.consumeInitializerDesignated();
- break;
- }
-
- //
- // Rule 296: designator_base ::= [ constant_expression ]
- //
- case 296: {
- action.consumeDesignatorArray();
- break;
- }
-
- //
- // Rule 297: designator_base ::= . identifier_token
- //
- case 297: {
- action.consumeDesignatorField();
- break;
- }
-
- //
- // Rule 298: designator ::= [ constant_expression ]
- //
- case 298: {
- action.consumeDesignatorArray();
- break;
- }
-
- //
- // Rule 299: designator ::= . identifier_token
- //
- case 299: {
- action.consumeDesignatorField();
- break;
- }
-
- //
- // Rule 300: translation_unit ::= external_declaration_list
- //
- case 300: {
- action.consumeTranslationUnit();
- break;
- }
-
- //
- // Rule 301: translation_unit ::= $Empty
- //
- case 301: {
- action.consumeTranslationUnit();
- break;
- }
-
- //
- // Rule 306: external_declaration ::= ;
- //
- case 306: {
- action.consumeDeclarationEmpty();
- break;
- }
-
- //
- // Rule 307: external_declaration ::= ERROR_TOKEN
- //
- case 307: {
- action.consumeDeclarationProblem();
- break;
- }
-
- //
- // Rule 311: function_definition ::= <openscope-ast> function_declarator function_body
- //
- case 311: {
- action.consumeFunctionDefinition(false);
- break;
- }
-
- //
- // Rule 312: function_definition ::= declaration_specifiers <openscope-ast> knr_function_declarator <openscope-ast> declaration_list compound_statement
- //
- case 312: {
- action.consumeFunctionDefinitionKnR();
- break;
- }
-
- //
- // Rule 313: normal_function_definition ::= declaration_specifiers <openscope-ast> function_declarator function_body
- //
- case 313: {
- action.consumeFunctionDefinition(true);
- break;
- }
-
- //
- // Rule 314: function_body ::= { }
- //
- case 314: {
- action.consumeStatementCompoundStatement(false);
- break;
- }
-
- //
- // Rule 315: function_body ::= { <openscope-ast> block_item_list }
- //
- case 315: {
- action.consumeStatementCompoundStatement(true);
- break;
- }
-
- //
- // Rule 317: expression_parser_start ::= ERROR_TOKEN
- //
- case 317: {
- action.consumeEmpty();
- break;
- }
-
- default:
- break;
- }
- return;
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99ExpressionParserprs.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99ExpressionParserprs.java
deleted file mode 100644
index 4daf3f87b9c..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99ExpressionParserprs.java
+++ /dev/null
@@ -1,706 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2015 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.dom.lrparser.c99;
-
-public class C99ExpressionParserprs implements lpg.lpgjavaruntime.ParseTable, C99ExpressionParsersym {
-
- public interface IsKeyword {
- public final static byte isKeyword[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0 };
- }
-
- public final static byte isKeyword[] = IsKeyword.isKeyword;
-
- public final boolean isKeyword(int index) {
- return isKeyword[index] != 0;
- }
-
- public interface BaseCheck {
- public final static short baseCheck[] = { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 4,
- 4, 3, 3, 2, 2, 4, 1, 0, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 1, 4, 1, 3, 3, 3, 1, 3, 3, 1, 3, 3, 1, 3, 3,
- 3, 3, 1, 3, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 5, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 2, 1, 0, 1,
- 3, 1, 1, 1, 1, 1, 1, 1, 1, 3, 4, 3, 2, 4, 1, 2, 1, 1, 1, 2, 5, 7, 5, 1, 0, 7, 2, 5, 9, 8, 3, 2, 2, 2, 3,
- 2, 4, 2, 2, 2, 2, 2, 1, 1, 1, 1, 2, 1, 2, 2, 2, 1, 2, 2, 1, 2, 2, 1, 2, 2, 1, 2, 2, 1, 3, 1, 3, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 8, 0, 0, 1, 1, 3, 3, 3, 0, 1, 0, 1, 2, 4, 2, 1,
- 1, 1, 3, 1, 1, 2, 3, 7, 8, 0, 1, 0, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 3, 1, 2, 2, 1, 5, 3,
- 1, 3, 5, 1, 3, 1, 3, 2, 4, 3, 5, 4, 6, 6, 3, 5, 1, 3, 4, 5, 6, 0, 1, 2, 1, 3, 1, 1, 3, 2, 1, 1, 1, 1, 2,
- 1, 2, 3, 1, 1, 1, 3, 1, 2, 2, 2, 3, 4, 5, 1, 1, 7, 3, 0, 0, 1, 1, 3, 3, 4, 1, 1, 2, 3, 2, 3, 2, 1, 0, 1,
- 2, 1, 1, 1, 1, 1, 2, 1, 3, 6, 4, 2, 4, 1, 1, -37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -137, 0, 0, -4, -159, -118, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -14, 0, -30, 0, -31, 0, 0, 0, 0, 0, -16, 0, -80, -119, 0, -120, 0, 0, 0, 0, 0, 0, 0, 0,
- -141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -105, -124, 0, 0, -191, 0, -17, -131, -130, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 0, -122, 0, 0,
- 0, 0, -177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -179, 0, -194, 0, -18, 0, -19, 0, -20, -21, -22, -192, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -134, 0, -38, 0, 0, 0, 0, 0, 0, 0, 0, 0, -39, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -23, -109, -24, 0, 0, 0, 0, 0, -71, -55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -25, 0, -107, -26, -88, -89, 0, 0, 0, 0, -90, 0, -91, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -34, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -35, 0, 0, 0, 0, 0, 0, 0, 0, 0, -59,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -123, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -132, 0, 0, 0, 0, 0, 0, 0, 0, 0, -144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -153, 0, 0, 0, 0, 0, 0, 0, 0, 0, -180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -92, 0, 0, 0, 0, 0, 0, 0, 0, -6, 0, 0, 0,
- 0, 0, 0, 0, -93, 0, -7, 0, 0, 0, 0, 0, 0, 0, -195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -94, 0, 0, 0, 0, 0, 0, 0, 0, -8, 0, 0, 0, 0, 0, 0, 0, -200, 0,
- -9, 0, 0, 0, 0, 0, 0, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -133, -47, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, -95, -73, 0, -148, -78, -125,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -96, 0, 0, 0, 0, 0, -112, 0, 0, 0, -77, 0, 0, 0, 0, -149, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -117, -166, 0, -97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -157, 0, 0, -158, -98, 0, 0,
- -82, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -106, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -183,
- 0, 0, 0, 0, -87, 0, -53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, 0, 0, 0, 0, 0, -129, 0, 0, 0, 0, -1, -138,
- 0, 0, 0, 0, 0, 0, 0, -99, -186, 0, 0, -181, -100, 0, 0, 0, 0, 0, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -196, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, 0, 0, -127, -140, 0, 0, 0, -146,
- 0, 0, 0, -101, -102, -103, 0, 0, -43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 0, -108, 0, 0, 0, 0, 0, 0,
- 0, 0, -10, 0, 0, 0, 0, 0, 0, 0, -110, -83, 0, -44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -45, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, -46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, -171, -75, -11, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -12, 0, 0, 0, 0, 0, 0, 0, 0, 0, -126, -135, 0, 0, 0, -143, -156, -160, -142,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, 0, -150, 0, 0, 0, 0, 0, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, -147, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -36, -113, -139, 0, 0, 0, 0, 0, 0, 0, 0, 0, -169, 0, -40, 0, 0, 0, 0, 0, 0, 0,
- -151, 0, 0, -154, 0, -41, 0, 0, 0, 0, 0, 0, 0, -42, 0, 0, 0, 0, 0, 0, 0, -116, 0, 0, 0, 0, -162, 0,
- -165, -168, 0, -164, 0, -32, -173, 0, 0, -187, -174, 0, 0, -190, 0, -15, 0, -163, 0, -176, 0, -175, 0,
- 0, 0, 0, 0, 0, -13, 0, 0, 0, 0, 0, 0, -28, 0, 0, -29, -178, 0, 0, -128, -155, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -202, 0, 0, 0, 0, 0, 0, 0, -79, -207, 0, 0, 0, 0, 0, 0, 0, 0, -172, 0, -81, 0, -85, 0, -84, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -86, -188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197,
- -184, -185, 0, 0, 0, 0, -136, -33, -54, 0, 0, 0, 0, -152, 0, 0, -204, 0, 0, 0, 0, 0, -199, -161, 0, 0,
- 0, 0, -182, 0, -205, 0, -193, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0 };
- }
-
- public final static short baseCheck[] = BaseCheck.baseCheck;
-
- @Override
- public final int baseCheck(int index) {
- return baseCheck[index];
- }
-
- public final static short rhs[] = baseCheck;
-
- @Override
- public final int rhs(int index) {
- return rhs[index];
- }
-
- public interface BaseAction {
- public final static char baseAction[] = { 87, 11, 102, 24, 24, 21, 21, 40, 40, 70, 70, 1, 1, 2, 2, 2, 2, 3, 3,
- 3, 4, 5, 5, 5, 5, 5, 5, 5, 5, 60, 60, 71, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9,
- 10, 10, 10, 12, 12, 12, 12, 12, 13, 13, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 20,
- 20, 20, 20, 20, 20, 20, 20, 20, 20, 103, 41, 32, 88, 88, 72, 72, 49, 104, 104, 104, 104, 104, 104, 104,
- 105, 105, 105, 106, 106, 111, 111, 112, 112, 107, 107, 108, 108, 108, 114, 114, 109, 109, 109, 109, 109,
- 110, 110, 110, 110, 110, 113, 113, 25, 25, 25, 25, 25, 28, 28, 28, 78, 78, 73, 73, 73, 73, 74, 74, 74,
- 75, 75, 75, 76, 76, 76, 77, 77, 77, 115, 115, 116, 116, 117, 29, 31, 31, 31, 31, 31, 53, 54, 54, 54, 54,
- 54, 54, 54, 54, 54, 54, 54, 54, 64, 61, 61, 89, 90, 66, 66, 62, 62, 62, 67, 79, 79, 80, 80, 68, 68, 68,
- 43, 91, 91, 81, 82, 82, 82, 63, 63, 92, 83, 83, 84, 84, 69, 69, 22, 23, 23, 23, 30, 50, 50, 33, 33, 33,
- 33, 36, 36, 38, 34, 34, 35, 39, 39, 118, 118, 37, 119, 119, 93, 93, 26, 26, 26, 26, 26, 26, 26, 26, 26,
- 85, 51, 51, 51, 51, 27, 56, 56, 55, 55, 55, 57, 57, 52, 52, 94, 94, 59, 59, 58, 58, 58, 44, 44, 44, 45,
- 46, 46, 46, 47, 47, 47, 47, 65, 65, 42, 42, 48, 96, 95, 95, 95, 95, 86, 97, 98, 98, 99, 99, 100, 100,
- 120, 120, 121, 121, 122, 122, 122, 122, 124, 124, 123, 123, 123, 125, 126, 126, 87, 87, 1, 627, 17, 21,
- 18, 373, 626, 45, 449, 383, 542, 31, 540, 545, 544, 592, 546, 623, 594, 75, 92, 124, 136, 214, 670, 629,
- 596, 339, 138, 135, 137, 161, 275, 20, 17, 21, 18, 373, 626, 45, 449, 383, 542, 1502, 540, 545, 544,
- 592, 546, 623, 594, 75, 1146, 140, 167, 579, 240, 201, 31, 201, 31, 144, 147, 150, 153, 57, 385, 118,
- 201, 188, 201, 187, 342, 1129, 1612, 1624, 1628, 1638, 1226, 434, 20, 17, 21, 18, 373, 626, 45, 449,
- 383, 542, 343, 540, 545, 544, 592, 546, 623, 594, 75, 282, 482, 20, 17, 21, 18, 373, 626, 45, 449, 383,
- 542, 1526, 540, 545, 544, 592, 546, 623, 594, 75, 92, 283, 1590, 1263, 294, 97, 518, 1366, 25, 158, 24,
- 157, 695, 299, 20, 17, 21, 18, 373, 626, 45, 449, 383, 542, 288, 540, 545, 544, 592, 546, 623, 594, 75,
- 1343, 256, 214, 344, 241, 506, 20, 17, 21, 18, 373, 41, 289, 285, 28, 662, 1503, 201, 189, 342, 1366,
- 1187, 332, 20, 17, 21, 18, 373, 626, 45, 449, 383, 542, 343, 540, 545, 544, 592, 546, 623, 594, 75, 282,
- 554, 20, 17, 21, 18, 373, 626, 45, 449, 383, 542, 1593, 540, 545, 544, 592, 546, 623, 594, 75, 1245,
- 283, 201, 297, 201, 299, 6, 1366, 30, 284, 589, 200, 191, 458, 20, 17, 21, 18, 373, 626, 45, 449, 383,
- 542, 290, 540, 545, 544, 592, 546, 623, 594, 75, 282, 189, 180, 482, 20, 17, 21, 18, 373, 43, 45, 628,
- 291, 482, 20, 17, 21, 18, 373, 43, 45, 633, 283, 136, 214, 344, 242, 243, 1366, 138, 135, 137, 161, 104,
- 482, 20, 17, 21, 18, 373, 43, 45, 449, 383, 542, 292, 540, 545, 544, 592, 546, 1349, 275, 1453, 140,
- 167, 171, 22, 14, 547, 578, 194, 144, 147, 150, 153, 199, 385, 416, 444, 270, 1150, 1121, 273, 1129,
- 1612, 1624, 1628, 1638, 1226, 482, 20, 17, 21, 18, 373, 626, 45, 449, 383, 542, 489, 540, 545, 544, 592,
- 546, 623, 594, 75, 93, 482, 20, 17, 21, 18, 373, 626, 45, 449, 383, 542, 1408, 540, 545, 544, 592, 546,
- 623, 594, 75, 86, 482, 20, 17, 21, 18, 373, 626, 45, 449, 383, 542, 489, 540, 545, 544, 592, 546, 623,
- 594, 75, 85, 482, 20, 17, 21, 18, 373, 626, 45, 449, 383, 542, 19, 540, 545, 544, 592, 546, 623, 594,
- 75, 84, 482, 20, 17, 21, 18, 373, 626, 45, 449, 383, 542, 489, 540, 545, 544, 592, 546, 623, 594, 75,
- 83, 482, 20, 17, 21, 18, 373, 626, 45, 449, 383, 542, 443, 540, 545, 544, 592, 546, 623, 594, 75, 82,
- 482, 20, 17, 21, 18, 373, 626, 45, 449, 383, 542, 489, 540, 545, 544, 592, 546, 623, 594, 75, 81, 482,
- 20, 17, 21, 18, 373, 626, 45, 449, 383, 542, 1204, 540, 545, 544, 592, 546, 623, 594, 75, 80, 482, 20,
- 17, 21, 18, 373, 626, 45, 449, 383, 542, 489, 540, 545, 544, 592, 546, 623, 594, 75, 79, 482, 20, 17,
- 21, 18, 373, 626, 45, 449, 383, 542, 23, 540, 545, 544, 592, 546, 623, 594, 75, 78, 482, 20, 17, 21, 18,
- 373, 626, 45, 449, 383, 542, 489, 540, 545, 544, 592, 546, 623, 594, 75, 77, 482, 20, 17, 21, 18, 373,
- 626, 45, 449, 383, 542, 274, 540, 545, 544, 592, 546, 623, 594, 75, 76, 482, 20, 17, 21, 18, 373, 626,
- 45, 449, 383, 542, 489, 540, 545, 544, 592, 546, 623, 594, 75, 74, 482, 20, 17, 21, 18, 373, 626, 45,
- 449, 383, 542, 280, 540, 545, 544, 592, 546, 623, 594, 75, 1549, 482, 20, 17, 21, 18, 373, 626, 45, 449,
- 383, 542, 489, 540, 545, 544, 592, 546, 623, 594, 75, 1568, 482, 20, 17, 21, 18, 373, 43, 45, 449, 383,
- 542, 281, 540, 545, 544, 592, 546, 623, 594, 94, 482, 20, 17, 21, 18, 373, 43, 45, 449, 383, 542, 466,
- 540, 545, 544, 592, 546, 623, 594, 94, 482, 20, 17, 21, 18, 373, 43, 40, 488, 1696, 482, 20, 17, 21, 18,
- 373, 43, 39, 482, 20, 17, 21, 18, 373, 43, 45, 449, 383, 542, 213, 540, 545, 544, 592, 546, 623, 594,
- 94, 482, 20, 17, 21, 18, 373, 43, 45, 449, 383, 542, 490, 540, 545, 544, 592, 546, 623, 594, 94, 482,
- 20, 17, 21, 18, 373, 43, 38, 446, 1699, 482, 20, 17, 21, 18, 373, 43, 37, 482, 20, 17, 21, 18, 373, 43,
- 45, 449, 383, 542, 203, 540, 545, 544, 592, 546, 623, 594, 94, 113, 482, 20, 17, 21, 18, 373, 43, 45,
- 449, 1125, 1523, 482, 20, 17, 21, 18, 373, 43, 45, 449, 383, 542, 144, 540, 1171, 275, 241, 44, 204,
- 207, 232, 14, 219, 1155, 222, 1474, 224, 225, 230, 195, 1551, 601, 397, 268, 1150, 1121, 273, 104, 276,
- 264, 278, 327, 136, 214, 1383, 275, 499, 265, 143, 135, 137, 161, 219, 1155, 222, 1474, 224, 225, 230,
- 679, 679, 242, 245, 268, 1150, 1121, 273, 277, 593, 1554, 1670, 1664, 229, 142, 167, 559, 1561, 868,
- 712, 13, 279, 232, 387, 262, 482, 20, 17, 21, 18, 373, 43, 45, 449, 383, 542, 205, 540, 545, 544, 592,
- 1364, 482, 20, 17, 21, 18, 373, 43, 45, 449, 383, 542, 710, 540, 545, 544, 1264, 189, 180, 482, 20, 17,
- 21, 18, 373, 43, 45, 449, 383, 542, 151, 540, 545, 1347, 256, 214, 104, 28, 1570, 136, 214, 382, 14,
- 1366, 210, 139, 135, 137, 161, 386, 50, 281, 418, 1594, 630, 637, 275, 1453, 1557, 1572, 244, 421, 1680,
- 220, 1155, 222, 1474, 224, 225, 230, 141, 167, 1260, 88, 270, 1150, 1121, 273, 145, 148, 151, 154, 316,
- 385, 219, 1155, 222, 1474, 224, 225, 230, 482, 20, 17, 21, 18, 373, 43, 45, 449, 1140, 1604, 482, 20,
- 17, 21, 18, 373, 43, 45, 449, 383, 542, 719, 1188, 482, 20, 17, 21, 18, 373, 43, 45, 449, 383, 542, 281,
- 1259, 329, 44, 14, 196, 199, 201, 104, 256, 214, 1680, 697, 305, 324, 1184, 1068, 482, 20, 17, 21, 18,
- 373, 43, 45, 449, 383, 635, 295, 671, 1458, 615, 243, 219, 1155, 222, 1474, 224, 225, 230, 482, 20, 17,
- 21, 18, 373, 43, 36, 676, 414, 1604, 482, 20, 17, 21, 18, 373, 43, 45, 449, 383, 993, 482, 20, 17, 21,
- 18, 373, 43, 45, 449, 383, 1010, 409, 20, 17, 21, 18, 373, 43, 44, 200, 201, 482, 20, 17, 21, 18, 373,
- 43, 45, 449, 383, 1051, 612, 95, 326, 482, 20, 17, 21, 18, 373, 43, 35, 1680, 568, 1544, 530, 20, 17,
- 21, 18, 373, 34, 28, 388, 278, 733, 711, 198, 1366, 275, 698, 14, 707, 44, 219, 1155, 222, 1474, 224,
- 225, 230, 1687, 1622, 1692, 728, 1270, 720, 268, 1150, 1121, 273, 1554, 358, 20, 17, 21, 18, 373, 43,
- 36, 1460, 868, 358, 20, 17, 21, 18, 373, 43, 36, 194, 1453, 228, 160, 52, 664, 247, 220, 1155, 222,
- 1474, 224, 225, 230, 1126, 518, 248, 482, 20, 17, 21, 18, 373, 43, 48, 44, 255, 214, 721, 275, 482, 20,
- 17, 21, 18, 373, 43, 47, 482, 20, 17, 21, 18, 373, 43, 46, 567, 268, 1150, 1121, 273, 104, 1383, 567,
- 14, 181, 489, 568, 465, 723, 450, 267, 723, 696, 568, 1665, 201, 1561, 14, 418, 104, 1098, 518, 1383,
- 724, 245, 1239, 226, 1098, 318, 1383, 530, 20, 17, 21, 18, 373, 33, 14, 451, 90, 14, 738, 198, 246, 52,
- 48, 593, 260, 318, 88, 910, 318, 1454, 1239, 260, 742, 568, 910, 700, 1454, 1501, 447, 198, 627, 287,
- 198, 255, 214, 1639, 88, 198, 1694, 88, 559, 1561, 632, 658, 439, 700, 661, 1501, 700, 1769, 1501, 211,
- 136, 214, 1769, 1270, 666, 518, 146, 135, 137, 161, 826, 742, 136, 214, 784, 450, 136, 214, 149, 135,
- 137, 161, 152, 135, 137, 161, 136, 214, 193, 489, 587, 142, 155, 135, 137, 161, 116, 14, 14, 1513, 1430,
- 568, 568, 357, 920, 205, 44, 568, 418, 418, 231, 1769, 518, 52, 568, 1098, 198, 210, 52, 488, 518, 1098,
- 104, 1769, 1769, 104, 1769, 1769, 1098, 88, 88, 1560, 1572, 1383, 1270, 255, 214, 365, 600, 1348, 255,
- 214, 260, 1769, 486, 1663, 296, 1454, 260, 298, 1769, 952, 182, 1454, 1769, 261, 1769, 1472, 235, 193,
- 206, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1221, 1686, 1430, 1769, 1769, 1322, 1769, 1769,
- 1769, 1769, 1769, 1769, 1769, 1769, 1711, 1769, 0, 20, 180, 0, 1, 1996, 0, 1, 2007, 0 };
- }
-
- public final static char baseAction[] = BaseAction.baseAction;
-
- @Override
- public final int baseAction(int index) {
- return baseAction[index];
- }
-
- public final static char lhs[] = baseAction;
-
- @Override
- public final int lhs(int index) {
- return lhs[index];
- }
-
- public interface TermCheck {
- public final static byte termCheck[] = { 0, 0, 1, 2, 3, 4, 0, 6, 7, 8, 9, 10, 11, 0, 0, 14, 15, 16, 17, 18, 19,
- 20, 21, 22, 23, 24, 25, 26, 27, 28, 0, 0, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 0, 44, 45, 46,
- 0, 1, 0, 3, 0, 5, 6, 7, 8, 0, 6, 7, 8, 55, 56, 57, 58, 17, 9, 10, 55, 56, 57, 58, 24, 25, 26, 27, 28,
- 47, 48, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 0, 1, 0, 3, 51, 5, 6, 7, 8, 0,
- 55, 56, 57, 58, 5, 13, 80, 17, 0, 1, 2, 0, 4, 0, 24, 25, 26, 27, 28, 0, 12, 31, 32, 33, 34, 35, 36, 37,
- 38, 39, 40, 41, 42, 43, 44, 45, 46, 0, 1, 0, 3, 51, 5, 6, 7, 8, 0, 1, 2, 50, 4, 12, 0, 0, 17, 0, 4, 2,
- 12, 4, 49, 24, 25, 26, 27, 28, 0, 12, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 0,
- 1, 0, 3, 51, 0, 6, 7, 8, 4, 0, 0, 0, 1, 4, 3, 0, 17, 0, 1, 2, 53, 54, 5, 24, 25, 26, 27, 28, 13, 12, 31,
- 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 0, 44, 45, 46, 65, 30, 6, 7, 8, 0, 0, 0, 2, 0, 4, 53, 54,
- 17, 9, 10, 53, 54, 12, 64, 24, 25, 26, 27, 28, 61, 62, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
- 0, 1, 2, 3, 4, 5, 0, 1, 2, 9, 10, 11, 0, 1, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 1, 2, 3, 4, 5, 0,
- 61, 62, 9, 10, 11, 68, 69, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 0, 50, 0, 0, 2, 2, 0, 5, 0, 1, 2,
- 3, 4, 5, 12, 12, 59, 9, 10, 11, 0, 13, 14, 15, 16, 50, 18, 19, 20, 21, 22, 23, 30, 0, 0, 1, 2, 3, 4, 5,
- 59, 0, 0, 9, 10, 11, 5, 0, 14, 15, 16, 43, 18, 19, 20, 21, 22, 23, 0, 1, 2, 3, 4, 0, 1, 65, 3, 9, 10,
- 11, 29, 30, 14, 15, 16, 0, 18, 19, 20, 21, 22, 23, 49, 63, 50, 0, 1, 2, 3, 4, 0, 1, 0, 3, 9, 10, 11, 0,
- 13, 14, 15, 16, 5, 18, 19, 20, 21, 22, 23, 51, 0, 1, 2, 3, 4, 0, 1, 0, 3, 9, 10, 11, 0, 13, 14, 15, 16,
- 5, 18, 19, 20, 21, 22, 23, 0, 1, 2, 3, 4, 47, 48, 0, 0, 9, 10, 11, 5, 13, 14, 15, 16, 29, 18, 19, 20,
- 21, 22, 23, 0, 1, 2, 3, 4, 66, 0, 0, 0, 9, 10, 11, 5, 30, 14, 15, 16, 0, 18, 19, 20, 21, 22, 23, 0, 1,
- 2, 3, 4, 12, 66, 47, 48, 9, 10, 11, 0, 30, 14, 15, 16, 5, 18, 19, 20, 21, 22, 23, 0, 1, 2, 3, 4, 47, 48,
- 47, 48, 9, 10, 11, 0, 0, 14, 15, 16, 0, 18, 19, 20, 21, 22, 23, 0, 1, 2, 3, 4, 0, 1, 43, 3, 9, 10, 11,
- 0, 0, 14, 15, 16, 4, 18, 19, 20, 21, 22, 23, 0, 0, 2, 2, 4, 5, 6, 7, 8, 0, 1, 0, 12, 12, 0, 14, 15, 17,
- 0, 1, 0, 3, 11, 0, 24, 25, 26, 27, 28, 60, 30, 13, 9, 10, 0, 1, 2, 0, 49, 70, 71, 72, 73, 74, 75, 76,
- 77, 78, 79, 0, 13, 0, 0, 52, 0, 6, 7, 8, 49, 0, 6, 7, 8, 12, 12, 0, 17, 0, 67, 0, 1, 17, 3, 24, 25, 26,
- 27, 28, 24, 25, 26, 27, 28, 0, 0, 1, 0, 3, 0, 6, 7, 8, 0, 0, 6, 7, 8, 13, 0, 13, 17, 0, 4, 52, 52, 17,
- 5, 24, 25, 26, 27, 28, 24, 25, 26, 27, 28, 0, 0, 0, 0, 29, 63, 6, 7, 8, 6, 7, 8, 0, 11, 30, 0, 0, 0, 6,
- 7, 8, 6, 7, 8, 0, 0, 0, 2, 0, 0, 6, 7, 8, 0, 1, 2, 0, 12, 0, 13, 64, 5, 4, 0, 0, 29, 29, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 29, 29, 0, 0, 60, 13, 13, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static byte termCheck[] = TermCheck.termCheck;
-
- @Override
- public final int termCheck(int index) {
- return termCheck[index];
- }
-
- public interface TermAction {
- public final static char termAction[] = { 0, 1769, 1780, 1566, 1781, 1375, 60, 1984, 1985, 1986, 1070, 1060,
- 1432, 62, 1, 1579, 1443, 476, 1933, 1782, 1783, 1784, 1785, 1012, 1002, 1934, 1932, 1987, 1935, 1931,
- 55, 1769, 1938, 1943, 1942, 1940, 1941, 1939, 1944, 1945, 1937, 1946, 1947, 1948, 254, 1626, 1384, 1191,
- 1769, 1, 61, 1, 1769, 192, 1, 1, 1, 52, 1984, 1985, 1986, 1418, 1397, 1386, 1352, 1, 580, 570, 1418,
- 1397, 1386, 1352, 1, 1, 1, 1, 1, 1099, 1300, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 192, 1, 1, 1, 1769, 1,
- 42, 1, 1966, 191, 1, 1, 1, 1769, 1418, 1397, 1386, 1352, 1773, 2817, 1759, 1, 263, 1996, 1128, 1, 1,
- 183, 1, 1, 1, 1, 1, 184, 350, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 191, 1, 1, 1, 1769, 1, 272, 1, 1966,
- 192, 1, 1, 1, 269, 1996, 1128, 1772, 254, 350, 49, 287, 1, 266, 1536, 1431, 350, 1, 2028, 1, 1, 1, 1, 1,
- 71, 350, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 192, 1, 1, 1, 1769, 1780, 69, 1781, 1966, 51, 1984, 1985,
- 1986, 1536, 50, 63, 1769, 1780, 1536, 1781, 1769, 1933, 1, 1763, 1128, 1528, 1515, 1775, 1934, 1932,
- 1987, 1935, 1931, 2817, 350, 1938, 1943, 1942, 1940, 1941, 1939, 1944, 1945, 1937, 1946, 1947, 1948,
- 130, 1626, 1384, 1191, 1193, 1774, 1984, 1985, 1986, 54, 269, 73, 1431, 64, 254, 1528, 1515, 1933, 580,
- 570, 1528, 1515, 350, 1210, 1934, 1932, 1987, 1935, 1931, 1324, 1311, 1938, 1943, 1942, 1940, 1941,
- 1939, 1944, 1945, 1937, 1946, 1947, 1948, 1, 1780, 1566, 1781, 1480, 1773, 1, 1996, 1429, 1070, 1060,
- 1432, 1769, 2008, 1579, 1443, 476, 514, 1782, 1783, 1784, 1785, 1012, 1002, 1769, 1780, 1566, 1781,
- 1490, 1773, 1769, 1324, 1311, 1070, 1060, 1432, 601, 1672, 1579, 1443, 476, 941, 1782, 1783, 1784, 1785,
- 1012, 1002, 1769, 72, 1772, 1, 271, 1431, 1168, 1769, 1775, 1, 1780, 1566, 1781, 1375, 29, 350, 350,
- 1040, 1070, 1060, 1432, 67, 2817, 1579, 1443, 476, 1772, 1782, 1783, 1784, 1785, 1012, 1002, 1774, 1,
- 1769, 1780, 1566, 1781, 1375, 1773, 899, 1769, 1769, 1070, 1060, 1432, 1775, 1769, 1579, 1443, 476, 29,
- 1782, 1783, 1784, 1785, 1012, 1002, 1769, 1, 1, 1, 1, 186, 2830, 1193, 2830, 1, 1, 1, 1613, 1774, 1, 1,
- 1, 1769, 1, 1, 1, 1, 1, 1, 2027, 1228, 1772, 1769, 1780, 1566, 1781, 1375, 185, 2831, 59, 2831, 1070,
- 1060, 1432, 1, 2817, 1579, 1443, 476, 1779, 1782, 1783, 1784, 1785, 1012, 1002, 2086, 1, 1780, 1566,
- 1781, 1375, 207, 2832, 1769, 2832, 1070, 1060, 1432, 1769, 2817, 1579, 1443, 476, 1779, 1782, 1783,
- 1784, 1785, 1012, 1002, 1769, 1780, 1566, 1781, 1375, 1099, 1300, 1, 58, 1070, 1060, 1432, 91, 2817,
- 1579, 1443, 476, 1335, 1782, 1783, 1784, 1785, 1012, 1002, 1769, 1780, 1566, 1781, 1375, 1778, 57, 1769,
- 56, 1070, 1060, 1432, 1775, 91, 1579, 1443, 476, 221, 1782, 1783, 1784, 1785, 1012, 1002, 1769, 1780,
- 1586, 1781, 1375, 350, 1778, 1099, 1300, 1070, 1060, 1432, 1769, 1774, 1579, 1443, 476, 1777, 1782,
- 1783, 1784, 1785, 1012, 1002, 1769, 1780, 1589, 1781, 1375, 1099, 1300, 1099, 1300, 1070, 1060, 1432,
- 1769, 1769, 1579, 1443, 476, 43, 1782, 1783, 1784, 1785, 1012, 1002, 1, 1780, 1566, 1781, 1375, 209,
- 1780, 1776, 1781, 1070, 1060, 1432, 1769, 1, 1579, 1443, 476, 254, 1782, 1783, 1784, 1785, 1012, 1002,
- 20, 32, 1760, 1556, 1760, 1760, 180, 180, 180, 1, 1766, 65, 1760, 1671, 1769, 1795, 1796, 180, 1769,
- 1780, 1769, 1781, 1110, 53, 180, 180, 180, 180, 180, 878, 1760, 1251, 580, 570, 1, 1996, 1429, 1769,
- 2028, 857, 836, 815, 794, 773, 731, 752, 710, 689, 668, 131, 1130, 1769, 293, 377, 132, 1984, 1985,
- 1986, 2028, 68, 1984, 1985, 1986, 962, 1020, 1769, 1933, 1769, 375, 208, 1564, 1933, 1564, 1934, 1932,
- 1987, 1935, 1931, 1934, 1932, 1987, 1935, 1931, 133, 1769, 1780, 1769, 1781, 134, 1984, 1985, 1986, 89,
- 70, 1984, 1985, 1986, 1339, 1769, 1459, 1933, 1, 1338, 536, 538, 1933, 1775, 1934, 1932, 1987, 1935,
- 1931, 1934, 1932, 1987, 1935, 1931, 249, 212, 66, 250, 647, 1228, 1984, 1985, 1986, 1, 1, 1, 251, 1110,
- 1774, 252, 257, 30, 1, 1, 1, 1984, 1985, 1986, 253, 223, 1769, 1169, 30, 208, 1984, 1985, 1986, 254,
- 1996, 1429, 286, 350, 1769, 1552, 1210, 625, 1461, 1769, 1769, 1677, 493, 202, 1769, 190, 190, 190,
- 1769, 1769, 1769, 1769, 1769, 1798, 2733, 1769, 1769, 982, 186, 185, 207, 1769, 1769, 1769, 1769, 1769,
- 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 625, 1769, 1769, 1769, 1769, 1769, 1769, 1769,
- 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 547,
- 1769, 1769, 1078 };
- }
-
- public final static char termAction[] = TermAction.termAction;
-
- @Override
- public final int termAction(int index) {
- return termAction[index];
- }
-
- public interface Asb {
- public final static char asb[] = { 0, 233, 1, 9, 64, 9, 9, 9, 9, 9, 9, 9, 9, 9, 26, 392, 46, 43, 50, 48, 56, 54,
- 58, 57, 60, 59, 32, 9, 392, 392, 328, 328, 368, 9, 199, 199, 227, 392, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
- 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 199, 199, 199, 68, 115, 231, 3, 298, 197, 196,
- 202, 214, 129, 214, 129, 129, 214, 129, 214, 406, 153, 43, 43, 48, 48, 48, 48, 46, 46, 54, 50, 50, 57,
- 56, 337, 59, 58, 71, 131, 278, 131, 227, 231, 133, 68, 429, 7, 199, 339, 301, 129, 328, 328, 129, 328,
- 9, 278, 113, 231, 222, 429, 68, 6, 3, 199, 225, 406, 198, 303, 131, 251, 131, 292, 113, 222, 222, 9, 9,
- 68, 7, 298, 332, 331, 231, 303, 199, 131, 251, 292, 292, 294, 282, 222, 429, 68, 68, 199, 339, 301, 225,
- 251, 278, 285, 251, 292, 294, 387, 294, 278, 111, 390, 328, 9, 281, 429, 222, 303, 251, 287, 294, 278,
- 9, 328, 26, 115, 68, 328, 9, 222, 199, 198, 278, 107, 9, 106, 22, 231, 278, 68, 329, 287, 9, 22 };
- }
-
- public final static char asb[] = Asb.asb;
-
- @Override
- public final int asb(int index) {
- return asb[index];
- }
-
- public interface Asr {
- public final static byte asr[] = { 0, 80, 0, 6, 7, 8, 17, 50, 5, 18, 19, 20, 21, 3, 14, 15, 11, 9, 10, 22, 23,
- 16, 4, 2, 1, 0, 12, 2, 52, 67, 14, 15, 60, 70, 71, 72, 73, 74, 76, 75, 77, 78, 79, 4, 53, 54, 9, 10, 48,
- 47, 55, 56, 57, 58, 61, 62, 11, 63, 64, 65, 43, 66, 68, 69, 59, 30, 80, 29, 50, 5, 0, 11, 4, 9, 10, 53,
- 54, 47, 48, 55, 56, 57, 58, 61, 62, 63, 64, 65, 68, 69, 60, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 50,
- 30, 43, 80, 13, 59, 66, 5, 29, 0, 5, 43, 12, 52, 14, 15, 11, 4, 9, 10, 22, 23, 16, 2, 18, 19, 20, 21, 1,
- 3, 13, 0, 6, 7, 8, 2, 18, 19, 20, 21, 1, 3, 14, 15, 11, 4, 9, 10, 22, 23, 16, 0, 7, 17, 28, 8, 27, 26,
- 25, 6, 24, 52, 67, 14, 15, 11, 9, 10, 53, 54, 47, 48, 55, 56, 57, 58, 61, 62, 63, 64, 65, 68, 69, 60,
- 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 4, 2, 12, 29, 30, 5, 0, 39, 31, 36, 34, 35, 33, 32, 37, 38, 40,
- 41, 42, 59, 66, 28, 25, 17, 24, 27, 26, 6, 7, 8, 29, 1, 5, 30, 2, 12, 4, 0, 16, 18, 19, 20, 21, 1, 3, 2,
- 14, 15, 11, 4, 9, 10, 22, 23, 51, 0, 24, 31, 6, 32, 44, 25, 33, 26, 34, 35, 27, 7, 36, 37, 17, 45, 28,
- 46, 38, 39, 8, 40, 41, 42, 1, 3, 51, 5, 43, 0, 60, 12, 52, 0, 66, 5, 4, 1, 2, 59, 0, 1, 3, 5, 43, 29, 0,
- 4, 2, 12, 30, 5, 24, 31, 6, 32, 44, 25, 33, 26, 34, 35, 27, 7, 36, 37, 17, 45, 28, 46, 38, 39, 8, 40,
- 41, 42, 49, 3, 1, 0, 2, 5, 29, 30, 66, 12, 59, 0, 4, 24, 31, 6, 32, 44, 25, 33, 26, 34, 35, 27, 7, 36,
- 37, 17, 45, 28, 46, 38, 39, 8, 40, 41, 42, 1, 3, 49, 0, 5, 30, 16, 18, 19, 20, 21, 1, 3, 2, 14, 15, 11,
- 4, 9, 10, 22, 23, 0, 5, 29, 43, 60, 0, 16, 18, 19, 20, 21, 2, 14, 15, 11, 4, 9, 10, 22, 23, 1, 3, 44,
- 45, 46, 39, 31, 36, 34, 35, 33, 32, 37, 38, 40, 41, 42, 28, 25, 17, 24, 27, 26, 6, 7, 8, 0 };
- }
-
- public final static byte asr[] = Asr.asr;
-
- @Override
- public final int asr(int index) {
- return asr[index];
- }
-
- public interface Nasb {
- public final static byte nasb[] = { 0, 78, 42, 30, 42, 30, 30, 30, 30, 30, 30, 30, 30, 30, 42, 109, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 42, 30, 109, 109, 17, 17, 106, 110, 60, 60, 95, 1, 30, 30, 30, 30, 30, 30,
- 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 110, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 60, 60,
- 60, 15, 86, 49, 13, 94, 47, 47, 69, 70, 19, 70, 118, 118, 70, 117, 70, 64, 42, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 87, 87, 57, 42, 43, 42, 32, 15, 99, 14, 60, 101, 59, 7, 7, 7, 7,
- 7, 30, 21, 57, 42, 76, 99, 15, 14, 25, 60, 53, 35, 42, 103, 9, 57, 42, 57, 28, 76, 57, 30, 30, 15, 14,
- 52, 47, 47, 49, 103, 60, 42, 113, 57, 7, 62, 11, 57, 99, 15, 15, 60, 101, 59, 72, 57, 21, 83, 90, 7, 62,
- 42, 42, 21, 27, 42, 7, 30, 81, 99, 25, 120, 113, 55, 62, 21, 30, 7, 23, 29, 15, 7, 30, 25, 60, 60, 21,
- 84, 30, 42, 55, 49, 21, 15, 42, 55, 30, 74 };
- }
-
- public final static byte nasb[] = Nasb.nasb;
-
- @Override
- public final int nasb(int index) {
- return nasb[index];
- }
-
- public interface Nasr {
- public final static char nasr[] = { 0, 78, 76, 75, 66, 74, 73, 1, 0, 90, 0, 98, 0, 11, 5, 24, 0, 71, 0, 89, 0,
- 40, 0, 96, 0, 22, 0, 86, 11, 48, 5, 0, 5, 11, 0, 78, 77, 76, 75, 66, 74, 73, 0, 46, 45, 27, 0, 26, 0,
- 27, 51, 0, 21, 46, 45, 36, 34, 11, 0, 11, 21, 0, 60, 0, 66, 61, 62, 63, 64, 53, 28, 0, 46, 45, 36, 34,
- 27, 0, 11, 87, 0, 100, 0, 11, 70, 0, 5, 48, 42, 0, 11, 43, 68, 0, 21, 45, 46, 11, 0, 56, 0, 27, 51, 11,
- 25, 0, 11, 88, 0, 43, 11, 41, 0, 80, 11, 43, 0, 92, 67, 0, 93, 11, 25, 0 };
- }
-
- public final static char nasr[] = Nasr.nasr;
-
- @Override
- public final int nasr(int index) {
- return nasr[index];
- }
-
- public interface TerminalIndex {
- public final static char terminalIndex[] = { 0, 85, 2, 86, 9, 87, 48, 64, 76, 10, 11, 8, 1, 3, 6, 7, 68, 69, 81,
- 82, 83, 84, 12, 13, 44, 55, 60, 63, 72, 42, 90, 47, 52, 56, 61, 62, 66, 67, 74, 75, 78, 79, 80, 91, 54,
- 70, 73, 16, 17, 30, 89, 93, 4, 14, 15, 18, 19, 20, 21, 29, 31, 22, 23, 24, 25, 26, 92, 5, 27, 28, 32,
- 33, 34, 35, 36, 37, 38, 39, 40, 41, 94, 45, 46, 49, 50, 51, 53, 57, 58, 59, 65, 71, 77, 88 };
- }
-
- public final static char terminalIndex[] = TerminalIndex.terminalIndex;
-
- @Override
- public final int terminalIndex(int index) {
- return terminalIndex[index];
- }
-
- public interface NonterminalIndex {
- public final static char nonterminalIndex[] = { 0, 100, 0, 0, 0, 102, 106, 107, 108, 109, 110, 0, 111, 112, 113,
- 114, 115, 116, 117, 0, 118, 97, 128, 0, 96, 121, 149, 0, 127, 0, 0, 0, 0, 145, 147, 0, 148, 0, 0, 0, 98,
- 101, 105, 140, 158, 159, 160, 0, 0, 120, 136, 146, 155, 130, 0, 150, 153, 154, 157, 104, 0, 131, 132,
- 133, 134, 135, 137, 0, 139, 144, 99, 103, 119, 122, 123, 124, 125, 126, 129, 0, 138, 142, 0, 0, 143,
- 152, 162, 95, 0, 0, 0, 141, 0, 151, 156, 161, 0, 163, 164, 0, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static char nonterminalIndex[] = NonterminalIndex.nonterminalIndex;
-
- @Override
- public final int nonterminalIndex(int index) {
- return nonterminalIndex[index];
- }
-
- public interface ScopePrefix {
- public final static char scopePrefix[] = { 82, 113, 92, 35, 41, 121, 12, 136, 21, 51, 69, 28, 47, 103, 158, 165,
- 169, 145, 1, 1, 32, 56, 79, 173, 6, 107, 152, 152, 127, 99, 59, 59, 59 };
- }
-
- public final static char scopePrefix[] = ScopePrefix.scopePrefix;
-
- @Override
- public final int scopePrefix(int index) {
- return scopePrefix[index];
- }
-
- public interface ScopeSuffix {
- public final static char scopeSuffix[] = { 90, 90, 90, 4, 4, 90, 18, 142, 26, 4, 26, 26, 4, 101, 26, 26, 4, 149,
- 4, 4, 26, 4, 26, 26, 9, 110, 155, 162, 130, 101, 66, 61, 74 };
- }
-
- public final static char scopeSuffix[] = ScopeSuffix.scopeSuffix;
-
- @Override
- public final int scopeSuffix(int index) {
- return scopeSuffix[index];
- }
-
- public interface ScopeLhs {
- public final static char scopeLhs[] = { 63, 61, 63, 26, 26, 61, 42, 108, 47, 26, 39, 47, 26, 68, 6, 5, 5, 19,
- 100, 99, 45, 26, 36, 3, 86, 68, 7, 5, 109, 68, 39, 37, 39 };
- }
-
- public final static char scopeLhs[] = ScopeLhs.scopeLhs;
-
- @Override
- public final int scopeLhs(int index) {
- return scopeLhs[index];
- }
-
- public interface ScopeLa {
- public final static byte scopeLa[] = { 43, 43, 43, 50, 50, 43, 43, 86, 30, 50, 30, 30, 50, 66, 30, 30, 50, 59,
- 50, 50, 30, 50, 30, 30, 60, 1, 30, 30, 92, 66, 2, 2, 2 };
- }
-
- public final static byte scopeLa[] = ScopeLa.scopeLa;
-
- @Override
- public final int scopeLa(int index) {
- return scopeLa[index];
- }
-
- public interface ScopeStateSet {
- public final static byte scopeStateSet[] = { 24, 24, 24, 28, 28, 24, 17, -1, 32, 28, 9, 32, 28, 5, 39, 39, 39,
- 69, 1, 3, 32, 28, 9, 39, 95, 5, 42, 39, -1, 5, 9, 9, 9 };
- }
-
- public final static byte scopeStateSet[] = ScopeStateSet.scopeStateSet;
-
- @Override
- public final int scopeStateSet(int index) {
- return scopeStateSet[index];
- }
-
- public interface ScopeRhs {
- public final static char scopeRhs[] = { 0, 142, 12, 0, 96, 0, 190, 104, 0, 31, 135, 0, 153, 188, 104, 13, 141,
- 0, 98, 0, 0, 148, 104, 2, 138, 0, 97, 0, 148, 104, 2, 0, 151, 2, 0, 113, 17, 178, 104, 12, 0, 113, 178,
- 104, 17, 12, 0, 113, 17, 12, 0, 113, 178, 104, 12, 0, 113, 12, 0, 129, 0, 2, 0, 151, 97, 0, 2, 97, 0,
- 148, 104, 2, 129, 0, 2, 0, 150, 97, 0, 143, 2, 0, 153, 176, 104, 13, 94, 185, 44, 0, 98, 0, 153, 176,
- 104, 13, 185, 44, 0, 136, 0, 99, 0, 184, 104, 136, 0, 104, 136, 0, 141, 99, 0, 172, 104, 13, 183, 94,
- 182, 159, 0, 172, 104, 13, 182, 159, 0, 197, 85, 0, 77, 2, 101, 97, 99, 0, 197, 114, 134, 2, 89, 0, 53,
- 0, 0, 134, 69, 111, 0, 29, 118, 0, 152, 2, 0, 97, 107, 0, 152, 2, 16, 0, 97, 105, 0, 181, 2, 98, 0, 134,
- 12, 98, 0, 134, 2, 0 };
- }
-
- public final static char scopeRhs[] = ScopeRhs.scopeRhs;
-
- @Override
- public final int scopeRhs(int index) {
- return scopeRhs[index];
- }
-
- public interface ScopeState {
- public final static char scopeState[] = { 0, 1263, 0, 343, 0, 1665, 1430, 1594, 0, 1472, 1335, 1429, 1260, 1239,
- 1128, 1098, 0, 547, 493, 397, 1204, 443, 1408, 0, 568, 1226, 318, 0, 1474, 1155, 1150, 1121, 1239, 1128,
- 1098, 593, 1431, 1501, 0, 1579, 1443, 476, 1490, 1480, 1408, 1193, 601, 1228, 1210, 1324, 1311, 1110,
- 1300, 1099, 1418, 1397, 1386, 1352, 1536, 1528, 1515, 580, 570, 1432, 1375, 1070, 1060, 1012, 1002,
- 1078, 1040, 1020, 547, 982, 962, 941, 920, 451, 899, 514, 350, 878, 857, 836, 815, 794, 773, 752, 731,
- 710, 689, 668, 318, 647, 418, 493, 397, 0 };
- }
-
- public final static char scopeState[] = ScopeState.scopeState;
-
- @Override
- public final int scopeState(int index) {
- return scopeState[index];
- }
-
- public interface InSymb {
- public final static char inSymb[] = { 0, 0, 180, 104, 165, 16, 23, 22, 10, 9, 4, 11, 15, 14, 98, 2, 102, 101,
- 105, 103, 107, 106, 109, 108, 111, 110, 99, 29, 2, 2, 67, 52, 2, 12, 152, 134, 136, 104, 10, 9, 54, 53,
- 4, 58, 57, 56, 55, 47, 48, 11, 62, 61, 64, 63, 69, 68, 65, 79, 78, 77, 75, 76, 74, 73, 72, 71, 70, 60,
- 152, 152, 181, 134, 114, 104, 12, 2, 139, 138, 166, 167, 159, 168, 46, 45, 169, 44, 170, 171, 94, 101,
- 101, 103, 103, 103, 103, 102, 102, 106, 105, 105, 108, 107, 134, 110, 109, 114, 114, 13, 141, 144, 120,
- 17, 113, 104, 4, 151, 104, 2, 182, 160, 160, 185, 160, 59, 104, 13, 120, 4, 104, 113, 178, 149, 148,
- 118, 104, 150, 104, 94, 13, 94, 13, 104, 4, 120, 178, 17, 113, 4, 2, 127, 129, 104, 29, 148, 183, 104,
- 13, 104, 188, 104, 120, 104, 113, 113, 143, 104, 2, 144, 13, 172, 136, 173, 104, 176, 94, 177, 153, 29,
- 190, 52, 12, 191, 104, 149, 104, 104, 104, 176, 153, 60, 29, 133, 60, 142, 52, 12, 149, 148, 186, 172,
- 184, 59, 143, 2, 104, 153, 142, 29, 29, 59, 144 };
- }
-
- public final static char inSymb[] = InSymb.inSymb;
-
- @Override
- public final int inSymb(int index) {
- return inSymb[index];
- }
-
- public interface Name {
- public final static String name[] = { "", "[", "(", "{", ".", "->", "++", "--", "&", "*", "+", "-", "~", "!",
- "/", "%", ">>", "<<", "<", ">", "<=", ">=", "==", "!=", "^", "|", "&&", "||", "?", ":", "...", "=",
- "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", ",", "$empty", "auto", "break", "case",
- "char", "const", "continue", "default", "do", "double", "else", "enum", "extern", "float", "for",
- "goto", "if", "inline", "int", "long", "register", "restrict", "return", "short", "signed", "sizeof",
- "static", "struct", "switch", "typedef", "union", "unsigned", "void", "volatile", "while", "_Bool",
- "_Complex", "_Imaginary", "integer", "floating", "charconst", "stringlit", "identifier", "Completion",
- "EndOfCompletion", "Invalid", "RightBracket", "RightParen", "RightBrace", "SemiColon", "ERROR_TOKEN",
- "EOF_TOKEN", "expression_parser_start", "]", ")", "}", ";", "identifier_token", "expression",
- "postfix_expression", "member_name", "type_id", "initializer_list", "unary_expression",
- "cast_expression", "multiplicative_expression", "additive_expression", "shift_expression",
- "relational_expression", "equality_expression", "and_expression", "exclusive_or_expression",
- "inclusive_or_expression", "logical_and_expression", "logical_or_expression", "assignment_expression",
- "expression_list_actual", "constant_expression", "declaration_specifiers",
- "simple_declaration_specifiers", "struct_or_union_declaration_sp" + "ecifiers",
- "elaborated_declaration_specifi" + "ers", "enum_declaration_specifiers",
- "typdef_name_declaration_specif" + "iers", "no_type_declaration_specifier", "type_qualifier",
- "no_type_declaration_specifiers", "simple_type_specifier", "struct_or_union_specifier",
- "elaborated_specifier", "enum_specifier", "type_name_specifier", "initializer", "declarator",
- "struct_or_union", "struct_declaration_list", "struct_declaration", "specifier_qualifier_list",
- "struct_declarator_list", "complete_struct_declarator", "enumerator_list", "enumerator",
- "direct_declarator", "pointer_seq", "array_direct_declarator", "basic_direct_declarator",
- "array_modifier", "parameter_type_list", "identifier_list", "array_modifier_type_qualifiers",
- "type_qualifier_list", "parameter_list", "parameter_declaration", "complete_parameter_declarator",
- "abstract_declarator", "direct_abstract_declarator", "basic_direct_abstract_declarat" + "or",
- "array_direct_abstract_declarat" + "or", "initializer_seq", "designated_initializer", "designation",
- "designator_list", "designator" };
- }
-
- public final static String name[] = Name.name;
-
- @Override
- public final String name(int index) {
- return name[index];
- }
-
- public final static int ERROR_SYMBOL = 51, SCOPE_UBOUND = 32, SCOPE_SIZE = 33, MAX_NAME_LENGTH = 38;
-
- @Override
- public final int getErrorSymbol() {
- return ERROR_SYMBOL;
- }
-
- @Override
- public final int getScopeUbound() {
- return SCOPE_UBOUND;
- }
-
- @Override
- public final int getScopeSize() {
- return SCOPE_SIZE;
- }
-
- @Override
- public final int getMaxNameLength() {
- return MAX_NAME_LENGTH;
- }
-
- public final static int NUM_STATES = 210, NT_OFFSET = 93, LA_STATE_OFFSET = 2086, MAX_LA = 2, NUM_RULES = 317,
- NUM_NONTERMINALS = 126, NUM_SYMBOLS = 219, SEGMENT_SIZE = 8192, START_STATE = 1250, IDENTIFIER_SYMBOL = 0,
- EOFT_SYMBOL = 80, EOLT_SYMBOL = 80, ACCEPT_ACTION = 1759, ERROR_ACTION = 1769;
-
- public final static boolean BACKTRACK = true;
-
- @Override
- public final int getNumStates() {
- return NUM_STATES;
- }
-
- @Override
- public final int getNtOffset() {
- return NT_OFFSET;
- }
-
- @Override
- public final int getLaStateOffset() {
- return LA_STATE_OFFSET;
- }
-
- @Override
- public final int getMaxLa() {
- return MAX_LA;
- }
-
- @Override
- public final int getNumRules() {
- return NUM_RULES;
- }
-
- @Override
- public final int getNumNonterminals() {
- return NUM_NONTERMINALS;
- }
-
- @Override
- public final int getNumSymbols() {
- return NUM_SYMBOLS;
- }
-
- @Override
- public final int getSegmentSize() {
- return SEGMENT_SIZE;
- }
-
- @Override
- public final int getStartState() {
- return START_STATE;
- }
-
- @Override
- public final int getStartSymbol() {
- return lhs[0];
- }
-
- public final int getIdentifierSymbol() {
- return IDENTIFIER_SYMBOL;
- }
-
- @Override
- public final int getEoftSymbol() {
- return EOFT_SYMBOL;
- }
-
- @Override
- public final int getEoltSymbol() {
- return EOLT_SYMBOL;
- }
-
- @Override
- public final int getAcceptAction() {
- return ACCEPT_ACTION;
- }
-
- @Override
- public final int getErrorAction() {
- return ERROR_ACTION;
- }
-
- @Override
- public final boolean isValidForParser() {
- return isValidForParser;
- }
-
- @Override
- public final boolean getBacktrack() {
- return BACKTRACK;
- }
-
- @Override
- public final int originalState(int state) {
- return -baseCheck[state];
- }
-
- @Override
- public final int asi(int state) {
- return asb[originalState(state)];
- }
-
- @Override
- public final int nasi(int state) {
- return nasb[originalState(state)];
- }
-
- @Override
- public final int inSymbol(int state) {
- return inSymb[originalState(state)];
- }
-
- @Override
- public final int ntAction(int state, int sym) {
- return baseAction[state + sym];
- }
-
- @Override
- public final int tAction(int state, int sym) {
- int i = baseAction[state], k = i + sym;
- return termAction[termCheck[k] == sym ? k : i];
- }
-
- @Override
- public final int lookAhead(int la_state, int sym) {
- int k = la_state + sym;
- return termAction[termCheck[k] == sym ? k : la_state];
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99ExpressionParsersym.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99ExpressionParsersym.java
deleted file mode 100644
index 2ad3368675e..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99ExpressionParsersym.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2010 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.dom.lrparser.c99;
-
-public interface C99ExpressionParsersym {
- public final static int TK_auto = 24, TK_break = 81, TK_case = 82, TK_char = 31, TK_const = 6, TK_continue = 83,
- TK_default = 84, TK_do = 85, TK_double = 32, TK_else = 86, TK_enum = 44, TK_extern = 25, TK_float = 33,
- TK_for = 87, TK_goto = 88, TK_if = 89, TK_inline = 26, TK_int = 34, TK_long = 35, TK_register = 27,
- TK_restrict = 7, TK_return = 90, TK_short = 36, TK_signed = 37, TK_sizeof = 16, TK_static = 17,
- TK_struct = 45, TK_switch = 91, TK_typedef = 28, TK_union = 46, TK_unsigned = 38, TK_void = 39,
- TK_volatile = 8, TK_while = 92, TK__Bool = 40, TK__Complex = 41, TK__Imaginary = 42, TK_integer = 18,
- TK_floating = 19, TK_charconst = 20, TK_stringlit = 21, TK_identifier = 1, TK_Completion = 3,
- TK_EndOfCompletion = 5, TK_Invalid = 93, TK_LeftBracket = 12, TK_LeftParen = 2, TK_LeftBrace = 13,
- TK_Dot = 52, TK_Arrow = 67, TK_PlusPlus = 14, TK_MinusMinus = 15, TK_And = 11, TK_Star = 4, TK_Plus = 9,
- TK_Minus = 10, TK_Tilde = 22, TK_Bang = 23, TK_Slash = 53, TK_Percent = 54, TK_RightShift = 47,
- TK_LeftShift = 48, TK_LT = 55, TK_GT = 56, TK_LE = 57, TK_GE = 58, TK_EQ = 61, TK_NE = 62, TK_Caret = 63,
- TK_Or = 64, TK_AndAnd = 65, TK_OrOr = 68, TK_Question = 69, TK_Colon = 59, TK_DotDotDot = 49,
- TK_Assign = 60, TK_StarAssign = 70, TK_SlashAssign = 71, TK_PercentAssign = 72, TK_PlusAssign = 73,
- TK_MinusAssign = 74, TK_RightShiftAssign = 75, TK_LeftShiftAssign = 76, TK_AndAssign = 77,
- TK_CaretAssign = 78, TK_OrAssign = 79, TK_Comma = 29, TK_RightBracket = 50, TK_RightParen = 30,
- TK_RightBrace = 43, TK_SemiColon = 66, TK_ERROR_TOKEN = 51, TK_EOF_TOKEN = 80;
-
- public final static String orderedTerminalSymbols[] = { "", "identifier", "LeftParen", "Completion", "Star",
- "EndOfCompletion", "const", "restrict", "volatile", "Plus", "Minus", "And", "LeftBracket", "LeftBrace",
- "PlusPlus", "MinusMinus", "sizeof", "static", "integer", "floating", "charconst", "stringlit", "Tilde",
- "Bang", "auto", "extern", "inline", "register", "typedef", "Comma", "RightParen", "char", "double", "float",
- "int", "long", "short", "signed", "unsigned", "void", "_Bool", "_Complex", "_Imaginary", "RightBrace",
- "enum", "struct", "union", "RightShift", "LeftShift", "DotDotDot", "RightBracket", "ERROR_TOKEN", "Dot",
- "Slash", "Percent", "LT", "GT", "LE", "GE", "Colon", "Assign", "EQ", "NE", "Caret", "Or", "AndAnd",
- "SemiColon", "Arrow", "OrOr", "Question", "StarAssign", "SlashAssign", "PercentAssign", "PlusAssign",
- "MinusAssign", "RightShiftAssign", "LeftShiftAssign", "AndAssign", "CaretAssign", "OrAssign", "EOF_TOKEN",
- "break", "case", "continue", "default", "do", "else", "for", "goto", "if", "return", "switch", "while",
- "Invalid" };
-
- public final static boolean isValidForParser = true;
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99NoCastExpressionParser.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99NoCastExpressionParser.java
deleted file mode 100644
index f176dd284b7..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99NoCastExpressionParser.java
+++ /dev/null
@@ -1,1675 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2015 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.dom.lrparser.c99;
-
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.cdt.core.dom.ast.IASTBinaryExpression;
-import org.eclipse.cdt.core.dom.ast.IASTCompletionNode;
-import org.eclipse.cdt.core.dom.ast.IASTCompositeTypeSpecifier;
-import org.eclipse.cdt.core.dom.ast.IASTElaboratedTypeSpecifier;
-import org.eclipse.cdt.core.dom.ast.IASTExpression;
-import org.eclipse.cdt.core.dom.ast.IASTLiteralExpression;
-import org.eclipse.cdt.core.dom.ast.IASTTypeIdExpression;
-import org.eclipse.cdt.core.dom.ast.IASTUnaryExpression;
-import org.eclipse.cdt.core.dom.lrparser.CPreprocessorAdapter;
-import org.eclipse.cdt.core.dom.lrparser.IDOMTokenMap;
-import org.eclipse.cdt.core.dom.lrparser.ISecondaryParser;
-import org.eclipse.cdt.core.dom.lrparser.ITokenCollector;
-import org.eclipse.cdt.core.dom.lrparser.action.ITokenMap;
-import org.eclipse.cdt.core.dom.lrparser.action.ITokenStream;
-import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack;
-import org.eclipse.cdt.core.dom.lrparser.action.TokenMap;
-import org.eclipse.cdt.core.dom.lrparser.action.c99.C99BuildASTParserAction;
-import org.eclipse.cdt.core.dom.lrparser.action.c99.C99SecondaryParserFactory;
-import org.eclipse.cdt.core.dom.lrparser.lpgextensions.FixedBacktrackingParser;
-import org.eclipse.cdt.core.dom.parser.IBuiltinBindingsProvider;
-import org.eclipse.cdt.core.index.IIndex;
-import org.eclipse.cdt.core.parser.IScanner;
-import org.eclipse.cdt.internal.core.dom.parser.c.CNodeFactory;
-
-import lpg.lpgjavaruntime.BadParseException;
-import lpg.lpgjavaruntime.BadParseSymFileException;
-import lpg.lpgjavaruntime.DiagnoseParser;
-import lpg.lpgjavaruntime.ErrorToken;
-import lpg.lpgjavaruntime.IToken;
-import lpg.lpgjavaruntime.LexStream;
-import lpg.lpgjavaruntime.Monitor;
-import lpg.lpgjavaruntime.NotBacktrackParseTableException;
-import lpg.lpgjavaruntime.NullExportedSymbolsException;
-import lpg.lpgjavaruntime.NullTerminalSymbolsException;
-import lpg.lpgjavaruntime.ParseErrorCodes;
-import lpg.lpgjavaruntime.ParseTable;
-import lpg.lpgjavaruntime.PrsStream;
-import lpg.lpgjavaruntime.RuleAction;
-import lpg.lpgjavaruntime.Token;
-import lpg.lpgjavaruntime.UndefinedEofSymbolException;
-import lpg.lpgjavaruntime.UnimplementedTerminalsException;
-
-public class C99NoCastExpressionParser extends PrsStream
- implements RuleAction, ITokenStream, ITokenCollector, ISecondaryParser<IASTExpression> {
- private static ParseTable prs = new C99NoCastExpressionParserprs();
- private FixedBacktrackingParser btParser;
-
- public FixedBacktrackingParser getParser() {
- return btParser;
- }
-
- private void setResult(Object object) {
- btParser.setSym1(object);
- }
-
- public Object getRhsSym(int i) {
- return btParser.getSym(i);
- }
-
- public int getRhsTokenIndex(int i) {
- return btParser.getToken(i);
- }
-
- public IToken getRhsIToken(int i) {
- return super.getIToken(getRhsTokenIndex(i));
- }
-
- public int getRhsFirstTokenIndex(int i) {
- return btParser.getFirstToken(i);
- }
-
- public IToken getRhsFirstIToken(int i) {
- return super.getIToken(getRhsFirstTokenIndex(i));
- }
-
- public int getRhsLastTokenIndex(int i) {
- return btParser.getLastToken(i);
- }
-
- public IToken getRhsLastIToken(int i) {
- return super.getIToken(getRhsLastTokenIndex(i));
- }
-
- public int getLeftSpan() {
- return btParser.getFirstToken();
- }
-
- @Override
- public IToken getLeftIToken() {
- return super.getIToken(getLeftSpan());
- }
-
- public int getRightSpan() {
- return btParser.getLastToken();
- }
-
- @Override
- public IToken getRightIToken() {
- return super.getIToken(getRightSpan());
- }
-
- public int getRhsErrorTokenIndex(int i) {
- int index = btParser.getToken(i);
- IToken err = super.getIToken(index);
- return (err instanceof ErrorToken ? index : 0);
- }
-
- public ErrorToken getRhsErrorIToken(int i) {
- int index = btParser.getToken(i);
- IToken err = super.getIToken(index);
- return (ErrorToken) (err instanceof ErrorToken ? err : null);
- }
-
- public C99NoCastExpressionParser(LexStream lexStream) {
- super(lexStream);
-
- try {
- super.remapTerminalSymbols(orderedTerminalSymbols(), C99NoCastExpressionParserprs.EOFT_SYMBOL);
- } catch (NullExportedSymbolsException e) {
- } catch (NullTerminalSymbolsException e) {
- } catch (UnimplementedTerminalsException e) {
- java.util.ArrayList unimplemented_symbols = e.getSymbols();
- System.out.println("The Lexer will not scan the following token(s):");
- for (int i = 0; i < unimplemented_symbols.size(); i++) {
- Integer id = (Integer) unimplemented_symbols.get(i);
- System.out.println(" " + C99NoCastExpressionParsersym.orderedTerminalSymbols[id.intValue()]);
- }
- System.out.println();
- } catch (UndefinedEofSymbolException e) {
- throw new Error(new UndefinedEofSymbolException("The Lexer does not implement the Eof symbol "
- + C99NoCastExpressionParsersym.orderedTerminalSymbols[C99NoCastExpressionParserprs.EOFT_SYMBOL]));
- }
- }
-
- @Override
- public String[] orderedTerminalSymbols() {
- return C99NoCastExpressionParsersym.orderedTerminalSymbols;
- }
-
- public String getTokenKindName(int kind) {
- return C99NoCastExpressionParsersym.orderedTerminalSymbols[kind];
- }
-
- public int getEOFTokenKind() {
- return C99NoCastExpressionParserprs.EOFT_SYMBOL;
- }
-
- public PrsStream getParseStream() {
- return this;
- }
-
- //
- // Report error message for given error_token.
- //
- public final void reportErrorTokenMessage(int error_token, String msg) {
- int firsttok = super.getFirstErrorToken(error_token), lasttok = super.getLastErrorToken(error_token);
- String location = super.getFileName() + ':'
- + (firsttok > lasttok ? (super.getEndLine(lasttok) + ":" + super.getEndColumn(lasttok))
- : (super.getLine(error_token) + ":" + super.getColumn(error_token) + ":"
- + super.getEndLine(error_token) + ":" + super.getEndColumn(error_token)))
- + ": ";
- super.reportError((firsttok > lasttok ? ParseErrorCodes.INSERTION_CODE : ParseErrorCodes.SUBSTITUTION_CODE),
- location, msg);
- }
-
- public void parser() {
- parser(null, 0);
- }
-
- public void parser(Monitor monitor) {
- parser(monitor, 0);
- }
-
- public void parser(int error_repair_count) {
- parser(null, error_repair_count);
- }
-
- public void parser(Monitor monitor, int error_repair_count) {
- try {
- btParser = new FixedBacktrackingParser(monitor, this, prs, this);
- } catch (NotBacktrackParseTableException e) {
- throw new Error(new NotBacktrackParseTableException(
- "Regenerate C99NoCastExpressionParserprs.java with -BACKTRACK option"));
- } catch (BadParseSymFileException e) {
- throw new Error(
- new BadParseSymFileException("Bad Parser Symbol File -- C99NoCastExpressionParsersym.java"));
- }
-
- try {
- btParser.parse(error_repair_count);
- } catch (BadParseException e) {
- reset(e.error_token); // point to error token
- DiagnoseParser diagnoseParser = new DiagnoseParser(this, prs);
- diagnoseParser.diagnose(e.error_token);
- }
- }
-
- private C99BuildASTParserAction action;
- private IASTCompletionNode compNode;
-
- public C99NoCastExpressionParser(IScanner scanner, IDOMTokenMap tokenMap,
- IBuiltinBindingsProvider builtinBindingsProvider, IIndex index, Map<String, String> properties) {
- initActions(properties);
- action.initializeTranslationUnit(scanner, builtinBindingsProvider, index);
- CPreprocessorAdapter.runCPreprocessor(scanner, this, tokenMap);
- }
-
- private void initActions(Map<String, String> properties) {
- ScopedStack<Object> astStack = new ScopedStack<>();
-
- action = new C99BuildASTParserAction(this, astStack, CNodeFactory.getDefault(),
- C99SecondaryParserFactory.getDefault());
- action.setParserProperties(properties);
-
- }
-
- @Override
- public void addToken(IToken token) {
- token.setKind(mapKind(token.getKind())); // TODO does mapKind need to be called?
- super.addToken(token);
- }
-
- @Override
- public IASTExpression parse() {
- // this has to be done, or... kaboom!
- setStreamLength(getSize());
-
- final int errorRepairCount = -1; // -1 means full error handling
- parser(null, errorRepairCount); // do the actual parse
- super.resetTokenStream(); // allow tokens to be garbage collected
-
- compNode = action.getASTCompletionNode(); // the completion node may be null
- return (IASTExpression) action.getParseResult();
- }
-
- @Override
- public IASTCompletionNode getCompletionNode() {
- return compNode;
- }
-
- // uncomment this method to use with backtracking parser
- @Override
- public List<IToken> getRuleTokens() {
- return getTokens().subList(getLeftSpan(), getRightSpan() + 1);
- }
-
- @Override
- public String[] getOrderedTerminalSymbols() {
- return C99NoCastExpressionParsersym.orderedTerminalSymbols;
- }
-
- @Override
- @SuppressWarnings("nls")
- public String getName() {
- return "C99NoCastExpressionParser";
- }
-
- private ITokenMap tokenMap = null;
-
- @Override
- public void setTokens(List<IToken> tokens) {
- resetTokenStream();
- addToken(new Token(null, 0, 0, 0)); // dummy token
- for (IToken token : tokens) {
- token.setKind(tokenMap.mapKind(token.getKind()));
- addToken(token);
- }
- addToken(new Token(null, 0, 0, C99NoCastExpressionParsersym.TK_EOF_TOKEN));
- }
-
- public C99NoCastExpressionParser(ITokenStream stream, Map<String, String> properties) { // constructor for creating secondary parser
- initActions(properties);
- tokenMap = new TokenMap(C99NoCastExpressionParsersym.orderedTerminalSymbols,
- stream.getOrderedTerminalSymbols());
- }
-
- @Override
- public void ruleAction(int ruleNumber) {
- switch (ruleNumber) {
-
- //
- // Rule 1: <openscope-ast> ::= $Empty
- //
- case 1: {
- action.openASTScope();
- break;
- }
-
- //
- // Rule 2: <empty> ::= $Empty
- //
- case 2: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 13: literal ::= integer
- //
- case 13: {
- action.consumeExpressionLiteral(IASTLiteralExpression.lk_integer_constant);
- break;
- }
-
- //
- // Rule 14: literal ::= floating
- //
- case 14: {
- action.consumeExpressionLiteral(IASTLiteralExpression.lk_float_constant);
- break;
- }
-
- //
- // Rule 15: literal ::= charconst
- //
- case 15: {
- action.consumeExpressionLiteral(IASTLiteralExpression.lk_char_constant);
- break;
- }
-
- //
- // Rule 16: literal ::= stringlit
- //
- case 16: {
- action.consumeExpressionLiteral(IASTLiteralExpression.lk_string_literal);
- break;
- }
-
- //
- // Rule 18: primary_expression ::= primary_expression_id
- //
- case 18: {
- action.consumeExpressionID();
- break;
- }
-
- //
- // Rule 19: primary_expression ::= ( expression )
- //
- case 19: {
- action.consumeExpressionBracketed();
- break;
- }
-
- //
- // Rule 22: postfix_expression ::= postfix_expression [ expression ]
- //
- case 22: {
- action.consumeExpressionArraySubscript();
- break;
- }
-
- //
- // Rule 23: postfix_expression ::= postfix_expression ( expression_list_opt )
- //
- case 23: {
- action.consumeExpressionFunctionCall();
- break;
- }
-
- //
- // Rule 24: postfix_expression ::= postfix_expression . member_name
- //
- case 24: {
- action.consumeExpressionFieldReference(false);
- break;
- }
-
- //
- // Rule 25: postfix_expression ::= postfix_expression -> member_name
- //
- case 25: {
- action.consumeExpressionFieldReference(true);
- break;
- }
-
- //
- // Rule 26: postfix_expression ::= postfix_expression ++
- //
- case 26: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixIncr);
- break;
- }
-
- //
- // Rule 27: postfix_expression ::= postfix_expression --
- //
- case 27: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixDecr);
- break;
- }
-
- //
- // Rule 28: postfix_expression ::= ( type_id ) initializer_list
- //
- case 28: {
- action.consumeExpressionTypeIdInitializer();
- break;
- }
-
- //
- // Rule 33: unary_expression ::= ++ unary_expression
- //
- case 33: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixIncr);
- break;
- }
-
- //
- // Rule 34: unary_expression ::= -- unary_expression
- //
- case 34: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixDecr);
- break;
- }
-
- //
- // Rule 35: unary_expression ::= & cast_expression
- //
- case 35: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_amper);
- break;
- }
-
- //
- // Rule 36: unary_expression ::= * cast_expression
- //
- case 36: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_star);
- break;
- }
-
- //
- // Rule 37: unary_expression ::= + cast_expression
- //
- case 37: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_plus);
- break;
- }
-
- //
- // Rule 38: unary_expression ::= - cast_expression
- //
- case 38: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_minus);
- break;
- }
-
- //
- // Rule 39: unary_expression ::= ~ cast_expression
- //
- case 39: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_tilde);
- break;
- }
-
- //
- // Rule 40: unary_expression ::= ! cast_expression
- //
- case 40: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_not);
- break;
- }
-
- //
- // Rule 41: unary_expression ::= sizeof unary_expression
- //
- case 41: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_sizeof);
- break;
- }
-
- //
- // Rule 42: unary_expression ::= sizeof ( type_id )
- //
- case 42: {
- action.consumeExpressionTypeId(IASTTypeIdExpression.op_sizeof);
- break;
- }
-
- //
- // Rule 45: multiplicative_expression ::= multiplicative_expression * cast_expression
- //
- case 45: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_multiply);
- break;
- }
-
- //
- // Rule 46: multiplicative_expression ::= multiplicative_expression / cast_expression
- //
- case 46: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_divide);
- break;
- }
-
- //
- // Rule 47: multiplicative_expression ::= multiplicative_expression % cast_expression
- //
- case 47: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_modulo);
- break;
- }
-
- //
- // Rule 49: additive_expression ::= additive_expression + multiplicative_expression
- //
- case 49: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_plus);
- break;
- }
-
- //
- // Rule 50: additive_expression ::= additive_expression - multiplicative_expression
- //
- case 50: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_minus);
- break;
- }
-
- //
- // Rule 52: shift_expression ::= shift_expression << additive_expression
- //
- case 52: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftLeft);
- break;
- }
-
- //
- // Rule 53: shift_expression ::= shift_expression >> additive_expression
- //
- case 53: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftRight);
- break;
- }
-
- //
- // Rule 55: relational_expression ::= relational_expression < shift_expression
- //
- case 55: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_lessThan);
- break;
- }
-
- //
- // Rule 56: relational_expression ::= relational_expression > shift_expression
- //
- case 56: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_greaterThan);
- break;
- }
-
- //
- // Rule 57: relational_expression ::= relational_expression <= shift_expression
- //
- case 57: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_lessEqual);
- break;
- }
-
- //
- // Rule 58: relational_expression ::= relational_expression >= shift_expression
- //
- case 58: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_greaterEqual);
- break;
- }
-
- //
- // Rule 60: equality_expression ::= equality_expression == relational_expression
- //
- case 60: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_equals);
- break;
- }
-
- //
- // Rule 61: equality_expression ::= equality_expression != relational_expression
- //
- case 61: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_notequals);
- break;
- }
-
- //
- // Rule 63: and_expression ::= and_expression & equality_expression
- //
- case 63: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryAnd);
- break;
- }
-
- //
- // Rule 65: exclusive_or_expression ::= exclusive_or_expression ^ and_expression
- //
- case 65: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryXor);
- break;
- }
-
- //
- // Rule 67: inclusive_or_expression ::= inclusive_or_expression | exclusive_or_expression
- //
- case 67: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryOr);
- break;
- }
-
- //
- // Rule 69: logical_and_expression ::= logical_and_expression && inclusive_or_expression
- //
- case 69: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_logicalAnd);
- break;
- }
-
- //
- // Rule 71: logical_or_expression ::= logical_or_expression || logical_and_expression
- //
- case 71: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_logicalOr);
- break;
- }
-
- //
- // Rule 73: conditional_expression ::= logical_or_expression ? expression : assignment_expression
- //
- case 73: {
- action.consumeExpressionConditional();
- break;
- }
-
- //
- // Rule 75: assignment_expression ::= unary_expression = assignment_expression
- //
- case 75: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_assign);
- break;
- }
-
- //
- // Rule 76: assignment_expression ::= unary_expression *= assignment_expression
- //
- case 76: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_multiplyAssign);
- break;
- }
-
- //
- // Rule 77: assignment_expression ::= unary_expression /= assignment_expression
- //
- case 77: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_divideAssign);
- break;
- }
-
- //
- // Rule 78: assignment_expression ::= unary_expression %= assignment_expression
- //
- case 78: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_moduloAssign);
- break;
- }
-
- //
- // Rule 79: assignment_expression ::= unary_expression += assignment_expression
- //
- case 79: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_plusAssign);
- break;
- }
-
- //
- // Rule 80: assignment_expression ::= unary_expression -= assignment_expression
- //
- case 80: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_minusAssign);
- break;
- }
-
- //
- // Rule 81: assignment_expression ::= unary_expression <<= assignment_expression
- //
- case 81: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftLeftAssign);
- break;
- }
-
- //
- // Rule 82: assignment_expression ::= unary_expression >>= assignment_expression
- //
- case 82: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftRightAssign);
- break;
- }
-
- //
- // Rule 83: assignment_expression ::= unary_expression &= assignment_expression
- //
- case 83: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryAndAssign);
- break;
- }
-
- //
- // Rule 84: assignment_expression ::= unary_expression ^= assignment_expression
- //
- case 84: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryXorAssign);
- break;
- }
-
- //
- // Rule 85: assignment_expression ::= unary_expression |= assignment_expression
- //
- case 85: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryOrAssign);
- break;
- }
-
- //
- // Rule 88: expression_list ::= <openscope-ast> expression_list_actual
- //
- case 88: {
- action.consumeExpressionList();
- break;
- }
-
- //
- // Rule 90: expression_list_opt ::= $Empty
- //
- case 90: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 100: statement ::= ERROR_TOKEN
- //
- case 100: {
- action.consumeStatementProblem();
- break;
- }
-
- //
- // Rule 101: labeled_statement ::= identifier_token : statement
- //
- case 101: {
- action.consumeStatementLabeled();
- break;
- }
-
- //
- // Rule 102: labeled_statement ::= case constant_expression : statement
- //
- case 102: {
- action.consumeStatementCase();
- break;
- }
-
- //
- // Rule 103: labeled_statement ::= default : statement
- //
- case 103: {
- action.consumeStatementDefault();
- break;
- }
-
- //
- // Rule 104: compound_statement ::= { }
- //
- case 104: {
- action.consumeStatementCompoundStatement(false);
- break;
- }
-
- //
- // Rule 105: compound_statement ::= { <openscope-ast> block_item_list }
- //
- case 105: {
- action.consumeStatementCompoundStatement(true);
- break;
- }
-
- //
- // Rule 109: block_item ::= declaration
- //
- case 109: {
- action.consumeStatementDeclarationWithDisambiguation();
- break;
- }
-
- //
- // Rule 110: expression_statement ::= ;
- //
- case 110: {
- action.consumeStatementNull();
- break;
- }
-
- //
- // Rule 111: expression_statement ::= expression_in_statement ;
- //
- case 111: {
- action.consumeStatementExpression();
- break;
- }
-
- //
- // Rule 112: selection_statement ::= if ( expression ) statement
- //
- case 112: {
- action.consumeStatementIf(false);
- break;
- }
-
- //
- // Rule 113: selection_statement ::= if ( expression ) statement else statement
- //
- case 113: {
- action.consumeStatementIf(true);
- break;
- }
-
- //
- // Rule 114: selection_statement ::= switch ( expression ) statement
- //
- case 114: {
- action.consumeStatementSwitch();
- break;
- }
-
- //
- // Rule 116: expression_opt ::= $Empty
- //
- case 116: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 117: iteration_statement ::= do statement while ( expression ) ;
- //
- case 117: {
- action.consumeStatementDoLoop(true);
- break;
- }
-
- //
- // Rule 118: iteration_statement ::= do statement
- //
- case 118: {
- action.consumeStatementDoLoop(false);
- break;
- }
-
- //
- // Rule 119: iteration_statement ::= while ( expression ) statement
- //
- case 119: {
- action.consumeStatementWhileLoop();
- break;
- }
-
- //
- // Rule 120: iteration_statement ::= for ( expression_opt ; expression_opt ; expression_opt ) statement
- //
- case 120: {
- action.consumeStatementForLoop();
- break;
- }
-
- //
- // Rule 121: iteration_statement ::= for ( declaration expression_opt ; expression_opt ) statement
- //
- case 121: {
- action.consumeStatementForLoop();
- break;
- }
-
- //
- // Rule 122: jump_statement ::= goto identifier_token ;
- //
- case 122: {
- action.consumeStatementGoto();
- break;
- }
-
- //
- // Rule 123: jump_statement ::= continue ;
- //
- case 123: {
- action.consumeStatementContinue();
- break;
- }
-
- //
- // Rule 124: jump_statement ::= break ;
- //
- case 124: {
- action.consumeStatementBreak();
- break;
- }
-
- //
- // Rule 125: jump_statement ::= return ;
- //
- case 125: {
- action.consumeStatementReturn(false);
- break;
- }
-
- //
- // Rule 126: jump_statement ::= return expression ;
- //
- case 126: {
- action.consumeStatementReturn(true);
- break;
- }
-
- //
- // Rule 127: declaration ::= declaration_specifiers ;
- //
- case 127: {
- action.consumeDeclarationSimple(false);
- break;
- }
-
- //
- // Rule 128: declaration ::= declaration_specifiers <openscope-ast> init_declarator_list ;
- //
- case 128: {
- action.consumeDeclarationSimple(true);
- break;
- }
-
- //
- // Rule 129: declaration_specifiers ::= <openscope-ast> simple_declaration_specifiers
- //
- case 129: {
- action.consumeDeclarationSpecifiersSimple();
- break;
- }
-
- //
- // Rule 130: declaration_specifiers ::= <openscope-ast> struct_or_union_declaration_specifiers
- //
- case 130: {
- action.consumeDeclarationSpecifiersStructUnionEnum();
- break;
- }
-
- //
- // Rule 131: declaration_specifiers ::= <openscope-ast> elaborated_declaration_specifiers
- //
- case 131: {
- action.consumeDeclarationSpecifiersStructUnionEnum();
- break;
- }
-
- //
- // Rule 132: declaration_specifiers ::= <openscope-ast> enum_declaration_specifiers
- //
- case 132: {
- action.consumeDeclarationSpecifiersStructUnionEnum();
- break;
- }
-
- //
- // Rule 133: declaration_specifiers ::= <openscope-ast> typdef_name_declaration_specifiers
- //
- case 133: {
- action.consumeDeclarationSpecifiersTypedefName();
- break;
- }
-
- //
- // Rule 158: init_declarator ::= complete_declarator = initializer
- //
- case 158: {
- action.consumeDeclaratorWithInitializer(true);
- break;
- }
-
- //
- // Rule 160: storage_class_specifier ::= storage_class_specifier_token
- //
- case 160: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 166: simple_type_specifier ::= simple_type_specifier_token
- //
- case 166: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 179: type_name_specifier ::= identifier_token
- //
- case 179: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 180: struct_or_union_specifier ::= struct_or_union struct_or_union_specifier_hook { <openscope-ast> struct_declaration_list_opt }
- //
- case 180: {
- action.consumeTypeSpecifierComposite(false);
- break;
- }
-
- //
- // Rule 181: struct_or_union_specifier ::= struct_or_union struct_or_union_specifier_hook identifier_token struct_or_union_specifier_suffix_hook { <openscope-ast> struct_declaration_list_opt }
- //
- case 181: {
- action.consumeTypeSpecifierComposite(true);
- break;
- }
-
- //
- // Rule 186: elaborated_specifier ::= struct elaborated_specifier_hook identifier_token
- //
- case 186: {
- action.consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_struct);
- break;
- }
-
- //
- // Rule 187: elaborated_specifier ::= union elaborated_specifier_hook identifier_token
- //
- case 187: {
- action.consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_union);
- break;
- }
-
- //
- // Rule 188: elaborated_specifier ::= enum elaborated_specifier_hook identifier_token
- //
- case 188: {
- action.consumeTypeSpecifierElaborated(IASTElaboratedTypeSpecifier.k_enum);
- break;
- }
-
- //
- // Rule 194: struct_declaration ::= specifier_qualifier_list <openscope-ast> struct_declarator_list ;
- //
- case 194: {
- action.consumeStructDeclaration(true);
- break;
- }
-
- //
- // Rule 195: struct_declaration ::= specifier_qualifier_list ;
- //
- case 195: {
- action.consumeStructDeclaration(false);
- break;
- }
-
- //
- // Rule 196: struct_declaration ::= ERROR_TOKEN
- //
- case 196: {
- action.consumeDeclarationProblem();
- break;
- }
-
- //
- // Rule 202: struct_declarator ::= : constant_expression
- //
- case 202: {
- action.consumeBitField(false);
- break;
- }
-
- //
- // Rule 203: struct_declarator ::= declarator : constant_expression
- //
- case 203: {
- action.consumeBitField(true);
- break;
- }
-
- //
- // Rule 204: enum_specifier ::= enum enum_specifier_hook { <openscope-ast> enumerator_list_opt comma_opt }
- //
- case 204: {
- action.consumeTypeSpecifierEnumeration(false);
- break;
- }
-
- //
- // Rule 205: enum_specifier ::= enum enum_specifier_hook identifier_token { <openscope-ast> enumerator_list_opt comma_opt }
- //
- case 205: {
- action.consumeTypeSpecifierEnumeration(true);
- break;
- }
-
- //
- // Rule 211: enumerator ::= identifier_token
- //
- case 211: {
- action.consumeEnumerator(false);
- break;
- }
-
- //
- // Rule 212: enumerator ::= identifier_token = constant_expression
- //
- case 212: {
- action.consumeEnumerator(true);
- break;
- }
-
- //
- // Rule 213: type_qualifier ::= type_qualifier_token
- //
- case 213: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 217: function_specifier ::= inline
- //
- case 217: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 219: declarator ::= <openscope-ast> pointer_seq direct_declarator
- //
- case 219: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 224: basic_direct_declarator ::= declarator_id_name
- //
- case 224: {
- action.consumeDirectDeclaratorIdentifier();
- break;
- }
-
- //
- // Rule 225: basic_direct_declarator ::= ( declarator )
- //
- case 225: {
- action.consumeDirectDeclaratorBracketed();
- break;
- }
-
- //
- // Rule 226: declarator_id_name ::= identifier
- //
- case 226: {
- action.consumeIdentifierName();
- break;
- }
-
- //
- // Rule 227: array_direct_declarator ::= basic_direct_declarator array_modifier
- //
- case 227: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 228: array_direct_declarator ::= array_direct_declarator array_modifier
- //
- case 228: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 230: function_direct_declarator ::= basic_direct_declarator ( <openscope-ast> parameter_type_list )
- //
- case 230: {
- action.consumeDirectDeclaratorFunctionDeclarator(true, true);
- break;
- }
-
- //
- // Rule 231: function_direct_declarator ::= basic_direct_declarator ( )
- //
- case 231: {
- action.consumeDirectDeclaratorFunctionDeclarator(true, false);
- break;
- }
-
- //
- // Rule 233: function_declarator ::= <openscope-ast> pointer_seq function_direct_declarator
- //
- case 233: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 234: knr_direct_declarator ::= basic_direct_declarator ( <openscope-ast> identifier_list )
- //
- case 234: {
- action.consumeDirectDeclaratorFunctionDeclaratorKnR();
- break;
- }
-
- //
- // Rule 236: knr_function_declarator ::= <openscope-ast> pointer_seq knr_direct_declarator
- //
- case 236: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 237: identifier_list ::= identifier
- //
- case 237: {
- action.consumeIdentifierKnR();
- break;
- }
-
- //
- // Rule 238: identifier_list ::= identifier_list , identifier
- //
- case 238: {
- action.consumeIdentifierKnR();
- break;
- }
-
- //
- // Rule 239: array_modifier ::= [ ]
- //
- case 239: {
- action.consumeDirectDeclaratorArrayModifier(false);
- break;
- }
-
- //
- // Rule 240: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers ]
- //
- case 240: {
- action.consumeDirectDeclaratorModifiedArrayModifier(false, false, true, false);
- break;
- }
-
- //
- // Rule 241: array_modifier ::= [ assignment_expression ]
- //
- case 241: {
- action.consumeDirectDeclaratorArrayModifier(true);
- break;
- }
-
- //
- // Rule 242: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers assignment_expression ]
- //
- case 242: {
- action.consumeDirectDeclaratorModifiedArrayModifier(false, false, true, true);
- break;
- }
-
- //
- // Rule 243: array_modifier ::= [ static assignment_expression ]
- //
- case 243: {
- action.consumeDirectDeclaratorModifiedArrayModifier(true, false, false, true);
- break;
- }
-
- //
- // Rule 244: array_modifier ::= [ static <openscope-ast> array_modifier_type_qualifiers assignment_expression ]
- //
- case 244: {
- action.consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true);
- break;
- }
-
- //
- // Rule 245: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers static assignment_expression ]
- //
- case 245: {
- action.consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true);
- break;
- }
-
- //
- // Rule 246: array_modifier ::= [ * ]
- //
- case 246: {
- action.consumeDirectDeclaratorModifiedArrayModifier(false, true, false, false);
- break;
- }
-
- //
- // Rule 247: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers * ]
- //
- case 247: {
- action.consumeDirectDeclaratorModifiedArrayModifier(false, true, true, false);
- break;
- }
-
- //
- // Rule 249: pointer_seq ::= pointer_hook * pointer_hook
- //
- case 249: {
- action.consumePointer();
- break;
- }
-
- //
- // Rule 250: pointer_seq ::= pointer_seq pointer_hook * pointer_hook
- //
- case 250: {
- action.consumePointer();
- break;
- }
-
- //
- // Rule 251: pointer_seq ::= pointer_hook * pointer_hook <openscope-ast> type_qualifier_list
- //
- case 251: {
- action.consumePointerTypeQualifierList();
- break;
- }
-
- //
- // Rule 252: pointer_seq ::= pointer_seq pointer_hook * pointer_hook <openscope-ast> type_qualifier_list
- //
- case 252: {
- action.consumePointerTypeQualifierList();
- break;
- }
-
- //
- // Rule 256: parameter_type_list ::= parameter_list
- //
- case 256: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 257: parameter_type_list ::= parameter_list , ...
- //
- case 257: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 258: parameter_type_list ::= ...
- //
- case 258: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 261: parameter_declaration ::= declaration_specifiers complete_parameter_declarator
- //
- case 261: {
- action.consumeParameterDeclaration();
- break;
- }
-
- //
- // Rule 262: parameter_declaration ::= declaration_specifiers
- //
- case 262: {
- action.consumeParameterDeclarationWithoutDeclarator();
- break;
- }
-
- //
- // Rule 265: type_id ::= specifier_qualifier_list
- //
- case 265: {
- action.consumeTypeId(false);
- break;
- }
-
- //
- // Rule 266: type_id ::= specifier_qualifier_list abstract_declarator
- //
- case 266: {
- action.consumeTypeId(true);
- break;
- }
-
- //
- // Rule 268: abstract_declarator ::= <openscope-ast> pointer_seq
- //
- case 268: {
- action.consumeDeclaratorWithPointer(false);
- break;
- }
-
- //
- // Rule 269: abstract_declarator ::= <openscope-ast> pointer_seq direct_abstract_declarator
- //
- case 269: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 273: basic_direct_abstract_declarator ::= ( abstract_declarator )
- //
- case 273: {
- action.consumeDirectDeclaratorBracketed();
- break;
- }
-
- //
- // Rule 274: array_direct_abstract_declarator ::= array_modifier
- //
- case 274: {
- action.consumeDirectDeclaratorArrayDeclarator(false);
- break;
- }
-
- //
- // Rule 275: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier
- //
- case 275: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 276: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier
- //
- case 276: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 277: function_direct_abstract_declarator ::= ( )
- //
- case 277: {
- action.consumeDirectDeclaratorFunctionDeclarator(false, false);
- break;
- }
-
- //
- // Rule 278: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( )
- //
- case 278: {
- action.consumeDirectDeclaratorFunctionDeclarator(true, false);
- break;
- }
-
- //
- // Rule 279: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_type_list )
- //
- case 279: {
- action.consumeDirectDeclaratorFunctionDeclarator(false, true);
- break;
- }
-
- //
- // Rule 280: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( <openscope-ast> parameter_type_list )
- //
- case 280: {
- action.consumeDirectDeclaratorFunctionDeclarator(true, true);
- break;
- }
-
- //
- // Rule 281: initializer ::= assignment_expression
- //
- case 281: {
- action.consumeInitializer();
- break;
- }
-
- //
- // Rule 282: initializer ::= initializer_list
- //
- case 282: {
- action.consumeInitializer();
- break;
- }
-
- //
- // Rule 283: initializer_list ::= start_initializer_list { <openscope-ast> initializer_seq comma_opt } end_initializer_list
- //
- case 283: {
- action.consumeInitializerList();
- break;
- }
-
- //
- // Rule 284: initializer_list ::= { <openscope-ast> }
- //
- case 284: {
- action.consumeInitializerList();
- break;
- }
-
- //
- // Rule 285: start_initializer_list ::= $Empty
- //
- case 285: {
- action.initializerListStart();
- break;
- }
-
- //
- // Rule 286: end_initializer_list ::= $Empty
- //
- case 286: {
- action.initializerListEnd();
- break;
- }
-
- //
- // Rule 291: designated_initializer ::= <openscope-ast> designation = initializer
- //
- case 291: {
- action.consumeInitializerDesignated();
- break;
- }
-
- //
- // Rule 295: designator_base ::= [ constant_expression ]
- //
- case 295: {
- action.consumeDesignatorArray();
- break;
- }
-
- //
- // Rule 296: designator_base ::= . identifier_token
- //
- case 296: {
- action.consumeDesignatorField();
- break;
- }
-
- //
- // Rule 297: designator ::= [ constant_expression ]
- //
- case 297: {
- action.consumeDesignatorArray();
- break;
- }
-
- //
- // Rule 298: designator ::= . identifier_token
- //
- case 298: {
- action.consumeDesignatorField();
- break;
- }
-
- //
- // Rule 299: translation_unit ::= external_declaration_list
- //
- case 299: {
- action.consumeTranslationUnit();
- break;
- }
-
- //
- // Rule 300: translation_unit ::= $Empty
- //
- case 300: {
- action.consumeTranslationUnit();
- break;
- }
-
- //
- // Rule 305: external_declaration ::= ;
- //
- case 305: {
- action.consumeDeclarationEmpty();
- break;
- }
-
- //
- // Rule 306: external_declaration ::= ERROR_TOKEN
- //
- case 306: {
- action.consumeDeclarationProblem();
- break;
- }
-
- //
- // Rule 310: function_definition ::= <openscope-ast> function_declarator function_body
- //
- case 310: {
- action.consumeFunctionDefinition(false);
- break;
- }
-
- //
- // Rule 311: function_definition ::= declaration_specifiers <openscope-ast> knr_function_declarator <openscope-ast> declaration_list compound_statement
- //
- case 311: {
- action.consumeFunctionDefinitionKnR();
- break;
- }
-
- //
- // Rule 312: normal_function_definition ::= declaration_specifiers <openscope-ast> function_declarator function_body
- //
- case 312: {
- action.consumeFunctionDefinition(true);
- break;
- }
-
- //
- // Rule 313: function_body ::= { }
- //
- case 313: {
- action.consumeStatementCompoundStatement(false);
- break;
- }
-
- //
- // Rule 314: function_body ::= { <openscope-ast> block_item_list }
- //
- case 314: {
- action.consumeStatementCompoundStatement(true);
- break;
- }
-
- //
- // Rule 316: no_cast_start ::= ERROR_TOKEN
- //
- case 316: {
- action.consumeEmpty();
- break;
- }
-
- default:
- break;
- }
- return;
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99NoCastExpressionParserprs.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99NoCastExpressionParserprs.java
deleted file mode 100644
index b87d0ab173b..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99NoCastExpressionParserprs.java
+++ /dev/null
@@ -1,700 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2015 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.dom.lrparser.c99;
-
-public class C99NoCastExpressionParserprs implements lpg.lpgjavaruntime.ParseTable, C99NoCastExpressionParsersym {
-
- public interface IsKeyword {
- public final static byte isKeyword[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0 };
- }
-
- public final static byte isKeyword[] = IsKeyword.isKeyword;
-
- public final boolean isKeyword(int index) {
- return isKeyword[index] != 0;
- }
-
- public interface BaseCheck {
- public final static short baseCheck[] = { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 4,
- 4, 3, 3, 2, 2, 4, 1, 0, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 1, 1, 3, 3, 3, 1, 3, 3, 1, 3, 3, 1, 3, 3, 3,
- 3, 1, 3, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 5, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 2, 1, 0, 1, 3,
- 1, 1, 1, 1, 1, 1, 1, 1, 3, 4, 3, 2, 4, 1, 2, 1, 1, 1, 2, 5, 7, 5, 1, 0, 7, 2, 5, 9, 8, 3, 2, 2, 2, 3, 2,
- 4, 2, 2, 2, 2, 2, 1, 1, 1, 1, 2, 1, 2, 2, 2, 1, 2, 2, 1, 2, 2, 1, 2, 2, 1, 2, 2, 1, 3, 1, 3, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 8, 0, 0, 1, 1, 3, 3, 3, 0, 1, 0, 1, 2, 4, 2, 1, 1,
- 1, 3, 1, 1, 2, 3, 7, 8, 0, 1, 0, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 3, 1, 2, 2, 1, 5, 3, 1,
- 3, 5, 1, 3, 1, 3, 2, 4, 3, 5, 4, 6, 6, 3, 5, 1, 3, 4, 5, 6, 0, 1, 2, 1, 3, 1, 1, 3, 2, 1, 1, 1, 1, 2, 1,
- 2, 3, 1, 1, 1, 3, 1, 2, 2, 2, 3, 4, 5, 1, 1, 7, 3, 0, 0, 1, 1, 3, 3, 4, 1, 1, 2, 3, 2, 3, 2, 1, 0, 1, 2,
- 1, 1, 1, 1, 1, 2, 1, 3, 6, 4, 2, 4, 1, 1, -32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -4, -156, -115, 0, -15, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -167, 0, -33, 0, -104, 0, 0, 0, 0, -78, 0, 0, -116, 0, -16, 0, -17, 0, 0, 0, 0, 0, 0, 0,
- -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -178, 0, -128, -76, 0, 0, -48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -34, 0, 0, 0, -18, 0, -42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6, 0, 0, 0, 0, 0, 0, 0, 0,
- -189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -19,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, 0, 0, -118, 0, -119, 0, 0, 0, -43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, 0, 0, 0, 0, 0, 0, 0, -127, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, -131, 0, -158, 0, -55, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -122, 0, 0, 0, 0, 0, 0, 0, 0, 0, -20, 0, -21, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -23, 0, -188, 0, -24, 0, 0, 0, 0, -72, 0, -12, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, 0, 0, 0, 0, -58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -60, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -84, 0, 0, 0, 0, 0, 0, 0, 0, 0, -61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -87, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -88, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -89, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -90, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -91, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -92, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -93, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -94, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -95, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -134, 0, 0, 0, 0, 0, 0, 0, 0, -186, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -96, 0, 0, 0, 0, 0, 0, 0, 0, -13, 0, 0, 0, 0, 0, 0, 0, -7, 0, 0, 0, 0, 0, 0, 0, -192,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -135, 0, 0,
- 0, 0, 0, 0, 0, 0, -155, -170, 0, -176, 0, 0, -97, 0, -8, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -130, 0, 0, 0, 0, 0, 0, -98,
- -180, -191, 0, 0, 0, 0, -73, -99, 0, -37, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, -145, 0, 0, -110, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -200, -193, -124, 0, -187, 0, 0, 0, 0, 0, -101, 0, -102, 0, -146, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -35, 0, -105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -184, -107, -83, 0, -29, 0,
- 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -164, 0, 0, 0, -137, -154, 0, -30, 0, -123, 0, 0, 0, -183, 0, 0, -67, 0, 0, 0, 0,
- -132, 0, -136, 0, -81, 0, 0, 0, -140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -38, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -205, 0, 0, 0, -153, 0, -157, -85, 0, 0, -151, 0, -171, -172, -175, 0, -199, 0, 0, -44, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 0, 0, 0, 0, 0, 0, 0, -166, 0, -45, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -46, 0, 0, 0, 0, 0, 0, 0, 0, 0, -47, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, -74, -86, -109, 0,
- -112, -139, -165, -204, 0, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -147, 0, 0, 0, 0, -144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173,
- 0, 0, -10, 0, 0, 0, 0, 0, 0, 0, -11, 0, 0, 0, 0, 0, 0, 0, -31, -39, 0, 0, 0, 0, 0, 0, 0, 0, -113, 0,
- -40, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, -126, -143, -162, 0, -41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -14, -129,
- -159, 0, 0, 0, 0, -28, -36, 0, 0, 0, 0, -179, 0, -160, -148, -190, 0, 0, 0, -185, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -196, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, -197, -80, 0, 0, 0, 0, 0, -106,
- -169, 0, 0, 0, 0, 0, 0, -82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -125, 0,
- 0, -152, -181, 0, 0, 0, 0, -182, 0, 0, 0, 0, 0, 0, -133, 0, 0, -168, 0, 0, 0, -203, -1, -114, -163, 0,
- 0, 0, 0, 0, -53, 0, 0, 0, 0, 0, 0, -150, -149, 0, -202, 0, 0, 0, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -161, -194, -195, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static short baseCheck[] = BaseCheck.baseCheck;
-
- @Override
- public final int baseCheck(int index) {
- return baseCheck[index];
- }
-
- public final static short rhs[] = baseCheck;
-
- @Override
- public final int rhs(int index) {
- return rhs[index];
- }
-
- public interface BaseAction {
- public final static char baseAction[] = { 87, 11, 102, 24, 24, 23, 23, 39, 39, 69, 69, 1, 1, 2, 2, 2, 2, 3, 3,
- 3, 4, 5, 5, 5, 5, 5, 5, 5, 5, 59, 59, 70, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 8, 8, 8, 8, 9, 9, 9, 10,
- 10, 10, 12, 12, 12, 12, 12, 13, 13, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 20, 20,
- 20, 20, 20, 20, 20, 20, 20, 20, 103, 45, 40, 88, 88, 72, 72, 47, 104, 104, 104, 104, 104, 104, 104, 105,
- 105, 105, 106, 106, 111, 111, 112, 112, 107, 107, 108, 108, 108, 114, 114, 109, 109, 109, 109, 109, 110,
- 110, 110, 110, 110, 113, 113, 25, 25, 25, 25, 25, 28, 28, 28, 78, 78, 73, 73, 73, 73, 74, 74, 74, 75,
- 75, 75, 76, 76, 76, 77, 77, 77, 115, 115, 116, 116, 117, 29, 31, 31, 31, 31, 31, 53, 54, 54, 54, 54, 54,
- 54, 54, 54, 54, 54, 54, 54, 63, 60, 60, 89, 90, 65, 65, 61, 61, 61, 66, 79, 79, 80, 80, 67, 67, 67, 49,
- 91, 91, 81, 82, 82, 82, 62, 62, 92, 83, 83, 84, 84, 68, 68, 21, 22, 22, 22, 30, 48, 48, 32, 32, 32, 32,
- 35, 35, 37, 33, 33, 34, 38, 38, 118, 118, 36, 119, 119, 93, 93, 26, 26, 26, 26, 26, 26, 26, 26, 26, 85,
- 50, 50, 50, 50, 27, 56, 56, 55, 55, 55, 57, 57, 51, 51, 94, 94, 71, 71, 58, 58, 58, 41, 41, 41, 42, 43,
- 43, 43, 44, 44, 44, 44, 64, 64, 46, 46, 52, 96, 95, 95, 95, 95, 86, 97, 98, 98, 99, 99, 100, 100, 120,
- 120, 121, 121, 122, 122, 122, 122, 124, 124, 123, 123, 123, 125, 126, 126, 87, 87, 1, 781, 17, 21, 18,
- 344, 739, 44, 388, 386, 524, 293, 468, 634, 632, 662, 650, 718, 666, 74, 91, 135, 213, 431, 236, 108,
- 991, 687, 137, 134, 136, 160, 275, 20, 17, 21, 18, 344, 739, 44, 388, 386, 524, 1154, 468, 634, 632,
- 662, 650, 718, 666, 74, 1427, 139, 166, 519, 239, 71, 31, 31, 143, 146, 149, 152, 199, 446, 1269, 71,
- 187, 246, 1229, 69, 340, 1425, 1579, 1592, 1597, 1611, 1213, 424, 20, 17, 21, 18, 344, 739, 44, 388,
- 386, 524, 341, 468, 634, 632, 662, 650, 718, 666, 74, 281, 335, 20, 17, 21, 18, 344, 739, 44, 388, 386,
- 524, 341, 468, 634, 632, 662, 650, 718, 666, 74, 281, 1356, 443, 293, 195, 282, 583, 25, 210, 104, 384,
- 1198, 482, 20, 17, 21, 18, 344, 43, 44, 388, 386, 524, 287, 468, 970, 282, 71, 31, 255, 213, 6, 1198,
- 482, 20, 17, 21, 18, 344, 43, 44, 388, 386, 844, 289, 288, 482, 20, 17, 21, 18, 344, 43, 40, 1076, 453,
- 20, 17, 21, 18, 344, 739, 44, 388, 386, 524, 290, 468, 634, 632, 662, 650, 718, 666, 74, 281, 482, 20,
- 17, 21, 18, 344, 739, 44, 388, 386, 524, 10, 468, 634, 632, 662, 650, 718, 666, 74, 91, 24, 342, 71,
- 186, 282, 281, 1279, 71, 188, 294, 1198, 482, 20, 17, 21, 18, 344, 43, 44, 388, 386, 865, 291, 540, 20,
- 17, 21, 18, 344, 739, 44, 388, 386, 524, 1634, 468, 634, 632, 662, 650, 718, 666, 74, 1531, 511, 20, 17,
- 21, 18, 344, 41, 340, 305, 20, 17, 21, 18, 344, 739, 44, 388, 386, 524, 429, 468, 634, 632, 662, 650,
- 718, 666, 74, 1532, 189, 179, 163, 240, 482, 20, 17, 21, 18, 344, 43, 44, 388, 386, 524, 31, 468, 634,
- 632, 662, 1180, 135, 213, 254, 213, 327, 396, 14, 137, 134, 136, 160, 482, 20, 17, 21, 18, 344, 739, 44,
- 388, 386, 524, 516, 468, 634, 632, 662, 650, 718, 666, 74, 92, 139, 166, 156, 536, 124, 1131, 243, 143,
- 146, 149, 152, 295, 446, 482, 20, 17, 21, 18, 344, 34, 1425, 1579, 1592, 1597, 1611, 1213, 482, 20, 17,
- 21, 18, 344, 739, 44, 388, 386, 524, 275, 468, 634, 632, 662, 650, 718, 666, 74, 85, 482, 20, 17, 21,
- 18, 344, 739, 44, 388, 386, 524, 172, 468, 634, 632, 662, 650, 718, 666, 74, 84, 482, 20, 17, 21, 18,
- 344, 739, 44, 388, 386, 524, 530, 468, 634, 632, 662, 650, 718, 666, 74, 83, 482, 20, 17, 21, 18, 344,
- 739, 44, 388, 386, 524, 283, 468, 634, 632, 662, 650, 718, 666, 74, 82, 482, 20, 17, 21, 18, 344, 739,
- 44, 388, 386, 524, 569, 468, 634, 632, 662, 650, 718, 666, 74, 81, 482, 20, 17, 21, 18, 344, 739, 44,
- 388, 386, 524, 151, 468, 634, 632, 662, 650, 718, 666, 74, 80, 482, 20, 17, 21, 18, 344, 739, 44, 388,
- 386, 524, 194, 468, 634, 632, 662, 650, 718, 666, 74, 79, 482, 20, 17, 21, 18, 344, 739, 44, 388, 386,
- 524, 30, 468, 634, 632, 662, 650, 718, 666, 74, 78, 482, 20, 17, 21, 18, 344, 739, 44, 388, 386, 524,
- 441, 468, 634, 632, 662, 650, 718, 666, 74, 77, 482, 20, 17, 21, 18, 344, 739, 44, 388, 386, 524, 470,
- 468, 634, 632, 662, 650, 718, 666, 74, 76, 482, 20, 17, 21, 18, 344, 739, 44, 388, 386, 524, 500, 468,
- 634, 632, 662, 650, 718, 666, 74, 75, 482, 20, 17, 21, 18, 344, 739, 44, 388, 386, 524, 313, 468, 634,
- 632, 662, 650, 718, 666, 74, 73, 482, 20, 17, 21, 18, 344, 739, 44, 388, 386, 524, 343, 468, 634, 632,
- 662, 650, 718, 666, 74, 1548, 482, 20, 17, 21, 18, 344, 739, 44, 388, 386, 524, 44, 468, 634, 632, 662,
- 650, 718, 666, 74, 1561, 482, 20, 17, 21, 18, 344, 43, 44, 388, 386, 524, 119, 468, 634, 632, 662, 650,
- 718, 666, 93, 482, 20, 17, 21, 18, 344, 43, 44, 388, 386, 524, 110, 468, 634, 632, 662, 650, 718, 666,
- 93, 482, 20, 17, 21, 18, 344, 33, 1563, 482, 20, 17, 21, 18, 344, 43, 39, 482, 20, 17, 21, 18, 344, 43,
- 44, 388, 386, 524, 212, 468, 634, 632, 662, 650, 718, 666, 93, 482, 20, 17, 21, 18, 344, 43, 44, 388,
- 386, 524, 31, 468, 634, 632, 662, 650, 718, 666, 93, 657, 683, 1637, 71, 296, 1352, 157, 1657, 482, 20,
- 17, 21, 18, 344, 43, 38, 482, 20, 17, 21, 18, 344, 43, 44, 388, 386, 524, 202, 468, 634, 632, 662, 650,
- 718, 666, 93, 482, 20, 17, 21, 18, 344, 43, 44, 388, 386, 524, 611, 468, 634, 632, 662, 650, 1178, 344,
- 436, 71, 298, 1562, 1489, 1567, 50, 619, 203, 482, 20, 17, 21, 18, 344, 43, 44, 802, 274, 562, 699, 255,
- 213, 163, 218, 1182, 221, 1462, 223, 224, 229, 1533, 276, 267, 1137, 671, 272, 557, 465, 97, 263, 71,
- 1354, 277, 254, 213, 274, 487, 1691, 520, 264, 656, 218, 1182, 221, 1462, 223, 224, 229, 255, 213, 267,
- 1137, 671, 272, 352, 1285, 641, 1712, 218, 1182, 221, 1462, 223, 224, 229, 513, 228, 1429, 445, 683,
- 549, 189, 179, 292, 1712, 261, 482, 20, 17, 21, 18, 344, 43, 44, 388, 386, 524, 490, 468, 634, 632,
- 1130, 135, 213, 89, 97, 1530, 586, 210, 138, 134, 136, 160, 482, 20, 17, 21, 18, 344, 43, 44, 388, 386,
- 524, 705, 468, 634, 1138, 31, 501, 1354, 292, 1212, 640, 140, 166, 284, 259, 1676, 1261, 292, 144, 147,
- 150, 153, 626, 446, 662, 1691, 458, 274, 1265, 1349, 377, 19, 1603, 219, 1182, 221, 1462, 223, 224, 229,
- 1680, 609, 269, 1137, 671, 272, 218, 1182, 221, 1462, 223, 224, 229, 482, 20, 17, 21, 18, 344, 43, 44,
- 823, 1358, 482, 20, 17, 21, 18, 344, 43, 44, 388, 386, 524, 209, 1011, 482, 20, 17, 21, 18, 344, 43, 44,
- 388, 386, 524, 259, 1082, 1077, 1355, 31, 541, 394, 292, 198, 200, 684, 1691, 582, 688, 661, 1604, 623,
- 1559, 1596, 482, 20, 17, 21, 18, 344, 43, 44, 388, 386, 886, 23, 539, 218, 1182, 221, 1462, 223, 224,
- 229, 482, 20, 17, 21, 18, 344, 43, 37, 490, 1358, 482, 20, 17, 21, 18, 344, 43, 44, 388, 386, 907, 482,
- 20, 17, 21, 18, 344, 43, 44, 388, 928, 482, 20, 17, 21, 18, 344, 43, 44, 388, 949, 253, 199, 200, 232,
- 153, 153, 180, 292, 97, 31, 241, 1518, 365, 20, 17, 21, 18, 344, 43, 36, 1643, 1757, 1757, 277, 135,
- 213, 274, 595, 22, 241, 273, 142, 134, 136, 160, 1348, 246, 1757, 1757, 1757, 570, 267, 1137, 671, 272,
- 365, 20, 17, 21, 18, 344, 43, 36, 1757, 1265, 1757, 141, 166, 1429, 219, 1182, 221, 1462, 223, 224, 229,
- 227, 490, 1757, 247, 482, 20, 17, 21, 18, 344, 43, 36, 482, 20, 17, 21, 18, 344, 43, 35, 116, 482, 20,
- 17, 21, 18, 344, 43, 47, 1757, 413, 1237, 482, 20, 17, 21, 18, 344, 43, 46, 664, 607, 374, 153, 153,
- 413, 274, 482, 20, 17, 21, 18, 344, 43, 45, 1123, 607, 1212, 31, 292, 153, 267, 1137, 671, 272, 31, 31,
- 243, 242, 317, 1123, 163, 1212, 153, 97, 153, 317, 513, 266, 490, 1603, 259, 279, 197, 244, 1547, 1757,
- 1277, 28, 490, 197, 610, 254, 213, 1198, 1256, 259, 245, 87, 295, 1547, 1212, 1277, 1263, 631, 87, 87,
- 1508, 494, 652, 1263, 1426, 135, 213, 1508, 711, 501, 1354, 204, 145, 134, 136, 160, 673, 1256, 135,
- 213, 1169, 181, 1215, 135, 213, 148, 134, 136, 160, 1272, 151, 134, 136, 160, 274, 1265, 1757, 135, 213,
- 163, 1757, 1757, 48, 545, 154, 134, 136, 160, 142, 269, 1137, 671, 272, 607, 607, 614, 1757, 1757, 95,
- 607, 254, 213, 153, 395, 403, 403, 607, 197, 1123, 607, 194, 31, 1757, 197, 513, 1650, 1638, 209, 292,
- 645, 1123, 490, 513, 197, 1757, 634, 297, 278, 231, 1757, 607, 372, 1211, 1355, 259, 445, 97, 372, 1713,
- 1757, 1277, 280, 1757, 87, 1123, 1757, 259, 372, 315, 192, 1673, 87, 1277, 1757, 1757, 192, 1150, 292,
- 292, 342, 205, 1389, 1653, 1212, 938, 193, 1757, 1577, 1653, 1757, 260, 28, 1757, 1757, 1757, 1757,
- 1714, 1198, 1757, 1757, 225, 230, 234, 1757, 1757, 1757, 1449, 1757, 1757, 1757, 328, 1757, 0, 20, 179,
- 0, 1, 1983, 0, 1, 1994, 0 };
- }
-
- public final static char baseAction[] = BaseAction.baseAction;
-
- @Override
- public final int baseAction(int index) {
- return baseAction[index];
- }
-
- public final static char lhs[] = baseAction;
-
- @Override
- public final int lhs(int index) {
- return lhs[index];
- }
-
- public interface TermCheck {
- public final static byte termCheck[] = { 0, 0, 1, 2, 3, 4, 0, 6, 7, 8, 0, 10, 11, 12, 0, 14, 15, 16, 17, 18, 19,
- 20, 21, 22, 23, 24, 25, 26, 27, 28, 0, 0, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 0, 44, 45, 46,
- 0, 1, 0, 3, 2, 5, 6, 7, 8, 47, 48, 9, 12, 55, 56, 57, 58, 17, 18, 19, 20, 0, 22, 0, 1, 4, 3, 61, 62, 47,
- 48, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 0, 1, 0, 3, 51, 5, 6, 7, 8, 0, 61,
- 62, 12, 0, 1, 0, 3, 17, 18, 19, 20, 0, 22, 2, 0, 4, 13, 53, 54, 0, 9, 31, 32, 33, 34, 35, 36, 37, 38,
- 39, 40, 41, 42, 43, 44, 45, 46, 0, 1, 0, 3, 51, 5, 6, 7, 8, 0, 0, 0, 12, 4, 0, 0, 5, 17, 18, 19, 20, 0,
- 22, 55, 56, 57, 58, 6, 7, 8, 0, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 0, 1, 0,
- 3, 51, 0, 6, 7, 8, 4, 0, 1, 12, 3, 50, 53, 54, 17, 18, 19, 20, 0, 22, 55, 56, 57, 58, 6, 7, 8, 63, 31,
- 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 0, 44, 45, 46, 0, 65, 6, 7, 8, 0, 1, 0, 12, 9, 0, 53, 54,
- 17, 18, 19, 20, 0, 22, 2, 10, 11, 5, 0, 1, 2, 9, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 0, 1,
- 2, 3, 4, 5, 0, 1, 30, 3, 10, 11, 12, 52, 14, 15, 16, 0, 0, 13, 0, 21, 5, 23, 24, 25, 26, 27, 28, 9, 0,
- 1, 2, 3, 4, 5, 68, 69, 0, 0, 10, 11, 12, 59, 14, 15, 16, 30, 10, 11, 50, 21, 0, 23, 24, 25, 26, 27, 28,
- 0, 0, 1, 2, 3, 4, 5, 14, 0, 0, 0, 10, 11, 5, 13, 14, 15, 16, 0, 10, 11, 50, 21, 5, 23, 24, 25, 26, 27,
- 28, 0, 0, 1, 2, 3, 4, 5, 29, 30, 80, 0, 10, 11, 0, 43, 14, 15, 16, 30, 6, 7, 8, 21, 13, 23, 24, 25, 26,
- 27, 28, 0, 0, 1, 2, 3, 4, 6, 7, 8, 0, 0, 10, 11, 63, 5, 14, 15, 16, 0, 0, 0, 50, 21, 4, 23, 24, 25, 26,
- 27, 28, 0, 1, 2, 3, 4, 0, 1, 0, 3, 30, 10, 11, 0, 13, 14, 15, 16, 0, 6, 7, 8, 21, 51, 23, 24, 25, 26,
- 27, 28, 0, 1, 2, 3, 4, 0, 1, 29, 3, 49, 10, 11, 0, 13, 14, 15, 16, 0, 6, 7, 8, 21, 0, 23, 24, 25, 26,
- 27, 28, 0, 1, 2, 3, 4, 0, 47, 48, 0, 0, 10, 11, 0, 5, 14, 15, 16, 5, 0, 0, 1, 21, 3, 23, 24, 25, 26, 27,
- 28, 0, 1, 2, 3, 4, 0, 47, 48, 0, 0, 10, 11, 29, 5, 14, 15, 16, 0, 1, 0, 3, 21, 43, 23, 24, 25, 26, 27,
- 28, 0, 1, 2, 3, 4, 0, 1, 47, 48, 0, 10, 11, 65, 4, 14, 15, 16, 0, 1, 2, 66, 21, 0, 23, 24, 25, 26, 27,
- 28, 0, 0, 2, 2, 4, 5, 6, 7, 8, 9, 9, 64, 12, 0, 0, 64, 66, 17, 18, 19, 20, 60, 22, 9, 0, 49, 0, 1, 2, 5,
- 30, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 0, 0, 1, 2, 0, 4, 6, 7, 8, 0, 9, 59, 12, 0, 0, 0, 0, 17, 18,
- 19, 20, 0, 22, 14, 0, 52, 43, 6, 7, 8, 0, 0, 60, 12, 4, 0, 0, 13, 17, 18, 19, 20, 0, 22, 13, 29, 0, 0,
- 6, 7, 8, 0, 0, 49, 12, 9, 0, 0, 0, 17, 18, 19, 20, 0, 22, 13, 0, 0, 0, 6, 7, 8, 59, 0, 0, 12, 29, 0, 0,
- 2, 17, 18, 19, 20, 49, 22, 9, 13, 0, 0, 1, 2, 15, 16, 5, 0, 1, 2, 9, 4, 0, 0, 29, 2, 9, 4, 0, 29, 0, 0,
- 9, 60, 0, 13, 0, 0, 0, 0, 0, 30, 0, 13, 13, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static byte termCheck[] = TermCheck.termCheck;
-
- @Override
- public final int termCheck(int index) {
- return termCheck[index];
- }
-
- public interface TermAction {
- public final static char termAction[] = { 0, 1757, 1768, 1546, 1769, 1492, 59, 1971, 1972, 1973, 54, 1381, 1084,
- 1920, 62, 1500, 1020, 673, 1921, 1919, 1974, 1922, 578, 1918, 1770, 1771, 1772, 1773, 1028, 483, 58, 1,
- 1925, 1930, 1929, 1927, 1928, 1926, 1931, 1932, 1924, 1933, 1934, 1935, 63, 1281, 597, 381, 1757, 1,
- 270, 1, 1659, 191, 1, 1, 1, 1402, 1412, 349, 1, 1391, 1361, 545, 470, 1, 1, 1, 1, 48, 1, 1757, 1768,
- 1535, 1769, 1331, 1318, 1402, 1412, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 191, 1, 1, 1, 1757, 1, 253, 1,
- 1953, 190, 1, 1, 1, 182, 1331, 1318, 1, 1757, 1768, 61, 1769, 1, 1, 1, 1, 265, 1, 1422, 183, 1, 1067,
- 1520, 1509, 286, 349, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 190, 1, 1, 1, 1757, 1, 1757, 1, 1953, 191, 1,
- 1, 1, 50, 1757, 1757, 1, 1535, 66, 60, 1761, 1, 1, 1, 1, 1757, 1, 1391, 1361, 545, 470, 1971, 1972,
- 1973, 70, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 191, 1, 1, 1, 1757, 1768, 1757, 1769, 1953, 49, 1971,
- 1972, 1973, 1535, 185, 2783, 1920, 2783, 1760, 1520, 1509, 1921, 1919, 1974, 1922, 248, 1918, 1391,
- 1361, 545, 470, 1971, 1972, 1973, 1245, 1925, 1930, 1929, 1927, 1928, 1926, 1931, 1932, 1924, 1933,
- 1934, 1935, 129, 1281, 597, 381, 1757, 611, 1971, 1972, 1973, 1757, 1995, 72, 1920, 980, 51, 1520, 1509,
- 1921, 1919, 1974, 1922, 1, 1918, 1422, 1308, 1140, 1763, 1, 1983, 1168, 349, 1925, 1930, 1929, 1927,
- 1928, 1926, 1931, 1932, 1924, 1933, 1934, 1935, 1, 1768, 1546, 1769, 1434, 1761, 1757, 1768, 1762, 1769,
- 1381, 1084, 557, 1079, 1500, 1020, 673, 1757, 1757, 1260, 271, 578, 1763, 1770, 1771, 1772, 1773, 1028,
- 483, 349, 1757, 1768, 1546, 1769, 1467, 1761, 1112, 1666, 53, 1757, 1381, 1084, 959, 1056, 1500, 1020,
- 673, 1762, 1308, 1140, 1760, 578, 64, 1770, 1771, 1772, 1773, 1028, 483, 1757, 1, 1768, 1546, 1769,
- 1492, 29, 449, 1757, 52, 67, 1381, 1084, 1763, 2666, 1500, 1020, 673, 1, 1308, 1140, 1760, 578, 90,
- 1770, 1771, 1772, 1773, 1028, 483, 1757, 1757, 1768, 1546, 1769, 1492, 1761, 1432, 1762, 1747, 1757,
- 1381, 1084, 249, 29, 1500, 1020, 673, 90, 1, 1, 1, 578, 2666, 1770, 1771, 1772, 1773, 1028, 483, 250,
- 1757, 1, 1, 1, 1, 1, 1, 1, 1, 1757, 1, 1, 1245, 1763, 1, 1, 1, 1757, 1, 1757, 1760, 1, 253, 1, 1, 1, 1,
- 1, 1, 1, 1768, 1546, 1769, 1492, 184, 2791, 88, 2791, 1762, 1381, 1084, 251, 2666, 1500, 1020, 673, 57,
- 1971, 1972, 1973, 578, 2073, 1770, 1771, 1772, 1773, 1028, 483, 1757, 1768, 1546, 1769, 1492, 206, 2792,
- 639, 2792, 2015, 1381, 1084, 252, 2666, 1500, 1020, 673, 56, 1971, 1972, 1973, 578, 1757, 1770, 1771,
- 1772, 1773, 1028, 483, 1757, 1768, 1546, 1769, 1492, 71, 1402, 1412, 1757, 1757, 1381, 1084, 1757, 1765,
- 1500, 1020, 673, 1767, 55, 208, 1768, 578, 1769, 1770, 1771, 1772, 1773, 1028, 483, 1757, 1768, 1553,
- 1769, 1492, 68, 1402, 1412, 1, 69, 1381, 1084, 1342, 1767, 1500, 1020, 673, 207, 1172, 43, 1172, 578,
- 1764, 1770, 1771, 1772, 1773, 1028, 483, 1, 1768, 1546, 1769, 1492, 1, 1754, 1402, 1412, 1757, 1381,
- 1084, 611, 1170, 1500, 1020, 673, 1, 1983, 1168, 1766, 578, 1757, 1770, 1771, 1772, 1773, 1028, 483, 20,
- 222, 1748, 1660, 1748, 1748, 179, 179, 179, 1748, 349, 1218, 179, 211, 292, 1218, 1766, 179, 179, 179,
- 179, 896, 179, 1036, 285, 2015, 253, 1983, 1168, 376, 1748, 875, 854, 833, 812, 791, 749, 770, 728, 707,
- 686, 130, 262, 1983, 1151, 1, 1, 1971, 1972, 1973, 65, 349, 917, 1920, 201, 1757, 1757, 256, 1921, 1919,
- 1974, 1922, 131, 1918, 449, 42, 1132, 376, 1971, 1972, 1973, 1757, 1757, 1000, 1920, 1430, 1, 1757,
- 2666, 1921, 1919, 1974, 1922, 132, 1918, 622, 1674, 220, 30, 1971, 1972, 1973, 1757, 1757, 2015, 1920,
- 349, 1757, 1757, 1757, 1921, 1919, 1974, 1922, 133, 1918, 1346, 1757, 1757, 1757, 1971, 1972, 1973,
- 1092, 30, 1757, 1920, 417, 32, 207, 1196, 1921, 1919, 1974, 1922, 2014, 1918, 1554, 1431, 1757, 1, 1751,
- 1151, 1783, 1784, 1763, 268, 1983, 1151, 349, 253, 189, 268, 1786, 1422, 349, 253, 1757, 2601, 189, 189,
- 349, 492, 1757, 185, 1757, 1757, 1757, 1757, 1757, 1762, 1757, 184, 206, 1757, 1757, 1757, 1757, 1757,
- 1757, 464, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 374 };
- }
-
- public final static char termAction[] = TermAction.termAction;
-
- @Override
- public final int termAction(int index) {
- return termAction[index];
- }
-
- public interface Asb {
- public final static char asb[] = { 0, 375, 1, 54, 41, 54, 54, 54, 54, 54, 54, 54, 54, 54, 334, 3, 23, 20, 27,
- 25, 33, 31, 35, 34, 37, 36, 9, 54, 334, 170, 170, 291, 334, 263, 263, 203, 54, 54, 54, 54, 54, 54, 54,
- 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 170, 98,
- 295, 48, 233, 168, 167, 266, 278, 96, 278, 96, 96, 278, 96, 278, 348, 124, 170, 45, 20, 20, 25, 25, 25,
- 25, 23, 23, 31, 27, 27, 34, 33, 303, 36, 35, 393, 200, 98, 291, 295, 104, 45, 371, 52, 170, 305, 236,
- 96, 263, 263, 96, 263, 54, 200, 80, 295, 286, 371, 45, 51, 48, 170, 289, 348, 169, 238, 98, 173, 98,
- 222, 80, 286, 286, 54, 54, 45, 52, 233, 298, 297, 295, 238, 170, 98, 173, 222, 222, 224, 101, 286, 371,
- 45, 45, 170, 305, 236, 289, 173, 200, 71, 173, 222, 224, 228, 224, 200, 78, 231, 263, 54, 100, 371, 286,
- 238, 173, 73, 224, 200, 54, 263, 3, 82, 45, 263, 54, 286, 170, 169, 200, 429, 54, 428, 67, 295, 200, 45,
- 264, 73, 54, 67 };
- }
-
- public final static char asb[] = Asb.asb;
-
- @Override
- public final int asb(int index) {
- return asb[index];
- }
-
- public interface Asr {
- public final static byte asr[] = { 0, 80, 0, 9, 2, 52, 67, 15, 16, 60, 70, 71, 72, 73, 74, 76, 75, 77, 78, 79,
- 4, 53, 54, 10, 11, 48, 47, 55, 56, 57, 58, 61, 62, 14, 63, 64, 65, 43, 66, 68, 69, 59, 30, 80, 29, 50,
- 5, 0, 6, 7, 8, 12, 50, 5, 23, 24, 25, 26, 3, 15, 16, 14, 10, 11, 27, 28, 21, 4, 2, 1, 0, 66, 5, 4, 1, 2,
- 59, 0, 5, 43, 9, 52, 15, 16, 14, 4, 10, 11, 27, 28, 21, 2, 23, 24, 25, 26, 1, 3, 13, 0, 60, 9, 52, 0, 6,
- 7, 8, 2, 23, 24, 25, 26, 1, 3, 15, 16, 14, 4, 10, 11, 27, 28, 21, 0, 7, 12, 22, 8, 20, 19, 18, 6, 17,
- 52, 67, 15, 16, 14, 10, 11, 53, 54, 47, 48, 55, 56, 57, 58, 61, 62, 63, 64, 65, 68, 69, 60, 70, 71, 72,
- 73, 74, 75, 76, 77, 78, 79, 4, 2, 9, 29, 30, 5, 0, 17, 31, 6, 32, 44, 18, 33, 19, 34, 35, 20, 7, 36, 37,
- 12, 45, 22, 46, 38, 39, 8, 40, 41, 42, 1, 3, 51, 5, 43, 0, 5, 30, 21, 23, 24, 25, 26, 1, 3, 2, 15, 16,
- 14, 4, 10, 11, 27, 28, 0, 1, 3, 5, 43, 29, 0, 5, 29, 43, 60, 0, 4, 2, 9, 30, 5, 17, 31, 6, 32, 44, 18,
- 33, 19, 34, 35, 20, 7, 36, 37, 12, 45, 22, 46, 38, 39, 8, 40, 41, 42, 49, 3, 1, 0, 39, 31, 36, 34, 35,
- 33, 32, 37, 38, 40, 41, 42, 59, 66, 22, 18, 12, 17, 20, 19, 6, 7, 8, 29, 1, 5, 30, 2, 9, 4, 0, 2, 5, 29,
- 30, 66, 9, 59, 0, 4, 17, 31, 6, 32, 44, 18, 33, 19, 34, 35, 20, 7, 36, 37, 12, 45, 22, 46, 38, 39, 8,
- 40, 41, 42, 1, 3, 49, 0, 21, 23, 24, 25, 26, 2, 15, 16, 14, 4, 10, 11, 27, 28, 1, 3, 44, 45, 46, 39, 31,
- 36, 34, 35, 33, 32, 37, 38, 40, 41, 42, 22, 18, 12, 17, 20, 19, 6, 7, 8, 0, 21, 23, 24, 25, 26, 1, 3, 2,
- 15, 16, 14, 4, 10, 11, 27, 28, 51, 0, 14, 4, 10, 11, 53, 54, 47, 48, 55, 56, 57, 58, 61, 62, 63, 64, 65,
- 68, 69, 60, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 50, 30, 43, 80, 13, 59, 66, 5, 29, 0 };
- }
-
- public final static byte asr[] = Asr.asr;
-
- @Override
- public final int asr(int index) {
- return asr[index];
- }
-
- public interface Nasb {
- public final static byte nasb[] = { 0, 117, 41, 23, 41, 23, 23, 23, 23, 23, 23, 23, 23, 23, 97, 41, 41, 41, 41,
- 41, 41, 41, 41, 41, 41, 41, 41, 23, 97, 121, 121, 85, 1, 18, 18, 59, 98, 23, 23, 23, 23, 23, 23, 23, 23,
- 23, 23, 23, 23, 23, 23, 23, 23, 98, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 121, 94, 72, 11,
- 84, 44, 44, 67, 68, 29, 68, 82, 82, 68, 81, 68, 62, 41, 121, 13, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
- 41, 41, 41, 41, 41, 41, 94, 55, 41, 101, 41, 31, 13, 57, 12, 121, 89, 120, 7, 7, 7, 7, 7, 23, 70, 55,
- 41, 79, 57, 13, 12, 27, 121, 51, 34, 41, 91, 46, 55, 41, 55, 21, 79, 55, 23, 23, 13, 12, 50, 44, 44, 72,
- 91, 121, 41, 105, 55, 7, 48, 9, 55, 57, 13, 13, 121, 89, 120, 75, 55, 70, 15, 113, 7, 48, 41, 41, 70,
- 20, 41, 7, 23, 25, 57, 27, 109, 105, 53, 48, 70, 23, 7, 42, 22, 13, 7, 23, 27, 121, 121, 70, 16, 23, 41,
- 53, 72, 70, 13, 41, 53, 23, 77 };
- }
-
- public final static byte nasb[] = Nasb.nasb;
-
- @Override
- public final int nasb(int index) {
- return nasb[index];
- }
-
- public interface Nasr {
- public final static char nasr[] = { 0, 78, 76, 75, 65, 74, 73, 1, 0, 98, 0, 11, 5, 24, 0, 11, 69, 0, 70, 0, 86,
- 11, 52, 5, 0, 100, 0, 21, 0, 89, 0, 5, 11, 0, 78, 77, 76, 75, 65, 74, 73, 0, 96, 0, 26, 0, 90, 0, 59, 0,
- 23, 43, 42, 35, 33, 11, 0, 56, 0, 11, 88, 0, 65, 60, 61, 62, 63, 53, 28, 0, 39, 0, 27, 50, 0, 43, 42,
- 35, 33, 27, 0, 92, 66, 0, 23, 42, 43, 11, 0, 27, 50, 11, 25, 0, 52, 46, 0, 49, 11, 45, 0, 43, 42, 27, 0,
- 80, 11, 49, 0, 93, 11, 25, 0, 11, 49, 67, 0, 11, 87, 0, 11, 23, 0 };
- }
-
- public final static char nasr[] = Nasr.nasr;
-
- @Override
- public final int nasr(int index) {
- return nasr[index];
- }
-
- public interface TerminalIndex {
- public final static char terminalIndex[] = { 0, 85, 2, 86, 9, 87, 48, 64, 76, 1, 10, 11, 69, 3, 8, 6, 7, 44, 55,
- 60, 63, 68, 72, 81, 82, 83, 84, 12, 13, 42, 90, 47, 52, 56, 61, 62, 66, 67, 74, 75, 78, 79, 80, 91, 54,
- 70, 73, 16, 17, 30, 89, 93, 4, 14, 15, 18, 19, 20, 21, 29, 31, 22, 23, 24, 25, 26, 92, 5, 27, 28, 32,
- 33, 34, 35, 36, 37, 38, 39, 40, 41, 94, 45, 46, 49, 50, 51, 53, 57, 58, 59, 65, 71, 77, 88 };
- }
-
- public final static char terminalIndex[] = TerminalIndex.terminalIndex;
-
- @Override
- public final int terminalIndex(int index) {
- return terminalIndex[index];
- }
-
- public interface NonterminalIndex {
- public final static char nonterminalIndex[] = { 0, 100, 0, 0, 0, 102, 106, 107, 108, 109, 110, 0, 111, 112, 113,
- 114, 115, 116, 117, 0, 118, 128, 0, 97, 96, 121, 149, 0, 127, 0, 0, 0, 145, 147, 0, 148, 0, 0, 0, 98, 0,
- 158, 159, 160, 0, 101, 105, 120, 136, 140, 146, 155, 0, 130, 0, 150, 153, 154, 157, 0, 131, 132, 133,
- 134, 135, 137, 0, 139, 144, 99, 103, 104, 119, 122, 123, 124, 125, 126, 129, 0, 138, 142, 0, 0, 143,
- 152, 162, 95, 0, 0, 0, 141, 0, 151, 156, 161, 0, 163, 164, 0, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static char nonterminalIndex[] = NonterminalIndex.nonterminalIndex;
-
- @Override
- public final int nonterminalIndex(int index) {
- return nonterminalIndex[index];
- }
-
- public interface ScopePrefix {
- public final static char scopePrefix[] = { 82, 113, 92, 35, 41, 121, 12, 136, 21, 51, 69, 28, 47, 103, 152, 162,
- 166, 145, 1, 1, 32, 56, 79, 170, 6, 107, 156, 127, 99, 59, 59, 59 };
- }
-
- public final static char scopePrefix[] = ScopePrefix.scopePrefix;
-
- @Override
- public final int scopePrefix(int index) {
- return scopePrefix[index];
- }
-
- public interface ScopeSuffix {
- public final static char scopeSuffix[] = { 90, 90, 90, 4, 4, 90, 18, 142, 26, 4, 26, 26, 4, 101, 26, 26, 4, 149,
- 4, 4, 26, 4, 26, 26, 9, 110, 159, 130, 101, 66, 61, 74 };
- }
-
- public final static char scopeSuffix[] = ScopeSuffix.scopeSuffix;
-
- @Override
- public final int scopeSuffix(int index) {
- return scopeSuffix[index];
- }
-
- public interface ScopeLhs {
- public final static char scopeLhs[] = { 62, 60, 62, 26, 26, 60, 46, 108, 44, 26, 38, 44, 26, 67, 6, 5, 5, 19,
- 100, 99, 42, 26, 35, 3, 86, 67, 5, 109, 67, 38, 36, 38 };
- }
-
- public final static char scopeLhs[] = ScopeLhs.scopeLhs;
-
- @Override
- public final int scopeLhs(int index) {
- return scopeLhs[index];
- }
-
- public interface ScopeLa {
- public final static byte scopeLa[] = { 43, 43, 43, 50, 50, 43, 43, 86, 30, 50, 30, 30, 50, 66, 30, 30, 50, 59,
- 50, 50, 30, 50, 30, 30, 60, 1, 30, 92, 66, 2, 2, 2 };
- }
-
- public final static byte scopeLa[] = ScopeLa.scopeLa;
-
- @Override
- public final int scopeLa(int index) {
- return scopeLa[index];
- }
-
- public interface ScopeStateSet {
- public final static byte scopeStateSet[] = { 23, 23, 23, 27, 27, 23, 17, -1, 31, 27, 9, 31, 27, 5, 38, 38, 38,
- 67, 1, 3, 31, 27, 9, 38, 93, 5, 38, -1, 5, 9, 9, 9 };
- }
-
- public final static byte scopeStateSet[] = ScopeStateSet.scopeStateSet;
-
- @Override
- public final int scopeStateSet(int index) {
- return scopeStateSet[index];
- }
-
- public interface ScopeRhs {
- public final static char scopeRhs[] = { 0, 140, 9, 0, 96, 0, 190, 104, 0, 31, 135, 0, 152, 188, 104, 13, 145, 0,
- 98, 0, 0, 148, 104, 2, 135, 0, 97, 0, 148, 104, 2, 0, 151, 2, 0, 113, 12, 178, 104, 9, 0, 113, 178, 104,
- 12, 9, 0, 113, 12, 9, 0, 113, 178, 104, 9, 0, 113, 9, 0, 128, 0, 2, 0, 151, 97, 0, 2, 97, 0, 148, 104,
- 2, 128, 0, 2, 0, 150, 97, 0, 141, 2, 0, 152, 176, 104, 13, 94, 185, 44, 0, 98, 0, 152, 176, 104, 13,
- 185, 44, 0, 142, 0, 99, 0, 184, 104, 142, 0, 104, 142, 0, 141, 99, 0, 172, 104, 13, 183, 94, 182, 158,
- 0, 172, 104, 13, 182, 158, 0, 197, 85, 0, 77, 2, 101, 97, 99, 0, 197, 116, 138, 2, 89, 0, 53, 0, 0, 138,
- 69, 111, 0, 29, 118, 0, 164, 2, 21, 0, 164, 2, 0, 97, 105, 0, 181, 2, 98, 0, 138, 9, 98, 0, 138, 2, 0 };
- }
-
- public final static char scopeRhs[] = ScopeRhs.scopeRhs;
-
- @Override
- public final int scopeRhs(int index) {
- return scopeRhs[index];
- }
-
- public interface ScopeState {
- public final static char scopeState[] = { 0, 443, 0, 341, 0, 1643, 1653, 1637, 0, 1449, 1342, 1168, 1269, 1256,
- 1151, 1123, 0, 492, 417, 396, 1680, 1530, 0, 607, 1213, 317, 0, 1462, 1182, 1137, 671, 1256, 1151, 1123,
- 1603, 1422, 1508, 0, 1467, 1434, 611, 1112, 1245, 1218, 1331, 1318, 449, 1412, 1402, 1391, 1361, 545,
- 470, 1535, 1520, 1509, 1308, 1140, 1020, 673, 1500, 1492, 1381, 1084, 1028, 483, 578, 1092, 1056, 1036,
- 492, 1000, 980, 959, 938, 586, 917, 557, 349, 896, 875, 854, 833, 812, 791, 770, 749, 728, 707, 686,
- 317, 639, 513, 417, 396, 0 };
- }
-
- public final static char scopeState[] = ScopeState.scopeState;
-
- @Override
- public final int scopeState(int index) {
- return scopeState[index];
- }
-
- public interface InSymb {
- public final static char inSymb[] = { 0, 0, 180, 104, 165, 21, 28, 27, 11, 10, 4, 14, 16, 15, 2, 98, 102, 101,
- 105, 103, 107, 106, 109, 108, 111, 110, 99, 29, 2, 164, 138, 142, 104, 67, 52, 2, 9, 11, 10, 54, 53, 4,
- 58, 57, 56, 55, 47, 48, 14, 62, 61, 64, 63, 69, 68, 65, 79, 78, 77, 75, 76, 74, 73, 72, 71, 70, 60, 164,
- 116, 104, 9, 2, 136, 135, 166, 167, 158, 168, 46, 45, 169, 44, 170, 171, 94, 181, 138, 101, 101, 103,
- 103, 103, 103, 102, 102, 106, 105, 105, 108, 107, 138, 110, 109, 116, 13, 145, 143, 120, 12, 113, 104,
- 4, 151, 104, 2, 182, 159, 159, 185, 159, 59, 104, 13, 120, 4, 104, 113, 178, 149, 148, 118, 104, 150,
- 104, 94, 13, 94, 13, 104, 4, 120, 178, 12, 113, 4, 2, 126, 128, 104, 29, 148, 183, 104, 13, 104, 188,
- 104, 120, 104, 113, 113, 141, 104, 2, 143, 13, 172, 142, 173, 104, 176, 94, 177, 152, 29, 190, 52, 9,
- 191, 104, 149, 104, 104, 104, 176, 152, 60, 29, 132, 60, 140, 52, 9, 149, 148, 186, 172, 184, 59, 141,
- 2, 104, 152, 140, 29, 29, 59, 143 };
- }
-
- public final static char inSymb[] = InSymb.inSymb;
-
- @Override
- public final int inSymb(int index) {
- return inSymb[index];
- }
-
- public interface Name {
- public final static String name[] = { "", "[", "(", "{", ".", "->", "++", "--", "&", "*", "+", "-", "~", "!",
- "/", "%", ">>", "<<", "<", ">", "<=", ">=", "==", "!=", "^", "|", "&&", "||", "?", ":", "...", "=",
- "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", ",", "$empty", "auto", "break", "case",
- "char", "const", "continue", "default", "do", "double", "else", "enum", "extern", "float", "for",
- "goto", "if", "inline", "int", "long", "register", "restrict", "return", "short", "signed", "sizeof",
- "static", "struct", "switch", "typedef", "union", "unsigned", "void", "volatile", "while", "_Bool",
- "_Complex", "_Imaginary", "integer", "floating", "charconst", "stringlit", "identifier", "Completion",
- "EndOfCompletion", "Invalid", "RightBracket", "RightParen", "RightBrace", "SemiColon", "ERROR_TOKEN",
- "EOF_TOKEN", "no_cast_start", "]", ")", "}", ";", "identifier_token", "expression",
- "postfix_expression", "member_name", "type_id", "initializer_list", "unary_expression",
- "cast_expression", "multiplicative_expression", "additive_expression", "shift_expression",
- "relational_expression", "equality_expression", "and_expression", "exclusive_or_expression",
- "inclusive_or_expression", "logical_and_expression", "logical_or_expression", "assignment_expression",
- "expression_list_actual", "constant_expression", "declaration_specifiers",
- "simple_declaration_specifiers", "struct_or_union_declaration_sp" + "ecifiers",
- "elaborated_declaration_specifi" + "ers", "enum_declaration_specifiers",
- "typdef_name_declaration_specif" + "iers", "no_type_declaration_specifier", "type_qualifier",
- "no_type_declaration_specifiers", "simple_type_specifier", "struct_or_union_specifier",
- "elaborated_specifier", "enum_specifier", "type_name_specifier", "initializer", "declarator",
- "struct_or_union", "struct_declaration_list", "struct_declaration", "specifier_qualifier_list",
- "struct_declarator_list", "complete_struct_declarator", "enumerator_list", "enumerator",
- "direct_declarator", "pointer_seq", "array_direct_declarator", "basic_direct_declarator",
- "array_modifier", "parameter_type_list", "identifier_list", "array_modifier_type_qualifiers",
- "type_qualifier_list", "parameter_list", "parameter_declaration", "complete_parameter_declarator",
- "abstract_declarator", "direct_abstract_declarator", "basic_direct_abstract_declarat" + "or",
- "array_direct_abstract_declarat" + "or", "initializer_seq", "designated_initializer", "designation",
- "designator_list", "designator" };
- }
-
- public final static String name[] = Name.name;
-
- @Override
- public final String name(int index) {
- return name[index];
- }
-
- public final static int ERROR_SYMBOL = 51, SCOPE_UBOUND = 31, SCOPE_SIZE = 32, MAX_NAME_LENGTH = 38;
-
- @Override
- public final int getErrorSymbol() {
- return ERROR_SYMBOL;
- }
-
- @Override
- public final int getScopeUbound() {
- return SCOPE_UBOUND;
- }
-
- @Override
- public final int getScopeSize() {
- return SCOPE_SIZE;
- }
-
- @Override
- public final int getMaxNameLength() {
- return MAX_NAME_LENGTH;
- }
-
- public final static int NUM_STATES = 207, NT_OFFSET = 93, LA_STATE_OFFSET = 2073, MAX_LA = 2, NUM_RULES = 316,
- NUM_NONTERMINALS = 126, NUM_SYMBOLS = 219, SEGMENT_SIZE = 8192, START_STATE = 1658, IDENTIFIER_SYMBOL = 0,
- EOFT_SYMBOL = 80, EOLT_SYMBOL = 80, ACCEPT_ACTION = 1747, ERROR_ACTION = 1757;
-
- public final static boolean BACKTRACK = true;
-
- @Override
- public final int getNumStates() {
- return NUM_STATES;
- }
-
- @Override
- public final int getNtOffset() {
- return NT_OFFSET;
- }
-
- @Override
- public final int getLaStateOffset() {
- return LA_STATE_OFFSET;
- }
-
- @Override
- public final int getMaxLa() {
- return MAX_LA;
- }
-
- @Override
- public final int getNumRules() {
- return NUM_RULES;
- }
-
- @Override
- public final int getNumNonterminals() {
- return NUM_NONTERMINALS;
- }
-
- @Override
- public final int getNumSymbols() {
- return NUM_SYMBOLS;
- }
-
- @Override
- public final int getSegmentSize() {
- return SEGMENT_SIZE;
- }
-
- @Override
- public final int getStartState() {
- return START_STATE;
- }
-
- @Override
- public final int getStartSymbol() {
- return lhs[0];
- }
-
- public final int getIdentifierSymbol() {
- return IDENTIFIER_SYMBOL;
- }
-
- @Override
- public final int getEoftSymbol() {
- return EOFT_SYMBOL;
- }
-
- @Override
- public final int getEoltSymbol() {
- return EOLT_SYMBOL;
- }
-
- @Override
- public final int getAcceptAction() {
- return ACCEPT_ACTION;
- }
-
- @Override
- public final int getErrorAction() {
- return ERROR_ACTION;
- }
-
- @Override
- public final boolean isValidForParser() {
- return isValidForParser;
- }
-
- @Override
- public final boolean getBacktrack() {
- return BACKTRACK;
- }
-
- @Override
- public final int originalState(int state) {
- return -baseCheck[state];
- }
-
- @Override
- public final int asi(int state) {
- return asb[originalState(state)];
- }
-
- @Override
- public final int nasi(int state) {
- return nasb[originalState(state)];
- }
-
- @Override
- public final int inSymbol(int state) {
- return inSymb[originalState(state)];
- }
-
- @Override
- public final int ntAction(int state, int sym) {
- return baseAction[state + sym];
- }
-
- @Override
- public final int tAction(int state, int sym) {
- int i = baseAction[state], k = i + sym;
- return termAction[termCheck[k] == sym ? k : i];
- }
-
- @Override
- public final int lookAhead(int la_state, int sym) {
- int k = la_state + sym;
- return termAction[termCheck[k] == sym ? k : la_state];
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99NoCastExpressionParsersym.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99NoCastExpressionParsersym.java
deleted file mode 100644
index 28afc2102e8..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99NoCastExpressionParsersym.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2010 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.dom.lrparser.c99;
-
-public interface C99NoCastExpressionParsersym {
- public final static int TK_auto = 17, TK_break = 81, TK_case = 82, TK_char = 31, TK_const = 6, TK_continue = 83,
- TK_default = 84, TK_do = 85, TK_double = 32, TK_else = 86, TK_enum = 44, TK_extern = 18, TK_float = 33,
- TK_for = 87, TK_goto = 88, TK_if = 89, TK_inline = 19, TK_int = 34, TK_long = 35, TK_register = 20,
- TK_restrict = 7, TK_return = 90, TK_short = 36, TK_signed = 37, TK_sizeof = 21, TK_static = 12,
- TK_struct = 45, TK_switch = 91, TK_typedef = 22, TK_union = 46, TK_unsigned = 38, TK_void = 39,
- TK_volatile = 8, TK_while = 92, TK__Bool = 40, TK__Complex = 41, TK__Imaginary = 42, TK_integer = 23,
- TK_floating = 24, TK_charconst = 25, TK_stringlit = 26, TK_identifier = 1, TK_Completion = 3,
- TK_EndOfCompletion = 5, TK_Invalid = 93, TK_LeftBracket = 9, TK_LeftParen = 2, TK_LeftBrace = 13,
- TK_Dot = 52, TK_Arrow = 67, TK_PlusPlus = 15, TK_MinusMinus = 16, TK_And = 14, TK_Star = 4, TK_Plus = 10,
- TK_Minus = 11, TK_Tilde = 27, TK_Bang = 28, TK_Slash = 53, TK_Percent = 54, TK_RightShift = 47,
- TK_LeftShift = 48, TK_LT = 55, TK_GT = 56, TK_LE = 57, TK_GE = 58, TK_EQ = 61, TK_NE = 62, TK_Caret = 63,
- TK_Or = 64, TK_AndAnd = 65, TK_OrOr = 68, TK_Question = 69, TK_Colon = 59, TK_DotDotDot = 49,
- TK_Assign = 60, TK_StarAssign = 70, TK_SlashAssign = 71, TK_PercentAssign = 72, TK_PlusAssign = 73,
- TK_MinusAssign = 74, TK_RightShiftAssign = 75, TK_LeftShiftAssign = 76, TK_AndAssign = 77,
- TK_CaretAssign = 78, TK_OrAssign = 79, TK_Comma = 29, TK_RightBracket = 50, TK_RightParen = 30,
- TK_RightBrace = 43, TK_SemiColon = 66, TK_ERROR_TOKEN = 51, TK_EOF_TOKEN = 80;
-
- public final static String orderedTerminalSymbols[] = { "", "identifier", "LeftParen", "Completion", "Star",
- "EndOfCompletion", "const", "restrict", "volatile", "LeftBracket", "Plus", "Minus", "static", "LeftBrace",
- "And", "PlusPlus", "MinusMinus", "auto", "extern", "inline", "register", "sizeof", "typedef", "integer",
- "floating", "charconst", "stringlit", "Tilde", "Bang", "Comma", "RightParen", "char", "double", "float",
- "int", "long", "short", "signed", "unsigned", "void", "_Bool", "_Complex", "_Imaginary", "RightBrace",
- "enum", "struct", "union", "RightShift", "LeftShift", "DotDotDot", "RightBracket", "ERROR_TOKEN", "Dot",
- "Slash", "Percent", "LT", "GT", "LE", "GE", "Colon", "Assign", "EQ", "NE", "Caret", "Or", "AndAnd",
- "SemiColon", "Arrow", "OrOr", "Question", "StarAssign", "SlashAssign", "PercentAssign", "PlusAssign",
- "MinusAssign", "RightShiftAssign", "LeftShiftAssign", "AndAssign", "CaretAssign", "OrAssign", "EOF_TOKEN",
- "break", "case", "continue", "default", "do", "else", "for", "goto", "if", "return", "switch", "while",
- "Invalid" };
-
- public final static boolean isValidForParser = true;
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99Parser.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99Parser.java
deleted file mode 100644
index 9732b5ac37a..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99Parser.java
+++ /dev/null
@@ -1,1654 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2015 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.dom.lrparser.c99;
-
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.cdt.core.dom.ast.IASTBinaryExpression;
-import org.eclipse.cdt.core.dom.ast.IASTCastExpression;
-import org.eclipse.cdt.core.dom.ast.IASTCompletionNode;
-import org.eclipse.cdt.core.dom.ast.IASTCompositeTypeSpecifier;
-import org.eclipse.cdt.core.dom.ast.IASTElaboratedTypeSpecifier;
-import org.eclipse.cdt.core.dom.ast.IASTLiteralExpression;
-import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
-import org.eclipse.cdt.core.dom.ast.IASTTypeIdExpression;
-import org.eclipse.cdt.core.dom.ast.IASTUnaryExpression;
-import org.eclipse.cdt.core.dom.lrparser.CPreprocessorAdapter;
-import org.eclipse.cdt.core.dom.lrparser.IDOMTokenMap;
-import org.eclipse.cdt.core.dom.lrparser.IParser;
-import org.eclipse.cdt.core.dom.lrparser.ITokenCollector;
-import org.eclipse.cdt.core.dom.lrparser.action.ITokenStream;
-import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack;
-import org.eclipse.cdt.core.dom.lrparser.action.c99.C99BuildASTParserAction;
-import org.eclipse.cdt.core.dom.lrparser.action.c99.C99SecondaryParserFactory;
-import org.eclipse.cdt.core.dom.lrparser.lpgextensions.FixedBacktrackingParser;
-import org.eclipse.cdt.core.dom.parser.IBuiltinBindingsProvider;
-import org.eclipse.cdt.core.index.IIndex;
-import org.eclipse.cdt.core.parser.IScanner;
-import org.eclipse.cdt.internal.core.dom.parser.c.CNodeFactory;
-
-import lpg.lpgjavaruntime.BadParseException;
-import lpg.lpgjavaruntime.BadParseSymFileException;
-import lpg.lpgjavaruntime.DiagnoseParser;
-import lpg.lpgjavaruntime.ErrorToken;
-import lpg.lpgjavaruntime.IToken;
-import lpg.lpgjavaruntime.LexStream;
-import lpg.lpgjavaruntime.Monitor;
-import lpg.lpgjavaruntime.NotBacktrackParseTableException;
-import lpg.lpgjavaruntime.NullExportedSymbolsException;
-import lpg.lpgjavaruntime.NullTerminalSymbolsException;
-import lpg.lpgjavaruntime.ParseErrorCodes;
-import lpg.lpgjavaruntime.ParseTable;
-import lpg.lpgjavaruntime.PrsStream;
-import lpg.lpgjavaruntime.RuleAction;
-import lpg.lpgjavaruntime.UndefinedEofSymbolException;
-import lpg.lpgjavaruntime.UnimplementedTerminalsException;
-
-public class C99Parser extends PrsStream
- implements RuleAction, ITokenStream, ITokenCollector, IParser<IASTTranslationUnit>
-
-{
- private static ParseTable prs = new C99Parserprs();
- private FixedBacktrackingParser btParser;
-
- public FixedBacktrackingParser getParser() {
- return btParser;
- }
-
- private void setResult(Object object) {
- btParser.setSym1(object);
- }
-
- public Object getRhsSym(int i) {
- return btParser.getSym(i);
- }
-
- public int getRhsTokenIndex(int i) {
- return btParser.getToken(i);
- }
-
- public IToken getRhsIToken(int i) {
- return super.getIToken(getRhsTokenIndex(i));
- }
-
- public int getRhsFirstTokenIndex(int i) {
- return btParser.getFirstToken(i);
- }
-
- public IToken getRhsFirstIToken(int i) {
- return super.getIToken(getRhsFirstTokenIndex(i));
- }
-
- public int getRhsLastTokenIndex(int i) {
- return btParser.getLastToken(i);
- }
-
- public IToken getRhsLastIToken(int i) {
- return super.getIToken(getRhsLastTokenIndex(i));
- }
-
- public int getLeftSpan() {
- return btParser.getFirstToken();
- }
-
- @Override
- public IToken getLeftIToken() {
- return super.getIToken(getLeftSpan());
- }
-
- public int getRightSpan() {
- return btParser.getLastToken();
- }
-
- @Override
- public IToken getRightIToken() {
- return super.getIToken(getRightSpan());
- }
-
- public int getRhsErrorTokenIndex(int i) {
- int index = btParser.getToken(i);
- IToken err = super.getIToken(index);
- return (err instanceof ErrorToken ? index : 0);
- }
-
- public ErrorToken getRhsErrorIToken(int i) {
- int index = btParser.getToken(i);
- IToken err = super.getIToken(index);
- return (ErrorToken) (err instanceof ErrorToken ? err : null);
- }
-
- public C99Parser(LexStream lexStream) {
- super(lexStream);
-
- try {
- super.remapTerminalSymbols(orderedTerminalSymbols(), C99Parserprs.EOFT_SYMBOL);
- } catch (NullExportedSymbolsException e) {
- } catch (NullTerminalSymbolsException e) {
- } catch (UnimplementedTerminalsException e) {
- java.util.ArrayList unimplemented_symbols = e.getSymbols();
- System.out.println("The Lexer will not scan the following token(s):");
- for (int i = 0; i < unimplemented_symbols.size(); i++) {
- Integer id = (Integer) unimplemented_symbols.get(i);
- System.out.println(" " + C99Parsersym.orderedTerminalSymbols[id.intValue()]);
- }
- System.out.println();
- } catch (UndefinedEofSymbolException e) {
- throw new Error(new UndefinedEofSymbolException("The Lexer does not implement the Eof symbol "
- + C99Parsersym.orderedTerminalSymbols[C99Parserprs.EOFT_SYMBOL]));
- }
- }
-
- @Override
- public String[] orderedTerminalSymbols() {
- return C99Parsersym.orderedTerminalSymbols;
- }
-
- public String getTokenKindName(int kind) {
- return C99Parsersym.orderedTerminalSymbols[kind];
- }
-
- public int getEOFTokenKind() {
- return C99Parserprs.EOFT_SYMBOL;
- }
-
- public PrsStream getParseStream() {
- return this;
- }
-
- //
- // Report error message for given error_token.
- //
- public final void reportErrorTokenMessage(int error_token, String msg) {
- int firsttok = super.getFirstErrorToken(error_token), lasttok = super.getLastErrorToken(error_token);
- String location = super.getFileName() + ':'
- + (firsttok > lasttok ? (super.getEndLine(lasttok) + ":" + super.getEndColumn(lasttok))
- : (super.getLine(error_token) + ":" + super.getColumn(error_token) + ":"
- + super.getEndLine(error_token) + ":" + super.getEndColumn(error_token)))
- + ": ";
- super.reportError((firsttok > lasttok ? ParseErrorCodes.INSERTION_CODE : ParseErrorCodes.SUBSTITUTION_CODE),
- location, msg);
- }
-
- public void parser() {
- parser(null, 0);
- }
-
- public void parser(Monitor monitor) {
- parser(monitor, 0);
- }
-
- public void parser(int error_repair_count) {
- parser(null, error_repair_count);
- }
-
- public void parser(Monitor monitor, int error_repair_count) {
- try {
- btParser = new FixedBacktrackingParser(monitor, this, prs, this);
- } catch (NotBacktrackParseTableException e) {
- throw new Error(new NotBacktrackParseTableException("Regenerate C99Parserprs.java with -BACKTRACK option"));
- } catch (BadParseSymFileException e) {
- throw new Error(new BadParseSymFileException("Bad Parser Symbol File -- C99Parsersym.java"));
- }
-
- try {
- btParser.parse(error_repair_count);
- } catch (BadParseException e) {
- reset(e.error_token); // point to error token
- DiagnoseParser diagnoseParser = new DiagnoseParser(this, prs);
- diagnoseParser.diagnose(e.error_token);
- }
- }
-
- private C99BuildASTParserAction action;
- private IASTCompletionNode compNode;
-
- public C99Parser(IScanner scanner, IDOMTokenMap tokenMap, IBuiltinBindingsProvider builtinBindingsProvider,
- IIndex index, Map<String, String> properties) {
- initActions(properties);
- action.initializeTranslationUnit(scanner, builtinBindingsProvider, index);
- CPreprocessorAdapter.runCPreprocessor(scanner, this, tokenMap);
- }
-
- private void initActions(Map<String, String> properties) {
- ScopedStack<Object> astStack = new ScopedStack<>();
-
- action = new C99BuildASTParserAction(this, astStack, CNodeFactory.getDefault(),
- C99SecondaryParserFactory.getDefault());
- action.setParserProperties(properties);
-
- }
-
- @Override
- public void addToken(IToken token) {
- token.setKind(mapKind(token.getKind())); // TODO does mapKind need to be called?
- super.addToken(token);
- }
-
- @Override
- public IASTTranslationUnit parse() {
- // this has to be done, or... kaboom!
- setStreamLength(getSize());
-
- final int errorRepairCount = -1; // -1 means full error handling
- parser(null, errorRepairCount); // do the actual parse
- super.resetTokenStream(); // allow tokens to be garbage collected
-
- compNode = action.getASTCompletionNode(); // the completion node may be null
- return (IASTTranslationUnit) action.getParseResult();
- }
-
- @Override
- public IASTCompletionNode getCompletionNode() {
- return compNode;
- }
-
- // uncomment this method to use with backtracking parser
- @Override
- public List<IToken> getRuleTokens() {
- return getTokens().subList(getLeftSpan(), getRightSpan() + 1);
- }
-
- @Override
- public String[] getOrderedTerminalSymbols() {
- return C99Parsersym.orderedTerminalSymbols;
- }
-
- @Override
- @SuppressWarnings("nls")
- public String getName() {
- return "C99Parser";
- }
-
- @Override
- public void ruleAction(int ruleNumber) {
- switch (ruleNumber) {
-
- //
- // Rule 1: <openscope-ast> ::= $Empty
- //
- case 1: {
- action.openASTScope();
- break;
- }
-
- //
- // Rule 2: <empty> ::= $Empty
- //
- case 2: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 13: literal ::= integer
- //
- case 13: {
- action.consumeExpressionLiteral(IASTLiteralExpression.lk_integer_constant);
- break;
- }
-
- //
- // Rule 14: literal ::= floating
- //
- case 14: {
- action.consumeExpressionLiteral(IASTLiteralExpression.lk_float_constant);
- break;
- }
-
- //
- // Rule 15: literal ::= charconst
- //
- case 15: {
- action.consumeExpressionLiteral(IASTLiteralExpression.lk_char_constant);
- break;
- }
-
- //
- // Rule 16: literal ::= stringlit
- //
- case 16: {
- action.consumeExpressionLiteral(IASTLiteralExpression.lk_string_literal);
- break;
- }
-
- //
- // Rule 18: primary_expression ::= primary_expression_id
- //
- case 18: {
- action.consumeExpressionID();
- break;
- }
-
- //
- // Rule 19: primary_expression ::= ( expression )
- //
- case 19: {
- action.consumeExpressionBracketed();
- break;
- }
-
- //
- // Rule 22: postfix_expression ::= postfix_expression [ expression ]
- //
- case 22: {
- action.consumeExpressionArraySubscript();
- break;
- }
-
- //
- // Rule 23: postfix_expression ::= postfix_expression ( expression_list_opt )
- //
- case 23: {
- action.consumeExpressionFunctionCall();
- break;
- }
-
- //
- // Rule 24: postfix_expression ::= postfix_expression . member_name
- //
- case 24: {
- action.consumeExpressionFieldReference(false);
- break;
- }
-
- //
- // Rule 25: postfix_expression ::= postfix_expression -> member_name
- //
- case 25: {
- action.consumeExpressionFieldReference(true);
- break;
- }
-
- //
- // Rule 26: postfix_expression ::= postfix_expression ++
- //
- case 26: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixIncr);
- break;
- }
-
- //
- // Rule 27: postfix_expression ::= postfix_expression --
- //
- case 27: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixDecr);
- break;
- }
-
- //
- // Rule 28: postfix_expression ::= ( type_id ) initializer_list
- //
- case 28: {
- action.consumeExpressionTypeIdInitializer();
- break;
- }
-
- //
- // Rule 33: unary_expression ::= ++ unary_expression
- //
- case 33: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixIncr);
- break;
- }
-
- //
- // Rule 34: unary_expression ::= -- unary_expression
- //
- case 34: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixDecr);
- break;
- }
-
- //
- // Rule 35: unary_expression ::= & cast_expression
- //
- case 35: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_amper);
- break;
- }
-
- //
- // Rule 36: unary_expression ::= * cast_expression
- //
- case 36: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_star);
- break;
- }
-
- //
- // Rule 37: unary_expression ::= + cast_expression
- //
- case 37: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_plus);
- break;
- }
-
- //
- // Rule 38: unary_expression ::= - cast_expression
- //
- case 38: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_minus);
- break;
- }
-
- //
- // Rule 39: unary_expression ::= ~ cast_expression
- //
- case 39: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_tilde);
- break;
- }
-
- //
- // Rule 40: unary_expression ::= ! cast_expression
- //
- case 40: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_not);
- break;
- }
-
- //
- // Rule 41: unary_expression ::= sizeof unary_expression
- //
- case 41: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_sizeof);
- break;
- }
-
- //
- // Rule 42: unary_expression ::= sizeof ( type_id )
- //
- case 42: {
- action.consumeExpressionTypeId(IASTTypeIdExpression.op_sizeof);
- break;
- }
-
- //
- // Rule 44: cast_expression ::= ( type_id ) cast_expression
- //
- case 44: {
- action.consumeExpressionCast(IASTCastExpression.op_cast);
- break;
- }
-
- //
- // Rule 46: multiplicative_expression ::= multiplicative_expression * cast_expression
- //
- case 46: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_multiply);
- break;
- }
-
- //
- // Rule 47: multiplicative_expression ::= multiplicative_expression / cast_expression
- //
- case 47: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_divide);
- break;
- }
-
- //
- // Rule 48: multiplicative_expression ::= multiplicative_expression % cast_expression
- //
- case 48: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_modulo);
- break;
- }
-
- //
- // Rule 50: additive_expression ::= additive_expression + multiplicative_expression
- //
- case 50: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_plus);
- break;
- }
-
- //
- // Rule 51: additive_expression ::= additive_expression - multiplicative_expression
- //
- case 51: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_minus);
- break;
- }
-
- //
- // Rule 53: shift_expression ::= shift_expression << additive_expression
- //
- case 53: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftLeft);
- break;
- }
-
- //
- // Rule 54: shift_expression ::= shift_expression >> additive_expression
- //
- case 54: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftRight);
- break;
- }
-
- //
- // Rule 56: relational_expression ::= relational_expression < shift_expression
- //
- case 56: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_lessThan);
- break;
- }
-
- //
- // Rule 57: relational_expression ::= relational_expression > shift_expression
- //
- case 57: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_greaterThan);
- break;
- }
-
- //
- // Rule 58: relational_expression ::= relational_expression <= shift_expression
- //
- case 58: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_lessEqual);
- break;
- }
-
- //
- // Rule 59: relational_expression ::= relational_expression >= shift_expression
- //
- case 59: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_greaterEqual);
- break;
- }
-
- //
- // Rule 61: equality_expression ::= equality_expression == relational_expression
- //
- case 61: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_equals);
- break;
- }
-
- //
- // Rule 62: equality_expression ::= equality_expression != relational_expression
- //
- case 62: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_notequals);
- break;
- }
-
- //
- // Rule 64: and_expression ::= and_expression & equality_expression
- //
- case 64: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryAnd);
- break;
- }
-
- //
- // Rule 66: exclusive_or_expression ::= exclusive_or_expression ^ and_expression
- //
- case 66: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryXor);
- break;
- }
-
- //
- // Rule 68: inclusive_or_expression ::= inclusive_or_expression | exclusive_or_expression
- //
- case 68: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryOr);
- break;
- }
-
- //
- // Rule 70: logical_and_expression ::= logical_and_expression && inclusive_or_expression
- //
- case 70: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_logicalAnd);
- break;
- }
-
- //
- // Rule 72: logical_or_expression ::= logical_or_expression || logical_and_expression
- //
- case 72: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_logicalOr);
- break;
- }
-
- //
- // Rule 74: conditional_expression ::= logical_or_expression ? expression : assignment_expression
- //
- case 74: {
- action.consumeExpressionConditional();
- break;
- }
-
- //
- // Rule 76: assignment_expression ::= unary_expression = assignment_expression
- //
- case 76: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_assign);
- break;
- }
-
- //
- // Rule 77: assignment_expression ::= unary_expression *= assignment_expression
- //
- case 77: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_multiplyAssign);
- break;
- }
-
- //
- // Rule 78: assignment_expression ::= unary_expression /= assignment_expression
- //
- case 78: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_divideAssign);
- break;
- }
-
- //
- // Rule 79: assignment_expression ::= unary_expression %= assignment_expression
- //
- case 79: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_moduloAssign);
- break;
- }
-
- //
- // Rule 80: assignment_expression ::= unary_expression += assignment_expression
- //
- case 80: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_plusAssign);
- break;
- }
-
- //
- // Rule 81: assignment_expression ::= unary_expression -= assignment_expression
- //
- case 81: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_minusAssign);
- break;
- }
-
- //
- // Rule 82: assignment_expression ::= unary_expression <<= assignment_expression
- //
- case 82: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftLeftAssign);
- break;
- }
-
- //
- // Rule 83: assignment_expression ::= unary_expression >>= assignment_expression
- //
- case 83: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftRightAssign);
- break;
- }
-
- //
- // Rule 84: assignment_expression ::= unary_expression &= assignment_expression
- //
- case 84: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryAndAssign);
- break;
- }
-
- //
- // Rule 85: assignment_expression ::= unary_expression ^= assignment_expression
- //
- case 85: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryXorAssign);
- break;
- }
-
- //
- // Rule 86: assignment_expression ::= unary_expression |= assignment_expression
- //
- case 86: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryOrAssign);
- break;
- }
-
- //
- // Rule 89: expression_list ::= <openscope-ast> expression_list_actual
- //
- case 89: {
- action.consumeExpressionList();
- break;
- }
-
- //
- // Rule 91: expression_list_opt ::= $Empty
- //
- case 91: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 101: statement ::= ERROR_TOKEN
- //
- case 101: {
- action.consumeStatementProblem();
- break;
- }
-
- //
- // Rule 102: labeled_statement ::= identifier_token : statement
- //
- case 102: {
- action.consumeStatementLabeled();
- break;
- }
-
- //
- // Rule 103: labeled_statement ::= case constant_expression : statement
- //
- case 103: {
- action.consumeStatementCase();
- break;
- }
-
- //
- // Rule 104: labeled_statement ::= default : statement
- //
- case 104: {
- action.consumeStatementDefault();
- break;
- }
-
- //
- // Rule 105: compound_statement ::= { }
- //
- case 105: {
- action.consumeStatementCompoundStatement(false);
- break;
- }
-
- //
- // Rule 106: compound_statement ::= { <openscope-ast> block_item_list }
- //
- case 106: {
- action.consumeStatementCompoundStatement(true);
- break;
- }
-
- //
- // Rule 110: block_item ::= declaration
- //
- case 110: {
- action.consumeStatementDeclarationWithDisambiguation();
- break;
- }
-
- //
- // Rule 111: expression_statement ::= ;
- //
- case 111: {
- action.consumeStatementNull();
- break;
- }
-
- //
- // Rule 112: expression_statement ::= expression_in_statement ;
- //
- case 112: {
- action.consumeStatementExpression();
- break;
- }
-
- //
- // Rule 113: selection_statement ::= if ( expression ) statement
- //
- case 113: {
- action.consumeStatementIf(false);
- break;
- }
-
- //
- // Rule 114: selection_statement ::= if ( expression ) statement else statement
- //
- case 114: {
- action.consumeStatementIf(true);
- break;
- }
-
- //
- // Rule 115: selection_statement ::= switch ( expression ) statement
- //
- case 115: {
- action.consumeStatementSwitch();
- break;
- }
-
- //
- // Rule 117: expression_opt ::= $Empty
- //
- case 117: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 118: iteration_statement ::= do statement while ( expression ) ;
- //
- case 118: {
- action.consumeStatementDoLoop(true);
- break;
- }
-
- //
- // Rule 119: iteration_statement ::= do statement
- //
- case 119: {
- action.consumeStatementDoLoop(false);
- break;
- }
-
- //
- // Rule 120: iteration_statement ::= while ( expression ) statement
- //
- case 120: {
- action.consumeStatementWhileLoop();
- break;
- }
-
- //
- // Rule 121: iteration_statement ::= for ( expression_opt ; expression_opt ; expression_opt ) statement
- //
- case 121: {
- action.consumeStatementForLoop();
- break;
- }
-
- //
- // Rule 122: iteration_statement ::= for ( declaration expression_opt ; expression_opt ) statement
- //
- case 122: {
- action.consumeStatementForLoop();
- break;
- }
-
- //
- // Rule 123: jump_statement ::= goto identifier_token ;
- //
- case 123: {
- action.consumeStatementGoto();
- break;
- }
-
- //
- // Rule 124: jump_statement ::= continue ;
- //
- case 124: {
- action.consumeStatementContinue();
- break;
- }
-
- //
- // Rule 125: jump_statement ::= break ;
- //
- case 125: {
- action.consumeStatementBreak();
- break;
- }
-
- //
- // Rule 126: jump_statement ::= return ;
- //
- case 126: {
- action.consumeStatementReturn(false);
- break;
- }
-
- //
- // Rule 127: jump_statement ::= return expression ;
- //
- case 127: {
- action.consumeStatementReturn(true);
- break;
- }
-
- //
- // Rule 128: declaration ::= declaration_specifiers ;
- //
- case 128: {
- action.consumeDeclarationSimple(false);
- break;
- }
-
- //
- // Rule 129: declaration ::= declaration_specifiers <openscope-ast> init_declarator_list ;
- //
- case 129: {
- action.consumeDeclarationSimple(true);
- break;
- }
-
- //
- // Rule 130: declaration_specifiers ::= <openscope-ast> simple_declaration_specifiers
- //
- case 130: {
- action.consumeDeclarationSpecifiersSimple();
- break;
- }
-
- //
- // Rule 131: declaration_specifiers ::= <openscope-ast> struct_or_union_declaration_specifiers
- //
- case 131: {
- action.consumeDeclarationSpecifiersStructUnionEnum();
- break;
- }
-
- //
- // Rule 132: declaration_specifiers ::= <openscope-ast> elaborated_declaration_specifiers
- //
- case 132: {
- action.consumeDeclarationSpecifiersStructUnionEnum();
- break;
- }
-
- //
- // Rule 133: declaration_specifiers ::= <openscope-ast> enum_declaration_specifiers
- //
- case 133: {
- action.consumeDeclarationSpecifiersStructUnionEnum();
- break;
- }
-
- //
- // Rule 134: declaration_specifiers ::= <openscope-ast> typdef_name_declaration_specifiers
- //
- case 134: {
- action.consumeDeclarationSpecifiersTypedefName();
- break;
- }
-
- //
- // Rule 159: init_declarator ::= complete_declarator = initializer
- //
- case 159: {
- action.consumeDeclaratorWithInitializer(true);
- break;
- }
-
- //
- // Rule 161: storage_class_specifier ::= storage_class_specifier_token
- //
- case 161: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 167: simple_type_specifier ::= simple_type_specifier_token
- //
- case 167: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 180: type_name_specifier ::= identifier_token
- //
- case 180: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 181: struct_or_union_specifier ::= struct_or_union struct_or_union_specifier_hook { <openscope-ast> struct_declaration_list_opt }
- //
- case 181: {
- action.consumeTypeSpecifierComposite(false);
- break;
- }
-
- //
- // Rule 182: struct_or_union_specifier ::= struct_or_union struct_or_union_specifier_hook identifier_token struct_or_union_specifier_suffix_hook { <openscope-ast> struct_declaration_list_opt }
- //
- case 182: {
- action.consumeTypeSpecifierComposite(true);
- break;
- }
-
- //
- // Rule 187: elaborated_specifier ::= struct elaborated_specifier_hook identifier_token
- //
- case 187: {
- action.consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_struct);
- break;
- }
-
- //
- // Rule 188: elaborated_specifier ::= union elaborated_specifier_hook identifier_token
- //
- case 188: {
- action.consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_union);
- break;
- }
-
- //
- // Rule 189: elaborated_specifier ::= enum elaborated_specifier_hook identifier_token
- //
- case 189: {
- action.consumeTypeSpecifierElaborated(IASTElaboratedTypeSpecifier.k_enum);
- break;
- }
-
- //
- // Rule 195: struct_declaration ::= specifier_qualifier_list <openscope-ast> struct_declarator_list ;
- //
- case 195: {
- action.consumeStructDeclaration(true);
- break;
- }
-
- //
- // Rule 196: struct_declaration ::= specifier_qualifier_list ;
- //
- case 196: {
- action.consumeStructDeclaration(false);
- break;
- }
-
- //
- // Rule 197: struct_declaration ::= ERROR_TOKEN
- //
- case 197: {
- action.consumeDeclarationProblem();
- break;
- }
-
- //
- // Rule 203: struct_declarator ::= : constant_expression
- //
- case 203: {
- action.consumeBitField(false);
- break;
- }
-
- //
- // Rule 204: struct_declarator ::= declarator : constant_expression
- //
- case 204: {
- action.consumeBitField(true);
- break;
- }
-
- //
- // Rule 205: enum_specifier ::= enum enum_specifier_hook { <openscope-ast> enumerator_list_opt comma_opt }
- //
- case 205: {
- action.consumeTypeSpecifierEnumeration(false);
- break;
- }
-
- //
- // Rule 206: enum_specifier ::= enum enum_specifier_hook identifier_token { <openscope-ast> enumerator_list_opt comma_opt }
- //
- case 206: {
- action.consumeTypeSpecifierEnumeration(true);
- break;
- }
-
- //
- // Rule 212: enumerator ::= identifier_token
- //
- case 212: {
- action.consumeEnumerator(false);
- break;
- }
-
- //
- // Rule 213: enumerator ::= identifier_token = constant_expression
- //
- case 213: {
- action.consumeEnumerator(true);
- break;
- }
-
- //
- // Rule 214: type_qualifier ::= type_qualifier_token
- //
- case 214: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 218: function_specifier ::= inline
- //
- case 218: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 220: declarator ::= <openscope-ast> pointer_seq direct_declarator
- //
- case 220: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 225: basic_direct_declarator ::= declarator_id_name
- //
- case 225: {
- action.consumeDirectDeclaratorIdentifier();
- break;
- }
-
- //
- // Rule 226: basic_direct_declarator ::= ( declarator )
- //
- case 226: {
- action.consumeDirectDeclaratorBracketed();
- break;
- }
-
- //
- // Rule 227: declarator_id_name ::= identifier
- //
- case 227: {
- action.consumeIdentifierName();
- break;
- }
-
- //
- // Rule 228: array_direct_declarator ::= basic_direct_declarator array_modifier
- //
- case 228: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 229: array_direct_declarator ::= array_direct_declarator array_modifier
- //
- case 229: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 231: function_direct_declarator ::= basic_direct_declarator ( <openscope-ast> parameter_type_list )
- //
- case 231: {
- action.consumeDirectDeclaratorFunctionDeclarator(true, true);
- break;
- }
-
- //
- // Rule 232: function_direct_declarator ::= basic_direct_declarator ( )
- //
- case 232: {
- action.consumeDirectDeclaratorFunctionDeclarator(true, false);
- break;
- }
-
- //
- // Rule 234: function_declarator ::= <openscope-ast> pointer_seq function_direct_declarator
- //
- case 234: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 235: knr_direct_declarator ::= basic_direct_declarator ( <openscope-ast> identifier_list )
- //
- case 235: {
- action.consumeDirectDeclaratorFunctionDeclaratorKnR();
- break;
- }
-
- //
- // Rule 237: knr_function_declarator ::= <openscope-ast> pointer_seq knr_direct_declarator
- //
- case 237: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 238: identifier_list ::= identifier
- //
- case 238: {
- action.consumeIdentifierKnR();
- break;
- }
-
- //
- // Rule 239: identifier_list ::= identifier_list , identifier
- //
- case 239: {
- action.consumeIdentifierKnR();
- break;
- }
-
- //
- // Rule 240: array_modifier ::= [ ]
- //
- case 240: {
- action.consumeDirectDeclaratorArrayModifier(false);
- break;
- }
-
- //
- // Rule 241: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers ]
- //
- case 241: {
- action.consumeDirectDeclaratorModifiedArrayModifier(false, false, true, false);
- break;
- }
-
- //
- // Rule 242: array_modifier ::= [ assignment_expression ]
- //
- case 242: {
- action.consumeDirectDeclaratorArrayModifier(true);
- break;
- }
-
- //
- // Rule 243: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers assignment_expression ]
- //
- case 243: {
- action.consumeDirectDeclaratorModifiedArrayModifier(false, false, true, true);
- break;
- }
-
- //
- // Rule 244: array_modifier ::= [ static assignment_expression ]
- //
- case 244: {
- action.consumeDirectDeclaratorModifiedArrayModifier(true, false, false, true);
- break;
- }
-
- //
- // Rule 245: array_modifier ::= [ static <openscope-ast> array_modifier_type_qualifiers assignment_expression ]
- //
- case 245: {
- action.consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true);
- break;
- }
-
- //
- // Rule 246: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers static assignment_expression ]
- //
- case 246: {
- action.consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true);
- break;
- }
-
- //
- // Rule 247: array_modifier ::= [ * ]
- //
- case 247: {
- action.consumeDirectDeclaratorModifiedArrayModifier(false, true, false, false);
- break;
- }
-
- //
- // Rule 248: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers * ]
- //
- case 248: {
- action.consumeDirectDeclaratorModifiedArrayModifier(false, true, true, false);
- break;
- }
-
- //
- // Rule 250: pointer_seq ::= pointer_hook * pointer_hook
- //
- case 250: {
- action.consumePointer();
- break;
- }
-
- //
- // Rule 251: pointer_seq ::= pointer_seq pointer_hook * pointer_hook
- //
- case 251: {
- action.consumePointer();
- break;
- }
-
- //
- // Rule 252: pointer_seq ::= pointer_hook * pointer_hook <openscope-ast> type_qualifier_list
- //
- case 252: {
- action.consumePointerTypeQualifierList();
- break;
- }
-
- //
- // Rule 253: pointer_seq ::= pointer_seq pointer_hook * pointer_hook <openscope-ast> type_qualifier_list
- //
- case 253: {
- action.consumePointerTypeQualifierList();
- break;
- }
-
- //
- // Rule 257: parameter_type_list ::= parameter_list
- //
- case 257: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 258: parameter_type_list ::= parameter_list , ...
- //
- case 258: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 259: parameter_type_list ::= ...
- //
- case 259: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 262: parameter_declaration ::= declaration_specifiers complete_parameter_declarator
- //
- case 262: {
- action.consumeParameterDeclaration();
- break;
- }
-
- //
- // Rule 263: parameter_declaration ::= declaration_specifiers
- //
- case 263: {
- action.consumeParameterDeclarationWithoutDeclarator();
- break;
- }
-
- //
- // Rule 266: type_id ::= specifier_qualifier_list
- //
- case 266: {
- action.consumeTypeId(false);
- break;
- }
-
- //
- // Rule 267: type_id ::= specifier_qualifier_list abstract_declarator
- //
- case 267: {
- action.consumeTypeId(true);
- break;
- }
-
- //
- // Rule 269: abstract_declarator ::= <openscope-ast> pointer_seq
- //
- case 269: {
- action.consumeDeclaratorWithPointer(false);
- break;
- }
-
- //
- // Rule 270: abstract_declarator ::= <openscope-ast> pointer_seq direct_abstract_declarator
- //
- case 270: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 274: basic_direct_abstract_declarator ::= ( abstract_declarator )
- //
- case 274: {
- action.consumeDirectDeclaratorBracketed();
- break;
- }
-
- //
- // Rule 275: array_direct_abstract_declarator ::= array_modifier
- //
- case 275: {
- action.consumeDirectDeclaratorArrayDeclarator(false);
- break;
- }
-
- //
- // Rule 276: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier
- //
- case 276: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 277: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier
- //
- case 277: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 278: function_direct_abstract_declarator ::= ( )
- //
- case 278: {
- action.consumeDirectDeclaratorFunctionDeclarator(false, false);
- break;
- }
-
- //
- // Rule 279: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( )
- //
- case 279: {
- action.consumeDirectDeclaratorFunctionDeclarator(true, false);
- break;
- }
-
- //
- // Rule 280: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_type_list )
- //
- case 280: {
- action.consumeDirectDeclaratorFunctionDeclarator(false, true);
- break;
- }
-
- //
- // Rule 281: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( <openscope-ast> parameter_type_list )
- //
- case 281: {
- action.consumeDirectDeclaratorFunctionDeclarator(true, true);
- break;
- }
-
- //
- // Rule 282: initializer ::= assignment_expression
- //
- case 282: {
- action.consumeInitializer();
- break;
- }
-
- //
- // Rule 283: initializer ::= initializer_list
- //
- case 283: {
- action.consumeInitializer();
- break;
- }
-
- //
- // Rule 284: initializer_list ::= start_initializer_list { <openscope-ast> initializer_seq comma_opt } end_initializer_list
- //
- case 284: {
- action.consumeInitializerList();
- break;
- }
-
- //
- // Rule 285: initializer_list ::= { <openscope-ast> }
- //
- case 285: {
- action.consumeInitializerList();
- break;
- }
-
- //
- // Rule 286: start_initializer_list ::= $Empty
- //
- case 286: {
- action.initializerListStart();
- break;
- }
-
- //
- // Rule 287: end_initializer_list ::= $Empty
- //
- case 287: {
- action.initializerListEnd();
- break;
- }
-
- //
- // Rule 292: designated_initializer ::= <openscope-ast> designation = initializer
- //
- case 292: {
- action.consumeInitializerDesignated();
- break;
- }
-
- //
- // Rule 296: designator_base ::= [ constant_expression ]
- //
- case 296: {
- action.consumeDesignatorArray();
- break;
- }
-
- //
- // Rule 297: designator_base ::= . identifier_token
- //
- case 297: {
- action.consumeDesignatorField();
- break;
- }
-
- //
- // Rule 298: designator ::= [ constant_expression ]
- //
- case 298: {
- action.consumeDesignatorArray();
- break;
- }
-
- //
- // Rule 299: designator ::= . identifier_token
- //
- case 299: {
- action.consumeDesignatorField();
- break;
- }
-
- //
- // Rule 300: translation_unit ::= external_declaration_list
- //
- case 300: {
- action.consumeTranslationUnit();
- break;
- }
-
- //
- // Rule 301: translation_unit ::= $Empty
- //
- case 301: {
- action.consumeTranslationUnit();
- break;
- }
-
- //
- // Rule 306: external_declaration ::= ;
- //
- case 306: {
- action.consumeDeclarationEmpty();
- break;
- }
-
- //
- // Rule 307: external_declaration ::= ERROR_TOKEN
- //
- case 307: {
- action.consumeDeclarationProblem();
- break;
- }
-
- //
- // Rule 311: function_definition ::= <openscope-ast> function_declarator function_body
- //
- case 311: {
- action.consumeFunctionDefinition(false);
- break;
- }
-
- //
- // Rule 312: function_definition ::= declaration_specifiers <openscope-ast> knr_function_declarator <openscope-ast> declaration_list compound_statement
- //
- case 312: {
- action.consumeFunctionDefinitionKnR();
- break;
- }
-
- //
- // Rule 313: normal_function_definition ::= declaration_specifiers <openscope-ast> function_declarator function_body
- //
- case 313: {
- action.consumeFunctionDefinition(true);
- break;
- }
-
- //
- // Rule 314: function_body ::= { }
- //
- case 314: {
- action.consumeStatementCompoundStatement(false);
- break;
- }
-
- //
- // Rule 315: function_body ::= { <openscope-ast> block_item_list }
- //
- case 315: {
- action.consumeStatementCompoundStatement(true);
- break;
- }
-
- default:
- break;
- }
- return;
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99Parserprs.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99Parserprs.java
deleted file mode 100644
index 9365f4802e6..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99Parserprs.java
+++ /dev/null
@@ -1,843 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2015 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.dom.lrparser.c99;
-
-public class C99Parserprs implements lpg.lpgjavaruntime.ParseTable, C99Parsersym {
-
- public interface IsKeyword {
- public final static byte isKeyword[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0 };
- }
-
- public final static byte isKeyword[] = IsKeyword.isKeyword;
-
- public final boolean isKeyword(int index) {
- return isKeyword[index] != 0;
- }
-
- public interface BaseCheck {
- public final static short baseCheck[] = { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 4,
- 4, 3, 3, 2, 2, 4, 1, 0, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 1, 4, 1, 3, 3, 3, 1, 3, 3, 1, 3, 3, 1, 3, 3,
- 3, 3, 1, 3, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 5, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 2, 1, 0, 1,
- 3, 1, 1, 1, 1, 1, 1, 1, 1, 3, 4, 3, 2, 4, 1, 2, 1, 1, 1, 2, 5, 7, 5, 1, 0, 7, 2, 5, 9, 8, 3, 2, 2, 2, 3,
- 2, 4, 2, 2, 2, 2, 2, 1, 1, 1, 1, 2, 1, 2, 2, 2, 1, 2, 2, 1, 2, 2, 1, 2, 2, 1, 2, 2, 1, 3, 1, 3, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 8, 0, 0, 1, 1, 3, 3, 3, 0, 1, 0, 1, 2, 4, 2, 1,
- 1, 1, 3, 1, 1, 2, 3, 7, 8, 0, 1, 0, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 3, 1, 2, 2, 1, 5, 3,
- 1, 3, 5, 1, 3, 1, 3, 2, 4, 3, 5, 4, 6, 6, 3, 5, 1, 3, 4, 5, 6, 0, 1, 2, 1, 3, 1, 1, 3, 2, 1, 1, 1, 1, 2,
- 1, 2, 3, 1, 1, 1, 3, 1, 2, 2, 2, 3, 4, 5, 1, 1, 7, 3, 0, 0, 1, 1, 3, 3, 4, 1, 1, 2, 3, 2, 3, 2, 1, 0, 1,
- 2, 1, 1, 1, 1, 1, 2, 1, 3, 6, 4, 2, 4, -106, 0, -161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -37, 0,
- 0, 0, -18, 0, -61, -10, 0, 0, -159, 0, -12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -41, 0, 0, 0, 0,
- 0, 0, 0, -9, 0, 0, 0, 0, 0, -236, 0, -4, 0, 0, 0, 0, 0, -23, 0, 0, 0, 0, 0, 0, -2, 0, 0, -242, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -32, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, -139, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -13, 0, 0, 0, -33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -39, 0, 0, 0, -120, 0, -267, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -20, 0, 0, 0,
- -21, 0, -7, -27, 0, 0, -271, 0, -156, 0, -28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -251, -31, 0,
- 0, 0, -46, 0, -22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -24, 0, 0, -148, 0, -30, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -34, 0, 0, -137, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, -25, 0, -280, 0, -279,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -58, 0, -102, -50, 0, 0, 0, 0, -26, 0, -38, 0, 0, 0, -51, -146, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, -53, 0, 0, 0, 0, 0, 0,
- -150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, 0, 0, 0, 0, 0, 0, 0, 0, -35, 0, -36, 0, 0, 0, 0, 0,
- 0, 0, -60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, 0, -119, 0, -132, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -188, 0, 0, 0, 0, 0, -165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -118, 0, -104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 0, -49,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -93, 0, -151, 0, -179, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, -122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -133, 0, 0, 0,
- -160, 0, -123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, 0, -189, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 0, 0, 0, 0, 0, -125, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -201, 0, -126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0,
- -127, 0, -224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -226, 0, -128, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -227, 0, 0, 0, 0, 0, -129, 0, -240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -265, 0, -130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -274, 0, 0, 0, 0, 0, -131, 0,
- -278, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -284, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -290, 0, 0, 0, 0, 0, -194, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -75, 0, -230, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, -78, 0, -235, 0, -54,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, -249, 0, -80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -81, 0, -147, 0, -82, 0, 0, 0, 0, 0, 0, 0, -260, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -83, 0, 0, 0, -270, 0, -84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -87, 0, 0, 0, -152,
- 0, -89, 0, 0, 0, 0, 0, 0, 0, 0, 0, -277, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, 0, 0, 0,
- -283, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -90, 0, 0, 0, -72, 0, -96, 0, 0, 0, 0, 0, -48, 0,
- 0, 0, -149, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -95, 0, -42, 0, 0, -238, 0, -62, -97, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -92, -45, 0, 0, -99, -91, 0, 0, 0, -100, -183, 0, 0, 0, 0, 0, -114, 0, 0, -269, 0, 0, 0,
- -103, 0, -29, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, -105, 0, 0, 0, 0, 0, 0, 0, -40, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -94, 0, -172, 0, 0, 0, -86, -107, 0, -47, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0,
- -190, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -59, -180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -163, 0, 0, 0, 0, 0, -164, 0, 0, 0, 0, -15, 0, -8, 0, -109, 0, 0, 0, -166, -228, 0, 0, 0, -169,
- 0, 0, 0, 0, -223, -191, -6, -112, 0, 0, -234, 0, 0, 0, 0, 0, 0, 0, -162, 0, 0, 0, -174, 0, 0, 0, 0, 0,
- 0, 0, 0, -17, 0, -116, -252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -176, 0, 0, 0, 0, 0, 0, 0, -195, 0, 0, 0,
- 0, 0, -247, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -248, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -177, 0, 0, 0, -184, 0, 0, 0, 0, 0, 0, -263, 0, 0, -98, 0, 0, -85, -185, 0, 0, 0, 0, 0,
- -204, 0, 0, 0, -282, 0, -276, 0, 0, 0, -205, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -155, 0,
- -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, -108, -57, 0, 0, -209,
- 0, 0, 0, 0, 0, -175, 0, 0, -239, -258, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -178, 0, 0, 0, -187, 0, -229, 0,
- 0, -232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 0, 0, 0, 0, 0, -210, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -254, 0, 0, -212, 0, 0, 0, -233, 0, 0, 0, 0, -186, -213, 0, -214, -250, 0, -215, 0, 0, 0, -256,
- 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, 0, -262, 0, -218, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -257, 0, 0, -266, -198, 0, 0, -196, 0, 0, 0, 0, 0, 0, 0, 0, -219, 0, 0, 0, 0, 0, -287, 0,
- 0, 0, -220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -225, -261, 0, 0, -203, -243, 0, -289, 0, 0, 0, 0, -268, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -275, -181, 0, 0, -244, -281, 0, -291, 0, 0, -43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -288, 0, 0, 0, 0,
- -1, 0, 0, 0, -259, -153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -19, -273, 0, 0, -144, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -140, 0, 0, 0, 0, 0, -55, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -199, -286, 0, -145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, 0, 0, -88,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, 0, 0, 0, 0, 0, 0, 0, 0, 0, -241, 0, 0, -142, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -231, -246, 0, 0, -245, 0, 0, 0, 0, -143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -11, 0, 0, 0, 0,
- -14, -182, 0, 0, 0, 0, 0, 0, 0, -16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, -135, 0, 0, 0, 0, 0, 0, 0, -136, 0, 0,
- 0, -167, 0, 0, 0, 0, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, -264, 0, 0, 0,
- 0, 0, -237, 0, 0, 0, 0, 0, 0, -222, 0, 0, 0, 0, 0, 0, 0, 0, 0, -253, 0, 0, 0, 0, -272, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -285, 0, 0, 0, 0, 0, 0, 0, 0, 0, -158, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, 0, 0, 0, 0, 0,
- 0, 0, -170, 0, 0, 0, -171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static short baseCheck[] = BaseCheck.baseCheck;
-
- @Override
- public final int baseCheck(int index) {
- return baseCheck[index];
- }
-
- public final static short rhs[] = baseCheck;
-
- @Override
- public final int rhs(int index) {
- return rhs[index];
- }
-
- public interface BaseAction {
- public final static char baseAction[] = { 107, 2, 125, 40, 40, 23, 23, 45, 45, 17, 17, 1, 1, 3, 3, 3, 3, 4, 4,
- 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 78, 78, 90, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9, 10, 10, 10,
- 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 13, 14, 14, 15, 15, 16, 16, 18, 18, 19, 19, 20, 20, 22, 22, 22,
- 22, 22, 22, 22, 22, 22, 22, 22, 22, 29, 27, 21, 108, 108, 91, 91, 56, 30, 30, 30, 30, 30, 30, 30, 31,
- 31, 31, 28, 28, 92, 92, 68, 68, 32, 32, 33, 33, 33, 63, 63, 34, 34, 34, 34, 34, 35, 35, 35, 35, 35, 47,
- 47, 24, 24, 24, 24, 24, 48, 48, 48, 84, 84, 79, 79, 79, 79, 80, 80, 80, 81, 81, 81, 82, 82, 82, 83, 83,
- 83, 93, 93, 85, 85, 86, 49, 51, 51, 51, 51, 51, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 72,
- 69, 69, 109, 110, 74, 74, 70, 70, 70, 87, 94, 94, 95, 95, 88, 88, 88, 57, 111, 111, 96, 97, 97, 97, 71,
- 71, 112, 98, 98, 99, 99, 89, 89, 25, 26, 26, 26, 50, 52, 52, 41, 41, 41, 41, 37, 37, 38, 42, 42, 43, 39,
- 39, 100, 100, 44, 114, 114, 113, 113, 46, 46, 46, 46, 46, 46, 46, 46, 46, 101, 54, 54, 54, 54, 36, 75,
- 75, 66, 66, 66, 67, 67, 58, 58, 115, 115, 77, 77, 76, 76, 76, 59, 59, 59, 60, 61, 61, 61, 62, 62, 62,
- 62, 73, 73, 53, 53, 55, 117, 116, 116, 116, 116, 102, 118, 119, 119, 120, 120, 121, 121, 107, 107, 122,
- 122, 103, 103, 103, 103, 123, 123, 104, 104, 104, 105, 106, 106, 292, 1606, 998, 17, 21, 18, 1133, 949,
- 45, 1152, 1171, 1156, 1194, 1175, 1219, 1200, 1248, 622, 1223, 1254, 75, 331, 92, 359, 176, 136, 214,
- 1426, 20, 505, 17, 21, 18, 1133, 43, 45, 1152, 1171, 1156, 1194, 1175, 1219, 1200, 1248, 908, 1824,
- 2191, 285, 138, 135, 137, 161, 944, 703, 525, 225, 234, 668, 587, 1610, 1051, 180, 337, 242, 140, 167,
- 358, 232, 1355, 144, 147, 150, 153, 754, 340, 333, 1115, 136, 214, 1501, 368, 2105, 2110, 2119, 1544,
- 136, 214, 322, 835, 1407, 20, 1559, 17, 21, 18, 1133, 41, 525, 225, 233, 146, 135, 137, 161, 419, 1313,
- 1519, 789, 138, 135, 137, 161, 703, 666, 225, 230, 443, 220, 610, 222, 224, 128, 275, 541, 140, 167, 90,
- 587, 188, 144, 147, 150, 153, 403, 340, 270, 783, 926, 273, 1501, 368, 2105, 2110, 2119, 1544, 1426, 20,
- 211, 17, 21, 18, 1133, 43, 45, 1152, 1171, 1156, 1194, 1175, 1765, 527, 1350, 20, 551, 17, 21, 18, 1133,
- 949, 45, 1152, 1171, 1156, 1194, 1175, 1219, 1200, 1248, 440, 1223, 1254, 75, 1124, 282, 1265, 20, 551,
- 17, 21, 18, 1133, 949, 45, 1152, 1171, 1156, 1194, 1175, 1219, 1200, 1248, 226, 1223, 1254, 75, 296,
- 282, 256, 214, 314, 595, 324, 402, 987, 283, 1451, 1269, 1426, 20, 442, 17, 21, 18, 1133, 43, 45, 1152,
- 1171, 1156, 1194, 1175, 1219, 1200, 1775, 288, 412, 833, 283, 1335, 1269, 1242, 20, 324, 17, 21, 18,
- 1133, 949, 45, 1152, 1171, 1156, 1194, 1175, 1219, 1200, 1248, 290, 1223, 1254, 75, 892, 282, 289, 1426,
- 20, 501, 17, 21, 18, 1133, 43, 45, 1152, 1171, 1156, 1676, 1766, 129, 587, 187, 314, 587, 31, 1426, 20,
- 291, 17, 21, 18, 1133, 43, 40, 283, 913, 1269, 1369, 20, 421, 17, 21, 18, 1133, 949, 45, 1152, 1171,
- 1156, 1194, 1175, 1219, 1200, 1248, 159, 1223, 1254, 75, 311, 282, 1199, 20, 1360, 17, 21, 18, 1133,
- 949, 45, 1152, 1171, 1156, 1194, 1175, 1219, 1200, 1248, 295, 1223, 1254, 75, 229, 339, 1108, 180, 833,
- 358, 1436, 1682, 313, 283, 1004, 1269, 829, 1857, 531, 294, 749, 1426, 20, 240, 17, 21, 18, 1133, 43,
- 45, 1645, 136, 214, 292, 1426, 20, 25, 17, 21, 18, 1133, 43, 45, 1152, 1171, 1156, 1194, 1175, 1219,
- 1786, 1466, 831, 658, 105, 138, 135, 137, 161, 1426, 20, 228, 17, 21, 18, 1133, 43, 45, 1152, 1171,
- 1734, 140, 167, 587, 31, 1387, 144, 147, 150, 153, 284, 340, 326, 672, 587, 189, 1501, 368, 2105, 2110,
- 2119, 1544, 1388, 20, 2180, 17, 21, 18, 1133, 949, 45, 1152, 1171, 1156, 1194, 1175, 1219, 1200, 1248,
- 261, 1223, 1254, 75, 440, 810, 1223, 20, 440, 17, 21, 18, 1133, 949, 45, 1152, 1171, 1156, 1194, 1175,
- 1219, 1200, 1248, 1285, 1223, 1254, 75, 231, 1567, 1426, 20, 1574, 17, 21, 18, 1133, 949, 45, 1152,
- 1171, 1156, 1194, 1175, 1219, 1200, 1248, 241, 1223, 1254, 75, 359, 92, 1426, 20, 24, 17, 21, 18, 1133,
- 43, 45, 1152, 1171, 1156, 1194, 1175, 1219, 1200, 1248, 277, 1223, 1254, 94, 1426, 20, 418, 17, 21, 18,
- 1133, 949, 45, 1152, 1171, 1156, 1194, 1175, 1219, 1200, 1248, 244, 1223, 1254, 75, 986, 86, 1426, 20,
- 998, 17, 21, 18, 1133, 43, 45, 1152, 1171, 1740, 1535, 1426, 20, 125, 17, 21, 18, 1133, 43, 39, 1426,
- 20, 1559, 17, 21, 18, 1133, 949, 45, 1152, 1171, 1156, 1194, 1175, 1219, 1200, 1248, 440, 1223, 1254,
- 75, 1126, 85, 1426, 20, 181, 17, 21, 18, 1133, 949, 45, 1152, 1171, 1156, 1194, 1175, 1219, 1200, 1248,
- 19, 1223, 1254, 75, 235, 84, 1426, 20, 1132, 17, 21, 18, 1133, 949, 45, 1152, 1171, 1156, 1194, 1175,
- 1219, 1200, 1248, 440, 1223, 1254, 75, 1441, 83, 1426, 20, 384, 17, 21, 18, 1133, 949, 45, 1152, 1171,
- 1156, 1194, 1175, 1219, 1200, 1248, 1573, 1223, 1254, 75, 440, 82, 1426, 20, 276, 17, 21, 18, 1133, 949,
- 45, 1152, 1171, 1156, 1194, 1175, 1219, 1200, 1248, 440, 1223, 1254, 75, 1591, 81, 1426, 20, 440, 17,
- 21, 18, 1133, 949, 45, 1152, 1171, 1156, 1194, 1175, 1219, 1200, 1248, 23, 1223, 1254, 75, 440, 80,
- 1426, 20, 1750, 17, 21, 18, 1133, 949, 45, 1152, 1171, 1156, 1194, 1175, 1219, 1200, 1248, 440, 1223,
- 1254, 75, 1772, 79, 1426, 20, 440, 17, 21, 18, 1133, 949, 45, 1152, 1171, 1156, 1194, 1175, 1219, 1200,
- 1248, 1808, 1223, 1254, 75, 440, 78, 1426, 20, 274, 17, 21, 18, 1133, 949, 45, 1152, 1171, 1156, 1194,
- 1175, 1219, 1200, 1248, 440, 1223, 1254, 75, 280, 77, 1426, 20, 440, 17, 21, 18, 1133, 949, 45, 1152,
- 1171, 1156, 1194, 1175, 1219, 1200, 1248, 1988, 1223, 1254, 75, 440, 76, 1426, 20, 281, 17, 21, 18,
- 1133, 949, 45, 1152, 1171, 1156, 1194, 1175, 1219, 1200, 1248, 440, 1223, 1254, 75, 1852, 1850, 1426,
- 20, 1471, 17, 21, 18, 1133, 949, 45, 1152, 1171, 1156, 1194, 1175, 1219, 1200, 1248, 1874, 1223, 1254,
- 75, 1055, 1871, 1426, 20, 876, 17, 21, 18, 1133, 949, 45, 1152, 1171, 1156, 1194, 1175, 1219, 1200,
- 1248, 663, 1223, 1254, 75, 630, 93, 1426, 20, 331, 17, 21, 18, 1133, 43, 45, 1152, 1171, 1156, 1194,
- 1175, 1219, 1200, 1248, 345, 1223, 1254, 94, 1426, 20, 796, 17, 21, 18, 1133, 949, 45, 1152, 1171, 1156,
- 1194, 1175, 1219, 1200, 1248, 1520, 1223, 1254, 75, 931, 74, 1426, 20, 288, 17, 21, 18, 1133, 43, 45,
- 1658, 1426, 20, 213, 17, 21, 18, 1133, 43, 45, 1152, 1171, 1156, 1194, 1175, 1219, 1200, 1248, 751,
- 1223, 1254, 94, 1426, 20, 550, 17, 21, 18, 1133, 43, 45, 1152, 1171, 1156, 1194, 1175, 1219, 1200, 1248,
- 1067, 1223, 1254, 94, 1426, 20, 1064, 17, 21, 18, 1133, 43, 45, 1152, 1171, 1753, 1426, 20, 203, 17, 21,
- 18, 1133, 43, 45, 1152, 1171, 1156, 1194, 1175, 1219, 1200, 1248, 331, 1223, 1254, 94, 1426, 20, 1872,
- 17, 21, 18, 1133, 43, 45, 1152, 1171, 1156, 1194, 1175, 1219, 1200, 1248, 1069, 1223, 1254, 94, 1445,
- 20, 589, 17, 21, 18, 1133, 34, 178, 1414, 316, 1762, 1426, 20, 204, 17, 21, 18, 1133, 43, 45, 1152,
- 1171, 1156, 1686, 111, 587, 1507, 358, 87, 658, 1295, 1472, 890, 626, 1917, 96, 1445, 109, 95, 97, 98,
- 99, 100, 419, 908, 789, 1623, 708, 1, 1414, 316, 1472, 793, 1464, 110, 256, 214, 255, 214, 946, 126,
- 1518, 587, 297, 88, 111, 54, 232, 331, 87, 1494, 358, 1472, 1728, 308, 107, 96, 1445, 109, 95, 97, 98,
- 99, 100, 1289, 20, 58, 17, 21, 18, 1133, 43, 36, 315, 331, 110, 666, 225, 230, 1376, 219, 610, 222, 224,
- 668, 275, 986, 498, 235, 1414, 316, 264, 358, 1104, 318, 622, 108, 986, 268, 783, 926, 273, 1443, 124,
- 247, 111, 941, 1205, 2071, 87, 668, 1523, 1472, 766, 112, 265, 96, 1445, 109, 95, 97, 98, 99, 100, 419,
- 419, 1546, 1717, 1965, 278, 1683, 703, 666, 225, 1323, 110, 220, 610, 222, 1275, 60, 128, 196, 666, 225,
- 230, 986, 219, 610, 222, 224, 582, 275, 1146, 262, 358, 107, 2111, 494, 986, 119, 1414, 316, 127, 905,
- 268, 783, 926, 273, 986, 331, 355, 1119, 1396, 1712, 998, 123, 111, 136, 214, 1508, 87, 1041, 358, 1472,
- 477, 2224, 172, 96, 1445, 109, 95, 97, 98, 99, 100, 1108, 180, 355, 986, 1422, 143, 135, 137, 161, 106,
- 668, 110, 666, 225, 582, 1261, 219, 610, 222, 535, 2229, 142, 167, 359, 205, 136, 214, 160, 392, 1178,
- 1319, 20, 108, 17, 21, 18, 1133, 43, 44, 666, 225, 230, 735, 219, 610, 222, 224, 1490, 139, 135, 137,
- 161, 1445, 20, 160, 17, 21, 18, 1133, 33, 156, 528, 360, 243, 141, 167, 1118, 733, 577, 145, 148, 151,
- 154, 1489, 340, 558, 480, 1414, 789, 1112, 1465, 658, 28, 28, 1269, 1269, 706, 156, 528, 382, 587, 299,
- 868, 111, 1422, 577, 745, 87, 256, 214, 28, 1480, 1269, 1387, 96, 1445, 1512, 95, 97, 98, 99, 100, 1426,
- 20, 1486, 17, 21, 18, 1133, 43, 45, 1152, 1171, 1156, 1194, 1768, 521, 1414, 789, 666, 225, 230, 367,
- 219, 610, 222, 224, 260, 874, 786, 658, 658, 477, 111, 1846, 764, 1455, 87, 562, 1414, 789, 908, 998,
- 2201, 96, 1445, 104, 95, 97, 98, 99, 100, 198, 1472, 358, 111, 2084, 312, 890, 87, 603, 1414, 789, 868,
- 279, 1422, 96, 1445, 102, 95, 97, 98, 99, 100, 664, 1610, 309, 111, 200, 201, 1284, 87, 899, 255, 214,
- 1473, 1286, 182, 96, 1445, 103, 95, 97, 98, 99, 100, 644, 1414, 789, 1430, 666, 225, 230, 1464, 219,
- 610, 222, 224, 1161, 1432, 2207, 1220, 1500, 111, 672, 1846, 193, 87, 685, 1414, 789, 1141, 858, 1868,
- 96, 1445, 120, 95, 97, 98, 99, 100, 1411, 1358, 998, 111, 1000, 1426, 20, 87, 17, 21, 18, 1133, 43, 38,
- 96, 1445, 115, 95, 97, 98, 99, 100, 726, 1414, 789, 998, 331, 199, 201, 1289, 20, 210, 17, 21, 18, 1133,
- 43, 36, 1467, 111, 1381, 1624, 1926, 87, 767, 1414, 789, 206, 711, 1788, 96, 1445, 1867, 95, 97, 98, 99,
- 100, 1811, 904, 1499, 111, 668, 359, 359, 87, 808, 1414, 789, 248, 614, 1503, 96, 1445, 114, 95, 97, 98,
- 99, 100, 2088, 1142, 933, 111, 658, 359, 359, 87, 849, 1414, 789, 355, 2340, 1422, 96, 1445, 122, 95,
- 97, 98, 99, 100, 2340, 22, 245, 111, 198, 1426, 20, 87, 17, 21, 18, 1133, 43, 37, 96, 1445, 121, 95, 97,
- 98, 99, 100, 2340, 246, 296, 2340, 666, 225, 230, 359, 219, 610, 222, 224, 349, 2340, 376, 1473, 1484,
- 1426, 20, 160, 17, 21, 18, 1133, 43, 45, 1152, 1171, 1763, 306, 355, 986, 1422, 195, 1426, 20, 420, 17,
- 21, 18, 1133, 43, 45, 1152, 1630, 2340, 194, 298, 2242, 358, 2340, 789, 157, 528, 2340, 622, 2340, 1426,
- 20, 305, 17, 21, 18, 1133, 43, 35, 2340, 666, 225, 230, 88, 219, 610, 222, 224, 2340, 1849, 1005, 986,
- 2085, 1426, 20, 494, 17, 21, 18, 1133, 43, 45, 1152, 1640, 703, 666, 225, 230, 118, 220, 610, 222, 224,
- 278, 406, 2340, 376, 1426, 20, 2340, 17, 21, 18, 1133, 43, 36, 2340, 2340, 302, 304, 310, 306, 389,
- 1061, 2340, 1812, 275, 2340, 420, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2011, 2340, 268, 783,
- 926, 273, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 305, 2340, 2340, 1426, 20, 1041, 17, 21, 18,
- 1133, 43, 48, 2340, 950, 2340, 658, 1426, 20, 275, 17, 21, 18, 1133, 43, 47, 2340, 992, 950, 658, 658,
- 1339, 268, 783, 926, 273, 1426, 20, 1387, 17, 21, 18, 1133, 43, 46, 2340, 2340, 2340, 1003, 267, 668,
- 198, 1387, 1062, 664, 1610, 2340, 303, 304, 310, 2340, 2340, 1449, 2340, 668, 2340, 2340, 703, 392,
- 2340, 2340, 2340, 260, 136, 214, 2340, 2340, 275, 136, 214, 1060, 1455, 2088, 2340, 1473, 2340, 260,
- 136, 214, 2340, 270, 783, 926, 273, 1060, 1455, 149, 135, 137, 161, 2340, 152, 135, 137, 161, 358, 358,
- 316, 316, 2340, 155, 135, 137, 161, 358, 193, 316, 2340, 1479, 2340, 316, 1696, 1868, 890, 2340, 2340,
- 88, 88, 2340, 198, 198, 2340, 895, 895, 1084, 88, 658, 2340, 198, 88, 2340, 895, 1472, 210, 1084, 116,
- 658, 2340, 255, 214, 890, 2340, 1757, 1624, 2340, 2340, 2340, 1479, 1387, 789, 2340, 2340, 2030, 2030,
- 2340, 2214, 2340, 1479, 1387, 789, 2340, 2030, 1479, 2340, 789, 255, 214, 2340, 88, 2340, 2340, 1517,
- 768, 941, 116, 1479, 2340, 789, 88, 2340, 2340, 968, 260, 88, 116, 358, 2340, 789, 498, 116, 764, 1455,
- 260, 2340, 2340, 358, 88, 789, 2340, 2340, 1087, 1455, 116, 358, 2340, 789, 88, 358, 2340, 789, 1547,
- 2340, 1790, 2340, 1108, 1617, 88, 2340, 2340, 358, 1941, 789, 995, 2340, 88, 1106, 2340, 2340, 88, 2340,
- 1014, 2340, 2340, 2340, 1033, 2340, 2340, 2340, 1125, 2340, 88, 2340, 2340, 2340, 2340, 2340, 1079,
- 2340, 0, 11, 227, 0, 2348, 1, 0, 1, 2578, 0, 8, 10, 0, 1845, 119, 0, 180, 20, 0, 1, 2567, 0, 113, 1830,
- 0 };
- }
-
- public final static char baseAction[] = BaseAction.baseAction;
-
- @Override
- public final int baseAction(int index) {
- return baseAction[index];
- }
-
- public final static char lhs[] = baseAction;
-
- @Override
- public final int lhs(int index) {
- return lhs[index];
- }
-
- public interface TermCheck {
- public final static byte termCheck[] = { 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
- 45, 46, 47, 48, 49, 50, 51, 52, 0, 54, 55, 56, 0, 58, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
- 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 59, 54, 55, 56, 59, 58, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
- 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
- 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 54, 55, 56, 0, 58, 0, 1, 2, 3, 4,
- 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 59, 54, 55, 56, 0,
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
- 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 54,
- 55, 56, 0, 1, 2, 3, 0, 5, 2, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 23, 2, 25, 26,
- 27, 28, 29, 0, 1, 0, 3, 0, 1, 6, 3, 6, 0, 6, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 54, 55,
- 56, 0, 1, 2, 3, 4, 5, 0, 1, 2, 0, 0, 0, 1, 2, 4, 4, 5, 78, 0, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
- 29, 19, 20, 21, 22, 23, 0, 25, 26, 27, 28, 29, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 54,
- 55, 56, 0, 1, 2, 3, 4, 5, 0, 53, 69, 70, 71, 72, 0, 0, 60, 0, 73, 4, 65, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 69, 70, 71, 72, 0, 22, 0, 0, 4, 61, 4, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0,
- 54, 55, 56, 61, 22, 53, 0, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 0, 66, 73, 0, 1, 2, 3, 4, 5, 6, 7, 8,
- 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 57, 60, 0, 22, 61, 24, 0, 1, 6, 3, 0, 30, 31, 32, 33, 34, 35, 36,
- 37, 38, 39, 40, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 0, 0, 1, 22, 3, 24,
- 69, 70, 71, 72, 0, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
- 13, 14, 15, 16, 17, 18, 0, 0, 1, 22, 3, 24, 0, 1, 0, 3, 2, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 0, 1, 2, 22, 0, 24, 2, 0, 0, 81, 82,
- 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
- 17, 18, 0, 0, 1, 22, 3, 24, 0, 7, 8, 0, 0, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 0, 1, 2, 3, 4, 5,
- 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 74, 75, 0, 22, 0, 24, 2, 0, 1, 7, 8, 30, 31, 32, 33, 34,
- 35, 36, 37, 38, 39, 40, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 0, 74, 75, 22,
- 0, 24, 0, 7, 8, 0, 6, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
- 12, 13, 14, 15, 16, 17, 18, 0, 0, 1, 22, 3, 24, 6, 0, 0, 2, 0, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
- 40, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 73, 77, 0, 22, 0, 24, 0, 5, 0, 5,
- 4, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
- 17, 18, 0, 1, 2, 22, 76, 24, 0, 1, 0, 3, 4, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 0, 58, 0, 19,
- 20, 21, 4, 23, 24, 25, 26, 27, 28, 29, 0, 0, 2, 0, 0, 19, 20, 21, 4, 0, 22, 41, 42, 43, 44, 45, 46, 47,
- 48, 49, 50, 51, 52, 59, 54, 55, 56, 0, 58, 0, 1, 30, 3, 4, 62, 63, 9, 0, 1, 2, 0, 4, 0, 1, 2, 57, 0, 5,
- 19, 20, 21, 5, 23, 24, 25, 26, 27, 28, 29, 19, 20, 21, 53, 23, 60, 25, 26, 27, 28, 29, 41, 42, 43, 44,
- 45, 46, 47, 48, 49, 50, 51, 52, 0, 54, 55, 56, 4, 58, 0, 1, 53, 3, 4, 0, 0, 53, 0, 60, 4, 0, 0, 0, 2, 2,
- 22, 4, 0, 19, 20, 21, 64, 23, 24, 25, 26, 27, 28, 29, 19, 20, 21, 0, 23, 0, 25, 26, 27, 28, 29, 41, 42,
- 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 54, 55, 56, 0, 58, 0, 1, 2, 3, 0, 58, 53, 53, 59, 5, 0, 0, 2,
- 0, 60, 5, 0, 4, 0, 19, 20, 21, 6, 23, 6, 25, 26, 27, 28, 29, 19, 20, 21, 0, 23, 22, 25, 26, 27, 28, 29,
- 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 54, 55, 56, 0, 1, 6, 3, 0, 1, 53, 0, 1, 2, 0, 0, 5,
- 57, 67, 68, 0, 61, 0, 19, 20, 21, 4, 23, 0, 25, 26, 27, 28, 29, 19, 20, 21, 0, 0, 19, 20, 21, 0, 0, 64,
- 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 54, 55, 56, 19, 20, 21, 53, 23, 0, 25, 26, 27, 28,
- 29, 64, 0, 0, 61, 19, 20, 21, 57, 6, 53, 60, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 1, 2, 3,
- 4, 5, 0, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 77, 0, 0, 79, 23, 0, 1, 2, 3, 4, 5, 9, 7, 8, 9,
- 10, 11, 12, 13, 14, 15, 16, 17, 18, 0, 1, 2, 3, 23, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 0, 57, 0, 65, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 0, 0, 0, 2, 65, 0, 1, 2,
- 3, 4, 5, 0, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 0, 0, 0, 0, 0, 0, 19, 20, 21, 4, 57, 0, 1, 2,
- 3, 58, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 53, 0, 0, 2, 0, 0, 5, 0, 62, 63, 62, 63, 0, 1,
- 2, 3, 65, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 0, 1, 2, 3, 60, 5, 6, 7, 8, 9, 10, 11, 12,
- 13, 14, 15, 16, 17, 18, 0, 1, 2, 3, 53, 5, 0, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 0, 1, 2, 3,
- 0, 5, 0, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 0, 1, 2, 3, 0, 5, 0, 7, 8, 9, 10, 11, 12, 13, 14,
- 15, 16, 17, 18, 0, 1, 2, 3, 0, 5, 0, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 0, 0, 0, 0, 19, 20,
- 21, 0, 23, 2, 25, 26, 27, 28, 29, 0, 0, 10, 11, 4, 0, 5, 0, 76, 4, 0, 0, 5, 62, 63, 62, 63, 6, 0, 0, 0,
- 0, 22, 4, 0, 53, 0, 22, 0, 19, 20, 21, 6, 0, 6, 0, 0, 0, 66, 6, 0, 0, 57, 57, 0, 53, 0, 0, 0, 0, 0, 64,
- 0, 0, 0, 0, 0, 0, 66, 0, 60, 0, 57, 0, 0, 0, 78, 0, 67, 68, 0, 0, 80, 0, 67, 68, 0, 58, 57, 59, 0, 0, 0,
- 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 59, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static byte termCheck[] = TermCheck.termCheck;
-
- @Override
- public final int termCheck(int index) {
- return termCheck[index];
- }
-
- public interface TermAction {
- public final static char termAction[] = { 0, 2340, 4170, 1, 4169, 1488, 1, 660, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 2349, 1, 2441, 1, 1, 1, 1, 1, 1361, 854, 812, 1434, 1394, 1620, 1329, 1353, 1380, 1371,
- 1375, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2340, 1, 1, 1, 2340, 2347, 8, 2325, 2325, 2325, 2325, 2325,
- 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325,
- 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325,
- 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 1670, 2325, 2325, 2325,
- 1692, 2325, 2340, 4170, 1, 4169, 1488, 1, 660, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2349, 1,
- 2441, 1, 1, 1, 1, 1, 1361, 854, 812, 1434, 1394, 1620, 1329, 1353, 1380, 1371, 1375, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 2340, 1, 1, 1, 183, 2347, 2340, 4170, 1, 4169, 2350, 1, 660, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 2349, 1, 2441, 1, 1, 1, 1, 1, 1361, 854, 812, 1434, 1394, 1620, 1329, 1353, 1380,
- 1371, 1375, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1714, 1, 1, 1, 2340, 4170, 1, 4169, 2350, 1, 660, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2349, 1, 2441, 1, 1, 1, 1, 1, 1361, 854, 812, 1434, 1394, 1620,
- 1329, 1353, 1380, 1371, 1375, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 71, 1, 1, 1, 2340, 2351, 2162, 2352,
- 11, 2014, 2316, 1893, 1791, 1967, 1596, 1327, 405, 2353, 2354, 2355, 2356, 869, 600, 2555, 2556, 2557,
- 2340, 2504, 360, 2505, 2503, 2558, 2506, 2502, 2340, 2351, 2340, 2352, 2340, 2351, 661, 2352, 552, 254,
- 1399, 2509, 2514, 2513, 2511, 2512, 2510, 2515, 2516, 2508, 2517, 2518, 2519, 60, 1499, 439, 345, 2340,
- 1, 1, 1, 2350, 1, 1, 2567, 1940, 1, 2340, 20, 180, 2331, 2344, 2331, 2331, 533, 62, 1, 1, 1, 2349, 1,
- 2647, 1, 1, 1, 1, 1, 180, 180, 180, 2331, 180, 43, 180, 180, 180, 180, 180, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 158, 1, 1, 1, 2340, 1, 1, 1, 2350, 1, 2340, 2331, 1927, 1273, 856, 710, 184, 1, 2331, 287, 301,
- 2350, 2343, 1, 1, 1, 2349, 1, 2647, 1, 1, 1, 1, 1, 1927, 1273, 856, 710, 2340, 2349, 236, 2340, 2346,
- 1085, 224, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2340, 1, 1, 1, 556, 224, 1252, 2340, 1062, 1039, 1016,
- 993, 970, 924, 947, 901, 878, 833, 61, 1390, 300, 2340, 4170, 1, 4169, 2350, 1, 660, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 224, 2345, 230, 2349, 224, 2441, 186, 4160, 233, 4160, 2340, 1361, 854, 812, 1434,
- 1394, 1620, 1329, 1353, 1380, 1371, 1375, 2340, 4170, 1, 4169, 2350, 1, 660, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 2340, 185, 4162, 2349, 4162, 2441, 1927, 1273, 856, 710, 73, 1361, 854, 812, 1434, 1394, 1620,
- 1329, 1353, 1380, 1371, 1375, 2340, 4170, 1, 4169, 2350, 1, 660, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 2340, 207, 4167, 2349, 4167, 2441, 2340, 2351, 2340, 2352, 2175, 1361, 854, 812, 1434, 1394, 1620, 1329,
- 1353, 1380, 1371, 1375, 2340, 4170, 1, 4169, 2350, 1, 660, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 254,
- 2567, 1940, 2349, 2340, 2441, 2262, 2340, 63, 343, 2252, 1361, 854, 812, 1434, 1394, 1620, 1329, 1353,
- 1380, 1371, 1375, 2340, 4170, 1, 4169, 2350, 1, 660, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 52, 209, 2351,
- 2349, 2352, 2441, 2340, 1221, 673, 64, 2340, 1361, 854, 812, 1434, 1394, 1620, 1329, 1353, 1380, 1371,
- 1375, 2340, 4170, 1, 4169, 2350, 1, 660, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1339, 580, 54, 2349, 2340,
- 2441, 2270, 2340, 2579, 1221, 673, 1361, 854, 812, 1434, 1394, 1620, 1329, 1353, 1380, 1371, 1375, 2340,
- 4170, 1, 4169, 2350, 1, 660, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 53, 1339, 580, 2349, 2340, 2441, 69,
- 1221, 673, 2340, 1503, 1361, 854, 812, 1434, 1394, 1620, 1329, 1353, 1380, 1371, 1375, 2340, 4170, 1,
- 4169, 2350, 1, 660, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 208, 374, 2349, 374, 2441, 660, 2340, 2340,
- 2274, 67, 1361, 854, 812, 1434, 1394, 1620, 1329, 1353, 1380, 1371, 1375, 2340, 4170, 1, 4169, 2350, 1,
- 660, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2315, 686, 2340, 2349, 2340, 2441, 1, 1179, 2340, 1302, 2319,
- 1361, 854, 812, 1434, 1394, 1620, 1329, 1353, 1380, 1371, 1375, 2340, 4170, 1, 4169, 2350, 1, 660, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2567, 1940, 2349, 461, 2441, 2340, 1, 55, 1, 192, 1361, 854, 812, 1434,
- 1394, 1620, 1329, 1353, 1380, 1371, 1375, 2340, 2347, 2340, 1, 1, 1, 2350, 1, 2537, 1, 1, 1, 1, 1, 2340,
- 119, 2286, 2340, 1, 2555, 2556, 2557, 2346, 221, 2349, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1231, 1, 1,
- 1, 65, 192, 2340, 1, 2328, 1, 191, 1944, 1990, 1656, 1, 2334, 1454, 131, 2346, 263, 2567, 1454, 1877, 1,
- 1, 1, 1, 1, 254, 1, 2537, 1, 1, 1, 1, 1, 2555, 2556, 2557, 635, 2504, 2345, 2505, 2503, 2558, 2506,
- 2502, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2340, 1, 1, 1, 2350, 191, 2340, 1, 635, 1, 192, 2340, 2340,
- 635, 2340, 2345, 2348, 132, 223, 1, 1372, 1987, 2349, 2346, 2340, 1, 1, 1, 2599, 1, 2537, 1, 1, 1, 1, 1,
- 2555, 2556, 2557, 2340, 2504, 2340, 2505, 2503, 2558, 2506, 2502, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 2340, 1, 1, 1, 2340, 192, 1, 521, 1940, 2352, 49, 2347, 635, 635, 1198, 2093, 266, 133, 1987, 237, 2345,
- 1, 2340, 224, 230, 2555, 2556, 2557, 1531, 2504, 234, 2505, 2503, 2558, 2506, 2502, 2555, 2556, 2557, 1,
- 2504, 224, 2505, 2503, 2558, 2506, 2502, 2509, 2514, 2513, 2511, 2512, 2510, 2515, 2516, 2508, 2517,
- 2518, 2519, 2340, 1499, 439, 345, 2340, 2351, 1708, 2352, 1, 2322, 635, 269, 2567, 1454, 212, 250, 254,
- 224, 2074, 2061, 249, 224, 2340, 2555, 2556, 2557, 2346, 2504, 272, 2505, 2503, 2558, 2506, 2502, 1, 1,
- 1, 70, 113, 2555, 2556, 2557, 130, 2340, 2599, 2509, 2514, 2513, 2511, 2512, 2510, 2515, 2516, 2508,
- 2517, 2518, 2519, 251, 1499, 439, 345, 2555, 2556, 2557, 635, 2504, 2340, 2505, 2503, 2558, 2506, 2502,
- 2599, 2340, 42, 1177, 1, 1, 1, 1834, 4153, 635, 2345, 2509, 2514, 2513, 2511, 2512, 2510, 2515, 2516,
- 2508, 2517, 2518, 2519, 1, 2351, 2162, 2352, 2344, 1412, 257, 1893, 1791, 1967, 1596, 1327, 405, 2353,
- 2354, 2355, 2356, 869, 600, 686, 2340, 66, 2337, 743, 2340, 2351, 2162, 2352, 2344, 1815, 1656, 1893,
- 1791, 1967, 1596, 1327, 405, 2353, 2354, 2355, 2356, 869, 600, 2340, 2351, 2162, 2352, 1131, 2014, 4153,
- 1893, 1791, 1967, 1596, 1327, 405, 2353, 2354, 2355, 2356, 869, 600, 89, 702, 2340, 2343, 1, 2351, 2162,
- 2352, 29, 2014, 4153, 1893, 1791, 1967, 1596, 1327, 405, 2353, 2354, 2355, 2356, 869, 600, 59, 271, 58,
- 1695, 2343, 2340, 2351, 2162, 2352, 2344, 2014, 252, 1893, 1791, 1967, 1596, 1327, 405, 2353, 2354,
- 2355, 2356, 869, 600, 2340, 2340, 2340, 2340, 2340, 1, 2555, 2556, 2557, 91, 1154, 2340, 2351, 2162,
- 2352, 29, 2014, 4153, 1893, 1791, 1967, 1596, 1327, 405, 2353, 2354, 2355, 2356, 869, 600, 635, 269,
- 2340, 1987, 2340, 2340, 254, 2340, 1944, 1990, 1944, 1990, 1, 2351, 2162, 2352, 2343, 2014, 4153, 1893,
- 1791, 1967, 1596, 1327, 405, 2353, 2354, 2355, 2356, 869, 600, 2340, 2351, 2162, 2352, 91, 2014, 4153,
- 1893, 1791, 1967, 1596, 1327, 405, 2353, 2354, 2355, 2356, 869, 600, 1, 2351, 2162, 2352, 635, 2014,
- 2340, 1893, 1791, 1967, 1596, 1327, 405, 2353, 2354, 2355, 2356, 869, 600, 2340, 2351, 2163, 2352, 68,
- 2014, 2340, 1893, 1791, 1967, 1596, 1327, 405, 2353, 2354, 2355, 2356, 869, 600, 2340, 2351, 2162, 2352,
- 57, 2014, 56, 1893, 1791, 1967, 1596, 1327, 405, 2353, 2354, 2355, 2356, 869, 600, 2340, 2351, 2171,
- 2352, 134, 2014, 293, 1893, 1791, 1967, 1596, 1327, 405, 2353, 2354, 2355, 2356, 869, 600, 30, 208, 1,
- 72, 2555, 2556, 2557, 32, 2504, 421, 2505, 2503, 2558, 2506, 2502, 1, 51, 2366, 2367, 117, 2340, 2093,
- 50, 461, 2350, 253, 2340, 2093, 1944, 1990, 1944, 1990, 4153, 2340, 286, 202, 30, 117, 1440, 2340, 1306,
- 190, 2349, 190, 2555, 2556, 2557, 186, 190, 185, 1, 1, 2340, 1634, 207, 2340, 2340, 2369, 3442, 2340,
- 1959, 2340, 2340, 2340, 2340, 2340, 2598, 2340, 2340, 2340, 2340, 2340, 2340, 724, 2340, 117, 2340,
- 1636, 2340, 2340, 2340, 533, 2340, 2074, 2061, 2340, 2340, 598, 2340, 2074, 2061, 2340, 1440, 500, 1285,
- 2340, 2340, 2340, 2340, 2340, 612, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2352, 2351 };
- }
-
- public final static char termAction[] = TermAction.termAction;
-
- @Override
- public final int termAction(int index) {
- return termAction[index];
- }
-
- public interface Asb {
- public final static char asb[] = { 0, 496, 1, 425, 281, 496, 427, 494, 310, 322, 492, 322, 492, 492, 322, 492,
- 322, 283, 466, 427, 416, 527, 494, 283, 201, 133, 132, 375, 48, 466, 374, 253, 492, 241, 241, 492, 241,
- 427, 466, 338, 466, 214, 283, 427, 79, 214, 26, 427, 254, 494, 102, 494, 205, 466, 330, 427, 216, 468,
- 283, 425, 141, 99, 306, 167, 269, 451, 451, 451, 451, 451, 83, 451, 451, 451, 161, 178, 183, 181, 189,
- 185, 192, 191, 194, 193, 195, 216, 129, 494, 451, 48, 374, 253, 449, 202, 202, 241, 527, 527, 436, 527,
- 527, 202, 253, 139, 451, 139, 269, 494, 102, 205, 205, 330, 330, 338, 333, 337, 427, 306, 99, 82, 79,
- 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 338, 338, 529, 269, 269, 241, 241, 3, 451, 451,
- 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 337, 129, 24,
- 251, 202, 451, 202, 267, 451, 252, 451, 451, 254, 436, 139, 436, 198, 380, 102, 129, 244, 102, 205, 207,
- 431, 207, 330, 306, 335, 336, 211, 466, 216, 451, 451, 99, 83, 26, 466, 211, 338, 338, 338, 99, 181,
- 181, 178, 178, 185, 185, 183, 183, 183, 183, 191, 189, 193, 192, 139, 194, 429, 24, 449, 202, 338, 527,
- 338, 338, 253, 436, 451, 102, 246, 207, 129, 451, 241, 306, 330, 214, 338, 535, 333, 99, 99, 529, 535,
- 341, 494, 451, 207, 45, 202, 449, 436, 451, 436, 436, 129, 201, 451, 200, 129, 330, 216, 338, 129, 22,
- 378, 241, 451, 44, 3, 202, 338, 252, 246, 451, 338, 161, 26, 99, 241, 451, 338, 3, 202, 436, 99, 436,
- 338, 436 };
- }
-
- public final static char asb[] = Asb.asb;
-
- @Override
- public final int asb(int index) {
- return asb[index];
- }
-
- public interface Asr {
- public final static byte asr[] = { 0, 73, 0, 4, 60, 12, 13, 14, 15, 16, 1, 3, 2, 10, 11, 9, 5, 7, 8, 17, 18, 0,
- 4, 58, 53, 66, 2, 13, 14, 15, 16, 1, 3, 10, 11, 9, 5, 7, 8, 17, 18, 12, 6, 0, 61, 53, 66, 0, 25, 41, 19,
- 42, 54, 26, 43, 27, 44, 45, 28, 20, 46, 47, 23, 55, 29, 56, 48, 49, 21, 50, 51, 52, 1, 3, 4, 61, 57, 22,
- 0, 19, 20, 21, 23, 10, 11, 9, 5, 7, 8, 17, 18, 12, 2, 1, 3, 13, 14, 15, 16, 65, 4, 0, 25, 41, 19, 42,
- 54, 26, 43, 27, 44, 45, 28, 20, 46, 47, 23, 55, 29, 56, 48, 49, 21, 50, 51, 52, 1, 3, 24, 4, 58, 0, 2,
- 4, 61, 57, 60, 22, 53, 59, 0, 19, 20, 21, 10, 11, 9, 5, 7, 8, 17, 18, 12, 2, 1, 3, 13, 14, 15, 16, 0,
- 53, 2, 66, 80, 10, 11, 61, 83, 84, 85, 86, 87, 89, 88, 90, 91, 92, 5, 67, 68, 7, 8, 63, 62, 69, 70, 71,
- 72, 74, 75, 9, 76, 77, 78, 58, 81, 82, 65, 60, 59, 57, 22, 4, 0, 1, 3, 4, 58, 57, 0, 5, 2, 53, 60, 4,
- 25, 41, 19, 42, 54, 26, 43, 27, 44, 45, 28, 20, 46, 47, 23, 55, 29, 56, 48, 49, 21, 50, 51, 52, 64, 1,
- 3, 0, 22, 4, 5, 1, 2, 59, 0, 73, 79, 58, 32, 34, 6, 38, 40, 35, 30, 36, 37, 33, 31, 39, 24, 4, 22, 12,
- 13, 14, 15, 16, 10, 11, 9, 7, 8, 17, 18, 5, 2, 1, 3, 54, 55, 56, 49, 41, 46, 44, 45, 43, 42, 47, 48, 50,
- 51, 52, 29, 26, 23, 25, 28, 27, 19, 20, 21, 0, 49, 41, 46, 44, 45, 43, 42, 47, 48, 50, 51, 52, 59, 22,
- 29, 26, 23, 25, 28, 27, 19, 20, 21, 5, 1, 2, 53, 57, 60, 4, 0, 9, 5, 7, 8, 67, 68, 62, 63, 69, 70, 71,
- 72, 74, 75, 76, 77, 78, 81, 82, 59, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 65, 60, 58, 6, 4, 57, 22,
- 61, 0, 66, 80, 10, 11, 9, 7, 8, 67, 68, 62, 63, 69, 70, 71, 72, 74, 75, 76, 77, 78, 81, 82, 61, 83, 84,
- 85, 86, 87, 88, 89, 90, 91, 92, 57, 53, 60, 25, 19, 26, 27, 28, 20, 23, 29, 21, 22, 4, 5, 2, 1, 0, 4,
- 57, 58, 61, 0, 32, 34, 6, 38, 40, 35, 30, 36, 37, 33, 31, 39, 24, 22, 4, 2, 13, 14, 15, 16, 1, 3, 10,
- 11, 9, 7, 8, 17, 18, 12, 5, 0, 25, 41, 19, 42, 54, 26, 43, 27, 44, 45, 28, 20, 46, 47, 23, 55, 29, 56,
- 48, 49, 21, 50, 51, 52, 1, 3, 6, 0, 73, 25, 41, 19, 42, 54, 26, 43, 27, 44, 45, 28, 20, 46, 47, 23, 55,
- 29, 56, 48, 49, 21, 50, 51, 52, 1, 3, 5, 22, 4, 24, 2, 0, 4, 60, 5, 2, 53, 0, 5, 25, 41, 19, 42, 54, 26,
- 43, 27, 44, 45, 28, 20, 46, 47, 23, 55, 29, 56, 48, 49, 21, 50, 51, 52, 1, 3, 64, 0 };
- }
-
- public final static byte asr[] = Asr.asr;
-
- @Override
- public final int asr(int index) {
- return asr[index];
- }
-
- public interface Nasb {
- public final static char nasb[] = { 0, 150, 25, 32, 15, 159, 110, 45, 121, 122, 13, 122, 108, 108, 122, 107,
- 122, 116, 165, 112, 25, 25, 45, 105, 33, 59, 59, 25, 25, 165, 25, 51, 7, 7, 7, 7, 7, 9, 25, 157, 165,
- 156, 75, 112, 63, 156, 54, 94, 69, 67, 105, 25, 105, 25, 30, 96, 89, 141, 18, 32, 42, 65, 79, 25, 168,
- 43, 43, 43, 43, 43, 64, 43, 43, 43, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 133, 105, 25, 43, 25,
- 25, 85, 81, 33, 33, 7, 25, 25, 128, 25, 25, 33, 51, 25, 43, 25, 1, 25, 137, 105, 7, 30, 105, 157, 101,
- 25, 112, 79, 65, 64, 38, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 157, 157, 103, 168, 168, 57, 57,
- 35, 82, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 82, 43, 157, 52, 105, 25,
- 33, 43, 33, 172, 82, 25, 82, 82, 69, 128, 25, 128, 25, 25, 105, 52, 32, 146, 7, 92, 25, 25, 105, 79, 59,
- 59, 100, 165, 89, 43, 43, 65, 64, 124, 165, 154, 157, 157, 157, 65, 25, 25, 25, 25, 25, 25, 25, 25, 25,
- 25, 25, 25, 25, 25, 25, 25, 25, 41, 174, 33, 157, 25, 157, 157, 85, 128, 43, 137, 112, 92, 52, 43, 7,
- 79, 38, 156, 157, 163, 26, 65, 65, 28, 163, 125, 125, 43, 92, 49, 33, 174, 128, 82, 128, 128, 52, 33,
- 43, 25, 52, 38, 89, 157, 52, 40, 25, 7, 43, 47, 174, 33, 157, 25, 112, 43, 157, 61, 54, 65, 7, 43, 157,
- 174, 33, 128, 65, 128, 157, 128 };
- }
-
- public final static char nasb[] = Nasb.nasb;
-
- @Override
- public final int nasb(int index) {
- return nasb[index];
- }
-
- public interface Nasr {
- public final static char nasr[] = { 0, 84, 82, 81, 74, 80, 79, 1, 0, 37, 39, 36, 0, 109, 0, 37, 2, 100, 84, 83,
- 82, 81, 74, 80, 79, 0, 37, 42, 61, 60, 36, 0, 2, 17, 0, 2, 108, 0, 25, 0, 102, 55, 2, 6, 0, 106, 0, 121,
- 0, 119, 0, 2, 45, 0, 6, 55, 0, 90, 0, 46, 0, 117, 0, 2, 6, 40, 0, 110, 0, 2, 24, 1, 29, 92, 0, 24, 2,
- 123, 0, 75, 0, 17, 2, 27, 0, 29, 1, 68, 45, 2, 24, 0, 78, 0, 39, 44, 37, 42, 36, 0, 23, 37, 42, 60, 61,
- 2, 0, 112, 87, 0, 39, 44, 42, 37, 2, 0, 74, 69, 70, 71, 72, 64, 48, 0, 6, 55, 53, 0, 1, 29, 2, 30, 0,
- 113, 2, 24, 0, 95, 2, 57, 0, 2, 24, 47, 28, 0, 2, 57, 88, 0, 122, 2, 24, 0, 60, 61, 2, 23, 0, 2, 24,
- 103, 0, 2, 24, 36, 54, 0, 2, 57, 27, 0, 24, 47, 2, 63, 0 };
- }
-
- public final static char nasr[] = Nasr.nasr;
-
- @Override
- public final int nasr(int index) {
- return nasr[index];
- }
-
- public interface TerminalIndex {
- public final static char terminalIndex[] = { 0, 85, 2, 86, 87, 9, 3, 10, 11, 8, 6, 7, 68, 81, 82, 83, 84, 12,
- 13, 48, 64, 76, 92, 69, 93, 44, 55, 60, 63, 72, 77, 45, 46, 49, 50, 51, 57, 58, 59, 65, 71, 47, 52, 56,
- 61, 62, 66, 67, 74, 75, 78, 79, 80, 1, 54, 70, 73, 42, 91, 29, 90, 31, 16, 17, 30, 89, 4, 14, 15, 18,
- 19, 20, 21, 94, 22, 23, 24, 25, 26, 53, 5, 27, 28, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 88 };
- }
-
- public final static char terminalIndex[] = TerminalIndex.terminalIndex;
-
- @Override
- public final int terminalIndex(int index) {
- return terminalIndex[index];
- }
-
- public interface NonterminalIndex {
- public final static char nonterminalIndex[] = { 0, 99, 0, 0, 0, 0, 101, 105, 106, 107, 108, 109, 110, 111, 112,
- 113, 114, 98, 115, 116, 0, 0, 117, 96, 126, 134, 0, 100, 122, 118, 121, 0, 0, 0, 0, 0, 0, 156, 0, 159,
- 95, 153, 155, 0, 157, 97, 158, 125, 133, 0, 0, 0, 144, 104, 154, 0, 120, 148, 167, 170, 171, 172, 0, 0,
- 136, 0, 160, 166, 124, 137, 138, 139, 140, 143, 145, 165, 169, 103, 0, 128, 129, 130, 131, 132, 135,
- 141, 142, 0, 147, 152, 102, 119, 123, 127, 0, 146, 150, 0, 0, 151, 161, 164, 174, 179, 0, 0, 181, 0, 0,
- 0, 0, 149, 0, 162, 163, 168, 173, 0, 175, 176, 0, 177, 178, 180, 0, 0 };
- }
-
- public final static char nonterminalIndex[] = NonterminalIndex.nonterminalIndex;
-
- @Override
- public final int nonterminalIndex(int index) {
- return nonterminalIndex[index];
- }
-
- public interface ScopePrefix {
- public final static char scopePrefix[] = { 82, 113, 92, 35, 41, 121, 12, 136, 21, 51, 69, 28, 47, 103, 145, 162,
- 169, 173, 149, 1, 1, 32, 56, 79, 177, 6, 107, 156, 156, 127, 99, 59, 59, 59 };
- }
-
- public final static char scopePrefix[] = ScopePrefix.scopePrefix;
-
- @Override
- public final int scopePrefix(int index) {
- return scopePrefix[index];
- }
-
- public interface ScopeSuffix {
- public final static char scopeSuffix[] = { 90, 90, 90, 4, 4, 90, 18, 142, 26, 4, 26, 26, 4, 101, 90, 26, 26, 4,
- 153, 4, 4, 26, 4, 26, 26, 9, 110, 159, 166, 130, 101, 66, 61, 74 };
- }
-
- public final static char scopeSuffix[] = ScopeSuffix.scopeSuffix;
-
- @Override
- public final int scopeSuffix(int index) {
- return scopeSuffix[index];
- }
-
- public interface ScopeLhs {
- public final static char scopeLhs[] = { 71, 69, 71, 46, 46, 69, 53, 33, 62, 46, 39, 62, 46, 88, 28, 7, 6, 6, 20,
- 121, 120, 60, 46, 37, 4, 102, 88, 8, 6, 34, 88, 39, 44, 39 };
- }
-
- public final static char scopeLhs[] = ScopeLhs.scopeLhs;
-
- @Override
- public final int scopeLhs(int index) {
- return scopeLhs[index];
- }
-
- public interface ScopeLa {
- public final static byte scopeLa[] = { 58, 58, 58, 65, 65, 58, 58, 79, 60, 65, 60, 60, 65, 22, 58, 60, 60, 65,
- 59, 65, 65, 60, 65, 60, 60, 61, 1, 60, 60, 30, 22, 2, 2, 2 };
- }
-
- public final static byte scopeLa[] = ScopeLa.scopeLa;
-
- @Override
- public final int scopeLa(int index) {
- return scopeLa[index];
- }
-
- public interface ScopeStateSet {
- public final static byte scopeStateSet[] = { 119, 119, 119, 94, 94, 119, 25, 10, 98, 94, 105, 98, 94, 5, 9, 33,
- 33, 33, 63, 1, 3, 98, 94, 105, 33, 91, 5, 36, 33, 10, 5, 105, 107, 105 };
- }
-
- public final static byte scopeStateSet[] = ScopeStateSet.scopeStateSet;
-
- @Override
- public final int scopeStateSet(int index) {
- return scopeStateSet[index];
- }
-
- public interface ScopeRhs {
- public final static char scopeRhs[] = { 0, 149, 53, 0, 95, 0, 211, 95, 0, 31, 143, 0, 171, 209, 95, 6, 148, 0,
- 97, 0, 0, 159, 95, 2, 153, 0, 96, 0, 159, 95, 2, 0, 169, 2, 0, 115, 23, 194, 95, 53, 0, 115, 194, 95,
- 23, 53, 0, 115, 23, 53, 0, 115, 194, 95, 53, 0, 115, 53, 0, 130, 0, 2, 0, 162, 96, 0, 2, 96, 0, 159, 95,
- 2, 130, 0, 2, 0, 160, 96, 0, 145, 2, 0, 171, 191, 95, 6, 94, 205, 54, 0, 97, 0, 171, 191, 95, 6, 205,
- 54, 0, 150, 0, 98, 0, 204, 95, 150, 0, 95, 150, 0, 149, 98, 0, 187, 95, 6, 203, 94, 202, 167, 0, 187,
- 95, 6, 202, 167, 0, 123, 35, 0, 77, 2, 100, 96, 98, 0, 123, 116, 120, 2, 38, 0, 53, 121, 0, 185, 95, 6,
- 0, 120, 82, 112, 0, 29, 117, 0, 170, 2, 0, 96, 106, 0, 170, 2, 12, 0, 96, 104, 0, 201, 2, 99, 0, 120,
- 53, 99, 0, 120, 2, 0 };
- }
-
- public final static char scopeRhs[] = ScopeRhs.scopeRhs;
-
- @Override
- public final int scopeRhs(int index) {
- return scopeRhs[index];
- }
-
- public interface ScopeState {
- public final static char scopeState[] = { 0, 531, 0, 551, 0, 2084, 1868, 1682, 0, 1683, 1874, 1852, 1830, 1808,
- 1772, 1750, 1714, 1508, 1692, 1670, 1436, 1620, 1376, 1335, 0, 612, 500, 1591, 1573, 477, 1574, 556, 0,
- 1596, 1327, 405, 1574, 1815, 343, 686, 533, 1656, 461, 1927, 1273, 856, 710, 1339, 580, 1221, 673, 1990,
- 1944, 2093, 2074, 2061, 2014, 1967, 1412, 1893, 1791, 869, 600, 1306, 612, 1285, 1252, 1231, 1198, 1177,
- 1154, 1131, 1108, 789, 1085, 1062, 1039, 1016, 993, 970, 947, 924, 901, 878, 833, 766, 316, 812, 743,
- 556, 635, 500, 477, 0, 926, 783, 666, 610, 2088, 392, 1987, 1454, 2030, 1387, 0, 333, 376, 1636, 392,
- 1717, 1454, 1546, 1387, 1965, 1443, 1877, 1940, 1519, 0, 316, 658, 1544, 376, 0 };
- }
-
- public final static char scopeState[] = ScopeState.scopeState;
-
- @Override
- public final int scopeState(int index) {
- return scopeState[index];
- }
-
- public interface InSymb {
- public final static char inSymb[] = { 0, 0, 200, 117, 95, 215, 95, 193, 172, 173, 167, 174, 56, 55, 175, 54,
- 176, 177, 95, 2, 1, 130, 193, 207, 186, 135, 130, 179, 137, 95, 132, 6, 202, 180, 180, 205, 180, 147,
- 129, 145, 95, 2, 95, 57, 53, 2, 61, 147, 95, 94, 6, 94, 6, 129, 5, 147, 95, 216, 95, 117, 23, 115, 95,
- 100, 2, 12, 18, 17, 8, 7, 5, 9, 11, 10, 99, 102, 104, 103, 106, 105, 108, 107, 111, 109, 112, 95, 6,
- 148, 5, 137, 132, 185, 39, 31, 33, 37, 36, 30, 35, 40, 38, 122, 6, 34, 32, 94, 95, 203, 95, 6, 95, 5,
- 129, 159, 117, 160, 95, 95, 115, 194, 168, 92, 91, 90, 88, 89, 87, 86, 85, 84, 83, 61, 170, 120, 150, 2,
- 2, 80, 66, 2, 53, 68, 67, 5, 62, 63, 8, 7, 75, 74, 72, 71, 70, 69, 76, 9, 78, 77, 82, 81, 206, 95, 6, 4,
- 120, 95, 94, 2, 2, 123, 2, 2, 95, 59, 149, 59, 184, 94, 6, 187, 150, 188, 95, 191, 94, 192, 129, 95,
- 153, 154, 2, 95, 57, 194, 23, 115, 5, 116, 95, 2, 170, 170, 201, 120, 103, 103, 102, 102, 105, 105, 104,
- 104, 104, 104, 107, 106, 109, 108, 120, 111, 57, 95, 140, 156, 120, 30, 120, 120, 185, 59, 57, 95, 95,
- 191, 171, 61, 57, 95, 168, 2, 169, 95, 147, 115, 115, 147, 95, 116, 116, 59, 209, 95, 156, 110, 116, 2,
- 116, 116, 187, 204, 59, 145, 171, 168, 95, 159, 171, 57, 211, 66, 53, 212, 110, 156, 120, 123, 57, 59,
- 159, 138, 61, 149, 66, 53, 156, 110, 116, 79, 149, 116, 156, 116 };
- }
-
- public final static char inSymb[] = InSymb.inSymb;
-
- @Override
- public final int inSymb(int index) {
- return inSymb[index];
- }
-
- public interface Name {
- public final static String name[] = { "", "[", "(", "{", ".", "->", "++", "--", "&", "*", "+", "-", "~", "!",
- "/", "%", ">>", "<<", "<", ">", "<=", ">=", "==", "!=", "^", "|", "&&", "||", "?", ":", "...", "=",
- "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", ",", "$empty", "auto", "break", "case",
- "char", "const", "continue", "default", "do", "double", "else", "enum", "extern", "float", "for",
- "goto", "if", "inline", "int", "long", "register", "restrict", "return", "short", "signed", "sizeof",
- "static", "struct", "switch", "typedef", "union", "unsigned", "void", "volatile", "while", "_Bool",
- "_Complex", "_Imaginary", "integer", "floating", "charconst", "stringlit", "identifier", "Completion",
- "EndOfCompletion", "Invalid", "RightBracket", "RightParen", "RightBrace", "SemiColon", "ERROR_TOKEN",
- "EOF_TOKEN", "]", ")", "}", ";", "identifier_token", "expression", "postfix_expression", "member_name",
- "type_id", "initializer_list", "unary_expression", "cast_expression", "multiplicative_expression",
- "additive_expression", "shift_expression", "relational_expression", "equality_expression",
- "and_expression", "exclusive_or_expression", "inclusive_or_expression", "logical_and_expression",
- "logical_or_expression", "assignment_expression", "expression_in_statement", "expression_list_actual",
- "constant_expression", "statement", "compound_statement", "block_item_list", "block_item",
- "declaration", "declaration_specifiers", "init_declarator_list", "simple_declaration_specifiers",
- "struct_or_union_declaration_sp" + "ecifiers", "elaborated_declaration_specifi" + "ers",
- "enum_declaration_specifiers", "typdef_name_declaration_specif" + "iers",
- "no_type_declaration_specifier", "type_qualifier", "no_type_declaration_specifiers",
- "simple_type_specifier", "struct_or_union_specifier", "elaborated_specifier", "enum_specifier",
- "type_name_specifier", "init_declarator", "complete_declarator", "initializer", "declarator",
- "struct_or_union", "struct_declaration_list", "struct_declaration", "specifier_qualifier_list",
- "struct_declarator_list", "complete_struct_declarator", "enumerator_list", "enumerator",
- "direct_declarator", "pointer_seq", "array_direct_declarator", "basic_direct_declarator",
- "knr_direct_declarator", "array_modifier", "function_direct_declarator", "parameter_type_list",
- "function_declarator", "identifier_list", "knr_function_declarator", "array_modifier_type_qualifiers",
- "type_qualifier_list", "parameter_list", "parameter_declaration", "complete_parameter_declarator",
- "abstract_declarator", "direct_abstract_declarator", "basic_direct_abstract_declarat" + "or",
- "array_direct_abstract_declarat" + "or", "initializer_seq", "designated_initializer", "designation",
- "designator_list", "designator", "external_declaration_list", "external_declaration",
- "declaration_list", "function_body" };
- }
-
- public final static String name[] = Name.name;
-
- @Override
- public final String name(int index) {
- return name[index];
- }
-
- public final static int ERROR_SYMBOL = 24, SCOPE_UBOUND = 33, SCOPE_SIZE = 34, MAX_NAME_LENGTH = 38;
-
- @Override
- public final int getErrorSymbol() {
- return ERROR_SYMBOL;
- }
-
- @Override
- public final int getScopeUbound() {
- return SCOPE_UBOUND;
- }
-
- @Override
- public final int getScopeSize() {
- return SCOPE_SIZE;
- }
-
- @Override
- public final int getMaxNameLength() {
- return MAX_NAME_LENGTH;
- }
-
- public final static int NUM_STATES = 291, NT_OFFSET = 93, LA_STATE_OFFSET = 2655, MAX_LA = 2147483647,
- NUM_RULES = 315, NUM_NONTERMINALS = 125, NUM_SYMBOLS = 218, SEGMENT_SIZE = 8192, START_STATE = 1922,
- IDENTIFIER_SYMBOL = 0, EOFT_SYMBOL = 73, EOLT_SYMBOL = 73, ACCEPT_ACTION = 2315, ERROR_ACTION = 2340;
-
- public final static boolean BACKTRACK = true;
-
- @Override
- public final int getNumStates() {
- return NUM_STATES;
- }
-
- @Override
- public final int getNtOffset() {
- return NT_OFFSET;
- }
-
- @Override
- public final int getLaStateOffset() {
- return LA_STATE_OFFSET;
- }
-
- @Override
- public final int getMaxLa() {
- return MAX_LA;
- }
-
- @Override
- public final int getNumRules() {
- return NUM_RULES;
- }
-
- @Override
- public final int getNumNonterminals() {
- return NUM_NONTERMINALS;
- }
-
- @Override
- public final int getNumSymbols() {
- return NUM_SYMBOLS;
- }
-
- @Override
- public final int getSegmentSize() {
- return SEGMENT_SIZE;
- }
-
- @Override
- public final int getStartState() {
- return START_STATE;
- }
-
- @Override
- public final int getStartSymbol() {
- return lhs[0];
- }
-
- public final int getIdentifierSymbol() {
- return IDENTIFIER_SYMBOL;
- }
-
- @Override
- public final int getEoftSymbol() {
- return EOFT_SYMBOL;
- }
-
- @Override
- public final int getEoltSymbol() {
- return EOLT_SYMBOL;
- }
-
- @Override
- public final int getAcceptAction() {
- return ACCEPT_ACTION;
- }
-
- @Override
- public final int getErrorAction() {
- return ERROR_ACTION;
- }
-
- @Override
- public final boolean isValidForParser() {
- return isValidForParser;
- }
-
- @Override
- public final boolean getBacktrack() {
- return BACKTRACK;
- }
-
- @Override
- public final int originalState(int state) {
- return -baseCheck[state];
- }
-
- @Override
- public final int asi(int state) {
- return asb[originalState(state)];
- }
-
- @Override
- public final int nasi(int state) {
- return nasb[originalState(state)];
- }
-
- @Override
- public final int inSymbol(int state) {
- return inSymb[originalState(state)];
- }
-
- @Override
- public final int ntAction(int state, int sym) {
- return baseAction[state + sym];
- }
-
- @Override
- public final int tAction(int state, int sym) {
- int i = baseAction[state], k = i + sym;
- return termAction[termCheck[k] == sym ? k : i];
- }
-
- @Override
- public final int lookAhead(int la_state, int sym) {
- int k = la_state + sym;
- return termAction[termCheck[k] == sym ? k : la_state];
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99Parsersym.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99Parsersym.java
deleted file mode 100644
index e445938ec66..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99Parsersym.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2010 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.dom.lrparser.c99;
-
-public interface C99Parsersym {
- public final static int TK_auto = 25, TK_break = 31, TK_case = 32, TK_char = 41, TK_const = 19, TK_continue = 33,
- TK_default = 34, TK_do = 35, TK_double = 42, TK_else = 79, TK_enum = 54, TK_extern = 26, TK_float = 43,
- TK_for = 36, TK_goto = 37, TK_if = 38, TK_inline = 27, TK_int = 44, TK_long = 45, TK_register = 28,
- TK_restrict = 20, TK_return = 39, TK_short = 46, TK_signed = 47, TK_sizeof = 12, TK_static = 23,
- TK_struct = 55, TK_switch = 40, TK_typedef = 29, TK_union = 56, TK_unsigned = 48, TK_void = 49,
- TK_volatile = 21, TK_while = 30, TK__Bool = 50, TK__Complex = 51, TK__Imaginary = 52, TK_integer = 13,
- TK_floating = 14, TK_charconst = 15, TK_stringlit = 16, TK_identifier = 1, TK_Completion = 3,
- TK_EndOfCompletion = 4, TK_Invalid = 93, TK_LeftBracket = 53, TK_LeftParen = 2, TK_LeftBrace = 6,
- TK_Dot = 66, TK_Arrow = 80, TK_PlusPlus = 10, TK_MinusMinus = 11, TK_And = 9, TK_Star = 5, TK_Plus = 7,
- TK_Minus = 8, TK_Tilde = 17, TK_Bang = 18, TK_Slash = 67, TK_Percent = 68, TK_RightShift = 62,
- TK_LeftShift = 63, TK_LT = 69, TK_GT = 70, TK_LE = 71, TK_GE = 72, TK_EQ = 74, TK_NE = 75, TK_Caret = 76,
- TK_Or = 77, TK_AndAnd = 78, TK_OrOr = 81, TK_Question = 82, TK_Colon = 59, TK_DotDotDot = 64,
- TK_Assign = 61, TK_StarAssign = 83, TK_SlashAssign = 84, TK_PercentAssign = 85, TK_PlusAssign = 86,
- TK_MinusAssign = 87, TK_RightShiftAssign = 88, TK_LeftShiftAssign = 89, TK_AndAssign = 90,
- TK_CaretAssign = 91, TK_OrAssign = 92, TK_Comma = 57, TK_RightBracket = 65, TK_RightParen = 60,
- TK_RightBrace = 58, TK_SemiColon = 22, TK_ERROR_TOKEN = 24, TK_EOF_TOKEN = 73;
-
- public final static String orderedTerminalSymbols[] = { "", "identifier", "LeftParen", "Completion",
- "EndOfCompletion", "Star", "LeftBrace", "Plus", "Minus", "And", "PlusPlus", "MinusMinus", "sizeof",
- "integer", "floating", "charconst", "stringlit", "Tilde", "Bang", "const", "restrict", "volatile",
- "SemiColon", "static", "ERROR_TOKEN", "auto", "extern", "inline", "register", "typedef", "while", "break",
- "case", "continue", "default", "do", "for", "goto", "if", "return", "switch", "char", "double", "float",
- "int", "long", "short", "signed", "unsigned", "void", "_Bool", "_Complex", "_Imaginary", "LeftBracket",
- "enum", "struct", "union", "Comma", "RightBrace", "Colon", "RightParen", "Assign", "RightShift",
- "LeftShift", "DotDotDot", "RightBracket", "Dot", "Slash", "Percent", "LT", "GT", "LE", "GE", "EOF_TOKEN",
- "EQ", "NE", "Caret", "Or", "AndAnd", "else", "Arrow", "OrOr", "Question", "StarAssign", "SlashAssign",
- "PercentAssign", "PlusAssign", "MinusAssign", "RightShiftAssign", "LeftShiftAssign", "AndAssign",
- "CaretAssign", "OrAssign", "Invalid" };
-
- public final static boolean isValidForParser = true;
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99SizeofExpressionParser.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99SizeofExpressionParser.java
deleted file mode 100644
index 8882a88ace7..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99SizeofExpressionParser.java
+++ /dev/null
@@ -1,1675 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2015 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.dom.lrparser.c99;
-
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.cdt.core.dom.ast.IASTBinaryExpression;
-import org.eclipse.cdt.core.dom.ast.IASTCastExpression;
-import org.eclipse.cdt.core.dom.ast.IASTCompletionNode;
-import org.eclipse.cdt.core.dom.ast.IASTCompositeTypeSpecifier;
-import org.eclipse.cdt.core.dom.ast.IASTElaboratedTypeSpecifier;
-import org.eclipse.cdt.core.dom.ast.IASTExpression;
-import org.eclipse.cdt.core.dom.ast.IASTLiteralExpression;
-import org.eclipse.cdt.core.dom.ast.IASTUnaryExpression;
-import org.eclipse.cdt.core.dom.lrparser.CPreprocessorAdapter;
-import org.eclipse.cdt.core.dom.lrparser.IDOMTokenMap;
-import org.eclipse.cdt.core.dom.lrparser.ISecondaryParser;
-import org.eclipse.cdt.core.dom.lrparser.ITokenCollector;
-import org.eclipse.cdt.core.dom.lrparser.action.ITokenMap;
-import org.eclipse.cdt.core.dom.lrparser.action.ITokenStream;
-import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack;
-import org.eclipse.cdt.core.dom.lrparser.action.TokenMap;
-import org.eclipse.cdt.core.dom.lrparser.action.c99.C99BuildASTParserAction;
-import org.eclipse.cdt.core.dom.lrparser.action.c99.C99SecondaryParserFactory;
-import org.eclipse.cdt.core.dom.lrparser.lpgextensions.FixedBacktrackingParser;
-import org.eclipse.cdt.core.dom.parser.IBuiltinBindingsProvider;
-import org.eclipse.cdt.core.index.IIndex;
-import org.eclipse.cdt.core.parser.IScanner;
-import org.eclipse.cdt.internal.core.dom.parser.c.CNodeFactory;
-
-import lpg.lpgjavaruntime.BadParseException;
-import lpg.lpgjavaruntime.BadParseSymFileException;
-import lpg.lpgjavaruntime.DiagnoseParser;
-import lpg.lpgjavaruntime.ErrorToken;
-import lpg.lpgjavaruntime.IToken;
-import lpg.lpgjavaruntime.LexStream;
-import lpg.lpgjavaruntime.Monitor;
-import lpg.lpgjavaruntime.NotBacktrackParseTableException;
-import lpg.lpgjavaruntime.NullExportedSymbolsException;
-import lpg.lpgjavaruntime.NullTerminalSymbolsException;
-import lpg.lpgjavaruntime.ParseErrorCodes;
-import lpg.lpgjavaruntime.ParseTable;
-import lpg.lpgjavaruntime.PrsStream;
-import lpg.lpgjavaruntime.RuleAction;
-import lpg.lpgjavaruntime.Token;
-import lpg.lpgjavaruntime.UndefinedEofSymbolException;
-import lpg.lpgjavaruntime.UnimplementedTerminalsException;
-
-public class C99SizeofExpressionParser extends PrsStream
- implements RuleAction, ITokenStream, ITokenCollector, ISecondaryParser<IASTExpression> {
- private static ParseTable prs = new C99SizeofExpressionParserprs();
- private FixedBacktrackingParser btParser;
-
- public FixedBacktrackingParser getParser() {
- return btParser;
- }
-
- private void setResult(Object object) {
- btParser.setSym1(object);
- }
-
- public Object getRhsSym(int i) {
- return btParser.getSym(i);
- }
-
- public int getRhsTokenIndex(int i) {
- return btParser.getToken(i);
- }
-
- public IToken getRhsIToken(int i) {
- return super.getIToken(getRhsTokenIndex(i));
- }
-
- public int getRhsFirstTokenIndex(int i) {
- return btParser.getFirstToken(i);
- }
-
- public IToken getRhsFirstIToken(int i) {
- return super.getIToken(getRhsFirstTokenIndex(i));
- }
-
- public int getRhsLastTokenIndex(int i) {
- return btParser.getLastToken(i);
- }
-
- public IToken getRhsLastIToken(int i) {
- return super.getIToken(getRhsLastTokenIndex(i));
- }
-
- public int getLeftSpan() {
- return btParser.getFirstToken();
- }
-
- @Override
- public IToken getLeftIToken() {
- return super.getIToken(getLeftSpan());
- }
-
- public int getRightSpan() {
- return btParser.getLastToken();
- }
-
- @Override
- public IToken getRightIToken() {
- return super.getIToken(getRightSpan());
- }
-
- public int getRhsErrorTokenIndex(int i) {
- int index = btParser.getToken(i);
- IToken err = super.getIToken(index);
- return (err instanceof ErrorToken ? index : 0);
- }
-
- public ErrorToken getRhsErrorIToken(int i) {
- int index = btParser.getToken(i);
- IToken err = super.getIToken(index);
- return (ErrorToken) (err instanceof ErrorToken ? err : null);
- }
-
- public C99SizeofExpressionParser(LexStream lexStream) {
- super(lexStream);
-
- try {
- super.remapTerminalSymbols(orderedTerminalSymbols(), C99SizeofExpressionParserprs.EOFT_SYMBOL);
- } catch (NullExportedSymbolsException e) {
- } catch (NullTerminalSymbolsException e) {
- } catch (UnimplementedTerminalsException e) {
- java.util.ArrayList unimplemented_symbols = e.getSymbols();
- System.out.println("The Lexer will not scan the following token(s):");
- for (int i = 0; i < unimplemented_symbols.size(); i++) {
- Integer id = (Integer) unimplemented_symbols.get(i);
- System.out.println(" " + C99SizeofExpressionParsersym.orderedTerminalSymbols[id.intValue()]);
- }
- System.out.println();
- } catch (UndefinedEofSymbolException e) {
- throw new Error(new UndefinedEofSymbolException("The Lexer does not implement the Eof symbol "
- + C99SizeofExpressionParsersym.orderedTerminalSymbols[C99SizeofExpressionParserprs.EOFT_SYMBOL]));
- }
- }
-
- @Override
- public String[] orderedTerminalSymbols() {
- return C99SizeofExpressionParsersym.orderedTerminalSymbols;
- }
-
- public String getTokenKindName(int kind) {
- return C99SizeofExpressionParsersym.orderedTerminalSymbols[kind];
- }
-
- public int getEOFTokenKind() {
- return C99SizeofExpressionParserprs.EOFT_SYMBOL;
- }
-
- public PrsStream getParseStream() {
- return this;
- }
-
- //
- // Report error message for given error_token.
- //
- public final void reportErrorTokenMessage(int error_token, String msg) {
- int firsttok = super.getFirstErrorToken(error_token), lasttok = super.getLastErrorToken(error_token);
- String location = super.getFileName() + ':'
- + (firsttok > lasttok ? (super.getEndLine(lasttok) + ":" + super.getEndColumn(lasttok))
- : (super.getLine(error_token) + ":" + super.getColumn(error_token) + ":"
- + super.getEndLine(error_token) + ":" + super.getEndColumn(error_token)))
- + ": ";
- super.reportError((firsttok > lasttok ? ParseErrorCodes.INSERTION_CODE : ParseErrorCodes.SUBSTITUTION_CODE),
- location, msg);
- }
-
- public void parser() {
- parser(null, 0);
- }
-
- public void parser(Monitor monitor) {
- parser(monitor, 0);
- }
-
- public void parser(int error_repair_count) {
- parser(null, error_repair_count);
- }
-
- public void parser(Monitor monitor, int error_repair_count) {
- try {
- btParser = new FixedBacktrackingParser(monitor, this, prs, this);
- } catch (NotBacktrackParseTableException e) {
- throw new Error(new NotBacktrackParseTableException(
- "Regenerate C99SizeofExpressionParserprs.java with -BACKTRACK option"));
- } catch (BadParseSymFileException e) {
- throw new Error(
- new BadParseSymFileException("Bad Parser Symbol File -- C99SizeofExpressionParsersym.java"));
- }
-
- try {
- btParser.parse(error_repair_count);
- } catch (BadParseException e) {
- reset(e.error_token); // point to error token
- DiagnoseParser diagnoseParser = new DiagnoseParser(this, prs);
- diagnoseParser.diagnose(e.error_token);
- }
- }
-
- private C99BuildASTParserAction action;
- private IASTCompletionNode compNode;
-
- public C99SizeofExpressionParser(IScanner scanner, IDOMTokenMap tokenMap,
- IBuiltinBindingsProvider builtinBindingsProvider, IIndex index, Map<String, String> properties) {
- initActions(properties);
- action.initializeTranslationUnit(scanner, builtinBindingsProvider, index);
- CPreprocessorAdapter.runCPreprocessor(scanner, this, tokenMap);
- }
-
- private void initActions(Map<String, String> properties) {
- ScopedStack<Object> astStack = new ScopedStack<>();
-
- action = new C99BuildASTParserAction(this, astStack, CNodeFactory.getDefault(),
- C99SecondaryParserFactory.getDefault());
- action.setParserProperties(properties);
-
- }
-
- @Override
- public void addToken(IToken token) {
- token.setKind(mapKind(token.getKind())); // TODO does mapKind need to be called?
- super.addToken(token);
- }
-
- @Override
- public IASTExpression parse() {
- // this has to be done, or... kaboom!
- setStreamLength(getSize());
-
- final int errorRepairCount = -1; // -1 means full error handling
- parser(null, errorRepairCount); // do the actual parse
- super.resetTokenStream(); // allow tokens to be garbage collected
-
- compNode = action.getASTCompletionNode(); // the completion node may be null
- return (IASTExpression) action.getParseResult();
- }
-
- @Override
- public IASTCompletionNode getCompletionNode() {
- return compNode;
- }
-
- // uncomment this method to use with backtracking parser
- @Override
- public List<IToken> getRuleTokens() {
- return getTokens().subList(getLeftSpan(), getRightSpan() + 1);
- }
-
- @Override
- public String[] getOrderedTerminalSymbols() {
- return C99SizeofExpressionParsersym.orderedTerminalSymbols;
- }
-
- @Override
- @SuppressWarnings("nls")
- public String getName() {
- return "C99SizeofExpressionParser";
- }
-
- private ITokenMap tokenMap = null;
-
- @Override
- public void setTokens(List<IToken> tokens) {
- resetTokenStream();
- addToken(new Token(null, 0, 0, 0)); // dummy token
- for (IToken token : tokens) {
- token.setKind(tokenMap.mapKind(token.getKind()));
- addToken(token);
- }
- addToken(new Token(null, 0, 0, C99SizeofExpressionParsersym.TK_EOF_TOKEN));
- }
-
- public C99SizeofExpressionParser(ITokenStream stream, Map<String, String> properties) { // constructor for creating secondary parser
- initActions(properties);
- tokenMap = new TokenMap(C99SizeofExpressionParsersym.orderedTerminalSymbols,
- stream.getOrderedTerminalSymbols());
- }
-
- @Override
- public void ruleAction(int ruleNumber) {
- switch (ruleNumber) {
-
- //
- // Rule 1: <openscope-ast> ::= $Empty
- //
- case 1: {
- action.openASTScope();
- break;
- }
-
- //
- // Rule 2: <empty> ::= $Empty
- //
- case 2: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 13: literal ::= integer
- //
- case 13: {
- action.consumeExpressionLiteral(IASTLiteralExpression.lk_integer_constant);
- break;
- }
-
- //
- // Rule 14: literal ::= floating
- //
- case 14: {
- action.consumeExpressionLiteral(IASTLiteralExpression.lk_float_constant);
- break;
- }
-
- //
- // Rule 15: literal ::= charconst
- //
- case 15: {
- action.consumeExpressionLiteral(IASTLiteralExpression.lk_char_constant);
- break;
- }
-
- //
- // Rule 16: literal ::= stringlit
- //
- case 16: {
- action.consumeExpressionLiteral(IASTLiteralExpression.lk_string_literal);
- break;
- }
-
- //
- // Rule 18: primary_expression ::= primary_expression_id
- //
- case 18: {
- action.consumeExpressionID();
- break;
- }
-
- //
- // Rule 19: primary_expression ::= ( expression )
- //
- case 19: {
- action.consumeExpressionBracketed();
- break;
- }
-
- //
- // Rule 22: postfix_expression ::= postfix_expression [ expression ]
- //
- case 22: {
- action.consumeExpressionArraySubscript();
- break;
- }
-
- //
- // Rule 23: postfix_expression ::= postfix_expression ( expression_list_opt )
- //
- case 23: {
- action.consumeExpressionFunctionCall();
- break;
- }
-
- //
- // Rule 24: postfix_expression ::= postfix_expression . member_name
- //
- case 24: {
- action.consumeExpressionFieldReference(false);
- break;
- }
-
- //
- // Rule 25: postfix_expression ::= postfix_expression -> member_name
- //
- case 25: {
- action.consumeExpressionFieldReference(true);
- break;
- }
-
- //
- // Rule 26: postfix_expression ::= postfix_expression ++
- //
- case 26: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixIncr);
- break;
- }
-
- //
- // Rule 27: postfix_expression ::= postfix_expression --
- //
- case 27: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixDecr);
- break;
- }
-
- //
- // Rule 28: postfix_expression ::= ( type_id ) initializer_list
- //
- case 28: {
- action.consumeExpressionTypeIdInitializer();
- break;
- }
-
- //
- // Rule 33: unary_expression ::= ++ unary_expression
- //
- case 33: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixIncr);
- break;
- }
-
- //
- // Rule 34: unary_expression ::= -- unary_expression
- //
- case 34: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixDecr);
- break;
- }
-
- //
- // Rule 35: unary_expression ::= & cast_expression
- //
- case 35: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_amper);
- break;
- }
-
- //
- // Rule 36: unary_expression ::= * cast_expression
- //
- case 36: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_star);
- break;
- }
-
- //
- // Rule 37: unary_expression ::= + cast_expression
- //
- case 37: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_plus);
- break;
- }
-
- //
- // Rule 38: unary_expression ::= - cast_expression
- //
- case 38: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_minus);
- break;
- }
-
- //
- // Rule 39: unary_expression ::= ~ cast_expression
- //
- case 39: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_tilde);
- break;
- }
-
- //
- // Rule 40: unary_expression ::= ! cast_expression
- //
- case 40: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_not);
- break;
- }
-
- //
- // Rule 41: unary_expression ::= sizeof unary_expression
- //
- case 41: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_sizeof);
- break;
- }
-
- //
- // Rule 43: cast_expression ::= ( type_id ) cast_expression
- //
- case 43: {
- action.consumeExpressionCast(IASTCastExpression.op_cast);
- break;
- }
-
- //
- // Rule 45: multiplicative_expression ::= multiplicative_expression * cast_expression
- //
- case 45: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_multiply);
- break;
- }
-
- //
- // Rule 46: multiplicative_expression ::= multiplicative_expression / cast_expression
- //
- case 46: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_divide);
- break;
- }
-
- //
- // Rule 47: multiplicative_expression ::= multiplicative_expression % cast_expression
- //
- case 47: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_modulo);
- break;
- }
-
- //
- // Rule 49: additive_expression ::= additive_expression + multiplicative_expression
- //
- case 49: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_plus);
- break;
- }
-
- //
- // Rule 50: additive_expression ::= additive_expression - multiplicative_expression
- //
- case 50: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_minus);
- break;
- }
-
- //
- // Rule 52: shift_expression ::= shift_expression << additive_expression
- //
- case 52: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftLeft);
- break;
- }
-
- //
- // Rule 53: shift_expression ::= shift_expression >> additive_expression
- //
- case 53: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftRight);
- break;
- }
-
- //
- // Rule 55: relational_expression ::= relational_expression < shift_expression
- //
- case 55: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_lessThan);
- break;
- }
-
- //
- // Rule 56: relational_expression ::= relational_expression > shift_expression
- //
- case 56: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_greaterThan);
- break;
- }
-
- //
- // Rule 57: relational_expression ::= relational_expression <= shift_expression
- //
- case 57: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_lessEqual);
- break;
- }
-
- //
- // Rule 58: relational_expression ::= relational_expression >= shift_expression
- //
- case 58: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_greaterEqual);
- break;
- }
-
- //
- // Rule 60: equality_expression ::= equality_expression == relational_expression
- //
- case 60: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_equals);
- break;
- }
-
- //
- // Rule 61: equality_expression ::= equality_expression != relational_expression
- //
- case 61: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_notequals);
- break;
- }
-
- //
- // Rule 63: and_expression ::= and_expression & equality_expression
- //
- case 63: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryAnd);
- break;
- }
-
- //
- // Rule 65: exclusive_or_expression ::= exclusive_or_expression ^ and_expression
- //
- case 65: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryXor);
- break;
- }
-
- //
- // Rule 67: inclusive_or_expression ::= inclusive_or_expression | exclusive_or_expression
- //
- case 67: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryOr);
- break;
- }
-
- //
- // Rule 69: logical_and_expression ::= logical_and_expression && inclusive_or_expression
- //
- case 69: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_logicalAnd);
- break;
- }
-
- //
- // Rule 71: logical_or_expression ::= logical_or_expression || logical_and_expression
- //
- case 71: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_logicalOr);
- break;
- }
-
- //
- // Rule 73: conditional_expression ::= logical_or_expression ? expression : assignment_expression
- //
- case 73: {
- action.consumeExpressionConditional();
- break;
- }
-
- //
- // Rule 75: assignment_expression ::= unary_expression = assignment_expression
- //
- case 75: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_assign);
- break;
- }
-
- //
- // Rule 76: assignment_expression ::= unary_expression *= assignment_expression
- //
- case 76: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_multiplyAssign);
- break;
- }
-
- //
- // Rule 77: assignment_expression ::= unary_expression /= assignment_expression
- //
- case 77: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_divideAssign);
- break;
- }
-
- //
- // Rule 78: assignment_expression ::= unary_expression %= assignment_expression
- //
- case 78: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_moduloAssign);
- break;
- }
-
- //
- // Rule 79: assignment_expression ::= unary_expression += assignment_expression
- //
- case 79: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_plusAssign);
- break;
- }
-
- //
- // Rule 80: assignment_expression ::= unary_expression -= assignment_expression
- //
- case 80: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_minusAssign);
- break;
- }
-
- //
- // Rule 81: assignment_expression ::= unary_expression <<= assignment_expression
- //
- case 81: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftLeftAssign);
- break;
- }
-
- //
- // Rule 82: assignment_expression ::= unary_expression >>= assignment_expression
- //
- case 82: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftRightAssign);
- break;
- }
-
- //
- // Rule 83: assignment_expression ::= unary_expression &= assignment_expression
- //
- case 83: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryAndAssign);
- break;
- }
-
- //
- // Rule 84: assignment_expression ::= unary_expression ^= assignment_expression
- //
- case 84: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryXorAssign);
- break;
- }
-
- //
- // Rule 85: assignment_expression ::= unary_expression |= assignment_expression
- //
- case 85: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryOrAssign);
- break;
- }
-
- //
- // Rule 88: expression_list ::= <openscope-ast> expression_list_actual
- //
- case 88: {
- action.consumeExpressionList();
- break;
- }
-
- //
- // Rule 90: expression_list_opt ::= $Empty
- //
- case 90: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 100: statement ::= ERROR_TOKEN
- //
- case 100: {
- action.consumeStatementProblem();
- break;
- }
-
- //
- // Rule 101: labeled_statement ::= identifier_token : statement
- //
- case 101: {
- action.consumeStatementLabeled();
- break;
- }
-
- //
- // Rule 102: labeled_statement ::= case constant_expression : statement
- //
- case 102: {
- action.consumeStatementCase();
- break;
- }
-
- //
- // Rule 103: labeled_statement ::= default : statement
- //
- case 103: {
- action.consumeStatementDefault();
- break;
- }
-
- //
- // Rule 104: compound_statement ::= { }
- //
- case 104: {
- action.consumeStatementCompoundStatement(false);
- break;
- }
-
- //
- // Rule 105: compound_statement ::= { <openscope-ast> block_item_list }
- //
- case 105: {
- action.consumeStatementCompoundStatement(true);
- break;
- }
-
- //
- // Rule 109: block_item ::= declaration
- //
- case 109: {
- action.consumeStatementDeclarationWithDisambiguation();
- break;
- }
-
- //
- // Rule 110: expression_statement ::= ;
- //
- case 110: {
- action.consumeStatementNull();
- break;
- }
-
- //
- // Rule 111: expression_statement ::= expression_in_statement ;
- //
- case 111: {
- action.consumeStatementExpression();
- break;
- }
-
- //
- // Rule 112: selection_statement ::= if ( expression ) statement
- //
- case 112: {
- action.consumeStatementIf(false);
- break;
- }
-
- //
- // Rule 113: selection_statement ::= if ( expression ) statement else statement
- //
- case 113: {
- action.consumeStatementIf(true);
- break;
- }
-
- //
- // Rule 114: selection_statement ::= switch ( expression ) statement
- //
- case 114: {
- action.consumeStatementSwitch();
- break;
- }
-
- //
- // Rule 116: expression_opt ::= $Empty
- //
- case 116: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 117: iteration_statement ::= do statement while ( expression ) ;
- //
- case 117: {
- action.consumeStatementDoLoop(true);
- break;
- }
-
- //
- // Rule 118: iteration_statement ::= do statement
- //
- case 118: {
- action.consumeStatementDoLoop(false);
- break;
- }
-
- //
- // Rule 119: iteration_statement ::= while ( expression ) statement
- //
- case 119: {
- action.consumeStatementWhileLoop();
- break;
- }
-
- //
- // Rule 120: iteration_statement ::= for ( expression_opt ; expression_opt ; expression_opt ) statement
- //
- case 120: {
- action.consumeStatementForLoop();
- break;
- }
-
- //
- // Rule 121: iteration_statement ::= for ( declaration expression_opt ; expression_opt ) statement
- //
- case 121: {
- action.consumeStatementForLoop();
- break;
- }
-
- //
- // Rule 122: jump_statement ::= goto identifier_token ;
- //
- case 122: {
- action.consumeStatementGoto();
- break;
- }
-
- //
- // Rule 123: jump_statement ::= continue ;
- //
- case 123: {
- action.consumeStatementContinue();
- break;
- }
-
- //
- // Rule 124: jump_statement ::= break ;
- //
- case 124: {
- action.consumeStatementBreak();
- break;
- }
-
- //
- // Rule 125: jump_statement ::= return ;
- //
- case 125: {
- action.consumeStatementReturn(false);
- break;
- }
-
- //
- // Rule 126: jump_statement ::= return expression ;
- //
- case 126: {
- action.consumeStatementReturn(true);
- break;
- }
-
- //
- // Rule 127: declaration ::= declaration_specifiers ;
- //
- case 127: {
- action.consumeDeclarationSimple(false);
- break;
- }
-
- //
- // Rule 128: declaration ::= declaration_specifiers <openscope-ast> init_declarator_list ;
- //
- case 128: {
- action.consumeDeclarationSimple(true);
- break;
- }
-
- //
- // Rule 129: declaration_specifiers ::= <openscope-ast> simple_declaration_specifiers
- //
- case 129: {
- action.consumeDeclarationSpecifiersSimple();
- break;
- }
-
- //
- // Rule 130: declaration_specifiers ::= <openscope-ast> struct_or_union_declaration_specifiers
- //
- case 130: {
- action.consumeDeclarationSpecifiersStructUnionEnum();
- break;
- }
-
- //
- // Rule 131: declaration_specifiers ::= <openscope-ast> elaborated_declaration_specifiers
- //
- case 131: {
- action.consumeDeclarationSpecifiersStructUnionEnum();
- break;
- }
-
- //
- // Rule 132: declaration_specifiers ::= <openscope-ast> enum_declaration_specifiers
- //
- case 132: {
- action.consumeDeclarationSpecifiersStructUnionEnum();
- break;
- }
-
- //
- // Rule 133: declaration_specifiers ::= <openscope-ast> typdef_name_declaration_specifiers
- //
- case 133: {
- action.consumeDeclarationSpecifiersTypedefName();
- break;
- }
-
- //
- // Rule 158: init_declarator ::= complete_declarator = initializer
- //
- case 158: {
- action.consumeDeclaratorWithInitializer(true);
- break;
- }
-
- //
- // Rule 160: storage_class_specifier ::= storage_class_specifier_token
- //
- case 160: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 166: simple_type_specifier ::= simple_type_specifier_token
- //
- case 166: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 179: type_name_specifier ::= identifier_token
- //
- case 179: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 180: struct_or_union_specifier ::= struct_or_union struct_or_union_specifier_hook { <openscope-ast> struct_declaration_list_opt }
- //
- case 180: {
- action.consumeTypeSpecifierComposite(false);
- break;
- }
-
- //
- // Rule 181: struct_or_union_specifier ::= struct_or_union struct_or_union_specifier_hook identifier_token struct_or_union_specifier_suffix_hook { <openscope-ast> struct_declaration_list_opt }
- //
- case 181: {
- action.consumeTypeSpecifierComposite(true);
- break;
- }
-
- //
- // Rule 186: elaborated_specifier ::= struct elaborated_specifier_hook identifier_token
- //
- case 186: {
- action.consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_struct);
- break;
- }
-
- //
- // Rule 187: elaborated_specifier ::= union elaborated_specifier_hook identifier_token
- //
- case 187: {
- action.consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_union);
- break;
- }
-
- //
- // Rule 188: elaborated_specifier ::= enum elaborated_specifier_hook identifier_token
- //
- case 188: {
- action.consumeTypeSpecifierElaborated(IASTElaboratedTypeSpecifier.k_enum);
- break;
- }
-
- //
- // Rule 194: struct_declaration ::= specifier_qualifier_list <openscope-ast> struct_declarator_list ;
- //
- case 194: {
- action.consumeStructDeclaration(true);
- break;
- }
-
- //
- // Rule 195: struct_declaration ::= specifier_qualifier_list ;
- //
- case 195: {
- action.consumeStructDeclaration(false);
- break;
- }
-
- //
- // Rule 196: struct_declaration ::= ERROR_TOKEN
- //
- case 196: {
- action.consumeDeclarationProblem();
- break;
- }
-
- //
- // Rule 202: struct_declarator ::= : constant_expression
- //
- case 202: {
- action.consumeBitField(false);
- break;
- }
-
- //
- // Rule 203: struct_declarator ::= declarator : constant_expression
- //
- case 203: {
- action.consumeBitField(true);
- break;
- }
-
- //
- // Rule 204: enum_specifier ::= enum enum_specifier_hook { <openscope-ast> enumerator_list_opt comma_opt }
- //
- case 204: {
- action.consumeTypeSpecifierEnumeration(false);
- break;
- }
-
- //
- // Rule 205: enum_specifier ::= enum enum_specifier_hook identifier_token { <openscope-ast> enumerator_list_opt comma_opt }
- //
- case 205: {
- action.consumeTypeSpecifierEnumeration(true);
- break;
- }
-
- //
- // Rule 211: enumerator ::= identifier_token
- //
- case 211: {
- action.consumeEnumerator(false);
- break;
- }
-
- //
- // Rule 212: enumerator ::= identifier_token = constant_expression
- //
- case 212: {
- action.consumeEnumerator(true);
- break;
- }
-
- //
- // Rule 213: type_qualifier ::= type_qualifier_token
- //
- case 213: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 217: function_specifier ::= inline
- //
- case 217: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 219: declarator ::= <openscope-ast> pointer_seq direct_declarator
- //
- case 219: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 224: basic_direct_declarator ::= declarator_id_name
- //
- case 224: {
- action.consumeDirectDeclaratorIdentifier();
- break;
- }
-
- //
- // Rule 225: basic_direct_declarator ::= ( declarator )
- //
- case 225: {
- action.consumeDirectDeclaratorBracketed();
- break;
- }
-
- //
- // Rule 226: declarator_id_name ::= identifier
- //
- case 226: {
- action.consumeIdentifierName();
- break;
- }
-
- //
- // Rule 227: array_direct_declarator ::= basic_direct_declarator array_modifier
- //
- case 227: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 228: array_direct_declarator ::= array_direct_declarator array_modifier
- //
- case 228: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 230: function_direct_declarator ::= basic_direct_declarator ( <openscope-ast> parameter_type_list )
- //
- case 230: {
- action.consumeDirectDeclaratorFunctionDeclarator(true, true);
- break;
- }
-
- //
- // Rule 231: function_direct_declarator ::= basic_direct_declarator ( )
- //
- case 231: {
- action.consumeDirectDeclaratorFunctionDeclarator(true, false);
- break;
- }
-
- //
- // Rule 233: function_declarator ::= <openscope-ast> pointer_seq function_direct_declarator
- //
- case 233: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 234: knr_direct_declarator ::= basic_direct_declarator ( <openscope-ast> identifier_list )
- //
- case 234: {
- action.consumeDirectDeclaratorFunctionDeclaratorKnR();
- break;
- }
-
- //
- // Rule 236: knr_function_declarator ::= <openscope-ast> pointer_seq knr_direct_declarator
- //
- case 236: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 237: identifier_list ::= identifier
- //
- case 237: {
- action.consumeIdentifierKnR();
- break;
- }
-
- //
- // Rule 238: identifier_list ::= identifier_list , identifier
- //
- case 238: {
- action.consumeIdentifierKnR();
- break;
- }
-
- //
- // Rule 239: array_modifier ::= [ ]
- //
- case 239: {
- action.consumeDirectDeclaratorArrayModifier(false);
- break;
- }
-
- //
- // Rule 240: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers ]
- //
- case 240: {
- action.consumeDirectDeclaratorModifiedArrayModifier(false, false, true, false);
- break;
- }
-
- //
- // Rule 241: array_modifier ::= [ assignment_expression ]
- //
- case 241: {
- action.consumeDirectDeclaratorArrayModifier(true);
- break;
- }
-
- //
- // Rule 242: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers assignment_expression ]
- //
- case 242: {
- action.consumeDirectDeclaratorModifiedArrayModifier(false, false, true, true);
- break;
- }
-
- //
- // Rule 243: array_modifier ::= [ static assignment_expression ]
- //
- case 243: {
- action.consumeDirectDeclaratorModifiedArrayModifier(true, false, false, true);
- break;
- }
-
- //
- // Rule 244: array_modifier ::= [ static <openscope-ast> array_modifier_type_qualifiers assignment_expression ]
- //
- case 244: {
- action.consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true);
- break;
- }
-
- //
- // Rule 245: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers static assignment_expression ]
- //
- case 245: {
- action.consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true);
- break;
- }
-
- //
- // Rule 246: array_modifier ::= [ * ]
- //
- case 246: {
- action.consumeDirectDeclaratorModifiedArrayModifier(false, true, false, false);
- break;
- }
-
- //
- // Rule 247: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers * ]
- //
- case 247: {
- action.consumeDirectDeclaratorModifiedArrayModifier(false, true, true, false);
- break;
- }
-
- //
- // Rule 249: pointer_seq ::= pointer_hook * pointer_hook
- //
- case 249: {
- action.consumePointer();
- break;
- }
-
- //
- // Rule 250: pointer_seq ::= pointer_seq pointer_hook * pointer_hook
- //
- case 250: {
- action.consumePointer();
- break;
- }
-
- //
- // Rule 251: pointer_seq ::= pointer_hook * pointer_hook <openscope-ast> type_qualifier_list
- //
- case 251: {
- action.consumePointerTypeQualifierList();
- break;
- }
-
- //
- // Rule 252: pointer_seq ::= pointer_seq pointer_hook * pointer_hook <openscope-ast> type_qualifier_list
- //
- case 252: {
- action.consumePointerTypeQualifierList();
- break;
- }
-
- //
- // Rule 256: parameter_type_list ::= parameter_list
- //
- case 256: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 257: parameter_type_list ::= parameter_list , ...
- //
- case 257: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 258: parameter_type_list ::= ...
- //
- case 258: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 261: parameter_declaration ::= declaration_specifiers complete_parameter_declarator
- //
- case 261: {
- action.consumeParameterDeclaration();
- break;
- }
-
- //
- // Rule 262: parameter_declaration ::= declaration_specifiers
- //
- case 262: {
- action.consumeParameterDeclarationWithoutDeclarator();
- break;
- }
-
- //
- // Rule 265: type_id ::= specifier_qualifier_list
- //
- case 265: {
- action.consumeTypeId(false);
- break;
- }
-
- //
- // Rule 266: type_id ::= specifier_qualifier_list abstract_declarator
- //
- case 266: {
- action.consumeTypeId(true);
- break;
- }
-
- //
- // Rule 268: abstract_declarator ::= <openscope-ast> pointer_seq
- //
- case 268: {
- action.consumeDeclaratorWithPointer(false);
- break;
- }
-
- //
- // Rule 269: abstract_declarator ::= <openscope-ast> pointer_seq direct_abstract_declarator
- //
- case 269: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 273: basic_direct_abstract_declarator ::= ( abstract_declarator )
- //
- case 273: {
- action.consumeDirectDeclaratorBracketed();
- break;
- }
-
- //
- // Rule 274: array_direct_abstract_declarator ::= array_modifier
- //
- case 274: {
- action.consumeDirectDeclaratorArrayDeclarator(false);
- break;
- }
-
- //
- // Rule 275: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier
- //
- case 275: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 276: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier
- //
- case 276: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 277: function_direct_abstract_declarator ::= ( )
- //
- case 277: {
- action.consumeDirectDeclaratorFunctionDeclarator(false, false);
- break;
- }
-
- //
- // Rule 278: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( )
- //
- case 278: {
- action.consumeDirectDeclaratorFunctionDeclarator(true, false);
- break;
- }
-
- //
- // Rule 279: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_type_list )
- //
- case 279: {
- action.consumeDirectDeclaratorFunctionDeclarator(false, true);
- break;
- }
-
- //
- // Rule 280: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( <openscope-ast> parameter_type_list )
- //
- case 280: {
- action.consumeDirectDeclaratorFunctionDeclarator(true, true);
- break;
- }
-
- //
- // Rule 281: initializer ::= assignment_expression
- //
- case 281: {
- action.consumeInitializer();
- break;
- }
-
- //
- // Rule 282: initializer ::= initializer_list
- //
- case 282: {
- action.consumeInitializer();
- break;
- }
-
- //
- // Rule 283: initializer_list ::= start_initializer_list { <openscope-ast> initializer_seq comma_opt } end_initializer_list
- //
- case 283: {
- action.consumeInitializerList();
- break;
- }
-
- //
- // Rule 284: initializer_list ::= { <openscope-ast> }
- //
- case 284: {
- action.consumeInitializerList();
- break;
- }
-
- //
- // Rule 285: start_initializer_list ::= $Empty
- //
- case 285: {
- action.initializerListStart();
- break;
- }
-
- //
- // Rule 286: end_initializer_list ::= $Empty
- //
- case 286: {
- action.initializerListEnd();
- break;
- }
-
- //
- // Rule 291: designated_initializer ::= <openscope-ast> designation = initializer
- //
- case 291: {
- action.consumeInitializerDesignated();
- break;
- }
-
- //
- // Rule 295: designator_base ::= [ constant_expression ]
- //
- case 295: {
- action.consumeDesignatorArray();
- break;
- }
-
- //
- // Rule 296: designator_base ::= . identifier_token
- //
- case 296: {
- action.consumeDesignatorField();
- break;
- }
-
- //
- // Rule 297: designator ::= [ constant_expression ]
- //
- case 297: {
- action.consumeDesignatorArray();
- break;
- }
-
- //
- // Rule 298: designator ::= . identifier_token
- //
- case 298: {
- action.consumeDesignatorField();
- break;
- }
-
- //
- // Rule 299: translation_unit ::= external_declaration_list
- //
- case 299: {
- action.consumeTranslationUnit();
- break;
- }
-
- //
- // Rule 300: translation_unit ::= $Empty
- //
- case 300: {
- action.consumeTranslationUnit();
- break;
- }
-
- //
- // Rule 305: external_declaration ::= ;
- //
- case 305: {
- action.consumeDeclarationEmpty();
- break;
- }
-
- //
- // Rule 306: external_declaration ::= ERROR_TOKEN
- //
- case 306: {
- action.consumeDeclarationProblem();
- break;
- }
-
- //
- // Rule 310: function_definition ::= <openscope-ast> function_declarator function_body
- //
- case 310: {
- action.consumeFunctionDefinition(false);
- break;
- }
-
- //
- // Rule 311: function_definition ::= declaration_specifiers <openscope-ast> knr_function_declarator <openscope-ast> declaration_list compound_statement
- //
- case 311: {
- action.consumeFunctionDefinitionKnR();
- break;
- }
-
- //
- // Rule 312: normal_function_definition ::= declaration_specifiers <openscope-ast> function_declarator function_body
- //
- case 312: {
- action.consumeFunctionDefinition(true);
- break;
- }
-
- //
- // Rule 313: function_body ::= { }
- //
- case 313: {
- action.consumeStatementCompoundStatement(false);
- break;
- }
-
- //
- // Rule 314: function_body ::= { <openscope-ast> block_item_list }
- //
- case 314: {
- action.consumeStatementCompoundStatement(true);
- break;
- }
-
- //
- // Rule 316: no_sizeof_type_id_start ::= ERROR_TOKEN
- //
- case 316: {
- action.consumeEmpty();
- break;
- }
-
- default:
- break;
- }
- return;
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99SizeofExpressionParserprs.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99SizeofExpressionParserprs.java
deleted file mode 100644
index 87a196a6cab..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99SizeofExpressionParserprs.java
+++ /dev/null
@@ -1,702 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2015 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.dom.lrparser.c99;
-
-public class C99SizeofExpressionParserprs implements lpg.lpgjavaruntime.ParseTable, C99SizeofExpressionParsersym {
-
- public interface IsKeyword {
- public final static byte isKeyword[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0 };
- }
-
- public final static byte isKeyword[] = IsKeyword.isKeyword;
-
- public final boolean isKeyword(int index) {
- return isKeyword[index] != 0;
- }
-
- public interface BaseCheck {
- public final static short baseCheck[] = { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 4,
- 4, 3, 3, 2, 2, 4, 1, 0, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 4, 1, 3, 3, 3, 1, 3, 3, 1, 3, 3, 1, 3, 3, 3,
- 3, 1, 3, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 5, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 2, 1, 0, 1, 3,
- 1, 1, 1, 1, 1, 1, 1, 1, 3, 4, 3, 2, 4, 1, 2, 1, 1, 1, 2, 5, 7, 5, 1, 0, 7, 2, 5, 9, 8, 3, 2, 2, 2, 3, 2,
- 4, 2, 2, 2, 2, 2, 1, 1, 1, 1, 2, 1, 2, 2, 2, 1, 2, 2, 1, 2, 2, 1, 2, 2, 1, 2, 2, 1, 3, 1, 3, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 8, 0, 0, 1, 1, 3, 3, 3, 0, 1, 0, 1, 2, 4, 2, 1, 1,
- 1, 3, 1, 1, 2, 3, 7, 8, 0, 1, 0, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 3, 1, 2, 2, 1, 5, 3, 1,
- 3, 5, 1, 3, 1, 3, 2, 4, 3, 5, 4, 6, 6, 3, 5, 1, 3, 4, 5, 6, 0, 1, 2, 1, 3, 1, 1, 3, 2, 1, 1, 1, 1, 2, 1,
- 2, 3, 1, 1, 1, 3, 1, 2, 2, 2, 3, 4, 5, 1, 1, 7, 3, 0, 0, 1, 1, 3, 3, 4, 1, 1, 2, 3, 2, 3, 2, 1, 0, 1, 2,
- 1, 1, 1, 1, 1, 2, 1, 3, 6, 4, 2, 4, 1, 1, -36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -4, -156, -115, 0, -14, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -167, 0, -29, 0, -104, 0, 0, 0, 0, -80, 0, 0, -116, 0, -16, 0, -17, 0, 0, 0, 0, 0, 0, 0,
- -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -178, 0, -128, -78, 0, 0, -48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -30, 0, 0, 0, -18, 0, -42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6, 0, 0, 0, 0, 0, 0, 0, 0,
- -189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -19,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, 0, 0, -118, 0, -119, 0, 0, 0, -43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, 0, 0, 0, 0, 0, 0, 0, -127, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -81, 0, 0, 0, 0, 0, 0, 0, 0, 0, -131, 0, -158, 0, -55, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -122, 0, 0, 0, 0, 0, 0, 0, 0, 0, -20, 0, -21, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -23, 0, -188, 0, -24, 0, 0, 0, 0, -74, 0, -12, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, 0, 0, 0, 0, -58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -60, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, -61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -87, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -88, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -89, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -90, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -91, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -92, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -93, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -94, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -95, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -134, 0, 0, 0, 0, 0, 0, 0, 0, -186, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -197, 0, 0, 0, 0, 0, 0, 0, 0, -13, 0, 0, 0, 0, 0, 0, 0, -7, 0, 0, 0, 0, 0, 0, 0, -192,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -135, 0, 0,
- 0, 0, 0, 0, 0, 0, -155, -96, 0, -170, 0, 0, -97, 0, -70, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -130, 0, 0, 0, 0, 0, 0, 0, -180,
- -176, 0, 0, 0, 0, -75, 0, 0, -37, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, -145, 0, 0, -110, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -200, -193, -124, 0, -187, 0, 0, 0, 0, 0, -99, 0, -100, 0, -146, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -31, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -184, -102, -85, 0, -33, 0, 0, -51,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -164, 0, 0, 0, -137, -154, 0, -34, 0, -105, 0, 0, 0, -183, 0, 0, -67, 0, 0, 0, 0, -107,
- 0, -123, 0, -83, 0, 0, 0, -140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -38,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -205, 0, 0, 0, -153, 0, -157, -68, 0, 0, -132, 0, -191, 0, -136, 0, -151, 0, 0, -44, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 0, 0, 0, 0, 0, 0, 0, -166, 0, -45, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -46, 0, 0, 0, 0, 0, 0, 0, 0, 0, -47, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, -76, -69, -109, 0, -112,
- -139, -165, -171, 0, -111, 0, 0, 0, 0, 0, 0, 0, 0, -172, -175, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -199, -204, 0, -147, 0, 0, 0, 0, -144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -9, 0, 0, 0, 0, 0, 0, 0, -10, 0, 0, 0, 0, 0, 0, 0, -11, 0, 0, 0, 0, 0, 0, 0, -35, -39, 0, 0, 0,
- 0, 0, 0, 0, 0, -113, 0, -40, 0, 0, 0, 0, 0, 0, 0, -173, 0, -103, -126, -143, -162, 0, -41, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -15, -129, -159, 0, 0, 0, 0, -28, -32, 0, 0, 0, 0, -179, 0, -160, -148, -190, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -185, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, -196, -82,
- 0, 0, 0, 0, 0, -106, -169, 0, 0, 0, 0, 0, 0, -84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -125, 0, 0, -152, -181, 0, 0, 0, 0, -182, 0, 0, 0, 0, 0, 0, -133, 0, 0, -168, 0, 0, 0, -150,
- -1, -114, -163, 0, 0, 0, 0, 0, -53, 0, 0, 0, 0, 0, 0, -161, -149, 0, -202, 0, 0, 0, 0, 0, 0, 0, -203, 0,
- 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, 0, 0, -195, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static short baseCheck[] = BaseCheck.baseCheck;
-
- @Override
- public final int baseCheck(int index) {
- return baseCheck[index];
- }
-
- public final static short rhs[] = baseCheck;
-
- @Override
- public final int rhs(int index) {
- return rhs[index];
- }
-
- public interface BaseAction {
- public final static char baseAction[] = { 87, 11, 102, 24, 24, 23, 23, 39, 39, 69, 69, 1, 1, 2, 2, 2, 2, 3, 3,
- 3, 4, 5, 5, 5, 5, 5, 5, 5, 5, 59, 59, 70, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 10,
- 10, 10, 12, 12, 12, 12, 12, 13, 13, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 20, 20,
- 20, 20, 20, 20, 20, 20, 20, 20, 103, 45, 40, 88, 88, 72, 72, 47, 104, 104, 104, 104, 104, 104, 104, 105,
- 105, 105, 106, 106, 111, 111, 112, 112, 107, 107, 108, 108, 108, 114, 114, 109, 109, 109, 109, 109, 110,
- 110, 110, 110, 110, 113, 113, 25, 25, 25, 25, 25, 28, 28, 28, 78, 78, 73, 73, 73, 73, 74, 74, 74, 75,
- 75, 75, 76, 76, 76, 77, 77, 77, 115, 115, 116, 116, 117, 29, 31, 31, 31, 31, 31, 53, 54, 54, 54, 54, 54,
- 54, 54, 54, 54, 54, 54, 54, 63, 60, 60, 89, 90, 65, 65, 61, 61, 61, 66, 79, 79, 80, 80, 67, 67, 67, 49,
- 91, 91, 81, 82, 82, 82, 62, 62, 92, 83, 83, 84, 84, 68, 68, 21, 22, 22, 22, 30, 48, 48, 32, 32, 32, 32,
- 35, 35, 37, 33, 33, 34, 38, 38, 118, 118, 36, 119, 119, 93, 93, 26, 26, 26, 26, 26, 26, 26, 26, 26, 85,
- 50, 50, 50, 50, 27, 56, 56, 55, 55, 55, 57, 57, 51, 51, 94, 94, 71, 71, 58, 58, 58, 41, 41, 41, 42, 43,
- 43, 43, 44, 44, 44, 44, 64, 64, 46, 46, 52, 96, 95, 95, 95, 95, 86, 97, 98, 98, 99, 99, 100, 100, 120,
- 120, 121, 121, 122, 122, 122, 122, 124, 124, 123, 123, 123, 125, 126, 126, 87, 87, 1, 781, 17, 21, 18,
- 344, 739, 44, 388, 386, 524, 31, 468, 634, 632, 662, 650, 718, 666, 74, 91, 135, 213, 15, 668, 329, 991,
- 607, 137, 134, 136, 160, 275, 20, 17, 21, 18, 344, 739, 44, 388, 386, 524, 1154, 468, 634, 632, 662,
- 650, 718, 666, 74, 1427, 139, 166, 692, 239, 360, 31, 50, 143, 146, 149, 152, 421, 446, 1269, 360, 187,
- 241, 1229, 194, 340, 1425, 1587, 1600, 1605, 1619, 1213, 441, 20, 17, 21, 18, 344, 739, 44, 388, 386,
- 524, 341, 468, 634, 632, 662, 650, 718, 666, 74, 281, 336, 20, 17, 21, 18, 344, 739, 44, 388, 386, 524,
- 341, 468, 634, 632, 662, 650, 718, 666, 74, 281, 1444, 443, 293, 195, 282, 693, 25, 575, 97, 384, 1265,
- 489, 20, 17, 21, 18, 344, 42, 44, 388, 386, 524, 287, 468, 970, 282, 360, 31, 255, 213, 12, 1265, 489,
- 20, 17, 21, 18, 344, 42, 44, 388, 386, 844, 289, 288, 489, 20, 17, 21, 18, 344, 42, 40, 1076, 465, 20,
- 17, 21, 18, 344, 739, 44, 388, 386, 524, 290, 468, 634, 632, 662, 650, 718, 666, 74, 281, 489, 20, 17,
- 21, 18, 344, 739, 44, 388, 386, 524, 30, 468, 634, 632, 662, 650, 718, 666, 74, 91, 24, 342, 360, 186,
- 282, 576, 1356, 360, 188, 294, 1265, 489, 20, 17, 21, 18, 344, 42, 44, 388, 386, 865, 291, 537, 20, 17,
- 21, 18, 344, 739, 44, 388, 386, 524, 1642, 468, 634, 632, 662, 650, 718, 666, 74, 1539, 513, 20, 17, 21,
- 18, 344, 41, 340, 299, 20, 17, 21, 18, 344, 739, 44, 388, 386, 524, 446, 468, 634, 632, 662, 650, 718,
- 666, 74, 1540, 189, 179, 236, 240, 489, 20, 17, 21, 18, 344, 42, 44, 388, 386, 524, 50, 468, 634, 632,
- 662, 1212, 135, 213, 254, 213, 580, 396, 63, 137, 134, 136, 160, 489, 20, 17, 21, 18, 344, 739, 44, 388,
- 386, 524, 219, 468, 634, 632, 662, 650, 718, 666, 74, 92, 139, 166, 313, 536, 282, 1131, 327, 143, 146,
- 149, 152, 323, 446, 513, 20, 17, 21, 18, 344, 34, 1425, 1587, 1600, 1605, 1619, 1213, 489, 20, 17, 21,
- 18, 344, 739, 44, 388, 386, 524, 275, 468, 634, 632, 662, 650, 718, 666, 74, 85, 489, 20, 17, 21, 18,
- 344, 739, 44, 388, 386, 524, 413, 468, 634, 632, 662, 650, 718, 666, 74, 84, 489, 20, 17, 21, 18, 344,
- 739, 44, 388, 386, 524, 524, 468, 634, 632, 662, 650, 718, 666, 74, 83, 489, 20, 17, 21, 18, 344, 739,
- 44, 388, 386, 524, 283, 468, 634, 632, 662, 650, 718, 666, 74, 82, 489, 20, 17, 21, 18, 344, 739, 44,
- 388, 386, 524, 561, 468, 634, 632, 662, 650, 718, 666, 74, 81, 489, 20, 17, 21, 18, 344, 739, 44, 388,
- 386, 524, 199, 468, 634, 632, 662, 650, 718, 666, 74, 80, 489, 20, 17, 21, 18, 344, 739, 44, 388, 386,
- 524, 201, 468, 634, 632, 662, 650, 718, 666, 74, 79, 489, 20, 17, 21, 18, 344, 739, 44, 388, 386, 524,
- 110, 468, 634, 632, 662, 650, 718, 666, 74, 78, 489, 20, 17, 21, 18, 344, 739, 44, 388, 386, 524, 117,
- 468, 634, 632, 662, 650, 718, 666, 74, 77, 489, 20, 17, 21, 18, 344, 739, 44, 388, 386, 524, 448, 468,
- 634, 632, 662, 650, 718, 666, 74, 76, 489, 20, 17, 21, 18, 344, 739, 44, 388, 386, 524, 472, 468, 634,
- 632, 662, 650, 718, 666, 74, 75, 489, 20, 17, 21, 18, 344, 739, 44, 388, 386, 524, 657, 468, 634, 632,
- 662, 650, 718, 666, 74, 73, 489, 20, 17, 21, 18, 344, 739, 44, 388, 386, 524, 678, 468, 634, 632, 662,
- 650, 718, 666, 74, 1556, 489, 20, 17, 21, 18, 344, 739, 44, 388, 386, 524, 200, 468, 634, 632, 662, 650,
- 718, 666, 74, 1569, 489, 20, 17, 21, 18, 344, 42, 44, 388, 386, 524, 191, 468, 634, 632, 662, 650, 718,
- 666, 93, 489, 20, 17, 21, 18, 344, 42, 44, 388, 386, 524, 685, 468, 634, 632, 662, 650, 718, 666, 93,
- 513, 20, 17, 21, 18, 344, 33, 1571, 489, 20, 17, 21, 18, 344, 42, 39, 489, 20, 17, 21, 18, 344, 42, 44,
- 388, 386, 524, 212, 468, 634, 632, 662, 650, 718, 666, 93, 489, 20, 17, 21, 18, 344, 42, 44, 388, 386,
- 524, 50, 468, 634, 632, 662, 650, 718, 666, 93, 394, 57, 1645, 696, 194, 1358, 104, 1692, 416, 20, 17,
- 21, 18, 344, 42, 43, 489, 20, 17, 21, 18, 344, 42, 44, 388, 386, 524, 202, 468, 634, 632, 662, 650, 718,
- 666, 93, 489, 20, 17, 21, 18, 344, 42, 44, 388, 386, 524, 105, 468, 634, 632, 662, 650, 1198, 28, 648,
- 360, 296, 1570, 1536, 1265, 562, 1585, 203, 489, 20, 17, 21, 18, 344, 42, 44, 802, 274, 650, 207, 255,
- 213, 236, 218, 1182, 221, 1462, 223, 224, 229, 1541, 276, 267, 1137, 671, 272, 701, 676, 59, 263, 360,
- 1432, 277, 254, 213, 274, 711, 1699, 6, 264, 718, 218, 1182, 221, 1462, 223, 224, 229, 255, 213, 267,
- 1137, 671, 272, 373, 1285, 429, 1681, 218, 1182, 221, 1462, 223, 224, 229, 513, 228, 1429, 445, 696,
- 246, 189, 179, 397, 1681, 261, 489, 20, 17, 21, 18, 344, 42, 44, 388, 386, 524, 206, 468, 634, 632,
- 1150, 135, 213, 89, 59, 1084, 586, 210, 138, 134, 136, 160, 489, 20, 17, 21, 18, 344, 42, 44, 388, 386,
- 524, 152, 468, 634, 1178, 50, 542, 1432, 397, 1277, 400, 140, 166, 284, 305, 1684, 1261, 397, 144, 147,
- 150, 153, 715, 446, 717, 1699, 470, 274, 1279, 1349, 608, 19, 1611, 219, 1182, 221, 1462, 223, 224, 229,
- 1538, 609, 269, 1137, 671, 272, 218, 1182, 221, 1462, 223, 224, 229, 489, 20, 17, 21, 18, 344, 42, 44,
- 823, 1459, 489, 20, 17, 21, 18, 344, 42, 44, 388, 386, 524, 209, 1077, 489, 20, 17, 21, 18, 344, 42, 44,
- 388, 386, 524, 305, 1082, 1079, 1443, 50, 541, 627, 397, 198, 200, 333, 1699, 360, 298, 716, 1612, 722,
- 1567, 1011, 489, 20, 17, 21, 18, 344, 42, 44, 388, 386, 886, 23, 539, 218, 1182, 221, 1462, 223, 224,
- 229, 489, 20, 17, 21, 18, 344, 42, 38, 206, 1459, 489, 20, 17, 21, 18, 344, 42, 44, 388, 386, 907, 489,
- 20, 17, 21, 18, 344, 42, 44, 388, 928, 489, 20, 17, 21, 18, 344, 42, 44, 388, 949, 675, 199, 200, 232,
- 281, 281, 180, 397, 59, 50, 58, 1526, 365, 20, 17, 21, 18, 344, 42, 36, 1651, 698, 144, 277, 135, 213,
- 274, 706, 22, 241, 273, 142, 134, 136, 160, 1348, 246, 151, 171, 1765, 689, 267, 1137, 671, 272, 365,
- 20, 17, 21, 18, 344, 42, 36, 1765, 1279, 1765, 141, 166, 1429, 219, 1182, 221, 1462, 223, 224, 229, 227,
- 1765, 1765, 247, 489, 20, 17, 21, 18, 344, 42, 37, 489, 20, 17, 21, 18, 344, 42, 36, 489, 20, 17, 21,
- 18, 344, 42, 35, 60, 489, 20, 17, 21, 18, 344, 42, 47, 1765, 544, 1237, 489, 20, 17, 21, 18, 344, 42,
- 46, 206, 607, 52, 281, 281, 544, 274, 489, 20, 17, 21, 18, 344, 42, 45, 1123, 607, 1277, 50, 397, 281,
- 267, 1137, 671, 272, 50, 50, 243, 242, 317, 1123, 236, 1277, 281, 59, 281, 317, 513, 266, 664, 1611,
- 259, 279, 197, 244, 1555, 1765, 1352, 28, 206, 197, 604, 254, 213, 1265, 1256, 259, 245, 87, 295, 1555,
- 1277, 1352, 1263, 613, 87, 87, 1516, 206, 636, 1263, 1426, 135, 213, 1516, 324, 542, 1432, 1765, 145,
- 134, 136, 160, 645, 1256, 135, 213, 1169, 204, 1215, 135, 213, 148, 134, 136, 160, 1272, 151, 134, 136,
- 160, 274, 1279, 1765, 135, 213, 236, 181, 1765, 48, 646, 154, 134, 136, 160, 142, 269, 1137, 671, 272,
- 607, 607, 454, 1765, 1765, 95, 607, 254, 213, 397, 389, 497, 497, 607, 197, 1123, 607, 1765, 50, 1765,
- 197, 513, 1658, 1646, 209, 397, 521, 1123, 206, 513, 197, 1765, 280, 1765, 278, 231, 281, 607, 372,
- 1211, 1443, 259, 445, 59, 372, 1717, 1765, 1352, 225, 1765, 87, 1123, 1765, 259, 372, 315, 192, 1665,
- 87, 1352, 297, 397, 192, 1180, 342, 1765, 1765, 205, 1389, 1661, 1277, 938, 193, 1765, 1604, 1661, 1765,
- 260, 1765, 1765, 1765, 1765, 1765, 1720, 230, 1765, 1765, 234, 1765, 1765, 1765, 1765, 1765, 1449, 1765,
- 1765, 1765, 328, 1765, 0, 20, 179, 0, 1, 1991, 0, 1, 2002, 0 };
- }
-
- public final static char baseAction[] = BaseAction.baseAction;
-
- @Override
- public final int baseAction(int index) {
- return baseAction[index];
- }
-
- public final static char lhs[] = baseAction;
-
- @Override
- public final int lhs(int index) {
- return lhs[index];
- }
-
- public interface TermCheck {
- public final static byte termCheck[] = { 0, 0, 1, 2, 3, 4, 0, 6, 7, 8, 9, 10, 0, 12, 13, 0, 15, 16, 17, 18, 19,
- 20, 21, 22, 23, 24, 25, 26, 27, 28, 0, 0, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 29, 44, 45,
- 46, 0, 1, 0, 3, 0, 5, 6, 7, 8, 0, 0, 0, 0, 13, 2, 0, 4, 59, 14, 55, 56, 57, 58, 11, 24, 25, 26, 27, 28,
- 47, 48, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 0, 1, 0, 3, 51, 5, 6, 7, 8, 0,
- 0, 1, 2, 13, 4, 0, 80, 55, 56, 57, 58, 11, 0, 60, 24, 25, 26, 27, 28, 61, 62, 31, 32, 33, 34, 35, 36,
- 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 0, 1, 0, 3, 51, 5, 6, 7, 8, 0, 0, 1, 2, 13, 4, 47, 48, 55, 56,
- 57, 58, 11, 47, 48, 24, 25, 26, 27, 28, 0, 1, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
- 45, 46, 0, 1, 0, 3, 51, 0, 6, 7, 8, 4, 0, 0, 0, 13, 4, 60, 4, 0, 0, 1, 2, 59, 5, 5, 24, 25, 26, 27, 28,
- 11, 0, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 0, 44, 45, 46, 0, 30, 6, 7, 8, 0, 6, 7, 8, 13, 0,
- 53, 54, 43, 9, 10, 53, 54, 53, 54, 24, 25, 26, 27, 28, 61, 62, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
- 41, 42, 0, 1, 2, 3, 4, 5, 0, 0, 64, 9, 10, 5, 12, 13, 0, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 1, 2, 3,
- 4, 5, 0, 1, 2, 9, 10, 64, 12, 13, 0, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 0, 50, 2, 0, 4, 0, 1, 50, 3,
- 0, 11, 11, 0, 1, 2, 3, 4, 5, 0, 14, 0, 9, 10, 5, 12, 50, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 1,
- 29, 3, 59, 0, 1, 2, 3, 4, 5, 29, 30, 0, 9, 10, 63, 12, 5, 43, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 1,
- 2, 3, 4, 0, 68, 69, 0, 9, 10, 0, 12, 5, 30, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 14, 50, 0, 1, 2, 3,
- 4, 0, 1, 29, 3, 9, 10, 30, 12, 0, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 51, 0, 1, 2, 3, 4, 0, 1, 0, 3,
- 9, 10, 0, 12, 0, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 1, 2, 3, 4, 0, 1, 0, 3, 9, 10, 0, 12, 65,
- 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 1, 2, 3, 4, 65, 47, 48, 0, 9, 10, 0, 12, 5, 49, 15, 16, 17,
- 18, 19, 20, 21, 22, 23, 0, 1, 2, 3, 4, 0, 47, 48, 0, 9, 10, 0, 12, 0, 30, 15, 16, 17, 18, 19, 20, 21,
- 22, 23, 0, 1, 2, 3, 4, 0, 1, 0, 3, 9, 10, 4, 12, 0, 0, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 0, 2, 2,
- 4, 5, 6, 7, 8, 49, 0, 11, 11, 13, 0, 0, 1, 0, 3, 0, 6, 7, 8, 60, 24, 25, 26, 27, 28, 14, 30, 12, 49, 70,
- 71, 72, 73, 74, 75, 76, 77, 78, 79, 0, 0, 0, 0, 0, 2, 6, 7, 8, 0, 6, 7, 8, 13, 11, 6, 7, 8, 15, 16, 0,
- 0, 13, 0, 24, 25, 26, 27, 28, 6, 7, 8, 0, 24, 25, 26, 27, 28, 6, 7, 8, 0, 0, 1, 0, 13, 0, 6, 7, 8, 6, 7,
- 8, 0, 13, 52, 24, 25, 26, 27, 28, 0, 9, 10, 0, 24, 25, 26, 27, 28, 67, 0, 0, 2, 0, 11, 5, 0, 6, 7, 8, 0,
- 11, 9, 10, 0, 5, 2, 0, 0, 0, 49, 0, 5, 0, 5, 11, 0, 1, 2, 11, 30, 0, 1, 2, 0, 1, 0, 3, 63, 29, 0, 0, 0,
- 0, 4, 52, 4, 0, 12, 0, 29, 0, 29, 0, 11, 14, 0, 0, 0, 0, 0, 14, 43, 14, 0, 14, 0, 14, 0, 0, 52, 0, 0, 0,
- 0, 0, 66, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0 };
- }
-
- public final static byte termCheck[] = TermCheck.termCheck;
-
- @Override
- public final int termCheck(int index) {
- return termCheck[index];
- }
-
- public interface TermAction {
- public final static char termAction[] = { 0, 1765, 1776, 1554, 1777, 1500, 1765, 1979, 1980, 1981, 1492, 1381,
- 59, 1508, 1928, 88, 1020, 673, 578, 1778, 1779, 1780, 1781, 1028, 483, 1929, 1927, 1982, 1930, 1926, 54,
- 1765, 1933, 1938, 1937, 1935, 1936, 1934, 1939, 1940, 1932, 1941, 1942, 1943, 639, 1281, 597, 381, 1765,
- 1, 1, 1, 1765, 191, 1, 1, 1, 61, 211, 253, 265, 1, 1422, 62, 1, 917, 2775, 1391, 1361, 545, 470, 349, 1,
- 1, 1, 1, 1, 1402, 1412, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 191, 1, 1, 1, 1765, 1, 182, 1, 1961, 190, 1,
- 1, 1, 60, 262, 1991, 1151, 1, 1, 58, 1755, 1391, 1361, 545, 470, 349, 57, 1000, 1, 1, 1, 1, 1, 1331,
- 1318, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 190, 1, 1, 1, 1765, 1, 1765, 1, 1961, 191, 1, 1, 1, 201, 268,
- 1991, 1151, 1, 253, 1402, 1412, 1391, 1361, 545, 470, 349, 1402, 1412, 1, 1, 1, 1, 1, 1765, 2003, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 191, 1, 1, 1, 1765, 1776, 183, 1777, 1961, 48, 1979, 1980, 1981, 1543, 50,
- 63, 49, 1928, 1543, 492, 1543, 1765, 1, 1759, 1151, 1092, 1773, 1771, 1929, 1927, 1982, 1930, 1926, 349,
- 68, 1933, 1938, 1937, 1935, 1936, 1934, 1939, 1940, 1932, 1941, 1942, 1943, 129, 1281, 597, 381, 1765,
- 1770, 1979, 1980, 1981, 51, 1979, 1980, 1981, 1928, 69, 1528, 1517, 1772, 1308, 1140, 1528, 1517, 1528,
- 1517, 1929, 1927, 1982, 1930, 1926, 1331, 1318, 1933, 1938, 1937, 1935, 1936, 1934, 1939, 1940, 1932,
- 1941, 1942, 1943, 1, 1776, 1554, 1777, 1434, 1769, 1765, 286, 1218, 1492, 1381, 1769, 1508, 557, 1765,
- 1020, 673, 578, 1778, 1779, 1780, 1781, 1028, 483, 1765, 1776, 1554, 1777, 1467, 1769, 1, 1991, 1168,
- 1492, 1381, 1218, 1508, 959, 66, 1020, 673, 578, 1778, 1779, 1780, 1781, 1028, 483, 271, 268, 1768,
- 1422, 72, 253, 1765, 1776, 1768, 1777, 256, 349, 349, 1, 1776, 1554, 1777, 1500, 29, 1765, 1067, 1765,
- 1492, 1381, 1771, 1508, 1768, 2775, 1020, 673, 578, 1778, 1779, 1780, 1781, 1028, 483, 1765, 1776, 1682,
- 1777, 1056, 1765, 1776, 1554, 1777, 1500, 1769, 1460, 1770, 1, 1492, 1381, 1245, 1508, 90, 29, 1020,
- 673, 578, 1778, 1779, 1780, 1781, 1028, 483, 1765, 1, 1, 1, 1, 30, 1112, 1674, 1765, 1, 1, 1765, 1,
- 1771, 90, 1, 1, 1, 1, 1, 1, 1, 1, 1, 70, 622, 1768, 1765, 1776, 1554, 1777, 1500, 185, 2805, 417, 2805,
- 1492, 1381, 1770, 1508, 71, 2775, 1020, 673, 578, 1778, 1779, 1780, 1781, 1028, 483, 2081, 1, 1776,
- 1554, 1777, 1500, 184, 2807, 56, 2807, 1492, 1381, 1765, 1508, 1, 2775, 1020, 673, 578, 1778, 1779,
- 1780, 1781, 1028, 483, 1765, 1776, 1554, 1777, 1500, 206, 2809, 55, 2809, 1492, 1381, 1765, 1508, 611,
- 2775, 1020, 673, 578, 1778, 1779, 1780, 1781, 1028, 483, 1765, 1776, 1554, 1777, 1500, 611, 1402, 1412,
- 1, 1492, 1381, 1765, 1508, 1771, 2023, 1020, 673, 578, 1778, 1779, 1780, 1781, 1028, 483, 1765, 1776,
- 1561, 1777, 1500, 1765, 1402, 1412, 1, 1492, 1381, 42, 1508, 1765, 1770, 1020, 673, 578, 1778, 1779,
- 1780, 1781, 1028, 483, 1, 1776, 1554, 1777, 1500, 208, 1776, 1, 1777, 1492, 1381, 253, 1508, 1765, 1765,
- 1020, 673, 578, 1778, 1779, 1780, 1781, 1028, 483, 20, 270, 1756, 1667, 1756, 1756, 179, 179, 179, 2022,
- 1765, 1756, 349, 179, 248, 1765, 1776, 1765, 1777, 64, 1979, 1980, 1981, 896, 179, 179, 179, 179, 179,
- 1260, 1756, 449, 2023, 875, 854, 833, 812, 791, 749, 770, 728, 707, 686, 130, 1765, 1765, 32, 249, 1196,
- 1979, 1980, 1981, 131, 1, 1, 1, 1928, 1562, 1979, 1980, 1981, 1791, 1792, 1765, 1765, 1928, 250, 1929,
- 1927, 1982, 1930, 1926, 1, 1, 1, 132, 1929, 1927, 1982, 1930, 1926, 1979, 1980, 1981, 133, 1, 1762, 251,
- 1928, 67, 1979, 1980, 1981, 1979, 1980, 1981, 53, 1928, 464, 1929, 1927, 1982, 1930, 1926, 1765, 1308,
- 1140, 1765, 1929, 1927, 1982, 1930, 1926, 374, 1, 252, 1422, 52, 980, 1771, 1765, 1979, 1980, 1981,
- 1765, 349, 1308, 1140, 222, 1775, 1668, 1, 292, 285, 2023, 30, 1775, 207, 376, 349, 1, 1991, 1168, 1036,
- 1770, 253, 1991, 1168, 207, 1172, 65, 1172, 1245, 1342, 1765, 1765, 1765, 220, 1170, 1132, 1430, 1765,
- 449, 189, 1794, 189, 2790, 189, 349, 1346, 1765, 1765, 1765, 1765, 1765, 1431, 376, 185, 1765, 184,
- 1765, 206, 1765, 1765, 1354, 1765, 1765, 1765, 1765, 1765, 1774, 1765, 1765, 1765, 1765, 1765, 1765,
- 1774 };
- }
-
- public final static char termAction[] = TermAction.termAction;
-
- @Override
- public final int termAction(int index) {
- return termAction[index];
- }
-
- public interface Asb {
- public final static char asb[] = { 0, 375, 1, 54, 41, 54, 54, 54, 54, 54, 54, 54, 54, 54, 3, 334, 23, 20, 27,
- 25, 33, 31, 35, 34, 37, 36, 9, 54, 334, 258, 258, 203, 54, 170, 170, 286, 334, 54, 54, 54, 54, 54, 54,
- 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 170,
- 170, 45, 82, 290, 48, 228, 168, 167, 261, 273, 96, 273, 96, 96, 273, 96, 273, 348, 124, 20, 20, 25, 25,
- 25, 25, 23, 23, 31, 27, 27, 34, 33, 76, 36, 35, 98, 200, 98, 286, 290, 104, 45, 371, 52, 170, 305, 231,
- 96, 258, 258, 96, 258, 54, 200, 80, 290, 281, 371, 45, 51, 48, 170, 284, 348, 169, 233, 98, 173, 98,
- 222, 80, 281, 281, 54, 54, 45, 52, 228, 298, 297, 290, 233, 170, 98, 173, 222, 222, 224, 101, 281, 371,
- 45, 45, 170, 305, 231, 284, 173, 200, 71, 173, 222, 224, 292, 224, 200, 78, 295, 258, 54, 100, 371, 281,
- 233, 173, 73, 224, 200, 54, 258, 3, 82, 45, 258, 54, 281, 170, 169, 200, 301, 54, 300, 67, 290, 200, 45,
- 259, 73, 54, 67 };
- }
-
- public final static char asb[] = Asb.asb;
-
- @Override
- public final int asb(int index) {
- return asb[index];
- }
-
- public interface Asr {
- public final static byte asr[] = { 0, 80, 0, 11, 2, 52, 67, 15, 16, 60, 70, 71, 72, 73, 74, 76, 75, 77, 78, 79,
- 4, 53, 54, 9, 10, 48, 47, 55, 56, 57, 58, 61, 62, 12, 63, 64, 65, 43, 66, 68, 69, 59, 30, 80, 29, 50, 5,
- 0, 6, 7, 8, 13, 50, 5, 18, 19, 20, 21, 3, 15, 16, 12, 9, 10, 22, 23, 17, 4, 2, 1, 0, 66, 5, 4, 1, 2, 59,
- 0, 5, 43, 11, 52, 15, 16, 12, 4, 9, 10, 22, 23, 17, 2, 18, 19, 20, 21, 1, 3, 14, 0, 60, 11, 52, 0, 6, 7,
- 8, 2, 18, 19, 20, 21, 1, 3, 15, 16, 12, 4, 9, 10, 22, 23, 17, 0, 7, 13, 28, 8, 27, 26, 25, 6, 24, 52,
- 67, 15, 16, 12, 9, 10, 53, 54, 47, 48, 55, 56, 57, 58, 61, 62, 63, 64, 65, 68, 69, 60, 70, 71, 72, 73,
- 74, 75, 76, 77, 78, 79, 4, 2, 11, 29, 30, 5, 0, 24, 31, 6, 32, 44, 25, 33, 26, 34, 35, 27, 7, 36, 37,
- 13, 45, 28, 46, 38, 39, 8, 40, 41, 42, 1, 3, 51, 5, 43, 0, 5, 30, 17, 18, 19, 20, 21, 1, 3, 2, 15, 16,
- 12, 4, 9, 10, 22, 23, 0, 1, 3, 5, 43, 29, 0, 4, 2, 11, 30, 5, 24, 31, 6, 32, 44, 25, 33, 26, 34, 35, 27,
- 7, 36, 37, 13, 45, 28, 46, 38, 39, 8, 40, 41, 42, 49, 3, 1, 0, 39, 31, 36, 34, 35, 33, 32, 37, 38, 40,
- 41, 42, 59, 66, 28, 25, 13, 24, 27, 26, 6, 7, 8, 29, 1, 5, 30, 2, 11, 4, 0, 5, 29, 43, 60, 0, 2, 30, 11,
- 59, 66, 5, 29, 0, 4, 24, 31, 6, 32, 44, 25, 33, 26, 34, 35, 27, 7, 36, 37, 13, 45, 28, 46, 38, 39, 8,
- 40, 41, 42, 1, 3, 49, 0, 17, 18, 19, 20, 21, 2, 15, 16, 12, 4, 9, 10, 22, 23, 1, 3, 44, 45, 46, 39, 31,
- 36, 34, 35, 33, 32, 37, 38, 40, 41, 42, 28, 25, 13, 24, 27, 26, 6, 7, 8, 0, 17, 18, 19, 20, 21, 1, 3, 2,
- 15, 16, 12, 4, 9, 10, 22, 23, 51, 0 };
- }
-
- public final static byte asr[] = Asr.asr;
-
- @Override
- public final int asr(int index) {
- return asr[index];
- }
-
- public interface Nasb {
- public final static byte nasb[] = { 0, 118, 41, 23, 41, 23, 23, 23, 23, 23, 23, 23, 23, 23, 41, 98, 41, 41, 41,
- 41, 41, 41, 41, 41, 41, 41, 41, 23, 98, 18, 18, 63, 99, 122, 122, 89, 1, 23, 23, 23, 23, 23, 23, 23, 23,
- 23, 23, 23, 23, 23, 23, 23, 23, 99, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 122, 122, 13,
- 50, 76, 11, 88, 44, 44, 71, 72, 29, 72, 86, 86, 72, 85, 72, 66, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
- 41, 41, 41, 41, 41, 41, 41, 51, 59, 41, 102, 41, 31, 13, 61, 12, 122, 93, 121, 7, 7, 7, 7, 7, 23, 74,
- 59, 41, 83, 61, 13, 12, 27, 122, 55, 34, 41, 95, 46, 59, 41, 59, 21, 83, 59, 23, 23, 13, 12, 54, 44, 44,
- 76, 95, 122, 41, 106, 59, 7, 48, 9, 59, 61, 13, 13, 122, 93, 121, 79, 59, 74, 15, 114, 7, 48, 41, 41,
- 74, 20, 41, 7, 23, 25, 61, 27, 110, 106, 57, 48, 74, 23, 7, 42, 22, 13, 7, 23, 27, 122, 122, 74, 16, 23,
- 41, 57, 76, 74, 13, 41, 57, 23, 81 };
- }
-
- public final static byte nasb[] = Nasb.nasb;
-
- @Override
- public final int nasb(int index) {
- return nasb[index];
- }
-
- public interface Nasr {
- public final static char nasr[] = { 0, 78, 76, 75, 65, 74, 73, 1, 0, 98, 0, 11, 5, 24, 0, 11, 69, 0, 70, 0, 86,
- 11, 52, 5, 0, 100, 0, 21, 0, 89, 0, 5, 11, 0, 78, 77, 76, 75, 65, 74, 73, 0, 96, 0, 26, 0, 90, 0, 59, 0,
- 5, 52, 46, 0, 23, 43, 42, 35, 33, 11, 0, 56, 0, 11, 88, 0, 65, 60, 61, 62, 63, 53, 28, 0, 39, 0, 27, 50,
- 0, 43, 42, 35, 33, 27, 0, 92, 66, 0, 23, 42, 43, 11, 0, 27, 50, 11, 25, 0, 49, 11, 45, 0, 43, 42, 27, 0,
- 80, 11, 49, 0, 93, 11, 25, 0, 11, 49, 67, 0, 11, 87, 0, 11, 23, 0 };
- }
-
- public final static char nasr[] = Nasr.nasr;
-
- @Override
- public final int nasr(int index) {
- return nasr[index];
- }
-
- public interface TerminalIndex {
- public final static char terminalIndex[] = { 0, 85, 2, 86, 9, 87, 48, 64, 76, 10, 11, 1, 8, 69, 3, 6, 7, 68, 81,
- 82, 83, 84, 12, 13, 44, 55, 60, 63, 72, 42, 90, 47, 52, 56, 61, 62, 66, 67, 74, 75, 78, 79, 80, 91, 54,
- 70, 73, 16, 17, 30, 89, 93, 4, 14, 15, 18, 19, 20, 21, 29, 31, 22, 23, 24, 25, 26, 92, 5, 27, 28, 32,
- 33, 34, 35, 36, 37, 38, 39, 40, 41, 94, 45, 46, 49, 50, 51, 53, 57, 58, 59, 65, 71, 77, 88 };
- }
-
- public final static char terminalIndex[] = TerminalIndex.terminalIndex;
-
- @Override
- public final int terminalIndex(int index) {
- return terminalIndex[index];
- }
-
- public interface NonterminalIndex {
- public final static char nonterminalIndex[] = { 0, 100, 0, 0, 0, 102, 106, 107, 108, 109, 110, 0, 111, 112, 113,
- 114, 115, 116, 117, 0, 118, 128, 0, 97, 96, 121, 149, 0, 127, 0, 0, 0, 145, 147, 0, 148, 0, 0, 0, 98, 0,
- 158, 159, 160, 0, 101, 105, 120, 136, 140, 146, 155, 0, 130, 0, 150, 153, 154, 157, 0, 131, 132, 133,
- 134, 135, 137, 0, 139, 144, 99, 103, 104, 119, 122, 123, 124, 125, 126, 129, 0, 138, 142, 0, 0, 143,
- 152, 162, 95, 0, 0, 0, 141, 0, 151, 156, 161, 0, 163, 164, 0, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static char nonterminalIndex[] = NonterminalIndex.nonterminalIndex;
-
- @Override
- public final int nonterminalIndex(int index) {
- return nonterminalIndex[index];
- }
-
- public interface ScopePrefix {
- public final static char scopePrefix[] = { 82, 113, 92, 35, 41, 121, 12, 136, 21, 51, 69, 28, 47, 103, 161, 165,
- 145, 1, 1, 32, 56, 79, 169, 6, 107, 152, 152, 127, 99, 59, 59, 59 };
- }
-
- public final static char scopePrefix[] = ScopePrefix.scopePrefix;
-
- @Override
- public final int scopePrefix(int index) {
- return scopePrefix[index];
- }
-
- public interface ScopeSuffix {
- public final static char scopeSuffix[] = { 90, 90, 90, 4, 4, 90, 18, 142, 26, 4, 26, 26, 4, 101, 26, 4, 149, 4,
- 4, 26, 4, 26, 26, 9, 110, 155, 158, 130, 101, 66, 61, 74 };
- }
-
- public final static char scopeSuffix[] = ScopeSuffix.scopeSuffix;
-
- @Override
- public final int scopeSuffix(int index) {
- return scopeSuffix[index];
- }
-
- public interface ScopeLhs {
- public final static char scopeLhs[] = { 62, 60, 62, 26, 26, 60, 46, 108, 44, 26, 38, 44, 26, 67, 5, 5, 19, 100,
- 99, 42, 26, 35, 3, 86, 67, 7, 5, 109, 67, 38, 36, 38 };
- }
-
- public final static char scopeLhs[] = ScopeLhs.scopeLhs;
-
- @Override
- public final int scopeLhs(int index) {
- return scopeLhs[index];
- }
-
- public interface ScopeLa {
- public final static byte scopeLa[] = { 43, 43, 43, 50, 50, 43, 43, 86, 30, 50, 30, 30, 50, 66, 30, 50, 59, 50,
- 50, 30, 50, 30, 30, 60, 1, 30, 30, 92, 66, 2, 2, 2 };
- }
-
- public final static byte scopeLa[] = ScopeLa.scopeLa;
-
- @Override
- public final int scopeLa(int index) {
- return scopeLa[index];
- }
-
- public interface ScopeStateSet {
- public final static byte scopeStateSet[] = { 23, 23, 23, 27, 27, 23, 17, -1, 31, 27, 9, 31, 27, 5, 38, 38, 68,
- 1, 3, 31, 27, 9, 38, 94, 5, 41, 38, -1, 5, 9, 9, 9 };
- }
-
- public final static byte scopeStateSet[] = ScopeStateSet.scopeStateSet;
-
- @Override
- public final int scopeStateSet(int index) {
- return scopeStateSet[index];
- }
-
- public interface ScopeRhs {
- public final static char scopeRhs[] = { 0, 140, 11, 0, 96, 0, 190, 104, 0, 31, 135, 0, 152, 188, 104, 14, 145,
- 0, 98, 0, 0, 148, 104, 2, 135, 0, 97, 0, 148, 104, 2, 0, 151, 2, 0, 113, 13, 178, 104, 11, 0, 113, 178,
- 104, 13, 11, 0, 113, 13, 11, 0, 113, 178, 104, 11, 0, 113, 11, 0, 128, 0, 2, 0, 151, 97, 0, 2, 97, 0,
- 148, 104, 2, 128, 0, 2, 0, 150, 97, 0, 141, 2, 0, 152, 176, 104, 14, 94, 185, 44, 0, 98, 0, 152, 176,
- 104, 14, 185, 44, 0, 142, 0, 99, 0, 184, 104, 142, 0, 104, 142, 0, 141, 99, 0, 172, 104, 14, 183, 94,
- 182, 158, 0, 172, 104, 14, 182, 158, 0, 197, 85, 0, 77, 2, 101, 97, 99, 0, 197, 116, 138, 2, 89, 0, 53,
- 0, 0, 138, 69, 111, 0, 29, 118, 0, 164, 2, 0, 97, 107, 0, 97, 105, 0, 181, 2, 98, 0, 138, 11, 98, 0,
- 138, 2, 0 };
- }
-
- public final static char scopeRhs[] = ScopeRhs.scopeRhs;
-
- @Override
- public final int scopeRhs(int index) {
- return scopeRhs[index];
- }
-
- public interface ScopeState {
- public final static char scopeState[] = { 0, 443, 0, 341, 0, 1651, 1661, 1645, 0, 1449, 1342, 1168, 1269, 1256,
- 1151, 1123, 0, 492, 417, 396, 1538, 1084, 0, 607, 1213, 317, 0, 1462, 1182, 1137, 671, 1256, 1151, 1123,
- 1611, 1422, 1516, 0, 1020, 673, 578, 1467, 1434, 1084, 611, 1112, 1245, 1218, 1331, 1318, 449, 1412,
- 1402, 1391, 1361, 545, 470, 1543, 1528, 1517, 1308, 1140, 1508, 1500, 1492, 1381, 1028, 483, 1092, 1056,
- 1036, 492, 1000, 980, 959, 938, 586, 917, 557, 349, 896, 875, 854, 833, 812, 791, 770, 749, 728, 707,
- 686, 317, 639, 513, 417, 396, 0 };
- }
-
- public final static char scopeState[] = ScopeState.scopeState;
-
- @Override
- public final int scopeState(int index) {
- return scopeState[index];
- }
-
- public interface InSymb {
- public final static char inSymb[] = { 0, 0, 180, 104, 165, 17, 23, 22, 10, 9, 4, 12, 16, 15, 98, 2, 102, 101,
- 105, 103, 107, 106, 109, 108, 111, 110, 99, 29, 2, 67, 52, 2, 11, 164, 138, 142, 104, 10, 9, 54, 53, 4,
- 58, 57, 56, 55, 47, 48, 12, 62, 61, 64, 63, 69, 68, 65, 79, 78, 77, 75, 76, 74, 73, 72, 71, 70, 60, 164,
- 181, 138, 116, 104, 11, 2, 136, 135, 166, 167, 158, 168, 46, 45, 169, 44, 170, 171, 94, 101, 101, 103,
- 103, 103, 103, 102, 102, 106, 105, 105, 108, 107, 138, 110, 109, 116, 14, 145, 143, 120, 13, 113, 104,
- 4, 151, 104, 2, 182, 159, 159, 185, 159, 59, 104, 14, 120, 4, 104, 113, 178, 149, 148, 118, 104, 150,
- 104, 94, 14, 94, 14, 104, 4, 120, 178, 13, 113, 4, 2, 126, 128, 104, 29, 148, 183, 104, 14, 104, 188,
- 104, 120, 104, 113, 113, 141, 104, 2, 143, 14, 172, 142, 173, 104, 176, 94, 177, 152, 29, 190, 52, 11,
- 191, 104, 149, 104, 104, 104, 176, 152, 60, 29, 132, 60, 140, 52, 11, 149, 148, 186, 172, 184, 59, 141,
- 2, 104, 152, 140, 29, 29, 59, 143 };
- }
-
- public final static char inSymb[] = InSymb.inSymb;
-
- @Override
- public final int inSymb(int index) {
- return inSymb[index];
- }
-
- public interface Name {
- public final static String name[] = { "", "[", "(", "{", ".", "->", "++", "--", "&", "*", "+", "-", "~", "!",
- "/", "%", ">>", "<<", "<", ">", "<=", ">=", "==", "!=", "^", "|", "&&", "||", "?", ":", "...", "=",
- "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", ",", "$empty", "auto", "break", "case",
- "char", "const", "continue", "default", "do", "double", "else", "enum", "extern", "float", "for",
- "goto", "if", "inline", "int", "long", "register", "restrict", "return", "short", "signed", "sizeof",
- "static", "struct", "switch", "typedef", "union", "unsigned", "void", "volatile", "while", "_Bool",
- "_Complex", "_Imaginary", "integer", "floating", "charconst", "stringlit", "identifier", "Completion",
- "EndOfCompletion", "Invalid", "RightBracket", "RightParen", "RightBrace", "SemiColon", "ERROR_TOKEN",
- "EOF_TOKEN", "no_sizeof_type_id_start", "]", ")", "}", ";", "identifier_token", "expression",
- "postfix_expression", "member_name", "type_id", "initializer_list", "unary_expression",
- "cast_expression", "multiplicative_expression", "additive_expression", "shift_expression",
- "relational_expression", "equality_expression", "and_expression", "exclusive_or_expression",
- "inclusive_or_expression", "logical_and_expression", "logical_or_expression", "assignment_expression",
- "expression_list_actual", "constant_expression", "declaration_specifiers",
- "simple_declaration_specifiers", "struct_or_union_declaration_sp" + "ecifiers",
- "elaborated_declaration_specifi" + "ers", "enum_declaration_specifiers",
- "typdef_name_declaration_specif" + "iers", "no_type_declaration_specifier", "type_qualifier",
- "no_type_declaration_specifiers", "simple_type_specifier", "struct_or_union_specifier",
- "elaborated_specifier", "enum_specifier", "type_name_specifier", "initializer", "declarator",
- "struct_or_union", "struct_declaration_list", "struct_declaration", "specifier_qualifier_list",
- "struct_declarator_list", "complete_struct_declarator", "enumerator_list", "enumerator",
- "direct_declarator", "pointer_seq", "array_direct_declarator", "basic_direct_declarator",
- "array_modifier", "parameter_type_list", "identifier_list", "array_modifier_type_qualifiers",
- "type_qualifier_list", "parameter_list", "parameter_declaration", "complete_parameter_declarator",
- "abstract_declarator", "direct_abstract_declarator", "basic_direct_abstract_declarat" + "or",
- "array_direct_abstract_declarat" + "or", "initializer_seq", "designated_initializer", "designation",
- "designator_list", "designator" };
- }
-
- public final static String name[] = Name.name;
-
- @Override
- public final String name(int index) {
- return name[index];
- }
-
- public final static int ERROR_SYMBOL = 51, SCOPE_UBOUND = 31, SCOPE_SIZE = 32, MAX_NAME_LENGTH = 38;
-
- @Override
- public final int getErrorSymbol() {
- return ERROR_SYMBOL;
- }
-
- @Override
- public final int getScopeUbound() {
- return SCOPE_UBOUND;
- }
-
- @Override
- public final int getScopeSize() {
- return SCOPE_SIZE;
- }
-
- @Override
- public final int getMaxNameLength() {
- return MAX_NAME_LENGTH;
- }
-
- public final static int NUM_STATES = 207, NT_OFFSET = 93, LA_STATE_OFFSET = 2081, MAX_LA = 2, NUM_RULES = 316,
- NUM_NONTERMINALS = 126, NUM_SYMBOLS = 219, SEGMENT_SIZE = 8192, START_STATE = 1666, IDENTIFIER_SYMBOL = 0,
- EOFT_SYMBOL = 80, EOLT_SYMBOL = 80, ACCEPT_ACTION = 1755, ERROR_ACTION = 1765;
-
- public final static boolean BACKTRACK = true;
-
- @Override
- public final int getNumStates() {
- return NUM_STATES;
- }
-
- @Override
- public final int getNtOffset() {
- return NT_OFFSET;
- }
-
- @Override
- public final int getLaStateOffset() {
- return LA_STATE_OFFSET;
- }
-
- @Override
- public final int getMaxLa() {
- return MAX_LA;
- }
-
- @Override
- public final int getNumRules() {
- return NUM_RULES;
- }
-
- @Override
- public final int getNumNonterminals() {
- return NUM_NONTERMINALS;
- }
-
- @Override
- public final int getNumSymbols() {
- return NUM_SYMBOLS;
- }
-
- @Override
- public final int getSegmentSize() {
- return SEGMENT_SIZE;
- }
-
- @Override
- public final int getStartState() {
- return START_STATE;
- }
-
- @Override
- public final int getStartSymbol() {
- return lhs[0];
- }
-
- public final int getIdentifierSymbol() {
- return IDENTIFIER_SYMBOL;
- }
-
- @Override
- public final int getEoftSymbol() {
- return EOFT_SYMBOL;
- }
-
- @Override
- public final int getEoltSymbol() {
- return EOLT_SYMBOL;
- }
-
- @Override
- public final int getAcceptAction() {
- return ACCEPT_ACTION;
- }
-
- @Override
- public final int getErrorAction() {
- return ERROR_ACTION;
- }
-
- @Override
- public final boolean isValidForParser() {
- return isValidForParser;
- }
-
- @Override
- public final boolean getBacktrack() {
- return BACKTRACK;
- }
-
- @Override
- public final int originalState(int state) {
- return -baseCheck[state];
- }
-
- @Override
- public final int asi(int state) {
- return asb[originalState(state)];
- }
-
- @Override
- public final int nasi(int state) {
- return nasb[originalState(state)];
- }
-
- @Override
- public final int inSymbol(int state) {
- return inSymb[originalState(state)];
- }
-
- @Override
- public final int ntAction(int state, int sym) {
- return baseAction[state + sym];
- }
-
- @Override
- public final int tAction(int state, int sym) {
- int i = baseAction[state], k = i + sym;
- return termAction[termCheck[k] == sym ? k : i];
- }
-
- @Override
- public final int lookAhead(int la_state, int sym) {
- int k = la_state + sym;
- return termAction[termCheck[k] == sym ? k : la_state];
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99SizeofExpressionParsersym.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99SizeofExpressionParsersym.java
deleted file mode 100644
index 85210188c3d..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99SizeofExpressionParsersym.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2010 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.dom.lrparser.c99;
-
-public interface C99SizeofExpressionParsersym {
- public final static int TK_auto = 24, TK_break = 81, TK_case = 82, TK_char = 31, TK_const = 6, TK_continue = 83,
- TK_default = 84, TK_do = 85, TK_double = 32, TK_else = 86, TK_enum = 44, TK_extern = 25, TK_float = 33,
- TK_for = 87, TK_goto = 88, TK_if = 89, TK_inline = 26, TK_int = 34, TK_long = 35, TK_register = 27,
- TK_restrict = 7, TK_return = 90, TK_short = 36, TK_signed = 37, TK_sizeof = 17, TK_static = 13,
- TK_struct = 45, TK_switch = 91, TK_typedef = 28, TK_union = 46, TK_unsigned = 38, TK_void = 39,
- TK_volatile = 8, TK_while = 92, TK__Bool = 40, TK__Complex = 41, TK__Imaginary = 42, TK_integer = 18,
- TK_floating = 19, TK_charconst = 20, TK_stringlit = 21, TK_identifier = 1, TK_Completion = 3,
- TK_EndOfCompletion = 5, TK_Invalid = 93, TK_LeftBracket = 11, TK_LeftParen = 2, TK_LeftBrace = 14,
- TK_Dot = 52, TK_Arrow = 67, TK_PlusPlus = 15, TK_MinusMinus = 16, TK_And = 12, TK_Star = 4, TK_Plus = 9,
- TK_Minus = 10, TK_Tilde = 22, TK_Bang = 23, TK_Slash = 53, TK_Percent = 54, TK_RightShift = 47,
- TK_LeftShift = 48, TK_LT = 55, TK_GT = 56, TK_LE = 57, TK_GE = 58, TK_EQ = 61, TK_NE = 62, TK_Caret = 63,
- TK_Or = 64, TK_AndAnd = 65, TK_OrOr = 68, TK_Question = 69, TK_Colon = 59, TK_DotDotDot = 49,
- TK_Assign = 60, TK_StarAssign = 70, TK_SlashAssign = 71, TK_PercentAssign = 72, TK_PlusAssign = 73,
- TK_MinusAssign = 74, TK_RightShiftAssign = 75, TK_LeftShiftAssign = 76, TK_AndAssign = 77,
- TK_CaretAssign = 78, TK_OrAssign = 79, TK_Comma = 29, TK_RightBracket = 50, TK_RightParen = 30,
- TK_RightBrace = 43, TK_SemiColon = 66, TK_ERROR_TOKEN = 51, TK_EOF_TOKEN = 80;
-
- public final static String orderedTerminalSymbols[] = { "", "identifier", "LeftParen", "Completion", "Star",
- "EndOfCompletion", "const", "restrict", "volatile", "Plus", "Minus", "LeftBracket", "And", "static",
- "LeftBrace", "PlusPlus", "MinusMinus", "sizeof", "integer", "floating", "charconst", "stringlit", "Tilde",
- "Bang", "auto", "extern", "inline", "register", "typedef", "Comma", "RightParen", "char", "double", "float",
- "int", "long", "short", "signed", "unsigned", "void", "_Bool", "_Complex", "_Imaginary", "RightBrace",
- "enum", "struct", "union", "RightShift", "LeftShift", "DotDotDot", "RightBracket", "ERROR_TOKEN", "Dot",
- "Slash", "Percent", "LT", "GT", "LE", "GE", "Colon", "Assign", "EQ", "NE", "Caret", "Or", "AndAnd",
- "SemiColon", "Arrow", "OrOr", "Question", "StarAssign", "SlashAssign", "PercentAssign", "PlusAssign",
- "MinusAssign", "RightShiftAssign", "LeftShiftAssign", "AndAssign", "CaretAssign", "OrAssign", "EOF_TOKEN",
- "break", "case", "continue", "default", "do", "else", "for", "goto", "if", "return", "switch", "while",
- "Invalid" };
-
- public final static boolean isValidForParser = true;
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPExpressionParser.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPExpressionParser.java
deleted file mode 100644
index 6999cbeb8df..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPExpressionParser.java
+++ /dev/null
@@ -1,2864 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2015 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.dom.lrparser.cpp;
-
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.cdt.core.dom.ast.IASTCompletionNode;
-import org.eclipse.cdt.core.dom.ast.IASTExpression;
-import org.eclipse.cdt.core.dom.ast.IASTUnaryExpression;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTBinaryExpression;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCastExpression;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTLiteralExpression;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTypeIdExpression;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTUnaryExpression;
-import org.eclipse.cdt.core.dom.lrparser.CPreprocessorAdapter;
-import org.eclipse.cdt.core.dom.lrparser.IDOMTokenMap;
-import org.eclipse.cdt.core.dom.lrparser.ISecondaryParser;
-import org.eclipse.cdt.core.dom.lrparser.ITokenCollector;
-import org.eclipse.cdt.core.dom.lrparser.action.ITokenMap;
-import org.eclipse.cdt.core.dom.lrparser.action.ITokenStream;
-import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack;
-import org.eclipse.cdt.core.dom.lrparser.action.TokenMap;
-import org.eclipse.cdt.core.dom.lrparser.action.cpp.CPPBuildASTParserAction;
-import org.eclipse.cdt.core.dom.lrparser.action.cpp.CPPSecondaryParserFactory;
-import org.eclipse.cdt.core.dom.lrparser.lpgextensions.FixedBacktrackingParser;
-import org.eclipse.cdt.core.dom.parser.IBuiltinBindingsProvider;
-import org.eclipse.cdt.core.index.IIndex;
-import org.eclipse.cdt.core.parser.IScanner;
-import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPNodeFactory;
-
-import lpg.lpgjavaruntime.BadParseException;
-import lpg.lpgjavaruntime.BadParseSymFileException;
-import lpg.lpgjavaruntime.DiagnoseParser;
-import lpg.lpgjavaruntime.ErrorToken;
-import lpg.lpgjavaruntime.IToken;
-import lpg.lpgjavaruntime.LexStream;
-import lpg.lpgjavaruntime.Monitor;
-import lpg.lpgjavaruntime.NotBacktrackParseTableException;
-import lpg.lpgjavaruntime.NullExportedSymbolsException;
-import lpg.lpgjavaruntime.NullTerminalSymbolsException;
-import lpg.lpgjavaruntime.ParseErrorCodes;
-import lpg.lpgjavaruntime.ParseTable;
-import lpg.lpgjavaruntime.PrsStream;
-import lpg.lpgjavaruntime.RuleAction;
-import lpg.lpgjavaruntime.Token;
-import lpg.lpgjavaruntime.UndefinedEofSymbolException;
-import lpg.lpgjavaruntime.UnimplementedTerminalsException;
-
-public class CPPExpressionParser extends PrsStream
- implements RuleAction, ITokenStream, ITokenCollector, ISecondaryParser<IASTExpression> {
- private static ParseTable prs = new CPPExpressionParserprs();
- private FixedBacktrackingParser btParser;
-
- public FixedBacktrackingParser getParser() {
- return btParser;
- }
-
- private void setResult(Object object) {
- btParser.setSym1(object);
- }
-
- public Object getRhsSym(int i) {
- return btParser.getSym(i);
- }
-
- public int getRhsTokenIndex(int i) {
- return btParser.getToken(i);
- }
-
- public IToken getRhsIToken(int i) {
- return super.getIToken(getRhsTokenIndex(i));
- }
-
- public int getRhsFirstTokenIndex(int i) {
- return btParser.getFirstToken(i);
- }
-
- public IToken getRhsFirstIToken(int i) {
- return super.getIToken(getRhsFirstTokenIndex(i));
- }
-
- public int getRhsLastTokenIndex(int i) {
- return btParser.getLastToken(i);
- }
-
- public IToken getRhsLastIToken(int i) {
- return super.getIToken(getRhsLastTokenIndex(i));
- }
-
- public int getLeftSpan() {
- return btParser.getFirstToken();
- }
-
- @Override
- public IToken getLeftIToken() {
- return super.getIToken(getLeftSpan());
- }
-
- public int getRightSpan() {
- return btParser.getLastToken();
- }
-
- @Override
- public IToken getRightIToken() {
- return super.getIToken(getRightSpan());
- }
-
- public int getRhsErrorTokenIndex(int i) {
- int index = btParser.getToken(i);
- IToken err = super.getIToken(index);
- return (err instanceof ErrorToken ? index : 0);
- }
-
- public ErrorToken getRhsErrorIToken(int i) {
- int index = btParser.getToken(i);
- IToken err = super.getIToken(index);
- return (ErrorToken) (err instanceof ErrorToken ? err : null);
- }
-
- public CPPExpressionParser(LexStream lexStream) {
- super(lexStream);
-
- try {
- super.remapTerminalSymbols(orderedTerminalSymbols(), CPPExpressionParserprs.EOFT_SYMBOL);
- } catch (NullExportedSymbolsException e) {
- } catch (NullTerminalSymbolsException e) {
- } catch (UnimplementedTerminalsException e) {
- java.util.ArrayList unimplemented_symbols = e.getSymbols();
- System.out.println("The Lexer will not scan the following token(s):");
- for (int i = 0; i < unimplemented_symbols.size(); i++) {
- Integer id = (Integer) unimplemented_symbols.get(i);
- System.out.println(" " + CPPExpressionParsersym.orderedTerminalSymbols[id.intValue()]);
- }
- System.out.println();
- } catch (UndefinedEofSymbolException e) {
- throw new Error(new UndefinedEofSymbolException("The Lexer does not implement the Eof symbol "
- + CPPExpressionParsersym.orderedTerminalSymbols[CPPExpressionParserprs.EOFT_SYMBOL]));
- }
- }
-
- @Override
- public String[] orderedTerminalSymbols() {
- return CPPExpressionParsersym.orderedTerminalSymbols;
- }
-
- public String getTokenKindName(int kind) {
- return CPPExpressionParsersym.orderedTerminalSymbols[kind];
- }
-
- public int getEOFTokenKind() {
- return CPPExpressionParserprs.EOFT_SYMBOL;
- }
-
- public PrsStream getParseStream() {
- return this;
- }
-
- //
- // Report error message for given error_token.
- //
- public final void reportErrorTokenMessage(int error_token, String msg) {
- int firsttok = super.getFirstErrorToken(error_token), lasttok = super.getLastErrorToken(error_token);
- String location = super.getFileName() + ':'
- + (firsttok > lasttok ? (super.getEndLine(lasttok) + ":" + super.getEndColumn(lasttok))
- : (super.getLine(error_token) + ":" + super.getColumn(error_token) + ":"
- + super.getEndLine(error_token) + ":" + super.getEndColumn(error_token)))
- + ": ";
- super.reportError((firsttok > lasttok ? ParseErrorCodes.INSERTION_CODE : ParseErrorCodes.SUBSTITUTION_CODE),
- location, msg);
- }
-
- public void parser() {
- parser(null, 0);
- }
-
- public void parser(Monitor monitor) {
- parser(monitor, 0);
- }
-
- public void parser(int error_repair_count) {
- parser(null, error_repair_count);
- }
-
- public void parser(Monitor monitor, int error_repair_count) {
- try {
- btParser = new FixedBacktrackingParser(monitor, this, prs, this);
- } catch (NotBacktrackParseTableException e) {
- throw new Error(new NotBacktrackParseTableException(
- "Regenerate CPPExpressionParserprs.java with -BACKTRACK option"));
- } catch (BadParseSymFileException e) {
- throw new Error(new BadParseSymFileException("Bad Parser Symbol File -- CPPExpressionParsersym.java"));
- }
-
- try {
- btParser.parse(error_repair_count);
- } catch (BadParseException e) {
- reset(e.error_token); // point to error token
- DiagnoseParser diagnoseParser = new DiagnoseParser(this, prs);
- diagnoseParser.diagnose(e.error_token);
- }
- }
-
- private CPPBuildASTParserAction action;
- private IASTCompletionNode compNode;
-
- public CPPExpressionParser(IScanner scanner, IDOMTokenMap tokenMap,
- IBuiltinBindingsProvider builtinBindingsProvider, IIndex index, Map<String, String> properties) {
- initActions(properties);
- action.initializeTranslationUnit(scanner, builtinBindingsProvider, index);
- CPreprocessorAdapter.runCPreprocessor(scanner, this, tokenMap);
- }
-
- private void initActions(Map<String, String> properties) {
- ScopedStack<Object> astStack = new ScopedStack<>();
-
- action = new CPPBuildASTParserAction(this, astStack, CPPNodeFactory.getDefault(),
- CPPSecondaryParserFactory.getDefault());
- action.setParserProperties(properties);
-
- }
-
- @Override
- public void addToken(IToken token) {
- token.setKind(mapKind(token.getKind())); // TODO does mapKind need to be called?
- super.addToken(token);
- }
-
- @Override
- public IASTExpression parse() {
- // this has to be done, or... kaboom!
- setStreamLength(getSize());
-
- final int errorRepairCount = -1; // -1 means full error handling
- parser(null, errorRepairCount); // do the actual parse
- super.resetTokenStream(); // allow tokens to be garbage collected
-
- compNode = action.getASTCompletionNode(); // the completion node may be null
- return (IASTExpression) action.getParseResult();
- }
-
- @Override
- public IASTCompletionNode getCompletionNode() {
- return compNode;
- }
-
- // uncomment this method to use with backtracking parser
- @Override
- public List<IToken> getRuleTokens() {
- return getTokens().subList(getLeftSpan(), getRightSpan() + 1);
- }
-
- @Override
- public String[] getOrderedTerminalSymbols() {
- return CPPExpressionParsersym.orderedTerminalSymbols;
- }
-
- @Override
- @SuppressWarnings("nls")
- public String getName() {
- return "CPPExpressionParser";
- }
-
- private ITokenMap tokenMap = null;
-
- @Override
- public void setTokens(List<IToken> tokens) {
- resetTokenStream();
- addToken(new Token(null, 0, 0, 0)); // dummy token
- for (IToken token : tokens) {
- token.setKind(tokenMap.mapKind(token.getKind()));
- addToken(token);
- }
- addToken(new Token(null, 0, 0, CPPExpressionParsersym.TK_EOF_TOKEN));
- }
-
- public CPPExpressionParser(ITokenStream stream, Map<String, String> properties) { // constructor for creating secondary parser
- initActions(properties);
- tokenMap = new TokenMap(CPPExpressionParsersym.orderedTerminalSymbols, stream.getOrderedTerminalSymbols());
- }
-
- public CPPExpressionParser(ITokenStream stream, IScanner scanner, IBuiltinBindingsProvider builtinBindingsProvider,
- IIndex index, Map<String, String> properties) { // constructor for creating secondary parser
- initActions(properties);
- action.initializeTranslationUnit(scanner, builtinBindingsProvider, index);
- tokenMap = new TokenMap(CPPExpressionParsersym.orderedTerminalSymbols, stream.getOrderedTerminalSymbols());
- }
-
- @Override
- public void ruleAction(int ruleNumber) {
- switch (ruleNumber) {
-
- //
- // Rule 1: <openscope-ast> ::= $Empty
- //
- case 1: {
- action.openASTScope();
- break;
- }
-
- //
- // Rule 2: <empty> ::= $Empty
- //
- case 2: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 13: translation_unit ::= declaration_seq_opt
- //
- case 13: {
- action.consumeTranslationUnit();
- break;
- }
-
- //
- // Rule 16: literal ::= integer
- //
- case 16: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_integer_constant);
- break;
- }
-
- //
- // Rule 17: literal ::= floating
- //
- case 17: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_float_constant);
- break;
- }
-
- //
- // Rule 18: literal ::= charconst
- //
- case 18: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_char_constant);
- break;
- }
-
- //
- // Rule 19: literal ::= stringlit
- //
- case 19: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_string_literal);
- break;
- }
-
- //
- // Rule 20: literal ::= true
- //
- case 20: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_true);
- break;
- }
-
- //
- // Rule 21: literal ::= false
- //
- case 21: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_false);
- break;
- }
-
- //
- // Rule 22: literal ::= this
- //
- case 22: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_this);
- break;
- }
-
- //
- // Rule 24: primary_expression ::= ( expression )
- //
- case 24: {
- action.consumeExpressionBracketed();
- break;
- }
-
- //
- // Rule 26: id_expression ::= qualified_or_unqualified_name
- //
- case 26: {
- action.consumeExpressionName();
- break;
- }
-
- //
- // Rule 33: unqualified_id_name ::= ~ identifier_token
- //
- case 33: {
- action.consumeDestructorName();
- break;
- }
-
- //
- // Rule 34: unqualified_id_name ::= ~ template_id_name
- //
- case 34: {
- action.consumeDestructorNameTemplateId();
- break;
- }
-
- //
- // Rule 35: identifier_name ::= identifier_token
- //
- case 35: {
- action.consumeIdentifierName();
- break;
- }
-
- //
- // Rule 36: template_opt ::= template
- //
- case 36: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 37: template_opt ::= $Empty
- //
- case 37: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 38: dcolon_opt ::= ::
- //
- case 38: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 39: dcolon_opt ::= $Empty
- //
- case 39: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 40: qualified_id_name ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name
- //
- case 40: {
- action.consumeQualifiedId(true);
- break;
- }
-
- //
- // Rule 41: qualified_id_name ::= :: unqualified_id_name
- //
- case 41: {
- action.consumeGlobalQualifiedId();
- break;
- }
-
- //
- // Rule 42: nested_name_specifier ::= class_or_namespace_name :: nested_name_specifier_with_template
- //
- case 42: {
- action.consumeNestedNameSpecifier(true);
- break;
- }
-
- //
- // Rule 43: nested_name_specifier ::= class_or_namespace_name ::
- //
- case 43: {
- action.consumeNestedNameSpecifier(false);
- break;
- }
-
- //
- // Rule 44: nested_name_specifier_with_template ::= class_or_namespace_name_with_template :: nested_name_specifier_with_template
- //
- case 44: {
- action.consumeNestedNameSpecifier(true);
- break;
- }
-
- //
- // Rule 45: nested_name_specifier_with_template ::= class_or_namespace_name_with_template ::
- //
- case 45: {
- action.consumeNestedNameSpecifier(false);
- break;
- }
-
- //
- // Rule 46: class_or_namespace_name_with_template ::= template_opt class_or_namespace_name
- //
- case 46: {
- action.consumeNameWithTemplateKeyword();
- break;
- }
-
- //
- // Rule 48: nested_name_specifier_opt ::= $Empty
- //
- case 48: {
- action.consumeNestedNameSpecifierEmpty();
- break;
- }
-
- //
- // Rule 51: postfix_expression ::= postfix_expression [ expression ]
- //
- case 51: {
- action.consumeExpressionArraySubscript();
- break;
- }
-
- //
- // Rule 52: postfix_expression ::= postfix_expression ( expression_list_opt )
- //
- case 52: {
- action.consumeExpressionFunctionCall();
- break;
- }
-
- //
- // Rule 53: postfix_expression ::= simple_type_specifier ( expression_list_opt )
- //
- case 53: {
- action.consumeExpressionSimpleTypeConstructor();
- break;
- }
-
- //
- // Rule 54: postfix_expression ::= typename dcolon_opt nested_name_specifier <empty> identifier_name ( expression_list_opt )
- //
- case 54: {
- action.consumeExpressionTypeName();
- break;
- }
-
- //
- // Rule 55: postfix_expression ::= typename dcolon_opt nested_name_specifier template_opt template_id_name ( expression_list_opt )
- //
- case 55: {
- action.consumeExpressionTypeName();
- break;
- }
-
- //
- // Rule 56: postfix_expression ::= postfix_expression . qualified_or_unqualified_name
- //
- case 56: {
- action.consumeExpressionFieldReference(false, false);
- break;
- }
-
- //
- // Rule 57: postfix_expression ::= postfix_expression -> qualified_or_unqualified_name
- //
- case 57: {
- action.consumeExpressionFieldReference(true, false);
- break;
- }
-
- //
- // Rule 58: postfix_expression ::= postfix_expression . template qualified_or_unqualified_name
- //
- case 58: {
- action.consumeExpressionFieldReference(false, true);
- break;
- }
-
- //
- // Rule 59: postfix_expression ::= postfix_expression -> template qualified_or_unqualified_name
- //
- case 59: {
- action.consumeExpressionFieldReference(true, true);
- break;
- }
-
- //
- // Rule 60: postfix_expression ::= postfix_expression . pseudo_destructor_name
- //
- case 60: {
- action.consumeExpressionFieldReference(false, false);
- break;
- }
-
- //
- // Rule 61: postfix_expression ::= postfix_expression -> pseudo_destructor_name
- //
- case 61: {
- action.consumeExpressionFieldReference(true, false);
- break;
- }
-
- //
- // Rule 62: postfix_expression ::= postfix_expression ++
- //
- case 62: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixIncr);
- break;
- }
-
- //
- // Rule 63: postfix_expression ::= postfix_expression --
- //
- case 63: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixDecr);
- break;
- }
-
- //
- // Rule 64: postfix_expression ::= dynamic_cast < type_id > ( expression )
- //
- case 64: {
- action.consumeExpressionCast(ICPPASTCastExpression.op_dynamic_cast);
- break;
- }
-
- //
- // Rule 65: postfix_expression ::= static_cast < type_id > ( expression )
- //
- case 65: {
- action.consumeExpressionCast(ICPPASTCastExpression.op_static_cast);
- break;
- }
-
- //
- // Rule 66: postfix_expression ::= reinterpret_cast < type_id > ( expression )
- //
- case 66: {
- action.consumeExpressionCast(ICPPASTCastExpression.op_reinterpret_cast);
- break;
- }
-
- //
- // Rule 67: postfix_expression ::= const_cast < type_id > ( expression )
- //
- case 67: {
- action.consumeExpressionCast(ICPPASTCastExpression.op_const_cast);
- break;
- }
-
- //
- // Rule 68: postfix_expression ::= typeid ( expression )
- //
- case 68: {
- action.consumeExpressionUnaryOperator(ICPPASTUnaryExpression.op_typeid);
- break;
- }
-
- //
- // Rule 69: postfix_expression ::= typeid ( type_id )
- //
- case 69: {
- action.consumeExpressionTypeId(ICPPASTTypeIdExpression.op_typeid);
- break;
- }
-
- //
- // Rule 70: pseudo_destructor_name ::= dcolon_opt nested_name_specifier_opt type_name :: destructor_type_name
- //
- case 70: {
- action.consumePsudoDestructorName(true);
- break;
- }
-
- //
- // Rule 71: pseudo_destructor_name ::= dcolon_opt nested_name_specifier template template_id_name :: destructor_type_name
- //
- case 71: {
- action.consumePsudoDestructorName(true);
- break;
- }
-
- //
- // Rule 72: pseudo_destructor_name ::= dcolon_opt nested_name_specifier_opt destructor_type_name
- //
- case 72: {
- action.consumePsudoDestructorName(false);
- break;
- }
-
- //
- // Rule 73: destructor_type_name ::= ~ identifier_token
- //
- case 73: {
- action.consumeDestructorName();
- break;
- }
-
- //
- // Rule 74: destructor_type_name ::= ~ template_id_name
- //
- case 74: {
- action.consumeDestructorNameTemplateId();
- break;
- }
-
- //
- // Rule 78: unary_expression ::= ++ cast_expression
- //
- case 78: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixIncr);
- break;
- }
-
- //
- // Rule 79: unary_expression ::= -- cast_expression
- //
- case 79: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixDecr);
- break;
- }
-
- //
- // Rule 80: unary_expression ::= & cast_expression
- //
- case 80: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_amper);
- break;
- }
-
- //
- // Rule 81: unary_expression ::= * cast_expression
- //
- case 81: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_star);
- break;
- }
-
- //
- // Rule 82: unary_expression ::= + cast_expression
- //
- case 82: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_plus);
- break;
- }
-
- //
- // Rule 83: unary_expression ::= - cast_expression
- //
- case 83: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_minus);
- break;
- }
-
- //
- // Rule 84: unary_expression ::= ~ cast_expression
- //
- case 84: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_tilde);
- break;
- }
-
- //
- // Rule 85: unary_expression ::= ! cast_expression
- //
- case 85: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_not);
- break;
- }
-
- //
- // Rule 86: unary_expression ::= sizeof unary_expression
- //
- case 86: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_sizeof);
- break;
- }
-
- //
- // Rule 87: unary_expression ::= sizeof ( type_id )
- //
- case 87: {
- action.consumeExpressionTypeId(ICPPASTTypeIdExpression.op_sizeof);
- break;
- }
-
- //
- // Rule 88: new_expression ::= dcolon_opt new new_placement_opt new_type_id <openscope-ast> new_array_expressions_opt new_initializer_opt
- //
- case 88: {
- action.consumeExpressionNew(true);
- break;
- }
-
- //
- // Rule 89: new_expression ::= dcolon_opt new new_placement_opt ( type_id ) <openscope-ast> new_array_expressions_opt new_initializer_opt
- //
- case 89: {
- action.consumeExpressionNew(false);
- break;
- }
-
- //
- // Rule 91: new_placement_opt ::= $Empty
- //
- case 91: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 92: new_type_id ::= type_specifier_seq
- //
- case 92: {
- action.consumeTypeId(false);
- break;
- }
-
- //
- // Rule 93: new_type_id ::= type_specifier_seq new_declarator
- //
- case 93: {
- action.consumeTypeId(true);
- break;
- }
-
- //
- // Rule 94: new_declarator ::= <openscope-ast> new_pointer_operators
- //
- case 94: {
- action.consumeNewDeclarator();
- break;
- }
-
- //
- // Rule 101: new_initializer ::= ( expression_list_opt )
- //
- case 101: {
- action.consumeNewInitializer();
- break;
- }
-
- //
- // Rule 103: new_initializer_opt ::= $Empty
- //
- case 103: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 104: delete_expression ::= dcolon_opt delete cast_expression
- //
- case 104: {
- action.consumeExpressionDelete(false);
- break;
- }
-
- //
- // Rule 105: delete_expression ::= dcolon_opt delete [ ] cast_expression
- //
- case 105: {
- action.consumeExpressionDelete(true);
- break;
- }
-
- //
- // Rule 107: cast_expression ::= ( type_id ) cast_expression
- //
- case 107: {
- action.consumeExpressionCast(ICPPASTCastExpression.op_cast);
- break;
- }
-
- //
- // Rule 109: pm_expression ::= pm_expression .* cast_expression
- //
- case 109: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_pmdot);
- break;
- }
-
- //
- // Rule 110: pm_expression ::= pm_expression ->* cast_expression
- //
- case 110: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_pmarrow);
- break;
- }
-
- //
- // Rule 112: multiplicative_expression ::= multiplicative_expression * pm_expression
- //
- case 112: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_multiply);
- break;
- }
-
- //
- // Rule 113: multiplicative_expression ::= multiplicative_expression / pm_expression
- //
- case 113: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_divide);
- break;
- }
-
- //
- // Rule 114: multiplicative_expression ::= multiplicative_expression % pm_expression
- //
- case 114: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_modulo);
- break;
- }
-
- //
- // Rule 116: additive_expression ::= additive_expression + multiplicative_expression
- //
- case 116: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_plus);
- break;
- }
-
- //
- // Rule 117: additive_expression ::= additive_expression - multiplicative_expression
- //
- case 117: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_minus);
- break;
- }
-
- //
- // Rule 119: shift_expression ::= shift_expression << additive_expression
- //
- case 119: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftLeft);
- break;
- }
-
- //
- // Rule 120: shift_expression ::= shift_expression >> additive_expression
- //
- case 120: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftRight);
- break;
- }
-
- //
- // Rule 122: relational_expression ::= relational_expression < shift_expression
- //
- case 122: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessThan);
- break;
- }
-
- //
- // Rule 123: relational_expression ::= relational_expression > shift_expression
- //
- case 123: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterThan);
- break;
- }
-
- //
- // Rule 124: relational_expression ::= relational_expression <= shift_expression
- //
- case 124: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessEqual);
- break;
- }
-
- //
- // Rule 125: relational_expression ::= relational_expression >= shift_expression
- //
- case 125: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterEqual);
- break;
- }
-
- //
- // Rule 127: equality_expression ::= equality_expression == relational_expression
- //
- case 127: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_equals);
- break;
- }
-
- //
- // Rule 128: equality_expression ::= equality_expression != relational_expression
- //
- case 128: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_notequals);
- break;
- }
-
- //
- // Rule 130: and_expression ::= and_expression & equality_expression
- //
- case 130: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAnd);
- break;
- }
-
- //
- // Rule 132: exclusive_or_expression ::= exclusive_or_expression ^ and_expression
- //
- case 132: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXor);
- break;
- }
-
- //
- // Rule 134: inclusive_or_expression ::= inclusive_or_expression | exclusive_or_expression
- //
- case 134: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOr);
- break;
- }
-
- //
- // Rule 136: logical_and_expression ::= logical_and_expression && inclusive_or_expression
- //
- case 136: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalAnd);
- break;
- }
-
- //
- // Rule 138: logical_or_expression ::= logical_or_expression || logical_and_expression
- //
- case 138: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalOr);
- break;
- }
-
- //
- // Rule 140: conditional_expression ::= logical_or_expression ? expression : assignment_expression
- //
- case 140: {
- action.consumeExpressionConditional();
- break;
- }
-
- //
- // Rule 142: relational_expression_inTemplate ::= relational_expression_inTemplate < shift_expression
- //
- case 142: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessThan);
- break;
- }
-
- //
- // Rule 143: relational_expression_inTemplate ::= ( relational_expression_inTemplate > shift_expression )
- //
- case 143: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterThan);
- break;
- }
-
- //
- // Rule 144: relational_expression_inTemplate ::= relational_expression_inTemplate <= shift_expression
- //
- case 144: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessEqual);
- break;
- }
-
- //
- // Rule 145: relational_expression_inTemplate ::= relational_expression_inTemplate >= shift_expression
- //
- case 145: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterEqual);
- break;
- }
-
- //
- // Rule 147: equality_expression_inTemplate ::= equality_expression_inTemplate == relational_expression_inTemplate
- //
- case 147: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_equals);
- break;
- }
-
- //
- // Rule 148: equality_expression_inTemplate ::= equality_expression_inTemplate != relational_expression_inTemplate
- //
- case 148: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_notequals);
- break;
- }
-
- //
- // Rule 150: and_expression_inTemplate ::= and_expression_inTemplate & equality_expression_inTemplate
- //
- case 150: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAnd);
- break;
- }
-
- //
- // Rule 152: exclusive_or_expression_inTemplate ::= exclusive_or_expression_inTemplate ^ and_expression_inTemplate
- //
- case 152: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXor);
- break;
- }
-
- //
- // Rule 154: inclusive_or_expression_inTemplate ::= inclusive_or_expression_inTemplate | exclusive_or_expression_inTemplate
- //
- case 154: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOr);
- break;
- }
-
- //
- // Rule 156: logical_and_expression_inTemplate ::= logical_and_expression_inTemplate && inclusive_or_expression_inTemplate
- //
- case 156: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalAnd);
- break;
- }
-
- //
- // Rule 158: logical_or_expression_inTemplate ::= logical_or_expression_inTemplate || logical_and_expression_inTemplate
- //
- case 158: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalOr);
- break;
- }
-
- //
- // Rule 160: conditional_expression_inTemplate ::= logical_or_expression_inTemplate ? expression : assignment_expression_inTemplate
- //
- case 160: {
- action.consumeExpressionConditional();
- break;
- }
-
- //
- // Rule 163: assignment_expression_inTemplate ::= logical_or_expression_inTemplate = assignment_expression_inTemplate
- //
- case 163: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_assign);
- break;
- }
-
- //
- // Rule 164: assignment_expression_inTemplate ::= logical_or_expression_inTemplate *= assignment_expression_inTemplate
- //
- case 164: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_multiplyAssign);
- break;
- }
-
- //
- // Rule 165: assignment_expression_inTemplate ::= logical_or_expression_inTemplate /= assignment_expression_inTemplate
- //
- case 165: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_divideAssign);
- break;
- }
-
- //
- // Rule 166: assignment_expression_inTemplate ::= logical_or_expression_inTemplate %= assignment_expression_inTemplate
- //
- case 166: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_moduloAssign);
- break;
- }
-
- //
- // Rule 167: assignment_expression_inTemplate ::= logical_or_expression_inTemplate += assignment_expression_inTemplate
- //
- case 167: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_plusAssign);
- break;
- }
-
- //
- // Rule 168: assignment_expression_inTemplate ::= logical_or_expression_inTemplate -= assignment_expression_inTemplate
- //
- case 168: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_minusAssign);
- break;
- }
-
- //
- // Rule 169: assignment_expression_inTemplate ::= logical_or_expression_inTemplate >>= assignment_expression_inTemplate
- //
- case 169: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftRightAssign);
- break;
- }
-
- //
- // Rule 170: assignment_expression_inTemplate ::= logical_or_expression_inTemplate <<= assignment_expression_inTemplate
- //
- case 170: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftLeftAssign);
- break;
- }
-
- //
- // Rule 171: assignment_expression_inTemplate ::= logical_or_expression_inTemplate &= assignment_expression_inTemplate
- //
- case 171: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAndAssign);
- break;
- }
-
- //
- // Rule 172: assignment_expression_inTemplate ::= logical_or_expression_inTemplate ^= assignment_expression_inTemplate
- //
- case 172: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXorAssign);
- break;
- }
-
- //
- // Rule 173: assignment_expression_inTemplate ::= logical_or_expression_inTemplate |= assignment_expression_inTemplate
- //
- case 173: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOrAssign);
- break;
- }
-
- //
- // Rule 174: throw_expression ::= throw
- //
- case 174: {
- action.consumeExpressionThrow(false);
- break;
- }
-
- //
- // Rule 175: throw_expression ::= throw assignment_expression
- //
- case 175: {
- action.consumeExpressionThrow(true);
- break;
- }
-
- //
- // Rule 178: assignment_expression ::= logical_or_expression = assignment_expression
- //
- case 178: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_assign);
- break;
- }
-
- //
- // Rule 179: assignment_expression ::= logical_or_expression *= assignment_expression
- //
- case 179: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_multiplyAssign);
- break;
- }
-
- //
- // Rule 180: assignment_expression ::= logical_or_expression /= assignment_expression
- //
- case 180: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_divideAssign);
- break;
- }
-
- //
- // Rule 181: assignment_expression ::= logical_or_expression %= assignment_expression
- //
- case 181: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_moduloAssign);
- break;
- }
-
- //
- // Rule 182: assignment_expression ::= logical_or_expression += assignment_expression
- //
- case 182: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_plusAssign);
- break;
- }
-
- //
- // Rule 183: assignment_expression ::= logical_or_expression -= assignment_expression
- //
- case 183: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_minusAssign);
- break;
- }
-
- //
- // Rule 184: assignment_expression ::= logical_or_expression >>= assignment_expression
- //
- case 184: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftRightAssign);
- break;
- }
-
- //
- // Rule 185: assignment_expression ::= logical_or_expression <<= assignment_expression
- //
- case 185: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftLeftAssign);
- break;
- }
-
- //
- // Rule 186: assignment_expression ::= logical_or_expression &= assignment_expression
- //
- case 186: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAndAssign);
- break;
- }
-
- //
- // Rule 187: assignment_expression ::= logical_or_expression ^= assignment_expression
- //
- case 187: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXorAssign);
- break;
- }
-
- //
- // Rule 188: assignment_expression ::= logical_or_expression |= assignment_expression
- //
- case 188: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOrAssign);
- break;
- }
-
- //
- // Rule 190: expression_list ::= <openscope-ast> expression_list_actual
- //
- case 190: {
- action.consumeExpressionList();
- break;
- }
-
- //
- // Rule 194: expression_list_opt ::= $Empty
- //
- case 194: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 196: expression_opt ::= $Empty
- //
- case 196: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 199: constant_expression_opt ::= $Empty
- //
- case 199: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 208: statement ::= ERROR_TOKEN
- //
- case 208: {
- action.consumeStatementProblem();
- break;
- }
-
- //
- // Rule 209: labeled_statement ::= identifier : statement
- //
- case 209: {
- action.consumeStatementLabeled();
- break;
- }
-
- //
- // Rule 210: labeled_statement ::= case constant_expression : statement
- //
- case 210: {
- action.consumeStatementCase();
- break;
- }
-
- //
- // Rule 211: labeled_statement ::= default : statement
- //
- case 211: {
- action.consumeStatementDefault();
- break;
- }
-
- //
- // Rule 212: expression_statement ::= expression ;
- //
- case 212: {
- action.consumeStatementExpression();
- break;
- }
-
- //
- // Rule 213: expression_statement ::= ;
- //
- case 213: {
- action.consumeStatementNull();
- break;
- }
-
- //
- // Rule 214: compound_statement ::= { <openscope-ast> statement_seq }
- //
- case 214: {
- action.consumeStatementCompoundStatement(true);
- break;
- }
-
- //
- // Rule 215: compound_statement ::= { }
- //
- case 215: {
- action.consumeStatementCompoundStatement(false);
- break;
- }
-
- //
- // Rule 218: selection_statement ::= if ( condition ) statement
- //
- case 218: {
- action.consumeStatementIf(false);
- break;
- }
-
- //
- // Rule 219: selection_statement ::= if ( condition ) statement else statement
- //
- case 219: {
- action.consumeStatementIf(true);
- break;
- }
-
- //
- // Rule 220: selection_statement ::= switch ( condition ) statement
- //
- case 220: {
- action.consumeStatementSwitch();
- break;
- }
-
- //
- // Rule 222: condition ::= type_specifier_seq declarator = assignment_expression
- //
- case 222: {
- action.consumeConditionDeclaration();
- break;
- }
-
- //
- // Rule 224: condition_opt ::= $Empty
- //
- case 224: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 225: iteration_statement ::= while ( condition ) statement
- //
- case 225: {
- action.consumeStatementWhileLoop();
- break;
- }
-
- //
- // Rule 226: iteration_statement ::= do statement while ( expression ) ;
- //
- case 226: {
- action.consumeStatementDoLoop(true);
- break;
- }
-
- //
- // Rule 227: iteration_statement ::= do statement
- //
- case 227: {
- action.consumeStatementDoLoop(false);
- break;
- }
-
- //
- // Rule 228: iteration_statement ::= for ( for_init_statement condition_opt ; expression_opt ) statement
- //
- case 228: {
- action.consumeStatementForLoop();
- break;
- }
-
- //
- // Rule 230: for_init_statement ::= simple_declaration_with_declspec
- //
- case 230: {
- action.consumeStatementDeclaration();
- break;
- }
-
- //
- // Rule 231: jump_statement ::= break ;
- //
- case 231: {
- action.consumeStatementBreak();
- break;
- }
-
- //
- // Rule 232: jump_statement ::= continue ;
- //
- case 232: {
- action.consumeStatementContinue();
- break;
- }
-
- //
- // Rule 233: jump_statement ::= return expression ;
- //
- case 233: {
- action.consumeStatementReturn(true);
- break;
- }
-
- //
- // Rule 234: jump_statement ::= return ;
- //
- case 234: {
- action.consumeStatementReturn(false);
- break;
- }
-
- //
- // Rule 235: jump_statement ::= goto identifier_token ;
- //
- case 235: {
- action.consumeStatementGoto();
- break;
- }
-
- //
- // Rule 236: declaration_statement ::= block_declaration
- //
- case 236: {
- action.consumeStatementDeclarationWithDisambiguation();
- break;
- }
-
- //
- // Rule 237: declaration_statement ::= function_definition
- //
- case 237: {
- action.consumeStatementDeclaration();
- break;
- }
-
- //
- // Rule 245: declaration ::= ERROR_TOKEN
- //
- case 245: {
- action.consumeDeclarationProblem();
- break;
- }
-
- //
- // Rule 255: simple_declaration ::= declaration_specifiers_opt <openscope-ast> init_declarator_list_opt ;
- //
- case 255: {
- action.consumeDeclarationSimple(true);
- break;
- }
-
- //
- // Rule 256: simple_declaration_with_declspec ::= declaration_specifiers <openscope-ast> init_declarator_list_opt ;
- //
- case 256: {
- action.consumeDeclarationSimple(true);
- break;
- }
-
- //
- // Rule 257: declaration_specifiers ::= <openscope-ast> simple_declaration_specifiers
- //
- case 257: {
- action.consumeDeclarationSpecifiersSimple();
- break;
- }
-
- //
- // Rule 258: declaration_specifiers ::= <openscope-ast> class_declaration_specifiers
- //
- case 258: {
- action.consumeDeclarationSpecifiersComposite();
- break;
- }
-
- //
- // Rule 259: declaration_specifiers ::= <openscope-ast> elaborated_declaration_specifiers
- //
- case 259: {
- action.consumeDeclarationSpecifiersComposite();
- break;
- }
-
- //
- // Rule 260: declaration_specifiers ::= <openscope-ast> enum_declaration_specifiers
- //
- case 260: {
- action.consumeDeclarationSpecifiersComposite();
- break;
- }
-
- //
- // Rule 261: declaration_specifiers ::= <openscope-ast> type_name_declaration_specifiers
- //
- case 261: {
- action.consumeDeclarationSpecifiersTypeName();
- break;
- }
-
- //
- // Rule 263: declaration_specifiers_opt ::= $Empty
- //
- case 263: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 267: no_type_declaration_specifier ::= friend
- //
- case 267: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 268: no_type_declaration_specifier ::= typedef
- //
- case 268: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 288: storage_class_specifier ::= auto
- //
- case 288: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 289: storage_class_specifier ::= register
- //
- case 289: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 290: storage_class_specifier ::= static
- //
- case 290: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 291: storage_class_specifier ::= extern
- //
- case 291: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 292: storage_class_specifier ::= mutable
- //
- case 292: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 293: function_specifier ::= inline
- //
- case 293: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 294: function_specifier ::= virtual
- //
- case 294: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 295: function_specifier ::= explicit
- //
- case 295: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 296: simple_type_specifier ::= simple_type_specifier_token
- //
- case 296: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 310: type_name_specifier ::= dcolon_opt nested_name_specifier_opt type_name
- //
- case 310: {
- action.consumeQualifiedId(false);
- break;
- }
-
- //
- // Rule 311: type_name_specifier ::= dcolon_opt nested_name_specifier template template_id_name
- //
- case 311: {
- action.consumeQualifiedId(false);
- break;
- }
-
- //
- // Rule 312: type_name_specifier ::= typename dcolon_opt nested_name_specifier identifier_name
- //
- case 312: {
- action.consumeQualifiedId(false);
- break;
- }
-
- //
- // Rule 313: type_name_specifier ::= typename dcolon_opt nested_name_specifier template_opt template_id_name
- //
- case 313: {
- action.consumeQualifiedId(true);
- break;
- }
-
- //
- // Rule 315: elaborated_type_specifier ::= class_keyword elaborated_specifier_hook dcolon_opt nested_name_specifier_opt identifier_name
- //
- case 315: {
- action.consumeTypeSpecifierElaborated(false);
- break;
- }
-
- //
- // Rule 316: elaborated_type_specifier ::= class_keyword elaborated_specifier_hook dcolon_opt nested_name_specifier_opt template_opt template_id_name
- //
- case 316: {
- action.consumeTypeSpecifierElaborated(true);
- break;
- }
-
- //
- // Rule 317: elaborated_type_specifier ::= enum elaborated_specifier_hook dcolon_opt nested_name_specifier_opt identifier_name
- //
- case 317: {
- action.consumeTypeSpecifierElaborated(false);
- break;
- }
-
- //
- // Rule 321: enum_specifier ::= enum enum_specifier_hook { <openscope-ast> enumerator_list_opt comma_opt }
- //
- case 321: {
- action.consumeTypeSpecifierEnumeration(false);
- break;
- }
-
- //
- // Rule 322: enum_specifier ::= enum enum_specifier_hook identifier_token { <openscope-ast> enumerator_list_opt comma_opt }
- //
- case 322: {
- action.consumeTypeSpecifierEnumeration(true);
- break;
- }
-
- //
- // Rule 328: enumerator_definition ::= identifier_token
- //
- case 328: {
- action.consumeEnumerator(false);
- break;
- }
-
- //
- // Rule 329: enumerator_definition ::= identifier_token = constant_expression
- //
- case 329: {
- action.consumeEnumerator(true);
- break;
- }
-
- //
- // Rule 331: namespace_definition ::= namespace namespace_name namespace_definition_hook { <openscope-ast> declaration_seq_opt }
- //
- case 331: {
- action.consumeNamespaceDefinition(true);
- break;
- }
-
- //
- // Rule 332: namespace_definition ::= namespace namespace_definition_hook { <openscope-ast> declaration_seq_opt }
- //
- case 332: {
- action.consumeNamespaceDefinition(false);
- break;
- }
-
- //
- // Rule 334: namespace_alias_definition ::= namespace identifier_token = dcolon_opt nested_name_specifier_opt namespace_name ;
- //
- case 334: {
- action.consumeNamespaceAliasDefinition();
- break;
- }
-
- //
- // Rule 335: using_declaration ::= using typename_opt dcolon_opt nested_name_specifier_opt unqualified_id_name ;
- //
- case 335: {
- action.consumeUsingDeclaration();
- break;
- }
-
- //
- // Rule 336: typename_opt ::= typename
- //
- case 336: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 337: typename_opt ::= $Empty
- //
- case 337: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 338: using_directive ::= using namespace dcolon_opt nested_name_specifier_opt namespace_name ;
- //
- case 338: {
- action.consumeUsingDirective();
- break;
- }
-
- //
- // Rule 339: asm_definition ::= asm ( stringlit ) ;
- //
- case 339: {
- action.consumeDeclarationASM();
- break;
- }
-
- //
- // Rule 340: linkage_specification ::= extern stringlit { <openscope-ast> declaration_seq_opt }
- //
- case 340: {
- action.consumeLinkageSpecification();
- break;
- }
-
- //
- // Rule 341: linkage_specification ::= extern stringlit <openscope-ast> declaration
- //
- case 341: {
- action.consumeLinkageSpecification();
- break;
- }
-
- //
- // Rule 346: init_declarator_complete ::= init_declarator
- //
- case 346: {
- action.consumeInitDeclaratorComplete();
- break;
- }
-
- //
- // Rule 348: init_declarator ::= complete_declarator initializer
- //
- case 348: {
- action.consumeDeclaratorWithInitializer(true);
- break;
- }
-
- //
- // Rule 351: declarator ::= <openscope-ast> ptr_operator_seq direct_declarator
- //
- case 351: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 353: function_declarator ::= <openscope-ast> ptr_operator_seq direct_declarator
- //
- case 353: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 357: basic_direct_declarator ::= declarator_id_name
- //
- case 357: {
- action.consumeDirectDeclaratorIdentifier();
- break;
- }
-
- //
- // Rule 358: basic_direct_declarator ::= ( declarator )
- //
- case 358: {
- action.consumeDirectDeclaratorBracketed();
- break;
- }
-
- //
- // Rule 359: function_direct_declarator ::= basic_direct_declarator ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
- //
- case 359: {
- action.consumeDirectDeclaratorFunctionDeclarator(true);
- break;
- }
-
- //
- // Rule 360: array_direct_declarator ::= array_direct_declarator array_modifier
- //
- case 360: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 361: array_direct_declarator ::= basic_direct_declarator array_modifier
- //
- case 361: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 362: array_modifier ::= [ constant_expression ]
- //
- case 362: {
- action.consumeDirectDeclaratorArrayModifier(true);
- break;
- }
-
- //
- // Rule 363: array_modifier ::= [ ]
- //
- case 363: {
- action.consumeDirectDeclaratorArrayModifier(false);
- break;
- }
-
- //
- // Rule 364: ptr_operator ::= pointer_hook * pointer_hook <openscope-ast> cv_qualifier_seq_opt
- //
- case 364: {
- action.consumePointer();
- break;
- }
-
- //
- // Rule 365: ptr_operator ::= pointer_hook & pointer_hook
- //
- case 365: {
- action.consumeReferenceOperator();
- break;
- }
-
- //
- // Rule 366: ptr_operator ::= dcolon_opt nested_name_specifier pointer_hook * pointer_hook <openscope-ast> cv_qualifier_seq_opt
- //
- case 366: {
- action.consumePointerToMember();
- break;
- }
-
- //
- // Rule 373: cv_qualifier ::= const
- //
- case 373: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 374: cv_qualifier ::= volatile
- //
- case 374: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 376: declarator_id_name ::= dcolon_opt nested_name_specifier_opt type_name
- //
- case 376: {
- action.consumeQualifiedId(false);
- break;
- }
-
- //
- // Rule 377: type_id ::= type_specifier_seq
- //
- case 377: {
- action.consumeTypeId(false);
- break;
- }
-
- //
- // Rule 378: type_id ::= type_specifier_seq abstract_declarator
- //
- case 378: {
- action.consumeTypeId(true);
- break;
- }
-
- //
- // Rule 381: abstract_declarator ::= <openscope-ast> ptr_operator_seq
- //
- case 381: {
- action.consumeDeclaratorWithPointer(false);
- break;
- }
-
- //
- // Rule 382: abstract_declarator ::= <openscope-ast> ptr_operator_seq direct_abstract_declarator
- //
- case 382: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 386: basic_direct_abstract_declarator ::= ( abstract_declarator )
- //
- case 386: {
- action.consumeDirectDeclaratorBracketed();
- break;
- }
-
- //
- // Rule 387: basic_direct_abstract_declarator ::= ( )
- //
- case 387: {
- action.consumeAbstractDeclaratorEmpty();
- break;
- }
-
- //
- // Rule 388: array_direct_abstract_declarator ::= array_modifier
- //
- case 388: {
- action.consumeDirectDeclaratorArrayDeclarator(false);
- break;
- }
-
- //
- // Rule 389: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier
- //
- case 389: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 390: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier
- //
- case 390: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 391: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
- //
- case 391: {
- action.consumeDirectDeclaratorFunctionDeclarator(true);
- break;
- }
-
- //
- // Rule 392: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
- //
- case 392: {
- action.consumeDirectDeclaratorFunctionDeclarator(false);
- break;
- }
-
- //
- // Rule 393: parameter_declaration_clause ::= parameter_declaration_list_opt ...
- //
- case 393: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 394: parameter_declaration_clause ::= parameter_declaration_list_opt
- //
- case 394: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 395: parameter_declaration_clause ::= parameter_declaration_list , ...
- //
- case 395: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 401: abstract_declarator_opt ::= $Empty
- //
- case 401: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 402: parameter_declaration ::= declaration_specifiers parameter_init_declarator
- //
- case 402: {
- action.consumeParameterDeclaration();
- break;
- }
-
- //
- // Rule 403: parameter_declaration ::= declaration_specifiers
- //
- case 403: {
- action.consumeParameterDeclarationWithoutDeclarator();
- break;
- }
-
- //
- // Rule 405: parameter_init_declarator ::= declarator = parameter_initializer
- //
- case 405: {
- action.consumeDeclaratorWithInitializer(true);
- break;
- }
-
- //
- // Rule 407: parameter_init_declarator ::= abstract_declarator = parameter_initializer
- //
- case 407: {
- action.consumeDeclaratorWithInitializer(true);
- break;
- }
-
- //
- // Rule 408: parameter_init_declarator ::= = parameter_initializer
- //
- case 408: {
- action.consumeDeclaratorWithInitializer(false);
- break;
- }
-
- //
- // Rule 409: parameter_initializer ::= assignment_expression
- //
- case 409: {
- action.consumeInitializer();
- break;
- }
-
- //
- // Rule 410: function_definition ::= declaration_specifiers_opt function_declarator <openscope-ast> ctor_initializer_list_opt function_body
- //
- case 410: {
- action.consumeFunctionDefinition(false);
- break;
- }
-
- //
- // Rule 411: function_definition ::= declaration_specifiers_opt function_declarator try <openscope-ast> ctor_initializer_list_opt function_body <openscope-ast> handler_seq
- //
- case 411: {
- action.consumeFunctionDefinition(true);
- break;
- }
-
- //
- // Rule 414: initializer ::= ( expression_list )
- //
- case 414: {
- action.consumeInitializerConstructor();
- break;
- }
-
- //
- // Rule 415: initializer_clause ::= assignment_expression
- //
- case 415: {
- action.consumeInitializer();
- break;
- }
-
- //
- // Rule 416: initializer_clause ::= initializer_list
- //
- case 416: {
- action.consumeInitializer();
- break;
- }
-
- //
- // Rule 417: initializer_list ::= start_initializer_list { <openscope-ast> initializer_seq , } end_initializer_list
- //
- case 417: {
- action.consumeInitializerList();
- break;
- }
-
- //
- // Rule 418: initializer_list ::= start_initializer_list { <openscope-ast> initializer_seq } end_initializer_list
- //
- case 418: {
- action.consumeInitializerList();
- break;
- }
-
- //
- // Rule 419: initializer_list ::= { <openscope-ast> }
- //
- case 419: {
- action.consumeInitializerList();
- break;
- }
-
- //
- // Rule 420: start_initializer_list ::= $Empty
- //
- case 420: {
- action.initializerListStart();
- break;
- }
-
- //
- // Rule 421: end_initializer_list ::= $Empty
- //
- case 421: {
- action.initializerListEnd();
- break;
- }
-
- //
- // Rule 426: class_specifier ::= class_head { <openscope-ast> member_declaration_list_opt }
- //
- case 426: {
- action.consumeClassSpecifier();
- break;
- }
-
- //
- // Rule 427: class_head ::= class_keyword composite_specifier_hook identifier_name_opt class_name_suffix_hook <openscope-ast> base_clause_opt
- //
- case 427: {
- action.consumeClassHead(false);
- break;
- }
-
- //
- // Rule 428: class_head ::= class_keyword composite_specifier_hook template_id_name class_name_suffix_hook <openscope-ast> base_clause_opt
- //
- case 428: {
- action.consumeClassHead(false);
- break;
- }
-
- //
- // Rule 429: class_head ::= class_keyword composite_specifier_hook nested_name_specifier identifier_name class_name_suffix_hook <openscope-ast> base_clause_opt
- //
- case 429: {
- action.consumeClassHead(true);
- break;
- }
-
- //
- // Rule 430: class_head ::= class_keyword composite_specifier_hook nested_name_specifier template_id_name class_name_suffix_hook <openscope-ast> base_clause_opt
- //
- case 430: {
- action.consumeClassHead(true);
- break;
- }
-
- //
- // Rule 434: identifier_name_opt ::= $Empty
- //
- case 434: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 438: visibility_label ::= access_specifier_keyword :
- //
- case 438: {
- action.consumeVisibilityLabel();
- break;
- }
-
- //
- // Rule 439: member_declaration ::= declaration_specifiers_opt <openscope-ast> member_declarator_list ;
- //
- case 439: {
- action.consumeDeclarationSimple(true);
- break;
- }
-
- //
- // Rule 440: member_declaration ::= declaration_specifiers_opt ;
- //
- case 440: {
- action.consumeDeclarationSimple(false);
- break;
- }
-
- //
- // Rule 443: member_declaration ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name ;
- //
- case 443: {
- action.consumeMemberDeclarationQualifiedId();
- break;
- }
-
- //
- // Rule 449: member_declaration ::= ERROR_TOKEN
- //
- case 449: {
- action.consumeDeclarationProblem();
- break;
- }
-
- //
- // Rule 458: member_declarator ::= declarator constant_initializer
- //
- case 458: {
- action.consumeMemberDeclaratorWithInitializer();
- break;
- }
-
- //
- // Rule 459: member_declarator ::= bit_field_declarator : constant_expression
- //
- case 459: {
- action.consumeBitField(true);
- break;
- }
-
- //
- // Rule 460: member_declarator ::= : constant_expression
- //
- case 460: {
- action.consumeBitField(false);
- break;
- }
-
- //
- // Rule 461: bit_field_declarator ::= identifier_name
- //
- case 461: {
- action.consumeDirectDeclaratorIdentifier();
- break;
- }
-
- //
- // Rule 462: constant_initializer ::= = constant_expression
- //
- case 462: {
- action.consumeInitializer();
- break;
- }
-
- //
- // Rule 468: base_specifier ::= dcolon_opt nested_name_specifier_opt class_name
- //
- case 468: {
- action.consumeBaseSpecifier(false, false);
- break;
- }
-
- //
- // Rule 469: base_specifier ::= virtual access_specifier_keyword_opt dcolon_opt nested_name_specifier_opt class_name
- //
- case 469: {
- action.consumeBaseSpecifier(true, true);
- break;
- }
-
- //
- // Rule 470: base_specifier ::= access_specifier_keyword virtual dcolon_opt nested_name_specifier_opt class_name
- //
- case 470: {
- action.consumeBaseSpecifier(true, true);
- break;
- }
-
- //
- // Rule 471: base_specifier ::= access_specifier_keyword dcolon_opt nested_name_specifier_opt class_name
- //
- case 471: {
- action.consumeBaseSpecifier(true, false);
- break;
- }
-
- //
- // Rule 472: access_specifier_keyword ::= private
- //
- case 472: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 473: access_specifier_keyword ::= protected
- //
- case 473: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 474: access_specifier_keyword ::= public
- //
- case 474: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 476: access_specifier_keyword_opt ::= $Empty
- //
- case 476: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 478: conversion_function_id_name ::= conversion_function_id < <openscope-ast> template_argument_list_opt >
- //
- case 478: {
- action.consumeTemplateId();
- break;
- }
-
- //
- // Rule 479: conversion_function_id ::= operator conversion_type_id
- //
- case 479: {
- action.consumeConversionName();
- break;
- }
-
- //
- // Rule 480: conversion_type_id ::= type_specifier_seq conversion_declarator
- //
- case 480: {
- action.consumeTypeId(true);
- break;
- }
-
- //
- // Rule 481: conversion_type_id ::= type_specifier_seq
- //
- case 481: {
- action.consumeTypeId(false);
- break;
- }
-
- //
- // Rule 482: conversion_declarator ::= <openscope-ast> ptr_operator_seq
- //
- case 482: {
- action.consumeDeclaratorWithPointer(false);
- break;
- }
-
- //
- // Rule 488: mem_initializer ::= mem_initializer_name ( expression_list_opt )
- //
- case 488: {
- action.consumeConstructorChainInitializer();
- break;
- }
-
- //
- // Rule 489: mem_initializer_name ::= dcolon_opt nested_name_specifier_opt class_name
- //
- case 489: {
- action.consumeQualifiedId(false);
- break;
- }
-
- //
- // Rule 492: operator_function_id_name ::= operator_id_name < <openscope-ast> template_argument_list_opt >
- //
- case 492: {
- action.consumeTemplateId();
- break;
- }
-
- //
- // Rule 493: operator_id_name ::= operator overloadable_operator
- //
- case 493: {
- action.consumeOperatorName();
- break;
- }
-
- //
- // Rule 536: template_declaration ::= export_opt template < <openscope-ast> template_parameter_list > declaration
- //
- case 536: {
- action.consumeTemplateDeclaration();
- break;
- }
-
- //
- // Rule 537: export_opt ::= export
- //
- case 537: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 538: export_opt ::= $Empty
- //
- case 538: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 542: template_parameter ::= parameter_declaration
- //
- case 542: {
- action.consumeTemplateParamterDeclaration();
- break;
- }
-
- //
- // Rule 543: type_parameter ::= class identifier_name_opt
- //
- case 543: {
- action.consumeSimpleTypeTemplateParameter(false);
- break;
- }
-
- //
- // Rule 544: type_parameter ::= class identifier_name_opt = type_id
- //
- case 544: {
- action.consumeSimpleTypeTemplateParameter(true);
- break;
- }
-
- //
- // Rule 545: type_parameter ::= typename identifier_name_opt
- //
- case 545: {
- action.consumeSimpleTypeTemplateParameter(false);
- break;
- }
-
- //
- // Rule 546: type_parameter ::= typename identifier_name_opt = type_id
- //
- case 546: {
- action.consumeSimpleTypeTemplateParameter(true);
- break;
- }
-
- //
- // Rule 547: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt
- //
- case 547: {
- action.consumeTemplatedTypeTemplateParameter(false);
- break;
- }
-
- //
- // Rule 548: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt = id_expression
- //
- case 548: {
- action.consumeTemplatedTypeTemplateParameter(true);
- break;
- }
-
- //
- // Rule 549: template_id_name ::= identifier_name < <openscope-ast> template_argument_list_opt >
- //
- case 549: {
- action.consumeTemplateId();
- break;
- }
-
- //
- // Rule 556: nested_name_specifier_inTemplate ::= class_or_namespace_name_inTemplate :: nested_name_specifier_with_template_inTemplate
- //
- case 556: {
- action.consumeNestedNameSpecifier(true);
- break;
- }
-
- //
- // Rule 557: nested_name_specifier_inTemplate ::= class_or_namespace_name_inTemplate ::
- //
- case 557: {
- action.consumeNestedNameSpecifier(false);
- break;
- }
-
- //
- // Rule 558: nested_name_specifier_with_template_inTemplate ::= class_or_namespace_name_with_template_inTemplate :: nested_name_specifier_with_template_inTemplate
- //
- case 558: {
- action.consumeNestedNameSpecifier(true);
- break;
- }
-
- //
- // Rule 559: nested_name_specifier_with_template_inTemplate ::= class_or_namespace_name_with_template_inTemplate ::
- //
- case 559: {
- action.consumeNestedNameSpecifier(false);
- break;
- }
-
- //
- // Rule 560: class_or_namespace_name_with_template_inTemplate ::= template_opt class_or_namespace_name_inTemplate
- //
- case 560: {
- action.consumeNameWithTemplateKeyword();
- break;
- }
-
- //
- // Rule 562: nested_name_specifier_opt_inTemplate ::= $Empty
- //
- case 562: {
- action.consumeNestedNameSpecifierEmpty();
- break;
- }
-
- //
- // Rule 565: type_name_specifier_inTemplate ::= typename dcolon_opt nested_name_specifier identifier_name
- //
- case 565: {
- action.consumeQualifiedId(false);
- break;
- }
-
- //
- // Rule 566: type_name_specifier_inTemplate ::= typename dcolon_opt nested_name_specifier template_opt template_id_name
- //
- case 566: {
- action.consumeQualifiedId(true);
- break;
- }
-
- //
- // Rule 571: declaration_specifiers_inTemplate ::= <openscope-ast> simple_declaration_specifiers
- //
- case 571: {
- action.consumeDeclarationSpecifiersSimple();
- break;
- }
-
- //
- // Rule 572: declaration_specifiers_inTemplate ::= <openscope-ast> class_declaration_specifiers
- //
- case 572: {
- action.consumeDeclarationSpecifiersComposite();
- break;
- }
-
- //
- // Rule 573: declaration_specifiers_inTemplate ::= <openscope-ast> elaborated_declaration_specifiers
- //
- case 573: {
- action.consumeDeclarationSpecifiersComposite();
- break;
- }
-
- //
- // Rule 574: declaration_specifiers_inTemplate ::= <openscope-ast> enum_declaration_specifiers
- //
- case 574: {
- action.consumeDeclarationSpecifiersComposite();
- break;
- }
-
- //
- // Rule 575: declaration_specifiers_inTemplate ::= <openscope-ast> type_name_declaration_specifiers_inTemplate
- //
- case 575: {
- action.consumeDeclarationSpecifiersTypeName();
- break;
- }
-
- //
- // Rule 577: type_id_inTemplate ::= type_specifier_seq_inTemplate
- //
- case 577: {
- action.consumeTypeId(false);
- break;
- }
-
- //
- // Rule 578: type_id_inTemplate ::= type_specifier_seq_inTemplate abstract_declarator
- //
- case 578: {
- action.consumeTypeId(true);
- break;
- }
-
- //
- // Rule 579: template_argument ::= assignment_expression_inTemplate
- //
- case 579: {
- action.consumeTemplateArgumentExpression();
- break;
- }
-
- //
- // Rule 580: template_argument ::= type_id_inTemplate
- //
- case 580: {
- action.consumeTemplateArgumentTypeId();
- break;
- }
-
- //
- // Rule 581: explicit_instantiation ::= template declaration
- //
- case 581: {
- action.consumeTemplateExplicitInstantiation();
- break;
- }
-
- //
- // Rule 582: explicit_specialization ::= template < > declaration
- //
- case 582: {
- action.consumeTemplateExplicitSpecialization();
- break;
- }
-
- //
- // Rule 583: try_block ::= try compound_statement <openscope-ast> handler_seq
- //
- case 583: {
- action.consumeStatementTryBlock(true);
- break;
- }
-
- //
- // Rule 584: try_block ::= try compound_statement
- //
- case 584: {
- action.consumeStatementTryBlock(false);
- break;
- }
-
- //
- // Rule 587: handler ::= catch ( exception_declaration ) compound_statement
- //
- case 587: {
- action.consumeStatementCatchHandler(false);
- break;
- }
-
- //
- // Rule 588: handler ::= catch ( ... ) compound_statement
- //
- case 588: {
- action.consumeStatementCatchHandler(true);
- break;
- }
-
- //
- // Rule 589: exception_declaration ::= type_specifier_seq <openscope-ast> declarator
- //
- case 589: {
- action.consumeDeclarationSimple(true);
- break;
- }
-
- //
- // Rule 590: exception_declaration ::= type_specifier_seq <openscope-ast> abstract_declarator
- //
- case 590: {
- action.consumeDeclarationSimple(true);
- break;
- }
-
- //
- // Rule 591: exception_declaration ::= type_specifier_seq
- //
- case 591: {
- action.consumeDeclarationSimple(false);
- break;
- }
-
- //
- // Rule 593: exception_specification ::= throw ( )
- //
- case 593: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 599: expression_parser_start ::= ERROR_TOKEN
- //
- case 599: {
- action.consumeEmpty();
- break;
- }
-
- default:
- break;
- }
- return;
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPExpressionParserprs.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPExpressionParserprs.java
deleted file mode 100644
index 6cc83c0b10b..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPExpressionParserprs.java
+++ /dev/null
@@ -1,1555 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2015 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.dom.lrparser.cpp;
-
-public class CPPExpressionParserprs implements lpg.lpgjavaruntime.ParseTable, CPPExpressionParsersym {
-
- public interface IsKeyword {
- public final static byte isKeyword[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static byte isKeyword[] = IsKeyword.isKeyword;
-
- public final boolean isKeyword(int index) {
- return isKeyword[index] != 0;
- }
-
- public interface BaseCheck {
- public final static short baseCheck[] = { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 0, 1, 0, 4, 2, 3, 2, 3, 2, 2, 1, 0, 1, 1, 4, 4, 4, 8, 8, 3, 3,
- 4, 4, 3, 3, 2, 2, 7, 7, 7, 7, 4, 4, 5, 6, 3, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 7, 9, 3, 0, 1,
- 2, 2, 1, 2, 3, 4, 1, 0, 3, 1, 0, 3, 5, 1, 4, 1, 3, 3, 1, 3, 3, 3, 1, 3, 3, 1, 3, 3, 1, 3, 3, 3, 3, 1, 3,
- 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 5, 1, 3, 5, 3, 3, 1, 3, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 5, 1, 1,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 2, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 2, 1, 3, 1, 0, 1, 0, 1,
- 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 4, 3, 2, 1, 4, 2, 1, 2, 5, 7, 5, 1, 4, 1, 0, 5, 7, 2, 8, 1, 1, 2, 2,
- 3, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 0, 4, 4, 2, 2, 2, 2, 2, 1, 0, 1, 1, 1, 1,
- 1, 1, 2, 1, 2, 2, 2, 1, 1, 2, 2, 1, 2, 2, 1, 2, 2, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 3, 4, 4, 5, 2, 5, 6, 5, 0, 1, 0, 7, 8, 0, 1, 3, 1, 0, 1, 3, 1, 7, 6, 0, 7, 6, 1, 0,
- 6, 5, 6, 4, 1, 3, 1, 0, 1, 1, 2, 1, 1, 3, 1, 3, 1, 1, 1, 1, 3, 9, 2, 2, 3, 2, 5, 3, 7, 0, 1, 2, 2, 1, 0,
- 1, 1, 1, 3, 1, 2, 1, 1, 2, 3, 1, 1, 1, 3, 2, 1, 2, 2, 9, 8, 2, 1, 3, 1, 3, 1, 0, 1, 0, 2, 1, 1, 3, 1, 3,
- 2, 1, 5, 8, 1, 2, 3, 1, 1, 7, 6, 3, 0, 0, 1, 3, 1, 1, 5, 6, 6, 7, 7, 0, 0, 1, 0, 1, 1, 1, 2, 4, 2, 2, 1,
- 5, 1, 1, 1, 1, 1, 1, 1, 2, 1, 0, 1, 3, 1, 1, 2, 3, 2, 1, 2, 2, 1, 0, 1, 3, 3, 5, 5, 4, 1, 1, 1, 1, 0, 1,
- 5, 2, 2, 1, 2, 2, 1, 0, 1, 3, 4, 3, 1, 1, 5, 2, 1, 1, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 7, 1, 0, 1, 3, 1, 1, 2, 4, 2, 4, 7,
- 9, 5, 1, 3, 1, 0, 1, 1, 3, 2, 3, 2, 2, 1, 0, 1, 1, 4, 5, 2, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 1, 1, 2, 4,
- 4, 2, 1, 2, 5, 5, 3, 3, 1, 4, 3, 1, 0, 1, 3, 1, 1, -62, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -122, -65, 0, -4, 0, 0, 0, 0, 0, -54, 0, 0, -48, 0, 0, -5, -10, 0, -6, 0,
- 0, -117, -137, -119, 0, 0, -365, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -313, 0, 0, 0, -183, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, -120, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -59, 0, 0, -470, 0, 0, 0, 0, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -438,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -267, -430, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -262, 0, -115, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -53, 0, -439, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -285, 0, -129, 0, 0, -281, 0, 0, 0, 0, -455, 0, 0, 0, 0, 0, -373, 0, 0, 0, 0, 0, 0, 0,
- -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -369, 0, 0, 0, -508,
- 0, 0, 0, 0, 0, 0, -311, 0, 0, -539, 0, 0, 0, 0, -130, 0, -127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -598, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -343, 0, 0, 0, 0, -462, 0, 0, 0, 0, 0, 0, -131, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, 0, -463, 0, 0, 0, 0,
- 0, 0, -58, 0, 0, 0, -417, 0, 0, 0, 0, -7, 0, 0, 0, 0, 0, -8, 0, -529, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -261, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -144, 0, 0,
- -150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, -421, 0, 0, 0, -474, 0, 0, 0, 0, 0, -138, 0, -407, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, -154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -106, 0, 0, 0, 0,
- -268, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -315, 0, 0, 0, -64, 0, 0, 0, 0,
- 0, 0, -347, 0, 0, 0, 0, -573, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -49, -11, 0, -12, 0, 0, 0, 0, 0, 0, 0, 0, -13, 0, 0, 0, -179, 0, 0, 0, -597, 0, 0, 0, 0, -334, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, 0, 0, 0, -284, 0, 0, 0, 0, 0, 0, -51,
- 0, 0, 0, -50, 0, -15, 0, 0, 0, -504, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 0, -200, 0, 0, 0, 0, -29,
- -3, 0, 0, 0, 0, -321, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, -30, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -387, 0, 0, -271, 0, 0, 0, 0, -148, -135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -178, 0, 0, 0, 0, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -331, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -60, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -263, 0, 0, -16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -222, 0, 0, 0,
- -377, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -146, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -31, 0, 0, 0, -328, 0, 0, -378, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -524, 0, 0, -390, 0, 0, 0, 0, 0, -359, 0, 0, -32, 0, 0, -266, 0, 0,
- 0, 0, -39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -145, -318, 0,
- 0, 0, 0, 0, 0, 0, -33, 0, 0, -34, 0, 0, -264, -237, 0, 0, 0, 0, 0, -41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -503, 0, 0, 0, 0, 0, 0, 0, 0, -588, 0, 0, -423, 0, 0, -275,
- 0, 0, 0, 0, 0, -35, 0, -94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -449, 0, 0, 0, 0, -199, 0, 0, 0, 0, 0, 0, -36, 0, 0, -495, 0, 0, 0, 0, -95, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, -37, 0, 0, 0, 0, 0, 0, 0, 0, -38, 0,
- 0, -282, 0, 0, 0, 0, -96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -362, 0, -40, 0, 0, 0, 0, 0, -404, 0, 0, -55, 0, 0, -497, 0, 0, 0, 0, -97, 0, 0, 0, 0, -56, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -355, 0, 0, 0, -425, 0, 0, 0, 0, 0,
- -531, 0, 0, 0, 0, -98, 0, 0, 0, 0, -415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -66, 0, -445, 0, 0, 0, 0, 0, 0, 0, 0, 0, -532, 0, 0, 0, 0, -99, 0, 0, 0, 0, -448, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -459, 0, -67, 0, 0, 0, 0, 0, -464, 0, 0, 0, 0, 0,
- -288, 0, 0, 0, 0, -100, 0, 0, 0, 0, -452, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -477, 0, 0, -69, 0, -472, 0, 0, 0, 0, 0, 0, 0, 0, 0, -289, 0, 0, 0, 0, -101, 0, 0, 0, 0, -478, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -558, -473, 0, -70, 0, 0, 0, 0, 0, -481, 0, 0, 0,
- 0, 0, -329, 0, 0, 0, 0, -102, 0, 0, 0, 0, -109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -197, 0, 0, -110, 0, 0, 0, 0, 0, -506, 0, 0, 0, 0, 0, -341, 0, 0, 0, 0, -103, 0, 0, 0, 0, -111, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, -112, 0, 0, 0,
- 0, 0, -371, 0, 0, 0, 0, -104, 0, 0, 0, 0, -132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -370, -485, 0, 0, 0, 0, 0, 0, 0, -517, 0, 0, 0, 0, 0, -203, 0, 0, 0, 0, -224, 0, 0, 0, 0, -139, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, 0, -322, 0, 0, 0, -526, 0, 0,
- -402, 0, 0, -380, 0, 0, 0, 0, -248, 0, 0, 0, 0, -140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -141, -505, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -14, 0, -118, 0, -155, 0, -432, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -286, -107, 0, 0, 0, -156, -433, -335, 0, -411, 0, 0, 0, -157, 0, 0, 0, -194, 0,
- -231, 0, 0, 0, 0, 0, -437, 0, 0, 0, -482, -412, 0, 0, 0, 0, 0, 0, 0, 0, -250, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -108, 0, 0, -114, 0, 0, 0, -158, 0, 0, -274, 0, 0, 0,
- 0, 0, 0, -159, 0, 0, 0, 0, 0, 0, 0, 0, 0, -589, 0, -160, 0, 0, -356, 0, 0, 0, 0, 0, 0, -251, 0, 0, 0, 0,
- -436, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -566, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -161, 0, 0, 0, -162, 0, -163, 0, -164, 0, 0, 0, 0, 0, -252, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, 0, 0, -392, 0, 0, 0, 0,
- 0, -216, 0, 0, 0, -166, 0, 0, 0, -43, 0, -167, 0, -442, 0, -325, 0, 0, 0, 0, 0, -494, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -253, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -149,
- 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -446, 0, 0, 0, -352, 0, 0, -465, -169, 0, 0, 0, 0, 0, 0,
- 0, -170, 0, 0, 0, 0, 0, -254, 0, 0, 0, 0, -153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -209, 0, -152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -466, -272, 0, -171, 0, 0, 0, -596, 0, -358,
- 0, -310, 0, -172, 0, 0, 0, -173, 0, 0, 0, 0, 0, -255, 0, 0, 0, 0, -218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -147, 0, 0, 0, -223, 0, 0, 0, 0, 0, 0, -276, 0, 0, 0, 0, -174, 0,
- -357, -323, -175, -512, -324, 0, 0, 0, 0, 0, 0, -376, -391, 0, 0, 0, 0, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -176, 0, -395, 0, 0, 0, -528, 0, 0, 0, 0, 0, 0,
- -283, -177, 0, 0, 0, -180, 0, -413, -574, 0, 0, 0, 0, -184, 0, 0, 0, -394, -572, -185, 0, 0, 0, 0, 0,
- -257, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -290, 0, 0, -435, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -326, -381, 0, -44, 0, 0, 0, 0, 0, -186, -330, -187, 0, -123, 0, 0, 0, -420,
- 0, -188, 0, 0, 0, 0, 0, -258, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -189, 0, 0, 0, 0, -294, 0, 0, -342, -363, 0, 0, 0, 0, 0, -414, 0, -45, 0, -125, 0, -190, 0, -191, 0,
- -192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -354, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -291, -292, 0, 0, 0, 0, 0, 0, -193, 0, -535, -367, -196, -346, -204, -134, 0, 0,
- 0, 0, 0, -205, 0, 0, 0, -208, 0, 0, 0, -542, 0, 0, 0, -397, 0, 0, 0, 0, 0, -591, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -368, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -219, 0, 0,
- 0, -229, 0, -293, 0, -389, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -230, 0, 0, -527, 0, 0, 0, -238, 0, 0, -340, 0, 0, -405, 0, 0, 0, 0, -559, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -269, 0, 0, 0, -277, 0, 0, 0, -424, 0, 0, -379, 0, 0, -501,
- -385, 0, 0, -61, -393, 0, -279, -586, 0, 0, -220, 0, 0, 0, -416, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -396, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -440, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -327, 0, -602, 0, 0, 0, 0, 0, -287,
- 0, 0, -298, 0, 0, -299, -300, 0, 0, 0, 0, 0, 0, 0, 0, -301, -302, -540, -350, 0, -441, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -232, 0, -538, -303, 0, -585, 0, 0, 0, 0, 0,
- 0, -351, 0, 0, -515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -304, 0, -305, 0, -306, 0, 0, 0, 0, 0, 0, -399, 0, 0, -233, -401, 0, -418, -427, -451, 0, -307, 0, 0, 0,
- -308, 0, 0, 0, -309, -18, 0, 0, 0, 0, -260, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -476, -353, 0, -280, -1, 0, 0, 0, 0, 0, 0, 0, -314, 0, -316, -317, 0, 0, -480, 0,
- 0, 0, 0, 0, -489, 0, -553, 0, 0, 0, 0, 0, 0, 0, 0, -93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -492, -332, -554, 0, 0, 0, 0, 0, 0, -382, 0, -247, 0, 0, 0, 0, -422, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -434, 0, -534, 0, -537, 0, 0, 0, 0, 0, -556,
- -560, -333, -344, -569, 0, 0, -561, 0, 0, 0, 0, 0, 0, -348, -349, 0, 0, 0, -91, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -360, -361, -366, 0, -374, 0, 0, 0, -245, 0, 0,
- 0, 0, -450, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -375, -386, -406, 0, -577,
- -372, 0, -339, 0, 0, -408, 0, 0, -428, -431, -444, -457, -581, 0, -458, 0, -460, -461, -467, -469, -475,
- 0, -484, 0, -92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -530, 0, 0, -246, 0, 0, 0, 0, -533, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -483, -490, -491, 0, -514, -516, -518, 0, -594, -601, -519, -520, -521, -523, -541, -543, -544, 0, 0,
- 0, -88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -546, -551,
- 0, 0, 0, -242, 0, 0, 0, 0, -536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -555, -562, -570, -579, -587, -592, 0, -603, 0, 0, 0, 0, 0, 0, 0, 0, 0, -565, 0, -89, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -567, -571, 0, -90, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -243, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -244, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -575, 0, 0, 0, 0, -136, 0, 0,
- -525, -576, 0, -182, -74, 0, 0, -105, 0, 0, 0, 0, 0, 0, -595, 0, 0, 0, 0, -338, 0, -234, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -235, 0, 0, 0, 0, 0, 0, -82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -600, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -83, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -239, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -240, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -241, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -278, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -297, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -337, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -364, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, 0, 0, 0, 0, 0, -295, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -388, -47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -593, 0, -265, -225, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -493, -128, 0, 0, 0, 0, 0, 0, -143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -568, 0, 0, 0, 0, 0, 0, 0, 0, 0, -151,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -513, 0,
- -500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -226, 0, 0, 0, 0, 0, -227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -590, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -496, 0, 0, 0, 0, 0, -509, 0, 0,
- 0, 0, 0, 0, 0, -384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -522, -270, 0, 0, 0, 0, 0, -410, 0, 0, -228,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -545, 0, -550, 0, 0, 0, 0, 0, -273, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -547, 0, 0, 0, 0, 0, 0, 0, -336, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -259, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -564, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -487, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -409, 0, 0, 0, 0, 0, -345, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -563, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -578, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -419, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -447, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -17, 0, 0, 0, 0, 0, -46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -580, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -582, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -468, 0, 0, 0, 0, 0, -584,
- -195, 0, 0, 0, 0, 0, 0, -471, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -599, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -583, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -604, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -486, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -181, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -403, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -498, 0, 0, 0, 0, 0, 0, -20, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -21, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -133, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -426, -499,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -215, -454, 0, 0, 0, 0, 0, 0, 0, 0, -507, 0, 0, 0, -502, 0, 0, 0, 0, 0, 0,
- 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -510, 0, 0, 0, 0, 0, 0, 0, 0, 0, -126, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -42, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -443, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -236, 0, 0, 0, 0, 0, -398, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -429, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -453, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -479,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -548, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -296, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -488, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -383, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -549, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -312, 0, 0, 0, 0, 0, 0,
- -511, 0, 0, 0, 0, 0, 0, -557, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -552, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static short baseCheck[] = BaseCheck.baseCheck;
-
- @Override
- public final int baseCheck(int index) {
- return baseCheck[index];
- }
-
- public final static short rhs[] = baseCheck;
-
- @Override
- public final int rhs(int index) {
- return rhs[index];
- }
-
- public interface BaseAction {
- public final static char baseAction[] = { 191, 5, 154, 94, 94, 30, 30, 81, 81, 39, 39, 42, 42, 218, 1, 1, 16,
- 16, 16, 16, 16, 16, 16, 17, 17, 17, 15, 11, 11, 6, 6, 6, 6, 6, 6, 2, 75, 75, 4, 4, 12, 12, 44, 44, 155,
- 155, 156, 67, 67, 43, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
- 157, 157, 157, 131, 131, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 192, 192, 193, 193,
- 194, 160, 160, 161, 161, 158, 158, 162, 159, 159, 21, 21, 22, 22, 23, 23, 23, 24, 24, 24, 24, 25, 25,
- 25, 26, 26, 26, 31, 31, 31, 31, 31, 33, 33, 33, 34, 34, 35, 35, 37, 37, 38, 38, 40, 40, 41, 41, 45, 45,
- 45, 45, 45, 47, 47, 47, 53, 53, 55, 55, 61, 61, 62, 62, 63, 63, 64, 64, 65, 65, 65, 65, 65, 65, 65, 65,
- 65, 65, 65, 65, 65, 29, 29, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 36, 28, 163, 163, 105,
- 105, 195, 195, 104, 219, 219, 82, 82, 82, 82, 82, 82, 82, 82, 82, 83, 83, 83, 79, 79, 66, 66, 196, 196,
- 84, 84, 84, 116, 116, 197, 197, 85, 85, 85, 85, 198, 198, 86, 86, 86, 86, 86, 87, 87, 95, 95, 95, 95,
- 95, 95, 95, 95, 56, 56, 56, 56, 56, 132, 132, 130, 130, 57, 199, 27, 27, 27, 27, 27, 50, 50, 69, 69, 69,
- 69, 69, 137, 137, 133, 133, 133, 133, 133, 134, 134, 134, 135, 135, 135, 136, 136, 136, 165, 165, 165,
- 70, 70, 70, 70, 70, 71, 71, 71, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 106, 138, 138, 138, 138,
- 138, 138, 111, 111, 111, 166, 167, 167, 112, 112, 200, 169, 169, 168, 168, 139, 139, 117, 92, 92, 140,
- 59, 49, 170, 170, 60, 58, 97, 97, 171, 171, 164, 164, 141, 142, 142, 143, 89, 89, 172, 172, 77, 77, 77,
- 73, 73, 72, 78, 78, 80, 80, 68, 68, 68, 54, 98, 98, 108, 107, 107, 51, 51, 74, 74, 76, 76, 52, 109, 109,
- 109, 99, 99, 99, 100, 100, 101, 101, 101, 102, 102, 118, 118, 118, 120, 120, 119, 119, 220, 220, 103,
- 103, 202, 202, 202, 202, 202, 145, 48, 48, 174, 201, 201, 146, 146, 147, 147, 147, 148, 176, 203, 203,
- 32, 32, 110, 114, 114, 114, 114, 205, 122, 121, 121, 113, 113, 113, 177, 178, 178, 178, 178, 178, 178,
- 178, 178, 178, 178, 178, 207, 207, 204, 204, 206, 206, 179, 180, 180, 180, 180, 181, 208, 124, 123, 123,
- 209, 209, 182, 182, 182, 182, 115, 115, 115, 210, 210, 8, 8, 9, 211, 211, 212, 183, 173, 173, 184, 184,
- 185, 186, 186, 7, 7, 10, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213,
- 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213,
- 213, 213, 213, 213, 213, 90, 93, 93, 187, 187, 150, 150, 151, 151, 151, 151, 151, 151, 3, 152, 152, 149,
- 149, 188, 221, 222, 222, 223, 223, 224, 225, 225, 189, 190, 190, 190, 190, 214, 214, 214, 126, 126, 126,
- 126, 126, 127, 128, 128, 125, 125, 96, 91, 88, 88, 175, 175, 129, 129, 215, 215, 215, 153, 153, 144,
- 144, 216, 216, 191, 191, 1119, 35, 2221, 2196, 4455, 1355, 27, 30, 31, 1162, 1215, 26, 28, 2149, 296,
- 25, 23, 50, 1246, 106, 76, 77, 108, 1272, 1474, 1301, 1564, 1938, 1335, 177, 332, 1520, 308, 1625, 1567,
- 1704, 2277, 1666, 1713, 2276, 1751, 176, 413, 147, 1273, 1510, 191, 4350, 1508, 1941, 1350, 266, 5173,
- 1243, 35, 1153, 32, 4862, 4737, 27, 30, 31, 1162, 1215, 375, 28, 534, 193, 1088, 269, 264, 265, 2905,
- 35, 1153, 32, 3328, 600, 27, 30, 31, 1162, 1215, 26, 28, 1151, 296, 25, 23, 50, 1246, 106, 76, 77, 108,
- 1272, 1474, 1301, 2779, 379, 189, 266, 2956, 2683, 2276, 1488, 309, 441, 1396, 1273, 276, 279, 282, 627,
- 705, 2277, 368, 3066, 1734, 278, 264, 265, 5007, 1824, 3118, 355, 2291, 357, 810, 389, 350, 1175, 193,
- 2237, 650, 1353, 2839, 5932, 285, 1537, 35, 490, 3432, 5166, 2353, 5739, 2301, 2030, 715, 159, 1638, 35,
- 1153, 32, 4862, 3838, 27, 30, 31, 1162, 1215, 375, 28, 630, 69, 2897, 2360, 35, 1153, 32, 3328, 5363,
- 27, 30, 31, 1162, 1215, 26, 28, 1151, 296, 25, 23, 50, 1246, 106, 76, 77, 108, 1272, 1474, 1301, 2779,
- 1659, 1818, 162, 1492, 35, 3563, 32, 4862, 4737, 27, 30, 31, 1162, 1215, 375, 28, 2592, 1508, 2773,
- 1818, 2837, 5173, 2555, 35, 312, 3327, 2835, 2593, 2878, 352, 3520, 357, 6140, 2929, 2845, 2899, 2901,
- 161, 579, 4270, 1847, 2360, 35, 1153, 32, 3328, 5363, 27, 30, 31, 1162, 1215, 26, 28, 1151, 296, 25, 23,
- 50, 1246, 106, 76, 77, 108, 1272, 1474, 1301, 2779, 2634, 3379, 162, 2956, 71, 35, 330, 355, 2291, 357,
- 2702, 2489, 350, 1175, 71, 35, 330, 2957, 2773, 1818, 2837, 1537, 35, 314, 1050, 5330, 2835, 535, 2878,
- 2045, 550, 576, 3889, 580, 2845, 2899, 2901, 161, 579, 467, 1912, 35, 1153, 32, 6094, 497, 27, 30, 31,
- 1162, 1215, 26, 28, 2627, 2765, 548, 93, 2903, 759, 35, 433, 2887, 483, 3576, 3577, 2360, 35, 1153, 32,
- 3328, 5363, 27, 30, 31, 1162, 1215, 26, 28, 1151, 296, 25, 23, 50, 1246, 106, 76, 77, 108, 1272, 1474,
- 1301, 2779, 426, 2413, 162, 759, 35, 433, 550, 576, 3889, 580, 71, 1939, 2102, 34, 71, 3522, 1166, 94,
- 2773, 2046, 2837, 496, 455, 456, 3555, 2224, 2835, 1488, 2878, 3225, 2952, 427, 464, 2903, 2845, 2899,
- 2901, 161, 579, 3478, 1820, 2570, 35, 1153, 32, 3328, 5363, 27, 30, 31, 1162, 1215, 26, 28, 1151, 296,
- 25, 23, 50, 1246, 106, 76, 77, 108, 1272, 1474, 1301, 2779, 1818, 2630, 162, 1729, 35, 1153, 32, 6094,
- 2683, 27, 30, 31, 1162, 1215, 59, 28, 2369, 2627, 2773, 3646, 2837, 71, 35, 1892, 425, 3471, 2835, 2532,
- 2878, 2702, 550, 576, 3889, 580, 2845, 2899, 2901, 161, 579, 1543, 35, 1153, 32, 4476, 1818, 27, 30, 31,
- 1162, 1215, 57, 28, 88, 468, 2965, 102, 3647, 2903, 3327, 35, 1153, 32, 3328, 843, 27, 30, 31, 1162,
- 1215, 26, 28, 1151, 296, 25, 23, 50, 1246, 106, 76, 77, 108, 1272, 1474, 1301, 1564, 325, 1229, 35, 330,
- 1520, 1520, 1625, 1567, 1704, 5762, 1666, 2647, 1365, 551, 576, 3889, 580, 2708, 35, 1153, 32, 3328,
- 390, 27, 30, 31, 1162, 1215, 26, 28, 1151, 296, 25, 23, 50, 1246, 106, 76, 77, 108, 1272, 1474, 1301,
- 1564, 56, 1400, 177, 2736, 1520, 766, 1625, 1567, 1704, 51, 1666, 1713, 2738, 1751, 176, 3465, 71, 35,
- 3059, 415, 2428, 35, 1153, 32, 3328, 2670, 27, 30, 31, 1162, 1215, 26, 28, 1151, 296, 25, 23, 50, 1246,
- 106, 76, 77, 108, 1272, 1474, 1301, 1564, 89, 1213, 177, 102, 1520, 2600, 1625, 1567, 1704, 2705, 1666,
- 1713, 1647, 1751, 176, 3465, 56, 648, 2765, 415, 61, 834, 2638, 35, 1153, 32, 3328, 1517, 27, 30, 31,
- 1162, 1215, 26, 28, 1151, 296, 25, 23, 50, 1246, 106, 76, 77, 108, 1272, 1474, 1301, 1564, 3735, 2639,
- 177, 70, 1520, 3201, 1625, 1567, 1704, 360, 1666, 1713, 458, 1751, 176, 3465, 1537, 35, 314, 415, 5842,
- 1405, 1315, 422, 416, 3257, 1239, 2973, 35, 1153, 32, 3328, 159, 27, 30, 31, 1162, 1215, 26, 28, 1151,
- 296, 25, 23, 50, 1246, 106, 76, 77, 108, 1272, 1474, 1301, 1564, 56, 1449, 177, 1555, 1520, 926, 1625,
- 1567, 1704, 2631, 1666, 1713, 2600, 1751, 176, 1488, 423, 416, 3257, 191, 1595, 2852, 35, 1153, 32,
- 3328, 3122, 27, 30, 31, 1162, 1215, 26, 28, 1151, 296, 25, 23, 50, 1246, 106, 76, 77, 108, 1272, 1474,
- 1301, 1564, 71, 35, 2102, 3026, 1520, 1655, 1625, 1567, 1704, 2826, 1666, 1713, 914, 2969, 197, 3474,
- 1702, 413, 416, 3257, 2973, 35, 1153, 32, 3328, 1818, 27, 30, 31, 1162, 1215, 26, 28, 1151, 296, 25, 23,
- 50, 1246, 106, 76, 77, 108, 1272, 1474, 1301, 1564, 3125, 2277, 177, 1267, 1520, 2955, 1625, 1567, 1704,
- 266, 1666, 1713, 69, 1751, 176, 1559, 35, 1153, 32, 409, 363, 41, 30, 31, 1162, 1215, 480, 281, 264,
- 265, 1373, 24, 2003, 35, 1892, 425, 2973, 35, 1153, 32, 3328, 630, 27, 30, 31, 1162, 1215, 26, 28, 1151,
- 296, 25, 23, 50, 1246, 106, 76, 77, 108, 1272, 1474, 1301, 1564, 56, 308, 177, 365, 1520, 1273, 1625,
- 1567, 1704, 362, 1666, 1713, 1038, 1751, 176, 3474, 1233, 42, 3022, 409, 71, 35, 317, 2973, 35, 1153,
- 32, 3328, 2658, 27, 30, 31, 1162, 1215, 26, 28, 1151, 296, 25, 23, 50, 1246, 106, 76, 77, 108, 1272,
- 1474, 1301, 1564, 71, 3387, 177, 1818, 1520, 408, 1625, 1567, 1704, 241, 1666, 1713, 1338, 1751, 176,
- 71, 35, 2176, 1278, 409, 2502, 35, 1153, 32, 3328, 3207, 27, 30, 31, 1162, 1215, 26, 28, 1151, 296, 25,
- 23, 50, 1246, 106, 76, 77, 108, 1272, 1474, 1301, 1564, 2095, 1501, 177, 72, 1520, 4250, 1625, 1567,
- 1704, 55, 1666, 1713, 1662, 1751, 176, 69, 1537, 35, 567, 175, 6161, 407, 2973, 35, 1153, 32, 3328, 379,
- 27, 30, 31, 1162, 1215, 26, 28, 1151, 296, 25, 23, 50, 1246, 106, 76, 77, 108, 1272, 1474, 1301, 1564,
- 56, 97, 177, 723, 1520, 1273, 1625, 1567, 1704, 1488, 1666, 1713, 1818, 1751, 176, 71, 35, 2102, 311,
- 192, 2641, 65, 405, 2973, 35, 1153, 32, 3328, 3704, 27, 30, 31, 1162, 1215, 26, 28, 1151, 296, 25, 23,
- 50, 1246, 106, 76, 77, 108, 1272, 1474, 1301, 1564, 1499, 2630, 177, 2977, 1520, 147, 1625, 1567, 1704,
- 4731, 1666, 1713, 228, 1751, 176, 71, 35, 1892, 425, 188, 2973, 35, 1153, 32, 3328, 588, 27, 30, 31,
- 1162, 1215, 26, 28, 1151, 296, 25, 23, 50, 1246, 106, 76, 77, 108, 1272, 1474, 1301, 1564, 489, 147,
- 177, 61, 1520, 4800, 1625, 1567, 1704, 98, 1666, 1713, 1007, 1751, 176, 931, 35, 2102, 311, 187, 2973,
- 35, 1153, 32, 3328, 1749, 27, 30, 31, 1162, 1215, 26, 28, 1151, 296, 25, 23, 50, 1246, 106, 76, 77, 108,
- 1272, 1474, 1301, 1564, 2491, 147, 177, 1334, 1520, 4883, 1625, 1567, 1704, 2491, 1666, 1713, 1348,
- 1751, 176, 71, 35, 1892, 425, 186, 2973, 35, 1153, 32, 3328, 1847, 27, 30, 31, 1162, 1215, 26, 28, 1151,
- 296, 25, 23, 50, 1246, 106, 76, 77, 108, 1272, 1474, 1301, 1564, 471, 439, 177, 392, 1520, 69, 1625,
- 1567, 1704, 2178, 1666, 1713, 594, 1751, 176, 71, 35, 1892, 425, 185, 2973, 35, 1153, 32, 3328, 2489,
- 27, 30, 31, 1162, 1215, 26, 28, 1151, 296, 25, 23, 50, 1246, 106, 76, 77, 108, 1272, 1474, 1301, 1564,
- 470, 443, 177, 233, 1520, 1915, 1625, 1567, 1704, 5180, 1666, 1713, 3119, 1751, 176, 71, 35, 1892, 425,
- 184, 2973, 35, 1153, 32, 3328, 2489, 27, 30, 31, 1162, 1215, 26, 28, 1151, 296, 25, 23, 50, 1246, 106,
- 76, 77, 108, 1272, 1474, 1301, 1564, 469, 147, 177, 2795, 1520, 5312, 1625, 1567, 1704, 2178, 1666,
- 1713, 321, 1751, 176, 71, 3485, 2102, 74, 183, 2973, 35, 1153, 32, 3328, 2489, 27, 30, 31, 1162, 1215,
- 26, 28, 1151, 296, 25, 23, 50, 1246, 106, 76, 77, 108, 1272, 1474, 1301, 1564, 1499, 335, 177, 1361,
- 1520, 147, 1625, 1567, 1704, 5428, 1666, 1713, 322, 1751, 176, 931, 35, 2102, 3486, 182, 2973, 35, 1153,
- 32, 3328, 2489, 27, 30, 31, 1162, 1215, 26, 28, 1151, 296, 25, 23, 50, 1246, 106, 76, 77, 108, 1272,
- 1474, 1301, 1564, 1499, 147, 177, 1482, 1520, 5808, 1625, 1567, 1704, 2178, 1666, 1713, 332, 1751, 176,
- 71, 35, 2102, 313, 181, 2973, 35, 1153, 32, 3328, 1413, 27, 30, 31, 1162, 1215, 26, 28, 1151, 296, 25,
- 23, 50, 1246, 106, 76, 77, 108, 1272, 1474, 1301, 1564, 56, 255, 177, 1934, 1520, 4369, 1625, 1567,
- 1704, 2178, 1666, 1713, 331, 1751, 176, 71, 35, 2102, 3554, 180, 2973, 35, 1153, 32, 3328, 2112, 27, 30,
- 31, 1162, 1215, 26, 28, 1151, 296, 25, 23, 50, 1246, 106, 76, 77, 108, 1272, 1474, 1301, 1564, 56, 339,
- 177, 391, 1520, 3364, 1625, 1567, 1704, 2132, 1666, 1713, 594, 1751, 176, 71, 35, 2102, 316, 179, 2973,
- 35, 1153, 32, 3328, 2831, 27, 30, 31, 1162, 1215, 26, 28, 1151, 296, 25, 23, 50, 1246, 106, 76, 77, 108,
- 1272, 1474, 1301, 1564, 2634, 147, 177, 359, 1520, 5829, 1625, 1567, 1704, 2178, 1666, 1713, 594, 1751,
- 176, 71, 35, 1892, 425, 178, 2973, 35, 1153, 32, 3328, 1832, 27, 30, 31, 1162, 1215, 26, 28, 1151, 296,
- 25, 23, 50, 1246, 106, 76, 77, 108, 1272, 1474, 1301, 1564, 308, 212, 177, 1104, 1520, 3002, 1625, 1567,
- 1704, 2178, 1666, 1713, 2934, 1751, 176, 71, 35, 1892, 425, 140, 3094, 35, 1153, 32, 3328, 3785, 27, 30,
- 31, 1162, 1215, 26, 28, 1151, 296, 25, 23, 50, 1246, 106, 76, 77, 108, 1272, 1474, 1301, 2779, 308, 232,
- 162, 3724, 1243, 35, 1153, 32, 4862, 4737, 27, 30, 31, 1162, 1215, 375, 28, 2734, 2773, 1257, 2837,
- 2008, 4250, 1229, 3572, 330, 2835, 310, 2878, 428, 464, 1348, 273, 296, 2845, 2899, 2901, 161, 173,
- 3094, 35, 1153, 32, 3328, 379, 27, 30, 31, 1162, 1215, 26, 28, 1151, 296, 25, 23, 50, 1246, 106, 76, 77,
- 108, 1272, 1474, 1301, 2779, 2623, 2277, 162, 1209, 266, 2084, 2789, 2701, 376, 2634, 355, 2291, 357,
- 1423, 3010, 350, 1175, 1815, 2773, 3847, 2837, 5173, 274, 264, 265, 1488, 2835, 349, 2878, 2322, 2634,
- 69, 273, 296, 2845, 2899, 2901, 161, 172, 3094, 35, 1153, 32, 3328, 1166, 27, 30, 31, 1162, 1215, 26,
- 28, 1151, 296, 25, 23, 50, 1246, 106, 76, 77, 108, 1272, 1474, 1301, 2779, 2277, 2630, 162, 2277, 266,
- 2956, 2309, 1645, 1517, 3125, 2456, 35, 312, 343, 346, 2313, 484, 1653, 2773, 369, 2837, 361, 274, 264,
- 265, 412, 2835, 1488, 2878, 227, 68, 2639, 2007, 53, 2845, 2899, 2901, 161, 171, 3094, 35, 1153, 32,
- 3328, 2934, 27, 30, 31, 1162, 1215, 26, 28, 1151, 296, 25, 23, 50, 1246, 106, 76, 77, 108, 1272, 1474,
- 1301, 2779, 430, 464, 162, 2630, 1243, 35, 1153, 32, 4862, 4737, 27, 30, 31, 1162, 1215, 375, 28, 2777,
- 2773, 1998, 2837, 429, 464, 44, 3022, 399, 2835, 587, 2878, 415, 479, 417, 493, 2417, 2845, 2899, 2901,
- 161, 170, 3094, 35, 1153, 32, 3328, 1749, 27, 30, 31, 1162, 1215, 26, 28, 1151, 296, 25, 23, 50, 1246,
- 106, 76, 77, 108, 1272, 1474, 1301, 2779, 2420, 410, 162, 71, 35, 2102, 566, 364, 371, 56, 355, 2291,
- 357, 495, 1202, 350, 1175, 56, 2773, 2874, 2837, 2345, 4250, 2693, 35, 315, 2835, 3731, 2878, 2171, 35,
- 490, 348, 5166, 2845, 2899, 2901, 161, 169, 3094, 35, 1153, 32, 3328, 379, 27, 30, 31, 1162, 1215, 26,
- 28, 1151, 296, 25, 23, 50, 1246, 106, 76, 77, 108, 1272, 1474, 1301, 2779, 3001, 2277, 162, 3118, 2215,
- 35, 1153, 32, 4476, 3327, 27, 30, 31, 1162, 1215, 56, 28, 1556, 2773, 2572, 2837, 2731, 35, 565, 1488,
- 405, 2835, 2008, 2878, 484, 2683, 87, 2092, 1917, 2845, 2899, 2901, 161, 168, 3094, 35, 1153, 32, 3328,
- 2277, 27, 30, 31, 1162, 1215, 26, 28, 1151, 296, 25, 23, 50, 1246, 106, 76, 77, 108, 1272, 1474, 1301,
- 2779, 2630, 2277, 162, 1729, 35, 1153, 32, 6094, 52, 27, 30, 31, 1162, 1215, 58, 28, 2626, 56, 2773,
- 572, 2837, 4447, 3199, 319, 412, 1488, 2835, 56, 2878, 1752, 2485, 386, 2382, 1929, 2845, 2899, 2901,
- 161, 167, 3094, 35, 1153, 32, 3328, 2277, 27, 30, 31, 1162, 1215, 26, 28, 1151, 296, 25, 23, 50, 1246,
- 106, 76, 77, 108, 1272, 1474, 1301, 2779, 475, 3156, 162, 1994, 35, 1153, 32, 2524, 90, 40, 30, 31,
- 1162, 1215, 2277, 487, 3576, 3577, 2773, 2185, 2837, 1335, 56, 2353, 1728, 56, 2835, 861, 2878, 60,
- 2124, 215, 2007, 1365, 2845, 2899, 2901, 161, 166, 3094, 35, 1153, 32, 3328, 2836, 27, 30, 31, 1162,
- 1215, 26, 28, 1151, 296, 25, 23, 50, 1246, 106, 76, 77, 108, 1272, 1474, 1301, 2779, 3423, 2418, 162,
- 1994, 35, 1153, 32, 71, 3728, 1804, 30, 31, 1162, 1215, 2277, 2450, 2683, 2777, 2773, 2496, 2837, 1734,
- 759, 35, 433, 5007, 2835, 1867, 2878, 1984, 2749, 2007, 1728, 571, 2845, 2899, 2901, 161, 165, 3094, 35,
- 1153, 32, 3328, 2886, 27, 30, 31, 1162, 1215, 26, 28, 1151, 296, 25, 23, 50, 1246, 106, 76, 77, 108,
- 1272, 1474, 1301, 2779, 2277, 418, 162, 1994, 35, 1153, 32, 3315, 371, 1898, 30, 31, 1162, 1215, 56,
- 2762, 2777, 56, 2773, 3558, 2837, 585, 4250, 2268, 56, 581, 2835, 1833, 2878, 2712, 67, 2007, 71, 753,
- 2845, 2899, 2901, 161, 164, 3094, 35, 1153, 32, 3328, 379, 27, 30, 31, 1162, 1215, 26, 28, 1151, 296,
- 25, 23, 50, 1246, 106, 76, 77, 108, 1272, 1474, 1301, 2779, 491, 2973, 162, 3118, 1847, 2276, 370, 371,
- 56, 2661, 1273, 3732, 266, 1312, 2183, 2929, 2777, 56, 2773, 1922, 2837, 2006, 4250, 1657, 2683, 1019,
- 2835, 2033, 2878, 585, 284, 264, 265, 193, 2845, 2899, 2901, 161, 163, 3154, 35, 1153, 32, 3328, 379,
- 27, 30, 31, 1162, 1215, 26, 28, 1151, 296, 25, 23, 50, 1246, 106, 76, 77, 108, 1272, 1474, 1301, 2779,
- 2277, 2277, 162, 3118, 266, 466, 3317, 371, 2533, 3260, 2489, 56, 1248, 1904, 2914, 1508, 2293, 5173,
- 2773, 5173, 2837, 2534, 287, 264, 265, 744, 2835, 2055, 2878, 2280, 66, 65, 3568, 1488, 2845, 2899,
- 2901, 161, 160, 3214, 35, 1153, 32, 3328, 3226, 27, 30, 31, 1162, 1215, 26, 28, 1151, 296, 25, 23, 50,
- 1246, 106, 76, 77, 108, 1272, 1474, 1301, 1564, 56, 2956, 177, 2956, 1520, 2314, 1625, 1567, 1704, 3316,
- 1666, 1713, 835, 1751, 176, 2957, 2492, 368, 2277, 222, 3327, 35, 1153, 32, 3328, 340, 27, 30, 31, 1162,
- 1215, 26, 28, 1151, 296, 25, 23, 50, 1246, 106, 76, 77, 108, 1272, 1474, 1301, 1564, 4312, 64, 2564,
- 1867, 1520, 2178, 1625, 1567, 1704, 3062, 1666, 1713, 2277, 2969, 197, 3327, 35, 1153, 32, 3328, 2489,
- 27, 30, 31, 1162, 1215, 26, 28, 1151, 296, 25, 23, 50, 1246, 106, 76, 77, 108, 1272, 1474, 1301, 1564,
- 3115, 1486, 231, 586, 1520, 2290, 1625, 1567, 1704, 2007, 1666, 1713, 56, 2969, 197, 2007, 56, 4991, 96,
- 3766, 56, 2843, 2018, 2490, 2959, 3108, 71, 35, 1892, 425, 3327, 35, 1153, 32, 3328, 1616, 27, 30, 31,
- 1162, 1215, 26, 28, 1151, 296, 25, 23, 50, 1246, 106, 76, 77, 108, 1272, 1474, 1301, 1564, 56, 49, 419,
- 2777, 1520, 5807, 1625, 1567, 1704, 2777, 1666, 1713, 46, 2969, 197, 3327, 35, 1153, 32, 3328, 460, 27,
- 30, 31, 1162, 1215, 26, 28, 1151, 296, 25, 23, 50, 1246, 106, 76, 77, 108, 1272, 1474, 1301, 1564, 388,
- 1851, 3522, 319, 1520, 2637, 1625, 1567, 1704, 1011, 1666, 1713, 589, 2969, 197, 743, 915, 366, 371,
- 380, 1048, 649, 385, 3463, 371, 925, 2045, 2178, 2277, 378, 3327, 35, 1153, 32, 3328, 329, 27, 30, 31,
- 1162, 1215, 26, 28, 1151, 296, 25, 23, 50, 1246, 106, 76, 77, 108, 1272, 1474, 1301, 1564, 2011, 55,
- 1488, 2542, 1520, 2818, 1625, 1567, 1704, 338, 1666, 1713, 2277, 2969, 197, 3486, 35, 1153, 32, 3328,
- 459, 27, 30, 31, 1162, 1215, 26, 28, 1151, 296, 25, 23, 50, 1246, 106, 76, 77, 108, 1272, 1474, 1301,
- 1564, 54, 577, 3472, 2486, 1520, 2179, 1625, 1567, 1704, 266, 1666, 1713, 56, 2969, 197, 2092, 56, 3461,
- 56, 56, 56, 2394, 2494, 1654, 5820, 1936, 2389, 278, 264, 265, 757, 1673, 35, 1892, 425, 462, 3433, 35,
- 1153, 32, 3328, 324, 27, 30, 31, 1162, 1215, 26, 28, 1151, 296, 25, 23, 50, 1246, 106, 76, 77, 108,
- 1272, 1474, 1301, 2779, 49, 56, 2010, 266, 2594, 2292, 3114, 826, 3553, 4250, 1273, 1845, 628, 2528,
- 3694, 2878, 2945, 417, 2773, 56, 2837, 281, 264, 265, 5833, 56, 2835, 2178, 2878, 586, 4674, 4166, 143,
- 189, 2845, 3323, 3327, 35, 1153, 32, 3328, 598, 27, 30, 31, 1162, 1215, 26, 28, 1151, 296, 25, 23, 50,
- 1246, 106, 76, 77, 108, 1272, 1474, 1301, 1564, 56, 2595, 2178, 235, 1520, 2704, 1625, 1567, 1704, 2277,
- 2633, 3380, 35, 1153, 32, 3328, 2277, 27, 30, 31, 1162, 1215, 26, 28, 1151, 296, 25, 23, 50, 1246, 106,
- 76, 77, 108, 1272, 1474, 1301, 2779, 2822, 358, 56, 233, 56, 4250, 396, 1983, 101, 3077, 2669, 56, 2601,
- 2706, 56, 2778, 1123, 2178, 2773, 5129, 2837, 3069, 3104, 3121, 3003, 1663, 2835, 4166, 2878, 3327, 35,
- 1153, 32, 3328, 3302, 27, 30, 31, 1162, 1215, 26, 28, 1151, 296, 25, 23, 50, 1246, 106, 76, 77, 108,
- 1272, 1474, 1301, 1564, 334, 2628, 3004, 2664, 1520, 2633, 1625, 1567, 2573, 3380, 35, 1153, 32, 3328,
- 2277, 27, 30, 31, 1162, 1215, 26, 28, 1151, 296, 25, 23, 50, 1246, 106, 76, 77, 108, 1272, 1474, 1301,
- 2779, 2960, 2778, 2995, 605, 2927, 1851, 3522, 2566, 3361, 4598, 2959, 542, 4250, 1216, 2793, 2961,
- 1218, 2178, 2773, 3064, 2837, 1292, 3006, 3059, 2881, 2962, 2835, 2277, 3298, 3327, 35, 1153, 32, 3328,
- 4166, 27, 30, 31, 1162, 1215, 26, 28, 1151, 296, 25, 23, 50, 1246, 106, 76, 77, 108, 1272, 1474, 1301,
- 1564, 4367, 2039, 539, 541, 1520, 2277, 1625, 2581, 3380, 35, 1153, 32, 3328, 2416, 27, 30, 31, 1162,
- 1215, 26, 28, 1151, 296, 25, 23, 50, 1246, 106, 76, 77, 108, 1272, 1474, 1301, 2779, 488, 3117, 3124,
- 3176, 3574, 3092, 3183, 87, 592, 2178, 2178, 3086, 3118, 3119, 3120, 1362, 3147, 173, 2773, 397, 2837,
- 3327, 35, 1153, 32, 3328, 3300, 27, 30, 31, 1162, 1215, 26, 28, 1151, 296, 25, 23, 50, 1246, 106, 76,
- 77, 108, 1272, 1474, 1301, 1564, 256, 226, 3212, 2998, 1520, 324, 2495, 3380, 35, 1153, 32, 3328, 2277,
- 27, 30, 31, 1162, 1215, 26, 28, 1151, 296, 25, 23, 50, 1246, 106, 76, 77, 108, 1272, 1474, 1301, 2779,
- 2893, 3553, 3177, 1637, 3178, 3236, 3237, 2966, 414, 2958, 6862, 6862, 6862, 6862, 6862, 6862, 6862,
- 6862, 2773, 2277, 3223, 3327, 35, 1153, 32, 3328, 6862, 27, 30, 31, 1162, 1215, 26, 28, 1151, 296, 25,
- 23, 50, 1246, 106, 76, 77, 108, 1272, 1474, 1301, 1564, 6862, 4978, 2277, 2277, 2501, 3327, 35, 1153,
- 32, 3328, 6862, 27, 30, 31, 1162, 1215, 26, 28, 1151, 296, 25, 23, 50, 1246, 106, 76, 77, 108, 1272,
- 1474, 1301, 1564, 5040, 5172, 6862, 6862, 2548, 3380, 35, 1153, 32, 3328, 6862, 27, 30, 31, 1162, 1215,
- 26, 28, 1151, 296, 25, 23, 50, 1246, 106, 76, 77, 108, 1272, 1474, 1301, 2779, 1258, 35, 1153, 32, 4945,
- 4737, 27, 30, 31, 1162, 1215, 375, 28, 3380, 35, 1153, 32, 3328, 3224, 27, 30, 31, 1162, 1215, 26, 28,
- 1151, 296, 25, 23, 50, 1246, 106, 76, 77, 108, 1272, 1474, 1301, 2779, 2277, 6862, 6862, 6862, 6862,
- 2776, 6862, 6862, 2180, 2277, 6187, 2023, 56, 1273, 2956, 56, 2959, 1273, 3258, 6862, 1273, 6862, 2277,
- 6862, 6862, 6862, 6862, 1508, 368, 2181, 1613, 5173, 355, 2291, 357, 387, 189, 350, 1175, 2377, 189,
- 6862, 6862, 189, 3425, 6862, 2783, 234, 1065, 349, 6862, 2643, 3654, 3327, 35, 1153, 32, 3328, 5415, 27,
- 30, 31, 1162, 1215, 26, 28, 1151, 296, 25, 23, 50, 1246, 106, 76, 77, 108, 1272, 1474, 1301, 2379, 266,
- 2956, 6862, 6862, 6862, 388, 6862, 6862, 2277, 6862, 6862, 388, 6862, 6862, 6862, 368, 6862, 266, 284,
- 264, 265, 342, 346, 2313, 380, 1048, 649, 385, 6862, 6862, 380, 1048, 649, 385, 2615, 570, 264, 265,
- 5301, 6862, 578, 6862, 6862, 6862, 1992, 4682, 3327, 35, 1153, 32, 3328, 3645, 27, 30, 31, 1162, 1215,
- 26, 28, 1151, 296, 25, 23, 50, 1246, 106, 76, 77, 108, 1272, 1474, 1301, 2441, 3327, 35, 1153, 32, 3328,
- 6862, 27, 30, 31, 1162, 1215, 26, 28, 1151, 296, 25, 23, 50, 1246, 106, 76, 77, 108, 1272, 1474, 1301,
- 2445, 3327, 35, 1153, 32, 3328, 6862, 27, 30, 31, 1162, 1215, 26, 28, 1151, 296, 25, 23, 50, 1246, 106,
- 76, 77, 108, 1272, 1474, 1301, 2447, 3327, 35, 1153, 32, 3328, 6862, 27, 30, 31, 1162, 1215, 26, 28,
- 1151, 296, 25, 23, 50, 1246, 106, 76, 77, 108, 1272, 1474, 1301, 3210, 3327, 35, 1153, 32, 3328, 6862,
- 27, 30, 31, 1162, 1215, 26, 28, 1151, 296, 25, 23, 50, 1246, 106, 76, 77, 108, 1272, 1474, 1301, 3213,
- 3327, 35, 1153, 32, 3328, 6862, 27, 30, 31, 1162, 1215, 26, 28, 1151, 296, 25, 23, 50, 1246, 106, 76,
- 77, 108, 1272, 1474, 1301, 3214, 1339, 35, 1153, 32, 4862, 3905, 27, 30, 31, 1162, 1215, 375, 28, 3327,
- 35, 1153, 32, 3328, 6862, 27, 30, 31, 1162, 1215, 26, 28, 1151, 296, 25, 23, 50, 1246, 106, 76, 77, 108,
- 1272, 1474, 1301, 3362, 3759, 35, 1153, 32, 4862, 6219, 27, 30, 31, 1162, 1215, 375, 28, 6862, 1220, 35,
- 3563, 32, 4945, 4737, 27, 30, 31, 1162, 1215, 375, 28, 6862, 6862, 6862, 387, 6862, 355, 2291, 357,
- 6862, 6862, 350, 1175, 6862, 388, 6862, 6862, 6862, 3539, 35, 1892, 425, 4448, 3473, 6862, 6862, 6862,
- 6862, 6862, 6862, 6862, 271, 296, 380, 1048, 649, 385, 6862, 759, 35, 3100, 1084, 2956, 3424, 2276,
- 6862, 355, 2291, 357, 1273, 308, 350, 1175, 6862, 388, 6862, 368, 6862, 6862, 6862, 355, 2291, 357,
- 3432, 6862, 350, 1175, 6862, 6862, 266, 49, 6862, 193, 380, 1048, 649, 385, 1050, 6862, 6862, 2126,
- 1845, 1523, 2615, 5173, 6862, 5415, 269, 264, 265, 3327, 35, 1153, 32, 3328, 6862, 27, 30, 31, 1162,
- 1215, 26, 28, 1151, 296, 25, 23, 50, 1246, 106, 76, 77, 108, 1272, 1474, 2449, 6862, 2276, 71, 35, 1892,
- 425, 1273, 6862, 309, 6862, 6862, 6862, 276, 279, 282, 627, 705, 6862, 2956, 3508, 402, 1179, 56, 6862,
- 1273, 6267, 4250, 1273, 6862, 193, 6862, 6862, 369, 3267, 49, 2237, 650, 1353, 2839, 5932, 285, 6862,
- 6862, 749, 388, 1845, 2174, 189, 262, 6862, 189, 454, 456, 3555, 6862, 195, 6862, 6862, 2812, 6862,
- 6862, 6862, 6862, 382, 1048, 649, 385, 2897, 6862, 668, 444, 6008, 6862, 3327, 35, 1153, 32, 3328, 1757,
- 27, 30, 31, 1162, 1215, 26, 28, 1151, 296, 25, 23, 50, 1246, 106, 76, 77, 108, 1272, 1474, 2482, 259,
- 243, 35, 1892, 425, 600, 6862, 3439, 2027, 35, 1892, 425, 445, 446, 447, 3376, 6862, 6862, 6862, 2182,
- 6862, 6862, 6862, 6862, 600, 6862, 6862, 262, 189, 329, 35, 1892, 425, 49, 6862, 6862, 2133, 3373, 6862,
- 213, 49, 6862, 2630, 6862, 1845, 2958, 379, 189, 237, 249, 750, 1845, 954, 6862, 6862, 221, 236, 246,
- 247, 248, 250, 49, 1, 6862, 2775, 6862, 202, 600, 2139, 4250, 6862, 2420, 1845, 2687, 6862, 2139, 6862,
- 6862, 6862, 201, 6862, 6862, 216, 200, 203, 204, 205, 206, 207, 262, 189, 379, 6862, 6862, 593, 6862,
- 1427, 56, 2133, 448, 450, 213, 1273, 56, 2630, 6862, 6862, 6862, 1273, 6862, 237, 249, 750, 6862, 6862,
- 3966, 3118, 6862, 236, 246, 247, 248, 250, 6862, 6862, 189, 872, 6862, 202, 5192, 6862, 189, 6862, 2944,
- 6862, 223, 6862, 6862, 6862, 2945, 596, 201, 6862, 214, 217, 200, 203, 204, 205, 206, 207, 1416, 35,
- 1153, 32, 4862, 3905, 27, 30, 31, 1162, 1215, 375, 28, 3327, 35, 1153, 32, 3328, 6862, 27, 30, 31, 1162,
- 1215, 26, 28, 1151, 296, 25, 23, 50, 1246, 106, 76, 77, 108, 1272, 2239, 6862, 6862, 3327, 35, 1153, 32,
- 3328, 4509, 27, 30, 31, 1162, 1215, 26, 28, 1151, 296, 25, 23, 50, 1246, 106, 76, 77, 108, 1272, 2289,
- 3570, 6862, 6862, 6862, 6862, 2276, 6862, 355, 2291, 357, 1273, 2882, 350, 1175, 6862, 388, 4250, 6862,
- 6862, 1770, 35, 1153, 32, 4945, 589, 27, 30, 31, 1162, 1215, 375, 28, 6862, 193, 380, 1048, 649, 385,
- 4166, 3327, 35, 1153, 32, 3328, 590, 27, 30, 31, 1162, 1215, 26, 28, 1151, 296, 25, 23, 50, 1246, 106,
- 76, 77, 108, 2297, 6862, 3622, 6862, 6862, 345, 329, 35, 1892, 425, 600, 2956, 1508, 6862, 6862, 56,
- 5173, 6862, 6862, 6862, 1273, 6862, 6862, 6862, 6862, 369, 6862, 6862, 6862, 355, 2291, 357, 262, 189,
- 351, 1175, 6862, 388, 49, 6862, 6862, 2133, 6862, 189, 213, 6862, 6862, 2630, 3614, 1845, 47, 3028, 542,
- 237, 249, 750, 382, 1048, 649, 385, 6862, 236, 246, 247, 248, 250, 2956, 431, 6862, 2180, 6862, 202,
- 600, 2505, 600, 243, 35, 1892, 425, 6862, 368, 6862, 6862, 6862, 201, 6862, 6862, 3695, 200, 203, 204,
- 205, 206, 207, 262, 189, 3475, 189, 6862, 539, 541, 6862, 6862, 2133, 6862, 2133, 213, 49, 213, 2630,
- 5985, 6862, 6862, 6862, 6862, 237, 249, 750, 1845, 47, 6862, 6862, 6862, 236, 246, 247, 248, 250, 6862,
- 517, 6862, 6862, 6862, 202, 600, 6862, 3659, 243, 35, 1892, 425, 6862, 1478, 6862, 6862, 6862, 201,
- 6862, 229, 211, 200, 203, 204, 205, 206, 207, 262, 189, 329, 35, 1892, 425, 6862, 6862, 6862, 2133,
- 6862, 6862, 213, 49, 56, 2630, 6862, 6862, 6862, 1273, 6862, 237, 249, 750, 1845, 2827, 6862, 6862,
- 6862, 236, 246, 247, 248, 250, 49, 603, 6862, 6862, 6862, 202, 600, 6862, 189, 6862, 6862, 1845, 47,
- 6862, 2186, 2822, 3319, 6862, 201, 6862, 4250, 209, 200, 203, 204, 205, 206, 207, 262, 189, 243, 35,
- 1892, 425, 6862, 2815, 56, 2133, 6862, 6862, 213, 1273, 4166, 2630, 6862, 6862, 6862, 6862, 2700, 237,
- 249, 750, 6862, 4250, 6862, 6862, 6862, 236, 246, 247, 248, 250, 49, 689, 189, 6862, 6862, 202, 600,
- 6862, 6862, 6862, 1511, 1845, 2503, 379, 2594, 4466, 230, 6862, 201, 4250, 6862, 210, 200, 203, 204,
- 205, 206, 207, 262, 189, 243, 35, 1892, 425, 6862, 2186, 6862, 2133, 3557, 6862, 213, 4166, 56, 2630,
- 6862, 6862, 6862, 600, 56, 237, 249, 750, 6862, 4250, 6862, 6862, 542, 236, 246, 247, 248, 250, 49, 775,
- 6862, 6862, 6862, 202, 600, 379, 189, 6862, 6862, 1845, 47, 379, 6862, 6862, 1396, 6862, 201, 6862,
- 6862, 220, 200, 203, 204, 205, 206, 207, 262, 189, 6862, 6862, 3118, 6862, 6862, 1042, 6862, 2133, 3118,
- 6862, 213, 540, 541, 2630, 6862, 6862, 6862, 6862, 6862, 237, 249, 750, 6862, 6862, 6862, 396, 715, 236,
- 246, 247, 248, 250, 2086, 6862, 6862, 6862, 6862, 202, 6862, 6862, 3531, 3104, 3121, 6862, 6862, 6862,
- 6862, 6862, 6862, 6862, 201, 6862, 6862, 3733, 200, 203, 204, 205, 206, 207, 2382, 35, 1153, 32, 4862,
- 4737, 27, 30, 31, 1162, 1215, 375, 28, 3327, 35, 1153, 32, 3328, 6862, 27, 30, 31, 1162, 1215, 26, 28,
- 1151, 296, 25, 23, 50, 1246, 106, 76, 77, 108, 2357, 243, 35, 1892, 425, 6862, 6862, 861, 71, 35, 1892,
- 425, 600, 3887, 6862, 243, 35, 1892, 425, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 1296, 6862,
- 6862, 6862, 6267, 4250, 49, 262, 189, 355, 2291, 357, 6862, 49, 350, 1175, 2133, 1845, 47, 213, 49,
- 6862, 2630, 6862, 1845, 764, 349, 262, 237, 249, 750, 1845, 47, 6862, 6862, 6862, 236, 246, 247, 248,
- 250, 1669, 6862, 6862, 6862, 6862, 202, 947, 668, 444, 6008, 6862, 600, 6862, 6862, 1763, 6862, 6862,
- 6862, 201, 6862, 6862, 225, 200, 203, 204, 205, 206, 207, 6862, 6862, 6862, 6862, 6862, 262, 189, 6862,
- 6862, 342, 346, 2313, 6862, 56, 2133, 6862, 6862, 213, 1273, 6862, 2630, 445, 446, 447, 3376, 6862, 237,
- 249, 750, 6862, 6862, 6862, 3653, 6862, 236, 246, 247, 248, 250, 3645, 1033, 189, 6862, 6862, 202, 600,
- 3373, 6862, 6862, 3900, 6862, 2271, 35, 1892, 425, 6862, 6862, 201, 6862, 6862, 219, 200, 203, 204, 205,
- 206, 207, 262, 189, 71, 35, 1892, 425, 6862, 6862, 6862, 2133, 6862, 6862, 213, 6862, 6862, 2630, 49,
- 6862, 6862, 6862, 6862, 237, 249, 750, 6862, 6862, 6862, 1845, 47, 236, 246, 247, 248, 250, 49, 3638,
- 35, 554, 6862, 202, 6862, 448, 451, 6862, 6862, 1845, 2360, 6862, 271, 296, 6862, 865, 201, 6862, 6862,
- 228, 200, 203, 204, 205, 206, 207, 3327, 35, 1153, 32, 3328, 6862, 27, 30, 31, 1162, 1215, 26, 28, 1151,
- 296, 25, 23, 50, 1246, 106, 76, 77, 108, 2367, 266, 1385, 35, 1153, 32, 4945, 6862, 27, 30, 31, 1162,
- 1215, 375, 28, 243, 35, 1892, 425, 269, 264, 265, 3327, 35, 1153, 32, 3328, 6862, 27, 30, 31, 1162,
- 1215, 26, 28, 1151, 296, 25, 23, 50, 1246, 106, 76, 77, 85, 6862, 6862, 49, 6862, 6862, 6862, 6862,
- 6862, 6862, 6862, 6862, 2956, 6862, 1845, 47, 276, 279, 282, 627, 705, 6862, 6862, 6862, 6862, 6862,
- 369, 6862, 6862, 6862, 355, 2291, 357, 6862, 6862, 353, 1175, 6862, 1810, 2303, 3255, 3312, 3907, 6021,
- 3327, 1939, 1153, 1986, 3328, 6862, 27, 30, 31, 1162, 1215, 26, 28, 1151, 296, 25, 23, 50, 1246, 106,
- 76, 77, 84, 3327, 35, 1153, 32, 3328, 6862, 27, 30, 31, 1162, 1215, 26, 28, 1151, 296, 25, 23, 50, 1246,
- 106, 76, 77, 83, 6862, 6862, 6862, 6862, 563, 564, 568, 3327, 35, 1153, 32, 3328, 6862, 27, 30, 31,
- 1162, 1215, 26, 28, 1151, 296, 25, 23, 50, 1246, 106, 76, 77, 82, 3924, 3327, 35, 1153, 32, 3328, 6862,
- 27, 30, 31, 1162, 1215, 26, 28, 1151, 296, 25, 23, 50, 1246, 106, 76, 77, 81, 3327, 35, 1153, 32, 3328,
- 6862, 27, 30, 31, 1162, 1215, 26, 28, 1151, 296, 25, 23, 50, 1246, 106, 76, 77, 80, 3327, 35, 1153, 32,
- 3328, 6862, 27, 30, 31, 1162, 1215, 26, 28, 1151, 296, 25, 23, 50, 1246, 106, 76, 77, 79, 3327, 35,
- 1153, 32, 3328, 6862, 27, 30, 31, 1162, 1215, 26, 28, 1151, 296, 25, 23, 50, 1246, 106, 76, 77, 78,
- 3033, 35, 1153, 32, 3328, 6862, 27, 30, 31, 1162, 1215, 26, 28, 1151, 296, 25, 23, 50, 1246, 106, 76,
- 77, 104, 3327, 35, 1153, 32, 3328, 6862, 27, 30, 31, 1162, 1215, 26, 28, 1151, 296, 25, 23, 50, 1246,
- 106, 76, 77, 110, 3327, 35, 1153, 32, 3328, 6862, 27, 30, 31, 1162, 1215, 26, 28, 1151, 296, 25, 23, 50,
- 1246, 106, 76, 77, 109, 3327, 35, 1153, 32, 3328, 6862, 27, 30, 31, 1162, 1215, 26, 28, 1151, 296, 25,
- 23, 50, 1246, 106, 76, 77, 107, 3327, 35, 1153, 32, 3328, 6862, 27, 30, 31, 1162, 1215, 26, 28, 1151,
- 296, 25, 23, 50, 1246, 106, 76, 77, 105, 3274, 35, 1153, 32, 3328, 6862, 27, 30, 31, 1162, 1215, 26, 28,
- 1151, 296, 25, 23, 50, 1246, 86, 76, 77, 1603, 243, 35, 1892, 425, 4250, 6862, 6862, 6862, 6862, 6862,
- 6862, 56, 1870, 6862, 6862, 6862, 4250, 4250, 6862, 6862, 6862, 2459, 35, 1892, 425, 1959, 262, 6862,
- 6862, 6862, 4250, 6862, 49, 6862, 71, 35, 1892, 425, 379, 262, 6862, 6862, 6862, 1845, 47, 6862, 6862,
- 239, 249, 750, 6862, 6862, 262, 49, 6862, 238, 246, 247, 248, 250, 239, 249, 750, 3118, 1845, 47, 49,
- 1857, 238, 246, 247, 248, 250, 239, 249, 750, 6862, 1845, 815, 6862, 6862, 238, 246, 247, 248, 250,
- 6862, 2760, 875, 240, 242, 244, 3376, 6862, 251, 241, 243, 6862, 6862, 6862, 6862, 6862, 240, 242, 244,
- 3376, 6862, 251, 241, 243, 6862, 6862, 6862, 6862, 56, 240, 242, 244, 3376, 4250, 251, 241, 243, 6862,
- 3589, 35, 1892, 425, 4448, 1914, 6862, 6125, 6862, 6862, 6862, 6862, 6862, 272, 296, 6862, 56, 379,
- 1961, 6862, 6125, 600, 56, 6862, 6862, 6862, 6862, 600, 6862, 6862, 6862, 2954, 308, 6125, 6862, 6862,
- 6862, 6862, 6862, 6862, 6862, 6862, 3118, 379, 189, 6862, 6862, 6862, 6862, 379, 189, 266, 2350, 1385,
- 35, 1153, 32, 4945, 1396, 27, 30, 31, 1162, 1215, 375, 28, 546, 6862, 3118, 270, 264, 265, 6862, 6862,
- 3118, 6862, 2315, 35, 1153, 32, 4862, 4220, 27, 30, 31, 1162, 1215, 375, 28, 3687, 35, 554, 2285, 6862,
- 6862, 2048, 6862, 6862, 2549, 6862, 4250, 6862, 272, 296, 6862, 6862, 309, 2956, 6862, 6862, 277, 280,
- 283, 627, 705, 440, 6862, 6862, 6862, 1692, 6862, 369, 262, 6862, 4250, 355, 2291, 357, 6862, 6862, 351,
- 1175, 6862, 6862, 6862, 6862, 6862, 6862, 286, 6862, 266, 6862, 6862, 239, 249, 750, 262, 6862, 352,
- 3520, 357, 238, 246, 247, 248, 250, 6862, 6862, 270, 264, 265, 6862, 71, 35, 1892, 425, 6862, 239, 249,
- 750, 6862, 6862, 6862, 6862, 6862, 238, 246, 247, 248, 250, 6862, 6862, 6862, 6862, 6862, 240, 242, 244,
- 3376, 6862, 582, 241, 243, 1781, 49, 6862, 6862, 6862, 4250, 277, 280, 283, 627, 705, 6862, 1845, 628,
- 6862, 2137, 240, 242, 244, 3376, 4250, 581, 241, 243, 6862, 56, 6862, 262, 6862, 6862, 600, 6862, 6862,
- 6862, 6862, 6862, 71, 35, 1892, 425, 6862, 6862, 262, 6862, 6862, 6862, 6862, 6862, 239, 249, 750, 6862,
- 379, 189, 6862, 2887, 238, 246, 247, 248, 250, 221, 2260, 239, 249, 750, 5173, 4250, 49, 6862, 6862,
- 238, 246, 247, 248, 250, 2226, 2420, 6862, 1845, 2569, 4250, 6862, 6862, 563, 564, 569, 6862, 6862,
- 4166, 240, 242, 244, 3376, 2260, 252, 241, 243, 5173, 4250, 6862, 6862, 6862, 262, 6862, 240, 242, 244,
- 3376, 6862, 341, 241, 243, 6862, 6862, 6862, 2956, 6862, 6862, 6862, 6862, 4166, 6862, 56, 239, 249,
- 750, 6862, 600, 6862, 368, 6862, 238, 246, 247, 248, 250, 6862, 6862, 6862, 6862, 3745, 71, 35, 1892,
- 425, 6862, 6862, 2956, 56, 379, 189, 6862, 6862, 4250, 6862, 56, 6862, 6862, 221, 4312, 4250, 368, 6862,
- 6862, 396, 240, 242, 244, 3376, 6862, 536, 241, 243, 49, 2420, 379, 6862, 6862, 56, 2694, 3104, 3121,
- 379, 600, 1845, 2701, 6862, 6862, 6862, 6862, 6862, 4682, 6862, 6862, 6862, 6862, 396, 6862, 6862, 6862,
- 3118, 6862, 6862, 6862, 6862, 379, 189, 3118, 6862, 6862, 6862, 2694, 3104, 3121, 221, 6862, 6862, 6862,
- 6862, 6862, 6862, 6862, 6862, 6862, 544, 6862, 6862, 6862, 6862, 6862, 2420, 597, 6862, 6862, 6862,
- 6862, 6862, 6862, 3776, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862,
- 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862,
- 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862,
- 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 3777, 6862, 0, 39, 6877, 0, 39, 6876, 0, 1150, 29, 0,
- 477, 1213, 0, 491, 1300, 0, 38, 963, 0, 38, 6877, 0, 38, 6876, 0, 4031, 126, 0, 1, 481, 0, 495, 812, 0,
- 494, 880, 0, 1458, 91, 0, 1150, 424, 0, 35, 33, 0, 32, 34, 0, 39, 963, 0, 1, 643, 0, 1, 7169, 0, 1,
- 7168, 0, 1, 7167, 0, 1, 7166, 0, 1, 7165, 0, 1, 7164, 0, 1, 7163, 0, 1, 7162, 0, 1, 7161, 0, 1, 7160, 0,
- 1, 7159, 0, 39, 1, 6877, 0, 39, 1, 6876, 0, 318, 431, 0, 318, 323, 0, 7130, 275, 0, 7129, 275, 0, 7236,
- 275, 0, 7235, 275, 0, 7157, 275, 0, 7156, 275, 0, 7155, 275, 0, 7154, 275, 0, 7153, 275, 0, 7152, 275,
- 0, 7151, 275, 0, 7150, 275, 0, 7169, 275, 0, 7168, 275, 0, 7167, 275, 0, 7166, 275, 0, 7165, 275, 0,
- 7164, 275, 0, 7163, 275, 0, 7162, 275, 0, 7161, 275, 0, 7160, 275, 0, 7159, 275, 0, 39, 6877, 275, 0,
- 39, 6876, 275, 0, 6900, 275, 0, 6877, 48, 0, 6876, 48, 0, 6868, 1, 0, 6867, 1, 0, 639, 271, 0, 32, 425,
- 0, 29, 424, 0, 43, 6898, 0, 43, 37, 0, 4031, 128, 0, 4031, 127, 0, 1, 5785, 0, 1, 5435, 0, 1, 5524, 0,
- 1, 5554, 0, 1, 5578, 0, 1, 5601, 0, 1, 5624, 0, 1, 5647, 0, 1410, 1, 0, 1, 2235, 0, 1, 5501, 0, 1, 6884,
- 0, 1, 6883, 0, 1, 6882, 0, 1, 6881, 0, 1, 6880, 0, 1, 6879, 0, 1, 6878, 0, 1, 642, 0, 1, 645, 0, 1, 972,
- 0, 1, 978, 0, 1, 1037, 0, 1, 672, 0, 39, 1, 0, 367, 482, 0, 6900, 1, 0, 47, 37, 0, 1, 92, 0, 6877, 275,
- 0, 6876, 275, 0, 538, 3375, 0, 6900, 1, 263, 0, 39, 1, 263, 0, 263, 453, 0, 6877, 37, 0, 6876, 37, 0,
- 6877, 2, 37, 0, 6876, 2, 37, 0, 6877, 36, 0, 6876, 36, 0, 6898, 45, 0, 37, 45, 0, 6872, 442, 0, 6871,
- 442, 0, 1, 653, 0, 1, 963, 0, 263, 452, 0, 3111, 354, 0, 367, 95, 0, 35, 73, 0, 1, 367, 0, 2883, 313, 0,
- 538, 6051, 0, 1, 263, 0, 263, 254, 0, 1, 919, 0, 1, 956, 0, 263, 253, 0, 6874, 1, 0, 6870, 1, 0, 1, 263,
- 3650, 0, 6871, 263, 0, 3651, 263, 0, 6874, 420, 0, 6873, 420, 0, 3661, 263, 0, 10, 12, 0, 8, 10, 12, 0,
- 3730, 227, 0, 218, 5239, 0, 3735, 420, 0, 8, 12, 0 };
- }
-
- public final static char baseAction[] = BaseAction.baseAction;
-
- @Override
- public final int baseAction(int index) {
- return baseAction[index];
- }
-
- public final static char lhs[] = baseAction;
-
- @Override
- public final int lhs(int index) {
- return lhs[index];
- }
-
- public interface TermCheck {
- public final static byte termCheck[] = { 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 0, 56, 57, 58, 59, 0, 61, 62, 63, 0, 65, 66, 67, 0, 69, 0, 1, 2,
- 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
- 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 86, 87, 56, 57, 58, 59, 0, 61, 62, 63, 4, 65, 66,
- 67, 94, 69, 92, 93, 0, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
- 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
- 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 0, 56, 57, 58, 59, 0, 61, 62,
- 63, 4, 65, 66, 67, 0, 69, 0, 1, 2, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 0, 1, 2, 3, 4, 5,
- 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
- 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 86, 87, 56, 57, 58,
- 59, 0, 61, 62, 63, 95, 65, 66, 67, 0, 69, 0, 1, 2, 0, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 0,
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
- 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0,
- 68, 56, 57, 58, 59, 0, 61, 62, 63, 0, 65, 66, 67, 0, 69, 0, 3, 0, 0, 74, 75, 76, 77, 78, 79, 80, 81, 82,
- 83, 84, 85, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
- 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
- 51, 52, 53, 86, 87, 56, 57, 58, 59, 0, 61, 62, 63, 0, 65, 66, 67, 94, 69, 86, 87, 86, 87, 74, 75, 76,
- 77, 78, 79, 80, 81, 82, 83, 84, 85, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 0, 56, 57, 58, 59, 0, 61, 62, 63, 0, 65, 66, 67, 94, 69, 92, 93,
- 0, 0, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
- 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 86, 87, 56, 57, 58, 59, 0, 61, 62, 63, 95, 65, 66,
- 67, 94, 69, 92, 93, 86, 87, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 0, 1, 2, 3, 4, 5, 6, 7, 8,
- 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
- 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 0, 56, 57, 58, 59, 0, 61,
- 62, 63, 0, 65, 66, 67, 0, 69, 0, 1, 2, 5, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 0, 1, 2, 3, 4,
- 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 86, 87, 56, 57,
- 58, 59, 0, 61, 62, 63, 4, 65, 66, 67, 0, 69, 101, 102, 4, 95, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
- 84, 85, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
- 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
- 52, 53, 0, 0, 56, 57, 58, 59, 0, 61, 62, 63, 0, 65, 66, 67, 0, 69, 0, 1, 2, 0, 74, 75, 76, 77, 78, 79,
- 80, 81, 82, 83, 84, 85, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
- 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
- 48, 49, 50, 51, 52, 53, 86, 87, 56, 57, 58, 59, 0, 61, 62, 63, 0, 65, 66, 67, 4, 69, 92, 93, 0, 0, 74,
- 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
- 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 68, 0, 56, 57, 58, 59, 0, 61, 62, 63, 9, 65, 66, 67, 0, 69,
- 96, 0, 1, 2, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 0, 1, 2, 3, 4, 5, 6, 7, 8, 40, 10, 11, 12,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
- 39, 55, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 0, 56, 57, 58, 59, 0, 1, 2, 3, 4, 5, 6,
- 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
- 0, 1, 2, 0, 4, 0, 40, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 1, 2, 53, 0, 55, 56, 57, 58, 5, 0, 61, 62, 63, 0, 1,
- 2, 3, 4, 0, 6, 71, 8, 73, 5, 38, 7, 38, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 88, 11, 12, 13, 14, 15, 16, 17,
- 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 71, 0, 114, 115, 116, 0, 1, 2, 3, 4, 5,
- 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
- 33, 91, 0, 99, 100, 0, 0, 40, 98, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 53, 0, 55, 56, 57, 58, 0, 64, 61, 62,
- 63, 68, 0, 0, 0, 3, 0, 5, 71, 7, 73, 9, 6, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 88, 0, 1, 2,
- 3, 4, 55, 6, 54, 8, 0, 34, 35, 36, 37, 60, 0, 40, 64, 3, 70, 0, 1, 2, 60, 70, 114, 115, 116, 0, 9, 54,
- 0, 1, 2, 3, 4, 60, 6, 0, 8, 64, 64, 89, 90, 68, 68, 70, 71, 72, 73, 101, 102, 103, 104, 105, 106, 107,
- 108, 109, 110, 111, 112, 86, 87, 0, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
- 105, 106, 107, 108, 109, 110, 111, 112, 69, 120, 60, 64, 117, 118, 119, 120, 0, 34, 35, 3, 0, 5, 0, 7,
- 4, 9, 0, 1, 2, 3, 4, 9, 6, 0, 8, 0, 0, 1, 2, 3, 4, 5, 0, 7, 0, 10, 4, 5, 91, 7, 34, 35, 36, 37, 0, 98,
- 40, 3, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 54, 0, 1, 2, 54, 4, 60, 0, 1, 2, 64, 4, 0, 6, 68,
- 8, 70, 71, 72, 73, 0, 69, 59, 0, 1, 2, 60, 71, 54, 6, 64, 8, 86, 87, 68, 89, 90, 91, 92, 93, 94, 95, 96,
- 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 0, 1, 2, 55, 117, 118, 119,
- 120, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, 33, 0, 0, 1, 2, 3, 4, 40, 6, 0, 8, 0, 1, 2, 55, 4, 5, 0, 7, 0, 53, 0, 55, 56,
- 57, 58, 0, 0, 61, 62, 63, 4, 65, 7, 114, 115, 116, 0, 1, 2, 73, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 32, 33, 0, 53, 88, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
- 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 70, 0, 0, 1, 2, 40, 4, 0, 6, 91, 8, 4, 66, 67, 0, 0, 98, 91,
- 53, 54, 55, 56, 57, 58, 98, 0, 61, 62, 63, 22, 65, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
- 111, 112, 0, 1, 2, 3, 4, 5, 6, 7, 8, 38, 88, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 1, 2, 0, 4, 5, 40, 7, 71, 0, 1,
- 2, 9, 4, 5, 60, 7, 0, 0, 53, 3, 55, 56, 57, 58, 0, 113, 61, 62, 63, 0, 65, 0, 114, 115, 116, 0, 1, 2,
- 73, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 0, 88, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 1, 2, 60, 4, 5,
- 40, 7, 0, 1, 2, 0, 4, 0, 6, 4, 8, 54, 0, 53, 7, 55, 56, 57, 58, 0, 0, 61, 62, 63, 0, 65, 118, 22, 0, 1,
- 2, 0, 4, 73, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 89, 90, 88, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
- 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 55, 0,
- 1, 2, 0, 64, 40, 6, 60, 8, 0, 1, 2, 0, 0, 0, 6, 0, 0, 53, 5, 55, 56, 57, 58, 0, 9, 61, 62, 63, 0, 65,
- 96, 3, 0, 1, 2, 23, 24, 73, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 0, 88, 0, 1, 2, 3, 4, 5,
- 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
- 33, 72, 60, 0, 0, 68, 64, 40, 5, 0, 68, 0, 66, 67, 0, 86, 87, 3, 54, 54, 53, 96, 55, 56, 57, 58, 99,
- 100, 61, 62, 63, 0, 65, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 1, 2, 3, 4, 5, 0, 7, 89, 90,
- 88, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, 33, 0, 1, 2, 0, 4, 64, 40, 0, 0, 0, 0, 0, 99, 100, 0, 60, 9, 3, 9, 53, 9, 55,
- 56, 57, 58, 64, 0, 61, 62, 63, 0, 65, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 1, 2, 40, 4,
- 40, 6, 40, 8, 0, 88, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
- 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 1, 2, 0, 4, 5, 40, 7, 0, 9, 55, 0, 1, 2, 95, 7, 0, 0, 54,
- 53, 0, 55, 56, 57, 58, 9, 9, 61, 62, 63, 0, 65, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 88, 0, 1, 2, 3, 4, 0, 6, 0, 8, 9, 3, 34, 35, 36, 37, 38, 39, 72, 41, 42, 43, 44,
- 45, 46, 47, 48, 49, 50, 51, 52, 0, 1, 2, 72, 72, 5, 59, 0, 0, 62, 40, 3, 97, 66, 67, 0, 1, 2, 3, 4, 5,
- 6, 7, 8, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 1, 2, 3, 4, 97, 6, 0, 8, 9, 70, 113, 34,
- 35, 36, 37, 38, 39, 55, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 1, 2, 0, 0, 0, 59, 0, 3, 40,
- 54, 64, 9, 66, 67, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 34,
- 35, 3, 34, 35, 0, 1, 2, 0, 1, 2, 34, 35, 36, 37, 38, 39, 55, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
- 52, 0, 1, 2, 68, 96, 0, 59, 72, 0, 0, 0, 0, 7, 0, 3, 0, 69, 9, 9, 9, 73, 0, 1, 2, 3, 4, 5, 6, 7, 8, 55,
- 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 1, 2, 0, 0, 0, 6, 40, 0, 0, 0, 3, 34, 35, 36, 37, 38,
- 39, 0, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 1, 2, 68, 68, 64, 59, 73, 73, 0, 71, 0, 3, 66,
- 67, 0, 1, 2, 3, 4, 5, 6, 7, 8, 55, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 60, 0, 0, 0, 54, 64,
- 64, 71, 0, 0, 9, 9, 34, 35, 36, 37, 38, 39, 55, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 1, 2,
- 0, 0, 0, 59, 3, 89, 90, 0, 0, 9, 66, 67, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
- 18, 19, 20, 21, 60, 0, 69, 97, 0, 70, 72, 3, 0, 0, 0, 70, 34, 35, 36, 37, 38, 39, 55, 41, 42, 43, 44,
- 45, 46, 47, 48, 49, 50, 51, 52, 97, 64, 0, 1, 2, 0, 59, 0, 73, 0, 0, 0, 70, 3, 71, 0, 69, 0, 1, 2, 3, 4,
- 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 60, 0, 1, 2, 0, 74, 0, 3, 0, 5, 6, 7, 34,
- 35, 36, 37, 38, 39, 55, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 60, 0, 1, 2, 0, 60, 59, 34, 35,
- 36, 37, 70, 39, 0, 0, 0, 69, 0, 3, 0, 3, 113, 0, 9, 9, 55, 0, 54, 0, 54, 0, 54, 0, 60, 0, 3, 97, 64, 10,
- 66, 67, 68, 0, 70, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 55, 0, 54, 86, 87, 0, 89, 90, 91, 92,
- 93, 94, 95, 96, 0, 10, 99, 100, 101, 60, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 72, 72, 54,
- 61, 117, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 53, 0, 55, 0,
- 0, 4, 0, 0, 4, 3, 54, 34, 35, 36, 37, 38, 39, 10, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 1,
- 2, 3, 4, 5, 6, 7, 8, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 54, 0, 54, 113, 54, 54, 0,
- 53, 9, 55, 64, 34, 35, 36, 37, 38, 39, 0, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 0, 0, 0, 0,
- 89, 90, 3, 0, 9, 0, 55, 118, 66, 67, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 0, 0, 68, 0, 72, 55, 0, 0, 0, 0, 71, 0, 34, 35, 36, 37, 38, 39, 54, 41, 42, 43, 44, 45, 46,
- 47, 48, 49, 50, 51, 52, 0, 0, 68, 68, 71, 73, 59, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 54, 54, 54, 54, 0, 54, 0, 0, 0, 0, 64, 71, 34, 35, 36, 37, 38, 39, 75, 41, 42,
- 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 121, 0, 3, 89, 90, 0, 60, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 10,
- 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 54, 0, 0, 0, 0, 3, 3, 3, 0, 0, 64, 68, 34, 35, 36, 37, 38,
- 39, 70, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 0, 0, 3, 89, 90, 59, 0, 1, 2, 3, 4, 5, 6, 7,
- 8, 71, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 0, 0, 54, 0, 3, 0, 0, 0, 68, 0, 0, 34, 35, 36,
- 37, 38, 39, 70, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 0, 0, 0, 0, 0, 59, 0, 1, 2, 3, 4, 5,
- 6, 7, 8, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 70, 34,
- 35, 36, 37, 38, 39, 71, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 0, 0, 0, 0, 0, 59, 0, 1, 2,
- 3, 4, 5, 6, 7, 8, 71, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70,
- 70, 34, 35, 36, 37, 38, 39, 0, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 1, 2, 3, 4, 5, 6, 7,
- 8, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 35, 36,
- 37, 38, 39, 0, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 10, 11, 12,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 35, 36, 37, 38, 39, 0, 41,
- 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 10, 11, 12, 13, 14, 15, 16,
- 17, 18, 19, 20, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 35, 36, 37, 38, 39, 0, 41, 42, 43, 44, 45,
- 46, 47, 48, 49, 50, 51, 52, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
- 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 34, 35, 36, 37, 38, 39, 0, 41, 42, 43, 44, 45, 46, 47, 48, 49,
- 50, 51, 52, 0, 1, 2, 0, 4, 0, 0, 0, 0, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
- 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 53, 4, 0,
- 56, 57, 58, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 32, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 53, 0, 0, 56, 57, 58, 10, 11, 12, 13,
- 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 53, 0, 0, 56, 57, 58, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
- 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, 3, 0,
- 53, 0, 0, 56, 57, 58, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 0, 1, 2, 3, 4, 40, 6, 0, 8, 9,
- 3, 0, 36, 37, 0, 0, 9, 0, 0, 54, 0, 0, 0, 0, 0, 60, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 60, 72, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 60, 0, 0, 0, 0, 0, 40, 60, 0, 0, 0, 64,
- 72, 0, 0, 68, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 117, 0, 119, 0, 0, 72, 11, 12, 13,
- 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 1, 2, 3, 4, 5, 0, 7,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 64, 0, 0, 0, 68, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static byte termCheck[] = TermCheck.termCheck;
-
- @Override
- public final int termCheck(int index) {
- return termCheck[index];
- }
-
- public interface TermAction {
- public final static char termAction[] = { 0, 6862, 6824, 6803, 6803, 6803, 6803, 6803, 6803, 6803, 6840, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6828, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 121, 1, 1, 1, 1, 1, 133, 2753, 7070, 2290, 129, 3567, 1, 1, 367, 6873, 6862,
- 6876, 6877, 6869, 980, 3658, 3062, 3270, 2180, 3649, 4730, 3657, 1508, 3656, 3886, 3655, 10, 6843, 6843,
- 6843, 6843, 6843, 6843, 6843, 6843, 6843, 6843, 6843, 6843, 6843, 6843, 6843, 6843, 6843, 6843, 6843,
- 6843, 6843, 6843, 6843, 6843, 6843, 6843, 6843, 6843, 6843, 6843, 6843, 6843, 6843, 6843, 6843, 6843,
- 6843, 6843, 6843, 6843, 6843, 6843, 6843, 6843, 6843, 6843, 6843, 6843, 6843, 6843, 6843, 6843, 6843,
- 4322, 4421, 6843, 6843, 6843, 6843, 39, 6843, 6843, 6843, 6900, 6843, 6843, 6843, 3582, 6843, 3779,
- 3747, 432, 6843, 6843, 6843, 6843, 6843, 6843, 6843, 6843, 6843, 6843, 6843, 6843, 6843, 8, 6846, 6846,
- 6846, 6846, 6846, 6846, 6846, 6846, 6846, 6846, 6846, 6846, 6846, 6846, 6846, 6846, 6846, 6846, 6846,
- 6846, 6846, 6846, 6846, 6846, 6846, 6846, 6846, 6846, 6846, 6846, 6846, 6846, 6846, 6846, 6846, 6846,
- 6846, 6846, 6846, 6846, 6846, 6846, 6846, 6846, 6846, 6846, 6846, 6846, 6846, 6846, 6846, 6846, 6846,
- 125, 135, 6846, 6846, 6846, 6846, 6862, 6846, 6846, 6846, 1320, 6846, 6846, 6846, 333, 6846, 6862, 6607,
- 6604, 6846, 6846, 6846, 6846, 6846, 6846, 6846, 6846, 6846, 6846, 6846, 6846, 6846, 6862, 6824, 6803,
- 6803, 6803, 6803, 6803, 6803, 6803, 6831, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 6828, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4322, 4421, 1, 1, 1, 1, 421,
- 2753, 7070, 2290, 3490, 3567, 1, 1, 6862, 6873, 48, 6607, 6604, 190, 980, 3658, 3062, 3270, 2180, 3649,
- 4730, 3657, 1508, 3656, 3886, 3655, 6862, 6824, 6803, 6803, 6803, 6803, 6803, 6803, 6803, 6831, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6828, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 124, 1577, 1, 1, 1, 1, 134, 2753, 7070, 2290, 6862, 3567, 1, 1, 6862, 6873, 123,
- 5948, 122, 6862, 980, 3658, 3062, 3270, 2180, 3649, 4730, 3657, 1508, 3656, 3886, 3655, 6862, 6824,
- 6803, 6803, 6803, 6803, 6803, 6803, 6803, 6831, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6828, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4322, 4421, 1, 1, 1, 1,
- 153, 2753, 7070, 2290, 130, 3567, 1, 1, 3582, 6873, 4322, 4421, 4322, 4421, 980, 3658, 3062, 3270, 2180,
- 3649, 4730, 3657, 1508, 3656, 3886, 3655, 6862, 6824, 6803, 6803, 6803, 6803, 6803, 6803, 6803, 6831, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6828, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 141, 136, 1, 1, 1, 1, 154, 2753, 7070, 2290, 149, 3567, 1, 1, 3617, 6873,
- 3779, 3747, 145, 6862, 980, 3658, 3062, 3270, 2180, 3649, 4730, 3657, 1508, 3656, 3886, 3655, 6862,
- 6824, 6803, 6803, 6803, 6803, 6803, 6803, 6803, 6831, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6828, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4322, 4421, 1, 1, 1,
- 1, 6862, 2753, 7070, 2290, 3490, 3567, 1, 1, 3617, 6873, 3851, 3811, 4322, 4421, 980, 3658, 3062, 3270,
- 2180, 3649, 4730, 3657, 1508, 3656, 3886, 3655, 6862, 6824, 6803, 6803, 6803, 6803, 6803, 6803, 6803,
- 6831, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6828, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 144, 139, 1, 1, 1, 1, 6862, 2753, 7070, 2290, 155, 3567, 1, 1, 6862,
- 6873, 434, 6876, 6877, 1800, 980, 3658, 3062, 3270, 2180, 3649, 4730, 3657, 1508, 3656, 3886, 3655,
- 6862, 6824, 6803, 6803, 6803, 6803, 6803, 6803, 6803, 6831, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6828, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4322, 4421, 1,
- 1, 1, 1, 6862, 2753, 7070, 2290, 2284, 3567, 1, 1, 432, 6873, 1079, 3893, 425, 3526, 980, 3658, 3062,
- 3270, 2180, 3649, 4730, 3657, 1508, 3656, 3886, 3655, 6862, 6824, 6803, 6803, 6803, 6803, 6803, 6803,
- 6803, 6831, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 6828, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 142, 6862, 1, 1, 1, 1, 6862, 2753, 7070, 2290, 150, 3567,
- 1, 1, 6862, 6873, 36, 6761, 6758, 6862, 980, 3658, 3062, 3270, 2180, 3649, 4730, 3657, 1508, 3656, 3886,
- 3655, 6862, 6824, 6803, 6803, 6803, 6803, 6803, 6803, 6803, 6831, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6828, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4322,
- 4421, 1, 1, 1, 1, 137, 2753, 7070, 2290, 6862, 3567, 1, 1, 1118, 6873, 3851, 3811, 552, 6862, 980, 3658,
- 3062, 3270, 2180, 3649, 4730, 3657, 1508, 3656, 3886, 3655, 6862, 3650, 1, 1, 1, 1, 1, 1, 1, 3651, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6871, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 994, 442, 1, 1, 1, 1, 6862, 2753, 7070, 2290, 6770, 3567, 1, 1, 6862, 6873,
- 3396, 6862, 10586, 10586, 980, 3658, 3062, 3270, 2180, 3649, 4730, 3657, 1508, 3656, 3886, 3655, 39,
- 6426, 6423, 5019, 1410, 5578, 5501, 5601, 2235, 6773, 1262, 7161, 7159, 7168, 7167, 7163, 7164, 7162,
- 7165, 7166, 7169, 7160, 7156, 7235, 7236, 7150, 7157, 7153, 7129, 7155, 7154, 7151, 7152, 7130, 5554,
- 5524, 5647, 5624, 6881, 5435, 6898, 645, 1037, 6883, 972, 5785, 978, 6884, 6882, 642, 6878, 6879, 6880,
- 7297, 6862, 6862, 1198, 7298, 7299, 1528, 6862, 6737, 6737, 263, 6733, 263, 263, 263, 263, 6741, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 323, 6521, 6521, 6862, 318, 6862, 263,
- 6862, 6514, 6510, 653, 6661, 6794, 963, 6794, 2235, 333, 6876, 6877, 1, 115, 6730, 1, 1, 1, 5390, 111,
- 1107, 7311, 1556, 1, 6514, 6510, 653, 6661, 6862, 963, 263, 2235, 453, 1570, 820, 1407, 3580, 257, 345,
- 6514, 6510, 653, 6661, 6794, 963, 6794, 2235, 7399, 7161, 7159, 7168, 7167, 7163, 7164, 7162, 7165,
- 7166, 7169, 7160, 7156, 7235, 7236, 7150, 7157, 7153, 7129, 7155, 7154, 7151, 7152, 7130, 3072, 6862,
- 7334, 7335, 7336, 6862, 6737, 6737, 263, 6733, 263, 263, 263, 263, 6782, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5693, 6862, 5142, 4702, 139, 37, 263, 5716, 126, 403, 6514,
- 6510, 4206, 6661, 1, 963, 1, 2235, 495, 1, 258, 6730, 1, 1, 1, 6862, 6201, 1107, 7311, 1556, 4930, 33,
- 6862, 6862, 6465, 6862, 6465, 263, 6465, 452, 6465, 1904, 7156, 7235, 7236, 7150, 7157, 7153, 7129,
- 7155, 7154, 7151, 7152, 7130, 7399, 367, 6426, 6423, 653, 1410, 6898, 963, 4058, 2235, 6862, 6465, 6465,
- 6465, 6465, 1321, 6862, 6465, 6447, 639, 2097, 6862, 6876, 6877, 6453, 1368, 7334, 7335, 7336, 6862,
- 6874, 6465, 1, 6514, 6510, 4206, 6661, 6465, 963, 114, 2235, 6465, 3729, 4004, 3931, 6465, 4930, 6465,
- 6465, 6465, 6465, 1079, 3893, 2050, 2003, 1956, 1909, 1862, 1815, 1768, 1721, 1674, 1627, 6465, 6465,
- 118, 6465, 6465, 6465, 6465, 6465, 6465, 6465, 6465, 6465, 6465, 6465, 6465, 6465, 6465, 6465, 6465,
- 6465, 6465, 6465, 6465, 6465, 6465, 6465, 6465, 6873, 6422, 1321, 2699, 6465, 6465, 6465, 6465, 6862,
- 4638, 4611, 6468, 433, 6468, 6862, 6468, 424, 6468, 1, 6514, 6510, 653, 6661, 6874, 963, 595, 2235, 337,
- 37, 6877, 6877, 6877, 6877, 6877, 39, 6877, 6862, 7198, 6900, 367, 5693, 367, 6468, 6468, 6468, 6468,
- 91, 5716, 6468, 6459, 6877, 6877, 6877, 6877, 6877, 6877, 6877, 6877, 6877, 6877, 6877, 6877, 6468,
- 6862, 6426, 6423, 1150, 6900, 6468, 6862, 6426, 6423, 6468, 1410, 6862, 6471, 6468, 2235, 6468, 6468,
- 6468, 6468, 476, 6873, 3578, 38, 6444, 6441, 6877, 3072, 2499, 6438, 6877, 2235, 6468, 6468, 6877, 6468,
- 6468, 6468, 6468, 6468, 6468, 6468, 6468, 6468, 6468, 6468, 6468, 6468, 6468, 6468, 6468, 6468, 6468,
- 6468, 6468, 6468, 6468, 6468, 6468, 43, 6628, 6628, 1024, 6468, 6468, 6468, 6468, 6862, 6803, 6803, 263,
- 6803, 263, 263, 263, 263, 6806, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9202, 1, 1, 1, 1, 1,
- 1, 6862, 1, 6514, 6510, 6776, 6661, 263, 6779, 113, 6664, 481, 1, 1, 6625, 1, 6450, 112, 6450, 259, 1,
- 159, 6800, 1, 1, 1, 131, 6862, 2241, 7107, 2290, 2713, 3567, 3665, 7334, 7335, 7336, 6862, 6876, 6877,
- 254, 7156, 7235, 7236, 7150, 7157, 7153, 7129, 7155, 7154, 7151, 7152, 7130, 6862, 2768, 7399, 6862,
- 6803, 6803, 263, 6803, 263, 263, 263, 263, 263, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9202,
- 1, 1, 1, 1, 1, 1, 6862, 2851, 6862, 6862, 6426, 6423, 263, 1410, 39, 963, 5693, 2235, 6900, 5670, 1111,
- 1, 6862, 5716, 5693, 1, 3518, 6800, 1, 1, 1, 5716, 6862, 2241, 7107, 2290, 2565, 3567, 3333, 4895, 2785,
- 2719, 2653, 2587, 2521, 2455, 2389, 2323, 2257, 2191, 381, 6426, 6423, 4206, 1410, 367, 963, 367, 2235,
- 3566, 7399, 6862, 6803, 6803, 263, 6803, 263, 263, 263, 263, 6815, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 9202, 1, 1, 1, 1, 1, 1, 482, 39, 39, 6862, 6900, 6712, 263, 6712, 2144, 92, 1, 1, 6866,
- 1, 6721, 1321, 6721, 271, 260, 1, 6616, 6800, 1, 1, 1, 6862, 3660, 2241, 7107, 2290, 6862, 3567, 494,
- 7334, 7335, 7336, 327, 6876, 6877, 253, 7156, 7235, 7236, 7150, 7157, 7153, 7129, 7155, 7154, 7151,
- 7152, 7130, 146, 6862, 7399, 6862, 6803, 6803, 263, 6803, 263, 263, 263, 263, 6806, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9202, 1, 1, 1, 1, 1, 1, 95, 39, 39, 6456, 6900, 6788, 263, 6788, 6862,
- 6426, 6423, 39, 1410, 132, 963, 6900, 2235, 4139, 261, 1, 3665, 6800, 1, 1, 1, 138, 6862, 2241, 7107,
- 2290, 6862, 3567, 6865, 1941, 431, 6518, 6518, 384, 318, 254, 7156, 7235, 7236, 7150, 7157, 7153, 7129,
- 7155, 7154, 7151, 7152, 7130, 4112, 4085, 7399, 6862, 6803, 6803, 263, 6803, 263, 263, 263, 263, 6806,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9202, 1, 1, 1, 1, 1, 1, 318, 6862, 6876, 6877, 6862,
- 2703, 263, 963, 1321, 2235, 6862, 6876, 6877, 157, 372, 117, 1904, 6862, 572, 1, 5390, 6800, 1, 1, 1,
- 398, 6868, 2241, 7107, 2290, 1, 3567, 3396, 3883, 6862, 6607, 6604, 7235, 7236, 254, 7156, 7235, 7236,
- 7150, 7157, 7153, 7129, 7155, 7154, 7151, 7152, 7130, 148, 6862, 7399, 6862, 6803, 6803, 263, 6803, 263,
- 263, 263, 263, 263, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9202, 1, 1, 1, 1, 1, 1, 6867,
- 1321, 116, 6862, 3560, 577, 263, 5390, 6862, 577, 573, 5670, 1111, 1, 4322, 4421, 5819, 4139, 2829, 1,
- 3434, 6800, 1, 1, 1, 5142, 4702, 2241, 7107, 2290, 6862, 3567, 7156, 7235, 7236, 7150, 7157, 7153, 7129,
- 7155, 7154, 7151, 7152, 7130, 381, 39, 39, 3883, 6900, 367, 6862, 367, 4112, 4085, 7399, 6862, 6803,
- 6803, 263, 6803, 263, 263, 263, 263, 263, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9202, 1, 1,
- 1, 1, 1, 1, 6862, 6426, 6423, 6862, 6900, 2747, 263, 6862, 156, 1, 574, 1, 5142, 4702, 6862, 1321, 6872,
- 4370, 6872, 1, 224, 6800, 1, 1, 1, 2761, 6862, 2241, 7107, 2290, 6862, 3567, 7156, 7235, 7236, 7150,
- 7157, 7153, 7129, 7155, 7154, 7151, 7152, 7130, 6862, 6426, 6423, 6871, 1410, 6871, 6471, 224, 2235,
- 6862, 7399, 6862, 6803, 6803, 263, 6803, 263, 263, 263, 263, 263, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 9202, 1, 1, 1, 1, 1, 1, 1, 6709, 6709, 6862, 6715, 367, 263, 367, 151, 399, 2617, 6862,
- 10340, 10337, 3526, 3699, 1, 6862, 2895, 1, 411, 6800, 1, 1, 1, 194, 6868, 2241, 7107, 2290, 394, 3567,
- 6862, 1, 1, 1, 1, 1, 1, 1, 1, 6862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7399, 1, 6514, 6510, 6776, 6661,
- 6862, 6779, 347, 6664, 6872, 1604, 1, 1, 1, 1, 1, 1, 399, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 37, 6718,
- 6718, 194, 6867, 367, 1, 6862, 6862, 7461, 6871, 4544, 399, 1, 1, 1, 6514, 6510, 672, 1410, 5578, 5501,
- 5601, 2235, 6862, 6474, 6501, 6507, 6480, 6483, 6495, 6492, 6498, 6489, 6486, 6477, 6504, 1, 6514, 6510,
- 653, 6661, 7255, 963, 158, 2235, 345, 1219, 3660, 5554, 5524, 5647, 5624, 6881, 5435, 6898, 645, 1037,
- 6883, 972, 5785, 978, 6884, 6882, 642, 6878, 6879, 6880, 37, 6718, 6718, 6862, 120, 6862, 1528, 119,
- 4550, 345, 5025, 553, 6868, 39, 39, 39, 6426, 6423, 5019, 1410, 5578, 5501, 5601, 2235, 6856, 643, 7161,
- 7159, 7168, 7167, 7163, 7164, 7162, 7165, 7166, 7169, 7160, 6862, 4638, 4611, 4740, 4638, 4611, 6862,
- 6747, 6744, 6862, 10340, 10337, 5554, 5524, 5647, 5624, 6881, 5435, 1716, 645, 1037, 6883, 972, 5785,
- 978, 6884, 6882, 642, 6878, 6879, 6880, 326, 967, 967, 6281, 3434, 152, 1528, 6867, 6862, 6862, 6862,
- 6862, 3699, 6862, 2883, 6862, 6837, 6870, 6870, 6872, 6869, 174, 6426, 6423, 5019, 1410, 5578, 5501,
- 5601, 2235, 6898, 643, 7161, 7159, 7168, 7167, 7163, 7164, 7162, 7165, 7166, 7169, 7160, 37, 6718, 6718,
- 6862, 6862, 6862, 6718, 6871, 383, 6862, 6862, 2077, 5554, 5524, 5647, 5624, 6881, 5435, 147, 645, 1037,
- 6883, 972, 5785, 978, 6884, 6882, 642, 6878, 6879, 6880, 6862, 6754, 6750, 1170, 796, 7411, 1528, 6869,
- 6869, 6862, 2917, 1, 4276, 39, 39, 1, 6514, 6510, 672, 1410, 5578, 5501, 5601, 2235, 1951, 6474, 6501,
- 6507, 6480, 6483, 6495, 6492, 6498, 6489, 6486, 6477, 6504, 1321, 1, 1, 406, 4139, 7340, 7354, 7300,
- 100, 404, 6818, 399, 5554, 5524, 5647, 5624, 6881, 5435, 6898, 645, 1037, 6883, 972, 5785, 978, 6884,
- 6882, 642, 6878, 6879, 6880, 45, 6767, 6767, 1, 103, 6862, 1528, 4349, 4112, 4085, 328, 465, 6821, 39,
- 39, 39, 6426, 6423, 5019, 1410, 5578, 5501, 5601, 2235, 6834, 643, 7161, 7159, 7168, 7167, 7163, 7164,
- 7162, 7165, 7166, 7169, 7160, 4951, 1, 6873, 7257, 6862, 1431, 399, 3111, 6862, 584, 356, 1481, 5554,
- 5524, 5647, 5624, 6881, 5435, 6764, 645, 1037, 6883, 972, 5785, 978, 6884, 6882, 642, 6878, 6879, 6880,
- 399, 6027, 6862, 6747, 6744, 6862, 1528, 6862, 6869, 1, 354, 457, 3129, 6785, 2767, 99, 6837, 39, 6426,
- 6423, 5019, 1410, 5578, 5501, 5601, 2235, 6834, 643, 7161, 7159, 7168, 7167, 7163, 7164, 7162, 7165,
- 7166, 7169, 7160, 1321, 6862, 11342, 8963, 1, 3313, 29, 636, 477, 7362, 7368, 7366, 5554, 5524, 5647,
- 5624, 6881, 5435, 6898, 645, 1037, 6883, 972, 5785, 978, 6884, 6882, 642, 6878, 6879, 6880, 1321, 37,
- 6718, 6718, 491, 3030, 1528, 7360, 7361, 7391, 7392, 3228, 7369, 6862, 1, 1, 6837, 313, 3883, 6862,
- 6797, 1, 575, 6868, 6610, 6898, 6862, 7371, 337, 6429, 6862, 6432, 6862, 794, 424, 3569, 3878, 7372,
- 7198, 1760, 1773, 7393, 6862, 7370, 7156, 7235, 7236, 7150, 7157, 7153, 7129, 7155, 7154, 7151, 7152,
- 7130, 6898, 583, 6435, 7382, 7381, 1, 7387, 7388, 7394, 7385, 7386, 7365, 7367, 7389, 6862, 6809, 7363,
- 7364, 7390, 1321, 7375, 7376, 7377, 7373, 7374, 7383, 7384, 7379, 7378, 7380, 6867, 6613, 6462, 1890,
- 7395, 39, 6426, 6423, 5019, 1410, 5578, 5501, 5601, 2235, 6866, 643, 7161, 7159, 7168, 7167, 7163, 7164,
- 7162, 7165, 7166, 7169, 7160, 128, 6812, 48, 3575, 6862, 48, 6877, 6862, 1, 6876, 4668, 1150, 5554,
- 5524, 5647, 5624, 6881, 5435, 6809, 645, 1037, 6883, 972, 5785, 978, 6884, 6882, 642, 6878, 6879, 6880,
- 1, 6514, 6510, 6706, 6661, 6649, 6667, 6652, 6664, 47, 6474, 6501, 6507, 6480, 6483, 6495, 6492, 6498,
- 6489, 6486, 6477, 6504, 1, 4058, 320, 6877, 3660, 3518, 6876, 485, 6812, 591, 3575, 6631, 6646, 6643,
- 6658, 6655, 6679, 6640, 6862, 6694, 6703, 6673, 6697, 6637, 6700, 6670, 6676, 6691, 6688, 6685, 6682, 8,
- 29, 326, 463, 6862, 4004, 3931, 4511, 218, 6859, 6862, 1619, 6865, 6709, 6709, 39, 6426, 6423, 5019,
- 1410, 5578, 5501, 5601, 2235, 6862, 643, 7161, 7159, 7168, 7167, 7163, 7164, 7162, 7165, 7166, 7169,
- 7160, 6862, 6862, 7181, 227, 591, 3519, 127, 432, 73, 6862, 739, 6862, 5554, 5524, 5647, 5624, 6881,
- 5435, 1150, 645, 1037, 6883, 972, 5785, 978, 6884, 6882, 642, 6878, 6879, 6880, 6862, 6862, 9942, 718,
- 461, 6859, 1528, 39, 6426, 6423, 5019, 1410, 5578, 5501, 5601, 2235, 6862, 643, 7161, 7159, 7168, 7167,
- 7163, 7164, 7162, 7165, 7166, 7169, 7160, 4058, 1150, 6791, 3309, 486, 3385, 6862, 6862, 6862, 35, 6634,
- 3171, 5554, 5524, 5647, 5624, 6881, 5435, 6850, 645, 1037, 6883, 972, 5785, 978, 6884, 6882, 642, 6878,
- 6879, 6880, 6862, 6853, 6862, 6150, 4004, 3931, 6862, 1021, 39, 6426, 6423, 672, 1410, 5578, 5501, 5601,
- 2235, 6862, 643, 7161, 7159, 7168, 7167, 7163, 7164, 7162, 7165, 7166, 7169, 7160, 4139, 344, 6862,
- 6862, 6862, 6248, 4794, 6304, 545, 2, 4179, 2511, 5554, 5524, 5647, 5624, 6881, 5435, 2125, 645, 1037,
- 6883, 972, 5785, 978, 6884, 6882, 642, 6878, 6879, 6880, 6862, 6862, 6862, 4963, 4112, 4085, 1528, 39,
- 6426, 6423, 672, 1410, 5578, 5501, 5601, 2235, 4792, 643, 7161, 7159, 7168, 7167, 7163, 7164, 7162,
- 7165, 7166, 7169, 7160, 543, 6862, 6862, 37, 6862, 5274, 6862, 6862, 6862, 2222, 6862, 6862, 5554, 5524,
- 5647, 5624, 6881, 5435, 5922, 645, 1037, 6883, 972, 5785, 978, 6884, 6882, 642, 6878, 6879, 6880, 6862,
- 6862, 6862, 6862, 6862, 6862, 1528, 39, 6426, 6423, 5019, 1410, 5578, 5501, 5601, 2235, 6862, 643, 7161,
- 7159, 7168, 7167, 7163, 7164, 7162, 7165, 7166, 7169, 7160, 6862, 547, 6862, 6862, 6862, 6862, 6862,
- 6862, 6862, 6862, 6274, 2125, 5554, 5524, 5647, 5624, 6881, 5435, 4854, 645, 1037, 6883, 972, 5785, 978,
- 6884, 6882, 642, 6878, 6879, 6880, 6862, 6862, 6862, 6862, 6862, 6862, 1528, 39, 6426, 6423, 5954, 1410,
- 5578, 5501, 5601, 2235, 4916, 643, 7161, 7159, 7168, 7167, 7163, 7164, 7162, 7165, 7166, 7169, 7160,
- 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 2983, 901, 5554, 5524, 5647, 5624, 6881,
- 5435, 6862, 645, 1037, 6883, 972, 5785, 978, 6884, 6882, 642, 6878, 6879, 6880, 39, 6426, 6423, 5019,
- 1410, 5578, 5501, 5601, 2235, 6862, 643, 7161, 7159, 7168, 7167, 7163, 7164, 7162, 7165, 7166, 7169,
- 7160, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 5554, 5524, 5647, 5624,
- 6881, 5435, 6862, 645, 1037, 6883, 972, 5785, 978, 6884, 6882, 642, 6878, 6879, 6880, 39, 6426, 6423,
- 672, 1410, 5578, 5501, 5601, 2235, 6862, 643, 7161, 7159, 7168, 7167, 7163, 7164, 7162, 7165, 7166,
- 7169, 7160, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 5554, 5524, 5647,
- 5624, 6881, 5435, 6862, 645, 1037, 6883, 972, 5785, 978, 6884, 6882, 642, 6878, 6879, 6880, 39, 6426,
- 6423, 672, 1410, 5578, 5501, 5601, 2235, 6862, 643, 7161, 7159, 7168, 7167, 7163, 7164, 7162, 7165,
- 7166, 7169, 7160, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 5554, 5524,
- 5647, 5624, 6881, 5435, 6862, 645, 1037, 6883, 972, 5785, 978, 6884, 6882, 642, 6878, 6879, 6880, 39,
- 6426, 6423, 5019, 1410, 5578, 5501, 5601, 2235, 6862, 643, 7161, 7159, 7168, 7167, 7163, 7164, 7162,
- 7165, 7166, 7169, 7160, 1, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 196, 6862, 6862, 5554, 5524,
- 5647, 5624, 6881, 5435, 6862, 645, 1037, 6883, 972, 5785, 978, 6884, 6882, 642, 6878, 6879, 6880, 6862,
- 6426, 6423, 6862, 6900, 6862, 6862, 6862, 6862, 6862, 882, 7161, 7159, 7168, 7167, 7163, 7164, 7162,
- 7165, 7166, 7169, 7160, 7156, 7235, 7236, 7150, 7157, 7153, 7129, 7155, 7154, 7151, 7152, 7130, 6862,
- 6862, 6862, 6862, 6862, 6862, 6862, 196, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 275, 6597,
- 6593, 7297, 6601, 6862, 1198, 7298, 7299, 6862, 882, 6584, 6590, 6563, 6566, 6578, 6575, 6581, 6572,
- 6569, 6560, 6587, 6539, 6533, 6530, 6557, 6536, 6548, 6527, 6542, 6545, 6554, 6551, 6524, 6862, 6862,
- 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6876, 6877, 6862,
- 7297, 6862, 6862, 1198, 7298, 7299, 1571, 7161, 7159, 7168, 7167, 7163, 7164, 7162, 7165, 7166, 7169,
- 7160, 7156, 7235, 7236, 7150, 7157, 7153, 7129, 7155, 7154, 7151, 7152, 7130, 6862, 6862, 6862, 6862,
- 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 275, 6727, 6724, 6862, 7297, 6862,
- 6862, 1198, 7298, 7299, 1571, 6584, 6590, 6563, 6566, 6578, 6575, 6581, 6572, 6569, 6560, 6587, 6539,
- 6533, 6530, 6557, 6536, 6548, 6527, 6542, 6545, 6554, 6551, 6524, 6862, 6862, 6862, 29, 424, 424, 6622,
- 424, 6622, 424, 6622, 424, 6622, 6862, 75, 6862, 6862, 704, 6862, 7297, 6862, 6862, 1198, 7298, 7299,
- 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 6862, 1, 6514, 6510, 4206, 6661, 6622, 963,
- 1, 2235, 6610, 3883, 6862, 6924, 6925, 6862, 6862, 377, 6862, 6862, 6429, 6862, 6862, 6862, 6862, 6862,
- 6622, 32, 425, 425, 6619, 425, 6619, 425, 6619, 425, 6619, 3890, 6622, 6862, 6862, 6862, 6862, 6862,
- 6862, 6862, 6862, 6862, 6862, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 1321, 6862,
- 6862, 6862, 6862, 6862, 6619, 1321, 6862, 6862, 6862, 377, 6613, 6862, 6862, 377, 6862, 6862, 6862, 377,
- 6862, 6862, 6862, 6862, 6862, 6862, 6619, 6862, 571, 6862, 6862, 6862, 6862, 1060, 6862, 2552, 6862,
- 6862, 6619, 7161, 7159, 7168, 7167, 7163, 7164, 7162, 7165, 7166, 7169, 7160, 7156, 7235, 7236, 7150,
- 7157, 7153, 7129, 7155, 7154, 7151, 7152, 7130, 37, 6876, 6876, 6876, 6876, 6876, 6862, 6876, 6862,
- 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6876, 6876, 6876, 6876,
- 6876, 6876, 6876, 6876, 6876, 6876, 6876, 6876, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862,
- 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862, 6862,
- 6876, 6862, 6862, 6862, 6876, 6862, 6862, 6862, 6876 };
- }
-
- public final static char termAction[] = TermAction.termAction;
-
- @Override
- public final int termAction(int index) {
- return termAction[index];
- }
-
- public interface Asb {
- public final static char asb[] = { 0, 790, 15, 671, 9, 831, 880, 880, 880, 880, 536, 831, 562, 562, 468, 562,
- 262, 655, 264, 672, 672, 672, 672, 672, 672, 672, 672, 672, 564, 570, 575, 572, 579, 577, 584, 582, 586,
- 585, 587, 331, 588, 671, 655, 192, 192, 192, 192, 710, 17, 165, 165, 559, 192, 328, 105, 562, 562, 165,
- 710, 105, 105, 96, 655, 947, 191, 1124, 538, 1005, 655, 562, 564, 763, 763, 17, 671, 672, 672, 672, 672,
- 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 671, 671, 671, 671, 671, 671,
- 671, 671, 671, 671, 671, 671, 672, 105, 105, 1070, 1070, 1070, 1070, 1126, 105, 165, 165, 534, 994,
- 1005, 6, 1005, 1, 1005, 282, 1005, 989, 536, 710, 328, 328, 165, 880, 672, 534, 288, 908, 898, 897, 432,
- 1012, 1012, 536, 264, 328, 191, 671, 708, 1123, 105, 707, 709, 707, 105, 328, 572, 572, 570, 570, 570,
- 577, 577, 577, 577, 575, 575, 582, 579, 579, 585, 584, 586, 1082, 587, 831, 831, 831, 831, 710, 710,
- 1070, 193, 530, 655, 1047, 1045, 1052, 1050, 1054, 1053, 1055, 1056, 1069, 1070, 559, 710, 380, 383, 3,
- 765, 4, 536, 710, 710, 1126, 1070, 96, 328, 603, 105, 910, 912, 710, 1124, 672, 192, 568, 61, 105, 538,
- 710, 710, 709, 1124, 671, 671, 671, 671, 671, 831, 831, 507, 518, 518, 518, 518, 502, 536, 713, 672,
- 672, 672, 672, 672, 672, 672, 672, 672, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 672,
- 655, 381, 557, 555, 383, 710, 720, 160, 718, 1126, 6, 540, 710, 1126, 710, 105, 902, 890, 901, 912,
- 1126, 708, 105, 568, 534, 1123, 538, 710, 708, 105, 105, 105, 105, 17, 17, 710, 672, 1045, 1045, 1045,
- 1050, 1047, 1047, 1053, 1052, 1054, 1082, 1055, 381, 555, 543, 710, 383, 1082, 4, 880, 1128, 147, 1072,
- 383, 720, 719, 720, 720, 1126, 540, 540, 710, 710, 612, 671, 899, 899, 269, 269, 710, 906, 534, 840,
- 105, 710, 568, 569, 568, 671, 61, 152, 564, 538, 105, 105, 1126, 785, 671, 555, 555, 1124, 6, 6, 1070,
- 880, 707, 622, 1074, 704, 831, 720, 720, 720, 720, 710, 540, 542, 835, 542, 612, 671, 671, 912, 710,
- 1124, 105, 910, 890, 612, 443, 568, 17, 672, 328, 152, 710, 555, 554, 708, 724, 6, 109, 399, 708, 720,
- 720, 704, 608, 672, 1082, 277, 873, 710, 534, 720, 720, 546, 542, 543, 672, 710, 777, 912, 612, 569,
- 105, 328, 555, 609, 724, 724, 59, 1084, 372, 831, 4, 146, 399, 708, 720, 6, 536, 1074, 672, 672, 1123,
- 704, 882, 427, 547, 710, 543, 777, 105, 777, 543, 724, 724, 108, 372, 59, 886, 536, 1069, 880, 154, 154,
- 609, 6, 635, 882, 710, 831, 546, 710, 536, 536, 710, 831, 770, 777, 543, 109, 724, 609, 276, 608, 105,
- 536, 710, 399, 109, 399, 1068, 1068, 833, 636, 536, 710, 17, 710, 710, 710, 913, 770, 724, 671, 225,
- 704, 609, 710, 710, 399, 192, 192, 833, 635, 1082, 672, 1082, 609, 634, 831, 831, 831, 636, 831, 710,
- 339, 609, 609, 710, 6, 105, 710, 710, 104, 772, 543, 105, 543, 6, 710, 609, 1069, 627, 831, 627, 636,
- 1082, 636, 655, 655, 653, 634, 655, 609, 609, 783, 633, 192, 772, 543, 225, 609, 222, 840, 636, 105,
- 704, 105, 653, 372, 831, 105, 833, 225, 154, 105, 105, 456, 636, 783, 636, 609, 372, 671, 636, 633, 542,
- 1068, 6, 6, 979, 671, 634, 17, 609, 105, 607, 224, 707, 636, 105, 609, 607, 607, 636 };
- }
-
- public final static char asb[] = Asb.asb;
-
- @Override
- public final int asb(int index) {
- return asb[index];
- }
-
- public interface Asr {
- public final static byte asr[] = { 0, 55, 4, 71, 1, 2, 69, 9, 0, 9, 71, 118, 72, 40, 68, 120, 0, 9, 72, 11, 12,
- 41, 66, 13, 42, 43, 14, 15, 16, 67, 8, 44, 17, 18, 45, 46, 47, 59, 48, 49, 10, 19, 20, 21, 50, 51, 52,
- 1, 2, 3, 36, 37, 7, 5, 34, 35, 6, 39, 4, 38, 0, 98, 91, 34, 35, 99, 100, 86, 87, 54, 89, 90, 92, 93, 94,
- 95, 96, 101, 102, 71, 97, 70, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 118, 73, 40, 120, 64, 1,
- 2, 7, 5, 4, 3, 60, 68, 72, 9, 0, 69, 53, 23, 13, 56, 26, 14, 28, 29, 15, 16, 30, 31, 17, 18, 32, 57, 33,
- 58, 19, 22, 20, 24, 21, 12, 11, 25, 9, 3, 7, 5, 40, 63, 65, 88, 27, 62, 55, 61, 8, 1, 2, 4, 10, 6, 0,
- 64, 70, 68, 1, 2, 0, 4, 9, 71, 69, 0, 41, 66, 42, 43, 67, 8, 44, 45, 46, 47, 59, 48, 49, 50, 51, 52, 38,
- 36, 37, 7, 5, 34, 35, 6, 39, 64, 3, 4, 10, 1, 2, 56, 57, 58, 12, 21, 11, 17, 15, 16, 18, 19, 14, 13, 20,
- 25, 31, 32, 27, 30, 29, 22, 26, 23, 24, 28, 33, 53, 0, 73, 59, 36, 37, 7, 5, 34, 35, 39, 45, 3, 4, 50,
- 51, 52, 38, 48, 43, 47, 12, 21, 11, 17, 15, 16, 18, 19, 14, 13, 20, 10, 42, 46, 44, 41, 49, 69, 9, 8, 6,
- 1, 2, 67, 66, 0, 74, 64, 71, 97, 72, 69, 60, 3, 9, 68, 40, 70, 0, 4, 9, 69, 1, 2, 0, 66, 67, 3, 10, 42,
- 46, 44, 41, 49, 12, 21, 11, 17, 15, 16, 18, 19, 14, 13, 20, 50, 51, 52, 38, 48, 43, 47, 6, 8, 4, 36, 37,
- 7, 5, 34, 35, 39, 45, 1, 2, 118, 9, 0, 64, 71, 97, 68, 118, 72, 73, 120, 11, 12, 41, 66, 13, 42, 43, 14,
- 15, 16, 67, 44, 17, 18, 45, 46, 47, 59, 48, 49, 10, 19, 20, 21, 50, 51, 52, 38, 36, 37, 34, 35, 39, 9,
- 40, 6, 8, 1, 2, 4, 3, 7, 5, 0, 88, 61, 8, 114, 115, 116, 63, 9, 3, 7, 5, 6, 71, 73, 40, 62, 25, 11, 12,
- 53, 23, 13, 56, 26, 27, 14, 28, 29, 15, 16, 30, 31, 17, 18, 32, 57, 55, 33, 10, 58, 19, 20, 24, 21, 1,
- 2, 4, 22, 0, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 25, 23, 26, 27, 28, 29, 30, 31, 32, 33, 22, 24,
- 40, 9, 72, 8, 1, 2, 60, 3, 7, 5, 6, 4, 0, 67, 66, 34, 35, 99, 100, 94, 95, 6, 39, 70, 54, 106, 107, 103,
- 104, 105, 111, 110, 112, 87, 86, 108, 109, 92, 93, 89, 90, 96, 101, 36, 37, 91, 117, 10, 56, 53, 57, 58,
- 12, 21, 11, 17, 15, 16, 18, 19, 14, 13, 20, 25, 31, 32, 27, 30, 29, 22, 26, 23, 24, 28, 33, 64, 68, 3,
- 60, 7, 5, 1, 2, 4, 0, 1, 2, 68, 73, 9, 0, 22, 1, 2, 4, 114, 115, 116, 0, 59, 23, 24, 8, 6, 1, 2, 4, 74,
- 69, 119, 117, 36, 37, 60, 3, 98, 91, 5, 99, 100, 34, 35, 87, 86, 54, 89, 90, 92, 93, 7, 94, 95, 96, 64,
- 97, 72, 120, 70, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 71, 118, 101, 102, 73, 68, 40, 9, 0,
- 23, 59, 24, 9, 64, 97, 70, 68, 72, 0, 9, 71, 69, 74, 0, 88, 114, 115, 116, 55, 71, 113, 121, 73, 62, 74,
- 63, 61, 65, 76, 78, 84, 82, 75, 80, 81, 83, 85, 69, 77, 79, 40, 9, 25, 53, 23, 56, 26, 27, 28, 29, 30,
- 31, 32, 57, 33, 58, 22, 24, 59, 66, 67, 10, 42, 46, 44, 41, 49, 12, 21, 11, 17, 15, 16, 18, 19, 14, 13,
- 20, 50, 51, 52, 38, 48, 43, 47, 36, 37, 34, 35, 39, 45, 7, 5, 3, 4, 8, 6, 1, 2, 0, 54, 64, 89, 90, 0, 4,
- 54, 9, 71, 69, 0, 65, 25, 11, 12, 53, 23, 13, 56, 26, 88, 27, 14, 28, 29, 15, 16, 30, 61, 31, 17, 18,
- 32, 57, 33, 10, 58, 19, 63, 22, 20, 24, 21, 9, 3, 7, 5, 73, 40, 62, 8, 6, 55, 1, 2, 4, 0, 23, 24, 74, 3,
- 71, 40, 69, 59, 9, 64, 97, 68, 72, 70, 0, 72, 9, 87, 86, 0, 11, 12, 41, 66, 13, 42, 43, 14, 15, 16, 67,
- 8, 44, 17, 18, 45, 46, 47, 59, 48, 49, 10, 19, 20, 21, 50, 51, 52, 38, 1, 2, 36, 37, 7, 5, 34, 35, 6,
- 39, 4, 62, 3, 0, 113, 0, 9, 68, 73, 70, 0, 25, 11, 12, 53, 23, 13, 56, 26, 27, 14, 28, 29, 15, 16, 30,
- 31, 17, 18, 32, 57, 33, 10, 58, 19, 22, 20, 24, 21, 1, 2, 4, 97, 0, 71, 9, 60, 3, 70, 68, 40, 54, 0, 9,
- 69, 68, 0, 9, 69, 70, 0, 7, 5, 8, 6, 4, 1, 2, 3, 60, 64, 70, 68, 9, 72, 97, 0, 6, 8, 3, 60, 5, 7, 97,
- 25, 11, 12, 53, 23, 13, 56, 26, 27, 14, 28, 29, 15, 16, 30, 31, 17, 18, 32, 57, 33, 10, 58, 19, 22, 20,
- 24, 21, 1, 2, 4, 72, 9, 0, 66, 67, 36, 37, 34, 35, 39, 45, 50, 51, 52, 38, 48, 43, 47, 12, 21, 11, 17,
- 15, 16, 18, 19, 14, 13, 20, 10, 42, 46, 44, 41, 49, 7, 5, 3, 60, 8, 6, 4, 1, 2, 0, 10, 56, 53, 57, 58,
- 12, 21, 11, 17, 15, 16, 18, 19, 14, 13, 20, 74, 71, 97, 118, 73, 69, 120, 8, 31, 32, 33, 22, 24, 1, 2,
- 30, 29, 28, 27, 26, 6, 4, 23, 25, 119, 98, 117, 91, 36, 37, 34, 35, 99, 100, 9, 60, 3, 5, 72, 40, 87,
- 86, 54, 89, 90, 92, 93, 7, 94, 95, 96, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 70,
- 68, 64, 0, 40, 9, 3, 8, 6, 7, 5, 4, 1, 2, 71, 0, 53, 23, 13, 56, 26, 14, 28, 29, 15, 16, 30, 31, 17, 18,
- 32, 57, 33, 10, 58, 19, 22, 20, 24, 21, 12, 11, 25, 9, 3, 7, 40, 63, 61, 65, 88, 27, 62, 54, 4, 5, 8, 6,
- 1, 2, 55, 0 };
- }
-
- public final static byte asr[] = Asr.asr;
-
- @Override
- public final int asr(int index) {
- return asr[index];
- }
-
- public interface Nasb {
- public final static char nasb[] = { 0, 160, 12, 82, 12, 12, 12, 12, 12, 12, 86, 12, 12, 12, 125, 12, 238, 26,
- 157, 82, 82, 257, 82, 82, 82, 82, 82, 82, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 82, 12, 82, 26,
- 218, 218, 218, 218, 157, 16, 180, 180, 93, 5, 108, 230, 12, 12, 180, 261, 230, 230, 164, 1, 82, 77, 53,
- 12, 12, 26, 12, 12, 68, 68, 16, 27, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82,
- 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 27, 82, 230, 230, 12, 12, 12, 12, 120, 230, 43, 43,
- 187, 275, 276, 226, 276, 13, 276, 88, 276, 269, 10, 157, 108, 108, 43, 12, 82, 187, 103, 163, 19, 19,
- 12, 12, 12, 10, 157, 108, 218, 113, 238, 99, 230, 237, 157, 237, 230, 108, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 192, 11, 12, 250, 164, 21, 12, 12, 12,
- 12, 12, 12, 12, 12, 12, 12, 197, 157, 12, 180, 191, 86, 96, 86, 157, 11, 12, 12, 195, 108, 12, 230, 303,
- 180, 157, 53, 82, 218, 180, 34, 230, 12, 11, 157, 110, 53, 82, 27, 27, 27, 27, 12, 12, 275, 276, 276,
- 276, 276, 286, 10, 12, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82,
- 27, 82, 43, 189, 189, 189, 204, 192, 41, 41, 12, 242, 226, 180, 242, 52, 192, 230, 12, 173, 12, 306, 51,
- 192, 230, 91, 197, 99, 12, 261, 192, 230, 230, 230, 230, 16, 16, 157, 82, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 180, 145, 157, 170, 12, 74, 12, 12, 116, 278, 204, 41, 41, 180, 180, 52, 180, 262,
- 11, 192, 180, 82, 12, 12, 19, 19, 157, 172, 187, 306, 230, 192, 180, 59, 12, 27, 197, 111, 12, 12, 230,
- 230, 52, 230, 82, 189, 137, 53, 226, 130, 12, 12, 86, 180, 182, 175, 12, 180, 180, 57, 57, 192, 262, 55,
- 12, 12, 137, 82, 82, 180, 11, 53, 230, 303, 232, 180, 12, 91, 16, 82, 108, 111, 192, 180, 137, 238, 180,
- 226, 294, 180, 242, 180, 123, 234, 170, 82, 12, 66, 12, 157, 187, 57, 57, 151, 55, 145, 82, 262, 180,
- 306, 137, 59, 230, 108, 137, 170, 264, 180, 12, 294, 279, 12, 129, 116, 306, 238, 123, 132, 37, 175, 82,
- 82, 139, 234, 12, 86, 142, 242, 145, 118, 230, 180, 145, 294, 264, 225, 182, 12, 12, 86, 12, 12, 61, 61,
- 170, 132, 144, 12, 242, 12, 30, 242, 86, 86, 11, 12, 180, 118, 145, 294, 180, 170, 135, 12, 230, 86,
- 242, 306, 294, 180, 12, 12, 180, 211, 37, 11, 16, 11, 242, 242, 228, 137, 264, 113, 80, 175, 170, 242,
- 75, 306, 218, 218, 149, 221, 12, 82, 12, 170, 12, 12, 12, 12, 222, 12, 262, 168, 170, 170, 262, 63, 230,
- 11, 11, 230, 180, 145, 230, 180, 226, 75, 170, 12, 155, 12, 12, 222, 12, 222, 299, 299, 245, 12, 299,
- 170, 170, 12, 180, 218, 118, 145, 180, 170, 12, 218, 222, 230, 175, 230, 217, 180, 12, 230, 149, 80, 61,
- 230, 230, 180, 222, 12, 222, 170, 175, 27, 222, 155, 145, 12, 63, 63, 173, 82, 12, 201, 170, 230, 147,
- 79, 237, 222, 230, 170, 147, 12, 222 };
- }
-
- public final static char nasb[] = Nasb.nasb;
-
- @Override
- public final int nasb(int index) {
- return nasb[index];
- }
-
- public interface Nasr {
- public final static char nasr[] = { 0, 3, 13, 10, 9, 137, 136, 113, 135, 134, 4, 2, 0, 166, 205, 0, 5, 105, 0,
- 80, 0, 13, 2, 9, 10, 4, 52, 5, 36, 0, 4, 115, 182, 0, 5, 194, 0, 186, 4, 185, 0, 122, 0, 4, 10, 9, 2,
- 13, 127, 5, 0, 154, 2, 75, 0, 167, 0, 123, 0, 159, 0, 121, 0, 42, 66, 0, 208, 0, 4, 2, 9, 10, 157, 0,
- 140, 117, 0, 192, 0, 81, 148, 42, 10, 9, 2, 13, 4, 0, 166, 200, 0, 161, 0, 5, 212, 0, 42, 1, 0, 75, 156,
- 155, 0, 13, 2, 9, 10, 4, 94, 0, 2, 131, 0, 5, 28, 0, 170, 0, 144, 0, 154, 75, 0, 173, 0, 5, 52, 213, 0,
- 1, 140, 0, 42, 174, 0, 201, 0, 51, 0, 75, 54, 0, 210, 0, 5, 81, 0, 176, 0, 175, 0, 4, 115, 209, 0, 129,
- 0, 2, 44, 0, 5, 191, 0, 30, 100, 101, 5, 0, 5, 36, 39, 0, 30, 101, 100, 78, 4, 2, 9, 10, 5, 0, 5, 10, 9,
- 2, 78, 4, 98, 54, 0, 44, 2, 3, 0, 101, 100, 54, 4, 68, 0, 5, 195, 0, 5, 50, 93, 115, 48, 4, 0, 5, 50,
- 42, 36, 196, 0, 197, 5, 52, 0, 81, 36, 50, 82, 5, 42, 0, 52, 5, 30, 0, 101, 100, 54, 78, 68, 4, 10, 9,
- 2, 0, 2, 67, 0, 36, 5, 27, 198, 0, 137, 214, 136, 113, 135, 134, 0, 4, 10, 9, 13, 3, 1, 0, 132, 5, 50,
- 93, 0, 2, 4, 113, 110, 111, 112, 13, 69, 0, 39, 4, 2, 9, 10, 5, 172, 0, 113, 69, 13, 110, 111, 112, 190,
- 0, 5, 50, 93, 95, 0, 5, 52, 116, 0, 54, 4, 98, 27, 5, 0 };
- }
-
- public final static char nasr[] = Nasr.nasr;
-
- @Override
- public final int nasr(int index) {
- return nasr[index];
- }
-
- public interface TerminalIndex {
- public final static char terminalIndex[] = { 0, 113, 114, 2, 31, 10, 13, 9, 79, 115, 100, 48, 52, 60, 68, 74,
- 75, 86, 87, 102, 105, 107, 104, 54, 106, 47, 64, 66, 70, 73, 76, 83, 89, 98, 11, 12, 7, 8, 112, 14, 120,
- 55, 61, 67, 84, 88, 90, 94, 97, 99, 109, 110, 111, 53, 19, 93, 63, 91, 101, 95, 1, 77, 122, 103, 20, 46,
- 58, 78, 44, 121, 33, 30, 118, 119, 96, 108, 49, 50, 56, 57, 59, 69, 71, 72, 85, 92, 17, 18, 65, 21, 22,
- 6, 23, 24, 25, 26, 27, 32, 4, 15, 16, 28, 29, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 51, 80, 81, 82, 5,
- 117, 3, 123, 62, 116 };
- }
-
- public final static char terminalIndex[] = TerminalIndex.terminalIndex;
-
- @Override
- public final int terminalIndex(int index) {
- return terminalIndex[index];
- }
-
- public interface NonterminalIndex {
- public final static char nonterminalIndex[] = { 0, 130, 135, 136, 0, 0, 134, 0, 0, 237, 243, 133, 0, 143, 0,
- 132, 0, 0, 142, 148, 0, 0, 149, 158, 159, 160, 161, 188, 151, 0, 126, 162, 141, 163, 164, 165, 131, 166,
- 167, 128, 168, 0, 129, 138, 137, 170, 169, 171, 185, 0, 0, 195, 152, 172, 0, 173, 0, 0, 0, 0, 0, 174,
- 175, 176, 0, 177, 180, 0, 155, 194, 0, 0, 0, 212, 0, 0, 145, 209, 213, 0, 214, 127, 179, 0, 0, 0, 0, 0,
- 0, 183, 0, 0, 0, 0, 125, 186, 0, 0, 210, 216, 217, 218, 0, 220, 157, 0, 146, 0, 0, 215, 197, 198, 199,
- 201, 227, 228, 182, 204, 0, 0, 219, 0, 0, 0, 0, 248, 0, 251, 0, 252, 0, 147, 187, 189, 190, 191, 192,
- 196, 200, 203, 0, 206, 0, 207, 0, 222, 225, 0, 0, 0, 246, 0, 247, 0, 0, 139, 140, 144, 0, 0, 154, 156,
- 0, 178, 0, 193, 0, 0, 0, 202, 0, 205, 211, 0, 223, 224, 0, 0, 229, 232, 0, 234, 236, 0, 240, 241, 242,
- 245, 0, 0, 249, 124, 0, 150, 153, 0, 181, 0, 184, 0, 0, 208, 221, 226, 0, 0, 230, 231, 233, 235, 0, 238,
- 239, 244, 250, 253, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static char nonterminalIndex[] = NonterminalIndex.nonterminalIndex;
-
- @Override
- public final int nonterminalIndex(int index) {
- return nonterminalIndex[index];
- }
-
- public interface ScopePrefix {
- public final static char scopePrefix[] = { 172, 324, 608, 627, 317, 332, 559, 575, 586, 597, 372, 280, 294, 311,
- 344, 55, 305, 392, 430, 180, 616, 502, 20, 33, 64, 84, 93, 98, 103, 143, 208, 339, 350, 20, 467, 157,
- 286, 300, 530, 40, 157, 382, 20, 635, 40, 230, 259, 1, 14, 27, 74, 89, 119, 27, 361, 365, 448, 495, 524,
- 551, 555, 645, 649, 653, 110, 7, 110, 410, 426, 439, 460, 479, 543, 129, 129, 245, 439, 566, 582, 593,
- 604, 220, 513, 69, 69, 169, 235, 238, 69, 254, 275, 238, 238, 69, 369, 492, 499, 169, 69, 668, 123, 355,
- 414, 454, 486, 472, 69, 355, 401, 190, 117, 452, 657, 664, 657, 664, 78, 420, 150, 117, 117, 264 };
- }
-
- public final static char scopePrefix[] = ScopePrefix.scopePrefix;
-
- @Override
- public final int scopePrefix(int index) {
- return scopePrefix[index];
- }
-
- public interface ScopeSuffix {
- public final static char scopeSuffix[] = { 18, 148, 5, 5, 148, 148, 5, 5, 5, 5, 379, 148, 108, 148, 25, 61, 291,
- 398, 436, 186, 80, 508, 25, 38, 38, 38, 72, 72, 108, 148, 213, 31, 31, 25, 5, 162, 291, 114, 535, 51,
- 165, 387, 622, 640, 45, 224, 224, 5, 18, 31, 5, 72, 108, 31, 108, 108, 148, 257, 5, 5, 5, 5, 5, 257,
- 666, 11, 114, 379, 379, 379, 464, 483, 535, 133, 138, 249, 443, 570, 570, 570, 570, 224, 517, 72, 72, 5,
- 5, 241, 243, 257, 5, 278, 278, 243, 108, 5, 257, 5, 528, 5, 126, 358, 417, 457, 489, 475, 547, 538, 404,
- 193, 108, 108, 659, 659, 661, 661, 80, 422, 152, 215, 200, 266 };
- }
-
- public final static char scopeSuffix[] = ScopeSuffix.scopeSuffix;
-
- @Override
- public final int scopeSuffix(int index) {
- return scopeSuffix[index];
- }
-
- public interface ScopeLhs {
- public final static char scopeLhs[] = { 48, 112, 18, 18, 92, 112, 18, 18, 18, 18, 85, 97, 49, 92, 111, 90, 59,
- 85, 84, 48, 18, 20, 190, 3, 7, 8, 182, 182, 178, 110, 48, 111, 111, 138, 45, 147, 60, 49, 157, 151, 147,
- 85, 18, 18, 151, 102, 72, 153, 88, 190, 185, 182, 178, 138, 199, 57, 66, 161, 19, 18, 18, 18, 18, 18,
- 12, 129, 178, 85, 84, 84, 64, 41, 157, 114, 114, 68, 84, 18, 18, 18, 18, 102, 20, 186, 182, 201, 100,
- 109, 74, 80, 73, 172, 89, 138, 86, 162, 161, 192, 157, 17, 178, 138, 116, 83, 22, 45, 157, 157, 85, 48,
- 178, 79, 155, 44, 155, 44, 185, 116, 110, 48, 48, 72 };
- }
-
- public final static char scopeLhs[] = ScopeLhs.scopeLhs;
-
- @Override
- public final int scopeLhs(int index) {
- return scopeLhs[index];
- }
-
- public interface ScopeLa {
- public final static byte scopeLa[] = { 113, 73, 72, 72, 73, 73, 72, 72, 72, 72, 72, 73, 40, 73, 1, 64, 1, 72,
- 121, 69, 3, 72, 1, 64, 64, 64, 1, 1, 40, 73, 69, 1, 1, 1, 72, 73, 1, 1, 4, 64, 68, 40, 1, 1, 64, 72, 72,
- 72, 113, 1, 72, 1, 40, 1, 40, 40, 73, 118, 72, 72, 72, 72, 72, 118, 1, 72, 1, 72, 72, 72, 71, 71, 4, 1,
- 1, 5, 72, 64, 64, 64, 64, 72, 3, 1, 1, 72, 72, 3, 1, 118, 72, 1, 1, 1, 40, 72, 118, 72, 6, 72, 1, 55,
- 70, 71, 72, 64, 1, 55, 75, 74, 40, 40, 4, 4, 4, 4, 3, 1, 69, 1, 1, 3 };
- }
-
- public final static byte scopeLa[] = ScopeLa.scopeLa;
-
- @Override
- public final int scopeLa(int index) {
- return scopeLa[index];
- }
-
- public interface ScopeStateSet {
- public final static char scopeStateSet[] = { 85, 183, 284, 284, 107, 183, 284, 284, 284, 284, 95, 109, 85, 107,
- 183, 107, 87, 95, 95, 85, 284, 284, 118, 214, 260, 260, 54, 54, 82, 183, 85, 183, 183, 185, 140, 371,
- 87, 85, 165, 50, 371, 95, 284, 284, 50, 174, 66, 26, 95, 118, 30, 54, 82, 185, 22, 87, 33, 63, 284, 284,
- 284, 284, 284, 284, 264, 6, 82, 95, 95, 95, 148, 344, 165, 183, 183, 124, 95, 284, 284, 284, 284, 174,
- 284, 30, 54, 24, 174, 176, 66, 170, 66, 60, 71, 185, 95, 57, 63, 168, 165, 284, 82, 185, 1, 95, 285,
- 140, 165, 165, 95, 85, 82, 11, 121, 189, 121, 189, 30, 1, 183, 85, 85, 66 };
- }
-
- public final static char scopeStateSet[] = ScopeStateSet.scopeStateSet;
-
- @Override
- public final int scopeStateSet(int index) {
- return scopeStateSet[index];
- }
-
- public interface ScopeRhs {
- public final static char scopeRhs[] = { 0, 338, 3, 59, 0, 126, 0, 337, 3, 113, 0, 126, 180, 0, 127, 188, 74, 0,
- 224, 0, 197, 166, 126, 10, 0, 136, 0, 166, 126, 10, 0, 135, 0, 271, 127, 54, 124, 0, 20, 0, 309, 127,
- 54, 55, 0, 20, 53, 0, 33, 132, 0, 20, 53, 0, 0, 309, 127, 54, 55, 215, 0, 20, 186, 0, 271, 127, 54, 132,
- 0, 189, 126, 0, 141, 0, 227, 3, 308, 0, 308, 0, 2, 0, 126, 0, 271, 127, 54, 131, 0, 189, 126, 237, 0,
- 189, 126, 22, 237, 0, 189, 126, 332, 22, 0, 128, 197, 166, 126, 0, 128, 0, 197, 166, 126, 0, 134, 128,
- 0, 172, 0, 328, 127, 172, 0, 127, 172, 0, 230, 128, 0, 166, 327, 235, 0, 136, 0, 0, 0, 0, 135, 0, 0, 0,
- 0, 326, 127, 164, 236, 0, 127, 0, 236, 0, 129, 0, 0, 127, 0, 325, 127, 164, 270, 0, 127, 0, 0, 44, 127,
- 0, 0, 150, 3, 0, 127, 296, 295, 127, 74, 294, 172, 0, 295, 127, 74, 294, 172, 0, 223, 0, 224, 0, 294,
- 172, 0, 96, 0, 0, 223, 0, 224, 0, 211, 96, 0, 0, 223, 0, 224, 0, 295, 127, 294, 172, 0, 223, 0, 211, 0,
- 0, 223, 0, 240, 127, 3, 0, 126, 0, 0, 0, 0, 0, 240, 127, 3, 222, 0, 231, 3, 0, 220, 127, 0, 216, 0, 146,
- 0, 176, 166, 126, 0, 10, 0, 0, 0, 0, 226, 60, 0, 125, 0, 240, 127, 3, 195, 0, 195, 0, 2, 0, 0, 126, 0,
- 0, 0, 0, 0, 211, 3, 0, 209, 0, 252, 127, 164, 38, 27, 0, 189, 126, 61, 63, 0, 204, 128, 0, 128, 189,
- 126, 292, 63, 0, 189, 126, 292, 63, 0, 189, 126, 70, 123, 61, 0, 252, 127, 164, 262, 61, 0, 252, 127,
- 164, 262, 239, 61, 0, 289, 290, 127, 164, 123, 322, 56, 0, 289, 290, 127, 164, 322, 56, 0, 189, 126,
- 288, 56, 0, 197, 189, 126, 288, 235, 0, 189, 126, 288, 235, 0, 166, 126, 0, 93, 136, 0, 286, 127, 149,
- 0, 286, 127, 172, 0, 158, 84, 0, 317, 161, 319, 320, 3, 81, 0, 126, 179, 0, 319, 320, 3, 81, 0, 128, 0,
- 126, 179, 0, 158, 3, 75, 204, 80, 0, 126, 128, 0, 204, 80, 0, 108, 2, 131, 126, 128, 0, 238, 3, 75, 0,
- 211, 174, 0, 33, 169, 0, 174, 0, 183, 33, 169, 0, 238, 3, 85, 0, 204, 152, 238, 3, 83, 0, 62, 179, 0,
- 238, 3, 83, 0, 126, 179, 62, 179, 0, 318, 127, 164, 0, 158, 0, 226, 77, 0, 30, 179, 0, 158, 102, 185, 0,
- 30, 177, 0, 148, 64, 167, 3, 0, 167, 3, 0, 20, 161, 126, 0, 158, 102, 162, 0, 30, 169, 0, 198, 3, 0,
- 126, 149, 0, 227, 3, 0, 226, 60, 283, 0, 158, 60, 0, 198, 3, 314, 67, 126, 0, 126, 0, 0, 0, 0, 314, 67,
- 126, 0, 2, 145, 126, 0, 0, 0, 0, 198, 3, 45, 0, 147, 0, 125, 55, 166, 126, 0, 31, 147, 0, 93, 136, 31,
- 147, 0, 228, 189, 126, 0, 146, 31, 147, 0, 198, 3, 49, 0, 158, 3, 49, 0, 158, 3, 64, 198, 54, 41, 0,
- 198, 54, 41, 0, 20, 2, 131, 126, 0, 158, 3, 64, 198, 54, 44, 0, 198, 54, 44, 0, 158, 3, 64, 198, 54, 46,
- 0, 198, 54, 46, 0, 158, 3, 64, 198, 54, 42, 0, 198, 54, 42, 0, 227, 3, 125, 197, 166, 126, 10, 0, 125,
- 197, 166, 126, 10, 0, 136, 2, 0, 126, 0, 227, 3, 124, 276, 166, 126, 10, 0, 276, 166, 126, 10, 0, 135,
- 2, 0, 126, 0, 227, 3, 135, 0, 227, 3, 140, 0, 158, 60, 140, 0, 278, 0, 31, 0, 31, 139, 0, 165, 0, 134,
- 0, 158, 3, 0 };
- }
-
- public final static char scopeRhs[] = ScopeRhs.scopeRhs;
-
- @Override
- public final int scopeRhs(int index) {
- return scopeRhs[index];
- }
-
- public interface ScopeState {
- public final static char scopeState[] = { 0, 4466, 6304, 6248, 6150, 0, 3260, 2778, 2973, 2704, 0, 5301, 5239,
- 5172, 5040, 4978, 4916, 4854, 4792, 4730, 4509, 4447, 4794, 0, 2313, 0, 1983, 1936, 1654, 0, 2511, 739,
- 0, 5301, 5239, 2377, 1613, 5172, 5040, 4978, 4916, 4854, 4792, 980, 4730, 4509, 4447, 2572, 2309, 0,
- 4674, 4930, 3461, 0, 718, 2767, 0, 1038, 914, 0, 750, 6008, 0, 1312, 1202, 0, 5985, 750, 5415, 4682,
- 6008, 4598, 5129, 2420, 2222, 3838, 796, 653, 4220, 4206, 4166, 0, 5192, 4369, 0, 5192, 4369, 5833,
- 6201, 6140, 5820, 6125, 6051, 5807, 6027, 5301, 5239, 5172, 5040, 4978, 4916, 4854, 4792, 4730, 4509,
- 4447, 0, 5192, 4369, 5833, 6201, 6140, 5820, 6125, 6051, 5807, 6027, 0, 6021, 5363, 0, 2284, 1320, 0,
- 3838, 5985, 4737, 5415, 4682, 6219, 4220, 2957, 3905, 810, 6187, 4312, 2301, 2959, 648, 0, 3333, 3434,
- 3617, 3526, 3851, 3811, 3699, 672, 2917, 994, 2851, 2785, 2719, 2653, 2587, 2521, 2455, 2389, 2323,
- 2257, 2191, 926, 834, 766, 0, 2552, 1060, 0, 1111, 0, 2291, 1175, 1048, 649, 4682, 4312, 4598, 4206,
- 4166, 3889, 3883, 3118, 0, 6021, 5363, 5932, 600, 4250, 0, 5829, 5808, 5428, 5312, 5180, 5166, 5007,
- 4945, 4883, 4862, 6267, 6161, 4800, 4731, 6094, 5842, 5330, 4270, 5173, 4476, 4455, 4448, 4350, 3328, 0,
- 1857, 1810, 5829, 5808, 5428, 1763, 1669, 5312, 1042, 5180, 5166, 5007, 4945, 4883, 2485, 2186, 2092,
- 2045, 4862, 1998, 6267, 6161, 1951, 1904, 1716, 1619, 4800, 4731, 1523, 1427, 6094, 3125, 5842, 2139,
- 5330, 4270, 5173, 1348, 4476, 4455, 4448, 5932, 963, 4250, 4350, 3328, 2815, 2749, 2683, 1410, 901,
- 4598, 5129, 2420, 2222, 3838, 5985, 796, 750, 5415, 4682, 653, 4220, 4206, 6008, 4166, 2617, 1024, 2552,
- 1060, 5785, 2917, 4179, 994, 3333, 2851, 2785, 2719, 2653, 2587, 2521, 2455, 2389, 2323, 2257, 2191,
- 3434, 3617, 3526, 3851, 3811, 3699, 4139, 4112, 4085, 5762, 672, 5739, 926, 834, 766, 1079, 3396, 3582,
- 3490, 3779, 3747, 3665, 4421, 4322, 4058, 4031, 4004, 3931, 5390, 5142, 4702, 4638, 4611, 5716, 5693,
- 5670, 5647, 5624, 5601, 5578, 5554, 5524, 5501, 5435, 2983, 3270, 3228, 3171, 3129, 3072, 3030, 1481,
- 1431, 1368, 2144, 1321, 2097, 2050, 2003, 1956, 1909, 1862, 1815, 1768, 1721, 1674, 1627, 600, 1577,
- 1528, 1273, 1170, 1123, 1219, 0 };
- }
-
- public final static char scopeState[] = ScopeState.scopeState;
-
- @Override
- public final int scopeState(int index) {
- return scopeState[index];
- }
-
- public interface InSymb {
- public final static char inSymb[] = { 0, 0, 313, 127, 285, 49, 41, 44, 46, 42, 10, 135, 124, 131, 8, 132, 4, 3,
- 126, 45, 39, 6, 35, 34, 5, 7, 37, 36, 140, 145, 147, 146, 153, 148, 156, 155, 159, 157, 160, 59, 162,
- 68, 3, 54, 54, 54, 54, 126, 3, 54, 54, 174, 127, 60, 3, 66, 67, 54, 6, 198, 158, 174, 127, 66, 67, 166,
- 165, 124, 3, 123, 125, 117, 119, 3, 60, 91, 98, 35, 34, 100, 99, 5, 90, 89, 64, 54, 86, 87, 7, 93, 92,
- 95, 94, 96, 112, 111, 110, 109, 108, 107, 106, 105, 104, 103, 70, 102, 101, 198, 158, 198, 198, 198,
- 198, 166, 227, 127, 127, 127, 255, 256, 236, 257, 235, 258, 56, 287, 259, 10, 126, 60, 60, 127, 124,
- 152, 127, 60, 3, 223, 222, 135, 125, 124, 10, 126, 60, 314, 3, 197, 4, 198, 55, 126, 55, 227, 158, 146,
- 146, 145, 145, 145, 148, 148, 148, 148, 147, 147, 155, 153, 153, 157, 156, 159, 158, 160, 64, 64, 64,
- 64, 197, 276, 271, 127, 249, 3, 167, 148, 175, 169, 183, 177, 184, 185, 274, 271, 220, 126, 176, 164,
- 327, 288, 322, 288, 126, 189, 166, 271, 220, 226, 162, 231, 127, 3, 126, 166, 216, 3, 315, 174, 150,
- 278, 197, 126, 189, 166, 71, 3, 3, 3, 3, 125, 124, 255, 256, 257, 258, 336, 259, 10, 167, 90, 89, 54, 7,
- 93, 92, 95, 94, 96, 112, 111, 110, 109, 108, 107, 106, 105, 104, 103, 70, 102, 101, 68, 166, 7, 5, 127,
- 166, 243, 125, 124, 126, 123, 164, 126, 166, 55, 240, 241, 149, 242, 127, 166, 55, 198, 127, 127, 4,
- 228, 6, 55, 158, 158, 158, 158, 3, 3, 126, 64, 148, 148, 148, 169, 167, 167, 177, 175, 183, 158, 184,
- 176, 176, 326, 126, 170, 237, 61, 55, 215, 63, 172, 329, 125, 124, 244, 244, 189, 164, 127, 189, 197,
- 152, 70, 231, 211, 200, 195, 126, 3, 127, 68, 240, 197, 152, 280, 283, 60, 190, 4, 123, 125, 227, 227,
- 166, 148, 71, 5, 127, 166, 262, 239, 54, 55, 292, 294, 127, 3, 195, 244, 244, 127, 127, 197, 127, 290,
- 123, 291, 127, 70, 70, 3, 189, 166, 211, 127, 220, 152, 125, 127, 3, 60, 158, 4, 197, 176, 173, 197,
- 164, 262, 64, 54, 126, 74, 127, 220, 328, 71, 303, 211, 124, 126, 127, 127, 127, 71, 290, 289, 70, 68,
- 229, 127, 127, 280, 227, 226, 127, 128, 127, 164, 27, 55, 172, 65, 61, 63, 127, 189, 127, 295, 71, 68,
- 71, 70, 166, 220, 331, 237, 22, 126, 289, 127, 240, 229, 252, 254, 127, 38, 127, 3, 123, 61, 309, 55,
- 10, 53, 128, 295, 164, 307, 126, 308, 68, 126, 22, 332, 189, 59, 152, 127, 252, 127, 164, 286, 265, 293,
- 38, 70, 126, 68, 64, 54, 243, 243, 296, 127, 68, 189, 3, 189, 126, 126, 3, 127, 127, 3, 70, 68, 152,
- 126, 189, 127, 70, 70, 127, 318, 79, 77, 1, 158, 9, 85, 83, 81, 80, 75, 82, 84, 78, 76, 61, 74, 227,
- 189, 189, 338, 229, 252, 150, 164, 270, 189, 239, 309, 297, 113, 9, 71, 226, 71, 3, 3, 3, 204, 3, 123,
- 158, 123, 188, 68, 127, 127, 164, 239, 64, 3, 71, 238, 174, 238, 320, 149, 75, 238, 127, 127, 53, 97,
- 337, 174, 152, 211, 152, 319, 127, 3, 152, 297, 325, 243, 152, 152, 127, 70, 204, 161, 286, 158, 203,
- 68, 70, 121, 317, 152, 203, 9, 152 };
- }
-
- public final static char inSymb[] = InSymb.inSymb;
-
- @Override
- public final int inSymb(int index) {
- return inSymb[index];
- }
-
- public interface Name {
- public final static String name[] = { "", "[", "(", ".", ".*", "->", "->*", "++", "--", "&", "*", "+", "-", "~",
- "!", "/", "%", ">>", "<<", "<", ">", "<=", ">=", "==", "!=", "^", "|", "&&", "||", "?", ":", "::",
- "...", "=", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", ",", "$empty", "asm", "auto",
- "bool", "break", "case", "catch", "char", "class", "const", "const_cast", "continue", "default",
- "delete", "do", "double", "dynamic_cast", "else", "enum", "explicit", "export", "extern", "false",
- "float", "for", "friend", "goto", "if", "inline", "int", "long", "mutable", "namespace", "new",
- "operator", "private", "protected", "public", "register", "reinterpret_cast", "return", "short",
- "signed", "sizeof", "static", "static_cast", "struct", "switch", "template", "this", "throw", "try",
- "true", "typedef", "typeid", "typename", "union", "unsigned", "using", "virtual", "void", "volatile",
- "wchar_t", "while", "integer", "floating", "charconst", "stringlit", "identifier", "Completion",
- "EndOfCompletion", "Invalid", "RightBracket", "RightParen", "RightBrace", "SemiColon", "LeftBrace",
- "ERROR_TOKEN", "EOF_TOKEN", "expression_parser_start", "]", ")", "}", ";", "{", "identifier_token",
- "expression", "id_expression", "qualified_or_unqualified_name", "unqualified_id_name",
- "identifier_name", "template_id_name", "nested_name_specifier", "class_or_namespace_name",
- "nested_name_specifier_with_tem" + "plate", "class_or_namespace_name_with_t" + "emplate", "class_name",
- "postfix_expression", "simple_type_specifier", "pseudo_destructor_name", "type_id", "type_name",
- "destructor_type_name", "unary_expression", "cast_expression", "new_type_id", "expression_list",
- "type_specifier_seq", "new_declarator", "new_pointer_operators", "ptr_operator",
- "new_array_expressions", "constant_expression", "pm_expression", "multiplicative_expression",
- "additive_expression", "shift_expression", "relational_expression", "equality_expression",
- "and_expression", "exclusive_or_expression", "inclusive_or_expression", "logical_and_expression",
- "logical_or_expression", "assignment_expression", "relational_expression_inTempla" + "te",
- "equality_expression_inTemplate", "and_expression_inTemplate",
- "exclusive_or_expression_inTemp" + "late", "inclusive_or_expression_inTemp" + "late",
- "logical_and_expression_inTempl" + "ate", "logical_or_expression_inTempla" + "te",
- "assignment_expression_inTempla" + "te", "expression_list_actual", "statement", "compound_statement",
- "statement_seq", "condition", "declarator", "for_init_statement", "function_definition", "declaration",
- "declaration_seq", "declaration_specifiers", "simple_declaration_specifiers",
- "class_declaration_specifiers", "elaborated_declaration_specifi" + "ers", "enum_declaration_specifiers",
- "type_name_declaration_specifie" + "rs", "no_type_declaration_specifier", "cv_qualifier",
- "no_type_declaration_specifiers", "class_specifier", "elaborated_type_specifier", "enum_specifier",
- "type_name_specifier", "class_keyword", "enumerator_list", "enumerator_definition", "namespace_name",
- "init_declarator_list", "init_declarator_complete", "complete_declarator", "initializer",
- "direct_declarator", "ptr_operator_seq", "function_declarator", "basic_direct_declarator",
- "array_direct_declarator", "array_modifier", "abstract_declarator", "direct_abstract_declarator",
- "basic_direct_abstract_declarat" + "or", "array_direct_abstract_declarat" + "or",
- "parameter_declaration_list", "parameter_declaration", "parameter_init_declarator",
- "parameter_initializer", "function_body", "handler_seq", "initializer_clause", "initializer_seq",
- "class_head", "access_specifier_keyword", "member_declaration", "member_declarator_list",
- "member_declaration_list", "member_declarator_complete", "constant_initializer", "bit_field_declarator",
- "base_specifier_list", "base_specifier", "conversion_function_id", "conversion_type_id",
- "conversion_declarator", "mem_initializer_list", "mem_initializer", "mem_initializer_name",
- "operator_id_name", "overloadable_operator", "template_parameter_list", "template_parameter",
- "template_argument_list", "template_argument", "type_name_specifier_inTemplate",
- "type_name_declaration_specifie" + "rs_inTemplate", "type_specifier_seq_inTemplate", "handler",
- "exception_declaration", "type_id_list" };
- }
-
- public final static String name[] = Name.name;
-
- @Override
- public final String name(int index) {
- return name[index];
- }
-
- public final static int ERROR_SYMBOL = 62, SCOPE_UBOUND = 121, SCOPE_SIZE = 122, MAX_NAME_LENGTH = 43;
-
- @Override
- public final int getErrorSymbol() {
- return ERROR_SYMBOL;
- }
-
- @Override
- public final int getScopeUbound() {
- return SCOPE_UBOUND;
- }
-
- @Override
- public final int getScopeSize() {
- return SCOPE_SIZE;
- }
-
- @Override
- public final int getMaxNameLength() {
- return MAX_NAME_LENGTH;
- }
-
- public final static int NUM_STATES = 604, NT_OFFSET = 122, LA_STATE_OFFSET = 7461, MAX_LA = 2147483647,
- NUM_RULES = 599, NUM_NONTERMINALS = 225, NUM_SYMBOLS = 347, SEGMENT_SIZE = 8192, START_STATE = 3365,
- IDENTIFIER_SYMBOL = 0, EOFT_SYMBOL = 120, EOLT_SYMBOL = 120, ACCEPT_ACTION = 6422, ERROR_ACTION = 6862;
-
- public final static boolean BACKTRACK = true;
-
- @Override
- public final int getNumStates() {
- return NUM_STATES;
- }
-
- @Override
- public final int getNtOffset() {
- return NT_OFFSET;
- }
-
- @Override
- public final int getLaStateOffset() {
- return LA_STATE_OFFSET;
- }
-
- @Override
- public final int getMaxLa() {
- return MAX_LA;
- }
-
- @Override
- public final int getNumRules() {
- return NUM_RULES;
- }
-
- @Override
- public final int getNumNonterminals() {
- return NUM_NONTERMINALS;
- }
-
- @Override
- public final int getNumSymbols() {
- return NUM_SYMBOLS;
- }
-
- @Override
- public final int getSegmentSize() {
- return SEGMENT_SIZE;
- }
-
- @Override
- public final int getStartState() {
- return START_STATE;
- }
-
- @Override
- public final int getStartSymbol() {
- return lhs[0];
- }
-
- public final int getIdentifierSymbol() {
- return IDENTIFIER_SYMBOL;
- }
-
- @Override
- public final int getEoftSymbol() {
- return EOFT_SYMBOL;
- }
-
- @Override
- public final int getEoltSymbol() {
- return EOLT_SYMBOL;
- }
-
- @Override
- public final int getAcceptAction() {
- return ACCEPT_ACTION;
- }
-
- @Override
- public final int getErrorAction() {
- return ERROR_ACTION;
- }
-
- @Override
- public final boolean isValidForParser() {
- return isValidForParser;
- }
-
- @Override
- public final boolean getBacktrack() {
- return BACKTRACK;
- }
-
- @Override
- public final int originalState(int state) {
- return -baseCheck[state];
- }
-
- @Override
- public final int asi(int state) {
- return asb[originalState(state)];
- }
-
- @Override
- public final int nasi(int state) {
- return nasb[originalState(state)];
- }
-
- @Override
- public final int inSymbol(int state) {
- return inSymb[originalState(state)];
- }
-
- @Override
- public final int ntAction(int state, int sym) {
- return baseAction[state + sym];
- }
-
- @Override
- public final int tAction(int state, int sym) {
- int i = baseAction[state], k = i + sym;
- return termAction[termCheck[k] == sym ? k : i];
- }
-
- @Override
- public final int lookAhead(int la_state, int sym) {
- int k = la_state + sym;
- return termAction[termCheck[k] == sym ? k : la_state];
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPExpressionParsersym.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPExpressionParsersym.java
deleted file mode 100644
index 2346aa34461..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPExpressionParsersym.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2010 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.dom.lrparser.cpp;
-
-public interface CPPExpressionParsersym {
- public final static int TK_asm = 65, TK_auto = 25, TK_bool = 11, TK_break = 76, TK_case = 77, TK_catch = 113,
- TK_char = 12, TK_class = 53, TK_const = 23, TK_const_cast = 41, TK_continue = 78, TK_default = 79,
- TK_delete = 66, TK_do = 80, TK_double = 13, TK_dynamic_cast = 42, TK_else = 121, TK_enum = 56,
- TK_explicit = 26, TK_export = 88, TK_extern = 27, TK_false = 43, TK_float = 14, TK_for = 81, TK_friend = 28,
- TK_goto = 82, TK_if = 83, TK_inline = 29, TK_int = 15, TK_long = 16, TK_mutable = 30, TK_namespace = 61,
- TK_new = 67, TK_operator = 8, TK_private = 114, TK_protected = 115, TK_public = 116, TK_register = 31,
- TK_reinterpret_cast = 44, TK_return = 84, TK_short = 17, TK_signed = 18, TK_sizeof = 45, TK_static = 32,
- TK_static_cast = 46, TK_struct = 57, TK_switch = 85, TK_template = 55, TK_this = 47, TK_throw = 59,
- TK_try = 74, TK_true = 48, TK_typedef = 33, TK_typeid = 49, TK_typename = 10, TK_union = 58,
- TK_unsigned = 19, TK_using = 63, TK_virtual = 22, TK_void = 20, TK_volatile = 24, TK_wchar_t = 21,
- TK_while = 75, TK_integer = 50, TK_floating = 51, TK_charconst = 52, TK_stringlit = 38, TK_identifier = 1,
- TK_Completion = 2, TK_EndOfCompletion = 9, TK_Invalid = 122, TK_LeftBracket = 60, TK_LeftParen = 3,
- TK_Dot = 119, TK_DotStar = 98, TK_Arrow = 117, TK_ArrowStar = 91, TK_PlusPlus = 36, TK_MinusMinus = 37,
- TK_And = 7, TK_Star = 5, TK_Plus = 34, TK_Minus = 35, TK_Tilde = 6, TK_Bang = 39, TK_Slash = 99,
- TK_Percent = 100, TK_RightShift = 86, TK_LeftShift = 87, TK_LT = 54, TK_GT = 64, TK_LE = 89, TK_GE = 90,
- TK_EQ = 92, TK_NE = 93, TK_Caret = 94, TK_Or = 95, TK_AndAnd = 96, TK_OrOr = 101, TK_Question = 102,
- TK_Colon = 71, TK_ColonColon = 4, TK_DotDotDot = 97, TK_Assign = 70, TK_StarAssign = 103,
- TK_SlashAssign = 104, TK_PercentAssign = 105, TK_PlusAssign = 106, TK_MinusAssign = 107,
- TK_RightShiftAssign = 108, TK_LeftShiftAssign = 109, TK_AndAssign = 110, TK_CaretAssign = 111,
- TK_OrAssign = 112, TK_Comma = 68, TK_RightBracket = 118, TK_RightParen = 72, TK_RightBrace = 73,
- TK_SemiColon = 40, TK_LeftBrace = 69, TK_ERROR_TOKEN = 62, TK_EOF_TOKEN = 120;
-
- public final static String orderedTerminalSymbols[] = { "", "identifier", "Completion", "LeftParen", "ColonColon",
- "Star", "Tilde", "And", "operator", "EndOfCompletion", "typename", "bool", "char", "double", "float", "int",
- "long", "short", "signed", "unsigned", "void", "wchar_t", "virtual", "const", "volatile", "auto",
- "explicit", "extern", "friend", "inline", "mutable", "register", "static", "typedef", "Plus", "Minus",
- "PlusPlus", "MinusMinus", "stringlit", "Bang", "SemiColon", "const_cast", "dynamic_cast", "false",
- "reinterpret_cast", "sizeof", "static_cast", "this", "true", "typeid", "integer", "floating", "charconst",
- "class", "LT", "template", "enum", "struct", "union", "throw", "LeftBracket", "namespace", "ERROR_TOKEN",
- "using", "GT", "asm", "delete", "new", "Comma", "LeftBrace", "Assign", "Colon", "RightParen", "RightBrace",
- "try", "while", "break", "case", "continue", "default", "do", "for", "goto", "if", "return", "switch",
- "RightShift", "LeftShift", "export", "LE", "GE", "ArrowStar", "EQ", "NE", "Caret", "Or", "AndAnd",
- "DotDotDot", "DotStar", "Slash", "Percent", "OrOr", "Question", "StarAssign", "SlashAssign",
- "PercentAssign", "PlusAssign", "MinusAssign", "RightShiftAssign", "LeftShiftAssign", "AndAssign",
- "CaretAssign", "OrAssign", "catch", "private", "protected", "public", "Arrow", "RightBracket", "Dot",
- "EOF_TOKEN", "else", "Invalid" };
-
- public final static boolean isValidForParser = true;
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoCastExpressionParser.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoCastExpressionParser.java
deleted file mode 100644
index 2e64b13e11d..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoCastExpressionParser.java
+++ /dev/null
@@ -1,2859 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2015 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.dom.lrparser.cpp;
-
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.cdt.core.dom.ast.IASTCompletionNode;
-import org.eclipse.cdt.core.dom.ast.IASTExpression;
-import org.eclipse.cdt.core.dom.ast.IASTUnaryExpression;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTBinaryExpression;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCastExpression;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTLiteralExpression;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTypeIdExpression;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTUnaryExpression;
-import org.eclipse.cdt.core.dom.lrparser.CPreprocessorAdapter;
-import org.eclipse.cdt.core.dom.lrparser.IDOMTokenMap;
-import org.eclipse.cdt.core.dom.lrparser.ISecondaryParser;
-import org.eclipse.cdt.core.dom.lrparser.ITokenCollector;
-import org.eclipse.cdt.core.dom.lrparser.action.ITokenMap;
-import org.eclipse.cdt.core.dom.lrparser.action.ITokenStream;
-import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack;
-import org.eclipse.cdt.core.dom.lrparser.action.TokenMap;
-import org.eclipse.cdt.core.dom.lrparser.action.cpp.CPPBuildASTParserAction;
-import org.eclipse.cdt.core.dom.lrparser.action.cpp.CPPSecondaryParserFactory;
-import org.eclipse.cdt.core.dom.lrparser.lpgextensions.FixedBacktrackingParser;
-import org.eclipse.cdt.core.dom.parser.IBuiltinBindingsProvider;
-import org.eclipse.cdt.core.index.IIndex;
-import org.eclipse.cdt.core.parser.IScanner;
-import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPNodeFactory;
-
-import lpg.lpgjavaruntime.BadParseException;
-import lpg.lpgjavaruntime.BadParseSymFileException;
-import lpg.lpgjavaruntime.DiagnoseParser;
-import lpg.lpgjavaruntime.ErrorToken;
-import lpg.lpgjavaruntime.IToken;
-import lpg.lpgjavaruntime.LexStream;
-import lpg.lpgjavaruntime.Monitor;
-import lpg.lpgjavaruntime.NotBacktrackParseTableException;
-import lpg.lpgjavaruntime.NullExportedSymbolsException;
-import lpg.lpgjavaruntime.NullTerminalSymbolsException;
-import lpg.lpgjavaruntime.ParseErrorCodes;
-import lpg.lpgjavaruntime.ParseTable;
-import lpg.lpgjavaruntime.PrsStream;
-import lpg.lpgjavaruntime.RuleAction;
-import lpg.lpgjavaruntime.Token;
-import lpg.lpgjavaruntime.UndefinedEofSymbolException;
-import lpg.lpgjavaruntime.UnimplementedTerminalsException;
-
-public class CPPNoCastExpressionParser extends PrsStream
- implements RuleAction, ITokenStream, ITokenCollector, ISecondaryParser<IASTExpression> {
- private static ParseTable prs = new CPPNoCastExpressionParserprs();
- private FixedBacktrackingParser btParser;
-
- public FixedBacktrackingParser getParser() {
- return btParser;
- }
-
- private void setResult(Object object) {
- btParser.setSym1(object);
- }
-
- public Object getRhsSym(int i) {
- return btParser.getSym(i);
- }
-
- public int getRhsTokenIndex(int i) {
- return btParser.getToken(i);
- }
-
- public IToken getRhsIToken(int i) {
- return super.getIToken(getRhsTokenIndex(i));
- }
-
- public int getRhsFirstTokenIndex(int i) {
- return btParser.getFirstToken(i);
- }
-
- public IToken getRhsFirstIToken(int i) {
- return super.getIToken(getRhsFirstTokenIndex(i));
- }
-
- public int getRhsLastTokenIndex(int i) {
- return btParser.getLastToken(i);
- }
-
- public IToken getRhsLastIToken(int i) {
- return super.getIToken(getRhsLastTokenIndex(i));
- }
-
- public int getLeftSpan() {
- return btParser.getFirstToken();
- }
-
- @Override
- public IToken getLeftIToken() {
- return super.getIToken(getLeftSpan());
- }
-
- public int getRightSpan() {
- return btParser.getLastToken();
- }
-
- @Override
- public IToken getRightIToken() {
- return super.getIToken(getRightSpan());
- }
-
- public int getRhsErrorTokenIndex(int i) {
- int index = btParser.getToken(i);
- IToken err = super.getIToken(index);
- return (err instanceof ErrorToken ? index : 0);
- }
-
- public ErrorToken getRhsErrorIToken(int i) {
- int index = btParser.getToken(i);
- IToken err = super.getIToken(index);
- return (ErrorToken) (err instanceof ErrorToken ? err : null);
- }
-
- public CPPNoCastExpressionParser(LexStream lexStream) {
- super(lexStream);
-
- try {
- super.remapTerminalSymbols(orderedTerminalSymbols(), CPPNoCastExpressionParserprs.EOFT_SYMBOL);
- } catch (NullExportedSymbolsException e) {
- } catch (NullTerminalSymbolsException e) {
- } catch (UnimplementedTerminalsException e) {
- java.util.ArrayList unimplemented_symbols = e.getSymbols();
- System.out.println("The Lexer will not scan the following token(s):");
- for (int i = 0; i < unimplemented_symbols.size(); i++) {
- Integer id = (Integer) unimplemented_symbols.get(i);
- System.out.println(" " + CPPNoCastExpressionParsersym.orderedTerminalSymbols[id.intValue()]);
- }
- System.out.println();
- } catch (UndefinedEofSymbolException e) {
- throw new Error(new UndefinedEofSymbolException("The Lexer does not implement the Eof symbol "
- + CPPNoCastExpressionParsersym.orderedTerminalSymbols[CPPNoCastExpressionParserprs.EOFT_SYMBOL]));
- }
- }
-
- @Override
- public String[] orderedTerminalSymbols() {
- return CPPNoCastExpressionParsersym.orderedTerminalSymbols;
- }
-
- public String getTokenKindName(int kind) {
- return CPPNoCastExpressionParsersym.orderedTerminalSymbols[kind];
- }
-
- public int getEOFTokenKind() {
- return CPPNoCastExpressionParserprs.EOFT_SYMBOL;
- }
-
- public PrsStream getParseStream() {
- return this;
- }
-
- //
- // Report error message for given error_token.
- //
- public final void reportErrorTokenMessage(int error_token, String msg) {
- int firsttok = super.getFirstErrorToken(error_token), lasttok = super.getLastErrorToken(error_token);
- String location = super.getFileName() + ':'
- + (firsttok > lasttok ? (super.getEndLine(lasttok) + ":" + super.getEndColumn(lasttok))
- : (super.getLine(error_token) + ":" + super.getColumn(error_token) + ":"
- + super.getEndLine(error_token) + ":" + super.getEndColumn(error_token)))
- + ": ";
- super.reportError((firsttok > lasttok ? ParseErrorCodes.INSERTION_CODE : ParseErrorCodes.SUBSTITUTION_CODE),
- location, msg);
- }
-
- public void parser() {
- parser(null, 0);
- }
-
- public void parser(Monitor monitor) {
- parser(monitor, 0);
- }
-
- public void parser(int error_repair_count) {
- parser(null, error_repair_count);
- }
-
- public void parser(Monitor monitor, int error_repair_count) {
- try {
- btParser = new FixedBacktrackingParser(monitor, this, prs, this);
- } catch (NotBacktrackParseTableException e) {
- throw new Error(new NotBacktrackParseTableException(
- "Regenerate CPPNoCastExpressionParserprs.java with -BACKTRACK option"));
- } catch (BadParseSymFileException e) {
- throw new Error(
- new BadParseSymFileException("Bad Parser Symbol File -- CPPNoCastExpressionParsersym.java"));
- }
-
- try {
- btParser.parse(error_repair_count);
- } catch (BadParseException e) {
- reset(e.error_token); // point to error token
- DiagnoseParser diagnoseParser = new DiagnoseParser(this, prs);
- diagnoseParser.diagnose(e.error_token);
- }
- }
-
- private CPPBuildASTParserAction action;
- private IASTCompletionNode compNode;
-
- public CPPNoCastExpressionParser(IScanner scanner, IDOMTokenMap tokenMap,
- IBuiltinBindingsProvider builtinBindingsProvider, IIndex index, Map<String, String> properties) {
- initActions(properties);
- action.initializeTranslationUnit(scanner, builtinBindingsProvider, index);
- CPreprocessorAdapter.runCPreprocessor(scanner, this, tokenMap);
- }
-
- private void initActions(Map<String, String> properties) {
- ScopedStack<Object> astStack = new ScopedStack<>();
-
- action = new CPPBuildASTParserAction(this, astStack, CPPNodeFactory.getDefault(),
- CPPSecondaryParserFactory.getDefault());
- action.setParserProperties(properties);
-
- }
-
- @Override
- public void addToken(IToken token) {
- token.setKind(mapKind(token.getKind())); // TODO does mapKind need to be called?
- super.addToken(token);
- }
-
- @Override
- public IASTExpression parse() {
- // this has to be done, or... kaboom!
- setStreamLength(getSize());
-
- final int errorRepairCount = -1; // -1 means full error handling
- parser(null, errorRepairCount); // do the actual parse
- super.resetTokenStream(); // allow tokens to be garbage collected
-
- compNode = action.getASTCompletionNode(); // the completion node may be null
- return (IASTExpression) action.getParseResult();
- }
-
- @Override
- public IASTCompletionNode getCompletionNode() {
- return compNode;
- }
-
- // uncomment this method to use with backtracking parser
- @Override
- public List<IToken> getRuleTokens() {
- return getTokens().subList(getLeftSpan(), getRightSpan() + 1);
- }
-
- @Override
- public String[] getOrderedTerminalSymbols() {
- return CPPNoCastExpressionParsersym.orderedTerminalSymbols;
- }
-
- @Override
- @SuppressWarnings("nls")
- public String getName() {
- return "CPPNoCastExpressionParser";
- }
-
- private ITokenMap tokenMap = null;
-
- @Override
- public void setTokens(List<IToken> tokens) {
- resetTokenStream();
- addToken(new Token(null, 0, 0, 0)); // dummy token
- for (IToken token : tokens) {
- token.setKind(tokenMap.mapKind(token.getKind()));
- addToken(token);
- }
- addToken(new Token(null, 0, 0, CPPNoCastExpressionParsersym.TK_EOF_TOKEN));
- }
-
- public CPPNoCastExpressionParser(ITokenStream stream, Map<String, String> properties) { // constructor for creating secondary parser
- initActions(properties);
- tokenMap = new TokenMap(CPPNoCastExpressionParsersym.orderedTerminalSymbols,
- stream.getOrderedTerminalSymbols());
- }
-
- public CPPNoCastExpressionParser(ITokenStream stream, IScanner scanner,
- IBuiltinBindingsProvider builtinBindingsProvider, IIndex index, Map<String, String> properties) { // constructor for creating secondary parser
- initActions(properties);
- action.initializeTranslationUnit(scanner, builtinBindingsProvider, index);
- tokenMap = new TokenMap(CPPNoCastExpressionParsersym.orderedTerminalSymbols,
- stream.getOrderedTerminalSymbols());
- }
-
- @Override
- public void ruleAction(int ruleNumber) {
- switch (ruleNumber) {
-
- //
- // Rule 1: <openscope-ast> ::= $Empty
- //
- case 1: {
- action.openASTScope();
- break;
- }
-
- //
- // Rule 2: <empty> ::= $Empty
- //
- case 2: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 13: translation_unit ::= declaration_seq_opt
- //
- case 13: {
- action.consumeTranslationUnit();
- break;
- }
-
- //
- // Rule 16: literal ::= integer
- //
- case 16: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_integer_constant);
- break;
- }
-
- //
- // Rule 17: literal ::= floating
- //
- case 17: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_float_constant);
- break;
- }
-
- //
- // Rule 18: literal ::= charconst
- //
- case 18: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_char_constant);
- break;
- }
-
- //
- // Rule 19: literal ::= stringlit
- //
- case 19: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_string_literal);
- break;
- }
-
- //
- // Rule 20: literal ::= true
- //
- case 20: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_true);
- break;
- }
-
- //
- // Rule 21: literal ::= false
- //
- case 21: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_false);
- break;
- }
-
- //
- // Rule 22: literal ::= this
- //
- case 22: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_this);
- break;
- }
-
- //
- // Rule 24: primary_expression ::= ( expression )
- //
- case 24: {
- action.consumeExpressionBracketed();
- break;
- }
-
- //
- // Rule 26: id_expression ::= qualified_or_unqualified_name
- //
- case 26: {
- action.consumeExpressionName();
- break;
- }
-
- //
- // Rule 33: unqualified_id_name ::= ~ identifier_token
- //
- case 33: {
- action.consumeDestructorName();
- break;
- }
-
- //
- // Rule 34: unqualified_id_name ::= ~ template_id_name
- //
- case 34: {
- action.consumeDestructorNameTemplateId();
- break;
- }
-
- //
- // Rule 35: identifier_name ::= identifier_token
- //
- case 35: {
- action.consumeIdentifierName();
- break;
- }
-
- //
- // Rule 36: template_opt ::= template
- //
- case 36: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 37: template_opt ::= $Empty
- //
- case 37: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 38: dcolon_opt ::= ::
- //
- case 38: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 39: dcolon_opt ::= $Empty
- //
- case 39: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 40: qualified_id_name ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name
- //
- case 40: {
- action.consumeQualifiedId(true);
- break;
- }
-
- //
- // Rule 41: qualified_id_name ::= :: unqualified_id_name
- //
- case 41: {
- action.consumeGlobalQualifiedId();
- break;
- }
-
- //
- // Rule 42: nested_name_specifier ::= class_or_namespace_name :: nested_name_specifier_with_template
- //
- case 42: {
- action.consumeNestedNameSpecifier(true);
- break;
- }
-
- //
- // Rule 43: nested_name_specifier ::= class_or_namespace_name ::
- //
- case 43: {
- action.consumeNestedNameSpecifier(false);
- break;
- }
-
- //
- // Rule 44: nested_name_specifier_with_template ::= class_or_namespace_name_with_template :: nested_name_specifier_with_template
- //
- case 44: {
- action.consumeNestedNameSpecifier(true);
- break;
- }
-
- //
- // Rule 45: nested_name_specifier_with_template ::= class_or_namespace_name_with_template ::
- //
- case 45: {
- action.consumeNestedNameSpecifier(false);
- break;
- }
-
- //
- // Rule 46: class_or_namespace_name_with_template ::= template_opt class_or_namespace_name
- //
- case 46: {
- action.consumeNameWithTemplateKeyword();
- break;
- }
-
- //
- // Rule 48: nested_name_specifier_opt ::= $Empty
- //
- case 48: {
- action.consumeNestedNameSpecifierEmpty();
- break;
- }
-
- //
- // Rule 51: postfix_expression ::= postfix_expression [ expression ]
- //
- case 51: {
- action.consumeExpressionArraySubscript();
- break;
- }
-
- //
- // Rule 52: postfix_expression ::= postfix_expression ( expression_list_opt )
- //
- case 52: {
- action.consumeExpressionFunctionCall();
- break;
- }
-
- //
- // Rule 53: postfix_expression ::= simple_type_specifier ( expression_list_opt )
- //
- case 53: {
- action.consumeExpressionSimpleTypeConstructor();
- break;
- }
-
- //
- // Rule 54: postfix_expression ::= typename dcolon_opt nested_name_specifier <empty> identifier_name ( expression_list_opt )
- //
- case 54: {
- action.consumeExpressionTypeName();
- break;
- }
-
- //
- // Rule 55: postfix_expression ::= typename dcolon_opt nested_name_specifier template_opt template_id_name ( expression_list_opt )
- //
- case 55: {
- action.consumeExpressionTypeName();
- break;
- }
-
- //
- // Rule 56: postfix_expression ::= postfix_expression . qualified_or_unqualified_name
- //
- case 56: {
- action.consumeExpressionFieldReference(false, false);
- break;
- }
-
- //
- // Rule 57: postfix_expression ::= postfix_expression -> qualified_or_unqualified_name
- //
- case 57: {
- action.consumeExpressionFieldReference(true, false);
- break;
- }
-
- //
- // Rule 58: postfix_expression ::= postfix_expression . template qualified_or_unqualified_name
- //
- case 58: {
- action.consumeExpressionFieldReference(false, true);
- break;
- }
-
- //
- // Rule 59: postfix_expression ::= postfix_expression -> template qualified_or_unqualified_name
- //
- case 59: {
- action.consumeExpressionFieldReference(true, true);
- break;
- }
-
- //
- // Rule 60: postfix_expression ::= postfix_expression . pseudo_destructor_name
- //
- case 60: {
- action.consumeExpressionFieldReference(false, false);
- break;
- }
-
- //
- // Rule 61: postfix_expression ::= postfix_expression -> pseudo_destructor_name
- //
- case 61: {
- action.consumeExpressionFieldReference(true, false);
- break;
- }
-
- //
- // Rule 62: postfix_expression ::= postfix_expression ++
- //
- case 62: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixIncr);
- break;
- }
-
- //
- // Rule 63: postfix_expression ::= postfix_expression --
- //
- case 63: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixDecr);
- break;
- }
-
- //
- // Rule 64: postfix_expression ::= dynamic_cast < type_id > ( expression )
- //
- case 64: {
- action.consumeExpressionCast(ICPPASTCastExpression.op_dynamic_cast);
- break;
- }
-
- //
- // Rule 65: postfix_expression ::= static_cast < type_id > ( expression )
- //
- case 65: {
- action.consumeExpressionCast(ICPPASTCastExpression.op_static_cast);
- break;
- }
-
- //
- // Rule 66: postfix_expression ::= reinterpret_cast < type_id > ( expression )
- //
- case 66: {
- action.consumeExpressionCast(ICPPASTCastExpression.op_reinterpret_cast);
- break;
- }
-
- //
- // Rule 67: postfix_expression ::= const_cast < type_id > ( expression )
- //
- case 67: {
- action.consumeExpressionCast(ICPPASTCastExpression.op_const_cast);
- break;
- }
-
- //
- // Rule 68: postfix_expression ::= typeid ( expression )
- //
- case 68: {
- action.consumeExpressionUnaryOperator(ICPPASTUnaryExpression.op_typeid);
- break;
- }
-
- //
- // Rule 69: postfix_expression ::= typeid ( type_id )
- //
- case 69: {
- action.consumeExpressionTypeId(ICPPASTTypeIdExpression.op_typeid);
- break;
- }
-
- //
- // Rule 70: pseudo_destructor_name ::= dcolon_opt nested_name_specifier_opt type_name :: destructor_type_name
- //
- case 70: {
- action.consumePsudoDestructorName(true);
- break;
- }
-
- //
- // Rule 71: pseudo_destructor_name ::= dcolon_opt nested_name_specifier template template_id_name :: destructor_type_name
- //
- case 71: {
- action.consumePsudoDestructorName(true);
- break;
- }
-
- //
- // Rule 72: pseudo_destructor_name ::= dcolon_opt nested_name_specifier_opt destructor_type_name
- //
- case 72: {
- action.consumePsudoDestructorName(false);
- break;
- }
-
- //
- // Rule 73: destructor_type_name ::= ~ identifier_token
- //
- case 73: {
- action.consumeDestructorName();
- break;
- }
-
- //
- // Rule 74: destructor_type_name ::= ~ template_id_name
- //
- case 74: {
- action.consumeDestructorNameTemplateId();
- break;
- }
-
- //
- // Rule 78: unary_expression ::= ++ cast_expression
- //
- case 78: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixIncr);
- break;
- }
-
- //
- // Rule 79: unary_expression ::= -- cast_expression
- //
- case 79: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixDecr);
- break;
- }
-
- //
- // Rule 80: unary_expression ::= & cast_expression
- //
- case 80: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_amper);
- break;
- }
-
- //
- // Rule 81: unary_expression ::= * cast_expression
- //
- case 81: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_star);
- break;
- }
-
- //
- // Rule 82: unary_expression ::= + cast_expression
- //
- case 82: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_plus);
- break;
- }
-
- //
- // Rule 83: unary_expression ::= - cast_expression
- //
- case 83: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_minus);
- break;
- }
-
- //
- // Rule 84: unary_expression ::= ~ cast_expression
- //
- case 84: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_tilde);
- break;
- }
-
- //
- // Rule 85: unary_expression ::= ! cast_expression
- //
- case 85: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_not);
- break;
- }
-
- //
- // Rule 86: unary_expression ::= sizeof unary_expression
- //
- case 86: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_sizeof);
- break;
- }
-
- //
- // Rule 87: unary_expression ::= sizeof ( type_id )
- //
- case 87: {
- action.consumeExpressionTypeId(ICPPASTTypeIdExpression.op_sizeof);
- break;
- }
-
- //
- // Rule 88: new_expression ::= dcolon_opt new new_placement_opt new_type_id <openscope-ast> new_array_expressions_opt new_initializer_opt
- //
- case 88: {
- action.consumeExpressionNew(true);
- break;
- }
-
- //
- // Rule 89: new_expression ::= dcolon_opt new new_placement_opt ( type_id ) <openscope-ast> new_array_expressions_opt new_initializer_opt
- //
- case 89: {
- action.consumeExpressionNew(false);
- break;
- }
-
- //
- // Rule 91: new_placement_opt ::= $Empty
- //
- case 91: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 92: new_type_id ::= type_specifier_seq
- //
- case 92: {
- action.consumeTypeId(false);
- break;
- }
-
- //
- // Rule 93: new_type_id ::= type_specifier_seq new_declarator
- //
- case 93: {
- action.consumeTypeId(true);
- break;
- }
-
- //
- // Rule 94: new_declarator ::= <openscope-ast> new_pointer_operators
- //
- case 94: {
- action.consumeNewDeclarator();
- break;
- }
-
- //
- // Rule 101: new_initializer ::= ( expression_list_opt )
- //
- case 101: {
- action.consumeNewInitializer();
- break;
- }
-
- //
- // Rule 103: new_initializer_opt ::= $Empty
- //
- case 103: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 104: delete_expression ::= dcolon_opt delete cast_expression
- //
- case 104: {
- action.consumeExpressionDelete(false);
- break;
- }
-
- //
- // Rule 105: delete_expression ::= dcolon_opt delete [ ] cast_expression
- //
- case 105: {
- action.consumeExpressionDelete(true);
- break;
- }
-
- //
- // Rule 108: pm_expression ::= pm_expression .* cast_expression
- //
- case 108: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_pmdot);
- break;
- }
-
- //
- // Rule 109: pm_expression ::= pm_expression ->* cast_expression
- //
- case 109: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_pmarrow);
- break;
- }
-
- //
- // Rule 111: multiplicative_expression ::= multiplicative_expression * pm_expression
- //
- case 111: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_multiply);
- break;
- }
-
- //
- // Rule 112: multiplicative_expression ::= multiplicative_expression / pm_expression
- //
- case 112: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_divide);
- break;
- }
-
- //
- // Rule 113: multiplicative_expression ::= multiplicative_expression % pm_expression
- //
- case 113: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_modulo);
- break;
- }
-
- //
- // Rule 115: additive_expression ::= additive_expression + multiplicative_expression
- //
- case 115: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_plus);
- break;
- }
-
- //
- // Rule 116: additive_expression ::= additive_expression - multiplicative_expression
- //
- case 116: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_minus);
- break;
- }
-
- //
- // Rule 118: shift_expression ::= shift_expression << additive_expression
- //
- case 118: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftLeft);
- break;
- }
-
- //
- // Rule 119: shift_expression ::= shift_expression >> additive_expression
- //
- case 119: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftRight);
- break;
- }
-
- //
- // Rule 121: relational_expression ::= relational_expression < shift_expression
- //
- case 121: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessThan);
- break;
- }
-
- //
- // Rule 122: relational_expression ::= relational_expression > shift_expression
- //
- case 122: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterThan);
- break;
- }
-
- //
- // Rule 123: relational_expression ::= relational_expression <= shift_expression
- //
- case 123: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessEqual);
- break;
- }
-
- //
- // Rule 124: relational_expression ::= relational_expression >= shift_expression
- //
- case 124: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterEqual);
- break;
- }
-
- //
- // Rule 126: equality_expression ::= equality_expression == relational_expression
- //
- case 126: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_equals);
- break;
- }
-
- //
- // Rule 127: equality_expression ::= equality_expression != relational_expression
- //
- case 127: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_notequals);
- break;
- }
-
- //
- // Rule 129: and_expression ::= and_expression & equality_expression
- //
- case 129: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAnd);
- break;
- }
-
- //
- // Rule 131: exclusive_or_expression ::= exclusive_or_expression ^ and_expression
- //
- case 131: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXor);
- break;
- }
-
- //
- // Rule 133: inclusive_or_expression ::= inclusive_or_expression | exclusive_or_expression
- //
- case 133: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOr);
- break;
- }
-
- //
- // Rule 135: logical_and_expression ::= logical_and_expression && inclusive_or_expression
- //
- case 135: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalAnd);
- break;
- }
-
- //
- // Rule 137: logical_or_expression ::= logical_or_expression || logical_and_expression
- //
- case 137: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalOr);
- break;
- }
-
- //
- // Rule 139: conditional_expression ::= logical_or_expression ? expression : assignment_expression
- //
- case 139: {
- action.consumeExpressionConditional();
- break;
- }
-
- //
- // Rule 141: relational_expression_inTemplate ::= relational_expression_inTemplate < shift_expression
- //
- case 141: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessThan);
- break;
- }
-
- //
- // Rule 142: relational_expression_inTemplate ::= ( relational_expression_inTemplate > shift_expression )
- //
- case 142: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterThan);
- break;
- }
-
- //
- // Rule 143: relational_expression_inTemplate ::= relational_expression_inTemplate <= shift_expression
- //
- case 143: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessEqual);
- break;
- }
-
- //
- // Rule 144: relational_expression_inTemplate ::= relational_expression_inTemplate >= shift_expression
- //
- case 144: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterEqual);
- break;
- }
-
- //
- // Rule 146: equality_expression_inTemplate ::= equality_expression_inTemplate == relational_expression_inTemplate
- //
- case 146: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_equals);
- break;
- }
-
- //
- // Rule 147: equality_expression_inTemplate ::= equality_expression_inTemplate != relational_expression_inTemplate
- //
- case 147: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_notequals);
- break;
- }
-
- //
- // Rule 149: and_expression_inTemplate ::= and_expression_inTemplate & equality_expression_inTemplate
- //
- case 149: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAnd);
- break;
- }
-
- //
- // Rule 151: exclusive_or_expression_inTemplate ::= exclusive_or_expression_inTemplate ^ and_expression_inTemplate
- //
- case 151: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXor);
- break;
- }
-
- //
- // Rule 153: inclusive_or_expression_inTemplate ::= inclusive_or_expression_inTemplate | exclusive_or_expression_inTemplate
- //
- case 153: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOr);
- break;
- }
-
- //
- // Rule 155: logical_and_expression_inTemplate ::= logical_and_expression_inTemplate && inclusive_or_expression_inTemplate
- //
- case 155: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalAnd);
- break;
- }
-
- //
- // Rule 157: logical_or_expression_inTemplate ::= logical_or_expression_inTemplate || logical_and_expression_inTemplate
- //
- case 157: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalOr);
- break;
- }
-
- //
- // Rule 159: conditional_expression_inTemplate ::= logical_or_expression_inTemplate ? expression : assignment_expression_inTemplate
- //
- case 159: {
- action.consumeExpressionConditional();
- break;
- }
-
- //
- // Rule 162: assignment_expression_inTemplate ::= logical_or_expression_inTemplate = assignment_expression_inTemplate
- //
- case 162: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_assign);
- break;
- }
-
- //
- // Rule 163: assignment_expression_inTemplate ::= logical_or_expression_inTemplate *= assignment_expression_inTemplate
- //
- case 163: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_multiplyAssign);
- break;
- }
-
- //
- // Rule 164: assignment_expression_inTemplate ::= logical_or_expression_inTemplate /= assignment_expression_inTemplate
- //
- case 164: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_divideAssign);
- break;
- }
-
- //
- // Rule 165: assignment_expression_inTemplate ::= logical_or_expression_inTemplate %= assignment_expression_inTemplate
- //
- case 165: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_moduloAssign);
- break;
- }
-
- //
- // Rule 166: assignment_expression_inTemplate ::= logical_or_expression_inTemplate += assignment_expression_inTemplate
- //
- case 166: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_plusAssign);
- break;
- }
-
- //
- // Rule 167: assignment_expression_inTemplate ::= logical_or_expression_inTemplate -= assignment_expression_inTemplate
- //
- case 167: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_minusAssign);
- break;
- }
-
- //
- // Rule 168: assignment_expression_inTemplate ::= logical_or_expression_inTemplate >>= assignment_expression_inTemplate
- //
- case 168: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftRightAssign);
- break;
- }
-
- //
- // Rule 169: assignment_expression_inTemplate ::= logical_or_expression_inTemplate <<= assignment_expression_inTemplate
- //
- case 169: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftLeftAssign);
- break;
- }
-
- //
- // Rule 170: assignment_expression_inTemplate ::= logical_or_expression_inTemplate &= assignment_expression_inTemplate
- //
- case 170: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAndAssign);
- break;
- }
-
- //
- // Rule 171: assignment_expression_inTemplate ::= logical_or_expression_inTemplate ^= assignment_expression_inTemplate
- //
- case 171: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXorAssign);
- break;
- }
-
- //
- // Rule 172: assignment_expression_inTemplate ::= logical_or_expression_inTemplate |= assignment_expression_inTemplate
- //
- case 172: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOrAssign);
- break;
- }
-
- //
- // Rule 173: throw_expression ::= throw
- //
- case 173: {
- action.consumeExpressionThrow(false);
- break;
- }
-
- //
- // Rule 174: throw_expression ::= throw assignment_expression
- //
- case 174: {
- action.consumeExpressionThrow(true);
- break;
- }
-
- //
- // Rule 177: assignment_expression ::= logical_or_expression = assignment_expression
- //
- case 177: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_assign);
- break;
- }
-
- //
- // Rule 178: assignment_expression ::= logical_or_expression *= assignment_expression
- //
- case 178: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_multiplyAssign);
- break;
- }
-
- //
- // Rule 179: assignment_expression ::= logical_or_expression /= assignment_expression
- //
- case 179: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_divideAssign);
- break;
- }
-
- //
- // Rule 180: assignment_expression ::= logical_or_expression %= assignment_expression
- //
- case 180: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_moduloAssign);
- break;
- }
-
- //
- // Rule 181: assignment_expression ::= logical_or_expression += assignment_expression
- //
- case 181: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_plusAssign);
- break;
- }
-
- //
- // Rule 182: assignment_expression ::= logical_or_expression -= assignment_expression
- //
- case 182: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_minusAssign);
- break;
- }
-
- //
- // Rule 183: assignment_expression ::= logical_or_expression >>= assignment_expression
- //
- case 183: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftRightAssign);
- break;
- }
-
- //
- // Rule 184: assignment_expression ::= logical_or_expression <<= assignment_expression
- //
- case 184: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftLeftAssign);
- break;
- }
-
- //
- // Rule 185: assignment_expression ::= logical_or_expression &= assignment_expression
- //
- case 185: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAndAssign);
- break;
- }
-
- //
- // Rule 186: assignment_expression ::= logical_or_expression ^= assignment_expression
- //
- case 186: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXorAssign);
- break;
- }
-
- //
- // Rule 187: assignment_expression ::= logical_or_expression |= assignment_expression
- //
- case 187: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOrAssign);
- break;
- }
-
- //
- // Rule 189: expression_list ::= <openscope-ast> expression_list_actual
- //
- case 189: {
- action.consumeExpressionList();
- break;
- }
-
- //
- // Rule 193: expression_list_opt ::= $Empty
- //
- case 193: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 195: expression_opt ::= $Empty
- //
- case 195: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 198: constant_expression_opt ::= $Empty
- //
- case 198: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 207: statement ::= ERROR_TOKEN
- //
- case 207: {
- action.consumeStatementProblem();
- break;
- }
-
- //
- // Rule 208: labeled_statement ::= identifier : statement
- //
- case 208: {
- action.consumeStatementLabeled();
- break;
- }
-
- //
- // Rule 209: labeled_statement ::= case constant_expression : statement
- //
- case 209: {
- action.consumeStatementCase();
- break;
- }
-
- //
- // Rule 210: labeled_statement ::= default : statement
- //
- case 210: {
- action.consumeStatementDefault();
- break;
- }
-
- //
- // Rule 211: expression_statement ::= expression ;
- //
- case 211: {
- action.consumeStatementExpression();
- break;
- }
-
- //
- // Rule 212: expression_statement ::= ;
- //
- case 212: {
- action.consumeStatementNull();
- break;
- }
-
- //
- // Rule 213: compound_statement ::= { <openscope-ast> statement_seq }
- //
- case 213: {
- action.consumeStatementCompoundStatement(true);
- break;
- }
-
- //
- // Rule 214: compound_statement ::= { }
- //
- case 214: {
- action.consumeStatementCompoundStatement(false);
- break;
- }
-
- //
- // Rule 217: selection_statement ::= if ( condition ) statement
- //
- case 217: {
- action.consumeStatementIf(false);
- break;
- }
-
- //
- // Rule 218: selection_statement ::= if ( condition ) statement else statement
- //
- case 218: {
- action.consumeStatementIf(true);
- break;
- }
-
- //
- // Rule 219: selection_statement ::= switch ( condition ) statement
- //
- case 219: {
- action.consumeStatementSwitch();
- break;
- }
-
- //
- // Rule 221: condition ::= type_specifier_seq declarator = assignment_expression
- //
- case 221: {
- action.consumeConditionDeclaration();
- break;
- }
-
- //
- // Rule 223: condition_opt ::= $Empty
- //
- case 223: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 224: iteration_statement ::= while ( condition ) statement
- //
- case 224: {
- action.consumeStatementWhileLoop();
- break;
- }
-
- //
- // Rule 225: iteration_statement ::= do statement while ( expression ) ;
- //
- case 225: {
- action.consumeStatementDoLoop(true);
- break;
- }
-
- //
- // Rule 226: iteration_statement ::= do statement
- //
- case 226: {
- action.consumeStatementDoLoop(false);
- break;
- }
-
- //
- // Rule 227: iteration_statement ::= for ( for_init_statement condition_opt ; expression_opt ) statement
- //
- case 227: {
- action.consumeStatementForLoop();
- break;
- }
-
- //
- // Rule 229: for_init_statement ::= simple_declaration_with_declspec
- //
- case 229: {
- action.consumeStatementDeclaration();
- break;
- }
-
- //
- // Rule 230: jump_statement ::= break ;
- //
- case 230: {
- action.consumeStatementBreak();
- break;
- }
-
- //
- // Rule 231: jump_statement ::= continue ;
- //
- case 231: {
- action.consumeStatementContinue();
- break;
- }
-
- //
- // Rule 232: jump_statement ::= return expression ;
- //
- case 232: {
- action.consumeStatementReturn(true);
- break;
- }
-
- //
- // Rule 233: jump_statement ::= return ;
- //
- case 233: {
- action.consumeStatementReturn(false);
- break;
- }
-
- //
- // Rule 234: jump_statement ::= goto identifier_token ;
- //
- case 234: {
- action.consumeStatementGoto();
- break;
- }
-
- //
- // Rule 235: declaration_statement ::= block_declaration
- //
- case 235: {
- action.consumeStatementDeclarationWithDisambiguation();
- break;
- }
-
- //
- // Rule 236: declaration_statement ::= function_definition
- //
- case 236: {
- action.consumeStatementDeclaration();
- break;
- }
-
- //
- // Rule 244: declaration ::= ERROR_TOKEN
- //
- case 244: {
- action.consumeDeclarationProblem();
- break;
- }
-
- //
- // Rule 254: simple_declaration ::= declaration_specifiers_opt <openscope-ast> init_declarator_list_opt ;
- //
- case 254: {
- action.consumeDeclarationSimple(true);
- break;
- }
-
- //
- // Rule 255: simple_declaration_with_declspec ::= declaration_specifiers <openscope-ast> init_declarator_list_opt ;
- //
- case 255: {
- action.consumeDeclarationSimple(true);
- break;
- }
-
- //
- // Rule 256: declaration_specifiers ::= <openscope-ast> simple_declaration_specifiers
- //
- case 256: {
- action.consumeDeclarationSpecifiersSimple();
- break;
- }
-
- //
- // Rule 257: declaration_specifiers ::= <openscope-ast> class_declaration_specifiers
- //
- case 257: {
- action.consumeDeclarationSpecifiersComposite();
- break;
- }
-
- //
- // Rule 258: declaration_specifiers ::= <openscope-ast> elaborated_declaration_specifiers
- //
- case 258: {
- action.consumeDeclarationSpecifiersComposite();
- break;
- }
-
- //
- // Rule 259: declaration_specifiers ::= <openscope-ast> enum_declaration_specifiers
- //
- case 259: {
- action.consumeDeclarationSpecifiersComposite();
- break;
- }
-
- //
- // Rule 260: declaration_specifiers ::= <openscope-ast> type_name_declaration_specifiers
- //
- case 260: {
- action.consumeDeclarationSpecifiersTypeName();
- break;
- }
-
- //
- // Rule 262: declaration_specifiers_opt ::= $Empty
- //
- case 262: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 266: no_type_declaration_specifier ::= friend
- //
- case 266: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 267: no_type_declaration_specifier ::= typedef
- //
- case 267: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 287: storage_class_specifier ::= auto
- //
- case 287: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 288: storage_class_specifier ::= register
- //
- case 288: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 289: storage_class_specifier ::= static
- //
- case 289: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 290: storage_class_specifier ::= extern
- //
- case 290: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 291: storage_class_specifier ::= mutable
- //
- case 291: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 292: function_specifier ::= inline
- //
- case 292: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 293: function_specifier ::= virtual
- //
- case 293: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 294: function_specifier ::= explicit
- //
- case 294: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 295: simple_type_specifier ::= simple_type_specifier_token
- //
- case 295: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 309: type_name_specifier ::= dcolon_opt nested_name_specifier_opt type_name
- //
- case 309: {
- action.consumeQualifiedId(false);
- break;
- }
-
- //
- // Rule 310: type_name_specifier ::= dcolon_opt nested_name_specifier template template_id_name
- //
- case 310: {
- action.consumeQualifiedId(false);
- break;
- }
-
- //
- // Rule 311: type_name_specifier ::= typename dcolon_opt nested_name_specifier identifier_name
- //
- case 311: {
- action.consumeQualifiedId(false);
- break;
- }
-
- //
- // Rule 312: type_name_specifier ::= typename dcolon_opt nested_name_specifier template_opt template_id_name
- //
- case 312: {
- action.consumeQualifiedId(true);
- break;
- }
-
- //
- // Rule 314: elaborated_type_specifier ::= class_keyword elaborated_specifier_hook dcolon_opt nested_name_specifier_opt identifier_name
- //
- case 314: {
- action.consumeTypeSpecifierElaborated(false);
- break;
- }
-
- //
- // Rule 315: elaborated_type_specifier ::= class_keyword elaborated_specifier_hook dcolon_opt nested_name_specifier_opt template_opt template_id_name
- //
- case 315: {
- action.consumeTypeSpecifierElaborated(true);
- break;
- }
-
- //
- // Rule 316: elaborated_type_specifier ::= enum elaborated_specifier_hook dcolon_opt nested_name_specifier_opt identifier_name
- //
- case 316: {
- action.consumeTypeSpecifierElaborated(false);
- break;
- }
-
- //
- // Rule 320: enum_specifier ::= enum enum_specifier_hook { <openscope-ast> enumerator_list_opt comma_opt }
- //
- case 320: {
- action.consumeTypeSpecifierEnumeration(false);
- break;
- }
-
- //
- // Rule 321: enum_specifier ::= enum enum_specifier_hook identifier_token { <openscope-ast> enumerator_list_opt comma_opt }
- //
- case 321: {
- action.consumeTypeSpecifierEnumeration(true);
- break;
- }
-
- //
- // Rule 327: enumerator_definition ::= identifier_token
- //
- case 327: {
- action.consumeEnumerator(false);
- break;
- }
-
- //
- // Rule 328: enumerator_definition ::= identifier_token = constant_expression
- //
- case 328: {
- action.consumeEnumerator(true);
- break;
- }
-
- //
- // Rule 330: namespace_definition ::= namespace namespace_name namespace_definition_hook { <openscope-ast> declaration_seq_opt }
- //
- case 330: {
- action.consumeNamespaceDefinition(true);
- break;
- }
-
- //
- // Rule 331: namespace_definition ::= namespace namespace_definition_hook { <openscope-ast> declaration_seq_opt }
- //
- case 331: {
- action.consumeNamespaceDefinition(false);
- break;
- }
-
- //
- // Rule 333: namespace_alias_definition ::= namespace identifier_token = dcolon_opt nested_name_specifier_opt namespace_name ;
- //
- case 333: {
- action.consumeNamespaceAliasDefinition();
- break;
- }
-
- //
- // Rule 334: using_declaration ::= using typename_opt dcolon_opt nested_name_specifier_opt unqualified_id_name ;
- //
- case 334: {
- action.consumeUsingDeclaration();
- break;
- }
-
- //
- // Rule 335: typename_opt ::= typename
- //
- case 335: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 336: typename_opt ::= $Empty
- //
- case 336: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 337: using_directive ::= using namespace dcolon_opt nested_name_specifier_opt namespace_name ;
- //
- case 337: {
- action.consumeUsingDirective();
- break;
- }
-
- //
- // Rule 338: asm_definition ::= asm ( stringlit ) ;
- //
- case 338: {
- action.consumeDeclarationASM();
- break;
- }
-
- //
- // Rule 339: linkage_specification ::= extern stringlit { <openscope-ast> declaration_seq_opt }
- //
- case 339: {
- action.consumeLinkageSpecification();
- break;
- }
-
- //
- // Rule 340: linkage_specification ::= extern stringlit <openscope-ast> declaration
- //
- case 340: {
- action.consumeLinkageSpecification();
- break;
- }
-
- //
- // Rule 345: init_declarator_complete ::= init_declarator
- //
- case 345: {
- action.consumeInitDeclaratorComplete();
- break;
- }
-
- //
- // Rule 347: init_declarator ::= complete_declarator initializer
- //
- case 347: {
- action.consumeDeclaratorWithInitializer(true);
- break;
- }
-
- //
- // Rule 350: declarator ::= <openscope-ast> ptr_operator_seq direct_declarator
- //
- case 350: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 352: function_declarator ::= <openscope-ast> ptr_operator_seq direct_declarator
- //
- case 352: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 356: basic_direct_declarator ::= declarator_id_name
- //
- case 356: {
- action.consumeDirectDeclaratorIdentifier();
- break;
- }
-
- //
- // Rule 357: basic_direct_declarator ::= ( declarator )
- //
- case 357: {
- action.consumeDirectDeclaratorBracketed();
- break;
- }
-
- //
- // Rule 358: function_direct_declarator ::= basic_direct_declarator ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
- //
- case 358: {
- action.consumeDirectDeclaratorFunctionDeclarator(true);
- break;
- }
-
- //
- // Rule 359: array_direct_declarator ::= array_direct_declarator array_modifier
- //
- case 359: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 360: array_direct_declarator ::= basic_direct_declarator array_modifier
- //
- case 360: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 361: array_modifier ::= [ constant_expression ]
- //
- case 361: {
- action.consumeDirectDeclaratorArrayModifier(true);
- break;
- }
-
- //
- // Rule 362: array_modifier ::= [ ]
- //
- case 362: {
- action.consumeDirectDeclaratorArrayModifier(false);
- break;
- }
-
- //
- // Rule 363: ptr_operator ::= pointer_hook * pointer_hook <openscope-ast> cv_qualifier_seq_opt
- //
- case 363: {
- action.consumePointer();
- break;
- }
-
- //
- // Rule 364: ptr_operator ::= pointer_hook & pointer_hook
- //
- case 364: {
- action.consumeReferenceOperator();
- break;
- }
-
- //
- // Rule 365: ptr_operator ::= dcolon_opt nested_name_specifier pointer_hook * pointer_hook <openscope-ast> cv_qualifier_seq_opt
- //
- case 365: {
- action.consumePointerToMember();
- break;
- }
-
- //
- // Rule 372: cv_qualifier ::= const
- //
- case 372: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 373: cv_qualifier ::= volatile
- //
- case 373: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 375: declarator_id_name ::= dcolon_opt nested_name_specifier_opt type_name
- //
- case 375: {
- action.consumeQualifiedId(false);
- break;
- }
-
- //
- // Rule 376: type_id ::= type_specifier_seq
- //
- case 376: {
- action.consumeTypeId(false);
- break;
- }
-
- //
- // Rule 377: type_id ::= type_specifier_seq abstract_declarator
- //
- case 377: {
- action.consumeTypeId(true);
- break;
- }
-
- //
- // Rule 380: abstract_declarator ::= <openscope-ast> ptr_operator_seq
- //
- case 380: {
- action.consumeDeclaratorWithPointer(false);
- break;
- }
-
- //
- // Rule 381: abstract_declarator ::= <openscope-ast> ptr_operator_seq direct_abstract_declarator
- //
- case 381: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 385: basic_direct_abstract_declarator ::= ( abstract_declarator )
- //
- case 385: {
- action.consumeDirectDeclaratorBracketed();
- break;
- }
-
- //
- // Rule 386: basic_direct_abstract_declarator ::= ( )
- //
- case 386: {
- action.consumeAbstractDeclaratorEmpty();
- break;
- }
-
- //
- // Rule 387: array_direct_abstract_declarator ::= array_modifier
- //
- case 387: {
- action.consumeDirectDeclaratorArrayDeclarator(false);
- break;
- }
-
- //
- // Rule 388: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier
- //
- case 388: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 389: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier
- //
- case 389: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 390: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
- //
- case 390: {
- action.consumeDirectDeclaratorFunctionDeclarator(true);
- break;
- }
-
- //
- // Rule 391: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
- //
- case 391: {
- action.consumeDirectDeclaratorFunctionDeclarator(false);
- break;
- }
-
- //
- // Rule 392: parameter_declaration_clause ::= parameter_declaration_list_opt ...
- //
- case 392: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 393: parameter_declaration_clause ::= parameter_declaration_list_opt
- //
- case 393: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 394: parameter_declaration_clause ::= parameter_declaration_list , ...
- //
- case 394: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 400: abstract_declarator_opt ::= $Empty
- //
- case 400: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 401: parameter_declaration ::= declaration_specifiers parameter_init_declarator
- //
- case 401: {
- action.consumeParameterDeclaration();
- break;
- }
-
- //
- // Rule 402: parameter_declaration ::= declaration_specifiers
- //
- case 402: {
- action.consumeParameterDeclarationWithoutDeclarator();
- break;
- }
-
- //
- // Rule 404: parameter_init_declarator ::= declarator = parameter_initializer
- //
- case 404: {
- action.consumeDeclaratorWithInitializer(true);
- break;
- }
-
- //
- // Rule 406: parameter_init_declarator ::= abstract_declarator = parameter_initializer
- //
- case 406: {
- action.consumeDeclaratorWithInitializer(true);
- break;
- }
-
- //
- // Rule 407: parameter_init_declarator ::= = parameter_initializer
- //
- case 407: {
- action.consumeDeclaratorWithInitializer(false);
- break;
- }
-
- //
- // Rule 408: parameter_initializer ::= assignment_expression
- //
- case 408: {
- action.consumeInitializer();
- break;
- }
-
- //
- // Rule 409: function_definition ::= declaration_specifiers_opt function_declarator <openscope-ast> ctor_initializer_list_opt function_body
- //
- case 409: {
- action.consumeFunctionDefinition(false);
- break;
- }
-
- //
- // Rule 410: function_definition ::= declaration_specifiers_opt function_declarator try <openscope-ast> ctor_initializer_list_opt function_body <openscope-ast> handler_seq
- //
- case 410: {
- action.consumeFunctionDefinition(true);
- break;
- }
-
- //
- // Rule 413: initializer ::= ( expression_list )
- //
- case 413: {
- action.consumeInitializerConstructor();
- break;
- }
-
- //
- // Rule 414: initializer_clause ::= assignment_expression
- //
- case 414: {
- action.consumeInitializer();
- break;
- }
-
- //
- // Rule 415: initializer_clause ::= initializer_list
- //
- case 415: {
- action.consumeInitializer();
- break;
- }
-
- //
- // Rule 416: initializer_list ::= start_initializer_list { <openscope-ast> initializer_seq , } end_initializer_list
- //
- case 416: {
- action.consumeInitializerList();
- break;
- }
-
- //
- // Rule 417: initializer_list ::= start_initializer_list { <openscope-ast> initializer_seq } end_initializer_list
- //
- case 417: {
- action.consumeInitializerList();
- break;
- }
-
- //
- // Rule 418: initializer_list ::= { <openscope-ast> }
- //
- case 418: {
- action.consumeInitializerList();
- break;
- }
-
- //
- // Rule 419: start_initializer_list ::= $Empty
- //
- case 419: {
- action.initializerListStart();
- break;
- }
-
- //
- // Rule 420: end_initializer_list ::= $Empty
- //
- case 420: {
- action.initializerListEnd();
- break;
- }
-
- //
- // Rule 425: class_specifier ::= class_head { <openscope-ast> member_declaration_list_opt }
- //
- case 425: {
- action.consumeClassSpecifier();
- break;
- }
-
- //
- // Rule 426: class_head ::= class_keyword composite_specifier_hook identifier_name_opt class_name_suffix_hook <openscope-ast> base_clause_opt
- //
- case 426: {
- action.consumeClassHead(false);
- break;
- }
-
- //
- // Rule 427: class_head ::= class_keyword composite_specifier_hook template_id_name class_name_suffix_hook <openscope-ast> base_clause_opt
- //
- case 427: {
- action.consumeClassHead(false);
- break;
- }
-
- //
- // Rule 428: class_head ::= class_keyword composite_specifier_hook nested_name_specifier identifier_name class_name_suffix_hook <openscope-ast> base_clause_opt
- //
- case 428: {
- action.consumeClassHead(true);
- break;
- }
-
- //
- // Rule 429: class_head ::= class_keyword composite_specifier_hook nested_name_specifier template_id_name class_name_suffix_hook <openscope-ast> base_clause_opt
- //
- case 429: {
- action.consumeClassHead(true);
- break;
- }
-
- //
- // Rule 433: identifier_name_opt ::= $Empty
- //
- case 433: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 437: visibility_label ::= access_specifier_keyword :
- //
- case 437: {
- action.consumeVisibilityLabel();
- break;
- }
-
- //
- // Rule 438: member_declaration ::= declaration_specifiers_opt <openscope-ast> member_declarator_list ;
- //
- case 438: {
- action.consumeDeclarationSimple(true);
- break;
- }
-
- //
- // Rule 439: member_declaration ::= declaration_specifiers_opt ;
- //
- case 439: {
- action.consumeDeclarationSimple(false);
- break;
- }
-
- //
- // Rule 442: member_declaration ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name ;
- //
- case 442: {
- action.consumeMemberDeclarationQualifiedId();
- break;
- }
-
- //
- // Rule 448: member_declaration ::= ERROR_TOKEN
- //
- case 448: {
- action.consumeDeclarationProblem();
- break;
- }
-
- //
- // Rule 457: member_declarator ::= declarator constant_initializer
- //
- case 457: {
- action.consumeMemberDeclaratorWithInitializer();
- break;
- }
-
- //
- // Rule 458: member_declarator ::= bit_field_declarator : constant_expression
- //
- case 458: {
- action.consumeBitField(true);
- break;
- }
-
- //
- // Rule 459: member_declarator ::= : constant_expression
- //
- case 459: {
- action.consumeBitField(false);
- break;
- }
-
- //
- // Rule 460: bit_field_declarator ::= identifier_name
- //
- case 460: {
- action.consumeDirectDeclaratorIdentifier();
- break;
- }
-
- //
- // Rule 461: constant_initializer ::= = constant_expression
- //
- case 461: {
- action.consumeInitializer();
- break;
- }
-
- //
- // Rule 467: base_specifier ::= dcolon_opt nested_name_specifier_opt class_name
- //
- case 467: {
- action.consumeBaseSpecifier(false, false);
- break;
- }
-
- //
- // Rule 468: base_specifier ::= virtual access_specifier_keyword_opt dcolon_opt nested_name_specifier_opt class_name
- //
- case 468: {
- action.consumeBaseSpecifier(true, true);
- break;
- }
-
- //
- // Rule 469: base_specifier ::= access_specifier_keyword virtual dcolon_opt nested_name_specifier_opt class_name
- //
- case 469: {
- action.consumeBaseSpecifier(true, true);
- break;
- }
-
- //
- // Rule 470: base_specifier ::= access_specifier_keyword dcolon_opt nested_name_specifier_opt class_name
- //
- case 470: {
- action.consumeBaseSpecifier(true, false);
- break;
- }
-
- //
- // Rule 471: access_specifier_keyword ::= private
- //
- case 471: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 472: access_specifier_keyword ::= protected
- //
- case 472: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 473: access_specifier_keyword ::= public
- //
- case 473: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 475: access_specifier_keyword_opt ::= $Empty
- //
- case 475: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 477: conversion_function_id_name ::= conversion_function_id < <openscope-ast> template_argument_list_opt >
- //
- case 477: {
- action.consumeTemplateId();
- break;
- }
-
- //
- // Rule 478: conversion_function_id ::= operator conversion_type_id
- //
- case 478: {
- action.consumeConversionName();
- break;
- }
-
- //
- // Rule 479: conversion_type_id ::= type_specifier_seq conversion_declarator
- //
- case 479: {
- action.consumeTypeId(true);
- break;
- }
-
- //
- // Rule 480: conversion_type_id ::= type_specifier_seq
- //
- case 480: {
- action.consumeTypeId(false);
- break;
- }
-
- //
- // Rule 481: conversion_declarator ::= <openscope-ast> ptr_operator_seq
- //
- case 481: {
- action.consumeDeclaratorWithPointer(false);
- break;
- }
-
- //
- // Rule 487: mem_initializer ::= mem_initializer_name ( expression_list_opt )
- //
- case 487: {
- action.consumeConstructorChainInitializer();
- break;
- }
-
- //
- // Rule 488: mem_initializer_name ::= dcolon_opt nested_name_specifier_opt class_name
- //
- case 488: {
- action.consumeQualifiedId(false);
- break;
- }
-
- //
- // Rule 491: operator_function_id_name ::= operator_id_name < <openscope-ast> template_argument_list_opt >
- //
- case 491: {
- action.consumeTemplateId();
- break;
- }
-
- //
- // Rule 492: operator_id_name ::= operator overloadable_operator
- //
- case 492: {
- action.consumeOperatorName();
- break;
- }
-
- //
- // Rule 535: template_declaration ::= export_opt template < <openscope-ast> template_parameter_list > declaration
- //
- case 535: {
- action.consumeTemplateDeclaration();
- break;
- }
-
- //
- // Rule 536: export_opt ::= export
- //
- case 536: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 537: export_opt ::= $Empty
- //
- case 537: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 541: template_parameter ::= parameter_declaration
- //
- case 541: {
- action.consumeTemplateParamterDeclaration();
- break;
- }
-
- //
- // Rule 542: type_parameter ::= class identifier_name_opt
- //
- case 542: {
- action.consumeSimpleTypeTemplateParameter(false);
- break;
- }
-
- //
- // Rule 543: type_parameter ::= class identifier_name_opt = type_id
- //
- case 543: {
- action.consumeSimpleTypeTemplateParameter(true);
- break;
- }
-
- //
- // Rule 544: type_parameter ::= typename identifier_name_opt
- //
- case 544: {
- action.consumeSimpleTypeTemplateParameter(false);
- break;
- }
-
- //
- // Rule 545: type_parameter ::= typename identifier_name_opt = type_id
- //
- case 545: {
- action.consumeSimpleTypeTemplateParameter(true);
- break;
- }
-
- //
- // Rule 546: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt
- //
- case 546: {
- action.consumeTemplatedTypeTemplateParameter(false);
- break;
- }
-
- //
- // Rule 547: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt = id_expression
- //
- case 547: {
- action.consumeTemplatedTypeTemplateParameter(true);
- break;
- }
-
- //
- // Rule 548: template_id_name ::= identifier_name < <openscope-ast> template_argument_list_opt >
- //
- case 548: {
- action.consumeTemplateId();
- break;
- }
-
- //
- // Rule 555: nested_name_specifier_inTemplate ::= class_or_namespace_name_inTemplate :: nested_name_specifier_with_template_inTemplate
- //
- case 555: {
- action.consumeNestedNameSpecifier(true);
- break;
- }
-
- //
- // Rule 556: nested_name_specifier_inTemplate ::= class_or_namespace_name_inTemplate ::
- //
- case 556: {
- action.consumeNestedNameSpecifier(false);
- break;
- }
-
- //
- // Rule 557: nested_name_specifier_with_template_inTemplate ::= class_or_namespace_name_with_template_inTemplate :: nested_name_specifier_with_template_inTemplate
- //
- case 557: {
- action.consumeNestedNameSpecifier(true);
- break;
- }
-
- //
- // Rule 558: nested_name_specifier_with_template_inTemplate ::= class_or_namespace_name_with_template_inTemplate ::
- //
- case 558: {
- action.consumeNestedNameSpecifier(false);
- break;
- }
-
- //
- // Rule 559: class_or_namespace_name_with_template_inTemplate ::= template_opt class_or_namespace_name_inTemplate
- //
- case 559: {
- action.consumeNameWithTemplateKeyword();
- break;
- }
-
- //
- // Rule 561: nested_name_specifier_opt_inTemplate ::= $Empty
- //
- case 561: {
- action.consumeNestedNameSpecifierEmpty();
- break;
- }
-
- //
- // Rule 564: type_name_specifier_inTemplate ::= typename dcolon_opt nested_name_specifier identifier_name
- //
- case 564: {
- action.consumeQualifiedId(false);
- break;
- }
-
- //
- // Rule 565: type_name_specifier_inTemplate ::= typename dcolon_opt nested_name_specifier template_opt template_id_name
- //
- case 565: {
- action.consumeQualifiedId(true);
- break;
- }
-
- //
- // Rule 570: declaration_specifiers_inTemplate ::= <openscope-ast> simple_declaration_specifiers
- //
- case 570: {
- action.consumeDeclarationSpecifiersSimple();
- break;
- }
-
- //
- // Rule 571: declaration_specifiers_inTemplate ::= <openscope-ast> class_declaration_specifiers
- //
- case 571: {
- action.consumeDeclarationSpecifiersComposite();
- break;
- }
-
- //
- // Rule 572: declaration_specifiers_inTemplate ::= <openscope-ast> elaborated_declaration_specifiers
- //
- case 572: {
- action.consumeDeclarationSpecifiersComposite();
- break;
- }
-
- //
- // Rule 573: declaration_specifiers_inTemplate ::= <openscope-ast> enum_declaration_specifiers
- //
- case 573: {
- action.consumeDeclarationSpecifiersComposite();
- break;
- }
-
- //
- // Rule 574: declaration_specifiers_inTemplate ::= <openscope-ast> type_name_declaration_specifiers_inTemplate
- //
- case 574: {
- action.consumeDeclarationSpecifiersTypeName();
- break;
- }
-
- //
- // Rule 576: type_id_inTemplate ::= type_specifier_seq_inTemplate
- //
- case 576: {
- action.consumeTypeId(false);
- break;
- }
-
- //
- // Rule 577: type_id_inTemplate ::= type_specifier_seq_inTemplate abstract_declarator
- //
- case 577: {
- action.consumeTypeId(true);
- break;
- }
-
- //
- // Rule 578: template_argument ::= assignment_expression_inTemplate
- //
- case 578: {
- action.consumeTemplateArgumentExpression();
- break;
- }
-
- //
- // Rule 579: template_argument ::= type_id_inTemplate
- //
- case 579: {
- action.consumeTemplateArgumentTypeId();
- break;
- }
-
- //
- // Rule 580: explicit_instantiation ::= template declaration
- //
- case 580: {
- action.consumeTemplateExplicitInstantiation();
- break;
- }
-
- //
- // Rule 581: explicit_specialization ::= template < > declaration
- //
- case 581: {
- action.consumeTemplateExplicitSpecialization();
- break;
- }
-
- //
- // Rule 582: try_block ::= try compound_statement <openscope-ast> handler_seq
- //
- case 582: {
- action.consumeStatementTryBlock(true);
- break;
- }
-
- //
- // Rule 583: try_block ::= try compound_statement
- //
- case 583: {
- action.consumeStatementTryBlock(false);
- break;
- }
-
- //
- // Rule 586: handler ::= catch ( exception_declaration ) compound_statement
- //
- case 586: {
- action.consumeStatementCatchHandler(false);
- break;
- }
-
- //
- // Rule 587: handler ::= catch ( ... ) compound_statement
- //
- case 587: {
- action.consumeStatementCatchHandler(true);
- break;
- }
-
- //
- // Rule 588: exception_declaration ::= type_specifier_seq <openscope-ast> declarator
- //
- case 588: {
- action.consumeDeclarationSimple(true);
- break;
- }
-
- //
- // Rule 589: exception_declaration ::= type_specifier_seq <openscope-ast> abstract_declarator
- //
- case 589: {
- action.consumeDeclarationSimple(true);
- break;
- }
-
- //
- // Rule 590: exception_declaration ::= type_specifier_seq
- //
- case 590: {
- action.consumeDeclarationSimple(false);
- break;
- }
-
- //
- // Rule 592: exception_specification ::= throw ( )
- //
- case 592: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 598: no_cast_start ::= ERROR_TOKEN
- //
- case 598: {
- action.consumeEmpty();
- break;
- }
-
- default:
- break;
- }
- return;
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoCastExpressionParserprs.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoCastExpressionParserprs.java
deleted file mode 100644
index 1695588244e..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoCastExpressionParserprs.java
+++ /dev/null
@@ -1,1551 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2015 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.dom.lrparser.cpp;
-
-public class CPPNoCastExpressionParserprs implements lpg.lpgjavaruntime.ParseTable, CPPNoCastExpressionParsersym {
-
- public interface IsKeyword {
- public final static byte isKeyword[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static byte isKeyword[] = IsKeyword.isKeyword;
-
- public final boolean isKeyword(int index) {
- return isKeyword[index] != 0;
- }
-
- public interface BaseCheck {
- public final static short baseCheck[] = { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 0, 1, 0, 4, 2, 3, 2, 3, 2, 2, 1, 0, 1, 1, 4, 4, 4, 8, 8, 3, 3,
- 4, 4, 3, 3, 2, 2, 7, 7, 7, 7, 4, 4, 5, 6, 3, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 7, 9, 3, 0, 1,
- 2, 2, 1, 2, 3, 4, 1, 0, 3, 1, 0, 3, 5, 1, 1, 3, 3, 1, 3, 3, 3, 1, 3, 3, 1, 3, 3, 1, 3, 3, 3, 3, 1, 3, 3,
- 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 5, 1, 3, 5, 3, 3, 1, 3, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 5, 1, 1, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 2, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 2, 1, 3, 1, 0, 1, 0, 1, 1,
- 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 4, 3, 2, 1, 4, 2, 1, 2, 5, 7, 5, 1, 4, 1, 0, 5, 7, 2, 8, 1, 1, 2, 2, 3,
- 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 0, 4, 4, 2, 2, 2, 2, 2, 1, 0, 1, 1, 1, 1, 1,
- 1, 2, 1, 2, 2, 2, 1, 1, 2, 2, 1, 2, 2, 1, 2, 2, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 3, 4, 4, 5, 2, 5, 6, 5, 0, 1, 0, 7, 8, 0, 1, 3, 1, 0, 1, 3, 1, 7, 6, 0, 7, 6, 1, 0, 6,
- 5, 6, 4, 1, 3, 1, 0, 1, 1, 2, 1, 1, 3, 1, 3, 1, 1, 1, 1, 3, 9, 2, 2, 3, 2, 5, 3, 7, 0, 1, 2, 2, 1, 0, 1,
- 1, 1, 3, 1, 2, 1, 1, 2, 3, 1, 1, 1, 3, 2, 1, 2, 2, 9, 8, 2, 1, 3, 1, 3, 1, 0, 1, 0, 2, 1, 1, 3, 1, 3, 2,
- 1, 5, 8, 1, 2, 3, 1, 1, 7, 6, 3, 0, 0, 1, 3, 1, 1, 5, 6, 6, 7, 7, 0, 0, 1, 0, 1, 1, 1, 2, 4, 2, 2, 1, 5,
- 1, 1, 1, 1, 1, 1, 1, 2, 1, 0, 1, 3, 1, 1, 2, 3, 2, 1, 2, 2, 1, 0, 1, 3, 3, 5, 5, 4, 1, 1, 1, 1, 0, 1, 5,
- 2, 2, 1, 2, 2, 1, 0, 1, 3, 4, 3, 1, 1, 5, 2, 1, 1, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 7, 1, 0, 1, 3, 1, 1, 2, 4, 2, 4, 7, 9,
- 5, 1, 3, 1, 0, 1, 1, 3, 2, 3, 2, 2, 1, 0, 1, 1, 4, 5, 2, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 1, 1, 2, 4, 4,
- 2, 1, 2, 5, 5, 3, 3, 1, 4, 3, 1, 0, 1, 3, 1, 1, -107, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, -309, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, -5, 0, 0, -6, -286, 0, 0, 0,
- -58, 0, 0, 0, 0, -165, -7, -428, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, 0, 0, 0, 0, -51, -18, 0, 0,
- 0, 0, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -8, 0, 0, 0, -106, -506, 0, 0, 0, 0, 0, 0, 0, 0, -53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -460, 0, 0, -68, 0, 0, 0, 0, -9, 0, 0, 0, 0, 0, 0, 0, -126, 0, 0, 0, 0, 0, -176, 0, 0, 0, -115, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -272, 0, 0, 0, 0, 0,
- 0, -522, 0, -561, -264, 0, 0, 0, 0, 0, -136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -311, 0, 0, 0, 0, 0, 0,
- 0, 0, -130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -265, 0, 0,
- 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -472, 0, 0, 0, 0, 0, 0, -415, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -596, 0, 0, 0, 0, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, 0, 0, 0, 0, -196, 0, 0, 0, -259,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -134, 0, 0, -62, 0, 0, 0,
- 0, 0, 0, -325, 0, 0, 0, 0, 0, -501, 0, 0, -11, 0, 0, 0, 0, 0, 0, -444, 0, 0, -119, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -571, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -275, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -177, 0, 0, 0, -16, 0, 0, 0, 0, -61, 0, 0, 0, 0, 0, -266, 0, 0, 0,
- 0, -595, 0, 0, 0, 0, -54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10, -197, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -323, 0, 0, 0, 0, -89, 0, 0, 0, 0, -367, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -502, 0, 0, 0, 0, -12, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -170, 0, 0, 0, 0, 0, -135, 0, 0, 0, -15, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, -121, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -493, 0, 0, 0, 0, -88, 0, 0, 0, 0, -28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -260, -29, 0, -526, 0, 0, 0, 0, 0, 0, 0, -337, 0, 0, 0, 0, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -123, -30, 0, 0, -50, 0, 0, 0, 0, 0, 0, 0, -31, 0, 0, 0, -235, 0, 0, 0, 0,
- -166, -380, 0, 0, 0, 0, -368, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, -495, 0, 0, 0, 0, -381, 0, 0, 0, 0, -59, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -32, 0, 0, 0, 0, 0, 0, -33, 0, 0, -273, 0, 0, 0,
- 0, -104, -340, 0, -39, 0, 0, 0, 0, -409, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -129, 0, 0, -279, 0, 0, 0, 0, 0, 0, -440, -41, 0, 0, 0, 0, -105,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -132, 0, 0, 0, -142, 0, 0, 0, 0, 0, 0,
- -216, 0, 0, -326, 0, 0, 0, 0, -91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -377, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -402, 0, 0, -529, 0, 0, 0, 0, -92, 0, 0, 0, 0, -113, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -530, 0, 0, 0, 0, -93, 0, 0, 0, 0, -137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -418, -357, 0, 0, 0, 0, 0, 0, -423, 0, 0, -280, 0, 0, 0, 0, -94, 0, 0, 0, 0, -141, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -195, -35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -540, 0,
- 0, -287, 0, 0, 0, 0, -95, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -206, -36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -480, 0, 0, -327, 0, 0, 0, 0, -96, 0, 0, 0, 0, -218, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -220, -37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -38,
- 0, 0, -347, 0, 0, 0, 0, -97, 0, 0, 0, 0, -371, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -40, 0, 0, -270, -269, 0, 0, 0, 0, 0, 0, -462, 0, 0, -369, 0, 0, 0, 0, -98, 0, 0, 0, 0, -274,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -360, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -261, 0, 0, -390, 0, 0, 0, 0, -99, 0, 0, 0, 0, -281, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -308, -55, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, -262, 0, 0, -400, -288, -356, 0, 0, -100, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -447, 0, 0, 0, -63, 0, 0, 0,
- -475, 0, 0, 0, 0, 0, -461, 0, 0, 0, 0, -101, 0, 0, 0, 0, -289, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -321, -64, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, -350, 0, 0, -222, 0, -163, 0,
- 0, 0, 0, -319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -411, -116, -108, 0, 0, 0,
- 0, 0, 0, -329, 0, 0, -333, 0, 0, -214, 0, 0, 0, 0, -354, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -434, 0, 0, 0, -436, 0, 0, -379, 0, 0, 0,
- 0, -109, 0, -246, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -503, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -229, 0, -322, -313, 0, 0, 0, 0, 0, 0, 0, -110, -320,
- 0, 0, 0, 0, 0, 0, 0, -247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -277, -111, 0, 0, 0, -413, 0, 0, 0, 0, 0, 0, -446, 0, 0, -341, -324, 0, 0, -118, 0, 0, 0, 0, 0, 0, 0, 0,
- -131, -492, 0, 0, -435, 0, 0, 0, 0, 0, 0, -248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -443, 0, -416, 0, 0, -14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -316, 0, -392, 0, 0, 0, 0, 0, 0, 0, -249, 0, 0, 0, 0, -143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -290, 0, -363, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -468, 0, -120, 0,
- 0, -457, 0, 0, 0, 0, 0, -328, -463, -450, -410, 0, 0, 0, 0, 0, 0, 0, -250, 0, 0, 0, 0, -144, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -556, -291, 0, -374, 0, 0, 0, 0, 0, 0, 0, 0, -405, 0,
- 0, 0, 0, 0, 0, -145, 0, -146, 0, 0, 0, 0, 0, 0, -147, 0, 0, -421, 0, 0, 0, 0, 0, 0, 0, -251, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -564, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -353, 0, 0, 0, 0, 0, 0, -510, 0, -148, 0, -572, 0, 0, -537, 0, 0, 0, 0, 0, 0, 0, -252, 0,
- 0, 0, 0, -149, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -346, 0, 0, -336, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -430, 0, 0, 0, -464, 0, 0, -583, -361, 0, 0, 0, 0, 0, 0, -476, 0, 0, -150, 0, 0,
- 0, 0, 0, -253, 0, 0, 0, 0, -431, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -348,
- -151, 0, -138, 0, 0, 0, 0, -152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -355, 0, 0, 0, -365, -570, 0, -470, 0, 0,
- -378, 0, 0, -422, 0, 0, 0, 0, 0, 0, -254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -140, 0, 0, 0, 0, -153, 0, 0, 0, 0, 0, 0, 0, -366, 0, 0, 0, 0, 0, -384, 0, -453,
- 0, -382, 0, 0, 0, -533, 0, -499, -154, 0, 0, 0, 0, 0, -255, 0, 0, 0, 0, -155, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -349, 0, -393, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -388, -156, 0, 0, 0,
- 0, 0, 0, -471, -594, -527, 0, 0, 0, 0, -483, -157, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -433, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -412,
- -158, -391, -43, 0, -122, 0, 0, 0, -394, 0, 0, -159, 0, 0, -586, -587, -395, -160, -536, 0, 0, 0, 0, 0,
- -352, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -351, -557, 0, -397,
- 0, 0, 0, 0, 0, 0, -161, 0, -201, 0, 0, 0, -399, -167, 0, -168, 0, 0, 0, 0, 0, 0, -169, 0, -419, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -589, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -425, 0, 0, 0, -449, 0, 0, 0, 0, 0, 0, 0, -479, 0, 0, 0, -385, -417, -172, 0, -376, 0, 0, 0, 0, -448, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -482, 0,
- 0, -403, 0, 0, 0, 0, -173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -285, 0, -174,
- 0, -474, 0, 0, 0, 0, 0, 0, 0, -478, 0, 0, -487, -490, 0, -504, -515, 0, 0, -524, -525, -532, -175, -600,
- 0, -528, 0, -414, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -178, 0, 0, -531, 0, 0, -438, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -535, 0, -182, 0, 0, 0, 0, 0, 0, -183, 0, 0, -554, 0, 0, -184, -185, 0, -186, 0, 0,
- 0, -538, -551, -187, -188, -210, 0, 0, 0, -439, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -124, 0, -189, 0, 0, 0, 0, 0, 0, -190, 0, 0, 0, 0, 0, -513, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -558, -191, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, -567,
- 0, 0, -575, -202, 0, -552, -559, 0, -180, -579, -584, -203, -209, 0, 0, 0, 0, -103, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, 0, 0, -227, 0, 0, 0, -592, 0, 0,
- -599, -228, -534, -258, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -236, 0, -48, 0, 0, -420, 0, 0, -267, 0, 0, -162, -278, -282, -345, 0, -284, -296, 0, 0, 0, 0, 0, 0, 0,
- 0, -297, 0, -298, -299, 0, 0, 0, -300, 0, 0, -90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -301, 0, -302, 0, -303, -304, 0, 0, 0, -563, 0, -245, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, -305, 0, -306, -307, 0, 0, 0, 0, -312, -314,
- -315, -330, -334, -335, -338, 0, -339, 0, -358, 0, -359, 0, 0, 0, 0, -364, 0, 0, -372, -47, 0, 0, 0, 0,
- -181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -373, -389,
- -404, -406, -426, -429, -442, 0, -565, 0, 0, -243, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -455, 0, -456, 0, -458, -459, -485, -230, -465, -467, -473, 0, -481, -488, -489,
- -512, -514, -516, 0, -517, 0, -518, -370, 0, -569, 0, -573, 0, -244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -519, 0, 0, -521, -539, -541, -542, -544, -549, -553, -560,
- -568, -577, -585, -590, -601, 0, 0, 0, 0, 0, 0, 0, -574, 0, -85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -593, -598, 0, -240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -87,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -241, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -454, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -242, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193,
- 0, 0, 0, -164, -200, 0, 0, 0, 0, 0, -17, -292, 0, -293, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -231, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -232, 0, 0, -233, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -80, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -237, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -238, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -239, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -283, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -295, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -343, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -362, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -375, -494, 0, 0, 0, 0, 0, 0, 0, -276, -332, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -580, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -83, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -84, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -491, -127, 0, 0, 0, 0, 0, 0, -344, 0, 0,
- -219, 0, 0, 0, 0, 0, 0, -223, -383, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -511, 0, 0, 0, 0, 0, 0, -523, 0, -408, -133, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -387, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -139, 0, 0, 0, 0, 0, 0, -171, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, 0, -520,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -224, 0, -44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -386, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -543, -225,
- 0, 0, 0, 0, 0, 0, 0, -268, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -545, 0, -548, 0, 0, 0, 0,
- 0, -271, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -591, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -562, 0, 0, 0, 0, 0, 0, -226, -342, 0,
- 0, 0, 0, 0, -498, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -398, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -576, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -407, 0, 0, 0, 0, 0, -257, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -578, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -445, 0, 0, 0, 0, 0, -331, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -582, 0, 0, 0, 0, 0, 0, -581, 0, 0, 0, 0, 0, 0, -46, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -466, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -469, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -602, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -221, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -60, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -437, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -19,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -424, 0, 0, -508, -42, 0, 0, 0, 0, 0,
- -234, 0, 0, 0, 0, 0, 0, -452, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -484, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -294, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -401,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -310, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -441, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -317, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -396, -509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -427, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -496, 0, 0, 0, 0, 0, -566, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -451, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -477, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -432, 0, 0, 0, 0, 0, 0, 0, 0, -215, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -486, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -497, 0, 0, 0, 0, 0, 0, 0, 0, 0, -263, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -507, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -505, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -555, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -546, 0, -547, 0, -550, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static short baseCheck[] = BaseCheck.baseCheck;
-
- @Override
- public final int baseCheck(int index) {
- return baseCheck[index];
- }
-
- public final static short rhs[] = baseCheck;
-
- @Override
- public final int rhs(int index) {
- return rhs[index];
- }
-
- public interface BaseAction {
- public final static char baseAction[] = { 191, 5, 154, 94, 94, 31, 31, 80, 80, 39, 39, 42, 42, 218, 1, 1, 16,
- 16, 16, 16, 16, 16, 16, 17, 17, 17, 15, 11, 11, 6, 6, 6, 6, 6, 6, 2, 75, 75, 4, 4, 12, 12, 44, 44, 155,
- 155, 156, 67, 67, 43, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
- 157, 157, 157, 131, 131, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 192, 192, 193, 193,
- 194, 160, 160, 161, 161, 158, 158, 162, 159, 159, 21, 21, 22, 23, 23, 23, 24, 24, 24, 24, 25, 25, 25,
- 26, 26, 26, 30, 30, 30, 30, 30, 33, 33, 33, 34, 34, 35, 35, 37, 37, 38, 38, 40, 40, 41, 41, 45, 45, 45,
- 45, 45, 47, 47, 47, 52, 52, 54, 54, 61, 61, 62, 62, 63, 63, 64, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65,
- 65, 65, 65, 65, 29, 29, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 36, 28, 163, 163, 105, 105,
- 195, 195, 104, 219, 219, 82, 82, 82, 82, 82, 82, 82, 82, 82, 83, 83, 83, 78, 78, 66, 66, 196, 196, 84,
- 84, 84, 116, 116, 197, 197, 85, 85, 85, 85, 198, 198, 86, 86, 86, 86, 86, 87, 87, 95, 95, 95, 95, 95,
- 95, 95, 95, 55, 55, 55, 55, 55, 132, 132, 130, 130, 56, 199, 27, 27, 27, 27, 27, 50, 50, 69, 69, 69, 69,
- 69, 137, 137, 133, 133, 133, 133, 133, 134, 134, 134, 135, 135, 135, 136, 136, 136, 165, 165, 165, 70,
- 70, 70, 70, 70, 71, 71, 71, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 106, 138, 138, 138, 138,
- 138, 138, 111, 111, 111, 166, 167, 167, 112, 112, 200, 169, 169, 168, 168, 139, 139, 117, 92, 92, 140,
- 58, 49, 170, 170, 59, 57, 97, 97, 171, 171, 164, 164, 141, 142, 142, 143, 89, 89, 172, 172, 76, 76, 76,
- 73, 73, 72, 77, 77, 79, 79, 68, 68, 68, 53, 98, 98, 108, 107, 107, 51, 51, 74, 74, 81, 81, 60, 109, 109,
- 109, 99, 99, 99, 100, 100, 101, 101, 101, 102, 102, 118, 118, 118, 120, 120, 119, 119, 220, 220, 103,
- 103, 202, 202, 202, 202, 202, 145, 48, 48, 174, 201, 201, 146, 146, 147, 147, 147, 148, 176, 203, 203,
- 32, 32, 110, 114, 114, 114, 114, 205, 122, 121, 121, 113, 113, 113, 177, 178, 178, 178, 178, 178, 178,
- 178, 178, 178, 178, 178, 207, 207, 204, 204, 206, 206, 179, 180, 180, 180, 180, 181, 208, 124, 123, 123,
- 209, 209, 182, 182, 182, 182, 115, 115, 115, 210, 210, 8, 8, 9, 211, 211, 212, 183, 173, 173, 184, 184,
- 185, 186, 186, 7, 7, 10, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213,
- 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213,
- 213, 213, 213, 213, 213, 90, 93, 93, 187, 187, 150, 150, 151, 151, 151, 151, 151, 151, 3, 152, 152, 149,
- 149, 188, 221, 222, 222, 223, 223, 224, 225, 225, 189, 190, 190, 190, 190, 214, 214, 214, 126, 126, 126,
- 126, 126, 127, 128, 128, 125, 125, 96, 91, 88, 88, 175, 175, 129, 129, 215, 215, 215, 153, 153, 144,
- 144, 216, 216, 191, 191, 1119, 35, 2931, 2924, 4701, 1355, 27, 30, 31, 1172, 1197, 26, 28, 2922, 295,
- 25, 23, 50, 1259, 106, 76, 77, 107, 1283, 1332, 1321, 1428, 332, 2489, 176, 1421, 1824, 307, 1705, 1466,
- 1799, 4231, 1752, 1810, 413, 1846, 175, 1510, 2623, 35, 311, 190, 71, 2037, 2273, 34, 265, 2025, 2046,
- 1638, 35, 1149, 32, 4910, 3812, 27, 30, 31, 1172, 1197, 374, 28, 1405, 1850, 268, 263, 264, 1647, 1673,
- 35, 2034, 424, 2081, 2360, 35, 1149, 32, 672, 5349, 27, 30, 31, 1172, 1197, 26, 28, 975, 295, 25, 23,
- 50, 1259, 106, 76, 77, 107, 1283, 1332, 1321, 3168, 49, 308, 161, 425, 1849, 275, 278, 281, 1212, 985,
- 2224, 1991, 959, 1813, 3766, 71, 35, 329, 3161, 3368, 3175, 351, 3484, 356, 1818, 3174, 388, 3183, 909,
- 2264, 2396, 2858, 5887, 284, 3177, 3184, 3218, 160, 578, 759, 35, 432, 1543, 35, 1149, 32, 4694, 2369,
- 27, 30, 31, 1172, 1197, 57, 28, 1537, 35, 313, 626, 3860, 3216, 71, 35, 2273, 3320, 2360, 35, 1149, 32,
- 672, 5349, 27, 30, 31, 1172, 1197, 26, 28, 975, 295, 25, 23, 50, 1259, 106, 76, 77, 107, 1283, 1332,
- 1321, 3168, 1038, 387, 161, 2456, 35, 311, 549, 575, 3279, 579, 71, 3182, 2700, 71, 35, 2210, 2058,
- 4274, 3161, 1595, 3175, 379, 1341, 651, 384, 3174, 534, 3183, 93, 2598, 3126, 377, 1088, 3225, 3177,
- 3184, 3218, 160, 578, 378, 3181, 2360, 35, 1149, 32, 672, 5349, 27, 30, 31, 1172, 1197, 26, 28, 975,
- 295, 25, 23, 50, 1259, 106, 76, 77, 107, 1283, 1332, 1321, 3168, 3573, 159, 161, 440, 3273, 2215, 35,
- 1149, 32, 4694, 1766, 27, 30, 31, 1172, 1197, 56, 28, 3161, 479, 3175, 71, 35, 2034, 424, 3174, 3185,
- 3183, 71, 3487, 549, 575, 3279, 579, 3177, 3184, 3218, 160, 578, 61, 1912, 35, 1149, 32, 4531, 1257, 27,
- 30, 31, 1172, 1197, 26, 28, 467, 3259, 547, 1815, 3225, 272, 295, 3855, 759, 35, 3365, 1053, 2570, 35,
- 1149, 32, 672, 5349, 27, 30, 31, 1172, 1197, 26, 28, 975, 295, 25, 23, 50, 1259, 106, 76, 77, 107, 1283,
- 1332, 1321, 3168, 56, 49, 161, 1335, 265, 1207, 549, 575, 3279, 579, 1851, 3487, 1991, 809, 42, 3283,
- 56, 3260, 3161, 1400, 3175, 1207, 273, 263, 264, 3174, 1556, 3183, 1729, 1488, 3282, 2033, 368, 3225,
- 3177, 3184, 3218, 160, 578, 2708, 35, 1149, 32, 672, 3329, 27, 30, 31, 1172, 1197, 26, 28, 975, 295, 25,
- 23, 50, 1259, 106, 76, 77, 107, 1283, 1332, 1321, 1428, 2600, 3639, 176, 1421, 60, 1704, 1705, 1466,
- 1799, 324, 1752, 1810, 1193, 1846, 175, 3159, 71, 35, 3328, 414, 1559, 35, 1149, 32, 865, 1520, 41, 30,
- 31, 1172, 1197, 843, 550, 575, 3279, 579, 2428, 35, 1149, 32, 672, 2277, 27, 30, 31, 1172, 1197, 26, 28,
- 975, 295, 25, 23, 50, 1259, 106, 76, 77, 107, 1283, 1332, 1321, 1428, 147, 147, 176, 1421, 3488, 4787,
- 1705, 1466, 1799, 533, 1752, 1810, 474, 1846, 175, 3159, 2693, 35, 314, 414, 323, 3327, 35, 1149, 32,
- 672, 2634, 27, 30, 31, 1172, 1197, 26, 28, 975, 295, 25, 23, 50, 1259, 106, 76, 77, 107, 1283, 1332,
- 1321, 1428, 147, 1823, 3522, 1421, 4848, 3086, 1705, 2854, 421, 415, 2872, 2638, 35, 1149, 32, 672,
- 2736, 27, 30, 31, 1172, 1197, 26, 28, 975, 295, 25, 23, 50, 1259, 106, 76, 77, 107, 1283, 1332, 1321,
- 1428, 1104, 2738, 176, 1421, 2200, 1860, 1705, 1466, 1799, 2089, 1752, 1810, 3470, 1846, 175, 3159,
- 1537, 35, 313, 414, 5241, 2795, 1994, 35, 1149, 32, 2765, 3281, 40, 30, 31, 1172, 1197, 422, 415, 2872,
- 2973, 35, 1149, 32, 672, 1938, 27, 30, 31, 1172, 1197, 26, 28, 975, 295, 25, 23, 50, 1259, 106, 76, 77,
- 107, 1283, 1332, 1321, 1428, 426, 463, 176, 1421, 56, 4512, 1705, 1466, 1799, 677, 1752, 1810, 765,
- 1846, 175, 71, 35, 2034, 424, 190, 3327, 35, 1149, 32, 672, 3735, 27, 30, 31, 1172, 1197, 26, 28, 975,
- 295, 25, 23, 50, 1259, 106, 76, 77, 107, 1283, 1332, 1321, 1428, 488, 69, 1239, 1421, 71, 3625, 1705,
- 1466, 2803, 412, 415, 2872, 2973, 35, 1149, 32, 672, 2524, 27, 30, 31, 1172, 1197, 26, 28, 975, 295, 25,
- 23, 50, 1259, 106, 76, 77, 107, 1283, 1332, 1321, 1428, 1213, 1449, 176, 1421, 56, 1038, 1705, 1466,
- 1799, 769, 1752, 1810, 1233, 1846, 175, 3462, 1537, 35, 566, 408, 5853, 2532, 2973, 35, 1149, 32, 672,
- 2634, 27, 30, 31, 1172, 1197, 26, 28, 975, 295, 25, 23, 50, 1259, 106, 76, 77, 107, 1283, 1332, 1321,
- 1428, 56, 626, 176, 1421, 1193, 837, 1705, 1466, 1799, 1086, 1752, 1810, 1818, 1846, 175, 71, 35, 2034,
- 424, 408, 2973, 35, 1149, 32, 672, 2277, 27, 30, 31, 1172, 1197, 26, 28, 975, 295, 25, 23, 50, 1259,
- 106, 76, 77, 107, 1283, 1332, 1321, 1428, 470, 925, 176, 1421, 389, 1338, 1705, 1466, 1799, 24, 1752,
- 1810, 55, 1846, 175, 71, 35, 2273, 310, 408, 2277, 2670, 407, 2502, 35, 1149, 32, 672, 2634, 27, 30, 31,
- 1172, 1197, 26, 28, 975, 295, 25, 23, 50, 1259, 106, 76, 77, 107, 1283, 1332, 1321, 1428, 1662, 69, 176,
- 1421, 427, 463, 1705, 1466, 1799, 496, 1752, 1810, 1818, 1846, 175, 71, 3471, 2273, 74, 174, 1133, 406,
- 2345, 2973, 35, 1149, 32, 672, 2277, 27, 30, 31, 1172, 1197, 26, 28, 975, 295, 25, 23, 50, 1259, 106,
- 76, 77, 107, 1283, 1332, 1321, 1428, 359, 1818, 176, 1421, 666, 1818, 1705, 1466, 1799, 68, 1752, 1810,
- 1818, 1846, 175, 71, 35, 316, 404, 191, 2973, 35, 1149, 32, 672, 3462, 27, 30, 31, 1172, 1197, 26, 28,
- 975, 295, 25, 23, 50, 1259, 106, 76, 77, 107, 1283, 1332, 1321, 1428, 1193, 1818, 176, 1421, 429, 463,
- 1705, 1466, 1799, 495, 1752, 1810, 2491, 1846, 175, 71, 35, 2034, 424, 187, 2973, 35, 1149, 32, 672,
- 2277, 27, 30, 31, 1172, 1197, 26, 28, 975, 295, 25, 23, 50, 1259, 106, 76, 77, 107, 1283, 1332, 1321,
- 1428, 469, 5679, 176, 1421, 438, 51, 1705, 1466, 1799, 53, 1752, 1810, 361, 1846, 175, 71, 35, 2034,
- 424, 186, 2973, 35, 1149, 32, 672, 2277, 27, 30, 31, 1172, 1197, 26, 28, 975, 295, 25, 23, 50, 1259,
- 106, 76, 77, 107, 1283, 1332, 1321, 1428, 468, 97, 176, 1421, 1818, 241, 1705, 1466, 1799, 87, 1752,
- 1810, 2178, 1846, 175, 931, 35, 2273, 3472, 185, 2973, 35, 1149, 32, 672, 2277, 27, 30, 31, 1172, 1197,
- 26, 28, 975, 295, 25, 23, 50, 1259, 106, 76, 77, 107, 1283, 1332, 1321, 1428, 56, 65, 176, 1421, 442,
- 6191, 1705, 1466, 1799, 52, 1752, 1810, 2280, 1846, 175, 931, 35, 2273, 310, 184, 2973, 35, 1149, 32,
- 672, 2277, 27, 30, 31, 1172, 1197, 26, 28, 975, 295, 25, 23, 50, 1259, 106, 76, 77, 107, 1283, 1332,
- 1321, 1428, 56, 228, 176, 1421, 98, 1022, 1705, 1466, 1799, 90, 1752, 1810, 2322, 1846, 175, 71, 35,
- 2273, 312, 183, 2973, 35, 1149, 32, 672, 2277, 27, 30, 31, 1172, 1197, 26, 28, 975, 295, 25, 23, 50,
- 1259, 106, 76, 77, 107, 1283, 1332, 1321, 1428, 56, 61, 176, 1421, 2870, 3060, 1705, 1466, 1799, 385,
- 1752, 1810, 1007, 1846, 175, 71, 35, 2273, 3523, 182, 2973, 35, 1149, 32, 672, 2018, 27, 30, 31, 1172,
- 1197, 26, 28, 975, 295, 25, 23, 50, 1259, 106, 76, 77, 107, 1283, 1332, 1321, 1428, 585, 1334, 176,
- 1421, 56, 1488, 1705, 1466, 1799, 966, 1752, 1810, 2178, 1846, 175, 71, 35, 2273, 315, 181, 2973, 35,
- 1149, 32, 672, 2277, 27, 30, 31, 1172, 1197, 26, 28, 975, 295, 25, 23, 50, 1259, 106, 76, 77, 107, 1283,
- 1332, 1321, 1428, 2261, 147, 176, 1421, 334, 4931, 1705, 1466, 1799, 2405, 1752, 1810, 69, 1846, 175,
- 71, 35, 2273, 565, 180, 2973, 35, 1149, 32, 672, 2277, 27, 30, 31, 1172, 1197, 26, 28, 975, 295, 25, 23,
- 50, 1259, 106, 76, 77, 107, 1283, 1332, 1321, 1428, 56, 1348, 176, 1421, 1847, 2100, 1705, 1466, 1799,
- 2578, 1752, 1810, 69, 1846, 175, 2934, 2277, 1488, 364, 179, 2973, 35, 1149, 32, 672, 347, 27, 30, 31,
- 1172, 1197, 26, 28, 975, 295, 25, 23, 50, 1259, 106, 76, 77, 107, 1283, 1332, 1321, 1428, 67, 1499, 176,
- 1421, 2250, 233, 1705, 1466, 1799, 1499, 1752, 1810, 2862, 1846, 175, 759, 35, 432, 1939, 178, 2973, 35,
- 1149, 32, 672, 2277, 27, 30, 31, 1172, 1197, 26, 28, 975, 295, 25, 23, 50, 1259, 106, 76, 77, 107, 1283,
- 1332, 1321, 1428, 56, 2795, 176, 1421, 1361, 1111, 1705, 1466, 1799, 66, 1752, 1810, 1482, 1846, 175,
- 2731, 35, 564, 2413, 177, 2852, 35, 1149, 32, 672, 159, 27, 30, 31, 1172, 1197, 26, 28, 975, 295, 25,
- 23, 50, 1259, 106, 76, 77, 107, 1283, 1332, 1321, 1428, 1734, 1508, 1413, 1421, 5055, 3855, 1705, 1466,
- 1799, 2627, 1752, 1810, 1365, 3317, 196, 2973, 35, 1149, 32, 672, 2007, 27, 30, 31, 1172, 1197, 26, 28,
- 975, 295, 25, 23, 50, 1259, 106, 76, 77, 107, 1283, 1332, 1321, 1428, 3574, 1907, 176, 1421, 1193, 2277,
- 1705, 1466, 1799, 391, 1752, 1810, 3260, 1846, 175, 483, 2934, 390, 593, 139, 1537, 35, 489, 2007, 5117,
- 362, 593, 367, 1934, 2342, 3094, 35, 1149, 32, 672, 1528, 27, 30, 31, 1172, 1197, 26, 28, 975, 295, 25,
- 23, 50, 1259, 106, 76, 77, 107, 1283, 1332, 1321, 3168, 920, 2664, 161, 1243, 35, 1149, 32, 4910, 4511,
- 27, 30, 31, 1172, 1197, 374, 28, 2312, 2342, 3161, 3847, 3175, 56, 1229, 35, 329, 3174, 1347, 3183, 363,
- 370, 2112, 3002, 272, 295, 3177, 3184, 3218, 160, 172, 3094, 35, 1149, 32, 672, 70, 27, 30, 31, 1172,
- 1197, 26, 28, 975, 295, 25, 23, 50, 1259, 106, 76, 77, 107, 1283, 1332, 1321, 3168, 2555, 2132, 161, 88,
- 265, 2489, 102, 2933, 370, 354, 2260, 356, 2489, 349, 1437, 2701, 56, 465, 3161, 1350, 3175, 3582, 273,
- 263, 264, 3174, 348, 3183, 2831, 2171, 35, 489, 1488, 5117, 3177, 3184, 3218, 160, 171, 3094, 35, 1149,
- 32, 672, 3528, 27, 30, 31, 1172, 1197, 26, 28, 975, 295, 25, 23, 50, 1259, 106, 76, 77, 107, 1283, 1332,
- 1321, 3168, 2406, 1915, 161, 2627, 265, 5179, 2734, 1662, 2594, 3185, 483, 4274, 342, 345, 1763, 482,
- 3568, 3569, 3161, 320, 3175, 2723, 277, 263, 264, 3174, 321, 3183, 360, 1501, 1956, 2007, 411, 378,
- 3177, 3184, 3218, 160, 170, 3094, 35, 1149, 32, 672, 2008, 27, 30, 31, 1172, 1197, 26, 28, 975, 295, 25,
- 23, 50, 1259, 106, 76, 77, 107, 1283, 1332, 1321, 3168, 671, 2277, 161, 1243, 35, 1149, 32, 4910, 4511,
- 27, 30, 31, 1172, 1197, 374, 28, 2342, 1734, 3161, 1655, 3175, 5055, 147, 44, 3283, 3174, 5836, 3183,
- 56, 1488, 2489, 2634, 65, 2446, 3177, 3184, 3218, 160, 169, 3094, 35, 1149, 32, 672, 2084, 27, 30, 31,
- 1172, 1197, 26, 28, 975, 295, 25, 23, 50, 1259, 106, 76, 77, 107, 1283, 1332, 1321, 3168, 1499, 2277,
- 161, 2600, 265, 2594, 369, 370, 409, 354, 2260, 356, 2696, 349, 1437, 486, 3568, 3569, 3161, 1423, 3175,
- 1645, 280, 263, 264, 3174, 2987, 3183, 1653, 411, 89, 2007, 64, 102, 3177, 3184, 3218, 160, 168, 3094,
- 35, 1149, 32, 672, 331, 27, 30, 31, 1172, 1197, 26, 28, 975, 295, 25, 23, 50, 1259, 106, 76, 77, 107,
- 1283, 1332, 1321, 3168, 2312, 1893, 161, 1243, 35, 1149, 32, 4910, 4511, 27, 30, 31, 1172, 1197, 374,
- 28, 2342, 69, 3161, 478, 3175, 492, 428, 463, 1728, 3174, 227, 3183, 759, 35, 432, 71, 35, 329, 3177,
- 3184, 3218, 160, 167, 3094, 35, 1149, 32, 672, 399, 27, 30, 31, 1172, 1197, 26, 28, 975, 295, 25, 23,
- 50, 1259, 106, 76, 77, 107, 1283, 1332, 1321, 3168, 2277, 466, 161, 56, 2855, 3076, 2975, 370, 2145,
- 354, 2260, 356, 358, 349, 1437, 1229, 3562, 329, 3161, 2626, 3175, 593, 2818, 2698, 4440, 3174, 3628,
- 3183, 1954, 2314, 2489, 2787, 3470, 415, 3177, 3184, 3218, 160, 166, 3094, 35, 1149, 32, 672, 2789, 27,
- 30, 31, 1172, 1197, 26, 28, 975, 295, 25, 23, 50, 1259, 106, 76, 77, 107, 1283, 1332, 1321, 3168, 2277,
- 417, 161, 1729, 35, 1149, 32, 4531, 2417, 27, 30, 31, 1172, 1197, 59, 28, 3277, 3629, 3161, 1335, 3175,
- 584, 457, 56, 1728, 3174, 147, 3183, 1444, 1365, 6056, 55, 2007, 214, 3177, 3184, 3218, 160, 165, 3094,
- 35, 1149, 32, 672, 330, 27, 30, 31, 1172, 1197, 26, 28, 975, 295, 25, 23, 50, 1259, 106, 76, 77, 107,
- 1283, 1332, 1321, 3168, 1662, 1716, 161, 1729, 35, 1149, 32, 4531, 2420, 27, 30, 31, 1172, 1197, 58, 28,
- 56, 2342, 3161, 585, 3175, 2408, 2762, 1956, 2593, 3174, 56, 3183, 2776, 6111, 2489, 3362, 2007, 495,
- 3177, 3184, 3218, 160, 164, 3094, 35, 1149, 32, 672, 2874, 27, 30, 31, 1172, 1197, 26, 28, 975, 295, 25,
- 23, 50, 1259, 106, 76, 77, 107, 1283, 1332, 1321, 3168, 3072, 2277, 161, 1994, 35, 1149, 32, 365, 370,
- 1669, 30, 31, 1172, 1197, 56, 3001, 1893, 2342, 3161, 2474, 3175, 584, 147, 319, 1488, 3174, 6181, 3183,
- 71, 147, 405, 1193, 54, 6233, 3177, 3184, 3218, 160, 163, 3094, 35, 1149, 32, 672, 339, 27, 30, 31,
- 1172, 1197, 26, 28, 975, 295, 25, 23, 50, 1259, 106, 76, 77, 107, 1283, 1332, 1321, 3168, 2594, 2597,
- 161, 1994, 35, 1149, 32, 3084, 370, 1857, 30, 31, 1172, 1197, 2018, 1917, 56, 56, 3161, 1833, 3175,
- 2673, 4274, 56, 3171, 3174, 572, 3183, 5737, 1488, 1488, 1488, 1752, 1488, 3177, 3184, 3218, 160, 162,
- 3154, 35, 1149, 32, 672, 378, 27, 30, 31, 1172, 1197, 26, 28, 975, 295, 25, 23, 50, 1259, 106, 76, 77,
- 107, 1283, 1332, 1321, 3168, 2010, 2489, 161, 56, 265, 2594, 2594, 2971, 6135, 3258, 1845, 718, 71, 35,
- 2034, 424, 56, 2095, 3161, 3785, 3175, 2138, 283, 263, 264, 3174, 3724, 3183, 56, 587, 586, 142, 2082,
- 1987, 3177, 3184, 3218, 160, 159, 3214, 35, 1149, 32, 672, 307, 27, 30, 31, 1172, 1197, 26, 28, 975,
- 295, 25, 23, 50, 1259, 106, 76, 77, 107, 1283, 1332, 1321, 1428, 56, 417, 176, 1421, 56, 5754, 1705,
- 1466, 1799, 1995, 1752, 1810, 2178, 1846, 175, 418, 2277, 2277, 2185, 221, 3327, 35, 1149, 32, 672,
- 2277, 27, 30, 31, 1172, 1197, 26, 28, 975, 295, 25, 23, 50, 1259, 106, 76, 77, 107, 1283, 1332, 1321,
- 1428, 357, 101, 2257, 1421, 254, 309, 1705, 1466, 1799, 3064, 1752, 1810, 2277, 3317, 196, 3327, 35,
- 1149, 32, 672, 2353, 27, 30, 31, 1172, 1197, 26, 28, 975, 295, 25, 23, 50, 1259, 106, 76, 77, 107, 1283,
- 1332, 1321, 1428, 2594, 3078, 2418, 1421, 56, 4274, 1705, 1466, 1799, 2739, 1752, 1810, 56, 3317, 196,
- 56, 56, 5815, 2178, 2178, 6205, 2533, 2178, 2178, 56, 2450, 319, 4140, 2277, 2443, 3327, 35, 1149, 32,
- 672, 1661, 27, 30, 31, 1172, 1197, 26, 28, 975, 295, 25, 23, 50, 1259, 106, 76, 77, 107, 1283, 1332,
- 1321, 1428, 338, 211, 487, 1421, 231, 230, 1705, 1466, 1799, 2496, 1752, 1810, 2416, 3317, 196, 3327,
- 35, 1149, 32, 672, 459, 27, 30, 31, 1172, 1197, 26, 28, 975, 295, 25, 23, 50, 1259, 106, 76, 77, 107,
- 1283, 1332, 1321, 1428, 56, 591, 1867, 1421, 395, 2906, 1705, 1466, 1799, 571, 1752, 1810, 2669, 3317,
- 196, 2268, 581, 2665, 753, 2575, 3370, 3373, 2178, 2178, 491, 2006, 71, 35, 2034, 424, 3327, 35, 1149,
- 32, 672, 328, 27, 30, 31, 1172, 1197, 26, 28, 975, 295, 25, 23, 50, 1259, 106, 76, 77, 107, 1283, 1332,
- 1321, 1428, 1922, 49, 1657, 1421, 337, 234, 1705, 1466, 1799, 1019, 1752, 1810, 46, 3317, 196, 3486, 35,
- 1149, 32, 672, 458, 27, 30, 31, 1172, 1197, 26, 28, 975, 295, 25, 23, 50, 1259, 106, 76, 77, 107, 1283,
- 1332, 1321, 1428, 56, 2533, 1248, 1421, 416, 995, 1705, 1466, 1799, 265, 1752, 1810, 56, 3317, 196,
- 2927, 2914, 4329, 2178, 2178, 4591, 2023, 2178, 2490, 2534, 835, 3368, 286, 263, 264, 3327, 35, 1149,
- 32, 672, 461, 27, 30, 31, 1172, 1197, 26, 28, 975, 295, 25, 23, 50, 1259, 106, 76, 77, 107, 1283, 1332,
- 1321, 1428, 232, 333, 744, 1421, 4872, 2492, 1705, 1466, 1799, 2178, 1752, 2915, 2178, 2564, 2277, 3433,
- 35, 1149, 32, 672, 3623, 27, 30, 31, 1172, 1197, 26, 28, 975, 295, 25, 23, 50, 1259, 106, 76, 77, 107,
- 1283, 1332, 1321, 3168, 3062, 387, 2276, 413, 2796, 2594, 255, 1207, 1486, 225, 4274, 1508, 1011, 2290,
- 2566, 3855, 1929, 589, 3161, 4274, 3175, 379, 1341, 651, 384, 3174, 743, 3183, 915, 925, 192, 577, 4140,
- 2045, 3177, 3461, 3327, 35, 1149, 32, 672, 4140, 27, 30, 31, 1172, 1197, 26, 28, 975, 295, 25, 23, 50,
- 1259, 106, 76, 77, 107, 1283, 1332, 1321, 1428, 2542, 3260, 577, 1421, 2486, 2179, 1705, 1466, 1799,
- 2277, 2865, 3380, 35, 1149, 32, 672, 367, 27, 30, 31, 1172, 1197, 26, 28, 975, 295, 25, 23, 50, 1259,
- 106, 76, 77, 107, 1283, 1332, 1321, 3168, 2276, 1930, 4964, 2389, 757, 1207, 1588, 395, 6144, 2494,
- 2878, 2945, 2601, 3003, 1663, 2529, 396, 2595, 3161, 2628, 3175, 3004, 2996, 3370, 3373, 3174, 2664,
- 3183, 192, 2633, 71, 35, 2034, 424, 3425, 2905, 35, 1149, 32, 672, 1207, 27, 30, 31, 1172, 1197, 26, 28,
- 975, 295, 25, 23, 50, 1259, 106, 76, 77, 107, 1283, 1332, 1321, 3168, 49, 188, 2706, 2668, 2995, 2959,
- 1216, 2778, 2735, 1394, 2277, 1991, 1171, 3380, 35, 1149, 32, 672, 3357, 27, 30, 31, 1172, 1197, 26, 28,
- 975, 295, 25, 23, 50, 1259, 106, 76, 77, 107, 1283, 1332, 1321, 3168, 1218, 5026, 3064, 1682, 1292,
- 3006, 2822, 2011, 2929, 2793, 2881, 4274, 2960, 3117, 3124, 3092, 3176, 87, 3161, 2962, 3175, 3026,
- 1851, 3487, 2277, 3174, 2277, 3422, 3380, 35, 1149, 32, 672, 4140, 27, 30, 31, 1172, 1197, 26, 28, 975,
- 295, 25, 23, 50, 1259, 106, 76, 77, 107, 1283, 1332, 1321, 3168, 5088, 3086, 2868, 265, 3118, 1362,
- 3119, 173, 3183, 2998, 3236, 1637, 3120, 3237, 3244, 2966, 2958, 6850, 3161, 6850, 3175, 277, 263, 264,
- 2277, 3424, 3327, 35, 1149, 32, 672, 6850, 27, 30, 31, 1172, 1197, 26, 28, 975, 295, 25, 23, 50, 1259,
- 106, 76, 77, 107, 1283, 1332, 1321, 1428, 6850, 541, 2869, 1421, 2277, 2277, 2740, 3380, 35, 1149, 32,
- 672, 6850, 27, 30, 31, 1172, 1197, 26, 28, 975, 295, 25, 23, 50, 1259, 106, 76, 77, 107, 1283, 1332,
- 1321, 3168, 6850, 3327, 5212, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 539,
- 540, 6850, 6850, 3161, 323, 3386, 3327, 35, 1149, 32, 672, 6850, 27, 30, 31, 1172, 1197, 26, 28, 975,
- 295, 25, 23, 50, 1259, 106, 76, 77, 107, 1283, 1332, 1321, 1428, 2853, 3522, 6850, 2751, 3327, 35, 1149,
- 32, 672, 6850, 27, 30, 31, 1172, 1197, 26, 28, 975, 295, 25, 23, 50, 1259, 106, 76, 77, 107, 1283, 1332,
- 1321, 1428, 6850, 6850, 6850, 2788, 3380, 35, 1149, 32, 672, 6850, 27, 30, 31, 1172, 1197, 26, 28, 975,
- 295, 25, 23, 50, 1259, 106, 76, 77, 107, 1283, 1332, 1321, 3168, 1258, 35, 1149, 32, 4993, 4511, 27, 30,
- 31, 1172, 1197, 374, 28, 3380, 35, 1149, 32, 672, 3390, 27, 30, 31, 1172, 1197, 26, 28, 975, 295, 25,
- 23, 50, 1259, 106, 76, 77, 107, 1283, 1332, 1321, 3168, 6850, 6850, 6850, 71, 35, 2034, 424, 2776, 71,
- 35, 2034, 424, 4451, 3260, 56, 2276, 6850, 2276, 3420, 1207, 1207, 6850, 1207, 6850, 6850, 6850, 6850,
- 6850, 367, 2092, 6850, 6850, 354, 2260, 356, 49, 349, 1437, 386, 6850, 49, 2181, 188, 192, 2783, 192,
- 1991, 1282, 6850, 348, 1394, 1991, 799, 3327, 35, 1149, 32, 672, 5914, 27, 30, 31, 1172, 1197, 26, 28,
- 975, 295, 25, 23, 50, 1259, 106, 76, 77, 107, 1283, 1332, 1321, 2535, 265, 6850, 6850, 6850, 6850, 6850,
- 387, 6850, 6850, 56, 6850, 6850, 265, 6850, 1207, 265, 6850, 6850, 280, 263, 264, 341, 345, 1763, 6850,
- 6850, 379, 1341, 651, 384, 283, 263, 264, 569, 263, 264, 1776, 188, 6850, 6850, 2641, 6850, 2774, 6850,
- 2983, 1521, 3327, 35, 1149, 32, 672, 3572, 27, 30, 31, 1172, 1197, 26, 28, 975, 295, 25, 23, 50, 1259,
- 106, 76, 77, 107, 1283, 1332, 1321, 2553, 3327, 35, 1149, 32, 672, 6850, 27, 30, 31, 1172, 1197, 26, 28,
- 975, 295, 25, 23, 50, 1259, 106, 76, 77, 107, 1283, 1332, 1321, 2608, 3327, 35, 1149, 32, 672, 6850, 27,
- 30, 31, 1172, 1197, 26, 28, 975, 295, 25, 23, 50, 1259, 106, 76, 77, 107, 1283, 1332, 1321, 2642, 3327,
- 35, 1149, 32, 672, 6850, 27, 30, 31, 1172, 1197, 26, 28, 975, 295, 25, 23, 50, 1259, 106, 76, 77, 107,
- 1283, 1332, 1321, 3374, 3327, 35, 1149, 32, 672, 6850, 27, 30, 31, 1172, 1197, 26, 28, 975, 295, 25, 23,
- 50, 1259, 106, 76, 77, 107, 1283, 1332, 1321, 3383, 3327, 35, 1149, 32, 672, 6850, 27, 30, 31, 1172,
- 1197, 26, 28, 975, 295, 25, 23, 50, 1259, 106, 76, 77, 107, 1283, 1332, 1321, 3385, 1339, 35, 1149, 32,
- 4910, 4448, 27, 30, 31, 1172, 1197, 374, 28, 3327, 35, 1149, 32, 672, 6850, 27, 30, 31, 1172, 1197, 26,
- 28, 975, 295, 25, 23, 50, 1259, 106, 76, 77, 107, 1283, 1332, 1321, 2905, 3759, 35, 1149, 32, 4910,
- 4755, 27, 30, 31, 1172, 1197, 374, 28, 6850, 1220, 35, 3525, 32, 4993, 4511, 27, 30, 31, 1172, 1197,
- 374, 28, 6850, 6850, 6850, 56, 386, 354, 2260, 356, 1207, 349, 1437, 6850, 387, 6850, 6850, 2276, 2276,
- 6850, 6850, 6850, 1207, 1207, 3475, 6850, 1508, 1904, 6850, 6850, 3855, 3855, 6850, 188, 379, 1341, 651,
- 384, 6850, 6850, 6850, 2871, 3260, 6850, 3473, 192, 192, 354, 2260, 356, 6850, 349, 1437, 2292, 387,
- 6850, 6850, 367, 1207, 6850, 6850, 354, 2260, 356, 2987, 349, 1437, 6850, 6850, 3539, 35, 2034, 424,
- 4441, 379, 1341, 651, 384, 2455, 3260, 3260, 188, 270, 295, 1776, 6850, 6850, 5914, 6850, 597, 6850,
- 6850, 6850, 6850, 4232, 4232, 3327, 35, 1149, 32, 672, 307, 27, 30, 31, 1172, 1197, 26, 28, 975, 295,
- 25, 23, 50, 1259, 106, 76, 77, 107, 2462, 265, 6850, 2988, 3088, 2382, 35, 1149, 32, 4910, 4511, 27, 30,
- 31, 1172, 1197, 374, 28, 401, 268, 263, 264, 3327, 35, 1149, 32, 672, 6850, 27, 30, 31, 1172, 1197, 26,
- 28, 975, 295, 25, 23, 50, 1259, 106, 76, 77, 107, 1283, 1332, 2649, 6850, 453, 455, 3524, 6850, 6850,
- 6850, 6850, 308, 6850, 6850, 6850, 275, 278, 281, 1212, 985, 6850, 6850, 94, 96, 6850, 6850, 6850, 6850,
- 6850, 6850, 6850, 1575, 354, 2260, 356, 6850, 349, 1437, 909, 2264, 2396, 2858, 5887, 284, 3327, 35,
- 1149, 32, 672, 348, 27, 30, 31, 1172, 1197, 26, 28, 975, 295, 25, 23, 50, 1259, 106, 76, 77, 107, 1283,
- 1332, 2715, 3216, 259, 243, 35, 2034, 424, 599, 6850, 6850, 1508, 604, 6850, 2260, 3855, 6850, 6850,
- 3855, 4274, 6850, 56, 71, 35, 2034, 424, 1207, 6850, 6850, 6850, 261, 188, 6850, 341, 345, 1763, 49,
- 6850, 6850, 3079, 6850, 4140, 212, 6850, 6850, 2594, 6850, 1991, 3274, 188, 6850, 236, 248, 653, 307,
- 6850, 3324, 1955, 235, 245, 246, 247, 249, 3572, 3260, 1, 6850, 3260, 6850, 201, 599, 2917, 2180, 6850,
- 1508, 1832, 6850, 1207, 3855, 367, 4274, 200, 367, 6850, 6850, 215, 199, 202, 203, 204, 205, 206, 261,
- 188, 71, 35, 2034, 424, 6850, 6850, 188, 3079, 378, 6850, 212, 6850, 6850, 2594, 3276, 4675, 6850, 233,
- 6144, 236, 248, 653, 6850, 395, 6850, 6850, 235, 245, 246, 247, 249, 6850, 49, 3260, 375, 6850, 6850,
- 201, 1917, 3370, 3373, 630, 6850, 1991, 959, 6850, 6850, 6850, 367, 200, 6850, 213, 6850, 216, 199, 202,
- 203, 204, 205, 206, 1416, 35, 1149, 32, 4910, 4448, 27, 30, 31, 1172, 1197, 374, 28, 3327, 35, 1149, 32,
- 672, 5962, 27, 30, 31, 1172, 1197, 26, 28, 975, 295, 25, 23, 50, 1259, 106, 76, 77, 107, 1283, 2355,
- 6850, 6850, 3327, 35, 1149, 32, 672, 4502, 27, 30, 31, 1172, 1197, 26, 28, 975, 295, 25, 23, 50, 1259,
- 106, 76, 77, 107, 1283, 2421, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 354, 2260, 356, 6850, 349, 1437,
- 6850, 387, 6850, 6850, 6850, 6850, 1770, 35, 1149, 32, 4993, 588, 27, 30, 31, 1172, 1197, 374, 28, 6850,
- 6850, 379, 1341, 651, 384, 329, 35, 2034, 424, 6850, 6850, 589, 2027, 35, 2034, 424, 1751, 6850, 2003,
- 35, 2034, 424, 6850, 6850, 6850, 345, 6850, 6850, 6850, 6850, 599, 6850, 6850, 6850, 6850, 6850, 6850,
- 49, 6850, 3260, 56, 6850, 56, 6850, 49, 1207, 6850, 4274, 1991, 1298, 307, 6850, 261, 188, 368, 1991,
- 2051, 6850, 354, 2260, 356, 3079, 350, 1437, 212, 387, 2260, 2594, 188, 378, 3855, 4274, 4707, 236, 248,
- 653, 2011, 6850, 6850, 2917, 235, 245, 246, 247, 249, 381, 1341, 651, 384, 431, 56, 201, 6850, 4140,
- 599, 1207, 6850, 6850, 329, 35, 2034, 424, 718, 200, 6850, 6850, 6850, 3624, 199, 202, 203, 204, 205,
- 206, 6850, 6850, 261, 188, 188, 3260, 6850, 6850, 6850, 2150, 3369, 3079, 2378, 6850, 212, 6850, 49,
- 2594, 6850, 6850, 367, 6850, 6850, 236, 248, 653, 6850, 1991, 47, 6850, 235, 245, 246, 247, 249, 72,
- 6850, 517, 6850, 2180, 6850, 201, 599, 6850, 599, 243, 35, 2034, 424, 6850, 4675, 1101, 6850, 200, 6850,
- 395, 6850, 210, 199, 202, 203, 204, 205, 206, 261, 188, 3270, 188, 6850, 3508, 1917, 3370, 3373, 3079,
- 1207, 3079, 212, 49, 212, 2594, 6850, 6850, 6850, 6850, 6850, 236, 248, 653, 1991, 47, 6850, 6850, 235,
- 245, 246, 247, 249, 188, 6850, 603, 6850, 6850, 6850, 201, 599, 194, 56, 243, 35, 2034, 424, 1207, 1531,
- 2775, 6850, 200, 6850, 228, 4274, 208, 199, 202, 203, 204, 205, 206, 261, 188, 329, 35, 2034, 424, 6850,
- 6850, 188, 3079, 6850, 6850, 212, 49, 378, 2594, 2444, 6850, 592, 6850, 6850, 236, 248, 653, 1991, 2729,
- 6850, 6850, 235, 245, 246, 247, 249, 6850, 49, 689, 6850, 6850, 6850, 201, 599, 6850, 6850, 6850, 6850,
- 1991, 47, 718, 4459, 56, 6850, 200, 6850, 6850, 4274, 209, 199, 202, 203, 204, 205, 206, 261, 188, 243,
- 35, 2034, 424, 595, 2842, 56, 3079, 6850, 6850, 212, 1207, 378, 2594, 6850, 6850, 6850, 6850, 6850, 236,
- 248, 653, 6850, 6850, 6850, 6850, 235, 245, 246, 247, 249, 6850, 49, 775, 188, 6850, 6850, 201, 599,
- 6850, 6850, 6850, 3459, 1991, 1488, 718, 6850, 6062, 229, 200, 6850, 6850, 6850, 219, 199, 202, 203,
- 204, 205, 206, 261, 188, 243, 35, 2034, 424, 2209, 4459, 56, 3079, 6850, 6850, 212, 1207, 3673, 2594,
- 6850, 6850, 6850, 6850, 6850, 236, 248, 653, 6850, 6850, 6850, 6850, 235, 245, 246, 247, 249, 6850, 49,
- 861, 188, 6850, 6850, 201, 599, 6850, 56, 6850, 1564, 1991, 47, 1207, 6850, 56, 6850, 200, 6850, 6850,
- 4274, 3630, 199, 202, 203, 204, 205, 206, 261, 188, 243, 35, 2034, 424, 6850, 885, 188, 3079, 6850,
- 6850, 212, 6850, 378, 2594, 3672, 3129, 6850, 6850, 6850, 236, 248, 653, 6850, 6850, 6850, 6850, 235,
- 245, 246, 247, 249, 6850, 49, 947, 6850, 6850, 6850, 201, 599, 6850, 6850, 6850, 6850, 1991, 47, 718,
- 6850, 56, 6850, 200, 6850, 6850, 4274, 224, 199, 202, 203, 204, 205, 206, 261, 188, 243, 35, 2034, 424,
- 2246, 1249, 6850, 3079, 6850, 6850, 212, 6850, 378, 2594, 6850, 6850, 6850, 6850, 6850, 236, 248, 653,
- 6850, 6850, 6850, 6850, 235, 245, 246, 247, 249, 6850, 49, 1033, 6850, 6850, 6850, 201, 599, 6850, 6850,
- 6850, 6850, 1991, 47, 718, 6850, 6850, 6850, 200, 6850, 6850, 6850, 218, 199, 202, 203, 204, 205, 206,
- 261, 188, 71, 35, 2034, 424, 1870, 1384, 6850, 3079, 6850, 6850, 212, 6850, 6850, 2594, 6850, 6850,
- 6850, 6850, 6850, 236, 248, 653, 6850, 6850, 6850, 6850, 235, 245, 246, 247, 249, 6850, 49, 6850, 6850,
- 6850, 6850, 201, 6850, 6850, 6850, 6850, 6850, 1991, 642, 6850, 6850, 6850, 6850, 200, 6850, 6850, 6850,
- 227, 199, 202, 203, 204, 205, 206, 3327, 35, 1149, 32, 672, 6850, 27, 30, 31, 1172, 1197, 26, 28, 975,
- 295, 25, 23, 50, 1259, 106, 76, 77, 107, 2464, 3327, 35, 1149, 32, 672, 6850, 27, 30, 31, 1172, 1197,
- 26, 28, 975, 295, 25, 23, 50, 1259, 106, 76, 77, 107, 2471, 3638, 35, 553, 6850, 6850, 6850, 6850, 6850,
- 6850, 6850, 6850, 6850, 6850, 270, 295, 3327, 35, 1149, 32, 672, 6850, 27, 30, 31, 1172, 1197, 26, 28,
- 975, 295, 25, 23, 50, 1259, 106, 76, 77, 85, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 3327, 2037,
- 1149, 2045, 672, 265, 27, 30, 31, 1172, 1197, 26, 28, 975, 295, 25, 23, 50, 1259, 106, 76, 77, 84, 268,
- 263, 264, 3327, 35, 1149, 32, 672, 6850, 27, 30, 31, 1172, 1197, 26, 28, 975, 295, 25, 23, 50, 1259,
- 106, 76, 77, 83, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850,
- 6850, 275, 278, 281, 1212, 985, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850,
- 6850, 6850, 6850, 6850, 6850, 6850, 2198, 3567, 3881, 3893, 5747, 3327, 35, 1149, 32, 672, 6850, 27, 30,
- 31, 1172, 1197, 26, 28, 975, 295, 25, 23, 50, 1259, 106, 76, 77, 82, 3327, 35, 1149, 32, 672, 6850, 27,
- 30, 31, 1172, 1197, 26, 28, 975, 295, 25, 23, 50, 1259, 106, 76, 77, 81, 6850, 6850, 6850, 6850, 562,
- 563, 567, 3327, 35, 1149, 32, 672, 6850, 27, 30, 31, 1172, 1197, 26, 28, 975, 295, 25, 23, 50, 1259,
- 106, 76, 77, 80, 3896, 3327, 35, 1149, 32, 672, 6850, 27, 30, 31, 1172, 1197, 26, 28, 975, 295, 25, 23,
- 50, 1259, 106, 76, 77, 79, 3327, 35, 1149, 32, 672, 6850, 27, 30, 31, 1172, 1197, 26, 28, 975, 295, 25,
- 23, 50, 1259, 106, 76, 77, 78, 3033, 35, 1149, 32, 672, 6850, 27, 30, 31, 1172, 1197, 26, 28, 975, 295,
- 25, 23, 50, 1259, 106, 76, 77, 104, 3327, 35, 1149, 32, 672, 6850, 27, 30, 31, 1172, 1197, 26, 28, 975,
- 295, 25, 23, 50, 1259, 106, 76, 77, 109, 3327, 35, 1149, 32, 672, 6850, 27, 30, 31, 1172, 1197, 26, 28,
- 975, 295, 25, 23, 50, 1259, 106, 76, 77, 108, 3327, 35, 1149, 32, 672, 6850, 27, 30, 31, 1172, 1197, 26,
- 28, 975, 295, 25, 23, 50, 1259, 106, 76, 77, 105, 1492, 35, 3525, 32, 4910, 4511, 27, 30, 31, 1172,
- 1197, 374, 28, 3274, 35, 1149, 32, 672, 6850, 27, 30, 31, 1172, 1197, 26, 28, 975, 295, 25, 23, 50,
- 1259, 86, 76, 77, 1603, 6850, 6850, 56, 56, 4274, 6850, 6850, 4274, 599, 3687, 35, 553, 6850, 6850,
- 6850, 6850, 1870, 6850, 6850, 6850, 6850, 4274, 271, 295, 6850, 6850, 261, 6850, 6850, 378, 378, 188,
- 6850, 6850, 6850, 6850, 354, 2260, 356, 1494, 349, 1437, 6850, 261, 6850, 6850, 6850, 238, 248, 653,
- 6850, 6850, 6850, 2455, 237, 245, 246, 247, 249, 6850, 265, 6850, 718, 718, 238, 248, 653, 6850, 6850,
- 6850, 6850, 237, 245, 246, 247, 249, 6850, 1959, 269, 263, 264, 6850, 4274, 545, 1436, 6850, 6850, 6850,
- 6850, 239, 241, 243, 3469, 6850, 250, 240, 242, 6850, 2271, 35, 2034, 424, 6850, 6850, 261, 6850, 239,
- 241, 243, 3469, 6850, 250, 240, 242, 6850, 71, 35, 2034, 424, 276, 279, 282, 1212, 985, 6850, 238, 248,
- 653, 6850, 2407, 49, 6097, 237, 245, 246, 247, 249, 6850, 6850, 6850, 6850, 1991, 47, 454, 455, 3524,
- 2605, 49, 6097, 3589, 35, 2034, 424, 4441, 6850, 6850, 6850, 6850, 1991, 2048, 6850, 6850, 271, 295,
- 6850, 719, 6850, 239, 241, 243, 3469, 6850, 250, 240, 242, 6850, 1385, 35, 1149, 32, 4993, 307, 27, 30,
- 31, 1172, 1197, 374, 28, 6850, 1296, 6850, 6850, 6850, 5951, 4274, 6850, 562, 563, 568, 265, 6850, 6850,
- 6850, 6850, 6850, 6850, 2737, 6850, 6097, 6850, 6850, 6850, 71, 35, 2034, 424, 261, 269, 263, 264, 6850,
- 6850, 6850, 1385, 35, 1149, 32, 4993, 3260, 27, 30, 31, 1172, 1197, 374, 28, 6850, 828, 443, 6002, 6850,
- 6850, 6850, 368, 49, 6850, 6850, 354, 2260, 356, 6850, 352, 1437, 6850, 308, 1991, 2660, 6850, 276, 279,
- 282, 1212, 985, 2315, 35, 1149, 32, 4910, 4194, 27, 30, 31, 1172, 1197, 374, 28, 3260, 6850, 6850, 444,
- 445, 446, 3469, 2048, 56, 6850, 285, 6850, 4274, 4274, 6850, 368, 6850, 6850, 6850, 354, 2260, 356,
- 1692, 350, 1437, 6850, 439, 4274, 3467, 6850, 6850, 6850, 6850, 6850, 261, 378, 6850, 6850, 6850, 6850,
- 6850, 243, 35, 2034, 424, 6850, 6850, 2182, 6850, 261, 6850, 6850, 599, 6850, 6850, 238, 248, 653, 6850,
- 351, 3484, 356, 237, 245, 246, 247, 249, 6850, 718, 6850, 238, 248, 653, 49, 378, 188, 6850, 237, 245,
- 246, 247, 249, 1781, 220, 1991, 47, 6850, 4274, 6850, 543, 447, 450, 6850, 6850, 6850, 6850, 2137, 239,
- 241, 243, 3469, 4274, 581, 240, 242, 6850, 6850, 2512, 1578, 261, 6850, 6850, 239, 241, 243, 3469, 6850,
- 580, 240, 242, 2822, 6850, 6850, 261, 6850, 4274, 6850, 6850, 6850, 2126, 238, 248, 653, 3855, 6850,
- 6850, 6850, 237, 245, 246, 247, 249, 6850, 6850, 238, 248, 653, 4140, 6850, 6850, 6850, 237, 245, 246,
- 247, 249, 2226, 6850, 6850, 2598, 6850, 4274, 6850, 222, 6850, 6850, 243, 35, 2034, 424, 6850, 6850,
- 239, 241, 243, 3469, 1179, 251, 240, 242, 5951, 4274, 3260, 261, 6850, 6850, 239, 241, 243, 3469, 2882,
- 340, 240, 242, 6850, 4274, 6850, 368, 49, 6850, 6850, 6850, 6850, 261, 238, 248, 653, 6850, 387, 1991,
- 47, 237, 245, 246, 247, 249, 6850, 4140, 2459, 35, 2034, 424, 6850, 541, 828, 443, 6002, 56, 381, 1341,
- 651, 384, 599, 1625, 6850, 6850, 6850, 56, 6850, 6850, 6850, 6850, 4274, 6850, 3280, 6850, 239, 241,
- 243, 3469, 49, 535, 240, 242, 378, 188, 6850, 6850, 6850, 6850, 6850, 1991, 47, 1394, 378, 6850, 444,
- 445, 446, 3469, 538, 540, 6850, 56, 6850, 56, 6850, 56, 599, 6850, 599, 6850, 599, 6850, 6850, 2540,
- 6850, 718, 6850, 6850, 6850, 3467, 6850, 541, 6850, 6850, 6850, 718, 6850, 6850, 378, 188, 378, 188,
- 378, 188, 6850, 3564, 1635, 220, 6850, 220, 6850, 220, 6850, 6850, 6850, 6850, 596, 6850, 6850, 6850,
- 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 2512, 6850, 2512, 6850, 2512, 6850,
- 6850, 538, 540, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 447, 449, 6850, 6850,
- 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850,
- 6850, 6850, 6850, 3620, 6850, 6850, 627, 6850, 6850, 5928, 6850, 6850, 6850, 6850, 6850, 3429, 6850,
- 3530, 6850, 3584, 6850, 0, 39, 6865, 0, 39, 6864, 0, 1238, 29, 0, 476, 1324, 0, 490, 1369, 0, 38, 646,
- 0, 38, 6865, 0, 38, 6864, 0, 4005, 125, 0, 1, 480, 0, 494, 1381, 0, 493, 1478, 0, 956, 91, 0, 1238, 423,
- 0, 35, 33, 0, 32, 34, 0, 39, 646, 0, 1, 1085, 0, 1, 7156, 0, 1, 7155, 0, 1, 7154, 0, 1, 7153, 0, 1,
- 7152, 0, 1, 7151, 0, 1, 7150, 0, 1, 7149, 0, 1, 7148, 0, 1, 7147, 0, 1, 7146, 0, 39, 1, 6865, 0, 39, 1,
- 6864, 0, 317, 430, 0, 317, 322, 0, 7117, 274, 0, 7116, 274, 0, 7223, 274, 0, 7222, 274, 0, 7144, 274, 0,
- 7143, 274, 0, 7142, 274, 0, 7141, 274, 0, 7140, 274, 0, 7139, 274, 0, 7138, 274, 0, 7137, 274, 0, 7156,
- 274, 0, 7155, 274, 0, 7154, 274, 0, 7153, 274, 0, 7152, 274, 0, 7151, 274, 0, 7150, 274, 0, 7149, 274,
- 0, 7148, 274, 0, 7147, 274, 0, 7146, 274, 0, 39, 6865, 274, 0, 39, 6864, 274, 0, 6888, 274, 0, 6865, 48,
- 0, 6864, 48, 0, 43, 6886, 0, 43, 37, 0, 4005, 127, 0, 4005, 126, 0, 6856, 1, 0, 6855, 1, 0, 3359, 270,
- 0, 32, 424, 0, 29, 423, 0, 1, 5715, 0, 1, 5364, 0, 1, 5421, 0, 1, 5487, 0, 1, 5510, 0, 1, 5540, 0, 1,
- 5564, 0, 1, 5587, 0, 1, 3493, 0, 1042, 1, 0, 1, 2317, 0, 1, 5395, 0, 1, 6872, 0, 1, 6871, 0, 1, 6870, 0,
- 1, 6869, 0, 1, 6868, 0, 1, 6867, 0, 1, 6866, 0, 1, 638, 0, 1, 641, 0, 1, 652, 0, 1, 714, 0, 1, 751, 0,
- 39, 1, 0, 366, 481, 0, 1, 92, 0, 47, 37, 0, 6888, 1, 0, 6865, 274, 0, 6864, 274, 0, 537, 3468, 0, 6888,
- 1, 262, 0, 39, 1, 262, 0, 262, 452, 0, 6865, 37, 0, 6864, 37, 0, 6886, 45, 0, 37, 45, 0, 6865, 36, 0,
- 6864, 36, 0, 6865, 2, 37, 0, 6864, 2, 37, 0, 6860, 441, 0, 6859, 441, 0, 1, 2380, 0, 1, 646, 0, 262,
- 451, 0, 366, 95, 0, 35, 73, 0, 2733, 353, 0, 1, 366, 0, 3867, 312, 0, 537, 6037, 0, 1, 262, 0, 262, 253,
- 0, 1, 743, 0, 1, 2001, 0, 262, 252, 0, 6862, 1, 0, 6858, 1, 0, 1, 262, 3576, 0, 6859, 262, 0, 3577, 262,
- 0, 6862, 419, 0, 6861, 419, 0, 3622, 262, 0, 10, 12, 0, 8, 10, 12, 0, 3627, 226, 0, 217, 5150, 0, 3631,
- 419, 0, 8, 12, 0 };
- }
-
- public final static char baseAction[] = BaseAction.baseAction;
-
- @Override
- public final int baseAction(int index) {
- return baseAction[index];
- }
-
- public final static char lhs[] = baseAction;
-
- @Override
- public final int lhs(int index) {
- return lhs[index];
- }
-
- public interface TermCheck {
- public final static byte termCheck[] = { 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 0, 56, 57, 58, 59, 0, 61, 62, 63, 0, 65, 66, 67, 0, 69, 0, 1, 2,
- 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
- 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 86, 87, 56, 57, 58, 59, 0, 61, 62, 63, 4, 65, 66,
- 67, 94, 69, 92, 93, 0, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
- 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
- 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 0, 56, 57, 58, 59, 0, 61, 62,
- 63, 4, 65, 66, 67, 0, 69, 0, 1, 2, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 0, 1, 2, 3, 4, 5,
- 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
- 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 86, 87, 56, 57, 58,
- 59, 0, 61, 62, 63, 95, 65, 66, 67, 0, 69, 0, 1, 2, 0, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 0,
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
- 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0,
- 68, 56, 57, 58, 59, 0, 61, 62, 63, 0, 65, 66, 67, 0, 69, 0, 3, 0, 0, 74, 75, 76, 77, 78, 79, 80, 81, 82,
- 83, 84, 85, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
- 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
- 51, 52, 53, 86, 87, 56, 57, 58, 59, 0, 61, 62, 63, 0, 65, 66, 67, 94, 69, 86, 87, 86, 87, 74, 75, 76,
- 77, 78, 79, 80, 81, 82, 83, 84, 85, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 0, 56, 57, 58, 59, 0, 61, 62, 63, 0, 65, 66, 67, 94, 69, 92, 93,
- 0, 0, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
- 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 86, 87, 56, 57, 58, 59, 0, 61, 62, 63, 95, 65, 66,
- 67, 94, 69, 92, 93, 86, 87, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 0, 1, 2, 3, 4, 5, 6, 7, 8,
- 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
- 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 0, 56, 57, 58, 59, 0, 61,
- 62, 63, 0, 65, 66, 67, 0, 69, 0, 1, 2, 5, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 0, 1, 2, 3, 4,
- 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 86, 87, 56, 57,
- 58, 59, 0, 61, 62, 63, 4, 65, 66, 67, 0, 69, 101, 102, 4, 95, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
- 84, 85, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
- 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
- 52, 53, 0, 0, 56, 57, 58, 59, 0, 61, 62, 63, 0, 65, 66, 67, 0, 69, 0, 1, 2, 0, 74, 75, 76, 77, 78, 79,
- 80, 81, 82, 83, 84, 85, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
- 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
- 48, 49, 50, 51, 52, 53, 86, 87, 56, 57, 58, 59, 0, 61, 62, 63, 0, 65, 66, 67, 4, 69, 92, 93, 0, 0, 74,
- 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
- 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 68, 0, 56, 57, 58, 59, 0, 61, 62, 63, 9, 65, 66, 67, 0, 69,
- 96, 0, 1, 2, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 0, 1, 2, 3, 4, 5, 6, 7, 8, 40, 10, 11, 12,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
- 39, 55, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 0, 56, 57, 58, 59, 0, 1, 2, 3, 4, 5, 6,
- 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
- 0, 1, 2, 0, 4, 0, 40, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 1, 2, 53, 0, 55, 56, 57, 58, 5, 0, 61, 62, 63, 0, 1,
- 2, 3, 4, 0, 6, 71, 8, 73, 5, 38, 7, 38, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 88, 11, 12, 13, 14, 15, 16, 17,
- 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 71, 0, 114, 115, 116, 0, 1, 2, 3, 4, 5,
- 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
- 33, 91, 0, 99, 100, 0, 0, 40, 98, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 53, 0, 55, 56, 57, 58, 0, 64, 61, 62,
- 63, 68, 0, 0, 0, 3, 0, 5, 71, 7, 73, 9, 6, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 88, 0, 1, 2,
- 3, 4, 55, 6, 54, 8, 0, 34, 35, 36, 37, 60, 0, 40, 64, 3, 70, 0, 1, 2, 60, 70, 114, 115, 116, 0, 9, 54,
- 0, 1, 2, 3, 4, 60, 6, 0, 8, 64, 64, 89, 90, 68, 68, 70, 71, 72, 73, 101, 102, 103, 104, 105, 106, 107,
- 108, 109, 110, 111, 112, 86, 87, 0, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
- 105, 106, 107, 108, 109, 110, 111, 112, 69, 120, 60, 64, 117, 118, 119, 120, 0, 34, 35, 3, 0, 5, 0, 7,
- 4, 9, 0, 1, 2, 3, 4, 9, 6, 0, 8, 0, 0, 1, 2, 3, 4, 5, 0, 7, 0, 10, 4, 5, 91, 7, 34, 35, 36, 37, 0, 98,
- 40, 3, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 54, 0, 1, 2, 54, 4, 60, 0, 1, 2, 64, 4, 0, 6, 68,
- 8, 70, 71, 72, 73, 0, 69, 59, 0, 1, 2, 60, 71, 54, 6, 64, 8, 86, 87, 68, 89, 90, 91, 92, 93, 94, 95, 96,
- 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 0, 1, 2, 55, 117, 118, 119,
- 120, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, 33, 0, 0, 1, 2, 3, 4, 40, 6, 0, 8, 0, 1, 2, 55, 4, 5, 0, 7, 0, 53, 0, 55, 56,
- 57, 58, 0, 0, 61, 62, 63, 4, 65, 7, 114, 115, 116, 0, 1, 2, 73, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 32, 33, 0, 53, 88, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
- 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 70, 0, 0, 1, 2, 40, 4, 0, 6, 91, 8, 4, 66, 67, 0, 0, 98, 91,
- 53, 54, 55, 56, 57, 58, 98, 0, 61, 62, 63, 22, 65, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
- 111, 112, 0, 1, 2, 3, 4, 5, 6, 7, 8, 38, 88, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 1, 2, 0, 4, 5, 40, 7, 71, 0, 1,
- 2, 9, 4, 5, 60, 7, 0, 0, 53, 3, 55, 56, 57, 58, 0, 113, 61, 62, 63, 0, 65, 0, 114, 115, 116, 0, 1, 2,
- 73, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 0, 88, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 1, 2, 60, 4, 5,
- 40, 7, 0, 1, 2, 0, 4, 0, 6, 4, 8, 54, 0, 53, 7, 55, 56, 57, 58, 0, 0, 61, 62, 63, 0, 65, 118, 22, 0, 1,
- 2, 96, 4, 73, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 89, 90, 88, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
- 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 55, 0,
- 1, 2, 68, 64, 40, 6, 71, 8, 0, 1, 2, 0, 0, 0, 6, 0, 0, 53, 5, 55, 56, 57, 58, 0, 9, 61, 62, 63, 0, 65,
- 0, 3, 0, 1, 2, 23, 24, 73, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 0, 88, 0, 1, 2, 3, 4, 5,
- 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
- 33, 72, 60, 0, 60, 68, 64, 40, 5, 0, 68, 0, 66, 67, 0, 86, 87, 3, 54, 54, 53, 96, 55, 56, 57, 58, 99,
- 100, 61, 62, 63, 0, 65, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 1, 2, 3, 4, 5, 0, 7, 89, 90,
- 88, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, 33, 0, 1, 2, 0, 4, 64, 40, 0, 0, 0, 0, 0, 99, 100, 0, 60, 9, 3, 9, 53, 9, 55,
- 56, 57, 58, 64, 0, 61, 62, 63, 0, 65, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 1, 2, 40, 4,
- 40, 6, 40, 8, 0, 88, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
- 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 1, 2, 0, 4, 5, 40, 7, 0, 9, 55, 0, 1, 2, 95, 7, 0, 0, 54,
- 53, 0, 55, 56, 57, 58, 9, 9, 61, 62, 63, 0, 65, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 88, 0, 1, 2, 3, 4, 0, 6, 0, 8, 9, 3, 34, 35, 36, 37, 38, 39, 72, 41, 42, 43, 44,
- 45, 46, 47, 48, 49, 50, 51, 52, 0, 1, 2, 72, 72, 5, 59, 0, 0, 62, 40, 3, 97, 66, 67, 0, 1, 2, 3, 4, 5,
- 6, 7, 8, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 1, 2, 3, 4, 97, 6, 0, 8, 9, 70, 113, 34,
- 35, 36, 37, 38, 39, 55, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 1, 2, 0, 0, 0, 59, 0, 3, 40,
- 54, 64, 9, 66, 67, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 34,
- 35, 3, 34, 35, 0, 1, 2, 0, 1, 2, 34, 35, 36, 37, 38, 39, 55, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
- 52, 0, 1, 2, 68, 96, 0, 59, 72, 0, 0, 0, 0, 7, 0, 3, 0, 69, 9, 9, 9, 73, 0, 1, 2, 3, 4, 5, 6, 7, 8, 55,
- 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 1, 2, 0, 0, 0, 6, 40, 0, 0, 0, 3, 34, 35, 36, 37, 38,
- 39, 0, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 1, 2, 68, 68, 64, 59, 73, 73, 0, 71, 0, 3, 66,
- 67, 0, 1, 2, 3, 4, 5, 6, 7, 8, 55, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 60, 0, 0, 0, 54, 64,
- 64, 70, 0, 0, 9, 9, 34, 35, 36, 37, 38, 39, 55, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 1, 2,
- 0, 0, 0, 59, 3, 89, 90, 0, 0, 9, 66, 67, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
- 18, 19, 20, 21, 60, 60, 69, 97, 0, 70, 72, 3, 0, 0, 0, 3, 34, 35, 36, 37, 38, 39, 55, 41, 42, 43, 44,
- 45, 46, 47, 48, 49, 50, 51, 52, 97, 64, 0, 1, 2, 0, 59, 0, 73, 0, 0, 0, 70, 3, 71, 0, 69, 0, 1, 2, 3, 4,
- 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 60, 0, 1, 2, 0, 0, 0, 3, 0, 5, 6, 7, 34,
- 35, 36, 37, 38, 39, 55, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 60, 0, 1, 2, 0, 70, 59, 34, 35,
- 36, 37, 74, 39, 68, 0, 0, 69, 0, 3, 0, 3, 113, 0, 9, 9, 55, 0, 54, 0, 54, 0, 54, 0, 60, 0, 3, 97, 64,
- 10, 66, 67, 68, 68, 70, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 55, 0, 54, 86, 87, 0, 89, 90,
- 91, 92, 93, 94, 95, 96, 0, 10, 99, 100, 101, 60, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 72,
- 72, 54, 61, 117, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 53, 0,
- 55, 0, 0, 4, 0, 0, 4, 3, 54, 34, 35, 36, 37, 38, 39, 10, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 54, 0, 54, 113, 54, 54,
- 0, 53, 9, 55, 64, 34, 35, 36, 37, 38, 39, 0, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 0, 0, 0,
- 0, 89, 90, 3, 0, 9, 0, 55, 118, 66, 67, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 10, 11, 12, 13, 14, 15, 16, 17,
- 18, 19, 20, 21, 0, 0, 68, 0, 72, 55, 0, 0, 0, 0, 71, 0, 34, 35, 36, 37, 38, 39, 54, 41, 42, 43, 44, 45,
- 46, 47, 48, 49, 50, 51, 52, 0, 0, 68, 3, 71, 73, 59, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 10, 11, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 54, 54, 54, 54, 0, 54, 0, 0, 0, 0, 64, 71, 34, 35, 36, 37, 38, 39, 75, 41,
- 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 121, 0, 3, 89, 90, 0, 60, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0,
- 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 54, 0, 0, 0, 0, 3, 3, 3, 0, 0, 64, 0, 34, 35, 36, 37,
- 38, 39, 70, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 0, 0, 0, 89, 90, 59, 0, 1, 2, 3, 4, 5, 6,
- 7, 8, 71, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 70, 34, 35,
- 36, 37, 38, 39, 70, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 0, 0, 0, 0, 0, 59, 0, 1, 2, 3, 4,
- 5, 6, 7, 8, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 34,
- 35, 36, 37, 38, 39, 71, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 0, 0, 0, 0, 0, 59, 0, 1, 2,
- 3, 4, 5, 6, 7, 8, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70,
- 70, 34, 35, 36, 37, 38, 39, 70, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 1, 2, 3, 4, 5, 6, 7,
- 8, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 35, 36,
- 37, 38, 39, 0, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 10, 11, 12,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 35, 36, 37, 38, 39, 0, 41,
- 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 10, 11, 12, 13, 14, 15, 16,
- 17, 18, 19, 20, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 35, 36, 37, 38, 39, 0, 41, 42, 43, 44, 45,
- 46, 47, 48, 49, 50, 51, 52, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
- 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 34, 35, 36, 37, 38, 39, 0, 41, 42, 43, 44, 45, 46, 47, 48, 49,
- 50, 51, 52, 0, 1, 2, 0, 4, 0, 0, 0, 0, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
- 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 53, 4, 0,
- 56, 57, 58, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 32, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 53, 0, 0, 56, 57, 58, 10, 11, 12, 13,
- 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 53, 0, 0, 56, 57, 58, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
- 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, 3, 0,
- 53, 0, 0, 56, 57, 58, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 0, 1, 2, 3, 4, 40, 6, 0, 8, 9,
- 3, 0, 36, 37, 0, 0, 9, 0, 0, 54, 0, 0, 0, 0, 0, 60, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 60, 72, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 60, 0, 0, 0, 0, 0, 40, 60, 0, 0, 0, 64,
- 72, 0, 0, 68, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 117, 0, 119, 0, 0, 72, 11, 12, 13,
- 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 1, 2, 3, 4, 5, 0, 7,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 64, 0, 0, 0, 68, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static byte termCheck[] = TermCheck.termCheck;
-
- @Override
- public final int termCheck(int index) {
- return termCheck[index];
- }
-
- public interface TermAction {
- public final static char termAction[] = { 0, 6850, 6812, 6791, 6791, 6791, 6791, 6791, 6791, 6791, 6828, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6816, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 120, 1, 1, 1, 1, 1, 132, 1285, 7057, 2619, 128, 3527, 1, 1, 366, 6861, 6850,
- 6864, 6865, 6857, 2797, 3619, 3083, 3231, 3082, 3575, 4714, 3616, 806, 3581, 4509, 3579, 10, 6831, 6831,
- 6831, 6831, 6831, 6831, 6831, 6831, 6831, 6831, 6831, 6831, 6831, 6831, 6831, 6831, 6831, 6831, 6831,
- 6831, 6831, 6831, 6831, 6831, 6831, 6831, 6831, 6831, 6831, 6831, 6831, 6831, 6831, 6831, 6831, 6831,
- 6831, 6831, 6831, 6831, 6831, 6831, 6831, 6831, 6831, 6831, 6831, 6831, 6831, 6831, 6831, 6831, 6831,
- 4346, 4413, 6831, 6831, 6831, 6831, 39, 6831, 6831, 6831, 6888, 6831, 6831, 6831, 1106, 6831, 3754,
- 3723, 431, 6831, 6831, 6831, 6831, 6831, 6831, 6831, 6831, 6831, 6831, 6831, 6831, 6831, 8, 6834, 6834,
- 6834, 6834, 6834, 6834, 6834, 6834, 6834, 6834, 6834, 6834, 6834, 6834, 6834, 6834, 6834, 6834, 6834,
- 6834, 6834, 6834, 6834, 6834, 6834, 6834, 6834, 6834, 6834, 6834, 6834, 6834, 6834, 6834, 6834, 6834,
- 6834, 6834, 6834, 6834, 6834, 6834, 6834, 6834, 6834, 6834, 6834, 6834, 6834, 6834, 6834, 6834, 6834,
- 124, 134, 6834, 6834, 6834, 6834, 6850, 6834, 6834, 6834, 815, 6834, 6834, 6834, 332, 6834, 6850, 6595,
- 6592, 6834, 6834, 6834, 6834, 6834, 6834, 6834, 6834, 6834, 6834, 6834, 6834, 6834, 6850, 6812, 6791,
- 6791, 6791, 6791, 6791, 6791, 6791, 6819, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 6816, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4346, 4413, 1, 1, 1, 1, 420,
- 1285, 7057, 2619, 1254, 3527, 1, 1, 6850, 6861, 48, 6595, 6592, 189, 2797, 3619, 3083, 3231, 3082, 3575,
- 4714, 3616, 806, 3581, 4509, 3579, 6850, 6812, 6791, 6791, 6791, 6791, 6791, 6791, 6791, 6819, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6816, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 123, 1489, 1, 1, 1, 1, 133, 1285, 7057, 2619, 6850, 3527, 1, 1, 6850, 6861, 122,
- 5741, 121, 6850, 2797, 3619, 3083, 3231, 3082, 3575, 4714, 3616, 806, 3581, 4509, 3579, 6850, 6812,
- 6791, 6791, 6791, 6791, 6791, 6791, 6791, 6819, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6816, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4346, 4413, 1, 1, 1, 1,
- 152, 1285, 7057, 2619, 129, 3527, 1, 1, 1106, 6861, 4346, 4413, 4346, 4413, 2797, 3619, 3083, 3231,
- 3082, 3575, 4714, 3616, 806, 3581, 4509, 3579, 6850, 6812, 6791, 6791, 6791, 6791, 6791, 6791, 6791,
- 6819, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6816, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 140, 135, 1, 1, 1, 1, 153, 1285, 7057, 2619, 148, 3527, 1, 1, 3588,
- 6861, 3754, 3723, 144, 6850, 2797, 3619, 3083, 3231, 3082, 3575, 4714, 3616, 806, 3581, 4509, 3579,
- 6850, 6812, 6791, 6791, 6791, 6791, 6791, 6791, 6791, 6819, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6816, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4346, 4413, 1,
- 1, 1, 1, 6850, 1285, 7057, 2619, 1254, 3527, 1, 1, 3588, 6861, 3825, 3785, 4346, 4413, 2797, 3619, 3083,
- 3231, 3082, 3575, 4714, 3616, 806, 3581, 4509, 3579, 6850, 6812, 6791, 6791, 6791, 6791, 6791, 6791,
- 6791, 6819, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 6816, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 143, 138, 1, 1, 1, 1, 6850, 1285, 7057, 2619, 154, 3527, 1,
- 1, 6850, 6861, 433, 6864, 6865, 2526, 2797, 3619, 3083, 3231, 3082, 3575, 4714, 3616, 806, 3581, 4509,
- 3579, 6850, 6812, 6791, 6791, 6791, 6791, 6791, 6791, 6791, 6819, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6816, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4346,
- 4413, 1, 1, 1, 1, 6850, 1285, 7057, 2619, 2245, 3527, 1, 1, 431, 6861, 3288, 4210, 424, 3533, 2797,
- 3619, 3083, 3231, 3082, 3575, 4714, 3616, 806, 3581, 4509, 3579, 6850, 6812, 6791, 6791, 6791, 6791,
- 6791, 6791, 6791, 6819, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 6816, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 141, 6850, 1, 1, 1, 1, 6850, 1285, 7057, 2619,
- 149, 3527, 1, 1, 6850, 6861, 36, 6747, 6744, 6850, 2797, 3619, 3083, 3231, 3082, 3575, 4714, 3616, 806,
- 3581, 4509, 3579, 6850, 6812, 6791, 6791, 6791, 6791, 6791, 6791, 6791, 6819, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6816, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 4346, 4413, 1, 1, 1, 1, 136, 1285, 7057, 2619, 6850, 3527, 1, 1, 2092, 6861, 3825, 3785, 551, 6850,
- 2797, 3619, 3083, 3231, 3082, 3575, 4714, 3616, 806, 3581, 4509, 3579, 6850, 3576, 1, 1, 1, 1, 1, 1, 1,
- 3577, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6859, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 929, 441, 1, 1, 1, 1, 6850, 1285, 7057, 2619, 6758, 3527, 1, 1,
- 6850, 6861, 3393, 6850, 10573, 10573, 2797, 3619, 3083, 3231, 3082, 3575, 4714, 3616, 806, 3581, 4509,
- 3579, 39, 6414, 6411, 3866, 1042, 5510, 5395, 5540, 2317, 6761, 1187, 7148, 7146, 7155, 7154, 7150,
- 7151, 7149, 7152, 7153, 7156, 7147, 7143, 7222, 7223, 7137, 7144, 7140, 7116, 7142, 7141, 7138, 7139,
- 7117, 5487, 5421, 5587, 5564, 6869, 5364, 6886, 641, 751, 6871, 652, 5715, 714, 6872, 6870, 638, 6866,
- 6867, 6868, 7284, 6850, 6850, 1320, 7285, 7286, 1439, 6850, 6725, 6725, 262, 6721, 262, 262, 262, 262,
- 6729, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 322, 6509, 6509, 6850,
- 317, 6850, 262, 6850, 6502, 6498, 2380, 6652, 6782, 646, 6782, 2317, 332, 6864, 6865, 1, 114, 6718, 1,
- 1, 1, 5325, 110, 2201, 7298, 2340, 1, 6502, 6498, 2380, 6652, 6850, 646, 262, 2317, 452, 1951, 2731,
- 1904, 3030, 256, 344, 6502, 6498, 2380, 6652, 6782, 646, 6782, 2317, 7386, 7148, 7146, 7155, 7154, 7150,
- 7151, 7149, 7152, 7153, 7156, 7147, 7143, 7222, 7223, 7137, 7144, 7140, 7116, 7142, 7141, 7138, 7139,
- 7117, 3033, 6850, 7321, 7322, 7323, 6850, 6725, 6725, 262, 6721, 262, 262, 262, 262, 6770, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5633, 6850, 5301, 4301, 138, 37, 262, 5656,
- 125, 402, 6502, 6498, 4180, 6652, 1, 646, 1, 2317, 494, 1, 257, 6718, 1, 1, 1, 6850, 6171, 2201, 7298,
- 2340, 3566, 33, 6850, 6850, 6453, 6850, 6453, 262, 6453, 451, 6453, 1481, 7143, 7222, 7223, 7137, 7144,
- 7140, 7116, 7142, 7141, 7138, 7139, 7117, 7386, 366, 6414, 6411, 2380, 1042, 6886, 646, 4032, 2317,
- 6850, 6453, 6453, 6453, 6453, 2053, 6850, 6453, 6435, 3359, 2006, 6850, 6864, 6865, 6441, 1293, 7321,
- 7322, 7323, 6850, 6862, 6453, 1, 6502, 6498, 4180, 6652, 6453, 646, 113, 2317, 6453, 3626, 3978, 3905,
- 6453, 3566, 6453, 6453, 6453, 6453, 3288, 4210, 1959, 1912, 1865, 1818, 1771, 1724, 1677, 1630, 1583,
- 1536, 6453, 6453, 117, 6453, 6453, 6453, 6453, 6453, 6453, 6453, 6453, 6453, 6453, 6453, 6453, 6453,
- 6453, 6453, 6453, 6453, 6453, 6453, 6453, 6453, 6453, 6453, 6453, 6861, 6410, 2053, 2989, 6453, 6453,
- 6453, 6453, 6850, 4631, 4604, 6456, 432, 6456, 6850, 6456, 423, 6456, 1, 6502, 6498, 2380, 6652, 6862,
- 646, 594, 2317, 336, 37, 6865, 6865, 6865, 6865, 6865, 39, 6865, 6850, 7185, 6888, 366, 5633, 366, 6456,
- 6456, 6456, 6456, 91, 5656, 6456, 6447, 6865, 6865, 6865, 6865, 6865, 6865, 6865, 6865, 6865, 6865,
- 6865, 6865, 6456, 6850, 6414, 6411, 1238, 6888, 6456, 6850, 6414, 6411, 6456, 1042, 6850, 6459, 6456,
- 2317, 6456, 6456, 6456, 6456, 475, 6861, 3570, 38, 6432, 6429, 6865, 3033, 2856, 6426, 6865, 2317, 6456,
- 6456, 6865, 6456, 6456, 6456, 6456, 6456, 6456, 6456, 6456, 6456, 6456, 6456, 6456, 6456, 6456, 6456,
- 6456, 6456, 6456, 6456, 6456, 6456, 6456, 6456, 6456, 43, 6601, 6601, 2644, 6456, 6456, 6456, 6456,
- 6850, 6791, 6791, 262, 6791, 262, 262, 262, 262, 6794, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 9189, 1, 1, 1, 1, 1, 1, 6850, 1, 6502, 6498, 6764, 6652, 262, 6767, 112, 6655, 480, 1, 1, 6598, 1,
- 6438, 111, 6438, 258, 1, 158, 6788, 1, 1, 1, 130, 6850, 2590, 7094, 2619, 2670, 3527, 3641, 7321, 7322,
- 7323, 6850, 6864, 6865, 253, 7143, 7222, 7223, 7137, 7144, 7140, 7116, 7142, 7141, 7138, 7139, 7117,
- 6850, 2537, 7386, 6850, 6791, 6791, 262, 6791, 262, 262, 262, 262, 262, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 9189, 1, 1, 1, 1, 1, 1, 6850, 2812, 6850, 6850, 6414, 6411, 262, 1042, 39, 646, 5633,
- 2317, 6888, 5610, 1047, 1, 6850, 5656, 5633, 1, 3477, 6788, 1, 1, 1, 5656, 6850, 2590, 7094, 2619, 982,
- 3527, 3330, 4999, 2746, 2680, 2614, 2548, 2482, 2416, 2350, 2284, 2218, 2152, 380, 6414, 6411, 4180,
- 1042, 366, 646, 366, 2317, 3526, 7386, 6850, 6791, 6791, 262, 6791, 262, 262, 262, 262, 6803, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9189, 1, 1, 1, 1, 1, 1, 481, 39, 39, 6850, 6888, 6700, 262,
- 6700, 2095, 92, 1, 1, 6854, 1, 6703, 2053, 6703, 1, 259, 1, 5164, 6788, 1, 1, 1, 6850, 3621, 2590, 7094,
- 2619, 137, 3527, 493, 7321, 7322, 7323, 326, 6864, 6865, 252, 7143, 7222, 7223, 7137, 7144, 7140, 7116,
- 7142, 7141, 7138, 7139, 7117, 145, 6850, 7386, 6850, 6791, 6791, 262, 6791, 262, 262, 262, 262, 6794, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9189, 1, 1, 1, 1, 1, 1, 95, 39, 39, 6444, 6888, 6773,
- 262, 6773, 6850, 6414, 6411, 39, 1042, 131, 646, 6888, 2317, 4113, 260, 1, 3641, 6788, 1, 1, 1, 397,
- 6850, 2590, 7094, 2619, 6850, 3527, 6853, 2667, 430, 6506, 6506, 3393, 317, 253, 7143, 7222, 7223, 7137,
- 7144, 7140, 7116, 7142, 7141, 7138, 7139, 7117, 4086, 4059, 7386, 6850, 6791, 6791, 262, 6791, 262, 262,
- 262, 262, 6794, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9189, 1, 1, 1, 1, 1, 1, 317, 6850,
- 6864, 6865, 3371, 3038, 262, 646, 2878, 2317, 6850, 6864, 6865, 156, 371, 116, 1481, 6850, 571, 1, 5325,
- 6788, 1, 1, 1, 319, 6856, 2590, 7094, 2619, 1, 3527, 383, 3859, 6850, 6595, 6592, 7222, 7223, 253, 7143,
- 7222, 7223, 7137, 7144, 7140, 7116, 7142, 7141, 7138, 7139, 7117, 147, 6850, 7386, 6850, 6791, 6791,
- 262, 6791, 262, 262, 262, 262, 262, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9189, 1, 1, 1, 1,
- 1, 1, 6855, 2053, 115, 2053, 7168, 576, 262, 5325, 6850, 576, 572, 5610, 1047, 270, 4346, 4413, 6616,
- 4113, 4731, 1, 3431, 6788, 1, 1, 1, 5301, 4301, 2590, 7094, 2619, 6850, 3527, 7143, 7222, 7223, 7137,
- 7144, 7140, 7116, 7142, 7141, 7138, 7139, 7117, 380, 39, 39, 3859, 6888, 366, 6850, 366, 4086, 4059,
- 7386, 6850, 6791, 6791, 262, 6791, 262, 262, 262, 262, 262, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 9189, 1, 1, 1, 1, 1, 1, 6850, 6414, 6411, 6850, 6888, 3062, 262, 6850, 155, 1, 573, 1, 5301, 4301,
- 6850, 2053, 6860, 4458, 6860, 1, 223, 6788, 1, 1, 1, 3085, 6850, 2590, 7094, 2619, 6850, 3527, 7143,
- 7222, 7223, 7137, 7144, 7140, 7116, 7142, 7141, 7138, 7139, 7117, 6850, 6414, 6411, 6859, 1042, 6859,
- 6459, 223, 2317, 6850, 7386, 6850, 6791, 6791, 262, 6791, 262, 262, 262, 262, 262, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9189, 1, 1, 1, 1, 1, 1, 1, 6697, 6697, 6850, 6709, 366, 262, 366, 150,
- 398, 2710, 6850, 10327, 10324, 3533, 3675, 1, 6850, 4978, 1, 410, 6788, 1, 1, 1, 193, 6856, 2590, 7094,
- 2619, 393, 3527, 6850, 1, 1, 1, 1, 1, 1, 1, 1, 6850, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7386, 1, 6502,
- 6498, 6764, 6652, 6850, 6767, 346, 6655, 6860, 972, 1, 1, 1, 1, 1, 1, 398, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 37, 6706, 6706, 193, 6855, 366, 1, 6850, 6850, 7448, 6859, 4729, 398, 1, 1, 1, 6502, 6498, 3493,
- 1042, 5510, 5395, 5540, 2317, 6850, 6462, 6489, 6495, 6468, 6471, 6483, 6480, 6486, 6477, 6474, 6465,
- 6492, 1, 6502, 6498, 2380, 6652, 7242, 646, 157, 2317, 344, 1144, 3621, 5487, 5421, 5587, 5564, 6869,
- 5364, 6886, 641, 751, 6871, 652, 5715, 714, 6872, 6870, 638, 6866, 6867, 6868, 37, 6706, 6706, 6850,
- 119, 6850, 1439, 118, 4779, 344, 5102, 552, 6856, 39, 39, 39, 6414, 6411, 3866, 1042, 5510, 5395, 5540,
- 2317, 6844, 1085, 7148, 7146, 7155, 7154, 7150, 7151, 7149, 7152, 7153, 7156, 7147, 6850, 4631, 4604,
- 4909, 4631, 4604, 6850, 6735, 6732, 6850, 10327, 10324, 5487, 5421, 5587, 5564, 6869, 5364, 1719, 641,
- 751, 6871, 652, 5715, 714, 6872, 6870, 638, 6866, 6867, 6868, 325, 892, 892, 6252, 3431, 151, 1439,
- 6855, 6850, 6850, 6850, 6850, 3675, 6850, 3867, 6850, 6825, 6858, 6858, 6860, 6857, 173, 6414, 6411,
- 3866, 1042, 5510, 5395, 5540, 2317, 6886, 1085, 7148, 7146, 7155, 7154, 7150, 7151, 7149, 7152, 7153,
- 7156, 7147, 37, 6706, 6706, 6850, 6850, 405, 6706, 6859, 382, 6850, 6850, 1798, 5487, 5421, 5587, 5564,
- 6869, 5364, 146, 641, 751, 6871, 652, 5715, 714, 6872, 6870, 638, 6866, 6867, 6868, 45, 6741, 6741,
- 1058, 5702, 7398, 1439, 6857, 6857, 6850, 7287, 1, 3869, 39, 39, 1, 6502, 6498, 3493, 1042, 5510, 5395,
- 5540, 2317, 1672, 6462, 6489, 6495, 6468, 6471, 6483, 6480, 6486, 6477, 6474, 6465, 6492, 2053, 1, 1,
- 403, 4113, 7327, 7341, 1342, 100, 99, 6806, 398, 5487, 5421, 5587, 5564, 6869, 5364, 6738, 641, 751,
- 6871, 652, 5715, 714, 6872, 6870, 638, 6866, 6867, 6868, 6850, 6754, 6750, 1, 103, 6850, 1439, 4222,
- 4086, 4059, 327, 464, 6809, 39, 39, 39, 6414, 6411, 3866, 1042, 5510, 5395, 5540, 2317, 6822, 1085,
- 7148, 7146, 7155, 7154, 7150, 7151, 7149, 7152, 7153, 7156, 7147, 5061, 2991, 6861, 7244, 6850, 1389,
- 398, 2733, 312, 583, 355, 6785, 5487, 5421, 5587, 5564, 6869, 5364, 6886, 641, 751, 6871, 652, 5715,
- 714, 6872, 6870, 638, 6866, 6867, 6868, 398, 6022, 6850, 6735, 6732, 456, 1439, 1, 6857, 1, 353, 6850,
- 3090, 6779, 2080, 325, 6825, 39, 6414, 6411, 3866, 1042, 5510, 5395, 5540, 2317, 6822, 1085, 7148, 7146,
- 7155, 7154, 7150, 7151, 7149, 7152, 7153, 7156, 7147, 2053, 6850, 11329, 8950, 1, 462, 29, 1063, 476,
- 7349, 7355, 7353, 5487, 5421, 5587, 5564, 6869, 5364, 6886, 641, 751, 6871, 652, 5715, 714, 6872, 6870,
- 638, 6866, 6867, 6868, 2053, 37, 6706, 6706, 490, 3189, 1439, 7347, 7348, 7378, 7379, 2921, 7356, 9929,
- 1, 1, 6825, 6850, 3859, 6850, 3560, 1, 574, 6856, 6610, 6886, 6850, 7358, 336, 6417, 6850, 6420, 6850,
- 728, 423, 4223, 3586, 7359, 7185, 1940, 1943, 7380, 2394, 7357, 7143, 7222, 7223, 7137, 7144, 7140,
- 7116, 7142, 7141, 7138, 7139, 7117, 6886, 582, 6423, 7369, 7368, 1, 7374, 7375, 7381, 7372, 7373, 7352,
- 7354, 7376, 6850, 6797, 7350, 7351, 7377, 2053, 7362, 7363, 7364, 7360, 7361, 7370, 7371, 7366, 7365,
- 7367, 6855, 6613, 6450, 2399, 7382, 39, 6414, 6411, 3866, 1042, 5510, 5395, 5540, 2317, 6854, 1085,
- 7148, 7146, 7155, 7154, 7150, 7151, 7149, 7152, 7153, 7156, 7147, 127, 6800, 48, 3565, 6850, 48, 6865,
- 6850, 1, 6864, 4916, 1238, 5487, 5421, 5587, 5564, 6869, 5364, 6797, 641, 751, 6871, 652, 5715, 714,
- 6872, 6870, 638, 6866, 6867, 6868, 1, 6502, 6498, 6649, 6652, 6637, 6658, 6640, 6655, 47, 6462, 6489,
- 6495, 6468, 6471, 6483, 6480, 6486, 6477, 6474, 6465, 6492, 1, 4032, 485, 6865, 3621, 3477, 6864, 484,
- 6800, 590, 3565, 6604, 6634, 6631, 6646, 6643, 6670, 6628, 6850, 6685, 6694, 6664, 6688, 6625, 6691,
- 6661, 6667, 6682, 6679, 6676, 6673, 8, 29, 343, 6850, 6850, 3978, 3905, 6288, 217, 6847, 6850, 1431,
- 6853, 6697, 6697, 39, 6414, 6411, 3866, 1042, 5510, 5395, 5540, 2317, 6850, 1085, 7148, 7146, 7155,
- 7154, 7150, 7151, 7149, 7152, 7153, 7156, 7147, 6850, 6850, 2274, 226, 590, 3479, 126, 431, 73, 6850,
- 2142, 6850, 5487, 5421, 5587, 5564, 6869, 5364, 1238, 641, 751, 6871, 652, 5715, 714, 6872, 6870, 638,
- 6866, 6867, 6868, 6850, 6850, 2182, 6290, 460, 6847, 1439, 39, 6414, 6411, 3866, 1042, 5510, 5395, 5540,
- 2317, 6850, 1085, 7148, 7146, 7155, 7154, 7150, 7151, 7149, 7152, 7153, 7156, 7147, 4032, 1238, 6776,
- 2908, 6850, 3075, 6850, 6850, 6850, 35, 6607, 3132, 5487, 5421, 5587, 5564, 6869, 5364, 6838, 641, 751,
- 6871, 652, 5715, 714, 6872, 6870, 638, 6866, 6867, 6868, 6850, 6841, 6850, 4842, 3978, 3905, 6850, 1517,
- 39, 6414, 6411, 3493, 1042, 5510, 5395, 5540, 2317, 6850, 1085, 7148, 7146, 7155, 7154, 7150, 7151,
- 7149, 7152, 7153, 7156, 7147, 4113, 544, 6850, 6850, 6850, 6292, 808, 5095, 542, 2, 4153, 6850, 5487,
- 5421, 5587, 5564, 6869, 5364, 2802, 641, 751, 6871, 652, 5715, 714, 6872, 6870, 638, 6866, 6867, 6868,
- 6850, 6850, 6850, 6850, 4086, 4059, 1439, 39, 6414, 6411, 3493, 1042, 5510, 5395, 5540, 2317, 4778,
- 1085, 7148, 7146, 7155, 7154, 7150, 7151, 7149, 7152, 7153, 7156, 7147, 6850, 6850, 6850, 37, 6850,
- 6850, 6850, 6850, 6850, 6850, 6850, 5740, 5487, 5421, 5587, 5564, 6869, 5364, 6023, 641, 751, 6871, 652,
- 5715, 714, 6872, 6870, 638, 6866, 6867, 6868, 6850, 6850, 6850, 6850, 6850, 6850, 1439, 39, 6414, 6411,
- 3866, 1042, 5510, 5395, 5540, 2317, 6850, 1085, 7148, 7146, 7155, 7154, 7150, 7151, 7149, 7152, 7153,
- 7156, 7147, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 546, 6850, 6850, 4840, 5487, 5421, 5587,
- 5564, 6869, 5364, 4902, 641, 751, 6871, 652, 5715, 714, 6872, 6870, 638, 6866, 6867, 6868, 6850, 6850,
- 6850, 6850, 6850, 6850, 1439, 39, 6414, 6411, 6242, 1042, 5510, 5395, 5540, 2317, 6850, 1085, 7148,
- 7146, 7155, 7154, 7150, 7151, 7149, 7152, 7153, 7156, 7147, 6850, 6850, 6850, 6850, 6850, 6850, 6850,
- 6850, 6850, 6850, 2802, 2944, 5487, 5421, 5587, 5564, 6869, 5364, 904, 641, 751, 6871, 652, 5715, 714,
- 6872, 6870, 638, 6866, 6867, 6868, 39, 6414, 6411, 3866, 1042, 5510, 5395, 5540, 2317, 6850, 1085, 7148,
- 7146, 7155, 7154, 7150, 7151, 7149, 7152, 7153, 7156, 7147, 6850, 6850, 6850, 6850, 6850, 6850, 6850,
- 6850, 6850, 6850, 6850, 6850, 5487, 5421, 5587, 5564, 6869, 5364, 6850, 641, 751, 6871, 652, 5715, 714,
- 6872, 6870, 638, 6866, 6867, 6868, 39, 6414, 6411, 3493, 1042, 5510, 5395, 5540, 2317, 6850, 1085, 7148,
- 7146, 7155, 7154, 7150, 7151, 7149, 7152, 7153, 7156, 7147, 6850, 6850, 6850, 6850, 6850, 6850, 6850,
- 6850, 6850, 6850, 6850, 6850, 5487, 5421, 5587, 5564, 6869, 5364, 6850, 641, 751, 6871, 652, 5715, 714,
- 6872, 6870, 638, 6866, 6867, 6868, 39, 6414, 6411, 3493, 1042, 5510, 5395, 5540, 2317, 6850, 1085, 7148,
- 7146, 7155, 7154, 7150, 7151, 7149, 7152, 7153, 7156, 7147, 6850, 6850, 6850, 6850, 6850, 6850, 6850,
- 6850, 6850, 6850, 6850, 6850, 5487, 5421, 5587, 5564, 6869, 5364, 6850, 641, 751, 6871, 652, 5715, 714,
- 6872, 6870, 638, 6866, 6867, 6868, 39, 6414, 6411, 3866, 1042, 5510, 5395, 5540, 2317, 6850, 1085, 7148,
- 7146, 7155, 7154, 7150, 7151, 7149, 7152, 7153, 7156, 7147, 1, 6850, 6850, 6850, 6850, 6850, 6850, 6850,
- 6850, 195, 6850, 6850, 5487, 5421, 5587, 5564, 6869, 5364, 6850, 641, 751, 6871, 652, 5715, 714, 6872,
- 6870, 638, 6866, 6867, 6868, 6850, 6414, 6411, 6850, 6888, 6850, 6850, 6850, 6850, 6850, 759, 7148,
- 7146, 7155, 7154, 7150, 7151, 7149, 7152, 7153, 7156, 7147, 7143, 7222, 7223, 7137, 7144, 7140, 7116,
- 7142, 7141, 7138, 7139, 7117, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 195, 6850, 6850, 6850, 6850,
- 6850, 6850, 6850, 6850, 274, 6585, 6581, 7284, 6589, 6850, 1320, 7285, 7286, 6850, 759, 6572, 6578,
- 6551, 6554, 6566, 6563, 6569, 6560, 6557, 6548, 6575, 6527, 6521, 6518, 6545, 6524, 6536, 6515, 6530,
- 6533, 6542, 6539, 6512, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850,
- 6850, 6850, 6850, 6864, 6865, 6850, 7284, 6850, 6850, 1320, 7285, 7286, 1336, 7148, 7146, 7155, 7154,
- 7150, 7151, 7149, 7152, 7153, 7156, 7147, 7143, 7222, 7223, 7137, 7144, 7140, 7116, 7142, 7141, 7138,
- 7139, 7117, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850,
- 274, 6715, 6712, 6850, 7284, 6850, 6850, 1320, 7285, 7286, 1336, 6572, 6578, 6551, 6554, 6566, 6563,
- 6569, 6560, 6557, 6548, 6575, 6527, 6521, 6518, 6545, 6524, 6536, 6515, 6530, 6533, 6542, 6539, 6512,
- 6850, 6850, 6850, 29, 423, 423, 6622, 423, 6622, 423, 6622, 423, 6622, 6850, 75, 6850, 6850, 3458, 6850,
- 7284, 6850, 6850, 1320, 7285, 7286, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 6850, 1,
- 6502, 6498, 4180, 6652, 6622, 646, 1, 2317, 6610, 3859, 6850, 6912, 6913, 6850, 6850, 376, 6850, 6850,
- 6417, 6850, 6850, 6850, 6850, 6850, 6622, 32, 424, 424, 6619, 424, 6619, 424, 6619, 424, 6619, 3941,
- 6622, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 424, 424, 424, 424, 424, 424, 424,
- 424, 424, 424, 424, 424, 2053, 6850, 6850, 6850, 6850, 6850, 6619, 2053, 6850, 6850, 6850, 376, 6613,
- 6850, 6850, 376, 6850, 6850, 6850, 376, 6850, 6850, 6850, 6850, 6850, 6850, 6619, 6850, 570, 6850, 6850,
- 6850, 6850, 746, 6850, 869, 6850, 6850, 6619, 7148, 7146, 7155, 7154, 7150, 7151, 7149, 7152, 7153,
- 7156, 7147, 7143, 7222, 7223, 7137, 7144, 7140, 7116, 7142, 7141, 7138, 7139, 7117, 37, 6864, 6864,
- 6864, 6864, 6864, 6850, 6864, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850,
- 6850, 6850, 6864, 6864, 6864, 6864, 6864, 6864, 6864, 6864, 6864, 6864, 6864, 6864, 6850, 6850, 6850,
- 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850, 6850,
- 6850, 6850, 6850, 6850, 6850, 6850, 6864, 6850, 6850, 6850, 6864, 6850, 6850, 6850, 6864 };
- }
-
- public final static char termAction[] = TermAction.termAction;
-
- @Override
- public final int termAction(int index) {
- return termAction[index];
- }
-
- public interface Asb {
- public final static char asb[] = { 0, 904, 7, 343, 1, 945, 837, 837, 837, 837, 510, 945, 522, 522, 442, 522,
- 105, 343, 107, 344, 344, 344, 344, 344, 344, 344, 344, 344, 524, 530, 535, 532, 539, 537, 544, 542, 546,
- 545, 547, 198, 548, 343, 327, 147, 147, 147, 147, 382, 742, 120, 120, 519, 147, 431, 53, 522, 522, 120,
- 382, 53, 947, 146, 1124, 512, 1005, 327, 522, 524, 672, 672, 742, 343, 344, 344, 344, 344, 344, 344,
- 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 343, 343, 343, 343, 343, 343, 343, 343,
- 343, 343, 343, 343, 344, 53, 53, 44, 327, 1070, 1070, 1070, 1070, 1126, 53, 120, 120, 508, 994, 1005,
- 117, 1005, 112, 1005, 179, 1005, 989, 510, 382, 431, 431, 120, 837, 431, 146, 343, 380, 1123, 53, 379,
- 381, 379, 53, 431, 532, 532, 530, 530, 530, 537, 537, 537, 537, 535, 535, 542, 539, 539, 545, 544, 546,
- 1082, 547, 508, 391, 865, 855, 854, 684, 1012, 1012, 510, 107, 945, 945, 945, 945, 382, 382, 1070, 148,
- 504, 343, 1047, 1045, 1052, 1050, 1054, 1053, 1055, 1056, 1069, 1070, 519, 382, 247, 250, 114, 674, 115,
- 510, 382, 382, 1126, 1070, 344, 147, 528, 9, 53, 512, 382, 382, 381, 1124, 343, 44, 431, 563, 53, 867,
- 869, 382, 1124, 343, 343, 343, 343, 945, 945, 481, 492, 492, 492, 492, 476, 510, 737, 344, 344, 344,
- 344, 344, 344, 344, 344, 344, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 344, 327, 248,
- 517, 515, 250, 382, 788, 62, 786, 1126, 117, 385, 382, 1126, 382, 53, 528, 508, 1123, 512, 382, 380, 53,
- 859, 847, 858, 869, 1126, 380, 53, 53, 53, 53, 742, 742, 382, 344, 1045, 1045, 1045, 1050, 1047, 1047,
- 1053, 1052, 1054, 1082, 1055, 248, 515, 388, 382, 250, 1082, 115, 837, 1128, 626, 1072, 250, 788, 787,
- 788, 788, 1126, 385, 385, 382, 382, 528, 529, 528, 343, 9, 631, 524, 512, 572, 343, 856, 856, 185, 185,
- 382, 863, 508, 792, 53, 382, 53, 53, 1126, 679, 343, 515, 515, 1124, 117, 117, 1070, 837, 379, 582,
- 1074, 376, 945, 788, 788, 788, 788, 382, 385, 387, 825, 387, 528, 742, 344, 431, 631, 572, 343, 343,
- 869, 382, 1124, 53, 867, 847, 572, 695, 382, 515, 514, 380, 633, 117, 588, 266, 380, 788, 788, 376, 568,
- 344, 1082, 193, 830, 382, 508, 788, 788, 434, 387, 388, 344, 382, 529, 53, 431, 727, 869, 572, 515, 569,
- 633, 633, 784, 1084, 239, 945, 115, 625, 266, 380, 788, 117, 510, 1074, 344, 344, 1123, 376, 839, 294,
- 435, 382, 388, 727, 53, 727, 388, 633, 633, 587, 239, 784, 843, 510, 1069, 837, 56, 56, 569, 117, 307,
- 839, 382, 945, 434, 382, 510, 510, 382, 945, 720, 727, 388, 588, 633, 569, 192, 568, 53, 510, 382, 266,
- 588, 266, 1068, 1068, 735, 308, 510, 382, 742, 382, 382, 382, 870, 720, 633, 343, 68, 376, 569, 382,
- 382, 266, 147, 147, 735, 307, 1082, 344, 1082, 569, 306, 945, 945, 945, 308, 945, 382, 206, 569, 569,
- 382, 117, 53, 382, 382, 52, 722, 388, 53, 388, 117, 382, 569, 1069, 299, 945, 299, 308, 1082, 308, 327,
- 327, 325, 306, 327, 569, 569, 733, 305, 147, 722, 388, 68, 569, 177, 792, 308, 53, 376, 53, 325, 239,
- 945, 53, 735, 68, 56, 53, 53, 708, 308, 733, 308, 569, 239, 343, 308, 305, 387, 1068, 117, 117, 979,
- 343, 306, 742, 569, 53, 567, 67, 379, 308, 53, 569, 567, 567, 308 };
- }
-
- public final static char asb[] = Asb.asb;
-
- @Override
- public final int asb(int index) {
- return asb[index];
- }
-
- public interface Asr {
- public final static byte asr[] = { 0, 9, 71, 118, 72, 40, 68, 120, 0, 98, 91, 34, 35, 99, 100, 86, 87, 54, 89,
- 90, 92, 93, 94, 95, 96, 101, 102, 71, 97, 70, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 118, 73,
- 40, 120, 64, 1, 2, 7, 5, 4, 3, 60, 68, 72, 9, 0, 64, 70, 68, 1, 2, 0, 4, 9, 71, 69, 0, 73, 59, 36, 37,
- 7, 5, 34, 35, 39, 45, 3, 4, 50, 51, 52, 38, 48, 43, 47, 12, 21, 11, 17, 15, 16, 18, 19, 14, 13, 20, 10,
- 42, 46, 44, 41, 49, 69, 9, 8, 6, 1, 2, 67, 66, 0, 55, 4, 71, 1, 2, 69, 9, 0, 41, 66, 42, 43, 67, 8, 44,
- 45, 46, 47, 59, 48, 49, 50, 51, 52, 38, 36, 37, 7, 5, 34, 35, 6, 39, 64, 3, 4, 10, 1, 2, 56, 57, 58, 12,
- 21, 11, 17, 15, 16, 18, 19, 14, 13, 20, 25, 31, 32, 27, 30, 29, 22, 26, 23, 24, 28, 33, 53, 0, 4, 9, 69,
- 1, 2, 0, 74, 64, 71, 97, 72, 69, 60, 3, 9, 68, 40, 70, 0, 64, 71, 97, 68, 118, 72, 73, 120, 11, 12, 41,
- 66, 13, 42, 43, 14, 15, 16, 67, 44, 17, 18, 45, 46, 47, 59, 48, 49, 10, 19, 20, 21, 50, 51, 52, 38, 36,
- 37, 34, 35, 39, 9, 40, 6, 8, 1, 2, 4, 3, 7, 5, 0, 88, 61, 8, 114, 115, 116, 63, 9, 3, 7, 5, 6, 71, 73,
- 40, 62, 25, 11, 12, 53, 23, 13, 56, 26, 27, 14, 28, 29, 15, 16, 30, 31, 17, 18, 32, 57, 55, 33, 10, 58,
- 19, 20, 24, 21, 1, 2, 4, 22, 0, 88, 114, 115, 116, 55, 71, 113, 121, 73, 62, 74, 63, 61, 65, 76, 78, 84,
- 82, 75, 80, 81, 83, 85, 69, 77, 79, 40, 9, 25, 53, 23, 56, 26, 27, 28, 29, 30, 31, 32, 57, 33, 58, 22,
- 24, 59, 66, 67, 10, 42, 46, 44, 41, 49, 12, 21, 11, 17, 15, 16, 18, 19, 14, 13, 20, 50, 51, 52, 38, 48,
- 43, 47, 36, 37, 34, 35, 39, 45, 7, 5, 3, 4, 8, 6, 1, 2, 0, 1, 2, 68, 73, 9, 0, 66, 67, 10, 42, 46, 44,
- 41, 49, 12, 21, 11, 17, 15, 16, 18, 19, 14, 13, 20, 50, 51, 52, 38, 48, 43, 47, 6, 8, 4, 3, 36, 37, 7,
- 5, 34, 35, 39, 45, 1, 2, 118, 9, 0, 22, 1, 2, 4, 114, 115, 116, 0, 67, 66, 34, 35, 99, 100, 94, 95, 6,
- 39, 70, 54, 106, 107, 103, 104, 105, 111, 110, 112, 87, 86, 108, 109, 92, 93, 89, 90, 96, 101, 36, 37,
- 91, 117, 10, 56, 53, 57, 58, 12, 21, 11, 17, 15, 16, 18, 19, 14, 13, 20, 25, 31, 32, 27, 30, 29, 22, 26,
- 23, 24, 28, 33, 64, 68, 3, 60, 7, 5, 1, 2, 4, 0, 59, 23, 24, 8, 6, 1, 2, 4, 74, 69, 119, 117, 36, 37,
- 60, 3, 98, 91, 5, 99, 100, 34, 35, 87, 86, 54, 89, 90, 92, 93, 7, 94, 95, 96, 64, 97, 72, 120, 70, 103,
- 104, 105, 106, 107, 108, 109, 110, 111, 112, 71, 118, 101, 102, 73, 68, 40, 9, 0, 23, 59, 24, 9, 64, 97,
- 70, 68, 72, 0, 9, 71, 69, 74, 0, 69, 53, 23, 13, 56, 26, 14, 28, 29, 15, 16, 30, 31, 17, 18, 32, 57, 33,
- 58, 19, 22, 20, 24, 21, 12, 11, 25, 9, 3, 7, 5, 40, 63, 65, 88, 27, 62, 55, 61, 8, 1, 2, 4, 10, 6, 0,
- 65, 25, 11, 12, 53, 23, 13, 56, 26, 88, 27, 14, 28, 29, 15, 16, 30, 61, 31, 17, 18, 32, 57, 33, 10, 58,
- 19, 63, 22, 20, 24, 21, 9, 3, 7, 5, 73, 40, 62, 8, 6, 55, 1, 2, 4, 0, 72, 9, 87, 86, 0, 11, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 25, 23, 26, 27, 28, 29, 30, 31, 32, 33, 22, 24, 40, 9, 72, 8, 1, 2, 60, 3,
- 7, 5, 6, 4, 0, 23, 24, 74, 3, 71, 40, 69, 59, 9, 64, 97, 68, 72, 70, 0, 113, 0, 54, 64, 89, 90, 0, 9,
- 72, 11, 12, 41, 66, 13, 42, 43, 14, 15, 16, 67, 8, 44, 17, 18, 45, 46, 47, 59, 48, 49, 10, 19, 20, 21,
- 50, 51, 52, 1, 2, 3, 36, 37, 7, 5, 34, 35, 6, 39, 4, 38, 0, 4, 54, 9, 71, 69, 0, 25, 11, 12, 53, 23, 13,
- 56, 26, 27, 14, 28, 29, 15, 16, 30, 31, 17, 18, 32, 57, 33, 10, 58, 19, 22, 20, 24, 21, 1, 2, 4, 97, 0,
- 9, 68, 73, 70, 0, 71, 9, 60, 3, 70, 68, 40, 54, 0, 9, 69, 68, 0, 9, 69, 70, 0, 7, 5, 8, 6, 4, 1, 2, 3,
- 60, 64, 70, 68, 9, 72, 97, 0, 6, 8, 3, 60, 5, 7, 97, 25, 11, 12, 53, 23, 13, 56, 26, 27, 14, 28, 29, 15,
- 16, 30, 31, 17, 18, 32, 57, 33, 10, 58, 19, 22, 20, 24, 21, 1, 2, 4, 72, 9, 0, 11, 12, 41, 66, 13, 42,
- 43, 14, 15, 16, 67, 8, 44, 17, 18, 45, 46, 47, 59, 48, 49, 10, 19, 20, 21, 50, 51, 52, 38, 1, 2, 36, 37,
- 7, 5, 34, 35, 6, 39, 4, 62, 3, 0, 66, 67, 36, 37, 34, 35, 39, 45, 50, 51, 52, 38, 48, 43, 47, 12, 21,
- 11, 17, 15, 16, 18, 19, 14, 13, 20, 10, 42, 46, 44, 41, 49, 7, 5, 3, 60, 8, 6, 4, 1, 2, 0, 10, 56, 53,
- 57, 58, 12, 21, 11, 17, 15, 16, 18, 19, 14, 13, 20, 74, 71, 97, 118, 73, 69, 120, 8, 31, 32, 33, 22, 24,
- 1, 2, 30, 29, 28, 27, 26, 6, 4, 23, 25, 119, 98, 117, 91, 36, 37, 34, 35, 99, 100, 9, 60, 3, 5, 72, 40,
- 87, 86, 54, 89, 90, 92, 93, 7, 94, 95, 96, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
- 70, 68, 64, 0, 40, 9, 3, 8, 6, 7, 5, 4, 1, 2, 71, 0, 53, 23, 13, 56, 26, 14, 28, 29, 15, 16, 30, 31, 17,
- 18, 32, 57, 33, 10, 58, 19, 22, 20, 24, 21, 12, 11, 25, 9, 3, 7, 40, 63, 61, 65, 88, 27, 62, 54, 4, 5,
- 8, 6, 1, 2, 55, 0 };
- }
-
- public final static byte asr[] = Asr.asr;
-
- @Override
- public final int asr(int index) {
- return asr[index];
- }
-
- public interface Nasb {
- public final static char nasb[] = { 0, 184, 12, 69, 12, 12, 12, 12, 12, 12, 73, 12, 12, 12, 124, 12, 216, 157,
- 28, 69, 69, 245, 69, 69, 69, 69, 69, 69, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 69, 12, 69, 257,
- 292, 292, 292, 292, 28, 149, 173, 173, 25, 5, 104, 236, 12, 12, 173, 249, 236, 69, 64, 18, 12, 12, 257,
- 12, 12, 41, 41, 149, 157, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
- 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 157, 69, 236, 236, 161, 1, 12, 12, 12, 12, 77, 236, 31, 31,
- 180, 275, 276, 204, 276, 80, 276, 83, 276, 269, 10, 28, 104, 104, 31, 12, 104, 292, 57, 216, 47, 236,
- 215, 28, 215, 236, 104, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 180,
- 99, 160, 20, 20, 12, 12, 12, 10, 28, 12, 12, 12, 12, 54, 11, 12, 238, 161, 152, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 297, 28, 12, 173, 53, 73, 22, 73, 28, 11, 12, 12, 69, 292, 173, 13, 236, 12, 11, 28,
- 220, 18, 69, 295, 104, 12, 236, 193, 173, 28, 18, 157, 157, 157, 157, 12, 12, 275, 276, 276, 276, 276,
- 261, 10, 12, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 157, 69,
- 31, 182, 182, 182, 301, 54, 51, 51, 12, 223, 204, 173, 223, 17, 54, 236, 62, 297, 47, 12, 249, 54, 236,
- 12, 166, 12, 196, 16, 54, 236, 236, 236, 236, 149, 149, 28, 69, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 173, 142, 28, 208, 12, 118, 12, 12, 128, 278, 301, 51, 51, 173, 173, 17, 173, 250, 11, 54, 173,
- 110, 12, 157, 297, 221, 12, 12, 173, 69, 12, 12, 20, 20, 28, 165, 180, 196, 236, 54, 236, 236, 17, 236,
- 69, 182, 112, 18, 204, 139, 12, 12, 73, 173, 175, 168, 12, 173, 173, 75, 75, 54, 250, 93, 12, 12, 62,
- 149, 69, 104, 221, 112, 69, 69, 173, 11, 18, 236, 193, 210, 173, 12, 54, 173, 112, 216, 173, 204, 286,
- 173, 223, 173, 95, 212, 208, 69, 12, 134, 12, 28, 180, 75, 75, 106, 93, 142, 69, 250, 110, 236, 104,
- 173, 196, 112, 112, 208, 252, 173, 12, 286, 279, 12, 138, 128, 196, 216, 95, 121, 114, 168, 69, 69, 86,
- 212, 12, 73, 60, 223, 142, 97, 236, 173, 142, 286, 252, 203, 175, 12, 12, 73, 12, 12, 39, 39, 208, 121,
- 141, 12, 223, 12, 130, 223, 73, 73, 11, 12, 173, 97, 142, 286, 173, 208, 91, 12, 236, 73, 223, 196, 286,
- 173, 12, 12, 173, 187, 114, 11, 149, 11, 223, 223, 234, 112, 252, 57, 67, 168, 208, 223, 119, 196, 292,
- 292, 136, 199, 12, 69, 12, 208, 12, 12, 12, 12, 200, 12, 250, 206, 208, 208, 250, 146, 236, 11, 11, 236,
- 173, 142, 236, 173, 204, 119, 208, 12, 89, 12, 12, 200, 12, 200, 308, 308, 226, 12, 308, 208, 208, 12,
- 173, 292, 97, 142, 173, 208, 12, 292, 200, 236, 168, 236, 291, 173, 12, 236, 136, 67, 39, 236, 236, 173,
- 200, 12, 200, 208, 168, 157, 200, 89, 142, 12, 146, 146, 166, 69, 12, 231, 208, 236, 144, 66, 215, 200,
- 236, 208, 144, 12, 200 };
- }
-
- public final static char nasb[] = Nasb.nasb;
-
- @Override
- public final int nasb(int index) {
- return nasb[index];
- }
-
- public interface Nasr {
- public final static char nasr[] = { 0, 3, 13, 10, 9, 137, 136, 113, 135, 134, 4, 2, 0, 5, 194, 0, 154, 2, 75, 0,
- 79, 0, 42, 1, 0, 5, 212, 0, 2, 44, 0, 4, 10, 9, 2, 13, 127, 5, 0, 121, 0, 4, 2, 9, 10, 157, 0, 75, 156,
- 155, 0, 122, 0, 44, 2, 3, 0, 5, 28, 0, 210, 0, 161, 0, 192, 0, 80, 148, 42, 10, 9, 2, 13, 4, 0, 123, 0,
- 154, 75, 0, 166, 205, 0, 166, 200, 0, 75, 53, 0, 129, 0, 201, 0, 167, 0, 173, 0, 144, 0, 13, 2, 9, 10,
- 4, 94, 0, 4, 115, 209, 0, 159, 0, 51, 0, 186, 4, 185, 0, 140, 117, 0, 42, 174, 0, 5, 60, 213, 0, 170, 0,
- 4, 115, 182, 0, 208, 0, 175, 0, 1, 140, 0, 5, 80, 0, 176, 0, 42, 66, 0, 5, 105, 0, 13, 2, 9, 10, 4, 5,
- 36, 0, 31, 100, 101, 5, 0, 31, 101, 100, 77, 4, 2, 9, 10, 5, 0, 5, 10, 9, 2, 77, 4, 98, 53, 0, 5, 191,
- 0, 5, 50, 42, 36, 196, 0, 53, 4, 98, 27, 5, 0, 80, 36, 50, 82, 5, 42, 0, 5, 36, 39, 0, 101, 100, 53, 77,
- 68, 4, 10, 9, 2, 0, 2, 131, 0, 2, 67, 0, 36, 5, 27, 198, 0, 5, 195, 0, 60, 5, 31, 0, 137, 214, 136, 113,
- 135, 134, 0, 4, 10, 9, 13, 3, 1, 0, 132, 5, 50, 93, 0, 5, 60, 36, 0, 113, 69, 13, 110, 111, 112, 190, 0,
- 2, 4, 113, 110, 111, 112, 13, 69, 0, 39, 4, 2, 9, 10, 5, 172, 0, 5, 50, 93, 95, 0, 197, 5, 60, 0, 101,
- 100, 53, 4, 68, 0, 5, 50, 93, 115, 48, 4, 0, 5, 60, 116, 0 };
- }
-
- public final static char nasr[] = Nasr.nasr;
-
- @Override
- public final int nasr(int index) {
- return nasr[index];
- }
-
- public interface TerminalIndex {
- public final static char terminalIndex[] = { 0, 113, 114, 2, 31, 10, 13, 9, 79, 115, 100, 48, 52, 60, 68, 74,
- 75, 86, 87, 102, 105, 107, 104, 54, 106, 47, 64, 66, 70, 73, 76, 83, 89, 98, 11, 12, 7, 8, 112, 14, 120,
- 55, 61, 67, 84, 88, 90, 94, 97, 99, 109, 110, 111, 53, 19, 93, 63, 91, 101, 95, 1, 77, 122, 103, 20, 46,
- 58, 78, 44, 121, 33, 30, 118, 119, 96, 108, 49, 50, 56, 57, 59, 69, 71, 72, 85, 92, 17, 18, 65, 21, 22,
- 6, 23, 24, 25, 26, 27, 32, 4, 15, 16, 28, 29, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 51, 80, 81, 82, 5,
- 117, 3, 123, 62, 116 };
- }
-
- public final static char terminalIndex[] = TerminalIndex.terminalIndex;
-
- @Override
- public final int terminalIndex(int index) {
- return terminalIndex[index];
- }
-
- public interface NonterminalIndex {
- public final static char nonterminalIndex[] = { 0, 130, 135, 136, 0, 0, 134, 0, 0, 237, 243, 133, 0, 143, 0,
- 132, 0, 0, 142, 148, 0, 0, 149, 158, 159, 160, 161, 188, 151, 0, 162, 126, 141, 163, 164, 165, 131, 166,
- 167, 128, 168, 0, 129, 138, 137, 170, 169, 171, 185, 0, 0, 195, 172, 0, 173, 0, 0, 0, 0, 0, 152, 174,
- 175, 176, 0, 177, 180, 0, 155, 194, 0, 0, 0, 212, 0, 0, 209, 213, 0, 214, 127, 145, 179, 0, 0, 0, 0, 0,
- 0, 183, 0, 0, 0, 0, 125, 186, 0, 0, 210, 216, 217, 218, 0, 220, 157, 0, 146, 0, 0, 215, 197, 198, 199,
- 201, 227, 228, 182, 204, 0, 0, 219, 0, 0, 0, 0, 248, 0, 251, 0, 252, 0, 147, 187, 189, 190, 191, 192,
- 196, 200, 203, 0, 206, 0, 207, 0, 222, 225, 0, 0, 0, 246, 0, 247, 0, 0, 139, 140, 144, 0, 0, 154, 156,
- 0, 178, 0, 193, 0, 0, 0, 202, 0, 205, 211, 0, 223, 224, 0, 0, 229, 232, 0, 234, 236, 0, 240, 241, 242,
- 245, 0, 0, 249, 124, 0, 150, 153, 0, 181, 0, 184, 0, 0, 208, 221, 226, 0, 0, 230, 231, 233, 235, 0, 238,
- 239, 244, 250, 253, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static char nonterminalIndex[] = NonterminalIndex.nonterminalIndex;
-
- @Override
- public final int nonterminalIndex(int index) {
- return nonterminalIndex[index];
- }
-
- public interface ScopePrefix {
- public final static char scopePrefix[] = { 172, 324, 602, 621, 317, 332, 553, 569, 580, 591, 372, 280, 294, 311,
- 344, 55, 305, 392, 430, 180, 610, 496, 20, 33, 64, 84, 93, 98, 103, 143, 208, 339, 350, 20, 467, 157,
- 286, 300, 524, 40, 157, 382, 20, 629, 40, 230, 259, 1, 14, 27, 74, 89, 119, 27, 361, 365, 448, 489, 518,
- 545, 549, 639, 643, 647, 110, 7, 110, 410, 426, 439, 460, 479, 537, 129, 129, 245, 439, 560, 576, 587,
- 598, 220, 507, 69, 69, 169, 235, 238, 69, 254, 275, 238, 238, 69, 369, 486, 493, 169, 69, 662, 123, 355,
- 414, 454, 472, 69, 355, 401, 190, 117, 452, 651, 658, 651, 658, 78, 420, 150, 117, 117, 264 };
- }
-
- public final static char scopePrefix[] = ScopePrefix.scopePrefix;
-
- @Override
- public final int scopePrefix(int index) {
- return scopePrefix[index];
- }
-
- public interface ScopeSuffix {
- public final static char scopeSuffix[] = { 18, 148, 5, 5, 148, 148, 5, 5, 5, 5, 379, 148, 108, 148, 25, 61, 291,
- 398, 436, 186, 80, 502, 25, 38, 38, 38, 72, 72, 108, 148, 213, 31, 31, 25, 5, 162, 291, 114, 529, 51,
- 165, 387, 616, 634, 45, 224, 224, 5, 18, 31, 5, 72, 108, 31, 108, 108, 148, 257, 5, 5, 5, 5, 5, 257,
- 660, 11, 114, 379, 379, 379, 464, 483, 529, 133, 138, 249, 443, 564, 564, 564, 564, 224, 511, 72, 72, 5,
- 5, 241, 243, 257, 5, 278, 278, 243, 108, 5, 257, 5, 522, 5, 126, 358, 417, 457, 475, 541, 532, 404, 193,
- 108, 108, 653, 653, 655, 655, 80, 422, 152, 215, 200, 266 };
- }
-
- public final static char scopeSuffix[] = ScopeSuffix.scopeSuffix;
-
- @Override
- public final int scopeSuffix(int index) {
- return scopeSuffix[index];
- }
-
- public interface ScopeLhs {
- public final static char scopeLhs[] = { 48, 112, 18, 18, 92, 112, 18, 18, 18, 18, 85, 97, 49, 92, 111, 90, 58,
- 85, 84, 48, 18, 20, 190, 3, 7, 8, 182, 182, 178, 110, 48, 111, 111, 138, 45, 147, 59, 49, 157, 151, 147,
- 85, 18, 18, 151, 102, 72, 153, 88, 190, 185, 182, 178, 138, 199, 56, 66, 161, 19, 18, 18, 18, 18, 18,
- 12, 129, 178, 85, 84, 84, 64, 41, 157, 114, 114, 68, 84, 18, 18, 18, 18, 102, 20, 186, 182, 201, 100,
- 109, 74, 79, 73, 172, 89, 138, 86, 162, 161, 192, 157, 17, 178, 138, 116, 83, 45, 157, 157, 85, 48, 178,
- 78, 155, 44, 155, 44, 185, 116, 110, 48, 48, 72 };
- }
-
- public final static char scopeLhs[] = ScopeLhs.scopeLhs;
-
- @Override
- public final int scopeLhs(int index) {
- return scopeLhs[index];
- }
-
- public interface ScopeLa {
- public final static byte scopeLa[] = { 113, 73, 72, 72, 73, 73, 72, 72, 72, 72, 72, 73, 40, 73, 1, 64, 1, 72,
- 121, 69, 3, 72, 1, 64, 64, 64, 1, 1, 40, 73, 69, 1, 1, 1, 72, 73, 1, 1, 4, 64, 68, 40, 1, 1, 64, 72, 72,
- 72, 113, 1, 72, 1, 40, 1, 40, 40, 73, 118, 72, 72, 72, 72, 72, 118, 1, 72, 1, 72, 72, 72, 71, 71, 4, 1,
- 1, 5, 72, 64, 64, 64, 64, 72, 3, 1, 1, 72, 72, 3, 1, 118, 72, 1, 1, 1, 40, 72, 118, 72, 6, 72, 1, 55,
- 70, 71, 64, 1, 55, 75, 74, 40, 40, 4, 4, 4, 4, 3, 1, 69, 1, 1, 3 };
- }
-
- public final static byte scopeLa[] = ScopeLa.scopeLa;
-
- @Override
- public final int scopeLa(int index) {
- return scopeLa[index];
- }
-
- public interface ScopeStateSet {
- public final static char scopeStateSet[] = { 85, 183, 284, 284, 107, 183, 284, 284, 284, 284, 95, 109, 85, 107,
- 183, 107, 87, 95, 95, 85, 284, 284, 118, 214, 260, 260, 54, 54, 82, 183, 85, 183, 183, 185, 140, 370,
- 87, 85, 178, 50, 370, 95, 284, 284, 50, 169, 63, 26, 95, 118, 30, 54, 82, 185, 22, 87, 33, 79, 284, 284,
- 284, 284, 284, 284, 264, 6, 82, 95, 95, 95, 148, 343, 178, 183, 183, 124, 95, 284, 284, 284, 284, 169,
- 284, 30, 54, 24, 169, 171, 63, 165, 63, 60, 68, 185, 95, 57, 79, 181, 178, 284, 82, 185, 1, 95, 140,
- 178, 178, 95, 85, 82, 11, 121, 189, 121, 189, 30, 1, 183, 85, 85, 63 };
- }
-
- public final static char scopeStateSet[] = ScopeStateSet.scopeStateSet;
-
- @Override
- public final int scopeStateSet(int index) {
- return scopeStateSet[index];
- }
-
- public interface ScopeRhs {
- public final static char scopeRhs[] = { 0, 338, 3, 59, 0, 126, 0, 337, 3, 113, 0, 126, 180, 0, 127, 188, 74, 0,
- 224, 0, 197, 166, 126, 10, 0, 136, 0, 166, 126, 10, 0, 135, 0, 271, 127, 54, 124, 0, 20, 0, 309, 127,
- 54, 55, 0, 20, 53, 0, 33, 132, 0, 20, 53, 0, 0, 309, 127, 54, 55, 215, 0, 20, 186, 0, 271, 127, 54, 132,
- 0, 189, 126, 0, 141, 0, 227, 3, 308, 0, 308, 0, 2, 0, 126, 0, 271, 127, 54, 131, 0, 189, 126, 237, 0,
- 189, 126, 22, 237, 0, 189, 126, 332, 22, 0, 128, 197, 166, 126, 0, 128, 0, 197, 166, 126, 0, 134, 128,
- 0, 172, 0, 328, 127, 172, 0, 127, 172, 0, 230, 128, 0, 166, 327, 235, 0, 136, 0, 0, 0, 0, 135, 0, 0, 0,
- 0, 326, 127, 164, 236, 0, 127, 0, 236, 0, 129, 0, 0, 127, 0, 325, 127, 164, 270, 0, 127, 0, 0, 44, 127,
- 0, 0, 150, 3, 0, 127, 296, 295, 127, 74, 294, 172, 0, 295, 127, 74, 294, 172, 0, 223, 0, 224, 0, 294,
- 172, 0, 96, 0, 0, 223, 0, 224, 0, 211, 96, 0, 0, 223, 0, 224, 0, 295, 127, 294, 172, 0, 223, 0, 211, 0,
- 0, 223, 0, 240, 127, 3, 0, 126, 0, 0, 0, 0, 0, 240, 127, 3, 222, 0, 231, 3, 0, 220, 127, 0, 216, 0, 146,
- 0, 175, 166, 126, 0, 10, 0, 0, 0, 0, 226, 60, 0, 125, 0, 240, 127, 3, 195, 0, 195, 0, 2, 0, 0, 126, 0,
- 0, 0, 0, 0, 211, 3, 0, 209, 0, 252, 127, 164, 38, 27, 0, 189, 126, 61, 63, 0, 204, 128, 0, 128, 189,
- 126, 292, 63, 0, 189, 126, 292, 63, 0, 189, 126, 70, 123, 61, 0, 252, 127, 164, 262, 61, 0, 252, 127,
- 164, 262, 239, 61, 0, 289, 290, 127, 164, 123, 322, 56, 0, 289, 290, 127, 164, 322, 56, 0, 189, 126,
- 288, 56, 0, 197, 189, 126, 288, 235, 0, 189, 126, 288, 235, 0, 166, 126, 0, 93, 136, 0, 286, 127, 149,
- 0, 286, 127, 172, 0, 158, 84, 0, 317, 161, 319, 320, 3, 81, 0, 126, 179, 0, 319, 320, 3, 81, 0, 128, 0,
- 126, 179, 0, 158, 3, 75, 204, 80, 0, 126, 128, 0, 204, 80, 0, 108, 2, 131, 126, 128, 0, 238, 3, 75, 0,
- 211, 182, 0, 33, 169, 0, 182, 0, 183, 33, 169, 0, 238, 3, 85, 0, 204, 153, 238, 3, 83, 0, 62, 179, 0,
- 238, 3, 83, 0, 126, 179, 62, 179, 0, 318, 127, 164, 0, 158, 0, 226, 77, 0, 30, 179, 0, 158, 102, 185, 0,
- 30, 177, 0, 148, 64, 167, 3, 0, 167, 3, 0, 20, 161, 126, 0, 158, 102, 162, 0, 30, 169, 0, 227, 3, 0,
- 226, 60, 283, 0, 158, 60, 0, 203, 3, 314, 67, 126, 0, 126, 0, 0, 0, 0, 314, 67, 126, 0, 2, 145, 126, 0,
- 0, 0, 0, 203, 3, 45, 0, 147, 0, 125, 55, 166, 126, 0, 31, 147, 0, 93, 136, 31, 147, 0, 228, 189, 126, 0,
- 146, 31, 147, 0, 203, 3, 49, 0, 158, 3, 49, 0, 158, 3, 64, 203, 54, 41, 0, 203, 54, 41, 0, 20, 2, 131,
- 126, 0, 158, 3, 64, 203, 54, 44, 0, 203, 54, 44, 0, 158, 3, 64, 203, 54, 46, 0, 203, 54, 46, 0, 158, 3,
- 64, 203, 54, 42, 0, 203, 54, 42, 0, 227, 3, 125, 197, 166, 126, 10, 0, 125, 197, 166, 126, 10, 0, 136,
- 2, 0, 126, 0, 227, 3, 124, 276, 166, 126, 10, 0, 276, 166, 126, 10, 0, 135, 2, 0, 126, 0, 227, 3, 135,
- 0, 227, 3, 140, 0, 158, 60, 140, 0, 278, 0, 31, 0, 31, 139, 0, 165, 0, 134, 0, 158, 3, 0 };
- }
-
- public final static char scopeRhs[] = ScopeRhs.scopeRhs;
-
- @Override
- public final int scopeRhs(int index) {
- return scopeRhs[index];
- }
-
- public interface ScopeState {
- public final static char scopeState[] = { 0, 6062, 6292, 6290, 6288, 0, 2597, 2665, 1716, 2533, 0, 5212, 5150,
- 5088, 5026, 4964, 4902, 4840, 4778, 4714, 4502, 4440, 4842, 0, 1763, 0, 2443, 1995, 1987, 0, 2274, 2142,
- 0, 5212, 5150, 2869, 2868, 5088, 5026, 4964, 4902, 4840, 4778, 2797, 4714, 4502, 4440, 2406, 2277, 0,
- 6205, 3566, 6135, 0, 2394, 2080, 0, 2314, 2089, 0, 653, 6002, 0, 5962, 653, 5914, 4675, 6002, 4591,
- 4329, 2512, 2182, 3812, 5702, 2380, 4194, 4180, 4140, 0, 2446, 1022, 0, 5928, 6191, 0, 5928, 6191, 5815,
- 6171, 6111, 5754, 6097, 6037, 5737, 6022, 5212, 5150, 5088, 5026, 4964, 4902, 4840, 4778, 4714, 4502,
- 4440, 0, 5928, 6191, 5815, 6171, 6111, 5754, 6097, 6037, 5737, 6022, 0, 5747, 5349, 0, 2245, 815, 0,
- 3812, 5962, 4511, 5914, 4675, 4755, 4194, 4448, 4232, 4231, 4451, 6144, 920, 3368, 2081, 0, 3330, 3431,
- 3588, 3533, 3825, 3785, 3675, 3493, 2878, 929, 2812, 2746, 2680, 2614, 2548, 2482, 2416, 2350, 2284,
- 2218, 2152, 837, 769, 677, 0, 2260, 1437, 1341, 651, 4675, 6144, 4591, 4180, 4140, 3279, 3859, 718, 0,
- 869, 746, 0, 1047, 0, 5747, 5349, 5887, 599, 4274, 0, 6233, 6181, 6056, 5836, 5179, 5117, 5055, 4993,
- 4931, 4910, 5951, 5853, 4848, 4787, 5241, 4531, 3860, 925, 3855, 4701, 4694, 4441, 3488, 672, 0, 1625,
- 1578, 6233, 6181, 6056, 1384, 1249, 5836, 885, 5179, 5117, 5055, 4993, 4931, 1907, 4459, 1860, 1813,
- 4910, 1766, 5951, 5853, 1719, 1672, 1481, 1431, 4848, 4787, 809, 5241, 4707, 4531, 3185, 2917, 3860,
- 925, 3855, 765, 4701, 4694, 4441, 5887, 646, 4274, 3488, 672, 2842, 2776, 1193, 1042, 904, 4591, 4329,
- 2512, 2182, 3812, 5962, 5702, 653, 5914, 4675, 2380, 4194, 4180, 6002, 4140, 2710, 2644, 869, 746, 2878,
- 4153, 929, 3330, 2812, 2746, 2680, 2614, 2548, 2482, 2416, 2350, 2284, 2218, 2152, 3431, 3588, 3533,
- 3825, 3785, 3675, 4113, 4086, 4059, 5679, 3493, 837, 769, 677, 3288, 3393, 1106, 1254, 3754, 3723, 3641,
- 4413, 4346, 4032, 4005, 3978, 3905, 5325, 5301, 4301, 4631, 4604, 5656, 5633, 5610, 5587, 5564, 5540,
- 5510, 5487, 5421, 5395, 5364, 5715, 2944, 3231, 3189, 3132, 3090, 3033, 1389, 1342, 2991, 1293, 2095,
- 2053, 599, 2006, 1959, 1912, 1865, 1818, 1771, 1724, 1677, 1630, 1583, 1536, 1489, 1439, 1207, 1058,
- 995, 1144, 0 };
- }
-
- public final static char scopeState[] = ScopeState.scopeState;
-
- @Override
- public final int scopeState(int index) {
- return scopeState[index];
- }
-
- public interface InSymb {
- public final static char inSymb[] = { 0, 0, 313, 127, 285, 49, 41, 44, 46, 42, 10, 135, 124, 131, 8, 132, 4, 3,
- 126, 45, 39, 6, 35, 34, 5, 7, 37, 36, 140, 145, 147, 146, 152, 148, 156, 155, 159, 157, 160, 59, 162,
- 68, 3, 54, 54, 54, 54, 126, 3, 54, 54, 182, 127, 60, 3, 66, 67, 54, 6, 158, 66, 67, 166, 165, 124, 3,
- 123, 125, 117, 119, 3, 60, 91, 98, 35, 34, 100, 99, 5, 90, 89, 64, 54, 86, 87, 7, 93, 92, 95, 94, 96,
- 112, 111, 110, 109, 108, 107, 106, 105, 104, 103, 70, 102, 101, 203, 158, 182, 127, 203, 203, 203, 203,
- 166, 227, 127, 127, 127, 255, 256, 236, 257, 235, 258, 56, 287, 259, 10, 126, 60, 60, 127, 124, 60, 314,
- 3, 197, 4, 203, 55, 126, 55, 227, 158, 146, 146, 145, 145, 145, 148, 148, 148, 148, 147, 147, 155, 152,
- 152, 157, 156, 159, 158, 160, 127, 60, 3, 223, 222, 135, 125, 124, 10, 126, 64, 64, 64, 64, 197, 276,
- 271, 127, 249, 3, 167, 148, 174, 169, 183, 176, 184, 185, 274, 271, 220, 126, 175, 164, 327, 288, 322,
- 288, 126, 189, 166, 271, 216, 3, 315, 182, 150, 278, 197, 126, 189, 166, 71, 220, 226, 162, 231, 127, 3,
- 126, 166, 3, 3, 3, 3, 125, 124, 255, 256, 257, 258, 336, 259, 10, 167, 90, 89, 54, 7, 93, 92, 95, 94,
- 96, 112, 111, 110, 109, 108, 107, 106, 105, 104, 103, 70, 102, 101, 68, 166, 7, 5, 127, 166, 243, 125,
- 124, 126, 123, 164, 126, 166, 55, 203, 127, 127, 4, 228, 6, 55, 240, 241, 149, 242, 127, 166, 55, 158,
- 158, 158, 158, 3, 3, 126, 64, 148, 148, 148, 169, 167, 167, 176, 174, 183, 158, 184, 175, 175, 326, 126,
- 170, 237, 61, 55, 215, 63, 172, 329, 125, 124, 244, 244, 189, 164, 127, 189, 197, 153, 280, 283, 60,
- 190, 4, 123, 125, 153, 70, 231, 211, 199, 195, 126, 3, 127, 68, 240, 197, 227, 227, 166, 148, 71, 5,
- 127, 166, 262, 239, 54, 55, 292, 294, 127, 3, 195, 244, 244, 127, 127, 197, 127, 290, 123, 291, 127, 3,
- 60, 158, 4, 127, 70, 70, 3, 189, 166, 211, 127, 220, 153, 125, 197, 175, 173, 197, 164, 262, 64, 54,
- 126, 74, 127, 220, 328, 71, 303, 211, 124, 126, 127, 127, 127, 71, 290, 289, 70, 68, 280, 227, 226, 229,
- 127, 127, 127, 128, 127, 164, 27, 55, 172, 65, 61, 63, 127, 189, 127, 295, 71, 68, 71, 70, 166, 220,
- 331, 237, 22, 126, 289, 127, 240, 229, 252, 254, 127, 38, 127, 3, 123, 61, 309, 55, 10, 53, 128, 295,
- 164, 307, 126, 308, 68, 126, 22, 332, 189, 59, 153, 127, 252, 127, 164, 286, 265, 293, 38, 70, 126, 68,
- 64, 54, 243, 243, 296, 127, 68, 189, 3, 189, 126, 126, 3, 127, 127, 3, 70, 68, 153, 126, 189, 127, 70,
- 70, 127, 318, 79, 77, 1, 158, 9, 85, 83, 81, 80, 75, 82, 84, 78, 76, 61, 74, 227, 189, 189, 338, 229,
- 252, 150, 164, 270, 189, 239, 309, 297, 113, 9, 71, 226, 71, 3, 3, 3, 204, 3, 123, 158, 123, 188, 68,
- 127, 127, 164, 239, 64, 3, 71, 238, 182, 238, 320, 149, 75, 238, 127, 127, 53, 97, 337, 182, 153, 211,
- 153, 319, 127, 3, 153, 297, 325, 243, 153, 153, 127, 70, 204, 161, 286, 158, 202, 68, 70, 121, 317, 153,
- 202, 9, 153 };
- }
-
- public final static char inSymb[] = InSymb.inSymb;
-
- @Override
- public final int inSymb(int index) {
- return inSymb[index];
- }
-
- public interface Name {
- public final static String name[] = { "", "[", "(", ".", ".*", "->", "->*", "++", "--", "&", "*", "+", "-", "~",
- "!", "/", "%", ">>", "<<", "<", ">", "<=", ">=", "==", "!=", "^", "|", "&&", "||", "?", ":", "::",
- "...", "=", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", ",", "$empty", "asm", "auto",
- "bool", "break", "case", "catch", "char", "class", "const", "const_cast", "continue", "default",
- "delete", "do", "double", "dynamic_cast", "else", "enum", "explicit", "export", "extern", "false",
- "float", "for", "friend", "goto", "if", "inline", "int", "long", "mutable", "namespace", "new",
- "operator", "private", "protected", "public", "register", "reinterpret_cast", "return", "short",
- "signed", "sizeof", "static", "static_cast", "struct", "switch", "template", "this", "throw", "try",
- "true", "typedef", "typeid", "typename", "union", "unsigned", "using", "virtual", "void", "volatile",
- "wchar_t", "while", "integer", "floating", "charconst", "stringlit", "identifier", "Completion",
- "EndOfCompletion", "Invalid", "RightBracket", "RightParen", "RightBrace", "SemiColon", "LeftBrace",
- "ERROR_TOKEN", "EOF_TOKEN", "no_cast_start", "]", ")", "}", ";", "{", "identifier_token", "expression",
- "id_expression", "qualified_or_unqualified_name", "unqualified_id_name", "identifier_name",
- "template_id_name", "nested_name_specifier", "class_or_namespace_name",
- "nested_name_specifier_with_tem" + "plate", "class_or_namespace_name_with_t" + "emplate", "class_name",
- "postfix_expression", "simple_type_specifier", "pseudo_destructor_name", "type_id", "type_name",
- "destructor_type_name", "unary_expression", "cast_expression", "new_type_id", "expression_list",
- "type_specifier_seq", "new_declarator", "new_pointer_operators", "ptr_operator",
- "new_array_expressions", "constant_expression", "pm_expression", "multiplicative_expression",
- "additive_expression", "shift_expression", "relational_expression", "equality_expression",
- "and_expression", "exclusive_or_expression", "inclusive_or_expression", "logical_and_expression",
- "logical_or_expression", "assignment_expression", "relational_expression_inTempla" + "te",
- "equality_expression_inTemplate", "and_expression_inTemplate",
- "exclusive_or_expression_inTemp" + "late", "inclusive_or_expression_inTemp" + "late",
- "logical_and_expression_inTempl" + "ate", "logical_or_expression_inTempla" + "te",
- "assignment_expression_inTempla" + "te", "expression_list_actual", "statement", "compound_statement",
- "statement_seq", "condition", "declarator", "for_init_statement", "function_definition", "declaration",
- "declaration_seq", "declaration_specifiers", "simple_declaration_specifiers",
- "class_declaration_specifiers", "elaborated_declaration_specifi" + "ers", "enum_declaration_specifiers",
- "type_name_declaration_specifie" + "rs", "no_type_declaration_specifier", "cv_qualifier",
- "no_type_declaration_specifiers", "class_specifier", "elaborated_type_specifier", "enum_specifier",
- "type_name_specifier", "class_keyword", "enumerator_list", "enumerator_definition", "namespace_name",
- "init_declarator_list", "init_declarator_complete", "complete_declarator", "initializer",
- "direct_declarator", "ptr_operator_seq", "function_declarator", "basic_direct_declarator",
- "array_direct_declarator", "array_modifier", "abstract_declarator", "direct_abstract_declarator",
- "basic_direct_abstract_declarat" + "or", "array_direct_abstract_declarat" + "or",
- "parameter_declaration_list", "parameter_declaration", "parameter_init_declarator",
- "parameter_initializer", "function_body", "handler_seq", "initializer_clause", "initializer_seq",
- "class_head", "access_specifier_keyword", "member_declaration", "member_declarator_list",
- "member_declaration_list", "member_declarator_complete", "constant_initializer", "bit_field_declarator",
- "base_specifier_list", "base_specifier", "conversion_function_id", "conversion_type_id",
- "conversion_declarator", "mem_initializer_list", "mem_initializer", "mem_initializer_name",
- "operator_id_name", "overloadable_operator", "template_parameter_list", "template_parameter",
- "template_argument_list", "template_argument", "type_name_specifier_inTemplate",
- "type_name_declaration_specifie" + "rs_inTemplate", "type_specifier_seq_inTemplate", "handler",
- "exception_declaration", "type_id_list" };
- }
-
- public final static String name[] = Name.name;
-
- @Override
- public final String name(int index) {
- return name[index];
- }
-
- public final static int ERROR_SYMBOL = 62, SCOPE_UBOUND = 120, SCOPE_SIZE = 121, MAX_NAME_LENGTH = 43;
-
- @Override
- public final int getErrorSymbol() {
- return ERROR_SYMBOL;
- }
-
- @Override
- public final int getScopeUbound() {
- return SCOPE_UBOUND;
- }
-
- @Override
- public final int getScopeSize() {
- return SCOPE_SIZE;
- }
-
- @Override
- public final int getMaxNameLength() {
- return MAX_NAME_LENGTH;
- }
-
- public final static int NUM_STATES = 602, NT_OFFSET = 122, LA_STATE_OFFSET = 7448, MAX_LA = 2147483647,
- NUM_RULES = 598, NUM_NONTERMINALS = 225, NUM_SYMBOLS = 347, SEGMENT_SIZE = 8192, START_STATE = 4258,
- IDENTIFIER_SYMBOL = 0, EOFT_SYMBOL = 120, EOLT_SYMBOL = 120, ACCEPT_ACTION = 6410, ERROR_ACTION = 6850;
-
- public final static boolean BACKTRACK = true;
-
- @Override
- public final int getNumStates() {
- return NUM_STATES;
- }
-
- @Override
- public final int getNtOffset() {
- return NT_OFFSET;
- }
-
- @Override
- public final int getLaStateOffset() {
- return LA_STATE_OFFSET;
- }
-
- @Override
- public final int getMaxLa() {
- return MAX_LA;
- }
-
- @Override
- public final int getNumRules() {
- return NUM_RULES;
- }
-
- @Override
- public final int getNumNonterminals() {
- return NUM_NONTERMINALS;
- }
-
- @Override
- public final int getNumSymbols() {
- return NUM_SYMBOLS;
- }
-
- @Override
- public final int getSegmentSize() {
- return SEGMENT_SIZE;
- }
-
- @Override
- public final int getStartState() {
- return START_STATE;
- }
-
- @Override
- public final int getStartSymbol() {
- return lhs[0];
- }
-
- public final int getIdentifierSymbol() {
- return IDENTIFIER_SYMBOL;
- }
-
- @Override
- public final int getEoftSymbol() {
- return EOFT_SYMBOL;
- }
-
- @Override
- public final int getEoltSymbol() {
- return EOLT_SYMBOL;
- }
-
- @Override
- public final int getAcceptAction() {
- return ACCEPT_ACTION;
- }
-
- @Override
- public final int getErrorAction() {
- return ERROR_ACTION;
- }
-
- @Override
- public final boolean isValidForParser() {
- return isValidForParser;
- }
-
- @Override
- public final boolean getBacktrack() {
- return BACKTRACK;
- }
-
- @Override
- public final int originalState(int state) {
- return -baseCheck[state];
- }
-
- @Override
- public final int asi(int state) {
- return asb[originalState(state)];
- }
-
- @Override
- public final int nasi(int state) {
- return nasb[originalState(state)];
- }
-
- @Override
- public final int inSymbol(int state) {
- return inSymb[originalState(state)];
- }
-
- @Override
- public final int ntAction(int state, int sym) {
- return baseAction[state + sym];
- }
-
- @Override
- public final int tAction(int state, int sym) {
- int i = baseAction[state], k = i + sym;
- return termAction[termCheck[k] == sym ? k : i];
- }
-
- @Override
- public final int lookAhead(int la_state, int sym) {
- int k = la_state + sym;
- return termAction[termCheck[k] == sym ? k : la_state];
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoCastExpressionParsersym.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoCastExpressionParsersym.java
deleted file mode 100644
index e53e86fb6f4..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoCastExpressionParsersym.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2010 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.dom.lrparser.cpp;
-
-public interface CPPNoCastExpressionParsersym {
- public final static int TK_asm = 65, TK_auto = 25, TK_bool = 11, TK_break = 76, TK_case = 77, TK_catch = 113,
- TK_char = 12, TK_class = 53, TK_const = 23, TK_const_cast = 41, TK_continue = 78, TK_default = 79,
- TK_delete = 66, TK_do = 80, TK_double = 13, TK_dynamic_cast = 42, TK_else = 121, TK_enum = 56,
- TK_explicit = 26, TK_export = 88, TK_extern = 27, TK_false = 43, TK_float = 14, TK_for = 81, TK_friend = 28,
- TK_goto = 82, TK_if = 83, TK_inline = 29, TK_int = 15, TK_long = 16, TK_mutable = 30, TK_namespace = 61,
- TK_new = 67, TK_operator = 8, TK_private = 114, TK_protected = 115, TK_public = 116, TK_register = 31,
- TK_reinterpret_cast = 44, TK_return = 84, TK_short = 17, TK_signed = 18, TK_sizeof = 45, TK_static = 32,
- TK_static_cast = 46, TK_struct = 57, TK_switch = 85, TK_template = 55, TK_this = 47, TK_throw = 59,
- TK_try = 74, TK_true = 48, TK_typedef = 33, TK_typeid = 49, TK_typename = 10, TK_union = 58,
- TK_unsigned = 19, TK_using = 63, TK_virtual = 22, TK_void = 20, TK_volatile = 24, TK_wchar_t = 21,
- TK_while = 75, TK_integer = 50, TK_floating = 51, TK_charconst = 52, TK_stringlit = 38, TK_identifier = 1,
- TK_Completion = 2, TK_EndOfCompletion = 9, TK_Invalid = 122, TK_LeftBracket = 60, TK_LeftParen = 3,
- TK_Dot = 119, TK_DotStar = 98, TK_Arrow = 117, TK_ArrowStar = 91, TK_PlusPlus = 36, TK_MinusMinus = 37,
- TK_And = 7, TK_Star = 5, TK_Plus = 34, TK_Minus = 35, TK_Tilde = 6, TK_Bang = 39, TK_Slash = 99,
- TK_Percent = 100, TK_RightShift = 86, TK_LeftShift = 87, TK_LT = 54, TK_GT = 64, TK_LE = 89, TK_GE = 90,
- TK_EQ = 92, TK_NE = 93, TK_Caret = 94, TK_Or = 95, TK_AndAnd = 96, TK_OrOr = 101, TK_Question = 102,
- TK_Colon = 71, TK_ColonColon = 4, TK_DotDotDot = 97, TK_Assign = 70, TK_StarAssign = 103,
- TK_SlashAssign = 104, TK_PercentAssign = 105, TK_PlusAssign = 106, TK_MinusAssign = 107,
- TK_RightShiftAssign = 108, TK_LeftShiftAssign = 109, TK_AndAssign = 110, TK_CaretAssign = 111,
- TK_OrAssign = 112, TK_Comma = 68, TK_RightBracket = 118, TK_RightParen = 72, TK_RightBrace = 73,
- TK_SemiColon = 40, TK_LeftBrace = 69, TK_ERROR_TOKEN = 62, TK_EOF_TOKEN = 120;
-
- public final static String orderedTerminalSymbols[] = { "", "identifier", "Completion", "LeftParen", "ColonColon",
- "Star", "Tilde", "And", "operator", "EndOfCompletion", "typename", "bool", "char", "double", "float", "int",
- "long", "short", "signed", "unsigned", "void", "wchar_t", "virtual", "const", "volatile", "auto",
- "explicit", "extern", "friend", "inline", "mutable", "register", "static", "typedef", "Plus", "Minus",
- "PlusPlus", "MinusMinus", "stringlit", "Bang", "SemiColon", "const_cast", "dynamic_cast", "false",
- "reinterpret_cast", "sizeof", "static_cast", "this", "true", "typeid", "integer", "floating", "charconst",
- "class", "LT", "template", "enum", "struct", "union", "throw", "LeftBracket", "namespace", "ERROR_TOKEN",
- "using", "GT", "asm", "delete", "new", "Comma", "LeftBrace", "Assign", "Colon", "RightParen", "RightBrace",
- "try", "while", "break", "case", "continue", "default", "do", "for", "goto", "if", "return", "switch",
- "RightShift", "LeftShift", "export", "LE", "GE", "ArrowStar", "EQ", "NE", "Caret", "Or", "AndAnd",
- "DotDotDot", "DotStar", "Slash", "Percent", "OrOr", "Question", "StarAssign", "SlashAssign",
- "PercentAssign", "PlusAssign", "MinusAssign", "RightShiftAssign", "LeftShiftAssign", "AndAssign",
- "CaretAssign", "OrAssign", "catch", "private", "protected", "public", "Arrow", "RightBracket", "Dot",
- "EOF_TOKEN", "else", "Invalid" };
-
- public final static boolean isValidForParser = true;
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoFunctionDeclaratorParser.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoFunctionDeclaratorParser.java
deleted file mode 100644
index 7639017cc08..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoFunctionDeclaratorParser.java
+++ /dev/null
@@ -1,2859 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2015 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.dom.lrparser.cpp;
-
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.cdt.core.dom.ast.IASTCompletionNode;
-import org.eclipse.cdt.core.dom.ast.IASTDeclarator;
-import org.eclipse.cdt.core.dom.ast.IASTUnaryExpression;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTBinaryExpression;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCastExpression;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTLiteralExpression;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTypeIdExpression;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTUnaryExpression;
-import org.eclipse.cdt.core.dom.lrparser.CPreprocessorAdapter;
-import org.eclipse.cdt.core.dom.lrparser.IDOMTokenMap;
-import org.eclipse.cdt.core.dom.lrparser.ISecondaryParser;
-import org.eclipse.cdt.core.dom.lrparser.ITokenCollector;
-import org.eclipse.cdt.core.dom.lrparser.action.ITokenMap;
-import org.eclipse.cdt.core.dom.lrparser.action.ITokenStream;
-import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack;
-import org.eclipse.cdt.core.dom.lrparser.action.TokenMap;
-import org.eclipse.cdt.core.dom.lrparser.action.cpp.CPPBuildASTParserAction;
-import org.eclipse.cdt.core.dom.lrparser.action.cpp.CPPSecondaryParserFactory;
-import org.eclipse.cdt.core.dom.lrparser.lpgextensions.FixedBacktrackingParser;
-import org.eclipse.cdt.core.dom.parser.IBuiltinBindingsProvider;
-import org.eclipse.cdt.core.index.IIndex;
-import org.eclipse.cdt.core.parser.IScanner;
-import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPNodeFactory;
-
-import lpg.lpgjavaruntime.BadParseException;
-import lpg.lpgjavaruntime.BadParseSymFileException;
-import lpg.lpgjavaruntime.DiagnoseParser;
-import lpg.lpgjavaruntime.ErrorToken;
-import lpg.lpgjavaruntime.IToken;
-import lpg.lpgjavaruntime.LexStream;
-import lpg.lpgjavaruntime.Monitor;
-import lpg.lpgjavaruntime.NotBacktrackParseTableException;
-import lpg.lpgjavaruntime.NullExportedSymbolsException;
-import lpg.lpgjavaruntime.NullTerminalSymbolsException;
-import lpg.lpgjavaruntime.ParseErrorCodes;
-import lpg.lpgjavaruntime.ParseTable;
-import lpg.lpgjavaruntime.PrsStream;
-import lpg.lpgjavaruntime.RuleAction;
-import lpg.lpgjavaruntime.Token;
-import lpg.lpgjavaruntime.UndefinedEofSymbolException;
-import lpg.lpgjavaruntime.UnimplementedTerminalsException;
-
-public class CPPNoFunctionDeclaratorParser extends PrsStream
- implements RuleAction, ITokenStream, ITokenCollector, ISecondaryParser<IASTDeclarator> {
- private static ParseTable prs = new CPPNoFunctionDeclaratorParserprs();
- private FixedBacktrackingParser btParser;
-
- public FixedBacktrackingParser getParser() {
- return btParser;
- }
-
- private void setResult(Object object) {
- btParser.setSym1(object);
- }
-
- public Object getRhsSym(int i) {
- return btParser.getSym(i);
- }
-
- public int getRhsTokenIndex(int i) {
- return btParser.getToken(i);
- }
-
- public IToken getRhsIToken(int i) {
- return super.getIToken(getRhsTokenIndex(i));
- }
-
- public int getRhsFirstTokenIndex(int i) {
- return btParser.getFirstToken(i);
- }
-
- public IToken getRhsFirstIToken(int i) {
- return super.getIToken(getRhsFirstTokenIndex(i));
- }
-
- public int getRhsLastTokenIndex(int i) {
- return btParser.getLastToken(i);
- }
-
- public IToken getRhsLastIToken(int i) {
- return super.getIToken(getRhsLastTokenIndex(i));
- }
-
- public int getLeftSpan() {
- return btParser.getFirstToken();
- }
-
- @Override
- public IToken getLeftIToken() {
- return super.getIToken(getLeftSpan());
- }
-
- public int getRightSpan() {
- return btParser.getLastToken();
- }
-
- @Override
- public IToken getRightIToken() {
- return super.getIToken(getRightSpan());
- }
-
- public int getRhsErrorTokenIndex(int i) {
- int index = btParser.getToken(i);
- IToken err = super.getIToken(index);
- return (err instanceof ErrorToken ? index : 0);
- }
-
- public ErrorToken getRhsErrorIToken(int i) {
- int index = btParser.getToken(i);
- IToken err = super.getIToken(index);
- return (ErrorToken) (err instanceof ErrorToken ? err : null);
- }
-
- public CPPNoFunctionDeclaratorParser(LexStream lexStream) {
- super(lexStream);
-
- try {
- super.remapTerminalSymbols(orderedTerminalSymbols(), CPPNoFunctionDeclaratorParserprs.EOFT_SYMBOL);
- } catch (NullExportedSymbolsException e) {
- } catch (NullTerminalSymbolsException e) {
- } catch (UnimplementedTerminalsException e) {
- java.util.ArrayList unimplemented_symbols = e.getSymbols();
- System.out.println("The Lexer will not scan the following token(s):");
- for (int i = 0; i < unimplemented_symbols.size(); i++) {
- Integer id = (Integer) unimplemented_symbols.get(i);
- System.out.println(" " + CPPNoFunctionDeclaratorParsersym.orderedTerminalSymbols[id.intValue()]);
- }
- System.out.println();
- } catch (UndefinedEofSymbolException e) {
- throw new Error(new UndefinedEofSymbolException("The Lexer does not implement the Eof symbol "
- + CPPNoFunctionDeclaratorParsersym.orderedTerminalSymbols[CPPNoFunctionDeclaratorParserprs.EOFT_SYMBOL]));
- }
- }
-
- @Override
- public String[] orderedTerminalSymbols() {
- return CPPNoFunctionDeclaratorParsersym.orderedTerminalSymbols;
- }
-
- public String getTokenKindName(int kind) {
- return CPPNoFunctionDeclaratorParsersym.orderedTerminalSymbols[kind];
- }
-
- public int getEOFTokenKind() {
- return CPPNoFunctionDeclaratorParserprs.EOFT_SYMBOL;
- }
-
- public PrsStream getParseStream() {
- return this;
- }
-
- //
- // Report error message for given error_token.
- //
- public final void reportErrorTokenMessage(int error_token, String msg) {
- int firsttok = super.getFirstErrorToken(error_token), lasttok = super.getLastErrorToken(error_token);
- String location = super.getFileName() + ':'
- + (firsttok > lasttok ? (super.getEndLine(lasttok) + ":" + super.getEndColumn(lasttok))
- : (super.getLine(error_token) + ":" + super.getColumn(error_token) + ":"
- + super.getEndLine(error_token) + ":" + super.getEndColumn(error_token)))
- + ": ";
- super.reportError((firsttok > lasttok ? ParseErrorCodes.INSERTION_CODE : ParseErrorCodes.SUBSTITUTION_CODE),
- location, msg);
- }
-
- public void parser() {
- parser(null, 0);
- }
-
- public void parser(Monitor monitor) {
- parser(monitor, 0);
- }
-
- public void parser(int error_repair_count) {
- parser(null, error_repair_count);
- }
-
- public void parser(Monitor monitor, int error_repair_count) {
- try {
- btParser = new FixedBacktrackingParser(monitor, this, prs, this);
- } catch (NotBacktrackParseTableException e) {
- throw new Error(new NotBacktrackParseTableException(
- "Regenerate CPPNoFunctionDeclaratorParserprs.java with -BACKTRACK option"));
- } catch (BadParseSymFileException e) {
- throw new Error(
- new BadParseSymFileException("Bad Parser Symbol File -- CPPNoFunctionDeclaratorParsersym.java"));
- }
-
- try {
- btParser.parse(error_repair_count);
- } catch (BadParseException e) {
- reset(e.error_token); // point to error token
- DiagnoseParser diagnoseParser = new DiagnoseParser(this, prs);
- diagnoseParser.diagnose(e.error_token);
- }
- }
-
- private CPPBuildASTParserAction action;
- private IASTCompletionNode compNode;
-
- public CPPNoFunctionDeclaratorParser(IScanner scanner, IDOMTokenMap tokenMap,
- IBuiltinBindingsProvider builtinBindingsProvider, IIndex index, Map<String, String> properties) {
- initActions(properties);
- action.initializeTranslationUnit(scanner, builtinBindingsProvider, index);
- CPreprocessorAdapter.runCPreprocessor(scanner, this, tokenMap);
- }
-
- private void initActions(Map<String, String> properties) {
- ScopedStack<Object> astStack = new ScopedStack<>();
-
- action = new CPPBuildASTParserAction(this, astStack, CPPNodeFactory.getDefault(),
- CPPSecondaryParserFactory.getDefault());
- action.setParserProperties(properties);
-
- }
-
- @Override
- public void addToken(IToken token) {
- token.setKind(mapKind(token.getKind())); // TODO does mapKind need to be called?
- super.addToken(token);
- }
-
- @Override
- public IASTDeclarator parse() {
- // this has to be done, or... kaboom!
- setStreamLength(getSize());
-
- final int errorRepairCount = -1; // -1 means full error handling
- parser(null, errorRepairCount); // do the actual parse
- super.resetTokenStream(); // allow tokens to be garbage collected
-
- compNode = action.getASTCompletionNode(); // the completion node may be null
- return (IASTDeclarator) action.getParseResult();
- }
-
- @Override
- public IASTCompletionNode getCompletionNode() {
- return compNode;
- }
-
- // uncomment this method to use with backtracking parser
- @Override
- public List<IToken> getRuleTokens() {
- return getTokens().subList(getLeftSpan(), getRightSpan() + 1);
- }
-
- @Override
- public String[] getOrderedTerminalSymbols() {
- return CPPNoFunctionDeclaratorParsersym.orderedTerminalSymbols;
- }
-
- @Override
- @SuppressWarnings("nls")
- public String getName() {
- return "CPPNoFunctionDeclaratorParser";
- }
-
- private ITokenMap tokenMap = null;
-
- @Override
- public void setTokens(List<IToken> tokens) {
- resetTokenStream();
- addToken(new Token(null, 0, 0, 0)); // dummy token
- for (IToken token : tokens) {
- token.setKind(tokenMap.mapKind(token.getKind()));
- addToken(token);
- }
- addToken(new Token(null, 0, 0, CPPNoFunctionDeclaratorParsersym.TK_EOF_TOKEN));
- }
-
- public CPPNoFunctionDeclaratorParser(ITokenStream stream, Map<String, String> properties) { // constructor for creating secondary parser
- initActions(properties);
- tokenMap = new TokenMap(CPPNoFunctionDeclaratorParsersym.orderedTerminalSymbols,
- stream.getOrderedTerminalSymbols());
- }
-
- public CPPNoFunctionDeclaratorParser(ITokenStream stream, IScanner scanner,
- IBuiltinBindingsProvider builtinBindingsProvider, IIndex index, Map<String, String> properties) { // constructor for creating secondary parser
- initActions(properties);
- action.initializeTranslationUnit(scanner, builtinBindingsProvider, index);
- tokenMap = new TokenMap(CPPNoFunctionDeclaratorParsersym.orderedTerminalSymbols,
- stream.getOrderedTerminalSymbols());
- }
-
- @Override
- public void ruleAction(int ruleNumber) {
- switch (ruleNumber) {
-
- //
- // Rule 1: <openscope-ast> ::= $Empty
- //
- case 1: {
- action.openASTScope();
- break;
- }
-
- //
- // Rule 2: <empty> ::= $Empty
- //
- case 2: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 13: translation_unit ::= declaration_seq_opt
- //
- case 13: {
- action.consumeTranslationUnit();
- break;
- }
-
- //
- // Rule 16: literal ::= integer
- //
- case 16: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_integer_constant);
- break;
- }
-
- //
- // Rule 17: literal ::= floating
- //
- case 17: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_float_constant);
- break;
- }
-
- //
- // Rule 18: literal ::= charconst
- //
- case 18: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_char_constant);
- break;
- }
-
- //
- // Rule 19: literal ::= stringlit
- //
- case 19: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_string_literal);
- break;
- }
-
- //
- // Rule 20: literal ::= true
- //
- case 20: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_true);
- break;
- }
-
- //
- // Rule 21: literal ::= false
- //
- case 21: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_false);
- break;
- }
-
- //
- // Rule 22: literal ::= this
- //
- case 22: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_this);
- break;
- }
-
- //
- // Rule 24: primary_expression ::= ( expression )
- //
- case 24: {
- action.consumeExpressionBracketed();
- break;
- }
-
- //
- // Rule 26: id_expression ::= qualified_or_unqualified_name
- //
- case 26: {
- action.consumeExpressionName();
- break;
- }
-
- //
- // Rule 33: unqualified_id_name ::= ~ identifier_token
- //
- case 33: {
- action.consumeDestructorName();
- break;
- }
-
- //
- // Rule 34: unqualified_id_name ::= ~ template_id_name
- //
- case 34: {
- action.consumeDestructorNameTemplateId();
- break;
- }
-
- //
- // Rule 35: identifier_name ::= identifier_token
- //
- case 35: {
- action.consumeIdentifierName();
- break;
- }
-
- //
- // Rule 36: template_opt ::= template
- //
- case 36: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 37: template_opt ::= $Empty
- //
- case 37: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 38: dcolon_opt ::= ::
- //
- case 38: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 39: dcolon_opt ::= $Empty
- //
- case 39: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 40: qualified_id_name ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name
- //
- case 40: {
- action.consumeQualifiedId(true);
- break;
- }
-
- //
- // Rule 41: qualified_id_name ::= :: unqualified_id_name
- //
- case 41: {
- action.consumeGlobalQualifiedId();
- break;
- }
-
- //
- // Rule 42: nested_name_specifier ::= class_or_namespace_name :: nested_name_specifier_with_template
- //
- case 42: {
- action.consumeNestedNameSpecifier(true);
- break;
- }
-
- //
- // Rule 43: nested_name_specifier ::= class_or_namespace_name ::
- //
- case 43: {
- action.consumeNestedNameSpecifier(false);
- break;
- }
-
- //
- // Rule 44: nested_name_specifier_with_template ::= class_or_namespace_name_with_template :: nested_name_specifier_with_template
- //
- case 44: {
- action.consumeNestedNameSpecifier(true);
- break;
- }
-
- //
- // Rule 45: nested_name_specifier_with_template ::= class_or_namespace_name_with_template ::
- //
- case 45: {
- action.consumeNestedNameSpecifier(false);
- break;
- }
-
- //
- // Rule 46: class_or_namespace_name_with_template ::= template_opt class_or_namespace_name
- //
- case 46: {
- action.consumeNameWithTemplateKeyword();
- break;
- }
-
- //
- // Rule 48: nested_name_specifier_opt ::= $Empty
- //
- case 48: {
- action.consumeNestedNameSpecifierEmpty();
- break;
- }
-
- //
- // Rule 51: postfix_expression ::= postfix_expression [ expression ]
- //
- case 51: {
- action.consumeExpressionArraySubscript();
- break;
- }
-
- //
- // Rule 52: postfix_expression ::= postfix_expression ( expression_list_opt )
- //
- case 52: {
- action.consumeExpressionFunctionCall();
- break;
- }
-
- //
- // Rule 53: postfix_expression ::= simple_type_specifier ( expression_list_opt )
- //
- case 53: {
- action.consumeExpressionSimpleTypeConstructor();
- break;
- }
-
- //
- // Rule 54: postfix_expression ::= typename dcolon_opt nested_name_specifier <empty> identifier_name ( expression_list_opt )
- //
- case 54: {
- action.consumeExpressionTypeName();
- break;
- }
-
- //
- // Rule 55: postfix_expression ::= typename dcolon_opt nested_name_specifier template_opt template_id_name ( expression_list_opt )
- //
- case 55: {
- action.consumeExpressionTypeName();
- break;
- }
-
- //
- // Rule 56: postfix_expression ::= postfix_expression . qualified_or_unqualified_name
- //
- case 56: {
- action.consumeExpressionFieldReference(false, false);
- break;
- }
-
- //
- // Rule 57: postfix_expression ::= postfix_expression -> qualified_or_unqualified_name
- //
- case 57: {
- action.consumeExpressionFieldReference(true, false);
- break;
- }
-
- //
- // Rule 58: postfix_expression ::= postfix_expression . template qualified_or_unqualified_name
- //
- case 58: {
- action.consumeExpressionFieldReference(false, true);
- break;
- }
-
- //
- // Rule 59: postfix_expression ::= postfix_expression -> template qualified_or_unqualified_name
- //
- case 59: {
- action.consumeExpressionFieldReference(true, true);
- break;
- }
-
- //
- // Rule 60: postfix_expression ::= postfix_expression . pseudo_destructor_name
- //
- case 60: {
- action.consumeExpressionFieldReference(false, false);
- break;
- }
-
- //
- // Rule 61: postfix_expression ::= postfix_expression -> pseudo_destructor_name
- //
- case 61: {
- action.consumeExpressionFieldReference(true, false);
- break;
- }
-
- //
- // Rule 62: postfix_expression ::= postfix_expression ++
- //
- case 62: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixIncr);
- break;
- }
-
- //
- // Rule 63: postfix_expression ::= postfix_expression --
- //
- case 63: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixDecr);
- break;
- }
-
- //
- // Rule 64: postfix_expression ::= dynamic_cast < type_id > ( expression )
- //
- case 64: {
- action.consumeExpressionCast(ICPPASTCastExpression.op_dynamic_cast);
- break;
- }
-
- //
- // Rule 65: postfix_expression ::= static_cast < type_id > ( expression )
- //
- case 65: {
- action.consumeExpressionCast(ICPPASTCastExpression.op_static_cast);
- break;
- }
-
- //
- // Rule 66: postfix_expression ::= reinterpret_cast < type_id > ( expression )
- //
- case 66: {
- action.consumeExpressionCast(ICPPASTCastExpression.op_reinterpret_cast);
- break;
- }
-
- //
- // Rule 67: postfix_expression ::= const_cast < type_id > ( expression )
- //
- case 67: {
- action.consumeExpressionCast(ICPPASTCastExpression.op_const_cast);
- break;
- }
-
- //
- // Rule 68: postfix_expression ::= typeid ( expression )
- //
- case 68: {
- action.consumeExpressionUnaryOperator(ICPPASTUnaryExpression.op_typeid);
- break;
- }
-
- //
- // Rule 69: postfix_expression ::= typeid ( type_id )
- //
- case 69: {
- action.consumeExpressionTypeId(ICPPASTTypeIdExpression.op_typeid);
- break;
- }
-
- //
- // Rule 70: pseudo_destructor_name ::= dcolon_opt nested_name_specifier_opt type_name :: destructor_type_name
- //
- case 70: {
- action.consumePsudoDestructorName(true);
- break;
- }
-
- //
- // Rule 71: pseudo_destructor_name ::= dcolon_opt nested_name_specifier template template_id_name :: destructor_type_name
- //
- case 71: {
- action.consumePsudoDestructorName(true);
- break;
- }
-
- //
- // Rule 72: pseudo_destructor_name ::= dcolon_opt nested_name_specifier_opt destructor_type_name
- //
- case 72: {
- action.consumePsudoDestructorName(false);
- break;
- }
-
- //
- // Rule 73: destructor_type_name ::= ~ identifier_token
- //
- case 73: {
- action.consumeDestructorName();
- break;
- }
-
- //
- // Rule 74: destructor_type_name ::= ~ template_id_name
- //
- case 74: {
- action.consumeDestructorNameTemplateId();
- break;
- }
-
- //
- // Rule 78: unary_expression ::= ++ cast_expression
- //
- case 78: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixIncr);
- break;
- }
-
- //
- // Rule 79: unary_expression ::= -- cast_expression
- //
- case 79: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixDecr);
- break;
- }
-
- //
- // Rule 80: unary_expression ::= & cast_expression
- //
- case 80: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_amper);
- break;
- }
-
- //
- // Rule 81: unary_expression ::= * cast_expression
- //
- case 81: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_star);
- break;
- }
-
- //
- // Rule 82: unary_expression ::= + cast_expression
- //
- case 82: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_plus);
- break;
- }
-
- //
- // Rule 83: unary_expression ::= - cast_expression
- //
- case 83: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_minus);
- break;
- }
-
- //
- // Rule 84: unary_expression ::= ~ cast_expression
- //
- case 84: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_tilde);
- break;
- }
-
- //
- // Rule 85: unary_expression ::= ! cast_expression
- //
- case 85: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_not);
- break;
- }
-
- //
- // Rule 86: unary_expression ::= sizeof unary_expression
- //
- case 86: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_sizeof);
- break;
- }
-
- //
- // Rule 87: unary_expression ::= sizeof ( type_id )
- //
- case 87: {
- action.consumeExpressionTypeId(ICPPASTTypeIdExpression.op_sizeof);
- break;
- }
-
- //
- // Rule 88: new_expression ::= dcolon_opt new new_placement_opt new_type_id <openscope-ast> new_array_expressions_opt new_initializer_opt
- //
- case 88: {
- action.consumeExpressionNew(true);
- break;
- }
-
- //
- // Rule 89: new_expression ::= dcolon_opt new new_placement_opt ( type_id ) <openscope-ast> new_array_expressions_opt new_initializer_opt
- //
- case 89: {
- action.consumeExpressionNew(false);
- break;
- }
-
- //
- // Rule 91: new_placement_opt ::= $Empty
- //
- case 91: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 92: new_type_id ::= type_specifier_seq
- //
- case 92: {
- action.consumeTypeId(false);
- break;
- }
-
- //
- // Rule 93: new_type_id ::= type_specifier_seq new_declarator
- //
- case 93: {
- action.consumeTypeId(true);
- break;
- }
-
- //
- // Rule 94: new_declarator ::= <openscope-ast> new_pointer_operators
- //
- case 94: {
- action.consumeNewDeclarator();
- break;
- }
-
- //
- // Rule 101: new_initializer ::= ( expression_list_opt )
- //
- case 101: {
- action.consumeNewInitializer();
- break;
- }
-
- //
- // Rule 103: new_initializer_opt ::= $Empty
- //
- case 103: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 104: delete_expression ::= dcolon_opt delete cast_expression
- //
- case 104: {
- action.consumeExpressionDelete(false);
- break;
- }
-
- //
- // Rule 105: delete_expression ::= dcolon_opt delete [ ] cast_expression
- //
- case 105: {
- action.consumeExpressionDelete(true);
- break;
- }
-
- //
- // Rule 107: cast_expression ::= ( type_id ) cast_expression
- //
- case 107: {
- action.consumeExpressionCast(ICPPASTCastExpression.op_cast);
- break;
- }
-
- //
- // Rule 109: pm_expression ::= pm_expression .* cast_expression
- //
- case 109: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_pmdot);
- break;
- }
-
- //
- // Rule 110: pm_expression ::= pm_expression ->* cast_expression
- //
- case 110: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_pmarrow);
- break;
- }
-
- //
- // Rule 112: multiplicative_expression ::= multiplicative_expression * pm_expression
- //
- case 112: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_multiply);
- break;
- }
-
- //
- // Rule 113: multiplicative_expression ::= multiplicative_expression / pm_expression
- //
- case 113: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_divide);
- break;
- }
-
- //
- // Rule 114: multiplicative_expression ::= multiplicative_expression % pm_expression
- //
- case 114: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_modulo);
- break;
- }
-
- //
- // Rule 116: additive_expression ::= additive_expression + multiplicative_expression
- //
- case 116: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_plus);
- break;
- }
-
- //
- // Rule 117: additive_expression ::= additive_expression - multiplicative_expression
- //
- case 117: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_minus);
- break;
- }
-
- //
- // Rule 119: shift_expression ::= shift_expression << additive_expression
- //
- case 119: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftLeft);
- break;
- }
-
- //
- // Rule 120: shift_expression ::= shift_expression >> additive_expression
- //
- case 120: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftRight);
- break;
- }
-
- //
- // Rule 122: relational_expression ::= relational_expression < shift_expression
- //
- case 122: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessThan);
- break;
- }
-
- //
- // Rule 123: relational_expression ::= relational_expression > shift_expression
- //
- case 123: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterThan);
- break;
- }
-
- //
- // Rule 124: relational_expression ::= relational_expression <= shift_expression
- //
- case 124: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessEqual);
- break;
- }
-
- //
- // Rule 125: relational_expression ::= relational_expression >= shift_expression
- //
- case 125: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterEqual);
- break;
- }
-
- //
- // Rule 127: equality_expression ::= equality_expression == relational_expression
- //
- case 127: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_equals);
- break;
- }
-
- //
- // Rule 128: equality_expression ::= equality_expression != relational_expression
- //
- case 128: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_notequals);
- break;
- }
-
- //
- // Rule 130: and_expression ::= and_expression & equality_expression
- //
- case 130: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAnd);
- break;
- }
-
- //
- // Rule 132: exclusive_or_expression ::= exclusive_or_expression ^ and_expression
- //
- case 132: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXor);
- break;
- }
-
- //
- // Rule 134: inclusive_or_expression ::= inclusive_or_expression | exclusive_or_expression
- //
- case 134: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOr);
- break;
- }
-
- //
- // Rule 136: logical_and_expression ::= logical_and_expression && inclusive_or_expression
- //
- case 136: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalAnd);
- break;
- }
-
- //
- // Rule 138: logical_or_expression ::= logical_or_expression || logical_and_expression
- //
- case 138: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalOr);
- break;
- }
-
- //
- // Rule 140: conditional_expression ::= logical_or_expression ? expression : assignment_expression
- //
- case 140: {
- action.consumeExpressionConditional();
- break;
- }
-
- //
- // Rule 142: relational_expression_inTemplate ::= relational_expression_inTemplate < shift_expression
- //
- case 142: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessThan);
- break;
- }
-
- //
- // Rule 143: relational_expression_inTemplate ::= ( relational_expression_inTemplate > shift_expression )
- //
- case 143: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterThan);
- break;
- }
-
- //
- // Rule 144: relational_expression_inTemplate ::= relational_expression_inTemplate <= shift_expression
- //
- case 144: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessEqual);
- break;
- }
-
- //
- // Rule 145: relational_expression_inTemplate ::= relational_expression_inTemplate >= shift_expression
- //
- case 145: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterEqual);
- break;
- }
-
- //
- // Rule 147: equality_expression_inTemplate ::= equality_expression_inTemplate == relational_expression_inTemplate
- //
- case 147: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_equals);
- break;
- }
-
- //
- // Rule 148: equality_expression_inTemplate ::= equality_expression_inTemplate != relational_expression_inTemplate
- //
- case 148: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_notequals);
- break;
- }
-
- //
- // Rule 150: and_expression_inTemplate ::= and_expression_inTemplate & equality_expression_inTemplate
- //
- case 150: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAnd);
- break;
- }
-
- //
- // Rule 152: exclusive_or_expression_inTemplate ::= exclusive_or_expression_inTemplate ^ and_expression_inTemplate
- //
- case 152: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXor);
- break;
- }
-
- //
- // Rule 154: inclusive_or_expression_inTemplate ::= inclusive_or_expression_inTemplate | exclusive_or_expression_inTemplate
- //
- case 154: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOr);
- break;
- }
-
- //
- // Rule 156: logical_and_expression_inTemplate ::= logical_and_expression_inTemplate && inclusive_or_expression_inTemplate
- //
- case 156: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalAnd);
- break;
- }
-
- //
- // Rule 158: logical_or_expression_inTemplate ::= logical_or_expression_inTemplate || logical_and_expression_inTemplate
- //
- case 158: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalOr);
- break;
- }
-
- //
- // Rule 160: conditional_expression_inTemplate ::= logical_or_expression_inTemplate ? expression : assignment_expression_inTemplate
- //
- case 160: {
- action.consumeExpressionConditional();
- break;
- }
-
- //
- // Rule 163: assignment_expression_inTemplate ::= logical_or_expression_inTemplate = assignment_expression_inTemplate
- //
- case 163: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_assign);
- break;
- }
-
- //
- // Rule 164: assignment_expression_inTemplate ::= logical_or_expression_inTemplate *= assignment_expression_inTemplate
- //
- case 164: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_multiplyAssign);
- break;
- }
-
- //
- // Rule 165: assignment_expression_inTemplate ::= logical_or_expression_inTemplate /= assignment_expression_inTemplate
- //
- case 165: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_divideAssign);
- break;
- }
-
- //
- // Rule 166: assignment_expression_inTemplate ::= logical_or_expression_inTemplate %= assignment_expression_inTemplate
- //
- case 166: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_moduloAssign);
- break;
- }
-
- //
- // Rule 167: assignment_expression_inTemplate ::= logical_or_expression_inTemplate += assignment_expression_inTemplate
- //
- case 167: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_plusAssign);
- break;
- }
-
- //
- // Rule 168: assignment_expression_inTemplate ::= logical_or_expression_inTemplate -= assignment_expression_inTemplate
- //
- case 168: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_minusAssign);
- break;
- }
-
- //
- // Rule 169: assignment_expression_inTemplate ::= logical_or_expression_inTemplate >>= assignment_expression_inTemplate
- //
- case 169: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftRightAssign);
- break;
- }
-
- //
- // Rule 170: assignment_expression_inTemplate ::= logical_or_expression_inTemplate <<= assignment_expression_inTemplate
- //
- case 170: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftLeftAssign);
- break;
- }
-
- //
- // Rule 171: assignment_expression_inTemplate ::= logical_or_expression_inTemplate &= assignment_expression_inTemplate
- //
- case 171: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAndAssign);
- break;
- }
-
- //
- // Rule 172: assignment_expression_inTemplate ::= logical_or_expression_inTemplate ^= assignment_expression_inTemplate
- //
- case 172: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXorAssign);
- break;
- }
-
- //
- // Rule 173: assignment_expression_inTemplate ::= logical_or_expression_inTemplate |= assignment_expression_inTemplate
- //
- case 173: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOrAssign);
- break;
- }
-
- //
- // Rule 174: throw_expression ::= throw
- //
- case 174: {
- action.consumeExpressionThrow(false);
- break;
- }
-
- //
- // Rule 175: throw_expression ::= throw assignment_expression
- //
- case 175: {
- action.consumeExpressionThrow(true);
- break;
- }
-
- //
- // Rule 178: assignment_expression ::= logical_or_expression = assignment_expression
- //
- case 178: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_assign);
- break;
- }
-
- //
- // Rule 179: assignment_expression ::= logical_or_expression *= assignment_expression
- //
- case 179: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_multiplyAssign);
- break;
- }
-
- //
- // Rule 180: assignment_expression ::= logical_or_expression /= assignment_expression
- //
- case 180: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_divideAssign);
- break;
- }
-
- //
- // Rule 181: assignment_expression ::= logical_or_expression %= assignment_expression
- //
- case 181: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_moduloAssign);
- break;
- }
-
- //
- // Rule 182: assignment_expression ::= logical_or_expression += assignment_expression
- //
- case 182: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_plusAssign);
- break;
- }
-
- //
- // Rule 183: assignment_expression ::= logical_or_expression -= assignment_expression
- //
- case 183: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_minusAssign);
- break;
- }
-
- //
- // Rule 184: assignment_expression ::= logical_or_expression >>= assignment_expression
- //
- case 184: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftRightAssign);
- break;
- }
-
- //
- // Rule 185: assignment_expression ::= logical_or_expression <<= assignment_expression
- //
- case 185: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftLeftAssign);
- break;
- }
-
- //
- // Rule 186: assignment_expression ::= logical_or_expression &= assignment_expression
- //
- case 186: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAndAssign);
- break;
- }
-
- //
- // Rule 187: assignment_expression ::= logical_or_expression ^= assignment_expression
- //
- case 187: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXorAssign);
- break;
- }
-
- //
- // Rule 188: assignment_expression ::= logical_or_expression |= assignment_expression
- //
- case 188: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOrAssign);
- break;
- }
-
- //
- // Rule 190: expression_list ::= <openscope-ast> expression_list_actual
- //
- case 190: {
- action.consumeExpressionList();
- break;
- }
-
- //
- // Rule 194: expression_list_opt ::= $Empty
- //
- case 194: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 196: expression_opt ::= $Empty
- //
- case 196: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 199: constant_expression_opt ::= $Empty
- //
- case 199: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 208: statement ::= ERROR_TOKEN
- //
- case 208: {
- action.consumeStatementProblem();
- break;
- }
-
- //
- // Rule 209: labeled_statement ::= identifier : statement
- //
- case 209: {
- action.consumeStatementLabeled();
- break;
- }
-
- //
- // Rule 210: labeled_statement ::= case constant_expression : statement
- //
- case 210: {
- action.consumeStatementCase();
- break;
- }
-
- //
- // Rule 211: labeled_statement ::= default : statement
- //
- case 211: {
- action.consumeStatementDefault();
- break;
- }
-
- //
- // Rule 212: expression_statement ::= expression ;
- //
- case 212: {
- action.consumeStatementExpression();
- break;
- }
-
- //
- // Rule 213: expression_statement ::= ;
- //
- case 213: {
- action.consumeStatementNull();
- break;
- }
-
- //
- // Rule 214: compound_statement ::= { <openscope-ast> statement_seq }
- //
- case 214: {
- action.consumeStatementCompoundStatement(true);
- break;
- }
-
- //
- // Rule 215: compound_statement ::= { }
- //
- case 215: {
- action.consumeStatementCompoundStatement(false);
- break;
- }
-
- //
- // Rule 218: selection_statement ::= if ( condition ) statement
- //
- case 218: {
- action.consumeStatementIf(false);
- break;
- }
-
- //
- // Rule 219: selection_statement ::= if ( condition ) statement else statement
- //
- case 219: {
- action.consumeStatementIf(true);
- break;
- }
-
- //
- // Rule 220: selection_statement ::= switch ( condition ) statement
- //
- case 220: {
- action.consumeStatementSwitch();
- break;
- }
-
- //
- // Rule 222: condition ::= type_specifier_seq declarator = assignment_expression
- //
- case 222: {
- action.consumeConditionDeclaration();
- break;
- }
-
- //
- // Rule 224: condition_opt ::= $Empty
- //
- case 224: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 225: iteration_statement ::= while ( condition ) statement
- //
- case 225: {
- action.consumeStatementWhileLoop();
- break;
- }
-
- //
- // Rule 226: iteration_statement ::= do statement while ( expression ) ;
- //
- case 226: {
- action.consumeStatementDoLoop(true);
- break;
- }
-
- //
- // Rule 227: iteration_statement ::= do statement
- //
- case 227: {
- action.consumeStatementDoLoop(false);
- break;
- }
-
- //
- // Rule 228: iteration_statement ::= for ( for_init_statement condition_opt ; expression_opt ) statement
- //
- case 228: {
- action.consumeStatementForLoop();
- break;
- }
-
- //
- // Rule 230: for_init_statement ::= simple_declaration_with_declspec
- //
- case 230: {
- action.consumeStatementDeclaration();
- break;
- }
-
- //
- // Rule 231: jump_statement ::= break ;
- //
- case 231: {
- action.consumeStatementBreak();
- break;
- }
-
- //
- // Rule 232: jump_statement ::= continue ;
- //
- case 232: {
- action.consumeStatementContinue();
- break;
- }
-
- //
- // Rule 233: jump_statement ::= return expression ;
- //
- case 233: {
- action.consumeStatementReturn(true);
- break;
- }
-
- //
- // Rule 234: jump_statement ::= return ;
- //
- case 234: {
- action.consumeStatementReturn(false);
- break;
- }
-
- //
- // Rule 235: jump_statement ::= goto identifier_token ;
- //
- case 235: {
- action.consumeStatementGoto();
- break;
- }
-
- //
- // Rule 236: declaration_statement ::= block_declaration
- //
- case 236: {
- action.consumeStatementDeclarationWithDisambiguation();
- break;
- }
-
- //
- // Rule 237: declaration_statement ::= function_definition
- //
- case 237: {
- action.consumeStatementDeclaration();
- break;
- }
-
- //
- // Rule 245: declaration ::= ERROR_TOKEN
- //
- case 245: {
- action.consumeDeclarationProblem();
- break;
- }
-
- //
- // Rule 255: simple_declaration ::= declaration_specifiers_opt <openscope-ast> init_declarator_list_opt ;
- //
- case 255: {
- action.consumeDeclarationSimple(true);
- break;
- }
-
- //
- // Rule 256: simple_declaration_with_declspec ::= declaration_specifiers <openscope-ast> init_declarator_list_opt ;
- //
- case 256: {
- action.consumeDeclarationSimple(true);
- break;
- }
-
- //
- // Rule 257: declaration_specifiers ::= <openscope-ast> simple_declaration_specifiers
- //
- case 257: {
- action.consumeDeclarationSpecifiersSimple();
- break;
- }
-
- //
- // Rule 258: declaration_specifiers ::= <openscope-ast> class_declaration_specifiers
- //
- case 258: {
- action.consumeDeclarationSpecifiersComposite();
- break;
- }
-
- //
- // Rule 259: declaration_specifiers ::= <openscope-ast> elaborated_declaration_specifiers
- //
- case 259: {
- action.consumeDeclarationSpecifiersComposite();
- break;
- }
-
- //
- // Rule 260: declaration_specifiers ::= <openscope-ast> enum_declaration_specifiers
- //
- case 260: {
- action.consumeDeclarationSpecifiersComposite();
- break;
- }
-
- //
- // Rule 261: declaration_specifiers ::= <openscope-ast> type_name_declaration_specifiers
- //
- case 261: {
- action.consumeDeclarationSpecifiersTypeName();
- break;
- }
-
- //
- // Rule 263: declaration_specifiers_opt ::= $Empty
- //
- case 263: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 267: no_type_declaration_specifier ::= friend
- //
- case 267: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 268: no_type_declaration_specifier ::= typedef
- //
- case 268: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 288: storage_class_specifier ::= auto
- //
- case 288: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 289: storage_class_specifier ::= register
- //
- case 289: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 290: storage_class_specifier ::= static
- //
- case 290: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 291: storage_class_specifier ::= extern
- //
- case 291: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 292: storage_class_specifier ::= mutable
- //
- case 292: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 293: function_specifier ::= inline
- //
- case 293: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 294: function_specifier ::= virtual
- //
- case 294: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 295: function_specifier ::= explicit
- //
- case 295: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 296: simple_type_specifier ::= simple_type_specifier_token
- //
- case 296: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 310: type_name_specifier ::= dcolon_opt nested_name_specifier_opt type_name
- //
- case 310: {
- action.consumeQualifiedId(false);
- break;
- }
-
- //
- // Rule 311: type_name_specifier ::= dcolon_opt nested_name_specifier template template_id_name
- //
- case 311: {
- action.consumeQualifiedId(false);
- break;
- }
-
- //
- // Rule 312: type_name_specifier ::= typename dcolon_opt nested_name_specifier identifier_name
- //
- case 312: {
- action.consumeQualifiedId(false);
- break;
- }
-
- //
- // Rule 313: type_name_specifier ::= typename dcolon_opt nested_name_specifier template_opt template_id_name
- //
- case 313: {
- action.consumeQualifiedId(true);
- break;
- }
-
- //
- // Rule 315: elaborated_type_specifier ::= class_keyword elaborated_specifier_hook dcolon_opt nested_name_specifier_opt identifier_name
- //
- case 315: {
- action.consumeTypeSpecifierElaborated(false);
- break;
- }
-
- //
- // Rule 316: elaborated_type_specifier ::= class_keyword elaborated_specifier_hook dcolon_opt nested_name_specifier_opt template_opt template_id_name
- //
- case 316: {
- action.consumeTypeSpecifierElaborated(true);
- break;
- }
-
- //
- // Rule 317: elaborated_type_specifier ::= enum elaborated_specifier_hook dcolon_opt nested_name_specifier_opt identifier_name
- //
- case 317: {
- action.consumeTypeSpecifierElaborated(false);
- break;
- }
-
- //
- // Rule 321: enum_specifier ::= enum enum_specifier_hook { <openscope-ast> enumerator_list_opt comma_opt }
- //
- case 321: {
- action.consumeTypeSpecifierEnumeration(false);
- break;
- }
-
- //
- // Rule 322: enum_specifier ::= enum enum_specifier_hook identifier_token { <openscope-ast> enumerator_list_opt comma_opt }
- //
- case 322: {
- action.consumeTypeSpecifierEnumeration(true);
- break;
- }
-
- //
- // Rule 328: enumerator_definition ::= identifier_token
- //
- case 328: {
- action.consumeEnumerator(false);
- break;
- }
-
- //
- // Rule 329: enumerator_definition ::= identifier_token = constant_expression
- //
- case 329: {
- action.consumeEnumerator(true);
- break;
- }
-
- //
- // Rule 331: namespace_definition ::= namespace namespace_name namespace_definition_hook { <openscope-ast> declaration_seq_opt }
- //
- case 331: {
- action.consumeNamespaceDefinition(true);
- break;
- }
-
- //
- // Rule 332: namespace_definition ::= namespace namespace_definition_hook { <openscope-ast> declaration_seq_opt }
- //
- case 332: {
- action.consumeNamespaceDefinition(false);
- break;
- }
-
- //
- // Rule 334: namespace_alias_definition ::= namespace identifier_token = dcolon_opt nested_name_specifier_opt namespace_name ;
- //
- case 334: {
- action.consumeNamespaceAliasDefinition();
- break;
- }
-
- //
- // Rule 335: using_declaration ::= using typename_opt dcolon_opt nested_name_specifier_opt unqualified_id_name ;
- //
- case 335: {
- action.consumeUsingDeclaration();
- break;
- }
-
- //
- // Rule 336: typename_opt ::= typename
- //
- case 336: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 337: typename_opt ::= $Empty
- //
- case 337: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 338: using_directive ::= using namespace dcolon_opt nested_name_specifier_opt namespace_name ;
- //
- case 338: {
- action.consumeUsingDirective();
- break;
- }
-
- //
- // Rule 339: asm_definition ::= asm ( stringlit ) ;
- //
- case 339: {
- action.consumeDeclarationASM();
- break;
- }
-
- //
- // Rule 340: linkage_specification ::= extern stringlit { <openscope-ast> declaration_seq_opt }
- //
- case 340: {
- action.consumeLinkageSpecification();
- break;
- }
-
- //
- // Rule 341: linkage_specification ::= extern stringlit <openscope-ast> declaration
- //
- case 341: {
- action.consumeLinkageSpecification();
- break;
- }
-
- //
- // Rule 347: init_declarator ::= complete_declarator initializer
- //
- case 347: {
- action.consumeDeclaratorWithInitializer(true);
- break;
- }
-
- //
- // Rule 350: declarator ::= <openscope-ast> ptr_operator_seq direct_declarator
- //
- case 350: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 352: function_declarator ::= <openscope-ast> ptr_operator_seq direct_declarator
- //
- case 352: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 355: basic_direct_declarator ::= declarator_id_name
- //
- case 355: {
- action.consumeDirectDeclaratorIdentifier();
- break;
- }
-
- //
- // Rule 356: basic_direct_declarator ::= ( declarator )
- //
- case 356: {
- action.consumeDirectDeclaratorBracketed();
- break;
- }
-
- //
- // Rule 357: function_direct_declarator ::= basic_direct_declarator ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
- //
- case 357: {
- action.consumeDirectDeclaratorFunctionDeclarator(true);
- break;
- }
-
- //
- // Rule 358: array_direct_declarator ::= array_direct_declarator array_modifier
- //
- case 358: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 359: array_direct_declarator ::= basic_direct_declarator array_modifier
- //
- case 359: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 360: array_modifier ::= [ constant_expression ]
- //
- case 360: {
- action.consumeDirectDeclaratorArrayModifier(true);
- break;
- }
-
- //
- // Rule 361: array_modifier ::= [ ]
- //
- case 361: {
- action.consumeDirectDeclaratorArrayModifier(false);
- break;
- }
-
- //
- // Rule 362: ptr_operator ::= pointer_hook * pointer_hook <openscope-ast> cv_qualifier_seq_opt
- //
- case 362: {
- action.consumePointer();
- break;
- }
-
- //
- // Rule 363: ptr_operator ::= pointer_hook & pointer_hook
- //
- case 363: {
- action.consumeReferenceOperator();
- break;
- }
-
- //
- // Rule 364: ptr_operator ::= dcolon_opt nested_name_specifier pointer_hook * pointer_hook <openscope-ast> cv_qualifier_seq_opt
- //
- case 364: {
- action.consumePointerToMember();
- break;
- }
-
- //
- // Rule 371: cv_qualifier ::= const
- //
- case 371: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 372: cv_qualifier ::= volatile
- //
- case 372: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 374: declarator_id_name ::= dcolon_opt nested_name_specifier_opt type_name
- //
- case 374: {
- action.consumeQualifiedId(false);
- break;
- }
-
- //
- // Rule 375: type_id ::= type_specifier_seq
- //
- case 375: {
- action.consumeTypeId(false);
- break;
- }
-
- //
- // Rule 376: type_id ::= type_specifier_seq abstract_declarator
- //
- case 376: {
- action.consumeTypeId(true);
- break;
- }
-
- //
- // Rule 379: abstract_declarator ::= <openscope-ast> ptr_operator_seq
- //
- case 379: {
- action.consumeDeclaratorWithPointer(false);
- break;
- }
-
- //
- // Rule 380: abstract_declarator ::= <openscope-ast> ptr_operator_seq direct_abstract_declarator
- //
- case 380: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 384: basic_direct_abstract_declarator ::= ( abstract_declarator )
- //
- case 384: {
- action.consumeDirectDeclaratorBracketed();
- break;
- }
-
- //
- // Rule 385: basic_direct_abstract_declarator ::= ( )
- //
- case 385: {
- action.consumeAbstractDeclaratorEmpty();
- break;
- }
-
- //
- // Rule 386: array_direct_abstract_declarator ::= array_modifier
- //
- case 386: {
- action.consumeDirectDeclaratorArrayDeclarator(false);
- break;
- }
-
- //
- // Rule 387: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier
- //
- case 387: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 388: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier
- //
- case 388: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 389: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
- //
- case 389: {
- action.consumeDirectDeclaratorFunctionDeclarator(true);
- break;
- }
-
- //
- // Rule 390: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
- //
- case 390: {
- action.consumeDirectDeclaratorFunctionDeclarator(false);
- break;
- }
-
- //
- // Rule 391: parameter_declaration_clause ::= parameter_declaration_list_opt ...
- //
- case 391: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 392: parameter_declaration_clause ::= parameter_declaration_list_opt
- //
- case 392: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 393: parameter_declaration_clause ::= parameter_declaration_list , ...
- //
- case 393: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 399: abstract_declarator_opt ::= $Empty
- //
- case 399: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 400: parameter_declaration ::= declaration_specifiers parameter_init_declarator
- //
- case 400: {
- action.consumeParameterDeclaration();
- break;
- }
-
- //
- // Rule 401: parameter_declaration ::= declaration_specifiers
- //
- case 401: {
- action.consumeParameterDeclarationWithoutDeclarator();
- break;
- }
-
- //
- // Rule 403: parameter_init_declarator ::= declarator = parameter_initializer
- //
- case 403: {
- action.consumeDeclaratorWithInitializer(true);
- break;
- }
-
- //
- // Rule 405: parameter_init_declarator ::= abstract_declarator = parameter_initializer
- //
- case 405: {
- action.consumeDeclaratorWithInitializer(true);
- break;
- }
-
- //
- // Rule 406: parameter_init_declarator ::= = parameter_initializer
- //
- case 406: {
- action.consumeDeclaratorWithInitializer(false);
- break;
- }
-
- //
- // Rule 407: parameter_initializer ::= assignment_expression
- //
- case 407: {
- action.consumeInitializer();
- break;
- }
-
- //
- // Rule 408: function_definition ::= declaration_specifiers_opt function_declarator <openscope-ast> ctor_initializer_list_opt function_body
- //
- case 408: {
- action.consumeFunctionDefinition(false);
- break;
- }
-
- //
- // Rule 409: function_definition ::= declaration_specifiers_opt function_declarator try <openscope-ast> ctor_initializer_list_opt function_body <openscope-ast> handler_seq
- //
- case 409: {
- action.consumeFunctionDefinition(true);
- break;
- }
-
- //
- // Rule 412: initializer ::= ( expression_list )
- //
- case 412: {
- action.consumeInitializerConstructor();
- break;
- }
-
- //
- // Rule 413: initializer_clause ::= assignment_expression
- //
- case 413: {
- action.consumeInitializer();
- break;
- }
-
- //
- // Rule 414: initializer_clause ::= initializer_list
- //
- case 414: {
- action.consumeInitializer();
- break;
- }
-
- //
- // Rule 415: initializer_list ::= start_initializer_list { <openscope-ast> initializer_seq , } end_initializer_list
- //
- case 415: {
- action.consumeInitializerList();
- break;
- }
-
- //
- // Rule 416: initializer_list ::= start_initializer_list { <openscope-ast> initializer_seq } end_initializer_list
- //
- case 416: {
- action.consumeInitializerList();
- break;
- }
-
- //
- // Rule 417: initializer_list ::= { <openscope-ast> }
- //
- case 417: {
- action.consumeInitializerList();
- break;
- }
-
- //
- // Rule 418: start_initializer_list ::= $Empty
- //
- case 418: {
- action.initializerListStart();
- break;
- }
-
- //
- // Rule 419: end_initializer_list ::= $Empty
- //
- case 419: {
- action.initializerListEnd();
- break;
- }
-
- //
- // Rule 424: class_specifier ::= class_head { <openscope-ast> member_declaration_list_opt }
- //
- case 424: {
- action.consumeClassSpecifier();
- break;
- }
-
- //
- // Rule 425: class_head ::= class_keyword composite_specifier_hook identifier_name_opt class_name_suffix_hook <openscope-ast> base_clause_opt
- //
- case 425: {
- action.consumeClassHead(false);
- break;
- }
-
- //
- // Rule 426: class_head ::= class_keyword composite_specifier_hook template_id_name class_name_suffix_hook <openscope-ast> base_clause_opt
- //
- case 426: {
- action.consumeClassHead(false);
- break;
- }
-
- //
- // Rule 427: class_head ::= class_keyword composite_specifier_hook nested_name_specifier identifier_name class_name_suffix_hook <openscope-ast> base_clause_opt
- //
- case 427: {
- action.consumeClassHead(true);
- break;
- }
-
- //
- // Rule 428: class_head ::= class_keyword composite_specifier_hook nested_name_specifier template_id_name class_name_suffix_hook <openscope-ast> base_clause_opt
- //
- case 428: {
- action.consumeClassHead(true);
- break;
- }
-
- //
- // Rule 432: identifier_name_opt ::= $Empty
- //
- case 432: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 436: visibility_label ::= access_specifier_keyword :
- //
- case 436: {
- action.consumeVisibilityLabel();
- break;
- }
-
- //
- // Rule 437: member_declaration ::= declaration_specifiers_opt <openscope-ast> member_declarator_list ;
- //
- case 437: {
- action.consumeDeclarationSimple(true);
- break;
- }
-
- //
- // Rule 438: member_declaration ::= declaration_specifiers_opt ;
- //
- case 438: {
- action.consumeDeclarationSimple(false);
- break;
- }
-
- //
- // Rule 441: member_declaration ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name ;
- //
- case 441: {
- action.consumeMemberDeclarationQualifiedId();
- break;
- }
-
- //
- // Rule 447: member_declaration ::= ERROR_TOKEN
- //
- case 447: {
- action.consumeDeclarationProblem();
- break;
- }
-
- //
- // Rule 456: member_declarator ::= declarator constant_initializer
- //
- case 456: {
- action.consumeMemberDeclaratorWithInitializer();
- break;
- }
-
- //
- // Rule 457: member_declarator ::= bit_field_declarator : constant_expression
- //
- case 457: {
- action.consumeBitField(true);
- break;
- }
-
- //
- // Rule 458: member_declarator ::= : constant_expression
- //
- case 458: {
- action.consumeBitField(false);
- break;
- }
-
- //
- // Rule 459: bit_field_declarator ::= identifier_name
- //
- case 459: {
- action.consumeDirectDeclaratorIdentifier();
- break;
- }
-
- //
- // Rule 460: constant_initializer ::= = constant_expression
- //
- case 460: {
- action.consumeInitializer();
- break;
- }
-
- //
- // Rule 466: base_specifier ::= dcolon_opt nested_name_specifier_opt class_name
- //
- case 466: {
- action.consumeBaseSpecifier(false, false);
- break;
- }
-
- //
- // Rule 467: base_specifier ::= virtual access_specifier_keyword_opt dcolon_opt nested_name_specifier_opt class_name
- //
- case 467: {
- action.consumeBaseSpecifier(true, true);
- break;
- }
-
- //
- // Rule 468: base_specifier ::= access_specifier_keyword virtual dcolon_opt nested_name_specifier_opt class_name
- //
- case 468: {
- action.consumeBaseSpecifier(true, true);
- break;
- }
-
- //
- // Rule 469: base_specifier ::= access_specifier_keyword dcolon_opt nested_name_specifier_opt class_name
- //
- case 469: {
- action.consumeBaseSpecifier(true, false);
- break;
- }
-
- //
- // Rule 470: access_specifier_keyword ::= private
- //
- case 470: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 471: access_specifier_keyword ::= protected
- //
- case 471: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 472: access_specifier_keyword ::= public
- //
- case 472: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 474: access_specifier_keyword_opt ::= $Empty
- //
- case 474: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 476: conversion_function_id_name ::= conversion_function_id < <openscope-ast> template_argument_list_opt >
- //
- case 476: {
- action.consumeTemplateId();
- break;
- }
-
- //
- // Rule 477: conversion_function_id ::= operator conversion_type_id
- //
- case 477: {
- action.consumeConversionName();
- break;
- }
-
- //
- // Rule 478: conversion_type_id ::= type_specifier_seq conversion_declarator
- //
- case 478: {
- action.consumeTypeId(true);
- break;
- }
-
- //
- // Rule 479: conversion_type_id ::= type_specifier_seq
- //
- case 479: {
- action.consumeTypeId(false);
- break;
- }
-
- //
- // Rule 480: conversion_declarator ::= <openscope-ast> ptr_operator_seq
- //
- case 480: {
- action.consumeDeclaratorWithPointer(false);
- break;
- }
-
- //
- // Rule 486: mem_initializer ::= mem_initializer_name ( expression_list_opt )
- //
- case 486: {
- action.consumeConstructorChainInitializer();
- break;
- }
-
- //
- // Rule 487: mem_initializer_name ::= dcolon_opt nested_name_specifier_opt class_name
- //
- case 487: {
- action.consumeQualifiedId(false);
- break;
- }
-
- //
- // Rule 490: operator_function_id_name ::= operator_id_name < <openscope-ast> template_argument_list_opt >
- //
- case 490: {
- action.consumeTemplateId();
- break;
- }
-
- //
- // Rule 491: operator_id_name ::= operator overloadable_operator
- //
- case 491: {
- action.consumeOperatorName();
- break;
- }
-
- //
- // Rule 534: template_declaration ::= export_opt template < <openscope-ast> template_parameter_list > declaration
- //
- case 534: {
- action.consumeTemplateDeclaration();
- break;
- }
-
- //
- // Rule 535: export_opt ::= export
- //
- case 535: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 536: export_opt ::= $Empty
- //
- case 536: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 540: template_parameter ::= parameter_declaration
- //
- case 540: {
- action.consumeTemplateParamterDeclaration();
- break;
- }
-
- //
- // Rule 541: type_parameter ::= class identifier_name_opt
- //
- case 541: {
- action.consumeSimpleTypeTemplateParameter(false);
- break;
- }
-
- //
- // Rule 542: type_parameter ::= class identifier_name_opt = type_id
- //
- case 542: {
- action.consumeSimpleTypeTemplateParameter(true);
- break;
- }
-
- //
- // Rule 543: type_parameter ::= typename identifier_name_opt
- //
- case 543: {
- action.consumeSimpleTypeTemplateParameter(false);
- break;
- }
-
- //
- // Rule 544: type_parameter ::= typename identifier_name_opt = type_id
- //
- case 544: {
- action.consumeSimpleTypeTemplateParameter(true);
- break;
- }
-
- //
- // Rule 545: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt
- //
- case 545: {
- action.consumeTemplatedTypeTemplateParameter(false);
- break;
- }
-
- //
- // Rule 546: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt = id_expression
- //
- case 546: {
- action.consumeTemplatedTypeTemplateParameter(true);
- break;
- }
-
- //
- // Rule 547: template_id_name ::= identifier_name < <openscope-ast> template_argument_list_opt >
- //
- case 547: {
- action.consumeTemplateId();
- break;
- }
-
- //
- // Rule 554: nested_name_specifier_inTemplate ::= class_or_namespace_name_inTemplate :: nested_name_specifier_with_template_inTemplate
- //
- case 554: {
- action.consumeNestedNameSpecifier(true);
- break;
- }
-
- //
- // Rule 555: nested_name_specifier_inTemplate ::= class_or_namespace_name_inTemplate ::
- //
- case 555: {
- action.consumeNestedNameSpecifier(false);
- break;
- }
-
- //
- // Rule 556: nested_name_specifier_with_template_inTemplate ::= class_or_namespace_name_with_template_inTemplate :: nested_name_specifier_with_template_inTemplate
- //
- case 556: {
- action.consumeNestedNameSpecifier(true);
- break;
- }
-
- //
- // Rule 557: nested_name_specifier_with_template_inTemplate ::= class_or_namespace_name_with_template_inTemplate ::
- //
- case 557: {
- action.consumeNestedNameSpecifier(false);
- break;
- }
-
- //
- // Rule 558: class_or_namespace_name_with_template_inTemplate ::= template_opt class_or_namespace_name_inTemplate
- //
- case 558: {
- action.consumeNameWithTemplateKeyword();
- break;
- }
-
- //
- // Rule 560: nested_name_specifier_opt_inTemplate ::= $Empty
- //
- case 560: {
- action.consumeNestedNameSpecifierEmpty();
- break;
- }
-
- //
- // Rule 563: type_name_specifier_inTemplate ::= typename dcolon_opt nested_name_specifier identifier_name
- //
- case 563: {
- action.consumeQualifiedId(false);
- break;
- }
-
- //
- // Rule 564: type_name_specifier_inTemplate ::= typename dcolon_opt nested_name_specifier template_opt template_id_name
- //
- case 564: {
- action.consumeQualifiedId(true);
- break;
- }
-
- //
- // Rule 569: declaration_specifiers_inTemplate ::= <openscope-ast> simple_declaration_specifiers
- //
- case 569: {
- action.consumeDeclarationSpecifiersSimple();
- break;
- }
-
- //
- // Rule 570: declaration_specifiers_inTemplate ::= <openscope-ast> class_declaration_specifiers
- //
- case 570: {
- action.consumeDeclarationSpecifiersComposite();
- break;
- }
-
- //
- // Rule 571: declaration_specifiers_inTemplate ::= <openscope-ast> elaborated_declaration_specifiers
- //
- case 571: {
- action.consumeDeclarationSpecifiersComposite();
- break;
- }
-
- //
- // Rule 572: declaration_specifiers_inTemplate ::= <openscope-ast> enum_declaration_specifiers
- //
- case 572: {
- action.consumeDeclarationSpecifiersComposite();
- break;
- }
-
- //
- // Rule 573: declaration_specifiers_inTemplate ::= <openscope-ast> type_name_declaration_specifiers_inTemplate
- //
- case 573: {
- action.consumeDeclarationSpecifiersTypeName();
- break;
- }
-
- //
- // Rule 575: type_id_inTemplate ::= type_specifier_seq_inTemplate
- //
- case 575: {
- action.consumeTypeId(false);
- break;
- }
-
- //
- // Rule 576: type_id_inTemplate ::= type_specifier_seq_inTemplate abstract_declarator
- //
- case 576: {
- action.consumeTypeId(true);
- break;
- }
-
- //
- // Rule 577: template_argument ::= assignment_expression_inTemplate
- //
- case 577: {
- action.consumeTemplateArgumentExpression();
- break;
- }
-
- //
- // Rule 578: template_argument ::= type_id_inTemplate
- //
- case 578: {
- action.consumeTemplateArgumentTypeId();
- break;
- }
-
- //
- // Rule 579: explicit_instantiation ::= template declaration
- //
- case 579: {
- action.consumeTemplateExplicitInstantiation();
- break;
- }
-
- //
- // Rule 580: explicit_specialization ::= template < > declaration
- //
- case 580: {
- action.consumeTemplateExplicitSpecialization();
- break;
- }
-
- //
- // Rule 581: try_block ::= try compound_statement <openscope-ast> handler_seq
- //
- case 581: {
- action.consumeStatementTryBlock(true);
- break;
- }
-
- //
- // Rule 582: try_block ::= try compound_statement
- //
- case 582: {
- action.consumeStatementTryBlock(false);
- break;
- }
-
- //
- // Rule 585: handler ::= catch ( exception_declaration ) compound_statement
- //
- case 585: {
- action.consumeStatementCatchHandler(false);
- break;
- }
-
- //
- // Rule 586: handler ::= catch ( ... ) compound_statement
- //
- case 586: {
- action.consumeStatementCatchHandler(true);
- break;
- }
-
- //
- // Rule 587: exception_declaration ::= type_specifier_seq <openscope-ast> declarator
- //
- case 587: {
- action.consumeDeclarationSimple(true);
- break;
- }
-
- //
- // Rule 588: exception_declaration ::= type_specifier_seq <openscope-ast> abstract_declarator
- //
- case 588: {
- action.consumeDeclarationSimple(true);
- break;
- }
-
- //
- // Rule 589: exception_declaration ::= type_specifier_seq
- //
- case 589: {
- action.consumeDeclarationSimple(false);
- break;
- }
-
- //
- // Rule 591: exception_specification ::= throw ( )
- //
- case 591: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 597: no_function_declarator_start ::= ERROR_TOKEN
- //
- case 597: {
- action.consumeEmpty();
- break;
- }
-
- default:
- break;
- }
- return;
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoFunctionDeclaratorParserprs.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoFunctionDeclaratorParserprs.java
deleted file mode 100644
index 1346a3e3760..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoFunctionDeclaratorParserprs.java
+++ /dev/null
@@ -1,1546 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2015 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.dom.lrparser.cpp;
-
-public class CPPNoFunctionDeclaratorParserprs
- implements lpg.lpgjavaruntime.ParseTable, CPPNoFunctionDeclaratorParsersym {
-
- public interface IsKeyword {
- public final static byte isKeyword[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static byte isKeyword[] = IsKeyword.isKeyword;
-
- public final boolean isKeyword(int index) {
- return isKeyword[index] != 0;
- }
-
- public interface BaseCheck {
- public final static short baseCheck[] = { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 0, 1, 0, 4, 2, 3, 2, 3, 2, 2, 1, 0, 1, 1, 4, 4, 4, 8, 8, 3, 3,
- 4, 4, 3, 3, 2, 2, 7, 7, 7, 7, 4, 4, 5, 6, 3, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 7, 9, 3, 0, 1,
- 2, 2, 1, 2, 3, 4, 1, 0, 3, 1, 0, 3, 5, 1, 4, 1, 3, 3, 1, 3, 3, 3, 1, 3, 3, 1, 3, 3, 1, 3, 3, 3, 3, 1, 3,
- 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 5, 1, 3, 5, 3, 3, 1, 3, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 5, 1, 1,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 2, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 2, 1, 3, 1, 0, 1, 0, 1,
- 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 4, 3, 2, 1, 4, 2, 1, 2, 5, 7, 5, 1, 4, 1, 0, 5, 7, 2, 8, 1, 1, 2, 2,
- 3, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 0, 4, 4, 2, 2, 2, 2, 2, 1, 0, 1, 1, 1, 1,
- 1, 1, 2, 1, 2, 2, 2, 1, 1, 2, 2, 1, 2, 2, 1, 2, 2, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 3, 4, 4, 5, 2, 5, 6, 5, 0, 1, 0, 7, 8, 0, 1, 3, 1, 0, 1, 3, 1, 7, 6, 0, 7, 6, 1, 0,
- 6, 5, 6, 4, 1, 3, 1, 0, 1, 2, 1, 1, 3, 1, 3, 1, 1, 1, 3, 9, 2, 2, 3, 2, 5, 3, 7, 0, 1, 2, 2, 1, 0, 1, 1,
- 1, 3, 1, 2, 1, 1, 2, 3, 1, 1, 1, 3, 2, 1, 2, 2, 9, 8, 2, 1, 3, 1, 3, 1, 0, 1, 0, 2, 1, 1, 3, 1, 3, 2, 1,
- 5, 8, 1, 2, 3, 1, 1, 7, 6, 3, 0, 0, 1, 3, 1, 1, 5, 6, 6, 7, 7, 0, 0, 1, 0, 1, 1, 1, 2, 4, 2, 2, 1, 5, 1,
- 1, 1, 1, 1, 1, 1, 2, 1, 0, 1, 3, 1, 1, 2, 3, 2, 1, 2, 2, 1, 0, 1, 3, 3, 5, 5, 4, 1, 1, 1, 1, 0, 1, 5, 2,
- 2, 1, 2, 2, 1, 0, 1, 3, 4, 3, 1, 1, 5, 2, 1, 1, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 7, 1, 0, 1, 3, 1, 1, 2, 4, 2, 4, 7, 9, 5,
- 1, 3, 1, 0, 1, 1, 3, 2, 3, 2, 2, 1, 0, 1, 1, 4, 5, 2, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 1, 1, 2, 4, 4, 2,
- 1, 2, 5, 5, 3, 3, 1, 4, 3, 1, 0, 1, 3, 1, 1, 1, -110, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, -13, 0, -8, 0, 0, 0, 0, 0, 0, -11, 0, -19, 0, 0, -10, 0, 0, 0, 0, -14,
- -448, 0, 0, 0, 0, -280, 0, 0, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -93, -27, 0, 0, 0, -245, 0, 0, 0,
- 0, -487, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -28, -88, 0, 0, 0, 0, 0, -29, 0,
- 0, 0, 0, 0, -30, -106, -271, 0, 0, 0, 0, 0, -112, 0, 0, -33, 0, 0, -34, 0, 0, 0, -343, 0, 0, 0, 0, 0, 0,
- 0, 0, -533, 0, 0, 0, 0, -440, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -199, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -25, 0, -449, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -41, 0, -35, 0, 0, 0, -325, 0, 0, 0, 0, 0, -3, 0, 0, 0, -98, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -20, -237, 0, 0, 0, 0, 0, 0, -15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -169, 0, 0, 0, 0, -21, -486, 0, 0, 0, 0, -92, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -318, 0, -118, -263, 0, 0, 0, 0, 0,
- 0, 0, 0, -328, 0, 0, 0, -346, 0, -23, 0, 0, 0, 0, 0, -40, 0, -42, 0, -90, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -182, 0, 0, 0, 0, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -521, 0, 0, 0, 0,
- -203, 0, 0, 0, 0, 0, 0, -46, 0, 0, 0, 0, -327, 0, 0, -319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -315, 0, 0, 0, -17, 0, 0, 0, 0, -43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -261, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -44, -600, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -274, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -331, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0, 0, -26, 0, 0, 0, 0, 0, 0, -37, 0,
- 0, 0, 0, 0, -352, 0, 0, 0, -22, -31, 0, 0, -152, 0, 0, 0, -473, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -39, -32, 0, 0, 0, 0, -16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -290, 0, 0, 0, 0, 0, 0, -172, 0, 0, 0, 0, 0, -395, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -38, 0, 0, 0, 0, -45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -47, 0, 0, 0, 0, 0, 0, 0, 0, -59, 0, -60, 0, 0, -272, 0, 0, 0, 0, -122, 0,
- 0, 0, 0, -83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -382, 0, 0, 0, 0, -61,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -537, 0, 0, 0, 0, -512, 0, 0, 0, 0, -313,
- 0, -91, 0, 0, -279, 0, 0, 0, 0, -366, -424, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -85, 0, 0, 0, 0, -73, 0, 0, 0, 0, -81, 0, 0, 0, 0, -505, 0, 0, 0, 0, -425, 0, 0, 0,
- 0, -264, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -230, 0, -63, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -329, 0, 0, 0, 0, 0, -64, 0, -36, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -577, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -379, -411, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, -75,
- 0, 0, 0, 0, -173, 0, 0, -344, 0, 0, 0, 0, 0, 0, -229, 0, -139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -357, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, -508, 0, 0, 0, 0,
- -140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -541, 0, 0, 0, 0, -141, 0, 0, 0, 0, -370, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, -68, 0, -154, 0, 0, 0, 0, 0, 0, -69, 0, 0, -542, 0, 0, 0, 0, -142,
- 0, 0, 0, 0, -417, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, -170,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -349, 0, 0, 0, 0, -143, 0, 0, 0, 0, -195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -420, 0, 0, -96, 0, -466, 0, 0, 0, 0, 0, 0, -97, 0, 0, -350, 0, 0, 0, 0,
- -144, 0, 0, 0, 0, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -153, 0, 0, -368, 0, 0, 0, 0, -145, 0, 0, 0, 0, -576, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -269, -95, 0, 0, 0, 0, 0, 0, 0, 0, -268, 0, -155, 0, 0, -389, 0, 0, 0,
- 0, -146, 0, 0, 0, 0, -159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -160, 0,
- -161, 0, 0, 0, 0, 0, 0, -162, 0, -163, 0, 0, -398, 0, 0, 0, 0, -147, 0, 0, 0, 0, -164, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, 0, -166, 0, -455, 0, 0, 0, 0, -167, 0, -360, 0, 0,
- 0, 0, -107, -108, 0, -148, 0, 0, 0, 0, -548, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -430, 0, -284, 0, 0, 0, 0, 0, 0, 0, 0, 0, -356, -367, -183, -273, 0, -149, 0, 0, 0, 0, -168,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -177, 0, -265, 0, -391, 0, 0, 0, 0, 0,
- 0, -297, 0, 0, -474, 0, 0, -184, 0, -181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -178, 0, -289, 0, 0, 0, 0, 0, 0, -179, 0, 0, 0, 0, -414, -185, 0, -248, 0, 0, 0,
- 0, -186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -570, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -79, -113, 0, 0, 0, -187, 0, -286, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -249,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0,
- -399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -311, 0, 0, 0, 0, -447, 0, 0, 0, 0, 0, 0, -415, -476, 0, 0, 0, 0,
- 0, 0, -250, 0, 0, 0, 0, -406, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0,
- -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -231, -209, 0, -454, 0, -188, -294, 0, 0, -321, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -251, 0, 0, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -196, 0, 0, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -80, -418, 0, -197, 0, 0, 0, 0, 0, 0, 0,
- -322, 0, -504, 0, 0, 0, 0, 0, 0, 0, 0, 0, -252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -82, 0, 0, 0, 0, 0, 0, 0, -538,
- -446, 0, 0, 0, 0, -434, 0, -198, -330, 0, 0, 0, 0, 0, -253, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -84, -355, 0, 0,
- 0, 0, 0, 0, 0, -210, 0, 0, 0, -351, -517, 0, 0, -211, 0, 0, 0, 0, 0, -254, 0, 0, 0, 0, -282, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, 0, 0, -445, 0, 0, 0, -457, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -213, 0, 0, 0, 0, -86, -214, 0, 0, 0, -482, -423, 0, -592, 0, 0, 0, 0, 0, 0, -255, 0, 0, 0,
- 0, -460, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -477, 0, 0, 0, -463, 0, -296,
- 0, 0, 0, 0, 0, -489, 0, 0, -232, -9, 0, -470, 0, 0, 0, 0, -233, -215, 0, -408, 0, 0, 0, 0, 0, -435, 0,
- 0, 0, 0, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -323, -544, 0, -216, 0, 0, -4, -291, 0, -217, 0, 0, 0, 0, 0, 0, 0, -234, -373, 0, 0, 0, 0,
- 0, 0, -593, -218, 0, 0, 0, 0, 0, -257, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -324, 0, 0, -338, 0, 0, -326, 0, 0, 0, -361, 0, -219, 0, -364, 0, -235, 0, 0, 0, 0, -347, 0,
- -394, -401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -258, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -345, -442, 0, 0, -220, -221, 0, -222, 0, -293, 0, 0, 0, -459,
- -223, 0, -365, 0, 0, 0, 0, 0, 0, 0, 0, 0, -224, 0, -225, 0, 0, 0, 0, 0, 0, 0, -295, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -381, 0, 0, 0, 0, 0, 0, 0, 0, 0, -226, 0, -227,
- 0, 0, -171, 0, 0, 0, 0, -354, 0, 0, 0, 0, -353, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -228, -443, 0, 0, 0, 0, 0, 0, -238, -375, -266, -390, -400, 0, -403, 0, 0, 0, -433,
- 0, -405, 0, -484, 0, -275, 0, 0, 0, 0, 0, 0, 0, 0, 0, -595, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -413, -540, 0, -276, 0, 0, 0, 0, 0, 0, -428, 0, -462, 0, 0, 0, -590,
- -376, -377, 0, -409, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -277, 0, 0, 0, 0, 0, 0, 0, -278, 0, -300, 0, 0, -419, 0, 0, 0, 0, -301, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -545, 0, 0, -302, 0, -437, 0, 0, 0, 0, 0, 0, -458, 0, 0, -303, 0, 0, 0, 0,
- 0, -304, -475, -305, -306, -180, 0, 0, 0, -432, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -307, 0, 0, -308, 0, 0, 0, 0, 0, 0, -309, 0, 0, 0, 0, -450, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -579, 0, 0, -310, 0, -488, 0, 0, 0, 0, 0, 0, -485,
- 0, 0, -491, 0, -492, 0, -109, 0, -314, -316, -317, 0, -176, 0, 0, 0, -451, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -336, -337, 0, -499, 0, 0, 0, 0, 0, 0, -339, 0, 0,
- -524, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -378, -341, -348,
- 0, -380, 0, 0, 0, 0, 0, 0, -495, 0, 0, -358, 0, -359, -502, 0, 0, 0, 0, 0, -363, 0, -515, -371, -526, 0,
- -372, 0, 0, 0, 0, -158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -507, 0, -416, 0, -562, 0, 0, -535, 0, 0, -563, -536, 0, -374, -383, 0, 0, -388, -151, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -421, 0,
- -260, 0, 0, 0, 0, -546, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -387, 0, -342,
- -431, -573, 0, -582, 0, 0, 0, -384, 0, -392, -396, -567, -397, -410, 0, 0, 0, 0, -412, -429, -438, -441,
- -453, 0, 0, 0, 0, -468, 0, 0, -422, 0, 0, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -369, 0, 0, 0, -469, 0, 0, 0, 0, -247, 0, 0, 0, 0, -461, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -471, 0, -472, 0, -478, -480, 0, 0, -493, -500, -501, -511,
- -523, -525, -527, -528, -559, 0, -560, 0, -529, 0, 0, 0, -530, 0, 0, 0, -136, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -532, 0, -547, 0, -549, 0, 0, 0, -137, 0, 0, 0, 0,
- -550, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -552, -557, -565, -586, 0, -481, 0,
- 0, -246, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -561, 0, -566,
- 0, 0, 0, 0, -574, -598, -584, -603, -591, -596, 0, 0, 0, 0, 0, -494, 0, -133, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -539, 0, -242, 0, 0, 0, 0, -564, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -569, 0, -134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -18, 0,
- 0, 0, 0, -243, 0, 0, 0, 0, -571, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -575, 0, 0, -244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -130, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -239, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -241, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -299, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -467, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -580, -24, 0, 0, 0, 0, 0, -554, -534, 0, -581, -119, 0, 0, 0,
- 0, 0, -340, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -599, 0, 0, 0, 0, 0, 0, -320, 0, 0, -202, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -506, 0, 0, 0, 0, 0, 0, -597, 0, -602, 0, 0, 0, 0, 0, -556, 0, 0, 0, 0, 0,
- -12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -362, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -385, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -72, 0, 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -48, 0, 0, 0, 0, 0,
- -281, 0, 0, 0, 0, 0, 0, 0, -259, 0, -497, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -503, -332, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -543, -522, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -531, -89, 0, 0, 0, 0, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -87, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -551,
- -333, 0, 0, 0, 0, 0, -334, 0, -78, -192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -553, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, -267, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -568, 0, 0, 0, 0, 0, 0, -335,
- 0, -386, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -270, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -583, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -393, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -585, 0, 0, 0, 0, 0, 0, -588, 0, 0, 0, 0, 0, -452, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -589, 0, -101, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -594, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -479, 0, 0, 0, 0, 0, -483, 0, 0, 0, 0, 0, 0, 0, -601, 0, 0, 0, 0, 0, 0, 0, -496, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -604, 0, 0, 0, 0, 0, 0, 0, -509, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -126, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -427, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -587, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -285, 0, 0, 0,
- 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, -283, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -510, 0, 0, 0, 0, 0, 0, 0, -516, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -287, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -514, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -436, -292, 0, 0, 0, 0, 0, 0, -298, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -465,
- -312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -513, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -444, 0, 0, 0, -288, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -402, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -519, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -439, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -490, 0, 0, -520, -518, 0, 0, 0, 0, 0, 0, 0, 0,
- -498, 0, -236, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -426, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -262, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -572, 0, 0,
- 0, 0, 0, 0, 0, -555, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -558, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -578, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static short baseCheck[] = BaseCheck.baseCheck;
-
- @Override
- public final int baseCheck(int index) {
- return baseCheck[index];
- }
-
- public final static short rhs[] = baseCheck;
-
- @Override
- public final int rhs(int index) {
- return rhs[index];
- }
-
- public interface BaseAction {
- public final static char baseAction[] = { 191, 5, 153, 93, 93, 30, 30, 80, 80, 39, 39, 42, 42, 218, 1, 1, 16,
- 16, 16, 16, 16, 16, 16, 17, 17, 17, 15, 11, 11, 6, 6, 6, 6, 6, 6, 2, 76, 76, 4, 4, 12, 12, 44, 44, 154,
- 154, 155, 69, 69, 43, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
- 156, 156, 156, 133, 133, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 192, 192, 193, 193,
- 194, 159, 159, 160, 160, 157, 157, 161, 158, 158, 21, 21, 22, 22, 23, 23, 23, 24, 24, 24, 24, 25, 25,
- 25, 26, 26, 26, 31, 31, 31, 31, 31, 33, 33, 33, 34, 34, 35, 35, 36, 36, 38, 38, 40, 40, 41, 41, 45, 45,
- 45, 45, 45, 47, 47, 47, 53, 53, 55, 55, 61, 61, 62, 62, 63, 63, 64, 64, 65, 65, 65, 65, 65, 65, 65, 65,
- 65, 65, 65, 65, 65, 29, 29, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 37, 28, 162, 162, 104,
- 104, 195, 195, 103, 219, 219, 81, 81, 81, 81, 81, 81, 81, 81, 81, 82, 82, 82, 78, 78, 66, 66, 196, 196,
- 83, 83, 83, 115, 115, 197, 197, 84, 84, 84, 84, 198, 198, 85, 85, 85, 85, 85, 86, 86, 94, 94, 94, 94,
- 94, 94, 94, 94, 56, 56, 56, 56, 56, 134, 134, 132, 132, 57, 199, 27, 27, 27, 27, 27, 50, 50, 71, 71, 71,
- 71, 71, 139, 139, 135, 135, 135, 135, 135, 136, 136, 136, 137, 137, 137, 138, 138, 138, 164, 164, 164,
- 72, 72, 72, 72, 72, 73, 73, 73, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 105, 140, 140, 140, 140,
- 140, 140, 110, 110, 110, 165, 166, 166, 111, 111, 200, 168, 168, 167, 167, 141, 141, 116, 91, 91, 142,
- 59, 49, 169, 169, 60, 58, 96, 96, 170, 170, 163, 163, 118, 118, 119, 88, 88, 171, 171, 74, 74, 67, 67,
- 172, 75, 75, 79, 79, 70, 70, 70, 54, 97, 97, 107, 106, 106, 51, 51, 68, 68, 77, 77, 52, 108, 108, 108,
- 98, 98, 98, 99, 99, 100, 100, 100, 101, 101, 120, 120, 120, 122, 122, 121, 121, 220, 220, 102, 102, 202,
- 202, 202, 202, 202, 144, 48, 48, 174, 201, 201, 145, 145, 146, 146, 146, 147, 176, 203, 203, 32, 32,
- 109, 113, 113, 113, 113, 205, 124, 123, 123, 112, 112, 112, 177, 178, 178, 178, 178, 178, 178, 178, 178,
- 178, 178, 178, 207, 207, 204, 204, 206, 206, 179, 180, 180, 180, 180, 181, 208, 126, 125, 125, 209, 209,
- 182, 182, 182, 182, 114, 114, 114, 210, 210, 8, 8, 9, 211, 211, 212, 183, 173, 173, 184, 184, 185, 186,
- 186, 7, 7, 10, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213,
- 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213,
- 213, 213, 213, 89, 92, 92, 187, 187, 149, 149, 150, 150, 150, 150, 150, 150, 3, 151, 151, 148, 148, 188,
- 221, 222, 222, 223, 223, 224, 225, 225, 189, 190, 190, 190, 190, 214, 214, 214, 128, 128, 128, 128, 128,
- 129, 130, 130, 127, 127, 95, 90, 87, 87, 175, 175, 131, 131, 215, 215, 215, 152, 152, 143, 143, 216,
- 216, 191, 191, 117, 1119, 35, 2497, 2418, 4666, 1254, 27, 30, 31, 629, 626, 26, 28, 2399, 296, 25, 23,
- 50, 1329, 106, 76, 77, 108, 1331, 1420, 1372, 1510, 1238, 1342, 177, 1405, 1492, 308, 1649, 1517, 1734,
- 1732, 1754, 1743, 1248, 1781, 176, 71, 713, 707, 34, 191, 1513, 1229, 35, 488, 266, 5158, 71, 35, 3286,
- 1243, 35, 636, 32, 4256, 2742, 27, 30, 31, 629, 626, 373, 28, 2405, 1648, 269, 264, 265, 3298, 35, 636,
- 32, 4575, 2916, 27, 30, 31, 629, 626, 26, 28, 1320, 296, 25, 23, 50, 1329, 106, 76, 77, 108, 1331, 1420,
- 1372, 1967, 1911, 1229, 35, 314, 309, 5263, 358, 2199, 276, 279, 282, 1344, 1452, 1336, 1638, 2465, 35,
- 312, 1944, 1292, 1976, 402, 646, 355, 61, 359, 1969, 2629, 3153, 349, 627, 2568, 35, 312, 2217, 2415,
- 2481, 2547, 4680, 285, 71, 3590, 193, 875, 3154, 1532, 35, 636, 32, 4256, 4163, 27, 30, 31, 629, 626,
- 373, 28, 1229, 35, 314, 1837, 5414, 2621, 2267, 35, 636, 32, 4575, 5370, 27, 30, 31, 629, 626, 26, 28,
- 1320, 296, 25, 23, 50, 1329, 106, 76, 77, 108, 1331, 1420, 1372, 1967, 1504, 1452, 162, 1468, 35, 3494,
- 32, 4256, 2742, 27, 30, 31, 629, 626, 373, 28, 1934, 55, 1944, 2391, 1976, 3349, 355, 2465, 35, 315,
- 1969, 2334, 1991, 329, 390, 42, 2166, 2252, 1978, 2014, 2016, 161, 577, 592, 481, 3578, 3579, 2267, 35,
- 636, 32, 4575, 5370, 27, 30, 31, 629, 626, 26, 28, 1320, 296, 25, 23, 50, 1329, 106, 76, 77, 108, 1331,
- 1420, 1372, 1967, 646, 355, 162, 1332, 35, 636, 32, 349, 627, 41, 30, 31, 629, 626, 1377, 1229, 35, 565,
- 1944, 5904, 1976, 1582, 69, 652, 533, 900, 1969, 1292, 1991, 1887, 548, 574, 4491, 578, 1978, 2014,
- 2016, 161, 577, 1968, 35, 636, 32, 417, 356, 40, 30, 31, 629, 626, 1181, 1931, 4221, 1622, 2023, 2805,
- 351, 3862, 69, 71, 35, 727, 423, 764, 2267, 35, 636, 32, 4575, 5370, 27, 30, 31, 629, 626, 26, 28, 1320,
- 296, 25, 23, 50, 1329, 106, 76, 77, 108, 1331, 1420, 1372, 1967, 466, 1355, 162, 1638, 71, 35, 2426,
- 2358, 1292, 548, 574, 4491, 578, 71, 35, 317, 638, 2463, 1944, 1614, 1976, 453, 454, 3489, 4729, 1389,
- 1969, 2922, 1991, 1452, 2085, 193, 367, 2023, 1978, 2014, 2016, 161, 577, 2537, 35, 636, 32, 4575, 2176,
- 27, 30, 31, 629, 626, 26, 28, 1320, 296, 25, 23, 50, 1329, 106, 76, 77, 108, 1331, 1420, 1372, 1510,
- 1613, 1689, 177, 347, 1492, 69, 1649, 1517, 1734, 1732, 1292, 1743, 147, 1781, 176, 1213, 5062, 2431,
- 3352, 413, 2290, 35, 636, 32, 4256, 4400, 27, 30, 31, 629, 626, 373, 28, 2743, 548, 574, 4491, 578,
- 2152, 35, 330, 2509, 1360, 35, 636, 32, 4429, 2923, 27, 30, 31, 629, 626, 373, 28, 2157, 495, 387, 2023,
- 438, 2597, 35, 636, 32, 4575, 5370, 27, 30, 31, 629, 626, 26, 28, 1320, 296, 25, 23, 50, 1329, 106, 76,
- 77, 108, 1331, 1420, 1372, 1967, 3349, 355, 162, 2981, 1879, 35, 636, 32, 5897, 638, 27, 30, 31, 629,
- 626, 26, 28, 2025, 1944, 546, 1976, 2112, 646, 355, 3485, 367, 1969, 1993, 1991, 350, 627, 420, 414,
- 977, 1978, 2014, 2016, 161, 577, 2335, 35, 636, 32, 4575, 583, 27, 30, 31, 629, 626, 26, 28, 1320, 296,
- 25, 23, 50, 1329, 106, 76, 77, 108, 1331, 1420, 1372, 1510, 2438, 1637, 177, 1377, 1492, 324, 1649,
- 1517, 1734, 1732, 1377, 1743, 478, 1781, 176, 1213, 2666, 35, 563, 413, 69, 69, 2038, 1132, 1485, 834,
- 925, 2075, 502, 35, 431, 1709, 3355, 532, 549, 574, 4491, 578, 2805, 351, 412, 2498, 69, 71, 35, 727,
- 423, 824, 2409, 35, 636, 32, 4575, 2754, 27, 30, 31, 629, 626, 26, 28, 1320, 296, 25, 23, 50, 1329, 106,
- 76, 77, 108, 1331, 1420, 1372, 1510, 308, 1409, 177, 1884, 1492, 1712, 1649, 1517, 1734, 1732, 2816,
- 1743, 147, 1781, 176, 1213, 4815, 1981, 657, 413, 3245, 35, 636, 32, 4575, 900, 27, 30, 31, 629, 626,
- 26, 28, 1320, 296, 25, 23, 50, 1329, 106, 76, 77, 85, 421, 414, 977, 2891, 35, 636, 32, 4575, 2984, 27,
- 30, 31, 629, 626, 26, 28, 1320, 296, 25, 23, 50, 1329, 106, 76, 77, 108, 1331, 1420, 1372, 1510, 374,
- 141, 177, 3583, 1492, 652, 1649, 1517, 1734, 1732, 2590, 1743, 1239, 1781, 176, 71, 35, 707, 311, 191,
- 3245, 35, 636, 32, 4575, 1346, 27, 30, 31, 629, 626, 26, 28, 1320, 296, 25, 23, 50, 1329, 106, 76, 77,
- 108, 1331, 2556, 411, 414, 977, 2891, 35, 636, 32, 4575, 1463, 27, 30, 31, 629, 626, 26, 28, 1320, 296,
- 25, 23, 50, 1329, 106, 76, 77, 108, 1331, 1420, 1372, 1510, 71, 3701, 177, 70, 1492, 2916, 1649, 1517,
- 1734, 1732, 2323, 1743, 1452, 1781, 176, 71, 35, 707, 3285, 407, 2853, 2891, 35, 636, 32, 4575, 1975,
- 27, 30, 31, 629, 626, 26, 28, 1320, 296, 25, 23, 50, 1329, 106, 76, 77, 108, 1331, 1420, 1372, 1510,
- 1213, 439, 177, 93, 1492, 155, 1649, 1517, 1734, 1732, 1389, 1743, 1837, 1781, 176, 71, 35, 727, 423,
- 407, 2891, 35, 636, 32, 4575, 227, 27, 30, 31, 629, 626, 26, 28, 1320, 296, 25, 23, 50, 1329, 106, 76,
- 77, 108, 1331, 1420, 1372, 1510, 487, 1465, 177, 2437, 1492, 1783, 1649, 1517, 1734, 1732, 494, 1743,
- 1884, 1781, 176, 71, 35, 707, 313, 407, 1258, 244, 406, 2770, 35, 636, 32, 4575, 230, 27, 30, 31, 629,
- 626, 26, 28, 1320, 296, 25, 23, 50, 1329, 106, 76, 77, 108, 1331, 1420, 1372, 1510, 425, 462, 2119, 389,
- 1492, 2916, 1649, 1517, 1734, 1732, 2942, 1743, 592, 1828, 197, 2469, 35, 636, 32, 4575, 405, 27, 30,
- 31, 629, 626, 26, 28, 1320, 296, 25, 23, 50, 1329, 106, 76, 77, 108, 1331, 1420, 1372, 1510, 1638, 3214,
- 177, 155, 1492, 1292, 1649, 1517, 1734, 1732, 2736, 1743, 155, 1781, 176, 362, 369, 2237, 1929, 175,
- 2492, 35, 707, 311, 361, 403, 1873, 155, 193, 2891, 35, 636, 32, 4575, 1920, 27, 30, 31, 629, 626, 26,
- 28, 1320, 296, 25, 23, 50, 1329, 106, 76, 77, 108, 1331, 1420, 1372, 1510, 499, 363, 177, 1919, 1492,
- 1598, 1649, 1517, 1734, 1732, 1736, 1743, 323, 1781, 176, 71, 35, 727, 423, 188, 2891, 35, 636, 32,
- 4575, 2670, 27, 30, 31, 629, 626, 26, 28, 1320, 296, 25, 23, 50, 1329, 106, 76, 77, 108, 1331, 1420,
- 1372, 1510, 469, 3444, 177, 357, 1492, 69, 1649, 1517, 1734, 1732, 991, 1743, 592, 1781, 176, 71, 35,
- 727, 423, 187, 2891, 35, 636, 32, 4575, 2327, 27, 30, 31, 629, 626, 26, 28, 1320, 296, 25, 23, 50, 1329,
- 106, 76, 77, 108, 1331, 1420, 1372, 1510, 468, 495, 177, 233, 1492, 69, 1649, 1517, 1734, 1732, 1490,
- 1743, 313, 1781, 176, 71, 35, 727, 423, 186, 2891, 35, 636, 32, 4575, 2327, 27, 30, 31, 629, 626, 26,
- 28, 1320, 296, 25, 23, 50, 1329, 106, 76, 77, 108, 1331, 1420, 1372, 1510, 467, 2819, 177, 1632, 1492,
- 69, 1649, 1517, 1734, 1732, 6299, 1743, 456, 1781, 176, 71, 3486, 707, 74, 185, 2891, 35, 636, 32, 4575,
- 2499, 27, 30, 31, 629, 626, 26, 28, 1320, 296, 25, 23, 50, 1329, 106, 76, 77, 108, 1331, 1420, 1372,
- 1510, 71, 3352, 177, 316, 1492, 2525, 1649, 1517, 1734, 1732, 6206, 1743, 1090, 1781, 176, 2492, 35,
- 707, 3488, 184, 2891, 35, 636, 32, 4575, 1457, 27, 30, 31, 629, 626, 26, 28, 1320, 296, 25, 23, 50,
- 1329, 106, 76, 77, 108, 1331, 1420, 1372, 1510, 3242, 147, 177, 2416, 1492, 4873, 1649, 1517, 1734,
- 1732, 388, 1743, 757, 1781, 176, 71, 35, 707, 316, 183, 2891, 35, 636, 32, 4575, 1613, 27, 30, 31, 629,
- 626, 26, 28, 1320, 296, 25, 23, 50, 1329, 106, 76, 77, 108, 1331, 1420, 1372, 1510, 69, 1452, 177, 2604,
- 1492, 1035, 1649, 1517, 1734, 1732, 1389, 1743, 1467, 1781, 176, 71, 35, 707, 3495, 182, 2891, 35, 636,
- 32, 4575, 1931, 27, 30, 31, 629, 626, 26, 28, 1320, 296, 25, 23, 50, 1329, 106, 76, 77, 108, 1331, 1420,
- 1372, 1510, 325, 501, 177, 660, 1492, 2801, 1649, 1517, 1734, 1732, 581, 1743, 753, 1781, 176, 71, 35,
- 707, 564, 181, 2891, 35, 636, 32, 4575, 319, 27, 30, 31, 629, 626, 26, 28, 1320, 296, 25, 23, 50, 1329,
- 106, 76, 77, 108, 1331, 1420, 1372, 1510, 360, 743, 177, 1731, 1492, 2320, 1649, 1517, 1734, 1732, 1356,
- 1743, 147, 1781, 176, 583, 4935, 1377, 1377, 180, 2891, 35, 636, 32, 4575, 2328, 27, 30, 31, 629, 626,
- 26, 28, 1320, 296, 25, 23, 50, 1329, 106, 76, 77, 108, 1331, 1420, 1372, 1510, 5815, 24, 177, 2463,
- 1492, 69, 1649, 1517, 1734, 1732, 3475, 1743, 3056, 1781, 176, 1389, 2853, 1377, 2562, 179, 2891, 35,
- 636, 32, 4575, 2324, 27, 30, 31, 629, 626, 26, 28, 1320, 296, 25, 23, 50, 1329, 106, 76, 77, 108, 1331,
- 1420, 1372, 1510, 69, 1344, 177, 1093, 1492, 1625, 1649, 1517, 1734, 1732, 2991, 1743, 1465, 1781, 176,
- 502, 35, 431, 1377, 178, 2891, 35, 636, 32, 4575, 473, 27, 30, 31, 629, 626, 26, 28, 1320, 296, 25, 23,
- 50, 1329, 106, 76, 77, 108, 1331, 1420, 1372, 1510, 3154, 68, 177, 2400, 1492, 69, 1649, 1517, 1734,
- 1732, 969, 1743, 241, 1781, 176, 584, 2119, 2853, 2497, 192, 3012, 35, 636, 32, 4575, 2651, 27, 30, 31,
- 629, 626, 26, 28, 1320, 296, 25, 23, 50, 1329, 106, 76, 77, 108, 1331, 1420, 1372, 1967, 426, 462, 162,
- 1243, 35, 636, 32, 4256, 2742, 27, 30, 31, 629, 626, 373, 28, 1257, 1331, 1944, 2641, 1976, 2653, 3485,
- 2565, 368, 369, 1969, 3239, 1991, 273, 296, 44, 2166, 2795, 1978, 2014, 2016, 161, 173, 3012, 35, 636,
- 32, 4575, 3584, 27, 30, 31, 629, 626, 26, 28, 1320, 296, 25, 23, 50, 1329, 106, 76, 77, 108, 1331, 1420,
- 1372, 1967, 1452, 266, 162, 88, 646, 355, 102, 1968, 35, 636, 32, 349, 627, 2696, 30, 31, 629, 626,
- 1944, 2252, 1976, 274, 264, 265, 1389, 3710, 1969, 900, 1991, 428, 462, 2853, 1389, 900, 1978, 2014,
- 2016, 161, 172, 3012, 35, 636, 32, 4575, 3130, 27, 30, 31, 629, 626, 26, 28, 1320, 296, 25, 23, 50,
- 1329, 106, 76, 77, 108, 1331, 1420, 1372, 1967, 2664, 1377, 162, 1514, 35, 636, 32, 4811, 2664, 27, 30,
- 31, 629, 626, 57, 28, 3765, 1452, 1944, 2065, 1976, 2768, 1644, 5164, 410, 227, 1969, 5838, 1991, 273,
- 296, 53, 410, 424, 1978, 2014, 2016, 161, 171, 3012, 35, 636, 32, 4575, 1377, 27, 30, 31, 629, 626, 26,
- 28, 1320, 296, 25, 23, 50, 1329, 106, 76, 77, 108, 1331, 1420, 1372, 1967, 485, 266, 162, 2243, 35, 636,
- 32, 4811, 87, 27, 30, 31, 629, 626, 56, 28, 1630, 2252, 1944, 3703, 1976, 274, 264, 265, 427, 462, 1969,
- 3101, 1991, 2146, 35, 488, 900, 5158, 1978, 2014, 2016, 161, 170, 3012, 35, 636, 32, 4575, 51, 27, 30,
- 31, 629, 626, 26, 28, 1320, 296, 25, 23, 50, 1329, 106, 76, 77, 108, 1331, 1420, 1372, 1967, 408, 266,
- 162, 1703, 35, 636, 32, 5897, 3343, 27, 30, 31, 629, 626, 59, 28, 1897, 2809, 1944, 2291, 1976, 278,
- 264, 265, 1389, 3130, 1969, 61, 1991, 482, 657, 321, 3642, 243, 1978, 2014, 2016, 161, 169, 3012, 35,
- 636, 32, 4575, 1377, 27, 30, 31, 629, 626, 26, 28, 1320, 296, 25, 23, 50, 1329, 106, 76, 77, 108, 1331,
- 1420, 1372, 1967, 2664, 266, 162, 1703, 35, 636, 32, 5897, 52, 27, 30, 31, 629, 626, 58, 28, 1986, 1331,
- 1944, 2880, 1976, 281, 264, 265, 3393, 1983, 1969, 60, 1991, 1465, 71, 35, 330, 2058, 1978, 2014, 2016,
- 161, 168, 3012, 35, 636, 32, 4575, 1377, 27, 30, 31, 629, 626, 26, 28, 1320, 296, 25, 23, 50, 1329, 106,
- 76, 77, 108, 1331, 1420, 1372, 1967, 1886, 266, 162, 1968, 35, 636, 32, 2252, 384, 3151, 30, 31, 629,
- 626, 2119, 485, 3578, 3579, 1944, 2073, 1976, 284, 264, 265, 2067, 2276, 1969, 2274, 1991, 1798, 1465,
- 71, 1389, 4997, 1978, 2014, 2016, 161, 167, 3012, 35, 636, 32, 4575, 1625, 27, 30, 31, 629, 626, 26, 28,
- 1320, 296, 25, 23, 50, 1329, 106, 76, 77, 108, 1331, 1420, 1372, 1967, 2299, 2847, 162, 364, 369, 2252,
- 4480, 69, 2664, 266, 482, 416, 2560, 2252, 3451, 2119, 2156, 2652, 1944, 147, 1976, 322, 4181, 5180,
- 2854, 589, 1969, 2669, 1991, 287, 264, 265, 586, 2682, 1978, 2014, 2016, 161, 166, 3012, 35, 636, 32,
- 4575, 377, 27, 30, 31, 629, 626, 26, 28, 1320, 296, 25, 23, 50, 1329, 106, 76, 77, 108, 1331, 1420,
- 1372, 1967, 437, 266, 162, 971, 3141, 369, 441, 69, 2252, 266, 845, 2352, 1414, 1519, 1377, 215, 847,
- 3862, 1944, 332, 1976, 278, 264, 265, 3662, 243, 1969, 331, 1991, 281, 264, 265, 1389, 1017, 1978, 2014,
- 2016, 161, 165, 3012, 35, 636, 32, 4575, 90, 27, 30, 31, 629, 626, 26, 28, 1320, 296, 25, 23, 50, 1329,
- 106, 76, 77, 108, 1331, 1420, 1372, 1967, 69, 638, 162, 1377, 89, 2076, 69, 102, 2664, 266, 2248, 3537,
- 2364, 465, 69, 2311, 3721, 366, 1944, 2171, 1976, 1519, 340, 1792, 1389, 3862, 1969, 3862, 1991, 284,
- 264, 265, 585, 2927, 1978, 2014, 2016, 161, 164, 3012, 35, 636, 32, 4575, 1060, 27, 30, 31, 629, 626,
- 26, 28, 1320, 296, 25, 23, 50, 1329, 106, 76, 77, 108, 1331, 1420, 1372, 1967, 3134, 266, 162, 1377,
- 2152, 3541, 330, 2368, 1572, 638, 2660, 638, 1889, 35, 727, 423, 1465, 2919, 1944, 69, 1976, 568, 264,
- 265, 2298, 2818, 1969, 2818, 1991, 491, 477, 918, 491, 2990, 1978, 2014, 2016, 161, 163, 2891, 35, 636,
- 32, 4575, 308, 27, 30, 31, 629, 626, 26, 28, 1320, 296, 25, 23, 50, 1329, 106, 76, 77, 108, 1331, 1420,
- 1372, 1510, 69, 2119, 177, 415, 1492, 2627, 1649, 1517, 1734, 1732, 1620, 1743, 2001, 1781, 176, 502,
- 35, 2989, 2110, 140, 3072, 35, 636, 32, 4575, 1718, 27, 30, 31, 629, 626, 26, 28, 1320, 296, 25, 23, 50,
- 1329, 106, 76, 77, 108, 1331, 1420, 1372, 1967, 49, 94, 162, 96, 3328, 915, 2852, 1637, 143, 3232, 369,
- 724, 956, 2980, 1377, 2680, 69, 69, 1944, 69, 1976, 2063, 5896, 1452, 5989, 69, 1969, 147, 1991, 746,
- 2490, 5242, 72, 2075, 1978, 2014, 2016, 161, 160, 3132, 35, 636, 32, 4575, 67, 27, 30, 31, 629, 626, 26,
- 28, 1320, 296, 25, 23, 50, 1329, 106, 76, 77, 108, 1331, 1420, 1372, 1510, 69, 1465, 177, 829, 1492,
- 4981, 1649, 1517, 1734, 1732, 69, 1743, 1452, 1781, 176, 2877, 3160, 1377, 1377, 222, 3245, 35, 636, 32,
- 4575, 1467, 27, 30, 31, 629, 626, 26, 28, 1320, 296, 25, 23, 50, 1329, 106, 76, 77, 108, 1331, 1420,
- 1372, 1510, 66, 65, 843, 97, 1492, 2119, 1649, 1517, 1734, 1732, 1001, 1743, 1019, 1828, 197, 3245, 35,
- 636, 32, 4575, 1806, 27, 30, 31, 629, 626, 26, 28, 1320, 296, 25, 23, 50, 1329, 106, 76, 77, 108, 1331,
- 1420, 1372, 1510, 71, 35, 330, 2155, 1492, 69, 1649, 1517, 1734, 1732, 5916, 1743, 69, 1828, 197, 2297,
- 98, 678, 3399, 369, 2025, 2442, 2682, 2636, 577, 71, 35, 727, 423, 3245, 35, 636, 32, 4575, 458, 27, 30,
- 31, 629, 626, 26, 28, 1320, 296, 25, 23, 50, 1329, 106, 76, 77, 108, 1331, 1420, 1372, 1510, 1642, 49,
- 584, 1810, 1492, 335, 1649, 1517, 1734, 1732, 2330, 1743, 46, 1828, 197, 3245, 35, 636, 32, 4575, 329,
- 27, 30, 31, 629, 626, 26, 28, 1320, 296, 25, 23, 50, 1329, 106, 76, 77, 108, 1331, 1420, 1372, 1510,
- 502, 35, 431, 1800, 1492, 69, 1649, 1517, 1734, 1732, 1399, 1743, 147, 1828, 197, 69, 5492, 2682, 3667,
- 3434, 5977, 2524, 3043, 2198, 4730, 71, 35, 727, 423, 3245, 35, 636, 32, 4575, 3052, 27, 30, 31, 629,
- 626, 26, 28, 1320, 296, 25, 23, 50, 1329, 106, 76, 77, 108, 1331, 1420, 1372, 1510, 255, 308, 1015,
- 1173, 1492, 69, 1649, 1517, 1734, 1732, 6210, 1743, 1791, 1828, 197, 3404, 35, 636, 32, 4575, 457, 27,
- 30, 31, 629, 626, 26, 28, 1320, 296, 25, 23, 50, 1329, 106, 76, 77, 108, 1331, 1420, 1372, 1510, 386,
- 1377, 1904, 1994, 1492, 1638, 1649, 1517, 1734, 1732, 1292, 1743, 147, 1828, 197, 2851, 5500, 3102, 69,
- 378, 1803, 996, 383, 1018, 1216, 3712, 2682, 1909, 2682, 376, 2508, 64, 310, 193, 460, 2823, 35, 636,
- 32, 4575, 599, 27, 30, 31, 629, 626, 26, 28, 1320, 296, 25, 23, 50, 1329, 106, 76, 77, 108, 1331, 1420,
- 1372, 1967, 377, 189, 69, 339, 1798, 212, 3158, 3041, 4997, 2682, 2031, 1897, 69, 2682, 3665, 2662,
- 2848, 1544, 2987, 1377, 3245, 35, 636, 32, 4575, 3246, 27, 30, 31, 629, 626, 26, 28, 1320, 296, 25, 23,
- 50, 1329, 106, 76, 77, 108, 1331, 1420, 1372, 1510, 3506, 232, 3050, 2030, 1492, 231, 1649, 1517, 1734,
- 1732, 1377, 2979, 3351, 35, 636, 32, 4575, 2682, 27, 30, 31, 629, 626, 26, 28, 1320, 296, 25, 23, 50,
- 1329, 106, 76, 77, 108, 1331, 1420, 1372, 1967, 3006, 55, 2163, 1638, 69, 4181, 3492, 4181, 1292, 5400,
- 3161, 5118, 2500, 3105, 3126, 2162, 3254, 338, 1944, 4181, 1976, 3040, 2530, 3125, 2620, 3096, 1969,
- 4197, 1991, 4197, 3127, 193, 2352, 1377, 1978, 3230, 3245, 35, 636, 32, 4575, 377, 27, 30, 31, 629, 626,
- 26, 28, 1320, 296, 25, 23, 50, 1329, 106, 76, 77, 108, 1331, 1420, 1372, 1510, 54, 2431, 3352, 3479,
- 1492, 3267, 1649, 1517, 1734, 2937, 3298, 35, 636, 32, 4575, 1377, 27, 30, 31, 629, 626, 26, 28, 1320,
- 296, 25, 23, 50, 1329, 106, 76, 77, 108, 1331, 1420, 1372, 1967, 464, 2730, 395, 3162, 394, 3157, 2710,
- 3551, 101, 3307, 3320, 3360, 2728, 3426, 3429, 87, 2944, 2682, 1944, 2682, 1976, 2945, 3406, 3295, 3327,
- 2946, 1969, 3498, 1991, 3245, 35, 636, 32, 4575, 3188, 27, 30, 31, 629, 626, 26, 28, 1320, 296, 25, 23,
- 50, 1329, 106, 76, 77, 108, 1331, 1420, 1372, 1510, 235, 3004, 233, 2914, 1492, 3036, 1649, 1517, 2890,
- 3245, 35, 636, 32, 4575, 173, 27, 30, 31, 629, 626, 26, 28, 1320, 296, 25, 23, 50, 1329, 106, 76, 77,
- 108, 1331, 1420, 1372, 1510, 3432, 2990, 2682, 2682, 1492, 1377, 1649, 2892, 3298, 35, 636, 32, 4575,
- 324, 27, 30, 31, 629, 626, 26, 28, 1320, 296, 25, 23, 50, 1329, 106, 76, 77, 108, 1331, 1420, 1372,
- 1967, 3389, 3435, 4190, 2057, 1756, 3355, 334, 4242, 3185, 2682, 3491, 2682, 3608, 1007, 6952, 6952,
- 6952, 6952, 1944, 1377, 1976, 3245, 35, 636, 32, 4575, 3185, 27, 30, 31, 629, 626, 26, 28, 1320, 296,
- 25, 23, 50, 1329, 106, 76, 77, 108, 1331, 1420, 1372, 1510, 256, 3351, 226, 6952, 1492, 1377, 2869,
- 3298, 35, 636, 32, 4575, 2661, 27, 30, 31, 629, 626, 26, 28, 1320, 296, 25, 23, 50, 1329, 106, 76, 77,
- 108, 1331, 1420, 1372, 1967, 6952, 486, 6952, 6952, 6952, 6952, 6952, 6952, 590, 6952, 6952, 6952, 6952,
- 6952, 6952, 6952, 6952, 6952, 1944, 1377, 3144, 3245, 35, 636, 32, 4575, 6952, 27, 30, 31, 629, 626, 26,
- 28, 1320, 296, 25, 23, 50, 1329, 106, 76, 77, 108, 1331, 1420, 1372, 1510, 6952, 4906, 6952, 6952, 2871,
- 3245, 35, 636, 32, 4575, 6952, 27, 30, 31, 629, 626, 26, 28, 1320, 296, 25, 23, 50, 1329, 106, 76, 77,
- 108, 1331, 1420, 1372, 1510, 71, 35, 727, 423, 2878, 3298, 35, 636, 32, 4575, 1377, 27, 30, 31, 629,
- 626, 26, 28, 1320, 296, 25, 23, 50, 1329, 106, 76, 77, 108, 1331, 1420, 1372, 1967, 49, 6952, 6952,
- 6952, 6952, 6952, 6952, 6952, 4968, 6952, 1377, 724, 1447, 3298, 35, 636, 32, 4575, 3150, 27, 30, 31,
- 629, 626, 26, 28, 1320, 296, 25, 23, 50, 1329, 106, 76, 77, 108, 1331, 1420, 1372, 1967, 5030, 6952,
- 6952, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 3245, 35, 636, 32, 4575, 3152, 27, 30,
- 31, 629, 626, 26, 28, 1320, 296, 25, 23, 50, 1329, 106, 76, 77, 108, 1331, 1420, 1372, 2688, 3245, 35,
- 636, 32, 4575, 6952, 27, 30, 31, 629, 626, 26, 28, 1320, 296, 25, 23, 50, 1329, 106, 76, 77, 108, 1331,
- 1420, 1372, 2739, 3245, 35, 636, 32, 4575, 6952, 27, 30, 31, 629, 626, 26, 28, 1320, 296, 25, 23, 50,
- 1329, 106, 76, 77, 108, 1331, 1420, 1372, 2745, 3245, 35, 636, 32, 4575, 6952, 27, 30, 31, 629, 626, 26,
- 28, 1320, 296, 25, 23, 50, 1329, 106, 76, 77, 108, 1331, 1420, 1372, 2762, 3245, 35, 636, 32, 4575,
- 6952, 27, 30, 31, 629, 626, 26, 28, 1320, 296, 25, 23, 50, 1329, 106, 76, 77, 108, 1331, 1420, 1372,
- 3099, 3245, 35, 636, 32, 4575, 6952, 27, 30, 31, 629, 626, 26, 28, 1320, 296, 25, 23, 50, 1329, 106, 76,
- 77, 108, 1331, 1420, 1372, 3107, 3245, 35, 636, 32, 4575, 6952, 27, 30, 31, 629, 626, 26, 28, 1320, 296,
- 25, 23, 50, 1329, 106, 76, 77, 108, 1331, 1420, 1372, 3132, 3245, 35, 636, 32, 4575, 6952, 27, 30, 31,
- 629, 626, 26, 28, 1320, 296, 25, 23, 50, 1329, 106, 76, 77, 108, 1331, 1420, 1372, 2952, 1258, 35, 636,
- 32, 4429, 2742, 27, 30, 31, 629, 626, 373, 28, 6952, 6952, 6952, 6952, 1377, 3457, 35, 727, 423, 4659,
- 6952, 69, 2921, 6952, 1377, 69, 599, 1292, 271, 296, 1292, 1413, 35, 636, 32, 4256, 4853, 27, 30, 31,
- 629, 626, 373, 28, 2629, 1377, 6952, 308, 377, 189, 189, 638, 1296, 189, 2761, 571, 5917, 4181, 221,
- 3592, 4181, 234, 2350, 6952, 646, 355, 266, 366, 6952, 1638, 6952, 349, 627, 2204, 1292, 3711, 3541,
- 6952, 1377, 262, 6952, 1292, 377, 6952, 2921, 348, 269, 264, 265, 599, 157, 35, 727, 423, 6051, 6952,
- 6952, 193, 646, 355, 1404, 442, 1038, 6952, 189, 349, 627, 1251, 5234, 6952, 386, 3477, 189, 195, 342,
- 598, 820, 6952, 6952, 3483, 309, 3353, 49, 213, 276, 279, 282, 1344, 1452, 378, 1803, 996, 383, 724,
- 810, 69, 3801, 6952, 6952, 3403, 1292, 443, 444, 445, 3250, 6952, 6952, 6952, 6952, 6952, 2217, 2415,
- 2481, 2547, 4680, 285, 6952, 6952, 6952, 1214, 3244, 6952, 229, 189, 6952, 6952, 3248, 3582, 6952, 6952,
- 6952, 6952, 2939, 3753, 3245, 35, 636, 32, 4575, 2621, 27, 30, 31, 629, 626, 26, 28, 1320, 296, 25, 23,
- 50, 1329, 106, 76, 77, 108, 1331, 1420, 2807, 3245, 35, 636, 32, 4575, 6952, 27, 30, 31, 629, 626, 26,
- 28, 1320, 296, 25, 23, 50, 1329, 106, 76, 77, 108, 1331, 1420, 2868, 6952, 6952, 6952, 446, 449, 6952,
- 6952, 400, 1220, 35, 3494, 32, 4429, 2742, 27, 30, 31, 629, 626, 373, 28, 6952, 2159, 1822, 35, 636, 32,
- 4256, 6253, 27, 30, 31, 629, 626, 373, 28, 6952, 157, 35, 727, 423, 2621, 6952, 6952, 6952, 4244, 5445,
- 6952, 6952, 6952, 6952, 6952, 6952, 385, 6952, 6952, 6316, 230, 69, 6952, 6952, 6952, 638, 599, 2190,
- 6952, 6952, 6952, 3862, 49, 6952, 385, 69, 6952, 2792, 646, 355, 1292, 366, 4181, 724, 1195, 349, 627,
- 6952, 377, 189, 6952, 259, 69, 646, 355, 6952, 599, 1292, 2031, 1582, 349, 627, 2000, 189, 4197, 386,
- 6952, 4730, 6051, 1214, 6952, 6952, 3195, 3246, 875, 6952, 6952, 6952, 262, 189, 189, 638, 6952, 386,
- 378, 1803, 996, 383, 3353, 2988, 213, 6952, 6952, 2664, 2575, 6952, 6952, 367, 2030, 237, 249, 745, 378,
- 1803, 996, 383, 386, 236, 246, 247, 248, 250, 2575, 6952, 6952, 3427, 1, 202, 6952, 6952, 4181, 599,
- 6952, 6952, 6952, 380, 1803, 996, 383, 201, 6952, 6952, 216, 200, 203, 204, 205, 206, 207, 540, 6952,
- 386, 377, 262, 189, 591, 1915, 35, 727, 423, 452, 454, 3489, 3353, 6952, 213, 6952, 6952, 2664, 6952,
- 378, 1803, 996, 383, 237, 249, 745, 3246, 6952, 6952, 576, 6952, 236, 246, 247, 248, 250, 2690, 49,
- 6952, 6952, 6952, 202, 6952, 6952, 6952, 538, 539, 6952, 724, 2218, 6952, 594, 6952, 201, 6952, 214,
- 217, 200, 203, 204, 205, 206, 207, 3245, 35, 636, 32, 4575, 6952, 27, 30, 31, 629, 626, 26, 28, 1320,
- 296, 25, 23, 50, 1329, 106, 76, 77, 108, 1331, 2564, 345, 157, 35, 727, 423, 599, 6952, 6952, 2004, 35,
- 727, 423, 6952, 6952, 6952, 6952, 6952, 6952, 4545, 6952, 6952, 6952, 3507, 35, 727, 423, 4659, 262,
- 189, 6952, 6952, 6952, 6952, 49, 6952, 272, 296, 3353, 6952, 213, 49, 6952, 2664, 6952, 724, 2108, 6952,
- 6952, 237, 249, 745, 724, 2224, 6952, 308, 6952, 236, 246, 247, 248, 250, 6952, 431, 69, 6952, 6952,
- 202, 599, 1292, 69, 3252, 1519, 1519, 266, 1292, 3862, 3862, 3252, 201, 6952, 6952, 3666, 200, 203, 204,
- 205, 206, 207, 6952, 262, 189, 189, 6952, 270, 264, 265, 6952, 189, 6952, 3353, 3057, 213, 3760, 6952,
- 2664, 6952, 3058, 6952, 6952, 6952, 237, 249, 745, 6952, 6952, 6952, 6952, 6952, 236, 246, 247, 248,
- 250, 6952, 517, 638, 638, 309, 202, 599, 6952, 277, 280, 283, 1344, 1452, 6952, 6952, 6952, 6952, 201,
- 366, 366, 211, 200, 203, 204, 205, 206, 207, 6952, 262, 189, 759, 35, 727, 423, 759, 35, 727, 423, 3353,
- 286, 213, 6952, 6952, 2664, 6952, 914, 4456, 6952, 6952, 237, 249, 745, 6952, 6952, 6952, 6952, 6952,
- 236, 246, 247, 248, 250, 49, 603, 6952, 6952, 49, 202, 599, 6952, 69, 6952, 1519, 724, 2355, 1292, 3862,
- 724, 47, 201, 6952, 6952, 209, 200, 203, 204, 205, 206, 207, 6952, 262, 189, 157, 35, 727, 423, 6952,
- 6952, 189, 2873, 3353, 6952, 213, 814, 6952, 2664, 6952, 3326, 6952, 6952, 6952, 237, 249, 745, 6952,
- 6952, 6952, 6952, 6952, 236, 246, 247, 248, 250, 49, 689, 638, 6952, 6952, 202, 599, 6952, 6952, 6952,
- 6952, 724, 47, 6952, 6952, 6952, 6952, 201, 366, 6952, 210, 200, 203, 204, 205, 206, 207, 6952, 262,
- 189, 759, 35, 727, 423, 6952, 6952, 6952, 965, 3353, 6952, 213, 69, 6952, 2664, 6952, 5386, 1292, 6952,
- 6952, 237, 249, 745, 6952, 6952, 6952, 6952, 6952, 236, 246, 247, 248, 250, 49, 775, 6952, 6952, 6952,
- 202, 599, 189, 69, 6952, 6952, 724, 47, 1292, 2163, 6952, 2997, 201, 6952, 4181, 220, 200, 203, 204,
- 205, 206, 207, 6952, 262, 189, 157, 35, 727, 423, 6952, 6952, 189, 2600, 3353, 6952, 213, 4197, 6952,
- 2664, 6952, 4211, 6952, 6952, 6952, 237, 249, 745, 6952, 6952, 6952, 6952, 6952, 236, 246, 247, 248,
- 250, 49, 861, 6952, 69, 69, 202, 599, 6952, 4181, 599, 6952, 724, 47, 6952, 6952, 6952, 6952, 201, 6952,
- 6952, 3713, 200, 203, 204, 205, 206, 207, 6952, 262, 189, 377, 377, 189, 71, 35, 727, 423, 920, 3353,
- 6952, 213, 2125, 6952, 2664, 6952, 6952, 6952, 6952, 6952, 237, 249, 745, 6952, 6952, 394, 3246, 3246,
- 236, 246, 247, 248, 250, 6952, 6952, 6952, 49, 6952, 202, 6952, 6952, 6952, 6952, 3670, 3295, 3327,
- 6952, 724, 1171, 6952, 201, 2172, 2077, 225, 200, 203, 204, 205, 206, 207, 1391, 35, 636, 32, 4256,
- 4853, 27, 30, 31, 629, 626, 373, 28, 3245, 35, 636, 32, 4575, 6952, 27, 30, 31, 629, 626, 26, 28, 1320,
- 296, 25, 23, 50, 1329, 106, 76, 77, 108, 2597, 6952, 6952, 6952, 157, 35, 727, 423, 6952, 6952, 157, 35,
- 727, 423, 6952, 6952, 6952, 6952, 947, 6952, 6952, 6952, 6952, 599, 6952, 6952, 2765, 35, 727, 423,
- 6952, 646, 355, 6952, 6952, 6952, 49, 6952, 349, 627, 6952, 6952, 49, 386, 6952, 262, 189, 724, 47,
- 6952, 6952, 6952, 587, 724, 47, 3353, 6952, 213, 49, 6952, 2664, 6952, 378, 1803, 996, 383, 237, 249,
- 745, 724, 47, 6952, 588, 1457, 236, 246, 247, 248, 250, 1652, 1033, 6952, 6952, 6952, 202, 599, 6952,
- 6952, 157, 35, 727, 423, 6952, 6952, 6952, 2561, 201, 6952, 6952, 219, 200, 203, 204, 205, 206, 207,
- 6952, 262, 189, 71, 35, 727, 423, 6952, 6952, 6952, 6952, 3353, 6952, 213, 49, 6952, 2664, 6952, 6952,
- 6952, 6952, 6952, 237, 249, 745, 724, 47, 6952, 6952, 6952, 236, 246, 247, 248, 250, 49, 6952, 6952,
- 6952, 6952, 202, 6952, 6952, 6952, 6952, 6952, 724, 715, 6952, 6952, 6952, 1699, 201, 6952, 6952, 228,
- 200, 203, 204, 205, 206, 207, 3245, 35, 636, 32, 4575, 6952, 27, 30, 31, 629, 626, 26, 28, 1320, 296,
- 25, 23, 50, 1329, 106, 76, 77, 108, 2616, 3245, 35, 636, 32, 4575, 6952, 27, 30, 31, 629, 626, 26, 28,
- 1320, 296, 25, 23, 50, 1329, 106, 76, 77, 108, 2622, 3556, 35, 552, 6952, 6952, 6952, 6952, 6952, 6952,
- 6952, 6952, 6952, 6952, 271, 296, 6952, 2101, 35, 636, 32, 4429, 6952, 27, 30, 31, 629, 626, 373, 28,
- 6952, 2357, 35, 636, 32, 4256, 2742, 27, 30, 31, 629, 626, 373, 28, 6952, 71, 35, 727, 423, 6952, 6952,
- 6952, 266, 1745, 35, 636, 32, 4256, 2742, 27, 30, 31, 629, 626, 373, 28, 6952, 6952, 6952, 6952, 69,
- 638, 269, 264, 265, 4181, 1378, 49, 6952, 6952, 3862, 4181, 6952, 6952, 646, 355, 6952, 367, 724, 731,
- 6952, 350, 627, 6952, 6952, 6952, 386, 377, 646, 355, 6952, 6952, 69, 4197, 6952, 349, 627, 4181, 6952,
- 6952, 276, 279, 282, 1344, 1452, 380, 1803, 996, 383, 348, 646, 355, 3246, 157, 35, 727, 423, 349, 627,
- 377, 638, 2795, 35, 727, 423, 6952, 2349, 2679, 2687, 2753, 6221, 348, 6952, 6952, 6952, 6952, 366,
- 2179, 342, 598, 820, 6952, 6952, 6952, 3246, 49, 69, 6952, 6952, 6952, 6952, 599, 6952, 49, 6952, 6952,
- 724, 47, 6952, 6952, 596, 598, 820, 4456, 724, 47, 6952, 6952, 394, 2222, 6952, 6952, 6952, 377, 189,
- 6952, 6952, 6952, 6952, 561, 562, 566, 1746, 2031, 3709, 6952, 2798, 3295, 3327, 6952, 3129, 3582, 6952,
- 6952, 6952, 6952, 6952, 6952, 3246, 6952, 3245, 713, 636, 1850, 4575, 2811, 27, 30, 31, 629, 626, 26,
- 28, 1320, 296, 25, 23, 50, 1329, 106, 76, 77, 84, 2377, 6952, 6952, 6952, 6952, 6952, 3245, 35, 636, 32,
- 4575, 604, 27, 30, 31, 629, 626, 26, 28, 1320, 296, 25, 23, 50, 1329, 106, 76, 77, 83, 3245, 35, 636,
- 32, 4575, 6952, 27, 30, 31, 629, 626, 26, 28, 1320, 296, 25, 23, 50, 1329, 106, 76, 77, 82, 3245, 35,
- 636, 32, 4575, 6952, 27, 30, 31, 629, 626, 26, 28, 1320, 296, 25, 23, 50, 1329, 106, 76, 77, 81, 3245,
- 35, 636, 32, 4575, 6952, 27, 30, 31, 629, 626, 26, 28, 1320, 296, 25, 23, 50, 1329, 106, 76, 77, 80,
- 3245, 35, 636, 32, 4575, 6952, 27, 30, 31, 629, 626, 26, 28, 1320, 296, 25, 23, 50, 1329, 106, 76, 77,
- 79, 3245, 35, 636, 32, 4575, 6952, 27, 30, 31, 629, 626, 26, 28, 1320, 296, 25, 23, 50, 1329, 106, 76,
- 77, 78, 2951, 35, 636, 32, 4575, 6952, 27, 30, 31, 629, 626, 26, 28, 1320, 296, 25, 23, 50, 1329, 106,
- 76, 77, 104, 3245, 35, 636, 32, 4575, 6952, 27, 30, 31, 629, 626, 26, 28, 1320, 296, 25, 23, 50, 1329,
- 106, 76, 77, 110, 3245, 35, 636, 32, 4575, 6952, 27, 30, 31, 629, 626, 26, 28, 1320, 296, 25, 23, 50,
- 1329, 106, 76, 77, 109, 3245, 35, 636, 32, 4575, 6952, 27, 30, 31, 629, 626, 26, 28, 1320, 296, 25, 23,
- 50, 1329, 106, 76, 77, 107, 3245, 35, 636, 32, 4575, 6952, 27, 30, 31, 629, 626, 26, 28, 1320, 296, 25,
- 23, 50, 1329, 106, 76, 77, 105, 3192, 35, 636, 32, 4575, 6952, 27, 30, 31, 629, 626, 26, 28, 1320, 296,
- 25, 23, 50, 1329, 86, 76, 77, 1243, 35, 636, 32, 4256, 2742, 27, 30, 31, 629, 626, 373, 28, 1578, 71,
- 35, 727, 423, 4181, 6952, 6952, 71, 35, 727, 423, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 1845,
- 71, 35, 727, 423, 4181, 6952, 262, 6952, 6952, 6952, 6952, 6952, 49, 6952, 6952, 69, 6952, 6952, 6952,
- 49, 4181, 6952, 6952, 724, 2218, 6952, 262, 239, 249, 745, 724, 1187, 49, 646, 355, 238, 246, 247, 248,
- 250, 349, 627, 377, 724, 2548, 6952, 6952, 239, 249, 745, 6952, 6952, 6952, 6952, 348, 238, 246, 247,
- 248, 250, 1934, 6952, 6952, 6952, 6952, 4181, 6952, 3246, 240, 242, 244, 3250, 2792, 251, 241, 243, 69,
- 4181, 6952, 6952, 6952, 4181, 6952, 343, 598, 820, 6952, 262, 240, 242, 244, 3250, 2354, 251, 241, 243,
- 6952, 6952, 6952, 4197, 6952, 6952, 6952, 377, 6952, 6952, 6952, 6952, 239, 249, 745, 2668, 6952, 6136,
- 6952, 6952, 238, 246, 247, 248, 250, 2023, 6952, 6952, 6952, 6952, 4181, 6952, 3246, 6952, 6952, 2676,
- 6952, 6136, 1360, 35, 636, 32, 4429, 6952, 27, 30, 31, 629, 626, 373, 28, 6952, 262, 240, 242, 244,
- 3250, 2864, 251, 241, 243, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 69, 239,
- 249, 745, 6952, 4181, 540, 6952, 6952, 238, 246, 247, 248, 250, 6952, 6952, 6952, 6952, 6952, 6952, 638,
- 6952, 6952, 1667, 2737, 6952, 6136, 377, 4181, 6952, 6952, 6952, 6952, 646, 355, 6952, 367, 6952, 6952,
- 6952, 352, 627, 240, 242, 244, 3250, 6952, 580, 241, 243, 262, 1756, 3246, 537, 539, 6952, 4181, 6952,
- 6952, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 239, 249, 745, 6952, 6952,
- 6952, 544, 262, 238, 246, 247, 248, 250, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 3574, 6952, 6952,
- 6952, 6952, 6952, 6952, 6952, 239, 249, 745, 6952, 6952, 6952, 6952, 6952, 238, 246, 247, 248, 250, 240,
- 242, 244, 3250, 6952, 579, 241, 243, 6952, 2112, 6952, 6952, 69, 2793, 4181, 6952, 6952, 4181, 4181,
- 6952, 6952, 6952, 2201, 6952, 3605, 35, 552, 4181, 240, 242, 244, 3250, 6952, 252, 241, 243, 262, 272,
- 296, 377, 4197, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 262, 6952, 6952, 6952, 6952, 6952, 6952,
- 1378, 239, 249, 745, 3862, 4181, 6952, 6952, 3246, 238, 246, 247, 248, 250, 239, 249, 745, 6952, 6952,
- 266, 6952, 6952, 238, 246, 247, 248, 250, 4197, 6952, 6952, 6952, 6952, 6952, 542, 6952, 6952, 6952,
- 6952, 6952, 270, 264, 265, 240, 242, 244, 3250, 1179, 341, 241, 243, 5917, 4181, 6952, 6952, 638, 240,
- 242, 244, 3250, 540, 534, 241, 243, 3042, 6952, 6952, 6952, 6952, 599, 6952, 366, 69, 6952, 262, 6952,
- 6952, 599, 277, 280, 283, 1344, 1452, 69, 6952, 6952, 6952, 6952, 599, 6952, 6952, 377, 189, 6952, 6952,
- 1404, 442, 1038, 5386, 377, 189, 221, 6952, 394, 6952, 6952, 6952, 537, 539, 221, 377, 189, 6952, 69,
- 6952, 6952, 2204, 6952, 4181, 6952, 221, 2798, 3295, 3327, 2204, 6952, 6952, 6952, 6952, 6952, 6952,
- 6952, 6952, 6952, 6952, 2204, 443, 444, 445, 3250, 377, 6952, 6952, 6952, 6952, 3632, 6952, 6952, 6952,
- 6952, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 561, 562, 567, 6952, 3248, 6952, 6952, 6952, 3246, 6952,
- 6952, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 223, 6952, 6952, 6952, 6952,
- 6952, 6952, 6952, 3872, 6952, 6952, 595, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 3904, 6952, 6952,
- 6952, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 6952,
- 6952, 6952, 6952, 6952, 6952, 6952, 446, 448, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 6952,
- 6952, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 2286,
- 6952, 6952, 4218, 6952, 6952, 6952, 6952, 6952, 6952, 3668, 6952, 0, 864, 1, 0, 39, 6967, 1, 0, 39,
- 6966, 1, 0, 38, 641, 0, 38, 6967, 0, 38, 6966, 0, 489, 919, 0, 475, 1191, 0, 1192, 29, 0, 6967, 48, 0,
- 6966, 48, 0, 6964, 418, 0, 6963, 418, 0, 39, 6967, 0, 39, 6966, 0, 1, 479, 0, 493, 981, 0, 492, 1406, 0,
- 35, 33, 0, 1192, 422, 0, 47, 37, 0, 4001, 126, 0, 1, 1030, 0, 1, 7259, 0, 1, 7258, 0, 1, 7257, 0, 1,
- 7256, 0, 1, 7255, 0, 1, 7254, 0, 1, 7253, 0, 1, 7252, 0, 1, 7251, 0, 1, 7250, 0, 1, 7249, 0, 318, 429,
- 0, 318, 323, 0, 7220, 275, 0, 7219, 275, 0, 7324, 275, 0, 7323, 275, 0, 7247, 275, 0, 7246, 275, 0,
- 7245, 275, 0, 7244, 275, 0, 7243, 275, 0, 7242, 275, 0, 7241, 275, 0, 7240, 275, 0, 7259, 275, 0, 7258,
- 275, 0, 7257, 275, 0, 7256, 275, 0, 7255, 275, 0, 7254, 275, 0, 7253, 275, 0, 7252, 275, 0, 7251, 275,
- 0, 7250, 275, 0, 7249, 275, 0, 39, 6967, 275, 0, 39, 6966, 275, 0, 6990, 275, 0, 43, 6988, 0, 43, 37, 0,
- 1023, 91, 0, 32, 34, 0, 39, 641, 0, 1, 5861, 0, 1, 1266, 0, 1, 5608, 0, 1, 5631, 0, 1, 5654, 0, 1, 5677,
- 0, 1, 5700, 0, 1, 5723, 0, 2680, 1, 0, 5579, 1, 0, 1, 6974, 0, 1, 6973, 0, 1, 6972, 0, 1, 6971, 0, 1,
- 6970, 0, 1, 6969, 0, 1, 6968, 0, 1, 808, 0, 1, 979, 0, 1, 1065, 0, 1, 1108, 0, 1, 1297, 0, 1, 3360, 0,
- 39, 1, 0, 365, 480, 0, 6958, 1, 0, 6957, 1, 0, 271, 714, 0, 32, 423, 0, 29, 422, 0, 4001, 128, 0, 4001,
- 127, 0, 6967, 275, 0, 6966, 275, 0, 536, 3249, 0, 6990, 1, 263, 0, 39, 1, 263, 0, 263, 451, 0, 6967, 37,
- 0, 6966, 37, 0, 6988, 45, 0, 37, 45, 0, 6990, 1, 0, 1, 92, 0, 6962, 440, 0, 6961, 440, 0, 655, 1, 0,
- 641, 1, 0, 263, 450, 0, 3402, 418, 0, 6967, 2, 37, 0, 6966, 2, 37, 0, 6967, 36, 0, 6966, 36, 0, 1, 365,
- 0, 8, 12, 0, 365, 95, 0, 35, 73, 0, 536, 6108, 0, 1, 263, 0, 313, 1581, 0, 263, 254, 0, 1, 1199, 0, 1,
- 2122, 0, 263, 253, 0, 6964, 1, 0, 6960, 1, 0, 1, 263, 3587, 0, 6961, 263, 0, 3588, 263, 0, 3643, 263, 0,
- 10, 12, 0, 8, 10, 12, 0, 3708, 227, 0, 218, 5172, 0 };
- }
-
- public final static char baseAction[] = BaseAction.baseAction;
-
- @Override
- public final int baseAction(int index) {
- return baseAction[index];
- }
-
- public final static char lhs[] = baseAction;
-
- @Override
- public final int lhs(int index) {
- return lhs[index];
- }
-
- public interface TermCheck {
- public final static byte termCheck[] = { 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 55, 56, 3, 58, 59, 0, 61, 62, 63, 4, 65, 66, 67, 0, 69, 0, 1, 2,
- 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
- 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 55, 56, 3, 58, 59, 0, 61, 62, 63, 4, 65, 66, 67,
- 0, 69, 0, 1, 2, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
- 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
- 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 55, 56, 0, 58, 59, 0, 61, 62, 63,
- 7, 65, 66, 67, 0, 69, 0, 0, 4, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 0, 1, 2, 3, 4, 5, 6,
- 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
- 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 55, 56, 0, 58, 59, 0,
- 61, 62, 63, 0, 65, 66, 67, 94, 69, 0, 86, 87, 3, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 0, 1,
- 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
- 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 70, 55,
- 56, 0, 58, 59, 3, 61, 62, 63, 96, 65, 66, 67, 94, 69, 92, 93, 101, 102, 74, 75, 76, 77, 78, 79, 80, 81,
- 82, 83, 84, 85, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
- 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
- 50, 51, 52, 53, 0, 55, 56, 3, 58, 59, 0, 61, 62, 63, 0, 65, 66, 67, 0, 69, 0, 0, 1, 2, 74, 75, 76, 77,
- 78, 79, 80, 81, 82, 83, 84, 85, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
- 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
- 46, 47, 48, 49, 50, 51, 52, 53, 0, 55, 56, 3, 58, 59, 0, 61, 62, 63, 0, 65, 66, 67, 94, 69, 86, 87, 0,
- 95, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
- 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 55, 56, 0, 58, 59, 6, 61, 62, 63, 7, 65, 66, 67,
- 94, 69, 92, 93, 86, 87, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
- 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
- 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 55, 56, 0, 58, 59, 3, 61, 62,
- 63, 0, 65, 66, 67, 0, 69, 0, 1, 2, 5, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 0, 1, 2, 3, 4, 5,
- 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
- 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 55, 56, 3, 58,
- 59, 0, 61, 62, 63, 96, 65, 66, 67, 0, 69, 0, 3, 0, 95, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
- 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
- 0, 55, 56, 0, 58, 59, 0, 61, 62, 63, 7, 65, 66, 67, 0, 69, 86, 87, 86, 87, 74, 75, 76, 77, 78, 79, 80,
- 81, 82, 83, 84, 85, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
- 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
- 49, 50, 51, 52, 53, 0, 55, 56, 3, 58, 59, 0, 61, 62, 63, 96, 65, 66, 67, 0, 69, 0, 3, 0, 0, 74, 75, 76,
- 77, 78, 79, 80, 81, 82, 83, 84, 85, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 55, 56, 0, 58, 59, 0, 61, 62, 63, 4, 65, 66, 67, 0, 69, 86, 87,
- 86, 87, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 0, 1, 2, 3, 4, 5, 6, 7, 8, 121, 10, 11, 12, 13,
- 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 68,
- 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 55, 56, 3, 58, 59, 0, 1, 2, 3, 4, 5, 6, 7, 8,
- 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 1,
- 2, 0, 4, 39, 3, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 1, 2, 53, 4, 55, 56, 57, 58, 0, 0, 61, 62, 63, 0, 1, 2, 3,
- 4, 0, 6, 71, 8, 73, 5, 0, 7, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 88, 11, 12, 13, 14, 15, 16, 17, 18, 19,
- 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 71, 54, 114, 115, 116, 0, 1, 2, 3, 4, 5, 6, 7,
- 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
- 91, 0, 0, 1, 2, 39, 0, 98, 6, 3, 8, 5, 0, 7, 0, 9, 0, 1, 2, 53, 4, 55, 56, 57, 58, 0, 0, 61, 62, 63, 0,
- 1, 2, 3, 4, 10, 6, 71, 8, 73, 34, 35, 36, 37, 120, 39, 0, 0, 0, 1, 2, 0, 4, 5, 88, 7, 9, 9, 57, 0, 54,
- 0, 1, 2, 3, 4, 60, 6, 9, 8, 64, 57, 60, 57, 68, 0, 70, 71, 72, 73, 114, 115, 116, 0, 1, 2, 3, 4, 5, 6,
- 7, 8, 86, 87, 68, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
- 108, 109, 110, 111, 112, 72, 72, 60, 0, 117, 118, 119, 120, 0, 69, 54, 3, 9, 5, 0, 7, 0, 9, 0, 0, 1, 2,
- 3, 4, 60, 6, 97, 8, 0, 1, 2, 3, 4, 5, 70, 7, 0, 1, 2, 23, 24, 5, 34, 35, 36, 37, 0, 39, 34, 35, 22, 23,
- 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 54, 0, 0, 0, 1, 2, 60, 4, 0, 6, 64, 8, 4, 5, 68, 7, 70, 71, 72,
- 73, 64, 0, 1, 2, 3, 4, 60, 6, 71, 8, 64, 57, 86, 87, 68, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
- 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 118, 57, 0, 60, 117, 118, 119, 120, 0,
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
- 29, 30, 31, 32, 33, 0, 0, 0, 1, 2, 39, 4, 5, 0, 7, 0, 1, 2, 0, 4, 5, 3, 7, 0, 53, 0, 55, 56, 57, 58, 0,
- 0, 61, 62, 63, 0, 65, 0, 1, 2, 9, 0, 7, 6, 73, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 92, 93,
- 88, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, 33, 57, 70, 0, 1, 2, 39, 4, 60, 6, 72, 8, 0, 1, 2, 95, 4, 5, 0, 7, 53, 54, 55,
- 56, 57, 58, 113, 9, 61, 62, 63, 0, 65, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 0, 1,
- 2, 3, 4, 5, 6, 7, 8, 0, 88, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
- 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 72, 0, 0, 1, 2, 39, 4, 5, 0, 7, 0, 70, 4, 0, 86, 87,
- 0, 62, 54, 53, 0, 55, 56, 57, 58, 0, 0, 61, 62, 63, 22, 65, 0, 1, 2, 3, 4, 0, 6, 73, 8, 9, 101, 102,
- 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 88, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 1, 2, 60, 4, 39, 6, 0, 8,
- 97, 0, 1, 2, 86, 87, 72, 6, 96, 0, 53, 0, 55, 56, 57, 58, 0, 95, 61, 62, 63, 0, 65, 0, 114, 115, 116, 0,
- 1, 2, 73, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 0, 88, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
- 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 1, 2, 60,
- 68, 39, 6, 0, 8, 91, 0, 70, 5, 66, 67, 0, 98, 54, 0, 53, 5, 55, 56, 57, 58, 0, 0, 61, 62, 63, 4, 65, 0,
- 0, 9, 3, 0, 1, 2, 73, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 89, 90, 88, 0, 1, 2, 3, 4, 5, 6,
- 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
- 0, 0, 0, 60, 68, 39, 5, 64, 0, 73, 0, 68, 4, 66, 67, 71, 0, 99, 100, 53, 0, 55, 56, 57, 58, 99, 100, 61,
- 62, 63, 22, 65, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 1, 2, 3, 4, 5, 6, 7, 8, 53, 88, 0, 1,
- 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
- 30, 31, 32, 33, 0, 1, 2, 0, 4, 39, 0, 1, 2, 0, 0, 99, 100, 0, 0, 60, 0, 0, 91, 53, 4, 55, 56, 57, 58,
- 98, 9, 61, 62, 63, 0, 65, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 1, 2, 3, 4, 5, 0, 7, 0, 0,
- 88, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, 33, 72, 60, 0, 1, 2, 39, 86, 87, 0, 1, 2, 9, 4, 0, 6, 60, 8, 0, 54, 53, 57, 55,
- 56, 57, 58, 97, 9, 61, 62, 63, 0, 65, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 88, 0, 1, 2, 3, 4, 0, 6, 0, 8, 9, 57, 34, 35, 36, 37, 38, 69, 40, 41, 42, 43, 44, 45, 46,
- 47, 48, 49, 50, 51, 52, 0, 0, 74, 0, 0, 73, 59, 0, 0, 39, 0, 64, 9, 66, 67, 0, 1, 2, 3, 4, 5, 6, 7, 8,
- 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 1, 2, 3, 4, 39, 6, 0, 8, 9, 91, 0, 34, 35, 36, 37,
- 38, 98, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 64, 92, 93, 0, 1, 2, 59, 68, 39, 0, 34, 35,
- 0, 71, 34, 35, 69, 0, 1, 2, 73, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
- 20, 21, 0, 1, 2, 114, 115, 116, 0, 0, 1, 2, 113, 0, 34, 35, 36, 37, 38, 57, 40, 41, 42, 43, 44, 45, 46,
- 47, 48, 49, 50, 51, 52, 57, 0, 64, 0, 1, 2, 59, 0, 1, 2, 3, 4, 5, 6, 7, 8, 69, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 54, 0, 1, 2, 57, 54, 0, 0, 0, 0, 64, 3, 34, 35, 36, 37, 38, 0, 40, 41, 42, 43,
- 44, 45, 46, 47, 48, 49, 50, 51, 52, 57, 60, 0, 0, 89, 90, 59, 0, 0, 89, 90, 3, 9, 66, 67, 0, 1, 2, 3, 4,
- 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 60, 60, 64, 0, 1, 2, 0, 1, 2, 0, 1, 2,
- 34, 35, 36, 37, 38, 68, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 0, 0, 3, 69, 71, 59, 0,
- 1, 2, 3, 4, 5, 6, 7, 8, 69, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 57, 0, 0, 57, 3, 3, 57, 36,
- 37, 0, 0, 9, 34, 35, 36, 37, 38, 0, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 60, 0, 0, 0, 0,
- 3, 59, 5, 6, 7, 0, 0, 0, 66, 67, 0, 0, 1, 2, 0, 9, 9, 0, 1, 2, 3, 4, 5, 9, 7, 0, 60, 0, 54, 4, 0, 34,
- 35, 36, 37, 54, 9, 40, 72, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 54, 117, 39, 119, 0, 0, 60,
- 3, 54, 64, 64, 64, 66, 67, 68, 39, 70, 57, 64, 89, 90, 0, 0, 68, 0, 3, 60, 72, 54, 73, 64, 68, 86, 87,
- 68, 89, 90, 91, 92, 93, 94, 95, 96, 89, 90, 99, 100, 101, 0, 103, 104, 105, 106, 107, 108, 109, 110,
- 111, 112, 0, 1, 2, 0, 117, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
- 0, 0, 64, 0, 1, 2, 68, 0, 1, 2, 10, 10, 34, 35, 36, 37, 38, 0, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
- 50, 51, 52, 0, 1, 2, 3, 4, 5, 6, 7, 8, 64, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 53, 53, 0, 0,
- 57, 57, 0, 0, 0, 0, 0, 9, 34, 35, 36, 37, 38, 10, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
- 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 118, 66, 67, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 10, 11, 12,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 61, 0, 64, 0, 0, 70, 0, 73, 0, 0, 0, 71, 34, 35, 36, 37, 38, 9, 40,
- 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 0, 0, 3, 3, 3, 59, 0, 1, 2, 3, 4, 5, 6, 7, 8, 39, 10,
- 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 54, 0, 59, 54, 54, 64, 0, 0, 0, 68, 64, 0, 34, 35, 36, 37,
- 38, 0, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 0, 0, 3, 89, 90, 0, 60, 0, 1, 2, 3, 4, 5,
- 6, 7, 8, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 54, 54, 0, 0, 54, 3, 0, 0, 0, 0, 64, 4, 34,
- 35, 36, 37, 38, 9, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 75, 0, 0, 0, 89, 90, 59, 0, 1, 2,
- 3, 4, 5, 6, 7, 8, 39, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 54, 54, 0, 54, 0, 0, 0, 0, 0, 97,
- 4, 0, 34, 35, 36, 37, 38, 71, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 0, 0, 0, 0, 0, 59,
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 54, 54, 54, 0, 0, 54, 0,
- 0, 0, 38, 68, 38, 34, 35, 36, 37, 38, 0, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 0, 0, 3,
- 0, 0, 59, 0, 1, 2, 3, 4, 5, 6, 7, 8, 71, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 0, 54, 0, 0,
- 0, 0, 0, 0, 97, 38, 68, 34, 35, 36, 37, 38, 70, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0,
- 1, 2, 3, 4, 5, 6, 7, 8, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 0, 54, 0, 113, 0, 113, 0,
- 0, 0, 0, 0, 34, 35, 36, 37, 38, 70, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 1, 2, 3, 4,
- 5, 6, 7, 8, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 34,
- 35, 36, 37, 38, 70, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0,
- 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 35, 36, 37, 38,
- 70, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 10, 11, 12, 13,
- 14, 15, 16, 17, 18, 19, 20, 21, 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, 9, 3, 34, 35, 36, 37, 38, 9, 40, 41, 42,
- 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 1, 2, 0, 4, 0, 0, 0, 0, 0, 10, 11, 12, 13, 14, 15, 16, 17,
- 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 0, 0, 60, 0, 0, 71, 64, 72, 71, 9,
- 68, 71, 0, 70, 72, 0, 1, 2, 53, 4, 55, 56, 0, 58, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
- 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 1, 2, 0, 53,
- 70, 55, 56, 72, 58, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
- 31, 32, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 53, 0, 55, 56, 72, 58, 10, 11, 12,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 0, 0, 0, 1, 2, 3,
- 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, 0, 0, 53, 0, 55, 56, 0, 58, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
- 33, 0, 0, 70, 0, 0, 39, 0, 0, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 54, 0, 0, 0, 0, 0, 60, 0,
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 32, 33, 0, 0, 0, 0, 0, 39, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 0, 0, 0, 0, 0, 0, 0, 60,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
- 28, 29, 30, 31, 32, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static byte termCheck[] = TermCheck.termCheck;
-
- @Override
- public final int termCheck(int index) {
- return termCheck[index];
- }
-
- public interface TermAction {
- public final static char termAction[] = { 0, 6952, 6926, 6902, 6902, 6902, 6902, 6902, 6902, 6902, 6936, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6930, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 6952, 1, 1, 5033, 1, 1, 6952, 1394, 7160, 2980, 668, 3497, 1, 1, 1, 6963, 6952,
- 6966, 6967, 6959, 2489, 3630, 3400, 3298, 3396, 3586, 4658, 3598, 740, 3594, 4188, 3589, 10, 6939, 6939,
- 6939, 6939, 6939, 6939, 6939, 6939, 6939, 6939, 6939, 6939, 6939, 6939, 6939, 6939, 6939, 6939, 6939,
- 6939, 6939, 6939, 6939, 6939, 6939, 6939, 6939, 6939, 6939, 6939, 6939, 6939, 6939, 6939, 6939, 6939,
- 6939, 6939, 6939, 6939, 6939, 6939, 6939, 6939, 6939, 6939, 6939, 6939, 6939, 6939, 6939, 6939, 6939,
- 6952, 6939, 6939, 714, 6939, 6939, 39, 6939, 6939, 6939, 6990, 6939, 6939, 6939, 365, 6939, 6952, 6548,
- 6545, 6939, 6939, 6939, 6939, 6939, 6939, 6939, 6939, 6939, 6939, 6939, 6939, 6939, 8, 6942, 6942, 6942,
- 6942, 6942, 6942, 6942, 6942, 6942, 6942, 6942, 6942, 6942, 6942, 6942, 6942, 6942, 6942, 6942, 6942,
- 6942, 6942, 6942, 6942, 6942, 6942, 6942, 6942, 6942, 6942, 6942, 6942, 6942, 6942, 6942, 6942, 6942,
- 6942, 6942, 6942, 6942, 6942, 6942, 6942, 6942, 6942, 6942, 6942, 6942, 6942, 6942, 6942, 6942, 430,
- 6942, 6942, 131, 6942, 6942, 133, 6942, 6942, 6942, 3721, 6942, 6942, 6942, 6952, 6942, 419, 121, 2078,
- 6942, 6942, 6942, 6942, 6942, 6942, 6942, 6942, 6942, 6942, 6942, 6942, 6942, 6952, 6926, 6902, 6902,
- 6902, 6902, 6902, 6902, 6902, 6933, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 6930, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 137, 1, 1, 139, 1, 1, 153, 1394, 7160,
- 2980, 129, 3497, 1, 1, 3638, 6963, 346, 4340, 4366, 883, 2489, 3630, 3400, 3298, 3396, 3586, 4658, 3598,
- 740, 3594, 4188, 3589, 6952, 6926, 6902, 6902, 6902, 6902, 6902, 6902, 6902, 6933, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6930, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1219, 1, 1, 91, 1, 1, 6712, 1394, 7160, 2980, 3509, 3497, 1, 1, 3673, 6963, 3835, 3803, 3407,
- 4301, 2489, 3630, 3400, 3298, 3396, 3586, 4658, 3598, 740, 3594, 4188, 3589, 6952, 6926, 6902, 6902,
- 6902, 6902, 6902, 6902, 6902, 6933, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 6930, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 271, 1, 1, 6802, 1, 1, 134, 1394,
- 7160, 2980, 135, 3497, 1, 1, 333, 6963, 141, 432, 6966, 6967, 2489, 3630, 3400, 3298, 3396, 3586, 4658,
- 3598, 740, 3594, 4188, 3589, 6952, 6926, 6902, 6902, 6902, 6902, 6902, 6902, 6902, 6933, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6930, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 5993, 1, 1, 154, 1394, 7160, 2980, 149, 3497, 1, 1, 3638, 6963, 4340, 4366, 125,
- 3602, 2489, 3630, 3400, 3298, 3396, 3586, 4658, 3598, 740, 3594, 4188, 3589, 6952, 6926, 6902, 6902,
- 6902, 6902, 6902, 6902, 6902, 6933, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 6930, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6952, 1, 1, 151, 1, 1, 1793, 1394,
- 7160, 2980, 3755, 3497, 1, 1, 3673, 6963, 3907, 3867, 4340, 4366, 2489, 3630, 3400, 3298, 3396, 3586,
- 4658, 3598, 740, 3594, 4188, 3589, 6952, 6926, 6902, 6902, 6902, 6902, 6902, 6902, 6902, 6933, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6930, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 157, 1, 1, 6952, 1, 1, 4481, 1394, 7160, 2980, 155, 3497, 1, 1, 6952, 6963, 48,
- 6548, 6545, 1608, 2489, 3630, 3400, 3298, 3396, 3586, 4658, 3598, 740, 3594, 4188, 3589, 6952, 6926,
- 6902, 6902, 6902, 6902, 6902, 6902, 6902, 6933, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6930, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6952, 1, 1, 4721, 1, 1,
- 6952, 1394, 7160, 2980, 3546, 3497, 1, 1, 6952, 6963, 124, 4727, 123, 673, 2489, 3630, 3400, 3298, 3396,
- 3586, 4658, 3598, 740, 3594, 4188, 3589, 6952, 6926, 6902, 6902, 6902, 6902, 6902, 6902, 6902, 6933, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6930, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 138, 1, 1, 132, 1, 1, 6952, 1394, 7160, 2980, 3721, 3497, 1, 1, 6952, 6963,
- 4340, 4366, 4340, 4366, 2489, 3630, 3400, 3298, 3396, 3586, 4658, 3598, 740, 3594, 4188, 3589, 6952,
- 6926, 6902, 6902, 6902, 6902, 6902, 6902, 6902, 6933, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6930, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6952, 1, 1, 4851, 1,
- 1, 218, 1394, 7160, 2980, 3509, 3497, 1, 1, 6952, 6963, 122, 1581, 145, 6952, 2489, 3630, 3400, 3298,
- 3396, 3586, 4658, 3598, 740, 3594, 4188, 3589, 6952, 3587, 1, 1, 1, 1, 1, 1, 1, 3588, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6961, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 6952, 1, 1, 190, 1, 1, 430, 1394, 7160, 2980, 423, 3497, 1, 1, 6952, 6963, 4340, 4366, 4340,
- 4366, 2489, 3630, 3400, 3298, 3396, 3586, 4658, 3598, 740, 3594, 4188, 3589, 39, 6560, 6557, 4450, 864,
- 5654, 5579, 5677, 2680, 6949, 758, 7251, 7249, 7258, 7257, 7253, 7254, 7252, 7255, 7256, 7259, 7250,
- 7246, 7323, 7324, 7240, 7247, 7243, 7219, 7245, 7244, 7241, 7242, 7220, 5631, 5608, 5723, 5700, 6971,
- 2127, 1266, 979, 1297, 6973, 1065, 5861, 1108, 6974, 6972, 808, 6968, 6969, 6970, 7385, 6952, 1442,
- 7386, 3330, 7387, 1554, 6952, 6830, 6830, 263, 6826, 263, 263, 263, 263, 6834, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 323, 6623, 6623, 6952, 318, 263, 3040, 6952, 6523, 6519,
- 655, 6516, 6887, 641, 6887, 2680, 6952, 6560, 6557, 1, 6990, 1, 1, 6823, 1, 489, 111, 1056, 7399, 953,
- 1, 6523, 6519, 655, 6516, 6952, 641, 263, 2680, 451, 1593, 6952, 1584, 6952, 257, 345, 6523, 6519, 655,
- 6516, 6887, 641, 6887, 2680, 7487, 7251, 7249, 7258, 7257, 7253, 7254, 7252, 7255, 7256, 7259, 7250,
- 7246, 7323, 7324, 7240, 7247, 7243, 7219, 7245, 7244, 7241, 7242, 7220, 3060, 6536, 7422, 7423, 7424,
- 6952, 6830, 6830, 263, 6826, 263, 263, 263, 263, 6867, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 5769, 37, 38, 6533, 6530, 263, 33, 5792, 6527, 6572, 2680, 6572, 354, 6572, 47,
- 6572, 429, 6620, 6620, 1, 318, 1, 1, 6823, 1, 337, 550, 1056, 7399, 953, 365, 6560, 6557, 655, 864,
- 7288, 641, 263, 2680, 450, 6572, 6572, 6572, 6572, 6515, 6572, 6952, 6952, 1, 6790, 6790, 6952, 6849,
- 365, 7487, 365, 6958, 397, 6988, 6952, 6572, 1, 6523, 6519, 4415, 6516, 6572, 641, 6964, 2680, 6572,
- 1334, 1512, 318, 6572, 475, 6572, 6572, 6572, 6572, 7422, 7423, 7424, 401, 6523, 6519, 4415, 6516, 1,
- 641, 1, 2680, 6572, 6572, 1078, 6572, 6572, 6572, 6572, 6572, 6572, 6572, 6572, 6572, 6572, 6572, 6572,
- 6572, 6572, 6572, 6572, 6572, 6572, 6572, 6572, 6572, 6572, 6572, 6572, 6957, 397, 1512, 6952, 6572,
- 6572, 6572, 6572, 6952, 6963, 6539, 6715, 6956, 6715, 118, 6715, 370, 6715, 6952, 1, 6523, 6519, 655,
- 6516, 1512, 641, 397, 2680, 37, 6967, 6967, 6967, 6967, 6967, 1367, 6967, 37, 6578, 6578, 7323, 7324,
- 365, 6715, 6715, 6715, 6715, 6952, 6715, 4633, 1339, 6967, 6967, 6967, 6967, 6967, 6967, 6967, 6967,
- 6967, 6967, 6967, 6967, 6715, 6952, 353, 6952, 6560, 6557, 6715, 864, 39, 6718, 6715, 2680, 6990, 365,
- 6715, 365, 6715, 6715, 6715, 6715, 7442, 1, 6523, 6519, 6861, 6516, 6967, 6864, 3060, 6745, 6967, 6988,
- 6715, 6715, 6967, 6715, 6715, 6715, 6715, 6715, 6715, 6715, 6715, 6715, 6715, 6715, 6715, 6715, 6715,
- 6715, 6715, 6715, 6715, 6715, 6715, 6715, 6715, 6715, 6715, 6955, 2468, 130, 1512, 6715, 6715, 6715,
- 6715, 6952, 6902, 6902, 263, 6902, 263, 263, 263, 263, 6908, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 10736, 1, 1, 1, 1, 1, 1, 6952, 6952, 479, 1, 1, 263, 1, 6563, 136, 6563, 480, 39, 39, 103,
- 6990, 6793, 3476, 6793, 258, 1, 139, 1, 1, 6899, 1, 6952, 1, 2865, 7197, 2980, 152, 3497, 37, 6578,
- 6578, 194, 493, 3755, 6578, 254, 7246, 7323, 7324, 7240, 7247, 7243, 7219, 7245, 7244, 7241, 7242, 7220,
- 3835, 3803, 7487, 6952, 6902, 6902, 263, 6902, 263, 263, 263, 263, 263, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 10736, 1, 1, 1, 1, 1, 1, 1840, 2080, 6952, 6560, 6557, 263, 864, 6566, 641, 194, 2680,
- 92, 1, 1, 3602, 1, 6852, 6952, 6852, 1, 3340, 1, 1, 6899, 1, 3634, 6958, 2865, 7197, 2980, 159, 3497,
- 3407, 4301, 2033, 1986, 1939, 1892, 1845, 1798, 1751, 1704, 1657, 1610, 6952, 6523, 6519, 655, 6516, 1,
- 641, 1, 2680, 29, 7487, 6952, 6902, 6902, 263, 6902, 263, 263, 263, 263, 6917, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 10736, 1, 1, 1, 1, 1, 1, 6957, 392, 95, 39, 39, 263, 6990, 6893, 39, 6893,
- 158, 2834, 6990, 6952, 4340, 4366, 144, 7549, 6542, 1, 156, 1, 1, 6899, 1, 6952, 6952, 2865, 7197, 2980,
- 2018, 3497, 1, 6523, 6519, 4415, 6516, 6952, 641, 253, 2680, 6796, 3446, 4464, 2768, 2702, 2636, 2570,
- 2504, 2438, 2372, 2306, 2240, 2174, 7487, 6952, 6902, 6902, 263, 6902, 263, 263, 263, 263, 6908, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 10736, 1, 1, 1, 1, 1, 1, 6952, 6560, 6557, 1512, 864, 263,
- 641, 114, 2680, 7343, 6952, 6966, 6967, 4340, 4366, 6799, 1793, 3546, 259, 1, 6952, 1, 1, 6899, 1, 396,
- 673, 2865, 7197, 2980, 328, 3497, 492, 7422, 7423, 7424, 6952, 6966, 6967, 254, 7246, 7323, 7324, 7240,
- 7247, 7243, 7219, 7245, 7244, 7241, 7242, 7220, 146, 6952, 7487, 6952, 6902, 6902, 263, 6902, 263, 263,
- 263, 263, 6908, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 10736, 1, 1, 1, 1, 1, 1, 6952, 6966,
- 6967, 6569, 3473, 263, 641, 115, 2680, 5769, 6952, 3102, 5346, 5746, 721, 117, 5792, 4109, 260, 1, 5346,
- 1, 1, 6899, 1, 6952, 6952, 2865, 7197, 2980, 1264, 3497, 1, 6952, 6960, 4433, 6952, 6548, 6545, 254,
- 7246, 7323, 7324, 7240, 7247, 7243, 7219, 7245, 7244, 7241, 7242, 7220, 4082, 4055, 7487, 6952, 6902,
- 6902, 263, 6902, 263, 263, 263, 263, 263, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 10736, 1,
- 1, 1, 1, 1, 1, 6952, 116, 6952, 1512, 1144, 263, 5346, 575, 39, 6959, 261, 575, 6990, 5746, 721, 2900,
- 113, 5322, 5131, 1, 6952, 1, 1, 6899, 1, 5322, 5131, 2865, 7197, 2980, 3001, 3497, 7246, 7323, 7324,
- 7240, 7247, 7243, 7219, 7245, 7244, 7241, 7242, 7220, 379, 6560, 6557, 4415, 864, 365, 641, 365, 2680,
- 3227, 7487, 6952, 6902, 6902, 263, 6902, 263, 263, 263, 263, 263, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 10736, 1, 1, 1, 1, 1, 1, 6952, 6560, 6557, 6952, 6990, 263, 333, 6966, 6967, 142, 570, 5322,
- 5131, 6952, 6952, 1512, 6952, 1, 5769, 1, 2495, 1, 1, 6899, 1, 5792, 397, 2865, 7197, 2980, 382, 3497,
- 7246, 7323, 7324, 7240, 7247, 7243, 7219, 7245, 7244, 7241, 7242, 7220, 379, 39, 39, 4433, 6990, 365,
- 6952, 365, 6952, 6952, 7487, 6952, 6902, 6902, 263, 6902, 263, 263, 263, 263, 263, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 10736, 1, 1, 1, 1, 1, 1, 397, 1512, 6952, 6966, 6967, 263, 4340, 4366,
- 6952, 6560, 6557, 6964, 864, 1, 6718, 1512, 2680, 6952, 1192, 1, 3342, 1, 1, 6899, 1, 397, 6960, 2865,
- 7197, 2980, 6952, 3497, 1, 6523, 6519, 3360, 864, 5654, 5579, 5677, 2680, 112, 6584, 6611, 6617, 6590,
- 6593, 6605, 6602, 6608, 6599, 6596, 6587, 6614, 7487, 1, 6523, 6519, 6861, 6516, 6952, 6864, 150, 6745,
- 6962, 2534, 5631, 5608, 5723, 5700, 6971, 6963, 1266, 979, 1297, 6973, 1065, 5861, 1108, 6974, 6972,
- 808, 6968, 6969, 6970, 474, 6952, 2999, 440, 6952, 6959, 1554, 320, 409, 6961, 6952, 551, 6855, 39, 39,
- 39, 6560, 6557, 4450, 864, 5654, 5579, 5677, 2680, 6870, 1030, 7251, 7249, 7258, 7257, 7253, 7254, 7252,
- 7255, 7256, 7259, 7250, 1, 6523, 6519, 655, 6516, 6858, 641, 120, 2680, 345, 5769, 119, 5631, 5608,
- 5723, 5700, 6971, 5792, 1266, 979, 1297, 6973, 1065, 5861, 1108, 6974, 6972, 808, 6968, 6969, 6970,
- 7428, 3907, 3867, 37, 6578, 6578, 1554, 7271, 345, 6952, 4633, 1339, 6952, 2947, 4633, 1339, 6554, 43,
- 6709, 6709, 6959, 39, 6560, 6557, 4450, 864, 5654, 5579, 5677, 2680, 6551, 1030, 7251, 7249, 7258, 7257,
- 7253, 7254, 7252, 7255, 7256, 7259, 7250, 327, 6966, 6967, 7422, 7423, 7424, 126, 6952, 10765, 10765,
- 3634, 148, 5631, 5608, 5723, 5700, 6971, 6988, 1266, 979, 1297, 6973, 1065, 5861, 1108, 6974, 6972, 808,
- 6968, 6969, 6970, 6706, 100, 7499, 6952, 6840, 6837, 1554, 174, 6560, 6557, 4450, 864, 5654, 5579, 5677,
- 2680, 6554, 1030, 7251, 7249, 7258, 7257, 7253, 7254, 7252, 7255, 7256, 7259, 7250, 4028, 36, 6884,
- 6881, 6988, 4109, 6952, 6952, 381, 99, 6581, 2065, 5631, 5608, 5723, 5700, 6971, 326, 1266, 979, 1297,
- 6973, 1065, 5861, 1108, 6974, 6972, 808, 6968, 6969, 6970, 6988, 4946, 6952, 1, 3974, 3947, 1554, 6952,
- 313, 4082, 4055, 6905, 6920, 39, 39, 39, 6560, 6557, 4450, 864, 5654, 5579, 5677, 2680, 6551, 1030,
- 7251, 7249, 7258, 7257, 7253, 7254, 7252, 7255, 7256, 7259, 7250, 1512, 3158, 3003, 45, 6846, 6846, 37,
- 6578, 6578, 6952, 6877, 6873, 5631, 5608, 5723, 5700, 6971, 10349, 1266, 979, 1297, 6973, 1065, 5861,
- 1108, 6974, 6972, 808, 6968, 6969, 6970, 75, 6952, 6952, 955, 6963, 7388, 1554, 1, 6523, 6519, 3360,
- 864, 5654, 5579, 5677, 2680, 6554, 6584, 6611, 6617, 6590, 6593, 6605, 6602, 6608, 6599, 6596, 6587,
- 6614, 6843, 6952, 1, 1601, 3503, 4433, 6988, 7014, 7015, 6952, 422, 6796, 5631, 5608, 5723, 5700, 6971,
- 147, 1266, 979, 1297, 6973, 1065, 5861, 1108, 6974, 6972, 808, 6968, 6969, 6970, 4191, 6952, 1, 6952,
- 6952, 1174, 1554, 7450, 7456, 7454, 128, 6952, 8, 39, 39, 6952, 6952, 10222, 9027, 6952, 6958, 6890, 37,
- 6966, 6966, 6966, 6966, 6966, 6962, 6966, 431, 1512, 6952, 6575, 422, 6952, 7448, 7449, 7479, 7480,
- 4109, 6962, 7457, 6799, 6966, 6966, 6966, 6966, 6966, 6966, 6966, 6966, 6966, 6966, 6966, 6966, 7459,
- 2336, 6961, 2402, 6952, 6952, 792, 4235, 4028, 3043, 7460, 3089, 669, 700, 7481, 6961, 7458, 6988, 6811,
- 4082, 4055, 6952, 6952, 6365, 6952, 4544, 6966, 6957, 1192, 6890, 6966, 794, 7470, 7469, 6966, 7475,
- 7476, 7482, 7473, 7474, 7453, 7455, 7477, 3974, 3947, 7451, 7452, 7478, 6952, 7463, 7464, 7465, 7461,
- 7462, 7471, 7472, 7467, 7466, 7468, 6952, 10650, 10591, 6952, 7483, 39, 6560, 6557, 4450, 864, 5654,
- 5579, 5677, 2680, 6956, 1030, 7251, 7249, 7258, 7257, 7253, 7254, 7252, 7255, 7256, 7259, 7250, 1, 1,
- 6219, 6952, 10650, 10591, 4466, 326, 1825, 1825, 6911, 6911, 5631, 5608, 5723, 5700, 6971, 6952, 1266,
- 979, 1297, 6973, 1065, 5861, 1108, 6974, 6972, 808, 6968, 6969, 6970, 1, 6523, 6519, 6787, 6516, 6733,
- 6748, 6736, 6745, 3097, 6584, 6611, 6617, 6590, 6593, 6605, 6602, 6608, 6599, 6596, 6587, 6614, 6914,
- 6914, 1, 404, 3576, 3576, 6952, 337, 463, 571, 6952, 6923, 6730, 6727, 6742, 6739, 6760, 7288, 6724,
- 6775, 6784, 6754, 6778, 6721, 6781, 6751, 6757, 6772, 6769, 6766, 6763, 7246, 7323, 7324, 7240, 7247,
- 7243, 7219, 7245, 7244, 7241, 7242, 7220, 6955, 6790, 6790, 39, 6560, 6557, 4450, 864, 5654, 5579, 5677,
- 2680, 6952, 1030, 7251, 7249, 7258, 7257, 7253, 7254, 7252, 7255, 7256, 7259, 7250, 2682, 6952, 6038,
- 593, 6952, 1415, 127, 6959, 1, 6952, 6952, 3391, 5631, 5608, 5723, 5700, 6971, 6962, 1266, 979, 1297,
- 6973, 1065, 5861, 1108, 6974, 6972, 808, 6968, 6969, 6970, 6952, 6952, 6952, 4187, 6324, 4250, 1554, 39,
- 6560, 6557, 4450, 864, 5654, 5579, 5677, 2680, 6961, 1030, 7251, 7249, 7258, 7257, 7253, 7254, 7252,
- 7255, 7256, 7259, 7250, 4028, 6952, 3585, 5032, 5439, 3703, 6952, 6952, 6952, 4466, 6814, 6952, 5631,
- 5608, 5723, 5700, 6971, 227, 1266, 979, 1297, 6973, 1065, 5861, 1108, 6974, 6972, 808, 6968, 6969, 6970,
- 6952, 6952, 1, 6335, 3974, 3947, 6952, 2267, 39, 6560, 6557, 3360, 864, 5654, 5579, 5677, 2680, 6952,
- 1030, 7251, 7249, 7258, 7257, 7253, 7254, 7252, 7255, 7256, 7259, 7250, 4109, 5471, 6952, 6952, 5932,
- 3487, 29, 48, 1, 6952, 4136, 6967, 5631, 5608, 5723, 5700, 6971, 224, 1266, 979, 1297, 6973, 1065, 5861,
- 1108, 6974, 6972, 808, 6968, 6969, 6970, 6946, 6952, 6952, 6952, 4082, 4055, 1554, 39, 6560, 6557, 3360,
- 864, 5654, 5579, 5677, 2680, 224, 1030, 7251, 7249, 7258, 7257, 7253, 7254, 7252, 7255, 7256, 7259,
- 7250, 1192, 6967, 461, 3340, 6952, 6952, 48, 430, 6952, 7345, 6966, 73, 5631, 5608, 5723, 5700, 6971,
- 459, 1266, 979, 1297, 6973, 1065, 5861, 1108, 6974, 6972, 808, 6968, 6969, 6970, 6952, 1, 6952, 6952,
- 6952, 483, 1554, 39, 6560, 6557, 4450, 864, 5654, 5579, 5677, 2680, 6952, 1030, 7251, 7249, 7258, 7257,
- 7253, 7254, 7252, 7255, 7256, 7259, 7250, 6966, 1192, 2993, 484, 582, 6896, 581, 402, 6952, 1830, 2626,
- 3719, 5631, 5608, 5723, 5700, 6971, 6952, 1266, 979, 1297, 6973, 1065, 5861, 1108, 6974, 6972, 808,
- 6968, 6969, 6970, 6952, 1, 6952, 4975, 6952, 6952, 1554, 39, 6560, 6557, 5525, 864, 5654, 5579, 5677,
- 2680, 647, 1030, 7251, 7249, 7258, 7257, 7253, 7254, 7252, 7255, 7256, 7259, 7250, 455, 2, 3288, 6952,
- 6952, 6952, 6952, 6952, 6952, 4180, 3496, 2428, 5631, 5608, 5723, 5700, 6971, 1462, 1266, 979, 1297,
- 6973, 1065, 5861, 1108, 6974, 6972, 808, 6968, 6969, 6970, 39, 6560, 6557, 4450, 864, 5654, 5579, 5677,
- 2680, 6952, 1030, 7251, 7249, 7258, 7257, 7253, 7254, 7252, 7255, 7256, 7259, 7250, 35, 6952, 37, 6952,
- 1, 6952, 3634, 6952, 6952, 6952, 6952, 6952, 5631, 5608, 5723, 5700, 6971, 3256, 1266, 979, 1297, 6973,
- 1065, 5861, 1108, 6974, 6972, 808, 6968, 6969, 6970, 39, 6560, 6557, 3360, 864, 5654, 5579, 5677, 2680,
- 344, 1030, 7251, 7249, 7258, 7257, 7253, 7254, 7252, 7255, 7256, 7259, 7250, 543, 6952, 6952, 6952,
- 6952, 3200, 6952, 6952, 6952, 6952, 6952, 6952, 5631, 5608, 5723, 5700, 6971, 3337, 1266, 979, 1297,
- 6973, 1065, 5861, 1108, 6974, 6972, 808, 6968, 6969, 6970, 39, 6560, 6557, 3360, 864, 5654, 5579, 5677,
- 2680, 541, 1030, 7251, 7249, 7258, 7257, 7253, 7254, 7252, 7255, 7256, 7259, 7250, 6952, 6952, 5883,
- 6952, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 5631, 5608, 5723, 5700, 6971, 6085, 1266, 979,
- 1297, 6973, 1065, 5861, 1108, 6974, 6972, 808, 6968, 6969, 6970, 39, 6560, 6557, 4450, 864, 5654, 5579,
- 5677, 2680, 6952, 1030, 7251, 7249, 7258, 7257, 7253, 7254, 7252, 7255, 7256, 7259, 7250, 6952, 1, 6952,
- 6952, 6209, 6952, 6952, 6952, 1, 6952, 6958, 4433, 5631, 5608, 5723, 5700, 6971, 375, 1266, 979, 1297,
- 6973, 1065, 5861, 1108, 6974, 6972, 808, 6968, 6969, 6970, 6952, 6560, 6557, 6952, 6990, 6952, 6952,
- 6952, 6952, 6952, 701, 7251, 7249, 7258, 7257, 7253, 7254, 7252, 7255, 7256, 7259, 7250, 7246, 7323,
- 7324, 7240, 7247, 7243, 7219, 7245, 7244, 7241, 7242, 7220, 6952, 1, 6952, 1512, 6952, 6952, 4720, 375,
- 6957, 4782, 589, 375, 4844, 6952, 3337, 375, 275, 6699, 6695, 7385, 6703, 1442, 7386, 6952, 7387, 6952,
- 701, 6686, 6692, 6665, 6668, 6680, 6677, 6683, 6674, 6671, 6662, 6689, 6641, 6635, 6632, 6659, 6638,
- 6650, 6629, 6644, 6647, 6656, 6653, 6626, 1, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 196, 6952,
- 6952, 6952, 6952, 6952, 6952, 6966, 6967, 6952, 7385, 3013, 1442, 7386, 589, 7387, 876, 7251, 7249,
- 7258, 7257, 7253, 7254, 7252, 7255, 7256, 7259, 7250, 7246, 7323, 7324, 7240, 7247, 7243, 7219, 7245,
- 7244, 7241, 7242, 7220, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 6952,
- 6952, 6952, 275, 6820, 6817, 545, 7385, 6952, 1442, 7386, 196, 7387, 876, 6686, 6692, 6665, 6668, 6680,
- 6677, 6683, 6674, 6671, 6662, 6689, 6641, 6635, 6632, 6659, 6638, 6650, 6629, 6644, 6647, 6656, 6653,
- 6626, 6952, 6952, 6952, 29, 422, 422, 6808, 422, 6808, 422, 6808, 422, 6808, 6952, 6952, 6952, 6952,
- 6952, 6952, 7385, 6952, 1442, 7386, 572, 7387, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422,
- 422, 6952, 6952, 1109, 6952, 6952, 6808, 6952, 6952, 7246, 7323, 7324, 7240, 7247, 7243, 7219, 7245,
- 7244, 7241, 7242, 7220, 6542, 6952, 6952, 6952, 6952, 6952, 6808, 32, 423, 423, 6805, 423, 6805, 423,
- 6805, 423, 6805, 6952, 6808, 6952, 6952, 6952, 6952, 6952, 6952, 573, 6952, 6952, 6952, 423, 423, 423,
- 423, 423, 423, 423, 423, 423, 423, 423, 423, 6952, 6952, 6952, 6952, 6952, 6805, 7246, 7323, 7324, 7240,
- 7247, 7243, 7219, 7245, 7244, 7241, 7242, 7220, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 6805,
- 6952, 569, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 6952, 6805, 7251, 7249, 7258, 7257, 7253,
- 7254, 7252, 7255, 7256, 7259, 7250, 7246, 7323, 7324, 7240, 7247, 7243, 7219, 7245, 7244, 7241, 7242,
- 7220 };
- }
-
- public final static char termAction[] = TermAction.termAction;
-
- @Override
- public final int termAction(int index) {
- return termAction[index];
- }
-
- public interface Asb {
- public final static char asb[] = { 0, 436, 1, 10, 716, 536, 177, 558, 558, 650, 542, 558, 542, 3, 3, 503, 140,
- 536, 542, 348, 234, 68, 68, 555, 95, 296, 234, 558, 558, 856, 558, 68, 542, 720, 939, 788, 256, 234,
- 503, 647, 806, 1046, 856, 856, 856, 856, 718, 1046, 487, 179, 504, 504, 504, 504, 504, 504, 504, 504,
- 504, 560, 566, 571, 568, 575, 573, 580, 578, 582, 581, 583, 299, 584, 542, 349, 553, 551, 68, 68, 716,
- 928, 939, 806, 939, 242, 939, 250, 939, 923, 718, 542, 296, 296, 68, 17, 540, 296, 599, 446, 647, 140,
- 487, 95, 95, 95, 95, 542, 24, 234, 234, 225, 487, 1006, 94, 788, 487, 560, 787, 787, 24, 503, 504, 504,
- 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 503, 503, 503, 503,
- 503, 503, 503, 503, 503, 503, 503, 503, 504, 17, 349, 551, 1004, 96, 712, 487, 981, 979, 986, 984, 988,
- 987, 989, 990, 1003, 1004, 555, 351, 244, 237, 245, 718, 542, 542, 790, 1004, 720, 542, 503, 140, 234,
- 234, 1004, 1004, 1004, 1004, 790, 234, 504, 716, 884, 874, 873, 608, 946, 946, 718, 179, 296, 94, 503,
- 234, 539, 541, 539, 234, 296, 568, 568, 566, 566, 566, 573, 573, 573, 573, 571, 571, 578, 575, 575, 581,
- 580, 582, 137, 583, 551, 551, 689, 700, 700, 700, 700, 684, 718, 737, 504, 504, 504, 504, 504, 504, 504,
- 504, 504, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 504, 487, 351, 542, 805, 545, 742,
- 790, 806, 453, 542, 790, 542, 17, 646, 1046, 1046, 1046, 1046, 542, 542, 225, 234, 886, 888, 542, 788,
- 504, 95, 564, 190, 234, 542, 541, 788, 503, 551, 550, 542, 504, 979, 979, 979, 984, 981, 981, 987, 986,
- 988, 137, 989, 647, 542, 351, 137, 245, 856, 792, 1087, 127, 351, 805, 743, 805, 805, 790, 453, 453,
- 542, 542, 644, 139, 503, 503, 503, 503, 1046, 1046, 234, 878, 866, 877, 888, 790, 540, 234, 564, 716,
- 720, 542, 540, 551, 790, 732, 503, 788, 806, 806, 1004, 856, 539, 804, 129, 1046, 805, 805, 805, 805,
- 542, 453, 646, 796, 646, 644, 644, 234, 234, 234, 234, 24, 24, 722, 503, 875, 875, 882, 716, 817, 234,
- 542, 564, 565, 564, 503, 190, 444, 560, 720, 542, 540, 748, 806, 401, 367, 540, 805, 805, 536, 604, 504,
- 137, 12, 850, 888, 805, 805, 809, 646, 647, 504, 542, 234, 234, 722, 503, 503, 886, 866, 722, 619, 564,
- 24, 504, 296, 444, 605, 748, 748, 66, 1048, 340, 1046, 245, 1086, 367, 540, 805, 806, 718, 129, 504,
- 504, 888, 858, 395, 810, 542, 647, 724, 722, 565, 234, 296, 647, 748, 748, 400, 340, 66, 862, 718, 1003,
- 856, 184, 184, 605, 806, 467, 858, 542, 1046, 234, 809, 542, 718, 718, 542, 724, 724, 647, 401, 748,
- 605, 604, 234, 718, 542, 367, 401, 367, 1002, 1002, 794, 468, 718, 542, 24, 801, 542, 542, 542, 1046,
- 724, 748, 536, 605, 542, 542, 367, 95, 95, 794, 467, 137, 504, 137, 605, 466, 1046, 1046, 1046, 468,
- 1046, 542, 307, 605, 605, 542, 806, 234, 801, 542, 542, 889, 647, 542, 605, 1003, 459, 1046, 459, 468,
- 137, 468, 487, 487, 485, 466, 487, 605, 605, 15, 465, 803, 233, 605, 125, 817, 468, 234, 536, 234, 485,
- 340, 1046, 234, 794, 803, 95, 184, 234, 234, 632, 468, 15, 468, 605, 340, 503, 468, 465, 1002, 806, 806,
- 1038, 503, 466, 24, 605, 234, 539, 468, 234, 605, 468 };
- }
-
- public final static char asb[] = Asb.asb;
-
- @Override
- public final int asb(int index) {
- return asb[index];
- }
-
- public interface Asr {
- public final static byte asr[] = { 0, 120, 0, 74, 64, 71, 97, 72, 69, 60, 120, 3, 9, 68, 39, 70, 0, 8, 5, 6, 1,
- 2, 57, 0, 9, 72, 11, 12, 41, 66, 13, 42, 43, 14, 15, 16, 67, 8, 44, 17, 18, 45, 46, 47, 59, 48, 49, 10,
- 19, 20, 21, 50, 51, 52, 1, 2, 3, 36, 37, 7, 5, 34, 35, 6, 40, 4, 38, 0, 41, 66, 42, 43, 67, 8, 44, 45,
- 46, 47, 59, 48, 49, 50, 51, 52, 38, 36, 37, 7, 5, 34, 35, 6, 40, 64, 3, 4, 10, 1, 2, 55, 56, 58, 12, 21,
- 11, 17, 15, 16, 18, 19, 14, 13, 20, 25, 31, 32, 27, 30, 29, 22, 26, 23, 24, 28, 33, 53, 0, 39, 9, 3, 8,
- 6, 7, 5, 4, 1, 2, 71, 0, 73, 59, 36, 37, 7, 5, 34, 35, 40, 45, 3, 4, 50, 51, 52, 38, 48, 43, 47, 12, 21,
- 11, 17, 15, 16, 18, 19, 14, 13, 20, 10, 42, 46, 44, 41, 49, 69, 9, 8, 6, 1, 2, 67, 66, 0, 64, 70, 68, 1,
- 2, 0, 98, 91, 34, 35, 99, 100, 86, 87, 54, 89, 90, 92, 93, 94, 95, 96, 101, 102, 71, 97, 70, 103, 104,
- 105, 106, 107, 108, 109, 110, 111, 112, 118, 73, 39, 120, 64, 1, 2, 7, 5, 4, 3, 60, 68, 72, 9, 0, 57, 1,
- 2, 4, 0, 57, 4, 71, 1, 2, 69, 9, 0, 4, 9, 69, 1, 2, 0, 66, 67, 3, 10, 42, 46, 44, 41, 49, 12, 21, 11,
- 17, 15, 16, 18, 19, 14, 13, 20, 50, 51, 52, 38, 48, 43, 47, 6, 8, 4, 36, 37, 7, 5, 34, 35, 40, 45, 1, 2,
- 118, 9, 0, 64, 71, 97, 68, 118, 72, 73, 120, 11, 12, 41, 66, 13, 42, 43, 14, 15, 16, 67, 44, 17, 18, 45,
- 46, 47, 59, 48, 49, 10, 19, 20, 21, 50, 51, 52, 38, 36, 37, 34, 35, 40, 9, 39, 6, 8, 1, 2, 4, 3, 7, 5,
- 0, 88, 61, 8, 114, 115, 116, 63, 9, 3, 7, 5, 6, 71, 73, 39, 62, 25, 11, 12, 53, 23, 13, 55, 26, 27, 14,
- 28, 29, 15, 16, 30, 31, 17, 18, 32, 56, 57, 33, 10, 58, 19, 20, 24, 21, 1, 2, 4, 22, 0, 69, 53, 23, 13,
- 55, 26, 14, 28, 29, 15, 16, 30, 31, 17, 18, 32, 56, 33, 10, 58, 19, 22, 20, 24, 21, 12, 11, 25, 9, 39,
- 63, 61, 65, 88, 27, 57, 7, 5, 8, 3, 62, 1, 2, 4, 6, 0, 9, 71, 118, 72, 39, 68, 0, 1, 2, 9, 68, 73, 0,
- 88, 114, 115, 116, 57, 71, 113, 121, 73, 62, 74, 63, 61, 65, 76, 78, 84, 82, 75, 80, 81, 83, 85, 69, 77,
- 79, 39, 9, 25, 53, 23, 55, 26, 27, 28, 29, 30, 31, 32, 56, 33, 58, 22, 24, 59, 66, 67, 10, 42, 46, 44,
- 41, 49, 12, 21, 11, 17, 15, 16, 18, 19, 14, 13, 20, 50, 51, 52, 38, 48, 43, 47, 36, 37, 34, 35, 40, 45,
- 7, 5, 3, 4, 8, 6, 1, 2, 0, 4, 9, 71, 69, 0, 59, 23, 24, 8, 6, 1, 2, 4, 74, 69, 119, 117, 36, 37, 60, 3,
- 98, 91, 5, 99, 100, 34, 35, 87, 86, 54, 89, 90, 92, 93, 7, 94, 95, 96, 64, 97, 72, 120, 70, 103, 104,
- 105, 106, 107, 108, 109, 110, 111, 112, 71, 118, 73, 101, 102, 68, 39, 9, 0, 11, 12, 13, 14, 15, 16, 17,
- 18, 19, 20, 21, 25, 23, 26, 27, 28, 29, 30, 31, 32, 33, 22, 24, 39, 9, 72, 8, 1, 2, 60, 3, 7, 5, 6, 4,
- 0, 39, 120, 68, 9, 73, 0, 67, 66, 34, 35, 99, 100, 94, 95, 6, 40, 70, 54, 106, 107, 103, 104, 105, 111,
- 110, 112, 87, 86, 108, 109, 92, 93, 89, 90, 96, 101, 36, 37, 91, 117, 10, 55, 53, 56, 58, 12, 21, 11,
- 17, 15, 16, 18, 19, 14, 13, 20, 25, 31, 32, 27, 30, 29, 22, 26, 23, 24, 28, 33, 64, 68, 3, 60, 7, 5, 1,
- 2, 4, 0, 23, 24, 59, 9, 64, 97, 70, 68, 72, 0, 72, 9, 87, 86, 0, 54, 64, 89, 90, 0, 4, 9, 71, 69, 54, 0,
- 65, 25, 11, 12, 53, 23, 13, 55, 26, 88, 27, 14, 28, 29, 15, 16, 30, 61, 31, 17, 18, 32, 56, 33, 10, 58,
- 19, 63, 22, 20, 24, 21, 9, 3, 7, 5, 73, 39, 62, 4, 8, 6, 1, 2, 57, 0, 113, 0, 9, 68, 73, 70, 0, 23, 24,
- 59, 74, 71, 69, 9, 0, 22, 1, 2, 4, 114, 115, 116, 0, 25, 11, 12, 53, 23, 13, 55, 26, 27, 14, 28, 29, 15,
- 16, 30, 31, 17, 18, 32, 56, 33, 10, 58, 19, 22, 20, 24, 21, 1, 2, 4, 97, 0, 71, 9, 60, 70, 68, 39, 54,
- 0, 9, 69, 68, 0, 9, 69, 70, 0, 7, 5, 8, 6, 4, 1, 2, 3, 60, 64, 70, 68, 9, 72, 97, 0, 6, 8, 3, 60, 5, 7,
- 97, 25, 11, 12, 53, 23, 13, 55, 26, 27, 14, 28, 29, 15, 16, 30, 31, 17, 18, 32, 56, 33, 10, 58, 19, 22,
- 20, 24, 21, 1, 2, 4, 72, 9, 0, 10, 55, 53, 56, 58, 12, 21, 11, 17, 15, 16, 18, 19, 14, 13, 20, 74, 71,
- 97, 118, 73, 69, 120, 8, 31, 32, 33, 22, 24, 1, 2, 30, 29, 28, 27, 26, 6, 4, 23, 25, 119, 98, 117, 91,
- 36, 37, 34, 35, 99, 100, 9, 60, 3, 5, 72, 39, 87, 86, 54, 89, 90, 92, 93, 7, 94, 95, 96, 101, 102, 103,
- 104, 105, 106, 107, 108, 109, 110, 111, 112, 70, 68, 64, 0, 66, 67, 36, 37, 34, 35, 40, 45, 50, 51, 52,
- 38, 48, 43, 47, 12, 21, 11, 17, 15, 16, 18, 19, 14, 13, 20, 10, 42, 46, 44, 41, 49, 7, 5, 60, 8, 6, 4,
- 1, 2, 3, 0, 53, 23, 13, 55, 26, 14, 28, 29, 15, 16, 30, 31, 17, 18, 32, 56, 33, 58, 19, 22, 20, 24, 21,
- 12, 11, 25, 9, 3, 7, 5, 39, 63, 65, 88, 27, 62, 54, 57, 61, 8, 1, 2, 6, 4, 10, 0 };
- }
-
- public final static byte asr[] = Asr.asr;
-
- @Override
- public final int asr(int index) {
- return asr[index];
- }
-
- public interface Nasb {
- public final static char nasb[] = { 0, 200, 12, 42, 193, 200, 260, 12, 12, 142, 274, 12, 185, 13, 13, 44, 68,
- 256, 185, 12, 226, 205, 205, 51, 5, 104, 226, 12, 12, 12, 12, 205, 262, 12, 12, 32, 99, 226, 70, 205,
- 233, 12, 12, 12, 12, 12, 11, 12, 161, 185, 70, 70, 270, 70, 70, 70, 70, 70, 70, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 70, 12, 185, 195, 195, 195, 34, 34, 193, 241, 242, 233, 242, 87, 242, 92, 242, 235,
- 10, 185, 104, 104, 34, 19, 260, 104, 12, 12, 140, 205, 161, 303, 303, 303, 303, 185, 25, 226, 226, 208,
- 1, 70, 28, 32, 161, 12, 124, 124, 25, 162, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
- 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 162, 70, 79, 12, 205, 12, 247, 208, 156, 12,
- 12, 12, 12, 12, 12, 12, 12, 12, 12, 214, 205, 152, 11, 108, 11, 185, 262, 12, 12, 12, 262, 70, 68, 226,
- 226, 12, 12, 12, 12, 76, 226, 70, 193, 207, 13, 13, 12, 12, 12, 10, 185, 104, 303, 44, 226, 259, 185,
- 259, 226, 104, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 195, 97, 241,
- 242, 242, 242, 242, 287, 10, 12, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
- 70, 70, 162, 70, 34, 295, 153, 95, 95, 12, 244, 233, 205, 244, 31, 153, 19, 140, 12, 12, 12, 12, 153,
- 262, 212, 226, 264, 205, 185, 32, 70, 303, 205, 84, 226, 185, 149, 32, 70, 205, 97, 185, 70, 12, 12, 12,
- 12, 12, 12, 12, 12, 12, 12, 12, 140, 185, 175, 12, 64, 12, 12, 47, 56, 295, 95, 95, 205, 205, 31, 205,
- 275, 262, 153, 133, 67, 162, 162, 162, 162, 12, 12, 226, 12, 198, 12, 267, 30, 153, 226, 49, 214, 12,
- 274, 153, 97, 31, 226, 70, 32, 233, 147, 12, 12, 11, 205, 188, 12, 205, 205, 90, 90, 153, 275, 111, 12,
- 12, 133, 12, 226, 226, 226, 226, 25, 25, 205, 70, 12, 12, 197, 193, 267, 226, 153, 205, 117, 12, 162,
- 214, 150, 12, 12, 153, 260, 205, 233, 282, 205, 244, 205, 122, 256, 175, 70, 12, 106, 12, 205, 90, 90,
- 165, 111, 140, 70, 275, 226, 226, 97, 70, 70, 264, 254, 205, 12, 49, 25, 70, 104, 150, 175, 277, 205,
- 12, 282, 57, 12, 146, 47, 267, 260, 122, 119, 15, 200, 70, 70, 267, 12, 11, 113, 244, 140, 205, 97, 117,
- 226, 104, 140, 282, 277, 232, 188, 12, 12, 11, 12, 12, 82, 82, 175, 119, 139, 12, 244, 12, 226, 135,
- 244, 11, 11, 262, 23, 205, 140, 282, 205, 175, 12, 226, 11, 244, 267, 282, 205, 12, 12, 205, 218, 15,
- 262, 25, 205, 262, 244, 244, 12, 23, 277, 200, 175, 244, 65, 267, 303, 303, 54, 228, 12, 70, 12, 175,
- 12, 12, 12, 12, 229, 12, 275, 173, 175, 175, 275, 130, 226, 97, 262, 262, 224, 140, 65, 175, 12, 115,
- 12, 12, 229, 12, 229, 169, 169, 180, 12, 169, 175, 175, 12, 205, 205, 226, 175, 12, 303, 229, 226, 200,
- 226, 302, 205, 12, 226, 54, 23, 303, 82, 226, 226, 205, 229, 12, 229, 175, 200, 162, 229, 115, 12, 130,
- 130, 198, 70, 12, 177, 175, 226, 259, 229, 226, 175, 229 };
- }
-
- public final static char nasb[] = Nasb.nasb;
-
- @Override
- public final int nasb(int index) {
- return nasb[index];
- }
-
- public interface Nasr {
- public final static char nasr[] = { 0, 3, 13, 10, 9, 139, 138, 112, 137, 136, 2, 4, 0, 79, 0, 186, 4, 185, 0,
- 76, 155, 154, 0, 143, 0, 5, 104, 0, 192, 0, 153, 2, 76, 0, 4, 10, 9, 2, 13, 129, 5, 0, 201, 0, 5, 28, 0,
- 169, 0, 160, 0, 5, 212, 0, 175, 0, 39, 4, 2, 9, 10, 5, 171, 0, 142, 116, 0, 80, 147, 42, 4, 10, 9, 2,
- 13, 0, 153, 76, 0, 76, 54, 0, 123, 0, 5, 194, 0, 165, 205, 0, 125, 0, 165, 200, 0, 124, 0, 51, 0, 13, 2,
- 9, 10, 4, 93, 0, 208, 0, 42, 1, 0, 166, 0, 210, 0, 131, 0, 158, 0, 42, 174, 0, 173, 0, 4, 2, 9, 10, 156,
- 0, 42, 66, 0, 176, 0, 4, 114, 182, 0, 5, 80, 0, 5, 52, 213, 0, 1, 142, 0, 2, 133, 0, 44, 2, 3, 0, 13, 2,
- 9, 10, 4, 52, 5, 37, 0, 4, 114, 209, 0, 5, 52, 115, 0, 5, 37, 39, 0, 5, 195, 0, 37, 5, 27, 198, 0, 44,
- 2, 0, 5, 10, 9, 2, 75, 4, 97, 54, 0, 30, 100, 99, 75, 4, 2, 9, 10, 5, 0, 30, 99, 100, 5, 0, 100, 99, 54,
- 4, 70, 0, 5, 50, 42, 37, 196, 0, 52, 5, 30, 0, 80, 37, 50, 81, 5, 42, 0, 2, 4, 112, 109, 110, 111, 13,
- 71, 0, 2, 69, 0, 139, 214, 138, 112, 137, 136, 0, 100, 99, 54, 75, 70, 4, 10, 9, 2, 0, 54, 4, 97, 27, 5,
- 0, 4, 10, 9, 13, 3, 1, 0, 134, 5, 50, 92, 0, 5, 50, 92, 94, 0, 112, 71, 13, 109, 110, 111, 190, 0, 5,
- 50, 92, 114, 48, 4, 0, 197, 5, 52, 0 };
- }
-
- public final static char nasr[] = Nasr.nasr;
-
- @Override
- public final int nasr(int index) {
- return nasr[index];
- }
-
- public interface TerminalIndex {
- public final static char terminalIndex[] = { 0, 113, 114, 2, 31, 10, 13, 9, 79, 115, 100, 48, 52, 60, 68, 74,
- 75, 86, 87, 102, 105, 107, 104, 54, 106, 47, 64, 66, 70, 73, 76, 83, 89, 98, 11, 12, 7, 8, 112, 120, 14,
- 55, 61, 67, 84, 88, 90, 94, 97, 99, 109, 110, 111, 53, 19, 63, 91, 93, 101, 95, 1, 77, 122, 103, 20, 46,
- 58, 78, 44, 121, 33, 30, 118, 119, 96, 108, 49, 50, 56, 57, 59, 69, 71, 72, 85, 92, 17, 18, 65, 21, 22,
- 6, 23, 24, 25, 26, 27, 32, 4, 15, 16, 28, 29, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 51, 80, 81, 82, 5,
- 117, 3, 123, 62, 116 };
- }
-
- public final static char terminalIndex[] = TerminalIndex.terminalIndex;
-
- @Override
- public final int terminalIndex(int index) {
- return terminalIndex[index];
- }
-
- public interface NonterminalIndex {
- public final static char nonterminalIndex[] = { 0, 130, 135, 136, 0, 0, 134, 0, 0, 237, 243, 133, 0, 143, 0,
- 132, 0, 0, 142, 148, 0, 0, 149, 158, 159, 160, 161, 188, 151, 0, 126, 162, 141, 163, 164, 165, 166, 131,
- 167, 128, 168, 0, 129, 138, 137, 170, 169, 171, 185, 0, 0, 195, 152, 172, 0, 173, 0, 0, 0, 0, 0, 174,
- 175, 176, 0, 177, 180, 212, 0, 0, 155, 194, 0, 0, 209, 213, 0, 145, 0, 214, 127, 179, 0, 0, 0, 0, 0, 0,
- 183, 0, 0, 0, 0, 125, 186, 0, 0, 210, 216, 217, 218, 0, 220, 157, 0, 146, 0, 0, 215, 197, 198, 199, 201,
- 227, 228, 182, 204, 206, 0, 207, 0, 0, 219, 0, 0, 0, 0, 248, 0, 251, 0, 252, 0, 147, 187, 189, 190, 191,
- 192, 196, 200, 203, 0, 0, 222, 225, 0, 0, 0, 246, 0, 247, 0, 0, 139, 140, 144, 0, 0, 154, 156, 0, 178,
- 0, 193, 0, 0, 0, 202, 0, 205, 211, 0, 0, 223, 224, 0, 0, 229, 232, 0, 234, 236, 0, 240, 241, 242, 245,
- 0, 0, 249, 124, 0, 150, 153, 0, 181, 0, 184, 0, 0, 208, 221, 226, 0, 0, 230, 231, 233, 235, 0, 238, 239,
- 244, 250, 253, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static char nonterminalIndex[] = NonterminalIndex.nonterminalIndex;
-
- @Override
- public final int nonterminalIndex(int index) {
- return nonterminalIndex[index];
- }
-
- public interface ScopePrefix {
- public final static char scopePrefix[] = { 172, 324, 608, 627, 317, 332, 559, 575, 586, 597, 372, 280, 294, 311,
- 344, 55, 305, 392, 430, 180, 616, 502, 20, 33, 64, 84, 93, 98, 103, 143, 208, 339, 350, 20, 467, 157,
- 286, 300, 530, 40, 157, 382, 20, 635, 40, 230, 259, 1, 14, 27, 74, 89, 119, 27, 361, 365, 448, 495, 524,
- 551, 555, 645, 649, 653, 110, 7, 110, 410, 426, 439, 460, 479, 543, 129, 129, 245, 439, 566, 582, 593,
- 604, 220, 513, 69, 69, 169, 235, 238, 69, 254, 275, 238, 238, 69, 369, 492, 499, 169, 69, 668, 123, 355,
- 414, 454, 486, 472, 69, 355, 401, 190, 117, 452, 657, 664, 657, 664, 78, 420, 150, 117, 117, 264 };
- }
-
- public final static char scopePrefix[] = ScopePrefix.scopePrefix;
-
- @Override
- public final int scopePrefix(int index) {
- return scopePrefix[index];
- }
-
- public interface ScopeSuffix {
- public final static char scopeSuffix[] = { 18, 148, 5, 5, 148, 148, 5, 5, 5, 5, 379, 148, 108, 148, 25, 61, 291,
- 398, 436, 186, 80, 508, 25, 38, 38, 38, 72, 72, 108, 148, 213, 31, 31, 25, 5, 162, 291, 114, 535, 51,
- 165, 387, 622, 640, 45, 224, 224, 5, 18, 31, 5, 72, 108, 31, 108, 108, 148, 257, 5, 5, 5, 5, 5, 257,
- 666, 11, 114, 379, 379, 379, 464, 483, 535, 133, 138, 249, 443, 570, 570, 570, 570, 224, 517, 72, 72, 5,
- 5, 241, 243, 257, 5, 278, 278, 243, 108, 5, 257, 5, 528, 5, 126, 358, 417, 457, 489, 475, 547, 538, 404,
- 193, 108, 108, 659, 659, 661, 661, 80, 422, 152, 215, 200, 266 };
- }
-
- public final static char scopeSuffix[] = ScopeSuffix.scopeSuffix;
-
- @Override
- public final int scopeSuffix(int index) {
- return scopeSuffix[index];
- }
-
- public interface ScopeLhs {
- public final static char scopeLhs[] = { 48, 111, 18, 18, 91, 111, 18, 18, 18, 18, 84, 96, 49, 91, 110, 89, 59,
- 84, 83, 48, 18, 20, 190, 3, 7, 8, 182, 182, 178, 109, 48, 110, 110, 140, 45, 146, 60, 49, 156, 150, 146,
- 84, 18, 18, 150, 101, 172, 152, 87, 190, 185, 182, 178, 140, 199, 57, 66, 160, 19, 18, 18, 18, 18, 18,
- 12, 131, 178, 84, 83, 83, 64, 41, 156, 113, 113, 70, 83, 18, 18, 18, 18, 101, 20, 186, 182, 201, 99,
- 108, 68, 79, 67, 171, 88, 140, 85, 161, 160, 192, 156, 17, 178, 140, 115, 82, 22, 45, 156, 156, 84, 48,
- 178, 78, 154, 44, 154, 44, 185, 115, 109, 48, 48, 172 };
- }
-
- public final static char scopeLhs[] = ScopeLhs.scopeLhs;
-
- @Override
- public final int scopeLhs(int index) {
- return scopeLhs[index];
- }
-
- public interface ScopeLa {
- public final static byte scopeLa[] = { 113, 73, 72, 72, 73, 73, 72, 72, 72, 72, 72, 73, 39, 73, 1, 64, 1, 72,
- 121, 69, 3, 72, 1, 64, 64, 64, 1, 1, 39, 73, 69, 1, 1, 1, 72, 73, 1, 1, 4, 64, 68, 39, 1, 1, 64, 72, 72,
- 72, 113, 1, 72, 1, 39, 1, 39, 39, 73, 118, 72, 72, 72, 72, 72, 118, 1, 72, 1, 72, 72, 72, 71, 71, 4, 1,
- 1, 5, 72, 64, 64, 64, 64, 72, 3, 1, 1, 72, 72, 3, 1, 118, 72, 1, 1, 1, 39, 72, 118, 72, 6, 72, 1, 57,
- 70, 71, 72, 64, 1, 57, 75, 74, 39, 39, 4, 4, 4, 4, 3, 1, 69, 1, 1, 3 };
- }
-
- public final static byte scopeLa[] = ScopeLa.scopeLa;
-
- @Override
- public final int scopeLa(int index) {
- return scopeLa[index];
- }
-
- public interface ScopeStateSet {
- public final static char scopeStateSet[] = { 67, 136, 286, 286, 89, 136, 286, 286, 286, 286, 77, 91, 67, 89,
- 136, 89, 69, 77, 77, 67, 286, 286, 100, 215, 261, 261, 52, 52, 64, 136, 67, 136, 136, 138, 111, 373, 69,
- 67, 103, 48, 373, 77, 286, 286, 48, 146, 61, 24, 77, 100, 28, 52, 64, 138, 22, 69, 31, 58, 286, 286,
- 286, 286, 286, 286, 265, 6, 64, 77, 77, 77, 119, 346, 103, 136, 136, 180, 77, 286, 286, 286, 286, 146,
- 286, 28, 52, 196, 146, 148, 198, 142, 198, 61, 203, 138, 77, 55, 58, 106, 103, 286, 64, 138, 1, 77, 287,
- 111, 103, 103, 77, 67, 64, 11, 108, 155, 108, 155, 28, 1, 136, 67, 67, 61 };
- }
-
- public final static char scopeStateSet[] = ScopeStateSet.scopeStateSet;
-
- @Override
- public final int scopeStateSet(int index) {
- return scopeStateSet[index];
- }
-
- public interface ScopeRhs {
- public final static char scopeRhs[] = { 0, 338, 3, 59, 0, 126, 0, 337, 3, 113, 0, 126, 180, 0, 127, 188, 74, 0,
- 224, 0, 198, 166, 126, 10, 0, 136, 0, 166, 126, 10, 0, 135, 0, 270, 127, 54, 124, 0, 20, 0, 309, 127,
- 54, 57, 0, 20, 53, 0, 33, 132, 0, 20, 53, 0, 0, 309, 127, 54, 57, 214, 0, 20, 186, 0, 270, 127, 54, 132,
- 0, 191, 126, 0, 141, 0, 226, 3, 308, 0, 308, 0, 2, 0, 126, 0, 270, 127, 54, 131, 0, 191, 126, 236, 0,
- 191, 126, 22, 236, 0, 191, 126, 332, 22, 0, 128, 198, 166, 126, 0, 128, 0, 198, 166, 126, 0, 134, 128,
- 0, 172, 0, 328, 127, 172, 0, 127, 172, 0, 230, 128, 0, 166, 327, 234, 0, 136, 0, 0, 0, 0, 135, 0, 0, 0,
- 0, 326, 127, 164, 235, 0, 127, 0, 235, 0, 129, 0, 0, 127, 0, 325, 127, 164, 269, 0, 127, 0, 0, 44, 127,
- 0, 0, 150, 3, 0, 127, 296, 295, 127, 74, 293, 172, 0, 295, 127, 74, 293, 172, 0, 223, 0, 224, 0, 293,
- 172, 0, 96, 0, 0, 223, 0, 224, 0, 211, 96, 0, 0, 223, 0, 224, 0, 295, 127, 293, 172, 0, 223, 0, 211, 0,
- 0, 223, 0, 242, 127, 3, 0, 126, 0, 0, 0, 0, 0, 242, 127, 3, 221, 0, 230, 3, 0, 219, 127, 0, 216, 0, 146,
- 0, 176, 166, 126, 0, 10, 0, 0, 0, 0, 225, 60, 0, 125, 0, 242, 127, 3, 189, 0, 189, 0, 2, 0, 0, 126, 0,
- 0, 0, 0, 0, 210, 3, 0, 209, 0, 254, 127, 164, 38, 27, 0, 191, 126, 61, 63, 0, 204, 128, 0, 128, 191,
- 126, 291, 63, 0, 191, 126, 291, 63, 0, 191, 126, 70, 123, 61, 0, 254, 127, 164, 264, 61, 0, 254, 127,
- 164, 264, 238, 61, 0, 288, 289, 127, 164, 123, 322, 55, 0, 288, 289, 127, 164, 322, 55, 0, 191, 126,
- 287, 55, 0, 198, 191, 126, 287, 234, 0, 191, 126, 287, 234, 0, 166, 126, 0, 93, 136, 0, 285, 127, 149,
- 0, 285, 127, 172, 0, 159, 84, 0, 317, 161, 319, 320, 3, 81, 0, 126, 179, 0, 319, 320, 3, 81, 0, 128, 0,
- 126, 179, 0, 159, 3, 75, 203, 80, 0, 126, 128, 0, 203, 80, 0, 108, 2, 131, 126, 128, 0, 237, 3, 75, 0,
- 210, 174, 0, 33, 169, 0, 174, 0, 183, 33, 169, 0, 237, 3, 85, 0, 203, 152, 237, 3, 83, 0, 62, 179, 0,
- 237, 3, 83, 0, 126, 179, 62, 179, 0, 318, 127, 164, 0, 159, 0, 225, 77, 0, 30, 179, 0, 159, 102, 185, 0,
- 30, 177, 0, 148, 64, 167, 3, 0, 167, 3, 0, 20, 161, 126, 0, 159, 102, 162, 0, 30, 169, 0, 199, 3, 0,
- 126, 149, 0, 226, 3, 0, 225, 60, 282, 0, 159, 60, 0, 199, 3, 314, 67, 126, 0, 126, 0, 0, 0, 0, 314, 67,
- 126, 0, 2, 145, 126, 0, 0, 0, 0, 199, 3, 45, 0, 147, 0, 125, 57, 166, 126, 0, 31, 147, 0, 93, 136, 31,
- 147, 0, 227, 191, 126, 0, 146, 31, 147, 0, 199, 3, 49, 0, 159, 3, 49, 0, 159, 3, 64, 199, 54, 41, 0,
- 199, 54, 41, 0, 20, 2, 131, 126, 0, 159, 3, 64, 199, 54, 44, 0, 199, 54, 44, 0, 159, 3, 64, 199, 54, 46,
- 0, 199, 54, 46, 0, 159, 3, 64, 199, 54, 42, 0, 199, 54, 42, 0, 226, 3, 125, 198, 166, 126, 10, 0, 125,
- 198, 166, 126, 10, 0, 136, 2, 0, 126, 0, 226, 3, 124, 275, 166, 126, 10, 0, 275, 166, 126, 10, 0, 135,
- 2, 0, 126, 0, 226, 3, 135, 0, 226, 3, 140, 0, 159, 60, 140, 0, 277, 0, 31, 0, 31, 139, 0, 165, 0, 134,
- 0, 159, 3, 0 };
- }
-
- public final static char scopeRhs[] = ScopeRhs.scopeRhs;
-
- @Override
- public final int scopeRhs(int index) {
- return scopeRhs[index];
- }
-
- public interface ScopeState {
- public final static char scopeState[] = { 0, 6316, 6335, 6324, 4187, 0, 3056, 1897, 2038, 1018, 0, 5234, 5172,
- 5030, 4968, 4906, 4844, 4782, 4720, 4658, 4545, 4480, 4250, 0, 1544, 1399, 678, 0, 2428, 647, 0, 5234,
- 5172, 2761, 2629, 5030, 4968, 4906, 4844, 4782, 4720, 2489, 4658, 4545, 4480, 2299, 2291, 0, 6210, 4466,
- 5989, 0, 2626, 3391, 0, 2641, 2112, 0, 2063, 969, 0, 745, 1038, 0, 4218, 6299, 0, 4218, 6299, 5977,
- 6219, 6206, 5916, 6136, 6108, 5896, 6038, 5234, 5172, 5030, 4968, 4906, 4844, 4782, 4720, 4658, 4545,
- 4480, 0, 4218, 6299, 5977, 6219, 6206, 5916, 6136, 6108, 5896, 6038, 0, 6221, 5370, 0, 2402, 2336, 0,
- 721, 0, 2078, 668, 0, 3446, 3546, 3673, 673, 3907, 3867, 3755, 3360, 2947, 1078, 2834, 2768, 2702, 2636,
- 2570, 2504, 2438, 2372, 2306, 2240, 2174, 925, 834, 764, 0, 6221, 5370, 599, 4680, 4181, 0, 1803, 996,
- 646, 627, 5386, 4456, 5118, 4415, 4197, 4433, 4491, 3246, 0, 5500, 5492, 5242, 5180, 5164, 5158, 4997,
- 4935, 5917, 5904, 5897, 5414, 4873, 4815, 4811, 4666, 5263, 2942, 5062, 4659, 4429, 4575, 3862, 4256, 0,
- 4163, 5386, 6253, 6051, 2818, 4853, 4400, 2816, 5445, 4456, 4730, 914, 4729, 1060, 2742, 0, 820, 0, 745,
- 5386, 6051, 1038, 1060, 5118, 5400, 2204, 5883, 4163, 794, 4415, 4400, 4197, 655, 5422, 0, 1746, 1699,
- 5500, 5492, 5242, 1652, 1457, 5180, 920, 5164, 5158, 4997, 4935, 1981, 1934, 1887, 1840, 1793, 1601,
- 1504, 5917, 5904, 2873, 5897, 5414, 1409, 1334, 4873, 4815, 956, 4811, 4666, 3154, 3252, 5263, 2942,
- 5062, 4659, 4680, 4429, 4575, 1214, 4181, 3862, 4256, 641, 2600, 2274, 900, 864, 1109, 5118, 5400, 2204,
- 5883, 4163, 794, 745, 5386, 6051, 4415, 4400, 4197, 1038, 2534, 2468, 2402, 2336, 1060, 655, 5422, 5861,
- 2947, 4136, 5838, 1078, 3446, 2834, 2768, 2702, 2636, 2570, 2504, 2438, 2372, 2306, 2240, 2174, 3546,
- 3673, 673, 3907, 3867, 3755, 4109, 4082, 4055, 5815, 3360, 3407, 3509, 3638, 3602, 3835, 3803, 3721,
- 4366, 4340, 4028, 4001, 3974, 3947, 5346, 5322, 5131, 4633, 1339, 5792, 5769, 5746, 925, 834, 764, 5723,
- 5700, 5677, 5654, 5631, 5608, 5579, 1266, 3013, 3298, 3256, 3200, 3158, 1462, 1415, 3102, 3060, 1367,
- 2900, 2127, 2080, 2033, 1986, 1939, 1892, 1845, 1798, 1751, 1704, 1657, 1610, 599, 1554, 1292, 1512,
- 1144, 991, 1219, 0 };
- }
-
- public final static char scopeState[] = ScopeState.scopeState;
-
- @Override
- public final int scopeState(int index) {
- return scopeState[index];
- }
-
- public interface InSymb {
- public final static char inSymb[] = { 0, 0, 313, 241, 127, 3, 4, 132, 131, 8, 6, 124, 126, 197, 189, 3, 70, 219,
- 126, 176, 210, 54, 54, 174, 127, 60, 3, 66, 67, 124, 123, 54, 191, 165, 124, 166, 60, 150, 127, 164,
- 269, 49, 41, 44, 46, 42, 10, 135, 3, 126, 45, 40, 6, 35, 34, 5, 7, 37, 36, 140, 145, 147, 146, 153, 148,
- 156, 155, 158, 157, 160, 59, 162, 126, 166, 7, 5, 127, 127, 127, 257, 258, 235, 259, 234, 260, 55, 286,
- 261, 10, 126, 60, 60, 127, 4, 198, 225, 162, 284, 127, 164, 3, 54, 54, 54, 54, 126, 3, 199, 159, 174,
- 127, 66, 67, 166, 3, 125, 117, 119, 3, 60, 91, 98, 35, 34, 100, 99, 5, 90, 89, 64, 54, 86, 87, 7, 93,
- 92, 95, 94, 96, 112, 111, 110, 109, 108, 107, 106, 105, 104, 103, 70, 102, 101, 166, 176, 176, 270, 127,
- 251, 3, 167, 148, 175, 169, 183, 177, 184, 185, 273, 270, 219, 164, 327, 287, 322, 287, 126, 191, 166,
- 270, 277, 198, 68, 127, 199, 159, 199, 199, 199, 199, 166, 226, 152, 127, 3, 222, 221, 135, 125, 124,
- 10, 126, 60, 314, 3, 199, 57, 126, 57, 226, 159, 146, 146, 145, 145, 145, 148, 148, 148, 148, 147, 147,
- 155, 153, 153, 157, 156, 158, 159, 160, 5, 127, 257, 258, 259, 260, 336, 261, 10, 167, 90, 89, 54, 7,
- 93, 92, 95, 94, 96, 112, 111, 110, 109, 108, 107, 106, 105, 104, 103, 70, 102, 101, 68, 127, 166, 245,
- 125, 124, 126, 123, 164, 126, 166, 57, 4, 325, 64, 64, 64, 64, 198, 275, 219, 230, 127, 3, 126, 166,
- 215, 3, 315, 174, 150, 126, 191, 166, 71, 176, 173, 126, 64, 148, 148, 148, 169, 167, 167, 177, 175,
- 183, 159, 184, 326, 126, 170, 236, 61, 57, 214, 63, 172, 329, 125, 124, 246, 246, 191, 164, 127, 191,
- 198, 202, 68, 3, 3, 3, 3, 125, 124, 242, 243, 149, 244, 127, 166, 57, 199, 127, 127, 227, 6, 57, 127,
- 166, 148, 71, 166, 264, 238, 54, 57, 291, 293, 127, 189, 246, 246, 127, 127, 198, 127, 289, 123, 290,
- 202, 9, 159, 159, 159, 159, 3, 3, 152, 70, 230, 210, 3, 127, 68, 242, 198, 152, 279, 282, 60, 192, 4,
- 123, 125, 198, 198, 164, 264, 64, 54, 126, 74, 127, 219, 328, 71, 303, 210, 124, 3, 127, 127, 71, 289,
- 288, 70, 68, 226, 226, 127, 70, 70, 127, 219, 152, 125, 127, 3, 60, 159, 4, 128, 127, 164, 27, 57, 172,
- 65, 61, 63, 127, 191, 127, 295, 71, 68, 71, 70, 127, 331, 236, 22, 126, 288, 228, 127, 279, 226, 225,
- 254, 256, 127, 38, 127, 3, 123, 61, 309, 57, 10, 53, 128, 295, 164, 307, 126, 308, 242, 68, 126, 22,
- 332, 191, 127, 228, 254, 127, 164, 285, 292, 38, 70, 126, 68, 64, 54, 245, 245, 296, 127, 68, 191, 3,
- 152, 191, 126, 126, 59, 127, 127, 68, 152, 126, 191, 127, 70, 70, 127, 318, 79, 77, 1, 159, 9, 85, 83,
- 81, 80, 75, 82, 84, 78, 76, 61, 74, 226, 127, 191, 191, 3, 254, 191, 238, 309, 297, 113, 9, 71, 225, 71,
- 3, 3, 3, 203, 3, 123, 159, 123, 188, 228, 338, 238, 64, 3, 71, 237, 174, 237, 320, 149, 75, 237, 127,
- 127, 68, 53, 97, 337, 174, 152, 210, 152, 319, 127, 3, 152, 297, 245, 152, 152, 127, 70, 203, 161, 285,
- 159, 70, 121, 317, 152, 152 };
- }
-
- public final static char inSymb[] = InSymb.inSymb;
-
- @Override
- public final int inSymb(int index) {
- return inSymb[index];
- }
-
- public interface Name {
- public final static String name[] = { "", "[", "(", ".", ".*", "->", "->*", "++", "--", "&", "*", "+", "-", "~",
- "!", "/", "%", ">>", "<<", "<", ">", "<=", ">=", "==", "!=", "^", "|", "&&", "||", "?", ":", "::",
- "...", "=", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", ",", "$empty", "asm", "auto",
- "bool", "break", "case", "catch", "char", "class", "const", "const_cast", "continue", "default",
- "delete", "do", "double", "dynamic_cast", "else", "enum", "explicit", "export", "extern", "false",
- "float", "for", "friend", "goto", "if", "inline", "int", "long", "mutable", "namespace", "new",
- "operator", "private", "protected", "public", "register", "reinterpret_cast", "return", "short",
- "signed", "sizeof", "static", "static_cast", "struct", "switch", "template", "this", "throw", "try",
- "true", "typedef", "typeid", "typename", "union", "unsigned", "using", "virtual", "void", "volatile",
- "wchar_t", "while", "integer", "floating", "charconst", "stringlit", "identifier", "Completion",
- "EndOfCompletion", "Invalid", "RightBracket", "RightParen", "RightBrace", "SemiColon", "LeftBrace",
- "ERROR_TOKEN", "EOF_TOKEN", "no_function_declarator_start", "]", ")", "}", ";", "{", "identifier_token",
- "expression", "id_expression", "qualified_or_unqualified_name", "unqualified_id_name",
- "identifier_name", "template_id_name", "nested_name_specifier", "class_or_namespace_name",
- "nested_name_specifier_with_tem" + "plate", "class_or_namespace_name_with_t" + "emplate", "class_name",
- "postfix_expression", "simple_type_specifier", "pseudo_destructor_name", "type_id", "type_name",
- "destructor_type_name", "unary_expression", "cast_expression", "new_type_id", "expression_list",
- "type_specifier_seq", "new_declarator", "new_pointer_operators", "ptr_operator",
- "new_array_expressions", "constant_expression", "pm_expression", "multiplicative_expression",
- "additive_expression", "shift_expression", "relational_expression", "equality_expression",
- "and_expression", "exclusive_or_expression", "inclusive_or_expression", "logical_and_expression",
- "logical_or_expression", "assignment_expression", "relational_expression_inTempla" + "te",
- "equality_expression_inTemplate", "and_expression_inTemplate",
- "exclusive_or_expression_inTemp" + "late", "inclusive_or_expression_inTemp" + "late",
- "logical_and_expression_inTempl" + "ate", "logical_or_expression_inTempla" + "te",
- "assignment_expression_inTempla" + "te", "expression_list_actual", "statement", "compound_statement",
- "statement_seq", "condition", "declarator", "for_init_statement", "function_definition", "declaration",
- "declaration_seq", "declaration_specifiers", "simple_declaration_specifiers",
- "class_declaration_specifiers", "elaborated_declaration_specifi" + "ers", "enum_declaration_specifiers",
- "type_name_declaration_specifie" + "rs", "no_type_declaration_specifier", "cv_qualifier",
- "no_type_declaration_specifiers", "class_specifier", "elaborated_type_specifier", "enum_specifier",
- "type_name_specifier", "class_keyword", "enumerator_list", "enumerator_definition", "namespace_name",
- "init_declarator_list", "init_declarator_complete", "complete_declarator", "initializer",
- "direct_declarator", "ptr_operator_seq", "function_declarator", "basic_direct_declarator",
- "array_direct_declarator", "array_modifier", "abstract_declarator", "direct_abstract_declarator",
- "basic_direct_abstract_declarat" + "or", "array_direct_abstract_declarat" + "or",
- "parameter_declaration_list", "parameter_declaration", "parameter_init_declarator",
- "parameter_initializer", "function_body", "handler_seq", "initializer_clause", "initializer_seq",
- "class_head", "access_specifier_keyword", "member_declaration", "member_declarator_list",
- "member_declaration_list", "member_declarator_complete", "constant_initializer", "bit_field_declarator",
- "base_specifier_list", "base_specifier", "conversion_function_id", "conversion_type_id",
- "conversion_declarator", "mem_initializer_list", "mem_initializer", "mem_initializer_name",
- "operator_id_name", "overloadable_operator", "template_parameter_list", "template_parameter",
- "template_argument_list", "template_argument", "type_name_specifier_inTemplate",
- "type_name_declaration_specifie" + "rs_inTemplate", "type_specifier_seq_inTemplate", "handler",
- "exception_declaration", "type_id_list" };
- }
-
- public final static String name[] = Name.name;
-
- @Override
- public final String name(int index) {
- return name[index];
- }
-
- public final static int ERROR_SYMBOL = 62, SCOPE_UBOUND = 121, SCOPE_SIZE = 122, MAX_NAME_LENGTH = 43;
-
- @Override
- public final int getErrorSymbol() {
- return ERROR_SYMBOL;
- }
-
- @Override
- public final int getScopeUbound() {
- return SCOPE_UBOUND;
- }
-
- @Override
- public final int getScopeSize() {
- return SCOPE_SIZE;
- }
-
- @Override
- public final int getMaxNameLength() {
- return MAX_NAME_LENGTH;
- }
-
- public final static int NUM_STATES = 604, NT_OFFSET = 122, LA_STATE_OFFSET = 7550, MAX_LA = 2147483647,
- NUM_RULES = 598, NUM_NONTERMINALS = 225, NUM_SYMBOLS = 347, SEGMENT_SIZE = 8192, START_STATE = 5422,
- IDENTIFIER_SYMBOL = 0, EOFT_SYMBOL = 120, EOLT_SYMBOL = 120, ACCEPT_ACTION = 6515, ERROR_ACTION = 6952;
-
- public final static boolean BACKTRACK = true;
-
- @Override
- public final int getNumStates() {
- return NUM_STATES;
- }
-
- @Override
- public final int getNtOffset() {
- return NT_OFFSET;
- }
-
- @Override
- public final int getLaStateOffset() {
- return LA_STATE_OFFSET;
- }
-
- @Override
- public final int getMaxLa() {
- return MAX_LA;
- }
-
- @Override
- public final int getNumRules() {
- return NUM_RULES;
- }
-
- @Override
- public final int getNumNonterminals() {
- return NUM_NONTERMINALS;
- }
-
- @Override
- public final int getNumSymbols() {
- return NUM_SYMBOLS;
- }
-
- @Override
- public final int getSegmentSize() {
- return SEGMENT_SIZE;
- }
-
- @Override
- public final int getStartState() {
- return START_STATE;
- }
-
- @Override
- public final int getStartSymbol() {
- return lhs[0];
- }
-
- public final int getIdentifierSymbol() {
- return IDENTIFIER_SYMBOL;
- }
-
- @Override
- public final int getEoftSymbol() {
- return EOFT_SYMBOL;
- }
-
- @Override
- public final int getEoltSymbol() {
- return EOLT_SYMBOL;
- }
-
- @Override
- public final int getAcceptAction() {
- return ACCEPT_ACTION;
- }
-
- @Override
- public final int getErrorAction() {
- return ERROR_ACTION;
- }
-
- @Override
- public final boolean isValidForParser() {
- return isValidForParser;
- }
-
- @Override
- public final boolean getBacktrack() {
- return BACKTRACK;
- }
-
- @Override
- public final int originalState(int state) {
- return -baseCheck[state];
- }
-
- @Override
- public final int asi(int state) {
- return asb[originalState(state)];
- }
-
- @Override
- public final int nasi(int state) {
- return nasb[originalState(state)];
- }
-
- @Override
- public final int inSymbol(int state) {
- return inSymb[originalState(state)];
- }
-
- @Override
- public final int ntAction(int state, int sym) {
- return baseAction[state + sym];
- }
-
- @Override
- public final int tAction(int state, int sym) {
- int i = baseAction[state], k = i + sym;
- return termAction[termCheck[k] == sym ? k : i];
- }
-
- @Override
- public final int lookAhead(int la_state, int sym) {
- int k = la_state + sym;
- return termAction[termCheck[k] == sym ? k : la_state];
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoFunctionDeclaratorParsersym.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoFunctionDeclaratorParsersym.java
deleted file mode 100644
index 4916bf789b1..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoFunctionDeclaratorParsersym.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2010 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.dom.lrparser.cpp;
-
-public interface CPPNoFunctionDeclaratorParsersym {
- public final static int TK_asm = 65, TK_auto = 25, TK_bool = 11, TK_break = 76, TK_case = 77, TK_catch = 113,
- TK_char = 12, TK_class = 53, TK_const = 23, TK_const_cast = 41, TK_continue = 78, TK_default = 79,
- TK_delete = 66, TK_do = 80, TK_double = 13, TK_dynamic_cast = 42, TK_else = 121, TK_enum = 55,
- TK_explicit = 26, TK_export = 88, TK_extern = 27, TK_false = 43, TK_float = 14, TK_for = 81, TK_friend = 28,
- TK_goto = 82, TK_if = 83, TK_inline = 29, TK_int = 15, TK_long = 16, TK_mutable = 30, TK_namespace = 61,
- TK_new = 67, TK_operator = 8, TK_private = 114, TK_protected = 115, TK_public = 116, TK_register = 31,
- TK_reinterpret_cast = 44, TK_return = 84, TK_short = 17, TK_signed = 18, TK_sizeof = 45, TK_static = 32,
- TK_static_cast = 46, TK_struct = 56, TK_switch = 85, TK_template = 57, TK_this = 47, TK_throw = 59,
- TK_try = 74, TK_true = 48, TK_typedef = 33, TK_typeid = 49, TK_typename = 10, TK_union = 58,
- TK_unsigned = 19, TK_using = 63, TK_virtual = 22, TK_void = 20, TK_volatile = 24, TK_wchar_t = 21,
- TK_while = 75, TK_integer = 50, TK_floating = 51, TK_charconst = 52, TK_stringlit = 38, TK_identifier = 1,
- TK_Completion = 2, TK_EndOfCompletion = 9, TK_Invalid = 122, TK_LeftBracket = 60, TK_LeftParen = 3,
- TK_Dot = 119, TK_DotStar = 98, TK_Arrow = 117, TK_ArrowStar = 91, TK_PlusPlus = 36, TK_MinusMinus = 37,
- TK_And = 7, TK_Star = 5, TK_Plus = 34, TK_Minus = 35, TK_Tilde = 6, TK_Bang = 40, TK_Slash = 99,
- TK_Percent = 100, TK_RightShift = 86, TK_LeftShift = 87, TK_LT = 54, TK_GT = 64, TK_LE = 89, TK_GE = 90,
- TK_EQ = 92, TK_NE = 93, TK_Caret = 94, TK_Or = 95, TK_AndAnd = 96, TK_OrOr = 101, TK_Question = 102,
- TK_Colon = 71, TK_ColonColon = 4, TK_DotDotDot = 97, TK_Assign = 70, TK_StarAssign = 103,
- TK_SlashAssign = 104, TK_PercentAssign = 105, TK_PlusAssign = 106, TK_MinusAssign = 107,
- TK_RightShiftAssign = 108, TK_LeftShiftAssign = 109, TK_AndAssign = 110, TK_CaretAssign = 111,
- TK_OrAssign = 112, TK_Comma = 68, TK_RightBracket = 118, TK_RightParen = 72, TK_RightBrace = 73,
- TK_SemiColon = 39, TK_LeftBrace = 69, TK_ERROR_TOKEN = 62, TK_EOF_TOKEN = 120;
-
- public final static String orderedTerminalSymbols[] = { "", "identifier", "Completion", "LeftParen", "ColonColon",
- "Star", "Tilde", "And", "operator", "EndOfCompletion", "typename", "bool", "char", "double", "float", "int",
- "long", "short", "signed", "unsigned", "void", "wchar_t", "virtual", "const", "volatile", "auto",
- "explicit", "extern", "friend", "inline", "mutable", "register", "static", "typedef", "Plus", "Minus",
- "PlusPlus", "MinusMinus", "stringlit", "SemiColon", "Bang", "const_cast", "dynamic_cast", "false",
- "reinterpret_cast", "sizeof", "static_cast", "this", "true", "typeid", "integer", "floating", "charconst",
- "class", "LT", "enum", "struct", "template", "union", "throw", "LeftBracket", "namespace", "ERROR_TOKEN",
- "using", "GT", "asm", "delete", "new", "Comma", "LeftBrace", "Assign", "Colon", "RightParen", "RightBrace",
- "try", "while", "break", "case", "continue", "default", "do", "for", "goto", "if", "return", "switch",
- "RightShift", "LeftShift", "export", "LE", "GE", "ArrowStar", "EQ", "NE", "Caret", "Or", "AndAnd",
- "DotDotDot", "DotStar", "Slash", "Percent", "OrOr", "Question", "StarAssign", "SlashAssign",
- "PercentAssign", "PlusAssign", "MinusAssign", "RightShiftAssign", "LeftShiftAssign", "AndAssign",
- "CaretAssign", "OrAssign", "catch", "private", "protected", "public", "Arrow", "RightBracket", "Dot",
- "EOF_TOKEN", "else", "Invalid" };
-
- public final static boolean isValidForParser = true;
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPParser.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPParser.java
deleted file mode 100644
index 51f57124e4e..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPParser.java
+++ /dev/null
@@ -1,2829 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2015 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.dom.lrparser.cpp;
-
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.cdt.core.dom.ast.IASTCompletionNode;
-import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
-import org.eclipse.cdt.core.dom.ast.IASTUnaryExpression;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTBinaryExpression;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCastExpression;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTLiteralExpression;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTypeIdExpression;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTUnaryExpression;
-import org.eclipse.cdt.core.dom.lrparser.CPreprocessorAdapter;
-import org.eclipse.cdt.core.dom.lrparser.IDOMTokenMap;
-import org.eclipse.cdt.core.dom.lrparser.IParser;
-import org.eclipse.cdt.core.dom.lrparser.ITokenCollector;
-import org.eclipse.cdt.core.dom.lrparser.action.ITokenStream;
-import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack;
-import org.eclipse.cdt.core.dom.lrparser.action.cpp.CPPBuildASTParserAction;
-import org.eclipse.cdt.core.dom.lrparser.action.cpp.CPPSecondaryParserFactory;
-import org.eclipse.cdt.core.dom.lrparser.lpgextensions.FixedBacktrackingParser;
-import org.eclipse.cdt.core.dom.parser.IBuiltinBindingsProvider;
-import org.eclipse.cdt.core.index.IIndex;
-import org.eclipse.cdt.core.parser.IScanner;
-import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPNodeFactory;
-
-import lpg.lpgjavaruntime.BadParseException;
-import lpg.lpgjavaruntime.BadParseSymFileException;
-import lpg.lpgjavaruntime.DiagnoseParser;
-import lpg.lpgjavaruntime.ErrorToken;
-import lpg.lpgjavaruntime.IToken;
-import lpg.lpgjavaruntime.LexStream;
-import lpg.lpgjavaruntime.Monitor;
-import lpg.lpgjavaruntime.NotBacktrackParseTableException;
-import lpg.lpgjavaruntime.NullExportedSymbolsException;
-import lpg.lpgjavaruntime.NullTerminalSymbolsException;
-import lpg.lpgjavaruntime.ParseErrorCodes;
-import lpg.lpgjavaruntime.ParseTable;
-import lpg.lpgjavaruntime.PrsStream;
-import lpg.lpgjavaruntime.RuleAction;
-import lpg.lpgjavaruntime.UndefinedEofSymbolException;
-import lpg.lpgjavaruntime.UnimplementedTerminalsException;
-
-public class CPPParser extends PrsStream
- implements RuleAction, ITokenStream, ITokenCollector, IParser<IASTTranslationUnit>
-
-{
- private static ParseTable prs = new CPPParserprs();
- private FixedBacktrackingParser btParser;
-
- public FixedBacktrackingParser getParser() {
- return btParser;
- }
-
- private void setResult(Object object) {
- btParser.setSym1(object);
- }
-
- public Object getRhsSym(int i) {
- return btParser.getSym(i);
- }
-
- public int getRhsTokenIndex(int i) {
- return btParser.getToken(i);
- }
-
- public IToken getRhsIToken(int i) {
- return super.getIToken(getRhsTokenIndex(i));
- }
-
- public int getRhsFirstTokenIndex(int i) {
- return btParser.getFirstToken(i);
- }
-
- public IToken getRhsFirstIToken(int i) {
- return super.getIToken(getRhsFirstTokenIndex(i));
- }
-
- public int getRhsLastTokenIndex(int i) {
- return btParser.getLastToken(i);
- }
-
- public IToken getRhsLastIToken(int i) {
- return super.getIToken(getRhsLastTokenIndex(i));
- }
-
- public int getLeftSpan() {
- return btParser.getFirstToken();
- }
-
- @Override
- public IToken getLeftIToken() {
- return super.getIToken(getLeftSpan());
- }
-
- public int getRightSpan() {
- return btParser.getLastToken();
- }
-
- @Override
- public IToken getRightIToken() {
- return super.getIToken(getRightSpan());
- }
-
- public int getRhsErrorTokenIndex(int i) {
- int index = btParser.getToken(i);
- IToken err = super.getIToken(index);
- return (err instanceof ErrorToken ? index : 0);
- }
-
- public ErrorToken getRhsErrorIToken(int i) {
- int index = btParser.getToken(i);
- IToken err = super.getIToken(index);
- return (ErrorToken) (err instanceof ErrorToken ? err : null);
- }
-
- public CPPParser(LexStream lexStream) {
- super(lexStream);
-
- try {
- super.remapTerminalSymbols(orderedTerminalSymbols(), CPPParserprs.EOFT_SYMBOL);
- } catch (NullExportedSymbolsException e) {
- } catch (NullTerminalSymbolsException e) {
- } catch (UnimplementedTerminalsException e) {
- java.util.ArrayList unimplemented_symbols = e.getSymbols();
- System.out.println("The Lexer will not scan the following token(s):");
- for (int i = 0; i < unimplemented_symbols.size(); i++) {
- Integer id = (Integer) unimplemented_symbols.get(i);
- System.out.println(" " + CPPParsersym.orderedTerminalSymbols[id.intValue()]);
- }
- System.out.println();
- } catch (UndefinedEofSymbolException e) {
- throw new Error(new UndefinedEofSymbolException("The Lexer does not implement the Eof symbol "
- + CPPParsersym.orderedTerminalSymbols[CPPParserprs.EOFT_SYMBOL]));
- }
- }
-
- @Override
- public String[] orderedTerminalSymbols() {
- return CPPParsersym.orderedTerminalSymbols;
- }
-
- public String getTokenKindName(int kind) {
- return CPPParsersym.orderedTerminalSymbols[kind];
- }
-
- public int getEOFTokenKind() {
- return CPPParserprs.EOFT_SYMBOL;
- }
-
- public PrsStream getParseStream() {
- return this;
- }
-
- //
- // Report error message for given error_token.
- //
- public final void reportErrorTokenMessage(int error_token, String msg) {
- int firsttok = super.getFirstErrorToken(error_token), lasttok = super.getLastErrorToken(error_token);
- String location = super.getFileName() + ':'
- + (firsttok > lasttok ? (super.getEndLine(lasttok) + ":" + super.getEndColumn(lasttok))
- : (super.getLine(error_token) + ":" + super.getColumn(error_token) + ":"
- + super.getEndLine(error_token) + ":" + super.getEndColumn(error_token)))
- + ": ";
- super.reportError((firsttok > lasttok ? ParseErrorCodes.INSERTION_CODE : ParseErrorCodes.SUBSTITUTION_CODE),
- location, msg);
- }
-
- public void parser() {
- parser(null, 0);
- }
-
- public void parser(Monitor monitor) {
- parser(monitor, 0);
- }
-
- public void parser(int error_repair_count) {
- parser(null, error_repair_count);
- }
-
- public void parser(Monitor monitor, int error_repair_count) {
- try {
- btParser = new FixedBacktrackingParser(monitor, this, prs, this);
- } catch (NotBacktrackParseTableException e) {
- throw new Error(new NotBacktrackParseTableException("Regenerate CPPParserprs.java with -BACKTRACK option"));
- } catch (BadParseSymFileException e) {
- throw new Error(new BadParseSymFileException("Bad Parser Symbol File -- CPPParsersym.java"));
- }
-
- try {
- btParser.parse(error_repair_count);
- } catch (BadParseException e) {
- reset(e.error_token); // point to error token
- DiagnoseParser diagnoseParser = new DiagnoseParser(this, prs);
- diagnoseParser.diagnose(e.error_token);
- }
- }
-
- private CPPBuildASTParserAction action;
- private IASTCompletionNode compNode;
-
- public CPPParser(IScanner scanner, IDOMTokenMap tokenMap, IBuiltinBindingsProvider builtinBindingsProvider,
- IIndex index, Map<String, String> properties) {
- initActions(properties);
- action.initializeTranslationUnit(scanner, builtinBindingsProvider, index);
- CPreprocessorAdapter.runCPreprocessor(scanner, this, tokenMap);
- }
-
- private void initActions(Map<String, String> properties) {
- ScopedStack<Object> astStack = new ScopedStack<>();
-
- action = new CPPBuildASTParserAction(this, astStack, CPPNodeFactory.getDefault(),
- CPPSecondaryParserFactory.getDefault());
- action.setParserProperties(properties);
-
- }
-
- @Override
- public void addToken(IToken token) {
- token.setKind(mapKind(token.getKind())); // TODO does mapKind need to be called?
- super.addToken(token);
- }
-
- @Override
- public IASTTranslationUnit parse() {
- // this has to be done, or... kaboom!
- setStreamLength(getSize());
-
- final int errorRepairCount = -1; // -1 means full error handling
- parser(null, errorRepairCount); // do the actual parse
- super.resetTokenStream(); // allow tokens to be garbage collected
-
- compNode = action.getASTCompletionNode(); // the completion node may be null
- return (IASTTranslationUnit) action.getParseResult();
- }
-
- @Override
- public IASTCompletionNode getCompletionNode() {
- return compNode;
- }
-
- // uncomment this method to use with backtracking parser
- @Override
- public List<IToken> getRuleTokens() {
- return getTokens().subList(getLeftSpan(), getRightSpan() + 1);
- }
-
- @Override
- public String[] getOrderedTerminalSymbols() {
- return CPPParsersym.orderedTerminalSymbols;
- }
-
- @Override
- @SuppressWarnings("nls")
- public String getName() {
- return "CPPParser";
- }
-
- @Override
- public void ruleAction(int ruleNumber) {
- switch (ruleNumber) {
-
- //
- // Rule 1: <openscope-ast> ::= $Empty
- //
- case 1: {
- action.openASTScope();
- break;
- }
-
- //
- // Rule 2: <empty> ::= $Empty
- //
- case 2: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 13: translation_unit ::= declaration_seq_opt
- //
- case 13: {
- action.consumeTranslationUnit();
- break;
- }
-
- //
- // Rule 16: literal ::= integer
- //
- case 16: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_integer_constant);
- break;
- }
-
- //
- // Rule 17: literal ::= floating
- //
- case 17: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_float_constant);
- break;
- }
-
- //
- // Rule 18: literal ::= charconst
- //
- case 18: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_char_constant);
- break;
- }
-
- //
- // Rule 19: literal ::= stringlit
- //
- case 19: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_string_literal);
- break;
- }
-
- //
- // Rule 20: literal ::= true
- //
- case 20: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_true);
- break;
- }
-
- //
- // Rule 21: literal ::= false
- //
- case 21: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_false);
- break;
- }
-
- //
- // Rule 22: literal ::= this
- //
- case 22: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_this);
- break;
- }
-
- //
- // Rule 24: primary_expression ::= ( expression )
- //
- case 24: {
- action.consumeExpressionBracketed();
- break;
- }
-
- //
- // Rule 26: id_expression ::= qualified_or_unqualified_name
- //
- case 26: {
- action.consumeExpressionName();
- break;
- }
-
- //
- // Rule 33: unqualified_id_name ::= ~ identifier_token
- //
- case 33: {
- action.consumeDestructorName();
- break;
- }
-
- //
- // Rule 34: unqualified_id_name ::= ~ template_id_name
- //
- case 34: {
- action.consumeDestructorNameTemplateId();
- break;
- }
-
- //
- // Rule 35: identifier_name ::= identifier_token
- //
- case 35: {
- action.consumeIdentifierName();
- break;
- }
-
- //
- // Rule 36: template_opt ::= template
- //
- case 36: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 37: template_opt ::= $Empty
- //
- case 37: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 38: dcolon_opt ::= ::
- //
- case 38: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 39: dcolon_opt ::= $Empty
- //
- case 39: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 40: qualified_id_name ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name
- //
- case 40: {
- action.consumeQualifiedId(true);
- break;
- }
-
- //
- // Rule 41: qualified_id_name ::= :: unqualified_id_name
- //
- case 41: {
- action.consumeGlobalQualifiedId();
- break;
- }
-
- //
- // Rule 42: nested_name_specifier ::= class_or_namespace_name :: nested_name_specifier_with_template
- //
- case 42: {
- action.consumeNestedNameSpecifier(true);
- break;
- }
-
- //
- // Rule 43: nested_name_specifier ::= class_or_namespace_name ::
- //
- case 43: {
- action.consumeNestedNameSpecifier(false);
- break;
- }
-
- //
- // Rule 44: nested_name_specifier_with_template ::= class_or_namespace_name_with_template :: nested_name_specifier_with_template
- //
- case 44: {
- action.consumeNestedNameSpecifier(true);
- break;
- }
-
- //
- // Rule 45: nested_name_specifier_with_template ::= class_or_namespace_name_with_template ::
- //
- case 45: {
- action.consumeNestedNameSpecifier(false);
- break;
- }
-
- //
- // Rule 46: class_or_namespace_name_with_template ::= template_opt class_or_namespace_name
- //
- case 46: {
- action.consumeNameWithTemplateKeyword();
- break;
- }
-
- //
- // Rule 48: nested_name_specifier_opt ::= $Empty
- //
- case 48: {
- action.consumeNestedNameSpecifierEmpty();
- break;
- }
-
- //
- // Rule 51: postfix_expression ::= postfix_expression [ expression ]
- //
- case 51: {
- action.consumeExpressionArraySubscript();
- break;
- }
-
- //
- // Rule 52: postfix_expression ::= postfix_expression ( expression_list_opt )
- //
- case 52: {
- action.consumeExpressionFunctionCall();
- break;
- }
-
- //
- // Rule 53: postfix_expression ::= simple_type_specifier ( expression_list_opt )
- //
- case 53: {
- action.consumeExpressionSimpleTypeConstructor();
- break;
- }
-
- //
- // Rule 54: postfix_expression ::= typename dcolon_opt nested_name_specifier <empty> identifier_name ( expression_list_opt )
- //
- case 54: {
- action.consumeExpressionTypeName();
- break;
- }
-
- //
- // Rule 55: postfix_expression ::= typename dcolon_opt nested_name_specifier template_opt template_id_name ( expression_list_opt )
- //
- case 55: {
- action.consumeExpressionTypeName();
- break;
- }
-
- //
- // Rule 56: postfix_expression ::= postfix_expression . qualified_or_unqualified_name
- //
- case 56: {
- action.consumeExpressionFieldReference(false, false);
- break;
- }
-
- //
- // Rule 57: postfix_expression ::= postfix_expression -> qualified_or_unqualified_name
- //
- case 57: {
- action.consumeExpressionFieldReference(true, false);
- break;
- }
-
- //
- // Rule 58: postfix_expression ::= postfix_expression . template qualified_or_unqualified_name
- //
- case 58: {
- action.consumeExpressionFieldReference(false, true);
- break;
- }
-
- //
- // Rule 59: postfix_expression ::= postfix_expression -> template qualified_or_unqualified_name
- //
- case 59: {
- action.consumeExpressionFieldReference(true, true);
- break;
- }
-
- //
- // Rule 60: postfix_expression ::= postfix_expression . pseudo_destructor_name
- //
- case 60: {
- action.consumeExpressionFieldReference(false, false);
- break;
- }
-
- //
- // Rule 61: postfix_expression ::= postfix_expression -> pseudo_destructor_name
- //
- case 61: {
- action.consumeExpressionFieldReference(true, false);
- break;
- }
-
- //
- // Rule 62: postfix_expression ::= postfix_expression ++
- //
- case 62: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixIncr);
- break;
- }
-
- //
- // Rule 63: postfix_expression ::= postfix_expression --
- //
- case 63: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixDecr);
- break;
- }
-
- //
- // Rule 64: postfix_expression ::= dynamic_cast < type_id > ( expression )
- //
- case 64: {
- action.consumeExpressionCast(ICPPASTCastExpression.op_dynamic_cast);
- break;
- }
-
- //
- // Rule 65: postfix_expression ::= static_cast < type_id > ( expression )
- //
- case 65: {
- action.consumeExpressionCast(ICPPASTCastExpression.op_static_cast);
- break;
- }
-
- //
- // Rule 66: postfix_expression ::= reinterpret_cast < type_id > ( expression )
- //
- case 66: {
- action.consumeExpressionCast(ICPPASTCastExpression.op_reinterpret_cast);
- break;
- }
-
- //
- // Rule 67: postfix_expression ::= const_cast < type_id > ( expression )
- //
- case 67: {
- action.consumeExpressionCast(ICPPASTCastExpression.op_const_cast);
- break;
- }
-
- //
- // Rule 68: postfix_expression ::= typeid ( expression )
- //
- case 68: {
- action.consumeExpressionUnaryOperator(ICPPASTUnaryExpression.op_typeid);
- break;
- }
-
- //
- // Rule 69: postfix_expression ::= typeid ( type_id )
- //
- case 69: {
- action.consumeExpressionTypeId(ICPPASTTypeIdExpression.op_typeid);
- break;
- }
-
- //
- // Rule 70: pseudo_destructor_name ::= dcolon_opt nested_name_specifier_opt type_name :: destructor_type_name
- //
- case 70: {
- action.consumePsudoDestructorName(true);
- break;
- }
-
- //
- // Rule 71: pseudo_destructor_name ::= dcolon_opt nested_name_specifier template template_id_name :: destructor_type_name
- //
- case 71: {
- action.consumePsudoDestructorName(true);
- break;
- }
-
- //
- // Rule 72: pseudo_destructor_name ::= dcolon_opt nested_name_specifier_opt destructor_type_name
- //
- case 72: {
- action.consumePsudoDestructorName(false);
- break;
- }
-
- //
- // Rule 73: destructor_type_name ::= ~ identifier_token
- //
- case 73: {
- action.consumeDestructorName();
- break;
- }
-
- //
- // Rule 74: destructor_type_name ::= ~ template_id_name
- //
- case 74: {
- action.consumeDestructorNameTemplateId();
- break;
- }
-
- //
- // Rule 78: unary_expression ::= ++ cast_expression
- //
- case 78: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixIncr);
- break;
- }
-
- //
- // Rule 79: unary_expression ::= -- cast_expression
- //
- case 79: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixDecr);
- break;
- }
-
- //
- // Rule 80: unary_expression ::= & cast_expression
- //
- case 80: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_amper);
- break;
- }
-
- //
- // Rule 81: unary_expression ::= * cast_expression
- //
- case 81: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_star);
- break;
- }
-
- //
- // Rule 82: unary_expression ::= + cast_expression
- //
- case 82: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_plus);
- break;
- }
-
- //
- // Rule 83: unary_expression ::= - cast_expression
- //
- case 83: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_minus);
- break;
- }
-
- //
- // Rule 84: unary_expression ::= ~ cast_expression
- //
- case 84: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_tilde);
- break;
- }
-
- //
- // Rule 85: unary_expression ::= ! cast_expression
- //
- case 85: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_not);
- break;
- }
-
- //
- // Rule 86: unary_expression ::= sizeof unary_expression
- //
- case 86: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_sizeof);
- break;
- }
-
- //
- // Rule 87: unary_expression ::= sizeof ( type_id )
- //
- case 87: {
- action.consumeExpressionTypeId(ICPPASTTypeIdExpression.op_sizeof);
- break;
- }
-
- //
- // Rule 88: new_expression ::= dcolon_opt new new_placement_opt new_type_id <openscope-ast> new_array_expressions_opt new_initializer_opt
- //
- case 88: {
- action.consumeExpressionNew(true);
- break;
- }
-
- //
- // Rule 89: new_expression ::= dcolon_opt new new_placement_opt ( type_id ) <openscope-ast> new_array_expressions_opt new_initializer_opt
- //
- case 89: {
- action.consumeExpressionNew(false);
- break;
- }
-
- //
- // Rule 91: new_placement_opt ::= $Empty
- //
- case 91: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 92: new_type_id ::= type_specifier_seq
- //
- case 92: {
- action.consumeTypeId(false);
- break;
- }
-
- //
- // Rule 93: new_type_id ::= type_specifier_seq new_declarator
- //
- case 93: {
- action.consumeTypeId(true);
- break;
- }
-
- //
- // Rule 94: new_declarator ::= <openscope-ast> new_pointer_operators
- //
- case 94: {
- action.consumeNewDeclarator();
- break;
- }
-
- //
- // Rule 101: new_initializer ::= ( expression_list_opt )
- //
- case 101: {
- action.consumeNewInitializer();
- break;
- }
-
- //
- // Rule 103: new_initializer_opt ::= $Empty
- //
- case 103: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 104: delete_expression ::= dcolon_opt delete cast_expression
- //
- case 104: {
- action.consumeExpressionDelete(false);
- break;
- }
-
- //
- // Rule 105: delete_expression ::= dcolon_opt delete [ ] cast_expression
- //
- case 105: {
- action.consumeExpressionDelete(true);
- break;
- }
-
- //
- // Rule 107: cast_expression ::= ( type_id ) cast_expression
- //
- case 107: {
- action.consumeExpressionCast(ICPPASTCastExpression.op_cast);
- break;
- }
-
- //
- // Rule 109: pm_expression ::= pm_expression .* cast_expression
- //
- case 109: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_pmdot);
- break;
- }
-
- //
- // Rule 110: pm_expression ::= pm_expression ->* cast_expression
- //
- case 110: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_pmarrow);
- break;
- }
-
- //
- // Rule 112: multiplicative_expression ::= multiplicative_expression * pm_expression
- //
- case 112: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_multiply);
- break;
- }
-
- //
- // Rule 113: multiplicative_expression ::= multiplicative_expression / pm_expression
- //
- case 113: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_divide);
- break;
- }
-
- //
- // Rule 114: multiplicative_expression ::= multiplicative_expression % pm_expression
- //
- case 114: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_modulo);
- break;
- }
-
- //
- // Rule 116: additive_expression ::= additive_expression + multiplicative_expression
- //
- case 116: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_plus);
- break;
- }
-
- //
- // Rule 117: additive_expression ::= additive_expression - multiplicative_expression
- //
- case 117: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_minus);
- break;
- }
-
- //
- // Rule 119: shift_expression ::= shift_expression << additive_expression
- //
- case 119: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftLeft);
- break;
- }
-
- //
- // Rule 120: shift_expression ::= shift_expression >> additive_expression
- //
- case 120: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftRight);
- break;
- }
-
- //
- // Rule 122: relational_expression ::= relational_expression < shift_expression
- //
- case 122: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessThan);
- break;
- }
-
- //
- // Rule 123: relational_expression ::= relational_expression > shift_expression
- //
- case 123: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterThan);
- break;
- }
-
- //
- // Rule 124: relational_expression ::= relational_expression <= shift_expression
- //
- case 124: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessEqual);
- break;
- }
-
- //
- // Rule 125: relational_expression ::= relational_expression >= shift_expression
- //
- case 125: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterEqual);
- break;
- }
-
- //
- // Rule 127: equality_expression ::= equality_expression == relational_expression
- //
- case 127: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_equals);
- break;
- }
-
- //
- // Rule 128: equality_expression ::= equality_expression != relational_expression
- //
- case 128: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_notequals);
- break;
- }
-
- //
- // Rule 130: and_expression ::= and_expression & equality_expression
- //
- case 130: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAnd);
- break;
- }
-
- //
- // Rule 132: exclusive_or_expression ::= exclusive_or_expression ^ and_expression
- //
- case 132: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXor);
- break;
- }
-
- //
- // Rule 134: inclusive_or_expression ::= inclusive_or_expression | exclusive_or_expression
- //
- case 134: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOr);
- break;
- }
-
- //
- // Rule 136: logical_and_expression ::= logical_and_expression && inclusive_or_expression
- //
- case 136: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalAnd);
- break;
- }
-
- //
- // Rule 138: logical_or_expression ::= logical_or_expression || logical_and_expression
- //
- case 138: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalOr);
- break;
- }
-
- //
- // Rule 140: conditional_expression ::= logical_or_expression ? expression : assignment_expression
- //
- case 140: {
- action.consumeExpressionConditional();
- break;
- }
-
- //
- // Rule 142: relational_expression_inTemplate ::= relational_expression_inTemplate < shift_expression
- //
- case 142: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessThan);
- break;
- }
-
- //
- // Rule 143: relational_expression_inTemplate ::= ( relational_expression_inTemplate > shift_expression )
- //
- case 143: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterThan);
- break;
- }
-
- //
- // Rule 144: relational_expression_inTemplate ::= relational_expression_inTemplate <= shift_expression
- //
- case 144: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessEqual);
- break;
- }
-
- //
- // Rule 145: relational_expression_inTemplate ::= relational_expression_inTemplate >= shift_expression
- //
- case 145: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterEqual);
- break;
- }
-
- //
- // Rule 147: equality_expression_inTemplate ::= equality_expression_inTemplate == relational_expression_inTemplate
- //
- case 147: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_equals);
- break;
- }
-
- //
- // Rule 148: equality_expression_inTemplate ::= equality_expression_inTemplate != relational_expression_inTemplate
- //
- case 148: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_notequals);
- break;
- }
-
- //
- // Rule 150: and_expression_inTemplate ::= and_expression_inTemplate & equality_expression_inTemplate
- //
- case 150: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAnd);
- break;
- }
-
- //
- // Rule 152: exclusive_or_expression_inTemplate ::= exclusive_or_expression_inTemplate ^ and_expression_inTemplate
- //
- case 152: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXor);
- break;
- }
-
- //
- // Rule 154: inclusive_or_expression_inTemplate ::= inclusive_or_expression_inTemplate | exclusive_or_expression_inTemplate
- //
- case 154: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOr);
- break;
- }
-
- //
- // Rule 156: logical_and_expression_inTemplate ::= logical_and_expression_inTemplate && inclusive_or_expression_inTemplate
- //
- case 156: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalAnd);
- break;
- }
-
- //
- // Rule 158: logical_or_expression_inTemplate ::= logical_or_expression_inTemplate || logical_and_expression_inTemplate
- //
- case 158: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalOr);
- break;
- }
-
- //
- // Rule 160: conditional_expression_inTemplate ::= logical_or_expression_inTemplate ? expression : assignment_expression_inTemplate
- //
- case 160: {
- action.consumeExpressionConditional();
- break;
- }
-
- //
- // Rule 163: assignment_expression_inTemplate ::= logical_or_expression_inTemplate = assignment_expression_inTemplate
- //
- case 163: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_assign);
- break;
- }
-
- //
- // Rule 164: assignment_expression_inTemplate ::= logical_or_expression_inTemplate *= assignment_expression_inTemplate
- //
- case 164: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_multiplyAssign);
- break;
- }
-
- //
- // Rule 165: assignment_expression_inTemplate ::= logical_or_expression_inTemplate /= assignment_expression_inTemplate
- //
- case 165: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_divideAssign);
- break;
- }
-
- //
- // Rule 166: assignment_expression_inTemplate ::= logical_or_expression_inTemplate %= assignment_expression_inTemplate
- //
- case 166: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_moduloAssign);
- break;
- }
-
- //
- // Rule 167: assignment_expression_inTemplate ::= logical_or_expression_inTemplate += assignment_expression_inTemplate
- //
- case 167: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_plusAssign);
- break;
- }
-
- //
- // Rule 168: assignment_expression_inTemplate ::= logical_or_expression_inTemplate -= assignment_expression_inTemplate
- //
- case 168: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_minusAssign);
- break;
- }
-
- //
- // Rule 169: assignment_expression_inTemplate ::= logical_or_expression_inTemplate >>= assignment_expression_inTemplate
- //
- case 169: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftRightAssign);
- break;
- }
-
- //
- // Rule 170: assignment_expression_inTemplate ::= logical_or_expression_inTemplate <<= assignment_expression_inTemplate
- //
- case 170: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftLeftAssign);
- break;
- }
-
- //
- // Rule 171: assignment_expression_inTemplate ::= logical_or_expression_inTemplate &= assignment_expression_inTemplate
- //
- case 171: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAndAssign);
- break;
- }
-
- //
- // Rule 172: assignment_expression_inTemplate ::= logical_or_expression_inTemplate ^= assignment_expression_inTemplate
- //
- case 172: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXorAssign);
- break;
- }
-
- //
- // Rule 173: assignment_expression_inTemplate ::= logical_or_expression_inTemplate |= assignment_expression_inTemplate
- //
- case 173: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOrAssign);
- break;
- }
-
- //
- // Rule 174: throw_expression ::= throw
- //
- case 174: {
- action.consumeExpressionThrow(false);
- break;
- }
-
- //
- // Rule 175: throw_expression ::= throw assignment_expression
- //
- case 175: {
- action.consumeExpressionThrow(true);
- break;
- }
-
- //
- // Rule 178: assignment_expression ::= logical_or_expression = assignment_expression
- //
- case 178: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_assign);
- break;
- }
-
- //
- // Rule 179: assignment_expression ::= logical_or_expression *= assignment_expression
- //
- case 179: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_multiplyAssign);
- break;
- }
-
- //
- // Rule 180: assignment_expression ::= logical_or_expression /= assignment_expression
- //
- case 180: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_divideAssign);
- break;
- }
-
- //
- // Rule 181: assignment_expression ::= logical_or_expression %= assignment_expression
- //
- case 181: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_moduloAssign);
- break;
- }
-
- //
- // Rule 182: assignment_expression ::= logical_or_expression += assignment_expression
- //
- case 182: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_plusAssign);
- break;
- }
-
- //
- // Rule 183: assignment_expression ::= logical_or_expression -= assignment_expression
- //
- case 183: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_minusAssign);
- break;
- }
-
- //
- // Rule 184: assignment_expression ::= logical_or_expression >>= assignment_expression
- //
- case 184: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftRightAssign);
- break;
- }
-
- //
- // Rule 185: assignment_expression ::= logical_or_expression <<= assignment_expression
- //
- case 185: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftLeftAssign);
- break;
- }
-
- //
- // Rule 186: assignment_expression ::= logical_or_expression &= assignment_expression
- //
- case 186: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAndAssign);
- break;
- }
-
- //
- // Rule 187: assignment_expression ::= logical_or_expression ^= assignment_expression
- //
- case 187: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXorAssign);
- break;
- }
-
- //
- // Rule 188: assignment_expression ::= logical_or_expression |= assignment_expression
- //
- case 188: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOrAssign);
- break;
- }
-
- //
- // Rule 190: expression_list ::= <openscope-ast> expression_list_actual
- //
- case 190: {
- action.consumeExpressionList();
- break;
- }
-
- //
- // Rule 194: expression_list_opt ::= $Empty
- //
- case 194: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 196: expression_opt ::= $Empty
- //
- case 196: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 199: constant_expression_opt ::= $Empty
- //
- case 199: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 208: statement ::= ERROR_TOKEN
- //
- case 208: {
- action.consumeStatementProblem();
- break;
- }
-
- //
- // Rule 209: labeled_statement ::= identifier : statement
- //
- case 209: {
- action.consumeStatementLabeled();
- break;
- }
-
- //
- // Rule 210: labeled_statement ::= case constant_expression : statement
- //
- case 210: {
- action.consumeStatementCase();
- break;
- }
-
- //
- // Rule 211: labeled_statement ::= default : statement
- //
- case 211: {
- action.consumeStatementDefault();
- break;
- }
-
- //
- // Rule 212: expression_statement ::= expression ;
- //
- case 212: {
- action.consumeStatementExpression();
- break;
- }
-
- //
- // Rule 213: expression_statement ::= ;
- //
- case 213: {
- action.consumeStatementNull();
- break;
- }
-
- //
- // Rule 214: compound_statement ::= { <openscope-ast> statement_seq }
- //
- case 214: {
- action.consumeStatementCompoundStatement(true);
- break;
- }
-
- //
- // Rule 215: compound_statement ::= { }
- //
- case 215: {
- action.consumeStatementCompoundStatement(false);
- break;
- }
-
- //
- // Rule 218: selection_statement ::= if ( condition ) statement
- //
- case 218: {
- action.consumeStatementIf(false);
- break;
- }
-
- //
- // Rule 219: selection_statement ::= if ( condition ) statement else statement
- //
- case 219: {
- action.consumeStatementIf(true);
- break;
- }
-
- //
- // Rule 220: selection_statement ::= switch ( condition ) statement
- //
- case 220: {
- action.consumeStatementSwitch();
- break;
- }
-
- //
- // Rule 222: condition ::= type_specifier_seq declarator = assignment_expression
- //
- case 222: {
- action.consumeConditionDeclaration();
- break;
- }
-
- //
- // Rule 224: condition_opt ::= $Empty
- //
- case 224: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 225: iteration_statement ::= while ( condition ) statement
- //
- case 225: {
- action.consumeStatementWhileLoop();
- break;
- }
-
- //
- // Rule 226: iteration_statement ::= do statement while ( expression ) ;
- //
- case 226: {
- action.consumeStatementDoLoop(true);
- break;
- }
-
- //
- // Rule 227: iteration_statement ::= do statement
- //
- case 227: {
- action.consumeStatementDoLoop(false);
- break;
- }
-
- //
- // Rule 228: iteration_statement ::= for ( for_init_statement condition_opt ; expression_opt ) statement
- //
- case 228: {
- action.consumeStatementForLoop();
- break;
- }
-
- //
- // Rule 230: for_init_statement ::= simple_declaration_with_declspec
- //
- case 230: {
- action.consumeStatementDeclaration();
- break;
- }
-
- //
- // Rule 231: jump_statement ::= break ;
- //
- case 231: {
- action.consumeStatementBreak();
- break;
- }
-
- //
- // Rule 232: jump_statement ::= continue ;
- //
- case 232: {
- action.consumeStatementContinue();
- break;
- }
-
- //
- // Rule 233: jump_statement ::= return expression ;
- //
- case 233: {
- action.consumeStatementReturn(true);
- break;
- }
-
- //
- // Rule 234: jump_statement ::= return ;
- //
- case 234: {
- action.consumeStatementReturn(false);
- break;
- }
-
- //
- // Rule 235: jump_statement ::= goto identifier_token ;
- //
- case 235: {
- action.consumeStatementGoto();
- break;
- }
-
- //
- // Rule 236: declaration_statement ::= block_declaration
- //
- case 236: {
- action.consumeStatementDeclarationWithDisambiguation();
- break;
- }
-
- //
- // Rule 237: declaration_statement ::= function_definition
- //
- case 237: {
- action.consumeStatementDeclaration();
- break;
- }
-
- //
- // Rule 245: declaration ::= ERROR_TOKEN
- //
- case 245: {
- action.consumeDeclarationProblem();
- break;
- }
-
- //
- // Rule 255: simple_declaration ::= declaration_specifiers_opt <openscope-ast> init_declarator_list_opt ;
- //
- case 255: {
- action.consumeDeclarationSimple(true);
- break;
- }
-
- //
- // Rule 256: simple_declaration_with_declspec ::= declaration_specifiers <openscope-ast> init_declarator_list_opt ;
- //
- case 256: {
- action.consumeDeclarationSimple(true);
- break;
- }
-
- //
- // Rule 257: declaration_specifiers ::= <openscope-ast> simple_declaration_specifiers
- //
- case 257: {
- action.consumeDeclarationSpecifiersSimple();
- break;
- }
-
- //
- // Rule 258: declaration_specifiers ::= <openscope-ast> class_declaration_specifiers
- //
- case 258: {
- action.consumeDeclarationSpecifiersComposite();
- break;
- }
-
- //
- // Rule 259: declaration_specifiers ::= <openscope-ast> elaborated_declaration_specifiers
- //
- case 259: {
- action.consumeDeclarationSpecifiersComposite();
- break;
- }
-
- //
- // Rule 260: declaration_specifiers ::= <openscope-ast> enum_declaration_specifiers
- //
- case 260: {
- action.consumeDeclarationSpecifiersComposite();
- break;
- }
-
- //
- // Rule 261: declaration_specifiers ::= <openscope-ast> type_name_declaration_specifiers
- //
- case 261: {
- action.consumeDeclarationSpecifiersTypeName();
- break;
- }
-
- //
- // Rule 263: declaration_specifiers_opt ::= $Empty
- //
- case 263: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 267: no_type_declaration_specifier ::= friend
- //
- case 267: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 268: no_type_declaration_specifier ::= typedef
- //
- case 268: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 288: storage_class_specifier ::= auto
- //
- case 288: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 289: storage_class_specifier ::= register
- //
- case 289: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 290: storage_class_specifier ::= static
- //
- case 290: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 291: storage_class_specifier ::= extern
- //
- case 291: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 292: storage_class_specifier ::= mutable
- //
- case 292: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 293: function_specifier ::= inline
- //
- case 293: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 294: function_specifier ::= virtual
- //
- case 294: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 295: function_specifier ::= explicit
- //
- case 295: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 296: simple_type_specifier ::= simple_type_specifier_token
- //
- case 296: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 310: type_name_specifier ::= dcolon_opt nested_name_specifier_opt type_name
- //
- case 310: {
- action.consumeQualifiedId(false);
- break;
- }
-
- //
- // Rule 311: type_name_specifier ::= dcolon_opt nested_name_specifier template template_id_name
- //
- case 311: {
- action.consumeQualifiedId(false);
- break;
- }
-
- //
- // Rule 312: type_name_specifier ::= typename dcolon_opt nested_name_specifier identifier_name
- //
- case 312: {
- action.consumeQualifiedId(false);
- break;
- }
-
- //
- // Rule 313: type_name_specifier ::= typename dcolon_opt nested_name_specifier template_opt template_id_name
- //
- case 313: {
- action.consumeQualifiedId(true);
- break;
- }
-
- //
- // Rule 315: elaborated_type_specifier ::= class_keyword elaborated_specifier_hook dcolon_opt nested_name_specifier_opt identifier_name
- //
- case 315: {
- action.consumeTypeSpecifierElaborated(false);
- break;
- }
-
- //
- // Rule 316: elaborated_type_specifier ::= class_keyword elaborated_specifier_hook dcolon_opt nested_name_specifier_opt template_opt template_id_name
- //
- case 316: {
- action.consumeTypeSpecifierElaborated(true);
- break;
- }
-
- //
- // Rule 317: elaborated_type_specifier ::= enum elaborated_specifier_hook dcolon_opt nested_name_specifier_opt identifier_name
- //
- case 317: {
- action.consumeTypeSpecifierElaborated(false);
- break;
- }
-
- //
- // Rule 321: enum_specifier ::= enum enum_specifier_hook { <openscope-ast> enumerator_list_opt comma_opt }
- //
- case 321: {
- action.consumeTypeSpecifierEnumeration(false);
- break;
- }
-
- //
- // Rule 322: enum_specifier ::= enum enum_specifier_hook identifier_token { <openscope-ast> enumerator_list_opt comma_opt }
- //
- case 322: {
- action.consumeTypeSpecifierEnumeration(true);
- break;
- }
-
- //
- // Rule 328: enumerator_definition ::= identifier_token
- //
- case 328: {
- action.consumeEnumerator(false);
- break;
- }
-
- //
- // Rule 329: enumerator_definition ::= identifier_token = constant_expression
- //
- case 329: {
- action.consumeEnumerator(true);
- break;
- }
-
- //
- // Rule 331: namespace_definition ::= namespace namespace_name namespace_definition_hook { <openscope-ast> declaration_seq_opt }
- //
- case 331: {
- action.consumeNamespaceDefinition(true);
- break;
- }
-
- //
- // Rule 332: namespace_definition ::= namespace namespace_definition_hook { <openscope-ast> declaration_seq_opt }
- //
- case 332: {
- action.consumeNamespaceDefinition(false);
- break;
- }
-
- //
- // Rule 334: namespace_alias_definition ::= namespace identifier_token = dcolon_opt nested_name_specifier_opt namespace_name ;
- //
- case 334: {
- action.consumeNamespaceAliasDefinition();
- break;
- }
-
- //
- // Rule 335: using_declaration ::= using typename_opt dcolon_opt nested_name_specifier_opt unqualified_id_name ;
- //
- case 335: {
- action.consumeUsingDeclaration();
- break;
- }
-
- //
- // Rule 336: typename_opt ::= typename
- //
- case 336: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 337: typename_opt ::= $Empty
- //
- case 337: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 338: using_directive ::= using namespace dcolon_opt nested_name_specifier_opt namespace_name ;
- //
- case 338: {
- action.consumeUsingDirective();
- break;
- }
-
- //
- // Rule 339: asm_definition ::= asm ( stringlit ) ;
- //
- case 339: {
- action.consumeDeclarationASM();
- break;
- }
-
- //
- // Rule 340: linkage_specification ::= extern stringlit { <openscope-ast> declaration_seq_opt }
- //
- case 340: {
- action.consumeLinkageSpecification();
- break;
- }
-
- //
- // Rule 341: linkage_specification ::= extern stringlit <openscope-ast> declaration
- //
- case 341: {
- action.consumeLinkageSpecification();
- break;
- }
-
- //
- // Rule 346: init_declarator_complete ::= init_declarator
- //
- case 346: {
- action.consumeInitDeclaratorComplete();
- break;
- }
-
- //
- // Rule 348: init_declarator ::= complete_declarator initializer
- //
- case 348: {
- action.consumeDeclaratorWithInitializer(true);
- break;
- }
-
- //
- // Rule 351: declarator ::= <openscope-ast> ptr_operator_seq direct_declarator
- //
- case 351: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 353: function_declarator ::= <openscope-ast> ptr_operator_seq direct_declarator
- //
- case 353: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 357: basic_direct_declarator ::= declarator_id_name
- //
- case 357: {
- action.consumeDirectDeclaratorIdentifier();
- break;
- }
-
- //
- // Rule 358: basic_direct_declarator ::= ( declarator )
- //
- case 358: {
- action.consumeDirectDeclaratorBracketed();
- break;
- }
-
- //
- // Rule 359: function_direct_declarator ::= basic_direct_declarator ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
- //
- case 359: {
- action.consumeDirectDeclaratorFunctionDeclarator(true);
- break;
- }
-
- //
- // Rule 360: array_direct_declarator ::= array_direct_declarator array_modifier
- //
- case 360: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 361: array_direct_declarator ::= basic_direct_declarator array_modifier
- //
- case 361: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 362: array_modifier ::= [ constant_expression ]
- //
- case 362: {
- action.consumeDirectDeclaratorArrayModifier(true);
- break;
- }
-
- //
- // Rule 363: array_modifier ::= [ ]
- //
- case 363: {
- action.consumeDirectDeclaratorArrayModifier(false);
- break;
- }
-
- //
- // Rule 364: ptr_operator ::= pointer_hook * pointer_hook <openscope-ast> cv_qualifier_seq_opt
- //
- case 364: {
- action.consumePointer();
- break;
- }
-
- //
- // Rule 365: ptr_operator ::= pointer_hook & pointer_hook
- //
- case 365: {
- action.consumeReferenceOperator();
- break;
- }
-
- //
- // Rule 366: ptr_operator ::= dcolon_opt nested_name_specifier pointer_hook * pointer_hook <openscope-ast> cv_qualifier_seq_opt
- //
- case 366: {
- action.consumePointerToMember();
- break;
- }
-
- //
- // Rule 373: cv_qualifier ::= const
- //
- case 373: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 374: cv_qualifier ::= volatile
- //
- case 374: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 376: declarator_id_name ::= dcolon_opt nested_name_specifier_opt type_name
- //
- case 376: {
- action.consumeQualifiedId(false);
- break;
- }
-
- //
- // Rule 377: type_id ::= type_specifier_seq
- //
- case 377: {
- action.consumeTypeId(false);
- break;
- }
-
- //
- // Rule 378: type_id ::= type_specifier_seq abstract_declarator
- //
- case 378: {
- action.consumeTypeId(true);
- break;
- }
-
- //
- // Rule 381: abstract_declarator ::= <openscope-ast> ptr_operator_seq
- //
- case 381: {
- action.consumeDeclaratorWithPointer(false);
- break;
- }
-
- //
- // Rule 382: abstract_declarator ::= <openscope-ast> ptr_operator_seq direct_abstract_declarator
- //
- case 382: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 386: basic_direct_abstract_declarator ::= ( abstract_declarator )
- //
- case 386: {
- action.consumeDirectDeclaratorBracketed();
- break;
- }
-
- //
- // Rule 387: basic_direct_abstract_declarator ::= ( )
- //
- case 387: {
- action.consumeAbstractDeclaratorEmpty();
- break;
- }
-
- //
- // Rule 388: array_direct_abstract_declarator ::= array_modifier
- //
- case 388: {
- action.consumeDirectDeclaratorArrayDeclarator(false);
- break;
- }
-
- //
- // Rule 389: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier
- //
- case 389: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 390: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier
- //
- case 390: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 391: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
- //
- case 391: {
- action.consumeDirectDeclaratorFunctionDeclarator(true);
- break;
- }
-
- //
- // Rule 392: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
- //
- case 392: {
- action.consumeDirectDeclaratorFunctionDeclarator(false);
- break;
- }
-
- //
- // Rule 393: parameter_declaration_clause ::= parameter_declaration_list_opt ...
- //
- case 393: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 394: parameter_declaration_clause ::= parameter_declaration_list_opt
- //
- case 394: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 395: parameter_declaration_clause ::= parameter_declaration_list , ...
- //
- case 395: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 401: abstract_declarator_opt ::= $Empty
- //
- case 401: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 402: parameter_declaration ::= declaration_specifiers parameter_init_declarator
- //
- case 402: {
- action.consumeParameterDeclaration();
- break;
- }
-
- //
- // Rule 403: parameter_declaration ::= declaration_specifiers
- //
- case 403: {
- action.consumeParameterDeclarationWithoutDeclarator();
- break;
- }
-
- //
- // Rule 405: parameter_init_declarator ::= declarator = parameter_initializer
- //
- case 405: {
- action.consumeDeclaratorWithInitializer(true);
- break;
- }
-
- //
- // Rule 407: parameter_init_declarator ::= abstract_declarator = parameter_initializer
- //
- case 407: {
- action.consumeDeclaratorWithInitializer(true);
- break;
- }
-
- //
- // Rule 408: parameter_init_declarator ::= = parameter_initializer
- //
- case 408: {
- action.consumeDeclaratorWithInitializer(false);
- break;
- }
-
- //
- // Rule 409: parameter_initializer ::= assignment_expression
- //
- case 409: {
- action.consumeInitializer();
- break;
- }
-
- //
- // Rule 410: function_definition ::= declaration_specifiers_opt function_declarator <openscope-ast> ctor_initializer_list_opt function_body
- //
- case 410: {
- action.consumeFunctionDefinition(false);
- break;
- }
-
- //
- // Rule 411: function_definition ::= declaration_specifiers_opt function_declarator try <openscope-ast> ctor_initializer_list_opt function_body <openscope-ast> handler_seq
- //
- case 411: {
- action.consumeFunctionDefinition(true);
- break;
- }
-
- //
- // Rule 414: initializer ::= ( expression_list )
- //
- case 414: {
- action.consumeInitializerConstructor();
- break;
- }
-
- //
- // Rule 415: initializer_clause ::= assignment_expression
- //
- case 415: {
- action.consumeInitializer();
- break;
- }
-
- //
- // Rule 416: initializer_clause ::= initializer_list
- //
- case 416: {
- action.consumeInitializer();
- break;
- }
-
- //
- // Rule 417: initializer_list ::= start_initializer_list { <openscope-ast> initializer_seq , } end_initializer_list
- //
- case 417: {
- action.consumeInitializerList();
- break;
- }
-
- //
- // Rule 418: initializer_list ::= start_initializer_list { <openscope-ast> initializer_seq } end_initializer_list
- //
- case 418: {
- action.consumeInitializerList();
- break;
- }
-
- //
- // Rule 419: initializer_list ::= { <openscope-ast> }
- //
- case 419: {
- action.consumeInitializerList();
- break;
- }
-
- //
- // Rule 420: start_initializer_list ::= $Empty
- //
- case 420: {
- action.initializerListStart();
- break;
- }
-
- //
- // Rule 421: end_initializer_list ::= $Empty
- //
- case 421: {
- action.initializerListEnd();
- break;
- }
-
- //
- // Rule 426: class_specifier ::= class_head { <openscope-ast> member_declaration_list_opt }
- //
- case 426: {
- action.consumeClassSpecifier();
- break;
- }
-
- //
- // Rule 427: class_head ::= class_keyword composite_specifier_hook identifier_name_opt class_name_suffix_hook <openscope-ast> base_clause_opt
- //
- case 427: {
- action.consumeClassHead(false);
- break;
- }
-
- //
- // Rule 428: class_head ::= class_keyword composite_specifier_hook template_id_name class_name_suffix_hook <openscope-ast> base_clause_opt
- //
- case 428: {
- action.consumeClassHead(false);
- break;
- }
-
- //
- // Rule 429: class_head ::= class_keyword composite_specifier_hook nested_name_specifier identifier_name class_name_suffix_hook <openscope-ast> base_clause_opt
- //
- case 429: {
- action.consumeClassHead(true);
- break;
- }
-
- //
- // Rule 430: class_head ::= class_keyword composite_specifier_hook nested_name_specifier template_id_name class_name_suffix_hook <openscope-ast> base_clause_opt
- //
- case 430: {
- action.consumeClassHead(true);
- break;
- }
-
- //
- // Rule 434: identifier_name_opt ::= $Empty
- //
- case 434: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 438: visibility_label ::= access_specifier_keyword :
- //
- case 438: {
- action.consumeVisibilityLabel();
- break;
- }
-
- //
- // Rule 439: member_declaration ::= declaration_specifiers_opt <openscope-ast> member_declarator_list ;
- //
- case 439: {
- action.consumeDeclarationSimple(true);
- break;
- }
-
- //
- // Rule 440: member_declaration ::= declaration_specifiers_opt ;
- //
- case 440: {
- action.consumeDeclarationSimple(false);
- break;
- }
-
- //
- // Rule 443: member_declaration ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name ;
- //
- case 443: {
- action.consumeMemberDeclarationQualifiedId();
- break;
- }
-
- //
- // Rule 449: member_declaration ::= ERROR_TOKEN
- //
- case 449: {
- action.consumeDeclarationProblem();
- break;
- }
-
- //
- // Rule 458: member_declarator ::= declarator constant_initializer
- //
- case 458: {
- action.consumeMemberDeclaratorWithInitializer();
- break;
- }
-
- //
- // Rule 459: member_declarator ::= bit_field_declarator : constant_expression
- //
- case 459: {
- action.consumeBitField(true);
- break;
- }
-
- //
- // Rule 460: member_declarator ::= : constant_expression
- //
- case 460: {
- action.consumeBitField(false);
- break;
- }
-
- //
- // Rule 461: bit_field_declarator ::= identifier_name
- //
- case 461: {
- action.consumeDirectDeclaratorIdentifier();
- break;
- }
-
- //
- // Rule 462: constant_initializer ::= = constant_expression
- //
- case 462: {
- action.consumeInitializer();
- break;
- }
-
- //
- // Rule 468: base_specifier ::= dcolon_opt nested_name_specifier_opt class_name
- //
- case 468: {
- action.consumeBaseSpecifier(false, false);
- break;
- }
-
- //
- // Rule 469: base_specifier ::= virtual access_specifier_keyword_opt dcolon_opt nested_name_specifier_opt class_name
- //
- case 469: {
- action.consumeBaseSpecifier(true, true);
- break;
- }
-
- //
- // Rule 470: base_specifier ::= access_specifier_keyword virtual dcolon_opt nested_name_specifier_opt class_name
- //
- case 470: {
- action.consumeBaseSpecifier(true, true);
- break;
- }
-
- //
- // Rule 471: base_specifier ::= access_specifier_keyword dcolon_opt nested_name_specifier_opt class_name
- //
- case 471: {
- action.consumeBaseSpecifier(true, false);
- break;
- }
-
- //
- // Rule 472: access_specifier_keyword ::= private
- //
- case 472: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 473: access_specifier_keyword ::= protected
- //
- case 473: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 474: access_specifier_keyword ::= public
- //
- case 474: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 476: access_specifier_keyword_opt ::= $Empty
- //
- case 476: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 478: conversion_function_id_name ::= conversion_function_id < <openscope-ast> template_argument_list_opt >
- //
- case 478: {
- action.consumeTemplateId();
- break;
- }
-
- //
- // Rule 479: conversion_function_id ::= operator conversion_type_id
- //
- case 479: {
- action.consumeConversionName();
- break;
- }
-
- //
- // Rule 480: conversion_type_id ::= type_specifier_seq conversion_declarator
- //
- case 480: {
- action.consumeTypeId(true);
- break;
- }
-
- //
- // Rule 481: conversion_type_id ::= type_specifier_seq
- //
- case 481: {
- action.consumeTypeId(false);
- break;
- }
-
- //
- // Rule 482: conversion_declarator ::= <openscope-ast> ptr_operator_seq
- //
- case 482: {
- action.consumeDeclaratorWithPointer(false);
- break;
- }
-
- //
- // Rule 488: mem_initializer ::= mem_initializer_name ( expression_list_opt )
- //
- case 488: {
- action.consumeConstructorChainInitializer();
- break;
- }
-
- //
- // Rule 489: mem_initializer_name ::= dcolon_opt nested_name_specifier_opt class_name
- //
- case 489: {
- action.consumeQualifiedId(false);
- break;
- }
-
- //
- // Rule 492: operator_function_id_name ::= operator_id_name < <openscope-ast> template_argument_list_opt >
- //
- case 492: {
- action.consumeTemplateId();
- break;
- }
-
- //
- // Rule 493: operator_id_name ::= operator overloadable_operator
- //
- case 493: {
- action.consumeOperatorName();
- break;
- }
-
- //
- // Rule 536: template_declaration ::= export_opt template < <openscope-ast> template_parameter_list > declaration
- //
- case 536: {
- action.consumeTemplateDeclaration();
- break;
- }
-
- //
- // Rule 537: export_opt ::= export
- //
- case 537: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 538: export_opt ::= $Empty
- //
- case 538: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 542: template_parameter ::= parameter_declaration
- //
- case 542: {
- action.consumeTemplateParamterDeclaration();
- break;
- }
-
- //
- // Rule 543: type_parameter ::= class identifier_name_opt
- //
- case 543: {
- action.consumeSimpleTypeTemplateParameter(false);
- break;
- }
-
- //
- // Rule 544: type_parameter ::= class identifier_name_opt = type_id
- //
- case 544: {
- action.consumeSimpleTypeTemplateParameter(true);
- break;
- }
-
- //
- // Rule 545: type_parameter ::= typename identifier_name_opt
- //
- case 545: {
- action.consumeSimpleTypeTemplateParameter(false);
- break;
- }
-
- //
- // Rule 546: type_parameter ::= typename identifier_name_opt = type_id
- //
- case 546: {
- action.consumeSimpleTypeTemplateParameter(true);
- break;
- }
-
- //
- // Rule 547: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt
- //
- case 547: {
- action.consumeTemplatedTypeTemplateParameter(false);
- break;
- }
-
- //
- // Rule 548: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt = id_expression
- //
- case 548: {
- action.consumeTemplatedTypeTemplateParameter(true);
- break;
- }
-
- //
- // Rule 549: template_id_name ::= identifier_name < <openscope-ast> template_argument_list_opt >
- //
- case 549: {
- action.consumeTemplateId();
- break;
- }
-
- //
- // Rule 556: nested_name_specifier_inTemplate ::= class_or_namespace_name_inTemplate :: nested_name_specifier_with_template_inTemplate
- //
- case 556: {
- action.consumeNestedNameSpecifier(true);
- break;
- }
-
- //
- // Rule 557: nested_name_specifier_inTemplate ::= class_or_namespace_name_inTemplate ::
- //
- case 557: {
- action.consumeNestedNameSpecifier(false);
- break;
- }
-
- //
- // Rule 558: nested_name_specifier_with_template_inTemplate ::= class_or_namespace_name_with_template_inTemplate :: nested_name_specifier_with_template_inTemplate
- //
- case 558: {
- action.consumeNestedNameSpecifier(true);
- break;
- }
-
- //
- // Rule 559: nested_name_specifier_with_template_inTemplate ::= class_or_namespace_name_with_template_inTemplate ::
- //
- case 559: {
- action.consumeNestedNameSpecifier(false);
- break;
- }
-
- //
- // Rule 560: class_or_namespace_name_with_template_inTemplate ::= template_opt class_or_namespace_name_inTemplate
- //
- case 560: {
- action.consumeNameWithTemplateKeyword();
- break;
- }
-
- //
- // Rule 562: nested_name_specifier_opt_inTemplate ::= $Empty
- //
- case 562: {
- action.consumeNestedNameSpecifierEmpty();
- break;
- }
-
- //
- // Rule 565: type_name_specifier_inTemplate ::= typename dcolon_opt nested_name_specifier identifier_name
- //
- case 565: {
- action.consumeQualifiedId(false);
- break;
- }
-
- //
- // Rule 566: type_name_specifier_inTemplate ::= typename dcolon_opt nested_name_specifier template_opt template_id_name
- //
- case 566: {
- action.consumeQualifiedId(true);
- break;
- }
-
- //
- // Rule 571: declaration_specifiers_inTemplate ::= <openscope-ast> simple_declaration_specifiers
- //
- case 571: {
- action.consumeDeclarationSpecifiersSimple();
- break;
- }
-
- //
- // Rule 572: declaration_specifiers_inTemplate ::= <openscope-ast> class_declaration_specifiers
- //
- case 572: {
- action.consumeDeclarationSpecifiersComposite();
- break;
- }
-
- //
- // Rule 573: declaration_specifiers_inTemplate ::= <openscope-ast> elaborated_declaration_specifiers
- //
- case 573: {
- action.consumeDeclarationSpecifiersComposite();
- break;
- }
-
- //
- // Rule 574: declaration_specifiers_inTemplate ::= <openscope-ast> enum_declaration_specifiers
- //
- case 574: {
- action.consumeDeclarationSpecifiersComposite();
- break;
- }
-
- //
- // Rule 575: declaration_specifiers_inTemplate ::= <openscope-ast> type_name_declaration_specifiers_inTemplate
- //
- case 575: {
- action.consumeDeclarationSpecifiersTypeName();
- break;
- }
-
- //
- // Rule 577: type_id_inTemplate ::= type_specifier_seq_inTemplate
- //
- case 577: {
- action.consumeTypeId(false);
- break;
- }
-
- //
- // Rule 578: type_id_inTemplate ::= type_specifier_seq_inTemplate abstract_declarator
- //
- case 578: {
- action.consumeTypeId(true);
- break;
- }
-
- //
- // Rule 579: template_argument ::= assignment_expression_inTemplate
- //
- case 579: {
- action.consumeTemplateArgumentExpression();
- break;
- }
-
- //
- // Rule 580: template_argument ::= type_id_inTemplate
- //
- case 580: {
- action.consumeTemplateArgumentTypeId();
- break;
- }
-
- //
- // Rule 581: explicit_instantiation ::= template declaration
- //
- case 581: {
- action.consumeTemplateExplicitInstantiation();
- break;
- }
-
- //
- // Rule 582: explicit_specialization ::= template < > declaration
- //
- case 582: {
- action.consumeTemplateExplicitSpecialization();
- break;
- }
-
- //
- // Rule 583: try_block ::= try compound_statement <openscope-ast> handler_seq
- //
- case 583: {
- action.consumeStatementTryBlock(true);
- break;
- }
-
- //
- // Rule 584: try_block ::= try compound_statement
- //
- case 584: {
- action.consumeStatementTryBlock(false);
- break;
- }
-
- //
- // Rule 587: handler ::= catch ( exception_declaration ) compound_statement
- //
- case 587: {
- action.consumeStatementCatchHandler(false);
- break;
- }
-
- //
- // Rule 588: handler ::= catch ( ... ) compound_statement
- //
- case 588: {
- action.consumeStatementCatchHandler(true);
- break;
- }
-
- //
- // Rule 589: exception_declaration ::= type_specifier_seq <openscope-ast> declarator
- //
- case 589: {
- action.consumeDeclarationSimple(true);
- break;
- }
-
- //
- // Rule 590: exception_declaration ::= type_specifier_seq <openscope-ast> abstract_declarator
- //
- case 590: {
- action.consumeDeclarationSimple(true);
- break;
- }
-
- //
- // Rule 591: exception_declaration ::= type_specifier_seq
- //
- case 591: {
- action.consumeDeclarationSimple(false);
- break;
- }
-
- //
- // Rule 593: exception_specification ::= throw ( )
- //
- case 593: {
- action.consumePlaceHolder();
- break;
- }
-
- default:
- break;
- }
- return;
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPParserAction.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPParserAction.java
deleted file mode 100644
index e69f9ddb8f4..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPParserAction.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.internal.core.dom.lrparser.cpp;
-
-import org.eclipse.cdt.core.dom.lrparser.action.cpp.CPPBuildASTParserAction;
-
-class CPPParserAction {
-
- public CPPBuildASTParserAction builder;
-
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPParserprs.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPParserprs.java
deleted file mode 100644
index 4930ccbe01c..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPParserprs.java
+++ /dev/null
@@ -1,1556 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2015 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.dom.lrparser.cpp;
-
-public class CPPParserprs implements lpg.lpgjavaruntime.ParseTable, CPPParsersym {
-
- public interface IsKeyword {
- public final static byte isKeyword[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static byte isKeyword[] = IsKeyword.isKeyword;
-
- public final boolean isKeyword(int index) {
- return isKeyword[index] != 0;
- }
-
- public interface BaseCheck {
- public final static short baseCheck[] = { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 0, 1, 0, 4, 2, 3, 2, 3, 2, 2, 1, 0, 1, 1, 4, 4, 4, 8, 8, 3, 3,
- 4, 4, 3, 3, 2, 2, 7, 7, 7, 7, 4, 4, 5, 6, 3, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 7, 9, 3, 0, 1,
- 2, 2, 1, 2, 3, 4, 1, 0, 3, 1, 0, 3, 5, 1, 4, 1, 3, 3, 1, 3, 3, 3, 1, 3, 3, 1, 3, 3, 1, 3, 3, 3, 3, 1, 3,
- 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 5, 1, 3, 5, 3, 3, 1, 3, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 5, 1, 1,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 2, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 2, 1, 3, 1, 0, 1, 0, 1,
- 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 4, 3, 2, 1, 4, 2, 1, 2, 5, 7, 5, 1, 4, 1, 0, 5, 7, 2, 8, 1, 1, 2, 2,
- 3, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 0, 4, 4, 2, 2, 2, 2, 2, 1, 0, 1, 1, 1, 1,
- 1, 1, 2, 1, 2, 2, 2, 1, 1, 2, 2, 1, 2, 2, 1, 2, 2, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 3, 4, 4, 5, 2, 5, 6, 5, 0, 1, 0, 7, 8, 0, 1, 3, 1, 0, 1, 3, 1, 7, 6, 0, 7, 6, 1, 0,
- 6, 5, 6, 4, 1, 3, 1, 0, 1, 1, 2, 1, 1, 3, 1, 3, 1, 1, 1, 1, 3, 9, 2, 2, 3, 2, 5, 3, 7, 0, 1, 2, 2, 1, 0,
- 1, 1, 1, 3, 1, 2, 1, 1, 2, 3, 1, 1, 1, 3, 2, 1, 2, 2, 9, 8, 2, 1, 3, 1, 3, 1, 0, 1, 0, 2, 1, 1, 3, 1, 3,
- 2, 1, 5, 8, 1, 2, 3, 1, 1, 7, 6, 3, 0, 0, 1, 3, 1, 1, 5, 6, 6, 7, 7, 0, 0, 1, 0, 1, 1, 1, 2, 4, 2, 2, 1,
- 5, 1, 1, 1, 1, 1, 1, 1, 2, 1, 0, 1, 3, 1, 1, 2, 3, 2, 1, 2, 2, 1, 0, 1, 3, 3, 5, 5, 4, 1, 1, 1, 1, 0, 1,
- 5, 2, 2, 1, 2, 2, 1, 0, 1, 3, 4, 3, 1, 1, 5, 2, 1, 1, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 7, 1, 0, 1, 3, 1, 1, 2, 4, 2, 4, 7,
- 9, 5, 1, 3, 1, 0, 1, 1, 3, 2, 3, 2, 2, 1, 0, 1, 1, 4, 5, 2, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 1, 1, 2, 4,
- 4, 2, 1, 2, 5, 5, 3, 3, 1, 4, 3, 1, 0, 1, 3, -271, 0, 0, 0, 0, -21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, -63, 0, -2, 0, 0, 0, 0, 0, 0, -119, 0, -4, 0, 0, -514, -25, 0, 0, 0, 0,
- -519, 0, 0, 0, -418, 0, -6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -40, -7, 0, 0, 0, 0, -145, 0, -53, 0, 0,
- 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -217, 0, 0, 0, 0, -71, 0, -231, 0, 0, 0, 0, 0, 0, 0, -9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -227, -450, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -88, 0, 0, -515, 0, -3, 0, 0, -48, 0, 0, 0, 0, -116,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -406, 0, 0,
- 0, 0, 0, 0, 0, 0, -34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -42, 0, 0, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -257, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -251, -14, 0, 0, 0, 0, -110, 0, -12, -24, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -30, 0, 0, 0, -16, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, -106, 0, 0, 0, 0, 0,
- 0, -297, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -31, 0, 0, -92,
- 0, 0, 0, 0, 0, 0, 0, -58, -302, 0, 0, 0, 0, 0, 0, 0, 0, 0, -32, 0, -50, 0, 0, -13, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -438, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -374, 0, 0, 0, 0, 0, 0, -210, 0, 0, 0, 0, -35, -79, 0, -258, 0, 0, 0, 0, -228, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -146, 0, 0, -532, 0, 0, 0, 0, -37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -47, -38, 0, 0, 0, 0, 0, 0, 0, 0, -59, 0, 0, 0, 0, 0, 0, 0, 0, 0, -273, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -18, -39, 0, 0, 0, 0, 0, 0, -111, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -17, 0, -470, 0, 0, 0, 0, 0,
- 0, -60, 0, 0, 0, 0, -533, -253, 0, -358, 0, -89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -43, 0, 0, 0, 0, 0, 0,
- -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -55, -49, 0, -56, 0,
- 0, 0, 0, 0, 0, -93, 0, -64, 0, 0, -503, 0, 0, 0, 0, -304, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -466, 0, 0, 0, 0, 0, 0, -333, 0, 0, 0, 0, -41, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -576, -51, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0,
- 0, 0, 0, 0, 0, -442, 0, 0, 0, 0, -130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, -535, 0, 0, 0, 0, -443, 0, 0, 0, 0, -223, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, 0, -75, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -182, 0, 0, 0, 0, -46, -298, 0, -107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -62, -531, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -186, -352, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, -77, 0, 0, 0,
- 0, 0, -530, 0, -95, -218, 0, 0, 0, 0, 0, -230, 0, -284, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -479, 0, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -15, -33, 0, -10, 0,
- 0, 0, 0, -105, 0, 0, 0, 0, 0, 0, -353, -133, 0, 0, 0, 0, 0, 0, -285, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, -57, 0, 0, 0, -20, 0,
- 0, 0, 0, 0, 0, 0, 0, -87, 0, 0, -185, 0, 0, -135, -94, 0, 0, 0, 0, 0, 0, -286, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -147, 0, 0, 0, 0, 0, -569, 0, 0, 0, 0, 0,
- 0, -234, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -551, -115, 0, 0, 0, 0, 0, 0, -287, 0, 0, 0, 0,
- -580, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -29, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -22, -246, 0, 0, 0, 0, 0, 0, 0, 0, 0, -240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -288, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -229, 0, 0, 0, 0,
- 0, 0, -70, -61, 0, 0, -235, 0, 0, 0, 0, 0, -150, 0, -423, -155, 0, 0, -151, 0, 0, 0, -200, 0, 0, 0, 0,
- 0, 0, -289, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -524,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -236, -247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -136, -152, -222, 0, 0, 0,
- 0, 0, 0, 0, 0, -290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -547,
- 0, 0, 0, -390, 0, 0, -592, 0, 0, 0, 0, -422, 0, 0, 0, -113, -248, 0, 0, 0, 0, 0, 0, -582, -139, 0, 0,
- -454, -153, 0, -154, 0, 0, 0, 0, 0, 0, 0, -291, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, -601, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -143, 0, 0, 0, 0,
- 0, 0, 0, -301, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -292, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, -376, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -237, 0, 0, 0, -134, 0,
- 0, 0, -583, -104, 0, 0, 0, 0, 0, 0, -86, 0, 0, 0, 0, 0, 0, -293, 0, 0, 0, 0, -156, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -378, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -238, -80,
- 0, 0, 0, 0, 0, 0, 0, -167, 0, -465, 0, 0, 0, -330, -97, 0, 0, 0, 0, 0, 0, -294, 0, 0, 0, 0, -168, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -350, 0, 0, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -373, 0, 0, 0, 0, 0, 0, 0, -169, 0, -170, 0, -504, 0, 0, 0, 0, 0, 0, 0, 0, 0, -319, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 0, 0, 0, -172, 0, 0, 0, 0, 0,
- 0, -190, 0, 0, -570, 0, 0, 0, 0, -320, 0, 0, 0, 0, -173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -174, 0, -175, 0, -81, 0, 0, 0, 0, 0, 0, -176, 0, 0, -571, 0, 0, 0, 0, -321, 0, 0, 0,
- 0, -219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -372, 0, -84, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -517, 0, 0, 0, 0, -322, 0, 0, 0, 0, -220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -602, 0, 0, 0, 0, -85, 0, 0, 0, 0, 0, 0, 0, 0, 0, -518, 0, 0, 0, 0, -323, 0, 0, 0, 0,
- -317, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, -380, 0, 0, 0, 0, 0, 0, 0, 0,
- -177, 0, 0, 0, 0, -520, 0, 0, 0, 0, -324, 0, 0, 0, 0, -565, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -126, -579, 0, -596, 0, 0, 0, 0, 0, 0, -178, 0, 0, 0, 0, -554, 0, 0, 0, 0, -325, 0, 0,
- 0, 0, -90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -142, 0, 0, 0, 0, 0, -344, 0, -128, 0, -326, 0, 0, 0, 0, -129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -180, 0, 0, 0, -356, 0, -132, 0, -327, 0,
- 0, 0, 0, -181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, -183, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -207, 0, 0, -204, -187, 0, -140, 0, -328, 0, 0, 0, 0, -457, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -225, -594, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -226, 0, 0, -189, -192, 0,
- -193, 0, -329, 0, 0, 0, 0, -495, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -455,
- -331, 0, -355, 0, -299, 0, 0, 0, 0, 0, 0, 0, 0, 0, -54, 0, 0, 0, 0, -437, 0, 0, 0, 0, -194, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -254, 0, 0, 0, 0, 0, 0, -318, 0, 0, 0, 0, 0,
- -458, 0, 0, 0, -478, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -268, -243, 0, -346, 0, 0, 0, -370, 0, 0, 0, 0, 0, 0, 0, 0, -474, -195, 0, 0, -332, 0, 0, 0, -341, 0, 0,
- 0, -345, 0, 0, 0, -347, 0, 0, 0, 0, 0, 0, -494, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -196, 0, 0, -197, 0, 0, 0, 0, 0, 0, 0, 0, -198, 0, 0, 0, 0, -244, -269, 0, -585, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -363, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -411, 0, -501, 0, 0, -476, 0, -361, -420, 0, -348, 0, 0, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -421, 0, 0, 0, 0, 0, 0, -364, 0, 0, -357, 0, 0, 0, 0, -449,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -205, 0, -439, 0, 0, 0, 0, 0, 0,
- -502, 0, 0, -469, 0, 0, -490, -149, 0, -491, -206, -208, 0, -209, -184, 0, 0, 0, -409, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, 0, 0, -493, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -451, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -566,
- -214, 0, 0, 0, 0, 0, 0, -497, 0, -505, 0, 0, 0, -440, 0, -527, 0, 0, 0, 0, 0, -215, -78, 0, 0, 0, 0,
- -452, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, -232, 0, 0,
- -561, 0, 0, 0, 0, 0, 0, 0, 0, 0, -578, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -365, 0, -371, 0, -539, 0, 0, 0, 0, 0, 0, -241, 0, 0, -546, 0, -557, -233, -256, 0, -572,
- 0, -441, 0, 0, 0, -272, -588, -593, -599, 0, 0, 0, 0, 0, -171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -316, -550, 0, -334, 0, 0, 0, -335, 0, 0, -342, -343, 0, -349,
- 0, 0, 0, -351, -296, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -338, 0, -259, -366, -337, 0, -367, 0, 0, -368, -369, -381, -382, -123, 0, -383, -384, 0, 0, 0, 0, -270,
- 0, 0, -385, 0, 0, 0, -387, -388, 0, -389, 0, 0, 0, -315, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -393, 0, -394, -395, 0, -396, 0, 0, 0, 0, 0, 0, -283, 0, 0, 0, 0, -397, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -398, -446, -399, 0, -400, -499, 0,
- -375, -401, 0, -496, 0, 0, -402, -403, 0, 0, 0, 0, 0, 0, -404, -405, 0, -408, -410, 0, -412, 0, -413, 0,
- 0, -312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -414, 0,
- -415, 0, 0, 0, 0, -281, 0, 0, 0, 0, -417, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -425, -426, -427, -428, -429, -430, -431, 0, -432, -433, -434, -435, -436, -453, -461, -462, -463, 0,
- -464, -480, 0, 0, 0, 0, -481, 0, -379, -313, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -483, 0, -488, 0, 0, 0, -282, 0, 0, 0, 0, -424, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -459, -492, -498, -511, -512, -516, 0, -528, -534, -548, -552,
- -553, -559, -567, -568, -581, 0, -586, -591, 0, 0, 0, -471, -477, 0, -310, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -278, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -109, 0, 0, 0, 0, -311, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -303, 0, 0, 0, 0, 0, 0, 0, -506, -513, -523, -525, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -279, 0, 0, 0, 0, -529, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -540, -541, -339, -542, -543, 0, -555, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -280, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -305,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -224, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -556, -574, 0, 0, 0,
- 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, -575, 0, 0, -589, 0, 0, 0, -595, 0, 0, 0, 0, -598, 0, 0, 0, -122, 0,
- 0, -600, -544, 0, 0, 0, -460, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -274, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -275, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -419, -260, 0,
- -295, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -307, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -308, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -309, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -336, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -360, 0,
- 0, 0, 0, 0, 0, 0, -392, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -5, 0, 0, 0, 0, 0, -314, -507, 0, -538, -521, 0, 0, 0, 0, 0, 0, 0, -508, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -587, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -276, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -573, 0, 0, 0, 0, 0, 0, -277, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -300, 0, 0, 0, -362, 0, 0, 0, 0, 0, 0, 0, 0, -242, 0, 0, -509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -36, 0, 0, 0, 0, 0, 0, 0, -510, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -131, 0, 0, 0, 0, 0, 0, 0, -549, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -584, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -263, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -264, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -563, 0, 0, 0, 0, 0, -416,
- 0, 0, 0, 0, 0, 0, -485, -44, 0, 0, 0, 0, -545, 0, -354, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -445, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -265, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -482, 0, 0, 0, 0, 0, 0, 0, -45, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -249, 0, 0, 0, 0, 0, 0, -487, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -484, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, -96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -522, 0, 0, 0, 0, 0, 0, 0, -526, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -558, 0, 0, 0, 0, 0, 0, 0, 0, -444, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -560, 0, 0, 0, 0, 0, 0, -577, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -148, 0, 0, 0, 0,
- 0, 0, 0, 0, -188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -562, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -564, 0, 0, 0, 0, 0, -473, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -377, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -250, 0, 0, 0, 0, 0, 0, 0, 0,
- -597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -603, 0, 0, 0, 0, 0,
- 0, 0, -391, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -359, 0, 0, 0, -472, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -266, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -267, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -159, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -162,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -261, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -262, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -386, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -467, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -456, 0, 0, 0, -158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, -447, 0, 0, 0, 0,
- 0, 0, 0, 0, -448, -468, -125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -500, 0, 0, 0, 0,
- 0, 0, 0, -475, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -604, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, -536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -537, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -82,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -245, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -83, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -340, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -239, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -91, 0, 0, 0, 0, 0, 0, 0, 0, 0, -590, 0, 0, 0, 0, 0, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -255, 0, 0, 0, 0, 0, 0, 0, -486, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -489, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static short baseCheck[] = BaseCheck.baseCheck;
-
- @Override
- public final int baseCheck(int index) {
- return baseCheck[index];
- }
-
- public final static short rhs[] = baseCheck;
-
- @Override
- public final int rhs(int index) {
- return rhs[index];
- }
-
- public interface BaseAction {
- public final static char baseAction[] = { 191, 5, 154, 94, 94, 30, 30, 81, 81, 39, 39, 42, 42, 191, 1, 1, 16,
- 16, 16, 16, 16, 16, 16, 17, 17, 17, 15, 11, 11, 6, 6, 6, 6, 6, 6, 2, 75, 75, 4, 4, 12, 12, 44, 44, 155,
- 155, 156, 67, 67, 43, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
- 157, 157, 157, 132, 132, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 192, 192, 193, 193,
- 194, 160, 160, 161, 161, 158, 158, 162, 159, 159, 21, 21, 22, 22, 23, 23, 23, 24, 24, 24, 24, 25, 25,
- 25, 26, 26, 26, 31, 31, 31, 31, 31, 33, 33, 33, 34, 34, 35, 35, 36, 36, 38, 38, 40, 40, 41, 41, 45, 45,
- 45, 45, 45, 50, 50, 50, 53, 53, 60, 60, 61, 61, 62, 62, 63, 63, 64, 64, 65, 65, 65, 65, 65, 65, 65, 65,
- 65, 65, 65, 65, 65, 29, 29, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 37, 28, 163, 163, 105,
- 105, 195, 195, 104, 218, 218, 82, 82, 82, 82, 82, 82, 82, 82, 82, 83, 83, 83, 79, 79, 66, 66, 196, 196,
- 84, 84, 84, 117, 117, 197, 197, 85, 85, 85, 85, 198, 198, 86, 86, 86, 86, 86, 87, 87, 95, 95, 95, 95,
- 95, 95, 95, 95, 54, 54, 54, 54, 54, 118, 118, 116, 116, 55, 199, 27, 27, 27, 27, 27, 49, 49, 69, 69, 69,
- 69, 69, 137, 137, 133, 133, 133, 133, 133, 134, 134, 134, 135, 135, 135, 136, 136, 136, 165, 165, 165,
- 70, 70, 70, 70, 70, 71, 71, 71, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 106, 138, 138, 138, 138,
- 138, 138, 111, 111, 111, 166, 167, 167, 112, 112, 200, 169, 169, 168, 168, 139, 139, 119, 91, 91, 140,
- 57, 48, 170, 170, 58, 56, 97, 97, 171, 171, 164, 164, 141, 142, 142, 143, 93, 93, 172, 172, 77, 77, 77,
- 73, 73, 72, 78, 78, 80, 80, 68, 68, 68, 59, 98, 98, 108, 107, 107, 51, 51, 74, 74, 76, 76, 52, 109, 109,
- 109, 99, 99, 99, 100, 100, 101, 101, 101, 102, 102, 120, 120, 120, 122, 122, 121, 121, 219, 219, 103,
- 103, 202, 202, 202, 202, 202, 145, 47, 47, 174, 201, 201, 146, 146, 147, 147, 147, 148, 176, 203, 203,
- 32, 32, 110, 114, 114, 114, 114, 205, 124, 123, 123, 113, 113, 113, 177, 178, 178, 178, 178, 178, 178,
- 178, 178, 178, 178, 178, 207, 207, 204, 204, 206, 206, 179, 180, 180, 180, 180, 181, 208, 126, 125, 125,
- 209, 209, 182, 182, 182, 182, 115, 115, 115, 210, 210, 8, 8, 9, 211, 211, 212, 183, 173, 173, 184, 184,
- 185, 186, 186, 7, 7, 10, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213,
- 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213,
- 213, 213, 213, 213, 213, 89, 92, 92, 187, 187, 150, 150, 151, 151, 151, 151, 151, 151, 3, 152, 152, 149,
- 149, 188, 220, 221, 221, 222, 222, 223, 224, 224, 189, 190, 190, 190, 190, 214, 214, 214, 128, 128, 128,
- 128, 128, 129, 130, 130, 127, 127, 96, 90, 88, 88, 175, 175, 131, 131, 215, 215, 215, 153, 153, 144,
- 144, 216, 216, 1119, 35, 3403, 3401, 5379, 1214, 27, 30, 31, 983, 961, 26, 28, 3400, 296, 25, 23, 50,
- 2190, 106, 76, 77, 108, 2209, 2258, 2256, 2736, 1231, 587, 177, 1008, 2792, 308, 2738, 2927, 2878, 2939,
- 1231, 2930, 55, 3066, 176, 3135, 1331, 35, 314, 191, 673, 3230, 35, 312, 266, 243, 3081, 1244, 35, 1044,
- 32, 4550, 3752, 27, 30, 31, 983, 961, 375, 28, 2396, 1513, 269, 264, 265, 6168, 845, 3221, 243, 35, 893,
- 425, 2409, 35, 1044, 32, 5230, 5171, 27, 30, 31, 983, 961, 26, 28, 2143, 296, 25, 23, 50, 2190, 106, 76,
- 77, 108, 2209, 2258, 2256, 2322, 309, 49, 162, 2396, 276, 279, 282, 825, 1180, 501, 35, 433, 1247, 1643,
- 1372, 535, 2544, 2547, 2302, 3163, 352, 1073, 357, 2347, 1564, 497, 2345, 1587, 911, 1142, 1653, 5992,
- 285, 2495, 2356, 2542, 2638, 161, 579, 2149, 2244, 35, 3343, 32, 4550, 1473, 27, 30, 31, 983, 961, 375,
- 28, 243, 35, 330, 1475, 3326, 2243, 1785, 3771, 501, 35, 1535, 1669, 1327, 2409, 35, 1044, 32, 5230,
- 5171, 27, 30, 31, 983, 961, 26, 28, 2143, 296, 25, 23, 50, 2190, 106, 76, 77, 108, 2209, 2258, 2256,
- 2322, 49, 1967, 162, 1292, 3674, 2608, 985, 550, 576, 3082, 580, 1247, 964, 324, 243, 1527, 1525, 34,
- 2302, 355, 1848, 357, 1329, 2347, 350, 1189, 2345, 921, 2144, 1706, 348, 3327, 2651, 2495, 2356, 2542,
- 2638, 161, 579, 3336, 2231, 69, 720, 3279, 2409, 35, 1044, 32, 5230, 5171, 27, 30, 31, 983, 961, 26, 28,
- 2143, 296, 25, 23, 50, 2190, 106, 76, 77, 108, 2209, 2258, 2256, 2322, 427, 464, 162, 1579, 35, 1044,
- 32, 5286, 2597, 27, 30, 31, 983, 961, 57, 28, 2433, 1588, 2302, 2642, 1254, 1217, 155, 2347, 62, 1178,
- 2345, 1217, 4752, 550, 576, 3082, 580, 2495, 2356, 2542, 2638, 161, 579, 2120, 35, 1044, 32, 1467, 193,
- 41, 30, 31, 983, 961, 2100, 3086, 94, 332, 2651, 455, 456, 3339, 972, 1331, 35, 490, 480, 5180, 988,
- 585, 2689, 35, 1044, 32, 5230, 5171, 27, 30, 31, 983, 961, 26, 28, 2143, 296, 25, 23, 50, 2190, 106, 76,
- 77, 108, 2209, 2258, 2256, 2322, 1685, 266, 162, 243, 35, 2691, 1992, 550, 576, 3082, 580, 1582, 243,
- 35, 893, 425, 1572, 2131, 2302, 278, 264, 265, 1793, 2347, 2379, 2197, 2345, 62, 3264, 3088, 1245, 4869,
- 2651, 2495, 2356, 2542, 2638, 161, 579, 2757, 35, 1044, 32, 5230, 489, 27, 30, 31, 983, 961, 26, 28,
- 2143, 296, 25, 23, 50, 2190, 106, 76, 77, 108, 2209, 2258, 2256, 2736, 2485, 61, 177, 765, 2792, 155,
- 2738, 2927, 2878, 2939, 1217, 2930, 1733, 3066, 176, 2673, 3771, 2660, 2573, 415, 1627, 35, 1044, 32,
- 5286, 2149, 27, 30, 31, 983, 961, 56, 28, 3687, 551, 576, 3082, 580, 243, 35, 317, 2477, 35, 1044, 32,
- 5230, 141, 27, 30, 31, 983, 961, 26, 28, 2143, 296, 25, 23, 50, 2190, 106, 76, 77, 108, 2209, 2258,
- 2256, 2736, 155, 2789, 177, 1329, 2792, 6246, 2738, 2927, 2878, 2939, 1371, 2930, 369, 3066, 176, 2673,
- 483, 2689, 2735, 415, 3325, 35, 1044, 32, 5230, 2234, 27, 30, 31, 983, 961, 26, 28, 2143, 296, 25, 23,
- 50, 2190, 106, 76, 77, 108, 2209, 2258, 2256, 3434, 1951, 1344, 255, 1595, 422, 416, 2688, 3164, 2551,
- 35, 1044, 32, 5230, 484, 27, 30, 31, 983, 961, 26, 28, 2143, 296, 25, 23, 50, 2190, 106, 76, 77, 108,
- 2209, 2258, 2256, 2736, 428, 464, 177, 1515, 2792, 1941, 2738, 2927, 2878, 2939, 760, 2930, 1563, 3066,
- 176, 2673, 266, 3138, 743, 415, 243, 3221, 2202, 35, 1044, 32, 2745, 60, 2604, 30, 31, 983, 961, 418,
- 281, 264, 265, 423, 416, 2688, 3019, 35, 1044, 32, 5230, 1095, 27, 30, 31, 983, 961, 26, 28, 2143, 296,
- 25, 23, 50, 2190, 106, 76, 77, 108, 2209, 2258, 2256, 2736, 1516, 62, 177, 148, 2792, 4956, 2738, 2927,
- 2878, 2939, 413, 2930, 1985, 3066, 176, 243, 35, 893, 425, 191, 3325, 35, 1044, 32, 5230, 360, 27, 30,
- 31, 983, 961, 26, 28, 2143, 296, 25, 23, 50, 2190, 106, 76, 77, 108, 2209, 2258, 2256, 2736, 468, 243,
- 35, 3669, 3573, 413, 416, 2688, 3019, 35, 1044, 32, 5230, 1515, 27, 30, 31, 983, 961, 26, 28, 2143, 296,
- 25, 23, 50, 2190, 106, 76, 77, 108, 2209, 2258, 2256, 2736, 3135, 62, 177, 668, 2792, 5014, 2738, 2927,
- 2878, 2939, 325, 2930, 359, 3066, 176, 243, 35, 1525, 311, 409, 2443, 594, 3019, 35, 1044, 32, 5230,
- 2218, 27, 30, 31, 983, 961, 26, 28, 2143, 296, 25, 23, 50, 2190, 106, 76, 77, 108, 2209, 2258, 2256,
- 2736, 2836, 93, 177, 2579, 2792, 3326, 2738, 2927, 2878, 2939, 1577, 2930, 2248, 3066, 176, 243, 35,
- 893, 425, 409, 3019, 35, 1044, 32, 5230, 2074, 27, 30, 31, 983, 961, 26, 28, 2143, 296, 25, 23, 50,
- 2190, 106, 76, 77, 108, 2209, 2258, 2256, 2736, 471, 499, 177, 1964, 2792, 155, 2738, 2927, 2878, 2939,
- 677, 2930, 426, 3066, 176, 243, 35, 1525, 313, 409, 1862, 2920, 408, 2897, 35, 1044, 32, 5230, 3089, 27,
- 30, 31, 983, 961, 26, 28, 2143, 296, 25, 23, 50, 2190, 106, 76, 77, 108, 2209, 2258, 2256, 2736, 2557,
- 1475, 571, 2864, 2792, 3771, 2738, 2927, 2878, 2939, 365, 2930, 2721, 2999, 197, 3674, 2621, 35, 1044,
- 32, 5230, 407, 27, 30, 31, 983, 961, 26, 28, 2143, 296, 25, 23, 50, 2190, 106, 76, 77, 108, 2209, 2258,
- 2256, 2736, 2536, 2149, 177, 3089, 2792, 4517, 2738, 2927, 2878, 2939, 2841, 2930, 1449, 3066, 176, 42,
- 2674, 1329, 2608, 175, 1571, 501, 35, 433, 363, 405, 368, 845, 3221, 3142, 35, 1044, 32, 5230, 2309, 27,
- 30, 31, 983, 961, 26, 28, 2143, 296, 25, 23, 50, 2190, 106, 76, 77, 108, 2209, 2258, 2256, 2322, 4469,
- 2719, 162, 1361, 35, 1044, 32, 4550, 1473, 27, 30, 31, 983, 961, 375, 28, 1258, 2779, 2302, 71, 1210,
- 330, 4351, 2347, 1515, 215, 2345, 44, 2674, 273, 296, 2149, 2142, 2495, 2356, 2542, 2638, 161, 173,
- 3142, 35, 1044, 32, 5230, 379, 27, 30, 31, 983, 961, 26, 28, 2143, 296, 25, 23, 50, 2190, 106, 76, 77,
- 108, 2209, 2258, 2256, 2322, 1515, 266, 162, 718, 430, 464, 2605, 35, 312, 355, 1848, 357, 155, 418,
- 350, 1189, 2040, 2124, 2302, 274, 264, 265, 3337, 2347, 412, 62, 2345, 585, 1515, 5076, 349, 2936, 230,
- 2495, 2356, 2542, 2638, 161, 172, 3142, 35, 1044, 32, 5230, 324, 27, 30, 31, 983, 961, 26, 28, 2143,
- 296, 25, 23, 50, 2190, 106, 76, 77, 108, 2209, 2258, 2256, 2322, 586, 266, 162, 2049, 1515, 2510, 838,
- 2770, 3279, 501, 35, 433, 343, 346, 626, 1437, 1375, 155, 2302, 284, 264, 265, 770, 2347, 429, 464,
- 2345, 1304, 412, 273, 296, 2821, 499, 2495, 2356, 2542, 2638, 161, 171, 3142, 35, 1044, 32, 5230, 2821,
- 27, 30, 31, 983, 961, 26, 28, 2143, 296, 25, 23, 50, 2190, 106, 76, 77, 108, 2209, 2258, 2256, 2322,
- 410, 266, 162, 1361, 35, 1044, 32, 4550, 1473, 27, 30, 31, 983, 961, 375, 28, 2129, 155, 2302, 274, 264,
- 265, 4351, 2347, 2589, 2685, 2345, 1331, 35, 567, 479, 5400, 493, 2495, 2356, 2542, 2638, 161, 170,
- 3142, 35, 1044, 32, 5230, 379, 27, 30, 31, 983, 961, 26, 28, 2143, 296, 25, 23, 50, 2190, 106, 76, 77,
- 108, 2209, 2258, 2256, 2322, 3683, 266, 162, 3393, 2772, 243, 35, 1525, 316, 355, 1848, 357, 155, 1173,
- 350, 1189, 2298, 841, 2302, 287, 264, 265, 238, 2347, 1515, 62, 2345, 3375, 3049, 5300, 2034, 70, 499,
- 2495, 2356, 2542, 2638, 161, 169, 3142, 35, 1044, 32, 5230, 71, 27, 30, 31, 983, 961, 26, 28, 2143, 296,
- 25, 23, 50, 2190, 106, 76, 77, 108, 2209, 2258, 2256, 2322, 1515, 266, 162, 1361, 35, 1044, 32, 4550,
- 1473, 27, 30, 31, 983, 961, 375, 28, 2828, 155, 2302, 278, 264, 265, 4351, 2347, 3125, 3085, 2345, 361,
- 664, 3111, 243, 35, 330, 2495, 2356, 2542, 2638, 161, 168, 3142, 35, 1044, 32, 5230, 379, 27, 30, 31,
- 983, 961, 26, 28, 2143, 296, 25, 23, 50, 2190, 106, 76, 77, 108, 2209, 2258, 2256, 2322, 3136, 266, 162,
- 3393, 1597, 35, 314, 3138, 5913, 355, 1848, 357, 243, 3666, 350, 1189, 2533, 155, 2302, 281, 264, 265,
- 4351, 2347, 1515, 413, 2345, 3378, 1848, 3112, 3677, 3181, 5905, 2495, 2356, 2542, 2638, 161, 167, 3142,
- 35, 1044, 32, 5230, 379, 27, 30, 31, 983, 961, 26, 28, 2143, 296, 25, 23, 50, 2190, 106, 76, 77, 108,
- 2209, 2258, 2256, 2322, 1515, 1862, 162, 3393, 2111, 35, 1044, 32, 5404, 3085, 27, 30, 31, 983, 961, 26,
- 28, 2889, 2302, 548, 2605, 35, 315, 2347, 588, 2234, 2345, 3381, 1331, 35, 490, 358, 5180, 2495, 2356,
- 2542, 2638, 161, 166, 3142, 35, 1044, 32, 5230, 1862, 27, 30, 31, 983, 961, 26, 28, 2143, 296, 25, 23,
- 50, 2190, 106, 76, 77, 108, 2209, 2258, 2256, 2322, 988, 1862, 162, 1855, 35, 1044, 32, 5404, 534, 27,
- 30, 31, 983, 961, 59, 28, 3748, 2720, 2302, 392, 71, 35, 330, 2347, 1515, 1582, 2345, 88, 594, 1840,
- 102, 414, 1515, 2495, 2356, 2542, 2638, 161, 165, 3142, 35, 1044, 32, 5230, 313, 27, 30, 31, 983, 961,
- 26, 28, 2143, 296, 25, 23, 50, 2190, 106, 76, 77, 108, 2209, 2258, 2256, 2322, 1515, 266, 162, 1855, 35,
- 1044, 32, 5404, 2532, 27, 30, 31, 983, 961, 58, 28, 3855, 155, 2302, 284, 264, 265, 4052, 2347, 587,
- 3286, 2345, 243, 35, 1525, 3668, 499, 1515, 2495, 2356, 2542, 2638, 161, 164, 3142, 35, 1044, 32, 5230,
- 1158, 27, 30, 31, 983, 961, 26, 28, 2143, 296, 25, 23, 50, 2190, 106, 76, 77, 108, 2209, 2258, 2256,
- 2322, 2648, 266, 162, 2202, 35, 1044, 32, 838, 2626, 40, 30, 31, 983, 961, 487, 2689, 2735, 840, 2302,
- 570, 264, 265, 4351, 2347, 3068, 1220, 2345, 1939, 1304, 243, 35, 1525, 566, 2495, 2356, 2542, 2638,
- 161, 163, 3019, 35, 1044, 32, 5230, 379, 27, 30, 31, 983, 961, 26, 28, 2143, 296, 25, 23, 50, 2190, 106,
- 76, 77, 108, 2209, 2258, 2256, 2736, 1665, 1231, 177, 1182, 2792, 2418, 2738, 2927, 2878, 2939, 484,
- 2930, 1231, 3066, 176, 243, 35, 893, 425, 188, 3019, 35, 1044, 32, 5230, 931, 27, 30, 31, 983, 961, 26,
- 28, 2143, 296, 25, 23, 50, 2190, 106, 76, 77, 108, 2209, 2258, 2256, 2736, 470, 320, 177, 496, 2792,
- 155, 2738, 2927, 2878, 2939, 3385, 2930, 1512, 3066, 176, 243, 35, 893, 425, 187, 3019, 35, 1044, 32,
- 5230, 2218, 27, 30, 31, 983, 961, 26, 28, 2143, 296, 25, 23, 50, 2190, 106, 76, 77, 108, 2209, 2258,
- 2256, 2736, 469, 496, 177, 1231, 2792, 155, 2738, 2927, 2878, 2939, 5873, 2930, 362, 3066, 176, 243,
- 3675, 1525, 74, 186, 3019, 35, 1044, 32, 5230, 2218, 27, 30, 31, 983, 961, 26, 28, 2143, 296, 25, 23,
- 50, 2190, 106, 76, 77, 108, 2209, 2258, 2256, 2736, 3138, 458, 177, 3078, 2792, 155, 2738, 2927, 2878,
- 2939, 5885, 2930, 340, 3066, 176, 1741, 35, 1525, 3676, 185, 3019, 35, 1044, 32, 5230, 2218, 27, 30, 31,
- 983, 961, 26, 28, 2143, 296, 25, 23, 50, 2190, 106, 76, 77, 108, 2209, 2258, 2256, 2736, 155, 1231, 177,
- 5784, 2792, 671, 2738, 2927, 2878, 2939, 410, 2930, 332, 3066, 176, 1741, 35, 1525, 311, 184, 3019, 35,
- 1044, 32, 5230, 3244, 27, 30, 31, 983, 961, 26, 28, 2143, 296, 25, 23, 50, 2190, 106, 76, 77, 108, 2209,
- 2258, 2256, 2736, 155, 1231, 177, 1231, 2792, 5961, 2738, 2927, 2878, 2939, 836, 2930, 419, 3066, 176,
- 243, 35, 1525, 3680, 183, 3019, 35, 1044, 32, 5230, 1371, 27, 30, 31, 983, 961, 26, 28, 2143, 296, 25,
- 23, 50, 2190, 106, 76, 77, 108, 2209, 2258, 2256, 2736, 155, 51, 177, 391, 2792, 743, 2738, 2927, 2878,
- 2939, 155, 2930, 594, 3066, 176, 1052, 2218, 339, 1371, 182, 3019, 35, 1044, 32, 5230, 1371, 27, 30, 31,
- 983, 961, 26, 28, 2143, 296, 25, 23, 50, 2190, 106, 76, 77, 108, 2209, 2258, 2256, 2736, 155, 97, 177,
- 98, 2792, 1542, 2738, 2927, 2878, 2939, 338, 2930, 1776, 3066, 176, 586, 2218, 335, 2431, 181, 3019, 35,
- 1044, 32, 5230, 2075, 27, 30, 31, 983, 961, 26, 28, 2143, 296, 25, 23, 50, 2190, 106, 76, 77, 108, 2209,
- 2258, 2256, 2736, 155, 574, 177, 331, 2792, 2463, 2738, 2927, 2878, 2939, 441, 2930, 155, 3066, 176,
- 1515, 2398, 2768, 2938, 180, 3019, 35, 1044, 32, 5230, 2218, 27, 30, 31, 983, 961, 26, 28, 2143, 296,
- 25, 23, 50, 2190, 106, 76, 77, 108, 2209, 2258, 2256, 2736, 155, 3136, 177, 321, 2792, 1516, 2738, 2927,
- 2878, 2939, 2824, 2930, 155, 3066, 176, 399, 933, 1602, 1012, 179, 3019, 35, 1044, 32, 5230, 1450, 27,
- 30, 31, 983, 961, 26, 28, 2143, 296, 25, 23, 50, 2190, 106, 76, 77, 108, 2209, 2258, 2256, 2736, 2464,
- 1936, 177, 2544, 2792, 155, 2738, 2927, 2878, 2939, 802, 2930, 322, 3066, 176, 243, 35, 893, 425, 178,
- 3019, 35, 1044, 32, 5230, 1292, 27, 30, 31, 983, 961, 26, 28, 2143, 296, 25, 23, 50, 2190, 106, 76, 77,
- 108, 2209, 2258, 2256, 2736, 308, 2732, 177, 2074, 2792, 3178, 2738, 2927, 2878, 2939, 155, 2930, 1474,
- 3066, 176, 1000, 2926, 35, 565, 192, 3203, 35, 1044, 32, 5230, 1862, 27, 30, 31, 983, 961, 26, 28, 2143,
- 296, 25, 23, 50, 2190, 106, 76, 77, 108, 2209, 2258, 2256, 2322, 1862, 2378, 162, 2202, 35, 1044, 32,
- 2923, 2881, 3041, 30, 31, 983, 961, 364, 371, 1965, 582, 2302, 89, 155, 475, 102, 2347, 155, 3284, 2345,
- 310, 1371, 3477, 5761, 2234, 2509, 2495, 2356, 2542, 2638, 161, 160, 3019, 35, 1044, 32, 5230, 2260, 27,
- 30, 31, 983, 961, 26, 28, 2143, 296, 25, 23, 50, 2190, 106, 76, 77, 108, 2209, 2258, 2256, 2736, 485,
- 334, 177, 1241, 2792, 439, 2738, 2927, 2878, 2939, 2698, 2930, 1933, 3066, 176, 389, 2192, 2614, 1862,
- 140, 3264, 35, 1044, 32, 5230, 2234, 27, 30, 31, 983, 961, 26, 28, 2143, 296, 25, 23, 50, 2190, 106, 76,
- 77, 108, 2209, 2258, 2256, 2736, 155, 24, 177, 3075, 2792, 4060, 2738, 2927, 2878, 2939, 1371, 2930, 62,
- 3066, 176, 3172, 6028, 1862, 1371, 222, 3325, 35, 1044, 32, 5230, 1648, 27, 30, 31, 983, 961, 26, 28,
- 2143, 296, 25, 23, 50, 2190, 106, 76, 77, 108, 2209, 2258, 2256, 2736, 386, 1292, 212, 390, 2792, 1371,
- 2738, 2927, 2878, 2939, 232, 2930, 1862, 2999, 197, 3325, 35, 1044, 32, 5230, 1371, 27, 30, 31, 983,
- 961, 26, 28, 2143, 296, 25, 23, 50, 2190, 106, 76, 77, 108, 2209, 2258, 2256, 2736, 69, 2234, 231, 2130,
- 2792, 155, 2738, 2927, 2878, 2939, 3486, 2930, 62, 2999, 197, 155, 6064, 443, 1371, 2438, 640, 1371,
- 757, 2251, 3273, 2437, 243, 35, 893, 425, 3325, 35, 1044, 32, 5230, 460, 27, 30, 31, 983, 961, 26, 28,
- 2143, 296, 25, 23, 50, 2190, 106, 76, 77, 108, 2209, 2258, 2256, 2736, 235, 49, 227, 233, 2792, 2862,
- 2738, 2927, 2878, 2939, 1533, 2930, 46, 2999, 197, 3325, 35, 1044, 32, 5230, 329, 27, 30, 31, 983, 961,
- 26, 28, 2143, 296, 25, 23, 50, 2190, 106, 76, 77, 108, 2209, 2258, 2256, 2736, 388, 1475, 571, 2516,
- 2792, 3771, 2738, 2927, 2878, 2939, 155, 2930, 155, 2999, 197, 1194, 1936, 4360, 155, 380, 2944, 2862,
- 385, 5198, 1383, 243, 35, 893, 425, 578, 3325, 35, 1044, 32, 5230, 3630, 27, 30, 31, 983, 961, 26, 28,
- 2143, 296, 25, 23, 50, 2190, 106, 76, 77, 108, 2209, 2258, 2256, 2736, 308, 3234, 848, 1329, 2792, 1371,
- 2738, 2927, 2878, 2939, 3178, 2930, 368, 2999, 197, 3487, 35, 1044, 32, 5230, 459, 27, 30, 31, 983, 961,
- 26, 28, 2143, 296, 25, 23, 50, 2190, 106, 76, 77, 108, 2209, 2258, 2256, 2736, 1039, 1862, 4382, 1862,
- 2792, 155, 2738, 2927, 2878, 2939, 4483, 2930, 1475, 2999, 197, 155, 3771, 2645, 2583, 1569, 1326, 155,
- 4668, 1936, 370, 371, 1974, 2919, 1371, 155, 1371, 68, 376, 53, 2438, 462, 2951, 35, 1044, 32, 5230,
- 598, 27, 30, 31, 983, 961, 26, 28, 2143, 296, 25, 23, 50, 2190, 106, 76, 77, 108, 2209, 2258, 2256,
- 2322, 379, 189, 2616, 2030, 256, 934, 226, 3771, 1329, 2576, 2945, 3178, 2610, 2615, 2535, 2219, 417,
- 368, 3288, 2676, 3433, 35, 1044, 32, 5230, 3393, 27, 30, 31, 983, 961, 26, 28, 2143, 296, 25, 23, 50,
- 2190, 106, 76, 77, 108, 2209, 2258, 2256, 2322, 4316, 829, 2861, 2433, 2647, 1475, 4351, 2650, 1217,
- 3771, 2716, 2746, 2206, 2209, 3048, 1329, 1935, 2293, 2302, 4351, 3172, 371, 3041, 2347, 3327, 2299,
- 2345, 3273, 3945, 1087, 3792, 193, 3730, 2495, 2356, 3498, 3325, 35, 1044, 32, 5230, 3945, 27, 30, 31,
- 983, 961, 26, 28, 2143, 296, 25, 23, 50, 2190, 106, 76, 77, 108, 2209, 2258, 2256, 2736, 1937, 1329,
- 2300, 2532, 2792, 2307, 2738, 2927, 2878, 2939, 368, 3585, 3379, 35, 1044, 32, 5230, 2547, 27, 30, 31,
- 983, 961, 26, 28, 2143, 296, 25, 23, 50, 2190, 106, 76, 77, 108, 2209, 2258, 2256, 2322, 388, 4805, 397,
- 1860, 3293, 2450, 3599, 2698, 1854, 4351, 1862, 660, 5825, 1936, 96, 542, 915, 2297, 2302, 380, 2944,
- 2862, 385, 2347, 2751, 2649, 2345, 2753, 2754, 378, 87, 3945, 1098, 2495, 3490, 3325, 35, 1044, 32,
- 5230, 87, 27, 30, 31, 983, 961, 26, 28, 2143, 296, 25, 23, 50, 2190, 106, 76, 77, 108, 2209, 2258, 2256,
- 2736, 539, 541, 3178, 1103, 2792, 2292, 2738, 2927, 2878, 3582, 3379, 35, 1044, 32, 5230, 2468, 27, 30,
- 31, 983, 961, 26, 28, 2143, 296, 25, 23, 50, 2190, 106, 76, 77, 108, 2209, 2258, 2256, 2322, 3186, 3110,
- 3171, 2592, 2744, 2748, 2790, 1351, 542, 1949, 2979, 1853, 2796, 2722, 2780, 2839, 3013, 3042, 2302,
- 3043, 3073, 366, 371, 2347, 1995, 173, 2345, 1862, 3325, 35, 1044, 32, 5230, 3484, 27, 30, 31, 983, 961,
- 26, 28, 2143, 296, 25, 23, 50, 2190, 106, 76, 77, 108, 2209, 2258, 2256, 2736, 539, 541, 52, 2976, 2792,
- 3108, 2738, 2927, 3583, 3379, 35, 1044, 32, 5230, 1862, 27, 30, 31, 983, 961, 26, 28, 2143, 296, 25, 23,
- 50, 2190, 106, 76, 77, 108, 2209, 2258, 2256, 2322, 467, 3667, 1862, 2728, 2147, 3075, 3104, 3007, 488,
- 3134, 3201, 3151, 3294, 3258, 2981, 2677, 3167, 3292, 2302, 2216, 2982, 6914, 6914, 2347, 1862, 2217,
- 3489, 3325, 35, 1044, 32, 5230, 3174, 27, 30, 31, 983, 961, 26, 28, 2143, 296, 25, 23, 50, 2190, 106,
- 76, 77, 108, 2209, 2258, 2256, 2736, 90, 143, 6914, 6914, 2792, 6914, 2738, 3579, 3379, 35, 1044, 32,
- 5230, 6914, 27, 30, 31, 983, 961, 26, 28, 2143, 296, 25, 23, 50, 2190, 106, 76, 77, 108, 2209, 2258,
- 2256, 2322, 1259, 35, 1044, 32, 4952, 1473, 27, 30, 31, 983, 961, 375, 28, 6914, 6914, 6914, 6914, 6914,
- 2302, 243, 35, 893, 425, 3476, 3325, 35, 1044, 32, 5230, 6914, 27, 30, 31, 983, 961, 26, 28, 2143, 296,
- 25, 23, 50, 2190, 106, 76, 77, 108, 2209, 2258, 2256, 2736, 49, 6914, 6914, 6914, 2792, 2433, 3581,
- 6914, 1329, 6914, 1217, 1247, 1867, 1862, 1862, 1862, 1862, 368, 6914, 6914, 6914, 355, 1848, 357, 6914,
- 6914, 350, 1189, 1460, 35, 1044, 32, 4952, 193, 27, 30, 31, 983, 961, 375, 28, 6914, 349, 3266, 3276,
- 5047, 5109, 3831, 3379, 35, 1044, 32, 5230, 1862, 27, 30, 31, 983, 961, 26, 28, 2143, 296, 25, 23, 50,
- 2190, 106, 76, 77, 108, 2209, 2258, 2256, 2322, 6914, 6914, 6914, 1862, 1862, 3048, 1862, 1862, 5211,
- 1862, 4351, 6914, 1329, 6914, 6914, 342, 346, 626, 3478, 6914, 6914, 369, 6914, 6914, 6914, 355, 1848,
- 357, 6914, 6914, 353, 1189, 3945, 67, 66, 3641, 65, 64, 1105, 1991, 3379, 35, 1044, 32, 5230, 1256, 27,
- 30, 31, 983, 961, 26, 28, 2143, 296, 25, 23, 50, 2190, 106, 76, 77, 108, 2209, 2258, 2256, 2322, 1525,
- 35, 1044, 32, 4550, 3376, 27, 30, 31, 983, 961, 375, 28, 3325, 35, 1044, 32, 5230, 3480, 27, 30, 31,
- 983, 961, 26, 28, 2143, 296, 25, 23, 50, 2190, 106, 76, 77, 108, 2209, 2258, 2256, 2736, 6914, 542,
- 6914, 6914, 3574, 1222, 35, 3343, 32, 4952, 1473, 27, 30, 31, 983, 961, 375, 28, 1339, 35, 1044, 32,
- 4550, 3990, 27, 30, 31, 983, 961, 375, 28, 6914, 355, 1848, 357, 1862, 1862, 350, 1189, 6914, 388, 6914,
- 157, 35, 893, 425, 6914, 6914, 540, 541, 6914, 1862, 6914, 3333, 1862, 6914, 6914, 440, 1862, 380, 2944,
- 2862, 385, 1862, 1329, 2123, 55, 1465, 6914, 3329, 2395, 2433, 4351, 368, 49, 1465, 1217, 355, 1848,
- 357, 4351, 54, 350, 1189, 3291, 1247, 1244, 6914, 101, 6914, 352, 1073, 357, 5371, 3945, 6914, 6914,
- 6914, 2231, 193, 592, 6914, 3945, 3831, 3325, 35, 1044, 32, 5230, 2782, 27, 30, 31, 983, 961, 26, 28,
- 2143, 296, 25, 23, 50, 2190, 106, 76, 77, 108, 2209, 2258, 2256, 3436, 3325, 35, 1044, 32, 5230, 6914,
- 27, 30, 31, 983, 961, 26, 28, 2143, 296, 25, 23, 50, 2190, 106, 76, 77, 108, 2209, 2258, 2256, 3437,
- 6914, 6914, 6914, 6914, 402, 2643, 155, 6914, 155, 6914, 1217, 1217, 396, 1217, 6914, 6914, 6914, 6914,
- 4021, 6914, 396, 6914, 6914, 6914, 6914, 6914, 454, 456, 3339, 2839, 3122, 3165, 921, 189, 189, 6914,
- 189, 3816, 3122, 3165, 6914, 6914, 3084, 2486, 234, 3497, 6914, 6914, 3325, 35, 1044, 32, 5230, 2893,
- 27, 30, 31, 983, 961, 26, 28, 2143, 296, 25, 23, 50, 2190, 106, 76, 77, 108, 2209, 2258, 2256, 3575,
- 3325, 35, 1044, 32, 5230, 6914, 27, 30, 31, 983, 961, 26, 28, 2143, 296, 25, 23, 50, 2190, 106, 76, 77,
- 108, 2209, 2258, 2256, 3576, 3325, 35, 1044, 32, 5230, 6914, 27, 30, 31, 983, 961, 26, 28, 2143, 296,
- 25, 23, 50, 2190, 106, 76, 77, 108, 2209, 2258, 2256, 3577, 3325, 35, 1044, 32, 5230, 6914, 27, 30, 31,
- 983, 961, 26, 28, 2143, 296, 25, 23, 50, 2190, 106, 76, 77, 108, 2209, 2258, 2256, 3578, 1723, 35, 1044,
- 32, 4550, 5056, 27, 30, 31, 983, 961, 375, 28, 6914, 6914, 6914, 6914, 1504, 6914, 6914, 6914, 3771,
- 6914, 6914, 6914, 3325, 35, 1044, 32, 5230, 387, 27, 30, 31, 983, 961, 26, 28, 2143, 296, 25, 23, 50,
- 2190, 106, 76, 77, 108, 2209, 2258, 2256, 3688, 3541, 35, 893, 425, 4027, 6914, 155, 155, 6914, 1936,
- 832, 1217, 1217, 271, 296, 4351, 6914, 6914, 155, 6914, 355, 1848, 357, 1217, 1329, 350, 1189, 6914,
- 388, 6914, 6914, 2711, 308, 369, 189, 189, 1217, 379, 6914, 6914, 6914, 2034, 6914, 3584, 3881, 388,
- 189, 380, 2944, 2862, 385, 266, 6914, 6914, 6914, 3882, 6914, 2991, 6914, 189, 3178, 6914, 3278, 6914,
- 382, 2944, 2862, 385, 195, 269, 264, 265, 3325, 35, 1044, 32, 5230, 6914, 27, 30, 31, 983, 961, 26, 28,
- 2143, 296, 25, 23, 50, 2190, 106, 76, 77, 108, 2209, 2258, 3439, 6914, 6914, 6914, 6914, 6914, 6914,
- 6914, 6914, 309, 6914, 6914, 6914, 276, 279, 282, 825, 1180, 6914, 3282, 371, 1460, 35, 1044, 32, 4952,
- 6914, 27, 30, 31, 983, 961, 375, 28, 6914, 1936, 1587, 911, 1142, 1653, 5992, 285, 3325, 35, 1044, 32,
- 5230, 6914, 27, 30, 31, 983, 961, 26, 28, 2143, 296, 25, 23, 50, 2190, 106, 76, 77, 108, 2209, 2258,
- 3451, 1785, 259, 6914, 6914, 6914, 1778, 598, 6914, 6914, 3771, 4351, 6914, 1329, 6914, 2820, 6914,
- 6914, 155, 3178, 4521, 6914, 369, 1217, 6914, 6914, 355, 1848, 357, 262, 189, 351, 1189, 3945, 6914,
- 157, 35, 893, 425, 2984, 6914, 213, 6914, 155, 1515, 387, 189, 6914, 1217, 237, 249, 652, 6914, 6914,
- 6914, 3884, 236, 246, 247, 248, 250, 4020, 4048, 6914, 1, 1329, 6914, 49, 202, 598, 6914, 189, 6914,
- 6914, 368, 3290, 371, 6914, 1247, 1045, 3885, 201, 6914, 6914, 216, 200, 203, 204, 205, 206, 207, 262,
- 189, 6914, 6914, 388, 6914, 243, 35, 893, 425, 2984, 3187, 213, 4316, 155, 1515, 6914, 6914, 396, 1217,
- 237, 249, 652, 380, 2944, 2862, 385, 236, 246, 247, 248, 250, 6914, 2991, 6914, 3665, 3122, 3165, 49,
- 202, 6914, 6914, 189, 6914, 6914, 6914, 6914, 6914, 6914, 1247, 1400, 2533, 201, 6914, 214, 217, 200,
- 203, 204, 205, 206, 207, 2332, 35, 1044, 32, 4550, 3376, 27, 30, 31, 983, 961, 375, 28, 3325, 35, 1044,
- 32, 5230, 6914, 27, 30, 31, 983, 961, 26, 28, 2143, 296, 25, 23, 50, 2190, 106, 76, 77, 108, 2209, 3383,
- 6914, 6914, 3325, 35, 1044, 32, 5230, 4579, 27, 30, 31, 983, 961, 26, 28, 2143, 296, 25, 23, 50, 2190,
- 106, 76, 77, 108, 2209, 3384, 6914, 6914, 6914, 6914, 6914, 155, 6914, 355, 1848, 357, 1217, 345, 350,
- 1189, 6914, 388, 598, 6914, 155, 329, 35, 893, 425, 598, 2433, 6914, 1854, 6914, 589, 1217, 5825, 6914,
- 6914, 189, 380, 2944, 2862, 385, 262, 189, 6914, 6914, 4039, 6914, 590, 379, 189, 6914, 2984, 6914, 213,
- 49, 193, 1515, 6914, 221, 6914, 6914, 237, 249, 652, 6914, 1247, 47, 6914, 236, 246, 247, 248, 250,
- 1904, 6914, 1889, 35, 1044, 32, 4952, 202, 27, 30, 31, 983, 961, 375, 28, 6914, 757, 6914, 6914, 6914,
- 201, 6914, 6914, 3632, 200, 203, 204, 205, 206, 207, 3325, 35, 1044, 32, 5230, 6914, 27, 30, 31, 983,
- 961, 26, 28, 2143, 296, 25, 23, 50, 2190, 106, 76, 77, 108, 3387, 6914, 6914, 6914, 6914, 431, 4036,
- 6914, 1329, 6914, 598, 6914, 3818, 415, 35, 893, 425, 369, 1995, 6914, 6914, 355, 1848, 357, 6914, 6914,
- 351, 1189, 6914, 388, 6914, 155, 262, 189, 6914, 6914, 4351, 6914, 2643, 6914, 6914, 6914, 2984, 598,
- 213, 49, 6914, 1515, 382, 2944, 2862, 385, 237, 249, 652, 6914, 1247, 47, 379, 236, 246, 247, 248, 250,
- 6914, 3180, 189, 517, 6914, 6914, 6914, 202, 598, 6914, 6914, 2984, 6914, 213, 6914, 6914, 1199, 6914,
- 6914, 3393, 201, 466, 6914, 211, 200, 203, 204, 205, 206, 207, 262, 189, 157, 35, 893, 425, 415, 35,
- 893, 425, 2984, 6914, 213, 3382, 6914, 1515, 6914, 6914, 3586, 6914, 237, 249, 652, 229, 6914, 6914,
- 6914, 236, 246, 247, 248, 250, 6914, 6914, 49, 603, 6914, 6914, 49, 202, 598, 6914, 6914, 2644, 6914,
- 1247, 1983, 6914, 598, 1247, 47, 6914, 201, 6914, 6914, 209, 200, 203, 204, 205, 206, 207, 262, 189,
- 157, 35, 893, 425, 6914, 3187, 379, 189, 2984, 2053, 213, 6914, 6914, 1515, 6914, 6914, 221, 6914, 237,
- 249, 652, 6914, 6914, 6914, 6914, 236, 246, 247, 248, 250, 6914, 1904, 49, 689, 6914, 6914, 6914, 202,
- 598, 6914, 6914, 6914, 1778, 1247, 47, 6914, 3771, 4351, 6914, 6914, 201, 6914, 6914, 210, 200, 203,
- 204, 205, 206, 207, 262, 189, 759, 35, 893, 425, 6914, 1065, 6914, 3945, 2984, 6914, 213, 6914, 6914,
- 1515, 6914, 6914, 4993, 230, 237, 249, 652, 6914, 6914, 6914, 6914, 236, 246, 247, 248, 250, 6914, 6914,
- 49, 775, 223, 6914, 6914, 202, 598, 1329, 2433, 6914, 6914, 1247, 47, 1217, 6914, 6914, 368, 6914, 201,
- 6914, 6914, 220, 200, 203, 204, 205, 206, 207, 262, 189, 6914, 6914, 6914, 6914, 6914, 1931, 193, 6914,
- 2984, 6914, 213, 6914, 6914, 1515, 6914, 6914, 4805, 6914, 237, 249, 652, 396, 6914, 6914, 6914, 236,
- 246, 247, 248, 250, 6914, 6914, 6914, 3639, 35, 554, 6914, 202, 3665, 3122, 3165, 6914, 157, 35, 893,
- 425, 271, 296, 6914, 6914, 201, 6914, 3224, 3682, 200, 203, 204, 205, 206, 207, 1643, 35, 1044, 32,
- 4550, 1473, 27, 30, 31, 983, 961, 375, 28, 861, 49, 6914, 6914, 6914, 598, 2054, 35, 893, 425, 4043,
- 266, 1247, 47, 6914, 6914, 6914, 6914, 6914, 2057, 35, 893, 425, 6914, 6914, 6914, 6914, 262, 189, 269,
- 264, 265, 6914, 6914, 6914, 6914, 973, 2984, 308, 213, 6914, 6914, 1515, 6914, 6914, 6914, 6914, 237,
- 249, 652, 6914, 49, 6914, 6914, 236, 246, 247, 248, 250, 355, 1848, 357, 1247, 2817, 350, 1189, 202,
- 6914, 6914, 6914, 276, 279, 282, 825, 1180, 415, 35, 893, 425, 201, 349, 6914, 225, 200, 203, 204, 205,
- 206, 207, 243, 35, 893, 425, 1719, 1851, 1917, 2115, 6230, 947, 6914, 6914, 6914, 6914, 598, 6914, 6914,
- 6914, 49, 6914, 6914, 6914, 6914, 3670, 6914, 6914, 6914, 6914, 6914, 1247, 2877, 6914, 49, 6914, 6914,
- 6914, 262, 189, 6914, 342, 346, 626, 6914, 1247, 2868, 6914, 2984, 6914, 213, 72, 6914, 1515, 6914,
- 5217, 6914, 6914, 237, 249, 652, 563, 564, 568, 3289, 236, 246, 247, 248, 250, 6914, 1256, 6914, 1033,
- 6914, 6914, 6914, 202, 598, 6914, 6914, 2434, 35, 893, 425, 6914, 6914, 2181, 6914, 6914, 201, 6914,
- 6914, 219, 200, 203, 204, 205, 206, 207, 262, 189, 243, 35, 893, 425, 243, 35, 893, 425, 2984, 6914,
- 213, 49, 6914, 1515, 6914, 6914, 6914, 6914, 237, 249, 652, 6914, 1247, 2989, 6914, 236, 246, 247, 248,
- 250, 6914, 6914, 49, 6914, 6914, 6914, 49, 202, 6914, 6914, 6914, 6914, 6914, 1247, 2830, 6914, 2782,
- 1247, 2817, 6914, 201, 6914, 6914, 228, 200, 203, 204, 205, 206, 207, 3325, 35, 1044, 32, 5230, 6914,
- 27, 30, 31, 983, 961, 26, 28, 2143, 296, 25, 23, 50, 2190, 106, 76, 77, 108, 3388, 3325, 35, 1044, 32,
- 5230, 6914, 27, 30, 31, 983, 961, 26, 28, 2143, 296, 25, 23, 50, 2190, 106, 76, 77, 108, 3396, 3325, 35,
- 1044, 32, 5230, 6914, 27, 30, 31, 983, 961, 26, 28, 2143, 296, 25, 23, 50, 2190, 106, 76, 77, 85, 3325,
- 1527, 1044, 3280, 5230, 6914, 27, 30, 31, 983, 961, 26, 28, 2143, 296, 25, 23, 50, 2190, 106, 76, 77,
- 84, 3325, 35, 1044, 32, 5230, 6914, 27, 30, 31, 983, 961, 26, 28, 2143, 296, 25, 23, 50, 2190, 106, 76,
- 77, 83, 3325, 35, 1044, 32, 5230, 6914, 27, 30, 31, 983, 961, 26, 28, 2143, 296, 25, 23, 50, 2190, 106,
- 76, 77, 82, 3325, 35, 1044, 32, 5230, 6914, 27, 30, 31, 983, 961, 26, 28, 2143, 296, 25, 23, 50, 2190,
- 106, 76, 77, 81, 3325, 35, 1044, 32, 5230, 6914, 27, 30, 31, 983, 961, 26, 28, 2143, 296, 25, 23, 50,
- 2190, 106, 76, 77, 80, 3325, 35, 1044, 32, 5230, 6914, 27, 30, 31, 983, 961, 26, 28, 2143, 296, 25, 23,
- 50, 2190, 106, 76, 77, 79, 3325, 35, 1044, 32, 5230, 6914, 27, 30, 31, 983, 961, 26, 28, 2143, 296, 25,
- 23, 50, 2190, 106, 76, 77, 78, 3080, 35, 1044, 32, 5230, 6914, 27, 30, 31, 983, 961, 26, 28, 2143, 296,
- 25, 23, 50, 2190, 106, 76, 77, 104, 3325, 35, 1044, 32, 5230, 6914, 27, 30, 31, 983, 961, 26, 28, 2143,
- 296, 25, 23, 50, 2190, 106, 76, 77, 110, 3325, 35, 1044, 32, 5230, 6914, 27, 30, 31, 983, 961, 26, 28,
- 2143, 296, 25, 23, 50, 2190, 106, 76, 77, 109, 3325, 35, 1044, 32, 5230, 6914, 27, 30, 31, 983, 961, 26,
- 28, 2143, 296, 25, 23, 50, 2190, 106, 76, 77, 107, 3325, 35, 1044, 32, 5230, 6914, 27, 30, 31, 983, 961,
- 26, 28, 2143, 296, 25, 23, 50, 2190, 106, 76, 77, 105, 1689, 6914, 6914, 6914, 6914, 4351, 6914, 6914,
- 6914, 6914, 6914, 6914, 6914, 6914, 6914, 6914, 6914, 6914, 157, 35, 893, 425, 1754, 35, 1044, 32, 5230,
- 262, 27, 30, 31, 983, 961, 26, 28, 2143, 296, 25, 23, 50, 2190, 86, 76, 77, 6914, 6914, 6914, 239, 249,
- 652, 49, 6914, 6914, 6914, 238, 246, 247, 248, 250, 6914, 6914, 1247, 47, 6914, 6914, 6914, 1899, 155,
- 6914, 6914, 6914, 4351, 4351, 6914, 6914, 6914, 155, 155, 1988, 6914, 6914, 4351, 4351, 4351, 6914,
- 1259, 6914, 6914, 6914, 240, 242, 244, 666, 262, 379, 251, 241, 243, 157, 35, 893, 425, 6914, 379, 379,
- 262, 243, 35, 893, 425, 6914, 6914, 6914, 239, 249, 652, 13, 6914, 6086, 3393, 238, 246, 247, 248, 250,
- 239, 249, 652, 3393, 3393, 49, 6914, 238, 246, 247, 248, 250, 6914, 49, 6914, 6914, 1247, 47, 546, 6914,
- 6914, 6914, 6914, 6914, 1247, 646, 6914, 544, 3817, 2077, 240, 242, 244, 666, 4351, 6914, 251, 241, 243,
- 6914, 1390, 155, 240, 242, 244, 666, 4351, 6914, 251, 241, 243, 6914, 6914, 6914, 6914, 6914, 262, 2369,
- 6914, 6086, 3590, 35, 893, 425, 4027, 6914, 628, 6914, 379, 2416, 6914, 6086, 6914, 272, 296, 6914, 239,
- 249, 652, 6914, 6914, 6914, 6914, 238, 246, 247, 248, 250, 6914, 6914, 6914, 6914, 308, 3393, 6914,
- 1810, 157, 35, 893, 425, 4351, 6914, 6914, 6914, 6914, 6914, 6914, 6914, 6914, 6914, 6914, 266, 6914,
- 6914, 6914, 6914, 6914, 597, 240, 242, 244, 666, 262, 6914, 251, 241, 243, 6914, 49, 270, 264, 265, 157,
- 35, 893, 425, 6914, 6914, 6914, 1247, 47, 155, 239, 249, 652, 2595, 598, 6086, 6914, 238, 246, 247, 248,
- 250, 1414, 6914, 6914, 6914, 6914, 4351, 6914, 6914, 6914, 2312, 49, 6914, 309, 6914, 379, 189, 277,
- 280, 283, 825, 1180, 1247, 47, 2166, 2945, 6914, 6914, 262, 4351, 6914, 240, 242, 244, 666, 6914, 6914,
- 581, 241, 243, 3393, 6914, 6914, 6914, 6914, 286, 2359, 155, 239, 249, 652, 262, 598, 6914, 6914, 238,
- 246, 247, 248, 250, 6914, 6914, 6914, 6914, 2861, 6914, 6914, 6914, 6914, 6914, 6914, 239, 249, 652,
- 379, 189, 6914, 6914, 238, 246, 247, 248, 250, 2255, 3262, 6914, 6914, 6914, 4351, 6914, 240, 242, 244,
- 666, 6914, 2344, 252, 241, 243, 3393, 4351, 6914, 6914, 6914, 6914, 6914, 6914, 6914, 6914, 6914, 262,
- 6914, 6914, 240, 242, 244, 666, 6914, 6914, 582, 241, 243, 262, 3033, 6914, 6914, 6914, 6914, 6914,
- 6914, 239, 249, 652, 6914, 6914, 6914, 6914, 238, 246, 247, 248, 250, 239, 249, 652, 3688, 35, 554,
- 6914, 238, 246, 247, 248, 250, 6914, 6914, 6914, 6914, 272, 296, 6914, 1180, 6914, 6914, 6914, 4612,
- 4351, 6914, 6914, 6914, 6914, 3005, 240, 242, 244, 666, 4351, 1297, 341, 241, 243, 4612, 4351, 6914,
- 240, 242, 244, 666, 262, 6914, 536, 241, 243, 6914, 155, 6914, 266, 6914, 379, 598, 6914, 593, 155,
- 6914, 262, 6914, 6914, 598, 2644, 444, 4003, 6914, 6914, 6914, 270, 264, 265, 6914, 6914, 6914, 6914,
- 379, 189, 3393, 2644, 444, 4003, 6914, 6914, 379, 189, 2945, 6914, 6914, 6914, 155, 6914, 6914, 6914,
- 221, 598, 6914, 6914, 6914, 6914, 6914, 3393, 596, 6914, 6914, 445, 446, 447, 666, 1904, 277, 280, 283,
- 825, 1180, 6914, 6914, 379, 189, 6914, 6914, 445, 446, 447, 666, 3483, 6914, 221, 6914, 6914, 6914,
- 1603, 6914, 6914, 6914, 6914, 6914, 6914, 6914, 6914, 6914, 6914, 1904, 6914, 6914, 6914, 6914, 1603,
- 6914, 6914, 6914, 6914, 6914, 6914, 6914, 6914, 6914, 6914, 6914, 6914, 6914, 6914, 6914, 6914, 6914,
- 6914, 6914, 6914, 6914, 6914, 6914, 6914, 6914, 6914, 3819, 6914, 6914, 6914, 6914, 6914, 6914, 6914,
- 6914, 6914, 6914, 6914, 6914, 6914, 563, 564, 569, 6914, 6914, 448, 450, 6914, 6914, 6914, 6914, 6914,
- 6914, 6914, 6914, 6914, 6914, 6914, 6914, 3856, 6914, 448, 451, 6914, 6914, 6914, 6914, 6914, 6914,
- 6914, 6914, 6914, 1353, 6914, 6914, 6262, 6914, 6914, 6914, 6914, 6914, 6914, 6914, 6914, 6914, 6914,
- 6914, 6914, 6914, 6914, 6914, 6914, 6914, 6914, 4055, 6914, 0, 538, 6027, 0, 1, 263, 0, 39, 6929, 0, 39,
- 6928, 0, 1, 1772, 0, 907, 1, 0, 39, 1, 6929, 0, 39, 1, 6928, 0, 1, 1588, 0, 1, 811, 0, 263, 253, 0, 318,
- 431, 0, 318, 323, 0, 7182, 275, 0, 7181, 275, 0, 7288, 275, 0, 7287, 275, 0, 7209, 275, 0, 7208, 275, 0,
- 7207, 275, 0, 7206, 275, 0, 7205, 275, 0, 7204, 275, 0, 7203, 275, 0, 7202, 275, 0, 7221, 275, 0, 7220,
- 275, 0, 7219, 275, 0, 7218, 275, 0, 7217, 275, 0, 7216, 275, 0, 7215, 275, 0, 7214, 275, 0, 7213, 275,
- 0, 7212, 275, 0, 7211, 275, 0, 39, 275, 6929, 0, 39, 275, 6928, 0, 6952, 275, 0, 1427, 424, 0, 6929, 48,
- 0, 6928, 48, 0, 1, 367, 0, 38, 811, 0, 38, 6929, 0, 38, 6928, 0, 491, 1720, 0, 477, 1847, 0, 1427, 29,
- 0, 6926, 1, 0, 2182, 354, 0, 1, 481, 0, 495, 635, 0, 494, 2298, 0, 35, 33, 0, 47, 37, 0, 538, 1668, 0,
- 6952, 1, 263, 0, 39, 1, 263, 0, 263, 453, 0, 1, 1860, 0, 1, 7221, 0, 1, 7220, 0, 1, 7219, 0, 1, 7218, 0,
- 1, 7217, 0, 1, 7216, 0, 1, 7215, 0, 1, 7214, 0, 1, 7213, 0, 1, 7212, 0, 1, 7211, 0, 6929, 37, 0, 6928,
- 37, 0, 43, 6950, 0, 43, 37, 0, 6926, 420, 0, 6925, 420, 0, 1, 713, 0, 1, 1536, 0, 263, 254, 0, 6924,
- 442, 0, 6923, 442, 0, 263, 452, 0, 1, 5829, 0, 1, 5508, 0, 1, 5554, 0, 1, 5577, 0, 1, 5600, 0, 1, 5623,
- 0, 1, 5646, 0, 1, 5669, 0, 1, 5531, 0, 1, 6936, 0, 1, 6935, 0, 1, 6934, 0, 1, 6933, 0, 1, 6932, 0, 1,
- 6931, 0, 1, 6930, 0, 1, 1857, 0, 1, 1863, 0, 1, 1930, 0, 1, 1996, 0, 1, 1998, 0, 1, 3297, 0, 39, 1, 0,
- 6922, 1, 0, 4245, 126, 0, 367, 482, 0, 275, 6929, 0, 275, 6928, 0, 6920, 1, 0, 6919, 1, 0, 1032, 91, 0,
- 32, 34, 0, 39, 811, 0, 6950, 45, 0, 37, 45, 0, 1, 263, 3501, 0, 6923, 263, 0, 3503, 263, 0, 6952, 1, 0,
- 271, 884, 0, 425, 32, 0, 424, 29, 0, 3597, 263, 0, 10, 12, 0, 4245, 128, 0, 4245, 127, 0, 1, 92, 0, 8,
- 10, 12, 0, 3672, 227, 0, 6929, 36, 0, 6928, 36, 0, 6929, 2, 37, 0, 6928, 2, 37, 0, 3678, 420, 0, 367,
- 95, 0, 35, 73, 0, 8, 12, 0, 313, 4056, 0, 218, 5309, 0 };
- }
-
- public final static char baseAction[] = BaseAction.baseAction;
-
- @Override
- public final int baseAction(int index) {
- return baseAction[index];
- }
-
- public final static char lhs[] = baseAction;
-
- @Override
- public final int lhs(int index) {
- return lhs[index];
- }
-
- public interface TermCheck {
- public final static byte termCheck[] = { 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 55, 56, 3, 58, 59, 60, 0, 62, 63, 64, 4, 66, 67, 0, 69, 0, 1, 2,
- 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
- 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 55, 56, 3, 58, 59, 60, 0, 62, 63, 64, 4, 66, 67,
- 0, 69, 0, 1, 2, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
- 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
- 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 55, 56, 0, 58, 59, 60, 4, 62, 63,
- 64, 0, 66, 67, 3, 69, 0, 1, 2, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 0, 1, 2, 3, 4, 5, 6,
- 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
- 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 55, 56, 3, 58, 59,
- 60, 0, 62, 63, 64, 97, 66, 67, 7, 69, 0, 1, 2, 0, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 0, 1,
- 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
- 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 55,
- 56, 3, 58, 59, 60, 74, 62, 63, 64, 0, 66, 67, 0, 69, 0, 1, 2, 0, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
- 84, 85, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
- 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
- 52, 53, 0, 55, 56, 70, 58, 59, 60, 7, 62, 63, 64, 0, 66, 67, 0, 69, 0, 1, 2, 94, 74, 75, 76, 77, 78, 79,
- 80, 81, 82, 83, 84, 85, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
- 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
- 48, 49, 50, 51, 52, 53, 0, 55, 56, 0, 58, 59, 60, 4, 62, 63, 64, 0, 66, 67, 0, 69, 0, 92, 93, 3, 74, 75,
- 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
- 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
- 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 70, 55, 56, 0, 58, 59, 60, 0, 62, 63, 64, 0, 66, 67, 0, 69, 5,
- 10, 7, 94, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
- 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
- 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 55, 56, 3, 58, 59, 60, 0, 62, 63, 64, 94, 66,
- 67, 0, 69, 0, 1, 2, 5, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
- 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
- 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 55, 56, 0, 58, 59, 60, 0, 62, 63,
- 64, 0, 66, 67, 3, 69, 0, 1, 2, 0, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 0, 1, 2, 3, 4, 5, 6,
- 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
- 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 55, 56, 70, 58, 59,
- 60, 7, 62, 63, 64, 97, 66, 67, 97, 69, 0, 96, 0, 0, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 0,
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
- 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0,
- 55, 56, 70, 58, 59, 60, 0, 62, 63, 64, 0, 66, 67, 0, 69, 86, 87, 86, 87, 74, 75, 76, 77, 78, 79, 80, 81,
- 82, 83, 84, 85, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
- 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
- 50, 51, 52, 53, 0, 55, 56, 3, 58, 59, 60, 0, 62, 63, 64, 0, 66, 67, 3, 69, 0, 92, 93, 3, 74, 75, 76, 77,
- 78, 79, 80, 81, 82, 83, 84, 85, 0, 1, 2, 3, 4, 5, 6, 7, 8, 120, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
- 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 0, 40, 41, 42, 43, 44, 45,
- 46, 47, 48, 49, 50, 51, 52, 53, 0, 55, 56, 3, 58, 0, 60, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
- 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 1, 2, 0, 4, 39, 0,
- 41, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 54, 0, 61, 55, 56, 57, 58, 59, 9, 0, 62, 63, 0, 1, 2, 3, 4, 91, 6, 71,
- 8, 73, 34, 35, 98, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 88, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
- 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 71, 114, 115, 116, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
- 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 1, 2, 0, 4,
- 39, 96, 41, 0, 1, 2, 3, 4, 0, 6, 54, 8, 9, 118, 0, 0, 55, 56, 57, 58, 59, 65, 7, 62, 63, 0, 1, 2, 3, 4,
- 0, 6, 71, 8, 73, 0, 0, 1, 2, 0, 4, 5, 39, 7, 9, 89, 90, 0, 0, 88, 11, 12, 13, 14, 15, 16, 17, 18, 19,
- 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 65, 39, 114, 115, 116, 0, 1, 2, 3, 4, 5, 6, 7,
- 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
- 65, 0, 0, 68, 3, 39, 5, 41, 7, 0, 9, 9, 0, 1, 2, 3, 4, 0, 6, 0, 8, 55, 56, 57, 58, 59, 9, 0, 62, 63, 64,
- 4, 5, 0, 7, 34, 35, 36, 37, 73, 39, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 88, 54, 0, 1, 2,
- 3, 4, 5, 61, 7, 0, 0, 65, 0, 0, 68, 68, 70, 71, 72, 73, 73, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 120, 86, 87,
- 72, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
- 111, 112, 97, 0, 0, 61, 117, 118, 119, 0, 57, 0, 3, 57, 5, 4, 7, 0, 9, 0, 1, 2, 0, 4, 69, 6, 61, 8, 0,
- 0, 1, 2, 3, 4, 5, 70, 7, 0, 1, 2, 0, 4, 38, 34, 35, 36, 37, 95, 39, 0, 0, 22, 23, 24, 25, 26, 27, 28,
- 29, 30, 31, 32, 33, 54, 61, 54, 38, 0, 1, 2, 61, 4, 0, 6, 65, 8, 57, 68, 61, 70, 71, 72, 73, 0, 1, 2, 3,
- 4, 0, 6, 61, 8, 9, 71, 65, 86, 87, 68, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
- 104, 105, 106, 107, 108, 109, 110, 111, 112, 39, 0, 57, 0, 117, 118, 119, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
- 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 1, 2,
- 3, 4, 39, 6, 41, 8, 9, 0, 1, 2, 0, 4, 5, 54, 7, 0, 1, 2, 55, 56, 57, 58, 59, 101, 102, 62, 63, 64, 0, 1,
- 2, 3, 4, 5, 6, 7, 8, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 88, 0, 1, 2, 0, 4, 5, 61, 7,
- 0, 9, 34, 35, 36, 37, 38, 0, 40, 72, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 120, 0, 1, 2, 3,
- 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
- 31, 32, 33, 0, 0, 70, 54, 0, 39, 72, 41, 4, 0, 0, 0, 1, 2, 4, 4, 0, 6, 0, 8, 54, 55, 56, 57, 58, 59, 22,
- 9, 62, 63, 64, 97, 22, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 0, 1, 2, 3, 4, 5, 6,
- 7, 8, 88, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
- 26, 27, 28, 29, 30, 31, 32, 33, 0, 72, 0, 0, 0, 39, 0, 41, 0, 1, 2, 5, 4, 5, 94, 7, 0, 61, 0, 92, 93,
- 55, 56, 57, 58, 59, 23, 24, 62, 63, 64, 0, 0, 1, 2, 114, 115, 116, 6, 73, 22, 23, 24, 25, 26, 27, 28,
- 29, 30, 31, 32, 33, 0, 0, 88, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
- 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 57, 86, 87, 61, 91, 39, 95, 41, 0, 1, 2, 98, 4, 5,
- 0, 7, 99, 100, 0, 92, 93, 55, 56, 57, 58, 59, 0, 0, 62, 63, 64, 68, 0, 1, 2, 0, 1, 2, 6, 73, 22, 23, 24,
- 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 0, 88, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 1, 2, 65, 4, 39, 6, 41, 8, 0, 1,
- 2, 66, 67, 0, 6, 0, 8, 0, 0, 57, 55, 56, 57, 58, 59, 0, 0, 62, 63, 64, 0, 68, 0, 1, 2, 0, 4, 0, 73, 22,
- 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 38, 0, 88, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 70, 57, 0, 1, 2, 39, 0, 41,
- 6, 0, 8, 5, 65, 71, 5, 68, 0, 0, 0, 0, 71, 55, 56, 57, 58, 59, 9, 9, 62, 63, 64, 101, 102, 103, 104,
- 105, 106, 107, 108, 109, 110, 111, 112, 0, 0, 1, 2, 3, 4, 0, 6, 0, 8, 10, 88, 0, 1, 2, 3, 4, 5, 6, 7, 8,
- 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 72,
- 71, 73, 0, 0, 39, 3, 41, 0, 0, 0, 0, 0, 59, 86, 87, 99, 100, 0, 99, 100, 55, 56, 57, 58, 59, 71, 65, 62,
- 63, 64, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 1, 2, 3, 4, 121, 6, 0, 8, 34, 35, 88, 0, 1,
- 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
- 30, 31, 32, 33, 0, 0, 1, 2, 0, 39, 91, 41, 86, 87, 9, 0, 91, 98, 95, 61, 0, 0, 0, 98, 0, 55, 56, 57, 58,
- 59, 9, 9, 62, 63, 64, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0,
- 88, 0, 0, 1, 2, 0, 0, 61, 9, 3, 9, 34, 35, 36, 37, 38, 69, 40, 0, 42, 43, 44, 45, 46, 47, 48, 49, 50,
- 51, 52, 53, 68, 0, 69, 68, 72, 0, 60, 39, 3, 54, 0, 65, 66, 67, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
- 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 61, 66, 67, 65, 65, 54, 72, 68, 89, 90, 0, 0, 34, 35, 36, 37,
- 38, 0, 40, 9, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 0, 0, 1, 2, 0, 60, 5, 89, 90, 0, 1, 2,
- 0, 9, 69, 0, 39, 0, 73, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0,
- 1, 2, 0, 68, 114, 115, 116, 34, 35, 0, 68, 34, 35, 36, 37, 38, 57, 40, 0, 42, 43, 44, 45, 46, 47, 48,
- 49, 50, 51, 52, 53, 0, 1, 2, 0, 73, 0, 60, 68, 0, 0, 0, 0, 3, 86, 87, 69, 0, 1, 2, 3, 4, 5, 6, 7, 8, 57,
- 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 0, 0, 70, 0, 0, 0, 0, 68, 9, 9, 9, 34, 35, 36, 37,
- 38, 0, 40, 57, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 61, 0, 0, 86, 87, 70, 60, 39, 39, 68, 70,
- 9, 66, 67, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 65, 0, 54,
- 65, 0, 72, 70, 0, 9, 113, 0, 34, 35, 36, 37, 38, 0, 40, 54, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
- 53, 0, 0, 96, 0, 71, 0, 60, 73, 0, 54, 0, 0, 66, 67, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 0, 0, 65, 3, 72, 5, 6, 7, 89, 90, 0, 0, 34, 35, 36, 37, 38, 0, 40, 70, 42,
- 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 65, 0, 34, 35, 36, 37, 60, 96, 40, 0, 0, 71, 3, 71, 71, 69,
- 6, 0, 9, 86, 87, 113, 54, 86, 87, 0, 1, 2, 0, 61, 0, 3, 54, 65, 66, 67, 68, 68, 70, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, 33, 0, 0, 0, 86, 87, 71, 89, 90, 91, 92, 93, 94, 95, 96, 86, 87, 99, 100, 101,
- 61, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 72, 57, 0, 54, 117, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
- 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 0, 34, 35, 36, 37, 38,
- 0, 40, 0, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 10, 11, 12, 13,
- 14, 15, 16, 17, 18, 19, 20, 21, 54, 0, 113, 0, 57, 4, 0, 57, 0, 0, 57, 65, 34, 35, 36, 37, 38, 54, 40,
- 54, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 0, 0, 89, 90, 4, 4, 0, 0, 9, 118, 3, 66, 67, 0,
- 1, 2, 3, 4, 5, 6, 7, 8, 54, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 0, 0, 3, 3, 3, 71, 0, 0,
- 9, 70, 70, 34, 35, 36, 37, 38, 10, 40, 54, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 95, 0, 3,
- 72, 3, 60, 0, 1, 2, 3, 4, 5, 6, 7, 8, 41, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 61, 54, 0, 57,
- 65, 3, 0, 68, 0, 0, 0, 72, 34, 35, 36, 37, 38, 0, 40, 0, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
- 0, 0, 0, 3, 0, 3, 0, 61, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
- 54, 54, 54, 0, 0, 0, 3, 0, 0, 1, 2, 65, 34, 35, 36, 37, 38, 0, 40, 75, 42, 43, 44, 45, 46, 47, 48, 49,
- 50, 51, 52, 53, 61, 0, 60, 89, 90, 0, 60, 0, 1, 2, 3, 4, 5, 6, 7, 8, 61, 10, 11, 12, 13, 14, 15, 16, 17,
- 18, 19, 20, 21, 54, 0, 0, 0, 57, 0, 1, 2, 0, 0, 54, 65, 34, 35, 36, 37, 38, 41, 40, 0, 42, 43, 44, 45,
- 46, 47, 48, 49, 50, 51, 52, 53, 0, 0, 0, 89, 90, 4, 60, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 10, 11, 12, 13,
- 14, 15, 16, 17, 18, 19, 20, 21, 0, 57, 54, 3, 0, 0, 0, 0, 0, 3, 0, 0, 34, 35, 36, 37, 38, 10, 40, 0, 42,
- 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 0, 0, 0, 36, 37, 60, 0, 1, 2, 3, 4, 5, 6, 7, 8, 41, 10,
- 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 61, 54, 0, 57, 54, 0, 0, 0, 0, 0, 113, 0, 34, 35, 36, 37,
- 38, 0, 40, 0, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 10, 11, 12,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 0, 117, 0, 119, 0, 0, 0, 0, 0, 0, 0, 34, 35, 36, 37, 38, 0, 40,
- 0, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 35, 36, 37, 38, 0, 40, 0, 42, 43, 44,
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 35, 36, 37, 38, 0, 40, 0, 42, 43, 44, 45, 46, 47,
- 48, 49, 50, 51, 52, 53, 0, 1, 2, 0, 4, 0, 0, 0, 0, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
- 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2,
- 0, 4, 0, 55, 56, 0, 58, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
- 30, 31, 32, 33, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 55, 56, 0, 58, 10, 11,
- 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 0, 0, 0, 0,
- 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 55, 56, 0, 58, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
- 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 0, 0, 0, 0, 0, 0, 41, 0, 1, 2, 3, 4, 5, 6, 7,
- 8, 9, 0, 0, 0, 55, 56, 0, 58, 0, 0, 0, 0, 0, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 0, 0, 0,
- 0, 39, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 0, 54, 0, 0, 0, 0, 0, 0, 61, 0, 1, 2, 3, 4, 5,
- 6, 7, 8, 9, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 0,
- 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 0, 7, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 72, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
- 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 0, 0, 0, 65, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static byte termCheck[] = TermCheck.termCheck;
-
- @Override
- public final int termCheck(int index) {
- return termCheck[index];
- }
-
- public interface TermAction {
- public final static char termAction[] = { 0, 6914, 6838, 6478, 6478, 6478, 6478, 6478, 6478, 6478, 6860, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6842, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 6914, 1, 1, 885, 1, 1979, 1, 39, 762, 7122, 637, 6952, 1, 1, 333, 6925, 333,
- 6928, 6929, 6921, 1859, 3550, 3026, 3093, 2992, 3500, 4744, 3540, 650, 3538, 4148, 3505, 10, 6863, 6863,
- 6863, 6863, 6863, 6863, 6863, 6863, 6863, 6863, 6863, 6863, 6863, 6863, 6863, 6863, 6863, 6863, 6863,
- 6863, 6863, 6863, 6863, 6863, 6863, 6863, 6863, 6863, 6863, 6863, 6863, 6863, 6863, 6863, 6863, 6863,
- 6863, 6863, 6863, 6863, 6863, 6863, 6863, 6863, 6863, 6863, 6863, 6863, 6863, 6863, 6863, 6863, 6863,
- 6914, 6863, 6863, 2182, 6863, 6863, 6863, 6914, 6863, 6863, 6863, 1375, 6863, 6863, 1, 6863, 6914, 6602,
- 6599, 6863, 6863, 6863, 6863, 6863, 6863, 6863, 6863, 6863, 6863, 6863, 6863, 6863, 8, 6875, 6875, 6875,
- 6875, 6875, 6875, 6875, 6875, 6875, 6875, 6875, 6875, 6875, 6875, 6875, 6875, 6875, 6875, 6875, 6875,
- 6875, 6875, 6875, 6875, 6875, 6875, 6875, 6875, 6875, 6875, 6875, 6875, 6875, 6875, 6875, 6875, 6875,
- 6875, 6875, 6875, 6875, 6875, 6875, 6875, 6875, 6875, 6875, 6875, 6875, 6875, 6875, 6875, 6875, 394,
- 6875, 6875, 432, 6875, 6875, 6875, 425, 6875, 6875, 6875, 6914, 6875, 6875, 6132, 6875, 6914, 6928,
- 6929, 6875, 6875, 6875, 6875, 6875, 6875, 6875, 6875, 6875, 6875, 6875, 6875, 6875, 6914, 6838, 6478,
- 6478, 6478, 6478, 6478, 6478, 6478, 6845, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 6842, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6914, 1, 1, 884, 1, 1979, 1,
- 151, 762, 7122, 637, 7307, 1, 1, 3725, 6925, 6914, 10517, 10485, 1, 1859, 3550, 3026, 3093, 2992, 3500,
- 4744, 3540, 650, 3538, 4148, 3505, 6914, 6838, 6478, 6478, 6478, 6478, 6478, 6478, 6478, 6845, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6842, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 6914, 1, 1, 3808, 1, 1979, 1, 1649, 762, 7122, 637, 153, 1, 1, 432, 6925, 48, 6602,
- 6599, 35, 1859, 3550, 3026, 3093, 2992, 3500, 4744, 3540, 650, 3538, 4148, 3505, 6914, 6838, 6478, 6478,
- 6478, 6478, 6478, 6478, 6478, 6845, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 6842, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 131, 1, 1, 1662, 1, 1979, 1, 3776,
- 762, 7122, 637, 149, 1, 1, 367, 6925, 434, 6928, 6929, 3636, 1859, 3550, 3026, 3093, 2992, 3500, 4744,
- 3540, 650, 3538, 4148, 3505, 6914, 6838, 6478, 6478, 6478, 6478, 6478, 6478, 6478, 6845, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6842, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 421, 1, 1, 6914, 1, 1979, 1, 1443, 762, 7122, 637, 133, 1, 1, 6914, 6925, 347, 3918,
- 3851, 890, 1859, 3550, 3026, 3093, 2992, 3500, 4744, 3540, 650, 3538, 4148, 3505, 6914, 6838, 6478,
- 6478, 6478, 6478, 6478, 6478, 6478, 6845, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 6842, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1150, 1, 1, 154, 1, 1979, 1,
- 337, 762, 7122, 637, 6914, 1, 1, 6914, 6925, 1735, 7250, 1423, 3690, 1859, 3550, 3026, 3093, 2992, 3500,
- 4744, 3540, 650, 3538, 4148, 3505, 6914, 6838, 6478, 6478, 6478, 6478, 6478, 6478, 6478, 6845, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6842, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 91, 1, 1, 6823, 1, 1979, 1, 6914, 762, 7122, 637, 3636, 1, 1, 6914, 6925, 6914,
- 10517, 10485, 2196, 1859, 3550, 3026, 3093, 2992, 3500, 4744, 3540, 650, 3538, 4148, 3505, 6914, 6838,
- 6478, 6478, 6478, 6478, 6478, 6478, 6478, 6845, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6842, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1979, 1,
- 157, 762, 7122, 637, 1, 1, 1, 5884, 6925, 327, 6928, 6929, 328, 1859, 3550, 3026, 3093, 2992, 3500,
- 4744, 3540, 650, 3538, 4148, 3505, 6914, 6838, 6478, 6478, 6478, 6478, 6478, 6478, 6478, 6845, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6842, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 152, 1, 1, 3036, 1, 1979, 1, 3725, 762, 7122, 637, 7309, 1, 1, 3887, 6925, 141,
- 3446, 121, 406, 1859, 3550, 3026, 3093, 2992, 3500, 4744, 3540, 650, 3538, 4148, 3505, 6914, 6838, 6478,
- 6478, 6478, 6478, 6478, 6478, 6478, 6845, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 6842, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6914, 1, 1, 1348, 1, 1979, 1,
- 6914, 762, 7122, 637, 129, 1, 1, 6914, 6925, 4423, 4490, 4423, 4490, 1859, 3550, 3026, 3093, 2992, 3500,
- 4744, 3540, 650, 3538, 4148, 3505, 6914, 6838, 6478, 6478, 6478, 6478, 6478, 6478, 6478, 6845, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6842, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 271, 1, 1, 6851, 1, 1979, 1, 6914, 762, 7122, 637, 6914, 1, 1, 4751, 6925, 6914,
- 3958, 1264, 6287, 1859, 3550, 3026, 3093, 2992, 3500, 4744, 3540, 650, 3538, 4148, 3505, 39, 6484, 6481,
- 6073, 907, 5600, 5531, 5623, 1588, 6474, 1971, 7213, 7211, 7220, 7219, 7215, 7216, 7214, 7217, 7218,
- 7221, 7212, 7208, 7287, 7288, 7202, 7209, 7205, 7181, 7207, 7206, 7203, 7204, 7182, 5577, 5554, 5669,
- 5646, 6933, 111, 5508, 7349, 1863, 1998, 6935, 1930, 5829, 1996, 6936, 6934, 1857, 6930, 6931, 6932,
- 354, 603, 7350, 6629, 7351, 424, 1488, 6914, 6654, 6654, 263, 6650, 263, 263, 263, 263, 6658, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 323, 6513, 6513, 6914, 318, 263, 118, 1,
- 6914, 6497, 6493, 1772, 6490, 6605, 811, 6605, 1588, 6914, 6596, 6914, 1445, 1, 1, 6647, 1, 2119, 6918,
- 137, 1929, 7363, 1, 6497, 6493, 6487, 6490, 5715, 6504, 263, 6501, 453, 4708, 4681, 5738, 6914, 257,
- 345, 6497, 6493, 1772, 6490, 6605, 811, 6605, 1588, 7451, 7213, 7211, 7220, 7219, 7215, 7216, 7214,
- 7217, 7218, 7221, 7212, 7208, 7287, 7288, 7202, 7209, 7205, 7181, 7207, 7206, 7203, 7204, 7182, 126,
- 2994, 7386, 7387, 7388, 6914, 6654, 6654, 263, 6650, 263, 263, 263, 263, 6730, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6914, 6484, 6481, 6914, 6952, 263, 3508, 1, 1, 6497,
- 6493, 6487, 6490, 6914, 6504, 4272, 6501, 6924, 6917, 6914, 132, 1, 1, 6647, 1, 2119, 6805, 3776, 1929,
- 7363, 1, 6497, 6493, 1772, 6490, 6914, 811, 263, 1588, 452, 6914, 481, 1, 1, 571, 1, 6632, 6923, 6632,
- 6924, 4218, 4191, 6914, 6914, 7451, 7213, 7211, 7220, 7219, 7215, 7216, 7214, 7217, 7218, 7221, 7212,
- 7208, 7287, 7288, 7202, 7209, 7205, 7181, 7207, 7206, 7203, 7204, 7182, 6109, 6923, 7386, 7387, 7388,
- 6914, 6478, 6478, 263, 6478, 263, 263, 263, 263, 6507, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 9636, 1, 1, 1, 1, 1, 1, 6180, 33, 6914, 3883, 6641, 263, 6641, 1, 6641, 6914, 6641, 6922, 367, 6484,
- 6481, 1772, 907, 1, 811, 258, 1588, 1, 1, 6475, 1, 1590, 399, 39, 762, 7159, 637, 6952, 367, 6914, 367,
- 6641, 6641, 6641, 6641, 253, 6641, 7208, 7287, 7288, 7202, 7209, 7205, 7181, 7207, 7206, 7203, 7204,
- 7182, 6914, 7451, 6641, 381, 39, 39, 4530, 6952, 367, 6641, 367, 155, 6914, 6641, 6914, 47, 6641, 1068,
- 6641, 6641, 6641, 6641, 6921, 6926, 403, 6497, 6493, 4299, 6490, 1, 811, 1, 1588, 253, 6641, 6641, 399,
- 6641, 6641, 6641, 6641, 6641, 6641, 6641, 6641, 6641, 6641, 6641, 6641, 6641, 6641, 6641, 6641, 6641,
- 6641, 6641, 6641, 6641, 6641, 6641, 6641, 399, 356, 6914, 1445, 6641, 6641, 6641, 6914, 1096, 433, 6826,
- 1341, 6826, 424, 6826, 495, 6826, 6914, 6484, 6481, 485, 907, 6925, 6829, 1445, 1588, 6914, 37, 6929,
- 6929, 6929, 6929, 6929, 1299, 6929, 6914, 6484, 6481, 6914, 6952, 665, 6826, 6826, 6826, 6826, 3545,
- 6826, 6914, 6914, 6929, 6929, 6929, 6929, 6929, 6929, 6929, 6929, 6929, 6929, 6929, 6929, 6826, 1445,
- 1427, 1442, 6914, 6484, 6481, 6826, 907, 6914, 6829, 6826, 1588, 2102, 6826, 6635, 6826, 6826, 6826,
- 6826, 1, 6497, 6493, 1772, 6490, 139, 811, 6929, 1588, 345, 927, 6929, 6826, 6826, 6929, 6826, 6826,
- 6826, 6826, 6826, 6826, 6826, 6826, 6826, 6826, 6826, 6826, 6826, 6826, 6826, 6826, 6826, 6826, 6826,
- 6826, 6826, 6826, 6826, 6826, 345, 6914, 2168, 491, 6826, 6826, 6826, 6914, 6478, 6478, 263, 6478, 263,
- 263, 263, 263, 263, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9636, 1, 1, 1, 1, 1, 1, 1, 6497,
- 6493, 4299, 6490, 263, 811, 1, 1588, 6817, 482, 39, 39, 6914, 6952, 6808, 6617, 6808, 36, 6885, 6882, 1,
- 1, 6475, 1, 1590, 3407, 4357, 762, 7159, 637, 39, 6484, 6481, 6279, 907, 5600, 5531, 5623, 1588, 6914,
- 1860, 7213, 7211, 7220, 7219, 7215, 7216, 7214, 7217, 7218, 7221, 7212, 159, 7451, 1, 6799, 6799, 6914,
- 6848, 367, 1445, 367, 6914, 399, 5577, 5554, 5669, 5646, 6933, 477, 5508, 6820, 1863, 1998, 6935, 1930,
- 5829, 1996, 6936, 6934, 1857, 6930, 6931, 6932, 6914, 254, 6914, 6478, 6478, 263, 6478, 263, 263, 263,
- 263, 263, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9636, 1, 1, 1, 1, 1, 1, 6914, 6914, 2204,
- 6620, 39, 263, 399, 1, 6952, 134, 39, 6914, 6484, 6481, 6952, 907, 150, 811, 6914, 1588, 1143, 1, 1,
- 6475, 1, 1590, 2986, 6920, 762, 7159, 637, 399, 2767, 3344, 4151, 2138, 2072, 2006, 1940, 1874, 1808,
- 1742, 1676, 1610, 1544, 381, 6484, 6481, 4299, 907, 367, 811, 367, 1588, 7451, 6914, 6478, 6478, 263,
- 6478, 263, 263, 263, 263, 6721, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9636, 1, 1, 1, 1, 1,
- 1, 135, 6919, 114, 372, 145, 263, 115, 1, 92, 1, 1, 5484, 1, 6872, 3690, 6872, 130, 1445, 259, 3918,
- 3851, 1, 1, 6475, 1, 1590, 7287, 7288, 762, 7159, 637, 494, 37, 6644, 6644, 7386, 7387, 7388, 6644, 254,
- 7208, 7287, 7288, 7202, 7209, 7205, 7181, 7207, 7206, 7203, 7204, 7182, 344, 6914, 7451, 6914, 6478,
- 6478, 263, 6478, 263, 263, 263, 263, 6721, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9636, 1,
- 1, 1, 1, 1, 1, 2453, 4423, 4490, 6638, 5715, 263, 3600, 1, 95, 39, 39, 5738, 6952, 6899, 6914, 6899,
- 5460, 4833, 260, 3958, 1264, 1, 1, 6475, 1, 1590, 6914, 6914, 762, 7159, 637, 1574, 6914, 6928, 6929,
- 6914, 6928, 6929, 2406, 254, 7208, 7287, 7288, 7202, 7209, 7205, 7181, 7207, 7206, 7203, 7204, 7182, 37,
- 552, 7451, 6914, 6478, 6478, 263, 6478, 263, 263, 263, 263, 6721, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 9636, 1, 1, 1, 1, 1, 1, 6914, 6484, 6481, 7463, 907, 263, 811, 1, 1588, 38, 6614, 6611,
- 5692, 1195, 1, 6608, 6914, 1588, 261, 139, 6950, 1, 1, 6475, 1, 1590, 6914, 6914, 762, 7159, 637, 6914,
- 934, 431, 6510, 6510, 6914, 318, 465, 254, 7208, 7287, 7288, 7202, 7209, 7205, 7181, 7207, 7206, 7203,
- 7204, 7182, 728, 6914, 7451, 6914, 6478, 6478, 263, 6478, 263, 263, 263, 263, 263, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9636, 1, 1, 1, 1, 1, 1, 2740, 318, 6914, 6928, 6929, 263, 117, 1, 811,
- 116, 1588, 5484, 3673, 7352, 5484, 3883, 218, 6914, 6914, 6914, 4759, 1, 1, 6475, 1, 1590, 6920, 6922,
- 762, 7159, 637, 3407, 4357, 2693, 2646, 2599, 2552, 2505, 2458, 2411, 2364, 2317, 2270, 337, 1, 6497,
- 6493, 1772, 6490, 6914, 811, 6914, 1588, 7250, 7451, 6914, 6478, 6478, 263, 6478, 263, 263, 263, 263,
- 263, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9636, 1, 1, 1, 1, 1, 1, 6919, 3135, 6921, 6914,
- 113, 263, 4894, 1, 156, 572, 112, 144, 6914, 892, 4423, 4490, 5460, 4833, 120, 5460, 4833, 1, 1, 6475,
- 1, 1590, 2994, 7406, 762, 7159, 637, 7208, 7287, 7288, 7202, 7209, 7205, 7181, 7207, 7206, 7203, 7204,
- 7182, 1, 6497, 6493, 4299, 6490, 6911, 811, 6914, 1588, 4708, 4681, 7451, 6914, 6478, 6478, 263, 6478,
- 263, 263, 263, 263, 263, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9636, 1, 1, 1, 1, 1, 1, 384,
- 6914, 6928, 6929, 6914, 263, 5715, 1, 4423, 4490, 6926, 6914, 5715, 5738, 3545, 1445, 6914, 6914, 1,
- 5738, 486, 1, 1, 6475, 1, 1590, 6920, 6626, 762, 7159, 637, 1, 6497, 6493, 3297, 907, 5600, 5531, 5623,
- 1588, 146, 6661, 6688, 6694, 6667, 6670, 6682, 6679, 6685, 6676, 6673, 6664, 6691, 442, 7451, 1, 6914,
- 6602, 6599, 6914, 1, 1445, 6724, 4530, 194, 5577, 5554, 5669, 5646, 6933, 6925, 5508, 148, 1863, 1998,
- 6935, 1930, 5829, 1996, 6936, 6934, 1857, 6930, 6931, 6932, 5973, 476, 6925, 2061, 6919, 6914, 1488,
- 6727, 6320, 4116, 6914, 553, 39, 39, 39, 6484, 6481, 6073, 907, 5600, 5531, 5623, 1588, 6896, 1860,
- 7213, 7211, 7220, 7219, 7215, 7216, 7214, 7217, 7218, 7221, 7212, 1445, 5692, 1195, 7392, 577, 4116,
- 194, 577, 4089, 1115, 6914, 6914, 5577, 5554, 5669, 5646, 6933, 398, 5508, 6924, 1863, 1998, 6935, 1930,
- 5829, 1996, 6936, 6934, 1857, 6930, 6931, 6932, 6914, 142, 37, 6644, 6644, 1, 1488, 367, 4089, 1115,
- 326, 1197, 1197, 320, 6802, 6712, 119, 6923, 6914, 6921, 39, 6484, 6481, 6073, 907, 5600, 5531, 5623,
- 1588, 6709, 1860, 7213, 7211, 7220, 7219, 7215, 7216, 7214, 7217, 7218, 7221, 7212, 37, 6644, 6644, 404,
- 744, 7386, 7387, 7388, 4708, 4681, 326, 3372, 5577, 5554, 5669, 5646, 6933, 6950, 5508, 125, 1863, 1998,
- 6935, 1930, 5829, 1996, 6936, 6934, 1857, 6930, 6931, 6932, 6914, 6700, 6697, 6914, 6921, 545, 1488,
- 7233, 6914, 383, 543, 190, 2974, 4423, 4490, 6712, 174, 6484, 6481, 6073, 907, 5600, 5531, 5623, 1588,
- 6950, 1860, 7213, 7211, 7220, 7219, 7215, 7216, 7214, 7217, 7218, 7221, 7212, 1, 1, 1, 1395, 6914, 457,
- 158, 6914, 10052, 6924, 224, 591, 5577, 5554, 5669, 5646, 6933, 29, 5508, 6950, 1863, 1998, 6935, 1930,
- 5829, 1996, 6936, 6934, 1857, 6930, 6931, 6932, 1445, 29, 8, 4423, 4490, 5874, 1488, 6923, 224, 2787,
- 5883, 6905, 39, 39, 1, 6497, 6493, 3297, 907, 5600, 5531, 5623, 1588, 147, 6661, 6688, 6694, 6667, 6670,
- 6682, 6679, 6685, 6676, 6673, 6664, 6691, 1, 3587, 6914, 6623, 3588, 6914, 591, 3192, 411, 196, 3592,
- 138, 5577, 5554, 5669, 5646, 6933, 6914, 5508, 1427, 1863, 1998, 6935, 1930, 5829, 1996, 6936, 6934,
- 1857, 6930, 6931, 6932, 6914, 124, 3446, 6914, 461, 123, 1488, 6905, 6914, 4116, 6914, 6914, 39, 39, 39,
- 6484, 6481, 6073, 907, 5600, 5531, 5623, 1588, 6709, 1860, 7213, 7211, 7220, 7219, 7215, 7216, 7214,
- 7217, 7218, 7221, 7212, 1, 463, 3589, 2077, 196, 7414, 7420, 7418, 4089, 1115, 6914, 122, 5577, 5554,
- 5669, 5646, 6933, 6914, 5508, 1662, 1863, 1998, 6935, 1930, 5829, 1996, 6936, 6934, 1857, 6930, 6931,
- 6932, 3591, 6914, 7412, 7413, 7443, 7444, 1488, 3508, 7421, 1, 6914, 2834, 4530, 4861, 4923, 6712, 2406,
- 573, 6817, 4423, 4490, 3592, 7423, 4423, 4490, 43, 6706, 6706, 6914, 625, 6914, 4358, 2349, 7424, 1385,
- 1425, 7445, 3481, 7422, 7208, 7287, 7288, 7202, 7209, 7205, 7181, 7207, 7206, 7203, 7204, 7182, 584,
- 6914, 6914, 7434, 7433, 2900, 7439, 7440, 7446, 7437, 7438, 7417, 7419, 7441, 4423, 4490, 7415, 7416,
- 7442, 1445, 7427, 7428, 7429, 7425, 7426, 7435, 7436, 7431, 7430, 7432, 6820, 6703, 6914, 1427, 7447,
- 39, 6484, 6481, 6073, 907, 5600, 5531, 5623, 1588, 6918, 1860, 7213, 7211, 7220, 7219, 7215, 7216, 7214,
- 7217, 7218, 7221, 7212, 6914, 45, 6835, 6835, 6914, 10808, 10808, 6914, 11354, 9100, 6914, 6914, 5577,
- 5554, 5669, 5646, 6933, 6914, 5508, 432, 1863, 1998, 6935, 1930, 5829, 1996, 6936, 6934, 1857, 6930,
- 6931, 6932, 1, 6497, 6493, 6796, 6490, 6745, 6757, 6748, 6501, 6914, 6661, 6688, 6694, 6667, 6670, 6682,
- 6679, 6685, 6676, 6673, 6664, 6691, 4116, 48, 1, 6914, 6832, 6929, 136, 6950, 6914, 547, 6950, 4324,
- 6742, 6739, 6754, 6751, 6769, 1143, 6736, 1427, 6784, 6793, 6763, 6787, 6733, 6790, 6760, 6766, 6781,
- 6778, 6775, 6772, 1, 48, 6914, 4089, 1115, 6928, 1734, 6914, 6914, 6920, 6917, 4369, 6799, 6799, 39,
- 6484, 6481, 6073, 907, 5600, 5531, 5623, 1588, 6929, 1860, 7213, 7211, 7220, 7219, 7215, 7216, 7214,
- 7217, 7218, 7221, 7212, 1, 6914, 6914, 4530, 4533, 4558, 4985, 1, 6914, 377, 2947, 2037, 5577, 5554,
- 5669, 5646, 6933, 6715, 5508, 6928, 1863, 1998, 6935, 1930, 5829, 1996, 6936, 6934, 1857, 6930, 6931,
- 6932, 6914, 3600, 6914, 4361, 6919, 4056, 1488, 39, 6484, 6481, 6073, 907, 5600, 5531, 5623, 1588, 6718,
- 1860, 7213, 7211, 7220, 7219, 7215, 7216, 7214, 7217, 7218, 7221, 7212, 1445, 1786, 6914, 3220, 377,
- 4757, 227, 377, 128, 6914, 6914, 377, 5577, 5554, 5669, 5646, 6933, 6914, 5508, 6914, 1863, 1998, 6935,
- 1930, 5829, 1996, 6936, 6934, 1857, 6930, 6931, 6932, 6914, 100, 103, 4738, 595, 5116, 6914, 2394, 39,
- 6484, 6481, 3297, 907, 5600, 5531, 5623, 1588, 99, 1860, 7213, 7211, 7220, 7219, 7215, 7216, 7214, 7217,
- 7218, 7221, 7212, 4272, 1918, 1984, 6914, 6914, 6914, 6256, 127, 37, 6644, 6644, 6866, 5577, 5554, 5669,
- 5646, 6933, 6914, 5508, 6879, 1863, 1998, 6935, 1930, 5829, 1996, 6936, 6934, 1857, 6930, 6931, 6932,
- 4620, 6914, 3679, 4218, 4191, 6914, 1488, 39, 6484, 6481, 3297, 907, 5600, 5531, 5623, 1588, 3234, 1860,
- 7213, 7211, 7220, 7219, 7215, 7216, 7214, 7217, 7218, 7221, 7212, 4272, 6914, 6914, 6914, 2500, 6914,
- 6892, 6888, 6914, 6914, 4887, 6869, 5577, 5554, 5669, 5646, 6933, 1712, 5508, 583, 1863, 1998, 6935,
- 1930, 5829, 1996, 6936, 6934, 1857, 6930, 6931, 6932, 6914, 6914, 6914, 4218, 4191, 1747, 1488, 39,
- 6484, 6481, 6073, 907, 5600, 5531, 5623, 1588, 6914, 1860, 7213, 7211, 7220, 7219, 7215, 7216, 7214,
- 7217, 7218, 7221, 7212, 75, 6950, 2885, 3374, 6914, 6914, 313, 1, 73, 6908, 6914, 2, 5577, 5554, 5669,
- 5646, 6933, 6715, 5508, 6914, 1863, 1998, 6935, 1930, 5829, 1996, 6936, 6934, 1857, 6930, 6931, 6932,
- 6914, 6914, 6914, 6914, 6976, 6977, 1488, 39, 6484, 6481, 6073, 907, 5600, 5531, 5623, 1588, 6718, 1860,
- 7213, 7211, 7220, 7219, 7215, 7216, 7214, 7217, 7218, 7221, 7212, 4149, 6902, 6914, 3220, 37, 6914,
- 6914, 6914, 6914, 6914, 3592, 6914, 5577, 5554, 5669, 5646, 6933, 6914, 5508, 6914, 1863, 1998, 6935,
- 1930, 5829, 1996, 6936, 6934, 1857, 6930, 6931, 6932, 39, 6484, 6481, 3297, 907, 5600, 5531, 5623, 1588,
- 6914, 1860, 7213, 7211, 7220, 7219, 7215, 7216, 7214, 7217, 7218, 7221, 7212, 6914, 6914, 871, 6914,
- 1047, 6914, 6914, 6914, 6914, 6914, 6914, 6914, 5577, 5554, 5669, 5646, 6933, 6914, 5508, 6914, 1863,
- 1998, 6935, 1930, 5829, 1996, 6936, 6934, 1857, 6930, 6931, 6932, 39, 6484, 6481, 3297, 907, 5600, 5531,
- 5623, 1588, 6914, 1860, 7213, 7211, 7220, 7219, 7215, 7216, 7214, 7217, 7218, 7221, 7212, 6914, 6914,
- 6914, 6914, 6914, 6914, 6914, 6914, 6914, 6914, 6914, 6914, 5577, 5554, 5669, 5646, 6933, 6914, 5508,
- 6914, 1863, 1998, 6935, 1930, 5829, 1996, 6936, 6934, 1857, 6930, 6931, 6932, 39, 6484, 6481, 6073, 907,
- 5600, 5531, 5623, 1588, 6914, 1860, 7213, 7211, 7220, 7219, 7215, 7216, 7214, 7217, 7218, 7221, 7212,
- 6914, 6914, 6914, 6914, 6914, 6914, 6914, 6914, 6914, 6914, 6914, 6914, 5577, 5554, 5669, 5646, 6933,
- 6914, 5508, 6914, 1863, 1998, 6935, 1930, 5829, 1996, 6936, 6934, 1857, 6930, 6931, 6932, 6914, 6484,
- 6481, 6914, 6952, 6914, 6914, 6914, 6914, 6914, 641, 7213, 7211, 7220, 7219, 7215, 7216, 7214, 7217,
- 7218, 7221, 7212, 7208, 7287, 7288, 7202, 7209, 7205, 7181, 7207, 7206, 7203, 7204, 7182, 6914, 6914,
- 6914, 6914, 6914, 6914, 6914, 7349, 6914, 6914, 6914, 6914, 6914, 6914, 6914, 275, 6589, 6585, 6914,
- 6593, 6914, 603, 7350, 6914, 7351, 641, 6576, 6582, 6555, 6558, 6570, 6567, 6573, 6564, 6561, 6552,
- 6579, 6531, 6525, 6522, 6549, 6528, 6540, 6519, 6534, 6537, 6546, 6543, 6516, 6914, 6914, 6914, 6914,
- 6914, 6914, 6914, 7349, 6914, 6914, 6914, 6914, 6914, 6914, 6914, 6914, 6928, 6929, 6914, 6914, 6914,
- 603, 7350, 6914, 7351, 1796, 7213, 7211, 7220, 7219, 7215, 7216, 7214, 7217, 7218, 7221, 7212, 7208,
- 7287, 7288, 7202, 7209, 7205, 7181, 7207, 7206, 7203, 7204, 7182, 6914, 6914, 6914, 6914, 6914, 6914,
- 6914, 7349, 6914, 6914, 6914, 6914, 6914, 6914, 6914, 275, 6814, 6811, 6914, 6914, 6914, 603, 7350,
- 6914, 7351, 1796, 6576, 6582, 6555, 6558, 6570, 6567, 6573, 6564, 6561, 6552, 6579, 6531, 6525, 6522,
- 6549, 6528, 6540, 6519, 6534, 6537, 6546, 6543, 6516, 6914, 6914, 6914, 6914, 6914, 6914, 6914, 7349,
- 29, 424, 424, 6857, 424, 6857, 424, 6857, 424, 6857, 6914, 6914, 6914, 603, 7350, 6914, 7351, 6914, 574,
- 6914, 6914, 6914, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 6914, 6914, 6914, 6914,
- 6914, 6857, 7208, 7287, 7288, 7202, 7209, 7205, 7181, 7207, 7206, 7203, 7204, 7182, 6914, 6914, 6623,
- 6914, 6914, 6914, 6914, 6914, 6914, 6857, 32, 425, 425, 6854, 425, 6854, 425, 6854, 425, 6854, 6857,
- 6914, 6914, 6914, 6914, 6914, 6914, 6914, 6914, 6914, 6914, 6914, 425, 425, 425, 425, 425, 425, 425,
- 425, 425, 425, 425, 425, 6914, 6914, 6914, 6914, 6914, 6854, 6914, 6914, 6914, 6914, 6914, 6914, 6914,
- 6914, 6914, 6914, 6914, 37, 6928, 6928, 6928, 6928, 6928, 6914, 6928, 6914, 6914, 6854, 6914, 575, 6914,
- 6914, 6914, 6914, 6914, 6914, 6914, 6914, 6854, 6928, 6928, 6928, 6928, 6928, 6928, 6928, 6928, 6928,
- 6928, 6928, 6928, 7208, 7287, 7288, 7202, 7209, 7205, 7181, 7207, 7206, 7203, 7204, 7182, 6914, 6914,
- 6914, 6914, 6914, 6914, 6914, 6914, 6914, 6914, 6914, 6914, 6914, 6914, 6914, 6928, 6914, 6914, 6914,
- 6928, 6914, 6914, 6928 };
- }
-
- public final static char termAction[] = TermAction.termAction;
-
- @Override
- public final int termAction(int index) {
- return termAction[index];
- }
-
- public interface Asb {
- public final static char asb[] = { 0, 946, 7, 1159, 258, 563, 419, 53, 1074, 61, 66, 1120, 519, 330, 61, 997,
- 1008, 68, 1008, 63, 1008, 1, 1008, 992, 1008, 519, 520, 115, 419, 514, 158, 678, 678, 523, 520, 678,
- 520, 258, 751, 1072, 9, 68, 68, 273, 520, 331, 112, 165, 65, 987, 66, 519, 277, 520, 520, 51, 212, 432,
- 432, 270, 260, 260, 517, 267, 269, 514, 520, 427, 112, 277, 277, 675, 376, 112, 678, 678, 751, 678, 520,
- 49, 861, 181, 1122, 1122, 1121, 1121, 68, 519, 520, 331, 270, 165, 520, 432, 595, 430, 51, 68, 633, 520,
- 277, 51, 520, 1113, 432, 68, 519, 336, 514, 520, 481, 121, 514, 1113, 673, 671, 277, 277, 517, 376, 376,
- 331, 861, 181, 1121, 1121, 1121, 520, 270, 270, 724, 520, 165, 853, 66, 751, 329, 843, 165, 432, 431,
- 432, 432, 51, 633, 633, 520, 1072, 564, 250, 258, 751, 751, 751, 751, 519, 258, 160, 482, 482, 482, 482,
- 482, 482, 482, 482, 482, 680, 686, 691, 688, 465, 1049, 1047, 1054, 1052, 1056, 1055, 1057, 379, 1058,
- 1071, 520, 212, 520, 68, 445, 639, 520, 258, 376, 465, 693, 698, 695, 701, 700, 703, 702, 718, 428, 112,
- 481, 724, 68, 704, 428, 671, 1072, 1072, 675, 112, 656, 827, 838, 1071, 751, 55, 55, 724, 724, 1121,
- 520, 49, 845, 432, 432, 432, 432, 520, 633, 723, 727, 723, 600, 611, 611, 611, 611, 557, 519, 517, 857,
- 835, 834, 465, 563, 563, 563, 563, 520, 71, 904, 562, 49, 465, 680, 48, 48, 71, 481, 482, 482, 482, 482,
- 482, 482, 482, 112, 112, 248, 465, 732, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 481, 481,
- 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 482, 465, 1113, 643, 446, 519, 520, 71, 482, 482, 482,
- 482, 482, 482, 482, 482, 482, 482, 481, 482, 737, 724, 121, 481, 481, 481, 481, 481, 481, 481, 481, 481,
- 481, 481, 671, 671, 645, 481, 836, 836, 855, 517, 753, 181, 1122, 181, 1070, 1070, 724, 270, 331, 269,
- 482, 853, 268, 744, 432, 432, 896, 723, 724, 482, 520, 520, 248, 112, 859, 861, 112, 112, 1072, 1072,
- 1072, 1072, 51, 112, 376, 562, 481, 112, 330, 332, 330, 112, 376, 688, 688, 686, 686, 686, 482, 786,
- 1014, 1014, 519, 160, 482, 1047, 1047, 1047, 691, 691, 1052, 1049, 1049, 1055, 1054, 1056, 853, 1057,
- 643, 445, 853, 482, 853, 270, 444, 258, 258, 258, 446, 258, 520, 386, 270, 270, 520, 68, 112, 695, 695,
- 693, 693, 693, 693, 700, 698, 702, 701, 853, 703, 481, 121, 671, 670, 645, 481, 481, 859, 827, 181, 563,
- 563, 270, 845, 482, 482, 639, 209, 897, 520, 724, 51, 112, 861, 258, 258, 258, 258, 520, 520, 482, 563,
- 684, 214, 112, 520, 332, 49, 520, 49, 822, 481, 436, 258, 436, 446, 853, 446, 465, 465, 463, 444, 465,
- 270, 270, 668, 443, 481, 723, 671, 647, 1071, 896, 520, 519, 519, 520, 520, 660, 112, 481, 481, 481,
- 481, 258, 258, 112, 684, 517, 212, 520, 331, 51, 331, 753, 446, 112, 514, 112, 463, 419, 258, 112, 643,
- 722, 120, 647, 593, 520, 520, 520, 660, 660, 112, 112, 112, 112, 71, 71, 684, 685, 684, 481, 214, 334,
- 680, 212, 520, 112, 112, 810, 446, 668, 446, 270, 419, 481, 446, 443, 722, 722, 258, 55, 520, 520, 652,
- 660, 112, 112, 684, 71, 482, 376, 334, 797, 68, 68, 936, 481, 444, 71, 270, 112, 862, 1070, 652, 652,
- 685, 112, 376, 446, 112, 270, 839, 330, 652, 446, 563 };
- }
-
- public final static char asb[] = Asb.asb;
-
- @Override
- public final int asb(int index) {
- return asb[index];
- }
-
- public interface Asr {
- public final static byte asr[] = { 0, 4, 9, 69, 1, 2, 0, 120, 0, 64, 25, 11, 12, 41, 23, 13, 55, 26, 88, 27, 14,
- 28, 29, 15, 16, 30, 59, 31, 17, 18, 32, 56, 33, 10, 58, 19, 62, 22, 20, 24, 21, 3, 7, 5, 39, 63, 69, 9,
- 4, 8, 6, 1, 2, 57, 0, 65, 70, 68, 1, 2, 0, 38, 0, 57, 4, 71, 1, 2, 69, 9, 0, 11, 12, 42, 66, 13, 43, 44,
- 14, 15, 16, 67, 8, 45, 17, 18, 46, 47, 48, 60, 49, 50, 10, 19, 20, 21, 51, 52, 53, 38, 1, 2, 3, 36, 37,
- 7, 5, 34, 35, 6, 40, 4, 72, 9, 0, 9, 71, 69, 74, 0, 73, 60, 36, 37, 7, 5, 34, 35, 40, 46, 3, 4, 51, 52,
- 53, 38, 49, 44, 48, 12, 21, 11, 17, 15, 16, 18, 19, 14, 13, 20, 10, 43, 47, 45, 42, 50, 69, 9, 8, 6, 1,
- 2, 67, 66, 0, 88, 59, 8, 114, 115, 116, 62, 9, 3, 7, 5, 6, 71, 73, 39, 63, 25, 11, 12, 41, 23, 13, 55,
- 26, 27, 14, 28, 29, 15, 16, 30, 31, 17, 18, 32, 56, 57, 33, 10, 58, 19, 20, 24, 21, 1, 2, 22, 4, 0, 98,
- 91, 34, 35, 99, 100, 86, 87, 54, 89, 90, 92, 93, 94, 95, 96, 101, 102, 71, 97, 70, 103, 104, 105, 106,
- 107, 108, 109, 110, 111, 112, 118, 73, 39, 9, 72, 65, 68, 1, 2, 7, 5, 4, 61, 3, 0, 74, 65, 71, 97, 72,
- 69, 61, 3, 70, 68, 39, 9, 0, 9, 69, 70, 0, 25, 11, 12, 41, 23, 42, 66, 13, 43, 55, 26, 27, 44, 14, 28,
- 29, 15, 16, 30, 67, 31, 45, 17, 18, 46, 32, 47, 56, 48, 60, 49, 33, 50, 58, 19, 22, 20, 24, 21, 51, 52,
- 53, 38, 3, 36, 37, 7, 5, 34, 35, 40, 65, 10, 4, 8, 1, 2, 6, 0, 66, 67, 3, 10, 43, 47, 45, 42, 50, 12,
- 21, 11, 17, 15, 16, 18, 19, 14, 13, 20, 51, 52, 53, 38, 49, 44, 48, 6, 8, 4, 36, 37, 7, 5, 34, 35, 40,
- 46, 1, 2, 118, 9, 0, 65, 71, 97, 68, 118, 72, 73, 11, 12, 42, 66, 13, 43, 44, 14, 15, 16, 67, 45, 17,
- 18, 46, 47, 48, 60, 49, 50, 10, 19, 20, 21, 51, 52, 53, 38, 36, 37, 34, 35, 40, 9, 39, 6, 8, 1, 2, 4, 3,
- 7, 5, 0, 4, 54, 9, 71, 69, 0, 88, 114, 115, 116, 57, 71, 120, 113, 121, 73, 63, 74, 62, 59, 64, 76, 78,
- 84, 82, 75, 80, 81, 83, 85, 69, 77, 79, 39, 9, 23, 41, 55, 26, 27, 28, 29, 30, 25, 31, 32, 56, 33, 58,
- 22, 24, 60, 66, 67, 10, 43, 47, 45, 42, 50, 12, 21, 11, 17, 15, 16, 18, 19, 14, 13, 20, 51, 52, 53, 38,
- 49, 44, 48, 36, 37, 34, 35, 40, 46, 6, 8, 3, 7, 5, 4, 1, 2, 0, 67, 66, 34, 35, 99, 100, 94, 95, 6, 40,
- 70, 54, 106, 107, 103, 104, 105, 111, 110, 112, 87, 86, 108, 109, 92, 93, 89, 90, 96, 101, 36, 37, 91,
- 117, 61, 7, 5, 65, 68, 3, 4, 10, 1, 2, 55, 56, 58, 12, 21, 11, 17, 15, 16, 18, 19, 14, 13, 20, 25, 31,
- 32, 27, 30, 29, 22, 26, 23, 24, 28, 33, 41, 0, 4, 9, 71, 69, 0, 12, 21, 11, 17, 15, 16, 18, 19, 14, 13,
- 20, 1, 2, 61, 3, 7, 5, 65, 4, 68, 25, 31, 32, 27, 30, 29, 22, 26, 23, 24, 28, 33, 0, 1, 2, 9, 68, 73, 0,
- 9, 69, 68, 0, 113, 0, 23, 24, 74, 3, 71, 39, 69, 60, 65, 70, 68, 9, 72, 97, 0, 23, 60, 24, 9, 65, 97,
- 68, 72, 70, 0, 60, 23, 24, 8, 6, 1, 2, 4, 74, 69, 119, 117, 36, 37, 61, 3, 98, 91, 5, 99, 100, 34, 35,
- 87, 86, 54, 89, 90, 92, 93, 7, 94, 95, 96, 65, 97, 72, 70, 103, 104, 105, 106, 107, 108, 109, 110, 111,
- 112, 71, 118, 101, 102, 39, 68, 73, 9, 0, 9, 68, 73, 70, 0, 54, 65, 89, 90, 0, 9, 71, 118, 72, 39, 68,
- 0, 71, 9, 61, 3, 70, 68, 39, 54, 0, 25, 11, 12, 41, 23, 13, 55, 26, 27, 14, 28, 29, 15, 16, 30, 31, 17,
- 18, 32, 56, 33, 10, 58, 19, 22, 20, 24, 21, 1, 2, 4, 97, 0, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
- 25, 23, 26, 27, 28, 29, 30, 31, 32, 33, 22, 24, 39, 9, 72, 8, 1, 2, 61, 3, 7, 5, 6, 4, 0, 72, 9, 87, 86,
- 0, 7, 5, 8, 6, 4, 1, 2, 3, 61, 65, 70, 97, 72, 9, 68, 0, 39, 9, 3, 8, 6, 7, 5, 4, 1, 2, 71, 0, 6, 8, 3,
- 61, 5, 7, 97, 25, 11, 12, 41, 23, 13, 55, 26, 27, 14, 28, 29, 15, 16, 30, 31, 17, 18, 32, 56, 33, 10,
- 58, 19, 22, 20, 24, 21, 1, 2, 4, 72, 9, 0, 22, 1, 2, 4, 114, 115, 116, 0, 66, 67, 36, 37, 34, 35, 40,
- 46, 51, 52, 53, 38, 49, 44, 48, 12, 21, 11, 17, 15, 16, 18, 19, 14, 13, 20, 10, 43, 47, 45, 42, 50, 7,
- 5, 3, 61, 8, 6, 4, 1, 2, 0, 9, 3, 7, 5, 6, 8, 39, 25, 11, 12, 41, 23, 13, 55, 26, 14, 28, 29, 15, 16,
- 30, 31, 17, 18, 32, 56, 33, 10, 58, 19, 22, 20, 24, 21, 120, 63, 59, 27, 88, 64, 62, 57, 1, 2, 4, 0, 10,
- 55, 41, 56, 58, 12, 21, 11, 17, 15, 16, 18, 19, 14, 13, 20, 74, 71, 97, 118, 73, 69, 8, 31, 32, 33, 22,
- 24, 1, 2, 30, 29, 28, 27, 26, 6, 4, 23, 25, 119, 98, 117, 91, 36, 37, 34, 35, 99, 100, 9, 61, 3, 5, 72,
- 39, 87, 86, 54, 89, 90, 92, 93, 7, 94, 95, 96, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
- 112, 70, 68, 65, 0, 41, 23, 13, 55, 26, 14, 28, 29, 15, 16, 30, 31, 17, 18, 32, 56, 33, 10, 58, 19, 22,
- 20, 24, 21, 12, 11, 25, 9, 3, 7, 39, 62, 59, 64, 88, 27, 63, 54, 4, 8, 5, 6, 1, 2, 57, 0, 120, 73, 41,
- 23, 13, 55, 26, 14, 28, 29, 15, 16, 30, 31, 17, 18, 32, 56, 33, 58, 19, 22, 20, 24, 21, 12, 11, 25, 9,
- 3, 7, 5, 39, 63, 27, 88, 64, 62, 57, 8, 1, 2, 6, 4, 10, 59, 0 };
- }
-
- public final static byte asr[] = Asr.asr;
-
- @Override
- public final int asr(int index) {
- return asr[index];
- }
-
- public interface Nasb {
- public final static char nasb[] = { 0, 270, 12, 41, 12, 5, 166, 12, 284, 12, 117, 284, 80, 80, 12, 281, 282,
- 221, 282, 49, 282, 13, 282, 275, 12, 10, 173, 188, 156, 183, 240, 12, 12, 113, 267, 12, 173, 12, 12, 12,
- 220, 221, 118, 12, 227, 227, 97, 188, 43, 80, 70, 80, 188, 173, 11, 12, 12, 188, 68, 178, 85, 85, 161,
- 16, 12, 236, 173, 12, 97, 188, 188, 34, 104, 97, 12, 12, 12, 12, 11, 22, 188, 188, 284, 284, 188, 188,
- 221, 80, 135, 240, 178, 297, 44, 91, 91, 12, 227, 221, 188, 227, 24, 123, 44, 93, 68, 120, 64, 99, 236,
- 173, 61, 74, 183, 131, 163, 163, 24, 24, 161, 104, 104, 240, 208, 208, 270, 270, 188, 227, 178, 178,
- 109, 173, 178, 12, 134, 12, 41, 165, 297, 91, 91, 188, 188, 123, 188, 268, 11, 12, 253, 212, 12, 12, 12,
- 12, 12, 80, 12, 173, 76, 76, 263, 76, 76, 76, 76, 76, 76, 12, 12, 12, 12, 143, 12, 12, 12, 12, 12, 12,
- 12, 76, 12, 12, 44, 12, 11, 120, 108, 12, 227, 12, 104, 148, 12, 12, 12, 12, 12, 12, 12, 12, 163, 97,
- 76, 188, 221, 12, 12, 188, 12, 12, 192, 97, 12, 181, 12, 12, 12, 32, 32, 109, 109, 270, 135, 22, 156,
- 188, 188, 39, 39, 44, 268, 37, 12, 12, 281, 282, 282, 282, 282, 289, 10, 161, 211, 85, 85, 148, 305,
- 305, 305, 305, 173, 58, 76, 89, 22, 148, 12, 52, 52, 58, 149, 76, 76, 76, 76, 76, 76, 76, 97, 97, 212,
- 1, 12, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 149, 76,
- 24, 93, 188, 199, 64, 11, 58, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 149, 76, 12, 109, 188, 76, 76, 76,
- 76, 76, 76, 76, 76, 76, 76, 76, 163, 141, 188, 76, 12, 12, 180, 161, 208, 208, 284, 188, 12, 12, 109,
- 178, 240, 178, 76, 12, 137, 12, 39, 39, 230, 37, 109, 76, 268, 173, 190, 97, 205, 188, 97, 97, 12, 12,
- 12, 12, 21, 97, 104, 305, 61, 97, 239, 173, 239, 97, 104, 12, 12, 12, 12, 12, 76, 12, 12, 12, 10, 173,
- 76, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 47, 216, 12, 76, 12, 178, 12, 12, 12, 12, 217,
- 12, 268, 176, 178, 178, 268, 126, 97, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 76, 74, 188, 141,
- 141, 76, 76, 205, 234, 208, 305, 305, 178, 183, 76, 76, 12, 80, 139, 227, 109, 123, 97, 208, 12, 12, 12,
- 12, 44, 11, 76, 305, 188, 82, 97, 173, 260, 22, 173, 22, 97, 76, 111, 12, 12, 217, 12, 217, 223, 223,
- 244, 12, 223, 178, 178, 12, 188, 76, 109, 141, 188, 12, 152, 227, 80, 80, 11, 44, 188, 97, 149, 149,
- 149, 149, 12, 12, 97, 18, 192, 12, 267, 44, 20, 44, 305, 217, 97, 183, 97, 249, 188, 12, 97, 47, 106,
- 73, 87, 12, 11, 227, 227, 141, 188, 97, 97, 97, 97, 58, 58, 188, 129, 12, 149, 192, 261, 12, 12, 44, 97,
- 97, 188, 217, 12, 217, 178, 183, 149, 217, 111, 106, 12, 12, 32, 11, 11, 188, 141, 97, 97, 18, 58, 76,
- 104, 261, 12, 126, 126, 181, 76, 12, 196, 178, 97, 304, 12, 87, 188, 129, 97, 104, 217, 97, 178, 97,
- 239, 87, 217, 305 };
- }
-
- public final static char nasb[] = Nasb.nasb;
-
- @Override
- public final int nasb(int index) {
- return nasb[index];
- }
-
- public interface Nasr {
- public final static char nasr[] = { 0, 3, 13, 10, 9, 137, 136, 113, 135, 134, 4, 2, 0, 166, 200, 0, 201, 0, 161,
- 0, 2, 154, 75, 0, 4, 10, 9, 2, 13, 129, 5, 0, 123, 0, 5, 212, 0, 167, 0, 125, 0, 170, 0, 44, 2, 3, 0,
- 175, 0, 166, 205, 0, 4, 2, 9, 10, 157, 0, 5, 105, 0, 5, 28, 0, 186, 4, 185, 0, 173, 0, 42, 1, 0, 81,
- 148, 42, 13, 2, 9, 10, 4, 0, 5, 194, 0, 80, 0, 144, 0, 192, 0, 124, 0, 75, 156, 155, 0, 30, 0, 13, 2, 9,
- 10, 4, 94, 0, 176, 0, 5, 81, 0, 131, 0, 5, 52, 213, 0, 1, 140, 0, 42, 174, 0, 2, 75, 0, 42, 66, 0, 159,
- 0, 75, 59, 0, 140, 119, 0, 208, 0, 210, 0, 51, 0, 13, 2, 9, 10, 4, 52, 5, 37, 0, 4, 115, 182, 0, 5, 10,
- 9, 2, 78, 4, 98, 59, 0, 39, 4, 2, 9, 10, 5, 172, 0, 2, 44, 0, 5, 37, 39, 0, 30, 101, 100, 78, 4, 2, 9,
- 10, 5, 0, 101, 100, 59, 4, 68, 0, 5, 195, 0, 5, 49, 42, 37, 196, 0, 59, 4, 98, 27, 5, 0, 30, 100, 101,
- 5, 0, 81, 37, 49, 82, 5, 42, 0, 5, 52, 117, 0, 2, 67, 0, 4, 115, 209, 0, 101, 100, 59, 78, 68, 4, 10, 9,
- 2, 0, 37, 5, 27, 198, 0, 52, 5, 197, 0, 137, 214, 136, 113, 135, 134, 0, 2, 132, 0, 4, 10, 9, 13, 3, 1,
- 0, 118, 92, 49, 5, 0, 2, 4, 113, 110, 111, 112, 13, 69, 0, 5, 49, 92, 95, 0, 113, 69, 13, 110, 111, 112,
- 190, 0, 5, 49, 92, 115, 47, 4, 0, 30, 5, 52, 0 };
- }
-
- public final static char nasr[] = Nasr.nasr;
-
- @Override
- public final int nasr(int index) {
- return nasr[index];
- }
-
- public interface TerminalIndex {
- public final static char terminalIndex[] = { 0, 113, 114, 2, 31, 10, 13, 9, 79, 115, 100, 48, 52, 60, 68, 74,
- 75, 86, 87, 102, 105, 107, 104, 54, 106, 47, 64, 66, 70, 73, 76, 83, 89, 98, 11, 12, 7, 8, 112, 120, 14,
- 53, 55, 61, 67, 84, 88, 90, 94, 97, 99, 109, 110, 111, 19, 63, 91, 93, 101, 77, 95, 1, 103, 122, 46, 20,
- 58, 78, 44, 121, 33, 30, 118, 119, 96, 108, 49, 50, 56, 57, 59, 69, 71, 72, 85, 92, 17, 18, 65, 21, 22,
- 6, 23, 24, 25, 26, 27, 32, 4, 15, 16, 28, 29, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 51, 80, 81, 82, 5,
- 117, 3, 123, 62, 116 };
- }
-
- public final static char terminalIndex[] = TerminalIndex.terminalIndex;
-
- @Override
- public final int terminalIndex(int index) {
- return terminalIndex[index];
- }
-
- public interface NonterminalIndex {
- public final static char nonterminalIndex[] = { 0, 129, 134, 135, 0, 0, 133, 0, 0, 236, 242, 132, 0, 142, 0,
- 131, 0, 0, 141, 147, 0, 0, 148, 157, 158, 159, 160, 187, 150, 0, 125, 161, 140, 162, 163, 164, 165, 130,
- 166, 127, 167, 0, 128, 137, 136, 169, 168, 184, 0, 0, 170, 194, 151, 171, 0, 0, 0, 0, 0, 0, 172, 173,
- 174, 175, 0, 176, 179, 0, 154, 193, 0, 0, 0, 211, 0, 0, 144, 208, 212, 0, 213, 126, 178, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 182, 124, 185, 0, 0, 209, 215, 216, 217, 0, 219, 156, 0, 145, 0, 0, 214, 196, 197, 198,
- 200, 226, 227, 0, 181, 186, 203, 0, 0, 218, 0, 0, 0, 0, 247, 0, 250, 0, 251, 146, 188, 189, 190, 191,
- 195, 199, 202, 0, 205, 0, 206, 0, 221, 224, 0, 0, 0, 245, 0, 246, 0, 0, 138, 139, 143, 0, 0, 153, 155,
- 0, 177, 0, 192, 0, 0, 0, 201, 0, 204, 210, 0, 222, 223, 0, 0, 228, 231, 0, 233, 235, 0, 239, 240, 241,
- 244, 0, 0, 248, 0, 0, 149, 152, 0, 180, 0, 183, 0, 0, 207, 220, 225, 0, 0, 229, 230, 232, 234, 0, 237,
- 238, 243, 249, 252, 253, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static char nonterminalIndex[] = NonterminalIndex.nonterminalIndex;
-
- @Override
- public final int nonterminalIndex(int index) {
- return nonterminalIndex[index];
- }
-
- public interface ScopePrefix {
- public final static char scopePrefix[] = { 172, 324, 608, 627, 317, 332, 559, 575, 586, 597, 372, 280, 294, 311,
- 344, 55, 305, 392, 430, 180, 616, 502, 20, 33, 64, 84, 93, 98, 103, 143, 208, 339, 350, 20, 467, 157,
- 286, 300, 530, 40, 157, 382, 20, 635, 40, 230, 259, 1, 14, 27, 74, 89, 119, 27, 361, 365, 448, 495, 524,
- 551, 555, 645, 649, 653, 110, 7, 110, 410, 426, 439, 460, 479, 543, 129, 129, 245, 439, 566, 582, 593,
- 604, 220, 513, 69, 69, 169, 235, 238, 69, 254, 275, 238, 238, 69, 369, 492, 499, 169, 69, 668, 123, 355,
- 414, 454, 486, 472, 69, 355, 401, 190, 117, 452, 657, 664, 657, 664, 78, 420, 150, 117, 117, 264 };
- }
-
- public final static char scopePrefix[] = ScopePrefix.scopePrefix;
-
- @Override
- public final int scopePrefix(int index) {
- return scopePrefix[index];
- }
-
- public interface ScopeSuffix {
- public final static char scopeSuffix[] = { 18, 148, 5, 5, 148, 148, 5, 5, 5, 5, 379, 148, 108, 148, 25, 61, 291,
- 398, 436, 186, 80, 508, 25, 38, 38, 38, 72, 72, 108, 148, 213, 31, 31, 25, 5, 162, 291, 114, 535, 51,
- 165, 387, 622, 640, 45, 224, 224, 5, 18, 31, 5, 72, 108, 31, 108, 108, 148, 257, 5, 5, 5, 5, 5, 257,
- 666, 11, 114, 379, 379, 379, 464, 483, 535, 133, 138, 249, 443, 570, 570, 570, 570, 224, 517, 72, 72, 5,
- 5, 241, 243, 257, 5, 278, 278, 243, 108, 5, 257, 5, 528, 5, 126, 358, 417, 457, 489, 475, 547, 538, 404,
- 193, 108, 108, 659, 659, 661, 661, 80, 422, 152, 215, 200, 266 };
- }
-
- public final static char scopeSuffix[] = ScopeSuffix.scopeSuffix;
-
- @Override
- public final int scopeSuffix(int index) {
- return scopeSuffix[index];
- }
-
- public interface ScopeLhs {
- public final static char scopeLhs[] = { 47, 112, 18, 18, 91, 112, 18, 18, 18, 18, 85, 97, 48, 91, 111, 89, 57,
- 85, 84, 47, 18, 20, 190, 3, 7, 8, 182, 182, 178, 110, 47, 111, 111, 138, 45, 147, 58, 48, 157, 151, 147,
- 85, 18, 18, 151, 102, 72, 153, 88, 190, 185, 182, 178, 138, 199, 55, 66, 161, 19, 18, 18, 18, 18, 18,
- 12, 131, 178, 85, 84, 84, 64, 41, 157, 114, 114, 68, 84, 18, 18, 18, 18, 102, 20, 186, 182, 201, 100,
- 109, 74, 80, 73, 172, 93, 138, 86, 162, 161, 192, 157, 17, 178, 138, 117, 83, 22, 45, 157, 157, 85, 47,
- 178, 79, 155, 44, 155, 44, 185, 117, 110, 47, 47, 72 };
- }
-
- public final static char scopeLhs[] = ScopeLhs.scopeLhs;
-
- @Override
- public final int scopeLhs(int index) {
- return scopeLhs[index];
- }
-
- public interface ScopeLa {
- public final static byte scopeLa[] = { 113, 73, 72, 72, 73, 73, 72, 72, 72, 72, 72, 73, 39, 73, 1, 65, 1, 72,
- 121, 69, 3, 72, 1, 65, 65, 65, 1, 1, 39, 73, 69, 1, 1, 1, 72, 73, 1, 1, 4, 65, 68, 39, 1, 1, 65, 72, 72,
- 72, 113, 1, 72, 1, 39, 1, 39, 39, 73, 118, 72, 72, 72, 72, 72, 118, 1, 72, 1, 72, 72, 72, 71, 71, 4, 1,
- 1, 5, 72, 65, 65, 65, 65, 72, 3, 1, 1, 72, 72, 3, 1, 118, 72, 1, 1, 1, 39, 72, 118, 72, 6, 72, 1, 57,
- 70, 71, 72, 65, 1, 57, 75, 74, 39, 39, 4, 4, 4, 4, 3, 1, 69, 1, 1, 3 };
- }
-
- public final static byte scopeLa[] = ScopeLa.scopeLa;
-
- @Override
- public final int scopeLa(int index) {
- return scopeLa[index];
- }
-
- public interface ScopeStateSet {
- public final static char scopeStateSet[] = { 342, 336, 245, 245, 365, 336, 245, 245, 245, 245, 353, 367, 342,
- 365, 336, 365, 344, 353, 353, 342, 245, 245, 42, 175, 221, 221, 21, 21, 97, 336, 342, 336, 336, 338, 72,
- 332, 344, 342, 37, 45, 332, 353, 245, 245, 45, 106, 156, 4, 353, 42, 49, 21, 97, 338, 35, 344, 52, 8,
- 245, 245, 245, 245, 245, 245, 225, 16, 97, 353, 353, 353, 80, 305, 37, 336, 336, 115, 353, 245, 245,
- 245, 245, 106, 245, 49, 21, 100, 106, 108, 156, 102, 156, 172, 161, 338, 353, 1, 8, 40, 37, 245, 97,
- 338, 11, 353, 246, 72, 37, 37, 353, 342, 97, 24, 69, 131, 69, 131, 49, 11, 336, 342, 342, 156 };
- }
-
- public final static char scopeStateSet[] = ScopeStateSet.scopeStateSet;
-
- @Override
- public final int scopeStateSet(int index) {
- return scopeStateSet[index];
- }
-
- public interface ScopeRhs {
- public final static char scopeRhs[] = { 0, 338, 3, 60, 0, 125, 0, 337, 3, 113, 0, 125, 179, 0, 127, 188, 74, 0,
- 223, 0, 197, 166, 126, 10, 0, 135, 0, 166, 126, 10, 0, 134, 0, 271, 127, 54, 124, 0, 20, 0, 309, 127,
- 54, 57, 0, 20, 53, 0, 33, 131, 0, 20, 53, 0, 0, 309, 127, 54, 57, 214, 0, 20, 185, 0, 271, 127, 54, 132,
- 0, 189, 126, 0, 140, 0, 227, 3, 308, 0, 308, 0, 2, 0, 125, 0, 271, 127, 54, 131, 0, 189, 126, 237, 0,
- 189, 126, 22, 237, 0, 189, 126, 332, 22, 0, 128, 197, 166, 126, 0, 127, 0, 197, 166, 126, 0, 133, 127,
- 0, 171, 0, 328, 127, 171, 0, 127, 171, 0, 229, 127, 0, 166, 327, 235, 0, 135, 0, 0, 0, 0, 134, 0, 0, 0,
- 0, 326, 127, 164, 236, 0, 126, 0, 236, 0, 128, 0, 0, 126, 0, 325, 127, 164, 270, 0, 126, 0, 0, 44, 126,
- 0, 0, 150, 3, 0, 127, 296, 295, 127, 74, 294, 171, 0, 295, 127, 74, 294, 171, 0, 222, 0, 223, 0, 294,
- 171, 0, 96, 0, 0, 222, 0, 223, 0, 210, 96, 0, 0, 222, 0, 223, 0, 295, 127, 294, 171, 0, 222, 0, 210, 0,
- 0, 222, 0, 242, 127, 3, 0, 125, 0, 0, 0, 0, 0, 242, 127, 3, 222, 0, 231, 3, 0, 220, 127, 0, 215, 0, 145,
- 0, 181, 166, 126, 0, 10, 0, 0, 0, 0, 226, 61, 0, 124, 0, 242, 127, 3, 195, 0, 195, 0, 2, 0, 0, 125, 0,
- 0, 0, 0, 0, 215, 3, 0, 208, 0, 238, 127, 164, 38, 27, 0, 189, 126, 59, 62, 0, 203, 127, 0, 128, 189,
- 126, 292, 62, 0, 189, 126, 292, 62, 0, 189, 126, 70, 123, 59, 0, 238, 127, 164, 262, 59, 0, 238, 127,
- 164, 262, 241, 59, 0, 289, 290, 127, 164, 123, 322, 55, 0, 289, 290, 127, 164, 322, 55, 0, 189, 126,
- 288, 55, 0, 197, 189, 126, 288, 235, 0, 189, 126, 288, 235, 0, 166, 126, 0, 93, 135, 0, 286, 127, 149,
- 0, 286, 127, 171, 0, 159, 84, 0, 317, 161, 319, 320, 3, 81, 0, 125, 178, 0, 319, 320, 3, 81, 0, 127, 0,
- 125, 178, 0, 159, 3, 75, 204, 80, 0, 125, 127, 0, 204, 80, 0, 108, 2, 130, 125, 127, 0, 239, 3, 75, 0,
- 215, 174, 0, 33, 168, 0, 174, 0, 182, 33, 168, 0, 239, 3, 85, 0, 204, 152, 239, 3, 83, 0, 62, 178, 0,
- 239, 3, 83, 0, 125, 178, 62, 178, 0, 318, 127, 164, 0, 159, 0, 226, 77, 0, 30, 178, 0, 159, 102, 185, 0,
- 30, 176, 0, 148, 65, 167, 3, 0, 167, 3, 0, 20, 160, 125, 0, 159, 102, 162, 0, 30, 168, 0, 198, 3, 0,
- 125, 148, 0, 227, 3, 0, 226, 61, 283, 0, 159, 61, 0, 198, 3, 314, 67, 126, 0, 125, 0, 0, 0, 0, 314, 67,
- 126, 0, 2, 144, 125, 0, 0, 0, 0, 198, 3, 46, 0, 146, 0, 125, 57, 166, 126, 0, 31, 146, 0, 93, 135, 31,
- 146, 0, 228, 189, 126, 0, 145, 31, 146, 0, 198, 3, 50, 0, 159, 3, 50, 0, 159, 3, 65, 198, 54, 42, 0,
- 198, 54, 42, 0, 20, 2, 130, 125, 0, 159, 3, 65, 198, 54, 45, 0, 198, 54, 45, 0, 159, 3, 65, 198, 54, 47,
- 0, 198, 54, 47, 0, 159, 3, 65, 198, 54, 43, 0, 198, 54, 43, 0, 227, 3, 125, 197, 166, 126, 10, 0, 125,
- 197, 166, 126, 10, 0, 135, 2, 0, 125, 0, 227, 3, 124, 276, 166, 126, 10, 0, 276, 166, 126, 10, 0, 134,
- 2, 0, 125, 0, 227, 3, 135, 0, 227, 3, 140, 0, 159, 61, 140, 0, 278, 0, 31, 0, 31, 138, 0, 165, 0, 133,
- 0, 159, 3, 0 };
- }
-
- public final static char scopeRhs[] = ScopeRhs.scopeRhs;
-
- @Override
- public final int scopeRhs(int index) {
- return scopeRhs[index];
- }
-
- public interface ScopeState {
- public final static char scopeState[] = { 0, 2721, 1967, 0, 2438, 1974, 1194, 0, 1326, 640, 0, 4993, 6320, 6287,
- 4751, 0, 2510, 1533, 1572, 802, 0, 3481, 4759, 0, 5371, 5309, 5211, 5109, 5047, 4985, 4923, 4861, 4744,
- 4579, 4517, 4894, 0, 1047, 871, 0, 1195, 0, 6230, 5171, 0, 3477, 3883, 3385, 0, 2061, 927, 0, 5371,
- 5309, 2123, 1991, 5211, 5109, 5047, 4985, 4923, 4861, 1859, 4744, 4579, 4517, 1665, 1595, 0, 1443, 1375,
- 0, 3344, 3446, 3636, 3545, 3918, 3851, 3725, 3297, 2834, 934, 2204, 2138, 2072, 2006, 1940, 1874, 1808,
- 1742, 1676, 1610, 1544, 841, 770, 677, 0, 6262, 6246, 0, 626, 0, 2944, 2862, 1848, 1189, 4805, 4316,
- 4668, 4299, 3393, 4530, 3945, 3082, 0, 3327, 760, 4805, 5056, 4521, 4316, 3376, 3273, 3990, 1039, 3163,
- 4469, 3831, 1473, 3752, 0, 6064, 6028, 5905, 5913, 5404, 5825, 5379, 5286, 5400, 5300, 5180, 5230, 4612,
- 5076, 3771, 5014, 4956, 4952, 673, 765, 4869, 4752, 4550, 4027, 0, 4805, 4003, 4469, 3831, 652, 4668,
- 5198, 1904, 744, 4299, 3990, 3945, 1574, 1772, 3752, 0, 4003, 652, 0, 2359, 2312, 2547, 6064, 6028,
- 1390, 2500, 2453, 2406, 2260, 1259, 5905, 5913, 5217, 5404, 2192, 5825, 5379, 5286, 5400, 973, 5300,
- 1840, 5180, 3089, 1437, 5230, 4612, 5076, 3771, 1341, 5014, 4956, 964, 3187, 4952, 2782, 673, 765, 4869,
- 4752, 4550, 811, 4027, 5992, 4351, 2864, 2234, 1199, 907, 2037, 4668, 5198, 1904, 744, 4805, 2168, 2102,
- 4299, 1047, 871, 3990, 3945, 4003, 1574, 4469, 3831, 1772, 3752, 652, 5829, 2834, 5784, 4324, 5761,
- 3407, 3600, 3508, 3776, 3690, 4272, 4245, 4218, 4191, 3958, 1264, 934, 3344, 2204, 2138, 2072, 2006,
- 1940, 1874, 1808, 1742, 1676, 1610, 1544, 3446, 3636, 3545, 3918, 3851, 3725, 4490, 4423, 4116, 4089,
- 1115, 5484, 5460, 4833, 4708, 4681, 5738, 5715, 5692, 3297, 5669, 5646, 5623, 5600, 5577, 5554, 5531,
- 5508, 841, 770, 677, 2947, 3234, 2900, 3192, 3135, 1395, 1348, 2787, 3093, 3036, 2994, 1299, 2740, 2693,
- 2646, 2599, 2552, 2505, 2458, 2411, 2364, 2317, 2270, 598, 1217, 1488, 1445, 1068, 1000, 1150, 0, 6230,
- 5171, 598, 5992, 4351, 0, 6262, 6246, 6180, 5961, 5885, 5873, 6168, 6109, 6086, 6027, 5807, 5371, 5309,
- 5211, 5109, 5047, 4985, 4923, 4861, 4744, 4579, 4517, 0, 6262, 6246, 6180, 5961, 5885, 5873, 6168, 6109,
- 6086, 6027, 5807, 0 };
- }
-
- public final static char scopeState[] = ScopeState.scopeState;
-
- @Override
- public final int scopeState(int index) {
- return scopeState[index];
- }
-
- public interface InSymb {
- public final static char inSymb[] = { 0, 0, 313, 62, 64, 127, 171, 214, 57, 27, 59, 240, 59, 292, 3, 255, 256,
- 236, 257, 235, 258, 55, 287, 259, 124, 10, 126, 294, 127, 3, 4, 132, 131, 8, 6, 124, 126, 195, 57, 54,
- 38, 262, 241, 123, 126, 126, 38, 164, 327, 288, 322, 288, 54, 126, 189, 166, 165, 74, 127, 286, 200,
- 195, 127, 265, 293, 220, 126, 181, 215, 54, 54, 174, 61, 3, 66, 67, 124, 123, 189, 166, 3, 54, 65, 127,
- 164, 164, 262, 70, 189, 189, 152, 127, 166, 245, 125, 124, 126, 123, 164, 126, 127, 166, 57, 4, 127,
- 295, 71, 61, 220, 126, 3, 70, 68, 166, 7, 5, 127, 127, 127, 61, 61, 197, 127, 127, 127, 127, 164, 126,
- 241, 128, 326, 126, 169, 237, 59, 57, 62, 171, 329, 125, 124, 246, 246, 189, 164, 127, 189, 271, 127,
- 251, 50, 42, 45, 47, 43, 10, 135, 126, 46, 40, 6, 35, 34, 5, 7, 37, 36, 140, 145, 147, 146, 3, 167, 148,
- 175, 172, 183, 182, 184, 60, 185, 274, 197, 278, 197, 295, 164, 307, 126, 308, 226, 3, 148, 155, 153,
- 157, 156, 160, 158, 162, 166, 150, 127, 164, 270, 162, 181, 181, 271, 271, 220, 242, 243, 149, 244, 309,
- 57, 10, 41, 238, 238, 127, 189, 166, 127, 246, 246, 127, 127, 197, 127, 290, 123, 291, 255, 256, 257,
- 258, 336, 259, 10, 127, 3, 223, 222, 3, 54, 54, 54, 54, 126, 3, 66, 67, 166, 3, 125, 117, 119, 3, 61,
- 91, 98, 35, 34, 100, 99, 5, 198, 159, 174, 127, 167, 90, 89, 54, 86, 87, 7, 93, 92, 95, 94, 96, 112,
- 111, 110, 109, 108, 107, 106, 105, 104, 103, 70, 102, 101, 68, 4, 296, 127, 68, 189, 3, 93, 92, 90, 89,
- 65, 54, 94, 7, 96, 95, 102, 101, 285, 127, 164, 112, 111, 110, 109, 108, 107, 106, 105, 104, 103, 70, 5,
- 127, 152, 70, 231, 215, 3, 127, 68, 68, 65, 54, 245, 245, 238, 241, 197, 328, 71, 303, 215, 124, 127,
- 127, 71, 290, 289, 70, 68, 126, 220, 231, 127, 3, 198, 159, 198, 198, 198, 198, 166, 227, 61, 314, 3,
- 198, 57, 126, 57, 227, 159, 146, 146, 145, 145, 145, 152, 135, 125, 124, 10, 126, 65, 148, 148, 148,
- 147, 147, 172, 167, 167, 182, 175, 183, 159, 184, 127, 318, 79, 77, 1, 159, 9, 85, 83, 81, 80, 75, 82,
- 84, 78, 76, 59, 74, 227, 153, 153, 148, 148, 148, 148, 156, 155, 158, 157, 159, 160, 68, 127, 181, 173,
- 127, 70, 70, 127, 220, 127, 70, 70, 128, 68, 71, 70, 331, 237, 22, 126, 289, 166, 242, 127, 65, 65, 65,
- 65, 197, 276, 216, 3, 315, 174, 150, 126, 189, 166, 126, 166, 148, 71, 297, 113, 9, 71, 226, 71, 3, 3,
- 3, 204, 3, 123, 159, 123, 188, 71, 325, 127, 229, 309, 68, 126, 22, 332, 189, 197, 152, 242, 3, 3, 3, 3,
- 125, 124, 198, 127, 127, 228, 6, 57, 166, 57, 3, 71, 239, 174, 239, 320, 149, 75, 239, 127, 203, 68,
- 127, 65, 189, 126, 126, 127, 152, 159, 159, 159, 159, 3, 3, 152, 280, 283, 61, 190, 4, 123, 125, 197,
- 97, 337, 174, 152, 215, 152, 319, 127, 3, 152, 297, 203, 9, 60, 41, 189, 189, 229, 127, 227, 227, 127,
- 3, 61, 159, 4, 125, 152, 152, 127, 70, 204, 161, 286, 159, 3, 245, 127, 229, 280, 227, 226, 121, 317,
- 152, 338, 70, 127, 152, 68 };
- }
-
- public final static char inSymb[] = InSymb.inSymb;
-
- @Override
- public final int inSymb(int index) {
- return inSymb[index];
- }
-
- public interface Name {
- public final static String name[] = { "", "[", "(", ".", ".*", "->", "->*", "++", "--", "&", "*", "+", "-", "~",
- "!", "/", "%", ">>", "<<", "<", ">", "<=", ">=", "==", "!=", "^", "|", "&&", "||", "?", ":", "::",
- "...", "=", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", ",", "$empty", "asm", "auto",
- "bool", "break", "case", "catch", "char", "class", "const", "const_cast", "continue", "default",
- "delete", "do", "double", "dynamic_cast", "else", "enum", "explicit", "export", "extern", "false",
- "float", "for", "friend", "goto", "if", "inline", "int", "long", "mutable", "namespace", "new",
- "operator", "private", "protected", "public", "register", "reinterpret_cast", "return", "short",
- "signed", "sizeof", "static", "static_cast", "struct", "switch", "template", "this", "throw", "try",
- "true", "typedef", "typeid", "typename", "union", "unsigned", "using", "virtual", "void", "volatile",
- "wchar_t", "while", "integer", "floating", "charconst", "stringlit", "identifier", "Completion",
- "EndOfCompletion", "Invalid", "RightBracket", "RightParen", "RightBrace", "SemiColon", "LeftBrace",
- "ERROR_TOKEN", "EOF_TOKEN", "]", ")", "}", ";", "{", "identifier_token", "expression", "id_expression",
- "qualified_or_unqualified_name", "unqualified_id_name", "identifier_name", "template_id_name",
- "nested_name_specifier", "class_or_namespace_name", "nested_name_specifier_with_tem" + "plate",
- "class_or_namespace_name_with_t" + "emplate", "class_name", "postfix_expression",
- "simple_type_specifier", "pseudo_destructor_name", "type_id", "type_name", "destructor_type_name",
- "unary_expression", "cast_expression", "new_type_id", "expression_list", "type_specifier_seq",
- "new_declarator", "new_pointer_operators", "ptr_operator", "new_array_expressions",
- "constant_expression", "pm_expression", "multiplicative_expression", "additive_expression",
- "shift_expression", "relational_expression", "equality_expression", "and_expression",
- "exclusive_or_expression", "inclusive_or_expression", "logical_and_expression", "logical_or_expression",
- "assignment_expression", "relational_expression_inTempla" + "te", "equality_expression_inTemplate",
- "and_expression_inTemplate", "exclusive_or_expression_inTemp" + "late",
- "inclusive_or_expression_inTemp" + "late", "logical_and_expression_inTempl" + "ate",
- "logical_or_expression_inTempla" + "te", "assignment_expression_inTempla" + "te",
- "expression_list_actual", "statement", "compound_statement", "statement_seq", "condition", "declarator",
- "for_init_statement", "function_definition", "declaration", "declaration_seq", "declaration_specifiers",
- "simple_declaration_specifiers", "class_declaration_specifiers",
- "elaborated_declaration_specifi" + "ers", "enum_declaration_specifiers",
- "type_name_declaration_specifie" + "rs", "no_type_declaration_specifier", "cv_qualifier",
- "no_type_declaration_specifiers", "class_specifier", "elaborated_type_specifier", "enum_specifier",
- "type_name_specifier", "class_keyword", "enumerator_list", "enumerator_definition", "namespace_name",
- "init_declarator_list", "init_declarator_complete", "complete_declarator", "initializer",
- "direct_declarator", "ptr_operator_seq", "function_declarator", "basic_direct_declarator",
- "array_direct_declarator", "array_modifier", "abstract_declarator", "direct_abstract_declarator",
- "basic_direct_abstract_declarat" + "or", "array_direct_abstract_declarat" + "or",
- "parameter_declaration_list", "parameter_declaration", "parameter_init_declarator",
- "parameter_initializer", "function_body", "handler_seq", "initializer_clause", "initializer_seq",
- "class_head", "access_specifier_keyword", "member_declaration", "member_declarator_list",
- "member_declaration_list", "member_declarator_complete", "constant_initializer", "bit_field_declarator",
- "base_specifier_list", "base_specifier", "conversion_function_id", "conversion_type_id",
- "conversion_declarator", "mem_initializer_list", "mem_initializer", "mem_initializer_name",
- "operator_id_name", "overloadable_operator", "template_parameter_list", "template_parameter",
- "template_argument_list", "template_argument", "type_name_specifier_inTemplate",
- "type_name_declaration_specifie" + "rs_inTemplate", "type_specifier_seq_inTemplate", "handler",
- "exception_declaration", "type_id_list" };
- }
-
- public final static String name[] = Name.name;
-
- @Override
- public final String name(int index) {
- return name[index];
- }
-
- public final static int ERROR_SYMBOL = 63, SCOPE_UBOUND = 121, SCOPE_SIZE = 122, MAX_NAME_LENGTH = 43;
-
- @Override
- public final int getErrorSymbol() {
- return ERROR_SYMBOL;
- }
-
- @Override
- public final int getScopeUbound() {
- return SCOPE_UBOUND;
- }
-
- @Override
- public final int getScopeSize() {
- return SCOPE_SIZE;
- }
-
- @Override
- public final int getMaxNameLength() {
- return MAX_NAME_LENGTH;
- }
-
- public final static int NUM_STATES = 604, NT_OFFSET = 122, LA_STATE_OFFSET = 7511, MAX_LA = 2147483647,
- NUM_RULES = 597, NUM_NONTERMINALS = 224, NUM_SYMBOLS = 346, SEGMENT_SIZE = 8192, START_STATE = 5807,
- IDENTIFIER_SYMBOL = 0, EOFT_SYMBOL = 120, EOLT_SYMBOL = 120, ACCEPT_ACTION = 6474, ERROR_ACTION = 6914;
-
- public final static boolean BACKTRACK = true;
-
- @Override
- public final int getNumStates() {
- return NUM_STATES;
- }
-
- @Override
- public final int getNtOffset() {
- return NT_OFFSET;
- }
-
- @Override
- public final int getLaStateOffset() {
- return LA_STATE_OFFSET;
- }
-
- @Override
- public final int getMaxLa() {
- return MAX_LA;
- }
-
- @Override
- public final int getNumRules() {
- return NUM_RULES;
- }
-
- @Override
- public final int getNumNonterminals() {
- return NUM_NONTERMINALS;
- }
-
- @Override
- public final int getNumSymbols() {
- return NUM_SYMBOLS;
- }
-
- @Override
- public final int getSegmentSize() {
- return SEGMENT_SIZE;
- }
-
- @Override
- public final int getStartState() {
- return START_STATE;
- }
-
- @Override
- public final int getStartSymbol() {
- return lhs[0];
- }
-
- public final int getIdentifierSymbol() {
- return IDENTIFIER_SYMBOL;
- }
-
- @Override
- public final int getEoftSymbol() {
- return EOFT_SYMBOL;
- }
-
- @Override
- public final int getEoltSymbol() {
- return EOLT_SYMBOL;
- }
-
- @Override
- public final int getAcceptAction() {
- return ACCEPT_ACTION;
- }
-
- @Override
- public final int getErrorAction() {
- return ERROR_ACTION;
- }
-
- @Override
- public final boolean isValidForParser() {
- return isValidForParser;
- }
-
- @Override
- public final boolean getBacktrack() {
- return BACKTRACK;
- }
-
- @Override
- public final int originalState(int state) {
- return -baseCheck[state];
- }
-
- @Override
- public final int asi(int state) {
- return asb[originalState(state)];
- }
-
- @Override
- public final int nasi(int state) {
- return nasb[originalState(state)];
- }
-
- @Override
- public final int inSymbol(int state) {
- return inSymb[originalState(state)];
- }
-
- @Override
- public final int ntAction(int state, int sym) {
- return baseAction[state + sym];
- }
-
- @Override
- public final int tAction(int state, int sym) {
- int i = baseAction[state], k = i + sym;
- return termAction[termCheck[k] == sym ? k : i];
- }
-
- @Override
- public final int lookAhead(int la_state, int sym) {
- int k = la_state + sym;
- return termAction[termCheck[k] == sym ? k : la_state];
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPParsersym.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPParsersym.java
deleted file mode 100644
index 80d6f550fec..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPParsersym.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2010 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.dom.lrparser.cpp;
-
-public interface CPPParsersym {
- public final static int TK_asm = 64, TK_auto = 25, TK_bool = 11, TK_break = 76, TK_case = 77, TK_catch = 113,
- TK_char = 12, TK_class = 41, TK_const = 23, TK_const_cast = 42, TK_continue = 78, TK_default = 79,
- TK_delete = 66, TK_do = 80, TK_double = 13, TK_dynamic_cast = 43, TK_else = 121, TK_enum = 55,
- TK_explicit = 26, TK_export = 88, TK_extern = 27, TK_false = 44, TK_float = 14, TK_for = 81, TK_friend = 28,
- TK_goto = 82, TK_if = 83, TK_inline = 29, TK_int = 15, TK_long = 16, TK_mutable = 30, TK_namespace = 59,
- TK_new = 67, TK_operator = 8, TK_private = 114, TK_protected = 115, TK_public = 116, TK_register = 31,
- TK_reinterpret_cast = 45, TK_return = 84, TK_short = 17, TK_signed = 18, TK_sizeof = 46, TK_static = 32,
- TK_static_cast = 47, TK_struct = 56, TK_switch = 85, TK_template = 57, TK_this = 48, TK_throw = 60,
- TK_try = 74, TK_true = 49, TK_typedef = 33, TK_typeid = 50, TK_typename = 10, TK_union = 58,
- TK_unsigned = 19, TK_using = 62, TK_virtual = 22, TK_void = 20, TK_volatile = 24, TK_wchar_t = 21,
- TK_while = 75, TK_integer = 51, TK_floating = 52, TK_charconst = 53, TK_stringlit = 38, TK_identifier = 1,
- TK_Completion = 2, TK_EndOfCompletion = 9, TK_Invalid = 122, TK_LeftBracket = 61, TK_LeftParen = 3,
- TK_Dot = 119, TK_DotStar = 98, TK_Arrow = 117, TK_ArrowStar = 91, TK_PlusPlus = 36, TK_MinusMinus = 37,
- TK_And = 7, TK_Star = 5, TK_Plus = 34, TK_Minus = 35, TK_Tilde = 6, TK_Bang = 40, TK_Slash = 99,
- TK_Percent = 100, TK_RightShift = 86, TK_LeftShift = 87, TK_LT = 54, TK_GT = 65, TK_LE = 89, TK_GE = 90,
- TK_EQ = 92, TK_NE = 93, TK_Caret = 94, TK_Or = 95, TK_AndAnd = 96, TK_OrOr = 101, TK_Question = 102,
- TK_Colon = 71, TK_ColonColon = 4, TK_DotDotDot = 97, TK_Assign = 70, TK_StarAssign = 103,
- TK_SlashAssign = 104, TK_PercentAssign = 105, TK_PlusAssign = 106, TK_MinusAssign = 107,
- TK_RightShiftAssign = 108, TK_LeftShiftAssign = 109, TK_AndAssign = 110, TK_CaretAssign = 111,
- TK_OrAssign = 112, TK_Comma = 68, TK_RightBracket = 118, TK_RightParen = 72, TK_RightBrace = 73,
- TK_SemiColon = 39, TK_LeftBrace = 69, TK_ERROR_TOKEN = 63, TK_EOF_TOKEN = 120;
-
- public final static String orderedTerminalSymbols[] = { "", "identifier", "Completion", "LeftParen", "ColonColon",
- "Star", "Tilde", "And", "operator", "EndOfCompletion", "typename", "bool", "char", "double", "float", "int",
- "long", "short", "signed", "unsigned", "void", "wchar_t", "virtual", "const", "volatile", "auto",
- "explicit", "extern", "friend", "inline", "mutable", "register", "static", "typedef", "Plus", "Minus",
- "PlusPlus", "MinusMinus", "stringlit", "SemiColon", "Bang", "class", "const_cast", "dynamic_cast", "false",
- "reinterpret_cast", "sizeof", "static_cast", "this", "true", "typeid", "integer", "floating", "charconst",
- "LT", "enum", "struct", "template", "union", "namespace", "throw", "LeftBracket", "using", "ERROR_TOKEN",
- "asm", "GT", "delete", "new", "Comma", "LeftBrace", "Assign", "Colon", "RightParen", "RightBrace", "try",
- "while", "break", "case", "continue", "default", "do", "for", "goto", "if", "return", "switch",
- "RightShift", "LeftShift", "export", "LE", "GE", "ArrowStar", "EQ", "NE", "Caret", "Or", "AndAnd",
- "DotDotDot", "DotStar", "Slash", "Percent", "OrOr", "Question", "StarAssign", "SlashAssign",
- "PercentAssign", "PlusAssign", "MinusAssign", "RightShiftAssign", "LeftShiftAssign", "AndAssign",
- "CaretAssign", "OrAssign", "catch", "private", "protected", "public", "Arrow", "RightBracket", "Dot",
- "EOF_TOKEN", "else", "Invalid" };
-
- public final static boolean isValidForParser = true;
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPRules.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPRules.java
deleted file mode 100644
index 0d61e686ebd..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPRules.java
+++ /dev/null
@@ -1,647 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2013 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.internal.core.dom.lrparser.cpp;
-
-import java.util.HashMap;
-import java.util.Map;
-
-public class CPPRules {
- static Map fRules = new HashMap();
-
- static {
- fRules.put(Integer.valueOf(3), "] ::= RightBracket");
- fRules.put(Integer.valueOf(4), "] ::= EndOfCompletion");
- fRules.put(Integer.valueOf(5), ") ::= RightParen");
- fRules.put(Integer.valueOf(6), ") ::= EndOfCompletion");
- fRules.put(Integer.valueOf(7), "} ::= RightBrace");
- fRules.put(Integer.valueOf(8), "} ::= EndOfCompletion");
- fRules.put(Integer.valueOf(9), "; ::= SemiColon");
- fRules.put(Integer.valueOf(10), "; ::= EndOfCompletion");
- fRules.put(Integer.valueOf(41), "dcolon_opt ::= ColonColon");
- fRules.put(Integer.valueOf(42), "dcolon_opt ::=");
- fRules.put(Integer.valueOf(228), "declaration_specifiers_opt ::=");
- fRules.put(Integer.valueOf(229), "declaration_specifiers_opt ::= declaration_specifiers");
- fRules.put(Integer.valueOf(383), "class_name ::= identifier_name");
- fRules.put(Integer.valueOf(384), "class_name ::= template_id_name");
- fRules.put(Integer.valueOf(493), "template_parameter ::= type_parameter");
- fRules.put(Integer.valueOf(1), "<openscope-ast> ::=");
- fRules.put(Integer.valueOf(17), "identifier_token ::= identifier");
- fRules.put(Integer.valueOf(18), "identifier_token ::= Completion");
- fRules.put(Integer.valueOf(38), "identifier_name ::= identifier_token");
- fRules.put(Integer.valueOf(445), "operator_id_name ::= operator overloadable_operator");
- fRules.put(Integer.valueOf(443), "operator_function_id_name ::= operator_id_name");
- fRules.put(Integer.valueOf(444),
- "operator_function_id_name ::= operator_id_name LT <openscope-ast> template_argument_list_opt GT");
- fRules.put(Integer.valueOf(431), "conversion_function_id_name ::= operator conversion_type_id");
- fRules.put(Integer.valueOf(502), "template_identifier ::= identifier_name");
- fRules.put(Integer.valueOf(501),
- "template_id_name ::= template_identifier LT <openscope-ast> template_argument_list_opt GT");
- fRules.put(Integer.valueOf(33), "unqualified_id_name ::= identifier_name");
- fRules.put(Integer.valueOf(34), "unqualified_id_name ::= operator_function_id_name");
- fRules.put(Integer.valueOf(35), "unqualified_id_name ::= conversion_function_id_name");
- fRules.put(Integer.valueOf(36), "unqualified_id_name ::= template_id_name");
- fRules.put(Integer.valueOf(37), "unqualified_id_name ::= Tilde class_name");
- fRules.put(Integer.valueOf(54), "class_or_namespace_name ::= class_name");
- fRules.put(Integer.valueOf(47),
- "nested_name_specifier ::= class_or_namespace_name ColonColon nested_name_specifier_with_template");
- fRules.put(Integer.valueOf(48), "nested_name_specifier ::= class_or_namespace_name ColonColon");
- fRules.put(Integer.valueOf(43),
- "qualified_id_name ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name");
- fRules.put(Integer.valueOf(44), "qualified_id_name ::= ColonColon identifier_name");
- fRules.put(Integer.valueOf(45), "qualified_id_name ::= ColonColon operator_function_id_name");
- fRules.put(Integer.valueOf(46), "qualified_id_name ::= ColonColon template_id_name");
- fRules.put(Integer.valueOf(31), "qualified_or_unqualified_name ::= unqualified_id_name");
- fRules.put(Integer.valueOf(32), "qualified_or_unqualified_name ::= qualified_id_name");
- fRules.put(Integer.valueOf(52), "nested_name_specifier_opt ::= nested_name_specifier");
- fRules.put(Integer.valueOf(53), "nested_name_specifier_opt ::=");
- fRules.put(Integer.valueOf(274), "type_name ::= class_name");
- fRules.put(Integer.valueOf(338), "declarator_id_name ::= qualified_or_unqualified_name");
- fRules.put(Integer.valueOf(339), "declarator_id_name ::= dcolon_opt nested_name_specifier_opt type_name");
- fRules.put(Integer.valueOf(321), "basic_direct_declarator ::= declarator_id_name");
- fRules.put(Integer.valueOf(322), "basic_direct_declarator ::= LeftParen declarator )");
- fRules.put(Integer.valueOf(323),
- "function_direct_declarator ::= basic_direct_declarator LeftParen <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt");
- fRules.put(Integer.valueOf(324), "array_direct_declarator ::= array_direct_declarator array_modifier");
- fRules.put(Integer.valueOf(325), "array_direct_declarator ::= basic_direct_declarator array_modifier");
- fRules.put(Integer.valueOf(318), "direct_declarator ::= basic_direct_declarator");
- fRules.put(Integer.valueOf(319), "direct_declarator ::= function_direct_declarator");
- fRules.put(Integer.valueOf(320), "direct_declarator ::= array_direct_declarator");
- fRules.put(Integer.valueOf(328), "ptr_operator ::= Star <openscope-ast> cv_qualifier_seq_opt");
- fRules.put(Integer.valueOf(329), "ptr_operator ::= And");
- fRules.put(Integer.valueOf(330),
- "ptr_operator ::= dcolon_opt nested_name_specifier Star <openscope-ast> cv_qualifier_seq_opt");
- fRules.put(Integer.valueOf(331), "ptr_operator_seq ::= ptr_operator");
- fRules.put(Integer.valueOf(332), "ptr_operator_seq ::= ptr_operator_seq ptr_operator");
- fRules.put(Integer.valueOf(314), "declarator ::= direct_declarator");
- fRules.put(Integer.valueOf(315), "declarator ::= <openscope-ast> ptr_operator_seq direct_declarator");
- fRules.put(Integer.valueOf(312), "init_declarator ::= declarator");
- fRules.put(Integer.valueOf(313), "init_declarator ::= declarator initializer");
- fRules.put(Integer.valueOf(311), "init_declarator_complete ::= init_declarator");
- fRules.put(Integer.valueOf(307), "init_declarator_list ::= init_declarator_complete");
- fRules.put(Integer.valueOf(308),
- "init_declarator_list ::= init_declarator_list Comma init_declarator_complete");
- fRules.put(Integer.valueOf(309), "init_declarator_list_opt ::= init_declarator_list");
- fRules.put(Integer.valueOf(310), "init_declarator_list_opt ::=");
- fRules.put(Integer.valueOf(221),
- "simple_declaration ::= declaration_specifiers_opt <openscope-ast> init_declarator_list_opt ;");
- fRules.put(Integer.valueOf(304), "asm_definition ::= asm LeftParen stringlit ) ;");
- fRules.put(Integer.valueOf(299),
- "namespace_alias_definition ::= namespace identifier_token Assign dcolon_opt nested_name_specifier_opt namespace_name ;");
- fRules.put(Integer.valueOf(300),
- "using_declaration ::= using typename_opt dcolon_opt nested_name_specifier_opt unqualified_id_name ;");
- fRules.put(Integer.valueOf(303),
- "using_directive ::= using namespace dcolon_opt nested_name_specifier_opt namespace_name ;");
- fRules.put(Integer.valueOf(212), "block_declaration ::= simple_declaration");
- fRules.put(Integer.valueOf(213), "block_declaration ::= asm_definition");
- fRules.put(Integer.valueOf(214), "block_declaration ::= namespace_alias_definition");
- fRules.put(Integer.valueOf(215), "block_declaration ::= using_declaration");
- fRules.put(Integer.valueOf(216), "block_declaration ::= using_directive");
- fRules.put(Integer.valueOf(316), "function_declarator ::= function_direct_declarator");
- fRules.put(Integer.valueOf(317), "function_declarator ::= <openscope-ast> ptr_operator_seq direct_declarator");
- fRules.put(Integer.valueOf(372),
- "function_definition ::= declaration_specifiers_opt function_declarator <openscope-ast> ctor_initializer_list_opt function_body");
- fRules.put(Integer.valueOf(373),
- "function_definition ::= declaration_specifiers_opt function_declarator try <openscope-ast> ctor_initializer_list_opt function_body <openscope-ast> handler_seq");
- fRules.put(Integer.valueOf(489), "export_opt ::= export");
- fRules.put(Integer.valueOf(490), "export_opt ::=");
- fRules.put(Integer.valueOf(488),
- "template_declaration ::= export_opt template LT <openscope-ast> template_parameter_list GT declaration");
- fRules.put(Integer.valueOf(510), "explicit_instantiation ::= template declaration");
- fRules.put(Integer.valueOf(511), "explicit_specialization ::= template LT GT declaration");
- fRules.put(Integer.valueOf(305),
- "linkage_specification ::= extern stringlit LeftBrace <openscope-ast> declaration_seq_opt }");
- fRules.put(Integer.valueOf(306), "linkage_specification ::= extern stringlit <openscope-ast> declaration");
- fRules.put(Integer.valueOf(296),
- "original_namespace_definition ::= namespace identifier_name LeftBrace <openscope-ast> declaration_seq_opt }");
- fRules.put(Integer.valueOf(297),
- "extension_namespace_definition ::= namespace original_namespace_name LeftBrace <openscope-ast> declaration_seq_opt }");
- fRules.put(Integer.valueOf(294), "named_namespace_definition ::= original_namespace_definition");
- fRules.put(Integer.valueOf(295), "named_namespace_definition ::= extension_namespace_definition");
- fRules.put(Integer.valueOf(298),
- "unnamed_namespace_definition ::= namespace LeftBrace <openscope-ast> declaration_seq_opt }");
- fRules.put(Integer.valueOf(292), "namespace_definition ::= named_namespace_definition");
- fRules.put(Integer.valueOf(293), "namespace_definition ::= unnamed_namespace_definition");
- fRules.put(Integer.valueOf(205), "declaration ::= block_declaration");
- fRules.put(Integer.valueOf(206), "declaration ::= function_definition");
- fRules.put(Integer.valueOf(207), "declaration ::= template_declaration");
- fRules.put(Integer.valueOf(208), "declaration ::= explicit_instantiation");
- fRules.put(Integer.valueOf(209), "declaration ::= explicit_specialization");
- fRules.put(Integer.valueOf(210), "declaration ::= linkage_specification");
- fRules.put(Integer.valueOf(211), "declaration ::= namespace_definition");
- fRules.put(Integer.valueOf(15), "external_declaration ::= declaration");
- fRules.put(Integer.valueOf(16), "external_declaration ::= ERROR_TOKEN");
- fRules.put(Integer.valueOf(13), "external_declaration_list ::= external_declaration");
- fRules.put(Integer.valueOf(14), "external_declaration_list ::= external_declaration_list external_declaration");
- fRules.put(Integer.valueOf(11), "translation_unit ::= external_declaration_list");
- fRules.put(Integer.valueOf(12), "translation_unit ::=");
- fRules.put(Integer.valueOf(0), "$accept ::= translation_unit");
- fRules.put(Integer.valueOf(2), "<empty> ::=");
- fRules.put(Integer.valueOf(19), "literal ::= integer");
- fRules.put(Integer.valueOf(20), "literal ::= zero");
- fRules.put(Integer.valueOf(21), "literal ::= floating");
- fRules.put(Integer.valueOf(22), "literal ::= charconst");
- fRules.put(Integer.valueOf(23), "literal ::= stringlit");
- fRules.put(Integer.valueOf(24), "literal ::= true");
- fRules.put(Integer.valueOf(25), "literal ::= false");
- fRules.put(Integer.valueOf(26), "literal ::= this");
- fRules.put(Integer.valueOf(30), "id_expression ::= qualified_or_unqualified_name");
- fRules.put(Integer.valueOf(27), "primary_expression ::= literal");
- fRules.put(Integer.valueOf(28), "primary_expression ::= LeftParen expression )");
- fRules.put(Integer.valueOf(29), "primary_expression ::= id_expression");
- fRules.put(Integer.valueOf(263), "simple_type_specifier_token ::= char");
- fRules.put(Integer.valueOf(264), "simple_type_specifier_token ::= wchar_t");
- fRules.put(Integer.valueOf(265), "simple_type_specifier_token ::= bool");
- fRules.put(Integer.valueOf(266), "simple_type_specifier_token ::= short");
- fRules.put(Integer.valueOf(267), "simple_type_specifier_token ::= int");
- fRules.put(Integer.valueOf(268), "simple_type_specifier_token ::= long");
- fRules.put(Integer.valueOf(269), "simple_type_specifier_token ::= signed");
- fRules.put(Integer.valueOf(270), "simple_type_specifier_token ::= unsigned");
- fRules.put(Integer.valueOf(271), "simple_type_specifier_token ::= float");
- fRules.put(Integer.valueOf(272), "simple_type_specifier_token ::= double");
- fRules.put(Integer.valueOf(273), "simple_type_specifier_token ::= void");
- fRules.put(Integer.valueOf(262), "simple_type_specifier ::= simple_type_specifier_token");
- fRules.put(Integer.valueOf(55), "postfix_expression ::= primary_expression");
- fRules.put(Integer.valueOf(56), "postfix_expression ::= postfix_expression LeftBracket expression ]");
- fRules.put(Integer.valueOf(57), "postfix_expression ::= postfix_expression LeftParen expression_list_opt )");
- fRules.put(Integer.valueOf(58), "postfix_expression ::= simple_type_specifier LeftParen expression_list_opt )");
- fRules.put(Integer.valueOf(59),
- "postfix_expression ::= typename dcolon_opt nested_name_specifier <empty> identifier_name LeftParen expression_list_opt )");
- fRules.put(Integer.valueOf(60),
- "postfix_expression ::= typename dcolon_opt nested_name_specifier template_opt template_id_name LeftParen expression_list_opt )");
- fRules.put(Integer.valueOf(61), "postfix_expression ::= postfix_expression Dot qualified_or_unqualified_name");
- fRules.put(Integer.valueOf(62),
- "postfix_expression ::= postfix_expression Arrow qualified_or_unqualified_name");
- fRules.put(Integer.valueOf(63),
- "postfix_expression ::= postfix_expression Dot template qualified_or_unqualified_name");
- fRules.put(Integer.valueOf(64),
- "postfix_expression ::= postfix_expression Arrow template qualified_or_unqualified_name");
- fRules.put(Integer.valueOf(65), "postfix_expression ::= postfix_expression Dot pseudo_destructor_name");
- fRules.put(Integer.valueOf(66), "postfix_expression ::= postfix_expression Arrow pseudo_destructor_name");
- fRules.put(Integer.valueOf(67), "postfix_expression ::= postfix_expression PlusPlus");
- fRules.put(Integer.valueOf(68), "postfix_expression ::= postfix_expression MinusMinus");
- fRules.put(Integer.valueOf(69), "postfix_expression ::= dynamic_cast LT type_id GT LeftParen expression )");
- fRules.put(Integer.valueOf(70), "postfix_expression ::= static_cast LT type_id GT LeftParen expression )");
- fRules.put(Integer.valueOf(71), "postfix_expression ::= reinterpret_cast LT type_id GT LeftParen expression )");
- fRules.put(Integer.valueOf(72), "postfix_expression ::= const_cast LT type_id GT LeftParen expression )");
- fRules.put(Integer.valueOf(73), "postfix_expression ::= typeid LeftParen expression )");
- fRules.put(Integer.valueOf(74), "postfix_expression ::= typeid LeftParen type_id )");
- fRules.put(Integer.valueOf(92),
- "new_expression ::= dcolon_opt new new_placement_opt new_type_id <openscope-ast> new_array_expressions_opt new_initializer_opt");
- fRules.put(Integer.valueOf(93),
- "new_expression ::= dcolon_opt new new_placement_opt LeftParen type_id ) <openscope-ast> new_array_expressions_opt new_initializer_opt");
- fRules.put(Integer.valueOf(108), "delete_expression ::= dcolon_opt delete cast_expression");
- fRules.put(Integer.valueOf(109), "delete_expression ::= dcolon_opt delete LeftBracket ] cast_expression");
- fRules.put(Integer.valueOf(79), "unary_expression ::= postfix_expression");
- fRules.put(Integer.valueOf(80), "unary_expression ::= new_expression");
- fRules.put(Integer.valueOf(81), "unary_expression ::= delete_expression");
- fRules.put(Integer.valueOf(82), "unary_expression ::= PlusPlus cast_expression");
- fRules.put(Integer.valueOf(83), "unary_expression ::= MinusMinus cast_expression");
- fRules.put(Integer.valueOf(84), "unary_expression ::= And cast_expression");
- fRules.put(Integer.valueOf(85), "unary_expression ::= Star cast_expression");
- fRules.put(Integer.valueOf(86), "unary_expression ::= Plus cast_expression");
- fRules.put(Integer.valueOf(87), "unary_expression ::= Minus cast_expression");
- fRules.put(Integer.valueOf(88), "unary_expression ::= Tilde cast_expression");
- fRules.put(Integer.valueOf(89), "unary_expression ::= Bang cast_expression");
- fRules.put(Integer.valueOf(90), "unary_expression ::= sizeof unary_expression");
- fRules.put(Integer.valueOf(91), "unary_expression ::= sizeof LeftParen type_id )");
- fRules.put(Integer.valueOf(110), "cast_expression ::= unary_expression");
- fRules.put(Integer.valueOf(111), "cast_expression ::= LeftParen type_id ) cast_expression");
- fRules.put(Integer.valueOf(112), "pm_expression ::= cast_expression");
- fRules.put(Integer.valueOf(113), "pm_expression ::= pm_expression DotStar cast_expression");
- fRules.put(Integer.valueOf(114), "pm_expression ::= pm_expression ArrowStar cast_expression");
- fRules.put(Integer.valueOf(115), "multiplicative_expression ::= pm_expression");
- fRules.put(Integer.valueOf(116), "multiplicative_expression ::= multiplicative_expression Star pm_expression");
- fRules.put(Integer.valueOf(117), "multiplicative_expression ::= multiplicative_expression Slash pm_expression");
- fRules.put(Integer.valueOf(118),
- "multiplicative_expression ::= multiplicative_expression Percent pm_expression");
- fRules.put(Integer.valueOf(119), "additive_expression ::= multiplicative_expression");
- fRules.put(Integer.valueOf(120), "additive_expression ::= additive_expression Plus multiplicative_expression");
- fRules.put(Integer.valueOf(121), "additive_expression ::= additive_expression Minus multiplicative_expression");
- fRules.put(Integer.valueOf(122), "shift_expression ::= additive_expression");
- fRules.put(Integer.valueOf(123), "shift_expression ::= shift_expression LeftShift additive_expression");
- fRules.put(Integer.valueOf(124), "shift_expression ::= shift_expression RightShift additive_expression");
- fRules.put(Integer.valueOf(125), "relational_expression ::= shift_expression");
- fRules.put(Integer.valueOf(126), "relational_expression ::= relational_expression LT shift_expression");
- fRules.put(Integer.valueOf(127), "relational_expression ::= relational_expression GT shift_expression");
- fRules.put(Integer.valueOf(128), "relational_expression ::= relational_expression LE shift_expression");
- fRules.put(Integer.valueOf(129), "relational_expression ::= relational_expression GE shift_expression");
- fRules.put(Integer.valueOf(130), "equality_expression ::= relational_expression");
- fRules.put(Integer.valueOf(131), "equality_expression ::= equality_expression EQ relational_expression");
- fRules.put(Integer.valueOf(132), "equality_expression ::= equality_expression NE relational_expression");
- fRules.put(Integer.valueOf(133), "and_expression ::= equality_expression");
- fRules.put(Integer.valueOf(134), "and_expression ::= and_expression And equality_expression");
- fRules.put(Integer.valueOf(135), "exclusive_or_expression ::= and_expression");
- fRules.put(Integer.valueOf(136), "exclusive_or_expression ::= exclusive_or_expression Caret and_expression");
- fRules.put(Integer.valueOf(137), "inclusive_or_expression ::= exclusive_or_expression");
- fRules.put(Integer.valueOf(138),
- "inclusive_or_expression ::= inclusive_or_expression Or exclusive_or_expression");
- fRules.put(Integer.valueOf(139), "logical_and_expression ::= inclusive_or_expression");
- fRules.put(Integer.valueOf(140),
- "logical_and_expression ::= logical_and_expression AndAnd inclusive_or_expression");
- fRules.put(Integer.valueOf(141), "logical_or_expression ::= logical_and_expression");
- fRules.put(Integer.valueOf(142), "logical_or_expression ::= logical_or_expression OrOr logical_and_expression");
- fRules.put(Integer.valueOf(143), "conditional_expression ::= logical_or_expression");
- fRules.put(Integer.valueOf(144),
- "conditional_expression ::= logical_or_expression Question expression Colon assignment_expression");
- fRules.put(Integer.valueOf(145), "throw_expression ::= throw");
- fRules.put(Integer.valueOf(146), "throw_expression ::= throw assignment_expression");
- fRules.put(Integer.valueOf(147), "assignment_expression ::= conditional_expression");
- fRules.put(Integer.valueOf(148), "assignment_expression ::= throw_expression");
- fRules.put(Integer.valueOf(149),
- "assignment_expression ::= logical_or_expression Assign assignment_expression");
- fRules.put(Integer.valueOf(150),
- "assignment_expression ::= logical_or_expression StarAssign assignment_expression");
- fRules.put(Integer.valueOf(151),
- "assignment_expression ::= logical_or_expression SlashAssign assignment_expression");
- fRules.put(Integer.valueOf(152),
- "assignment_expression ::= logical_or_expression PercentAssign assignment_expression");
- fRules.put(Integer.valueOf(153),
- "assignment_expression ::= logical_or_expression PlusAssign assignment_expression");
- fRules.put(Integer.valueOf(154),
- "assignment_expression ::= logical_or_expression MinusAssign assignment_expression");
- fRules.put(Integer.valueOf(155),
- "assignment_expression ::= logical_or_expression RightShiftAssign assignment_expression");
- fRules.put(Integer.valueOf(156),
- "assignment_expression ::= logical_or_expression LeftShiftAssign assignment_expression");
- fRules.put(Integer.valueOf(157),
- "assignment_expression ::= logical_or_expression AndAssign assignment_expression");
- fRules.put(Integer.valueOf(158),
- "assignment_expression ::= logical_or_expression CaretAssign assignment_expression");
- fRules.put(Integer.valueOf(159),
- "assignment_expression ::= logical_or_expression OrAssign assignment_expression");
- fRules.put(Integer.valueOf(162), "expression_list_actual ::= assignment_expression");
- fRules.put(Integer.valueOf(163),
- "expression_list_actual ::= expression_list_actual Comma assignment_expression");
- fRules.put(Integer.valueOf(161), "expression_list ::= <openscope-ast> expression_list_actual");
- fRules.put(Integer.valueOf(160), "expression ::= expression_list");
- fRules.put(Integer.valueOf(39), "template_opt ::= template");
- fRules.put(Integer.valueOf(40), "template_opt ::=");
- fRules.put(Integer.valueOf(51),
- "class_or_namespace_name_with_template ::= template_opt class_or_namespace_name");
- fRules.put(Integer.valueOf(49),
- "nested_name_specifier_with_template ::= class_or_namespace_name_with_template ColonColon nested_name_specifier_with_template");
- fRules.put(Integer.valueOf(50),
- "nested_name_specifier_with_template ::= class_or_namespace_name_with_template ColonColon");
- fRules.put(Integer.valueOf(164), "expression_list_opt ::= expression_list");
- fRules.put(Integer.valueOf(165), "expression_list_opt ::=");
- fRules.put(Integer.valueOf(78), "destructor_type_name ::= Tilde type_name");
- fRules.put(Integer.valueOf(75),
- "pseudo_destructor_name ::= dcolon_opt nested_name_specifier_opt type_name ColonColon destructor_type_name");
- fRules.put(Integer.valueOf(76),
- "pseudo_destructor_name ::= dcolon_opt nested_name_specifier template template_id_name ColonColon destructor_type_name");
- fRules.put(Integer.valueOf(77),
- "pseudo_destructor_name ::= dcolon_opt nested_name_specifier_opt destructor_type_name");
- fRules.put(Integer.valueOf(254), "storage_class_specifier ::= auto");
- fRules.put(Integer.valueOf(255), "storage_class_specifier ::= register");
- fRules.put(Integer.valueOf(256), "storage_class_specifier ::= static");
- fRules.put(Integer.valueOf(257), "storage_class_specifier ::= extern");
- fRules.put(Integer.valueOf(258), "storage_class_specifier ::= mutable");
- fRules.put(Integer.valueOf(259), "function_specifier ::= inline");
- fRules.put(Integer.valueOf(260), "function_specifier ::= virtual");
- fRules.put(Integer.valueOf(261), "function_specifier ::= explicit");
- fRules.put(Integer.valueOf(336), "cv_qualifier ::= const");
- fRules.put(Integer.valueOf(337), "cv_qualifier ::= volatile");
- fRules.put(Integer.valueOf(230), "no_type_declaration_specifier ::= storage_class_specifier");
- fRules.put(Integer.valueOf(231), "no_type_declaration_specifier ::= function_specifier");
- fRules.put(Integer.valueOf(232), "no_type_declaration_specifier ::= cv_qualifier");
- fRules.put(Integer.valueOf(233), "no_type_declaration_specifier ::= friend");
- fRules.put(Integer.valueOf(234), "no_type_declaration_specifier ::= typedef");
- fRules.put(Integer.valueOf(235), "no_type_declaration_specifiers ::= no_type_declaration_specifier");
- fRules.put(Integer.valueOf(236),
- "no_type_declaration_specifiers ::= no_type_declaration_specifiers no_type_declaration_specifier");
- fRules.put(Integer.valueOf(237), "simple_declaration_specifiers ::= simple_type_specifier");
- fRules.put(Integer.valueOf(238),
- "simple_declaration_specifiers ::= no_type_declaration_specifiers simple_type_specifier");
- fRules.put(Integer.valueOf(239),
- "simple_declaration_specifiers ::= simple_declaration_specifiers simple_type_specifier");
- fRules.put(Integer.valueOf(240),
- "simple_declaration_specifiers ::= simple_declaration_specifiers no_type_declaration_specifier");
- fRules.put(Integer.valueOf(241), "simple_declaration_specifiers ::= no_type_declaration_specifiers");
- fRules.put(Integer.valueOf(392), "class_keyword ::= class");
- fRules.put(Integer.valueOf(393), "class_keyword ::= struct");
- fRules.put(Integer.valueOf(394), "class_keyword ::= union");
- fRules.put(Integer.valueOf(386),
- "class_head ::= class_keyword identifier_name_opt <openscope-ast> base_clause_opt");
- fRules.put(Integer.valueOf(387),
- "class_head ::= class_keyword template_id_name <openscope-ast> base_clause_opt");
- fRules.put(Integer.valueOf(388),
- "class_head ::= class_keyword nested_name_specifier identifier_name <openscope-ast> base_clause_opt");
- fRules.put(Integer.valueOf(389),
- "class_head ::= class_keyword nested_name_specifier template_id_name <openscope-ast> base_clause_opt");
- fRules.put(Integer.valueOf(385),
- "class_specifier ::= class_head LeftBrace <openscope-ast> member_declaration_list_opt }");
- fRules.put(Integer.valueOf(242), "class_declaration_specifiers ::= class_specifier");
- fRules.put(Integer.valueOf(243),
- "class_declaration_specifiers ::= no_type_declaration_specifiers class_specifier");
- fRules.put(Integer.valueOf(244),
- "class_declaration_specifiers ::= class_declaration_specifiers no_type_declaration_specifier");
- fRules.put(Integer.valueOf(280),
- "elaborated_type_specifier ::= class_keyword dcolon_opt nested_name_specifier_opt identifier_name");
- fRules.put(Integer.valueOf(281),
- "elaborated_type_specifier ::= class_keyword dcolon_opt nested_name_specifier_opt template_opt template_id_name");
- fRules.put(Integer.valueOf(282),
- "elaborated_type_specifier ::= enum dcolon_opt nested_name_specifier_opt identifier_name");
- fRules.put(Integer.valueOf(245), "elaborated_declaration_specifiers ::= elaborated_type_specifier");
- fRules.put(Integer.valueOf(246),
- "elaborated_declaration_specifiers ::= no_type_declaration_specifiers elaborated_type_specifier");
- fRules.put(Integer.valueOf(247),
- "elaborated_declaration_specifiers ::= elaborated_declaration_specifiers no_type_declaration_specifier");
- fRules.put(Integer.valueOf(283), "enum_specifier ::= enum LeftBrace <openscope-ast> enumerator_list_opt }");
- fRules.put(Integer.valueOf(284),
- "enum_specifier ::= enum identifier_token LeftBrace <openscope-ast> enumerator_list_opt }");
- fRules.put(Integer.valueOf(248), "enum_declaration_specifiers ::= enum_specifier");
- fRules.put(Integer.valueOf(249),
- "enum_declaration_specifiers ::= no_type_declaration_specifiers enum_specifier");
- fRules.put(Integer.valueOf(250),
- "enum_declaration_specifiers ::= enum_declaration_specifiers no_type_declaration_specifier");
- fRules.put(Integer.valueOf(275), "type_name_specifier ::= type_name");
- fRules.put(Integer.valueOf(276), "type_name_specifier ::= dcolon_opt nested_name_specifier_opt type_name");
- fRules.put(Integer.valueOf(277),
- "type_name_specifier ::= dcolon_opt nested_name_specifier template template_id_name");
- fRules.put(Integer.valueOf(278),
- "type_name_specifier ::= typename dcolon_opt nested_name_specifier identifier_name");
- fRules.put(Integer.valueOf(279),
- "type_name_specifier ::= typename dcolon_opt nested_name_specifier template_opt template_id_name");
- fRules.put(Integer.valueOf(251), "type_name_declaration_specifiers ::= type_name_specifier");
- fRules.put(Integer.valueOf(252),
- "type_name_declaration_specifiers ::= no_type_declaration_specifiers type_name_specifier");
- fRules.put(Integer.valueOf(253),
- "type_name_declaration_specifiers ::= type_name_declaration_specifiers no_type_declaration_specifier");
- fRules.put(Integer.valueOf(223), "declaration_specifiers ::= <openscope-ast> simple_declaration_specifiers");
- fRules.put(Integer.valueOf(224), "declaration_specifiers ::= <openscope-ast> class_declaration_specifiers");
- fRules.put(Integer.valueOf(225),
- "declaration_specifiers ::= <openscope-ast> elaborated_declaration_specifiers");
- fRules.put(Integer.valueOf(226), "declaration_specifiers ::= <openscope-ast> enum_declaration_specifiers");
- fRules.put(Integer.valueOf(227), "declaration_specifiers ::= <openscope-ast> type_name_declaration_specifiers");
- fRules.put(Integer.valueOf(342), "type_specifier_seq ::= declaration_specifiers");
- fRules.put(Integer.valueOf(340), "type_id ::= type_specifier_seq");
- fRules.put(Integer.valueOf(341), "type_id ::= type_specifier_seq abstract_declarator");
- fRules.put(Integer.valueOf(94), "new_placement_opt ::= LeftParen expression_list )");
- fRules.put(Integer.valueOf(95), "new_placement_opt ::=");
- fRules.put(Integer.valueOf(96), "new_type_id ::= type_specifier_seq");
- fRules.put(Integer.valueOf(97), "new_type_id ::= type_specifier_seq new_declarator");
- fRules.put(Integer.valueOf(101), "new_array_expressions ::= LeftBracket expression ]");
- fRules.put(Integer.valueOf(102),
- "new_array_expressions ::= new_array_expressions LeftBracket constant_expression ]");
- fRules.put(Integer.valueOf(103), "new_array_expressions_opt ::= new_array_expressions");
- fRules.put(Integer.valueOf(104), "new_array_expressions_opt ::=");
- fRules.put(Integer.valueOf(105), "new_initializer ::= LeftParen expression_list_opt )");
- fRules.put(Integer.valueOf(106), "new_initializer_opt ::= new_initializer");
- fRules.put(Integer.valueOf(107), "new_initializer_opt ::=");
- fRules.put(Integer.valueOf(99), "new_pointer_operators ::= ptr_operator");
- fRules.put(Integer.valueOf(100), "new_pointer_operators ::= ptr_operator new_pointer_operators");
- fRules.put(Integer.valueOf(98), "new_declarator ::= <openscope-ast> new_pointer_operators");
- fRules.put(Integer.valueOf(168), "constant_expression ::= conditional_expression");
- fRules.put(Integer.valueOf(166), "expression_opt ::= expression");
- fRules.put(Integer.valueOf(167), "expression_opt ::=");
- fRules.put(Integer.valueOf(169), "constant_expression_opt ::= constant_expression");
- fRules.put(Integer.valueOf(170), "constant_expression_opt ::=");
- fRules.put(Integer.valueOf(180), "labeled_statement ::= identifier Colon statement");
- fRules.put(Integer.valueOf(181), "labeled_statement ::= case constant_expression Colon");
- fRules.put(Integer.valueOf(182), "labeled_statement ::= default Colon");
- fRules.put(Integer.valueOf(183), "expression_statement ::= expression ;");
- fRules.put(Integer.valueOf(184), "expression_statement ::= ;");
- fRules.put(Integer.valueOf(185), "compound_statement ::= LeftBrace <openscope-ast> statement_seq }");
- fRules.put(Integer.valueOf(186), "compound_statement ::= LeftBrace }");
- fRules.put(Integer.valueOf(189), "selection_statement ::= if LeftParen condition ) statement");
- fRules.put(Integer.valueOf(190), "selection_statement ::= if LeftParen condition ) statement else statement");
- fRules.put(Integer.valueOf(191), "selection_statement ::= switch LeftParen condition ) statement");
- fRules.put(Integer.valueOf(194), "iteration_statement ::= while LeftParen condition ) statement");
- fRules.put(Integer.valueOf(195), "iteration_statement ::= do statement while LeftParen expression ) ;");
- fRules.put(Integer.valueOf(196),
- "iteration_statement ::= for LeftParen expression_opt ; expression_opt ; expression_opt ) statement");
- fRules.put(Integer.valueOf(197),
- "iteration_statement ::= for LeftParen simple_declaration_with_declspec expression_opt ; expression_opt ) statement");
- fRules.put(Integer.valueOf(198), "jump_statement ::= break ;");
- fRules.put(Integer.valueOf(199), "jump_statement ::= continue ;");
- fRules.put(Integer.valueOf(200), "jump_statement ::= return expression ;");
- fRules.put(Integer.valueOf(201), "jump_statement ::= return ;");
- fRules.put(Integer.valueOf(202), "jump_statement ::= goto identifier_token ;");
- fRules.put(Integer.valueOf(203), "declaration_statement ::= block_declaration");
- fRules.put(Integer.valueOf(204), "declaration_statement ::= function_definition");
- fRules.put(Integer.valueOf(512), "try_block ::= try compound_statement <openscope-ast> handler_seq");
- fRules.put(Integer.valueOf(171), "statement ::= labeled_statement");
- fRules.put(Integer.valueOf(172), "statement ::= expression_statement");
- fRules.put(Integer.valueOf(173), "statement ::= compound_statement");
- fRules.put(Integer.valueOf(174), "statement ::= selection_statement");
- fRules.put(Integer.valueOf(175), "statement ::= iteration_statement");
- fRules.put(Integer.valueOf(176), "statement ::= jump_statement");
- fRules.put(Integer.valueOf(177), "statement ::= declaration_statement");
- fRules.put(Integer.valueOf(178), "statement ::= try_block");
- fRules.put(Integer.valueOf(179), "statement ::= ERROR_TOKEN");
- fRules.put(Integer.valueOf(187), "statement_seq ::= statement");
- fRules.put(Integer.valueOf(188), "statement_seq ::= statement_seq statement");
- fRules.put(Integer.valueOf(192), "condition ::= expression");
- fRules.put(Integer.valueOf(193), "condition ::= type_specifier_seq declarator Assign assignment_expression");
- fRules.put(Integer.valueOf(222),
- "simple_declaration_with_declspec ::= declaration_specifiers <openscope-ast> init_declarator_list_opt ;");
- fRules.put(Integer.valueOf(217), "declaration_seq ::= declaration");
- fRules.put(Integer.valueOf(218), "declaration_seq ::= declaration_seq declaration");
- fRules.put(Integer.valueOf(219), "declaration_seq_opt ::= declaration_seq");
- fRules.put(Integer.valueOf(220), "declaration_seq_opt ::=");
- fRules.put(Integer.valueOf(289), "enumerator_definition ::= identifier_token");
- fRules.put(Integer.valueOf(290), "enumerator_definition ::= identifier_token Assign constant_expression");
- fRules.put(Integer.valueOf(285), "enumerator_list ::= enumerator_definition");
- fRules.put(Integer.valueOf(286), "enumerator_list ::= enumerator_list Comma enumerator_definition");
- fRules.put(Integer.valueOf(287), "enumerator_list_opt ::= enumerator_list");
- fRules.put(Integer.valueOf(288), "enumerator_list_opt ::=");
- fRules.put(Integer.valueOf(291), "namespace_name ::= identifier_name");
- fRules.put(Integer.valueOf(301), "typename_opt ::= typename");
- fRules.put(Integer.valueOf(302), "typename_opt ::=");
- fRules.put(Integer.valueOf(375), "initializer ::= Assign initializer_clause");
- fRules.put(Integer.valueOf(376), "initializer ::= LeftParen expression_list )");
- fRules.put(Integer.valueOf(364), "parameter_declaration ::= declaration_specifiers parameter_init_declarator");
- fRules.put(Integer.valueOf(365), "parameter_declaration ::= declaration_specifiers");
- fRules.put(Integer.valueOf(358), "parameter_declaration_list ::= parameter_declaration");
- fRules.put(Integer.valueOf(359),
- "parameter_declaration_list ::= parameter_declaration_list Comma parameter_declaration");
- fRules.put(Integer.valueOf(360), "parameter_declaration_list_opt ::= parameter_declaration_list");
- fRules.put(Integer.valueOf(361), "parameter_declaration_list_opt ::=");
- fRules.put(Integer.valueOf(355), "parameter_declaration_clause ::= parameter_declaration_list_opt DotDotDot");
- fRules.put(Integer.valueOf(357), "parameter_declaration_clause ::= parameter_declaration_list Comma DotDotDot");
- fRules.put(Integer.valueOf(356), "parameter_declaration_clause ::= parameter_declaration_list_opt");
- fRules.put(Integer.valueOf(333), "cv_qualifier_seq ::= cv_qualifier cv_qualifier_seq_opt");
- fRules.put(Integer.valueOf(334), "cv_qualifier_seq_opt ::= cv_qualifier_seq");
- fRules.put(Integer.valueOf(335), "cv_qualifier_seq_opt ::=");
- fRules.put(Integer.valueOf(520), "exception_specification ::= throw LeftParen type_id_list )");
- fRules.put(Integer.valueOf(521), "exception_specification ::= throw LeftParen )");
- fRules.put(Integer.valueOf(522), "exception_specification_opt ::= exception_specification");
- fRules.put(Integer.valueOf(523), "exception_specification_opt ::=");
- fRules.put(Integer.valueOf(326), "array_modifier ::= LeftBracket constant_expression ]");
- fRules.put(Integer.valueOf(327), "array_modifier ::= LeftBracket ]");
- fRules.put(Integer.valueOf(349), "basic_direct_abstract_declarator ::= LeftParen abstract_declarator )");
- fRules.put(Integer.valueOf(350), "array_direct_abstract_declarator ::= array_modifier");
- fRules.put(Integer.valueOf(351),
- "array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier");
- fRules.put(Integer.valueOf(352),
- "array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier");
- fRules.put(Integer.valueOf(353),
- "function_direct_abstract_declarator ::= basic_direct_abstract_declarator LeftParen <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt");
- fRules.put(Integer.valueOf(354),
- "function_direct_abstract_declarator ::= LeftParen <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt");
- fRules.put(Integer.valueOf(346), "direct_abstract_declarator ::= basic_direct_abstract_declarator");
- fRules.put(Integer.valueOf(347), "direct_abstract_declarator ::= array_direct_abstract_declarator");
- fRules.put(Integer.valueOf(348), "direct_abstract_declarator ::= function_direct_abstract_declarator");
- fRules.put(Integer.valueOf(343), "abstract_declarator ::= direct_abstract_declarator");
- fRules.put(Integer.valueOf(344), "abstract_declarator ::= <openscope-ast> ptr_operator_seq");
- fRules.put(Integer.valueOf(345),
- "abstract_declarator ::= <openscope-ast> ptr_operator_seq direct_abstract_declarator");
- fRules.put(Integer.valueOf(362), "abstract_declarator_opt ::= abstract_declarator");
- fRules.put(Integer.valueOf(363), "abstract_declarator_opt ::=");
- fRules.put(Integer.valueOf(366), "parameter_init_declarator ::= declarator");
- fRules.put(Integer.valueOf(367), "parameter_init_declarator ::= declarator Assign parameter_initializer");
- fRules.put(Integer.valueOf(368), "parameter_init_declarator ::= abstract_declarator");
- fRules.put(Integer.valueOf(369),
- "parameter_init_declarator ::= abstract_declarator Assign parameter_initializer");
- fRules.put(Integer.valueOf(370), "parameter_init_declarator ::= Assign parameter_initializer");
- fRules.put(Integer.valueOf(371), "parameter_initializer ::= assignment_expression");
- fRules.put(Integer.valueOf(435), "ctor_initializer_list ::= Colon mem_initializer_list");
- fRules.put(Integer.valueOf(436), "ctor_initializer_list_opt ::= ctor_initializer_list");
- fRules.put(Integer.valueOf(437), "ctor_initializer_list_opt ::=");
- fRules.put(Integer.valueOf(374), "function_body ::= compound_statement");
- fRules.put(Integer.valueOf(515), "handler ::= catch LeftParen exception_declaration ) compound_statement");
- fRules.put(Integer.valueOf(516), "handler ::= catch LeftParen DotDotDot ) compound_statement");
- fRules.put(Integer.valueOf(513), "handler_seq ::= handler");
- fRules.put(Integer.valueOf(514), "handler_seq ::= handler_seq handler");
- fRules.put(Integer.valueOf(377), "initializer_clause ::= assignment_expression");
- fRules.put(Integer.valueOf(378), "initializer_clause ::= LeftBrace <openscope-ast> initializer_list Comma }");
- fRules.put(Integer.valueOf(379), "initializer_clause ::= LeftBrace <openscope-ast> initializer_list }");
- fRules.put(Integer.valueOf(380), "initializer_clause ::= LeftBrace <openscope-ast> }");
- fRules.put(Integer.valueOf(381), "initializer_list ::= initializer_clause");
- fRules.put(Integer.valueOf(382), "initializer_list ::= initializer_list Comma initializer_clause");
- fRules.put(Integer.valueOf(415), "bit_field_declarator ::= identifier_name");
- fRules.put(Integer.valueOf(411), "member_declarator ::= declarator");
- fRules.put(Integer.valueOf(412), "member_declarator ::= declarator constant_initializer");
- fRules.put(Integer.valueOf(413), "member_declarator ::= bit_field_declarator Colon constant_expression");
- fRules.put(Integer.valueOf(414), "member_declarator ::= Colon constant_expression");
- fRules.put(Integer.valueOf(409), "member_declarator_list ::= member_declarator");
- fRules.put(Integer.valueOf(410), "member_declarator_list ::= member_declarator_list Comma member_declarator");
- fRules.put(Integer.valueOf(426), "access_specifier_keyword ::= private");
- fRules.put(Integer.valueOf(427), "access_specifier_keyword ::= protected");
- fRules.put(Integer.valueOf(428), "access_specifier_keyword ::= public");
- fRules.put(Integer.valueOf(395), "visibility_label ::= access_specifier_keyword Colon");
- fRules.put(Integer.valueOf(396),
- "member_declaration ::= declaration_specifiers_opt <openscope-ast> member_declarator_list ;");
- fRules.put(Integer.valueOf(397), "member_declaration ::= declaration_specifiers_opt ;");
- fRules.put(Integer.valueOf(398), "member_declaration ::= function_definition ;");
- fRules.put(Integer.valueOf(399), "member_declaration ::= function_definition");
- fRules.put(Integer.valueOf(400),
- "member_declaration ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name ;");
- fRules.put(Integer.valueOf(401), "member_declaration ::= using_declaration");
- fRules.put(Integer.valueOf(402), "member_declaration ::= template_declaration");
- fRules.put(Integer.valueOf(403), "member_declaration ::= visibility_label");
- fRules.put(Integer.valueOf(404), "member_declaration ::= ERROR_TOKEN");
- fRules.put(Integer.valueOf(405), "member_declaration_list ::= member_declaration");
- fRules.put(Integer.valueOf(406), "member_declaration_list ::= member_declaration_list member_declaration");
- fRules.put(Integer.valueOf(407), "member_declaration_list_opt ::= member_declaration_list");
- fRules.put(Integer.valueOf(408), "member_declaration_list_opt ::=");
- fRules.put(Integer.valueOf(390), "identifier_name_opt ::= identifier_name");
- fRules.put(Integer.valueOf(391), "identifier_name_opt ::=");
- fRules.put(Integer.valueOf(417), "base_clause ::= Colon base_specifier_list");
- fRules.put(Integer.valueOf(418), "base_clause_opt ::= base_clause");
- fRules.put(Integer.valueOf(419), "base_clause_opt ::=");
- fRules.put(Integer.valueOf(416), "constant_initializer ::= Assign constant_expression");
- fRules.put(Integer.valueOf(422), "base_specifier ::= dcolon_opt nested_name_specifier_opt class_name");
- fRules.put(Integer.valueOf(423),
- "base_specifier ::= virtual access_specifier_keyword_opt dcolon_opt nested_name_specifier_opt class_name");
- fRules.put(Integer.valueOf(424),
- "base_specifier ::= access_specifier_keyword virtual dcolon_opt nested_name_specifier_opt class_name");
- fRules.put(Integer.valueOf(425),
- "base_specifier ::= access_specifier_keyword dcolon_opt nested_name_specifier_opt class_name");
- fRules.put(Integer.valueOf(420), "base_specifier_list ::= base_specifier");
- fRules.put(Integer.valueOf(421), "base_specifier_list ::= base_specifier_list Comma base_specifier");
- fRules.put(Integer.valueOf(429), "access_specifier_keyword_opt ::= access_specifier_keyword");
- fRules.put(Integer.valueOf(430), "access_specifier_keyword_opt ::=");
- fRules.put(Integer.valueOf(432), "conversion_type_id ::= type_specifier_seq conversion_declarator");
- fRules.put(Integer.valueOf(433), "conversion_type_id ::= type_specifier_seq");
- fRules.put(Integer.valueOf(434), "conversion_declarator ::= <openscope-ast> ptr_operator_seq");
- fRules.put(Integer.valueOf(441), "mem_initializer_name ::= dcolon_opt nested_name_specifier_opt class_name");
- fRules.put(Integer.valueOf(442), "mem_initializer_name ::= identifier_name");
- fRules.put(Integer.valueOf(440), "mem_initializer ::= mem_initializer_name LeftParen expression_list_opt )");
- fRules.put(Integer.valueOf(438), "mem_initializer_list ::= mem_initializer");
- fRules.put(Integer.valueOf(439), "mem_initializer_list ::= mem_initializer Comma mem_initializer_list");
- fRules.put(Integer.valueOf(507), "template_argument ::= assignment_expression");
- fRules.put(Integer.valueOf(508), "template_argument ::= type_id");
- fRules.put(Integer.valueOf(509), "template_argument ::= qualified_or_unqualified_name");
- fRules.put(Integer.valueOf(503), "template_argument_list ::= template_argument");
- fRules.put(Integer.valueOf(504), "template_argument_list ::= template_argument_list Comma template_argument");
- fRules.put(Integer.valueOf(505), "template_argument_list_opt ::= template_argument_list");
- fRules.put(Integer.valueOf(506), "template_argument_list_opt ::=");
- fRules.put(Integer.valueOf(446), "overloadable_operator ::= new");
- fRules.put(Integer.valueOf(447), "overloadable_operator ::= delete");
- fRules.put(Integer.valueOf(448), "overloadable_operator ::= new LeftBracket ]");
- fRules.put(Integer.valueOf(449), "overloadable_operator ::= delete LeftBracket ]");
- fRules.put(Integer.valueOf(450), "overloadable_operator ::= Plus");
- fRules.put(Integer.valueOf(451), "overloadable_operator ::= Minus");
- fRules.put(Integer.valueOf(452), "overloadable_operator ::= Star");
- fRules.put(Integer.valueOf(453), "overloadable_operator ::= Slash");
- fRules.put(Integer.valueOf(454), "overloadable_operator ::= Percent");
- fRules.put(Integer.valueOf(455), "overloadable_operator ::= Caret");
- fRules.put(Integer.valueOf(456), "overloadable_operator ::= And");
- fRules.put(Integer.valueOf(457), "overloadable_operator ::= Or");
- fRules.put(Integer.valueOf(458), "overloadable_operator ::= Tilde");
- fRules.put(Integer.valueOf(459), "overloadable_operator ::= Bang");
- fRules.put(Integer.valueOf(460), "overloadable_operator ::= Assign");
- fRules.put(Integer.valueOf(461), "overloadable_operator ::= LT");
- fRules.put(Integer.valueOf(462), "overloadable_operator ::= GT");
- fRules.put(Integer.valueOf(463), "overloadable_operator ::= PlusAssign");
- fRules.put(Integer.valueOf(464), "overloadable_operator ::= MinusAssign");
- fRules.put(Integer.valueOf(465), "overloadable_operator ::= StarAssign");
- fRules.put(Integer.valueOf(466), "overloadable_operator ::= SlashAssign");
- fRules.put(Integer.valueOf(467), "overloadable_operator ::= PercentAssign");
- fRules.put(Integer.valueOf(468), "overloadable_operator ::= CaretAssign");
- fRules.put(Integer.valueOf(469), "overloadable_operator ::= AndAssign");
- fRules.put(Integer.valueOf(470), "overloadable_operator ::= OrAssign");
- fRules.put(Integer.valueOf(471), "overloadable_operator ::= LeftShift");
- fRules.put(Integer.valueOf(472), "overloadable_operator ::= RightShift");
- fRules.put(Integer.valueOf(473), "overloadable_operator ::= RightShiftAssign");
- fRules.put(Integer.valueOf(474), "overloadable_operator ::= LeftShiftAssign");
- fRules.put(Integer.valueOf(475), "overloadable_operator ::= EQ");
- fRules.put(Integer.valueOf(476), "overloadable_operator ::= NE");
- fRules.put(Integer.valueOf(477), "overloadable_operator ::= LE");
- fRules.put(Integer.valueOf(478), "overloadable_operator ::= GE");
- fRules.put(Integer.valueOf(479), "overloadable_operator ::= AndAnd");
- fRules.put(Integer.valueOf(480), "overloadable_operator ::= OrOr");
- fRules.put(Integer.valueOf(481), "overloadable_operator ::= PlusPlus");
- fRules.put(Integer.valueOf(482), "overloadable_operator ::= MinusMinus");
- fRules.put(Integer.valueOf(483), "overloadable_operator ::= Comma");
- fRules.put(Integer.valueOf(484), "overloadable_operator ::= ArrowStar");
- fRules.put(Integer.valueOf(485), "overloadable_operator ::= Arrow");
- fRules.put(Integer.valueOf(486), "overloadable_operator ::= LeftParen )");
- fRules.put(Integer.valueOf(487), "overloadable_operator ::= LeftBracket ]");
- fRules.put(Integer.valueOf(494), "template_parameter ::= parameter_declaration");
- fRules.put(Integer.valueOf(491), "template_parameter_list ::= template_parameter");
- fRules.put(Integer.valueOf(492),
- "template_parameter_list ::= template_parameter_list Comma template_parameter");
- fRules.put(Integer.valueOf(495), "type_parameter ::= class identifier_name_opt");
- fRules.put(Integer.valueOf(496), "type_parameter ::= class identifier_name_opt Assign type_id");
- fRules.put(Integer.valueOf(497), "type_parameter ::= typename identifier_name_opt");
- fRules.put(Integer.valueOf(498), "type_parameter ::= typename identifier_name_opt Assign type_id");
- fRules.put(Integer.valueOf(499),
- "type_parameter ::= template LT <openscope-ast> template_parameter_list GT class identifier_name_opt");
- fRules.put(Integer.valueOf(500),
- "type_parameter ::= template LT <openscope-ast> template_parameter_list GT class identifier_name_opt Assign id_expression");
- fRules.put(Integer.valueOf(517), "exception_declaration ::= type_specifier_seq <openscope-ast> declarator");
- fRules.put(Integer.valueOf(518),
- "exception_declaration ::= type_specifier_seq <openscope-ast> abstract_declarator");
- fRules.put(Integer.valueOf(519), "exception_declaration ::= type_specifier_seq");
- fRules.put(Integer.valueOf(524), "type_id_list ::= type_id");
- fRules.put(Integer.valueOf(525), "type_id_list ::= type_id_list Comma type_id");
-
- }
-
- public static String lookup(int ruleNumber) {
- return (String) fRules.get(Integer.valueOf(ruleNumber));
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPSizeofExpressionParser.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPSizeofExpressionParser.java
deleted file mode 100644
index 293e79b80e9..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPSizeofExpressionParser.java
+++ /dev/null
@@ -1,2850 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2015 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.dom.lrparser.cpp;
-
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.cdt.core.dom.ast.IASTCompletionNode;
-import org.eclipse.cdt.core.dom.ast.IASTExpression;
-import org.eclipse.cdt.core.dom.ast.IASTUnaryExpression;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTBinaryExpression;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCastExpression;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTLiteralExpression;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTUnaryExpression;
-import org.eclipse.cdt.core.dom.lrparser.CPreprocessorAdapter;
-import org.eclipse.cdt.core.dom.lrparser.IDOMTokenMap;
-import org.eclipse.cdt.core.dom.lrparser.ISecondaryParser;
-import org.eclipse.cdt.core.dom.lrparser.ITokenCollector;
-import org.eclipse.cdt.core.dom.lrparser.action.ITokenMap;
-import org.eclipse.cdt.core.dom.lrparser.action.ITokenStream;
-import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack;
-import org.eclipse.cdt.core.dom.lrparser.action.TokenMap;
-import org.eclipse.cdt.core.dom.lrparser.action.cpp.CPPBuildASTParserAction;
-import org.eclipse.cdt.core.dom.lrparser.action.cpp.CPPSecondaryParserFactory;
-import org.eclipse.cdt.core.dom.lrparser.lpgextensions.FixedBacktrackingParser;
-import org.eclipse.cdt.core.dom.parser.IBuiltinBindingsProvider;
-import org.eclipse.cdt.core.index.IIndex;
-import org.eclipse.cdt.core.parser.IScanner;
-import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPNodeFactory;
-
-import lpg.lpgjavaruntime.BadParseException;
-import lpg.lpgjavaruntime.BadParseSymFileException;
-import lpg.lpgjavaruntime.DiagnoseParser;
-import lpg.lpgjavaruntime.ErrorToken;
-import lpg.lpgjavaruntime.IToken;
-import lpg.lpgjavaruntime.LexStream;
-import lpg.lpgjavaruntime.Monitor;
-import lpg.lpgjavaruntime.NotBacktrackParseTableException;
-import lpg.lpgjavaruntime.NullExportedSymbolsException;
-import lpg.lpgjavaruntime.NullTerminalSymbolsException;
-import lpg.lpgjavaruntime.ParseErrorCodes;
-import lpg.lpgjavaruntime.ParseTable;
-import lpg.lpgjavaruntime.PrsStream;
-import lpg.lpgjavaruntime.RuleAction;
-import lpg.lpgjavaruntime.Token;
-import lpg.lpgjavaruntime.UndefinedEofSymbolException;
-import lpg.lpgjavaruntime.UnimplementedTerminalsException;
-
-public class CPPSizeofExpressionParser extends PrsStream
- implements RuleAction, ITokenStream, ITokenCollector, ISecondaryParser<IASTExpression> {
- private static ParseTable prs = new CPPSizeofExpressionParserprs();
- private FixedBacktrackingParser btParser;
-
- public FixedBacktrackingParser getParser() {
- return btParser;
- }
-
- private void setResult(Object object) {
- btParser.setSym1(object);
- }
-
- public Object getRhsSym(int i) {
- return btParser.getSym(i);
- }
-
- public int getRhsTokenIndex(int i) {
- return btParser.getToken(i);
- }
-
- public IToken getRhsIToken(int i) {
- return super.getIToken(getRhsTokenIndex(i));
- }
-
- public int getRhsFirstTokenIndex(int i) {
- return btParser.getFirstToken(i);
- }
-
- public IToken getRhsFirstIToken(int i) {
- return super.getIToken(getRhsFirstTokenIndex(i));
- }
-
- public int getRhsLastTokenIndex(int i) {
- return btParser.getLastToken(i);
- }
-
- public IToken getRhsLastIToken(int i) {
- return super.getIToken(getRhsLastTokenIndex(i));
- }
-
- public int getLeftSpan() {
- return btParser.getFirstToken();
- }
-
- @Override
- public IToken getLeftIToken() {
- return super.getIToken(getLeftSpan());
- }
-
- public int getRightSpan() {
- return btParser.getLastToken();
- }
-
- @Override
- public IToken getRightIToken() {
- return super.getIToken(getRightSpan());
- }
-
- public int getRhsErrorTokenIndex(int i) {
- int index = btParser.getToken(i);
- IToken err = super.getIToken(index);
- return (err instanceof ErrorToken ? index : 0);
- }
-
- public ErrorToken getRhsErrorIToken(int i) {
- int index = btParser.getToken(i);
- IToken err = super.getIToken(index);
- return (ErrorToken) (err instanceof ErrorToken ? err : null);
- }
-
- public CPPSizeofExpressionParser(LexStream lexStream) {
- super(lexStream);
-
- try {
- super.remapTerminalSymbols(orderedTerminalSymbols(), CPPSizeofExpressionParserprs.EOFT_SYMBOL);
- } catch (NullExportedSymbolsException e) {
- } catch (NullTerminalSymbolsException e) {
- } catch (UnimplementedTerminalsException e) {
- java.util.ArrayList unimplemented_symbols = e.getSymbols();
- System.out.println("The Lexer will not scan the following token(s):");
- for (int i = 0; i < unimplemented_symbols.size(); i++) {
- Integer id = (Integer) unimplemented_symbols.get(i);
- System.out.println(" " + CPPSizeofExpressionParsersym.orderedTerminalSymbols[id.intValue()]);
- }
- System.out.println();
- } catch (UndefinedEofSymbolException e) {
- throw new Error(new UndefinedEofSymbolException("The Lexer does not implement the Eof symbol "
- + CPPSizeofExpressionParsersym.orderedTerminalSymbols[CPPSizeofExpressionParserprs.EOFT_SYMBOL]));
- }
- }
-
- @Override
- public String[] orderedTerminalSymbols() {
- return CPPSizeofExpressionParsersym.orderedTerminalSymbols;
- }
-
- public String getTokenKindName(int kind) {
- return CPPSizeofExpressionParsersym.orderedTerminalSymbols[kind];
- }
-
- public int getEOFTokenKind() {
- return CPPSizeofExpressionParserprs.EOFT_SYMBOL;
- }
-
- public PrsStream getParseStream() {
- return this;
- }
-
- //
- // Report error message for given error_token.
- //
- public final void reportErrorTokenMessage(int error_token, String msg) {
- int firsttok = super.getFirstErrorToken(error_token), lasttok = super.getLastErrorToken(error_token);
- String location = super.getFileName() + ':'
- + (firsttok > lasttok ? (super.getEndLine(lasttok) + ":" + super.getEndColumn(lasttok))
- : (super.getLine(error_token) + ":" + super.getColumn(error_token) + ":"
- + super.getEndLine(error_token) + ":" + super.getEndColumn(error_token)))
- + ": ";
- super.reportError((firsttok > lasttok ? ParseErrorCodes.INSERTION_CODE : ParseErrorCodes.SUBSTITUTION_CODE),
- location, msg);
- }
-
- public void parser() {
- parser(null, 0);
- }
-
- public void parser(Monitor monitor) {
- parser(monitor, 0);
- }
-
- public void parser(int error_repair_count) {
- parser(null, error_repair_count);
- }
-
- public void parser(Monitor monitor, int error_repair_count) {
- try {
- btParser = new FixedBacktrackingParser(monitor, this, prs, this);
- } catch (NotBacktrackParseTableException e) {
- throw new Error(new NotBacktrackParseTableException(
- "Regenerate CPPSizeofExpressionParserprs.java with -BACKTRACK option"));
- } catch (BadParseSymFileException e) {
- throw new Error(
- new BadParseSymFileException("Bad Parser Symbol File -- CPPSizeofExpressionParsersym.java"));
- }
-
- try {
- btParser.parse(error_repair_count);
- } catch (BadParseException e) {
- reset(e.error_token); // point to error token
- DiagnoseParser diagnoseParser = new DiagnoseParser(this, prs);
- diagnoseParser.diagnose(e.error_token);
- }
- }
-
- private CPPBuildASTParserAction action;
- private IASTCompletionNode compNode;
-
- public CPPSizeofExpressionParser(IScanner scanner, IDOMTokenMap tokenMap,
- IBuiltinBindingsProvider builtinBindingsProvider, IIndex index, Map<String, String> properties) {
- initActions(properties);
- action.initializeTranslationUnit(scanner, builtinBindingsProvider, index);
- CPreprocessorAdapter.runCPreprocessor(scanner, this, tokenMap);
- }
-
- private void initActions(Map<String, String> properties) {
- ScopedStack<Object> astStack = new ScopedStack<>();
-
- action = new CPPBuildASTParserAction(this, astStack, CPPNodeFactory.getDefault(),
- CPPSecondaryParserFactory.getDefault());
- action.setParserProperties(properties);
-
- }
-
- @Override
- public void addToken(IToken token) {
- token.setKind(mapKind(token.getKind())); // TODO does mapKind need to be called?
- super.addToken(token);
- }
-
- @Override
- public IASTExpression parse() {
- // this has to be done, or... kaboom!
- setStreamLength(getSize());
-
- final int errorRepairCount = -1; // -1 means full error handling
- parser(null, errorRepairCount); // do the actual parse
- super.resetTokenStream(); // allow tokens to be garbage collected
-
- compNode = action.getASTCompletionNode(); // the completion node may be null
- return (IASTExpression) action.getParseResult();
- }
-
- @Override
- public IASTCompletionNode getCompletionNode() {
- return compNode;
- }
-
- // uncomment this method to use with backtracking parser
- @Override
- public List<IToken> getRuleTokens() {
- return getTokens().subList(getLeftSpan(), getRightSpan() + 1);
- }
-
- @Override
- public String[] getOrderedTerminalSymbols() {
- return CPPSizeofExpressionParsersym.orderedTerminalSymbols;
- }
-
- @Override
- @SuppressWarnings("nls")
- public String getName() {
- return "CPPSizeofExpressionParser";
- }
-
- private ITokenMap tokenMap = null;
-
- @Override
- public void setTokens(List<IToken> tokens) {
- resetTokenStream();
- addToken(new Token(null, 0, 0, 0)); // dummy token
- for (IToken token : tokens) {
- token.setKind(tokenMap.mapKind(token.getKind()));
- addToken(token);
- }
- addToken(new Token(null, 0, 0, CPPSizeofExpressionParsersym.TK_EOF_TOKEN));
- }
-
- public CPPSizeofExpressionParser(ITokenStream stream, Map<String, String> properties) { // constructor for creating secondary parser
- initActions(properties);
- tokenMap = new TokenMap(CPPSizeofExpressionParsersym.orderedTerminalSymbols,
- stream.getOrderedTerminalSymbols());
- }
-
- public CPPSizeofExpressionParser(ITokenStream stream, IScanner scanner,
- IBuiltinBindingsProvider builtinBindingsProvider, IIndex index, Map<String, String> properties) { // constructor for creating secondary parser
- initActions(properties);
- action.initializeTranslationUnit(scanner, builtinBindingsProvider, index);
- tokenMap = new TokenMap(CPPSizeofExpressionParsersym.orderedTerminalSymbols,
- stream.getOrderedTerminalSymbols());
- }
-
- @Override
- public void ruleAction(int ruleNumber) {
- switch (ruleNumber) {
-
- //
- // Rule 1: <openscope-ast> ::= $Empty
- //
- case 1: {
- action.openASTScope();
- break;
- }
-
- //
- // Rule 2: <empty> ::= $Empty
- //
- case 2: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 13: translation_unit ::= declaration_seq_opt
- //
- case 13: {
- action.consumeTranslationUnit();
- break;
- }
-
- //
- // Rule 16: literal ::= integer
- //
- case 16: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_integer_constant);
- break;
- }
-
- //
- // Rule 17: literal ::= floating
- //
- case 17: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_float_constant);
- break;
- }
-
- //
- // Rule 18: literal ::= charconst
- //
- case 18: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_char_constant);
- break;
- }
-
- //
- // Rule 19: literal ::= stringlit
- //
- case 19: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_string_literal);
- break;
- }
-
- //
- // Rule 20: literal ::= true
- //
- case 20: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_true);
- break;
- }
-
- //
- // Rule 21: literal ::= false
- //
- case 21: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_false);
- break;
- }
-
- //
- // Rule 22: literal ::= this
- //
- case 22: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_this);
- break;
- }
-
- //
- // Rule 24: primary_expression ::= ( expression )
- //
- case 24: {
- action.consumeExpressionBracketed();
- break;
- }
-
- //
- // Rule 26: id_expression ::= qualified_or_unqualified_name
- //
- case 26: {
- action.consumeExpressionName();
- break;
- }
-
- //
- // Rule 33: unqualified_id_name ::= ~ identifier_token
- //
- case 33: {
- action.consumeDestructorName();
- break;
- }
-
- //
- // Rule 34: unqualified_id_name ::= ~ template_id_name
- //
- case 34: {
- action.consumeDestructorNameTemplateId();
- break;
- }
-
- //
- // Rule 35: identifier_name ::= identifier_token
- //
- case 35: {
- action.consumeIdentifierName();
- break;
- }
-
- //
- // Rule 36: template_opt ::= template
- //
- case 36: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 37: template_opt ::= $Empty
- //
- case 37: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 38: dcolon_opt ::= ::
- //
- case 38: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 39: dcolon_opt ::= $Empty
- //
- case 39: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 40: qualified_id_name ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name
- //
- case 40: {
- action.consumeQualifiedId(true);
- break;
- }
-
- //
- // Rule 41: qualified_id_name ::= :: unqualified_id_name
- //
- case 41: {
- action.consumeGlobalQualifiedId();
- break;
- }
-
- //
- // Rule 42: nested_name_specifier ::= class_or_namespace_name :: nested_name_specifier_with_template
- //
- case 42: {
- action.consumeNestedNameSpecifier(true);
- break;
- }
-
- //
- // Rule 43: nested_name_specifier ::= class_or_namespace_name ::
- //
- case 43: {
- action.consumeNestedNameSpecifier(false);
- break;
- }
-
- //
- // Rule 44: nested_name_specifier_with_template ::= class_or_namespace_name_with_template :: nested_name_specifier_with_template
- //
- case 44: {
- action.consumeNestedNameSpecifier(true);
- break;
- }
-
- //
- // Rule 45: nested_name_specifier_with_template ::= class_or_namespace_name_with_template ::
- //
- case 45: {
- action.consumeNestedNameSpecifier(false);
- break;
- }
-
- //
- // Rule 46: class_or_namespace_name_with_template ::= template_opt class_or_namespace_name
- //
- case 46: {
- action.consumeNameWithTemplateKeyword();
- break;
- }
-
- //
- // Rule 48: nested_name_specifier_opt ::= $Empty
- //
- case 48: {
- action.consumeNestedNameSpecifierEmpty();
- break;
- }
-
- //
- // Rule 51: postfix_expression ::= postfix_expression [ expression ]
- //
- case 51: {
- action.consumeExpressionArraySubscript();
- break;
- }
-
- //
- // Rule 52: postfix_expression ::= postfix_expression ( expression_list_opt )
- //
- case 52: {
- action.consumeExpressionFunctionCall();
- break;
- }
-
- //
- // Rule 53: postfix_expression ::= simple_type_specifier ( expression_list_opt )
- //
- case 53: {
- action.consumeExpressionSimpleTypeConstructor();
- break;
- }
-
- //
- // Rule 54: postfix_expression ::= typename dcolon_opt nested_name_specifier <empty> identifier_name ( expression_list_opt )
- //
- case 54: {
- action.consumeExpressionTypeName();
- break;
- }
-
- //
- // Rule 55: postfix_expression ::= typename dcolon_opt nested_name_specifier template_opt template_id_name ( expression_list_opt )
- //
- case 55: {
- action.consumeExpressionTypeName();
- break;
- }
-
- //
- // Rule 56: postfix_expression ::= postfix_expression . qualified_or_unqualified_name
- //
- case 56: {
- action.consumeExpressionFieldReference(false, false);
- break;
- }
-
- //
- // Rule 57: postfix_expression ::= postfix_expression -> qualified_or_unqualified_name
- //
- case 57: {
- action.consumeExpressionFieldReference(true, false);
- break;
- }
-
- //
- // Rule 58: postfix_expression ::= postfix_expression . template qualified_or_unqualified_name
- //
- case 58: {
- action.consumeExpressionFieldReference(false, true);
- break;
- }
-
- //
- // Rule 59: postfix_expression ::= postfix_expression -> template qualified_or_unqualified_name
- //
- case 59: {
- action.consumeExpressionFieldReference(true, true);
- break;
- }
-
- //
- // Rule 60: postfix_expression ::= postfix_expression . pseudo_destructor_name
- //
- case 60: {
- action.consumeExpressionFieldReference(false, false);
- break;
- }
-
- //
- // Rule 61: postfix_expression ::= postfix_expression -> pseudo_destructor_name
- //
- case 61: {
- action.consumeExpressionFieldReference(true, false);
- break;
- }
-
- //
- // Rule 62: postfix_expression ::= postfix_expression ++
- //
- case 62: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixIncr);
- break;
- }
-
- //
- // Rule 63: postfix_expression ::= postfix_expression --
- //
- case 63: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixDecr);
- break;
- }
-
- //
- // Rule 64: postfix_expression ::= dynamic_cast < type_id > ( expression )
- //
- case 64: {
- action.consumeExpressionCast(ICPPASTCastExpression.op_dynamic_cast);
- break;
- }
-
- //
- // Rule 65: postfix_expression ::= static_cast < type_id > ( expression )
- //
- case 65: {
- action.consumeExpressionCast(ICPPASTCastExpression.op_static_cast);
- break;
- }
-
- //
- // Rule 66: postfix_expression ::= reinterpret_cast < type_id > ( expression )
- //
- case 66: {
- action.consumeExpressionCast(ICPPASTCastExpression.op_reinterpret_cast);
- break;
- }
-
- //
- // Rule 67: postfix_expression ::= const_cast < type_id > ( expression )
- //
- case 67: {
- action.consumeExpressionCast(ICPPASTCastExpression.op_const_cast);
- break;
- }
-
- //
- // Rule 68: postfix_expression ::= typeid ( expression )
- //
- case 68: {
- action.consumeExpressionUnaryOperator(ICPPASTUnaryExpression.op_typeid);
- break;
- }
-
- //
- // Rule 69: pseudo_destructor_name ::= dcolon_opt nested_name_specifier_opt type_name :: destructor_type_name
- //
- case 69: {
- action.consumePsudoDestructorName(true);
- break;
- }
-
- //
- // Rule 70: pseudo_destructor_name ::= dcolon_opt nested_name_specifier template template_id_name :: destructor_type_name
- //
- case 70: {
- action.consumePsudoDestructorName(true);
- break;
- }
-
- //
- // Rule 71: pseudo_destructor_name ::= dcolon_opt nested_name_specifier_opt destructor_type_name
- //
- case 71: {
- action.consumePsudoDestructorName(false);
- break;
- }
-
- //
- // Rule 72: destructor_type_name ::= ~ identifier_token
- //
- case 72: {
- action.consumeDestructorName();
- break;
- }
-
- //
- // Rule 73: destructor_type_name ::= ~ template_id_name
- //
- case 73: {
- action.consumeDestructorNameTemplateId();
- break;
- }
-
- //
- // Rule 77: unary_expression ::= ++ cast_expression
- //
- case 77: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixIncr);
- break;
- }
-
- //
- // Rule 78: unary_expression ::= -- cast_expression
- //
- case 78: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixDecr);
- break;
- }
-
- //
- // Rule 79: unary_expression ::= & cast_expression
- //
- case 79: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_amper);
- break;
- }
-
- //
- // Rule 80: unary_expression ::= * cast_expression
- //
- case 80: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_star);
- break;
- }
-
- //
- // Rule 81: unary_expression ::= + cast_expression
- //
- case 81: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_plus);
- break;
- }
-
- //
- // Rule 82: unary_expression ::= - cast_expression
- //
- case 82: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_minus);
- break;
- }
-
- //
- // Rule 83: unary_expression ::= ~ cast_expression
- //
- case 83: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_tilde);
- break;
- }
-
- //
- // Rule 84: unary_expression ::= ! cast_expression
- //
- case 84: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_not);
- break;
- }
-
- //
- // Rule 85: unary_expression ::= sizeof unary_expression
- //
- case 85: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_sizeof);
- break;
- }
-
- //
- // Rule 86: new_expression ::= dcolon_opt new new_placement_opt new_type_id <openscope-ast> new_array_expressions_opt new_initializer_opt
- //
- case 86: {
- action.consumeExpressionNew(true);
- break;
- }
-
- //
- // Rule 87: new_expression ::= dcolon_opt new new_placement_opt ( type_id ) <openscope-ast> new_array_expressions_opt new_initializer_opt
- //
- case 87: {
- action.consumeExpressionNew(false);
- break;
- }
-
- //
- // Rule 89: new_placement_opt ::= $Empty
- //
- case 89: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 90: new_type_id ::= type_specifier_seq
- //
- case 90: {
- action.consumeTypeId(false);
- break;
- }
-
- //
- // Rule 91: new_type_id ::= type_specifier_seq new_declarator
- //
- case 91: {
- action.consumeTypeId(true);
- break;
- }
-
- //
- // Rule 92: new_declarator ::= <openscope-ast> new_pointer_operators
- //
- case 92: {
- action.consumeNewDeclarator();
- break;
- }
-
- //
- // Rule 99: new_initializer ::= ( expression_list_opt )
- //
- case 99: {
- action.consumeNewInitializer();
- break;
- }
-
- //
- // Rule 101: new_initializer_opt ::= $Empty
- //
- case 101: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 102: delete_expression ::= dcolon_opt delete cast_expression
- //
- case 102: {
- action.consumeExpressionDelete(false);
- break;
- }
-
- //
- // Rule 103: delete_expression ::= dcolon_opt delete [ ] cast_expression
- //
- case 103: {
- action.consumeExpressionDelete(true);
- break;
- }
-
- //
- // Rule 105: cast_expression ::= ( type_id ) cast_expression
- //
- case 105: {
- action.consumeExpressionCast(ICPPASTCastExpression.op_cast);
- break;
- }
-
- //
- // Rule 107: pm_expression ::= pm_expression .* cast_expression
- //
- case 107: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_pmdot);
- break;
- }
-
- //
- // Rule 108: pm_expression ::= pm_expression ->* cast_expression
- //
- case 108: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_pmarrow);
- break;
- }
-
- //
- // Rule 110: multiplicative_expression ::= multiplicative_expression * pm_expression
- //
- case 110: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_multiply);
- break;
- }
-
- //
- // Rule 111: multiplicative_expression ::= multiplicative_expression / pm_expression
- //
- case 111: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_divide);
- break;
- }
-
- //
- // Rule 112: multiplicative_expression ::= multiplicative_expression % pm_expression
- //
- case 112: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_modulo);
- break;
- }
-
- //
- // Rule 114: additive_expression ::= additive_expression + multiplicative_expression
- //
- case 114: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_plus);
- break;
- }
-
- //
- // Rule 115: additive_expression ::= additive_expression - multiplicative_expression
- //
- case 115: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_minus);
- break;
- }
-
- //
- // Rule 117: shift_expression ::= shift_expression << additive_expression
- //
- case 117: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftLeft);
- break;
- }
-
- //
- // Rule 118: shift_expression ::= shift_expression >> additive_expression
- //
- case 118: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftRight);
- break;
- }
-
- //
- // Rule 120: relational_expression ::= relational_expression < shift_expression
- //
- case 120: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessThan);
- break;
- }
-
- //
- // Rule 121: relational_expression ::= relational_expression > shift_expression
- //
- case 121: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterThan);
- break;
- }
-
- //
- // Rule 122: relational_expression ::= relational_expression <= shift_expression
- //
- case 122: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessEqual);
- break;
- }
-
- //
- // Rule 123: relational_expression ::= relational_expression >= shift_expression
- //
- case 123: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterEqual);
- break;
- }
-
- //
- // Rule 125: equality_expression ::= equality_expression == relational_expression
- //
- case 125: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_equals);
- break;
- }
-
- //
- // Rule 126: equality_expression ::= equality_expression != relational_expression
- //
- case 126: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_notequals);
- break;
- }
-
- //
- // Rule 128: and_expression ::= and_expression & equality_expression
- //
- case 128: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAnd);
- break;
- }
-
- //
- // Rule 130: exclusive_or_expression ::= exclusive_or_expression ^ and_expression
- //
- case 130: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXor);
- break;
- }
-
- //
- // Rule 132: inclusive_or_expression ::= inclusive_or_expression | exclusive_or_expression
- //
- case 132: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOr);
- break;
- }
-
- //
- // Rule 134: logical_and_expression ::= logical_and_expression && inclusive_or_expression
- //
- case 134: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalAnd);
- break;
- }
-
- //
- // Rule 136: logical_or_expression ::= logical_or_expression || logical_and_expression
- //
- case 136: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalOr);
- break;
- }
-
- //
- // Rule 138: conditional_expression ::= logical_or_expression ? expression : assignment_expression
- //
- case 138: {
- action.consumeExpressionConditional();
- break;
- }
-
- //
- // Rule 140: relational_expression_inTemplate ::= relational_expression_inTemplate < shift_expression
- //
- case 140: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessThan);
- break;
- }
-
- //
- // Rule 141: relational_expression_inTemplate ::= ( relational_expression_inTemplate > shift_expression )
- //
- case 141: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterThan);
- break;
- }
-
- //
- // Rule 142: relational_expression_inTemplate ::= relational_expression_inTemplate <= shift_expression
- //
- case 142: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessEqual);
- break;
- }
-
- //
- // Rule 143: relational_expression_inTemplate ::= relational_expression_inTemplate >= shift_expression
- //
- case 143: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterEqual);
- break;
- }
-
- //
- // Rule 145: equality_expression_inTemplate ::= equality_expression_inTemplate == relational_expression_inTemplate
- //
- case 145: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_equals);
- break;
- }
-
- //
- // Rule 146: equality_expression_inTemplate ::= equality_expression_inTemplate != relational_expression_inTemplate
- //
- case 146: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_notequals);
- break;
- }
-
- //
- // Rule 148: and_expression_inTemplate ::= and_expression_inTemplate & equality_expression_inTemplate
- //
- case 148: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAnd);
- break;
- }
-
- //
- // Rule 150: exclusive_or_expression_inTemplate ::= exclusive_or_expression_inTemplate ^ and_expression_inTemplate
- //
- case 150: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXor);
- break;
- }
-
- //
- // Rule 152: inclusive_or_expression_inTemplate ::= inclusive_or_expression_inTemplate | exclusive_or_expression_inTemplate
- //
- case 152: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOr);
- break;
- }
-
- //
- // Rule 154: logical_and_expression_inTemplate ::= logical_and_expression_inTemplate && inclusive_or_expression_inTemplate
- //
- case 154: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalAnd);
- break;
- }
-
- //
- // Rule 156: logical_or_expression_inTemplate ::= logical_or_expression_inTemplate || logical_and_expression_inTemplate
- //
- case 156: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalOr);
- break;
- }
-
- //
- // Rule 158: conditional_expression_inTemplate ::= logical_or_expression_inTemplate ? expression : assignment_expression_inTemplate
- //
- case 158: {
- action.consumeExpressionConditional();
- break;
- }
-
- //
- // Rule 161: assignment_expression_inTemplate ::= logical_or_expression_inTemplate = assignment_expression_inTemplate
- //
- case 161: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_assign);
- break;
- }
-
- //
- // Rule 162: assignment_expression_inTemplate ::= logical_or_expression_inTemplate *= assignment_expression_inTemplate
- //
- case 162: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_multiplyAssign);
- break;
- }
-
- //
- // Rule 163: assignment_expression_inTemplate ::= logical_or_expression_inTemplate /= assignment_expression_inTemplate
- //
- case 163: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_divideAssign);
- break;
- }
-
- //
- // Rule 164: assignment_expression_inTemplate ::= logical_or_expression_inTemplate %= assignment_expression_inTemplate
- //
- case 164: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_moduloAssign);
- break;
- }
-
- //
- // Rule 165: assignment_expression_inTemplate ::= logical_or_expression_inTemplate += assignment_expression_inTemplate
- //
- case 165: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_plusAssign);
- break;
- }
-
- //
- // Rule 166: assignment_expression_inTemplate ::= logical_or_expression_inTemplate -= assignment_expression_inTemplate
- //
- case 166: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_minusAssign);
- break;
- }
-
- //
- // Rule 167: assignment_expression_inTemplate ::= logical_or_expression_inTemplate >>= assignment_expression_inTemplate
- //
- case 167: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftRightAssign);
- break;
- }
-
- //
- // Rule 168: assignment_expression_inTemplate ::= logical_or_expression_inTemplate <<= assignment_expression_inTemplate
- //
- case 168: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftLeftAssign);
- break;
- }
-
- //
- // Rule 169: assignment_expression_inTemplate ::= logical_or_expression_inTemplate &= assignment_expression_inTemplate
- //
- case 169: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAndAssign);
- break;
- }
-
- //
- // Rule 170: assignment_expression_inTemplate ::= logical_or_expression_inTemplate ^= assignment_expression_inTemplate
- //
- case 170: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXorAssign);
- break;
- }
-
- //
- // Rule 171: assignment_expression_inTemplate ::= logical_or_expression_inTemplate |= assignment_expression_inTemplate
- //
- case 171: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOrAssign);
- break;
- }
-
- //
- // Rule 172: throw_expression ::= throw
- //
- case 172: {
- action.consumeExpressionThrow(false);
- break;
- }
-
- //
- // Rule 173: throw_expression ::= throw assignment_expression
- //
- case 173: {
- action.consumeExpressionThrow(true);
- break;
- }
-
- //
- // Rule 176: assignment_expression ::= logical_or_expression = assignment_expression
- //
- case 176: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_assign);
- break;
- }
-
- //
- // Rule 177: assignment_expression ::= logical_or_expression *= assignment_expression
- //
- case 177: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_multiplyAssign);
- break;
- }
-
- //
- // Rule 178: assignment_expression ::= logical_or_expression /= assignment_expression
- //
- case 178: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_divideAssign);
- break;
- }
-
- //
- // Rule 179: assignment_expression ::= logical_or_expression %= assignment_expression
- //
- case 179: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_moduloAssign);
- break;
- }
-
- //
- // Rule 180: assignment_expression ::= logical_or_expression += assignment_expression
- //
- case 180: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_plusAssign);
- break;
- }
-
- //
- // Rule 181: assignment_expression ::= logical_or_expression -= assignment_expression
- //
- case 181: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_minusAssign);
- break;
- }
-
- //
- // Rule 182: assignment_expression ::= logical_or_expression >>= assignment_expression
- //
- case 182: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftRightAssign);
- break;
- }
-
- //
- // Rule 183: assignment_expression ::= logical_or_expression <<= assignment_expression
- //
- case 183: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftLeftAssign);
- break;
- }
-
- //
- // Rule 184: assignment_expression ::= logical_or_expression &= assignment_expression
- //
- case 184: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAndAssign);
- break;
- }
-
- //
- // Rule 185: assignment_expression ::= logical_or_expression ^= assignment_expression
- //
- case 185: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXorAssign);
- break;
- }
-
- //
- // Rule 186: assignment_expression ::= logical_or_expression |= assignment_expression
- //
- case 186: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOrAssign);
- break;
- }
-
- //
- // Rule 188: expression_list ::= <openscope-ast> expression_list_actual
- //
- case 188: {
- action.consumeExpressionList();
- break;
- }
-
- //
- // Rule 192: expression_list_opt ::= $Empty
- //
- case 192: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 194: expression_opt ::= $Empty
- //
- case 194: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 197: constant_expression_opt ::= $Empty
- //
- case 197: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 206: statement ::= ERROR_TOKEN
- //
- case 206: {
- action.consumeStatementProblem();
- break;
- }
-
- //
- // Rule 207: labeled_statement ::= identifier : statement
- //
- case 207: {
- action.consumeStatementLabeled();
- break;
- }
-
- //
- // Rule 208: labeled_statement ::= case constant_expression : statement
- //
- case 208: {
- action.consumeStatementCase();
- break;
- }
-
- //
- // Rule 209: labeled_statement ::= default : statement
- //
- case 209: {
- action.consumeStatementDefault();
- break;
- }
-
- //
- // Rule 210: expression_statement ::= expression ;
- //
- case 210: {
- action.consumeStatementExpression();
- break;
- }
-
- //
- // Rule 211: expression_statement ::= ;
- //
- case 211: {
- action.consumeStatementNull();
- break;
- }
-
- //
- // Rule 212: compound_statement ::= { <openscope-ast> statement_seq }
- //
- case 212: {
- action.consumeStatementCompoundStatement(true);
- break;
- }
-
- //
- // Rule 213: compound_statement ::= { }
- //
- case 213: {
- action.consumeStatementCompoundStatement(false);
- break;
- }
-
- //
- // Rule 216: selection_statement ::= if ( condition ) statement
- //
- case 216: {
- action.consumeStatementIf(false);
- break;
- }
-
- //
- // Rule 217: selection_statement ::= if ( condition ) statement else statement
- //
- case 217: {
- action.consumeStatementIf(true);
- break;
- }
-
- //
- // Rule 218: selection_statement ::= switch ( condition ) statement
- //
- case 218: {
- action.consumeStatementSwitch();
- break;
- }
-
- //
- // Rule 220: condition ::= type_specifier_seq declarator = assignment_expression
- //
- case 220: {
- action.consumeConditionDeclaration();
- break;
- }
-
- //
- // Rule 222: condition_opt ::= $Empty
- //
- case 222: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 223: iteration_statement ::= while ( condition ) statement
- //
- case 223: {
- action.consumeStatementWhileLoop();
- break;
- }
-
- //
- // Rule 224: iteration_statement ::= do statement while ( expression ) ;
- //
- case 224: {
- action.consumeStatementDoLoop(true);
- break;
- }
-
- //
- // Rule 225: iteration_statement ::= do statement
- //
- case 225: {
- action.consumeStatementDoLoop(false);
- break;
- }
-
- //
- // Rule 226: iteration_statement ::= for ( for_init_statement condition_opt ; expression_opt ) statement
- //
- case 226: {
- action.consumeStatementForLoop();
- break;
- }
-
- //
- // Rule 228: for_init_statement ::= simple_declaration_with_declspec
- //
- case 228: {
- action.consumeStatementDeclaration();
- break;
- }
-
- //
- // Rule 229: jump_statement ::= break ;
- //
- case 229: {
- action.consumeStatementBreak();
- break;
- }
-
- //
- // Rule 230: jump_statement ::= continue ;
- //
- case 230: {
- action.consumeStatementContinue();
- break;
- }
-
- //
- // Rule 231: jump_statement ::= return expression ;
- //
- case 231: {
- action.consumeStatementReturn(true);
- break;
- }
-
- //
- // Rule 232: jump_statement ::= return ;
- //
- case 232: {
- action.consumeStatementReturn(false);
- break;
- }
-
- //
- // Rule 233: jump_statement ::= goto identifier_token ;
- //
- case 233: {
- action.consumeStatementGoto();
- break;
- }
-
- //
- // Rule 234: declaration_statement ::= block_declaration
- //
- case 234: {
- action.consumeStatementDeclarationWithDisambiguation();
- break;
- }
-
- //
- // Rule 235: declaration_statement ::= function_definition
- //
- case 235: {
- action.consumeStatementDeclaration();
- break;
- }
-
- //
- // Rule 243: declaration ::= ERROR_TOKEN
- //
- case 243: {
- action.consumeDeclarationProblem();
- break;
- }
-
- //
- // Rule 253: simple_declaration ::= declaration_specifiers_opt <openscope-ast> init_declarator_list_opt ;
- //
- case 253: {
- action.consumeDeclarationSimple(true);
- break;
- }
-
- //
- // Rule 254: simple_declaration_with_declspec ::= declaration_specifiers <openscope-ast> init_declarator_list_opt ;
- //
- case 254: {
- action.consumeDeclarationSimple(true);
- break;
- }
-
- //
- // Rule 255: declaration_specifiers ::= <openscope-ast> simple_declaration_specifiers
- //
- case 255: {
- action.consumeDeclarationSpecifiersSimple();
- break;
- }
-
- //
- // Rule 256: declaration_specifiers ::= <openscope-ast> class_declaration_specifiers
- //
- case 256: {
- action.consumeDeclarationSpecifiersComposite();
- break;
- }
-
- //
- // Rule 257: declaration_specifiers ::= <openscope-ast> elaborated_declaration_specifiers
- //
- case 257: {
- action.consumeDeclarationSpecifiersComposite();
- break;
- }
-
- //
- // Rule 258: declaration_specifiers ::= <openscope-ast> enum_declaration_specifiers
- //
- case 258: {
- action.consumeDeclarationSpecifiersComposite();
- break;
- }
-
- //
- // Rule 259: declaration_specifiers ::= <openscope-ast> type_name_declaration_specifiers
- //
- case 259: {
- action.consumeDeclarationSpecifiersTypeName();
- break;
- }
-
- //
- // Rule 261: declaration_specifiers_opt ::= $Empty
- //
- case 261: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 265: no_type_declaration_specifier ::= friend
- //
- case 265: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 266: no_type_declaration_specifier ::= typedef
- //
- case 266: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 286: storage_class_specifier ::= auto
- //
- case 286: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 287: storage_class_specifier ::= register
- //
- case 287: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 288: storage_class_specifier ::= static
- //
- case 288: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 289: storage_class_specifier ::= extern
- //
- case 289: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 290: storage_class_specifier ::= mutable
- //
- case 290: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 291: function_specifier ::= inline
- //
- case 291: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 292: function_specifier ::= virtual
- //
- case 292: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 293: function_specifier ::= explicit
- //
- case 293: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 294: simple_type_specifier ::= simple_type_specifier_token
- //
- case 294: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 308: type_name_specifier ::= dcolon_opt nested_name_specifier_opt type_name
- //
- case 308: {
- action.consumeQualifiedId(false);
- break;
- }
-
- //
- // Rule 309: type_name_specifier ::= dcolon_opt nested_name_specifier template template_id_name
- //
- case 309: {
- action.consumeQualifiedId(false);
- break;
- }
-
- //
- // Rule 310: type_name_specifier ::= typename dcolon_opt nested_name_specifier identifier_name
- //
- case 310: {
- action.consumeQualifiedId(false);
- break;
- }
-
- //
- // Rule 311: type_name_specifier ::= typename dcolon_opt nested_name_specifier template_opt template_id_name
- //
- case 311: {
- action.consumeQualifiedId(true);
- break;
- }
-
- //
- // Rule 313: elaborated_type_specifier ::= class_keyword elaborated_specifier_hook dcolon_opt nested_name_specifier_opt identifier_name
- //
- case 313: {
- action.consumeTypeSpecifierElaborated(false);
- break;
- }
-
- //
- // Rule 314: elaborated_type_specifier ::= class_keyword elaborated_specifier_hook dcolon_opt nested_name_specifier_opt template_opt template_id_name
- //
- case 314: {
- action.consumeTypeSpecifierElaborated(true);
- break;
- }
-
- //
- // Rule 315: elaborated_type_specifier ::= enum elaborated_specifier_hook dcolon_opt nested_name_specifier_opt identifier_name
- //
- case 315: {
- action.consumeTypeSpecifierElaborated(false);
- break;
- }
-
- //
- // Rule 319: enum_specifier ::= enum enum_specifier_hook { <openscope-ast> enumerator_list_opt comma_opt }
- //
- case 319: {
- action.consumeTypeSpecifierEnumeration(false);
- break;
- }
-
- //
- // Rule 320: enum_specifier ::= enum enum_specifier_hook identifier_token { <openscope-ast> enumerator_list_opt comma_opt }
- //
- case 320: {
- action.consumeTypeSpecifierEnumeration(true);
- break;
- }
-
- //
- // Rule 326: enumerator_definition ::= identifier_token
- //
- case 326: {
- action.consumeEnumerator(false);
- break;
- }
-
- //
- // Rule 327: enumerator_definition ::= identifier_token = constant_expression
- //
- case 327: {
- action.consumeEnumerator(true);
- break;
- }
-
- //
- // Rule 329: namespace_definition ::= namespace namespace_name namespace_definition_hook { <openscope-ast> declaration_seq_opt }
- //
- case 329: {
- action.consumeNamespaceDefinition(true);
- break;
- }
-
- //
- // Rule 330: namespace_definition ::= namespace namespace_definition_hook { <openscope-ast> declaration_seq_opt }
- //
- case 330: {
- action.consumeNamespaceDefinition(false);
- break;
- }
-
- //
- // Rule 332: namespace_alias_definition ::= namespace identifier_token = dcolon_opt nested_name_specifier_opt namespace_name ;
- //
- case 332: {
- action.consumeNamespaceAliasDefinition();
- break;
- }
-
- //
- // Rule 333: using_declaration ::= using typename_opt dcolon_opt nested_name_specifier_opt unqualified_id_name ;
- //
- case 333: {
- action.consumeUsingDeclaration();
- break;
- }
-
- //
- // Rule 334: typename_opt ::= typename
- //
- case 334: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 335: typename_opt ::= $Empty
- //
- case 335: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 336: using_directive ::= using namespace dcolon_opt nested_name_specifier_opt namespace_name ;
- //
- case 336: {
- action.consumeUsingDirective();
- break;
- }
-
- //
- // Rule 337: asm_definition ::= asm ( stringlit ) ;
- //
- case 337: {
- action.consumeDeclarationASM();
- break;
- }
-
- //
- // Rule 338: linkage_specification ::= extern stringlit { <openscope-ast> declaration_seq_opt }
- //
- case 338: {
- action.consumeLinkageSpecification();
- break;
- }
-
- //
- // Rule 339: linkage_specification ::= extern stringlit <openscope-ast> declaration
- //
- case 339: {
- action.consumeLinkageSpecification();
- break;
- }
-
- //
- // Rule 344: init_declarator_complete ::= init_declarator
- //
- case 344: {
- action.consumeInitDeclaratorComplete();
- break;
- }
-
- //
- // Rule 346: init_declarator ::= complete_declarator initializer
- //
- case 346: {
- action.consumeDeclaratorWithInitializer(true);
- break;
- }
-
- //
- // Rule 349: declarator ::= <openscope-ast> ptr_operator_seq direct_declarator
- //
- case 349: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 351: function_declarator ::= <openscope-ast> ptr_operator_seq direct_declarator
- //
- case 351: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 355: basic_direct_declarator ::= declarator_id_name
- //
- case 355: {
- action.consumeDirectDeclaratorIdentifier();
- break;
- }
-
- //
- // Rule 356: basic_direct_declarator ::= ( declarator )
- //
- case 356: {
- action.consumeDirectDeclaratorBracketed();
- break;
- }
-
- //
- // Rule 357: function_direct_declarator ::= basic_direct_declarator ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
- //
- case 357: {
- action.consumeDirectDeclaratorFunctionDeclarator(true);
- break;
- }
-
- //
- // Rule 358: array_direct_declarator ::= array_direct_declarator array_modifier
- //
- case 358: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 359: array_direct_declarator ::= basic_direct_declarator array_modifier
- //
- case 359: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 360: array_modifier ::= [ constant_expression ]
- //
- case 360: {
- action.consumeDirectDeclaratorArrayModifier(true);
- break;
- }
-
- //
- // Rule 361: array_modifier ::= [ ]
- //
- case 361: {
- action.consumeDirectDeclaratorArrayModifier(false);
- break;
- }
-
- //
- // Rule 362: ptr_operator ::= pointer_hook * pointer_hook <openscope-ast> cv_qualifier_seq_opt
- //
- case 362: {
- action.consumePointer();
- break;
- }
-
- //
- // Rule 363: ptr_operator ::= pointer_hook & pointer_hook
- //
- case 363: {
- action.consumeReferenceOperator();
- break;
- }
-
- //
- // Rule 364: ptr_operator ::= dcolon_opt nested_name_specifier pointer_hook * pointer_hook <openscope-ast> cv_qualifier_seq_opt
- //
- case 364: {
- action.consumePointerToMember();
- break;
- }
-
- //
- // Rule 371: cv_qualifier ::= const
- //
- case 371: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 372: cv_qualifier ::= volatile
- //
- case 372: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 374: declarator_id_name ::= dcolon_opt nested_name_specifier_opt type_name
- //
- case 374: {
- action.consumeQualifiedId(false);
- break;
- }
-
- //
- // Rule 375: type_id ::= type_specifier_seq
- //
- case 375: {
- action.consumeTypeId(false);
- break;
- }
-
- //
- // Rule 376: type_id ::= type_specifier_seq abstract_declarator
- //
- case 376: {
- action.consumeTypeId(true);
- break;
- }
-
- //
- // Rule 379: abstract_declarator ::= <openscope-ast> ptr_operator_seq
- //
- case 379: {
- action.consumeDeclaratorWithPointer(false);
- break;
- }
-
- //
- // Rule 380: abstract_declarator ::= <openscope-ast> ptr_operator_seq direct_abstract_declarator
- //
- case 380: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 384: basic_direct_abstract_declarator ::= ( abstract_declarator )
- //
- case 384: {
- action.consumeDirectDeclaratorBracketed();
- break;
- }
-
- //
- // Rule 385: basic_direct_abstract_declarator ::= ( )
- //
- case 385: {
- action.consumeAbstractDeclaratorEmpty();
- break;
- }
-
- //
- // Rule 386: array_direct_abstract_declarator ::= array_modifier
- //
- case 386: {
- action.consumeDirectDeclaratorArrayDeclarator(false);
- break;
- }
-
- //
- // Rule 387: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier
- //
- case 387: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 388: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier
- //
- case 388: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 389: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
- //
- case 389: {
- action.consumeDirectDeclaratorFunctionDeclarator(true);
- break;
- }
-
- //
- // Rule 390: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
- //
- case 390: {
- action.consumeDirectDeclaratorFunctionDeclarator(false);
- break;
- }
-
- //
- // Rule 391: parameter_declaration_clause ::= parameter_declaration_list_opt ...
- //
- case 391: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 392: parameter_declaration_clause ::= parameter_declaration_list_opt
- //
- case 392: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 393: parameter_declaration_clause ::= parameter_declaration_list , ...
- //
- case 393: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 399: abstract_declarator_opt ::= $Empty
- //
- case 399: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 400: parameter_declaration ::= declaration_specifiers parameter_init_declarator
- //
- case 400: {
- action.consumeParameterDeclaration();
- break;
- }
-
- //
- // Rule 401: parameter_declaration ::= declaration_specifiers
- //
- case 401: {
- action.consumeParameterDeclarationWithoutDeclarator();
- break;
- }
-
- //
- // Rule 403: parameter_init_declarator ::= declarator = parameter_initializer
- //
- case 403: {
- action.consumeDeclaratorWithInitializer(true);
- break;
- }
-
- //
- // Rule 405: parameter_init_declarator ::= abstract_declarator = parameter_initializer
- //
- case 405: {
- action.consumeDeclaratorWithInitializer(true);
- break;
- }
-
- //
- // Rule 406: parameter_init_declarator ::= = parameter_initializer
- //
- case 406: {
- action.consumeDeclaratorWithInitializer(false);
- break;
- }
-
- //
- // Rule 407: parameter_initializer ::= assignment_expression
- //
- case 407: {
- action.consumeInitializer();
- break;
- }
-
- //
- // Rule 408: function_definition ::= declaration_specifiers_opt function_declarator <openscope-ast> ctor_initializer_list_opt function_body
- //
- case 408: {
- action.consumeFunctionDefinition(false);
- break;
- }
-
- //
- // Rule 409: function_definition ::= declaration_specifiers_opt function_declarator try <openscope-ast> ctor_initializer_list_opt function_body <openscope-ast> handler_seq
- //
- case 409: {
- action.consumeFunctionDefinition(true);
- break;
- }
-
- //
- // Rule 412: initializer ::= ( expression_list )
- //
- case 412: {
- action.consumeInitializerConstructor();
- break;
- }
-
- //
- // Rule 413: initializer_clause ::= assignment_expression
- //
- case 413: {
- action.consumeInitializer();
- break;
- }
-
- //
- // Rule 414: initializer_clause ::= initializer_list
- //
- case 414: {
- action.consumeInitializer();
- break;
- }
-
- //
- // Rule 415: initializer_list ::= start_initializer_list { <openscope-ast> initializer_seq , } end_initializer_list
- //
- case 415: {
- action.consumeInitializerList();
- break;
- }
-
- //
- // Rule 416: initializer_list ::= start_initializer_list { <openscope-ast> initializer_seq } end_initializer_list
- //
- case 416: {
- action.consumeInitializerList();
- break;
- }
-
- //
- // Rule 417: initializer_list ::= { <openscope-ast> }
- //
- case 417: {
- action.consumeInitializerList();
- break;
- }
-
- //
- // Rule 418: start_initializer_list ::= $Empty
- //
- case 418: {
- action.initializerListStart();
- break;
- }
-
- //
- // Rule 419: end_initializer_list ::= $Empty
- //
- case 419: {
- action.initializerListEnd();
- break;
- }
-
- //
- // Rule 424: class_specifier ::= class_head { <openscope-ast> member_declaration_list_opt }
- //
- case 424: {
- action.consumeClassSpecifier();
- break;
- }
-
- //
- // Rule 425: class_head ::= class_keyword composite_specifier_hook identifier_name_opt class_name_suffix_hook <openscope-ast> base_clause_opt
- //
- case 425: {
- action.consumeClassHead(false);
- break;
- }
-
- //
- // Rule 426: class_head ::= class_keyword composite_specifier_hook template_id_name class_name_suffix_hook <openscope-ast> base_clause_opt
- //
- case 426: {
- action.consumeClassHead(false);
- break;
- }
-
- //
- // Rule 427: class_head ::= class_keyword composite_specifier_hook nested_name_specifier identifier_name class_name_suffix_hook <openscope-ast> base_clause_opt
- //
- case 427: {
- action.consumeClassHead(true);
- break;
- }
-
- //
- // Rule 428: class_head ::= class_keyword composite_specifier_hook nested_name_specifier template_id_name class_name_suffix_hook <openscope-ast> base_clause_opt
- //
- case 428: {
- action.consumeClassHead(true);
- break;
- }
-
- //
- // Rule 432: identifier_name_opt ::= $Empty
- //
- case 432: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 436: visibility_label ::= access_specifier_keyword :
- //
- case 436: {
- action.consumeVisibilityLabel();
- break;
- }
-
- //
- // Rule 437: member_declaration ::= declaration_specifiers_opt <openscope-ast> member_declarator_list ;
- //
- case 437: {
- action.consumeDeclarationSimple(true);
- break;
- }
-
- //
- // Rule 438: member_declaration ::= declaration_specifiers_opt ;
- //
- case 438: {
- action.consumeDeclarationSimple(false);
- break;
- }
-
- //
- // Rule 441: member_declaration ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name ;
- //
- case 441: {
- action.consumeMemberDeclarationQualifiedId();
- break;
- }
-
- //
- // Rule 447: member_declaration ::= ERROR_TOKEN
- //
- case 447: {
- action.consumeDeclarationProblem();
- break;
- }
-
- //
- // Rule 456: member_declarator ::= declarator constant_initializer
- //
- case 456: {
- action.consumeMemberDeclaratorWithInitializer();
- break;
- }
-
- //
- // Rule 457: member_declarator ::= bit_field_declarator : constant_expression
- //
- case 457: {
- action.consumeBitField(true);
- break;
- }
-
- //
- // Rule 458: member_declarator ::= : constant_expression
- //
- case 458: {
- action.consumeBitField(false);
- break;
- }
-
- //
- // Rule 459: bit_field_declarator ::= identifier_name
- //
- case 459: {
- action.consumeDirectDeclaratorIdentifier();
- break;
- }
-
- //
- // Rule 460: constant_initializer ::= = constant_expression
- //
- case 460: {
- action.consumeInitializer();
- break;
- }
-
- //
- // Rule 466: base_specifier ::= dcolon_opt nested_name_specifier_opt class_name
- //
- case 466: {
- action.consumeBaseSpecifier(false, false);
- break;
- }
-
- //
- // Rule 467: base_specifier ::= virtual access_specifier_keyword_opt dcolon_opt nested_name_specifier_opt class_name
- //
- case 467: {
- action.consumeBaseSpecifier(true, true);
- break;
- }
-
- //
- // Rule 468: base_specifier ::= access_specifier_keyword virtual dcolon_opt nested_name_specifier_opt class_name
- //
- case 468: {
- action.consumeBaseSpecifier(true, true);
- break;
- }
-
- //
- // Rule 469: base_specifier ::= access_specifier_keyword dcolon_opt nested_name_specifier_opt class_name
- //
- case 469: {
- action.consumeBaseSpecifier(true, false);
- break;
- }
-
- //
- // Rule 470: access_specifier_keyword ::= private
- //
- case 470: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 471: access_specifier_keyword ::= protected
- //
- case 471: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 472: access_specifier_keyword ::= public
- //
- case 472: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 474: access_specifier_keyword_opt ::= $Empty
- //
- case 474: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 476: conversion_function_id_name ::= conversion_function_id < <openscope-ast> template_argument_list_opt >
- //
- case 476: {
- action.consumeTemplateId();
- break;
- }
-
- //
- // Rule 477: conversion_function_id ::= operator conversion_type_id
- //
- case 477: {
- action.consumeConversionName();
- break;
- }
-
- //
- // Rule 478: conversion_type_id ::= type_specifier_seq conversion_declarator
- //
- case 478: {
- action.consumeTypeId(true);
- break;
- }
-
- //
- // Rule 479: conversion_type_id ::= type_specifier_seq
- //
- case 479: {
- action.consumeTypeId(false);
- break;
- }
-
- //
- // Rule 480: conversion_declarator ::= <openscope-ast> ptr_operator_seq
- //
- case 480: {
- action.consumeDeclaratorWithPointer(false);
- break;
- }
-
- //
- // Rule 486: mem_initializer ::= mem_initializer_name ( expression_list_opt )
- //
- case 486: {
- action.consumeConstructorChainInitializer();
- break;
- }
-
- //
- // Rule 487: mem_initializer_name ::= dcolon_opt nested_name_specifier_opt class_name
- //
- case 487: {
- action.consumeQualifiedId(false);
- break;
- }
-
- //
- // Rule 490: operator_function_id_name ::= operator_id_name < <openscope-ast> template_argument_list_opt >
- //
- case 490: {
- action.consumeTemplateId();
- break;
- }
-
- //
- // Rule 491: operator_id_name ::= operator overloadable_operator
- //
- case 491: {
- action.consumeOperatorName();
- break;
- }
-
- //
- // Rule 534: template_declaration ::= export_opt template < <openscope-ast> template_parameter_list > declaration
- //
- case 534: {
- action.consumeTemplateDeclaration();
- break;
- }
-
- //
- // Rule 535: export_opt ::= export
- //
- case 535: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 536: export_opt ::= $Empty
- //
- case 536: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 540: template_parameter ::= parameter_declaration
- //
- case 540: {
- action.consumeTemplateParamterDeclaration();
- break;
- }
-
- //
- // Rule 541: type_parameter ::= class identifier_name_opt
- //
- case 541: {
- action.consumeSimpleTypeTemplateParameter(false);
- break;
- }
-
- //
- // Rule 542: type_parameter ::= class identifier_name_opt = type_id
- //
- case 542: {
- action.consumeSimpleTypeTemplateParameter(true);
- break;
- }
-
- //
- // Rule 543: type_parameter ::= typename identifier_name_opt
- //
- case 543: {
- action.consumeSimpleTypeTemplateParameter(false);
- break;
- }
-
- //
- // Rule 544: type_parameter ::= typename identifier_name_opt = type_id
- //
- case 544: {
- action.consumeSimpleTypeTemplateParameter(true);
- break;
- }
-
- //
- // Rule 545: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt
- //
- case 545: {
- action.consumeTemplatedTypeTemplateParameter(false);
- break;
- }
-
- //
- // Rule 546: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt = id_expression
- //
- case 546: {
- action.consumeTemplatedTypeTemplateParameter(true);
- break;
- }
-
- //
- // Rule 547: template_id_name ::= identifier_name < <openscope-ast> template_argument_list_opt >
- //
- case 547: {
- action.consumeTemplateId();
- break;
- }
-
- //
- // Rule 554: nested_name_specifier_inTemplate ::= class_or_namespace_name_inTemplate :: nested_name_specifier_with_template_inTemplate
- //
- case 554: {
- action.consumeNestedNameSpecifier(true);
- break;
- }
-
- //
- // Rule 555: nested_name_specifier_inTemplate ::= class_or_namespace_name_inTemplate ::
- //
- case 555: {
- action.consumeNestedNameSpecifier(false);
- break;
- }
-
- //
- // Rule 556: nested_name_specifier_with_template_inTemplate ::= class_or_namespace_name_with_template_inTemplate :: nested_name_specifier_with_template_inTemplate
- //
- case 556: {
- action.consumeNestedNameSpecifier(true);
- break;
- }
-
- //
- // Rule 557: nested_name_specifier_with_template_inTemplate ::= class_or_namespace_name_with_template_inTemplate ::
- //
- case 557: {
- action.consumeNestedNameSpecifier(false);
- break;
- }
-
- //
- // Rule 558: class_or_namespace_name_with_template_inTemplate ::= template_opt class_or_namespace_name_inTemplate
- //
- case 558: {
- action.consumeNameWithTemplateKeyword();
- break;
- }
-
- //
- // Rule 560: nested_name_specifier_opt_inTemplate ::= $Empty
- //
- case 560: {
- action.consumeNestedNameSpecifierEmpty();
- break;
- }
-
- //
- // Rule 563: type_name_specifier_inTemplate ::= typename dcolon_opt nested_name_specifier identifier_name
- //
- case 563: {
- action.consumeQualifiedId(false);
- break;
- }
-
- //
- // Rule 564: type_name_specifier_inTemplate ::= typename dcolon_opt nested_name_specifier template_opt template_id_name
- //
- case 564: {
- action.consumeQualifiedId(true);
- break;
- }
-
- //
- // Rule 569: declaration_specifiers_inTemplate ::= <openscope-ast> simple_declaration_specifiers
- //
- case 569: {
- action.consumeDeclarationSpecifiersSimple();
- break;
- }
-
- //
- // Rule 570: declaration_specifiers_inTemplate ::= <openscope-ast> class_declaration_specifiers
- //
- case 570: {
- action.consumeDeclarationSpecifiersComposite();
- break;
- }
-
- //
- // Rule 571: declaration_specifiers_inTemplate ::= <openscope-ast> elaborated_declaration_specifiers
- //
- case 571: {
- action.consumeDeclarationSpecifiersComposite();
- break;
- }
-
- //
- // Rule 572: declaration_specifiers_inTemplate ::= <openscope-ast> enum_declaration_specifiers
- //
- case 572: {
- action.consumeDeclarationSpecifiersComposite();
- break;
- }
-
- //
- // Rule 573: declaration_specifiers_inTemplate ::= <openscope-ast> type_name_declaration_specifiers_inTemplate
- //
- case 573: {
- action.consumeDeclarationSpecifiersTypeName();
- break;
- }
-
- //
- // Rule 575: type_id_inTemplate ::= type_specifier_seq_inTemplate
- //
- case 575: {
- action.consumeTypeId(false);
- break;
- }
-
- //
- // Rule 576: type_id_inTemplate ::= type_specifier_seq_inTemplate abstract_declarator
- //
- case 576: {
- action.consumeTypeId(true);
- break;
- }
-
- //
- // Rule 577: template_argument ::= assignment_expression_inTemplate
- //
- case 577: {
- action.consumeTemplateArgumentExpression();
- break;
- }
-
- //
- // Rule 578: template_argument ::= type_id_inTemplate
- //
- case 578: {
- action.consumeTemplateArgumentTypeId();
- break;
- }
-
- //
- // Rule 579: explicit_instantiation ::= template declaration
- //
- case 579: {
- action.consumeTemplateExplicitInstantiation();
- break;
- }
-
- //
- // Rule 580: explicit_specialization ::= template < > declaration
- //
- case 580: {
- action.consumeTemplateExplicitSpecialization();
- break;
- }
-
- //
- // Rule 581: try_block ::= try compound_statement <openscope-ast> handler_seq
- //
- case 581: {
- action.consumeStatementTryBlock(true);
- break;
- }
-
- //
- // Rule 582: try_block ::= try compound_statement
- //
- case 582: {
- action.consumeStatementTryBlock(false);
- break;
- }
-
- //
- // Rule 585: handler ::= catch ( exception_declaration ) compound_statement
- //
- case 585: {
- action.consumeStatementCatchHandler(false);
- break;
- }
-
- //
- // Rule 586: handler ::= catch ( ... ) compound_statement
- //
- case 586: {
- action.consumeStatementCatchHandler(true);
- break;
- }
-
- //
- // Rule 587: exception_declaration ::= type_specifier_seq <openscope-ast> declarator
- //
- case 587: {
- action.consumeDeclarationSimple(true);
- break;
- }
-
- //
- // Rule 588: exception_declaration ::= type_specifier_seq <openscope-ast> abstract_declarator
- //
- case 588: {
- action.consumeDeclarationSimple(true);
- break;
- }
-
- //
- // Rule 589: exception_declaration ::= type_specifier_seq
- //
- case 589: {
- action.consumeDeclarationSimple(false);
- break;
- }
-
- //
- // Rule 591: exception_specification ::= throw ( )
- //
- case 591: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 597: no_sizeof_type_id_start ::= ERROR_TOKEN
- //
- case 597: {
- action.consumeEmpty();
- break;
- }
-
- default:
- break;
- }
- return;
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPSizeofExpressionParserprs.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPSizeofExpressionParserprs.java
deleted file mode 100644
index 5f1d9ae7661..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPSizeofExpressionParserprs.java
+++ /dev/null
@@ -1,1555 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2015 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.dom.lrparser.cpp;
-
-public class CPPSizeofExpressionParserprs implements lpg.lpgjavaruntime.ParseTable, CPPSizeofExpressionParsersym {
-
- public interface IsKeyword {
- public final static byte isKeyword[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static byte isKeyword[] = IsKeyword.isKeyword;
-
- public final boolean isKeyword(int index) {
- return isKeyword[index] != 0;
- }
-
- public interface BaseCheck {
- public final static short baseCheck[] = { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 0, 1, 0, 4, 2, 3, 2, 3, 2, 2, 1, 0, 1, 1, 4, 4, 4, 8, 8, 3, 3,
- 4, 4, 3, 3, 2, 2, 7, 7, 7, 7, 4, 5, 6, 3, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 7, 9, 3, 0, 1, 2, 2,
- 1, 2, 3, 4, 1, 0, 3, 1, 0, 3, 5, 1, 4, 1, 3, 3, 1, 3, 3, 3, 1, 3, 3, 1, 3, 3, 1, 3, 3, 3, 3, 1, 3, 3, 1,
- 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 5, 1, 3, 5, 3, 3, 1, 3, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 5, 1, 1, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 2, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 2, 1, 3, 1, 0, 1, 0, 1, 1, 0,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 4, 3, 2, 1, 4, 2, 1, 2, 5, 7, 5, 1, 4, 1, 0, 5, 7, 2, 8, 1, 1, 2, 2, 3, 2,
- 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 0, 4, 4, 2, 2, 2, 2, 2, 1, 0, 1, 1, 1, 1, 1, 1,
- 2, 1, 2, 2, 2, 1, 1, 2, 2, 1, 2, 2, 1, 2, 2, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 3, 4, 4, 5, 2, 5, 6, 5, 0, 1, 0, 7, 8, 0, 1, 3, 1, 0, 1, 3, 1, 7, 6, 0, 7, 6, 1, 0, 6, 5,
- 6, 4, 1, 3, 1, 0, 1, 1, 2, 1, 1, 3, 1, 3, 1, 1, 1, 1, 3, 9, 2, 2, 3, 2, 5, 3, 7, 0, 1, 2, 2, 1, 0, 1, 1,
- 1, 3, 1, 2, 1, 1, 2, 3, 1, 1, 1, 3, 2, 1, 2, 2, 9, 8, 2, 1, 3, 1, 3, 1, 0, 1, 0, 2, 1, 1, 3, 1, 3, 2, 1,
- 5, 8, 1, 2, 3, 1, 1, 7, 6, 3, 0, 0, 1, 3, 1, 1, 5, 6, 6, 7, 7, 0, 0, 1, 0, 1, 1, 1, 2, 4, 2, 2, 1, 5, 1,
- 1, 1, 1, 1, 1, 1, 2, 1, 0, 1, 3, 1, 1, 2, 3, 2, 1, 2, 2, 1, 0, 1, 3, 3, 5, 5, 4, 1, 1, 1, 1, 0, 1, 5, 2,
- 2, 1, 2, 2, 1, 0, 1, 3, 4, 3, 1, 1, 5, 2, 1, 1, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 7, 1, 0, 1, 3, 1, 1, 2, 4, 2, 4, 7, 9, 5,
- 1, 3, 1, 0, 1, 1, 3, 2, 3, 2, 2, 1, 0, 1, 1, 4, 5, 2, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 1, 1, 2, 4, 4, 2,
- 1, 2, 5, 5, 3, 3, 1, 4, 3, 1, 0, 1, 3, 1, 1, -62, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -4, -10, 0, 0, 0, 0, 0, 0, 0, -123, 0, 0, -5, 0, 0, -472, 0, 0, 0, 0, -279, 0,
- 0, -136, 0, -137, -594, -428, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, 0, 0, 0, 0, -6, 0, -18, 0, 0, 0,
- -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -282, 0, 0,
- 0, 0, 0, 0, -49, -42, 0, 0, -61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -415, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -126, 0, 0, 0, 0, 0, -196, 0, 0, 0, -115, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -53, 0, 0, 0, 0, 0, 0,
- -522, 0, 0, 0, -58, 0, 0, 0, 0, -7, 0, 0, 0, 0, 0, 0, -121, 0, -385, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -8, -130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -260, 0, 0,
- -128, 0, -72, 0, 0, 0, 0, -9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, -50, -54, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -596, 0, 0, 0, 0, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -261, -47, 0, 0, 0,
- -259, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, -65, 0,
- 0, 0, 0, 0, 0, -325, 0, 0, 0, -444, -141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -311, 0, 0, -11, 0, 0, 0,
- 0, 0, 0, 0, -571, 0, 0, 0, 0, -262, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -12,
- 0, 0, 0, 0, 0, 0, 0, 0, -13, 0, 0, 0, 0, 0, 0, -177, 0, 0, 0, -16, 0, 0, 0, -526, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -595, 0, 0, 0, 0, -510, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -197, 0, 0, -215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -272, 0, 0, 0, 0, -92, 0, 0, 0, 0, -367, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, -502, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -15, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -28, 0, 0, 0, -235, 0, 0, 0, 0, 0, -146, 0, 0, 0, -368, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -199, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -176, 0, 0, 0, 0, -91, 0, 0, 0, 0, -29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -57, -30, 0, 0, -31, 0, 0, 0, 0, 0, 0, 0, -329, 0, 0, 0, 0, -269, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -195, 0, 0, 0, 0, 0, 0, 0, -32, 0, 0, -264, 0, 0, 0, 0, 0,
- -570, -375, 0, 0, 0, 0, -33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209, 0, 0,
- 0, -129, 0, 0, 0, 0, -402, 0, 0, -143, 0, 0, -273, 0, 0, 0, 0, -376, 0, 0, 0, 0, -316, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -48, 0, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, -357, 0, 0, -280,
- 0, 0, 0, 0, -345, -34, 0, -39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -152, 0, 0, -286, 0, 0, 0, 0, -356, 0, -440, -41, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -205, 0, 0, -270, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -326, 0, 0, 0, 0, -94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -388, 0, 0, -287, 0, 0, 0, 0, -95, 0, 0, 0, 0, -35, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -308, 0, 0, 0, -321, 0, 0, 0, 0, 0, 0, 0,
- -421, 0, 0, -327, 0, 0, 0, 0, -96, 0, 0, 0, 0, -36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -322, -37, 0, 0, -324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -339, 0, 0, 0, 0, -97, 0, 0, 0, 0,
- -371, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -328, -38, 0, 0, -340, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -369, 0, 0, 0, 0, -98, 0, 0, 0, 0, -40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -360, -55, 0, 0, 0, -405, 0, 0, 0, -423, 0, 0, -56, 0, 0, -390, 0, 0, 0, 0, -99, 0, 0,
- 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -361, 0, 0, 0, -365, 0, 0, 0,
- 0, 0, 0, 0, -366, 0, 0, -59, -60, 0, -409, 0, -100, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, -353, 0, 0, -377, 0, 0, -107, -113, 0, -410, 0,
- -101, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -383,
- -108, 0, 0, 0, 0, 0, 0, -443, 0, 0, 0, 0, -400, -309, 0, -102, 0, 0, 0, 0, -109, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -391, -110, 0, 0, 0, 0, 0, 0, -394, 0, 0, -434, -332,
- 0, -111, 0, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -395, 0, 0, 0, -447, 0, 0, -131, 0, 0, -460, 0, 0, -138, 0, -104, 0, 0, 0, 0, -540, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -397, -139, 0, 0, 0, 0, 0, 0, -140, 0, 0,
- -323, 0, 0, -221, 0, -134, 0, 0, 0, 0, -265, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -411, -116, 0, 0, 0, 0, 0, 0, 0, -341, 0, 0, 0, 0, 0, -222, 0, 0, 0, 0, -354, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -153, 0, 0, 0, 0, 0, 0, -266, 0, 0, 0,
- -436, 0, 0, -374, 0, 0, 0, 0, -154, 0, -246, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -503, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -229, 0, -399, -313, 0, 0,
- 0, 0, 0, 0, 0, -155, -319, 0, 0, 0, 0, 0, 0, 0, -247, 0, 0, 0, 0, -156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -147, -355, 0, 0, 0, -413, 0, 0, 0, 0, 0, 0, -446, 0, 0, 0, -333, 0, 0,
- -118, 0, -157, 0, 0, 0, 0, 0, 0, -158, -492, 0, 0, -320, 0, 0, 0, 0, 0, 0, -248, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -475, -457, 0, -159, 0, 0, -14, 0, -284, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -431, 0, 0, -392, -160, 0, 0, 0, 0, 0, 0, -249, 0, 0, 0,
- 0, -161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -151, 0, -363, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 0, -379, 0, 0, 0, 0, -416, 0, -461, 0, 0, 0, -412, 0, 0, 0, 0, 0, 0,
- -250, 0, 0, 0, 0, -600, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -501, -389, 0,
- -419, 0, 0, 0, 0, -162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -163, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -251, 0, 0, 0, 0, -164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -207, 0, -564, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -350, 0, 0, 0, -165, 0, -572, 0, 0,
- 0, -435, 0, 0, 0, 0, 0, 0, -252, 0, 0, 0, 0, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -167, -168, -450, -169, -464, 0, 0, 0, 0, 0, 0, 0, -430, 0, 0, 0, -480, 0, -170, 0,
- -425, -463, 0, 0, 0, 0, -171, 0, 0, 0, 0, 0, 0, 0, 0, 0, -253, 0, 0, 0, 0, -172, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, 0, -148, 0, 0, 0, 0, -173, 0, 0, 0, 0, 0, 0, 0, -174, 0,
- 0, 0, 0, 0, -470, -449, 0, 0, 0, 0, 0, -506, 0, 0, -418, 0, 0, 0, 0, 0, 0, -254, 0, 0, 0, 0, -175, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -274, 0, -150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -474, 0, 0, -478, 0, 0, -471, 0, 0, 0, 0, 0, -178, -537, 0, 0, -422, 0, 0, 0, 0, 0, 0, -255, 0, 0,
- 0, 0, -182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -281, 0, -393, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -476, -487, 0, 0, -483, 0, 0, 0, 0, -453, 0, -490, 0, -462, 0, -499, 0, -583, 0, 0,
- 0, 0, 0, 0, -256, 0, 0, 0, 0, -183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -433, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -532, -43, 0, -122, 0, 0, 0, -184, -536, 0, -185, 0, -283,
- 0, -479, -527, 0, -586, 0, 0, 0, 0, 0, -352, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -186, 0, 0, 0, 0, 0, 0, -187, 0, -188, 0, -288, -344, -535, 0, -554, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -556, 0, -504, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -589, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -558, -189, 0, 0, 0, 0, 0, 0, -515, 0, 0, 0, -289, -290,
- -190, 0, -387, 0, 0, 0, 0, -587, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -567, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -524, 0, 0, -403, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -278, -191, 0, 0, -194, 0, 0, 0, 0, 0, 0, 0, -575, 0, 0, 0, -202, 0, 0, -533, -525,
- -203, -206, -538, 0, -291, -338, 0, -557, -348, -414, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, 0, 0, -349, 0, 0, -438, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -227, 0, 0, 0, -228, 0, 0, 0, 0, 0, 0, -236,
- 0, 0, -267, -275, -277, -285, 0, 0, 0, -551, -552, -296, -297, -218, 0, 0, 0, -439, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -298, -299, 0, 0, 0, 0, 0, 0, -300, 0, 0, 0,
- 0, 0, -513, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -180, -301,
- -351, 0, -302, 0, 0, 0, 0, -303, 0, 0, -304, 0, 0, -124, -305, -306, -307, -312, -230, -437, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -314, 0, -315, -584, -330, -331, 0, 0, -220, 0, 0, 0, 0, -73, 0, -342, 0, -346, 0, 0, 0,
- 0, -347, -133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -358, 0, -559, 0, -380, -420, 0, 0, -448, -106,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -258, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -482, 0,
- -337, -359, -417, 0, -364, 0, 0, 0, -201, 0, 0, 0, -372, -373, -384, -404, 0, -406, 0, -426, 0, 0, 0, 0,
- 0, 0, -579, 0, -429, 0, 0, -528, 0, 0, -93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -592, -599, 0, 0, 0, -442, 0, 0, 0, -531, 0, -245, 0, 0, 0, 0, -534, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -455, 0, 0, 0, 0, -456, 0, -458, -459, -465, 0, -467, -473,
- -481, -488, 0, -489, -512, 0, -514, 0, 0, 0, 0, -563, 0, -516, 0, -517, -243, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -518, -378, 0, 0, 0, -519, -231, -521, -539, -541,
- -336, -542, -544, -549, 0, -553, -560, 0, -568, 0, -577, -370, 0, -565, 0, -585, 0, -244, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -590, 0, -601, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -569, 0, -573, -574, 0, -240, 0, 0, 0, 0, -593, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -89, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -90, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -241, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -454, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -242,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, 0, 0, 0, -135,
- -598, 0, 0, 0, 0, 0, 0, -493, 0, 0, 0, 0, -495, 0, 0, 0, 0, 0, 0, 0, 0, 0, -232, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -233, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -523, 0, 0, 0, 0, 0, 0, 0, 0, 0, -529, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -237, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -238, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -239, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -276, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -295, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -335, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -362, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -127, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -530, 0, 0, 0, 0, 0, 0, 0, -292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -200, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -468, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -293, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -401,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -491, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, 0, 0, -44, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -511, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -144, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -382, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -441, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -386, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -520, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -498, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -543, 0, -548, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -149, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -545, 0, 0, 0, 0, 0, 0, 0, 0, -268, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -271,
- 0, 0, 0, 0, 0, 0, 0, 0, -485, 0, 0, -105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -562, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -334, 0, 0, 0,
- -223, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -576, 0, 0, 0,
- 0, 0, 0, 0, -408, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -398, 0, 0, 0, 0, 0, -591,
- 0, 0, 0, 0, 0, -224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -578, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -219, 0, 0, 0, -225, 0, -226, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -580, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -494, 0, -582, 0, 0, 0, 0, 0, 0, 0,
- 0, -407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -294, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -17, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -597, 0, -257, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -310, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -343, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -602, 0, 0, 0, 0, 0, 0, 0, 0,
- -445, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -581, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -179, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -22, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -23, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -19, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -424, 0, 0, 0, -46, 0, 0, 0, 0, 0, 0, 0,
- -452, 0, 0, 0, 0, 0, -566, 0, 0, 0, 0, 0, -500, 0, 0, 0, 0, 0, 0, 0, -466, 0, 0, 0, 0, 0, -561, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -125, 0, 0, 0, 0, 0, -396, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -546,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -317, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -427, 0, 0, 0, 0, 0, 0, 0, 0, 0, -432, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -451, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -477, 0, 0, 0, 0, 0, 0, 0, -507, -469, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -486, -234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -263, 0, 0, 0, 0, 0, 0, -381, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -484, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -496, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -497, 0, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0, 0, 0, -505, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -547, 0, 0, 0, 0, 0, -550, 0, 0, 0, -508, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -555, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0 };
- }
-
- public final static short baseCheck[] = BaseCheck.baseCheck;
-
- @Override
- public final int baseCheck(int index) {
- return baseCheck[index];
- }
-
- public final static short rhs[] = baseCheck;
-
- @Override
- public final int rhs(int index) {
- return rhs[index];
- }
-
- public interface BaseAction {
- public final static char baseAction[] = { 191, 5, 154, 94, 94, 32, 32, 80, 80, 39, 39, 42, 42, 218, 1, 1, 16,
- 16, 16, 16, 16, 16, 16, 17, 17, 17, 15, 11, 11, 6, 6, 6, 6, 6, 6, 2, 75, 75, 4, 4, 12, 12, 44, 44, 155,
- 155, 156, 67, 67, 43, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 157,
- 157, 157, 131, 131, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 192, 192, 193, 193, 194,
- 160, 160, 161, 161, 158, 158, 162, 159, 159, 21, 21, 22, 22, 23, 23, 23, 24, 24, 24, 24, 25, 25, 25, 26,
- 26, 26, 30, 30, 30, 30, 30, 33, 33, 33, 34, 34, 35, 35, 37, 37, 38, 38, 40, 40, 41, 41, 45, 45, 45, 45,
- 45, 47, 47, 47, 52, 52, 54, 54, 61, 61, 62, 62, 63, 63, 64, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
- 65, 65, 65, 29, 29, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 36, 28, 163, 163, 105, 105, 195,
- 195, 104, 219, 219, 82, 82, 82, 82, 82, 82, 82, 82, 82, 83, 83, 83, 78, 78, 66, 66, 196, 196, 84, 84,
- 84, 116, 116, 197, 197, 85, 85, 85, 85, 198, 198, 86, 86, 86, 86, 86, 87, 87, 95, 95, 95, 95, 95, 95,
- 95, 95, 55, 55, 55, 55, 55, 132, 132, 130, 130, 56, 199, 27, 27, 27, 27, 27, 50, 50, 69, 69, 69, 69, 69,
- 137, 137, 133, 133, 133, 133, 133, 134, 134, 134, 135, 135, 135, 136, 136, 136, 165, 165, 165, 70, 70,
- 70, 70, 70, 71, 71, 71, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 106, 138, 138, 138, 138, 138,
- 138, 111, 111, 111, 166, 167, 167, 112, 112, 200, 169, 169, 168, 168, 139, 139, 117, 92, 92, 140, 58,
- 49, 170, 170, 59, 57, 97, 97, 171, 171, 164, 164, 141, 142, 142, 143, 89, 89, 172, 172, 76, 76, 76, 73,
- 73, 72, 77, 77, 79, 79, 68, 68, 68, 53, 98, 98, 108, 107, 107, 51, 51, 74, 74, 81, 81, 60, 109, 109,
- 109, 99, 99, 99, 100, 100, 101, 101, 101, 102, 102, 118, 118, 118, 120, 120, 119, 119, 220, 220, 103,
- 103, 202, 202, 202, 202, 202, 145, 48, 48, 174, 201, 201, 146, 146, 147, 147, 147, 148, 176, 203, 203,
- 31, 31, 110, 114, 114, 114, 114, 205, 122, 121, 121, 113, 113, 113, 177, 178, 178, 178, 178, 178, 178,
- 178, 178, 178, 178, 178, 207, 207, 204, 204, 206, 206, 179, 180, 180, 180, 180, 181, 208, 124, 123, 123,
- 209, 209, 182, 182, 182, 182, 115, 115, 115, 210, 210, 8, 8, 9, 211, 211, 212, 183, 173, 173, 184, 184,
- 185, 186, 186, 7, 7, 10, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213,
- 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213,
- 213, 213, 213, 213, 213, 90, 93, 93, 187, 187, 150, 150, 151, 151, 151, 151, 151, 151, 3, 152, 152, 149,
- 149, 188, 221, 222, 222, 223, 223, 224, 225, 225, 189, 190, 190, 190, 190, 214, 214, 214, 126, 126, 126,
- 126, 126, 127, 128, 128, 125, 125, 96, 91, 88, 88, 175, 175, 129, 129, 215, 215, 215, 153, 153, 144,
- 144, 216, 216, 191, 191, 1119, 35, 2044, 2037, 4502, 1355, 27, 30, 31, 1030, 1171, 26, 28, 2003, 294,
- 25, 23, 50, 1182, 104, 75, 76, 106, 1258, 1284, 1281, 1346, 332, 147, 175, 1331, 306, 924, 1587, 1436,
- 1657, 1213, 1634, 1704, 413, 1728, 174, 71, 35, 1822, 423, 189, 2555, 35, 310, 1941, 264, 2532, 319,
- 1638, 35, 1021, 32, 4949, 3844, 27, 30, 31, 1030, 1171, 373, 28, 1405, 1297, 267, 262, 263, 1510, 466,
- 1673, 35, 1822, 423, 2360, 35, 1021, 32, 672, 5442, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23,
- 50, 1182, 104, 75, 76, 106, 1258, 1284, 1281, 2816, 49, 307, 160, 2600, 1519, 274, 277, 280, 821, 1132,
- 56, 56, 1775, 958, 3766, 676, 1206, 1671, 2750, 3345, 2864, 350, 3441, 355, 387, 2861, 388, 2912, 908,
- 2263, 2395, 2857, 5962, 283, 2905, 2914, 2975, 159, 577, 187, 71, 3449, 1543, 35, 1021, 32, 4828, 1859,
- 27, 30, 31, 1030, 1171, 57, 28, 1537, 35, 312, 625, 4328, 3272, 759, 35, 3173, 2137, 2360, 35, 1021, 32,
- 672, 5442, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75, 76, 106, 1258, 1284,
- 1281, 2816, 49, 386, 160, 1818, 1037, 1238, 548, 574, 3257, 578, 71, 3180, 1775, 1334, 71, 1849, 1997,
- 34, 2750, 2046, 2864, 378, 650, 648, 383, 2861, 1938, 2912, 2600, 1797, 2734, 376, 416, 2988, 2905,
- 2914, 2975, 159, 577, 665, 2224, 2360, 35, 1021, 32, 672, 5442, 27, 30, 31, 1030, 1171, 26, 28, 986,
- 294, 25, 23, 50, 1182, 104, 75, 76, 106, 1258, 1284, 1281, 2816, 69, 2088, 160, 1818, 3337, 2215, 35,
- 1021, 32, 4828, 2369, 27, 30, 31, 1030, 1171, 56, 28, 2750, 323, 2864, 1647, 2057, 56, 2277, 2861, 2080,
- 2912, 768, 533, 548, 574, 3257, 578, 2905, 2914, 2975, 159, 577, 61, 1912, 35, 1021, 32, 5073, 1257, 27,
- 30, 31, 1030, 1171, 26, 28, 3275, 3060, 546, 532, 2988, 271, 294, 69, 71, 35, 1822, 423, 2570, 35, 1021,
- 32, 672, 5442, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75, 76, 106, 1258, 1284,
- 1281, 2816, 49, 1520, 160, 1335, 264, 495, 548, 574, 3257, 578, 1851, 3449, 1775, 1170, 1556, 1537, 35,
- 312, 2750, 4564, 2864, 363, 272, 262, 263, 2861, 2445, 2912, 1088, 3337, 3080, 1400, 1085, 2988, 2905,
- 2914, 2975, 159, 577, 2708, 35, 1021, 32, 672, 69, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50,
- 1182, 104, 75, 76, 106, 1258, 1284, 1281, 1346, 2736, 439, 175, 1331, 60, 764, 1587, 1436, 1657, 2738,
- 1634, 1704, 1192, 1728, 174, 2918, 71, 35, 3163, 413, 1559, 35, 1021, 32, 71, 3608, 41, 30, 31, 1030,
- 1171, 1609, 549, 574, 3257, 578, 2428, 35, 1021, 32, 672, 1728, 27, 30, 31, 1030, 1171, 26, 28, 986,
- 294, 25, 23, 50, 1182, 104, 75, 76, 106, 1258, 1284, 1281, 1346, 473, 147, 175, 1331, 1824, 4867, 1587,
- 1436, 1657, 2866, 1634, 1704, 478, 1728, 174, 2918, 2456, 35, 310, 413, 322, 3327, 35, 1021, 32, 672,
- 2634, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75, 76, 106, 1258, 1284, 1281,
- 1346, 1488, 1681, 3450, 1331, 2413, 2420, 1587, 2578, 420, 414, 2862, 2638, 35, 1021, 32, 672, 4549, 27,
- 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75, 76, 106, 1258, 1284, 1281, 1346, 1104,
- 2765, 175, 1331, 1323, 1624, 1587, 1436, 1657, 2728, 1634, 1704, 3735, 1728, 174, 2918, 1537, 35, 565,
- 413, 5195, 583, 1994, 35, 1021, 32, 2634, 3325, 40, 30, 31, 1030, 1171, 421, 414, 2862, 2973, 35, 1021,
- 32, 672, 1192, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75, 76, 106, 1258, 1284,
- 1281, 1346, 425, 462, 175, 1331, 2010, 147, 1587, 1436, 1657, 4887, 1634, 1704, 1248, 1728, 174, 71, 35,
- 1997, 3159, 189, 3327, 35, 1021, 32, 672, 1239, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50,
- 1182, 104, 75, 76, 106, 1258, 1284, 1281, 1346, 56, 1449, 91, 1331, 1233, 836, 1587, 1436, 2577, 411,
- 414, 2862, 2973, 35, 1021, 32, 672, 1488, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182,
- 104, 75, 76, 106, 1258, 1284, 1281, 1346, 426, 462, 175, 1331, 56, 1037, 1587, 1436, 1657, 6195, 1634,
- 1704, 1338, 1728, 174, 71, 35, 2276, 2209, 407, 1660, 1728, 2973, 35, 1021, 32, 672, 55, 27, 30, 31,
- 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75, 76, 106, 1258, 1284, 1281, 1346, 56, 625, 175,
- 1331, 1818, 3059, 1587, 1436, 1657, 2491, 1634, 1704, 1818, 1728, 174, 71, 35, 1997, 309, 407, 2973, 35,
- 1021, 32, 672, 1501, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75, 76, 106, 1258,
- 1284, 1281, 1346, 2276, 437, 175, 1331, 56, 1206, 1587, 1436, 1657, 706, 1634, 1704, 241, 1728, 174,
- 931, 35, 1997, 309, 407, 1365, 1662, 406, 2502, 35, 1021, 32, 672, 191, 27, 30, 31, 1030, 1171, 26, 28,
- 986, 294, 25, 23, 50, 1182, 104, 75, 76, 106, 1258, 1284, 1281, 1346, 56, 494, 175, 1331, 583, 1206,
- 1587, 1436, 1657, 5795, 1634, 1704, 1818, 1728, 174, 71, 3339, 1997, 73, 173, 1488, 405, 2345, 2973, 35,
- 1021, 32, 672, 2641, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75, 76, 106, 1258,
- 1284, 1281, 1346, 2804, 1818, 175, 1331, 56, 1860, 1587, 1436, 1657, 965, 1634, 1704, 1950, 1728, 174,
- 71, 35, 315, 403, 190, 2973, 35, 1021, 32, 672, 3275, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23,
- 50, 1182, 104, 75, 76, 106, 1258, 1284, 1281, 1346, 1192, 1750, 175, 1331, 69, 1990, 1587, 1436, 1657,
- 51, 1634, 1704, 1818, 1728, 174, 931, 35, 1997, 3344, 186, 2973, 35, 1021, 32, 672, 65, 27, 30, 31,
- 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75, 76, 106, 1258, 1284, 1281, 1346, 56, 360, 175,
- 1331, 56, 2099, 1587, 1436, 1657, 1110, 1634, 1704, 1818, 1728, 174, 71, 35, 1997, 311, 185, 2973, 35,
- 1021, 32, 672, 228, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75, 76, 106, 1258,
- 1284, 1281, 1346, 56, 61, 175, 1331, 56, 1196, 1587, 1436, 1657, 3614, 1634, 1704, 95, 1728, 174, 71,
- 35, 1997, 3451, 184, 2973, 35, 1021, 32, 672, 2929, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23,
- 50, 1182, 104, 75, 76, 106, 1258, 1284, 1281, 1346, 56, 1007, 175, 1331, 56, 2144, 1587, 1436, 1657,
- 823, 1634, 1704, 96, 1728, 174, 71, 35, 1997, 314, 183, 2973, 35, 1021, 32, 672, 1334, 27, 30, 31, 1030,
- 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75, 76, 106, 1258, 1284, 1281, 1346, 147, 1348, 175,
- 1331, 5011, 2702, 1587, 1436, 1657, 2178, 1634, 1704, 1847, 1728, 174, 71, 35, 1997, 564, 182, 2973, 35,
- 1021, 32, 672, 233, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75, 76, 106, 1258,
- 1284, 1281, 1346, 2661, 441, 175, 1331, 56, 1908, 1587, 1436, 1657, 1815, 1634, 1704, 56, 1728, 174,
- 2277, 2277, 1862, 2634, 181, 2973, 35, 1021, 32, 672, 2795, 27, 30, 31, 1030, 1171, 26, 28, 986, 294,
- 25, 23, 50, 1182, 104, 75, 76, 106, 1258, 1284, 1281, 1346, 5772, 24, 175, 1331, 2249, 1361, 1587, 1436,
- 1657, 69, 1634, 1704, 56, 1728, 174, 2277, 2277, 3439, 2634, 180, 2973, 35, 1021, 32, 672, 1482, 27, 30,
- 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75, 76, 106, 1258, 1284, 1281, 1346, 68, 53,
- 175, 1331, 56, 1413, 1587, 1436, 1657, 2672, 1634, 1704, 1915, 1728, 174, 1942, 6110, 2934, 2489, 179,
- 2973, 35, 1021, 32, 672, 1934, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75, 76,
- 106, 1258, 1284, 1281, 1346, 428, 462, 175, 1331, 56, 2112, 1587, 1436, 1657, 2738, 1634, 1704, 56,
- 1728, 174, 2934, 2670, 5840, 2132, 178, 2973, 35, 1021, 32, 672, 456, 27, 30, 31, 1030, 1171, 26, 28,
- 986, 294, 25, 23, 50, 1182, 104, 75, 76, 106, 1258, 1284, 1281, 1346, 427, 462, 175, 1331, 424, 1488,
- 1587, 1436, 1657, 1499, 1634, 1704, 2831, 1728, 174, 759, 35, 431, 1832, 177, 2973, 35, 1021, 32, 672,
- 2280, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75, 76, 106, 1258, 1284, 1281,
- 1346, 2597, 358, 175, 1331, 56, 3785, 1587, 1436, 1657, 6039, 1634, 1704, 3724, 1728, 174, 2693, 35,
- 313, 2524, 176, 2852, 35, 1021, 32, 672, 159, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50,
- 1182, 104, 75, 76, 106, 1258, 1284, 1281, 1346, 1734, 1508, 2540, 1331, 5314, 3884, 1587, 1436, 1657,
- 2627, 1634, 1704, 482, 3081, 195, 2973, 35, 1021, 32, 672, 2007, 27, 30, 31, 1030, 1171, 26, 28, 986,
- 294, 25, 23, 50, 1182, 104, 75, 76, 106, 1258, 1284, 1281, 1346, 3550, 1718, 175, 1331, 1192, 2598,
- 1587, 1436, 1657, 2008, 1634, 1704, 3063, 1728, 174, 482, 843, 390, 584, 138, 1537, 35, 488, 2007, 5872,
- 361, 592, 366, 2084, 2341, 3094, 35, 1021, 32, 672, 1516, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25,
- 23, 50, 1182, 104, 75, 76, 106, 1258, 1284, 1281, 2816, 2471, 1613, 160, 1243, 35, 1021, 32, 4949, 4990,
- 27, 30, 31, 1030, 1171, 373, 28, 1903, 2341, 2750, 3847, 2864, 56, 1229, 35, 328, 2861, 1953, 2912, 362,
- 369, 1423, 159, 271, 294, 2905, 2914, 2975, 159, 171, 3094, 35, 1021, 32, 672, 1645, 27, 30, 31, 1030,
- 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75, 76, 106, 1258, 1284, 1281, 2816, 1595, 1335, 160, 86,
- 264, 2489, 100, 2402, 369, 353, 2260, 355, 2489, 348, 1954, 1656, 2701, 464, 2750, 1350, 2864, 1653,
- 272, 262, 263, 2861, 347, 2912, 227, 2171, 35, 488, 3002, 5872, 2905, 2914, 2975, 159, 170, 3094, 35,
- 1021, 32, 672, 3503, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75, 76, 106, 1258,
- 1284, 1281, 2816, 1499, 147, 160, 399, 264, 6246, 2734, 1427, 2623, 3184, 2775, 4307, 341, 344, 2593,
- 481, 3545, 3547, 2750, 319, 2864, 1801, 276, 262, 263, 2861, 320, 2912, 2789, 359, 1485, 2007, 415, 377,
- 2905, 2914, 2975, 159, 169, 3094, 35, 1021, 32, 672, 417, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25,
- 23, 50, 1182, 104, 75, 76, 106, 1258, 1284, 1281, 2816, 884, 2277, 160, 1243, 35, 1021, 32, 4949, 4990,
- 27, 30, 31, 1030, 1171, 373, 28, 2341, 3184, 2750, 1655, 2864, 2762, 1809, 42, 3125, 2861, 56, 2912,
- 759, 35, 431, 1994, 2929, 52, 2905, 2914, 2975, 159, 168, 3094, 35, 1021, 32, 672, 319, 27, 30, 31,
- 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75, 76, 106, 1258, 1284, 1281, 2816, 56, 1365, 160,
- 2627, 264, 1206, 368, 369, 2417, 353, 2260, 355, 389, 348, 1954, 485, 3545, 3547, 2750, 2420, 2864, 592,
- 279, 262, 263, 2861, 3364, 2912, 3514, 1815, 1192, 44, 3125, 3884, 2905, 2914, 2975, 159, 167, 3094, 35,
- 1021, 32, 672, 495, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75, 76, 106, 1258,
- 1284, 1281, 2816, 1750, 2277, 160, 1243, 35, 1021, 32, 4949, 4990, 27, 30, 31, 1030, 1171, 373, 28,
- 3063, 3552, 2750, 477, 2864, 491, 2731, 35, 563, 2861, 2874, 2912, 759, 35, 431, 367, 1488, 384, 2905,
- 2914, 2975, 159, 166, 3094, 35, 1021, 32, 672, 3001, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23,
- 50, 1182, 104, 75, 76, 106, 1258, 1284, 1281, 2816, 70, 2256, 160, 405, 1917, 2489, 572, 2626, 2581,
- 353, 2260, 355, 4473, 348, 1954, 1229, 3541, 328, 2750, 2322, 2864, 1752, 415, 56, 1488, 2861, 3613,
- 2912, 5852, 1929, 87, 1765, 410, 100, 2905, 2914, 2975, 159, 165, 3094, 35, 1021, 32, 672, 2185, 27, 30,
- 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75, 76, 106, 1258, 1284, 1281, 2816, 2581,
- 2277, 160, 1729, 35, 1021, 32, 5073, 2353, 27, 30, 31, 1030, 1171, 59, 28, 2418, 3618, 2750, 330, 2864,
- 213, 147, 56, 410, 2861, 6263, 2912, 2310, 71, 35, 328, 2007, 88, 2905, 2914, 2975, 159, 164, 3094, 35,
- 1021, 32, 672, 2450, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75, 76, 106, 1258,
- 1284, 1281, 2816, 1427, 2277, 160, 1729, 35, 1021, 32, 5073, 408, 27, 30, 31, 1030, 1171, 58, 28, 56,
- 2341, 2750, 56, 2864, 2802, 147, 1485, 5864, 2861, 6301, 2912, 2496, 71, 35, 328, 2007, 1703, 2905,
- 2914, 2975, 159, 163, 3094, 35, 1021, 32, 672, 1867, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23,
- 50, 1182, 104, 75, 76, 106, 1258, 1284, 1281, 2816, 2798, 2277, 160, 1994, 35, 1021, 32, 2663, 369,
- 1759, 30, 31, 1030, 1171, 3082, 2489, 56, 2341, 2750, 147, 2864, 6109, 346, 6315, 2593, 2861, 56, 2912,
- 2178, 6101, 2007, 1062, 2818, 1707, 2905, 2914, 2975, 159, 162, 3094, 35, 1021, 32, 672, 571, 27, 30,
- 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75, 76, 106, 1258, 1284, 1281, 2816, 2725, 333,
- 160, 1994, 35, 1021, 32, 364, 369, 2800, 30, 31, 1030, 1171, 3362, 2341, 56, 56, 2750, 1833, 2864, 2930,
- 4307, 2268, 1488, 2861, 581, 2912, 1508, 329, 2178, 1488, 3884, 1488, 2905, 2914, 2975, 159, 161, 3154,
- 35, 1021, 32, 672, 377, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75, 76, 106,
- 1258, 1284, 1281, 2816, 2974, 753, 160, 253, 264, 2854, 369, 2581, 491, 2581, 2006, 717, 2277, 1904, 56,
- 3063, 2669, 3884, 2750, 3087, 2864, 1340, 282, 262, 263, 2861, 1499, 2912, 2178, 584, 2917, 2920, 1896,
- 586, 2905, 2914, 2975, 159, 158, 3214, 35, 1021, 32, 672, 67, 27, 30, 31, 1030, 1171, 26, 28, 986, 294,
- 25, 23, 50, 1182, 104, 75, 76, 106, 1258, 1284, 1281, 1346, 3063, 337, 175, 1331, 56, 1657, 1587, 1436,
- 1657, 994, 1634, 1704, 2178, 1728, 174, 2917, 2277, 2277, 1019, 220, 3327, 35, 1021, 32, 672, 1488, 27,
- 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75, 76, 106, 1258, 1284, 1281, 1346, 56,
- 66, 65, 1331, 210, 5133, 1587, 1436, 1657, 92, 1634, 1704, 2178, 3081, 195, 3327, 35, 1021, 32, 672,
- 2581, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75, 76, 106, 1258, 1284, 1281,
- 1346, 2594, 2533, 585, 1331, 1248, 4307, 1587, 1436, 1657, 230, 1634, 1704, 2927, 3081, 195, 357, 2914,
- 4624, 94, 2489, 2178, 2534, 744, 2178, 592, 2277, 2277, 4172, 2489, 2277, 3327, 35, 1021, 32, 672, 1621,
- 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75, 76, 106, 1258, 1284, 1281, 1346,
- 64, 1895, 229, 1331, 55, 336, 1587, 1436, 1657, 835, 1634, 1704, 2277, 3081, 195, 3327, 35, 1021, 32,
- 672, 458, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75, 76, 106, 1258, 1284,
- 1281, 1346, 338, 2492, 54, 1331, 394, 2564, 1587, 1436, 1657, 417, 1634, 1704, 3062, 3081, 195, 1486,
- 2290, 2018, 1011, 3085, 3174, 3175, 2178, 2178, 589, 743, 71, 35, 1822, 423, 3327, 35, 1021, 32, 672,
- 327, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75, 76, 106, 1258, 1284, 1281,
- 1346, 49, 915, 925, 1331, 233, 231, 1587, 1436, 1657, 2045, 1634, 1704, 46, 3081, 195, 3486, 35, 1021,
- 32, 672, 457, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75, 76, 106, 1258, 1284,
- 1281, 1346, 2023, 2542, 2010, 1331, 577, 3345, 1587, 1436, 1657, 2486, 1634, 1704, 2179, 3081, 195,
- 1922, 2494, 2389, 757, 2528, 2011, 1492, 35, 3454, 32, 4949, 4990, 27, 30, 31, 1030, 1171, 373, 28, 141,
- 460, 2905, 35, 1021, 32, 672, 598, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75,
- 76, 106, 1258, 1284, 1281, 2816, 377, 187, 2878, 264, 2945, 2490, 2595, 2601, 264, 1813, 2003, 35, 1822,
- 423, 3605, 2276, 386, 2706, 3170, 3003, 1206, 285, 262, 263, 1663, 1508, 276, 262, 263, 3884, 353, 2260,
- 355, 717, 348, 1954, 378, 650, 648, 383, 2628, 306, 2178, 191, 2277, 2277, 576, 1755, 2277, 3327, 35,
- 1021, 32, 672, 1812, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75, 76, 106, 1258,
- 1284, 1281, 1346, 356, 99, 3063, 1331, 2722, 332, 1587, 1436, 1657, 651, 1634, 2603, 3433, 35, 1021, 32,
- 672, 366, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75, 76, 106, 1258, 1284,
- 1281, 2816, 2277, 3176, 2566, 3004, 2594, 2377, 2664, 4307, 4706, 4307, 71, 35, 1822, 423, 2633, 2960,
- 2778, 2995, 2750, 2959, 2864, 1216, 453, 454, 3452, 2861, 71, 2912, 2178, 4172, 2793, 4172, 2932, 2277,
- 2905, 3274, 3327, 35, 1021, 32, 672, 306, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182,
- 104, 75, 76, 106, 1258, 1284, 1281, 1346, 2178, 2178, 486, 1331, 5017, 2961, 1587, 1436, 1657, 2416,
- 2580, 3380, 35, 1021, 32, 672, 2277, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104,
- 75, 76, 106, 1258, 1284, 1281, 2816, 1218, 254, 224, 590, 395, 3064, 394, 1292, 3006, 3059, 412, 2881,
- 2962, 3117, 3124, 308, 3176, 3092, 2750, 3183, 2864, 3368, 3174, 3175, 2277, 2861, 87, 2912, 3086, 3380,
- 35, 1021, 32, 672, 3269, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75, 76, 106,
- 1258, 1284, 1281, 2816, 4982, 3118, 71, 35, 1822, 423, 3119, 2092, 3120, 1362, 3147, 1508, 173, 3212,
- 2998, 3884, 3177, 1637, 2750, 3178, 2864, 3236, 1851, 3449, 2277, 2861, 3237, 3261, 3380, 35, 1021, 32,
- 672, 306, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75, 76, 106, 1258, 1284,
- 1281, 2816, 2966, 5044, 2958, 264, 6892, 6892, 6892, 6892, 6892, 3063, 6892, 6892, 6892, 6892, 6892,
- 6892, 6892, 6892, 2750, 6892, 2864, 279, 262, 263, 366, 3266, 3327, 35, 1021, 32, 672, 6892, 27, 30, 31,
- 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75, 76, 106, 1258, 1284, 1281, 1346, 374, 4664,
- 2277, 1331, 2277, 2277, 2486, 3380, 35, 1021, 32, 672, 2277, 27, 30, 31, 1030, 1171, 26, 28, 986, 294,
- 25, 23, 50, 1182, 104, 75, 76, 106, 1258, 1284, 1281, 2816, 5175, 6892, 2871, 2995, 6892, 6892, 6892,
- 6892, 6892, 6892, 3499, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 2750, 322, 3217, 3327, 35, 1021, 32,
- 672, 6892, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75, 76, 106, 1258, 1284,
- 1281, 1346, 2408, 3450, 6892, 2534, 3327, 35, 1021, 32, 672, 6892, 27, 30, 31, 1030, 1171, 26, 28, 986,
- 294, 25, 23, 50, 1182, 104, 75, 76, 106, 1258, 1284, 1281, 1346, 6892, 6892, 6892, 2552, 3380, 35, 1021,
- 32, 672, 6892, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75, 76, 106, 1258, 1284,
- 1281, 2816, 1258, 35, 1021, 32, 5184, 4990, 27, 30, 31, 1030, 1171, 373, 28, 3380, 35, 1021, 32, 672,
- 3224, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75, 76, 106, 1258, 1284, 1281,
- 2816, 71, 35, 1822, 423, 6892, 6892, 2776, 2277, 6892, 6892, 6892, 4484, 6892, 3063, 71, 35, 1822, 423,
- 3258, 71, 35, 1822, 423, 6892, 6892, 6892, 6892, 6892, 366, 2181, 6892, 49, 353, 2260, 355, 6892, 348,
- 1954, 385, 5305, 2783, 6892, 6892, 1775, 863, 487, 6892, 6892, 6892, 347, 469, 6892, 6892, 3327, 35,
- 1021, 32, 672, 4422, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75, 76, 106, 1258,
- 1284, 1281, 2272, 264, 6892, 6892, 6892, 2180, 386, 6892, 6892, 6892, 1206, 6892, 264, 6892, 6892, 71,
- 35, 1822, 423, 282, 262, 263, 340, 344, 2593, 6892, 378, 650, 648, 383, 568, 262, 263, 187, 6892, 6892,
- 2509, 6892, 6892, 6892, 6892, 3181, 6892, 6892, 232, 2868, 468, 3327, 35, 1021, 32, 672, 3549, 27, 30,
- 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75, 76, 106, 1258, 1284, 1281, 2313, 3327, 35,
- 1021, 32, 672, 6892, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75, 76, 106, 1258,
- 1284, 1281, 2342, 3327, 35, 1021, 32, 672, 6892, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50,
- 1182, 104, 75, 76, 106, 1258, 1284, 1281, 2354, 3327, 35, 1021, 32, 672, 6892, 27, 30, 31, 1030, 1171,
- 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75, 76, 106, 1258, 1284, 1281, 3182, 3327, 35, 1021, 32, 672,
- 6892, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75, 76, 106, 1258, 1284, 1281,
- 3183, 3327, 35, 1021, 32, 672, 6892, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104,
- 75, 76, 106, 1258, 1284, 1281, 3216, 1339, 35, 1021, 32, 4949, 3603, 27, 30, 31, 1030, 1171, 373, 28,
- 3327, 35, 1021, 32, 672, 6892, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75, 76,
- 106, 1258, 1284, 1281, 3259, 6892, 6892, 6892, 3759, 35, 1021, 32, 4949, 6202, 27, 30, 31, 1030, 1171,
- 373, 28, 6892, 1220, 35, 3454, 32, 5184, 4990, 27, 30, 31, 1030, 1171, 373, 28, 6892, 6892, 353, 2260,
- 355, 385, 348, 1954, 6892, 386, 243, 35, 1822, 423, 6892, 6892, 6892, 6892, 6892, 3327, 71, 35, 1822,
- 423, 6892, 6892, 6892, 6892, 2276, 378, 650, 648, 383, 1206, 6892, 6892, 6892, 6892, 6892, 3326, 3063,
- 49, 6892, 6892, 6892, 353, 2260, 355, 6892, 348, 1954, 467, 386, 1775, 3075, 366, 191, 6892, 6892, 353,
- 2260, 355, 3364, 348, 1954, 3539, 35, 1822, 423, 4252, 6892, 6892, 378, 650, 648, 383, 1755, 3445, 269,
- 294, 6892, 6892, 2509, 6892, 6892, 4422, 71, 35, 1822, 423, 6892, 3327, 35, 1021, 32, 672, 306, 27, 30,
- 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75, 76, 106, 1258, 2130, 264, 49, 6892, 1734,
- 6892, 6892, 6892, 5314, 6892, 6892, 6892, 6892, 6892, 1775, 1100, 6892, 400, 3088, 267, 262, 263, 3327,
- 35, 1021, 32, 672, 6892, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75, 76, 106,
- 1258, 1284, 2450, 6892, 6892, 6892, 452, 454, 3452, 2276, 6892, 307, 6892, 6892, 1206, 274, 277, 280,
- 821, 1132, 1385, 35, 1021, 32, 5184, 6892, 27, 30, 31, 1030, 1171, 373, 28, 1377, 6892, 6892, 6892, 191,
- 908, 2263, 2395, 2857, 5962, 283, 3327, 35, 1021, 32, 672, 6892, 27, 30, 31, 1030, 1171, 26, 28, 986,
- 294, 25, 23, 50, 1182, 104, 75, 76, 106, 1258, 1284, 2461, 3272, 259, 6892, 3063, 1903, 6892, 598, 6892,
- 6892, 6892, 6892, 6892, 2260, 6892, 6892, 56, 3884, 4307, 367, 6892, 4307, 6892, 353, 2260, 355, 6892,
- 351, 1954, 260, 187, 2027, 35, 1822, 423, 6892, 6892, 2292, 2982, 6892, 4172, 211, 1206, 377, 2581,
- 3128, 6892, 6892, 6892, 6892, 235, 247, 652, 6892, 6892, 6892, 6892, 234, 244, 245, 246, 248, 49, 6892,
- 1, 187, 3063, 6892, 200, 598, 6892, 6892, 465, 596, 1775, 1136, 717, 6892, 2095, 6892, 199, 366, 6892,
- 4307, 214, 198, 201, 202, 203, 204, 205, 260, 187, 71, 35, 1822, 423, 1916, 3445, 56, 2982, 6892, 6892,
- 211, 1206, 377, 2581, 6892, 6892, 6892, 6892, 4706, 235, 247, 652, 6892, 394, 6892, 6892, 234, 244, 245,
- 246, 248, 49, 6892, 6892, 187, 6892, 6892, 200, 2707, 3174, 3175, 6892, 1813, 1775, 645, 1088, 6892,
- 6892, 6892, 199, 6892, 212, 6892, 215, 198, 201, 202, 203, 204, 205, 1416, 35, 1021, 32, 4949, 3603, 27,
- 30, 31, 1030, 1171, 373, 28, 3327, 35, 1021, 32, 672, 6892, 27, 30, 31, 1030, 1171, 26, 28, 986, 294,
- 25, 23, 50, 1182, 104, 75, 76, 106, 1258, 2149, 6892, 6892, 1770, 35, 1021, 32, 5184, 4535, 27, 30, 31,
- 1030, 1171, 373, 28, 1385, 35, 1021, 32, 5184, 6892, 27, 30, 31, 1030, 1171, 373, 28, 2276, 6892, 6892,
- 6892, 6892, 1206, 353, 2260, 355, 603, 348, 1954, 6892, 386, 6892, 6892, 2126, 6892, 6892, 6892, 3884,
- 6892, 6892, 587, 6892, 6892, 56, 3063, 191, 6892, 6892, 1206, 6892, 378, 650, 648, 383, 6892, 6892,
- 6892, 3063, 6892, 367, 588, 345, 6892, 353, 2260, 355, 598, 349, 1954, 1419, 386, 187, 367, 6892, 6892,
- 6892, 353, 2260, 355, 1477, 349, 1954, 6892, 6892, 6892, 6892, 3063, 6892, 260, 187, 380, 650, 648, 383,
- 2775, 6892, 6892, 2982, 6892, 4307, 211, 367, 6892, 2581, 6892, 6892, 6892, 6892, 6892, 235, 247, 652,
- 386, 6892, 6892, 6892, 234, 244, 245, 246, 248, 377, 3365, 431, 6892, 2180, 591, 200, 598, 6892, 598,
- 6892, 380, 650, 648, 383, 6892, 6892, 6892, 199, 6892, 6892, 6892, 3606, 198, 201, 202, 203, 204, 205,
- 260, 187, 3017, 187, 717, 329, 35, 1822, 423, 2982, 6892, 2982, 211, 6892, 211, 2581, 6892, 6892, 6892,
- 6892, 6892, 235, 247, 652, 6892, 594, 6892, 6892, 234, 244, 245, 246, 248, 6892, 6892, 517, 49, 6892,
- 6892, 200, 598, 6892, 6892, 6892, 329, 35, 1822, 423, 1775, 2050, 6892, 199, 6892, 227, 6892, 209, 198,
- 201, 202, 203, 204, 205, 260, 187, 243, 35, 1822, 423, 6892, 6892, 6892, 2982, 3330, 2822, 211, 49, 56,
- 2581, 4307, 6892, 6892, 1206, 6892, 235, 247, 652, 6892, 1775, 47, 6892, 234, 244, 245, 246, 248, 49,
- 6892, 603, 6892, 6892, 4172, 200, 598, 6892, 187, 6892, 6892, 1775, 47, 6892, 6892, 2047, 2595, 199,
- 6892, 6892, 6892, 207, 198, 201, 202, 203, 204, 205, 260, 187, 243, 35, 1822, 423, 56, 1530, 6892, 2982,
- 6892, 1206, 211, 6892, 6892, 2581, 6892, 6892, 6892, 6892, 6892, 235, 247, 652, 6892, 6892, 6892, 6892,
- 234, 244, 245, 246, 248, 49, 187, 689, 3507, 6892, 6892, 200, 598, 6892, 2916, 1508, 6892, 1775, 2397,
- 3884, 6892, 5858, 228, 199, 540, 6892, 6892, 208, 198, 201, 202, 203, 204, 205, 260, 187, 329, 35, 1822,
- 423, 6892, 3594, 3508, 2982, 6892, 6892, 211, 1206, 56, 2581, 6892, 6892, 6892, 1206, 6892, 235, 247,
- 652, 6892, 6892, 6892, 6892, 234, 244, 245, 246, 248, 49, 3063, 775, 187, 538, 539, 200, 598, 6892, 187,
- 6892, 193, 1775, 47, 6892, 6892, 366, 2986, 199, 6892, 6892, 6892, 218, 198, 201, 202, 203, 204, 205,
- 260, 187, 71, 35, 1822, 423, 56, 2841, 56, 2982, 6892, 1206, 211, 1206, 6892, 2581, 6892, 4677, 6892,
- 6892, 56, 235, 247, 652, 6892, 4307, 6892, 6892, 234, 244, 245, 246, 248, 49, 187, 6892, 187, 6892,
- 6892, 200, 6892, 6892, 2987, 6892, 3084, 1775, 958, 377, 6892, 6892, 6892, 199, 6892, 6892, 6892, 3647,
- 198, 201, 202, 203, 204, 205, 2382, 35, 1021, 32, 4949, 4990, 27, 30, 31, 1030, 1171, 373, 28, 3327, 35,
- 1021, 32, 672, 717, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75, 76, 106, 2208,
- 6892, 6892, 1943, 2276, 6892, 861, 6892, 6892, 1206, 6892, 598, 6892, 6892, 6892, 243, 35, 1822, 423,
- 6892, 6892, 6892, 6892, 6892, 6892, 6892, 71, 35, 1822, 423, 6892, 6892, 191, 260, 187, 6892, 353, 2260,
- 355, 56, 348, 1954, 2982, 3891, 598, 211, 49, 6892, 2581, 6892, 6892, 6892, 6892, 347, 235, 247, 652,
- 49, 1775, 1487, 6892, 234, 244, 245, 246, 248, 377, 187, 6892, 1775, 2530, 6892, 200, 6892, 947, 1813,
- 56, 6892, 6892, 598, 6892, 1206, 3594, 6892, 199, 6892, 6892, 6892, 223, 198, 201, 202, 203, 204, 205,
- 71, 35, 1822, 423, 717, 6892, 260, 187, 6892, 187, 340, 344, 2593, 6892, 3468, 2982, 6892, 3273, 211,
- 56, 6892, 2581, 6892, 6892, 1206, 1812, 6892, 235, 247, 652, 6892, 49, 6892, 3498, 234, 244, 245, 246,
- 248, 6892, 3549, 1033, 6892, 1775, 2245, 200, 598, 187, 6892, 6892, 243, 35, 1822, 423, 6892, 1574,
- 6892, 199, 6892, 6892, 6892, 217, 198, 201, 202, 203, 204, 205, 260, 187, 6892, 6892, 6892, 56, 6892,
- 6892, 6892, 2982, 1206, 6892, 211, 49, 6892, 2581, 6892, 6892, 6892, 6892, 6892, 235, 247, 652, 6892,
- 1775, 47, 6892, 234, 244, 245, 246, 248, 187, 6892, 6892, 6892, 6892, 6892, 200, 6892, 3712, 6892, 6892,
- 6892, 6892, 6892, 6892, 6892, 640, 6892, 199, 6892, 6892, 6892, 226, 198, 201, 202, 203, 204, 205, 3327,
- 35, 1021, 32, 672, 6892, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75, 76, 106,
- 2222, 3327, 35, 1021, 32, 672, 6892, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104,
- 75, 76, 106, 2265, 3638, 35, 552, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 269, 294,
- 3327, 35, 1021, 32, 672, 6892, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75, 76,
- 84, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 3327, 1849, 1021, 1869, 672, 264, 27, 30, 31, 1030,
- 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75, 76, 83, 267, 262, 263, 3327, 35, 1021, 32, 672, 6892,
- 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75, 76, 82, 6892, 6892, 6892, 6892,
- 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 274, 277, 280, 821, 1132, 6892, 6892,
- 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 2197,
- 3277, 3599, 3913, 6162, 3327, 35, 1021, 32, 672, 6892, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23,
- 50, 1182, 104, 75, 76, 81, 3327, 35, 1021, 32, 672, 6892, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25,
- 23, 50, 1182, 104, 75, 76, 80, 6892, 6892, 6892, 6892, 561, 562, 566, 3327, 35, 1021, 32, 672, 6892, 27,
- 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75, 76, 79, 3924, 3327, 35, 1021, 32, 672,
- 6892, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75, 76, 78, 3327, 35, 1021, 32,
- 672, 6892, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75, 76, 77, 3033, 35, 1021,
- 32, 672, 6892, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75, 76, 102, 3327, 35,
- 1021, 32, 672, 6892, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75, 76, 108, 3327,
- 35, 1021, 32, 672, 6892, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75, 76, 107,
- 3327, 35, 1021, 32, 672, 6892, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75, 76,
- 105, 3327, 35, 1021, 32, 672, 6892, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 104, 75,
- 76, 103, 3274, 35, 1021, 32, 672, 6892, 27, 30, 31, 1030, 1171, 26, 28, 986, 294, 25, 23, 50, 1182, 85,
- 75, 76, 1603, 6892, 6892, 6892, 56, 4307, 6892, 6892, 6892, 4307, 6892, 6892, 1870, 6892, 6892, 6892,
- 6892, 4307, 2182, 6892, 6892, 6892, 6892, 598, 1959, 6892, 6892, 260, 6892, 4307, 6892, 377, 243, 35,
- 1822, 423, 6892, 6892, 2700, 260, 6892, 6892, 6892, 4307, 6892, 377, 187, 6892, 237, 247, 652, 260,
- 6892, 6892, 219, 236, 244, 245, 246, 248, 237, 247, 652, 49, 717, 377, 6892, 236, 244, 245, 246, 248,
- 237, 247, 652, 1775, 47, 6892, 2511, 236, 244, 245, 246, 248, 6892, 1956, 6892, 6892, 6892, 6892, 238,
- 240, 242, 3324, 6892, 249, 239, 241, 3071, 3898, 6892, 6892, 238, 240, 242, 3324, 6892, 249, 239, 241,
- 6892, 6892, 6892, 6892, 238, 240, 242, 3324, 6892, 249, 239, 241, 3589, 35, 1822, 423, 4252, 6892, 2048,
- 6892, 2579, 6892, 6089, 4307, 221, 270, 294, 6892, 6892, 6892, 6892, 6892, 2787, 56, 6089, 6892, 6892,
- 6892, 598, 6892, 6892, 6892, 6892, 306, 3078, 260, 6089, 2315, 35, 1021, 32, 4949, 4229, 27, 30, 31,
- 1030, 1171, 373, 28, 377, 187, 6892, 264, 6892, 6892, 237, 247, 652, 219, 6892, 6892, 6892, 236, 244,
- 245, 246, 248, 6892, 1692, 6892, 268, 262, 263, 4307, 6892, 438, 6892, 6892, 2822, 6892, 6892, 6892,
- 2511, 4307, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 3463, 260, 6892, 238, 240, 242,
- 3324, 6892, 580, 239, 241, 4172, 6892, 307, 350, 3441, 355, 275, 278, 281, 821, 1132, 237, 247, 652,
- 6892, 6892, 6892, 6892, 236, 244, 245, 246, 248, 1781, 6892, 6892, 6892, 3705, 4307, 6892, 6892, 6892,
- 6892, 3560, 284, 2137, 6892, 6892, 6892, 6892, 4307, 6892, 6892, 2882, 243, 35, 1822, 423, 4307, 6892,
- 260, 6892, 6892, 238, 240, 242, 3324, 6892, 579, 239, 241, 6892, 260, 6892, 6892, 6892, 6892, 6892,
- 6892, 6892, 4172, 237, 247, 652, 6892, 49, 540, 6892, 236, 244, 245, 246, 248, 237, 247, 652, 6892,
- 1775, 47, 6892, 236, 244, 245, 246, 248, 2226, 3687, 35, 552, 6892, 4307, 6892, 6892, 1797, 6892, 6892,
- 6892, 6892, 6892, 270, 294, 3903, 6892, 238, 240, 242, 3324, 6892, 250, 239, 241, 6892, 260, 537, 539,
- 238, 240, 242, 3324, 1179, 339, 239, 241, 5264, 4307, 6892, 2260, 6892, 6892, 6892, 3884, 4307, 6892,
- 237, 247, 652, 540, 264, 6892, 6892, 236, 244, 245, 246, 248, 6892, 260, 6892, 6892, 6892, 3543, 6892,
- 6892, 4172, 6892, 268, 262, 263, 1296, 6892, 6892, 6892, 5264, 4307, 6892, 6892, 6892, 983, 442, 5997,
- 2271, 35, 1822, 423, 6892, 238, 240, 242, 3324, 3063, 534, 239, 241, 537, 539, 260, 6892, 243, 35, 1822,
- 423, 6892, 6892, 6892, 366, 6892, 275, 278, 281, 821, 1132, 49, 6892, 6892, 6892, 6892, 983, 442, 5997,
- 443, 444, 445, 3324, 1775, 47, 6892, 6892, 6892, 49, 6892, 3601, 6892, 6892, 6892, 4664, 243, 35, 1822,
- 423, 394, 1775, 47, 6892, 56, 3276, 6892, 6892, 2669, 4307, 2459, 35, 1822, 423, 6892, 2707, 3174, 3175,
- 6892, 443, 444, 445, 3324, 56, 6892, 3978, 6892, 49, 598, 56, 6892, 377, 6892, 56, 598, 6892, 6892,
- 6892, 4307, 1775, 47, 49, 6892, 56, 3276, 561, 562, 567, 4307, 6892, 377, 187, 6892, 1775, 47, 6892,
- 377, 187, 6892, 219, 377, 56, 6892, 4262, 717, 219, 4307, 446, 448, 6892, 377, 6892, 6892, 6892, 6892,
- 6892, 6892, 2735, 6892, 6892, 6892, 6892, 6892, 2511, 6892, 2773, 6892, 6892, 377, 2511, 6892, 6892,
- 6892, 717, 1909, 6892, 6892, 6234, 6892, 6892, 6892, 6892, 6892, 717, 6892, 6892, 446, 449, 6892, 6892,
- 6892, 6892, 6892, 6892, 544, 6892, 6892, 6892, 6892, 6892, 6892, 717, 6892, 6892, 542, 6892, 6892, 6892,
- 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 3616, 6892, 6892, 595, 6892, 6892,
- 3702, 6892, 0, 39, 6907, 0, 39, 6906, 0, 713, 29, 0, 475, 886, 0, 489, 1280, 0, 38, 809, 0, 38, 6907, 0,
- 38, 6906, 0, 4037, 124, 0, 1, 479, 0, 493, 866, 0, 492, 1372, 0, 1465, 89, 0, 713, 422, 0, 35, 33, 0,
- 32, 34, 0, 39, 809, 0, 1, 626, 0, 1, 7197, 0, 1, 7196, 0, 1, 7195, 0, 1, 7194, 0, 1, 7193, 0, 1, 7192,
- 0, 1, 7191, 0, 1, 7190, 0, 1, 7189, 0, 1, 7188, 0, 1, 7187, 0, 39, 1, 6907, 0, 39, 1, 6906, 0, 316, 429,
- 0, 316, 321, 0, 7158, 273, 0, 7157, 273, 0, 7264, 273, 0, 7263, 273, 0, 7185, 273, 0, 7184, 273, 0,
- 7183, 273, 0, 7182, 273, 0, 7181, 273, 0, 7180, 273, 0, 7179, 273, 0, 7178, 273, 0, 7197, 273, 0, 7196,
- 273, 0, 7195, 273, 0, 7194, 273, 0, 7193, 273, 0, 7192, 273, 0, 7191, 273, 0, 7190, 273, 0, 7189, 273,
- 0, 7188, 273, 0, 7187, 273, 0, 39, 6907, 273, 0, 39, 6906, 273, 0, 6930, 273, 0, 6907, 48, 0, 6906, 48,
- 0, 6898, 1, 0, 6897, 1, 0, 1415, 269, 0, 32, 423, 0, 29, 422, 0, 43, 6928, 0, 43, 37, 0, 4037, 126, 0,
- 4037, 125, 0, 1, 5818, 0, 1, 5457, 0, 1, 5514, 0, 1, 5580, 0, 1, 5603, 0, 1, 5633, 0, 1, 5657, 0, 1,
- 5680, 0, 1041, 1, 0, 1, 2316, 0, 1, 5488, 0, 1, 6914, 0, 1, 6913, 0, 1, 6912, 0, 1, 6911, 0, 1, 6910, 0,
- 1, 6909, 0, 1, 6908, 0, 1, 637, 0, 1, 670, 0, 1, 814, 0, 1, 835, 0, 1, 873, 0, 1, 3293, 0, 39, 1, 0,
- 365, 480, 0, 6930, 1, 0, 47, 37, 0, 1, 90, 0, 6907, 273, 0, 6906, 273, 0, 536, 3322, 0, 6930, 1, 261, 0,
- 39, 1, 261, 0, 261, 451, 0, 6907, 37, 0, 6906, 37, 0, 6907, 2, 37, 0, 6906, 2, 37, 0, 6907, 36, 0, 6906,
- 36, 0, 6928, 45, 0, 37, 45, 0, 6902, 440, 0, 6901, 440, 0, 1, 2379, 0, 1, 809, 0, 261, 450, 0, 1856,
- 352, 0, 365, 93, 0, 35, 72, 0, 1, 365, 0, 4270, 311, 0, 536, 6029, 0, 1, 261, 0, 261, 252, 0, 1, 2000,
- 0, 1, 2404, 0, 261, 251, 0, 6904, 1, 0, 6900, 1, 0, 1, 261, 3555, 0, 6901, 261, 0, 3562, 261, 0, 6904,
- 418, 0, 6903, 418, 0, 3604, 261, 0, 10, 12, 0, 8, 10, 12, 0, 3611, 225, 0, 216, 5243, 0, 3649, 418, 0,
- 8, 12, 0 };
- }
-
- public final static char baseAction[] = BaseAction.baseAction;
-
- @Override
- public final int baseAction(int index) {
- return baseAction[index];
- }
-
- public final static char lhs[] = baseAction;
-
- @Override
- public final int lhs(int index) {
- return lhs[index];
- }
-
- public interface TermCheck {
- public final static byte termCheck[] = { 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 0, 56, 57, 58, 59, 0, 61, 62, 63, 0, 65, 66, 67, 0, 69, 0, 1, 2,
- 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
- 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 86, 87, 56, 57, 58, 59, 0, 61, 62, 63, 4, 65, 66,
- 67, 94, 69, 92, 93, 0, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
- 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
- 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 0, 56, 57, 58, 59, 0, 61, 62,
- 63, 4, 65, 66, 67, 0, 69, 0, 1, 2, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 0, 1, 2, 3, 4, 5,
- 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
- 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 86, 87, 56, 57, 58,
- 59, 0, 61, 62, 63, 95, 65, 66, 67, 0, 69, 0, 1, 2, 0, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 0,
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
- 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0,
- 68, 56, 57, 58, 59, 0, 61, 62, 63, 0, 65, 66, 67, 0, 69, 0, 3, 0, 0, 74, 75, 76, 77, 78, 79, 80, 81, 82,
- 83, 84, 85, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
- 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
- 51, 52, 53, 86, 87, 56, 57, 58, 59, 0, 61, 62, 63, 0, 65, 66, 67, 94, 69, 86, 87, 86, 87, 74, 75, 76,
- 77, 78, 79, 80, 81, 82, 83, 84, 85, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 0, 56, 57, 58, 59, 0, 61, 62, 63, 0, 65, 66, 67, 94, 69, 92, 93,
- 0, 0, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
- 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 86, 87, 56, 57, 58, 59, 0, 61, 62, 63, 95, 65, 66,
- 67, 94, 69, 92, 93, 86, 87, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 0, 1, 2, 3, 4, 5, 6, 7, 8,
- 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
- 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 0, 56, 57, 58, 59, 0, 61,
- 62, 63, 0, 65, 66, 67, 0, 69, 0, 1, 2, 5, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 0, 1, 2, 3, 4,
- 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 86, 87, 56, 57,
- 58, 59, 0, 61, 62, 63, 4, 65, 66, 67, 0, 69, 101, 102, 4, 95, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
- 84, 85, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
- 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
- 52, 53, 0, 0, 56, 57, 58, 59, 0, 61, 62, 63, 0, 65, 66, 67, 0, 69, 0, 1, 2, 0, 74, 75, 76, 77, 78, 79,
- 80, 81, 82, 83, 84, 85, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
- 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
- 48, 49, 50, 51, 52, 53, 86, 87, 56, 57, 58, 59, 0, 61, 62, 63, 0, 65, 66, 67, 4, 69, 92, 93, 0, 0, 74,
- 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
- 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 68, 0, 56, 57, 58, 59, 0, 61, 62, 63, 9, 65, 66, 67, 0, 69,
- 96, 0, 1, 2, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 0, 1, 2, 3, 4, 5, 6, 7, 8, 40, 10, 11, 12,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
- 39, 55, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 0, 56, 57, 58, 59, 0, 1, 2, 3, 4, 5, 6,
- 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
- 0, 1, 2, 0, 4, 0, 40, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 1, 2, 53, 0, 55, 56, 57, 58, 5, 0, 61, 62, 63, 0, 1,
- 2, 3, 4, 0, 6, 71, 8, 73, 5, 38, 7, 38, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 88, 11, 12, 13, 14, 15, 16, 17,
- 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 71, 0, 114, 115, 116, 0, 1, 2, 3, 4, 5,
- 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
- 33, 91, 0, 99, 100, 0, 0, 40, 98, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 53, 0, 55, 56, 57, 58, 0, 64, 61, 62,
- 63, 68, 0, 0, 0, 3, 0, 5, 71, 7, 73, 9, 6, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 88, 0, 1, 2,
- 3, 4, 55, 6, 54, 8, 0, 34, 35, 36, 37, 60, 0, 40, 64, 3, 70, 0, 1, 2, 60, 70, 114, 115, 116, 0, 9, 54,
- 0, 1, 2, 3, 4, 60, 6, 0, 8, 64, 64, 89, 90, 68, 68, 70, 71, 72, 73, 101, 102, 103, 104, 105, 106, 107,
- 108, 109, 110, 111, 112, 86, 87, 0, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
- 105, 106, 107, 108, 109, 110, 111, 112, 69, 120, 60, 64, 117, 118, 119, 120, 0, 34, 35, 3, 0, 5, 0, 7,
- 4, 9, 0, 1, 2, 3, 4, 9, 6, 0, 8, 0, 0, 1, 2, 3, 4, 5, 0, 7, 0, 10, 4, 5, 91, 7, 34, 35, 36, 37, 0, 98,
- 40, 3, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 54, 0, 1, 2, 54, 4, 60, 0, 1, 2, 64, 4, 0, 6, 68,
- 8, 70, 71, 72, 73, 0, 69, 59, 0, 1, 2, 60, 71, 54, 6, 64, 8, 86, 87, 68, 89, 90, 91, 92, 93, 94, 95, 96,
- 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 0, 1, 2, 55, 117, 118, 119,
- 120, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, 33, 0, 0, 1, 2, 3, 4, 40, 6, 0, 8, 0, 1, 2, 55, 4, 5, 0, 7, 0, 53, 0, 55, 56,
- 57, 58, 0, 0, 61, 62, 63, 4, 65, 7, 114, 115, 116, 0, 1, 2, 73, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 32, 33, 0, 53, 88, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
- 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 70, 0, 0, 1, 2, 40, 4, 0, 6, 91, 8, 4, 66, 67, 0, 0, 98, 91,
- 53, 54, 55, 56, 57, 58, 98, 0, 61, 62, 63, 22, 65, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
- 111, 112, 0, 1, 2, 3, 4, 5, 6, 7, 8, 38, 88, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 1, 2, 0, 4, 5, 40, 7, 71, 0, 1,
- 2, 9, 4, 5, 60, 7, 0, 0, 53, 3, 55, 56, 57, 58, 0, 113, 61, 62, 63, 0, 65, 0, 114, 115, 116, 0, 1, 2,
- 73, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 0, 88, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 1, 2, 60, 4, 5,
- 40, 7, 0, 1, 2, 0, 4, 0, 6, 4, 8, 54, 0, 53, 7, 55, 56, 57, 58, 0, 0, 61, 62, 63, 0, 65, 118, 22, 0, 1,
- 2, 0, 4, 73, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 89, 90, 88, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
- 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 55, 0,
- 1, 2, 0, 64, 40, 6, 60, 8, 0, 1, 2, 0, 0, 0, 6, 0, 0, 53, 5, 55, 56, 57, 58, 0, 9, 61, 62, 63, 0, 65,
- 96, 3, 0, 1, 2, 23, 24, 73, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 0, 88, 0, 1, 2, 3, 4, 5,
- 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
- 33, 72, 60, 0, 0, 68, 64, 40, 5, 0, 68, 0, 66, 67, 0, 86, 87, 3, 54, 54, 53, 96, 55, 56, 57, 58, 99,
- 100, 61, 62, 63, 0, 65, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 1, 2, 3, 4, 5, 0, 7, 89, 90,
- 88, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, 33, 0, 1, 2, 0, 4, 64, 40, 0, 0, 0, 0, 0, 99, 100, 0, 60, 9, 3, 9, 53, 9, 55,
- 56, 57, 58, 64, 0, 61, 62, 63, 0, 65, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 1, 2, 40, 4,
- 40, 6, 40, 8, 0, 88, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
- 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 1, 2, 0, 4, 5, 40, 7, 0, 9, 55, 0, 1, 2, 95, 7, 0, 0, 54,
- 53, 0, 55, 56, 57, 58, 9, 9, 61, 62, 63, 0, 65, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 88, 0, 1, 2, 3, 4, 0, 6, 0, 8, 9, 3, 34, 35, 36, 37, 38, 39, 72, 41, 42, 43, 44,
- 45, 46, 47, 48, 49, 50, 51, 52, 0, 1, 2, 72, 72, 5, 59, 0, 0, 62, 40, 3, 97, 66, 67, 0, 1, 2, 3, 4, 5,
- 6, 7, 8, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 1, 2, 3, 4, 97, 6, 0, 8, 9, 70, 113, 34,
- 35, 36, 37, 38, 39, 55, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 1, 2, 0, 0, 0, 59, 0, 3, 40,
- 54, 64, 9, 66, 67, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 34,
- 35, 3, 34, 35, 0, 1, 2, 0, 1, 2, 34, 35, 36, 37, 38, 39, 55, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
- 52, 0, 1, 2, 68, 96, 0, 59, 72, 0, 0, 0, 0, 7, 0, 3, 0, 69, 9, 9, 9, 73, 0, 1, 2, 3, 4, 5, 6, 7, 8, 55,
- 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 1, 2, 0, 0, 0, 6, 40, 0, 0, 0, 3, 34, 35, 36, 37, 38,
- 39, 0, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 1, 2, 68, 68, 64, 59, 73, 73, 0, 71, 0, 3, 66,
- 67, 0, 1, 2, 3, 4, 5, 6, 7, 8, 55, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 60, 0, 0, 0, 54, 64,
- 64, 71, 0, 0, 9, 9, 34, 35, 36, 37, 38, 39, 55, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 1, 2,
- 0, 0, 0, 59, 3, 89, 90, 0, 0, 9, 66, 67, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
- 18, 19, 20, 21, 60, 0, 69, 97, 0, 70, 72, 3, 0, 0, 0, 70, 34, 35, 36, 37, 38, 39, 55, 41, 42, 43, 44,
- 45, 46, 47, 48, 49, 50, 51, 52, 97, 64, 0, 1, 2, 0, 59, 0, 73, 0, 0, 0, 70, 3, 71, 0, 69, 0, 1, 2, 3, 4,
- 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 60, 0, 1, 2, 0, 74, 0, 3, 0, 5, 6, 7, 34,
- 35, 36, 37, 38, 39, 55, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 60, 0, 1, 2, 0, 60, 59, 34, 35,
- 36, 37, 70, 39, 0, 0, 0, 69, 0, 3, 0, 3, 113, 0, 9, 9, 55, 0, 54, 0, 54, 0, 54, 0, 60, 0, 3, 97, 64, 10,
- 66, 67, 68, 0, 70, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 55, 0, 54, 86, 87, 0, 89, 90, 91, 92,
- 93, 94, 95, 96, 0, 10, 99, 100, 101, 60, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 72, 72, 54,
- 61, 117, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 53, 0, 55, 0,
- 0, 4, 0, 0, 4, 3, 54, 34, 35, 36, 37, 38, 39, 10, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 1,
- 2, 3, 4, 5, 6, 7, 8, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 54, 0, 54, 113, 54, 54, 0,
- 53, 9, 55, 64, 34, 35, 36, 37, 38, 39, 0, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 0, 0, 0, 0,
- 89, 90, 3, 0, 9, 0, 55, 118, 66, 67, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 0, 0, 68, 0, 72, 55, 0, 0, 0, 0, 71, 0, 34, 35, 36, 37, 38, 39, 54, 41, 42, 43, 44, 45, 46,
- 47, 48, 49, 50, 51, 52, 0, 0, 68, 68, 71, 73, 59, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 54, 54, 54, 54, 0, 54, 0, 0, 0, 0, 64, 71, 34, 35, 36, 37, 38, 39, 75, 41, 42,
- 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 121, 0, 3, 89, 90, 0, 60, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 10,
- 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 54, 0, 0, 0, 0, 3, 3, 3, 0, 0, 64, 68, 34, 35, 36, 37, 38,
- 39, 70, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 0, 0, 3, 89, 90, 59, 0, 1, 2, 3, 4, 5, 6, 7,
- 8, 71, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 0, 0, 54, 0, 3, 0, 0, 0, 68, 0, 0, 34, 35, 36,
- 37, 38, 39, 70, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 0, 0, 0, 0, 0, 59, 0, 1, 2, 3, 4, 5,
- 6, 7, 8, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 70, 34,
- 35, 36, 37, 38, 39, 71, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 0, 0, 0, 0, 0, 59, 0, 1, 2,
- 3, 4, 5, 6, 7, 8, 71, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70,
- 70, 34, 35, 36, 37, 38, 39, 0, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 1, 2, 3, 4, 5, 6, 7,
- 8, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 35, 36,
- 37, 38, 39, 0, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 10, 11, 12,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 35, 36, 37, 38, 39, 0, 41,
- 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 10, 11, 12, 13, 14, 15, 16,
- 17, 18, 19, 20, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 35, 36, 37, 38, 39, 0, 41, 42, 43, 44, 45,
- 46, 47, 48, 49, 50, 51, 52, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
- 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 34, 35, 36, 37, 38, 39, 0, 41, 42, 43, 44, 45, 46, 47, 48, 49,
- 50, 51, 52, 0, 1, 2, 0, 4, 0, 0, 0, 0, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
- 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 53, 4, 0,
- 56, 57, 58, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 32, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 53, 0, 0, 56, 57, 58, 10, 11, 12, 13,
- 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 53, 0, 0, 56, 57, 58, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
- 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, 3, 0,
- 53, 0, 0, 56, 57, 58, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 0, 1, 2, 3, 4, 40, 6, 0, 8, 9,
- 3, 0, 36, 37, 0, 0, 9, 0, 0, 54, 0, 0, 0, 0, 0, 60, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 60, 72, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 60, 0, 0, 0, 0, 0, 40, 60, 0, 0, 0, 64,
- 72, 0, 0, 68, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 117, 0, 119, 0, 0, 72, 11, 12, 13,
- 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 1, 2, 3, 4, 5, 0, 7,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 64, 0, 0, 0, 68, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static byte termCheck[] = TermCheck.termCheck;
-
- @Override
- public final int termCheck(int index) {
- return termCheck[index];
- }
-
- public interface TermAction {
- public final static char termAction[] = { 0, 6892, 6854, 6833, 6833, 6833, 6833, 6833, 6833, 6833, 6870, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6858, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 119, 1, 1, 1, 1, 1, 131, 1045, 7098, 2338, 127, 3465, 1, 1, 365, 6903, 6892,
- 6906, 6907, 6899, 2869, 3600, 3079, 3230, 3029, 3553, 4734, 3598, 805, 3593, 3968, 3564, 10, 6873, 6873,
- 6873, 6873, 6873, 6873, 6873, 6873, 6873, 6873, 6873, 6873, 6873, 6873, 6873, 6873, 6873, 6873, 6873,
- 6873, 6873, 6873, 6873, 6873, 6873, 6873, 6873, 6873, 6873, 6873, 6873, 6873, 6873, 6873, 6873, 6873,
- 6873, 6873, 6873, 6873, 6873, 6873, 6873, 6873, 6873, 6873, 6873, 6873, 6873, 6873, 6873, 6873, 6873,
- 4379, 4446, 6873, 6873, 6873, 6873, 39, 6873, 6873, 6873, 6930, 6873, 6873, 6873, 1105, 6873, 3786,
- 3755, 430, 6873, 6873, 6873, 6873, 6873, 6873, 6873, 6873, 6873, 6873, 6873, 6873, 6873, 8, 6876, 6876,
- 6876, 6876, 6876, 6876, 6876, 6876, 6876, 6876, 6876, 6876, 6876, 6876, 6876, 6876, 6876, 6876, 6876,
- 6876, 6876, 6876, 6876, 6876, 6876, 6876, 6876, 6876, 6876, 6876, 6876, 6876, 6876, 6876, 6876, 6876,
- 6876, 6876, 6876, 6876, 6876, 6876, 6876, 6876, 6876, 6876, 6876, 6876, 6876, 6876, 6876, 6876, 6876,
- 123, 133, 6876, 6876, 6876, 6876, 6892, 6876, 6876, 6876, 2244, 6876, 6876, 6876, 331, 6876, 6892, 6637,
- 6634, 6876, 6876, 6876, 6876, 6876, 6876, 6876, 6876, 6876, 6876, 6876, 6876, 6876, 6892, 6854, 6833,
- 6833, 6833, 6833, 6833, 6833, 6833, 6861, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 6858, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4379, 4446, 1, 1, 1, 1, 419,
- 1045, 7098, 2338, 1253, 3465, 1, 1, 6892, 6903, 48, 6637, 6634, 188, 2869, 3600, 3079, 3230, 3029, 3553,
- 4734, 3598, 805, 3593, 3968, 3564, 6892, 6854, 6833, 6833, 6833, 6833, 6833, 6833, 6833, 6861, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6858, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 122, 1488, 1, 1, 1, 1, 132, 1045, 7098, 2338, 6892, 3465, 1, 1, 6892, 6903, 121,
- 714, 120, 6892, 2869, 3600, 3079, 3230, 3029, 3553, 4734, 3598, 805, 3593, 3968, 3564, 6892, 6854, 6833,
- 6833, 6833, 6833, 6833, 6833, 6833, 6861, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 6858, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4379, 4446, 1, 1, 1, 1, 151,
- 1045, 7098, 2338, 128, 3465, 1, 1, 1105, 6903, 4379, 4446, 4379, 4446, 2869, 3600, 3079, 3230, 3029,
- 3553, 4734, 3598, 805, 3593, 3968, 3564, 6892, 6854, 6833, 6833, 6833, 6833, 6833, 6833, 6833, 6861, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6858, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 139, 134, 1, 1, 1, 1, 152, 1045, 7098, 2338, 147, 3465, 1, 1, 3620, 6903,
- 3786, 3755, 143, 6892, 2869, 3600, 3079, 3230, 3029, 3553, 4734, 3598, 805, 3593, 3968, 3564, 6892,
- 6854, 6833, 6833, 6833, 6833, 6833, 6833, 6833, 6861, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6858, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4379, 4446, 1, 1, 1,
- 1, 6892, 1045, 7098, 2338, 1253, 3465, 1, 1, 3620, 6903, 3857, 3817, 4379, 4446, 2869, 3600, 3079, 3230,
- 3029, 3553, 4734, 3598, 805, 3593, 3968, 3564, 6892, 6854, 6833, 6833, 6833, 6833, 6833, 6833, 6833,
- 6861, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6858, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 142, 137, 1, 1, 1, 1, 6892, 1045, 7098, 2338, 153, 3465, 1, 1, 6892,
- 6903, 432, 6906, 6907, 1853, 2869, 3600, 3079, 3230, 3029, 3553, 4734, 3598, 805, 3593, 3968, 3564,
- 6892, 6854, 6833, 6833, 6833, 6833, 6833, 6833, 6833, 6861, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6858, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4379, 4446, 1,
- 1, 1, 1, 6892, 1045, 7098, 2338, 2318, 3465, 1, 1, 430, 6903, 3369, 4899, 423, 3565, 2869, 3600, 3079,
- 3230, 3029, 3553, 4734, 3598, 805, 3593, 3968, 3564, 6892, 6854, 6833, 6833, 6833, 6833, 6833, 6833,
- 6833, 6861, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 6858, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 140, 6892, 1, 1, 1, 1, 6892, 1045, 7098, 2338, 148, 3465,
- 1, 1, 6892, 6903, 36, 6791, 6788, 6892, 2869, 3600, 3079, 3230, 3029, 3553, 4734, 3598, 805, 3593, 3968,
- 3564, 6892, 6854, 6833, 6833, 6833, 6833, 6833, 6833, 6833, 6861, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6858, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4379,
- 4446, 1, 1, 1, 1, 135, 1045, 7098, 2338, 6892, 3465, 1, 1, 1435, 6903, 3857, 3817, 550, 6892, 2869,
- 3600, 3079, 3230, 3029, 3553, 4734, 3598, 805, 3593, 3968, 3564, 6892, 3555, 1, 1, 1, 1, 1, 1, 1, 3562,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6901, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 928, 440, 1, 1, 1, 1, 6892, 1045, 7098, 2338, 6800, 3465, 1, 1, 6892,
- 6903, 3471, 6892, 10614, 10614, 2869, 3600, 3079, 3230, 3029, 3553, 4734, 3598, 805, 3593, 3968, 3564,
- 39, 6456, 6453, 5208, 1041, 5603, 5488, 5633, 2316, 6803, 970, 7189, 7187, 7196, 7195, 7191, 7192, 7190,
- 7193, 7194, 7197, 7188, 7184, 7263, 7264, 7178, 7185, 7181, 7157, 7183, 7182, 7179, 7180, 7158, 5580,
- 5514, 5680, 5657, 6911, 5457, 6928, 670, 873, 6913, 814, 5818, 835, 6914, 6912, 637, 6908, 6909, 6910,
- 7325, 6892, 6892, 634, 7326, 7327, 1438, 6892, 6767, 6767, 261, 6763, 261, 261, 261, 261, 6771, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 321, 6551, 6551, 6892, 316, 6892, 261,
- 6892, 6544, 6540, 2379, 6691, 6824, 809, 6824, 2316, 331, 6906, 6907, 1, 113, 6760, 1, 1, 1, 5418, 109,
- 2200, 7339, 1393, 1, 6544, 6540, 2379, 6691, 6892, 809, 261, 2316, 451, 999, 2796, 923, 3435, 255, 343,
- 6544, 6540, 2379, 6691, 6824, 809, 6824, 2316, 7427, 7189, 7187, 7196, 7195, 7191, 7192, 7190, 7193,
- 7194, 7197, 7188, 7184, 7263, 7264, 7178, 7185, 7181, 7157, 7183, 7182, 7179, 7180, 7158, 3032, 6892,
- 7362, 7363, 7364, 6892, 6767, 6767, 261, 6763, 261, 261, 261, 261, 6812, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5726, 6892, 5394, 5146, 137, 37, 261, 5749, 124, 401, 6544,
- 6540, 4215, 6691, 1, 809, 1, 2316, 493, 1, 256, 6760, 1, 1, 1, 6892, 6161, 2200, 7339, 1393, 4896, 33,
- 6892, 6892, 6495, 6892, 6495, 261, 6495, 450, 6495, 1480, 7184, 7263, 7264, 7178, 7185, 7181, 7157,
- 7183, 7182, 7179, 7180, 7158, 7427, 365, 6456, 6453, 2379, 1041, 6928, 809, 4064, 2316, 6892, 6495,
- 6495, 6495, 6495, 2052, 6892, 6495, 6477, 1415, 2005, 6892, 6906, 6907, 6483, 1292, 7362, 7363, 7364,
- 6892, 6904, 6495, 1, 6544, 6540, 4215, 6691, 6495, 809, 112, 2316, 6495, 3609, 4010, 3937, 6495, 4896,
- 6495, 6495, 6495, 6495, 3369, 4899, 1958, 1911, 1864, 1817, 1770, 1723, 1676, 1629, 1582, 1535, 6495,
- 6495, 116, 6495, 6495, 6495, 6495, 6495, 6495, 6495, 6495, 6495, 6495, 6495, 6495, 6495, 6495, 6495,
- 6495, 6495, 6495, 6495, 6495, 6495, 6495, 6495, 6495, 6903, 6452, 2052, 2618, 6495, 6495, 6495, 6495,
- 6892, 4637, 4333, 6498, 431, 6498, 6892, 6498, 422, 6498, 1, 6544, 6540, 2379, 6691, 6904, 809, 593,
- 2316, 335, 37, 6907, 6907, 6907, 6907, 6907, 39, 6907, 6892, 7226, 6930, 365, 5726, 365, 6498, 6498,
- 6498, 6498, 89, 5749, 6498, 6489, 6907, 6907, 6907, 6907, 6907, 6907, 6907, 6907, 6907, 6907, 6907,
- 6907, 6498, 6892, 6456, 6453, 713, 6930, 6498, 6892, 6456, 6453, 6498, 1041, 6892, 6501, 6498, 2316,
- 6498, 6498, 6498, 6498, 474, 6903, 3548, 38, 6474, 6471, 6907, 3032, 2855, 6468, 6907, 2316, 6498, 6498,
- 6907, 6498, 6498, 6498, 6498, 6498, 6498, 6498, 6498, 6498, 6498, 6498, 6498, 6498, 6498, 6498, 6498,
- 6498, 6498, 6498, 6498, 6498, 6498, 6498, 6498, 43, 6658, 6658, 2643, 6498, 6498, 6498, 6498, 6892,
- 6833, 6833, 261, 6833, 261, 261, 261, 261, 6836, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 9230, 1, 1, 1, 1, 1, 1, 6892, 1, 6544, 6540, 6806, 6691, 261, 6809, 111, 6694, 479, 1, 1, 6655, 1, 6480,
- 110, 6480, 257, 1, 157, 6830, 1, 1, 1, 129, 6892, 2589, 7135, 2338, 2443, 3465, 3673, 7362, 7363, 7364,
- 6892, 6906, 6907, 252, 7184, 7263, 7264, 7178, 7185, 7181, 7157, 7183, 7182, 7179, 7180, 7158, 6892,
- 2536, 7427, 6892, 6833, 6833, 261, 6833, 261, 261, 261, 261, 261, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 9230, 1, 1, 1, 1, 1, 1, 6892, 2811, 6892, 6892, 6456, 6453, 261, 1041, 39, 809, 5726, 2316,
- 6930, 5703, 956, 1, 6892, 5749, 5726, 1, 3360, 6830, 1, 1, 1, 5749, 6892, 2589, 7135, 2338, 969, 3465,
- 3408, 5245, 2745, 2679, 2613, 2547, 2481, 2415, 2349, 2283, 2217, 2151, 379, 6456, 6453, 4215, 1041,
- 365, 809, 365, 2316, 3456, 7427, 6892, 6833, 6833, 261, 6833, 261, 261, 261, 261, 6845, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9230, 1, 1, 1, 1, 1, 1, 480, 39, 39, 6892, 6930, 6742, 261, 6742,
- 2094, 90, 1, 1, 6896, 1, 6751, 2052, 6751, 269, 258, 1, 6646, 6830, 1, 1, 1, 6892, 3602, 2589, 7135,
- 2338, 6892, 3465, 492, 7362, 7363, 7364, 325, 6906, 6907, 251, 7184, 7263, 7264, 7178, 7185, 7181, 7157,
- 7183, 7182, 7179, 7180, 7158, 144, 6892, 7427, 6892, 6833, 6833, 261, 6833, 261, 261, 261, 261, 6836, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9230, 1, 1, 1, 1, 1, 1, 93, 39, 39, 6486, 6930, 6818,
- 261, 6818, 6892, 6456, 6453, 39, 1041, 130, 809, 6930, 2316, 4145, 259, 1, 3673, 6830, 1, 1, 1, 136,
- 6892, 2589, 7135, 2338, 6892, 3465, 6895, 2662, 429, 6548, 6548, 382, 316, 252, 7184, 7263, 7264, 7178,
- 7185, 7181, 7157, 7183, 7182, 7179, 7180, 7158, 4118, 4091, 7427, 6892, 6833, 6833, 261, 6833, 261, 261,
- 261, 261, 6836, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9230, 1, 1, 1, 1, 1, 1, 316, 6892,
- 6906, 6907, 6892, 2648, 261, 809, 2052, 2316, 6892, 6906, 6907, 155, 370, 115, 1480, 6892, 570, 1, 5418,
- 6830, 1, 1, 1, 396, 6898, 2589, 7135, 2338, 1, 3465, 3471, 3890, 6892, 6637, 6634, 7263, 7264, 252,
- 7184, 7263, 7264, 7178, 7185, 7181, 7157, 7183, 7182, 7179, 7180, 7158, 146, 6892, 7427, 6892, 6833,
- 6833, 261, 6833, 261, 261, 261, 261, 261, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9230, 1, 1,
- 1, 1, 1, 1, 6897, 2052, 114, 6892, 3437, 575, 261, 5418, 6892, 575, 571, 5703, 956, 1, 4379, 4446, 6309,
- 4145, 4487, 1, 3509, 6830, 1, 1, 1, 5394, 5146, 2589, 7135, 2338, 6892, 3465, 7184, 7263, 7264, 7178,
- 7185, 7181, 7157, 7183, 7182, 7179, 7180, 7158, 379, 39, 39, 3890, 6930, 365, 6892, 365, 4118, 4091,
- 7427, 6892, 6833, 6833, 261, 6833, 261, 261, 261, 261, 261, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 9230, 1, 1, 1, 1, 1, 1, 6892, 6456, 6453, 6892, 6930, 2656, 261, 6892, 154, 1, 572, 1, 5394, 5146,
- 6892, 2052, 6902, 4953, 6902, 1, 222, 6830, 1, 1, 1, 2684, 6892, 2589, 7135, 2338, 6892, 3465, 7184,
- 7263, 7264, 7178, 7185, 7181, 7157, 7183, 7182, 7179, 7180, 7158, 6892, 6456, 6453, 6901, 1041, 6901,
- 6501, 222, 2316, 6892, 7427, 6892, 6833, 6833, 261, 6833, 261, 261, 261, 261, 261, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9230, 1, 1, 1, 1, 1, 1, 1, 6739, 6739, 6892, 6745, 365, 261, 365, 149,
- 397, 2709, 6892, 10368, 10365, 3565, 3707, 1, 6892, 5091, 1, 409, 6830, 1, 1, 1, 192, 6898, 2589, 7135,
- 2338, 392, 3465, 6892, 1, 1, 1, 1, 1, 1, 1, 1, 6892, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7427, 1, 6544,
- 6540, 6806, 6691, 6892, 6809, 345, 6694, 6902, 2442, 1, 1, 1, 1, 1, 1, 397, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 37, 6748, 6748, 192, 6897, 365, 1, 6892, 6892, 7489, 6901, 5023, 397, 1, 1, 1, 6544, 6540,
- 3293, 1041, 5603, 5488, 5633, 2316, 6892, 6504, 6531, 6537, 6510, 6513, 6525, 6522, 6528, 6519, 6516,
- 6507, 6534, 1, 6544, 6540, 2379, 6691, 7283, 809, 156, 2316, 343, 1143, 3602, 5580, 5514, 5680, 5657,
- 6911, 5457, 6928, 670, 873, 6913, 814, 5818, 835, 6914, 6912, 637, 6908, 6909, 6910, 37, 6748, 6748,
- 6892, 118, 6892, 1438, 117, 5077, 343, 5844, 551, 6898, 39, 39, 39, 6456, 6453, 5208, 1041, 5603, 5488,
- 5633, 2316, 6886, 626, 7189, 7187, 7196, 7195, 7191, 7192, 7190, 7193, 7194, 7197, 7188, 6892, 4637,
- 4333, 5079, 4637, 4333, 6892, 6777, 6774, 6892, 10368, 10365, 5580, 5514, 5680, 5657, 6911, 5457, 1430,
- 670, 873, 6913, 814, 5818, 835, 6914, 6912, 637, 6908, 6909, 6910, 324, 743, 743, 6366, 3509, 150, 1438,
- 6897, 6892, 6892, 6892, 6892, 3707, 6892, 4270, 6892, 6867, 6900, 6900, 6902, 6899, 172, 6456, 6453,
- 5208, 1041, 5603, 5488, 5633, 2316, 6928, 626, 7189, 7187, 7196, 7195, 7191, 7192, 7190, 7193, 7194,
- 7197, 7188, 37, 6748, 6748, 6892, 6892, 6892, 6748, 6901, 381, 6892, 6892, 1368, 5580, 5514, 5680, 5657,
- 6911, 5457, 145, 670, 873, 6913, 814, 5818, 835, 6914, 6912, 637, 6908, 6909, 6910, 6892, 6784, 6780,
- 1057, 3278, 7439, 1438, 6899, 6899, 6892, 2877, 1, 4411, 39, 39, 1, 6544, 6540, 3293, 1041, 5603, 5488,
- 5633, 2316, 1577, 6504, 6531, 6537, 6510, 6513, 6525, 6522, 6528, 6519, 6516, 6507, 6534, 2052, 1, 1,
- 404, 4145, 7368, 7382, 7328, 98, 402, 6848, 397, 5580, 5514, 5680, 5657, 6911, 5457, 6928, 670, 873,
- 6913, 814, 5818, 835, 6914, 6912, 637, 6908, 6909, 6910, 45, 6797, 6797, 1, 101, 6892, 1438, 4690, 4118,
- 4091, 326, 463, 6851, 39, 39, 39, 6456, 6453, 5208, 1041, 5603, 5488, 5633, 2316, 6864, 626, 7189, 7187,
- 7196, 7195, 7191, 7192, 7190, 7193, 7194, 7197, 7188, 5283, 1, 6903, 7285, 6892, 1341, 397, 1856, 6892,
- 582, 354, 1388, 5580, 5514, 5680, 5657, 6911, 5457, 6794, 670, 873, 6913, 814, 5818, 835, 6914, 6912,
- 637, 6908, 6909, 6910, 397, 5968, 6892, 6777, 6774, 6892, 1438, 6892, 6899, 1, 352, 455, 3089, 6815,
- 2079, 97, 6867, 39, 6456, 6453, 5208, 1041, 5603, 5488, 5633, 2316, 6864, 626, 7189, 7187, 7196, 7195,
- 7191, 7192, 7190, 7193, 7194, 7197, 7188, 2052, 6892, 11370, 8991, 1, 2199, 29, 887, 475, 7390, 7396,
- 7394, 5580, 5514, 5680, 5657, 6911, 5457, 6928, 670, 873, 6913, 814, 5818, 835, 6914, 6912, 637, 6908,
- 6909, 6910, 2052, 37, 6748, 6748, 489, 2990, 1438, 7388, 7389, 7419, 7420, 3188, 7397, 6892, 1, 1, 6867,
- 311, 3890, 6892, 6827, 1, 573, 6898, 6640, 6928, 6892, 7399, 335, 6459, 6892, 6462, 6892, 798, 422,
- 3536, 3704, 7400, 7226, 1751, 1762, 7421, 6892, 7398, 7184, 7263, 7264, 7178, 7185, 7181, 7157, 7183,
- 7182, 7179, 7180, 7158, 6928, 581, 6465, 7410, 7409, 1, 7415, 7416, 7422, 7413, 7414, 7393, 7395, 7417,
- 6892, 6839, 7391, 7392, 7418, 2052, 7403, 7404, 7405, 7401, 7402, 7411, 7412, 7407, 7406, 7408, 6897,
- 6643, 6492, 2311, 7423, 39, 6456, 6453, 5208, 1041, 5603, 5488, 5633, 2316, 6896, 626, 7189, 7187, 7196,
- 7195, 7191, 7192, 7190, 7193, 7194, 7197, 7188, 126, 6842, 48, 3544, 6892, 48, 6907, 6892, 1, 6906,
- 5173, 713, 5580, 5514, 5680, 5657, 6911, 5457, 6839, 670, 873, 6913, 814, 5818, 835, 6914, 6912, 637,
- 6908, 6909, 6910, 1, 6544, 6540, 6736, 6691, 6679, 6697, 6682, 6694, 47, 6504, 6531, 6537, 6510, 6513,
- 6525, 6522, 6528, 6519, 6516, 6507, 6534, 1, 4064, 318, 6907, 3602, 3360, 6906, 483, 6842, 589, 3544,
- 6661, 6676, 6673, 6688, 6685, 6709, 6670, 6892, 6724, 6733, 6703, 6727, 6667, 6730, 6700, 6706, 6721,
- 6718, 6715, 6712, 8, 29, 324, 461, 6892, 4010, 3937, 4767, 216, 6889, 6892, 1383, 6895, 6739, 6739, 39,
- 6456, 6453, 5208, 1041, 5603, 5488, 5633, 2316, 6892, 626, 7189, 7187, 7196, 7195, 7191, 7192, 7190,
- 7193, 7194, 7197, 7188, 6892, 6892, 7209, 225, 589, 3438, 125, 430, 72, 6892, 2141, 6892, 5580, 5514,
- 5680, 5657, 6911, 5457, 713, 670, 873, 6913, 814, 5818, 835, 6914, 6912, 637, 6908, 6909, 6910, 6892,
- 6892, 9970, 4361, 459, 6889, 1438, 39, 6456, 6453, 5208, 1041, 5603, 5488, 5633, 2316, 6892, 626, 7189,
- 7187, 7196, 7195, 7191, 7192, 7190, 7193, 7194, 7197, 7188, 4064, 713, 6821, 2036, 484, 2788, 6892,
- 6892, 6892, 35, 6664, 3131, 5580, 5514, 5680, 5657, 6911, 5457, 6880, 670, 873, 6913, 814, 5818, 835,
- 6914, 6912, 637, 6908, 6909, 6910, 6892, 6883, 6892, 5983, 4010, 3937, 6892, 1380, 39, 6456, 6453, 3293,
- 1041, 5603, 5488, 5633, 2316, 6892, 626, 7189, 7187, 7196, 7195, 7191, 7192, 7190, 7193, 7194, 7197,
- 7188, 4145, 342, 6892, 6892, 6892, 6328, 4798, 6334, 543, 2, 4185, 2273, 5580, 5514, 5680, 5657, 6911,
- 5457, 2791, 670, 873, 6913, 814, 5818, 835, 6914, 6912, 637, 6908, 6909, 6910, 6892, 6892, 6892, 5878,
- 4118, 4091, 1438, 39, 6456, 6453, 3293, 1041, 5603, 5488, 5633, 2316, 4796, 626, 7189, 7187, 7196, 7195,
- 7191, 7192, 7190, 7193, 7194, 7197, 7188, 541, 6892, 6892, 37, 6892, 5337, 6892, 6892, 6892, 2181, 6892,
- 6892, 5580, 5514, 5680, 5657, 6911, 5457, 6338, 670, 873, 6913, 814, 5818, 835, 6914, 6912, 637, 6908,
- 6909, 6910, 6892, 6892, 6892, 6892, 6892, 6892, 1438, 39, 6456, 6453, 5208, 1041, 5603, 5488, 5633,
- 2316, 6892, 626, 7189, 7187, 7196, 7195, 7191, 7192, 7190, 7193, 7194, 7197, 7188, 6892, 545, 6892,
- 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6348, 2791, 5580, 5514, 5680, 5657, 6911, 5457, 4858, 670,
- 873, 6913, 814, 5818, 835, 6914, 6912, 637, 6908, 6909, 6910, 6892, 6892, 6892, 6892, 6892, 6892, 1438,
- 39, 6456, 6453, 4570, 1041, 5603, 5488, 5633, 2316, 4920, 626, 7189, 7187, 7196, 7195, 7191, 7192, 7190,
- 7193, 7194, 7197, 7188, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 2943, 903, 5580,
- 5514, 5680, 5657, 6911, 5457, 6892, 670, 873, 6913, 814, 5818, 835, 6914, 6912, 637, 6908, 6909, 6910,
- 39, 6456, 6453, 5208, 1041, 5603, 5488, 5633, 2316, 6892, 626, 7189, 7187, 7196, 7195, 7191, 7192, 7190,
- 7193, 7194, 7197, 7188, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 5580,
- 5514, 5680, 5657, 6911, 5457, 6892, 670, 873, 6913, 814, 5818, 835, 6914, 6912, 637, 6908, 6909, 6910,
- 39, 6456, 6453, 3293, 1041, 5603, 5488, 5633, 2316, 6892, 626, 7189, 7187, 7196, 7195, 7191, 7192, 7190,
- 7193, 7194, 7197, 7188, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 5580,
- 5514, 5680, 5657, 6911, 5457, 6892, 670, 873, 6913, 814, 5818, 835, 6914, 6912, 637, 6908, 6909, 6910,
- 39, 6456, 6453, 3293, 1041, 5603, 5488, 5633, 2316, 6892, 626, 7189, 7187, 7196, 7195, 7191, 7192, 7190,
- 7193, 7194, 7197, 7188, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 5580,
- 5514, 5680, 5657, 6911, 5457, 6892, 670, 873, 6913, 814, 5818, 835, 6914, 6912, 637, 6908, 6909, 6910,
- 39, 6456, 6453, 5208, 1041, 5603, 5488, 5633, 2316, 6892, 626, 7189, 7187, 7196, 7195, 7191, 7192, 7190,
- 7193, 7194, 7197, 7188, 1, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 194, 6892, 6892, 5580, 5514,
- 5680, 5657, 6911, 5457, 6892, 670, 873, 6913, 814, 5818, 835, 6914, 6912, 637, 6908, 6909, 6910, 6892,
- 6456, 6453, 6892, 6930, 6892, 6892, 6892, 6892, 6892, 758, 7189, 7187, 7196, 7195, 7191, 7192, 7190,
- 7193, 7194, 7197, 7188, 7184, 7263, 7264, 7178, 7185, 7181, 7157, 7183, 7182, 7179, 7180, 7158, 6892,
- 6892, 6892, 6892, 6892, 6892, 6892, 194, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 273, 6627,
- 6623, 7325, 6631, 6892, 634, 7326, 7327, 6892, 758, 6614, 6620, 6593, 6596, 6608, 6605, 6611, 6602,
- 6599, 6590, 6617, 6569, 6563, 6560, 6587, 6566, 6578, 6557, 6572, 6575, 6584, 6581, 6554, 6892, 6892,
- 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6906, 6907, 6892,
- 7325, 6892, 6892, 634, 7326, 7327, 1186, 7189, 7187, 7196, 7195, 7191, 7192, 7190, 7193, 7194, 7197,
- 7188, 7184, 7263, 7264, 7178, 7185, 7181, 7157, 7183, 7182, 7179, 7180, 7158, 6892, 6892, 6892, 6892,
- 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 273, 6757, 6754, 6892, 7325, 6892,
- 6892, 634, 7326, 7327, 1186, 6614, 6620, 6593, 6596, 6608, 6605, 6611, 6602, 6599, 6590, 6617, 6569,
- 6563, 6560, 6587, 6566, 6578, 6557, 6572, 6575, 6584, 6581, 6554, 6892, 6892, 6892, 29, 422, 422, 6652,
- 422, 6652, 422, 6652, 422, 6652, 6892, 74, 6892, 6892, 3335, 6892, 7325, 6892, 6892, 634, 7326, 7327,
- 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 6892, 1, 6544, 6540, 4215, 6691, 6652, 809,
- 1, 2316, 6640, 3890, 6892, 6954, 6955, 6892, 6892, 375, 6892, 6892, 6459, 6892, 6892, 6892, 6892, 6892,
- 6652, 32, 423, 423, 6649, 423, 6649, 423, 6649, 423, 6649, 4716, 6652, 6892, 6892, 6892, 6892, 6892,
- 6892, 6892, 6892, 6892, 6892, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 2052, 6892,
- 6892, 6892, 6892, 6892, 6649, 2052, 6892, 6892, 6892, 375, 6643, 6892, 6892, 375, 6892, 6892, 6892, 375,
- 6892, 6892, 6892, 6892, 6892, 6892, 6649, 6892, 569, 6892, 6892, 6892, 6892, 745, 6892, 868, 6892, 6892,
- 6649, 7189, 7187, 7196, 7195, 7191, 7192, 7190, 7193, 7194, 7197, 7188, 7184, 7263, 7264, 7178, 7185,
- 7181, 7157, 7183, 7182, 7179, 7180, 7158, 37, 6906, 6906, 6906, 6906, 6906, 6892, 6906, 6892, 6892,
- 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6906, 6906, 6906, 6906, 6906,
- 6906, 6906, 6906, 6906, 6906, 6906, 6906, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892,
- 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6892, 6906,
- 6892, 6892, 6892, 6906, 6892, 6892, 6892, 6906 };
- }
-
- public final static char termAction[] = TermAction.termAction;
-
- @Override
- public final int termAction(int index) {
- return termAction[index];
- }
-
- public interface Asb {
- public final static char asb[] = { 0, 904, 7, 485, 1, 945, 837, 837, 837, 837, 651, 945, 663, 663, 583, 663,
- 120, 469, 122, 486, 486, 486, 486, 486, 486, 486, 486, 486, 665, 671, 676, 673, 680, 678, 685, 683, 687,
- 686, 688, 267, 689, 485, 485, 42, 42, 42, 42, 524, 223, 15, 15, 660, 42, 567, 171, 663, 663, 15, 524,
- 171, 171, 162, 469, 947, 41, 1124, 653, 1005, 485, 663, 665, 379, 379, 223, 485, 486, 486, 486, 486,
- 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 485, 485, 485, 485, 485, 485,
- 485, 485, 485, 485, 485, 485, 486, 171, 1070, 1070, 1070, 1070, 1126, 171, 15, 15, 649, 994, 1005, 79,
- 1005, 74, 1005, 9, 1005, 989, 651, 524, 567, 567, 15, 837, 486, 649, 527, 865, 855, 854, 405, 1012,
- 1012, 651, 122, 567, 41, 485, 522, 1123, 521, 523, 521, 171, 567, 673, 673, 671, 671, 671, 678, 678,
- 678, 678, 676, 676, 683, 680, 680, 686, 685, 687, 1082, 688, 945, 945, 945, 945, 524, 524, 1070, 43,
- 645, 469, 1047, 1045, 1052, 1050, 1054, 1053, 1055, 1056, 1069, 1070, 660, 524, 316, 174, 76, 381, 77,
- 651, 524, 524, 1126, 1070, 162, 567, 704, 171, 867, 869, 524, 1124, 486, 42, 669, 127, 171, 653, 524,
- 524, 523, 1124, 485, 485, 485, 485, 485, 945, 945, 622, 633, 633, 633, 633, 617, 651, 776, 486, 486,
- 486, 486, 486, 486, 486, 486, 486, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 486, 469,
- 317, 658, 656, 174, 524, 783, 578, 781, 1126, 79, 319, 524, 1126, 524, 171, 859, 847, 858, 869, 1126,
- 522, 171, 669, 649, 1123, 653, 524, 522, 171, 171, 171, 171, 223, 223, 524, 486, 1045, 1045, 1045, 1050,
- 1047, 1047, 1053, 1052, 1054, 1082, 1055, 317, 656, 322, 524, 174, 1082, 77, 837, 1128, 767, 1072, 174,
- 783, 782, 783, 783, 1126, 319, 319, 524, 524, 325, 485, 856, 856, 386, 386, 524, 863, 649, 792, 171,
- 524, 669, 670, 669, 485, 127, 772, 665, 653, 171, 171, 1126, 787, 485, 656, 656, 1124, 79, 79, 1070,
- 837, 521, 335, 1074, 518, 945, 783, 783, 783, 783, 524, 319, 321, 825, 321, 325, 485, 485, 869, 524,
- 1124, 171, 867, 847, 325, 416, 669, 223, 486, 567, 772, 524, 656, 655, 522, 340, 79, 729, 190, 522, 783,
- 783, 518, 709, 486, 1082, 394, 830, 524, 649, 783, 783, 570, 321, 322, 486, 524, 720, 869, 325, 670,
- 171, 567, 656, 710, 340, 340, 265, 1084, 308, 945, 77, 766, 190, 522, 783, 79, 651, 1074, 486, 486,
- 1123, 518, 839, 218, 571, 524, 322, 720, 171, 720, 322, 340, 340, 728, 308, 265, 843, 651, 1069, 837,
- 399, 399, 710, 79, 449, 839, 524, 945, 570, 524, 651, 651, 524, 945, 713, 720, 322, 729, 340, 710, 393,
- 709, 171, 651, 524, 190, 729, 190, 1068, 1068, 774, 450, 651, 524, 223, 524, 524, 524, 870, 713, 340,
- 485, 83, 518, 710, 524, 524, 190, 42, 42, 774, 449, 1082, 486, 1082, 710, 448, 945, 945, 945, 450, 945,
- 524, 275, 710, 710, 524, 79, 171, 524, 524, 170, 715, 322, 171, 322, 79, 524, 710, 1069, 441, 945, 441,
- 450, 1082, 450, 469, 469, 467, 448, 469, 710, 710, 726, 447, 42, 715, 322, 83, 710, 72, 792, 450, 171,
- 518, 171, 467, 308, 945, 171, 774, 83, 399, 171, 171, 429, 450, 726, 450, 710, 308, 485, 450, 447, 321,
- 1068, 79, 79, 979, 485, 448, 223, 710, 171, 708, 82, 521, 450, 171, 710, 708, 708, 450 };
- }
-
- public final static char asb[] = Asb.asb;
-
- @Override
- public final int asb(int index) {
- return asb[index];
- }
-
- public interface Asr {
- public final static byte asr[] = { 0, 9, 71, 118, 72, 40, 68, 120, 0, 4, 9, 69, 1, 2, 0, 41, 66, 42, 43, 67, 8,
- 44, 45, 46, 47, 59, 48, 49, 50, 51, 52, 38, 36, 37, 7, 5, 34, 35, 6, 39, 64, 3, 4, 10, 1, 2, 56, 57, 58,
- 12, 21, 11, 17, 15, 16, 18, 19, 14, 13, 20, 25, 31, 32, 27, 30, 29, 22, 26, 23, 24, 28, 33, 53, 0, 55,
- 4, 71, 1, 2, 69, 9, 0, 73, 59, 36, 37, 7, 5, 34, 35, 39, 45, 3, 4, 50, 51, 52, 38, 48, 43, 47, 12, 21,
- 11, 17, 15, 16, 18, 19, 14, 13, 20, 10, 42, 46, 44, 41, 49, 69, 9, 8, 6, 1, 2, 67, 66, 0, 98, 91, 34,
- 35, 99, 100, 86, 87, 54, 89, 90, 92, 93, 94, 95, 96, 101, 102, 71, 97, 70, 103, 104, 105, 106, 107, 108,
- 109, 110, 111, 112, 118, 73, 40, 120, 64, 1, 2, 7, 5, 4, 3, 60, 68, 72, 9, 0, 88, 61, 8, 114, 115, 116,
- 63, 9, 3, 7, 5, 6, 71, 73, 40, 62, 25, 11, 12, 53, 23, 13, 56, 26, 27, 14, 28, 29, 15, 16, 30, 31, 17,
- 18, 32, 57, 55, 33, 10, 58, 19, 20, 24, 21, 1, 2, 4, 22, 0, 9, 72, 11, 12, 41, 66, 13, 42, 43, 14, 15,
- 16, 67, 8, 44, 17, 18, 45, 46, 47, 59, 48, 49, 10, 19, 20, 21, 50, 51, 52, 1, 2, 3, 36, 37, 7, 5, 34,
- 35, 6, 39, 4, 38, 0, 64, 71, 97, 68, 118, 72, 73, 120, 11, 12, 41, 66, 13, 42, 43, 14, 15, 16, 67, 44,
- 17, 18, 45, 46, 47, 59, 48, 49, 10, 19, 20, 21, 50, 51, 52, 38, 36, 37, 34, 35, 39, 9, 40, 6, 8, 1, 2,
- 4, 3, 7, 5, 0, 1, 2, 68, 73, 9, 0, 23, 59, 24, 9, 64, 97, 70, 68, 72, 0, 9, 71, 69, 74, 0, 65, 25, 11,
- 12, 53, 23, 13, 56, 26, 88, 27, 14, 28, 29, 15, 16, 30, 61, 31, 17, 18, 32, 57, 33, 10, 58, 19, 63, 22,
- 20, 24, 21, 9, 3, 7, 5, 73, 40, 62, 8, 6, 55, 1, 2, 4, 0, 74, 64, 71, 97, 72, 69, 60, 3, 9, 68, 40, 70,
- 0, 64, 70, 68, 1, 2, 0, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 25, 23, 26, 27, 28, 29, 30, 31, 32,
- 33, 22, 24, 40, 9, 72, 8, 1, 2, 60, 3, 7, 5, 6, 4, 0, 88, 114, 115, 116, 55, 71, 113, 121, 73, 62, 74,
- 63, 61, 65, 76, 78, 84, 82, 75, 80, 81, 83, 85, 69, 77, 79, 40, 9, 25, 53, 23, 56, 26, 27, 28, 29, 30,
- 31, 32, 57, 33, 58, 22, 24, 59, 66, 67, 10, 42, 46, 44, 41, 49, 12, 21, 11, 17, 15, 16, 18, 19, 14, 13,
- 20, 50, 51, 52, 38, 48, 43, 47, 36, 37, 34, 35, 39, 45, 7, 5, 3, 4, 8, 6, 1, 2, 0, 66, 67, 3, 10, 42,
- 46, 44, 41, 49, 12, 21, 11, 17, 15, 16, 18, 19, 14, 13, 20, 50, 51, 52, 38, 48, 43, 47, 6, 8, 4, 36, 37,
- 7, 5, 34, 35, 39, 45, 1, 2, 118, 9, 0, 22, 1, 2, 4, 114, 115, 116, 0, 4, 9, 71, 69, 0, 67, 66, 34, 35,
- 99, 100, 94, 95, 6, 39, 70, 54, 106, 107, 103, 104, 105, 111, 110, 112, 87, 86, 108, 109, 92, 93, 89,
- 90, 96, 101, 36, 37, 91, 117, 10, 56, 53, 57, 58, 12, 21, 11, 17, 15, 16, 18, 19, 14, 13, 20, 25, 31,
- 32, 27, 30, 29, 22, 26, 23, 24, 28, 33, 64, 68, 3, 60, 7, 5, 1, 2, 4, 0, 59, 23, 24, 8, 6, 1, 2, 4, 74,
- 69, 119, 117, 36, 37, 60, 3, 98, 91, 5, 99, 100, 34, 35, 87, 86, 54, 89, 90, 92, 93, 7, 94, 95, 96, 64,
- 97, 72, 120, 70, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 71, 118, 101, 102, 73, 68, 40, 9, 0,
- 23, 24, 74, 3, 71, 40, 69, 59, 9, 64, 97, 68, 72, 70, 0, 69, 53, 23, 13, 56, 26, 14, 28, 29, 15, 16, 30,
- 31, 17, 18, 32, 57, 33, 58, 19, 22, 20, 24, 21, 12, 11, 25, 9, 3, 7, 5, 40, 63, 65, 88, 27, 62, 55, 61,
- 8, 1, 2, 4, 10, 6, 0, 113, 0, 54, 64, 89, 90, 0, 4, 54, 9, 71, 69, 0, 72, 9, 87, 86, 0, 25, 11, 12, 53,
- 23, 13, 56, 26, 27, 14, 28, 29, 15, 16, 30, 31, 17, 18, 32, 57, 33, 10, 58, 19, 22, 20, 24, 21, 1, 2, 4,
- 97, 0, 9, 68, 73, 70, 0, 71, 9, 60, 3, 70, 68, 40, 54, 0, 9, 69, 68, 0, 9, 69, 70, 0, 7, 5, 8, 6, 4, 1,
- 2, 3, 60, 64, 70, 68, 9, 72, 97, 0, 6, 8, 3, 60, 5, 7, 97, 25, 11, 12, 53, 23, 13, 56, 26, 27, 14, 28,
- 29, 15, 16, 30, 31, 17, 18, 32, 57, 33, 10, 58, 19, 22, 20, 24, 21, 1, 2, 4, 72, 9, 0, 11, 12, 41, 66,
- 13, 42, 43, 14, 15, 16, 67, 8, 44, 17, 18, 45, 46, 47, 59, 48, 49, 10, 19, 20, 21, 50, 51, 52, 38, 1, 2,
- 36, 37, 7, 5, 34, 35, 6, 39, 4, 62, 3, 0, 66, 67, 36, 37, 34, 35, 39, 45, 50, 51, 52, 38, 48, 43, 47,
- 12, 21, 11, 17, 15, 16, 18, 19, 14, 13, 20, 10, 42, 46, 44, 41, 49, 7, 5, 3, 60, 8, 6, 4, 1, 2, 0, 10,
- 56, 53, 57, 58, 12, 21, 11, 17, 15, 16, 18, 19, 14, 13, 20, 74, 71, 97, 118, 73, 69, 120, 8, 31, 32, 33,
- 22, 24, 1, 2, 30, 29, 28, 27, 26, 6, 4, 23, 25, 119, 98, 117, 91, 36, 37, 34, 35, 99, 100, 9, 60, 3, 5,
- 72, 40, 87, 86, 54, 89, 90, 92, 93, 7, 94, 95, 96, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
- 111, 112, 70, 68, 64, 0, 40, 9, 3, 8, 6, 7, 5, 4, 1, 2, 71, 0, 53, 23, 13, 56, 26, 14, 28, 29, 15, 16,
- 30, 31, 17, 18, 32, 57, 33, 10, 58, 19, 22, 20, 24, 21, 12, 11, 25, 9, 3, 7, 40, 63, 61, 65, 88, 27, 62,
- 54, 4, 5, 8, 6, 1, 2, 55, 0 };
- }
-
- public final static byte asr[] = Asr.asr;
-
- @Override
- public final int asr(int index) {
- return asr[index];
- }
-
- public interface Nasb {
- public final static char nasb[] = { 0, 204, 12, 63, 12, 12, 12, 12, 12, 12, 67, 12, 12, 12, 130, 12, 220, 153,
- 27, 63, 63, 252, 63, 63, 63, 63, 63, 63, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 63, 12, 63, 195,
- 154, 154, 154, 154, 27, 81, 177, 177, 53, 5, 107, 232, 12, 12, 177, 256, 232, 232, 161, 1, 63, 56, 18,
- 12, 12, 195, 12, 12, 40, 40, 81, 195, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63,
- 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 195, 63, 232, 12, 12, 12, 12, 76, 232, 30, 30,
- 184, 274, 275, 212, 275, 50, 275, 13, 275, 268, 10, 27, 107, 107, 30, 12, 63, 184, 102, 160, 20, 20, 12,
- 12, 12, 10, 27, 107, 154, 84, 220, 126, 219, 27, 219, 232, 107, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 47, 11, 12, 245, 161, 148, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 226, 27, 12, 177, 46, 67, 24, 67, 27, 11, 12, 12, 224, 107, 12, 232, 198, 177, 27, 18,
- 63, 154, 177, 71, 232, 12, 11, 27, 157, 18, 63, 195, 195, 195, 195, 12, 12, 274, 275, 275, 275, 275,
- 294, 10, 12, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 195, 63,
- 30, 186, 186, 186, 302, 47, 109, 109, 12, 239, 212, 177, 239, 17, 47, 232, 12, 170, 12, 201, 16, 47,
- 232, 38, 226, 126, 12, 256, 47, 232, 232, 232, 232, 81, 81, 27, 63, 12, 12, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 177, 138, 27, 167, 12, 123, 12, 12, 79, 286, 302, 109, 109, 177, 177, 17, 177, 257, 11, 47,
- 177, 63, 12, 12, 20, 20, 27, 169, 184, 201, 232, 47, 177, 115, 12, 195, 226, 158, 12, 12, 232, 232, 17,
- 232, 63, 186, 117, 18, 212, 141, 12, 12, 67, 177, 179, 172, 12, 177, 177, 74, 74, 47, 257, 90, 12, 12,
- 117, 63, 63, 177, 11, 18, 232, 198, 214, 177, 12, 38, 81, 63, 107, 158, 47, 177, 117, 220, 177, 212,
- 277, 177, 239, 177, 94, 216, 167, 63, 12, 92, 12, 27, 184, 74, 74, 111, 90, 138, 63, 257, 177, 201, 117,
- 115, 232, 107, 117, 167, 259, 177, 12, 277, 287, 12, 140, 79, 201, 220, 94, 134, 119, 172, 63, 63, 87,
- 216, 12, 67, 58, 239, 138, 96, 232, 177, 138, 277, 259, 211, 179, 12, 12, 67, 12, 12, 98, 98, 167, 134,
- 137, 12, 239, 12, 188, 239, 67, 67, 11, 12, 177, 96, 138, 277, 177, 167, 143, 12, 232, 67, 239, 201,
- 277, 177, 12, 12, 177, 192, 119, 11, 81, 11, 239, 239, 230, 117, 259, 84, 61, 172, 167, 239, 124, 201,
- 154, 154, 69, 207, 12, 63, 12, 167, 12, 12, 12, 12, 208, 12, 257, 165, 167, 167, 257, 145, 232, 11, 11,
- 232, 177, 138, 232, 177, 212, 124, 167, 12, 100, 12, 12, 208, 12, 208, 282, 282, 234, 12, 282, 167, 167,
- 12, 177, 154, 96, 138, 177, 167, 12, 154, 208, 232, 172, 232, 264, 177, 12, 232, 69, 61, 98, 232, 232,
- 177, 208, 12, 208, 167, 172, 195, 208, 100, 138, 12, 145, 145, 170, 63, 12, 242, 167, 232, 22, 60, 219,
- 208, 232, 167, 22, 12, 208 };
- }
-
- public final static char nasb[] = Nasb.nasb;
-
- @Override
- public final int nasb(int index) {
- return nasb[index];
- }
-
- public interface Nasr {
- public final static char nasr[] = { 0, 3, 13, 10, 9, 137, 136, 113, 135, 134, 4, 2, 0, 166, 200, 0, 154, 2, 75,
- 0, 79, 0, 176, 0, 42, 1, 0, 2, 44, 0, 4, 10, 9, 2, 13, 127, 5, 0, 161, 0, 4, 2, 9, 10, 157, 0, 44, 2, 3,
- 0, 166, 205, 0, 5, 212, 0, 192, 0, 210, 0, 80, 148, 42, 10, 9, 2, 13, 4, 0, 175, 0, 5, 194, 0, 123, 0,
- 154, 75, 0, 170, 0, 5, 105, 0, 5, 28, 0, 75, 53, 0, 167, 0, 208, 0, 173, 0, 144, 0, 121, 0, 129, 0, 13,
- 2, 9, 10, 4, 94, 0, 122, 0, 4, 115, 209, 0, 159, 0, 51, 0, 186, 4, 185, 0, 140, 117, 0, 75, 156, 155, 0,
- 5, 60, 213, 0, 42, 174, 0, 5, 80, 0, 1, 140, 0, 201, 0, 42, 66, 0, 13, 2, 9, 10, 4, 36, 5, 60, 0, 2,
- 131, 0, 32, 100, 101, 5, 0, 5, 36, 39, 0, 32, 101, 100, 77, 4, 2, 9, 10, 5, 0, 5, 10, 9, 2, 77, 4, 98,
- 53, 0, 4, 115, 182, 0, 50, 42, 196, 5, 36, 0, 53, 4, 98, 27, 5, 0, 5, 191, 0, 80, 36, 50, 82, 5, 42, 0,
- 101, 100, 53, 77, 68, 4, 10, 9, 2, 0, 101, 100, 53, 4, 68, 0, 60, 5, 32, 0, 36, 5, 27, 198, 0, 2, 67, 0,
- 5, 195, 0, 137, 214, 136, 113, 135, 134, 0, 4, 10, 9, 13, 3, 1, 0, 132, 5, 50, 93, 0, 60, 5, 197, 0, 2,
- 4, 113, 110, 111, 112, 13, 69, 0, 5, 50, 93, 95, 0, 5, 60, 116, 0, 39, 4, 2, 9, 10, 5, 172, 0, 113, 69,
- 13, 110, 111, 112, 190, 0, 5, 50, 93, 115, 48, 4, 0 };
- }
-
- public final static char nasr[] = Nasr.nasr;
-
- @Override
- public final int nasr(int index) {
- return nasr[index];
- }
-
- public interface TerminalIndex {
- public final static char terminalIndex[] = { 0, 113, 114, 2, 31, 10, 13, 9, 79, 115, 100, 48, 52, 60, 68, 74,
- 75, 86, 87, 102, 105, 107, 104, 54, 106, 47, 64, 66, 70, 73, 76, 83, 89, 98, 11, 12, 7, 8, 112, 14, 120,
- 55, 61, 67, 84, 88, 90, 94, 97, 99, 109, 110, 111, 53, 19, 93, 63, 91, 101, 95, 1, 77, 122, 103, 20, 46,
- 58, 78, 44, 121, 33, 30, 118, 119, 96, 108, 49, 50, 56, 57, 59, 69, 71, 72, 85, 92, 17, 18, 65, 21, 22,
- 6, 23, 24, 25, 26, 27, 32, 4, 15, 16, 28, 29, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 51, 80, 81, 82, 5,
- 117, 3, 123, 62, 116 };
- }
-
- public final static char terminalIndex[] = TerminalIndex.terminalIndex;
-
- @Override
- public final int terminalIndex(int index) {
- return terminalIndex[index];
- }
-
- public interface NonterminalIndex {
- public final static char nonterminalIndex[] = { 0, 130, 135, 136, 0, 0, 134, 0, 0, 237, 243, 133, 0, 143, 0,
- 132, 0, 0, 142, 148, 0, 0, 149, 158, 159, 160, 161, 188, 151, 0, 162, 141, 126, 163, 164, 165, 131, 166,
- 167, 128, 168, 0, 129, 138, 137, 170, 169, 171, 185, 0, 0, 195, 172, 0, 173, 0, 0, 0, 0, 0, 152, 174,
- 175, 176, 0, 177, 180, 0, 155, 194, 0, 0, 0, 212, 0, 0, 209, 213, 0, 214, 127, 145, 179, 0, 0, 0, 0, 0,
- 0, 183, 0, 0, 0, 0, 125, 186, 0, 0, 210, 216, 217, 218, 0, 220, 157, 0, 146, 0, 0, 215, 197, 198, 199,
- 201, 227, 228, 182, 204, 0, 0, 219, 0, 0, 0, 0, 248, 0, 251, 0, 252, 0, 147, 187, 189, 190, 191, 192,
- 196, 200, 203, 0, 206, 0, 207, 0, 222, 225, 0, 0, 0, 246, 0, 247, 0, 0, 139, 140, 144, 0, 0, 154, 156,
- 0, 178, 0, 193, 0, 0, 0, 202, 0, 205, 211, 0, 223, 224, 0, 0, 229, 232, 0, 234, 236, 0, 240, 241, 242,
- 245, 0, 0, 249, 124, 0, 150, 153, 0, 181, 0, 184, 0, 0, 208, 221, 226, 0, 0, 230, 231, 233, 235, 0, 238,
- 239, 244, 250, 253, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static char nonterminalIndex[] = NonterminalIndex.nonterminalIndex;
-
- @Override
- public final int nonterminalIndex(int index) {
- return nonterminalIndex[index];
- }
-
- public interface ScopePrefix {
- public final static char scopePrefix[] = { 172, 324, 600, 619, 317, 332, 551, 567, 578, 589, 372, 280, 294, 311,
- 344, 55, 305, 392, 430, 180, 608, 502, 20, 33, 64, 84, 93, 98, 103, 143, 208, 339, 350, 20, 467, 157,
- 286, 300, 526, 40, 157, 382, 20, 627, 40, 230, 259, 1, 14, 27, 74, 89, 119, 27, 361, 365, 448, 495, 547,
- 637, 641, 645, 110, 7, 110, 410, 426, 439, 460, 479, 539, 129, 129, 245, 439, 558, 574, 585, 596, 220,
- 513, 69, 69, 169, 235, 238, 69, 254, 275, 238, 238, 69, 369, 492, 499, 169, 69, 660, 123, 355, 414, 454,
- 486, 472, 69, 355, 401, 190, 117, 452, 649, 656, 649, 656, 78, 420, 150, 117, 117, 264 };
- }
-
- public final static char scopePrefix[] = ScopePrefix.scopePrefix;
-
- @Override
- public final int scopePrefix(int index) {
- return scopePrefix[index];
- }
-
- public interface ScopeSuffix {
- public final static char scopeSuffix[] = { 18, 148, 5, 5, 148, 148, 5, 5, 5, 5, 379, 148, 108, 148, 25, 61, 291,
- 398, 436, 186, 80, 508, 25, 38, 38, 38, 72, 72, 108, 148, 213, 31, 31, 25, 5, 162, 291, 114, 531, 51,
- 165, 387, 614, 632, 45, 224, 224, 5, 18, 31, 5, 72, 108, 31, 108, 108, 148, 257, 5, 5, 5, 257, 658, 11,
- 114, 379, 379, 379, 464, 483, 531, 133, 138, 249, 443, 562, 562, 562, 562, 224, 517, 72, 72, 5, 5, 241,
- 243, 257, 5, 278, 278, 243, 108, 5, 257, 5, 524, 5, 126, 358, 417, 457, 489, 475, 543, 534, 404, 193,
- 108, 108, 651, 651, 653, 653, 80, 422, 152, 215, 200, 266 };
- }
-
- public final static char scopeSuffix[] = ScopeSuffix.scopeSuffix;
-
- @Override
- public final int scopeSuffix(int index) {
- return scopeSuffix[index];
- }
-
- public interface ScopeLhs {
- public final static char scopeLhs[] = { 48, 112, 18, 18, 92, 112, 18, 18, 18, 18, 85, 97, 49, 92, 111, 90, 58,
- 85, 84, 48, 18, 20, 190, 3, 7, 8, 182, 182, 178, 110, 48, 111, 111, 138, 45, 147, 59, 49, 157, 151, 147,
- 85, 18, 18, 151, 102, 72, 153, 88, 190, 185, 182, 178, 138, 199, 56, 66, 161, 18, 18, 18, 18, 12, 129,
- 178, 85, 84, 84, 64, 41, 157, 114, 114, 68, 84, 18, 18, 18, 18, 102, 20, 186, 182, 201, 100, 109, 74,
- 79, 73, 172, 89, 138, 86, 162, 161, 192, 157, 17, 178, 138, 116, 83, 22, 45, 157, 157, 85, 48, 178, 78,
- 155, 44, 155, 44, 185, 116, 110, 48, 48, 72 };
- }
-
- public final static char scopeLhs[] = ScopeLhs.scopeLhs;
-
- @Override
- public final int scopeLhs(int index) {
- return scopeLhs[index];
- }
-
- public interface ScopeLa {
- public final static byte scopeLa[] = { 113, 73, 72, 72, 73, 73, 72, 72, 72, 72, 72, 73, 40, 73, 1, 64, 1, 72,
- 121, 69, 3, 72, 1, 64, 64, 64, 1, 1, 40, 73, 69, 1, 1, 1, 72, 73, 1, 1, 4, 64, 68, 40, 1, 1, 64, 72, 72,
- 72, 113, 1, 72, 1, 40, 1, 40, 40, 73, 118, 72, 72, 72, 118, 1, 72, 1, 72, 72, 72, 71, 71, 4, 1, 1, 5,
- 72, 64, 64, 64, 64, 72, 3, 1, 1, 72, 72, 3, 1, 118, 72, 1, 1, 1, 40, 72, 118, 72, 6, 72, 1, 55, 70, 71,
- 72, 64, 1, 55, 75, 74, 40, 40, 4, 4, 4, 4, 3, 1, 69, 1, 1, 3 };
- }
-
- public final static byte scopeLa[] = ScopeLa.scopeLa;
-
- @Override
- public final int scopeLa(int index) {
- return scopeLa[index];
- }
-
- public interface ScopeStateSet {
- public final static char scopeStateSet[] = { 85, 183, 284, 284, 107, 183, 284, 284, 284, 284, 95, 109, 85, 107,
- 183, 107, 87, 95, 95, 85, 284, 284, 118, 214, 260, 260, 54, 54, 82, 183, 85, 183, 183, 185, 140, 371,
- 87, 85, 165, 50, 371, 95, 284, 284, 50, 174, 66, 26, 95, 118, 30, 54, 82, 185, 22, 87, 33, 63, 284, 284,
- 284, 284, 264, 6, 82, 95, 95, 95, 148, 344, 165, 183, 183, 124, 95, 284, 284, 284, 284, 174, 284, 30,
- 54, 24, 174, 176, 66, 170, 66, 60, 71, 185, 95, 57, 63, 168, 165, 284, 82, 185, 1, 95, 285, 140, 165,
- 165, 95, 85, 82, 11, 121, 189, 121, 189, 30, 1, 183, 85, 85, 66 };
- }
-
- public final static char scopeStateSet[] = ScopeStateSet.scopeStateSet;
-
- @Override
- public final int scopeStateSet(int index) {
- return scopeStateSet[index];
- }
-
- public interface ScopeRhs {
- public final static char scopeRhs[] = { 0, 338, 3, 59, 0, 126, 0, 337, 3, 113, 0, 126, 180, 0, 127, 188, 74, 0,
- 224, 0, 197, 166, 126, 10, 0, 136, 0, 166, 126, 10, 0, 135, 0, 271, 127, 54, 124, 0, 20, 0, 309, 127,
- 54, 55, 0, 20, 53, 0, 33, 132, 0, 20, 53, 0, 0, 309, 127, 54, 55, 215, 0, 20, 186, 0, 271, 127, 54, 132,
- 0, 189, 126, 0, 141, 0, 227, 3, 308, 0, 308, 0, 2, 0, 126, 0, 271, 127, 54, 131, 0, 189, 126, 237, 0,
- 189, 126, 22, 237, 0, 189, 126, 332, 22, 0, 128, 197, 166, 126, 0, 128, 0, 197, 166, 126, 0, 134, 128,
- 0, 172, 0, 328, 127, 172, 0, 127, 172, 0, 230, 128, 0, 166, 327, 235, 0, 136, 0, 0, 0, 0, 135, 0, 0, 0,
- 0, 326, 127, 164, 236, 0, 127, 0, 236, 0, 129, 0, 0, 127, 0, 325, 127, 164, 270, 0, 127, 0, 0, 44, 127,
- 0, 0, 150, 3, 0, 127, 296, 295, 127, 74, 294, 172, 0, 295, 127, 74, 294, 172, 0, 223, 0, 224, 0, 294,
- 172, 0, 96, 0, 0, 223, 0, 224, 0, 211, 96, 0, 0, 223, 0, 224, 0, 295, 127, 294, 172, 0, 223, 0, 211, 0,
- 0, 223, 0, 240, 127, 3, 0, 126, 0, 0, 0, 0, 0, 240, 127, 3, 222, 0, 231, 3, 0, 220, 127, 0, 216, 0, 146,
- 0, 175, 166, 126, 0, 10, 0, 0, 0, 0, 226, 60, 0, 125, 0, 240, 127, 3, 195, 0, 195, 0, 2, 0, 0, 126, 0,
- 0, 0, 0, 0, 211, 3, 0, 209, 0, 252, 127, 164, 38, 27, 0, 189, 126, 61, 63, 0, 204, 128, 0, 128, 189,
- 126, 292, 63, 0, 189, 126, 292, 63, 0, 189, 126, 70, 123, 61, 0, 252, 127, 164, 262, 61, 0, 252, 127,
- 164, 262, 239, 61, 0, 289, 290, 127, 164, 123, 322, 56, 0, 289, 290, 127, 164, 322, 56, 0, 189, 126,
- 288, 56, 0, 197, 189, 126, 288, 235, 0, 189, 126, 288, 235, 0, 166, 126, 0, 93, 136, 0, 286, 127, 149,
- 0, 286, 127, 172, 0, 158, 84, 0, 317, 161, 319, 320, 3, 81, 0, 126, 179, 0, 319, 320, 3, 81, 0, 128, 0,
- 126, 179, 0, 158, 3, 75, 204, 80, 0, 126, 128, 0, 204, 80, 0, 108, 2, 131, 126, 128, 0, 238, 3, 75, 0,
- 211, 182, 0, 33, 169, 0, 182, 0, 183, 33, 169, 0, 238, 3, 85, 0, 204, 154, 238, 3, 83, 0, 62, 179, 0,
- 238, 3, 83, 0, 126, 179, 62, 179, 0, 318, 127, 164, 0, 158, 0, 226, 77, 0, 30, 179, 0, 158, 102, 185, 0,
- 30, 177, 0, 148, 64, 167, 3, 0, 167, 3, 0, 20, 161, 126, 0, 158, 102, 162, 0, 30, 169, 0, 203, 3, 0,
- 126, 149, 0, 227, 3, 0, 226, 60, 283, 0, 158, 60, 0, 203, 3, 314, 67, 126, 0, 126, 0, 0, 0, 0, 314, 67,
- 126, 0, 2, 145, 126, 0, 0, 0, 0, 147, 0, 125, 55, 166, 126, 0, 31, 147, 0, 93, 136, 31, 147, 0, 228,
- 189, 126, 0, 146, 31, 147, 0, 158, 3, 49, 0, 158, 3, 64, 203, 54, 41, 0, 203, 54, 41, 0, 20, 2, 131,
- 126, 0, 158, 3, 64, 203, 54, 44, 0, 203, 54, 44, 0, 158, 3, 64, 203, 54, 46, 0, 203, 54, 46, 0, 158, 3,
- 64, 203, 54, 42, 0, 203, 54, 42, 0, 227, 3, 125, 197, 166, 126, 10, 0, 125, 197, 166, 126, 10, 0, 136,
- 2, 0, 126, 0, 227, 3, 124, 276, 166, 126, 10, 0, 276, 166, 126, 10, 0, 135, 2, 0, 126, 0, 227, 3, 135,
- 0, 227, 3, 140, 0, 158, 60, 140, 0, 278, 0, 31, 0, 31, 139, 0, 165, 0, 134, 0, 158, 3, 0 };
- }
-
- public final static char scopeRhs[] = ScopeRhs.scopeRhs;
-
- @Override
- public final int scopeRhs(int index) {
- return scopeRhs[index];
- }
-
- public interface ScopeState {
- public final static char scopeState[] = { 0, 5858, 6334, 6328, 5983, 0, 2804, 1340, 2010, 1062, 0, 5305, 5243,
- 5175, 5044, 4982, 4920, 4858, 4796, 4734, 4535, 4473, 4798, 0, 2593, 0, 2930, 2310, 1994, 0, 2273, 2141,
- 0, 5305, 5243, 2995, 2871, 5175, 5044, 4982, 4920, 4858, 4796, 2869, 4734, 4535, 4473, 2598, 2540, 0,
- 6109, 4896, 6039, 0, 4361, 2079, 0, 2445, 2088, 0, 652, 5997, 0, 823, 706, 0, 4677, 652, 4422, 4664,
- 5997, 4624, 5133, 2511, 2181, 3844, 3278, 2379, 4229, 4215, 4172, 0, 6234, 6195, 0, 6234, 6195, 5864,
- 6161, 6101, 5852, 6089, 6029, 5840, 5968, 5305, 5243, 5175, 5044, 4982, 4920, 4858, 4796, 4734, 4535,
- 4473, 0, 6234, 6195, 5864, 6161, 6101, 5852, 6089, 6029, 5840, 5968, 0, 6162, 5442, 0, 2318, 2244, 0,
- 3844, 4677, 4990, 4422, 4664, 6202, 4229, 2917, 3603, 2866, 4484, 4706, 2471, 3345, 2080, 0, 3408, 3509,
- 3620, 3565, 3857, 3817, 3707, 3293, 2877, 928, 2811, 2745, 2679, 2613, 2547, 2481, 2415, 2349, 2283,
- 2217, 2151, 836, 768, 676, 0, 868, 745, 0, 956, 0, 2260, 1954, 650, 648, 4664, 4706, 4624, 4215, 4172,
- 3257, 3890, 717, 0, 6162, 5442, 5962, 598, 4307, 0, 6315, 6301, 6263, 6246, 6110, 5872, 5314, 5184,
- 5011, 4949, 5264, 5195, 4887, 4867, 5073, 4564, 4328, 764, 3884, 4828, 4502, 4252, 924, 672, 0, 4262,
- 3978, 6315, 6301, 6263, 3903, 3898, 6246, 640, 6110, 5872, 5314, 5184, 5011, 1765, 3594, 1718, 1671,
- 4949, 1624, 5264, 5195, 1577, 1480, 1430, 1383, 4887, 4867, 1334, 3330, 5073, 3184, 4564, 3445, 4328,
- 764, 3884, 1248, 4828, 4502, 4252, 5962, 809, 4307, 924, 672, 2841, 2775, 1192, 1041, 903, 4624, 5133,
- 2511, 2181, 3844, 4677, 3278, 652, 4422, 4664, 2379, 4229, 4215, 5997, 4172, 2709, 2643, 868, 745, 5818,
- 2877, 4185, 928, 3408, 2811, 2745, 2679, 2613, 2547, 2481, 2415, 2349, 2283, 2217, 2151, 3509, 3620,
- 3565, 3857, 3817, 3707, 4145, 4118, 4091, 5795, 3293, 5772, 836, 768, 676, 3369, 3471, 1105, 1253, 3786,
- 3755, 3673, 4446, 4379, 4064, 4037, 4010, 3937, 5418, 5394, 5146, 4637, 4333, 5749, 5726, 5703, 5680,
- 5657, 5633, 5603, 5580, 5514, 5488, 5457, 2943, 3230, 3188, 3131, 3089, 3032, 2990, 1388, 1341, 1292,
- 2094, 2052, 2005, 1958, 1911, 1864, 1817, 1770, 1723, 1676, 1629, 1582, 1535, 598, 1488, 1438, 1206,
- 1057, 994, 1143, 0 };
- }
-
- public final static char scopeState[] = ScopeState.scopeState;
-
- @Override
- public final int scopeState(int index) {
- return scopeState[index];
- }
-
- public interface InSymb {
- public final static char inSymb[] = { 0, 0, 313, 127, 285, 49, 41, 44, 46, 42, 10, 135, 124, 131, 8, 132, 4, 3,
- 126, 45, 39, 6, 35, 34, 5, 7, 37, 36, 140, 145, 147, 146, 152, 148, 156, 155, 159, 157, 160, 59, 162,
- 68, 3, 54, 54, 54, 54, 126, 3, 54, 54, 182, 127, 60, 3, 66, 67, 54, 6, 203, 158, 182, 127, 66, 67, 166,
- 165, 124, 3, 123, 125, 117, 119, 3, 60, 91, 98, 35, 34, 100, 99, 5, 90, 89, 64, 54, 86, 87, 7, 93, 92,
- 95, 94, 96, 112, 111, 110, 109, 108, 107, 106, 105, 104, 103, 70, 102, 101, 158, 203, 203, 203, 203,
- 166, 227, 127, 127, 127, 255, 256, 236, 257, 235, 258, 56, 287, 259, 10, 126, 60, 60, 127, 124, 154,
- 127, 60, 3, 223, 222, 135, 125, 124, 10, 126, 60, 314, 3, 197, 4, 55, 126, 55, 227, 158, 146, 146, 145,
- 145, 145, 148, 148, 148, 148, 147, 147, 155, 152, 152, 157, 156, 159, 158, 160, 64, 64, 64, 64, 197,
- 276, 271, 127, 249, 3, 167, 148, 174, 169, 183, 176, 184, 185, 274, 271, 220, 126, 175, 164, 327, 288,
- 322, 288, 126, 189, 166, 271, 220, 226, 162, 231, 127, 3, 126, 166, 216, 3, 315, 182, 150, 278, 197,
- 126, 189, 166, 71, 3, 3, 3, 3, 125, 124, 255, 256, 257, 258, 336, 259, 10, 167, 90, 89, 54, 7, 93, 92,
- 95, 94, 96, 112, 111, 110, 109, 108, 107, 106, 105, 104, 103, 70, 102, 101, 68, 166, 7, 5, 127, 166,
- 243, 125, 124, 126, 123, 164, 126, 166, 55, 240, 241, 149, 242, 127, 166, 55, 203, 127, 127, 4, 228, 6,
- 55, 158, 158, 158, 158, 3, 3, 126, 64, 148, 148, 148, 169, 167, 167, 176, 174, 183, 158, 184, 175, 175,
- 326, 126, 170, 237, 61, 55, 215, 63, 172, 329, 125, 124, 244, 244, 189, 164, 127, 189, 197, 154, 70,
- 231, 211, 199, 195, 126, 3, 127, 68, 240, 197, 154, 280, 283, 60, 190, 4, 123, 125, 227, 227, 166, 148,
- 71, 5, 127, 166, 262, 239, 54, 55, 292, 294, 127, 3, 195, 244, 244, 127, 127, 197, 127, 290, 123, 291,
- 127, 70, 70, 3, 189, 166, 211, 127, 220, 154, 125, 127, 3, 60, 158, 4, 197, 175, 173, 197, 164, 262, 64,
- 54, 126, 74, 127, 220, 328, 71, 303, 211, 124, 126, 127, 127, 127, 71, 290, 289, 70, 68, 229, 127, 127,
- 280, 227, 226, 127, 128, 127, 164, 27, 55, 172, 65, 61, 63, 127, 189, 127, 295, 71, 68, 71, 70, 166,
- 220, 331, 237, 22, 126, 289, 127, 240, 229, 252, 254, 127, 38, 127, 3, 123, 61, 309, 55, 10, 53, 128,
- 295, 164, 307, 126, 308, 68, 126, 22, 332, 189, 59, 154, 127, 252, 127, 164, 286, 265, 293, 38, 70, 126,
- 68, 64, 54, 243, 243, 296, 127, 68, 189, 3, 189, 126, 126, 3, 127, 127, 3, 70, 68, 154, 126, 189, 127,
- 70, 70, 127, 318, 79, 77, 1, 158, 9, 85, 83, 81, 80, 75, 82, 84, 78, 76, 61, 74, 227, 189, 189, 338,
- 229, 252, 150, 164, 270, 189, 239, 309, 297, 113, 9, 71, 226, 71, 3, 3, 3, 204, 3, 123, 158, 123, 188,
- 68, 127, 127, 164, 239, 64, 3, 71, 238, 182, 238, 320, 149, 75, 238, 127, 127, 53, 97, 337, 182, 154,
- 211, 154, 319, 127, 3, 154, 297, 325, 243, 154, 154, 127, 70, 204, 161, 286, 158, 202, 68, 70, 121, 317,
- 154, 202, 9, 154 };
- }
-
- public final static char inSymb[] = InSymb.inSymb;
-
- @Override
- public final int inSymb(int index) {
- return inSymb[index];
- }
-
- public interface Name {
- public final static String name[] = { "", "[", "(", ".", ".*", "->", "->*", "++", "--", "&", "*", "+", "-", "~",
- "!", "/", "%", ">>", "<<", "<", ">", "<=", ">=", "==", "!=", "^", "|", "&&", "||", "?", ":", "::",
- "...", "=", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", ",", "$empty", "asm", "auto",
- "bool", "break", "case", "catch", "char", "class", "const", "const_cast", "continue", "default",
- "delete", "do", "double", "dynamic_cast", "else", "enum", "explicit", "export", "extern", "false",
- "float", "for", "friend", "goto", "if", "inline", "int", "long", "mutable", "namespace", "new",
- "operator", "private", "protected", "public", "register", "reinterpret_cast", "return", "short",
- "signed", "sizeof", "static", "static_cast", "struct", "switch", "template", "this", "throw", "try",
- "true", "typedef", "typeid", "typename", "union", "unsigned", "using", "virtual", "void", "volatile",
- "wchar_t", "while", "integer", "floating", "charconst", "stringlit", "identifier", "Completion",
- "EndOfCompletion", "Invalid", "RightBracket", "RightParen", "RightBrace", "SemiColon", "LeftBrace",
- "ERROR_TOKEN", "EOF_TOKEN", "no_sizeof_type_id_start", "]", ")", "}", ";", "{", "identifier_token",
- "expression", "id_expression", "qualified_or_unqualified_name", "unqualified_id_name",
- "identifier_name", "template_id_name", "nested_name_specifier", "class_or_namespace_name",
- "nested_name_specifier_with_tem" + "plate", "class_or_namespace_name_with_t" + "emplate", "class_name",
- "postfix_expression", "simple_type_specifier", "pseudo_destructor_name", "type_id", "type_name",
- "destructor_type_name", "unary_expression", "cast_expression", "new_type_id", "expression_list",
- "type_specifier_seq", "new_declarator", "new_pointer_operators", "ptr_operator",
- "new_array_expressions", "constant_expression", "pm_expression", "multiplicative_expression",
- "additive_expression", "shift_expression", "relational_expression", "equality_expression",
- "and_expression", "exclusive_or_expression", "inclusive_or_expression", "logical_and_expression",
- "logical_or_expression", "assignment_expression", "relational_expression_inTempla" + "te",
- "equality_expression_inTemplate", "and_expression_inTemplate",
- "exclusive_or_expression_inTemp" + "late", "inclusive_or_expression_inTemp" + "late",
- "logical_and_expression_inTempl" + "ate", "logical_or_expression_inTempla" + "te",
- "assignment_expression_inTempla" + "te", "expression_list_actual", "statement", "compound_statement",
- "statement_seq", "condition", "declarator", "for_init_statement", "function_definition", "declaration",
- "declaration_seq", "declaration_specifiers", "simple_declaration_specifiers",
- "class_declaration_specifiers", "elaborated_declaration_specifi" + "ers", "enum_declaration_specifiers",
- "type_name_declaration_specifie" + "rs", "no_type_declaration_specifier", "cv_qualifier",
- "no_type_declaration_specifiers", "class_specifier", "elaborated_type_specifier", "enum_specifier",
- "type_name_specifier", "class_keyword", "enumerator_list", "enumerator_definition", "namespace_name",
- "init_declarator_list", "init_declarator_complete", "complete_declarator", "initializer",
- "direct_declarator", "ptr_operator_seq", "function_declarator", "basic_direct_declarator",
- "array_direct_declarator", "array_modifier", "abstract_declarator", "direct_abstract_declarator",
- "basic_direct_abstract_declarat" + "or", "array_direct_abstract_declarat" + "or",
- "parameter_declaration_list", "parameter_declaration", "parameter_init_declarator",
- "parameter_initializer", "function_body", "handler_seq", "initializer_clause", "initializer_seq",
- "class_head", "access_specifier_keyword", "member_declaration", "member_declarator_list",
- "member_declaration_list", "member_declarator_complete", "constant_initializer", "bit_field_declarator",
- "base_specifier_list", "base_specifier", "conversion_function_id", "conversion_type_id",
- "conversion_declarator", "mem_initializer_list", "mem_initializer", "mem_initializer_name",
- "operator_id_name", "overloadable_operator", "template_parameter_list", "template_parameter",
- "template_argument_list", "template_argument", "type_name_specifier_inTemplate",
- "type_name_declaration_specifie" + "rs_inTemplate", "type_specifier_seq_inTemplate", "handler",
- "exception_declaration", "type_id_list" };
- }
-
- public final static String name[] = Name.name;
-
- @Override
- public final String name(int index) {
- return name[index];
- }
-
- public final static int ERROR_SYMBOL = 62, SCOPE_UBOUND = 119, SCOPE_SIZE = 120, MAX_NAME_LENGTH = 43;
-
- @Override
- public final int getErrorSymbol() {
- return ERROR_SYMBOL;
- }
-
- @Override
- public final int getScopeUbound() {
- return SCOPE_UBOUND;
- }
-
- @Override
- public final int getScopeSize() {
- return SCOPE_SIZE;
- }
-
- @Override
- public final int getMaxNameLength() {
- return MAX_NAME_LENGTH;
- }
-
- public final static int NUM_STATES = 602, NT_OFFSET = 122, LA_STATE_OFFSET = 7489, MAX_LA = 2147483647,
- NUM_RULES = 597, NUM_NONTERMINALS = 225, NUM_SYMBOLS = 347, SEGMENT_SIZE = 8192, START_STATE = 4508,
- IDENTIFIER_SYMBOL = 0, EOFT_SYMBOL = 120, EOLT_SYMBOL = 120, ACCEPT_ACTION = 6452, ERROR_ACTION = 6892;
-
- public final static boolean BACKTRACK = true;
-
- @Override
- public final int getNumStates() {
- return NUM_STATES;
- }
-
- @Override
- public final int getNtOffset() {
- return NT_OFFSET;
- }
-
- @Override
- public final int getLaStateOffset() {
- return LA_STATE_OFFSET;
- }
-
- @Override
- public final int getMaxLa() {
- return MAX_LA;
- }
-
- @Override
- public final int getNumRules() {
- return NUM_RULES;
- }
-
- @Override
- public final int getNumNonterminals() {
- return NUM_NONTERMINALS;
- }
-
- @Override
- public final int getNumSymbols() {
- return NUM_SYMBOLS;
- }
-
- @Override
- public final int getSegmentSize() {
- return SEGMENT_SIZE;
- }
-
- @Override
- public final int getStartState() {
- return START_STATE;
- }
-
- @Override
- public final int getStartSymbol() {
- return lhs[0];
- }
-
- public final int getIdentifierSymbol() {
- return IDENTIFIER_SYMBOL;
- }
-
- @Override
- public final int getEoftSymbol() {
- return EOFT_SYMBOL;
- }
-
- @Override
- public final int getEoltSymbol() {
- return EOLT_SYMBOL;
- }
-
- @Override
- public final int getAcceptAction() {
- return ACCEPT_ACTION;
- }
-
- @Override
- public final int getErrorAction() {
- return ERROR_ACTION;
- }
-
- @Override
- public final boolean isValidForParser() {
- return isValidForParser;
- }
-
- @Override
- public final boolean getBacktrack() {
- return BACKTRACK;
- }
-
- @Override
- public final int originalState(int state) {
- return -baseCheck[state];
- }
-
- @Override
- public final int asi(int state) {
- return asb[originalState(state)];
- }
-
- @Override
- public final int nasi(int state) {
- return nasb[originalState(state)];
- }
-
- @Override
- public final int inSymbol(int state) {
- return inSymb[originalState(state)];
- }
-
- @Override
- public final int ntAction(int state, int sym) {
- return baseAction[state + sym];
- }
-
- @Override
- public final int tAction(int state, int sym) {
- int i = baseAction[state], k = i + sym;
- return termAction[termCheck[k] == sym ? k : i];
- }
-
- @Override
- public final int lookAhead(int la_state, int sym) {
- int k = la_state + sym;
- return termAction[termCheck[k] == sym ? k : la_state];
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPSizeofExpressionParsersym.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPSizeofExpressionParsersym.java
deleted file mode 100644
index f40ff747025..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPSizeofExpressionParsersym.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2010 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.dom.lrparser.cpp;
-
-public interface CPPSizeofExpressionParsersym {
- public final static int TK_asm = 65, TK_auto = 25, TK_bool = 11, TK_break = 76, TK_case = 77, TK_catch = 113,
- TK_char = 12, TK_class = 53, TK_const = 23, TK_const_cast = 41, TK_continue = 78, TK_default = 79,
- TK_delete = 66, TK_do = 80, TK_double = 13, TK_dynamic_cast = 42, TK_else = 121, TK_enum = 56,
- TK_explicit = 26, TK_export = 88, TK_extern = 27, TK_false = 43, TK_float = 14, TK_for = 81, TK_friend = 28,
- TK_goto = 82, TK_if = 83, TK_inline = 29, TK_int = 15, TK_long = 16, TK_mutable = 30, TK_namespace = 61,
- TK_new = 67, TK_operator = 8, TK_private = 114, TK_protected = 115, TK_public = 116, TK_register = 31,
- TK_reinterpret_cast = 44, TK_return = 84, TK_short = 17, TK_signed = 18, TK_sizeof = 45, TK_static = 32,
- TK_static_cast = 46, TK_struct = 57, TK_switch = 85, TK_template = 55, TK_this = 47, TK_throw = 59,
- TK_try = 74, TK_true = 48, TK_typedef = 33, TK_typeid = 49, TK_typename = 10, TK_union = 58,
- TK_unsigned = 19, TK_using = 63, TK_virtual = 22, TK_void = 20, TK_volatile = 24, TK_wchar_t = 21,
- TK_while = 75, TK_integer = 50, TK_floating = 51, TK_charconst = 52, TK_stringlit = 38, TK_identifier = 1,
- TK_Completion = 2, TK_EndOfCompletion = 9, TK_Invalid = 122, TK_LeftBracket = 60, TK_LeftParen = 3,
- TK_Dot = 119, TK_DotStar = 98, TK_Arrow = 117, TK_ArrowStar = 91, TK_PlusPlus = 36, TK_MinusMinus = 37,
- TK_And = 7, TK_Star = 5, TK_Plus = 34, TK_Minus = 35, TK_Tilde = 6, TK_Bang = 39, TK_Slash = 99,
- TK_Percent = 100, TK_RightShift = 86, TK_LeftShift = 87, TK_LT = 54, TK_GT = 64, TK_LE = 89, TK_GE = 90,
- TK_EQ = 92, TK_NE = 93, TK_Caret = 94, TK_Or = 95, TK_AndAnd = 96, TK_OrOr = 101, TK_Question = 102,
- TK_Colon = 71, TK_ColonColon = 4, TK_DotDotDot = 97, TK_Assign = 70, TK_StarAssign = 103,
- TK_SlashAssign = 104, TK_PercentAssign = 105, TK_PlusAssign = 106, TK_MinusAssign = 107,
- TK_RightShiftAssign = 108, TK_LeftShiftAssign = 109, TK_AndAssign = 110, TK_CaretAssign = 111,
- TK_OrAssign = 112, TK_Comma = 68, TK_RightBracket = 118, TK_RightParen = 72, TK_RightBrace = 73,
- TK_SemiColon = 40, TK_LeftBrace = 69, TK_ERROR_TOKEN = 62, TK_EOF_TOKEN = 120;
-
- public final static String orderedTerminalSymbols[] = { "", "identifier", "Completion", "LeftParen", "ColonColon",
- "Star", "Tilde", "And", "operator", "EndOfCompletion", "typename", "bool", "char", "double", "float", "int",
- "long", "short", "signed", "unsigned", "void", "wchar_t", "virtual", "const", "volatile", "auto",
- "explicit", "extern", "friend", "inline", "mutable", "register", "static", "typedef", "Plus", "Minus",
- "PlusPlus", "MinusMinus", "stringlit", "Bang", "SemiColon", "const_cast", "dynamic_cast", "false",
- "reinterpret_cast", "sizeof", "static_cast", "this", "true", "typeid", "integer", "floating", "charconst",
- "class", "LT", "template", "enum", "struct", "union", "throw", "LeftBracket", "namespace", "ERROR_TOKEN",
- "using", "GT", "asm", "delete", "new", "Comma", "LeftBrace", "Assign", "Colon", "RightParen", "RightBrace",
- "try", "while", "break", "case", "continue", "default", "do", "for", "goto", "if", "return", "switch",
- "RightShift", "LeftShift", "export", "LE", "GE", "ArrowStar", "EQ", "NE", "Caret", "Or", "AndAnd",
- "DotDotDot", "DotStar", "Slash", "Percent", "OrOr", "Question", "StarAssign", "SlashAssign",
- "PercentAssign", "PlusAssign", "MinusAssign", "RightShiftAssign", "LeftShiftAssign", "AndAssign",
- "CaretAssign", "OrAssign", "catch", "private", "protected", "public", "Arrow", "RightBracket", "Dot",
- "EOF_TOKEN", "else", "Invalid" };
-
- public final static boolean isValidForParser = true;
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPTemplateTypeParameterParser.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPTemplateTypeParameterParser.java
deleted file mode 100644
index 8ddcf5742da..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPTemplateTypeParameterParser.java
+++ /dev/null
@@ -1,2867 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2015 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.dom.lrparser.cpp;
-
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.cdt.core.dom.ast.IASTCompletionNode;
-import org.eclipse.cdt.core.dom.ast.IASTUnaryExpression;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTBinaryExpression;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCastExpression;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTLiteralExpression;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateParameter;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTypeIdExpression;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTUnaryExpression;
-import org.eclipse.cdt.core.dom.lrparser.CPreprocessorAdapter;
-import org.eclipse.cdt.core.dom.lrparser.IDOMTokenMap;
-import org.eclipse.cdt.core.dom.lrparser.ISecondaryParser;
-import org.eclipse.cdt.core.dom.lrparser.ITokenCollector;
-import org.eclipse.cdt.core.dom.lrparser.action.ITokenMap;
-import org.eclipse.cdt.core.dom.lrparser.action.ITokenStream;
-import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack;
-import org.eclipse.cdt.core.dom.lrparser.action.TokenMap;
-import org.eclipse.cdt.core.dom.lrparser.action.cpp.CPPBuildASTParserAction;
-import org.eclipse.cdt.core.dom.lrparser.action.cpp.CPPSecondaryParserFactory;
-import org.eclipse.cdt.core.dom.lrparser.lpgextensions.FixedBacktrackingParser;
-import org.eclipse.cdt.core.dom.parser.IBuiltinBindingsProvider;
-import org.eclipse.cdt.core.index.IIndex;
-import org.eclipse.cdt.core.parser.IScanner;
-import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPNodeFactory;
-
-import lpg.lpgjavaruntime.BadParseException;
-import lpg.lpgjavaruntime.BadParseSymFileException;
-import lpg.lpgjavaruntime.DiagnoseParser;
-import lpg.lpgjavaruntime.ErrorToken;
-import lpg.lpgjavaruntime.IToken;
-import lpg.lpgjavaruntime.LexStream;
-import lpg.lpgjavaruntime.Monitor;
-import lpg.lpgjavaruntime.NotBacktrackParseTableException;
-import lpg.lpgjavaruntime.NullExportedSymbolsException;
-import lpg.lpgjavaruntime.NullTerminalSymbolsException;
-import lpg.lpgjavaruntime.ParseErrorCodes;
-import lpg.lpgjavaruntime.ParseTable;
-import lpg.lpgjavaruntime.PrsStream;
-import lpg.lpgjavaruntime.RuleAction;
-import lpg.lpgjavaruntime.Token;
-import lpg.lpgjavaruntime.UndefinedEofSymbolException;
-import lpg.lpgjavaruntime.UnimplementedTerminalsException;
-
-public class CPPTemplateTypeParameterParser extends PrsStream
- implements RuleAction, ITokenStream, ITokenCollector, ISecondaryParser<ICPPASTTemplateParameter> {
- private static ParseTable prs = new CPPTemplateTypeParameterParserprs();
- private FixedBacktrackingParser btParser;
-
- public FixedBacktrackingParser getParser() {
- return btParser;
- }
-
- private void setResult(Object object) {
- btParser.setSym1(object);
- }
-
- public Object getRhsSym(int i) {
- return btParser.getSym(i);
- }
-
- public int getRhsTokenIndex(int i) {
- return btParser.getToken(i);
- }
-
- public IToken getRhsIToken(int i) {
- return super.getIToken(getRhsTokenIndex(i));
- }
-
- public int getRhsFirstTokenIndex(int i) {
- return btParser.getFirstToken(i);
- }
-
- public IToken getRhsFirstIToken(int i) {
- return super.getIToken(getRhsFirstTokenIndex(i));
- }
-
- public int getRhsLastTokenIndex(int i) {
- return btParser.getLastToken(i);
- }
-
- public IToken getRhsLastIToken(int i) {
- return super.getIToken(getRhsLastTokenIndex(i));
- }
-
- public int getLeftSpan() {
- return btParser.getFirstToken();
- }
-
- @Override
- public IToken getLeftIToken() {
- return super.getIToken(getLeftSpan());
- }
-
- public int getRightSpan() {
- return btParser.getLastToken();
- }
-
- @Override
- public IToken getRightIToken() {
- return super.getIToken(getRightSpan());
- }
-
- public int getRhsErrorTokenIndex(int i) {
- int index = btParser.getToken(i);
- IToken err = super.getIToken(index);
- return (err instanceof ErrorToken ? index : 0);
- }
-
- public ErrorToken getRhsErrorIToken(int i) {
- int index = btParser.getToken(i);
- IToken err = super.getIToken(index);
- return (ErrorToken) (err instanceof ErrorToken ? err : null);
- }
-
- public CPPTemplateTypeParameterParser(LexStream lexStream) {
- super(lexStream);
-
- try {
- super.remapTerminalSymbols(orderedTerminalSymbols(), CPPTemplateTypeParameterParserprs.EOFT_SYMBOL);
- } catch (NullExportedSymbolsException e) {
- } catch (NullTerminalSymbolsException e) {
- } catch (UnimplementedTerminalsException e) {
- java.util.ArrayList unimplemented_symbols = e.getSymbols();
- System.out.println("The Lexer will not scan the following token(s):");
- for (int i = 0; i < unimplemented_symbols.size(); i++) {
- Integer id = (Integer) unimplemented_symbols.get(i);
- System.out.println(" " + CPPTemplateTypeParameterParsersym.orderedTerminalSymbols[id.intValue()]);
- }
- System.out.println();
- } catch (UndefinedEofSymbolException e) {
- throw new Error(new UndefinedEofSymbolException("The Lexer does not implement the Eof symbol "
- + CPPTemplateTypeParameterParsersym.orderedTerminalSymbols[CPPTemplateTypeParameterParserprs.EOFT_SYMBOL]));
- }
- }
-
- @Override
- public String[] orderedTerminalSymbols() {
- return CPPTemplateTypeParameterParsersym.orderedTerminalSymbols;
- }
-
- public String getTokenKindName(int kind) {
- return CPPTemplateTypeParameterParsersym.orderedTerminalSymbols[kind];
- }
-
- public int getEOFTokenKind() {
- return CPPTemplateTypeParameterParserprs.EOFT_SYMBOL;
- }
-
- public PrsStream getParseStream() {
- return this;
- }
-
- //
- // Report error message for given error_token.
- //
- public final void reportErrorTokenMessage(int error_token, String msg) {
- int firsttok = super.getFirstErrorToken(error_token), lasttok = super.getLastErrorToken(error_token);
- String location = super.getFileName() + ':'
- + (firsttok > lasttok ? (super.getEndLine(lasttok) + ":" + super.getEndColumn(lasttok))
- : (super.getLine(error_token) + ":" + super.getColumn(error_token) + ":"
- + super.getEndLine(error_token) + ":" + super.getEndColumn(error_token)))
- + ": ";
- super.reportError((firsttok > lasttok ? ParseErrorCodes.INSERTION_CODE : ParseErrorCodes.SUBSTITUTION_CODE),
- location, msg);
- }
-
- public void parser() {
- parser(null, 0);
- }
-
- public void parser(Monitor monitor) {
- parser(monitor, 0);
- }
-
- public void parser(int error_repair_count) {
- parser(null, error_repair_count);
- }
-
- public void parser(Monitor monitor, int error_repair_count) {
- try {
- btParser = new FixedBacktrackingParser(monitor, this, prs, this);
- } catch (NotBacktrackParseTableException e) {
- throw new Error(new NotBacktrackParseTableException(
- "Regenerate CPPTemplateTypeParameterParserprs.java with -BACKTRACK option"));
- } catch (BadParseSymFileException e) {
- throw new Error(
- new BadParseSymFileException("Bad Parser Symbol File -- CPPTemplateTypeParameterParsersym.java"));
- }
-
- try {
- btParser.parse(error_repair_count);
- } catch (BadParseException e) {
- reset(e.error_token); // point to error token
- DiagnoseParser diagnoseParser = new DiagnoseParser(this, prs);
- diagnoseParser.diagnose(e.error_token);
- }
- }
-
- private CPPBuildASTParserAction action;
- private IASTCompletionNode compNode;
-
- public CPPTemplateTypeParameterParser(IScanner scanner, IDOMTokenMap tokenMap,
- IBuiltinBindingsProvider builtinBindingsProvider, IIndex index, Map<String, String> properties) {
- initActions(properties);
- action.initializeTranslationUnit(scanner, builtinBindingsProvider, index);
- CPreprocessorAdapter.runCPreprocessor(scanner, this, tokenMap);
- }
-
- private void initActions(Map<String, String> properties) {
- ScopedStack<Object> astStack = new ScopedStack<>();
-
- action = new CPPBuildASTParserAction(this, astStack, CPPNodeFactory.getDefault(),
- CPPSecondaryParserFactory.getDefault());
- action.setParserProperties(properties);
-
- }
-
- @Override
- public void addToken(IToken token) {
- token.setKind(mapKind(token.getKind())); // TODO does mapKind need to be called?
- super.addToken(token);
- }
-
- @Override
- public ICPPASTTemplateParameter parse() {
- // this has to be done, or... kaboom!
- setStreamLength(getSize());
-
- final int errorRepairCount = -1; // -1 means full error handling
- parser(null, errorRepairCount); // do the actual parse
- super.resetTokenStream(); // allow tokens to be garbage collected
-
- compNode = action.getASTCompletionNode(); // the completion node may be null
- return (ICPPASTTemplateParameter) action.getParseResult();
- }
-
- @Override
- public IASTCompletionNode getCompletionNode() {
- return compNode;
- }
-
- // uncomment this method to use with backtracking parser
- @Override
- public List<IToken> getRuleTokens() {
- return getTokens().subList(getLeftSpan(), getRightSpan() + 1);
- }
-
- @Override
- public String[] getOrderedTerminalSymbols() {
- return CPPTemplateTypeParameterParsersym.orderedTerminalSymbols;
- }
-
- @Override
- @SuppressWarnings("nls")
- public String getName() {
- return "CPPTemplateTypeParameterParser";
- }
-
- private ITokenMap tokenMap = null;
-
- @Override
- public void setTokens(List<IToken> tokens) {
- resetTokenStream();
- addToken(new Token(null, 0, 0, 0)); // dummy token
- for (IToken token : tokens) {
- token.setKind(tokenMap.mapKind(token.getKind()));
- addToken(token);
- }
- addToken(new Token(null, 0, 0, CPPTemplateTypeParameterParsersym.TK_EOF_TOKEN));
- }
-
- public CPPTemplateTypeParameterParser(ITokenStream stream, Map<String, String> properties) { // constructor for creating secondary parser
- initActions(properties);
- tokenMap = new TokenMap(CPPTemplateTypeParameterParsersym.orderedTerminalSymbols,
- stream.getOrderedTerminalSymbols());
- }
-
- public CPPTemplateTypeParameterParser(ITokenStream stream, IScanner scanner,
- IBuiltinBindingsProvider builtinBindingsProvider, IIndex index, Map<String, String> properties) { // constructor for creating secondary parser
- initActions(properties);
- action.initializeTranslationUnit(scanner, builtinBindingsProvider, index);
- tokenMap = new TokenMap(CPPTemplateTypeParameterParsersym.orderedTerminalSymbols,
- stream.getOrderedTerminalSymbols());
- }
-
- @Override
- public void ruleAction(int ruleNumber) {
- switch (ruleNumber) {
-
- //
- // Rule 1: <openscope-ast> ::= $Empty
- //
- case 1: {
- action.openASTScope();
- break;
- }
-
- //
- // Rule 2: <empty> ::= $Empty
- //
- case 2: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 13: translation_unit ::= declaration_seq_opt
- //
- case 13: {
- action.consumeTranslationUnit();
- break;
- }
-
- //
- // Rule 16: literal ::= integer
- //
- case 16: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_integer_constant);
- break;
- }
-
- //
- // Rule 17: literal ::= floating
- //
- case 17: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_float_constant);
- break;
- }
-
- //
- // Rule 18: literal ::= charconst
- //
- case 18: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_char_constant);
- break;
- }
-
- //
- // Rule 19: literal ::= stringlit
- //
- case 19: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_string_literal);
- break;
- }
-
- //
- // Rule 20: literal ::= true
- //
- case 20: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_true);
- break;
- }
-
- //
- // Rule 21: literal ::= false
- //
- case 21: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_false);
- break;
- }
-
- //
- // Rule 22: literal ::= this
- //
- case 22: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_this);
- break;
- }
-
- //
- // Rule 24: primary_expression ::= ( expression )
- //
- case 24: {
- action.consumeExpressionBracketed();
- break;
- }
-
- //
- // Rule 26: id_expression ::= qualified_or_unqualified_name
- //
- case 26: {
- action.consumeExpressionName();
- break;
- }
-
- //
- // Rule 33: unqualified_id_name ::= ~ identifier_token
- //
- case 33: {
- action.consumeDestructorName();
- break;
- }
-
- //
- // Rule 34: unqualified_id_name ::= ~ template_id_name
- //
- case 34: {
- action.consumeDestructorNameTemplateId();
- break;
- }
-
- //
- // Rule 35: identifier_name ::= identifier_token
- //
- case 35: {
- action.consumeIdentifierName();
- break;
- }
-
- //
- // Rule 36: template_opt ::= template
- //
- case 36: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 37: template_opt ::= $Empty
- //
- case 37: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 38: dcolon_opt ::= ::
- //
- case 38: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 39: dcolon_opt ::= $Empty
- //
- case 39: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 40: qualified_id_name ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name
- //
- case 40: {
- action.consumeQualifiedId(true);
- break;
- }
-
- //
- // Rule 41: qualified_id_name ::= :: unqualified_id_name
- //
- case 41: {
- action.consumeGlobalQualifiedId();
- break;
- }
-
- //
- // Rule 42: nested_name_specifier ::= class_or_namespace_name :: nested_name_specifier_with_template
- //
- case 42: {
- action.consumeNestedNameSpecifier(true);
- break;
- }
-
- //
- // Rule 43: nested_name_specifier ::= class_or_namespace_name ::
- //
- case 43: {
- action.consumeNestedNameSpecifier(false);
- break;
- }
-
- //
- // Rule 44: nested_name_specifier_with_template ::= class_or_namespace_name_with_template :: nested_name_specifier_with_template
- //
- case 44: {
- action.consumeNestedNameSpecifier(true);
- break;
- }
-
- //
- // Rule 45: nested_name_specifier_with_template ::= class_or_namespace_name_with_template ::
- //
- case 45: {
- action.consumeNestedNameSpecifier(false);
- break;
- }
-
- //
- // Rule 46: class_or_namespace_name_with_template ::= template_opt class_or_namespace_name
- //
- case 46: {
- action.consumeNameWithTemplateKeyword();
- break;
- }
-
- //
- // Rule 48: nested_name_specifier_opt ::= $Empty
- //
- case 48: {
- action.consumeNestedNameSpecifierEmpty();
- break;
- }
-
- //
- // Rule 51: postfix_expression ::= postfix_expression [ expression ]
- //
- case 51: {
- action.consumeExpressionArraySubscript();
- break;
- }
-
- //
- // Rule 52: postfix_expression ::= postfix_expression ( expression_list_opt )
- //
- case 52: {
- action.consumeExpressionFunctionCall();
- break;
- }
-
- //
- // Rule 53: postfix_expression ::= simple_type_specifier ( expression_list_opt )
- //
- case 53: {
- action.consumeExpressionSimpleTypeConstructor();
- break;
- }
-
- //
- // Rule 54: postfix_expression ::= typename dcolon_opt nested_name_specifier <empty> identifier_name ( expression_list_opt )
- //
- case 54: {
- action.consumeExpressionTypeName();
- break;
- }
-
- //
- // Rule 55: postfix_expression ::= typename dcolon_opt nested_name_specifier template_opt template_id_name ( expression_list_opt )
- //
- case 55: {
- action.consumeExpressionTypeName();
- break;
- }
-
- //
- // Rule 56: postfix_expression ::= postfix_expression . qualified_or_unqualified_name
- //
- case 56: {
- action.consumeExpressionFieldReference(false, false);
- break;
- }
-
- //
- // Rule 57: postfix_expression ::= postfix_expression -> qualified_or_unqualified_name
- //
- case 57: {
- action.consumeExpressionFieldReference(true, false);
- break;
- }
-
- //
- // Rule 58: postfix_expression ::= postfix_expression . template qualified_or_unqualified_name
- //
- case 58: {
- action.consumeExpressionFieldReference(false, true);
- break;
- }
-
- //
- // Rule 59: postfix_expression ::= postfix_expression -> template qualified_or_unqualified_name
- //
- case 59: {
- action.consumeExpressionFieldReference(true, true);
- break;
- }
-
- //
- // Rule 60: postfix_expression ::= postfix_expression . pseudo_destructor_name
- //
- case 60: {
- action.consumeExpressionFieldReference(false, false);
- break;
- }
-
- //
- // Rule 61: postfix_expression ::= postfix_expression -> pseudo_destructor_name
- //
- case 61: {
- action.consumeExpressionFieldReference(true, false);
- break;
- }
-
- //
- // Rule 62: postfix_expression ::= postfix_expression ++
- //
- case 62: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixIncr);
- break;
- }
-
- //
- // Rule 63: postfix_expression ::= postfix_expression --
- //
- case 63: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixDecr);
- break;
- }
-
- //
- // Rule 64: postfix_expression ::= dynamic_cast < type_id > ( expression )
- //
- case 64: {
- action.consumeExpressionCast(ICPPASTCastExpression.op_dynamic_cast);
- break;
- }
-
- //
- // Rule 65: postfix_expression ::= static_cast < type_id > ( expression )
- //
- case 65: {
- action.consumeExpressionCast(ICPPASTCastExpression.op_static_cast);
- break;
- }
-
- //
- // Rule 66: postfix_expression ::= reinterpret_cast < type_id > ( expression )
- //
- case 66: {
- action.consumeExpressionCast(ICPPASTCastExpression.op_reinterpret_cast);
- break;
- }
-
- //
- // Rule 67: postfix_expression ::= const_cast < type_id > ( expression )
- //
- case 67: {
- action.consumeExpressionCast(ICPPASTCastExpression.op_const_cast);
- break;
- }
-
- //
- // Rule 68: postfix_expression ::= typeid ( expression )
- //
- case 68: {
- action.consumeExpressionUnaryOperator(ICPPASTUnaryExpression.op_typeid);
- break;
- }
-
- //
- // Rule 69: postfix_expression ::= typeid ( type_id )
- //
- case 69: {
- action.consumeExpressionTypeId(ICPPASTTypeIdExpression.op_typeid);
- break;
- }
-
- //
- // Rule 70: pseudo_destructor_name ::= dcolon_opt nested_name_specifier_opt type_name :: destructor_type_name
- //
- case 70: {
- action.consumePsudoDestructorName(true);
- break;
- }
-
- //
- // Rule 71: pseudo_destructor_name ::= dcolon_opt nested_name_specifier template template_id_name :: destructor_type_name
- //
- case 71: {
- action.consumePsudoDestructorName(true);
- break;
- }
-
- //
- // Rule 72: pseudo_destructor_name ::= dcolon_opt nested_name_specifier_opt destructor_type_name
- //
- case 72: {
- action.consumePsudoDestructorName(false);
- break;
- }
-
- //
- // Rule 73: destructor_type_name ::= ~ identifier_token
- //
- case 73: {
- action.consumeDestructorName();
- break;
- }
-
- //
- // Rule 74: destructor_type_name ::= ~ template_id_name
- //
- case 74: {
- action.consumeDestructorNameTemplateId();
- break;
- }
-
- //
- // Rule 78: unary_expression ::= ++ cast_expression
- //
- case 78: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixIncr);
- break;
- }
-
- //
- // Rule 79: unary_expression ::= -- cast_expression
- //
- case 79: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixDecr);
- break;
- }
-
- //
- // Rule 80: unary_expression ::= & cast_expression
- //
- case 80: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_amper);
- break;
- }
-
- //
- // Rule 81: unary_expression ::= * cast_expression
- //
- case 81: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_star);
- break;
- }
-
- //
- // Rule 82: unary_expression ::= + cast_expression
- //
- case 82: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_plus);
- break;
- }
-
- //
- // Rule 83: unary_expression ::= - cast_expression
- //
- case 83: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_minus);
- break;
- }
-
- //
- // Rule 84: unary_expression ::= ~ cast_expression
- //
- case 84: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_tilde);
- break;
- }
-
- //
- // Rule 85: unary_expression ::= ! cast_expression
- //
- case 85: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_not);
- break;
- }
-
- //
- // Rule 86: unary_expression ::= sizeof unary_expression
- //
- case 86: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_sizeof);
- break;
- }
-
- //
- // Rule 87: unary_expression ::= sizeof ( type_id )
- //
- case 87: {
- action.consumeExpressionTypeId(ICPPASTTypeIdExpression.op_sizeof);
- break;
- }
-
- //
- // Rule 88: new_expression ::= dcolon_opt new new_placement_opt new_type_id <openscope-ast> new_array_expressions_opt new_initializer_opt
- //
- case 88: {
- action.consumeExpressionNew(true);
- break;
- }
-
- //
- // Rule 89: new_expression ::= dcolon_opt new new_placement_opt ( type_id ) <openscope-ast> new_array_expressions_opt new_initializer_opt
- //
- case 89: {
- action.consumeExpressionNew(false);
- break;
- }
-
- //
- // Rule 91: new_placement_opt ::= $Empty
- //
- case 91: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 92: new_type_id ::= type_specifier_seq
- //
- case 92: {
- action.consumeTypeId(false);
- break;
- }
-
- //
- // Rule 93: new_type_id ::= type_specifier_seq new_declarator
- //
- case 93: {
- action.consumeTypeId(true);
- break;
- }
-
- //
- // Rule 94: new_declarator ::= <openscope-ast> new_pointer_operators
- //
- case 94: {
- action.consumeNewDeclarator();
- break;
- }
-
- //
- // Rule 101: new_initializer ::= ( expression_list_opt )
- //
- case 101: {
- action.consumeNewInitializer();
- break;
- }
-
- //
- // Rule 103: new_initializer_opt ::= $Empty
- //
- case 103: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 104: delete_expression ::= dcolon_opt delete cast_expression
- //
- case 104: {
- action.consumeExpressionDelete(false);
- break;
- }
-
- //
- // Rule 105: delete_expression ::= dcolon_opt delete [ ] cast_expression
- //
- case 105: {
- action.consumeExpressionDelete(true);
- break;
- }
-
- //
- // Rule 107: cast_expression ::= ( type_id ) cast_expression
- //
- case 107: {
- action.consumeExpressionCast(ICPPASTCastExpression.op_cast);
- break;
- }
-
- //
- // Rule 109: pm_expression ::= pm_expression .* cast_expression
- //
- case 109: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_pmdot);
- break;
- }
-
- //
- // Rule 110: pm_expression ::= pm_expression ->* cast_expression
- //
- case 110: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_pmarrow);
- break;
- }
-
- //
- // Rule 112: multiplicative_expression ::= multiplicative_expression * pm_expression
- //
- case 112: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_multiply);
- break;
- }
-
- //
- // Rule 113: multiplicative_expression ::= multiplicative_expression / pm_expression
- //
- case 113: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_divide);
- break;
- }
-
- //
- // Rule 114: multiplicative_expression ::= multiplicative_expression % pm_expression
- //
- case 114: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_modulo);
- break;
- }
-
- //
- // Rule 116: additive_expression ::= additive_expression + multiplicative_expression
- //
- case 116: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_plus);
- break;
- }
-
- //
- // Rule 117: additive_expression ::= additive_expression - multiplicative_expression
- //
- case 117: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_minus);
- break;
- }
-
- //
- // Rule 119: shift_expression ::= shift_expression << additive_expression
- //
- case 119: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftLeft);
- break;
- }
-
- //
- // Rule 120: shift_expression ::= shift_expression >> additive_expression
- //
- case 120: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftRight);
- break;
- }
-
- //
- // Rule 122: relational_expression ::= relational_expression < shift_expression
- //
- case 122: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessThan);
- break;
- }
-
- //
- // Rule 123: relational_expression ::= relational_expression > shift_expression
- //
- case 123: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterThan);
- break;
- }
-
- //
- // Rule 124: relational_expression ::= relational_expression <= shift_expression
- //
- case 124: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessEqual);
- break;
- }
-
- //
- // Rule 125: relational_expression ::= relational_expression >= shift_expression
- //
- case 125: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterEqual);
- break;
- }
-
- //
- // Rule 127: equality_expression ::= equality_expression == relational_expression
- //
- case 127: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_equals);
- break;
- }
-
- //
- // Rule 128: equality_expression ::= equality_expression != relational_expression
- //
- case 128: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_notequals);
- break;
- }
-
- //
- // Rule 130: and_expression ::= and_expression & equality_expression
- //
- case 130: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAnd);
- break;
- }
-
- //
- // Rule 132: exclusive_or_expression ::= exclusive_or_expression ^ and_expression
- //
- case 132: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXor);
- break;
- }
-
- //
- // Rule 134: inclusive_or_expression ::= inclusive_or_expression | exclusive_or_expression
- //
- case 134: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOr);
- break;
- }
-
- //
- // Rule 136: logical_and_expression ::= logical_and_expression && inclusive_or_expression
- //
- case 136: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalAnd);
- break;
- }
-
- //
- // Rule 138: logical_or_expression ::= logical_or_expression || logical_and_expression
- //
- case 138: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalOr);
- break;
- }
-
- //
- // Rule 140: conditional_expression ::= logical_or_expression ? expression : assignment_expression
- //
- case 140: {
- action.consumeExpressionConditional();
- break;
- }
-
- //
- // Rule 142: relational_expression_inTemplate ::= relational_expression_inTemplate < shift_expression
- //
- case 142: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessThan);
- break;
- }
-
- //
- // Rule 143: relational_expression_inTemplate ::= ( relational_expression_inTemplate > shift_expression )
- //
- case 143: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterThan);
- break;
- }
-
- //
- // Rule 144: relational_expression_inTemplate ::= relational_expression_inTemplate <= shift_expression
- //
- case 144: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessEqual);
- break;
- }
-
- //
- // Rule 145: relational_expression_inTemplate ::= relational_expression_inTemplate >= shift_expression
- //
- case 145: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterEqual);
- break;
- }
-
- //
- // Rule 147: equality_expression_inTemplate ::= equality_expression_inTemplate == relational_expression_inTemplate
- //
- case 147: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_equals);
- break;
- }
-
- //
- // Rule 148: equality_expression_inTemplate ::= equality_expression_inTemplate != relational_expression_inTemplate
- //
- case 148: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_notequals);
- break;
- }
-
- //
- // Rule 150: and_expression_inTemplate ::= and_expression_inTemplate & equality_expression_inTemplate
- //
- case 150: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAnd);
- break;
- }
-
- //
- // Rule 152: exclusive_or_expression_inTemplate ::= exclusive_or_expression_inTemplate ^ and_expression_inTemplate
- //
- case 152: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXor);
- break;
- }
-
- //
- // Rule 154: inclusive_or_expression_inTemplate ::= inclusive_or_expression_inTemplate | exclusive_or_expression_inTemplate
- //
- case 154: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOr);
- break;
- }
-
- //
- // Rule 156: logical_and_expression_inTemplate ::= logical_and_expression_inTemplate && inclusive_or_expression_inTemplate
- //
- case 156: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalAnd);
- break;
- }
-
- //
- // Rule 158: logical_or_expression_inTemplate ::= logical_or_expression_inTemplate || logical_and_expression_inTemplate
- //
- case 158: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalOr);
- break;
- }
-
- //
- // Rule 160: conditional_expression_inTemplate ::= logical_or_expression_inTemplate ? expression : assignment_expression_inTemplate
- //
- case 160: {
- action.consumeExpressionConditional();
- break;
- }
-
- //
- // Rule 163: assignment_expression_inTemplate ::= logical_or_expression_inTemplate = assignment_expression_inTemplate
- //
- case 163: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_assign);
- break;
- }
-
- //
- // Rule 164: assignment_expression_inTemplate ::= logical_or_expression_inTemplate *= assignment_expression_inTemplate
- //
- case 164: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_multiplyAssign);
- break;
- }
-
- //
- // Rule 165: assignment_expression_inTemplate ::= logical_or_expression_inTemplate /= assignment_expression_inTemplate
- //
- case 165: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_divideAssign);
- break;
- }
-
- //
- // Rule 166: assignment_expression_inTemplate ::= logical_or_expression_inTemplate %= assignment_expression_inTemplate
- //
- case 166: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_moduloAssign);
- break;
- }
-
- //
- // Rule 167: assignment_expression_inTemplate ::= logical_or_expression_inTemplate += assignment_expression_inTemplate
- //
- case 167: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_plusAssign);
- break;
- }
-
- //
- // Rule 168: assignment_expression_inTemplate ::= logical_or_expression_inTemplate -= assignment_expression_inTemplate
- //
- case 168: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_minusAssign);
- break;
- }
-
- //
- // Rule 169: assignment_expression_inTemplate ::= logical_or_expression_inTemplate >>= assignment_expression_inTemplate
- //
- case 169: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftRightAssign);
- break;
- }
-
- //
- // Rule 170: assignment_expression_inTemplate ::= logical_or_expression_inTemplate <<= assignment_expression_inTemplate
- //
- case 170: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftLeftAssign);
- break;
- }
-
- //
- // Rule 171: assignment_expression_inTemplate ::= logical_or_expression_inTemplate &= assignment_expression_inTemplate
- //
- case 171: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAndAssign);
- break;
- }
-
- //
- // Rule 172: assignment_expression_inTemplate ::= logical_or_expression_inTemplate ^= assignment_expression_inTemplate
- //
- case 172: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXorAssign);
- break;
- }
-
- //
- // Rule 173: assignment_expression_inTemplate ::= logical_or_expression_inTemplate |= assignment_expression_inTemplate
- //
- case 173: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOrAssign);
- break;
- }
-
- //
- // Rule 174: throw_expression ::= throw
- //
- case 174: {
- action.consumeExpressionThrow(false);
- break;
- }
-
- //
- // Rule 175: throw_expression ::= throw assignment_expression
- //
- case 175: {
- action.consumeExpressionThrow(true);
- break;
- }
-
- //
- // Rule 178: assignment_expression ::= logical_or_expression = assignment_expression
- //
- case 178: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_assign);
- break;
- }
-
- //
- // Rule 179: assignment_expression ::= logical_or_expression *= assignment_expression
- //
- case 179: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_multiplyAssign);
- break;
- }
-
- //
- // Rule 180: assignment_expression ::= logical_or_expression /= assignment_expression
- //
- case 180: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_divideAssign);
- break;
- }
-
- //
- // Rule 181: assignment_expression ::= logical_or_expression %= assignment_expression
- //
- case 181: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_moduloAssign);
- break;
- }
-
- //
- // Rule 182: assignment_expression ::= logical_or_expression += assignment_expression
- //
- case 182: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_plusAssign);
- break;
- }
-
- //
- // Rule 183: assignment_expression ::= logical_or_expression -= assignment_expression
- //
- case 183: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_minusAssign);
- break;
- }
-
- //
- // Rule 184: assignment_expression ::= logical_or_expression >>= assignment_expression
- //
- case 184: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftRightAssign);
- break;
- }
-
- //
- // Rule 185: assignment_expression ::= logical_or_expression <<= assignment_expression
- //
- case 185: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftLeftAssign);
- break;
- }
-
- //
- // Rule 186: assignment_expression ::= logical_or_expression &= assignment_expression
- //
- case 186: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAndAssign);
- break;
- }
-
- //
- // Rule 187: assignment_expression ::= logical_or_expression ^= assignment_expression
- //
- case 187: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXorAssign);
- break;
- }
-
- //
- // Rule 188: assignment_expression ::= logical_or_expression |= assignment_expression
- //
- case 188: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOrAssign);
- break;
- }
-
- //
- // Rule 190: expression_list ::= <openscope-ast> expression_list_actual
- //
- case 190: {
- action.consumeExpressionList();
- break;
- }
-
- //
- // Rule 194: expression_list_opt ::= $Empty
- //
- case 194: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 196: expression_opt ::= $Empty
- //
- case 196: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 199: constant_expression_opt ::= $Empty
- //
- case 199: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 208: statement ::= ERROR_TOKEN
- //
- case 208: {
- action.consumeStatementProblem();
- break;
- }
-
- //
- // Rule 209: labeled_statement ::= identifier : statement
- //
- case 209: {
- action.consumeStatementLabeled();
- break;
- }
-
- //
- // Rule 210: labeled_statement ::= case constant_expression : statement
- //
- case 210: {
- action.consumeStatementCase();
- break;
- }
-
- //
- // Rule 211: labeled_statement ::= default : statement
- //
- case 211: {
- action.consumeStatementDefault();
- break;
- }
-
- //
- // Rule 212: expression_statement ::= expression ;
- //
- case 212: {
- action.consumeStatementExpression();
- break;
- }
-
- //
- // Rule 213: expression_statement ::= ;
- //
- case 213: {
- action.consumeStatementNull();
- break;
- }
-
- //
- // Rule 214: compound_statement ::= { <openscope-ast> statement_seq }
- //
- case 214: {
- action.consumeStatementCompoundStatement(true);
- break;
- }
-
- //
- // Rule 215: compound_statement ::= { }
- //
- case 215: {
- action.consumeStatementCompoundStatement(false);
- break;
- }
-
- //
- // Rule 218: selection_statement ::= if ( condition ) statement
- //
- case 218: {
- action.consumeStatementIf(false);
- break;
- }
-
- //
- // Rule 219: selection_statement ::= if ( condition ) statement else statement
- //
- case 219: {
- action.consumeStatementIf(true);
- break;
- }
-
- //
- // Rule 220: selection_statement ::= switch ( condition ) statement
- //
- case 220: {
- action.consumeStatementSwitch();
- break;
- }
-
- //
- // Rule 222: condition ::= type_specifier_seq declarator = assignment_expression
- //
- case 222: {
- action.consumeConditionDeclaration();
- break;
- }
-
- //
- // Rule 224: condition_opt ::= $Empty
- //
- case 224: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 225: iteration_statement ::= while ( condition ) statement
- //
- case 225: {
- action.consumeStatementWhileLoop();
- break;
- }
-
- //
- // Rule 226: iteration_statement ::= do statement while ( expression ) ;
- //
- case 226: {
- action.consumeStatementDoLoop(true);
- break;
- }
-
- //
- // Rule 227: iteration_statement ::= do statement
- //
- case 227: {
- action.consumeStatementDoLoop(false);
- break;
- }
-
- //
- // Rule 228: iteration_statement ::= for ( for_init_statement condition_opt ; expression_opt ) statement
- //
- case 228: {
- action.consumeStatementForLoop();
- break;
- }
-
- //
- // Rule 230: for_init_statement ::= simple_declaration_with_declspec
- //
- case 230: {
- action.consumeStatementDeclaration();
- break;
- }
-
- //
- // Rule 231: jump_statement ::= break ;
- //
- case 231: {
- action.consumeStatementBreak();
- break;
- }
-
- //
- // Rule 232: jump_statement ::= continue ;
- //
- case 232: {
- action.consumeStatementContinue();
- break;
- }
-
- //
- // Rule 233: jump_statement ::= return expression ;
- //
- case 233: {
- action.consumeStatementReturn(true);
- break;
- }
-
- //
- // Rule 234: jump_statement ::= return ;
- //
- case 234: {
- action.consumeStatementReturn(false);
- break;
- }
-
- //
- // Rule 235: jump_statement ::= goto identifier_token ;
- //
- case 235: {
- action.consumeStatementGoto();
- break;
- }
-
- //
- // Rule 236: declaration_statement ::= block_declaration
- //
- case 236: {
- action.consumeStatementDeclarationWithDisambiguation();
- break;
- }
-
- //
- // Rule 237: declaration_statement ::= function_definition
- //
- case 237: {
- action.consumeStatementDeclaration();
- break;
- }
-
- //
- // Rule 245: declaration ::= ERROR_TOKEN
- //
- case 245: {
- action.consumeDeclarationProblem();
- break;
- }
-
- //
- // Rule 255: simple_declaration ::= declaration_specifiers_opt <openscope-ast> init_declarator_list_opt ;
- //
- case 255: {
- action.consumeDeclarationSimple(true);
- break;
- }
-
- //
- // Rule 256: simple_declaration_with_declspec ::= declaration_specifiers <openscope-ast> init_declarator_list_opt ;
- //
- case 256: {
- action.consumeDeclarationSimple(true);
- break;
- }
-
- //
- // Rule 257: declaration_specifiers ::= <openscope-ast> simple_declaration_specifiers
- //
- case 257: {
- action.consumeDeclarationSpecifiersSimple();
- break;
- }
-
- //
- // Rule 258: declaration_specifiers ::= <openscope-ast> class_declaration_specifiers
- //
- case 258: {
- action.consumeDeclarationSpecifiersComposite();
- break;
- }
-
- //
- // Rule 259: declaration_specifiers ::= <openscope-ast> elaborated_declaration_specifiers
- //
- case 259: {
- action.consumeDeclarationSpecifiersComposite();
- break;
- }
-
- //
- // Rule 260: declaration_specifiers ::= <openscope-ast> enum_declaration_specifiers
- //
- case 260: {
- action.consumeDeclarationSpecifiersComposite();
- break;
- }
-
- //
- // Rule 261: declaration_specifiers ::= <openscope-ast> type_name_declaration_specifiers
- //
- case 261: {
- action.consumeDeclarationSpecifiersTypeName();
- break;
- }
-
- //
- // Rule 263: declaration_specifiers_opt ::= $Empty
- //
- case 263: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 267: no_type_declaration_specifier ::= friend
- //
- case 267: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 268: no_type_declaration_specifier ::= typedef
- //
- case 268: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 288: storage_class_specifier ::= auto
- //
- case 288: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 289: storage_class_specifier ::= register
- //
- case 289: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 290: storage_class_specifier ::= static
- //
- case 290: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 291: storage_class_specifier ::= extern
- //
- case 291: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 292: storage_class_specifier ::= mutable
- //
- case 292: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 293: function_specifier ::= inline
- //
- case 293: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 294: function_specifier ::= virtual
- //
- case 294: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 295: function_specifier ::= explicit
- //
- case 295: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 296: simple_type_specifier ::= simple_type_specifier_token
- //
- case 296: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 310: type_name_specifier ::= dcolon_opt nested_name_specifier_opt type_name
- //
- case 310: {
- action.consumeQualifiedId(false);
- break;
- }
-
- //
- // Rule 311: type_name_specifier ::= dcolon_opt nested_name_specifier template template_id_name
- //
- case 311: {
- action.consumeQualifiedId(false);
- break;
- }
-
- //
- // Rule 312: type_name_specifier ::= typename dcolon_opt nested_name_specifier identifier_name
- //
- case 312: {
- action.consumeQualifiedId(false);
- break;
- }
-
- //
- // Rule 313: type_name_specifier ::= typename dcolon_opt nested_name_specifier template_opt template_id_name
- //
- case 313: {
- action.consumeQualifiedId(true);
- break;
- }
-
- //
- // Rule 315: elaborated_type_specifier ::= class_keyword elaborated_specifier_hook dcolon_opt nested_name_specifier_opt identifier_name
- //
- case 315: {
- action.consumeTypeSpecifierElaborated(false);
- break;
- }
-
- //
- // Rule 316: elaborated_type_specifier ::= class_keyword elaborated_specifier_hook dcolon_opt nested_name_specifier_opt template_opt template_id_name
- //
- case 316: {
- action.consumeTypeSpecifierElaborated(true);
- break;
- }
-
- //
- // Rule 317: elaborated_type_specifier ::= enum elaborated_specifier_hook dcolon_opt nested_name_specifier_opt identifier_name
- //
- case 317: {
- action.consumeTypeSpecifierElaborated(false);
- break;
- }
-
- //
- // Rule 321: enum_specifier ::= enum enum_specifier_hook { <openscope-ast> enumerator_list_opt comma_opt }
- //
- case 321: {
- action.consumeTypeSpecifierEnumeration(false);
- break;
- }
-
- //
- // Rule 322: enum_specifier ::= enum enum_specifier_hook identifier_token { <openscope-ast> enumerator_list_opt comma_opt }
- //
- case 322: {
- action.consumeTypeSpecifierEnumeration(true);
- break;
- }
-
- //
- // Rule 328: enumerator_definition ::= identifier_token
- //
- case 328: {
- action.consumeEnumerator(false);
- break;
- }
-
- //
- // Rule 329: enumerator_definition ::= identifier_token = constant_expression
- //
- case 329: {
- action.consumeEnumerator(true);
- break;
- }
-
- //
- // Rule 331: namespace_definition ::= namespace namespace_name namespace_definition_hook { <openscope-ast> declaration_seq_opt }
- //
- case 331: {
- action.consumeNamespaceDefinition(true);
- break;
- }
-
- //
- // Rule 332: namespace_definition ::= namespace namespace_definition_hook { <openscope-ast> declaration_seq_opt }
- //
- case 332: {
- action.consumeNamespaceDefinition(false);
- break;
- }
-
- //
- // Rule 334: namespace_alias_definition ::= namespace identifier_token = dcolon_opt nested_name_specifier_opt namespace_name ;
- //
- case 334: {
- action.consumeNamespaceAliasDefinition();
- break;
- }
-
- //
- // Rule 335: using_declaration ::= using typename_opt dcolon_opt nested_name_specifier_opt unqualified_id_name ;
- //
- case 335: {
- action.consumeUsingDeclaration();
- break;
- }
-
- //
- // Rule 336: typename_opt ::= typename
- //
- case 336: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 337: typename_opt ::= $Empty
- //
- case 337: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 338: using_directive ::= using namespace dcolon_opt nested_name_specifier_opt namespace_name ;
- //
- case 338: {
- action.consumeUsingDirective();
- break;
- }
-
- //
- // Rule 339: asm_definition ::= asm ( stringlit ) ;
- //
- case 339: {
- action.consumeDeclarationASM();
- break;
- }
-
- //
- // Rule 340: linkage_specification ::= extern stringlit { <openscope-ast> declaration_seq_opt }
- //
- case 340: {
- action.consumeLinkageSpecification();
- break;
- }
-
- //
- // Rule 341: linkage_specification ::= extern stringlit <openscope-ast> declaration
- //
- case 341: {
- action.consumeLinkageSpecification();
- break;
- }
-
- //
- // Rule 346: init_declarator_complete ::= init_declarator
- //
- case 346: {
- action.consumeInitDeclaratorComplete();
- break;
- }
-
- //
- // Rule 348: init_declarator ::= complete_declarator initializer
- //
- case 348: {
- action.consumeDeclaratorWithInitializer(true);
- break;
- }
-
- //
- // Rule 351: declarator ::= <openscope-ast> ptr_operator_seq direct_declarator
- //
- case 351: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 353: function_declarator ::= <openscope-ast> ptr_operator_seq direct_declarator
- //
- case 353: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 357: basic_direct_declarator ::= declarator_id_name
- //
- case 357: {
- action.consumeDirectDeclaratorIdentifier();
- break;
- }
-
- //
- // Rule 358: basic_direct_declarator ::= ( declarator )
- //
- case 358: {
- action.consumeDirectDeclaratorBracketed();
- break;
- }
-
- //
- // Rule 359: function_direct_declarator ::= basic_direct_declarator ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
- //
- case 359: {
- action.consumeDirectDeclaratorFunctionDeclarator(true);
- break;
- }
-
- //
- // Rule 360: array_direct_declarator ::= array_direct_declarator array_modifier
- //
- case 360: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 361: array_direct_declarator ::= basic_direct_declarator array_modifier
- //
- case 361: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 362: array_modifier ::= [ constant_expression ]
- //
- case 362: {
- action.consumeDirectDeclaratorArrayModifier(true);
- break;
- }
-
- //
- // Rule 363: array_modifier ::= [ ]
- //
- case 363: {
- action.consumeDirectDeclaratorArrayModifier(false);
- break;
- }
-
- //
- // Rule 364: ptr_operator ::= pointer_hook * pointer_hook <openscope-ast> cv_qualifier_seq_opt
- //
- case 364: {
- action.consumePointer();
- break;
- }
-
- //
- // Rule 365: ptr_operator ::= pointer_hook & pointer_hook
- //
- case 365: {
- action.consumeReferenceOperator();
- break;
- }
-
- //
- // Rule 366: ptr_operator ::= dcolon_opt nested_name_specifier pointer_hook * pointer_hook <openscope-ast> cv_qualifier_seq_opt
- //
- case 366: {
- action.consumePointerToMember();
- break;
- }
-
- //
- // Rule 373: cv_qualifier ::= const
- //
- case 373: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 374: cv_qualifier ::= volatile
- //
- case 374: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 376: declarator_id_name ::= dcolon_opt nested_name_specifier_opt type_name
- //
- case 376: {
- action.consumeQualifiedId(false);
- break;
- }
-
- //
- // Rule 377: type_id ::= type_specifier_seq
- //
- case 377: {
- action.consumeTypeId(false);
- break;
- }
-
- //
- // Rule 378: type_id ::= type_specifier_seq abstract_declarator
- //
- case 378: {
- action.consumeTypeId(true);
- break;
- }
-
- //
- // Rule 381: abstract_declarator ::= <openscope-ast> ptr_operator_seq
- //
- case 381: {
- action.consumeDeclaratorWithPointer(false);
- break;
- }
-
- //
- // Rule 382: abstract_declarator ::= <openscope-ast> ptr_operator_seq direct_abstract_declarator
- //
- case 382: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 386: basic_direct_abstract_declarator ::= ( abstract_declarator )
- //
- case 386: {
- action.consumeDirectDeclaratorBracketed();
- break;
- }
-
- //
- // Rule 387: basic_direct_abstract_declarator ::= ( )
- //
- case 387: {
- action.consumeAbstractDeclaratorEmpty();
- break;
- }
-
- //
- // Rule 388: array_direct_abstract_declarator ::= array_modifier
- //
- case 388: {
- action.consumeDirectDeclaratorArrayDeclarator(false);
- break;
- }
-
- //
- // Rule 389: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier
- //
- case 389: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 390: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier
- //
- case 390: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 391: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
- //
- case 391: {
- action.consumeDirectDeclaratorFunctionDeclarator(true);
- break;
- }
-
- //
- // Rule 392: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
- //
- case 392: {
- action.consumeDirectDeclaratorFunctionDeclarator(false);
- break;
- }
-
- //
- // Rule 393: parameter_declaration_clause ::= parameter_declaration_list_opt ...
- //
- case 393: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 394: parameter_declaration_clause ::= parameter_declaration_list_opt
- //
- case 394: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 395: parameter_declaration_clause ::= parameter_declaration_list , ...
- //
- case 395: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 401: abstract_declarator_opt ::= $Empty
- //
- case 401: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 402: parameter_declaration ::= declaration_specifiers parameter_init_declarator
- //
- case 402: {
- action.consumeParameterDeclaration();
- break;
- }
-
- //
- // Rule 403: parameter_declaration ::= declaration_specifiers
- //
- case 403: {
- action.consumeParameterDeclarationWithoutDeclarator();
- break;
- }
-
- //
- // Rule 405: parameter_init_declarator ::= declarator = parameter_initializer
- //
- case 405: {
- action.consumeDeclaratorWithInitializer(true);
- break;
- }
-
- //
- // Rule 407: parameter_init_declarator ::= abstract_declarator = parameter_initializer
- //
- case 407: {
- action.consumeDeclaratorWithInitializer(true);
- break;
- }
-
- //
- // Rule 408: parameter_init_declarator ::= = parameter_initializer
- //
- case 408: {
- action.consumeDeclaratorWithInitializer(false);
- break;
- }
-
- //
- // Rule 409: parameter_initializer ::= assignment_expression
- //
- case 409: {
- action.consumeInitializer();
- break;
- }
-
- //
- // Rule 410: function_definition ::= declaration_specifiers_opt function_declarator <openscope-ast> ctor_initializer_list_opt function_body
- //
- case 410: {
- action.consumeFunctionDefinition(false);
- break;
- }
-
- //
- // Rule 411: function_definition ::= declaration_specifiers_opt function_declarator try <openscope-ast> ctor_initializer_list_opt function_body <openscope-ast> handler_seq
- //
- case 411: {
- action.consumeFunctionDefinition(true);
- break;
- }
-
- //
- // Rule 414: initializer ::= ( expression_list )
- //
- case 414: {
- action.consumeInitializerConstructor();
- break;
- }
-
- //
- // Rule 415: initializer_clause ::= assignment_expression
- //
- case 415: {
- action.consumeInitializer();
- break;
- }
-
- //
- // Rule 416: initializer_clause ::= initializer_list
- //
- case 416: {
- action.consumeInitializer();
- break;
- }
-
- //
- // Rule 417: initializer_list ::= start_initializer_list { <openscope-ast> initializer_seq , } end_initializer_list
- //
- case 417: {
- action.consumeInitializerList();
- break;
- }
-
- //
- // Rule 418: initializer_list ::= start_initializer_list { <openscope-ast> initializer_seq } end_initializer_list
- //
- case 418: {
- action.consumeInitializerList();
- break;
- }
-
- //
- // Rule 419: initializer_list ::= { <openscope-ast> }
- //
- case 419: {
- action.consumeInitializerList();
- break;
- }
-
- //
- // Rule 420: start_initializer_list ::= $Empty
- //
- case 420: {
- action.initializerListStart();
- break;
- }
-
- //
- // Rule 421: end_initializer_list ::= $Empty
- //
- case 421: {
- action.initializerListEnd();
- break;
- }
-
- //
- // Rule 426: class_specifier ::= class_head { <openscope-ast> member_declaration_list_opt }
- //
- case 426: {
- action.consumeClassSpecifier();
- break;
- }
-
- //
- // Rule 427: class_head ::= class_keyword composite_specifier_hook identifier_name_opt class_name_suffix_hook <openscope-ast> base_clause_opt
- //
- case 427: {
- action.consumeClassHead(false);
- break;
- }
-
- //
- // Rule 428: class_head ::= class_keyword composite_specifier_hook template_id_name class_name_suffix_hook <openscope-ast> base_clause_opt
- //
- case 428: {
- action.consumeClassHead(false);
- break;
- }
-
- //
- // Rule 429: class_head ::= class_keyword composite_specifier_hook nested_name_specifier identifier_name class_name_suffix_hook <openscope-ast> base_clause_opt
- //
- case 429: {
- action.consumeClassHead(true);
- break;
- }
-
- //
- // Rule 430: class_head ::= class_keyword composite_specifier_hook nested_name_specifier template_id_name class_name_suffix_hook <openscope-ast> base_clause_opt
- //
- case 430: {
- action.consumeClassHead(true);
- break;
- }
-
- //
- // Rule 434: identifier_name_opt ::= $Empty
- //
- case 434: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 438: visibility_label ::= access_specifier_keyword :
- //
- case 438: {
- action.consumeVisibilityLabel();
- break;
- }
-
- //
- // Rule 439: member_declaration ::= declaration_specifiers_opt <openscope-ast> member_declarator_list ;
- //
- case 439: {
- action.consumeDeclarationSimple(true);
- break;
- }
-
- //
- // Rule 440: member_declaration ::= declaration_specifiers_opt ;
- //
- case 440: {
- action.consumeDeclarationSimple(false);
- break;
- }
-
- //
- // Rule 443: member_declaration ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name ;
- //
- case 443: {
- action.consumeMemberDeclarationQualifiedId();
- break;
- }
-
- //
- // Rule 449: member_declaration ::= ERROR_TOKEN
- //
- case 449: {
- action.consumeDeclarationProblem();
- break;
- }
-
- //
- // Rule 458: member_declarator ::= declarator constant_initializer
- //
- case 458: {
- action.consumeMemberDeclaratorWithInitializer();
- break;
- }
-
- //
- // Rule 459: member_declarator ::= bit_field_declarator : constant_expression
- //
- case 459: {
- action.consumeBitField(true);
- break;
- }
-
- //
- // Rule 460: member_declarator ::= : constant_expression
- //
- case 460: {
- action.consumeBitField(false);
- break;
- }
-
- //
- // Rule 461: bit_field_declarator ::= identifier_name
- //
- case 461: {
- action.consumeDirectDeclaratorIdentifier();
- break;
- }
-
- //
- // Rule 462: constant_initializer ::= = constant_expression
- //
- case 462: {
- action.consumeInitializer();
- break;
- }
-
- //
- // Rule 468: base_specifier ::= dcolon_opt nested_name_specifier_opt class_name
- //
- case 468: {
- action.consumeBaseSpecifier(false, false);
- break;
- }
-
- //
- // Rule 469: base_specifier ::= virtual access_specifier_keyword_opt dcolon_opt nested_name_specifier_opt class_name
- //
- case 469: {
- action.consumeBaseSpecifier(true, true);
- break;
- }
-
- //
- // Rule 470: base_specifier ::= access_specifier_keyword virtual dcolon_opt nested_name_specifier_opt class_name
- //
- case 470: {
- action.consumeBaseSpecifier(true, true);
- break;
- }
-
- //
- // Rule 471: base_specifier ::= access_specifier_keyword dcolon_opt nested_name_specifier_opt class_name
- //
- case 471: {
- action.consumeBaseSpecifier(true, false);
- break;
- }
-
- //
- // Rule 472: access_specifier_keyword ::= private
- //
- case 472: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 473: access_specifier_keyword ::= protected
- //
- case 473: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 474: access_specifier_keyword ::= public
- //
- case 474: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 476: access_specifier_keyword_opt ::= $Empty
- //
- case 476: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 478: conversion_function_id_name ::= conversion_function_id < <openscope-ast> template_argument_list_opt >
- //
- case 478: {
- action.consumeTemplateId();
- break;
- }
-
- //
- // Rule 479: conversion_function_id ::= operator conversion_type_id
- //
- case 479: {
- action.consumeConversionName();
- break;
- }
-
- //
- // Rule 480: conversion_type_id ::= type_specifier_seq conversion_declarator
- //
- case 480: {
- action.consumeTypeId(true);
- break;
- }
-
- //
- // Rule 481: conversion_type_id ::= type_specifier_seq
- //
- case 481: {
- action.consumeTypeId(false);
- break;
- }
-
- //
- // Rule 482: conversion_declarator ::= <openscope-ast> ptr_operator_seq
- //
- case 482: {
- action.consumeDeclaratorWithPointer(false);
- break;
- }
-
- //
- // Rule 488: mem_initializer ::= mem_initializer_name ( expression_list_opt )
- //
- case 488: {
- action.consumeConstructorChainInitializer();
- break;
- }
-
- //
- // Rule 489: mem_initializer_name ::= dcolon_opt nested_name_specifier_opt class_name
- //
- case 489: {
- action.consumeQualifiedId(false);
- break;
- }
-
- //
- // Rule 492: operator_function_id_name ::= operator_id_name < <openscope-ast> template_argument_list_opt >
- //
- case 492: {
- action.consumeTemplateId();
- break;
- }
-
- //
- // Rule 493: operator_id_name ::= operator overloadable_operator
- //
- case 493: {
- action.consumeOperatorName();
- break;
- }
-
- //
- // Rule 536: template_declaration ::= export_opt template < <openscope-ast> template_parameter_list > declaration
- //
- case 536: {
- action.consumeTemplateDeclaration();
- break;
- }
-
- //
- // Rule 537: export_opt ::= export
- //
- case 537: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 538: export_opt ::= $Empty
- //
- case 538: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 542: template_parameter ::= parameter_declaration
- //
- case 542: {
- action.consumeTemplateParamterDeclaration();
- break;
- }
-
- //
- // Rule 543: type_parameter ::= class identifier_name_opt
- //
- case 543: {
- action.consumeSimpleTypeTemplateParameter(false);
- break;
- }
-
- //
- // Rule 544: type_parameter ::= class identifier_name_opt = type_id
- //
- case 544: {
- action.consumeSimpleTypeTemplateParameter(true);
- break;
- }
-
- //
- // Rule 545: type_parameter ::= typename identifier_name_opt
- //
- case 545: {
- action.consumeSimpleTypeTemplateParameter(false);
- break;
- }
-
- //
- // Rule 546: type_parameter ::= typename identifier_name_opt = type_id
- //
- case 546: {
- action.consumeSimpleTypeTemplateParameter(true);
- break;
- }
-
- //
- // Rule 547: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt
- //
- case 547: {
- action.consumeTemplatedTypeTemplateParameter(false);
- break;
- }
-
- //
- // Rule 548: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt = id_expression
- //
- case 548: {
- action.consumeTemplatedTypeTemplateParameter(true);
- break;
- }
-
- //
- // Rule 549: template_id_name ::= identifier_name < <openscope-ast> template_argument_list_opt >
- //
- case 549: {
- action.consumeTemplateId();
- break;
- }
-
- //
- // Rule 556: nested_name_specifier_inTemplate ::= class_or_namespace_name_inTemplate :: nested_name_specifier_with_template_inTemplate
- //
- case 556: {
- action.consumeNestedNameSpecifier(true);
- break;
- }
-
- //
- // Rule 557: nested_name_specifier_inTemplate ::= class_or_namespace_name_inTemplate ::
- //
- case 557: {
- action.consumeNestedNameSpecifier(false);
- break;
- }
-
- //
- // Rule 558: nested_name_specifier_with_template_inTemplate ::= class_or_namespace_name_with_template_inTemplate :: nested_name_specifier_with_template_inTemplate
- //
- case 558: {
- action.consumeNestedNameSpecifier(true);
- break;
- }
-
- //
- // Rule 559: nested_name_specifier_with_template_inTemplate ::= class_or_namespace_name_with_template_inTemplate ::
- //
- case 559: {
- action.consumeNestedNameSpecifier(false);
- break;
- }
-
- //
- // Rule 560: class_or_namespace_name_with_template_inTemplate ::= template_opt class_or_namespace_name_inTemplate
- //
- case 560: {
- action.consumeNameWithTemplateKeyword();
- break;
- }
-
- //
- // Rule 562: nested_name_specifier_opt_inTemplate ::= $Empty
- //
- case 562: {
- action.consumeNestedNameSpecifierEmpty();
- break;
- }
-
- //
- // Rule 565: type_name_specifier_inTemplate ::= typename dcolon_opt nested_name_specifier identifier_name
- //
- case 565: {
- action.consumeQualifiedId(false);
- break;
- }
-
- //
- // Rule 566: type_name_specifier_inTemplate ::= typename dcolon_opt nested_name_specifier template_opt template_id_name
- //
- case 566: {
- action.consumeQualifiedId(true);
- break;
- }
-
- //
- // Rule 571: declaration_specifiers_inTemplate ::= <openscope-ast> simple_declaration_specifiers
- //
- case 571: {
- action.consumeDeclarationSpecifiersSimple();
- break;
- }
-
- //
- // Rule 572: declaration_specifiers_inTemplate ::= <openscope-ast> class_declaration_specifiers
- //
- case 572: {
- action.consumeDeclarationSpecifiersComposite();
- break;
- }
-
- //
- // Rule 573: declaration_specifiers_inTemplate ::= <openscope-ast> elaborated_declaration_specifiers
- //
- case 573: {
- action.consumeDeclarationSpecifiersComposite();
- break;
- }
-
- //
- // Rule 574: declaration_specifiers_inTemplate ::= <openscope-ast> enum_declaration_specifiers
- //
- case 574: {
- action.consumeDeclarationSpecifiersComposite();
- break;
- }
-
- //
- // Rule 575: declaration_specifiers_inTemplate ::= <openscope-ast> type_name_declaration_specifiers_inTemplate
- //
- case 575: {
- action.consumeDeclarationSpecifiersTypeName();
- break;
- }
-
- //
- // Rule 577: type_id_inTemplate ::= type_specifier_seq_inTemplate
- //
- case 577: {
- action.consumeTypeId(false);
- break;
- }
-
- //
- // Rule 578: type_id_inTemplate ::= type_specifier_seq_inTemplate abstract_declarator
- //
- case 578: {
- action.consumeTypeId(true);
- break;
- }
-
- //
- // Rule 579: template_argument ::= assignment_expression_inTemplate
- //
- case 579: {
- action.consumeTemplateArgumentExpression();
- break;
- }
-
- //
- // Rule 580: template_argument ::= type_id_inTemplate
- //
- case 580: {
- action.consumeTemplateArgumentTypeId();
- break;
- }
-
- //
- // Rule 581: explicit_instantiation ::= template declaration
- //
- case 581: {
- action.consumeTemplateExplicitInstantiation();
- break;
- }
-
- //
- // Rule 582: explicit_specialization ::= template < > declaration
- //
- case 582: {
- action.consumeTemplateExplicitSpecialization();
- break;
- }
-
- //
- // Rule 583: try_block ::= try compound_statement <openscope-ast> handler_seq
- //
- case 583: {
- action.consumeStatementTryBlock(true);
- break;
- }
-
- //
- // Rule 584: try_block ::= try compound_statement
- //
- case 584: {
- action.consumeStatementTryBlock(false);
- break;
- }
-
- //
- // Rule 587: handler ::= catch ( exception_declaration ) compound_statement
- //
- case 587: {
- action.consumeStatementCatchHandler(false);
- break;
- }
-
- //
- // Rule 588: handler ::= catch ( ... ) compound_statement
- //
- case 588: {
- action.consumeStatementCatchHandler(true);
- break;
- }
-
- //
- // Rule 589: exception_declaration ::= type_specifier_seq <openscope-ast> declarator
- //
- case 589: {
- action.consumeDeclarationSimple(true);
- break;
- }
-
- //
- // Rule 590: exception_declaration ::= type_specifier_seq <openscope-ast> abstract_declarator
- //
- case 590: {
- action.consumeDeclarationSimple(true);
- break;
- }
-
- //
- // Rule 591: exception_declaration ::= type_specifier_seq
- //
- case 591: {
- action.consumeDeclarationSimple(false);
- break;
- }
-
- //
- // Rule 593: exception_specification ::= throw ( )
- //
- case 593: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 599: type_parameter_start ::= ERROR_TOKEN
- //
- case 599: {
- action.consumeEmpty();
- break;
- }
-
- default:
- break;
- }
- return;
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPTemplateTypeParameterParserprs.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPTemplateTypeParameterParserprs.java
deleted file mode 100644
index 3525b870c55..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPTemplateTypeParameterParserprs.java
+++ /dev/null
@@ -1,1558 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2015 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.dom.lrparser.cpp;
-
-public class CPPTemplateTypeParameterParserprs
- implements lpg.lpgjavaruntime.ParseTable, CPPTemplateTypeParameterParsersym {
-
- public interface IsKeyword {
- public final static byte isKeyword[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static byte isKeyword[] = IsKeyword.isKeyword;
-
- public final boolean isKeyword(int index) {
- return isKeyword[index] != 0;
- }
-
- public interface BaseCheck {
- public final static short baseCheck[] = { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 0, 1, 0, 4, 2, 3, 2, 3, 2, 2, 1, 0, 1, 1, 4, 4, 4, 8, 8, 3, 3,
- 4, 4, 3, 3, 2, 2, 7, 7, 7, 7, 4, 4, 5, 6, 3, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 7, 9, 3, 0, 1,
- 2, 2, 1, 2, 3, 4, 1, 0, 3, 1, 0, 3, 5, 1, 4, 1, 3, 3, 1, 3, 3, 3, 1, 3, 3, 1, 3, 3, 1, 3, 3, 3, 3, 1, 3,
- 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 5, 1, 3, 5, 3, 3, 1, 3, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 5, 1, 1,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 2, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 2, 1, 3, 1, 0, 1, 0, 1,
- 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 4, 3, 2, 1, 4, 2, 1, 2, 5, 7, 5, 1, 4, 1, 0, 5, 7, 2, 8, 1, 1, 2, 2,
- 3, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 0, 4, 4, 2, 2, 2, 2, 2, 1, 0, 1, 1, 1, 1,
- 1, 1, 2, 1, 2, 2, 2, 1, 1, 2, 2, 1, 2, 2, 1, 2, 2, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 3, 4, 4, 5, 2, 5, 6, 5, 0, 1, 0, 7, 8, 0, 1, 3, 1, 0, 1, 3, 1, 7, 6, 0, 7, 6, 1, 0,
- 6, 5, 6, 4, 1, 3, 1, 0, 1, 1, 2, 1, 1, 3, 1, 3, 1, 1, 1, 1, 3, 9, 2, 2, 3, 2, 5, 3, 7, 0, 1, 2, 2, 1, 0,
- 1, 1, 1, 3, 1, 2, 1, 1, 2, 3, 1, 1, 1, 3, 2, 1, 2, 2, 9, 8, 2, 1, 3, 1, 3, 1, 0, 1, 0, 2, 1, 1, 3, 1, 3,
- 2, 1, 5, 8, 1, 2, 3, 1, 1, 7, 6, 3, 0, 0, 1, 3, 1, 1, 5, 6, 6, 7, 7, 0, 0, 1, 0, 1, 1, 1, 2, 4, 2, 2, 1,
- 5, 1, 1, 1, 1, 1, 1, 1, 2, 1, 0, 1, 3, 1, 1, 2, 3, 2, 1, 2, 2, 1, 0, 1, 3, 3, 5, 5, 4, 1, 1, 1, 1, 0, 1,
- 5, 2, 2, 1, 2, 2, 1, 0, 1, 3, 4, 3, 1, 1, 5, 2, 1, 1, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 7, 1, 0, 1, 3, 1, 1, 2, 4, 2, 4, 7,
- 9, 5, 1, 3, 1, 0, 1, 1, 3, 2, 3, 2, 2, 1, 0, 1, 1, 4, 5, 2, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 1, 1, 2, 4,
- 4, 2, 1, 2, 5, 5, 3, 3, 1, 4, 3, 1, 0, 1, 3, 1, 1, -126, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -39, -3, 0, -7, 0, 0, 0, 0, 0, 0, -398, 0, -215, 0, 0, -273, -8, 0,
- -15, 0, -519, 0, 0, 0, 0, -12, -22, -474, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, 0, 0, 0, -246, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -448, 0, 0, -368, 0, 0,
- -37, 0, 0, 0, 0, 0, 0, 0, -109, 0, 0, -58, 0, 0, 0, 0, -461, 0, 0, 0, 0, 0, -532, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -283, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6, 0, -36, 0, -19, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, -170, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, -32, 0,
- 0, 0, -23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -20, 0, 0, 0, 0, 0, 0,
- -412, 0, -171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -182, 0,
- 0, -132, 0, 0, 0, 0, -337, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -83, 0, -24, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -25, -187, -440, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, 0, 0, 0, -107, 0, 0, 0,
- -175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -41, 0, 0, -49, 0,
- 0, -85, 0, 0, 0, 0, 0, 0, 0, -270, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0,
- 0, 0, -546, 0, 0, -335, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -196, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -597, -45, 0, 0, 0, 0, 0, -28, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -217, 0, 0, 0, 0, -30, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, -167, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -91, -44, 0, 0, 0, 0, 0, 0, 0, 0, -55, 0,
- -50, 0, 0, 0, 0, 0, 0, -576, 0, 0, 0, 0, -266, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -86, 0, 0, -92, 0, 0, 0, 0, 0, 0, -51, 0, -173, 0, 0, 0, -291, 0, 0, 0, -598, 0, 0, 0, 0, -52, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10, 0, 0, -53, 0, 0, 0, 0, 0, 0, -268, 0,
- 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, -515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -108, 0, 0, 0, 0, -433, 0, 0, -186, 0, 0, 0, 0, 0, 0, 0,
- -18, 0, 0, 0, 0, -54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -421, -174, 0,
- -498, 0, -89, 0, 0, 0, 0, 0, 0, -466, 0, 0, 0, 0, 0, 0, 0, -154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -35, -311, 0, 0, 0, 0, 0, 0, 0, 0, -90, -298, -96, 0, 0, 0, 0, 0,
- 0, 0, 0, -81, 0, 0, 0, 0, -99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -34, 0,
- 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, -195, 0, 0, 0, 0, 0, 0, 0, 0, 0, -82, 0, 0, 0, 0, -446, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -68, 0, 0, 0, -205, 0, 0, 0, 0, -129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -408, 0, -213, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, -284, 0, 0, 0, 0, 0, -21, 0, 0, 0, 0, -425, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -38, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -443, 0,
- 0, -260, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -403, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -177, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -110, 0, -183, 0, 0, 0, 0, 0, 0, -465, 0, -221, 0, 0, -489, 0, 0, 0, 0, -156, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -342, 0, -184, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0,
- -507, 0, 0, 0, 0, -157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -71, 0, -464, 0, -338, 0, 0, 0, 0, 0, 0, 0, 0, 0, -509, 0, 0, 0, 0, -158, 0, 0, 0, 0, -410, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, 0, 0, 0, 0, 0, 0, 0, 0, 0, -539,
- 0, 0, 0, 0, -159, 0, 0, 0, 0, -457, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -261, 0, 0, 0, 0, 0, 0, 0, 0, 0, -540, 0, 0, 0, 0, -160, 0, 0, 0, 0, -470, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -492, 0, -72, 0, -473, 0, 0, 0, 0, 0, 0, 0, 0, 0, -354, 0,
- 0, 0, 0, -161, 0, 0, 0, 0, -494, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73,
- 0, -74, 0, -265, 0, 0, 0, 0, 0, 0, 0, 0, 0, -366, 0, 0, 0, 0, -162, 0, 0, 0, 0, -542, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -278, 0, 0, -75, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, -371,
- 0, 0, 0, 0, -163, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -279,
- -78, 0, -80, 0, 0, 0, 0, 0, 0, -84, 0, 0, 0, 0, -372, 0, 0, 0, 0, -164, 0, 0, 0, 0, -563, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -281, -87, 0, -88, 0, 0, 0, 0, 0, 0, -94, 0, -548, 0, 0,
- -419, 0, 0, 0, 0, -165, 0, 0, 0, 0, -588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -297, -95, 0, -98, 0, 0, 0, 0, 0, 0, -105, 0, 0, 0, 0, -468, 0, 0, 0, 0, -292, 0, 0, 0, 0, -113, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -352, -116, 0, -131, 0, -303, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -97, 0, 0, 0, 0, -302, 0, 0, 0, 0, -356, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -203, 0, -188, 0, 0, 0, 0, -276, 0, -277, 0, 0, -112, 0, 0, 0, 0, -322, 0, 0, 0, 0,
- -179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -180, 0, -189, -516, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -29, 0, -305, 0, -263, 0, -442, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -323, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -304, -514, 0, 0, 0,
- 0, 0, -199, 0, 0, 0, 0, 0, -200, 0, 0, 0, -455, 0, 0, 0, 0, 0, 0, 0, -447, 0, 0, 0, 0, 0, -480, 0, -201,
- 0, 0, 0, 0, 0, -324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -467,
- 0, 0, -391, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -11, 0, -345, 0, -587, 0, 0, -202, 0, 0, -207, 0,
- -257, -208, 0, 0, 0, 0, 0, 0, 0, 0, -325, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -209, 0, 0, -348, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -40, 0, -506, 0, 0, -210,
- 0, 0, 0, 0, -341, 0, 0, 0, -537, 0, 0, 0, 0, 0, -326, 0, 0, 0, 0, -93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, -222, 0, 0, -223, 0, 0, 0, 0, 0, 0, 0, -353, 0, 0, -224, 0, 0,
- 0, 0, 0, 0, 0, -589, 0, 0, 0, 0, 0, -536, 0, 0, 0, 0, 0, 0, 0, -327, 0, 0, 0, 0, -225, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -490, 0, 0, -226, -569, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -485, 0, -42, 0, 0, -365, 0, 0, 0, 0, -346, 0, -227, -602, -409, 0, -406, 0, 0, 0, 0, 0, -328, 0, 0, 0,
- 0, -400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -176, -228, 0, -101, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -229, -481, 0, 0, 0, 0, 0, 0, -454, 0, 0, 0, 0, 0, 0, 0, -230, -407, 0, -231, 0, 0, 0, 0,
- 0, 0, -329, 0, 0, 0, 0, -435, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, 0,
- -232, -133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -233, 0, -280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -339,
- -520, 0, 0, 0, 0, 0, -330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -234, 0, 0, -235, 0, 0, 0, 0, 0, -393, 0, -236, 0,
- -373, 0, -374, -575, -237, 0, 0, 0, 0, 0, -331, 0, 0, 0, 0, -238, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -294, 0, 0, -445, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -301, 0, -118, 0, -239, 0,
- -240, 0, -430, 0, 0, 0, -350, 0, 0, -389, 0, 0, -243, 0, 0, 0, 0, 0, -332, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -247, -125, 0, 0, 0, 0, 0, 0, -351, 0, 0, -248, -47, 0,
- -249, 0, 0, -119, 0, -306, 0, -340, 0, -250, 0, -434, 0, 0, 0, -369, 0, 0, 0, 0, 0, 0, 0, 0, 0, -432, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -336, 0, 0, 0, 0, 0, -388,
- -390, 0, 0, -392, 0, 0, 0, -172, 0, 0, 0, 0, 0, -477, 0, 0, 0, 0, 0, 0, 0, -487, 0, 0, -479, 0, 0, 0, 0,
- 0, 0, -592, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -488, 0, 0, -251, 0, 0, -178, 0, -401, 0, 0, 0, 0, -545, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -252, -590, 0, -253, 0, 0, 0, 0, 0, 0, -197, 0, 0, -411, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -395, 0, 0, 0, 0,
- 0, 0, -397, 0, 0, -420, -428, 0, -429, -245, 0, 0, -501, 0, 0, -254, 0, 0, -497, -255, -450, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -437, -282, 0, -256, 0, 0, 0, 0, 0, 0,
- 0, 0, -258, 0, 0, -451, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -259, -264, -269, 0, -496, 0, 0, 0, 0, 0, 0, -504, 0, 0, -271, -272, 0, -286, 0, 0, 0, 0, -355, 0, -287,
- -288, -198, -204, 0, -463, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -289, -312, 0, -517, 0, 0, 0, 0, -343, 0, -344, 0, 0, -523, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -349, 0, -357, 0, -544, 0, 0, 0, 0, 0, 0, -562, 0, 0, -307,
- -564, 0, -572, -579, -358, 0, -363, 0, 0, -308, -525, -364, 0, 0, -534, -104, 0, 0, 0, 0, -334, 0, 0, 0,
- 0, -216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -370, -377, 0, -378,
- 0, -379, -380, 0, 0, 0, 0, -309, -381, -382, 0, -383, 0, 0, 0, 0, -384, -535, 0, -385, 0, 0, 0, 0, 0, 0,
- 0, 0, -321, 0, 0, 0, 0, -220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -262, 0,
- -405, 0, -386, 0, 0, -387, 0, -402, -404, -422, -426, -427, -438, -441, -453, -460, 0, -547, 0, 0, 0, 0,
- -469, -475, 0, 0, 0, -152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -559, 0, -560, 0, -476, 0, 0, 0, -319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -478, -482, -484, -499, 0, -522, 0, -566, 0, -524, -526, 0, 0, -527, -528, -529, -531,
- -565, 0, -583, 0, -549, -550, -552, -557, -561, 0, -241, 0, -153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -242, 0, 0, -320, 0, 0, 0, 0, -299, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -573, -581, -593, -603, 0, 0, 0, 0, -595, 0, -601, 0,
- 0, 0, 0, 0, 0, 0, -367, 0, -149, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -413, 0, -316, 0, 0, 0, 0, -414, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -150, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -415, -416, 0, -151, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -317, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -318, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -533, -431, -458, 0, 0, 0, 0, 0, 0, 0, -459, 0, 0, 0, 0,
- -491, -135, 0, 0, -500, -512, 0, 0, 0, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -538, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -144, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -145, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -313, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -314, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -315,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -347, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -376, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -543, -166, -31, 0, 0, 0, 0, -14, 0, 0, 0, 0, 0, 0, -594, 0, 0, 0, 0, 0, 0, 0, -122, 0, 0, 0, -568, 0,
- 0, 0, 0, 0, 0, 0, 0, -556, 0, 0, 0, 0, 0, -570, 0, -574, 0, 0, 0, -333, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -267, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -584, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -577, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -449, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -505, 0, 0, 0, -123, 0, 0, 0, -359, 0, -360, 0, 0, 0, -48, 0, 0, 0, 0, 0, -285, 0, 0, 0, -578, -596, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -600, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -521, 0, 0, -214, 0, 0, 0, -361, 0, 0, 0, 0, 0, -134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -362, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -591, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -424, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -530, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 0, -168, -444, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -46, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -551, 0, 0, 0, 0, 0,
- 0, -423, 0, 0, 0, 0, 0, -169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -181, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -553, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -567, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, 0, 0, 0, -417, 0, 0, 0, 0, 0, -585, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -580, 0, 0, 0, 0, 0, 0, 0, -418, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -582, 0, 0, 0, 0, 0, 0, 0, -462, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -218, 0, 0, 0, 0, 0, -508, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -586, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -396, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -599, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -456, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -604, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -61,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -137, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -295, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -59, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -436, -483, 0, 0, 0, 0, 0, -300, 0, 0, 0, 0, 0, -472, 0, 0, 0,
- 0, 0, 0, 0, 0, -486, 0, 0, 0, -513, 0, 0, 0, 0, 0, 0, 0, 0, -293, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -452, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -274, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -502, 0, 0, 0, 0, 0, -394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -439, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -471, -510, 0, 0, 0, 0,
- 0, 0, -511, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -375, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -495, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -503, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -185, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -310, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0,
- 0, 0, 0, -518, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -275, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, 0, 0, 0, 0, 0, -571, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -493, 0, 0, 0, 0, 0, 0, 0, 0, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, -554, 0, 0, 0, 0, 0, 0,
- -555, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 0, 0, 0, 0, 0, 0, -558, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -296, 0, 0, 0, 0, 0, 0, -541, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static short baseCheck[] = BaseCheck.baseCheck;
-
- @Override
- public final int baseCheck(int index) {
- return baseCheck[index];
- }
-
- public final static short rhs[] = baseCheck;
-
- @Override
- public final int rhs(int index) {
- return rhs[index];
- }
-
- public interface BaseAction {
- public final static char baseAction[] = { 191, 5, 154, 94, 94, 30, 30, 81, 81, 39, 39, 42, 42, 218, 1, 1, 16,
- 16, 16, 16, 16, 16, 16, 17, 17, 17, 15, 11, 11, 6, 6, 6, 6, 6, 6, 2, 75, 75, 4, 4, 12, 12, 44, 44, 155,
- 155, 156, 67, 67, 43, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
- 157, 157, 157, 132, 132, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 192, 192, 193, 193,
- 194, 160, 160, 161, 161, 158, 158, 162, 159, 159, 21, 21, 22, 22, 23, 23, 23, 24, 24, 24, 24, 25, 25,
- 25, 26, 26, 26, 31, 31, 31, 31, 31, 33, 33, 33, 34, 34, 35, 35, 36, 36, 38, 38, 40, 40, 41, 41, 45, 45,
- 45, 45, 45, 47, 47, 47, 53, 53, 55, 55, 61, 61, 62, 62, 63, 63, 64, 64, 65, 65, 65, 65, 65, 65, 65, 65,
- 65, 65, 65, 65, 65, 29, 29, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 37, 28, 163, 163, 105,
- 105, 195, 195, 104, 219, 219, 82, 82, 82, 82, 82, 82, 82, 82, 82, 83, 83, 83, 79, 79, 66, 66, 196, 196,
- 84, 84, 84, 116, 116, 197, 197, 85, 85, 85, 85, 198, 198, 86, 86, 86, 86, 86, 87, 87, 95, 95, 95, 95,
- 95, 95, 95, 95, 56, 56, 56, 56, 56, 133, 133, 131, 131, 57, 199, 27, 27, 27, 27, 27, 50, 50, 69, 69, 69,
- 69, 69, 138, 138, 134, 134, 134, 134, 134, 135, 135, 135, 136, 136, 136, 137, 137, 137, 165, 165, 165,
- 70, 70, 70, 70, 70, 71, 71, 71, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 106, 139, 139, 139, 139,
- 139, 139, 111, 111, 111, 166, 167, 167, 112, 112, 200, 169, 169, 168, 168, 140, 140, 117, 92, 92, 141,
- 59, 49, 170, 170, 60, 58, 97, 97, 171, 171, 164, 164, 142, 143, 143, 144, 89, 89, 172, 172, 77, 77, 77,
- 73, 73, 72, 78, 78, 80, 80, 68, 68, 68, 54, 98, 98, 108, 107, 107, 51, 51, 74, 74, 76, 76, 52, 109, 109,
- 109, 99, 99, 99, 100, 100, 101, 101, 101, 102, 102, 118, 118, 118, 120, 120, 119, 119, 220, 220, 103,
- 103, 202, 202, 202, 202, 202, 146, 48, 48, 174, 201, 201, 147, 147, 148, 148, 148, 149, 176, 203, 203,
- 32, 32, 110, 114, 114, 114, 114, 205, 122, 121, 121, 113, 113, 113, 177, 178, 178, 178, 178, 178, 178,
- 178, 178, 178, 178, 178, 207, 207, 204, 204, 206, 206, 179, 180, 180, 180, 180, 181, 208, 124, 123, 123,
- 209, 209, 182, 182, 182, 182, 115, 115, 115, 210, 210, 8, 8, 9, 211, 211, 212, 183, 173, 173, 184, 184,
- 185, 186, 186, 7, 7, 10, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213,
- 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213,
- 213, 213, 213, 213, 213, 90, 93, 93, 187, 187, 151, 151, 125, 125, 125, 125, 125, 125, 3, 152, 152, 150,
- 150, 188, 221, 222, 222, 223, 223, 224, 225, 225, 189, 190, 190, 190, 190, 214, 214, 214, 127, 127, 127,
- 127, 127, 128, 129, 129, 126, 126, 96, 91, 88, 88, 175, 175, 130, 130, 215, 215, 215, 153, 153, 145,
- 145, 216, 216, 191, 191, 1119, 35, 2489, 2466, 4990, 1128, 27, 30, 31, 1052, 1067, 26, 28, 2429, 296,
- 25, 23, 50, 1467, 106, 76, 77, 108, 1510, 1751, 1715, 1939, 1346, 1484, 177, 588, 1894, 308, 1988, 1941,
- 2010, 1995, 2713, 2033, 69, 2035, 176, 1986, 1394, 1471, 1331, 191, 157, 35, 330, 2939, 266, 1572, 1389,
- 1258, 35, 1032, 32, 4804, 3474, 27, 30, 31, 1052, 1067, 375, 28, 3633, 2107, 269, 264, 265, 2856, 35,
- 1032, 32, 718, 600, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296, 25, 23, 50, 1467, 106, 76, 77, 108, 1510,
- 1751, 1715, 2938, 379, 189, 1642, 35, 490, 2823, 5769, 309, 2505, 2136, 2928, 276, 279, 282, 627, 707,
- 2295, 984, 3307, 2289, 35, 1108, 425, 368, 2823, 645, 388, 355, 901, 357, 157, 3529, 350, 891, 390,
- 1351, 753, 1546, 2484, 5866, 285, 157, 35, 317, 349, 380, 653, 803, 385, 2730, 1451, 49, 69, 3902, 1628,
- 378, 1647, 4724, 1802, 71, 35, 433, 2129, 1476, 2426, 3491, 2616, 2265, 35, 1032, 32, 718, 5370, 27, 30,
- 31, 1052, 1067, 26, 28, 1409, 296, 25, 23, 50, 1467, 106, 76, 77, 108, 1510, 1751, 1715, 2938, 1261,
- 2357, 162, 342, 346, 1307, 1533, 35, 1032, 32, 1231, 266, 41, 30, 31, 1052, 1067, 2358, 2927, 2418,
- 2950, 157, 2082, 2080, 34, 3176, 2941, 484, 3108, 278, 264, 265, 3567, 1808, 3074, 3111, 3173, 161, 579,
- 923, 157, 3349, 2265, 35, 1032, 32, 718, 5370, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296, 25, 23, 50,
- 1467, 106, 76, 77, 108, 1510, 1751, 1715, 2938, 1304, 155, 162, 3483, 2233, 35, 1032, 32, 5052, 1232,
- 27, 30, 31, 1052, 1067, 57, 28, 630, 2927, 2597, 2950, 389, 3483, 483, 3565, 3566, 2941, 2389, 3108,
- 1998, 550, 576, 3167, 580, 3074, 3111, 3173, 161, 579, 2711, 228, 1610, 35, 1032, 32, 4230, 654, 27, 30,
- 31, 1052, 1067, 375, 28, 2894, 3249, 3177, 71, 35, 433, 2891, 71, 35, 2270, 2225, 2265, 35, 1032, 32,
- 718, 5370, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296, 25, 23, 50, 1467, 106, 76, 77, 108, 1510, 1751,
- 1715, 2938, 1213, 49, 162, 71, 35, 433, 69, 550, 576, 3167, 580, 4726, 2129, 1269, 931, 35, 330, 360,
- 2927, 325, 2950, 352, 3347, 357, 3000, 371, 2941, 361, 3108, 362, 2505, 3208, 4486, 3177, 3074, 3111,
- 3173, 161, 579, 157, 35, 330, 2475, 35, 1032, 32, 718, 5370, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296,
- 25, 23, 50, 1467, 106, 76, 77, 108, 1510, 1751, 1715, 2938, 61, 1985, 162, 2079, 1701, 35, 1032, 32,
- 4441, 1752, 27, 30, 31, 1052, 1067, 26, 28, 643, 2927, 548, 2950, 902, 585, 1642, 35, 314, 2941, 3939,
- 3108, 2895, 550, 576, 3167, 580, 3074, 3111, 3173, 161, 579, 1701, 35, 1032, 32, 4441, 2897, 27, 30, 31,
- 1052, 1067, 59, 28, 2624, 3013, 3217, 2174, 3177, 3279, 35, 1032, 32, 718, 1704, 27, 30, 31, 1052, 1067,
- 26, 28, 1409, 296, 25, 23, 50, 1467, 106, 76, 77, 108, 1510, 1751, 1715, 1939, 1619, 2956, 2494, 3581,
- 1894, 3008, 1988, 1941, 2010, 1995, 61, 2882, 1402, 1657, 4250, 551, 576, 3167, 580, 2613, 35, 1032, 32,
- 718, 2566, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296, 25, 23, 50, 1467, 106, 76, 77, 108, 1510, 1751,
- 1715, 1939, 69, 715, 177, 2389, 1894, 4788, 1988, 1941, 2010, 1995, 2957, 2033, 2389, 2035, 176, 3351,
- 157, 35, 3373, 415, 2333, 35, 1032, 32, 718, 2963, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296, 25, 23,
- 50, 1467, 106, 76, 77, 108, 1510, 1751, 1715, 1939, 69, 598, 177, 3015, 1894, 4235, 1988, 1941, 2010,
- 1995, 2636, 2033, 426, 2035, 176, 3351, 1642, 35, 314, 415, 5803, 418, 2543, 35, 1032, 32, 718, 379, 27,
- 30, 31, 1052, 1067, 26, 28, 1409, 296, 25, 23, 50, 1467, 106, 76, 77, 108, 1510, 1751, 1715, 1939, 441,
- 535, 177, 645, 1894, 2627, 1988, 1941, 2010, 1995, 497, 2033, 61, 2035, 176, 3351, 4866, 2889, 605, 415,
- 157, 35, 2232, 2230, 422, 416, 3084, 546, 2924, 35, 1032, 32, 718, 3076, 27, 30, 31, 1052, 1067, 26, 28,
- 1409, 296, 25, 23, 50, 1467, 106, 76, 77, 108, 1510, 1751, 1715, 1939, 2882, 2389, 177, 1645, 1894, 69,
- 1988, 1941, 2010, 1995, 766, 2033, 2889, 2035, 176, 480, 423, 416, 3084, 409, 3279, 35, 1032, 32, 718,
- 2104, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296, 25, 23, 50, 1467, 106, 76, 77, 108, 1510, 1751, 1715,
- 1939, 1257, 1642, 35, 567, 1894, 6068, 1988, 1941, 2010, 2839, 69, 1886, 69, 273, 296, 835, 2956, 927,
- 413, 416, 3084, 2924, 35, 1032, 32, 718, 1103, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296, 25, 23, 50,
- 1467, 106, 76, 77, 108, 1510, 1751, 1715, 1939, 496, 1518, 177, 266, 1894, 3377, 1988, 1941, 2010, 1995,
- 2147, 2033, 392, 2035, 176, 157, 35, 2080, 311, 409, 594, 274, 264, 265, 408, 2924, 35, 1032, 32, 718,
- 2713, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296, 25, 23, 50, 1467, 106, 76, 77, 108, 1510, 1751, 1715,
- 1939, 69, 1618, 177, 2136, 1894, 6147, 1988, 1941, 2010, 1995, 391, 2033, 88, 2035, 176, 102, 3645, 368,
- 594, 409, 2924, 35, 1032, 32, 718, 1570, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296, 25, 23, 50, 1467,
- 106, 76, 77, 108, 1510, 1751, 1715, 1939, 4585, 1885, 177, 2389, 1894, 5176, 1988, 1941, 2010, 1995,
- 348, 2033, 1531, 2035, 176, 157, 35, 2080, 313, 191, 407, 2683, 35, 1032, 32, 718, 1087, 27, 30, 31,
- 1052, 1067, 26, 28, 1409, 296, 25, 23, 50, 1467, 106, 76, 77, 108, 1510, 1751, 1715, 1939, 1895, 2461,
- 35, 312, 1894, 1618, 1988, 1941, 2010, 1995, 93, 2033, 2790, 2042, 197, 157, 35, 1108, 425, 2407, 35,
- 1032, 32, 718, 405, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296, 25, 23, 50, 1467, 106, 76, 77, 108, 1510,
- 1751, 1715, 1939, 3136, 49, 177, 5723, 1894, 266, 1988, 1941, 2010, 1995, 2364, 2033, 46, 2035, 176,
- 157, 35, 2080, 3368, 175, 484, 363, 2684, 281, 264, 265, 1788, 35, 1032, 32, 1513, 889, 40, 30, 31,
- 1052, 1067, 2924, 35, 1032, 32, 718, 2426, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296, 25, 23, 50, 1467,
- 106, 76, 77, 108, 1510, 1751, 1715, 1939, 70, 61, 177, 155, 1894, 4928, 1988, 1941, 2010, 1995, 1087,
- 2033, 2389, 2035, 176, 157, 35, 1108, 425, 188, 2924, 35, 1032, 32, 718, 466, 27, 30, 31, 1052, 1067,
- 26, 28, 1409, 296, 25, 23, 50, 1467, 106, 76, 77, 108, 1510, 1751, 1715, 1939, 468, 332, 177, 155, 1894,
- 3488, 1988, 1941, 2010, 1995, 365, 2033, 1219, 2035, 176, 157, 35, 1108, 425, 187, 2924, 35, 1032, 32,
- 718, 2418, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296, 25, 23, 50, 1467, 106, 76, 77, 108, 1510, 1751,
- 1715, 1939, 489, 1233, 177, 2389, 1894, 155, 1988, 1941, 2010, 1995, 1943, 2033, 51, 2035, 176, 157, 35,
- 1108, 425, 186, 2924, 35, 1032, 32, 718, 2566, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296, 25, 23, 50,
- 1467, 106, 76, 77, 108, 1510, 1751, 1715, 1939, 471, 71, 177, 458, 1894, 69, 1988, 1941, 2010, 1995,
- 3206, 2033, 3001, 2035, 176, 157, 35, 1108, 425, 185, 2924, 35, 1032, 32, 718, 2566, 27, 30, 31, 1052,
- 1067, 26, 28, 1409, 296, 25, 23, 50, 1467, 106, 76, 77, 108, 1510, 1751, 1715, 1939, 470, 2820, 177, 97,
- 1894, 69, 1988, 1941, 2010, 1995, 871, 2033, 321, 2035, 176, 157, 35, 1108, 425, 184, 2924, 35, 1032,
- 32, 718, 2566, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296, 25, 23, 50, 1467, 106, 76, 77, 108, 1510,
- 1751, 1715, 1939, 469, 2389, 177, 1398, 1894, 2573, 1988, 1941, 2010, 1995, 6108, 2033, 322, 2035, 176,
- 157, 35, 2080, 316, 183, 2924, 35, 1032, 32, 718, 2566, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296, 25,
- 23, 50, 1467, 106, 76, 77, 108, 1510, 1751, 1715, 1939, 3252, 55, 177, 1349, 1894, 69, 1988, 1941, 2010,
- 1995, 2761, 2033, 332, 2035, 176, 2102, 35, 2080, 311, 182, 2924, 35, 1032, 32, 718, 2566, 27, 30, 31,
- 1052, 1067, 26, 28, 1409, 296, 25, 23, 50, 1467, 106, 76, 77, 108, 1510, 1751, 1715, 1939, 69, 98, 177,
- 237, 1894, 2173, 1988, 1941, 2010, 1995, 56, 2033, 331, 2035, 176, 157, 3484, 2080, 74, 181, 2924, 35,
- 1032, 32, 718, 147, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296, 25, 23, 50, 1467, 106, 76, 77, 108, 1510,
- 1751, 1715, 1939, 69, 227, 177, 1630, 1894, 2545, 1988, 1941, 2010, 1995, 314, 2033, 340, 2035, 176,
- 2102, 35, 2080, 3485, 180, 2924, 35, 1032, 32, 718, 2566, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296, 25,
- 23, 50, 1467, 106, 76, 77, 108, 1510, 1751, 1715, 1939, 69, 3077, 177, 1336, 1894, 3270, 1988, 1941,
- 2010, 1995, 2004, 2033, 3191, 2035, 176, 157, 35, 2080, 3489, 179, 2924, 35, 1032, 32, 718, 2567, 27,
- 30, 31, 1052, 1067, 26, 28, 1409, 296, 25, 23, 50, 1467, 106, 76, 77, 108, 1510, 1751, 1715, 1939, 69,
- 2328, 177, 405, 1894, 704, 1988, 1941, 2010, 1995, 1489, 2033, 419, 2035, 176, 157, 35, 2080, 566, 178,
- 2924, 35, 1032, 32, 718, 1338, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296, 25, 23, 50, 1467, 106, 76, 77,
- 108, 1510, 1751, 1715, 1939, 2540, 1910, 177, 1456, 1894, 69, 1988, 1941, 2010, 1995, 2824, 2033, 1045,
- 2035, 176, 157, 35, 1108, 425, 192, 2924, 35, 1032, 32, 718, 1724, 27, 30, 31, 1052, 1067, 26, 28, 1409,
- 296, 25, 23, 50, 1467, 106, 76, 77, 108, 1510, 1751, 1715, 1939, 308, 586, 177, 2529, 1894, 491, 1988,
- 1941, 2010, 1995, 228, 2033, 3133, 2035, 176, 157, 35, 1108, 425, 140, 3045, 35, 1032, 32, 718, 1374,
- 27, 30, 31, 1052, 1067, 26, 28, 1409, 296, 25, 23, 50, 1467, 106, 76, 77, 108, 1510, 1751, 1715, 2938,
- 308, 762, 162, 2600, 1243, 35, 1032, 32, 4230, 3474, 27, 30, 31, 1052, 1067, 375, 28, 2738, 2927, 2737,
- 2950, 2361, 4235, 931, 3533, 330, 2941, 376, 3108, 427, 464, 1607, 273, 296, 3074, 3111, 3173, 161, 173,
- 3045, 35, 1032, 32, 718, 379, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296, 25, 23, 50, 1467, 106, 76, 77,
- 108, 1510, 1751, 1715, 2938, 69, 69, 162, 1107, 266, 2826, 1471, 1635, 310, 3249, 355, 901, 357, 2326,
- 2032, 350, 891, 1985, 2927, 2888, 2950, 2935, 274, 264, 265, 2505, 2941, 349, 3108, 4228, 1618, 2505,
- 1775, 2401, 3074, 3111, 3173, 161, 172, 3045, 35, 1032, 32, 718, 1169, 27, 30, 31, 1052, 1067, 26, 28,
- 1409, 296, 25, 23, 50, 1467, 106, 76, 77, 108, 1510, 1751, 1715, 2938, 2889, 2677, 162, 1788, 35, 1032,
- 32, 2677, 1704, 2707, 30, 31, 1052, 1067, 343, 346, 1307, 69, 2927, 61, 2950, 3250, 4235, 5114, 2437,
- 412, 2941, 934, 3108, 1800, 2394, 412, 2494, 3377, 3074, 3111, 3173, 161, 171, 3045, 35, 1032, 32, 718,
- 379, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296, 25, 23, 50, 1467, 106, 76, 77, 108, 1510, 1751, 1715,
- 2938, 475, 3745, 162, 645, 1243, 35, 1032, 32, 4230, 3474, 27, 30, 31, 1052, 1067, 375, 28, 2136, 2927,
- 1984, 2950, 1968, 35, 490, 3684, 5769, 2941, 544, 3108, 2505, 479, 369, 493, 2505, 3074, 3111, 3173,
- 161, 170, 3045, 35, 1032, 32, 718, 1894, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296, 25, 23, 50, 1467,
- 106, 76, 77, 108, 1510, 1751, 1715, 2938, 1894, 410, 162, 2399, 266, 3004, 2433, 3259, 534, 2677, 355,
- 901, 357, 359, 2540, 350, 891, 1982, 2927, 586, 2950, 594, 284, 264, 265, 2505, 2941, 2666, 3108, 3071,
- 386, 157, 3589, 3358, 3074, 3111, 3173, 161, 169, 3045, 35, 1032, 32, 718, 2071, 27, 30, 31, 1052, 1067,
- 26, 28, 1409, 296, 25, 23, 50, 1467, 106, 76, 77, 108, 1510, 1751, 1715, 2938, 2882, 2677, 162, 2274,
- 1243, 35, 1032, 32, 4230, 3474, 27, 30, 31, 1052, 1067, 375, 28, 1885, 2927, 2065, 2950, 5176, 2878, 35,
- 312, 588, 2941, 2673, 3108, 313, 585, 1724, 637, 2540, 3074, 3111, 3173, 161, 168, 3045, 35, 1032, 32,
- 718, 2396, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296, 25, 23, 50, 1467, 106, 76, 77, 108, 1510, 1751,
- 1715, 2938, 2429, 331, 162, 1894, 266, 428, 464, 487, 3565, 3566, 355, 901, 357, 485, 2601, 350, 891,
- 439, 2927, 4421, 2950, 2059, 287, 264, 265, 5790, 2941, 3657, 3108, 587, 2540, 2094, 1342, 358, 3074,
- 3111, 3173, 161, 167, 3045, 35, 1032, 32, 718, 2637, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296, 25, 23,
- 50, 1467, 106, 76, 77, 108, 1510, 1751, 1715, 2938, 2684, 1894, 162, 1877, 2243, 35, 1032, 32, 5052,
- 1561, 27, 30, 31, 1052, 1067, 56, 28, 443, 2927, 667, 2950, 2461, 35, 315, 430, 464, 2941, 89, 3108,
- 215, 102, 5700, 1232, 3190, 3074, 3111, 3173, 161, 166, 3045, 35, 1032, 32, 718, 1169, 27, 30, 31, 1052,
- 1067, 26, 28, 1409, 296, 25, 23, 50, 1467, 106, 76, 77, 108, 1510, 1751, 1715, 2938, 1822, 467, 162,
- 1710, 35, 1032, 32, 4441, 417, 27, 30, 31, 1052, 1067, 58, 28, 1913, 2891, 2927, 2952, 2950, 429, 464,
- 42, 3248, 2505, 2941, 233, 3108, 1232, 1906, 1232, 3190, 1791, 3074, 3111, 3173, 161, 165, 3045, 35,
- 1032, 32, 718, 486, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296, 25, 23, 50, 1467, 106, 76, 77, 108, 1510,
- 1751, 1715, 2938, 2597, 3205, 162, 1788, 35, 1032, 32, 364, 371, 3025, 30, 31, 1052, 1067, 2891, 2319,
- 2891, 69, 2927, 2432, 2950, 1001, 4235, 2953, 35, 565, 2941, 69, 3108, 60, 1232, 585, 2630, 2440, 3074,
- 3111, 3173, 161, 164, 3045, 35, 1032, 32, 718, 379, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296, 25, 23,
- 50, 1467, 106, 76, 77, 108, 1510, 1751, 1715, 2938, 1825, 1894, 162, 645, 3164, 371, 3166, 371, 69,
- 1618, 2091, 589, 1518, 2693, 1902, 2891, 3377, 69, 2927, 2154, 2950, 1570, 4235, 753, 1618, 1232, 2941,
- 2340, 3108, 1518, 585, 24, 2141, 3377, 3074, 3111, 3173, 161, 163, 3105, 35, 1032, 32, 718, 379, 27, 30,
- 31, 1052, 1067, 26, 28, 1409, 296, 25, 23, 50, 1467, 106, 76, 77, 108, 1510, 1751, 1715, 2938, 2136,
- 2667, 162, 645, 266, 370, 371, 69, 69, 2420, 2891, 69, 1266, 2952, 368, 1518, 5768, 2136, 2927, 3377,
- 2950, 61, 278, 264, 265, 5964, 2941, 2346, 3108, 61, 2402, 4600, 2637, 6048, 3074, 3111, 3173, 161, 160,
- 3165, 35, 1032, 32, 718, 4666, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296, 25, 23, 50, 1467, 106, 76, 77,
- 108, 1510, 1751, 1715, 1939, 366, 371, 177, 2136, 1894, 335, 1988, 1941, 2010, 1995, 1561, 2033, 61,
- 2035, 176, 925, 6055, 368, 1894, 222, 3279, 35, 1032, 32, 718, 2505, 27, 30, 31, 1052, 1067, 26, 28,
- 1409, 296, 25, 23, 50, 1467, 106, 76, 77, 108, 1510, 1751, 1715, 1939, 2428, 1849, 319, 2505, 1894,
- 1386, 1988, 1941, 2010, 1995, 94, 2033, 1894, 2042, 197, 3279, 35, 1032, 32, 718, 3362, 27, 30, 31,
- 1052, 1067, 26, 28, 1409, 296, 25, 23, 50, 1467, 106, 76, 77, 108, 1510, 1751, 1715, 1939, 69, 44, 3248,
- 2677, 1894, 69, 1988, 1941, 2010, 1995, 4727, 2033, 69, 2042, 197, 69, 69, 1429, 69, 2327, 723, 1316,
- 61, 2399, 2939, 1729, 6189, 587, 2637, 1106, 3279, 35, 1032, 32, 718, 460, 27, 30, 31, 1052, 1067, 26,
- 28, 1409, 296, 25, 23, 50, 1467, 106, 76, 77, 108, 1510, 1751, 1715, 1939, 69, 1017, 3349, 2508, 1894,
- 5781, 1988, 1941, 2010, 1995, 255, 2033, 2539, 2042, 197, 3279, 35, 1032, 32, 718, 329, 27, 30, 31,
- 1052, 1067, 26, 28, 1409, 296, 25, 23, 50, 1467, 106, 76, 77, 108, 1510, 1751, 1715, 1939, 388, 835,
- 499, 2537, 1894, 69, 1988, 1941, 2010, 1995, 5794, 2033, 69, 2042, 197, 3084, 2740, 2762, 2568, 380,
- 653, 803, 385, 1017, 3349, 2606, 2638, 1894, 1894, 578, 3279, 35, 1032, 32, 718, 459, 27, 30, 31, 1052,
- 1067, 26, 28, 1409, 296, 25, 23, 50, 1467, 106, 76, 77, 108, 1510, 1751, 1715, 1939, 68, 53, 2678, 3073,
- 1894, 2637, 1988, 1941, 2010, 1995, 2644, 2033, 3134, 2042, 197, 3441, 35, 1032, 32, 718, 462, 27, 30,
- 31, 1052, 1067, 26, 28, 1409, 296, 25, 23, 50, 1467, 106, 76, 77, 108, 1510, 1751, 1715, 1939, 324,
- 2706, 339, 2607, 1894, 69, 1988, 1941, 2010, 1995, 2057, 2033, 3247, 2042, 197, 2787, 69, 2827, 69,
- 3248, 2085, 1126, 2782, 4350, 4572, 2888, 2637, 2881, 2198, 3366, 2637, 157, 35, 1108, 425, 1892, 3387,
- 35, 1032, 32, 718, 1894, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296, 25, 23, 50, 1467, 106, 76, 77, 108,
- 1510, 1751, 1715, 2938, 49, 324, 212, 266, 1007, 657, 232, 761, 87, 829, 1365, 2129, 863, 266, 3587,
- 3702, 1929, 2446, 2927, 577, 2950, 281, 264, 265, 2246, 2637, 2941, 1532, 3108, 2628, 3366, 284, 264,
- 265, 3074, 3479, 3333, 35, 1032, 32, 718, 1894, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296, 25, 23, 50,
- 1467, 106, 76, 77, 108, 1510, 1751, 1715, 2938, 1424, 231, 1518, 266, 2705, 4235, 3377, 1896, 52, 3043,
- 2252, 2886, 3135, 1814, 2605, 2947, 2502, 2978, 2927, 2637, 2950, 570, 264, 265, 2979, 2739, 2941, 3849,
- 3108, 3279, 35, 1032, 32, 718, 3436, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296, 25, 23, 50, 1467, 106,
- 76, 77, 108, 1510, 1751, 1715, 1939, 2136, 2637, 338, 2637, 1894, 3194, 1988, 1941, 2822, 3333, 35,
- 1032, 32, 718, 368, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296, 25, 23, 50, 1467, 106, 76, 77, 108, 1510,
- 1751, 1715, 2938, 2106, 2786, 3009, 3129, 235, 3103, 233, 3101, 5938, 3195, 87, 397, 4235, 3067, 3099,
- 3193, 3219, 2637, 2927, 2637, 2950, 3220, 173, 3234, 2746, 3288, 2941, 1894, 3428, 3279, 35, 1032, 32,
- 718, 379, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296, 25, 23, 50, 1467, 106, 76, 77, 108, 1510, 1751,
- 1715, 1939, 334, 2178, 4242, 3365, 1894, 1894, 1988, 2828, 3333, 35, 1032, 32, 718, 1894, 27, 30, 31,
- 1052, 1067, 26, 28, 1409, 296, 25, 23, 50, 1467, 106, 76, 77, 108, 1510, 1751, 1715, 2938, 2333, 3249,
- 3342, 2965, 2715, 6984, 6984, 6984, 90, 2637, 6984, 2637, 6984, 6984, 6984, 6984, 6984, 6984, 2927,
- 1894, 2950, 3279, 35, 1032, 32, 718, 3433, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296, 25, 23, 50, 1467,
- 106, 76, 77, 108, 1510, 1751, 1715, 1939, 256, 3163, 226, 6984, 1894, 1894, 2748, 3333, 35, 1032, 32,
- 718, 1894, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296, 25, 23, 50, 1467, 106, 76, 77, 108, 1510, 1751,
- 1715, 2938, 6984, 67, 6984, 6984, 6984, 6984, 6984, 6984, 66, 6984, 6984, 6984, 6984, 6984, 6984, 6984,
- 6984, 6984, 2927, 6984, 3419, 3279, 35, 1032, 32, 718, 6984, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296,
- 25, 23, 50, 1467, 106, 76, 77, 108, 1510, 1751, 1715, 1939, 6984, 4445, 1894, 1894, 2811, 3279, 35,
- 1032, 32, 718, 6984, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296, 25, 23, 50, 1467, 106, 76, 77, 108,
- 1510, 1751, 1715, 1939, 65, 64, 6984, 6984, 2814, 3333, 35, 1032, 32, 718, 6984, 27, 30, 31, 1052, 1067,
- 26, 28, 1409, 296, 25, 23, 50, 1467, 106, 76, 77, 108, 1510, 1751, 1715, 2938, 1743, 35, 1032, 32, 4230,
- 1400, 27, 30, 31, 1052, 1067, 375, 28, 3333, 35, 1032, 32, 718, 3425, 27, 30, 31, 1052, 1067, 26, 28,
- 1409, 296, 25, 23, 50, 1467, 106, 76, 77, 108, 1510, 1751, 1715, 2938, 1820, 35, 1032, 32, 4230, 6182,
- 27, 30, 31, 1052, 1067, 375, 28, 1360, 35, 1032, 32, 4804, 3426, 27, 30, 31, 1052, 1067, 375, 28, 2671,
- 2707, 1894, 6984, 387, 1471, 355, 901, 357, 6984, 1894, 350, 891, 6984, 388, 1894, 69, 6984, 6984, 1894,
- 2497, 1471, 6984, 826, 157, 35, 1108, 425, 189, 6984, 6984, 143, 55, 380, 653, 803, 385, 3531, 6984,
- 234, 54, 2136, 1894, 755, 189, 101, 355, 901, 357, 3309, 592, 350, 891, 1668, 388, 369, 49, 6984, 6984,
- 355, 901, 357, 6984, 2666, 353, 891, 6984, 2129, 1547, 6984, 6984, 6984, 488, 380, 653, 803, 385, 6984,
- 3279, 35, 1032, 32, 718, 2531, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296, 25, 23, 50, 1467, 106, 76, 77,
- 108, 1510, 1751, 1715, 2626, 3279, 35, 1032, 32, 718, 6984, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296,
- 25, 23, 50, 1467, 106, 76, 77, 108, 1510, 1751, 1715, 2664, 6984, 6984, 6984, 6984, 402, 3279, 35, 1032,
- 32, 718, 6984, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296, 25, 23, 50, 1467, 106, 76, 77, 108, 1510,
- 1751, 1715, 2676, 3279, 35, 1032, 32, 718, 6984, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296, 25, 23, 50,
- 1467, 106, 76, 77, 108, 1510, 1751, 1715, 2692, 3279, 35, 1032, 32, 718, 6984, 27, 30, 31, 1052, 1067,
- 26, 28, 1409, 296, 25, 23, 50, 1467, 106, 76, 77, 108, 1510, 1751, 1715, 3414, 3279, 35, 1032, 32, 718,
- 6984, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296, 25, 23, 50, 1467, 106, 76, 77, 108, 1510, 1751, 1715,
- 3416, 3279, 35, 1032, 32, 718, 6984, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296, 25, 23, 50, 1467, 106,
- 76, 77, 108, 1510, 1751, 1715, 3418, 1221, 35, 3482, 32, 4804, 3474, 27, 30, 31, 1052, 1067, 375, 28,
- 3279, 35, 1032, 32, 718, 6984, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296, 25, 23, 50, 1467, 106, 76, 77,
- 108, 1510, 1751, 1715, 3916, 6984, 1894, 69, 243, 35, 1108, 425, 1471, 3495, 35, 1108, 425, 4742, 6984,
- 2136, 3302, 6984, 6984, 6984, 6984, 1471, 271, 296, 157, 35, 1108, 425, 1894, 368, 6984, 189, 414, 355,
- 901, 357, 49, 2671, 350, 891, 2880, 308, 600, 1894, 189, 1894, 6984, 2129, 1377, 69, 1592, 6984, 6984,
- 195, 1471, 6984, 49, 6984, 4961, 3902, 266, 6984, 6984, 6984, 3364, 189, 6984, 2129, 2223, 6984, 6984,
- 2188, 6984, 5023, 3372, 5085, 213, 189, 269, 264, 265, 3279, 35, 1032, 32, 718, 3476, 27, 30, 31, 1052,
- 1067, 26, 28, 1409, 296, 25, 23, 50, 1467, 106, 76, 77, 108, 1510, 1751, 2695, 157, 35, 1108, 425, 6984,
- 6984, 6984, 6984, 309, 229, 6984, 6984, 276, 279, 282, 627, 707, 2155, 35, 1032, 32, 4230, 3474, 27, 30,
- 31, 1052, 1067, 375, 28, 6984, 1894, 49, 454, 456, 3481, 1351, 753, 1546, 2484, 5866, 285, 6984, 2129,
- 2948, 1466, 35, 3482, 32, 4230, 3474, 27, 30, 31, 1052, 1067, 375, 28, 6984, 6984, 2641, 2556, 3279, 35,
- 1032, 32, 718, 2616, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296, 25, 23, 50, 1467, 106, 76, 77, 108,
- 1510, 1751, 2732, 259, 355, 901, 357, 2250, 600, 350, 891, 69, 1471, 69, 6984, 6984, 1471, 2780, 1471,
- 4472, 6984, 349, 6241, 157, 35, 1108, 425, 1894, 1894, 6984, 262, 189, 355, 901, 357, 193, 6984, 350,
- 891, 189, 3372, 189, 213, 6247, 230, 2677, 6984, 387, 3708, 1592, 3715, 237, 249, 903, 1894, 49, 6984,
- 3109, 3666, 236, 246, 247, 248, 250, 6984, 1, 2129, 1476, 2436, 202, 600, 6984, 69, 4235, 342, 346,
- 1307, 1471, 2250, 6984, 6984, 6984, 201, 1471, 5209, 216, 200, 203, 204, 205, 206, 207, 262, 189, 6984,
- 379, 3664, 388, 6984, 6984, 189, 6984, 3372, 3567, 213, 69, 193, 2677, 6984, 3787, 1471, 6984, 3275,
- 237, 249, 903, 380, 653, 803, 385, 1362, 236, 246, 247, 248, 250, 2531, 6984, 6984, 6984, 6984, 202,
- 6984, 189, 6984, 6984, 6984, 6984, 6984, 455, 456, 3481, 3788, 6984, 201, 6984, 214, 217, 200, 203, 204,
- 205, 206, 207, 1511, 35, 1032, 32, 4230, 1400, 27, 30, 31, 1052, 1067, 375, 28, 1413, 35, 1032, 32,
- 4804, 6984, 27, 30, 31, 1052, 1067, 375, 28, 6984, 6984, 1974, 3450, 6984, 6984, 3377, 6984, 6984, 6984,
- 6984, 6984, 6984, 6984, 3279, 35, 1032, 32, 718, 4483, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296, 25,
- 23, 50, 1467, 106, 76, 77, 108, 1510, 2534, 6984, 6984, 2136, 6984, 6984, 6984, 6984, 355, 901, 357,
- 6984, 6984, 350, 891, 6984, 388, 369, 2136, 6984, 6984, 355, 901, 357, 6984, 589, 351, 891, 6984, 388,
- 2188, 6984, 4600, 6984, 3377, 380, 653, 803, 385, 6984, 6984, 6984, 6984, 2126, 6984, 590, 6984, 6984,
- 382, 653, 803, 385, 3279, 35, 1032, 32, 718, 6984, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296, 25, 23,
- 50, 1467, 106, 76, 77, 108, 1510, 2537, 345, 6984, 6984, 6984, 6984, 600, 6984, 2136, 6984, 6984, 6984,
- 2393, 6984, 1388, 2781, 6984, 4235, 6984, 4235, 4235, 6984, 369, 6984, 6984, 6984, 6984, 6984, 262, 189,
- 243, 35, 1108, 425, 388, 6984, 6984, 6984, 3372, 3849, 213, 3849, 3849, 2677, 6984, 6984, 6984, 6984,
- 96, 237, 249, 903, 6984, 382, 653, 803, 385, 236, 246, 247, 248, 250, 49, 431, 6984, 6984, 6984, 202,
- 600, 6984, 69, 6984, 6984, 2129, 2151, 1471, 1388, 6984, 6984, 6984, 201, 4235, 6984, 3588, 200, 203,
- 204, 205, 206, 207, 262, 189, 243, 35, 1108, 425, 6984, 2235, 189, 6984, 3372, 6984, 213, 3849, 6984,
- 2677, 6984, 1753, 6984, 6984, 6984, 237, 249, 903, 6984, 542, 6984, 396, 542, 236, 246, 247, 248, 250,
- 49, 517, 6984, 6984, 6984, 202, 600, 6984, 3591, 2245, 2268, 2129, 2288, 541, 2393, 6984, 541, 6984,
- 201, 4235, 6984, 211, 200, 203, 204, 205, 206, 207, 262, 189, 501, 35, 1108, 425, 6984, 2188, 6984,
- 6984, 3372, 539, 213, 3849, 539, 2677, 6984, 6984, 6984, 6984, 6984, 237, 249, 903, 6984, 6984, 6984,
- 396, 6984, 236, 246, 247, 248, 250, 49, 603, 6984, 6984, 6984, 202, 600, 6984, 3625, 2245, 2268, 2129,
- 47, 652, 6984, 6984, 3564, 6984, 201, 6984, 6984, 209, 200, 203, 204, 205, 206, 207, 262, 189, 243, 35,
- 1108, 425, 6984, 2750, 2250, 6984, 3372, 6984, 213, 1471, 69, 2677, 6984, 6984, 6984, 1471, 6984, 237,
- 249, 903, 6984, 6984, 6984, 542, 6984, 236, 246, 247, 248, 250, 49, 689, 193, 6984, 6984, 202, 600,
- 6984, 189, 2250, 6984, 2129, 47, 6984, 1471, 541, 6984, 4446, 201, 6984, 6984, 210, 200, 203, 204, 205,
- 206, 207, 262, 189, 2292, 35, 1108, 425, 6984, 740, 6984, 193, 3372, 6984, 213, 540, 6984, 2677, 6984,
- 6984, 6984, 6984, 6984, 237, 249, 903, 6984, 6984, 6984, 6984, 6984, 236, 246, 247, 248, 250, 49, 775,
- 6984, 6984, 6984, 202, 600, 6984, 6984, 2250, 6984, 2129, 2861, 6984, 1471, 6984, 6984, 3917, 201, 6984,
- 6984, 220, 200, 203, 204, 205, 206, 207, 262, 189, 501, 35, 1108, 425, 6984, 2235, 2250, 193, 3372,
- 6984, 213, 1471, 6984, 2677, 6984, 6984, 6984, 6984, 6984, 237, 249, 903, 3925, 6984, 6984, 6984, 6984,
- 236, 246, 247, 248, 250, 49, 861, 193, 6984, 6984, 202, 600, 6984, 6984, 6984, 6984, 2129, 2876, 6984,
- 6984, 6984, 6984, 6984, 201, 6984, 6984, 3658, 200, 203, 204, 205, 206, 207, 262, 189, 501, 35, 1108,
- 425, 6984, 5775, 6984, 6984, 3372, 6984, 213, 6984, 6984, 2677, 6984, 6984, 6984, 6984, 6984, 237, 249,
- 903, 3930, 6984, 6984, 6984, 6984, 236, 246, 247, 248, 250, 49, 947, 6984, 6984, 6984, 202, 600, 6984,
- 6984, 6984, 6984, 2129, 47, 6984, 6984, 6984, 6984, 3957, 201, 6984, 6984, 225, 200, 203, 204, 205, 206,
- 207, 262, 189, 243, 35, 1108, 425, 6984, 2864, 6984, 6984, 3372, 6984, 213, 6984, 69, 2677, 6984, 6984,
- 6984, 600, 6984, 237, 249, 903, 6984, 6984, 6984, 6984, 6984, 236, 246, 247, 248, 250, 49, 1033, 6984,
- 6984, 6984, 202, 600, 379, 189, 6984, 6984, 2129, 47, 6984, 6984, 6984, 6984, 2928, 201, 6984, 6984,
- 219, 200, 203, 204, 205, 206, 207, 262, 189, 6984, 6984, 645, 6984, 6984, 1671, 6984, 6984, 3372, 6984,
- 213, 6984, 6984, 2677, 6984, 6984, 6984, 6984, 6984, 237, 249, 903, 6984, 6984, 6984, 6984, 2730, 236,
- 246, 247, 248, 250, 6984, 6984, 6984, 6984, 6984, 202, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984,
- 6984, 6984, 6984, 6984, 201, 6984, 6984, 228, 200, 203, 204, 205, 206, 207, 3279, 35, 1032, 32, 718,
- 6984, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296, 25, 23, 50, 1467, 106, 76, 77, 108, 2548, 3279, 35,
- 1032, 32, 718, 6984, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296, 25, 23, 50, 1467, 106, 76, 77, 108,
- 2575, 3279, 35, 1032, 32, 718, 6984, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296, 25, 23, 50, 1467, 106,
- 76, 77, 108, 2600, 3593, 35, 554, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 271, 296,
- 3279, 35, 1032, 32, 718, 6984, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296, 25, 23, 50, 1467, 106, 76, 77,
- 85, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 3279, 2082, 1032, 2176, 718, 266, 27, 30, 31, 1052,
- 1067, 26, 28, 1409, 296, 25, 23, 50, 1467, 106, 76, 77, 84, 269, 264, 265, 3279, 35, 1032, 32, 718,
- 6984, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296, 25, 23, 50, 1467, 106, 76, 77, 83, 6984, 6984, 6984,
- 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 276, 279, 282, 627, 707, 6984,
- 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984,
- 6984, 2286, 2946, 3361, 3371, 6159, 3279, 35, 1032, 32, 718, 6984, 27, 30, 31, 1052, 1067, 26, 28, 1409,
- 296, 25, 23, 50, 1467, 106, 76, 77, 82, 3279, 35, 1032, 32, 718, 6984, 27, 30, 31, 1052, 1067, 26, 28,
- 1409, 296, 25, 23, 50, 1467, 106, 76, 77, 81, 6984, 6984, 6984, 563, 564, 568, 3279, 35, 1032, 32, 718,
- 6984, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296, 25, 23, 50, 1467, 106, 76, 77, 80, 3424, 3279, 35,
- 1032, 32, 718, 6984, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296, 25, 23, 50, 1467, 106, 76, 77, 79, 3279,
- 35, 1032, 32, 718, 6984, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296, 25, 23, 50, 1467, 106, 76, 77, 78,
- 2984, 35, 1032, 32, 718, 6984, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296, 25, 23, 50, 1467, 106, 76, 77,
- 104, 3279, 35, 1032, 32, 718, 6984, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296, 25, 23, 50, 1467, 106,
- 76, 77, 110, 3279, 35, 1032, 32, 718, 6984, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296, 25, 23, 50, 1467,
- 106, 76, 77, 109, 3279, 35, 1032, 32, 718, 6984, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296, 25, 23, 50,
- 1467, 106, 76, 77, 107, 3279, 35, 1032, 32, 718, 6984, 27, 30, 31, 1052, 1067, 26, 28, 1409, 296, 25,
- 23, 50, 1467, 106, 76, 77, 105, 3225, 35, 1032, 32, 718, 6984, 27, 30, 31, 1052, 1067, 26, 28, 1409,
- 296, 25, 23, 50, 1467, 86, 76, 77, 1576, 243, 35, 1108, 425, 4235, 6984, 2055, 35, 1108, 425, 6984,
- 6984, 1843, 6984, 6984, 6984, 6984, 4235, 6984, 6984, 6984, 243, 35, 1108, 425, 1932, 262, 6984, 6984,
- 6984, 4235, 6984, 49, 6984, 157, 35, 1108, 425, 308, 262, 6984, 6984, 6984, 2129, 47, 6984, 6984, 239,
- 249, 903, 6984, 6984, 262, 49, 6984, 238, 246, 247, 248, 250, 239, 249, 903, 6984, 2129, 47, 49, 1718,
- 238, 246, 247, 248, 250, 239, 249, 903, 6984, 2129, 2619, 6984, 6984, 238, 246, 247, 248, 250, 6984,
- 6984, 1765, 240, 242, 244, 3263, 6984, 251, 241, 243, 3544, 35, 1108, 425, 4742, 240, 242, 244, 3263,
- 6984, 251, 241, 243, 272, 296, 3413, 6984, 6984, 240, 242, 244, 3263, 6984, 251, 241, 243, 6984, 6984,
- 6984, 6984, 6984, 6984, 308, 1869, 6984, 6047, 6984, 6984, 6984, 6984, 6984, 72, 6984, 6984, 6984, 6984,
- 1916, 6984, 6047, 6984, 6984, 266, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 1963, 6984, 6047, 6984,
- 6984, 6984, 6984, 6984, 6984, 6984, 270, 264, 265, 1360, 35, 1032, 32, 4804, 6984, 27, 30, 31, 1052,
- 1067, 375, 28, 2066, 35, 1032, 32, 4230, 4187, 27, 30, 31, 1052, 1067, 375, 28, 2144, 35, 1108, 425,
- 6984, 6984, 2021, 6984, 309, 6984, 6984, 4235, 277, 280, 283, 627, 707, 6984, 6984, 6984, 6984, 6984,
- 1665, 6984, 6984, 6984, 440, 4235, 2136, 6984, 6984, 6984, 49, 262, 6984, 6984, 6984, 6984, 6984, 6984,
- 6984, 286, 369, 2129, 47, 6984, 355, 901, 357, 262, 6984, 351, 891, 6984, 239, 249, 903, 6984, 6984,
- 352, 3347, 357, 238, 246, 247, 248, 250, 647, 6984, 6984, 239, 249, 903, 6984, 6984, 6984, 6984, 6984,
- 238, 246, 247, 248, 250, 1754, 243, 35, 1108, 425, 4235, 6984, 6984, 243, 35, 1108, 425, 6984, 240, 242,
- 244, 3263, 6984, 582, 241, 243, 157, 35, 1108, 425, 6984, 6984, 262, 6984, 240, 242, 244, 3263, 49, 581,
- 241, 243, 6984, 6984, 6984, 49, 6984, 6984, 6984, 2129, 47, 6984, 6984, 239, 249, 903, 2129, 47, 49,
- 6984, 6984, 238, 246, 247, 248, 250, 2110, 6984, 6984, 2129, 2884, 4235, 6984, 1812, 6984, 6984, 6984,
- 6984, 6984, 2199, 1859, 2624, 6984, 6984, 4235, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 262,
- 6984, 240, 242, 244, 3263, 6984, 252, 241, 243, 6984, 6984, 1179, 262, 6984, 6984, 4333, 4235, 6984,
- 6984, 6984, 239, 249, 903, 3642, 35, 554, 6984, 6984, 238, 246, 247, 248, 250, 239, 249, 903, 272, 296,
- 262, 6984, 6984, 238, 246, 247, 248, 250, 1378, 6984, 6984, 6984, 3377, 4235, 6984, 2467, 35, 1108, 425,
- 6984, 6984, 1210, 444, 5951, 240, 242, 244, 3263, 6984, 341, 241, 243, 6984, 6984, 6984, 3849, 266, 240,
- 242, 244, 3263, 1296, 536, 241, 243, 4333, 4235, 49, 6984, 6984, 6984, 6984, 6984, 6984, 270, 264, 265,
- 6984, 2129, 47, 6984, 6984, 2136, 445, 446, 447, 3263, 1378, 262, 6984, 6984, 3377, 4235, 2826, 6984,
- 6984, 368, 6984, 600, 6984, 6984, 6984, 993, 6984, 6984, 6984, 6984, 69, 3250, 1210, 444, 5951, 600,
- 6984, 3849, 277, 280, 283, 627, 707, 379, 189, 6984, 6984, 6984, 6984, 4585, 6984, 6984, 6984, 221, 396,
- 6984, 6984, 379, 189, 6984, 69, 6984, 6984, 6984, 2136, 600, 6984, 3274, 2601, 3077, 2245, 2268, 6984,
- 6984, 445, 446, 447, 3263, 368, 6984, 6984, 6984, 645, 6984, 6984, 6984, 6984, 379, 189, 6984, 6984,
- 6984, 6984, 448, 450, 2670, 6984, 2928, 6984, 3250, 4235, 6984, 6984, 6984, 69, 6984, 3118, 6984, 4666,
- 4235, 6984, 6984, 645, 396, 69, 6984, 563, 564, 569, 600, 1131, 69, 379, 6215, 6984, 593, 600, 6984,
- 3077, 2245, 2268, 379, 223, 69, 6984, 6984, 3387, 6984, 4235, 6984, 69, 379, 189, 6984, 6984, 600, 6984,
- 645, 379, 189, 6984, 221, 69, 6984, 6984, 6984, 645, 4235, 221, 69, 379, 448, 451, 6984, 4235, 6984,
- 2601, 379, 189, 6984, 6984, 596, 6984, 2601, 6984, 6984, 6984, 221, 6984, 379, 2366, 6984, 6984, 6984,
- 6984, 645, 379, 6984, 6984, 6984, 6984, 6984, 2601, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984,
- 6984, 6984, 6984, 645, 6984, 6984, 6984, 6984, 2423, 6984, 645, 6984, 3583, 6984, 6984, 6984, 6984,
- 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 3674, 6984, 4254, 6984, 6984, 6984, 6984,
- 597, 6984, 4269, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984,
- 6984, 6984, 6984, 6984, 4271, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984,
- 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984,
- 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984,
- 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 3935, 6984, 0, 758, 1, 0, 919, 1, 0, 39, 1, 6999, 0, 39,
- 1, 6998, 0, 799, 1, 0, 39, 6999, 0, 39, 6998, 0, 1153, 354, 0, 1309, 29, 0, 477, 1361, 0, 491, 1363, 0,
- 6999, 48, 0, 6998, 48, 0, 38, 814, 0, 38, 6999, 0, 38, 6998, 0, 6990, 1, 0, 6989, 1, 0, 318, 431, 0,
- 318, 323, 0, 7252, 275, 0, 7251, 275, 0, 7358, 275, 0, 7357, 275, 0, 7279, 275, 0, 7278, 275, 0, 7277,
- 275, 0, 7276, 275, 0, 7275, 275, 0, 7274, 275, 0, 7273, 275, 0, 7272, 275, 0, 7291, 275, 0, 7290, 275,
- 0, 7289, 275, 0, 7288, 275, 0, 7287, 275, 0, 7286, 275, 0, 7285, 275, 0, 7284, 275, 0, 7283, 275, 0,
- 7282, 275, 0, 7281, 275, 0, 39, 275, 6999, 0, 39, 275, 6998, 0, 7022, 275, 0, 1309, 424, 0, 4052, 126,
- 0, 35, 33, 0, 1, 481, 0, 495, 1165, 0, 494, 1305, 0, 47, 37, 0, 7022, 1, 0, 39, 1, 0, 639, 91, 0, 32,
- 34, 0, 39, 814, 0, 1, 1117, 0, 1, 7291, 0, 1, 7290, 0, 1, 7289, 0, 1, 7288, 0, 1, 7287, 0, 1, 7286, 0,
- 1, 7285, 0, 1, 7284, 0, 1, 7283, 0, 1, 7282, 0, 1, 7281, 0, 43, 7020, 0, 43, 37, 0, 538, 3262, 0, 7022,
- 1, 263, 0, 39, 1, 263, 0, 263, 453, 0, 6999, 37, 0, 6998, 37, 0, 271, 4425, 0, 425, 32, 0, 424, 29, 0,
- 4052, 128, 0, 4052, 127, 0, 1, 5746, 0, 1, 5385, 0, 1, 5442, 0, 1, 5509, 0, 1, 5532, 0, 1, 5561, 0, 1,
- 5585, 0, 1, 5608, 0, 1, 2284, 0, 1, 5416, 0, 1, 7006, 0, 1, 7005, 0, 1, 7004, 0, 1, 7003, 0, 1, 7002, 0,
- 1, 7001, 0, 1, 7000, 0, 1, 1119, 0, 1, 1163, 0, 1, 1178, 0, 1, 1203, 0, 1, 1282, 0, 1, 672, 0, 367, 482,
- 0, 6994, 442, 0, 6993, 442, 0, 1, 2469, 0, 1, 814, 0, 263, 452, 0, 1, 92, 0, 275, 6999, 0, 275, 6998, 0,
- 7020, 45, 0, 37, 45, 0, 1, 367, 0, 2, 6999, 37, 0, 2, 6998, 37, 0, 6999, 36, 0, 6998, 36, 0, 538, 5986,
- 0, 1, 263, 0, 367, 95, 0, 35, 73, 0, 263, 254, 0, 313, 4934, 0, 263, 253, 0, 6996, 1, 0, 6992, 1, 0, 1,
- 263, 3573, 0, 6993, 263, 0, 3574, 263, 0, 6996, 420, 0, 6995, 420, 0, 3586, 263, 0, 10, 12, 0, 8, 10,
- 12, 0, 3656, 227, 0, 218, 5147, 0, 3659, 420, 0, 8, 12, 0 };
- }
-
- public final static char baseAction[] = BaseAction.baseAction;
-
- @Override
- public final int baseAction(int index) {
- return baseAction[index];
- }
-
- public final static char lhs[] = baseAction;
-
- @Override
- public final int lhs(int index) {
- return lhs[index];
- }
-
- public interface TermCheck {
- public final static byte termCheck[] = { 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 0, 56, 57, 58, 59, 0, 61, 62, 63, 4, 65, 66, 67, 0, 69, 0, 1, 2,
- 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
- 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 86, 87, 56, 57, 58, 59, 0, 61, 62, 63, 95, 65, 66,
- 67, 0, 69, 0, 1, 2, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
- 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
- 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 0, 56, 57, 58, 59, 0, 61, 62,
- 63, 0, 65, 66, 67, 94, 69, 0, 1, 2, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 0, 1, 2, 3, 4,
- 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 0, 56, 57,
- 58, 59, 0, 61, 62, 63, 96, 65, 66, 67, 94, 69, 92, 93, 0, 0, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
- 85, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
- 53, 86, 87, 56, 57, 58, 59, 0, 61, 62, 63, 4, 65, 66, 67, 94, 69, 101, 102, 86, 87, 74, 75, 76, 77, 78,
- 79, 80, 81, 82, 83, 84, 85, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
- 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
- 47, 48, 49, 50, 51, 52, 53, 0, 0, 56, 57, 58, 59, 0, 61, 62, 63, 4, 65, 66, 67, 0, 69, 0, 1, 2, 5, 74,
- 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
- 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 86, 87, 56, 57, 58, 59, 0, 61, 62, 63, 95, 65, 66, 67, 0,
- 69, 0, 0, 0, 0, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
- 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
- 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 70, 56, 57, 58, 59, 0, 61, 62, 63, 0,
- 65, 66, 67, 94, 69, 86, 87, 86, 87, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 0, 1, 2, 3, 4, 5, 6,
- 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
- 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 86, 87, 56, 57, 58, 59,
- 0, 61, 62, 63, 0, 65, 66, 67, 0, 69, 92, 93, 0, 0, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 0, 1,
- 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
- 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 68,
- 56, 57, 58, 59, 0, 61, 62, 63, 4, 65, 66, 67, 0, 69, 92, 93, 86, 87, 74, 75, 76, 77, 78, 79, 80, 81, 82,
- 83, 84, 85, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
- 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
- 51, 52, 53, 86, 87, 56, 57, 58, 59, 0, 61, 62, 63, 0, 65, 66, 67, 0, 69, 0, 1, 2, 0, 74, 75, 76, 77, 78,
- 79, 80, 81, 82, 83, 84, 85, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
- 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
- 47, 48, 49, 50, 51, 52, 53, 0, 68, 56, 57, 58, 59, 0, 61, 62, 63, 4, 65, 66, 67, 0, 69, 0, 1, 2, 95, 74,
- 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
- 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 0, 56, 57, 58, 59, 6, 61, 62, 63, 96, 65, 66, 67, 0, 69,
- 0, 1, 2, 0, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 10, 11, 12,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
- 55, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 68, 56, 57, 58, 59, 0, 1, 2, 3, 4, 5, 6,
- 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
- 0, 1, 2, 0, 4, 39, 0, 41, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 0, 0, 0, 55, 56, 57, 58, 5, 0, 61, 62, 63, 0, 1,
- 2, 3, 4, 120, 6, 71, 8, 73, 34, 35, 23, 24, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 88, 11, 12, 13, 14, 15, 16,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 60, 71, 114, 115, 116, 0, 1, 2, 3,
- 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
- 31, 32, 33, 0, 0, 99, 100, 3, 39, 0, 41, 0, 3, 9, 5, 0, 7, 0, 9, 0, 1, 2, 0, 4, 55, 56, 57, 58, 0, 7,
- 61, 62, 63, 0, 1, 2, 3, 4, 0, 6, 71, 8, 73, 34, 35, 36, 37, 0, 39, 34, 35, 0, 1, 2, 0, 4, 5, 88, 7, 0,
- 9, 0, 0, 54, 60, 3, 55, 0, 64, 60, 9, 0, 68, 64, 55, 0, 72, 68, 3, 70, 71, 72, 73, 114, 115, 116, 0, 1,
- 2, 3, 4, 5, 6, 7, 8, 86, 87, 0, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
- 105, 106, 107, 108, 109, 110, 111, 112, 60, 72, 120, 54, 117, 118, 119, 0, 92, 93, 3, 72, 5, 64, 7, 70,
- 9, 0, 1, 2, 3, 4, 97, 6, 60, 8, 97, 0, 1, 2, 3, 4, 5, 96, 7, 0, 97, 0, 89, 90, 0, 34, 35, 36, 37, 5, 39,
- 7, 0, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 54, 0, 1, 2, 3, 4, 60, 6, 0, 8, 64, 97, 4, 5, 68,
- 7, 70, 71, 72, 73, 0, 0, 0, 0, 1, 2, 60, 71, 54, 6, 64, 8, 86, 87, 68, 89, 90, 91, 92, 93, 94, 95, 96,
- 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 0, 0, 60, 0, 117, 118, 119,
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
- 28, 29, 30, 31, 32, 33, 0, 1, 2, 3, 4, 39, 6, 41, 8, 0, 1, 2, 91, 4, 5, 55, 7, 95, 0, 98, 0, 55, 56, 57,
- 58, 0, 64, 61, 62, 63, 68, 65, 0, 1, 2, 0, 4, 0, 3, 73, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
- 0, 0, 88, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
- 26, 27, 28, 29, 30, 31, 32, 33, 64, 70, 0, 1, 2, 39, 4, 41, 6, 0, 8, 0, 1, 2, 0, 4, 70, 6, 70, 8, 54,
- 55, 56, 57, 58, 0, 0, 61, 62, 63, 0, 65, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 0,
- 1, 2, 3, 4, 5, 6, 7, 8, 0, 88, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
- 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 1, 2, 0, 68, 39, 6, 41, 8, 0, 7, 70, 0, 1, 2, 60,
- 4, 5, 54, 7, 0, 55, 56, 57, 58, 70, 0, 61, 62, 63, 4, 65, 0, 1, 2, 3, 4, 0, 6, 73, 8, 9, 101, 102, 103,
- 104, 105, 106, 107, 108, 109, 110, 111, 112, 88, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 70, 54, 60, 0, 39, 0, 41, 0,
- 0, 1, 2, 4, 4, 5, 72, 7, 0, 0, 0, 0, 55, 56, 57, 58, 0, 9, 61, 62, 63, 22, 65, 7, 0, 34, 35, 0, 89, 90,
- 73, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 0, 88, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 72, 54, 0, 1, 2, 39,
- 4, 41, 0, 1, 2, 64, 4, 5, 70, 7, 0, 54, 0, 0, 0, 55, 56, 57, 58, 0, 96, 61, 62, 63, 10, 65, 0, 114, 115,
- 116, 89, 90, 0, 73, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 89, 90, 88, 0, 1, 2, 3, 4, 5, 6, 7,
- 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0,
- 1, 2, 60, 0, 39, 6, 41, 4, 60, 0, 0, 1, 2, 3, 4, 0, 6, 91, 8, 9, 55, 56, 57, 58, 98, 22, 61, 62, 63, 0,
- 65, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 114, 115, 116, 0, 1, 2, 39, 0, 0, 0, 88, 0, 1, 2, 3,
- 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
- 31, 32, 33, 0, 1, 2, 0, 41, 39, 3, 41, 0, 68, 0, 0, 1, 2, 3, 4, 0, 6, 91, 8, 9, 55, 56, 57, 58, 98, 64,
- 61, 62, 63, 68, 65, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 1, 2, 3, 4, 5, 39, 7, 0, 0, 88,
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
- 28, 29, 30, 31, 32, 33, 0, 1, 2, 0, 4, 39, 6, 41, 8, 0, 0, 1, 2, 0, 4, 60, 6, 0, 8, 0, 7, 55, 56, 57,
- 58, 0, 9, 61, 62, 63, 0, 65, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
- 21, 88, 55, 0, 1, 2, 0, 1, 2, 0, 1, 2, 55, 34, 35, 36, 37, 38, 9, 40, 54, 42, 43, 44, 45, 46, 47, 48,
- 49, 50, 51, 52, 53, 0, 1, 2, 72, 71, 59, 6, 0, 0, 0, 64, 3, 66, 67, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
- 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 66, 67, 0, 66, 67, 3, 0, 1, 2, 69, 91, 5, 34, 35, 36, 37,
- 38, 98, 40, 55, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 60, 60, 0, 64, 64, 59, 0, 0, 68, 0, 3,
- 9, 0, 0, 0, 69, 10, 5, 9, 73, 0, 1, 2, 3, 4, 5, 6, 7, 8, 55, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
- 21, 0, 1, 2, 0, 0, 41, 39, 0, 0, 5, 3, 0, 34, 35, 36, 37, 38, 0, 40, 55, 42, 43, 44, 45, 46, 47, 48, 49,
- 50, 51, 52, 53, 0, 1, 2, 68, 64, 59, 0, 1, 2, 0, 1, 2, 66, 67, 0, 1, 2, 3, 4, 5, 6, 7, 8, 55, 10, 11,
- 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 99, 100, 54, 64, 0, 71, 64, 0, 9, 118, 0, 34, 35, 36, 37, 38,
- 9, 40, 55, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 1, 2, 99, 100, 59, 89, 90, 0, 0, 0, 0, 66,
- 67, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 68, 0, 0, 0, 72, 68,
- 3, 64, 0, 69, 9, 9, 34, 35, 36, 37, 38, 9, 40, 55, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 1,
- 2, 0, 0, 59, 64, 4, 0, 0, 0, 71, 3, 9, 71, 69, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
- 17, 18, 19, 20, 21, 68, 0, 0, 0, 73, 73, 3, 69, 38, 0, 9, 9, 34, 35, 36, 37, 38, 55, 40, 54, 42, 43, 44,
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 1, 2, 0, 0, 59, 0, 73, 39, 39, 70, 0, 9, 9, 3, 69, 0, 1, 2, 3, 4,
- 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 0, 0, 64, 3, 39, 0, 0, 0, 3, 0, 9, 34,
- 35, 36, 37, 38, 55, 40, 9, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 0, 0, 0, 3, 72, 5, 6, 7,
- 0, 74, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 60,
- 34, 35, 36, 37, 71, 38, 40, 72, 0, 0, 0, 3, 71, 3, 0, 0, 73, 9, 0, 10, 54, 86, 87, 55, 0, 0, 60, 0, 10,
- 118, 64, 4, 66, 67, 68, 0, 70, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 75, 41, 0, 86, 87, 0, 89,
- 90, 91, 92, 93, 94, 95, 96, 9, 55, 99, 100, 101, 60, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
- 61, 72, 54, 68, 117, 0, 1, 2, 3, 4, 5, 6, 7, 8, 39, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0,
- 1, 2, 0, 0, 60, 3, 3, 0, 0, 0, 0, 34, 35, 36, 37, 38, 0, 40, 0, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
- 52, 53, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 66, 67, 0, 1, 2, 3, 4, 5, 6, 7, 8, 55, 10, 11,
- 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 60, 0, 59, 54, 3, 54, 0, 0, 1, 2, 0, 0, 34, 35, 36, 37, 38, 0,
- 40, 0, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 0, 0, 3, 3, 59, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0,
- 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 54, 0, 55, 0, 54, 54, 3, 0, 0, 0, 64, 54, 34, 35, 36,
- 37, 38, 10, 40, 0, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 0, 0, 89, 90, 0, 60, 0, 1, 2, 3,
- 4, 5, 6, 7, 8, 41, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 55, 54, 3, 0, 0, 0, 0, 62, 0, 0,
- 4, 34, 35, 36, 37, 38, 0, 40, 121, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 0, 0, 3, 0, 59, 0,
- 1, 2, 3, 4, 5, 6, 7, 8, 71, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 54, 54, 0, 54, 54, 0, 0, 0,
- 0, 0, 64, 54, 34, 35, 36, 37, 38, 0, 40, 0, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 0, 0, 89,
- 90, 59, 0, 1, 2, 3, 4, 5, 6, 7, 8, 71, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 54, 54, 54, 0, 0,
- 0, 0, 0, 0, 3, 68, 97, 34, 35, 36, 37, 38, 0, 40, 70, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0,
- 0, 0, 3, 3, 59, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 0, 0,
- 0, 0, 3, 0, 0, 0, 0, 9, 54, 34, 35, 36, 37, 38, 70, 40, 71, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
- 53, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 0, 113, 113, 71, 0,
- 0, 0, 0, 0, 9, 0, 34, 35, 36, 37, 38, 0, 40, 72, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 1,
- 2, 3, 4, 5, 6, 7, 8, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 38, 0, 70, 0, 113, 0, 0, 113,
- 0, 0, 0, 34, 35, 36, 37, 38, 0, 40, 72, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 1, 2, 3, 4,
- 5, 6, 7, 8, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 34,
- 35, 36, 37, 38, 0, 40, 0, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0,
- 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 35, 36, 37, 38,
- 0, 40, 0, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 1, 2, 0, 4, 0, 0, 0, 0, 0, 10, 11, 12, 13,
- 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 0, 0, 0, 0, 0, 0, 41,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 4, 0, 0, 56, 57, 58, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
- 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2,
- 0, 0, 0, 0, 56, 57, 58, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
- 30, 31, 32, 33, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 3, 56, 57, 58, 10, 11,
- 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 0, 0, 0, 0,
- 36, 37, 41, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, 56, 57, 58, 0, 0, 0, 0, 60, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, 33, 0, 0, 0, 0, 0, 39, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 0, 54,
- 0, 0, 0, 0, 0, 60, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 72, 0, 0, 0, 0, 0, 117, 0, 119, 0, 0, 22, 23, 24,
- 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4,
- 5, 0, 7, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 64, 0, 0, 0, 68,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static byte termCheck[] = TermCheck.termCheck;
-
- @Override
- public final int termCheck(int index) {
- return termCheck[index];
- }
-
- public interface TermAction {
- public final static char termAction[] = { 0, 6984, 6946, 6922, 6922, 6922, 6922, 6922, 6922, 6922, 6962, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6950, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 121, 135, 1, 1, 1, 1, 39, 2562, 7192, 1558, 7022, 3487, 1, 1, 1, 6995, 434,
- 6998, 6999, 6991, 2498, 3580, 3434, 3319, 3376, 3569, 4713, 3579, 729, 3578, 3915, 3577, 10, 6965, 6965,
- 6965, 6965, 6965, 6965, 6965, 6965, 6965, 6965, 6965, 6965, 6965, 6965, 6965, 6965, 6965, 6965, 6965,
- 6965, 6965, 6965, 6965, 6965, 6965, 6965, 6965, 6965, 6965, 6965, 6965, 6965, 6965, 6965, 6965, 6965,
- 6965, 6965, 6965, 6965, 6965, 6965, 6965, 6965, 6965, 6965, 6965, 6965, 6965, 6965, 6965, 6965, 6965,
- 4307, 4395, 6965, 6965, 6965, 6965, 133, 6965, 6965, 6965, 3501, 6965, 6965, 6965, 367, 6965, 6984,
- 6998, 6999, 6965, 6965, 6965, 6965, 6965, 6965, 6965, 6965, 6965, 6965, 6965, 6965, 6965, 8, 6968, 6968,
- 6968, 6968, 6968, 6968, 6968, 6968, 6968, 6968, 6968, 6968, 6968, 6968, 6968, 6968, 6968, 6968, 6968,
- 6968, 6968, 6968, 6968, 6968, 6968, 6968, 6968, 6968, 6968, 6968, 6968, 6968, 6968, 6968, 6968, 6968,
- 6968, 6968, 6968, 6968, 6968, 6968, 6968, 6968, 6968, 6968, 6968, 6968, 6968, 6968, 6968, 6968, 6968,
- 137, 432, 6968, 6968, 6968, 6968, 134, 6968, 6968, 6968, 129, 6968, 6968, 6968, 3593, 6968, 6984, 6583,
- 6580, 6968, 6968, 6968, 6968, 6968, 6968, 6968, 6968, 6968, 6968, 6968, 6968, 6968, 6984, 6946, 6922,
- 6922, 6922, 6922, 6922, 6922, 6922, 6953, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 6950, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 125, 139, 1, 1, 1, 1, 153, 2562,
- 7192, 1558, 1324, 3487, 1, 1, 3593, 6995, 3790, 3758, 124, 333, 2498, 3580, 3434, 3319, 3376, 3569,
- 4713, 3579, 729, 3578, 3915, 3577, 6984, 6946, 6922, 6922, 6922, 6922, 6922, 6922, 6922, 6953, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6950, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 4307, 4395, 1, 1, 1, 1, 6984, 2562, 7192, 1558, 2663, 3487, 1, 1, 3628, 6995, 1080,
- 4229, 4307, 4395, 2498, 3580, 3434, 3319, 3376, 3569, 4713, 3579, 729, 3578, 3915, 3577, 6984, 6946,
- 6922, 6922, 6922, 6922, 6922, 6922, 6922, 6953, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6950, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 123, 136, 1, 1, 1, 1, 432,
- 2562, 7192, 1558, 425, 3487, 1, 1, 6984, 6995, 48, 6583, 6580, 1755, 2498, 3580, 3434, 3319, 3376, 3569,
- 4713, 3579, 729, 3578, 3915, 3577, 6984, 6946, 6922, 6922, 6922, 6922, 6922, 6922, 6922, 6953, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6950, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 4307, 4395, 1, 1, 1, 1, 154, 2562, 7192, 1558, 3501, 3487, 1, 1, 421, 6995, 122,
- 545, 141, 6984, 2498, 3580, 3434, 3319, 3376, 3569, 4713, 3579, 729, 3578, 3915, 3577, 6984, 6946, 6922,
- 6922, 6922, 6922, 6922, 6922, 6922, 6953, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 6950, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 145, 1200, 1, 1, 1, 1, 6984,
- 2562, 7192, 1558, 130, 3487, 1, 1, 3628, 6995, 4307, 4395, 4307, 4395, 2498, 3580, 3434, 3319, 3376,
- 3569, 4713, 3579, 729, 3578, 3915, 3577, 6984, 6946, 6922, 6922, 6922, 6922, 6922, 6922, 6922, 6953, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6950, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 4307, 4395, 1, 1, 1, 1, 6984, 2562, 7192, 1558, 149, 3487, 1, 1, 6984, 6995,
- 3790, 3758, 144, 398, 2498, 3580, 3434, 3319, 3376, 3569, 4713, 3579, 729, 3578, 3915, 3577, 6984, 6946,
- 6922, 6922, 6922, 6922, 6922, 6922, 6922, 6953, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6950, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 142, 3472, 1, 1, 1, 1,
- 6984, 2562, 7192, 1558, 2994, 3487, 1, 1, 6984, 6995, 3862, 3822, 4307, 4395, 2498, 3580, 3434, 3319,
- 3376, 3569, 4713, 3579, 729, 3578, 3915, 3577, 6984, 6946, 6922, 6922, 6922, 6922, 6922, 6922, 6922,
- 6953, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6950, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4307, 4395, 1, 1, 1, 1, 6984, 2562, 7192, 1558, 155, 3487, 1, 1,
- 6984, 6995, 333, 6998, 6999, 190, 2498, 3580, 3434, 3319, 3376, 3569, 4713, 3579, 729, 3578, 3915, 3577,
- 6984, 6946, 6922, 6922, 6922, 6922, 6922, 6922, 6922, 6953, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6950, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 138, 2146, 1,
- 1, 1, 1, 6984, 2562, 7192, 1558, 1524, 3487, 1, 1, 6984, 6995, 327, 6998, 6999, 3537, 2498, 3580, 3434,
- 3319, 3376, 3569, 4713, 3579, 729, 3578, 3915, 3577, 6984, 3573, 1, 1, 1, 1, 1, 1, 1, 3574, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6993, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 6984, 6984, 1, 1, 1, 1, 2000, 2562, 7192, 1558, 1324, 3487, 1, 1, 6984, 6995, 37,
- 6705, 6705, 552, 2498, 3580, 3434, 3319, 3376, 3569, 4713, 3579, 729, 3578, 3915, 3577, 39, 6565, 6562,
- 5188, 799, 5532, 5416, 5561, 2284, 6984, 1216, 7283, 7281, 7290, 7289, 7285, 7286, 7284, 7287, 7288,
- 7291, 7282, 7278, 7357, 7358, 7272, 7279, 7275, 7251, 7277, 7276, 7273, 7274, 7252, 5509, 5442, 5608,
- 5585, 7003, 7020, 5385, 7419, 1163, 1282, 7005, 1178, 5746, 1203, 7006, 7004, 1119, 7000, 7001, 7002,
- 6984, 996, 954, 7420, 7421, 1565, 6984, 6772, 6772, 263, 6768, 263, 263, 263, 263, 6776, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 323, 6604, 6604, 6984, 318, 263, 118, 1, 6984,
- 6555, 6551, 2469, 6559, 6902, 814, 6902, 2284, 6984, 384, 372, 115, 6765, 1, 1, 1, 5346, 6984, 968,
- 7433, 642, 1, 6555, 6551, 2469, 6559, 6544, 814, 263, 2284, 453, 4688, 4612, 7357, 7358, 257, 345, 6555,
- 6551, 2469, 6559, 6902, 814, 6902, 2284, 7521, 7283, 7281, 7290, 7289, 7285, 7286, 7284, 7287, 7288,
- 7291, 7282, 7278, 7357, 7358, 7272, 7279, 7275, 7251, 7277, 7276, 7273, 7274, 7252, 1519, 3079, 7456,
- 7457, 7458, 6984, 6772, 6772, 263, 6768, 263, 263, 263, 263, 6884, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6984, 1, 5322, 5298, 4435, 263, 33, 1, 47, 6693, 377, 6693, 120,
- 6693, 6984, 6693, 431, 6601, 6601, 131, 318, 6765, 1, 1, 1, 6984, 3676, 968, 7433, 642, 367, 6565, 6562,
- 2469, 799, 150, 814, 263, 2284, 452, 6693, 6693, 6693, 6693, 394, 6693, 4688, 4612, 1, 6711, 6711, 6984,
- 6708, 367, 7521, 367, 157, 399, 1, 383, 6693, 1519, 960, 1414, 543, 377, 6693, 399, 126, 377, 6693, 318,
- 6984, 377, 6693, 6261, 6693, 6693, 6693, 6693, 7456, 7457, 7458, 381, 6565, 6562, 3889, 799, 367, 814,
- 367, 2284, 6693, 6693, 1, 6693, 6693, 6693, 6693, 6693, 6693, 6693, 6693, 6693, 6693, 6693, 6693, 6693,
- 6693, 6693, 6693, 6693, 6693, 6693, 6693, 6693, 6693, 6693, 6693, 1519, 399, 377, 4079, 6693, 6693,
- 6693, 6984, 3862, 3822, 6717, 399, 6717, 6690, 6717, 2416, 6717, 1, 6555, 6551, 2469, 6559, 7377, 814,
- 1519, 2284, 399, 37, 6999, 6999, 6999, 6999, 6999, 3445, 6999, 6984, 399, 6984, 4020, 3993, 6984, 6717,
- 6717, 6717, 6717, 1706, 6717, 1659, 6984, 6999, 6999, 6999, 6999, 6999, 6999, 6999, 6999, 6999, 6999,
- 6999, 6999, 6717, 1, 6555, 6551, 3889, 6559, 6717, 814, 39, 2284, 6717, 7379, 7022, 367, 6717, 367,
- 6717, 6717, 6717, 6717, 6984, 111, 156, 38, 6592, 6589, 6999, 3079, 751, 6586, 6999, 2284, 6717, 6717,
- 6999, 6717, 6717, 6717, 6717, 6717, 6717, 6717, 6717, 6717, 6717, 6717, 6717, 6717, 6717, 6717, 6717,
- 6717, 6717, 6717, 6717, 6717, 6717, 6717, 6717, 6984, 37, 1519, 6984, 6717, 6717, 6717, 6984, 6922,
- 6922, 263, 6922, 263, 263, 263, 263, 6931, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 10901, 1,
- 1, 1, 1, 1, 1, 1, 6555, 6551, 6878, 6559, 263, 6881, 1, 6824, 481, 1, 1, 5654, 1, 6696, 7020, 6696,
- 3537, 258, 5677, 139, 6919, 1, 1, 1, 6984, 668, 2290, 7229, 1558, 4850, 3487, 6984, 6565, 6562, 347,
- 7022, 406, 2334, 254, 7278, 7357, 7358, 7272, 7279, 7275, 7251, 7277, 7276, 7273, 7274, 7252, 6984,
- 6984, 7521, 6984, 6922, 6922, 263, 6922, 263, 263, 263, 263, 263, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 10901, 1, 1, 1, 1, 1, 1, 3265, 2099, 6984, 6565, 6562, 263, 799, 1, 814, 6984, 2284, 6984,
- 6565, 6562, 6984, 799, 1222, 814, 1372, 2284, 3314, 6919, 1, 1, 1, 320, 6984, 2290, 7229, 1558, 159,
- 3487, 1080, 4229, 2052, 2005, 1958, 1911, 1864, 1817, 1770, 1723, 1676, 1629, 403, 6555, 6551, 3889,
- 6559, 1, 814, 1, 2284, 29, 7521, 6984, 6922, 6922, 263, 6922, 263, 263, 263, 263, 6937, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 10901, 1, 1, 1, 1, 1, 1, 6984, 6998, 6999, 132, 7303, 263, 814, 1,
- 2284, 6984, 3676, 2900, 482, 39, 39, 1519, 7022, 6869, 6571, 6869, 404, 6919, 1, 1, 1, 1277, 6984, 2290,
- 7229, 1558, 1666, 3487, 1, 6555, 6551, 3889, 6559, 146, 814, 253, 2284, 6595, 3382, 4275, 2834, 2768,
- 2702, 2636, 2570, 2504, 2438, 2372, 2306, 2240, 7521, 6984, 6922, 6922, 263, 6922, 263, 263, 263, 263,
- 6931, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 10901, 1, 1, 1, 1, 1, 1, 119, 1424, 4160, 1519,
- 6984, 263, 6984, 1, 39, 92, 1, 1, 7022, 1, 6887, 6598, 6887, 6984, 259, 158, 6984, 6919, 1, 1, 1, 151,
- 6990, 2290, 7229, 1558, 2350, 3487, 3710, 547, 4688, 4612, 128, 4133, 4106, 254, 7278, 7357, 7358, 7272,
- 7279, 7275, 7251, 7277, 7276, 7273, 7274, 7252, 148, 6984, 7521, 6984, 6922, 6922, 263, 6922, 263, 263,
- 263, 263, 6931, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 10901, 1, 1, 1, 1, 1, 1, 6989, 4079,
- 6984, 6565, 6562, 263, 7022, 1, 95, 39, 39, 6794, 7022, 6925, 1027, 6925, 114, 4160, 260, 476, 337,
- 6919, 1, 1, 1, 6984, 3445, 2290, 7229, 1558, 7320, 3487, 356, 7456, 7457, 7458, 4020, 3993, 495, 254,
- 7278, 7357, 7358, 7272, 7279, 7275, 7251, 7277, 7276, 7273, 7274, 7252, 4133, 4106, 7521, 6984, 6922,
- 6922, 263, 6922, 263, 263, 263, 263, 263, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 10901, 1,
- 1, 1, 1, 1, 1, 6984, 6998, 6999, 1519, 39, 263, 2000, 1, 7022, 6699, 261, 1, 6555, 6551, 6878, 6559,
- 113, 6881, 5654, 6824, 6994, 6919, 1, 1, 1, 5677, 3022, 2290, 7229, 1558, 326, 3487, 7278, 7357, 7358,
- 7272, 7279, 7275, 7251, 7277, 7276, 7273, 7274, 7252, 7456, 7457, 7458, 36, 6916, 6913, 6993, 6984,
- 6984, 6984, 7521, 6984, 6922, 6922, 263, 6922, 263, 263, 263, 263, 263, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 10901, 1, 1, 1, 1, 1, 1, 6984, 10657, 10382, 6984, 957, 263, 4425, 1, 6984, 10053,
- 572, 1, 6555, 6551, 2469, 6559, 6984, 814, 5654, 2284, 345, 6919, 1, 1, 1, 5677, 6121, 2290, 7229, 1558,
- 4850, 3487, 7278, 7357, 7358, 7272, 7279, 7275, 7251, 7277, 7276, 7273, 7274, 7252, 381, 39, 39, 4435,
- 7022, 367, 345, 367, 6984, 6984, 7521, 6984, 6922, 6922, 263, 6922, 263, 263, 263, 263, 263, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 10901, 1, 1, 1, 1, 1, 1, 6984, 6565, 6562, 6984, 799, 263, 6720,
- 1, 2284, 6984, 6984, 6565, 6562, 152, 799, 1519, 6720, 1, 2284, 29, 3710, 6919, 1, 1, 1, 6984, 194,
- 2290, 7229, 1558, 6984, 3487, 1, 6555, 6551, 672, 799, 5532, 5416, 5561, 2284, 112, 6723, 6750, 6756,
- 6729, 6732, 6744, 6741, 6747, 6738, 6735, 6726, 6753, 7521, 1062, 6984, 6998, 6999, 6984, 6583, 6580,
- 6984, 6998, 6999, 2798, 5509, 5442, 5608, 5585, 7003, 6996, 5385, 1309, 1163, 1282, 7005, 1178, 5746,
- 1203, 7006, 7004, 1119, 7000, 7001, 7002, 37, 6705, 6705, 194, 461, 1565, 6705, 6984, 1, 494, 553, 4435,
- 39, 39, 39, 6565, 6562, 5188, 799, 5532, 5416, 5561, 2284, 6978, 1117, 7283, 7281, 7290, 7289, 7285,
- 7286, 7284, 7287, 7288, 7291, 7282, 5631, 794, 91, 5631, 794, 6714, 37, 6705, 6705, 6995, 5654, 367,
- 5509, 5442, 5608, 5585, 7003, 5677, 5385, 2047, 1163, 1282, 7005, 1178, 5746, 1203, 7006, 7004, 1119,
- 7000, 7001, 7002, 1519, 6702, 6984, 3272, 577, 1565, 1, 271, 577, 6984, 6785, 6988, 117, 6984, 6984,
- 6959, 6545, 5346, 6994, 6991, 174, 6565, 6562, 5188, 799, 5532, 5416, 5561, 2284, 7020, 1117, 7283,
- 7281, 7290, 7289, 7285, 7286, 7284, 7287, 7288, 7291, 7282, 43, 6762, 6762, 6984, 116, 6548, 6993, 1,
- 6984, 5346, 6383, 6984, 5509, 5442, 5608, 5585, 7003, 147, 5385, 628, 1163, 1282, 7005, 1178, 5746,
- 1203, 7006, 7004, 1119, 7000, 7001, 7002, 6984, 6782, 6779, 4378, 3273, 1565, 6984, 10657, 10382, 326,
- 833, 833, 39, 39, 1, 6555, 6551, 672, 799, 5532, 5416, 5561, 2284, 6759, 6723, 6750, 6756, 6729, 6732,
- 6744, 6741, 6747, 6738, 6735, 6726, 6753, 6984, 5322, 5298, 4160, 3306, 463, 2193, 7533, 6984, 6990,
- 6987, 6984, 5509, 5442, 5608, 5585, 7003, 6996, 5385, 7020, 1163, 1282, 7005, 1178, 5746, 1203, 7006,
- 7004, 1119, 7000, 7001, 7002, 6984, 10787, 10787, 5322, 5298, 1565, 4133, 4106, 6984, 6984, 6984, 465,
- 39, 39, 39, 6565, 6562, 5188, 799, 5532, 5416, 5561, 2284, 6956, 1117, 7283, 7281, 7290, 7289, 7285,
- 7286, 7284, 7287, 7288, 7291, 7282, 6390, 6984, 6984, 6984, 6989, 2614, 4429, 7462, 1, 6995, 6992, 6992,
- 5509, 5442, 5608, 5585, 7003, 6940, 5385, 7020, 1163, 1282, 7005, 1178, 5746, 1203, 7006, 7004, 1119,
- 7000, 7001, 7002, 37, 6705, 6705, 433, 1, 1565, 7476, 424, 6984, 6984, 328, 7422, 4431, 6943, 1499,
- 6959, 39, 6565, 6562, 5188, 799, 5532, 5416, 5561, 2284, 6956, 1117, 7283, 7281, 7290, 7289, 7285, 7286,
- 7284, 7287, 7288, 7291, 7282, 1173, 442, 6984, 6984, 6991, 6991, 4490, 6995, 1896, 6984, 6872, 6994,
- 5509, 5442, 5608, 5585, 7003, 1953, 5385, 1309, 1163, 1282, 7005, 1178, 5746, 1203, 7006, 7004, 1119,
- 7000, 7001, 7002, 45, 6899, 6899, 1, 1, 1565, 1, 6991, 6875, 6993, 3121, 6984, 6990, 6994, 4523, 6959,
- 39, 6565, 6562, 5188, 799, 5532, 5416, 5561, 2284, 6988, 1117, 7283, 7281, 7290, 7289, 7285, 7286, 7284,
- 7287, 7288, 7291, 7282, 6984, 6984, 6984, 5970, 1153, 6993, 354, 6984, 485, 6568, 8, 6990, 5509, 5442,
- 5608, 5585, 7003, 6896, 5385, 6981, 1163, 1282, 7005, 1178, 5746, 1203, 7006, 7004, 1119, 7000, 7001,
- 7002, 571, 1, 6984, 6984, 2509, 6989, 7484, 7490, 7488, 227, 3160, 7283, 7281, 7290, 7289, 7285, 7286,
- 7284, 7287, 7288, 7291, 7282, 7278, 7357, 7358, 7272, 7279, 7275, 7251, 7277, 7276, 7273, 7274, 7252,
- 1519, 7482, 7483, 7513, 7514, 2966, 3934, 7491, 6989, 1, 1, 6984, 4435, 701, 4934, 486, 573, 6981, 6595,
- 337, 6545, 7493, 4307, 4395, 3316, 6984, 6984, 1156, 48, 7320, 6987, 7494, 6999, 2089, 2127, 7515, 6984,
- 7492, 7278, 7357, 7358, 7272, 7279, 7275, 7251, 7277, 7276, 7273, 7274, 7252, 6972, 6548, 100, 7504,
- 7503, 1, 7509, 7510, 7516, 7507, 7508, 7487, 7489, 7511, 224, 628, 7485, 7486, 7512, 1519, 7497, 7498,
- 7499, 7495, 7496, 7505, 7506, 7501, 7500, 7502, 3014, 6598, 6999, 2486, 7517, 1, 6555, 6551, 6866, 6559,
- 6812, 6827, 6815, 6824, 224, 6723, 6750, 6756, 6729, 6732, 6744, 6741, 6747, 6738, 6735, 6726, 6753,
- 6984, 6909, 6905, 6984, 103, 4782, 4969, 5031, 99, 6984, 574, 595, 6809, 6806, 6821, 6818, 6839, 477,
- 6803, 491, 6854, 6863, 6833, 6857, 6800, 6860, 6830, 6836, 6851, 6848, 6845, 6842, 7278, 7357, 7358,
- 7272, 7279, 7275, 7251, 7277, 7276, 7273, 7274, 7252, 6711, 6711, 39, 6565, 6562, 5188, 799, 5532, 5416,
- 5561, 2284, 7020, 1117, 7283, 7281, 7290, 7289, 7285, 7286, 7284, 7287, 7288, 7291, 7282, 3277, 6984,
- 3496, 6574, 3497, 6577, 127, 6984, 11379, 9059, 424, 6984, 5509, 5442, 5608, 5585, 7003, 6984, 5385,
- 218, 1163, 1282, 7005, 1178, 5746, 1203, 7006, 7004, 1119, 7000, 7001, 7002, 313, 6984, 6984, 6934,
- 6326, 1565, 39, 6565, 6562, 5188, 799, 5532, 5416, 5561, 2284, 6984, 1117, 7283, 7281, 7290, 7289, 7285,
- 7286, 7284, 7287, 7288, 7291, 7282, 4079, 6984, 7020, 6984, 6687, 2878, 5058, 6984, 6984, 6984, 6797,
- 2944, 5509, 5442, 5608, 5585, 7003, 758, 5385, 6984, 1163, 1282, 7005, 1178, 5746, 1203, 7006, 7004,
- 1119, 7000, 7001, 7002, 6984, 6984, 6984, 4020, 3993, 6984, 1501, 39, 6565, 6562, 672, 799, 5532, 5416,
- 5561, 2284, 919, 1117, 7283, 7281, 7290, 7289, 7285, 7286, 7284, 7287, 7288, 7291, 7282, 6984, 628,
- 6335, 6345, 6984, 6984, 6984, 48, 7583, 6984, 6984, 6998, 5509, 5442, 5608, 5585, 7003, 6984, 5385,
- 6975, 1163, 1282, 7005, 1178, 5746, 1203, 7006, 7004, 1119, 7000, 7001, 7002, 6984, 6984, 1, 6352, 6984,
- 1565, 39, 6565, 6562, 672, 799, 5532, 5416, 5561, 2284, 3178, 1117, 7283, 7281, 7290, 7289, 7285, 7286,
- 7284, 7287, 7288, 7291, 7282, 4160, 6998, 344, 6364, 1309, 6984, 432, 6984, 73, 457, 4200, 3314, 5509,
- 5442, 5608, 5585, 7003, 6984, 5385, 6984, 1163, 1282, 7005, 1178, 5746, 1203, 7006, 7004, 1119, 7000,
- 7001, 7002, 6984, 6984, 6984, 4133, 4106, 1565, 39, 6565, 6562, 5188, 799, 5532, 5416, 5561, 2284, 4775,
- 1117, 7283, 7281, 7290, 7289, 7285, 7286, 7284, 7287, 7288, 7291, 7282, 1309, 3153, 6928, 6984, 411,
- 6984, 6984, 35, 6984, 4263, 2271, 4364, 5509, 5442, 5608, 5585, 7003, 2, 5385, 3220, 1163, 1282, 7005,
- 1178, 5746, 1203, 7006, 7004, 1119, 7000, 7001, 7002, 6984, 6984, 6984, 6371, 3571, 1565, 39, 6565,
- 6562, 6291, 799, 5532, 5416, 5561, 2284, 6984, 1117, 7283, 7281, 7290, 7289, 7285, 7286, 7284, 7287,
- 7288, 7291, 7282, 584, 1, 6984, 583, 6984, 4940, 6984, 6984, 6984, 6984, 591, 37, 5509, 5442, 5608,
- 5585, 7003, 3170, 5385, 4837, 1163, 1282, 7005, 1178, 5746, 1203, 7006, 7004, 1119, 7000, 7001, 7002,
- 39, 6565, 6562, 5188, 799, 5532, 5416, 5561, 2284, 6984, 1117, 7283, 7281, 7290, 7289, 7285, 7286, 7284,
- 7287, 7288, 7291, 7282, 6984, 1, 3585, 3585, 4899, 6984, 6984, 6984, 6984, 6984, 196, 6984, 5509, 5442,
- 5608, 5585, 7003, 1, 5385, 591, 1163, 1282, 7005, 1178, 5746, 1203, 7006, 7004, 1119, 7000, 7001, 7002,
- 39, 6565, 6562, 672, 799, 5532, 5416, 5561, 2284, 6984, 1117, 7283, 7281, 7290, 7289, 7285, 7286, 7284,
- 7287, 7288, 7291, 7282, 6984, 3486, 6984, 3170, 6984, 1, 6984, 6984, 3585, 6984, 6984, 6984, 5509, 5442,
- 5608, 5585, 7003, 6984, 5385, 196, 1163, 1282, 7005, 1178, 5746, 1203, 7006, 7004, 1119, 7000, 7001,
- 7002, 39, 6565, 6562, 672, 799, 5532, 5416, 5561, 2284, 6984, 1117, 7283, 7281, 7290, 7289, 7285, 7286,
- 7284, 7287, 7288, 7291, 7282, 6984, 6984, 6984, 3032, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984,
- 5509, 5442, 5608, 5585, 7003, 6984, 5385, 6984, 1163, 1282, 7005, 1178, 5746, 1203, 7006, 7004, 1119,
- 7000, 7001, 7002, 39, 6565, 6562, 5188, 799, 5532, 5416, 5561, 2284, 6984, 1117, 7283, 7281, 7290, 7289,
- 7285, 7286, 7284, 7287, 7288, 7291, 7282, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984,
- 6984, 6984, 5509, 5442, 5608, 5585, 7003, 6984, 5385, 6984, 1163, 1282, 7005, 1178, 5746, 1203, 7006,
- 7004, 1119, 7000, 7001, 7002, 6984, 6565, 6562, 6984, 7022, 6984, 6984, 6984, 6984, 6984, 1046, 7283,
- 7281, 7290, 7289, 7285, 7286, 7284, 7287, 7288, 7291, 7282, 7278, 7357, 7358, 7272, 7279, 7275, 7251,
- 7277, 7276, 7273, 7274, 7252, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 7419, 6984, 6984, 6984, 6984,
- 6984, 6984, 6984, 275, 6680, 6676, 6984, 6684, 6984, 6984, 954, 7420, 7421, 1046, 6667, 6673, 6646,
- 6649, 6661, 6658, 6664, 6655, 6652, 6643, 6670, 6622, 6616, 6613, 6640, 6619, 6631, 6610, 6625, 6628,
- 6637, 6634, 6607, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 7419, 6984, 6984, 6984, 6984, 6984, 6984,
- 6984, 6984, 6998, 6999, 6984, 6984, 6984, 6984, 954, 7420, 7421, 1352, 7283, 7281, 7290, 7289, 7285,
- 7286, 7284, 7287, 7288, 7291, 7282, 7278, 7357, 7358, 7272, 7279, 7275, 7251, 7277, 7276, 7273, 7274,
- 7252, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 7419, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 275,
- 6893, 6890, 75, 6984, 6984, 4496, 954, 7420, 7421, 1352, 6667, 6673, 6646, 6649, 6661, 6658, 6664, 6655,
- 6652, 6643, 6670, 6622, 6616, 6613, 6640, 6619, 6631, 6610, 6625, 6628, 6637, 6634, 6607, 6984, 6984,
- 6984, 6984, 6984, 7046, 7047, 7419, 29, 424, 424, 6791, 424, 6791, 424, 6791, 424, 6791, 6984, 6984,
- 6984, 6984, 954, 7420, 7421, 6984, 575, 6984, 6984, 3931, 424, 424, 424, 424, 424, 424, 424, 424, 424,
- 424, 424, 424, 6984, 6984, 6984, 6984, 6984, 6791, 7278, 7357, 7358, 7272, 7279, 7275, 7251, 7277, 7276,
- 7273, 7274, 7252, 6984, 6984, 6571, 6984, 6984, 6984, 6984, 6984, 6791, 32, 425, 425, 6788, 425, 6788,
- 425, 6788, 425, 6788, 6984, 6791, 6984, 6984, 6984, 6984, 6984, 866, 6984, 2733, 6984, 6984, 425, 425,
- 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 6984, 6984, 6984, 6984, 6984, 6788, 6984, 6984, 6984,
- 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 37, 6998, 6998, 6998, 6998, 6998, 6984, 6998, 6984,
- 6788, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6788, 6998, 6998, 6998, 6998,
- 6998, 6998, 6998, 6998, 6998, 6998, 6998, 6998, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984,
- 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984, 6984,
- 6998, 6984, 6984, 6984, 6998, 6984, 6984, 6984, 6998 };
- }
-
- public final static char termAction[] = TermAction.termAction;
-
- @Override
- public final int termAction(int index) {
- return termAction[index];
- }
-
- public interface Asb {
- public final static char asb[] = { 0, 58, 20, 522, 32, 32, 229, 376, 376, 229, 135, 135, 1037, 809, 135, 9, 165,
- 229, 471, 818, 818, 270, 22, 23, 39, 39, 510, 662, 662, 524, 662, 510, 101, 825, 590, 962, 973, 608,
- 973, 1, 973, 52, 973, 957, 973, 592, 510, 590, 827, 32, 955, 522, 522, 522, 522, 592, 955, 455, 103,
- 472, 472, 472, 472, 472, 472, 472, 472, 472, 665, 671, 676, 673, 680, 678, 685, 683, 687, 686, 688, 313,
- 689, 471, 471, 310, 703, 831, 831, 522, 662, 108, 108, 659, 310, 912, 662, 662, 108, 510, 594, 1092,
- 912, 912, 829, 809, 510, 361, 213, 3, 753, 4, 592, 510, 510, 1094, 9, 829, 376, 455, 135, 135, 135, 135,
- 510, 871, 912, 912, 455, 915, 134, 1092, 455, 665, 751, 751, 871, 471, 472, 472, 472, 472, 472, 472,
- 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 471, 471, 471, 471, 471, 471, 471, 471,
- 471, 471, 471, 471, 472, 831, 831, 108, 108, 590, 310, 310, 108, 1091, 508, 912, 28, 820, 510, 362, 657,
- 655, 213, 510, 607, 513, 518, 1094, 608, 364, 510, 1094, 510, 507, 912, 912, 1038, 1038, 1038, 1038,
- 1094, 912, 471, 472, 611, 618, 980, 980, 592, 103, 310, 134, 471, 912, 507, 509, 507, 912, 310, 673,
- 673, 671, 671, 671, 678, 678, 678, 678, 676, 676, 683, 680, 680, 686, 685, 687, 1050, 688, 912, 912,
- 1038, 136, 586, 455, 1015, 1013, 1020, 1018, 1022, 1021, 1023, 1024, 1037, 1038, 659, 1038, 594, 510,
- 370, 770, 1091, 362, 655, 367, 510, 213, 1050, 4, 522, 1096, 420, 1040, 213, 607, 519, 607, 607, 1094,
- 364, 364, 510, 510, 510, 955, 955, 955, 955, 510, 510, 471, 510, 1092, 472, 135, 669, 167, 912, 509,
- 1092, 471, 370, 596, 563, 574, 574, 574, 574, 558, 592, 760, 472, 472, 472, 472, 472, 472, 472, 472,
- 472, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 472, 455, 1091, 370, 655, 655, 1092,
- 608, 608, 1038, 522, 507, 606, 1042, 504, 955, 607, 607, 607, 607, 510, 364, 366, 765, 366, 471, 471,
- 471, 471, 955, 955, 1094, 508, 912, 669, 590, 594, 510, 508, 370, 596, 510, 472, 1013, 1013, 1013, 1018,
- 1015, 1015, 1021, 1020, 1022, 1050, 1023, 372, 654, 655, 508, 712, 608, 382, 229, 508, 607, 607, 504,
- 708, 472, 1050, 208, 204, 590, 607, 607, 262, 366, 367, 472, 510, 912, 912, 912, 912, 871, 871, 510,
- 669, 670, 669, 471, 167, 425, 665, 594, 372, 598, 1094, 866, 471, 372, 655, 709, 712, 712, 803, 1052,
- 353, 955, 4, 419, 229, 508, 607, 608, 592, 1042, 472, 472, 504, 805, 257, 263, 510, 367, 912, 912, 629,
- 669, 871, 472, 310, 425, 372, 598, 510, 955, 367, 712, 712, 381, 353, 803, 48, 592, 1037, 709, 608, 435,
- 805, 510, 955, 262, 510, 592, 592, 510, 670, 912, 310, 832, 367, 382, 712, 709, 207, 708, 912, 592, 510,
- 382, 758, 436, 592, 510, 871, 510, 510, 510, 821, 712, 471, 64, 504, 709, 510, 510, 758, 435, 1050, 472,
- 1050, 709, 434, 955, 955, 955, 436, 955, 510, 320, 709, 709, 510, 608, 912, 510, 510, 135, 367, 912,
- 367, 608, 510, 709, 427, 955, 427, 436, 1050, 436, 455, 455, 453, 434, 455, 709, 709, 211, 433, 367, 64,
- 709, 770, 436, 912, 504, 912, 453, 353, 955, 912, 758, 64, 912, 912, 642, 436, 211, 436, 709, 353, 471,
- 436, 433, 366, 608, 608, 947, 471, 434, 871, 709, 912, 707, 63, 436, 912, 709, 707, 707, 436 };
- }
-
- public final static char asb[] = Asb.asb;
-
- @Override
- public final int asb(int index) {
- return asb[index];
- }
-
- public interface Asr {
- public final static byte asr[] = { 0, 55, 4, 71, 1, 2, 69, 9, 0, 9, 64, 68, 72, 1, 2, 7, 5, 4, 3, 60, 120, 0, 3,
- 64, 70, 68, 120, 60, 9, 72, 97, 0, 64, 70, 68, 120, 1, 2, 0, 74, 3, 64, 71, 97, 68, 72, 39, 60, 9, 69,
- 70, 0, 4, 9, 69, 1, 2, 0, 41, 10, 55, 62, 0, 73, 59, 36, 37, 7, 5, 34, 35, 40, 46, 3, 4, 51, 52, 53, 38,
- 49, 44, 48, 12, 21, 11, 17, 15, 16, 18, 19, 14, 13, 20, 10, 43, 47, 45, 42, 50, 69, 9, 8, 6, 1, 2, 67,
- 66, 0, 42, 66, 43, 44, 67, 8, 45, 46, 47, 48, 59, 49, 50, 51, 52, 53, 38, 36, 37, 7, 5, 34, 35, 6, 40,
- 64, 3, 4, 10, 1, 2, 56, 57, 58, 12, 21, 11, 17, 15, 16, 18, 19, 14, 13, 20, 25, 31, 32, 27, 30, 29, 22,
- 26, 23, 24, 28, 33, 41, 0, 98, 91, 34, 35, 99, 100, 86, 87, 64, 89, 90, 92, 93, 94, 95, 96, 101, 102,
- 97, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 118, 72, 73, 1, 2, 4, 7, 5, 71, 60, 54, 3, 9, 68,
- 39, 70, 0, 88, 61, 8, 114, 115, 116, 63, 9, 3, 7, 5, 6, 71, 73, 39, 62, 25, 11, 12, 41, 23, 13, 56, 26,
- 27, 14, 28, 29, 15, 16, 30, 31, 17, 18, 32, 57, 55, 33, 10, 58, 19, 20, 24, 21, 1, 2, 4, 22, 0, 22, 1,
- 2, 4, 114, 115, 116, 0, 66, 67, 3, 10, 43, 47, 45, 42, 50, 12, 21, 11, 17, 15, 16, 18, 19, 14, 13, 20,
- 51, 52, 53, 38, 49, 44, 48, 6, 8, 4, 36, 37, 7, 5, 34, 35, 40, 46, 1, 2, 118, 9, 0, 64, 71, 97, 68, 118,
- 72, 73, 11, 12, 42, 66, 13, 43, 44, 14, 15, 16, 67, 45, 17, 18, 46, 47, 48, 59, 49, 50, 10, 19, 20, 21,
- 51, 52, 53, 38, 36, 37, 34, 35, 40, 9, 39, 6, 8, 1, 2, 4, 3, 7, 5, 0, 1, 2, 68, 73, 9, 0, 23, 24, 59, 9,
- 97, 72, 64, 68, 120, 70, 0, 69, 41, 23, 13, 56, 26, 14, 28, 29, 15, 16, 30, 31, 17, 18, 32, 57, 33, 58,
- 19, 22, 20, 24, 21, 12, 11, 25, 9, 3, 7, 5, 39, 63, 65, 88, 27, 62, 55, 61, 8, 1, 2, 4, 10, 6, 0, 88,
- 114, 115, 116, 55, 71, 113, 121, 73, 62, 74, 63, 61, 65, 76, 78, 84, 82, 75, 80, 81, 83, 85, 69, 77, 79,
- 39, 9, 25, 41, 23, 56, 26, 27, 28, 29, 30, 31, 32, 57, 33, 58, 22, 24, 59, 66, 67, 10, 43, 47, 45, 42,
- 50, 12, 21, 11, 17, 15, 16, 18, 19, 14, 13, 20, 51, 52, 53, 38, 49, 44, 48, 36, 37, 34, 35, 40, 46, 7,
- 5, 3, 4, 8, 6, 1, 2, 0, 4, 9, 71, 69, 0, 4, 9, 71, 69, 54, 0, 67, 66, 34, 35, 99, 100, 94, 95, 6, 40,
- 70, 54, 106, 107, 103, 104, 105, 111, 110, 112, 87, 86, 108, 109, 92, 93, 89, 90, 96, 101, 36, 37, 91,
- 117, 10, 56, 41, 57, 58, 12, 21, 11, 17, 15, 16, 18, 19, 14, 13, 20, 25, 31, 32, 27, 30, 29, 22, 26, 23,
- 24, 28, 33, 64, 68, 3, 60, 7, 5, 1, 2, 4, 0, 23, 24, 59, 3, 64, 97, 70, 68, 72, 39, 74, 71, 69, 9, 0, 9,
- 71, 118, 72, 39, 68, 0, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 25, 23, 26, 27, 28, 29, 30, 31, 32,
- 33, 22, 24, 39, 9, 72, 8, 1, 2, 60, 3, 7, 5, 6, 4, 0, 59, 23, 24, 8, 6, 1, 2, 4, 74, 69, 120, 119, 117,
- 36, 37, 60, 3, 98, 91, 5, 99, 100, 34, 35, 87, 86, 54, 89, 90, 92, 93, 7, 94, 95, 96, 64, 97, 72, 70,
- 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 71, 118, 101, 102, 73, 68, 39, 9, 0, 65, 25, 11, 12,
- 41, 23, 13, 56, 26, 88, 27, 14, 28, 29, 15, 16, 30, 61, 31, 17, 18, 32, 57, 33, 10, 58, 19, 63, 22, 20,
- 24, 21, 9, 3, 7, 5, 73, 39, 62, 8, 6, 55, 1, 2, 4, 0, 113, 0, 54, 64, 89, 90, 0, 9, 68, 73, 70, 0, 25,
- 11, 12, 41, 23, 13, 56, 26, 27, 14, 28, 29, 15, 16, 30, 31, 17, 18, 32, 57, 33, 10, 58, 19, 22, 20, 24,
- 21, 1, 2, 4, 97, 0, 38, 0, 9, 69, 68, 0, 7, 5, 3, 8, 6, 60, 4, 1, 2, 64, 70, 97, 72, 9, 68, 0, 6, 8, 3,
- 60, 5, 7, 97, 25, 11, 12, 41, 23, 13, 56, 26, 27, 14, 28, 29, 15, 16, 30, 31, 17, 18, 32, 57, 33, 10,
- 58, 19, 22, 20, 24, 21, 1, 2, 4, 72, 9, 0, 72, 9, 87, 86, 0, 11, 12, 42, 66, 13, 43, 44, 14, 15, 16, 67,
- 8, 45, 17, 18, 46, 47, 48, 59, 49, 50, 10, 19, 20, 21, 51, 52, 53, 38, 1, 2, 3, 36, 37, 7, 5, 34, 35, 6,
- 40, 4, 72, 9, 0, 66, 67, 36, 37, 34, 35, 40, 46, 51, 52, 53, 38, 49, 44, 48, 12, 21, 11, 17, 15, 16, 18,
- 19, 14, 13, 20, 10, 43, 47, 45, 42, 50, 7, 5, 60, 8, 6, 4, 1, 2, 3, 0, 10, 56, 41, 57, 58, 12, 21, 11,
- 17, 15, 16, 18, 19, 14, 13, 20, 74, 71, 97, 118, 73, 69, 120, 8, 31, 32, 33, 22, 24, 1, 2, 30, 29, 28,
- 27, 26, 6, 4, 23, 25, 119, 98, 117, 91, 36, 37, 34, 35, 99, 100, 9, 60, 3, 5, 72, 39, 87, 86, 54, 89,
- 90, 92, 93, 7, 94, 95, 96, 101, 102, 70, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 68, 64, 0,
- 39, 9, 3, 8, 6, 7, 5, 4, 1, 2, 71, 0, 41, 23, 13, 56, 26, 14, 28, 29, 15, 16, 30, 31, 17, 18, 32, 57,
- 33, 10, 58, 19, 22, 20, 24, 21, 12, 11, 25, 9, 3, 7, 39, 63, 61, 65, 88, 27, 62, 54, 4, 5, 8, 6, 1, 2,
- 55, 0 };
- }
-
- public final static byte asr[] = Asr.asr;
-
- @Override
- public final int asr(int index) {
- return asr[index];
- }
-
- public interface Nasb {
- public final static char nasb[] = { 0, 77, 12, 12, 43, 43, 32, 12, 12, 293, 297, 297, 12, 158, 5, 201, 12, 293,
- 85, 12, 12, 104, 23, 23, 23, 23, 242, 12, 12, 122, 12, 180, 218, 157, 176, 259, 260, 210, 260, 13, 260,
- 69, 260, 253, 12, 10, 180, 176, 200, 43, 12, 12, 12, 12, 12, 165, 12, 30, 180, 85, 85, 238, 85, 85, 85,
- 85, 85, 85, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 85, 12, 85, 85, 109, 12, 32, 32, 12, 12, 32, 32,
- 79, 109, 302, 12, 12, 32, 11, 12, 146, 302, 302, 290, 212, 180, 12, 32, 65, 165, 40, 165, 180, 11, 12,
- 222, 290, 12, 30, 297, 297, 297, 297, 180, 197, 302, 302, 1, 85, 53, 146, 30, 12, 55, 55, 197, 31, 85,
- 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
- 85, 85, 85, 31, 85, 293, 293, 45, 45, 176, 109, 109, 45, 148, 218, 302, 12, 12, 180, 178, 178, 178, 275,
- 66, 63, 63, 12, 228, 210, 32, 228, 111, 66, 217, 302, 302, 12, 12, 12, 12, 145, 302, 85, 85, 12, 12, 12,
- 12, 10, 180, 109, 297, 18, 302, 217, 180, 217, 302, 109, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 12, 12, 302, 302, 12, 231, 201, 25, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 224, 12,
- 12, 11, 32, 293, 126, 12, 32, 153, 180, 169, 12, 72, 12, 12, 21, 262, 275, 63, 63, 32, 32, 111, 32, 243,
- 11, 66, 180, 12, 12, 12, 12, 66, 11, 85, 180, 146, 85, 297, 32, 97, 302, 250, 146, 85, 32, 32, 259, 260,
- 260, 260, 260, 282, 10, 12, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
- 85, 31, 85, 45, 148, 61, 178, 61, 146, 210, 130, 12, 12, 165, 32, 171, 160, 12, 32, 32, 118, 118, 66,
- 243, 120, 12, 12, 31, 31, 31, 31, 12, 12, 144, 66, 302, 38, 224, 12, 242, 66, 61, 61, 180, 85, 12, 12,
- 12, 12, 12, 12, 12, 12, 12, 12, 12, 32, 61, 32, 218, 32, 210, 270, 32, 228, 32, 16, 214, 169, 85, 12,
- 114, 12, 176, 118, 118, 100, 120, 153, 85, 243, 302, 302, 302, 302, 197, 197, 66, 32, 93, 12, 31, 224,
- 251, 12, 12, 32, 32, 111, 302, 85, 91, 61, 169, 245, 32, 12, 270, 263, 12, 129, 21, 293, 218, 16, 134,
- 34, 160, 85, 85, 214, 12, 165, 132, 228, 153, 302, 302, 12, 38, 197, 85, 109, 251, 91, 91, 66, 12, 153,
- 270, 245, 209, 171, 12, 12, 165, 12, 169, 134, 152, 12, 228, 12, 140, 228, 165, 165, 11, 93, 302, 109,
- 300, 153, 270, 32, 169, 95, 12, 302, 165, 228, 270, 32, 191, 34, 11, 197, 11, 228, 228, 302, 245, 18,
- 83, 160, 169, 228, 73, 155, 205, 12, 85, 12, 169, 12, 12, 12, 12, 206, 12, 243, 167, 169, 169, 243, 137,
- 302, 11, 11, 297, 153, 302, 32, 210, 73, 169, 116, 12, 12, 206, 12, 206, 304, 304, 186, 12, 304, 169,
- 169, 12, 32, 153, 32, 169, 297, 206, 302, 160, 302, 296, 32, 12, 302, 155, 83, 302, 302, 32, 206, 12,
- 206, 169, 160, 31, 206, 116, 153, 137, 137, 158, 85, 12, 183, 169, 302, 75, 82, 206, 302, 169, 75, 12,
- 206 };
- }
-
- public final static char nasb[] = Nasb.nasb;
-
- @Override
- public final int nasb(int index) {
- return nasb[index];
- }
-
- public interface Nasr {
- public final static char nasr[] = { 0, 3, 13, 10, 9, 138, 137, 113, 136, 135, 4, 2, 0, 166, 205, 0, 173, 0, 5,
- 28, 0, 170, 0, 80, 0, 13, 2, 9, 10, 4, 52, 37, 5, 0, 186, 4, 185, 0, 161, 0, 42, 1, 0, 121, 0, 4, 10, 9,
- 2, 13, 128, 5, 0, 192, 0, 4, 2, 9, 10, 157, 0, 51, 0, 122, 0, 44, 2, 3, 0, 166, 200, 0, 141, 117, 0,
- 176, 0, 191, 0, 5, 212, 0, 81, 149, 42, 4, 10, 9, 2, 13, 0, 145, 0, 159, 0, 201, 0, 5, 194, 0, 4, 115,
- 209, 0, 13, 2, 9, 10, 4, 94, 0, 2, 75, 0, 208, 0, 130, 0, 123, 0, 167, 0, 5, 52, 213, 0, 75, 54, 0, 1,
- 141, 0, 210, 0, 42, 174, 0, 42, 66, 0, 4, 115, 182, 0, 2, 154, 75, 0, 75, 156, 155, 0, 5, 81, 0, 175, 0,
- 30, 101, 100, 78, 2, 9, 10, 5, 4, 0, 5, 37, 39, 0, 5, 10, 9, 2, 78, 4, 98, 54, 0, 44, 2, 0, 5, 195, 0,
- 37, 5, 27, 198, 0, 5, 50, 42, 37, 196, 0, 5, 105, 0, 30, 100, 101, 5, 0, 81, 37, 50, 82, 5, 42, 0, 101,
- 100, 54, 78, 68, 4, 10, 9, 2, 0, 101, 100, 54, 4, 68, 0, 2, 67, 0, 138, 214, 137, 113, 136, 135, 0, 4,
- 10, 9, 13, 3, 1, 0, 133, 5, 50, 93, 0, 2, 132, 0, 2, 4, 113, 110, 111, 112, 13, 69, 0, 39, 4, 2, 9, 10,
- 5, 172, 0, 5, 50, 93, 95, 0, 5, 50, 93, 115, 48, 4, 0, 113, 69, 13, 110, 111, 112, 190, 0, 54, 4, 98, 5,
- 27, 0, 197, 5, 52, 0, 52, 5, 30, 0, 5, 52, 116, 0 };
- }
-
- public final static char nasr[] = Nasr.nasr;
-
- @Override
- public final int nasr(int index) {
- return nasr[index];
- }
-
- public interface TerminalIndex {
- public final static char terminalIndex[] = { 0, 113, 114, 2, 31, 10, 13, 9, 79, 115, 100, 48, 52, 60, 68, 74,
- 75, 86, 87, 102, 105, 107, 104, 54, 106, 47, 64, 66, 70, 73, 76, 83, 89, 98, 11, 12, 7, 8, 112, 120, 14,
- 53, 55, 61, 67, 84, 88, 90, 94, 97, 99, 109, 110, 111, 19, 93, 63, 91, 101, 95, 1, 77, 122, 103, 20, 46,
- 58, 78, 44, 121, 33, 30, 118, 119, 96, 108, 49, 50, 56, 57, 59, 69, 71, 72, 85, 92, 17, 18, 65, 21, 22,
- 6, 23, 24, 25, 26, 27, 32, 4, 15, 16, 28, 29, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 51, 80, 81, 82, 5,
- 117, 3, 123, 62, 116 };
- }
-
- public final static char terminalIndex[] = TerminalIndex.terminalIndex;
-
- @Override
- public final int terminalIndex(int index) {
- return terminalIndex[index];
- }
-
- public interface NonterminalIndex {
- public final static char nonterminalIndex[] = { 0, 130, 135, 136, 0, 0, 134, 0, 0, 237, 243, 133, 0, 143, 0,
- 132, 0, 0, 142, 148, 0, 0, 149, 158, 159, 160, 161, 188, 151, 0, 126, 162, 141, 163, 164, 165, 166, 131,
- 167, 128, 168, 0, 129, 138, 137, 170, 169, 171, 185, 0, 0, 195, 152, 172, 0, 173, 0, 0, 0, 0, 0, 174,
- 175, 176, 0, 177, 180, 0, 155, 194, 0, 0, 0, 212, 0, 0, 145, 209, 213, 0, 214, 127, 179, 0, 0, 0, 0, 0,
- 0, 183, 0, 0, 0, 0, 125, 186, 0, 0, 210, 216, 217, 218, 0, 220, 157, 0, 146, 0, 0, 215, 197, 198, 199,
- 201, 227, 228, 182, 204, 0, 0, 219, 0, 0, 0, 0, 0, 248, 0, 251, 0, 252, 0, 147, 187, 189, 190, 191, 192,
- 196, 200, 203, 0, 206, 0, 207, 0, 222, 225, 0, 0, 0, 246, 247, 0, 0, 139, 140, 144, 0, 0, 154, 156, 0,
- 178, 0, 193, 0, 0, 0, 202, 0, 205, 211, 0, 223, 224, 0, 0, 229, 232, 0, 234, 236, 0, 240, 241, 242, 245,
- 0, 0, 249, 124, 0, 150, 153, 0, 181, 0, 184, 0, 0, 208, 221, 226, 0, 0, 230, 231, 233, 235, 0, 238, 239,
- 244, 250, 253, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static char nonterminalIndex[] = NonterminalIndex.nonterminalIndex;
-
- @Override
- public final int nonterminalIndex(int index) {
- return nonterminalIndex[index];
- }
-
- public interface ScopePrefix {
- public final static char scopePrefix[] = { 172, 324, 608, 627, 317, 332, 559, 575, 586, 597, 372, 280, 294, 311,
- 344, 55, 305, 392, 430, 180, 616, 502, 20, 33, 64, 84, 93, 98, 103, 143, 208, 339, 350, 20, 467, 157,
- 286, 300, 530, 40, 157, 382, 20, 635, 40, 230, 259, 1, 14, 27, 74, 89, 119, 27, 361, 365, 448, 495, 524,
- 551, 555, 645, 649, 653, 110, 7, 110, 410, 426, 439, 460, 479, 543, 129, 129, 245, 439, 566, 582, 593,
- 604, 220, 513, 69, 69, 169, 235, 238, 69, 254, 275, 238, 238, 69, 369, 492, 499, 169, 69, 668, 123, 355,
- 414, 454, 486, 472, 69, 355, 401, 190, 117, 452, 657, 664, 657, 664, 78, 420, 150, 117, 117, 264 };
- }
-
- public final static char scopePrefix[] = ScopePrefix.scopePrefix;
-
- @Override
- public final int scopePrefix(int index) {
- return scopePrefix[index];
- }
-
- public interface ScopeSuffix {
- public final static char scopeSuffix[] = { 18, 148, 5, 5, 148, 148, 5, 5, 5, 5, 379, 148, 108, 148, 25, 61, 291,
- 398, 436, 186, 80, 508, 25, 38, 38, 38, 72, 72, 108, 148, 213, 31, 31, 25, 5, 162, 291, 114, 535, 51,
- 165, 387, 622, 640, 45, 224, 224, 5, 18, 31, 5, 72, 108, 31, 108, 108, 148, 257, 5, 5, 5, 5, 5, 257,
- 666, 11, 114, 379, 379, 379, 464, 483, 535, 133, 138, 249, 443, 570, 570, 570, 570, 224, 517, 72, 72, 5,
- 5, 241, 243, 257, 5, 278, 278, 243, 108, 5, 257, 5, 528, 5, 126, 358, 417, 457, 489, 475, 547, 538, 404,
- 193, 108, 108, 659, 659, 661, 661, 80, 422, 152, 215, 200, 266 };
- }
-
- public final static char scopeSuffix[] = ScopeSuffix.scopeSuffix;
-
- @Override
- public final int scopeSuffix(int index) {
- return scopeSuffix[index];
- }
-
- public interface ScopeLhs {
- public final static char scopeLhs[] = { 48, 112, 18, 18, 92, 112, 18, 18, 18, 18, 85, 97, 49, 92, 111, 90, 59,
- 85, 84, 48, 18, 20, 190, 3, 7, 8, 182, 182, 178, 110, 48, 111, 111, 139, 45, 148, 60, 49, 157, 125, 148,
- 85, 18, 18, 125, 102, 72, 153, 88, 190, 185, 182, 178, 139, 199, 57, 66, 161, 19, 18, 18, 18, 18, 18,
- 12, 130, 178, 85, 84, 84, 64, 41, 157, 114, 114, 68, 84, 18, 18, 18, 18, 102, 20, 186, 182, 201, 100,
- 109, 74, 80, 73, 172, 89, 139, 86, 162, 161, 192, 157, 17, 178, 139, 116, 83, 22, 45, 157, 157, 85, 48,
- 178, 79, 155, 44, 155, 44, 185, 116, 110, 48, 48, 72 };
- }
-
- public final static char scopeLhs[] = ScopeLhs.scopeLhs;
-
- @Override
- public final int scopeLhs(int index) {
- return scopeLhs[index];
- }
-
- public interface ScopeLa {
- public final static byte scopeLa[] = { 113, 73, 72, 72, 73, 73, 72, 72, 72, 72, 72, 73, 39, 73, 1, 64, 1, 72,
- 121, 69, 3, 72, 1, 64, 64, 64, 1, 1, 39, 73, 69, 1, 1, 1, 72, 73, 1, 1, 4, 64, 68, 39, 1, 1, 64, 72, 72,
- 72, 113, 1, 72, 1, 39, 1, 39, 39, 73, 118, 72, 72, 72, 72, 72, 118, 1, 72, 1, 72, 72, 72, 71, 71, 4, 1,
- 1, 5, 72, 64, 64, 64, 64, 72, 3, 1, 1, 72, 72, 3, 1, 118, 72, 1, 1, 1, 39, 72, 118, 72, 6, 72, 1, 55,
- 70, 71, 72, 64, 1, 55, 75, 74, 39, 39, 4, 4, 4, 4, 3, 1, 69, 1, 1, 3 };
- }
-
- public final static byte scopeLa[] = ScopeLa.scopeLa;
-
- @Override
- public final int scopeLa(int index) {
- return scopeLa[index];
- }
-
- public interface ScopeStateSet {
- public final static char scopeStateSet[] = { 68, 175, 267, 267, 90, 175, 267, 267, 267, 267, 78, 92, 68, 90,
- 175, 90, 70, 78, 78, 68, 267, 267, 62, 197, 243, 243, 53, 53, 65, 175, 68, 175, 175, 177, 104, 354, 70,
- 68, 129, 371, 354, 78, 267, 267, 371, 362, 181, 46, 78, 62, 26, 53, 65, 177, 22, 70, 29, 56, 267, 267,
- 267, 267, 267, 267, 247, 6, 65, 78, 78, 78, 112, 327, 129, 175, 175, 134, 78, 267, 267, 267, 267, 362,
- 267, 26, 53, 24, 362, 364, 181, 358, 181, 59, 186, 177, 78, 50, 56, 132, 129, 267, 65, 177, 1, 78, 268,
- 104, 129, 129, 78, 68, 65, 11, 101, 150, 101, 150, 26, 1, 175, 68, 68, 181 };
- }
-
- public final static char scopeStateSet[] = ScopeStateSet.scopeStateSet;
-
- @Override
- public final int scopeStateSet(int index) {
- return scopeStateSet[index];
- }
-
- public interface ScopeRhs {
- public final static char scopeRhs[] = { 0, 338, 3, 59, 0, 126, 0, 337, 3, 113, 0, 126, 180, 0, 127, 188, 74, 0,
- 224, 0, 197, 166, 126, 10, 0, 136, 0, 166, 126, 10, 0, 135, 0, 272, 127, 54, 124, 0, 20, 0, 309, 127,
- 54, 55, 0, 20, 53, 0, 33, 132, 0, 20, 53, 0, 0, 309, 127, 54, 55, 215, 0, 20, 186, 0, 272, 127, 54, 132,
- 0, 189, 126, 0, 141, 0, 227, 3, 308, 0, 308, 0, 2, 0, 126, 0, 272, 127, 54, 131, 0, 189, 126, 237, 0,
- 189, 126, 22, 237, 0, 189, 126, 332, 22, 0, 128, 197, 166, 126, 0, 128, 0, 197, 166, 126, 0, 134, 128,
- 0, 172, 0, 328, 127, 172, 0, 127, 172, 0, 230, 128, 0, 166, 327, 235, 0, 136, 0, 0, 0, 0, 135, 0, 0, 0,
- 0, 326, 127, 164, 236, 0, 127, 0, 236, 0, 129, 0, 0, 127, 0, 325, 127, 164, 271, 0, 127, 0, 0, 44, 127,
- 0, 0, 150, 3, 0, 127, 296, 295, 127, 74, 294, 172, 0, 295, 127, 74, 294, 172, 0, 223, 0, 224, 0, 294,
- 172, 0, 96, 0, 0, 223, 0, 224, 0, 211, 96, 0, 0, 223, 0, 224, 0, 295, 127, 294, 172, 0, 223, 0, 211, 0,
- 0, 223, 0, 240, 127, 3, 0, 126, 0, 0, 0, 0, 0, 240, 127, 3, 222, 0, 231, 3, 0, 220, 127, 0, 216, 0, 146,
- 0, 176, 166, 126, 0, 10, 0, 0, 0, 0, 226, 60, 0, 125, 0, 240, 127, 3, 195, 0, 195, 0, 2, 0, 0, 126, 0,
- 0, 0, 0, 0, 211, 3, 0, 209, 0, 253, 127, 164, 38, 27, 0, 189, 126, 61, 63, 0, 204, 128, 0, 128, 189,
- 126, 292, 63, 0, 189, 126, 292, 63, 0, 189, 126, 70, 123, 61, 0, 253, 127, 164, 263, 61, 0, 253, 127,
- 164, 263, 239, 61, 0, 289, 290, 127, 164, 123, 322, 56, 0, 289, 290, 127, 164, 322, 56, 0, 189, 126,
- 288, 56, 0, 197, 189, 126, 288, 235, 0, 189, 126, 288, 235, 0, 166, 126, 0, 93, 136, 0, 286, 127, 149,
- 0, 286, 127, 172, 0, 159, 84, 0, 317, 161, 319, 320, 3, 81, 0, 126, 179, 0, 319, 320, 3, 81, 0, 128, 0,
- 126, 179, 0, 159, 3, 75, 204, 80, 0, 126, 128, 0, 204, 80, 0, 108, 2, 131, 126, 128, 0, 238, 3, 75, 0,
- 211, 174, 0, 33, 169, 0, 174, 0, 183, 33, 169, 0, 238, 3, 85, 0, 204, 152, 238, 3, 83, 0, 62, 179, 0,
- 238, 3, 83, 0, 126, 179, 62, 179, 0, 318, 127, 164, 0, 159, 0, 226, 77, 0, 30, 179, 0, 159, 102, 185, 0,
- 30, 177, 0, 148, 64, 167, 3, 0, 167, 3, 0, 20, 161, 126, 0, 159, 102, 162, 0, 30, 169, 0, 198, 3, 0,
- 126, 149, 0, 227, 3, 0, 226, 60, 283, 0, 159, 60, 0, 198, 3, 314, 67, 126, 0, 126, 0, 0, 0, 0, 314, 67,
- 126, 0, 2, 145, 126, 0, 0, 0, 0, 198, 3, 46, 0, 147, 0, 125, 55, 166, 126, 0, 31, 147, 0, 93, 136, 31,
- 147, 0, 228, 189, 126, 0, 146, 31, 147, 0, 198, 3, 50, 0, 159, 3, 50, 0, 159, 3, 64, 198, 54, 42, 0,
- 198, 54, 42, 0, 20, 2, 131, 126, 0, 159, 3, 64, 198, 54, 45, 0, 198, 54, 45, 0, 159, 3, 64, 198, 54, 47,
- 0, 198, 54, 47, 0, 159, 3, 64, 198, 54, 43, 0, 198, 54, 43, 0, 227, 3, 125, 197, 166, 126, 10, 0, 125,
- 197, 166, 126, 10, 0, 136, 2, 0, 126, 0, 227, 3, 124, 276, 166, 126, 10, 0, 276, 166, 126, 10, 0, 135,
- 2, 0, 126, 0, 227, 3, 135, 0, 227, 3, 140, 0, 159, 60, 140, 0, 278, 0, 31, 0, 31, 139, 0, 165, 0, 134,
- 0, 159, 3, 0 };
- }
-
- public final static char scopeRhs[] = ScopeRhs.scopeRhs;
-
- @Override
- public final int scopeRhs(int index) {
- return scopeRhs[index];
- }
-
- public interface ScopeState {
- public final static char scopeState[] = { 0, 6247, 6371, 6352, 6345, 0, 2420, 2827, 2091, 2762, 0, 5209, 5147,
- 5085, 5023, 4961, 4899, 4837, 4775, 4713, 4483, 4421, 4263, 0, 1307, 0, 2486, 701, 0, 5209, 5147, 3109,
- 2556, 5085, 5023, 4961, 4899, 4837, 4775, 2498, 4713, 4483, 4421, 2364, 2358, 0, 2399, 1316, 1266, 0,
- 2597, 1304, 0, 2614, 1499, 0, 723, 704, 0, 903, 5951, 0, 6159, 5370, 0, 6215, 6147, 0, 6215, 6147, 5794,
- 6121, 6108, 5781, 6047, 5986, 5768, 5970, 5209, 5147, 5085, 5023, 4961, 4899, 4837, 4775, 4713, 4483,
- 4421, 0, 6215, 6147, 5794, 6121, 6108, 5781, 6047, 5986, 5768, 5970, 0, 2994, 2663, 0, 3382, 3445, 3628,
- 3537, 3862, 3822, 3710, 672, 2966, 996, 2900, 2834, 2768, 2702, 2636, 2570, 2504, 2438, 2372, 2306,
- 2240, 927, 835, 766, 0, 2733, 866, 0, 794, 0, 654, 5938, 4600, 3474, 3902, 2956, 4187, 2428, 3008, 6241,
- 4666, 4585, 6182, 2939, 1400, 0, 6189, 6055, 6048, 5964, 5790, 5769, 5176, 5114, 6068, 5803, 4441, 4333,
- 5052, 4990, 4928, 4866, 4804, 4250, 3939, 923, 3377, 718, 4742, 4230, 0, 6159, 5370, 600, 5866, 4235, 0,
- 5938, 903, 3902, 5951, 4585, 4572, 4350, 2601, 2271, 654, 4378, 2469, 4187, 3889, 3849, 0, 1859, 1812,
- 6189, 6055, 6048, 1765, 1718, 5964, 1671, 5790, 5769, 2141, 5176, 2094, 5114, 6068, 2047, 2000, 1953,
- 1906, 5775, 5803, 1607, 4441, 1513, 4333, 1561, 5052, 4990, 1414, 4928, 4866, 1269, 4804, 4250, 2235,
- 3939, 923, 3377, 2188, 718, 4742, 5866, 4230, 814, 4235, 2864, 2402, 1618, 799, 4572, 4350, 2601, 2271,
- 654, 5938, 4378, 903, 3902, 2469, 4187, 5951, 2798, 1062, 1027, 2733, 866, 4585, 3889, 3849, 5746, 2966,
- 4200, 996, 3382, 2900, 2834, 2768, 2702, 2636, 2570, 2504, 2438, 2372, 2306, 2240, 3445, 3628, 3537,
- 3862, 3822, 3710, 4160, 4133, 4106, 5723, 672, 5700, 927, 835, 766, 1080, 1324, 3593, 3501, 3790, 3758,
- 3676, 4395, 4307, 4079, 4052, 4020, 3993, 5346, 5322, 5298, 4688, 4612, 5677, 5654, 5631, 5608, 5585,
- 5561, 5532, 5509, 5442, 5416, 5385, 3032, 3319, 3277, 3220, 3178, 3121, 3079, 2193, 2146, 1471, 2099,
- 2052, 2005, 1958, 1911, 1864, 1817, 1770, 1723, 1676, 1629, 600, 1424, 1372, 1565, 1519, 1277, 1173,
- 1126, 1222, 0, 901, 891, 803, 653, 4666, 4585, 4572, 3167, 4435, 3889, 645, 3849, 0, 4727, 4850, 4724,
- 1076, 0 };
- }
-
- public final static char scopeState[] = ScopeState.scopeState;
-
- @Override
- public final int scopeState(int index) {
- return scopeState[index];
- }
-
- public interface InSymb {
- public final static char inSymb[] = { 0, 0, 313, 55, 10, 41, 54, 243, 243, 127, 70, 70, 309, 149, 127, 174, 64,
- 68, 70, 231, 211, 60, 222, 223, 200, 195, 6, 124, 131, 8, 132, 126, 4, 3, 127, 256, 257, 236, 258, 235,
- 259, 56, 287, 260, 124, 10, 126, 127, 3, 41, 50, 42, 45, 47, 43, 10, 135, 3, 126, 46, 40, 6, 35, 34, 5,
- 7, 37, 36, 140, 145, 147, 146, 153, 148, 156, 155, 158, 157, 160, 59, 162, 70, 70, 226, 162, 3, 3, 124,
- 123, 54, 54, 174, 60, 3, 66, 67, 54, 189, 165, 166, 231, 211, 127, 220, 126, 176, 164, 327, 288, 322,
- 288, 126, 189, 166, 220, 127, 243, 3, 54, 54, 54, 54, 126, 3, 198, 159, 127, 66, 67, 166, 3, 125, 117,
- 119, 3, 60, 91, 98, 35, 34, 100, 99, 5, 90, 89, 64, 54, 86, 87, 7, 93, 92, 95, 94, 96, 112, 111, 110,
- 109, 108, 107, 106, 105, 104, 103, 70, 102, 101, 127, 127, 127, 127, 127, 60, 60, 127, 4, 197, 240, 241,
- 242, 126, 166, 7, 5, 127, 166, 243, 125, 124, 126, 123, 164, 126, 166, 55, 70, 198, 159, 198, 198, 198,
- 198, 166, 227, 127, 152, 285, 135, 125, 124, 10, 126, 60, 314, 3, 198, 55, 126, 55, 227, 159, 146, 146,
- 145, 145, 145, 148, 148, 148, 148, 147, 147, 155, 153, 153, 157, 156, 158, 159, 160, 240, 240, 272, 127,
- 250, 3, 167, 148, 175, 169, 183, 177, 184, 185, 274, 272, 220, 272, 278, 197, 152, 68, 166, 176, 176,
- 326, 126, 170, 237, 61, 55, 215, 63, 172, 329, 125, 124, 244, 244, 189, 164, 127, 189, 197, 126, 64, 64,
- 64, 64, 197, 276, 68, 126, 166, 216, 3, 315, 174, 150, 189, 166, 71, 152, 152, 256, 257, 258, 259, 336,
- 260, 10, 167, 90, 89, 54, 7, 93, 92, 95, 94, 96, 112, 111, 110, 109, 108, 107, 106, 105, 104, 103, 70,
- 102, 101, 68, 4, 127, 5, 127, 166, 263, 239, 54, 55, 292, 294, 127, 3, 195, 244, 244, 127, 127, 197,
- 127, 290, 123, 291, 3, 3, 3, 3, 125, 124, 166, 55, 198, 127, 127, 228, 6, 55, 127, 127, 126, 64, 148,
- 148, 148, 169, 167, 167, 177, 175, 183, 159, 184, 229, 173, 176, 197, 164, 263, 64, 54, 126, 74, 127,
- 220, 328, 71, 303, 211, 124, 127, 127, 127, 71, 290, 289, 70, 68, 159, 159, 159, 159, 3, 3, 197, 152,
- 280, 283, 60, 190, 4, 123, 125, 229, 229, 166, 148, 71, 127, 127, 128, 127, 164, 27, 55, 172, 65, 61,
- 63, 127, 189, 127, 295, 71, 68, 71, 70, 220, 331, 237, 22, 126, 289, 227, 227, 125, 127, 3, 60, 159, 4,
- 127, 127, 197, 59, 253, 255, 127, 38, 127, 3, 123, 61, 309, 128, 295, 164, 307, 126, 308, 68, 126, 22,
- 332, 189, 280, 227, 226, 3, 253, 127, 164, 286, 266, 293, 38, 70, 126, 64, 296, 127, 68, 189, 3, 189,
- 126, 126, 338, 127, 3, 70, 68, 152, 126, 189, 127, 318, 79, 77, 1, 159, 9, 85, 83, 81, 80, 75, 82, 84,
- 78, 76, 61, 74, 227, 189, 189, 68, 253, 150, 164, 271, 189, 239, 297, 113, 9, 71, 226, 71, 3, 3, 3, 204,
- 3, 123, 159, 123, 188, 127, 164, 239, 3, 71, 238, 174, 238, 320, 149, 75, 238, 127, 127, 97, 337, 174,
- 152, 211, 152, 319, 127, 3, 152, 297, 325, 152, 152, 127, 70, 204, 161, 286, 159, 203, 68, 121, 317,
- 152, 203, 9, 152 };
- }
-
- public final static char inSymb[] = InSymb.inSymb;
-
- @Override
- public final int inSymb(int index) {
- return inSymb[index];
- }
-
- public interface Name {
- public final static String name[] = { "", "[", "(", ".", ".*", "->", "->*", "++", "--", "&", "*", "+", "-", "~",
- "!", "/", "%", ">>", "<<", "<", ">", "<=", ">=", "==", "!=", "^", "|", "&&", "||", "?", ":", "::",
- "...", "=", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", ",", "$empty", "asm", "auto",
- "bool", "break", "case", "catch", "char", "class", "const", "const_cast", "continue", "default",
- "delete", "do", "double", "dynamic_cast", "else", "enum", "explicit", "export", "extern", "false",
- "float", "for", "friend", "goto", "if", "inline", "int", "long", "mutable", "namespace", "new",
- "operator", "private", "protected", "public", "register", "reinterpret_cast", "return", "short",
- "signed", "sizeof", "static", "static_cast", "struct", "switch", "template", "this", "throw", "try",
- "true", "typedef", "typeid", "typename", "union", "unsigned", "using", "virtual", "void", "volatile",
- "wchar_t", "while", "integer", "floating", "charconst", "stringlit", "identifier", "Completion",
- "EndOfCompletion", "Invalid", "RightBracket", "RightParen", "RightBrace", "SemiColon", "LeftBrace",
- "ERROR_TOKEN", "EOF_TOKEN", "type_parameter_start", "]", ")", "}", ";", "{", "identifier_token",
- "expression", "id_expression", "qualified_or_unqualified_name", "unqualified_id_name",
- "identifier_name", "template_id_name", "nested_name_specifier", "class_or_namespace_name",
- "nested_name_specifier_with_tem" + "plate", "class_or_namespace_name_with_t" + "emplate", "class_name",
- "postfix_expression", "simple_type_specifier", "pseudo_destructor_name", "type_id", "type_name",
- "destructor_type_name", "unary_expression", "cast_expression", "new_type_id", "expression_list",
- "type_specifier_seq", "new_declarator", "new_pointer_operators", "ptr_operator",
- "new_array_expressions", "constant_expression", "pm_expression", "multiplicative_expression",
- "additive_expression", "shift_expression", "relational_expression", "equality_expression",
- "and_expression", "exclusive_or_expression", "inclusive_or_expression", "logical_and_expression",
- "logical_or_expression", "assignment_expression", "relational_expression_inTempla" + "te",
- "equality_expression_inTemplate", "and_expression_inTemplate",
- "exclusive_or_expression_inTemp" + "late", "inclusive_or_expression_inTemp" + "late",
- "logical_and_expression_inTempl" + "ate", "logical_or_expression_inTempla" + "te",
- "assignment_expression_inTempla" + "te", "expression_list_actual", "statement", "compound_statement",
- "statement_seq", "condition", "declarator", "for_init_statement", "function_definition", "declaration",
- "declaration_seq", "declaration_specifiers", "simple_declaration_specifiers",
- "class_declaration_specifiers", "elaborated_declaration_specifi" + "ers", "enum_declaration_specifiers",
- "type_name_declaration_specifie" + "rs", "no_type_declaration_specifier", "cv_qualifier",
- "no_type_declaration_specifiers", "class_specifier", "elaborated_type_specifier", "enum_specifier",
- "type_name_specifier", "class_keyword", "enumerator_list", "enumerator_definition", "namespace_name",
- "init_declarator_list", "init_declarator_complete", "complete_declarator", "initializer",
- "direct_declarator", "ptr_operator_seq", "function_declarator", "basic_direct_declarator",
- "array_direct_declarator", "array_modifier", "abstract_declarator", "direct_abstract_declarator",
- "basic_direct_abstract_declarat" + "or", "array_direct_abstract_declarat" + "or",
- "parameter_declaration_list", "parameter_declaration", "parameter_init_declarator",
- "parameter_initializer", "function_body", "handler_seq", "initializer_clause", "initializer_seq",
- "class_head", "access_specifier_keyword", "member_declaration", "member_declarator_list",
- "member_declaration_list", "member_declarator_complete", "constant_initializer", "bit_field_declarator",
- "base_specifier_list", "base_specifier", "conversion_function_id", "conversion_type_id",
- "conversion_declarator", "mem_initializer_list", "mem_initializer", "mem_initializer_name",
- "operator_id_name", "overloadable_operator", "template_parameter_list", "template_parameter",
- "template_argument_list", "template_argument", "type_name_specifier_inTemplate",
- "type_name_declaration_specifie" + "rs_inTemplate", "type_specifier_seq_inTemplate", "handler",
- "exception_declaration", "type_id_list" };
- }
-
- public final static String name[] = Name.name;
-
- @Override
- public final String name(int index) {
- return name[index];
- }
-
- public final static int ERROR_SYMBOL = 62, SCOPE_UBOUND = 121, SCOPE_SIZE = 122, MAX_NAME_LENGTH = 43;
-
- @Override
- public final int getErrorSymbol() {
- return ERROR_SYMBOL;
- }
-
- @Override
- public final int getScopeUbound() {
- return SCOPE_UBOUND;
- }
-
- @Override
- public final int getScopeSize() {
- return SCOPE_SIZE;
- }
-
- @Override
- public final int getMaxNameLength() {
- return MAX_NAME_LENGTH;
- }
-
- public final static int NUM_STATES = 604, NT_OFFSET = 122, LA_STATE_OFFSET = 7583, MAX_LA = 2147483647,
- NUM_RULES = 599, NUM_NONTERMINALS = 225, NUM_SYMBOLS = 347, SEGMENT_SIZE = 8192, START_STATE = 1076,
- IDENTIFIER_SYMBOL = 0, EOFT_SYMBOL = 120, EOLT_SYMBOL = 120, ACCEPT_ACTION = 6544, ERROR_ACTION = 6984;
-
- public final static boolean BACKTRACK = true;
-
- @Override
- public final int getNumStates() {
- return NUM_STATES;
- }
-
- @Override
- public final int getNtOffset() {
- return NT_OFFSET;
- }
-
- @Override
- public final int getLaStateOffset() {
- return LA_STATE_OFFSET;
- }
-
- @Override
- public final int getMaxLa() {
- return MAX_LA;
- }
-
- @Override
- public final int getNumRules() {
- return NUM_RULES;
- }
-
- @Override
- public final int getNumNonterminals() {
- return NUM_NONTERMINALS;
- }
-
- @Override
- public final int getNumSymbols() {
- return NUM_SYMBOLS;
- }
-
- @Override
- public final int getSegmentSize() {
- return SEGMENT_SIZE;
- }
-
- @Override
- public final int getStartState() {
- return START_STATE;
- }
-
- @Override
- public final int getStartSymbol() {
- return lhs[0];
- }
-
- public final int getIdentifierSymbol() {
- return IDENTIFIER_SYMBOL;
- }
-
- @Override
- public final int getEoftSymbol() {
- return EOFT_SYMBOL;
- }
-
- @Override
- public final int getEoltSymbol() {
- return EOLT_SYMBOL;
- }
-
- @Override
- public final int getAcceptAction() {
- return ACCEPT_ACTION;
- }
-
- @Override
- public final int getErrorAction() {
- return ERROR_ACTION;
- }
-
- @Override
- public final boolean isValidForParser() {
- return isValidForParser;
- }
-
- @Override
- public final boolean getBacktrack() {
- return BACKTRACK;
- }
-
- @Override
- public final int originalState(int state) {
- return -baseCheck[state];
- }
-
- @Override
- public final int asi(int state) {
- return asb[originalState(state)];
- }
-
- @Override
- public final int nasi(int state) {
- return nasb[originalState(state)];
- }
-
- @Override
- public final int inSymbol(int state) {
- return inSymb[originalState(state)];
- }
-
- @Override
- public final int ntAction(int state, int sym) {
- return baseAction[state + sym];
- }
-
- @Override
- public final int tAction(int state, int sym) {
- int i = baseAction[state], k = i + sym;
- return termAction[termCheck[k] == sym ? k : i];
- }
-
- @Override
- public final int lookAhead(int la_state, int sym) {
- int k = la_state + sym;
- return termAction[termCheck[k] == sym ? k : la_state];
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPTemplateTypeParameterParsersym.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPTemplateTypeParameterParsersym.java
deleted file mode 100644
index b6ab6601a4f..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPTemplateTypeParameterParsersym.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2010 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.dom.lrparser.cpp;
-
-public interface CPPTemplateTypeParameterParsersym {
- public final static int TK_asm = 65, TK_auto = 25, TK_bool = 11, TK_break = 76, TK_case = 77, TK_catch = 113,
- TK_char = 12, TK_class = 41, TK_const = 23, TK_const_cast = 42, TK_continue = 78, TK_default = 79,
- TK_delete = 66, TK_do = 80, TK_double = 13, TK_dynamic_cast = 43, TK_else = 121, TK_enum = 56,
- TK_explicit = 26, TK_export = 88, TK_extern = 27, TK_false = 44, TK_float = 14, TK_for = 81, TK_friend = 28,
- TK_goto = 82, TK_if = 83, TK_inline = 29, TK_int = 15, TK_long = 16, TK_mutable = 30, TK_namespace = 61,
- TK_new = 67, TK_operator = 8, TK_private = 114, TK_protected = 115, TK_public = 116, TK_register = 31,
- TK_reinterpret_cast = 45, TK_return = 84, TK_short = 17, TK_signed = 18, TK_sizeof = 46, TK_static = 32,
- TK_static_cast = 47, TK_struct = 57, TK_switch = 85, TK_template = 55, TK_this = 48, TK_throw = 59,
- TK_try = 74, TK_true = 49, TK_typedef = 33, TK_typeid = 50, TK_typename = 10, TK_union = 58,
- TK_unsigned = 19, TK_using = 63, TK_virtual = 22, TK_void = 20, TK_volatile = 24, TK_wchar_t = 21,
- TK_while = 75, TK_integer = 51, TK_floating = 52, TK_charconst = 53, TK_stringlit = 38, TK_identifier = 1,
- TK_Completion = 2, TK_EndOfCompletion = 9, TK_Invalid = 122, TK_LeftBracket = 60, TK_LeftParen = 3,
- TK_Dot = 119, TK_DotStar = 98, TK_Arrow = 117, TK_ArrowStar = 91, TK_PlusPlus = 36, TK_MinusMinus = 37,
- TK_And = 7, TK_Star = 5, TK_Plus = 34, TK_Minus = 35, TK_Tilde = 6, TK_Bang = 40, TK_Slash = 99,
- TK_Percent = 100, TK_RightShift = 86, TK_LeftShift = 87, TK_LT = 54, TK_GT = 64, TK_LE = 89, TK_GE = 90,
- TK_EQ = 92, TK_NE = 93, TK_Caret = 94, TK_Or = 95, TK_AndAnd = 96, TK_OrOr = 101, TK_Question = 102,
- TK_Colon = 71, TK_ColonColon = 4, TK_DotDotDot = 97, TK_Assign = 70, TK_StarAssign = 103,
- TK_SlashAssign = 104, TK_PercentAssign = 105, TK_PlusAssign = 106, TK_MinusAssign = 107,
- TK_RightShiftAssign = 108, TK_LeftShiftAssign = 109, TK_AndAssign = 110, TK_CaretAssign = 111,
- TK_OrAssign = 112, TK_Comma = 68, TK_RightBracket = 118, TK_RightParen = 72, TK_RightBrace = 73,
- TK_SemiColon = 39, TK_LeftBrace = 69, TK_ERROR_TOKEN = 62, TK_EOF_TOKEN = 120;
-
- public final static String orderedTerminalSymbols[] = { "", "identifier", "Completion", "LeftParen", "ColonColon",
- "Star", "Tilde", "And", "operator", "EndOfCompletion", "typename", "bool", "char", "double", "float", "int",
- "long", "short", "signed", "unsigned", "void", "wchar_t", "virtual", "const", "volatile", "auto",
- "explicit", "extern", "friend", "inline", "mutable", "register", "static", "typedef", "Plus", "Minus",
- "PlusPlus", "MinusMinus", "stringlit", "SemiColon", "Bang", "class", "const_cast", "dynamic_cast", "false",
- "reinterpret_cast", "sizeof", "static_cast", "this", "true", "typeid", "integer", "floating", "charconst",
- "LT", "template", "enum", "struct", "union", "throw", "LeftBracket", "namespace", "ERROR_TOKEN", "using",
- "GT", "asm", "delete", "new", "Comma", "LeftBrace", "Assign", "Colon", "RightParen", "RightBrace", "try",
- "while", "break", "case", "continue", "default", "do", "for", "goto", "if", "return", "switch",
- "RightShift", "LeftShift", "export", "LE", "GE", "ArrowStar", "EQ", "NE", "Caret", "Or", "AndAnd",
- "DotDotDot", "DotStar", "Slash", "Percent", "OrOr", "Question", "StarAssign", "SlashAssign",
- "PercentAssign", "PlusAssign", "MinusAssign", "RightShiftAssign", "LeftShiftAssign", "AndAssign",
- "CaretAssign", "OrAssign", "catch", "private", "protected", "public", "Arrow", "RightBracket", "Dot",
- "EOF_TOKEN", "else", "Invalid" };
-
- public final static boolean isValidForParser = true;
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gcc/GCCParser.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gcc/GCCParser.java
deleted file mode 100644
index ff441f30a97..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gcc/GCCParser.java
+++ /dev/null
@@ -1,1812 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2015 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.dom.lrparser.gcc;
-
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.cdt.core.dom.ast.IASTBinaryExpression;
-import org.eclipse.cdt.core.dom.ast.IASTCastExpression;
-import org.eclipse.cdt.core.dom.ast.IASTCompletionNode;
-import org.eclipse.cdt.core.dom.ast.IASTCompositeTypeSpecifier;
-import org.eclipse.cdt.core.dom.ast.IASTElaboratedTypeSpecifier;
-import org.eclipse.cdt.core.dom.ast.IASTLiteralExpression;
-import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
-import org.eclipse.cdt.core.dom.ast.IASTTypeIdExpression;
-import org.eclipse.cdt.core.dom.ast.IASTUnaryExpression;
-import org.eclipse.cdt.core.dom.lrparser.CPreprocessorAdapter;
-import org.eclipse.cdt.core.dom.lrparser.IDOMTokenMap;
-import org.eclipse.cdt.core.dom.lrparser.IParser;
-import org.eclipse.cdt.core.dom.lrparser.ITokenCollector;
-import org.eclipse.cdt.core.dom.lrparser.action.ITokenStream;
-import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack;
-import org.eclipse.cdt.core.dom.lrparser.action.gnu.GCCBuildASTParserAction;
-import org.eclipse.cdt.core.dom.lrparser.action.gnu.GCCSecondaryParserFactory;
-import org.eclipse.cdt.core.dom.lrparser.action.gnu.GNUBuildASTParserAction;
-import org.eclipse.cdt.core.dom.lrparser.lpgextensions.FixedBacktrackingParser;
-import org.eclipse.cdt.core.dom.parser.IBuiltinBindingsProvider;
-import org.eclipse.cdt.core.index.IIndex;
-import org.eclipse.cdt.core.parser.IScanner;
-import org.eclipse.cdt.internal.core.dom.parser.c.CNodeFactory;
-
-import lpg.lpgjavaruntime.BadParseException;
-import lpg.lpgjavaruntime.BadParseSymFileException;
-import lpg.lpgjavaruntime.DiagnoseParser;
-import lpg.lpgjavaruntime.ErrorToken;
-import lpg.lpgjavaruntime.IToken;
-import lpg.lpgjavaruntime.LexStream;
-import lpg.lpgjavaruntime.Monitor;
-import lpg.lpgjavaruntime.NotBacktrackParseTableException;
-import lpg.lpgjavaruntime.NullExportedSymbolsException;
-import lpg.lpgjavaruntime.NullTerminalSymbolsException;
-import lpg.lpgjavaruntime.ParseErrorCodes;
-import lpg.lpgjavaruntime.ParseTable;
-import lpg.lpgjavaruntime.PrsStream;
-import lpg.lpgjavaruntime.RuleAction;
-import lpg.lpgjavaruntime.UndefinedEofSymbolException;
-import lpg.lpgjavaruntime.UnimplementedTerminalsException;
-
-public class GCCParser extends PrsStream
- implements RuleAction, ITokenStream, ITokenCollector, IParser<IASTTranslationUnit>
-
-{
- private static ParseTable prs = new GCCParserprs();
- private FixedBacktrackingParser btParser;
-
- public FixedBacktrackingParser getParser() {
- return btParser;
- }
-
- private void setResult(Object object) {
- btParser.setSym1(object);
- }
-
- public Object getRhsSym(int i) {
- return btParser.getSym(i);
- }
-
- public int getRhsTokenIndex(int i) {
- return btParser.getToken(i);
- }
-
- public IToken getRhsIToken(int i) {
- return super.getIToken(getRhsTokenIndex(i));
- }
-
- public int getRhsFirstTokenIndex(int i) {
- return btParser.getFirstToken(i);
- }
-
- public IToken getRhsFirstIToken(int i) {
- return super.getIToken(getRhsFirstTokenIndex(i));
- }
-
- public int getRhsLastTokenIndex(int i) {
- return btParser.getLastToken(i);
- }
-
- public IToken getRhsLastIToken(int i) {
- return super.getIToken(getRhsLastTokenIndex(i));
- }
-
- public int getLeftSpan() {
- return btParser.getFirstToken();
- }
-
- @Override
- public IToken getLeftIToken() {
- return super.getIToken(getLeftSpan());
- }
-
- public int getRightSpan() {
- return btParser.getLastToken();
- }
-
- @Override
- public IToken getRightIToken() {
- return super.getIToken(getRightSpan());
- }
-
- public int getRhsErrorTokenIndex(int i) {
- int index = btParser.getToken(i);
- IToken err = super.getIToken(index);
- return (err instanceof ErrorToken ? index : 0);
- }
-
- public ErrorToken getRhsErrorIToken(int i) {
- int index = btParser.getToken(i);
- IToken err = super.getIToken(index);
- return (ErrorToken) (err instanceof ErrorToken ? err : null);
- }
-
- public GCCParser(LexStream lexStream) {
- super(lexStream);
-
- try {
- super.remapTerminalSymbols(orderedTerminalSymbols(), GCCParserprs.EOFT_SYMBOL);
- } catch (NullExportedSymbolsException e) {
- } catch (NullTerminalSymbolsException e) {
- } catch (UnimplementedTerminalsException e) {
- java.util.ArrayList unimplemented_symbols = e.getSymbols();
- System.out.println("The Lexer will not scan the following token(s):");
- for (int i = 0; i < unimplemented_symbols.size(); i++) {
- Integer id = (Integer) unimplemented_symbols.get(i);
- System.out.println(" " + GCCParsersym.orderedTerminalSymbols[id.intValue()]);
- }
- System.out.println();
- } catch (UndefinedEofSymbolException e) {
- throw new Error(new UndefinedEofSymbolException("The Lexer does not implement the Eof symbol "
- + GCCParsersym.orderedTerminalSymbols[GCCParserprs.EOFT_SYMBOL]));
- }
- }
-
- @Override
- public String[] orderedTerminalSymbols() {
- return GCCParsersym.orderedTerminalSymbols;
- }
-
- public String getTokenKindName(int kind) {
- return GCCParsersym.orderedTerminalSymbols[kind];
- }
-
- public int getEOFTokenKind() {
- return GCCParserprs.EOFT_SYMBOL;
- }
-
- public PrsStream getParseStream() {
- return this;
- }
-
- //
- // Report error message for given error_token.
- //
- public final void reportErrorTokenMessage(int error_token, String msg) {
- int firsttok = super.getFirstErrorToken(error_token), lasttok = super.getLastErrorToken(error_token);
- String location = super.getFileName() + ':'
- + (firsttok > lasttok ? (super.getEndLine(lasttok) + ":" + super.getEndColumn(lasttok))
- : (super.getLine(error_token) + ":" + super.getColumn(error_token) + ":"
- + super.getEndLine(error_token) + ":" + super.getEndColumn(error_token)))
- + ": ";
- super.reportError((firsttok > lasttok ? ParseErrorCodes.INSERTION_CODE : ParseErrorCodes.SUBSTITUTION_CODE),
- location, msg);
- }
-
- public void parser() {
- parser(null, 0);
- }
-
- public void parser(Monitor monitor) {
- parser(monitor, 0);
- }
-
- public void parser(int error_repair_count) {
- parser(null, error_repair_count);
- }
-
- public void parser(Monitor monitor, int error_repair_count) {
- try {
- btParser = new FixedBacktrackingParser(monitor, this, prs, this);
- } catch (NotBacktrackParseTableException e) {
- throw new Error(new NotBacktrackParseTableException("Regenerate GCCParserprs.java with -BACKTRACK option"));
- } catch (BadParseSymFileException e) {
- throw new Error(new BadParseSymFileException("Bad Parser Symbol File -- GCCParsersym.java"));
- }
-
- try {
- btParser.parse(error_repair_count);
- } catch (BadParseException e) {
- reset(e.error_token); // point to error token
- DiagnoseParser diagnoseParser = new DiagnoseParser(this, prs);
- diagnoseParser.diagnose(e.error_token);
- }
- }
-
- private GCCBuildASTParserAction action;
- private IASTCompletionNode compNode;
-
- public GCCParser(IScanner scanner, IDOMTokenMap tokenMap, IBuiltinBindingsProvider builtinBindingsProvider,
- IIndex index, Map<String, String> properties) {
- initActions(properties);
- action.initializeTranslationUnit(scanner, builtinBindingsProvider, index);
- CPreprocessorAdapter.runCPreprocessor(scanner, this, tokenMap);
- }
-
- private void initActions(Map<String, String> properties) {
- ScopedStack<Object> astStack = new ScopedStack<>();
-
- action = new GCCBuildASTParserAction(this, astStack, CNodeFactory.getDefault(),
- GCCSecondaryParserFactory.getDefault());
- action.setParserProperties(properties);
-
- gnuAction = new GNUBuildASTParserAction(this, astStack, CNodeFactory.getDefault());
- gnuAction.setParserProperties(properties);
-
- }
-
- @Override
- public void addToken(IToken token) {
- token.setKind(mapKind(token.getKind())); // TODO does mapKind need to be called?
- super.addToken(token);
- }
-
- @Override
- public IASTTranslationUnit parse() {
- // this has to be done, or... kaboom!
- setStreamLength(getSize());
-
- final int errorRepairCount = -1; // -1 means full error handling
- parser(null, errorRepairCount); // do the actual parse
- super.resetTokenStream(); // allow tokens to be garbage collected
-
- compNode = action.getASTCompletionNode(); // the completion node may be null
- return (IASTTranslationUnit) action.getParseResult();
- }
-
- @Override
- public IASTCompletionNode getCompletionNode() {
- return compNode;
- }
-
- // uncomment this method to use with backtracking parser
- @Override
- public List<IToken> getRuleTokens() {
- return getTokens().subList(getLeftSpan(), getRightSpan() + 1);
- }
-
- @Override
- public String[] getOrderedTerminalSymbols() {
- return GCCParsersym.orderedTerminalSymbols;
- }
-
- @Override
- @SuppressWarnings("nls")
- public String getName() {
- return "GCCParser";
- }
-
- private GNUBuildASTParserAction gnuAction;
-
- @Override
- public void ruleAction(int ruleNumber) {
- switch (ruleNumber) {
-
- //
- // Rule 1: <openscope-ast> ::= $Empty
- //
- case 1: {
- action.openASTScope();
- break;
- }
-
- //
- // Rule 2: <empty> ::= $Empty
- //
- case 2: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 13: literal ::= integer
- //
- case 13: {
- action.consumeExpressionLiteral(IASTLiteralExpression.lk_integer_constant);
- break;
- }
-
- //
- // Rule 14: literal ::= floating
- //
- case 14: {
- action.consumeExpressionLiteral(IASTLiteralExpression.lk_float_constant);
- break;
- }
-
- //
- // Rule 15: literal ::= charconst
- //
- case 15: {
- action.consumeExpressionLiteral(IASTLiteralExpression.lk_char_constant);
- break;
- }
-
- //
- // Rule 16: literal ::= stringlit
- //
- case 16: {
- action.consumeExpressionLiteral(IASTLiteralExpression.lk_string_literal);
- break;
- }
-
- //
- // Rule 18: primary_expression ::= primary_expression_id
- //
- case 18: {
- action.consumeExpressionID();
- break;
- }
-
- //
- // Rule 19: primary_expression ::= ( expression )
- //
- case 19: {
- action.consumeExpressionBracketed();
- break;
- }
-
- //
- // Rule 22: postfix_expression ::= postfix_expression [ expression ]
- //
- case 22: {
- action.consumeExpressionArraySubscript();
- break;
- }
-
- //
- // Rule 23: postfix_expression ::= postfix_expression ( expression_list_opt )
- //
- case 23: {
- action.consumeExpressionFunctionCall();
- break;
- }
-
- //
- // Rule 24: postfix_expression ::= postfix_expression . member_name
- //
- case 24: {
- action.consumeExpressionFieldReference(false);
- break;
- }
-
- //
- // Rule 25: postfix_expression ::= postfix_expression -> member_name
- //
- case 25: {
- action.consumeExpressionFieldReference(true);
- break;
- }
-
- //
- // Rule 26: postfix_expression ::= postfix_expression ++
- //
- case 26: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixIncr);
- break;
- }
-
- //
- // Rule 27: postfix_expression ::= postfix_expression --
- //
- case 27: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixDecr);
- break;
- }
-
- //
- // Rule 28: postfix_expression ::= ( type_id ) initializer_list
- //
- case 28: {
- action.consumeExpressionTypeIdInitializer();
- break;
- }
-
- //
- // Rule 33: unary_expression ::= ++ unary_expression
- //
- case 33: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixIncr);
- break;
- }
-
- //
- // Rule 34: unary_expression ::= -- unary_expression
- //
- case 34: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixDecr);
- break;
- }
-
- //
- // Rule 35: unary_expression ::= & cast_expression
- //
- case 35: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_amper);
- break;
- }
-
- //
- // Rule 36: unary_expression ::= * cast_expression
- //
- case 36: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_star);
- break;
- }
-
- //
- // Rule 37: unary_expression ::= + cast_expression
- //
- case 37: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_plus);
- break;
- }
-
- //
- // Rule 38: unary_expression ::= - cast_expression
- //
- case 38: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_minus);
- break;
- }
-
- //
- // Rule 39: unary_expression ::= ~ cast_expression
- //
- case 39: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_tilde);
- break;
- }
-
- //
- // Rule 40: unary_expression ::= ! cast_expression
- //
- case 40: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_not);
- break;
- }
-
- //
- // Rule 41: unary_expression ::= sizeof unary_expression
- //
- case 41: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_sizeof);
- break;
- }
-
- //
- // Rule 42: unary_expression ::= sizeof ( type_id )
- //
- case 42: {
- action.consumeExpressionTypeId(IASTTypeIdExpression.op_sizeof);
- break;
- }
-
- //
- // Rule 44: cast_expression ::= ( type_id ) cast_expression
- //
- case 44: {
- action.consumeExpressionCast(IASTCastExpression.op_cast);
- break;
- }
-
- //
- // Rule 46: multiplicative_expression ::= multiplicative_expression * cast_expression
- //
- case 46: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_multiply);
- break;
- }
-
- //
- // Rule 47: multiplicative_expression ::= multiplicative_expression / cast_expression
- //
- case 47: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_divide);
- break;
- }
-
- //
- // Rule 48: multiplicative_expression ::= multiplicative_expression % cast_expression
- //
- case 48: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_modulo);
- break;
- }
-
- //
- // Rule 50: additive_expression ::= additive_expression + multiplicative_expression
- //
- case 50: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_plus);
- break;
- }
-
- //
- // Rule 51: additive_expression ::= additive_expression - multiplicative_expression
- //
- case 51: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_minus);
- break;
- }
-
- //
- // Rule 53: shift_expression ::= shift_expression << additive_expression
- //
- case 53: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftLeft);
- break;
- }
-
- //
- // Rule 54: shift_expression ::= shift_expression >> additive_expression
- //
- case 54: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftRight);
- break;
- }
-
- //
- // Rule 56: relational_expression ::= relational_expression < shift_expression
- //
- case 56: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_lessThan);
- break;
- }
-
- //
- // Rule 57: relational_expression ::= relational_expression > shift_expression
- //
- case 57: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_greaterThan);
- break;
- }
-
- //
- // Rule 58: relational_expression ::= relational_expression <= shift_expression
- //
- case 58: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_lessEqual);
- break;
- }
-
- //
- // Rule 59: relational_expression ::= relational_expression >= shift_expression
- //
- case 59: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_greaterEqual);
- break;
- }
-
- //
- // Rule 61: equality_expression ::= equality_expression == relational_expression
- //
- case 61: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_equals);
- break;
- }
-
- //
- // Rule 62: equality_expression ::= equality_expression != relational_expression
- //
- case 62: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_notequals);
- break;
- }
-
- //
- // Rule 64: and_expression ::= and_expression & equality_expression
- //
- case 64: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryAnd);
- break;
- }
-
- //
- // Rule 66: exclusive_or_expression ::= exclusive_or_expression ^ and_expression
- //
- case 66: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryXor);
- break;
- }
-
- //
- // Rule 68: inclusive_or_expression ::= inclusive_or_expression | exclusive_or_expression
- //
- case 68: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryOr);
- break;
- }
-
- //
- // Rule 70: logical_and_expression ::= logical_and_expression && inclusive_or_expression
- //
- case 70: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_logicalAnd);
- break;
- }
-
- //
- // Rule 72: logical_or_expression ::= logical_or_expression || logical_and_expression
- //
- case 72: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_logicalOr);
- break;
- }
-
- //
- // Rule 74: conditional_expression ::= logical_or_expression ? expression : assignment_expression
- //
- case 74: {
- action.consumeExpressionConditional();
- break;
- }
-
- //
- // Rule 76: assignment_expression ::= unary_expression = assignment_expression
- //
- case 76: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_assign);
- break;
- }
-
- //
- // Rule 77: assignment_expression ::= unary_expression *= assignment_expression
- //
- case 77: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_multiplyAssign);
- break;
- }
-
- //
- // Rule 78: assignment_expression ::= unary_expression /= assignment_expression
- //
- case 78: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_divideAssign);
- break;
- }
-
- //
- // Rule 79: assignment_expression ::= unary_expression %= assignment_expression
- //
- case 79: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_moduloAssign);
- break;
- }
-
- //
- // Rule 80: assignment_expression ::= unary_expression += assignment_expression
- //
- case 80: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_plusAssign);
- break;
- }
-
- //
- // Rule 81: assignment_expression ::= unary_expression -= assignment_expression
- //
- case 81: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_minusAssign);
- break;
- }
-
- //
- // Rule 82: assignment_expression ::= unary_expression <<= assignment_expression
- //
- case 82: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftLeftAssign);
- break;
- }
-
- //
- // Rule 83: assignment_expression ::= unary_expression >>= assignment_expression
- //
- case 83: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftRightAssign);
- break;
- }
-
- //
- // Rule 84: assignment_expression ::= unary_expression &= assignment_expression
- //
- case 84: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryAndAssign);
- break;
- }
-
- //
- // Rule 85: assignment_expression ::= unary_expression ^= assignment_expression
- //
- case 85: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryXorAssign);
- break;
- }
-
- //
- // Rule 86: assignment_expression ::= unary_expression |= assignment_expression
- //
- case 86: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryOrAssign);
- break;
- }
-
- //
- // Rule 89: expression_list ::= <openscope-ast> expression_list_actual
- //
- case 89: {
- action.consumeExpressionList();
- break;
- }
-
- //
- // Rule 91: expression_list_opt ::= $Empty
- //
- case 91: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 101: statement ::= ERROR_TOKEN
- //
- case 101: {
- action.consumeStatementProblem();
- break;
- }
-
- //
- // Rule 102: labeled_statement ::= identifier_token : statement
- //
- case 102: {
- action.consumeStatementLabeled();
- break;
- }
-
- //
- // Rule 103: labeled_statement ::= case constant_expression : statement
- //
- case 103: {
- action.consumeStatementCase();
- break;
- }
-
- //
- // Rule 104: labeled_statement ::= default : statement
- //
- case 104: {
- action.consumeStatementDefault();
- break;
- }
-
- //
- // Rule 105: compound_statement ::= { }
- //
- case 105: {
- action.consumeStatementCompoundStatement(false);
- break;
- }
-
- //
- // Rule 106: compound_statement ::= { <openscope-ast> block_item_list }
- //
- case 106: {
- action.consumeStatementCompoundStatement(true);
- break;
- }
-
- //
- // Rule 110: block_item ::= declaration
- //
- case 110: {
- action.consumeStatementDeclarationWithDisambiguation();
- break;
- }
-
- //
- // Rule 111: expression_statement ::= ;
- //
- case 111: {
- action.consumeStatementNull();
- break;
- }
-
- //
- // Rule 112: expression_statement ::= expression_in_statement ;
- //
- case 112: {
- action.consumeStatementExpression();
- break;
- }
-
- //
- // Rule 113: selection_statement ::= if ( expression ) statement
- //
- case 113: {
- action.consumeStatementIf(false);
- break;
- }
-
- //
- // Rule 114: selection_statement ::= if ( expression ) statement else statement
- //
- case 114: {
- action.consumeStatementIf(true);
- break;
- }
-
- //
- // Rule 115: selection_statement ::= switch ( expression ) statement
- //
- case 115: {
- action.consumeStatementSwitch();
- break;
- }
-
- //
- // Rule 117: expression_opt ::= $Empty
- //
- case 117: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 118: iteration_statement ::= do statement while ( expression ) ;
- //
- case 118: {
- action.consumeStatementDoLoop(true);
- break;
- }
-
- //
- // Rule 119: iteration_statement ::= do statement
- //
- case 119: {
- action.consumeStatementDoLoop(false);
- break;
- }
-
- //
- // Rule 120: iteration_statement ::= while ( expression ) statement
- //
- case 120: {
- action.consumeStatementWhileLoop();
- break;
- }
-
- //
- // Rule 121: iteration_statement ::= for ( expression_opt ; expression_opt ; expression_opt ) statement
- //
- case 121: {
- action.consumeStatementForLoop();
- break;
- }
-
- //
- // Rule 122: iteration_statement ::= for ( declaration expression_opt ; expression_opt ) statement
- //
- case 122: {
- action.consumeStatementForLoop();
- break;
- }
-
- //
- // Rule 123: jump_statement ::= goto identifier_token ;
- //
- case 123: {
- action.consumeStatementGoto();
- break;
- }
-
- //
- // Rule 124: jump_statement ::= continue ;
- //
- case 124: {
- action.consumeStatementContinue();
- break;
- }
-
- //
- // Rule 125: jump_statement ::= break ;
- //
- case 125: {
- action.consumeStatementBreak();
- break;
- }
-
- //
- // Rule 126: jump_statement ::= return ;
- //
- case 126: {
- action.consumeStatementReturn(false);
- break;
- }
-
- //
- // Rule 127: jump_statement ::= return expression ;
- //
- case 127: {
- action.consumeStatementReturn(true);
- break;
- }
-
- //
- // Rule 128: declaration ::= declaration_specifiers ;
- //
- case 128: {
- action.consumeDeclarationSimple(false);
- break;
- }
-
- //
- // Rule 129: declaration ::= declaration_specifiers <openscope-ast> init_declarator_list ;
- //
- case 129: {
- action.consumeDeclarationSimple(true);
- break;
- }
-
- //
- // Rule 130: declaration_specifiers ::= <openscope-ast> simple_declaration_specifiers
- //
- case 130: {
- action.consumeDeclarationSpecifiersSimple();
- break;
- }
-
- //
- // Rule 131: declaration_specifiers ::= <openscope-ast> struct_or_union_declaration_specifiers
- //
- case 131: {
- action.consumeDeclarationSpecifiersStructUnionEnum();
- break;
- }
-
- //
- // Rule 132: declaration_specifiers ::= <openscope-ast> elaborated_declaration_specifiers
- //
- case 132: {
- action.consumeDeclarationSpecifiersStructUnionEnum();
- break;
- }
-
- //
- // Rule 133: declaration_specifiers ::= <openscope-ast> enum_declaration_specifiers
- //
- case 133: {
- action.consumeDeclarationSpecifiersStructUnionEnum();
- break;
- }
-
- //
- // Rule 134: declaration_specifiers ::= <openscope-ast> typdef_name_declaration_specifiers
- //
- case 134: {
- action.consumeDeclarationSpecifiersTypedefName();
- break;
- }
-
- //
- // Rule 159: init_declarator ::= complete_declarator = initializer
- //
- case 159: {
- action.consumeDeclaratorWithInitializer(true);
- break;
- }
-
- //
- // Rule 161: storage_class_specifier ::= storage_class_specifier_token
- //
- case 161: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 167: simple_type_specifier ::= simple_type_specifier_token
- //
- case 167: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 180: type_name_specifier ::= identifier_token
- //
- case 180: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 181: struct_or_union_specifier ::= struct_or_union struct_or_union_specifier_hook { <openscope-ast> struct_declaration_list_opt }
- //
- case 181: {
- action.consumeTypeSpecifierComposite(false);
- break;
- }
-
- //
- // Rule 182: struct_or_union_specifier ::= struct_or_union struct_or_union_specifier_hook identifier_token struct_or_union_specifier_suffix_hook { <openscope-ast> struct_declaration_list_opt }
- //
- case 182: {
- action.consumeTypeSpecifierComposite(true);
- break;
- }
-
- //
- // Rule 187: elaborated_specifier ::= struct elaborated_specifier_hook identifier_token
- //
- case 187: {
- action.consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_struct);
- break;
- }
-
- //
- // Rule 188: elaborated_specifier ::= union elaborated_specifier_hook identifier_token
- //
- case 188: {
- action.consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_union);
- break;
- }
-
- //
- // Rule 189: elaborated_specifier ::= enum elaborated_specifier_hook identifier_token
- //
- case 189: {
- action.consumeTypeSpecifierElaborated(IASTElaboratedTypeSpecifier.k_enum);
- break;
- }
-
- //
- // Rule 195: struct_declaration ::= specifier_qualifier_list <openscope-ast> struct_declarator_list ;
- //
- case 195: {
- action.consumeStructDeclaration(true);
- break;
- }
-
- //
- // Rule 196: struct_declaration ::= specifier_qualifier_list ;
- //
- case 196: {
- action.consumeStructDeclaration(false);
- break;
- }
-
- //
- // Rule 197: struct_declaration ::= ERROR_TOKEN
- //
- case 197: {
- action.consumeDeclarationProblem();
- break;
- }
-
- //
- // Rule 203: struct_declarator ::= : constant_expression
- //
- case 203: {
- action.consumeBitField(false);
- break;
- }
-
- //
- // Rule 204: struct_declarator ::= declarator : constant_expression
- //
- case 204: {
- action.consumeBitField(true);
- break;
- }
-
- //
- // Rule 205: enum_specifier ::= enum enum_specifier_hook { <openscope-ast> enumerator_list_opt comma_opt }
- //
- case 205: {
- action.consumeTypeSpecifierEnumeration(false);
- break;
- }
-
- //
- // Rule 206: enum_specifier ::= enum enum_specifier_hook identifier_token { <openscope-ast> enumerator_list_opt comma_opt }
- //
- case 206: {
- action.consumeTypeSpecifierEnumeration(true);
- break;
- }
-
- //
- // Rule 212: enumerator ::= identifier_token
- //
- case 212: {
- action.consumeEnumerator(false);
- break;
- }
-
- //
- // Rule 213: enumerator ::= identifier_token = constant_expression
- //
- case 213: {
- action.consumeEnumerator(true);
- break;
- }
-
- //
- // Rule 214: type_qualifier ::= type_qualifier_token
- //
- case 214: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 218: function_specifier ::= inline
- //
- case 218: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 220: declarator ::= <openscope-ast> pointer_seq direct_declarator
- //
- case 220: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 225: basic_direct_declarator ::= declarator_id_name
- //
- case 225: {
- action.consumeDirectDeclaratorIdentifier();
- break;
- }
-
- //
- // Rule 226: basic_direct_declarator ::= ( declarator )
- //
- case 226: {
- action.consumeDirectDeclaratorBracketed();
- break;
- }
-
- //
- // Rule 227: declarator_id_name ::= identifier
- //
- case 227: {
- action.consumeIdentifierName();
- break;
- }
-
- //
- // Rule 228: array_direct_declarator ::= basic_direct_declarator array_modifier
- //
- case 228: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 229: array_direct_declarator ::= array_direct_declarator array_modifier
- //
- case 229: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 231: function_direct_declarator ::= basic_direct_declarator ( <openscope-ast> parameter_type_list )
- //
- case 231: {
- action.consumeDirectDeclaratorFunctionDeclarator(true, true);
- break;
- }
-
- //
- // Rule 232: function_direct_declarator ::= basic_direct_declarator ( )
- //
- case 232: {
- action.consumeDirectDeclaratorFunctionDeclarator(true, false);
- break;
- }
-
- //
- // Rule 234: function_declarator ::= <openscope-ast> pointer_seq function_direct_declarator
- //
- case 234: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 235: knr_direct_declarator ::= basic_direct_declarator ( <openscope-ast> identifier_list )
- //
- case 235: {
- action.consumeDirectDeclaratorFunctionDeclaratorKnR();
- break;
- }
-
- //
- // Rule 237: knr_function_declarator ::= <openscope-ast> pointer_seq knr_direct_declarator
- //
- case 237: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 238: identifier_list ::= identifier
- //
- case 238: {
- action.consumeIdentifierKnR();
- break;
- }
-
- //
- // Rule 239: identifier_list ::= identifier_list , identifier
- //
- case 239: {
- action.consumeIdentifierKnR();
- break;
- }
-
- //
- // Rule 240: array_modifier ::= [ ]
- //
- case 240: {
- action.consumeDirectDeclaratorArrayModifier(false);
- break;
- }
-
- //
- // Rule 241: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers ]
- //
- case 241: {
- action.consumeDirectDeclaratorModifiedArrayModifier(false, false, true, false);
- break;
- }
-
- //
- // Rule 242: array_modifier ::= [ assignment_expression ]
- //
- case 242: {
- action.consumeDirectDeclaratorArrayModifier(true);
- break;
- }
-
- //
- // Rule 243: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers assignment_expression ]
- //
- case 243: {
- action.consumeDirectDeclaratorModifiedArrayModifier(false, false, true, true);
- break;
- }
-
- //
- // Rule 244: array_modifier ::= [ static assignment_expression ]
- //
- case 244: {
- action.consumeDirectDeclaratorModifiedArrayModifier(true, false, false, true);
- break;
- }
-
- //
- // Rule 245: array_modifier ::= [ static <openscope-ast> array_modifier_type_qualifiers assignment_expression ]
- //
- case 245: {
- action.consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true);
- break;
- }
-
- //
- // Rule 246: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers static assignment_expression ]
- //
- case 246: {
- action.consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true);
- break;
- }
-
- //
- // Rule 247: array_modifier ::= [ * ]
- //
- case 247: {
- action.consumeDirectDeclaratorModifiedArrayModifier(false, true, false, false);
- break;
- }
-
- //
- // Rule 248: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers * ]
- //
- case 248: {
- action.consumeDirectDeclaratorModifiedArrayModifier(false, true, true, false);
- break;
- }
-
- //
- // Rule 250: pointer_seq ::= pointer_hook * pointer_hook
- //
- case 250: {
- action.consumePointer();
- break;
- }
-
- //
- // Rule 251: pointer_seq ::= pointer_seq pointer_hook * pointer_hook
- //
- case 251: {
- action.consumePointer();
- break;
- }
-
- //
- // Rule 252: pointer_seq ::= pointer_hook * pointer_hook <openscope-ast> type_qualifier_list
- //
- case 252: {
- action.consumePointerTypeQualifierList();
- break;
- }
-
- //
- // Rule 253: pointer_seq ::= pointer_seq pointer_hook * pointer_hook <openscope-ast> type_qualifier_list
- //
- case 253: {
- action.consumePointerTypeQualifierList();
- break;
- }
-
- //
- // Rule 257: parameter_type_list ::= parameter_list
- //
- case 257: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 258: parameter_type_list ::= parameter_list , ...
- //
- case 258: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 259: parameter_type_list ::= ...
- //
- case 259: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 262: parameter_declaration ::= declaration_specifiers complete_parameter_declarator
- //
- case 262: {
- action.consumeParameterDeclaration();
- break;
- }
-
- //
- // Rule 263: parameter_declaration ::= declaration_specifiers
- //
- case 263: {
- action.consumeParameterDeclarationWithoutDeclarator();
- break;
- }
-
- //
- // Rule 266: type_id ::= specifier_qualifier_list
- //
- case 266: {
- action.consumeTypeId(false);
- break;
- }
-
- //
- // Rule 267: type_id ::= specifier_qualifier_list abstract_declarator
- //
- case 267: {
- action.consumeTypeId(true);
- break;
- }
-
- //
- // Rule 269: abstract_declarator ::= <openscope-ast> pointer_seq
- //
- case 269: {
- action.consumeDeclaratorWithPointer(false);
- break;
- }
-
- //
- // Rule 270: abstract_declarator ::= <openscope-ast> pointer_seq direct_abstract_declarator
- //
- case 270: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 274: basic_direct_abstract_declarator ::= ( abstract_declarator )
- //
- case 274: {
- action.consumeDirectDeclaratorBracketed();
- break;
- }
-
- //
- // Rule 275: array_direct_abstract_declarator ::= array_modifier
- //
- case 275: {
- action.consumeDirectDeclaratorArrayDeclarator(false);
- break;
- }
-
- //
- // Rule 276: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier
- //
- case 276: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 277: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier
- //
- case 277: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 278: function_direct_abstract_declarator ::= ( )
- //
- case 278: {
- action.consumeDirectDeclaratorFunctionDeclarator(false, false);
- break;
- }
-
- //
- // Rule 279: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( )
- //
- case 279: {
- action.consumeDirectDeclaratorFunctionDeclarator(true, false);
- break;
- }
-
- //
- // Rule 280: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_type_list )
- //
- case 280: {
- action.consumeDirectDeclaratorFunctionDeclarator(false, true);
- break;
- }
-
- //
- // Rule 281: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( <openscope-ast> parameter_type_list )
- //
- case 281: {
- action.consumeDirectDeclaratorFunctionDeclarator(true, true);
- break;
- }
-
- //
- // Rule 282: initializer ::= assignment_expression
- //
- case 282: {
- action.consumeInitializer();
- break;
- }
-
- //
- // Rule 283: initializer ::= initializer_list
- //
- case 283: {
- action.consumeInitializer();
- break;
- }
-
- //
- // Rule 284: initializer_list ::= start_initializer_list { <openscope-ast> initializer_seq comma_opt } end_initializer_list
- //
- case 284: {
- action.consumeInitializerList();
- break;
- }
-
- //
- // Rule 285: initializer_list ::= { <openscope-ast> }
- //
- case 285: {
- action.consumeInitializerList();
- break;
- }
-
- //
- // Rule 286: start_initializer_list ::= $Empty
- //
- case 286: {
- action.initializerListStart();
- break;
- }
-
- //
- // Rule 287: end_initializer_list ::= $Empty
- //
- case 287: {
- action.initializerListEnd();
- break;
- }
-
- //
- // Rule 292: designated_initializer ::= <openscope-ast> designation = initializer
- //
- case 292: {
- action.consumeInitializerDesignated();
- break;
- }
-
- //
- // Rule 296: designator_base ::= [ constant_expression ]
- //
- case 296: {
- action.consumeDesignatorArray();
- break;
- }
-
- //
- // Rule 297: designator_base ::= . identifier_token
- //
- case 297: {
- action.consumeDesignatorField();
- break;
- }
-
- //
- // Rule 298: designator ::= [ constant_expression ]
- //
- case 298: {
- action.consumeDesignatorArray();
- break;
- }
-
- //
- // Rule 299: designator ::= . identifier_token
- //
- case 299: {
- action.consumeDesignatorField();
- break;
- }
-
- //
- // Rule 300: translation_unit ::= external_declaration_list
- //
- case 300: {
- action.consumeTranslationUnit();
- break;
- }
-
- //
- // Rule 301: translation_unit ::= $Empty
- //
- case 301: {
- action.consumeTranslationUnit();
- break;
- }
-
- //
- // Rule 306: external_declaration ::= ;
- //
- case 306: {
- action.consumeDeclarationEmpty();
- break;
- }
-
- //
- // Rule 307: external_declaration ::= ERROR_TOKEN
- //
- case 307: {
- action.consumeDeclarationProblem();
- break;
- }
-
- //
- // Rule 311: function_definition ::= <openscope-ast> function_declarator function_body
- //
- case 311: {
- action.consumeFunctionDefinition(false);
- break;
- }
-
- //
- // Rule 312: function_definition ::= declaration_specifiers <openscope-ast> knr_function_declarator <openscope-ast> declaration_list compound_statement
- //
- case 312: {
- action.consumeFunctionDefinitionKnR();
- break;
- }
-
- //
- // Rule 313: normal_function_definition ::= declaration_specifiers <openscope-ast> function_declarator function_body
- //
- case 313: {
- action.consumeFunctionDefinition(true);
- break;
- }
-
- //
- // Rule 314: function_body ::= { }
- //
- case 314: {
- action.consumeStatementCompoundStatement(false);
- break;
- }
-
- //
- // Rule 315: function_body ::= { <openscope-ast> block_item_list }
- //
- case 315: {
- action.consumeStatementCompoundStatement(true);
- break;
- }
-
- //
- // Rule 332: attribute_parameter ::= assignment_expression
- //
- case 332: {
- action.consumeIgnore();
- break;
- }
-
- //
- // Rule 343: extended_asm_declaration ::= asm volatile_opt ( extended_asm_param_seq ) ;
- //
- case 343: {
- gnuAction.consumeDeclarationASM();
- break;
- }
-
- //
- // Rule 354: unary_expression ::= __alignof__ unary_expression
- //
- case 354: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_alignOf);
- break;
- }
-
- //
- // Rule 355: unary_expression ::= __alignof__ ( type_id )
- //
- case 355: {
- action.consumeExpressionTypeId(IASTTypeIdExpression.op_alignof);
- break;
- }
-
- //
- // Rule 356: unary_expression ::= typeof unary_expression
- //
- case 356: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_typeof);
- break;
- }
-
- //
- // Rule 357: unary_expression ::= typeof ( type_id )
- //
- case 357: {
- action.consumeExpressionTypeId(IASTTypeIdExpression.op_typeof);
- break;
- }
-
- //
- // Rule 358: relational_expression ::= relational_expression >? shift_expression
- //
- case 358: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_max);
- break;
- }
-
- //
- // Rule 359: relational_expression ::= relational_expression <? shift_expression
- //
- case 359: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_min);
- break;
- }
-
- //
- // Rule 360: conditional_expression ::= logical_or_expression ? <empty> : assignment_expression
- //
- case 360: {
- action.consumeExpressionConditional();
- break;
- }
-
- //
- // Rule 361: primary_expression ::= ( compound_statement )
- //
- case 361: {
- gnuAction.consumeCompoundStatementExpression();
- break;
- }
-
- //
- // Rule 362: labeled_statement ::= case case_range_expression : statement
- //
- case 362: {
- action.consumeStatementCase();
- break;
- }
-
- //
- // Rule 363: case_range_expression ::= constant_expression ... constant_expression
- //
- case 363: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_assign);
- break;
- }
-
- //
- // Rule 367: typeof_type_specifier ::= typeof unary_expression
- //
- case 367: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_typeof);
- break;
- }
-
- //
- // Rule 368: typeof_type_specifier ::= typeof ( type_id )
- //
- case 368: {
- action.consumeExpressionTypeId(IASTTypeIdExpression.op_typeof);
- break;
- }
-
- //
- // Rule 369: declaration_specifiers ::= <openscope-ast> typeof_declaration_specifiers
- //
- case 369: {
- action.consumeDeclarationSpecifiersTypeof();
- break;
- }
-
- //
- // Rule 385: field_name_designator ::= identifier_token :
- //
- case 385: {
- action.consumeDesignatorFieldGCC();
- break;
- }
-
- //
- // Rule 386: array_range_designator ::= [ constant_expression ... constant_expression ]
- //
- case 386: {
- action.consumeDesignatorArrayRange();
- break;
- }
-
- //
- // Rule 387: designated_initializer ::= <openscope-ast> field_name_designator initializer
- //
- case 387: {
- action.consumeInitializerDesignated();
- break;
- }
-
- //
- // Rule 388: block_item ::= normal_function_definition
- //
- case 388: {
- action.consumeStatementDeclaration();
- break;
- }
-
- default:
- break;
- }
- return;
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gcc/GCCParserprs.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gcc/GCCParserprs.java
deleted file mode 100644
index f6e3cb81da3..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gcc/GCCParserprs.java
+++ /dev/null
@@ -1,1035 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2015 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.dom.lrparser.gcc;
-
-public class GCCParserprs implements lpg.lpgjavaruntime.ParseTable, GCCParsersym {
-
- public interface IsKeyword {
- public final static byte isKeyword[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static byte isKeyword[] = IsKeyword.isKeyword;
-
- public final boolean isKeyword(int index) {
- return isKeyword[index] != 0;
- }
-
- public interface BaseCheck {
- public final static short baseCheck[] = { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 4,
- 4, 3, 3, 2, 2, 4, 1, 0, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 1, 4, 1, 3, 3, 3, 1, 3, 3, 1, 3, 3, 1, 3, 3,
- 3, 3, 1, 3, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 5, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 2, 1, 0, 1,
- 3, 1, 1, 1, 1, 1, 1, 1, 1, 3, 4, 3, 2, 4, 1, 2, 1, 1, 1, 2, 5, 7, 5, 1, 0, 7, 2, 5, 9, 8, 3, 2, 2, 2, 3,
- 2, 4, 2, 2, 2, 2, 2, 1, 1, 1, 1, 2, 1, 2, 2, 2, 1, 2, 2, 1, 2, 2, 1, 2, 2, 1, 2, 2, 1, 3, 1, 3, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 8, 0, 0, 1, 1, 3, 3, 3, 0, 1, 0, 1, 2, 4, 2, 1,
- 1, 1, 3, 1, 1, 2, 3, 7, 8, 0, 1, 0, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 3, 1, 2, 2, 1, 5, 3,
- 1, 3, 5, 1, 3, 1, 3, 2, 4, 3, 5, 4, 6, 6, 3, 5, 1, 3, 4, 5, 6, 0, 1, 2, 1, 3, 1, 1, 3, 2, 1, 1, 1, 1, 2,
- 1, 2, 3, 1, 1, 1, 3, 1, 2, 2, 2, 3, 4, 5, 1, 1, 7, 3, 0, 0, 1, 1, 3, 3, 4, 1, 1, 2, 3, 2, 3, 2, 1, 0, 1,
- 2, 1, 1, 1, 1, 1, 2, 1, 3, 6, 4, 2, 4, 1, 1, 1, 1, 2, 6, 3, 1, 3, 1, 4, 0, 1, 1, 1, 3, 1, 0, 4, 3, 1, 2,
- 1, 3, 4, 4, 4, 6, 1, 0, 1, 3, 1, 3, 0, 1, 4, 5, 2, 4, 2, 4, 3, 3, 5, 3, 4, 3, 1, 2, 2, 2, 4, 2, 1, 1, 2,
- 2, 3, 2, 2, 3, 1, 1, 1, 1, 1, 1, 1, 2, 5, 3, 1, -105, 0, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -2, 0, 0, 0, 0, 0, 0, -351, -312, 0, 0, -41, -224, 0, 0, 0, -111, -260, 0, -7, 0, 0, 0, 0, 0, 0,
- -222, 0, -84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -32, 0, 0, 0, 0, -3, -35, -107, 0, -58, 0, 0,
- 0, -146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, 0, 0, -120, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -10, -11, -253, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -221, 0, 0, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0, 0, 0, 0, 0, 0, 0, 0,
- -4, 0, 0, 0, -360, 0, 0, 0, 0, 0, 0, 0, -42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -12, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -109, -112, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, -80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -314, 0, 0,
- 0, -33, 0, -13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -172, 0, -295, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -24, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, 0, -37, -123, 0, 0, 0, 0, 0, 0, 0, 0, -36, -108, 0, -345, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -38, -274, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -257, 0, -81, 0, 0, 0, 0, 0, 0, 0, 0, 0, -45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, -63, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, 0, -9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -245, 0, 0, -40,
- -30, -347, 0, 0, 0, 0, 0, 0, 0, 0, 0, -47, 0, 0, 0, 0, 0, 0, 0, -43, 0, 0, 0, 0, 0, 0, -44, -205, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -54, -361, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0,
- 0, 0, -239, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -310, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, -241, 0, 0, 0, 0, 0, 0, 0, 0, 0, -31, -71,
- 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -50, 0, 0, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, -106, -29, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, -151, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, -85, 0,
- 0, 0, 0, 0, 0, -182, 0, -86, 0, 0, 0, 0, 0, 0, 0, -90, 0, 0, -141, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0,
- -92, -189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, 0, 0, 0, 0, 0, 0, -258, -28, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -333, 0, -122, 0, 0, 0, 0, 0, 0, 0, -143, 0, -87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -8, -124, 0, 0, -265, 0, 0, -117, -125, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, -126, -89, 0, 0, -296, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -59, 0, -183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0,
- 0, 0, 0, 0, -217, 0, -127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, -75, -256, 0, 0,
- 0, 0, 0, -129, 0, 0, -188, 0, 0, 0, 0, 0, 0, -130, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -131, -101,
- 0, 0, 0, 0, -132, 0, 0, 0, 0, 0, 0, -91, 0, 0, 0, -192, 0, 0, 0, 0, 0, 0, 0, 0, 0, -133, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, -153, -246, 0, 0, 0, 0, 0, 0, -136, 0,
- 0, 0, 0, 0, 0, 0, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -259, -137, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0,
- -149, -195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -175, 0, -261, 0, 0, 0, 0, -176, 0, 0, 0, 0, 0, 0, 0, -196, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -343, -227, 0, 0, 0, 0, -103, 0, 0, 0, 0, 0, 0, -138, -197, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -348,
- 0, 0, 0, 0, 0, -144, 0, 0, 0, 0, 0, 0, -228, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, -135, -160, 0, 0, 0, 0, 0,
- 0, -154, 0, 0, 0, 0, 0, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -163, -297, 0, 0, 0, 0, 0, -156, 0, 0,
- 0, 0, 0, 0, -326, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -225, 0, 0, 0, 0, 0, 0, -164, 0, 0, 0, 0, 0, 0, 0,
- -266, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -244, -145, 0, 0, 0, 0, 0, -167, 0, 0, 0, 0, 0, 0, -249, -271, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -252, -334, 0, 0, 0, 0, 0, -168, 0, 0, 0, 0, 0, 0, -335, -272, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -340, -353, -309, 0, 0, 0, 0, -169, 0, 0, 0, 0, 0, 0, 0, -303, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -273, 0, 0, 0, 0, 0, 0, -170, 0, 0, 0, 0, 0, 0, -311, 0, -324, 0, 0, 0, 0, 0, 0, 0, 0, 0, -367, 0, 0, 0,
- 0, 0, -171, 0, 0, 0, 0, 0, 0, -322, 0, -320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -181, 0, 0, 0,
- 0, 0, 0, 0, -323, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -321, -147, 0, 0, 0, 0, -185, 0, 0, 0, 0, 0, 0, 0,
- -336, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -363, 0, 0, 0, 0, 0, 0, -223, 0, 0, 0, 0, 0, 0, -349, 0, -148, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -150, -152, 0, 0, 0, 0, -240, 0, 0, 0, 0, 0, 0, -357, 0, -155, 0, 0, 0, 0, 0, 0, 0,
- -344, 0, 0, -157, 0, 0, 0, 0, -242, 0, 0, 0, 0, 0, 0, -364, 0, -166, 0, 0, 0, 0, 0, 0, 0, -177, 0, 0,
- -178, 0, 0, 0, 0, -243, 0, 0, 0, 0, 0, 0, -370, 0, -184, 0, 0, 0, 0, 0, 0, 0, -226, 0, 0, 0, 0, 0, 0, 0,
- -231, 0, 0, 0, 0, 0, 0, -83, 0, 0, -67, 0, -263, 0, 0, 0, 0, 0, 0, 0, -211, 0, -235, 0, 0, 0, 0, 0, 0,
- 0, 0, -236, 0, 0, 0, 0, 0, 0, -250, -362, -325, 0, -251, -267, 0, 0, 0, 0, 0, 0, 0, 0, -275, -139, 0, 0,
- -220, 0, -276, 0, 0, 0, 0, 0, 0, 0, -371, 0, 0, -277, 0, 0, 0, 0, -278, 0, 0, 0, 0, 0, -270, -279, 0, 0,
- 0, -280, -281, -313, 0, -282, -283, 0, 0, 0, 0, 0, 0, 0, 0, -180, 0, 0, -284, -341, -60, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -23, -374, 0, 0, 0, -22, -285, 0, 0, 0, -286, -298, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -238, 0, 0, -300, 0, -301, 0, 0, 0, -287, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -306, 0, 0, 0, 0, 0, 0, -288, 0, 0, 0, -269, 0, 0, 0, 0, 0, -317, 0, 0, 0, 0, 0, -289, -61, 0, 0, 0, 0,
- 0, 0, 0, -316, -290, 0, 0, 0, 0, -291, -292, 0, 0, 0, 0, 0, 0, -115, -319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -293, 0, -134, -294, 0, 0, 0, 0, 0, 0, 0, 0, -299, 0, 0, -337, 0, 0, 0, 0, 0, 0, 0, 0, -186, -346, 0,
- -247, -342, 0, 0, 0, -354, 0, 0, 0, 0, 0, -350, -365, 0, 0, 0, 0, -355, -159, 0, 0, 0, 0, 0, 0, -308, 0,
- 0, -373, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -161, 0, 0, 0, 0, 0, 0, 0, 0,
- -165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -264, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -356, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -187, 0, 0, 0, 0, 0, 0, 0,
- 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -248, 0, 0, 0, 0, 0,
- -93, 0, 0, 0, 0, 0, 0, -338, 0, 0, 0, 0, 0, 0, -104, 0, 0, 0, 0, 0, 0, 0, -34, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 0, 0, -82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -332, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -234, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -237, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -302, 0, 0, -48, 0, 0, 0, -304, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -315, -230, 0, 0, 0, -328,
- 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -330, 0, 0, 0, 0, 0, 0, -331, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -368, 0, 0, 0, 0, 0, 0, -372, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -375, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -262, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -207, 0, -14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -15, 0, 0, 0, 0, 0, 0, 0, -16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -19, 0, 0, 0, 0, 0, 0, 0, -21, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -140, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -215, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -232, -174, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, 0, 0, -53, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -6, 0, 0, -208, 0, -20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -96, 0,
- 0, 0, 0, 0, -39, 0, 0, -307, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -233, 0, 0, 0, 0, 0, 0, 0, 0, -55, -98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0,
- -173, 0, 0, -327, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -268, -352, 0, 0, 0, 0, 0, 0, -255, -204,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -305, 0, 0, 0, -17, 0, 0,
- 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -18, -366, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -88, 0, 0, -329, -162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -179, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, -339, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -358, 0, 0, 0, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -158, 0, 0, 0, -359, 0, 0, 0, -369, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static short baseCheck[] = BaseCheck.baseCheck;
-
- @Override
- public final int baseCheck(int index) {
- return baseCheck[index];
- }
-
- public final static short rhs[] = baseCheck;
-
- @Override
- public final int rhs(int index) {
- return rhs[index];
- }
-
- public interface BaseAction {
- public final static char baseAction[] = { 121, 2, 122, 49, 49, 18, 18, 53, 53, 26, 26, 1, 1, 3, 3, 3, 3, 4, 4,
- 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 88, 88, 103, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9, 14, 14,
- 14, 15, 15, 15, 16, 16, 16, 16, 16, 17, 17, 17, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 28, 28,
- 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 38, 31, 25, 123, 123, 104, 104, 62, 39, 39, 39, 39, 39, 39, 39,
- 40, 40, 40, 30, 30, 105, 105, 77, 77, 41, 41, 42, 42, 42, 71, 71, 43, 43, 43, 43, 43, 44, 44, 44, 44,
- 44, 60, 60, 29, 29, 29, 29, 29, 54, 54, 54, 95, 95, 90, 90, 90, 90, 91, 91, 91, 92, 92, 92, 93, 93, 93,
- 94, 94, 94, 89, 89, 82, 82, 83, 55, 57, 57, 57, 57, 57, 72, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
- 74, 81, 78, 78, 124, 125, 84, 84, 79, 79, 79, 96, 106, 106, 107, 107, 97, 97, 97, 58, 126, 126, 108, 98,
- 98, 98, 80, 80, 127, 109, 109, 110, 110, 99, 99, 32, 33, 33, 33, 56, 52, 52, 45, 45, 45, 45, 34, 34, 35,
- 46, 46, 47, 36, 36, 100, 100, 48, 129, 129, 128, 128, 59, 59, 59, 59, 59, 59, 59, 59, 59, 111, 63, 63,
- 63, 63, 37, 85, 85, 75, 75, 75, 76, 76, 65, 65, 130, 130, 64, 64, 86, 86, 86, 66, 66, 66, 67, 68, 68,
- 68, 69, 69, 69, 69, 73, 73, 50, 50, 51, 132, 131, 131, 131, 131, 112, 133, 134, 134, 135, 135, 136, 136,
- 121, 121, 137, 137, 113, 113, 113, 113, 138, 138, 114, 114, 114, 70, 115, 115, 10, 10, 10, 27, 27, 11,
- 11, 139, 139, 116, 116, 116, 117, 117, 140, 140, 118, 118, 12, 12, 141, 141, 119, 119, 119, 119, 13, 61,
- 142, 142, 143, 143, 120, 120, 120, 101, 101, 101, 7, 7, 7, 7, 16, 16, 24, 4, 40, 144, 102, 102, 102, 87,
- 87, 29, 60, 54, 83, 83, 83, 108, 108, 108, 127, 124, 125, 37, 96, 135, 135, 145, 146, 112, 77, 329,
- 1714, 247, 17, 21, 18, 898, 1031, 45, 1055, 371, 316, 317, 318, 1074, 1062, 1134, 1118, 403, 1155, 1145,
- 1175, 1169, 1196, 75, 2102, 961, 1782, 92, 734, 2014, 1751, 136, 214, 115, 1679, 20, 612, 17, 21, 18,
- 898, 43, 44, 1871, 20, 755, 17, 21, 18, 898, 43, 45, 1055, 138, 135, 137, 161, 1074, 1062, 1134, 1118,
- 1220, 1155, 1145, 1175, 1972, 37, 339, 961, 31, 1971, 140, 2293, 167, 730, 1664, 967, 144, 147, 150,
- 153, 314, 285, 2654, 28, 1230, 364, 129, 232, 499, 2636, 2662, 2688, 2696, 1072, 1456, 180, 1865, 823,
- 87, 111, 2702, 349, 1711, 96, 371, 316, 317, 318, 651, 712, 1542, 1263, 1744, 95, 97, 98, 99, 100, 371,
- 316, 317, 318, 1163, 211, 967, 229, 136, 214, 656, 225, 233, 1871, 20, 941, 17, 21, 18, 898, 43, 40,
- 136, 214, 255, 214, 1521, 180, 242, 88, 138, 135, 137, 161, 347, 1953, 371, 316, 317, 318, 1830, 295,
- 323, 1678, 143, 135, 137, 161, 140, 419, 167, 1054, 25, 169, 144, 147, 150, 153, 136, 214, 2654, 1440,
- 142, 364, 167, 1386, 499, 2636, 2662, 2688, 2696, 1072, 256, 214, 800, 128, 754, 617, 2702, 322, 138,
- 135, 137, 161, 2112, 635, 967, 1871, 20, 426, 17, 21, 18, 898, 43, 45, 1055, 1971, 140, 1974, 167, 1074,
- 1062, 1825, 144, 147, 150, 153, 1926, 90, 2654, 343, 1288, 364, 851, 232, 499, 2636, 2662, 2688, 2696,
- 1072, 319, 316, 317, 318, 1952, 1676, 2702, 1703, 20, 1784, 17, 21, 18, 898, 1031, 45, 1055, 3068, 256,
- 214, 1013, 1074, 1062, 1134, 1118, 1061, 1155, 1145, 1175, 1169, 1196, 75, 443, 1610, 20, 282, 17, 21,
- 18, 898, 43, 36, 927, 961, 31, 1586, 20, 1784, 17, 21, 18, 898, 1031, 45, 1055, 28, 1230, 283, 1230,
- 1074, 1062, 1134, 1118, 284, 1155, 1145, 1175, 1169, 1196, 75, 364, 1610, 20, 282, 17, 21, 18, 898, 43,
- 36, 288, 2113, 247, 1643, 20, 1592, 17, 21, 18, 898, 1031, 45, 1055, 500, 3114, 283, 1230, 1074, 1062,
- 1134, 1118, 228, 1155, 1145, 1175, 1169, 1196, 75, 1542, 1871, 20, 282, 17, 21, 18, 898, 43, 39, 290,
- 289, 248, 1871, 20, 499, 17, 21, 18, 898, 43, 45, 1055, 28, 1230, 283, 1230, 1074, 1062, 1829, 1551,
- 2014, 255, 214, 1337, 499, 1727, 20, 24, 17, 21, 18, 898, 1031, 45, 1055, 961, 188, 159, 291, 1074,
- 1062, 1134, 1118, 1500, 1155, 1145, 1175, 1169, 1196, 75, 181, 1871, 20, 282, 17, 21, 18, 898, 43, 45,
- 1055, 335, 396, 1751, 20, 1796, 17, 21, 18, 898, 1031, 45, 1055, 181, 549, 283, 1230, 1074, 1062, 1134,
- 1118, 1082, 1155, 1145, 1175, 1169, 1196, 75, 755, 1871, 20, 282, 17, 21, 18, 898, 43, 38, 387, 226,
- 993, 435, 20, 739, 17, 21, 18, 898, 1031, 45, 1055, 961, 187, 283, 1230, 1074, 1062, 1134, 1118, 311,
- 1155, 1145, 1175, 1169, 1196, 75, 2014, 1871, 20, 488, 17, 21, 18, 898, 43, 37, 292, 1967, 20, 313, 17,
- 21, 18, 898, 1031, 45, 1055, 49, 2036, 1138, 240, 1074, 1062, 1134, 1118, 1089, 1155, 1145, 1175, 1169,
- 1196, 75, 336, 1289, 977, 332, 1919, 20, 2217, 17, 21, 18, 898, 1031, 45, 1055, 734, 115, 1843, 205,
- 1074, 1062, 1134, 1118, 960, 1155, 1145, 1175, 1169, 1196, 75, 363, 1871, 20, 1148, 17, 21, 18, 898, 43,
- 45, 1055, 961, 189, 324, 1678, 1074, 1062, 1134, 1118, 1500, 1155, 1145, 1175, 1169, 1196, 94, 1871, 20,
- 1149, 17, 21, 18, 898, 1031, 45, 1055, 1522, 334, 105, 635, 1074, 1062, 1134, 1118, 1614, 1155, 1145,
- 1175, 1169, 1196, 75, 418, 533, 20, 92, 17, 21, 18, 898, 1031, 45, 1055, 594, 1775, 330, 125, 1074,
- 1062, 1134, 1118, 1339, 1155, 1145, 1175, 1169, 1196, 75, 2131, 1775, 20, 1535, 17, 21, 18, 898, 367,
- 1914, 941, 1967, 20, 426, 17, 21, 18, 898, 1031, 45, 1055, 961, 1367, 1082, 241, 1074, 1062, 1134, 1118,
- 346, 1155, 1145, 1175, 1169, 1196, 75, 413, 1779, 2879, 332, 1971, 342, 2452, 419, 36, 1996, 319, 316,
- 317, 318, 28, 1230, 985, 1711, 1521, 180, 868, 49, 279, 2017, 920, 337, 967, 2279, 371, 316, 317, 318,
- 1766, 128, 673, 225, 773, 1799, 20, 823, 17, 21, 18, 898, 356, 219, 457, 222, 701, 88, 136, 214, 621,
- 1871, 20, 116, 17, 21, 18, 898, 43, 36, 1871, 20, 416, 17, 21, 18, 898, 43, 45, 1055, 139, 135, 137,
- 161, 1074, 1062, 1134, 1118, 798, 1897, 156, 663, 537, 916, 535, 535, 22, 451, 141, 325, 167, 331, 823,
- 1419, 145, 148, 151, 154, 774, 1478, 2654, 1871, 20, 365, 17, 21, 18, 898, 1031, 45, 1055, 1061, 2092,
- 355, 1082, 1074, 1062, 1134, 1118, 1116, 1155, 1145, 1175, 1169, 1196, 75, 49, 897, 2083, 86, 1871, 20,
- 361, 17, 21, 18, 898, 1031, 45, 1055, 1037, 244, 308, 370, 1074, 1062, 1134, 1118, 261, 1155, 1145,
- 1175, 1169, 1196, 75, 635, 1871, 20, 85, 17, 21, 18, 898, 1031, 45, 1055, 419, 419, 1888, 2024, 1074,
- 1062, 1134, 1118, 1524, 1155, 1145, 1175, 1169, 1196, 75, 124, 1871, 20, 84, 17, 21, 18, 898, 1031, 45,
- 1055, 128, 196, 2149, 2035, 1074, 1062, 1134, 1118, 1082, 1155, 1145, 1175, 1169, 1196, 75, 635, 1871,
- 20, 83, 17, 21, 18, 898, 1031, 45, 1055, 636, 804, 1960, 2152, 1074, 1062, 1134, 1118, 1992, 1155, 1145,
- 1175, 1169, 1196, 75, 112, 1871, 20, 82, 17, 21, 18, 898, 1031, 45, 1055, 28, 1230, 601, 635, 1074,
- 1062, 1134, 1118, 1082, 1155, 1145, 1175, 1169, 1196, 75, 1547, 1871, 20, 81, 17, 21, 18, 898, 1031, 45,
- 1055, 19, 28, 1230, 127, 1074, 1062, 1134, 1118, 276, 1155, 1145, 1175, 1169, 1196, 75, 277, 1871, 20,
- 80, 17, 21, 18, 898, 1031, 45, 1055, 28, 1230, 961, 297, 1074, 1062, 1134, 1118, 1251, 1155, 1145, 1175,
- 1169, 1196, 75, 635, 1871, 20, 79, 17, 21, 18, 898, 1031, 45, 1055, 49, 49, 419, 2251, 1074, 1062, 1134,
- 1118, 2050, 1155, 1145, 1175, 1169, 1196, 75, 123, 1871, 20, 78, 17, 21, 18, 898, 1031, 45, 1055, 1669,
- 1782, 635, 501, 1074, 1062, 1134, 1118, 1112, 1155, 1145, 1175, 1169, 1196, 75, 635, 1871, 20, 77, 17,
- 21, 18, 898, 1031, 45, 1055, 339, 49, 2975, 638, 1074, 1062, 1134, 1118, 1082, 1155, 1145, 1175, 1169,
- 1196, 75, 3025, 1871, 20, 76, 17, 21, 18, 898, 1031, 45, 1055, 231, 49, 1271, 2882, 1074, 1062, 1134,
- 1118, 1082, 1155, 1145, 1175, 1169, 1196, 75, 1300, 1871, 20, 93, 17, 21, 18, 898, 1031, 45, 1055, 712,
- 1878, 2014, 1831, 1074, 1062, 1134, 1118, 1082, 1155, 1145, 1175, 1169, 1196, 75, 1364, 1871, 20, 1576,
- 17, 21, 18, 898, 1031, 45, 1055, 1018, 2014, 635, 1300, 1074, 1062, 1134, 1118, 1082, 1155, 1145, 1175,
- 1169, 1196, 75, 195, 1871, 20, 1612, 17, 21, 18, 898, 43, 45, 1055, 1250, 823, 3090, 182, 1074, 1062,
- 1134, 1118, 1082, 1155, 1145, 1175, 1169, 1196, 94, 1871, 20, 1682, 17, 21, 18, 898, 43, 45, 1055, 876,
- 424, 635, 206, 1074, 1062, 1134, 1118, 1082, 1155, 1145, 1175, 1169, 1196, 94, 1871, 20, 823, 17, 21,
- 18, 898, 1031, 45, 1055, 243, 1277, 363, 118, 1074, 1062, 1134, 1118, 1082, 1155, 1145, 1175, 1169,
- 1196, 75, 1509, 1871, 20, 360, 17, 21, 18, 898, 1031, 45, 1055, 23, 213, 823, 1415, 1074, 1062, 1134,
- 1118, 1082, 1155, 1145, 1175, 1169, 1196, 75, 245, 1871, 20, 74, 17, 21, 18, 898, 43, 45, 1055, 352,
- 961, 299, 1686, 1074, 1062, 1134, 1118, 2091, 1155, 1145, 1175, 1169, 1196, 94, 1871, 20, 1543, 17, 21,
- 18, 898, 43, 45, 1055, 246, 235, 677, 1058, 1074, 1062, 1134, 1118, 1082, 1155, 1145, 1175, 1169, 1196,
- 94, 1871, 20, 1646, 17, 21, 18, 898, 43, 45, 1055, 2014, 321, 203, 1673, 1074, 1062, 1134, 1118, 1082,
- 1155, 1145, 1175, 1169, 1196, 94, 1871, 20, 848, 17, 21, 18, 898, 43, 45, 1055, 1128, 341, 1783, 789,
- 1074, 1062, 1134, 1118, 1082, 1155, 1145, 1175, 1169, 1196, 94, 1871, 20, 1243, 17, 21, 18, 898, 43, 45,
- 1055, 67, 340, 204, 562, 1074, 1062, 1134, 1118, 569, 1155, 1145, 1175, 1169, 1196, 94, 199, 1664, 389,
- 1871, 20, 1082, 17, 21, 18, 898, 43, 35, 1810, 1871, 20, 1504, 17, 21, 18, 898, 43, 45, 1055, 274, 1078,
- 87, 111, 1074, 1830, 1222, 96, 1639, 1172, 2070, 2010, 1396, 951, 1861, 1263, 109, 95, 97, 98, 99, 100,
- 1030, 1, 1664, 389, 1871, 20, 1192, 17, 21, 18, 898, 43, 45, 1055, 823, 110, 370, 1827, 1074, 1062,
- 1134, 1118, 1875, 1155, 1947, 388, 87, 111, 1082, 960, 1222, 96, 107, 1122, 168, 1542, 296, 299, 1527,
- 1263, 109, 95, 97, 98, 99, 100, 353, 264, 1664, 389, 1668, 2095, 1823, 20, 315, 17, 21, 18, 898, 354,
- 1797, 110, 370, 298, 685, 823, 2883, 255, 214, 1240, 2090, 388, 87, 111, 2097, 1082, 1222, 96, 108, 319,
- 316, 317, 318, 256, 214, 1263, 109, 95, 97, 98, 99, 100, 413, 2482, 3060, 1082, 2922, 1082, 673, 225,
- 230, 1568, 319, 316, 317, 318, 812, 110, 370, 219, 457, 222, 224, 2529, 386, 2536, 831, 388, 2096, 2279,
- 1847, 1997, 414, 294, 107, 2101, 673, 225, 773, 133, 1664, 389, 2834, 775, 384, 1082, 326, 219, 457,
- 222, 224, 1923, 1847, 20, 621, 17, 21, 18, 898, 41, 1634, 2054, 1925, 280, 87, 111, 2109, 2124, 1222,
- 96, 319, 316, 317, 318, 784, 1082, 535, 1263, 109, 95, 97, 98, 99, 100, 156, 663, 2111, 2922, 1393,
- 1385, 535, 451, 106, 1302, 673, 225, 230, 992, 1710, 110, 370, 2135, 774, 1061, 312, 220, 457, 222, 224,
- 388, 413, 1758, 2883, 940, 1082, 535, 108, 2092, 1082, 275, 319, 316, 317, 318, 2154, 1082, 270, 1282,
- 1275, 273, 662, 778, 281, 535, 309, 370, 1561, 2279, 1670, 3392, 2883, 1082, 198, 2563, 673, 225, 230,
- 3392, 319, 316, 317, 318, 3392, 260, 3392, 219, 457, 222, 224, 2583, 198, 3392, 621, 1438, 1703, 2264,
- 3392, 413, 3392, 2883, 3392, 1223, 673, 225, 230, 3392, 3392, 319, 316, 317, 318, 3392, 3392, 219, 457,
- 222, 224, 3392, 3392, 1223, 1987, 3392, 156, 663, 2279, 3392, 3392, 1477, 1782, 451, 3392, 673, 225,
- 230, 3392, 3392, 2010, 3392, 3032, 3392, 194, 3392, 219, 457, 222, 224, 1644, 1871, 20, 621, 17, 21, 18,
- 898, 43, 45, 1055, 3392, 193, 3392, 3392, 1074, 1062, 1134, 1921, 3392, 3146, 770, 1999, 3392, 673, 225,
- 230, 1436, 3392, 2477, 199, 3392, 3392, 157, 663, 219, 457, 222, 224, 3392, 3392, 1996, 264, 535, 3392,
- 278, 3392, 3392, 1497, 275, 3392, 319, 316, 317, 318, 3392, 268, 1282, 1275, 273, 3392, 673, 225, 230,
- 3392, 3392, 3392, 3392, 2922, 3392, 2092, 1336, 219, 457, 222, 224, 265, 3392, 812, 831, 210, 320, 316,
- 317, 318, 3392, 275, 2055, 3392, 2883, 1471, 1786, 3392, 268, 1282, 1275, 273, 319, 316, 317, 318, 3392,
- 3392, 3392, 2618, 3392, 260, 3392, 3392, 3392, 3392, 3392, 3392, 1756, 2264, 1542, 1931, 1703, 3392,
- 3392, 262, 673, 225, 230, 1895, 20, 3392, 17, 21, 18, 898, 34, 219, 457, 222, 224, 3392, 1871, 20, 1987,
- 17, 21, 18, 898, 43, 45, 1055, 255, 214, 1477, 1782, 1074, 1062, 1134, 1118, 2080, 1155, 1145, 1937,
- 3392, 3392, 3392, 1670, 3392, 2883, 319, 316, 317, 318, 398, 3392, 2972, 320, 316, 317, 318, 3392, 413,
- 3392, 2883, 3392, 3392, 2922, 3392, 3392, 3146, 3392, 320, 316, 317, 318, 657, 1405, 535, 3392, 200,
- 673, 225, 230, 3392, 549, 3392, 49, 3392, 967, 758, 3392, 219, 457, 222, 224, 673, 225, 230, 1987, 319,
- 316, 317, 318, 3392, 2092, 3392, 219, 457, 222, 224, 1472, 88, 275, 3140, 3392, 3392, 2922, 1093, 758,
- 268, 1282, 1275, 273, 673, 225, 1315, 992, 3392, 319, 316, 317, 318, 210, 3392, 220, 457, 222, 1251,
- 3392, 267, 260, 3392, 1511, 1786, 3164, 2922, 758, 1459, 3392, 389, 1438, 1703, 673, 225, 230, 992, 319,
- 316, 317, 318, 844, 1664, 967, 220, 457, 222, 224, 3392, 3392, 3392, 3392, 3392, 88, 2922, 3392, 3392,
- 198, 1170, 1308, 3392, 673, 225, 1315, 992, 3392, 87, 111, 892, 1664, 967, 96, 220, 457, 222, 224, 3392,
- 3392, 3392, 1263, 104, 95, 97, 98, 99, 100, 2271, 3392, 1006, 1664, 967, 1384, 1256, 87, 111, 1054,
- 1664, 967, 96, 3392, 3392, 320, 316, 317, 318, 3392, 1263, 102, 95, 97, 98, 99, 100, 87, 111, 657, 3392,
- 535, 96, 3392, 87, 111, 3392, 3392, 3392, 96, 1263, 362, 95, 97, 98, 99, 100, 1263, 103, 95, 97, 98, 99,
- 100, 2060, 49, 535, 967, 2092, 1168, 1664, 967, 3392, 3392, 319, 316, 317, 318, 1871, 20, 3392, 17, 21,
- 18, 898, 43, 45, 1055, 3392, 3392, 88, 2922, 1802, 2092, 87, 111, 1871, 3392, 3392, 96, 3392, 812, 3392,
- 3392, 260, 3392, 3392, 1263, 120, 95, 97, 98, 99, 100, 2000, 1703, 1216, 1664, 967, 3392, 3392, 3392,
- 3392, 1264, 1664, 967, 3392, 1946, 3392, 260, 1871, 20, 3392, 17, 21, 18, 898, 43, 48, 1931, 1703, 87,
- 111, 1312, 1664, 967, 96, 3392, 87, 111, 1360, 1664, 967, 96, 1263, 115, 95, 97, 98, 99, 100, 1263,
- 2016, 95, 97, 98, 99, 100, 87, 111, 1408, 1664, 967, 96, 3392, 87, 111, 590, 3392, 485, 96, 1263, 114,
- 95, 97, 98, 99, 100, 1263, 122, 95, 97, 98, 99, 100, 87, 111, 3392, 3392, 3392, 96, 3392, 3392, 306,
- 3392, 369, 558, 3392, 1263, 121, 95, 97, 98, 99, 100, 319, 316, 317, 318, 3392, 3392, 1871, 20, 1113,
- 17, 21, 18, 898, 43, 45, 1813, 3392, 2922, 371, 316, 317, 318, 305, 370, 3392, 3392, 656, 992, 3392,
- 3392, 3392, 3392, 310, 3392, 1466, 3392, 319, 316, 317, 318, 136, 214, 3392, 3392, 371, 316, 317, 318,
- 3392, 275, 3392, 3392, 3392, 2173, 3392, 3392, 270, 1282, 1275, 273, 1531, 3392, 146, 135, 137, 161,
- 136, 214, 1991, 3392, 371, 316, 317, 318, 2001, 302, 304, 3392, 371, 316, 317, 318, 3392, 407, 371, 316,
- 317, 318, 149, 135, 137, 161, 136, 214, 3392, 419, 3392, 967, 1079, 2848, 136, 214, 3392, 3392, 3392,
- 3392, 136, 214, 320, 316, 317, 318, 3392, 3392, 152, 135, 137, 161, 3392, 3392, 88, 126, 155, 135, 137,
- 161, 1303, 3392, 366, 135, 137, 161, 1871, 20, 3392, 17, 21, 18, 898, 43, 45, 1055, 3392, 3392, 3392,
- 3392, 1074, 1833, 1871, 20, 724, 17, 21, 18, 898, 43, 45, 1055, 3392, 3392, 3392, 3392, 1074, 1834,
- 1871, 20, 3392, 17, 21, 18, 898, 43, 45, 1055, 3392, 3392, 3392, 3392, 1074, 1846, 1871, 20, 3392, 17,
- 21, 18, 898, 43, 45, 1055, 49, 1432, 967, 2143, 1074, 1866, 1871, 20, 3392, 17, 21, 18, 898, 43, 45,
- 1055, 758, 3392, 3392, 278, 1074, 1870, 3392, 3392, 3392, 88, 319, 316, 317, 318, 665, 1891, 485, 1871,
- 20, 917, 17, 21, 18, 898, 43, 45, 1818, 2922, 3392, 319, 316, 317, 318, 3392, 656, 225, 234, 992, 3392,
- 1459, 306, 389, 3392, 558, 275, 1240, 2726, 3392, 1102, 1240, 535, 268, 1282, 1275, 273, 319, 316, 317,
- 318, 319, 316, 317, 318, 3392, 88, 1459, 3392, 389, 198, 1170, 1308, 1756, 2922, 3392, 305, 370, 2922,
- 198, 3392, 49, 3392, 967, 812, 3392, 310, 3392, 812, 3392, 1533, 1459, 88, 389, 3392, 3392, 198, 1170,
- 1308, 2271, 320, 316, 317, 318, 3392, 1464, 88, 1459, 1223, 389, 2307, 3392, 1893, 3392, 2336, 3392, 88,
- 952, 3392, 3392, 198, 1170, 1308, 3392, 3392, 2271, 3392, 3392, 3392, 303, 304, 1490, 88, 1459, 3392,
- 389, 198, 1170, 1308, 3392, 1240, 3392, 3392, 920, 3392, 967, 3392, 193, 913, 2271, 319, 316, 317, 318,
- 3392, 1516, 1484, 1999, 88, 1316, 3392, 389, 198, 1170, 1308, 2271, 3392, 2922, 88, 3392, 3392, 1542,
- 3392, 3392, 116, 1871, 20, 812, 17, 21, 18, 898, 43, 47, 88, 3392, 3392, 3392, 1061, 3392, 116, 2271,
- 1459, 920, 389, 967, 3392, 1567, 3392, 3392, 1240, 1871, 20, 2618, 17, 21, 18, 898, 43, 46, 319, 316,
- 317, 318, 1510, 3392, 3392, 88, 88, 1078, 370, 198, 1170, 1308, 116, 3392, 3392, 2922, 1240, 3392, 1406,
- 3392, 423, 3392, 3392, 3392, 2040, 812, 319, 316, 317, 318, 319, 316, 317, 318, 320, 316, 317, 318,
- 2271, 3392, 3392, 3392, 3392, 2922, 1961, 524, 920, 2428, 967, 3392, 3392, 1946, 2011, 812, 3392, 319,
- 316, 317, 318, 1895, 20, 3392, 17, 21, 18, 898, 33, 3392, 3392, 3392, 2074, 88, 2428, 49, 2080, 967,
- 3392, 116, 3392, 2364, 319, 316, 317, 318, 319, 316, 317, 318, 1943, 20, 3392, 17, 21, 18, 898, 1787,
- 2069, 3182, 88, 3392, 3392, 2922, 2110, 3392, 2004, 3392, 319, 316, 317, 318, 3392, 1483, 319, 316, 317,
- 318, 785, 2027, 3392, 3392, 2126, 3392, 3392, 3168, 2085, 3392, 3392, 3392, 3392, 3186, 319, 316, 317,
- 318, 320, 316, 317, 318, 2100, 3392, 3392, 861, 2138, 3392, 3392, 3392, 2143, 3190, 320, 316, 317, 318,
- 320, 316, 317, 318, 320, 316, 317, 318, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392,
- 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392,
- 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 1689, 3392, 0, 1, 456, 0, 1, 500, 0, 1, 583, 0, 1, 623,
- 0, 500, 130, 0, 583, 130, 0, 623, 130, 0, 500, 131, 0, 583, 131, 0, 623, 131, 0, 500, 132, 0, 583, 132,
- 0, 623, 132, 0, 623, 186, 0, 583, 186, 0, 500, 186, 0, 186, 190, 0, 623, 185, 0, 583, 185, 0, 500, 185,
- 0, 185, 190, 0, 500, 133, 0, 583, 133, 0, 623, 133, 0, 500, 134, 0, 583, 134, 0, 623, 134, 0, 11, 227,
- 0, 500, 369, 0, 583, 369, 0, 623, 369, 0, 224, 236, 0, 3400, 1, 0, 623, 381, 0, 583, 381, 0, 500, 381,
- 0, 593, 32, 0, 2304, 32, 0, 623, 254, 0, 583, 254, 0, 500, 254, 0, 1, 3630, 0, 224, 237, 0, 180, 20, 0,
- 8, 10, 0, 1984, 119, 0, 1, 3619, 0, 367, 356, 0, 368, 357, 0, 113, 2556, 0 };
- }
-
- public final static char baseAction[] = BaseAction.baseAction;
-
- @Override
- public final int baseAction(int index) {
- return baseAction[index];
- }
-
- public final static char lhs[] = baseAction;
-
- @Override
- public final int lhs(int index) {
- return lhs[index];
- }
-
- public interface TermCheck {
- public final static byte termCheck[] = { 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 0, 0, 37, 38, 39, 40, 41, 42, 43, 44,
- 45, 46, 47, 0, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 25, 62, 63, 64, 65, 0, 1, 2, 3, 4, 5, 6,
- 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
- 34, 66, 67, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 0, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
- 60, 13, 62, 63, 64, 65, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
- 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 0, 0, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 0,
- 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 13, 62, 63, 64, 65, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
- 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 66, 67,
- 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 0, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 13, 62,
- 63, 64, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
- 26, 27, 28, 29, 30, 31, 32, 33, 34, 0, 0, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 0, 49, 50, 51, 52,
- 53, 54, 55, 56, 57, 58, 59, 60, 0, 62, 63, 64, 0, 1, 2, 0, 4, 5, 6, 7, 8, 9, 0, 11, 12, 13, 14, 15, 16,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, 0, 27, 28, 29, 30, 31, 32, 33, 0, 0, 66, 67, 3, 4, 0, 1, 7, 8, 4,
- 35, 6, 7, 8, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 26, 62, 63, 64, 0, 1, 0, 3, 0, 1, 6, 3, 6,
- 0, 35, 11, 12, 82, 14, 15, 16, 48, 48, 0, 1, 2, 0, 4, 0, 0, 7, 8, 3, 0, 6, 2, 0, 4, 5, 35, 7, 8, 68, 35,
- 36, 0, 1, 2, 3, 84, 5, 6, 48, 0, 9, 26, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 65, 66, 67,
- 68, 28, 70, 71, 72, 73, 74, 75, 76, 0, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
- 94, 95, 96, 97, 0, 1, 68, 3, 80, 81, 6, 0, 0, 98, 2, 11, 12, 5, 14, 15, 16, 10, 10, 68, 77, 0, 88, 89,
- 90, 91, 92, 93, 94, 95, 96, 97, 0, 0, 2, 35, 4, 5, 0, 7, 8, 0, 1, 2, 3, 0, 5, 6, 48, 4, 9, 0, 11, 12,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 65, 66, 67, 68, 28, 70, 71, 72, 73, 74, 75, 76, 0, 78, 79,
- 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0,
- 0, 1, 2, 3, 4, 37, 6, 7, 8, 77, 10, 0, 1, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 24, 25, 26, 27,
- 28, 29, 30, 31, 32, 33, 0, 35, 36, 3, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 0, 62, 63, 64, 4,
- 0, 0, 7, 8, 4, 26, 0, 7, 8, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 24, 25, 0, 27, 28, 29, 30, 31, 32, 33, 0, 1,
- 2, 98, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 0, 1,
- 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 69, 62, 63, 64, 0, 1, 2, 3, 0, 5, 6, 3, 61, 9, 10, 11,
- 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 0, 26, 2, 0, 1, 2, 99, 4, 98, 34, 7, 8, 37, 38, 39,
- 40, 41, 42, 43, 44, 45, 46, 47, 0, 24, 2, 3, 4, 5, 0, 7, 8, 9, 4, 0, 1, 2, 3, 4, 10, 6, 7, 8, 0, 65, 0,
- 1, 24, 25, 0, 27, 28, 29, 30, 31, 32, 33, 34, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 35, 36, 3, 49,
- 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 35, 62, 63, 64, 65, 0, 1, 2, 3, 0, 5, 6, 0, 1, 9, 10, 11,
- 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 0, 26, 73, 74, 75, 76, 0, 78, 79, 34, 11, 12, 37, 38,
- 39, 40, 41, 42, 43, 44, 45, 46, 47, 0, 1, 2, 3, 48, 5, 6, 0, 77, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 0, 0, 26, 2, 0, 4, 5, 3, 7, 8, 34, 0, 1, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
- 0, 0, 2, 3, 4, 5, 26, 7, 8, 9, 0, 0, 1, 2, 3, 4, 36, 6, 7, 8, 0, 0, 35, 2, 24, 25, 5, 27, 28, 29, 30,
- 31, 32, 33, 34, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 69, 35, 36, 0, 49, 50, 51, 52, 53, 54, 55, 56,
- 57, 58, 59, 60, 0, 62, 63, 64, 65, 0, 1, 2, 3, 0, 5, 6, 0, 1, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
- 20, 21, 22, 23, 0, 0, 26, 73, 74, 75, 76, 0, 78, 79, 34, 11, 12, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
- 47, 0, 1, 2, 3, 0, 5, 6, 0, 1, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 0, 26, 2,
- 0, 4, 5, 3, 7, 8, 34, 0, 1, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 0, 0, 2, 3, 4, 5, 0, 7, 8, 9, 0,
- 0, 2, 3, 0, 4, 36, 61, 7, 8, 0, 86, 87, 13, 24, 25, 0, 27, 28, 29, 30, 31, 32, 33, 34, 24, 25, 61, 27,
- 28, 29, 30, 31, 32, 33, 69, 36, 0, 1, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 0, 62, 63, 64, 65,
- 0, 1, 2, 3, 0, 5, 6, 3, 48, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 0, 26, 73, 74,
- 75, 76, 83, 78, 79, 34, 11, 12, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 0, 1, 2, 3, 0, 5, 6, 3, 61,
- 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 69, 26, 0, 4, 2, 26, 7, 8, 77, 34, 0, 1,
- 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 0, 1, 2, 3, 48, 5, 6, 0, 1, 9, 10, 11, 12, 13, 14, 15, 16,
- 17, 18, 19, 20, 21, 22, 23, 0, 0, 26, 2, 4, 0, 5, 7, 8, 0, 34, 10, 0, 37, 38, 39, 40, 41, 42, 43, 44,
- 45, 46, 47, 0, 1, 2, 3, 0, 5, 6, 3, 4, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 0,
- 26, 0, 4, 2, 26, 7, 8, 6, 34, 10, 48, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 0, 1, 2, 3, 0, 5, 6,
- 3, 0, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 0, 26, 2, 4, 0, 26, 7, 8, 0, 34, 2,
- 0, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 0, 1, 2, 3, 48, 5, 6, 0, 1, 9, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 22, 23, 0, 1, 26, 3, 0, 1, 2, 3, 0, 1, 34, 3, 48, 37, 38, 39, 40, 41, 42, 43,
- 44, 45, 46, 47, 0, 1, 2, 0, 4, 5, 69, 7, 8, 9, 0, 35, 36, 10, 4, 35, 36, 7, 8, 0, 36, 0, 0, 2, 24, 25,
- 5, 27, 28, 29, 30, 31, 32, 33, 24, 25, 14, 27, 28, 29, 30, 31, 32, 33, 0, 0, 2, 3, 0, 49, 50, 51, 52,
- 53, 54, 55, 56, 57, 58, 59, 60, 0, 62, 63, 64, 0, 0, 2, 0, 4, 5, 0, 7, 8, 9, 0, 10, 0, 10, 4, 36, 4, 7,
- 8, 7, 8, 0, 0, 1, 24, 25, 0, 27, 28, 29, 30, 31, 32, 33, 24, 25, 10, 27, 28, 29, 30, 31, 32, 33, 61, 24,
- 25, 0, 27, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 14, 62, 63, 64, 0, 1, 2, 3, 0, 5, 6, 66, 67,
- 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 1, 2, 3, 0, 5, 6, 3, 0, 9, 0, 11, 12, 13,
- 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 1, 2, 0, 4, 0, 6, 7, 8, 0, 1, 2, 0, 1, 5, 6, 36, 65, 9, 10,
- 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 0, 35, 0, 1, 2, 0, 4, 61, 0, 7, 8, 0, 1, 2, 0,
- 10, 5, 6, 10, 77, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 1, 2, 0, 68, 5, 6, 0, 1,
- 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 1, 2, 48, 61, 5, 6, 66, 67, 9, 10, 11, 12,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 1, 2, 0, 0, 5, 6, 0, 0, 9, 10, 11, 12, 13, 14, 15, 16,
- 17, 18, 19, 20, 21, 22, 23, 0, 1, 2, 0, 0, 5, 6, 0, 0, 9, 6, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
- 22, 23, 0, 1, 2, 0, 0, 5, 6, 24, 25, 9, 27, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 1, 2,
- 68, 0, 5, 6, 0, 0, 9, 6, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 1, 2, 71, 72, 5, 6, 24,
- 25, 9, 27, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 1, 2, 0, 0, 5, 6, 0, 0, 9, 6, 11, 12,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 1, 2, 71, 72, 5, 6, 24, 25, 9, 27, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 22, 23, 0, 1, 2, 0, 0, 5, 6, 0, 0, 9, 0, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
- 21, 22, 23, 0, 1, 2, 71, 72, 5, 6, 24, 25, 9, 27, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0,
- 1, 2, 0, 0, 5, 6, 3, 0, 9, 0, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 0, 1, 0, 4, 0, 0,
- 7, 8, 4, 0, 6, 7, 8, 4, 83, 36, 7, 8, 0, 1, 2, 3, 0, 24, 25, 3, 27, 28, 29, 30, 31, 32, 33, 24, 25, 35,
- 27, 28, 29, 30, 31, 32, 33, 0, 0, 1, 3, 4, 0, 0, 7, 8, 4, 35, 36, 7, 8, 0, 0, 15, 16, 3, 0, 0, 1, 2, 48,
- 4, 0, 26, 7, 8, 4, 69, 6, 7, 8, 0, 0, 35, 2, 4, 0, 5, 7, 8, 4, 65, 0, 7, 8, 48, 4, 0, 36, 7, 8, 4, 0, 0,
- 7, 8, 3, 0, 0, 0, 48, 3, 0, 0, 0, 68, 4, 35, 70, 7, 8, 0, 0, 0, 0, 0, 4, 3, 61, 7, 8, 24, 25, 85, 27,
- 10, 0, 0, 0, 36, 3, 69, 4, 0, 36, 7, 8, 0, 82, 35, 0, 48, 70, 10, 4, 0, 48, 7, 8, 4, 36, 0, 7, 8, 0, 0,
- 0, 2, 66, 67, 5, 10, 0, 0, 10, 66, 67, 0, 0, 0, 0, 0, 61, 10, 70, 0, 0, 10, 0, 0, 0, 0, 0, 80, 81, 0, 0,
- 61, 0, 0, 0, 0, 65, 0, 0, 0, 0, 84, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 0, 0,
- 0, 0, 0, 61, 0, 0, 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static byte termCheck[] = TermCheck.termCheck;
-
- @Override
- public final int termCheck(int index) {
- return termCheck[index];
- }
-
- public interface TermAction {
- public final static char termAction[] = { 0, 3392, 1, 5946, 1736, 3242, 5940, 1, 1, 1, 1, 926, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 3401, 1, 1, 1, 1, 1, 1, 1, 3493, 55, 345, 1458, 980, 942, 1211, 1663, 464,
- 1360, 1039, 1653, 2723, 1613, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3736, 1, 1, 1, 3399, 8, 3374, 3374,
- 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374,
- 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, 801, 2491,
- 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, 350, 3374, 3374, 3374, 3374, 3374,
- 3374, 3374, 3374, 3374, 3374, 3374, 3374, 905, 3374, 3374, 3374, 3374, 3392, 1, 5946, 1736, 3242, 5940,
- 1, 1, 1, 1, 926, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3401, 1, 1, 1, 1, 1, 1, 1, 3493, 359, 287,
- 1458, 980, 942, 1211, 1663, 464, 1360, 1039, 1653, 2723, 1613, 3392, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1041, 1, 1, 1, 3399, 3392, 1, 5946, 3402, 3242, 5940, 1, 1, 1, 1, 926, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 3401, 1, 1, 1, 1, 1, 1, 1, 3493, 801, 2491, 1458, 980, 942, 1211, 1663, 464, 1360, 1039,
- 1653, 2723, 1613, 3392, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 905, 1, 1, 1, 3392, 1, 5946, 3402, 3242,
- 5940, 1, 1, 1, 1, 926, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3401, 1, 1, 1, 1, 1, 1, 1, 3493,
- 358, 3392, 1458, 980, 942, 1211, 1663, 464, 1360, 1039, 1653, 2723, 1613, 3392, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 67, 1, 1, 1, 3392, 2939, 3403, 3392, 623, 3404, 1107, 500, 583, 3132, 221, 877, 839, 3408,
- 1754, 3103, 2226, 1938, 3405, 3406, 3407, 740, 522, 1848, 3607, 3609, 71, 3608, 3556, 3557, 3555, 3610,
- 3558, 3554, 348, 236, 801, 2491, 224, 3335, 269, 2819, 3335, 3335, 623, 851, 254, 500, 583, 3561, 3566,
- 3565, 3563, 3564, 3562, 3567, 3568, 3560, 3569, 3570, 3571, 224, 2853, 3089, 3064, 1, 3404, 3392, 3404,
- 1, 2819, 3404, 266, 2257, 3392, 851, 3404, 3404, 1116, 3404, 3404, 3404, 391, 224, 1, 1860, 3619, 63,
- 3251, 3392, 1, 3245, 3248, 3402, 186, 3118, 3290, 43, 3281, 3290, 3404, 3287, 3284, 224, 851, 266, 1,
- 2939, 3403, 3396, 2239, 3404, 664, 3404, 158, 1091, 3401, 877, 839, 3408, 1754, 3103, 2226, 1938, 3405,
- 3406, 3407, 740, 522, 1848, 3404, 3404, 3404, 3404, 916, 3404, 3404, 3404, 3404, 3404, 3404, 3404, 3392,
- 3404, 3404, 3404, 3404, 3404, 3404, 3404, 3404, 3404, 3404, 3404, 3404, 3404, 3404, 3404, 3404, 3404,
- 3404, 3404, 3404, 1, 3403, 1420, 3403, 752, 596, 3403, 3392, 3392, 3241, 3403, 3403, 3403, 3404, 3403,
- 3403, 3403, 418, 1075, 714, 3395, 3392, 1394, 1368, 1342, 1316, 1290, 1238, 1264, 1212, 1186, 1157, 185,
- 3392, 3302, 3403, 3293, 3302, 3392, 3299, 3296, 3392, 2939, 3403, 3396, 1, 3404, 702, 3403, 3242, 1091,
- 3392, 877, 839, 3408, 1754, 3103, 2226, 1938, 3405, 3406, 3407, 740, 522, 1848, 3403, 3403, 3403, 3403,
- 1498, 3403, 3403, 3403, 3403, 3403, 3403, 3403, 119, 3403, 3403, 3403, 3403, 3403, 3403, 3403, 3403,
- 3403, 3403, 3403, 3403, 3403, 3403, 3403, 3403, 3403, 3403, 3403, 3403, 3392, 1, 1, 3402, 3242, 1, 1, 1,
- 1, 1, 3392, 357, 368, 368, 3386, 368, 3377, 3386, 368, 368, 3395, 5905, 3392, 927, 1, 1, 3401, 1, 1, 1,
- 1, 1, 1, 1, 3699, 368, 368, 3386, 368, 368, 368, 368, 368, 368, 368, 3392, 368, 3386, 3402, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 130, 1, 1, 1, 3260, 183, 1, 3254, 3257, 623, 3401, 113, 500, 583, 3392, 1, 1,
- 3402, 3242, 1, 1, 1, 1, 1, 3607, 3609, 3392, 3608, 3556, 3557, 3555, 3610, 3558, 3554, 1, 1860, 3619,
- 301, 1, 1, 3401, 1, 1, 1, 1, 1, 1, 1, 3699, 3561, 3566, 3565, 3563, 3564, 3562, 3567, 3568, 3560, 3569,
- 3570, 3571, 3392, 570, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3651, 1, 1, 1, 3392, 1, 5946, 3402, 1, 5940,
- 1, 3338, 2378, 1, 926, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3392, 327, 3401, 3720, 254, 1860, 3619,
- 3389, 623, 300, 3493, 500, 583, 1458, 980, 942, 1211, 1663, 464, 1360, 1039, 1653, 2723, 1613, 3392,
- 3721, 1, 192, 1, 1, 1, 1, 1, 1, 3242, 20, 3371, 180, 3371, 180, 926, 3371, 180, 180, 60, 3399, 3392,
- 793, 1, 1, 272, 1, 1, 1, 1, 1, 1, 1, 3589, 180, 180, 3371, 180, 180, 180, 180, 180, 180, 180, 3392,
- 3371, 3371, 3396, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 851, 1, 1, 1, 192, 3392, 1, 5946, 3402, 257, 5940,
- 1, 3392, 800, 1, 926, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 52, 3392, 3401, 2824, 2808, 2792, 2776,
- 3392, 2760, 1764, 3493, 2851, 2634, 1458, 980, 942, 1211, 1663, 464, 1360, 1039, 1653, 2723, 1613, 3392,
- 1, 5946, 3402, 1139, 5940, 1, 3392, 3395, 1, 926, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 207, 3401,
- 5941, 1, 623, 5941, 117, 500, 583, 3493, 223, 606, 1458, 980, 942, 1211, 1663, 464, 1360, 1039, 1653,
- 2723, 1613, 3392, 3392, 1, 191, 1, 1, 117, 1, 1, 1, 3392, 356, 367, 367, 3383, 367, 117, 3383, 367, 367,
- 62, 3392, 851, 3403, 1, 1, 3404, 1, 1, 1, 1, 1, 1, 1, 3589, 367, 367, 3383, 367, 367, 367, 367, 367,
- 367, 367, 3650, 367, 3383, 3392, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3392, 1, 1, 1, 191, 3392, 1, 5946,
- 3402, 3392, 5940, 1, 11, 3323, 1, 926, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 54, 3392, 3401, 2824,
- 2808, 2792, 2776, 73, 2760, 1764, 3493, 2851, 2634, 1458, 980, 942, 1211, 1663, 464, 1360, 1039, 1653,
- 2723, 1613, 3392, 1, 5946, 3402, 3392, 5940, 1, 3392, 460, 1, 926, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 3392, 378, 3401, 5945, 3392, 623, 5945, 3398, 500, 583, 3493, 351, 1011, 1458, 980, 942, 1211, 1663,
- 464, 1360, 1039, 1653, 2723, 1613, 3392, 3392, 1, 192, 1, 1, 3392, 1, 1, 1, 3392, 131, 1719, 3398, 69,
- 3269, 3397, 2405, 3263, 3266, 61, 433, 513, 1694, 1, 1, 89, 1, 1, 1, 1, 1, 1, 1, 3589, 3607, 3609, 2432,
- 3608, 3556, 3557, 3555, 3610, 3558, 3554, 1524, 3397, 338, 1412, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 192, 3392, 1, 5946, 3402, 3392, 5940, 1, 3396, 1446, 1, 926, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 53, 3392, 3401, 2824, 2808, 2792, 2776, 1800, 2760, 1764, 3493, 2851, 2634, 1458, 980, 942, 1211,
- 1663, 464, 1360, 1039, 1653, 2723, 1613, 3392, 1, 5946, 3402, 3392, 5940, 1, 3402, 2, 1, 926, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 254, 1726, 3401, 3392, 623, 1824, 3401, 500, 583, 3395, 3493, 3392, 2991,
- 1458, 980, 942, 1211, 1663, 464, 1360, 1039, 1653, 2723, 1613, 3392, 1, 5946, 3402, 2053, 5940, 1, 3392,
- 2478, 1, 926, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 160, 3392, 3401, 3403, 623, 3392, 3404, 500, 583,
- 3392, 3493, 1182, 30, 1458, 980, 942, 1211, 1663, 464, 1360, 1039, 1653, 2723, 1613, 3392, 1, 5946,
- 3402, 1, 5940, 1, 117, 3242, 1, 926, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 379, 230, 3401, 3392, 623,
- 1618, 117, 500, 583, 1728, 3493, 233, 3421, 1458, 980, 942, 1211, 1663, 464, 1360, 1039, 1653, 2723,
- 1613, 3392, 1, 5946, 3402, 3392, 5940, 1, 3402, 3392, 1, 926, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 382, 3392, 3401, 3631, 623, 3392, 3401, 500, 583, 1, 3493, 3365, 208, 1458, 980, 942, 1211, 1663, 464,
- 1360, 1039, 1653, 2723, 1613, 3392, 1, 5946, 3402, 2189, 5940, 1, 3392, 2818, 1, 926, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 2819, 3401, 3398, 1, 2129, 3380, 3398, 3392, 435, 3493, 3398, 5933, 1458, 980,
- 942, 1211, 1663, 464, 1360, 1039, 1653, 2723, 1613, 1, 1860, 651, 1, 3251, 3404, 3651, 3245, 3248, 1019,
- 132, 851, 3397, 926, 3278, 851, 3397, 3272, 3275, 3392, 3397, 209, 65, 3403, 3607, 3609, 3404, 3608,
- 3556, 3557, 3555, 3610, 3558, 3554, 3607, 3609, 2103, 3608, 3556, 3557, 3555, 3610, 3558, 3554, 3392,
- 3392, 969, 3398, 3392, 3561, 3566, 3565, 3563, 3564, 3562, 3567, 3568, 3560, 3569, 3570, 3571, 3392,
- 2853, 3089, 3064, 3392, 3392, 3403, 3392, 623, 3404, 59, 500, 583, 1019, 133, 1379, 381, 1431, 3311,
- 3397, 3341, 3305, 3308, 3347, 3344, 3392, 3392, 2913, 3607, 3609, 230, 3608, 3556, 3557, 3555, 3610,
- 3558, 3554, 3607, 3609, 234, 3608, 3556, 3557, 3555, 3610, 3558, 3554, 2425, 3607, 3609, 66, 3608, 3561,
- 3566, 3565, 3563, 3564, 3562, 3567, 3568, 3560, 3569, 3570, 3571, 2103, 2853, 3089, 3064, 1, 2939, 4272,
- 29, 3392, 4174, 1107, 801, 2491, 1091, 5905, 877, 839, 3408, 1754, 3103, 2226, 1938, 3405, 3406, 3407,
- 740, 522, 1848, 3392, 2939, 3403, 3396, 3392, 3404, 1107, 3398, 3392, 1091, 3392, 877, 839, 3408, 1754,
- 3103, 2226, 1938, 3405, 3406, 3407, 740, 522, 1848, 269, 2129, 3619, 3392, 623, 212, 254, 500, 583,
- 3392, 2939, 3403, 325, 887, 3404, 1107, 3397, 29, 1091, 5905, 877, 839, 3408, 1754, 3103, 2226, 1938,
- 3405, 3406, 3407, 740, 522, 1848, 3392, 58, 851, 1, 1860, 3619, 3392, 3251, 423, 368, 3245, 3248, 3392,
- 2939, 3403, 30, 1457, 3404, 1107, 5905, 3395, 1091, 5905, 877, 839, 3408, 1754, 3103, 2226, 1938, 3405,
- 3406, 3407, 740, 522, 1848, 1, 2939, 4272, 3392, 1549, 4174, 1107, 3392, 3117, 1091, 5905, 877, 839,
- 3408, 1754, 3103, 2226, 1938, 3405, 3406, 3407, 740, 522, 1848, 383, 2939, 3403, 676, 1626, 3404, 1107,
- 801, 2491, 1091, 5905, 877, 839, 3408, 1754, 3103, 2226, 1938, 3405, 3406, 3407, 740, 522, 1848, 3392,
- 2939, 3403, 3392, 3392, 3404, 1107, 3392, 3392, 1091, 5905, 877, 839, 3408, 1754, 3103, 2226, 1938,
- 3405, 3406, 3407, 740, 522, 1848, 3392, 2365, 3403, 3392, 49, 3404, 1107, 250, 3392, 1091, 3033, 877,
- 839, 3408, 1754, 3103, 2226, 1938, 3405, 3406, 3407, 740, 522, 1848, 3392, 2873, 3403, 3392, 3392, 3404,
- 1107, 1, 1, 1091, 1, 877, 839, 3408, 1754, 3103, 2226, 1938, 3405, 3406, 3407, 740, 522, 1848, 3392,
- 2899, 3403, 813, 51, 3404, 1107, 249, 3392, 1091, 3033, 877, 839, 3408, 1754, 3103, 2226, 1938, 3405,
- 3406, 3407, 740, 522, 1848, 3392, 2923, 3403, 3007, 2543, 3404, 1107, 3607, 3609, 1091, 3608, 877, 839,
- 3408, 1754, 3103, 2226, 1938, 3405, 3406, 3407, 740, 522, 1848, 3392, 2939, 3403, 3392, 50, 3404, 1107,
- 251, 3392, 1091, 3033, 877, 839, 3408, 1754, 3103, 2226, 1938, 3405, 3406, 3407, 740, 522, 1848, 3392,
- 2965, 3403, 3007, 2543, 3404, 1107, 1, 1, 1091, 1, 877, 839, 3408, 1754, 3103, 2226, 1938, 3405, 3406,
- 3407, 740, 522, 1848, 1, 2939, 3403, 3392, 70, 3404, 1107, 252, 3392, 1091, 3392, 877, 839, 3408, 1754,
- 3103, 2226, 1938, 3405, 3406, 3407, 740, 522, 1848, 3392, 3024, 3403, 3007, 2543, 3404, 1107, 3607,
- 3609, 1091, 3608, 877, 839, 3408, 1754, 3103, 2226, 1938, 3405, 3406, 3407, 740, 522, 1848, 333, 2939,
- 3403, 3392, 1, 3404, 1107, 3398, 3392, 1091, 3392, 877, 839, 3408, 1754, 3103, 2226, 1938, 3405, 3406,
- 3407, 740, 522, 1848, 134, 271, 1058, 3392, 3320, 1, 3392, 3314, 3317, 3251, 369, 254, 3245, 3248, 3332,
- 1800, 3397, 3326, 3329, 1, 2129, 3619, 263, 3392, 3607, 3609, 3400, 3608, 3556, 3557, 3555, 3610, 3558,
- 3554, 3607, 3609, 851, 3608, 3556, 3557, 3555, 3610, 3558, 3554, 237, 32, 3350, 224, 3368, 373, 3392,
- 3368, 3368, 623, 851, 263, 500, 583, 3392, 3392, 3418, 3419, 3398, 68, 1, 1860, 3619, 263, 3251, 1, 224,
- 3245, 3248, 3251, 3651, 254, 3245, 3248, 372, 3392, 3353, 3403, 623, 184, 3404, 500, 583, 623, 3399,
- 254, 500, 583, 224, 3356, 374, 3397, 3362, 3359, 623, 57, 3392, 500, 583, 3398, 253, 3392, 56, 838,
- 3398, 380, 64, 293, 224, 623, 1651, 674, 500, 583, 3392, 201, 72, 1, 357, 623, 91, 1626, 500, 583, 3607,
- 3609, 458, 3608, 5905, 3392, 286, 375, 3397, 1378, 3651, 623, 355, 3397, 500, 583, 202, 1116, 1701, 376,
- 1975, 1354, 5905, 623, 377, 1029, 500, 583, 623, 91, 42, 500, 583, 3392, 208, 3392, 415, 801, 2491, 415,
- 5905, 1, 190, 5905, 801, 2491, 382, 1, 3392, 3392, 3392, 1574, 207, 1637, 3392, 3392, 378, 3392, 3392,
- 3392, 3392, 3392, 752, 596, 3392, 3392, 1600, 3392, 3392, 3392, 3392, 1378, 3392, 3392, 3392, 3392,
- 2239, 1676, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392,
- 3392, 3392, 3392, 3777, 3392, 3392, 3392, 3392, 3392, 3404, 3392, 3392, 3392, 3392, 3392, 3403 };
- }
-
- public final static char termAction[] = TermAction.termAction;
-
- @Override
- public final int termAction(int index) {
- return termAction[index];
- }
-
- public interface Asb {
- public final static char asb[] = { 0, 677, 1, 416, 382, 552, 677, 417, 384, 675, 47, 417, 417, 417, 59, 670, 59,
- 670, 670, 59, 670, 59, 386, 384, 373, 417, 59, 554, 28, 419, 675, 554, 469, 187, 384, 125, 124, 190,
- 160, 386, 252, 523, 248, 327, 45, 156, 670, 582, 579, 582, 156, 582, 670, 384, 389, 238, 249, 386, 717,
- 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 630, 331, 132, 391, 131, 554, 384, 187, 187, 284, 717, 140,
- 384, 524, 7, 327, 424, 249, 672, 473, 675, 507, 389, 238, 384, 719, 630, 630, 630, 630, 630, 249, 249,
- 249, 243, 539, 523, 582, 582, 310, 28, 419, 470, 711, 45, 645, 554, 382, 187, 397, 306, 747, 429, 288,
- 440, 445, 443, 453, 447, 456, 455, 458, 457, 459, 719, 504, 675, 160, 252, 523, 26, 470, 470, 582, 417,
- 417, 13, 417, 417, 470, 79, 28, 79, 382, 120, 392, 326, 675, 672, 473, 507, 507, 238, 238, 249, 241,
- 120, 249, 249, 249, 249, 249, 101, 386, 714, 119, 118, 513, 335, 28, 524, 249, 28, 306, 583, 249, 384,
- 747, 306, 287, 284, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
- 28, 28, 28, 28, 28, 28, 28, 28, 28, 81, 28, 120, 504, 138, 520, 470, 470, 537, 28, 522, 28, 28, 13, 79,
- 585, 13, 384, 7, 249, 309, 249, 249, 473, 504, 71, 473, 507, 509, 588, 509, 238, 747, 714, 386, 719,
- 195, 195, 195, 140, 675, 243, 249, 597, 717, 28, 339, 630, 523, 249, 28, 28, 306, 288, 443, 443, 440,
- 440, 447, 447, 445, 445, 445, 445, 445, 445, 455, 453, 457, 456, 79, 79, 458, 583, 138, 26, 470, 249,
- 417, 249, 249, 13, 28, 13, 386, 120, 473, 73, 509, 504, 28, 582, 747, 238, 597, 241, 249, 719, 249, 306,
- 306, 28, 28, 509, 279, 470, 26, 13, 28, 13, 13, 384, 309, 504, 469, 28, 465, 73, 466, 504, 238, 249,
- 199, 504, 136, 193, 261, 582, 28, 79, 3, 310, 470, 249, 522, 73, 28, 466, 466, 331, 140, 593, 582, 28,
- 249, 310, 470, 13, 466, 28, 306, 13, 249, 306, 13 };
- }
-
- public final static char asb[] = Asb.asb;
-
- @Override
- public final int asb(int index) {
- return asb[index];
- }
-
- public interface Asr {
- public final static byte asr[] = { 0, 98, 0, 68, 35, 70, 0, 3, 48, 36, 2, 24, 0, 39, 41, 10, 45, 47, 42, 37, 43,
- 44, 40, 38, 46, 34, 26, 3, 1, 18, 19, 20, 2, 5, 15, 16, 14, 6, 11, 12, 21, 22, 17, 23, 9, 13, 0, 57, 49,
- 54, 52, 53, 51, 50, 55, 56, 58, 59, 60, 35, 48, 36, 33, 30, 28, 29, 32, 24, 27, 25, 31, 26, 3, 6, 2, 1,
- 4, 8, 7, 61, 0, 17, 18, 19, 20, 13, 2, 5, 1, 15, 16, 14, 6, 11, 12, 21, 22, 9, 23, 61, 0, 29, 24, 30,
- 31, 32, 27, 28, 33, 25, 2, 6, 61, 26, 7, 8, 4, 10, 1, 35, 36, 3, 48, 0, 1, 68, 26, 7, 8, 4, 35, 48, 36,
- 3, 61, 0, 3, 65, 35, 70, 1, 18, 19, 20, 13, 15, 16, 14, 6, 11, 12, 21, 22, 17, 23, 9, 2, 5, 10, 0, 50,
- 62, 30, 51, 31, 52, 53, 32, 27, 54, 55, 28, 63, 33, 64, 56, 57, 25, 58, 59, 60, 2, 5, 9, 24, 49, 29, 7,
- 8, 4, 3, 48, 26, 68, 0, 61, 69, 77, 65, 32, 28, 33, 31, 30, 29, 14, 11, 12, 71, 72, 66, 67, 73, 74, 75,
- 76, 80, 81, 82, 83, 84, 86, 87, 68, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 78, 79, 10, 26, 24, 27, 25,
- 48, 2, 6, 7, 8, 4, 35, 1, 36, 3, 0, 10, 3, 68, 48, 26, 7, 8, 4, 0, 68, 1, 18, 19, 20, 13, 15, 16, 14, 6,
- 11, 12, 21, 22, 17, 23, 9, 10, 2, 5, 35, 70, 0, 24, 27, 25, 28, 15, 16, 14, 6, 11, 12, 21, 22, 17, 23,
- 9, 1, 2, 5, 18, 19, 20, 13, 77, 3, 0, 48, 17, 18, 19, 20, 5, 1, 15, 16, 14, 6, 11, 12, 21, 22, 9, 23,
- 13, 36, 3, 2, 0, 61, 69, 77, 65, 70, 85, 15, 16, 35, 14, 11, 12, 71, 72, 66, 67, 73, 74, 75, 76, 80, 81,
- 82, 83, 84, 86, 87, 68, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 48, 78, 79, 36, 29, 24, 30, 31, 32, 27,
- 28, 33, 25, 26, 3, 2, 1, 7, 8, 4, 6, 0, 61, 3, 48, 36, 1, 0, 24, 27, 15, 16, 14, 6, 11, 12, 21, 22, 17,
- 23, 9, 2, 5, 18, 19, 20, 13, 25, 1, 0, 3, 61, 36, 13, 0, 2, 3, 36, 1, 0, 68, 88, 89, 90, 91, 92, 94, 93,
- 95, 96, 97, 6, 71, 72, 11, 12, 67, 66, 73, 74, 75, 76, 78, 79, 80, 81, 14, 82, 83, 84, 69, 77, 36, 65,
- 86, 87, 61, 7, 8, 4, 48, 26, 3, 0, 29, 49, 24, 50, 62, 30, 51, 31, 52, 53, 32, 27, 54, 55, 28, 63, 33,
- 64, 56, 57, 25, 58, 59, 60, 2, 5, 9, 7, 8, 4, 34, 3, 65, 0, 2, 5, 3, 65, 48, 0, 3, 61, 77, 36, 26, 48,
- 0, 36, 98, 99, 65, 39, 41, 10, 45, 47, 42, 37, 43, 44, 40, 38, 46, 34, 3, 26, 18, 19, 20, 13, 15, 16,
- 14, 11, 12, 21, 22, 17, 23, 6, 1, 9, 62, 63, 64, 57, 49, 54, 52, 53, 51, 50, 55, 56, 58, 59, 60, 33, 30,
- 28, 29, 32, 24, 27, 25, 31, 7, 8, 4, 5, 2, 0, 61, 69, 0, 3, 48, 65, 68, 0, 77, 3, 69, 0, 6, 29, 49, 24,
- 50, 62, 30, 51, 31, 52, 53, 32, 27, 54, 55, 28, 63, 33, 64, 56, 57, 25, 58, 59, 60, 2, 5, 9, 69, 4, 8,
- 7, 0, 17, 18, 19, 20, 13, 1, 15, 16, 14, 6, 11, 12, 21, 22, 23, 29, 49, 24, 50, 62, 30, 51, 31, 52, 53,
- 32, 27, 54, 55, 28, 63, 33, 64, 56, 57, 25, 58, 59, 60, 9, 2, 5, 7, 8, 4, 10, 0, 98, 29, 49, 24, 50, 62,
- 30, 51, 31, 52, 53, 32, 27, 54, 55, 28, 63, 33, 64, 56, 57, 25, 58, 59, 60, 5, 1, 9, 7, 8, 26, 3, 34, 4,
- 2, 6, 0, 6, 1, 35, 36, 3, 29, 49, 50, 62, 30, 51, 31, 52, 53, 32, 54, 55, 28, 63, 33, 64, 56, 57, 58,
- 59, 60, 2, 5, 9, 7, 8, 4, 69, 24, 27, 25, 0 };
- }
-
- public final static byte asr[] = Asr.asr;
-
- @Override
- public final int asr(int index) {
- return asr[index];
- }
-
- public interface Nasb {
- public final static char nasb[] = { 0, 176, 43, 21, 181, 32, 189, 43, 82, 65, 95, 43, 43, 43, 96, 87, 96, 87,
- 87, 96, 87, 96, 157, 144, 43, 43, 96, 89, 58, 74, 65, 153, 182, 87, 160, 23, 23, 43, 43, 157, 43, 12,
- 187, 67, 43, 8, 163, 8, 163, 8, 8, 8, 163, 167, 43, 163, 187, 157, 186, 58, 58, 58, 58, 58, 58, 58, 58,
- 58, 58, 58, 171, 43, 187, 43, 43, 98, 143, 163, 87, 70, 186, 60, 165, 104, 19, 79, 43, 187, 87, 153, 43,
- 153, 43, 87, 85, 117, 171, 171, 171, 171, 171, 187, 187, 187, 151, 1, 12, 25, 25, 52, 173, 74, 182, 43,
- 74, 126, 35, 181, 163, 57, 72, 63, 43, 71, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 131, 153, 43, 43, 43,
- 113, 180, 182, 182, 8, 43, 43, 27, 43, 43, 182, 43, 76, 43, 181, 187, 43, 187, 43, 163, 139, 153, 8, 87,
- 153, 187, 149, 43, 187, 187, 187, 187, 187, 16, 157, 184, 23, 23, 43, 43, 58, 104, 187, 58, 72, 43, 187,
- 143, 63, 72, 71, 48, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, 58, 58, 44, 58, 187, 13, 153, 43, 182, 182, 193, 173, 43, 173, 173, 27, 43,
- 43, 27, 83, 19, 187, 58, 187, 187, 153, 13, 181, 135, 8, 102, 43, 43, 153, 63, 148, 157, 117, 16, 16,
- 16, 15, 16, 122, 187, 155, 186, 58, 43, 171, 113, 187, 58, 58, 72, 71, 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 56, 195, 182, 187, 43, 187, 187, 27, 58, 27, 157, 187,
- 139, 143, 102, 13, 58, 8, 63, 48, 155, 120, 187, 117, 187, 72, 72, 58, 58, 102, 110, 182, 195, 27, 173,
- 27, 27, 84, 58, 13, 182, 58, 43, 160, 87, 13, 48, 187, 16, 13, 55, 43, 60, 8, 58, 43, 10, 195, 182, 187,
- 43, 143, 58, 87, 163, 50, 60, 72, 8, 58, 187, 195, 182, 27, 163, 58, 72, 27, 187, 72, 27 };
- }
-
- public final static char nasb[] = Nasb.nasb;
-
- @Override
- public final int nasb(int index) {
- return nasb[index];
- }
-
- public interface Nasr {
- public final static char nasr[] = { 0, 95, 102, 93, 92, 84, 91, 90, 1, 0, 136, 0, 2, 53, 0, 6, 51, 50, 0, 117,
- 0, 142, 0, 59, 0, 103, 0, 1, 38, 2, 39, 0, 34, 2, 100, 95, 102, 94, 93, 92, 84, 91, 90, 0, 2, 31, 122,
- 0, 32, 0, 132, 0, 2, 123, 0, 112, 51, 2, 6, 0, 6, 51, 0, 85, 0, 115, 0, 141, 18, 0, 2, 6, 49, 0, 101, 0,
- 6, 144, 0, 18, 119, 0, 48, 2, 36, 34, 46, 27, 0, 84, 78, 79, 80, 81, 87, 72, 54, 0, 29, 2, 138, 0, 88,
- 0, 29, 2, 1, 38, 105, 0, 1, 145, 0, 38, 1, 77, 53, 2, 29, 0, 34, 46, 68, 67, 27, 0, 2, 29, 60, 30, 0,
- 128, 2, 29, 0, 2, 58, 97, 0, 107, 2, 58, 0, 27, 46, 34, 2, 0, 18, 34, 46, 67, 68, 2, 0, 2, 29, 27, 63,
- 0, 46, 34, 2, 10, 0, 46, 48, 27, 34, 36, 0, 58, 30, 2, 31, 0, 137, 2, 29, 0, 31, 2, 26, 0, 67, 68, 2,
- 18, 0, 2, 29, 113, 0, 29, 60, 2, 71, 0 };
- }
-
- public final static char nasr[] = Nasr.nasr;
-
- @Override
- public final int nasr(int index) {
- return nasr[index];
- }
-
- public interface TerminalIndex {
- public final static char terminalIndex[] = { 0, 2, 87, 89, 99, 88, 9, 97, 98, 95, 3, 10, 11, 86, 8, 6, 7, 70,
- 83, 84, 85, 12, 13, 96, 50, 78, 94, 66, 71, 46, 57, 62, 65, 74, 100, 1, 92, 79, 47, 48, 51, 52, 53, 59,
- 60, 61, 67, 73, 42, 49, 54, 58, 63, 64, 68, 69, 76, 77, 80, 81, 82, 29, 56, 72, 75, 93, 16, 17, 31, 30,
- 4, 14, 15, 18, 19, 20, 21, 91, 43, 44, 22, 23, 24, 25, 26, 5, 27, 28, 32, 33, 34, 35, 36, 37, 38, 39,
- 40, 41, 101, 55, 90 };
- }
-
- public final static char terminalIndex[] = TerminalIndex.terminalIndex;
-
- @Override
- public final int terminalIndex(int index) {
- return terminalIndex[index];
- }
-
- public interface NonterminalIndex {
- public final static char nonterminalIndex[] = { 0, 106, 0, 0, 0, 0, 108, 112, 113, 114, 190, 0, 0, 0, 115, 116,
- 117, 118, 103, 119, 120, 121, 122, 123, 0, 0, 105, 191, 124, 133, 129, 107, 141, 0, 164, 0, 167, 0, 125,
- 128, 0, 0, 0, 0, 0, 161, 163, 0, 165, 102, 111, 0, 151, 104, 140, 0, 0, 0, 155, 166, 132, 0, 127, 162,
- 110, 175, 178, 179, 180, 0, 0, 0, 143, 150, 0, 168, 174, 131, 144, 145, 146, 147, 148, 149, 152, 173,
- 177, 198, 0, 134, 135, 136, 137, 138, 139, 142, 0, 154, 158, 160, 169, 195, 197, 109, 126, 130, 0, 153,
- 157, 0, 159, 172, 182, 187, 0, 189, 0, 192, 0, 194, 0, 0, 0, 0, 0, 0, 156, 0, 170, 171, 176, 181, 0,
- 183, 184, 0, 185, 186, 188, 0, 0, 193, 0, 0, 196, 199, 0, 0 };
- }
-
- public final static char nonterminalIndex[] = NonterminalIndex.nonterminalIndex;
-
- @Override
- public final int nonterminalIndex(int index) {
- return nonterminalIndex[index];
- }
-
- public interface ScopePrefix {
- public final static char scopePrefix[] = { 202, 258, 334, 220, 314, 125, 151, 157, 286, 99, 363, 385, 342, 1,
- 108, 141, 167, 187, 67, 266, 324, 35, 35, 59, 63, 75, 81, 113, 163, 237, 302, 75, 421, 428, 432, 359,
- 381, 394, 408, 394, 348, 15, 27, 56, 8, 8, 117, 120, 172, 120, 197, 120, 247, 252, 255, 311, 436, 50,
- 87, 93, 133, 241, 87, 405, 415, 415, 8, 133, 276, 210, 372, 210, 276, 20, 20, 41, 233, 41, 41, 41, 41,
- 41, 309, 403, 20, 20, 45, 146, 175, 146, 175, 175 };
- }
-
- public final static char scopePrefix[] = ScopePrefix.scopePrefix;
-
- @Override
- public final int scopePrefix(int index) {
- return scopePrefix[index];
- }
-
- public interface ScopeSuffix {
- public final static char scopeSuffix[] = { 79, 79, 321, 79, 321, 131, 6, 6, 79, 105, 369, 391, 329, 6, 39, 131,
- 6, 39, 72, 271, 329, 39, 39, 39, 39, 79, 85, 39, 6, 235, 235, 79, 39, 39, 6, 321, 321, 321, 412, 398,
- 352, 18, 18, 39, 6, 6, 39, 123, 6, 182, 39, 200, 250, 250, 250, 235, 39, 53, 90, 96, 148, 244, 306, 53,
- 418, 425, 11, 136, 271, 227, 375, 213, 279, 25, 33, 43, 235, 292, 294, 296, 298, 300, 235, 235, 22, 30,
- 47, 148, 184, 136, 177, 192 };
- }
-
- public final static char scopeSuffix[] = ScopeSuffix.scopeSuffix;
-
- @Override
- public final int scopeSuffix(int index) {
- return scopeSuffix[index];
- }
-
- public interface ScopeLhs {
- public final static char scopeLhs[] = { 80, 78, 43, 80, 43, 63, 59, 59, 78, 50, 43, 42, 43, 146, 69, 63, 59, 36,
- 11, 78, 43, 87, 7, 7, 116, 115, 70, 69, 59, 97, 60, 30, 7, 6, 6, 43, 42, 42, 24, 42, 43, 108, 83, 4,
- 136, 135, 67, 86, 59, 100, 34, 52, 79, 79, 79, 44, 4, 40, 70, 112, 63, 97, 60, 40, 8, 6, 146, 63, 78,
- 80, 43, 80, 78, 108, 83, 102, 97, 94, 93, 92, 91, 90, 60, 41, 108, 83, 144, 63, 36, 63, 48, 36 };
- }
-
- public final static char scopeLhs[] = ScopeLhs.scopeLhs;
-
- @Override
- public final int scopeLhs(int index) {
- return scopeLhs[index];
- }
-
- public interface ScopeLa {
- public final static byte scopeLa[] = { 65, 65, 36, 65, 36, 24, 77, 77, 65, 65, 36, 99, 26, 77, 36, 24, 77, 36,
- 36, 10, 26, 36, 36, 36, 36, 65, 10, 36, 77, 26, 26, 65, 36, 36, 77, 36, 36, 36, 61, 36, 26, 7, 7, 36,
- 77, 77, 36, 1, 77, 2, 36, 2, 2, 2, 2, 26, 36, 61, 2, 68, 6, 2, 2, 61, 36, 36, 69, 6, 10, 10, 37, 2, 2,
- 2, 2, 9, 26, 2, 62, 63, 63, 57, 26, 26, 2, 2, 69, 6, 1, 6, 1, 1 };
- }
-
- public final static byte scopeLa[] = ScopeLa.scopeLa;
-
- @Override
- public final int scopeLa(int index) {
- return scopeLa[index];
- }
-
- public interface ScopeStateSet {
- public final static char scopeStateSet[] = { 141, 141, 38, 141, 38, 208, 54, 54, 141, 17, 38, 38, 38, 3, 58,
- 208, 54, 146, 164, 141, 38, 141, 65, 65, 14, 138, 224, 58, 54, 8, 221, 30, 65, 65, 65, 38, 38, 38, 101,
- 38, 38, 5, 159, 65, 1, 3, 58, 60, 54, 217, 146, 152, 141, 141, 141, 38, 65, 38, 224, 135, 208, 8, 221,
- 38, 72, 65, 3, 208, 141, 141, 38, 141, 141, 5, 159, 142, 8, 142, 142, 142, 142, 142, 221, 38, 5, 159,
- 12, 208, 146, 208, 148, 146 };
- }
-
- public final static char scopeStateSet[] = ScopeStateSet.scopeStateSet;
-
- @Override
- public final int scopeStateSet(int index) {
- return scopeStateSet[index];
- }
-
- public interface ScopeRhs {
- public final static char scopeRhs[] = { 0, 162, 69, 162, 35, 0, 102, 0, 162, 35, 0, 30, 127, 102, 0, 198, 127,
- 0, 191, 0, 127, 0, 158, 191, 0, 158, 0, 152, 127, 0, 151, 191, 0, 151, 0, 164, 1, 9, 0, 103, 0, 195, 0,
- 198, 0, 162, 0, 30, 127, 0, 244, 39, 0, 29, 128, 0, 130, 1, 0, 164, 1, 23, 0, 240, 1, 217, 0, 239, 1, 1,
- 7, 0, 103, 103, 0, 205, 102, 10, 0, 104, 0, 200, 102, 129, 0, 189, 0, 102, 129, 0, 169, 189, 0, 233,
- 102, 0, 31, 150, 0, 188, 231, 102, 10, 151, 0, 104, 0, 0, 175, 102, 1, 167, 0, 175, 102, 1, 0, 186, 1,
- 0, 163, 102, 0, 178, 0, 102, 137, 6, 137, 163, 0, 173, 0, 137, 163, 0, 9, 0, 0, 173, 0, 102, 137, 6,
- 137, 0, 137, 0, 9, 0, 0, 128, 28, 211, 102, 35, 0, 128, 211, 102, 28, 35, 0, 128, 28, 35, 0, 128, 211,
- 102, 35, 0, 128, 35, 0, 134, 0, 2, 0, 170, 103, 0, 167, 0, 2, 103, 0, 175, 102, 1, 134, 0, 2, 0, 168,
- 103, 0, 152, 1, 0, 161, 0, 188, 209, 102, 10, 101, 227, 62, 0, 227, 62, 0, 106, 3, 0, 0, 0, 104, 0, 188,
- 209, 102, 10, 227, 62, 0, 3, 0, 0, 0, 104, 0, 158, 0, 105, 0, 226, 102, 158, 0, 102, 158, 0, 156, 105,
- 0, 196, 62, 0, 106, 0, 196, 64, 0, 196, 63, 0, 206, 102, 10, 225, 101, 224, 184, 0, 225, 101, 224, 184,
- 0, 3, 0, 0, 104, 0, 224, 184, 0, 106, 0, 3, 0, 0, 104, 0, 206, 102, 10, 224, 184, 0, 147, 0, 146, 0,
- 145, 0, 144, 0, 143, 0, 189, 102, 129, 0, 134, 105, 0, 129, 0, 131, 46, 0, 171, 126, 171, 160, 1, 43, 0,
- 103, 128, 0, 171, 160, 1, 43, 0, 105, 0, 103, 128, 0, 171, 126, 171, 126, 171, 1, 43, 0, 171, 126, 171,
- 1, 43, 0, 171, 1, 43, 0, 105, 0, 105, 0, 103, 128, 0, 131, 1, 37, 0, 131, 1, 37, 139, 42, 0, 103, 105,
- 0, 139, 42, 0, 79, 2, 107, 103, 105, 0, 131, 1, 47, 0, 139, 118, 131, 1, 45, 0, 55, 128, 0, 131, 1, 45,
- 0, 103, 128, 55, 128, 0, 138, 0, 162, 39, 0, 131, 87, 123, 0, 29, 124, 0, 164, 1, 0, 103, 113, 0, 164,
- 1, 17, 0, 103, 111, 0, 223, 1, 106, 0, 131, 35, 106, 0, 131, 1, 0 };
- }
-
- public final static char scopeRhs[] = ScopeRhs.scopeRhs;
-
- @Override
- public final int scopeRhs(int index) {
- return scopeRhs[index];
- }
-
- public interface ScopeState {
- public final static char scopeState[] = { 0, 414, 0, 1784, 0, 2189, 2024, 0, 2882, 1999, 2017, 0, 942, 0, 838,
- 435, 0, 813, 775, 676, 1302, 638, 1277, 424, 1250, 1018, 712, 636, 714, 0, 3024, 1960, 2965, 2939, 2923,
- 2899, 2873, 2365, 2583, 2563, 2556, 2536, 2529, 2482, 2432, 2425, 1925, 2405, 2378, 1843, 464, 1797,
- 1751, 0, 1282, 1275, 673, 457, 1946, 2618, 2129, 2819, 2092, 2271, 0, 3132, 3103, 2226, 1938, 1848,
- 1091, 1019, 702, 424, 433, 1800, 2239, 2103, 1116, 2824, 2808, 2792, 2776, 2760, 1764, 752, 596, 2851,
- 2634, 2491, 801, 3033, 3007, 2543, 664, 1754, 1107, 877, 839, 740, 522, 1726, 1701, 813, 1676, 1651,
- 775, 1626, 1029, 1600, 1574, 1549, 1524, 1498, 1472, 1446, 887, 1420, 1394, 1368, 1342, 1316, 1290,
- 1264, 1238, 1212, 1186, 1157, 993, 967, 942, 916, 389, 714, 851, 676, 638, 0, 774, 754, 0, 1072, 535,
- 389, 485, 0, 2834, 485, 2364, 1946, 2336, 2307, 2189, 2264, 2024, 2129, 2092, 2279, 1860, 1888, 1996,
- 2053, 1054, 0, 3190, 3186, 3164, 2189, 3146, 2264, 2364, 1946, 2024, 2618, 1888, 1996, 3118, 3182, 3168,
- 535, 389, 2336, 2257, 3114, 2307, 3140, 3068, 2053, 2922, 2834, 2726, 2428, 2173, 2279, 621, 1072, 2702,
- 2696, 2853, 2688, 3089, 3064, 2662, 2654, 2636, 499, 1054, 485, 2477, 3060, 2143, 3032, 2972, 2883,
- 2879, 1865, 0, 1888, 1054, 485, 0, 2991, 1960, 1138, 1925, 1843, 1797, 1751, 2848, 2590, 0 };
- }
-
- public final static char scopeState[] = ScopeState.scopeState;
-
- @Override
- public final int scopeState(int index) {
- return scopeState[index];
- }
-
- public interface InSymb {
- public final static char inSymb[] = { 0, 0, 221, 4, 129, 102, 237, 242, 102, 200, 190, 7, 8, 4, 191, 184, 192,
- 64, 63, 193, 62, 194, 102, 1, 2, 134, 202, 195, 9, 1, 200, 229, 189, 152, 127, 146, 134, 183, 148, 102,
- 136, 10, 1, 1, 1, 224, 127, 196, 127, 196, 227, 196, 127, 163, 137, 127, 152, 102, 1, 9, 23, 17, 22, 21,
- 12, 11, 6, 14, 16, 15, 1, 106, 243, 13, 201, 102, 48, 127, 152, 35, 1, 68, 163, 102, 1, 241, 2, 13, 101,
- 10, 101, 10, 137, 6, 163, 102, 1, 1, 1, 1, 1, 130, 164, 131, 158, 102, 10, 85, 70, 1, 35, 61, 118, 1,
- 48, 238, 102, 129, 127, 28, 128, 102, 107, 6, 109, 115, 114, 117, 116, 120, 119, 122, 121, 123, 102, 10,
- 151, 148, 136, 205, 46, 38, 40, 44, 43, 37, 42, 47, 45, 138, 41, 39, 101, 129, 239, 217, 1, 225, 127,
- 102, 10, 102, 6, 137, 175, 129, 176, 164, 164, 164, 164, 164, 118, 102, 1, 168, 167, 204, 101, 9, 102,
- 223, 102, 131, 6, 2, 102, 102, 128, 211, 185, 97, 96, 95, 93, 94, 92, 91, 90, 89, 88, 68, 72, 71, 6, 66,
- 67, 12, 11, 81, 80, 79, 78, 76, 75, 74, 73, 82, 14, 84, 83, 87, 86, 228, 102, 10, 3, 131, 101, 1, 1,
- 139, 1, 1, 61, 244, 162, 61, 102, 48, 118, 1, 13, 2, 10, 206, 158, 207, 102, 209, 101, 210, 137, 102, 1,
- 102, 48, 118, 118, 118, 118, 118, 163, 186, 102, 1, 48, 107, 1, 205, 2, 211, 28, 128, 6, 114, 114, 109,
- 109, 116, 116, 115, 115, 115, 115, 115, 115, 119, 117, 121, 120, 222, 131, 122, 48, 102, 160, 171, 131,
- 37, 131, 131, 61, 69, 61, 102, 240, 102, 102, 209, 188, 68, 48, 102, 185, 102, 163, 175, 102, 164, 128,
- 128, 61, 61, 231, 102, 171, 126, 118, 1, 118, 118, 163, 48, 206, 226, 61, 152, 127, 198, 188, 185, 175,
- 118, 188, 48, 233, 245, 70, 35, 101, 234, 126, 171, 131, 139, 48, 61, 198, 127, 153, 68, 162, 70, 35,
- 171, 126, 118, 99, 127, 69, 162, 118, 171, 162, 118 };
- }
-
- public final static char inSymb[] = InSymb.inSymb;
-
- @Override
- public final int inSymb(int index) {
- return inSymb[index];
- }
-
- public interface Name {
- public final static String name[] = { "", "[", "(", "{", ".", "->", "++", "--", "&", "*", "+", "-", "~", "!",
- "/", "%", ">>", "<<", "<", ">", "<=", ">=", "==", "!=", "^", "|", "&&", "||", "?", ":", "...", "=",
- "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", ",", ">?", "<?", "$empty", "auto",
- "break", "case", "char", "const", "continue", "default", "do", "double", "else", "enum", "extern",
- "float", "for", "goto", "if", "inline", "int", "long", "register", "restrict", "return", "short",
- "signed", "sizeof", "static", "struct", "switch", "typedef", "union", "unsigned", "void", "volatile",
- "while", "_Bool", "_Complex", "_Imaginary", "integer", "floating", "charconst", "stringlit",
- "identifier", "Completion", "EndOfCompletion", "Invalid", "RightBracket", "RightParen", "RightBrace",
- "SemiColon", "typeof", "__alignof__", "__attribute__", "__declspec", "asm", "ERROR_TOKEN", "EOF_TOKEN",
- "]", ")", "}", ";", "identifier_token", "expression", "postfix_expression", "member_name", "type_id",
- "initializer_list", "unary_expression", "cast_expression", "multiplicative_expression",
- "additive_expression", "shift_expression", "relational_expression", "equality_expression",
- "and_expression", "exclusive_or_expression", "inclusive_or_expression", "logical_and_expression",
- "logical_or_expression", "assignment_expression", "expression_in_statement", "expression_list_actual",
- "constant_expression", "statement", "compound_statement", "block_item_list", "block_item",
- "declaration", "declaration_specifiers", "init_declarator_list", "simple_declaration_specifiers",
- "struct_or_union_declaration_sp" + "ecifiers", "elaborated_declaration_specifi" + "ers",
- "enum_declaration_specifiers", "typdef_name_declaration_specif" + "iers",
- "no_type_declaration_specifier", "type_qualifier", "no_type_declaration_specifiers",
- "simple_type_specifier", "struct_or_union_specifier", "elaborated_specifier", "enum_specifier",
- "type_name_specifier", "init_declarator", "complete_declarator", "initializer", "declarator",
- "struct_or_union", "struct_declaration_list", "struct_declaration", "specifier_qualifier_list",
- "struct_declarator_list", "complete_struct_declarator", "struct_declarator", "enumerator_list",
- "enumerator", "direct_declarator", "pointer_seq", "array_direct_declarator", "basic_direct_declarator",
- "knr_direct_declarator", "array_modifier", "function_direct_declarator", "parameter_type_list",
- "function_declarator", "identifier_list", "knr_function_declarator", "array_modifier_type_qualifiers",
- "type_qualifier_list", "parameter_list", "parameter_declaration", "complete_parameter_declarator",
- "abstract_declarator", "direct_abstract_declarator", "basic_direct_abstract_declarat" + "or",
- "array_direct_abstract_declarat" + "or", "initializer_seq", "designated_initializer", "designation",
- "designator_list", "designator", "external_declaration_list", "external_declaration",
- "declaration_list", "function_body", "attribute_or_decl_specifier",
- "attribute_or_decl_specifier_se" + "q", "word", "extended_decl_modifier_seq", "extended_decl_modifier",
- "extended_asm_param", "case_range_expression", "typeof_declaration_specifiers", "typeof_type_specifier",
- "field_name_designator" };
- }
-
- public final static String name[] = Name.name;
-
- @Override
- public final String name(int index) {
- return name[index];
- }
-
- public final static int ERROR_SYMBOL = 34, SCOPE_UBOUND = 91, SCOPE_SIZE = 92, MAX_NAME_LENGTH = 38;
-
- @Override
- public final int getErrorSymbol() {
- return ERROR_SYMBOL;
- }
-
- @Override
- public final int getScopeUbound() {
- return SCOPE_UBOUND;
- }
-
- @Override
- public final int getScopeSize() {
- return SCOPE_SIZE;
- }
-
- @Override
- public final int getMaxNameLength() {
- return MAX_NAME_LENGTH;
- }
-
- public final static int NUM_STATES = 375, NT_OFFSET = 100, LA_STATE_OFFSET = 3780, MAX_LA = 2147483647,
- NUM_RULES = 388, NUM_NONTERMINALS = 147, NUM_SYMBOLS = 247, SEGMENT_SIZE = 8192, START_STATE = 2590,
- IDENTIFIER_SYMBOL = 0, EOFT_SYMBOL = 98, EOLT_SYMBOL = 98, ACCEPT_ACTION = 3241, ERROR_ACTION = 3392;
-
- public final static boolean BACKTRACK = true;
-
- @Override
- public final int getNumStates() {
- return NUM_STATES;
- }
-
- @Override
- public final int getNtOffset() {
- return NT_OFFSET;
- }
-
- @Override
- public final int getLaStateOffset() {
- return LA_STATE_OFFSET;
- }
-
- @Override
- public final int getMaxLa() {
- return MAX_LA;
- }
-
- @Override
- public final int getNumRules() {
- return NUM_RULES;
- }
-
- @Override
- public final int getNumNonterminals() {
- return NUM_NONTERMINALS;
- }
-
- @Override
- public final int getNumSymbols() {
- return NUM_SYMBOLS;
- }
-
- @Override
- public final int getSegmentSize() {
- return SEGMENT_SIZE;
- }
-
- @Override
- public final int getStartState() {
- return START_STATE;
- }
-
- @Override
- public final int getStartSymbol() {
- return lhs[0];
- }
-
- public final int getIdentifierSymbol() {
- return IDENTIFIER_SYMBOL;
- }
-
- @Override
- public final int getEoftSymbol() {
- return EOFT_SYMBOL;
- }
-
- @Override
- public final int getEoltSymbol() {
- return EOLT_SYMBOL;
- }
-
- @Override
- public final int getAcceptAction() {
- return ACCEPT_ACTION;
- }
-
- @Override
- public final int getErrorAction() {
- return ERROR_ACTION;
- }
-
- @Override
- public final boolean isValidForParser() {
- return isValidForParser;
- }
-
- @Override
- public final boolean getBacktrack() {
- return BACKTRACK;
- }
-
- @Override
- public final int originalState(int state) {
- return -baseCheck[state];
- }
-
- @Override
- public final int asi(int state) {
- return asb[originalState(state)];
- }
-
- @Override
- public final int nasi(int state) {
- return nasb[originalState(state)];
- }
-
- @Override
- public final int inSymbol(int state) {
- return inSymb[originalState(state)];
- }
-
- @Override
- public final int ntAction(int state, int sym) {
- return baseAction[state + sym];
- }
-
- @Override
- public final int tAction(int state, int sym) {
- int i = baseAction[state], k = i + sym;
- return termAction[termCheck[k] == sym ? k : i];
- }
-
- @Override
- public final int lookAhead(int la_state, int sym) {
- int k = la_state + sym;
- return termAction[termCheck[k] == sym ? k : la_state];
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gcc/GCCParsersym.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gcc/GCCParsersym.java
deleted file mode 100644
index f8acf077092..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gcc/GCCParsersym.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2010 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.dom.lrparser.gcc;
-
-public interface GCCParsersym {
- public final static int TK_auto = 29, TK_break = 38, TK_case = 39, TK_char = 49, TK_const = 24, TK_continue = 40,
- TK_default = 41, TK_do = 42, TK_double = 50, TK_else = 99, TK_enum = 62, TK_extern = 30, TK_float = 51,
- TK_for = 43, TK_goto = 44, TK_if = 45, TK_inline = 31, TK_int = 52, TK_long = 53, TK_register = 32,
- TK_restrict = 27, TK_return = 46, TK_short = 54, TK_signed = 55, TK_sizeof = 17, TK_static = 28,
- TK_struct = 63, TK_switch = 47, TK_typedef = 33, TK_union = 64, TK_unsigned = 56, TK_void = 57,
- TK_volatile = 25, TK_while = 37, TK__Bool = 58, TK__Complex = 59, TK__Imaginary = 60, TK_integer = 18,
- TK_floating = 19, TK_charconst = 20, TK_stringlit = 13, TK_identifier = 2, TK_Completion = 5,
- TK_EndOfCompletion = 3, TK_Invalid = 100, TK_LeftBracket = 35, TK_LeftParen = 1, TK_LeftBrace = 10,
- TK_Dot = 70, TK_Arrow = 85, TK_PlusPlus = 15, TK_MinusMinus = 16, TK_And = 14, TK_Star = 6, TK_Plus = 11,
- TK_Minus = 12, TK_Tilde = 21, TK_Bang = 22, TK_Slash = 71, TK_Percent = 72, TK_RightShift = 66,
- TK_LeftShift = 67, TK_LT = 73, TK_GT = 74, TK_LE = 75, TK_GE = 76, TK_EQ = 80, TK_NE = 81, TK_Caret = 82,
- TK_Or = 83, TK_AndAnd = 84, TK_OrOr = 86, TK_Question = 87, TK_Colon = 61, TK_DotDotDot = 69,
- TK_Assign = 68, TK_StarAssign = 88, TK_SlashAssign = 89, TK_PercentAssign = 90, TK_PlusAssign = 91,
- TK_MinusAssign = 92, TK_RightShiftAssign = 93, TK_LeftShiftAssign = 94, TK_AndAssign = 95,
- TK_CaretAssign = 96, TK_OrAssign = 97, TK_Comma = 48, TK_RightBracket = 77, TK_RightParen = 36,
- TK_RightBrace = 65, TK_SemiColon = 26, TK_typeof = 9, TK___alignof__ = 23, TK___attribute__ = 7,
- TK___declspec = 8, TK_MAX = 78, TK_MIN = 79, TK_asm = 4, TK_ERROR_TOKEN = 34, TK_EOF_TOKEN = 98;
-
- public final static String orderedTerminalSymbols[] = { "", "LeftParen", "identifier", "EndOfCompletion", "asm",
- "Completion", "Star", "__attribute__", "__declspec", "typeof", "LeftBrace", "Plus", "Minus", "stringlit",
- "And", "PlusPlus", "MinusMinus", "sizeof", "integer", "floating", "charconst", "Tilde", "Bang",
- "__alignof__", "const", "volatile", "SemiColon", "restrict", "static", "auto", "extern", "inline",
- "register", "typedef", "ERROR_TOKEN", "LeftBracket", "RightParen", "while", "break", "case", "continue",
- "default", "do", "for", "goto", "if", "return", "switch", "Comma", "char", "double", "float", "int", "long",
- "short", "signed", "unsigned", "void", "_Bool", "_Complex", "_Imaginary", "Colon", "enum", "struct",
- "union", "RightBrace", "RightShift", "LeftShift", "Assign", "DotDotDot", "Dot", "Slash", "Percent", "LT",
- "GT", "LE", "GE", "RightBracket", "MAX", "MIN", "EQ", "NE", "Caret", "Or", "AndAnd", "Arrow", "OrOr",
- "Question", "StarAssign", "SlashAssign", "PercentAssign", "PlusAssign", "MinusAssign", "RightShiftAssign",
- "LeftShiftAssign", "AndAssign", "CaretAssign", "OrAssign", "EOF_TOKEN", "else", "Invalid" };
-
- public final static boolean isValidForParser = true;
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gcc/GCCSizeofExpressionParser.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gcc/GCCSizeofExpressionParser.java
deleted file mode 100644
index d3a1bd6bb4f..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gcc/GCCSizeofExpressionParser.java
+++ /dev/null
@@ -1,1818 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2015 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.dom.lrparser.gcc;
-
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.cdt.core.dom.ast.IASTBinaryExpression;
-import org.eclipse.cdt.core.dom.ast.IASTCastExpression;
-import org.eclipse.cdt.core.dom.ast.IASTCompletionNode;
-import org.eclipse.cdt.core.dom.ast.IASTCompositeTypeSpecifier;
-import org.eclipse.cdt.core.dom.ast.IASTElaboratedTypeSpecifier;
-import org.eclipse.cdt.core.dom.ast.IASTExpression;
-import org.eclipse.cdt.core.dom.ast.IASTLiteralExpression;
-import org.eclipse.cdt.core.dom.ast.IASTTypeIdExpression;
-import org.eclipse.cdt.core.dom.ast.IASTUnaryExpression;
-import org.eclipse.cdt.core.dom.lrparser.CPreprocessorAdapter;
-import org.eclipse.cdt.core.dom.lrparser.IDOMTokenMap;
-import org.eclipse.cdt.core.dom.lrparser.ISecondaryParser;
-import org.eclipse.cdt.core.dom.lrparser.ITokenCollector;
-import org.eclipse.cdt.core.dom.lrparser.action.ITokenMap;
-import org.eclipse.cdt.core.dom.lrparser.action.ITokenStream;
-import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack;
-import org.eclipse.cdt.core.dom.lrparser.action.TokenMap;
-import org.eclipse.cdt.core.dom.lrparser.action.gnu.GCCBuildASTParserAction;
-import org.eclipse.cdt.core.dom.lrparser.action.gnu.GCCSecondaryParserFactory;
-import org.eclipse.cdt.core.dom.lrparser.action.gnu.GNUBuildASTParserAction;
-import org.eclipse.cdt.core.dom.lrparser.lpgextensions.FixedBacktrackingParser;
-import org.eclipse.cdt.core.dom.parser.IBuiltinBindingsProvider;
-import org.eclipse.cdt.core.index.IIndex;
-import org.eclipse.cdt.core.parser.IScanner;
-import org.eclipse.cdt.internal.core.dom.parser.c.CNodeFactory;
-
-import lpg.lpgjavaruntime.BadParseException;
-import lpg.lpgjavaruntime.BadParseSymFileException;
-import lpg.lpgjavaruntime.DiagnoseParser;
-import lpg.lpgjavaruntime.ErrorToken;
-import lpg.lpgjavaruntime.IToken;
-import lpg.lpgjavaruntime.LexStream;
-import lpg.lpgjavaruntime.Monitor;
-import lpg.lpgjavaruntime.NotBacktrackParseTableException;
-import lpg.lpgjavaruntime.NullExportedSymbolsException;
-import lpg.lpgjavaruntime.NullTerminalSymbolsException;
-import lpg.lpgjavaruntime.ParseErrorCodes;
-import lpg.lpgjavaruntime.ParseTable;
-import lpg.lpgjavaruntime.PrsStream;
-import lpg.lpgjavaruntime.RuleAction;
-import lpg.lpgjavaruntime.Token;
-import lpg.lpgjavaruntime.UndefinedEofSymbolException;
-import lpg.lpgjavaruntime.UnimplementedTerminalsException;
-
-public class GCCSizeofExpressionParser extends PrsStream
- implements RuleAction, ITokenStream, ITokenCollector, ISecondaryParser<IASTExpression> {
- private static ParseTable prs = new GCCSizeofExpressionParserprs();
- private FixedBacktrackingParser btParser;
-
- public FixedBacktrackingParser getParser() {
- return btParser;
- }
-
- private void setResult(Object object) {
- btParser.setSym1(object);
- }
-
- public Object getRhsSym(int i) {
- return btParser.getSym(i);
- }
-
- public int getRhsTokenIndex(int i) {
- return btParser.getToken(i);
- }
-
- public IToken getRhsIToken(int i) {
- return super.getIToken(getRhsTokenIndex(i));
- }
-
- public int getRhsFirstTokenIndex(int i) {
- return btParser.getFirstToken(i);
- }
-
- public IToken getRhsFirstIToken(int i) {
- return super.getIToken(getRhsFirstTokenIndex(i));
- }
-
- public int getRhsLastTokenIndex(int i) {
- return btParser.getLastToken(i);
- }
-
- public IToken getRhsLastIToken(int i) {
- return super.getIToken(getRhsLastTokenIndex(i));
- }
-
- public int getLeftSpan() {
- return btParser.getFirstToken();
- }
-
- @Override
- public IToken getLeftIToken() {
- return super.getIToken(getLeftSpan());
- }
-
- public int getRightSpan() {
- return btParser.getLastToken();
- }
-
- @Override
- public IToken getRightIToken() {
- return super.getIToken(getRightSpan());
- }
-
- public int getRhsErrorTokenIndex(int i) {
- int index = btParser.getToken(i);
- IToken err = super.getIToken(index);
- return (err instanceof ErrorToken ? index : 0);
- }
-
- public ErrorToken getRhsErrorIToken(int i) {
- int index = btParser.getToken(i);
- IToken err = super.getIToken(index);
- return (ErrorToken) (err instanceof ErrorToken ? err : null);
- }
-
- public GCCSizeofExpressionParser(LexStream lexStream) {
- super(lexStream);
-
- try {
- super.remapTerminalSymbols(orderedTerminalSymbols(), GCCSizeofExpressionParserprs.EOFT_SYMBOL);
- } catch (NullExportedSymbolsException e) {
- } catch (NullTerminalSymbolsException e) {
- } catch (UnimplementedTerminalsException e) {
- java.util.ArrayList unimplemented_symbols = e.getSymbols();
- System.out.println("The Lexer will not scan the following token(s):");
- for (int i = 0; i < unimplemented_symbols.size(); i++) {
- Integer id = (Integer) unimplemented_symbols.get(i);
- System.out.println(" " + GCCSizeofExpressionParsersym.orderedTerminalSymbols[id.intValue()]);
- }
- System.out.println();
- } catch (UndefinedEofSymbolException e) {
- throw new Error(new UndefinedEofSymbolException("The Lexer does not implement the Eof symbol "
- + GCCSizeofExpressionParsersym.orderedTerminalSymbols[GCCSizeofExpressionParserprs.EOFT_SYMBOL]));
- }
- }
-
- @Override
- public String[] orderedTerminalSymbols() {
- return GCCSizeofExpressionParsersym.orderedTerminalSymbols;
- }
-
- public String getTokenKindName(int kind) {
- return GCCSizeofExpressionParsersym.orderedTerminalSymbols[kind];
- }
-
- public int getEOFTokenKind() {
- return GCCSizeofExpressionParserprs.EOFT_SYMBOL;
- }
-
- public PrsStream getParseStream() {
- return this;
- }
-
- //
- // Report error message for given error_token.
- //
- public final void reportErrorTokenMessage(int error_token, String msg) {
- int firsttok = super.getFirstErrorToken(error_token), lasttok = super.getLastErrorToken(error_token);
- String location = super.getFileName() + ':'
- + (firsttok > lasttok ? (super.getEndLine(lasttok) + ":" + super.getEndColumn(lasttok))
- : (super.getLine(error_token) + ":" + super.getColumn(error_token) + ":"
- + super.getEndLine(error_token) + ":" + super.getEndColumn(error_token)))
- + ": ";
- super.reportError((firsttok > lasttok ? ParseErrorCodes.INSERTION_CODE : ParseErrorCodes.SUBSTITUTION_CODE),
- location, msg);
- }
-
- public void parser() {
- parser(null, 0);
- }
-
- public void parser(Monitor monitor) {
- parser(monitor, 0);
- }
-
- public void parser(int error_repair_count) {
- parser(null, error_repair_count);
- }
-
- public void parser(Monitor monitor, int error_repair_count) {
- try {
- btParser = new FixedBacktrackingParser(monitor, this, prs, this);
- } catch (NotBacktrackParseTableException e) {
- throw new Error(new NotBacktrackParseTableException(
- "Regenerate GCCSizeofExpressionParserprs.java with -BACKTRACK option"));
- } catch (BadParseSymFileException e) {
- throw new Error(
- new BadParseSymFileException("Bad Parser Symbol File -- GCCSizeofExpressionParsersym.java"));
- }
-
- try {
- btParser.parse(error_repair_count);
- } catch (BadParseException e) {
- reset(e.error_token); // point to error token
- DiagnoseParser diagnoseParser = new DiagnoseParser(this, prs);
- diagnoseParser.diagnose(e.error_token);
- }
- }
-
- private GCCBuildASTParserAction action;
- private IASTCompletionNode compNode;
-
- public GCCSizeofExpressionParser(IScanner scanner, IDOMTokenMap tokenMap,
- IBuiltinBindingsProvider builtinBindingsProvider, IIndex index, Map<String, String> properties) {
- initActions(properties);
- action.initializeTranslationUnit(scanner, builtinBindingsProvider, index);
- CPreprocessorAdapter.runCPreprocessor(scanner, this, tokenMap);
- }
-
- private void initActions(Map<String, String> properties) {
- ScopedStack<Object> astStack = new ScopedStack<>();
-
- action = new GCCBuildASTParserAction(this, astStack, CNodeFactory.getDefault(),
- GCCSecondaryParserFactory.getDefault());
- action.setParserProperties(properties);
-
- gnuAction = new GNUBuildASTParserAction(this, astStack, CNodeFactory.getDefault());
- gnuAction.setParserProperties(properties);
-
- }
-
- @Override
- public void addToken(IToken token) {
- token.setKind(mapKind(token.getKind())); // TODO does mapKind need to be called?
- super.addToken(token);
- }
-
- @Override
- public IASTExpression parse() {
- // this has to be done, or... kaboom!
- setStreamLength(getSize());
-
- final int errorRepairCount = -1; // -1 means full error handling
- parser(null, errorRepairCount); // do the actual parse
- super.resetTokenStream(); // allow tokens to be garbage collected
-
- compNode = action.getASTCompletionNode(); // the completion node may be null
- return (IASTExpression) action.getParseResult();
- }
-
- @Override
- public IASTCompletionNode getCompletionNode() {
- return compNode;
- }
-
- // uncomment this method to use with backtracking parser
- @Override
- public List<IToken> getRuleTokens() {
- return getTokens().subList(getLeftSpan(), getRightSpan() + 1);
- }
-
- @Override
- public String[] getOrderedTerminalSymbols() {
- return GCCSizeofExpressionParsersym.orderedTerminalSymbols;
- }
-
- @Override
- @SuppressWarnings("nls")
- public String getName() {
- return "GCCSizeofExpressionParser";
- }
-
- private ITokenMap tokenMap = null;
-
- @Override
- public void setTokens(List<IToken> tokens) {
- resetTokenStream();
- addToken(new Token(null, 0, 0, 0)); // dummy token
- for (IToken token : tokens) {
- token.setKind(tokenMap.mapKind(token.getKind()));
- addToken(token);
- }
- addToken(new Token(null, 0, 0, GCCSizeofExpressionParsersym.TK_EOF_TOKEN));
- }
-
- public GCCSizeofExpressionParser(ITokenStream stream, Map<String, String> properties) { // constructor for creating secondary parser
- initActions(properties);
- tokenMap = new TokenMap(GCCSizeofExpressionParsersym.orderedTerminalSymbols,
- stream.getOrderedTerminalSymbols());
- }
-
- private GNUBuildASTParserAction gnuAction;
-
- @Override
- public void ruleAction(int ruleNumber) {
- switch (ruleNumber) {
-
- //
- // Rule 1: <openscope-ast> ::= $Empty
- //
- case 1: {
- action.openASTScope();
- break;
- }
-
- //
- // Rule 2: <empty> ::= $Empty
- //
- case 2: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 13: literal ::= integer
- //
- case 13: {
- action.consumeExpressionLiteral(IASTLiteralExpression.lk_integer_constant);
- break;
- }
-
- //
- // Rule 14: literal ::= floating
- //
- case 14: {
- action.consumeExpressionLiteral(IASTLiteralExpression.lk_float_constant);
- break;
- }
-
- //
- // Rule 15: literal ::= charconst
- //
- case 15: {
- action.consumeExpressionLiteral(IASTLiteralExpression.lk_char_constant);
- break;
- }
-
- //
- // Rule 16: literal ::= stringlit
- //
- case 16: {
- action.consumeExpressionLiteral(IASTLiteralExpression.lk_string_literal);
- break;
- }
-
- //
- // Rule 18: primary_expression ::= primary_expression_id
- //
- case 18: {
- action.consumeExpressionID();
- break;
- }
-
- //
- // Rule 19: primary_expression ::= ( expression )
- //
- case 19: {
- action.consumeExpressionBracketed();
- break;
- }
-
- //
- // Rule 22: postfix_expression ::= postfix_expression [ expression ]
- //
- case 22: {
- action.consumeExpressionArraySubscript();
- break;
- }
-
- //
- // Rule 23: postfix_expression ::= postfix_expression ( expression_list_opt )
- //
- case 23: {
- action.consumeExpressionFunctionCall();
- break;
- }
-
- //
- // Rule 24: postfix_expression ::= postfix_expression . member_name
- //
- case 24: {
- action.consumeExpressionFieldReference(false);
- break;
- }
-
- //
- // Rule 25: postfix_expression ::= postfix_expression -> member_name
- //
- case 25: {
- action.consumeExpressionFieldReference(true);
- break;
- }
-
- //
- // Rule 26: postfix_expression ::= postfix_expression ++
- //
- case 26: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixIncr);
- break;
- }
-
- //
- // Rule 27: postfix_expression ::= postfix_expression --
- //
- case 27: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixDecr);
- break;
- }
-
- //
- // Rule 28: postfix_expression ::= ( type_id ) initializer_list
- //
- case 28: {
- action.consumeExpressionTypeIdInitializer();
- break;
- }
-
- //
- // Rule 33: unary_expression ::= ++ unary_expression
- //
- case 33: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixIncr);
- break;
- }
-
- //
- // Rule 34: unary_expression ::= -- unary_expression
- //
- case 34: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixDecr);
- break;
- }
-
- //
- // Rule 35: unary_expression ::= & cast_expression
- //
- case 35: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_amper);
- break;
- }
-
- //
- // Rule 36: unary_expression ::= * cast_expression
- //
- case 36: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_star);
- break;
- }
-
- //
- // Rule 37: unary_expression ::= + cast_expression
- //
- case 37: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_plus);
- break;
- }
-
- //
- // Rule 38: unary_expression ::= - cast_expression
- //
- case 38: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_minus);
- break;
- }
-
- //
- // Rule 39: unary_expression ::= ~ cast_expression
- //
- case 39: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_tilde);
- break;
- }
-
- //
- // Rule 40: unary_expression ::= ! cast_expression
- //
- case 40: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_not);
- break;
- }
-
- //
- // Rule 41: unary_expression ::= sizeof unary_expression
- //
- case 41: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_sizeof);
- break;
- }
-
- //
- // Rule 43: cast_expression ::= ( type_id ) cast_expression
- //
- case 43: {
- action.consumeExpressionCast(IASTCastExpression.op_cast);
- break;
- }
-
- //
- // Rule 45: multiplicative_expression ::= multiplicative_expression * cast_expression
- //
- case 45: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_multiply);
- break;
- }
-
- //
- // Rule 46: multiplicative_expression ::= multiplicative_expression / cast_expression
- //
- case 46: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_divide);
- break;
- }
-
- //
- // Rule 47: multiplicative_expression ::= multiplicative_expression % cast_expression
- //
- case 47: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_modulo);
- break;
- }
-
- //
- // Rule 49: additive_expression ::= additive_expression + multiplicative_expression
- //
- case 49: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_plus);
- break;
- }
-
- //
- // Rule 50: additive_expression ::= additive_expression - multiplicative_expression
- //
- case 50: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_minus);
- break;
- }
-
- //
- // Rule 52: shift_expression ::= shift_expression << additive_expression
- //
- case 52: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftLeft);
- break;
- }
-
- //
- // Rule 53: shift_expression ::= shift_expression >> additive_expression
- //
- case 53: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftRight);
- break;
- }
-
- //
- // Rule 55: relational_expression ::= relational_expression < shift_expression
- //
- case 55: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_lessThan);
- break;
- }
-
- //
- // Rule 56: relational_expression ::= relational_expression > shift_expression
- //
- case 56: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_greaterThan);
- break;
- }
-
- //
- // Rule 57: relational_expression ::= relational_expression <= shift_expression
- //
- case 57: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_lessEqual);
- break;
- }
-
- //
- // Rule 58: relational_expression ::= relational_expression >= shift_expression
- //
- case 58: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_greaterEqual);
- break;
- }
-
- //
- // Rule 60: equality_expression ::= equality_expression == relational_expression
- //
- case 60: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_equals);
- break;
- }
-
- //
- // Rule 61: equality_expression ::= equality_expression != relational_expression
- //
- case 61: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_notequals);
- break;
- }
-
- //
- // Rule 63: and_expression ::= and_expression & equality_expression
- //
- case 63: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryAnd);
- break;
- }
-
- //
- // Rule 65: exclusive_or_expression ::= exclusive_or_expression ^ and_expression
- //
- case 65: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryXor);
- break;
- }
-
- //
- // Rule 67: inclusive_or_expression ::= inclusive_or_expression | exclusive_or_expression
- //
- case 67: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryOr);
- break;
- }
-
- //
- // Rule 69: logical_and_expression ::= logical_and_expression && inclusive_or_expression
- //
- case 69: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_logicalAnd);
- break;
- }
-
- //
- // Rule 71: logical_or_expression ::= logical_or_expression || logical_and_expression
- //
- case 71: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_logicalOr);
- break;
- }
-
- //
- // Rule 73: conditional_expression ::= logical_or_expression ? expression : assignment_expression
- //
- case 73: {
- action.consumeExpressionConditional();
- break;
- }
-
- //
- // Rule 75: assignment_expression ::= unary_expression = assignment_expression
- //
- case 75: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_assign);
- break;
- }
-
- //
- // Rule 76: assignment_expression ::= unary_expression *= assignment_expression
- //
- case 76: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_multiplyAssign);
- break;
- }
-
- //
- // Rule 77: assignment_expression ::= unary_expression /= assignment_expression
- //
- case 77: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_divideAssign);
- break;
- }
-
- //
- // Rule 78: assignment_expression ::= unary_expression %= assignment_expression
- //
- case 78: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_moduloAssign);
- break;
- }
-
- //
- // Rule 79: assignment_expression ::= unary_expression += assignment_expression
- //
- case 79: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_plusAssign);
- break;
- }
-
- //
- // Rule 80: assignment_expression ::= unary_expression -= assignment_expression
- //
- case 80: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_minusAssign);
- break;
- }
-
- //
- // Rule 81: assignment_expression ::= unary_expression <<= assignment_expression
- //
- case 81: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftLeftAssign);
- break;
- }
-
- //
- // Rule 82: assignment_expression ::= unary_expression >>= assignment_expression
- //
- case 82: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftRightAssign);
- break;
- }
-
- //
- // Rule 83: assignment_expression ::= unary_expression &= assignment_expression
- //
- case 83: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryAndAssign);
- break;
- }
-
- //
- // Rule 84: assignment_expression ::= unary_expression ^= assignment_expression
- //
- case 84: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryXorAssign);
- break;
- }
-
- //
- // Rule 85: assignment_expression ::= unary_expression |= assignment_expression
- //
- case 85: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryOrAssign);
- break;
- }
-
- //
- // Rule 88: expression_list ::= <openscope-ast> expression_list_actual
- //
- case 88: {
- action.consumeExpressionList();
- break;
- }
-
- //
- // Rule 90: expression_list_opt ::= $Empty
- //
- case 90: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 100: statement ::= ERROR_TOKEN
- //
- case 100: {
- action.consumeStatementProblem();
- break;
- }
-
- //
- // Rule 101: labeled_statement ::= identifier_token : statement
- //
- case 101: {
- action.consumeStatementLabeled();
- break;
- }
-
- //
- // Rule 102: labeled_statement ::= case constant_expression : statement
- //
- case 102: {
- action.consumeStatementCase();
- break;
- }
-
- //
- // Rule 103: labeled_statement ::= default : statement
- //
- case 103: {
- action.consumeStatementDefault();
- break;
- }
-
- //
- // Rule 104: compound_statement ::= { }
- //
- case 104: {
- action.consumeStatementCompoundStatement(false);
- break;
- }
-
- //
- // Rule 105: compound_statement ::= { <openscope-ast> block_item_list }
- //
- case 105: {
- action.consumeStatementCompoundStatement(true);
- break;
- }
-
- //
- // Rule 109: block_item ::= declaration
- //
- case 109: {
- action.consumeStatementDeclarationWithDisambiguation();
- break;
- }
-
- //
- // Rule 110: expression_statement ::= ;
- //
- case 110: {
- action.consumeStatementNull();
- break;
- }
-
- //
- // Rule 111: expression_statement ::= expression_in_statement ;
- //
- case 111: {
- action.consumeStatementExpression();
- break;
- }
-
- //
- // Rule 112: selection_statement ::= if ( expression ) statement
- //
- case 112: {
- action.consumeStatementIf(false);
- break;
- }
-
- //
- // Rule 113: selection_statement ::= if ( expression ) statement else statement
- //
- case 113: {
- action.consumeStatementIf(true);
- break;
- }
-
- //
- // Rule 114: selection_statement ::= switch ( expression ) statement
- //
- case 114: {
- action.consumeStatementSwitch();
- break;
- }
-
- //
- // Rule 116: expression_opt ::= $Empty
- //
- case 116: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 117: iteration_statement ::= do statement while ( expression ) ;
- //
- case 117: {
- action.consumeStatementDoLoop(true);
- break;
- }
-
- //
- // Rule 118: iteration_statement ::= do statement
- //
- case 118: {
- action.consumeStatementDoLoop(false);
- break;
- }
-
- //
- // Rule 119: iteration_statement ::= while ( expression ) statement
- //
- case 119: {
- action.consumeStatementWhileLoop();
- break;
- }
-
- //
- // Rule 120: iteration_statement ::= for ( expression_opt ; expression_opt ; expression_opt ) statement
- //
- case 120: {
- action.consumeStatementForLoop();
- break;
- }
-
- //
- // Rule 121: iteration_statement ::= for ( declaration expression_opt ; expression_opt ) statement
- //
- case 121: {
- action.consumeStatementForLoop();
- break;
- }
-
- //
- // Rule 122: jump_statement ::= goto identifier_token ;
- //
- case 122: {
- action.consumeStatementGoto();
- break;
- }
-
- //
- // Rule 123: jump_statement ::= continue ;
- //
- case 123: {
- action.consumeStatementContinue();
- break;
- }
-
- //
- // Rule 124: jump_statement ::= break ;
- //
- case 124: {
- action.consumeStatementBreak();
- break;
- }
-
- //
- // Rule 125: jump_statement ::= return ;
- //
- case 125: {
- action.consumeStatementReturn(false);
- break;
- }
-
- //
- // Rule 126: jump_statement ::= return expression ;
- //
- case 126: {
- action.consumeStatementReturn(true);
- break;
- }
-
- //
- // Rule 127: declaration ::= declaration_specifiers ;
- //
- case 127: {
- action.consumeDeclarationSimple(false);
- break;
- }
-
- //
- // Rule 128: declaration ::= declaration_specifiers <openscope-ast> init_declarator_list ;
- //
- case 128: {
- action.consumeDeclarationSimple(true);
- break;
- }
-
- //
- // Rule 129: declaration_specifiers ::= <openscope-ast> simple_declaration_specifiers
- //
- case 129: {
- action.consumeDeclarationSpecifiersSimple();
- break;
- }
-
- //
- // Rule 130: declaration_specifiers ::= <openscope-ast> struct_or_union_declaration_specifiers
- //
- case 130: {
- action.consumeDeclarationSpecifiersStructUnionEnum();
- break;
- }
-
- //
- // Rule 131: declaration_specifiers ::= <openscope-ast> elaborated_declaration_specifiers
- //
- case 131: {
- action.consumeDeclarationSpecifiersStructUnionEnum();
- break;
- }
-
- //
- // Rule 132: declaration_specifiers ::= <openscope-ast> enum_declaration_specifiers
- //
- case 132: {
- action.consumeDeclarationSpecifiersStructUnionEnum();
- break;
- }
-
- //
- // Rule 133: declaration_specifiers ::= <openscope-ast> typdef_name_declaration_specifiers
- //
- case 133: {
- action.consumeDeclarationSpecifiersTypedefName();
- break;
- }
-
- //
- // Rule 158: init_declarator ::= complete_declarator = initializer
- //
- case 158: {
- action.consumeDeclaratorWithInitializer(true);
- break;
- }
-
- //
- // Rule 160: storage_class_specifier ::= storage_class_specifier_token
- //
- case 160: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 166: simple_type_specifier ::= simple_type_specifier_token
- //
- case 166: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 179: type_name_specifier ::= identifier_token
- //
- case 179: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 180: struct_or_union_specifier ::= struct_or_union struct_or_union_specifier_hook { <openscope-ast> struct_declaration_list_opt }
- //
- case 180: {
- action.consumeTypeSpecifierComposite(false);
- break;
- }
-
- //
- // Rule 181: struct_or_union_specifier ::= struct_or_union struct_or_union_specifier_hook identifier_token struct_or_union_specifier_suffix_hook { <openscope-ast> struct_declaration_list_opt }
- //
- case 181: {
- action.consumeTypeSpecifierComposite(true);
- break;
- }
-
- //
- // Rule 186: elaborated_specifier ::= struct elaborated_specifier_hook identifier_token
- //
- case 186: {
- action.consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_struct);
- break;
- }
-
- //
- // Rule 187: elaborated_specifier ::= union elaborated_specifier_hook identifier_token
- //
- case 187: {
- action.consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_union);
- break;
- }
-
- //
- // Rule 188: elaborated_specifier ::= enum elaborated_specifier_hook identifier_token
- //
- case 188: {
- action.consumeTypeSpecifierElaborated(IASTElaboratedTypeSpecifier.k_enum);
- break;
- }
-
- //
- // Rule 194: struct_declaration ::= specifier_qualifier_list <openscope-ast> struct_declarator_list ;
- //
- case 194: {
- action.consumeStructDeclaration(true);
- break;
- }
-
- //
- // Rule 195: struct_declaration ::= specifier_qualifier_list ;
- //
- case 195: {
- action.consumeStructDeclaration(false);
- break;
- }
-
- //
- // Rule 196: struct_declaration ::= ERROR_TOKEN
- //
- case 196: {
- action.consumeDeclarationProblem();
- break;
- }
-
- //
- // Rule 202: struct_declarator ::= : constant_expression
- //
- case 202: {
- action.consumeBitField(false);
- break;
- }
-
- //
- // Rule 203: struct_declarator ::= declarator : constant_expression
- //
- case 203: {
- action.consumeBitField(true);
- break;
- }
-
- //
- // Rule 204: enum_specifier ::= enum enum_specifier_hook { <openscope-ast> enumerator_list_opt comma_opt }
- //
- case 204: {
- action.consumeTypeSpecifierEnumeration(false);
- break;
- }
-
- //
- // Rule 205: enum_specifier ::= enum enum_specifier_hook identifier_token { <openscope-ast> enumerator_list_opt comma_opt }
- //
- case 205: {
- action.consumeTypeSpecifierEnumeration(true);
- break;
- }
-
- //
- // Rule 211: enumerator ::= identifier_token
- //
- case 211: {
- action.consumeEnumerator(false);
- break;
- }
-
- //
- // Rule 212: enumerator ::= identifier_token = constant_expression
- //
- case 212: {
- action.consumeEnumerator(true);
- break;
- }
-
- //
- // Rule 213: type_qualifier ::= type_qualifier_token
- //
- case 213: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 217: function_specifier ::= inline
- //
- case 217: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 219: declarator ::= <openscope-ast> pointer_seq direct_declarator
- //
- case 219: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 224: basic_direct_declarator ::= declarator_id_name
- //
- case 224: {
- action.consumeDirectDeclaratorIdentifier();
- break;
- }
-
- //
- // Rule 225: basic_direct_declarator ::= ( declarator )
- //
- case 225: {
- action.consumeDirectDeclaratorBracketed();
- break;
- }
-
- //
- // Rule 226: declarator_id_name ::= identifier
- //
- case 226: {
- action.consumeIdentifierName();
- break;
- }
-
- //
- // Rule 227: array_direct_declarator ::= basic_direct_declarator array_modifier
- //
- case 227: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 228: array_direct_declarator ::= array_direct_declarator array_modifier
- //
- case 228: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 230: function_direct_declarator ::= basic_direct_declarator ( <openscope-ast> parameter_type_list )
- //
- case 230: {
- action.consumeDirectDeclaratorFunctionDeclarator(true, true);
- break;
- }
-
- //
- // Rule 231: function_direct_declarator ::= basic_direct_declarator ( )
- //
- case 231: {
- action.consumeDirectDeclaratorFunctionDeclarator(true, false);
- break;
- }
-
- //
- // Rule 233: function_declarator ::= <openscope-ast> pointer_seq function_direct_declarator
- //
- case 233: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 234: knr_direct_declarator ::= basic_direct_declarator ( <openscope-ast> identifier_list )
- //
- case 234: {
- action.consumeDirectDeclaratorFunctionDeclaratorKnR();
- break;
- }
-
- //
- // Rule 236: knr_function_declarator ::= <openscope-ast> pointer_seq knr_direct_declarator
- //
- case 236: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 237: identifier_list ::= identifier
- //
- case 237: {
- action.consumeIdentifierKnR();
- break;
- }
-
- //
- // Rule 238: identifier_list ::= identifier_list , identifier
- //
- case 238: {
- action.consumeIdentifierKnR();
- break;
- }
-
- //
- // Rule 239: array_modifier ::= [ ]
- //
- case 239: {
- action.consumeDirectDeclaratorArrayModifier(false);
- break;
- }
-
- //
- // Rule 240: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers ]
- //
- case 240: {
- action.consumeDirectDeclaratorModifiedArrayModifier(false, false, true, false);
- break;
- }
-
- //
- // Rule 241: array_modifier ::= [ assignment_expression ]
- //
- case 241: {
- action.consumeDirectDeclaratorArrayModifier(true);
- break;
- }
-
- //
- // Rule 242: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers assignment_expression ]
- //
- case 242: {
- action.consumeDirectDeclaratorModifiedArrayModifier(false, false, true, true);
- break;
- }
-
- //
- // Rule 243: array_modifier ::= [ static assignment_expression ]
- //
- case 243: {
- action.consumeDirectDeclaratorModifiedArrayModifier(true, false, false, true);
- break;
- }
-
- //
- // Rule 244: array_modifier ::= [ static <openscope-ast> array_modifier_type_qualifiers assignment_expression ]
- //
- case 244: {
- action.consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true);
- break;
- }
-
- //
- // Rule 245: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers static assignment_expression ]
- //
- case 245: {
- action.consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true);
- break;
- }
-
- //
- // Rule 246: array_modifier ::= [ * ]
- //
- case 246: {
- action.consumeDirectDeclaratorModifiedArrayModifier(false, true, false, false);
- break;
- }
-
- //
- // Rule 247: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers * ]
- //
- case 247: {
- action.consumeDirectDeclaratorModifiedArrayModifier(false, true, true, false);
- break;
- }
-
- //
- // Rule 249: pointer_seq ::= pointer_hook * pointer_hook
- //
- case 249: {
- action.consumePointer();
- break;
- }
-
- //
- // Rule 250: pointer_seq ::= pointer_seq pointer_hook * pointer_hook
- //
- case 250: {
- action.consumePointer();
- break;
- }
-
- //
- // Rule 251: pointer_seq ::= pointer_hook * pointer_hook <openscope-ast> type_qualifier_list
- //
- case 251: {
- action.consumePointerTypeQualifierList();
- break;
- }
-
- //
- // Rule 252: pointer_seq ::= pointer_seq pointer_hook * pointer_hook <openscope-ast> type_qualifier_list
- //
- case 252: {
- action.consumePointerTypeQualifierList();
- break;
- }
-
- //
- // Rule 256: parameter_type_list ::= parameter_list
- //
- case 256: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 257: parameter_type_list ::= parameter_list , ...
- //
- case 257: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 258: parameter_type_list ::= ...
- //
- case 258: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 261: parameter_declaration ::= declaration_specifiers complete_parameter_declarator
- //
- case 261: {
- action.consumeParameterDeclaration();
- break;
- }
-
- //
- // Rule 262: parameter_declaration ::= declaration_specifiers
- //
- case 262: {
- action.consumeParameterDeclarationWithoutDeclarator();
- break;
- }
-
- //
- // Rule 265: type_id ::= specifier_qualifier_list
- //
- case 265: {
- action.consumeTypeId(false);
- break;
- }
-
- //
- // Rule 266: type_id ::= specifier_qualifier_list abstract_declarator
- //
- case 266: {
- action.consumeTypeId(true);
- break;
- }
-
- //
- // Rule 268: abstract_declarator ::= <openscope-ast> pointer_seq
- //
- case 268: {
- action.consumeDeclaratorWithPointer(false);
- break;
- }
-
- //
- // Rule 269: abstract_declarator ::= <openscope-ast> pointer_seq direct_abstract_declarator
- //
- case 269: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 273: basic_direct_abstract_declarator ::= ( abstract_declarator )
- //
- case 273: {
- action.consumeDirectDeclaratorBracketed();
- break;
- }
-
- //
- // Rule 274: array_direct_abstract_declarator ::= array_modifier
- //
- case 274: {
- action.consumeDirectDeclaratorArrayDeclarator(false);
- break;
- }
-
- //
- // Rule 275: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier
- //
- case 275: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 276: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier
- //
- case 276: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 277: function_direct_abstract_declarator ::= ( )
- //
- case 277: {
- action.consumeDirectDeclaratorFunctionDeclarator(false, false);
- break;
- }
-
- //
- // Rule 278: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( )
- //
- case 278: {
- action.consumeDirectDeclaratorFunctionDeclarator(true, false);
- break;
- }
-
- //
- // Rule 279: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_type_list )
- //
- case 279: {
- action.consumeDirectDeclaratorFunctionDeclarator(false, true);
- break;
- }
-
- //
- // Rule 280: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( <openscope-ast> parameter_type_list )
- //
- case 280: {
- action.consumeDirectDeclaratorFunctionDeclarator(true, true);
- break;
- }
-
- //
- // Rule 281: initializer ::= assignment_expression
- //
- case 281: {
- action.consumeInitializer();
- break;
- }
-
- //
- // Rule 282: initializer ::= initializer_list
- //
- case 282: {
- action.consumeInitializer();
- break;
- }
-
- //
- // Rule 283: initializer_list ::= start_initializer_list { <openscope-ast> initializer_seq comma_opt } end_initializer_list
- //
- case 283: {
- action.consumeInitializerList();
- break;
- }
-
- //
- // Rule 284: initializer_list ::= { <openscope-ast> }
- //
- case 284: {
- action.consumeInitializerList();
- break;
- }
-
- //
- // Rule 285: start_initializer_list ::= $Empty
- //
- case 285: {
- action.initializerListStart();
- break;
- }
-
- //
- // Rule 286: end_initializer_list ::= $Empty
- //
- case 286: {
- action.initializerListEnd();
- break;
- }
-
- //
- // Rule 291: designated_initializer ::= <openscope-ast> designation = initializer
- //
- case 291: {
- action.consumeInitializerDesignated();
- break;
- }
-
- //
- // Rule 295: designator_base ::= [ constant_expression ]
- //
- case 295: {
- action.consumeDesignatorArray();
- break;
- }
-
- //
- // Rule 296: designator_base ::= . identifier_token
- //
- case 296: {
- action.consumeDesignatorField();
- break;
- }
-
- //
- // Rule 297: designator ::= [ constant_expression ]
- //
- case 297: {
- action.consumeDesignatorArray();
- break;
- }
-
- //
- // Rule 298: designator ::= . identifier_token
- //
- case 298: {
- action.consumeDesignatorField();
- break;
- }
-
- //
- // Rule 299: translation_unit ::= external_declaration_list
- //
- case 299: {
- action.consumeTranslationUnit();
- break;
- }
-
- //
- // Rule 300: translation_unit ::= $Empty
- //
- case 300: {
- action.consumeTranslationUnit();
- break;
- }
-
- //
- // Rule 305: external_declaration ::= ;
- //
- case 305: {
- action.consumeDeclarationEmpty();
- break;
- }
-
- //
- // Rule 306: external_declaration ::= ERROR_TOKEN
- //
- case 306: {
- action.consumeDeclarationProblem();
- break;
- }
-
- //
- // Rule 310: function_definition ::= <openscope-ast> function_declarator function_body
- //
- case 310: {
- action.consumeFunctionDefinition(false);
- break;
- }
-
- //
- // Rule 311: function_definition ::= declaration_specifiers <openscope-ast> knr_function_declarator <openscope-ast> declaration_list compound_statement
- //
- case 311: {
- action.consumeFunctionDefinitionKnR();
- break;
- }
-
- //
- // Rule 312: normal_function_definition ::= declaration_specifiers <openscope-ast> function_declarator function_body
- //
- case 312: {
- action.consumeFunctionDefinition(true);
- break;
- }
-
- //
- // Rule 313: function_body ::= { }
- //
- case 313: {
- action.consumeStatementCompoundStatement(false);
- break;
- }
-
- //
- // Rule 314: function_body ::= { <openscope-ast> block_item_list }
- //
- case 314: {
- action.consumeStatementCompoundStatement(true);
- break;
- }
-
- //
- // Rule 331: attribute_parameter ::= assignment_expression
- //
- case 331: {
- action.consumeIgnore();
- break;
- }
-
- //
- // Rule 342: extended_asm_declaration ::= asm volatile_opt ( extended_asm_param_seq ) ;
- //
- case 342: {
- gnuAction.consumeDeclarationASM();
- break;
- }
-
- //
- // Rule 353: unary_expression ::= __alignof__ unary_expression
- //
- case 353: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_alignOf);
- break;
- }
-
- //
- // Rule 354: unary_expression ::= typeof unary_expression
- //
- case 354: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_typeof);
- break;
- }
-
- //
- // Rule 355: relational_expression ::= relational_expression >? shift_expression
- //
- case 355: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_max);
- break;
- }
-
- //
- // Rule 356: relational_expression ::= relational_expression <? shift_expression
- //
- case 356: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_min);
- break;
- }
-
- //
- // Rule 357: conditional_expression ::= logical_or_expression ? <empty> : assignment_expression
- //
- case 357: {
- action.consumeExpressionConditional();
- break;
- }
-
- //
- // Rule 358: primary_expression ::= ( compound_statement )
- //
- case 358: {
- gnuAction.consumeCompoundStatementExpression();
- break;
- }
-
- //
- // Rule 359: labeled_statement ::= case case_range_expression : statement
- //
- case 359: {
- action.consumeStatementCase();
- break;
- }
-
- //
- // Rule 360: case_range_expression ::= constant_expression ... constant_expression
- //
- case 360: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_assign);
- break;
- }
-
- //
- // Rule 364: typeof_type_specifier ::= typeof unary_expression
- //
- case 364: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_typeof);
- break;
- }
-
- //
- // Rule 365: typeof_type_specifier ::= typeof ( type_id )
- //
- case 365: {
- action.consumeExpressionTypeId(IASTTypeIdExpression.op_typeof);
- break;
- }
-
- //
- // Rule 366: declaration_specifiers ::= <openscope-ast> typeof_declaration_specifiers
- //
- case 366: {
- action.consumeDeclarationSpecifiersTypeof();
- break;
- }
-
- //
- // Rule 382: field_name_designator ::= identifier_token :
- //
- case 382: {
- action.consumeDesignatorFieldGCC();
- break;
- }
-
- //
- // Rule 383: array_range_designator ::= [ constant_expression ... constant_expression ]
- //
- case 383: {
- action.consumeDesignatorArrayRange();
- break;
- }
-
- //
- // Rule 384: designated_initializer ::= <openscope-ast> field_name_designator initializer
- //
- case 384: {
- action.consumeInitializerDesignated();
- break;
- }
-
- //
- // Rule 385: block_item ::= normal_function_definition
- //
- case 385: {
- action.consumeStatementDeclaration();
- break;
- }
-
- //
- // Rule 387: no_sizeof_type_name_start ::= ERROR_TOKEN
- //
- case 387: {
- action.consumeEmpty();
- break;
- }
-
- default:
- break;
- }
- return;
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gcc/GCCSizeofExpressionParserprs.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gcc/GCCSizeofExpressionParserprs.java
deleted file mode 100644
index b924824bb52..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gcc/GCCSizeofExpressionParserprs.java
+++ /dev/null
@@ -1,989 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2015 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.dom.lrparser.gcc;
-
-public class GCCSizeofExpressionParserprs implements lpg.lpgjavaruntime.ParseTable, GCCSizeofExpressionParsersym {
-
- public interface IsKeyword {
- public final static byte isKeyword[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static byte isKeyword[] = IsKeyword.isKeyword;
-
- public final boolean isKeyword(int index) {
- return isKeyword[index] != 0;
- }
-
- public interface BaseCheck {
- public final static short baseCheck[] = { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 4,
- 4, 3, 3, 2, 2, 4, 1, 0, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 4, 1, 3, 3, 3, 1, 3, 3, 1, 3, 3, 1, 3, 3, 3,
- 3, 1, 3, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 5, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 2, 1, 0, 1, 3,
- 1, 1, 1, 1, 1, 1, 1, 1, 3, 4, 3, 2, 4, 1, 2, 1, 1, 1, 2, 5, 7, 5, 1, 0, 7, 2, 5, 9, 8, 3, 2, 2, 2, 3, 2,
- 4, 2, 2, 2, 2, 2, 1, 1, 1, 1, 2, 1, 2, 2, 2, 1, 2, 2, 1, 2, 2, 1, 2, 2, 1, 2, 2, 1, 3, 1, 3, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 8, 0, 0, 1, 1, 3, 3, 3, 0, 1, 0, 1, 2, 4, 2, 1, 1,
- 1, 3, 1, 1, 2, 3, 7, 8, 0, 1, 0, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 3, 1, 2, 2, 1, 5, 3, 1,
- 3, 5, 1, 3, 1, 3, 2, 4, 3, 5, 4, 6, 6, 3, 5, 1, 3, 4, 5, 6, 0, 1, 2, 1, 3, 1, 1, 3, 2, 1, 1, 1, 1, 2, 1,
- 2, 3, 1, 1, 1, 3, 1, 2, 2, 2, 3, 4, 5, 1, 1, 7, 3, 0, 0, 1, 1, 3, 3, 4, 1, 1, 2, 3, 2, 3, 2, 1, 0, 1, 2,
- 1, 1, 1, 1, 1, 2, 1, 3, 6, 4, 2, 4, 1, 1, 1, 1, 2, 6, 3, 1, 3, 1, 4, 0, 1, 1, 1, 3, 1, 0, 4, 3, 1, 2, 1,
- 3, 4, 4, 4, 6, 1, 0, 1, 3, 1, 3, 0, 1, 4, 5, 2, 2, 3, 3, 5, 3, 4, 3, 1, 2, 2, 2, 4, 2, 1, 1, 2, 2, 3, 2,
- 2, 3, 1, 1, 1, 1, 1, 1, 1, 2, 5, 3, 1, 1, 1, -39, 0, 0, 0, 0, 0, 0, -35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -241, 0, -2, 0, -80, -118, -240, 0, 0, 0, -31, 0, -173, 0, -41, 0, 0, 0, 0, 0, 0, -17,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, -287, 0, 0, 0, 0, 0, 0, -40, 0, 0, 0, 0, 0, -4,
- 0, -170, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, -16, 0, -18, -1, 0, 0, 0, 0, 0, 0, 0, 0, -119, -33,
- 0, 0, 0, 0, 0, 0, 0, -19, 0, 0, 0, 0, 0, 0, 0, 0, 0, -125, 0, 0, 0, 0, -176, -20, 0, -21, 0, 0, 0, 0, 0,
- 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -281, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -134, 0, -260, -289, 0, 0, 0, 0, 0, 0, 0, 0, -32, 0, -232, 0, 0, 0, -22, 0,
- -250, -278, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -61, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -136, 0, 0, 0, 0, 0, 0, 0, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0, -130, 0,
- -273, 0, 0, -220, 0, 0, 0, 0, -283, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -297, 0, -23, 0, -311, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, -159, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -310, 0, 0, 0, 0, -25, 0, -36, -53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -139, 0, 0, -252, 0, 0, 0, 0, 0, 0, -305, 0, 0, 0, 0, 0, 0,
- -148, 0, 0, 0, 0, 0, 0, 0, 0, 0, -140, 0, -155, 0, -3, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, -149, 0,
- -186, 0, 0, 0, 0, 0, 0, 0, 0, 0, -284, 0, 0, -124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, -28, -168,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -83, 0, -157, 0, 0, 0, 0, 0, 0, -248, 0, 0, 0, 0, -123, -84, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -187, 0, -46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -169, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -204, 0, -85, 0, 0, 0, 0, 0, 0, 0, 0, -313, 0, -94, 0, -318, 0, 0, 0, 0, 0, 0,
- -164, 0, 0, 0, 0, -99, 0, 0, -222, 0, 0, 0, 0, 0, 0, 0, 0, -163, -243, 0, 0, -29, 0, 0, 0, 0, 0, 0, -37,
- 0, 0, 0, 0, -315, 0, -100, -244, 0, 0, 0, 0, 0, 0, 0, 0, -101, -288, -102, 0, -103, 0, 0, 0, -62, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -233, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0,
- -181, 0, 0, 0, 0, 0, 0, 0, -104, 0, 0, 0, 0, 0, 0, 0, 0, -105, 0, -263, 0, -64, 0, 0, 0, 0, 0, 0, -183,
- 0, 0, 0, 0, 0, -245, 0, -299, 0, 0, 0, 0, 0, 0, 0, 0, 0, -106, -303, 0, -65, 0, 0, 0, 0, 0, 0, -201, 0,
- 0, 0, 0, -312, 0, 0, -320, 0, 0, 0, 0, 0, 0, 0, 0, 0, -107, 0, 0, -66, 0, 0, 0, 0, 0, 0, -218, 0, 0, 0,
- 0, -334, 0, 0, -108, 0, 0, 0, 0, 0, 0, 0, 0, -109, 0, -328, 0, -67, 0, 0, 0, 0, 0, 0, -242, 0, 0, 0, 0,
- -343, -256, 0, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, 0, -68, 0, 0, 0, 0, 0, 0, -255, 0, 0, 0, 0,
- -112, -280, 0, -113, 0, 0, 0, 0, 0, 0, 0, 0, -114, 0, -115, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -116, -295, -117, -120, 0, 0, 0, 0, 0, 0, 0, 0, -122, -133, -143, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -150, -319, -151, -153, 0, 0, 0, 0, 0, 0, 0, 0, -154, -294, -156, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -158, -165, -174, -178, 0, 0, 0, 0, 0, 0, 0, 0, -182, -302, -185, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -190, -194, -207, -195, 0, 0, 0, 0, 0, 0, 0, 0, -96, 0, -197, 0, -5, 0, 0, 0, 0, 0, 0, -126, 0,
- 0, 0, 0, -213, -215, -161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -325, -225, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -237, -60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -239, -261, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, -262, -271, -272, -282, 0, -162, 0, 0, 0, 0, 0, 0, -286,
- 0, 0, 0, 0, -301, -304, -309, 0, 0, 0, 0, 0, 0, 0, 0, 0, -322, -330, 0, 0, -202, 0, 0, 0, 0, 0, 0, -335,
- 0, 0, 0, 0, 0, -219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, 0, 0, -229, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, -128, -131,
- -171, -179, 0, 0, 0, 0, 0, 0, 0, 0, -285, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -296, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -132, 0, 0, -184, 0, 0, 0, 0, 0, 0, 0, 0, -314, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -321, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -211, -259, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -333, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -177,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -337, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -135, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -98, 0, 0, 0, 0, 0, 0, 0, -127, 0, 0, 0, 0, 0, 0, -160, 0, -145, 0, 0, 0, 0, 0, -212, 0, 0, 0,
- 0, 0, 0, -231, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -137, 0, 0, 0, 0, 0, 0, 0, -214,
- 0, -224, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, 0, 0, 0, 0, 0, 0, -249, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -47, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -92, 0, 0, 0, 0, 0, 0, 0, 0, -306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -332, 0, 0,
- -34, -223, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -79, 0, 0, -265, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -226, 0, 0, 0, 0, 0, 0,
- -258, -293, -189, 0, 0, 0, 0, 0, 0, 0, -227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -172, 0, -257, 0, 0, 0, 0, 0, -87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -274, 0, 0, 0,
- 0, 0, -246, 0, 0, 0, -251, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -191, 0, 0, 0, -206, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -253, 0, 0, 0, -48, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -336, -254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -270, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -291, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -323, 0, 0, 0, 0, 0, 0, 0, 0, -300, 0, 0, 0, 0, 0,
- 0, 0, 0, -58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -279, 0, 0, 0, 0, 0, 0, 0,
- 0, -235, 0, 0, 0, 0, 0, 0, 0, -316, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -308, 0, 0, -76, 0, 0, 0, 0, 0, 0, -317, 0, 0, 0,
- 0, 0, -54, 0, 0, 0, 0, 0, 0, -82, 0, 0, 0, 0, 0, -326, -331, 0, 0, 0, 0, 0, 0, 0, 0, -341, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -210, 0, -129, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, 0, 0, -152, 0, 0, 0, 0, 0,
- -342, 0, 0, 0, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -86, 0, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -230, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -234, 0, 0, 0,
- 0, 0, 0, 0, 0, -247, -266, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -268, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -269, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -329, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -340, 0, 0, -192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -345, 0, 0, -221, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -267, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, -121, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, -88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -42, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -91, 0, 0, 0, -93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -236, 0, 0, 0, 0, 0, 0, 0, -95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10,
- 0, 0, 0, 0, 0, 0, 0, 0, -11, 0, 0, 0, 0, 0, 0, 0, 0, -12, 0, 0, 0, 0, 0, 0, 0, 0, -13, 0, 0, 0, 0, 0, 0,
- -30, 0, 0, -38, 0, 0, 0, 0, -275, 0, 0, -43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -44, 0, 0, 0, 0, 0, 0, 0, 0, -45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -144, 0, 0, 0, 0, -77, 0, 0, 0, -209, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -188, 0, 0, 0, -238, 0, 0, 0, -14, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -277, 0, 0, 0, 0, 0, 0, 0, 0, -89, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -90, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 0, 0, 0, -166, 0, 0, 0,
- -180, 0, 0, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -290, 0, 0, -292, 0, -276, 0, 0,
- 0, -175, 0, 0, 0, 0, -59, -324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -146, -338, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -264, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -298, 0, 0, 0, 0, 0, 0, 0, -307, -327,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -339, 0, 0, 0, 0, 0, 0, 0, 0, -344, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0 };
- }
-
- public final static short baseCheck[] = BaseCheck.baseCheck;
-
- @Override
- public final int baseCheck(int index) {
- return baseCheck[index];
- }
-
- public final static short rhs[] = baseCheck;
-
- @Override
- public final int rhs(int index) {
- return rhs[index];
- }
-
- public interface BaseAction {
- public final static char baseAction[] = { 117, 7, 118, 41, 41, 24, 24, 50, 50, 26, 26, 1, 1, 2, 2, 2, 2, 3, 3,
- 3, 4, 5, 5, 5, 5, 5, 5, 5, 5, 80, 80, 94, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 8, 8, 9, 9, 9, 9, 10, 10, 10,
- 11, 11, 11, 16, 16, 16, 16, 16, 17, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 27, 27, 27,
- 27, 27, 27, 27, 27, 27, 27, 27, 27, 34, 30, 25, 119, 119, 95, 95, 58, 35, 35, 35, 35, 35, 35, 35, 36,
- 36, 36, 29, 29, 96, 96, 71, 71, 37, 37, 38, 38, 38, 67, 67, 39, 39, 39, 39, 39, 40, 40, 40, 40, 40, 66,
- 66, 31, 31, 31, 31, 31, 53, 53, 53, 103, 103, 98, 98, 98, 98, 99, 99, 99, 100, 100, 100, 101, 101, 101,
- 102, 102, 102, 97, 97, 85, 85, 86, 54, 56, 56, 56, 56, 56, 72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
- 73, 73, 84, 81, 81, 120, 121, 87, 87, 82, 82, 82, 88, 104, 104, 105, 105, 89, 89, 89, 60, 122, 122, 106,
- 90, 90, 90, 83, 83, 123, 107, 107, 108, 108, 91, 91, 32, 33, 33, 33, 55, 51, 51, 42, 42, 42, 42, 45, 45,
- 47, 43, 43, 44, 48, 48, 124, 124, 46, 143, 143, 125, 125, 52, 52, 52, 52, 52, 52, 52, 52, 52, 109, 61,
- 61, 61, 61, 49, 75, 75, 74, 74, 74, 76, 76, 69, 69, 126, 126, 79, 79, 77, 77, 77, 62, 62, 62, 63, 64,
- 64, 64, 65, 65, 65, 65, 68, 68, 57, 57, 59, 128, 127, 127, 127, 127, 110, 129, 130, 130, 131, 131, 132,
- 132, 144, 144, 145, 145, 146, 146, 146, 146, 148, 148, 147, 147, 147, 78, 133, 133, 12, 12, 12, 28, 28,
- 13, 13, 134, 134, 111, 111, 111, 112, 112, 135, 135, 113, 113, 14, 14, 136, 136, 114, 114, 114, 114, 15,
- 70, 137, 137, 138, 138, 115, 115, 115, 92, 92, 92, 6, 6, 16, 16, 23, 3, 36, 139, 116, 116, 116, 93, 93,
- 31, 66, 53, 86, 86, 86, 106, 106, 106, 123, 120, 121, 49, 88, 131, 131, 140, 141, 110, 71, 117, 117,
- 331, 913, 17, 21, 18, 482, 829, 560, 44, 503, 484, 521, 368, 315, 316, 317, 519, 685, 586, 717, 694,
- 827, 794, 74, 1851, 1380, 443, 91, 521, 901, 1429, 358, 135, 213, 672, 31, 1319, 179, 1647, 20, 17, 21,
- 18, 482, 42, 500, 44, 927, 368, 315, 316, 317, 388, 137, 134, 136, 160, 1647, 20, 17, 21, 18, 482, 42,
- 1872, 44, 503, 1084, 135, 213, 87, 398, 139, 166, 395, 950, 197, 629, 1635, 1279, 275, 143, 146, 149,
- 152, 645, 28, 1896, 1186, 137, 134, 136, 160, 361, 1825, 465, 451, 517, 2182, 2286, 2577, 2608, 2612,
- 1279, 787, 2731, 249, 462, 139, 166, 1156, 255, 213, 939, 787, 876, 2637, 143, 146, 149, 152, 104, 87,
- 1896, 719, 645, 22, 386, 25, 361, 753, 302, 89, 37, 2182, 2286, 2577, 2608, 2612, 1279, 1551, 20, 17,
- 21, 18, 482, 829, 412, 44, 503, 484, 521, 2637, 1371, 452, 293, 519, 685, 586, 717, 694, 827, 794, 74,
- 659, 381, 241, 281, 1445, 20, 17, 21, 18, 482, 829, 412, 44, 503, 484, 521, 908, 2920, 1469, 1905, 519,
- 685, 586, 717, 694, 827, 794, 74, 672, 31, 1685, 281, 294, 282, 38, 1186, 753, 1575, 20, 17, 21, 18,
- 482, 829, 287, 44, 503, 484, 521, 369, 414, 255, 213, 519, 685, 586, 717, 694, 827, 794, 74, 282, 1464,
- 1186, 281, 1647, 20, 17, 21, 18, 482, 42, 289, 44, 503, 484, 521, 322, 1295, 672, 187, 519, 685, 586,
- 717, 1185, 288, 1647, 20, 17, 21, 18, 482, 42, 282, 40, 1186, 1747, 1184, 398, 1658, 276, 1661, 418,
- 2951, 158, 1771, 1599, 20, 17, 21, 18, 482, 829, 290, 44, 503, 484, 521, 672, 186, 278, 24, 519, 685,
- 586, 717, 694, 827, 794, 74, 672, 1350, 444, 281, 1623, 20, 17, 21, 18, 482, 829, 543, 44, 503, 484,
- 521, 323, 1295, 313, 1428, 519, 685, 586, 717, 694, 827, 794, 74, 28, 301, 1186, 281, 312, 282, 541,
- 1186, 560, 1647, 20, 17, 21, 18, 482, 42, 384, 44, 503, 1102, 1397, 20, 17, 21, 18, 482, 829, 1290, 44,
- 503, 484, 521, 2162, 282, 783, 1186, 519, 685, 586, 717, 694, 827, 794, 74, 291, 1862, 1251, 513, 1743,
- 20, 17, 21, 18, 482, 829, 1722, 44, 503, 484, 521, 124, 239, 783, 210, 519, 685, 586, 717, 694, 827,
- 794, 74, 672, 188, 783, 331, 1647, 20, 17, 21, 18, 482, 829, 416, 44, 503, 484, 521, 123, 672, 873, 783,
- 519, 685, 586, 717, 694, 827, 794, 74, 111, 672, 296, 91, 1719, 20, 17, 21, 18, 482, 829, 1937, 44, 503,
- 484, 521, 888, 126, 1727, 645, 519, 685, 586, 717, 694, 827, 794, 74, 1281, 283, 554, 830, 1647, 20, 17,
- 21, 18, 482, 42, 1747, 44, 503, 484, 521, 739, 999, 2942, 348, 519, 685, 586, 717, 694, 827, 794, 93,
- 319, 315, 316, 317, 243, 329, 783, 231, 1647, 20, 17, 21, 18, 482, 42, 465, 44, 503, 484, 967, 1421, 20,
- 17, 21, 18, 482, 829, 2045, 44, 503, 484, 521, 122, 645, 1270, 1047, 519, 685, 586, 717, 694, 827, 794,
- 74, 672, 298, 1499, 900, 1743, 20, 17, 21, 18, 482, 829, 249, 44, 503, 484, 521, 1086, 240, 528, 783,
- 519, 685, 586, 717, 694, 827, 794, 74, 456, 1182, 242, 331, 1647, 20, 17, 21, 18, 482, 829, 560, 44,
- 503, 484, 521, 1922, 2989, 1333, 645, 519, 685, 586, 717, 694, 827, 794, 74, 49, 1182, 169, 92, 181,
- 254, 213, 19, 1647, 20, 17, 21, 18, 482, 829, 1268, 44, 503, 484, 521, 255, 213, 284, 1787, 519, 685,
- 586, 717, 694, 827, 794, 74, 244, 254, 213, 85, 1647, 20, 17, 21, 18, 482, 829, 249, 44, 503, 484, 521,
- 571, 128, 2890, 630, 519, 685, 586, 717, 694, 827, 794, 74, 1002, 330, 783, 84, 1647, 20, 17, 21, 18,
- 482, 829, 249, 44, 503, 484, 521, 955, 645, 1414, 783, 519, 685, 586, 717, 694, 827, 794, 74, 3001,
- 1065, 783, 83, 1647, 20, 17, 21, 18, 482, 829, 1330, 44, 503, 484, 521, 1920, 3010, 940, 1935, 519, 685,
- 586, 717, 694, 827, 794, 74, 342, 775, 245, 82, 1647, 20, 17, 21, 18, 482, 829, 249, 44, 503, 484, 521,
- 645, 194, 1572, 911, 519, 685, 586, 717, 694, 827, 794, 74, 520, 295, 783, 81, 1647, 20, 17, 21, 18,
- 482, 829, 1866, 44, 503, 484, 521, 645, 456, 968, 379, 519, 685, 586, 717, 694, 827, 794, 74, 117, 297,
- 474, 80, 1647, 20, 17, 21, 18, 482, 829, 249, 44, 503, 484, 521, 751, 456, 2945, 170, 519, 685, 586,
- 717, 694, 827, 794, 74, 807, 383, 969, 79, 1647, 20, 17, 21, 18, 482, 829, 180, 44, 503, 484, 521, 1147,
- 456, 836, 1308, 519, 685, 586, 717, 694, 827, 794, 74, 758, 334, 1513, 78, 1647, 20, 17, 21, 18, 482,
- 829, 712, 44, 503, 484, 521, 1121, 456, 1201, 1209, 519, 685, 586, 717, 694, 827, 794, 74, 1346, 1469,
- 995, 77, 1647, 20, 17, 21, 18, 482, 829, 204, 44, 503, 484, 521, 998, 1331, 1248, 1494, 519, 685, 586,
- 717, 694, 827, 794, 74, 1528, 905, 67, 76, 1647, 20, 17, 21, 18, 482, 829, 181, 44, 503, 484, 521, 1050,
- 1179, 1473, 811, 519, 685, 586, 717, 694, 827, 794, 74, 1319, 179, 1768, 75, 1671, 20, 17, 21, 18, 482,
- 354, 1182, 368, 315, 316, 317, 1781, 1534, 1647, 20, 17, 21, 18, 482, 829, 1309, 44, 503, 484, 521, 456,
- 1805, 135, 213, 519, 685, 586, 717, 694, 827, 794, 74, 228, 254, 213, 357, 1671, 20, 17, 21, 18, 482,
- 353, 138, 134, 136, 160, 1510, 1647, 20, 17, 21, 18, 482, 42, 1370, 44, 503, 484, 521, 1709, 1558, 140,
- 166, 519, 685, 586, 717, 694, 1183, 205, 144, 147, 150, 153, 560, 467, 1896, 346, 1582, 1853, 1602,
- 1757, 362, 1647, 20, 17, 21, 18, 482, 829, 1212, 44, 503, 484, 521, 1259, 1199, 1913, 417, 519, 685,
- 586, 717, 694, 827, 794, 74, 1230, 1097, 887, 73, 1647, 20, 17, 21, 18, 482, 829, 1606, 44, 503, 484,
- 521, 3218, 1125, 1350, 3218, 519, 685, 586, 717, 694, 827, 794, 74, 3218, 3218, 3218, 958, 1647, 20, 17,
- 21, 18, 482, 829, 3218, 44, 503, 484, 521, 3218, 3218, 3218, 3218, 519, 685, 586, 717, 694, 827, 794,
- 74, 3218, 937, 3218, 1044, 1647, 20, 17, 21, 18, 482, 42, 560, 44, 503, 484, 521, 560, 1857, 560, 560,
- 519, 685, 586, 717, 694, 827, 794, 93, 1647, 20, 17, 21, 18, 482, 42, 23, 44, 503, 484, 521, 273, 321,
- 279, 341, 519, 685, 586, 717, 694, 827, 794, 93, 209, 227, 3218, 1647, 20, 17, 21, 18, 482, 42, 360, 44,
- 503, 484, 521, 1870, 570, 1368, 560, 519, 685, 586, 717, 694, 827, 794, 93, 1647, 20, 17, 21, 18, 482,
- 42, 1071, 44, 503, 484, 521, 334, 3218, 3218, 654, 519, 685, 586, 717, 694, 827, 794, 93, 3218, 3218,
- 3218, 1647, 20, 17, 21, 18, 482, 42, 212, 44, 503, 484, 521, 560, 1125, 1350, 3218, 519, 685, 586, 717,
- 694, 827, 794, 93, 1647, 20, 17, 21, 18, 482, 42, 1099, 44, 503, 484, 521, 280, 3218, 3218, 1870, 519,
- 685, 586, 717, 694, 827, 794, 93, 3218, 3218, 3218, 1647, 20, 17, 21, 18, 482, 42, 202, 44, 503, 484,
- 521, 333, 3218, 3218, 1111, 519, 685, 586, 717, 694, 827, 794, 93, 335, 199, 1239, 319, 315, 316, 317,
- 1127, 388, 419, 20, 17, 21, 18, 482, 42, 666, 36, 1, 1239, 3218, 3218, 1598, 1696, 1875, 388, 86, 110,
- 3218, 209, 95, 905, 1650, 3218, 203, 785, 108, 94, 96, 97, 98, 99, 127, 86, 110, 1224, 1368, 95, 1923,
- 1650, 246, 1247, 785, 108, 94, 96, 97, 98, 99, 1847, 3218, 560, 989, 319, 315, 316, 317, 109, 105, 2816,
- 3218, 367, 106, 3218, 318, 315, 316, 317, 336, 385, 1838, 3218, 3218, 338, 109, 2371, 3218, 366, 367,
- 107, 2110, 3218, 319, 315, 316, 317, 385, 1652, 3218, 318, 315, 316, 317, 3218, 218, 1269, 221, 1454,
- 223, 224, 1349, 3218, 3218, 2361, 3218, 855, 1647, 20, 17, 21, 18, 482, 42, 1370, 44, 503, 484, 969,
- 1772, 219, 1269, 221, 1454, 223, 224, 229, 1240, 265, 1239, 274, 318, 315, 316, 317, 388, 3218, 345,
- 155, 1336, 269, 601, 416, 272, 3218, 133, 1239, 1714, 249, 666, 990, 3218, 388, 86, 110, 787, 1832, 95,
- 3218, 1650, 2013, 3218, 785, 108, 94, 96, 97, 98, 99, 3218, 86, 110, 3218, 87, 95, 127, 1650, 582, 473,
- 785, 108, 94, 96, 97, 98, 99, 1299, 3218, 3218, 989, 3218, 3218, 3218, 2211, 109, 314, 2839, 3218, 367,
- 106, 3218, 318, 315, 316, 317, 560, 385, 783, 3218, 3218, 277, 109, 899, 617, 249, 367, 107, 2110, 3218,
- 424, 2839, 787, 560, 385, 1788, 318, 315, 316, 317, 2387, 3218, 218, 1269, 221, 1454, 223, 224, 229,
- 274, 87, 2361, 2061, 756, 197, 1695, 1828, 2428, 666, 267, 601, 416, 272, 2789, 667, 1856, 218, 1269,
- 221, 1454, 223, 224, 229, 3218, 1469, 1397, 318, 315, 316, 317, 3218, 989, 3218, 1890, 195, 155, 1336,
- 560, 2839, 3218, 3218, 560, 1625, 318, 315, 316, 317, 990, 218, 1269, 221, 1454, 223, 224, 229, 1182,
- 249, 263, 274, 2110, 1832, 225, 193, 787, 2957, 320, 3218, 2370, 267, 601, 416, 272, 3218, 218, 1269,
- 221, 1454, 223, 224, 229, 198, 87, 2361, 264, 277, 560, 1848, 254, 213, 1647, 20, 17, 21, 18, 482, 42,
- 1074, 44, 503, 484, 971, 3218, 218, 1269, 221, 1454, 223, 224, 229, 340, 3218, 1919, 274, 3218, 827,
- 560, 156, 1336, 3218, 3218, 3218, 2839, 267, 601, 416, 272, 318, 315, 316, 317, 467, 1880, 261, 3218,
- 568, 3218, 3218, 1469, 3218, 339, 3218, 3218, 2061, 1647, 20, 17, 21, 18, 482, 42, 3218, 44, 503, 484,
- 1018, 1057, 218, 1269, 221, 1454, 223, 224, 229, 1896, 1401, 1397, 1647, 20, 17, 21, 18, 482, 42, 3218,
- 44, 503, 484, 521, 3218, 617, 3218, 3218, 519, 685, 586, 1155, 2839, 325, 560, 3218, 3218, 319, 315,
- 316, 317, 3218, 3218, 1647, 20, 17, 21, 18, 482, 42, 2957, 44, 503, 484, 521, 3218, 3218, 3218, 1113,
- 519, 685, 1158, 3218, 3218, 3218, 1037, 199, 218, 1269, 221, 1454, 223, 224, 229, 989, 3218, 1397, 318,
- 315, 316, 317, 2839, 560, 3218, 3218, 3218, 319, 315, 316, 317, 3218, 3218, 3218, 855, 1647, 20, 17, 21,
- 18, 482, 42, 3218, 44, 503, 484, 1027, 230, 219, 1269, 221, 1454, 223, 224, 1387, 1240, 2978, 218, 1269,
- 221, 1454, 223, 224, 229, 1037, 3218, 2947, 1470, 20, 17, 21, 18, 482, 42, 1934, 43, 318, 315, 316, 317,
- 1647, 20, 17, 21, 18, 482, 42, 1334, 44, 503, 484, 521, 855, 560, 560, 3218, 519, 1111, 234, 368, 315,
- 316, 317, 560, 3218, 3218, 219, 1269, 221, 1454, 223, 224, 229, 1240, 1021, 3218, 877, 2469, 351, 135,
- 213, 424, 1504, 424, 28, 3218, 1186, 2489, 318, 315, 316, 317, 593, 1239, 319, 315, 316, 317, 560, 787,
- 142, 134, 136, 160, 855, 1888, 3218, 1888, 419, 20, 17, 21, 18, 482, 42, 3218, 36, 86, 110, 141, 166,
- 95, 352, 3218, 3218, 1195, 785, 1267, 94, 96, 97, 98, 99, 641, 1239, 3218, 3218, 2554, 3218, 3218, 787,
- 3218, 3218, 260, 3218, 259, 3218, 3218, 3218, 247, 1471, 748, 1241, 689, 1239, 3218, 3218, 3218, 86,
- 110, 787, 3218, 95, 368, 315, 316, 317, 785, 103, 94, 96, 97, 98, 99, 803, 1239, 3218, 3218, 86, 110,
- 3218, 787, 95, 135, 213, 3218, 3218, 785, 101, 94, 96, 97, 98, 99, 851, 1239, 3218, 3218, 3218, 86, 110,
- 787, 3218, 95, 145, 134, 136, 160, 785, 359, 94, 96, 97, 98, 99, 3218, 3218, 3218, 3218, 86, 110, 3218,
- 3218, 95, 3218, 3218, 1881, 3218, 785, 102, 94, 96, 97, 98, 99, 1087, 965, 1239, 318, 315, 316, 317,
- 424, 787, 3218, 3218, 3218, 318, 315, 316, 317, 3218, 1013, 1239, 2736, 3218, 3218, 3218, 3218, 787,
- 3218, 86, 110, 855, 3218, 95, 1888, 3218, 3218, 3218, 785, 119, 94, 96, 97, 98, 99, 86, 110, 3218, 3218,
- 95, 3218, 3218, 1195, 3218, 785, 114, 94, 96, 97, 98, 99, 1061, 1239, 3218, 1721, 3218, 3218, 3218, 787,
- 3218, 3218, 3218, 259, 3218, 3218, 3218, 3218, 1471, 3218, 1241, 3218, 1175, 1239, 3218, 3218, 3218, 86,
- 110, 787, 3218, 95, 3218, 3218, 3218, 3218, 785, 1385, 94, 96, 97, 98, 99, 1223, 1239, 3218, 249, 86,
- 110, 3218, 787, 95, 3218, 787, 3218, 3218, 785, 113, 94, 96, 97, 98, 99, 1271, 1239, 3218, 1879, 3218,
- 86, 110, 787, 87, 95, 787, 3218, 3218, 1865, 785, 121, 94, 96, 97, 98, 99, 3218, 3218, 249, 3218, 86,
- 110, 3218, 87, 95, 787, 3218, 3218, 115, 785, 120, 94, 96, 97, 98, 99, 1647, 20, 17, 21, 18, 482, 42,
- 87, 44, 503, 484, 521, 2070, 3218, 3218, 3218, 1130, 1647, 20, 17, 21, 18, 482, 42, 713, 44, 503, 484,
- 521, 1029, 3218, 3218, 3218, 1141, 3218, 3218, 318, 315, 316, 317, 1647, 20, 17, 21, 18, 482, 42, 910,
- 44, 503, 484, 1056, 855, 3218, 3218, 3218, 3218, 3218, 3218, 368, 315, 316, 317, 1647, 20, 17, 21, 18,
- 482, 42, 3218, 44, 957, 1240, 3218, 3218, 274, 3218, 1120, 135, 213, 3218, 1767, 3218, 3218, 3218, 269,
- 601, 416, 272, 368, 315, 316, 317, 368, 315, 316, 317, 3218, 313, 148, 134, 136, 160, 3218, 3218, 2839,
- 1778, 3218, 3218, 135, 213, 3218, 3218, 135, 213, 3218, 3218, 3218, 368, 315, 316, 317, 1671, 20, 17,
- 21, 18, 482, 41, 3218, 151, 134, 136, 160, 154, 134, 136, 160, 135, 213, 218, 1269, 221, 1454, 223, 224,
- 229, 3218, 3218, 1919, 1647, 20, 17, 21, 18, 482, 42, 3218, 39, 363, 134, 136, 160, 1647, 20, 17, 21,
- 18, 482, 42, 3218, 38, 1647, 20, 17, 21, 18, 482, 42, 3218, 37, 1647, 20, 17, 21, 18, 482, 42, 3218, 36,
- 1647, 20, 17, 21, 18, 482, 42, 500, 35, 3218, 723, 3218, 3218, 3218, 388, 1893, 3218, 2785, 1647, 20,
- 17, 21, 18, 482, 42, 3218, 47, 319, 315, 316, 317, 3218, 87, 3218, 3218, 3218, 395, 950, 197, 1647, 20,
- 17, 21, 18, 482, 42, 3218, 46, 1647, 20, 17, 21, 18, 482, 42, 3218, 45, 3218, 3218, 500, 3218, 3218,
- 274, 3218, 551, 3218, 388, 2731, 551, 3218, 3218, 3218, 267, 601, 416, 272, 318, 315, 316, 317, 318,
- 315, 316, 317, 87, 3218, 1364, 266, 395, 950, 197, 423, 855, 3218, 3218, 551, 855, 3218, 388, 1671, 20,
- 17, 21, 18, 482, 34, 3218, 318, 315, 316, 317, 3218, 3218, 1195, 3218, 3218, 87, 1195, 551, 2731, 3218,
- 115, 1792, 855, 3218, 2554, 3218, 410, 3218, 1721, 318, 315, 316, 317, 3218, 3218, 3218, 3218, 1523,
- 318, 315, 316, 317, 3218, 1195, 3218, 855, 1671, 20, 17, 21, 18, 482, 33, 3218, 1685, 2101, 2492, 930,
- 508, 3218, 367, 3218, 3218, 3218, 3218, 3218, 1195, 3218, 737, 3218, 318, 315, 316, 317, 3218, 424,
- 3218, 3218, 2159, 1695, 20, 17, 21, 18, 482, 1197, 1685, 1695, 20, 17, 21, 18, 482, 364, 1249, 3218,
- 3218, 3218, 1321, 197, 3218, 3218, 3218, 1249, 3218, 3218, 318, 315, 316, 317, 318, 315, 316, 317, 631,
- 318, 315, 316, 317, 3218, 1295, 3218, 855, 1109, 3218, 1911, 2217, 424, 1890, 858, 424, 855, 3218, 3218,
- 360, 1949, 424, 318, 315, 316, 317, 787, 3218, 1066, 3218, 3218, 671, 318, 315, 316, 317, 1888, 1122,
- 3009, 197, 666, 1951, 192, 3218, 87, 1888, 3218, 787, 3030, 1169, 3218, 3218, 1879, 318, 315, 316, 317,
- 1128, 1855, 787, 3218, 3218, 3218, 3218, 1879, 87, 125, 3218, 1890, 3039, 802, 787, 1932, 1879, 259,
- 3218, 3218, 87, 3218, 2118, 787, 1241, 115, 259, 319, 315, 316, 317, 1571, 87, 1241, 3218, 3218, 1960,
- 115, 3218, 3218, 192, 87, 3218, 3218, 3218, 1965, 115, 1296, 319, 315, 316, 317, 3218, 3218, 3218, 1212,
- 1855, 319, 315, 316, 317, 3218, 1046, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 2169,
- 2188, 3218, 3218, 3218, 3218, 3218, 1167, 3218, 3218, 2198, 3218, 0, 495, 32, 0, 1791, 32, 0, 3226, 1,
- 0, 841, 129, 0, 856, 129, 0, 902, 129, 0, 841, 130, 0, 856, 130, 0, 902, 130, 0, 841, 131, 0, 856, 131,
- 0, 902, 131, 0, 841, 185, 0, 856, 185, 0, 902, 185, 0, 185, 189, 0, 841, 184, 0, 856, 184, 0, 902, 184,
- 0, 184, 189, 0, 841, 132, 0, 856, 132, 0, 902, 132, 0, 841, 133, 0, 856, 133, 0, 902, 133, 0, 20, 179,
- 0, 841, 366, 0, 856, 366, 0, 902, 366, 0, 1, 702, 0, 841, 378, 0, 856, 378, 0, 902, 378, 0, 1, 841, 0,
- 1, 856, 0, 1, 902, 0, 354, 364, 0, 841, 253, 0, 856, 253, 0, 902, 253, 0, 8, 10, 0, 1310, 118, 0, 1,
- 3444, 0, 1, 3455, 0, 112, 2448, 0 };
- }
-
- public final static char baseAction[] = BaseAction.baseAction;
-
- @Override
- public final int baseAction(int index) {
- return baseAction[index];
- }
-
- public final static char lhs[] = baseAction;
-
- @Override
- public final int lhs(int index) {
- return lhs[index];
- }
-
- public interface TermCheck {
- public final static byte termCheck[] = { 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 0, 0, 38, 39, 40, 41, 42, 43, 44,
- 45, 46, 47, 0, 12, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 0, 1, 2, 3, 4, 5, 6,
- 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
- 34, 35, 66, 67, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 66, 67, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
- 60, 61, 62, 63, 64, 65, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
- 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 0, 0, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 0,
- 12, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
- 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 66,
- 67, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 66, 67, 0, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
- 63, 64, 65, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
- 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 0, 0, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 0, 1, 2, 51,
- 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 0, 1, 2, 0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
- 11, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 0, 28, 0, 30, 31, 32, 33, 34, 0, 1, 2, 0, 4, 2, 6,
- 7, 8, 73, 74, 75, 76, 0, 78, 79, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 0, 0, 2, 3,
- 3, 36, 6, 0, 36, 9, 10, 48, 12, 0, 1, 15, 16, 4, 5, 0, 7, 8, 0, 1, 2, 3, 0, 5, 6, 3, 4, 9, 10, 11, 12,
- 13, 36, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 0, 0, 49, 50, 50, 0, 27, 0, 73, 74, 75, 76, 0, 78, 79, 3,
- 9, 10, 0, 66, 67, 3, 69, 70, 71, 72, 73, 74, 75, 76, 0, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
- 90, 91, 92, 93, 94, 95, 96, 97, 0, 77, 2, 3, 37, 0, 6, 86, 87, 9, 10, 50, 12, 0, 1, 15, 16, 4, 5, 14, 7,
- 8, 0, 1, 2, 0, 0, 5, 6, 80, 81, 9, 10, 11, 12, 13, 36, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 99, 0, 49,
- 50, 29, 73, 74, 75, 76, 0, 78, 79, 0, 4, 2, 36, 7, 8, 0, 66, 67, 3, 69, 70, 71, 72, 73, 74, 75, 76, 0,
- 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 0, 1, 2, 3, 37, 5, 6,
- 80, 81, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 1, 2, 27, 4, 29, 82, 7, 8, 83, 0,
- 35, 0, 0, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 0, 1, 2, 3, 0, 5, 6, 3, 0, 9, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 22, 23, 48, 0, 0, 27, 3, 29, 4, 0, 1, 7, 8, 35, 5, 49, 38, 39, 40, 41, 42, 43,
- 44, 45, 46, 47, 0, 1, 2, 3, 27, 5, 6, 66, 67, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
- 0, 0, 2, 27, 4, 29, 6, 7, 8, 77, 0, 35, 2, 3, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 0, 1, 0, 3, 4, 5,
- 4, 7, 8, 7, 8, 0, 36, 13, 0, 4, 0, 1, 7, 8, 0, 0, 36, 37, 24, 25, 26, 6, 28, 29, 30, 31, 32, 33, 34, 24,
- 25, 26, 0, 28, 24, 30, 31, 32, 33, 34, 0, 9, 10, 3, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
- 63, 64, 65, 0, 1, 2, 3, 0, 5, 6, 27, 0, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 1,
- 2, 27, 4, 29, 82, 7, 8, 0, 0, 35, 0, 3, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 0, 1, 2, 3, 48, 5, 6, 0,
- 48, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 48, 0, 0, 27, 68, 29, 4, 6, 6, 7, 8, 35,
- 50, 0, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 0, 1, 0, 3, 4, 5, 0, 7, 8, 0, 1, 0, 0, 13, 5, 4, 14, 11,
- 7, 8, 83, 9, 10, 14, 24, 25, 26, 68, 28, 29, 30, 31, 32, 33, 34, 24, 25, 26, 0, 28, 2, 30, 31, 32, 33,
- 34, 68, 0, 71, 72, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 0, 1, 2, 3, 0, 5, 6,
- 84, 36, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 1, 2, 27, 4, 29, 0, 7, 8, 0, 0,
- 35, 2, 0, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 0, 1, 2, 3, 48, 5, 6, 0, 0, 9, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 22, 23, 0, 1, 2, 27, 4, 29, 48, 7, 8, 48, 0, 35, 2, 0, 38, 39, 40, 41, 42, 43,
- 44, 45, 46, 47, 0, 1, 2, 3, 0, 5, 6, 66, 67, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
- 35, 0, 0, 27, 68, 29, 4, 6, 6, 7, 8, 35, 0, 1, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 0, 1, 0, 3, 4, 5,
- 4, 7, 8, 7, 8, 0, 0, 13, 2, 4, 0, 1, 7, 8, 0, 5, 66, 67, 24, 25, 26, 0, 28, 29, 30, 31, 32, 33, 34, 24,
- 25, 26, 0, 28, 0, 30, 31, 32, 33, 34, 68, 0, 71, 72, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
- 63, 64, 65, 0, 1, 2, 3, 0, 5, 6, 0, 0, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 1,
- 0, 27, 2, 29, 6, 24, 25, 26, 0, 35, 2, 0, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 0, 1, 2, 3, 48, 5, 6,
- 0, 84, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 0, 0, 27, 4, 29, 4, 7, 8, 7, 8, 35,
- 0, 48, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 0, 1, 2, 3, 0, 5, 6, 48, 0, 9, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 22, 23, 0, 1, 49, 27, 0, 29, 2, 3, 24, 25, 26, 35, 0, 0, 38, 39, 40, 41, 42, 43,
- 44, 45, 46, 47, 0, 1, 0, 14, 4, 5, 4, 7, 8, 7, 8, 0, 0, 13, 0, 0, 36, 37, 6, 4, 6, 0, 7, 8, 24, 25, 26,
- 0, 28, 2, 30, 31, 32, 33, 34, 24, 25, 26, 98, 24, 25, 26, 0, 28, 68, 30, 31, 32, 33, 34, 0, 51, 52, 53,
- 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 0, 1, 2,
- 3, 0, 5, 6, 71, 72, 9, 10, 11, 12, 13, 0, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 1, 2, 3, 28, 5, 6, 0,
- 0, 9, 10, 11, 12, 13, 0, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 1, 2, 3, 28, 5, 6, 0, 25, 9, 10, 11, 12,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 0, 1, 2, 0, 77, 5, 6, 0, 49, 9, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 22, 23, 0, 50, 2, 0, 77, 0, 1, 2, 3, 4, 0, 6, 7, 8, 4, 36, 0, 7, 8, 0, 1, 2, 3,
- 4, 49, 6, 7, 8, 0, 24, 25, 26, 27, 28, 0, 30, 31, 32, 33, 34, 0, 36, 37, 24, 25, 26, 27, 28, 14, 30, 31,
- 32, 33, 34, 14, 36, 37, 0, 1, 2, 0, 1, 5, 6, 0, 5, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
- 22, 23, 0, 1, 2, 0, 69, 5, 6, 0, 0, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 1, 2,
- 0, 0, 5, 6, 0, 1, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 1, 2, 48, 69, 5, 6, 0,
- 49, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 1, 2, 0, 49, 5, 6, 0, 0, 9, 10, 11,
- 12, 13, 0, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 1, 2, 0, 14, 5, 6, 48, 0, 9, 10, 11, 12, 13, 0, 15,
- 16, 17, 18, 19, 20, 21, 22, 23, 0, 1, 2, 0, 14, 5, 6, 0, 0, 9, 10, 11, 12, 13, 0, 15, 16, 17, 18, 19,
- 20, 21, 22, 23, 0, 1, 2, 0, 14, 5, 6, 0, 0, 9, 10, 11, 12, 13, 11, 15, 16, 17, 18, 19, 20, 21, 22, 23,
- 0, 1, 2, 0, 0, 5, 6, 3, 0, 9, 10, 11, 12, 13, 0, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 0, 0, 2, 4, 0,
- 1, 7, 8, 4, 5, 0, 7, 8, 0, 4, 2, 37, 7, 8, 0, 0, 0, 3, 24, 25, 26, 0, 28, 69, 30, 31, 32, 33, 34, 24,
- 25, 26, 0, 28, 2, 30, 31, 32, 33, 34, 0, 27, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 0, 69, 2, 0, 1, 2,
- 3, 0, 1, 2, 3, 49, 0, 0, 1, 15, 16, 4, 5, 0, 7, 8, 0, 1, 0, 3, 0, 1, 0, 0, 2, 5, 0, 11, 2, 3, 36, 0, 1,
- 36, 37, 0, 5, 36, 37, 0, 1, 0, 3, 0, 0, 14, 49, 3, 0, 0, 0, 3, 3, 37, 4, 0, 36, 7, 8, 24, 25, 26, 0, 37,
- 70, 0, 4, 0, 3, 7, 8, 0, 0, 0, 0, 27, 37, 36, 0, 85, 0, 37, 0, 0, 4, 37, 37, 7, 8, 0, 70, 0, 3, 49, 0,
- 0, 14, 48, 24, 25, 26, 0, 37, 0, 0, 4, 3, 3, 7, 8, 0, 70, 0, 0, 49, 24, 25, 26, 0, 0, 0, 0, 4, 0, 4, 7,
- 8, 7, 8, 0, 0, 27, 0, 4, 0, 14, 7, 8, 4, 0, 37, 7, 8, 0, 14, 0, 0, 0, 0, 0, 0, 0, 49, 49, 0, 0, 0, 68,
- 0, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static byte termCheck[] = TermCheck.termCheck;
-
- @Override
- public final int termCheck(int index) {
- return termCheck[index];
- }
-
- public interface TermAction {
- public final static char termAction[] = { 0, 3218, 5235, 1, 1253, 3170, 5183, 1, 1, 1, 1, 1, 1, 1, 1, 459, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3227, 1, 3318, 1, 1, 1, 1, 1, 1213, 54, 64, 745, 843, 773, 1225, 2227,
- 1211, 800, 1223, 2977, 1214, 356, 2175, 3225, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 8, 3203,
- 3203, 3203, 3203, 3203, 3203, 3203, 3203, 3203, 3203, 3203, 3203, 3203, 3203, 3203, 3203, 3203, 3203,
- 3203, 3203, 3203, 3203, 3203, 3203, 3203, 3203, 3203, 3203, 3203, 3203, 3203, 3203, 3203, 3203, 3203,
- 445, 720, 3203, 3203, 3203, 3203, 3203, 3203, 3203, 3203, 3203, 3203, 445, 720, 3203, 3203, 3203, 3203,
- 3203, 3203, 3203, 3203, 3203, 3203, 3203, 3203, 3203, 3203, 3203, 3203, 3218, 5235, 1, 1253, 3170, 5183,
- 1, 1, 1, 1, 1, 1, 1, 1, 459, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3227, 1, 3318, 1, 1, 1, 1, 1, 1213,
- 355, 65, 745, 843, 773, 1225, 2227, 1211, 800, 1223, 2977, 1214, 58, 2175, 3225, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 3218, 5235, 1, 3228, 3170, 5183, 1, 1, 1, 1, 1, 1, 1, 1, 459, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 3227, 1, 3318, 1, 1, 1, 1, 1, 1213, 445, 720, 745, 843, 773, 1225, 2227, 1211, 800, 1223,
- 2977, 1214, 445, 720, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3218, 5235, 1, 3228, 3170, 5183,
- 1, 1, 1, 1, 1, 1, 1, 1, 459, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3227, 1, 3318, 1, 1, 1, 1, 1, 1213,
- 286, 59, 745, 843, 773, 1225, 2227, 1211, 800, 1223, 2977, 1214, 1, 3444, 2629, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 3218, 3229, 433, 3218, 902, 3230, 2712, 841, 856, 2703, 2694, 3234, 2721, 2901,
- 1472, 2868, 2820, 2653, 3231, 3232, 3233, 2681, 639, 1325, 3432, 3434, 3433, 3218, 3381, 1, 3382, 3380,
- 3435, 3383, 3379, 268, 3444, 1942, 270, 902, 649, 253, 841, 856, 2570, 2130, 2025, 1971, 61, 1750, 875,
- 3386, 3391, 3390, 3388, 3389, 3387, 3392, 3393, 3385, 3394, 3395, 3396, 1762, 2880, 2848, 1, 1, 3230,
- 3230, 3086, 731, 3230, 3218, 731, 3230, 3230, 2, 3230, 185, 3125, 3230, 3230, 3122, 3125, 72, 3116,
- 3119, 3218, 3229, 433, 3222, 1, 3230, 2712, 116, 3170, 2703, 2694, 3234, 2721, 1283, 3230, 2868, 2820,
- 2653, 3231, 3232, 3233, 2681, 639, 1325, 3218, 62, 3218, 3230, 3230, 3225, 3218, 116, 51, 2570, 2130,
- 2025, 1971, 3218, 1750, 875, 3226, 2593, 426, 1, 3230, 3230, 90, 3230, 3230, 3230, 3230, 3230, 3230,
- 3230, 3230, 60, 3230, 3230, 3230, 3230, 3230, 3230, 3230, 3230, 3230, 3230, 3230, 3230, 3230, 3230,
- 3230, 3230, 3230, 3230, 3230, 3230, 1, 3221, 3229, 3229, 90, 1, 3229, 1337, 2956, 3229, 3229, 3225,
- 3229, 184, 3137, 3229, 3229, 3134, 3137, 459, 3128, 3131, 3218, 1, 1, 63, 271, 1, 1, 2547, 2530, 1, 1,
- 1, 1, 1, 3229, 1, 1, 1, 1, 1, 1, 1, 1, 1, 66, 3079, 68, 3229, 3229, 3605, 2570, 2130, 2025, 1971, 253,
- 1750, 875, 3218, 902, 1470, 731, 841, 856, 3218, 3229, 3229, 3224, 3229, 3229, 3229, 3229, 3229, 3229,
- 3229, 3229, 3218, 3229, 3229, 3229, 3229, 3229, 3229, 3229, 3229, 3229, 3229, 3229, 3229, 3229, 3229,
- 3229, 3229, 3229, 3229, 3229, 3229, 3218, 5235, 1, 3228, 3223, 5183, 1, 2547, 2530, 1, 1, 1, 1, 1, 459,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3444, 2629, 3227, 3188, 3318, 2079, 3182, 3185, 2048, 3218, 1213, 88, 57,
- 745, 843, 773, 1225, 2227, 1211, 800, 1223, 2977, 1214, 3218, 5235, 1, 3228, 3218, 5183, 1, 3222, 3218,
- 1, 1, 1, 1, 1, 459, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1559, 1, 182, 3227, 3228, 3318, 902, 3218, 3229, 841,
- 856, 1213, 3230, 943, 745, 843, 773, 1225, 2227, 1211, 800, 1223, 2977, 1214, 3218, 5235, 1, 3228, 3227,
- 5183, 1, 445, 720, 1, 1, 1, 1, 1, 459, 1, 1, 1, 1, 1, 1, 1, 1, 1, 268, 3218, 1829, 3227, 902, 3318, 253,
- 841, 856, 3221, 1, 1213, 1829, 265, 745, 843, 773, 1225, 2227, 1211, 800, 1223, 2977, 1214, 3218, 1,
- 378, 191, 1, 1, 3179, 1, 1, 3173, 3176, 130, 731, 1, 67, 3104, 326, 3545, 3098, 3101, 3218, 3218, 731,
- 265, 1, 1, 1, 2916, 1, 3414, 1, 1, 1, 1, 1, 3432, 3434, 3433, 53, 3381, 3546, 3382, 3380, 3435, 3383,
- 3379, 3218, 2593, 426, 3228, 191, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3218, 5235, 1, 3228,
- 3218, 5183, 1, 3227, 3218, 1, 1, 1, 1, 1, 459, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3444, 2629, 3227, 3188,
- 3318, 2079, 3182, 3185, 69, 285, 1213, 3218, 494, 745, 843, 773, 1225, 2227, 1211, 800, 1223, 2977,
- 1214, 3218, 5235, 1, 3228, 1297, 5183, 1, 1, 2329, 1, 1, 1, 1, 1, 459, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1559,
- 48, 1, 3227, 1457, 3318, 3188, 2769, 253, 3182, 3185, 1213, 494, 70, 745, 843, 773, 1225, 2227, 1211,
- 800, 1223, 2977, 1214, 3218, 1, 3218, 190, 1, 1, 349, 1, 1, 3218, 3229, 131, 52, 1, 3230, 3113, 4442,
- 1369, 3107, 3110, 2048, 2593, 426, 1010, 1, 1, 1, 3476, 1, 3414, 1, 1, 1, 1, 1, 3432, 3434, 3433, 222,
- 3381, 850, 3382, 3380, 3435, 3383, 3379, 3476, 3218, 2760, 2739, 190, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 3218, 5235, 1, 3228, 3218, 5183, 1, 617, 731, 1, 1, 1, 1, 1, 459, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 3444, 2629, 3227, 3188, 3318, 3218, 3182, 3185, 3218, 3218, 1213, 1520, 56, 745, 843, 773, 1225,
- 2227, 1211, 800, 1223, 2977, 1214, 3218, 5235, 1, 3228, 1373, 5183, 1, 3218, 1, 1, 1, 1, 1, 1, 459, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 253, 3444, 2629, 3227, 902, 3318, 2268, 841, 856, 2288, 3218, 1213, 1196, 118,
- 745, 843, 773, 1225, 2227, 1211, 800, 1223, 2977, 1214, 3218, 5235, 1, 3228, 55, 5183, 1, 445, 720, 1,
- 1, 1, 1, 1, 459, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3206, 50, 1, 3227, 3475, 3318, 3188, 2769, 253, 3182, 3185,
- 1213, 3218, 2233, 745, 843, 773, 1225, 2227, 1211, 800, 1223, 2977, 1214, 3218, 1, 376, 191, 1, 1, 902,
- 1, 1, 841, 856, 132, 3218, 1, 2812, 3146, 208, 3229, 3140, 3143, 3218, 3230, 445, 720, 1, 1, 1, 3218, 1,
- 3414, 1, 1, 1, 1, 1, 3432, 3434, 3433, 71, 3381, 3218, 3382, 3380, 3435, 3383, 3379, 3476, 3218, 2760,
- 2739, 191, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3218, 5235, 1, 3228, 3218, 5183, 1, 3218, 3218,
- 1, 1, 1, 1, 1, 459, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3218, 2189, 3218, 3227, 1857, 3318, 1398, 3432, 3434,
- 3433, 3218, 1213, 1938, 3218, 745, 843, 773, 1225, 2227, 1211, 800, 1223, 2977, 1214, 3218, 5235, 1,
- 3228, 2309, 5183, 1, 201, 617, 1, 1, 1, 1, 1, 459, 1, 1, 1, 1, 1, 1, 1, 1, 1, 379, 256, 253, 3227, 902,
- 3318, 3200, 841, 856, 3194, 3197, 1213, 112, 3600, 745, 843, 773, 1225, 2227, 1211, 800, 1223, 2977,
- 1214, 3218, 5235, 1, 3228, 3218, 5183, 1, 1610, 248, 1, 1, 1, 1, 1, 459, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 3212, 2209, 3227, 1, 3318, 1829, 3224, 3432, 3434, 3433, 1213, 3218, 3218, 745, 843, 773, 1225, 2227,
- 1211, 800, 1223, 2977, 1214, 3218, 3229, 183, 922, 902, 3230, 902, 841, 856, 841, 856, 249, 3218, 2909,
- 49, 129, 731, 3223, 2925, 3095, 2769, 3218, 3089, 3092, 3432, 3434, 3433, 3218, 3381, 2472, 3382, 3380,
- 3435, 3383, 3379, 1, 1, 1, 3215, 3432, 3434, 3433, 3218, 3381, 3476, 3382, 3380, 3435, 3383, 3379, 3218,
- 3386, 3391, 3390, 3388, 3389, 3387, 3392, 3393, 3385, 3394, 3395, 3396, 1762, 2880, 2848, 3386, 3391,
- 3390, 3388, 3389, 3387, 3392, 3393, 3385, 3394, 3395, 3396, 1, 3229, 433, 3222, 3218, 3230, 1643, 2760,
- 2739, 2703, 2694, 3234, 2721, 1283, 3218, 2868, 2820, 2653, 3231, 3232, 3233, 2681, 639, 1325, 3218,
- 3229, 433, 3222, 815, 3230, 2243, 344, 30, 2703, 2694, 3234, 2721, 1283, 3218, 2868, 2820, 2653, 3231,
- 3232, 3233, 2681, 639, 1325, 1, 4100, 433, 29, 1429, 4002, 2712, 3218, 3561, 2703, 2694, 3234, 2721,
- 1283, 4442, 2868, 2820, 2653, 3231, 3232, 3233, 2681, 639, 1325, 30, 3218, 3229, 433, 220, 3221, 3230,
- 2712, 3218, 556, 2703, 2694, 3234, 2721, 1283, 4442, 2868, 2820, 2653, 3231, 3232, 3233, 2681, 639,
- 1325, 337, 29, 1693, 3218, 3221, 20, 179, 3158, 3158, 179, 377, 3158, 179, 179, 902, 731, 157, 841, 856,
- 354, 364, 364, 3191, 364, 3247, 3191, 364, 364, 3218, 179, 179, 179, 3158, 179, 3218, 179, 179, 179,
- 179, 179, 3218, 3158, 3158, 364, 364, 364, 3191, 364, 1094, 364, 364, 364, 364, 364, 1150, 364, 3191, 1,
- 4100, 433, 207, 683, 4002, 2712, 211, 683, 2703, 2694, 3234, 2721, 1283, 4442, 2868, 2820, 2653, 3231,
- 3232, 3233, 2681, 639, 1325, 3218, 3229, 433, 1, 589, 3230, 2712, 207, 3218, 2703, 2694, 3234, 2721,
- 1283, 4442, 2868, 2820, 2653, 3231, 3232, 3233, 2681, 639, 1325, 380, 3229, 433, 347, 3218, 3230, 2712,
- 3218, 3456, 2703, 2694, 3234, 2721, 1283, 4442, 2868, 2820, 2653, 3231, 3232, 3233, 2681, 639, 1325,
- 3218, 3229, 433, 3230, 1508, 3230, 2712, 1, 5159, 2703, 2694, 3234, 2721, 1283, 4442, 2868, 2820, 2653,
- 3231, 3232, 3233, 2681, 639, 1325, 3218, 3229, 433, 3218, 766, 3230, 2712, 3218, 3218, 2703, 2694, 3234,
- 2721, 1283, 365, 2868, 2820, 2653, 3231, 3232, 3233, 2681, 639, 1325, 3218, 3229, 2728, 3218, 4442,
- 3230, 2712, 3229, 3218, 2703, 2694, 3234, 2721, 1283, 3218, 2868, 2820, 2653, 3231, 3232, 3233, 2681,
- 639, 1325, 3218, 3229, 2780, 3218, 651, 3230, 2712, 3218, 3218, 2703, 2694, 3234, 2721, 1283, 229, 2868,
- 2820, 2653, 3231, 3232, 3233, 2681, 639, 1325, 1, 3229, 433, 3218, 232, 3230, 2712, 3218, 42, 2703,
- 2694, 3234, 2721, 1283, 1369, 2868, 2820, 2653, 3231, 3232, 3233, 2681, 639, 1325, 332, 3229, 433, 3218,
- 1, 3230, 2712, 3224, 3218, 2703, 2694, 3234, 2721, 1283, 3218, 2868, 2820, 2653, 3231, 3232, 3233, 2681,
- 639, 1325, 133, 3218, 3218, 1665, 3155, 206, 5557, 3149, 3152, 902, 5557, 366, 841, 856, 324, 3167, 759,
- 3223, 3161, 3164, 3218, 3218, 3218, 3228, 3432, 3434, 3433, 3218, 3381, 1255, 3382, 3380, 3435, 3383,
- 3379, 3432, 3434, 3433, 3218, 3381, 2512, 3382, 3380, 3435, 3383, 3379, 3218, 3227, 1227, 1199, 1171,
- 1143, 1115, 1059, 1087, 1031, 1003, 975, 32, 687, 3080, 1, 3444, 1942, 262, 1, 3209, 1942, 3224, 1913,
- 3218, 375, 5566, 3244, 3245, 902, 5566, 3218, 841, 856, 3218, 1997, 3218, 3224, 3218, 3229, 350, 3218,
- 1386, 3230, 3218, 1967, 518, 3224, 3083, 3218, 3229, 731, 262, 250, 3230, 731, 3223, 3218, 1242, 292,
- 3224, 3218, 3218, 1038, 262, 3224, 1, 3218, 159, 116, 3224, 3223, 902, 3218, 1481, 841, 856, 1, 1, 1,
- 370, 3223, 580, 3218, 902, 3218, 3224, 841, 856, 3218, 3218, 3218, 251, 116, 3223, 1532, 3218, 422, 369,
- 3223, 229, 3218, 902, 116, 3223, 841, 856, 3218, 812, 252, 3222, 588, 3218, 3218, 233, 1252, 3432, 3434,
- 3433, 371, 3223, 3218, 3218, 902, 3224, 3228, 841, 856, 3218, 911, 3218, 3218, 915, 3432, 3434, 3433,
- 200, 3218, 372, 189, 902, 3218, 902, 841, 856, 841, 856, 373, 379, 3227, 3218, 902, 374, 206, 841, 856,
- 902, 3218, 3223, 841, 856, 3218, 375, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 1408, 1996, 3218, 3218,
- 3218, 1583, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3221 };
- }
-
- public final static char termAction[] = TermAction.termAction;
-
- @Override
- public final int termAction(int index) {
- return termAction[index];
- }
-
- public interface Asb {
- public final static char asb[] = { 0, 123, 1, 31, 54, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 62, 3, 289,
- 286, 293, 291, 301, 299, 303, 302, 305, 304, 275, 31, 3, 430, 430, 254, 31, 272, 272, 272, 114, 387,
- 371, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 618, 31, 31, 31, 31, 31,
- 31, 31, 31, 31, 31, 31, 31, 31, 272, 272, 250, 153, 118, 228, 473, 174, 173, 517, 549, 549, 549, 529,
- 510, 529, 510, 510, 529, 510, 529, 67, 529, 402, 31, 372, 286, 286, 291, 291, 291, 291, 291, 291, 289,
- 289, 299, 293, 293, 302, 301, 200, 200, 304, 303, 171, 351, 171, 114, 121, 109, 28, 250, 506, 232, 272,
- 551, 476, 365, 271, 616, 169, 510, 430, 427, 430, 169, 430, 510, 31, 71, 3, 371, 597, 317, 317, 430,
- 549, 549, 584, 549, 549, 317, 200, 31, 200, 225, 542, 31, 31, 351, 151, 121, 109, 506, 250, 231, 228,
- 272, 112, 402, 452, 478, 143, 271, 364, 272, 440, 320, 171, 354, 272, 369, 317, 317, 385, 31, 370, 31,
- 31, 584, 200, 433, 584, 549, 544, 151, 109, 109, 31, 31, 250, 232, 473, 457, 456, 118, 478, 272, 452,
- 451, 270, 171, 440, 320, 354, 354, 179, 597, 317, 542, 272, 549, 272, 272, 584, 31, 584, 468, 171, 316,
- 460, 544, 544, 463, 118, 436, 356, 220, 109, 506, 250, 250, 272, 551, 476, 112, 143, 272, 253, 272, 272,
- 320, 351, 541, 320, 354, 356, 445, 356, 317, 597, 544, 584, 31, 584, 584, 58, 450, 57, 371, 544, 460,
- 460, 118, 153, 544, 351, 149, 466, 202, 430, 31, 200, 50, 506, 109, 478, 452, 320, 194, 356, 351, 31,
- 430, 254, 317, 272, 370, 468, 317, 47, 616, 372, 460, 544, 436, 62, 153, 360, 430, 31, 109, 272, 452,
- 253, 351, 316, 31, 312, 194, 313, 351, 272, 254, 317, 584, 431, 272, 371, 31, 250, 431, 194, 31, 313,
- 313, 584, 272, 272, 250, 313, 584 };
- }
-
- public final static char asb[] = Asb.asb;
-
- @Override
- public final int asb(int index) {
- return asb[index];
- }
-
- public interface Asr {
- public final static byte asr[] = { 0, 99, 0, 30, 51, 52, 63, 31, 53, 32, 54, 55, 33, 56, 57, 28, 64, 34, 65, 58,
- 59, 60, 61, 62, 7, 8, 4, 14, 24, 26, 25, 2, 18, 19, 20, 11, 5, 15, 16, 12, 9, 10, 21, 22, 17, 23, 13, 1,
- 6, 0, 69, 36, 70, 0, 77, 27, 99, 49, 37, 3, 48, 0, 48, 68, 77, 50, 99, 70, 85, 15, 16, 33, 28, 34, 32,
- 31, 30, 12, 9, 10, 71, 72, 66, 67, 73, 74, 75, 76, 80, 81, 82, 83, 84, 86, 87, 69, 88, 89, 90, 91, 92,
- 93, 94, 95, 96, 97, 78, 79, 27, 24, 26, 25, 49, 1, 3, 37, 2, 36, 4, 8, 7, 6, 0, 17, 18, 19, 20, 11, 1,
- 5, 2, 15, 16, 12, 6, 9, 10, 21, 22, 13, 23, 29, 0, 3, 49, 37, 1, 24, 0, 3, 50, 36, 70, 15, 16, 12, 6, 9,
- 10, 21, 22, 17, 23, 13, 2, 18, 19, 20, 11, 1, 5, 14, 0, 2, 3, 49, 37, 36, 0, 30, 24, 31, 32, 33, 26, 28,
- 34, 25, 3, 36, 49, 37, 27, 14, 6, 1, 2, 4, 8, 7, 48, 0, 69, 15, 16, 12, 6, 9, 10, 21, 22, 17, 23, 13, 2,
- 18, 19, 20, 11, 14, 1, 5, 36, 70, 0, 2, 25, 0, 24, 26, 25, 28, 15, 16, 12, 6, 9, 10, 21, 22, 17, 23, 13,
- 2, 1, 5, 18, 19, 20, 11, 77, 3, 0, 49, 17, 18, 19, 20, 5, 2, 15, 16, 12, 6, 9, 10, 21, 22, 13, 23, 11,
- 1, 37, 3, 0, 69, 88, 89, 90, 91, 92, 94, 93, 95, 96, 97, 6, 71, 72, 9, 10, 67, 66, 73, 74, 75, 76, 78,
- 79, 80, 81, 12, 82, 83, 84, 68, 77, 37, 50, 99, 86, 87, 48, 4, 8, 7, 49, 27, 3, 0, 30, 51, 24, 52, 63,
- 31, 53, 32, 54, 55, 33, 26, 56, 57, 28, 64, 34, 65, 58, 59, 25, 60, 61, 62, 1, 5, 13, 7, 8, 4, 29, 3,
- 50, 0, 1, 5, 3, 50, 49, 0, 77, 3, 68, 0, 1, 37, 3, 2, 0, 37, 98, 50, 39, 41, 14, 45, 47, 42, 35, 43, 44,
- 40, 38, 46, 29, 3, 27, 2, 18, 19, 20, 11, 15, 16, 12, 6, 9, 10, 21, 22, 17, 23, 13, 63, 64, 65, 59, 51,
- 56, 54, 55, 53, 52, 57, 58, 60, 61, 62, 34, 31, 28, 30, 33, 24, 26, 25, 32, 4, 8, 7, 5, 1, 0, 48, 68, 0,
- 3, 69, 49, 27, 14, 4, 8, 7, 0, 3, 49, 50, 69, 0, 48, 2, 3, 37, 49, 0, 2, 48, 37, 36, 4, 8, 7, 3, 49, 27,
- 69, 0, 3, 48, 37, 11, 0, 6, 2, 36, 37, 3, 30, 51, 52, 63, 31, 53, 32, 54, 55, 33, 56, 57, 28, 64, 34,
- 65, 58, 59, 60, 61, 62, 1, 5, 13, 7, 8, 4, 68, 24, 26, 25, 0, 1, 5, 14, 4, 8, 7, 0, 59, 51, 56, 54, 55,
- 53, 52, 57, 58, 60, 61, 62, 36, 49, 37, 34, 31, 28, 30, 33, 24, 26, 25, 32, 48, 27, 3, 6, 1, 7, 8, 4, 2,
- 0, 6, 30, 51, 24, 52, 63, 31, 53, 32, 54, 55, 33, 26, 56, 57, 28, 64, 34, 65, 58, 59, 25, 60, 61, 62, 1,
- 5, 13, 68, 4, 8, 7, 0, 39, 41, 14, 45, 47, 42, 35, 43, 44, 40, 38, 46, 29, 17, 18, 19, 20, 1, 5, 2, 15,
- 16, 12, 6, 9, 10, 21, 22, 13, 23, 27, 3, 11, 0, 17, 18, 19, 20, 11, 1, 5, 2, 15, 16, 12, 6, 9, 10, 21,
- 22, 13, 23, 48, 0 };
- }
-
- public final static byte asr[] = Asr.asr;
-
- @Override
- public final int asr(int index) {
- return asr[index];
- }
-
- public interface Nasb {
- public final static char nasb[] = { 0, 40, 27, 51, 27, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 27, 28, 27,
- 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 51, 28, 17, 17, 43, 30, 87, 87, 87, 117, 1, 35, 51, 51, 51, 51,
- 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 173, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
- 51, 51, 87, 87, 64, 142, 148, 62, 116, 13, 13, 78, 27, 27, 27, 79, 114, 79, 114, 114, 79, 114, 79, 27,
- 79, 72, 51, 89, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 143, 135,
- 27, 156, 27, 140, 66, 64, 81, 63, 87, 146, 55, 87, 83, 27, 8, 140, 8, 140, 8, 8, 8, 140, 51, 27, 28, 95,
- 177, 179, 179, 8, 27, 27, 151, 27, 27, 179, 27, 69, 27, 58, 178, 51, 51, 36, 135, 27, 114, 81, 64, 63,
- 38, 87, 131, 19, 27, 99, 46, 86, 27, 87, 114, 135, 27, 135, 87, 27, 179, 179, 160, 30, 27, 30, 30, 151,
- 27, 27, 151, 27, 104, 49, 114, 135, 51, 51, 64, 63, 130, 13, 13, 148, 99, 87, 87, 27, 87, 27, 140, 165,
- 135, 8, 143, 162, 179, 178, 87, 27, 87, 87, 151, 51, 151, 102, 53, 179, 114, 137, 133, 27, 148, 27, 15,
- 10, 135, 81, 64, 64, 87, 146, 55, 110, 46, 87, 51, 87, 87, 135, 36, 178, 126, 8, 15, 27, 27, 179, 162,
- 121, 151, 30, 151, 151, 87, 27, 27, 35, 121, 140, 114, 148, 50, 105, 36, 48, 27, 50, 8, 51, 27, 33, 81,
- 38, 169, 87, 165, 121, 15, 36, 51, 8, 162, 179, 87, 27, 102, 179, 27, 102, 89, 140, 112, 27, 60, 50, 64,
- 8, 51, 38, 87, 87, 51, 36, 179, 51, 27, 137, 114, 36, 87, 162, 179, 151, 27, 87, 95, 51, 64, 27, 121,
- 51, 114, 140, 151, 87, 87, 64, 140, 151 };
- }
-
- public final static char nasb[] = Nasb.nasb;
-
- @Override
- public final int nasb(int index) {
- return nasb[index];
- }
-
- public interface Nasr {
- public final static char nasr[] = { 0, 103, 116, 101, 100, 87, 99, 98, 1, 0, 1, 140, 0, 52, 0, 80, 0, 94, 0,
- 103, 116, 102, 101, 100, 87, 99, 98, 0, 60, 29, 7, 30, 0, 132, 0, 7, 50, 0, 32, 0, 7, 117, 0, 7, 119, 0,
- 112, 0, 110, 7, 59, 5, 0, 133, 0, 24, 7, 0, 137, 0, 128, 0, 7, 5, 41, 0, 5, 7, 0, 5, 139, 0, 87, 81, 82,
- 83, 84, 93, 72, 53, 0, 75, 0, 136, 24, 0, 114, 24, 0, 31, 7, 1, 34, 96, 0, 34, 1, 50, 71, 7, 31, 0, 92,
- 0, 7, 28, 45, 43, 48, 0, 64, 63, 45, 43, 28, 0, 24, 63, 64, 7, 0, 7, 45, 43, 28, 0, 7, 60, 89, 0, 24,
- 64, 63, 43, 45, 7, 0, 43, 45, 7, 12, 0, 5, 59, 57, 0, 7, 31, 28, 61, 0, 1, 34, 7, 35, 0, 64, 63, 28, 0,
- 31, 66, 7, 67, 0, 105, 7, 60, 0, 125, 7, 31, 0, 7, 30, 118, 0, 30, 7, 26, 0 };
- }
-
- public final static char nasr[] = Nasr.nasr;
-
- @Override
- public final int nasr(int index) {
- return nasr[index];
- }
-
- public interface TerminalIndex {
- public final static char terminalIndex[] = { 0, 87, 2, 89, 99, 88, 9, 97, 98, 10, 11, 86, 8, 95, 3, 6, 7, 70,
- 83, 84, 85, 12, 13, 96, 50, 78, 66, 94, 71, 100, 46, 57, 62, 65, 74, 79, 1, 92, 47, 48, 51, 52, 53, 59,
- 60, 61, 67, 73, 29, 42, 93, 49, 54, 58, 63, 64, 68, 69, 76, 77, 80, 81, 82, 56, 72, 75, 16, 17, 30, 31,
- 4, 14, 15, 18, 19, 20, 21, 91, 43, 44, 22, 23, 24, 25, 26, 5, 27, 28, 32, 33, 34, 35, 36, 37, 38, 39,
- 40, 41, 55, 101, 90 };
- }
-
- public final static char terminalIndex[] = TerminalIndex.terminalIndex;
-
- @Override
- public final int terminalIndex(int index) {
- return terminalIndex[index];
- }
-
- public interface NonterminalIndex {
- public final static char nonterminalIndex[] = { 0, 107, 0, 0, 0, 109, 113, 0, 114, 115, 116, 117, 186, 0, 0, 0,
- 118, 119, 120, 121, 122, 123, 124, 0, 104, 0, 106, 125, 187, 130, 108, 134, 142, 0, 126, 129, 0, 0, 0,
- 0, 0, 103, 162, 164, 0, 165, 0, 0, 167, 0, 105, 152, 166, 141, 0, 0, 0, 112, 128, 0, 156, 163, 177, 178,
- 179, 0, 133, 0, 151, 174, 0, 132, 144, 0, 168, 172, 173, 176, 0, 111, 0, 145, 146, 147, 148, 149, 150,
- 153, 0, 155, 159, 161, 191, 194, 110, 127, 131, 135, 136, 137, 138, 139, 140, 143, 0, 154, 158, 0, 160,
- 171, 181, 0, 188, 0, 190, 0, 193, 102, 0, 0, 0, 0, 157, 0, 169, 170, 175, 180, 0, 182, 183, 0, 184, 185,
- 0, 0, 189, 0, 0, 192, 195, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static char nonterminalIndex[] = NonterminalIndex.nonterminalIndex;
-
- @Override
- public final int nonterminalIndex(int index) {
- return nonterminalIndex[index];
- }
-
- public interface ScopePrefix {
- public final static char scopePrefix[] = { 198, 254, 330, 216, 310, 121, 147, 153, 282, 95, 359, 381, 338, 1,
- 104, 137, 163, 183, 63, 262, 320, 35, 59, 71, 77, 109, 159, 233, 298, 71, 420, 424, 355, 377, 390, 404,
- 390, 344, 15, 27, 56, 8, 8, 113, 116, 168, 116, 193, 116, 243, 248, 251, 307, 428, 50, 83, 89, 129, 237,
- 83, 401, 411, 411, 8, 129, 272, 206, 368, 206, 272, 20, 20, 41, 229, 41, 41, 41, 41, 41, 305, 399, 20,
- 20, 45, 142, 171, 142, 171, 171 };
- }
-
- public final static char scopePrefix[] = ScopePrefix.scopePrefix;
-
- @Override
- public final int scopePrefix(int index) {
- return scopePrefix[index];
- }
-
- public interface ScopeSuffix {
- public final static char scopeSuffix[] = { 75, 75, 317, 75, 317, 127, 6, 6, 75, 101, 365, 387, 325, 6, 39, 127,
- 6, 39, 68, 267, 325, 39, 39, 75, 81, 39, 6, 231, 231, 75, 39, 6, 317, 317, 317, 408, 394, 348, 18, 18,
- 39, 6, 6, 39, 119, 6, 178, 39, 196, 246, 246, 246, 231, 39, 53, 86, 92, 144, 240, 302, 53, 414, 417, 11,
- 132, 267, 223, 371, 209, 275, 25, 33, 43, 231, 288, 290, 292, 294, 296, 231, 231, 22, 30, 47, 144, 180,
- 132, 173, 188 };
- }
-
- public final static char scopeSuffix[] = ScopeSuffix.scopeSuffix;
-
- @Override
- public final int scopeSuffix(int index) {
- return scopeSuffix[index];
- }
-
- public interface ScopeLhs {
- public final static char scopeLhs[] = { 83, 81, 39, 83, 39, 61, 52, 52, 81, 57, 39, 38, 39, 141, 65, 61, 52, 48,
- 13, 81, 39, 93, 111, 133, 78, 65, 52, 89, 66, 29, 5, 5, 39, 38, 38, 23, 38, 39, 106, 86, 3, 132, 131,
- 63, 77, 52, 124, 45, 51, 82, 82, 82, 40, 3, 36, 78, 110, 61, 89, 66, 36, 8, 5, 141, 61, 81, 83, 39, 83,
- 81, 106, 86, 116, 89, 102, 101, 100, 99, 98, 66, 37, 106, 86, 139, 61, 48, 61, 46, 48 };
- }
-
- public final static char scopeLhs[] = ScopeLhs.scopeLhs;
-
- @Override
- public final int scopeLhs(int index) {
- return scopeLhs[index];
- }
-
- public interface ScopeLa {
- public final static byte scopeLa[] = { 50, 50, 37, 50, 37, 24, 77, 77, 50, 50, 37, 98, 27, 77, 37, 24, 77, 37,
- 37, 14, 27, 37, 37, 50, 14, 37, 77, 27, 27, 50, 37, 77, 37, 37, 37, 48, 37, 27, 7, 7, 37, 77, 77, 37, 2,
- 77, 1, 37, 1, 1, 1, 1, 27, 37, 48, 1, 69, 6, 1, 1, 48, 37, 37, 68, 6, 14, 14, 35, 1, 1, 1, 1, 13, 27, 1,
- 63, 64, 64, 59, 27, 27, 1, 1, 68, 6, 2, 6, 2, 2 };
- }
-
- public final static byte scopeLa[] = ScopeLa.scopeLa;
-
- @Override
- public final int scopeLa(int index) {
- return scopeLa[index];
- }
-
- public interface ScopeStateSet {
- public final static char scopeStateSet[] = { 48, 48, 113, 48, 113, 92, 99, 99, 48, 39, 113, 113, 113, 6, 103,
- 92, 99, 17, 52, 48, 113, 48, 14, 8, 124, 103, 99, 10, 33, 110, 129, 129, 113, 113, 113, 165, 113, 113,
- 1, 27, 129, 4, 6, 103, 105, 99, 29, 17, 20, 48, 48, 48, 113, 129, 113, 124, 199, 92, 10, 33, 113, 136,
- 129, 6, 92, 48, 48, 113, 48, 48, 1, 27, 49, 10, 49, 49, 49, 49, 49, 33, 113, 1, 27, 31, 92, 17, 92, 17,
- 17 };
- }
-
- public final static char scopeStateSet[] = ScopeStateSet.scopeStateSet;
-
- @Override
- public final int scopeStateSet(int index) {
- return scopeStateSet[index];
- }
-
- public interface ScopeRhs {
- public final static char scopeRhs[] = { 0, 158, 68, 158, 36, 0, 103, 0, 158, 36, 0, 30, 128, 103, 0, 190, 128,
- 0, 187, 0, 128, 0, 159, 187, 0, 159, 0, 151, 128, 0, 152, 187, 0, 152, 0, 179, 2, 13, 0, 104, 0, 203, 0,
- 194, 0, 158, 0, 30, 128, 0, 239, 39, 0, 29, 129, 0, 129, 2, 0, 235, 2, 212, 0, 234, 2, 2, 7, 0, 104,
- 104, 0, 196, 107, 14, 0, 105, 0, 224, 107, 131, 0, 185, 0, 107, 131, 0, 169, 185, 0, 229, 107, 0, 31,
- 151, 0, 180, 227, 107, 14, 159, 0, 105, 0, 0, 174, 107, 2, 163, 0, 174, 107, 2, 0, 177, 2, 0, 161, 107,
- 0, 177, 0, 107, 149, 6, 149, 161, 0, 172, 0, 149, 161, 0, 9, 0, 0, 172, 0, 107, 149, 6, 149, 0, 149, 0,
- 9, 0, 0, 127, 28, 209, 107, 36, 0, 127, 209, 107, 28, 36, 0, 127, 28, 36, 0, 127, 209, 107, 36, 0, 127,
- 36, 0, 145, 0, 2, 0, 170, 104, 0, 167, 0, 2, 104, 0, 174, 107, 2, 145, 0, 2, 0, 168, 104, 0, 151, 2, 0,
- 162, 0, 180, 207, 107, 14, 101, 223, 63, 0, 223, 63, 0, 107, 3, 0, 0, 0, 105, 0, 180, 207, 107, 14, 223,
- 63, 0, 3, 0, 0, 0, 105, 0, 160, 0, 106, 0, 222, 107, 160, 0, 107, 160, 0, 157, 106, 0, 188, 63, 0, 107,
- 0, 188, 65, 0, 188, 64, 0, 204, 107, 14, 221, 101, 220, 187, 0, 221, 101, 220, 187, 0, 3, 0, 0, 105, 0,
- 220, 187, 0, 107, 0, 3, 0, 0, 105, 0, 204, 107, 14, 220, 187, 0, 148, 0, 147, 0, 146, 0, 145, 0, 144, 0,
- 197, 107, 131, 0, 135, 106, 0, 131, 0, 130, 46, 0, 167, 126, 167, 166, 2, 43, 0, 104, 129, 0, 167, 166,
- 2, 43, 0, 106, 0, 104, 129, 0, 167, 126, 167, 126, 167, 2, 43, 0, 167, 126, 167, 2, 43, 0, 167, 2, 43,
- 0, 106, 0, 106, 0, 104, 129, 0, 130, 2, 35, 0, 130, 2, 35, 135, 42, 0, 104, 106, 0, 135, 42, 0, 79, 2,
- 108, 104, 106, 0, 130, 2, 47, 0, 135, 124, 130, 2, 45, 0, 55, 129, 0, 130, 2, 45, 0, 104, 129, 55, 129,
- 0, 134, 0, 158, 39, 0, 130, 87, 122, 0, 29, 125, 0, 179, 2, 0, 104, 114, 0, 104, 112, 0, 219, 2, 105, 0,
- 130, 36, 105, 0, 130, 2, 0 };
- }
-
- public final static char scopeRhs[] = ScopeRhs.scopeRhs;
-
- @Override
- public final int scopeRhs(int index) {
- return scopeRhs[index];
- }
-
- public interface ScopeState {
- public final static char scopeState[] = { 0, 1996, 1856, 0, 452, 0, 412, 0, 582, 0, 2945, 1855, 2890, 0, 588,
- 518, 0, 2159, 2101, 1721, 1996, 2061, 1856, 2629, 2110, 1942, 1888, 1913, 1832, 1696, 0, 843, 0, 1788,
- 1771, 2812, 1652, 1635, 0, 687, 659, 556, 589, 654, 528, 417, 2162, 0, 1279, 424, 388, 0, 3039, 3030,
- 2978, 1996, 2957, 2061, 2159, 3009, 1856, 2101, 2947, 2736, 1913, 1832, 1721, 2110, 2361, 2217, 2925,
- 1696, 2920, 424, 2916, 1714, 1685, 1625, 855, 2554, 1279, 2637, 2612, 1762, 2608, 2880, 2848, 2577,
- 1896, 2286, 2182, 388, 2839, 2370, 2816, 2789, 2211, 2785, 0, 1454, 1269, 601, 416, 1721, 2554, 1942,
- 1888, 1829, 2731, 0, 2780, 2728, 433, 2489, 2469, 2448, 2428, 2387, 2371, 2329, 2309, 2288, 2268, 2227,
- 1788, 1771, 1652, 1635, 0, 2909, 2901, 2868, 2820, 2653, 1325, 1283, 2243, 1643, 2162, 617, 1337, 2079,
- 2048, 2547, 2530, 2175, 720, 445, 2570, 2130, 2025, 1971, 1750, 875, 2769, 2760, 2739, 2593, 426, 2721,
- 2712, 2703, 2694, 2681, 639, 1610, 1583, 1559, 915, 1532, 687, 1508, 1481, 659, 589, 759, 1457, 1429,
- 1401, 887, 1373, 1297, 843, 815, 731, 1255, 1227, 1199, 1171, 1143, 1115, 1087, 1059, 1031, 1003, 975,
- 388, 943, 787, 556, 528, 0 };
- }
-
- public final static char scopeState[] = ScopeState.scopeState;
-
- @Override
- public final int scopeState(int index) {
- return scopeState[index];
- }
-
- public interface InSymb {
- public final static char inSymb[] = { 0, 0, 217, 107, 195, 13, 23, 17, 22, 21, 10, 9, 6, 12, 16, 15, 105, 2,
- 110, 109, 116, 111, 118, 117, 120, 119, 122, 121, 106, 49, 2, 85, 70, 2, 36, 129, 179, 130, 160, 107,
- 14, 10, 9, 72, 71, 6, 79, 78, 76, 75, 74, 73, 66, 67, 12, 81, 80, 83, 82, 87, 86, 84, 97, 96, 95, 93,
- 94, 92, 91, 90, 89, 88, 69, 179, 219, 130, 124, 107, 36, 2, 164, 163, 198, 7, 8, 4, 199, 187, 200, 65,
- 64, 201, 63, 202, 101, 216, 203, 13, 107, 109, 109, 111, 111, 111, 111, 111, 111, 110, 110, 117, 116,
- 116, 119, 118, 218, 130, 121, 120, 124, 14, 159, 161, 149, 128, 28, 127, 107, 6, 177, 107, 2, 2, 2, 2,
- 220, 128, 188, 128, 188, 223, 188, 128, 13, 106, 2, 196, 46, 38, 40, 44, 43, 35, 42, 47, 45, 134, 41,
- 39, 101, 4, 131, 48, 48, 107, 14, 149, 6, 107, 127, 209, 175, 174, 131, 107, 176, 107, 2, 236, 1, 11,
- 101, 14, 101, 14, 179, 3, 130, 101, 2, 2, 135, 2, 2, 48, 239, 158, 48, 237, 107, 107, 6, 149, 209, 28,
- 127, 6, 2, 143, 145, 107, 49, 174, 234, 212, 2, 221, 128, 107, 14, 107, 124, 166, 167, 131, 130, 35,
- 130, 130, 48, 68, 48, 2, 224, 197, 151, 128, 2, 186, 107, 148, 227, 107, 149, 107, 127, 127, 151, 107,
- 2, 161, 49, 124, 2, 11, 1, 14, 204, 160, 205, 107, 207, 101, 208, 167, 126, 107, 124, 2, 124, 124, 238,
- 11, 192, 14, 49, 128, 151, 107, 69, 161, 180, 49, 229, 240, 70, 36, 101, 230, 107, 175, 107, 235, 107,
- 107, 207, 180, 69, 49, 126, 167, 130, 135, 48, 124, 2, 49, 107, 128, 161, 148, 150, 69, 158, 70, 36,
- 175, 174, 225, 49, 204, 222, 48, 151, 128, 190, 180, 167, 126, 124, 98, 6, 1, 196, 68, 158, 49, 49, 48,
- 190, 128, 124, 167, 1, 158, 128, 124 };
- }
-
- public final static char inSymb[] = InSymb.inSymb;
-
- @Override
- public final int inSymb(int index) {
- return inSymb[index];
- }
-
- public interface Name {
- public final static String name[] = { "", "[", "(", "{", ".", "->", "++", "--", "&", "*", "+", "-", "~", "!",
- "/", "%", ">>", "<<", "<", ">", "<=", ">=", "==", "!=", "^", "|", "&&", "||", "?", ":", "...", "=",
- "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", ",", ">?", "<?", "$empty", "auto",
- "break", "case", "char", "const", "continue", "default", "do", "double", "else", "enum", "extern",
- "float", "for", "goto", "if", "inline", "int", "long", "register", "restrict", "return", "short",
- "signed", "sizeof", "static", "struct", "switch", "typedef", "union", "unsigned", "void", "volatile",
- "while", "_Bool", "_Complex", "_Imaginary", "integer", "floating", "charconst", "stringlit",
- "identifier", "Completion", "EndOfCompletion", "Invalid", "RightBracket", "RightParen", "RightBrace",
- "SemiColon", "typeof", "__alignof__", "__attribute__", "__declspec", "asm", "ERROR_TOKEN", "EOF_TOKEN",
- "no_sizeof_type_name_start", "]", ")", "}", ";", "identifier_token", "expression", "postfix_expression",
- "member_name", "type_id", "initializer_list", "unary_expression", "cast_expression",
- "multiplicative_expression", "additive_expression", "shift_expression", "relational_expression",
- "equality_expression", "and_expression", "exclusive_or_expression", "inclusive_or_expression",
- "logical_and_expression", "logical_or_expression", "assignment_expression", "expression_in_statement",
- "expression_list_actual", "constant_expression", "statement", "compound_statement", "block_item_list",
- "block_item", "declaration", "declaration_specifiers", "init_declarator_list",
- "simple_declaration_specifiers", "struct_or_union_declaration_sp" + "ecifiers",
- "elaborated_declaration_specifi" + "ers", "enum_declaration_specifiers",
- "typdef_name_declaration_specif" + "iers", "no_type_declaration_specifier", "type_qualifier",
- "no_type_declaration_specifiers", "simple_type_specifier", "struct_or_union_specifier",
- "elaborated_specifier", "enum_specifier", "type_name_specifier", "init_declarator",
- "complete_declarator", "initializer", "declarator", "struct_or_union", "struct_declaration_list",
- "struct_declaration", "specifier_qualifier_list", "struct_declarator_list",
- "complete_struct_declarator", "struct_declarator", "enumerator_list", "enumerator", "direct_declarator",
- "pointer_seq", "array_direct_declarator", "basic_direct_declarator", "array_modifier",
- "function_direct_declarator", "parameter_type_list", "function_declarator", "identifier_list",
- "array_modifier_type_qualifiers", "type_qualifier_list", "parameter_list", "parameter_declaration",
- "complete_parameter_declarator", "abstract_declarator", "direct_abstract_declarator",
- "basic_direct_abstract_declarat" + "or", "array_direct_abstract_declarat" + "or", "initializer_seq",
- "designated_initializer", "designation", "designator_list", "designator", "function_body",
- "attribute_or_decl_specifier", "attribute_or_decl_specifier_se" + "q", "word",
- "extended_decl_modifier_seq", "extended_decl_modifier", "extended_asm_param", "case_range_expression",
- "typeof_declaration_specifiers", "typeof_type_specifier", "field_name_designator" };
- }
-
- public final static String name[] = Name.name;
-
- @Override
- public final String name(int index) {
- return name[index];
- }
-
- public final static int ERROR_SYMBOL = 29, SCOPE_UBOUND = 88, SCOPE_SIZE = 89, MAX_NAME_LENGTH = 38;
-
- @Override
- public final int getErrorSymbol() {
- return ERROR_SYMBOL;
- }
-
- @Override
- public final int getScopeUbound() {
- return SCOPE_UBOUND;
- }
-
- @Override
- public final int getScopeSize() {
- return SCOPE_SIZE;
- }
-
- @Override
- public final int getMaxNameLength() {
- return MAX_NAME_LENGTH;
- }
-
- public final static int NUM_STATES = 345, NT_OFFSET = 100, LA_STATE_OFFSET = 3605, MAX_LA = 2147483647,
- NUM_RULES = 387, NUM_NONTERMINALS = 148, NUM_SYMBOLS = 248, SEGMENT_SIZE = 8192, START_STATE = 485,
- IDENTIFIER_SYMBOL = 0, EOFT_SYMBOL = 99, EOLT_SYMBOL = 99, ACCEPT_ACTION = 3079, ERROR_ACTION = 3218;
-
- public final static boolean BACKTRACK = true;
-
- @Override
- public final int getNumStates() {
- return NUM_STATES;
- }
-
- @Override
- public final int getNtOffset() {
- return NT_OFFSET;
- }
-
- @Override
- public final int getLaStateOffset() {
- return LA_STATE_OFFSET;
- }
-
- @Override
- public final int getMaxLa() {
- return MAX_LA;
- }
-
- @Override
- public final int getNumRules() {
- return NUM_RULES;
- }
-
- @Override
- public final int getNumNonterminals() {
- return NUM_NONTERMINALS;
- }
-
- @Override
- public final int getNumSymbols() {
- return NUM_SYMBOLS;
- }
-
- @Override
- public final int getSegmentSize() {
- return SEGMENT_SIZE;
- }
-
- @Override
- public final int getStartState() {
- return START_STATE;
- }
-
- @Override
- public final int getStartSymbol() {
- return lhs[0];
- }
-
- public final int getIdentifierSymbol() {
- return IDENTIFIER_SYMBOL;
- }
-
- @Override
- public final int getEoftSymbol() {
- return EOFT_SYMBOL;
- }
-
- @Override
- public final int getEoltSymbol() {
- return EOLT_SYMBOL;
- }
-
- @Override
- public final int getAcceptAction() {
- return ACCEPT_ACTION;
- }
-
- @Override
- public final int getErrorAction() {
- return ERROR_ACTION;
- }
-
- @Override
- public final boolean isValidForParser() {
- return isValidForParser;
- }
-
- @Override
- public final boolean getBacktrack() {
- return BACKTRACK;
- }
-
- @Override
- public final int originalState(int state) {
- return -baseCheck[state];
- }
-
- @Override
- public final int asi(int state) {
- return asb[originalState(state)];
- }
-
- @Override
- public final int nasi(int state) {
- return nasb[originalState(state)];
- }
-
- @Override
- public final int inSymbol(int state) {
- return inSymb[originalState(state)];
- }
-
- @Override
- public final int ntAction(int state, int sym) {
- return baseAction[state + sym];
- }
-
- @Override
- public final int tAction(int state, int sym) {
- int i = baseAction[state], k = i + sym;
- return termAction[termCheck[k] == sym ? k : i];
- }
-
- @Override
- public final int lookAhead(int la_state, int sym) {
- int k = la_state + sym;
- return termAction[termCheck[k] == sym ? k : la_state];
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gcc/GCCSizeofExpressionParsersym.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gcc/GCCSizeofExpressionParsersym.java
deleted file mode 100644
index 65cabedaacb..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gcc/GCCSizeofExpressionParsersym.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2010 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.dom.lrparser.gcc;
-
-public interface GCCSizeofExpressionParsersym {
- public final static int TK_auto = 30, TK_break = 38, TK_case = 39, TK_char = 51, TK_const = 24, TK_continue = 40,
- TK_default = 41, TK_do = 42, TK_double = 52, TK_else = 98, TK_enum = 63, TK_extern = 31, TK_float = 53,
- TK_for = 43, TK_goto = 44, TK_if = 45, TK_inline = 32, TK_int = 54, TK_long = 55, TK_register = 33,
- TK_restrict = 26, TK_return = 46, TK_short = 56, TK_signed = 57, TK_sizeof = 17, TK_static = 28,
- TK_struct = 64, TK_switch = 47, TK_typedef = 34, TK_union = 65, TK_unsigned = 58, TK_void = 59,
- TK_volatile = 25, TK_while = 35, TK__Bool = 60, TK__Complex = 61, TK__Imaginary = 62, TK_integer = 18,
- TK_floating = 19, TK_charconst = 20, TK_stringlit = 11, TK_identifier = 1, TK_Completion = 5,
- TK_EndOfCompletion = 3, TK_Invalid = 100, TK_LeftBracket = 36, TK_LeftParen = 2, TK_LeftBrace = 14,
- TK_Dot = 70, TK_Arrow = 85, TK_PlusPlus = 15, TK_MinusMinus = 16, TK_And = 12, TK_Star = 6, TK_Plus = 9,
- TK_Minus = 10, TK_Tilde = 21, TK_Bang = 22, TK_Slash = 71, TK_Percent = 72, TK_RightShift = 66,
- TK_LeftShift = 67, TK_LT = 73, TK_GT = 74, TK_LE = 75, TK_GE = 76, TK_EQ = 80, TK_NE = 81, TK_Caret = 82,
- TK_Or = 83, TK_AndAnd = 84, TK_OrOr = 86, TK_Question = 87, TK_Colon = 48, TK_DotDotDot = 68,
- TK_Assign = 69, TK_StarAssign = 88, TK_SlashAssign = 89, TK_PercentAssign = 90, TK_PlusAssign = 91,
- TK_MinusAssign = 92, TK_RightShiftAssign = 93, TK_LeftShiftAssign = 94, TK_AndAssign = 95,
- TK_CaretAssign = 96, TK_OrAssign = 97, TK_Comma = 49, TK_RightBracket = 77, TK_RightParen = 37,
- TK_RightBrace = 50, TK_SemiColon = 27, TK_typeof = 13, TK___alignof__ = 23, TK___attribute__ = 7,
- TK___declspec = 8, TK_MAX = 78, TK_MIN = 79, TK_asm = 4, TK_ERROR_TOKEN = 29, TK_EOF_TOKEN = 99;
-
- public final static String orderedTerminalSymbols[] = { "", "identifier", "LeftParen", "EndOfCompletion", "asm",
- "Completion", "Star", "__attribute__", "__declspec", "Plus", "Minus", "stringlit", "And", "typeof",
- "LeftBrace", "PlusPlus", "MinusMinus", "sizeof", "integer", "floating", "charconst", "Tilde", "Bang",
- "__alignof__", "const", "volatile", "restrict", "SemiColon", "static", "ERROR_TOKEN", "auto", "extern",
- "inline", "register", "typedef", "while", "LeftBracket", "RightParen", "break", "case", "continue",
- "default", "do", "for", "goto", "if", "return", "switch", "Colon", "Comma", "RightBrace", "char", "double",
- "float", "int", "long", "short", "signed", "unsigned", "void", "_Bool", "_Complex", "_Imaginary", "enum",
- "struct", "union", "RightShift", "LeftShift", "DotDotDot", "Assign", "Dot", "Slash", "Percent", "LT", "GT",
- "LE", "GE", "RightBracket", "MAX", "MIN", "EQ", "NE", "Caret", "Or", "AndAnd", "Arrow", "OrOr", "Question",
- "StarAssign", "SlashAssign", "PercentAssign", "PlusAssign", "MinusAssign", "RightShiftAssign",
- "LeftShiftAssign", "AndAssign", "CaretAssign", "OrAssign", "else", "EOF_TOKEN", "Invalid" };
-
- public final static boolean isValidForParser = true;
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gpp/GPPParser.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gpp/GPPParser.java
deleted file mode 100644
index 6a6f4133832..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gpp/GPPParser.java
+++ /dev/null
@@ -1,3014 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2015 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.dom.lrparser.gpp;
-
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.cdt.core.dom.ast.IASTBinaryExpression;
-import org.eclipse.cdt.core.dom.ast.IASTCompletionNode;
-import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
-import org.eclipse.cdt.core.dom.ast.IASTTypeIdExpression;
-import org.eclipse.cdt.core.dom.ast.IASTUnaryExpression;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTBinaryExpression;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCastExpression;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTLiteralExpression;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTypeIdExpression;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTUnaryExpression;
-import org.eclipse.cdt.core.dom.ast.gnu.cpp.IGPPASTExplicitTemplateInstantiation;
-import org.eclipse.cdt.core.dom.lrparser.CPreprocessorAdapter;
-import org.eclipse.cdt.core.dom.lrparser.IDOMTokenMap;
-import org.eclipse.cdt.core.dom.lrparser.IParser;
-import org.eclipse.cdt.core.dom.lrparser.ITokenCollector;
-import org.eclipse.cdt.core.dom.lrparser.action.ITokenStream;
-import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack;
-import org.eclipse.cdt.core.dom.lrparser.action.gnu.GNUBuildASTParserAction;
-import org.eclipse.cdt.core.dom.lrparser.action.gnu.GPPBuildASTParserAction;
-import org.eclipse.cdt.core.dom.lrparser.action.gnu.GPPSecondaryParserFactory;
-import org.eclipse.cdt.core.dom.lrparser.lpgextensions.FixedBacktrackingParser;
-import org.eclipse.cdt.core.dom.parser.IBuiltinBindingsProvider;
-import org.eclipse.cdt.core.index.IIndex;
-import org.eclipse.cdt.core.parser.IScanner;
-import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPNodeFactory;
-
-import lpg.lpgjavaruntime.BadParseException;
-import lpg.lpgjavaruntime.BadParseSymFileException;
-import lpg.lpgjavaruntime.DiagnoseParser;
-import lpg.lpgjavaruntime.ErrorToken;
-import lpg.lpgjavaruntime.IToken;
-import lpg.lpgjavaruntime.LexStream;
-import lpg.lpgjavaruntime.Monitor;
-import lpg.lpgjavaruntime.NotBacktrackParseTableException;
-import lpg.lpgjavaruntime.NullExportedSymbolsException;
-import lpg.lpgjavaruntime.NullTerminalSymbolsException;
-import lpg.lpgjavaruntime.ParseErrorCodes;
-import lpg.lpgjavaruntime.ParseTable;
-import lpg.lpgjavaruntime.PrsStream;
-import lpg.lpgjavaruntime.RuleAction;
-import lpg.lpgjavaruntime.UndefinedEofSymbolException;
-import lpg.lpgjavaruntime.UnimplementedTerminalsException;
-
-public class GPPParser extends PrsStream
- implements RuleAction, ITokenStream, ITokenCollector, IParser<IASTTranslationUnit>
-
-{
- private static ParseTable prs = new GPPParserprs();
- private FixedBacktrackingParser btParser;
-
- public FixedBacktrackingParser getParser() {
- return btParser;
- }
-
- private void setResult(Object object) {
- btParser.setSym1(object);
- }
-
- public Object getRhsSym(int i) {
- return btParser.getSym(i);
- }
-
- public int getRhsTokenIndex(int i) {
- return btParser.getToken(i);
- }
-
- public IToken getRhsIToken(int i) {
- return super.getIToken(getRhsTokenIndex(i));
- }
-
- public int getRhsFirstTokenIndex(int i) {
- return btParser.getFirstToken(i);
- }
-
- public IToken getRhsFirstIToken(int i) {
- return super.getIToken(getRhsFirstTokenIndex(i));
- }
-
- public int getRhsLastTokenIndex(int i) {
- return btParser.getLastToken(i);
- }
-
- public IToken getRhsLastIToken(int i) {
- return super.getIToken(getRhsLastTokenIndex(i));
- }
-
- public int getLeftSpan() {
- return btParser.getFirstToken();
- }
-
- @Override
- public IToken getLeftIToken() {
- return super.getIToken(getLeftSpan());
- }
-
- public int getRightSpan() {
- return btParser.getLastToken();
- }
-
- @Override
- public IToken getRightIToken() {
- return super.getIToken(getRightSpan());
- }
-
- public int getRhsErrorTokenIndex(int i) {
- int index = btParser.getToken(i);
- IToken err = super.getIToken(index);
- return (err instanceof ErrorToken ? index : 0);
- }
-
- public ErrorToken getRhsErrorIToken(int i) {
- int index = btParser.getToken(i);
- IToken err = super.getIToken(index);
- return (ErrorToken) (err instanceof ErrorToken ? err : null);
- }
-
- public GPPParser(LexStream lexStream) {
- super(lexStream);
-
- try {
- super.remapTerminalSymbols(orderedTerminalSymbols(), GPPParserprs.EOFT_SYMBOL);
- } catch (NullExportedSymbolsException e) {
- } catch (NullTerminalSymbolsException e) {
- } catch (UnimplementedTerminalsException e) {
- java.util.ArrayList unimplemented_symbols = e.getSymbols();
- System.out.println("The Lexer will not scan the following token(s):");
- for (int i = 0; i < unimplemented_symbols.size(); i++) {
- Integer id = (Integer) unimplemented_symbols.get(i);
- System.out.println(" " + GPPParsersym.orderedTerminalSymbols[id.intValue()]);
- }
- System.out.println();
- } catch (UndefinedEofSymbolException e) {
- throw new Error(new UndefinedEofSymbolException("The Lexer does not implement the Eof symbol "
- + GPPParsersym.orderedTerminalSymbols[GPPParserprs.EOFT_SYMBOL]));
- }
- }
-
- @Override
- public String[] orderedTerminalSymbols() {
- return GPPParsersym.orderedTerminalSymbols;
- }
-
- public String getTokenKindName(int kind) {
- return GPPParsersym.orderedTerminalSymbols[kind];
- }
-
- public int getEOFTokenKind() {
- return GPPParserprs.EOFT_SYMBOL;
- }
-
- public PrsStream getParseStream() {
- return this;
- }
-
- //
- // Report error message for given error_token.
- //
- public final void reportErrorTokenMessage(int error_token, String msg) {
- int firsttok = super.getFirstErrorToken(error_token), lasttok = super.getLastErrorToken(error_token);
- String location = super.getFileName() + ':'
- + (firsttok > lasttok ? (super.getEndLine(lasttok) + ":" + super.getEndColumn(lasttok))
- : (super.getLine(error_token) + ":" + super.getColumn(error_token) + ":"
- + super.getEndLine(error_token) + ":" + super.getEndColumn(error_token)))
- + ": ";
- super.reportError((firsttok > lasttok ? ParseErrorCodes.INSERTION_CODE : ParseErrorCodes.SUBSTITUTION_CODE),
- location, msg);
- }
-
- public void parser() {
- parser(null, 0);
- }
-
- public void parser(Monitor monitor) {
- parser(monitor, 0);
- }
-
- public void parser(int error_repair_count) {
- parser(null, error_repair_count);
- }
-
- public void parser(Monitor monitor, int error_repair_count) {
- try {
- btParser = new FixedBacktrackingParser(monitor, this, prs, this);
- } catch (NotBacktrackParseTableException e) {
- throw new Error(new NotBacktrackParseTableException("Regenerate GPPParserprs.java with -BACKTRACK option"));
- } catch (BadParseSymFileException e) {
- throw new Error(new BadParseSymFileException("Bad Parser Symbol File -- GPPParsersym.java"));
- }
-
- try {
- btParser.parse(error_repair_count);
- } catch (BadParseException e) {
- reset(e.error_token); // point to error token
- DiagnoseParser diagnoseParser = new DiagnoseParser(this, prs);
- diagnoseParser.diagnose(e.error_token);
- }
- }
-
- private GPPBuildASTParserAction action;
- private IASTCompletionNode compNode;
-
- public GPPParser(IScanner scanner, IDOMTokenMap tokenMap, IBuiltinBindingsProvider builtinBindingsProvider,
- IIndex index, Map<String, String> properties) {
- initActions(properties);
- action.initializeTranslationUnit(scanner, builtinBindingsProvider, index);
- CPreprocessorAdapter.runCPreprocessor(scanner, this, tokenMap);
- }
-
- private void initActions(Map<String, String> properties) {
- ScopedStack<Object> astStack = new ScopedStack<>();
-
- action = new GPPBuildASTParserAction(this, astStack, CPPNodeFactory.getDefault(),
- GPPSecondaryParserFactory.getDefault());
- action.setParserProperties(properties);
-
- gnuAction = new GNUBuildASTParserAction(this, astStack, CPPNodeFactory.getDefault());
- gnuAction.setParserProperties(properties);
-
- }
-
- @Override
- public void addToken(IToken token) {
- token.setKind(mapKind(token.getKind())); // TODO does mapKind need to be called?
- super.addToken(token);
- }
-
- @Override
- public IASTTranslationUnit parse() {
- // this has to be done, or... kaboom!
- setStreamLength(getSize());
-
- final int errorRepairCount = -1; // -1 means full error handling
- parser(null, errorRepairCount); // do the actual parse
- super.resetTokenStream(); // allow tokens to be garbage collected
-
- compNode = action.getASTCompletionNode(); // the completion node may be null
- return (IASTTranslationUnit) action.getParseResult();
- }
-
- @Override
- public IASTCompletionNode getCompletionNode() {
- return compNode;
- }
-
- // uncomment this method to use with backtracking parser
- @Override
- public List<IToken> getRuleTokens() {
- return getTokens().subList(getLeftSpan(), getRightSpan() + 1);
- }
-
- @Override
- public String[] getOrderedTerminalSymbols() {
- return GPPParsersym.orderedTerminalSymbols;
- }
-
- @Override
- @SuppressWarnings("nls")
- public String getName() {
- return "GPPParser";
- }
-
- private GNUBuildASTParserAction gnuAction;
-
- @Override
- public void ruleAction(int ruleNumber) {
- switch (ruleNumber) {
-
- //
- // Rule 1: <openscope-ast> ::= $Empty
- //
- case 1: {
- action.openASTScope();
- break;
- }
-
- //
- // Rule 2: <empty> ::= $Empty
- //
- case 2: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 13: translation_unit ::= declaration_seq_opt
- //
- case 13: {
- action.consumeTranslationUnit();
- break;
- }
-
- //
- // Rule 16: literal ::= integer
- //
- case 16: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_integer_constant);
- break;
- }
-
- //
- // Rule 17: literal ::= floating
- //
- case 17: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_float_constant);
- break;
- }
-
- //
- // Rule 18: literal ::= charconst
- //
- case 18: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_char_constant);
- break;
- }
-
- //
- // Rule 19: literal ::= stringlit
- //
- case 19: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_string_literal);
- break;
- }
-
- //
- // Rule 20: literal ::= true
- //
- case 20: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_true);
- break;
- }
-
- //
- // Rule 21: literal ::= false
- //
- case 21: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_false);
- break;
- }
-
- //
- // Rule 22: literal ::= this
- //
- case 22: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_this);
- break;
- }
-
- //
- // Rule 24: primary_expression ::= ( expression )
- //
- case 24: {
- action.consumeExpressionBracketed();
- break;
- }
-
- //
- // Rule 26: id_expression ::= qualified_or_unqualified_name
- //
- case 26: {
- action.consumeExpressionName();
- break;
- }
-
- //
- // Rule 33: unqualified_id_name ::= ~ identifier_token
- //
- case 33: {
- action.consumeDestructorName();
- break;
- }
-
- //
- // Rule 34: unqualified_id_name ::= ~ template_id_name
- //
- case 34: {
- action.consumeDestructorNameTemplateId();
- break;
- }
-
- //
- // Rule 35: identifier_name ::= identifier_token
- //
- case 35: {
- action.consumeIdentifierName();
- break;
- }
-
- //
- // Rule 36: template_opt ::= template
- //
- case 36: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 37: template_opt ::= $Empty
- //
- case 37: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 38: dcolon_opt ::= ::
- //
- case 38: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 39: dcolon_opt ::= $Empty
- //
- case 39: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 40: qualified_id_name ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name
- //
- case 40: {
- action.consumeQualifiedId(true);
- break;
- }
-
- //
- // Rule 41: qualified_id_name ::= :: unqualified_id_name
- //
- case 41: {
- action.consumeGlobalQualifiedId();
- break;
- }
-
- //
- // Rule 42: nested_name_specifier ::= class_or_namespace_name :: nested_name_specifier_with_template
- //
- case 42: {
- action.consumeNestedNameSpecifier(true);
- break;
- }
-
- //
- // Rule 43: nested_name_specifier ::= class_or_namespace_name ::
- //
- case 43: {
- action.consumeNestedNameSpecifier(false);
- break;
- }
-
- //
- // Rule 44: nested_name_specifier_with_template ::= class_or_namespace_name_with_template :: nested_name_specifier_with_template
- //
- case 44: {
- action.consumeNestedNameSpecifier(true);
- break;
- }
-
- //
- // Rule 45: nested_name_specifier_with_template ::= class_or_namespace_name_with_template ::
- //
- case 45: {
- action.consumeNestedNameSpecifier(false);
- break;
- }
-
- //
- // Rule 46: class_or_namespace_name_with_template ::= template_opt class_or_namespace_name
- //
- case 46: {
- action.consumeNameWithTemplateKeyword();
- break;
- }
-
- //
- // Rule 48: nested_name_specifier_opt ::= $Empty
- //
- case 48: {
- action.consumeNestedNameSpecifierEmpty();
- break;
- }
-
- //
- // Rule 51: postfix_expression ::= postfix_expression [ expression ]
- //
- case 51: {
- action.consumeExpressionArraySubscript();
- break;
- }
-
- //
- // Rule 52: postfix_expression ::= postfix_expression ( expression_list_opt )
- //
- case 52: {
- action.consumeExpressionFunctionCall();
- break;
- }
-
- //
- // Rule 53: postfix_expression ::= simple_type_specifier ( expression_list_opt )
- //
- case 53: {
- action.consumeExpressionSimpleTypeConstructor();
- break;
- }
-
- //
- // Rule 54: postfix_expression ::= typename dcolon_opt nested_name_specifier <empty> identifier_name ( expression_list_opt )
- //
- case 54: {
- action.consumeExpressionTypeName();
- break;
- }
-
- //
- // Rule 55: postfix_expression ::= typename dcolon_opt nested_name_specifier template_opt template_id_name ( expression_list_opt )
- //
- case 55: {
- action.consumeExpressionTypeName();
- break;
- }
-
- //
- // Rule 56: postfix_expression ::= postfix_expression . qualified_or_unqualified_name
- //
- case 56: {
- action.consumeExpressionFieldReference(false, false);
- break;
- }
-
- //
- // Rule 57: postfix_expression ::= postfix_expression -> qualified_or_unqualified_name
- //
- case 57: {
- action.consumeExpressionFieldReference(true, false);
- break;
- }
-
- //
- // Rule 58: postfix_expression ::= postfix_expression . template qualified_or_unqualified_name
- //
- case 58: {
- action.consumeExpressionFieldReference(false, true);
- break;
- }
-
- //
- // Rule 59: postfix_expression ::= postfix_expression -> template qualified_or_unqualified_name
- //
- case 59: {
- action.consumeExpressionFieldReference(true, true);
- break;
- }
-
- //
- // Rule 60: postfix_expression ::= postfix_expression . pseudo_destructor_name
- //
- case 60: {
- action.consumeExpressionFieldReference(false, false);
- break;
- }
-
- //
- // Rule 61: postfix_expression ::= postfix_expression -> pseudo_destructor_name
- //
- case 61: {
- action.consumeExpressionFieldReference(true, false);
- break;
- }
-
- //
- // Rule 62: postfix_expression ::= postfix_expression ++
- //
- case 62: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixIncr);
- break;
- }
-
- //
- // Rule 63: postfix_expression ::= postfix_expression --
- //
- case 63: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixDecr);
- break;
- }
-
- //
- // Rule 64: postfix_expression ::= dynamic_cast < type_id > ( expression )
- //
- case 64: {
- action.consumeExpressionCast(ICPPASTCastExpression.op_dynamic_cast);
- break;
- }
-
- //
- // Rule 65: postfix_expression ::= static_cast < type_id > ( expression )
- //
- case 65: {
- action.consumeExpressionCast(ICPPASTCastExpression.op_static_cast);
- break;
- }
-
- //
- // Rule 66: postfix_expression ::= reinterpret_cast < type_id > ( expression )
- //
- case 66: {
- action.consumeExpressionCast(ICPPASTCastExpression.op_reinterpret_cast);
- break;
- }
-
- //
- // Rule 67: postfix_expression ::= const_cast < type_id > ( expression )
- //
- case 67: {
- action.consumeExpressionCast(ICPPASTCastExpression.op_const_cast);
- break;
- }
-
- //
- // Rule 68: postfix_expression ::= typeid ( expression )
- //
- case 68: {
- action.consumeExpressionUnaryOperator(ICPPASTUnaryExpression.op_typeid);
- break;
- }
-
- //
- // Rule 69: postfix_expression ::= typeid ( type_id )
- //
- case 69: {
- action.consumeExpressionTypeId(ICPPASTTypeIdExpression.op_typeid);
- break;
- }
-
- //
- // Rule 70: pseudo_destructor_name ::= dcolon_opt nested_name_specifier_opt type_name :: destructor_type_name
- //
- case 70: {
- action.consumePsudoDestructorName(true);
- break;
- }
-
- //
- // Rule 71: pseudo_destructor_name ::= dcolon_opt nested_name_specifier template template_id_name :: destructor_type_name
- //
- case 71: {
- action.consumePsudoDestructorName(true);
- break;
- }
-
- //
- // Rule 72: pseudo_destructor_name ::= dcolon_opt nested_name_specifier_opt destructor_type_name
- //
- case 72: {
- action.consumePsudoDestructorName(false);
- break;
- }
-
- //
- // Rule 73: destructor_type_name ::= ~ identifier_token
- //
- case 73: {
- action.consumeDestructorName();
- break;
- }
-
- //
- // Rule 74: destructor_type_name ::= ~ template_id_name
- //
- case 74: {
- action.consumeDestructorNameTemplateId();
- break;
- }
-
- //
- // Rule 78: unary_expression ::= ++ cast_expression
- //
- case 78: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixIncr);
- break;
- }
-
- //
- // Rule 79: unary_expression ::= -- cast_expression
- //
- case 79: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixDecr);
- break;
- }
-
- //
- // Rule 80: unary_expression ::= & cast_expression
- //
- case 80: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_amper);
- break;
- }
-
- //
- // Rule 81: unary_expression ::= * cast_expression
- //
- case 81: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_star);
- break;
- }
-
- //
- // Rule 82: unary_expression ::= + cast_expression
- //
- case 82: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_plus);
- break;
- }
-
- //
- // Rule 83: unary_expression ::= - cast_expression
- //
- case 83: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_minus);
- break;
- }
-
- //
- // Rule 84: unary_expression ::= ~ cast_expression
- //
- case 84: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_tilde);
- break;
- }
-
- //
- // Rule 85: unary_expression ::= ! cast_expression
- //
- case 85: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_not);
- break;
- }
-
- //
- // Rule 86: unary_expression ::= sizeof unary_expression
- //
- case 86: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_sizeof);
- break;
- }
-
- //
- // Rule 87: unary_expression ::= sizeof ( type_id )
- //
- case 87: {
- action.consumeExpressionTypeId(ICPPASTTypeIdExpression.op_sizeof);
- break;
- }
-
- //
- // Rule 88: new_expression ::= dcolon_opt new new_placement_opt new_type_id <openscope-ast> new_array_expressions_opt new_initializer_opt
- //
- case 88: {
- action.consumeExpressionNew(true);
- break;
- }
-
- //
- // Rule 89: new_expression ::= dcolon_opt new new_placement_opt ( type_id ) <openscope-ast> new_array_expressions_opt new_initializer_opt
- //
- case 89: {
- action.consumeExpressionNew(false);
- break;
- }
-
- //
- // Rule 91: new_placement_opt ::= $Empty
- //
- case 91: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 92: new_type_id ::= type_specifier_seq
- //
- case 92: {
- action.consumeTypeId(false);
- break;
- }
-
- //
- // Rule 93: new_type_id ::= type_specifier_seq new_declarator
- //
- case 93: {
- action.consumeTypeId(true);
- break;
- }
-
- //
- // Rule 94: new_declarator ::= <openscope-ast> new_pointer_operators
- //
- case 94: {
- action.consumeNewDeclarator();
- break;
- }
-
- //
- // Rule 101: new_initializer ::= ( expression_list_opt )
- //
- case 101: {
- action.consumeNewInitializer();
- break;
- }
-
- //
- // Rule 103: new_initializer_opt ::= $Empty
- //
- case 103: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 104: delete_expression ::= dcolon_opt delete cast_expression
- //
- case 104: {
- action.consumeExpressionDelete(false);
- break;
- }
-
- //
- // Rule 105: delete_expression ::= dcolon_opt delete [ ] cast_expression
- //
- case 105: {
- action.consumeExpressionDelete(true);
- break;
- }
-
- //
- // Rule 107: cast_expression ::= ( type_id ) cast_expression
- //
- case 107: {
- action.consumeExpressionCast(ICPPASTCastExpression.op_cast);
- break;
- }
-
- //
- // Rule 109: pm_expression ::= pm_expression .* cast_expression
- //
- case 109: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_pmdot);
- break;
- }
-
- //
- // Rule 110: pm_expression ::= pm_expression ->* cast_expression
- //
- case 110: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_pmarrow);
- break;
- }
-
- //
- // Rule 112: multiplicative_expression ::= multiplicative_expression * pm_expression
- //
- case 112: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_multiply);
- break;
- }
-
- //
- // Rule 113: multiplicative_expression ::= multiplicative_expression / pm_expression
- //
- case 113: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_divide);
- break;
- }
-
- //
- // Rule 114: multiplicative_expression ::= multiplicative_expression % pm_expression
- //
- case 114: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_modulo);
- break;
- }
-
- //
- // Rule 116: additive_expression ::= additive_expression + multiplicative_expression
- //
- case 116: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_plus);
- break;
- }
-
- //
- // Rule 117: additive_expression ::= additive_expression - multiplicative_expression
- //
- case 117: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_minus);
- break;
- }
-
- //
- // Rule 119: shift_expression ::= shift_expression << additive_expression
- //
- case 119: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftLeft);
- break;
- }
-
- //
- // Rule 120: shift_expression ::= shift_expression >> additive_expression
- //
- case 120: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftRight);
- break;
- }
-
- //
- // Rule 122: relational_expression ::= relational_expression < shift_expression
- //
- case 122: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessThan);
- break;
- }
-
- //
- // Rule 123: relational_expression ::= relational_expression > shift_expression
- //
- case 123: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterThan);
- break;
- }
-
- //
- // Rule 124: relational_expression ::= relational_expression <= shift_expression
- //
- case 124: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessEqual);
- break;
- }
-
- //
- // Rule 125: relational_expression ::= relational_expression >= shift_expression
- //
- case 125: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterEqual);
- break;
- }
-
- //
- // Rule 127: equality_expression ::= equality_expression == relational_expression
- //
- case 127: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_equals);
- break;
- }
-
- //
- // Rule 128: equality_expression ::= equality_expression != relational_expression
- //
- case 128: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_notequals);
- break;
- }
-
- //
- // Rule 130: and_expression ::= and_expression & equality_expression
- //
- case 130: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAnd);
- break;
- }
-
- //
- // Rule 132: exclusive_or_expression ::= exclusive_or_expression ^ and_expression
- //
- case 132: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXor);
- break;
- }
-
- //
- // Rule 134: inclusive_or_expression ::= inclusive_or_expression | exclusive_or_expression
- //
- case 134: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOr);
- break;
- }
-
- //
- // Rule 136: logical_and_expression ::= logical_and_expression && inclusive_or_expression
- //
- case 136: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalAnd);
- break;
- }
-
- //
- // Rule 138: logical_or_expression ::= logical_or_expression || logical_and_expression
- //
- case 138: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalOr);
- break;
- }
-
- //
- // Rule 140: conditional_expression ::= logical_or_expression ? expression : assignment_expression
- //
- case 140: {
- action.consumeExpressionConditional();
- break;
- }
-
- //
- // Rule 142: relational_expression_inTemplate ::= relational_expression_inTemplate < shift_expression
- //
- case 142: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessThan);
- break;
- }
-
- //
- // Rule 143: relational_expression_inTemplate ::= ( relational_expression_inTemplate > shift_expression )
- //
- case 143: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterThan);
- break;
- }
-
- //
- // Rule 144: relational_expression_inTemplate ::= relational_expression_inTemplate <= shift_expression
- //
- case 144: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessEqual);
- break;
- }
-
- //
- // Rule 145: relational_expression_inTemplate ::= relational_expression_inTemplate >= shift_expression
- //
- case 145: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterEqual);
- break;
- }
-
- //
- // Rule 147: equality_expression_inTemplate ::= equality_expression_inTemplate == relational_expression_inTemplate
- //
- case 147: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_equals);
- break;
- }
-
- //
- // Rule 148: equality_expression_inTemplate ::= equality_expression_inTemplate != relational_expression_inTemplate
- //
- case 148: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_notequals);
- break;
- }
-
- //
- // Rule 150: and_expression_inTemplate ::= and_expression_inTemplate & equality_expression_inTemplate
- //
- case 150: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAnd);
- break;
- }
-
- //
- // Rule 152: exclusive_or_expression_inTemplate ::= exclusive_or_expression_inTemplate ^ and_expression_inTemplate
- //
- case 152: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXor);
- break;
- }
-
- //
- // Rule 154: inclusive_or_expression_inTemplate ::= inclusive_or_expression_inTemplate | exclusive_or_expression_inTemplate
- //
- case 154: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOr);
- break;
- }
-
- //
- // Rule 156: logical_and_expression_inTemplate ::= logical_and_expression_inTemplate && inclusive_or_expression_inTemplate
- //
- case 156: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalAnd);
- break;
- }
-
- //
- // Rule 158: logical_or_expression_inTemplate ::= logical_or_expression_inTemplate || logical_and_expression_inTemplate
- //
- case 158: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalOr);
- break;
- }
-
- //
- // Rule 160: conditional_expression_inTemplate ::= logical_or_expression_inTemplate ? expression : assignment_expression_inTemplate
- //
- case 160: {
- action.consumeExpressionConditional();
- break;
- }
-
- //
- // Rule 163: assignment_expression_inTemplate ::= logical_or_expression_inTemplate = assignment_expression_inTemplate
- //
- case 163: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_assign);
- break;
- }
-
- //
- // Rule 164: assignment_expression_inTemplate ::= logical_or_expression_inTemplate *= assignment_expression_inTemplate
- //
- case 164: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_multiplyAssign);
- break;
- }
-
- //
- // Rule 165: assignment_expression_inTemplate ::= logical_or_expression_inTemplate /= assignment_expression_inTemplate
- //
- case 165: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_divideAssign);
- break;
- }
-
- //
- // Rule 166: assignment_expression_inTemplate ::= logical_or_expression_inTemplate %= assignment_expression_inTemplate
- //
- case 166: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_moduloAssign);
- break;
- }
-
- //
- // Rule 167: assignment_expression_inTemplate ::= logical_or_expression_inTemplate += assignment_expression_inTemplate
- //
- case 167: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_plusAssign);
- break;
- }
-
- //
- // Rule 168: assignment_expression_inTemplate ::= logical_or_expression_inTemplate -= assignment_expression_inTemplate
- //
- case 168: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_minusAssign);
- break;
- }
-
- //
- // Rule 169: assignment_expression_inTemplate ::= logical_or_expression_inTemplate >>= assignment_expression_inTemplate
- //
- case 169: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftRightAssign);
- break;
- }
-
- //
- // Rule 170: assignment_expression_inTemplate ::= logical_or_expression_inTemplate <<= assignment_expression_inTemplate
- //
- case 170: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftLeftAssign);
- break;
- }
-
- //
- // Rule 171: assignment_expression_inTemplate ::= logical_or_expression_inTemplate &= assignment_expression_inTemplate
- //
- case 171: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAndAssign);
- break;
- }
-
- //
- // Rule 172: assignment_expression_inTemplate ::= logical_or_expression_inTemplate ^= assignment_expression_inTemplate
- //
- case 172: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXorAssign);
- break;
- }
-
- //
- // Rule 173: assignment_expression_inTemplate ::= logical_or_expression_inTemplate |= assignment_expression_inTemplate
- //
- case 173: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOrAssign);
- break;
- }
-
- //
- // Rule 174: throw_expression ::= throw
- //
- case 174: {
- action.consumeExpressionThrow(false);
- break;
- }
-
- //
- // Rule 175: throw_expression ::= throw assignment_expression
- //
- case 175: {
- action.consumeExpressionThrow(true);
- break;
- }
-
- //
- // Rule 178: assignment_expression ::= logical_or_expression = assignment_expression
- //
- case 178: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_assign);
- break;
- }
-
- //
- // Rule 179: assignment_expression ::= logical_or_expression *= assignment_expression
- //
- case 179: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_multiplyAssign);
- break;
- }
-
- //
- // Rule 180: assignment_expression ::= logical_or_expression /= assignment_expression
- //
- case 180: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_divideAssign);
- break;
- }
-
- //
- // Rule 181: assignment_expression ::= logical_or_expression %= assignment_expression
- //
- case 181: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_moduloAssign);
- break;
- }
-
- //
- // Rule 182: assignment_expression ::= logical_or_expression += assignment_expression
- //
- case 182: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_plusAssign);
- break;
- }
-
- //
- // Rule 183: assignment_expression ::= logical_or_expression -= assignment_expression
- //
- case 183: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_minusAssign);
- break;
- }
-
- //
- // Rule 184: assignment_expression ::= logical_or_expression >>= assignment_expression
- //
- case 184: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftRightAssign);
- break;
- }
-
- //
- // Rule 185: assignment_expression ::= logical_or_expression <<= assignment_expression
- //
- case 185: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftLeftAssign);
- break;
- }
-
- //
- // Rule 186: assignment_expression ::= logical_or_expression &= assignment_expression
- //
- case 186: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAndAssign);
- break;
- }
-
- //
- // Rule 187: assignment_expression ::= logical_or_expression ^= assignment_expression
- //
- case 187: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXorAssign);
- break;
- }
-
- //
- // Rule 188: assignment_expression ::= logical_or_expression |= assignment_expression
- //
- case 188: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOrAssign);
- break;
- }
-
- //
- // Rule 190: expression_list ::= <openscope-ast> expression_list_actual
- //
- case 190: {
- action.consumeExpressionList();
- break;
- }
-
- //
- // Rule 194: expression_list_opt ::= $Empty
- //
- case 194: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 196: expression_opt ::= $Empty
- //
- case 196: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 199: constant_expression_opt ::= $Empty
- //
- case 199: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 208: statement ::= ERROR_TOKEN
- //
- case 208: {
- action.consumeStatementProblem();
- break;
- }
-
- //
- // Rule 209: labeled_statement ::= identifier : statement
- //
- case 209: {
- action.consumeStatementLabeled();
- break;
- }
-
- //
- // Rule 210: labeled_statement ::= case constant_expression : statement
- //
- case 210: {
- action.consumeStatementCase();
- break;
- }
-
- //
- // Rule 211: labeled_statement ::= default : statement
- //
- case 211: {
- action.consumeStatementDefault();
- break;
- }
-
- //
- // Rule 212: expression_statement ::= expression ;
- //
- case 212: {
- action.consumeStatementExpression();
- break;
- }
-
- //
- // Rule 213: expression_statement ::= ;
- //
- case 213: {
- action.consumeStatementNull();
- break;
- }
-
- //
- // Rule 214: compound_statement ::= { <openscope-ast> statement_seq }
- //
- case 214: {
- action.consumeStatementCompoundStatement(true);
- break;
- }
-
- //
- // Rule 215: compound_statement ::= { }
- //
- case 215: {
- action.consumeStatementCompoundStatement(false);
- break;
- }
-
- //
- // Rule 218: selection_statement ::= if ( condition ) statement
- //
- case 218: {
- action.consumeStatementIf(false);
- break;
- }
-
- //
- // Rule 219: selection_statement ::= if ( condition ) statement else statement
- //
- case 219: {
- action.consumeStatementIf(true);
- break;
- }
-
- //
- // Rule 220: selection_statement ::= switch ( condition ) statement
- //
- case 220: {
- action.consumeStatementSwitch();
- break;
- }
-
- //
- // Rule 222: condition ::= type_specifier_seq declarator = assignment_expression
- //
- case 222: {
- action.consumeConditionDeclaration();
- break;
- }
-
- //
- // Rule 224: condition_opt ::= $Empty
- //
- case 224: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 225: iteration_statement ::= while ( condition ) statement
- //
- case 225: {
- action.consumeStatementWhileLoop();
- break;
- }
-
- //
- // Rule 226: iteration_statement ::= do statement while ( expression ) ;
- //
- case 226: {
- action.consumeStatementDoLoop(true);
- break;
- }
-
- //
- // Rule 227: iteration_statement ::= do statement
- //
- case 227: {
- action.consumeStatementDoLoop(false);
- break;
- }
-
- //
- // Rule 228: iteration_statement ::= for ( for_init_statement condition_opt ; expression_opt ) statement
- //
- case 228: {
- action.consumeStatementForLoop();
- break;
- }
-
- //
- // Rule 230: for_init_statement ::= simple_declaration_with_declspec
- //
- case 230: {
- action.consumeStatementDeclaration();
- break;
- }
-
- //
- // Rule 231: jump_statement ::= break ;
- //
- case 231: {
- action.consumeStatementBreak();
- break;
- }
-
- //
- // Rule 232: jump_statement ::= continue ;
- //
- case 232: {
- action.consumeStatementContinue();
- break;
- }
-
- //
- // Rule 233: jump_statement ::= return expression ;
- //
- case 233: {
- action.consumeStatementReturn(true);
- break;
- }
-
- //
- // Rule 234: jump_statement ::= return ;
- //
- case 234: {
- action.consumeStatementReturn(false);
- break;
- }
-
- //
- // Rule 235: jump_statement ::= goto identifier_token ;
- //
- case 235: {
- action.consumeStatementGoto();
- break;
- }
-
- //
- // Rule 236: declaration_statement ::= block_declaration
- //
- case 236: {
- action.consumeStatementDeclarationWithDisambiguation();
- break;
- }
-
- //
- // Rule 237: declaration_statement ::= function_definition
- //
- case 237: {
- action.consumeStatementDeclaration();
- break;
- }
-
- //
- // Rule 245: declaration ::= ERROR_TOKEN
- //
- case 245: {
- action.consumeDeclarationProblem();
- break;
- }
-
- //
- // Rule 255: simple_declaration ::= declaration_specifiers_opt <openscope-ast> init_declarator_list_opt ;
- //
- case 255: {
- action.consumeDeclarationSimple(true);
- break;
- }
-
- //
- // Rule 256: simple_declaration_with_declspec ::= declaration_specifiers <openscope-ast> init_declarator_list_opt ;
- //
- case 256: {
- action.consumeDeclarationSimple(true);
- break;
- }
-
- //
- // Rule 257: declaration_specifiers ::= <openscope-ast> simple_declaration_specifiers
- //
- case 257: {
- action.consumeDeclarationSpecifiersSimple();
- break;
- }
-
- //
- // Rule 258: declaration_specifiers ::= <openscope-ast> class_declaration_specifiers
- //
- case 258: {
- action.consumeDeclarationSpecifiersComposite();
- break;
- }
-
- //
- // Rule 259: declaration_specifiers ::= <openscope-ast> elaborated_declaration_specifiers
- //
- case 259: {
- action.consumeDeclarationSpecifiersComposite();
- break;
- }
-
- //
- // Rule 260: declaration_specifiers ::= <openscope-ast> enum_declaration_specifiers
- //
- case 260: {
- action.consumeDeclarationSpecifiersComposite();
- break;
- }
-
- //
- // Rule 261: declaration_specifiers ::= <openscope-ast> type_name_declaration_specifiers
- //
- case 261: {
- action.consumeDeclarationSpecifiersTypeName();
- break;
- }
-
- //
- // Rule 263: declaration_specifiers_opt ::= $Empty
- //
- case 263: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 267: no_type_declaration_specifier ::= friend
- //
- case 267: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 268: no_type_declaration_specifier ::= typedef
- //
- case 268: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 288: storage_class_specifier ::= auto
- //
- case 288: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 289: storage_class_specifier ::= register
- //
- case 289: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 290: storage_class_specifier ::= static
- //
- case 290: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 291: storage_class_specifier ::= extern
- //
- case 291: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 292: storage_class_specifier ::= mutable
- //
- case 292: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 293: function_specifier ::= inline
- //
- case 293: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 294: function_specifier ::= virtual
- //
- case 294: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 295: function_specifier ::= explicit
- //
- case 295: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 296: simple_type_specifier ::= simple_type_specifier_token
- //
- case 296: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 310: type_name_specifier ::= dcolon_opt nested_name_specifier_opt type_name
- //
- case 310: {
- action.consumeQualifiedId(false);
- break;
- }
-
- //
- // Rule 311: type_name_specifier ::= dcolon_opt nested_name_specifier template template_id_name
- //
- case 311: {
- action.consumeQualifiedId(false);
- break;
- }
-
- //
- // Rule 312: type_name_specifier ::= typename dcolon_opt nested_name_specifier identifier_name
- //
- case 312: {
- action.consumeQualifiedId(false);
- break;
- }
-
- //
- // Rule 313: type_name_specifier ::= typename dcolon_opt nested_name_specifier template_opt template_id_name
- //
- case 313: {
- action.consumeQualifiedId(true);
- break;
- }
-
- //
- // Rule 315: elaborated_type_specifier ::= class_keyword elaborated_specifier_hook dcolon_opt nested_name_specifier_opt identifier_name
- //
- case 315: {
- action.consumeTypeSpecifierElaborated(false);
- break;
- }
-
- //
- // Rule 316: elaborated_type_specifier ::= class_keyword elaborated_specifier_hook dcolon_opt nested_name_specifier_opt template_opt template_id_name
- //
- case 316: {
- action.consumeTypeSpecifierElaborated(true);
- break;
- }
-
- //
- // Rule 317: elaborated_type_specifier ::= enum elaborated_specifier_hook dcolon_opt nested_name_specifier_opt identifier_name
- //
- case 317: {
- action.consumeTypeSpecifierElaborated(false);
- break;
- }
-
- //
- // Rule 321: enum_specifier ::= enum enum_specifier_hook { <openscope-ast> enumerator_list_opt comma_opt }
- //
- case 321: {
- action.consumeTypeSpecifierEnumeration(false);
- break;
- }
-
- //
- // Rule 322: enum_specifier ::= enum enum_specifier_hook identifier_token { <openscope-ast> enumerator_list_opt comma_opt }
- //
- case 322: {
- action.consumeTypeSpecifierEnumeration(true);
- break;
- }
-
- //
- // Rule 328: enumerator_definition ::= identifier_token
- //
- case 328: {
- action.consumeEnumerator(false);
- break;
- }
-
- //
- // Rule 329: enumerator_definition ::= identifier_token = constant_expression
- //
- case 329: {
- action.consumeEnumerator(true);
- break;
- }
-
- //
- // Rule 331: namespace_definition ::= namespace namespace_name namespace_definition_hook { <openscope-ast> declaration_seq_opt }
- //
- case 331: {
- action.consumeNamespaceDefinition(true);
- break;
- }
-
- //
- // Rule 332: namespace_definition ::= namespace namespace_definition_hook { <openscope-ast> declaration_seq_opt }
- //
- case 332: {
- action.consumeNamespaceDefinition(false);
- break;
- }
-
- //
- // Rule 334: namespace_alias_definition ::= namespace identifier_token = dcolon_opt nested_name_specifier_opt namespace_name ;
- //
- case 334: {
- action.consumeNamespaceAliasDefinition();
- break;
- }
-
- //
- // Rule 335: using_declaration ::= using typename_opt dcolon_opt nested_name_specifier_opt unqualified_id_name ;
- //
- case 335: {
- action.consumeUsingDeclaration();
- break;
- }
-
- //
- // Rule 336: typename_opt ::= typename
- //
- case 336: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 337: typename_opt ::= $Empty
- //
- case 337: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 338: using_directive ::= using namespace dcolon_opt nested_name_specifier_opt namespace_name ;
- //
- case 338: {
- action.consumeUsingDirective();
- break;
- }
-
- //
- // Rule 339: linkage_specification ::= extern stringlit { <openscope-ast> declaration_seq_opt }
- //
- case 339: {
- action.consumeLinkageSpecification();
- break;
- }
-
- //
- // Rule 340: linkage_specification ::= extern stringlit <openscope-ast> declaration
- //
- case 340: {
- action.consumeLinkageSpecification();
- break;
- }
-
- //
- // Rule 345: init_declarator_complete ::= init_declarator
- //
- case 345: {
- action.consumeInitDeclaratorComplete();
- break;
- }
-
- //
- // Rule 347: init_declarator ::= complete_declarator initializer
- //
- case 347: {
- action.consumeDeclaratorWithInitializer(true);
- break;
- }
-
- //
- // Rule 350: declarator ::= <openscope-ast> ptr_operator_seq direct_declarator
- //
- case 350: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 352: function_declarator ::= <openscope-ast> ptr_operator_seq direct_declarator
- //
- case 352: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 356: basic_direct_declarator ::= declarator_id_name
- //
- case 356: {
- action.consumeDirectDeclaratorIdentifier();
- break;
- }
-
- //
- // Rule 357: basic_direct_declarator ::= ( declarator )
- //
- case 357: {
- action.consumeDirectDeclaratorBracketed();
- break;
- }
-
- //
- // Rule 358: function_direct_declarator ::= basic_direct_declarator ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
- //
- case 358: {
- action.consumeDirectDeclaratorFunctionDeclarator(true);
- break;
- }
-
- //
- // Rule 359: array_direct_declarator ::= array_direct_declarator array_modifier
- //
- case 359: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 360: array_direct_declarator ::= basic_direct_declarator array_modifier
- //
- case 360: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 361: array_modifier ::= [ constant_expression ]
- //
- case 361: {
- action.consumeDirectDeclaratorArrayModifier(true);
- break;
- }
-
- //
- // Rule 362: array_modifier ::= [ ]
- //
- case 362: {
- action.consumeDirectDeclaratorArrayModifier(false);
- break;
- }
-
- //
- // Rule 363: ptr_operator ::= pointer_hook * pointer_hook <openscope-ast> cv_qualifier_seq_opt
- //
- case 363: {
- action.consumePointer();
- break;
- }
-
- //
- // Rule 364: ptr_operator ::= pointer_hook & pointer_hook
- //
- case 364: {
- action.consumeReferenceOperator();
- break;
- }
-
- //
- // Rule 365: ptr_operator ::= dcolon_opt nested_name_specifier pointer_hook * pointer_hook <openscope-ast> cv_qualifier_seq_opt
- //
- case 365: {
- action.consumePointerToMember();
- break;
- }
-
- //
- // Rule 372: cv_qualifier ::= const
- //
- case 372: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 373: cv_qualifier ::= volatile
- //
- case 373: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 375: declarator_id_name ::= dcolon_opt nested_name_specifier_opt type_name
- //
- case 375: {
- action.consumeQualifiedId(false);
- break;
- }
-
- //
- // Rule 376: type_id ::= type_specifier_seq
- //
- case 376: {
- action.consumeTypeId(false);
- break;
- }
-
- //
- // Rule 377: type_id ::= type_specifier_seq abstract_declarator
- //
- case 377: {
- action.consumeTypeId(true);
- break;
- }
-
- //
- // Rule 380: abstract_declarator ::= <openscope-ast> ptr_operator_seq
- //
- case 380: {
- action.consumeDeclaratorWithPointer(false);
- break;
- }
-
- //
- // Rule 381: abstract_declarator ::= <openscope-ast> ptr_operator_seq direct_abstract_declarator
- //
- case 381: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 385: basic_direct_abstract_declarator ::= ( abstract_declarator )
- //
- case 385: {
- action.consumeDirectDeclaratorBracketed();
- break;
- }
-
- //
- // Rule 386: basic_direct_abstract_declarator ::= ( )
- //
- case 386: {
- action.consumeAbstractDeclaratorEmpty();
- break;
- }
-
- //
- // Rule 387: array_direct_abstract_declarator ::= array_modifier
- //
- case 387: {
- action.consumeDirectDeclaratorArrayDeclarator(false);
- break;
- }
-
- //
- // Rule 388: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier
- //
- case 388: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 389: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier
- //
- case 389: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 390: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
- //
- case 390: {
- action.consumeDirectDeclaratorFunctionDeclarator(true);
- break;
- }
-
- //
- // Rule 391: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
- //
- case 391: {
- action.consumeDirectDeclaratorFunctionDeclarator(false);
- break;
- }
-
- //
- // Rule 392: parameter_declaration_clause ::= parameter_declaration_list_opt ...
- //
- case 392: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 393: parameter_declaration_clause ::= parameter_declaration_list_opt
- //
- case 393: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 394: parameter_declaration_clause ::= parameter_declaration_list , ...
- //
- case 394: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 400: abstract_declarator_opt ::= $Empty
- //
- case 400: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 401: parameter_declaration ::= declaration_specifiers parameter_init_declarator
- //
- case 401: {
- action.consumeParameterDeclaration();
- break;
- }
-
- //
- // Rule 402: parameter_declaration ::= declaration_specifiers
- //
- case 402: {
- action.consumeParameterDeclarationWithoutDeclarator();
- break;
- }
-
- //
- // Rule 404: parameter_init_declarator ::= declarator = parameter_initializer
- //
- case 404: {
- action.consumeDeclaratorWithInitializer(true);
- break;
- }
-
- //
- // Rule 406: parameter_init_declarator ::= abstract_declarator = parameter_initializer
- //
- case 406: {
- action.consumeDeclaratorWithInitializer(true);
- break;
- }
-
- //
- // Rule 407: parameter_init_declarator ::= = parameter_initializer
- //
- case 407: {
- action.consumeDeclaratorWithInitializer(false);
- break;
- }
-
- //
- // Rule 408: parameter_initializer ::= assignment_expression
- //
- case 408: {
- action.consumeInitializer();
- break;
- }
-
- //
- // Rule 409: function_definition ::= declaration_specifiers_opt function_declarator <openscope-ast> ctor_initializer_list_opt function_body
- //
- case 409: {
- action.consumeFunctionDefinition(false);
- break;
- }
-
- //
- // Rule 410: function_definition ::= declaration_specifiers_opt function_declarator try <openscope-ast> ctor_initializer_list_opt function_body <openscope-ast> handler_seq
- //
- case 410: {
- action.consumeFunctionDefinition(true);
- break;
- }
-
- //
- // Rule 413: initializer ::= ( expression_list )
- //
- case 413: {
- action.consumeInitializerConstructor();
- break;
- }
-
- //
- // Rule 414: initializer_clause ::= assignment_expression
- //
- case 414: {
- action.consumeInitializer();
- break;
- }
-
- //
- // Rule 415: initializer_clause ::= initializer_list
- //
- case 415: {
- action.consumeInitializer();
- break;
- }
-
- //
- // Rule 416: initializer_list ::= start_initializer_list { <openscope-ast> initializer_seq , } end_initializer_list
- //
- case 416: {
- action.consumeInitializerList();
- break;
- }
-
- //
- // Rule 417: initializer_list ::= start_initializer_list { <openscope-ast> initializer_seq } end_initializer_list
- //
- case 417: {
- action.consumeInitializerList();
- break;
- }
-
- //
- // Rule 418: initializer_list ::= { <openscope-ast> }
- //
- case 418: {
- action.consumeInitializerList();
- break;
- }
-
- //
- // Rule 419: start_initializer_list ::= $Empty
- //
- case 419: {
- action.initializerListStart();
- break;
- }
-
- //
- // Rule 420: end_initializer_list ::= $Empty
- //
- case 420: {
- action.initializerListEnd();
- break;
- }
-
- //
- // Rule 425: class_specifier ::= class_head { <openscope-ast> member_declaration_list_opt }
- //
- case 425: {
- action.consumeClassSpecifier();
- break;
- }
-
- //
- // Rule 426: class_head ::= class_keyword composite_specifier_hook identifier_name_opt class_name_suffix_hook <openscope-ast> base_clause_opt
- //
- case 426: {
- action.consumeClassHead(false);
- break;
- }
-
- //
- // Rule 427: class_head ::= class_keyword composite_specifier_hook template_id_name class_name_suffix_hook <openscope-ast> base_clause_opt
- //
- case 427: {
- action.consumeClassHead(false);
- break;
- }
-
- //
- // Rule 428: class_head ::= class_keyword composite_specifier_hook nested_name_specifier identifier_name class_name_suffix_hook <openscope-ast> base_clause_opt
- //
- case 428: {
- action.consumeClassHead(true);
- break;
- }
-
- //
- // Rule 429: class_head ::= class_keyword composite_specifier_hook nested_name_specifier template_id_name class_name_suffix_hook <openscope-ast> base_clause_opt
- //
- case 429: {
- action.consumeClassHead(true);
- break;
- }
-
- //
- // Rule 433: identifier_name_opt ::= $Empty
- //
- case 433: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 437: visibility_label ::= access_specifier_keyword :
- //
- case 437: {
- action.consumeVisibilityLabel();
- break;
- }
-
- //
- // Rule 438: member_declaration ::= declaration_specifiers_opt <openscope-ast> member_declarator_list ;
- //
- case 438: {
- action.consumeDeclarationSimple(true);
- break;
- }
-
- //
- // Rule 439: member_declaration ::= declaration_specifiers_opt ;
- //
- case 439: {
- action.consumeDeclarationSimple(false);
- break;
- }
-
- //
- // Rule 442: member_declaration ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name ;
- //
- case 442: {
- action.consumeMemberDeclarationQualifiedId();
- break;
- }
-
- //
- // Rule 448: member_declaration ::= ERROR_TOKEN
- //
- case 448: {
- action.consumeDeclarationProblem();
- break;
- }
-
- //
- // Rule 457: member_declarator ::= declarator constant_initializer
- //
- case 457: {
- action.consumeMemberDeclaratorWithInitializer();
- break;
- }
-
- //
- // Rule 458: member_declarator ::= bit_field_declarator : constant_expression
- //
- case 458: {
- action.consumeBitField(true);
- break;
- }
-
- //
- // Rule 459: member_declarator ::= : constant_expression
- //
- case 459: {
- action.consumeBitField(false);
- break;
- }
-
- //
- // Rule 460: bit_field_declarator ::= identifier_name
- //
- case 460: {
- action.consumeDirectDeclaratorIdentifier();
- break;
- }
-
- //
- // Rule 461: constant_initializer ::= = constant_expression
- //
- case 461: {
- action.consumeInitializer();
- break;
- }
-
- //
- // Rule 467: base_specifier ::= dcolon_opt nested_name_specifier_opt class_name
- //
- case 467: {
- action.consumeBaseSpecifier(false, false);
- break;
- }
-
- //
- // Rule 468: base_specifier ::= virtual access_specifier_keyword_opt dcolon_opt nested_name_specifier_opt class_name
- //
- case 468: {
- action.consumeBaseSpecifier(true, true);
- break;
- }
-
- //
- // Rule 469: base_specifier ::= access_specifier_keyword virtual dcolon_opt nested_name_specifier_opt class_name
- //
- case 469: {
- action.consumeBaseSpecifier(true, true);
- break;
- }
-
- //
- // Rule 470: base_specifier ::= access_specifier_keyword dcolon_opt nested_name_specifier_opt class_name
- //
- case 470: {
- action.consumeBaseSpecifier(true, false);
- break;
- }
-
- //
- // Rule 471: access_specifier_keyword ::= private
- //
- case 471: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 472: access_specifier_keyword ::= protected
- //
- case 472: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 473: access_specifier_keyword ::= public
- //
- case 473: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 475: access_specifier_keyword_opt ::= $Empty
- //
- case 475: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 477: conversion_function_id_name ::= conversion_function_id < <openscope-ast> template_argument_list_opt >
- //
- case 477: {
- action.consumeTemplateId();
- break;
- }
-
- //
- // Rule 478: conversion_function_id ::= operator conversion_type_id
- //
- case 478: {
- action.consumeConversionName();
- break;
- }
-
- //
- // Rule 479: conversion_type_id ::= type_specifier_seq conversion_declarator
- //
- case 479: {
- action.consumeTypeId(true);
- break;
- }
-
- //
- // Rule 480: conversion_type_id ::= type_specifier_seq
- //
- case 480: {
- action.consumeTypeId(false);
- break;
- }
-
- //
- // Rule 481: conversion_declarator ::= <openscope-ast> ptr_operator_seq
- //
- case 481: {
- action.consumeDeclaratorWithPointer(false);
- break;
- }
-
- //
- // Rule 487: mem_initializer ::= mem_initializer_name ( expression_list_opt )
- //
- case 487: {
- action.consumeConstructorChainInitializer();
- break;
- }
-
- //
- // Rule 488: mem_initializer_name ::= dcolon_opt nested_name_specifier_opt class_name
- //
- case 488: {
- action.consumeQualifiedId(false);
- break;
- }
-
- //
- // Rule 491: operator_function_id_name ::= operator_id_name < <openscope-ast> template_argument_list_opt >
- //
- case 491: {
- action.consumeTemplateId();
- break;
- }
-
- //
- // Rule 492: operator_id_name ::= operator overloadable_operator
- //
- case 492: {
- action.consumeOperatorName();
- break;
- }
-
- //
- // Rule 535: template_declaration ::= export_opt template < <openscope-ast> template_parameter_list > declaration
- //
- case 535: {
- action.consumeTemplateDeclaration();
- break;
- }
-
- //
- // Rule 536: export_opt ::= export
- //
- case 536: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 537: export_opt ::= $Empty
- //
- case 537: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 541: template_parameter ::= parameter_declaration
- //
- case 541: {
- action.consumeTemplateParamterDeclaration();
- break;
- }
-
- //
- // Rule 542: type_parameter ::= class identifier_name_opt
- //
- case 542: {
- action.consumeSimpleTypeTemplateParameter(false);
- break;
- }
-
- //
- // Rule 543: type_parameter ::= class identifier_name_opt = type_id
- //
- case 543: {
- action.consumeSimpleTypeTemplateParameter(true);
- break;
- }
-
- //
- // Rule 544: type_parameter ::= typename identifier_name_opt
- //
- case 544: {
- action.consumeSimpleTypeTemplateParameter(false);
- break;
- }
-
- //
- // Rule 545: type_parameter ::= typename identifier_name_opt = type_id
- //
- case 545: {
- action.consumeSimpleTypeTemplateParameter(true);
- break;
- }
-
- //
- // Rule 546: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt
- //
- case 546: {
- action.consumeTemplatedTypeTemplateParameter(false);
- break;
- }
-
- //
- // Rule 547: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt = id_expression
- //
- case 547: {
- action.consumeTemplatedTypeTemplateParameter(true);
- break;
- }
-
- //
- // Rule 548: template_id_name ::= identifier_name < <openscope-ast> template_argument_list_opt >
- //
- case 548: {
- action.consumeTemplateId();
- break;
- }
-
- //
- // Rule 555: nested_name_specifier_inTemplate ::= class_or_namespace_name_inTemplate :: nested_name_specifier_with_template_inTemplate
- //
- case 555: {
- action.consumeNestedNameSpecifier(true);
- break;
- }
-
- //
- // Rule 556: nested_name_specifier_inTemplate ::= class_or_namespace_name_inTemplate ::
- //
- case 556: {
- action.consumeNestedNameSpecifier(false);
- break;
- }
-
- //
- // Rule 557: nested_name_specifier_with_template_inTemplate ::= class_or_namespace_name_with_template_inTemplate :: nested_name_specifier_with_template_inTemplate
- //
- case 557: {
- action.consumeNestedNameSpecifier(true);
- break;
- }
-
- //
- // Rule 558: nested_name_specifier_with_template_inTemplate ::= class_or_namespace_name_with_template_inTemplate ::
- //
- case 558: {
- action.consumeNestedNameSpecifier(false);
- break;
- }
-
- //
- // Rule 559: class_or_namespace_name_with_template_inTemplate ::= template_opt class_or_namespace_name_inTemplate
- //
- case 559: {
- action.consumeNameWithTemplateKeyword();
- break;
- }
-
- //
- // Rule 561: nested_name_specifier_opt_inTemplate ::= $Empty
- //
- case 561: {
- action.consumeNestedNameSpecifierEmpty();
- break;
- }
-
- //
- // Rule 564: type_name_specifier_inTemplate ::= typename dcolon_opt nested_name_specifier identifier_name
- //
- case 564: {
- action.consumeQualifiedId(false);
- break;
- }
-
- //
- // Rule 565: type_name_specifier_inTemplate ::= typename dcolon_opt nested_name_specifier template_opt template_id_name
- //
- case 565: {
- action.consumeQualifiedId(true);
- break;
- }
-
- //
- // Rule 570: declaration_specifiers_inTemplate ::= <openscope-ast> simple_declaration_specifiers
- //
- case 570: {
- action.consumeDeclarationSpecifiersSimple();
- break;
- }
-
- //
- // Rule 571: declaration_specifiers_inTemplate ::= <openscope-ast> class_declaration_specifiers
- //
- case 571: {
- action.consumeDeclarationSpecifiersComposite();
- break;
- }
-
- //
- // Rule 572: declaration_specifiers_inTemplate ::= <openscope-ast> elaborated_declaration_specifiers
- //
- case 572: {
- action.consumeDeclarationSpecifiersComposite();
- break;
- }
-
- //
- // Rule 573: declaration_specifiers_inTemplate ::= <openscope-ast> enum_declaration_specifiers
- //
- case 573: {
- action.consumeDeclarationSpecifiersComposite();
- break;
- }
-
- //
- // Rule 574: declaration_specifiers_inTemplate ::= <openscope-ast> type_name_declaration_specifiers_inTemplate
- //
- case 574: {
- action.consumeDeclarationSpecifiersTypeName();
- break;
- }
-
- //
- // Rule 576: type_id_inTemplate ::= type_specifier_seq_inTemplate
- //
- case 576: {
- action.consumeTypeId(false);
- break;
- }
-
- //
- // Rule 577: type_id_inTemplate ::= type_specifier_seq_inTemplate abstract_declarator
- //
- case 577: {
- action.consumeTypeId(true);
- break;
- }
-
- //
- // Rule 578: template_argument ::= assignment_expression_inTemplate
- //
- case 578: {
- action.consumeTemplateArgumentExpression();
- break;
- }
-
- //
- // Rule 579: template_argument ::= type_id_inTemplate
- //
- case 579: {
- action.consumeTemplateArgumentTypeId();
- break;
- }
-
- //
- // Rule 580: explicit_instantiation ::= template declaration
- //
- case 580: {
- action.consumeTemplateExplicitInstantiation();
- break;
- }
-
- //
- // Rule 581: explicit_specialization ::= template < > declaration
- //
- case 581: {
- action.consumeTemplateExplicitSpecialization();
- break;
- }
-
- //
- // Rule 582: try_block ::= try compound_statement <openscope-ast> handler_seq
- //
- case 582: {
- action.consumeStatementTryBlock(true);
- break;
- }
-
- //
- // Rule 583: try_block ::= try compound_statement
- //
- case 583: {
- action.consumeStatementTryBlock(false);
- break;
- }
-
- //
- // Rule 586: handler ::= catch ( exception_declaration ) compound_statement
- //
- case 586: {
- action.consumeStatementCatchHandler(false);
- break;
- }
-
- //
- // Rule 587: handler ::= catch ( ... ) compound_statement
- //
- case 587: {
- action.consumeStatementCatchHandler(true);
- break;
- }
-
- //
- // Rule 588: exception_declaration ::= type_specifier_seq <openscope-ast> declarator
- //
- case 588: {
- action.consumeDeclarationSimple(true);
- break;
- }
-
- //
- // Rule 589: exception_declaration ::= type_specifier_seq <openscope-ast> abstract_declarator
- //
- case 589: {
- action.consumeDeclarationSimple(true);
- break;
- }
-
- //
- // Rule 590: exception_declaration ::= type_specifier_seq
- //
- case 590: {
- action.consumeDeclarationSimple(false);
- break;
- }
-
- //
- // Rule 592: exception_specification ::= throw ( )
- //
- case 592: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 613: attribute_parameter ::= assignment_expression
- //
- case 613: {
- action.consumeIgnore();
- break;
- }
-
- //
- // Rule 624: extended_asm_declaration ::= asm volatile_opt ( extended_asm_param_seq ) ;
- //
- case 624: {
- gnuAction.consumeDeclarationASM();
- break;
- }
-
- //
- // Rule 635: unary_expression ::= __alignof__ unary_expression
- //
- case 635: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_alignOf);
- break;
- }
-
- //
- // Rule 636: unary_expression ::= __alignof__ ( type_id )
- //
- case 636: {
- action.consumeExpressionTypeId(IASTTypeIdExpression.op_alignof);
- break;
- }
-
- //
- // Rule 637: unary_expression ::= typeof unary_expression
- //
- case 637: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_typeof);
- break;
- }
-
- //
- // Rule 638: unary_expression ::= typeof ( type_id )
- //
- case 638: {
- action.consumeExpressionTypeId(IASTTypeIdExpression.op_typeof);
- break;
- }
-
- //
- // Rule 639: relational_expression ::= relational_expression >? shift_expression
- //
- case 639: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_max);
- break;
- }
-
- //
- // Rule 640: relational_expression ::= relational_expression <? shift_expression
- //
- case 640: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_min);
- break;
- }
-
- //
- // Rule 641: conditional_expression ::= logical_or_expression ? <empty> : assignment_expression
- //
- case 641: {
- action.consumeExpressionConditional();
- break;
- }
-
- //
- // Rule 642: primary_expression ::= ( compound_statement )
- //
- case 642: {
- gnuAction.consumeCompoundStatementExpression();
- break;
- }
-
- //
- // Rule 643: labeled_statement ::= case case_range_expression : statement
- //
- case 643: {
- action.consumeStatementCase();
- break;
- }
-
- //
- // Rule 644: case_range_expression ::= constant_expression ... constant_expression
- //
- case 644: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_assign);
- break;
- }
-
- //
- // Rule 648: typeof_type_specifier ::= typeof unary_expression
- //
- case 648: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_typeof);
- break;
- }
-
- //
- // Rule 649: typeof_type_specifier ::= typeof ( type_id )
- //
- case 649: {
- action.consumeExpressionTypeId(IASTTypeIdExpression.op_typeof);
- break;
- }
-
- //
- // Rule 650: declaration_specifiers ::= <openscope-ast> typeof_declaration_specifiers
- //
- case 650: {
- action.consumeDeclarationSpecifiersTypeof();
- break;
- }
-
- //
- // Rule 663: declarator ::= <openscope-ast> ptr_operator_seq attribute_or_decl_specifier_seq direct_declarator
- //
- case 663: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 666: simple_type_specifier ::= _Complex
- //
- case 666: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 667: simple_type_specifier ::= _Imaginary
- //
- case 667: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 668: cv_qualifier ::= restrict
- //
- case 668: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 669: explicit_instantiation ::= extern template declaration
- //
- case 669: {
- action.consumeTemplateExplicitInstantiationGCC(IGPPASTExplicitTemplateInstantiation.ti_extern);
- break;
- }
-
- //
- // Rule 670: explicit_instantiation ::= static template declaration
- //
- case 670: {
- action.consumeTemplateExplicitInstantiationGCC(IGPPASTExplicitTemplateInstantiation.ti_static);
- break;
- }
-
- //
- // Rule 671: explicit_instantiation ::= inline template declaration
- //
- case 671: {
- action.consumeTemplateExplicitInstantiationGCC(IGPPASTExplicitTemplateInstantiation.ti_inline);
- break;
- }
-
- //
- // Rule 672: postfix_expression ::= ( type_id ) initializer_list
- //
- case 672: {
- action.consumeExpressionTypeIdInitializer();
- break;
- }
-
- default:
- break;
- }
- return;
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gpp/GPPParserprs.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gpp/GPPParserprs.java
deleted file mode 100644
index db9f663d28a..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gpp/GPPParserprs.java
+++ /dev/null
@@ -1,1889 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2015 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.dom.lrparser.gpp;
-
-public class GPPParserprs implements lpg.lpgjavaruntime.ParseTable, GPPParsersym {
-
- public interface IsKeyword {
- public final static byte isKeyword[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0 };
- }
-
- public final static byte isKeyword[] = IsKeyword.isKeyword;
-
- public final boolean isKeyword(int index) {
- return isKeyword[index] != 0;
- }
-
- public interface BaseCheck {
- public final static short baseCheck[] = { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 0, 1, 0, 4, 2, 3, 2, 3, 2, 2, 1, 0, 1, 1, 4, 4, 4, 8, 8, 3, 3,
- 4, 4, 3, 3, 2, 2, 7, 7, 7, 7, 4, 4, 5, 6, 3, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 7, 9, 3, 0, 1,
- 2, 2, 1, 2, 3, 4, 1, 0, 3, 1, 0, 3, 5, 1, 4, 1, 3, 3, 1, 3, 3, 3, 1, 3, 3, 1, 3, 3, 1, 3, 3, 3, 3, 1, 3,
- 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 5, 1, 3, 5, 3, 3, 1, 3, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 5, 1, 1,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 2, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 2, 1, 3, 1, 0, 1, 0, 1,
- 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 4, 3, 2, 1, 4, 2, 1, 2, 5, 7, 5, 1, 4, 1, 0, 5, 7, 2, 8, 1, 1, 2, 2,
- 3, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 0, 4, 4, 2, 2, 2, 2, 2, 1, 0, 1, 1, 1, 1,
- 1, 1, 2, 1, 2, 2, 2, 1, 1, 2, 2, 1, 2, 2, 1, 2, 2, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 3, 4, 4, 5, 2, 5, 6, 5, 0, 1, 0, 7, 8, 0, 1, 3, 1, 0, 1, 3, 1, 7, 6, 0, 7, 6, 1, 0,
- 6, 6, 4, 1, 3, 1, 0, 1, 1, 2, 1, 1, 3, 1, 3, 1, 1, 1, 1, 3, 9, 2, 2, 3, 2, 5, 3, 7, 0, 1, 2, 2, 1, 0, 1,
- 1, 1, 3, 1, 2, 1, 1, 2, 3, 1, 1, 1, 3, 2, 1, 2, 2, 9, 8, 2, 1, 3, 1, 3, 1, 0, 1, 0, 2, 1, 1, 3, 1, 3, 2,
- 1, 5, 8, 1, 2, 3, 1, 1, 7, 6, 3, 0, 0, 1, 3, 1, 1, 5, 6, 6, 7, 7, 0, 0, 1, 0, 1, 1, 1, 2, 4, 2, 2, 1, 5,
- 1, 1, 1, 1, 1, 1, 1, 2, 1, 0, 1, 3, 1, 1, 2, 3, 2, 1, 2, 2, 1, 0, 1, 3, 3, 5, 5, 4, 1, 1, 1, 1, 0, 1, 5,
- 2, 2, 1, 2, 2, 1, 0, 1, 3, 4, 3, 1, 1, 5, 2, 1, 1, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 7, 1, 0, 1, 3, 1, 1, 2, 4, 2, 4, 7, 9,
- 5, 1, 3, 1, 0, 1, 1, 3, 2, 3, 2, 2, 1, 0, 1, 1, 4, 5, 2, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 1, 1, 2, 4, 4,
- 2, 1, 2, 5, 5, 3, 3, 1, 4, 3, 1, 0, 1, 3, 1, 1, 1, 1, 2, 6, 3, 1, 3, 1, 4, 0, 1, 1, 1, 3, 1, 0, 4, 3, 1,
- 2, 1, 3, 4, 4, 4, 6, 1, 0, 1, 3, 1, 3, 0, 1, 4, 5, 2, 4, 2, 4, 3, 3, 5, 3, 4, 3, 1, 2, 2, 2, 4, 2, 1, 1,
- 2, 2, 3, 2, 2, 3, 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 3, 3, 3, 4, -162, 0, 0, 0, 0, -22, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -195, -2, -34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -7, 0, -686, 0, 0, 0, 0, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, -6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -9, -69, 0, 0, 0, -376, 0, 0, 0, 0, -11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -227, 0, 0, 0, 0, 0, 0, 0, -101, -322, 0, -70, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, -29, 0, 0,
- -4, 0, 0, 0, -16, 0, 0, 0, 0, 0, 0, 0, 0, -41, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, -216, 0, 0, 0, 0, -137, 0,
- 0, 0, -58, 0, -18, 0, -145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -356, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -146, 0, 0,
- -147, 0, 0, 0, 0, 0, 0, -245, 0, 0, 0, 0, 0, 0, -19, -133, 0, 0, 0, 0, -189, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -20, -357, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -28, -54, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -508, 0, 0, -444,
- 0, 0, 0, 0, 0, 0, -57, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -285, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -107, -111, -224, 0,
- 0, -282, 0, 0, 0, 0, -273, 0, 0, 0, 0, -14, -541, 0, 0, 0, -38, -118, 0, 0, -127, 0, 0, 0, 0, 0, 0, -39,
- 0, 0, 0, 0, 0, -377, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -155,
- 0, -347, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -42, 0, -40, 0,
- 0, 0, 0, 0, 0, 0, -44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -45, 0, -404, -48, 0, -555, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -316, -61, 0, 0, 0, 0, 0, 0, -117, 0, 0, 0, 0, 0, 0, 0, 0, -176, 0, 0, 0, 0, -648, 0, 0, 0, 0, -98, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -462, 0, -319, 0, 0, 0, -68, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -99, 0, -450, 0, 0, 0, -324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -646, -333, 0, 0, 0, 0, 0, 0, -53, 0, 0, 0, 0, -455, 0, 0, 0, 0, 0, 0, 0,
- 0, -192, 0, 0, 0, -183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -60, 0, 0, -577, 0, 0, -628, 0, 0, 0, 0, -15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -284, 0, 0, 0, 0,
- -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -59, 0, 0, 0, -314, 0, 0, 0, 0, -94,
- 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -96, 0, 0, 0, 0, -457, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -482, -315, 0, 0, 0, -66, -182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -399, 0, -72, 0, -287, 0, 0, 0, 0, -255, 0, 0, 0, 0, 0, 0, 0, 0, -559, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -253, 0, 0, -160, 0, 0, 0, 0, 0, 0, -91, 0, 0,
- 0, 0, 0, 0, 0, 0, -86, 0, -443, 0, 0, 0, 0, -560, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -542, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -132, 0, -566, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -344, 0, 0, 0, 0, -486, 0, 0,
- 0, 0, 0, -557, 0, 0, -193, -252, 0, 0, 0, 0, 0, 0, -178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -551, 0, 0, 0, 0, -403, 0, -154, 0, -108, 0, -558, 0, 0, 0, -331, 0, 0, 0,
- 0, -289, -626, 0, 0, 0, 0, -112, -242, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -164, -584, 0, -327, 0, 0, -148, 0, 0, 0, 0, -378, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -364, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -37, 0, 0, 0,
- -335, 0, 0, 0, 0, 0, 0, -622, 0, 0, 0, 0, 0, 0, 0, 0, -87, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -365, 0, 0, 0, 0, -332, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -95, -174, -348, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -552, 0, 0, 0, -603, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -129, 0, 0, 0, 0,
- -366, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -88, -349, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -89, 0, -580, 0, 0, 0, 0, -649, -203,
- 0, 0, 0, -627, 0, 0, 0, 0, 0, 0, -476, -135, 0, 0, 0, 0, -367, 0, 0, 0, 0, -90, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -92, -350, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -676, -386, -109, -93, 0, 0, 0, 0, 0, 0, 0, -119, -684, -120, 0, 0, 0, -611,
- 0, 0, 0, 0, 0, -368, 0, 0, 0, 0, -614, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -379, -157, -351, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -123, -654, 0,
- -124, -143, 0, 0, 0, 0, 0, 0, 0, 0, 0, -199, 0, -221, 0, 0, 0, -102, 0, 0, 0, 0, 0, -369, 0, 0, 0, 0,
- -106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -380, 0, -76, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, -223, 0, 0, -113, 0, 0, 0, 0, 0, 0, -225,
- 0, -299, 0, 0, 0, 0, 0, 0, 0, 0, 0, -370, 0, 0, 0, 0, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -381, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -304, 0, -329, -436, -447, 0, -115, 0, -259, 0, 0, 0, 0, -330, -385, 0, 0, 0, 0, 0, -116, 0, 0, 0, 0,
- -371, 0, 0, 0, 0, -480, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -604, -158, -78,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -408, 0, -448, -130, -131, 0, 0,
- 0, 0, 0, 0, 0, -134, 0, 0, -576, 0, 0, -140, 0, -159, 0, 0, 0, 0, -372, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -156, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -624, 0, -453, -456, 0, 0, -201, 0, 0, 0, 0, 0, -205, -465, -523, -556, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -373, 0, 0, 0, 0, -481, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -125, 0, -80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -207, -583, -208, 0,
- -483, -553, 0, -670, 0, 0, -260, 0, 0, 0, -213, -595, -598, -599, 0, 0, 0, -617, 0, 0, 0, 0, 0, -374, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, -215, -81, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -640, -294, -625, 0, -317, 0, 0, 0, -204, -228,
- -231, 0, 0, 0, -651, 0, 0, 0, 0, 0, -232, -233, 0, 0, 0, 0, 0, -390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -452, 0, 0, 0, 0, 0, -212, -631, 0, 0, 0, -678, 0, 0, 0, -142,
- 0, 0, 0, 0, -409, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -468,
- 0, 0, 0, 0, 0, 0, 0, -392, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -671, 0, 0, 0, -422, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -618, 0, 0, -235, -236, 0, -401, 0, 0, 0, 0,
- 0, 0, 0, -300, -175, 0, 0, 0, 0, -209, 0, -423, 0, 0, 0, 0, -237, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -402, -469, 0, 0, -473, 0, -484, 0, 0, -290, -50, 0, 0, 0, 0, 0,
- 0, 0, -424, 0, 0, 0, 0, -238, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -520, -521, 0, 0, 0, 0, 0, -567, 0, 0, -639, -647, 0, 0, 0, 0, 0, 0, -425, 0, 0, 0, 0, -239, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -579, -616, 0, 0, -635, -645, -641, 0, 0, 0, 0, 0, 0,
- 0, 0, -662, 0, 0, 0, 0, 0, 0, -426, 0, 0, 0, 0, -240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -656, -666, 0, 0, -677, -241, 0, 0, 0, 0, 0, -243, 0, 0, -667, -244, 0, 0, 0, 0, -248, 0,
- -427, 0, 0, 0, 0, -246, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -261, -262, 0, 0,
- 0, 0, -660, 0, 0, 0, 0, -675, 0, 0, -263, -264, 0, 0, 0, 0, -249, 0, -428, 0, 0, 0, 0, -265, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -266, -267, 0, 0, 0, 0, 0, 0, 0, 0, 0, -268, 0, 0,
- -269, -270, 0, 0, 0, 0, -250, 0, -429, 0, 0, 0, 0, -271, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -272, -278, -279, 0, -280, -281, -291, 0, 0, -293, 0, -295, 0, 0, -303, -305, 0, 0, 0, 0,
- -251, 0, -430, 0, 0, 0, 0, -306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -449, 0,
- 0, 0, 0, 0, -309, 0, 0, -311, 0, -312, 0, 0, -313, -320, 0, 0, 0, 0, -276, 0, -431, 0, 0, 0, 0, -336, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -337, -352, -389, 0, -391, -393, -394, 0, 0,
- -395, 0, -396, 0, 0, -398, -437, 0, 0, 0, 0, -277, 0, -432, 0, 0, 0, 0, -439, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -440, -441, -442, 0, -458, -459, -466, 0, 0, -467, 0, -475, 0, 0,
- -477, -488, 0, 0, 0, 0, -489, 0, -582, 0, 0, 0, 0, -490, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -283, -288, -82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -298,
- -491, -663, 0, -492, -494, -495, 0, 0, -496, -497, -498, 0, 0, -672, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -601, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -499, -500, 0, -501,
- -502, -503, -504, 0, 0, -505, 0, 0, 0, 0, -506, -510, 0, 0, 0, 0, -308, 0, -602, 0, 0, 0, 0, -512, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -513, -518, -522, 0, -526, -527, -528, 0, 0,
- -529, 0, -530, 0, 0, 0, 0, 0, 0, 0, 0, -321, 0, -657, 0, 0, 0, 0, -531, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -532, -533, -534, 0, -535, -536, -537, 0, 0, -538, 0, -539, 0, 0, -679,
- -540, 0, 0, 0, 0, -323, 0, -234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -548, 0, -254, 0, 0, -549, 0, 0, -550, 0, -128, 0, 0, 0, 0, -574, 0, 0, 0, 0, 0, 0, -575, -585,
- -596, -612, -613, 0, 0, 0, -194, 0, 0, 0, -615, 0, 0, 0, 0, 0, 0, -325, -474, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -619, -633, -642, -650, 0, -658, -668, -669, 0, -682,
- 0, 0, 0, 0, 0, -326, 0, 0, 0, 0, -485, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -387, -406, -470, -471,
- -507, -569, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -524, 0, 0, 0, 0, -570, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -543, -554,
- -581, -591, -593, -589, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -597, 0, 0, 0, 0, -630, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -636, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, -226, 0, 0, 0, 0, -258, 0, 0, 0, 0, 0, -600, 0, 0, 0, 0, -605,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -12, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -434, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -606, -5, 0, 0, 0, 0, -52, 0, 0, -607, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -608, -643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -644, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -680, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -328, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -655, -661, 0, 0, 0, 0, 0, 0, 0, -165, -472, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, -664, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -665, 0, 0, 0, 0, 0, 0, -84, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -363, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -417, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -169, 0, -674, -685, 0,
- 0, -421, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -361, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -418, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -419, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -362, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -353, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -446, 0, 0, 0, 0, 0, 0, 0, 0, 0, -420, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -562, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -358, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -172, -177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -416, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -83, 0, 0, 0, 0, -26, 0, 0, 0, -184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -229, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -171, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -338, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -334, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -359, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -360, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -479, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, -100, 0, 0, 0, 0, -568, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -573, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -23, 0, 0, 0, 0, -185, 0, 0, 0, 0,
- -25, 0, 0, 0, 0, 0, 0, 0, 0, -187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -451, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -310, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -354, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -180, 0, 0,
- -33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -230, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -355, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -388, -167, 0, 0, 0,
- 0, 0, 0, 0, 0, -186, 0, 0, 0, 0, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -410, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -411, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -412, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -413, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -414, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -415, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -460, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -168, 0, 0, 0, -173, -30, 0, 0, 0, 0, -493, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -382, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -397, -43, 0, 0, 0, 0, 0, 0,
- -153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -85, 0, 0, -384, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -222, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -511, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -594, -659, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -514, -163, -433, 0,
- 0, 0, 0, 0, 0, 0, -296, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -149, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -375, -588, -544,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -545, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -196, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -590,
- -564, 0, 0, 0, 0, 0, 0, 0, 0, -302, 0, 0, 0, 0, 0, -509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -632, -546, 0, 0, 0, 0, 0, 0, 0, 0, -571, 0, 0, 0, 0, 0, -587, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -339, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -634, -547, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -586, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -621, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -638, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -307, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -673, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -515, -151, 0, 0, -565, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -683, 0, 0, 0, 0, 0, 0, 0, 0, -687, 0, -516, -152, -637, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -32, 0, 0, 0, 0, -340, 0, -55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -519, 0, 0, 0, 0, 0, 0, 0, -179, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -301, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -478, 0, 0, 0, -191, -1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -341, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -345, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -346, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -383, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -342, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -610, 0, -257, 0,
- -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -343, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -275, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -10, -525, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -629, 0, 0, 0, 0, 0, 0, 0, -13, 0, 0, 0, -563,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -463, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -517, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -46, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -435, 0, 0, 0, 0, 0, 0, 0, 0, 0, -122, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -572, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -592, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -218, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -561, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, 0, 0, 0, 0, 0, 0, -405, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -461, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -438, 0, 0, 0, 0, 0, 0, 0, 0, -144, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -274, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -286, 0, 0, 0, -292, 0, 0, 0, 0, 0, 0, 0, -578,
- 0, 0, 0, 0, 0, 0, -623, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -652, 0, 0, 0, -653, 0, 0, 0, 0, -219, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -297,
- 0, 0, 0, -454, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -445, 0, 0, 0, 0, 0, 0, -620, 0, 0, 0, 0, 0, 0,
- 0, 0, -681, 0, 0, 0, 0, 0, 0, 0, 0, 0, -487, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static short baseCheck[] = BaseCheck.baseCheck;
-
- @Override
- public final int baseCheck(int index) {
- return baseCheck[index];
- }
-
- public final static short rhs[] = baseCheck;
-
- @Override
- public final int rhs(int index) {
- return rhs[index];
- }
-
- public interface BaseAction0 {
- public final static char baseAction0[] = { 205, 5, 143, 103, 103, 32, 32, 102, 102, 47, 47, 36, 36, 205, 1, 1,
- 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 15, 11, 11, 6, 6, 6, 6, 6, 6, 2, 89, 89, 4, 4, 12, 12, 53, 53,
- 166, 166, 167, 82, 82, 52, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
- 18, 168, 168, 168, 144, 144, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 206, 206, 207,
- 207, 208, 171, 171, 172, 172, 169, 169, 173, 170, 170, 21, 21, 22, 22, 23, 23, 23, 24, 24, 24, 24, 25,
- 25, 25, 26, 26, 26, 35, 35, 35, 35, 35, 37, 37, 37, 39, 39, 40, 40, 43, 43, 44, 44, 45, 45, 46, 46, 55,
- 55, 55, 55, 55, 64, 64, 64, 65, 65, 70, 70, 71, 71, 75, 75, 76, 76, 77, 77, 78, 78, 78, 78, 78, 78, 78,
- 78, 78, 78, 78, 78, 78, 34, 34, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 41, 33, 174, 174,
- 113, 113, 209, 209, 106, 238, 238, 91, 91, 91, 91, 91, 91, 91, 91, 91, 92, 92, 92, 90, 90, 56, 56, 210,
- 210, 93, 93, 93, 125, 125, 211, 211, 94, 94, 94, 94, 212, 212, 95, 95, 95, 95, 95, 96, 96, 98, 98, 98,
- 98, 98, 98, 98, 98, 57, 57, 57, 57, 57, 126, 126, 124, 124, 58, 213, 31, 31, 31, 31, 31, 51, 51, 79, 79,
- 79, 79, 79, 149, 149, 145, 145, 145, 145, 145, 146, 146, 146, 147, 147, 147, 148, 148, 148, 176, 176,
- 176, 80, 80, 80, 80, 80, 81, 81, 81, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 114, 150, 150, 150,
- 150, 150, 150, 119, 119, 119, 177, 178, 178, 120, 120, 214, 180, 180, 179, 179, 151, 151, 127, 87, 87,
- 152, 60, 50, 181, 181, 61, 100, 100, 182, 182, 175, 175, 153, 154, 154, 155, 84, 84, 183, 183, 72, 72,
- 72, 67, 67, 66, 73, 73, 101, 101, 83, 83, 83, 69, 107, 107, 116, 115, 115, 63, 63, 68, 68, 74, 74, 54,
- 117, 117, 117, 108, 108, 108, 109, 109, 110, 110, 110, 111, 111, 128, 128, 128, 130, 130, 129, 129, 239,
- 239, 112, 112, 216, 216, 216, 216, 216, 157, 49, 49, 185, 215, 215, 158, 158, 104, 104, 104, 105, 187,
- 217, 217, 42, 42, 118, 122, 122, 122, 122, 219, 132, 131, 131, 121, 121, 121, 188, 189, 189, 189, 189,
- 189, 189, 189, 189, 189, 189, 189, 221, 221, 218, 218, 220, 220, 134, 135, 135, 135, 135, 136, 222, 137,
- 133, 133, 223, 223, 190, 190, 190, 190, 123, 123, 123, 224, 224, 8, 8, 9, 225, 225, 226, 191, 184, 184,
- 192, 192, 193, 194, 194, 7, 7, 10, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
- 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
- 227, 227, 227, 227, 227, 227, 227, 85, 88, 88, 195, 195, 160, 160, 161, 161, 161, 161, 161, 161, 3, 162,
- 162, 159, 159, 196, 240, 241, 241, 242, 242, 243, 244, 244, 197, 198, 198, 198, 198, 228, 228, 228, 139,
- 139, 139, 139, 139, 140, 141, 141, 138, 138, 99, 86, 97, 97, 186, 186, 142, 142, 229, 229, 229, 163,
- 163, 156, 156, 230, 230, 27, 27, 27, 38, 38, 28, 28, 231, 231, 199, 199, 199, 200, 200, 232, 232, 201,
- 201, 29, 29, 233, 233, 202, 202, 202, 202, 30, 62, 234, 234, 235, 235, 203, 203, 203, 164, 164, 164, 19,
- 19, 19, 19, 35, 35, 46, 17, 92, 236, 204, 204, 204, 165, 165, 31, 59, 79, 155, 155, 155, 134, 134, 134,
- 214, 219, 132, 69, 84, 177, 152, 13, 13, 63, 99, 99, 99, 18, 1603, 35, 3125, 3103, 7526, 1969, 27, 30,
- 31, 1092, 1081, 26, 28, 3091, 296, 25, 23, 50, 2080, 106, 76, 77, 108, 2636, 2647, 2646, 3041, 652, 597,
- 598, 599, 2884, 1374, 468, 177, 3028, 4028, 3054, 1890, 3042, 3077, 1224, 308, 3076, 3087, 3090, 176,
- 1315, 191, 3298, 35, 1154, 32, 7645, 1492, 27, 30, 31, 1092, 1081, 26, 28, 5164, 266, 547, 3051, 1534,
- 35, 1154, 32, 5704, 3898, 27, 30, 31, 1092, 1081, 374, 28, 269, 264, 265, 1497, 170, 35, 985, 424, 4580,
- 35, 1154, 32, 4746, 1386, 27, 30, 31, 1092, 1081, 26, 28, 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 108,
- 2636, 2647, 2646, 2785, 309, 170, 35, 317, 276, 279, 282, 3924, 678, 647, 2101, 49, 170, 35, 985, 424,
- 1987, 2695, 351, 1164, 356, 1509, 906, 1761, 35, 314, 1439, 756, 2784, 395, 562, 3866, 4887, 5065, 5075,
- 6377, 285, 2858, 2808, 170, 2332, 2318, 34, 2956, 2907, 3420, 3180, 3183, 3414, 2262, 1223, 645, 2157,
- 425, 308, 170, 35, 7612, 7590, 3688, 3027, 842, 5956, 3086, 35, 1154, 32, 4746, 4773, 27, 30, 31, 1092,
- 1081, 26, 28, 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 108, 2636, 2647, 2646, 2785, 6023, 603, 4394,
- 35, 1154, 32, 4746, 162, 27, 30, 31, 1092, 1081, 26, 28, 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 108,
- 2636, 2647, 3356, 2784, 2113, 35, 312, 170, 35, 2318, 311, 310, 2858, 2808, 170, 35, 2318, 313, 2956,
- 2907, 706, 935, 2702, 2983, 2989, 161, 578, 3086, 35, 1154, 32, 4746, 4773, 27, 30, 31, 1092, 1081, 26,
- 28, 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 108, 2636, 2647, 2646, 2785, 615, 945, 4394, 35, 1154, 32,
- 4746, 162, 27, 30, 31, 1092, 1081, 26, 28, 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 108, 2636, 2647,
- 3357, 2784, 85, 1979, 1845, 549, 575, 5266, 579, 6524, 2858, 2808, 916, 605, 2549, 3389, 2956, 2907,
- 170, 35, 3552, 2983, 2989, 161, 578, 1330, 2635, 1969, 347, 2993, 601, 597, 598, 599, 1390, 1390, 3086,
- 35, 1154, 32, 4746, 4773, 27, 30, 31, 1092, 1081, 26, 28, 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 108,
- 2636, 2647, 2646, 2785, 2156, 817, 3266, 35, 1154, 32, 7645, 162, 27, 30, 31, 1092, 1081, 59, 28, 3914,
- 1545, 2113, 35, 315, 2729, 549, 575, 5266, 579, 1761, 35, 314, 2784, 7184, 67, 3606, 35, 312, 6384, 277,
- 1669, 2858, 2808, 170, 35, 330, 3140, 2956, 2907, 2993, 469, 357, 2983, 2989, 161, 578, 3541, 35, 1154,
- 32, 4746, 4773, 27, 30, 31, 1092, 1081, 26, 28, 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 108, 2636,
- 2647, 2646, 2785, 1970, 618, 4394, 35, 1154, 32, 4746, 162, 27, 30, 31, 1092, 1081, 26, 28, 2049, 296,
- 25, 23, 50, 2080, 106, 76, 77, 108, 2636, 3287, 1327, 2784, 949, 1574, 4669, 549, 575, 5266, 579, 4028,
- 2858, 2808, 1034, 534, 1923, 1759, 2956, 2907, 3570, 3577, 2395, 2983, 2989, 161, 578, 2053, 3152, 1969,
- 1332, 2993, 3620, 35, 1154, 32, 4746, 378, 27, 30, 31, 1092, 1081, 26, 28, 2049, 296, 25, 23, 50, 2080,
- 106, 76, 77, 108, 2636, 2647, 2646, 3041, 1001, 987, 627, 2476, 479, 3577, 1556, 177, 3028, 2248, 3054,
- 1001, 3042, 3077, 3051, 55, 3076, 3087, 3090, 176, 7173, 414, 170, 35, 985, 424, 2484, 550, 575, 5266,
- 579, 1761, 35, 489, 1937, 7554, 3236, 35, 1154, 32, 4746, 1137, 27, 30, 31, 1092, 1081, 26, 28, 2049,
- 296, 25, 23, 50, 2080, 106, 76, 77, 108, 2636, 2647, 2646, 3041, 3113, 308, 170, 35, 330, 4028, 55, 177,
- 3028, 2248, 3054, 850, 3042, 3077, 415, 2795, 3076, 3087, 3090, 176, 561, 414, 170, 35, 985, 424, 3462,
- 35, 1154, 32, 4746, 5164, 27, 30, 31, 1092, 1081, 26, 28, 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 108,
- 2636, 2647, 2646, 3041, 339, 3761, 170, 35, 2318, 316, 4028, 177, 3028, 167, 3054, 488, 3042, 3077,
- 2429, 421, 3076, 3087, 3090, 176, 375, 613, 2992, 1545, 415, 2795, 359, 3310, 35, 1154, 32, 4746, 378,
- 27, 30, 31, 1092, 1081, 26, 28, 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 108, 2636, 2647, 2646, 3041,
- 2125, 2979, 478, 1797, 492, 396, 3690, 177, 3028, 2248, 3054, 67, 3042, 3077, 360, 6774, 3076, 3087,
- 3090, 176, 2930, 414, 2836, 1666, 422, 3886, 35, 1154, 32, 4746, 1515, 27, 30, 31, 1092, 1081, 26, 28,
- 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 108, 2636, 2647, 2646, 3041, 2702, 482, 3131, 3134, 554, 35,
- 432, 177, 3028, 55, 3054, 67, 3042, 3077, 1891, 7416, 3076, 3087, 3090, 176, 496, 191, 2957, 363, 370,
- 415, 2795, 3886, 35, 1154, 32, 4746, 616, 27, 30, 31, 1092, 1081, 26, 28, 2049, 296, 25, 23, 50, 2080,
- 106, 76, 77, 108, 2636, 2647, 2646, 3041, 2243, 554, 35, 432, 7562, 67, 55, 177, 3028, 7493, 3054, 1404,
- 3042, 3077, 611, 255, 3076, 3087, 3090, 176, 474, 408, 170, 2884, 173, 412, 3266, 35, 1154, 32, 7645,
- 3818, 27, 30, 31, 1092, 1081, 58, 28, 3346, 3886, 35, 1154, 32, 4746, 3688, 27, 30, 31, 1092, 1081, 26,
- 28, 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 108, 2636, 2647, 2646, 3041, 2248, 2246, 2154, 4229, 1843,
- 3570, 4028, 177, 3028, 5101, 3054, 67, 3042, 3077, 3278, 5585, 3076, 3087, 3090, 176, 1041, 408, 170,
- 35, 2318, 3547, 3027, 3886, 35, 1154, 32, 4746, 378, 27, 30, 31, 1092, 1081, 26, 28, 2049, 296, 25, 23,
- 50, 2080, 106, 76, 77, 108, 2636, 2647, 2646, 3041, 2628, 2078, 2406, 1226, 35, 2318, 311, 177, 3028,
- 407, 3054, 3281, 3042, 3077, 672, 2795, 3076, 3087, 3090, 176, 2101, 408, 3462, 35, 1154, 32, 4746, 617,
- 27, 30, 31, 1092, 1081, 26, 28, 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 108, 2636, 2647, 2646, 3041,
- 1761, 35, 566, 215, 7671, 170, 3201, 177, 3028, 924, 3054, 2429, 3042, 3077, 1545, 1545, 3076, 3087,
- 3090, 176, 465, 613, 3693, 35, 1154, 32, 4746, 406, 27, 30, 31, 1092, 1081, 26, 28, 2049, 296, 25, 23,
- 50, 2080, 106, 76, 77, 108, 2636, 2647, 2646, 3041, 170, 3572, 2318, 74, 3569, 170, 3451, 2241, 3028,
- 55, 3054, 2520, 3042, 3077, 929, 475, 3076, 3087, 3136, 197, 1545, 170, 35, 985, 424, 1666, 3914, 3383,
- 35, 1154, 32, 4746, 404, 27, 30, 31, 1092, 1081, 26, 28, 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 108,
- 2636, 2647, 2646, 3041, 55, 3982, 2326, 1970, 533, 4028, 2638, 177, 3028, 467, 3054, 3000, 3042, 3077,
- 495, 6675, 3076, 3087, 3090, 176, 1666, 175, 362, 369, 370, 2627, 3951, 35, 1154, 32, 4746, 378, 27, 30,
- 31, 1092, 1081, 26, 28, 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 108, 2636, 2647, 2646, 2785, 325,
- 3989, 1408, 35, 1154, 32, 2795, 162, 41, 30, 31, 1092, 1081, 2243, 604, 2549, 51, 7562, 612, 2781, 370,
- 3126, 2255, 3524, 35, 1154, 32, 7550, 2784, 27, 30, 31, 1092, 1081, 57, 28, 67, 2858, 2808, 4161, 7507,
- 426, 4444, 2956, 2907, 463, 2547, 4444, 2983, 2989, 161, 173, 3951, 35, 1154, 32, 4746, 475, 27, 30, 31,
- 1092, 1081, 26, 28, 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 108, 2636, 2647, 2646, 2785, 187, 187,
- 4394, 35, 1154, 32, 4746, 162, 27, 30, 31, 1092, 1081, 26, 28, 2049, 296, 25, 23, 50, 2080, 106, 76, 77,
- 108, 2636, 3292, 1553, 2784, 1226, 35, 2318, 3573, 170, 35, 2318, 3618, 2858, 2808, 88, 42, 3005, 102,
- 2956, 2907, 44, 3005, 2354, 2983, 2989, 161, 172, 3951, 35, 1154, 32, 4746, 2406, 27, 30, 31, 1092,
- 1081, 26, 28, 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 108, 2636, 2647, 2646, 2785, 2634, 2436, 4394,
- 35, 1154, 32, 4746, 162, 27, 30, 31, 1092, 1081, 26, 28, 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 108,
- 3299, 2841, 3235, 2784, 3731, 35, 564, 427, 61, 571, 1330, 463, 2858, 2808, 170, 35, 2318, 565, 2956,
- 2907, 466, 3092, 3914, 2983, 2989, 161, 171, 3951, 35, 1154, 32, 4746, 3529, 27, 30, 31, 1092, 1081, 26,
- 28, 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 108, 2636, 2647, 2646, 2785, 623, 1127, 4394, 35, 1154,
- 32, 4746, 162, 27, 30, 31, 1092, 1081, 26, 28, 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 108, 3347,
- 2796, 2844, 2784, 571, 2322, 55, 5298, 483, 483, 5987, 1019, 2858, 2808, 2008, 55, 571, 55, 2956, 2907,
- 704, 3055, 5947, 2983, 2989, 161, 170, 3951, 35, 1154, 32, 4746, 3374, 27, 30, 31, 1092, 1081, 26, 28,
- 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 108, 2636, 2647, 2646, 2785, 3979, 3914, 4394, 35, 1154, 32,
- 4746, 162, 27, 30, 31, 1092, 1081, 26, 28, 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 108, 3350, 55,
- 4174, 2784, 55, 55, 6747, 358, 1516, 6763, 3932, 2248, 2858, 2808, 593, 55, 2395, 55, 2956, 2907, 6864,
- 2185, 1719, 2983, 2989, 161, 169, 3951, 35, 1154, 32, 4746, 1736, 27, 30, 31, 1092, 1081, 26, 28, 2049,
- 296, 25, 23, 50, 2080, 106, 76, 77, 108, 2636, 2647, 2646, 2785, 3986, 628, 4394, 35, 1154, 32, 4746,
- 162, 27, 30, 31, 1092, 1081, 26, 28, 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 85, 672, 2795, 391, 2784,
- 2145, 55, 457, 70, 1233, 593, 1868, 2248, 2858, 2808, 390, 55, 585, 55, 2956, 2907, 4842, 593, 2680,
- 2983, 2989, 161, 168, 3951, 35, 1154, 32, 4746, 1853, 27, 30, 31, 1092, 1081, 26, 28, 2049, 296, 25, 23,
- 50, 2080, 106, 76, 77, 108, 2636, 2647, 2646, 2785, 4044, 93, 4394, 35, 1154, 32, 4746, 162, 27, 30, 31,
- 1092, 1081, 26, 28, 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 83, 672, 2795, 55, 2784, 55, 3603, 2116,
- 1339, 3581, 2342, 2099, 2248, 2858, 2808, 89, 55, 55, 102, 2956, 2907, 2500, 998, 1345, 2983, 2989, 161,
- 167, 3951, 35, 1154, 32, 4746, 475, 27, 30, 31, 1092, 1081, 26, 28, 2049, 296, 25, 23, 50, 2080, 106,
- 76, 77, 108, 2636, 2647, 2646, 2785, 5040, 3914, 4394, 35, 1154, 32, 4746, 162, 27, 30, 31, 1092, 1081,
- 26, 28, 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 82, 672, 2795, 55, 2784, 55, 1731, 2458, 6936, 642,
- 2552, 630, 2248, 2858, 2808, 1874, 3577, 3577, 1859, 2956, 2907, 2345, 7569, 3914, 2983, 2989, 161, 166,
- 3951, 35, 1154, 32, 4746, 388, 27, 30, 31, 1092, 1081, 26, 28, 2049, 296, 25, 23, 50, 2080, 106, 76, 77,
- 108, 2636, 2647, 2646, 2785, 24, 1474, 4394, 35, 1154, 32, 4746, 162, 27, 30, 31, 1092, 1081, 26, 28,
- 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 81, 672, 2795, 67, 2784, 55, 55, 7581, 429, 2957, 1182, 1715,
- 463, 2858, 2808, 657, 55, 1430, 55, 2956, 2907, 6960, 2563, 2568, 2983, 2989, 161, 165, 3951, 35, 1154,
- 32, 4746, 475, 27, 30, 31, 1092, 1081, 26, 28, 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 108, 2636,
- 2647, 2646, 2785, 1969, 338, 4394, 35, 1154, 32, 4746, 162, 27, 30, 31, 1092, 1081, 26, 28, 2049, 296,
- 25, 23, 50, 2080, 106, 76, 77, 80, 2975, 55, 2245, 2784, 2795, 1872, 1385, 554, 35, 432, 753, 2167,
- 2858, 2808, 379, 55, 1872, 55, 2956, 2907, 3911, 2429, 2626, 2983, 2989, 161, 164, 3951, 35, 1154, 32,
- 4746, 3518, 27, 30, 31, 1092, 1081, 26, 28, 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 108, 2636, 2647,
- 2646, 2785, 2957, 3850, 4394, 35, 1154, 32, 4746, 162, 27, 30, 31, 1092, 1081, 26, 28, 2049, 296, 25,
- 23, 50, 2080, 106, 76, 77, 79, 2520, 1545, 67, 2784, 3051, 1666, 7585, 428, 2957, 1539, 754, 463, 2858,
- 2808, 170, 35, 985, 424, 2956, 2907, 2013, 74, 335, 2983, 2989, 161, 163, 4394, 35, 1154, 32, 4746, 389,
- 27, 30, 31, 1092, 1081, 26, 28, 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 108, 2636, 2647, 2646, 3041,
- 3051, 624, 470, 365, 370, 3625, 3304, 1545, 3028, 1666, 3054, 1969, 3042, 3077, 584, 1969, 3076, 3087,
- 3136, 197, 3886, 35, 1154, 32, 4746, 584, 27, 30, 31, 1092, 1081, 26, 28, 2049, 296, 25, 23, 50, 2080,
- 106, 76, 77, 108, 2636, 2647, 2646, 3041, 1556, 3051, 2929, 361, 2246, 332, 440, 177, 3028, 2957, 3054,
- 2105, 3042, 3077, 2944, 370, 3076, 3087, 3090, 176, 587, 192, 2894, 170, 35, 985, 424, 3886, 35, 1154,
- 32, 4746, 3449, 27, 30, 31, 1092, 1081, 26, 28, 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 108, 2636,
- 2647, 2646, 3041, 55, 418, 212, 1403, 1322, 2003, 2957, 177, 3028, 97, 3054, 469, 3042, 3077, 1969,
- 1969, 3076, 3087, 3090, 176, 3536, 188, 3886, 35, 1154, 32, 4746, 439, 27, 30, 31, 1092, 1081, 26, 28,
- 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 108, 2636, 2647, 2646, 3041, 331, 2472, 1556, 620, 232, 2957,
- 2957, 177, 3028, 3364, 3054, 3051, 3042, 3077, 1969, 3160, 3076, 3087, 3090, 176, 7194, 187, 411, 3886,
- 35, 1154, 32, 4746, 743, 27, 30, 31, 1092, 1081, 26, 28, 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 108,
- 2636, 2647, 2646, 3041, 1556, 2153, 231, 334, 2957, 2957, 438, 177, 3028, 3427, 3054, 2957, 3042, 3077,
- 3552, 163, 3076, 3087, 3090, 176, 411, 186, 3886, 35, 1154, 32, 4746, 557, 27, 30, 31, 1092, 1081, 26,
- 28, 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 108, 2636, 2647, 2646, 3041, 3051, 3851, 235, 233, 2957,
- 3055, 55, 177, 3028, 442, 3054, 3348, 3042, 3077, 321, 55, 3076, 3087, 3090, 176, 2077, 185, 3886, 35,
- 1154, 32, 4746, 661, 27, 30, 31, 1092, 1081, 26, 28, 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 108,
- 2636, 2647, 2646, 3041, 1545, 4108, 5783, 409, 55, 1036, 4114, 177, 3028, 2089, 3054, 1413, 3042, 3077,
- 163, 2522, 3076, 3087, 3090, 176, 3914, 184, 3886, 35, 1154, 32, 4746, 1329, 27, 30, 31, 1092, 1081, 26,
- 28, 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 108, 2636, 2647, 2646, 3041, 2536, 5036, 2393, 2127, 322,
- 2895, 2957, 177, 3028, 585, 3054, 2957, 3042, 3077, 1339, 919, 3076, 3087, 3090, 176, 3914, 183, 3886,
- 35, 1154, 32, 4746, 749, 27, 30, 31, 1092, 1081, 26, 28, 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 108,
- 2636, 2647, 2646, 3041, 852, 1742, 71, 2206, 256, 98, 417, 177, 3028, 226, 3054, 2537, 3042, 3077, 2880,
- 2596, 3076, 3087, 3090, 176, 3914, 182, 3886, 35, 1154, 32, 4746, 5088, 27, 30, 31, 1092, 1081, 26, 28,
- 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 108, 2636, 2647, 2646, 3041, 4992, 2700, 2791, 2285, 2899,
- 2977, 2613, 177, 3028, 2605, 3054, 2168, 3042, 3077, 81, 3234, 3076, 3087, 3090, 176, 3914, 181, 3886,
- 35, 1154, 32, 4746, 3394, 27, 30, 31, 1092, 1081, 26, 28, 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 108,
- 2636, 2647, 2646, 3041, 1887, 35, 489, 5680, 7554, 416, 2521, 177, 3028, 2704, 3054, 2612, 3042, 3077,
- 3853, 2051, 3076, 3087, 3090, 176, 3914, 180, 3886, 35, 1154, 32, 4746, 1414, 27, 30, 31, 1092, 1081,
- 26, 28, 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 108, 2636, 2647, 2646, 3041, 3264, 2346, 1782, 69,
- 3193, 97, 2696, 177, 3028, 2878, 3054, 2882, 3042, 3077, 2973, 5136, 3076, 3087, 3090, 176, 3914, 179,
- 3886, 35, 1154, 32, 4746, 3656, 27, 30, 31, 1092, 1081, 26, 28, 2049, 296, 25, 23, 50, 2080, 106, 76,
- 77, 108, 2636, 2647, 2646, 3041, 3686, 3720, 3855, 68, 1649, 1657, 2152, 177, 3028, 3005, 3054, 3576,
- 3042, 3077, 2437, 266, 3076, 3087, 3090, 176, 359, 178, 4016, 35, 1154, 32, 4746, 946, 27, 30, 31, 1092,
- 1081, 26, 28, 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 108, 2636, 2647, 2646, 2785, 3914, 3914, 4394,
- 35, 1154, 32, 4746, 162, 27, 30, 31, 1092, 1081, 26, 28, 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 78,
- 3914, 1042, 2520, 2784, 1138, 2339, 2607, 53, 52, 2626, 2778, 2869, 2858, 2808, 170, 35, 985, 424, 2956,
- 2907, 486, 3131, 3134, 2983, 2989, 161, 160, 3886, 35, 1154, 32, 4746, 413, 27, 30, 31, 1092, 1081, 26,
- 28, 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 108, 2636, 2647, 2646, 3041, 839, 3587, 468, 3795, 3388,
- 3219, 2701, 177, 3028, 3801, 3054, 1666, 3042, 3077, 2969, 193, 3076, 3087, 3090, 176, 3914, 641, 3886,
- 35, 1154, 32, 4746, 3821, 27, 30, 31, 1092, 1081, 26, 28, 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 108,
- 2636, 2647, 2646, 3041, 1035, 273, 3568, 2473, 2698, 2717, 2808, 177, 3028, 2983, 3054, 3834, 3042,
- 3077, 2982, 370, 3076, 3087, 3090, 176, 3914, 140, 4081, 35, 1154, 32, 4746, 4152, 27, 30, 31, 1092,
- 1081, 26, 28, 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 108, 2636, 2647, 2646, 3041, 1031, 5084, 5244,
- 633, 3819, 3950, 3273, 177, 3028, 4051, 3054, 4116, 3042, 3077, 1969, 3809, 3076, 3087, 3090, 176, 3914,
- 222, 3165, 35, 1154, 32, 4746, 673, 27, 30, 31, 1092, 1081, 26, 28, 2049, 296, 25, 23, 50, 2080, 106,
- 76, 77, 108, 2636, 2647, 2646, 2785, 3920, 1556, 55, 602, 378, 3981, 189, 1404, 1717, 1556, 1860, 35,
- 1154, 32, 2411, 2153, 2601, 30, 31, 1092, 1081, 586, 3356, 3612, 4047, 3860, 2427, 3989, 3224, 2365,
- 1860, 35, 1154, 32, 4112, 3685, 40, 30, 31, 1092, 1081, 3914, 4394, 35, 1154, 32, 4746, 3145, 27, 30,
- 31, 1092, 1081, 26, 28, 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 108, 2636, 2647, 2646, 3041, 2886,
- 3869, 4118, 2364, 622, 3700, 4173, 4176, 3028, 4135, 3054, 8899, 3042, 3077, 8899, 3914, 3076, 3087,
- 3136, 197, 4394, 35, 1154, 32, 4746, 8899, 27, 30, 31, 1092, 1081, 26, 28, 2049, 296, 25, 23, 50, 2080,
- 106, 76, 77, 108, 2636, 2647, 2646, 3041, 621, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 3028, 8899,
- 3054, 8899, 3042, 3077, 8899, 8899, 3076, 3087, 3136, 197, 8899, 8899, 3914, 3914, 3914, 3457, 3914,
- 4394, 35, 1154, 32, 4746, 459, 27, 30, 31, 1092, 1081, 26, 28, 2049, 296, 25, 23, 50, 2080, 106, 76, 77,
- 108, 2636, 2647, 2646, 3041, 90, 385, 634, 607, 2548, 8899, 8899, 8899, 3028, 8899, 3054, 8899, 3042,
- 3077, 8899, 3914, 3076, 3087, 3136, 197, 4394, 35, 1154, 32, 4746, 329, 27, 30, 31, 1092, 1081, 26, 28,
- 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 108, 2636, 2647, 2646, 3041, 2564, 8899, 8899, 8899, 8899,
- 8899, 8899, 8899, 3028, 8899, 3054, 8899, 3042, 3077, 8899, 8899, 3076, 3087, 3136, 197, 8899, 8899,
- 3914, 3914, 2527, 3914, 3914, 4394, 35, 1154, 32, 4746, 458, 27, 30, 31, 1092, 1081, 26, 28, 2049, 296,
- 25, 23, 50, 2080, 106, 76, 77, 108, 2636, 2647, 2646, 3041, 2364, 487, 143, 6038, 6105, 8899, 8899,
- 8899, 3028, 8899, 3054, 8899, 3042, 3077, 8899, 3914, 3076, 3087, 3136, 197, 4642, 35, 1154, 32, 4746,
- 461, 27, 30, 31, 1092, 1081, 26, 28, 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 108, 2636, 2647, 2646,
- 3041, 6172, 1753, 8899, 8899, 8899, 8899, 8899, 8899, 3028, 8899, 3054, 8899, 3042, 3077, 273, 296,
- 3076, 3087, 3136, 197, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 652, 597, 598, 599, 644, 5274,
- 35, 1154, 32, 6875, 5000, 27, 30, 31, 1092, 1081, 374, 28, 5328, 35, 1154, 32, 5704, 5000, 27, 30, 31,
- 1092, 1081, 374, 28, 2539, 600, 597, 598, 599, 266, 8899, 8899, 746, 3201, 8899, 8899, 6473, 3159, 600,
- 597, 598, 599, 7342, 3914, 2978, 274, 264, 265, 3914, 6505, 8899, 600, 597, 598, 599, 8899, 8899, 8899,
- 1749, 1334, 330, 8899, 3963, 3413, 354, 1292, 356, 2184, 8899, 386, 349, 1250, 8899, 8899, 8899, 2935,
- 8899, 354, 1292, 356, 67, 367, 4667, 349, 1250, 600, 597, 598, 599, 3655, 601, 597, 598, 599, 6761,
- 4667, 986, 8899, 8899, 8899, 4394, 35, 1154, 32, 4746, 5318, 27, 30, 31, 1092, 1081, 26, 28, 2049, 296,
- 25, 23, 50, 2080, 106, 76, 77, 108, 2636, 2647, 2646, 3041, 3914, 4792, 35, 985, 424, 5590, 1875, 8899,
- 3028, 3914, 3054, 387, 3042, 3077, 271, 296, 3076, 3513, 379, 2557, 2320, 384, 3914, 3914, 341, 345,
- 796, 3686, 652, 597, 598, 599, 66, 600, 597, 598, 599, 341, 345, 796, 8899, 65, 8899, 308, 986, 8899,
- 1453, 8899, 1749, 35, 330, 8899, 8899, 2173, 64, 55, 324, 8899, 4033, 3033, 8899, 8899, 8899, 387, 266,
- 8899, 2173, 8899, 3914, 8899, 379, 2557, 2320, 384, 1442, 600, 597, 598, 599, 377, 269, 264, 265, 1010,
- 1817, 3223, 986, 3056, 35, 1154, 32, 5704, 7436, 27, 30, 31, 1092, 1081, 374, 28, 54, 1358, 35, 3286,
- 32, 6875, 5000, 27, 30, 31, 1092, 1081, 374, 28, 8899, 309, 4995, 8899, 8899, 276, 279, 282, 3924, 678,
- 3914, 3914, 8899, 8899, 600, 597, 598, 599, 8899, 55, 1860, 35, 1154, 32, 4028, 4952, 2891, 30, 31,
- 1092, 1081, 8899, 3866, 4887, 5065, 5075, 6377, 285, 2413, 354, 1292, 356, 101, 3038, 2522, 349, 1250,
- 8899, 3914, 2230, 378, 8899, 645, 354, 1292, 356, 2184, 588, 8899, 349, 1250, 4033, 8899, 5956, 8899,
- 601, 597, 598, 599, 8899, 367, 2015, 8899, 3989, 387, 8899, 600, 597, 598, 599, 2691, 379, 2557, 2320,
- 384, 8899, 1010, 5751, 3914, 8899, 589, 6023, 8899, 3127, 5318, 4394, 2332, 1154, 2444, 4746, 8899, 27,
- 30, 31, 1092, 1081, 26, 28, 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 84, 8899, 8899, 3512, 6520, 455,
- 3283, 4518, 35, 1154, 32, 4746, 8899, 27, 30, 31, 1092, 1081, 26, 28, 2049, 296, 25, 23, 50, 2080, 106,
- 76, 77, 108, 2636, 2647, 2646, 2785, 4394, 35, 1154, 32, 4746, 8899, 27, 30, 31, 1092, 1081, 26, 28,
- 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 108, 2636, 2647, 2646, 3041, 8899, 2784, 8899, 2169, 8899,
- 8899, 8899, 8899, 3499, 8899, 2858, 2808, 8899, 8899, 8899, 8899, 2956, 3406, 3978, 8899, 3914, 3783,
- 8899, 1404, 4394, 35, 1154, 32, 4746, 2839, 27, 30, 31, 1092, 1081, 26, 28, 2049, 296, 25, 23, 50, 2080,
- 106, 76, 77, 108, 2636, 2647, 2646, 3041, 193, 6306, 591, 8899, 8899, 8899, 8899, 8899, 3028, 8899,
- 3054, 8899, 3042, 3077, 8899, 8899, 3504, 4518, 35, 1154, 32, 4746, 8899, 27, 30, 31, 1092, 1081, 26,
- 28, 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 108, 2636, 2647, 2646, 2785, 4394, 35, 1154, 32, 4746,
- 8899, 27, 30, 31, 1092, 1081, 26, 28, 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 108, 2636, 2647, 2646,
- 3041, 8899, 2784, 8899, 170, 35, 985, 424, 8899, 3500, 3321, 2858, 2808, 8899, 8899, 8899, 8899, 3404,
- 4394, 35, 1154, 32, 4746, 8899, 27, 30, 31, 1092, 1081, 26, 28, 2049, 296, 25, 23, 50, 2080, 106, 76,
- 77, 108, 2636, 2647, 2646, 3041, 8899, 49, 8899, 8899, 8899, 8899, 8899, 8899, 3028, 8899, 3054, 46,
- 3042, 3502, 4518, 35, 1154, 32, 4746, 8899, 27, 30, 31, 1092, 1081, 26, 28, 2049, 296, 25, 23, 50, 2080,
- 106, 76, 77, 108, 2636, 2647, 2646, 2785, 4394, 35, 1154, 32, 4746, 8899, 27, 30, 31, 1092, 1081, 26,
- 28, 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 108, 2636, 2647, 2646, 3351, 8899, 2784, 362, 35, 985,
- 424, 8899, 8899, 8899, 8899, 2858, 3405, 4394, 35, 1154, 32, 4746, 8899, 27, 30, 31, 1092, 1081, 26, 28,
- 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 108, 2636, 2647, 2646, 3041, 8899, 8899, 8899, 8899, 8899,
- 308, 8899, 8899, 3028, 8899, 3054, 8899, 3503, 4719, 35, 1154, 32, 6875, 8899, 27, 30, 31, 1092, 1081,
- 374, 28, 8899, 2003, 35, 1154, 32, 5704, 5000, 27, 30, 31, 1092, 1081, 374, 28, 600, 597, 598, 599,
- 8899, 8899, 4518, 35, 1154, 32, 4746, 5847, 27, 30, 31, 1092, 1081, 26, 28, 2049, 296, 25, 23, 50, 2080,
- 106, 76, 77, 108, 2636, 2647, 2646, 2785, 8899, 8899, 2014, 8899, 3555, 8899, 354, 1292, 356, 2184,
- 8899, 8899, 350, 1250, 3978, 2448, 8899, 8899, 8899, 1404, 354, 1292, 356, 368, 8899, 8899, 349, 1250,
- 2784, 600, 597, 598, 599, 8899, 72, 8899, 8899, 3400, 1061, 8899, 4680, 387, 601, 597, 598, 599, 8899,
- 193, 381, 2557, 2320, 384, 4394, 35, 1154, 32, 4746, 8899, 27, 30, 31, 1092, 1081, 26, 28, 2049, 296,
- 25, 23, 50, 2080, 106, 76, 77, 108, 2636, 2647, 2646, 3041, 8899, 8899, 1596, 35, 985, 424, 8899, 1431,
- 3028, 8899, 3498, 3148, 35, 1154, 32, 5704, 5000, 27, 30, 31, 1092, 1081, 374, 28, 8899, 8899, 8899,
- 8899, 8899, 4898, 35, 553, 8899, 8899, 600, 597, 598, 599, 600, 597, 598, 599, 271, 296, 49, 4179, 8899,
- 3489, 3322, 6505, 8899, 8899, 1404, 8899, 1509, 1125, 652, 597, 598, 599, 3571, 35, 1154, 32, 7550,
- 8899, 27, 30, 31, 1092, 1081, 56, 28, 8899, 8899, 8899, 1879, 354, 1292, 356, 189, 8899, 8899, 349,
- 1250, 8899, 55, 8899, 2885, 273, 296, 4028, 266, 8899, 234, 4667, 8899, 8899, 746, 3201, 8899, 8899,
- 8899, 652, 597, 598, 599, 8899, 269, 264, 265, 8899, 4518, 35, 1154, 32, 4746, 378, 27, 30, 31, 1092,
- 1081, 26, 28, 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 108, 2636, 2647, 2646, 2785, 266, 3989, 8899,
- 8899, 1995, 8899, 8899, 8899, 276, 279, 282, 3924, 678, 8899, 8899, 8899, 274, 264, 265, 8899, 8899,
- 3129, 8899, 8899, 8899, 342, 345, 796, 3401, 8899, 8899, 652, 597, 598, 599, 4820, 6090, 6382, 6536,
- 6853, 4518, 35, 1154, 32, 4746, 1490, 27, 30, 31, 1092, 1081, 26, 28, 2049, 296, 25, 23, 50, 2080, 106,
- 76, 77, 108, 2636, 2647, 2646, 2785, 266, 8899, 1392, 35, 3286, 32, 5704, 5000, 27, 30, 31, 1092, 1081,
- 374, 28, 803, 278, 264, 265, 562, 563, 567, 60, 8899, 8899, 8899, 8899, 8899, 3403, 3562, 597, 598, 599,
- 8899, 8899, 8899, 8899, 8899, 8899, 8899, 5052, 8899, 8899, 324, 8899, 554, 35, 2409, 6121, 8899, 2440,
- 6721, 8899, 8899, 6567, 3116, 35, 3286, 32, 5704, 5000, 27, 30, 31, 1092, 1081, 374, 28, 354, 1292, 356,
- 2551, 3223, 8899, 349, 1250, 8899, 600, 597, 598, 599, 8899, 600, 597, 598, 599, 2015, 49, 5240, 8899,
- 8899, 8899, 8899, 5052, 8899, 8899, 8899, 1509, 842, 8899, 8899, 8899, 3195, 35, 3286, 32, 5704, 5000,
- 27, 30, 31, 1092, 1081, 374, 28, 2010, 8899, 8899, 8899, 2184, 2787, 354, 1292, 356, 8899, 2103, 8899,
- 349, 1250, 3562, 597, 598, 599, 367, 2867, 8899, 7257, 455, 3283, 2015, 5052, 8899, 652, 597, 598, 599,
- 8899, 600, 597, 598, 599, 289, 652, 597, 598, 599, 673, 6421, 5981, 8899, 8899, 600, 597, 598, 599,
- 8899, 3978, 8899, 354, 1292, 356, 1404, 5240, 8899, 349, 1250, 4190, 8899, 266, 8899, 8899, 8899, 262,
- 8899, 189, 8899, 2015, 1556, 266, 7652, 455, 3283, 2736, 8899, 281, 264, 265, 8899, 213, 193, 237, 249,
- 739, 364, 284, 264, 265, 202, 236, 246, 247, 248, 250, 651, 5247, 35, 1154, 32, 5704, 7436, 27, 30, 31,
- 1092, 1081, 374, 28, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 7257, 455, 3283, 8899, 8899,
- 201, 216, 200, 203, 204, 205, 206, 207, 4394, 35, 1154, 32, 4746, 8899, 27, 30, 31, 1092, 1081, 26, 28,
- 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 108, 2636, 2647, 2646, 3352, 8899, 8899, 8899, 3787, 354,
- 1292, 356, 8899, 8899, 8899, 349, 1250, 8899, 8899, 2512, 8899, 8899, 4146, 35, 1154, 32, 4746, 3277,
- 27, 30, 31, 1092, 1081, 26, 28, 2049, 296, 25, 23, 50, 2080, 648, 76, 77, 387, 3651, 601, 597, 598, 599,
- 6761, 379, 2557, 2320, 384, 4394, 35, 1154, 32, 4746, 3276, 27, 30, 31, 1092, 1081, 26, 28, 2049, 296,
- 25, 23, 50, 2080, 106, 76, 77, 108, 2636, 2647, 2646, 3355, 1, 55, 8899, 8899, 8899, 673, 4028, 8899,
- 5303, 8899, 3492, 8899, 8899, 8899, 8899, 1559, 35, 1154, 32, 6875, 8899, 27, 30, 31, 1092, 1081, 374,
- 28, 8899, 8899, 8899, 262, 378, 189, 8899, 8899, 1556, 600, 597, 598, 599, 2736, 600, 597, 598, 599,
- 8899, 213, 5240, 237, 249, 739, 8899, 5240, 8899, 3989, 202, 236, 246, 247, 248, 250, 651, 8899, 387,
- 8899, 8899, 8899, 8899, 8899, 8899, 379, 2557, 2320, 384, 3130, 8899, 401, 8899, 3139, 577, 354, 1292,
- 356, 2184, 8899, 8899, 352, 1250, 8899, 201, 217, 200, 203, 204, 205, 206, 207, 368, 3577, 8899, 8899,
- 214, 4394, 35, 1154, 32, 4746, 8899, 27, 30, 31, 1092, 1081, 26, 28, 2049, 296, 25, 23, 50, 2080, 106,
- 76, 77, 108, 2636, 2647, 2646, 3453, 4394, 35, 1154, 32, 4746, 8899, 27, 30, 31, 1092, 1081, 26, 28,
- 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 108, 2636, 2647, 2646, 3454, 4394, 35, 1154, 32, 4746, 8899,
- 27, 30, 31, 1092, 1081, 26, 28, 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 108, 2636, 2647, 2646, 3455,
- 4394, 35, 1154, 32, 4746, 8899, 27, 30, 31, 1092, 1081, 26, 28, 2049, 296, 25, 23, 50, 2080, 106, 76,
- 77, 108, 2636, 2647, 2646, 3458, 4394, 35, 1154, 32, 4746, 8899, 27, 30, 31, 1092, 1081, 26, 28, 2049,
- 296, 25, 23, 50, 2080, 106, 76, 77, 108, 2636, 2647, 2646, 3460, 4394, 35, 1154, 32, 4746, 8899, 27, 30,
- 31, 1092, 1081, 26, 28, 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 108, 2636, 2647, 2646, 3476, 1724, 35,
- 1154, 32, 5704, 7374, 27, 30, 31, 1092, 1081, 374, 28, 8899, 8899, 8899, 8899, 170, 35, 985, 424, 55,
- 75, 35, 985, 424, 1404, 4394, 35, 1154, 32, 4746, 386, 27, 30, 31, 1092, 1081, 26, 28, 2049, 296, 25,
- 23, 50, 2080, 106, 76, 77, 108, 2636, 2647, 2646, 3788, 189, 8899, 8899, 8899, 8899, 49, 8899, 8899,
- 1724, 8899, 49, 8899, 354, 1292, 356, 1509, 1066, 8899, 349, 1250, 1509, 1409, 8899, 8899, 8899, 4208,
- 35, 1154, 32, 4746, 1061, 27, 30, 31, 1092, 1081, 26, 28, 2049, 296, 25, 23, 50, 2080, 637, 76, 77, 387,
- 8899, 8899, 799, 8899, 8899, 8899, 379, 2557, 2320, 384, 3755, 35, 1154, 32, 4746, 3686, 27, 30, 31,
- 1092, 1081, 26, 28, 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 107, 385, 75, 35, 985, 424, 673, 8899,
- 8899, 3823, 35, 1154, 32, 4746, 2248, 27, 30, 31, 1092, 1081, 26, 28, 2049, 296, 25, 23, 50, 2080, 106,
- 76, 77, 104, 262, 3305, 189, 8899, 55, 1556, 673, 8899, 8899, 4028, 2736, 8899, 49, 8899, 8899, 8899,
- 213, 3074, 237, 249, 739, 8899, 1509, 1082, 8899, 202, 236, 246, 247, 248, 250, 651, 378, 8899, 189,
- 378, 481, 1556, 8899, 8899, 8899, 673, 2411, 8899, 601, 597, 598, 599, 3817, 4043, 672, 2795, 1231, 673,
- 1404, 3989, 8899, 2365, 3989, 201, 3450, 200, 203, 204, 205, 206, 207, 262, 8899, 189, 8899, 8899, 1556,
- 8899, 8899, 2128, 8899, 2736, 3689, 378, 8899, 189, 189, 213, 8899, 237, 249, 739, 8899, 221, 195, 8899,
- 202, 236, 246, 247, 248, 250, 651, 8899, 8899, 8899, 7316, 577, 55, 3574, 8899, 8899, 673, 673, 1404,
- 8899, 8899, 3340, 35, 1154, 32, 5704, 8899, 27, 30, 31, 1092, 1081, 374, 28, 201, 211, 200, 203, 204,
- 205, 206, 207, 262, 378, 189, 189, 189, 1556, 601, 597, 598, 599, 2736, 3243, 3509, 8899, 8899, 8899,
- 213, 3305, 237, 249, 739, 8899, 673, 8899, 3989, 202, 236, 246, 247, 248, 250, 651, 8899, 8899, 8899,
- 55, 673, 55, 8899, 223, 1404, 673, 1404, 8899, 3194, 354, 1292, 356, 378, 55, 189, 663, 1250, 1556,
- 1404, 8899, 8899, 8899, 2411, 201, 209, 200, 203, 204, 205, 206, 207, 262, 189, 189, 189, 3989, 1556,
- 2365, 8899, 8899, 3409, 2736, 3948, 3228, 8899, 8899, 189, 213, 4028, 237, 249, 739, 2144, 8899, 4027,
- 2998, 202, 236, 246, 247, 248, 250, 651, 8899, 8899, 8899, 8899, 769, 55, 8899, 8899, 8899, 673, 4028,
- 5164, 8899, 8899, 3373, 3507, 652, 597, 598, 599, 2440, 8899, 8899, 8899, 6567, 4339, 2933, 201, 643,
- 200, 203, 204, 205, 206, 207, 262, 378, 189, 8899, 8899, 1556, 601, 597, 598, 599, 2736, 8899, 600, 597,
- 598, 599, 213, 266, 237, 249, 739, 2233, 8899, 5240, 3989, 202, 236, 246, 247, 248, 250, 651, 8899, 287,
- 264, 265, 865, 55, 8899, 8899, 8899, 673, 1404, 8899, 545, 8899, 3609, 8899, 652, 597, 598, 599, 2504,
- 8899, 2184, 8899, 6567, 541, 8899, 201, 210, 200, 203, 204, 205, 206, 207, 262, 6054, 189, 189, 8899,
- 1556, 601, 597, 598, 599, 2736, 4036, 600, 597, 598, 599, 213, 266, 237, 249, 739, 2597, 8899, 5240,
- 8899, 202, 236, 246, 247, 248, 250, 651, 8899, 647, 264, 265, 961, 55, 538, 540, 8899, 673, 1404, 8899,
- 8899, 8899, 8899, 8899, 652, 597, 598, 599, 2331, 8899, 2184, 8899, 8899, 8899, 8899, 201, 220, 200,
- 203, 204, 205, 206, 207, 262, 6054, 189, 189, 55, 1556, 3185, 8899, 8899, 1404, 2736, 4049, 600, 597,
- 598, 599, 213, 266, 237, 249, 739, 2100, 94, 5751, 8899, 202, 236, 246, 247, 248, 250, 651, 8899, 278,
- 264, 265, 1057, 189, 8899, 8899, 8899, 673, 8899, 8899, 8899, 2687, 8899, 8899, 601, 597, 598, 599,
- 1971, 8899, 8899, 8899, 6567, 8899, 8899, 201, 3621, 200, 203, 204, 205, 206, 207, 262, 3305, 189, 8899,
- 8899, 1556, 673, 8899, 8899, 8899, 2736, 8899, 600, 597, 598, 599, 213, 8899, 237, 249, 739, 8899, 96,
- 5240, 8899, 202, 236, 246, 247, 248, 250, 651, 378, 8899, 189, 8899, 1153, 1556, 8899, 8899, 8899, 673,
- 2411, 8899, 8899, 8899, 8899, 55, 3305, 8899, 2236, 55, 673, 673, 2184, 3989, 4028, 2365, 8899, 201,
- 225, 200, 203, 204, 205, 206, 207, 262, 368, 189, 8899, 8899, 1556, 8899, 8899, 3047, 8899, 2736, 378,
- 378, 189, 189, 378, 213, 1556, 237, 249, 739, 221, 2411, 8899, 8899, 202, 236, 246, 247, 248, 250, 651,
- 8899, 8899, 7316, 3989, 1249, 2365, 3989, 8899, 8899, 673, 8899, 8899, 8899, 55, 8899, 55, 3305, 55,
- 4028, 8899, 673, 673, 1404, 3096, 8899, 8899, 543, 201, 219, 200, 203, 204, 205, 206, 207, 262, 8899,
- 189, 3978, 8899, 1556, 8899, 8899, 1404, 378, 2736, 378, 378, 189, 189, 189, 213, 1556, 237, 249, 739,
- 221, 2411, 4152, 8899, 202, 236, 246, 247, 248, 250, 651, 3989, 8899, 7316, 3989, 193, 2365, 3789, 8899,
- 4845, 35, 985, 424, 5590, 2688, 8899, 267, 35, 985, 424, 8899, 596, 272, 296, 3145, 8899, 8899, 8899,
- 201, 228, 200, 203, 204, 205, 206, 207, 652, 597, 598, 599, 8899, 652, 597, 598, 599, 55, 8899, 8899,
- 8899, 8899, 673, 308, 8899, 1559, 35, 1154, 32, 6875, 49, 27, 30, 31, 1092, 1081, 374, 28, 8899, 8899,
- 1509, 47, 8899, 8899, 266, 8899, 3790, 8899, 378, 266, 189, 8899, 600, 597, 598, 599, 8899, 4050, 221,
- 8899, 270, 264, 265, 5847, 8899, 281, 264, 265, 8899, 8899, 1085, 7316, 8899, 8899, 8899, 8899, 8899,
- 5287, 35, 1154, 32, 5704, 5000, 27, 30, 31, 1092, 1081, 374, 28, 8899, 354, 1292, 356, 2184, 309, 8899,
- 350, 1250, 277, 280, 283, 3924, 678, 601, 597, 598, 599, 368, 3148, 35, 1154, 32, 5704, 5000, 27, 30,
- 31, 1092, 1081, 374, 28, 8899, 8899, 3416, 8899, 8899, 8899, 2440, 2058, 8899, 286, 6567, 8899, 4028,
- 8899, 601, 597, 598, 599, 2779, 8899, 3833, 354, 1292, 356, 646, 8899, 8899, 349, 1250, 600, 597, 598,
- 599, 600, 597, 598, 599, 8899, 262, 5070, 6048, 8899, 8899, 8899, 5240, 652, 597, 598, 599, 170, 35,
- 985, 424, 354, 1292, 356, 239, 249, 739, 349, 1250, 8899, 8899, 8899, 238, 246, 247, 248, 250, 651,
- 8899, 5070, 8899, 8899, 8899, 2184, 8899, 8899, 8899, 8899, 8899, 266, 8899, 8899, 8899, 8899, 8899,
- 8899, 8899, 367, 8899, 49, 240, 242, 244, 720, 8899, 284, 264, 265, 8899, 1509, 7626, 8899, 8899, 251,
- 241, 243, 4394, 35, 1154, 32, 4746, 6188, 27, 30, 31, 1092, 1081, 26, 28, 2049, 296, 25, 23, 50, 2080,
- 106, 76, 77, 110, 13, 8899, 6956, 4394, 35, 1154, 32, 4746, 8899, 27, 30, 31, 1092, 1081, 26, 28, 2049,
- 296, 25, 23, 50, 2080, 106, 76, 77, 109, 4394, 35, 1154, 32, 4746, 8899, 27, 30, 31, 1092, 1081, 26, 28,
- 2049, 296, 25, 23, 50, 2080, 106, 76, 77, 105, 4270, 35, 1154, 32, 4746, 8899, 27, 30, 31, 1092, 1081,
- 26, 28, 2049, 296, 25, 23, 50, 2080, 635, 76, 77, 8899, 2870, 8899, 8899, 8899, 4332, 35, 1154, 32,
- 4746, 705, 27, 30, 31, 1092, 1081, 26, 28, 2049, 296, 25, 23, 50, 2080, 86, 76, 77, 2279, 652, 597, 598,
- 599, 4028, 8899, 8899, 8899, 8899, 8899, 8899, 3978, 8899, 2440, 8899, 2370, 1404, 6567, 8899, 8899,
- 4028, 8899, 8899, 8899, 8899, 8899, 458, 35, 985, 424, 262, 8899, 8899, 8899, 8899, 8899, 266, 8899,
- 8899, 8899, 600, 597, 598, 599, 193, 8899, 262, 8899, 239, 249, 739, 5240, 569, 264, 265, 8899, 238,
- 246, 247, 248, 250, 651, 8899, 8899, 239, 249, 739, 8899, 49, 8899, 8899, 8899, 238, 246, 247, 248, 250,
- 651, 1509, 47, 8899, 8899, 2184, 8899, 240, 242, 244, 720, 8899, 8899, 8899, 8899, 8899, 8899, 8899,
- 8899, 367, 251, 241, 243, 240, 242, 244, 720, 8899, 4951, 35, 553, 3557, 8899, 8899, 8899, 8899, 251,
- 241, 243, 2461, 8899, 272, 296, 7423, 4028, 8899, 1223, 4095, 6956, 8899, 75, 35, 985, 424, 8899, 652,
- 597, 598, 599, 8899, 8899, 8899, 2630, 8899, 6956, 4456, 35, 1154, 32, 4746, 262, 27, 30, 31, 1092,
- 1081, 26, 28, 2049, 296, 25, 23, 50, 2080, 3238, 76, 77, 8899, 239, 249, 739, 266, 49, 8899, 8899, 8899,
- 238, 246, 247, 248, 250, 651, 1509, 5313, 8899, 8899, 8899, 270, 264, 265, 2188, 2884, 8899, 8899, 8899,
- 4028, 4028, 8899, 8899, 8899, 8899, 8899, 8899, 3978, 240, 242, 244, 720, 1404, 8899, 8899, 1928, 1231,
- 8899, 8899, 3685, 4028, 251, 241, 243, 4028, 262, 5164, 8899, 8899, 8899, 277, 280, 283, 3924, 678,
- 8899, 8899, 3228, 8899, 8899, 193, 8899, 4028, 239, 249, 739, 262, 2728, 8899, 6956, 5164, 238, 246,
- 247, 248, 250, 651, 8899, 3489, 8899, 8899, 8899, 8899, 673, 239, 249, 739, 8899, 5164, 8899, 8899,
- 8899, 238, 246, 247, 248, 250, 651, 8899, 240, 242, 244, 720, 8899, 8899, 2552, 8899, 8899, 8899, 2562,
- 4028, 189, 580, 241, 243, 8899, 8899, 8899, 8899, 2736, 240, 242, 244, 720, 8899, 213, 2643, 395, 562,
- 563, 568, 4028, 8899, 252, 241, 243, 262, 8899, 8899, 8899, 4151, 8899, 8899, 3943, 3180, 3183, 8899,
- 8899, 8899, 8899, 8899, 541, 8899, 8899, 239, 249, 739, 262, 8899, 8899, 8899, 8899, 238, 246, 247, 248,
- 250, 651, 229, 541, 8899, 8899, 8899, 8899, 8899, 239, 249, 739, 8899, 170, 35, 985, 424, 238, 246, 247,
- 248, 250, 651, 2734, 240, 242, 244, 720, 4028, 8899, 8899, 8899, 8899, 538, 540, 8899, 8899, 671, 241,
- 243, 8899, 8899, 8899, 8899, 2825, 240, 242, 244, 720, 4028, 8899, 539, 540, 8899, 262, 49, 8899, 8899,
- 670, 241, 243, 8899, 8899, 8899, 8899, 1509, 1761, 8899, 3616, 8899, 8899, 8899, 239, 249, 739, 262,
- 8899, 8899, 8899, 8899, 238, 246, 247, 248, 250, 651, 1676, 8899, 8899, 8899, 7100, 4028, 8899, 239,
- 249, 739, 8899, 170, 35, 985, 424, 238, 246, 247, 248, 250, 651, 2916, 240, 242, 244, 720, 4028, 8899,
- 8899, 8899, 8899, 262, 8899, 8899, 8899, 669, 241, 243, 5782, 230, 8899, 8899, 3007, 240, 242, 244, 720,
- 4028, 8899, 2686, 443, 7329, 262, 49, 8899, 8899, 581, 241, 243, 8899, 8899, 8899, 8899, 1509, 1077,
- 8899, 8899, 2867, 8899, 8899, 239, 249, 739, 262, 8899, 8899, 8899, 8899, 238, 246, 247, 248, 250, 651,
- 3782, 444, 445, 446, 720, 8899, 8899, 239, 249, 739, 600, 597, 598, 599, 8899, 238, 246, 247, 248, 250,
- 651, 5240, 240, 242, 244, 720, 8899, 600, 597, 598, 599, 8899, 8899, 8899, 8899, 340, 241, 243, 6157,
- 2561, 8899, 8899, 8899, 240, 242, 244, 720, 8899, 8899, 8899, 8899, 8899, 2312, 8899, 8899, 8899, 535,
- 241, 243, 2963, 35, 1154, 32, 5704, 5000, 27, 30, 31, 1092, 1081, 374, 28, 1487, 35, 1154, 32, 5704,
- 4128, 27, 30, 31, 1092, 1081, 374, 28, 2351, 8899, 8899, 8899, 6567, 4028, 8899, 8899, 8899, 8899, 8899,
- 8899, 8899, 8899, 8899, 8899, 8899, 1802, 8899, 447, 449, 7100, 4028, 8899, 8899, 8899, 8899, 600, 597,
- 598, 599, 5164, 2351, 8899, 439, 8899, 6567, 4028, 5240, 8899, 354, 1292, 356, 8899, 8899, 8899, 349,
- 1250, 262, 738, 8899, 8899, 7359, 351, 1164, 356, 8899, 8899, 3617, 600, 597, 598, 599, 5164, 8899,
- 8899, 2686, 443, 7329, 2184, 5240, 8899, 8899, 8899, 458, 35, 985, 424, 8899, 8899, 8899, 3446, 8899,
- 367, 8899, 6567, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 2440, 8899, 8899, 8899, 6567, 8899,
- 8899, 2184, 444, 445, 446, 720, 8899, 7423, 600, 597, 598, 599, 395, 8899, 8899, 367, 49, 8899, 8899,
- 5240, 8899, 600, 597, 598, 599, 8899, 1509, 47, 3732, 3180, 3183, 8899, 5240, 8899, 8899, 8899, 8899,
- 8899, 8899, 4605, 2561, 8899, 3305, 8899, 395, 8899, 8899, 673, 8899, 8899, 2184, 75, 35, 985, 424,
- 8899, 1063, 8899, 8899, 8899, 3732, 3180, 3183, 2184, 368, 651, 35, 985, 424, 8899, 706, 8899, 8899,
- 378, 8899, 189, 8899, 367, 1556, 8899, 8899, 8899, 387, 2411, 1718, 35, 985, 424, 8899, 381, 2557, 2320,
- 384, 49, 8899, 8899, 3989, 8899, 2365, 8899, 8899, 4605, 8899, 1509, 47, 447, 450, 49, 458, 35, 985,
- 424, 75, 35, 985, 424, 3786, 1509, 47, 8899, 75, 35, 985, 424, 8899, 8899, 49, 75, 35, 985, 424, 8899,
- 8899, 788, 8899, 8899, 1509, 2315, 8899, 75, 35, 985, 424, 75, 35, 985, 424, 1274, 2230, 8899, 49, 8899,
- 8899, 8899, 49, 8899, 8899, 8899, 8899, 8899, 1509, 2316, 49, 8899, 1509, 47, 799, 8899, 8899, 49, 2528,
- 8899, 1509, 47, 8899, 600, 597, 598, 599, 1509, 47, 49, 8899, 8899, 3077, 49, 5751, 8899, 2867, 8899,
- 4555, 1509, 47, 8899, 1294, 1509, 47, 600, 597, 598, 599, 8899, 1725, 170, 35, 985, 424, 8899, 5751,
- 2640, 3786, 600, 597, 598, 599, 600, 597, 598, 599, 4109, 8899, 2750, 5240, 8899, 4028, 3360, 5240,
- 8899, 8899, 170, 35, 985, 424, 8899, 8899, 8899, 8899, 600, 597, 598, 599, 8899, 8899, 8899, 8899, 49,
- 8899, 8899, 6048, 8899, 378, 592, 8899, 3139, 8899, 1509, 1125, 2485, 8899, 8899, 8899, 8899, 8899,
- 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 49, 8899, 3989, 8899, 8899, 8899, 8899, 8899, 8899,
- 2314, 1509, 1998, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 595, 8899, 8899, 8899,
- 8899, 8899, 8899, 8899, 8899, 2325, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899,
- 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899,
- 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899,
- 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899,
- 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899,
- 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899,
- 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899,
- 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899,
- 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 4340,
- 8899, 0, 1, 263, 813, 0, 537, 6935, 0, 1, 263, 0, 39, 8914, 0, 39, 8913, 0, 1, 4619, 0, 1813, 1, 0, 39,
- 1, 8914, 0, 39, 1, 8913, 0, 1, 1156, 0, 1, 826, 0, 263, 253, 0, 9167, 257, 0, 9166, 257, 0, 848, 257, 0,
- 923, 257, 0, 957, 257, 0, 9567, 257, 0, 9272, 257, 0, 9271, 257, 0, 9194, 257, 0, 9193, 257, 0, 9192,
- 257, 0, 9191, 257, 0, 9190, 257, 0, 9189, 257, 0, 9188, 257, 0, 9187, 257, 0, 9167, 258, 0, 9166, 258,
- 0, 848, 258, 0, 923, 258, 0, 957, 258, 0, 9567, 258, 0, 9272, 258, 0, 9271, 258, 0, 9194, 258, 0, 9193,
- 258, 0, 9192, 258, 0, 9191, 258, 0, 9190, 258, 0, 9189, 258, 0, 9188, 258, 0, 9187, 258, 0, 9167, 259,
- 0, 9166, 259, 0, 848, 259, 0, 923, 259, 0, 957, 259, 0, 9567, 259, 0, 9272, 259, 0, 9271, 259, 0, 9194,
- 259, 0, 9193, 259, 0, 9192, 259, 0, 9191, 259, 0, 9190, 259, 0, 9189, 259, 0, 9188, 259, 0, 9187, 259,
- 0, 957, 430, 0, 923, 430, 0, 848, 430, 0, 318, 430, 0, 9167, 260, 0, 9166, 260, 0, 848, 260, 0, 923,
- 260, 0, 957, 260, 0, 9567, 260, 0, 9272, 260, 0, 9271, 260, 0, 9194, 260, 0, 9193, 260, 0, 9192, 260, 0,
- 9191, 260, 0, 9190, 260, 0, 9189, 260, 0, 9188, 260, 0, 9187, 260, 0, 318, 323, 0, 9167, 261, 0, 9166,
- 261, 0, 848, 261, 0, 923, 261, 0, 957, 261, 0, 9567, 261, 0, 9272, 261, 0, 9271, 261, 0, 9194, 261, 0,
- 9193, 261, 0, 9192, 261, 0, 9191, 261, 0, 9190, 261, 0, 9189, 261, 0, 9188, 261, 0, 9187, 261, 0, 1278,
- 423, 0, 8914 };
- }
-
- public interface BaseAction1 {
- public final static char baseAction1[] = { 48, 0, 8913, 48, 0, 9167, 650, 0, 9166, 650, 0, 848, 650, 0, 923,
- 650, 0, 957, 650, 0, 9567, 650, 0, 9272, 650, 0, 9271, 650, 0, 9194, 650, 0, 9193, 650, 0, 9192, 650, 0,
- 9191, 650, 0, 9190, 650, 0, 9189, 650, 0, 9188, 650, 0, 9187, 650, 0, 9167, 275, 0, 9166, 275, 0, 848,
- 275, 0, 923, 275, 0, 957, 275, 0, 9567, 275, 0, 9272, 275, 0, 9271, 275, 0, 9194, 275, 0, 9193, 275, 0,
- 9192, 275, 0, 9191, 275, 0, 9190, 275, 0, 9189, 275, 0, 9188, 275, 0, 9187, 275, 0, 9206, 275, 0, 9205,
- 275, 0, 9204, 275, 0, 9203, 275, 0, 9202, 275, 0, 9201, 275, 0, 9200, 275, 0, 9199, 275, 0, 9198, 275,
- 0, 9197, 275, 0, 9196, 275, 0, 9566, 275, 0, 9565, 275, 0, 39, 275, 8914, 0, 39, 275, 8913, 0, 8937,
- 275, 0, 1, 957, 0, 1, 923, 0, 1, 848, 0, 1, 366, 0, 38, 826, 0, 38, 8914, 0, 38, 8913, 0, 490, 1713, 0,
- 476, 2079, 0, 1278, 29, 0, 8911, 1, 0, 957, 660, 0, 923, 660, 0, 848, 660, 0, 664, 660, 0, 664, 659, 0,
- 8962, 75, 0, 8961, 75, 0, 1834, 75, 0, 4804, 75, 0, 4679, 75, 0, 5589, 75, 0, 2088, 353, 0, 1, 662, 0,
- 1, 480, 0, 494, 1348, 0, 493, 1669, 0, 35, 33, 0, 47, 37, 0, 537, 2602, 0, 8937, 1, 263, 0, 39, 1, 263,
- 0, 263, 452, 0, 1, 1563, 0, 1, 9206, 0, 1, 9205, 0, 1, 9204, 0, 1, 9203, 0, 1, 9202, 0, 1, 9201, 0, 1,
- 9200, 0, 1, 9199, 0, 1, 9198, 0, 1, 9197, 0, 1, 9196, 0, 1, 9566, 0, 1, 9565, 0, 8914, 37, 0, 8913, 37,
- 0, 43, 8935, 0, 43, 37, 0, 3549, 91, 0, 32, 34, 0, 8907, 1, 0, 39, 826, 0, 957, 662, 0, 923, 662, 0,
- 848, 662, 0, 8911, 419, 0, 8910, 419, 0, 957, 366, 0, 923, 366, 0, 848, 366, 0, 1, 1435, 0, 1, 1486, 0,
- 263, 254, 0, 8909, 441, 0, 8908, 441, 0, 263, 451, 0, 1, 5647, 0, 1, 6698, 0, 1, 6725, 0, 1, 2208, 0, 1,
- 2287, 0, 1, 2366, 0, 1, 2445, 0, 1, 2524, 0, 1, 2603, 0, 1, 3323, 0, 1, 4236, 0, 1, 8921, 0, 1, 8920, 0,
- 1, 8919, 0, 1, 8918, 0, 1, 8917, 0, 1, 8916, 0, 1, 8915, 0, 1, 1572, 0, 1, 1833, 0, 1, 1970, 0, 1, 1996,
- 0, 1, 2026, 0, 1, 3520, 0, 39, 1, 0, 8911, 649, 419, 0, 8910, 649, 419, 0, 1, 263, 3227, 0, 8908, 263,
- 0, 3228, 263, 0, 8905, 1, 0, 8904, 1, 0, 5514, 126, 0, 271, 4337, 0, 424, 32, 0, 423, 29, 0, 957, 481,
- 0, 923, 481, 0, 848, 481, 0, 8937, 481, 0, 366, 481, 0, 39, 481, 0, 848, 570, 0, 923, 570, 0, 957, 570,
- 0, 848, 571, 0, 923, 571, 0, 957, 571, 0, 848, 572, 0, 923, 572, 0, 957, 572, 0, 848, 573, 0, 923, 573,
- 0, 957, 573, 0, 848, 574, 0, 923, 574, 0, 957, 574, 0, 275, 8914, 0, 275, 8913, 0, 8935, 45, 0, 37, 45,
- 0, 8911, 638, 419, 0, 8910, 638, 419, 0, 8911, 636, 419, 0, 8910, 636, 419, 0, 8911, 87, 419, 0, 8910,
- 87, 419, 0, 1, 92, 0, 3415, 263, 0, 10, 12, 0, 8937, 1, 0, 648, 637, 0, 9567, 371, 0, 9272, 371, 0,
- 9271, 371, 0, 6140, 100, 0, 8, 10, 12, 0, 3571, 227, 0, 5514, 128, 0, 5514, 127, 0, 8914, 2, 37, 0,
- 8913, 2, 37, 0, 8914, 36, 0, 8913, 36, 0, 957, 657, 0, 923, 657, 0, 848, 657, 0, 957, 656, 0, 923, 656,
- 0, 848, 656, 0, 600, 601, 0, 6948, 103, 0, 3838, 99, 0, 957, 95, 0, 923, 95, 0, 848, 95, 0, 8937, 95, 0,
- 366, 95, 0, 39, 95, 0, 8911, 649, 638, 419, 0, 649, 638, 0, 35, 73, 0, 957, 657, 658, 0, 923, 657, 658,
- 0, 848, 657, 658, 0, 657, 658, 0, 313, 6340, 0, 3622, 419, 0, 218, 6239, 0, 8, 12, 0 };
- }
-
- public final static char baseAction[] = new char[BaseAction0.baseAction0.length + BaseAction1.baseAction1.length];
- {
- int index = 0;
- System.arraycopy(BaseAction0.baseAction0, 0, baseAction, index, BaseAction0.baseAction0.length);
- index += BaseAction0.baseAction0.length;
- System.arraycopy(BaseAction1.baseAction1, 0, baseAction, index, BaseAction1.baseAction1.length);
- }
-
- @Override
- public final int baseAction(int index) {
- return baseAction[index];
- }
-
- public final static char lhs[] = baseAction;
-
- @Override
- public final int lhs(int index) {
- return lhs[index];
- }
-
- public interface TermCheck {
- public final static char termCheck[] = { 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 0, 67, 68, 69, 4, 71,
- 72, 0, 0, 1, 2, 77, 78, 79, 0, 81, 82, 10, 0, 85, 86, 87, 88, 89, 10, 91, 92, 93, 94, 95, 0, 1, 2, 3, 4,
- 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 55, 56, 57,
- 58, 59, 60, 61, 62, 63, 64, 65, 0, 67, 68, 69, 0, 71, 72, 0, 1, 2, 0, 77, 78, 79, 4, 81, 82, 106, 107,
- 85, 86, 87, 88, 89, 0, 91, 92, 93, 94, 95, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
- 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
- 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 80, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 0, 67, 68, 69,
- 76, 71, 72, 0, 0, 1, 2, 77, 78, 79, 0, 81, 82, 10, 0, 85, 86, 87, 88, 89, 0, 91, 92, 93, 94, 95, 0, 1,
- 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
- 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 55,
- 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 82, 67, 68, 69, 0, 71, 72, 0, 1, 2, 0, 77, 78, 79, 10, 8, 82,
- 106, 107, 85, 86, 87, 88, 89, 0, 91, 92, 93, 94, 95, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
- 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 12,
- 67, 68, 69, 76, 71, 72, 0, 1, 2, 0, 77, 78, 79, 106, 107, 82, 0, 0, 85, 86, 87, 88, 89, 0, 91, 92, 93,
- 94, 95, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
- 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
- 52, 53, 66, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 79, 67, 68, 69, 76, 71, 72, 0, 1, 2, 0, 77, 78,
- 79, 0, 0, 82, 3, 3, 85, 86, 87, 88, 89, 0, 91, 92, 93, 94, 95, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
- 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 70, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
- 65, 72, 67, 68, 69, 0, 71, 72, 3, 0, 1, 2, 77, 78, 79, 0, 1, 82, 103, 0, 85, 86, 87, 88, 89, 10, 91, 92,
- 93, 94, 95, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
- 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
- 51, 52, 53, 80, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 0, 67, 68, 69, 0, 71, 72, 0, 1, 2, 0, 77,
- 78, 79, 0, 0, 82, 3, 0, 85, 86, 87, 88, 89, 102, 91, 92, 93, 94, 95, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
- 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
- 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 70, 55, 56, 57, 58, 59, 60, 61, 62,
- 63, 64, 65, 0, 67, 68, 69, 0, 71, 72, 0, 100, 101, 3, 77, 78, 79, 100, 101, 82, 0, 99, 85, 86, 87, 88,
- 89, 105, 91, 92, 93, 94, 95, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
- 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
- 47, 48, 49, 50, 51, 52, 53, 0, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 12, 67, 68, 69, 0, 71, 72, 3,
- 100, 101, 0, 77, 78, 79, 0, 0, 82, 3, 0, 85, 86, 87, 88, 89, 103, 91, 92, 93, 94, 95, 0, 1, 2, 3, 4, 5,
- 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
- 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 55, 56, 57, 58,
- 59, 60, 61, 62, 63, 64, 65, 0, 67, 68, 69, 0, 71, 72, 0, 0, 0, 3, 77, 78, 79, 0, 0, 82, 3, 99, 85, 86,
- 87, 88, 89, 105, 91, 92, 93, 94, 95, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 76, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 0, 67, 68, 69, 0,
- 71, 72, 3, 100, 101, 98, 77, 78, 79, 0, 0, 82, 104, 99, 85, 86, 87, 88, 89, 105, 91, 92, 93, 94, 95, 0,
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
- 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 70,
- 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 0, 67, 68, 69, 0, 71, 72, 0, 1, 2, 0, 77, 78, 79, 0, 0, 82,
- 13, 99, 85, 86, 87, 88, 89, 105, 91, 92, 93, 94, 95, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
- 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 70, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 0,
- 67, 68, 69, 0, 71, 72, 0, 0, 1, 2, 77, 78, 79, 0, 0, 82, 0, 4, 85, 86, 87, 88, 89, 0, 91, 92, 93, 94,
- 95, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 54, 12, 41, 27, 28, 0,
- 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 0, 42, 43, 44, 45, 46, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0,
- 12, 83, 84, 75, 0, 1, 2, 66, 67, 0, 0, 70, 8, 9, 73, 74, 75, 76, 83, 84, 79, 80, 81, 41, 83, 84, 0, 0,
- 1, 2, 76, 4, 5, 6, 7, 0, 54, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
- 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 28, 76, 66, 0, 126, 127, 128, 0, 1, 2, 3, 4, 5, 6, 7,
- 8, 9, 10, 11, 12, 0, 1, 2, 3, 4, 0, 80, 80, 8, 9, 0, 11, 96, 97, 27, 28, 129, 30, 31, 32, 33, 34, 35,
- 36, 37, 38, 39, 40, 0, 42, 43, 44, 45, 46, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
- 46, 0, 1, 2, 3, 4, 0, 66, 67, 8, 9, 70, 0, 54, 73, 74, 75, 76, 54, 122, 79, 80, 81, 11, 83, 84, 0, 1, 2,
- 3, 4, 5, 6, 7, 8, 9, 54, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
- 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 0, 1, 2, 0, 126, 127, 128, 0, 1, 2, 3, 4, 5, 6, 7, 8,
- 9, 10, 75, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
- 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 0, 47, 48, 49, 50, 51, 52, 53, 0, 55, 56, 57, 58, 59, 60,
- 61, 62, 63, 64, 65, 0, 1, 2, 127, 77, 78, 72, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 0, 0, 1,
- 2, 4, 46, 54, 0, 1, 2, 3, 4, 80, 54, 0, 8, 9, 3, 11, 0, 80, 62, 63, 64, 65, 0, 0, 68, 69, 10, 71, 12, 0,
- 1, 2, 76, 0, 5, 6, 7, 81, 5, 6, 7, 0, 1, 2, 0, 4, 90, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
- 26, 27, 28, 0, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 70, 77, 78, 0, 74, 123, 124, 125, 0, 1, 2, 3,
- 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
- 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 0, 102, 0, 1, 2, 46, 4, 5, 6, 7, 0, 11, 10, 54, 12, 76, 0, 0, 1,
- 2, 4, 62, 63, 64, 65, 8, 9, 68, 69, 0, 71, 0, 0, 0, 3, 76, 0, 5, 6, 7, 81, 5, 6, 7, 0, 1, 2, 31, 4, 90,
- 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 0, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
- 40, 123, 124, 125, 70, 81, 123, 124, 125, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
- 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 0, 0, 0, 1,
- 2, 46, 4, 5, 6, 7, 0, 11, 10, 54, 12, 5, 6, 7, 0, 1, 2, 62, 63, 64, 65, 122, 0, 68, 69, 11, 71, 5, 6, 7,
- 0, 1, 2, 3, 4, 0, 81, 0, 8, 9, 0, 0, 5, 6, 7, 90, 5, 6, 7, 27, 28, 54, 30, 31, 32, 33, 34, 35, 36, 37,
- 38, 39, 40, 67, 27, 28, 0, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 0, 1, 0, 67, 42, 43, 129, 0, 1,
- 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
- 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 0, 0, 0, 1, 0, 46, 5, 6, 7, 5, 6, 7, 11, 54, 0, 1, 2, 0, 1,
- 2, 66, 62, 63, 64, 65, 8, 0, 68, 69, 27, 71, 27, 28, 0, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
- 0, 46, 0, 90, 5, 6, 7, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0, 12, 41, 54, 0, 70, 54, 27, 28, 73, 30,
- 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 0, 41, 129, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
- 76, 0, 0, 80, 0, 46, 5, 6, 7, 5, 6, 7, 0, 54, 0, 3, 0, 0, 4, 3, 3, 62, 63, 64, 65, 66, 0, 68, 69, 73,
- 71, 27, 28, 0, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 31, 13, 108, 109, 90, 0, 1, 2, 3, 4, 5, 6, 7,
- 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
- 34, 35, 36, 37, 38, 39, 40, 0, 66, 0, 1, 2, 46, 4, 5, 6, 7, 68, 0, 10, 54, 12, 4, 5, 6, 7, 0, 0, 62, 63,
- 64, 65, 0, 0, 68, 69, 4, 71, 0, 1, 2, 0, 4, 5, 6, 7, 0, 81, 10, 11, 12, 0, 11, 123, 124, 125, 90, 0, 1,
- 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
- 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 66, 66, 0, 1, 2, 46, 4, 5, 6, 7, 75, 83, 84, 54, 74, 62, 0,
- 74, 0, 76, 4, 62, 63, 64, 65, 0, 0, 68, 69, 0, 71, 96, 97, 4, 5, 6, 7, 0, 98, 10, 81, 12, 5, 6, 7, 27,
- 28, 0, 30, 90, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
- 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 66, 66, 0, 1, 2, 46, 4, 5, 6, 7, 0, 76,
- 10, 54, 12, 5, 6, 7, 0, 0, 0, 62, 63, 64, 65, 0, 0, 68, 69, 73, 71, 5, 6, 7, 0, 0, 11, 0, 1, 2, 81, 4,
- 5, 6, 7, 27, 28, 0, 30, 90, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
- 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 54, 66, 73, 0, 0, 46, 3,
- 0, 74, 5, 6, 7, 0, 54, 0, 3, 73, 83, 84, 0, 0, 62, 63, 64, 65, 0, 98, 68, 69, 4, 71, 27, 28, 0, 30, 31,
- 32, 33, 34, 35, 36, 37, 38, 39, 40, 0, 1, 2, 104, 90, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
- 66, 73, 73, 75, 0, 46, 83, 84, 54, 5, 6, 7, 0, 54, 0, 3, 0, 0, 0, 1, 0, 62, 63, 64, 65, 83, 84, 68, 69,
- 11, 71, 27, 28, 0, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 0, 1, 2, 0, 90, 0, 1, 2, 3, 4, 5, 6, 7,
- 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
- 34, 35, 36, 37, 38, 39, 40, 75, 74, 73, 0, 0, 46, 83, 84, 54, 5, 6, 7, 0, 54, 0, 0, 0, 5, 6, 7, 0, 62,
- 63, 64, 65, 83, 84, 68, 69, 103, 71, 27, 28, 0, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 42, 43, 0,
- 0, 90, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 75, 0, 73, 0, 0, 46, 5, 6, 7, 5, 6, 7, 0, 54, 0,
- 3, 0, 0, 0, 3, 0, 62, 63, 64, 65, 83, 84, 68, 69, 11, 71, 27, 28, 0, 30, 31, 32, 33, 34, 35, 36, 37, 38,
- 39, 40, 42, 43, 0, 0, 90, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
- 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 0, 74, 73, 80, 75, 46, 0, 1,
- 2, 3, 4, 11, 0, 54, 8, 9, 0, 75, 0, 3, 0, 62, 63, 64, 65, 98, 0, 68, 69, 11, 71, 108, 109, 110, 111,
- 112, 113, 114, 115, 116, 117, 118, 119, 0, 1, 2, 46, 0, 0, 90, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
- 39, 40, 73, 74, 0, 0, 75, 46, 54, 0, 0, 1, 2, 3, 4, 54, 11, 8, 8, 9, 83, 84, 0, 62, 63, 64, 65, 104, 0,
- 68, 69, 0, 71, 5, 6, 7, 5, 6, 7, 80, 0, 1, 2, 3, 4, 0, 0, 0, 8, 9, 10, 90, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 0, 0, 29, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 70, 41, 42, 43, 44, 45, 81, 47,
- 48, 49, 50, 51, 52, 53, 0, 55, 56, 57, 58, 59, 60, 61, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 72, 0, 0, 75, 3,
- 77, 78, 0, 1, 2, 3, 4, 11, 11, 80, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
- 26, 76, 0, 29, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 41, 42, 43, 44, 45, 98, 47, 48, 49, 50, 51, 52, 53, 0,
- 55, 56, 57, 58, 59, 60, 61, 67, 0, 70, 0, 12, 67, 74, 0, 0, 0, 1, 2, 3, 4, 13, 77, 78, 8, 9, 10, 11, 12,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 0, 0, 29, 0, 1, 2, 76, 4, 76, 0, 0, 8, 9, 4, 41,
- 42, 43, 44, 45, 54, 47, 48, 49, 50, 51, 52, 53, 62, 55, 56, 57, 58, 59, 60, 61, 0, 1, 2, 66, 4, 67, 0,
- 0, 8, 9, 72, 75, 0, 1, 2, 3, 4, 11, 11, 81, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
- 23, 24, 25, 26, 73, 66, 29, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 46, 41, 42, 43, 44, 45, 0, 47, 48, 49, 50, 51,
- 52, 53, 0, 55, 56, 57, 58, 59, 60, 61, 67, 0, 0, 11, 103, 67, 5, 6, 7, 0, 72, 0, 1, 2, 3, 4, 0, 0, 0, 8,
- 9, 10, 0, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 46, 0, 29, 0, 1, 2, 0, 4, 5, 6, 7,
- 5, 6, 7, 41, 42, 43, 44, 45, 73, 47, 48, 49, 50, 51, 52, 53, 73, 55, 56, 57, 58, 59, 60, 61, 0, 0, 1, 2,
- 3, 4, 5, 6, 7, 0, 72, 10, 0, 12, 70, 77, 78, 0, 1, 2, 3, 4, 54, 11, 75, 8, 9, 10, 0, 12, 13, 14, 15, 16,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 0, 102, 29, 0, 1, 2, 41, 122, 5, 6, 7, 11, 0, 10, 41, 42, 43,
- 44, 45, 54, 47, 48, 49, 50, 51, 52, 53, 70, 55, 56, 57, 58, 59, 60, 61, 0, 1, 2, 54, 4, 0, 73, 74, 8, 9,
- 72, 46, 0, 1, 0, 77, 78, 0, 1, 2, 3, 4, 54, 11, 0, 8, 9, 10, 0, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
- 22, 23, 24, 25, 26, 0, 0, 29, 0, 1, 2, 0, 4, 0, 41, 54, 8, 9, 0, 41, 42, 43, 44, 45, 0, 47, 48, 49, 50,
- 51, 52, 53, 66, 55, 56, 57, 58, 59, 60, 61, 0, 1, 2, 0, 1, 2, 0, 74, 0, 0, 72, 5, 6, 7, 0, 77, 78, 0, 1,
- 2, 3, 4, 54, 0, 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 66, 80, 29,
- 76, 0, 76, 66, 3, 0, 0, 54, 3, 3, 54, 41, 42, 43, 44, 45, 11, 47, 48, 49, 50, 51, 52, 53, 122, 55, 56,
- 57, 58, 59, 60, 61, 70, 96, 97, 0, 0, 67, 0, 3, 0, 3, 72, 0, 1, 2, 3, 4, 13, 11, 0, 8, 9, 10, 11, 12,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 0, 70, 29, 3, 73, 70, 75, 0, 73, 74, 75, 0, 1,
- 2, 41, 42, 43, 44, 45, 54, 47, 48, 49, 50, 51, 52, 53, 62, 55, 56, 57, 58, 59, 60, 61, 0, 1, 2, 3, 4,
- 70, 0, 74, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 0, 0, 29, 54, 0, 5,
- 6, 7, 0, 5, 6, 7, 11, 0, 41, 42, 43, 44, 45, 0, 47, 48, 49, 50, 51, 52, 53, 0, 55, 56, 57, 58, 59, 60,
- 61, 0, 0, 0, 127, 0, 67, 0, 1, 2, 3, 4, 11, 11, 130, 8, 9, 10, 0, 12, 13, 14, 15, 16, 17, 18, 19, 20,
- 21, 22, 23, 24, 25, 26, 0, 0, 29, 0, 0, 0, 73, 74, 3, 98, 0, 66, 11, 46, 41, 42, 43, 44, 45, 0, 47, 48,
- 49, 50, 51, 52, 53, 76, 55, 56, 57, 58, 59, 60, 61, 67, 0, 1, 2, 3, 4, 96, 97, 70, 8, 9, 10, 76, 12, 13,
- 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 104, 0, 29, 66, 83, 84, 66, 0, 102, 0, 3, 73, 11,
- 66, 41, 42, 43, 44, 45, 81, 47, 48, 49, 50, 51, 52, 53, 0, 55, 56, 57, 58, 59, 60, 61, 0, 80, 0, 0, 1,
- 2, 3, 4, 0, 0, 72, 8, 9, 10, 12, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 0, 0, 29,
- 0, 0, 0, 3, 3, 0, 0, 74, 11, 11, 0, 41, 42, 43, 44, 45, 11, 47, 48, 49, 50, 51, 52, 53, 0, 55, 56, 57,
- 58, 59, 60, 61, 0, 66, 0, 0, 1, 2, 3, 4, 0, 0, 72, 8, 9, 10, 0, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
- 22, 23, 24, 25, 26, 0, 0, 29, 67, 0, 0, 0, 3, 0, 74, 67, 11, 11, 0, 41, 42, 43, 44, 45, 0, 47, 48, 49,
- 50, 51, 52, 53, 0, 55, 56, 57, 58, 59, 60, 61, 0, 0, 0, 0, 1, 2, 3, 4, 0, 0, 72, 8, 9, 10, 0, 12, 13,
- 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 0, 0, 29, 67, 0, 0, 0, 3, 0, 74, 0, 11, 11, 3, 41,
- 42, 43, 44, 45, 76, 47, 48, 49, 50, 51, 52, 53, 0, 55, 56, 57, 58, 59, 60, 61, 0, 0, 0, 0, 1, 2, 3, 4,
- 0, 0, 72, 8, 9, 10, 0, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 0, 0, 29, 0, 3, 0, 3,
- 0, 0, 74, 74, 11, 0, 0, 41, 42, 43, 44, 45, 76, 47, 48, 49, 50, 51, 52, 53, 0, 55, 56, 57, 58, 59, 60,
- 61, 0, 1, 2, 3, 4, 0, 0, 80, 8, 9, 10, 0, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 83, 84, 29, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 42, 43, 44, 45, 81, 47, 48, 49, 50, 51, 52, 53, 0, 55,
- 56, 57, 58, 59, 60, 61, 0, 1, 2, 3, 4, 0, 0, 0, 8, 9, 10, 0, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
- 23, 24, 25, 26, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 42, 43, 44, 45, 0, 47, 48, 49, 50, 51,
- 52, 53, 0, 55, 56, 57, 58, 59, 60, 61, 0, 1, 2, 3, 4, 0, 0, 0, 8, 9, 10, 0, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 42, 43, 44, 45, 0, 47,
- 48, 49, 50, 51, 52, 53, 0, 55, 56, 57, 58, 59, 60, 61, 0, 1, 2, 3, 4, 0, 0, 0, 8, 9, 10, 0, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 42, 43,
- 44, 45, 0, 47, 48, 49, 50, 51, 52, 53, 0, 55, 56, 57, 58, 59, 60, 61, 0, 1, 2, 3, 4, 0, 0, 0, 8, 9, 10,
- 0, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 41, 42, 43, 44, 45, 0, 47, 48, 49, 50, 51, 52, 53, 0, 55, 56, 57, 58, 59, 60, 61, 0, 1, 2, 3, 4, 0,
- 0, 0, 8, 9, 10, 0, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 0, 0, 29, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 41, 42, 43, 44, 45, 0, 47, 48, 49, 50, 51, 52, 53, 0, 55, 56, 57, 58, 59, 60, 61, 0,
- 1, 2, 3, 4, 0, 0, 0, 8, 9, 10, 0, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 0, 0, 29,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 42, 43, 44, 45, 0, 47, 48, 49, 50, 51, 52, 53, 0, 55, 56, 57, 58,
- 59, 60, 61, 0, 1, 2, 3, 4, 0, 0, 0, 8, 9, 10, 0, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
- 26, 0, 0, 29, 3, 0, 0, 0, 0, 8, 0, 10, 0, 12, 0, 41, 42, 43, 44, 45, 0, 47, 48, 49, 50, 51, 52, 53, 0,
- 55, 56, 57, 58, 59, 60, 61, 0, 0, 0, 0, 0, 0, 0, 42, 43, 44, 45, 0, 47, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8,
- 9, 10, 0, 12, 0, 0, 0, 66, 0, 0, 0, 70, 0, 0, 73, 0, 75, 0, 77, 78, 0, 80, 0, 0, 83, 84, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 96, 97, 0, 99, 100, 101, 102, 103, 104, 0, 106, 107, 108, 0, 110, 111, 112, 113, 114,
- 115, 116, 117, 118, 119, 70, 0, 0, 0, 1, 2, 126, 4, 5, 6, 7, 0, 0, 0, 0, 0, 13, 14, 15, 16, 17, 18, 19,
- 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 2, 0, 4, 5, 6, 7, 0, 62, 63, 64, 65, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
- 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 2, 0, 0, 5, 6, 7, 0, 62, 63, 64, 65, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
- 28, 0, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 5,
- 6, 7, 0, 62, 63, 64, 65, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 0, 30, 31, 32,
- 33, 34, 35, 36, 37, 38, 39, 40, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0, 0, 0, 0, 0, 0, 0, 0, 62,
- 63, 64, 65, 0, 0, 27, 28, 0, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 0, 0, 0, 0, 0, 46, 0, 0, 1, 2,
- 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0, 0, 0, 0, 0, 66, 0, 0, 0, 70, 0, 0, 0, 74, 27, 28, 0, 30, 31, 32, 33,
- 34, 35, 36, 37, 38, 39, 40, 0, 0, 0, 0, 0, 46, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0, 66, 0, 0,
- 0, 0, 67, 0, 0, 70, 75, 0, 0, 74, 27, 28, 0, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 0, 0, 0, 96,
- 97, 46, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0, 66, 0, 0, 0, 0, 0, 120, 121, 70, 75, 0, 0, 74,
- 27, 28, 0, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 0, 0, 0, 96, 97, 46, 0, 0, 1, 2, 3, 4, 5, 6, 7,
- 0, 0, 10, 0, 12, 0, 0, 0, 0, 0, 0, 0, 120, 121, 70, 0, 0, 0, 74, 27, 28, 0, 30, 31, 32, 33, 34, 35, 36,
- 37, 38, 39, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 0, 0, 10, 0, 12, 0, 0, 1, 2, 3, 4, 0, 0,
- 70, 8, 9, 73, 11, 75, 27, 28, 0, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 0, 1, 2, 3, 4, 5, 6, 7, 8,
- 9, 10, 0, 12, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0, 12, 0, 3, 0, 70, 0, 0, 73, 0, 75, 0, 66, 0, 0, 0, 0,
- 0, 0, 70, 0, 75, 73, 74, 75, 0, 0, 0, 0, 80, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 11, 96, 97, 44, 45, 0, 98,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 121, 0, 0, 70, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static char termCheck[] = TermCheck.termCheck;
-
- @Override
- public final int termCheck(int index) {
- return termCheck[index];
- }
-
- public interface TermAction {
- public final static char termAction[] = { 0, 8899, 8635, 7901, 7901, 7901, 7894, 7901, 7901, 7901, 7901, 7901,
- 8765, 7901, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 8639, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 39, 8910, 1709, 836, 8937, 9107, 1,
- 115, 8899, 8194, 8191, 1, 1, 1179, 8899, 8906, 3237, 2129, 423, 2835, 2653, 2787, 3225, 5703, 7630,
- 3234, 1507, 3232, 4791, 3229, 10, 8768, 8768, 8768, 8768, 8768, 8768, 8768, 8768, 8768, 8768, 8768,
- 8768, 8768, 8768, 8768, 8768, 8768, 8768, 8768, 8768, 8768, 8768, 8768, 8768, 8768, 8768, 8768, 8768,
- 8768, 8768, 8768, 8768, 8768, 8768, 8768, 8768, 8768, 8768, 8768, 8768, 8768, 8768, 8768, 8768, 8768,
- 8768, 8768, 8768, 8768, 8768, 8768, 8768, 8768, 8188, 8768, 8768, 8768, 8768, 8768, 8768, 8768, 8768,
- 8768, 8768, 8768, 420, 8768, 8768, 8768, 35, 8768, 8768, 8899, 8913, 8914, 8899, 8768, 8768, 8768, 1764,
- 8768, 8768, 2050, 1971, 8768, 8768, 8768, 8768, 8768, 484, 8768, 8768, 8768, 8768, 8768, 8, 8789, 8789,
- 8789, 8789, 8789, 8789, 8789, 8789, 8789, 8789, 8789, 8789, 8789, 8789, 8789, 8789, 8789, 8789, 8789,
- 8789, 8789, 8789, 8789, 8789, 8789, 8789, 8789, 8789, 8789, 8789, 8789, 8789, 8789, 8789, 8789, 8789,
- 8789, 8789, 8789, 8789, 8789, 8789, 8789, 8789, 8789, 8789, 8789, 8789, 8789, 8789, 8789, 8789, 8789,
- 1847, 8789, 8789, 8789, 8789, 8789, 8789, 8789, 8789, 8789, 8789, 8789, 8899, 8789, 8789, 8789, 1240,
- 8789, 8789, 117, 8899, 12843, 12189, 8789, 8789, 8789, 227, 8789, 8789, 2129, 490, 8789, 8789, 8789,
- 8789, 8789, 8899, 8789, 8789, 8789, 8789, 8789, 8899, 8635, 7901, 7901, 7901, 7894, 7901, 7901, 7901,
- 7901, 7901, 8642, 7901, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 8639, 1, 1, 1, 1, 1, 1, 1, 8364, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 8793, 8910, 1709,
- 836, 116, 9107, 1, 8899, 8913, 8914, 8899, 1, 1, 1179, 2129, 1704, 3237, 2050, 1971, 2835, 2653, 2787,
- 3225, 5703, 8899, 3234, 1507, 3232, 4791, 3229, 8899, 8635, 7901, 7901, 7901, 7894, 7901, 7901, 7901,
- 7901, 7901, 8642, 7901, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 8639, 1, 1, 1, 1, 1, 1, 1, 151, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4638, 8910, 1709,
- 836, 9336, 9107, 1, 48, 8194, 8191, 8899, 1, 1, 1179, 2050, 1971, 3237, 1, 476, 2835, 2653, 2787, 3225,
- 5703, 464, 3234, 1507, 3232, 4791, 3229, 8899, 8635, 7901, 7901, 7901, 7894, 7901, 7901, 7901, 7901,
- 7901, 8642, 7901, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 8639, 1, 1, 1, 1, 1, 1, 1, 8367, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1440, 8910, 1709, 836,
- 1485, 9107, 1, 433, 8913, 8914, 155, 1, 1, 1179, 353, 8899, 3237, 8409, 1008, 2835, 2653, 2787, 3225,
- 5703, 594, 3234, 1507, 3232, 4791, 3229, 8899, 8635, 7901, 7901, 7901, 7894, 7901, 7901, 7901, 7901,
- 7901, 8642, 7901, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 8639, 1, 1, 1, 1, 1, 1, 1, 1677, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3623, 8910, 1709, 836,
- 346, 9107, 1, 1491, 8899, 12843, 12189, 1, 1, 1179, 8899, 3469, 3237, 4387, 153, 2835, 2653, 2787, 3225,
- 5703, 3189, 3234, 1507, 3232, 4791, 3229, 8899, 8635, 7901, 7901, 7901, 7894, 7901, 7901, 7901, 7901,
- 7901, 8642, 7901, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 8639, 1, 1, 1, 1, 1, 1, 1, 1352, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 8899, 8910, 1709, 836,
- 149, 9107, 1, 327, 8913, 8914, 129, 1, 1, 1179, 382, 111, 3237, 2391, 8899, 2835, 2653, 2787, 3225,
- 5703, 4499, 3234, 1507, 3232, 4791, 3229, 8899, 8635, 7901, 7901, 7901, 7894, 7901, 7901, 7901, 7901,
- 7901, 8642, 7901, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 8639, 1, 1, 1, 1, 1, 1, 1, 1677, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 8899, 8910, 1709, 836,
- 150, 9107, 1, 8899, 4923, 4856, 846, 1, 1, 1179, 4414, 4292, 3237, 135, 6626, 2835, 2653, 2787, 3225,
- 5703, 6652, 3234, 1507, 3232, 4791, 3229, 8899, 8635, 7901, 7901, 7901, 7894, 7901, 7901, 7901, 7901,
- 7901, 8642, 7901, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 8639, 1, 1, 1, 1, 1, 1, 1, 131, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4717, 8910, 1709, 836,
- 8899, 9107, 1, 1431, 4923, 4856, 8899, 1, 1, 1179, 8899, 114, 3237, 1379, 29, 2835, 2653, 2787, 3225,
- 5703, 4458, 3234, 1507, 3232, 4791, 3229, 8899, 8635, 7901, 7901, 7901, 7894, 7901, 7901, 7901, 7901,
- 7901, 8642, 7901, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 8639, 1, 1, 1, 1, 1, 1, 1, 8370, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 8899, 8910, 1709, 836,
- 130, 9107, 1, 8899, 8899, 157, 2088, 1, 1, 1179, 8899, 113, 3237, 5838, 6626, 2835, 2653, 2787, 3225,
- 5703, 6652, 3234, 1507, 3232, 4791, 3229, 8899, 8635, 7901, 7901, 7901, 7894, 7901, 7901, 7901, 7901,
- 7901, 8642, 7901, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 8639, 1, 1, 1, 1, 1, 1, 1, 5971, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 8899, 8910, 1709, 836,
- 8899, 9107, 1, 4337, 4414, 4292, 3791, 1, 1, 1179, 355, 112, 3237, 4265, 6626, 2835, 2653, 2787, 3225,
- 5703, 6652, 3234, 1507, 3232, 4791, 3229, 8899, 8635, 7901, 7901, 7901, 7894, 7901, 7901, 7901, 7901,
- 7901, 8642, 7901, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 8639, 1, 1, 1, 1, 1, 1, 1, 1677, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 8899, 8910, 1709, 836,
- 337, 9107, 1, 36, 8813, 8810, 8899, 1, 1, 1179, 494, 8899, 3237, 9235, 6626, 2835, 2653, 2787, 3225,
- 5703, 6652, 3234, 1507, 3232, 4791, 3229, 8899, 8635, 7901, 7901, 7901, 7894, 7901, 7901, 7901, 7901,
- 7901, 8642, 7901, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 8639, 1, 1, 1, 1, 1, 1, 1, 8418, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 8899, 8910, 1709, 836,
- 8899, 9107, 1, 141, 326, 1660, 1660, 1, 1, 1179, 8899, 631, 3237, 8899, 1769, 2835, 2653, 2787, 3225,
- 5703, 121, 3234, 1507, 3232, 4791, 3229, 8899, 8424, 8424, 8424, 8424, 8424, 8424, 8424, 8424, 8424,
- 8424, 8424, 8424, 8899, 7920, 7916, 4619, 7913, 8343, 8349, 8346, 826, 1156, 8352, 1177, 8352, 2394,
- 8424, 8424, 8899, 8424, 8424, 8424, 8424, 8424, 8424, 8424, 8424, 8424, 8424, 8424, 8899, 8424, 8424,
- 8424, 8424, 8424, 8899, 7920, 7916, 4619, 7913, 8343, 8349, 8346, 826, 1156, 8412, 146, 8412, 879, 958,
- 7131, 38, 8361, 8358, 8424, 8424, 159, 328, 8424, 8355, 1156, 8424, 8424, 8424, 8424, 879, 958, 8424,
- 8424, 8424, 2845, 8424, 8424, 583, 323, 8137, 8137, 3589, 318, 957, 848, 923, 626, 7110, 8424, 8424,
- 8424, 8424, 8424, 8424, 8424, 8424, 8424, 8424, 8424, 8424, 8424, 8424, 8424, 8424, 8424, 8424, 8424,
- 8424, 8424, 8424, 8424, 8424, 8424, 8424, 9524, 3589, 5276, 8899, 8424, 8424, 8424, 8899, 8501, 8501,
- 8501, 8501, 8501, 8501, 8501, 8501, 8501, 8501, 8501, 8501, 1, 7920, 7916, 7910, 7913, 8899, 2574, 3636,
- 7927, 7924, 8899, 8909, 5199, 4526, 8501, 8501, 7893, 8501, 8501, 8501, 8501, 8501, 8501, 8501, 8501,
- 8501, 8501, 8501, 47, 8501, 8501, 8501, 8501, 8501, 760, 5903, 2495, 2416, 2337, 2258, 2179, 2100, 2021,
- 1942, 1863, 1784, 8908, 1, 7920, 7916, 7910, 7913, 8899, 8501, 8501, 7927, 7924, 8501, 8899, 7026, 8501,
- 8501, 8501, 8501, 7047, 1, 8501, 8501, 8501, 8903, 8501, 8501, 366, 7907, 7904, 4619, 1813, 957, 848,
- 923, 826, 1156, 909, 8501, 8501, 8501, 8501, 8501, 8501, 8501, 8501, 8501, 8501, 8501, 8501, 8501, 8501,
- 8501, 8501, 8501, 8501, 8501, 8501, 8501, 8501, 8501, 8501, 8501, 8501, 8899, 8913, 8914, 8899, 8501,
- 8501, 8501, 39, 7907, 7904, 6318, 1813, 957, 848, 923, 4236, 1156, 2445, 9447, 2524, 1071, 9565, 9566,
- 9198, 9196, 9205, 9204, 9200, 9201, 9199, 9202, 9203, 9206, 9197, 9271, 9272, 6890, 9567, 9193, 9187,
- 9194, 9190, 9166, 9192, 9191, 9188, 9189, 9167, 8918, 2366, 2287, 3323, 2603, 405, 2208, 1833, 2026,
- 8920, 1970, 6725, 1996, 403, 8921, 8919, 1572, 8915, 8916, 8917, 6698, 9333, 4751, 9334, 9335, 37, 8427,
- 8427, 8902, 5711, 1711, 1731, 8899, 8437, 8437, 263, 8433, 7901, 7901, 7901, 263, 263, 263, 8441, 263,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 8899, 8899, 8194,
- 8191, 2094, 263, 8935, 1, 7920, 7916, 5568, 7913, 1525, 8430, 632, 826, 1156, 2482, 8645, 8899, 1579, 1,
- 1, 1, 1, 133, 8899, 4075, 837, 7240, 9347, 5084, 333, 8913, 8914, 263, 257, 957, 848, 923, 452, 7945,
- 7939, 7942, 8899, 7907, 7904, 8899, 8937, 9435, 9565, 9566, 9198, 9196, 9205, 9204, 9200, 9201, 9199,
- 9202, 9203, 9206, 9197, 7954, 7951, 8899, 7948, 7960, 7978, 7957, 7969, 7936, 7963, 7966, 7975, 7972,
- 7933, 1677, 5711, 1711, 475, 8648, 9370, 9371, 9372, 8899, 8437, 8437, 263, 8433, 7901, 7901, 7901, 263,
- 263, 263, 8549, 263, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 4565, 480, 8415, 8415, 263, 8415, 8415, 8415, 8415, 493, 8504, 8415, 8430, 8415, 5770, 39, 8899,
- 8913, 8914, 8937, 1, 1, 1, 1, 826, 1156, 4075, 837, 8899, 9347, 619, 333, 8899, 2801, 263, 570, 957,
- 848, 923, 451, 8687, 8681, 8684, 8899, 7907, 7904, 2470, 8937, 9435, 9565, 9566, 9198, 9196, 9205, 9204,
- 9200, 9201, 9199, 9202, 9203, 9206, 9197, 9271, 9272, 8899, 9567, 9193, 9187, 9194, 9190, 9166, 9192,
- 9191, 9188, 9189, 9167, 9370, 9371, 9372, 8421, 8906, 9370, 9371, 9372, 8899, 7901, 7901, 263, 7901,
- 7894, 7901, 7901, 263, 263, 263, 7930, 263, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 13025, 1, 13044, 1, 1, 13756, 1, 8899, 37, 481, 8678, 8678, 263, 8672, 8663, 8669, 8666, 665, 8911,
- 8675, 7898, 8675, 957, 848, 923, 8899, 8913, 8914, 1, 1, 1, 1, 3581, 258, 3958, 836, 8911, 9144, 7993,
- 7987, 7990, 1, 7920, 7916, 4619, 7913, 8899, 253, 259, 826, 1156, 118, 348, 8041, 8035, 8038, 9435, 957,
- 848, 923, 8002, 7999, 8935, 7996, 8008, 8026, 8005, 8017, 7984, 8011, 8014, 8023, 8020, 7981, 8910,
- 8050, 8047, 8899, 8044, 8056, 8074, 8053, 8065, 8032, 8059, 8062, 8071, 8068, 8029, 8899, 3687, 8899,
- 8910, 1892, 1127, 253, 8899, 7901, 7901, 263, 7901, 7894, 7901, 7901, 263, 263, 263, 263, 263, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13025, 1, 13044, 1, 1, 13756, 1, 383, 8899, 608,
- 9508, 260, 263, 8872, 8880, 8876, 8101, 8095, 8098, 8884, 7898, 8899, 8489, 8486, 37, 8427, 8427, 2090,
- 1, 1, 1, 1, 8427, 8899, 3958, 836, 9509, 9144, 8110, 8107, 8899, 8104, 8116, 8134, 8113, 8125, 8092,
- 8119, 8122, 8131, 8128, 8089, 261, 8899, 8884, 8899, 9435, 8152, 8146, 8149, 544, 8899, 8834, 8834,
- 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8899, 8834, 2016, 8935, 139, 1677, 1919, 8161, 8158,
- 8884, 8155, 8167, 8185, 8164, 8176, 8143, 8170, 8173, 8182, 8179, 8140, 343, 2394, 254, 8899, 7901,
- 7901, 263, 7901, 7894, 7901, 7901, 263, 263, 263, 263, 263, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 13025, 1, 13044, 1, 1, 13756, 1, 8834, 431, 8899, 5972, 650, 263, 957, 848, 923, 8209,
- 8203, 8206, 91, 7898, 39, 8498, 606, 1, 8937, 1298, 5738, 1, 1, 1, 1, 1180, 8899, 3958, 836, 4755, 9144,
- 8218, 8215, 337, 8212, 8224, 8242, 8221, 8233, 8200, 8227, 8230, 8239, 8236, 8197, 1382, 9235, 4000,
- 5839, 9435, 8899, 7901, 7901, 263, 7901, 7894, 7901, 7901, 263, 263, 263, 8540, 263, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13025, 1, 13044, 1, 1, 13756, 1, 8899, 1758, 92, 8762,
- 8762, 263, 8762, 8762, 8762, 8762, 1076, 431, 8762, 7898, 8762, 424, 957, 848, 923, 145, 8899, 1, 1, 1,
- 1, 432, 8899, 3958, 836, 423, 9144, 1, 8624, 8624, 8899, 8771, 8343, 8349, 8346, 8899, 254, 366, 398,
- 366, 8899, 8905, 9370, 9371, 9372, 9435, 8899, 7901, 7901, 263, 7901, 7894, 7901, 7901, 263, 263, 263,
- 8540, 263, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13025, 1, 13044, 1, 1, 13756,
- 1, 1278, 5276, 659, 8388, 8388, 263, 664, 957, 848, 923, 5595, 879, 958, 7898, 398, 2554, 8899, 8904,
- 371, 2004, 2934, 1, 1, 1, 1, 8899, 29, 3958, 836, 39, 9144, 5199, 4526, 8937, 957, 848, 923, 654, 398,
- 366, 254, 366, 957, 848, 923, 8783, 8780, 629, 8777, 9435, 8899, 7901, 7901, 263, 7901, 7894, 7901,
- 7901, 263, 263, 263, 8540, 263, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13025, 1,
- 13044, 1, 1, 13756, 1, 4160, 1278, 95, 8858, 8858, 263, 8852, 8843, 8849, 8846, 662, 460, 8855, 7898,
- 8855, 8510, 8516, 8513, 371, 393, 551, 1, 1, 1, 1, 8899, 431, 3958, 836, 2235, 9144, 957, 848, 923, 190,
- 137, 8905, 430, 8086, 8086, 254, 318, 8077, 8083, 8080, 9271, 9272, 8899, 9567, 9435, 8899, 7901, 7901,
- 263, 7901, 7894, 7901, 7901, 263, 263, 263, 263, 263, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 13025, 1, 13044, 1, 1, 13756, 1, 318, 1278, 1098, 271, 571, 263, 8654, 8899, 8904, 8696,
- 8690, 8693, 8899, 7898, 144, 5116, 2700, 879, 958, 8899, 485, 1, 1, 1, 1, 48, 9291, 3958, 836, 8914,
- 9144, 9271, 9272, 142, 9567, 9193, 9187, 9194, 9190, 9166, 9192, 9191, 9188, 9189, 9167, 43, 8495, 8495,
- 4343, 9435, 8899, 7901, 7901, 263, 7901, 7894, 7901, 7901, 263, 263, 263, 263, 263, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13025, 1, 13044, 1, 1, 13756, 1, 8914, 6978, 3174, 7215, 572,
- 263, 879, 958, 8492, 8705, 8699, 8702, 8899, 7898, 640, 6250, 8899, 156, 8899, 2403, 397, 1, 1, 1, 1,
- 879, 958, 3958, 836, 8905, 9144, 9271, 9272, 639, 9567, 9193, 9187, 9194, 9190, 9166, 9192, 9191, 9188,
- 9189, 9167, 8899, 13519, 13519, 8899, 9435, 8899, 7901, 7901, 263, 7901, 7894, 7901, 7901, 263, 263,
- 263, 263, 263, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13025, 1, 13044, 1, 1,
- 13756, 1, 3250, 8904, 1272, 120, 573, 263, 879, 958, 8935, 8714, 8708, 8711, 653, 7898, 8899, 8899,
- 8899, 957, 848, 923, 320, 1, 1, 1, 1, 879, 958, 3958, 836, 4387, 9144, 9271, 9272, 125, 9567, 9193,
- 9187, 9194, 9190, 9166, 9192, 9191, 9188, 9189, 9167, 1892, 1127, 8899, 8899, 9435, 8899, 7901, 7901,
- 263, 7901, 7894, 7901, 7901, 263, 263, 263, 263, 263, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 13025, 1, 13044, 1, 1, 13756, 1, 3272, 366, 9218, 119, 574, 263, 8525, 8531, 8528, 8723,
- 8717, 8720, 8899, 7898, 139, 6317, 8899, 8899, 1, 6999, 8899, 1, 1, 1, 1, 879, 958, 3958, 836, 398,
- 9144, 9271, 9272, 8899, 9567, 9193, 9187, 9194, 9190, 9166, 9192, 9191, 9188, 9189, 9167, 1892, 1127,
- 8899, 8899, 9435, 8899, 7901, 7901, 263, 7901, 7894, 7901, 7901, 263, 263, 263, 263, 263, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13025, 1, 13044, 1, 1, 13756, 1, 8899, 398, 6978, 3245,
- 3619, 263, 1, 7920, 7916, 4619, 7913, 8909, 158, 7898, 826, 1156, 8899, 3273, 8899, 6413, 8899, 1, 1, 1,
- 1, 398, 124, 3958, 836, 8905, 9144, 4000, 5839, 3196, 3147, 3098, 3049, 3000, 2951, 2902, 2853, 2803,
- 2754, 45, 8735, 8735, 8908, 8899, 542, 9435, 8899, 7901, 7901, 263, 7901, 7894, 7901, 7901, 263, 263,
- 263, 263, 263, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13025, 1, 13044, 1, 1,
- 13756, 1, 797, 8904, 8899, 8899, 3274, 263, 8732, 8899, 1, 7920, 7916, 5568, 7913, 7898, 8907, 1704,
- 826, 1156, 879, 958, 8899, 1, 1, 1, 1, 4265, 661, 3958, 836, 366, 9144, 957, 848, 923, 957, 848, 923,
- 6254, 1, 7920, 7916, 3520, 1813, 8899, 456, 8899, 4236, 1156, 2445, 9435, 2524, 8444, 8483, 8480, 8471,
- 8477, 8450, 8453, 8465, 8462, 8468, 8459, 8456, 8447, 8474, 1, 8899, 5647, 1, 7920, 7916, 4619, 7913,
- 8343, 8349, 8346, 826, 1156, 1677, 8918, 2366, 2287, 3323, 2603, 8906, 2208, 1833, 2026, 8920, 1970,
- 6725, 1996, 8899, 8921, 8919, 1572, 8915, 8916, 8917, 6698, 1, 7920, 7916, 4619, 7913, 8343, 8349, 8346,
- 826, 1156, 1731, 1, 1, 552, 3937, 39, 39, 1, 7920, 7916, 8621, 7913, 8645, 8373, 3737, 8582, 7924, 8570,
- 8911, 8573, 8444, 8483, 8480, 8471, 8477, 8450, 8453, 8465, 8462, 8468, 8459, 8456, 8447, 8474, 3589,
- 8899, 8552, 1, 7920, 7916, 4619, 7913, 8343, 8349, 8346, 826, 1156, 8899, 8594, 8567, 8564, 8579, 8576,
- 9293, 8561, 8609, 8618, 8588, 8612, 8558, 8615, 152, 8585, 8591, 8606, 8603, 8600, 8597, 8555, 8910, 1,
- 1677, 8899, 4638, 8910, 8648, 8899, 8899, 39, 7907, 7904, 6318, 1813, 8534, 8624, 8624, 4236, 1156,
- 2445, 8890, 2524, 1563, 9565, 9566, 9198, 9196, 9205, 9204, 9200, 9201, 9199, 9202, 9203, 9206, 9197,
- 8899, 326, 5647, 8899, 7907, 7904, 5837, 1813, 3589, 48, 136, 826, 1156, 8913, 8918, 2366, 2287, 3323,
- 2603, 3188, 2208, 1833, 2026, 8920, 1970, 6725, 1996, 8537, 8921, 8919, 1572, 8915, 8916, 8917, 6698,
- 8899, 7907, 7904, 4830, 1813, 8522, 441, 1, 826, 1156, 1731, 9390, 39, 7907, 7904, 6318, 1813, 8543,
- 8911, 8906, 4236, 1156, 2445, 8519, 2524, 1563, 9565, 9566, 9198, 9196, 9205, 9204, 9200, 9201, 9199,
- 9202, 9203, 9206, 9197, 10894, 8913, 5647, 662, 7907, 7904, 4619, 1813, 957, 848, 923, 826, 1156, 8546,
- 8918, 2366, 2287, 3323, 2603, 462, 2208, 1833, 2026, 8920, 1970, 6725, 1996, 8899, 8921, 8919, 1572,
- 8915, 8916, 8917, 6698, 8910, 655, 410, 8909, 4458, 8522, 957, 848, 923, 8899, 1731, 174, 7907, 7904,
- 6318, 1813, 154, 100, 8899, 4236, 1156, 2445, 8899, 2524, 1563, 9565, 9566, 9198, 9196, 9205, 9204,
- 9200, 9201, 9199, 9202, 9203, 9206, 9197, 8908, 8899, 5647, 660, 8385, 8385, 453, 664, 8376, 8382, 8379,
- 957, 848, 923, 8918, 2366, 2287, 3323, 2603, 1824, 2208, 1833, 2026, 8920, 1970, 6725, 1996, 5005, 8921,
- 8919, 1572, 8915, 8916, 8917, 6698, 8899, 380, 39, 39, 3937, 8937, 957, 848, 923, 1, 1731, 366, 8899,
- 366, 8786, 39, 39, 614, 7907, 7904, 6318, 1813, 664, 8905, 9376, 4236, 1156, 2445, 1, 2524, 1563, 9565,
- 9566, 9198, 9196, 9205, 9204, 9200, 9201, 9199, 9202, 9203, 9206, 9197, 1, 4499, 5647, 37, 8427, 8427,
- 765, 3581, 957, 848, 923, 8909, 8899, 366, 8918, 2366, 2287, 3323, 2603, 765, 2208, 1833, 2026, 8920,
- 1970, 6725, 1996, 1677, 8921, 8919, 1572, 8915, 8916, 8917, 6698, 8899, 7907, 7904, 727, 1813, 8899,
- 1628, 8904, 8507, 1156, 1731, 8908, 8899, 3631, 8899, 39, 39, 1, 7920, 7916, 3520, 1813, 8935, 8905,
- 8899, 4236, 1156, 2445, 582, 2524, 8444, 8483, 8480, 8471, 8477, 8450, 8453, 8465, 8462, 8468, 8459,
- 8456, 8447, 8474, 8899, 8899, 5647, 8899, 7907, 7904, 1, 1813, 8899, 3588, 1048, 8507, 1156, 8899, 8918,
- 2366, 2287, 3323, 2603, 148, 2208, 1833, 2026, 8920, 1970, 6725, 1996, 5304, 8921, 8919, 1572, 8915,
- 8916, 8917, 6698, 37, 8427, 8427, 8899, 8806, 8802, 657, 8904, 8899, 99, 1731, 8816, 8822, 8819, 8899,
- 39, 39, 39, 7907, 7904, 6318, 1813, 1511, 8899, 8899, 4236, 1156, 2445, 8519, 2524, 1563, 9565, 9566,
- 9198, 9196, 9205, 9204, 9200, 9201, 9199, 9202, 9203, 9206, 9197, 1278, 1847, 5647, 2, 1, 3690, 5276,
- 3937, 1, 8899, 1609, 3937, 5905, 8935, 8918, 2366, 2287, 3323, 2603, 376, 2208, 1833, 2026, 8920, 1970,
- 6725, 1996, 3581, 8921, 8919, 1572, 8915, 8916, 8917, 6698, 8840, 5199, 4526, 1, 8899, 8522, 8899, 5917,
- 100, 1626, 1731, 39, 7907, 7904, 6318, 1813, 8534, 8905, 218, 4236, 1156, 2445, 8903, 2524, 1563, 9565,
- 9566, 9198, 9196, 9205, 9204, 9200, 9201, 9199, 9202, 9203, 9206, 9197, 8899, 1677, 5647, 6039, 576,
- 1677, 576, 8899, 376, 376, 376, 8899, 14804, 14755, 8918, 2366, 2287, 3323, 2603, 3188, 2208, 1833,
- 2026, 8920, 1970, 6725, 1996, 8537, 8921, 8919, 1572, 8915, 8916, 8917, 6698, 39, 7907, 7904, 6318,
- 1813, 8786, 1, 8904, 4236, 1156, 2445, 8519, 2524, 1563, 9565, 9566, 9198, 9196, 9205, 9204, 9200, 9201,
- 9199, 9202, 9203, 9206, 9197, 656, 8899, 5647, 8935, 454, 8825, 8831, 8828, 8899, 957, 848, 923, 8905,
- 147, 8918, 2366, 2287, 3323, 2603, 8899, 2208, 1833, 2026, 8920, 1970, 6725, 1996, 138, 8921, 8919,
- 1572, 8915, 8916, 8917, 6698, 1, 649, 134, 8902, 8899, 8522, 39, 7907, 7904, 6318, 1813, 224, 8627,
- 8893, 4236, 1156, 2445, 123, 2524, 1563, 9565, 9566, 9198, 9196, 9205, 9204, 9200, 9201, 9199, 9202,
- 9203, 9206, 9197, 8899, 8899, 5647, 8899, 8899, 8899, 6315, 8904, 6106, 4189, 73, 5276, 8907, 224, 8918,
- 2366, 2287, 3323, 2603, 8899, 2208, 1833, 2026, 8920, 1970, 6725, 1996, 3294, 8921, 8919, 1572, 8915,
- 8916, 8917, 6698, 8631, 39, 7907, 7904, 6318, 1813, 5199, 4526, 1670, 4236, 1156, 2445, 5904, 2524,
- 1563, 9565, 9566, 9198, 9196, 9205, 9204, 9200, 9201, 9199, 9202, 9203, 9206, 9197, 4343, 8899, 5647,
- 1180, 879, 958, 2483, 8899, 4565, 8899, 6340, 1245, 8905, 8869, 8918, 2366, 2287, 3323, 2603, 8906,
- 2208, 1833, 2026, 8920, 1970, 6725, 1996, 8899, 8921, 8919, 1572, 8915, 8916, 8917, 6698, 2, 3471, 132,
- 39, 7907, 7904, 3520, 1813, 8899, 8899, 1731, 4236, 1156, 2445, 4717, 2524, 1563, 9565, 9566, 9198,
- 9196, 9205, 9204, 9200, 9201, 9199, 9202, 9203, 9206, 9197, 1, 638, 5647, 8899, 103, 8899, 6759, 8837,
- 636, 8899, 8904, 194, 8738, 8899, 8918, 2366, 2287, 3323, 2603, 8746, 2208, 1833, 2026, 8920, 1970,
- 6725, 1996, 8899, 8921, 8919, 1572, 8915, 8916, 8917, 6698, 8899, 37, 8899, 39, 7907, 7904, 3520, 1813,
- 8899, 8899, 1731, 4236, 1156, 2445, 8899, 2524, 1563, 9565, 9566, 9198, 9196, 9205, 9204, 9200, 9201,
- 9199, 9202, 9203, 9206, 9197, 1, 87, 5647, 8742, 8899, 8899, 8899, 6319, 8899, 194, 8750, 196, 8754,
- 8899, 8918, 2366, 2287, 3323, 2603, 8899, 2208, 1833, 2026, 8920, 1970, 6725, 1996, 8899, 8921, 8919,
- 1572, 8915, 8916, 8917, 6698, 8899, 8899, 8899, 39, 7907, 7904, 6318, 1813, 8899, 8899, 1731, 4236,
- 1156, 2445, 8899, 2524, 1563, 9565, 9566, 9198, 9196, 9205, 9204, 9200, 9201, 9199, 9202, 9203, 9206,
- 9197, 1, 1, 5647, 8758, 8899, 8899, 8899, 1326, 8899, 196, 313, 590, 8905, 8887, 8918, 2366, 2287, 3323,
- 2603, 3373, 2208, 1833, 2026, 8920, 1970, 6725, 1996, 546, 8921, 8919, 1572, 8915, 8916, 8917, 6698,
- 8899, 8899, 8899, 39, 7907, 7904, 5735, 1813, 8899, 122, 1731, 4236, 1156, 2445, 8899, 2524, 1563, 9565,
- 9566, 9198, 9196, 9205, 9204, 9200, 9201, 9199, 9202, 9203, 9206, 9197, 8, 103, 5647, 8899, 8837, 8899,
- 7661, 8899, 8899, 590, 8904, 8896, 1, 8899, 8918, 2366, 2287, 3323, 2603, 3422, 2208, 1833, 2026, 8920,
- 1970, 6725, 1996, 8899, 8921, 8919, 1572, 8915, 8916, 8917, 6698, 39, 7907, 7904, 5885, 1813, 8899,
- 8899, 722, 4236, 1156, 2445, 8899, 2524, 1563, 9565, 9566, 9198, 9196, 9205, 9204, 9200, 9201, 9199,
- 9202, 9203, 9206, 9197, 879, 958, 5647, 8899, 755, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899,
- 8918, 2366, 2287, 3323, 2603, 8896, 2208, 1833, 2026, 8920, 1970, 6725, 1996, 8899, 8921, 8919, 1572,
- 8915, 8916, 8917, 6698, 39, 7907, 7904, 6204, 1813, 8899, 8899, 8899, 4236, 1156, 2445, 8899, 2524,
- 1563, 9565, 9566, 9198, 9196, 9205, 9204, 9200, 9201, 9199, 9202, 9203, 9206, 9197, 8899, 8899, 5647,
- 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8918, 2366, 2287, 3323, 2603, 8899,
- 2208, 1833, 2026, 8920, 1970, 6725, 1996, 8899, 8921, 8919, 1572, 8915, 8916, 8917, 6698, 39, 7907,
- 7904, 6251, 1813, 8899, 8899, 8899, 4236, 1156, 2445, 8899, 2524, 1563, 9565, 9566, 9198, 9196, 9205,
- 9204, 9200, 9201, 9199, 9202, 9203, 9206, 9197, 8899, 8899, 5647, 8899, 8899, 8899, 8899, 8899, 8899,
- 8899, 8899, 8899, 8899, 8899, 8918, 2366, 2287, 3323, 2603, 8899, 2208, 1833, 2026, 8920, 1970, 6725,
- 1996, 8899, 8921, 8919, 1572, 8915, 8916, 8917, 6698, 39, 7907, 7904, 6318, 1813, 8899, 8899, 8899,
- 4236, 1156, 2445, 8899, 2524, 1563, 9565, 9566, 9198, 9196, 9205, 9204, 9200, 9201, 9199, 9202, 9203,
- 9206, 9197, 8899, 8899, 5647, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8918,
- 2366, 2287, 3323, 2603, 8899, 2208, 1833, 2026, 8920, 1970, 6725, 1996, 8899, 8921, 8919, 1572, 8915,
- 8916, 8917, 6698, 39, 7907, 7904, 7484, 1813, 8899, 8899, 8899, 4236, 1156, 2445, 8899, 2524, 1563,
- 9565, 9566, 9198, 9196, 9205, 9204, 9200, 9201, 9199, 9202, 9203, 9206, 9197, 8899, 8899, 5647, 8899,
- 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8918, 2366, 2287, 3323, 2603, 8899, 2208,
- 1833, 2026, 8920, 1970, 6725, 1996, 8899, 8921, 8919, 1572, 8915, 8916, 8917, 6698, 39, 7907, 7904,
- 3520, 1813, 8899, 8899, 8899, 4236, 1156, 2445, 8899, 2524, 1563, 9565, 9566, 9198, 9196, 9205, 9204,
- 9200, 9201, 9199, 9202, 9203, 9206, 9197, 8899, 8899, 5647, 8899, 8899, 8899, 8899, 8899, 8899, 8899,
- 8899, 8899, 8899, 8899, 8918, 2366, 2287, 3323, 2603, 8899, 2208, 1833, 2026, 8920, 1970, 6725, 1996,
- 8899, 8921, 8919, 1572, 8915, 8916, 8917, 6698, 39, 7907, 7904, 3520, 1813, 8899, 8899, 8899, 4236,
- 1156, 2445, 8899, 2524, 1563, 9565, 9566, 9198, 9196, 9205, 9204, 9200, 9201, 9199, 9202, 9203, 9206,
- 9197, 8899, 8899, 5647, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8918, 2366,
- 2287, 3323, 2603, 8899, 2208, 1833, 2026, 8920, 1970, 6725, 1996, 8899, 8921, 8919, 1572, 8915, 8916,
- 8917, 6698, 39, 7907, 7904, 6318, 1813, 8899, 8899, 8899, 4236, 1156, 2445, 8899, 2524, 1563, 9565,
- 9566, 9198, 9196, 9205, 9204, 9200, 9201, 9199, 9202, 9203, 9206, 9197, 1, 8899, 5647, 1730, 8899, 8899,
- 8899, 8899, 9404, 8899, 9398, 8899, 9402, 8899, 8918, 2366, 2287, 3323, 2603, 8899, 2208, 1833, 2026,
- 8920, 1970, 6725, 1996, 8899, 8921, 8919, 1572, 8915, 8916, 8917, 6698, 8899, 8899, 8899, 8899, 8899,
- 8899, 8899, 9396, 9397, 9427, 9428, 8899, 9405, 8899, 8899, 380, 7907, 7904, 5568, 1813, 957, 848, 923,
- 826, 1156, 366, 8899, 366, 8899, 8899, 8899, 9407, 8899, 8899, 8899, 1062, 8899, 8899, 9429, 8899, 9408,
- 8899, 2239, 2263, 8899, 9406, 8899, 8899, 9418, 9417, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899,
- 8899, 8899, 8899, 9423, 9424, 8899, 9430, 9421, 9422, 9401, 9403, 9425, 8899, 9399, 9400, 9426, 8899,
- 9411, 9412, 9413, 9409, 9410, 9419, 9420, 9415, 9414, 9416, 1677, 8899, 8899, 8899, 7907, 7904, 9431,
- 8937, 957, 848, 923, 8899, 8899, 8899, 8899, 8899, 810, 9565, 9566, 9198, 9196, 9205, 9204, 9200, 9201,
- 9199, 9202, 9203, 9206, 9197, 9271, 9272, 5243, 9567, 9193, 9187, 9194, 9190, 9166, 9192, 9191, 9188,
- 9189, 9167, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 275, 8336, 8332,
- 8899, 8340, 8257, 8251, 8254, 8899, 9333, 4751, 9334, 9335, 810, 8329, 8326, 8317, 8323, 8296, 8299,
- 8311, 8308, 8314, 8305, 8302, 8293, 8320, 8266, 8263, 5243, 8260, 8272, 8290, 8269, 8281, 8248, 8275,
- 8278, 8287, 8284, 8245, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899,
- 8913, 8914, 8899, 8899, 957, 848, 923, 8899, 9333, 4751, 9334, 9335, 1655, 9565, 9566, 9198, 9196, 9205,
- 9204, 9200, 9201, 9199, 9202, 9203, 9206, 9197, 9271, 9272, 8899, 9567, 9193, 9187, 9194, 9190, 9166,
- 9192, 9191, 9188, 9189, 9167, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899,
- 275, 8729, 8726, 8899, 8899, 8257, 8251, 8254, 8899, 9333, 4751, 9334, 9335, 1655, 8329, 8326, 8317,
- 8323, 8296, 8299, 8311, 8308, 8314, 8305, 8302, 8293, 8320, 8266, 8263, 8899, 8260, 8272, 8290, 8269,
- 8281, 8248, 8275, 8278, 8287, 8284, 8245, 29, 423, 423, 8660, 423, 423, 423, 423, 423, 423, 8660, 8660,
- 8660, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 9333, 4751, 9334, 9335, 8899, 8899, 423, 423,
- 8899, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 8899, 8899, 8899, 126, 8899, 8660, 8899,
- 638, 649, 649, 649, 649, 649, 649, 649, 649, 649, 8866, 8861, 8866, 8899, 8899, 8899, 8899, 8899, 8370,
- 8899, 8899, 8899, 8660, 8899, 8899, 8899, 8660, 649, 649, 8899, 649, 649, 649, 649, 649, 649, 649, 649,
- 649, 649, 649, 8899, 8899, 8899, 128, 8899, 8866, 8899, 32, 424, 424, 8657, 424, 424, 424, 424, 424,
- 424, 8657, 8657, 8657, 8899, 5541, 8899, 8899, 8899, 8899, 8522, 8899, 8899, 649, 8651, 8899, 8899,
- 8866, 424, 424, 8899, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 8899, 8899, 8899, 5487,
- 5460, 8657, 8899, 637, 648, 648, 648, 648, 648, 648, 648, 648, 648, 8774, 8774, 8774, 8899, 5541, 8899,
- 8899, 8899, 8899, 8899, 5433, 5406, 8657, 8796, 8899, 8899, 8657, 648, 648, 8899, 648, 648, 648, 648,
- 648, 648, 648, 648, 648, 648, 648, 8899, 8899, 8899, 5487, 5460, 8774, 8899, 37, 8914, 8914, 8914, 8914,
- 8914, 8914, 8914, 8899, 8899, 8914, 8899, 8914, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 5433, 5406,
- 648, 8899, 8899, 8899, 8774, 8914, 8914, 8899, 8914, 8914, 8914, 8914, 8914, 8914, 8914, 8914, 8914,
- 8914, 8914, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 37, 8913, 8913, 8913, 8913, 8913, 8913,
- 8913, 8899, 8899, 8913, 127, 8913, 8899, 1, 7920, 7916, 5568, 7913, 8899, 8899, 8914, 826, 1156, 8914,
- 402, 8914, 8913, 8913, 8899, 8913, 8913, 8913, 8913, 8913, 8913, 8913, 8913, 8913, 8913, 8913, 344,
- 7920, 7916, 4619, 7913, 8343, 8349, 8346, 826, 1156, 8352, 8899, 8352, 8899, 7920, 7916, 4619, 7913,
- 8343, 8349, 8346, 826, 1156, 8412, 75, 8412, 8899, 8403, 8899, 8913, 8899, 8899, 8913, 8899, 8913, 8899,
- 5541, 8899, 8899, 8899, 8899, 8899, 8899, 1677, 8899, 8799, 402, 402, 402, 8899, 8899, 8899, 8899, 1458,
- 1, 7920, 7916, 4619, 7913, 8343, 8349, 8346, 826, 1156, 8899, 344, 5487, 5460, 8394, 8391, 8899, 402,
- 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899,
- 8899, 5433, 5406, 8899, 8899, 8406, 8899, 8899, 8899, 8899, 8899, 344, 8899, 8899, 8899, 8899, 8899,
- 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899,
- 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899,
- 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8899, 8397, 8899, 8400 };
- }
-
- public final static char termAction[] = TermAction.termAction;
-
- @Override
- public final int termAction(int index) {
- return termAction[index];
- }
-
- public interface Asb {
- public final static char asb[] = { 0, 1315, 1, 1306, 11, 287, 1353, 687, 687, 687, 1262, 8, 870, 1314, 94, 853,
- 736, 1177, 736, 736, 736, 1190, 200, 1190, 867, 1190, 878, 1190, 1190, 94, 856, 1190, 1171, 814, 3,
- 1353, 1250, 1109, 1190, 1190, 19, 856, 1190, 856, 736, 750, 103, 103, 424, 103, 637, 200, 872, 326, 872,
- 856, 854, 14, 734, 527, 1046, 98, 869, 533, 867, 198, 94, 878, 259, 856, 856, 685, 96, 814, 814, 814,
- 814, 814, 814, 814, 814, 814, 814, 1111, 814, 1048, 736, 750, 750, 750, 750, 94, 736, 1190, 557, 557,
- 634, 571, 203, 203, 1253, 758, 633, 1250, 1250, 856, 932, 528, 259, 259, 1190, 470, 528, 1190, 1190,
- 750, 1190, 856, 683, 960, 114, 103, 103, 102, 102, 200, 94, 856, 854, 692, 546, 691, 347, 527, 733, 528,
- 98, 856, 554, 1163, 552, 685, 200, 538, 856, 259, 685, 856, 679, 1048, 1048, 1048, 1048, 1002, 286, 683,
- 1190, 528, 528, 528, 774, 939, 793, 793, 287, 287, 287, 287, 856, 483, 531, 531, 483, 813, 557, 200, 94,
- 571, 426, 1250, 1190, 856, 813, 1068, 1250, 571, 679, 1190, 1190, 259, 259, 1253, 470, 470, 854, 960,
- 114, 102, 102, 102, 856, 634, 634, 14, 634, 1364, 1046, 950, 949, 526, 541, 856, 98, 1161, 870, 750,
- 852, 1367, 98, 554, 553, 557, 554, 557, 685, 538, 538, 856, 424, 289, 85, 591, 596, 593, 1048, 401, 399,
- 406, 404, 408, 407, 409, 473, 410, 423, 856, 96, 856, 528, 528, 528, 528, 470, 286, 813, 1190, 775,
- 1253, 956, 211, 210, 689, 600, 598, 607, 605, 609, 608, 610, 611, 696, 1196, 1196, 94, 1111, 814, 528,
- 528, 424, 424, 424, 424, 685, 528, 813, 853, 855, 853, 528, 470, 200, 738, 856, 736, 470, 624, 1250,
- 1257, 528, 541, 200, 1250, 571, 1260, 1190, 424, 424, 1190, 528, 215, 935, 214, 423, 750, 333, 333, 541,
- 541, 102, 856, 857, 528, 347, 528, 482, 528, 528, 683, 1369, 557, 557, 557, 557, 856, 538, 540, 742,
- 540, 59, 72, 72, 72, 72, 54, 94, 814, 814, 814, 814, 814, 814, 814, 747, 814, 814, 814, 814, 814, 814,
- 814, 814, 814, 814, 814, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 814, 793, 679,
- 1190, 1190, 1190, 1069, 814, 287, 1190, 1190, 528, 774, 1161, 814, 1161, 634, 773, 736, 736, 736, 775,
- 736, 856, 887, 634, 634, 856, 200, 939, 528, 958, 960, 813, 814, 814, 814, 814, 814, 814, 814, 814, 814,
- 814, 814, 814, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 1116, 814, 856, 683, 1200, 1048,
- 736, 736, 736, 736, 856, 856, 856, 855, 683, 544, 94, 856, 483, 541, 1068, 1190, 1190, 561, 813, 212,
- 212, 954, 1253, 219, 114, 103, 114, 422, 422, 541, 634, 528, 950, 854, 633, 814, 1161, 572, 752, 630,
- 1369, 557, 557, 339, 540, 541, 814, 856, 856, 593, 593, 591, 591, 591, 814, 399, 399, 399, 596, 596,
- 404, 401, 401, 407, 406, 408, 1161, 409, 528, 1190, 1253, 764, 775, 1161, 859, 775, 793, 793, 791, 773,
- 793, 634, 634, 578, 772, 528, 960, 598, 598, 598, 598, 598, 598, 605, 600, 600, 608, 607, 609, 1161,
- 1161, 610, 685, 854, 528, 813, 813, 813, 813, 736, 736, 96, 856, 854, 544, 528, 1068, 1190, 353, 561,
- 813, 813, 958, 935, 114, 287, 287, 482, 634, 1369, 814, 814, 630, 630, 1369, 1369, 738, 149, 340, 856,
- 541, 685, 862, 813, 1190, 1190, 1190, 813, 1190, 775, 814, 775, 528, 1250, 528, 791, 1353, 736, 528,
- 544, 580, 528, 813, 813, 856, 363, 528, 528, 528, 528, 483, 483, 1312, 1190, 96, 765, 736, 540, 1190,
- 564, 423, 630, 630, 339, 856, 94, 94, 856, 856, 1190, 483, 814, 470, 775, 578, 775, 634, 1353, 813, 775,
- 772, 580, 580, 1233, 528, 528, 1312, 219, 1190, 154, 564, 324, 856, 856, 856, 1190, 528, 470, 813, 773,
- 483, 634, 528, 583, 580, 528, 528, 1247, 1190, 1190, 736, 333, 856, 856, 775, 528, 634, 583, 583, 200,
- 200, 1249, 961, 422, 775, 583, 950, 853, 287 };
- }
-
- public final static char asb[] = Asb.asb;
-
- @Override
- public final int asb(int index) {
- return asb[index];
- }
-
- public interface Asr {
- public final static char asr[] = { 0, 129, 0, 11, 76, 67, 79, 0, 41, 54, 0, 3, 28, 0, 11, 76, 74, 41, 0, 29, 78,
- 77, 42, 43, 106, 107, 102, 103, 8, 47, 80, 66, 113, 114, 110, 111, 112, 118, 117, 119, 84, 83, 115, 116,
- 100, 101, 96, 97, 104, 108, 44, 45, 99, 126, 13, 63, 62, 64, 65, 17, 26, 16, 22, 20, 21, 23, 24, 19, 18,
- 25, 14, 15, 32, 38, 39, 34, 37, 36, 31, 33, 27, 28, 30, 35, 40, 75, 73, 5, 12, 10, 6, 7, 3, 70, 1, 2, 4,
- 0, 123, 124, 125, 76, 81, 9, 11, 3, 12, 10, 8, 46, 71, 68, 90, 69, 14, 15, 30, 5, 32, 16, 17, 62, 27,
- 18, 63, 33, 34, 19, 35, 36, 20, 21, 37, 38, 22, 23, 39, 64, 54, 40, 13, 65, 24, 25, 28, 26, 29, 6, 7, 1,
- 2, 4, 31, 0, 77, 78, 72, 44, 45, 12, 10, 42, 43, 8, 47, 52, 61, 29, 3, 4, 9, 58, 59, 60, 41, 56, 50, 55,
- 14, 15, 17, 26, 16, 22, 20, 21, 23, 24, 19, 18, 25, 13, 49, 53, 51, 48, 57, 81, 1, 2, 67, 11, 0, 5, 79,
- 76, 46, 67, 6, 7, 3, 70, 75, 80, 73, 11, 74, 98, 0, 14, 15, 30, 5, 32, 16, 17, 62, 27, 18, 63, 33, 34,
- 19, 35, 36, 20, 21, 37, 38, 22, 23, 39, 64, 40, 13, 65, 24, 31, 25, 28, 26, 1, 2, 4, 29, 6, 7, 98, 0,
- 48, 77, 49, 50, 78, 9, 51, 52, 53, 55, 72, 56, 57, 58, 59, 60, 41, 44, 45, 12, 10, 42, 43, 8, 47, 75,
- 61, 3, 29, 4, 13, 1, 2, 63, 64, 65, 14, 15, 17, 26, 16, 22, 20, 21, 23, 24, 19, 18, 25, 32, 38, 39, 34,
- 37, 36, 31, 33, 27, 28, 30, 5, 7, 6, 35, 40, 62, 0, 5, 11, 67, 6, 7, 80, 0, 75, 80, 73, 1, 2, 0, 31, 1,
- 2, 4, 123, 124, 125, 0, 11, 73, 74, 1, 27, 0, 72, 79, 128, 126, 44, 45, 76, 98, 127, 81, 33, 34, 35, 36,
- 37, 9, 38, 39, 40, 31, 28, 1, 2, 70, 3, 27, 32, 8, 4, 5, 30, 6, 7, 105, 99, 42, 43, 106, 107, 120, 121,
- 10, 74, 46, 67, 11, 84, 83, 66, 96, 97, 100, 101, 12, 102, 103, 104, 108, 109, 110, 111, 112, 113, 114,
- 115, 116, 117, 118, 119, 80, 73, 75, 0, 77, 78, 3, 13, 49, 53, 51, 48, 57, 17, 26, 16, 22, 20, 21, 23,
- 24, 19, 18, 25, 14, 15, 58, 59, 60, 41, 56, 50, 55, 8, 9, 4, 44, 45, 12, 10, 42, 43, 47, 52, 61, 29, 1,
- 2, 127, 11, 0, 5, 75, 76, 98, 127, 81, 46, 6, 7, 73, 14, 15, 16, 17, 48, 77, 18, 49, 50, 19, 20, 21, 78,
- 9, 51, 22, 23, 52, 53, 55, 72, 56, 57, 13, 24, 25, 26, 58, 59, 60, 2, 3, 44, 45, 12, 10, 42, 43, 8, 47,
- 4, 29, 61, 41, 1, 74, 11, 0, 9, 8, 54, 1, 2, 4, 0, 1, 2, 73, 81, 11, 0, 122, 0, 11, 76, 73, 74, 3, 0, 4,
- 66, 6, 7, 5, 11, 76, 67, 0, 30, 27, 28, 72, 79, 75, 76, 98, 74, 67, 3, 5, 11, 73, 46, 6, 7, 80, 0, 30,
- 27, 28, 72, 11, 75, 98, 80, 73, 74, 0, 105, 99, 10, 106, 107, 42, 43, 84, 83, 66, 96, 97, 120, 121, 100,
- 101, 12, 102, 103, 104, 75, 74, 80, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 76, 98, 127, 81,
- 108, 109, 6, 7, 5, 73, 46, 11, 0, 14, 15, 30, 32, 16, 17, 62, 27, 18, 63, 33, 90, 34, 19, 35, 36, 20,
- 21, 37, 68, 38, 22, 23, 39, 64, 40, 13, 65, 24, 69, 31, 25, 28, 26, 3, 12, 4, 46, 29, 71, 67, 11, 5, 10,
- 6, 7, 9, 8, 1, 2, 54, 0, 127, 46, 73, 74, 11, 76, 0, 14, 15, 30, 5, 32, 16, 17, 27, 18, 33, 34, 19, 35,
- 36, 20, 21, 37, 9, 38, 22, 23, 39, 40, 24, 31, 25, 28, 26, 2, 70, 12, 10, 8, 4, 46, 6, 7, 1, 74, 11, 3,
- 0, 11, 67, 73, 0, 11, 73, 81, 80, 0, 75, 96, 97, 66, 0, 76, 5, 70, 6, 7, 66, 11, 73, 46, 80, 3, 0, 74,
- 90, 123, 124, 125, 54, 76, 129, 122, 130, 81, 71, 79, 69, 68, 85, 87, 94, 92, 82, 89, 91, 93, 95, 67,
- 86, 88, 46, 11, 63, 62, 64, 65, 32, 38, 39, 34, 37, 36, 31, 33, 27, 28, 30, 5, 7, 6, 35, 40, 72, 77, 78,
- 49, 53, 51, 48, 57, 3, 17, 26, 16, 22, 20, 21, 23, 24, 19, 18, 25, 14, 15, 58, 59, 60, 41, 56, 50, 55,
- 44, 45, 12, 10, 42, 43, 47, 52, 61, 29, 13, 4, 9, 8, 2, 1, 0, 76, 98, 0, 74, 11, 84, 83, 0, 54, 4, 76,
- 1, 2, 11, 67, 6, 7, 5, 0, 4, 11, 67, 6, 7, 5, 1, 2, 0, 14, 15, 16, 17, 48, 77, 18, 49, 50, 19, 20, 21,
- 78, 9, 51, 22, 23, 52, 53, 55, 72, 56, 57, 13, 24, 25, 26, 58, 59, 60, 41, 1, 2, 3, 44, 45, 42, 43, 8,
- 47, 4, 29, 61, 46, 11, 10, 12, 0, 98, 9, 8, 80, 75, 5, 1, 2, 12, 10, 4, 6, 7, 70, 3, 74, 11, 73, 0, 8,
- 9, 3, 70, 10, 12, 98, 14, 15, 30, 5, 32, 16, 17, 62, 27, 18, 63, 33, 34, 19, 35, 36, 20, 21, 37, 38, 22,
- 23, 39, 64, 40, 13, 65, 24, 31, 25, 28, 26, 1, 2, 4, 29, 6, 7, 74, 11, 0, 77, 78, 44, 45, 12, 10, 42,
- 43, 8, 47, 52, 61, 29, 3, 4, 9, 58, 59, 60, 56, 50, 55, 14, 15, 17, 26, 16, 22, 20, 21, 23, 24, 19, 18,
- 25, 13, 49, 53, 51, 48, 57, 70, 1, 2, 41, 0, 30, 5, 32, 62, 27, 63, 33, 34, 35, 36, 37, 38, 39, 64, 40,
- 65, 31, 28, 6, 7, 72, 44, 45, 12, 10, 42, 43, 47, 52, 61, 29, 3, 4, 58, 59, 60, 41, 56, 50, 55, 14, 15,
- 17, 26, 16, 22, 20, 21, 23, 24, 19, 18, 25, 13, 49, 53, 51, 48, 57, 67, 11, 9, 8, 1, 2, 78, 77, 0, 14,
- 15, 16, 17, 48, 77, 18, 49, 50, 19, 20, 21, 78, 9, 51, 22, 23, 52, 53, 55, 72, 56, 57, 13, 24, 25, 26,
- 58, 59, 60, 41, 1, 2, 3, 44, 45, 12, 10, 42, 43, 8, 47, 4, 29, 61, 76, 0, 4, 11, 76, 67, 6, 7, 5, 0, 29,
- 13, 63, 62, 64, 65, 17, 26, 16, 22, 20, 21, 23, 24, 19, 18, 25, 14, 15, 79, 76, 98, 127, 81, 67, 128,
- 126, 44, 45, 105, 99, 42, 43, 106, 107, 83, 84, 66, 75, 96, 97, 100, 101, 102, 103, 104, 108, 109, 80,
- 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 73, 120, 121, 30, 32, 27, 33, 34, 35, 36, 37, 38, 39,
- 40, 31, 28, 46, 11, 74, 70, 8, 9, 3, 12, 1, 2, 4, 6, 7, 5, 10, 0, 17, 62, 27, 18, 63, 33, 19, 35, 20,
- 21, 37, 38, 22, 23, 64, 40, 65, 24, 31, 25, 28, 26, 16, 32, 30, 29, 15, 14, 11, 3, 12, 10, 46, 69, 90,
- 34, 39, 36, 71, 66, 6, 7, 5, 54, 9, 1, 2, 4, 13, 68, 8, 0, 81, 14, 15, 30, 32, 16, 17, 62, 27, 18, 63,
- 33, 19, 35, 20, 21, 37, 38, 22, 23, 64, 40, 13, 65, 24, 31, 25, 28, 26, 29, 129, 71, 68, 34, 39, 36, 90,
- 69, 54, 5, 11, 12, 46, 6, 7, 8, 9, 2, 4, 3, 1, 10, 0, 46, 11, 3, 9, 8, 76, 12, 10, 4, 1, 2, 6, 7, 5,
- 0 };
- }
-
- public final static char asr[] = Asr.asr;
-
- @Override
- public final int asr(int index) {
- return asr[index];
- }
-
- public interface Nasb {
- public final static char nasb[] = { 0, 288, 13, 21, 19, 5, 319, 13, 13, 13, 301, 13, 170, 301, 238, 238, 13,
- 274, 13, 13, 13, 275, 250, 275, 163, 275, 163, 275, 13, 11, 240, 275, 267, 62, 154, 156, 233, 195, 13,
- 13, 48, 180, 13, 240, 13, 13, 301, 301, 13, 301, 224, 250, 163, 13, 286, 277, 277, 42, 35, 74, 13, 154,
- 210, 238, 286, 16, 238, 286, 154, 240, 12, 13, 13, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 240, 176,
- 150, 13, 13, 13, 13, 13, 238, 13, 13, 154, 120, 208, 163, 68, 68, 328, 14, 13, 191, 280, 240, 13, 35,
- 154, 154, 37, 96, 35, 13, 13, 13, 13, 12, 46, 154, 154, 301, 301, 154, 154, 250, 238, 174, 195, 35, 13,
- 13, 89, 34, 13, 35, 311, 211, 163, 163, 13, 277, 250, 154, 277, 23, 31, 211, 104, 150, 150, 150, 150,
- 62, 98, 46, 13, 35, 35, 35, 86, 166, 1, 152, 339, 339, 339, 339, 240, 183, 114, 114, 183, 153, 120, 140,
- 55, 286, 91, 191, 286, 240, 83, 60, 157, 163, 227, 163, 163, 23, 23, 328, 96, 96, 195, 308, 308, 288,
- 288, 154, 277, 208, 208, 42, 208, 13, 42, 35, 13, 35, 87, 240, 208, 13, 173, 13, 21, 318, 311, 163, 163,
- 154, 286, 154, 31, 154, 181, 12, 13, 199, 166, 13, 13, 13, 145, 13, 13, 13, 13, 13, 13, 13, 62, 13, 13,
- 211, 13, 12, 35, 35, 35, 35, 96, 339, 83, 248, 214, 328, 165, 68, 68, 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 11, 240, 62, 35, 35, 13, 13, 13, 13, 45, 35, 62, 194, 240, 194, 35, 96, 140, 13, 277,
- 13, 96, 13, 281, 163, 35, 154, 250, 280, 286, 13, 154, 13, 13, 334, 35, 13, 231, 13, 13, 13, 77, 77, 87,
- 87, 288, 174, 13, 35, 89, 35, 62, 35, 35, 46, 156, 154, 154, 100, 100, 211, 181, 108, 13, 13, 274, 275,
- 275, 275, 275, 293, 11, 62, 62, 62, 62, 62, 62, 62, 13, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62,
- 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 153, 62, 23, 104, 248, 248, 248, 243, 62, 339, 154, 126, 35,
- 220, 13, 133, 13, 208, 13, 13, 13, 13, 221, 13, 181, 206, 208, 208, 181, 52, 332, 35, 326, 154, 62, 62,
- 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 259, 62, 240,
- 46, 13, 150, 13, 13, 13, 13, 211, 12, 240, 186, 46, 154, 55, 12, 183, 87, 154, 163, 70, 154, 62, 13, 13,
- 230, 328, 308, 308, 301, 154, 13, 13, 87, 208, 35, 35, 195, 208, 62, 13, 124, 13, 163, 280, 100, 100,
- 79, 108, 87, 62, 181, 240, 13, 13, 13, 13, 13, 62, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
- 35, 40, 334, 13, 221, 13, 13, 221, 263, 263, 306, 13, 263, 208, 208, 13, 154, 35, 308, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 44, 211, 35, 153, 153, 153, 153, 13, 13, 13, 180, 211, 131,
- 35, 60, 154, 70, 70, 62, 62, 326, 189, 308, 339, 339, 62, 208, 157, 62, 62, 286, 163, 280, 13, 13, 238,
- 72, 277, 87, 31, 35, 62, 154, 102, 13, 153, 334, 221, 62, 221, 35, 233, 35, 252, 154, 13, 35, 131, 154,
- 35, 62, 62, 211, 248, 35, 35, 35, 35, 183, 183, 187, 13, 13, 129, 13, 87, 70, 154, 13, 163, 286, 110,
- 277, 238, 238, 12, 211, 40, 183, 62, 96, 221, 13, 221, 208, 157, 153, 221, 129, 70, 154, 13, 35, 35,
- 187, 339, 143, 59, 122, 13, 12, 277, 277, 102, 35, 96, 62, 13, 256, 208, 35, 154, 70, 35, 35, 154, 143,
- 13, 13, 77, 12, 12, 221, 35, 208, 122, 154, 52, 52, 231, 338, 13, 221, 122, 35, 194, 339 };
- }
-
- public final static char nasb[] = Nasb.nasb;
-
- @Override
- public final int nasb(int index) {
- return nasb[index];
- }
-
- public interface Nasr {
- public final static char nasr[] = { 0, 3, 13, 10, 9, 149, 204, 148, 121, 147, 146, 4, 2, 0, 215, 0, 36, 1, 0,
- 234, 0, 181, 0, 4, 10, 9, 2, 13, 140, 5, 0, 2, 89, 0, 202, 32, 0, 5, 226, 0, 172, 0, 164, 0, 2, 143, 89,
- 0, 5, 54, 227, 0, 36, 56, 0, 194, 4, 193, 0, 102, 105, 36, 13, 2, 9, 10, 4, 0, 101, 0, 63, 0, 224, 0,
- 233, 32, 0, 131, 0, 4, 123, 223, 0, 5, 33, 0, 5, 102, 0, 200, 0, 13, 2, 9, 10, 4, 103, 0, 206, 0, 133,
- 0, 170, 0, 89, 167, 166, 0, 178, 0, 4, 123, 190, 0, 4, 2, 9, 10, 168, 0, 184, 0, 156, 0, 222, 0, 5, 208,
- 0, 142, 0, 186, 0, 13, 2, 9, 10, 4, 236, 0, 36, 185, 0, 187, 0, 13, 2, 9, 10, 4, 36, 56, 54, 41, 5, 0,
- 107, 5, 4, 10, 9, 2, 73, 38, 0, 32, 109, 110, 5, 0, 38, 1, 0, 38, 127, 0, 4, 10, 9, 13, 3, 1, 0, 5, 113,
- 0, 2, 144, 0, 110, 109, 38, 73, 83, 4, 10, 9, 2, 0, 149, 228, 148, 121, 147, 146, 0, 5, 41, 47, 0, 53,
- 2, 3, 0, 5, 51, 36, 41, 210, 0, 102, 41, 51, 91, 36, 5, 0, 38, 89, 0, 32, 110, 109, 73, 2, 9, 10, 5, 4,
- 0, 2, 53, 0, 4, 10, 9, 2, 13, 105, 104, 36, 0, 54, 5, 211, 0, 5, 209, 0, 5, 41, 143, 0, 5, 54, 125, 0,
- 2, 4, 121, 118, 119, 120, 165, 13, 79, 0, 2, 82, 0, 5, 4, 10, 9, 2, 73, 27, 0, 126, 88, 51, 5, 0, 121,
- 79, 13, 118, 119, 120, 198, 0, 5, 51, 88, 98, 0, 41, 212, 31, 5, 0, 5, 51, 88, 123, 49, 4, 0, 47, 4, 2,
- 9, 10, 5, 183, 0, 31, 5, 4, 38, 107, 0, 110, 109, 38, 4, 83, 0, 32, 5, 54, 0 };
- }
-
- public final static char nasr[] = Nasr.nasr;
-
- @Override
- public final int nasr(int index) {
- return nasr[index];
- }
-
- public interface TerminalIndex {
- public final static char terminalIndex[] = { 0, 118, 119, 2, 31, 51, 129, 130, 13, 84, 10, 120, 9, 105, 48, 49,
- 53, 57, 65, 73, 79, 80, 91, 92, 107, 110, 112, 59, 111, 127, 50, 109, 52, 69, 71, 75, 78, 81, 88, 94,
- 103, 117, 11, 12, 7, 8, 125, 14, 60, 66, 72, 89, 93, 95, 98, 99, 102, 104, 114, 115, 116, 128, 58, 68,
- 96, 106, 19, 126, 82, 108, 1, 131, 100, 44, 123, 20, 30, 63, 83, 101, 33, 124, 113, 17, 18, 54, 55, 61,
- 62, 64, 70, 74, 76, 77, 90, 97, 21, 22, 32, 6, 23, 24, 25, 26, 27, 4, 15, 16, 28, 29, 34, 35, 36, 37,
- 38, 39, 40, 41, 42, 43, 45, 46, 56, 85, 86, 87, 5, 122, 3, 132, 67, 121 };
- }
-
- public final static char terminalIndex[] = TerminalIndex.terminalIndex;
-
- @Override
- public final int terminalIndex(int index) {
- return terminalIndex[index];
- }
-
- public interface NonterminalIndex {
- public final static char nonterminalIndex[] = { 0, 138, 143, 144, 0, 0, 142, 0, 0, 246, 252, 141, 0, 151, 0,
- 140, 0, 0, 150, 156, 0, 0, 157, 166, 167, 168, 169, 264, 0, 0, 0, 196, 134, 159, 0, 170, 137, 171, 265,
- 172, 173, 139, 149, 174, 175, 176, 0, 136, 177, 193, 0, 0, 146, 145, 160, 178, 188, 0, 0, 0, 0, 0, 0,
- 203, 179, 180, 0, 220, 0, 0, 181, 182, 217, 221, 153, 183, 184, 0, 185, 202, 0, 0, 0, 163, 191, 0, 0, 0,
- 0, 0, 0, 187, 0, 0, 0, 0, 0, 0, 194, 0, 0, 222, 135, 133, 234, 0, 165, 218, 224, 225, 226, 0, 228, 0,
- 154, 0, 0, 223, 205, 206, 207, 209, 236, 237, 0, 190, 195, 212, 0, 0, 227, 0, 0, 0, 241, 0, 243, 0, 257,
- 0, 260, 0, 261, 0, 155, 197, 198, 199, 200, 204, 208, 211, 0, 214, 0, 215, 0, 230, 233, 0, 255, 0, 256,
- 0, 269, 272, 147, 148, 152, 0, 0, 162, 164, 0, 186, 0, 201, 0, 0, 0, 210, 0, 213, 219, 0, 231, 232, 0,
- 0, 238, 245, 0, 249, 250, 251, 254, 0, 0, 258, 0, 266, 0, 268, 0, 271, 0, 0, 158, 161, 0, 189, 0, 192,
- 0, 0, 216, 229, 235, 0, 0, 239, 240, 242, 244, 0, 247, 248, 253, 259, 262, 263, 0, 0, 267, 0, 0, 270, 0,
- 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static char nonterminalIndex[] = NonterminalIndex.nonterminalIndex;
-
- @Override
- public final int nonterminalIndex(int index) {
- return nonterminalIndex[index];
- }
-
- public interface ScopePrefix {
- public final static char scopePrefix[] = { 265, 429, 731, 750, 418, 447, 682, 698, 709, 720, 501, 373, 387, 404,
- 465, 133, 398, 521, 559, 273, 739, 625, 98, 111, 142, 162, 171, 176, 181, 236, 301, 460, 471, 98, 593,
- 71, 250, 379, 393, 653, 118, 250, 511, 98, 758, 118, 323, 354, 7, 39, 39, 63, 67, 79, 90, 105, 152, 167,
- 197, 105, 490, 494, 577, 618, 647, 674, 678, 768, 772, 776, 188, 83, 188, 539, 555, 568, 586, 605, 666,
- 207, 207, 335, 425, 568, 689, 705, 716, 727, 313, 636, 19, 31, 60, 147, 147, 262, 328, 13, 147, 349,
- 370, 13, 13, 147, 498, 615, 622, 262, 147, 791, 1, 13, 54, 201, 476, 543, 583, 1, 598, 147, 216, 410,
- 476, 216, 216, 437, 530, 283, 437, 24, 24, 45, 45, 195, 45, 45, 45, 45, 581, 780, 787, 24, 24, 49, 344,
- 780, 787, 156, 549, 243, 195, 344, 195, 359 };
- }
-
- public final static char scopePrefix[] = ScopePrefix.scopePrefix;
-
- @Override
- public final int scopePrefix(int index) {
- return scopePrefix[index];
- }
-
- public interface ScopeSuffix {
- public final static char scopeSuffix[] = { 94, 241, 43, 43, 241, 241, 43, 43, 43, 43, 508, 241, 186, 241, 103,
- 139, 384, 527, 565, 279, 158, 631, 103, 116, 116, 116, 150, 150, 186, 241, 306, 109, 109, 103, 43, 76,
- 255, 384, 192, 658, 129, 258, 516, 745, 763, 123, 317, 317, 11, 43, 43, 43, 43, 43, 94, 109, 43, 150,
- 186, 109, 186, 186, 241, 352, 43, 43, 43, 43, 43, 352, 789, 87, 192, 508, 508, 508, 590, 609, 658, 211,
- 225, 339, 413, 572, 693, 693, 693, 693, 317, 640, 22, 22, 43, 150, 150, 43, 43, 331, 333, 352, 43, 11,
- 11, 333, 186, 43, 352, 43, 651, 43, 4, 16, 57, 204, 479, 546, 57, 612, 601, 670, 211, 413, 661, 219,
- 230, 454, 533, 286, 440, 29, 37, 47, 96, 186, 482, 484, 486, 488, 186, 782, 782, 26, 34, 51, 346, 784,
- 784, 158, 551, 245, 308, 339, 293, 361 };
- }
-
- public final static char scopeSuffix[] = ScopeSuffix.scopeSuffix;
-
- @Override
- public final int scopeSuffix(int index) {
- return scopeSuffix[index];
- }
-
- public interface ScopeLhs {
- public final static char scopeLhs[] = { 49, 120, 18, 18, 87, 120, 18, 18, 18, 18, 94, 100, 50, 87, 119, 85, 60,
- 94, 93, 49, 18, 20, 198, 3, 7, 8, 190, 190, 189, 118, 49, 119, 119, 150, 55, 28, 104, 61, 50, 168, 161,
- 104, 94, 18, 18, 161, 111, 66, 84, 165, 19, 19, 199, 163, 97, 198, 193, 190, 189, 150, 213, 58, 56, 172,
- 19, 18, 18, 18, 18, 18, 12, 142, 189, 94, 93, 93, 77, 46, 168, 122, 122, 83, 87, 93, 18, 18, 18, 18,
- 111, 20, 134, 155, 17, 194, 190, 215, 109, 117, 68, 101, 67, 183, 84, 150, 95, 173, 172, 206, 168, 17,
- 18, 84, 92, 189, 150, 125, 92, 22, 55, 168, 122, 87, 168, 122, 122, 120, 94, 49, 120, 134, 155, 204,
- 228, 189, 176, 148, 147, 146, 90, 166, 53, 134, 155, 236, 83, 166, 53, 193, 125, 118, 49, 83, 49, 66 };
- }
-
- public final static char scopeLhs[] = ScopeLhs.scopeLhs;
-
- @Override
- public final int scopeLhs(int index) {
- return scopeLhs[index];
- }
-
- public interface ScopeLa {
- public final static char scopeLa[] = { 122, 81, 74, 74, 81, 81, 74, 74, 74, 74, 74, 81, 46, 81, 1, 75, 1, 74,
- 130, 67, 3, 74, 1, 75, 75, 75, 1, 1, 46, 81, 67, 1, 1, 1, 74, 74, 81, 1, 1, 4, 75, 73, 46, 1, 1, 75, 74,
- 74, 1, 74, 74, 74, 74, 74, 122, 1, 74, 1, 46, 1, 46, 46, 81, 127, 74, 74, 74, 74, 74, 127, 1, 74, 1, 74,
- 74, 74, 76, 76, 4, 1, 1, 10, 67, 74, 75, 75, 75, 75, 74, 3, 6, 6, 74, 1, 1, 74, 74, 3, 1, 127, 74, 1, 1,
- 1, 46, 74, 127, 74, 8, 74, 74, 6, 76, 1, 54, 80, 76, 74, 75, 1, 1, 67, 54, 1, 1, 67, 82, 79, 1, 1, 1,
- 29, 1, 46, 1, 63, 62, 62, 46, 4, 4, 1, 1, 98, 12, 4, 4, 3, 1, 67, 1, 10, 1, 3 };
- }
-
- public final static char scopeLa[] = ScopeLa.scopeLa;
-
- @Override
- public final int scopeLa(int index) {
- return scopeLa[index];
- }
-
- public interface ScopeStateSet {
- public final static char scopeStateSet[] = { 441, 367, 266, 266, 468, 367, 266, 266, 266, 266, 121, 455, 441,
- 468, 367, 468, 443, 121, 121, 441, 266, 266, 38, 191, 237, 237, 21, 21, 480, 367, 441, 367, 367, 187,
- 66, 373, 45, 443, 441, 58, 41, 45, 121, 266, 266, 41, 100, 163, 169, 187, 266, 266, 91, 1, 121, 38, 55,
- 21, 480, 187, 36, 443, 109, 18, 266, 266, 266, 266, 266, 266, 241, 8, 480, 121, 121, 121, 74, 332, 58,
- 367, 367, 425, 468, 121, 266, 266, 266, 266, 100, 266, 179, 134, 266, 55, 21, 94, 100, 102, 163, 96,
- 163, 184, 169, 187, 121, 5, 18, 61, 58, 266, 266, 169, 121, 480, 187, 13, 121, 271, 66, 58, 367, 468,
- 58, 367, 367, 367, 121, 441, 367, 179, 134, 370, 39, 480, 370, 369, 369, 369, 24, 63, 138, 179, 134,
- 365, 425, 63, 138, 55, 13, 367, 441, 425, 441, 163 };
- }
-
- public final static char scopeStateSet[] = ScopeStateSet.scopeStateSet;
-
- @Override
- public final int scopeStateSet(int index) {
- return scopeStateSet[index];
- }
-
- public interface ScopeRhs {
- public final static char scopeRhs[] = { 0, 205, 3, 0, 134, 234, 0, 169, 238, 136, 0, 217, 0, 238, 136, 0, 265,
- 217, 0, 265, 169, 0, 265, 0, 169, 0, 241, 265, 0, 241, 0, 215, 169, 0, 191, 265, 0, 191, 0, 205, 3, 29,
- 0, 134, 0, 280, 0, 272, 0, 237, 0, 32, 165, 0, 367, 86, 0, 30, 187, 0, 187, 3, 0, 205, 3, 61, 0, 363, 3,
- 331, 0, 362, 3, 3, 6, 0, 134, 134, 0, 361, 3, 72, 0, 360, 3, 122, 0, 134, 188, 0, 136, 187, 79, 0, 232,
- 0, 258, 0, 220, 184, 135, 13, 0, 144, 0, 184, 135, 13, 0, 143, 0, 290, 136, 66, 133, 0, 20, 0, 326, 136,
- 66, 54, 0, 20, 58, 0, 33, 140, 0, 20, 58, 0, 0, 326, 136, 66, 54, 219, 0, 20, 194, 0, 290, 136, 66, 141,
- 0, 213, 135, 0, 149, 0, 244, 3, 325, 0, 325, 0, 2, 0, 134, 0, 290, 136, 66, 140, 0, 213, 135, 254, 0,
- 213, 135, 31, 254, 0, 213, 135, 355, 31, 0, 137, 220, 184, 135, 0, 136, 0, 220, 184, 135, 0, 142, 136,
- 0, 182, 0, 351, 136, 182, 0, 136, 182, 0, 239, 136, 0, 184, 350, 252, 0, 144, 0, 0, 0, 0, 350, 252, 0,
- 145, 144, 0, 0, 0, 0, 143, 0, 0, 0, 0, 145, 143, 0, 0, 0, 0, 349, 136, 167, 253, 0, 135, 0, 253, 0, 137,
- 0, 0, 135, 0, 348, 136, 167, 236, 0, 135, 0, 0, 44, 135, 0, 0, 164, 3, 0, 136, 316, 315, 136, 79, 314,
- 182, 0, 315, 136, 79, 314, 182, 0, 231, 0, 232, 0, 314, 182, 0, 101, 0, 0, 231, 0, 232, 0, 219, 101, 0,
- 0, 231, 0, 232, 0, 315, 136, 314, 182, 0, 231, 0, 219, 0, 0, 231, 0, 259, 136, 3, 0, 134, 0, 0, 0, 0, 0,
- 259, 136, 3, 240, 0, 248, 3, 0, 224, 0, 154, 0, 200, 184, 135, 0, 10, 0, 0, 0, 0, 200, 0, 9, 0, 0, 237,
- 70, 0, 133, 0, 259, 136, 3, 198, 0, 198, 0, 2, 0, 0, 134, 0, 0, 0, 0, 0, 215, 3, 0, 255, 136, 167, 41,
- 34, 0, 213, 135, 68, 69, 0, 212, 136, 0, 137, 213, 135, 312, 69, 0, 213, 135, 312, 69, 0, 213, 135, 80,
- 132, 68, 0, 255, 136, 167, 283, 68, 0, 283, 68, 0, 137, 0, 0, 135, 0, 255, 136, 167, 283, 258, 68, 0,
- 283, 258, 68, 0, 309, 310, 136, 167, 132, 345, 63, 0, 345, 63, 0, 138, 137, 0, 0, 0, 135, 0, 309, 310,
- 136, 167, 345, 63, 0, 137, 0, 0, 0, 135, 0, 213, 135, 308, 63, 0, 220, 213, 135, 308, 252, 0, 213, 135,
- 308, 252, 0, 184, 135, 0, 98, 144, 0, 208, 0, 207, 0, 206, 0, 205, 0, 306, 136, 162, 0, 306, 136, 182,
- 0, 172, 94, 0, 340, 178, 342, 343, 3, 91, 0, 134, 187, 0, 342, 343, 3, 91, 0, 136, 0, 134, 187, 0, 172,
- 3, 82, 222, 89, 0, 134, 136, 0, 222, 89, 0, 113, 2, 139, 134, 136, 0, 256, 3, 82, 0, 215, 185, 0, 33,
- 177, 0, 185, 0, 191, 33, 177, 0, 256, 3, 95, 0, 222, 163, 256, 3, 93, 0, 67, 187, 0, 256, 3, 93, 0, 134,
- 187, 67, 187, 0, 341, 136, 167, 0, 172, 0, 237, 86, 0, 172, 109, 207, 0, 30, 185, 0, 157, 75, 186, 3, 0,
- 186, 3, 0, 20, 169, 134, 0, 172, 109, 176, 0, 30, 177, 0, 134, 157, 0, 244, 3, 0, 237, 70, 303, 0, 172,
- 70, 0, 205, 3, 337, 78, 135, 0, 134, 0, 0, 0, 0, 337, 78, 135, 0, 2, 153, 134, 0, 0, 0, 0, 205, 3, 52,
- 0, 155, 0, 134, 54, 184, 135, 0, 31, 155, 0, 98, 144, 31, 155, 0, 245, 213, 135, 0, 154, 31, 155, 0,
- 205, 3, 57, 0, 172, 3, 57, 0, 172, 3, 75, 205, 66, 48, 0, 205, 66, 48, 0, 20, 2, 139, 134, 0, 172, 3,
- 75, 205, 66, 51, 0, 205, 66, 51, 0, 172, 3, 75, 205, 66, 53, 0, 205, 66, 53, 0, 172, 3, 75, 205, 66, 49,
- 0, 205, 66, 49, 0, 244, 3, 134, 220, 184, 135, 13, 0, 134, 220, 184, 135, 13, 0, 144, 2, 0, 134, 0, 244,
- 3, 133, 274, 184, 135, 13, 0, 274, 184, 135, 13, 0, 143, 2, 0, 134, 0, 244, 3, 144, 0, 244, 3, 149, 0,
- 172, 70, 149, 0, 298, 0, 31, 0, 31, 147, 0, 183, 0, 142, 0, 172, 3, 0 };
- }
-
- public final static char scopeRhs[] = ScopeRhs.scopeRhs;
-
- @Override
- public final int scopeRhs(int index) {
- return scopeRhs[index];
- }
-
- public interface ScopeState {
- public final static char scopeState[] = { 0, 2089, 2077, 2003, 0, 2154, 1759, 0, 2894, 2105, 2563, 2552, 0,
- 5782, 6413, 6317, 6250, 0, 1385, 998, 0, 1824, 1485, 0, 6306, 6239, 6172, 6105, 6038, 5971, 5904, 5837,
- 5770, 5703, 5303, 5101, 6999, 0, 6853, 4773, 0, 6960, 6978, 5947, 0, 1245, 2364, 1182, 5680, 2285, 2206,
- 2127, 1516, 1352, 0, 3174, 1240, 0, 4804, 1834, 0, 1711, 0, 1769, 1764, 0, 760, 4265, 4499, 4387, 4923,
- 4856, 4638, 3520, 3294, 1098, 2574, 2495, 2416, 2337, 2258, 2179, 2100, 2021, 1942, 1863, 1784, 1019,
- 929, 850, 0, 797, 1626, 0, 796, 0, 2557, 2320, 1292, 1250, 4605, 7423, 4114, 5568, 5164, 3937, 5266,
- 3989, 0, 3512, 2691, 7484, 1179, 2844, 3520, 2796, 6318, 6251, 6204, 5885, 5735, 6306, 6239, 6172, 6105,
- 6038, 5971, 5904, 5837, 5770, 5703, 5303, 5101, 0, 3911, 4755, 3898, 0, 7585, 7581, 7569, 7562, 7671,
- 7645, 7184, 7554, 7550, 7526, 7100, 7507, 6567, 5585, 7493, 7416, 6875, 4746, 756, 4995, 6774, 6384,
- 5704, 5590, 0, 4605, 5847, 7329, 6421, 5318, 739, 4114, 3911, 7316, 5568, 5164, 6505, 4755, 6473, 4619,
- 3898, 5052, 5005, 4952, 4128, 0, 7329, 739, 0, 673, 6377, 4028, 0, 3360, 2750, 7585, 7581, 2640, 2008,
- 1725, 7569, 1923, 7562, 1919, 1704, 1609, 7671, 1294, 4555, 7645, 1574, 7184, 1327, 7554, 7550, 7526,
- 4444, 916, 7100, 7507, 6567, 5585, 909, 7493, 7416, 842, 1231, 6875, 4746, 799, 756, 4995, 6774, 6384,
- 5704, 826, 6377, 5590, 4028, 4161, 3577, 3557, 1813, 722, 4114, 3911, 7316, 5052, 5005, 4605, 4952,
- 5568, 4128, 5164, 6505, 5847, 1511, 1048, 7329, 4755, 6421, 4804, 1834, 6473, 5318, 4619, 3898, 739,
- 6890, 6725, 6698, 5647, 5243, 3294, 5595, 4000, 4343, 4565, 4458, 4414, 4292, 4717, 5541, 5514, 5487,
- 5460, 5433, 5406, 6675, 5680, 1098, 760, 2574, 2495, 2416, 2337, 2258, 2179, 2100, 2021, 1942, 1863,
- 1784, 4265, 4499, 4387, 4923, 4856, 4638, 958, 879, 5276, 5199, 4526, 2129, 2050, 1971, 1892, 1127,
- 6652, 6626, 3520, 1019, 929, 5711, 850, 4236, 3323, 2603, 2524, 2445, 2366, 2287, 2208, 3471, 1245,
- 3838, 3422, 3373, 3791, 3737, 3690, 1628, 1579, 1525, 1182, 3636, 3589, 1458, 3245, 3196, 3147, 3098,
- 3049, 3000, 2951, 2902, 2853, 2803, 2754, 2700, 1298, 1404, 1731, 1352, 1677, 673, 2653, 0, 6853, 6377,
- 4773, 673, 4028, 0, 3911, 6157, 7652, 5052, 7257, 6048, 5005, 4952, 6520, 7630, 6853, 6721, 6536, 6382,
- 6090, 4820, 5981, 6505, 7626, 5847, 4773, 5751, 7612, 7590, 4075, 7240, 5084, 5313, 5070, 4755, 5240,
- 4680, 673, 6121, 4190, 6473, 4667, 4179, 3963, 986, 4033, 6377, 6023, 5956, 4751, 5075, 3924, 5065,
- 4887, 3866, 3958, 4028, 6054, 4605, 7374, 5987, 7436, 7342, 7423, 4128, 6188, 6761, 6524, 6421, 5318,
- 5000, 3898, 0, 7359, 7173, 6306, 6239, 6172, 6105, 6038, 5971, 5904, 5837, 5770, 5703, 5303, 5101, 7215,
- 6864, 6763, 6747, 7194, 7131, 7110, 7047, 7026, 6956, 6935, 6525, 0, 7215, 6864, 6763, 6747, 7194, 7131,
- 7110, 7047, 7026, 6956, 6935, 6525, 7359, 7173, 0 };
- }
-
- public final static char scopeState[] = ScopeState.scopeState;
-
- @Override
- public final int scopeState(int index) {
- return scopeState[index];
- }
-
- public interface InSymb {
- public final static char inSymb[] = { 0, 0, 336, 69, 5, 136, 182, 219, 36, 39, 54, 34, 68, 257, 68, 312, 365,
- 276, 6, 7, 5, 277, 253, 278, 252, 279, 63, 307, 133, 13, 135, 335, 280, 29, 314, 136, 3, 4, 141, 140, 9,
- 8, 133, 135, 198, 54, 54, 54, 66, 54, 41, 283, 258, 132, 169, 135, 135, 3, 3, 3, 3, 167, 350, 308, 169,
- 345, 308, 169, 66, 135, 213, 184, 183, 29, 61, 52, 47, 43, 42, 10, 12, 45, 44, 135, 8, 3, 57, 48, 51,
- 53, 49, 13, 144, 149, 79, 136, 306, 215, 204, 198, 136, 286, 313, 238, 169, 135, 200, 215, 66, 66, 185,
- 70, 3, 77, 78, 133, 132, 213, 184, 3, 66, 75, 136, 167, 167, 283, 80, 213, 213, 366, 41, 295, 3, 364, 1,
- 41, 136, 184, 262, 134, 133, 135, 132, 167, 135, 136, 184, 54, 4, 3, 3, 3, 3, 77, 78, 184, 134, 205,
- 187, 172, 167, 185, 136, 3, 66, 66, 66, 66, 135, 3, 126, 128, 3, 70, 136, 315, 76, 169, 70, 238, 169,
- 135, 3, 80, 73, 215, 184, 12, 10, 136, 136, 136, 70, 70, 220, 136, 136, 136, 136, 167, 135, 258, 137,
- 76, 163, 3, 73, 362, 331, 3, 349, 135, 180, 254, 68, 54, 69, 182, 352, 134, 133, 263, 169, 263, 213,
- 167, 136, 213, 290, 136, 271, 154, 156, 155, 3, 186, 157, 196, 195, 202, 201, 206, 72, 207, 293, 220,
- 298, 220, 205, 205, 205, 205, 70, 337, 3, 163, 136, 136, 3, 241, 240, 305, 166, 157, 170, 168, 174, 171,
- 175, 176, 144, 134, 133, 13, 135, 29, 205, 172, 205, 205, 205, 205, 184, 244, 136, 54, 135, 54, 244,
- 172, 315, 324, 135, 325, 237, 176, 169, 184, 164, 167, 236, 169, 169, 200, 200, 290, 290, 238, 259, 260,
- 162, 261, 326, 54, 13, 62, 255, 255, 136, 213, 10, 1, 73, 163, 3, 41, 1, 184, 136, 263, 263, 136, 136,
- 220, 136, 310, 132, 311, 276, 277, 278, 279, 359, 280, 13, 99, 105, 43, 42, 107, 106, 10, 186, 97, 96,
- 66, 83, 84, 12, 101, 100, 103, 102, 104, 119, 118, 117, 116, 115, 114, 113, 112, 111, 110, 80, 109, 108,
- 73, 4, 163, 163, 163, 163, 234, 3, 338, 185, 164, 341, 88, 86, 1, 172, 11, 95, 93, 91, 89, 82, 92, 94,
- 87, 85, 68, 79, 238, 248, 136, 3, 73, 121, 120, 97, 96, 75, 66, 12, 101, 100, 103, 102, 104, 119, 118,
- 117, 116, 115, 114, 113, 112, 111, 110, 80, 109, 108, 135, 184, 150, 3, 75, 75, 75, 75, 220, 274, 135,
- 213, 184, 316, 73, 213, 3, 136, 167, 10, 136, 163, 80, 248, 215, 3, 136, 73, 73, 75, 66, 262, 262, 255,
- 258, 1, 363, 220, 351, 76, 267, 215, 133, 265, 169, 136, 136, 76, 310, 309, 80, 73, 135, 155, 155, 154,
- 154, 154, 75, 157, 157, 157, 156, 156, 195, 186, 186, 201, 196, 202, 172, 206, 205, 136, 136, 11, 76,
- 367, 237, 76, 3, 3, 3, 222, 3, 132, 172, 132, 187, 259, 136, 157, 157, 157, 157, 157, 157, 168, 166,
- 166, 171, 170, 174, 274, 172, 175, 184, 54, 205, 3, 3, 3, 3, 134, 133, 245, 8, 54, 136, 244, 136, 200,
- 194, 136, 80, 80, 136, 238, 136, 80, 80, 73, 137, 73, 76, 80, 169, 265, 169, 158, 354, 254, 31, 135,
- 309, 184, 157, 76, 163, 300, 303, 70, 214, 76, 98, 76, 256, 185, 256, 343, 162, 82, 256, 136, 163, 259,
- 76, 76, 220, 163, 172, 172, 172, 172, 3, 3, 4, 132, 134, 317, 122, 348, 136, 246, 326, 265, 169, 73,
- 135, 31, 355, 213, 220, 136, 3, 70, 172, 163, 215, 163, 342, 136, 3, 163, 317, 136, 163, 134, 244, 244,
- 4, 3, 233, 73, 136, 75, 213, 135, 135, 300, 244, 237, 80, 222, 178, 306, 172, 246, 136, 98, 360, 185,
- 233, 11, 72, 62, 213, 213, 130, 340, 163, 136, 246, 163, 163, 136, 3, 262, 163, 136, 361, 80, 73 };
- }
-
- public final static char inSymb[] = InSymb.inSymb;
-
- @Override
- public final int inSymb(int index) {
- return inSymb[index];
- }
-
- public interface Name {
- public final static String name[] = { "", "[", "(", ".", ".*", "->", "->*", "++", "--", "&", "*", "+", "-", "~",
- "!", "/", "%", ">>", "<<", "<", ">", "<=", ">=", "==", "!=", "^", "|", "&&", "||", "?", ":", "::",
- "...", "=", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", ",", ">?", "<?", "$empty",
- "_Complex", "_Imaginary", "restrict", "asm", "auto", "bool", "break", "case", "catch", "char", "class",
- "const", "const_cast", "continue", "default", "delete", "do", "double", "dynamic_cast", "else", "enum",
- "explicit", "export", "extern", "false", "float", "for", "friend", "goto", "if", "inline", "int",
- "long", "mutable", "namespace", "new", "operator", "private", "protected", "public", "register",
- "reinterpret_cast", "return", "short", "signed", "sizeof", "static", "static_cast", "struct", "switch",
- "template", "this", "throw", "try", "true", "typedef", "typeid", "typename", "union", "unsigned",
- "using", "virtual", "void", "volatile", "wchar_t", "while", "integer", "floating", "charconst",
- "stringlit", "identifier", "Completion", "EndOfCompletion", "Invalid", "RightBracket", "RightParen",
- "RightBrace", "SemiColon", "LeftBrace", "typeof", "__alignof__", "__attribute__", "__declspec",
- "ERROR_TOKEN", "EOF_TOKEN", "]", ")", "}", ";", "{", "identifier_token", "expression", "id_expression",
- "qualified_or_unqualified_name", "unqualified_id_name", "identifier_name", "template_id_name",
- "nested_name_specifier", "class_or_namespace_name", "nested_name_specifier_with_tem" + "plate",
- "class_or_namespace_name_with_t" + "emplate", "class_name", "postfix_expression",
- "simple_type_specifier", "pseudo_destructor_name", "type_id", "type_name", "destructor_type_name",
- "unary_expression", "cast_expression", "new_type_id", "expression_list", "type_specifier_seq",
- "new_declarator", "new_pointer_operators", "ptr_operator", "new_array_expressions",
- "constant_expression", "pm_expression", "multiplicative_expression", "additive_expression",
- "shift_expression", "relational_expression", "equality_expression", "and_expression",
- "exclusive_or_expression", "inclusive_or_expression", "logical_and_expression", "logical_or_expression",
- "assignment_expression", "relational_expression_inTempla" + "te", "equality_expression_inTemplate",
- "and_expression_inTemplate", "exclusive_or_expression_inTemp" + "late",
- "inclusive_or_expression_inTemp" + "late", "logical_and_expression_inTempl" + "ate",
- "logical_or_expression_inTempla" + "te", "assignment_expression_inTempla" + "te",
- "expression_list_actual", "statement", "compound_statement", "statement_seq", "condition", "declarator",
- "for_init_statement", "function_definition", "declaration", "declaration_seq", "declaration_specifiers",
- "simple_declaration_specifiers", "class_declaration_specifiers",
- "elaborated_declaration_specifi" + "ers", "enum_declaration_specifiers",
- "type_name_declaration_specifie" + "rs", "no_type_declaration_specifier", "cv_qualifier",
- "no_type_declaration_specifiers", "class_specifier", "elaborated_type_specifier", "enum_specifier",
- "type_name_specifier", "class_keyword", "enumerator_list", "enumerator_definition", "namespace_name",
- "init_declarator_list", "init_declarator_complete", "complete_declarator", "initializer",
- "direct_declarator", "ptr_operator_seq", "function_declarator", "basic_direct_declarator",
- "array_direct_declarator", "array_modifier", "abstract_declarator", "direct_abstract_declarator",
- "basic_direct_abstract_declarat" + "or", "array_direct_abstract_declarat" + "or",
- "parameter_declaration_list", "parameter_declaration", "parameter_init_declarator",
- "parameter_initializer", "function_body", "handler_seq", "initializer_clause", "initializer_list",
- "initializer_seq", "class_head", "access_specifier_keyword", "member_declaration",
- "member_declarator_list", "member_declaration_list", "member_declarator_complete",
- "constant_initializer", "bit_field_declarator", "base_specifier_list", "base_specifier",
- "conversion_function_id", "conversion_type_id", "conversion_declarator", "mem_initializer_list",
- "mem_initializer", "mem_initializer_name", "operator_id_name", "overloadable_operator",
- "template_parameter_list", "template_parameter", "template_argument_list", "template_argument",
- "type_name_specifier_inTemplate", "type_name_declaration_specifie" + "rs_inTemplate",
- "type_specifier_seq_inTemplate", "handler", "exception_declaration", "type_id_list",
- "attribute_or_decl_specifier", "attribute_or_decl_specifier_se" + "q", "word",
- "extended_decl_modifier_seq", "extended_decl_modifier", "extended_asm_param", "case_range_expression",
- "typeof_declaration_specifiers", "typeof_type_specifier" };
- }
-
- public final static String name[] = Name.name;
-
- @Override
- public final String name(int index) {
- return name[index];
- }
-
- public final static int ERROR_SYMBOL = 71, SCOPE_UBOUND = 153, SCOPE_SIZE = 154, MAX_NAME_LENGTH = 43;
-
- @Override
- public final int getErrorSymbol() {
- return ERROR_SYMBOL;
- }
-
- @Override
- public final int getScopeUbound() {
- return SCOPE_UBOUND;
- }
-
- @Override
- public final int getScopeSize() {
- return SCOPE_SIZE;
- }
-
- @Override
- public final int getMaxNameLength() {
- return MAX_NAME_LENGTH;
- }
-
- public final static int NUM_STATES = 687, NT_OFFSET = 131, LA_STATE_OFFSET = 9571, MAX_LA = 2147483647,
- NUM_RULES = 672, NUM_NONTERMINALS = 244, NUM_SYMBOLS = 375, SEGMENT_SIZE = 8192, START_STATE = 6525,
- IDENTIFIER_SYMBOL = 0, EOFT_SYMBOL = 129, EOLT_SYMBOL = 129, ACCEPT_ACTION = 7893, ERROR_ACTION = 8899;
-
- public final static boolean BACKTRACK = true;
-
- @Override
- public final int getNumStates() {
- return NUM_STATES;
- }
-
- @Override
- public final int getNtOffset() {
- return NT_OFFSET;
- }
-
- @Override
- public final int getLaStateOffset() {
- return LA_STATE_OFFSET;
- }
-
- @Override
- public final int getMaxLa() {
- return MAX_LA;
- }
-
- @Override
- public final int getNumRules() {
- return NUM_RULES;
- }
-
- @Override
- public final int getNumNonterminals() {
- return NUM_NONTERMINALS;
- }
-
- @Override
- public final int getNumSymbols() {
- return NUM_SYMBOLS;
- }
-
- @Override
- public final int getSegmentSize() {
- return SEGMENT_SIZE;
- }
-
- @Override
- public final int getStartState() {
- return START_STATE;
- }
-
- @Override
- public final int getStartSymbol() {
- return lhs[0];
- }
-
- public final int getIdentifierSymbol() {
- return IDENTIFIER_SYMBOL;
- }
-
- @Override
- public final int getEoftSymbol() {
- return EOFT_SYMBOL;
- }
-
- @Override
- public final int getEoltSymbol() {
- return EOLT_SYMBOL;
- }
-
- @Override
- public final int getAcceptAction() {
- return ACCEPT_ACTION;
- }
-
- @Override
- public final int getErrorAction() {
- return ERROR_ACTION;
- }
-
- @Override
- public final boolean isValidForParser() {
- return isValidForParser;
- }
-
- @Override
- public final boolean getBacktrack() {
- return BACKTRACK;
- }
-
- @Override
- public final int originalState(int state) {
- return -baseCheck[state];
- }
-
- @Override
- public final int asi(int state) {
- return asb[originalState(state)];
- }
-
- @Override
- public final int nasi(int state) {
- return nasb[originalState(state)];
- }
-
- @Override
- public final int inSymbol(int state) {
- return inSymb[originalState(state)];
- }
-
- @Override
- public final int ntAction(int state, int sym) {
- return baseAction[state + sym];
- }
-
- @Override
- public final int tAction(int state, int sym) {
- int i = baseAction[state], k = i + sym;
- return termAction[termCheck[k] == sym ? k : i];
- }
-
- @Override
- public final int lookAhead(int la_state, int sym) {
- int k = la_state + sym;
- return termAction[termCheck[k] == sym ? k : la_state];
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gpp/GPPParsersym.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gpp/GPPParsersym.java
deleted file mode 100644
index 96eca1d1b90..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gpp/GPPParsersym.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2010 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.dom.lrparser.gpp;
-
-public interface GPPParsersym {
- public final static int TK__Complex = 14, TK__Imaginary = 15, TK_restrict = 30, TK_asm = 5, TK_auto = 32,
- TK_bool = 16, TK_break = 85, TK_case = 86, TK_catch = 122, TK_char = 17, TK_class = 62, TK_const = 27,
- TK_const_cast = 48, TK_continue = 87, TK_default = 88, TK_delete = 77, TK_do = 89, TK_double = 18,
- TK_dynamic_cast = 49, TK_else = 130, TK_enum = 63, TK_explicit = 33, TK_export = 90, TK_extern = 34,
- TK_false = 50, TK_float = 19, TK_for = 91, TK_friend = 35, TK_goto = 92, TK_if = 93, TK_inline = 36,
- TK_int = 20, TK_long = 21, TK_mutable = 37, TK_namespace = 68, TK_new = 78, TK_operator = 9,
- TK_private = 123, TK_protected = 124, TK_public = 125, TK_register = 38, TK_reinterpret_cast = 51,
- TK_return = 94, TK_short = 22, TK_signed = 23, TK_sizeof = 52, TK_static = 39, TK_static_cast = 53,
- TK_struct = 64, TK_switch = 95, TK_template = 54, TK_this = 55, TK_throw = 72, TK_try = 79, TK_true = 56,
- TK_typedef = 40, TK_typeid = 57, TK_typename = 13, TK_union = 65, TK_unsigned = 24, TK_using = 69,
- TK_virtual = 31, TK_void = 25, TK_volatile = 28, TK_wchar_t = 26, TK_while = 82, TK_integer = 58,
- TK_floating = 59, TK_charconst = 60, TK_stringlit = 41, TK_identifier = 1, TK_Completion = 2,
- TK_EndOfCompletion = 11, TK_Invalid = 131, TK_LeftBracket = 70, TK_LeftParen = 3, TK_Dot = 128,
- TK_DotStar = 105, TK_Arrow = 126, TK_ArrowStar = 99, TK_PlusPlus = 44, TK_MinusMinus = 45, TK_And = 12,
- TK_Star = 10, TK_Plus = 42, TK_Minus = 43, TK_Tilde = 8, TK_Bang = 47, TK_Slash = 106, TK_Percent = 107,
- TK_RightShift = 83, TK_LeftShift = 84, TK_LT = 66, TK_GT = 75, TK_LE = 96, TK_GE = 97, TK_EQ = 100,
- TK_NE = 101, TK_Caret = 102, TK_Or = 103, TK_AndAnd = 104, TK_OrOr = 108, TK_Question = 109, TK_Colon = 76,
- TK_ColonColon = 4, TK_DotDotDot = 98, TK_Assign = 80, TK_StarAssign = 110, TK_SlashAssign = 111,
- TK_PercentAssign = 112, TK_PlusAssign = 113, TK_MinusAssign = 114, TK_RightShiftAssign = 115,
- TK_LeftShiftAssign = 116, TK_AndAssign = 117, TK_CaretAssign = 118, TK_OrAssign = 119, TK_Comma = 73,
- TK_RightBracket = 127, TK_RightParen = 74, TK_RightBrace = 81, TK_SemiColon = 46, TK_LeftBrace = 67,
- TK_typeof = 29, TK___alignof__ = 61, TK___attribute__ = 6, TK___declspec = 7, TK_MAX = 120, TK_MIN = 121,
- TK_ERROR_TOKEN = 71, TK_EOF_TOKEN = 129;
-
- public final static String orderedTerminalSymbols[] = { "", "identifier", "Completion", "LeftParen", "ColonColon",
- "asm", "__attribute__", "__declspec", "Tilde", "operator", "Star", "EndOfCompletion", "And", "typename",
- "_Complex", "_Imaginary", "bool", "char", "double", "float", "int", "long", "short", "signed", "unsigned",
- "void", "wchar_t", "const", "volatile", "typeof", "restrict", "virtual", "auto", "explicit", "extern",
- "friend", "inline", "mutable", "register", "static", "typedef", "stringlit", "Plus", "Minus", "PlusPlus",
- "MinusMinus", "SemiColon", "Bang", "const_cast", "dynamic_cast", "false", "reinterpret_cast", "sizeof",
- "static_cast", "template", "this", "true", "typeid", "integer", "floating", "charconst", "__alignof__",
- "class", "enum", "struct", "union", "LT", "LeftBrace", "namespace", "using", "LeftBracket", "ERROR_TOKEN",
- "throw", "Comma", "RightParen", "GT", "Colon", "delete", "new", "try", "Assign", "RightBrace", "while",
- "RightShift", "LeftShift", "break", "case", "continue", "default", "do", "export", "for", "goto", "if",
- "return", "switch", "LE", "GE", "DotDotDot", "ArrowStar", "EQ", "NE", "Caret", "Or", "AndAnd", "DotStar",
- "Slash", "Percent", "OrOr", "Question", "StarAssign", "SlashAssign", "PercentAssign", "PlusAssign",
- "MinusAssign", "RightShiftAssign", "LeftShiftAssign", "AndAssign", "CaretAssign", "OrAssign", "MAX", "MIN",
- "catch", "private", "protected", "public", "Arrow", "RightBracket", "Dot", "EOF_TOKEN", "else", "Invalid" };
-
- public final static boolean isValidForParser = true;
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gpp/GPPSizeofExpressionParser.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gpp/GPPSizeofExpressionParser.java
deleted file mode 100644
index 60566959da6..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gpp/GPPSizeofExpressionParser.java
+++ /dev/null
@@ -1,3019 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2015 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.dom.lrparser.gpp;
-
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.cdt.core.dom.ast.IASTBinaryExpression;
-import org.eclipse.cdt.core.dom.ast.IASTCompletionNode;
-import org.eclipse.cdt.core.dom.ast.IASTExpression;
-import org.eclipse.cdt.core.dom.ast.IASTTypeIdExpression;
-import org.eclipse.cdt.core.dom.ast.IASTUnaryExpression;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTBinaryExpression;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCastExpression;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTLiteralExpression;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTUnaryExpression;
-import org.eclipse.cdt.core.dom.ast.gnu.cpp.IGPPASTExplicitTemplateInstantiation;
-import org.eclipse.cdt.core.dom.lrparser.CPreprocessorAdapter;
-import org.eclipse.cdt.core.dom.lrparser.IDOMTokenMap;
-import org.eclipse.cdt.core.dom.lrparser.ISecondaryParser;
-import org.eclipse.cdt.core.dom.lrparser.ITokenCollector;
-import org.eclipse.cdt.core.dom.lrparser.action.ITokenMap;
-import org.eclipse.cdt.core.dom.lrparser.action.ITokenStream;
-import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack;
-import org.eclipse.cdt.core.dom.lrparser.action.TokenMap;
-import org.eclipse.cdt.core.dom.lrparser.action.gnu.GNUBuildASTParserAction;
-import org.eclipse.cdt.core.dom.lrparser.action.gnu.GPPBuildASTParserAction;
-import org.eclipse.cdt.core.dom.lrparser.action.gnu.GPPSecondaryParserFactory;
-import org.eclipse.cdt.core.dom.lrparser.lpgextensions.FixedBacktrackingParser;
-import org.eclipse.cdt.core.dom.parser.IBuiltinBindingsProvider;
-import org.eclipse.cdt.core.index.IIndex;
-import org.eclipse.cdt.core.parser.IScanner;
-import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPNodeFactory;
-
-import lpg.lpgjavaruntime.BadParseException;
-import lpg.lpgjavaruntime.BadParseSymFileException;
-import lpg.lpgjavaruntime.DiagnoseParser;
-import lpg.lpgjavaruntime.ErrorToken;
-import lpg.lpgjavaruntime.IToken;
-import lpg.lpgjavaruntime.LexStream;
-import lpg.lpgjavaruntime.Monitor;
-import lpg.lpgjavaruntime.NotBacktrackParseTableException;
-import lpg.lpgjavaruntime.NullExportedSymbolsException;
-import lpg.lpgjavaruntime.NullTerminalSymbolsException;
-import lpg.lpgjavaruntime.ParseErrorCodes;
-import lpg.lpgjavaruntime.ParseTable;
-import lpg.lpgjavaruntime.PrsStream;
-import lpg.lpgjavaruntime.RuleAction;
-import lpg.lpgjavaruntime.Token;
-import lpg.lpgjavaruntime.UndefinedEofSymbolException;
-import lpg.lpgjavaruntime.UnimplementedTerminalsException;
-
-public class GPPSizeofExpressionParser extends PrsStream
- implements RuleAction, ITokenStream, ITokenCollector, ISecondaryParser<IASTExpression> {
- private static ParseTable prs = new GPPSizeofExpressionParserprs();
- private FixedBacktrackingParser btParser;
-
- public FixedBacktrackingParser getParser() {
- return btParser;
- }
-
- private void setResult(Object object) {
- btParser.setSym1(object);
- }
-
- public Object getRhsSym(int i) {
- return btParser.getSym(i);
- }
-
- public int getRhsTokenIndex(int i) {
- return btParser.getToken(i);
- }
-
- public IToken getRhsIToken(int i) {
- return super.getIToken(getRhsTokenIndex(i));
- }
-
- public int getRhsFirstTokenIndex(int i) {
- return btParser.getFirstToken(i);
- }
-
- public IToken getRhsFirstIToken(int i) {
- return super.getIToken(getRhsFirstTokenIndex(i));
- }
-
- public int getRhsLastTokenIndex(int i) {
- return btParser.getLastToken(i);
- }
-
- public IToken getRhsLastIToken(int i) {
- return super.getIToken(getRhsLastTokenIndex(i));
- }
-
- public int getLeftSpan() {
- return btParser.getFirstToken();
- }
-
- @Override
- public IToken getLeftIToken() {
- return super.getIToken(getLeftSpan());
- }
-
- public int getRightSpan() {
- return btParser.getLastToken();
- }
-
- @Override
- public IToken getRightIToken() {
- return super.getIToken(getRightSpan());
- }
-
- public int getRhsErrorTokenIndex(int i) {
- int index = btParser.getToken(i);
- IToken err = super.getIToken(index);
- return (err instanceof ErrorToken ? index : 0);
- }
-
- public ErrorToken getRhsErrorIToken(int i) {
- int index = btParser.getToken(i);
- IToken err = super.getIToken(index);
- return (ErrorToken) (err instanceof ErrorToken ? err : null);
- }
-
- public GPPSizeofExpressionParser(LexStream lexStream) {
- super(lexStream);
-
- try {
- super.remapTerminalSymbols(orderedTerminalSymbols(), GPPSizeofExpressionParserprs.EOFT_SYMBOL);
- } catch (NullExportedSymbolsException e) {
- } catch (NullTerminalSymbolsException e) {
- } catch (UnimplementedTerminalsException e) {
- java.util.ArrayList unimplemented_symbols = e.getSymbols();
- System.out.println("The Lexer will not scan the following token(s):");
- for (int i = 0; i < unimplemented_symbols.size(); i++) {
- Integer id = (Integer) unimplemented_symbols.get(i);
- System.out.println(" " + GPPSizeofExpressionParsersym.orderedTerminalSymbols[id.intValue()]);
- }
- System.out.println();
- } catch (UndefinedEofSymbolException e) {
- throw new Error(new UndefinedEofSymbolException("The Lexer does not implement the Eof symbol "
- + GPPSizeofExpressionParsersym.orderedTerminalSymbols[GPPSizeofExpressionParserprs.EOFT_SYMBOL]));
- }
- }
-
- @Override
- public String[] orderedTerminalSymbols() {
- return GPPSizeofExpressionParsersym.orderedTerminalSymbols;
- }
-
- public String getTokenKindName(int kind) {
- return GPPSizeofExpressionParsersym.orderedTerminalSymbols[kind];
- }
-
- public int getEOFTokenKind() {
- return GPPSizeofExpressionParserprs.EOFT_SYMBOL;
- }
-
- public PrsStream getParseStream() {
- return this;
- }
-
- //
- // Report error message for given error_token.
- //
- public final void reportErrorTokenMessage(int error_token, String msg) {
- int firsttok = super.getFirstErrorToken(error_token), lasttok = super.getLastErrorToken(error_token);
- String location = super.getFileName() + ':'
- + (firsttok > lasttok ? (super.getEndLine(lasttok) + ":" + super.getEndColumn(lasttok))
- : (super.getLine(error_token) + ":" + super.getColumn(error_token) + ":"
- + super.getEndLine(error_token) + ":" + super.getEndColumn(error_token)))
- + ": ";
- super.reportError((firsttok > lasttok ? ParseErrorCodes.INSERTION_CODE : ParseErrorCodes.SUBSTITUTION_CODE),
- location, msg);
- }
-
- public void parser() {
- parser(null, 0);
- }
-
- public void parser(Monitor monitor) {
- parser(monitor, 0);
- }
-
- public void parser(int error_repair_count) {
- parser(null, error_repair_count);
- }
-
- public void parser(Monitor monitor, int error_repair_count) {
- try {
- btParser = new FixedBacktrackingParser(monitor, this, prs, this);
- } catch (NotBacktrackParseTableException e) {
- throw new Error(new NotBacktrackParseTableException(
- "Regenerate GPPSizeofExpressionParserprs.java with -BACKTRACK option"));
- } catch (BadParseSymFileException e) {
- throw new Error(
- new BadParseSymFileException("Bad Parser Symbol File -- GPPSizeofExpressionParsersym.java"));
- }
-
- try {
- btParser.parse(error_repair_count);
- } catch (BadParseException e) {
- reset(e.error_token); // point to error token
- DiagnoseParser diagnoseParser = new DiagnoseParser(this, prs);
- diagnoseParser.diagnose(e.error_token);
- }
- }
-
- private GPPBuildASTParserAction action;
- private IASTCompletionNode compNode;
-
- public GPPSizeofExpressionParser(IScanner scanner, IDOMTokenMap tokenMap,
- IBuiltinBindingsProvider builtinBindingsProvider, IIndex index, Map<String, String> properties) {
- initActions(properties);
- action.initializeTranslationUnit(scanner, builtinBindingsProvider, index);
- CPreprocessorAdapter.runCPreprocessor(scanner, this, tokenMap);
- }
-
- private void initActions(Map<String, String> properties) {
- ScopedStack<Object> astStack = new ScopedStack<>();
-
- action = new GPPBuildASTParserAction(this, astStack, CPPNodeFactory.getDefault(),
- GPPSecondaryParserFactory.getDefault());
- action.setParserProperties(properties);
-
- gnuAction = new GNUBuildASTParserAction(this, astStack, CPPNodeFactory.getDefault());
- gnuAction.setParserProperties(properties);
-
- }
-
- @Override
- public void addToken(IToken token) {
- token.setKind(mapKind(token.getKind())); // TODO does mapKind need to be called?
- super.addToken(token);
- }
-
- @Override
- public IASTExpression parse() {
- // this has to be done, or... kaboom!
- setStreamLength(getSize());
-
- final int errorRepairCount = -1; // -1 means full error handling
- parser(null, errorRepairCount); // do the actual parse
- super.resetTokenStream(); // allow tokens to be garbage collected
-
- compNode = action.getASTCompletionNode(); // the completion node may be null
- return (IASTExpression) action.getParseResult();
- }
-
- @Override
- public IASTCompletionNode getCompletionNode() {
- return compNode;
- }
-
- // uncomment this method to use with backtracking parser
- @Override
- public List<IToken> getRuleTokens() {
- return getTokens().subList(getLeftSpan(), getRightSpan() + 1);
- }
-
- @Override
- public String[] getOrderedTerminalSymbols() {
- return GPPSizeofExpressionParsersym.orderedTerminalSymbols;
- }
-
- @Override
- @SuppressWarnings("nls")
- public String getName() {
- return "GPPSizeofExpressionParser";
- }
-
- private ITokenMap tokenMap = null;
-
- @Override
- public void setTokens(List<IToken> tokens) {
- resetTokenStream();
- addToken(new Token(null, 0, 0, 0)); // dummy token
- for (IToken token : tokens) {
- token.setKind(tokenMap.mapKind(token.getKind()));
- addToken(token);
- }
- addToken(new Token(null, 0, 0, GPPSizeofExpressionParsersym.TK_EOF_TOKEN));
- }
-
- public GPPSizeofExpressionParser(ITokenStream stream, Map<String, String> properties) { // constructor for creating secondary parser
- initActions(properties);
- tokenMap = new TokenMap(GPPSizeofExpressionParsersym.orderedTerminalSymbols,
- stream.getOrderedTerminalSymbols());
- }
-
- public GPPSizeofExpressionParser(ITokenStream stream, IScanner scanner,
- IBuiltinBindingsProvider builtinBindingsProvider, IIndex index, Map<String, String> properties) { // constructor for creating secondary parser
- initActions(properties);
- action.initializeTranslationUnit(scanner, builtinBindingsProvider, index);
- tokenMap = new TokenMap(GPPSizeofExpressionParsersym.orderedTerminalSymbols,
- stream.getOrderedTerminalSymbols());
- }
-
- private GNUBuildASTParserAction gnuAction;
-
- @Override
- public void ruleAction(int ruleNumber) {
- switch (ruleNumber) {
-
- //
- // Rule 1: <openscope-ast> ::= $Empty
- //
- case 1: {
- action.openASTScope();
- break;
- }
-
- //
- // Rule 2: <empty> ::= $Empty
- //
- case 2: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 13: translation_unit ::= declaration_seq_opt
- //
- case 13: {
- action.consumeTranslationUnit();
- break;
- }
-
- //
- // Rule 16: literal ::= integer
- //
- case 16: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_integer_constant);
- break;
- }
-
- //
- // Rule 17: literal ::= floating
- //
- case 17: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_float_constant);
- break;
- }
-
- //
- // Rule 18: literal ::= charconst
- //
- case 18: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_char_constant);
- break;
- }
-
- //
- // Rule 19: literal ::= stringlit
- //
- case 19: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_string_literal);
- break;
- }
-
- //
- // Rule 20: literal ::= true
- //
- case 20: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_true);
- break;
- }
-
- //
- // Rule 21: literal ::= false
- //
- case 21: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_false);
- break;
- }
-
- //
- // Rule 22: literal ::= this
- //
- case 22: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_this);
- break;
- }
-
- //
- // Rule 24: primary_expression ::= ( expression )
- //
- case 24: {
- action.consumeExpressionBracketed();
- break;
- }
-
- //
- // Rule 26: id_expression ::= qualified_or_unqualified_name
- //
- case 26: {
- action.consumeExpressionName();
- break;
- }
-
- //
- // Rule 33: unqualified_id_name ::= ~ identifier_token
- //
- case 33: {
- action.consumeDestructorName();
- break;
- }
-
- //
- // Rule 34: unqualified_id_name ::= ~ template_id_name
- //
- case 34: {
- action.consumeDestructorNameTemplateId();
- break;
- }
-
- //
- // Rule 35: identifier_name ::= identifier_token
- //
- case 35: {
- action.consumeIdentifierName();
- break;
- }
-
- //
- // Rule 36: template_opt ::= template
- //
- case 36: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 37: template_opt ::= $Empty
- //
- case 37: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 38: dcolon_opt ::= ::
- //
- case 38: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 39: dcolon_opt ::= $Empty
- //
- case 39: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 40: qualified_id_name ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name
- //
- case 40: {
- action.consumeQualifiedId(true);
- break;
- }
-
- //
- // Rule 41: qualified_id_name ::= :: unqualified_id_name
- //
- case 41: {
- action.consumeGlobalQualifiedId();
- break;
- }
-
- //
- // Rule 42: nested_name_specifier ::= class_or_namespace_name :: nested_name_specifier_with_template
- //
- case 42: {
- action.consumeNestedNameSpecifier(true);
- break;
- }
-
- //
- // Rule 43: nested_name_specifier ::= class_or_namespace_name ::
- //
- case 43: {
- action.consumeNestedNameSpecifier(false);
- break;
- }
-
- //
- // Rule 44: nested_name_specifier_with_template ::= class_or_namespace_name_with_template :: nested_name_specifier_with_template
- //
- case 44: {
- action.consumeNestedNameSpecifier(true);
- break;
- }
-
- //
- // Rule 45: nested_name_specifier_with_template ::= class_or_namespace_name_with_template ::
- //
- case 45: {
- action.consumeNestedNameSpecifier(false);
- break;
- }
-
- //
- // Rule 46: class_or_namespace_name_with_template ::= template_opt class_or_namespace_name
- //
- case 46: {
- action.consumeNameWithTemplateKeyword();
- break;
- }
-
- //
- // Rule 48: nested_name_specifier_opt ::= $Empty
- //
- case 48: {
- action.consumeNestedNameSpecifierEmpty();
- break;
- }
-
- //
- // Rule 51: postfix_expression ::= postfix_expression [ expression ]
- //
- case 51: {
- action.consumeExpressionArraySubscript();
- break;
- }
-
- //
- // Rule 52: postfix_expression ::= postfix_expression ( expression_list_opt )
- //
- case 52: {
- action.consumeExpressionFunctionCall();
- break;
- }
-
- //
- // Rule 53: postfix_expression ::= simple_type_specifier ( expression_list_opt )
- //
- case 53: {
- action.consumeExpressionSimpleTypeConstructor();
- break;
- }
-
- //
- // Rule 54: postfix_expression ::= typename dcolon_opt nested_name_specifier <empty> identifier_name ( expression_list_opt )
- //
- case 54: {
- action.consumeExpressionTypeName();
- break;
- }
-
- //
- // Rule 55: postfix_expression ::= typename dcolon_opt nested_name_specifier template_opt template_id_name ( expression_list_opt )
- //
- case 55: {
- action.consumeExpressionTypeName();
- break;
- }
-
- //
- // Rule 56: postfix_expression ::= postfix_expression . qualified_or_unqualified_name
- //
- case 56: {
- action.consumeExpressionFieldReference(false, false);
- break;
- }
-
- //
- // Rule 57: postfix_expression ::= postfix_expression -> qualified_or_unqualified_name
- //
- case 57: {
- action.consumeExpressionFieldReference(true, false);
- break;
- }
-
- //
- // Rule 58: postfix_expression ::= postfix_expression . template qualified_or_unqualified_name
- //
- case 58: {
- action.consumeExpressionFieldReference(false, true);
- break;
- }
-
- //
- // Rule 59: postfix_expression ::= postfix_expression -> template qualified_or_unqualified_name
- //
- case 59: {
- action.consumeExpressionFieldReference(true, true);
- break;
- }
-
- //
- // Rule 60: postfix_expression ::= postfix_expression . pseudo_destructor_name
- //
- case 60: {
- action.consumeExpressionFieldReference(false, false);
- break;
- }
-
- //
- // Rule 61: postfix_expression ::= postfix_expression -> pseudo_destructor_name
- //
- case 61: {
- action.consumeExpressionFieldReference(true, false);
- break;
- }
-
- //
- // Rule 62: postfix_expression ::= postfix_expression ++
- //
- case 62: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixIncr);
- break;
- }
-
- //
- // Rule 63: postfix_expression ::= postfix_expression --
- //
- case 63: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixDecr);
- break;
- }
-
- //
- // Rule 64: postfix_expression ::= dynamic_cast < type_id > ( expression )
- //
- case 64: {
- action.consumeExpressionCast(ICPPASTCastExpression.op_dynamic_cast);
- break;
- }
-
- //
- // Rule 65: postfix_expression ::= static_cast < type_id > ( expression )
- //
- case 65: {
- action.consumeExpressionCast(ICPPASTCastExpression.op_static_cast);
- break;
- }
-
- //
- // Rule 66: postfix_expression ::= reinterpret_cast < type_id > ( expression )
- //
- case 66: {
- action.consumeExpressionCast(ICPPASTCastExpression.op_reinterpret_cast);
- break;
- }
-
- //
- // Rule 67: postfix_expression ::= const_cast < type_id > ( expression )
- //
- case 67: {
- action.consumeExpressionCast(ICPPASTCastExpression.op_const_cast);
- break;
- }
-
- //
- // Rule 68: postfix_expression ::= typeid ( expression )
- //
- case 68: {
- action.consumeExpressionUnaryOperator(ICPPASTUnaryExpression.op_typeid);
- break;
- }
-
- //
- // Rule 69: pseudo_destructor_name ::= dcolon_opt nested_name_specifier_opt type_name :: destructor_type_name
- //
- case 69: {
- action.consumePsudoDestructorName(true);
- break;
- }
-
- //
- // Rule 70: pseudo_destructor_name ::= dcolon_opt nested_name_specifier template template_id_name :: destructor_type_name
- //
- case 70: {
- action.consumePsudoDestructorName(true);
- break;
- }
-
- //
- // Rule 71: pseudo_destructor_name ::= dcolon_opt nested_name_specifier_opt destructor_type_name
- //
- case 71: {
- action.consumePsudoDestructorName(false);
- break;
- }
-
- //
- // Rule 72: destructor_type_name ::= ~ identifier_token
- //
- case 72: {
- action.consumeDestructorName();
- break;
- }
-
- //
- // Rule 73: destructor_type_name ::= ~ template_id_name
- //
- case 73: {
- action.consumeDestructorNameTemplateId();
- break;
- }
-
- //
- // Rule 77: unary_expression ::= ++ cast_expression
- //
- case 77: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixIncr);
- break;
- }
-
- //
- // Rule 78: unary_expression ::= -- cast_expression
- //
- case 78: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixDecr);
- break;
- }
-
- //
- // Rule 79: unary_expression ::= & cast_expression
- //
- case 79: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_amper);
- break;
- }
-
- //
- // Rule 80: unary_expression ::= * cast_expression
- //
- case 80: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_star);
- break;
- }
-
- //
- // Rule 81: unary_expression ::= + cast_expression
- //
- case 81: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_plus);
- break;
- }
-
- //
- // Rule 82: unary_expression ::= - cast_expression
- //
- case 82: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_minus);
- break;
- }
-
- //
- // Rule 83: unary_expression ::= ~ cast_expression
- //
- case 83: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_tilde);
- break;
- }
-
- //
- // Rule 84: unary_expression ::= ! cast_expression
- //
- case 84: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_not);
- break;
- }
-
- //
- // Rule 85: unary_expression ::= sizeof unary_expression
- //
- case 85: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_sizeof);
- break;
- }
-
- //
- // Rule 86: new_expression ::= dcolon_opt new new_placement_opt new_type_id <openscope-ast> new_array_expressions_opt new_initializer_opt
- //
- case 86: {
- action.consumeExpressionNew(true);
- break;
- }
-
- //
- // Rule 87: new_expression ::= dcolon_opt new new_placement_opt ( type_id ) <openscope-ast> new_array_expressions_opt new_initializer_opt
- //
- case 87: {
- action.consumeExpressionNew(false);
- break;
- }
-
- //
- // Rule 89: new_placement_opt ::= $Empty
- //
- case 89: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 90: new_type_id ::= type_specifier_seq
- //
- case 90: {
- action.consumeTypeId(false);
- break;
- }
-
- //
- // Rule 91: new_type_id ::= type_specifier_seq new_declarator
- //
- case 91: {
- action.consumeTypeId(true);
- break;
- }
-
- //
- // Rule 92: new_declarator ::= <openscope-ast> new_pointer_operators
- //
- case 92: {
- action.consumeNewDeclarator();
- break;
- }
-
- //
- // Rule 99: new_initializer ::= ( expression_list_opt )
- //
- case 99: {
- action.consumeNewInitializer();
- break;
- }
-
- //
- // Rule 101: new_initializer_opt ::= $Empty
- //
- case 101: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 102: delete_expression ::= dcolon_opt delete cast_expression
- //
- case 102: {
- action.consumeExpressionDelete(false);
- break;
- }
-
- //
- // Rule 103: delete_expression ::= dcolon_opt delete [ ] cast_expression
- //
- case 103: {
- action.consumeExpressionDelete(true);
- break;
- }
-
- //
- // Rule 105: cast_expression ::= ( type_id ) cast_expression
- //
- case 105: {
- action.consumeExpressionCast(ICPPASTCastExpression.op_cast);
- break;
- }
-
- //
- // Rule 107: pm_expression ::= pm_expression .* cast_expression
- //
- case 107: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_pmdot);
- break;
- }
-
- //
- // Rule 108: pm_expression ::= pm_expression ->* cast_expression
- //
- case 108: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_pmarrow);
- break;
- }
-
- //
- // Rule 110: multiplicative_expression ::= multiplicative_expression * pm_expression
- //
- case 110: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_multiply);
- break;
- }
-
- //
- // Rule 111: multiplicative_expression ::= multiplicative_expression / pm_expression
- //
- case 111: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_divide);
- break;
- }
-
- //
- // Rule 112: multiplicative_expression ::= multiplicative_expression % pm_expression
- //
- case 112: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_modulo);
- break;
- }
-
- //
- // Rule 114: additive_expression ::= additive_expression + multiplicative_expression
- //
- case 114: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_plus);
- break;
- }
-
- //
- // Rule 115: additive_expression ::= additive_expression - multiplicative_expression
- //
- case 115: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_minus);
- break;
- }
-
- //
- // Rule 117: shift_expression ::= shift_expression << additive_expression
- //
- case 117: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftLeft);
- break;
- }
-
- //
- // Rule 118: shift_expression ::= shift_expression >> additive_expression
- //
- case 118: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftRight);
- break;
- }
-
- //
- // Rule 120: relational_expression ::= relational_expression < shift_expression
- //
- case 120: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessThan);
- break;
- }
-
- //
- // Rule 121: relational_expression ::= relational_expression > shift_expression
- //
- case 121: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterThan);
- break;
- }
-
- //
- // Rule 122: relational_expression ::= relational_expression <= shift_expression
- //
- case 122: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessEqual);
- break;
- }
-
- //
- // Rule 123: relational_expression ::= relational_expression >= shift_expression
- //
- case 123: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterEqual);
- break;
- }
-
- //
- // Rule 125: equality_expression ::= equality_expression == relational_expression
- //
- case 125: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_equals);
- break;
- }
-
- //
- // Rule 126: equality_expression ::= equality_expression != relational_expression
- //
- case 126: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_notequals);
- break;
- }
-
- //
- // Rule 128: and_expression ::= and_expression & equality_expression
- //
- case 128: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAnd);
- break;
- }
-
- //
- // Rule 130: exclusive_or_expression ::= exclusive_or_expression ^ and_expression
- //
- case 130: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXor);
- break;
- }
-
- //
- // Rule 132: inclusive_or_expression ::= inclusive_or_expression | exclusive_or_expression
- //
- case 132: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOr);
- break;
- }
-
- //
- // Rule 134: logical_and_expression ::= logical_and_expression && inclusive_or_expression
- //
- case 134: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalAnd);
- break;
- }
-
- //
- // Rule 136: logical_or_expression ::= logical_or_expression || logical_and_expression
- //
- case 136: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalOr);
- break;
- }
-
- //
- // Rule 138: conditional_expression ::= logical_or_expression ? expression : assignment_expression
- //
- case 138: {
- action.consumeExpressionConditional();
- break;
- }
-
- //
- // Rule 140: relational_expression_inTemplate ::= relational_expression_inTemplate < shift_expression
- //
- case 140: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessThan);
- break;
- }
-
- //
- // Rule 141: relational_expression_inTemplate ::= ( relational_expression_inTemplate > shift_expression )
- //
- case 141: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterThan);
- break;
- }
-
- //
- // Rule 142: relational_expression_inTemplate ::= relational_expression_inTemplate <= shift_expression
- //
- case 142: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessEqual);
- break;
- }
-
- //
- // Rule 143: relational_expression_inTemplate ::= relational_expression_inTemplate >= shift_expression
- //
- case 143: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterEqual);
- break;
- }
-
- //
- // Rule 145: equality_expression_inTemplate ::= equality_expression_inTemplate == relational_expression_inTemplate
- //
- case 145: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_equals);
- break;
- }
-
- //
- // Rule 146: equality_expression_inTemplate ::= equality_expression_inTemplate != relational_expression_inTemplate
- //
- case 146: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_notequals);
- break;
- }
-
- //
- // Rule 148: and_expression_inTemplate ::= and_expression_inTemplate & equality_expression_inTemplate
- //
- case 148: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAnd);
- break;
- }
-
- //
- // Rule 150: exclusive_or_expression_inTemplate ::= exclusive_or_expression_inTemplate ^ and_expression_inTemplate
- //
- case 150: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXor);
- break;
- }
-
- //
- // Rule 152: inclusive_or_expression_inTemplate ::= inclusive_or_expression_inTemplate | exclusive_or_expression_inTemplate
- //
- case 152: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOr);
- break;
- }
-
- //
- // Rule 154: logical_and_expression_inTemplate ::= logical_and_expression_inTemplate && inclusive_or_expression_inTemplate
- //
- case 154: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalAnd);
- break;
- }
-
- //
- // Rule 156: logical_or_expression_inTemplate ::= logical_or_expression_inTemplate || logical_and_expression_inTemplate
- //
- case 156: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalOr);
- break;
- }
-
- //
- // Rule 158: conditional_expression_inTemplate ::= logical_or_expression_inTemplate ? expression : assignment_expression_inTemplate
- //
- case 158: {
- action.consumeExpressionConditional();
- break;
- }
-
- //
- // Rule 161: assignment_expression_inTemplate ::= logical_or_expression_inTemplate = assignment_expression_inTemplate
- //
- case 161: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_assign);
- break;
- }
-
- //
- // Rule 162: assignment_expression_inTemplate ::= logical_or_expression_inTemplate *= assignment_expression_inTemplate
- //
- case 162: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_multiplyAssign);
- break;
- }
-
- //
- // Rule 163: assignment_expression_inTemplate ::= logical_or_expression_inTemplate /= assignment_expression_inTemplate
- //
- case 163: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_divideAssign);
- break;
- }
-
- //
- // Rule 164: assignment_expression_inTemplate ::= logical_or_expression_inTemplate %= assignment_expression_inTemplate
- //
- case 164: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_moduloAssign);
- break;
- }
-
- //
- // Rule 165: assignment_expression_inTemplate ::= logical_or_expression_inTemplate += assignment_expression_inTemplate
- //
- case 165: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_plusAssign);
- break;
- }
-
- //
- // Rule 166: assignment_expression_inTemplate ::= logical_or_expression_inTemplate -= assignment_expression_inTemplate
- //
- case 166: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_minusAssign);
- break;
- }
-
- //
- // Rule 167: assignment_expression_inTemplate ::= logical_or_expression_inTemplate >>= assignment_expression_inTemplate
- //
- case 167: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftRightAssign);
- break;
- }
-
- //
- // Rule 168: assignment_expression_inTemplate ::= logical_or_expression_inTemplate <<= assignment_expression_inTemplate
- //
- case 168: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftLeftAssign);
- break;
- }
-
- //
- // Rule 169: assignment_expression_inTemplate ::= logical_or_expression_inTemplate &= assignment_expression_inTemplate
- //
- case 169: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAndAssign);
- break;
- }
-
- //
- // Rule 170: assignment_expression_inTemplate ::= logical_or_expression_inTemplate ^= assignment_expression_inTemplate
- //
- case 170: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXorAssign);
- break;
- }
-
- //
- // Rule 171: assignment_expression_inTemplate ::= logical_or_expression_inTemplate |= assignment_expression_inTemplate
- //
- case 171: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOrAssign);
- break;
- }
-
- //
- // Rule 172: throw_expression ::= throw
- //
- case 172: {
- action.consumeExpressionThrow(false);
- break;
- }
-
- //
- // Rule 173: throw_expression ::= throw assignment_expression
- //
- case 173: {
- action.consumeExpressionThrow(true);
- break;
- }
-
- //
- // Rule 176: assignment_expression ::= logical_or_expression = assignment_expression
- //
- case 176: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_assign);
- break;
- }
-
- //
- // Rule 177: assignment_expression ::= logical_or_expression *= assignment_expression
- //
- case 177: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_multiplyAssign);
- break;
- }
-
- //
- // Rule 178: assignment_expression ::= logical_or_expression /= assignment_expression
- //
- case 178: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_divideAssign);
- break;
- }
-
- //
- // Rule 179: assignment_expression ::= logical_or_expression %= assignment_expression
- //
- case 179: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_moduloAssign);
- break;
- }
-
- //
- // Rule 180: assignment_expression ::= logical_or_expression += assignment_expression
- //
- case 180: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_plusAssign);
- break;
- }
-
- //
- // Rule 181: assignment_expression ::= logical_or_expression -= assignment_expression
- //
- case 181: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_minusAssign);
- break;
- }
-
- //
- // Rule 182: assignment_expression ::= logical_or_expression >>= assignment_expression
- //
- case 182: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftRightAssign);
- break;
- }
-
- //
- // Rule 183: assignment_expression ::= logical_or_expression <<= assignment_expression
- //
- case 183: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftLeftAssign);
- break;
- }
-
- //
- // Rule 184: assignment_expression ::= logical_or_expression &= assignment_expression
- //
- case 184: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAndAssign);
- break;
- }
-
- //
- // Rule 185: assignment_expression ::= logical_or_expression ^= assignment_expression
- //
- case 185: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXorAssign);
- break;
- }
-
- //
- // Rule 186: assignment_expression ::= logical_or_expression |= assignment_expression
- //
- case 186: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOrAssign);
- break;
- }
-
- //
- // Rule 188: expression_list ::= <openscope-ast> expression_list_actual
- //
- case 188: {
- action.consumeExpressionList();
- break;
- }
-
- //
- // Rule 192: expression_list_opt ::= $Empty
- //
- case 192: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 194: expression_opt ::= $Empty
- //
- case 194: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 197: constant_expression_opt ::= $Empty
- //
- case 197: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 206: statement ::= ERROR_TOKEN
- //
- case 206: {
- action.consumeStatementProblem();
- break;
- }
-
- //
- // Rule 207: labeled_statement ::= identifier : statement
- //
- case 207: {
- action.consumeStatementLabeled();
- break;
- }
-
- //
- // Rule 208: labeled_statement ::= case constant_expression : statement
- //
- case 208: {
- action.consumeStatementCase();
- break;
- }
-
- //
- // Rule 209: labeled_statement ::= default : statement
- //
- case 209: {
- action.consumeStatementDefault();
- break;
- }
-
- //
- // Rule 210: expression_statement ::= expression ;
- //
- case 210: {
- action.consumeStatementExpression();
- break;
- }
-
- //
- // Rule 211: expression_statement ::= ;
- //
- case 211: {
- action.consumeStatementNull();
- break;
- }
-
- //
- // Rule 212: compound_statement ::= { <openscope-ast> statement_seq }
- //
- case 212: {
- action.consumeStatementCompoundStatement(true);
- break;
- }
-
- //
- // Rule 213: compound_statement ::= { }
- //
- case 213: {
- action.consumeStatementCompoundStatement(false);
- break;
- }
-
- //
- // Rule 216: selection_statement ::= if ( condition ) statement
- //
- case 216: {
- action.consumeStatementIf(false);
- break;
- }
-
- //
- // Rule 217: selection_statement ::= if ( condition ) statement else statement
- //
- case 217: {
- action.consumeStatementIf(true);
- break;
- }
-
- //
- // Rule 218: selection_statement ::= switch ( condition ) statement
- //
- case 218: {
- action.consumeStatementSwitch();
- break;
- }
-
- //
- // Rule 220: condition ::= type_specifier_seq declarator = assignment_expression
- //
- case 220: {
- action.consumeConditionDeclaration();
- break;
- }
-
- //
- // Rule 222: condition_opt ::= $Empty
- //
- case 222: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 223: iteration_statement ::= while ( condition ) statement
- //
- case 223: {
- action.consumeStatementWhileLoop();
- break;
- }
-
- //
- // Rule 224: iteration_statement ::= do statement while ( expression ) ;
- //
- case 224: {
- action.consumeStatementDoLoop(true);
- break;
- }
-
- //
- // Rule 225: iteration_statement ::= do statement
- //
- case 225: {
- action.consumeStatementDoLoop(false);
- break;
- }
-
- //
- // Rule 226: iteration_statement ::= for ( for_init_statement condition_opt ; expression_opt ) statement
- //
- case 226: {
- action.consumeStatementForLoop();
- break;
- }
-
- //
- // Rule 228: for_init_statement ::= simple_declaration_with_declspec
- //
- case 228: {
- action.consumeStatementDeclaration();
- break;
- }
-
- //
- // Rule 229: jump_statement ::= break ;
- //
- case 229: {
- action.consumeStatementBreak();
- break;
- }
-
- //
- // Rule 230: jump_statement ::= continue ;
- //
- case 230: {
- action.consumeStatementContinue();
- break;
- }
-
- //
- // Rule 231: jump_statement ::= return expression ;
- //
- case 231: {
- action.consumeStatementReturn(true);
- break;
- }
-
- //
- // Rule 232: jump_statement ::= return ;
- //
- case 232: {
- action.consumeStatementReturn(false);
- break;
- }
-
- //
- // Rule 233: jump_statement ::= goto identifier_token ;
- //
- case 233: {
- action.consumeStatementGoto();
- break;
- }
-
- //
- // Rule 234: declaration_statement ::= block_declaration
- //
- case 234: {
- action.consumeStatementDeclarationWithDisambiguation();
- break;
- }
-
- //
- // Rule 235: declaration_statement ::= function_definition
- //
- case 235: {
- action.consumeStatementDeclaration();
- break;
- }
-
- //
- // Rule 243: declaration ::= ERROR_TOKEN
- //
- case 243: {
- action.consumeDeclarationProblem();
- break;
- }
-
- //
- // Rule 253: simple_declaration ::= declaration_specifiers_opt <openscope-ast> init_declarator_list_opt ;
- //
- case 253: {
- action.consumeDeclarationSimple(true);
- break;
- }
-
- //
- // Rule 254: simple_declaration_with_declspec ::= declaration_specifiers <openscope-ast> init_declarator_list_opt ;
- //
- case 254: {
- action.consumeDeclarationSimple(true);
- break;
- }
-
- //
- // Rule 255: declaration_specifiers ::= <openscope-ast> simple_declaration_specifiers
- //
- case 255: {
- action.consumeDeclarationSpecifiersSimple();
- break;
- }
-
- //
- // Rule 256: declaration_specifiers ::= <openscope-ast> class_declaration_specifiers
- //
- case 256: {
- action.consumeDeclarationSpecifiersComposite();
- break;
- }
-
- //
- // Rule 257: declaration_specifiers ::= <openscope-ast> elaborated_declaration_specifiers
- //
- case 257: {
- action.consumeDeclarationSpecifiersComposite();
- break;
- }
-
- //
- // Rule 258: declaration_specifiers ::= <openscope-ast> enum_declaration_specifiers
- //
- case 258: {
- action.consumeDeclarationSpecifiersComposite();
- break;
- }
-
- //
- // Rule 259: declaration_specifiers ::= <openscope-ast> type_name_declaration_specifiers
- //
- case 259: {
- action.consumeDeclarationSpecifiersTypeName();
- break;
- }
-
- //
- // Rule 261: declaration_specifiers_opt ::= $Empty
- //
- case 261: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 265: no_type_declaration_specifier ::= friend
- //
- case 265: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 266: no_type_declaration_specifier ::= typedef
- //
- case 266: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 286: storage_class_specifier ::= auto
- //
- case 286: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 287: storage_class_specifier ::= register
- //
- case 287: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 288: storage_class_specifier ::= static
- //
- case 288: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 289: storage_class_specifier ::= extern
- //
- case 289: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 290: storage_class_specifier ::= mutable
- //
- case 290: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 291: function_specifier ::= inline
- //
- case 291: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 292: function_specifier ::= virtual
- //
- case 292: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 293: function_specifier ::= explicit
- //
- case 293: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 294: simple_type_specifier ::= simple_type_specifier_token
- //
- case 294: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 308: type_name_specifier ::= dcolon_opt nested_name_specifier_opt type_name
- //
- case 308: {
- action.consumeQualifiedId(false);
- break;
- }
-
- //
- // Rule 309: type_name_specifier ::= dcolon_opt nested_name_specifier template template_id_name
- //
- case 309: {
- action.consumeQualifiedId(false);
- break;
- }
-
- //
- // Rule 310: type_name_specifier ::= typename dcolon_opt nested_name_specifier identifier_name
- //
- case 310: {
- action.consumeQualifiedId(false);
- break;
- }
-
- //
- // Rule 311: type_name_specifier ::= typename dcolon_opt nested_name_specifier template_opt template_id_name
- //
- case 311: {
- action.consumeQualifiedId(true);
- break;
- }
-
- //
- // Rule 313: elaborated_type_specifier ::= class_keyword elaborated_specifier_hook dcolon_opt nested_name_specifier_opt identifier_name
- //
- case 313: {
- action.consumeTypeSpecifierElaborated(false);
- break;
- }
-
- //
- // Rule 314: elaborated_type_specifier ::= class_keyword elaborated_specifier_hook dcolon_opt nested_name_specifier_opt template_opt template_id_name
- //
- case 314: {
- action.consumeTypeSpecifierElaborated(true);
- break;
- }
-
- //
- // Rule 315: elaborated_type_specifier ::= enum elaborated_specifier_hook dcolon_opt nested_name_specifier_opt identifier_name
- //
- case 315: {
- action.consumeTypeSpecifierElaborated(false);
- break;
- }
-
- //
- // Rule 319: enum_specifier ::= enum enum_specifier_hook { <openscope-ast> enumerator_list_opt comma_opt }
- //
- case 319: {
- action.consumeTypeSpecifierEnumeration(false);
- break;
- }
-
- //
- // Rule 320: enum_specifier ::= enum enum_specifier_hook identifier_token { <openscope-ast> enumerator_list_opt comma_opt }
- //
- case 320: {
- action.consumeTypeSpecifierEnumeration(true);
- break;
- }
-
- //
- // Rule 326: enumerator_definition ::= identifier_token
- //
- case 326: {
- action.consumeEnumerator(false);
- break;
- }
-
- //
- // Rule 327: enumerator_definition ::= identifier_token = constant_expression
- //
- case 327: {
- action.consumeEnumerator(true);
- break;
- }
-
- //
- // Rule 329: namespace_definition ::= namespace namespace_name namespace_definition_hook { <openscope-ast> declaration_seq_opt }
- //
- case 329: {
- action.consumeNamespaceDefinition(true);
- break;
- }
-
- //
- // Rule 330: namespace_definition ::= namespace namespace_definition_hook { <openscope-ast> declaration_seq_opt }
- //
- case 330: {
- action.consumeNamespaceDefinition(false);
- break;
- }
-
- //
- // Rule 332: namespace_alias_definition ::= namespace identifier_token = dcolon_opt nested_name_specifier_opt namespace_name ;
- //
- case 332: {
- action.consumeNamespaceAliasDefinition();
- break;
- }
-
- //
- // Rule 333: using_declaration ::= using typename_opt dcolon_opt nested_name_specifier_opt unqualified_id_name ;
- //
- case 333: {
- action.consumeUsingDeclaration();
- break;
- }
-
- //
- // Rule 334: typename_opt ::= typename
- //
- case 334: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 335: typename_opt ::= $Empty
- //
- case 335: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 336: using_directive ::= using namespace dcolon_opt nested_name_specifier_opt namespace_name ;
- //
- case 336: {
- action.consumeUsingDirective();
- break;
- }
-
- //
- // Rule 337: linkage_specification ::= extern stringlit { <openscope-ast> declaration_seq_opt }
- //
- case 337: {
- action.consumeLinkageSpecification();
- break;
- }
-
- //
- // Rule 338: linkage_specification ::= extern stringlit <openscope-ast> declaration
- //
- case 338: {
- action.consumeLinkageSpecification();
- break;
- }
-
- //
- // Rule 343: init_declarator_complete ::= init_declarator
- //
- case 343: {
- action.consumeInitDeclaratorComplete();
- break;
- }
-
- //
- // Rule 345: init_declarator ::= complete_declarator initializer
- //
- case 345: {
- action.consumeDeclaratorWithInitializer(true);
- break;
- }
-
- //
- // Rule 348: declarator ::= <openscope-ast> ptr_operator_seq direct_declarator
- //
- case 348: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 350: function_declarator ::= <openscope-ast> ptr_operator_seq direct_declarator
- //
- case 350: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 354: basic_direct_declarator ::= declarator_id_name
- //
- case 354: {
- action.consumeDirectDeclaratorIdentifier();
- break;
- }
-
- //
- // Rule 355: basic_direct_declarator ::= ( declarator )
- //
- case 355: {
- action.consumeDirectDeclaratorBracketed();
- break;
- }
-
- //
- // Rule 356: function_direct_declarator ::= basic_direct_declarator ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
- //
- case 356: {
- action.consumeDirectDeclaratorFunctionDeclarator(true);
- break;
- }
-
- //
- // Rule 357: array_direct_declarator ::= array_direct_declarator array_modifier
- //
- case 357: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 358: array_direct_declarator ::= basic_direct_declarator array_modifier
- //
- case 358: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 359: array_modifier ::= [ constant_expression ]
- //
- case 359: {
- action.consumeDirectDeclaratorArrayModifier(true);
- break;
- }
-
- //
- // Rule 360: array_modifier ::= [ ]
- //
- case 360: {
- action.consumeDirectDeclaratorArrayModifier(false);
- break;
- }
-
- //
- // Rule 361: ptr_operator ::= pointer_hook * pointer_hook <openscope-ast> cv_qualifier_seq_opt
- //
- case 361: {
- action.consumePointer();
- break;
- }
-
- //
- // Rule 362: ptr_operator ::= pointer_hook & pointer_hook
- //
- case 362: {
- action.consumeReferenceOperator();
- break;
- }
-
- //
- // Rule 363: ptr_operator ::= dcolon_opt nested_name_specifier pointer_hook * pointer_hook <openscope-ast> cv_qualifier_seq_opt
- //
- case 363: {
- action.consumePointerToMember();
- break;
- }
-
- //
- // Rule 370: cv_qualifier ::= const
- //
- case 370: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 371: cv_qualifier ::= volatile
- //
- case 371: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 373: declarator_id_name ::= dcolon_opt nested_name_specifier_opt type_name
- //
- case 373: {
- action.consumeQualifiedId(false);
- break;
- }
-
- //
- // Rule 374: type_id ::= type_specifier_seq
- //
- case 374: {
- action.consumeTypeId(false);
- break;
- }
-
- //
- // Rule 375: type_id ::= type_specifier_seq abstract_declarator
- //
- case 375: {
- action.consumeTypeId(true);
- break;
- }
-
- //
- // Rule 378: abstract_declarator ::= <openscope-ast> ptr_operator_seq
- //
- case 378: {
- action.consumeDeclaratorWithPointer(false);
- break;
- }
-
- //
- // Rule 379: abstract_declarator ::= <openscope-ast> ptr_operator_seq direct_abstract_declarator
- //
- case 379: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 383: basic_direct_abstract_declarator ::= ( abstract_declarator )
- //
- case 383: {
- action.consumeDirectDeclaratorBracketed();
- break;
- }
-
- //
- // Rule 384: basic_direct_abstract_declarator ::= ( )
- //
- case 384: {
- action.consumeAbstractDeclaratorEmpty();
- break;
- }
-
- //
- // Rule 385: array_direct_abstract_declarator ::= array_modifier
- //
- case 385: {
- action.consumeDirectDeclaratorArrayDeclarator(false);
- break;
- }
-
- //
- // Rule 386: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier
- //
- case 386: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 387: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier
- //
- case 387: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 388: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
- //
- case 388: {
- action.consumeDirectDeclaratorFunctionDeclarator(true);
- break;
- }
-
- //
- // Rule 389: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
- //
- case 389: {
- action.consumeDirectDeclaratorFunctionDeclarator(false);
- break;
- }
-
- //
- // Rule 390: parameter_declaration_clause ::= parameter_declaration_list_opt ...
- //
- case 390: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 391: parameter_declaration_clause ::= parameter_declaration_list_opt
- //
- case 391: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 392: parameter_declaration_clause ::= parameter_declaration_list , ...
- //
- case 392: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 398: abstract_declarator_opt ::= $Empty
- //
- case 398: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 399: parameter_declaration ::= declaration_specifiers parameter_init_declarator
- //
- case 399: {
- action.consumeParameterDeclaration();
- break;
- }
-
- //
- // Rule 400: parameter_declaration ::= declaration_specifiers
- //
- case 400: {
- action.consumeParameterDeclarationWithoutDeclarator();
- break;
- }
-
- //
- // Rule 402: parameter_init_declarator ::= declarator = parameter_initializer
- //
- case 402: {
- action.consumeDeclaratorWithInitializer(true);
- break;
- }
-
- //
- // Rule 404: parameter_init_declarator ::= abstract_declarator = parameter_initializer
- //
- case 404: {
- action.consumeDeclaratorWithInitializer(true);
- break;
- }
-
- //
- // Rule 405: parameter_init_declarator ::= = parameter_initializer
- //
- case 405: {
- action.consumeDeclaratorWithInitializer(false);
- break;
- }
-
- //
- // Rule 406: parameter_initializer ::= assignment_expression
- //
- case 406: {
- action.consumeInitializer();
- break;
- }
-
- //
- // Rule 407: function_definition ::= declaration_specifiers_opt function_declarator <openscope-ast> ctor_initializer_list_opt function_body
- //
- case 407: {
- action.consumeFunctionDefinition(false);
- break;
- }
-
- //
- // Rule 408: function_definition ::= declaration_specifiers_opt function_declarator try <openscope-ast> ctor_initializer_list_opt function_body <openscope-ast> handler_seq
- //
- case 408: {
- action.consumeFunctionDefinition(true);
- break;
- }
-
- //
- // Rule 411: initializer ::= ( expression_list )
- //
- case 411: {
- action.consumeInitializerConstructor();
- break;
- }
-
- //
- // Rule 412: initializer_clause ::= assignment_expression
- //
- case 412: {
- action.consumeInitializer();
- break;
- }
-
- //
- // Rule 413: initializer_clause ::= initializer_list
- //
- case 413: {
- action.consumeInitializer();
- break;
- }
-
- //
- // Rule 414: initializer_list ::= start_initializer_list { <openscope-ast> initializer_seq , } end_initializer_list
- //
- case 414: {
- action.consumeInitializerList();
- break;
- }
-
- //
- // Rule 415: initializer_list ::= start_initializer_list { <openscope-ast> initializer_seq } end_initializer_list
- //
- case 415: {
- action.consumeInitializerList();
- break;
- }
-
- //
- // Rule 416: initializer_list ::= { <openscope-ast> }
- //
- case 416: {
- action.consumeInitializerList();
- break;
- }
-
- //
- // Rule 417: start_initializer_list ::= $Empty
- //
- case 417: {
- action.initializerListStart();
- break;
- }
-
- //
- // Rule 418: end_initializer_list ::= $Empty
- //
- case 418: {
- action.initializerListEnd();
- break;
- }
-
- //
- // Rule 423: class_specifier ::= class_head { <openscope-ast> member_declaration_list_opt }
- //
- case 423: {
- action.consumeClassSpecifier();
- break;
- }
-
- //
- // Rule 424: class_head ::= class_keyword composite_specifier_hook identifier_name_opt class_name_suffix_hook <openscope-ast> base_clause_opt
- //
- case 424: {
- action.consumeClassHead(false);
- break;
- }
-
- //
- // Rule 425: class_head ::= class_keyword composite_specifier_hook template_id_name class_name_suffix_hook <openscope-ast> base_clause_opt
- //
- case 425: {
- action.consumeClassHead(false);
- break;
- }
-
- //
- // Rule 426: class_head ::= class_keyword composite_specifier_hook nested_name_specifier identifier_name class_name_suffix_hook <openscope-ast> base_clause_opt
- //
- case 426: {
- action.consumeClassHead(true);
- break;
- }
-
- //
- // Rule 427: class_head ::= class_keyword composite_specifier_hook nested_name_specifier template_id_name class_name_suffix_hook <openscope-ast> base_clause_opt
- //
- case 427: {
- action.consumeClassHead(true);
- break;
- }
-
- //
- // Rule 431: identifier_name_opt ::= $Empty
- //
- case 431: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 435: visibility_label ::= access_specifier_keyword :
- //
- case 435: {
- action.consumeVisibilityLabel();
- break;
- }
-
- //
- // Rule 436: member_declaration ::= declaration_specifiers_opt <openscope-ast> member_declarator_list ;
- //
- case 436: {
- action.consumeDeclarationSimple(true);
- break;
- }
-
- //
- // Rule 437: member_declaration ::= declaration_specifiers_opt ;
- //
- case 437: {
- action.consumeDeclarationSimple(false);
- break;
- }
-
- //
- // Rule 440: member_declaration ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name ;
- //
- case 440: {
- action.consumeMemberDeclarationQualifiedId();
- break;
- }
-
- //
- // Rule 446: member_declaration ::= ERROR_TOKEN
- //
- case 446: {
- action.consumeDeclarationProblem();
- break;
- }
-
- //
- // Rule 455: member_declarator ::= declarator constant_initializer
- //
- case 455: {
- action.consumeMemberDeclaratorWithInitializer();
- break;
- }
-
- //
- // Rule 456: member_declarator ::= bit_field_declarator : constant_expression
- //
- case 456: {
- action.consumeBitField(true);
- break;
- }
-
- //
- // Rule 457: member_declarator ::= : constant_expression
- //
- case 457: {
- action.consumeBitField(false);
- break;
- }
-
- //
- // Rule 458: bit_field_declarator ::= identifier_name
- //
- case 458: {
- action.consumeDirectDeclaratorIdentifier();
- break;
- }
-
- //
- // Rule 459: constant_initializer ::= = constant_expression
- //
- case 459: {
- action.consumeInitializer();
- break;
- }
-
- //
- // Rule 465: base_specifier ::= dcolon_opt nested_name_specifier_opt class_name
- //
- case 465: {
- action.consumeBaseSpecifier(false, false);
- break;
- }
-
- //
- // Rule 466: base_specifier ::= virtual access_specifier_keyword_opt dcolon_opt nested_name_specifier_opt class_name
- //
- case 466: {
- action.consumeBaseSpecifier(true, true);
- break;
- }
-
- //
- // Rule 467: base_specifier ::= access_specifier_keyword virtual dcolon_opt nested_name_specifier_opt class_name
- //
- case 467: {
- action.consumeBaseSpecifier(true, true);
- break;
- }
-
- //
- // Rule 468: base_specifier ::= access_specifier_keyword dcolon_opt nested_name_specifier_opt class_name
- //
- case 468: {
- action.consumeBaseSpecifier(true, false);
- break;
- }
-
- //
- // Rule 469: access_specifier_keyword ::= private
- //
- case 469: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 470: access_specifier_keyword ::= protected
- //
- case 470: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 471: access_specifier_keyword ::= public
- //
- case 471: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 473: access_specifier_keyword_opt ::= $Empty
- //
- case 473: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 475: conversion_function_id_name ::= conversion_function_id < <openscope-ast> template_argument_list_opt >
- //
- case 475: {
- action.consumeTemplateId();
- break;
- }
-
- //
- // Rule 476: conversion_function_id ::= operator conversion_type_id
- //
- case 476: {
- action.consumeConversionName();
- break;
- }
-
- //
- // Rule 477: conversion_type_id ::= type_specifier_seq conversion_declarator
- //
- case 477: {
- action.consumeTypeId(true);
- break;
- }
-
- //
- // Rule 478: conversion_type_id ::= type_specifier_seq
- //
- case 478: {
- action.consumeTypeId(false);
- break;
- }
-
- //
- // Rule 479: conversion_declarator ::= <openscope-ast> ptr_operator_seq
- //
- case 479: {
- action.consumeDeclaratorWithPointer(false);
- break;
- }
-
- //
- // Rule 485: mem_initializer ::= mem_initializer_name ( expression_list_opt )
- //
- case 485: {
- action.consumeConstructorChainInitializer();
- break;
- }
-
- //
- // Rule 486: mem_initializer_name ::= dcolon_opt nested_name_specifier_opt class_name
- //
- case 486: {
- action.consumeQualifiedId(false);
- break;
- }
-
- //
- // Rule 489: operator_function_id_name ::= operator_id_name < <openscope-ast> template_argument_list_opt >
- //
- case 489: {
- action.consumeTemplateId();
- break;
- }
-
- //
- // Rule 490: operator_id_name ::= operator overloadable_operator
- //
- case 490: {
- action.consumeOperatorName();
- break;
- }
-
- //
- // Rule 533: template_declaration ::= export_opt template < <openscope-ast> template_parameter_list > declaration
- //
- case 533: {
- action.consumeTemplateDeclaration();
- break;
- }
-
- //
- // Rule 534: export_opt ::= export
- //
- case 534: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 535: export_opt ::= $Empty
- //
- case 535: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 539: template_parameter ::= parameter_declaration
- //
- case 539: {
- action.consumeTemplateParamterDeclaration();
- break;
- }
-
- //
- // Rule 540: type_parameter ::= class identifier_name_opt
- //
- case 540: {
- action.consumeSimpleTypeTemplateParameter(false);
- break;
- }
-
- //
- // Rule 541: type_parameter ::= class identifier_name_opt = type_id
- //
- case 541: {
- action.consumeSimpleTypeTemplateParameter(true);
- break;
- }
-
- //
- // Rule 542: type_parameter ::= typename identifier_name_opt
- //
- case 542: {
- action.consumeSimpleTypeTemplateParameter(false);
- break;
- }
-
- //
- // Rule 543: type_parameter ::= typename identifier_name_opt = type_id
- //
- case 543: {
- action.consumeSimpleTypeTemplateParameter(true);
- break;
- }
-
- //
- // Rule 544: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt
- //
- case 544: {
- action.consumeTemplatedTypeTemplateParameter(false);
- break;
- }
-
- //
- // Rule 545: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt = id_expression
- //
- case 545: {
- action.consumeTemplatedTypeTemplateParameter(true);
- break;
- }
-
- //
- // Rule 546: template_id_name ::= identifier_name < <openscope-ast> template_argument_list_opt >
- //
- case 546: {
- action.consumeTemplateId();
- break;
- }
-
- //
- // Rule 553: nested_name_specifier_inTemplate ::= class_or_namespace_name_inTemplate :: nested_name_specifier_with_template_inTemplate
- //
- case 553: {
- action.consumeNestedNameSpecifier(true);
- break;
- }
-
- //
- // Rule 554: nested_name_specifier_inTemplate ::= class_or_namespace_name_inTemplate ::
- //
- case 554: {
- action.consumeNestedNameSpecifier(false);
- break;
- }
-
- //
- // Rule 555: nested_name_specifier_with_template_inTemplate ::= class_or_namespace_name_with_template_inTemplate :: nested_name_specifier_with_template_inTemplate
- //
- case 555: {
- action.consumeNestedNameSpecifier(true);
- break;
- }
-
- //
- // Rule 556: nested_name_specifier_with_template_inTemplate ::= class_or_namespace_name_with_template_inTemplate ::
- //
- case 556: {
- action.consumeNestedNameSpecifier(false);
- break;
- }
-
- //
- // Rule 557: class_or_namespace_name_with_template_inTemplate ::= template_opt class_or_namespace_name_inTemplate
- //
- case 557: {
- action.consumeNameWithTemplateKeyword();
- break;
- }
-
- //
- // Rule 559: nested_name_specifier_opt_inTemplate ::= $Empty
- //
- case 559: {
- action.consumeNestedNameSpecifierEmpty();
- break;
- }
-
- //
- // Rule 562: type_name_specifier_inTemplate ::= typename dcolon_opt nested_name_specifier identifier_name
- //
- case 562: {
- action.consumeQualifiedId(false);
- break;
- }
-
- //
- // Rule 563: type_name_specifier_inTemplate ::= typename dcolon_opt nested_name_specifier template_opt template_id_name
- //
- case 563: {
- action.consumeQualifiedId(true);
- break;
- }
-
- //
- // Rule 568: declaration_specifiers_inTemplate ::= <openscope-ast> simple_declaration_specifiers
- //
- case 568: {
- action.consumeDeclarationSpecifiersSimple();
- break;
- }
-
- //
- // Rule 569: declaration_specifiers_inTemplate ::= <openscope-ast> class_declaration_specifiers
- //
- case 569: {
- action.consumeDeclarationSpecifiersComposite();
- break;
- }
-
- //
- // Rule 570: declaration_specifiers_inTemplate ::= <openscope-ast> elaborated_declaration_specifiers
- //
- case 570: {
- action.consumeDeclarationSpecifiersComposite();
- break;
- }
-
- //
- // Rule 571: declaration_specifiers_inTemplate ::= <openscope-ast> enum_declaration_specifiers
- //
- case 571: {
- action.consumeDeclarationSpecifiersComposite();
- break;
- }
-
- //
- // Rule 572: declaration_specifiers_inTemplate ::= <openscope-ast> type_name_declaration_specifiers_inTemplate
- //
- case 572: {
- action.consumeDeclarationSpecifiersTypeName();
- break;
- }
-
- //
- // Rule 574: type_id_inTemplate ::= type_specifier_seq_inTemplate
- //
- case 574: {
- action.consumeTypeId(false);
- break;
- }
-
- //
- // Rule 575: type_id_inTemplate ::= type_specifier_seq_inTemplate abstract_declarator
- //
- case 575: {
- action.consumeTypeId(true);
- break;
- }
-
- //
- // Rule 576: template_argument ::= assignment_expression_inTemplate
- //
- case 576: {
- action.consumeTemplateArgumentExpression();
- break;
- }
-
- //
- // Rule 577: template_argument ::= type_id_inTemplate
- //
- case 577: {
- action.consumeTemplateArgumentTypeId();
- break;
- }
-
- //
- // Rule 578: explicit_instantiation ::= template declaration
- //
- case 578: {
- action.consumeTemplateExplicitInstantiation();
- break;
- }
-
- //
- // Rule 579: explicit_specialization ::= template < > declaration
- //
- case 579: {
- action.consumeTemplateExplicitSpecialization();
- break;
- }
-
- //
- // Rule 580: try_block ::= try compound_statement <openscope-ast> handler_seq
- //
- case 580: {
- action.consumeStatementTryBlock(true);
- break;
- }
-
- //
- // Rule 581: try_block ::= try compound_statement
- //
- case 581: {
- action.consumeStatementTryBlock(false);
- break;
- }
-
- //
- // Rule 584: handler ::= catch ( exception_declaration ) compound_statement
- //
- case 584: {
- action.consumeStatementCatchHandler(false);
- break;
- }
-
- //
- // Rule 585: handler ::= catch ( ... ) compound_statement
- //
- case 585: {
- action.consumeStatementCatchHandler(true);
- break;
- }
-
- //
- // Rule 586: exception_declaration ::= type_specifier_seq <openscope-ast> declarator
- //
- case 586: {
- action.consumeDeclarationSimple(true);
- break;
- }
-
- //
- // Rule 587: exception_declaration ::= type_specifier_seq <openscope-ast> abstract_declarator
- //
- case 587: {
- action.consumeDeclarationSimple(true);
- break;
- }
-
- //
- // Rule 588: exception_declaration ::= type_specifier_seq
- //
- case 588: {
- action.consumeDeclarationSimple(false);
- break;
- }
-
- //
- // Rule 590: exception_specification ::= throw ( )
- //
- case 590: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 611: attribute_parameter ::= assignment_expression
- //
- case 611: {
- action.consumeIgnore();
- break;
- }
-
- //
- // Rule 622: extended_asm_declaration ::= asm volatile_opt ( extended_asm_param_seq ) ;
- //
- case 622: {
- gnuAction.consumeDeclarationASM();
- break;
- }
-
- //
- // Rule 633: unary_expression ::= __alignof__ unary_expression
- //
- case 633: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_alignOf);
- break;
- }
-
- //
- // Rule 634: unary_expression ::= typeof unary_expression
- //
- case 634: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_typeof);
- break;
- }
-
- //
- // Rule 635: relational_expression ::= relational_expression >? shift_expression
- //
- case 635: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_max);
- break;
- }
-
- //
- // Rule 636: relational_expression ::= relational_expression <? shift_expression
- //
- case 636: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_min);
- break;
- }
-
- //
- // Rule 637: conditional_expression ::= logical_or_expression ? <empty> : assignment_expression
- //
- case 637: {
- action.consumeExpressionConditional();
- break;
- }
-
- //
- // Rule 638: primary_expression ::= ( compound_statement )
- //
- case 638: {
- gnuAction.consumeCompoundStatementExpression();
- break;
- }
-
- //
- // Rule 639: labeled_statement ::= case case_range_expression : statement
- //
- case 639: {
- action.consumeStatementCase();
- break;
- }
-
- //
- // Rule 640: case_range_expression ::= constant_expression ... constant_expression
- //
- case 640: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_assign);
- break;
- }
-
- //
- // Rule 644: typeof_type_specifier ::= typeof unary_expression
- //
- case 644: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_typeof);
- break;
- }
-
- //
- // Rule 645: typeof_type_specifier ::= typeof ( type_id )
- //
- case 645: {
- action.consumeExpressionTypeId(IASTTypeIdExpression.op_typeof);
- break;
- }
-
- //
- // Rule 646: declaration_specifiers ::= <openscope-ast> typeof_declaration_specifiers
- //
- case 646: {
- action.consumeDeclarationSpecifiersTypeof();
- break;
- }
-
- //
- // Rule 659: declarator ::= <openscope-ast> ptr_operator_seq attribute_or_decl_specifier_seq direct_declarator
- //
- case 659: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 662: simple_type_specifier ::= _Complex
- //
- case 662: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 663: simple_type_specifier ::= _Imaginary
- //
- case 663: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 664: cv_qualifier ::= restrict
- //
- case 664: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 665: explicit_instantiation ::= extern template declaration
- //
- case 665: {
- action.consumeTemplateExplicitInstantiationGCC(IGPPASTExplicitTemplateInstantiation.ti_extern);
- break;
- }
-
- //
- // Rule 666: explicit_instantiation ::= static template declaration
- //
- case 666: {
- action.consumeTemplateExplicitInstantiationGCC(IGPPASTExplicitTemplateInstantiation.ti_static);
- break;
- }
-
- //
- // Rule 667: explicit_instantiation ::= inline template declaration
- //
- case 667: {
- action.consumeTemplateExplicitInstantiationGCC(IGPPASTExplicitTemplateInstantiation.ti_inline);
- break;
- }
-
- //
- // Rule 668: postfix_expression ::= ( type_id ) initializer_list
- //
- case 668: {
- action.consumeExpressionTypeIdInitializer();
- break;
- }
-
- //
- // Rule 670: no_sizeof_type_id_start ::= ERROR_TOKEN
- //
- case 670: {
- action.consumeEmpty();
- break;
- }
-
- default:
- break;
- }
- return;
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gpp/GPPSizeofExpressionParserprs.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gpp/GPPSizeofExpressionParserprs.java
deleted file mode 100644
index 1ba43a006c1..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gpp/GPPSizeofExpressionParserprs.java
+++ /dev/null
@@ -1,1850 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2015 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.dom.lrparser.gpp;
-
-public class GPPSizeofExpressionParserprs implements lpg.lpgjavaruntime.ParseTable, GPPSizeofExpressionParsersym {
-
- public interface IsKeyword {
- public final static byte isKeyword[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0 };
- }
-
- public final static byte isKeyword[] = IsKeyword.isKeyword;
-
- public final boolean isKeyword(int index) {
- return isKeyword[index] != 0;
- }
-
- public interface BaseCheck {
- public final static short baseCheck[] = { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 0, 1, 0, 4, 2, 3, 2, 3, 2, 2, 1, 0, 1, 1, 4, 4, 4, 8, 8, 3, 3,
- 4, 4, 3, 3, 2, 2, 7, 7, 7, 7, 4, 5, 6, 3, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 7, 9, 3, 0, 1, 2, 2,
- 1, 2, 3, 4, 1, 0, 3, 1, 0, 3, 5, 1, 4, 1, 3, 3, 1, 3, 3, 3, 1, 3, 3, 1, 3, 3, 1, 3, 3, 3, 3, 1, 3, 3, 1,
- 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 5, 1, 3, 5, 3, 3, 1, 3, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 5, 1, 1, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 2, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 2, 1, 3, 1, 0, 1, 0, 1, 1, 0,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 4, 3, 2, 1, 4, 2, 1, 2, 5, 7, 5, 1, 4, 1, 0, 5, 7, 2, 8, 1, 1, 2, 2, 3, 2,
- 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 0, 4, 4, 2, 2, 2, 2, 2, 1, 0, 1, 1, 1, 1, 1, 1,
- 2, 1, 2, 2, 2, 1, 1, 2, 2, 1, 2, 2, 1, 2, 2, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 3, 4, 4, 5, 2, 5, 6, 5, 0, 1, 0, 7, 8, 0, 1, 3, 1, 0, 1, 3, 1, 7, 6, 0, 7, 6, 1, 0, 6, 6,
- 4, 1, 3, 1, 0, 1, 1, 2, 1, 1, 3, 1, 3, 1, 1, 1, 1, 3, 9, 2, 2, 3, 2, 5, 3, 7, 0, 1, 2, 2, 1, 0, 1, 1, 1,
- 3, 1, 2, 1, 1, 2, 3, 1, 1, 1, 3, 2, 1, 2, 2, 9, 8, 2, 1, 3, 1, 3, 1, 0, 1, 0, 2, 1, 1, 3, 1, 3, 2, 1, 5,
- 8, 1, 2, 3, 1, 1, 7, 6, 3, 0, 0, 1, 3, 1, 1, 5, 6, 6, 7, 7, 0, 0, 1, 0, 1, 1, 1, 2, 4, 2, 2, 1, 5, 1, 1,
- 1, 1, 1, 1, 1, 2, 1, 0, 1, 3, 1, 1, 2, 3, 2, 1, 2, 2, 1, 0, 1, 3, 3, 5, 5, 4, 1, 1, 1, 1, 0, 1, 5, 2, 2,
- 1, 2, 2, 1, 0, 1, 3, 4, 3, 1, 1, 5, 2, 1, 1, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 7, 1, 0, 1, 3, 1, 1, 2, 4, 2, 4, 7, 9, 5, 1,
- 3, 1, 0, 1, 1, 3, 2, 3, 2, 2, 1, 0, 1, 1, 4, 5, 2, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 1, 1, 2, 4, 4, 2, 1,
- 2, 5, 5, 3, 3, 1, 4, 3, 1, 0, 1, 3, 1, 1, 1, 1, 2, 6, 3, 1, 3, 1, 4, 0, 1, 1, 1, 3, 1, 0, 4, 3, 1, 2, 1,
- 3, 4, 4, 4, 6, 1, 0, 1, 3, 1, 3, 0, 1, 4, 5, 2, 2, 3, 3, 5, 3, 4, 3, 1, 2, 2, 2, 4, 2, 1, 1, 2, 2, 3, 2,
- 2, 3, 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 3, 3, 3, 4, 1, 1, -65, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10, -44, 0, 0,
- 0, 0, 0, -266, -534, -17, -251, -407, 0, 0, 0, 0, -55, -360, 0, -493, 0, 0, 0, 0, -243, 0, 0, 0, 0, 0,
- 0, 0, -69, -66, 0, 0, 0, 0, 0, 0, 0, -255, 0, 0, -457, 0, 0, 0, 0, 0, 0, -218, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -61, -539, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, -2, 0, 0, 0, 0, 0, -224, 0, 0, 0, -436, 0, 0, 0, 0,
- -484, 0, 0, 0, 0, 0, 0, 0, 0, 0, -451, -147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0, -5, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -6, -467, 0, 0, 0, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -134, 0, 0, 0, 0, 0, 0, -60, 0, 0, 0, 0, 0, 0, -7, 0, 0, 0, 0, -121, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -642, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 0, 0, -160, 0, 0,
- 0, 0, 0, 0, 0, 0, -152, 0, 0, 0, 0, -9, 0, -193, 0, 0, 0, -128, -141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -677, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -148, 0,
- -328, 0, 0, 0, 0, -16, 0, 0, 0, 0, -11, 0, 0, 0, 0, 0, -12, 0, 0, -13, 0, -335, 0, 0, 0, 0, 0, 0, -485,
- 0, 0, 0, 0, -308, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -15,
- -82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -518, 0, 0, 0, 0, 0, 0,
- 0, 0, -53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -284, 0, 0, 0, 0, -30, 0, -411, 0, 0, 0, 0, -604, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -317, 0, 0, 0, -325, 0, 0, 0, 0, 0, -31, 0,
- 0, -32, 0, 0, 0, 0, 0, 0, -33, 0, -139, -34, 0, 0, 0, 0, -551, 0, 0, 0, 0, -35, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -326, 0, 0, 0, -118, -575, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -36,
- 0, 0, -434, 0, -159, 0, 0, 0, -250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -549, 0, -509, 0, 0, 0, 0, -37, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -408, 0, 0, 0, 0, -599, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -640, 0, 0, 0, 0, 0, 0, 0, -469, 0, 0, 0, 0, -313, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -336, 0, 0, 0, -214, 0, -546, 0, 0, 0, 0, 0, 0, 0, 0, 0, -140, 0, 0, 0, -550, 0, -75,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -38, 0, 0, 0, -3, 0, 0, 0, 0, -416, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -364, 0, 0, 0, 0, -252, -258, 0, 0, 0, 0, 0, 0, 0, 0, 0, -220, 0, 0, 0, 0,
- 0, -413, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -481, 0, 0,
- -362, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -453, -39, 0, 0, 0, 0, -490, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -505, 0, 0, -40, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -42,
- 0, 0, 0, 0, -365, 0, 0, 0, 0, -76, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -491, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -522, -466, 0, -409, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -221, 0, 0, 0, 0, 0, -580, 0, 0, 0, 0, -482, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -262, -568, 0, 0, -156, 0, -58, 0, 0, 0, 0, 0, 0, 0, 0, 0, -447, 0, 0, 0, 0, 0,
- -41, 0, 0, 0, 0, -543, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -422, 0, 0, 0,
- -166, -231, -489, 0, 0, 0, -670, 0, 0, -526, 0, 0, 0, 0, 0, 0, -70, 0, -544, 0, 0, 0, 0, -43, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -483, 0, 0, 0, 0, -71, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -503, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, -390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -527, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -257, 0, 0, -101, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -529, 0, 0, 0, -51, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -554, -74, -114, -115, -52, -253, 0, 0, 0, 0, 0, 0, 0, 0, 0, -237, -116, 0,
- 0, -117, 0, -103, 0, 0, 0, 0, -576, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -572,
- 0, 0, 0, 0, -124, -646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -62, 0, -104, 0, 0, 0, 0, -125, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -579, 0, 0, 0, -59, -647, 0, 0, 0, 0, 0, 0,
- -126, 0, 0, 0, 0, 0, 0, 0, 0, -105, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -644, -356, -142, -347, -348, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -269, -113, 0, 0, 0, 0, -106,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, -392,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, 0, -107, 0, 0, 0, 0, -161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -228, -488, 0, 0, 0, 0, -229, 0, 0, 0, 0, 0, 0, -417, 0, 0, 0, 0, 0, 0,
- -149, 0, -108, 0, 0, 0, 0, -165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -312,
- -610, 0, 0, -150, 0, 0, 0, 0, 0, 0, 0, -151, 0, 0, -167, -213, 0, 0, -233, 0, -109, 0, 0, 0, 0, -445, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -235, 0, 0, -435, -261, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -322, -263, 0, 0, -315, 0, -110, 0, 0, 0, 0, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -323, 0, 0, -169, -571, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -520, -327, 0, 0, -330, 0,
- -145, 0, 0, 0, 0, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -329, -349, 0,
- -171, -358, 0, 0, 0, 0, 0, 0, 0, -357, 0, 0, -438, 0, 0, 0, -241, 0, 0, 0, 0, -359, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -405, 0, 0, 0, 0, 0, 0, 0, 0, 0, -634, 0, 0, -448, 0,
- 0, 0, 0, -265, 0, 0, 0, -611, 0, 0, 0, 0, 0, -472, -172, -270, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -630, 0, 0, 0, -499, 0, 0, 0, 0, 0, 0, 0, 0, 0, -473, 0, 0, 0,
- -173, 0, -271, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -386, -462,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, 0, 0, -598, -366, 0, 0, 0, 0, -295, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, -83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -397, 0, -175, 0, 0, -176, 0, -638, 0, 0, 0, 0, 0, 0, -177,
- 0, 0, 0, 0, 0, -296, 0, 0, 0, 0, -178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -219, -84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -179, 0, 0, 0, 0, 0,
- -402, -180, -404, 0, -406, 0, 0, 0, -412, 0, -661, 0, 0, 0, -367, 0, 0, 0, 0, -297, 0, 0, 0, 0, -181, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -222, -85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -182, 0, 0, 0, 0, 0, -430, -183, -433, 0, -446, 0, 0, 0, -452, 0,
- -184, 0, 0, 0, -368, 0, 0, 0, 0, -298, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -403, -22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -185, 0, 0,
- 0, 0, 0, 0, -479, -186, -480, 0, -494, 0, 0, 0, -528, 0, -187, 0, 0, 0, -369, 0, 0, 0, 0, -299, 0, 0, 0,
- 0, -536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -475, -23, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -188, 0, 0, 0, 0, 0, -532, -189, -535, 0, -552, 0, 0,
- 0, -583, 0, -190, 0, 0, 0, -387, 0, 0, 0, 0, -300, 0, 0, 0, 0, -558, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -506, -24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -191, 0, 0, 0, 0, 0, -605, -192, -609, 0, -613, 0, 0, 0, -619, 0, -195, 0, 0, 0, -389, 0, 0, 0, 0,
- -301, 0, 0, 0, 0, -569, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -566, -25, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -199, 0, 0, 0, 0, 0, -636, -637, -651,
- 0, 0, 0, 0, 0, -654, -200, -201, 0, 0, 0, -421, 0, 0, 0, 0, -302, 0, 0, 0, 0, -573, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -593, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, -662, -203, -204, 0, -205, 0, 0, -206, -207, -208, -212, 0, 0,
- -215, -426, 0, 0, 0, 0, -303, 0, 0, 0, 0, -574, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -633, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -225, 0, 0, 0,
- 0, 0, -227, -232, -238, 0, -240, -242, 0, -657, 0, 0, 0, 0, 0, -244, -428, 0, 0, 0, 0, -304, 0, 0, 0, 0,
- -581, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -28, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -245, 0, -246, -247, -249, -525, -264, -276, -277, 0, -285,
- -314, 0, -667, 0, 0, 0, 0, 0, -320, -432, 0, 0, 0, 0, -305, 0, 0, 0, 0, -331, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -547, -333, 0, -631, 0, 0, -337, -602, -545, -339, 0, -340, 0, 0, -668, 0, 0, 0, 0, 0, -345,
- -443, 0, 0, 0, 0, -464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -420, -353, 0, -354, -578, 0,
- -64, -355, -363, -374, 0, 0, -601, 0, -375, -626, -533, -376, 0, 0, 0, 0, 0, 0, 0, 0, -555, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -675, 0, 0, 0, 0, 0, 0, 0, -377,
- 0, 0, -410, 0, 0, -378, -460, 0, 0, -461, 0, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -379, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -380, 0, 0, 0, 0, -463, -381,
- -162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -620, 0, 0, -164, 0, 0, 0, 0, -608, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -424, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -616, -382,
- -649, -671, -383, 0, 0, 0, 0, 0, -384, 0, 0, -468, -470, 0, 0, -524, 0, 0, 0, 0, -471, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -385, 0, 0, 0, -388, -393, -395, 0, 0, 0, 0, 0, 0, -396, 0,
- 0, -414, -415, 0, 0, -514, -530, -560, -565, -567, -537, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -431, 0, 0, -439, 0, 0, -454, 0, 0, -577, -607, 0, 0,
- -548, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -458, 0, 0, -459,
- -476, -477, -486, -487, 0, 0, -495, 0, 0, -497, 0, 0, -515, -516, 0, 0, -615, -617, -618, -643, -645,
- -591, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -521,
- -504, -561, 0, 0, -538, 0, 0, -540, 0, 0, -669, -556, 0, 0, -592, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -562, 0, 0, 0, -564, -570, -584, -585, 0, 0, -586, 0, 0, -596, 0,
- 0, -597, -603, 0, 0, -614, -627, 0, 0, -628, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -629, -639, -655, -656, -672, -674, -676, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -307, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -350, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, -127,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -54, 0, 0, 0, 0, 0, -1, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -123, 0, 0, 0, 0, 0, 0, -444, 0, 0, 0, 0, 0, 0, 0, 0, 0, -14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -440, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -519, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -294, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -478, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -531, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0,
- -474, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -508, 0, 0, 0, 0, 0, -97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -292, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -293, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -500, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -289, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -309, 0, 0,
- 0, -130, 0, 0, 0, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -291, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -398, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -510, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -542, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -589, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0, 0,
- 0, 0, 0, -268, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -652,
- 0, 0, 0, 0, 0, 0, -394, 0, 0, 0, 0, 0, -590, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -553, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -129, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -595, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -272, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -89, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -90, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -155, -77, 0, 0, 0, 0, 0, 0, -507, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -273, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -511, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -239, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -541, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -286, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -287, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -288, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -332, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -373, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -418, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -278, 0, 0, 0, -131, 0, 0,
- 0, -361, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -594, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -92, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -248, -157, 0, 0, 0, 0, 0, 0, -122, -342, 0, 0, 0, 0, 0, 0, -351, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -370, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -338, 0, 0, 0, 0, 0, 0, 0, -144, -557, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -632, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -341, 0, 0, 0, 0, 0, 0, 0, -419, 0, 0, 0, 0, -49, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -423, 0, 0, 0, 0, 0, 0, 0, -437, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -425, 0, 0, 0, 0, 0, 0, 0, -456, 0, 0, 0, 0, -223, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -496, -274, -275, 0, 0, 0, 0, 0, 0, -133, 0, 0, 0, -236, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -498, 0, -306, 0, 0, 0, 0, 0, 0, -136, 0, 0, 0, -267, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -502, -371, 0, 0, 0, 0, 0, 0, -209, -343, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -455, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -606, 0, 0, 0, 0, 0, 0, 0, 0, -279, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -641, 0, 0, 0, 0, 0, -648, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -135, 0, 0, 0, -588, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -512, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -501, -280, 0, 0, 0, 0, 0, -137, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -334, 0, -523, -612, 0, 0, 0, 0, 0, 0,
- -441, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -559, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -372, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -259, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -20, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -154, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -283, 0, 0, -153, 0, 0, 0, -582, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -622, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -310, 0, 0, 0, 0,
- -663, 0, 0, 0, -346, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -587, 0, 0, 0, 0, 0,
- -311, 0, 0, 0, 0, 0, -427, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -281, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -621, 0, 0, 0, 0, 0, 0, 0, -318, 0,
- 0, 0, 0, 0, 0, 0, -623, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -513, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -624, -429, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -316, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -650, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -653, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -282, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -344, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -492, 0, 0, 0, 0, 0, 0, 0, 0, 0, -254, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -230, 0, 0, 0, 0, 0, 0, 0, 0, -163, 0, 0, 0,
- 0, -399, -45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -321, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -324, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -352, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -442, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -449, 0, 0, 0, -660, 0, 0, 0, 0, 0, 0, 0, -450, 0, 0, 0,
- -664, -517, 0, 0, 0, 0, -563, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -600, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -635, 0, 0, 0, -400, 0, 0, 0, -401, 0, 0, 0, 0, 0, 0, -658, 0, 0, 0, 0, -659, 0, 0, 0, 0, -391, 0,
- 0, 0, -465, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -47, 0, 0, 0, -48, 0, 0, 0, 0, 0, 0, -260, -665, -666, -673, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static short baseCheck[] = BaseCheck.baseCheck;
-
- @Override
- public final int baseCheck(int index) {
- return baseCheck[index];
- }
-
- public final static short rhs[] = baseCheck;
-
- @Override
- public final int rhs(int index) {
- return rhs[index];
- }
-
- public interface BaseAction0 {
- public final static char baseAction0[] = { 205, 5, 141, 103, 103, 32, 32, 99, 99, 47, 47, 43, 43, 238, 1, 1, 16,
- 16, 16, 16, 16, 16, 16, 17, 17, 17, 15, 11, 11, 6, 6, 6, 6, 6, 6, 2, 84, 84, 4, 4, 12, 12, 53, 53, 166,
- 166, 167, 81, 81, 49, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 168,
- 168, 168, 143, 143, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 206, 206, 207, 207, 208,
- 171, 171, 172, 172, 169, 169, 173, 170, 170, 21, 21, 22, 22, 23, 23, 23, 24, 24, 24, 24, 25, 25, 25, 26,
- 26, 26, 35, 35, 35, 35, 35, 36, 36, 36, 38, 38, 39, 39, 41, 41, 42, 42, 45, 45, 46, 46, 54, 54, 54, 54,
- 54, 62, 62, 62, 65, 65, 70, 70, 71, 71, 74, 74, 75, 75, 76, 76, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
- 77, 77, 77, 34, 34, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 44, 33, 174, 174, 111, 111, 209,
- 209, 104, 239, 239, 91, 91, 91, 91, 91, 91, 91, 91, 91, 92, 92, 92, 86, 86, 63, 63, 210, 210, 93, 93,
- 93, 124, 124, 211, 211, 94, 94, 94, 94, 212, 212, 95, 95, 95, 95, 95, 96, 96, 100, 100, 100, 100, 100,
- 100, 100, 100, 55, 55, 55, 55, 55, 144, 144, 142, 142, 56, 213, 31, 31, 31, 31, 31, 52, 52, 78, 78, 78,
- 78, 78, 149, 149, 145, 145, 145, 145, 145, 146, 146, 146, 147, 147, 147, 148, 148, 148, 176, 176, 176,
- 79, 79, 79, 79, 79, 80, 80, 80, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 112, 150, 150, 150, 150,
- 150, 150, 119, 119, 119, 177, 178, 178, 120, 120, 214, 180, 180, 179, 179, 151, 151, 125, 89, 89, 152,
- 58, 51, 181, 181, 59, 102, 102, 182, 182, 175, 175, 153, 154, 154, 155, 83, 83, 183, 183, 72, 72, 72,
- 67, 67, 66, 73, 73, 98, 98, 82, 82, 82, 69, 105, 105, 114, 113, 113, 61, 61, 68, 68, 85, 85, 64, 115,
- 115, 115, 106, 106, 106, 107, 107, 108, 108, 108, 109, 109, 126, 126, 126, 128, 128, 127, 127, 240, 240,
- 110, 110, 216, 216, 216, 216, 216, 157, 50, 50, 185, 215, 215, 158, 158, 116, 116, 116, 117, 187, 217,
- 217, 40, 40, 118, 122, 122, 122, 122, 219, 130, 129, 129, 121, 121, 121, 188, 189, 189, 189, 189, 189,
- 189, 189, 189, 189, 189, 189, 221, 221, 218, 218, 220, 220, 132, 133, 133, 133, 133, 134, 222, 135, 131,
- 131, 223, 223, 190, 190, 190, 190, 123, 123, 123, 224, 224, 8, 8, 9, 225, 225, 226, 191, 184, 184, 192,
- 192, 193, 194, 194, 7, 7, 10, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
- 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
- 227, 227, 227, 227, 227, 227, 87, 90, 90, 195, 195, 160, 160, 161, 161, 161, 161, 161, 161, 3, 162, 162,
- 159, 159, 196, 241, 242, 242, 243, 243, 244, 245, 245, 197, 198, 198, 198, 198, 228, 228, 228, 137, 137,
- 137, 137, 137, 138, 139, 139, 136, 136, 101, 88, 97, 97, 186, 186, 140, 140, 229, 229, 229, 163, 163,
- 156, 156, 230, 230, 27, 27, 27, 37, 37, 28, 28, 231, 231, 199, 199, 199, 200, 200, 232, 232, 201, 201,
- 29, 29, 233, 233, 202, 202, 202, 202, 30, 60, 234, 234, 235, 235, 203, 203, 203, 164, 164, 164, 19, 19,
- 35, 35, 46, 17, 92, 236, 204, 204, 204, 165, 165, 31, 57, 78, 155, 155, 155, 132, 132, 132, 214, 219,
- 130, 69, 83, 177, 152, 13, 13, 61, 101, 101, 101, 18, 205, 205, 1591, 35, 2221, 2213, 6728, 4801, 27,
- 30, 31, 1080, 1122, 26, 28, 2179, 294, 25, 23, 50, 1177, 104, 75, 76, 106, 1216, 1226, 1219, 1239, 648,
- 595, 596, 597, 1701, 35, 3297, 175, 1229, 1305, 531, 1278, 1511, 306, 1414, 1546, 366, 55, 1560, 174,
- 5873, 189, 1418, 4279, 2392, 3356, 3862, 2676, 3778, 4019, 671, 1418, 2150, 3390, 264, 1896, 35, 1077,
- 32, 7411, 3252, 27, 30, 31, 1080, 1122, 372, 28, 2773, 1968, 187, 267, 262, 263, 5261, 260, 376, 3475,
- 187, 187, 1309, 2078, 598, 595, 596, 597, 2159, 366, 747, 2039, 2066, 7335, 4993, 232, 237, 247, 7273,
- 4801, 3216, 236, 244, 245, 246, 248, 647, 307, 842, 210, 775, 3450, 1221, 274, 277, 280, 4683, 1015,
- 1701, 35, 1771, 422, 1212, 352, 2172, 354, 3149, 2676, 3778, 348, 1423, 638, 1983, 238, 240, 242, 3686,
- 2650, 2554, 366, 4043, 4007, 5008, 5581, 6434, 283, 579, 239, 241, 598, 595, 596, 597, 172, 1283, 385,
- 78, 532, 306, 2952, 641, 668, 2165, 379, 1059, 814, 382, 274, 1319, 829, 213, 6070, 3031, 35, 1077, 32,
- 5599, 4778, 27, 30, 31, 1080, 1122, 26, 28, 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 106, 1216, 1226,
- 1219, 3070, 6137, 322, 3681, 35, 1077, 32, 5599, 160, 27, 30, 31, 1080, 1122, 26, 28, 1071, 294, 25, 23,
- 50, 1177, 104, 75, 76, 105, 1510, 69, 3055, 3738, 1089, 3779, 308, 267, 35, 312, 3133, 6007, 386, 3071,
- 1701, 1881, 2064, 34, 3141, 3140, 2159, 464, 3143, 3146, 159, 576, 3031, 35, 1077, 32, 5599, 4778, 27,
- 30, 31, 1080, 1122, 26, 28, 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 106, 1216, 1226, 1219, 3070, 582,
- 322, 4189, 35, 1077, 32, 5599, 160, 27, 30, 31, 1080, 1122, 26, 28, 1071, 294, 25, 23, 50, 1177, 104,
- 75, 76, 106, 1216, 2224, 3055, 2650, 1385, 3779, 547, 573, 4687, 577, 3133, 3447, 5727, 3071, 654, 668,
- 2165, 1841, 3141, 3140, 455, 2322, 3143, 3146, 159, 576, 267, 35, 312, 2993, 6074, 749, 3147, 1701, 35,
- 2064, 3296, 3464, 3031, 35, 1077, 32, 5599, 4778, 27, 30, 31, 1080, 1122, 26, 28, 1071, 294, 25, 23, 50,
- 1177, 104, 75, 76, 106, 1216, 1226, 1219, 3070, 603, 3677, 2337, 35, 1077, 32, 6141, 160, 27, 30, 31,
- 1080, 1122, 26, 28, 2115, 364, 545, 2261, 547, 573, 4687, 577, 2347, 35, 1077, 32, 3055, 549, 41, 30,
- 31, 1080, 1122, 844, 3133, 2423, 939, 3071, 3915, 35, 310, 3148, 3141, 3140, 3147, 3444, 3143, 3146,
- 159, 576, 3328, 35, 1077, 32, 5599, 4778, 27, 30, 31, 1080, 1122, 26, 28, 1071, 294, 25, 23, 50, 1177,
- 104, 75, 76, 106, 1216, 1226, 1219, 3070, 582, 1034, 4189, 35, 1077, 32, 5599, 160, 27, 30, 31, 1080,
- 1122, 26, 28, 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 106, 1216, 2284, 3055, 1701, 35, 328, 547, 573,
- 4687, 577, 3133, 387, 3213, 3071, 416, 42, 3295, 5734, 3141, 3140, 1712, 2681, 3143, 3146, 159, 576,
- 267, 35, 564, 3217, 6580, 5069, 3147, 3397, 35, 1077, 32, 5599, 3814, 27, 30, 31, 1080, 1122, 26, 28,
- 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 106, 1216, 1226, 1219, 1239, 1701, 35, 7515, 7511, 3870, 35,
- 310, 175, 1229, 1305, 264, 1278, 1511, 1739, 1414, 1546, 2159, 702, 1560, 174, 67, 412, 2150, 4798, 548,
- 573, 4687, 577, 3185, 35, 1077, 32, 5599, 2196, 27, 30, 31, 1080, 1122, 26, 28, 1071, 294, 25, 23, 50,
- 1177, 104, 75, 76, 106, 1216, 1226, 1219, 1239, 1701, 35, 2064, 309, 1453, 2746, 3366, 175, 1229, 1305,
- 4019, 1278, 1511, 3085, 1414, 1546, 2159, 644, 1560, 174, 4096, 412, 2436, 35, 1077, 32, 1701, 2065, 40,
- 30, 31, 1080, 1122, 1617, 413, 2165, 376, 1701, 3778, 3539, 35, 1077, 32, 5599, 79, 27, 30, 31, 1080,
- 1122, 26, 28, 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 106, 1216, 1226, 1219, 1239, 1701, 35, 315,
- 2991, 494, 1704, 3373, 175, 1229, 1305, 419, 1278, 1511, 389, 1414, 1546, 2159, 3814, 1560, 174, 591,
- 412, 1011, 413, 2165, 3470, 35, 1077, 32, 5599, 3676, 27, 30, 31, 1080, 1122, 26, 28, 1071, 294, 25, 23,
- 50, 1177, 104, 75, 76, 106, 1216, 1226, 1219, 1239, 2642, 35, 2064, 309, 3676, 477, 3444, 175, 1229,
- 1305, 613, 1278, 1511, 420, 1414, 1546, 2150, 2160, 1560, 174, 150, 611, 1344, 35, 1077, 32, 7306, 702,
- 27, 30, 31, 1080, 1122, 57, 28, 454, 614, 413, 2165, 3808, 35, 1077, 32, 5599, 3577, 27, 30, 31, 1080,
- 1122, 26, 28, 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 106, 1216, 1226, 1219, 1239, 1701, 3772, 2064,
- 73, 323, 3252, 3464, 175, 1229, 1305, 472, 1278, 1511, 410, 1414, 1546, 3323, 2273, 1560, 174, 3830,
- 189, 3808, 35, 1077, 32, 5599, 481, 27, 30, 31, 1080, 1122, 26, 28, 1071, 294, 25, 23, 50, 1177, 104,
- 75, 76, 106, 1216, 1226, 1219, 1239, 747, 3794, 4158, 230, 493, 3977, 388, 175, 1229, 1305, 2307, 1278,
- 1511, 591, 1414, 1546, 3971, 257, 1560, 174, 2360, 406, 3808, 35, 1077, 32, 5599, 357, 27, 30, 31, 1080,
- 1122, 26, 28, 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 106, 1216, 1226, 1219, 1239, 267, 35, 487, 72,
- 7445, 1701, 3451, 175, 1229, 1305, 609, 1278, 1511, 3062, 1414, 1546, 616, 2175, 1560, 174, 3456, 406,
- 2642, 35, 2064, 3775, 61, 1474, 35, 1077, 32, 7306, 1406, 27, 30, 31, 1080, 1122, 56, 28, 2423, 3694,
- 615, 415, 3808, 35, 1077, 32, 5599, 829, 27, 30, 31, 1080, 1122, 26, 28, 1071, 294, 25, 23, 50, 1177,
- 104, 75, 76, 106, 1216, 1226, 1219, 1239, 3875, 2246, 1357, 1701, 35, 2064, 311, 175, 1229, 1305, 405,
- 1278, 1511, 424, 1414, 1546, 366, 461, 1560, 174, 7369, 406, 3612, 35, 1077, 32, 5599, 4158, 27, 30, 31,
- 1080, 1122, 26, 28, 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 106, 1216, 1226, 1219, 1239, 3640, 3149,
- 44, 3295, 2150, 5585, 2187, 175, 1229, 1305, 404, 1278, 1511, 1866, 1414, 1546, 3149, 86, 1560, 174,
- 100, 611, 3259, 35, 1077, 32, 5599, 4158, 27, 30, 31, 1080, 1122, 26, 28, 1071, 294, 25, 23, 50, 1177,
- 104, 75, 76, 106, 1216, 1226, 1219, 1239, 1701, 35, 2064, 3782, 2150, 2150, 2837, 175, 1229, 1305, 3814,
- 1278, 1511, 1309, 1414, 1546, 361, 368, 1560, 174, 556, 173, 4158, 480, 3871, 3875, 60, 3808, 35, 1077,
- 32, 5599, 402, 27, 30, 31, 1080, 1122, 26, 28, 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 106, 1216,
- 1226, 1219, 1239, 1701, 35, 2064, 314, 6594, 1129, 425, 175, 1229, 1305, 461, 1278, 1511, 1866, 1414,
- 1546, 4096, 1941, 1560, 174, 3738, 190, 3808, 35, 1077, 32, 5599, 2261, 27, 30, 31, 1080, 1122, 26, 28,
- 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 106, 1216, 1226, 1219, 1239, 1701, 35, 2064, 563, 51, 359,
- 427, 175, 1229, 1305, 461, 1278, 1511, 3789, 1414, 1546, 2909, 368, 1560, 174, 1413, 186, 610, 3808, 35,
- 1077, 32, 5599, 3789, 27, 30, 31, 1080, 1122, 26, 28, 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 106,
- 1216, 1226, 1219, 1239, 426, 2246, 626, 70, 461, 55, 91, 175, 1229, 1305, 848, 1278, 1511, 356, 1414,
- 1546, 1331, 625, 1560, 174, 591, 185, 3808, 35, 1077, 32, 5599, 423, 27, 30, 31, 1080, 1122, 26, 28,
- 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 106, 1216, 1226, 1219, 1239, 3693, 2837, 1461, 940, 1035, 55,
- 3252, 175, 1229, 1305, 926, 1278, 1511, 1866, 1414, 1546, 3017, 1130, 1560, 174, 1973, 184, 3808, 35,
- 1077, 32, 5599, 4224, 27, 30, 31, 1080, 1122, 26, 28, 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 106,
- 1216, 1226, 1219, 1239, 1701, 35, 328, 3831, 229, 1222, 3464, 175, 1229, 1305, 481, 1278, 1511, 1866,
- 1414, 1546, 367, 368, 1560, 174, 4801, 183, 3808, 35, 1077, 32, 5599, 1737, 27, 30, 31, 1080, 1122, 26,
- 28, 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 106, 1216, 1226, 1219, 1239, 747, 2246, 1283, 877, 2368,
- 55, 3464, 175, 1229, 1305, 1016, 1278, 1511, 1862, 1414, 1546, 2983, 368, 1560, 174, 585, 182, 3808, 35,
- 1077, 32, 5599, 4801, 27, 30, 31, 1080, 1122, 26, 28, 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 106,
- 1216, 1226, 1219, 1239, 747, 2837, 366, 2176, 3252, 3252, 7423, 175, 1229, 1305, 24, 1278, 1511, 1866,
- 1414, 1546, 3171, 4801, 1560, 174, 584, 181, 3808, 35, 1077, 32, 5599, 3629, 27, 30, 31, 1080, 1122, 26,
- 28, 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 106, 1216, 1226, 1219, 1239, 68, 87, 233, 231, 100, 55,
- 4565, 175, 1229, 1305, 7110, 1278, 1511, 1866, 1414, 1546, 363, 368, 1560, 174, 4801, 180, 3808, 35,
- 1077, 32, 5599, 4801, 27, 30, 31, 1080, 1122, 26, 28, 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 106,
- 1216, 1226, 1219, 1239, 55, 3451, 1283, 53, 438, 1061, 3464, 175, 1229, 1305, 721, 1278, 1511, 3363,
- 1414, 1546, 3139, 368, 1560, 174, 1863, 179, 3808, 35, 1077, 32, 5599, 4801, 27, 30, 31, 1080, 1122, 26,
- 28, 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 106, 1216, 1226, 1219, 1239, 2356, 1319, 2543, 35, 487,
- 4899, 7445, 175, 1229, 1305, 52, 1278, 1511, 4850, 1414, 1546, 352, 3567, 1560, 174, 4801, 178, 3808,
- 35, 1077, 32, 5599, 4101, 27, 30, 31, 1080, 1122, 26, 28, 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 106,
- 1216, 1226, 1219, 1239, 601, 55, 1399, 383, 3252, 55, 6465, 175, 1229, 1305, 731, 1278, 1511, 358, 1414,
- 1546, 3464, 4801, 1560, 174, 4801, 177, 3808, 35, 1077, 32, 5599, 447, 27, 30, 31, 1080, 1122, 26, 28,
- 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 106, 1216, 1226, 1219, 1239, 88, 55, 253, 621, 2353, 3578,
- 725, 175, 1229, 1305, 2675, 1278, 1511, 1283, 1414, 1546, 3912, 4801, 1560, 174, 4801, 176, 3746, 35,
- 1077, 32, 5599, 2828, 27, 30, 31, 1080, 1122, 26, 28, 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 106,
- 1216, 1226, 1219, 1239, 3510, 55, 1405, 2679, 2833, 1586, 1179, 1281, 1229, 1305, 813, 1278, 1511, 366,
- 1414, 1546, 462, 7435, 3218, 195, 4189, 35, 1077, 32, 5599, 4801, 27, 30, 31, 1080, 1122, 26, 28, 1071,
- 294, 25, 23, 50, 1177, 104, 75, 76, 106, 1216, 1226, 1219, 1239, 484, 3871, 3875, 4039, 35, 313, 602,
- 3677, 1229, 1305, 2757, 1278, 1511, 3782, 1414, 1546, 366, 7465, 3218, 195, 7440, 1701, 35, 1771, 422,
- 1701, 35, 1771, 422, 360, 1717, 2773, 2556, 3808, 35, 1077, 32, 5599, 2919, 27, 30, 31, 1080, 1122, 26,
- 28, 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 106, 1216, 1226, 1219, 1239, 583, 49, 2067, 35, 430, 486,
- 3252, 175, 1229, 1305, 46, 1278, 1511, 628, 1414, 1546, 3464, 3377, 1560, 174, 2652, 637, 3808, 35,
- 1077, 32, 5599, 1766, 27, 30, 31, 1080, 1122, 26, 28, 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 106,
- 1216, 1226, 1219, 1239, 55, 4163, 35, 562, 5802, 1615, 4274, 175, 1229, 1305, 2905, 1278, 1511, 2738,
- 1414, 1546, 3066, 4801, 1560, 174, 7507, 138, 3941, 35, 1077, 32, 5599, 2527, 27, 30, 31, 1080, 1122,
- 26, 28, 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 106, 1216, 1226, 1219, 3070, 67, 642, 4189, 35, 1077,
- 32, 5599, 160, 27, 30, 31, 1080, 1122, 26, 28, 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 106, 2310, 345,
- 3055, 599, 595, 596, 597, 262, 3925, 3889, 3133, 1815, 3953, 3071, 1701, 35, 1771, 422, 3141, 3140, 464,
- 4015, 3143, 3146, 159, 171, 3375, 3941, 35, 1077, 32, 5599, 3020, 27, 30, 31, 1080, 1122, 26, 28, 1071,
- 294, 25, 23, 50, 1177, 104, 75, 76, 106, 1216, 1226, 1219, 3070, 465, 2668, 4189, 35, 1077, 32, 5599,
- 160, 27, 30, 31, 1080, 1122, 26, 28, 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 106, 2333, 3022, 3055,
- 599, 595, 596, 597, 55, 2060, 55, 3133, 55, 1496, 3071, 1641, 55, 803, 4010, 3141, 3140, 1718, 4801,
- 3143, 3146, 159, 170, 3941, 35, 1077, 32, 5599, 5005, 27, 30, 31, 1080, 1122, 26, 28, 1071, 294, 25, 23,
- 50, 1177, 104, 75, 76, 106, 1216, 1226, 1219, 3070, 66, 1956, 4189, 35, 1077, 32, 5599, 160, 27, 30, 31,
- 1080, 1122, 26, 28, 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 106, 2359, 5009, 3055, 599, 595, 596, 597,
- 55, 732, 55, 3133, 55, 4544, 3071, 1782, 55, 7064, 1721, 3141, 3140, 1614, 4801, 3143, 3146, 159, 169,
- 3941, 35, 1077, 32, 5599, 2368, 27, 30, 31, 1080, 1122, 26, 28, 1071, 294, 25, 23, 50, 1177, 104, 75,
- 76, 106, 1216, 1226, 1219, 3070, 65, 1117, 4189, 35, 1077, 32, 5599, 160, 27, 30, 31, 1080, 1122, 26,
- 28, 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 84, 929, 583, 3055, 599, 595, 596, 597, 55, 2842, 55,
- 3133, 55, 1690, 3071, 1734, 55, 1915, 2924, 3141, 3140, 2013, 4801, 3143, 3146, 159, 168, 3941, 35,
- 1077, 32, 5599, 4575, 27, 30, 31, 1080, 1122, 26, 28, 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 106,
- 1216, 1226, 1219, 3070, 64, 1839, 4189, 1881, 1077, 1916, 5599, 160, 27, 30, 31, 1080, 1122, 26, 28,
- 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 83, 436, 357, 3055, 599, 595, 596, 597, 55, 2354, 55, 3133,
- 55, 6732, 3071, 4903, 55, 1184, 2530, 3141, 3140, 6806, 4585, 3143, 3146, 159, 167, 3941, 35, 1077, 32,
- 5599, 3252, 27, 30, 31, 1080, 1122, 26, 28, 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 106, 1216, 1226,
- 1219, 3070, 3642, 1964, 4189, 35, 1077, 32, 5599, 160, 27, 30, 31, 1080, 1122, 26, 28, 1071, 294, 25,
- 23, 50, 1177, 104, 75, 76, 82, 254, 2721, 3055, 599, 595, 596, 597, 55, 2817, 55, 3133, 55, 1344, 3071,
- 981, 5104, 2062, 2961, 3141, 3140, 6335, 3392, 3143, 3146, 159, 166, 3941, 35, 1077, 32, 5599, 3252, 27,
- 30, 31, 1080, 1122, 26, 28, 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 106, 1216, 1226, 1219, 3070, 618,
- 2443, 4189, 35, 1077, 32, 5599, 160, 27, 30, 31, 1080, 1122, 26, 28, 1071, 294, 25, 23, 50, 1177, 104,
- 75, 76, 81, 622, 3505, 3055, 599, 595, 596, 597, 366, 366, 55, 3133, 7522, 7527, 3071, 6878, 55, 4050,
- 3067, 3141, 3140, 7439, 4801, 3143, 3146, 159, 165, 3941, 35, 1077, 32, 5599, 3252, 27, 30, 31, 1080,
- 1122, 26, 28, 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 106, 1216, 1226, 1219, 3070, 2831, 2534, 4189,
- 35, 1077, 32, 5599, 160, 27, 30, 31, 1080, 1122, 26, 28, 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 80,
- 336, 2829, 3055, 599, 595, 596, 597, 55, 1024, 739, 3133, 547, 1722, 3071, 2271, 1456, 3114, 74, 3141,
- 3140, 1965, 4801, 3143, 3146, 159, 164, 3941, 35, 1077, 32, 5599, 3252, 27, 30, 31, 1080, 1122, 26, 28,
- 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 106, 1216, 1226, 1219, 3070, 6061, 4574, 4189, 35, 1077, 32,
- 5599, 160, 27, 30, 31, 1080, 1122, 26, 28, 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 79, 333, 3306,
- 3055, 599, 595, 596, 597, 3115, 2918, 4948, 3133, 3085, 3359, 3071, 1701, 35, 1771, 422, 3141, 3140, 96,
- 4801, 3143, 3146, 159, 163, 3941, 35, 1077, 32, 5599, 3252, 27, 30, 31, 1080, 1122, 26, 28, 1071, 294,
- 25, 23, 50, 1177, 104, 75, 76, 106, 1216, 1226, 1219, 3070, 6128, 468, 4189, 35, 1077, 32, 5599, 160,
- 27, 30, 31, 1080, 1122, 26, 28, 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 78, 440, 3100, 3055, 3255,
- 3361, 3362, 2150, 2340, 3391, 3459, 3133, 2671, 3573, 3071, 1701, 35, 1771, 422, 3141, 3140, 2186, 4801,
- 3143, 3146, 159, 162, 3941, 35, 1077, 32, 5599, 1638, 27, 30, 31, 1080, 1122, 26, 28, 1071, 294, 25, 23,
- 50, 1177, 104, 75, 76, 106, 1216, 1226, 1219, 3070, 6195, 467, 4189, 35, 1077, 32, 5599, 160, 27, 30,
- 31, 1080, 1122, 26, 28, 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 77, 2261, 2995, 3055, 2067, 35, 430,
- 191, 150, 3782, 3508, 3133, 2451, 7465, 3071, 1701, 35, 1771, 422, 3141, 3140, 1290, 4801, 3143, 3146,
- 159, 161, 4003, 35, 1077, 32, 5599, 95, 27, 30, 31, 1080, 1122, 26, 28, 1071, 294, 25, 23, 50, 1177,
- 104, 75, 76, 106, 1216, 1226, 1219, 3070, 355, 466, 3877, 35, 1077, 32, 5599, 160, 27, 30, 31, 1080,
- 1122, 26, 28, 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 102, 2434, 3649, 3055, 3776, 2150, 4019, 3025,
- 747, 3568, 4077, 3133, 5801, 2261, 3071, 4112, 4403, 3464, 4139, 3141, 3140, 7154, 319, 3143, 3146, 159,
- 158, 3808, 35, 1077, 32, 5599, 5520, 27, 30, 31, 1080, 1122, 26, 28, 1071, 294, 25, 23, 50, 1177, 104,
- 75, 76, 106, 1216, 1226, 1219, 1239, 2527, 3926, 2067, 35, 430, 3063, 2913, 175, 1229, 1305, 3221, 1278,
- 1511, 4341, 1414, 1546, 3509, 4801, 1560, 174, 4801, 220, 3109, 35, 1077, 32, 5599, 671, 27, 30, 31,
- 1080, 1122, 26, 28, 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 106, 1216, 1226, 1219, 3070, 55, 3678,
- 385, 54, 376, 96, 187, 2159, 394, 320, 377, 1059, 814, 382, 414, 1214, 747, 2039, 463, 375, 3534, 3254,
- 2155, 35, 1077, 32, 6141, 3299, 27, 30, 31, 1080, 1122, 59, 28, 2261, 775, 3450, 2155, 35, 1077, 32,
- 6141, 3252, 27, 30, 31, 1080, 1122, 58, 28, 3887, 141, 4189, 35, 1077, 32, 5599, 1983, 27, 30, 31, 1080,
- 1122, 26, 28, 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 106, 1216, 1226, 1219, 1239, 668, 2165, 3929,
- 3252, 1603, 2261, 2261, 3777, 1229, 1305, 224, 1278, 1511, 1972, 1414, 1546, 4801, 4801, 3218, 195,
- 4189, 35, 1077, 32, 5599, 4801, 27, 30, 31, 1080, 1122, 26, 28, 1071, 294, 25, 23, 50, 1177, 104, 75,
- 76, 106, 1216, 1226, 1219, 1239, 3222, 600, 620, 332, 3778, 3910, 3182, 330, 1229, 1305, 619, 1278,
- 1511, 3674, 1414, 1546, 1399, 2282, 3218, 195, 4584, 4620, 4801, 4801, 4801, 4189, 35, 1077, 32, 5599,
- 640, 27, 30, 31, 1080, 1122, 26, 28, 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 106, 1216, 1226, 1219,
- 1239, 3007, 605, 3589, 411, 2987, 329, 337, 3908, 1229, 1305, 3174, 1278, 1511, 3604, 1414, 1546, 4801,
- 4801, 3218, 195, 4189, 35, 1077, 32, 5599, 3448, 27, 30, 31, 1080, 1122, 26, 28, 1071, 294, 25, 23, 50,
- 1177, 104, 75, 76, 106, 1216, 1226, 1219, 1239, 3593, 99, 6329, 3780, 3666, 3679, 2548, 3535, 1229,
- 1305, 4032, 1278, 1511, 2645, 1414, 1546, 4094, 3712, 3218, 195, 4801, 4801, 4801, 4801, 4801, 4189, 35,
- 1077, 32, 5599, 457, 27, 30, 31, 1080, 1122, 26, 28, 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 106,
- 1216, 1226, 1219, 1239, 631, 1969, 2018, 485, 632, 4156, 3464, 3464, 1229, 1305, 4220, 1278, 1511, 559,
- 1414, 1546, 5103, 1355, 3218, 195, 4499, 35, 1077, 32, 5599, 327, 27, 30, 31, 1080, 1122, 26, 28, 1071,
- 294, 25, 23, 50, 1177, 104, 75, 76, 106, 1216, 1226, 1219, 1239, 3970, 589, 747, 747, 4218, 3059, 3793,
- 4226, 1229, 1305, 1502, 1278, 1511, 2983, 1414, 1546, 4287, 2352, 3218, 195, 936, 3735, 409, 409, 3460,
- 4189, 35, 1077, 32, 5599, 456, 27, 30, 31, 1080, 1122, 26, 28, 1071, 294, 25, 23, 50, 1177, 104, 75, 76,
- 106, 1216, 1226, 1219, 1239, 3914, 4225, 4201, 4263, 4491, 3295, 4325, 8653, 1229, 1305, 8653, 1278,
- 1511, 8653, 1414, 2899, 8653, 8653, 8653, 8653, 4437, 35, 1077, 32, 5599, 459, 27, 30, 31, 1080, 1122,
- 26, 28, 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 106, 1216, 1226, 1219, 3070, 8653, 8653, 1994, 35,
- 1077, 32, 7411, 5935, 27, 30, 31, 1080, 1122, 372, 28, 8653, 3104, 8653, 8653, 8653, 8653, 6743, 8653,
- 8653, 8653, 8653, 8653, 3055, 55, 598, 595, 596, 597, 1418, 8653, 3133, 8653, 1351, 3071, 6475, 8653,
- 8653, 8653, 3141, 3140, 407, 2985, 3639, 384, 4650, 35, 1771, 422, 6364, 8653, 2955, 2067, 35, 3308,
- 7323, 1418, 187, 269, 294, 648, 595, 596, 597, 352, 2172, 354, 3149, 1716, 1728, 347, 1423, 648, 595,
- 596, 597, 1701, 35, 1771, 422, 365, 798, 271, 294, 187, 306, 4527, 8653, 8653, 8653, 8653, 4019, 49,
- 8653, 264, 669, 648, 595, 596, 597, 8653, 1732, 8653, 4105, 8653, 1206, 264, 8653, 8653, 8653, 385, 276,
- 262, 263, 8653, 8653, 306, 376, 377, 1059, 814, 382, 8653, 267, 262, 263, 8653, 2228, 8653, 8653, 264,
- 1416, 35, 1077, 32, 7411, 8653, 27, 30, 31, 1080, 1122, 372, 28, 8653, 8653, 8653, 272, 262, 263, 1158,
- 339, 343, 2371, 8653, 8653, 8653, 307, 598, 595, 596, 597, 8653, 274, 277, 280, 4683, 1015, 2561, 2436,
- 35, 1077, 32, 2261, 8653, 3163, 30, 31, 1080, 1122, 3735, 7008, 55, 8653, 8653, 8653, 8653, 1418, 373,
- 8653, 4043, 4007, 5008, 5581, 6434, 283, 8653, 352, 2172, 354, 3149, 8653, 8653, 350, 1423, 8653, 8653,
- 8653, 8653, 8653, 641, 8653, 8653, 366, 8653, 2274, 4189, 35, 1077, 32, 5599, 6070, 27, 30, 31, 1080,
- 1122, 26, 28, 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 106, 1216, 1226, 1219, 1239, 8653, 8653, 8653,
- 8653, 8653, 8653, 6137, 8653, 1229, 1305, 8653, 1278, 1511, 788, 2820, 4375, 35, 1077, 32, 5599, 8653,
- 27, 30, 31, 1080, 1122, 26, 28, 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 106, 1216, 1226, 1219, 3070,
- 8653, 8653, 1769, 35, 3837, 32, 7411, 5935, 27, 30, 31, 1080, 1122, 372, 28, 2436, 35, 1077, 32, 8653,
- 8653, 3241, 30, 31, 1080, 1122, 476, 3055, 490, 598, 595, 596, 597, 8653, 8653, 3133, 8653, 8653, 3071,
- 4877, 8653, 8653, 8653, 3141, 3630, 4189, 35, 1077, 32, 5599, 1307, 27, 30, 31, 1080, 1122, 26, 28,
- 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 108, 352, 2172, 354, 3149, 8653, 8653, 347, 1423, 8653, 598,
- 595, 596, 597, 8653, 8653, 8653, 365, 776, 8653, 2874, 8653, 8653, 8653, 8653, 8653, 8653, 8653, 8653,
- 55, 8653, 8653, 8653, 8653, 1418, 4189, 35, 1077, 32, 5599, 4105, 27, 30, 31, 1080, 1122, 26, 28, 1071,
- 294, 25, 23, 50, 1177, 104, 75, 76, 106, 1216, 1226, 1219, 1239, 3696, 8653, 8653, 8653, 8653, 5340,
- 453, 3834, 1229, 1305, 8653, 1278, 2750, 4375, 35, 1077, 32, 5599, 8653, 27, 30, 31, 1080, 1122, 26, 28,
- 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 106, 1216, 1226, 1219, 3070, 4189, 35, 1077, 32, 5599, 8653,
- 27, 30, 31, 1080, 1122, 26, 28, 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 106, 1216, 1226, 1219, 2434,
- 3055, 8653, 8653, 8653, 8653, 8653, 3460, 8653, 3133, 8653, 8653, 3071, 8653, 8653, 8653, 8653, 3561,
- 8653, 8653, 8653, 8653, 4189, 35, 1077, 32, 5599, 2851, 27, 30, 31, 1080, 1122, 26, 28, 1071, 294, 25,
- 23, 50, 1177, 104, 75, 76, 106, 1216, 1226, 1219, 1239, 8653, 8653, 8653, 8653, 8653, 8653, 8653, 8653,
- 1229, 1305, 8653, 2759, 4375, 35, 1077, 32, 5599, 8653, 27, 30, 31, 1080, 1122, 26, 28, 1071, 294, 25,
- 23, 50, 1177, 104, 75, 76, 106, 1216, 1226, 1219, 3070, 8653, 8653, 3836, 35, 1077, 32, 7380, 5935, 27,
- 30, 31, 1080, 1122, 372, 28, 8653, 8653, 8653, 8653, 8653, 8653, 8653, 8653, 8653, 8653, 8653, 8653,
- 3055, 8653, 598, 595, 596, 597, 8653, 8653, 3133, 8653, 8653, 3567, 6559, 8653, 4189, 35, 1077, 32,
- 5599, 8653, 27, 30, 31, 1080, 1122, 26, 28, 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 106, 1216, 1226,
- 1219, 1239, 352, 2172, 354, 8653, 8653, 8653, 347, 1423, 1229, 2672, 8653, 8653, 4375, 35, 1077, 32,
- 5599, 798, 27, 30, 31, 1080, 1122, 26, 28, 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 106, 1216, 1226,
- 1219, 3070, 4375, 35, 1077, 32, 5599, 8653, 27, 30, 31, 1080, 1122, 26, 28, 1071, 294, 25, 23, 50, 1177,
- 104, 75, 76, 106, 1216, 1226, 1219, 3070, 3055, 8653, 8653, 832, 8653, 8653, 8653, 2572, 3507, 8653,
- 8653, 2195, 8653, 8653, 8653, 8653, 5801, 8653, 8653, 8653, 8653, 339, 343, 2371, 8653, 8653, 8653,
- 3513, 8653, 8653, 598, 595, 596, 597, 598, 595, 596, 597, 8653, 8653, 2561, 8653, 8653, 2929, 2640,
- 4189, 35, 1077, 32, 5599, 3735, 27, 30, 31, 1080, 1122, 26, 28, 1071, 294, 25, 23, 50, 1177, 104, 75,
- 76, 106, 1216, 1226, 1219, 1239, 3673, 8653, 8653, 4189, 35, 1077, 32, 5599, 2695, 27, 30, 31, 1080,
- 1122, 26, 28, 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 106, 1216, 1226, 1219, 1239, 4756, 35, 551,
- 8653, 8653, 8653, 8653, 385, 2743, 8653, 8653, 8653, 8653, 269, 294, 377, 1059, 814, 382, 8653, 8653,
- 8653, 8653, 8653, 575, 8653, 8653, 648, 595, 596, 597, 4375, 35, 1077, 32, 5599, 8653, 27, 30, 31, 1080,
- 1122, 26, 28, 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 106, 1216, 1226, 1219, 3070, 8653, 8653, 8653,
- 264, 8653, 8653, 8653, 2913, 35, 1077, 32, 7380, 4261, 27, 30, 31, 1080, 1122, 372, 28, 267, 262, 263,
- 8653, 765, 8653, 8653, 3547, 1546, 35, 1077, 32, 7380, 5935, 27, 30, 31, 1080, 1122, 372, 28, 2943, 35,
- 3837, 32, 7380, 5935, 27, 30, 31, 1080, 1122, 372, 28, 437, 598, 595, 596, 597, 8653, 274, 277, 280,
- 4683, 1015, 6559, 4026, 3313, 3884, 595, 596, 597, 4019, 349, 3445, 354, 8653, 4583, 5045, 8653, 8653,
- 8653, 1418, 742, 35, 1771, 422, 5577, 6271, 6428, 6983, 6725, 8653, 8653, 352, 2172, 354, 8653, 5520,
- 8653, 347, 1423, 8653, 8653, 8653, 8653, 8653, 352, 2172, 354, 191, 798, 3313, 347, 1423, 8653, 8653,
- 4019, 8653, 2243, 35, 328, 8653, 306, 776, 1983, 35, 3837, 32, 7380, 5935, 27, 30, 31, 1080, 1122, 372,
- 28, 560, 561, 565, 8653, 8653, 5520, 8653, 1224, 598, 595, 596, 597, 1418, 8653, 598, 595, 596, 597,
- 2874, 2367, 35, 1077, 32, 7380, 5045, 27, 30, 31, 1080, 1122, 372, 28, 7208, 8653, 1481, 5616, 453,
- 3834, 8653, 539, 187, 8653, 8653, 340, 343, 2371, 599, 595, 596, 597, 2130, 2837, 2357, 352, 2172, 354,
- 8653, 3452, 8653, 347, 1423, 648, 595, 596, 597, 8653, 8653, 8653, 8653, 8653, 776, 2092, 35, 3837, 32,
- 7380, 5935, 27, 30, 31, 1080, 1122, 372, 28, 539, 352, 2172, 354, 71, 536, 538, 659, 1423, 8653, 8653,
- 264, 8653, 55, 3884, 595, 596, 597, 1418, 8653, 8653, 8653, 4309, 8653, 5045, 8653, 8653, 8653, 279,
- 262, 263, 8653, 8653, 8653, 8653, 5834, 453, 3834, 8653, 8653, 3895, 8653, 8653, 8653, 8653, 8653, 187,
- 8653, 8653, 2478, 537, 538, 8653, 352, 2172, 354, 8653, 2528, 8653, 347, 1423, 8653, 8653, 8653, 2828,
- 4189, 35, 1077, 32, 5599, 776, 27, 30, 31, 1080, 1122, 26, 28, 1071, 294, 25, 23, 50, 1177, 104, 75, 76,
- 106, 1216, 1226, 1219, 2482, 4189, 35, 1077, 32, 5599, 8653, 27, 30, 31, 1080, 1122, 26, 28, 1071, 294,
- 25, 23, 50, 1177, 104, 75, 76, 106, 1216, 1226, 1219, 2524, 5616, 453, 3834, 4189, 35, 1077, 32, 5599,
- 8653, 27, 30, 31, 1080, 1122, 26, 28, 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 106, 1216, 1226, 1219,
- 2594, 4189, 35, 1077, 32, 5599, 8653, 27, 30, 31, 1080, 1122, 26, 28, 1071, 294, 25, 23, 50, 1177, 104,
- 75, 76, 106, 1216, 1226, 1219, 2597, 4189, 35, 1077, 32, 5599, 8653, 27, 30, 31, 1080, 1122, 26, 28,
- 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 106, 1216, 1226, 1219, 2606, 286, 4583, 8653, 8653, 8653, 671,
- 1418, 8653, 1416, 35, 1077, 32, 7411, 8653, 27, 30, 31, 1080, 1122, 372, 28, 55, 8653, 8653, 8653, 8653,
- 1418, 8653, 8653, 8653, 8653, 260, 8653, 187, 191, 598, 595, 596, 597, 8653, 8653, 2059, 8653, 747, 738,
- 4993, 8653, 211, 8653, 8653, 235, 247, 7273, 8653, 187, 234, 244, 245, 246, 248, 647, 8653, 8653, 200,
- 8653, 2685, 8653, 1, 598, 595, 596, 597, 671, 8653, 352, 2172, 354, 3149, 3030, 2172, 348, 1423, 8653,
- 8653, 8653, 8653, 199, 8653, 8653, 8653, 366, 214, 198, 201, 202, 203, 204, 205, 260, 8653, 187, 8653,
- 8653, 8653, 8653, 8653, 598, 595, 596, 597, 747, 738, 2186, 8653, 211, 8653, 3108, 235, 247, 7273, 8653,
- 8653, 234, 244, 245, 246, 248, 647, 8653, 8653, 200, 4065, 35, 1077, 32, 5599, 8653, 27, 30, 31, 1080,
- 1122, 26, 28, 1071, 294, 25, 23, 50, 1177, 634, 75, 76, 199, 8653, 8653, 8653, 8653, 215, 198, 201, 202,
- 203, 204, 205, 8653, 212, 4189, 35, 1077, 32, 5599, 8653, 27, 30, 31, 1080, 1122, 26, 28, 1071, 294, 25,
- 23, 50, 1177, 104, 75, 76, 106, 1216, 1226, 1219, 3453, 8653, 8653, 8653, 8653, 8653, 8653, 8653, 8653,
- 8653, 8653, 8653, 4189, 35, 1077, 32, 5599, 5328, 27, 30, 31, 1080, 1122, 26, 28, 1071, 294, 25, 23, 50,
- 1177, 104, 75, 76, 106, 1216, 1226, 1219, 3458, 4189, 35, 1077, 32, 5599, 8653, 27, 30, 31, 1080, 1122,
- 26, 28, 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 106, 1216, 1226, 1219, 3461, 2180, 35, 1077, 32, 7380,
- 5868, 27, 30, 31, 1080, 1122, 372, 28, 4189, 35, 1077, 32, 5599, 8653, 27, 30, 31, 1080, 1122, 26, 28,
- 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 106, 1216, 1226, 1219, 3566, 8653, 8653, 8653, 8653, 3498, 35,
- 1077, 32, 7380, 7263, 27, 30, 31, 1080, 1122, 372, 28, 1854, 8653, 8653, 8653, 2051, 8653, 8653, 8653,
- 1705, 352, 2172, 354, 5940, 271, 294, 347, 1423, 8653, 8653, 384, 8653, 8653, 1583, 35, 1771, 422, 3690,
- 648, 595, 596, 597, 648, 595, 596, 597, 598, 595, 596, 597, 2630, 8653, 385, 8653, 8653, 8653, 2561,
- 8653, 8653, 8653, 377, 1059, 814, 382, 352, 2172, 354, 8653, 8653, 3689, 347, 1423, 264, 49, 8653, 8653,
- 264, 598, 595, 596, 597, 3387, 1732, 8653, 8653, 8653, 746, 3186, 3149, 272, 262, 263, 8653, 282, 262,
- 263, 385, 8653, 8653, 8653, 8653, 6002, 8653, 8653, 377, 1059, 814, 382, 4189, 35, 1077, 32, 5599, 2228,
- 27, 30, 31, 1080, 1122, 26, 28, 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 106, 1216, 1226, 2617, 4189,
- 35, 1077, 32, 5599, 8653, 27, 30, 31, 1080, 1122, 26, 28, 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 106,
- 1216, 1226, 2665, 381, 2191, 8653, 8653, 8653, 671, 4019, 8653, 1705, 55, 399, 8653, 5940, 8653, 671,
- 8653, 1522, 35, 1077, 32, 7380, 5935, 27, 30, 31, 1080, 1122, 372, 28, 4583, 92, 260, 376, 187, 1418,
- 598, 595, 596, 597, 8653, 376, 1830, 187, 747, 738, 2561, 8653, 211, 8653, 8653, 235, 247, 7273, 219,
- 8653, 234, 244, 245, 246, 248, 647, 8653, 191, 200, 8653, 1663, 8653, 476, 598, 595, 596, 597, 671,
- 6951, 8653, 1705, 4913, 3149, 2718, 5940, 8653, 1418, 352, 2172, 354, 8653, 199, 8653, 347, 1423, 365,
- 3386, 198, 201, 202, 203, 204, 205, 260, 3387, 187, 8653, 598, 595, 596, 597, 8653, 8653, 2726, 187,
- 747, 738, 2561, 6203, 211, 8653, 8653, 235, 247, 7273, 193, 8653, 234, 244, 245, 246, 248, 647, 8653,
- 8653, 200, 8653, 8653, 3153, 571, 598, 595, 596, 597, 671, 3514, 8653, 1705, 8653, 3149, 3108, 5940,
- 1701, 35, 1771, 422, 8653, 8653, 199, 8653, 8653, 8653, 365, 209, 198, 201, 202, 203, 204, 205, 260,
- 8653, 187, 8653, 598, 595, 596, 597, 8653, 8653, 8653, 8653, 747, 738, 2561, 7297, 211, 8653, 8653, 235,
- 247, 7273, 49, 8653, 234, 244, 245, 246, 248, 647, 8653, 1732, 200, 8653, 8653, 1265, 666, 8653, 8653,
- 8653, 8653, 671, 8653, 2262, 1705, 8653, 3149, 8653, 5940, 1701, 35, 1771, 422, 1630, 8653, 199, 8653,
- 8653, 8653, 365, 207, 198, 201, 202, 203, 204, 205, 260, 8653, 187, 8653, 598, 595, 596, 597, 8653,
- 8653, 8653, 8653, 747, 738, 2561, 733, 211, 8653, 8653, 235, 247, 7273, 49, 1461, 234, 244, 245, 246,
- 248, 647, 8653, 1732, 200, 8653, 8653, 4679, 761, 8653, 8653, 8653, 8653, 671, 8653, 8653, 3709, 8653,
- 3149, 8653, 5940, 1701, 35, 1771, 422, 3742, 8653, 199, 8653, 8653, 8653, 365, 639, 198, 201, 202, 203,
- 204, 205, 260, 8653, 187, 8653, 598, 595, 596, 597, 8653, 8653, 8653, 8653, 747, 738, 2561, 5269, 211,
- 8653, 8653, 235, 247, 7273, 49, 8653, 234, 244, 245, 246, 248, 647, 8653, 1732, 200, 8653, 8653, 1210,
- 856, 55, 55, 8653, 8653, 671, 1418, 1418, 8653, 2435, 3149, 8653, 8653, 1701, 35, 1771, 422, 8653, 8653,
- 199, 8653, 8653, 8653, 6002, 208, 198, 201, 202, 203, 204, 205, 260, 8653, 187, 187, 187, 648, 595, 596,
- 597, 8653, 8653, 8653, 747, 738, 2763, 2841, 211, 8653, 8653, 235, 247, 7273, 49, 8653, 234, 244, 245,
- 246, 248, 647, 8653, 1732, 200, 8653, 8653, 1082, 951, 8653, 55, 264, 8653, 671, 8653, 1418, 8653, 2531,
- 8653, 8653, 8653, 1701, 35, 1771, 422, 8653, 8653, 199, 285, 262, 263, 8653, 218, 198, 201, 202, 203,
- 204, 205, 260, 8653, 187, 8653, 187, 648, 595, 596, 597, 8653, 8653, 8653, 747, 738, 94, 3633, 211,
- 8653, 8653, 235, 247, 7273, 49, 8653, 234, 244, 245, 246, 248, 647, 8653, 1732, 200, 8653, 8653, 746,
- 1046, 4583, 8653, 264, 8653, 671, 1418, 8653, 3425, 55, 8653, 8653, 5940, 8653, 671, 8653, 8653, 8653,
- 8653, 199, 643, 262, 263, 8653, 3841, 198, 201, 202, 203, 204, 205, 260, 8653, 187, 191, 598, 595, 596,
- 597, 8653, 376, 55, 187, 747, 738, 2561, 1418, 211, 8653, 8653, 235, 247, 7273, 219, 8653, 234, 244,
- 245, 246, 248, 647, 8653, 8653, 200, 8653, 8653, 8653, 1141, 8653, 8653, 8653, 8653, 671, 6951, 187,
- 8653, 2627, 3149, 8653, 8653, 8653, 8653, 8653, 8653, 8653, 3294, 199, 8653, 8653, 8653, 366, 223, 198,
- 201, 202, 203, 204, 205, 260, 8653, 187, 8653, 8653, 648, 595, 596, 597, 8653, 8653, 8653, 747, 738,
- 3517, 8653, 211, 8653, 8653, 235, 247, 7273, 8653, 8653, 234, 244, 245, 246, 248, 647, 8653, 8653, 200,
- 8653, 8653, 3231, 1236, 8653, 8653, 264, 8653, 671, 2860, 35, 1077, 32, 7380, 5868, 27, 30, 31, 1080,
- 1122, 372, 28, 199, 276, 262, 263, 8653, 217, 198, 201, 202, 203, 204, 205, 260, 8653, 187, 8653, 1953,
- 35, 1771, 422, 2243, 3892, 328, 8653, 747, 738, 8653, 8653, 211, 8653, 8653, 235, 247, 7273, 2764, 8653,
- 234, 244, 245, 246, 248, 647, 8653, 8653, 200, 8653, 8653, 598, 595, 596, 597, 8653, 8653, 352, 2172,
- 354, 49, 2874, 8653, 347, 1423, 598, 595, 596, 597, 1732, 8653, 199, 8653, 3211, 586, 2561, 226, 198,
- 201, 202, 203, 204, 205, 55, 2723, 8653, 8653, 8653, 1418, 385, 4703, 35, 1771, 422, 6364, 8653, 8653,
- 377, 1059, 814, 382, 794, 8653, 270, 294, 8653, 587, 3673, 8653, 8653, 8653, 648, 595, 596, 597, 8653,
- 187, 648, 595, 596, 597, 4800, 1283, 4583, 4583, 8653, 4019, 3695, 1418, 1418, 306, 3137, 35, 1077, 32,
- 7380, 5935, 27, 30, 31, 1080, 1122, 372, 28, 8653, 264, 8653, 8653, 8653, 4309, 8653, 264, 5520, 8653,
- 8653, 8653, 191, 191, 599, 595, 596, 597, 279, 262, 263, 8653, 8653, 8653, 268, 262, 263, 4189, 35,
- 1077, 32, 5599, 2478, 27, 30, 31, 1080, 1122, 26, 28, 1071, 294, 25, 23, 50, 1177, 104, 75, 76, 107,
- 8653, 8653, 8653, 352, 2172, 354, 8653, 8653, 307, 347, 1423, 8653, 8653, 8653, 275, 278, 281, 4683,
- 1015, 8653, 5302, 2476, 35, 1077, 32, 7380, 5935, 27, 30, 31, 1080, 1122, 372, 28, 8653, 8653, 8653,
- 393, 8653, 8653, 3741, 3795, 1701, 35, 1771, 422, 284, 8653, 599, 595, 596, 597, 8653, 3075, 3319, 3367,
- 4189, 35, 1077, 32, 5599, 642, 27, 30, 31, 1080, 1122, 26, 28, 1071, 294, 25, 23, 50, 1177, 104, 75, 76,
- 103, 8653, 8653, 8653, 49, 8653, 8653, 8653, 8653, 352, 2172, 354, 8653, 1732, 8653, 347, 1423, 2512,
- 8653, 8653, 8653, 4065, 35, 1077, 32, 5599, 5302, 27, 30, 31, 1080, 1122, 26, 28, 1071, 294, 25, 23, 50,
- 1177, 633, 75, 76, 4127, 35, 1077, 32, 5599, 8653, 27, 30, 31, 1080, 1122, 26, 28, 1071, 294, 25, 23,
- 50, 1177, 85, 75, 76, 4251, 35, 1077, 32, 5599, 8653, 27, 30, 31, 1080, 1122, 26, 28, 1071, 294, 25, 23,
- 50, 1177, 644, 75, 76, 4313, 35, 1077, 32, 5599, 8653, 27, 30, 31, 1080, 1122, 26, 28, 1071, 294, 25,
- 23, 50, 1177, 3219, 75, 76, 4809, 35, 551, 3176, 35, 1771, 422, 1912, 8653, 8653, 8653, 8653, 4019, 270,
- 294, 8653, 8653, 8653, 5051, 8653, 8653, 8653, 5940, 4019, 8653, 8653, 8653, 648, 595, 596, 597, 8653,
- 8653, 8653, 8653, 8653, 8653, 8653, 260, 3356, 8653, 8653, 8653, 49, 671, 598, 595, 596, 597, 5520,
- 8653, 8653, 1732, 8653, 8653, 2561, 1930, 237, 247, 7273, 8653, 264, 236, 244, 245, 246, 248, 647, 8653,
- 8653, 376, 8653, 187, 8653, 8653, 8653, 8653, 8653, 268, 262, 263, 2200, 747, 2039, 794, 8653, 4019,
- 3149, 8653, 8653, 8653, 8653, 8653, 8653, 238, 240, 242, 3686, 8653, 8653, 365, 8653, 775, 3450, 8653,
- 8653, 8653, 249, 239, 241, 8653, 8653, 260, 8653, 8653, 8653, 8653, 8653, 275, 278, 281, 4683, 1015,
- 7297, 2137, 8653, 8653, 8653, 393, 8653, 3356, 237, 247, 7273, 8653, 671, 236, 244, 245, 246, 248, 647,
- 8653, 8653, 2326, 3319, 3367, 8653, 927, 3581, 8653, 7000, 8653, 2296, 8653, 8653, 8653, 55, 4019, 8653,
- 8653, 376, 671, 187, 8653, 8653, 8653, 8653, 238, 240, 242, 3686, 8653, 747, 2039, 598, 595, 596, 597,
- 8653, 8653, 249, 239, 241, 260, 2561, 8653, 8653, 376, 8653, 187, 8653, 8653, 775, 3450, 8653, 560, 561,
- 566, 8653, 8653, 219, 8653, 237, 247, 7273, 8653, 8653, 236, 244, 245, 246, 248, 647, 2008, 2323, 8653,
- 362, 8653, 4019, 927, 6951, 8653, 3631, 8653, 7000, 2145, 35, 1077, 32, 7380, 5935, 27, 30, 31, 1080,
- 1122, 372, 28, 8653, 238, 240, 242, 3686, 8653, 260, 8653, 598, 595, 596, 597, 8653, 8653, 249, 239,
- 241, 8653, 2561, 2819, 8653, 8653, 8653, 8653, 8653, 237, 247, 7273, 8653, 8653, 236, 244, 245, 246,
- 248, 647, 2104, 8653, 8653, 8653, 8653, 4019, 3309, 8653, 1022, 8653, 648, 595, 596, 597, 2511, 8653,
- 2488, 352, 2172, 354, 3632, 4019, 7000, 347, 1423, 8653, 238, 240, 242, 3686, 8653, 260, 8653, 8653,
- 3785, 598, 595, 596, 597, 578, 239, 241, 8653, 8653, 264, 2796, 8653, 260, 8653, 8653, 237, 247, 7273,
- 8653, 8653, 236, 244, 245, 246, 248, 647, 282, 262, 263, 4800, 8653, 237, 247, 7273, 4019, 8653, 236,
- 244, 245, 246, 248, 647, 2584, 4566, 8653, 8653, 8653, 4019, 671, 8653, 8653, 8653, 238, 240, 242, 3686,
- 8653, 8653, 2680, 8653, 5520, 8653, 8653, 4019, 8653, 250, 239, 241, 238, 240, 242, 3686, 8653, 260,
- 376, 1660, 187, 8653, 8653, 7532, 4019, 667, 239, 241, 8653, 8653, 8653, 219, 8653, 260, 8653, 8653,
- 237, 247, 7273, 8653, 8653, 236, 244, 245, 246, 248, 647, 2671, 8653, 8653, 260, 6951, 237, 247, 7273,
- 8653, 8653, 236, 244, 245, 246, 248, 647, 2776, 8653, 8653, 8653, 8653, 4019, 2116, 441, 4843, 8653,
- 238, 240, 242, 3686, 8653, 8653, 2872, 8653, 8653, 8653, 393, 4019, 8653, 666, 239, 241, 238, 240, 242,
- 3686, 8653, 260, 8653, 8653, 8653, 8653, 3697, 3319, 3367, 665, 239, 241, 8653, 442, 443, 444, 3686,
- 260, 221, 8653, 237, 247, 7273, 8653, 5060, 236, 244, 245, 246, 248, 647, 8653, 8653, 8653, 3862, 8653,
- 237, 247, 7273, 671, 8653, 236, 244, 245, 246, 248, 647, 8653, 8653, 3678, 8653, 648, 595, 596, 597,
- 8653, 8653, 238, 240, 242, 3686, 8653, 8653, 8653, 8653, 2749, 8653, 187, 8653, 8653, 338, 239, 241,
- 238, 240, 242, 3686, 8653, 738, 5051, 8653, 211, 8653, 5940, 4019, 264, 533, 239, 241, 1392, 35, 1077,
- 32, 7380, 3972, 27, 30, 31, 1080, 1122, 372, 28, 567, 262, 263, 2468, 598, 595, 596, 597, 5520, 8653,
- 8653, 3287, 445, 447, 2561, 5940, 8653, 8653, 227, 8653, 2052, 35, 1771, 422, 8653, 1786, 55, 8653,
- 8653, 7532, 4019, 4019, 8653, 8653, 8653, 8653, 8653, 1713, 598, 595, 596, 597, 1793, 8653, 8653, 7311,
- 3149, 8653, 2561, 2052, 35, 1771, 422, 349, 3445, 354, 260, 376, 8653, 365, 49, 8653, 8653, 8653, 598,
- 595, 596, 597, 8653, 1732, 8653, 8653, 8653, 2077, 2796, 2116, 441, 4843, 8653, 8653, 3149, 8653, 733,
- 1953, 35, 1771, 422, 393, 8653, 49, 3450, 8653, 8653, 366, 1953, 35, 1771, 422, 1732, 8653, 8653, 4919,
- 47, 2326, 3319, 3367, 8653, 8653, 8653, 385, 8653, 1917, 442, 443, 444, 3686, 8653, 379, 1059, 814, 382,
- 8653, 8653, 49, 8653, 1953, 35, 1771, 422, 8653, 2405, 8653, 1732, 8653, 49, 8653, 47, 2739, 35, 1771,
- 422, 5107, 8653, 1732, 7078, 228, 4019, 2235, 3678, 2052, 35, 1771, 422, 4563, 2834, 35, 1771, 422,
- 4019, 1953, 35, 1771, 422, 8653, 1327, 49, 8653, 2673, 8653, 8653, 2357, 8653, 376, 590, 1732, 4050,
- 8653, 49, 6382, 1953, 35, 1771, 422, 8653, 5520, 8653, 1732, 8653, 8653, 49, 47, 8653, 8653, 8653, 49,
- 8653, 8653, 8653, 1732, 49, 8653, 8653, 47, 1732, 8653, 3450, 4050, 47, 1732, 8653, 8653, 8653, 47, 445,
- 448, 8653, 8653, 8653, 1149, 49, 8653, 1953, 35, 1771, 422, 1022, 593, 8653, 1732, 2575, 4143, 8653, 47,
- 8653, 8653, 1963, 1953, 35, 1771, 422, 2427, 1953, 35, 1771, 422, 8653, 1701, 35, 1771, 422, 927, 8653,
- 598, 595, 596, 597, 598, 595, 596, 597, 2599, 49, 2796, 539, 8653, 8653, 2796, 55, 8653, 8653, 1732,
- 8653, 4019, 8653, 47, 8653, 49, 598, 595, 596, 597, 49, 8653, 8653, 8653, 1732, 49, 2561, 8653, 47,
- 1732, 8653, 55, 8653, 47, 1732, 55, 4019, 376, 2433, 8653, 4019, 3224, 55, 55, 55, 55, 8653, 4019, 4019,
- 4019, 4019, 8653, 536, 538, 8653, 8653, 3302, 8653, 2835, 8653, 8653, 3380, 376, 8653, 8653, 8653, 376,
- 8653, 8653, 8653, 3450, 8653, 8653, 376, 376, 376, 376, 8653, 8653, 8653, 8653, 8653, 8653, 8653, 8653,
- 8653, 8653, 3927, 8653, 8653, 8653, 1918, 8653, 8653, 2827, 3450, 8653, 8653, 2829, 3450, 8653, 8653,
- 8653, 8653, 8653, 8653, 3450, 3450, 3450, 3450, 3840, 8653, 8653, 8653, 8653, 8653, 1931, 8653, 8653,
- 8653, 1934, 8653, 8653, 8653, 8653, 8653, 8653, 2380, 543, 541, 594, 8653, 0, 39, 8668, 0, 39, 8667, 0,
- 1870, 29, 0, 474, 1919, 0, 488, 2017, 0, 38, 914, 0, 38, 8668, 0, 38, 8667, 0, 8716, 74, 0, 8715, 74, 0,
- 1401, 74, 0, 1570, 74, 0, 5262, 74, 0, 3998, 74, 0, 5207, 124, 0, 1, 478, 0, 492, 1228, 0, 491, 1395, 0,
- 8661, 1, 0, 4156, 89, 0, 1870, 421, 0, 35, 33, 0, 32, 34, 0, 39, 914, 0, 1, 714, 0, 1, 8958, 0, 1, 8957,
- 0, 1, 8956, 0, 1, 8955, 0, 1, 8954, 0, 1, 8953, 0, 1, 8952, 0, 1, 8951, 0, 1, 8950, 0, 1, 8949, 0, 1,
- 8948, 0, 1, 9316, 0, 1, 9315, 0, 39, 1, 8668, 0, 39, 1, 8667, 0, 8919, 255, 0, 8918, 255, 0, 1968, 255,
- 0, 1990, 255, 0, 2025, 255, 0, 9317, 255, 0, 9024, 255, 0, 9023, 255, 0, 8946, 255, 0, 8945, 255, 0,
- 8944, 255, 0, 8943, 255, 0, 8942, 255, 0, 8941, 255, 0, 8940, 255, 0, 8939, 255, 0, 8919, 256, 0, 8918,
- 256, 0, 1968, 256, 0, 1990, 256, 0, 2025, 256, 0, 9317, 256, 0, 9024, 256, 0, 9023, 256, 0, 8946, 256,
- 0, 8945, 256, 0, 8944, 256, 0, 8943, 256, 0, 8942, 256, 0, 8941, 256, 0, 8940, 256, 0, 8939, 256, 0,
- 8919, 257, 0, 8918, 257, 0, 1968, 257, 0, 1990, 257, 0, 2025, 257, 0, 9317, 257, 0, 9024, 257, 0, 9023,
- 257, 0, 8946, 257, 0, 8945, 257, 0, 8944, 257, 0, 8943, 257, 0, 8942, 257, 0, 8941, 257, 0, 8940, 257,
- 0, 8939, 257, 0, 2025, 428, 0, 1990, 428, 0, 1968, 428, 0, 316, 428, 0, 8919, 258, 0, 8918, 258, 0,
- 1968, 258, 0, 1990, 258, 0, 2025, 258, 0, 9317, 258, 0, 9024, 258, 0, 9023, 258, 0, 8946, 258, 0, 8945,
- 258, 0, 8944, 258, 0, 8943, 258, 0, 8942, 258, 0, 8941, 258, 0, 8940, 258, 0, 8939, 258, 0, 316, 321, 0,
- 8919, 259, 0, 8918, 259, 0, 1968, 259, 0, 1990, 259, 0, 2025, 259, 0, 9317, 259, 0, 9024, 259, 0, 9023,
- 259, 0, 8946, 259, 0, 8945, 259, 0, 8944, 259, 0, 8943, 259, 0, 8942, 259, 0, 8941, 259, 0, 8940, 259,
- 0, 8939, 259, 0, 8668, 48, 0, 8667, 48, 0, 8919, 646, 0, 8918, 646, 0, 1968, 646, 0, 1990, 646, 0, 2025,
- 646, 0, 9317, 646, 0, 9024, 646, 0, 9023, 646, 0, 8946, 646, 0, 8945, 646, 0, 8944, 646, 0, 8943, 646,
- 0, 8942, 646, 0, 8941, 646, 0, 8940, 646, 0, 8939, 646, 0, 8919, 273, 0, 8918, 273, 0, 1968, 273, 0,
- 1990, 273, 0, 2025, 273, 0, 9317, 273, 0, 9024, 273, 0, 9023, 273, 0, 8946, 273, 0, 8945, 273, 0, 8944,
- 273, 0, 8943, 273, 0, 8942, 273, 0, 8941, 273, 0, 8940, 273, 0, 8939, 273, 0, 8958, 273, 0, 8957, 273,
- 0, 8956, 273, 0, 8955, 273, 0, 8954, 273, 0, 8953, 273, 0, 8952, 273, 0, 8951, 273, 0, 8950, 273, 0,
- 8949, 273, 0, 8948, 273, 0 };
- }
-
- public interface BaseAction1 {
- public final static char baseAction1[] = { 9316, 273, 0, 9315, 273, 0, 39, 8668, 273, 0, 39, 8667, 273, 0, 8691,
- 273, 0, 8665, 417, 0, 8664, 417, 0, 8659, 1, 0, 8658, 1, 0, 4913, 269, 0, 32, 422, 0, 29, 421, 0, 1,
- 261, 3222, 0, 8662, 261, 0, 3230, 261, 0, 1, 261, 755, 0, 1, 261, 0, 43, 8689, 0, 43, 37, 0, 5207, 126,
- 0, 5207, 125, 0, 1, 5392, 0, 1, 6637, 0, 1, 6659, 0, 1, 2797, 0, 1, 2953, 0, 1, 3031, 0, 1, 3109, 0, 1,
- 3187, 0, 1, 3265, 0, 1, 3343, 0, 1066, 1, 0, 1, 4060, 0, 1, 2875, 0, 1, 8675, 0, 1, 8674, 0, 1, 8673, 0,
- 1, 8672, 0, 1, 8671, 0, 1, 8670, 0, 1, 8669, 0, 1, 832, 0, 1, 843, 0, 1, 921, 0, 1, 992, 0, 1, 1009, 0,
- 1, 3519, 0, 39, 1, 0, 2025, 479, 0, 1990, 479, 0, 1968, 479, 0, 8691, 479, 0, 364, 479, 0, 39, 479, 0,
- 2025, 658, 0, 1990, 658, 0, 1968, 658, 0, 2025, 656, 0, 1990, 656, 0, 1968, 656, 0, 660, 656, 0, 660,
- 655, 0, 1, 2025, 0, 1, 1990, 0, 1, 1968, 0, 8691, 1, 0, 47, 37, 0, 634, 644, 0, 3372, 261, 0, 10, 12, 0,
- 1, 5742, 0, 1, 914, 0, 1, 90, 0, 1968, 568, 0, 1990, 568, 0, 2025, 568, 0, 1968, 569, 0, 1990, 569, 0,
- 2025, 569, 0, 1968, 570, 0, 1990, 570, 0, 2025, 570, 0, 1968, 571, 0, 1990, 571, 0, 2025, 571, 0, 1968,
- 572, 0, 1990, 572, 0, 2025, 572, 0, 8668, 273, 0, 8667, 273, 0, 2025, 364, 0, 1990, 364, 0, 1968, 364,
- 0, 535, 3679, 0, 8691, 1, 261, 0, 39, 1, 261, 0, 261, 450, 0, 8668, 37, 0, 8667, 37, 0, 8668, 2, 37, 0,
- 8667, 2, 37, 0, 8668, 36, 0, 8667, 36, 0, 8, 10, 12, 0, 3732, 225, 0, 1, 364, 0, 6236, 98, 0, 8689, 45,
- 0, 37, 45, 0, 8663, 439, 0, 8662, 439, 0, 261, 449, 0, 8665, 645, 417, 0, 8664, 645, 417, 0, 2753, 351,
- 0, 1, 658, 0, 6467, 101, 0, 3646, 97, 0, 2025, 93, 0, 1990, 93, 0, 1968, 93, 0, 8691, 93, 0, 364, 93, 0,
- 39, 93, 0, 35, 72, 0, 9317, 369, 0, 9024, 369, 0, 9023, 369, 0, 5755, 311, 0, 535, 6939, 0, 3888, 417,
- 0, 216, 6262, 0, 261, 252, 0, 1, 2464, 0, 1, 3369, 0, 2025, 653, 0, 1990, 653, 0, 1968, 653, 0, 2025,
- 652, 0, 1990, 652, 0, 1968, 652, 0, 598, 599, 0, 8, 12, 0, 261, 251, 0, 8665, 1, 0, 2025, 653, 654, 0,
- 1990, 653, 654, 0, 1968, 653, 654, 0, 653, 654, 0 };
- }
-
- public final static char baseAction[] = new char[BaseAction0.baseAction0.length + BaseAction1.baseAction1.length];
- {
- int index = 0;
- System.arraycopy(BaseAction0.baseAction0, 0, baseAction, index, BaseAction0.baseAction0.length);
- index += BaseAction0.baseAction0.length;
- System.arraycopy(BaseAction1.baseAction1, 0, baseAction, index, BaseAction1.baseAction1.length);
- }
-
- @Override
- public final int baseAction(int index) {
- return baseAction[index];
- }
-
- public final static char lhs[] = baseAction;
-
- @Override
- public final int lhs(int index) {
- return lhs[index];
- }
-
- public interface TermCheck {
- public final static char termCheck[] = { 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 0, 67, 68, 69, 70, 0,
- 72, 0, 74, 75, 10, 0, 0, 79, 3, 81, 82, 10, 11, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 0, 1, 2, 3, 4,
- 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 55, 56, 57,
- 58, 59, 60, 61, 62, 63, 64, 65, 0, 67, 68, 69, 70, 0, 72, 0, 74, 75, 0, 106, 107, 79, 104, 81, 82, 100,
- 101, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
- 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 73, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 0, 67, 68,
- 69, 70, 0, 72, 0, 74, 75, 0, 1, 2, 79, 4, 81, 82, 0, 13, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 0, 1,
- 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
- 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 55,
- 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 0, 67, 68, 69, 70, 0, 72, 102, 74, 75, 10, 99, 0, 79, 0, 3, 82,
- 105, 4, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
- 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 71, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 0, 67,
- 68, 69, 70, 0, 72, 0, 74, 75, 10, 106, 107, 79, 104, 0, 82, 0, 3, 85, 86, 87, 88, 89, 90, 91, 92, 93,
- 94, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
- 53, 66, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 80, 67, 68, 69, 70, 0, 72, 0, 74, 75, 3, 106, 107,
- 79, 0, 103, 82, 0, 4, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
- 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
- 65, 78, 67, 68, 69, 70, 0, 72, 0, 74, 75, 5, 6, 7, 79, 104, 0, 82, 0, 11, 85, 86, 87, 88, 89, 90, 91,
- 92, 93, 94, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
- 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
- 51, 52, 53, 66, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 0, 67, 68, 69, 70, 0, 72, 0, 74, 75, 0, 1,
- 2, 79, 0, 0, 82, 0, 8, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
- 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
- 65, 80, 67, 68, 69, 70, 0, 72, 102, 74, 75, 5, 6, 7, 79, 102, 0, 82, 0, 3, 85, 86, 87, 88, 89, 90, 91,
- 92, 93, 94, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
- 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
- 51, 52, 53, 66, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 0, 67, 68, 69, 70, 0, 72, 0, 74, 75, 5, 6,
- 7, 79, 0, 1, 82, 0, 0, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
- 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
- 65, 77, 67, 68, 69, 70, 0, 72, 0, 74, 75, 5, 6, 7, 79, 0, 103, 82, 0, 0, 85, 86, 87, 88, 89, 90, 91, 92,
- 93, 94, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
- 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
- 52, 53, 66, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 77, 67, 68, 69, 70, 0, 72, 0, 74, 75, 5, 6, 7,
- 79, 0, 103, 82, 0, 0, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
- 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
- 65, 77, 67, 68, 69, 70, 0, 72, 0, 74, 75, 5, 6, 7, 79, 0, 0, 82, 0, 3, 85, 86, 87, 88, 89, 90, 91, 92,
- 93, 94, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
- 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
- 52, 53, 0, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 78, 67, 68, 69, 70, 0, 72, 0, 74, 75, 5, 6, 7,
- 79, 102, 8, 82, 0, 1, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
- 0, 1, 2, 28, 4, 0, 129, 0, 8, 9, 0, 0, 5, 6, 7, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 82,
- 42, 43, 44, 45, 0, 47, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 0, 1, 2, 3, 4, 66, 54, 0, 8,
- 9, 71, 72, 73, 0, 0, 76, 77, 78, 79, 80, 81, 0, 83, 84, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 13, 96, 97, 98,
- 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
- 120, 121, 0, 1, 2, 0, 126, 127, 128, 129, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0, 1, 2, 71, 4, 80,
- 67, 0, 8, 9, 79, 130, 5, 6, 7, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 0, 42, 43, 44, 45,
- 54, 47, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 0, 1, 2, 3, 4, 66, 54, 73, 8, 9, 71, 72, 73,
- 0, 0, 76, 77, 78, 79, 80, 81, 41, 83, 84, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 54, 96, 97, 98, 99, 100, 101,
- 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 0,
- 1, 2, 0, 126, 127, 128, 129, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 13, 14, 15, 16, 17, 18, 19, 20,
- 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
- 0, 48, 49, 50, 51, 52, 53, 0, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 74, 75, 68, 0, 1, 2, 3, 4, 5,
- 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
- 33, 34, 35, 36, 37, 38, 39, 40, 0, 1, 2, 0, 0, 103, 47, 122, 4, 5, 6, 7, 0, 54, 10, 11, 4, 5, 6, 7, 0,
- 62, 63, 64, 65, 0, 67, 0, 69, 70, 0, 11, 5, 6, 7, 98, 0, 78, 0, 3, 81, 14, 15, 16, 17, 18, 19, 20, 21,
- 22, 23, 24, 25, 26, 95, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 0, 1, 2, 3, 4, 5, 6, 7, 8,
- 9, 10, 11, 42, 43, 123, 124, 125, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
- 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 123, 124, 125, 0, 1,
- 2, 47, 4, 5, 6, 7, 0, 0, 54, 0, 1, 2, 5, 6, 7, 78, 62, 63, 64, 65, 0, 67, 0, 69, 70, 0, 0, 5, 6, 7, 0,
- 0, 78, 3, 3, 81, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 95, 28, 29, 30, 31, 32, 33, 34, 35,
- 36, 37, 38, 39, 40, 54, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 123, 124, 125, 0, 1, 2, 3, 4, 5, 6, 7,
- 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
- 34, 35, 36, 37, 38, 39, 40, 0, 1, 2, 0, 1, 2, 47, 4, 5, 6, 7, 0, 0, 54, 71, 0, 5, 6, 7, 0, 0, 62, 63,
- 64, 65, 0, 67, 12, 69, 70, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 81, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 41,
- 95, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 81, 77, 0, 0, 1, 2, 47, 5, 6, 7, 0, 0, 78, 54,
- 0, 5, 6, 7, 0, 1, 2, 62, 63, 64, 65, 66, 67, 104, 69, 70, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
- 39, 40, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 95, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 0, 1, 2,
- 3, 4, 0, 47, 0, 8, 9, 0, 1, 2, 54, 4, 100, 101, 12, 8, 9, 0, 62, 63, 64, 65, 78, 67, 0, 69, 70, 0, 0, 5,
- 6, 7, 0, 1, 2, 3, 4, 81, 0, 0, 8, 9, 4, 0, 12, 0, 3, 0, 0, 4, 3, 95, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
- 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
- 37, 38, 39, 40, 0, 66, 0, 1, 2, 0, 47, 5, 6, 7, 71, 66, 73, 54, 80, 76, 77, 71, 66, 80, 0, 62, 63, 64,
- 65, 71, 67, 73, 69, 70, 0, 77, 12, 28, 29, 30, 127, 98, 83, 84, 81, 0, 108, 109, 110, 111, 112, 113,
- 114, 115, 116, 117, 118, 119, 95, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
- 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 0, 1, 2, 0, 4, 81,
- 47, 4, 8, 9, 0, 1, 2, 54, 80, 0, 0, 0, 8, 9, 3, 62, 63, 64, 65, 80, 67, 12, 69, 70, 0, 1, 2, 3, 4, 5, 6,
- 7, 8, 9, 81, 0, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 95, 0, 1, 2, 3, 4, 5, 6, 7,
- 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
- 34, 35, 36, 37, 38, 39, 40, 81, 0, 0, 0, 1, 2, 47, 5, 6, 7, 0, 8, 9, 54, 0, 5, 6, 7, 0, 99, 0, 62, 63,
- 64, 65, 105, 67, 0, 69, 70, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 0, 1, 2, 3, 4, 5, 6, 7,
- 8, 9, 0, 95, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
- 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 78, 0, 0, 98, 3, 0, 47, 5, 6, 7, 5, 6,
- 7, 54, 0, 1, 2, 0, 4, 0, 98, 62, 63, 64, 65, 0, 67, 0, 69, 70, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
- 38, 39, 40, 0, 1, 2, 0, 4, 5, 6, 7, 5, 6, 7, 95, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 71,
- 54, 0, 80, 0, 0, 47, 5, 6, 7, 5, 6, 7, 54, 83, 84, 66, 0, 1, 2, 0, 62, 63, 64, 65, 0, 67, 0, 69, 70, 28,
- 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 0, 1, 2, 0, 4, 5, 6, 7, 0, 1, 2, 95, 0, 1, 2, 3, 4, 5,
- 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
- 33, 34, 35, 36, 37, 38, 39, 40, 0, 54, 0, 3, 80, 0, 47, 5, 6, 7, 5, 6, 7, 54, 83, 84, 66, 0, 0, 1, 2,
- 62, 63, 64, 65, 0, 67, 77, 69, 70, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 0, 1, 2, 96, 97,
- 5, 6, 7, 122, 0, 10, 95, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
- 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 0, 54, 0, 3, 83, 84, 47, 5,
- 6, 7, 54, 0, 0, 54, 0, 0, 0, 0, 1, 2, 0, 62, 63, 64, 65, 0, 67, 98, 69, 70, 28, 29, 30, 31, 32, 33, 34,
- 35, 36, 37, 38, 39, 40, 0, 1, 2, 3, 4, 28, 29, 30, 8, 9, 0, 95, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
- 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
- 38, 39, 40, 0, 1, 2, 3, 4, 0, 47, 78, 8, 9, 0, 0, 12, 54, 99, 0, 100, 101, 71, 99, 105, 62, 63, 64, 65,
- 105, 67, 0, 69, 70, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 1, 2, 3, 4, 47, 0, 0, 8, 9, 10, 11, 95, 13,
- 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 41, 42,
- 43, 44, 45, 46, 78, 48, 49, 50, 51, 52, 53, 0, 55, 56, 57, 58, 59, 60, 61, 0, 1, 2, 0, 78, 0, 68, 69, 0,
- 108, 109, 3, 74, 75, 0, 1, 2, 3, 4, 0, 12, 77, 8, 9, 10, 11, 0, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
- 23, 24, 25, 26, 27, 0, 1, 78, 42, 43, 42, 43, 0, 0, 73, 10, 4, 54, 41, 42, 43, 44, 45, 46, 11, 48, 49,
- 50, 51, 52, 53, 0, 55, 56, 57, 58, 59, 60, 61, 0, 1, 2, 71, 31, 73, 68, 0, 76, 77, 3, 0, 74, 75, 3, 77,
- 0, 1, 2, 3, 4, 0, 0, 12, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 41, 42, 43, 44, 45, 46, 0, 48, 49, 50, 51, 52, 53, 78, 55, 56,
- 57, 58, 59, 60, 61, 0, 1, 2, 0, 71, 0, 1, 2, 8, 76, 72, 0, 74, 75, 0, 1, 2, 3, 4, 41, 77, 77, 8, 9, 10,
- 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 0, 1, 2, 0, 4, 5, 6, 7, 0, 0, 10,
- 11, 54, 41, 42, 43, 44, 45, 46, 10, 48, 49, 50, 51, 52, 53, 0, 55, 56, 57, 58, 59, 60, 61, 73, 66, 0,
- 74, 75, 0, 68, 0, 0, 0, 72, 3, 0, 1, 2, 3, 4, 12, 11, 81, 8, 9, 10, 11, 0, 13, 14, 15, 16, 17, 18, 19,
- 20, 21, 22, 23, 24, 25, 26, 27, 0, 1, 2, 3, 4, 5, 6, 7, 0, 80, 10, 11, 47, 41, 42, 43, 44, 45, 46, 0,
- 48, 49, 50, 51, 52, 53, 0, 55, 56, 57, 58, 59, 60, 61, 100, 101, 0, 1, 2, 13, 68, 0, 1, 2, 3, 4, 74, 75,
- 12, 8, 9, 10, 11, 0, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 0, 62, 71, 0, 54, 0, 0,
- 0, 3, 3, 3, 54, 12, 41, 42, 43, 44, 45, 46, 62, 48, 49, 50, 51, 52, 53, 0, 55, 56, 57, 58, 59, 60, 61,
- 0, 0, 0, 1, 3, 72, 68, 0, 1, 2, 3, 4, 74, 75, 12, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
- 22, 23, 24, 25, 26, 27, 0, 1, 2, 72, 4, 5, 6, 7, 41, 71, 10, 11, 78, 41, 42, 43, 44, 45, 46, 0, 48, 49,
- 50, 51, 52, 53, 0, 55, 56, 57, 58, 59, 60, 61, 0, 0, 71, 3, 12, 0, 68, 0, 0, 76, 72, 0, 1, 2, 3, 4, 0,
- 12, 0, 8, 9, 10, 11, 0, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 0, 1, 2, 3, 4, 0,
- 29, 0, 8, 9, 0, 0, 12, 41, 42, 43, 44, 45, 46, 73, 48, 49, 50, 51, 52, 53, 73, 55, 56, 57, 58, 59, 60,
- 61, 81, 73, 0, 0, 72, 77, 68, 0, 1, 2, 3, 4, 74, 75, 12, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
- 20, 21, 22, 23, 24, 25, 26, 27, 0, 0, 71, 3, 66, 4, 0, 76, 66, 3, 0, 0, 12, 41, 42, 43, 44, 45, 46, 78,
- 48, 49, 50, 51, 52, 53, 0, 55, 56, 57, 58, 59, 60, 61, 96, 97, 0, 0, 96, 97, 68, 73, 0, 76, 72, 0, 1, 2,
- 3, 4, 83, 84, 41, 8, 9, 10, 11, 0, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 0, 1, 2,
- 76, 4, 5, 6, 7, 71, 0, 10, 11, 3, 41, 42, 43, 44, 45, 46, 66, 48, 49, 50, 51, 52, 53, 0, 55, 56, 57, 58,
- 59, 60, 61, 0, 71, 0, 1, 0, 0, 68, 0, 1, 2, 3, 4, 74, 75, 12, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 0, 1, 2, 0, 4, 5, 6, 7, 0, 0, 10, 11, 4, 41, 42, 43, 44, 45, 46, 54,
- 48, 49, 50, 51, 52, 53, 0, 55, 56, 57, 58, 59, 60, 61, 77, 66, 66, 0, 1, 2, 3, 4, 0, 76, 72, 8, 9, 10,
- 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 96, 97, 0, 0, 0, 3, 0, 3, 0, 66, 4,
- 73, 4, 41, 42, 43, 44, 45, 46, 0, 48, 49, 50, 51, 52, 53, 0, 55, 56, 57, 58, 59, 60, 61, 0, 1, 2, 3, 4,
- 31, 0, 80, 8, 9, 10, 11, 0, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 0, 1, 2, 3, 4,
- 5, 6, 7, 8, 9, 0, 54, 12, 41, 42, 43, 44, 45, 46, 78, 48, 49, 50, 51, 52, 53, 0, 55, 56, 57, 58, 59, 60,
- 61, 0, 1, 2, 127, 12, 0, 68, 0, 1, 2, 3, 4, 68, 47, 0, 8, 9, 10, 11, 0, 13, 14, 15, 16, 17, 18, 19, 20,
- 21, 22, 23, 24, 25, 26, 27, 123, 124, 125, 0, 47, 0, 3, 0, 0, 0, 0, 1, 2, 41, 42, 43, 44, 45, 46, 54,
- 48, 49, 50, 51, 52, 53, 0, 55, 56, 57, 58, 59, 60, 61, 0, 0, 0, 1, 2, 3, 4, 71, 0, 71, 8, 9, 10, 11, 0,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 54, 0, 0, 83, 84, 3, 0, 0, 0, 1, 2, 66, 0,
- 41, 42, 43, 44, 45, 46, 78, 48, 49, 50, 51, 52, 53, 0, 55, 56, 57, 58, 59, 60, 61, 0, 1, 2, 3, 4, 0, 68,
- 0, 8, 9, 10, 11, 0, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 54, 0, 0, 122, 3, 83,
- 84, 0, 0, 1, 2, 66, 73, 41, 42, 43, 44, 45, 46, 0, 48, 49, 50, 51, 52, 53, 0, 55, 56, 57, 58, 59, 60,
- 61, 0, 1, 2, 3, 4, 0, 68, 0, 8, 9, 10, 11, 0, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 54, 0, 0, 0, 3, 83, 84, 0, 0, 1, 2, 0, 0, 41, 42, 43, 44, 45, 46, 0, 48, 49, 50, 51, 52, 53, 0, 55,
- 56, 57, 58, 59, 60, 61, 0, 1, 2, 3, 4, 122, 83, 84, 8, 9, 10, 11, 0, 13, 14, 15, 16, 17, 18, 19, 20, 21,
- 22, 23, 24, 25, 26, 27, 54, 0, 0, 0, 3, 83, 84, 0, 0, 1, 2, 0, 0, 41, 42, 43, 44, 45, 46, 78, 48, 49,
- 50, 51, 52, 53, 0, 55, 56, 57, 58, 59, 60, 61, 0, 1, 2, 3, 4, 0, 83, 84, 8, 9, 10, 11, 0, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 54, 0, 0, 0, 3, 83, 84, 0, 0, 0, 3, 3, 0, 41, 42, 43,
- 44, 45, 46, 78, 48, 49, 50, 51, 52, 53, 0, 55, 56, 57, 58, 59, 60, 61, 0, 1, 2, 3, 4, 0, 0, 0, 8, 9, 10,
- 11, 0, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 0, 54, 80, 0, 54, 0, 0, 0, 0, 0, 0,
- 0, 12, 41, 42, 43, 44, 45, 46, 78, 48, 49, 50, 51, 52, 53, 0, 55, 56, 57, 58, 59, 60, 61, 0, 1, 2, 3, 4,
- 0, 0, 0, 8, 9, 10, 11, 0, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 0, 54, 80, 0, 0,
- 0, 0, 0, 0, 0, 72, 0, 12, 41, 42, 43, 44, 45, 46, 73, 48, 49, 50, 51, 52, 53, 0, 55, 56, 57, 58, 59, 60,
- 61, 0, 1, 2, 3, 4, 0, 0, 0, 8, 9, 10, 11, 0, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
- 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 72, 0, 12, 41, 42, 43, 44, 45, 46, 0, 48, 49, 50, 51, 52, 53, 0, 55, 56,
- 57, 58, 59, 60, 61, 0, 1, 2, 3, 4, 0, 0, 0, 8, 9, 10, 11, 0, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
- 24, 25, 26, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 41, 42, 43, 44, 45, 46, 0, 48, 49, 50, 51, 52,
- 53, 0, 55, 56, 57, 58, 59, 60, 61, 0, 1, 2, 3, 4, 0, 0, 0, 8, 9, 10, 11, 0, 13, 14, 15, 16, 17, 18, 19,
- 20, 21, 22, 23, 24, 25, 26, 27, 0, 0, 0, 3, 0, 0, 0, 0, 8, 0, 10, 11, 0, 41, 42, 43, 44, 45, 46, 0, 48,
- 49, 50, 51, 52, 53, 0, 55, 56, 57, 58, 59, 60, 61, 0, 0, 0, 73, 0, 0, 0, 77, 42, 43, 44, 45, 46, 0, 0,
- 13, 12, 12, 5, 6, 7, 0, 0, 0, 0, 12, 12, 0, 0, 0, 0, 0, 66, 0, 12, 12, 12, 71, 0, 73, 74, 75, 41, 77, 0,
- 0, 80, 0, 0, 83, 84, 47, 47, 0, 0, 54, 54, 0, 0, 0, 47, 47, 96, 97, 62, 99, 100, 101, 102, 103, 104, 12,
- 106, 107, 108, 0, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 73, 73, 0, 0, 1, 2, 126, 4, 5, 6, 7,
- 73, 76, 76, 76, 78, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
- 34, 35, 36, 37, 38, 39, 40, 0, 0, 73, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 4, 5, 6, 7, 0, 62, 63, 64,
- 65, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
- 38, 39, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 5, 6, 7, 0, 62, 63, 64, 65, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 0, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 12, 12, 5, 6, 7, 0, 62, 63, 64, 65, 13, 14, 15, 16, 17, 18, 19,
- 20, 21, 22, 23, 24, 25, 26, 0, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 0, 1, 2, 3, 4, 5, 6,
- 7, 8, 9, 10, 11, 12, 0, 66, 0, 0, 0, 0, 0, 0, 62, 63, 64, 65, 77, 76, 76, 28, 29, 30, 31, 32, 33, 34,
- 35, 36, 37, 38, 39, 40, 0, 0, 0, 96, 97, 0, 47, 98, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0, 0, 0,
- 0, 66, 0, 120, 121, 0, 71, 0, 0, 0, 12, 76, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 0, 0, 0,
- 0, 0, 0, 47, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 76,
- 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 76, 0, 0, 0, 0, 0, 47, 0, 0, 1, 2, 3, 4, 5, 6, 7, 0,
- 0, 10, 11, 0, 0, 1, 2, 3, 4, 5, 6, 7, 0, 71, 10, 11, 0, 0, 76, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
- 38, 39, 40, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 0, 1, 2, 0, 4, 5, 6, 7, 0, 0, 10, 11,
- 12, 0, 5, 6, 7, 71, 0, 73, 66, 3, 0, 77, 66, 0, 0, 0, 0, 0, 71, 77, 73, 0, 0, 77, 77, 28, 29, 30, 31,
- 32, 33, 34, 35, 36, 37, 38, 39, 40, 96, 97, 0, 0, 96, 97, 0, 0, 0, 0, 0, 0, 44, 45, 12, 12, 0, 0, 12, 0,
- 0, 0, 0, 0, 120, 121, 76, 0, 120, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 98, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 76, 76, 0, 0, 76, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static char termCheck[] = TermCheck.termCheck;
-
- @Override
- public final int termCheck(int index) {
- return termCheck[index];
- }
-
- public interface TermAction {
- public final static char termAction[] = { 0, 8653, 8230, 8244, 8244, 8244, 8240, 8244, 8244, 8244, 8244, 8244,
- 8244, 8400, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 8234, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 113, 1548, 1, 8859, 1835, 135,
- 8664, 8653, 1, 1, 2719, 8653, 127, 1451, 715, 8660, 3293, 6945, 6873, 1920, 2375, 1450, 3221, 5726,
- 3292, 1287, 3291, 724, 3289, 10, 8403, 8403, 8403, 8403, 8403, 8403, 8403, 8403, 8403, 8403, 8403, 8403,
- 8403, 8403, 8403, 8403, 8403, 8403, 8403, 8403, 8403, 8403, 8403, 8403, 8403, 8403, 8403, 8403, 8403,
- 8403, 8403, 8403, 8403, 8403, 8403, 8403, 8403, 8403, 8403, 8403, 8403, 8403, 8403, 8403, 8403, 8403,
- 8403, 8403, 8403, 8403, 8403, 8403, 8403, 418, 8403, 8403, 8403, 8403, 8403, 8403, 8403, 8403, 8403,
- 8403, 8403, 8653, 8403, 8403, 8403, 8403, 8653, 8403, 8653, 8403, 8403, 188, 2641, 2562, 8403, 4190,
- 8403, 8403, 4751, 4721, 8403, 8403, 8403, 8403, 8403, 8403, 8403, 8403, 8403, 8403, 8, 8509, 8509, 8509,
- 8509, 8509, 8509, 8509, 8509, 8509, 8509, 8509, 8509, 8509, 8509, 8509, 8509, 8509, 8509, 8509, 8509,
- 8509, 8509, 8509, 8509, 8509, 8509, 8509, 8509, 8509, 8509, 8509, 8509, 8509, 8509, 8509, 8509, 8509,
- 8509, 8509, 8509, 8509, 8509, 8509, 8509, 8509, 8509, 8509, 8509, 8509, 8509, 8509, 8509, 8509, 1739,
- 8509, 8509, 8509, 8509, 8509, 8509, 8509, 8509, 8509, 8509, 8509, 131, 8509, 8509, 8509, 8509, 335,
- 8509, 109, 8509, 8509, 8653, 7683, 7680, 8509, 8691, 8509, 8509, 8653, 8987, 8509, 8509, 8509, 8509,
- 8509, 8509, 8509, 8509, 8509, 8509, 8653, 8230, 8244, 8244, 8244, 8240, 8244, 8244, 8244, 8244, 8244,
- 8244, 8237, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 8234, 1, 1, 1, 1, 1, 1, 7312, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 115, 1548, 1, 8859, 1835, 136,
- 8664, 4476, 1, 1, 2719, 4304, 380, 1451, 39, 2258, 3293, 6515, 8691, 1920, 2375, 1450, 3221, 5726, 3292,
- 1287, 3291, 724, 3289, 8653, 8230, 8244, 8244, 8244, 8240, 8244, 8244, 8244, 8244, 8244, 8244, 8237, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 8234,
- 1, 1, 1, 1, 1, 1, 2328, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 114, 1548, 1, 8859, 1835, 8653, 8664, 133, 1,
- 1, 2719, 2641, 2562, 1451, 4190, 344, 3293, 8653, 4355, 1920, 2375, 1450, 3221, 5726, 3292, 1287, 3291,
- 724, 3289, 8653, 8230, 8244, 8244, 8244, 8240, 8244, 8244, 8244, 8244, 8244, 8244, 8237, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 8234, 1, 1, 1, 1,
- 1, 1, 7553, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1300, 1548, 1, 8859, 1835, 155, 8664, 8653, 1, 1, 4913,
- 2641, 2562, 1451, 8653, 4361, 3293, 29, 995, 1920, 2375, 1450, 3221, 5726, 3292, 1287, 3291, 724, 3289,
- 8653, 8230, 8244, 8244, 8244, 8240, 8244, 8244, 8244, 8244, 8244, 8244, 8237, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 8234, 1, 1, 1, 1, 1, 1, 1870,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 458, 1548, 1, 8859, 1835, 658, 8664, 129, 1, 1, 8358, 8364, 8361, 1451,
- 4232, 8653, 3293, 8653, 4583, 1920, 2375, 1450, 3221, 5726, 3292, 1287, 3291, 724, 3289, 8653, 8230,
- 8244, 8244, 8244, 8240, 8244, 8244, 8244, 8244, 8244, 8244, 8237, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 8234, 1, 1, 1, 1, 1, 1, 7578, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 132, 1548, 1, 8859, 1835, 8653, 8664, 151, 1, 1, 8653, 8667, 8668, 1451, 8653,
- 8653, 3293, 8653, 1445, 1920, 2375, 1450, 3221, 5726, 3292, 1287, 3291, 724, 3289, 8653, 8230, 8244,
- 8244, 8244, 8240, 8244, 8244, 8244, 8244, 8244, 8244, 8237, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 8234, 1, 1, 1, 1, 1, 1, 7582, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 2418, 1548, 1, 8859, 1835, 364, 8664, 4476, 1, 1, 2025, 1968, 1990, 1451, 4515, 89, 3293,
- 29, 7737, 1920, 2375, 1450, 3221, 5726, 3292, 1287, 3291, 724, 3289, 8653, 8230, 8244, 8244, 8244, 8240,
- 8244, 8244, 8244, 8244, 8244, 8244, 8237, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 8234, 1, 1, 1, 1, 1, 1, 7686, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 8653, 1548, 1, 8859, 1835, 364, 8664, 134, 1, 1, 8466, 8472, 8469, 1451, 8653, 3796, 3293, 474, 8653,
- 1920, 2375, 1450, 3221, 5726, 3292, 1287, 3291, 724, 3289, 8653, 8230, 8244, 8244, 8244, 8240, 8244,
- 8244, 8244, 8244, 8244, 8244, 8237, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 8234, 1, 1, 1, 1, 1, 1, 7689, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2906,
- 1548, 1, 8859, 1835, 429, 8664, 153, 1, 1, 2025, 1968, 1990, 1451, 8653, 4361, 3293, 488, 8653, 1920,
- 2375, 1450, 3221, 5726, 3292, 1287, 3291, 724, 3289, 8653, 8230, 8244, 8244, 8244, 8240, 8244, 8244,
- 8244, 8244, 8244, 8244, 8237, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 8234, 1, 1, 1, 1, 1, 1, 7692, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2915, 1548, 1,
- 8859, 1835, 657, 8664, 8653, 1, 1, 2025, 1968, 1990, 1451, 8653, 4401, 3293, 421, 8653, 1920, 2375,
- 1450, 3221, 5726, 3292, 1287, 3291, 724, 3289, 8653, 8230, 8244, 8244, 8244, 8240, 8244, 8244, 8244,
- 8244, 8244, 8244, 8237, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 8234, 1, 1, 1, 1, 1, 1, 7740, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2977, 1548, 1, 8859,
- 1835, 346, 8664, 152, 1, 1, 2025, 1968, 1990, 1451, 8653, 8653, 3293, 1, 2225, 1920, 2375, 1450, 3221,
- 5726, 3292, 1287, 3291, 724, 3289, 8653, 8230, 8244, 8244, 8244, 8240, 8244, 8244, 8244, 8244, 8244,
- 8244, 8237, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 8234, 1, 1, 1, 1, 1, 1, 225, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1548, 1, 8859, 1835, 331,
- 8664, 8653, 1, 1, 2025, 1968, 1990, 1451, 4515, 1445, 3293, 606, 9260, 1920, 2375, 1450, 3221, 5726,
- 3292, 1287, 3291, 724, 3289, 8653, 7743, 7743, 7743, 7743, 7743, 7743, 7743, 7743, 7743, 7743, 7743,
- 7743, 8653, 7683, 7680, 9261, 1066, 8653, 7679, 256, 7749, 4060, 8653, 216, 7862, 7856, 7859, 7743,
- 7743, 7743, 7743, 7743, 7743, 7743, 7743, 7743, 7743, 7743, 7743, 7743, 8513, 7743, 7743, 7743, 7743,
- 8653, 7743, 7871, 7868, 7865, 7877, 7895, 7874, 7886, 7853, 7880, 7883, 7892, 7889, 7850, 1, 7798, 7794,
- 8406, 8289, 7743, 3568, 403, 8409, 8292, 7743, 7743, 7743, 1, 492, 7743, 7743, 7743, 7743, 7743, 7743,
- 335, 7743, 7743, 364, 7683, 7680, 5742, 1066, 2025, 1968, 1990, 914, 4060, 8987, 7743, 7743, 7743, 7743,
- 7743, 7743, 7743, 7743, 7743, 7743, 7743, 7743, 7743, 7743, 7743, 7743, 7743, 7743, 7743, 7743, 7743,
- 7743, 7743, 7743, 7743, 7743, 8653, 13299, 13299, 549, 7743, 7743, 7743, 7743, 8653, 7746, 7746, 7746,
- 7746, 7746, 7746, 7746, 7746, 7746, 7746, 7746, 7746, 8653, 7683, 7680, 7728, 1066, 1516, 2063, 257,
- 7749, 4060, 2751, 8596, 7910, 7904, 7907, 7746, 7746, 7746, 7746, 7746, 7746, 7746, 7746, 7746, 7746,
- 7746, 7746, 7746, 8653, 7746, 7746, 7746, 7746, 8689, 7746, 7919, 7916, 7913, 7925, 7943, 7922, 7934,
- 7901, 7928, 7931, 7940, 7937, 7898, 1, 7798, 7794, 5742, 8289, 7746, 3584, 1094, 914, 4060, 7746, 7746,
- 7746, 8653, 8653, 7746, 7746, 7746, 7746, 7746, 7746, 3459, 7746, 7746, 1, 7798, 7794, 5742, 8289, 8382,
- 8388, 8385, 914, 4060, 7093, 7746, 7746, 7746, 7746, 7746, 7746, 7746, 7746, 7746, 7746, 7746, 7746,
- 7746, 7746, 7746, 7746, 7746, 7746, 7746, 7746, 7746, 7746, 7746, 7746, 7746, 7746, 8653, 8667, 8668,
- 581, 7746, 7746, 7746, 7746, 39, 7683, 7680, 723, 1066, 2025, 1968, 1990, 2875, 4060, 3109, 3187, 154,
- 1004, 9315, 9316, 8950, 8948, 8957, 8956, 8952, 8953, 8951, 8954, 8955, 8958, 8949, 6703, 9023, 9024,
- 9317, 8945, 8939, 8946, 8942, 8918, 8944, 8943, 8940, 8941, 8919, 8672, 3031, 2953, 3343, 3265, 2797,
- 391, 843, 1009, 8674, 921, 6659, 992, 8653, 8675, 8673, 832, 8669, 8670, 8671, 6637, 9085, 5767, 9086,
- 9087, 3421, 784, 1685, 8653, 8482, 8482, 261, 8478, 8244, 8244, 8244, 261, 261, 261, 261, 8486, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 8653, 8667, 8668, 473, 39,
- 4401, 261, 1, 8691, 2025, 1968, 1990, 429, 8475, 364, 364, 422, 2025, 1968, 1990, 130, 1, 1, 1, 1, 8653,
- 4955, 255, 9099, 2592, 8653, 4583, 7814, 7808, 7811, 9043, 8653, 261, 116, 1383, 450, 9315, 9316, 8950,
- 8948, 8957, 8956, 8952, 8953, 8951, 8954, 8955, 8958, 8949, 9187, 7823, 7820, 7817, 7829, 7847, 7826,
- 7838, 7805, 7832, 7835, 7844, 7841, 7802, 8653, 7798, 7794, 5742, 8289, 8382, 8388, 8385, 914, 4060,
- 8516, 8516, 1123, 955, 9122, 9123, 9124, 8653, 8482, 8482, 261, 8478, 8244, 8244, 8244, 261, 261, 261,
- 261, 8534, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9122,
- 9123, 9124, 321, 8006, 8006, 261, 316, 2025, 1968, 1990, 8653, 661, 8475, 43, 8250, 8250, 2025, 1968,
- 1990, 3698, 1, 1, 1, 1, 8653, 4955, 568, 9099, 2592, 8653, 8653, 8421, 8415, 8418, 8653, 269, 261, 3152,
- 8221, 449, 9315, 9316, 8950, 8948, 8957, 8956, 8952, 8953, 8951, 8954, 8955, 8958, 8949, 9187, 9023,
- 9024, 9317, 8945, 8939, 8946, 8942, 8918, 8944, 8943, 8940, 8941, 8919, 8247, 378, 7683, 7680, 5564,
- 1066, 2025, 1968, 1990, 914, 4060, 364, 364, 8653, 9122, 9123, 9124, 8653, 8244, 8244, 261, 8244, 8240,
- 8244, 8244, 261, 261, 261, 261, 8599, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 13885, 1, 13552, 1, 1, 13611, 1, 8653, 8060, 8057, 655, 8379, 8379, 261, 660, 2025, 1968, 1990, 650,
- 8653, 8590, 2328, 1, 2025, 1968, 1990, 156, 8653, 1, 1, 1, 1, 8653, 6368, 7734, 8896, 1835, 1, 7798,
- 7794, 5742, 8289, 8382, 8388, 8385, 914, 4060, 252, 342, 7798, 7794, 5742, 8289, 8382, 8388, 8385, 914,
- 4060, 8516, 8516, 2277, 9187, 8653, 8244, 8244, 261, 8244, 8240, 8244, 8244, 261, 261, 261, 261, 261, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13885, 1, 13552, 1, 1, 13611, 1, 8660, 2984,
- 258, 48, 8060, 8057, 261, 7970, 7964, 7967, 649, 128, 3698, 8590, 8653, 2025, 1968, 1990, 431, 8667,
- 8668, 1, 1, 1, 1, 3776, 6368, 4232, 8896, 1835, 7979, 7976, 7973, 7985, 8003, 7982, 7994, 7961, 7988,
- 7991, 8000, 7997, 7958, 1, 7798, 7794, 5742, 8289, 8382, 8388, 8385, 914, 4060, 8653, 9187, 8653, 8244,
- 8244, 261, 8244, 8240, 8244, 8244, 261, 261, 261, 261, 8632, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 13885, 1, 13552, 1, 1, 13611, 1, 1, 7798, 7794, 5742, 8289, 8653, 261, 8653, 914,
- 4060, 8653, 7683, 7680, 8590, 1066, 4751, 4721, 8657, 914, 4060, 8653, 1, 1, 1, 1, 3698, 6368, 451,
- 8896, 1835, 137, 8653, 2025, 1968, 1990, 1, 7798, 7794, 5564, 8289, 251, 430, 491, 914, 4060, 421, 1,
- 400, 48, 7589, 1, 119, 8668, 3986, 9187, 8653, 8244, 8244, 261, 8244, 8240, 8244, 8244, 261, 261, 261,
- 261, 8599, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13885, 1, 13552, 1, 1, 13611,
- 1, 8653, 1870, 331, 8667, 8668, 369, 261, 2025, 1968, 1990, 2328, 1870, 400, 8590, 2279, 400, 400, 7731,
- 8668, 1467, 8653, 1, 1, 1, 1, 2328, 6368, 574, 8896, 1835, 157, 574, 8661, 8584, 8581, 8578, 8656, 400,
- 5674, 5700, 252, 401, 3896, 4981, 2230, 2181, 2132, 2083, 2034, 1985, 1936, 1887, 1838, 1788, 9187,
- 8653, 8244, 8244, 261, 8244, 8240, 8244, 8244, 261, 261, 261, 261, 8599, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13885, 1, 13552, 1, 1, 13611, 1, 8653, 8667, 8668, 8653, 1066, 8660,
- 261, 1499, 914, 4060, 38, 7701, 7698, 8590, 3314, 8, 112, 8653, 7695, 4060, 5071, 1, 1, 1, 1, 1587,
- 6368, 8629, 8896, 1835, 658, 7683, 7680, 5742, 1066, 2025, 1968, 1990, 914, 4060, 252, 8653, 3943, 6130,
- 3236, 3158, 3080, 3002, 2924, 2846, 2768, 2690, 2612, 2533, 9187, 8653, 8244, 8244, 261, 8244, 8240,
- 8244, 8244, 261, 261, 261, 261, 261, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 13885, 1, 13552, 1, 1, 13611, 1, 8629, 1, 259, 8653, 8667, 8668, 261, 8021, 8015, 8018, 651, 914, 4060,
- 8590, 8653, 2025, 1968, 1990, 8653, 4304, 8653, 1, 1, 1, 1, 6515, 6368, 8653, 8896, 1835, 8030, 8027,
- 8024, 8036, 8054, 8033, 8045, 8012, 8039, 8042, 8051, 8048, 8009, 1, 7798, 7794, 5742, 8289, 8382, 8388,
- 8385, 914, 4060, 8653, 9187, 8653, 8244, 8244, 261, 8244, 8240, 8244, 8244, 261, 261, 261, 261, 261, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13885, 1, 13552, 1, 1, 13611, 1, 5994, 8653,
- 646, 9045, 5282, 653, 261, 8075, 8069, 8072, 8608, 8614, 8611, 8590, 8653, 7683, 7680, 8653, 8691, 326,
- 3599, 1, 1, 1, 1, 381, 6368, 636, 8896, 1835, 8084, 8081, 8078, 8090, 8108, 8087, 8099, 8066, 8093,
- 8096, 8105, 8102, 8063, 428, 7955, 7955, 429, 316, 7946, 7952, 7949, 2025, 1968, 1990, 9187, 8653, 8244,
- 8244, 261, 8244, 8240, 8244, 8244, 261, 261, 261, 261, 261, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 13885, 1, 13552, 1, 1, 13611, 1, 2328, 316, 569, 3745, 8653, 652, 261, 8430, 8424,
- 8427, 8617, 8623, 8620, 8590, 5674, 5700, 1870, 36, 8506, 8503, 8653, 1, 1, 1, 1, 8653, 6368, 635, 8896,
- 1835, 9023, 9024, 9317, 8945, 8939, 8946, 8942, 8918, 8944, 8943, 8940, 8941, 8919, 656, 8376, 8376,
- 8653, 660, 8367, 8373, 8370, 325, 8667, 8668, 9187, 8653, 8244, 8244, 261, 8244, 8240, 8244, 8244, 261,
- 261, 261, 261, 261, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13885, 1, 13552, 1,
- 1, 13611, 1, 8653, 660, 570, 6062, 3470, 452, 261, 8439, 8433, 8436, 2025, 1968, 1990, 8590, 5674, 5700,
- 5493, 123, 8653, 13040, 11516, 1, 1, 1, 1, 1, 6368, 5533, 8896, 1835, 9023, 9024, 9317, 8945, 8939,
- 8946, 8942, 8918, 8944, 8943, 8940, 8941, 8919, 37, 8394, 8394, 5466, 5428, 2025, 1968, 1990, 3829, 37,
- 364, 9187, 8653, 8244, 8244, 261, 8244, 8240, 8244, 8244, 261, 261, 261, 261, 261, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13885, 1, 13552, 1, 1, 13611, 1, 8653, 8689, 571, 6063, 5674,
- 5700, 261, 8448, 8442, 8445, 8689, 111, 147, 8590, 8653, 8653, 110, 8653, 13040, 11516, 369, 1, 1, 1, 1,
- 8653, 6368, 3793, 8896, 1835, 9023, 9024, 9317, 8945, 8939, 8946, 8942, 8918, 8944, 8943, 8940, 8941,
- 8919, 1, 7798, 7794, 5564, 8289, 9023, 9024, 9317, 914, 4060, 8653, 9187, 8653, 8244, 8244, 261, 8244,
- 8240, 8244, 8244, 261, 261, 261, 261, 261, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 13885, 1, 13552, 1, 1, 13611, 1, 1, 7798, 7794, 8406, 8289, 137, 261, 2435, 8409, 8292, 8653, 8653,
- 8663, 8590, 4304, 8653, 4809, 4649, 2328, 4304, 6515, 1, 1, 1, 1, 6515, 6368, 8653, 8896, 1835, 8653,
- 7798, 7794, 5742, 8289, 8382, 8388, 8385, 914, 4060, 8548, 8548, 8653, 1, 1, 1, 1, 8662, 8653, 8653, 1,
- 1, 1, 1, 9187, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 8653, 8626, 8626, 8626, 8626, 8626, 8626,
- 8626, 8626, 8626, 8626, 8626, 395, 1, 1, 1, 1, 1, 1, 2484, 1, 1, 1, 1, 1, 1, 8653, 1, 1, 1, 1, 1, 1, 1,
- 37, 8394, 8394, 118, 3698, 117, 1, 9323, 1, 3896, 4981, 3986, 1, 1, 1, 7798, 7794, 3519, 1066, 8653,
- 374, 9199, 2875, 4060, 3109, 3187, 8653, 7752, 7791, 7788, 7779, 7785, 7758, 7761, 7773, 7770, 7776,
- 7767, 7764, 7755, 7782, 5392, 8653, 3792, 8626, 1123, 955, 1123, 955, 39, 149, 3444, 3891, 8691, 1379,
- 8672, 3031, 2953, 3343, 3265, 2797, 4622, 843, 1009, 8674, 921, 6659, 992, 8653, 8675, 8673, 832, 8669,
- 8670, 8671, 6637, 324, 1298, 1298, 2328, 3061, 374, 1685, 8653, 374, 374, 5735, 1, 39, 39, 3986, 550, 1,
- 7798, 7794, 8334, 8289, 8653, 8653, 8215, 8295, 8292, 8277, 8280, 8665, 7752, 7791, 7788, 7779, 7785,
- 7758, 7761, 7773, 7770, 7776, 7767, 7764, 7755, 7782, 8259, 8653, 7798, 7794, 5742, 8289, 8382, 8388,
- 8385, 914, 4060, 8548, 8548, 629, 8307, 8274, 8271, 8286, 8283, 8268, 8653, 8322, 8331, 8301, 8325,
- 8265, 8328, 5793, 8298, 8304, 8319, 8316, 8313, 8310, 8262, 37, 8394, 8394, 341, 2328, 8653, 8060, 8057,
- 8394, 8218, 8664, 8653, 8337, 8337, 39, 7683, 7680, 723, 1066, 3788, 9128, 9142, 2875, 4060, 3109, 3187,
- 8593, 714, 9315, 9316, 8950, 8948, 8957, 8956, 8952, 8953, 8951, 8954, 8955, 8958, 8949, 5392, 478,
- 7725, 7725, 454, 7725, 7725, 7725, 7725, 148, 8653, 7725, 7725, 1565, 8672, 3031, 2953, 3343, 3265,
- 2797, 7536, 843, 1009, 8674, 921, 6659, 992, 8653, 8675, 8673, 832, 8669, 8670, 8671, 6637, 4864, 3776,
- 8653, 3421, 784, 8653, 1685, 150, 8653, 8653, 8212, 6204, 172, 7683, 7680, 723, 1066, 8663, 4622, 8660,
- 2875, 4060, 3109, 3187, 8653, 714, 9315, 9316, 8950, 8948, 8957, 8956, 8952, 8953, 8951, 8954, 8955,
- 8958, 8949, 5392, 378, 39, 39, 3986, 8691, 2025, 1968, 1990, 8653, 3844, 364, 364, 8662, 8672, 3031,
- 2953, 3343, 3265, 2797, 47, 843, 1009, 8674, 921, 6659, 992, 1, 8675, 8673, 832, 8669, 8670, 8671, 6637,
- 4809, 4649, 8653, 8667, 8668, 8602, 1685, 1, 7798, 7794, 3519, 1066, 39, 39, 8665, 2875, 4060, 3109,
- 3187, 8653, 7752, 7791, 7788, 7779, 7785, 7758, 7761, 7773, 7770, 7776, 7767, 7764, 7755, 7782, 5392, 1,
- 3499, 2328, 8653, 1261, 8653, 8653, 351, 7218, 6882, 8545, 3923, 8665, 8672, 3031, 2953, 3343, 3265,
- 2797, 8605, 843, 1009, 8674, 921, 6659, 992, 8653, 8675, 8673, 832, 8669, 8670, 8671, 6637, 98, 8653,
- 8653, 3651, 5755, 8664, 1685, 39, 7683, 7680, 723, 1066, 39, 39, 8659, 2875, 4060, 3109, 3187, 8209,
- 714, 9315, 9316, 8950, 8948, 8957, 8956, 8952, 8953, 8951, 8954, 8955, 8958, 8949, 5392, 479, 8355,
- 8355, 8664, 8349, 8340, 8346, 8343, 3643, 2328, 8352, 8352, 5860, 8672, 3031, 2953, 3343, 3265, 2797,
- 318, 843, 1009, 8674, 921, 6659, 992, 8653, 8675, 8673, 832, 8669, 8670, 8671, 6637, 8653, 8653, 8519,
- 6196, 8661, 8653, 1685, 8653, 8653, 8658, 8212, 612, 7683, 7680, 723, 1066, 624, 8665, 8653, 2875, 4060,
- 3109, 3187, 8653, 714, 9315, 9316, 8950, 8948, 8957, 8956, 8952, 8953, 8951, 8954, 8955, 8958, 8949,
- 5392, 1, 7798, 7794, 5564, 8289, 8653, 9276, 144, 914, 4060, 8653, 146, 8215, 8672, 3031, 2953, 3343,
- 3265, 2797, 8970, 843, 1009, 8674, 921, 6659, 992, 1234, 8675, 8673, 832, 8669, 8670, 8671, 6637, 8660,
- 4948, 8653, 324, 8664, 7170, 1685, 39, 7683, 7680, 723, 1066, 39, 39, 8659, 2875, 4060, 3109, 3187,
- 8209, 714, 9315, 9316, 8950, 8948, 8957, 8956, 8952, 8953, 8951, 8954, 8955, 8958, 8949, 5392, 8653,
- 8653, 2328, 2209, 5493, 758, 617, 8218, 5493, 2997, 353, 8653, 8659, 8672, 3031, 2953, 3343, 3265, 2797,
- 5927, 843, 1009, 8674, 921, 6659, 992, 72, 8675, 8673, 832, 8669, 8670, 8671, 6637, 5466, 5428, 8653,
- 97, 5466, 5428, 1685, 12416, 8653, 8658, 8212, 612, 7683, 7680, 723, 1066, 5674, 5700, 3788, 2875, 4060,
- 3109, 3187, 8653, 714, 9315, 9316, 8950, 8948, 8957, 8956, 8952, 8953, 8951, 8954, 8955, 8958, 8949,
- 5392, 90, 8412, 8412, 8658, 8412, 8412, 8412, 8412, 2328, 8653, 8412, 8412, 2753, 8672, 3031, 2953,
- 3343, 3265, 2797, 8575, 843, 1009, 8674, 921, 6659, 992, 8653, 8675, 8673, 832, 8669, 8670, 8671, 6637,
- 8653, 8554, 8653, 3300, 145, 8653, 1685, 39, 7683, 7680, 723, 1066, 39, 39, 8659, 2875, 4060, 3109,
- 3187, 8209, 714, 9315, 9316, 8950, 8948, 8957, 8956, 8952, 8953, 8951, 8954, 8955, 8958, 8949, 5392, 93,
- 8572, 8572, 627, 8566, 8557, 8563, 8560, 48, 8653, 8569, 8569, 8667, 8672, 3031, 2953, 3343, 3265, 2797,
- 3777, 843, 1009, 8674, 921, 6659, 992, 35, 8675, 8673, 832, 8669, 8670, 8671, 6637, 722, 5493, 2907, 39,
- 7683, 7680, 723, 1066, 8653, 8658, 8212, 2875, 4060, 3109, 3187, 8657, 714, 9315, 9316, 8950, 8948,
- 8957, 8956, 8952, 8953, 8951, 8954, 8955, 8958, 8949, 5392, 5466, 5428, 8653, 8653, 604, 1679, 8653,
- 1352, 39, 8667, 1725, 2311, 8691, 8672, 3031, 2953, 3343, 3265, 2797, 8653, 843, 1009, 8674, 921, 6659,
- 992, 8653, 8675, 8673, 832, 8669, 8670, 8671, 6637, 39, 7683, 7680, 723, 1066, 1332, 592, 2418, 2875,
- 4060, 3109, 3187, 8653, 714, 9315, 9316, 8950, 8948, 8957, 8956, 8952, 8953, 8951, 8954, 8955, 8958,
- 8949, 5392, 1, 7798, 7794, 5742, 8289, 8382, 8388, 8385, 914, 4060, 8653, 7016, 342, 8672, 3031, 2953,
- 3343, 3265, 2797, 3392, 843, 1009, 8674, 921, 6659, 992, 1, 8675, 8673, 832, 8669, 8670, 8671, 6637,
- 8653, 8492, 8489, 8656, 8663, 98, 1685, 39, 7683, 7680, 723, 1066, 3924, 342, 8653, 2875, 4060, 3109,
- 3187, 122, 714, 9315, 9316, 8950, 8948, 8957, 8956, 8952, 8953, 8951, 8954, 8955, 8958, 8949, 5392,
- 9122, 9123, 9124, 8653, 8662, 8653, 6427, 580, 8653, 8653, 8653, 8499, 8495, 8672, 3031, 2953, 3343,
- 3265, 2797, 8689, 843, 1009, 8674, 921, 6659, 992, 8653, 8675, 8673, 832, 8669, 8670, 8671, 6637, 8653,
- 8653, 39, 7683, 7680, 3519, 1066, 8519, 8653, 1667, 2875, 4060, 3109, 3187, 121, 714, 9315, 9316, 8950,
- 8948, 8957, 8956, 8952, 8953, 8951, 8954, 8955, 8958, 8949, 5392, 8689, 483, 101, 5674, 5700, 8551,
- 8653, 2, 45, 8525, 8525, 3069, 8653, 8672, 3031, 2953, 3343, 3265, 2797, 9088, 843, 1009, 8674, 921,
- 6659, 992, 8653, 8675, 8673, 832, 8669, 8670, 8671, 6637, 39, 7683, 7680, 3519, 1066, 8653, 1685, 408,
- 2875, 4060, 3109, 3187, 120, 714, 9315, 9316, 8950, 8948, 8957, 8956, 8952, 8953, 8951, 8954, 8955,
- 8958, 8949, 5392, 8522, 311, 8653, 3829, 8587, 5674, 5700, 8653, 8653, 8492, 8489, 37, 2210, 8672, 3031,
- 2953, 3343, 3265, 2797, 139, 843, 1009, 8674, 921, 6659, 992, 8653, 8675, 8673, 832, 8669, 8670, 8671,
- 6637, 39, 7683, 7680, 6764, 1066, 8653, 1685, 8653, 2875, 4060, 3109, 3187, 143, 714, 9315, 9316, 8950,
- 8948, 8957, 8956, 8952, 8953, 8951, 8954, 8955, 8958, 8949, 5392, 8689, 630, 8653, 482, 3876, 5674,
- 5700, 8653, 37, 8394, 8394, 8653, 8653, 8672, 3031, 2953, 3343, 3265, 2797, 142, 843, 1009, 8674, 921,
- 6659, 992, 8653, 8675, 8673, 832, 8669, 8670, 8671, 6637, 39, 7683, 7680, 6764, 1066, 3829, 5674, 5700,
- 2875, 4060, 3109, 3187, 140, 714, 9315, 9316, 8950, 8948, 8957, 8956, 8952, 8953, 8951, 8954, 8955,
- 8958, 8949, 5392, 8689, 8653, 8653, 462, 1266, 5674, 5700, 8653, 8653, 14333, 14320, 8653, 8653, 8672,
- 3031, 2953, 3343, 3265, 2797, 1543, 843, 1009, 8674, 921, 6659, 992, 8653, 8675, 8673, 832, 8669, 8670,
- 8671, 6637, 39, 7683, 7680, 723, 1066, 8653, 5674, 5700, 2875, 4060, 3109, 3187, 542, 714, 9315, 9316,
- 8950, 8948, 8957, 8956, 8952, 8953, 8951, 8954, 8955, 8958, 8949, 5392, 8689, 8653, 8653, 8653, 6468,
- 5674, 5700, 101, 8653, 8653, 8551, 7427, 1, 8672, 3031, 2953, 3343, 3265, 2797, 3374, 843, 1009, 8674,
- 921, 6659, 992, 8653, 8675, 8673, 832, 8669, 8670, 8671, 6637, 39, 7683, 7680, 6855, 1066, 8653, 8653,
- 8653, 2875, 4060, 3109, 3187, 540, 714, 9315, 9316, 8950, 8948, 8957, 8956, 8952, 8953, 8951, 8954,
- 8955, 8958, 8949, 5392, 8653, 7077, 7590, 8653, 3877, 8653, 8653, 8653, 460, 1, 8653, 8653, 8209, 8672,
- 3031, 2953, 3343, 3265, 2797, 3797, 843, 1009, 8674, 921, 6659, 992, 8653, 8675, 8673, 832, 8669, 8670,
- 8671, 6637, 39, 7683, 7680, 6855, 1066, 8653, 8653, 8653, 2875, 4060, 3109, 3187, 544, 714, 9315, 9316,
- 8950, 8948, 8957, 8956, 8952, 8953, 8951, 8954, 8955, 8958, 8949, 5392, 645, 3878, 7591, 8653, 8653,
- 8653, 8653, 8653, 8653, 8653, 8212, 8653, 8537, 8672, 3031, 2953, 3343, 3265, 2797, 2415, 843, 1009,
- 8674, 921, 6659, 992, 8653, 8675, 8673, 832, 8669, 8670, 8671, 6637, 39, 7683, 7680, 3519, 1066, 8653,
- 8653, 8653, 2875, 4060, 3109, 3187, 8653, 714, 9315, 9316, 8950, 8948, 8957, 8956, 8952, 8953, 8951,
- 8954, 8955, 8958, 8949, 5392, 1, 8653, 1045, 8653, 8653, 8653, 8653, 8653, 8653, 8653, 8541, 8653, 8635,
- 8672, 3031, 2953, 3343, 3265, 2797, 8653, 843, 1009, 8674, 921, 6659, 992, 8653, 8675, 8673, 832, 8669,
- 8670, 8671, 6637, 39, 7683, 7680, 3519, 1066, 8653, 8653, 8653, 2875, 4060, 3109, 3187, 8653, 714, 9315,
- 9316, 8950, 8948, 8957, 8956, 8952, 8953, 8951, 8954, 8955, 8958, 8949, 5392, 8653, 8653, 8653, 8653,
- 8653, 8653, 8653, 8653, 8653, 8653, 8664, 8653, 8653, 8672, 3031, 2953, 3343, 3265, 2797, 8653, 843,
- 1009, 8674, 921, 6659, 992, 8653, 8675, 8673, 832, 8669, 8670, 8671, 6637, 39, 7683, 7680, 723, 1066,
- 8653, 8653, 8653, 2875, 4060, 3109, 3187, 8653, 714, 9315, 9316, 8950, 8948, 8957, 8956, 8952, 8953,
- 8951, 8954, 8955, 8958, 8949, 5392, 1, 8653, 8653, 676, 8653, 8653, 8653, 8653, 9156, 8653, 9150, 9154,
- 8653, 8672, 3031, 2953, 3343, 3265, 2797, 8653, 843, 1009, 8674, 921, 6659, 992, 8653, 8675, 8673, 832,
- 8669, 8670, 8671, 6637, 8653, 1, 1, 4948, 439, 1, 8653, 3928, 9148, 9149, 9179, 9180, 9157, 8653, 8653,
- 8602, 8528, 222, 8638, 8646, 8642, 8653, 1, 8653, 8653, 8650, 8663, 8653, 8653, 8653, 8653, 8653, 9159,
- 8653, 192, 8659, 8659, 730, 8653, 9181, 1575, 1669, 3881, 9160, 8653, 8653, 9158, 8653, 8653, 9170,
- 9169, 8531, 222, 8653, 8653, 3881, 3923, 8653, 8653, 8653, 8650, 8662, 9175, 9176, 8605, 9182, 9173,
- 9174, 9153, 9155, 9177, 8659, 9151, 9152, 9178, 8653, 9163, 9164, 9165, 9161, 9162, 9171, 9172, 9167,
- 9166, 9168, 8650, 4961, 8653, 8653, 7683, 7680, 9183, 8691, 2025, 1968, 1990, 844, 192, 8658, 8658,
- 1664, 907, 9315, 9316, 8950, 8948, 8957, 8956, 8952, 8953, 8951, 8954, 8955, 8958, 8949, 6681, 9023,
- 9024, 9317, 8945, 8939, 8946, 8942, 8918, 8944, 8943, 8940, 8941, 8919, 8653, 8653, 1636, 8653, 8653,
- 8658, 8653, 8653, 8653, 8653, 8653, 8653, 273, 8202, 8198, 8653, 8206, 8123, 8117, 8120, 8653, 9085,
- 5767, 9086, 9087, 907, 8195, 8192, 8183, 8189, 8162, 8165, 8177, 8174, 8180, 8171, 8168, 8159, 8186,
- 6681, 8132, 8129, 8126, 8138, 8156, 8135, 8147, 8114, 8141, 8144, 8153, 8150, 8111, 8653, 8653, 8653,
- 8653, 8653, 8653, 8653, 8653, 8653, 8653, 8653, 8653, 8653, 8667, 8668, 8653, 8653, 2025, 1968, 1990,
- 8653, 9085, 5767, 9086, 9087, 1172, 9315, 9316, 8950, 8948, 8957, 8956, 8952, 8953, 8951, 8954, 8955,
- 8958, 8949, 8653, 9023, 9024, 9317, 8945, 8939, 8946, 8942, 8918, 8944, 8943, 8940, 8941, 8919, 8653,
- 124, 8653, 1, 8653, 8653, 8653, 8653, 8653, 8653, 8653, 8653, 273, 8463, 8460, 396, 8659, 8123, 8117,
- 8120, 8653, 9085, 5767, 9086, 9087, 1172, 8195, 8192, 8183, 8189, 8162, 8165, 8177, 8174, 8180, 8171,
- 8168, 8159, 8186, 8653, 8132, 8129, 8126, 8138, 8156, 8135, 8147, 8114, 8141, 8144, 8153, 8150, 8111,
- 29, 421, 421, 8227, 421, 421, 421, 421, 421, 421, 8227, 8227, 8227, 8653, 5234, 8653, 8653, 8653, 8653,
- 8653, 8653, 9085, 5767, 9086, 9087, 7722, 396, 8658, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421,
- 421, 421, 421, 8653, 8653, 8653, 5180, 5150, 8653, 8227, 396, 32, 422, 422, 8224, 422, 422, 422, 422,
- 422, 422, 8224, 8224, 8224, 8653, 1, 8653, 8653, 7686, 8653, 5123, 4428, 8653, 8227, 8653, 8653, 8653,
- 194, 8227, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 8653, 8653, 8653, 8653,
- 8653, 8653, 8224, 8653, 634, 644, 644, 644, 644, 644, 644, 644, 644, 644, 8397, 8397, 8397, 8653, 8653,
- 8653, 8653, 8653, 8653, 8653, 8653, 8653, 8224, 8653, 8653, 8653, 8653, 8224, 644, 644, 644, 644, 644,
- 644, 644, 644, 644, 644, 644, 644, 644, 194, 8653, 8653, 8653, 8653, 8653, 8397, 8653, 37, 8668, 8668,
- 8668, 8668, 8668, 8668, 8668, 126, 8653, 8668, 8668, 125, 37, 8667, 8667, 8667, 8667, 8667, 8667, 8667,
- 8653, 644, 8667, 8667, 8653, 8653, 8397, 8668, 8668, 8668, 8668, 8668, 8668, 8668, 8668, 8668, 8668,
- 8668, 8668, 8668, 8667, 8667, 8667, 8667, 8667, 8667, 8667, 8667, 8667, 8667, 8667, 8667, 8667, 1, 8337,
- 8337, 8653, 8391, 8382, 8388, 8385, 8653, 572, 364, 364, 396, 8653, 8457, 8451, 8454, 8668, 74, 8668,
- 5234, 7716, 8653, 8668, 5234, 8653, 8653, 8653, 8653, 8653, 8667, 8253, 8667, 8653, 8653, 8256, 8667,
- 9023, 9024, 9317, 8945, 8939, 8946, 8942, 8918, 8944, 8943, 8940, 8941, 8919, 5180, 5150, 8653, 1, 5180,
- 5150, 1, 8653, 8653, 8653, 8653, 8653, 7707, 7704, 8659, 588, 8653, 8653, 8659, 8653, 8653, 8653, 8653,
- 8653, 5123, 4428, 396, 8653, 5123, 4428, 8653, 8653, 8653, 8653, 8653, 8653, 8653, 8653, 8653, 7719,
- 8653, 8653, 8653, 8653, 8653, 8653, 8653, 8653, 396, 8653, 8653, 8653, 8653, 8653, 8653, 8653, 8653,
- 8653, 8653, 8653, 8653, 8653, 8653, 8653, 8653, 8653, 8653, 8653, 8653, 8653, 8653, 8653, 8653, 8653,
- 8653, 7592, 8653, 8653, 8658, 588, 8653, 8653, 8658, 8653, 8653, 8653, 8653, 8653, 8653, 8653, 8653,
- 8653, 8653, 8653, 7710, 8653, 7713 };
- }
-
- public final static char termAction[] = TermAction.termAction;
-
- @Override
- public final int termAction(int index) {
- return termAction[index];
- }
-
- public interface Asb {
- public final static char asb[] = { 0, 957, 123, 720, 127, 821, 661, 661, 661, 661, 1079, 821, 1251, 1251, 1004,
- 1251, 62, 1, 64, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 1251, 306, 311, 308, 315, 313,
- 322, 320, 324, 323, 325, 212, 326, 720, 720, 381, 381, 381, 381, 763, 223, 353, 353, 1251, 381, 117,
- 268, 1251, 1251, 353, 763, 268, 268, 268, 1160, 700, 681, 777, 380, 1370, 1081, 1251, 1, 1251, 1251,
- 184, 184, 223, 720, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721,
- 721, 721, 721, 721, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 1109, 721, 268, 351, 351,
- 351, 351, 1372, 268, 353, 353, 1315, 1238, 821, 821, 821, 1251, 181, 1251, 1083, 1251, 1223, 1251, 1079,
- 763, 1251, 1232, 721, 117, 117, 353, 661, 22, 1315, 530, 1177, 199, 198, 476, 1258, 1258, 1079, 64, 721,
- 682, 117, 380, 720, 761, 1366, 268, 760, 762, 760, 268, 117, 308, 308, 306, 306, 306, 313, 313, 313,
- 313, 313, 313, 311, 311, 320, 315, 315, 323, 322, 324, 1107, 1107, 325, 821, 821, 821, 821, 763, 763,
- 351, 383, 1070, 1, 620, 618, 625, 623, 627, 626, 628, 337, 350, 351, 1251, 1251, 763, 574, 514, 267,
- 1002, 420, 1085, 186, 1083, 179, 1079, 1223, 763, 763, 1372, 1, 351, 655, 181, 1160, 117, 645, 268,
- 1179, 1181, 763, 1370, 1262, 681, 1107, 721, 1107, 114, 680, 821, 821, 821, 682, 821, 763, 69, 114, 114,
- 901, 120, 763, 271, 181, 721, 381, 1251, 1251, 268, 1081, 763, 181, 763, 762, 1370, 720, 720, 720, 720,
- 720, 720, 821, 821, 1044, 1057, 1057, 1057, 1057, 1039, 1079, 658, 721, 721, 721, 721, 721, 721, 721,
- 721, 721, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 721, 700, 1319, 1251, 1251, 518,
- 267, 513, 268, 420, 763, 665, 1376, 663, 1372, 181, 524, 763, 1372, 763, 268, 655, 21, 268, 203, 1156,
- 202, 1181, 1372, 761, 672, 682, 1107, 774, 682, 700, 700, 698, 680, 700, 114, 114, 577, 901, 1312, 763,
- 821, 821, 643, 1079, 760, 679, 268, 1251, 1315, 1366, 1081, 763, 761, 268, 268, 268, 268, 223, 223, 763,
- 721, 618, 618, 618, 623, 620, 620, 626, 625, 627, 1107, 628, 1322, 1251, 1171, 1170, 266, 655, 763, 420,
- 1107, 1086, 661, 1374, 759, 1094, 420, 665, 664, 668, 665, 668, 1372, 524, 524, 763, 763, 1251, 21, 588,
- 720, 200, 200, 191, 191, 1175, 1315, 823, 268, 763, 682, 721, 682, 268, 1312, 268, 698, 901, 821, 268,
- 668, 668, 114, 609, 1315, 937, 614, 1312, 1312, 763, 268, 763, 1370, 1181, 207, 1079, 763, 761, 125,
- 1251, 1251, 1251, 720, 1251, 1154, 1251, 1081, 268, 268, 1372, 915, 720, 1251, 1251, 518, 268, 222, 268,
- 268, 1370, 181, 1088, 1088, 351, 661, 1096, 668, 668, 668, 668, 763, 524, 654, 920, 654, 654, 588, 720,
- 720, 1179, 1156, 588, 1295, 682, 643, 682, 114, 901, 720, 682, 668, 181, 1079, 609, 1312, 720, 21, 1312,
- 609, 1366, 1181, 131, 925, 130, 763, 763, 761, 679, 821, 1251, 223, 721, 117, 1154, 763, 1251, 279,
- 1171, 761, 424, 181, 425, 436, 614, 721, 1107, 610, 931, 611, 1096, 668, 668, 766, 654, 655, 721, 763,
- 1251, 135, 591, 1312, 588, 720, 680, 223, 114, 1312, 268, 181, 943, 763, 821, 268, 609, 268, 207, 114,
- 912, 1002, 763, 114, 114, 823, 1251, 268, 117, 1251, 222, 114, 424, 424, 1374, 1374, 947, 1324, 1086,
- 436, 1096, 721, 721, 611, 611, 1096, 1096, 943, 471, 767, 763, 655, 1251, 1251, 591, 591, 682, 268, 114,
- 125, 1079, 763, 223, 599, 764, 268, 114, 268, 268, 1309, 655, 424, 424, 425, 425, 425, 863, 950, 350,
- 661, 582, 582, 611, 611, 766, 763, 1079, 1079, 763, 821, 591, 682, 125, 268, 599, 268, 181, 181, 1311,
- 655, 425, 424, 436, 425, 436, 349, 349, 763, 763, 763, 1182, 673, 602, 424, 436, 381, 381, 763, 763,
- 1171, 602, 655, 350, 381, 418, 582, 349, 760 };
- }
-
- public final static char asb[] = Asb.asb;
-
- @Override
- public final int asb(int index) {
- return asb[index];
- }
-
- public interface Asr {
- public final static char asr[] = { 0, 30, 5, 32, 62, 28, 63, 33, 34, 35, 36, 37, 38, 39, 64, 40, 65, 31, 29, 6,
- 7, 68, 44, 45, 11, 10, 42, 43, 46, 52, 61, 27, 3, 4, 58, 59, 60, 41, 56, 50, 55, 14, 15, 17, 26, 16, 22,
- 20, 21, 23, 24, 19, 18, 25, 13, 49, 53, 51, 48, 57, 72, 12, 9, 8, 1, 2, 75, 74, 0, 14, 15, 16, 17, 48,
- 74, 18, 49, 50, 19, 20, 21, 75, 9, 51, 22, 23, 52, 53, 55, 68, 56, 57, 13, 24, 25, 26, 58, 59, 60, 41,
- 1, 2, 3, 44, 45, 11, 10, 42, 43, 8, 46, 4, 27, 61, 47, 12, 0, 127, 12, 0, 3, 29, 0, 129, 0, 122, 0, 127,
- 47, 129, 73, 76, 12, 78, 0, 74, 75, 68, 44, 45, 11, 10, 42, 43, 8, 46, 52, 61, 27, 3, 4, 9, 58, 59, 60,
- 41, 56, 50, 55, 14, 15, 17, 26, 16, 22, 20, 21, 23, 24, 19, 18, 25, 13, 49, 53, 51, 48, 57, 81, 1, 2,
- 72, 12, 0, 9, 8, 54, 1, 2, 4, 0, 5, 79, 78, 47, 72, 6, 7, 3, 71, 77, 80, 73, 12, 76, 98, 0, 12, 78, 76,
- 41, 0, 5, 77, 78, 98, 127, 81, 47, 6, 7, 129, 73, 14, 15, 16, 17, 48, 74, 18, 49, 50, 19, 20, 21, 75, 9,
- 51, 22, 23, 52, 53, 55, 68, 56, 57, 13, 24, 25, 26, 58, 59, 60, 2, 3, 44, 45, 11, 10, 42, 43, 8, 46, 4,
- 27, 61, 41, 1, 76, 12, 0, 9, 1, 2, 8, 4, 13, 67, 0, 32, 33, 34, 35, 36, 37, 9, 38, 39, 68, 79, 40, 31,
- 1, 2, 71, 3, 128, 126, 44, 45, 8, 4, 72, 28, 29, 30, 105, 99, 10, 106, 107, 42, 43, 84, 83, 66, 96, 97,
- 120, 121, 100, 101, 11, 102, 103, 104, 5, 12, 78, 98, 127, 76, 81, 47, 6, 7, 129, 108, 109, 110, 111,
- 112, 113, 114, 115, 116, 117, 118, 119, 80, 73, 77, 0, 48, 74, 49, 50, 75, 9, 51, 52, 53, 55, 68, 56,
- 57, 58, 59, 60, 41, 44, 45, 11, 10, 42, 43, 8, 46, 77, 61, 3, 4, 27, 13, 1, 2, 63, 64, 65, 14, 15, 17,
- 26, 16, 22, 20, 21, 23, 24, 19, 18, 25, 32, 38, 39, 34, 37, 36, 31, 33, 28, 29, 30, 5, 7, 6, 35, 40, 62,
- 0, 123, 124, 125, 78, 81, 9, 12, 3, 11, 10, 8, 47, 70, 67, 95, 69, 14, 15, 30, 5, 32, 16, 17, 62, 28,
- 18, 63, 33, 34, 19, 35, 36, 20, 21, 37, 38, 22, 23, 39, 64, 54, 40, 13, 65, 24, 25, 29, 26, 27, 6, 7, 1,
- 2, 4, 31, 0, 14, 15, 30, 5, 32, 16, 17, 28, 18, 33, 34, 19, 35, 36, 20, 21, 37, 9, 38, 22, 23, 39, 40,
- 24, 31, 25, 29, 26, 2, 71, 11, 10, 8, 4, 47, 6, 7, 1, 76, 12, 3, 0, 12, 73, 76, 1, 28, 0, 1, 2, 12, 73,
- 81, 0, 74, 75, 127, 12, 3, 13, 49, 53, 51, 48, 57, 17, 26, 16, 22, 20, 21, 23, 24, 19, 18, 25, 14, 15,
- 58, 59, 60, 41, 56, 50, 55, 8, 9, 4, 44, 45, 42, 43, 46, 52, 61, 27, 1, 2, 10, 11, 0, 12, 78, 72, 79, 0,
- 77, 80, 73, 1, 2, 0, 30, 28, 29, 68, 12, 77, 98, 80, 73, 76, 0, 30, 28, 29, 68, 79, 77, 78, 98, 76, 72,
- 3, 80, 6, 7, 5, 12, 47, 73, 0, 84, 83, 66, 96, 97, 100, 101, 11, 102, 103, 77, 108, 109, 110, 111, 112,
- 113, 114, 115, 116, 117, 118, 119, 73, 104, 80, 0, 5, 78, 98, 127, 47, 6, 7, 108, 109, 73, 12, 81, 0,
- 77, 96, 97, 66, 0, 4, 66, 6, 7, 5, 12, 78, 72, 0, 76, 95, 123, 124, 125, 54, 78, 122, 130, 81, 69, 79,
- 70, 67, 85, 87, 93, 91, 82, 89, 90, 92, 94, 72, 86, 88, 47, 12, 63, 62, 64, 65, 32, 38, 39, 34, 37, 36,
- 31, 33, 28, 29, 30, 5, 7, 6, 35, 40, 68, 74, 75, 49, 53, 51, 48, 57, 3, 17, 26, 16, 22, 20, 21, 23, 24,
- 19, 18, 25, 14, 15, 58, 59, 60, 41, 56, 50, 55, 44, 45, 11, 10, 42, 43, 46, 52, 61, 27, 13, 4, 9, 8, 2,
- 1, 0, 31, 1, 2, 4, 123, 124, 125, 0, 78, 98, 0, 74, 75, 44, 45, 11, 10, 42, 43, 8, 46, 52, 61, 27, 4, 9,
- 58, 59, 60, 41, 56, 50, 55, 14, 15, 17, 26, 16, 22, 20, 21, 23, 24, 19, 18, 25, 13, 49, 53, 51, 48, 57,
- 71, 1, 2, 3, 0, 14, 15, 30, 5, 32, 16, 17, 62, 28, 18, 63, 33, 34, 19, 35, 36, 20, 21, 37, 38, 22, 23,
- 39, 64, 40, 13, 65, 24, 31, 25, 29, 26, 1, 2, 4, 27, 6, 7, 98, 0, 14, 15, 30, 32, 16, 17, 62, 28, 18,
- 63, 33, 95, 34, 19, 35, 36, 20, 21, 37, 67, 38, 22, 23, 39, 64, 54, 40, 13, 65, 24, 70, 31, 25, 29, 26,
- 27, 69, 72, 5, 12, 11, 47, 6, 7, 8, 9, 2, 4, 3, 1, 10, 0, 76, 12, 84, 83, 0, 12, 73, 81, 80, 0, 12, 78,
- 73, 76, 3, 0, 78, 5, 71, 6, 7, 66, 12, 73, 47, 80, 3, 0, 12, 72, 73, 0, 41, 54, 0, 5, 12, 72, 6, 7, 80,
- 0, 14, 15, 16, 17, 48, 74, 18, 49, 50, 19, 20, 21, 75, 9, 51, 22, 23, 52, 53, 55, 68, 56, 57, 13, 24,
- 25, 26, 58, 59, 60, 1, 2, 3, 44, 45, 11, 10, 42, 43, 8, 46, 4, 27, 61, 69, 41, 0, 27, 75, 74, 42, 43,
- 106, 107, 102, 103, 8, 46, 80, 66, 113, 114, 110, 111, 112, 118, 117, 119, 84, 83, 115, 116, 100, 101,
- 96, 97, 104, 108, 44, 45, 99, 126, 13, 63, 62, 64, 65, 17, 26, 16, 22, 20, 21, 23, 24, 19, 18, 25, 14,
- 15, 32, 38, 39, 34, 37, 36, 31, 33, 28, 29, 30, 35, 40, 77, 73, 5, 11, 10, 6, 7, 3, 71, 1, 2, 4, 0, 54,
- 4, 78, 1, 2, 12, 72, 6, 7, 5, 0, 47, 12, 3, 9, 8, 11, 10, 4, 1, 2, 6, 7, 5, 78, 0, 14, 15, 16, 17, 48,
- 74, 18, 49, 50, 19, 20, 21, 75, 9, 51, 22, 23, 52, 53, 55, 68, 56, 57, 13, 24, 25, 26, 58, 59, 60, 41,
- 1, 2, 3, 44, 45, 11, 10, 42, 43, 46, 4, 27, 61, 78, 8, 0, 98, 9, 8, 80, 77, 5, 1, 2, 11, 10, 4, 6, 7,
- 71, 3, 76, 12, 73, 0, 8, 9, 3, 71, 10, 11, 98, 14, 15, 30, 5, 32, 16, 17, 62, 28, 18, 63, 33, 34, 19,
- 35, 36, 20, 21, 37, 38, 22, 23, 39, 64, 40, 13, 65, 24, 31, 25, 29, 26, 1, 2, 4, 27, 6, 7, 76, 12, 0, 4,
- 12, 72, 6, 7, 5, 1, 2, 0, 27, 13, 63, 62, 64, 65, 17, 26, 16, 22, 20, 21, 23, 24, 19, 18, 25, 14, 15,
- 79, 78, 98, 127, 81, 72, 129, 128, 126, 44, 45, 105, 99, 42, 43, 106, 107, 83, 84, 66, 77, 96, 97, 100,
- 101, 102, 103, 104, 108, 109, 80, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 73, 120, 121, 30,
- 32, 28, 33, 34, 35, 36, 37, 38, 39, 40, 31, 29, 47, 12, 76, 71, 8, 9, 3, 11, 1, 2, 4, 6, 7, 5, 10, 0,
- 17, 62, 28, 18, 63, 33, 19, 35, 20, 21, 37, 38, 22, 23, 64, 40, 13, 65, 24, 31, 25, 29, 26, 16, 32, 30,
- 27, 15, 14, 12, 3, 11, 47, 70, 67, 95, 34, 39, 36, 69, 66, 4, 5, 10, 6, 7, 9, 8, 1, 2, 54, 0, 4, 12, 78,
- 72, 6, 7, 5, 0 };
- }
-
- public final static char asr[] = Asr.asr;
-
- @Override
- public final int asr(int index) {
- return asr[index];
- }
-
- public interface Nasb {
- public final static char nasb[] = { 0, 198, 13, 83, 13, 13, 13, 13, 13, 13, 87, 13, 13, 13, 205, 13, 31, 175,
- 263, 83, 83, 83, 83, 159, 83, 83, 83, 83, 83, 83, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 83, 13,
- 83, 250, 342, 342, 342, 342, 263, 227, 261, 261, 75, 5, 142, 97, 13, 13, 261, 163, 97, 97, 97, 194, 1,
- 35, 83, 42, 71, 13, 13, 175, 13, 13, 104, 104, 227, 250, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83,
- 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 236, 83, 97, 13, 13, 13,
- 13, 89, 97, 48, 48, 312, 286, 13, 13, 13, 287, 179, 287, 191, 287, 191, 287, 11, 263, 287, 279, 83, 142,
- 142, 48, 13, 56, 312, 137, 193, 46, 46, 13, 13, 13, 11, 263, 83, 240, 142, 342, 209, 31, 65, 97, 30,
- 263, 30, 97, 142, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 202, 12, 13, 212, 194, 170, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 334, 295, 263,
- 13, 97, 99, 13, 261, 201, 87, 295, 113, 87, 295, 263, 12, 13, 175, 13, 261, 179, 332, 142, 13, 97, 310,
- 261, 263, 71, 13, 246, 13, 146, 13, 21, 13, 13, 13, 13, 247, 13, 164, 19, 21, 21, 220, 38, 164, 131,
- 110, 83, 342, 261, 126, 97, 13, 12, 61, 263, 230, 71, 83, 83, 250, 250, 250, 250, 13, 13, 286, 287, 287,
- 287, 287, 297, 11, 13, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83,
- 250, 83, 48, 191, 191, 191, 133, 96, 13, 97, 320, 202, 191, 191, 13, 338, 179, 261, 338, 70, 202, 97,
- 36, 261, 97, 13, 254, 13, 329, 69, 202, 13, 247, 13, 13, 247, 266, 266, 327, 13, 266, 21, 21, 261, 184,
- 256, 263, 13, 13, 13, 87, 87, 261, 97, 23, 334, 65, 13, 163, 202, 97, 97, 97, 97, 227, 227, 263, 83, 13,
- 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 261, 97, 13, 97, 36, 263, 21, 13, 233, 13, 13, 131, 219,
- 320, 191, 191, 261, 295, 261, 70, 261, 164, 12, 202, 61, 81, 261, 83, 13, 13, 46, 46, 253, 312, 329, 97,
- 202, 247, 83, 247, 97, 256, 97, 316, 261, 13, 97, 261, 92, 21, 191, 312, 144, 13, 27, 289, 263, 97, 12,
- 71, 261, 129, 87, 338, 338, 44, 261, 118, 13, 250, 334, 231, 13, 13, 97, 97, 70, 97, 83, 191, 124, 133,
- 97, 83, 97, 97, 71, 179, 191, 295, 13, 13, 184, 261, 261, 116, 116, 202, 164, 73, 13, 13, 36, 124, 83,
- 83, 310, 25, 261, 13, 247, 13, 247, 21, 185, 250, 247, 92, 181, 120, 295, 27, 209, 81, 185, 191, 276,
- 329, 97, 13, 13, 338, 234, 31, 135, 13, 23, 227, 83, 142, 231, 202, 261, 124, 97, 31, 261, 179, 14, 261,
- 21, 83, 13, 40, 13, 191, 289, 116, 116, 166, 73, 36, 83, 164, 102, 80, 261, 290, 124, 83, 13, 270, 21,
- 289, 97, 181, 13, 338, 13, 97, 295, 97, 129, 21, 13, 129, 234, 21, 21, 342, 118, 97, 142, 124, 83, 21,
- 305, 261, 13, 13, 13, 14, 273, 329, 185, 83, 83, 295, 191, 289, 13, 13, 87, 94, 338, 36, 102, 13, 78,
- 261, 247, 97, 21, 261, 120, 12, 227, 261, 13, 97, 21, 97, 97, 261, 36, 14, 305, 14, 14, 14, 178, 13, 13,
- 13, 157, 157, 191, 295, 153, 338, 87, 87, 12, 13, 78, 247, 44, 97, 124, 97, 110, 110, 254, 36, 14, 261,
- 329, 14, 261, 13, 13, 12, 338, 338, 341, 135, 261, 305, 329, 342, 342, 12, 12, 97, 78, 36, 13, 342, 13,
- 157, 13, 30 };
- }
-
- public final static char nasb[] = Nasb.nasb;
-
- @Override
- public final int nasb(int index) {
- return nasb[index];
- }
-
- public interface Nasr {
- public final static char nasr[] = { 0, 3, 13, 10, 9, 149, 204, 148, 121, 147, 146, 4, 2, 0, 5, 52, 90, 100, 0,
- 5, 44, 47, 0, 172, 0, 108, 107, 37, 73, 82, 4, 10, 9, 2, 0, 5, 99, 0, 234, 0, 222, 0, 206, 0, 186, 0,
- 98, 0, 4, 10, 9, 2, 13, 138, 5, 0, 4, 10, 9, 2, 13, 117, 43, 116, 0, 84, 167, 166, 0, 141, 2, 84, 0,
- 178, 0, 5, 226, 0, 156, 0, 99, 117, 43, 10, 9, 2, 13, 4, 0, 141, 84, 0, 184, 0, 224, 0, 202, 32, 0, 233,
- 32, 0, 187, 0, 4, 2, 9, 10, 168, 0, 43, 63, 0, 43, 1, 0, 131, 0, 170, 0, 194, 4, 193, 0, 61, 0, 5, 208,
- 0, 164, 0, 181, 0, 200, 0, 140, 0, 13, 2, 9, 10, 4, 103, 0, 215, 0, 13, 2, 9, 10, 4, 236, 0, 4, 123,
- 190, 0, 129, 0, 4, 10, 9, 13, 3, 1, 0, 4, 123, 223, 0, 13, 2, 9, 10, 4, 64, 44, 63, 5, 43, 0, 43, 185,
- 0, 105, 5, 4, 10, 9, 2, 73, 37, 0, 32, 107, 108, 5, 0, 5, 205, 0, 53, 2, 3, 0, 5, 64, 227, 0, 5, 33, 0,
- 149, 228, 148, 121, 147, 146, 0, 47, 4, 2, 9, 10, 5, 183, 0, 5, 111, 0, 2, 143, 0, 37, 125, 0, 5, 44,
- 141, 0, 5, 52, 43, 44, 210, 0, 99, 43, 52, 91, 5, 44, 0, 32, 108, 107, 73, 4, 2, 9, 10, 5, 0, 2, 53, 0,
- 5, 64, 124, 0, 5, 209, 0, 37, 1, 0, 37, 84, 0, 2, 4, 121, 118, 119, 120, 165, 13, 78, 0, 5, 4, 10, 9, 2,
- 73, 27, 0, 121, 78, 13, 118, 119, 120, 198, 0, 144, 5, 52, 90, 0, 31, 5, 4, 37, 105, 0, 64, 5, 211, 0,
- 5, 52, 90, 123, 50, 4, 0, 44, 212, 31, 5, 0, 108, 107, 37, 4, 82, 0, 2, 81, 0, 32, 5, 64, 0 };
- }
-
- public final static char nasr[] = Nasr.nasr;
-
- @Override
- public final int nasr(int index) {
- return nasr[index];
- }
-
- public interface TerminalIndex {
- public final static char terminalIndex[] = { 0, 118, 119, 2, 31, 51, 129, 130, 13, 84, 10, 9, 120, 105, 48, 49,
- 53, 57, 65, 73, 79, 80, 91, 92, 107, 110, 112, 127, 59, 111, 50, 109, 52, 69, 71, 75, 78, 81, 88, 94,
- 103, 117, 11, 12, 7, 8, 14, 125, 60, 66, 72, 89, 93, 95, 98, 99, 102, 104, 114, 115, 116, 128, 58, 68,
- 96, 106, 19, 82, 100, 131, 108, 1, 126, 44, 63, 83, 123, 20, 30, 101, 33, 124, 113, 17, 18, 54, 55, 61,
- 62, 64, 74, 76, 77, 90, 97, 70, 21, 22, 32, 6, 23, 24, 25, 26, 27, 4, 15, 16, 28, 29, 34, 35, 36, 37,
- 38, 39, 40, 41, 42, 43, 45, 46, 56, 85, 86, 87, 5, 122, 3, 132, 67, 121 };
- }
-
- public final static char terminalIndex[] = TerminalIndex.terminalIndex;
-
- @Override
- public final int terminalIndex(int index) {
- return terminalIndex[index];
- }
-
- public interface NonterminalIndex {
- public final static char nonterminalIndex[] = { 0, 139, 144, 145, 0, 0, 143, 0, 0, 247, 253, 142, 0, 152, 0,
- 141, 0, 0, 151, 157, 0, 0, 158, 167, 168, 169, 170, 265, 0, 0, 0, 197, 135, 160, 0, 171, 172, 266, 173,
- 174, 150, 175, 176, 138, 140, 177, 0, 137, 178, 147, 194, 0, 0, 146, 179, 0, 0, 0, 0, 0, 0, 204, 180,
- 189, 161, 181, 0, 221, 0, 0, 182, 183, 218, 222, 184, 185, 0, 186, 203, 0, 0, 0, 164, 192, 0, 154, 0, 0,
- 0, 0, 0, 188, 0, 0, 0, 0, 0, 0, 223, 136, 195, 0, 0, 134, 166, 219, 225, 226, 227, 0, 229, 0, 155, 0, 0,
- 224, 235, 0, 206, 207, 208, 210, 237, 238, 191, 213, 0, 0, 228, 0, 0, 0, 242, 0, 244, 0, 258, 0, 261, 0,
- 262, 0, 0, 156, 196, 198, 199, 200, 201, 205, 209, 212, 0, 215, 0, 216, 0, 231, 234, 0, 256, 0, 257, 0,
- 270, 273, 148, 149, 153, 0, 0, 163, 165, 0, 187, 0, 202, 0, 0, 0, 211, 0, 214, 220, 0, 232, 233, 0, 0,
- 239, 246, 0, 250, 251, 252, 255, 0, 0, 259, 0, 267, 0, 269, 0, 272, 133, 0, 159, 162, 0, 190, 0, 193, 0,
- 0, 217, 230, 236, 0, 0, 240, 241, 243, 245, 0, 248, 249, 254, 260, 263, 264, 0, 0, 268, 0, 0, 271, 0, 0,
- 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static char nonterminalIndex[] = NonterminalIndex.nonterminalIndex;
-
- @Override
- public final int nonterminalIndex(int index) {
- return nonterminalIndex[index];
- }
-
- public interface ScopePrefix {
- public final static char scopePrefix[] = { 261, 425, 719, 738, 414, 443, 670, 686, 697, 708, 497, 369, 383, 400,
- 461, 129, 394, 517, 555, 269, 727, 621, 94, 107, 138, 158, 167, 172, 177, 232, 297, 456, 467, 94, 589,
- 67, 246, 375, 389, 645, 114, 246, 507, 94, 746, 114, 319, 350, 7, 39, 63, 75, 86, 101, 148, 163, 193,
- 101, 486, 490, 573, 614, 666, 756, 760, 764, 184, 79, 184, 535, 551, 564, 582, 601, 658, 203, 203, 331,
- 421, 564, 677, 693, 704, 715, 309, 632, 19, 31, 60, 143, 143, 258, 324, 13, 143, 345, 366, 13, 13, 143,
- 494, 611, 618, 258, 143, 779, 1, 13, 54, 197, 472, 539, 579, 1, 594, 143, 212, 406, 472, 212, 212, 433,
- 526, 279, 433, 24, 24, 45, 45, 191, 45, 45, 45, 45, 577, 768, 775, 24, 24, 49, 340, 768, 775, 152, 545,
- 239, 191, 340, 191, 355 };
- }
-
- public final static char scopePrefix[] = ScopePrefix.scopePrefix;
-
- @Override
- public final int scopePrefix(int index) {
- return scopePrefix[index];
- }
-
- public interface ScopeSuffix {
- public final static char scopeSuffix[] = { 90, 237, 43, 43, 237, 237, 43, 43, 43, 43, 504, 237, 182, 237, 99,
- 135, 380, 523, 561, 275, 154, 627, 99, 112, 112, 112, 146, 146, 182, 237, 302, 105, 105, 99, 43, 72,
- 251, 380, 188, 650, 125, 254, 512, 733, 751, 119, 313, 313, 11, 43, 43, 43, 90, 105, 43, 146, 182, 105,
- 182, 182, 237, 348, 43, 43, 43, 348, 777, 83, 188, 504, 504, 504, 586, 605, 650, 207, 221, 335, 409,
- 568, 681, 681, 681, 681, 313, 636, 22, 22, 43, 146, 146, 43, 43, 327, 329, 348, 43, 11, 11, 329, 182,
- 43, 348, 43, 643, 43, 4, 16, 57, 200, 475, 542, 57, 608, 597, 662, 207, 409, 653, 215, 226, 450, 529,
- 282, 436, 29, 37, 47, 92, 182, 478, 480, 482, 484, 182, 770, 770, 26, 34, 51, 342, 772, 772, 154, 547,
- 241, 304, 335, 289, 357 };
- }
-
- public final static char scopeSuffix[] = ScopeSuffix.scopeSuffix;
-
- @Override
- public final int scopeSuffix(int index) {
- return scopeSuffix[index];
- }
-
- public interface ScopeLhs {
- public final static char scopeLhs[] = { 50, 120, 18, 18, 89, 120, 18, 18, 18, 18, 94, 102, 51, 89, 119, 87, 58,
- 94, 93, 50, 18, 20, 198, 3, 7, 8, 190, 190, 189, 118, 50, 119, 119, 150, 54, 28, 116, 59, 51, 168, 161,
- 116, 94, 18, 18, 161, 109, 66, 83, 165, 199, 163, 97, 198, 193, 190, 189, 150, 213, 56, 63, 172, 18, 18,
- 18, 18, 12, 140, 189, 94, 93, 93, 76, 46, 168, 122, 122, 82, 89, 93, 18, 18, 18, 18, 109, 20, 132, 155,
- 17, 194, 190, 215, 107, 115, 68, 98, 67, 183, 83, 150, 95, 173, 172, 206, 168, 17, 18, 83, 92, 189, 150,
- 124, 92, 22, 54, 168, 122, 89, 168, 122, 122, 120, 94, 50, 120, 132, 155, 204, 228, 189, 176, 148, 147,
- 146, 86, 166, 53, 132, 155, 236, 82, 166, 53, 193, 124, 118, 50, 82, 50, 66 };
- }
-
- public final static char scopeLhs[] = ScopeLhs.scopeLhs;
-
- @Override
- public final int scopeLhs(int index) {
- return scopeLhs[index];
- }
-
- public interface ScopeLa {
- public final static char scopeLa[] = { 122, 81, 76, 76, 81, 81, 76, 76, 76, 76, 76, 81, 47, 81, 1, 77, 1, 76,
- 130, 72, 3, 76, 1, 77, 77, 77, 1, 1, 47, 81, 72, 1, 1, 1, 76, 76, 81, 1, 1, 4, 77, 73, 47, 1, 1, 77, 76,
- 76, 1, 76, 76, 76, 122, 1, 76, 1, 47, 1, 47, 47, 81, 127, 76, 76, 76, 127, 1, 76, 1, 76, 76, 76, 78, 78,
- 4, 1, 1, 10, 72, 76, 77, 77, 77, 77, 76, 3, 6, 6, 76, 1, 1, 76, 76, 3, 1, 127, 76, 1, 1, 1, 47, 76, 127,
- 76, 8, 76, 76, 6, 78, 1, 54, 80, 78, 76, 77, 1, 1, 72, 54, 1, 1, 72, 82, 79, 1, 1, 1, 27, 1, 47, 1, 63,
- 62, 62, 47, 4, 4, 1, 1, 98, 11, 4, 4, 3, 1, 72, 1, 10, 1, 3 };
- }
-
- public final static char scopeLa[] = ScopeLa.scopeLa;
-
- @Override
- public final int scopeLa(int index) {
- return scopeLa[index];
- }
-
- public interface ScopeStateSet {
- public final static char scopeStateSet[] = { 101, 181, 377, 377, 40, 181, 377, 377, 377, 377, 114, 42, 101, 40,
- 181, 40, 103, 114, 114, 101, 377, 377, 81, 302, 348, 348, 9, 9, 37, 181, 101, 181, 181, 177, 134, 187,
- 127, 103, 101, 159, 5, 127, 114, 377, 377, 5, 168, 57, 63, 177, 54, 1, 114, 81, 12, 9, 37, 177, 99, 103,
- 280, 25, 377, 377, 377, 377, 352, 18, 37, 114, 114, 114, 142, 443, 159, 181, 181, 239, 40, 114, 377,
- 377, 377, 377, 168, 377, 73, 28, 377, 12, 9, 23, 168, 170, 57, 164, 57, 78, 63, 177, 114, 15, 25, 162,
- 159, 377, 377, 63, 114, 37, 177, 32, 114, 382, 134, 159, 181, 40, 159, 181, 181, 181, 114, 101, 181, 73,
- 28, 184, 82, 37, 184, 183, 183, 183, 87, 84, 255, 73, 28, 476, 239, 84, 255, 12, 32, 181, 101, 239, 101,
- 57 };
- }
-
- public final static char scopeStateSet[] = ScopeStateSet.scopeStateSet;
-
- @Override
- public final int scopeStateSet(int index) {
- return scopeStateSet[index];
- }
-
- public interface ScopeRhs {
- public final static char scopeRhs[] = { 0, 216, 3, 0, 135, 235, 0, 168, 236, 136, 0, 218, 0, 236, 136, 0, 266,
- 218, 0, 263, 168, 0, 266, 0, 168, 0, 242, 266, 0, 242, 0, 214, 168, 0, 192, 266, 0, 192, 0, 216, 3, 27,
- 0, 135, 0, 280, 0, 273, 0, 235, 0, 32, 166, 0, 367, 86, 0, 30, 188, 0, 194, 3, 0, 363, 3, 331, 0, 362,
- 3, 3, 6, 0, 135, 135, 0, 361, 3, 68, 0, 360, 3, 122, 0, 135, 189, 0, 136, 194, 79, 0, 233, 0, 259, 0,
- 215, 184, 135, 13, 0, 145, 0, 184, 135, 13, 0, 144, 0, 290, 136, 66, 133, 0, 20, 0, 326, 136, 66, 54, 0,
- 20, 58, 0, 33, 141, 0, 20, 58, 0, 0, 326, 136, 66, 54, 221, 0, 20, 195, 0, 290, 136, 66, 141, 0, 212,
- 135, 0, 150, 0, 242, 3, 325, 0, 325, 0, 2, 0, 135, 0, 290, 136, 66, 140, 0, 212, 135, 254, 0, 212, 135,
- 31, 254, 0, 212, 135, 355, 31, 0, 137, 215, 184, 135, 0, 137, 0, 215, 184, 135, 0, 143, 137, 0, 183, 0,
- 351, 136, 183, 0, 136, 183, 0, 240, 137, 0, 184, 350, 252, 0, 145, 0, 0, 0, 0, 350, 252, 0, 146, 145, 0,
- 0, 0, 0, 144, 0, 0, 0, 0, 146, 144, 0, 0, 0, 0, 349, 136, 174, 253, 0, 136, 0, 253, 0, 138, 0, 0, 136,
- 0, 348, 136, 174, 248, 0, 136, 0, 0, 44, 136, 0, 0, 164, 3, 0, 136, 316, 315, 136, 79, 314, 183, 0, 315,
- 136, 79, 314, 183, 0, 232, 0, 233, 0, 314, 183, 0, 101, 0, 0, 232, 0, 233, 0, 220, 101, 0, 0, 232, 0,
- 233, 0, 315, 136, 314, 183, 0, 232, 0, 220, 0, 0, 232, 0, 257, 136, 3, 0, 135, 0, 0, 0, 0, 0, 257, 136,
- 3, 238, 0, 246, 3, 0, 225, 0, 155, 0, 200, 184, 135, 0, 10, 0, 0, 0, 0, 200, 0, 9, 0, 0, 235, 71, 0,
- 134, 0, 257, 136, 3, 198, 0, 198, 0, 2, 0, 0, 135, 0, 0, 0, 0, 0, 214, 3, 0, 273, 136, 174, 41, 34, 0,
- 212, 135, 67, 70, 0, 213, 137, 0, 137, 212, 135, 312, 70, 0, 212, 135, 312, 70, 0, 212, 135, 80, 132,
- 67, 0, 273, 136, 174, 283, 67, 0, 283, 67, 0, 138, 0, 0, 136, 0, 273, 136, 174, 283, 256, 67, 0, 283,
- 256, 67, 0, 309, 310, 136, 174, 132, 345, 63, 0, 345, 63, 0, 139, 138, 0, 0, 0, 136, 0, 309, 310, 136,
- 174, 345, 63, 0, 138, 0, 0, 0, 136, 0, 212, 135, 308, 63, 0, 215, 212, 135, 308, 252, 0, 212, 135, 308,
- 252, 0, 184, 135, 0, 98, 145, 0, 209, 0, 208, 0, 207, 0, 206, 0, 306, 136, 162, 0, 306, 136, 183, 0,
- 175, 93, 0, 340, 178, 342, 343, 3, 90, 0, 135, 188, 0, 342, 343, 3, 90, 0, 137, 0, 135, 188, 0, 175, 3,
- 82, 222, 89, 0, 135, 137, 0, 222, 89, 0, 113, 2, 140, 135, 137, 0, 255, 3, 82, 0, 214, 195, 0, 33, 178,
- 0, 195, 0, 192, 33, 178, 0, 255, 3, 94, 0, 222, 163, 255, 3, 92, 0, 67, 188, 0, 255, 3, 92, 0, 135, 188,
- 67, 188, 0, 341, 136, 174, 0, 175, 0, 235, 86, 0, 175, 109, 206, 0, 30, 186, 0, 157, 77, 185, 3, 0, 185,
- 3, 0, 20, 170, 135, 0, 175, 109, 176, 0, 30, 178, 0, 135, 158, 0, 242, 3, 0, 235, 71, 303, 0, 175, 71,
- 0, 216, 3, 337, 75, 135, 0, 135, 0, 0, 0, 0, 337, 75, 135, 0, 2, 154, 135, 0, 0, 0, 0, 156, 0, 134, 54,
- 184, 135, 0, 31, 156, 0, 98, 145, 31, 156, 0, 243, 212, 135, 0, 155, 31, 156, 0, 175, 3, 57, 0, 175, 3,
- 77, 216, 66, 48, 0, 216, 66, 48, 0, 20, 2, 140, 135, 0, 175, 3, 77, 216, 66, 51, 0, 216, 66, 51, 0, 175,
- 3, 77, 216, 66, 53, 0, 216, 66, 53, 0, 175, 3, 77, 216, 66, 49, 0, 216, 66, 49, 0, 242, 3, 134, 215,
- 184, 135, 13, 0, 134, 215, 184, 135, 13, 0, 145, 2, 0, 135, 0, 242, 3, 133, 272, 184, 135, 13, 0, 272,
- 184, 135, 13, 0, 144, 2, 0, 135, 0, 242, 3, 144, 0, 242, 3, 149, 0, 175, 71, 149, 0, 298, 0, 31, 0, 31,
- 148, 0, 180, 0, 143, 0, 175, 3, 0 };
- }
-
- public final static char scopeRhs[] = ScopeRhs.scopeRhs;
-
- @Override
- public final int scopeRhs(int index) {
- return scopeRhs[index];
- }
-
- public interface ScopeState {
- public final static char scopeState[] = { 0, 1722, 1344, 1184, 0, 7439, 4948, 4903, 0, 2415, 3374, 0, 2210,
- 1543, 0, 1941, 1510, 0, 2681, 981, 2322, 813, 0, 2371, 0, 1614, 731, 0, 4864, 4544, 3972, 0, 7078, 6882,
- 6204, 5735, 0, 7311, 7110, 0, 7311, 7110, 6878, 7170, 7154, 7093, 7077, 7016, 6806, 7000, 6939, 6732,
- 722, 0, 844, 2209, 0, 4993, 5269, 733, 4105, 4843, 7273, 6335, 6559, 4864, 4544, 6475, 6951, 5564, 5742,
- 3972, 5520, 5045, 4961, 4877, 4261, 0, 4843, 7273, 0, 6725, 4778, 0, 1499, 995, 0, 6329, 6262, 6195,
- 6128, 6061, 5994, 5927, 5860, 5793, 5726, 5328, 5261, 7218, 0, 7311, 7110, 6878, 7170, 7154, 7093, 7077,
- 7016, 6806, 7000, 6939, 6732, 722, 6329, 6262, 6195, 6128, 6061, 5994, 5927, 5860, 5793, 5726, 5328,
- 5261, 0, 1234, 1300, 1179, 3510, 721, 877, 0, 3943, 4232, 4515, 4401, 4809, 4649, 4622, 3519, 3392,
- 1094, 3314, 3236, 3158, 3080, 3002, 2924, 2846, 2768, 2690, 2612, 2533, 1016, 926, 848, 0, 1570, 1401,
- 0, 784, 0, 2172, 1423, 1059, 814, 733, 7297, 6335, 5564, 5520, 4687, 3986, 3450, 0, 6434, 671, 4019, 0,
- 6725, 6434, 4778, 671, 4019, 0, 3186, 5834, 5045, 5616, 3108, 4961, 6368, 3030, 6559, 4993, 4877, 5340,
- 6382, 5302, 4864, 2952, 4544, 2874, 4309, 7536, 6475, 798, 2796, 7515, 7511, 4955, 7323, 7008, 6945,
- 6873, 4679, 6725, 7208, 6983, 6428, 6271, 5577, 2718, 2640, 2561, 4778, 6434, 6137, 6070, 5767, 5581,
- 4683, 5008, 4007, 4043, 671, 4019, 5269, 733, 7263, 4261, 6002, 4105, 5935, 5868, 5585, 3972, 6743,
- 7297, 6203, 5801, 5734, 0, 7527, 7522, 7507, 7465, 7445, 7440, 7435, 7423, 7411, 7532, 6580, 7380, 7369,
- 7335, 6141, 6074, 6007, 4026, 5940, 7306, 6728, 6364, 5873, 5599, 0, 2018, 1969, 6329, 6262, 3831, 3830,
- 6195, 6128, 6061, 5994, 5927, 5860, 5793, 1451, 5726, 5328, 6855, 3519, 5261, 6764, 723, 0, 3380, 3302,
- 7527, 7522, 3224, 2599, 7507, 2427, 7465, 7445, 1815, 7440, 1766, 7435, 7423, 4050, 7411, 1712, 1617,
- 7532, 6580, 1565, 1445, 7380, 1379, 1261, 7369, 7335, 1206, 4919, 6141, 2423, 6074, 794, 6007, 4026,
- 5940, 1011, 7306, 6728, 6434, 6364, 914, 4019, 5873, 5599, 4274, 4143, 1283, 1066, 1045, 6335, 5045,
- 4961, 6559, 4993, 4877, 4864, 5269, 4544, 733, 4261, 6475, 4105, 6951, 5564, 4843, 5742, 3972, 5520,
- 7273, 3584, 3568, 1570, 1401, 6703, 6681, 6659, 6637, 5392, 3392, 5533, 1094, 3943, 3314, 3236, 3158,
- 3080, 3002, 2924, 2846, 2768, 2690, 2612, 2533, 4232, 4515, 4401, 4809, 4649, 4622, 5493, 5466, 5428,
- 6594, 3519, 877, 1016, 926, 848, 3896, 4190, 4476, 4361, 4751, 4721, 4583, 5700, 5674, 5234, 5207, 5180,
- 5150, 5123, 4428, 2719, 2641, 2562, 1123, 955, 6515, 4304, 3421, 3343, 3265, 3187, 3109, 3031, 2953,
- 2875, 2797, 3844, 3797, 1636, 3470, 1234, 3745, 3698, 3646, 1300, 1587, 1516, 1352, 3599, 1467, 1179,
- 2484, 2435, 2328, 2279, 2230, 2181, 2132, 2083, 2034, 1985, 1936, 1887, 1838, 1788, 671, 1739, 1685,
- 1418, 2375, 0 };
- }
-
- public final static char scopeState[] = ScopeState.scopeState;
-
- @Override
- public final int scopeState(int index) {
- return scopeState[index];
- }
-
- public interface InSymb {
- public final static char inSymb[] = { 0, 0, 336, 136, 305, 57, 48, 51, 53, 49, 13, 144, 133, 140, 9, 141, 4, 3,
- 135, 27, 61, 52, 46, 8, 43, 42, 10, 11, 45, 44, 149, 154, 156, 155, 166, 157, 169, 167, 172, 170, 173,
- 68, 176, 73, 3, 66, 66, 66, 66, 135, 3, 66, 66, 195, 136, 71, 3, 74, 75, 66, 8, 194, 216, 175, 195, 136,
- 174, 74, 75, 184, 180, 133, 3, 132, 134, 126, 128, 3, 71, 99, 105, 43, 42, 107, 106, 10, 121, 120, 97,
- 96, 77, 66, 83, 84, 11, 101, 100, 103, 102, 104, 119, 118, 117, 116, 115, 114, 113, 112, 111, 110, 80,
- 109, 108, 175, 216, 216, 216, 216, 184, 242, 136, 136, 136, 276, 6, 7, 5, 277, 253, 278, 252, 279, 63,
- 307, 13, 135, 335, 280, 27, 71, 71, 136, 133, 163, 136, 71, 3, 239, 238, 144, 134, 133, 13, 135, 27,
- 136, 71, 337, 3, 215, 4, 216, 54, 135, 54, 242, 175, 155, 155, 154, 154, 154, 157, 157, 157, 157, 157,
- 157, 156, 156, 167, 166, 166, 170, 169, 172, 272, 175, 173, 77, 77, 77, 77, 215, 272, 290, 136, 269, 3,
- 185, 157, 196, 193, 202, 201, 205, 206, 293, 290, 236, 168, 135, 200, 3, 3, 3, 174, 350, 308, 168, 345,
- 308, 168, 135, 212, 184, 3, 290, 174, 248, 236, 235, 176, 246, 136, 3, 135, 184, 150, 341, 88, 86, 1,
- 175, 12, 94, 92, 90, 89, 82, 91, 93, 87, 85, 183, 5, 67, 70, 79, 234, 3, 338, 195, 164, 298, 215, 163,
- 135, 212, 184, 78, 78, 3, 3, 3, 3, 134, 133, 276, 277, 278, 279, 359, 280, 13, 185, 97, 96, 66, 11, 101,
- 100, 103, 102, 104, 119, 118, 117, 116, 115, 114, 113, 112, 111, 110, 80, 109, 108, 73, 184, 11, 10, 3,
- 364, 1, 41, 136, 184, 260, 134, 133, 135, 132, 174, 135, 184, 54, 216, 136, 174, 257, 258, 162, 259,
- 136, 184, 54, 12, 78, 367, 235, 78, 3, 3, 3, 222, 3, 132, 175, 314, 136, 3, 135, 198, 365, 132, 67, 312,
- 194, 216, 136, 136, 4, 243, 8, 54, 175, 175, 175, 175, 3, 3, 135, 77, 157, 157, 157, 193, 185, 185, 201,
- 196, 202, 175, 205, 200, 200, 362, 331, 3, 349, 135, 181, 254, 67, 54, 221, 70, 183, 352, 134, 133, 261,
- 168, 261, 212, 174, 136, 212, 215, 163, 136, 163, 80, 246, 214, 204, 198, 3, 136, 73, 257, 215, 78, 98,
- 78, 255, 195, 255, 343, 162, 82, 255, 79, 136, 306, 214, 136, 286, 313, 236, 168, 135, 214, 212, 184, 3,
- 3, 80, 135, 135, 136, 163, 300, 303, 71, 213, 4, 132, 134, 242, 242, 184, 157, 78, 10, 136, 73, 163, 3,
- 41, 1, 184, 283, 256, 168, 66, 54, 136, 261, 261, 136, 136, 215, 136, 310, 132, 311, 348, 136, 80, 80,
- 136, 236, 163, 134, 163, 214, 163, 342, 136, 3, 163, 136, 315, 78, 168, 236, 3, 80, 73, 214, 184, 136,
- 366, 41, 295, 135, 212, 212, 317, 122, 136, 3, 71, 175, 4, 215, 200, 192, 363, 215, 174, 283, 77, 66,
- 351, 78, 265, 214, 133, 263, 168, 136, 136, 78, 310, 309, 80, 73, 230, 73, 244, 168, 136, 80, 222, 178,
- 306, 168, 175, 315, 324, 135, 325, 164, 168, 257, 78, 163, 3, 73, 212, 256, 137, 3, 300, 242, 235, 136,
- 73, 137, 136, 174, 36, 39, 34, 54, 67, 136, 73, 78, 80, 168, 263, 168, 158, 354, 254, 31, 135, 309, 230,
- 12, 136, 244, 130, 340, 163, 316, 73, 212, 3, 163, 10, 1, 256, 98, 360, 195, 273, 275, 136, 54, 54, 54,
- 41, 132, 326, 54, 13, 62, 263, 168, 73, 135, 31, 355, 212, 68, 136, 163, 136, 242, 136, 1, 163, 163,
- 136, 273, 136, 174, 73, 77, 66, 260, 260, 212, 135, 135, 3, 317, 244, 136, 136, 80, 80, 212, 212, 361,
- 136, 273, 326, 73, 77, 62, 260, 80 };
- }
-
- public final static char inSymb[] = InSymb.inSymb;
-
- @Override
- public final int inSymb(int index) {
- return inSymb[index];
- }
-
- public interface Name {
- public final static String name[] = { "", "[", "(", ".", ".*", "->", "->*", "++", "--", "&", "*", "+", "-", "~",
- "!", "/", "%", ">>", "<<", "<", ">", "<=", ">=", "==", "!=", "^", "|", "&&", "||", "?", ":", "::",
- "...", "=", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", ",", ">?", "<?", "$empty",
- "_Complex", "_Imaginary", "restrict", "asm", "auto", "bool", "break", "case", "catch", "char", "class",
- "const", "const_cast", "continue", "default", "delete", "do", "double", "dynamic_cast", "else", "enum",
- "explicit", "export", "extern", "false", "float", "for", "friend", "goto", "if", "inline", "int",
- "long", "mutable", "namespace", "new", "operator", "private", "protected", "public", "register",
- "reinterpret_cast", "return", "short", "signed", "sizeof", "static", "static_cast", "struct", "switch",
- "template", "this", "throw", "try", "true", "typedef", "typeid", "typename", "union", "unsigned",
- "using", "virtual", "void", "volatile", "wchar_t", "while", "integer", "floating", "charconst",
- "stringlit", "identifier", "Completion", "EndOfCompletion", "Invalid", "RightBracket", "RightParen",
- "RightBrace", "SemiColon", "LeftBrace", "typeof", "__alignof__", "__attribute__", "__declspec",
- "ERROR_TOKEN", "EOF_TOKEN", "no_sizeof_type_id_start", "]", ")", "}", ";", "{", "identifier_token",
- "expression", "id_expression", "qualified_or_unqualified_name", "unqualified_id_name",
- "identifier_name", "template_id_name", "nested_name_specifier", "class_or_namespace_name",
- "nested_name_specifier_with_tem" + "plate", "class_or_namespace_name_with_t" + "emplate", "class_name",
- "postfix_expression", "simple_type_specifier", "pseudo_destructor_name", "type_id", "type_name",
- "destructor_type_name", "unary_expression", "cast_expression", "new_type_id", "expression_list",
- "type_specifier_seq", "new_declarator", "new_pointer_operators", "ptr_operator",
- "new_array_expressions", "constant_expression", "pm_expression", "multiplicative_expression",
- "additive_expression", "shift_expression", "relational_expression", "equality_expression",
- "and_expression", "exclusive_or_expression", "inclusive_or_expression", "logical_and_expression",
- "logical_or_expression", "assignment_expression", "relational_expression_inTempla" + "te",
- "equality_expression_inTemplate", "and_expression_inTemplate",
- "exclusive_or_expression_inTemp" + "late", "inclusive_or_expression_inTemp" + "late",
- "logical_and_expression_inTempl" + "ate", "logical_or_expression_inTempla" + "te",
- "assignment_expression_inTempla" + "te", "expression_list_actual", "statement", "compound_statement",
- "statement_seq", "condition", "declarator", "for_init_statement", "function_definition", "declaration",
- "declaration_seq", "declaration_specifiers", "simple_declaration_specifiers",
- "class_declaration_specifiers", "elaborated_declaration_specifi" + "ers", "enum_declaration_specifiers",
- "type_name_declaration_specifie" + "rs", "no_type_declaration_specifier", "cv_qualifier",
- "no_type_declaration_specifiers", "class_specifier", "elaborated_type_specifier", "enum_specifier",
- "type_name_specifier", "class_keyword", "enumerator_list", "enumerator_definition", "namespace_name",
- "init_declarator_list", "init_declarator_complete", "complete_declarator", "initializer",
- "direct_declarator", "ptr_operator_seq", "function_declarator", "basic_direct_declarator",
- "array_direct_declarator", "array_modifier", "abstract_declarator", "direct_abstract_declarator",
- "basic_direct_abstract_declarat" + "or", "array_direct_abstract_declarat" + "or",
- "parameter_declaration_list", "parameter_declaration", "parameter_init_declarator",
- "parameter_initializer", "function_body", "handler_seq", "initializer_clause", "initializer_list",
- "initializer_seq", "class_head", "access_specifier_keyword", "member_declaration",
- "member_declarator_list", "member_declaration_list", "member_declarator_complete",
- "constant_initializer", "bit_field_declarator", "base_specifier_list", "base_specifier",
- "conversion_function_id", "conversion_type_id", "conversion_declarator", "mem_initializer_list",
- "mem_initializer", "mem_initializer_name", "operator_id_name", "overloadable_operator",
- "template_parameter_list", "template_parameter", "template_argument_list", "template_argument",
- "type_name_specifier_inTemplate", "type_name_declaration_specifie" + "rs_inTemplate",
- "type_specifier_seq_inTemplate", "handler", "exception_declaration", "type_id_list",
- "attribute_or_decl_specifier", "attribute_or_decl_specifier_se" + "q", "word",
- "extended_decl_modifier_seq", "extended_decl_modifier", "extended_asm_param", "case_range_expression",
- "typeof_declaration_specifiers", "typeof_type_specifier" };
- }
-
- public final static String name[] = Name.name;
-
- @Override
- public final String name(int index) {
- return name[index];
- }
-
- public final static int ERROR_SYMBOL = 69, SCOPE_UBOUND = 149, SCOPE_SIZE = 150, MAX_NAME_LENGTH = 43;
-
- @Override
- public final int getErrorSymbol() {
- return ERROR_SYMBOL;
- }
-
- @Override
- public final int getScopeUbound() {
- return SCOPE_UBOUND;
- }
-
- @Override
- public final int getScopeSize() {
- return SCOPE_SIZE;
- }
-
- @Override
- public final int getMaxNameLength() {
- return MAX_NAME_LENGTH;
- }
-
- public final static int NUM_STATES = 677, NT_OFFSET = 131, LA_STATE_OFFSET = 9323, MAX_LA = 2147483647,
- NUM_RULES = 670, NUM_NONTERMINALS = 245, NUM_SYMBOLS = 376, SEGMENT_SIZE = 8192, START_STATE = 4025,
- IDENTIFIER_SYMBOL = 0, EOFT_SYMBOL = 129, EOLT_SYMBOL = 129, ACCEPT_ACTION = 7679, ERROR_ACTION = 8653;
-
- public final static boolean BACKTRACK = true;
-
- @Override
- public final int getNumStates() {
- return NUM_STATES;
- }
-
- @Override
- public final int getNtOffset() {
- return NT_OFFSET;
- }
-
- @Override
- public final int getLaStateOffset() {
- return LA_STATE_OFFSET;
- }
-
- @Override
- public final int getMaxLa() {
- return MAX_LA;
- }
-
- @Override
- public final int getNumRules() {
- return NUM_RULES;
- }
-
- @Override
- public final int getNumNonterminals() {
- return NUM_NONTERMINALS;
- }
-
- @Override
- public final int getNumSymbols() {
- return NUM_SYMBOLS;
- }
-
- @Override
- public final int getSegmentSize() {
- return SEGMENT_SIZE;
- }
-
- @Override
- public final int getStartState() {
- return START_STATE;
- }
-
- @Override
- public final int getStartSymbol() {
- return lhs[0];
- }
-
- public final int getIdentifierSymbol() {
- return IDENTIFIER_SYMBOL;
- }
-
- @Override
- public final int getEoftSymbol() {
- return EOFT_SYMBOL;
- }
-
- @Override
- public final int getEoltSymbol() {
- return EOLT_SYMBOL;
- }
-
- @Override
- public final int getAcceptAction() {
- return ACCEPT_ACTION;
- }
-
- @Override
- public final int getErrorAction() {
- return ERROR_ACTION;
- }
-
- @Override
- public final boolean isValidForParser() {
- return isValidForParser;
- }
-
- @Override
- public final boolean getBacktrack() {
- return BACKTRACK;
- }
-
- @Override
- public final int originalState(int state) {
- return -baseCheck[state];
- }
-
- @Override
- public final int asi(int state) {
- return asb[originalState(state)];
- }
-
- @Override
- public final int nasi(int state) {
- return nasb[originalState(state)];
- }
-
- @Override
- public final int inSymbol(int state) {
- return inSymb[originalState(state)];
- }
-
- @Override
- public final int ntAction(int state, int sym) {
- return baseAction[state + sym];
- }
-
- @Override
- public final int tAction(int state, int sym) {
- int i = baseAction[state], k = i + sym;
- return termAction[termCheck[k] == sym ? k : i];
- }
-
- @Override
- public final int lookAhead(int la_state, int sym) {
- int k = la_state + sym;
- return termAction[termCheck[k] == sym ? k : la_state];
- }
-}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gpp/GPPSizeofExpressionParsersym.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gpp/GPPSizeofExpressionParsersym.java
deleted file mode 100644
index 4e71c61a98a..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gpp/GPPSizeofExpressionParsersym.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2010 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.dom.lrparser.gpp;
-
-public interface GPPSizeofExpressionParsersym {
- public final static int TK__Complex = 14, TK__Imaginary = 15, TK_restrict = 30, TK_asm = 5, TK_auto = 32,
- TK_bool = 16, TK_break = 85, TK_case = 86, TK_catch = 122, TK_char = 17, TK_class = 62, TK_const = 28,
- TK_const_cast = 48, TK_continue = 87, TK_default = 88, TK_delete = 74, TK_do = 89, TK_double = 18,
- TK_dynamic_cast = 49, TK_else = 130, TK_enum = 63, TK_explicit = 33, TK_export = 95, TK_extern = 34,
- TK_false = 50, TK_float = 19, TK_for = 90, TK_friend = 35, TK_goto = 91, TK_if = 92, TK_inline = 36,
- TK_int = 20, TK_long = 21, TK_mutable = 37, TK_namespace = 67, TK_new = 75, TK_operator = 9,
- TK_private = 123, TK_protected = 124, TK_public = 125, TK_register = 38, TK_reinterpret_cast = 51,
- TK_return = 93, TK_short = 22, TK_signed = 23, TK_sizeof = 52, TK_static = 39, TK_static_cast = 53,
- TK_struct = 64, TK_switch = 94, TK_template = 54, TK_this = 55, TK_throw = 68, TK_try = 79, TK_true = 56,
- TK_typedef = 40, TK_typeid = 57, TK_typename = 13, TK_union = 65, TK_unsigned = 24, TK_using = 70,
- TK_virtual = 31, TK_void = 25, TK_volatile = 29, TK_wchar_t = 26, TK_while = 82, TK_integer = 58,
- TK_floating = 59, TK_charconst = 60, TK_stringlit = 41, TK_identifier = 1, TK_Completion = 2,
- TK_EndOfCompletion = 12, TK_Invalid = 131, TK_LeftBracket = 71, TK_LeftParen = 3, TK_Dot = 128,
- TK_DotStar = 105, TK_Arrow = 126, TK_ArrowStar = 99, TK_PlusPlus = 44, TK_MinusMinus = 45, TK_And = 11,
- TK_Star = 10, TK_Plus = 42, TK_Minus = 43, TK_Tilde = 8, TK_Bang = 46, TK_Slash = 106, TK_Percent = 107,
- TK_RightShift = 83, TK_LeftShift = 84, TK_LT = 66, TK_GT = 77, TK_LE = 96, TK_GE = 97, TK_EQ = 100,
- TK_NE = 101, TK_Caret = 102, TK_Or = 103, TK_AndAnd = 104, TK_OrOr = 108, TK_Question = 109, TK_Colon = 78,
- TK_ColonColon = 4, TK_DotDotDot = 98, TK_Assign = 80, TK_StarAssign = 110, TK_SlashAssign = 111,
- TK_PercentAssign = 112, TK_PlusAssign = 113, TK_MinusAssign = 114, TK_RightShiftAssign = 115,
- TK_LeftShiftAssign = 116, TK_AndAssign = 117, TK_CaretAssign = 118, TK_OrAssign = 119, TK_Comma = 73,
- TK_RightBracket = 127, TK_RightParen = 76, TK_RightBrace = 81, TK_SemiColon = 47, TK_LeftBrace = 72,
- TK_typeof = 27, TK___alignof__ = 61, TK___attribute__ = 6, TK___declspec = 7, TK_MAX = 120, TK_MIN = 121,
- TK_ERROR_TOKEN = 69, TK_EOF_TOKEN = 129;
-
- public final static String orderedTerminalSymbols[] = { "", "identifier", "Completion", "LeftParen", "ColonColon",
- "asm", "__attribute__", "__declspec", "Tilde", "operator", "Star", "And", "EndOfCompletion", "typename",
- "_Complex", "_Imaginary", "bool", "char", "double", "float", "int", "long", "short", "signed", "unsigned",
- "void", "wchar_t", "typeof", "const", "volatile", "restrict", "virtual", "auto", "explicit", "extern",
- "friend", "inline", "mutable", "register", "static", "typedef", "stringlit", "Plus", "Minus", "PlusPlus",
- "MinusMinus", "Bang", "SemiColon", "const_cast", "dynamic_cast", "false", "reinterpret_cast", "sizeof",
- "static_cast", "template", "this", "true", "typeid", "integer", "floating", "charconst", "__alignof__",
- "class", "enum", "struct", "union", "LT", "namespace", "throw", "ERROR_TOKEN", "using", "LeftBracket",
- "LeftBrace", "Comma", "delete", "new", "RightParen", "GT", "Colon", "try", "Assign", "RightBrace", "while",
- "RightShift", "LeftShift", "break", "case", "continue", "default", "do", "for", "goto", "if", "return",
- "switch", "export", "LE", "GE", "DotDotDot", "ArrowStar", "EQ", "NE", "Caret", "Or", "AndAnd", "DotStar",
- "Slash", "Percent", "OrOr", "Question", "StarAssign", "SlashAssign", "PercentAssign", "PlusAssign",
- "MinusAssign", "RightShiftAssign", "LeftShiftAssign", "AndAssign", "CaretAssign", "OrAssign", "MAX", "MIN",
- "catch", "private", "protected", "public", "Arrow", "RightBracket", "Dot", "EOF_TOKEN", "else", "Invalid" };
-
- public final static boolean isValidForParser = true;
-}
diff --git a/lrparser/pom.xml b/lrparser/pom.xml
deleted file mode 100644
index 618b1c9e1a5..00000000000
--- a/lrparser/pom.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
- xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <groupId>org.eclipse.cdt</groupId>
- <artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
- </parent>
-
- <artifactId>org.eclipse.cdt.lrparser-parent</artifactId>
- <packaging>pom</packaging>
-</project>
diff --git a/lsp/org.eclipse.cdt.lsp-feature/build.properties b/lsp/org.eclipse.cdt.lsp-feature/build.properties
index b3a611b5c93..908b3dac831 100644
--- a/lsp/org.eclipse.cdt.lsp-feature/build.properties
+++ b/lsp/org.eclipse.cdt.lsp-feature/build.properties
@@ -1,2 +1,16 @@
+###############################################################################
+# Copyright (c) 2017-2019 Ericsson and others
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# https://www.eclipse.org/legal/epl-2.0/.
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Ericsson - initial API and implementation
+# Alexander Fedorov <alexander.fedorov@arsysop.ru> - Bug 558484
+###############################################################################
+
bin.includes = feature.xml,\
feature.properties
diff --git a/lsp/org.eclipse.cdt.lsp-feature/feature.properties b/lsp/org.eclipse.cdt.lsp-feature/feature.properties
index 2a6384e9b9d..ee65e5841d0 100644
--- a/lsp/org.eclipse.cdt.lsp-feature/feature.properties
+++ b/lsp/org.eclipse.cdt.lsp-feature/feature.properties
@@ -1,11 +1,9 @@
###############################################################################
-# Copyright (c) 2017 Ericsson
+# Copyright (c) 2017, 2020 Ericsson and others.
#
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# https://www.eclipse.org/legal/epl-2.0/.
#
# SPDX-License-Identifier: EPL-2.0
###############################################################################
@@ -16,8 +14,11 @@ description=Plug-ins to support C/C++ language servers in LSP4E.
featureProvider=Eclipse CDT
-copyright=Copyright (c) 2017 Ericsson and others.\n\
-This program and the accompanying materials\n\
-are made available under the terms of the Eclipse Public License 2.0\n\
-which accompanies this distribution, and is available at\n\
-https://www.eclipse.org/legal/epl-2.0/
+copyright=Copyright (c) 2017, 2020 Ericsson and others.\n\
+\n\
+This program and the accompanying materials are made available under the\n\
+terms of the Eclipse Public License 2.0 which is available at\n\
+https://www.eclipse.org/legal/epl-2.0/.\n\
+\n\
+SPDX-License-Identifier: EPL-2.0\n\
+
diff --git a/lsp/org.eclipse.cdt.lsp-feature/feature.xml b/lsp/org.eclipse.cdt.lsp-feature/feature.xml
index 30f7f64a370..87db88ab83a 100644
--- a/lsp/org.eclipse.cdt.lsp-feature/feature.xml
+++ b/lsp/org.eclipse.cdt.lsp-feature/feature.xml
@@ -1,9 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2017, 2021 Ericsson and others.
+
+ This program and the accompanying materials are made available under the
+ terms of the Eclipse Public License 2.0 which is available at
+ https://www.eclipse.org/legal/epl-2.0/.
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<feature
id="org.eclipse.cdt.lsp"
label="%featureName"
- version="9.10.0.qualifier"
+ version="10.7.0.qualifier"
provider-name="%featureProvider"
+ plugin="org.eclipse.cdt.lsp.ui"
license-feature="org.eclipse.license"
license-feature-version="0.0.0">
@@ -25,4 +35,16 @@
install-size="0"
version="0.0.0"/>
+ <plugin
+ id="org.eclipse.cdt.lsp.ui"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"/>
+
+ <plugin
+ id="org.eclipse.cdt.lsp.clangd"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"/>
+
</feature>
diff --git a/lsp/org.eclipse.cdt.lsp.clangd/.classpath b/lsp/org.eclipse.cdt.lsp.clangd/.classpath
new file mode 100644
index 00000000000..e801ebfb468
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.clangd/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/lsp/org.eclipse.cdt.lsp.clangd/.project b/lsp/org.eclipse.cdt.lsp.clangd/.project
new file mode 100644
index 00000000000..bc3087db53c
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.clangd/.project
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.cdt.lsp.clangd</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ds.core.builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+ </natures>
+</projectDescription>
diff --git a/lsp/org.eclipse.cdt.lsp.clangd/.settings/org.eclipse.core.resources.prefs b/lsp/org.eclipse.cdt.lsp.clangd/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.clangd/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/lsp/org.eclipse.cdt.lsp.clangd/.settings/org.eclipse.core.runtime.prefs b/lsp/org.eclipse.cdt.lsp.clangd/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 00000000000..5a0ad22d2a7
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.clangd/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/lsp/org.eclipse.cdt.lsp.clangd/.settings/org.eclipse.jdt.core.prefs b/lsp/org.eclipse.cdt.lsp.clangd/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..e3a8104f9ca
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.clangd/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/upc/org.eclipse.cdt.core.parser.upc.tests/.settings/org.eclipse.jdt.launching.prefs b/lsp/org.eclipse.cdt.lsp.clangd/.settings/org.eclipse.jdt.launching.prefs
index f8a131b56e0..f8a131b56e0 100644
--- a/upc/org.eclipse.cdt.core.parser.upc.tests/.settings/org.eclipse.jdt.launching.prefs
+++ b/lsp/org.eclipse.cdt.lsp.clangd/.settings/org.eclipse.jdt.launching.prefs
diff --git a/lsp/org.eclipse.cdt.lsp.clangd/.settings/org.eclipse.jdt.ui.prefs b/lsp/org.eclipse.cdt.lsp.clangd/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.clangd/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/lsp/org.eclipse.cdt.lsp.clangd/.settings/org.eclipse.pde.api.tools.prefs b/lsp/org.eclipse.cdt.lsp.clangd/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 00000000000..ec9fbf321d0
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.clangd/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,184 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITH_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_FIELD=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERCLASS_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_CHANGED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENTS=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETERS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Error
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Warning
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+MISSING_EE_DESCRIPTIONS=Warning
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=false
+changed_execution_env=Error
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+incompatible_api_component_version_report_major_without_breaking_change=Warning
+incompatible_api_component_version_report_minor_without_api_change=Warning
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/lsp/org.eclipse.cdt.lsp.clangd/.settings/org.eclipse.pde.ds.annotations.prefs b/lsp/org.eclipse.cdt.lsp.clangd/.settings/org.eclipse.pde.ds.annotations.prefs
new file mode 100644
index 00000000000..73a356b6d05
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.clangd/.settings/org.eclipse.pde.ds.annotations.prefs
@@ -0,0 +1,8 @@
+classpath=true
+dsVersion=V1_3
+eclipse.preferences.version=1
+enabled=true
+generateBundleActivationPolicyLazy=true
+path=OSGI-INF
+validationErrorLevel=error
+validationErrorLevel.missingImplicitUnbindMethod=error
diff --git a/lsp/org.eclipse.cdt.lsp.clangd/.settings/org.eclipse.pde.prefs b/lsp/org.eclipse.cdt.lsp.clangd/.settings/org.eclipse.pde.prefs
new file mode 100644
index 00000000000..d2dc703ba9e
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.clangd/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,35 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=2
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=2
+compilers.p.missing-version-export-package=2
+compilers.p.missing-version-import-package=2
+compilers.p.missing-version-require-bundle=2
+compilers.p.no-required-att=0
+compilers.p.no.automatic.module=1
+compilers.p.not-externalized-att=1
+compilers.p.service.component.without.lazyactivation=1
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/lsp/org.eclipse.cdt.lsp.clangd/META-INF/MANIFEST.MF b/lsp/org.eclipse.cdt.lsp.clangd/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..d2147defeee
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.clangd/META-INF/MANIFEST.MF
@@ -0,0 +1,13 @@
+Manifest-Version: 1.0
+Automatic-Module-Name: org.eclipse.cdt.lsp.clangd
+Bundle-ManifestVersion: 2
+Bundle-SymbolicName: org.eclipse.cdt.lsp.clangd
+Bundle-Version: 0.1.100.qualifier
+Bundle-Name: %Bundle-Name
+Bundle-Vendor: %Bundle-Vendor
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Service-Component: OSGI-INF/org.eclipse.cdt.lsp.internal.clangd.ClangdLanguageServer.xml
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.cdt.lsp.core;bundle-version="1.1.100",
+ org.eclipse.osgi.services;bundle-version="3.9.0";resolution:=optional,
+ org.eclipse.osgi;bundle-version="3.16.0"
diff --git a/lsp/org.eclipse.cdt.lsp.clangd/OSGI-INF/l10n/bundle.properties b/lsp/org.eclipse.cdt.lsp.clangd/OSGI-INF/l10n/bundle.properties
new file mode 100644
index 00000000000..a2c1f07ba35
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.clangd/OSGI-INF/l10n/bundle.properties
@@ -0,0 +1,13 @@
+#Properties file for org.eclipse.cdt.lsp.clangd
+###############################################################################
+# Copyright (c) 2020 ArSysOp and others.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0/.
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+
+Bundle-Vendor = Eclipse CDT
+Bundle-Name = CDT LSP clangd \ No newline at end of file
diff --git a/lsp/org.eclipse.cdt.lsp.clangd/OSGI-INF/org.eclipse.cdt.lsp.internal.clangd.ClangdLanguageServer.xml b/lsp/org.eclipse.cdt.lsp.clangd/OSGI-INF/org.eclipse.cdt.lsp.internal.clangd.ClangdLanguageServer.xml
new file mode 100644
index 00000000000..8a3304ae03e
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.clangd/OSGI-INF/org.eclipse.cdt.lsp.internal.clangd.ClangdLanguageServer.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.eclipse.cdt.lsp.internal.clangd.ClangdLanguageServer">
+ <service>
+ <provide interface="org.eclipse.cdt.lsp.LanguageServerConfiguration"/>
+ </service>
+ <implementation class="org.eclipse.cdt.lsp.internal.clangd.ClangdLanguageServer"/>
+</scr:component> \ No newline at end of file
diff --git a/lsp/org.eclipse.cdt.lsp.clangd/about.html b/lsp/org.eclipse.cdt.lsp.clangd/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.clangd/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/lsp/org.eclipse.cdt.lsp.clangd/build.properties b/lsp/org.eclipse.cdt.lsp.clangd/build.properties
new file mode 100644
index 00000000000..c501f040b71
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.clangd/build.properties
@@ -0,0 +1,17 @@
+###############################################################################
+# Copyright (c) 2020 ArSysOp and others.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0/.
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ OSGI-INF/,\
+ about.html
+src.includes = about.html
diff --git a/lsp/org.eclipse.cdt.lsp.clangd/src/org/eclipse/cdt/lsp/internal/clangd/ClangdLanguageServer.java b/lsp/org.eclipse.cdt.lsp.clangd/src/org/eclipse/cdt/lsp/internal/clangd/ClangdLanguageServer.java
new file mode 100644
index 00000000000..d41c9cb7f34
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.clangd/src/org/eclipse/cdt/lsp/internal/clangd/ClangdLanguageServer.java
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ * Copyright (c) 2018, 2020 Manish Khurana , Nathan Ridge and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.lsp.internal.clangd;
+
+import java.net.URI;
+
+import org.eclipse.cdt.lsp.LanguageServerConfiguration;
+import org.osgi.service.component.annotations.Component;
+
+@Component
+public class ClangdLanguageServer implements LanguageServerConfiguration {
+
+ @Override
+ public String identifier() {
+ return "clangd"; //$NON-NLS-1$
+ }
+
+ @Override
+ public String label() {
+ return ClangdMessages.ClangdLanguageServer_label;
+ }
+
+ @Override
+ public Object options(Object defaults, URI uri) {
+ return defaults;
+ }
+
+}
diff --git a/lsp/org.eclipse.cdt.lsp.clangd/src/org/eclipse/cdt/lsp/internal/clangd/ClangdMessages.java b/lsp/org.eclipse.cdt.lsp.clangd/src/org/eclipse/cdt/lsp/internal/clangd/ClangdMessages.java
new file mode 100644
index 00000000000..d029fc11c0b
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.clangd/src/org/eclipse/cdt/lsp/internal/clangd/ClangdMessages.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * Copyright (c) 2020 ArSysOp and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov (ArSysOp) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.lsp.internal.clangd;
+
+import org.eclipse.osgi.util.NLS;
+
+public class ClangdMessages extends NLS {
+
+ private static final String BUNDLE_NAME = "org.eclipse.cdt.lsp.internal.clangd.ClangdMessages"; //$NON-NLS-1$
+
+ static {
+ // initialize resource bundle
+ NLS.initializeMessages(BUNDLE_NAME, ClangdMessages.class);
+ }
+
+ public static String ClangdLanguageServer_label;
+
+ private ClangdMessages() {
+ }
+}
diff --git a/lsp/org.eclipse.cdt.lsp.clangd/src/org/eclipse/cdt/lsp/internal/clangd/ClangdMessages.properties b/lsp/org.eclipse.cdt.lsp.clangd/src/org/eclipse/cdt/lsp/internal/clangd/ClangdMessages.properties
new file mode 100644
index 00000000000..5eca9ccc679
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.clangd/src/org/eclipse/cdt/lsp/internal/clangd/ClangdMessages.properties
@@ -0,0 +1,14 @@
+###############################################################################
+# Copyright (c) 2020 ArSysOp and others.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# https://www.eclipse.org/legal/epl-2.0/.
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Alexander Fedorov (ArSysOp) - initial API and implementation
+###############################################################################
+
+ClangdLanguageServer_label=ClangD
diff --git a/lsp/org.eclipse.cdt.lsp.core.tests/.classpath b/lsp/org.eclipse.cdt.lsp.core.tests/.classpath
index eca7bdba8f0..a621c21ac55 100644
--- a/lsp/org.eclipse.cdt.lsp.core.tests/.classpath
+++ b/lsp/org.eclipse.cdt.lsp.core.tests/.classpath
@@ -1,7 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="output" path="bin"/>
+ <classpathentry kind="src" path="src">
+ <attributes>
+ <attribute name="test" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="output" path="target/classes"/>
</classpath>
diff --git a/lsp/org.eclipse.cdt.lsp.core.tests/.settings/org.eclipse.core.resources.prefs b/lsp/org.eclipse.cdt.lsp.core.tests/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.core.tests/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/lsp/org.eclipse.cdt.lsp.core.tests/.settings/org.eclipse.jdt.core.prefs b/lsp/org.eclipse.cdt.lsp.core.tests/.settings/org.eclipse.jdt.core.prefs
index ad05599159f..5b1c443114d 100644
--- a/lsp/org.eclipse.cdt.lsp.core.tests/.settings/org.eclipse.jdt.core.prefs
+++ b/lsp/org.eclipse.cdt.lsp.core.tests/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/lsp/org.eclipse.cdt.lsp.core.tests/.settings/org.eclipse.jdt.ui.prefs b/lsp/org.eclipse.cdt.lsp.core.tests/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/lsp/org.eclipse.cdt.lsp.core.tests/.settings/org.eclipse.jdt.ui.prefs
+++ b/lsp/org.eclipse.cdt.lsp.core.tests/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/lsp/org.eclipse.cdt.lsp.core.tests/META-INF/MANIFEST.MF b/lsp/org.eclipse.cdt.lsp.core.tests/META-INF/MANIFEST.MF
index 6df07877182..b520330a659 100644
--- a/lsp/org.eclipse.cdt.lsp.core.tests/META-INF/MANIFEST.MF
+++ b/lsp/org.eclipse.cdt.lsp.core.tests/META-INF/MANIFEST.MF
@@ -1,14 +1,18 @@
Manifest-Version: 1.0
+Automatic-Module-Name: org.eclipse.cdt.lsp.core.tests
Bundle-ManifestVersion: 2
-Bundle-Name: "Tests for LSP4E C/C++ Support"
Bundle-SymbolicName: org.eclipse.cdt.lsp.core.tests
-Bundle-Vendor: Eclipse CDT
Bundle-Version: 1.0.0.qualifier
-Automatic-Module-Name: org.eclipse.cdt.lsp.core.tests
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Require-Bundle: org.eclipse.lsp4e,
+Bundle-Name: %Bundle-Name
+Bundle-Vendor: %Bundle-Vendor
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Require-Bundle: com.google.gson;bundle-version="2.8.2",
+ org.eclipse.cdt.lsp.cquery;bundle-version="0.1.0",
+ org.junit,
org.eclipse.lsp4j,
org.eclipse.lsp4j.jsonrpc,
+ org.eclipse.text;bundle-version="3.10.0",
+ org.eclipse.lsp4e,
org.eclipse.cdt.lsp.core,
- com.google.gson;bundle-version="2.8.2",
- org.junit
+ org.eclipse.core.filebuffers;bundle-version="3.6.0",
+ org.eclipse.core.runtime;bundle-version="3.19.0"
diff --git a/lsp/org.eclipse.cdt.lsp.core.tests/OSGI-INF/l10n/bundle.properties b/lsp/org.eclipse.cdt.lsp.core.tests/OSGI-INF/l10n/bundle.properties
new file mode 100644
index 00000000000..59407e8f1d9
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.core.tests/OSGI-INF/l10n/bundle.properties
@@ -0,0 +1,13 @@
+#Properties file for org.eclipse.cdt.lsp.core.tests
+###############################################################################
+# Copyright (c) 2017, 2020 Eclipse contributors and others
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# https://www.eclipse.org/legal/epl-2.0/.
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+
+Bundle-Name = CDT LSP Core Tests
+Bundle-Vendor = Eclipse CDT
diff --git a/lsp/org.eclipse.cdt.lsp.core.tests/about.html b/lsp/org.eclipse.cdt.lsp.core.tests/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.core.tests/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/lsp/org.eclipse.cdt.lsp.core.tests/build.properties b/lsp/org.eclipse.cdt.lsp.core.tests/build.properties
index 34d2e4d2dad..b2d18a5aebe 100644
--- a/lsp/org.eclipse.cdt.lsp.core.tests/build.properties
+++ b/lsp/org.eclipse.cdt.lsp.core.tests/build.properties
@@ -1,4 +1,17 @@
+###############################################################################
+# Copyright (c) 2017, 2020 Eclipse contributors and others
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# https://www.eclipse.org/legal/epl-2.0/.
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+
source.. = src/
-output.. = bin/
+output.. = target/classes/
bin.includes = META-INF/,\
- .
+ .,\
+ OSGI-INF/,\
+ about.html
+src.includes = about.html
diff --git a/lsp/org.eclipse.cdt.lsp.core.tests/pom.xml b/lsp/org.eclipse.cdt.lsp.core.tests/pom.xml
index 5f8bdc5264f..8dd4219f04a 100644
--- a/lsp/org.eclipse.cdt.lsp.core.tests/pom.xml
+++ b/lsp/org.eclipse.cdt.lsp.core.tests/pom.xml
@@ -1,4 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2017, 2021 Eclipse contributors and others
+
+ This program and the accompanying materials are made available under the
+ terms of the Eclipse Public License 2.0 which is available at
+ https://www.eclipse.org/legal/epl-2.0/.
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
@@ -7,7 +16,7 @@
<parent>
<groupId>org.eclipse.cdt</groupId>
<artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
+ <version>10.7.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
@@ -31,9 +40,6 @@
<useUIThread>false</useUIThread>
<argLine>${tycho.testArgLine} ${base.test.vmargs}</argLine> -->
<!-- endif -->
- <includes>
- <include>**/*Test.*</include>
- </includes>
</configuration>
</plugin>
</plugins>
diff --git a/lsp/org.eclipse.cdt.lsp.core.tests/src/org/eclipse/cdt/lsp/internal/core/tests/ContributedProtocolExtensionsTest.java b/lsp/org.eclipse.cdt.lsp.core.tests/src/org/eclipse/cdt/lsp/internal/core/tests/ContributedProtocolExtensionsTest.java
new file mode 100644
index 00000000000..3c5381b4663
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.core.tests/src/org/eclipse/cdt/lsp/internal/core/tests/ContributedProtocolExtensionsTest.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 2020 ArSysOp and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov (ArSysOp) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.lsp.internal.core.tests;
+
+import static org.junit.Assert.assertEquals;
+
+import org.eclipse.cdt.lsp.LanguageProtocolExtension;
+import org.eclipse.cdt.lsp.LanguageServerConfiguration;
+import org.eclipse.cdt.lsp.internal.core.ContributedProtocolExtensions;
+import org.junit.Test;
+
+public class ContributedProtocolExtensionsTest {
+
+ private final LanguageServerConfiguration s1 = new FakeServerConfiguration("s1");
+ private final LanguageServerConfiguration s2 = new FakeServerConfiguration("s2");
+ private final LanguageServerConfiguration s3 = new FakeServerConfiguration("s3");
+ private final LanguageProtocolExtension p1s1 = new FakeProtocolExtension("s1");
+ private final LanguageProtocolExtension p2s1 = new FakeProtocolExtension("s1");
+ private final LanguageProtocolExtension p3s2 = new FakeProtocolExtension("s2");
+
+ @Test
+ public void positive() {
+ ContributedProtocolExtensions extensions = new ContributedProtocolExtensions();
+ assertEquals(0, extensions.all().size());
+ assertEquals(0, extensions.applicable(s1).size());
+ assertEquals(0, extensions.applicable(s2).size());
+ assertEquals(0, extensions.applicable(s3).size());
+ extensions.register(p1s1);
+ extensions.register(p2s1);
+ extensions.register(p3s2);
+ assertEquals(3, extensions.all().size());
+ assertEquals(2, extensions.applicable(s1).size());
+ assertEquals(1, extensions.applicable(s2).size());
+ assertEquals(0, extensions.applicable(s3).size());
+ extensions.unregister(p1s1);
+ extensions.unregister(p2s1);
+ extensions.unregister(p3s2);
+ assertEquals(0, extensions.all().size());
+ assertEquals(0, extensions.applicable(s1).size());
+ assertEquals(0, extensions.applicable(s2).size());
+ assertEquals(0, extensions.applicable(s3).size());
+ }
+
+}
diff --git a/lsp/org.eclipse.cdt.lsp.core.tests/src/org/eclipse/cdt/lsp/internal/core/tests/FakeProtocolExtension.java b/lsp/org.eclipse.cdt.lsp.core.tests/src/org/eclipse/cdt/lsp/internal/core/tests/FakeProtocolExtension.java
new file mode 100644
index 00000000000..35dae5bf75f
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.core.tests/src/org/eclipse/cdt/lsp/internal/core/tests/FakeProtocolExtension.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * Copyright (c) 2020 ArSysOp and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov (ArSysOp) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.lsp.internal.core.tests;
+
+import org.eclipse.cdt.lsp.LanguageProtocolExtension;
+
+public class FakeProtocolExtension implements LanguageProtocolExtension {
+
+ private final String id;
+
+ public FakeProtocolExtension(String id) {
+ this.id = id;
+ }
+
+ @Override
+ public String targetIdentifier() {
+ return id;
+ }
+
+}
diff --git a/lsp/org.eclipse.cdt.lsp.core.tests/src/org/eclipse/cdt/lsp/internal/core/tests/FakeServerConfiguration.java b/lsp/org.eclipse.cdt.lsp.core.tests/src/org/eclipse/cdt/lsp/internal/core/tests/FakeServerConfiguration.java
new file mode 100644
index 00000000000..8fe839138d3
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.core.tests/src/org/eclipse/cdt/lsp/internal/core/tests/FakeServerConfiguration.java
@@ -0,0 +1,43 @@
+/*******************************************************************************
+ * Copyright (c) 2020 ArSysOp and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov (ArSysOp) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.lsp.internal.core.tests;
+
+import java.net.URI;
+
+import org.eclipse.cdt.lsp.LanguageServerConfiguration;
+
+public class FakeServerConfiguration implements LanguageServerConfiguration {
+
+ private final String id;
+
+ public FakeServerConfiguration(String id) {
+ this.id = id;
+ }
+
+ @Override
+ public String identifier() {
+ return id;
+ }
+
+ @Override
+ public String label() {
+ return id;
+ }
+
+ @Override
+ public Object options(Object defaults, URI uri) {
+ return defaults;
+ }
+
+}
diff --git a/lsp/org.eclipse.cdt.lsp.core.tests/src/org/eclipse/cdt/lsp/internal/core/tests/ShowStatusTest.java b/lsp/org.eclipse.cdt.lsp.core.tests/src/org/eclipse/cdt/lsp/internal/core/tests/ShowStatusTest.java
new file mode 100644
index 00000000000..d3386d539e8
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.core.tests/src/org/eclipse/cdt/lsp/internal/core/tests/ShowStatusTest.java
@@ -0,0 +1,41 @@
+/*******************************************************************************
+ * Copyright (c) 2020 ArSysOp and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov (ArSysOp) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.lsp.internal.core.tests;
+
+import static org.junit.Assert.assertEquals;
+
+import org.eclipse.cdt.lsp.internal.core.LspCoreMessages;
+import org.eclipse.cdt.lsp.internal.core.ShowStatus;
+import org.eclipse.osgi.util.NLS;
+import org.junit.Test;
+
+public class ShowStatusTest {
+
+ @Test
+ public void busy() {
+ StringBuilder sb = new StringBuilder();
+ ShowStatus show = new ShowStatus(() -> "Busy", sb::append);
+ show.accept(() -> 100500);
+ assertEquals(NLS.bind(LspCoreMessages.ShowStatus_busy, "Busy", 100500), sb.toString());
+ }
+
+ @Test
+ public void idle() {
+ StringBuilder sb = new StringBuilder();
+ ShowStatus show = new ShowStatus(() -> "Idle", sb::append);
+ show.accept(() -> 0);
+ assertEquals(NLS.bind(LspCoreMessages.ShowStatus_idle, "Idle"), sb.toString());
+ }
+
+}
diff --git a/lsp/org.eclipse.cdt.lsp.core.tests/src/org/eclipse/cdt/lsp/internal/core/workspace/tests/ResolveDocumentUriTest.java b/lsp/org.eclipse.cdt.lsp.core.tests/src/org/eclipse/cdt/lsp/internal/core/workspace/tests/ResolveDocumentUriTest.java
new file mode 100644
index 00000000000..57748574576
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.core.tests/src/org/eclipse/cdt/lsp/internal/core/workspace/tests/ResolveDocumentUriTest.java
@@ -0,0 +1,53 @@
+/*******************************************************************************
+ * Copyright (c) 2020 ArSysOp and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov (ArSysOp) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.lsp.internal.core.workspace.tests;
+
+import static org.junit.Assert.assertFalse;
+
+import org.eclipse.cdt.lsp.internal.core.workspace.ResolveDocumentUri;
+import org.eclipse.core.filebuffers.FileBuffers;
+import org.eclipse.core.filebuffers.LocationKind;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.jface.text.Document;
+import org.junit.Test;
+
+public class ResolveDocumentUriTest {
+
+ private final ResolveDocumentUri uri;
+
+ public ResolveDocumentUriTest() {
+ uri = new ResolveDocumentUri();
+ }
+
+ @Test
+ public void emptyDocument() {
+ assertFalse(uri.apply(new Document()).isPresent());
+ }
+
+ @Test
+ public void externalDocument() {
+ Document document = new Document();
+ FileBuffers.createTextFileBufferManager().createEmptyDocument(new Path("some.c"), LocationKind.LOCATION);
+ assertFalse(uri.apply(document).isPresent());
+ }
+
+ @Test
+ public void workspaceDocument() {
+ Document document = new Document();
+ FileBuffers.createTextFileBufferManager().createEmptyDocument(new Path("some.c"), LocationKind.LOCATION);
+ //it's a pity! see https://bugs.eclipse.org/bugs/show_bug.cgi?id=566044
+ assertFalse(uri.apply(document).isPresent());
+ }
+
+}
diff --git a/lsp/org.eclipse.cdt.lsp.core/.classpath b/lsp/org.eclipse.cdt.lsp.core/.classpath
index eca7bdba8f0..e801ebfb468 100644
--- a/lsp/org.eclipse.cdt.lsp.core/.classpath
+++ b/lsp/org.eclipse.cdt.lsp.core/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/lsp/org.eclipse.cdt.lsp.core/.project b/lsp/org.eclipse.cdt.lsp.core/.project
index 2524436d04a..697ff10a1b9 100644
--- a/lsp/org.eclipse.cdt.lsp.core/.project
+++ b/lsp/org.eclipse.cdt.lsp.core/.project
@@ -20,9 +20,20 @@
<arguments>
</arguments>
</buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ds.core.builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.pde.PluginNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
</natures>
</projectDescription>
diff --git a/lsp/org.eclipse.cdt.lsp.core/.settings/org.eclipse.jdt.core.prefs b/lsp/org.eclipse.cdt.lsp.core/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/lsp/org.eclipse.cdt.lsp.core/.settings/org.eclipse.jdt.core.prefs
+++ b/lsp/org.eclipse.cdt.lsp.core/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/lsp/org.eclipse.cdt.lsp.core/.settings/org.eclipse.jdt.ui.prefs b/lsp/org.eclipse.cdt.lsp.core/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/lsp/org.eclipse.cdt.lsp.core/.settings/org.eclipse.jdt.ui.prefs
+++ b/lsp/org.eclipse.cdt.lsp.core/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/lsp/org.eclipse.cdt.lsp.core/.settings/org.eclipse.pde.ds.annotations.prefs b/lsp/org.eclipse.cdt.lsp.core/.settings/org.eclipse.pde.ds.annotations.prefs
new file mode 100644
index 00000000000..73a356b6d05
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.core/.settings/org.eclipse.pde.ds.annotations.prefs
@@ -0,0 +1,8 @@
+classpath=true
+dsVersion=V1_3
+eclipse.preferences.version=1
+enabled=true
+generateBundleActivationPolicyLazy=true
+path=OSGI-INF
+validationErrorLevel=error
+validationErrorLevel.missingImplicitUnbindMethod=error
diff --git a/lsp/org.eclipse.cdt.lsp.core/META-INF/MANIFEST.MF b/lsp/org.eclipse.cdt.lsp.core/META-INF/MANIFEST.MF
index f765fac8677..f06db3fb2dc 100644
--- a/lsp/org.eclipse.cdt.lsp.core/META-INF/MANIFEST.MF
+++ b/lsp/org.eclipse.cdt.lsp.core/META-INF/MANIFEST.MF
@@ -1,29 +1,29 @@
Manifest-Version: 1.0
+Automatic-Module-Name: org.eclipse.cdt.lsp.core
Bundle-ManifestVersion: 2
-Bundle-Name: %Bundle-Name
Bundle-SymbolicName: org.eclipse.cdt.lsp.core;singleton:=true
-Bundle-Version: 1.0.0.qualifier
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Require-Bundle: org.apache.commons.io,
+Bundle-Version: 1.1.300.qualifier
+Bundle-Name: %Bundle-Name
+Bundle-Vendor: %Bundle-Vendor
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Require-Bundle: com.google.gson;bundle-version="2.8.2",
+ org.eclipse.cdt.core,
+ org.eclipse.core.filebuffers;bundle-version="3.6.1000",
+ org.eclipse.core.resources,
org.eclipse.core.runtime,
org.eclipse.lsp4e,
- org.eclipse.ui.genericeditor;bundle-version="1.0.0",
- org.eclipse.jface.text,
- org.eclipse.cdt.ui,
- org.eclipse.cdt.core,
- org.eclipse.jface,
- org.eclipse.ui,
org.eclipse.lsp4j,
- org.eclipse.core.commands,
- org.eclipse.core.expressions,
- org.eclipse.core.resources,
- com.google.gson;bundle-version="2.8.2",
- org.eclipse.lsp4j.jsonrpc
-Bundle-Vendor: %Bundle-Vendor
-Export-Package: org.eclipse.cdt.lsp.core,
- org.eclipse.cdt.lsp.core.cquery
+ org.eclipse.lsp4j.jsonrpc,
+ org.eclipse.osgi.services;bundle-version="3.9.0";resolution:=optional,
+ org.eclipse.text,
+ org.eclipse.ui
+Export-Package: org.eclipse.cdt.lsp;x-friends:="org.eclipse.cdt.lsp.ui,org.eclipse.cdt.lsp.clangd",
+ org.eclipse.cdt.lsp.core;x-friends:="org.eclipse.cdt.lsp.ui",
+ org.eclipse.cdt.lsp.core.preferences;x-friends:="org.eclipse.cdt.lsp.ui",
+ org.eclipse.cdt.lsp.internal.core;x-internal:=true,
+ org.eclipse.cdt.lsp.internal.core.preferences;x-friends:="org.eclipse.cdt.lsp.ui",
+ org.eclipse.cdt.lsp.internal.core.workspace;x-friends:="org.eclipse.cdt.lsp.ui"
Bundle-Activator: org.eclipse.cdt.lsp.core.Activator
Bundle-ActivationPolicy: lazy
-Import-Package: org.eclipse.ui.editors.text,
- org.eclipse.ui.texteditor
-Automatic-Module-Name: org.eclipse.cdt.lsp.core
+Service-Component: OSGI-INF/org.eclipse.cdt.lsp.internal.core.ContributedLanguageServers.xml,
+ OSGI-INF/org.eclipse.cdt.lsp.internal.core.ContributedProtocolExtensions.xml
diff --git a/lsp/org.eclipse.cdt.lsp.core/OSGI-INF/l10n/bundle.properties b/lsp/org.eclipse.cdt.lsp.core/OSGI-INF/l10n/bundle.properties
index 2d9f4a01a44..d1bf8837011 100644
--- a/lsp/org.eclipse.cdt.lsp.core/OSGI-INF/l10n/bundle.properties
+++ b/lsp/org.eclipse.cdt.lsp.core/OSGI-INF/l10n/bundle.properties
@@ -1,12 +1,19 @@
#Properties file for org.eclipse.cdt.lsp.core
+###############################################################################
+# Copyright (c) 2017-2019 Eclipse contributors and others.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0/.
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+
+Bundle-Name = CDT LSP Core
Bundle-Vendor = Eclipse CDT
-Bundle-Name = LSP4E C/C++ Support Plug-in
+
content-type.name = C/C++
server.label = C/C++ Language Server
reindex.command.name = Reindex
reindex.command.label = Reindex
-
-cDocumentSetupParticipant =C Document Setup Participant
-
-PreferencePageTitle=C/C++ Language Server
diff --git a/lsp/org.eclipse.cdt.lsp.core/OSGI-INF/org.eclipse.cdt.lsp.internal.core.ContributedLanguageServers.xml b/lsp/org.eclipse.cdt.lsp.core/OSGI-INF/org.eclipse.cdt.lsp.internal.core.ContributedLanguageServers.xml
new file mode 100644
index 00000000000..0d782917b90
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.core/OSGI-INF/org.eclipse.cdt.lsp.internal.core.ContributedLanguageServers.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.eclipse.cdt.lsp.internal.core.ContributedLanguageServers">
+ <service>
+ <provide interface="org.eclipse.cdt.lsp.SupportedLanguageServers"/>
+ </service>
+ <reference bind="register" cardinality="0..n" interface="org.eclipse.cdt.lsp.LanguageServerConfiguration" name="register" unbind="unregister"/>
+ <implementation class="org.eclipse.cdt.lsp.internal.core.ContributedLanguageServers"/>
+</scr:component> \ No newline at end of file
diff --git a/lsp/org.eclipse.cdt.lsp.core/OSGI-INF/org.eclipse.cdt.lsp.internal.core.ContributedProtocolExtensions.xml b/lsp/org.eclipse.cdt.lsp.core/OSGI-INF/org.eclipse.cdt.lsp.internal.core.ContributedProtocolExtensions.xml
new file mode 100644
index 00000000000..7f69e40edea
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.core/OSGI-INF/org.eclipse.cdt.lsp.internal.core.ContributedProtocolExtensions.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.eclipse.cdt.lsp.internal.core.ContributedProtocolExtensions">
+ <service>
+ <provide interface="org.eclipse.cdt.lsp.SupportedProtocolExtensions"/>
+ </service>
+ <reference bind="register" cardinality="0..n" interface="org.eclipse.cdt.lsp.LanguageProtocolExtension" name="register" unbind="unregister"/>
+ <implementation class="org.eclipse.cdt.lsp.internal.core.ContributedProtocolExtensions"/>
+</scr:component> \ No newline at end of file
diff --git a/lsp/org.eclipse.cdt.lsp.core/about.html b/lsp/org.eclipse.cdt.lsp.core/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.core/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/lsp/org.eclipse.cdt.lsp.core/build.properties b/lsp/org.eclipse.cdt.lsp.core/build.properties
index 04fa2eee8dd..f25513a75fb 100644
--- a/lsp/org.eclipse.cdt.lsp.core/build.properties
+++ b/lsp/org.eclipse.cdt.lsp.core/build.properties
@@ -1,7 +1,22 @@
+###############################################################################
+# Copyright (c) 2017-2019 Ericsson and others
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# https://www.eclipse.org/legal/epl-2.0/.
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Ericsson - initial API and implementation
+# Alexander Fedorov <alexander.fedorov@arsysop.ru> - Bug 558484
+###############################################################################
+
source.. = src/
output.. = bin/
bin.includes = META-INF/,\
.,\
- plugin.xml,\
OSGI-INF/,\
- OSGI-INF/l10n/bundle.properties
+ plugin.xml,\
+ about.html
+src.includes = about.html
diff --git a/lsp/org.eclipse.cdt.lsp.core/plugin.xml b/lsp/org.eclipse.cdt.lsp.core/plugin.xml
index 71e437050e6..f054978f80c 100644
--- a/lsp/org.eclipse.cdt.lsp.core/plugin.xml
+++ b/lsp/org.eclipse.cdt.lsp.core/plugin.xml
@@ -1,5 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
+<!--
+ Copyright (c) 2017-2019 Ericsson and others
+
+ This program and the accompanying materials are made available under the
+ terms of the Eclipse Public License 2.0 which is available at
+ https://www.eclipse.org/legal/epl-2.0/.
+
+ SPDX-License-Identifier: EPL-2.0
+
+ Contributors:
+ Ericsson - initial API and implementation
+ Alexander Fedorov <alexander.fedorov@arsysop.ru> - Bug 558484
+-->
<plugin>
<extension
point="org.eclipse.core.contenttype.contentTypes">
@@ -17,56 +30,42 @@
class="org.eclipse.cdt.lsp.core.CPPStreamConnectionProvider"
id="org.eclipse.cdt.lsp.core"
label="%server.label"
- clientImpl="org.eclipse.cdt.lsp.core.Server2ClientProtocolExtension" >
+ launcherBuilder="org.eclipse.cdt.lsp.internal.core.DelegatingLauncherBuilder"
+ singleton="true">
</server>
<contentTypeMapping
contentType="org.eclipse.cdt.lsp.core"
id="org.eclipse.cdt.lsp.core">
+ <enabledWhen
+ description="Project-level settings">
+ <reference
+ definitionId="org.eclipse.cdt.lsp.core.projectAllows">
+ </reference>
+ </enabledWhen>
</contentTypeMapping>
</extension>
<extension
- id="org.eclipse.cdt.lsp.core.CDocumentSetupParticipant"
- name="%cDocumentSetupParticipant"
- point="org.eclipse.core.filebuffers.documentSetup">
- <participant
- class="org.eclipse.cdt.internal.ui.editor.CDocumentSetupParticipant"
- contentTypeId="org.eclipse.cdt.lsp.core">
- </participant>
- </extension>
- <extension
- point="org.eclipse.ui.editors">
- <editorContentTypeBinding
- contentTypeId="org.eclipse.cdt.lsp.core"
- editorId="org.eclipse.ui.genericeditor.GenericEditor">
- </editorContentTypeBinding>
- </extension>
- <extension
- point="org.eclipse.ui.genericeditor.presentationReconcilers">
- <presentationReconciler
- class="org.eclipse.cdt.lsp.core.PresentationReconcilerCPP"
- contentType="org.eclipse.cdt.lsp.core">
- </presentationReconciler>
- </extension>
- <extension
- point="org.eclipse.ui.preferencePages">
- <page
- class="org.eclipse.cdt.lsp.core.CPPLanguageServerPreferencePage"
- category="org.eclipse.cdt.ui.preferences.CPluginPreferencePage"
- id="org.eclipse.cdt.lsp.core.CPPLanguageServerPreferencePage"
- name="%PreferencePageTitle">
- </page>
- </extension>
- <extension
point="org.eclipse.core.runtime.preferences">
<initializer
class="org.eclipse.cdt.lsp.core.PreferenceInitializer">
</initializer>
</extension>
<extension
- point="org.eclipse.ui.genericeditor.autoEditStrategies">
- <autoEditStrategy
- class="org.eclipse.cdt.lsp.core.AutoIndentStrategyCPP"
- contentType="org.eclipse.cdt.lsp.core">
- </autoEditStrategy>
+ point="org.eclipse.core.expressions.definitions">
+ <definition
+ id="org.eclipse.cdt.lsp.core.projectAllows">
+ <and>
+ <reference
+ definitionId="org.eclipse.ui.genericeditor.GenericEditor.active">
+ </reference>
+ <with
+ variable="activeEditor">
+ <test
+ property="org.eclipse.cdt.lsp.documents.prefer"
+ value="true">
+ </test>
+ </with>
+ </and>
+ </definition>
</extension>
</plugin>
diff --git a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/LanguageProtocolExtension.java b/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/LanguageProtocolExtension.java
new file mode 100644
index 00000000000..e3e23a6b98c
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/LanguageProtocolExtension.java
@@ -0,0 +1,34 @@
+/*******************************************************************************
+ * Copyright (c) 2020 ArSysOp and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov (ArSysOp) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.lsp;
+
+import org.eclipse.lsp4j.jsonrpc.services.ServiceEndpoints;
+
+/**
+ *
+ * Declares the language protocol extension methods.
+ *
+ * @see ServiceEndpoints#getSupportedMethods(Class)
+ *
+ */
+public interface LanguageProtocolExtension {
+
+ /**
+ *
+ * @return the identifier of the target language server
+ * @see LanguageServerConfiguration#identifier()
+ */
+ String targetIdentifier();
+
+}
diff --git a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/LanguageServerConfiguration.java b/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/LanguageServerConfiguration.java
new file mode 100644
index 00000000000..01cfda8f965
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/LanguageServerConfiguration.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * Copyright (c) 2020 ArSysOp and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov (ArSysOp) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.lsp;
+
+import java.net.URI;
+
+/**
+ *
+ * Holds the configuration for a contributed language server.
+ *
+ */
+public interface LanguageServerConfiguration {
+
+ String identifier();
+
+ String label();
+
+ Object options(Object defaults, URI uri);
+
+}
diff --git a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/SupportedLanguageServers.java b/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/SupportedLanguageServers.java
new file mode 100644
index 00000000000..72f25e28f97
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/SupportedLanguageServers.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2020 ArSysOp and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov (ArSysOp) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.lsp;
+
+import java.util.Collection;
+
+/**
+ *
+ * Provides access to the configurations of supported language servers.
+ *
+ */
+public interface SupportedLanguageServers {
+
+ Collection<LanguageServerConfiguration> all();
+
+ LanguageServerConfiguration preferred();
+
+}
diff --git a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/SupportedProtocolExtensions.java b/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/SupportedProtocolExtensions.java
new file mode 100644
index 00000000000..95e55302c9a
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/SupportedProtocolExtensions.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2020 ArSysOp and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov (ArSysOp) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.lsp;
+
+import java.util.Collection;
+
+/**
+ *
+ * Provides access to the language protocol extensions.
+ *
+ */
+public interface SupportedProtocolExtensions {
+
+ Collection<LanguageProtocolExtension> all();
+
+ Collection<LanguageProtocolExtension> applicable(LanguageServerConfiguration server);
+
+}
diff --git a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/Activator.java b/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/Activator.java
index 82e3149a670..1574abc8cea 100644
--- a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/Activator.java
+++ b/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/Activator.java
@@ -11,8 +11,6 @@
package org.eclipse.cdt.lsp.core;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.osgi.framework.BundleContext;
@@ -41,33 +39,4 @@ public class Activator extends AbstractUIPlugin {
return plugin;
}
- /**
- * Creates an error status.
- *
- * @noreference This method is not intended to be referenced by clients.
- */
- public static Status createErrorStatus(String message, Throwable e) {
- return new Status(IStatus.ERROR, PLUGIN_ID, IStatus.ERROR, message, e);
- }
-
- /**
- * @noreference This method is not intended to be referenced by clients.
- */
- public static void log(Throwable e) {
- log("Error", e); //$NON-NLS-1$
- }
-
- /**
- * @noreference This method is not intended to be referenced by clients.
- */
- public static void log(String message, Throwable e) {
- log(createErrorStatus(message, e));
- }
-
- /**
- * @noreference This method is not intended to be referenced by clients.
- */
- public static void log(IStatus status) {
- getDefault().getLog().log(status);
- }
}
diff --git a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/CPPLanguageServerPreferencePage.java b/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/CPPLanguageServerPreferencePage.java
deleted file mode 100644
index 41cd031a3d6..00000000000
--- a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/CPPLanguageServerPreferencePage.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2018 Manish Khurana , Nathan Ridge and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-
-package org.eclipse.cdt.lsp.core;
-
-import java.io.File;
-
-import org.eclipse.jface.preference.FieldEditor;
-import org.eclipse.jface.preference.FieldEditorPreferencePage;
-import org.eclipse.jface.preference.FileFieldEditor;
-import org.eclipse.jface.preference.RadioGroupFieldEditor;
-import org.eclipse.jface.preference.StringFieldEditor;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferencePage;
-
-/**
- * This class represents the preference page for C/C++ Language Server.
- */
-
-public class CPPLanguageServerPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {
-
- private FileFieldEditor serverPath;
- private RadioGroupFieldEditor serverChoice;
- private StringFieldEditor serverOptions;
-
- public CPPLanguageServerPreferencePage() {
- super(GRID);
- setPreferenceStore(Activator.getDefault().getPreferenceStore());
- setDescription(Messages.PreferencePageDescription);
- }
-
- @Override
- public void createFieldEditors() {
-
- serverChoice = new RadioGroupFieldEditor(PreferenceConstants.P_SERVER_CHOICE, Messages.ServerChoiceLabel, 1,
- new String[][] { { "ClangD", CPPStreamConnectionProvider.CLANGD_ID }, //$NON-NLS-1$
- { "CQuery", CPPStreamConnectionProvider.CQUERY_ID } }, //$NON-NLS-1$
- getFieldEditorParent());
- addField(serverChoice);
-
- serverPath = new FileFieldEditor(PreferenceConstants.P_SERVER_PATH, Messages.ServerPathLabel,
- getFieldEditorParent());
- addField(serverPath);
-
- serverOptions = new StringFieldEditor(PreferenceConstants.P_SERVER_OPTIONS, Messages.ServerOptionsLabel,
- getFieldEditorParent());
- addField(serverOptions);
- }
-
- @Override
- public void propertyChange(PropertyChangeEvent event) {
- if (event.getSource() == serverChoice && event.getProperty() == FieldEditor.VALUE) {
- File changedLSLocation = CPPStreamConnectionProvider.getDefaultLSLocation((String) event.getNewValue());
- if (changedLSLocation != null) {
- serverPath.setStringValue(changedLSLocation.getAbsolutePath());
- }
- }
- super.propertyChange(event);
- }
-
- @Override
- public void init(IWorkbench workbench) {
- }
-} \ No newline at end of file
diff --git a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/CPPResourceChangeListener.java b/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/CPPResourceChangeListener.java
index 19bc358e8ca..123d8d28c32 100644
--- a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/CPPResourceChangeListener.java
+++ b/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/CPPResourceChangeListener.java
@@ -1,12 +1,15 @@
/*******************************************************************************
- * Copyright (c) 2017 Ericsson and others.
+ * Copyright (c) 2017-2019 Ericsson and others.
*
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * https://www.eclipse.org/legal/epl-2.0/.
*
* SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Ericsson - initial API and implementation
+ * Alexander Fedorov <alexander.fedorov@arsysop.ru> - Bug 558516
*******************************************************************************/
package org.eclipse.cdt.lsp.core;
@@ -22,13 +25,14 @@ import org.eclipse.core.resources.IResourceChangeEvent;
import org.eclipse.core.resources.IResourceChangeListener;
import org.eclipse.core.resources.IResourceDelta;
import org.eclipse.core.runtime.CoreException;
+import org.eclipse.lsp4e.LanguageServerWrapper;
import org.eclipse.lsp4e.LanguageServersRegistry;
import org.eclipse.lsp4e.LanguageServersRegistry.LanguageServerDefinition;
import org.eclipse.lsp4e.LanguageServiceAccessor;
-import org.eclipse.lsp4e.LanguageServerWrapper;
import org.eclipse.lsp4j.DidChangeWatchedFilesParams;
import org.eclipse.lsp4j.FileChangeType;
import org.eclipse.lsp4j.FileEvent;
+import org.eclipse.osgi.util.NLS;
/**
* A resource listener used to generate FileEvents, as part of the LSP. This
@@ -59,7 +63,7 @@ final class CPPResourceChangeListener implements IResourceChangeListener {
private static void sendFileEvents(LanguageServerWrapper wrapper, List<FileEvent> fileEvents) {
if (!fileEvents.isEmpty()) {
DidChangeWatchedFilesParams params = new DidChangeWatchedFilesParams(fileEvents);
- wrapper.getServer().getWorkspaceService().didChangeWatchedFiles(params);
+ wrapper.getInitializedServer().join().getWorkspaceService().didChangeWatchedFiles(params);
}
}
@@ -114,7 +118,7 @@ final class CPPResourceChangeListener implements IResourceChangeListener {
} else if (delta.getKind() == IResourceDelta.REMOVED) {
changeType = FileChangeType.Deleted;
} else {
- throw new IllegalStateException("Unsupported resource delta kind: " + delta.getKind()); //$NON-NLS-1$
+ throw new IllegalStateException(NLS.bind("Unsupported resource delta kind: {0}", delta.getKind())); //$NON-NLS-1$
}
return new FileEvent(locationURI.toString(), changeType);
diff --git a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/CPPStreamConnectionProvider.java b/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/CPPStreamConnectionProvider.java
index 87f0481ca87..522fe7a9dc2 100644
--- a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/CPPStreamConnectionProvider.java
+++ b/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/CPPStreamConnectionProvider.java
@@ -1,12 +1,16 @@
/*******************************************************************************
- * Copyright (c) 2017 Ericsson and others.
+ * Copyright (c) 2017, 2020 Ericsson and others.
*
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * https://www.eclipse.org/legal/epl-2.0/.
*
* SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Ericsson - initial API and implementation
+ * Alexander Fedorov <alexander.fedorov@arsysop.ru> - Bug 558516
+ * Philip Langer <planger@eclipsesource.com> - Bug 563280
*******************************************************************************/
package org.eclipse.cdt.lsp.core;
@@ -17,9 +21,12 @@ import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URI;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
-import org.apache.commons.io.IOUtils;
+import org.eclipse.cdt.lsp.LanguageServerConfiguration;
+import org.eclipse.cdt.lsp.internal.core.ResolvePreferredServer;
+import org.eclipse.cdt.utils.CommandLineUtil;
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResourceChangeListener;
@@ -36,32 +43,22 @@ public class CPPStreamConnectionProvider extends ProcessStreamConnectionProvider
private static final IPreferenceStore store = Activator.getDefault().getPreferenceStore();
- private ICPPLanguageServer languageServer;
-
- public static final String CLANGD_ID = "clangd"; //$NON-NLS-1$
-
- public static final String CQUERY_ID = "cquery"; //$NON-NLS-1$
+ private final LanguageServerConfiguration configuration;
public CPPStreamConnectionProvider() throws UnsupportedOperationException {
- List<String> commands = new ArrayList<>();
- if (store.getString(PreferenceConstants.P_SERVER_CHOICE).equals(CQUERY_ID)) {
- languageServer = new CqueryLanguageServer();
- } else if (store.getString(PreferenceConstants.P_SERVER_CHOICE).equals(CLANGD_ID)) {
- languageServer = new ClangdLanguageServer();
- } else {
- throw new UnsupportedOperationException("Unsupported Language Server"); //$NON-NLS-1$
- }
- File defaultLSLocation = getDefaultLSLocation(store.getString(PreferenceConstants.P_SERVER_CHOICE));
+ configuration = new ResolvePreferredServer().apply(getClass());
+ File defaultLSLocation = getDefaultLSLocation(configuration.identifier());
if (defaultLSLocation != null) {
store.setDefault(PreferenceConstants.P_SERVER_PATH, defaultLSLocation.getAbsolutePath());
}
File languageServerLocation = getLanguageServerLocation();
String parent = ""; //$NON-NLS-1$
String flags = store.getString(PreferenceConstants.P_SERVER_OPTIONS);
+ List<String> commands = new ArrayList<>();
if (languageServerLocation != null) {
commands.add(languageServerLocation.getAbsolutePath());
if (!flags.isEmpty()) {
- commands.add(flags);
+ commands.addAll(Arrays.asList(CommandLineUtil.argumentsToArray(flags)));
}
parent = languageServerLocation.getParent();
}
@@ -81,8 +78,7 @@ public class CPPStreamConnectionProvider extends ProcessStreamConnectionProvider
@Override
public Object getInitializationOptions(URI rootPath) {
installResourceChangeListener(rootPath);
- Object defaultInitOptions = super.getInitializationOptions(rootPath);
- return languageServer.getLSSpecificInitializationOptions(defaultInitOptions, rootPath);
+ return configuration.options(super.getInitializationOptions(rootPath), rootPath);
}
private void installResourceChangeListener(URI rootPath) {
@@ -126,32 +122,29 @@ public class CPPStreamConnectionProvider extends ProcessStreamConnectionProvider
return null;
}
- static File getDefaultLSLocation(String selectedLanguageServer) {
+ //FIXME: to be extracted to a separate type
+ public static File getDefaultLSLocation(String selectedLanguageServer) {
String res = null;
String[] command = new String[] { "/bin/bash", "-c", "which " + selectedLanguageServer }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
if (Platform.getOS().equals(Platform.OS_WIN32)) {
command = new String[] { "cmd", "/c", "where " + selectedLanguageServer }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
}
- BufferedReader reader = null;
try {
Process p = Runtime.getRuntime().exec(command);
- reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
- res = reader.readLine();
+ try (BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()))) {
+ res = reader.readLine();
+ }
} catch (IOException e) {
+ //FIXME: rework this branch , it may contain valuable information to understand the problem
e.printStackTrace();
- } finally {
- IOUtils.closeQuietly(reader);
}
-
if (res == null) {
return null;
}
-
File f = new File(res);
if (f.canExecute()) {
return f;
}
-
return null;
}
}
diff --git a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/ClangdLanguageServer.java b/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/ClangdLanguageServer.java
deleted file mode 100644
index 5462ad32032..00000000000
--- a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/ClangdLanguageServer.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2018 Manish Khurana , Nathan Ridge and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-
-package org.eclipse.cdt.lsp.core;
-
-import java.net.URI;
-
-public class ClangdLanguageServer implements ICPPLanguageServer {
-
- @Override
- public Object getLSSpecificInitializationOptions(Object defaultInitOptions, URI rootPath) {
- return defaultInitOptions;
- }
-
-}
diff --git a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/CqueryLanguageServer.java b/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/CqueryLanguageServer.java
deleted file mode 100644
index 953a8f745a2..00000000000
--- a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/CqueryLanguageServer.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2018 Manish Khurana , Nathan Ridge and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-
-package org.eclipse.cdt.lsp.core;
-
-import java.net.URI;
-
-import org.eclipse.cdt.internal.ui.editor.CEditor;
-import org.eclipse.cdt.ui.CUIPlugin;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
-
-import com.google.gson.JsonObject;
-
-public class CqueryLanguageServer implements ICPPLanguageServer {
-
- @Override
- public Object getLSSpecificInitializationOptions(Object defaultInitOptions, URI rootPath) {
-
- // TODO: Allow user to specify cache directory path
-
- IPath cacheDirectory = Path.fromOSString(rootPath.getPath()).append(".cdt-lsp/cquery_index"); //$NON-NLS-1$
- JsonObject result = (defaultInitOptions instanceof JsonObject) ? (JsonObject) defaultInitOptions
- : new JsonObject();
- result.addProperty("cacheDirectory", cacheDirectory.toString()); //$NON-NLS-1$
- result.addProperty("emitInactiveRegions", //$NON-NLS-1$
- CUIPlugin.getDefault().getPreferenceStore().getBoolean(CEditor.INACTIVE_CODE_ENABLE));
- JsonObject semanticHighlights = new JsonObject();
- semanticHighlights.addProperty("enabled", CUIPlugin.getDefault().getPreferenceStore() //$NON-NLS-1$
- .getBoolean(org.eclipse.cdt.ui.PreferenceConstants.EDITOR_SEMANTIC_HIGHLIGHTING_ENABLED));
- result.add("highlight", semanticHighlights); //$NON-NLS-1$
- return result;
- }
-
-}
diff --git a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/ICPPLanguageServer.java b/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/ICPPLanguageServer.java
deleted file mode 100644
index cfe0068b794..00000000000
--- a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/ICPPLanguageServer.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2018 Manish Khurana , Nathan Ridge and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-
-package org.eclipse.cdt.lsp.core;
-
-import java.net.URI;
-
-/*
- * Encapsulates functionality specific to a particular C++ language server (e.g., CQuery)
- */
-public interface ICPPLanguageServer {
-
- public Object getLSSpecificInitializationOptions(Object defaultInitOptions, URI rootPath);
-
-}
diff --git a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/Messages.java b/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/Messages.java
deleted file mode 100644
index 4b2dd274e04..00000000000
--- a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/Messages.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2018 Manish Khurana , Nathan Ridge and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-
-package org.eclipse.cdt.lsp.core;
-
-import org.eclipse.osgi.util.NLS;
-
-public class Messages extends NLS {
- public static String PreferencePageDescription;
- public static String ServerChoiceLabel;
- public static String ServerPathLabel;
- public static String ServerOptionsLabel;
- public static String CqueryStateIdle;
- public static String CqueryStateBusy;
-
- static {
- NLS.initializeMessages(Messages.class.getName(), Messages.class);
- }
-}
diff --git a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/Messages.properties b/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/Messages.properties
deleted file mode 100644
index 31a3b4ff5a5..00000000000
--- a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/Messages.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-################################################################################
-# Copyright (c) 2018 Manish Khurana , Nathan Ridge and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#################################################################################
-
-PreferencePageDescription=Preferences for the C/C++ Language Server\n\n
-ServerChoiceLabel=Please select the C/C++ Language Server you want to use in Eclipse :
-ServerPathLabel=Browse path to the server executable
-ServerOptionsLabel=Enter any command-line options for the server
-CqueryStateIdle=CQuery : Idle
-CqueryStateBusy=CQuery : Busy | {0} Jobs \ No newline at end of file
diff --git a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/PreferenceInitializer.java b/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/PreferenceInitializer.java
index d1d41b7cce0..ab9f00c5da5 100644
--- a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/PreferenceInitializer.java
+++ b/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/PreferenceInitializer.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2018 Manish Khurana , Nathan Ridge and others.
+ * Copyright (c) 2018, 2020 Manish Khurana , Nathan Ridge and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -12,7 +12,8 @@
package org.eclipse.cdt.lsp.core;
import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
-import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.core.runtime.preferences.DefaultScope;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences;
/**
* Class used to initialize default preference values for C/C++ Preference Page.
@@ -21,9 +22,10 @@ public class PreferenceInitializer extends AbstractPreferenceInitializer {
@Override
public void initializeDefaultPreferences() {
- IPreferenceStore store = Activator.getDefault().getPreferenceStore();
- store.setDefault(PreferenceConstants.P_SERVER_CHOICE, "clangd"); //$NON-NLS-1$
- store.setDefault(PreferenceConstants.P_SERVER_OPTIONS, ""); //$NON-NLS-1$
+ IEclipsePreferences node = DefaultScope.INSTANCE.getNode(Activator.PLUGIN_ID);
+ //FIXME: how to determine the preferred LS implementation?
+ node.put(PreferenceConstants.P_SERVER_CHOICE, "clangd"); //$NON-NLS-1$
+ node.put(PreferenceConstants.P_SERVER_OPTIONS, ""); //$NON-NLS-1$
}
}
diff --git a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/Server2ClientProtocolExtension.java b/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/Server2ClientProtocolExtension.java
deleted file mode 100644
index 31071e6a69d..00000000000
--- a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/Server2ClientProtocolExtension.java
+++ /dev/null
@@ -1,246 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2018 Manish Khurana , Nathan Ridge and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-
-package org.eclipse.cdt.lsp.core;
-
-import java.net.URI;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.cdt.internal.ui.editor.SemanticHighlightingManager.HighlightedPosition;
-import org.eclipse.cdt.internal.ui.editor.SemanticHighlightingManager.HighlightingStyle;
-import org.eclipse.cdt.lsp.core.cquery.CqueryInactiveRegions;
-import org.eclipse.cdt.lsp.core.cquery.CquerySemanticHighlights;
-import org.eclipse.cdt.lsp.core.cquery.HighlightSymbol;
-import org.eclipse.cdt.lsp.core.cquery.IndexingProgressStats;
-import org.eclipse.cdt.ui.CUIPlugin;
-import org.eclipse.cdt.ui.PreferenceConstants;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.jface.action.StatusLineContributionItem;
-import org.eclipse.jface.action.StatusLineManager;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.preference.PreferenceConverter;
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.BadPositionCategoryException;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.Position;
-import org.eclipse.jface.text.Region;
-import org.eclipse.jface.text.TextAttribute;
-import org.eclipse.jface.text.TextPresentation;
-import org.eclipse.lsp4e.LSPEclipseUtils;
-import org.eclipse.lsp4e.LanguageClientImpl;
-import org.eclipse.lsp4j.Range;
-import org.eclipse.lsp4j.jsonrpc.services.JsonNotification;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.WorkbenchWindow;
-
-@SuppressWarnings("restriction")
-public class Server2ClientProtocolExtension extends LanguageClientImpl {
-
- @JsonNotification("$cquery/progress")
- public final void indexingProgress(IndexingProgressStats stats) {
-
- Display.getDefault().asyncExec(() -> {
- final String cqueryStatusFieldId = "org.eclipse.cdt.lsp.core.status"; //$NON-NLS-1$
- final int width = 28;
- IWorkbenchWindow[] workbenchWindows = PlatformUI.getWorkbench().getWorkbenchWindows();
- for (IWorkbenchWindow window : workbenchWindows) {
- StatusLineManager statusLine = ((WorkbenchWindow) window).getStatusLineManager();
- StatusLineContributionItem cqueryStatusField = (StatusLineContributionItem) statusLine
- .find(cqueryStatusFieldId);
- if (cqueryStatusField == null) {
- cqueryStatusField = new StatusLineContributionItem(cqueryStatusFieldId, width);
- statusLine.add(cqueryStatusField);
- }
- String msg = stats.getTotalJobs() > 0 ? NLS.bind(Messages.CqueryStateBusy, stats.getTotalJobs())
- : Messages.CqueryStateIdle;
- cqueryStatusField.setText(msg);
- }
- });
- }
-
- @JsonNotification("$cquery/setInactiveRegions")
- public final void setInactiveRegions(CqueryInactiveRegions regions) {
- URI uriReceived = regions.getUri();
- List<Range> inactiveRegions = regions.getInactiveRegions();
- IDocument doc = null;
-
- // To get the document for the received URI.
- for (PresentationReconcilerCPP eachReconciler : PresentationReconcilerCPP.presentationReconcilers) {
- IDocument currentReconcilerDoc = eachReconciler.getTextViewer().getDocument();
- URI currentReconcilerUri = getUri(currentReconcilerDoc);
-
- if (currentReconcilerUri == null) {
- continue;
- }
-
- if (uriReceived.equals(currentReconcilerUri)) {
- doc = currentReconcilerDoc;
- break;
- }
- }
-
- if (doc == null) {
- return;
- }
-
- // Removing inactive code highlighting position category and old positions from document.
- try {
- doc.removePositionCategory(PresentationReconcilerCPP.INACTIVE_CODE_HIGHLIGHTING_POSITION_CATEGORY);
- } catch (BadPositionCategoryException e) {
- Activator.log(e);
- }
- // Again add Inactive Code Position Category to the document.
- doc.addPositionCategory(PresentationReconcilerCPP.INACTIVE_CODE_HIGHLIGHTING_POSITION_CATEGORY);
-
- for (Range region : inactiveRegions) {
- int offset = 0, length = 0;
- try {
- offset = doc.getLineOffset(region.getStart().getLine());
- length = doc.getLineOffset(region.getEnd().getLine()) - offset;
- } catch (BadLocationException e) {
- Activator.log(e);
- }
-
- Position inactivePosition = new Position(offset, length);
- try {
- doc.addPosition(PresentationReconcilerCPP.INACTIVE_CODE_HIGHLIGHTING_POSITION_CATEGORY,
- inactivePosition);
- } catch (BadLocationException | BadPositionCategoryException e) {
- Activator.log(e);
- }
- }
- }
-
- @JsonNotification("$cquery/publishSemanticHighlighting")
- public final void semanticHighlights(CquerySemanticHighlights highlights) {
- URI uriReceived = highlights.getUri();
-
- // List of PresentationReconcilerCPP objects attached with same C++ source file.
- List<PresentationReconcilerCPP> matchingReconcilers = new ArrayList<>();
-
- for (PresentationReconcilerCPP eachReconciler : PresentationReconcilerCPP.presentationReconcilers) {
- IDocument currentReconcilerDoc = eachReconciler.getTextViewer().getDocument();
- URI currentReconcilerUri = getUri(currentReconcilerDoc);
-
- if (currentReconcilerUri == null) {
- continue;
- }
-
- if (uriReceived.equals(currentReconcilerUri)) {
- matchingReconcilers.add(eachReconciler);
- }
- }
-
- if (matchingReconcilers.size() == 0) {
- return;
- }
-
- // Using only first object of matchingReconcilers because all reconciler objects share same document object.
- IDocument doc = matchingReconcilers.get(0).getTextViewer().getDocument();
- IPreferenceStore store = CUIPlugin.getDefault().getPreferenceStore();
-
- // Removing semantic highlighting position category and old positions from document.
- try {
- doc.removePositionCategory(PresentationReconcilerCPP.SEMANTIC_HIGHLIGHTING_POSITION_CATEGORY);
- } catch (BadPositionCategoryException e) {
- Activator.log(e);
- }
- // Again add Semantic Highlighting Position Category to the document.
- doc.addPositionCategory(PresentationReconcilerCPP.SEMANTIC_HIGHLIGHTING_POSITION_CATEGORY);
-
- for (HighlightSymbol highlight : highlights.getSymbols()) {
-
- String highlightingName = HighlightSymbol.getHighlightingName(highlight.getKind(),
- highlight.getParentKind(), highlight.getStorage(), highlight.getRole());
- String colorKey = PreferenceConstants.EDITOR_SEMANTIC_HIGHLIGHTING_PREFIX + highlightingName
- + PreferenceConstants.EDITOR_SEMANTIC_HIGHLIGHTING_COLOR_SUFFIX;
-
- boolean isEnabled = store.getBoolean(PreferenceConstants.EDITOR_SEMANTIC_HIGHLIGHTING_PREFIX
- + highlightingName + PreferenceConstants.EDITOR_SEMANTIC_HIGHLIGHTING_ENABLED_SUFFIX);
- boolean isBold = store.getBoolean(PreferenceConstants.EDITOR_SEMANTIC_HIGHLIGHTING_PREFIX + highlightingName
- + PreferenceConstants.EDITOR_SEMANTIC_HIGHLIGHTING_BOLD_SUFFIX);
- boolean isItalic = store.getBoolean(PreferenceConstants.EDITOR_SEMANTIC_HIGHLIGHTING_PREFIX
- + highlightingName + PreferenceConstants.EDITOR_SEMANTIC_HIGHLIGHTING_ITALIC_SUFFIX);
- boolean isUnderline = store.getBoolean(PreferenceConstants.EDITOR_SEMANTIC_HIGHLIGHTING_PREFIX
- + highlightingName + PreferenceConstants.EDITOR_SEMANTIC_HIGHLIGHTING_UNDERLINE_SUFFIX);
- boolean isStrikethrough = store.getBoolean(PreferenceConstants.EDITOR_SEMANTIC_HIGHLIGHTING_PREFIX
- + highlightingName + PreferenceConstants.EDITOR_SEMANTIC_HIGHLIGHTING_STRIKETHROUGH_SUFFIX);
-
- // TODO: Use IColorManager to cache Color objects so that only one object per color is created.
- Color color = new Color(Display.getCurrent(),
- PreferenceConverter.getColor(CUIPlugin.getDefault().getPreferenceStore(), colorKey));
-
- List<Range> ranges = highlight.getRanges();
- for (Range range : ranges) {
-
- int offset = 0, length = 0;
- try {
- offset = doc.getLineOffset(range.getStart().getLine()) + range.getStart().getCharacter();
- length = doc.getLineOffset(range.getEnd().getLine()) + range.getEnd().getCharacter() - offset;
- } catch (BadLocationException e) {
- Activator.log(e);
- }
-
- int textStyle = SWT.NORMAL;
-
- if (isBold) {
- textStyle = SWT.BOLD;
- }
- if (isItalic) {
- textStyle |= SWT.ITALIC;
- }
- if (isUnderline) {
- textStyle |= TextAttribute.UNDERLINE;
- }
- if (isStrikethrough) {
- textStyle |= TextAttribute.STRIKETHROUGH;
- }
-
- TextAttribute textAttribute = new TextAttribute(color, null, textStyle);
- HighlightingStyle highlightingStyle = new HighlightingStyle(textAttribute, isEnabled);
- HighlightedPosition highlightedPosition = new HighlightedPosition(offset, length, highlightingStyle,
- matchingReconcilers.get(0).getSemanticHighlightingPositionUpdater());
- try {
- doc.addPosition(PresentationReconcilerCPP.SEMANTIC_HIGHLIGHTING_POSITION_CATEGORY,
- highlightedPosition);
- } catch (BadLocationException | BadPositionCategoryException e) {
- Activator.log(e);
- }
- }
- }
-
- Display.getDefault().asyncExec(() -> {
- for (PresentationReconcilerCPP eachReconciler : matchingReconcilers) {
- TextPresentation presentation = eachReconciler.createPresentation(new Region(0, doc.getLength()), doc);
- eachReconciler.getTextViewer().changeTextPresentation(presentation, false);
- }
- });
- }
-
- /*
- * Returns the URI of the Document provided.
- * Can return null value.
- */
- public static URI getUri(IDocument document) {
- URI uri = null;
- IFile file = LSPEclipseUtils.getFile(document);
- if (file != null) {
- uri = LSPEclipseUtils.toUri(file);
- }
- return uri;
- }
-}
diff --git a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/cquery/CquerySymbolKind.java b/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/cquery/CquerySymbolKind.java
deleted file mode 100644
index 7d41701a975..00000000000
--- a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/cquery/CquerySymbolKind.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2018 Manish Khurana , Nathan Ridge and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-
-package org.eclipse.cdt.lsp.core.cquery;
-
-enum CquerySymbolKind {
- Unknown(0), TypeAlias(252), Parameter(253), StaticMethod(254), Macro(255);
-
- private int value;
-
- public int getValue() {
- return value;
- }
-
- private CquerySymbolKind(int value) {
- this.value = value;
- }
-
- public static CquerySymbolKind forValue(int value) {
- switch (value) {
- case 0:
- return CquerySymbolKind.Unknown;
- case 252:
- return CquerySymbolKind.TypeAlias;
- case 253:
- return CquerySymbolKind.Parameter;
- case 254:
- return CquerySymbolKind.StaticMethod;
- case 255:
- return CquerySymbolKind.Macro;
- default:
- throw new IllegalArgumentException("Illegal value for cquery symbol kind"); //$NON-NLS-1$
- }
- }
-} \ No newline at end of file
diff --git a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/cquery/HighlightSymbol.java b/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/cquery/HighlightSymbol.java
deleted file mode 100644
index b5b4820a33e..00000000000
--- a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/cquery/HighlightSymbol.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2018 Manish Khurana , Nathan Ridge and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-
-package org.eclipse.cdt.lsp.core.cquery;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.cdt.internal.ui.editor.SemanticHighlightings;
-import org.eclipse.lsp4j.Range;
-import org.eclipse.lsp4j.SymbolKind;
-
-public class HighlightSymbol {
- private int stableId;
- private ExtendedSymbolKindType parentKind;
- private ExtendedSymbolKindType kind;
- private StorageClass storage;
- private List<Range> ranges;
- private Integer role;
- public static Map<Integer, String> semanticHighlightSymbolsMap = new HashMap<>();
-
- static {
- semanticHighlightSymbolsMap.put(SymbolKind.Namespace.getValue(), SemanticHighlightings.NAMESPACE);
- semanticHighlightSymbolsMap.put(SymbolKind.Class.getValue(), SemanticHighlightings.CLASS);
- semanticHighlightSymbolsMap.put(SymbolKind.Enum.getValue(), SemanticHighlightings.ENUM);
- semanticHighlightSymbolsMap.put(SymbolKind.EnumMember.getValue(), SemanticHighlightings.ENUMERATOR);
- semanticHighlightSymbolsMap.put(SymbolKind.Struct.getValue(), SemanticHighlightings.CLASS);
- semanticHighlightSymbolsMap.put(SymbolKind.TypeParameter.getValue(), SemanticHighlightings.TEMPLATE_PARAMETER);
- semanticHighlightSymbolsMap.put(CquerySymbolKind.TypeAlias.getValue(), SemanticHighlightings.TYPEDEF);
- semanticHighlightSymbolsMap.put(CquerySymbolKind.Parameter.getValue(),
- SemanticHighlightings.PARAMETER_VARIABLE);
- semanticHighlightSymbolsMap.put(CquerySymbolKind.StaticMethod.getValue(),
- SemanticHighlightings.STATIC_METHOD_INVOCATION);
- semanticHighlightSymbolsMap.put(CquerySymbolKind.Macro.getValue(), SemanticHighlightings.MACRO_DEFINITION);
- }
-
- public static boolean isDeclaration(int role) {
- return (role & SymbolRole.Declaration) != 0 || (role & SymbolRole.Definition) != 0;
- }
-
- public static String getHighlightingName(ExtendedSymbolKindType kind, ExtendedSymbolKindType parentKind,
- StorageClass storage, int role) {
- // semanticHighlightSymbolsMap contains mappings where the color is determined entirely
- // by the symbol kind.
- // The additional checks below handle cases where the color also depends on the parent kind,
- // storage class, or role.
- String highlightingName = semanticHighlightSymbolsMap.get(kind.getValue());
- if (highlightingName == null) {
- if (kind.getValue() == SymbolKind.Variable.getValue()) {
- if (parentKind.getValue() == SymbolKind.Function.getValue()
- || parentKind.getValue() == SymbolKind.Method.getValue()
- || parentKind.getValue() == SymbolKind.Constructor.getValue()) {
- highlightingName = isDeclaration(role) ? SemanticHighlightings.LOCAL_VARIABLE_DECLARATION
- : SemanticHighlightings.LOCAL_VARIABLE;
- } else {
- highlightingName = SemanticHighlightings.GLOBAL_VARIABLE;
- }
- } else if (kind.getValue() == SymbolKind.Field.getValue()) {
- if (storage == StorageClass.Static) {
- highlightingName = SemanticHighlightings.STATIC_FIELD;
- } else {
- highlightingName = SemanticHighlightings.FIELD;
- }
- } else if (kind.getValue() == SymbolKind.Function.getValue()) {
- highlightingName = isDeclaration(role) ? SemanticHighlightings.FUNCTION_DECLARATION
- : SemanticHighlightings.FUNCTION;
- } else if (kind.getValue() == SymbolKind.Method.getValue()
- || kind.getValue() == SymbolKind.Constructor.getValue()) {
- highlightingName = isDeclaration(role) ? SemanticHighlightings.METHOD_DECLARATION
- : SemanticHighlightings.METHOD;
- }
- }
- return highlightingName;
- }
-
- public HighlightSymbol(int stableId, ExtendedSymbolKindType parentKind, ExtendedSymbolKindType kind,
- StorageClass storage, Integer role, List<Range> ranges) {
- this.stableId = stableId;
- this.parentKind = parentKind;
- this.kind = kind;
- this.storage = storage;
- this.role = role;
- this.ranges = ranges;
- }
-
- public int getStableId() {
- return stableId;
- }
-
- public ExtendedSymbolKindType getParentKind() {
- return parentKind;
- }
-
- public ExtendedSymbolKindType getKind() {
- return kind;
- }
-
- public StorageClass getStorage() {
- return storage;
- }
-
- public Integer getRole() {
- return role;
- }
-
- public List<Range> getRanges() {
- return ranges;
- }
-} \ No newline at end of file
diff --git a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/cquery/StorageClass.java b/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/cquery/StorageClass.java
deleted file mode 100644
index 91ddd72986a..00000000000
--- a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/cquery/StorageClass.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2018 Manish Khurana , Nathan Ridge and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-
-package org.eclipse.cdt.lsp.core.cquery;
-
-public enum StorageClass {
- Invalid(0), None(1), Extern(2), Static(3), PrivateExtern(4), Auto(5), Register(6);
-
- private int value;
-
- public int getValue() {
- return value;
- }
-
- StorageClass(int value) {
- this.value = value;
- }
-
- public static StorageClass forValue(int value) {
- StorageClass[] allValues = StorageClass.values();
- if (value < 1 || value > allValues.length) {
- throw new IllegalArgumentException("Illegal enum value: " + value); //$NON-NLS-1$
- }
- return allValues[value - 1];
- }
-} \ No newline at end of file
diff --git a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/cquery/SymbolRole.java b/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/cquery/SymbolRole.java
deleted file mode 100644
index a163d711b90..00000000000
--- a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/cquery/SymbolRole.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2018 Nathan Ridge and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *******************************************************************************/
-
-package org.eclipse.cdt.lsp.core.cquery;
-
-/**
- * A class to contain constants that represent different roles
- * a symbol can have.
- * The constants are used as bit-flags to compose the value of
- * HighlightSymbol.role.
- */
-public final class SymbolRole {
- public static final int Declaration = 1 << 0;
- public static final int Definition = 1 << 1;
- public static final int Reference = 1 << 2;
- public static final int Read = 1 << 3;
- public static final int Write = 1 << 4;
- public static final int Call = 1 << 5;
- public static final int Dynamic = 1 << 6;
- public static final int Address = 1 << 7;
- public static final int Implicit = 1 << 8;
-} \ No newline at end of file
diff --git a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/preferences/LanguageServerPreferenceMetadata.java b/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/preferences/LanguageServerPreferenceMetadata.java
new file mode 100644
index 00000000000..749a19f8fbf
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/preferences/LanguageServerPreferenceMetadata.java
@@ -0,0 +1,33 @@
+/*******************************************************************************
+ * Copyright (c) 2020 ArSysOp and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov (ArSysOp) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.lsp.core.preferences;
+
+import org.eclipse.core.runtime.preferences.PreferenceMetadata;
+
+/**
+ * The metadata for preferences to configure language server
+ *
+ */
+public interface LanguageServerPreferenceMetadata {
+
+ /**
+ * Returns the metadata for the "Prefer Language Server" preference, must not return <code>null</code>.
+ *
+ * @return the metadata for the "Prefer Language Server" preference
+ *
+ * @see LanguageServerPreferences#preferLanguageServer()
+ */
+ PreferenceMetadata<Boolean> preferLanguageServer();
+
+}
diff --git a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/internal/core/ContributedLanguageServers.java b/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/internal/core/ContributedLanguageServers.java
new file mode 100644
index 00000000000..611d2c3a6bf
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/internal/core/ContributedLanguageServers.java
@@ -0,0 +1,75 @@
+/*******************************************************************************
+ * Copyright (c) 2020 ArSysOp and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov (ArSysOp) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.lsp.internal.core;
+
+import java.util.Collection;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+import org.eclipse.cdt.lsp.LanguageServerConfiguration;
+import org.eclipse.cdt.lsp.SupportedLanguageServers;
+import org.eclipse.cdt.lsp.core.PreferenceConstants;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.preferences.IScopeContext;
+import org.eclipse.core.runtime.preferences.InstanceScope;
+import org.osgi.framework.FrameworkUtil;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
+
+@Component
+public final class ContributedLanguageServers implements SupportedLanguageServers {
+
+ private final LanguageServerConfiguration undefined;
+ private final Map<String, LanguageServerConfiguration> configs;
+
+ public ContributedLanguageServers() {
+ configs = new LinkedHashMap<>();
+ undefined = new UndefinedLanguageServer();
+ }
+
+ @Override
+ public Collection<LanguageServerConfiguration> all() {
+ return configs.values();
+ }
+
+ @Reference(cardinality = ReferenceCardinality.MULTIPLE)
+ public void register(LanguageServerConfiguration configuration) {
+ configs.put(configuration.identifier(), configuration);
+ }
+
+ public void unregister(LanguageServerConfiguration configuration) {
+ configs.remove(configuration.identifier());
+ }
+
+ @Override
+ public LanguageServerConfiguration preferred() {
+ return configs.getOrDefault(preferredIdentifier(), undefined);
+ }
+
+ private String preferredIdentifier() {
+ return Platform.getPreferencesService().getString(nodeQualifier(), nodePath(), undefined.identifier(),
+ new IScopeContext[] { InstanceScope.INSTANCE });
+ }
+
+ private String nodeQualifier() {
+ return FrameworkUtil.getBundle(getClass()).getSymbolicName();
+ }
+
+ private String nodePath() {
+ //FIXME: rework
+ return PreferenceConstants.P_SERVER_CHOICE;
+ }
+
+}
diff --git a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/internal/core/ContributedProtocolExtensions.java b/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/internal/core/ContributedProtocolExtensions.java
new file mode 100644
index 00000000000..7131a66be21
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/internal/core/ContributedProtocolExtensions.java
@@ -0,0 +1,74 @@
+/*******************************************************************************
+ * Copyright (c) 2020 ArSysOp and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov (ArSysOp) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.lsp.internal.core;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.stream.Collectors;
+
+import org.eclipse.cdt.lsp.LanguageProtocolExtension;
+import org.eclipse.cdt.lsp.LanguageServerConfiguration;
+import org.eclipse.cdt.lsp.SupportedProtocolExtensions;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
+
+@Component
+public final class ContributedProtocolExtensions implements SupportedProtocolExtensions {
+
+ private final Map<String, List<LanguageProtocolExtension>> extensions;
+
+ public ContributedProtocolExtensions() {
+ extensions = new LinkedHashMap<>();
+ }
+
+ @Override
+ public Collection<LanguageProtocolExtension> all() {
+ return extensions.values().stream()//
+ .flatMap(List::stream)//
+ .collect(Collectors.toList());
+ }
+
+ @Override
+ public Collection<LanguageProtocolExtension> applicable(LanguageServerConfiguration server) {
+ return new ArrayList<>(extensions.getOrDefault(server.identifier(), Collections.emptyList()));
+ }
+
+ @Reference(cardinality = ReferenceCardinality.MULTIPLE)
+ public void register(LanguageProtocolExtension extension) {
+ List<LanguageProtocolExtension> list = extensions.computeIfAbsent(extension.targetIdentifier(),
+ x -> new ArrayList<>());
+ if (!list.contains(extension)) {
+ list.add(extension);
+ }
+ }
+
+ public void unregister(LanguageProtocolExtension extension) {
+ Optional<List<LanguageProtocolExtension>> optional = Optional
+ .ofNullable(extensions.get(extension.targetIdentifier()));
+ if (optional.isPresent()) {
+ List<LanguageProtocolExtension> list = optional.get();
+ list.remove(extension);
+ if (list.isEmpty()) {
+ extensions.remove(extension.targetIdentifier());
+ }
+ }
+ }
+
+}
diff --git a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/internal/core/DelegatingLauncherBuilder.java b/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/internal/core/DelegatingLauncherBuilder.java
new file mode 100644
index 00000000000..0a155a41ccd
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/internal/core/DelegatingLauncherBuilder.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 2020 ArSysOp and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov (ArSysOp) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.lsp.internal.core;
+
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.cdt.lsp.LanguageProtocolExtension;
+import org.eclipse.cdt.lsp.SupportedProtocolExtensions;
+import org.eclipse.core.runtime.ServiceCaller;
+import org.eclipse.lsp4e.LanguageClientImpl;
+import org.eclipse.lsp4j.jsonrpc.Launcher;
+import org.eclipse.lsp4j.jsonrpc.json.JsonRpcMethod;
+import org.eclipse.lsp4j.jsonrpc.services.ServiceEndpoints;
+
+@SuppressWarnings("restriction")
+public final class DelegatingLauncherBuilder extends Launcher.Builder<LanguageClientImpl> {
+
+ private final ResolvePreferredServer server;
+
+ public DelegatingLauncherBuilder() {
+ this.server = new ResolvePreferredServer();
+ }
+
+ @Override
+ protected Map<String, JsonRpcMethod> getSupportedMethods() {
+ Map<String, JsonRpcMethod> methods = new LinkedHashMap<>(super.getSupportedMethods());
+ extensions().stream()//
+ .map(x -> x.getClass())//
+ .map(ServiceEndpoints::getSupportedMethods)//
+ .forEach(methods::putAll);
+ return methods;
+ }
+
+ private List<LanguageProtocolExtension> extensions() {
+ List<LanguageProtocolExtension> extensions = new ArrayList<>();
+ ServiceCaller.callOnce(getClass(), SupportedProtocolExtensions.class,
+ x -> extensions.addAll(x.applicable(server.apply(getClass()))));
+ return extensions;
+ }
+
+}
diff --git a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/internal/core/LspCoreMessages.java b/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/internal/core/LspCoreMessages.java
new file mode 100644
index 00000000000..c7d5b301724
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/internal/core/LspCoreMessages.java
@@ -0,0 +1,33 @@
+/*******************************************************************************
+ * Copyright (c) 2019, 2020 Eclipse Contributors and others.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * https://www.eclipse.org/legal/epl-2.0/.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov <alexander.fedorov@arsysop.ru> - ongoing support
+ *******************************************************************************/
+package org.eclipse.cdt.lsp.internal.core;
+
+import org.eclipse.osgi.util.NLS;
+
+public class LspCoreMessages extends NLS {
+
+ private static final String BUNDLE_NAME = "org.eclipse.cdt.lsp.internal.core.LspCoreMessages"; //$NON-NLS-1$
+
+ static {
+ // initialize resource bundle
+ NLS.initializeMessages(BUNDLE_NAME, LspCoreMessages.class);
+ }
+
+ public static String LanguageServerDefaults_prefer_description;
+ public static String LanguageServerDefaults_prefer_name;
+ public static String ShowStatus_busy;
+ public static String ShowStatus_idle;
+
+ private LspCoreMessages() {
+ }
+}
diff --git a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/internal/core/LspCoreMessages.properties b/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/internal/core/LspCoreMessages.properties
new file mode 100644
index 00000000000..01dcdb189df
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/internal/core/LspCoreMessages.properties
@@ -0,0 +1,17 @@
+###############################################################################
+# Copyright (c) 2019, 2020 Eclipse Contributors and others
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# https://www.eclipse.org/legal/epl-2.0/.
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Alexander Fedorov <alexander.fedorov@arsysop.ru> - ongoing support
+###############################################################################
+
+LanguageServerDefaults_prefer_description=Prefer to use language server instead of "classic" facilities
+LanguageServerDefaults_prefer_name=Prefer Language Server
+ShowStatus_busy={0} : Busy | {1} Jobs
+ShowStatus_idle={0} : Idle
diff --git a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/internal/core/ResolvePreferredServer.java b/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/internal/core/ResolvePreferredServer.java
new file mode 100644
index 00000000000..90d0895d6f3
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/internal/core/ResolvePreferredServer.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * Copyright (c) 2020 ArSysOp and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov (ArSysOp) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.lsp.internal.core;
+
+import java.util.function.Function;
+
+import org.eclipse.cdt.lsp.LanguageServerConfiguration;
+import org.eclipse.cdt.lsp.SupportedLanguageServers;
+import org.eclipse.core.runtime.ServiceCaller;
+
+public final class ResolvePreferredServer implements Function<Class<?>, LanguageServerConfiguration> {
+
+ @Override
+ public LanguageServerConfiguration apply(Class<?> caller) {
+ LanguageServerConfiguration[] configs = new LanguageServerConfiguration[1];
+ ServiceCaller.callOnce(caller, SupportedLanguageServers.class, x -> configs[0] = x.preferred());
+ return configs[0];
+ }
+
+}
diff --git a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/internal/core/ShowStatus.java b/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/internal/core/ShowStatus.java
new file mode 100644
index 00000000000..9116457bb9b
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/internal/core/ShowStatus.java
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * Copyright (c) 2020 ArSysOp and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov (ArSysOp) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.lsp.internal.core;
+
+import java.util.function.Consumer;
+import java.util.function.Supplier;
+
+import org.eclipse.osgi.util.NLS;
+
+public final class ShowStatus implements Consumer<Supplier<Integer>> {
+
+ private final Supplier<String> name;
+ private final Consumer<String> target;
+
+ public ShowStatus(Supplier<String> name, Consumer<String> target) {
+ this.name = name;
+ this.target = target;
+ }
+
+ @Override
+ public void accept(Supplier<Integer> jobs) {
+ target.accept(message(jobs.get()));
+ }
+
+ private String message(int total) {
+ return total > 0 ? //
+ NLS.bind(LspCoreMessages.ShowStatus_busy, name.get(), total) : //
+ NLS.bind(LspCoreMessages.ShowStatus_idle, name.get());
+ }
+
+}
diff --git a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/internal/core/UndefinedLanguageServer.java b/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/internal/core/UndefinedLanguageServer.java
new file mode 100644
index 00000000000..443c902397d
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/internal/core/UndefinedLanguageServer.java
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ * Copyright (c) 2020 ArSysOp and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov (ArSysOp) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.lsp.internal.core;
+
+import java.net.URI;
+
+import org.eclipse.cdt.lsp.LanguageServerConfiguration;
+
+final class UndefinedLanguageServer implements LanguageServerConfiguration {
+
+ @Override
+ public String identifier() {
+ return ""; //$NON-NLS-1$
+ }
+
+ @Override
+ public String label() {
+ return "<undefined>";
+ }
+
+ @Override
+ public Object options(Object defaults, URI uri) {
+ return defaults;
+ }
+
+}
diff --git a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/internal/core/preferences/LanguageServerDefaults.java b/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/internal/core/preferences/LanguageServerDefaults.java
new file mode 100644
index 00000000000..fe5d93b1bde
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/internal/core/preferences/LanguageServerDefaults.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2020 ArSysOp and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov (ArSysOp) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.lsp.internal.core.preferences;
+
+import org.eclipse.cdt.lsp.core.preferences.LanguageServerPreferenceMetadata;
+import org.eclipse.cdt.lsp.internal.core.LspCoreMessages;
+import org.eclipse.core.runtime.preferences.PreferenceMetadata;
+
+public class LanguageServerDefaults implements LanguageServerPreferenceMetadata {
+
+ @Override
+ public PreferenceMetadata<Boolean> preferLanguageServer() {
+ return new PreferenceMetadata<>(Boolean.class, "prefer_language_server", false, //$NON-NLS-1$
+ LspCoreMessages.LanguageServerDefaults_prefer_name,
+ LspCoreMessages.LanguageServerDefaults_prefer_description);
+ }
+
+}
diff --git a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/internal/core/workspace/PreferLanguageServer.java b/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/internal/core/workspace/PreferLanguageServer.java
new file mode 100644
index 00000000000..a105ee93f11
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/internal/core/workspace/PreferLanguageServer.java
@@ -0,0 +1,62 @@
+/*******************************************************************************
+ * Copyright (c) 2020 ArSysOp and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov (ArSysOp) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.lsp.internal.core.workspace;
+
+import java.util.Optional;
+import java.util.function.Predicate;
+
+import org.eclipse.cdt.lsp.core.Activator;
+import org.eclipse.cdt.lsp.core.preferences.LanguageServerPreferenceMetadata;
+import org.eclipse.cdt.lsp.internal.core.preferences.LanguageServerDefaults;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.ProjectScope;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.preferences.IScopeContext;
+import org.eclipse.core.runtime.preferences.PreferenceMetadata;
+import org.eclipse.jface.text.IDocument;
+
+public final class PreferLanguageServer implements Predicate<IDocument> {
+
+ private final ResolveDocumentFile file;
+ private final LanguageServerPreferenceMetadata metadata;
+
+ public PreferLanguageServer() {
+ file = new ResolveDocumentFile();
+ metadata = new LanguageServerDefaults();
+ }
+
+ @Override
+ public boolean test(IDocument document) {
+ Optional<IProject> project = file.apply(document).map(IFile::getProject);
+ if (project.isPresent()) {
+ return forProject(project.get());
+ }
+ return forExternal(document);
+ }
+
+ private boolean forExternal(IDocument document) {
+ //let's use workspace-level setting
+ PreferenceMetadata<Boolean> option = metadata.preferLanguageServer();
+ return Platform.getPreferencesService().getBoolean(Activator.PLUGIN_ID, option.identifer(),
+ option.defaultValue(), null);
+ }
+
+ private boolean forProject(IProject project) {
+ PreferenceMetadata<Boolean> option = metadata.preferLanguageServer();
+ return Platform.getPreferencesService().getBoolean(Activator.PLUGIN_ID, option.identifer(),
+ option.defaultValue(), new IScopeContext[] { new ProjectScope(project) });
+ }
+
+}
diff --git a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/internal/core/workspace/ResolveDocumentBuffer.java b/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/internal/core/workspace/ResolveDocumentBuffer.java
new file mode 100644
index 00000000000..e8c329b08dd
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/internal/core/workspace/ResolveDocumentBuffer.java
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * Copyright (c) 2020 ArSysOp and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov (ArSysOp) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.lsp.internal.core.workspace;
+
+import java.util.Optional;
+import java.util.function.Function;
+
+import org.eclipse.core.filebuffers.FileBuffers;
+import org.eclipse.core.filebuffers.ITextFileBuffer;
+import org.eclipse.jface.text.IDocument;
+
+public final class ResolveDocumentBuffer implements Function<IDocument, Optional<ITextFileBuffer>> {
+
+ @Override
+ public Optional<ITextFileBuffer> apply(IDocument document) {
+ return Optional.ofNullable(document).map(FileBuffers.getTextFileBufferManager()::getTextFileBuffer);
+ }
+
+}
diff --git a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/internal/core/workspace/ResolveDocumentFile.java b/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/internal/core/workspace/ResolveDocumentFile.java
new file mode 100644
index 00000000000..353e7fd2646
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/internal/core/workspace/ResolveDocumentFile.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2020 ArSysOp and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov (ArSysOp) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.lsp.internal.core.workspace;
+
+import java.util.Optional;
+import java.util.function.Function;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.jface.text.IDocument;
+
+public final class ResolveDocumentFile implements Function<IDocument, Optional<IFile>> {
+
+ private final ResolveDocumentPath path;
+
+ public ResolveDocumentFile() {
+ path = new ResolveDocumentPath();
+ }
+
+ @Override
+ public Optional<IFile> apply(IDocument document) {
+ return Optional.ofNullable(document)//
+ .flatMap(path)//
+ .map(ResourcesPlugin.getWorkspace().getRoot()::findMember)//
+ .filter(IFile.class::isInstance)//
+ .map(IFile.class::cast);
+ }
+
+}
diff --git a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/internal/core/workspace/ResolveDocumentPath.java b/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/internal/core/workspace/ResolveDocumentPath.java
new file mode 100644
index 00000000000..c9dcd9b03fb
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/internal/core/workspace/ResolveDocumentPath.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2020 ArSysOp and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov (ArSysOp) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.lsp.internal.core.workspace;
+
+import java.util.Optional;
+import java.util.function.Function;
+
+import org.eclipse.core.filebuffers.ITextFileBuffer;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.jface.text.IDocument;
+
+public final class ResolveDocumentPath implements Function<IDocument, Optional<IPath>> {
+
+ private final ResolveDocumentBuffer buffer;
+
+ public ResolveDocumentPath() {
+ buffer = new ResolveDocumentBuffer();
+ }
+
+ @Override
+ public Optional<IPath> apply(IDocument document) {
+ return Optional.ofNullable(document).flatMap(buffer).map(ITextFileBuffer::getLocation);
+ }
+
+}
diff --git a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/internal/core/workspace/ResolveDocumentUri.java b/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/internal/core/workspace/ResolveDocumentUri.java
new file mode 100644
index 00000000000..48b841e2051
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/internal/core/workspace/ResolveDocumentUri.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2020 ArSysOp and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov (ArSysOp) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.lsp.internal.core.workspace;
+
+import java.net.URI;
+import java.util.Optional;
+import java.util.function.Function;
+
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.lsp4e.LSPEclipseUtils;
+
+@SuppressWarnings("restriction")
+public final class ResolveDocumentUri implements Function<IDocument, Optional<URI>> {
+
+ private final ResolveDocumentFile file;
+
+ public ResolveDocumentUri() {
+ file = new ResolveDocumentFile();
+ }
+
+ @Override
+ public Optional<URI> apply(IDocument document) {
+ return Optional.ofNullable(document)//
+ .flatMap(file)//
+ //FIXME rewrite involved static utilities
+ .flatMap(f -> Optional.ofNullable(LSPEclipseUtils.toUri(f)));
+ }
+
+}
diff --git a/lsp/org.eclipse.cdt.lsp.cquery.tests/.classpath b/lsp/org.eclipse.cdt.lsp.cquery.tests/.classpath
new file mode 100644
index 00000000000..a621c21ac55
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.cquery.tests/.classpath
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src">
+ <attributes>
+ <attribute name="test" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/lsp/org.eclipse.cdt.lsp.cquery.tests/.project b/lsp/org.eclipse.cdt.lsp.cquery.tests/.project
new file mode 100644
index 00000000000..4f0b2caf740
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.cquery.tests/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.cdt.lsp.cquery.tests</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/lsp/org.eclipse.cdt.lsp.cquery.tests/.settings/org.eclipse.core.resources.prefs b/lsp/org.eclipse.cdt.lsp.cquery.tests/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.cquery.tests/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/lsp/org.eclipse.cdt.lsp.cquery.tests/.settings/org.eclipse.jdt.core.prefs b/lsp/org.eclipse.cdt.lsp.cquery.tests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..5b1c443114d
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.cquery.tests/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=ignore
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
+org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=ignore
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/upc/org.eclipse.cdt.core.parser.upc/.settings/org.eclipse.jdt.launching.prefs b/lsp/org.eclipse.cdt.lsp.cquery.tests/.settings/org.eclipse.jdt.launching.prefs
index f8a131b56e0..f8a131b56e0 100644
--- a/upc/org.eclipse.cdt.core.parser.upc/.settings/org.eclipse.jdt.launching.prefs
+++ b/lsp/org.eclipse.cdt.lsp.cquery.tests/.settings/org.eclipse.jdt.launching.prefs
diff --git a/lsp/org.eclipse.cdt.lsp.cquery.tests/.settings/org.eclipse.jdt.ui.prefs b/lsp/org.eclipse.cdt.lsp.cquery.tests/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.cquery.tests/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/lsp/org.eclipse.cdt.lsp.cquery.tests/.settings/org.eclipse.pde.api.tools.prefs b/lsp/org.eclipse.cdt.lsp.cquery.tests/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 00000000000..ec9fbf321d0
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.cquery.tests/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,184 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITH_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_FIELD=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERCLASS_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_CHANGED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENTS=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETERS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Error
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Warning
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+MISSING_EE_DESCRIPTIONS=Warning
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=false
+changed_execution_env=Error
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+incompatible_api_component_version_report_major_without_breaking_change=Warning
+incompatible_api_component_version_report_minor_without_api_change=Warning
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/lsp/org.eclipse.cdt.lsp.cquery.tests/.settings/org.eclipse.pde.prefs b/lsp/org.eclipse.cdt.lsp.cquery.tests/.settings/org.eclipse.pde.prefs
new file mode 100644
index 00000000000..51a63ec9988
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.cquery.tests/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,35 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=2
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=2
+compilers.p.missing-version-export-package=2
+compilers.p.missing-version-import-package=2
+compilers.p.missing-version-require-bundle=2
+compilers.p.no-required-att=0
+compilers.p.no.automatic.module=1
+compilers.p.not-externalized-att=2
+compilers.p.service.component.without.lazyactivation=1
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/lsp/org.eclipse.cdt.lsp.cquery.tests/META-INF/MANIFEST.MF b/lsp/org.eclipse.cdt.lsp.cquery.tests/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..f133380fed0
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.cquery.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,13 @@
+Manifest-Version: 1.0
+Automatic-Module-Name: org.eclipse.cdt.lsp.cquery.tests
+Bundle-ManifestVersion: 2
+Bundle-SymbolicName: org.eclipse.cdt.lsp.cquery.tests
+Bundle-Version: 0.1.0.qualifier
+Bundle-Name: %Bundle-Name
+Bundle-Vendor: %Bundle-Vendor
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Require-Bundle: com.google.gson;bundle-version="2.8.2",
+ org.eclipse.cdt.lsp.cquery;bundle-version="0.1.0",
+ org.eclipse.lsp4j,
+ org.eclipse.lsp4j.jsonrpc,
+ org.junit
diff --git a/lsp/org.eclipse.cdt.lsp.cquery.tests/OSGI-INF/l10n/bundle.properties b/lsp/org.eclipse.cdt.lsp.cquery.tests/OSGI-INF/l10n/bundle.properties
new file mode 100644
index 00000000000..003220f67c0
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.cquery.tests/OSGI-INF/l10n/bundle.properties
@@ -0,0 +1,13 @@
+#Properties file for org.eclipse.cdt.lsp.cquery.tests
+###############################################################################
+# Copyright (c) 2017, 2020 Eclipse contributors and others
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# https://www.eclipse.org/legal/epl-2.0/.
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+
+Bundle-Name = CDT LSP Cquery Tests
+Bundle-Vendor = Eclipse CDT
diff --git a/lsp/org.eclipse.cdt.lsp.cquery.tests/about.html b/lsp/org.eclipse.cdt.lsp.cquery.tests/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.cquery.tests/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/lsp/org.eclipse.cdt.lsp.cquery.tests/build.properties b/lsp/org.eclipse.cdt.lsp.cquery.tests/build.properties
new file mode 100644
index 00000000000..b2d18a5aebe
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.cquery.tests/build.properties
@@ -0,0 +1,17 @@
+###############################################################################
+# Copyright (c) 2017, 2020 Eclipse contributors and others
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# https://www.eclipse.org/legal/epl-2.0/.
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+
+source.. = src/
+output.. = target/classes/
+bin.includes = META-INF/,\
+ .,\
+ OSGI-INF/,\
+ about.html
+src.includes = about.html
diff --git a/lsp/org.eclipse.cdt.lsp.cquery.tests/pom.xml b/lsp/org.eclipse.cdt.lsp.cquery.tests/pom.xml
new file mode 100644
index 00000000000..cca13432fd3
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.cquery.tests/pom.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2017, 2021 Eclipse contributors and others
+
+ This program and the accompanying materials are made available under the
+ terms of the Eclipse Public License 2.0 which is available at
+ https://www.eclipse.org/legal/epl-2.0/.
+
+ SPDX-License-Identifier: EPL-2.0
+-->
+<project
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+ xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.cdt</groupId>
+ <artifactId>cdt-parent</artifactId>
+ <version>10.7.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent>
+
+ <version>0.1.0-SNAPSHOT</version>
+ <artifactId>org.eclipse.cdt.lsp.cquery.tests</artifactId>
+ <packaging>eclipse-test-plugin</packaging>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-surefire-plugin</artifactId>
+ <configuration>
+ <!-- If you have any UI tests, use this block -->
+ <useUIHarness>true</useUIHarness>
+ <useUIThread>true</useUIThread>
+ <argLine>${tycho.testArgLine} ${base.ui.test.vmargs}</argLine>
+ <appArgLine>-pluginCustomization ${basedir}/../../disable_intro_in_tests.ini</appArgLine>
+ <!-- else, if you have no UI tests, use this block -->
+ <!-- <useUIHarness>false</useUIHarness>
+ <useUIThread>false</useUIThread>
+ <argLine>${tycho.testArgLine} ${base.test.vmargs}</argLine> -->
+ <!-- endif -->
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/lsp/org.eclipse.cdt.lsp.core.tests/src/org/eclipse/cdt/lsp/core/tests/cquery/CqueryJsonParseTest.java b/lsp/org.eclipse.cdt.lsp.cquery.tests/src/org/eclipse/cdt/lsp/cquery/tests/CqueryJsonParseTest.java
index e891b9c8acf..93eb1a1d99b 100644
--- a/lsp/org.eclipse.cdt.lsp.core.tests/src/org/eclipse/cdt/lsp/core/tests/cquery/CqueryJsonParseTest.java
+++ b/lsp/org.eclipse.cdt.lsp.cquery.tests/src/org/eclipse/cdt/lsp/cquery/tests/CqueryJsonParseTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2018 Manish Khurana , Nathan Ridge and others.
+ * Copyright (c) 2018, 2020 Manish Khurana , Nathan Ridge and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -9,21 +9,21 @@
* SPDX-License-Identifier: EPL-2.0
*******************************************************************************/
-package org.eclipse.cdt.lsp.core.tests.cquery;
+package org.eclipse.cdt.lsp.cquery.tests;
import java.net.URI;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
-import org.eclipse.cdt.lsp.core.Server2ClientProtocolExtension;
-import org.eclipse.cdt.lsp.core.cquery.CqueryInactiveRegions;
-import org.eclipse.cdt.lsp.core.cquery.CquerySemanticHighlights;
-import org.eclipse.cdt.lsp.core.cquery.ExtendedSymbolKindType;
-import org.eclipse.cdt.lsp.core.cquery.HighlightSymbol;
-import org.eclipse.cdt.lsp.core.cquery.IndexingProgressStats;
-import org.eclipse.cdt.lsp.core.cquery.StorageClass;
-import org.eclipse.cdt.lsp.core.cquery.SymbolRole;
+import org.eclipse.cdt.lsp.internal.cquery.CqueryInactiveRegions;
+import org.eclipse.cdt.lsp.internal.cquery.CquerySemanticHighlights;
+import org.eclipse.cdt.lsp.internal.cquery.ExtendedSymbolKindType;
+import org.eclipse.cdt.lsp.internal.cquery.HighlightSymbol;
+import org.eclipse.cdt.lsp.internal.cquery.IndexingProgressStats;
+import org.eclipse.cdt.lsp.internal.cquery.StorageClass;
+import org.eclipse.cdt.lsp.internal.cquery.SymbolRole;
+import org.eclipse.cdt.lsp.internal.cquery.ui.CqueryProtocolExtension;
import org.eclipse.lsp4j.Position;
import org.eclipse.lsp4j.Range;
import org.eclipse.lsp4j.jsonrpc.json.JsonRpcMethod;
@@ -34,7 +34,7 @@ import org.junit.Assert;
import org.junit.Test;
public class CqueryJsonParseTest {
- Map<String, JsonRpcMethod> methods = ServiceEndpoints.getSupportedMethods(Server2ClientProtocolExtension.class);
+ Map<String, JsonRpcMethod> methods = ServiceEndpoints.getSupportedMethods(CqueryProtocolExtension.class);
private MessageJsonHandler jsonHandler = new MessageJsonHandler(methods);
private void assertParse(final String json, final NotificationMessage expectedResult) {
diff --git a/lsp/org.eclipse.cdt.lsp.cquery/.classpath b/lsp/org.eclipse.cdt.lsp.cquery/.classpath
new file mode 100644
index 00000000000..e801ebfb468
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.cquery/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/lsp/org.eclipse.cdt.lsp.cquery/.project b/lsp/org.eclipse.cdt.lsp.cquery/.project
new file mode 100644
index 00000000000..a7ec13890e7
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.cquery/.project
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.cdt.lsp.cquery</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ds.core.builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+ </natures>
+</projectDescription>
diff --git a/lsp/org.eclipse.cdt.lsp.cquery/.settings/org.eclipse.core.resources.prefs b/lsp/org.eclipse.cdt.lsp.cquery/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.cquery/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/lsp/org.eclipse.cdt.lsp.cquery/.settings/org.eclipse.core.runtime.prefs b/lsp/org.eclipse.cdt.lsp.cquery/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 00000000000..5a0ad22d2a7
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.cquery/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/lsp/org.eclipse.cdt.lsp.cquery/.settings/org.eclipse.jdt.core.prefs b/lsp/org.eclipse.cdt.lsp.cquery/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..e3a8104f9ca
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.cquery/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/upc/org.eclipse.cdt.managedbuilder.bupc.ui/.settings/org.eclipse.jdt.launching.prefs b/lsp/org.eclipse.cdt.lsp.cquery/.settings/org.eclipse.jdt.launching.prefs
index f8a131b56e0..f8a131b56e0 100644
--- a/upc/org.eclipse.cdt.managedbuilder.bupc.ui/.settings/org.eclipse.jdt.launching.prefs
+++ b/lsp/org.eclipse.cdt.lsp.cquery/.settings/org.eclipse.jdt.launching.prefs
diff --git a/lsp/org.eclipse.cdt.lsp.cquery/.settings/org.eclipse.jdt.ui.prefs b/lsp/org.eclipse.cdt.lsp.cquery/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.cquery/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/lsp/org.eclipse.cdt.lsp.cquery/.settings/org.eclipse.pde.api.tools.prefs b/lsp/org.eclipse.cdt.lsp.cquery/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 00000000000..ec9fbf321d0
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.cquery/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,184 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITH_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_FIELD=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERCLASS_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_CHANGED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENTS=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETERS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Error
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Warning
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+MISSING_EE_DESCRIPTIONS=Warning
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=false
+changed_execution_env=Error
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+incompatible_api_component_version_report_major_without_breaking_change=Warning
+incompatible_api_component_version_report_minor_without_api_change=Warning
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/lsp/org.eclipse.cdt.lsp.cquery/.settings/org.eclipse.pde.ds.annotations.prefs b/lsp/org.eclipse.cdt.lsp.cquery/.settings/org.eclipse.pde.ds.annotations.prefs
new file mode 100644
index 00000000000..73a356b6d05
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.cquery/.settings/org.eclipse.pde.ds.annotations.prefs
@@ -0,0 +1,8 @@
+classpath=true
+dsVersion=V1_3
+eclipse.preferences.version=1
+enabled=true
+generateBundleActivationPolicyLazy=true
+path=OSGI-INF
+validationErrorLevel=error
+validationErrorLevel.missingImplicitUnbindMethod=error
diff --git a/lsp/org.eclipse.cdt.lsp.cquery/.settings/org.eclipse.pde.prefs b/lsp/org.eclipse.cdt.lsp.cquery/.settings/org.eclipse.pde.prefs
new file mode 100644
index 00000000000..d2dc703ba9e
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.cquery/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,35 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=2
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=2
+compilers.p.missing-version-export-package=2
+compilers.p.missing-version-import-package=2
+compilers.p.missing-version-require-bundle=2
+compilers.p.no-required-att=0
+compilers.p.no.automatic.module=1
+compilers.p.not-externalized-att=1
+compilers.p.service.component.without.lazyactivation=1
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/lsp/org.eclipse.cdt.lsp.cquery/META-INF/MANIFEST.MF b/lsp/org.eclipse.cdt.lsp.cquery/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..5bd8c52f464
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.cquery/META-INF/MANIFEST.MF
@@ -0,0 +1,23 @@
+Manifest-Version: 1.0
+Automatic-Module-Name: org.eclipse.cdt.lsp.cquery
+Bundle-ManifestVersion: 2
+Bundle-SymbolicName: org.eclipse.cdt.lsp.cquery
+Bundle-Version: 0.1.100.qualifier
+Bundle-Name: %Bundle-Name
+Bundle-Vendor: %Bundle-Vendor
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Require-Bundle: com.google.gson;bundle-version="2.8.2",
+ org.eclipse.cdt.lsp.core;bundle-version="1.1.100",
+ org.eclipse.cdt.lsp.ui;bundle-version="0.1.100",
+ org.eclipse.cdt.ui;bundle-version="7.0.0",
+ org.eclipse.core.runtime;bundle-version="3.19.0",
+ org.eclipse.jface.text;bundle-version="3.16.400",
+ org.eclipse.lsp4j.jsonrpc;bundle-version="0.9.0",
+ org.eclipse.lsp4j;bundle-version="0.9.0",
+ org.eclipse.osgi.services;bundle-version="3.9.0";resolution:=optional,
+ org.eclipse.ui;bundle-version="3.118.0"
+Bundle-ActivationPolicy: lazy
+Service-Component: OSGI-INF/org.eclipse.cdt.lsp.internal.cquery.ui.CqueryLanguageServer.xml,
+ OSGI-INF/org.eclipse.cdt.lsp.internal.cquery.ui.CqueryProtocolExtension.xml
+Export-Package: org.eclipse.cdt.lsp.internal.cquery;x-internal:=true,
+ org.eclipse.cdt.lsp.internal.cquery.ui;x-internal:=true
diff --git a/lsp/org.eclipse.cdt.lsp.cquery/OSGI-INF/l10n/bundle.properties b/lsp/org.eclipse.cdt.lsp.cquery/OSGI-INF/l10n/bundle.properties
new file mode 100644
index 00000000000..9fd38d5fd1b
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.cquery/OSGI-INF/l10n/bundle.properties
@@ -0,0 +1,13 @@
+#Properties file for org.eclipse.cdt.lsp.cquery
+###############################################################################
+# Copyright (c) 2020 ArSysOp and others.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0/.
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+
+Bundle-Vendor = Eclipse CDT
+Bundle-Name = CDT LSP CQuery \ No newline at end of file
diff --git a/lsp/org.eclipse.cdt.lsp.cquery/OSGI-INF/org.eclipse.cdt.lsp.internal.cquery.ui.CqueryLanguageServer.xml b/lsp/org.eclipse.cdt.lsp.cquery/OSGI-INF/org.eclipse.cdt.lsp.internal.cquery.ui.CqueryLanguageServer.xml
new file mode 100644
index 00000000000..d84b2617965
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.cquery/OSGI-INF/org.eclipse.cdt.lsp.internal.cquery.ui.CqueryLanguageServer.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.eclipse.cdt.lsp.internal.cquery.ui.CqueryLanguageServer">
+ <service>
+ <provide interface="org.eclipse.cdt.lsp.LanguageServerConfiguration"/>
+ </service>
+ <implementation class="org.eclipse.cdt.lsp.internal.cquery.ui.CqueryLanguageServer"/>
+</scr:component> \ No newline at end of file
diff --git a/lsp/org.eclipse.cdt.lsp.cquery/OSGI-INF/org.eclipse.cdt.lsp.internal.cquery.ui.CqueryProtocolExtension.xml b/lsp/org.eclipse.cdt.lsp.cquery/OSGI-INF/org.eclipse.cdt.lsp.internal.cquery.ui.CqueryProtocolExtension.xml
new file mode 100644
index 00000000000..a0e1d226a8b
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.cquery/OSGI-INF/org.eclipse.cdt.lsp.internal.cquery.ui.CqueryProtocolExtension.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.eclipse.cdt.lsp.internal.cquery.ui.CqueryProtocolExtension">
+ <service>
+ <provide interface="org.eclipse.cdt.lsp.LanguageProtocolExtension"/>
+ </service>
+ <implementation class="org.eclipse.cdt.lsp.internal.cquery.ui.CqueryProtocolExtension"/>
+</scr:component> \ No newline at end of file
diff --git a/lsp/org.eclipse.cdt.lsp.cquery/about.html b/lsp/org.eclipse.cdt.lsp.cquery/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.cquery/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/lsp/org.eclipse.cdt.lsp.cquery/build.properties b/lsp/org.eclipse.cdt.lsp.cquery/build.properties
new file mode 100644
index 00000000000..c501f040b71
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.cquery/build.properties
@@ -0,0 +1,17 @@
+###############################################################################
+# Copyright (c) 2020 ArSysOp and others.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0/.
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ OSGI-INF/,\
+ about.html
+src.includes = about.html
diff --git a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/cquery/CqueryInactiveRegions.java b/lsp/org.eclipse.cdt.lsp.cquery/src/org/eclipse/cdt/lsp/internal/cquery/CqueryInactiveRegions.java
index 5f83be536a6..0596e047d0f 100644
--- a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/cquery/CqueryInactiveRegions.java
+++ b/lsp/org.eclipse.cdt.lsp.cquery/src/org/eclipse/cdt/lsp/internal/cquery/CqueryInactiveRegions.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2018 Manish Khurana , Nathan Ridge and others.
+ * Copyright (c) 2018, 2020 Manish Khurana , Nathan Ridge and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -9,7 +9,7 @@
* SPDX-License-Identifier: EPL-2.0
*******************************************************************************/
-package org.eclipse.cdt.lsp.core.cquery;
+package org.eclipse.cdt.lsp.internal.cquery;
import java.net.URI;
import java.util.List;
diff --git a/lsp/org.eclipse.cdt.lsp.cquery/src/org/eclipse/cdt/lsp/internal/cquery/CqueryMessages.java b/lsp/org.eclipse.cdt.lsp.cquery/src/org/eclipse/cdt/lsp/internal/cquery/CqueryMessages.java
new file mode 100644
index 00000000000..aefff62e285
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.cquery/src/org/eclipse/cdt/lsp/internal/cquery/CqueryMessages.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2019, 2020 Eclipse contributors and others.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * https://www.eclipse.org/legal/epl-2.0/.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.lsp.internal.cquery;
+
+import org.eclipse.osgi.util.NLS;
+
+public class CqueryMessages extends NLS {
+
+ private static final String BUNDLE_NAME = "org.eclipse.cdt.lsp.internal.cquery.CqueryMessages"; //$NON-NLS-1$
+
+ static {
+ // initialize resource bundle
+ NLS.initializeMessages(BUNDLE_NAME, CqueryMessages.class);
+ }
+
+ public static String CqueryLanguageServer_label;
+ public static String CquerySymbolKind_e_illegal_value;
+ public static String StorageClass_e_illegal_value;
+
+ private CqueryMessages() {
+ }
+}
diff --git a/lsp/org.eclipse.cdt.lsp.cquery/src/org/eclipse/cdt/lsp/internal/cquery/CqueryMessages.properties b/lsp/org.eclipse.cdt.lsp.cquery/src/org/eclipse/cdt/lsp/internal/cquery/CqueryMessages.properties
new file mode 100644
index 00000000000..f01272e9988
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.cquery/src/org/eclipse/cdt/lsp/internal/cquery/CqueryMessages.properties
@@ -0,0 +1,13 @@
+###############################################################################
+# Copyright (c) 2019, 2020 Eclipse contributors and others.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# https://www.eclipse.org/legal/epl-2.0/.
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+
+CqueryLanguageServer_label=CQuery
+CquerySymbolKind_e_illegal_value=Illegal value {0} for cquery symbol kind
+StorageClass_e_illegal_value=Illegal enum value: {0}
diff --git a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/cquery/CquerySemanticHighlights.java b/lsp/org.eclipse.cdt.lsp.cquery/src/org/eclipse/cdt/lsp/internal/cquery/CquerySemanticHighlights.java
index a9c4f6f9eac..e7c2dc058a4 100644
--- a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/cquery/CquerySemanticHighlights.java
+++ b/lsp/org.eclipse.cdt.lsp.cquery/src/org/eclipse/cdt/lsp/internal/cquery/CquerySemanticHighlights.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2018 Manish Khurana , Nathan Ridge and others.
+ * Copyright (c) 2018, 2020 Manish Khurana , Nathan Ridge and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -9,7 +9,7 @@
* SPDX-License-Identifier: EPL-2.0
*******************************************************************************/
-package org.eclipse.cdt.lsp.core.cquery;
+package org.eclipse.cdt.lsp.internal.cquery;
import java.net.URI;
import java.util.List;
diff --git a/lsp/org.eclipse.cdt.lsp.cquery/src/org/eclipse/cdt/lsp/internal/cquery/CquerySymbolKind.java b/lsp/org.eclipse.cdt.lsp.cquery/src/org/eclipse/cdt/lsp/internal/cquery/CquerySymbolKind.java
new file mode 100644
index 00000000000..688eaa2a2ca
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.cquery/src/org/eclipse/cdt/lsp/internal/cquery/CquerySymbolKind.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 2018, 2020 Manish Khurana, Nathan Ridge and others.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * https://www.eclipse.org/legal/epl-2.0/.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.lsp.internal.cquery;
+
+import org.eclipse.osgi.util.NLS;
+
+public enum CquerySymbolKind {
+ Unknown(0), TypeAlias(252), Parameter(253), StaticMethod(254), Macro(255);
+
+ private int value;
+
+ public int getValue() {
+ return value;
+ }
+
+ private CquerySymbolKind(int value) {
+ this.value = value;
+ }
+
+ public static CquerySymbolKind forValue(int value) {
+ switch (value) {
+ case 0:
+ return CquerySymbolKind.Unknown;
+ case 252:
+ return CquerySymbolKind.TypeAlias;
+ case 253:
+ return CquerySymbolKind.Parameter;
+ case 254:
+ return CquerySymbolKind.StaticMethod;
+ case 255:
+ return CquerySymbolKind.Macro;
+ default:
+ throw new IllegalArgumentException(NLS.bind(CqueryMessages.CquerySymbolKind_e_illegal_value, value));
+ }
+ }
+} \ No newline at end of file
diff --git a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/cquery/ExtendedSymbolKindType.java b/lsp/org.eclipse.cdt.lsp.cquery/src/org/eclipse/cdt/lsp/internal/cquery/ExtendedSymbolKindType.java
index 205dc0acad1..21032819e3c 100644
--- a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/cquery/ExtendedSymbolKindType.java
+++ b/lsp/org.eclipse.cdt.lsp.cquery/src/org/eclipse/cdt/lsp/internal/cquery/ExtendedSymbolKindType.java
@@ -1,15 +1,14 @@
/*******************************************************************************
- * Copyright (c) 2018 Manish Khurana , Nathan Ridge and others.
+ * Copyright (c) 2018, 2020 Manish Khurana, Nathan Ridge and others.
*
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * https://www.eclipse.org/legal/epl-2.0/.
*
* SPDX-License-Identifier: EPL-2.0
*******************************************************************************/
-package org.eclipse.cdt.lsp.core.cquery;
+package org.eclipse.cdt.lsp.internal.cquery;
import java.lang.reflect.Type;
@@ -29,6 +28,7 @@ public class ExtendedSymbolKindType {
int value;
transient boolean isProtocolSymbol;
+ //FIXME: let's rework this example of "Exception-driven programming"
public ExtendedSymbolKindType(int _v) {
try {
SymbolKind.forValue(_v);
@@ -40,7 +40,7 @@ public class ExtendedSymbolKindType {
value = _v;
isProtocolSymbol = false;
} catch (IllegalArgumentException y) {
- throw new IllegalArgumentException("Illegal value for SymbolKind"); //$NON-NLS-1$
+ throw y;
}
}
}
diff --git a/lsp/org.eclipse.cdt.lsp.cquery/src/org/eclipse/cdt/lsp/internal/cquery/HighlightSymbol.java b/lsp/org.eclipse.cdt.lsp.cquery/src/org/eclipse/cdt/lsp/internal/cquery/HighlightSymbol.java
new file mode 100644
index 00000000000..81eed08b856
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.cquery/src/org/eclipse/cdt/lsp/internal/cquery/HighlightSymbol.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2018, 2020 Manish Khurana , Nathan Ridge and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.lsp.internal.cquery;
+
+import java.util.List;
+
+import org.eclipse.lsp4j.Range;
+
+public class HighlightSymbol {
+ private int stableId;
+ private ExtendedSymbolKindType parentKind;
+ private ExtendedSymbolKindType kind;
+ private StorageClass storage;
+ private List<Range> ranges;
+ private Integer role;
+
+ public HighlightSymbol(int stableId, ExtendedSymbolKindType parentKind, ExtendedSymbolKindType kind,
+ StorageClass storage, Integer role, List<Range> ranges) {
+ this.stableId = stableId;
+ this.parentKind = parentKind;
+ this.kind = kind;
+ this.storage = storage;
+ this.role = role;
+ this.ranges = ranges;
+ }
+
+ public int getStableId() {
+ return stableId;
+ }
+
+ public ExtendedSymbolKindType getParentKind() {
+ return parentKind;
+ }
+
+ public ExtendedSymbolKindType getKind() {
+ return kind;
+ }
+
+ public StorageClass getStorage() {
+ return storage;
+ }
+
+ public Integer getRole() {
+ return role;
+ }
+
+ public List<Range> getRanges() {
+ return ranges;
+ }
+} \ No newline at end of file
diff --git a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/cquery/IndexingProgressStats.java b/lsp/org.eclipse.cdt.lsp.cquery/src/org/eclipse/cdt/lsp/internal/cquery/IndexingProgressStats.java
index 3d7787ba998..72247a68283 100644
--- a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/cquery/IndexingProgressStats.java
+++ b/lsp/org.eclipse.cdt.lsp.cquery/src/org/eclipse/cdt/lsp/internal/cquery/IndexingProgressStats.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2018 Manish Khurana , Nathan Ridge and others.
+ * Copyright (c) 2018, 2020 Manish Khurana , Nathan Ridge and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -9,7 +9,7 @@
* SPDX-License-Identifier: EPL-2.0
*******************************************************************************/
-package org.eclipse.cdt.lsp.core.cquery;
+package org.eclipse.cdt.lsp.internal.cquery;
public class IndexingProgressStats {
private int indexRequestCount;
diff --git a/lsp/org.eclipse.cdt.lsp.cquery/src/org/eclipse/cdt/lsp/internal/cquery/StorageClass.java b/lsp/org.eclipse.cdt.lsp.cquery/src/org/eclipse/cdt/lsp/internal/cquery/StorageClass.java
new file mode 100644
index 00000000000..11ee78e2110
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.cquery/src/org/eclipse/cdt/lsp/internal/cquery/StorageClass.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2018, 2020 Manish Khurana, Nathan Ridge and others.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * https://www.eclipse.org/legal/epl-2.0/.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.lsp.internal.cquery;
+
+import org.eclipse.osgi.util.NLS;
+
+public enum StorageClass {
+ Invalid(0), None(1), Extern(2), Static(3), PrivateExtern(4), Auto(5), Register(6);
+
+ private int value;
+
+ public int getValue() {
+ return value;
+ }
+
+ StorageClass(int value) {
+ this.value = value;
+ }
+
+ public static StorageClass forValue(int value) {
+ StorageClass[] allValues = StorageClass.values();
+ if (value < 1 || value > allValues.length) {
+ throw new IllegalArgumentException(NLS.bind(CqueryMessages.StorageClass_e_illegal_value, value));
+ }
+ return allValues[value - 1];
+ }
+} \ No newline at end of file
diff --git a/lsp/org.eclipse.cdt.lsp.cquery/src/org/eclipse/cdt/lsp/internal/cquery/SymbolRole.java b/lsp/org.eclipse.cdt.lsp.cquery/src/org/eclipse/cdt/lsp/internal/cquery/SymbolRole.java
new file mode 100644
index 00000000000..1ee31e6ce27
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.cquery/src/org/eclipse/cdt/lsp/internal/cquery/SymbolRole.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2018, 2020 Nathan Ridge and others.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * https://www.eclipse.org/legal/epl-2.0/.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.lsp.internal.cquery;
+
+/**
+ * A class to contain constants that represent different roles
+ * a symbol can have.
+ * The constants are used as bit-flags to compose the value of
+ * HighlightSymbol.role.
+ */
+public final class SymbolRole {
+ public static final int Declaration = 1 << 0;
+ public static final int Definition = 1 << 1;
+ public static final int Reference = 1 << 2;
+ public static final int Read = 1 << 3;
+ public static final int Write = 1 << 4;
+ public static final int Call = 1 << 5;
+ public static final int Dynamic = 1 << 6;
+ public static final int Address = 1 << 7;
+ public static final int Implicit = 1 << 8;
+} \ No newline at end of file
diff --git a/lsp/org.eclipse.cdt.lsp.cquery/src/org/eclipse/cdt/lsp/internal/cquery/ui/CqueryLanguageServer.java b/lsp/org.eclipse.cdt.lsp.cquery/src/org/eclipse/cdt/lsp/internal/cquery/ui/CqueryLanguageServer.java
new file mode 100644
index 00000000000..71e9cf2e1dd
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.cquery/src/org/eclipse/cdt/lsp/internal/cquery/ui/CqueryLanguageServer.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 2018, 2020 Manish Khurana , Nathan Ridge and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.lsp.internal.cquery.ui;
+
+import java.net.URI;
+
+import org.eclipse.cdt.internal.ui.editor.CEditor;
+import org.eclipse.cdt.lsp.LanguageServerConfiguration;
+import org.eclipse.cdt.lsp.internal.cquery.CqueryMessages;
+import org.eclipse.cdt.ui.CUIPlugin;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+import org.osgi.service.component.annotations.Component;
+
+import com.google.gson.JsonObject;
+
+@SuppressWarnings("restriction")
+@Component
+public class CqueryLanguageServer implements LanguageServerConfiguration {
+
+ @Override
+ public String identifier() {
+ return "cquery"; //$NON-NLS-1$
+ }
+
+ @Override
+ public String label() {
+ return CqueryMessages.CqueryLanguageServer_label;
+ }
+
+ @Override
+ public Object options(Object defaults, URI uri) {
+ // TODO: Allow user to specify cache directory path
+ IPath cacheDirectory = Path.fromOSString(uri.getPath()).append(".cdt-lsp/cquery_index"); //$NON-NLS-1$
+ JsonObject result = (defaults instanceof JsonObject) ? (JsonObject) defaults : new JsonObject();
+ result.addProperty("cacheDirectory", cacheDirectory.toString()); //$NON-NLS-1$
+ result.addProperty("emitInactiveRegions", //$NON-NLS-1$
+ CUIPlugin.getDefault().getPreferenceStore().getBoolean(CEditor.INACTIVE_CODE_ENABLE));
+ JsonObject semanticHighlights = new JsonObject();
+ semanticHighlights.addProperty("enabled", CUIPlugin.getDefault().getPreferenceStore() //$NON-NLS-1$
+ .getBoolean(org.eclipse.cdt.ui.PreferenceConstants.EDITOR_SEMANTIC_HIGHLIGHTING_ENABLED));
+ result.add("highlight", semanticHighlights); //$NON-NLS-1$
+ return result;
+ }
+
+}
diff --git a/lsp/org.eclipse.cdt.lsp.cquery/src/org/eclipse/cdt/lsp/internal/cquery/ui/CqueryProtocolExtension.java b/lsp/org.eclipse.cdt.lsp.cquery/src/org/eclipse/cdt/lsp/internal/cquery/ui/CqueryProtocolExtension.java
new file mode 100644
index 00000000000..156781f092b
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.cquery/src/org/eclipse/cdt/lsp/internal/cquery/ui/CqueryProtocolExtension.java
@@ -0,0 +1,58 @@
+/*******************************************************************************
+ * Copyright (c) 2018, 2020 Manish Khurana, Nathan Ridge and others.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * https://www.eclipse.org/legal/epl-2.0/.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.cdt.lsp.internal.cquery.ui;
+
+import org.eclipse.cdt.lsp.LanguageProtocolExtension;
+import org.eclipse.cdt.lsp.internal.core.ShowStatus;
+import org.eclipse.cdt.lsp.internal.cquery.CqueryInactiveRegions;
+import org.eclipse.cdt.lsp.internal.cquery.CqueryMessages;
+import org.eclipse.cdt.lsp.internal.cquery.CquerySemanticHighlights;
+import org.eclipse.cdt.lsp.internal.cquery.IndexingProgressStats;
+import org.eclipse.cdt.lsp.internal.ui.StatusLineMessage;
+import org.eclipse.cdt.lsp.internal.ui.text.SetInactiveRegions;
+import org.eclipse.lsp4j.jsonrpc.services.JsonNotification;
+import org.osgi.service.component.annotations.Component;
+
+@SuppressWarnings("restriction")
+@Component
+public class CqueryProtocolExtension implements LanguageProtocolExtension {
+
+ private final ShowStatus progress;
+ private final SetInactiveRegions inactive;
+ private final PublishSemanticHighlighting highlighting;
+
+ public CqueryProtocolExtension() {
+ this.progress = new ShowStatus(() -> CqueryMessages.CqueryLanguageServer_label, new StatusLineMessage());
+ this.inactive = new SetInactiveRegions();
+ this.highlighting = new PublishSemanticHighlighting();
+ }
+
+ @Override
+ public String targetIdentifier() {
+ return "cquery"; //$NON-NLS-1$
+ }
+
+ @JsonNotification("$cquery/progress")
+ public final void indexingProgress(IndexingProgressStats stats) {
+ progress.accept(stats::getTotalJobs);
+ }
+
+ @JsonNotification("$cquery/setInactiveRegions")
+ public final void setInactiveRegions(CqueryInactiveRegions regions) {
+ inactive.accept(regions::getUri, regions::getInactiveRegions);
+ }
+
+ @JsonNotification("$cquery/publishSemanticHighlighting")
+ public final void semanticHighlights(CquerySemanticHighlights highlights) {
+ highlighting.accept(highlights);
+ }
+
+}
diff --git a/lsp/org.eclipse.cdt.lsp.cquery/src/org/eclipse/cdt/lsp/internal/cquery/ui/HighlightingNames.java b/lsp/org.eclipse.cdt.lsp.cquery/src/org/eclipse/cdt/lsp/internal/cquery/ui/HighlightingNames.java
new file mode 100644
index 00000000000..b91e9f993fd
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.cquery/src/org/eclipse/cdt/lsp/internal/cquery/ui/HighlightingNames.java
@@ -0,0 +1,82 @@
+/*******************************************************************************
+ * Copyright (c) 2018, 2020 Manish Khurana, Nathan Ridge and others.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * https://www.eclipse.org/legal/epl-2.0/.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.lsp.internal.cquery.ui;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.cdt.internal.ui.editor.SemanticHighlightings;
+import org.eclipse.cdt.lsp.internal.cquery.CquerySymbolKind;
+import org.eclipse.cdt.lsp.internal.cquery.ExtendedSymbolKindType;
+import org.eclipse.cdt.lsp.internal.cquery.StorageClass;
+import org.eclipse.cdt.lsp.internal.cquery.SymbolRole;
+import org.eclipse.lsp4j.SymbolKind;
+
+//FIXME: AF: rework this compilation unit from a container of static functions to a normal type
+@SuppressWarnings("restriction")
+public class HighlightingNames {
+
+ private static Map<Integer, String> semanticHighlightSymbolsMap = new HashMap<>();
+
+ static {
+ semanticHighlightSymbolsMap.put(SymbolKind.Namespace.getValue(), SemanticHighlightings.NAMESPACE);
+ semanticHighlightSymbolsMap.put(SymbolKind.Class.getValue(), SemanticHighlightings.CLASS);
+ semanticHighlightSymbolsMap.put(SymbolKind.Enum.getValue(), SemanticHighlightings.ENUM);
+ semanticHighlightSymbolsMap.put(SymbolKind.EnumMember.getValue(), SemanticHighlightings.ENUMERATOR);
+ semanticHighlightSymbolsMap.put(SymbolKind.Struct.getValue(), SemanticHighlightings.CLASS);
+ semanticHighlightSymbolsMap.put(SymbolKind.TypeParameter.getValue(), SemanticHighlightings.TEMPLATE_PARAMETER);
+ semanticHighlightSymbolsMap.put(CquerySymbolKind.TypeAlias.getValue(), SemanticHighlightings.TYPEDEF);
+ semanticHighlightSymbolsMap.put(CquerySymbolKind.Parameter.getValue(),
+ SemanticHighlightings.PARAMETER_VARIABLE);
+ semanticHighlightSymbolsMap.put(CquerySymbolKind.StaticMethod.getValue(),
+ SemanticHighlightings.STATIC_METHOD_INVOCATION);
+ semanticHighlightSymbolsMap.put(CquerySymbolKind.Macro.getValue(), SemanticHighlightings.MACRO_DEFINITION);
+ }
+
+ public static String getHighlightingName(ExtendedSymbolKindType kind, ExtendedSymbolKindType parentKind,
+ StorageClass storage, int role) {
+ // semanticHighlightSymbolsMap contains mappings where the color is determined entirely
+ // by the symbol kind.
+ // The additional checks below handle cases where the color also depends on the parent kind,
+ // storage class, or role.
+ String highlightingName = semanticHighlightSymbolsMap.get(kind.getValue());
+ if (highlightingName == null) {
+ if (kind.getValue() == SymbolKind.Variable.getValue()) {
+ if (parentKind.getValue() == SymbolKind.Function.getValue()
+ || parentKind.getValue() == SymbolKind.Method.getValue()
+ || parentKind.getValue() == SymbolKind.Constructor.getValue()) {
+ highlightingName = isDeclaration(role) ? SemanticHighlightings.LOCAL_VARIABLE_DECLARATION
+ : SemanticHighlightings.LOCAL_VARIABLE;
+ } else {
+ highlightingName = SemanticHighlightings.GLOBAL_VARIABLE;
+ }
+ } else if (kind.getValue() == SymbolKind.Field.getValue()) {
+ if (storage == StorageClass.Static) {
+ highlightingName = SemanticHighlightings.STATIC_FIELD;
+ } else {
+ highlightingName = SemanticHighlightings.FIELD;
+ }
+ } else if (kind.getValue() == SymbolKind.Function.getValue()) {
+ highlightingName = isDeclaration(role) ? SemanticHighlightings.FUNCTION_DECLARATION
+ : SemanticHighlightings.FUNCTION;
+ } else if (kind.getValue() == SymbolKind.Method.getValue()
+ || kind.getValue() == SymbolKind.Constructor.getValue()) {
+ highlightingName = isDeclaration(role) ? SemanticHighlightings.METHOD_DECLARATION
+ : SemanticHighlightings.METHOD;
+ }
+ }
+ return highlightingName;
+ }
+
+ private static boolean isDeclaration(int role) {
+ return (role & SymbolRole.Declaration) != 0 || (role & SymbolRole.Definition) != 0;
+ }
+
+}
diff --git a/lsp/org.eclipse.cdt.lsp.cquery/src/org/eclipse/cdt/lsp/internal/cquery/ui/PublishSemanticHighlighting.java b/lsp/org.eclipse.cdt.lsp.cquery/src/org/eclipse/cdt/lsp/internal/cquery/ui/PublishSemanticHighlighting.java
new file mode 100644
index 00000000000..579f3b58353
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.cquery/src/org/eclipse/cdt/lsp/internal/cquery/ui/PublishSemanticHighlighting.java
@@ -0,0 +1,155 @@
+/*******************************************************************************
+ * Copyright (c) 2018, 2020 Manish Khurana, Nathan Ridge and others.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * https://www.eclipse.org/legal/epl-2.0/.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.lsp.internal.cquery.ui;
+
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
+import java.util.function.Consumer;
+
+import org.eclipse.cdt.internal.ui.editor.SemanticHighlightingManager.HighlightedPosition;
+import org.eclipse.cdt.internal.ui.editor.SemanticHighlightingManager.HighlightingStyle;
+import org.eclipse.cdt.lsp.internal.core.workspace.ResolveDocumentUri;
+import org.eclipse.cdt.lsp.internal.cquery.CquerySemanticHighlights;
+import org.eclipse.cdt.lsp.internal.cquery.HighlightSymbol;
+import org.eclipse.cdt.lsp.internal.ui.text.PresentationReconcilerCPP;
+import org.eclipse.cdt.ui.CUIPlugin;
+import org.eclipse.cdt.ui.PreferenceConstants;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.preference.PreferenceConverter;
+import org.eclipse.jface.text.BadLocationException;
+import org.eclipse.jface.text.BadPositionCategoryException;
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.Region;
+import org.eclipse.jface.text.TextAttribute;
+import org.eclipse.jface.text.TextPresentation;
+import org.eclipse.lsp4j.Range;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.widgets.Display;
+
+//FIXME: needs more work
+@SuppressWarnings("restriction")
+public class PublishSemanticHighlighting implements Consumer<CquerySemanticHighlights> {
+
+ private final ResolveDocumentUri uri;
+
+ public PublishSemanticHighlighting() {
+ this.uri = new ResolveDocumentUri();
+ }
+
+ @Override
+ public void accept(CquerySemanticHighlights highlights) {
+ URI uriReceived = highlights.getUri();
+ // List of PresentationReconcilerCPP objects attached with same C++ source file.
+ //FIXME: AF: extract the retrieval of this list to a separate method
+ List<PresentationReconcilerCPP> matchingReconcilers = new ArrayList<>();
+
+ for (PresentationReconcilerCPP eachReconciler : PresentationReconcilerCPP.presentationReconcilers) {
+ IDocument currentReconcilerDoc = eachReconciler.getTextViewer().getDocument();
+ Optional<URI> currentReconcilerUri = uri.apply(currentReconcilerDoc);
+ if (!currentReconcilerUri.isPresent()) {
+ continue;
+ }
+
+ if (uriReceived.equals(currentReconcilerUri.get())) {
+ matchingReconcilers.add(eachReconciler);
+ }
+ }
+
+ if (matchingReconcilers.size() == 0) {
+ return;
+ }
+
+ // Using only first object of matchingReconcilers because all reconciler objects share same document object.
+ IDocument doc = matchingReconcilers.get(0).getTextViewer().getDocument();
+ IPreferenceStore store = CUIPlugin.getDefault().getPreferenceStore();
+
+ // Removing semantic highlighting position category and old positions from document.
+ try {
+ doc.removePositionCategory(PresentationReconcilerCPP.SEMANTIC_HIGHLIGHTING_POSITION_CATEGORY);
+ } catch (BadPositionCategoryException e) {
+ Platform.getLog(getClass()).error(e.getMessage(), e);
+ }
+ // Again add Semantic Highlighting Position Category to the document.
+ doc.addPositionCategory(PresentationReconcilerCPP.SEMANTIC_HIGHLIGHTING_POSITION_CATEGORY);
+
+ for (HighlightSymbol highlight : highlights.getSymbols()) {
+
+ String highlightingName = HighlightingNames.getHighlightingName(highlight.getKind(),
+ highlight.getParentKind(), highlight.getStorage(), highlight.getRole());
+ String colorKey = PreferenceConstants.EDITOR_SEMANTIC_HIGHLIGHTING_PREFIX + highlightingName
+ + PreferenceConstants.EDITOR_SEMANTIC_HIGHLIGHTING_COLOR_SUFFIX;
+
+ boolean isEnabled = store.getBoolean(PreferenceConstants.EDITOR_SEMANTIC_HIGHLIGHTING_PREFIX
+ + highlightingName + PreferenceConstants.EDITOR_SEMANTIC_HIGHLIGHTING_ENABLED_SUFFIX);
+ boolean isBold = store.getBoolean(PreferenceConstants.EDITOR_SEMANTIC_HIGHLIGHTING_PREFIX + highlightingName
+ + PreferenceConstants.EDITOR_SEMANTIC_HIGHLIGHTING_BOLD_SUFFIX);
+ boolean isItalic = store.getBoolean(PreferenceConstants.EDITOR_SEMANTIC_HIGHLIGHTING_PREFIX
+ + highlightingName + PreferenceConstants.EDITOR_SEMANTIC_HIGHLIGHTING_ITALIC_SUFFIX);
+ boolean isUnderline = store.getBoolean(PreferenceConstants.EDITOR_SEMANTIC_HIGHLIGHTING_PREFIX
+ + highlightingName + PreferenceConstants.EDITOR_SEMANTIC_HIGHLIGHTING_UNDERLINE_SUFFIX);
+ boolean isStrikethrough = store.getBoolean(PreferenceConstants.EDITOR_SEMANTIC_HIGHLIGHTING_PREFIX
+ + highlightingName + PreferenceConstants.EDITOR_SEMANTIC_HIGHLIGHTING_STRIKETHROUGH_SUFFIX);
+
+ // TODO: Use IColorManager to cache Color objects so that only one object per color is created.
+ Color color = new Color(Display.getCurrent(),
+ PreferenceConverter.getColor(CUIPlugin.getDefault().getPreferenceStore(), colorKey));
+
+ List<Range> ranges = highlight.getRanges();
+ for (Range range : ranges) {
+
+ int offset = 0, length = 0;
+ try {
+ offset = doc.getLineOffset(range.getStart().getLine()) + range.getStart().getCharacter();
+ length = doc.getLineOffset(range.getEnd().getLine()) + range.getEnd().getCharacter() - offset;
+ } catch (BadLocationException e) {
+ Platform.getLog(getClass()).error(e.getMessage(), e);
+ }
+
+ int textStyle = SWT.NORMAL;
+
+ if (isBold) {
+ textStyle = SWT.BOLD;
+ }
+ if (isItalic) {
+ textStyle |= SWT.ITALIC;
+ }
+ if (isUnderline) {
+ textStyle |= TextAttribute.UNDERLINE;
+ }
+ if (isStrikethrough) {
+ textStyle |= TextAttribute.STRIKETHROUGH;
+ }
+
+ TextAttribute textAttribute = new TextAttribute(color, null, textStyle);
+ HighlightingStyle highlightingStyle = new HighlightingStyle(textAttribute, isEnabled);
+ HighlightedPosition highlightedPosition = new HighlightedPosition(offset, length, highlightingStyle,
+ matchingReconcilers.get(0).getSemanticHighlightingPositionUpdater());
+ try {
+ doc.addPosition(PresentationReconcilerCPP.SEMANTIC_HIGHLIGHTING_POSITION_CATEGORY,
+ highlightedPosition);
+ } catch (BadLocationException | BadPositionCategoryException e) {
+ Platform.getLog(getClass()).error(e.getMessage(), e);
+ }
+ }
+ }
+
+ Display.getDefault().asyncExec(() -> {
+ for (PresentationReconcilerCPP eachReconciler : matchingReconcilers) {
+ TextPresentation presentation = eachReconciler.createPresentation(new Region(0, doc.getLength()), doc);
+ eachReconciler.getTextViewer().changeTextPresentation(presentation, false);
+ }
+ });
+ }
+
+}
diff --git a/lsp/org.eclipse.cdt.lsp.ui/.classpath b/lsp/org.eclipse.cdt.lsp.ui/.classpath
new file mode 100644
index 00000000000..e801ebfb468
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.ui/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/lsp/org.eclipse.cdt.lsp.ui/.project b/lsp/org.eclipse.cdt.lsp.ui/.project
new file mode 100644
index 00000000000..6d4bd487334
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.ui/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.cdt.lsp.ui</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+ </natures>
+</projectDescription>
diff --git a/lsp/org.eclipse.cdt.lsp.ui/.settings/org.eclipse.core.resources.prefs b/lsp/org.eclipse.cdt.lsp.ui/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.ui/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/lsp/org.eclipse.cdt.lsp.ui/.settings/org.eclipse.core.runtime.prefs b/lsp/org.eclipse.cdt.lsp.ui/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 00000000000..5a0ad22d2a7
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.ui/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/lsp/org.eclipse.cdt.lsp.ui/.settings/org.eclipse.jdt.core.prefs b/lsp/org.eclipse.cdt.lsp.ui/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..e3a8104f9ca
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.ui/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/.settings/org.eclipse.jdt.launching.prefs b/lsp/org.eclipse.cdt.lsp.ui/.settings/org.eclipse.jdt.launching.prefs
index f8a131b56e0..f8a131b56e0 100644
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/.settings/org.eclipse.jdt.launching.prefs
+++ b/lsp/org.eclipse.cdt.lsp.ui/.settings/org.eclipse.jdt.launching.prefs
diff --git a/lsp/org.eclipse.cdt.lsp.ui/.settings/org.eclipse.jdt.ui.prefs b/lsp/org.eclipse.cdt.lsp.ui/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.ui/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/lsp/org.eclipse.cdt.lsp.ui/.settings/org.eclipse.pde.api.tools.prefs b/lsp/org.eclipse.cdt.lsp.ui/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 00000000000..ec9fbf321d0
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.ui/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,184 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITH_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_FIELD=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERCLASS_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_CHANGED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENTS=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETERS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Error
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Warning
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+MISSING_EE_DESCRIPTIONS=Warning
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=false
+changed_execution_env=Error
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+incompatible_api_component_version_report_major_without_breaking_change=Warning
+incompatible_api_component_version_report_minor_without_api_change=Warning
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/lsp/org.eclipse.cdt.lsp.ui/.settings/org.eclipse.pde.prefs b/lsp/org.eclipse.cdt.lsp.ui/.settings/org.eclipse.pde.prefs
new file mode 100644
index 00000000000..d2dc703ba9e
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.ui/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,35 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=2
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=2
+compilers.p.missing-version-export-package=2
+compilers.p.missing-version-import-package=2
+compilers.p.missing-version-require-bundle=2
+compilers.p.no-required-att=0
+compilers.p.no.automatic.module=1
+compilers.p.not-externalized-att=1
+compilers.p.service.component.without.lazyactivation=1
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/lsp/org.eclipse.cdt.lsp.ui/META-INF/MANIFEST.MF b/lsp/org.eclipse.cdt.lsp.ui/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..bdc0943e316
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,26 @@
+Manifest-Version: 1.0
+Automatic-Module-Name: org.eclipse.cdt.lsp.ui
+Bundle-ManifestVersion: 2
+Bundle-SymbolicName: org.eclipse.cdt.lsp.ui;singleton:=true
+Bundle-Version: 0.1.400.qualifier
+Bundle-Name: %Bundle-Name
+Bundle-Vendor: %Bundle-Vendor
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Require-Bundle: org.eclipse.osgi;bundle-version="[3.15.0,4.0.0)",
+ org.eclipse.core.expressions;bundle-version="3.7.0",
+ org.eclipse.core.resources;bundle-version="3.13.800",
+ org.eclipse.core.runtime;bundle-version="3.19.0",
+ org.eclipse.equinox.preferences;bundle-version="[3.7.0,4.0.0)",
+ org.eclipse.jface.text;bundle-version="3.16.0",
+ org.eclipse.ui;bundle-version="[3.115.0,4.0.0)",
+ org.eclipse.ui.editors;bundle-version="3.13.300",
+ org.eclipse.lsp4e;bundle-version="0.13.1",
+ org.eclipse.lsp4j;bundle-version="0.9.0",
+ org.eclipse.cdt.core;bundle-version="6.10.0",
+ org.eclipse.cdt.ui;bundle-version="6.6.0",
+ org.eclipse.cdt.lsp.core;bundle-version="[1.1.0,2.0.0)"
+Export-Package: org.eclipse.cdt.lsp.internal.ui;x-internal:=true,
+ org.eclipse.cdt.lsp.internal.ui.preferences;x-internal:=true,
+ org.eclipse.cdt.lsp.internal.ui.text
+Bundle-ActivationPolicy: lazy
+Bundle-Activator: org.eclipse.cdt.lsp.internal.ui.LspUiActivator
diff --git a/lsp/org.eclipse.cdt.lsp.ui/OSGI-INF/l10n/bundle.properties b/lsp/org.eclipse.cdt.lsp.ui/OSGI-INF/l10n/bundle.properties
new file mode 100644
index 00000000000..991500c8ba3
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.ui/OSGI-INF/l10n/bundle.properties
@@ -0,0 +1,22 @@
+#Properties file for org.eclipse.cdt.lsp.ui
+###############################################################################
+# Copyright (c) 2019 ArSysOp and others
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0/.
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# ArSysOp - initial API and implementation
+###############################################################################
+
+Bundle-Name = CDT LSP UI
+Bundle-Vendor = Eclipse CDT
+
+preferencePages.languageServer.name=C/C++ Language Server
+
+cDocumentSetupParticipant =C Document Setup Participant
+
+properties.ls.name = C/C++ Language Server \ No newline at end of file
diff --git a/lsp/org.eclipse.cdt.lsp.ui/about.html b/lsp/org.eclipse.cdt.lsp.ui/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.ui/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/lsp/org.eclipse.cdt.lsp.ui/about.ini b/lsp/org.eclipse.cdt.lsp.ui/about.ini
new file mode 100644
index 00000000000..e07a7bb377e
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.ui/about.ini
@@ -0,0 +1,24 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%blurb
+
+# Property "windowImage" contains path to window icon (16x16)
+# needed for primary features only
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=cdt_logo_icon32.png
+
+# Property "aboutImage" contains path to product image (500x330 or 115x164)
+# needed for primary features only
+
+# Property "appName" contains name of the application (translated)
+# needed for primary features only
+
+# Property "welcomePerspective" contains the id of the perspective in which the
+# welcome page is to be opened.
+# optional
diff --git a/lsp/org.eclipse.cdt.lsp.ui/about.mappings b/lsp/org.eclipse.cdt.lsp.ui/about.mappings
new file mode 100644
index 00000000000..936a8039c3e
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.ui/about.mappings
@@ -0,0 +1,9 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+# The following should contain the build version.
+# e.g. "0=20200106-1728"
+# This value will be added automatically via the build scripts
+0=${buildId}
diff --git a/lsp/org.eclipse.cdt.lsp.ui/about.properties b/lsp/org.eclipse.cdt.lsp.ui/about.properties
new file mode 100644
index 00000000000..a153a65fb01
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.ui/about.properties
@@ -0,0 +1,32 @@
+###############################################################################
+# Copyright (c) 2018, 2022 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+# about.properties
+# contains externalized strings for about.ini
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# fill-ins are supplied by about.mappings
+# This file should be translated.
+# NOTE TO TRANSLATOR: Please do not translate the featureVersion variable.
+
+
+blurb=LSP4E C/C++ Support\n\
+\n\
+Version: {featureVersion}\n\
+Build id: {0}\n\
+\n\
+Copyright (c) 2018, 2022 Contributors to the Eclipse Foundation
+\n\
+See the NOTICE file(s) distributed with this work for additional\n\
+information regarding copyright ownership.\n\
+\n\
+Visit http://www.eclipse.org/cdt
diff --git a/lsp/org.eclipse.cdt.lsp.ui/build.properties b/lsp/org.eclipse.cdt.lsp.ui/build.properties
new file mode 100644
index 00000000000..3470a164d2c
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.ui/build.properties
@@ -0,0 +1,26 @@
+###############################################################################
+# Copyright (c) 2019 ArSysOp and others
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0/.
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# ArSysOp - initial API and implementation
+###############################################################################
+
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ OSGI-INF/,\
+ plugin.xml,\
+ about.html,\
+ about.ini,\
+ about.mappings,\
+ about.properties,\
+ cdt_logo_icon32.png
+
+src.includes = about.html
diff --git a/lsp/org.eclipse.cdt.lsp.ui/cdt_logo_icon32.png b/lsp/org.eclipse.cdt.lsp.ui/cdt_logo_icon32.png
new file mode 100644
index 00000000000..470ca81b327
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.ui/cdt_logo_icon32.png
Binary files differ
diff --git a/lsp/org.eclipse.cdt.lsp.ui/plugin.xml b/lsp/org.eclipse.cdt.lsp.ui/plugin.xml
new file mode 100644
index 00000000000..292b03d55b4
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.ui/plugin.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<!--
+ Copyright (c) 2019 ArSysOp and others
+
+ This program and the accompanying materials are made available under the
+ terms of the Eclipse Public License 2.0 which is available at
+ https://www.eclipse.org/legal/epl-2.0/.
+
+ SPDX-License-Identifier: EPL-2.0
+
+ Contributors:
+ Alexander Fedorov <alexander.fedorov@arsysop.ru> - initial API and implementation
+-->
+<plugin>
+ <extension
+ point="org.eclipse.ui.preferencePages">
+ <page
+ class="org.eclipse.cdt.lsp.internal.ui.preferences.CPPLanguageServerPreferencePage"
+ category="org.eclipse.cdt.ui.preferences.CPluginPreferencePage"
+ id="org.eclipse.cdt.lsp.ui.preferencePages.languageServer"
+ name="%preferencePages.languageServer.name">
+ </page>
+ </extension>
+ <extension
+ point="org.eclipse.ui.propertyPages">
+ <page
+ category="org.eclipse.cdt.ui.newui.Page_head_general"
+ class="org.eclipse.cdt.lsp.internal.ui.properties.LanguageServerPropertyPage"
+ id="org.eclipse.cdt.lsp.ui.properties.ls"
+ name="%properties.ls.name">
+ <filter
+ name="projectNature"
+ value="org.eclipse.cdt.core.cnature">
+ </filter>
+ <enabledWhen>
+ <or>
+ <adapt
+ type="org.eclipse.core.resources.IProject">
+ </adapt>
+ </or>
+ </enabledWhen>
+ </page>
+ </extension>
+ <extension
+ point="org.eclipse.ui.editors">
+ <editorContentTypeBinding
+ contentTypeId="org.eclipse.cdt.lsp.core"
+ editorId="org.eclipse.ui.genericeditor.GenericEditor">
+ </editorContentTypeBinding>
+ </extension>
+ <extension
+ point="org.eclipse.ui.genericeditor.autoEditStrategies">
+ <autoEditStrategy
+ class="org.eclipse.cdt.lsp.internal.ui.text.AutoIndentStrategyCPP"
+ contentType="org.eclipse.cdt.lsp.core">
+ </autoEditStrategy>
+ </extension>
+ <extension
+ point="org.eclipse.ui.genericeditor.presentationReconcilers">
+ <presentationReconciler
+ class="org.eclipse.cdt.lsp.internal.ui.text.PresentationReconcilerCPP"
+ contentType="org.eclipse.cdt.lsp.core">
+ </presentationReconciler>
+ </extension>
+ <extension
+ id="org.eclipse.cdt.lsp.core.CDocumentSetupParticipant"
+ name="%cDocumentSetupParticipant"
+ point="org.eclipse.core.filebuffers.documentSetup">
+ <participant
+ class="org.eclipse.cdt.internal.ui.editor.CDocumentSetupParticipant"
+ contentTypeId="org.eclipse.cdt.lsp.core">
+ </participant>
+ </extension>
+ <extension
+ point="org.eclipse.core.expressions.propertyTesters">
+ <propertyTester
+ class="org.eclipse.cdt.lsp.internal.ui.expressions.DocumentsTester"
+ id="org.eclipse.cdt.lsp.workspace.documents"
+ namespace="org.eclipse.cdt.lsp.documents"
+ properties="prefer"
+ type="org.eclipse.ui.texteditor.AbstractDecoratedTextEditor">
+ </propertyTester>
+ </extension>
+</plugin>
diff --git a/lsp/org.eclipse.cdt.lsp.ui/src/org/eclipse/cdt/lsp/internal/ui/LspUiActivator.java b/lsp/org.eclipse.cdt.lsp.ui/src/org/eclipse/cdt/lsp/internal/ui/LspUiActivator.java
new file mode 100644
index 00000000000..d32bfee6409
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.ui/src/org/eclipse/cdt/lsp/internal/ui/LspUiActivator.java
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Eclipse Foundation and others.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * https://www.eclipse.org/legal/epl-2.0/.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov <alexander.fedorov@arsysop.ru> - initial API and implementatin
+ *******************************************************************************/
+package org.eclipse.cdt.lsp.internal.ui;
+
+import org.eclipse.cdt.lsp.core.Activator;
+import org.eclipse.core.runtime.preferences.InstanceScope;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.ui.preferences.ScopedPreferenceStore;
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+//FIXME: try to remove this class during upcoming preference access rework
+public class LspUiActivator implements BundleActivator {
+
+ private static LspUiActivator plugin;
+ private IPreferenceStore preferenceStore;
+
+ public static LspUiActivator getDefault() {
+ return plugin;
+ }
+
+ @Override
+ public void start(BundleContext context) throws Exception {
+ plugin = this;
+ }
+
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ preferenceStore = null;
+ plugin = null;
+ }
+
+ //FIXME: currently we are still using "core" bundle to store preferences, to be revisited
+ public IPreferenceStore getLspCorePreferences() {
+ if (preferenceStore == null) {
+ preferenceStore = new ScopedPreferenceStore(InstanceScope.INSTANCE, Activator.PLUGIN_ID);
+ }
+ return preferenceStore;
+ }
+
+}
diff --git a/lsp/org.eclipse.cdt.lsp.ui/src/org/eclipse/cdt/lsp/internal/ui/LspUiMessages.java b/lsp/org.eclipse.cdt.lsp.ui/src/org/eclipse/cdt/lsp/internal/ui/LspUiMessages.java
new file mode 100644
index 00000000000..eba5055287e
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.ui/src/org/eclipse/cdt/lsp/internal/ui/LspUiMessages.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2019, 2020 Eclipse Foundation and others.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * https://www.eclipse.org/legal/epl-2.0/.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov <alexander.fedorov@arsysop.ru> - initial API and implementatin
+ *******************************************************************************/
+
+package org.eclipse.cdt.lsp.internal.ui;
+
+import org.eclipse.osgi.util.NLS;
+
+public class LspUiMessages extends NLS {
+
+ private static final String BUNDLE_NAME = "org.eclipse.cdt.lsp.internal.ui.LspUiMessages"; //$NON-NLS-1$
+
+ static {
+ // initialize resource bundle
+ NLS.initializeMessages(BUNDLE_NAME, LspUiMessages.class);
+ }
+
+ public static String CPPLanguageServerPreferencePage_description;
+ public static String CPPLanguageServerPreferencePage_server_options;
+ public static String CPPLanguageServerPreferencePage_server_path;
+ public static String CPPLanguageServerPreferencePage_server_selector;
+ public static String LanguageServerPropertyPage_w_ls_experimental;
+
+ private LspUiMessages() {
+ }
+}
diff --git a/lsp/org.eclipse.cdt.lsp.ui/src/org/eclipse/cdt/lsp/internal/ui/LspUiMessages.properties b/lsp/org.eclipse.cdt.lsp.ui/src/org/eclipse/cdt/lsp/internal/ui/LspUiMessages.properties
new file mode 100644
index 00000000000..162628664dc
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.ui/src/org/eclipse/cdt/lsp/internal/ui/LspUiMessages.properties
@@ -0,0 +1,20 @@
+###############################################################################
+# Copyright (c) 2019, 2020 Eclipse Foundation and others
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# https://www.eclipse.org/legal/epl-2.0/.
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Eclipse Foundation - initial API and implementation
+# Alexander Fedorov <alexander.fedorov@arsysop.ru> - Bug 558484
+# Philip Langer <planger@eclipsesource.com> - Bug 563280
+###############################################################################
+
+CPPLanguageServerPreferencePage_description=Preferences for the C/C++ Language Server\n\n
+CPPLanguageServerPreferencePage_server_options=Command-line options for the server
+CPPLanguageServerPreferencePage_server_path=Path to the server executable
+CPPLanguageServerPreferencePage_server_selector=Please select the C/C++ Language Server you want to use in Eclipse :
+LanguageServerPropertyPage_w_ls_experimental=The C/C++ Language Server support is experimental
diff --git a/lsp/org.eclipse.cdt.lsp.ui/src/org/eclipse/cdt/lsp/internal/ui/StatusLineMessage.java b/lsp/org.eclipse.cdt.lsp.ui/src/org/eclipse/cdt/lsp/internal/ui/StatusLineMessage.java
new file mode 100644
index 00000000000..f348e96203b
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.ui/src/org/eclipse/cdt/lsp/internal/ui/StatusLineMessage.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 2020 ArSysOp and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov (ArSysOp) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.lsp.internal.ui;
+
+import java.util.Arrays;
+import java.util.Optional;
+import java.util.function.Consumer;
+
+import org.eclipse.jface.action.StatusLineContributionItem;
+import org.eclipse.jface.action.StatusLineManager;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.internal.WorkbenchWindow;
+
+@SuppressWarnings("restriction")
+public class StatusLineMessage implements Consumer<String> {
+
+ private final int width = 28;
+ private final String id = "org.eclipse.cdt.lsp.ui.status"; //$NON-NLS-1$
+
+ @Override
+ public void accept(String message) {
+ Display.getDefault().asyncExec(() -> //
+ Arrays.stream(PlatformUI.getWorkbench().getWorkbenchWindows())//
+ .map(this::ensure)//
+ .forEach(item -> item.setText(message)));
+ }
+
+ private StatusLineContributionItem ensure(IWorkbenchWindow window) {
+ //FIXME: find via MToolControl with "org.eclipse.ui.StatusLine" identifier
+ StatusLineManager line = ((WorkbenchWindow) window).getStatusLineManager();
+ return Optional.ofNullable(line.find(id))//
+ .filter(StatusLineContributionItem.class::isInstance)//
+ .map(StatusLineContributionItem.class::cast)//
+ .orElseGet(() -> create(line));
+ }
+
+ private StatusLineContributionItem create(StatusLineManager line) {
+ StatusLineContributionItem item = new StatusLineContributionItem(id, width);
+ line.add(item);
+ return item;
+ }
+}
diff --git a/lsp/org.eclipse.cdt.lsp.ui/src/org/eclipse/cdt/lsp/internal/ui/expressions/DocumentsTester.java b/lsp/org.eclipse.cdt.lsp.ui/src/org/eclipse/cdt/lsp/internal/ui/expressions/DocumentsTester.java
new file mode 100644
index 00000000000..8c756019cfa
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.ui/src/org/eclipse/cdt/lsp/internal/ui/expressions/DocumentsTester.java
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * Copyright (c) 2020 ArSysOp and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov (ArSysOp) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.lsp.internal.ui.expressions;
+
+import org.eclipse.cdt.lsp.internal.core.workspace.PreferLanguageServer;
+import org.eclipse.core.expressions.PropertyTester;
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.ui.texteditor.AbstractDecoratedTextEditor;
+
+public final class DocumentsTester extends PropertyTester {
+
+ private final String key = "prefer"; //$NON-NLS-1$
+ private final PreferLanguageServer predicate;
+
+ public DocumentsTester() {
+ this.predicate = new PreferLanguageServer();
+ }
+
+ @Override
+ public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
+ if (key.equals(property)) {
+ if (receiver instanceof AbstractDecoratedTextEditor) {
+ AbstractDecoratedTextEditor editor = (AbstractDecoratedTextEditor) receiver;
+ IDocument document = editor.getDocumentProvider().getDocument(editor.getEditorInput());
+ return predicate.test(document);
+ }
+ }
+ return false;
+ }
+
+}
diff --git a/lsp/org.eclipse.cdt.lsp.ui/src/org/eclipse/cdt/lsp/internal/ui/preferences/CPPLanguageServerPreferencePage.java b/lsp/org.eclipse.cdt.lsp.ui/src/org/eclipse/cdt/lsp/internal/ui/preferences/CPPLanguageServerPreferencePage.java
new file mode 100644
index 00000000000..9dfe3523960
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.ui/src/org/eclipse/cdt/lsp/internal/ui/preferences/CPPLanguageServerPreferencePage.java
@@ -0,0 +1,99 @@
+/*******************************************************************************
+ * Copyright (c) 2018, 2020 Manish Khurana, Nathan Ridge and others.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * https://www.eclipse.org/legal/epl-2.0/.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Manish Khurana <mkmanishkhurana98@gmail.com> - initial API and implementation
+ * Nathan Ridge <zeratul976@hotmail.com> - initial API and implementation
+ * Alexander Fedorov <alexander.fedorov@arsysop.ru> - Bug 558516
+ * Philip Langer <planger@eclipsesource.com> - Bug 563280
+ *******************************************************************************/
+
+package org.eclipse.cdt.lsp.internal.ui.preferences;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import org.eclipse.cdt.lsp.LanguageServerConfiguration;
+import org.eclipse.cdt.lsp.SupportedLanguageServers;
+import org.eclipse.cdt.lsp.core.CPPStreamConnectionProvider;
+import org.eclipse.cdt.lsp.core.PreferenceConstants;
+import org.eclipse.cdt.lsp.internal.core.preferences.LanguageServerDefaults;
+import org.eclipse.cdt.lsp.internal.ui.LspUiActivator;
+import org.eclipse.cdt.lsp.internal.ui.LspUiMessages;
+import org.eclipse.cdt.ui.newui.MultiLineTextFieldEditor;
+import org.eclipse.core.runtime.ServiceCaller;
+import org.eclipse.core.runtime.preferences.PreferenceMetadata;
+import org.eclipse.jface.preference.BooleanFieldEditor;
+import org.eclipse.jface.preference.FieldEditor;
+import org.eclipse.jface.preference.FieldEditorPreferencePage;
+import org.eclipse.jface.preference.FileFieldEditor;
+import org.eclipse.jface.preference.RadioGroupFieldEditor;
+import org.eclipse.jface.util.PropertyChangeEvent;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPreferencePage;
+
+/**
+ * This class represents the preference page for C/C++ Language Server.
+ */
+
+public class CPPLanguageServerPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {
+
+ private FileFieldEditor serverPath;
+ private RadioGroupFieldEditor serverChoice;
+ private MultiLineTextFieldEditor serverOptions;
+
+ public CPPLanguageServerPreferencePage() {
+ super(GRID);
+ setPreferenceStore(LspUiActivator.getDefault().getLspCorePreferences());
+ setDescription(LspUiMessages.CPPLanguageServerPreferencePage_description);
+ }
+
+ @Override
+ public void createFieldEditors() {
+ PreferenceMetadata<Boolean> prefer = new LanguageServerDefaults().preferLanguageServer();
+ addField(new BooleanFieldEditor(prefer.identifer(), prefer.name(), getFieldEditorParent()));
+ serverChoice = new RadioGroupFieldEditor(PreferenceConstants.P_SERVER_CHOICE,
+ LspUiMessages.CPPLanguageServerPreferencePage_server_selector, 1, contributedServers(),
+ getFieldEditorParent());
+ addField(serverChoice);
+
+ serverPath = new FileFieldEditor(PreferenceConstants.P_SERVER_PATH,
+ LspUiMessages.CPPLanguageServerPreferencePage_server_path, getFieldEditorParent());
+ addField(serverPath);
+
+ serverOptions = new MultiLineTextFieldEditor(PreferenceConstants.P_SERVER_OPTIONS,
+ LspUiMessages.CPPLanguageServerPreferencePage_server_options, getFieldEditorParent());
+ addField(serverOptions);
+ }
+
+ @Override
+ public void propertyChange(PropertyChangeEvent event) {
+ if (event.getSource() == serverChoice && event.getProperty() == FieldEditor.VALUE) {
+ File changedLSLocation = CPPStreamConnectionProvider.getDefaultLSLocation((String) event.getNewValue());
+ if (changedLSLocation != null) {
+ serverPath.setStringValue(changedLSLocation.getAbsolutePath());
+ }
+ }
+ super.propertyChange(event);
+ }
+
+ @Override
+ public void init(IWorkbench workbench) {
+ }
+
+ private String[][] contributedServers() {
+ List<LanguageServerConfiguration> servers = new ArrayList<>();
+ ServiceCaller.callOnce(getClass(), SupportedLanguageServers.class, x -> servers.addAll(x.all()));
+ return servers.stream()//
+ .map(x -> new String[] { x.label(), x.identifier() })//
+ .collect(Collectors.toList()).toArray(new String[0][]);
+ }
+} \ No newline at end of file
diff --git a/lsp/org.eclipse.cdt.lsp.ui/src/org/eclipse/cdt/lsp/internal/ui/properties/LanguageServerPropertyPage.java b/lsp/org.eclipse.cdt.lsp.ui/src/org/eclipse/cdt/lsp/internal/ui/properties/LanguageServerPropertyPage.java
new file mode 100644
index 00000000000..983ea18e60c
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.ui/src/org/eclipse/cdt/lsp/internal/ui/properties/LanguageServerPropertyPage.java
@@ -0,0 +1,139 @@
+/*******************************************************************************
+ * Copyright (c) 2020 ArSysOp and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov <alexander.fedorov@arsysop.ru> - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.lsp.internal.ui.properties;
+
+import java.util.Optional;
+
+import org.eclipse.cdt.lsp.core.Activator;
+import org.eclipse.cdt.lsp.core.preferences.LanguageServerPreferenceMetadata;
+import org.eclipse.cdt.lsp.internal.core.preferences.LanguageServerDefaults;
+import org.eclipse.cdt.lsp.internal.ui.LspUiMessages;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.ProjectScope;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences;
+import org.eclipse.core.runtime.preferences.IScopeContext;
+import org.eclipse.core.runtime.preferences.PreferenceMetadata;
+import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.jface.preference.PreferencePage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.ui.dialogs.PropertyPage;
+import org.osgi.framework.FrameworkUtil;
+import org.osgi.service.prefs.BackingStoreException;
+
+public final class LanguageServerPropertyPage extends PropertyPage {
+
+ private LanguageServerPreferenceMetadata metadata;
+ private Button prefer;
+
+ public LanguageServerPropertyPage() {
+ this.metadata = new LanguageServerDefaults();
+ }
+
+ private void addHeaderSection(Composite parent) {
+ Composite composite = createDefaultComposite(parent);
+ Label warning = new Label(composite, SWT.NONE);
+ warning.setText(LspUiMessages.LanguageServerPropertyPage_w_ls_experimental);
+ }
+
+ private void addSeparator(Composite parent) {
+ Label separator = new Label(parent, SWT.SEPARATOR | SWT.HORIZONTAL);
+ GridData gridData = new GridData();
+ gridData.horizontalAlignment = GridData.FILL;
+ gridData.grabExcessHorizontalSpace = true;
+ separator.setLayoutData(gridData);
+ }
+
+ private void addSettingsSection(Composite parent) {
+ PreferenceMetadata<Boolean> option = metadata.preferLanguageServer();
+ Composite composite = createDefaultComposite(parent);
+ prefer = new Button(composite, SWT.CHECK);
+ prefer.setLayoutData(new GridData());
+ prefer.setText(option.name());
+ prefer.setToolTipText(option.description());
+ }
+
+ private void load() {
+ Optional<IProject> project = project();
+ PreferenceMetadata<Boolean> option = metadata.preferLanguageServer();
+ if (project.isPresent()) {
+ prefer.setSelection(Platform.getPreferencesService().getBoolean(Activator.PLUGIN_ID, option.identifer(),
+ option.defaultValue(), new IScopeContext[] { new ProjectScope(project.get()) }));
+ } else {
+ prefer.setSelection(option.defaultValue());
+ }
+ }
+
+ /**
+ * @see PreferencePage#createContents(Composite)
+ */
+ @Override
+ protected Control createContents(Composite parent) {
+ Composite composite = new Composite(parent, SWT.NONE);
+ GridLayout layout = new GridLayout();
+ composite.setLayout(layout);
+ GridData data = new GridData(GridData.FILL);
+ data.grabExcessHorizontalSpace = true;
+ composite.setLayoutData(data);
+ addHeaderSection(composite);
+ addSeparator(composite);
+ addSettingsSection(composite);
+ load();
+ return composite;
+ }
+
+ private Composite createDefaultComposite(Composite parent) {
+ Composite composite = new Composite(parent, SWT.NULL);
+ GridLayout layout = new GridLayout();
+ layout.numColumns = 2;
+ composite.setLayout(layout);
+ composite.setLayoutData(GridDataFactory.fillDefaults().create());
+ return composite;
+ }
+
+ @Override
+ protected void performDefaults() {
+ super.performDefaults();
+ prefer.setSelection(metadata.preferLanguageServer().defaultValue());
+ }
+
+ @Override
+ public boolean performOk() {
+ Optional<IProject> project = project();
+ if (project.isPresent()) {
+ IEclipsePreferences node = new ProjectScope(project.get()).getNode(Activator.PLUGIN_ID);
+ node.putBoolean(metadata.preferLanguageServer().identifer(), prefer.getSelection());
+ try {
+ node.flush();
+ return true;
+ } catch (BackingStoreException e) {
+ Platform.getLog(FrameworkUtil.getBundle(getClass())).error(e.getMessage(), e);
+ }
+ }
+ return false;
+ }
+
+ private Optional<IProject> project() {
+ return Optional.ofNullable(getElement())//
+ .filter(IProject.class::isInstance)//
+ .map(IProject.class::cast);
+ }
+
+} \ No newline at end of file
diff --git a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/AutoIndentStrategyCPP.java b/lsp/org.eclipse.cdt.lsp.ui/src/org/eclipse/cdt/lsp/internal/ui/text/AutoIndentStrategyCPP.java
index 23ef938e025..dfded7590e1 100644
--- a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/AutoIndentStrategyCPP.java
+++ b/lsp/org.eclipse.cdt.lsp.ui/src/org/eclipse/cdt/lsp/internal/ui/text/AutoIndentStrategyCPP.java
@@ -9,7 +9,7 @@
* SPDX-License-Identifier: EPL-2.0
*******************************************************************************/
-package org.eclipse.cdt.lsp.core;
+package org.eclipse.cdt.lsp.internal.ui.text;
import org.eclipse.cdt.internal.ui.text.CAutoIndentStrategy;
import org.eclipse.cdt.ui.CUIPlugin;
diff --git a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/LineBackgroundListenerCPP.java b/lsp/org.eclipse.cdt.lsp.ui/src/org/eclipse/cdt/lsp/internal/ui/text/LineBackgroundListenerCPP.java
index 990be98127d..07fca9213b2 100644
--- a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/LineBackgroundListenerCPP.java
+++ b/lsp/org.eclipse.cdt.lsp.ui/src/org/eclipse/cdt/lsp/internal/ui/text/LineBackgroundListenerCPP.java
@@ -9,10 +9,11 @@
* SPDX-License-Identifier: EPL-2.0
*******************************************************************************/
-package org.eclipse.cdt.lsp.core;
+package org.eclipse.cdt.lsp.internal.ui.text;
import org.eclipse.cdt.internal.ui.editor.CEditor;
import org.eclipse.cdt.ui.CUIPlugin;
+import org.eclipse.core.runtime.Platform;
import org.eclipse.jface.preference.PreferenceConverter;
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.BadPositionCategoryException;
@@ -44,7 +45,7 @@ public class LineBackgroundListenerCPP implements LineBackgroundListener {
inactivePositions = currentDocument
.getPositions(PresentationReconcilerCPP.INACTIVE_CODE_HIGHLIGHTING_POSITION_CATEGORY);
} catch (BadPositionCategoryException e) {
- Activator.log(e);
+ Platform.getLog(getClass()).error(e.getMessage(), e);
}
if (inactivePositions == null) {
@@ -63,7 +64,7 @@ public class LineBackgroundListenerCPP implements LineBackgroundListener {
}
}
} catch (BadLocationException e) {
- Activator.log(e);
+ Platform.getLog(getClass()).error(e.getMessage(), e);
}
}
}
diff --git a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/PresentationReconcilerCPP.java b/lsp/org.eclipse.cdt.lsp.ui/src/org/eclipse/cdt/lsp/internal/ui/text/PresentationReconcilerCPP.java
index 899c880432b..b72a89a5c2d 100644
--- a/lsp/org.eclipse.cdt.lsp.core/src/org/eclipse/cdt/lsp/core/PresentationReconcilerCPP.java
+++ b/lsp/org.eclipse.cdt.lsp.ui/src/org/eclipse/cdt/lsp/internal/ui/text/PresentationReconcilerCPP.java
@@ -18,12 +18,13 @@
* Manish Khurana
*******************************************************************************/
-package org.eclipse.cdt.lsp.core;
+package org.eclipse.cdt.lsp.internal.ui.text;
import java.net.URI;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import java.util.Optional;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
@@ -39,6 +40,7 @@ import org.eclipse.cdt.internal.ui.text.CPresentationReconciler;
import org.eclipse.cdt.internal.ui.text.PartitionDamager;
import org.eclipse.cdt.internal.ui.text.SingleTokenCScanner;
import org.eclipse.cdt.internal.ui.text.TokenStore;
+import org.eclipse.cdt.lsp.internal.core.workspace.ResolveDocumentUri;
import org.eclipse.cdt.ui.CUIPlugin;
import org.eclipse.cdt.ui.ILanguageUI;
import org.eclipse.cdt.ui.text.AbstractCScanner;
@@ -48,6 +50,7 @@ import org.eclipse.cdt.ui.text.ICTokenScanner;
import org.eclipse.cdt.ui.text.ITokenStoreFactory;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.Platform;
import org.eclipse.jface.text.BadPositionCategoryException;
import org.eclipse.jface.text.DefaultPositionUpdater;
import org.eclipse.jface.text.IDocument;
@@ -72,6 +75,8 @@ import org.eclipse.ui.editors.text.TextEditor;
*/
public class PresentationReconcilerCPP extends CPresentationReconciler {
+ private final ResolveDocumentUri documentUri;
+
private CCommentScanner fSinglelineCommentScanner;
private CCommentScanner fMultilineCommentScanner;
private SingleTokenCScanner fStringScanner;
@@ -126,6 +131,7 @@ public class PresentationReconcilerCPP extends CPresentationReconciler {
}
public PresentationReconcilerCPP() {
+ this.documentUri = new ResolveDocumentUri();
fStringScanner = new SingleTokenCScanner(getTokenStoreFactory(), ICColorConstants.C_STRING);
fMultilineCommentScanner = new CCommentScanner(getTokenStoreFactory(), ICColorConstants.C_MULTI_LINE_COMMENT);
fSinglelineCommentScanner = new CCommentScanner(getTokenStoreFactory(), ICColorConstants.C_SINGLE_LINE_COMMENT);
@@ -176,13 +182,12 @@ public class PresentationReconcilerCPP extends CPresentationReconciler {
}
@Override
- protected TextPresentation createPresentation(IRegion damage, IDocument document) {
+ public TextPresentation createPresentation(IRegion damage, IDocument document) {
TextPresentation presentation = super.createPresentation(damage, document);
IDocument doc = textViewer.getDocument();
- URI uri = Server2ClientProtocolExtension.getUri(doc);
-
- if (uri == null) {
+ Optional<URI> uri = documentUri.apply(doc);
+ if (!uri.isPresent()) {
return presentation;
}
@@ -200,7 +205,7 @@ public class PresentationReconcilerCPP extends CPresentationReconciler {
try {
returnedPositions = doc.getPositions(SEMANTIC_HIGHLIGHTING_POSITION_CATEGORY);
} catch (BadPositionCategoryException e) {
- Activator.log(e);
+ Platform.getLog(getClass()).error(e.getMessage(), e);
}
if (returnedPositions == null) {
diff --git a/lsp/org.eclipse.cdt.lsp.ui/src/org/eclipse/cdt/lsp/internal/ui/text/SetInactiveRegions.java b/lsp/org.eclipse.cdt.lsp.ui/src/org/eclipse/cdt/lsp/internal/ui/text/SetInactiveRegions.java
new file mode 100644
index 00000000000..893ec848c2a
--- /dev/null
+++ b/lsp/org.eclipse.cdt.lsp.ui/src/org/eclipse/cdt/lsp/internal/ui/text/SetInactiveRegions.java
@@ -0,0 +1,84 @@
+/*******************************************************************************
+ * Copyright (c) 2018, 2020 Manish Khurana, Nathan Ridge and others.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * https://www.eclipse.org/legal/epl-2.0/.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.lsp.internal.ui.text;
+
+import java.net.URI;
+import java.util.Collection;
+import java.util.Optional;
+import java.util.function.BiConsumer;
+import java.util.function.Supplier;
+
+import org.eclipse.cdt.lsp.internal.core.workspace.ResolveDocumentUri;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.jface.text.BadLocationException;
+import org.eclipse.jface.text.BadPositionCategoryException;
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.Position;
+import org.eclipse.lsp4j.Range;
+
+//FIXME: needs more work
+public final class SetInactiveRegions implements BiConsumer<Supplier<URI>, Supplier<Collection<Range>>> {
+
+ private final ResolveDocumentUri resolve;
+
+ public SetInactiveRegions() {
+ this.resolve = new ResolveDocumentUri();
+ }
+
+ @Override
+ public void accept(Supplier<URI> uri, Supplier<Collection<Range>> ranges) {
+ URI uriReceived = uri.get();
+ Collection<Range> inactiveRegions = ranges.get();
+ //FIXME: AF: extract the retrieval of this document to a separate method
+ IDocument doc = null;
+ // To get the document for the received URI.
+ for (PresentationReconcilerCPP eachReconciler : PresentationReconcilerCPP.presentationReconcilers) {
+ IDocument currentReconcilerDoc = eachReconciler.getTextViewer().getDocument();
+ Optional<URI> currentReconcilerUri = resolve.apply(currentReconcilerDoc);
+ if (!currentReconcilerUri.isPresent()) {
+ continue;
+ }
+ if (uriReceived.equals(currentReconcilerUri.get())) {
+ doc = currentReconcilerDoc;
+ break;
+ }
+ }
+ if (doc == null) {
+ return;
+ }
+ // Removing inactive code highlighting position category and old positions from document.
+ try {
+ doc.removePositionCategory(PresentationReconcilerCPP.INACTIVE_CODE_HIGHLIGHTING_POSITION_CATEGORY);
+ } catch (BadPositionCategoryException e) {
+ Platform.getLog(getClass()).error(e.getMessage(), e);
+ }
+ // Again add Inactive Code Position Category to the document.
+ doc.addPositionCategory(PresentationReconcilerCPP.INACTIVE_CODE_HIGHLIGHTING_POSITION_CATEGORY);
+
+ for (Range region : inactiveRegions) {
+ int offset = 0, length = 0;
+ try {
+ offset = doc.getLineOffset(region.getStart().getLine());
+ length = doc.getLineOffset(region.getEnd().getLine()) - offset;
+ } catch (BadLocationException e) {
+ Platform.getLog(getClass()).error(e.getMessage(), e);
+ }
+
+ Position inactivePosition = new Position(offset, length);
+ try {
+ doc.addPosition(PresentationReconcilerCPP.INACTIVE_CODE_HIGHLIGHTING_POSITION_CATEGORY,
+ inactivePosition);
+ } catch (BadLocationException | BadPositionCategoryException e) {
+ Platform.getLog(getClass()).error(e.getMessage(), e);
+ }
+ }
+ }
+
+}
diff --git a/lsp/pom.xml b/lsp/pom.xml
index 5f4c45cec61..c76c5f281ba 100644
--- a/lsp/pom.xml
+++ b/lsp/pom.xml
@@ -1,4 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2017, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
@@ -7,7 +17,7 @@
<parent>
<groupId>org.eclipse.cdt</groupId>
<artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
+ <version>10.7.0-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.cdt.lsp-parent</artifactId>
diff --git a/memory/org.eclipse.cdt.debug.core.memory.tests/.classpath b/memory/org.eclipse.cdt.debug.core.memory.tests/.classpath
new file mode 100644
index 00000000000..a42a828e04a
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.core.memory.tests/.classpath
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src">
+ <attributes>
+ <attribute name="test" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/memory/org.eclipse.cdt.debug.core.memory.tests/.project b/memory/org.eclipse.cdt.debug.core.memory.tests/.project
new file mode 100644
index 00000000000..5a3348a0651
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.core.memory.tests/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.cdt.debug.core.memory.tests</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/memory/org.eclipse.cdt.debug.core.memory.tests/.settings/org.eclipse.core.resources.prefs b/memory/org.eclipse.cdt.debug.core.memory.tests/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.core.memory.tests/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/memory/org.eclipse.cdt.debug.core.memory.tests/.settings/org.eclipse.jdt.core.prefs b/memory/org.eclipse.cdt.debug.core.memory.tests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..5b1c443114d
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.core.memory.tests/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=ignore
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
+org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=ignore
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/.settings/org.eclipse.jdt.launching.prefs b/memory/org.eclipse.cdt.debug.core.memory.tests/.settings/org.eclipse.jdt.launching.prefs
index f8a131b56e0..f8a131b56e0 100644
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc/.settings/org.eclipse.jdt.launching.prefs
+++ b/memory/org.eclipse.cdt.debug.core.memory.tests/.settings/org.eclipse.jdt.launching.prefs
diff --git a/memory/org.eclipse.cdt.debug.core.memory.tests/.settings/org.eclipse.jdt.ui.prefs b/memory/org.eclipse.cdt.debug.core.memory.tests/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.core.memory.tests/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/memory/org.eclipse.cdt.debug.core.memory.tests/.settings/org.eclipse.pde.api.tools.prefs b/memory/org.eclipse.cdt.debug.core.memory.tests/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 00000000000..ec9fbf321d0
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.core.memory.tests/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,184 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITH_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_FIELD=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERCLASS_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_CHANGED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENTS=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETERS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Error
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Warning
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+MISSING_EE_DESCRIPTIONS=Warning
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=false
+changed_execution_env=Error
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+incompatible_api_component_version_report_major_without_breaking_change=Warning
+incompatible_api_component_version_report_minor_without_api_change=Warning
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/memory/org.eclipse.cdt.debug.core.memory.tests/.settings/org.eclipse.pde.prefs b/memory/org.eclipse.cdt.debug.core.memory.tests/.settings/org.eclipse.pde.prefs
new file mode 100644
index 00000000000..51a63ec9988
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.core.memory.tests/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,35 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=2
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=2
+compilers.p.missing-version-export-package=2
+compilers.p.missing-version-import-package=2
+compilers.p.missing-version-require-bundle=2
+compilers.p.no-required-att=0
+compilers.p.no.automatic.module=1
+compilers.p.not-externalized-att=2
+compilers.p.service.component.without.lazyactivation=1
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/memory/org.eclipse.cdt.debug.core.memory.tests/META-INF/MANIFEST.MF b/memory/org.eclipse.cdt.debug.core.memory.tests/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..e5becf49a7b
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.core.memory.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,10 @@
+Manifest-Version: 1.0
+Automatic-Module-Name: org.eclipse.cdt.debug.core.memory.tests
+Bundle-ManifestVersion: 2
+Bundle-Name: %Bundle-Name
+Bundle-SymbolicName: org.eclipse.cdt.debug.core.memory.tests
+Bundle-Version: 0.1.0.qualifier
+Bundle-Vendor: %Bundle-Vendor
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Fragment-Host: org.eclipse.cdt.debug.core.memory;bundle-version="0.1.0"
+Require-Bundle: org.junit;bundle-version="4.13.0"
diff --git a/memory/org.eclipse.cdt.debug.core.memory.tests/OSGI-INF/l10n/bundle.properties b/memory/org.eclipse.cdt.debug.core.memory.tests/OSGI-INF/l10n/bundle.properties
new file mode 100644
index 00000000000..214d4777a1f
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.core.memory.tests/OSGI-INF/l10n/bundle.properties
@@ -0,0 +1,17 @@
+#Properties file for org.eclipse.cdt.debug.core.memory.tests
+###############################################################################
+# Copyright (c) 2020 ArSysOp and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Alexander Fedorov (ArSysOp) - initial API and implementation
+###############################################################################
+
+Bundle-Name = Debug Core Memory Tests
+Bundle-Vendor = Eclipse CDT
diff --git a/memory/org.eclipse.cdt.debug.core.memory.tests/about.html b/memory/org.eclipse.cdt.debug.core.memory.tests/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.core.memory.tests/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/memory/org.eclipse.cdt.debug.core.memory.tests/build.properties b/memory/org.eclipse.cdt.debug.core.memory.tests/build.properties
new file mode 100644
index 00000000000..3e7c3ad3995
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.core.memory.tests/build.properties
@@ -0,0 +1,22 @@
+###############################################################################
+# Copyright (c) 2020 ArSysOp and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Alexander Fedorov (ArSysOp) - initial API and implementation
+###############################################################################
+
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ OSGI-INF/,\
+ data/,\
+ about.html
+src.includes = about.html
diff --git a/memory/org.eclipse.cdt.debug.core.memory.tests/data/memory_0ffff.bin b/memory/org.eclipse.cdt.debug.core.memory.tests/data/memory_0ffff.bin
new file mode 100644
index 00000000000..af325b286dc
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.core.memory.tests/data/memory_0ffff.bin
Binary files differ
diff --git a/memory/org.eclipse.cdt.debug.core.memory.tests/data/memory_0ffff.srec b/memory/org.eclipse.cdt.debug.core.memory.tests/data/memory_0ffff.srec
new file mode 100644
index 00000000000..bad64cbe7db
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.core.memory.tests/data/memory_0ffff.srec
@@ -0,0 +1,4096 @@
+S3150060106000112233445566778899AABBCCDDEEFF22
+S31500601070102132435465768798A9BACBDCEDFE0F12
+S315006010802031425364758697A8B9CADBECFD0E1F02
+S3150060109030415263748596A7B8C9DAEBFC0D1E2FF2
+S315006010A0405162738495A6B7C8D9EAFB0C1D2E3FE2
+S315006010B05061728394A5B6C7D8E9FA0B1C2D3E4FD2
+S315006010C060718293A4B5C6D7E8F90A1B2C3D4E5FC2
+S315006010D0708192A3B4C5D6E7F8091A2B3C4D5E6FB2
+S315006010E08091A2B3C4D5E6F708192A3B4C5D6E7FA2
+S315006010F090A1B2C3D4E5F60718293A4B5C6D7E8F92
+S31500601100A0B1C2D3E4F5061728394A5B6C7D8E9F81
+S31500601110B0C1D2E3F405162738495A6B7C8D9EAF71
+S31500601120C0D1E2F30415263748596A7B8C9DAEBF61
+S31500601130D0E1F2031425364758697A8B9CADBECF51
+S31500601140E0F102132435465768798A9BACBDCEDF41
+S31500601150F00112233445566778899AABBCCDDEEF31
+S3150060116000112233445566778899AABBCCDDEEFF21
+S31500601170102132435465768798A9BACBDCEDFE0F11
+S315006011802031425364758697A8B9CADBECFD0E1F01
+S3150060119030415263748596A7B8C9DAEBFC0D1E2FF1
+S315006011A0405162738495A6B7C8D9EAFB0C1D2E3FE1
+S315006011B05061728394A5B6C7D8E9FA0B1C2D3E4FD1
+S315006011C060718293A4B5C6D7E8F90A1B2C3D4E5FC1
+S315006011D0708192A3B4C5D6E7F8091A2B3C4D5E6FB1
+S315006011E08091A2B3C4D5E6F708192A3B4C5D6E7FA1
+S315006011F090A1B2C3D4E5F60718293A4B5C6D7E8F91
+S31500601200A0B1C2D3E4F5061728394A5B6C7D8E9F80
+S31500601210B0C1D2E3F405162738495A6B7C8D9EAF70
+S31500601220C0D1E2F30415263748596A7B8C9DAEBF60
+S31500601230D0E1F2031425364758697A8B9CADBECF50
+S31500601240E0F102132435465768798A9BACBDCEDF40
+S31500601250F00112233445566778899AABBCCDDEEF30
+S3150060126000112233445566778899AABBCCDDEEFF20
+S31500601270102132435465768798A9BACBDCEDFE0F10
+S315006012802031425364758697A8B9CADBECFD0E1F00
+S3150060129030415263748596A7B8C9DAEBFC0D1E2FF0
+S315006012A0405162738495A6B7C8D9EAFB0C1D2E3FE0
+S315006012B05061728394A5B6C7D8E9FA0B1C2D3E4FD0
+S315006012C060718293A4B5C6D7E8F90A1B2C3D4E5FC0
+S315006012D0708192A3B4C5D6E7F8091A2B3C4D5E6FB0
+S315006012E08091A2B3C4D5E6F708192A3B4C5D6E7FA0
+S315006012F090A1B2C3D4E5F60718293A4B5C6D7E8F90
+S31500601300A0B1C2D3E4F5061728394A5B6C7D8E9F7F
+S31500601310B0C1D2E3F405162738495A6B7C8D9EAF6F
+S31500601320C0D1E2F30415263748596A7B8C9DAEBF5F
+S31500601330D0E1F2031425364758697A8B9CADBECF4F
+S31500601340E0F102132435465768798A9BACBDCEDF3F
+S31500601350F00112233445566778899AABBCCDDEEF2F
+S3150060136000112233445566778899AABBCCDDEEFF1F
+S31500601370102132435465768798A9BACBDCEDFE0F0F
+S315006013802031425364758697A8B9CADBECFD0E1FFF
+S3150060139030415263748596A7B8C9DAEBFC0D1E2FEF
+S315006013A0405162738495A6B7C8D9EAFB0C1D2E3FDF
+S315006013B05061728394A5B6C7D8E9FA0B1C2D3E4FCF
+S315006013C060718293A4B5C6D7E8F90A1B2C3D4E5FBF
+S315006013D0708192A3B4C5D6E7F8091A2B3C4D5E6FAF
+S315006013E08091A2B3C4D5E6F708192A3B4C5D6E7F9F
+S315006013F090A1B2C3D4E5F60718293A4B5C6D7E8F8F
+S31500601400A0B1C2D3E4F5061728394A5B6C7D8E9F7E
+S31500601410B0C1D2E3F405162738495A6B7C8D9EAF6E
+S31500601420C0D1E2F30415263748596A7B8C9DAEBF5E
+S31500601430D0E1F2031425364758697A8B9CADBECF4E
+S31500601440E0F102132435465768798A9BACBDCEDF3E
+S31500601450F00112233445566778899AABBCCDDEEF2E
+S3150060146000112233445566778899AABBCCDDEEFF1E
+S31500601470102132435465768798A9BACBDCEDFE0F0E
+S315006014802031425364758697A8B9CADBECFD0E1FFE
+S3150060149030415263748596A7B8C9DAEBFC0D1E2FEE
+S315006014A0405162738495A6B7C8D9EAFB0C1D2E3FDE
+S315006014B05061728394A5B6C7D8E9FA0B1C2D3E4FCE
+S315006014C060718293A4B5C6D7E8F90A1B2C3D4E5FBE
+S315006014D0708192A3B4C5D6E7F8091A2B3C4D5E6FAE
+S315006014E08091A2B3C4D5E6F708192A3B4C5D6E7F9E
+S315006014F090A1B2C3D4E5F60718293A4B5C6D7E8F8E
+S31500601500A0B1C2D3E4F5061728394A5B6C7D8E9F7D
+S31500601510B0C1D2E3F405162738495A6B7C8D9EAF6D
+S31500601520C0D1E2F30415263748596A7B8C9DAEBF5D
+S31500601530D0E1F2031425364758697A8B9CADBECF4D
+S31500601540E0F102132435465768798A9BACBDCEDF3D
+S31500601550F00112233445566778899AABBCCDDEEF2D
+S3150060156000112233445566778899AABBCCDDEEFF1D
+S31500601570102132435465768798A9BACBDCEDFE0F0D
+S315006015802031425364758697A8B9CADBECFD0E1FFD
+S3150060159030415263748596A7B8C9DAEBFC0D1E2FED
+S315006015A0405162738495A6B7C8D9EAFB0C1D2E3FDD
+S315006015B05061728394A5B6C7D8E9FA0B1C2D3E4FCD
+S315006015C060718293A4B5C6D7E8F90A1B2C3D4E5FBD
+S315006015D0708192A3B4C5D6E7F8091A2B3C4D5E6FAD
+S315006015E08091A2B3C4D5E6F708192A3B4C5D6E7F9D
+S315006015F090A1B2C3D4E5F60718293A4B5C6D7E8F8D
+S31500601600A0B1C2D3E4F5061728394A5B6C7D8E9F7C
+S31500601610B0C1D2E3F405162738495A6B7C8D9EAF6C
+S31500601620C0D1E2F30415263748596A7B8C9DAEBF5C
+S31500601630D0E1F2031425364758697A8B9CADBECF4C
+S31500601640E0F102132435465768798A9BACBDCEDF3C
+S31500601650F00112233445566778899AABBCCDDEEF2C
+S3150060166000112233445566778899AABBCCDDEEFF1C
+S31500601670102132435465768798A9BACBDCEDFE0F0C
+S315006016802031425364758697A8B9CADBECFD0E1FFC
+S3150060169030415263748596A7B8C9DAEBFC0D1E2FEC
+S315006016A0405162738495A6B7C8D9EAFB0C1D2E3FDC
+S315006016B05061728394A5B6C7D8E9FA0B1C2D3E4FCC
+S315006016C060718293A4B5C6D7E8F90A1B2C3D4E5FBC
+S315006016D0708192A3B4C5D6E7F8091A2B3C4D5E6FAC
+S315006016E08091A2B3C4D5E6F708192A3B4C5D6E7F9C
+S315006016F090A1B2C3D4E5F60718293A4B5C6D7E8F8C
+S31500601700A0B1C2D3E4F5061728394A5B6C7D8E9F7B
+S31500601710B0C1D2E3F405162738495A6B7C8D9EAF6B
+S31500601720C0D1E2F30415263748596A7B8C9DAEBF5B
+S31500601730D0E1F2031425364758697A8B9CADBECF4B
+S31500601740E0F102132435465768798A9BACBDCEDF3B
+S31500601750F00112233445566778899AABBCCDDEEF2B
+S3150060176000112233445566778899AABBCCDDEEFF1B
+S31500601770102132435465768798A9BACBDCEDFE0F0B
+S315006017802031425364758697A8B9CADBECFD0E1FFB
+S3150060179030415263748596A7B8C9DAEBFC0D1E2FEB
+S315006017A0405162738495A6B7C8D9EAFB0C1D2E3FDB
+S315006017B05061728394A5B6C7D8E9FA0B1C2D3E4FCB
+S315006017C060718293A4B5C6D7E8F90A1B2C3D4E5FBB
+S315006017D0708192A3B4C5D6E7F8091A2B3C4D5E6FAB
+S315006017E08091A2B3C4D5E6F708192A3B4C5D6E7F9B
+S315006017F090A1B2C3D4E5F60718293A4B5C6D7E8F8B
+S31500601800A0B1C2D3E4F5061728394A5B6C7D8E9F7A
+S31500601810B0C1D2E3F405162738495A6B7C8D9EAF6A
+S31500601820C0D1E2F30415263748596A7B8C9DAEBF5A
+S31500601830D0E1F2031425364758697A8B9CADBECF4A
+S31500601840E0F102132435465768798A9BACBDCEDF3A
+S31500601850F00112233445566778899AABBCCDDEEF2A
+S3150060186000112233445566778899AABBCCDDEEFF1A
+S31500601870102132435465768798A9BACBDCEDFE0F0A
+S315006018802031425364758697A8B9CADBECFD0E1FFA
+S3150060189030415263748596A7B8C9DAEBFC0D1E2FEA
+S315006018A0405162738495A6B7C8D9EAFB0C1D2E3FDA
+S315006018B05061728394A5B6C7D8E9FA0B1C2D3E4FCA
+S315006018C060718293A4B5C6D7E8F90A1B2C3D4E5FBA
+S315006018D0708192A3B4C5D6E7F8091A2B3C4D5E6FAA
+S315006018E08091A2B3C4D5E6F708192A3B4C5D6E7F9A
+S315006018F090A1B2C3D4E5F60718293A4B5C6D7E8F8A
+S31500601900A0B1C2D3E4F5061728394A5B6C7D8E9F79
+S31500601910B0C1D2E3F405162738495A6B7C8D9EAF69
+S31500601920C0D1E2F30415263748596A7B8C9DAEBF59
+S31500601930D0E1F2031425364758697A8B9CADBECF49
+S31500601940E0F102132435465768798A9BACBDCEDF39
+S31500601950F00112233445566778899AABBCCDDEEF29
+S3150060196000112233445566778899AABBCCDDEEFF19
+S31500601970102132435465768798A9BACBDCEDFE0F09
+S315006019802031425364758697A8B9CADBECFD0E1FF9
+S3150060199030415263748596A7B8C9DAEBFC0D1E2FE9
+S315006019A0405162738495A6B7C8D9EAFB0C1D2E3FD9
+S315006019B05061728394A5B6C7D8E9FA0B1C2D3E4FC9
+S315006019C060718293A4B5C6D7E8F90A1B2C3D4E5FB9
+S315006019D0708192A3B4C5D6E7F8091A2B3C4D5E6FA9
+S315006019E08091A2B3C4D5E6F708192A3B4C5D6E7F99
+S315006019F090A1B2C3D4E5F60718293A4B5C6D7E8F89
+S31500601A00A0B1C2D3E4F5061728394A5B6C7D8E9F78
+S31500601A10B0C1D2E3F405162738495A6B7C8D9EAF68
+S31500601A20C0D1E2F30415263748596A7B8C9DAEBF58
+S31500601A30D0E1F2031425364758697A8B9CADBECF48
+S31500601A40E0F102132435465768798A9BACBDCEDF38
+S31500601A50F00112233445566778899AABBCCDDEEF28
+S31500601A6000112233445566778899AABBCCDDEEFF18
+S31500601A70102132435465768798A9BACBDCEDFE0F08
+S31500601A802031425364758697A8B9CADBECFD0E1FF8
+S31500601A9030415263748596A7B8C9DAEBFC0D1E2FE8
+S31500601AA0405162738495A6B7C8D9EAFB0C1D2E3FD8
+S31500601AB05061728394A5B6C7D8E9FA0B1C2D3E4FC8
+S31500601AC060718293A4B5C6D7E8F90A1B2C3D4E5FB8
+S31500601AD0708192A3B4C5D6E7F8091A2B3C4D5E6FA8
+S31500601AE08091A2B3C4D5E6F708192A3B4C5D6E7F98
+S31500601AF090A1B2C3D4E5F60718293A4B5C6D7E8F88
+S31500601B00A0B1C2D3E4F5061728394A5B6C7D8E9F77
+S31500601B10B0C1D2E3F405162738495A6B7C8D9EAF67
+S31500601B20C0D1E2F30415263748596A7B8C9DAEBF57
+S31500601B30D0E1F2031425364758697A8B9CADBECF47
+S31500601B40E0F102132435465768798A9BACBDCEDF37
+S31500601B50F00112233445566778899AABBCCDDEEF27
+S31500601B6000112233445566778899AABBCCDDEEFF17
+S31500601B70102132435465768798A9BACBDCEDFE0F07
+S31500601B802031425364758697A8B9CADBECFD0E1FF7
+S31500601B9030415263748596A7B8C9DAEBFC0D1E2FE7
+S31500601BA0405162738495A6B7C8D9EAFB0C1D2E3FD7
+S31500601BB05061728394A5B6C7D8E9FA0B1C2D3E4FC7
+S31500601BC060718293A4B5C6D7E8F90A1B2C3D4E5FB7
+S31500601BD0708192A3B4C5D6E7F8091A2B3C4D5E6FA7
+S31500601BE08091A2B3C4D5E6F708192A3B4C5D6E7F97
+S31500601BF090A1B2C3D4E5F60718293A4B5C6D7E8F87
+S31500601C00A0B1C2D3E4F5061728394A5B6C7D8E9F76
+S31500601C10B0C1D2E3F405162738495A6B7C8D9EAF66
+S31500601C20C0D1E2F30415263748596A7B8C9DAEBF56
+S31500601C30D0E1F2031425364758697A8B9CADBECF46
+S31500601C40E0F102132435465768798A9BACBDCEDF36
+S31500601C50F00112233445566778899AABBCCDDEEF26
+S31500601C6000112233445566778899AABBCCDDEEFF16
+S31500601C70102132435465768798A9BACBDCEDFE0F06
+S31500601C802031425364758697A8B9CADBECFD0E1FF6
+S31500601C9030415263748596A7B8C9DAEBFC0D1E2FE6
+S31500601CA0405162738495A6B7C8D9EAFB0C1D2E3FD6
+S31500601CB05061728394A5B6C7D8E9FA0B1C2D3E4FC6
+S31500601CC060718293A4B5C6D7E8F90A1B2C3D4E5FB6
+S31500601CD0708192A3B4C5D6E7F8091A2B3C4D5E6FA6
+S31500601CE08091A2B3C4D5E6F708192A3B4C5D6E7F96
+S31500601CF090A1B2C3D4E5F60718293A4B5C6D7E8F86
+S31500601D00A0B1C2D3E4F5061728394A5B6C7D8E9F75
+S31500601D10B0C1D2E3F405162738495A6B7C8D9EAF65
+S31500601D20C0D1E2F30415263748596A7B8C9DAEBF55
+S31500601D30D0E1F2031425364758697A8B9CADBECF45
+S31500601D40E0F102132435465768798A9BACBDCEDF35
+S31500601D50F00112233445566778899AABBCCDDEEF25
+S31500601D6000112233445566778899AABBCCDDEEFF15
+S31500601D70102132435465768798A9BACBDCEDFE0F05
+S31500601D802031425364758697A8B9CADBECFD0E1FF5
+S31500601D9030415263748596A7B8C9DAEBFC0D1E2FE5
+S31500601DA0405162738495A6B7C8D9EAFB0C1D2E3FD5
+S31500601DB05061728394A5B6C7D8E9FA0B1C2D3E4FC5
+S31500601DC060718293A4B5C6D7E8F90A1B2C3D4E5FB5
+S31500601DD0708192A3B4C5D6E7F8091A2B3C4D5E6FA5
+S31500601DE08091A2B3C4D5E6F708192A3B4C5D6E7F95
+S31500601DF090A1B2C3D4E5F60718293A4B5C6D7E8F85
+S31500601E00A0B1C2D3E4F5061728394A5B6C7D8E9F74
+S31500601E10B0C1D2E3F405162738495A6B7C8D9EAF64
+S31500601E20C0D1E2F30415263748596A7B8C9DAEBF54
+S31500601E30D0E1F2031425364758697A8B9CADBECF44
+S31500601E40E0F102132435465768798A9BACBDCEDF34
+S31500601E50F00112233445566778899AABBCCDDEEF24
+S31500601E6000112233445566778899AABBCCDDEEFF14
+S31500601E70102132435465768798A9BACBDCEDFE0F04
+S31500601E802031425364758697A8B9CADBECFD0E1FF4
+S31500601E9030415263748596A7B8C9DAEBFC0D1E2FE4
+S31500601EA0405162738495A6B7C8D9EAFB0C1D2E3FD4
+S31500601EB05061728394A5B6C7D8E9FA0B1C2D3E4FC4
+S31500601EC060718293A4B5C6D7E8F90A1B2C3D4E5FB4
+S31500601ED0708192A3B4C5D6E7F8091A2B3C4D5E6FA4
+S31500601EE08091A2B3C4D5E6F708192A3B4C5D6E7F94
+S31500601EF090A1B2C3D4E5F60718293A4B5C6D7E8F84
+S31500601F00A0B1C2D3E4F5061728394A5B6C7D8E9F73
+S31500601F10B0C1D2E3F405162738495A6B7C8D9EAF63
+S31500601F20C0D1E2F30415263748596A7B8C9DAEBF53
+S31500601F30D0E1F2031425364758697A8B9CADBECF43
+S31500601F40E0F102132435465768798A9BACBDCEDF33
+S31500601F50F00112233445566778899AABBCCDDEEF23
+S31500601F6000112233445566778899AABBCCDDEEFF13
+S31500601F70102132435465768798A9BACBDCEDFE0F03
+S31500601F802031425364758697A8B9CADBECFD0E1FF3
+S31500601F9030415263748596A7B8C9DAEBFC0D1E2FE3
+S31500601FA0405162738495A6B7C8D9EAFB0C1D2E3FD3
+S31500601FB05061728394A5B6C7D8E9FA0B1C2D3E4FC3
+S31500601FC060718293A4B5C6D7E8F90A1B2C3D4E5FB3
+S31500601FD0708192A3B4C5D6E7F8091A2B3C4D5E6FA3
+S31500601FE08091A2B3C4D5E6F708192A3B4C5D6E7F93
+S31500601FF090A1B2C3D4E5F60718293A4B5C6D7E8F83
+S31500602000A0B1C2D3E4F5061728394A5B6C7D8E9F72
+S31500602010B0C1D2E3F405162738495A6B7C8D9EAF62
+S31500602020C0D1E2F30415263748596A7B8C9DAEBF52
+S31500602030D0E1F2031425364758697A8B9CADBECF42
+S31500602040E0F102132435465768798A9BACBDCEDF32
+S31500602050F00112233445566778899AABBCCDDEEF22
+S3150060206000112233445566778899AABBCCDDEEFF12
+S31500602070102132435465768798A9BACBDCEDFE0F02
+S315006020802031425364758697A8B9CADBECFD0E1FF2
+S3150060209030415263748596A7B8C9DAEBFC0D1E2FE2
+S315006020A0405162738495A6B7C8D9EAFB0C1D2E3FD2
+S315006020B05061728394A5B6C7D8E9FA0B1C2D3E4FC2
+S315006020C060718293A4B5C6D7E8F90A1B2C3D4E5FB2
+S315006020D0708192A3B4C5D6E7F8091A2B3C4D5E6FA2
+S315006020E08091A2B3C4D5E6F708192A3B4C5D6E7F92
+S315006020F090A1B2C3D4E5F60718293A4B5C6D7E8F82
+S31500602100A0B1C2D3E4F5061728394A5B6C7D8E9F71
+S31500602110B0C1D2E3F405162738495A6B7C8D9EAF61
+S31500602120C0D1E2F30415263748596A7B8C9DAEBF51
+S31500602130D0E1F2031425364758697A8B9CADBECF41
+S31500602140E0F102132435465768798A9BACBDCEDF31
+S31500602150F00112233445566778899AABBCCDDEEF21
+S3150060216000112233445566778899AABBCCDDEEFF11
+S31500602170102132435465768798A9BACBDCEDFE0F01
+S315006021802031425364758697A8B9CADBECFD0E1FF1
+S3150060219030415263748596A7B8C9DAEBFC0D1E2FE1
+S315006021A0405162738495A6B7C8D9EAFB0C1D2E3FD1
+S315006021B05061728394A5B6C7D8E9FA0B1C2D3E4FC1
+S315006021C060718293A4B5C6D7E8F90A1B2C3D4E5FB1
+S315006021D0708192A3B4C5D6E7F8091A2B3C4D5E6FA1
+S315006021E08091A2B3C4D5E6F708192A3B4C5D6E7F91
+S315006021F090A1B2C3D4E5F60718293A4B5C6D7E8F81
+S31500602200A0B1C2D3E4F5061728394A5B6C7D8E9F70
+S31500602210B0C1D2E3F405162738495A6B7C8D9EAF60
+S31500602220C0D1E2F30415263748596A7B8C9DAEBF50
+S31500602230D0E1F2031425364758697A8B9CADBECF40
+S31500602240E0F102132435465768798A9BACBDCEDF30
+S31500602250F00112233445566778899AABBCCDDEEF20
+S3150060226000112233445566778899AABBCCDDEEFF10
+S31500602270102132435465768798A9BACBDCEDFE0F00
+S315006022802031425364758697A8B9CADBECFD0E1FF0
+S3150060229030415263748596A7B8C9DAEBFC0D1E2FE0
+S315006022A0405162738495A6B7C8D9EAFB0C1D2E3FD0
+S315006022B05061728394A5B6C7D8E9FA0B1C2D3E4FC0
+S315006022C060718293A4B5C6D7E8F90A1B2C3D4E5FB0
+S315006022D0708192A3B4C5D6E7F8091A2B3C4D5E6FA0
+S315006022E08091A2B3C4D5E6F708192A3B4C5D6E7F90
+S315006022F090A1B2C3D4E5F60718293A4B5C6D7E8F80
+S31500602300A0B1C2D3E4F5061728394A5B6C7D8E9F6F
+S31500602310B0C1D2E3F405162738495A6B7C8D9EAF5F
+S31500602320C0D1E2F30415263748596A7B8C9DAEBF4F
+S31500602330D0E1F2031425364758697A8B9CADBECF3F
+S31500602340E0F102132435465768798A9BACBDCEDF2F
+S31500602350F00112233445566778899AABBCCDDEEF1F
+S3150060236000112233445566778899AABBCCDDEEFF0F
+S31500602370102132435465768798A9BACBDCEDFE0FFF
+S315006023802031425364758697A8B9CADBECFD0E1FEF
+S3150060239030415263748596A7B8C9DAEBFC0D1E2FDF
+S315006023A0405162738495A6B7C8D9EAFB0C1D2E3FCF
+S315006023B05061728394A5B6C7D8E9FA0B1C2D3E4FBF
+S315006023C060718293A4B5C6D7E8F90A1B2C3D4E5FAF
+S315006023D0708192A3B4C5D6E7F8091A2B3C4D5E6F9F
+S315006023E08091A2B3C4D5E6F708192A3B4C5D6E7F8F
+S315006023F090A1B2C3D4E5F60718293A4B5C6D7E8F7F
+S31500602400A0B1C2D3E4F5061728394A5B6C7D8E9F6E
+S31500602410B0C1D2E3F405162738495A6B7C8D9EAF5E
+S31500602420C0D1E2F30415263748596A7B8C9DAEBF4E
+S31500602430D0E1F2031425364758697A8B9CADBECF3E
+S31500602440E0F102132435465768798A9BACBDCEDF2E
+S31500602450F00112233445566778899AABBCCDDEEF1E
+S3150060246000112233445566778899AABBCCDDEEFF0E
+S31500602470102132435465768798A9BACBDCEDFE0FFE
+S315006024802031425364758697A8B9CADBECFD0E1FEE
+S3150060249030415263748596A7B8C9DAEBFC0D1E2FDE
+S315006024A0405162738495A6B7C8D9EAFB0C1D2E3FCE
+S315006024B05061728394A5B6C7D8E9FA0B1C2D3E4FBE
+S315006024C060718293A4B5C6D7E8F90A1B2C3D4E5FAE
+S315006024D0708192A3B4C5D6E7F8091A2B3C4D5E6F9E
+S315006024E08091A2B3C4D5E6F708192A3B4C5D6E7F8E
+S315006024F090A1B2C3D4E5F60718293A4B5C6D7E8F7E
+S31500602500A0B1C2D3E4F5061728394A5B6C7D8E9F6D
+S31500602510B0C1D2E3F405162738495A6B7C8D9EAF5D
+S31500602520C0D1E2F30415263748596A7B8C9DAEBF4D
+S31500602530D0E1F2031425364758697A8B9CADBECF3D
+S31500602540E0F102132435465768798A9BACBDCEDF2D
+S31500602550F00112233445566778899AABBCCDDEEF1D
+S3150060256000112233445566778899AABBCCDDEEFF0D
+S31500602570102132435465768798A9BACBDCEDFE0FFD
+S315006025802031425364758697A8B9CADBECFD0E1FED
+S3150060259030415263748596A7B8C9DAEBFC0D1E2FDD
+S315006025A0405162738495A6B7C8D9EAFB0C1D2E3FCD
+S315006025B05061728394A5B6C7D8E9FA0B1C2D3E4FBD
+S315006025C060718293A4B5C6D7E8F90A1B2C3D4E5FAD
+S315006025D0708192A3B4C5D6E7F8091A2B3C4D5E6F9D
+S315006025E08091A2B3C4D5E6F708192A3B4C5D6E7F8D
+S315006025F090A1B2C3D4E5F60718293A4B5C6D7E8F7D
+S31500602600A0B1C2D3E4F5061728394A5B6C7D8E9F6C
+S31500602610B0C1D2E3F405162738495A6B7C8D9EAF5C
+S31500602620C0D1E2F30415263748596A7B8C9DAEBF4C
+S31500602630D0E1F2031425364758697A8B9CADBECF3C
+S31500602640E0F102132435465768798A9BACBDCEDF2C
+S31500602650F00112233445566778899AABBCCDDEEF1C
+S3150060266000112233445566778899AABBCCDDEEFF0C
+S31500602670102132435465768798A9BACBDCEDFE0FFC
+S315006026802031425364758697A8B9CADBECFD0E1FEC
+S3150060269030415263748596A7B8C9DAEBFC0D1E2FDC
+S315006026A0405162738495A6B7C8D9EAFB0C1D2E3FCC
+S315006026B05061728394A5B6C7D8E9FA0B1C2D3E4FBC
+S315006026C060718293A4B5C6D7E8F90A1B2C3D4E5FAC
+S315006026D0708192A3B4C5D6E7F8091A2B3C4D5E6F9C
+S315006026E08091A2B3C4D5E6F708192A3B4C5D6E7F8C
+S315006026F090A1B2C3D4E5F60718293A4B5C6D7E8F7C
+S31500602700A0B1C2D3E4F5061728394A5B6C7D8E9F6B
+S31500602710B0C1D2E3F405162738495A6B7C8D9EAF5B
+S31500602720C0D1E2F30415263748596A7B8C9DAEBF4B
+S31500602730D0E1F2031425364758697A8B9CADBECF3B
+S31500602740E0F102132435465768798A9BACBDCEDF2B
+S31500602750F00112233445566778899AABBCCDDEEF1B
+S3150060276000112233445566778899AABBCCDDEEFF0B
+S31500602770102132435465768798A9BACBDCEDFE0FFB
+S315006027802031425364758697A8B9CADBECFD0E1FEB
+S3150060279030415263748596A7B8C9DAEBFC0D1E2FDB
+S315006027A0405162738495A6B7C8D9EAFB0C1D2E3FCB
+S315006027B05061728394A5B6C7D8E9FA0B1C2D3E4FBB
+S315006027C060718293A4B5C6D7E8F90A1B2C3D4E5FAB
+S315006027D0708192A3B4C5D6E7F8091A2B3C4D5E6F9B
+S315006027E08091A2B3C4D5E6F708192A3B4C5D6E7F8B
+S315006027F090A1B2C3D4E5F60718293A4B5C6D7E8F7B
+S31500602800A0B1C2D3E4F5061728394A5B6C7D8E9F6A
+S31500602810B0C1D2E3F405162738495A6B7C8D9EAF5A
+S31500602820C0D1E2F30415263748596A7B8C9DAEBF4A
+S31500602830D0E1F2031425364758697A8B9CADBECF3A
+S31500602840E0F102132435465768798A9BACBDCEDF2A
+S31500602850F00112233445566778899AABBCCDDEEF1A
+S3150060286000112233445566778899AABBCCDDEEFF0A
+S31500602870102132435465768798A9BACBDCEDFE0FFA
+S315006028802031425364758697A8B9CADBECFD0E1FEA
+S3150060289030415263748596A7B8C9DAEBFC0D1E2FDA
+S315006028A0405162738495A6B7C8D9EAFB0C1D2E3FCA
+S315006028B05061728394A5B6C7D8E9FA0B1C2D3E4FBA
+S315006028C060718293A4B5C6D7E8F90A1B2C3D4E5FAA
+S315006028D0708192A3B4C5D6E7F8091A2B3C4D5E6F9A
+S315006028E08091A2B3C4D5E6F708192A3B4C5D6E7F8A
+S315006028F090A1B2C3D4E5F60718293A4B5C6D7E8F7A
+S31500602900A0B1C2D3E4F5061728394A5B6C7D8E9F69
+S31500602910B0C1D2E3F405162738495A6B7C8D9EAF59
+S31500602920C0D1E2F30415263748596A7B8C9DAEBF49
+S31500602930D0E1F2031425364758697A8B9CADBECF39
+S31500602940E0F102132435465768798A9BACBDCEDF29
+S31500602950F00112233445566778899AABBCCDDEEF19
+S3150060296000112233445566778899AABBCCDDEEFF09
+S31500602970102132435465768798A9BACBDCEDFE0FF9
+S315006029802031425364758697A8B9CADBECFD0E1FE9
+S3150060299030415263748596A7B8C9DAEBFC0D1E2FD9
+S315006029A0405162738495A6B7C8D9EAFB0C1D2E3FC9
+S315006029B05061728394A5B6C7D8E9FA0B1C2D3E4FB9
+S315006029C060718293A4B5C6D7E8F90A1B2C3D4E5FA9
+S315006029D0708192A3B4C5D6E7F8091A2B3C4D5E6F99
+S315006029E08091A2B3C4D5E6F708192A3B4C5D6E7F89
+S315006029F090A1B2C3D4E5F60718293A4B5C6D7E8F79
+S31500602A00A0B1C2D3E4F5061728394A5B6C7D8E9F68
+S31500602A10B0C1D2E3F405162738495A6B7C8D9EAF58
+S31500602A20C0D1E2F30415263748596A7B8C9DAEBF48
+S31500602A30D0E1F2031425364758697A8B9CADBECF38
+S31500602A40E0F102132435465768798A9BACBDCEDF28
+S31500602A50F00112233445566778899AABBCCDDEEF18
+S31500602A6000112233445566778899AABBCCDDEEFF08
+S31500602A70102132435465768798A9BACBDCEDFE0FF8
+S31500602A802031425364758697A8B9CADBECFD0E1FE8
+S31500602A9030415263748596A7B8C9DAEBFC0D1E2FD8
+S31500602AA0405162738495A6B7C8D9EAFB0C1D2E3FC8
+S31500602AB05061728394A5B6C7D8E9FA0B1C2D3E4FB8
+S31500602AC060718293A4B5C6D7E8F90A1B2C3D4E5FA8
+S31500602AD0708192A3B4C5D6E7F8091A2B3C4D5E6F98
+S31500602AE08091A2B3C4D5E6F708192A3B4C5D6E7F88
+S31500602AF090A1B2C3D4E5F60718293A4B5C6D7E8F78
+S31500602B00A0B1C2D3E4F5061728394A5B6C7D8E9F67
+S31500602B10B0C1D2E3F405162738495A6B7C8D9EAF57
+S31500602B20C0D1E2F30415263748596A7B8C9DAEBF47
+S31500602B30D0E1F2031425364758697A8B9CADBECF37
+S31500602B40E0F102132435465768798A9BACBDCEDF27
+S31500602B50F00112233445566778899AABBCCDDEEF17
+S31500602B6000112233445566778899AABBCCDDEEFF07
+S31500602B70102132435465768798A9BACBDCEDFE0FF7
+S31500602B802031425364758697A8B9CADBECFD0E1FE7
+S31500602B9030415263748596A7B8C9DAEBFC0D1E2FD7
+S31500602BA0405162738495A6B7C8D9EAFB0C1D2E3FC7
+S31500602BB05061728394A5B6C7D8E9FA0B1C2D3E4FB7
+S31500602BC060718293A4B5C6D7E8F90A1B2C3D4E5FA7
+S31500602BD0708192A3B4C5D6E7F8091A2B3C4D5E6F97
+S31500602BE08091A2B3C4D5E6F708192A3B4C5D6E7F87
+S31500602BF090A1B2C3D4E5F60718293A4B5C6D7E8F77
+S31500602C00A0B1C2D3E4F5061728394A5B6C7D8E9F66
+S31500602C10B0C1D2E3F405162738495A6B7C8D9EAF56
+S31500602C20C0D1E2F30415263748596A7B8C9DAEBF46
+S31500602C30D0E1F2031425364758697A8B9CADBECF36
+S31500602C40E0F102132435465768798A9BACBDCEDF26
+S31500602C50F00112233445566778899AABBCCDDEEF16
+S31500602C6000112233445566778899AABBCCDDEEFF06
+S31500602C70102132435465768798A9BACBDCEDFE0FF6
+S31500602C802031425364758697A8B9CADBECFD0E1FE6
+S31500602C9030415263748596A7B8C9DAEBFC0D1E2FD6
+S31500602CA0405162738495A6B7C8D9EAFB0C1D2E3FC6
+S31500602CB05061728394A5B6C7D8E9FA0B1C2D3E4FB6
+S31500602CC060718293A4B5C6D7E8F90A1B2C3D4E5FA6
+S31500602CD0708192A3B4C5D6E7F8091A2B3C4D5E6F96
+S31500602CE08091A2B3C4D5E6F708192A3B4C5D6E7F86
+S31500602CF090A1B2C3D4E5F60718293A4B5C6D7E8F76
+S31500602D00A0B1C2D3E4F5061728394A5B6C7D8E9F65
+S31500602D10B0C1D2E3F405162738495A6B7C8D9EAF55
+S31500602D20C0D1E2F30415263748596A7B8C9DAEBF45
+S31500602D30D0E1F2031425364758697A8B9CADBECF35
+S31500602D40E0F102132435465768798A9BACBDCEDF25
+S31500602D50F00112233445566778899AABBCCDDEEF15
+S31500602D6000112233445566778899AABBCCDDEEFF05
+S31500602D70102132435465768798A9BACBDCEDFE0FF5
+S31500602D802031425364758697A8B9CADBECFD0E1FE5
+S31500602D9030415263748596A7B8C9DAEBFC0D1E2FD5
+S31500602DA0405162738495A6B7C8D9EAFB0C1D2E3FC5
+S31500602DB05061728394A5B6C7D8E9FA0B1C2D3E4FB5
+S31500602DC060718293A4B5C6D7E8F90A1B2C3D4E5FA5
+S31500602DD0708192A3B4C5D6E7F8091A2B3C4D5E6F95
+S31500602DE08091A2B3C4D5E6F708192A3B4C5D6E7F85
+S31500602DF090A1B2C3D4E5F60718293A4B5C6D7E8F75
+S31500602E00A0B1C2D3E4F5061728394A5B6C7D8E9F64
+S31500602E10B0C1D2E3F405162738495A6B7C8D9EAF54
+S31500602E20C0D1E2F30415263748596A7B8C9DAEBF44
+S31500602E30D0E1F2031425364758697A8B9CADBECF34
+S31500602E40E0F102132435465768798A9BACBDCEDF24
+S31500602E50F00112233445566778899AABBCCDDEEF14
+S31500602E6000112233445566778899AABBCCDDEEFF04
+S31500602E70102132435465768798A9BACBDCEDFE0FF4
+S31500602E802031425364758697A8B9CADBECFD0E1FE4
+S31500602E9030415263748596A7B8C9DAEBFC0D1E2FD4
+S31500602EA0405162738495A6B7C8D9EAFB0C1D2E3FC4
+S31500602EB05061728394A5B6C7D8E9FA0B1C2D3E4FB4
+S31500602EC060718293A4B5C6D7E8F90A1B2C3D4E5FA4
+S31500602ED0708192A3B4C5D6E7F8091A2B3C4D5E6F94
+S31500602EE08091A2B3C4D5E6F708192A3B4C5D6E7F84
+S31500602EF090A1B2C3D4E5F60718293A4B5C6D7E8F74
+S31500602F00A0B1C2D3E4F5061728394A5B6C7D8E9F63
+S31500602F10B0C1D2E3F405162738495A6B7C8D9EAF53
+S31500602F20C0D1E2F30415263748596A7B8C9DAEBF43
+S31500602F30D0E1F2031425364758697A8B9CADBECF33
+S31500602F40E0F102132435465768798A9BACBDCEDF23
+S31500602F50F00112233445566778899AABBCCDDEEF13
+S31500602F6000112233445566778899AABBCCDDEEFF03
+S31500602F70102132435465768798A9BACBDCEDFE0FF3
+S31500602F802031425364758697A8B9CADBECFD0E1FE3
+S31500602F9030415263748596A7B8C9DAEBFC0D1E2FD3
+S31500602FA0405162738495A6B7C8D9EAFB0C1D2E3FC3
+S31500602FB05061728394A5B6C7D8E9FA0B1C2D3E4FB3
+S31500602FC060718293A4B5C6D7E8F90A1B2C3D4E5FA3
+S31500602FD0708192A3B4C5D6E7F8091A2B3C4D5E6F93
+S31500602FE08091A2B3C4D5E6F708192A3B4C5D6E7F83
+S31500602FF090A1B2C3D4E5F60718293A4B5C6D7E8F73
+S31500603000A0B1C2D3E4F5061728394A5B6C7D8E9F62
+S31500603010B0C1D2E3F405162738495A6B7C8D9EAF52
+S31500603020C0D1E2F30415263748596A7B8C9DAEBF42
+S31500603030D0E1F2031425364758697A8B9CADBECF32
+S31500603040E0F102132435465768798A9BACBDCEDF22
+S31500603050F00112233445566778899AABBCCDDEEF12
+S3150060306000112233445566778899AABBCCDDEEFF02
+S31500603070102132435465768798A9BACBDCEDFE0FF2
+S315006030802031425364758697A8B9CADBECFD0E1FE2
+S3150060309030415263748596A7B8C9DAEBFC0D1E2FD2
+S315006030A0405162738495A6B7C8D9EAFB0C1D2E3FC2
+S315006030B05061728394A5B6C7D8E9FA0B1C2D3E4FB2
+S315006030C060718293A4B5C6D7E8F90A1B2C3D4E5FA2
+S315006030D0708192A3B4C5D6E7F8091A2B3C4D5E6F92
+S315006030E08091A2B3C4D5E6F708192A3B4C5D6E7F82
+S315006030F090A1B2C3D4E5F60718293A4B5C6D7E8F72
+S31500603100A0B1C2D3E4F5061728394A5B6C7D8E9F61
+S31500603110B0C1D2E3F405162738495A6B7C8D9EAF51
+S31500603120C0D1E2F30415263748596A7B8C9DAEBF41
+S31500603130D0E1F2031425364758697A8B9CADBECF31
+S31500603140E0F102132435465768798A9BACBDCEDF21
+S31500603150F00112233445566778899AABBCCDDEEF11
+S3150060316000112233445566778899AABBCCDDEEFF01
+S31500603170102132435465768798A9BACBDCEDFE0FF1
+S315006031802031425364758697A8B9CADBECFD0E1FE1
+S3150060319030415263748596A7B8C9DAEBFC0D1E2FD1
+S315006031A0405162738495A6B7C8D9EAFB0C1D2E3FC1
+S315006031B05061728394A5B6C7D8E9FA0B1C2D3E4FB1
+S315006031C060718293A4B5C6D7E8F90A1B2C3D4E5FA1
+S315006031D0708192A3B4C5D6E7F8091A2B3C4D5E6F91
+S315006031E08091A2B3C4D5E6F708192A3B4C5D6E7F81
+S315006031F090A1B2C3D4E5F60718293A4B5C6D7E8F71
+S31500603200A0B1C2D3E4F5061728394A5B6C7D8E9F60
+S31500603210B0C1D2E3F405162738495A6B7C8D9EAF50
+S31500603220C0D1E2F30415263748596A7B8C9DAEBF40
+S31500603230D0E1F2031425364758697A8B9CADBECF30
+S31500603240E0F102132435465768798A9BACBDCEDF20
+S31500603250F00112233445566778899AABBCCDDEEF10
+S3150060326000112233445566778899AABBCCDDEEFF00
+S31500603270102132435465768798A9BACBDCEDFE0FF0
+S315006032802031425364758697A8B9CADBECFD0E1FE0
+S3150060329030415263748596A7B8C9DAEBFC0D1E2FD0
+S315006032A0405162738495A6B7C8D9EAFB0C1D2E3FC0
+S315006032B05061728394A5B6C7D8E9FA0B1C2D3E4FB0
+S315006032C060718293A4B5C6D7E8F90A1B2C3D4E5FA0
+S315006032D0708192A3B4C5D6E7F8091A2B3C4D5E6F90
+S315006032E08091A2B3C4D5E6F708192A3B4C5D6E7F80
+S315006032F090A1B2C3D4E5F60718293A4B5C6D7E8F70
+S31500603300A0B1C2D3E4F5061728394A5B6C7D8E9F5F
+S31500603310B0C1D2E3F405162738495A6B7C8D9EAF4F
+S31500603320C0D1E2F30415263748596A7B8C9DAEBF3F
+S31500603330D0E1F2031425364758697A8B9CADBECF2F
+S31500603340E0F102132435465768798A9BACBDCEDF1F
+S31500603350F00112233445566778899AABBCCDDEEF0F
+S3150060336000112233445566778899AABBCCDDEEFFFF
+S31500603370102132435465768798A9BACBDCEDFE0FEF
+S315006033802031425364758697A8B9CADBECFD0E1FDF
+S3150060339030415263748596A7B8C9DAEBFC0D1E2FCF
+S315006033A0405162738495A6B7C8D9EAFB0C1D2E3FBF
+S315006033B05061728394A5B6C7D8E9FA0B1C2D3E4FAF
+S315006033C060718293A4B5C6D7E8F90A1B2C3D4E5F9F
+S315006033D0708192A3B4C5D6E7F8091A2B3C4D5E6F8F
+S315006033E08091A2B3C4D5E6F708192A3B4C5D6E7F7F
+S315006033F090A1B2C3D4E5F60718293A4B5C6D7E8F6F
+S31500603400A0B1C2D3E4F5061728394A5B6C7D8E9F5E
+S31500603410B0C1D2E3F405162738495A6B7C8D9EAF4E
+S31500603420C0D1E2F30415263748596A7B8C9DAEBF3E
+S31500603430D0E1F2031425364758697A8B9CADBECF2E
+S31500603440E0F102132435465768798A9BACBDCEDF1E
+S31500603450F00112233445566778899AABBCCDDEEF0E
+S3150060346000112233445566778899AABBCCDDEEFFFE
+S31500603470102132435465768798A9BACBDCEDFE0FEE
+S315006034802031425364758697A8B9CADBECFD0E1FDE
+S3150060349030415263748596A7B8C9DAEBFC0D1E2FCE
+S315006034A0405162738495A6B7C8D9EAFB0C1D2E3FBE
+S315006034B05061728394A5B6C7D8E9FA0B1C2D3E4FAE
+S315006034C060718293A4B5C6D7E8F90A1B2C3D4E5F9E
+S315006034D0708192A3B4C5D6E7F8091A2B3C4D5E6F8E
+S315006034E08091A2B3C4D5E6F708192A3B4C5D6E7F7E
+S315006034F090A1B2C3D4E5F60718293A4B5C6D7E8F6E
+S31500603500A0B1C2D3E4F5061728394A5B6C7D8E9F5D
+S31500603510B0C1D2E3F405162738495A6B7C8D9EAF4D
+S31500603520C0D1E2F30415263748596A7B8C9DAEBF3D
+S31500603530D0E1F2031425364758697A8B9CADBECF2D
+S31500603540E0F102132435465768798A9BACBDCEDF1D
+S31500603550F00112233445566778899AABBCCDDEEF0D
+S3150060356000112233445566778899AABBCCDDEEFFFD
+S31500603570102132435465768798A9BACBDCEDFE0FED
+S315006035802031425364758697A8B9CADBECFD0E1FDD
+S3150060359030415263748596A7B8C9DAEBFC0D1E2FCD
+S315006035A0405162738495A6B7C8D9EAFB0C1D2E3FBD
+S315006035B05061728394A5B6C7D8E9FA0B1C2D3E4FAD
+S315006035C060718293A4B5C6D7E8F90A1B2C3D4E5F9D
+S315006035D0708192A3B4C5D6E7F8091A2B3C4D5E6F8D
+S315006035E08091A2B3C4D5E6F708192A3B4C5D6E7F7D
+S315006035F090A1B2C3D4E5F60718293A4B5C6D7E8F6D
+S31500603600A0B1C2D3E4F5061728394A5B6C7D8E9F5C
+S31500603610B0C1D2E3F405162738495A6B7C8D9EAF4C
+S31500603620C0D1E2F30415263748596A7B8C9DAEBF3C
+S31500603630D0E1F2031425364758697A8B9CADBECF2C
+S31500603640E0F102132435465768798A9BACBDCEDF1C
+S31500603650F00112233445566778899AABBCCDDEEF0C
+S3150060366000112233445566778899AABBCCDDEEFFFC
+S31500603670102132435465768798A9BACBDCEDFE0FEC
+S315006036802031425364758697A8B9CADBECFD0E1FDC
+S3150060369030415263748596A7B8C9DAEBFC0D1E2FCC
+S315006036A0405162738495A6B7C8D9EAFB0C1D2E3FBC
+S315006036B05061728394A5B6C7D8E9FA0B1C2D3E4FAC
+S315006036C060718293A4B5C6D7E8F90A1B2C3D4E5F9C
+S315006036D0708192A3B4C5D6E7F8091A2B3C4D5E6F8C
+S315006036E08091A2B3C4D5E6F708192A3B4C5D6E7F7C
+S315006036F090A1B2C3D4E5F60718293A4B5C6D7E8F6C
+S31500603700A0B1C2D3E4F5061728394A5B6C7D8E9F5B
+S31500603710B0C1D2E3F405162738495A6B7C8D9EAF4B
+S31500603720C0D1E2F30415263748596A7B8C9DAEBF3B
+S31500603730D0E1F2031425364758697A8B9CADBECF2B
+S31500603740E0F102132435465768798A9BACBDCEDF1B
+S31500603750F00112233445566778899AABBCCDDEEF0B
+S3150060376000112233445566778899AABBCCDDEEFFFB
+S31500603770102132435465768798A9BACBDCEDFE0FEB
+S315006037802031425364758697A8B9CADBECFD0E1FDB
+S3150060379030415263748596A7B8C9DAEBFC0D1E2FCB
+S315006037A0405162738495A6B7C8D9EAFB0C1D2E3FBB
+S315006037B05061728394A5B6C7D8E9FA0B1C2D3E4FAB
+S315006037C060718293A4B5C6D7E8F90A1B2C3D4E5F9B
+S315006037D0708192A3B4C5D6E7F8091A2B3C4D5E6F8B
+S315006037E08091A2B3C4D5E6F708192A3B4C5D6E7F7B
+S315006037F090A1B2C3D4E5F60718293A4B5C6D7E8F6B
+S31500603800A0B1C2D3E4F5061728394A5B6C7D8E9F5A
+S31500603810B0C1D2E3F405162738495A6B7C8D9EAF4A
+S31500603820C0D1E2F30415263748596A7B8C9DAEBF3A
+S31500603830D0E1F2031425364758697A8B9CADBECF2A
+S31500603840E0F102132435465768798A9BACBDCEDF1A
+S31500603850F00112233445566778899AABBCCDDEEF0A
+S3150060386000112233445566778899AABBCCDDEEFFFA
+S31500603870102132435465768798A9BACBDCEDFE0FEA
+S315006038802031425364758697A8B9CADBECFD0E1FDA
+S3150060389030415263748596A7B8C9DAEBFC0D1E2FCA
+S315006038A0405162738495A6B7C8D9EAFB0C1D2E3FBA
+S315006038B05061728394A5B6C7D8E9FA0B1C2D3E4FAA
+S315006038C060718293A4B5C6D7E8F90A1B2C3D4E5F9A
+S315006038D0708192A3B4C5D6E7F8091A2B3C4D5E6F8A
+S315006038E08091A2B3C4D5E6F708192A3B4C5D6E7F7A
+S315006038F090A1B2C3D4E5F60718293A4B5C6D7E8F6A
+S31500603900A0B1C2D3E4F5061728394A5B6C7D8E9F59
+S31500603910B0C1D2E3F405162738495A6B7C8D9EAF49
+S31500603920C0D1E2F30415263748596A7B8C9DAEBF39
+S31500603930D0E1F2031425364758697A8B9CADBECF29
+S31500603940E0F102132435465768798A9BACBDCEDF19
+S31500603950F00112233445566778899AABBCCDDEEF09
+S3150060396000112233445566778899AABBCCDDEEFFF9
+S31500603970102132435465768798A9BACBDCEDFE0FE9
+S315006039802031425364758697A8B9CADBECFD0E1FD9
+S3150060399030415263748596A7B8C9DAEBFC0D1E2FC9
+S315006039A0405162738495A6B7C8D9EAFB0C1D2E3FB9
+S315006039B05061728394A5B6C7D8E9FA0B1C2D3E4FA9
+S315006039C060718293A4B5C6D7E8F90A1B2C3D4E5F99
+S315006039D0708192A3B4C5D6E7F8091A2B3C4D5E6F89
+S315006039E08091A2B3C4D5E6F708192A3B4C5D6E7F79
+S315006039F090A1B2C3D4E5F60718293A4B5C6D7E8F69
+S31500603A00A0B1C2D3E4F5061728394A5B6C7D8E9F58
+S31500603A10B0C1D2E3F405162738495A6B7C8D9EAF48
+S31500603A20C0D1E2F30415263748596A7B8C9DAEBF38
+S31500603A30D0E1F2031425364758697A8B9CADBECF28
+S31500603A40E0F102132435465768798A9BACBDCEDF18
+S31500603A50F00112233445566778899AABBCCDDEEF08
+S31500603A6000112233445566778899AABBCCDDEEFFF8
+S31500603A70102132435465768798A9BACBDCEDFE0FE8
+S31500603A802031425364758697A8B9CADBECFD0E1FD8
+S31500603A9030415263748596A7B8C9DAEBFC0D1E2FC8
+S31500603AA0405162738495A6B7C8D9EAFB0C1D2E3FB8
+S31500603AB05061728394A5B6C7D8E9FA0B1C2D3E4FA8
+S31500603AC060718293A4B5C6D7E8F90A1B2C3D4E5F98
+S31500603AD0708192A3B4C5D6E7F8091A2B3C4D5E6F88
+S31500603AE08091A2B3C4D5E6F708192A3B4C5D6E7F78
+S31500603AF090A1B2C3D4E5F60718293A4B5C6D7E8F68
+S31500603B00A0B1C2D3E4F5061728394A5B6C7D8E9F57
+S31500603B10B0C1D2E3F405162738495A6B7C8D9EAF47
+S31500603B20C0D1E2F30415263748596A7B8C9DAEBF37
+S31500603B30D0E1F2031425364758697A8B9CADBECF27
+S31500603B40E0F102132435465768798A9BACBDCEDF17
+S31500603B50F00112233445566778899AABBCCDDEEF07
+S31500603B6000112233445566778899AABBCCDDEEFFF7
+S31500603B70102132435465768798A9BACBDCEDFE0FE7
+S31500603B802031425364758697A8B9CADBECFD0E1FD7
+S31500603B9030415263748596A7B8C9DAEBFC0D1E2FC7
+S31500603BA0405162738495A6B7C8D9EAFB0C1D2E3FB7
+S31500603BB05061728394A5B6C7D8E9FA0B1C2D3E4FA7
+S31500603BC060718293A4B5C6D7E8F90A1B2C3D4E5F97
+S31500603BD0708192A3B4C5D6E7F8091A2B3C4D5E6F87
+S31500603BE08091A2B3C4D5E6F708192A3B4C5D6E7F77
+S31500603BF090A1B2C3D4E5F60718293A4B5C6D7E8F67
+S31500603C00A0B1C2D3E4F5061728394A5B6C7D8E9F56
+S31500603C10B0C1D2E3F405162738495A6B7C8D9EAF46
+S31500603C20C0D1E2F30415263748596A7B8C9DAEBF36
+S31500603C30D0E1F2031425364758697A8B9CADBECF26
+S31500603C40E0F102132435465768798A9BACBDCEDF16
+S31500603C50F00112233445566778899AABBCCDDEEF06
+S31500603C6000112233445566778899AABBCCDDEEFFF6
+S31500603C70102132435465768798A9BACBDCEDFE0FE6
+S31500603C802031425364758697A8B9CADBECFD0E1FD6
+S31500603C9030415263748596A7B8C9DAEBFC0D1E2FC6
+S31500603CA0405162738495A6B7C8D9EAFB0C1D2E3FB6
+S31500603CB05061728394A5B6C7D8E9FA0B1C2D3E4FA6
+S31500603CC060718293A4B5C6D7E8F90A1B2C3D4E5F96
+S31500603CD0708192A3B4C5D6E7F8091A2B3C4D5E6F86
+S31500603CE08091A2B3C4D5E6F708192A3B4C5D6E7F76
+S31500603CF090A1B2C3D4E5F60718293A4B5C6D7E8F66
+S31500603D00A0B1C2D3E4F5061728394A5B6C7D8E9F55
+S31500603D10B0C1D2E3F405162738495A6B7C8D9EAF45
+S31500603D20C0D1E2F30415263748596A7B8C9DAEBF35
+S31500603D30D0E1F2031425364758697A8B9CADBECF25
+S31500603D40E0F102132435465768798A9BACBDCEDF15
+S31500603D50F00112233445566778899AABBCCDDEEF05
+S31500603D6000112233445566778899AABBCCDDEEFFF5
+S31500603D70102132435465768798A9BACBDCEDFE0FE5
+S31500603D802031425364758697A8B9CADBECFD0E1FD5
+S31500603D9030415263748596A7B8C9DAEBFC0D1E2FC5
+S31500603DA0405162738495A6B7C8D9EAFB0C1D2E3FB5
+S31500603DB05061728394A5B6C7D8E9FA0B1C2D3E4FA5
+S31500603DC060718293A4B5C6D7E8F90A1B2C3D4E5F95
+S31500603DD0708192A3B4C5D6E7F8091A2B3C4D5E6F85
+S31500603DE08091A2B3C4D5E6F708192A3B4C5D6E7F75
+S31500603DF090A1B2C3D4E5F60718293A4B5C6D7E8F65
+S31500603E00A0B1C2D3E4F5061728394A5B6C7D8E9F54
+S31500603E10B0C1D2E3F405162738495A6B7C8D9EAF44
+S31500603E20C0D1E2F30415263748596A7B8C9DAEBF34
+S31500603E30D0E1F2031425364758697A8B9CADBECF24
+S31500603E40E0F102132435465768798A9BACBDCEDF14
+S31500603E50F00112233445566778899AABBCCDDEEF04
+S31500603E6000112233445566778899AABBCCDDEEFFF4
+S31500603E70102132435465768798A9BACBDCEDFE0FE4
+S31500603E802031425364758697A8B9CADBECFD0E1FD4
+S31500603E9030415263748596A7B8C9DAEBFC0D1E2FC4
+S31500603EA0405162738495A6B7C8D9EAFB0C1D2E3FB4
+S31500603EB05061728394A5B6C7D8E9FA0B1C2D3E4FA4
+S31500603EC060718293A4B5C6D7E8F90A1B2C3D4E5F94
+S31500603ED0708192A3B4C5D6E7F8091A2B3C4D5E6F84
+S31500603EE08091A2B3C4D5E6F708192A3B4C5D6E7F74
+S31500603EF090A1B2C3D4E5F60718293A4B5C6D7E8F64
+S31500603F00A0B1C2D3E4F5061728394A5B6C7D8E9F53
+S31500603F10B0C1D2E3F405162738495A6B7C8D9EAF43
+S31500603F20C0D1E2F30415263748596A7B8C9DAEBF33
+S31500603F30D0E1F2031425364758697A8B9CADBECF23
+S31500603F40E0F102132435465768798A9BACBDCEDF13
+S31500603F50F00112233445566778899AABBCCDDEEF03
+S31500603F6000112233445566778899AABBCCDDEEFFF3
+S31500603F70102132435465768798A9BACBDCEDFE0FE3
+S31500603F802031425364758697A8B9CADBECFD0E1FD3
+S31500603F9030415263748596A7B8C9DAEBFC0D1E2FC3
+S31500603FA0405162738495A6B7C8D9EAFB0C1D2E3FB3
+S31500603FB05061728394A5B6C7D8E9FA0B1C2D3E4FA3
+S31500603FC060718293A4B5C6D7E8F90A1B2C3D4E5F93
+S31500603FD0708192A3B4C5D6E7F8091A2B3C4D5E6F83
+S31500603FE08091A2B3C4D5E6F708192A3B4C5D6E7F73
+S31500603FF090A1B2C3D4E5F60718293A4B5C6D7E8F63
+S31500604000A0B1C2D3E4F5061728394A5B6C7D8E9F52
+S31500604010B0C1D2E3F405162738495A6B7C8D9EAF42
+S31500604020C0D1E2F30415263748596A7B8C9DAEBF32
+S31500604030D0E1F2031425364758697A8B9CADBECF22
+S31500604040E0F102132435465768798A9BACBDCEDF12
+S31500604050F00112233445566778899AABBCCDDEEF02
+S3150060406000112233445566778899AABBCCDDEEFFF2
+S31500604070102132435465768798A9BACBDCEDFE0FE2
+S315006040802031425364758697A8B9CADBECFD0E1FD2
+S3150060409030415263748596A7B8C9DAEBFC0D1E2FC2
+S315006040A0405162738495A6B7C8D9EAFB0C1D2E3FB2
+S315006040B05061728394A5B6C7D8E9FA0B1C2D3E4FA2
+S315006040C060718293A4B5C6D7E8F90A1B2C3D4E5F92
+S315006040D0708192A3B4C5D6E7F8091A2B3C4D5E6F82
+S315006040E08091A2B3C4D5E6F708192A3B4C5D6E7F72
+S315006040F090A1B2C3D4E5F60718293A4B5C6D7E8F62
+S31500604100A0B1C2D3E4F5061728394A5B6C7D8E9F51
+S31500604110B0C1D2E3F405162738495A6B7C8D9EAF41
+S31500604120C0D1E2F30415263748596A7B8C9DAEBF31
+S31500604130D0E1F2031425364758697A8B9CADBECF21
+S31500604140E0F102132435465768798A9BACBDCEDF11
+S31500604150F00112233445566778899AABBCCDDEEF01
+S3150060416000112233445566778899AABBCCDDEEFFF1
+S31500604170102132435465768798A9BACBDCEDFE0FE1
+S315006041802031425364758697A8B9CADBECFD0E1FD1
+S3150060419030415263748596A7B8C9DAEBFC0D1E2FC1
+S315006041A0405162738495A6B7C8D9EAFB0C1D2E3FB1
+S315006041B05061728394A5B6C7D8E9FA0B1C2D3E4FA1
+S315006041C060718293A4B5C6D7E8F90A1B2C3D4E5F91
+S315006041D0708192A3B4C5D6E7F8091A2B3C4D5E6F81
+S315006041E08091A2B3C4D5E6F708192A3B4C5D6E7F71
+S315006041F090A1B2C3D4E5F60718293A4B5C6D7E8F61
+S31500604200A0B1C2D3E4F5061728394A5B6C7D8E9F50
+S31500604210B0C1D2E3F405162738495A6B7C8D9EAF40
+S31500604220C0D1E2F30415263748596A7B8C9DAEBF30
+S31500604230D0E1F2031425364758697A8B9CADBECF20
+S31500604240E0F102132435465768798A9BACBDCEDF10
+S31500604250F00112233445566778899AABBCCDDEEF00
+S3150060426000112233445566778899AABBCCDDEEFFF0
+S31500604270102132435465768798A9BACBDCEDFE0FE0
+S315006042802031425364758697A8B9CADBECFD0E1FD0
+S3150060429030415263748596A7B8C9DAEBFC0D1E2FC0
+S315006042A0405162738495A6B7C8D9EAFB0C1D2E3FB0
+S315006042B05061728394A5B6C7D8E9FA0B1C2D3E4FA0
+S315006042C060718293A4B5C6D7E8F90A1B2C3D4E5F90
+S315006042D0708192A3B4C5D6E7F8091A2B3C4D5E6F80
+S315006042E08091A2B3C4D5E6F708192A3B4C5D6E7F70
+S315006042F090A1B2C3D4E5F60718293A4B5C6D7E8F60
+S31500604300A0B1C2D3E4F5061728394A5B6C7D8E9F4F
+S31500604310B0C1D2E3F405162738495A6B7C8D9EAF3F
+S31500604320C0D1E2F30415263748596A7B8C9DAEBF2F
+S31500604330D0E1F2031425364758697A8B9CADBECF1F
+S31500604340E0F102132435465768798A9BACBDCEDF0F
+S31500604350F00112233445566778899AABBCCDDEEFFF
+S3150060436000112233445566778899AABBCCDDEEFFEF
+S31500604370102132435465768798A9BACBDCEDFE0FDF
+S315006043802031425364758697A8B9CADBECFD0E1FCF
+S3150060439030415263748596A7B8C9DAEBFC0D1E2FBF
+S315006043A0405162738495A6B7C8D9EAFB0C1D2E3FAF
+S315006043B05061728394A5B6C7D8E9FA0B1C2D3E4F9F
+S315006043C060718293A4B5C6D7E8F90A1B2C3D4E5F8F
+S315006043D0708192A3B4C5D6E7F8091A2B3C4D5E6F7F
+S315006043E08091A2B3C4D5E6F708192A3B4C5D6E7F6F
+S315006043F090A1B2C3D4E5F60718293A4B5C6D7E8F5F
+S31500604400A0B1C2D3E4F5061728394A5B6C7D8E9F4E
+S31500604410B0C1D2E3F405162738495A6B7C8D9EAF3E
+S31500604420C0D1E2F30415263748596A7B8C9DAEBF2E
+S31500604430D0E1F2031425364758697A8B9CADBECF1E
+S31500604440E0F102132435465768798A9BACBDCEDF0E
+S31500604450F00112233445566778899AABBCCDDEEFFE
+S3150060446000112233445566778899AABBCCDDEEFFEE
+S31500604470102132435465768798A9BACBDCEDFE0FDE
+S315006044802031425364758697A8B9CADBECFD0E1FCE
+S3150060449030415263748596A7B8C9DAEBFC0D1E2FBE
+S315006044A0405162738495A6B7C8D9EAFB0C1D2E3FAE
+S315006044B05061728394A5B6C7D8E9FA0B1C2D3E4F9E
+S315006044C060718293A4B5C6D7E8F90A1B2C3D4E5F8E
+S315006044D0708192A3B4C5D6E7F8091A2B3C4D5E6F7E
+S315006044E08091A2B3C4D5E6F708192A3B4C5D6E7F6E
+S315006044F090A1B2C3D4E5F60718293A4B5C6D7E8F5E
+S31500604500A0B1C2D3E4F5061728394A5B6C7D8E9F4D
+S31500604510B0C1D2E3F405162738495A6B7C8D9EAF3D
+S31500604520C0D1E2F30415263748596A7B8C9DAEBF2D
+S31500604530D0E1F2031425364758697A8B9CADBECF1D
+S31500604540E0F102132435465768798A9BACBDCEDF0D
+S31500604550F00112233445566778899AABBCCDDEEFFD
+S3150060456000112233445566778899AABBCCDDEEFFED
+S31500604570102132435465768798A9BACBDCEDFE0FDD
+S315006045802031425364758697A8B9CADBECFD0E1FCD
+S3150060459030415263748596A7B8C9DAEBFC0D1E2FBD
+S315006045A0405162738495A6B7C8D9EAFB0C1D2E3FAD
+S315006045B05061728394A5B6C7D8E9FA0B1C2D3E4F9D
+S315006045C060718293A4B5C6D7E8F90A1B2C3D4E5F8D
+S315006045D0708192A3B4C5D6E7F8091A2B3C4D5E6F7D
+S315006045E08091A2B3C4D5E6F708192A3B4C5D6E7F6D
+S315006045F090A1B2C3D4E5F60718293A4B5C6D7E8F5D
+S31500604600A0B1C2D3E4F5061728394A5B6C7D8E9F4C
+S31500604610B0C1D2E3F405162738495A6B7C8D9EAF3C
+S31500604620C0D1E2F30415263748596A7B8C9DAEBF2C
+S31500604630D0E1F2031425364758697A8B9CADBECF1C
+S31500604640E0F102132435465768798A9BACBDCEDF0C
+S31500604650F00112233445566778899AABBCCDDEEFFC
+S3150060466000112233445566778899AABBCCDDEEFFEC
+S31500604670102132435465768798A9BACBDCEDFE0FDC
+S315006046802031425364758697A8B9CADBECFD0E1FCC
+S3150060469030415263748596A7B8C9DAEBFC0D1E2FBC
+S315006046A0405162738495A6B7C8D9EAFB0C1D2E3FAC
+S315006046B05061728394A5B6C7D8E9FA0B1C2D3E4F9C
+S315006046C060718293A4B5C6D7E8F90A1B2C3D4E5F8C
+S315006046D0708192A3B4C5D6E7F8091A2B3C4D5E6F7C
+S315006046E08091A2B3C4D5E6F708192A3B4C5D6E7F6C
+S315006046F090A1B2C3D4E5F60718293A4B5C6D7E8F5C
+S31500604700A0B1C2D3E4F5061728394A5B6C7D8E9F4B
+S31500604710B0C1D2E3F405162738495A6B7C8D9EAF3B
+S31500604720C0D1E2F30415263748596A7B8C9DAEBF2B
+S31500604730D0E1F2031425364758697A8B9CADBECF1B
+S31500604740E0F102132435465768798A9BACBDCEDF0B
+S31500604750F00112233445566778899AABBCCDDEEFFB
+S3150060476000112233445566778899AABBCCDDEEFFEB
+S31500604770102132435465768798A9BACBDCEDFE0FDB
+S315006047802031425364758697A8B9CADBECFD0E1FCB
+S3150060479030415263748596A7B8C9DAEBFC0D1E2FBB
+S315006047A0405162738495A6B7C8D9EAFB0C1D2E3FAB
+S315006047B05061728394A5B6C7D8E9FA0B1C2D3E4F9B
+S315006047C060718293A4B5C6D7E8F90A1B2C3D4E5F8B
+S315006047D0708192A3B4C5D6E7F8091A2B3C4D5E6F7B
+S315006047E08091A2B3C4D5E6F708192A3B4C5D6E7F6B
+S315006047F090A1B2C3D4E5F60718293A4B5C6D7E8F5B
+S31500604800A0B1C2D3E4F5061728394A5B6C7D8E9F4A
+S31500604810B0C1D2E3F405162738495A6B7C8D9EAF3A
+S31500604820C0D1E2F30415263748596A7B8C9DAEBF2A
+S31500604830D0E1F2031425364758697A8B9CADBECF1A
+S31500604840E0F102132435465768798A9BACBDCEDF0A
+S31500604850F00112233445566778899AABBCCDDEEFFA
+S3150060486000112233445566778899AABBCCDDEEFFEA
+S31500604870102132435465768798A9BACBDCEDFE0FDA
+S315006048802031425364758697A8B9CADBECFD0E1FCA
+S3150060489030415263748596A7B8C9DAEBFC0D1E2FBA
+S315006048A0405162738495A6B7C8D9EAFB0C1D2E3FAA
+S315006048B05061728394A5B6C7D8E9FA0B1C2D3E4F9A
+S315006048C060718293A4B5C6D7E8F90A1B2C3D4E5F8A
+S315006048D0708192A3B4C5D6E7F8091A2B3C4D5E6F7A
+S315006048E08091A2B3C4D5E6F708192A3B4C5D6E7F6A
+S315006048F090A1B2C3D4E5F60718293A4B5C6D7E8F5A
+S31500604900A0B1C2D3E4F5061728394A5B6C7D8E9F49
+S31500604910B0C1D2E3F405162738495A6B7C8D9EAF39
+S31500604920C0D1E2F30415263748596A7B8C9DAEBF29
+S31500604930D0E1F2031425364758697A8B9CADBECF19
+S31500604940E0F102132435465768798A9BACBDCEDF09
+S31500604950F00112233445566778899AABBCCDDEEFF9
+S3150060496000112233445566778899AABBCCDDEEFFE9
+S31500604970102132435465768798A9BACBDCEDFE0FD9
+S315006049802031425364758697A8B9CADBECFD0E1FC9
+S3150060499030415263748596A7B8C9DAEBFC0D1E2FB9
+S315006049A0405162738495A6B7C8D9EAFB0C1D2E3FA9
+S315006049B05061728394A5B6C7D8E9FA0B1C2D3E4F99
+S315006049C060718293A4B5C6D7E8F90A1B2C3D4E5F89
+S315006049D0708192A3B4C5D6E7F8091A2B3C4D5E6F79
+S315006049E08091A2B3C4D5E6F708192A3B4C5D6E7F69
+S315006049F090A1B2C3D4E5F60718293A4B5C6D7E8F59
+S31500604A00A0B1C2D3E4F5061728394A5B6C7D8E9F48
+S31500604A10B0C1D2E3F405162738495A6B7C8D9EAF38
+S31500604A20C0D1E2F30415263748596A7B8C9DAEBF28
+S31500604A30D0E1F2031425364758697A8B9CADBECF18
+S31500604A40E0F102132435465768798A9BACBDCEDF08
+S31500604A50F00112233445566778899AABBCCDDEEFF8
+S31500604A6000112233445566778899AABBCCDDEEFFE8
+S31500604A70102132435465768798A9BACBDCEDFE0FD8
+S31500604A802031425364758697A8B9CADBECFD0E1FC8
+S31500604A9030415263748596A7B8C9DAEBFC0D1E2FB8
+S31500604AA0405162738495A6B7C8D9EAFB0C1D2E3FA8
+S31500604AB05061728394A5B6C7D8E9FA0B1C2D3E4F98
+S31500604AC060718293A4B5C6D7E8F90A1B2C3D4E5F88
+S31500604AD0708192A3B4C5D6E7F8091A2B3C4D5E6F78
+S31500604AE08091A2B3C4D5E6F708192A3B4C5D6E7F68
+S31500604AF090A1B2C3D4E5F60718293A4B5C6D7E8F58
+S31500604B00A0B1C2D3E4F5061728394A5B6C7D8E9F47
+S31500604B10B0C1D2E3F405162738495A6B7C8D9EAF37
+S31500604B20C0D1E2F30415263748596A7B8C9DAEBF27
+S31500604B30D0E1F2031425364758697A8B9CADBECF17
+S31500604B40E0F102132435465768798A9BACBDCEDF07
+S31500604B50F00112233445566778899AABBCCDDEEFF7
+S31500604B6000112233445566778899AABBCCDDEEFFE7
+S31500604B70102132435465768798A9BACBDCEDFE0FD7
+S31500604B802031425364758697A8B9CADBECFD0E1FC7
+S31500604B9030415263748596A7B8C9DAEBFC0D1E2FB7
+S31500604BA0405162738495A6B7C8D9EAFB0C1D2E3FA7
+S31500604BB05061728394A5B6C7D8E9FA0B1C2D3E4F97
+S31500604BC060718293A4B5C6D7E8F90A1B2C3D4E5F87
+S31500604BD0708192A3B4C5D6E7F8091A2B3C4D5E6F77
+S31500604BE08091A2B3C4D5E6F708192A3B4C5D6E7F67
+S31500604BF090A1B2C3D4E5F60718293A4B5C6D7E8F57
+S31500604C00A0B1C2D3E4F5061728394A5B6C7D8E9F46
+S31500604C10B0C1D2E3F405162738495A6B7C8D9EAF36
+S31500604C20C0D1E2F30415263748596A7B8C9DAEBF26
+S31500604C30D0E1F2031425364758697A8B9CADBECF16
+S31500604C40E0F102132435465768798A9BACBDCEDF06
+S31500604C50F00112233445566778899AABBCCDDEEFF6
+S31500604C6000112233445566778899AABBCCDDEEFFE6
+S31500604C70102132435465768798A9BACBDCEDFE0FD6
+S31500604C802031425364758697A8B9CADBECFD0E1FC6
+S31500604C9030415263748596A7B8C9DAEBFC0D1E2FB6
+S31500604CA0405162738495A6B7C8D9EAFB0C1D2E3FA6
+S31500604CB05061728394A5B6C7D8E9FA0B1C2D3E4F96
+S31500604CC060718293A4B5C6D7E8F90A1B2C3D4E5F86
+S31500604CD0708192A3B4C5D6E7F8091A2B3C4D5E6F76
+S31500604CE08091A2B3C4D5E6F708192A3B4C5D6E7F66
+S31500604CF090A1B2C3D4E5F60718293A4B5C6D7E8F56
+S31500604D00A0B1C2D3E4F5061728394A5B6C7D8E9F45
+S31500604D10B0C1D2E3F405162738495A6B7C8D9EAF35
+S31500604D20C0D1E2F30415263748596A7B8C9DAEBF25
+S31500604D30D0E1F2031425364758697A8B9CADBECF15
+S31500604D40E0F102132435465768798A9BACBDCEDF05
+S31500604D50F00112233445566778899AABBCCDDEEFF5
+S31500604D6000112233445566778899AABBCCDDEEFFE5
+S31500604D70102132435465768798A9BACBDCEDFE0FD5
+S31500604D802031425364758697A8B9CADBECFD0E1FC5
+S31500604D9030415263748596A7B8C9DAEBFC0D1E2FB5
+S31500604DA0405162738495A6B7C8D9EAFB0C1D2E3FA5
+S31500604DB05061728394A5B6C7D8E9FA0B1C2D3E4F95
+S31500604DC060718293A4B5C6D7E8F90A1B2C3D4E5F85
+S31500604DD0708192A3B4C5D6E7F8091A2B3C4D5E6F75
+S31500604DE08091A2B3C4D5E6F708192A3B4C5D6E7F65
+S31500604DF090A1B2C3D4E5F60718293A4B5C6D7E8F55
+S31500604E00A0B1C2D3E4F5061728394A5B6C7D8E9F44
+S31500604E10B0C1D2E3F405162738495A6B7C8D9EAF34
+S31500604E20C0D1E2F30415263748596A7B8C9DAEBF24
+S31500604E30D0E1F2031425364758697A8B9CADBECF14
+S31500604E40E0F102132435465768798A9BACBDCEDF04
+S31500604E50F00112233445566778899AABBCCDDEEFF4
+S31500604E6000112233445566778899AABBCCDDEEFFE4
+S31500604E70102132435465768798A9BACBDCEDFE0FD4
+S31500604E802031425364758697A8B9CADBECFD0E1FC4
+S31500604E9030415263748596A7B8C9DAEBFC0D1E2FB4
+S31500604EA0405162738495A6B7C8D9EAFB0C1D2E3FA4
+S31500604EB05061728394A5B6C7D8E9FA0B1C2D3E4F94
+S31500604EC060718293A4B5C6D7E8F90A1B2C3D4E5F84
+S31500604ED0708192A3B4C5D6E7F8091A2B3C4D5E6F74
+S31500604EE08091A2B3C4D5E6F708192A3B4C5D6E7F64
+S31500604EF090A1B2C3D4E5F60718293A4B5C6D7E8F54
+S31500604F00A0B1C2D3E4F5061728394A5B6C7D8E9F43
+S31500604F10B0C1D2E3F405162738495A6B7C8D9EAF33
+S31500604F20C0D1E2F30415263748596A7B8C9DAEBF23
+S31500604F30D0E1F2031425364758697A8B9CADBECF13
+S31500604F40E0F102132435465768798A9BACBDCEDF03
+S31500604F50F00112233445566778899AABBCCDDEEFF3
+S31500604F6000112233445566778899AABBCCDDEEFFE3
+S31500604F70102132435465768798A9BACBDCEDFE0FD3
+S31500604F802031425364758697A8B9CADBECFD0E1FC3
+S31500604F9030415263748596A7B8C9DAEBFC0D1E2FB3
+S31500604FA0405162738495A6B7C8D9EAFB0C1D2E3FA3
+S31500604FB05061728394A5B6C7D8E9FA0B1C2D3E4F93
+S31500604FC060718293A4B5C6D7E8F90A1B2C3D4E5F83
+S31500604FD0708192A3B4C5D6E7F8091A2B3C4D5E6F73
+S31500604FE08091A2B3C4D5E6F708192A3B4C5D6E7F63
+S31500604FF090A1B2C3D4E5F60718293A4B5C6D7E8F53
+S31500605000A0B1C2D3E4F5061728394A5B6C7D8E9F42
+S31500605010B0C1D2E3F405162738495A6B7C8D9EAF32
+S31500605020C0D1E2F30415263748596A7B8C9DAEBF22
+S31500605030D0E1F2031425364758697A8B9CADBECF12
+S31500605040E0F102132435465768798A9BACBDCEDF02
+S31500605050F00112233445566778899AABBCCDDEEFF2
+S3150060506000112233445566778899AABBCCDDEEFFE2
+S31500605070102132435465768798A9BACBDCEDFE0FD2
+S315006050802031425364758697A8B9CADBECFD0E1FC2
+S3150060509030415263748596A7B8C9DAEBFC0D1E2FB2
+S315006050A0405162738495A6B7C8D9EAFB0C1D2E3FA2
+S315006050B05061728394A5B6C7D8E9FA0B1C2D3E4F92
+S315006050C060718293A4B5C6D7E8F90A1B2C3D4E5F82
+S315006050D0708192A3B4C5D6E7F8091A2B3C4D5E6F72
+S315006050E08091A2B3C4D5E6F708192A3B4C5D6E7F62
+S315006050F090A1B2C3D4E5F60718293A4B5C6D7E8F52
+S31500605100A0B1C2D3E4F5061728394A5B6C7D8E9F41
+S31500605110B0C1D2E3F405162738495A6B7C8D9EAF31
+S31500605120C0D1E2F30415263748596A7B8C9DAEBF21
+S31500605130D0E1F2031425364758697A8B9CADBECF11
+S31500605140E0F102132435465768798A9BACBDCEDF01
+S31500605150F00112233445566778899AABBCCDDEEFF1
+S3150060516000112233445566778899AABBCCDDEEFFE1
+S31500605170102132435465768798A9BACBDCEDFE0FD1
+S315006051802031425364758697A8B9CADBECFD0E1FC1
+S3150060519030415263748596A7B8C9DAEBFC0D1E2FB1
+S315006051A0405162738495A6B7C8D9EAFB0C1D2E3FA1
+S315006051B05061728394A5B6C7D8E9FA0B1C2D3E4F91
+S315006051C060718293A4B5C6D7E8F90A1B2C3D4E5F81
+S315006051D0708192A3B4C5D6E7F8091A2B3C4D5E6F71
+S315006051E08091A2B3C4D5E6F708192A3B4C5D6E7F61
+S315006051F090A1B2C3D4E5F60718293A4B5C6D7E8F51
+S31500605200A0B1C2D3E4F5061728394A5B6C7D8E9F40
+S31500605210B0C1D2E3F405162738495A6B7C8D9EAF30
+S31500605220C0D1E2F30415263748596A7B8C9DAEBF20
+S31500605230D0E1F2031425364758697A8B9CADBECF10
+S31500605240E0F102132435465768798A9BACBDCEDF00
+S31500605250F00112233445566778899AABBCCDDEEFF0
+S3150060526000112233445566778899AABBCCDDEEFFE0
+S31500605270102132435465768798A9BACBDCEDFE0FD0
+S315006052802031425364758697A8B9CADBECFD0E1FC0
+S3150060529030415263748596A7B8C9DAEBFC0D1E2FB0
+S315006052A0405162738495A6B7C8D9EAFB0C1D2E3FA0
+S315006052B05061728394A5B6C7D8E9FA0B1C2D3E4F90
+S315006052C060718293A4B5C6D7E8F90A1B2C3D4E5F80
+S315006052D0708192A3B4C5D6E7F8091A2B3C4D5E6F70
+S315006052E08091A2B3C4D5E6F708192A3B4C5D6E7F60
+S315006052F090A1B2C3D4E5F60718293A4B5C6D7E8F50
+S31500605300A0B1C2D3E4F5061728394A5B6C7D8E9F3F
+S31500605310B0C1D2E3F405162738495A6B7C8D9EAF2F
+S31500605320C0D1E2F30415263748596A7B8C9DAEBF1F
+S31500605330D0E1F2031425364758697A8B9CADBECF0F
+S31500605340E0F102132435465768798A9BACBDCEDFFF
+S31500605350F00112233445566778899AABBCCDDEEFEF
+S3150060536000112233445566778899AABBCCDDEEFFDF
+S31500605370102132435465768798A9BACBDCEDFE0FCF
+S315006053802031425364758697A8B9CADBECFD0E1FBF
+S3150060539030415263748596A7B8C9DAEBFC0D1E2FAF
+S315006053A0405162738495A6B7C8D9EAFB0C1D2E3F9F
+S315006053B05061728394A5B6C7D8E9FA0B1C2D3E4F8F
+S315006053C060718293A4B5C6D7E8F90A1B2C3D4E5F7F
+S315006053D0708192A3B4C5D6E7F8091A2B3C4D5E6F6F
+S315006053E08091A2B3C4D5E6F708192A3B4C5D6E7F5F
+S315006053F090A1B2C3D4E5F60718293A4B5C6D7E8F4F
+S31500605400A0B1C2D3E4F5061728394A5B6C7D8E9F3E
+S31500605410B0C1D2E3F405162738495A6B7C8D9EAF2E
+S31500605420C0D1E2F30415263748596A7B8C9DAEBF1E
+S31500605430D0E1F2031425364758697A8B9CADBECF0E
+S31500605440E0F102132435465768798A9BACBDCEDFFE
+S31500605450F00112233445566778899AABBCCDDEEFEE
+S3150060546000112233445566778899AABBCCDDEEFFDE
+S31500605470102132435465768798A9BACBDCEDFE0FCE
+S315006054802031425364758697A8B9CADBECFD0E1FBE
+S3150060549030415263748596A7B8C9DAEBFC0D1E2FAE
+S315006054A0405162738495A6B7C8D9EAFB0C1D2E3F9E
+S315006054B05061728394A5B6C7D8E9FA0B1C2D3E4F8E
+S315006054C060718293A4B5C6D7E8F90A1B2C3D4E5F7E
+S315006054D0708192A3B4C5D6E7F8091A2B3C4D5E6F6E
+S315006054E08091A2B3C4D5E6F708192A3B4C5D6E7F5E
+S315006054F090A1B2C3D4E5F60718293A4B5C6D7E8F4E
+S31500605500A0B1C2D3E4F5061728394A5B6C7D8E9F3D
+S31500605510B0C1D2E3F405162738495A6B7C8D9EAF2D
+S31500605520C0D1E2F30415263748596A7B8C9DAEBF1D
+S31500605530D0E1F2031425364758697A8B9CADBECF0D
+S31500605540E0F102132435465768798A9BACBDCEDFFD
+S31500605550F00112233445566778899AABBCCDDEEFED
+S3150060556000112233445566778899AABBCCDDEEFFDD
+S31500605570102132435465768798A9BACBDCEDFE0FCD
+S315006055802031425364758697A8B9CADBECFD0E1FBD
+S3150060559030415263748596A7B8C9DAEBFC0D1E2FAD
+S315006055A0405162738495A6B7C8D9EAFB0C1D2E3F9D
+S315006055B05061728394A5B6C7D8E9FA0B1C2D3E4F8D
+S315006055C060718293A4B5C6D7E8F90A1B2C3D4E5F7D
+S315006055D0708192A3B4C5D6E7F8091A2B3C4D5E6F6D
+S315006055E08091A2B3C4D5E6F708192A3B4C5D6E7F5D
+S315006055F090A1B2C3D4E5F60718293A4B5C6D7E8F4D
+S31500605600A0B1C2D3E4F5061728394A5B6C7D8E9F3C
+S31500605610B0C1D2E3F405162738495A6B7C8D9EAF2C
+S31500605620C0D1E2F30415263748596A7B8C9DAEBF1C
+S31500605630D0E1F2031425364758697A8B9CADBECF0C
+S31500605640E0F102132435465768798A9BACBDCEDFFC
+S31500605650F00112233445566778899AABBCCDDEEFEC
+S3150060566000112233445566778899AABBCCDDEEFFDC
+S31500605670102132435465768798A9BACBDCEDFE0FCC
+S315006056802031425364758697A8B9CADBECFD0E1FBC
+S3150060569030415263748596A7B8C9DAEBFC0D1E2FAC
+S315006056A0405162738495A6B7C8D9EAFB0C1D2E3F9C
+S315006056B05061728394A5B6C7D8E9FA0B1C2D3E4F8C
+S315006056C060718293A4B5C6D7E8F90A1B2C3D4E5F7C
+S315006056D0708192A3B4C5D6E7F8091A2B3C4D5E6F6C
+S315006056E08091A2B3C4D5E6F708192A3B4C5D6E7F5C
+S315006056F090A1B2C3D4E5F60718293A4B5C6D7E8F4C
+S31500605700A0B1C2D3E4F5061728394A5B6C7D8E9F3B
+S31500605710B0C1D2E3F405162738495A6B7C8D9EAF2B
+S31500605720C0D1E2F30415263748596A7B8C9DAEBF1B
+S31500605730D0E1F2031425364758697A8B9CADBECF0B
+S31500605740E0F102132435465768798A9BACBDCEDFFB
+S31500605750F00112233445566778899AABBCCDDEEFEB
+S3150060576000112233445566778899AABBCCDDEEFFDB
+S31500605770102132435465768798A9BACBDCEDFE0FCB
+S315006057802031425364758697A8B9CADBECFD0E1FBB
+S3150060579030415263748596A7B8C9DAEBFC0D1E2FAB
+S315006057A0405162738495A6B7C8D9EAFB0C1D2E3F9B
+S315006057B05061728394A5B6C7D8E9FA0B1C2D3E4F8B
+S315006057C060718293A4B5C6D7E8F90A1B2C3D4E5F7B
+S315006057D0708192A3B4C5D6E7F8091A2B3C4D5E6F6B
+S315006057E08091A2B3C4D5E6F708192A3B4C5D6E7F5B
+S315006057F090A1B2C3D4E5F60718293A4B5C6D7E8F4B
+S31500605800A0B1C2D3E4F5061728394A5B6C7D8E9F3A
+S31500605810B0C1D2E3F405162738495A6B7C8D9EAF2A
+S31500605820C0D1E2F30415263748596A7B8C9DAEBF1A
+S31500605830D0E1F2031425364758697A8B9CADBECF0A
+S31500605840E0F102132435465768798A9BACBDCEDFFA
+S31500605850F00112233445566778899AABBCCDDEEFEA
+S3150060586000112233445566778899AABBCCDDEEFFDA
+S31500605870102132435465768798A9BACBDCEDFE0FCA
+S315006058802031425364758697A8B9CADBECFD0E1FBA
+S3150060589030415263748596A7B8C9DAEBFC0D1E2FAA
+S315006058A0405162738495A6B7C8D9EAFB0C1D2E3F9A
+S315006058B05061728394A5B6C7D8E9FA0B1C2D3E4F8A
+S315006058C060718293A4B5C6D7E8F90A1B2C3D4E5F7A
+S315006058D0708192A3B4C5D6E7F8091A2B3C4D5E6F6A
+S315006058E08091A2B3C4D5E6F708192A3B4C5D6E7F5A
+S315006058F090A1B2C3D4E5F60718293A4B5C6D7E8F4A
+S31500605900A0B1C2D3E4F5061728394A5B6C7D8E9F39
+S31500605910B0C1D2E3F405162738495A6B7C8D9EAF29
+S31500605920C0D1E2F30415263748596A7B8C9DAEBF19
+S31500605930D0E1F2031425364758697A8B9CADBECF09
+S31500605940E0F102132435465768798A9BACBDCEDFF9
+S31500605950F00112233445566778899AABBCCDDEEFE9
+S3150060596000112233445566778899AABBCCDDEEFFD9
+S31500605970102132435465768798A9BACBDCEDFE0FC9
+S315006059802031425364758697A8B9CADBECFD0E1FB9
+S3150060599030415263748596A7B8C9DAEBFC0D1E2FA9
+S315006059A0405162738495A6B7C8D9EAFB0C1D2E3F99
+S315006059B05061728394A5B6C7D8E9FA0B1C2D3E4F89
+S315006059C060718293A4B5C6D7E8F90A1B2C3D4E5F79
+S315006059D0708192A3B4C5D6E7F8091A2B3C4D5E6F69
+S315006059E08091A2B3C4D5E6F708192A3B4C5D6E7F59
+S315006059F090A1B2C3D4E5F60718293A4B5C6D7E8F49
+S31500605A00A0B1C2D3E4F5061728394A5B6C7D8E9F38
+S31500605A10B0C1D2E3F405162738495A6B7C8D9EAF28
+S31500605A20C0D1E2F30415263748596A7B8C9DAEBF18
+S31500605A30D0E1F2031425364758697A8B9CADBECF08
+S31500605A40E0F102132435465768798A9BACBDCEDFF8
+S31500605A50F00112233445566778899AABBCCDDEEFE8
+S31500605A6000112233445566778899AABBCCDDEEFFD8
+S31500605A70102132435465768798A9BACBDCEDFE0FC8
+S31500605A802031425364758697A8B9CADBECFD0E1FB8
+S31500605A9030415263748596A7B8C9DAEBFC0D1E2FA8
+S31500605AA0405162738495A6B7C8D9EAFB0C1D2E3F98
+S31500605AB05061728394A5B6C7D8E9FA0B1C2D3E4F88
+S31500605AC060718293A4B5C6D7E8F90A1B2C3D4E5F78
+S31500605AD0708192A3B4C5D6E7F8091A2B3C4D5E6F68
+S31500605AE08091A2B3C4D5E6F708192A3B4C5D6E7F58
+S31500605AF090A1B2C3D4E5F60718293A4B5C6D7E8F48
+S31500605B00A0B1C2D3E4F5061728394A5B6C7D8E9F37
+S31500605B10B0C1D2E3F405162738495A6B7C8D9EAF27
+S31500605B20C0D1E2F30415263748596A7B8C9DAEBF17
+S31500605B30D0E1F2031425364758697A8B9CADBECF07
+S31500605B40E0F102132435465768798A9BACBDCEDFF7
+S31500605B50F00112233445566778899AABBCCDDEEFE7
+S31500605B6000112233445566778899AABBCCDDEEFFD7
+S31500605B70102132435465768798A9BACBDCEDFE0FC7
+S31500605B802031425364758697A8B9CADBECFD0E1FB7
+S31500605B9030415263748596A7B8C9DAEBFC0D1E2FA7
+S31500605BA0405162738495A6B7C8D9EAFB0C1D2E3F97
+S31500605BB05061728394A5B6C7D8E9FA0B1C2D3E4F87
+S31500605BC060718293A4B5C6D7E8F90A1B2C3D4E5F77
+S31500605BD0708192A3B4C5D6E7F8091A2B3C4D5E6F67
+S31500605BE08091A2B3C4D5E6F708192A3B4C5D6E7F57
+S31500605BF090A1B2C3D4E5F60718293A4B5C6D7E8F47
+S31500605C00A0B1C2D3E4F5061728394A5B6C7D8E9F36
+S31500605C10B0C1D2E3F405162738495A6B7C8D9EAF26
+S31500605C20C0D1E2F30415263748596A7B8C9DAEBF16
+S31500605C30D0E1F2031425364758697A8B9CADBECF06
+S31500605C40E0F102132435465768798A9BACBDCEDFF6
+S31500605C50F00112233445566778899AABBCCDDEEFE6
+S31500605C6000112233445566778899AABBCCDDEEFFD6
+S31500605C70102132435465768798A9BACBDCEDFE0FC6
+S31500605C802031425364758697A8B9CADBECFD0E1FB6
+S31500605C9030415263748596A7B8C9DAEBFC0D1E2FA6
+S31500605CA0405162738495A6B7C8D9EAFB0C1D2E3F96
+S31500605CB05061728394A5B6C7D8E9FA0B1C2D3E4F86
+S31500605CC060718293A4B5C6D7E8F90A1B2C3D4E5F76
+S31500605CD0708192A3B4C5D6E7F8091A2B3C4D5E6F66
+S31500605CE08091A2B3C4D5E6F708192A3B4C5D6E7F56
+S31500605CF090A1B2C3D4E5F60718293A4B5C6D7E8F46
+S31500605D00A0B1C2D3E4F5061728394A5B6C7D8E9F35
+S31500605D10B0C1D2E3F405162738495A6B7C8D9EAF25
+S31500605D20C0D1E2F30415263748596A7B8C9DAEBF15
+S31500605D30D0E1F2031425364758697A8B9CADBECF05
+S31500605D40E0F102132435465768798A9BACBDCEDFF5
+S31500605D50F00112233445566778899AABBCCDDEEFE5
+S31500605D6000112233445566778899AABBCCDDEEFFD5
+S31500605D70102132435465768798A9BACBDCEDFE0FC5
+S31500605D802031425364758697A8B9CADBECFD0E1FB5
+S31500605D9030415263748596A7B8C9DAEBFC0D1E2FA5
+S31500605DA0405162738495A6B7C8D9EAFB0C1D2E3F95
+S31500605DB05061728394A5B6C7D8E9FA0B1C2D3E4F85
+S31500605DC060718293A4B5C6D7E8F90A1B2C3D4E5F75
+S31500605DD0708192A3B4C5D6E7F8091A2B3C4D5E6F65
+S31500605DE08091A2B3C4D5E6F708192A3B4C5D6E7F55
+S31500605DF090A1B2C3D4E5F60718293A4B5C6D7E8F45
+S31500605E00A0B1C2D3E4F5061728394A5B6C7D8E9F34
+S31500605E10B0C1D2E3F405162738495A6B7C8D9EAF24
+S31500605E20C0D1E2F30415263748596A7B8C9DAEBF14
+S31500605E30D0E1F2031425364758697A8B9CADBECF04
+S31500605E40E0F102132435465768798A9BACBDCEDFF4
+S31500605E50F00112233445566778899AABBCCDDEEFE4
+S31500605E6000112233445566778899AABBCCDDEEFFD4
+S31500605E70102132435465768798A9BACBDCEDFE0FC4
+S31500605E802031425364758697A8B9CADBECFD0E1FB4
+S31500605E9030415263748596A7B8C9DAEBFC0D1E2FA4
+S31500605EA0405162738495A6B7C8D9EAFB0C1D2E3F94
+S31500605EB05061728394A5B6C7D8E9FA0B1C2D3E4F84
+S31500605EC060718293A4B5C6D7E8F90A1B2C3D4E5F74
+S31500605ED0708192A3B4C5D6E7F8091A2B3C4D5E6F64
+S31500605EE08091A2B3C4D5E6F708192A3B4C5D6E7F54
+S31500605EF090A1B2C3D4E5F60718293A4B5C6D7E8F44
+S31500605F00A0B1C2D3E4F5061728394A5B6C7D8E9F33
+S31500605F10B0C1D2E3F405162738495A6B7C8D9EAF23
+S31500605F20C0D1E2F30415263748596A7B8C9DAEBF13
+S31500605F30D0E1F2031425364758697A8B9CADBECF03
+S31500605F40E0F102132435465768798A9BACBDCEDFF3
+S31500605F50F00112233445566778899AABBCCDDEEFE3
+S31500605F6000112233445566778899AABBCCDDEEFFD3
+S31500605F70102132435465768798A9BACBDCEDFE0FC3
+S31500605F802031425364758697A8B9CADBECFD0E1FB3
+S31500605F9030415263748596A7B8C9DAEBFC0D1E2FA3
+S31500605FA0405162738495A6B7C8D9EAFB0C1D2E3F93
+S31500605FB05061728394A5B6C7D8E9FA0B1C2D3E4F83
+S31500605FC060718293A4B5C6D7E8F90A1B2C3D4E5F73
+S31500605FD0708192A3B4C5D6E7F8091A2B3C4D5E6F63
+S31500605FE08091A2B3C4D5E6F708192A3B4C5D6E7F53
+S31500605FF090A1B2C3D4E5F60718293A4B5C6D7E8F43
+S31500606000A0B1C2D3E4F5061728394A5B6C7D8E9F32
+S31500606010B0C1D2E3F405162738495A6B7C8D9EAF22
+S31500606020C0D1E2F30415263748596A7B8C9DAEBF12
+S31500606030D0E1F2031425364758697A8B9CADBECF02
+S31500606040E0F102132435465768798A9BACBDCEDFF2
+S31500606050F00112233445566778899AABBCCDDEEFE2
+S3150060606000112233445566778899AABBCCDDEEFFD2
+S31500606070102132435465768798A9BACBDCEDFE0FC2
+S315006060802031425364758697A8B9CADBECFD0E1FB2
+S3150060609030415263748596A7B8C9DAEBFC0D1E2FA2
+S315006060A0405162738495A6B7C8D9EAFB0C1D2E3F92
+S315006060B05061728394A5B6C7D8E9FA0B1C2D3E4F82
+S315006060C060718293A4B5C6D7E8F90A1B2C3D4E5F72
+S315006060D0708192A3B4C5D6E7F8091A2B3C4D5E6F62
+S315006060E08091A2B3C4D5E6F708192A3B4C5D6E7F52
+S315006060F090A1B2C3D4E5F60718293A4B5C6D7E8F42
+S31500606100A0B1C2D3E4F5061728394A5B6C7D8E9F31
+S31500606110B0C1D2E3F405162738495A6B7C8D9EAF21
+S31500606120C0D1E2F30415263748596A7B8C9DAEBF11
+S31500606130D0E1F2031425364758697A8B9CADBECF01
+S31500606140E0F102132435465768798A9BACBDCEDFF1
+S31500606150F00112233445566778899AABBCCDDEEFE1
+S3150060616000112233445566778899AABBCCDDEEFFD1
+S31500606170102132435465768798A9BACBDCEDFE0FC1
+S315006061802031425364758697A8B9CADBECFD0E1FB1
+S3150060619030415263748596A7B8C9DAEBFC0D1E2FA1
+S315006061A0405162738495A6B7C8D9EAFB0C1D2E3F91
+S315006061B05061728394A5B6C7D8E9FA0B1C2D3E4F81
+S315006061C060718293A4B5C6D7E8F90A1B2C3D4E5F71
+S315006061D0708192A3B4C5D6E7F8091A2B3C4D5E6F61
+S315006061E08091A2B3C4D5E6F708192A3B4C5D6E7F51
+S315006061F090A1B2C3D4E5F60718293A4B5C6D7E8F41
+S31500606200A0B1C2D3E4F5061728394A5B6C7D8E9F30
+S31500606210B0C1D2E3F405162738495A6B7C8D9EAF20
+S31500606220C0D1E2F30415263748596A7B8C9DAEBF10
+S31500606230D0E1F2031425364758697A8B9CADBECF00
+S31500606240E0F102132435465768798A9BACBDCEDFF0
+S31500606250F00112233445566778899AABBCCDDEEFE0
+S3150060626000112233445566778899AABBCCDDEEFFD0
+S31500606270102132435465768798A9BACBDCEDFE0FC0
+S315006062802031425364758697A8B9CADBECFD0E1FB0
+S3150060629030415263748596A7B8C9DAEBFC0D1E2FA0
+S315006062A0405162738495A6B7C8D9EAFB0C1D2E3F90
+S315006062B05061728394A5B6C7D8E9FA0B1C2D3E4F80
+S315006062C060718293A4B5C6D7E8F90A1B2C3D4E5F70
+S315006062D0708192A3B4C5D6E7F8091A2B3C4D5E6F60
+S315006062E08091A2B3C4D5E6F708192A3B4C5D6E7F50
+S315006062F090A1B2C3D4E5F60718293A4B5C6D7E8F40
+S31500606300A0B1C2D3E4F5061728394A5B6C7D8E9F2F
+S31500606310B0C1D2E3F405162738495A6B7C8D9EAF1F
+S31500606320C0D1E2F30415263748596A7B8C9DAEBF0F
+S31500606330D0E1F2031425364758697A8B9CADBECFFF
+S31500606340E0F102132435465768798A9BACBDCEDFEF
+S31500606350F00112233445566778899AABBCCDDEEFDF
+S3150060636000112233445566778899AABBCCDDEEFFCF
+S31500606370102132435465768798A9BACBDCEDFE0FBF
+S315006063802031425364758697A8B9CADBECFD0E1FAF
+S3150060639030415263748596A7B8C9DAEBFC0D1E2F9F
+S315006063A0405162738495A6B7C8D9EAFB0C1D2E3F8F
+S315006063B05061728394A5B6C7D8E9FA0B1C2D3E4F7F
+S315006063C060718293A4B5C6D7E8F90A1B2C3D4E5F6F
+S315006063D0708192A3B4C5D6E7F8091A2B3C4D5E6F5F
+S315006063E08091A2B3C4D5E6F708192A3B4C5D6E7F4F
+S315006063F090A1B2C3D4E5F60718293A4B5C6D7E8F3F
+S31500606400A0B1C2D3E4F5061728394A5B6C7D8E9F2E
+S31500606410B0C1D2E3F405162738495A6B7C8D9EAF1E
+S31500606420C0D1E2F30415263748596A7B8C9DAEBF0E
+S31500606430D0E1F2031425364758697A8B9CADBECFFE
+S31500606440E0F102132435465768798A9BACBDCEDFEE
+S31500606450F00112233445566778899AABBCCDDEEFDE
+S3150060646000112233445566778899AABBCCDDEEFFCE
+S31500606470102132435465768798A9BACBDCEDFE0FBE
+S315006064802031425364758697A8B9CADBECFD0E1FAE
+S3150060649030415263748596A7B8C9DAEBFC0D1E2F9E
+S315006064A0405162738495A6B7C8D9EAFB0C1D2E3F8E
+S315006064B05061728394A5B6C7D8E9FA0B1C2D3E4F7E
+S315006064C060718293A4B5C6D7E8F90A1B2C3D4E5F6E
+S315006064D0708192A3B4C5D6E7F8091A2B3C4D5E6F5E
+S315006064E08091A2B3C4D5E6F708192A3B4C5D6E7F4E
+S315006064F090A1B2C3D4E5F60718293A4B5C6D7E8F3E
+S31500606500A0B1C2D3E4F5061728394A5B6C7D8E9F2D
+S31500606510B0C1D2E3F405162738495A6B7C8D9EAF1D
+S31500606520C0D1E2F30415263748596A7B8C9DAEBF0D
+S31500606530D0E1F2031425364758697A8B9CADBECFFD
+S31500606540E0F102132435465768798A9BACBDCEDFED
+S31500606550F00112233445566778899AABBCCDDEEFDD
+S3150060656000112233445566778899AABBCCDDEEFFCD
+S31500606570102132435465768798A9BACBDCEDFE0FBD
+S315006065802031425364758697A8B9CADBECFD0E1FAD
+S3150060659030415263748596A7B8C9DAEBFC0D1E2F9D
+S315006065A0405162738495A6B7C8D9EAFB0C1D2E3F8D
+S315006065B05061728394A5B6C7D8E9FA0B1C2D3E4F7D
+S315006065C060718293A4B5C6D7E8F90A1B2C3D4E5F6D
+S315006065D0708192A3B4C5D6E7F8091A2B3C4D5E6F5D
+S315006065E08091A2B3C4D5E6F708192A3B4C5D6E7F4D
+S315006065F090A1B2C3D4E5F60718293A4B5C6D7E8F3D
+S31500606600A0B1C2D3E4F5061728394A5B6C7D8E9F2C
+S31500606610B0C1D2E3F405162738495A6B7C8D9EAF1C
+S31500606620C0D1E2F30415263748596A7B8C9DAEBF0C
+S31500606630D0E1F2031425364758697A8B9CADBECFFC
+S31500606640E0F102132435465768798A9BACBDCEDFEC
+S31500606650F00112233445566778899AABBCCDDEEFDC
+S3150060666000112233445566778899AABBCCDDEEFFCC
+S31500606670102132435465768798A9BACBDCEDFE0FBC
+S315006066802031425364758697A8B9CADBECFD0E1FAC
+S3150060669030415263748596A7B8C9DAEBFC0D1E2F9C
+S315006066A0405162738495A6B7C8D9EAFB0C1D2E3F8C
+S315006066B05061728394A5B6C7D8E9FA0B1C2D3E4F7C
+S315006066C060718293A4B5C6D7E8F90A1B2C3D4E5F6C
+S315006066D0708192A3B4C5D6E7F8091A2B3C4D5E6F5C
+S315006066E08091A2B3C4D5E6F708192A3B4C5D6E7F4C
+S315006066F090A1B2C3D4E5F60718293A4B5C6D7E8F3C
+S31500606700A0B1C2D3E4F5061728394A5B6C7D8E9F2B
+S31500606710B0C1D2E3F405162738495A6B7C8D9EAF1B
+S31500606720C0D1E2F30415263748596A7B8C9DAEBF0B
+S31500606730D0E1F2031425364758697A8B9CADBECFFB
+S31500606740E0F102132435465768798A9BACBDCEDFEB
+S31500606750F00112233445566778899AABBCCDDEEFDB
+S3150060676000112233445566778899AABBCCDDEEFFCB
+S31500606770102132435465768798A9BACBDCEDFE0FBB
+S315006067802031425364758697A8B9CADBECFD0E1FAB
+S3150060679030415263748596A7B8C9DAEBFC0D1E2F9B
+S315006067A0405162738495A6B7C8D9EAFB0C1D2E3F8B
+S315006067B05061728394A5B6C7D8E9FA0B1C2D3E4F7B
+S315006067C060718293A4B5C6D7E8F90A1B2C3D4E5F6B
+S315006067D0708192A3B4C5D6E7F8091A2B3C4D5E6F5B
+S315006067E08091A2B3C4D5E6F708192A3B4C5D6E7F4B
+S315006067F090A1B2C3D4E5F60718293A4B5C6D7E8F3B
+S31500606800A0B1C2D3E4F5061728394A5B6C7D8E9F2A
+S31500606810B0C1D2E3F405162738495A6B7C8D9EAF1A
+S31500606820C0D1E2F30415263748596A7B8C9DAEBF0A
+S31500606830D0E1F2031425364758697A8B9CADBECFFA
+S31500606840E0F102132435465768798A9BACBDCEDFEA
+S31500606850F00112233445566778899AABBCCDDEEFDA
+S3150060686000112233445566778899AABBCCDDEEFFCA
+S31500606870102132435465768798A9BACBDCEDFE0FBA
+S315006068802031425364758697A8B9CADBECFD0E1FAA
+S3150060689030415263748596A7B8C9DAEBFC0D1E2F9A
+S315006068A0405162738495A6B7C8D9EAFB0C1D2E3F8A
+S315006068B05061728394A5B6C7D8E9FA0B1C2D3E4F7A
+S315006068C060718293A4B5C6D7E8F90A1B2C3D4E5F6A
+S315006068D0708192A3B4C5D6E7F8091A2B3C4D5E6F5A
+S315006068E08091A2B3C4D5E6F708192A3B4C5D6E7F4A
+S315006068F090A1B2C3D4E5F60718293A4B5C6D7E8F3A
+S31500606900A0B1C2D3E4F5061728394A5B6C7D8E9F29
+S31500606910B0C1D2E3F405162738495A6B7C8D9EAF19
+S31500606920C0D1E2F30415263748596A7B8C9DAEBF09
+S31500606930D0E1F2031425364758697A8B9CADBECFF9
+S31500606940E0F102132435465768798A9BACBDCEDFE9
+S31500606950F00112233445566778899AABBCCDDEEFD9
+S3150060696000112233445566778899AABBCCDDEEFFC9
+S31500606970102132435465768798A9BACBDCEDFE0FB9
+S315006069802031425364758697A8B9CADBECFD0E1FA9
+S3150060699030415263748596A7B8C9DAEBFC0D1E2F99
+S315006069A0405162738495A6B7C8D9EAFB0C1D2E3F89
+S315006069B05061728394A5B6C7D8E9FA0B1C2D3E4F79
+S315006069C060718293A4B5C6D7E8F90A1B2C3D4E5F69
+S315006069D0708192A3B4C5D6E7F8091A2B3C4D5E6F59
+S315006069E08091A2B3C4D5E6F708192A3B4C5D6E7F49
+S315006069F090A1B2C3D4E5F60718293A4B5C6D7E8F39
+S31500606A00A0B1C2D3E4F5061728394A5B6C7D8E9F28
+S31500606A10B0C1D2E3F405162738495A6B7C8D9EAF18
+S31500606A20C0D1E2F30415263748596A7B8C9DAEBF08
+S31500606A30D0E1F2031425364758697A8B9CADBECFF8
+S31500606A40E0F102132435465768798A9BACBDCEDFE8
+S31500606A50F00112233445566778899AABBCCDDEEFD8
+S31500606A6000112233445566778899AABBCCDDEEFFC8
+S31500606A70102132435465768798A9BACBDCEDFE0FB8
+S31500606A802031425364758697A8B9CADBECFD0E1FA8
+S31500606A9030415263748596A7B8C9DAEBFC0D1E2F98
+S31500606AA0405162738495A6B7C8D9EAFB0C1D2E3F88
+S31500606AB05061728394A5B6C7D8E9FA0B1C2D3E4F78
+S31500606AC060718293A4B5C6D7E8F90A1B2C3D4E5F68
+S31500606AD0708192A3B4C5D6E7F8091A2B3C4D5E6F58
+S31500606AE08091A2B3C4D5E6F708192A3B4C5D6E7F48
+S31500606AF090A1B2C3D4E5F60718293A4B5C6D7E8F38
+S31500606B00A0B1C2D3E4F5061728394A5B6C7D8E9F27
+S31500606B10B0C1D2E3F405162738495A6B7C8D9EAF17
+S31500606B20C0D1E2F30415263748596A7B8C9DAEBF07
+S31500606B30D0E1F2031425364758697A8B9CADBECFF7
+S31500606B40E0F102132435465768798A9BACBDCEDFE7
+S31500606B50F00112233445566778899AABBCCDDEEFD7
+S31500606B6000112233445566778899AABBCCDDEEFFC7
+S31500606B70102132435465768798A9BACBDCEDFE0FB7
+S31500606B802031425364758697A8B9CADBECFD0E1FA7
+S31500606B9030415263748596A7B8C9DAEBFC0D1E2F97
+S31500606BA0405162738495A6B7C8D9EAFB0C1D2E3F87
+S31500606BB05061728394A5B6C7D8E9FA0B1C2D3E4F77
+S31500606BC060718293A4B5C6D7E8F90A1B2C3D4E5F67
+S31500606BD0708192A3B4C5D6E7F8091A2B3C4D5E6F57
+S31500606BE08091A2B3C4D5E6F708192A3B4C5D6E7F47
+S31500606BF090A1B2C3D4E5F60718293A4B5C6D7E8F37
+S31500606C00A0B1C2D3E4F5061728394A5B6C7D8E9F26
+S31500606C10B0C1D2E3F405162738495A6B7C8D9EAF16
+S31500606C20C0D1E2F30415263748596A7B8C9DAEBF06
+S31500606C30D0E1F2031425364758697A8B9CADBECFF6
+S31500606C40E0F102132435465768798A9BACBDCEDFE6
+S31500606C50F00112233445566778899AABBCCDDEEFD6
+S31500606C6000112233445566778899AABBCCDDEEFFC6
+S31500606C70102132435465768798A9BACBDCEDFE0FB6
+S31500606C802031425364758697A8B9CADBECFD0E1FA6
+S31500606C9030415263748596A7B8C9DAEBFC0D1E2F96
+S31500606CA0405162738495A6B7C8D9EAFB0C1D2E3F86
+S31500606CB05061728394A5B6C7D8E9FA0B1C2D3E4F76
+S31500606CC060718293A4B5C6D7E8F90A1B2C3D4E5F66
+S31500606CD0708192A3B4C5D6E7F8091A2B3C4D5E6F56
+S31500606CE08091A2B3C4D5E6F708192A3B4C5D6E7F46
+S31500606CF090A1B2C3D4E5F60718293A4B5C6D7E8F36
+S31500606D00A0B1C2D3E4F5061728394A5B6C7D8E9F25
+S31500606D10B0C1D2E3F405162738495A6B7C8D9EAF15
+S31500606D20C0D1E2F30415263748596A7B8C9DAEBF05
+S31500606D30D0E1F2031425364758697A8B9CADBECFF5
+S31500606D40E0F102132435465768798A9BACBDCEDFE5
+S31500606D50F00112233445566778899AABBCCDDEEFD5
+S31500606D6000112233445566778899AABBCCDDEEFFC5
+S31500606D70102132435465768798A9BACBDCEDFE0FB5
+S31500606D802031425364758697A8B9CADBECFD0E1FA5
+S31500606D9030415263748596A7B8C9DAEBFC0D1E2F95
+S31500606DA0405162738495A6B7C8D9EAFB0C1D2E3F85
+S31500606DB05061728394A5B6C7D8E9FA0B1C2D3E4F75
+S31500606DC060718293A4B5C6D7E8F90A1B2C3D4E5F65
+S31500606DD0708192A3B4C5D6E7F8091A2B3C4D5E6F55
+S31500606DE08091A2B3C4D5E6F708192A3B4C5D6E7F45
+S31500606DF090A1B2C3D4E5F60718293A4B5C6D7E8F35
+S31500606E00A0B1C2D3E4F5061728394A5B6C7D8E9F24
+S31500606E10B0C1D2E3F405162738495A6B7C8D9EAF14
+S31500606E20C0D1E2F30415263748596A7B8C9DAEBF04
+S31500606E30D0E1F2031425364758697A8B9CADBECFF4
+S31500606E40E0F102132435465768798A9BACBDCEDFE4
+S31500606E50F00112233445566778899AABBCCDDEEFD4
+S31500606E6000112233445566778899AABBCCDDEEFFC4
+S31500606E70102132435465768798A9BACBDCEDFE0FB4
+S31500606E802031425364758697A8B9CADBECFD0E1FA4
+S31500606E9030415263748596A7B8C9DAEBFC0D1E2F94
+S31500606EA0405162738495A6B7C8D9EAFB0C1D2E3F84
+S31500606EB05061728394A5B6C7D8E9FA0B1C2D3E4F74
+S31500606EC060718293A4B5C6D7E8F90A1B2C3D4E5F64
+S31500606ED0708192A3B4C5D6E7F8091A2B3C4D5E6F54
+S31500606EE08091A2B3C4D5E6F708192A3B4C5D6E7F44
+S31500606EF090A1B2C3D4E5F60718293A4B5C6D7E8F34
+S31500606F00A0B1C2D3E4F5061728394A5B6C7D8E9F23
+S31500606F10B0C1D2E3F405162738495A6B7C8D9EAF13
+S31500606F20C0D1E2F30415263748596A7B8C9DAEBF03
+S31500606F30D0E1F2031425364758697A8B9CADBECFF3
+S31500606F40E0F102132435465768798A9BACBDCEDFE3
+S31500606F50F00112233445566778899AABBCCDDEEFD3
+S31500606F6000112233445566778899AABBCCDDEEFFC3
+S31500606F70102132435465768798A9BACBDCEDFE0FB3
+S31500606F802031425364758697A8B9CADBECFD0E1FA3
+S31500606F9030415263748596A7B8C9DAEBFC0D1E2F93
+S31500606FA0405162738495A6B7C8D9EAFB0C1D2E3F83
+S31500606FB05061728394A5B6C7D8E9FA0B1C2D3E4F73
+S31500606FC060718293A4B5C6D7E8F90A1B2C3D4E5F63
+S31500606FD0708192A3B4C5D6E7F8091A2B3C4D5E6F53
+S31500606FE08091A2B3C4D5E6F708192A3B4C5D6E7F43
+S31500606FF090A1B2C3D4E5F60718293A4B5C6D7E8F33
+S31500607000A0B1C2D3E4F5061728394A5B6C7D8E9F22
+S31500607010B0C1D2E3F405162738495A6B7C8D9EAF12
+S31500607020C0D1E2F30415263748596A7B8C9DAEBF02
+S31500607030D0E1F2031425364758697A8B9CADBECFF2
+S31500607040E0F102132435465768798A9BACBDCEDFE2
+S31500607050F00112233445566778899AABBCCDDEEFD2
+S3150060706000112233445566778899AABBCCDDEEFFC2
+S31500607070102132435465768798A9BACBDCEDFE0FB2
+S315006070802031425364758697A8B9CADBECFD0E1FA2
+S3150060709030415263748596A7B8C9DAEBFC0D1E2F92
+S315006070A0405162738495A6B7C8D9EAFB0C1D2E3F82
+S315006070B05061728394A5B6C7D8E9FA0B1C2D3E4F72
+S315006070C060718293A4B5C6D7E8F90A1B2C3D4E5F62
+S315006070D0708192A3B4C5D6E7F8091A2B3C4D5E6F52
+S315006070E08091A2B3C4D5E6F708192A3B4C5D6E7F42
+S315006070F090A1B2C3D4E5F60718293A4B5C6D7E8F32
+S31500607100A0B1C2D3E4F5061728394A5B6C7D8E9F21
+S31500607110B0C1D2E3F405162738495A6B7C8D9EAF11
+S31500607120C0D1E2F30415263748596A7B8C9DAEBF01
+S31500607130D0E1F2031425364758697A8B9CADBECFF1
+S31500607140E0F102132435465768798A9BACBDCEDFE1
+S31500607150F00112233445566778899AABBCCDDEEFD1
+S3150060716000112233445566778899AABBCCDDEEFFC1
+S31500607170102132435465768798A9BACBDCEDFE0FB1
+S315006071802031425364758697A8B9CADBECFD0E1FA1
+S3150060719030415263748596A7B8C9DAEBFC0D1E2F91
+S315006071A0405162738495A6B7C8D9EAFB0C1D2E3F81
+S315006071B05061728394A5B6C7D8E9FA0B1C2D3E4F71
+S315006071C060718293A4B5C6D7E8F90A1B2C3D4E5F61
+S315006071D0708192A3B4C5D6E7F8091A2B3C4D5E6F51
+S315006071E08091A2B3C4D5E6F708192A3B4C5D6E7F41
+S315006071F090A1B2C3D4E5F60718293A4B5C6D7E8F31
+S31500607200A0B1C2D3E4F5061728394A5B6C7D8E9F20
+S31500607210B0C1D2E3F405162738495A6B7C8D9EAF10
+S31500607220C0D1E2F30415263748596A7B8C9DAEBF00
+S31500607230D0E1F2031425364758697A8B9CADBECFF0
+S31500607240E0F102132435465768798A9BACBDCEDFE0
+S31500607250F00112233445566778899AABBCCDDEEFD0
+S3150060726000112233445566778899AABBCCDDEEFFC0
+S31500607270102132435465768798A9BACBDCEDFE0FB0
+S315006072802031425364758697A8B9CADBECFD0E1FA0
+S3150060729030415263748596A7B8C9DAEBFC0D1E2F90
+S315006072A0405162738495A6B7C8D9EAFB0C1D2E3F80
+S315006072B05061728394A5B6C7D8E9FA0B1C2D3E4F70
+S315006072C060718293A4B5C6D7E8F90A1B2C3D4E5F60
+S315006072D0708192A3B4C5D6E7F8091A2B3C4D5E6F50
+S315006072E08091A2B3C4D5E6F708192A3B4C5D6E7F40
+S315006072F090A1B2C3D4E5F60718293A4B5C6D7E8F30
+S31500607300A0B1C2D3E4F5061728394A5B6C7D8E9F1F
+S31500607310B0C1D2E3F405162738495A6B7C8D9EAF0F
+S31500607320C0D1E2F30415263748596A7B8C9DAEBFFF
+S31500607330D0E1F2031425364758697A8B9CADBECFEF
+S31500607340E0F102132435465768798A9BACBDCEDFDF
+S31500607350F00112233445566778899AABBCCDDEEFCF
+S3150060736000112233445566778899AABBCCDDEEFFBF
+S31500607370102132435465768798A9BACBDCEDFE0FAF
+S315006073802031425364758697A8B9CADBECFD0E1F9F
+S3150060739030415263748596A7B8C9DAEBFC0D1E2F8F
+S315006073A0405162738495A6B7C8D9EAFB0C1D2E3F7F
+S315006073B05061728394A5B6C7D8E9FA0B1C2D3E4F6F
+S315006073C060718293A4B5C6D7E8F90A1B2C3D4E5F5F
+S315006073D0708192A3B4C5D6E7F8091A2B3C4D5E6F4F
+S315006073E08091A2B3C4D5E6F708192A3B4C5D6E7F3F
+S315006073F090A1B2C3D4E5F60718293A4B5C6D7E8F2F
+S31500607400A0B1C2D3E4F5061728394A5B6C7D8E9F1E
+S31500607410B0C1D2E3F405162738495A6B7C8D9EAF0E
+S31500607420C0D1E2F30415263748596A7B8C9DAEBFFE
+S31500607430D0E1F2031425364758697A8B9CADBECFEE
+S31500607440E0F102132435465768798A9BACBDCEDFDE
+S31500607450F00112233445566778899AABBCCDDEEFCE
+S3150060746000112233445566778899AABBCCDDEEFFBE
+S31500607470102132435465768798A9BACBDCEDFE0FAE
+S315006074802031425364758697A8B9CADBECFD0E1F9E
+S3150060749030415263748596A7B8C9DAEBFC0D1E2F8E
+S315006074A0405162738495A6B7C8D9EAFB0C1D2E3F7E
+S315006074B05061728394A5B6C7D8E9FA0B1C2D3E4F6E
+S315006074C060718293A4B5C6D7E8F90A1B2C3D4E5F5E
+S315006074D0708192A3B4C5D6E7F8091A2B3C4D5E6F4E
+S315006074E08091A2B3C4D5E6F708192A3B4C5D6E7F3E
+S315006074F090A1B2C3D4E5F60718293A4B5C6D7E8F2E
+S31500607500A0B1C2D3E4F5061728394A5B6C7D8E9F1D
+S31500607510B0C1D2E3F405162738495A6B7C8D9EAF0D
+S31500607520C0D1E2F30415263748596A7B8C9DAEBFFD
+S31500607530D0E1F2031425364758697A8B9CADBECFED
+S31500607540E0F102132435465768798A9BACBDCEDFDD
+S31500607550F00112233445566778899AABBCCDDEEFCD
+S3150060756000112233445566778899AABBCCDDEEFFBD
+S31500607570102132435465768798A9BACBDCEDFE0FAD
+S315006075802031425364758697A8B9CADBECFD0E1F9D
+S3150060759030415263748596A7B8C9DAEBFC0D1E2F8D
+S315006075A0405162738495A6B7C8D9EAFB0C1D2E3F7D
+S315006075B05061728394A5B6C7D8E9FA0B1C2D3E4F6D
+S315006075C060718293A4B5C6D7E8F90A1B2C3D4E5F5D
+S315006075D0708192A3B4C5D6E7F8091A2B3C4D5E6F4D
+S315006075E08091A2B3C4D5E6F708192A3B4C5D6E7F3D
+S315006075F090A1B2C3D4E5F60718293A4B5C6D7E8F2D
+S31500607600A0B1C2D3E4F5061728394A5B6C7D8E9F1C
+S31500607610B0C1D2E3F405162738495A6B7C8D9EAF0C
+S31500607620C0D1E2F30415263748596A7B8C9DAEBFFC
+S31500607630D0E1F2031425364758697A8B9CADBECFEC
+S31500607640E0F102132435465768798A9BACBDCEDFDC
+S31500607650F00112233445566778899AABBCCDDEEFCC
+S3150060766000112233445566778899AABBCCDDEEFFBC
+S31500607670102132435465768798A9BACBDCEDFE0FAC
+S315006076802031425364758697A8B9CADBECFD0E1F9C
+S3150060769030415263748596A7B8C9DAEBFC0D1E2F8C
+S315006076A0405162738495A6B7C8D9EAFB0C1D2E3F7C
+S315006076B05061728394A5B6C7D8E9FA0B1C2D3E4F6C
+S315006076C060718293A4B5C6D7E8F90A1B2C3D4E5F5C
+S315006076D0708192A3B4C5D6E7F8091A2B3C4D5E6F4C
+S315006076E08091A2B3C4D5E6F708192A3B4C5D6E7F3C
+S315006076F090A1B2C3D4E5F60718293A4B5C6D7E8F2C
+S31500607700A0B1C2D3E4F5061728394A5B6C7D8E9F1B
+S31500607710B0C1D2E3F405162738495A6B7C8D9EAF0B
+S31500607720C0D1E2F30415263748596A7B8C9DAEBFFB
+S31500607730D0E1F2031425364758697A8B9CADBECFEB
+S31500607740E0F102132435465768798A9BACBDCEDFDB
+S31500607750F00112233445566778899AABBCCDDEEFCB
+S3150060776000112233445566778899AABBCCDDEEFFBB
+S31500607770102132435465768798A9BACBDCEDFE0FAB
+S315006077802031425364758697A8B9CADBECFD0E1F9B
+S3150060779030415263748596A7B8C9DAEBFC0D1E2F8B
+S315006077A0405162738495A6B7C8D9EAFB0C1D2E3F7B
+S315006077B05061728394A5B6C7D8E9FA0B1C2D3E4F6B
+S315006077C060718293A4B5C6D7E8F90A1B2C3D4E5F5B
+S315006077D0708192A3B4C5D6E7F8091A2B3C4D5E6F4B
+S315006077E08091A2B3C4D5E6F708192A3B4C5D6E7F3B
+S315006077F090A1B2C3D4E5F60718293A4B5C6D7E8F2B
+S31500607800A0B1C2D3E4F5061728394A5B6C7D8E9F1A
+S31500607810B0C1D2E3F405162738495A6B7C8D9EAF0A
+S31500607820C0D1E2F30415263748596A7B8C9DAEBFFA
+S31500607830D0E1F2031425364758697A8B9CADBECFEA
+S31500607840E0F102132435465768798A9BACBDCEDFDA
+S31500607850F00112233445566778899AABBCCDDEEFCA
+S3150060786000112233445566778899AABBCCDDEEFFBA
+S31500607870102132435465768798A9BACBDCEDFE0FAA
+S315006078802031425364758697A8B9CADBECFD0E1F9A
+S3150060789030415263748596A7B8C9DAEBFC0D1E2F8A
+S315006078A0405162738495A6B7C8D9EAFB0C1D2E3F7A
+S315006078B05061728394A5B6C7D8E9FA0B1C2D3E4F6A
+S315006078C060718293A4B5C6D7E8F90A1B2C3D4E5F5A
+S315006078D0708192A3B4C5D6E7F8091A2B3C4D5E6F4A
+S315006078E08091A2B3C4D5E6F708192A3B4C5D6E7F3A
+S315006078F090A1B2C3D4E5F60718293A4B5C6D7E8F2A
+S31500607900A0B1C2D3E4F5061728394A5B6C7D8E9F19
+S31500607910B0C1D2E3F405162738495A6B7C8D9EAF09
+S31500607920C0D1E2F30415263748596A7B8C9DAEBFF9
+S31500607930D0E1F2031425364758697A8B9CADBECFE9
+S31500607940E0F102132435465768798A9BACBDCEDFD9
+S31500607950F00112233445566778899AABBCCDDEEFC9
+S3150060796000112233445566778899AABBCCDDEEFFB9
+S31500607970102132435465768798A9BACBDCEDFE0FA9
+S315006079802031425364758697A8B9CADBECFD0E1F99
+S3150060799030415263748596A7B8C9DAEBFC0D1E2F89
+S315006079A0405162738495A6B7C8D9EAFB0C1D2E3F79
+S315006079B05061728394A5B6C7D8E9FA0B1C2D3E4F69
+S315006079C060718293A4B5C6D7E8F90A1B2C3D4E5F59
+S315006079D0708192A3B4C5D6E7F8091A2B3C4D5E6F49
+S315006079E08091A2B3C4D5E6F708192A3B4C5D6E7F39
+S315006079F090A1B2C3D4E5F60718293A4B5C6D7E8F29
+S31500607A00A0B1C2D3E4F5061728394A5B6C7D8E9F18
+S31500607A10B0C1D2E3F405162738495A6B7C8D9EAF08
+S31500607A20C0D1E2F30415263748596A7B8C9DAEBFF8
+S31500607A30D0E1F2031425364758697A8B9CADBECFE8
+S31500607A40E0F102132435465768798A9BACBDCEDFD8
+S31500607A50F00112233445566778899AABBCCDDEEFC8
+S31500607A6000112233445566778899AABBCCDDEEFFB8
+S31500607A70102132435465768798A9BACBDCEDFE0FA8
+S31500607A802031425364758697A8B9CADBECFD0E1F98
+S31500607A9030415263748596A7B8C9DAEBFC0D1E2F88
+S31500607AA0405162738495A6B7C8D9EAFB0C1D2E3F78
+S31500607AB05061728394A5B6C7D8E9FA0B1C2D3E4F68
+S31500607AC060718293A4B5C6D7E8F90A1B2C3D4E5F58
+S31500607AD0708192A3B4C5D6E7F8091A2B3C4D5E6F48
+S31500607AE08091A2B3C4D5E6F708192A3B4C5D6E7F38
+S31500607AF090A1B2C3D4E5F60718293A4B5C6D7E8F28
+S31500607B00A0B1C2D3E4F5061728394A5B6C7D8E9F17
+S31500607B10B0C1D2E3F405162738495A6B7C8D9EAF07
+S31500607B20C0D1E2F30415263748596A7B8C9DAEBFF7
+S31500607B30D0E1F2031425364758697A8B9CADBECFE7
+S31500607B40E0F102132435465768798A9BACBDCEDFD7
+S31500607B50F00112233445566778899AABBCCDDEEFC7
+S31500607B6000112233445566778899AABBCCDDEEFFB7
+S31500607B70102132435465768798A9BACBDCEDFE0FA7
+S31500607B802031425364758697A8B9CADBECFD0E1F97
+S31500607B9030415263748596A7B8C9DAEBFC0D1E2F87
+S31500607BA0405162738495A6B7C8D9EAFB0C1D2E3F77
+S31500607BB05061728394A5B6C7D8E9FA0B1C2D3E4F67
+S31500607BC060718293A4B5C6D7E8F90A1B2C3D4E5F57
+S31500607BD0708192A3B4C5D6E7F8091A2B3C4D5E6F47
+S31500607BE08091A2B3C4D5E6F708192A3B4C5D6E7F37
+S31500607BF090A1B2C3D4E5F60718293A4B5C6D7E8F27
+S31500607C00A0B1C2D3E4F5061728394A5B6C7D8E9F16
+S31500607C10B0C1D2E3F405162738495A6B7C8D9EAF06
+S31500607C20C0D1E2F30415263748596A7B8C9DAEBFF6
+S31500607C30D0E1F2031425364758697A8B9CADBECFE6
+S31500607C40E0F102132435465768798A9BACBDCEDFD6
+S31500607C50F00112233445566778899AABBCCDDEEFC6
+S31500607C6000112233445566778899AABBCCDDEEFFB6
+S31500607C70102132435465768798A9BACBDCEDFE0FA6
+S31500607C802031425364758697A8B9CADBECFD0E1F96
+S31500607C9030415263748596A7B8C9DAEBFC0D1E2F86
+S31500607CA0405162738495A6B7C8D9EAFB0C1D2E3F76
+S31500607CB05061728394A5B6C7D8E9FA0B1C2D3E4F66
+S31500607CC060718293A4B5C6D7E8F90A1B2C3D4E5F56
+S31500607CD0708192A3B4C5D6E7F8091A2B3C4D5E6F46
+S31500607CE08091A2B3C4D5E6F708192A3B4C5D6E7F36
+S31500607CF090A1B2C3D4E5F60718293A4B5C6D7E8F26
+S31500607D00A0B1C2D3E4F5061728394A5B6C7D8E9F15
+S31500607D10B0C1D2E3F405162738495A6B7C8D9EAF05
+S31500607D20C0D1E2F30415263748596A7B8C9DAEBFF5
+S31500607D30D0E1F2031425364758697A8B9CADBECFE5
+S31500607D40E0F102132435465768798A9BACBDCEDFD5
+S31500607D50F00112233445566778899AABBCCDDEEFC5
+S31500607D6000112233445566778899AABBCCDDEEFFB5
+S31500607D70102132435465768798A9BACBDCEDFE0FA5
+S31500607D802031425364758697A8B9CADBECFD0E1F95
+S31500607D9030415263748596A7B8C9DAEBFC0D1E2F85
+S31500607DA0405162738495A6B7C8D9EAFB0C1D2E3F75
+S31500607DB05061728394A5B6C7D8E9FA0B1C2D3E4F65
+S31500607DC060718293A4B5C6D7E8F90A1B2C3D4E5F55
+S31500607DD0708192A3B4C5D6E7F8091A2B3C4D5E6F45
+S31500607DE08091A2B3C4D5E6F708192A3B4C5D6E7F35
+S31500607DF090A1B2C3D4E5F60718293A4B5C6D7E8F25
+S31500607E00A0B1C2D3E4F5061728394A5B6C7D8E9F14
+S31500607E10B0C1D2E3F405162738495A6B7C8D9EAF04
+S31500607E20C0D1E2F30415263748596A7B8C9DAEBFF4
+S31500607E30D0E1F2031425364758697A8B9CADBECFE4
+S31500607E40E0F102132435465768798A9BACBDCEDFD4
+S31500607E50F00112233445566778899AABBCCDDEEFC4
+S31500607E6000112233445566778899AABBCCDDEEFFB4
+S31500607E70102132435465768798A9BACBDCEDFE0FA4
+S31500607E802031425364758697A8B9CADBECFD0E1F94
+S31500607E9030415263748596A7B8C9DAEBFC0D1E2F84
+S31500607EA0405162738495A6B7C8D9EAFB0C1D2E3F74
+S31500607EB05061728394A5B6C7D8E9FA0B1C2D3E4F64
+S31500607EC060718293A4B5C6D7E8F90A1B2C3D4E5F54
+S31500607ED0708192A3B4C5D6E7F8091A2B3C4D5E6F44
+S31500607EE08091A2B3C4D5E6F708192A3B4C5D6E7F34
+S31500607EF090A1B2C3D4E5F60718293A4B5C6D7E8F24
+S31500607F00A0B1C2D3E4F5061728394A5B6C7D8E9F13
+S31500607F10B0C1D2E3F405162738495A6B7C8D9EAF03
+S31500607F20C0D1E2F30415263748596A7B8C9DAEBFF3
+S31500607F30D0E1F2031425364758697A8B9CADBECFE3
+S31500607F40E0F102132435465768798A9BACBDCEDFD3
+S31500607F50F00112233445566778899AABBCCDDEEFC3
+S31500607F6000112233445566778899AABBCCDDEEFFB3
+S31500607F70102132435465768798A9BACBDCEDFE0FA3
+S31500607F802031425364758697A8B9CADBECFD0E1F93
+S31500607F9030415263748596A7B8C9DAEBFC0D1E2F83
+S31500607FA0405162738495A6B7C8D9EAFB0C1D2E3F73
+S31500607FB05061728394A5B6C7D8E9FA0B1C2D3E4F63
+S31500607FC060718293A4B5C6D7E8F90A1B2C3D4E5F53
+S31500607FD0708192A3B4C5D6E7F8091A2B3C4D5E6F43
+S31500607FE08091A2B3C4D5E6F708192A3B4C5D6E7F33
+S31500607FF090A1B2C3D4E5F60718293A4B5C6D7E8F23
+S31500608000A0B1C2D3E4F5061728394A5B6C7D8E9F12
+S31500608010B0C1D2E3F405162738495A6B7C8D9EAF02
+S31500608020C0D1E2F30415263748596A7B8C9DAEBFF2
+S31500608030D0E1F2031425364758697A8B9CADBECFE2
+S31500608040E0F102132435465768798A9BACBDCEDFD2
+S31500608050F00112233445566778899AABBCCDDEEFC2
+S3150060806000112233445566778899AABBCCDDEEFFB2
+S31500608070102132435465768798A9BACBDCEDFE0FA2
+S315006080802031425364758697A8B9CADBECFD0E1F92
+S3150060809030415263748596A7B8C9DAEBFC0D1E2F82
+S315006080A0405162738495A6B7C8D9EAFB0C1D2E3F72
+S315006080B05061728394A5B6C7D8E9FA0B1C2D3E4F62
+S315006080C060718293A4B5C6D7E8F90A1B2C3D4E5F52
+S315006080D0708192A3B4C5D6E7F8091A2B3C4D5E6F42
+S315006080E08091A2B3C4D5E6F708192A3B4C5D6E7F32
+S315006080F090A1B2C3D4E5F60718293A4B5C6D7E8F22
+S31500608100A0B1C2D3E4F5061728394A5B6C7D8E9F11
+S31500608110B0C1D2E3F405162738495A6B7C8D9EAF01
+S31500608120C0D1E2F30415263748596A7B8C9DAEBFF1
+S31500608130D0E1F2031425364758697A8B9CADBECFE1
+S31500608140E0F102132435465768798A9BACBDCEDFD1
+S31500608150F00112233445566778899AABBCCDDEEFC1
+S3150060816000112233445566778899AABBCCDDEEFFB1
+S31500608170102132435465768798A9BACBDCEDFE0FA1
+S315006081802031425364758697A8B9CADBECFD0E1F91
+S3150060819030415263748596A7B8C9DAEBFC0D1E2F81
+S315006081A0405162738495A6B7C8D9EAFB0C1D2E3F71
+S315006081B05061728394A5B6C7D8E9FA0B1C2D3E4F61
+S315006081C060718293A4B5C6D7E8F90A1B2C3D4E5F51
+S315006081D0708192A3B4C5D6E7F8091A2B3C4D5E6F41
+S315006081E08091A2B3C4D5E6F708192A3B4C5D6E7F31
+S315006081F090A1B2C3D4E5F60718293A4B5C6D7E8F21
+S31500608200A0B1C2D3E4F5061728394A5B6C7D8E9F10
+S31500608210B0C1D2E3F405162738495A6B7C8D9EAF00
+S31500608220C0D1E2F30415263748596A7B8C9DAEBFF0
+S31500608230D0E1F2031425364758697A8B9CADBECFE0
+S31500608240E0F102132435465768798A9BACBDCEDFD0
+S31500608250F00112233445566778899AABBCCDDEEFC0
+S3150060826000112233445566778899AABBCCDDEEFFB0
+S31500608270102132435465768798A9BACBDCEDFE0FA0
+S315006082802031425364758697A8B9CADBECFD0E1F90
+S3150060829030415263748596A7B8C9DAEBFC0D1E2F80
+S315006082A0405162738495A6B7C8D9EAFB0C1D2E3F70
+S315006082B05061728394A5B6C7D8E9FA0B1C2D3E4F60
+S315006082C060718293A4B5C6D7E8F90A1B2C3D4E5F50
+S315006082D0708192A3B4C5D6E7F8091A2B3C4D5E6F40
+S315006082E08091A2B3C4D5E6F708192A3B4C5D6E7F30
+S315006082F090A1B2C3D4E5F60718293A4B5C6D7E8F20
+S31500608300A0B1C2D3E4F5061728394A5B6C7D8E9F0F
+S31500608310B0C1D2E3F405162738495A6B7C8D9EAFFF
+S31500608320C0D1E2F30415263748596A7B8C9DAEBFEF
+S31500608330D0E1F2031425364758697A8B9CADBECFDF
+S31500608340E0F102132435465768798A9BACBDCEDFCF
+S31500608350F00112233445566778899AABBCCDDEEFBF
+S3150060836000112233445566778899AABBCCDDEEFFAF
+S31500608370102132435465768798A9BACBDCEDFE0F9F
+S315006083802031425364758697A8B9CADBECFD0E1F8F
+S3150060839030415263748596A7B8C9DAEBFC0D1E2F7F
+S315006083A0405162738495A6B7C8D9EAFB0C1D2E3F6F
+S315006083B05061728394A5B6C7D8E9FA0B1C2D3E4F5F
+S315006083C060718293A4B5C6D7E8F90A1B2C3D4E5F4F
+S315006083D0708192A3B4C5D6E7F8091A2B3C4D5E6F3F
+S315006083E08091A2B3C4D5E6F708192A3B4C5D6E7F2F
+S315006083F090A1B2C3D4E5F60718293A4B5C6D7E8F1F
+S31500608400A0B1C2D3E4F5061728394A5B6C7D8E9F0E
+S31500608410B0C1D2E3F405162738495A6B7C8D9EAFFE
+S31500608420C0D1E2F30415263748596A7B8C9DAEBFEE
+S31500608430D0E1F2031425364758697A8B9CADBECFDE
+S31500608440E0F102132435465768798A9BACBDCEDFCE
+S31500608450F00112233445566778899AABBCCDDEEFBE
+S3150060846000112233445566778899AABBCCDDEEFFAE
+S31500608470102132435465768798A9BACBDCEDFE0F9E
+S315006084802031425364758697A8B9CADBECFD0E1F8E
+S3150060849030415263748596A7B8C9DAEBFC0D1E2F7E
+S315006084A0405162738495A6B7C8D9EAFB0C1D2E3F6E
+S315006084B05061728394A5B6C7D8E9FA0B1C2D3E4F5E
+S315006084C060718293A4B5C6D7E8F90A1B2C3D4E5F4E
+S315006084D0708192A3B4C5D6E7F8091A2B3C4D5E6F3E
+S315006084E08091A2B3C4D5E6F708192A3B4C5D6E7F2E
+S315006084F090A1B2C3D4E5F60718293A4B5C6D7E8F1E
+S31500608500A0B1C2D3E4F5061728394A5B6C7D8E9F0D
+S31500608510B0C1D2E3F405162738495A6B7C8D9EAFFD
+S31500608520C0D1E2F30415263748596A7B8C9DAEBFED
+S31500608530D0E1F2031425364758697A8B9CADBECFDD
+S31500608540E0F102132435465768798A9BACBDCEDFCD
+S31500608550F00112233445566778899AABBCCDDEEFBD
+S3150060856000112233445566778899AABBCCDDEEFFAD
+S31500608570102132435465768798A9BACBDCEDFE0F9D
+S315006085802031425364758697A8B9CADBECFD0E1F8D
+S3150060859030415263748596A7B8C9DAEBFC0D1E2F7D
+S315006085A0405162738495A6B7C8D9EAFB0C1D2E3F6D
+S315006085B05061728394A5B6C7D8E9FA0B1C2D3E4F5D
+S315006085C060718293A4B5C6D7E8F90A1B2C3D4E5F4D
+S315006085D0708192A3B4C5D6E7F8091A2B3C4D5E6F3D
+S315006085E08091A2B3C4D5E6F708192A3B4C5D6E7F2D
+S315006085F090A1B2C3D4E5F60718293A4B5C6D7E8F1D
+S31500608600A0B1C2D3E4F5061728394A5B6C7D8E9F0C
+S31500608610B0C1D2E3F405162738495A6B7C8D9EAFFC
+S31500608620C0D1E2F30415263748596A7B8C9DAEBFEC
+S31500608630D0E1F2031425364758697A8B9CADBECFDC
+S31500608640E0F102132435465768798A9BACBDCEDFCC
+S31500608650F00112233445566778899AABBCCDDEEFBC
+S3150060866000112233445566778899AABBCCDDEEFFAC
+S31500608670102132435465768798A9BACBDCEDFE0F9C
+S315006086802031425364758697A8B9CADBECFD0E1F8C
+S3150060869030415263748596A7B8C9DAEBFC0D1E2F7C
+S315006086A0405162738495A6B7C8D9EAFB0C1D2E3F6C
+S315006086B05061728394A5B6C7D8E9FA0B1C2D3E4F5C
+S315006086C060718293A4B5C6D7E8F90A1B2C3D4E5F4C
+S315006086D0708192A3B4C5D6E7F8091A2B3C4D5E6F3C
+S315006086E08091A2B3C4D5E6F708192A3B4C5D6E7F2C
+S315006086F090A1B2C3D4E5F60718293A4B5C6D7E8F1C
+S31500608700A0B1C2D3E4F5061728394A5B6C7D8E9F0B
+S31500608710B0C1D2E3F405162738495A6B7C8D9EAFFB
+S31500608720C0D1E2F30415263748596A7B8C9DAEBFEB
+S31500608730D0E1F2031425364758697A8B9CADBECFDB
+S31500608740E0F102132435465768798A9BACBDCEDFCB
+S31500608750F00112233445566778899AABBCCDDEEFBB
+S3150060876000112233445566778899AABBCCDDEEFFAB
+S31500608770102132435465768798A9BACBDCEDFE0F9B
+S315006087802031425364758697A8B9CADBECFD0E1F8B
+S3150060879030415263748596A7B8C9DAEBFC0D1E2F7B
+S315006087A0405162738495A6B7C8D9EAFB0C1D2E3F6B
+S315006087B05061728394A5B6C7D8E9FA0B1C2D3E4F5B
+S315006087C060718293A4B5C6D7E8F90A1B2C3D4E5F4B
+S315006087D0708192A3B4C5D6E7F8091A2B3C4D5E6F3B
+S315006087E08091A2B3C4D5E6F708192A3B4C5D6E7F2B
+S315006087F090A1B2C3D4E5F60718293A4B5C6D7E8F1B
+S31500608800A0B1C2D3E4F5061728394A5B6C7D8E9F0A
+S31500608810B0C1D2E3F405162738495A6B7C8D9EAFFA
+S31500608820C0D1E2F30415263748596A7B8C9DAEBFEA
+S31500608830D0E1F2031425364758697A8B9CADBECFDA
+S31500608840E0F102132435465768798A9BACBDCEDFCA
+S31500608850F00112233445566778899AABBCCDDEEFBA
+S3150060886000112233445566778899AABBCCDDEEFFAA
+S31500608870102132435465768798A9BACBDCEDFE0F9A
+S315006088802031425364758697A8B9CADBECFD0E1F8A
+S3150060889030415263748596A7B8C9DAEBFC0D1E2F7A
+S315006088A0405162738495A6B7C8D9EAFB0C1D2E3F6A
+S315006088B05061728394A5B6C7D8E9FA0B1C2D3E4F5A
+S315006088C060718293A4B5C6D7E8F90A1B2C3D4E5F4A
+S315006088D0708192A3B4C5D6E7F8091A2B3C4D5E6F3A
+S315006088E08091A2B3C4D5E6F708192A3B4C5D6E7F2A
+S315006088F090A1B2C3D4E5F60718293A4B5C6D7E8F1A
+S31500608900A0B1C2D3E4F5061728394A5B6C7D8E9F09
+S31500608910B0C1D2E3F405162738495A6B7C8D9EAFF9
+S31500608920C0D1E2F30415263748596A7B8C9DAEBFE9
+S31500608930D0E1F2031425364758697A8B9CADBECFD9
+S31500608940E0F102132435465768798A9BACBDCEDFC9
+S31500608950F00112233445566778899AABBCCDDEEFB9
+S3150060896000112233445566778899AABBCCDDEEFFA9
+S31500608970102132435465768798A9BACBDCEDFE0F99
+S315006089802031425364758697A8B9CADBECFD0E1F89
+S3150060899030415263748596A7B8C9DAEBFC0D1E2F79
+S315006089A0405162738495A6B7C8D9EAFB0C1D2E3F69
+S315006089B05061728394A5B6C7D8E9FA0B1C2D3E4F59
+S315006089C060718293A4B5C6D7E8F90A1B2C3D4E5F49
+S315006089D0708192A3B4C5D6E7F8091A2B3C4D5E6F39
+S315006089E08091A2B3C4D5E6F708192A3B4C5D6E7F29
+S315006089F090A1B2C3D4E5F60718293A4B5C6D7E8F19
+S31500608A00A0B1C2D3E4F5061728394A5B6C7D8E9F08
+S31500608A10B0C1D2E3F405162738495A6B7C8D9EAFF8
+S31500608A20C0D1E2F30415263748596A7B8C9DAEBFE8
+S31500608A30D0E1F2031425364758697A8B9CADBECFD8
+S31500608A40E0F102132435465768798A9BACBDCEDFC8
+S31500608A50F00112233445566778899AABBCCDDEEFB8
+S31500608A6000112233445566778899AABBCCDDEEFFA8
+S31500608A70102132435465768798A9BACBDCEDFE0F98
+S31500608A802031425364758697A8B9CADBECFD0E1F88
+S31500608A9030415263748596A7B8C9DAEBFC0D1E2F78
+S31500608AA0405162738495A6B7C8D9EAFB0C1D2E3F68
+S31500608AB05061728394A5B6C7D8E9FA0B1C2D3E4F58
+S31500608AC060718293A4B5C6D7E8F90A1B2C3D4E5F48
+S31500608AD0708192A3B4C5D6E7F8091A2B3C4D5E6F38
+S31500608AE08091A2B3C4D5E6F708192A3B4C5D6E7F28
+S31500608AF090A1B2C3D4E5F60718293A4B5C6D7E8F18
+S31500608B00A0B1C2D3E4F5061728394A5B6C7D8E9F07
+S31500608B10B0C1D2E3F405162738495A6B7C8D9EAFF7
+S31500608B20C0D1E2F30415263748596A7B8C9DAEBFE7
+S31500608B30D0E1F2031425364758697A8B9CADBECFD7
+S31500608B40E0F102132435465768798A9BACBDCEDFC7
+S31500608B50F00112233445566778899AABBCCDDEEFB7
+S31500608B6000112233445566778899AABBCCDDEEFFA7
+S31500608B70102132435465768798A9BACBDCEDFE0F97
+S31500608B802031425364758697A8B9CADBECFD0E1F87
+S31500608B9030415263748596A7B8C9DAEBFC0D1E2F77
+S31500608BA0405162738495A6B7C8D9EAFB0C1D2E3F67
+S31500608BB05061728394A5B6C7D8E9FA0B1C2D3E4F57
+S31500608BC060718293A4B5C6D7E8F90A1B2C3D4E5F47
+S31500608BD0708192A3B4C5D6E7F8091A2B3C4D5E6F37
+S31500608BE08091A2B3C4D5E6F708192A3B4C5D6E7F27
+S31500608BF090A1B2C3D4E5F60718293A4B5C6D7E8F17
+S31500608C00A0B1C2D3E4F5061728394A5B6C7D8E9F06
+S31500608C10B0C1D2E3F405162738495A6B7C8D9EAFF6
+S31500608C20C0D1E2F30415263748596A7B8C9DAEBFE6
+S31500608C30D0E1F2031425364758697A8B9CADBECFD6
+S31500608C40E0F102132435465768798A9BACBDCEDFC6
+S31500608C50F00112233445566778899AABBCCDDEEFB6
+S31500608C6000112233445566778899AABBCCDDEEFFA6
+S31500608C70102132435465768798A9BACBDCEDFE0F96
+S31500608C802031425364758697A8B9CADBECFD0E1F86
+S31500608C9030415263748596A7B8C9DAEBFC0D1E2F76
+S31500608CA0405162738495A6B7C8D9EAFB0C1D2E3F66
+S31500608CB05061728394A5B6C7D8E9FA0B1C2D3E4F56
+S31500608CC060718293A4B5C6D7E8F90A1B2C3D4E5F46
+S31500608CD0708192A3B4C5D6E7F8091A2B3C4D5E6F36
+S31500608CE08091A2B3C4D5E6F708192A3B4C5D6E7F26
+S31500608CF090A1B2C3D4E5F60718293A4B5C6D7E8F16
+S31500608D00A0B1C2D3E4F5061728394A5B6C7D8E9F05
+S31500608D10B0C1D2E3F405162738495A6B7C8D9EAFF5
+S31500608D20C0D1E2F30415263748596A7B8C9DAEBFE5
+S31500608D30D0E1F2031425364758697A8B9CADBECFD5
+S31500608D40E0F102132435465768798A9BACBDCEDFC5
+S31500608D50F00112233445566778899AABBCCDDEEFB5
+S31500608D6000112233445566778899AABBCCDDEEFFA5
+S31500608D70102132435465768798A9BACBDCEDFE0F95
+S31500608D802031425364758697A8B9CADBECFD0E1F85
+S31500608D9030415263748596A7B8C9DAEBFC0D1E2F75
+S31500608DA0405162738495A6B7C8D9EAFB0C1D2E3F65
+S31500608DB05061728394A5B6C7D8E9FA0B1C2D3E4F55
+S31500608DC060718293A4B5C6D7E8F90A1B2C3D4E5F45
+S31500608DD0708192A3B4C5D6E7F8091A2B3C4D5E6F35
+S31500608DE08091A2B3C4D5E6F708192A3B4C5D6E7F25
+S31500608DF090A1B2C3D4E5F60718293A4B5C6D7E8F15
+S31500608E00A0B1C2D3E4F5061728394A5B6C7D8E9F04
+S31500608E10B0C1D2E3F405162738495A6B7C8D9EAFF4
+S31500608E20C0D1E2F30415263748596A7B8C9DAEBFE4
+S31500608E30D0E1F2031425364758697A8B9CADBECFD4
+S31500608E40E0F102132435465768798A9BACBDCEDFC4
+S31500608E50F00112233445566778899AABBCCDDEEFB4
+S31500608E6000112233445566778899AABBCCDDEEFFA4
+S31500608E70102132435465768798A9BACBDCEDFE0F94
+S31500608E802031425364758697A8B9CADBECFD0E1F84
+S31500608E9030415263748596A7B8C9DAEBFC0D1E2F74
+S31500608EA0405162738495A6B7C8D9EAFB0C1D2E3F64
+S31500608EB05061728394A5B6C7D8E9FA0B1C2D3E4F54
+S31500608EC060718293A4B5C6D7E8F90A1B2C3D4E5F44
+S31500608ED0708192A3B4C5D6E7F8091A2B3C4D5E6F34
+S31500608EE08091A2B3C4D5E6F708192A3B4C5D6E7F24
+S31500608EF090A1B2C3D4E5F60718293A4B5C6D7E8F14
+S31500608F00A0B1C2D3E4F5061728394A5B6C7D8E9F03
+S31500608F10B0C1D2E3F405162738495A6B7C8D9EAFF3
+S31500608F20C0D1E2F30415263748596A7B8C9DAEBFE3
+S31500608F30D0E1F2031425364758697A8B9CADBECFD3
+S31500608F40E0F102132435465768798A9BACBDCEDFC3
+S31500608F50F00112233445566778899AABBCCDDEEFB3
+S31500608F6000112233445566778899AABBCCDDEEFFA3
+S31500608F70102132435465768798A9BACBDCEDFE0F93
+S31500608F802031425364758697A8B9CADBECFD0E1F83
+S31500608F9030415263748596A7B8C9DAEBFC0D1E2F73
+S31500608FA0405162738495A6B7C8D9EAFB0C1D2E3F63
+S31500608FB05061728394A5B6C7D8E9FA0B1C2D3E4F53
+S31500608FC060718293A4B5C6D7E8F90A1B2C3D4E5F43
+S31500608FD0708192A3B4C5D6E7F8091A2B3C4D5E6F33
+S31500608FE08091A2B3C4D5E6F708192A3B4C5D6E7F23
+S31500608FF090A1B2C3D4E5F60718293A4B5C6D7E8F13
+S31500609000A0B1C2D3E4F5061728394A5B6C7D8E9F02
+S31500609010B0C1D2E3F405162738495A6B7C8D9EAFF2
+S31500609020C0D1E2F30415263748596A7B8C9DAEBFE2
+S31500609030D0E1F2031425364758697A8B9CADBECFD2
+S31500609040E0F102132435465768798A9BACBDCEDFC2
+S31500609050F00112233445566778899AABBCCDDEEFB2
+S3150060906000112233445566778899AABBCCDDEEFFA2
+S31500609070102132435465768798A9BACBDCEDFE0F92
+S315006090802031425364758697A8B9CADBECFD0E1F82
+S3150060909030415263748596A7B8C9DAEBFC0D1E2F72
+S315006090A0405162738495A6B7C8D9EAFB0C1D2E3F62
+S315006090B05061728394A5B6C7D8E9FA0B1C2D3E4F52
+S315006090C060718293A4B5C6D7E8F90A1B2C3D4E5F42
+S315006090D0708192A3B4C5D6E7F8091A2B3C4D5E6F32
+S315006090E08091A2B3C4D5E6F708192A3B4C5D6E7F22
+S315006090F090A1B2C3D4E5F60718293A4B5C6D7E8F12
+S31500609100A0B1C2D3E4F5061728394A5B6C7D8E9F01
+S31500609110B0C1D2E3F405162738495A6B7C8D9EAFF1
+S31500609120C0D1E2F30415263748596A7B8C9DAEBFE1
+S31500609130D0E1F2031425364758697A8B9CADBECFD1
+S31500609140E0F102132435465768798A9BACBDCEDFC1
+S31500609150F00112233445566778899AABBCCDDEEFB1
+S3150060916000112233445566778899AABBCCDDEEFFA1
+S31500609170102132435465768798A9BACBDCEDFE0F91
+S315006091802031425364758697A8B9CADBECFD0E1F81
+S3150060919030415263748596A7B8C9DAEBFC0D1E2F71
+S315006091A0405162738495A6B7C8D9EAFB0C1D2E3F61
+S315006091B05061728394A5B6C7D8E9FA0B1C2D3E4F51
+S315006091C060718293A4B5C6D7E8F90A1B2C3D4E5F41
+S315006091D0708192A3B4C5D6E7F8091A2B3C4D5E6F31
+S315006091E08091A2B3C4D5E6F708192A3B4C5D6E7F21
+S315006091F090A1B2C3D4E5F60718293A4B5C6D7E8F11
+S31500609200A0B1C2D3E4F5061728394A5B6C7D8E9F00
+S31500609210B0C1D2E3F405162738495A6B7C8D9EAFF0
+S31500609220C0D1E2F30415263748596A7B8C9DAEBFE0
+S31500609230D0E1F2031425364758697A8B9CADBECFD0
+S31500609240E0F102132435465768798A9BACBDCEDFC0
+S31500609250F00112233445566778899AABBCCDDEEFB0
+S3150060926000112233445566778899AABBCCDDEEFFA0
+S31500609270102132435465768798A9BACBDCEDFE0F90
+S315006092802031425364758697A8B9CADBECFD0E1F80
+S3150060929030415263748596A7B8C9DAEBFC0D1E2F70
+S315006092A0405162738495A6B7C8D9EAFB0C1D2E3F60
+S315006092B05061728394A5B6C7D8E9FA0B1C2D3E4F50
+S315006092C060718293A4B5C6D7E8F90A1B2C3D4E5F40
+S315006092D0708192A3B4C5D6E7F8091A2B3C4D5E6F30
+S315006092E08091A2B3C4D5E6F708192A3B4C5D6E7F20
+S315006092F090A1B2C3D4E5F60718293A4B5C6D7E8F10
+S31500609300A0B1C2D3E4F5061728394A5B6C7D8E9FFF
+S31500609310B0C1D2E3F405162738495A6B7C8D9EAFEF
+S31500609320C0D1E2F30415263748596A7B8C9DAEBFDF
+S31500609330D0E1F2031425364758697A8B9CADBECFCF
+S31500609340E0F102132435465768798A9BACBDCEDFBF
+S31500609350F00112233445566778899AABBCCDDEEFAF
+S3150060936000112233445566778899AABBCCDDEEFF9F
+S31500609370102132435465768798A9BACBDCEDFE0F8F
+S315006093802031425364758697A8B9CADBECFD0E1F7F
+S3150060939030415263748596A7B8C9DAEBFC0D1E2F6F
+S315006093A0405162738495A6B7C8D9EAFB0C1D2E3F5F
+S315006093B05061728394A5B6C7D8E9FA0B1C2D3E4F4F
+S315006093C060718293A4B5C6D7E8F90A1B2C3D4E5F3F
+S315006093D0708192A3B4C5D6E7F8091A2B3C4D5E6F2F
+S315006093E08091A2B3C4D5E6F708192A3B4C5D6E7F1F
+S315006093F090A1B2C3D4E5F60718293A4B5C6D7E8F0F
+S31500609400A0B1C2D3E4F5061728394A5B6C7D8E9FFE
+S31500609410B0C1D2E3F405162738495A6B7C8D9EAFEE
+S31500609420C0D1E2F30415263748596A7B8C9DAEBFDE
+S31500609430D0E1F2031425364758697A8B9CADBECFCE
+S31500609440E0F102132435465768798A9BACBDCEDFBE
+S31500609450F00112233445566778899AABBCCDDEEFAE
+S3150060946000112233445566778899AABBCCDDEEFF9E
+S31500609470102132435465768798A9BACBDCEDFE0F8E
+S315006094802031425364758697A8B9CADBECFD0E1F7E
+S3150060949030415263748596A7B8C9DAEBFC0D1E2F6E
+S315006094A0405162738495A6B7C8D9EAFB0C1D2E3F5E
+S315006094B05061728394A5B6C7D8E9FA0B1C2D3E4F4E
+S315006094C060718293A4B5C6D7E8F90A1B2C3D4E5F3E
+S315006094D0708192A3B4C5D6E7F8091A2B3C4D5E6F2E
+S315006094E08091A2B3C4D5E6F708192A3B4C5D6E7F1E
+S315006094F090A1B2C3D4E5F60718293A4B5C6D7E8F0E
+S31500609500A0B1C2D3E4F5061728394A5B6C7D8E9FFD
+S31500609510B0C1D2E3F405162738495A6B7C8D9EAFED
+S31500609520C0D1E2F30415263748596A7B8C9DAEBFDD
+S31500609530D0E1F2031425364758697A8B9CADBECFCD
+S31500609540E0F102132435465768798A9BACBDCEDFBD
+S31500609550F00112233445566778899AABBCCDDEEFAD
+S3150060956000112233445566778899AABBCCDDEEFF9D
+S31500609570102132435465768798A9BACBDCEDFE0F8D
+S315006095802031425364758697A8B9CADBECFD0E1F7D
+S3150060959030415263748596A7B8C9DAEBFC0D1E2F6D
+S315006095A0405162738495A6B7C8D9EAFB0C1D2E3F5D
+S315006095B05061728394A5B6C7D8E9FA0B1C2D3E4F4D
+S315006095C060718293A4B5C6D7E8F90A1B2C3D4E5F3D
+S315006095D0708192A3B4C5D6E7F8091A2B3C4D5E6F2D
+S315006095E08091A2B3C4D5E6F708192A3B4C5D6E7F1D
+S315006095F090A1B2C3D4E5F60718293A4B5C6D7E8F0D
+S31500609600A0B1C2D3E4F5061728394A5B6C7D8E9FFC
+S31500609610B0C1D2E3F405162738495A6B7C8D9EAFEC
+S31500609620C0D1E2F30415263748596A7B8C9DAEBFDC
+S31500609630D0E1F2031425364758697A8B9CADBECFCC
+S31500609640E0F102132435465768798A9BACBDCEDFBC
+S31500609650F00112233445566778899AABBCCDDEEFAC
+S3150060966000112233445566778899AABBCCDDEEFF9C
+S31500609670102132435465768798A9BACBDCEDFE0F8C
+S315006096802031425364758697A8B9CADBECFD0E1F7C
+S3150060969030415263748596A7B8C9DAEBFC0D1E2F6C
+S315006096A0405162738495A6B7C8D9EAFB0C1D2E3F5C
+S315006096B05061728394A5B6C7D8E9FA0B1C2D3E4F4C
+S315006096C060718293A4B5C6D7E8F90A1B2C3D4E5F3C
+S315006096D0708192A3B4C5D6E7F8091A2B3C4D5E6F2C
+S315006096E08091A2B3C4D5E6F708192A3B4C5D6E7F1C
+S315006096F090A1B2C3D4E5F60718293A4B5C6D7E8F0C
+S31500609700A0B1C2D3E4F5061728394A5B6C7D8E9FFB
+S31500609710B0C1D2E3F405162738495A6B7C8D9EAFEB
+S31500609720C0D1E2F30415263748596A7B8C9DAEBFDB
+S31500609730D0E1F2031425364758697A8B9CADBECFCB
+S31500609740E0F102132435465768798A9BACBDCEDFBB
+S31500609750F00112233445566778899AABBCCDDEEFAB
+S3150060976000112233445566778899AABBCCDDEEFF9B
+S31500609770102132435465768798A9BACBDCEDFE0F8B
+S315006097802031425364758697A8B9CADBECFD0E1F7B
+S3150060979030415263748596A7B8C9DAEBFC0D1E2F6B
+S315006097A0405162738495A6B7C8D9EAFB0C1D2E3F5B
+S315006097B05061728394A5B6C7D8E9FA0B1C2D3E4F4B
+S315006097C060718293A4B5C6D7E8F90A1B2C3D4E5F3B
+S315006097D0708192A3B4C5D6E7F8091A2B3C4D5E6F2B
+S315006097E08091A2B3C4D5E6F708192A3B4C5D6E7F1B
+S315006097F090A1B2C3D4E5F60718293A4B5C6D7E8F0B
+S31500609800A0B1C2D3E4F5061728394A5B6C7D8E9FFA
+S31500609810B0C1D2E3F405162738495A6B7C8D9EAFEA
+S31500609820C0D1E2F30415263748596A7B8C9DAEBFDA
+S31500609830D0E1F2031425364758697A8B9CADBECFCA
+S31500609840E0F102132435465768798A9BACBDCEDFBA
+S31500609850F00112233445566778899AABBCCDDEEFAA
+S3150060986000112233445566778899AABBCCDDEEFF9A
+S31500609870102132435465768798A9BACBDCEDFE0F8A
+S315006098802031425364758697A8B9CADBECFD0E1F7A
+S3150060989030415263748596A7B8C9DAEBFC0D1E2F6A
+S315006098A0405162738495A6B7C8D9EAFB0C1D2E3F5A
+S315006098B05061728394A5B6C7D8E9FA0B1C2D3E4F4A
+S315006098C060718293A4B5C6D7E8F90A1B2C3D4E5F3A
+S315006098D0708192A3B4C5D6E7F8091A2B3C4D5E6F2A
+S315006098E08091A2B3C4D5E6F708192A3B4C5D6E7F1A
+S315006098F090A1B2C3D4E5F60718293A4B5C6D7E8F0A
+S31500609900A0B1C2D3E4F5061728394A5B6C7D8E9FF9
+S31500609910B0C1D2E3F405162738495A6B7C8D9EAFE9
+S31500609920C0D1E2F30415263748596A7B8C9DAEBFD9
+S31500609930D0E1F2031425364758697A8B9CADBECFC9
+S31500609940E0F102132435465768798A9BACBDCEDFB9
+S31500609950F00112233445566778899AABBCCDDEEFA9
+S3150060996000112233445566778899AABBCCDDEEFF99
+S31500609970102132435465768798A9BACBDCEDFE0F89
+S315006099802031425364758697A8B9CADBECFD0E1F79
+S3150060999030415263748596A7B8C9DAEBFC0D1E2F69
+S315006099A0405162738495A6B7C8D9EAFB0C1D2E3F59
+S315006099B05061728394A5B6C7D8E9FA0B1C2D3E4F49
+S315006099C060718293A4B5C6D7E8F90A1B2C3D4E5F39
+S315006099D0708192A3B4C5D6E7F8091A2B3C4D5E6F29
+S315006099E08091A2B3C4D5E6F708192A3B4C5D6E7F19
+S315006099F090A1B2C3D4E5F60718293A4B5C6D7E8F09
+S31500609A00A0B1C2D3E4F5061728394A5B6C7D8E9FF8
+S31500609A10B0C1D2E3F405162738495A6B7C8D9EAFE8
+S31500609A20C0D1E2F30415263748596A7B8C9DAEBFD8
+S31500609A30D0E1F2031425364758697A8B9CADBECFC8
+S31500609A40E0F102132435465768798A9BACBDCEDFB8
+S31500609A50F00112233445566778899AABBCCDDEEFA8
+S31500609A6000112233445566778899AABBCCDDEEFF98
+S31500609A70102132435465768798A9BACBDCEDFE0F88
+S31500609A802031425364758697A8B9CADBECFD0E1F78
+S31500609A9030415263748596A7B8C9DAEBFC0D1E2F68
+S31500609AA0405162738495A6B7C8D9EAFB0C1D2E3F58
+S31500609AB05061728394A5B6C7D8E9FA0B1C2D3E4F48
+S31500609AC060718293A4B5C6D7E8F90A1B2C3D4E5F38
+S31500609AD0708192A3B4C5D6E7F8091A2B3C4D5E6F28
+S31500609AE08091A2B3C4D5E6F708192A3B4C5D6E7F18
+S31500609AF090A1B2C3D4E5F60718293A4B5C6D7E8F08
+S31500609B00A0B1C2D3E4F5061728394A5B6C7D8E9FF7
+S31500609B10B0C1D2E3F405162738495A6B7C8D9EAFE7
+S31500609B20C0D1E2F30415263748596A7B8C9DAEBFD7
+S31500609B30D0E1F2031425364758697A8B9CADBECFC7
+S31500609B40E0F102132435465768798A9BACBDCEDFB7
+S31500609B50F00112233445566778899AABBCCDDEEFA7
+S31500609B6000112233445566778899AABBCCDDEEFF97
+S31500609B70102132435465768798A9BACBDCEDFE0F87
+S31500609B802031425364758697A8B9CADBECFD0E1F77
+S31500609B9030415263748596A7B8C9DAEBFC0D1E2F67
+S31500609BA0405162738495A6B7C8D9EAFB0C1D2E3F57
+S31500609BB05061728394A5B6C7D8E9FA0B1C2D3E4F47
+S31500609BC060718293A4B5C6D7E8F90A1B2C3D4E5F37
+S31500609BD0708192A3B4C5D6E7F8091A2B3C4D5E6F27
+S31500609BE08091A2B3C4D5E6F708192A3B4C5D6E7F17
+S31500609BF090A1B2C3D4E5F60718293A4B5C6D7E8F07
+S31500609C00A0B1C2D3E4F5061728394A5B6C7D8E9FF6
+S31500609C10B0C1D2E3F405162738495A6B7C8D9EAFE6
+S31500609C20C0D1E2F30415263748596A7B8C9DAEBFD6
+S31500609C30D0E1F2031425364758697A8B9CADBECFC6
+S31500609C40E0F102132435465768798A9BACBDCEDFB6
+S31500609C50F00112233445566778899AABBCCDDEEFA6
+S31500609C6000112233445566778899AABBCCDDEEFF96
+S31500609C70102132435465768798A9BACBDCEDFE0F86
+S31500609C802031425364758697A8B9CADBECFD0E1F76
+S31500609C9030415263748596A7B8C9DAEBFC0D1E2F66
+S31500609CA0405162738495A6B7C8D9EAFB0C1D2E3F56
+S31500609CB05061728394A5B6C7D8E9FA0B1C2D3E4F46
+S31500609CC060718293A4B5C6D7E8F90A1B2C3D4E5F36
+S31500609CD0708192A3B4C5D6E7F8091A2B3C4D5E6F26
+S31500609CE08091A2B3C4D5E6F708192A3B4C5D6E7F16
+S31500609CF090A1B2C3D4E5F60718293A4B5C6D7E8F06
+S31500609D00A0B1C2D3E4F5061728394A5B6C7D8E9FF5
+S31500609D10B0C1D2E3F405162738495A6B7C8D9EAFE5
+S31500609D20C0D1E2F30415263748596A7B8C9DAEBFD5
+S31500609D30D0E1F2031425364758697A8B9CADBECFC5
+S31500609D40E0F102132435465768798A9BACBDCEDFB5
+S31500609D50F00112233445566778899AABBCCDDEEFA5
+S31500609D6000112233445566778899AABBCCDDEEFF95
+S31500609D70102132435465768798A9BACBDCEDFE0F85
+S31500609D802031425364758697A8B9CADBECFD0E1F75
+S31500609D9030415263748596A7B8C9DAEBFC0D1E2F65
+S31500609DA0405162738495A6B7C8D9EAFB0C1D2E3F55
+S31500609DB05061728394A5B6C7D8E9FA0B1C2D3E4F45
+S31500609DC060718293A4B5C6D7E8F90A1B2C3D4E5F35
+S31500609DD0708192A3B4C5D6E7F8091A2B3C4D5E6F25
+S31500609DE08091A2B3C4D5E6F708192A3B4C5D6E7F15
+S31500609DF090A1B2C3D4E5F60718293A4B5C6D7E8F05
+S31500609E00A0B1C2D3E4F5061728394A5B6C7D8E9FF4
+S31500609E10B0C1D2E3F405162738495A6B7C8D9EAFE4
+S31500609E20C0D1E2F30415263748596A7B8C9DAEBFD4
+S31500609E30D0E1F2031425364758697A8B9CADBECFC4
+S31500609E40E0F102132435465768798A9BACBDCEDFB4
+S31500609E50F00112233445566778899AABBCCDDEEFA4
+S31500609E6000112233445566778899AABBCCDDEEFF94
+S31500609E70102132435465768798A9BACBDCEDFE0F84
+S31500609E802031425364758697A8B9CADBECFD0E1F74
+S31500609E9030415263748596A7B8C9DAEBFC0D1E2F64
+S31500609EA0405162738495A6B7C8D9EAFB0C1D2E3F54
+S31500609EB05061728394A5B6C7D8E9FA0B1C2D3E4F44
+S31500609EC060718293A4B5C6D7E8F90A1B2C3D4E5F34
+S31500609ED0708192A3B4C5D6E7F8091A2B3C4D5E6F24
+S31500609EE08091A2B3C4D5E6F708192A3B4C5D6E7F14
+S31500609EF090A1B2C3D4E5F60718293A4B5C6D7E8F04
+S31500609F00A0B1C2D3E4F5061728394A5B6C7D8E9FF3
+S31500609F10B0C1D2E3F405162738495A6B7C8D9EAFE3
+S31500609F20C0D1E2F30415263748596A7B8C9DAEBFD3
+S31500609F30D0E1F2031425364758697A8B9CADBECFC3
+S31500609F40E0F102132435465768798A9BACBDCEDFB3
+S31500609F50F00112233445566778899AABBCCDDEEFA3
+S31500609F6000112233445566778899AABBCCDDEEFF93
+S31500609F70102132435465768798A9BACBDCEDFE0F83
+S31500609F802031425364758697A8B9CADBECFD0E1F73
+S31500609F9030415263748596A7B8C9DAEBFC0D1E2F63
+S31500609FA0405162738495A6B7C8D9EAFB0C1D2E3F53
+S31500609FB05061728394A5B6C7D8E9FA0B1C2D3E4F43
+S31500609FC060718293A4B5C6D7E8F90A1B2C3D4E5F33
+S31500609FD0708192A3B4C5D6E7F8091A2B3C4D5E6F23
+S31500609FE08091A2B3C4D5E6F708192A3B4C5D6E7F13
+S31500609FF090A1B2C3D4E5F60718293A4B5C6D7E8F03
+S3150060A000A0B1C2D3E4F5061728394A5B6C7D8E9FF2
+S3150060A010B0C1D2E3F405162738495A6B7C8D9EAFE2
+S3150060A020C0D1E2F30415263748596A7B8C9DAEBFD2
+S3150060A030D0E1F2031425364758697A8B9CADBECFC2
+S3150060A040E0F102132435465768798A9BACBDCEDFB2
+S3150060A050F00112233445566778899AABBCCDDEEFA2
+S3150060A06000112233445566778899AABBCCDDEEFF92
+S3150060A070102132435465768798A9BACBDCEDFE0F82
+S3150060A0802031425364758697A8B9CADBECFD0E1F72
+S3150060A09030415263748596A7B8C9DAEBFC0D1E2F62
+S3150060A0A0405162738495A6B7C8D9EAFB0C1D2E3F52
+S3150060A0B05061728394A5B6C7D8E9FA0B1C2D3E4F42
+S3150060A0C060718293A4B5C6D7E8F90A1B2C3D4E5F32
+S3150060A0D0708192A3B4C5D6E7F8091A2B3C4D5E6F22
+S3150060A0E08091A2B3C4D5E6F708192A3B4C5D6E7F12
+S3150060A0F090A1B2C3D4E5F60718293A4B5C6D7E8F02
+S3150060A100A0B1C2D3E4F5061728394A5B6C7D8E9FF1
+S3150060A110B0C1D2E3F405162738495A6B7C8D9EAFE1
+S3150060A120C0D1E2F30415263748596A7B8C9DAEBFD1
+S3150060A130D0E1F2031425364758697A8B9CADBECFC1
+S3150060A140E0F102132435465768798A9BACBDCEDFB1
+S3150060A150F00112233445566778899AABBCCDDEEFA1
+S3150060A16000112233445566778899AABBCCDDEEFF91
+S3150060A170102132435465768798A9BACBDCEDFE0F81
+S3150060A1802031425364758697A8B9CADBECFD0E1F71
+S3150060A19030415263748596A7B8C9DAEBFC0D1E2F61
+S3150060A1A0405162738495A6B7C8D9EAFB0C1D2E3F51
+S3150060A1B05061728394A5B6C7D8E9FA0B1C2D3E4F41
+S3150060A1C060718293A4B5C6D7E8F90A1B2C3D4E5F31
+S3150060A1D0708192A3B4C5D6E7F8091A2B3C4D5E6F21
+S3150060A1E08091A2B3C4D5E6F708192A3B4C5D6E7F11
+S3150060A1F090A1B2C3D4E5F60718293A4B5C6D7E8F01
+S3150060A200A0B1C2D3E4F5061728394A5B6C7D8E9FF0
+S3150060A210B0C1D2E3F405162738495A6B7C8D9EAFE0
+S3150060A220C0D1E2F30415263748596A7B8C9DAEBFD0
+S3150060A230D0E1F2031425364758697A8B9CADBECFC0
+S3150060A240E0F102132435465768798A9BACBDCEDFB0
+S3150060A250F00112233445566778899AABBCCDDEEFA0
+S3150060A26000112233445566778899AABBCCDDEEFF90
+S3150060A270102132435465768798A9BACBDCEDFE0F80
+S3150060A2802031425364758697A8B9CADBECFD0E1F70
+S3150060A29030415263748596A7B8C9DAEBFC0D1E2F60
+S3150060A2A0405162738495A6B7C8D9EAFB0C1D2E3F50
+S3150060A2B05061728394A5B6C7D8E9FA0B1C2D3E4F40
+S3150060A2C060718293A4B5C6D7E8F90A1B2C3D4E5F30
+S3150060A2D0708192A3B4C5D6E7F8091A2B3C4D5E6F20
+S3150060A2E08091A2B3C4D5E6F708192A3B4C5D6E7F10
+S3150060A2F090A1B2C3D4E5F60718293A4B5C6D7E8F00
+S3150060A300A0B1C2D3E4F5061728394A5B6C7D8E9FEF
+S3150060A310B0C1D2E3F405162738495A6B7C8D9EAFDF
+S3150060A320C0D1E2F30415263748596A7B8C9DAEBFCF
+S3150060A330D0E1F2031425364758697A8B9CADBECFBF
+S3150060A340E0F102132435465768798A9BACBDCEDFAF
+S3150060A350F00112233445566778899AABBCCDDEEF9F
+S3150060A36000112233445566778899AABBCCDDEEFF8F
+S3150060A370102132435465768798A9BACBDCEDFE0F7F
+S3150060A3802031425364758697A8B9CADBECFD0E1F6F
+S3150060A39030415263748596A7B8C9DAEBFC0D1E2F5F
+S3150060A3A0405162738495A6B7C8D9EAFB0C1D2E3F4F
+S3150060A3B05061728394A5B6C7D8E9FA0B1C2D3E4F3F
+S3150060A3C060718293A4B5C6D7E8F90A1B2C3D4E5F2F
+S3150060A3D0708192A3B4C5D6E7F8091A2B3C4D5E6F1F
+S3150060A3E08091A2B3C4D5E6F708192A3B4C5D6E7F0F
+S3150060A3F090A1B2C3D4E5F60718293A4B5C6D7E8FFF
+S3150060A400A0B1C2D3E4F5061728394A5B6C7D8E9FEE
+S3150060A410B0C1D2E3F405162738495A6B7C8D9EAFDE
+S3150060A420C0D1E2F30415263748596A7B8C9DAEBFCE
+S3150060A430D0E1F2031425364758697A8B9CADBECFBE
+S3150060A440E0F102132435465768798A9BACBDCEDFAE
+S3150060A450F00112233445566778899AABBCCDDEEF9E
+S3150060A46000112233445566778899AABBCCDDEEFF8E
+S3150060A470102132435465768798A9BACBDCEDFE0F7E
+S3150060A4802031425364758697A8B9CADBECFD0E1F6E
+S3150060A49030415263748596A7B8C9DAEBFC0D1E2F5E
+S3150060A4A0405162738495A6B7C8D9EAFB0C1D2E3F4E
+S3150060A4B05061728394A5B6C7D8E9FA0B1C2D3E4F3E
+S3150060A4C060718293A4B5C6D7E8F90A1B2C3D4E5F2E
+S3150060A4D0708192A3B4C5D6E7F8091A2B3C4D5E6F1E
+S3150060A4E08091A2B3C4D5E6F708192A3B4C5D6E7F0E
+S3150060A4F090A1B2C3D4E5F60718293A4B5C6D7E8FFE
+S3150060A500A0B1C2D3E4F5061728394A5B6C7D8E9FED
+S3150060A510B0C1D2E3F405162738495A6B7C8D9EAFDD
+S3150060A520C0D1E2F30415263748596A7B8C9DAEBFCD
+S3150060A530D0E1F2031425364758697A8B9CADBECFBD
+S3150060A540E0F102132435465768798A9BACBDCEDFAD
+S3150060A550F00112233445566778899AABBCCDDEEF9D
+S3150060A56000112233445566778899AABBCCDDEEFF8D
+S3150060A570102132435465768798A9BACBDCEDFE0F7D
+S3150060A5802031425364758697A8B9CADBECFD0E1F6D
+S3150060A59030415263748596A7B8C9DAEBFC0D1E2F5D
+S3150060A5A0405162738495A6B7C8D9EAFB0C1D2E3F4D
+S3150060A5B05061728394A5B6C7D8E9FA0B1C2D3E4F3D
+S3150060A5C060718293A4B5C6D7E8F90A1B2C3D4E5F2D
+S3150060A5D0708192A3B4C5D6E7F8091A2B3C4D5E6F1D
+S3150060A5E08091A2B3C4D5E6F708192A3B4C5D6E7F0D
+S3150060A5F090A1B2C3D4E5F60718293A4B5C6D7E8FFD
+S3150060A600A0B1C2D3E4F5061728394A5B6C7D8E9FEC
+S3150060A610B0C1D2E3F405162738495A6B7C8D9EAFDC
+S3150060A620C0D1E2F30415263748596A7B8C9DAEBFCC
+S3150060A630D0E1F2031425364758697A8B9CADBECFBC
+S3150060A640E0F102132435465768798A9BACBDCEDFAC
+S3150060A650F00112233445566778899AABBCCDDEEF9C
+S3150060A66000112233445566778899AABBCCDDEEFF8C
+S3150060A670102132435465768798A9BACBDCEDFE0F7C
+S3150060A6802031425364758697A8B9CADBECFD0E1F6C
+S3150060A69030415263748596A7B8C9DAEBFC0D1E2F5C
+S3150060A6A0405162738495A6B7C8D9EAFB0C1D2E3F4C
+S3150060A6B05061728394A5B6C7D8E9FA0B1C2D3E4F3C
+S3150060A6C060718293A4B5C6D7E8F90A1B2C3D4E5F2C
+S3150060A6D0708192A3B4C5D6E7F8091A2B3C4D5E6F1C
+S3150060A6E08091A2B3C4D5E6F708192A3B4C5D6E7F0C
+S3150060A6F090A1B2C3D4E5F60718293A4B5C6D7E8FFC
+S3150060A700A0B1C2D3E4F5061728394A5B6C7D8E9FEB
+S3150060A710B0C1D2E3F405162738495A6B7C8D9EAFDB
+S3150060A720C0D1E2F30415263748596A7B8C9DAEBFCB
+S3150060A730D0E1F2031425364758697A8B9CADBECFBB
+S3150060A740E0F102132435465768798A9BACBDCEDFAB
+S3150060A750F00112233445566778899AABBCCDDEEF9B
+S3150060A76000112233445566778899AABBCCDDEEFF8B
+S3150060A770102132435465768798A9BACBDCEDFE0F7B
+S3150060A7802031425364758697A8B9CADBECFD0E1F6B
+S3150060A79030415263748596A7B8C9DAEBFC0D1E2F5B
+S3150060A7A0405162738495A6B7C8D9EAFB0C1D2E3F4B
+S3150060A7B05061728394A5B6C7D8E9FA0B1C2D3E4F3B
+S3150060A7C060718293A4B5C6D7E8F90A1B2C3D4E5F2B
+S3150060A7D0708192A3B4C5D6E7F8091A2B3C4D5E6F1B
+S3150060A7E08091A2B3C4D5E6F708192A3B4C5D6E7F0B
+S3150060A7F090A1B2C3D4E5F60718293A4B5C6D7E8FFB
+S3150060A800A0B1C2D3E4F5061728394A5B6C7D8E9FEA
+S3150060A810B0C1D2E3F405162738495A6B7C8D9EAFDA
+S3150060A820C0D1E2F30415263748596A7B8C9DAEBFCA
+S3150060A830D0E1F2031425364758697A8B9CADBECFBA
+S3150060A840E0F102132435465768798A9BACBDCEDFAA
+S3150060A850F00112233445566778899AABBCCDDEEF9A
+S3150060A86000112233445566778899AABBCCDDEEFF8A
+S3150060A870102132435465768798A9BACBDCEDFE0F7A
+S3150060A8802031425364758697A8B9CADBECFD0E1F6A
+S3150060A89030415263748596A7B8C9DAEBFC0D1E2F5A
+S3150060A8A0405162738495A6B7C8D9EAFB0C1D2E3F4A
+S3150060A8B05061728394A5B6C7D8E9FA0B1C2D3E4F3A
+S3150060A8C060718293A4B5C6D7E8F90A1B2C3D4E5F2A
+S3150060A8D0708192A3B4C5D6E7F8091A2B3C4D5E6F1A
+S3150060A8E08091A2B3C4D5E6F708192A3B4C5D6E7F0A
+S3150060A8F090A1B2C3D4E5F60718293A4B5C6D7E8FFA
+S3150060A900A0B1C2D3E4F5061728394A5B6C7D8E9FE9
+S3150060A910B0C1D2E3F405162738495A6B7C8D9EAFD9
+S3150060A920C0D1E2F30415263748596A7B8C9DAEBFC9
+S3150060A930D0E1F2031425364758697A8B9CADBECFB9
+S3150060A940E0F102132435465768798A9BACBDCEDFA9
+S3150060A950F00112233445566778899AABBCCDDEEF99
+S3150060A96000112233445566778899AABBCCDDEEFF89
+S3150060A970102132435465768798A9BACBDCEDFE0F79
+S3150060A9802031425364758697A8B9CADBECFD0E1F69
+S3150060A99030415263748596A7B8C9DAEBFC0D1E2F59
+S3150060A9A0405162738495A6B7C8D9EAFB0C1D2E3F49
+S3150060A9B05061728394A5B6C7D8E9FA0B1C2D3E4F39
+S3150060A9C060718293A4B5C6D7E8F90A1B2C3D4E5F29
+S3150060A9D0708192A3B4C5D6E7F8091A2B3C4D5E6F19
+S3150060A9E08091A2B3C4D5E6F708192A3B4C5D6E7F09
+S3150060A9F090A1B2C3D4E5F60718293A4B5C6D7E8FF9
+S3150060AA00A0B1C2D3E4F5061728394A5B6C7D8E9FE8
+S3150060AA10B0C1D2E3F405162738495A6B7C8D9EAFD8
+S3150060AA20C0D1E2F30415263748596A7B8C9DAEBFC8
+S3150060AA30D0E1F2031425364758697A8B9CADBECFB8
+S3150060AA40E0F102132435465768798A9BACBDCEDFA8
+S3150060AA50F00112233445566778899AABBCCDDEEF98
+S3150060AA6000112233445566778899AABBCCDDEEFF88
+S3150060AA70102132435465768798A9BACBDCEDFE0F78
+S3150060AA802031425364758697A8B9CADBECFD0E1F68
+S3150060AA9030415263748596A7B8C9DAEBFC0D1E2F58
+S3150060AAA0405162738495A6B7C8D9EAFB0C1D2E3F48
+S3150060AAB05061728394A5B6C7D8E9FA0B1C2D3E4F38
+S3150060AAC060718293A4B5C6D7E8F90A1B2C3D4E5F28
+S3150060AAD0708192A3B4C5D6E7F8091A2B3C4D5E6F18
+S3150060AAE08091A2B3C4D5E6F708192A3B4C5D6E7F08
+S3150060AAF090A1B2C3D4E5F60718293A4B5C6D7E8FF8
+S3150060AB00A0B1C2D3E4F5061728394A5B6C7D8E9FE7
+S3150060AB10B0C1D2E3F405162738495A6B7C8D9EAFD7
+S3150060AB20C0D1E2F30415263748596A7B8C9DAEBFC7
+S3150060AB30D0E1F2031425364758697A8B9CADBECFB7
+S3150060AB40E0F102132435465768798A9BACBDCEDFA7
+S3150060AB50F00112233445566778899AABBCCDDEEF97
+S3150060AB6000112233445566778899AABBCCDDEEFF87
+S3150060AB70102132435465768798A9BACBDCEDFE0F77
+S3150060AB802031425364758697A8B9CADBECFD0E1F67
+S3150060AB9030415263748596A7B8C9DAEBFC0D1E2F57
+S3150060ABA0405162738495A6B7C8D9EAFB0C1D2E3F47
+S3150060ABB05061728394A5B6C7D8E9FA0B1C2D3E4F37
+S3150060ABC060718293A4B5C6D7E8F90A1B2C3D4E5F27
+S3150060ABD0708192A3B4C5D6E7F8091A2B3C4D5E6F17
+S3150060ABE08091A2B3C4D5E6F708192A3B4C5D6E7F07
+S3150060ABF090A1B2C3D4E5F60718293A4B5C6D7E8FF7
+S3150060AC00A0B1C2D3E4F5061728394A5B6C7D8E9FE6
+S3150060AC10B0C1D2E3F405162738495A6B7C8D9EAFD6
+S3150060AC20C0D1E2F30415263748596A7B8C9DAEBFC6
+S3150060AC30D0E1F2031425364758697A8B9CADBECFB6
+S3150060AC40E0F102132435465768798A9BACBDCEDFA6
+S3150060AC50F00112233445566778899AABBCCDDEEF96
+S3150060AC6000112233445566778899AABBCCDDEEFF86
+S3150060AC70102132435465768798A9BACBDCEDFE0F76
+S3150060AC802031425364758697A8B9CADBECFD0E1F66
+S3150060AC9030415263748596A7B8C9DAEBFC0D1E2F56
+S3150060ACA0405162738495A6B7C8D9EAFB0C1D2E3F46
+S3150060ACB05061728394A5B6C7D8E9FA0B1C2D3E4F36
+S3150060ACC060718293A4B5C6D7E8F90A1B2C3D4E5F26
+S3150060ACD0708192A3B4C5D6E7F8091A2B3C4D5E6F16
+S3150060ACE08091A2B3C4D5E6F708192A3B4C5D6E7F06
+S3150060ACF090A1B2C3D4E5F60718293A4B5C6D7E8FF6
+S3150060AD00A0B1C2D3E4F5061728394A5B6C7D8E9FE5
+S3150060AD10B0C1D2E3F405162738495A6B7C8D9EAFD5
+S3150060AD20C0D1E2F30415263748596A7B8C9DAEBFC5
+S3150060AD30D0E1F2031425364758697A8B9CADBECFB5
+S3150060AD40E0F102132435465768798A9BACBDCEDFA5
+S3150060AD50F00112233445566778899AABBCCDDEEF95
+S3150060AD6000112233445566778899AABBCCDDEEFF85
+S3150060AD70102132435465768798A9BACBDCEDFE0F75
+S3150060AD802031425364758697A8B9CADBECFD0E1F65
+S3150060AD9030415263748596A7B8C9DAEBFC0D1E2F55
+S3150060ADA0405162738495A6B7C8D9EAFB0C1D2E3F45
+S3150060ADB05061728394A5B6C7D8E9FA0B1C2D3E4F35
+S3150060ADC060718293A4B5C6D7E8F90A1B2C3D4E5F25
+S3150060ADD0708192A3B4C5D6E7F8091A2B3C4D5E6F15
+S3150060ADE08091A2B3C4D5E6F708192A3B4C5D6E7F05
+S3150060ADF090A1B2C3D4E5F60718293A4B5C6D7E8FF5
+S3150060AE00A0B1C2D3E4F5061728394A5B6C7D8E9FE4
+S3150060AE10B0C1D2E3F405162738495A6B7C8D9EAFD4
+S3150060AE20C0D1E2F30415263748596A7B8C9DAEBFC4
+S3150060AE30D0E1F2031425364758697A8B9CADBECFB4
+S3150060AE40E0F102132435465768798A9BACBDCEDFA4
+S3150060AE50F00112233445566778899AABBCCDDEEF94
+S3150060AE6000112233445566778899AABBCCDDEEFF84
+S3150060AE70102132435465768798A9BACBDCEDFE0F74
+S3150060AE802031425364758697A8B9CADBECFD0E1F64
+S3150060AE9030415263748596A7B8C9DAEBFC0D1E2F54
+S3150060AEA0405162738495A6B7C8D9EAFB0C1D2E3F44
+S3150060AEB05061728394A5B6C7D8E9FA0B1C2D3E4F34
+S3150060AEC060718293A4B5C6D7E8F90A1B2C3D4E5F24
+S3150060AED0708192A3B4C5D6E7F8091A2B3C4D5E6F14
+S3150060AEE08091A2B3C4D5E6F708192A3B4C5D6E7F04
+S3150060AEF090A1B2C3D4E5F60718293A4B5C6D7E8FF4
+S3150060AF00A0B1C2D3E4F5061728394A5B6C7D8E9FE3
+S3150060AF10B0C1D2E3F405162738495A6B7C8D9EAFD3
+S3150060AF20C0D1E2F30415263748596A7B8C9DAEBFC3
+S3150060AF30D0E1F2031425364758697A8B9CADBECFB3
+S3150060AF40E0F102132435465768798A9BACBDCEDFA3
+S3150060AF50F00112233445566778899AABBCCDDEEF93
+S3150060AF6000112233445566778899AABBCCDDEEFF83
+S3150060AF70102132435465768798A9BACBDCEDFE0F73
+S3150060AF802031425364758697A8B9CADBECFD0E1F63
+S3150060AF9030415263748596A7B8C9DAEBFC0D1E2F53
+S3150060AFA0405162738495A6B7C8D9EAFB0C1D2E3F43
+S3150060AFB05061728394A5B6C7D8E9FA0B1C2D3E4F33
+S3150060AFC060718293A4B5C6D7E8F90A1B2C3D4E5F23
+S3150060AFD0708192A3B4C5D6E7F8091A2B3C4D5E6F13
+S3150060AFE08091A2B3C4D5E6F708192A3B4C5D6E7F03
+S3150060AFF090A1B2C3D4E5F60718293A4B5C6D7E8FF3
+S3150060B000A0B1C2D3E4F5061728394A5B6C7D8E9FE2
+S3150060B010B0C1D2E3F405162738495A6B7C8D9EAFD2
+S3150060B020C0D1E2F30415263748596A7B8C9DAEBFC2
+S3150060B030D0E1F2031425364758697A8B9CADBECFB2
+S3150060B040E0F102132435465768798A9BACBDCEDFA2
+S3150060B050F00112233445566778899AABBCCDDEEF92
+S3150060B06000112233445566778899AABBCCDDEEFF82
+S3150060B070102132435465768798A9BACBDCEDFE0F72
+S3150060B0802031425364758697A8B9CADBECFD0E1F62
+S3150060B09030415263748596A7B8C9DAEBFC0D1E2F52
+S3150060B0A0405162738495A6B7C8D9EAFB0C1D2E3F42
+S3150060B0B05061728394A5B6C7D8E9FA0B1C2D3E4F32
+S3150060B0C060718293A4B5C6D7E8F90A1B2C3D4E5F22
+S3150060B0D0708192A3B4C5D6E7F8091A2B3C4D5E6F12
+S3150060B0E08091A2B3C4D5E6F708192A3B4C5D6E7F02
+S3150060B0F090A1B2C3D4E5F60718293A4B5C6D7E8FF2
+S3150060B100A0B1C2D3E4F5061728394A5B6C7D8E9FE1
+S3150060B110B0C1D2E3F405162738495A6B7C8D9EAFD1
+S3150060B120C0D1E2F30415263748596A7B8C9DAEBFC1
+S3150060B130D0E1F2031425364758697A8B9CADBECFB1
+S3150060B140E0F102132435465768798A9BACBDCEDFA1
+S3150060B150F00112233445566778899AABBCCDDEEF91
+S3150060B16000112233445566778899AABBCCDDEEFF81
+S3150060B170102132435465768798A9BACBDCEDFE0F71
+S3150060B1802031425364758697A8B9CADBECFD0E1F61
+S3150060B19030415263748596A7B8C9DAEBFC0D1E2F51
+S3150060B1A0405162738495A6B7C8D9EAFB0C1D2E3F41
+S3150060B1B05061728394A5B6C7D8E9FA0B1C2D3E4F31
+S3150060B1C060718293A4B5C6D7E8F90A1B2C3D4E5F21
+S3150060B1D0708192A3B4C5D6E7F8091A2B3C4D5E6F11
+S3150060B1E08091A2B3C4D5E6F708192A3B4C5D6E7F01
+S3150060B1F090A1B2C3D4E5F60718293A4B5C6D7E8FF1
+S3150060B200A0B1C2D3E4F5061728394A5B6C7D8E9FE0
+S3150060B210B0C1D2E3F405162738495A6B7C8D9EAFD0
+S3150060B220C0D1E2F30415263748596A7B8C9DAEBFC0
+S3150060B230D0E1F2031425364758697A8B9CADBECFB0
+S3150060B240E0F102132435465768798A9BACBDCEDFA0
+S3150060B250F00112233445566778899AABBCCDDEEF90
+S3150060B26000112233445566778899AABBCCDDEEFF80
+S3150060B270102132435465768798A9BACBDCEDFE0F70
+S3150060B2802031425364758697A8B9CADBECFD0E1F60
+S3150060B29030415263748596A7B8C9DAEBFC0D1E2F50
+S3150060B2A0405162738495A6B7C8D9EAFB0C1D2E3F40
+S3150060B2B05061728394A5B6C7D8E9FA0B1C2D3E4F30
+S3150060B2C060718293A4B5C6D7E8F90A1B2C3D4E5F20
+S3150060B2D0708192A3B4C5D6E7F8091A2B3C4D5E6F10
+S3150060B2E08091A2B3C4D5E6F708192A3B4C5D6E7F00
+S3150060B2F090A1B2C3D4E5F60718293A4B5C6D7E8FF0
+S3150060B300A0B1C2D3E4F5061728394A5B6C7D8E9FDF
+S3150060B310B0C1D2E3F405162738495A6B7C8D9EAFCF
+S3150060B320C0D1E2F30415263748596A7B8C9DAEBFBF
+S3150060B330D0E1F2031425364758697A8B9CADBECFAF
+S3150060B340E0F102132435465768798A9BACBDCEDF9F
+S3150060B350F00112233445566778899AABBCCDDEEF8F
+S3150060B36000112233445566778899AABBCCDDEEFF7F
+S3150060B370102132435465768798A9BACBDCEDFE0F6F
+S3150060B3802031425364758697A8B9CADBECFD0E1F5F
+S3150060B39030415263748596A7B8C9DAEBFC0D1E2F4F
+S3150060B3A0405162738495A6B7C8D9EAFB0C1D2E3F3F
+S3150060B3B05061728394A5B6C7D8E9FA0B1C2D3E4F2F
+S3150060B3C060718293A4B5C6D7E8F90A1B2C3D4E5F1F
+S3150060B3D0708192A3B4C5D6E7F8091A2B3C4D5E6F0F
+S3150060B3E08091A2B3C4D5E6F708192A3B4C5D6E7FFF
+S3150060B3F090A1B2C3D4E5F60718293A4B5C6D7E8FEF
+S3150060B400A0B1C2D3E4F5061728394A5B6C7D8E9FDE
+S3150060B410B0C1D2E3F405162738495A6B7C8D9EAFCE
+S3150060B420C0D1E2F30415263748596A7B8C9DAEBFBE
+S3150060B430D0E1F2031425364758697A8B9CADBECFAE
+S3150060B440E0F102132435465768798A9BACBDCEDF9E
+S3150060B450F00112233445566778899AABBCCDDEEF8E
+S3150060B46000112233445566778899AABBCCDDEEFF7E
+S3150060B470102132435465768798A9BACBDCEDFE0F6E
+S3150060B4802031425364758697A8B9CADBECFD0E1F5E
+S3150060B49030415263748596A7B8C9DAEBFC0D1E2F4E
+S3150060B4A0405162738495A6B7C8D9EAFB0C1D2E3F3E
+S3150060B4B05061728394A5B6C7D8E9FA0B1C2D3E4F2E
+S3150060B4C060718293A4B5C6D7E8F90A1B2C3D4E5F1E
+S3150060B4D0708192A3B4C5D6E7F8091A2B3C4D5E6F0E
+S3150060B4E08091A2B3C4D5E6F708192A3B4C5D6E7FFE
+S3150060B4F090A1B2C3D4E5F60718293A4B5C6D7E8FEE
+S3150060B500A0B1C2D3E4F5061728394A5B6C7D8E9FDD
+S3150060B510B0C1D2E3F405162738495A6B7C8D9EAFCD
+S3150060B520C0D1E2F30415263748596A7B8C9DAEBFBD
+S3150060B530D0E1F2031425364758697A8B9CADBECFAD
+S3150060B540E0F102132435465768798A9BACBDCEDF9D
+S3150060B550F00112233445566778899AABBCCDDEEF8D
+S3150060B56000112233445566778899AABBCCDDEEFF7D
+S3150060B570102132435465768798A9BACBDCEDFE0F6D
+S3150060B5802031425364758697A8B9CADBECFD0E1F5D
+S3150060B59030415263748596A7B8C9DAEBFC0D1E2F4D
+S3150060B5A0405162738495A6B7C8D9EAFB0C1D2E3F3D
+S3150060B5B05061728394A5B6C7D8E9FA0B1C2D3E4F2D
+S3150060B5C060718293A4B5C6D7E8F90A1B2C3D4E5F1D
+S3150060B5D0708192A3B4C5D6E7F8091A2B3C4D5E6F0D
+S3150060B5E08091A2B3C4D5E6F708192A3B4C5D6E7FFD
+S3150060B5F090A1B2C3D4E5F60718293A4B5C6D7E8FED
+S3150060B600A0B1C2D3E4F5061728394A5B6C7D8E9FDC
+S3150060B610B0C1D2E3F405162738495A6B7C8D9EAFCC
+S3150060B620C0D1E2F30415263748596A7B8C9DAEBFBC
+S3150060B630D0E1F2031425364758697A8B9CADBECFAC
+S3150060B640E0F102132435465768798A9BACBDCEDF9C
+S3150060B650F00112233445566778899AABBCCDDEEF8C
+S3150060B66000112233445566778899AABBCCDDEEFF7C
+S3150060B670102132435465768798A9BACBDCEDFE0F6C
+S3150060B6802031425364758697A8B9CADBECFD0E1F5C
+S3150060B69030415263748596A7B8C9DAEBFC0D1E2F4C
+S3150060B6A0405162738495A6B7C8D9EAFB0C1D2E3F3C
+S3150060B6B05061728394A5B6C7D8E9FA0B1C2D3E4F2C
+S3150060B6C060718293A4B5C6D7E8F90A1B2C3D4E5F1C
+S3150060B6D0708192A3B4C5D6E7F8091A2B3C4D5E6F0C
+S3150060B6E08091A2B3C4D5E6F708192A3B4C5D6E7FFC
+S3150060B6F090A1B2C3D4E5F60718293A4B5C6D7E8FEC
+S3150060B700A0B1C2D3E4F5061728394A5B6C7D8E9FDB
+S3150060B710B0C1D2E3F405162738495A6B7C8D9EAFCB
+S3150060B720C0D1E2F30415263748596A7B8C9DAEBFBB
+S3150060B730D0E1F2031425364758697A8B9CADBECFAB
+S3150060B740E0F102132435465768798A9BACBDCEDF9B
+S3150060B750F00112233445566778899AABBCCDDEEF8B
+S3150060B76000112233445566778899AABBCCDDEEFF7B
+S3150060B770102132435465768798A9BACBDCEDFE0F6B
+S3150060B7802031425364758697A8B9CADBECFD0E1F5B
+S3150060B79030415263748596A7B8C9DAEBFC0D1E2F4B
+S3150060B7A0405162738495A6B7C8D9EAFB0C1D2E3F3B
+S3150060B7B05061728394A5B6C7D8E9FA0B1C2D3E4F2B
+S3150060B7C060718293A4B5C6D7E8F90A1B2C3D4E5F1B
+S3150060B7D0708192A3B4C5D6E7F8091A2B3C4D5E6F0B
+S3150060B7E08091A2B3C4D5E6F708192A3B4C5D6E7FFB
+S3150060B7F090A1B2C3D4E5F60718293A4B5C6D7E8FEB
+S3150060B800A0B1C2D3E4F5061728394A5B6C7D8E9FDA
+S3150060B810B0C1D2E3F405162738495A6B7C8D9EAFCA
+S3150060B820C0D1E2F30415263748596A7B8C9DAEBFBA
+S3150060B830D0E1F2031425364758697A8B9CADBECFAA
+S3150060B840E0F102132435465768798A9BACBDCEDF9A
+S3150060B850F00112233445566778899AABBCCDDEEF8A
+S3150060B86000112233445566778899AABBCCDDEEFF7A
+S3150060B870102132435465768798A9BACBDCEDFE0F6A
+S3150060B8802031425364758697A8B9CADBECFD0E1F5A
+S3150060B89030415263748596A7B8C9DAEBFC0D1E2F4A
+S3150060B8A0405162738495A6B7C8D9EAFB0C1D2E3F3A
+S3150060B8B05061728394A5B6C7D8E9FA0B1C2D3E4F2A
+S3150060B8C060718293A4B5C6D7E8F90A1B2C3D4E5F1A
+S3150060B8D0708192A3B4C5D6E7F8091A2B3C4D5E6F0A
+S3150060B8E08091A2B3C4D5E6F708192A3B4C5D6E7FFA
+S3150060B8F090A1B2C3D4E5F60718293A4B5C6D7E8FEA
+S3150060B900A0B1C2D3E4F5061728394A5B6C7D8E9FD9
+S3150060B910B0C1D2E3F405162738495A6B7C8D9EAFC9
+S3150060B920C0D1E2F30415263748596A7B8C9DAEBFB9
+S3150060B930D0E1F2031425364758697A8B9CADBECFA9
+S3150060B940E0F102132435465768798A9BACBDCEDF99
+S3150060B950F00112233445566778899AABBCCDDEEF89
+S3150060B96000112233445566778899AABBCCDDEEFF79
+S3150060B970102132435465768798A9BACBDCEDFE0F69
+S3150060B9802031425364758697A8B9CADBECFD0E1F59
+S3150060B99030415263748596A7B8C9DAEBFC0D1E2F49
+S3150060B9A0405162738495A6B7C8D9EAFB0C1D2E3F39
+S3150060B9B05061728394A5B6C7D8E9FA0B1C2D3E4F29
+S3150060B9C060718293A4B5C6D7E8F90A1B2C3D4E5F19
+S3150060B9D0708192A3B4C5D6E7F8091A2B3C4D5E6F09
+S3150060B9E08091A2B3C4D5E6F708192A3B4C5D6E7FF9
+S3150060B9F090A1B2C3D4E5F60718293A4B5C6D7E8FE9
+S3150060BA00A0B1C2D3E4F5061728394A5B6C7D8E9FD8
+S3150060BA10B0C1D2E3F405162738495A6B7C8D9EAFC8
+S3150060BA20C0D1E2F30415263748596A7B8C9DAEBFB8
+S3150060BA30D0E1F2031425364758697A8B9CADBECFA8
+S3150060BA40E0F102132435465768798A9BACBDCEDF98
+S3150060BA50F00112233445566778899AABBCCDDEEF88
+S3150060BA6000112233445566778899AABBCCDDEEFF78
+S3150060BA70102132435465768798A9BACBDCEDFE0F68
+S3150060BA802031425364758697A8B9CADBECFD0E1F58
+S3150060BA9030415263748596A7B8C9DAEBFC0D1E2F48
+S3150060BAA0405162738495A6B7C8D9EAFB0C1D2E3F38
+S3150060BAB05061728394A5B6C7D8E9FA0B1C2D3E4F28
+S3150060BAC060718293A4B5C6D7E8F90A1B2C3D4E5F18
+S3150060BAD0708192A3B4C5D6E7F8091A2B3C4D5E6F08
+S3150060BAE08091A2B3C4D5E6F708192A3B4C5D6E7FF8
+S3150060BAF090A1B2C3D4E5F60718293A4B5C6D7E8FE8
+S3150060BB00A0B1C2D3E4F5061728394A5B6C7D8E9FD7
+S3150060BB10B0C1D2E3F405162738495A6B7C8D9EAFC7
+S3150060BB20C0D1E2F30415263748596A7B8C9DAEBFB7
+S3150060BB30D0E1F2031425364758697A8B9CADBECFA7
+S3150060BB40E0F102132435465768798A9BACBDCEDF97
+S3150060BB50F00112233445566778899AABBCCDDEEF87
+S3150060BB6000112233445566778899AABBCCDDEEFF77
+S3150060BB70102132435465768798A9BACBDCEDFE0F67
+S3150060BB802031425364758697A8B9CADBECFD0E1F57
+S3150060BB9030415263748596A7B8C9DAEBFC0D1E2F47
+S3150060BBA0405162738495A6B7C8D9EAFB0C1D2E3F37
+S3150060BBB05061728394A5B6C7D8E9FA0B1C2D3E4F27
+S3150060BBC060718293A4B5C6D7E8F90A1B2C3D4E5F17
+S3150060BBD0708192A3B4C5D6E7F8091A2B3C4D5E6F07
+S3150060BBE08091A2B3C4D5E6F708192A3B4C5D6E7FF7
+S3150060BBF090A1B2C3D4E5F60718293A4B5C6D7E8FE7
+S3150060BC00A0B1C2D3E4F5061728394A5B6C7D8E9FD6
+S3150060BC10B0C1D2E3F405162738495A6B7C8D9EAFC6
+S3150060BC20C0D1E2F30415263748596A7B8C9DAEBFB6
+S3150060BC30D0E1F2031425364758697A8B9CADBECFA6
+S3150060BC40E0F102132435465768798A9BACBDCEDF96
+S3150060BC50F00112233445566778899AABBCCDDEEF86
+S3150060BC6000112233445566778899AABBCCDDEEFF76
+S3150060BC70102132435465768798A9BACBDCEDFE0F66
+S3150060BC802031425364758697A8B9CADBECFD0E1F56
+S3150060BC9030415263748596A7B8C9DAEBFC0D1E2F46
+S3150060BCA0405162738495A6B7C8D9EAFB0C1D2E3F36
+S3150060BCB05061728394A5B6C7D8E9FA0B1C2D3E4F26
+S3150060BCC060718293A4B5C6D7E8F90A1B2C3D4E5F16
+S3150060BCD0708192A3B4C5D6E7F8091A2B3C4D5E6F06
+S3150060BCE08091A2B3C4D5E6F708192A3B4C5D6E7FF6
+S3150060BCF090A1B2C3D4E5F60718293A4B5C6D7E8FE6
+S3150060BD00A0B1C2D3E4F5061728394A5B6C7D8E9FD5
+S3150060BD10B0C1D2E3F405162738495A6B7C8D9EAFC5
+S3150060BD20C0D1E2F30415263748596A7B8C9DAEBFB5
+S3150060BD30D0E1F2031425364758697A8B9CADBECFA5
+S3150060BD40E0F102132435465768798A9BACBDCEDF95
+S3150060BD50F00112233445566778899AABBCCDDEEF85
+S3150060BD6000112233445566778899AABBCCDDEEFF75
+S3150060BD70102132435465768798A9BACBDCEDFE0F65
+S3150060BD802031425364758697A8B9CADBECFD0E1F55
+S3150060BD9030415263748596A7B8C9DAEBFC0D1E2F45
+S3150060BDA0405162738495A6B7C8D9EAFB0C1D2E3F35
+S3150060BDB05061728394A5B6C7D8E9FA0B1C2D3E4F25
+S3150060BDC060718293A4B5C6D7E8F90A1B2C3D4E5F15
+S3150060BDD0708192A3B4C5D6E7F8091A2B3C4D5E6F05
+S3150060BDE08091A2B3C4D5E6F708192A3B4C5D6E7FF5
+S3150060BDF090A1B2C3D4E5F60718293A4B5C6D7E8FE5
+S3150060BE00A0B1C2D3E4F5061728394A5B6C7D8E9FD4
+S3150060BE10B0C1D2E3F405162738495A6B7C8D9EAFC4
+S3150060BE20C0D1E2F30415263748596A7B8C9DAEBFB4
+S3150060BE30D0E1F2031425364758697A8B9CADBECFA4
+S3150060BE40E0F102132435465768798A9BACBDCEDF94
+S3150060BE50F00112233445566778899AABBCCDDEEF84
+S3150060BE6000112233445566778899AABBCCDDEEFF74
+S3150060BE70102132435465768798A9BACBDCEDFE0F64
+S3150060BE802031425364758697A8B9CADBECFD0E1F54
+S3150060BE9030415263748596A7B8C9DAEBFC0D1E2F44
+S3150060BEA0405162738495A6B7C8D9EAFB0C1D2E3F34
+S3150060BEB05061728394A5B6C7D8E9FA0B1C2D3E4F24
+S3150060BEC060718293A4B5C6D7E8F90A1B2C3D4E5F14
+S3150060BED0708192A3B4C5D6E7F8091A2B3C4D5E6F04
+S3150060BEE08091A2B3C4D5E6F708192A3B4C5D6E7FF4
+S3150060BEF090A1B2C3D4E5F60718293A4B5C6D7E8FE4
+S3150060BF00A0B1C2D3E4F5061728394A5B6C7D8E9FD3
+S3150060BF10B0C1D2E3F405162738495A6B7C8D9EAFC3
+S3150060BF20C0D1E2F30415263748596A7B8C9DAEBFB3
+S3150060BF30D0E1F2031425364758697A8B9CADBECFA3
+S3150060BF40E0F102132435465768798A9BACBDCEDF93
+S3150060BF50F00112233445566778899AABBCCDDEEF83
+S3150060BF6000112233445566778899AABBCCDDEEFF73
+S3150060BF70102132435465768798A9BACBDCEDFE0F63
+S3150060BF802031425364758697A8B9CADBECFD0E1F53
+S3150060BF9030415263748596A7B8C9DAEBFC0D1E2F43
+S3150060BFA0405162738495A6B7C8D9EAFB0C1D2E3F33
+S3150060BFB05061728394A5B6C7D8E9FA0B1C2D3E4F23
+S3150060BFC060718293A4B5C6D7E8F90A1B2C3D4E5F13
+S3150060BFD0708192A3B4C5D6E7F8091A2B3C4D5E6F03
+S3150060BFE08091A2B3C4D5E6F708192A3B4C5D6E7FF3
+S3150060BFF090A1B2C3D4E5F60718293A4B5C6D7E8FE3
+S3150060C000A0B1C2D3E4F5061728394A5B6C7D8E9FD2
+S3150060C010B0C1D2E3F405162738495A6B7C8D9EAFC2
+S3150060C020C0D1E2F30415263748596A7B8C9DAEBFB2
+S3150060C030D0E1F2031425364758697A8B9CADBECFA2
+S3150060C040E0F102132435465768798A9BACBDCEDF92
+S3150060C050F00112233445566778899AABBCCDDEEF82
+S3150060C06000112233445566778899AABBCCDDEEFF72
+S3150060C070102132435465768798A9BACBDCEDFE0F62
+S3150060C0802031425364758697A8B9CADBECFD0E1F52
+S3150060C09030415263748596A7B8C9DAEBFC0D1E2F42
+S3150060C0A0405162738495A6B7C8D9EAFB0C1D2E3F32
+S3150060C0B05061728394A5B6C7D8E9FA0B1C2D3E4F22
+S3150060C0C060718293A4B5C6D7E8F90A1B2C3D4E5F12
+S3150060C0D0708192A3B4C5D6E7F8091A2B3C4D5E6F02
+S3150060C0E08091A2B3C4D5E6F708192A3B4C5D6E7FF2
+S3150060C0F090A1B2C3D4E5F60718293A4B5C6D7E8FE2
+S3150060C100A0B1C2D3E4F5061728394A5B6C7D8E9FD1
+S3150060C110B0C1D2E3F405162738495A6B7C8D9EAFC1
+S3150060C120C0D1E2F30415263748596A7B8C9DAEBFB1
+S3150060C130D0E1F2031425364758697A8B9CADBECFA1
+S3150060C140E0F102132435465768798A9BACBDCEDF91
+S3150060C150F00112233445566778899AABBCCDDEEF81
+S3150060C16000112233445566778899AABBCCDDEEFF71
+S3150060C170102132435465768798A9BACBDCEDFE0F61
+S3150060C1802031425364758697A8B9CADBECFD0E1F51
+S3150060C19030415263748596A7B8C9DAEBFC0D1E2F41
+S3150060C1A0405162738495A6B7C8D9EAFB0C1D2E3F31
+S3150060C1B05061728394A5B6C7D8E9FA0B1C2D3E4F21
+S3150060C1C060718293A4B5C6D7E8F90A1B2C3D4E5F11
+S3150060C1D0708192A3B4C5D6E7F8091A2B3C4D5E6F01
+S3150060C1E08091A2B3C4D5E6F708192A3B4C5D6E7FF1
+S3150060C1F090A1B2C3D4E5F60718293A4B5C6D7E8FE1
+S3150060C200A0B1C2D3E4F5061728394A5B6C7D8E9FD0
+S3150060C210B0C1D2E3F405162738495A6B7C8D9EAFC0
+S3150060C220C0D1E2F30415263748596A7B8C9DAEBFB0
+S3150060C230D0E1F2031425364758697A8B9CADBECFA0
+S3150060C240E0F102132435465768798A9BACBDCEDF90
+S3150060C250F00112233445566778899AABBCCDDEEF80
+S3150060C26000112233445566778899AABBCCDDEEFF70
+S3150060C270102132435465768798A9BACBDCEDFE0F60
+S3150060C2802031425364758697A8B9CADBECFD0E1F50
+S3150060C29030415263748596A7B8C9DAEBFC0D1E2F40
+S3150060C2A0405162738495A6B7C8D9EAFB0C1D2E3F30
+S3150060C2B05061728394A5B6C7D8E9FA0B1C2D3E4F20
+S3150060C2C060718293A4B5C6D7E8F90A1B2C3D4E5F10
+S3150060C2D0708192A3B4C5D6E7F8091A2B3C4D5E6F00
+S3150060C2E08091A2B3C4D5E6F708192A3B4C5D6E7FF0
+S3150060C2F090A1B2C3D4E5F60718293A4B5C6D7E8FE0
+S3150060C300A0B1C2D3E4F5061728394A5B6C7D8E9FCF
+S3150060C310B0C1D2E3F405162738495A6B7C8D9EAFBF
+S3150060C320C0D1E2F30415263748596A7B8C9DAEBFAF
+S3150060C330D0E1F2031425364758697A8B9CADBECF9F
+S3150060C340E0F102132435465768798A9BACBDCEDF8F
+S3150060C350F00112233445566778899AABBCCDDEEF7F
+S3150060C36000112233445566778899AABBCCDDEEFF6F
+S3150060C370102132435465768798A9BACBDCEDFE0F5F
+S3150060C3802031425364758697A8B9CADBECFD0E1F4F
+S3150060C39030415263748596A7B8C9DAEBFC0D1E2F3F
+S3150060C3A0405162738495A6B7C8D9EAFB0C1D2E3F2F
+S3150060C3B05061728394A5B6C7D8E9FA0B1C2D3E4F1F
+S3150060C3C060718293A4B5C6D7E8F90A1B2C3D4E5F0F
+S3150060C3D0708192A3B4C5D6E7F8091A2B3C4D5E6FFF
+S3150060C3E08091A2B3C4D5E6F708192A3B4C5D6E7FEF
+S3150060C3F090A1B2C3D4E5F60718293A4B5C6D7E8FDF
+S3150060C400A0B1C2D3E4F5061728394A5B6C7D8E9FCE
+S3150060C410B0C1D2E3F405162738495A6B7C8D9EAFBE
+S3150060C420C0D1E2F30415263748596A7B8C9DAEBFAE
+S3150060C430D0E1F2031425364758697A8B9CADBECF9E
+S3150060C440E0F102132435465768798A9BACBDCEDF8E
+S3150060C450F00112233445566778899AABBCCDDEEF7E
+S3150060C46000112233445566778899AABBCCDDEEFF6E
+S3150060C470102132435465768798A9BACBDCEDFE0F5E
+S3150060C4802031425364758697A8B9CADBECFD0E1F4E
+S3150060C49030415263748596A7B8C9DAEBFC0D1E2F3E
+S3150060C4A0405162738495A6B7C8D9EAFB0C1D2E3F2E
+S3150060C4B05061728394A5B6C7D8E9FA0B1C2D3E4F1E
+S3150060C4C060718293A4B5C6D7E8F90A1B2C3D4E5F0E
+S3150060C4D0708192A3B4C5D6E7F8091A2B3C4D5E6FFE
+S3150060C4E08091A2B3C4D5E6F708192A3B4C5D6E7FEE
+S3150060C4F090A1B2C3D4E5F60718293A4B5C6D7E8FDE
+S3150060C500A0B1C2D3E4F5061728394A5B6C7D8E9FCD
+S3150060C510B0C1D2E3F405162738495A6B7C8D9EAFBD
+S3150060C520C0D1E2F30415263748596A7B8C9DAEBFAD
+S3150060C530D0E1F2031425364758697A8B9CADBECF9D
+S3150060C540E0F102132435465768798A9BACBDCEDF8D
+S3150060C550F00112233445566778899AABBCCDDEEF7D
+S3150060C56000112233445566778899AABBCCDDEEFF6D
+S3150060C570102132435465768798A9BACBDCEDFE0F5D
+S3150060C5802031425364758697A8B9CADBECFD0E1F4D
+S3150060C59030415263748596A7B8C9DAEBFC0D1E2F3D
+S3150060C5A0405162738495A6B7C8D9EAFB0C1D2E3F2D
+S3150060C5B05061728394A5B6C7D8E9FA0B1C2D3E4F1D
+S3150060C5C060718293A4B5C6D7E8F90A1B2C3D4E5F0D
+S3150060C5D0708192A3B4C5D6E7F8091A2B3C4D5E6FFD
+S3150060C5E08091A2B3C4D5E6F708192A3B4C5D6E7FED
+S3150060C5F090A1B2C3D4E5F60718293A4B5C6D7E8FDD
+S3150060C600A0B1C2D3E4F5061728394A5B6C7D8E9FCC
+S3150060C610B0C1D2E3F405162738495A6B7C8D9EAFBC
+S3150060C620C0D1E2F30415263748596A7B8C9DAEBFAC
+S3150060C630D0E1F2031425364758697A8B9CADBECF9C
+S3150060C640E0F102132435465768798A9BACBDCEDF8C
+S3150060C650F00112233445566778899AABBCCDDEEF7C
+S3150060C66000112233445566778899AABBCCDDEEFF6C
+S3150060C670102132435465768798A9BACBDCEDFE0F5C
+S3150060C6802031425364758697A8B9CADBECFD0E1F4C
+S3150060C69030415263748596A7B8C9DAEBFC0D1E2F3C
+S3150060C6A0405162738495A6B7C8D9EAFB0C1D2E3F2C
+S3150060C6B05061728394A5B6C7D8E9FA0B1C2D3E4F1C
+S3150060C6C060718293A4B5C6D7E8F90A1B2C3D4E5F0C
+S3150060C6D0708192A3B4C5D6E7F8091A2B3C4D5E6FFC
+S3150060C6E08091A2B3C4D5E6F708192A3B4C5D6E7FEC
+S3150060C6F090A1B2C3D4E5F60718293A4B5C6D7E8FDC
+S3150060C700A0B1C2D3E4F5061728394A5B6C7D8E9FCB
+S3150060C710B0C1D2E3F405162738495A6B7C8D9EAFBB
+S3150060C720C0D1E2F30415263748596A7B8C9DAEBFAB
+S3150060C730D0E1F2031425364758697A8B9CADBECF9B
+S3150060C740E0F102132435465768798A9BACBDCEDF8B
+S3150060C750F00112233445566778899AABBCCDDEEF7B
+S3150060C76000112233445566778899AABBCCDDEEFF6B
+S3150060C770102132435465768798A9BACBDCEDFE0F5B
+S3150060C7802031425364758697A8B9CADBECFD0E1F4B
+S3150060C79030415263748596A7B8C9DAEBFC0D1E2F3B
+S3150060C7A0405162738495A6B7C8D9EAFB0C1D2E3F2B
+S3150060C7B05061728394A5B6C7D8E9FA0B1C2D3E4F1B
+S3150060C7C060718293A4B5C6D7E8F90A1B2C3D4E5F0B
+S3150060C7D0708192A3B4C5D6E7F8091A2B3C4D5E6FFB
+S3150060C7E08091A2B3C4D5E6F708192A3B4C5D6E7FEB
+S3150060C7F090A1B2C3D4E5F60718293A4B5C6D7E8FDB
+S3150060C800A0B1C2D3E4F5061728394A5B6C7D8E9FCA
+S3150060C810B0C1D2E3F405162738495A6B7C8D9EAFBA
+S3150060C820C0D1E2F30415263748596A7B8C9DAEBFAA
+S3150060C830D0E1F2031425364758697A8B9CADBECF9A
+S3150060C840E0F102132435465768798A9BACBDCEDF8A
+S3150060C850F00112233445566778899AABBCCDDEEF7A
+S3150060C86000112233445566778899AABBCCDDEEFF6A
+S3150060C870102132435465768798A9BACBDCEDFE0F5A
+S3150060C8802031425364758697A8B9CADBECFD0E1F4A
+S3150060C89030415263748596A7B8C9DAEBFC0D1E2F3A
+S3150060C8A0405162738495A6B7C8D9EAFB0C1D2E3F2A
+S3150060C8B05061728394A5B6C7D8E9FA0B1C2D3E4F1A
+S3150060C8C060718293A4B5C6D7E8F90A1B2C3D4E5F0A
+S3150060C8D0708192A3B4C5D6E7F8091A2B3C4D5E6FFA
+S3150060C8E08091A2B3C4D5E6F708192A3B4C5D6E7FEA
+S3150060C8F090A1B2C3D4E5F60718293A4B5C6D7E8FDA
+S3150060C900A0B1C2D3E4F5061728394A5B6C7D8E9FC9
+S3150060C910B0C1D2E3F405162738495A6B7C8D9EAFB9
+S3150060C920C0D1E2F30415263748596A7B8C9DAEBFA9
+S3150060C930D0E1F2031425364758697A8B9CADBECF99
+S3150060C940E0F102132435465768798A9BACBDCEDF89
+S3150060C950F00112233445566778899AABBCCDDEEF79
+S3150060C96000112233445566778899AABBCCDDEEFF69
+S3150060C970102132435465768798A9BACBDCEDFE0F59
+S3150060C9802031425364758697A8B9CADBECFD0E1F49
+S3150060C99030415263748596A7B8C9DAEBFC0D1E2F39
+S3150060C9A0405162738495A6B7C8D9EAFB0C1D2E3F29
+S3150060C9B05061728394A5B6C7D8E9FA0B1C2D3E4F19
+S3150060C9C060718293A4B5C6D7E8F90A1B2C3D4E5F09
+S3150060C9D0708192A3B4C5D6E7F8091A2B3C4D5E6FF9
+S3150060C9E08091A2B3C4D5E6F708192A3B4C5D6E7FE9
+S3150060C9F090A1B2C3D4E5F60718293A4B5C6D7E8FD9
+S3150060CA00A0B1C2D3E4F5061728394A5B6C7D8E9FC8
+S3150060CA10B0C1D2E3F405162738495A6B7C8D9EAFB8
+S3150060CA20C0D1E2F30415263748596A7B8C9DAEBFA8
+S3150060CA30D0E1F2031425364758697A8B9CADBECF98
+S3150060CA40E0F102132435465768798A9BACBDCEDF88
+S3150060CA50F00112233445566778899AABBCCDDEEF78
+S3150060CA6000112233445566778899AABBCCDDEEFF68
+S3150060CA70102132435465768798A9BACBDCEDFE0F58
+S3150060CA802031425364758697A8B9CADBECFD0E1F48
+S3150060CA9030415263748596A7B8C9DAEBFC0D1E2F38
+S3150060CAA0405162738495A6B7C8D9EAFB0C1D2E3F28
+S3150060CAB05061728394A5B6C7D8E9FA0B1C2D3E4F18
+S3150060CAC060718293A4B5C6D7E8F90A1B2C3D4E5F08
+S3150060CAD0708192A3B4C5D6E7F8091A2B3C4D5E6FF8
+S3150060CAE08091A2B3C4D5E6F708192A3B4C5D6E7FE8
+S3150060CAF090A1B2C3D4E5F60718293A4B5C6D7E8FD8
+S3150060CB00A0B1C2D3E4F5061728394A5B6C7D8E9FC7
+S3150060CB10B0C1D2E3F405162738495A6B7C8D9EAFB7
+S3150060CB20C0D1E2F30415263748596A7B8C9DAEBFA7
+S3150060CB30D0E1F2031425364758697A8B9CADBECF97
+S3150060CB40E0F102132435465768798A9BACBDCEDF87
+S3150060CB50F00112233445566778899AABBCCDDEEF77
+S3150060CB6000112233445566778899AABBCCDDEEFF67
+S3150060CB70102132435465768798A9BACBDCEDFE0F57
+S3150060CB802031425364758697A8B9CADBECFD0E1F47
+S3150060CB9030415263748596A7B8C9DAEBFC0D1E2F37
+S3150060CBA0405162738495A6B7C8D9EAFB0C1D2E3F27
+S3150060CBB05061728394A5B6C7D8E9FA0B1C2D3E4F17
+S3150060CBC060718293A4B5C6D7E8F90A1B2C3D4E5F07
+S3150060CBD0708192A3B4C5D6E7F8091A2B3C4D5E6FF7
+S3150060CBE08091A2B3C4D5E6F708192A3B4C5D6E7FE7
+S3150060CBF090A1B2C3D4E5F60718293A4B5C6D7E8FD7
+S3150060CC00A0B1C2D3E4F5061728394A5B6C7D8E9FC6
+S3150060CC10B0C1D2E3F405162738495A6B7C8D9EAFB6
+S3150060CC20C0D1E2F30415263748596A7B8C9DAEBFA6
+S3150060CC30D0E1F2031425364758697A8B9CADBECF96
+S3150060CC40E0F102132435465768798A9BACBDCEDF86
+S3150060CC50F00112233445566778899AABBCCDDEEF76
+S3150060CC6000112233445566778899AABBCCDDEEFF66
+S3150060CC70102132435465768798A9BACBDCEDFE0F56
+S3150060CC802031425364758697A8B9CADBECFD0E1F46
+S3150060CC9030415263748596A7B8C9DAEBFC0D1E2F36
+S3150060CCA0405162738495A6B7C8D9EAFB0C1D2E3F26
+S3150060CCB05061728394A5B6C7D8E9FA0B1C2D3E4F16
+S3150060CCC060718293A4B5C6D7E8F90A1B2C3D4E5F06
+S3150060CCD0708192A3B4C5D6E7F8091A2B3C4D5E6FF6
+S3150060CCE08091A2B3C4D5E6F708192A3B4C5D6E7FE6
+S3150060CCF090A1B2C3D4E5F60718293A4B5C6D7E8FD6
+S3150060CD00A0B1C2D3E4F5061728394A5B6C7D8E9FC5
+S3150060CD10B0C1D2E3F405162738495A6B7C8D9EAFB5
+S3150060CD20C0D1E2F30415263748596A7B8C9DAEBFA5
+S3150060CD30D0E1F2031425364758697A8B9CADBECF95
+S3150060CD40E0F102132435465768798A9BACBDCEDF85
+S3150060CD50F00112233445566778899AABBCCDDEEF75
+S3150060CD6000112233445566778899AABBCCDDEEFF65
+S3150060CD70102132435465768798A9BACBDCEDFE0F55
+S3150060CD802031425364758697A8B9CADBECFD0E1F45
+S3150060CD9030415263748596A7B8C9DAEBFC0D1E2F35
+S3150060CDA0405162738495A6B7C8D9EAFB0C1D2E3F25
+S3150060CDB05061728394A5B6C7D8E9FA0B1C2D3E4F15
+S3150060CDC060718293A4B5C6D7E8F90A1B2C3D4E5F05
+S3150060CDD0708192A3B4C5D6E7F8091A2B3C4D5E6FF5
+S3150060CDE08091A2B3C4D5E6F708192A3B4C5D6E7FE5
+S3150060CDF090A1B2C3D4E5F60718293A4B5C6D7E8FD5
+S3150060CE00A0B1C2D3E4F5061728394A5B6C7D8E9FC4
+S3150060CE10B0C1D2E3F405162738495A6B7C8D9EAFB4
+S3150060CE20C0D1E2F30415263748596A7B8C9DAEBFA4
+S3150060CE30D0E1F2031425364758697A8B9CADBECF94
+S3150060CE40E0F102132435465768798A9BACBDCEDF84
+S3150060CE50F00112233445566778899AABBCCDDEEF74
+S3150060CE6000112233445566778899AABBCCDDEEFF64
+S3150060CE70102132435465768798A9BACBDCEDFE0F54
+S3150060CE802031425364758697A8B9CADBECFD0E1F44
+S3150060CE9030415263748596A7B8C9DAEBFC0D1E2F34
+S3150060CEA0405162738495A6B7C8D9EAFB0C1D2E3F24
+S3150060CEB05061728394A5B6C7D8E9FA0B1C2D3E4F14
+S3150060CEC060718293A4B5C6D7E8F90A1B2C3D4E5F04
+S3150060CED0708192A3B4C5D6E7F8091A2B3C4D5E6FF4
+S3150060CEE08091A2B3C4D5E6F708192A3B4C5D6E7FE4
+S3150060CEF090A1B2C3D4E5F60718293A4B5C6D7E8FD4
+S3150060CF00A0B1C2D3E4F5061728394A5B6C7D8E9FC3
+S3150060CF10B0C1D2E3F405162738495A6B7C8D9EAFB3
+S3150060CF20C0D1E2F30415263748596A7B8C9DAEBFA3
+S3150060CF30D0E1F2031425364758697A8B9CADBECF93
+S3150060CF40E0F102132435465768798A9BACBDCEDF83
+S3150060CF50F00112233445566778899AABBCCDDEEF73
+S3150060CF6000112233445566778899AABBCCDDEEFF63
+S3150060CF70102132435465768798A9BACBDCEDFE0F53
+S3150060CF802031425364758697A8B9CADBECFD0E1F43
+S3150060CF9030415263748596A7B8C9DAEBFC0D1E2F33
+S3150060CFA0405162738495A6B7C8D9EAFB0C1D2E3F23
+S3150060CFB05061728394A5B6C7D8E9FA0B1C2D3E4F13
+S3150060CFC060718293A4B5C6D7E8F90A1B2C3D4E5F03
+S3150060CFD0708192A3B4C5D6E7F8091A2B3C4D5E6FF3
+S3150060CFE08091A2B3C4D5E6F708192A3B4C5D6E7FE3
+S3150060CFF090A1B2C3D4E5F60718293A4B5C6D7E8FD3
+S3150060D000A0B1C2D3E4F5061728394A5B6C7D8E9FC2
+S3150060D010B0C1D2E3F405162738495A6B7C8D9EAFB2
+S3150060D020C0D1E2F30415263748596A7B8C9DAEBFA2
+S3150060D030D0E1F2031425364758697A8B9CADBECF92
+S3150060D040E0F102132435465768798A9BACBDCEDF82
+S3150060D050F00112233445566778899AABBCCDDEEF72
+S3150060D06000112233445566778899AABBCCDDEEFF62
+S3150060D070102132435465768798A9BACBDCEDFE0F52
+S3150060D0802031425364758697A8B9CADBECFD0E1F42
+S3150060D09030415263748596A7B8C9DAEBFC0D1E2F32
+S3150060D0A0405162738495A6B7C8D9EAFB0C1D2E3F22
+S3150060D0B05061728394A5B6C7D8E9FA0B1C2D3E4F12
+S3150060D0C060718293A4B5C6D7E8F90A1B2C3D4E5F02
+S3150060D0D0708192A3B4C5D6E7F8091A2B3C4D5E6FF2
+S3150060D0E08091A2B3C4D5E6F708192A3B4C5D6E7FE2
+S3150060D0F090A1B2C3D4E5F60718293A4B5C6D7E8FD2
+S3150060D100A0B1C2D3E4F5061728394A5B6C7D8E9FC1
+S3150060D110B0C1D2E3F405162738495A6B7C8D9EAFB1
+S3150060D120C0D1E2F30415263748596A7B8C9DAEBFA1
+S3150060D130D0E1F2031425364758697A8B9CADBECF91
+S3150060D140E0F102132435465768798A9BACBDCEDF81
+S3150060D150F00112233445566778899AABBCCDDEEF71
+S3150060D16000112233445566778899AABBCCDDEEFF61
+S3150060D170102132435465768798A9BACBDCEDFE0F51
+S3150060D1802031425364758697A8B9CADBECFD0E1F41
+S3150060D19030415263748596A7B8C9DAEBFC0D1E2F31
+S3150060D1A0405162738495A6B7C8D9EAFB0C1D2E3F21
+S3150060D1B05061728394A5B6C7D8E9FA0B1C2D3E4F11
+S3150060D1C060718293A4B5C6D7E8F90A1B2C3D4E5F01
+S3150060D1D0708192A3B4C5D6E7F8091A2B3C4D5E6FF1
+S3150060D1E08091A2B3C4D5E6F708192A3B4C5D6E7FE1
+S3150060D1F090A1B2C3D4E5F60718293A4B5C6D7E8FD1
+S3150060D200A0B1C2D3E4F5061728394A5B6C7D8E9FC0
+S3150060D210B0C1D2E3F405162738495A6B7C8D9EAFB0
+S3150060D220C0D1E2F30415263748596A7B8C9DAEBFA0
+S3150060D230D0E1F2031425364758697A8B9CADBECF90
+S3150060D240E0F102132435465768798A9BACBDCEDF80
+S3150060D250F00112233445566778899AABBCCDDEEF70
+S3150060D26000112233445566778899AABBCCDDEEFF60
+S3150060D270102132435465768798A9BACBDCEDFE0F50
+S3150060D2802031425364758697A8B9CADBECFD0E1F40
+S3150060D29030415263748596A7B8C9DAEBFC0D1E2F30
+S3150060D2A0405162738495A6B7C8D9EAFB0C1D2E3F20
+S3150060D2B05061728394A5B6C7D8E9FA0B1C2D3E4F10
+S3150060D2C060718293A4B5C6D7E8F90A1B2C3D4E5F00
+S3150060D2D0708192A3B4C5D6E7F8091A2B3C4D5E6FF0
+S3150060D2E08091A2B3C4D5E6F708192A3B4C5D6E7FE0
+S3150060D2F090A1B2C3D4E5F60718293A4B5C6D7E8FD0
+S3150060D300A0B1C2D3E4F5061728394A5B6C7D8E9FBF
+S3150060D310B0C1D2E3F405162738495A6B7C8D9EAFAF
+S3150060D320C0D1E2F30415263748596A7B8C9DAEBF9F
+S3150060D330D0E1F2031425364758697A8B9CADBECF8F
+S3150060D340E0F102132435465768798A9BACBDCEDF7F
+S3150060D350F00112233445566778899AABBCCDDEEF6F
+S3150060D36000112233445566778899AABBCCDDEEFF5F
+S3150060D370102132435465768798A9BACBDCEDFE0F4F
+S3150060D3802031425364758697A8B9CADBECFD0E1F3F
+S3150060D39030415263748596A7B8C9DAEBFC0D1E2F2F
+S3150060D3A0405162738495A6B7C8D9EAFB0C1D2E3F1F
+S3150060D3B05061728394A5B6C7D8E9FA0B1C2D3E4F0F
+S3150060D3C060718293A4B5C6D7E8F90A1B2C3D4E5FFF
+S3150060D3D0708192A3B4C5D6E7F8091A2B3C4D5E6FEF
+S3150060D3E08091A2B3C4D5E6F708192A3B4C5D6E7FDF
+S3150060D3F090A1B2C3D4E5F60718293A4B5C6D7E8FCF
+S3150060D400A0B1C2D3E4F5061728394A5B6C7D8E9FBE
+S3150060D410B0C1D2E3F405162738495A6B7C8D9EAFAE
+S3150060D420C0D1E2F30415263748596A7B8C9DAEBF9E
+S3150060D430D0E1F2031425364758697A8B9CADBECF8E
+S3150060D440E0F102132435465768798A9BACBDCEDF7E
+S3150060D450F00112233445566778899AABBCCDDEEF6E
+S3150060D46000112233445566778899AABBCCDDEEFF5E
+S3150060D470102132435465768798A9BACBDCEDFE0F4E
+S3150060D4802031425364758697A8B9CADBECFD0E1F3E
+S3150060D49030415263748596A7B8C9DAEBFC0D1E2F2E
+S3150060D4A0405162738495A6B7C8D9EAFB0C1D2E3F1E
+S3150060D4B05061728394A5B6C7D8E9FA0B1C2D3E4F0E
+S3150060D4C060718293A4B5C6D7E8F90A1B2C3D4E5FFE
+S3150060D4D0708192A3B4C5D6E7F8091A2B3C4D5E6FEE
+S3150060D4E08091A2B3C4D5E6F708192A3B4C5D6E7FDE
+S3150060D4F090A1B2C3D4E5F60718293A4B5C6D7E8FCE
+S3150060D500A0B1C2D3E4F5061728394A5B6C7D8E9FBD
+S3150060D510B0C1D2E3F405162738495A6B7C8D9EAFAD
+S3150060D520C0D1E2F30415263748596A7B8C9DAEBF9D
+S3150060D530D0E1F2031425364758697A8B9CADBECF8D
+S3150060D540E0F102132435465768798A9BACBDCEDF7D
+S3150060D550F00112233445566778899AABBCCDDEEF6D
+S3150060D56000112233445566778899AABBCCDDEEFF5D
+S3150060D570102132435465768798A9BACBDCEDFE0F4D
+S3150060D5802031425364758697A8B9CADBECFD0E1F3D
+S3150060D59030415263748596A7B8C9DAEBFC0D1E2F2D
+S3150060D5A0405162738495A6B7C8D9EAFB0C1D2E3F1D
+S3150060D5B05061728394A5B6C7D8E9FA0B1C2D3E4F0D
+S3150060D5C060718293A4B5C6D7E8F90A1B2C3D4E5FFD
+S3150060D5D0708192A3B4C5D6E7F8091A2B3C4D5E6FED
+S3150060D5E08091A2B3C4D5E6F708192A3B4C5D6E7FDD
+S3150060D5F090A1B2C3D4E5F60718293A4B5C6D7E8FCD
+S3150060D600A0B1C2D3E4F5061728394A5B6C7D8E9FBC
+S3150060D610B0C1D2E3F405162738495A6B7C8D9EAFAC
+S3150060D620C0D1E2F30415263748596A7B8C9DAEBF9C
+S3150060D630D0E1F2031425364758697A8B9CADBECF8C
+S3150060D640E0F102132435465768798A9BACBDCEDF7C
+S3150060D650F00112233445566778899AABBCCDDEEF6C
+S3150060D66000112233445566778899AABBCCDDEEFF5C
+S3150060D670102132435465768798A9BACBDCEDFE0F4C
+S3150060D6802031425364758697A8B9CADBECFD0E1F3C
+S3150060D69030415263748596A7B8C9DAEBFC0D1E2F2C
+S3150060D6A0405162738495A6B7C8D9EAFB0C1D2E3F1C
+S3150060D6B05061728394A5B6C7D8E9FA0B1C2D3E4F0C
+S3150060D6C060718293A4B5C6D7E8F90A1B2C3D4E5FFC
+S3150060D6D0708192A3B4C5D6E7F8091A2B3C4D5E6FEC
+S3150060D6E08091A2B3C4D5E6F708192A3B4C5D6E7FDC
+S3150060D6F090A1B2C3D4E5F60718293A4B5C6D7E8FCC
+S3150060D700A0B1C2D3E4F5061728394A5B6C7D8E9FBB
+S3150060D710B0C1D2E3F405162738495A6B7C8D9EAFAB
+S3150060D720C0D1E2F30415263748596A7B8C9DAEBF9B
+S3150060D730D0E1F2031425364758697A8B9CADBECF8B
+S3150060D740E0F102132435465768798A9BACBDCEDF7B
+S3150060D750F00112233445566778899AABBCCDDEEF6B
+S3150060D76000112233445566778899AABBCCDDEEFF5B
+S3150060D770102132435465768798A9BACBDCEDFE0F4B
+S3150060D7802031425364758697A8B9CADBECFD0E1F3B
+S3150060D79030415263748596A7B8C9DAEBFC0D1E2F2B
+S3150060D7A0405162738495A6B7C8D9EAFB0C1D2E3F1B
+S3150060D7B05061728394A5B6C7D8E9FA0B1C2D3E4F0B
+S3150060D7C060718293A4B5C6D7E8F90A1B2C3D4E5FFB
+S3150060D7D0708192A3B4C5D6E7F8091A2B3C4D5E6FEB
+S3150060D7E08091A2B3C4D5E6F708192A3B4C5D6E7FDB
+S3150060D7F090A1B2C3D4E5F60718293A4B5C6D7E8FCB
+S3150060D800A0B1C2D3E4F5061728394A5B6C7D8E9FBA
+S3150060D810B0C1D2E3F405162738495A6B7C8D9EAFAA
+S3150060D820C0D1E2F30415263748596A7B8C9DAEBF9A
+S3150060D830D0E1F2031425364758697A8B9CADBECF8A
+S3150060D840E0F102132435465768798A9BACBDCEDF7A
+S3150060D850F00112233445566778899AABBCCDDEEF6A
+S3150060D86000112233445566778899AABBCCDDEEFF5A
+S3150060D870102132435465768798A9BACBDCEDFE0F4A
+S3150060D8802031425364758697A8B9CADBECFD0E1F3A
+S3150060D89030415263748596A7B8C9DAEBFC0D1E2F2A
+S3150060D8A0405162738495A6B7C8D9EAFB0C1D2E3F1A
+S3150060D8B05061728394A5B6C7D8E9FA0B1C2D3E4F0A
+S3150060D8C060718293A4B5C6D7E8F90A1B2C3D4E5FFA
+S3150060D8D0708192A3B4C5D6E7F8091A2B3C4D5E6FEA
+S3150060D8E08091A2B3C4D5E6F708192A3B4C5D6E7FDA
+S3150060D8F090A1B2C3D4E5F60718293A4B5C6D7E8FCA
+S3150060D900A0B1C2D3E4F5061728394A5B6C7D8E9FB9
+S3150060D910B0C1D2E3F405162738495A6B7C8D9EAFA9
+S3150060D920C0D1E2F30415263748596A7B8C9DAEBF99
+S3150060D930D0E1F2031425364758697A8B9CADBECF89
+S3150060D940E0F102132435465768798A9BACBDCEDF79
+S3150060D950F00112233445566778899AABBCCDDEEF69
+S3150060D96000112233445566778899AABBCCDDEEFF59
+S3150060D970102132435465768798A9BACBDCEDFE0F49
+S3150060D9802031425364758697A8B9CADBECFD0E1F39
+S3150060D99030415263748596A7B8C9DAEBFC0D1E2F29
+S3150060D9A0405162738495A6B7C8D9EAFB0C1D2E3F19
+S3150060D9B05061728394A5B6C7D8E9FA0B1C2D3E4F09
+S3150060D9C060718293A4B5C6D7E8F90A1B2C3D4E5FF9
+S3150060D9D0708192A3B4C5D6E7F8091A2B3C4D5E6FE9
+S3150060D9E08091A2B3C4D5E6F708192A3B4C5D6E7FD9
+S3150060D9F090A1B2C3D4E5F60718293A4B5C6D7E8FC9
+S3150060DA00A0B1C2D3E4F5061728394A5B6C7D8E9FB8
+S3150060DA10B0C1D2E3F405162738495A6B7C8D9EAFA8
+S3150060DA20C0D1E2F30415263748596A7B8C9DAEBF98
+S3150060DA30D0E1F2031425364758697A8B9CADBECF88
+S3150060DA40E0F102132435465768798A9BACBDCEDF78
+S3150060DA50F00112233445566778899AABBCCDDEEF68
+S3150060DA6000112233445566778899AABBCCDDEEFF58
+S3150060DA70102132435465768798A9BACBDCEDFE0F48
+S3150060DA802031425364758697A8B9CADBECFD0E1F38
+S3150060DA9030415263748596A7B8C9DAEBFC0D1E2F28
+S3150060DAA0405162738495A6B7C8D9EAFB0C1D2E3F18
+S3150060DAB05061728394A5B6C7D8E9FA0B1C2D3E4F08
+S3150060DAC060718293A4B5C6D7E8F90A1B2C3D4E5FF8
+S3150060DAD0708192A3B4C5D6E7F8091A2B3C4D5E6FE8
+S3150060DAE08091A2B3C4D5E6F708192A3B4C5D6E7FD8
+S3150060DAF090A1B2C3D4E5F60718293A4B5C6D7E8FC8
+S3150060DB00A0B1C2D3E4F5061728394A5B6C7D8E9FB7
+S3150060DB10B0C1D2E3F405162738495A6B7C8D9EAFA7
+S3150060DB20C0D1E2F30415263748596A7B8C9DAEBF97
+S3150060DB30D0E1F2031425364758697A8B9CADBECF87
+S3150060DB40E0F102132435465768798A9BACBDCEDF77
+S3150060DB50F00112233445566778899AABBCCDDEEF67
+S3150060DB6000112233445566778899AABBCCDDEEFF57
+S3150060DB70102132435465768798A9BACBDCEDFE0F47
+S3150060DB802031425364758697A8B9CADBECFD0E1F37
+S3150060DB9030415263748596A7B8C9DAEBFC0D1E2F27
+S3150060DBA0405162738495A6B7C8D9EAFB0C1D2E3F17
+S3150060DBB05061728394A5B6C7D8E9FA0B1C2D3E4F07
+S3150060DBC060718293A4B5C6D7E8F90A1B2C3D4E5FF7
+S3150060DBD0708192A3B4C5D6E7F8091A2B3C4D5E6FE7
+S3150060DBE08091A2B3C4D5E6F708192A3B4C5D6E7FD7
+S3150060DBF090A1B2C3D4E5F60718293A4B5C6D7E8FC7
+S3150060DC00A0B1C2D3E4F5061728394A5B6C7D8E9FB6
+S3150060DC10B0C1D2E3F405162738495A6B7C8D9EAFA6
+S3150060DC20C0D1E2F30415263748596A7B8C9DAEBF96
+S3150060DC30D0E1F2031425364758697A8B9CADBECF86
+S3150060DC40E0F102132435465768798A9BACBDCEDF76
+S3150060DC50F00112233445566778899AABBCCDDEEF66
+S3150060DC6000112233445566778899AABBCCDDEEFF56
+S3150060DC70102132435465768798A9BACBDCEDFE0F46
+S3150060DC802031425364758697A8B9CADBECFD0E1F36
+S3150060DC9030415263748596A7B8C9DAEBFC0D1E2F26
+S3150060DCA0405162738495A6B7C8D9EAFB0C1D2E3F16
+S3150060DCB05061728394A5B6C7D8E9FA0B1C2D3E4F06
+S3150060DCC060718293A4B5C6D7E8F90A1B2C3D4E5FF6
+S3150060DCD0708192A3B4C5D6E7F8091A2B3C4D5E6FE6
+S3150060DCE08091A2B3C4D5E6F708192A3B4C5D6E7FD6
+S3150060DCF090A1B2C3D4E5F60718293A4B5C6D7E8FC6
+S3150060DD00A0B1C2D3E4F5061728394A5B6C7D8E9FB5
+S3150060DD10B0C1D2E3F405162738495A6B7C8D9EAFA5
+S3150060DD20C0D1E2F30415263748596A7B8C9DAEBF95
+S3150060DD30D0E1F2031425364758697A8B9CADBECF85
+S3150060DD40E0F102132435465768798A9BACBDCEDF75
+S3150060DD50F00112233445566778899AABBCCDDEEF65
+S3150060DD6000112233445566778899AABBCCDDEEFF55
+S3150060DD70102132435465768798A9BACBDCEDFE0F45
+S3150060DD802031425364758697A8B9CADBECFD0E1F35
+S3150060DD9030415263748596A7B8C9DAEBFC0D1E2F25
+S3150060DDA0405162738495A6B7C8D9EAFB0C1D2E3F15
+S3150060DDB05061728394A5B6C7D8E9FA0B1C2D3E4F05
+S3150060DDC060718293A4B5C6D7E8F90A1B2C3D4E5FF5
+S3150060DDD0708192A3B4C5D6E7F8091A2B3C4D5E6FE5
+S3150060DDE08091A2B3C4D5E6F708192A3B4C5D6E7FD5
+S3150060DDF090A1B2C3D4E5F60718293A4B5C6D7E8FC5
+S3150060DE00A0B1C2D3E4F5061728394A5B6C7D8E9FB4
+S3150060DE10B0C1D2E3F405162738495A6B7C8D9EAFA4
+S3150060DE20C0D1E2F30415263748596A7B8C9DAEBF94
+S3150060DE30D0E1F2031425364758697A8B9CADBECF84
+S3150060DE40E0F102132435465768798A9BACBDCEDF74
+S3150060DE50F00112233445566778899AABBCCDDEEF64
+S3150060DE6000112233445566778899AABBCCDDEEFF54
+S3150060DE70102132435465768798A9BACBDCEDFE0F44
+S3150060DE802031425364758697A8B9CADBECFD0E1F34
+S3150060DE9030415263748596A7B8C9DAEBFC0D1E2F24
+S3150060DEA0405162738495A6B7C8D9EAFB0C1D2E3F14
+S3150060DEB05061728394A5B6C7D8E9FA0B1C2D3E4F04
+S3150060DEC060718293A4B5C6D7E8F90A1B2C3D4E5FF4
+S3150060DED0708192A3B4C5D6E7F8091A2B3C4D5E6FE4
+S3150060DEE08091A2B3C4D5E6F708192A3B4C5D6E7FD4
+S3150060DEF090A1B2C3D4E5F60718293A4B5C6D7E8FC4
+S3150060DF00A0B1C2D3E4F5061728394A5B6C7D8E9FB3
+S3150060DF10B0C1D2E3F405162738495A6B7C8D9EAFA3
+S3150060DF20C0D1E2F30415263748596A7B8C9DAEBF93
+S3150060DF30D0E1F2031425364758697A8B9CADBECF83
+S3150060DF40E0F102132435465768798A9BACBDCEDF73
+S3150060DF50F00112233445566778899AABBCCDDEEF63
+S3150060DF6000112233445566778899AABBCCDDEEFF53
+S3150060DF70102132435465768798A9BACBDCEDFE0F43
+S3150060DF802031425364758697A8B9CADBECFD0E1F33
+S3150060DF9030415263748596A7B8C9DAEBFC0D1E2F23
+S3150060DFA0405162738495A6B7C8D9EAFB0C1D2E3F13
+S3150060DFB05061728394A5B6C7D8E9FA0B1C2D3E4F03
+S3150060DFC060718293A4B5C6D7E8F90A1B2C3D4E5FF3
+S3150060DFD0708192A3B4C5D6E7F8091A2B3C4D5E6FE3
+S3150060DFE08091A2B3C4D5E6F708192A3B4C5D6E7FD3
+S3150060DFF090A1B2C3D4E5F60718293A4B5C6D7E8FC3
+S3150060E000A0B1C2D3E4F5061728394A5B6C7D8E9FB2
+S3150060E010B0C1D2E3F405162738495A6B7C8D9EAFA2
+S3150060E020C0D1E2F30415263748596A7B8C9DAEBF92
+S3150060E030D0E1F2031425364758697A8B9CADBECF82
+S3150060E040E0F102132435465768798A9BACBDCEDF72
+S3150060E050F00112233445566778899AABBCCDDEEF62
+S3150060E06000112233445566778899AABBCCDDEEFF52
+S3150060E070102132435465768798A9BACBDCEDFE0F42
+S3150060E0802031425364758697A8B9CADBECFD0E1F32
+S3150060E09030415263748596A7B8C9DAEBFC0D1E2F22
+S3150060E0A0405162738495A6B7C8D9EAFB0C1D2E3F12
+S3150060E0B05061728394A5B6C7D8E9FA0B1C2D3E4F02
+S3150060E0C060718293A4B5C6D7E8F90A1B2C3D4E5FF2
+S3150060E0D0708192A3B4C5D6E7F8091A2B3C4D5E6FE2
+S3150060E0E08091A2B3C4D5E6F708192A3B4C5D6E7FD2
+S3150060E0F090A1B2C3D4E5F60718293A4B5C6D7E8FC2
+S3150060E100A0B1C2D3E4F5061728394A5B6C7D8E9FB1
+S3150060E110B0C1D2E3F405162738495A6B7C8D9EAFA1
+S3150060E120C0D1E2F30415263748596A7B8C9DAEBF91
+S3150060E130D0E1F2031425364758697A8B9CADBECF81
+S3150060E140E0F102132435465768798A9BACBDCEDF71
+S3150060E150F00112233445566778899AABBCCDDEEF61
+S3150060E16000112233445566778899AABBCCDDEEFF51
+S3150060E170102132435465768798A9BACBDCEDFE0F41
+S3150060E1802031425364758697A8B9CADBECFD0E1F31
+S3150060E19030415263748596A7B8C9DAEBFC0D1E2F21
+S3150060E1A0405162738495A6B7C8D9EAFB0C1D2E3F11
+S3150060E1B05061728394A5B6C7D8E9FA0B1C2D3E4F01
+S3150060E1C060718293A4B5C6D7E8F90A1B2C3D4E5FF1
+S3150060E1D0708192A3B4C5D6E7F8091A2B3C4D5E6FE1
+S3150060E1E08091A2B3C4D5E6F708192A3B4C5D6E7FD1
+S3150060E1F090A1B2C3D4E5F60718293A4B5C6D7E8FC1
+S3150060E200A0B1C2D3E4F5061728394A5B6C7D8E9FB0
+S3150060E210B0C1D2E3F405162738495A6B7C8D9EAFA0
+S3150060E220C0D1E2F30415263748596A7B8C9DAEBF90
+S3150060E230D0E1F2031425364758697A8B9CADBECF80
+S3150060E240E0F102132435465768798A9BACBDCEDF70
+S3150060E250F00112233445566778899AABBCCDDEEF60
+S3150060E26000112233445566778899AABBCCDDEEFF50
+S3150060E270102132435465768798A9BACBDCEDFE0F40
+S3150060E2802031425364758697A8B9CADBECFD0E1F30
+S3150060E29030415263748596A7B8C9DAEBFC0D1E2F20
+S3150060E2A0405162738495A6B7C8D9EAFB0C1D2E3F10
+S3150060E2B05061728394A5B6C7D8E9FA0B1C2D3E4F00
+S3150060E2C060718293A4B5C6D7E8F90A1B2C3D4E5FF0
+S3150060E2D0708192A3B4C5D6E7F8091A2B3C4D5E6FE0
+S3150060E2E08091A2B3C4D5E6F708192A3B4C5D6E7FD0
+S3150060E2F090A1B2C3D4E5F60718293A4B5C6D7E8FC0
+S3150060E300A0B1C2D3E4F5061728394A5B6C7D8E9FAF
+S3150060E310B0C1D2E3F405162738495A6B7C8D9EAF9F
+S3150060E320C0D1E2F30415263748596A7B8C9DAEBF8F
+S3150060E330D0E1F2031425364758697A8B9CADBECF7F
+S3150060E340E0F102132435465768798A9BACBDCEDF6F
+S3150060E350F00112233445566778899AABBCCDDEEF5F
+S3150060E36000112233445566778899AABBCCDDEEFF4F
+S3150060E370102132435465768798A9BACBDCEDFE0F3F
+S3150060E3802031425364758697A8B9CADBECFD0E1F2F
+S3150060E39030415263748596A7B8C9DAEBFC0D1E2F1F
+S3150060E3A0405162738495A6B7C8D9EAFB0C1D2E3F0F
+S3150060E3B05061728394A5B6C7D8E9FA0B1C2D3E4FFF
+S3150060E3C060718293A4B5C6D7E8F90A1B2C3D4E5FEF
+S3150060E3D0708192A3B4C5D6E7F8091A2B3C4D5E6FDF
+S3150060E3E08091A2B3C4D5E6F708192A3B4C5D6E7FCF
+S3150060E3F090A1B2C3D4E5F60718293A4B5C6D7E8FBF
+S3150060E400A0B1C2D3E4F5061728394A5B6C7D8E9FAE
+S3150060E410B0C1D2E3F405162738495A6B7C8D9EAF9E
+S3150060E420C0D1E2F30415263748596A7B8C9DAEBF8E
+S3150060E430D0E1F2031425364758697A8B9CADBECF7E
+S3150060E440E0F102132435465768798A9BACBDCEDF6E
+S3150060E450F00112233445566778899AABBCCDDEEF5E
+S3150060E46000112233445566778899AABBCCDDEEFF4E
+S3150060E470102132435465768798A9BACBDCEDFE0F3E
+S3150060E4802031425364758697A8B9CADBECFD0E1F2E
+S3150060E49030415263748596A7B8C9DAEBFC0D1E2F1E
+S3150060E4A0405162738495A6B7C8D9EAFB0C1D2E3F0E
+S3150060E4B05061728394A5B6C7D8E9FA0B1C2D3E4FFE
+S3150060E4C060718293A4B5C6D7E8F90A1B2C3D4E5FEE
+S3150060E4D0708192A3B4C5D6E7F8091A2B3C4D5E6FDE
+S3150060E4E08091A2B3C4D5E6F708192A3B4C5D6E7FCE
+S3150060E4F090A1B2C3D4E5F60718293A4B5C6D7E8FBE
+S3150060E500A0B1C2D3E4F5061728394A5B6C7D8E9FAD
+S3150060E510B0C1D2E3F405162738495A6B7C8D9EAF9D
+S3150060E520C0D1E2F30415263748596A7B8C9DAEBF8D
+S3150060E530D0E1F2031425364758697A8B9CADBECF7D
+S3150060E540E0F102132435465768798A9BACBDCEDF6D
+S3150060E550F00112233445566778899AABBCCDDEEF5D
+S3150060E56000112233445566778899AABBCCDDEEFF4D
+S3150060E570102132435465768798A9BACBDCEDFE0F3D
+S3150060E5802031425364758697A8B9CADBECFD0E1F2D
+S3150060E59030415263748596A7B8C9DAEBFC0D1E2F1D
+S3150060E5A0405162738495A6B7C8D9EAFB0C1D2E3F0D
+S3150060E5B05061728394A5B6C7D8E9FA0B1C2D3E4FFD
+S3150060E5C060718293A4B5C6D7E8F90A1B2C3D4E5FED
+S3150060E5D0708192A3B4C5D6E7F8091A2B3C4D5E6FDD
+S3150060E5E08091A2B3C4D5E6F708192A3B4C5D6E7FCD
+S3150060E5F090A1B2C3D4E5F60718293A4B5C6D7E8FBD
+S3150060E600A0B1C2D3E4F5061728394A5B6C7D8E9FAC
+S3150060E610B0C1D2E3F405162738495A6B7C8D9EAF9C
+S3150060E620C0D1E2F30415263748596A7B8C9DAEBF8C
+S3150060E630D0E1F2031425364758697A8B9CADBECF7C
+S3150060E640E0F102132435465768798A9BACBDCEDF6C
+S3150060E650F00112233445566778899AABBCCDDEEF5C
+S3150060E66000112233445566778899AABBCCDDEEFF4C
+S3150060E670102132435465768798A9BACBDCEDFE0F3C
+S3150060E6802031425364758697A8B9CADBECFD0E1F2C
+S3150060E69030415263748596A7B8C9DAEBFC0D1E2F1C
+S3150060E6A0405162738495A6B7C8D9EAFB0C1D2E3F0C
+S3150060E6B05061728394A5B6C7D8E9FA0B1C2D3E4FFC
+S3150060E6C060718293A4B5C6D7E8F90A1B2C3D4E5FEC
+S3150060E6D0708192A3B4C5D6E7F8091A2B3C4D5E6FDC
+S3150060E6E08091A2B3C4D5E6F708192A3B4C5D6E7FCC
+S3150060E6F090A1B2C3D4E5F60718293A4B5C6D7E8FBC
+S3150060E700A0B1C2D3E4F5061728394A5B6C7D8E9FAB
+S3150060E710B0C1D2E3F405162738495A6B7C8D9EAF9B
+S3150060E720C0D1E2F30415263748596A7B8C9DAEBF8B
+S3150060E730D0E1F2031425364758697A8B9CADBECF7B
+S3150060E740E0F102132435465768798A9BACBDCEDF6B
+S3150060E750F00112233445566778899AABBCCDDEEF5B
+S3150060E76000112233445566778899AABBCCDDEEFF4B
+S3150060E770102132435465768798A9BACBDCEDFE0F3B
+S3150060E7802031425364758697A8B9CADBECFD0E1F2B
+S3150060E79030415263748596A7B8C9DAEBFC0D1E2F1B
+S3150060E7A0405162738495A6B7C8D9EAFB0C1D2E3F0B
+S3150060E7B05061728394A5B6C7D8E9FA0B1C2D3E4FFB
+S3150060E7C060718293A4B5C6D7E8F90A1B2C3D4E5FEB
+S3150060E7D0708192A3B4C5D6E7F8091A2B3C4D5E6FDB
+S3150060E7E08091A2B3C4D5E6F708192A3B4C5D6E7FCB
+S3150060E7F090A1B2C3D4E5F60718293A4B5C6D7E8FBB
+S3150060E800A0B1C2D3E4F5061728394A5B6C7D8E9FAA
+S3150060E810B0C1D2E3F405162738495A6B7C8D9EAF9A
+S3150060E820C0D1E2F30415263748596A7B8C9DAEBF8A
+S3150060E830D0E1F2031425364758697A8B9CADBECF7A
+S3150060E840E0F102132435465768798A9BACBDCEDF6A
+S3150060E850F00112233445566778899AABBCCDDEEF5A
+S3150060E86000112233445566778899AABBCCDDEEFF4A
+S3150060E870102132435465768798A9BACBDCEDFE0F3A
+S3150060E8802031425364758697A8B9CADBECFD0E1F2A
+S3150060E89030415263748596A7B8C9DAEBFC0D1E2F1A
+S3150060E8A0405162738495A6B7C8D9EAFB0C1D2E3F0A
+S3150060E8B05061728394A5B6C7D8E9FA0B1C2D3E4FFA
+S3150060E8C060718293A4B5C6D7E8F90A1B2C3D4E5FEA
+S3150060E8D0708192A3B4C5D6E7F8091A2B3C4D5E6FDA
+S3150060E8E08091A2B3C4D5E6F708192A3B4C5D6E7FCA
+S3150060E8F090A1B2C3D4E5F60718293A4B5C6D7E8FBA
+S3150060E900A0B1C2D3E4F5061728394A5B6C7D8E9FA9
+S3150060E910B0C1D2E3F405162738495A6B7C8D9EAF99
+S3150060E920C0D1E2F30415263748596A7B8C9DAEBF89
+S3150060E930D0E1F2031425364758697A8B9CADBECF79
+S3150060E940E0F102132435465768798A9BACBDCEDF69
+S3150060E950F00112233445566778899AABBCCDDEEF59
+S3150060E96000112233445566778899AABBCCDDEEFF49
+S3150060E970102132435465768798A9BACBDCEDFE0F39
+S3150060E9802031425364758697A8B9CADBECFD0E1F29
+S3150060E99030415263748596A7B8C9DAEBFC0D1E2F19
+S3150060E9A0405162738495A6B7C8D9EAFB0C1D2E3F09
+S3150060E9B05061728394A5B6C7D8E9FA0B1C2D3E4FF9
+S3150060E9C060718293A4B5C6D7E8F90A1B2C3D4E5FE9
+S3150060E9D0708192A3B4C5D6E7F8091A2B3C4D5E6FD9
+S3150060E9E08091A2B3C4D5E6F708192A3B4C5D6E7FC9
+S3150060E9F090A1B2C3D4E5F60718293A4B5C6D7E8FB9
+S3150060EA00A0B1C2D3E4F5061728394A5B6C7D8E9FA8
+S3150060EA10B0C1D2E3F405162738495A6B7C8D9EAF98
+S3150060EA20C0D1E2F30415263748596A7B8C9DAEBF88
+S3150060EA30D0E1F2031425364758697A8B9CADBECF78
+S3150060EA40E0F102132435465768798A9BACBDCEDF68
+S3150060EA50F00112233445566778899AABBCCDDEEF58
+S3150060EA6000112233445566778899AABBCCDDEEFF48
+S3150060EA70102132435465768798A9BACBDCEDFE0F38
+S3150060EA802031425364758697A8B9CADBECFD0E1F28
+S3150060EA9030415263748596A7B8C9DAEBFC0D1E2F18
+S3150060EAA0405162738495A6B7C8D9EAFB0C1D2E3F08
+S3150060EAB05061728394A5B6C7D8E9FA0B1C2D3E4FF8
+S3150060EAC060718293A4B5C6D7E8F90A1B2C3D4E5FE8
+S3150060EAD0708192A3B4C5D6E7F8091A2B3C4D5E6FD8
+S3150060EAE08091A2B3C4D5E6F708192A3B4C5D6E7FC8
+S3150060EAF090A1B2C3D4E5F60718293A4B5C6D7E8FB8
+S3150060EB00A0B1C2D3E4F5061728394A5B6C7D8E9FA7
+S3150060EB10B0C1D2E3F405162738495A6B7C8D9EAF97
+S3150060EB20C0D1E2F30415263748596A7B8C9DAEBF87
+S3150060EB30D0E1F2031425364758697A8B9CADBECF77
+S3150060EB40E0F102132435465768798A9BACBDCEDF67
+S3150060EB50F00112233445566778899AABBCCDDEEF57
+S3150060EB6000112233445566778899AABBCCDDEEFF47
+S3150060EB70102132435465768798A9BACBDCEDFE0F37
+S3150060EB802031425364758697A8B9CADBECFD0E1F27
+S3150060EB9030415263748596A7B8C9DAEBFC0D1E2F17
+S3150060EBA0405162738495A6B7C8D9EAFB0C1D2E3F07
+S3150060EBB05061728394A5B6C7D8E9FA0B1C2D3E4FF7
+S3150060EBC060718293A4B5C6D7E8F90A1B2C3D4E5FE7
+S3150060EBD0708192A3B4C5D6E7F8091A2B3C4D5E6FD7
+S3150060EBE08091A2B3C4D5E6F708192A3B4C5D6E7FC7
+S3150060EBF090A1B2C3D4E5F60718293A4B5C6D7E8FB7
+S3150060EC00A0B1C2D3E4F5061728394A5B6C7D8E9FA6
+S3150060EC10B0C1D2E3F405162738495A6B7C8D9EAF96
+S3150060EC20C0D1E2F30415263748596A7B8C9DAEBF86
+S3150060EC30D0E1F2031425364758697A8B9CADBECF76
+S3150060EC40E0F102132435465768798A9BACBDCEDF66
+S3150060EC50F00112233445566778899AABBCCDDEEF56
+S3150060EC6000112233445566778899AABBCCDDEEFF46
+S3150060EC70102132435465768798A9BACBDCEDFE0F36
+S3150060EC802031425364758697A8B9CADBECFD0E1F26
+S3150060EC9030415263748596A7B8C9DAEBFC0D1E2F16
+S3150060ECA0405162738495A6B7C8D9EAFB0C1D2E3F06
+S3150060ECB05061728394A5B6C7D8E9FA0B1C2D3E4FF6
+S3150060ECC060718293A4B5C6D7E8F90A1B2C3D4E5FE6
+S3150060ECD0708192A3B4C5D6E7F8091A2B3C4D5E6FD6
+S3150060ECE08091A2B3C4D5E6F708192A3B4C5D6E7FC6
+S3150060ECF090A1B2C3D4E5F60718293A4B5C6D7E8FB6
+S3150060ED00A0B1C2D3E4F5061728394A5B6C7D8E9FA5
+S3150060ED10B0C1D2E3F405162738495A6B7C8D9EAF95
+S3150060ED20C0D1E2F30415263748596A7B8C9DAEBF85
+S3150060ED30D0E1F2031425364758697A8B9CADBECF75
+S3150060ED40E0F102132435465768798A9BACBDCEDF65
+S3150060ED50F00112233445566778899AABBCCDDEEF55
+S3150060ED6000112233445566778899AABBCCDDEEFF45
+S3150060ED70102132435465768798A9BACBDCEDFE0F35
+S3150060ED802031425364758697A8B9CADBECFD0E1F25
+S3150060ED9030415263748596A7B8C9DAEBFC0D1E2F15
+S3150060EDA0405162738495A6B7C8D9EAFB0C1D2E3F05
+S3150060EDB05061728394A5B6C7D8E9FA0B1C2D3E4FF5
+S3150060EDC060718293A4B5C6D7E8F90A1B2C3D4E5FE5
+S3150060EDD0708192A3B4C5D6E7F8091A2B3C4D5E6FD5
+S3150060EDE08091A2B3C4D5E6F708192A3B4C5D6E7FC5
+S3150060EDF090A1B2C3D4E5F60718293A4B5C6D7E8FB5
+S3150060EE00A0B1C2D3E4F5061728394A5B6C7D8E9FA4
+S3150060EE10B0C1D2E3F405162738495A6B7C8D9EAF94
+S3150060EE20C0D1E2F30415263748596A7B8C9DAEBF84
+S3150060EE30D0E1F2031425364758697A8B9CADBECF74
+S3150060EE40E0F102132435465768798A9BACBDCEDF64
+S3150060EE50F00112233445566778899AABBCCDDEEF54
+S3150060EE6000112233445566778899AABBCCDDEEFF44
+S3150060EE70102132435465768798A9BACBDCEDFE0F34
+S3150060EE802031425364758697A8B9CADBECFD0E1F24
+S3150060EE9030415263748596A7B8C9DAEBFC0D1E2F14
+S3150060EEA0405162738495A6B7C8D9EAFB0C1D2E3F04
+S3150060EEB05061728394A5B6C7D8E9FA0B1C2D3E4FF4
+S3150060EEC060718293A4B5C6D7E8F90A1B2C3D4E5FE4
+S3150060EED0708192A3B4C5D6E7F8091A2B3C4D5E6FD4
+S3150060EEE08091A2B3C4D5E6F708192A3B4C5D6E7FC4
+S3150060EEF090A1B2C3D4E5F60718293A4B5C6D7E8FB4
+S3150060EF00A0B1C2D3E4F5061728394A5B6C7D8E9FA3
+S3150060EF10B0C1D2E3F405162738495A6B7C8D9EAF93
+S3150060EF20C0D1E2F30415263748596A7B8C9DAEBF83
+S3150060EF30D0E1F2031425364758697A8B9CADBECF73
+S3150060EF40E0F102132435465768798A9BACBDCEDF63
+S3150060EF50F00112233445566778899AABBCCDDEEF53
+S3150060EF6000112233445566778899AABBCCDDEEFF43
+S3150060EF70102132435465768798A9BACBDCEDFE0F33
+S3150060EF802031425364758697A8B9CADBECFD0E1F23
+S3150060EF9030415263748596A7B8C9DAEBFC0D1E2F13
+S3150060EFA0405162738495A6B7C8D9EAFB0C1D2E3F03
+S3150060EFB05061728394A5B6C7D8E9FA0B1C2D3E4FF3
+S3150060EFC060718293A4B5C6D7E8F90A1B2C3D4E5FE3
+S3150060EFD0708192A3B4C5D6E7F8091A2B3C4D5E6FD3
+S3150060EFE08091A2B3C4D5E6F708192A3B4C5D6E7FC3
+S3150060EFF090A1B2C3D4E5F60718293A4B5C6D7E8FB3
+S3150060F000A0B1C2D3E4F5061728394A5B6C7D8E9FA2
+S3150060F010B0C1D2E3F405162738495A6B7C8D9EAF92
+S3150060F020C0D1E2F30415263748596A7B8C9DAEBF82
+S3150060F030D0E1F2031425364758697A8B9CADBECF72
+S3150060F040E0F102132435465768798A9BACBDCEDF62
+S3150060F050F00112233445566778899AABBCCDDEEF52
+S3150060F06000112233445566778899AABBCCDDEEFF42
+S3150060F070102132435465768798A9BACBDCEDFE0F32
+S3150060F0802031425364758697A8B9CADBECFD0E1F22
+S3150060F09030415263748596A7B8C9DAEBFC0D1E2F12
+S3150060F0A0405162738495A6B7C8D9EAFB0C1D2E3F02
+S3150060F0B05061728394A5B6C7D8E9FA0B1C2D3E4FF2
+S3150060F0C060718293A4B5C6D7E8F90A1B2C3D4E5FE2
+S3150060F0D0708192A3B4C5D6E7F8091A2B3C4D5E6FD2
+S3150060F0E08091A2B3C4D5E6F708192A3B4C5D6E7FC2
+S3150060F0F090A1B2C3D4E5F60718293A4B5C6D7E8FB2
+S3150060F100A0B1C2D3E4F5061728394A5B6C7D8E9FA1
+S3150060F110B0C1D2E3F405162738495A6B7C8D9EAF91
+S3150060F120C0D1E2F30415263748596A7B8C9DAEBF81
+S3150060F130D0E1F2031425364758697A8B9CADBECF71
+S3150060F140E0F102132435465768798A9BACBDCEDF61
+S3150060F150F00112233445566778899AABBCCDDEEF51
+S3150060F16000112233445566778899AABBCCDDEEFF41
+S3150060F170102132435465768798A9BACBDCEDFE0F31
+S3150060F1802031425364758697A8B9CADBECFD0E1F21
+S3150060F19030415263748596A7B8C9DAEBFC0D1E2F11
+S3150060F1A0405162738495A6B7C8D9EAFB0C1D2E3F01
+S3150060F1B05061728394A5B6C7D8E9FA0B1C2D3E4FF1
+S3150060F1C060718293A4B5C6D7E8F90A1B2C3D4E5FE1
+S3150060F1D0708192A3B4C5D6E7F8091A2B3C4D5E6FD1
+S3150060F1E08091A2B3C4D5E6F708192A3B4C5D6E7FC1
+S3150060F1F090A1B2C3D4E5F60718293A4B5C6D7E8FB1
+S3150060F200A0B1C2D3E4F5061728394A5B6C7D8E9FA0
+S3150060F210B0C1D2E3F405162738495A6B7C8D9EAF90
+S3150060F220C0D1E2F30415263748596A7B8C9DAEBF80
+S3150060F230D0E1F2031425364758697A8B9CADBECF70
+S3150060F240E0F102132435465768798A9BACBDCEDF60
+S3150060F250F00112233445566778899AABBCCDDEEF50
+S3150060F26000112233445566778899AABBCCDDEEFF40
+S3150060F270102132435465768798A9BACBDCEDFE0F30
+S3150060F2802031425364758697A8B9CADBECFD0E1F20
+S3150060F29030415263748596A7B8C9DAEBFC0D1E2F10
+S3150060F2A0405162738495A6B7C8D9EAFB0C1D2E3F00
+S3150060F2B05061728394A5B6C7D8E9FA0B1C2D3E4FF0
+S3150060F2C060718293A4B5C6D7E8F90A1B2C3D4E5FE0
+S3150060F2D0708192A3B4C5D6E7F8091A2B3C4D5E6FD0
+S3150060F2E08091A2B3C4D5E6F708192A3B4C5D6E7FC0
+S3150060F2F090A1B2C3D4E5F60718293A4B5C6D7E8FB0
+S3150060F300A0B1C2D3E4F5061728394A5B6C7D8E9F9F
+S3150060F310B0C1D2E3F405162738495A6B7C8D9EAF8F
+S3150060F320C0D1E2F30415263748596A7B8C9DAEBF7F
+S3150060F330D0E1F2031425364758697A8B9CADBECF6F
+S3150060F340E0F102132435465768798A9BACBDCEDF5F
+S3150060F350F00112233445566778899AABBCCDDEEF4F
+S3150060F36000112233445566778899AABBCCDDEEFF3F
+S3150060F370102132435465768798A9BACBDCEDFE0F2F
+S3150060F3802031425364758697A8B9CADBECFD0E1F1F
+S3150060F39030415263748596A7B8C9DAEBFC0D1E2F0F
+S3150060F3A0405162738495A6B7C8D9EAFB0C1D2E3FFF
+S3150060F3B05061728394A5B6C7D8E9FA0B1C2D3E4FEF
+S3150060F3C060718293A4B5C6D7E8F90A1B2C3D4E5FDF
+S3150060F3D0708192A3B4C5D6E7F8091A2B3C4D5E6FCF
+S3150060F3E08091A2B3C4D5E6F708192A3B4C5D6E7FBF
+S3150060F3F090A1B2C3D4E5F60718293A4B5C6D7E8FAF
+S3150060F400A0B1C2D3E4F5061728394A5B6C7D8E9F9E
+S3150060F410B0C1D2E3F405162738495A6B7C8D9EAF8E
+S3150060F420C0D1E2F30415263748596A7B8C9DAEBF7E
+S3150060F430D0E1F2031425364758697A8B9CADBECF6E
+S3150060F440E0F102132435465768798A9BACBDCEDF5E
+S3150060F450F00112233445566778899AABBCCDDEEF4E
+S3150060F46000112233445566778899AABBCCDDEEFF3E
+S3150060F470102132435465768798A9BACBDCEDFE0F2E
+S3150060F4802031425364758697A8B9CADBECFD0E1F1E
+S3150060F49030415263748596A7B8C9DAEBFC0D1E2F0E
+S3150060F4A0405162738495A6B7C8D9EAFB0C1D2E3FFE
+S3150060F4B05061728394A5B6C7D8E9FA0B1C2D3E4FEE
+S3150060F4C060718293A4B5C6D7E8F90A1B2C3D4E5FDE
+S3150060F4D0708192A3B4C5D6E7F8091A2B3C4D5E6FCE
+S3150060F4E08091A2B3C4D5E6F708192A3B4C5D6E7FBE
+S3150060F4F090A1B2C3D4E5F60718293A4B5C6D7E8FAE
+S3150060F500A0B1C2D3E4F5061728394A5B6C7D8E9F9D
+S3150060F510B0C1D2E3F405162738495A6B7C8D9EAF8D
+S3150060F520C0D1E2F30415263748596A7B8C9DAEBF7D
+S3150060F530D0E1F2031425364758697A8B9CADBECF6D
+S3150060F540E0F102132435465768798A9BACBDCEDF5D
+S3150060F550F00112233445566778899AABBCCDDEEF4D
+S3150060F56000112233445566778899AABBCCDDEEFF3D
+S3150060F570102132435465768798A9BACBDCEDFE0F2D
+S3150060F5802031425364758697A8B9CADBECFD0E1F1D
+S3150060F59030415263748596A7B8C9DAEBFC0D1E2F0D
+S3150060F5A0405162738495A6B7C8D9EAFB0C1D2E3FFD
+S3150060F5B05061728394A5B6C7D8E9FA0B1C2D3E4FED
+S3150060F5C060718293A4B5C6D7E8F90A1B2C3D4E5FDD
+S3150060F5D0708192A3B4C5D6E7F8091A2B3C4D5E6FCD
+S3150060F5E08091A2B3C4D5E6F708192A3B4C5D6E7FBD
+S3150060F5F090A1B2C3D4E5F60718293A4B5C6D7E8FAD
+S3150060F600A0B1C2D3E4F5061728394A5B6C7D8E9F9C
+S3150060F610B0C1D2E3F405162738495A6B7C8D9EAF8C
+S3150060F620C0D1E2F30415263748596A7B8C9DAEBF7C
+S3150060F630D0E1F2031425364758697A8B9CADBECF6C
+S3150060F640E0F102132435465768798A9BACBDCEDF5C
+S3150060F650F00112233445566778899AABBCCDDEEF4C
+S3150060F66000112233445566778899AABBCCDDEEFF3C
+S3150060F670102132435465768798A9BACBDCEDFE0F2C
+S3150060F6802031425364758697A8B9CADBECFD0E1F1C
+S3150060F69030415263748596A7B8C9DAEBFC0D1E2F0C
+S3150060F6A0405162738495A6B7C8D9EAFB0C1D2E3FFC
+S3150060F6B05061728394A5B6C7D8E9FA0B1C2D3E4FEC
+S3150060F6C060718293A4B5C6D7E8F90A1B2C3D4E5FDC
+S3150060F6D0708192A3B4C5D6E7F8091A2B3C4D5E6FCC
+S3150060F6E08091A2B3C4D5E6F708192A3B4C5D6E7FBC
+S3150060F6F090A1B2C3D4E5F60718293A4B5C6D7E8FAC
+S3150060F700A0B1C2D3E4F5061728394A5B6C7D8E9F9B
+S3150060F710B0C1D2E3F405162738495A6B7C8D9EAF8B
+S3150060F720C0D1E2F30415263748596A7B8C9DAEBF7B
+S3150060F730D0E1F2031425364758697A8B9CADBECF6B
+S3150060F740E0F102132435465768798A9BACBDCEDF5B
+S3150060F750F00112233445566778899AABBCCDDEEF4B
+S3150060F76000112233445566778899AABBCCDDEEFF3B
+S3150060F770102132435465768798A9BACBDCEDFE0F2B
+S3150060F7802031425364758697A8B9CADBECFD0E1F1B
+S3150060F79030415263748596A7B8C9DAEBFC0D1E2F0B
+S3150060F7A0405162738495A6B7C8D9EAFB0C1D2E3FFB
+S3150060F7B05061728394A5B6C7D8E9FA0B1C2D3E4FEB
+S3150060F7C060718293A4B5C6D7E8F90A1B2C3D4E5FDB
+S3150060F7D0708192A3B4C5D6E7F8091A2B3C4D5E6FCB
+S3150060F7E08091A2B3C4D5E6F708192A3B4C5D6E7FBB
+S3150060F7F090A1B2C3D4E5F60718293A4B5C6D7E8FAB
+S3150060F800A0B1C2D3E4F5061728394A5B6C7D8E9F9A
+S3150060F810B0C1D2E3F405162738495A6B7C8D9EAF8A
+S3150060F820C0D1E2F30415263748596A7B8C9DAEBF7A
+S3150060F830D0E1F2031425364758697A8B9CADBECF6A
+S3150060F840E0F102132435465768798A9BACBDCEDF5A
+S3150060F850F00112233445566778899AABBCCDDEEF4A
+S3150060F86000112233445566778899AABBCCDDEEFF3A
+S3150060F870102132435465768798A9BACBDCEDFE0F2A
+S3150060F8802031425364758697A8B9CADBECFD0E1F1A
+S3150060F89030415263748596A7B8C9DAEBFC0D1E2F0A
+S3150060F8A0405162738495A6B7C8D9EAFB0C1D2E3FFA
+S3150060F8B05061728394A5B6C7D8E9FA0B1C2D3E4FEA
+S3150060F8C060718293A4B5C6D7E8F90A1B2C3D4E5FDA
+S3150060F8D0708192A3B4C5D6E7F8091A2B3C4D5E6FCA
+S3150060F8E08091A2B3C4D5E6F708192A3B4C5D6E7FBA
+S3150060F8F090A1B2C3D4E5F60718293A4B5C6D7E8FAA
+S3150060F900A0B1C2D3E4F5061728394A5B6C7D8E9F99
+S3150060F910B0C1D2E3F405162738495A6B7C8D9EAF89
+S3150060F920C0D1E2F30415263748596A7B8C9DAEBF79
+S3150060F930D0E1F2031425364758697A8B9CADBECF69
+S3150060F940E0F102132435465768798A9BACBDCEDF59
+S3150060F950F00112233445566778899AABBCCDDEEF49
+S3150060F96000112233445566778899AABBCCDDEEFF39
+S3150060F970102132435465768798A9BACBDCEDFE0F29
+S3150060F9802031425364758697A8B9CADBECFD0E1F19
+S3150060F99030415263748596A7B8C9DAEBFC0D1E2F09
+S3150060F9A0405162738495A6B7C8D9EAFB0C1D2E3FF9
+S3150060F9B05061728394A5B6C7D8E9FA0B1C2D3E4FE9
+S3150060F9C060718293A4B5C6D7E8F90A1B2C3D4E5FD9
+S3150060F9D0708192A3B4C5D6E7F8091A2B3C4D5E6FC9
+S3150060F9E08091A2B3C4D5E6F708192A3B4C5D6E7FB9
+S3150060F9F090A1B2C3D4E5F60718293A4B5C6D7E8FA9
+S3150060FA00A0B1C2D3E4F5061728394A5B6C7D8E9F98
+S3150060FA10B0C1D2E3F405162738495A6B7C8D9EAF88
+S3150060FA20C0D1E2F30415263748596A7B8C9DAEBF78
+S3150060FA30D0E1F2031425364758697A8B9CADBECF68
+S3150060FA40E0F102132435465768798A9BACBDCEDF58
+S3150060FA50F00112233445566778899AABBCCDDEEF48
+S3150060FA6000112233445566778899AABBCCDDEEFF38
+S3150060FA70102132435465768798A9BACBDCEDFE0F28
+S3150060FA802031425364758697A8B9CADBECFD0E1F18
+S3150060FA9030415263748596A7B8C9DAEBFC0D1E2F08
+S3150060FAA0405162738495A6B7C8D9EAFB0C1D2E3FF8
+S3150060FAB05061728394A5B6C7D8E9FA0B1C2D3E4FE8
+S3150060FAC060718293A4B5C6D7E8F90A1B2C3D4E5FD8
+S3150060FAD0708192A3B4C5D6E7F8091A2B3C4D5E6FC8
+S3150060FAE08091A2B3C4D5E6F708192A3B4C5D6E7FB8
+S3150060FAF090A1B2C3D4E5F60718293A4B5C6D7E8FA8
+S3150060FB00A0B1C2D3E4F5061728394A5B6C7D8E9F97
+S3150060FB10B0C1D2E3F405162738495A6B7C8D9EAF87
+S3150060FB20C0D1E2F30415263748596A7B8C9DAEBF77
+S3150060FB30D0E1F2031425364758697A8B9CADBECF67
+S3150060FB40E0F102132435465768798A9BACBDCEDF57
+S3150060FB50F00112233445566778899AABBCCDDEEF47
+S3150060FB6000112233445566778899AABBCCDDEEFF37
+S3150060FB70102132435465768798A9BACBDCEDFE0F27
+S3150060FB802031425364758697A8B9CADBECFD0E1F17
+S3150060FB9030415263748596A7B8C9DAEBFC0D1E2F07
+S3150060FBA0405162738495A6B7C8D9EAFB0C1D2E3FF7
+S3150060FBB05061728394A5B6C7D8E9FA0B1C2D3E4FE7
+S3150060FBC060718293A4B5C6D7E8F90A1B2C3D4E5FD7
+S3150060FBD0708192A3B4C5D6E7F8091A2B3C4D5E6FC7
+S3150060FBE08091A2B3C4D5E6F708192A3B4C5D6E7FB7
+S3150060FBF090A1B2C3D4E5F60718293A4B5C6D7E8FA7
+S3150060FC00A0B1C2D3E4F5061728394A5B6C7D8E9F96
+S3150060FC10B0C1D2E3F405162738495A6B7C8D9EAF86
+S3150060FC20C0D1E2F30415263748596A7B8C9DAEBF76
+S3150060FC30D0E1F2031425364758697A8B9CADBECF66
+S3150060FC40E0F102132435465768798A9BACBDCEDF56
+S3150060FC50F00112233445566778899AABBCCDDEEF46
+S3150060FC6000112233445566778899AABBCCDDEEFF36
+S3150060FC70102132435465768798A9BACBDCEDFE0F26
+S3150060FC802031425364758697A8B9CADBECFD0E1F16
+S3150060FC9030415263748596A7B8C9DAEBFC0D1E2F06
+S3150060FCA0405162738495A6B7C8D9EAFB0C1D2E3FF6
+S3150060FCB05061728394A5B6C7D8E9FA0B1C2D3E4FE6
+S3150060FCC060718293A4B5C6D7E8F90A1B2C3D4E5FD6
+S3150060FCD0708192A3B4C5D6E7F8091A2B3C4D5E6FC6
+S3150060FCE08091A2B3C4D5E6F708192A3B4C5D6E7FB6
+S3150060FCF090A1B2C3D4E5F60718293A4B5C6D7E8FA6
+S3150060FD00A0B1C2D3E4F5061728394A5B6C7D8E9F95
+S3150060FD10B0C1D2E3F405162738495A6B7C8D9EAF85
+S3150060FD20C0D1E2F30415263748596A7B8C9DAEBF75
+S3150060FD30D0E1F2031425364758697A8B9CADBECF65
+S3150060FD40E0F102132435465768798A9BACBDCEDF55
+S3150060FD50F00112233445566778899AABBCCDDEEF45
+S3150060FD6000112233445566778899AABBCCDDEEFF35
+S3150060FD70102132435465768798A9BACBDCEDFE0F25
+S3150060FD802031425364758697A8B9CADBECFD0E1F15
+S3150060FD9030415263748596A7B8C9DAEBFC0D1E2F05
+S3150060FDA0405162738495A6B7C8D9EAFB0C1D2E3FF5
+S3150060FDB05061728394A5B6C7D8E9FA0B1C2D3E4FE5
+S3150060FDC060718293A4B5C6D7E8F90A1B2C3D4E5FD5
+S3150060FDD0708192A3B4C5D6E7F8091A2B3C4D5E6FC5
+S3150060FDE08091A2B3C4D5E6F708192A3B4C5D6E7FB5
+S3150060FDF090A1B2C3D4E5F60718293A4B5C6D7E8FA5
+S3150060FE00A0B1C2D3E4F5061728394A5B6C7D8E9F94
+S3150060FE10B0C1D2E3F405162738495A6B7C8D9EAF84
+S3150060FE20C0D1E2F30415263748596A7B8C9DAEBF74
+S3150060FE30D0E1F2031425364758697A8B9CADBECF64
+S3150060FE40E0F102132435465768798A9BACBDCEDF54
+S3150060FE50F00112233445566778899AABBCCDDEEF44
+S3150060FE6000112233445566778899AABBCCDDEEFF34
+S3150060FE70102132435465768798A9BACBDCEDFE0F24
+S3150060FE802031425364758697A8B9CADBECFD0E1F14
+S3150060FE9030415263748596A7B8C9DAEBFC0D1E2F04
+S3150060FEA0405162738495A6B7C8D9EAFB0C1D2E3FF4
+S3150060FEB05061728394A5B6C7D8E9FA0B1C2D3E4FE4
+S3150060FEC060718293A4B5C6D7E8F90A1B2C3D4E5FD4
+S3150060FED0708192A3B4C5D6E7F8091A2B3C4D5E6FC4
+S3150060FEE08091A2B3C4D5E6F708192A3B4C5D6E7FB4
+S3150060FEF090A1B2C3D4E5F60718293A4B5C6D7E8FA4
+S3150060FF00A0B1C2D3E4F5061728394A5B6C7D8E9F93
+S3150060FF10B0C1D2E3F405162738495A6B7C8D9EAF83
+S3150060FF20C0D1E2F30415263748596A7B8C9DAEBF73
+S3150060FF30D0E1F2031425364758697A8B9CADBECF63
+S3150060FF40E0F102132435465768798A9BACBDCEDF53
+S3150060FF50F00112233445566778899AABBCCDDEEF43
+S3150060FF6000112233445566778899AABBCCDDEEFF33
+S3150060FF70102132435465768798A9BACBDCEDFE0F23
+S3150060FF802031425364758697A8B9CADBECFD0E1F13
+S3150060FF9030415263748596A7B8C9DAEBFC0D1E2F03
+S3150060FFA0405162738495A6B7C8D9EAFB0C1D2E3FF3
+S3150060FFB05061728394A5B6C7D8E9FA0B1C2D3E4FE3
+S3150060FFC060718293A4B5C6D7E8F90A1B2C3D4E5FD3
+S3150060FFD0708192A3B4C5D6E7F8091A2B3C4D5E6FC3
+S3150060FFE08091A2B3C4D5E6F708192A3B4C5D6E7FB3
+S3150060FFF090A1B2C3D4E5F60718293A4B5C6D7E8FA3
+S31500610000A0B1C2D3E4F5061728394A5B6C7D8E9F91
+S31500610010B0C1D2E3F405162738495A6B7C8D9EAF81
+S31500610020C0D1E2F30415263748596A7B8C9DAEBF71
+S31500610030D0E1F2031425364758697A8B9CADBECF61
+S31500610040E0F102132435465768798A9BACBDCEDF51
+S31500610050F00112233445566778899AABBCCDDEEF41
+S3150061006000112233445566778899AABBCCDDEEFF31
+S31500610070102132435465768798A9BACBDCEDFE0F21
+S315006100802031425364758697A8B9CADBECFD0E1F11
+S3150061009030415263748596A7B8C9DAEBFC0D1E2F01
+S315006100A0405162738495A6B7C8D9EAFB0C1D2E3FF1
+S315006100B05061728394A5B6C7D8E9FA0B1C2D3E4FE1
+S315006100C060718293A4B5C6D7E8F90A1B2C3D4E5FD1
+S315006100D0708192A3B4C5D6E7F8091A2B3C4D5E6FC1
+S315006100E08091A2B3C4D5E6F708192A3B4C5D6E7FB1
+S315006100F090A1B2C3D4E5F60718293A4B5C6D7E8FA1
+S31500610100A0B1C2D3E4F5061728394A5B6C7D8E9F90
+S31500610110B0C1D2E3F405162738495A6B7C8D9EAF80
+S31500610120C0D1E2F30415263748596A7B8C9DAEBF70
+S31500610130D0E1F2031425364758697A8B9CADBECF60
+S31500610140E0F102132435465768798A9BACBDCEDF50
+S31500610150F00112233445566778899AABBCCDDEEF40
+S3150061016000112233445566778899AABBCCDDEEFF30
+S31500610170102132435465768798A9BACBDCEDFE0F20
+S315006101802031425364758697A8B9CADBECFD0E1F10
+S3150061019030415263748596A7B8C9DAEBFC0D1E2F00
+S315006101A0405162738495A6B7C8D9EAFB0C1D2E3FF0
+S315006101B05061728394A5B6C7D8E9FA0B1C2D3E4FE0
+S315006101C060718293A4B5C6D7E8F90A1B2C3D4E5FD0
+S315006101D0708192A3B4C5D6E7F8091A2B3C4D5E6FC0
+S315006101E08091A2B3C4D5E6F708192A3B4C5D6E7FB0
+S315006101F090A1B2C3D4E5F60718293A4B5C6D7E8FA0
+S31500610200A0B1C2D3E4F5061728394A5B6C7D8E9F8F
+S31500610210B0C1D2E3F405162738495A6B7C8D9EAF7F
+S31500610220C0D1E2F30415263748596A7B8C9DAEBF6F
+S31500610230D0E1F2031425364758697A8B9CADBECF5F
+S31500610240E0F102132435465768798A9BACBDCEDF4F
+S31500610250F00112233445566778899AABBCCDDEEF3F
+S3150061026000112233445566778899AABBCCDDEEFF2F
+S31500610270102132435465768798A9BACBDCEDFE0F1F
+S315006102802031425364758697A8B9CADBECFD0E1F0F
+S3150061029030415263748596A7B8C9DAEBFC0D1E2FFF
+S315006102A0405162738495A6B7C8D9EAFB0C1D2E3FEF
+S315006102B05061728394A5B6C7D8E9FA0B1C2D3E4FDF
+S315006102C060718293A4B5C6D7E8F90A1B2C3D4E5FCF
+S315006102D0708192A3B4C5D6E7F8091A2B3C4D5E6FBF
+S315006102E08091A2B3C4D5E6F708192A3B4C5D6E7FAF
+S315006102F090A1B2C3D4E5F60718293A4B5C6D7E8F9F
+S31500610300A0B1C2D3E4F5061728394A5B6C7D8E9F8E
+S31500610310B0C1D2E3F405162738495A6B7C8D9EAF7E
+S31500610320C0D1E2F30415263748596A7B8C9DAEBF6E
+S31500610330D0E1F2031425364758697A8B9CADBECF5E
+S31500610340E0F102132435465768798A9BACBDCEDF4E
+S31500610350F00112233445566778899AABBCCDDEEF3E
+S3150061036000112233445566778899AABBCCDDEEFF2E
+S31500610370102132435465768798A9BACBDCEDFE0F1E
+S315006103802031425364758697A8B9CADBECFD0E1F0E
+S3150061039030415263748596A7B8C9DAEBFC0D1E2FFE
+S315006103A0405162738495A6B7C8D9EAFB0C1D2E3FEE
+S315006103B05061728394A5B6C7D8E9FA0B1C2D3E4FDE
+S315006103C060718293A4B5C6D7E8F90A1B2C3D4E5FCE
+S315006103D0708192A3B4C5D6E7F8091A2B3C4D5E6FBE
+S315006103E08091A2B3C4D5E6F708192A3B4C5D6E7FAE
+S315006103F090A1B2C3D4E5F60718293A4B5C6D7E8F9E
+S31500610400A0B1C2D3E4F5061728394A5B6C7D8E9F8D
+S31500610410B0C1D2E3F405162738495A6B7C8D9EAF7D
+S31500610420C0D1E2F30415263748596A7B8C9DAEBF6D
+S31500610430D0E1F2031425364758697A8B9CADBECF5D
+S31500610440E0F102132435465768798A9BACBDCEDF4D
+S31500610450F00112233445566778899AABBCCDDEEF3D
+S3150061046000112233445566778899AABBCCDDEEFF2D
+S31500610470102132435465768798A9BACBDCEDFE0F1D
+S315006104802031425364758697A8B9CADBECFD0E1F0D
+S3150061049030415263748596A7B8C9DAEBFC0D1E2FFD
+S315006104A0405162738495A6B7C8D9EAFB0C1D2E3FED
+S315006104B05061728394A5B6C7D8E9FA0B1C2D3E4FDD
+S315006104C060718293A4B5C6D7E8F90A1B2C3D4E5FCD
+S315006104D0708192A3B4C5D6E7F8091A2B3C4D5E6FBD
+S315006104E08091A2B3C4D5E6F708192A3B4C5D6E7FAD
+S315006104F090A1B2C3D4E5F60718293A4B5C6D7E8F9D
+S31500610500A0B1C2D3E4F5061728394A5B6C7D8E9F8C
+S31500610510B0C1D2E3F405162738495A6B7C8D9EAF7C
+S31500610520C0D1E2F30415263748596A7B8C9DAEBF6C
+S31500610530D0E1F2031425364758697A8B9CADBECF5C
+S31500610540E0F102132435465768798A9BACBDCEDF4C
+S31500610550F00112233445566778899AABBCCDDEEF3C
+S3150061056000112233445566778899AABBCCDDEEFF2C
+S31500610570102132435465768798A9BACBDCEDFE0F1C
+S315006105802031425364758697A8B9CADBECFD0E1F0C
+S3150061059030415263748596A7B8C9DAEBFC0D1E2FFC
+S315006105A0405162738495A6B7C8D9EAFB0C1D2E3FEC
+S315006105B05061728394A5B6C7D8E9FA0B1C2D3E4FDC
+S315006105C060718293A4B5C6D7E8F90A1B2C3D4E5FCC
+S315006105D0708192A3B4C5D6E7F8091A2B3C4D5E6FBC
+S315006105E08091A2B3C4D5E6F708192A3B4C5D6E7FAC
+S315006105F090A1B2C3D4E5F60718293A4B5C6D7E8F9C
+S31500610600A0B1C2D3E4F5061728394A5B6C7D8E9F8B
+S31500610610B0C1D2E3F405162738495A6B7C8D9EAF7B
+S31500610620C0D1E2F30415263748596A7B8C9DAEBF6B
+S31500610630D0E1F2031425364758697A8B9CADBECF5B
+S31500610640E0F102132435465768798A9BACBDCEDF4B
+S31500610650F00112233445566778899AABBCCDDEEF3B
+S3150061066000112233445566778899AABBCCDDEEFF2B
+S31500610670102132435465768798A9BACBDCEDFE0F1B
+S315006106802031425364758697A8B9CADBECFD0E1F0B
+S3150061069030415263748596A7B8C9DAEBFC0D1E2FFB
+S315006106A0405162738495A6B7C8D9EAFB0C1D2E3FEB
+S315006106B05061728394A5B6C7D8E9FA0B1C2D3E4FDB
+S315006106C060718293A4B5C6D7E8F90A1B2C3D4E5FCB
+S315006106D0708192A3B4C5D6E7F8091A2B3C4D5E6FBB
+S315006106E08091A2B3C4D5E6F708192A3B4C5D6E7FAB
+S315006106F090A1B2C3D4E5F60718293A4B5C6D7E8F9B
+S31500610700A0B1C2D3E4F5061728394A5B6C7D8E9F8A
+S31500610710B0C1D2E3F405162738495A6B7C8D9EAF7A
+S31500610720C0D1E2F30415263748596A7B8C9DAEBF6A
+S31500610730D0E1F2031425364758697A8B9CADBECF5A
+S31500610740E0F102132435465768798A9BACBDCEDF4A
+S31500610750F00112233445566778899AABBCCDDEEF3A
+S3150061076000112233445566778899AABBCCDDEEFF2A
+S31500610770102132435465768798A9BACBDCEDFE0F1A
+S315006107802031425364758697A8B9CADBECFD0E1F0A
+S3150061079030415263748596A7B8C9DAEBFC0D1E2FFA
+S315006107A0405162738495A6B7C8D9EAFB0C1D2E3FEA
+S315006107B05061728394A5B6C7D8E9FA0B1C2D3E4FDA
+S315006107C060718293A4B5C6D7E8F90A1B2C3D4E5FCA
+S315006107D0708192A3B4C5D6E7F8091A2B3C4D5E6FBA
+S315006107E08091A2B3C4D5E6F708192A3B4C5D6E7FAA
+S315006107F090A1B2C3D4E5F60718293A4B5C6D7E8F9A
+S31500610800A0B1C2D3E4F5061728394A5B6C7D8E9F89
+S31500610810B0C1D2E3F405162738495A6B7C8D9EAF79
+S31500610820C0D1E2F30415263748596A7B8C9DAEBF69
+S31500610830D0E1F2031425364758697A8B9CADBECF59
+S31500610840E0F102132435465768798A9BACBDCEDF49
+S31500610850F00112233445566778899AABBCCDDEEF39
+S3150061086000112233445566778899AABBCCDDEEFF29
+S31500610870102132435465768798A9BACBDCEDFE0F19
+S315006108802031425364758697A8B9CADBECFD0E1F09
+S3150061089030415263748596A7B8C9DAEBFC0D1E2FF9
+S315006108A0405162738495A6B7C8D9EAFB0C1D2E3FE9
+S315006108B05061728394A5B6C7D8E9FA0B1C2D3E4FD9
+S315006108C060718293A4B5C6D7E8F90A1B2C3D4E5FC9
+S315006108D0708192A3B4C5D6E7F8091A2B3C4D5E6FB9
+S315006108E08091A2B3C4D5E6F708192A3B4C5D6E7FA9
+S315006108F090A1B2C3D4E5F60718293A4B5C6D7E8F99
+S31500610900A0B1C2D3E4F5061728394A5B6C7D8E9F88
+S31500610910B0C1D2E3F405162738495A6B7C8D9EAF78
+S31500610920C0D1E2F30415263748596A7B8C9DAEBF68
+S31500610930D0E1F2031425364758697A8B9CADBECF58
+S31500610940E0F102132435465768798A9BACBDCEDF48
+S31500610950F00112233445566778899AABBCCDDEEF38
+S3150061096000112233445566778899AABBCCDDEEFF28
+S31500610970102132435465768798A9BACBDCEDFE0F18
+S315006109802031425364758697A8B9CADBECFD0E1F08
+S3150061099030415263748596A7B8C9DAEBFC0D1E2FF8
+S315006109A0405162738495A6B7C8D9EAFB0C1D2E3FE8
+S315006109B05061728394A5B6C7D8E9FA0B1C2D3E4FD8
+S315006109C060718293A4B5C6D7E8F90A1B2C3D4E5FC8
+S315006109D0708192A3B4C5D6E7F8091A2B3C4D5E6FB8
+S315006109E08091A2B3C4D5E6F708192A3B4C5D6E7FA8
+S315006109F090A1B2C3D4E5F60718293A4B5C6D7E8F98
+S31500610A00A0B1C2D3E4F5061728394A5B6C7D8E9F87
+S31500610A10B0C1D2E3F405162738495A6B7C8D9EAF77
+S31500610A20C0D1E2F30415263748596A7B8C9DAEBF67
+S31500610A30D0E1F2031425364758697A8B9CADBECF57
+S31500610A40E0F102132435465768798A9BACBDCEDF47
+S31500610A50F00112233445566778899AABBCCDDEEF37
+S31500610A6000112233445566778899AABBCCDDEEFF27
+S31500610A70102132435465768798A9BACBDCEDFE0F17
+S31500610A802031425364758697A8B9CADBECFD0E1F07
+S31500610A9030415263748596A7B8C9DAEBFC0D1E2FF7
+S31500610AA0405162738495A6B7C8D9EAFB0C1D2E3FE7
+S31500610AB05061728394A5B6C7D8E9FA0B1C2D3E4FD7
+S31500610AC060718293A4B5C6D7E8F90A1B2C3D4E5FC7
+S31500610AD0708192A3B4C5D6E7F8091A2B3C4D5E6FB7
+S31500610AE08091A2B3C4D5E6F708192A3B4C5D6E7FA7
+S31500610AF090A1B2C3D4E5F60718293A4B5C6D7E8F97
+S31500610B00A0B1C2D3E4F5061728394A5B6C7D8E9F86
+S31500610B10B0C1D2E3F405162738495A6B7C8D9EAF76
+S31500610B20C0D1E2F30415263748596A7B8C9DAEBF66
+S31500610B30D0E1F2031425364758697A8B9CADBECF56
+S31500610B40E0F102132435465768798A9BACBDCEDF46
+S31500610B50F00112233445566778899AABBCCDDEEF36
+S31500610B6000112233445566778899AABBCCDDEEFF26
+S31500610B70102132435465768798A9BACBDCEDFE0F16
+S31500610B802031425364758697A8B9CADBECFD0E1F06
+S31500610B9030415263748596A7B8C9DAEBFC0D1E2FF6
+S31500610BA0405162738495A6B7C8D9EAFB0C1D2E3FE6
+S31500610BB05061728394A5B6C7D8E9FA0B1C2D3E4FD6
+S31500610BC060718293A4B5C6D7E8F90A1B2C3D4E5FC6
+S31500610BD0708192A3B4C5D6E7F8091A2B3C4D5E6FB6
+S31500610BE08091A2B3C4D5E6F708192A3B4C5D6E7FA6
+S31500610BF090A1B2C3D4E5F60718293A4B5C6D7E8F96
+S31500610C00A0B1C2D3E4F5061728394A5B6C7D8E9F85
+S31500610C10B0C1D2E3F405162738495A6B7C8D9EAF75
+S31500610C20C0D1E2F30415263748596A7B8C9DAEBF65
+S31500610C30D0E1F2031425364758697A8B9CADBECF55
+S31500610C40E0F102132435465768798A9BACBDCEDF45
+S31500610C50F00112233445566778899AABBCCDDEEF35
+S31500610C6000112233445566778899AABBCCDDEEFF25
+S31500610C70102132435465768798A9BACBDCEDFE0F15
+S31500610C802031425364758697A8B9CADBECFD0E1F05
+S31500610C9030415263748596A7B8C9DAEBFC0D1E2FF5
+S31500610CA0405162738495A6B7C8D9EAFB0C1D2E3FE5
+S31500610CB05061728394A5B6C7D8E9FA0B1C2D3E4FD5
+S31500610CC060718293A4B5C6D7E8F90A1B2C3D4E5FC5
+S31500610CD0708192A3B4C5D6E7F8091A2B3C4D5E6FB5
+S31500610CE08091A2B3C4D5E6F708192A3B4C5D6E7FA5
+S31500610CF090A1B2C3D4E5F60718293A4B5C6D7E8F95
+S31500610D00A0B1C2D3E4F5061728394A5B6C7D8E9F84
+S31500610D10B0C1D2E3F405162738495A6B7C8D9EAF74
+S31500610D20C0D1E2F30415263748596A7B8C9DAEBF64
+S31500610D30D0E1F2031425364758697A8B9CADBECF54
+S31500610D40E0F102132435465768798A9BACBDCEDF44
+S31500610D50F00112233445566778899AABBCCDDEEF34
+S31500610D6000112233445566778899AABBCCDDEEFF24
+S31500610D70102132435465768798A9BACBDCEDFE0F14
+S31500610D802031425364758697A8B9CADBECFD0E1F04
+S31500610D9030415263748596A7B8C9DAEBFC0D1E2FF4
+S31500610DA0405162738495A6B7C8D9EAFB0C1D2E3FE4
+S31500610DB05061728394A5B6C7D8E9FA0B1C2D3E4FD4
+S31500610DC060718293A4B5C6D7E8F90A1B2C3D4E5FC4
+S31500610DD0708192A3B4C5D6E7F8091A2B3C4D5E6FB4
+S31500610DE08091A2B3C4D5E6F708192A3B4C5D6E7FA4
+S31500610DF090A1B2C3D4E5F60718293A4B5C6D7E8F94
+S31500610E00A0B1C2D3E4F5061728394A5B6C7D8E9F83
+S31500610E10B0C1D2E3F405162738495A6B7C8D9EAF73
+S31500610E20C0D1E2F30415263748596A7B8C9DAEBF63
+S31500610E30D0E1F2031425364758697A8B9CADBECF53
+S31500610E40E0F102132435465768798A9BACBDCEDF43
+S31500610E50F00112233445566778899AABBCCDDEEF33
+S31500610E6000112233445566778899AABBCCDDEEFF23
+S31500610E70102132435465768798A9BACBDCEDFE0F13
+S31500610E802031425364758697A8B9CADBECFD0E1F03
+S31500610E9030415263748596A7B8C9DAEBFC0D1E2FF3
+S31500610EA0405162738495A6B7C8D9EAFB0C1D2E3FE3
+S31500610EB05061728394A5B6C7D8E9FA0B1C2D3E4FD3
+S31500610EC060718293A4B5C6D7E8F90A1B2C3D4E5FC3
+S31500610ED0708192A3B4C5D6E7F8091A2B3C4D5E6FB3
+S31500610EE08091A2B3C4D5E6F708192A3B4C5D6E7FA3
+S31500610EF090A1B2C3D4E5F60718293A4B5C6D7E8F93
+S31500610F00A0B1C2D3E4F5061728394A5B6C7D8E9F82
+S31500610F10B0C1D2E3F405162738495A6B7C8D9EAF72
+S31500610F20C0D1E2F30415263748596A7B8C9DAEBF62
+S31500610F30D0E1F2031425364758697A8B9CADBECF52
+S31500610F40E0F102132435465768798A9BACBDCEDF42
+S31500610F50F00112233445566778899AABBCCDDEEF32
+S31500610F6000112233445566778899AABBCCDDEEFF22
+S31500610F70102132435465768798A9BACBDCEDFE0F12
+S31500610F802031425364758697A8B9CADBECFD0E1F02
+S31500610F9030415263748596A7B8C9DAEBFC0D1E2FF2
+S31500610FA0405162738495A6B7C8D9EAFB0C1D2E3FE2
+S31500610FB05061728394A5B6C7D8E9FA0B1C2D3E4FD2
+S31500610FC060718293A4B5C6D7E8F90A1B2C3D4E5FC2
+S31500610FD0708192A3B4C5D6E7F8091A2B3C4D5E6FB2
+S31500610FE08091A2B3C4D5E6F708192A3B4C5D6E7FA2
+S31500610FF090A1B2C3D4E5F60718293A4B5C6D7E8F92
+S31500611000A0B1C2D3E4F5061728394A5B6C7D8E9F81
+S31500611010B0C1D2E3F405162738495A6B7C8D9EAF71
+S31500611020C0D1E2F30415263748596A7B8C9DAEBF61
+S31500611030D0E1F2031425364758697A8B9CADBECF51
+S31500611040E0F102132435465768798A9BACBDCEDF41
+S31400611050F00112233445566778899AABBCCDDE21
diff --git a/memory/org.eclipse.cdt.debug.core.memory.tests/data/memory_0ffff.txt b/memory/org.eclipse.cdt.debug.core.memory.tests/data/memory_0ffff.txt
new file mode 100644
index 00000000000..9ca3ba3d50f
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.core.memory.tests/data/memory_0ffff.txt
@@ -0,0 +1,2048 @@
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE
diff --git a/memory/org.eclipse.cdt.debug.core.memory.tests/data/memory_10000.bin b/memory/org.eclipse.cdt.debug.core.memory.tests/data/memory_10000.bin
new file mode 100644
index 00000000000..a90290c3cef
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.core.memory.tests/data/memory_10000.bin
Binary files differ
diff --git a/memory/org.eclipse.cdt.debug.core.memory.tests/data/memory_10000.srec b/memory/org.eclipse.cdt.debug.core.memory.tests/data/memory_10000.srec
new file mode 100644
index 00000000000..9a7bfe19e50
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.core.memory.tests/data/memory_10000.srec
@@ -0,0 +1,4096 @@
+S3150060106000112233445566778899AABBCCDDEEFF22
+S31500601070102132435465768798A9BACBDCEDFE0F12
+S315006010802031425364758697A8B9CADBECFD0E1F02
+S3150060109030415263748596A7B8C9DAEBFC0D1E2FF2
+S315006010A0405162738495A6B7C8D9EAFB0C1D2E3FE2
+S315006010B05061728394A5B6C7D8E9FA0B1C2D3E4FD2
+S315006010C060718293A4B5C6D7E8F90A1B2C3D4E5FC2
+S315006010D0708192A3B4C5D6E7F8091A2B3C4D5E6FB2
+S315006010E08091A2B3C4D5E6F708192A3B4C5D6E7FA2
+S315006010F090A1B2C3D4E5F60718293A4B5C6D7E8F92
+S31500601100A0B1C2D3E4F5061728394A5B6C7D8E9F81
+S31500601110B0C1D2E3F405162738495A6B7C8D9EAF71
+S31500601120C0D1E2F30415263748596A7B8C9DAEBF61
+S31500601130D0E1F2031425364758697A8B9CADBECF51
+S31500601140E0F102132435465768798A9BACBDCEDF41
+S31500601150F00112233445566778899AABBCCDDEEF31
+S3150060116000112233445566778899AABBCCDDEEFF21
+S31500601170102132435465768798A9BACBDCEDFE0F11
+S315006011802031425364758697A8B9CADBECFD0E1F01
+S3150060119030415263748596A7B8C9DAEBFC0D1E2FF1
+S315006011A0405162738495A6B7C8D9EAFB0C1D2E3FE1
+S315006011B05061728394A5B6C7D8E9FA0B1C2D3E4FD1
+S315006011C060718293A4B5C6D7E8F90A1B2C3D4E5FC1
+S315006011D0708192A3B4C5D6E7F8091A2B3C4D5E6FB1
+S315006011E08091A2B3C4D5E6F708192A3B4C5D6E7FA1
+S315006011F090A1B2C3D4E5F60718293A4B5C6D7E8F91
+S31500601200A0B1C2D3E4F5061728394A5B6C7D8E9F80
+S31500601210B0C1D2E3F405162738495A6B7C8D9EAF70
+S31500601220C0D1E2F30415263748596A7B8C9DAEBF60
+S31500601230D0E1F2031425364758697A8B9CADBECF50
+S31500601240E0F102132435465768798A9BACBDCEDF40
+S31500601250F00112233445566778899AABBCCDDEEF30
+S3150060126000112233445566778899AABBCCDDEEFF20
+S31500601270102132435465768798A9BACBDCEDFE0F10
+S315006012802031425364758697A8B9CADBECFD0E1F00
+S3150060129030415263748596A7B8C9DAEBFC0D1E2FF0
+S315006012A0405162738495A6B7C8D9EAFB0C1D2E3FE0
+S315006012B05061728394A5B6C7D8E9FA0B1C2D3E4FD0
+S315006012C060718293A4B5C6D7E8F90A1B2C3D4E5FC0
+S315006012D0708192A3B4C5D6E7F8091A2B3C4D5E6FB0
+S315006012E08091A2B3C4D5E6F708192A3B4C5D6E7FA0
+S315006012F090A1B2C3D4E5F60718293A4B5C6D7E8F90
+S31500601300A0B1C2D3E4F5061728394A5B6C7D8E9F7F
+S31500601310B0C1D2E3F405162738495A6B7C8D9EAF6F
+S31500601320C0D1E2F30415263748596A7B8C9DAEBF5F
+S31500601330D0E1F2031425364758697A8B9CADBECF4F
+S31500601340E0F102132435465768798A9BACBDCEDF3F
+S31500601350F00112233445566778899AABBCCDDEEF2F
+S3150060136000112233445566778899AABBCCDDEEFF1F
+S31500601370102132435465768798A9BACBDCEDFE0F0F
+S315006013802031425364758697A8B9CADBECFD0E1FFF
+S3150060139030415263748596A7B8C9DAEBFC0D1E2FEF
+S315006013A0405162738495A6B7C8D9EAFB0C1D2E3FDF
+S315006013B05061728394A5B6C7D8E9FA0B1C2D3E4FCF
+S315006013C060718293A4B5C6D7E8F90A1B2C3D4E5FBF
+S315006013D0708192A3B4C5D6E7F8091A2B3C4D5E6FAF
+S315006013E08091A2B3C4D5E6F708192A3B4C5D6E7F9F
+S315006013F090A1B2C3D4E5F60718293A4B5C6D7E8F8F
+S31500601400A0B1C2D3E4F5061728394A5B6C7D8E9F7E
+S31500601410B0C1D2E3F405162738495A6B7C8D9EAF6E
+S31500601420C0D1E2F30415263748596A7B8C9DAEBF5E
+S31500601430D0E1F2031425364758697A8B9CADBECF4E
+S31500601440E0F102132435465768798A9BACBDCEDF3E
+S31500601450F00112233445566778899AABBCCDDEEF2E
+S3150060146000112233445566778899AABBCCDDEEFF1E
+S31500601470102132435465768798A9BACBDCEDFE0F0E
+S315006014802031425364758697A8B9CADBECFD0E1FFE
+S3150060149030415263748596A7B8C9DAEBFC0D1E2FEE
+S315006014A0405162738495A6B7C8D9EAFB0C1D2E3FDE
+S315006014B05061728394A5B6C7D8E9FA0B1C2D3E4FCE
+S315006014C060718293A4B5C6D7E8F90A1B2C3D4E5FBE
+S315006014D0708192A3B4C5D6E7F8091A2B3C4D5E6FAE
+S315006014E08091A2B3C4D5E6F708192A3B4C5D6E7F9E
+S315006014F090A1B2C3D4E5F60718293A4B5C6D7E8F8E
+S31500601500A0B1C2D3E4F5061728394A5B6C7D8E9F7D
+S31500601510B0C1D2E3F405162738495A6B7C8D9EAF6D
+S31500601520C0D1E2F30415263748596A7B8C9DAEBF5D
+S31500601530D0E1F2031425364758697A8B9CADBECF4D
+S31500601540E0F102132435465768798A9BACBDCEDF3D
+S31500601550F00112233445566778899AABBCCDDEEF2D
+S3150060156000112233445566778899AABBCCDDEEFF1D
+S31500601570102132435465768798A9BACBDCEDFE0F0D
+S315006015802031425364758697A8B9CADBECFD0E1FFD
+S3150060159030415263748596A7B8C9DAEBFC0D1E2FED
+S315006015A0405162738495A6B7C8D9EAFB0C1D2E3FDD
+S315006015B05061728394A5B6C7D8E9FA0B1C2D3E4FCD
+S315006015C060718293A4B5C6D7E8F90A1B2C3D4E5FBD
+S315006015D0708192A3B4C5D6E7F8091A2B3C4D5E6FAD
+S315006015E08091A2B3C4D5E6F708192A3B4C5D6E7F9D
+S315006015F090A1B2C3D4E5F60718293A4B5C6D7E8F8D
+S31500601600A0B1C2D3E4F5061728394A5B6C7D8E9F7C
+S31500601610B0C1D2E3F405162738495A6B7C8D9EAF6C
+S31500601620C0D1E2F30415263748596A7B8C9DAEBF5C
+S31500601630D0E1F2031425364758697A8B9CADBECF4C
+S31500601640E0F102132435465768798A9BACBDCEDF3C
+S31500601650F00112233445566778899AABBCCDDEEF2C
+S3150060166000112233445566778899AABBCCDDEEFF1C
+S31500601670102132435465768798A9BACBDCEDFE0F0C
+S315006016802031425364758697A8B9CADBECFD0E1FFC
+S3150060169030415263748596A7B8C9DAEBFC0D1E2FEC
+S315006016A0405162738495A6B7C8D9EAFB0C1D2E3FDC
+S315006016B05061728394A5B6C7D8E9FA0B1C2D3E4FCC
+S315006016C060718293A4B5C6D7E8F90A1B2C3D4E5FBC
+S315006016D0708192A3B4C5D6E7F8091A2B3C4D5E6FAC
+S315006016E08091A2B3C4D5E6F708192A3B4C5D6E7F9C
+S315006016F090A1B2C3D4E5F60718293A4B5C6D7E8F8C
+S31500601700A0B1C2D3E4F5061728394A5B6C7D8E9F7B
+S31500601710B0C1D2E3F405162738495A6B7C8D9EAF6B
+S31500601720C0D1E2F30415263748596A7B8C9DAEBF5B
+S31500601730D0E1F2031425364758697A8B9CADBECF4B
+S31500601740E0F102132435465768798A9BACBDCEDF3B
+S31500601750F00112233445566778899AABBCCDDEEF2B
+S3150060176000112233445566778899AABBCCDDEEFF1B
+S31500601770102132435465768798A9BACBDCEDFE0F0B
+S315006017802031425364758697A8B9CADBECFD0E1FFB
+S3150060179030415263748596A7B8C9DAEBFC0D1E2FEB
+S315006017A0405162738495A6B7C8D9EAFB0C1D2E3FDB
+S315006017B05061728394A5B6C7D8E9FA0B1C2D3E4FCB
+S315006017C060718293A4B5C6D7E8F90A1B2C3D4E5FBB
+S315006017D0708192A3B4C5D6E7F8091A2B3C4D5E6FAB
+S315006017E08091A2B3C4D5E6F708192A3B4C5D6E7F9B
+S315006017F090A1B2C3D4E5F60718293A4B5C6D7E8F8B
+S31500601800A0B1C2D3E4F5061728394A5B6C7D8E9F7A
+S31500601810B0C1D2E3F405162738495A6B7C8D9EAF6A
+S31500601820C0D1E2F30415263748596A7B8C9DAEBF5A
+S31500601830D0E1F2031425364758697A8B9CADBECF4A
+S31500601840E0F102132435465768798A9BACBDCEDF3A
+S31500601850F00112233445566778899AABBCCDDEEF2A
+S3150060186000112233445566778899AABBCCDDEEFF1A
+S31500601870102132435465768798A9BACBDCEDFE0F0A
+S315006018802031425364758697A8B9CADBECFD0E1FFA
+S3150060189030415263748596A7B8C9DAEBFC0D1E2FEA
+S315006018A0405162738495A6B7C8D9EAFB0C1D2E3FDA
+S315006018B05061728394A5B6C7D8E9FA0B1C2D3E4FCA
+S315006018C060718293A4B5C6D7E8F90A1B2C3D4E5FBA
+S315006018D0708192A3B4C5D6E7F8091A2B3C4D5E6FAA
+S315006018E08091A2B3C4D5E6F708192A3B4C5D6E7F9A
+S315006018F090A1B2C3D4E5F60718293A4B5C6D7E8F8A
+S31500601900A0B1C2D3E4F5061728394A5B6C7D8E9F79
+S31500601910B0C1D2E3F405162738495A6B7C8D9EAF69
+S31500601920C0D1E2F30415263748596A7B8C9DAEBF59
+S31500601930D0E1F2031425364758697A8B9CADBECF49
+S31500601940E0F102132435465768798A9BACBDCEDF39
+S31500601950F00112233445566778899AABBCCDDEEF29
+S3150060196000112233445566778899AABBCCDDEEFF19
+S31500601970102132435465768798A9BACBDCEDFE0F09
+S315006019802031425364758697A8B9CADBECFD0E1FF9
+S3150060199030415263748596A7B8C9DAEBFC0D1E2FE9
+S315006019A0405162738495A6B7C8D9EAFB0C1D2E3FD9
+S315006019B05061728394A5B6C7D8E9FA0B1C2D3E4FC9
+S315006019C060718293A4B5C6D7E8F90A1B2C3D4E5FB9
+S315006019D0708192A3B4C5D6E7F8091A2B3C4D5E6FA9
+S315006019E08091A2B3C4D5E6F708192A3B4C5D6E7F99
+S315006019F090A1B2C3D4E5F60718293A4B5C6D7E8F89
+S31500601A00A0B1C2D3E4F5061728394A5B6C7D8E9F78
+S31500601A10B0C1D2E3F405162738495A6B7C8D9EAF68
+S31500601A20C0D1E2F30415263748596A7B8C9DAEBF58
+S31500601A30D0E1F2031425364758697A8B9CADBECF48
+S31500601A40E0F102132435465768798A9BACBDCEDF38
+S31500601A50F00112233445566778899AABBCCDDEEF28
+S31500601A6000112233445566778899AABBCCDDEEFF18
+S31500601A70102132435465768798A9BACBDCEDFE0F08
+S31500601A802031425364758697A8B9CADBECFD0E1FF8
+S31500601A9030415263748596A7B8C9DAEBFC0D1E2FE8
+S31500601AA0405162738495A6B7C8D9EAFB0C1D2E3FD8
+S31500601AB05061728394A5B6C7D8E9FA0B1C2D3E4FC8
+S31500601AC060718293A4B5C6D7E8F90A1B2C3D4E5FB8
+S31500601AD0708192A3B4C5D6E7F8091A2B3C4D5E6FA8
+S31500601AE08091A2B3C4D5E6F708192A3B4C5D6E7F98
+S31500601AF090A1B2C3D4E5F60718293A4B5C6D7E8F88
+S31500601B00A0B1C2D3E4F5061728394A5B6C7D8E9F77
+S31500601B10B0C1D2E3F405162738495A6B7C8D9EAF67
+S31500601B20C0D1E2F30415263748596A7B8C9DAEBF57
+S31500601B30D0E1F2031425364758697A8B9CADBECF47
+S31500601B40E0F102132435465768798A9BACBDCEDF37
+S31500601B50F00112233445566778899AABBCCDDEEF27
+S31500601B6000112233445566778899AABBCCDDEEFF17
+S31500601B70102132435465768798A9BACBDCEDFE0F07
+S31500601B802031425364758697A8B9CADBECFD0E1FF7
+S31500601B9030415263748596A7B8C9DAEBFC0D1E2FE7
+S31500601BA0405162738495A6B7C8D9EAFB0C1D2E3FD7
+S31500601BB05061728394A5B6C7D8E9FA0B1C2D3E4FC7
+S31500601BC060718293A4B5C6D7E8F90A1B2C3D4E5FB7
+S31500601BD0708192A3B4C5D6E7F8091A2B3C4D5E6FA7
+S31500601BE08091A2B3C4D5E6F708192A3B4C5D6E7F97
+S31500601BF090A1B2C3D4E5F60718293A4B5C6D7E8F87
+S31500601C00A0B1C2D3E4F5061728394A5B6C7D8E9F76
+S31500601C10B0C1D2E3F405162738495A6B7C8D9EAF66
+S31500601C20C0D1E2F30415263748596A7B8C9DAEBF56
+S31500601C30D0E1F2031425364758697A8B9CADBECF46
+S31500601C40E0F102132435465768798A9BACBDCEDF36
+S31500601C50F00112233445566778899AABBCCDDEEF26
+S31500601C6000112233445566778899AABBCCDDEEFF16
+S31500601C70102132435465768798A9BACBDCEDFE0F06
+S31500601C802031425364758697A8B9CADBECFD0E1FF6
+S31500601C9030415263748596A7B8C9DAEBFC0D1E2FE6
+S31500601CA0405162738495A6B7C8D9EAFB0C1D2E3FD6
+S31500601CB05061728394A5B6C7D8E9FA0B1C2D3E4FC6
+S31500601CC060718293A4B5C6D7E8F90A1B2C3D4E5FB6
+S31500601CD0708192A3B4C5D6E7F8091A2B3C4D5E6FA6
+S31500601CE08091A2B3C4D5E6F708192A3B4C5D6E7F96
+S31500601CF090A1B2C3D4E5F60718293A4B5C6D7E8F86
+S31500601D00A0B1C2D3E4F5061728394A5B6C7D8E9F75
+S31500601D10B0C1D2E3F405162738495A6B7C8D9EAF65
+S31500601D20C0D1E2F30415263748596A7B8C9DAEBF55
+S31500601D30D0E1F2031425364758697A8B9CADBECF45
+S31500601D40E0F102132435465768798A9BACBDCEDF35
+S31500601D50F00112233445566778899AABBCCDDEEF25
+S31500601D6000112233445566778899AABBCCDDEEFF15
+S31500601D70102132435465768798A9BACBDCEDFE0F05
+S31500601D802031425364758697A8B9CADBECFD0E1FF5
+S31500601D9030415263748596A7B8C9DAEBFC0D1E2FE5
+S31500601DA0405162738495A6B7C8D9EAFB0C1D2E3FD5
+S31500601DB05061728394A5B6C7D8E9FA0B1C2D3E4FC5
+S31500601DC060718293A4B5C6D7E8F90A1B2C3D4E5FB5
+S31500601DD0708192A3B4C5D6E7F8091A2B3C4D5E6FA5
+S31500601DE08091A2B3C4D5E6F708192A3B4C5D6E7F95
+S31500601DF090A1B2C3D4E5F60718293A4B5C6D7E8F85
+S31500601E00A0B1C2D3E4F5061728394A5B6C7D8E9F74
+S31500601E10B0C1D2E3F405162738495A6B7C8D9EAF64
+S31500601E20C0D1E2F30415263748596A7B8C9DAEBF54
+S31500601E30D0E1F2031425364758697A8B9CADBECF44
+S31500601E40E0F102132435465768798A9BACBDCEDF34
+S31500601E50F00112233445566778899AABBCCDDEEF24
+S31500601E6000112233445566778899AABBCCDDEEFF14
+S31500601E70102132435465768798A9BACBDCEDFE0F04
+S31500601E802031425364758697A8B9CADBECFD0E1FF4
+S31500601E9030415263748596A7B8C9DAEBFC0D1E2FE4
+S31500601EA0405162738495A6B7C8D9EAFB0C1D2E3FD4
+S31500601EB05061728394A5B6C7D8E9FA0B1C2D3E4FC4
+S31500601EC060718293A4B5C6D7E8F90A1B2C3D4E5FB4
+S31500601ED0708192A3B4C5D6E7F8091A2B3C4D5E6FA4
+S31500601EE08091A2B3C4D5E6F708192A3B4C5D6E7F94
+S31500601EF090A1B2C3D4E5F60718293A4B5C6D7E8F84
+S31500601F00A0B1C2D3E4F5061728394A5B6C7D8E9F73
+S31500601F10B0C1D2E3F405162738495A6B7C8D9EAF63
+S31500601F20C0D1E2F30415263748596A7B8C9DAEBF53
+S31500601F30D0E1F2031425364758697A8B9CADBECF43
+S31500601F40E0F102132435465768798A9BACBDCEDF33
+S31500601F50F00112233445566778899AABBCCDDEEF23
+S31500601F6000112233445566778899AABBCCDDEEFF13
+S31500601F70102132435465768798A9BACBDCEDFE0F03
+S31500601F802031425364758697A8B9CADBECFD0E1FF3
+S31500601F9030415263748596A7B8C9DAEBFC0D1E2FE3
+S31500601FA0405162738495A6B7C8D9EAFB0C1D2E3FD3
+S31500601FB05061728394A5B6C7D8E9FA0B1C2D3E4FC3
+S31500601FC060718293A4B5C6D7E8F90A1B2C3D4E5FB3
+S31500601FD0708192A3B4C5D6E7F8091A2B3C4D5E6FA3
+S31500601FE08091A2B3C4D5E6F708192A3B4C5D6E7F93
+S31500601FF090A1B2C3D4E5F60718293A4B5C6D7E8F83
+S31500602000A0B1C2D3E4F5061728394A5B6C7D8E9F72
+S31500602010B0C1D2E3F405162738495A6B7C8D9EAF62
+S31500602020C0D1E2F30415263748596A7B8C9DAEBF52
+S31500602030D0E1F2031425364758697A8B9CADBECF42
+S31500602040E0F102132435465768798A9BACBDCEDF32
+S31500602050F00112233445566778899AABBCCDDEEF22
+S3150060206000112233445566778899AABBCCDDEEFF12
+S31500602070102132435465768798A9BACBDCEDFE0F02
+S315006020802031425364758697A8B9CADBECFD0E1FF2
+S3150060209030415263748596A7B8C9DAEBFC0D1E2FE2
+S315006020A0405162738495A6B7C8D9EAFB0C1D2E3FD2
+S315006020B05061728394A5B6C7D8E9FA0B1C2D3E4FC2
+S315006020C060718293A4B5C6D7E8F90A1B2C3D4E5FB2
+S315006020D0708192A3B4C5D6E7F8091A2B3C4D5E6FA2
+S315006020E08091A2B3C4D5E6F708192A3B4C5D6E7F92
+S315006020F090A1B2C3D4E5F60718293A4B5C6D7E8F82
+S31500602100A0B1C2D3E4F5061728394A5B6C7D8E9F71
+S31500602110B0C1D2E3F405162738495A6B7C8D9EAF61
+S31500602120C0D1E2F30415263748596A7B8C9DAEBF51
+S31500602130D0E1F2031425364758697A8B9CADBECF41
+S31500602140E0F102132435465768798A9BACBDCEDF31
+S31500602150F00112233445566778899AABBCCDDEEF21
+S3150060216000112233445566778899AABBCCDDEEFF11
+S31500602170102132435465768798A9BACBDCEDFE0F01
+S315006021802031425364758697A8B9CADBECFD0E1FF1
+S3150060219030415263748596A7B8C9DAEBFC0D1E2FE1
+S315006021A0405162738495A6B7C8D9EAFB0C1D2E3FD1
+S315006021B05061728394A5B6C7D8E9FA0B1C2D3E4FC1
+S315006021C060718293A4B5C6D7E8F90A1B2C3D4E5FB1
+S315006021D0708192A3B4C5D6E7F8091A2B3C4D5E6FA1
+S315006021E08091A2B3C4D5E6F708192A3B4C5D6E7F91
+S315006021F090A1B2C3D4E5F60718293A4B5C6D7E8F81
+S31500602200A0B1C2D3E4F5061728394A5B6C7D8E9F70
+S31500602210B0C1D2E3F405162738495A6B7C8D9EAF60
+S31500602220C0D1E2F30415263748596A7B8C9DAEBF50
+S31500602230D0E1F2031425364758697A8B9CADBECF40
+S31500602240E0F102132435465768798A9BACBDCEDF30
+S31500602250F00112233445566778899AABBCCDDEEF20
+S3150060226000112233445566778899AABBCCDDEEFF10
+S31500602270102132435465768798A9BACBDCEDFE0F00
+S315006022802031425364758697A8B9CADBECFD0E1FF0
+S3150060229030415263748596A7B8C9DAEBFC0D1E2FE0
+S315006022A0405162738495A6B7C8D9EAFB0C1D2E3FD0
+S315006022B05061728394A5B6C7D8E9FA0B1C2D3E4FC0
+S315006022C060718293A4B5C6D7E8F90A1B2C3D4E5FB0
+S315006022D0708192A3B4C5D6E7F8091A2B3C4D5E6FA0
+S315006022E08091A2B3C4D5E6F708192A3B4C5D6E7F90
+S315006022F090A1B2C3D4E5F60718293A4B5C6D7E8F80
+S31500602300A0B1C2D3E4F5061728394A5B6C7D8E9F6F
+S31500602310B0C1D2E3F405162738495A6B7C8D9EAF5F
+S31500602320C0D1E2F30415263748596A7B8C9DAEBF4F
+S31500602330D0E1F2031425364758697A8B9CADBECF3F
+S31500602340E0F102132435465768798A9BACBDCEDF2F
+S31500602350F00112233445566778899AABBCCDDEEF1F
+S3150060236000112233445566778899AABBCCDDEEFF0F
+S31500602370102132435465768798A9BACBDCEDFE0FFF
+S315006023802031425364758697A8B9CADBECFD0E1FEF
+S3150060239030415263748596A7B8C9DAEBFC0D1E2FDF
+S315006023A0405162738495A6B7C8D9EAFB0C1D2E3FCF
+S315006023B05061728394A5B6C7D8E9FA0B1C2D3E4FBF
+S315006023C060718293A4B5C6D7E8F90A1B2C3D4E5FAF
+S315006023D0708192A3B4C5D6E7F8091A2B3C4D5E6F9F
+S315006023E08091A2B3C4D5E6F708192A3B4C5D6E7F8F
+S315006023F090A1B2C3D4E5F60718293A4B5C6D7E8F7F
+S31500602400A0B1C2D3E4F5061728394A5B6C7D8E9F6E
+S31500602410B0C1D2E3F405162738495A6B7C8D9EAF5E
+S31500602420C0D1E2F30415263748596A7B8C9DAEBF4E
+S31500602430D0E1F2031425364758697A8B9CADBECF3E
+S31500602440E0F102132435465768798A9BACBDCEDF2E
+S31500602450F00112233445566778899AABBCCDDEEF1E
+S3150060246000112233445566778899AABBCCDDEEFF0E
+S31500602470102132435465768798A9BACBDCEDFE0FFE
+S315006024802031425364758697A8B9CADBECFD0E1FEE
+S3150060249030415263748596A7B8C9DAEBFC0D1E2FDE
+S315006024A0405162738495A6B7C8D9EAFB0C1D2E3FCE
+S315006024B05061728394A5B6C7D8E9FA0B1C2D3E4FBE
+S315006024C060718293A4B5C6D7E8F90A1B2C3D4E5FAE
+S315006024D0708192A3B4C5D6E7F8091A2B3C4D5E6F9E
+S315006024E08091A2B3C4D5E6F708192A3B4C5D6E7F8E
+S315006024F090A1B2C3D4E5F60718293A4B5C6D7E8F7E
+S31500602500A0B1C2D3E4F5061728394A5B6C7D8E9F6D
+S31500602510B0C1D2E3F405162738495A6B7C8D9EAF5D
+S31500602520C0D1E2F30415263748596A7B8C9DAEBF4D
+S31500602530D0E1F2031425364758697A8B9CADBECF3D
+S31500602540E0F102132435465768798A9BACBDCEDF2D
+S31500602550F00112233445566778899AABBCCDDEEF1D
+S3150060256000112233445566778899AABBCCDDEEFF0D
+S31500602570102132435465768798A9BACBDCEDFE0FFD
+S315006025802031425364758697A8B9CADBECFD0E1FED
+S3150060259030415263748596A7B8C9DAEBFC0D1E2FDD
+S315006025A0405162738495A6B7C8D9EAFB0C1D2E3FCD
+S315006025B05061728394A5B6C7D8E9FA0B1C2D3E4FBD
+S315006025C060718293A4B5C6D7E8F90A1B2C3D4E5FAD
+S315006025D0708192A3B4C5D6E7F8091A2B3C4D5E6F9D
+S315006025E08091A2B3C4D5E6F708192A3B4C5D6E7F8D
+S315006025F090A1B2C3D4E5F60718293A4B5C6D7E8F7D
+S31500602600A0B1C2D3E4F5061728394A5B6C7D8E9F6C
+S31500602610B0C1D2E3F405162738495A6B7C8D9EAF5C
+S31500602620C0D1E2F30415263748596A7B8C9DAEBF4C
+S31500602630D0E1F2031425364758697A8B9CADBECF3C
+S31500602640E0F102132435465768798A9BACBDCEDF2C
+S31500602650F00112233445566778899AABBCCDDEEF1C
+S3150060266000112233445566778899AABBCCDDEEFF0C
+S31500602670102132435465768798A9BACBDCEDFE0FFC
+S315006026802031425364758697A8B9CADBECFD0E1FEC
+S3150060269030415263748596A7B8C9DAEBFC0D1E2FDC
+S315006026A0405162738495A6B7C8D9EAFB0C1D2E3FCC
+S315006026B05061728394A5B6C7D8E9FA0B1C2D3E4FBC
+S315006026C060718293A4B5C6D7E8F90A1B2C3D4E5FAC
+S315006026D0708192A3B4C5D6E7F8091A2B3C4D5E6F9C
+S315006026E08091A2B3C4D5E6F708192A3B4C5D6E7F8C
+S315006026F090A1B2C3D4E5F60718293A4B5C6D7E8F7C
+S31500602700A0B1C2D3E4F5061728394A5B6C7D8E9F6B
+S31500602710B0C1D2E3F405162738495A6B7C8D9EAF5B
+S31500602720C0D1E2F30415263748596A7B8C9DAEBF4B
+S31500602730D0E1F2031425364758697A8B9CADBECF3B
+S31500602740E0F102132435465768798A9BACBDCEDF2B
+S31500602750F00112233445566778899AABBCCDDEEF1B
+S3150060276000112233445566778899AABBCCDDEEFF0B
+S31500602770102132435465768798A9BACBDCEDFE0FFB
+S315006027802031425364758697A8B9CADBECFD0E1FEB
+S3150060279030415263748596A7B8C9DAEBFC0D1E2FDB
+S315006027A0405162738495A6B7C8D9EAFB0C1D2E3FCB
+S315006027B05061728394A5B6C7D8E9FA0B1C2D3E4FBB
+S315006027C060718293A4B5C6D7E8F90A1B2C3D4E5FAB
+S315006027D0708192A3B4C5D6E7F8091A2B3C4D5E6F9B
+S315006027E08091A2B3C4D5E6F708192A3B4C5D6E7F8B
+S315006027F090A1B2C3D4E5F60718293A4B5C6D7E8F7B
+S31500602800A0B1C2D3E4F5061728394A5B6C7D8E9F6A
+S31500602810B0C1D2E3F405162738495A6B7C8D9EAF5A
+S31500602820C0D1E2F30415263748596A7B8C9DAEBF4A
+S31500602830D0E1F2031425364758697A8B9CADBECF3A
+S31500602840E0F102132435465768798A9BACBDCEDF2A
+S31500602850F00112233445566778899AABBCCDDEEF1A
+S3150060286000112233445566778899AABBCCDDEEFF0A
+S31500602870102132435465768798A9BACBDCEDFE0FFA
+S315006028802031425364758697A8B9CADBECFD0E1FEA
+S3150060289030415263748596A7B8C9DAEBFC0D1E2FDA
+S315006028A0405162738495A6B7C8D9EAFB0C1D2E3FCA
+S315006028B05061728394A5B6C7D8E9FA0B1C2D3E4FBA
+S315006028C060718293A4B5C6D7E8F90A1B2C3D4E5FAA
+S315006028D0708192A3B4C5D6E7F8091A2B3C4D5E6F9A
+S315006028E08091A2B3C4D5E6F708192A3B4C5D6E7F8A
+S315006028F090A1B2C3D4E5F60718293A4B5C6D7E8F7A
+S31500602900A0B1C2D3E4F5061728394A5B6C7D8E9F69
+S31500602910B0C1D2E3F405162738495A6B7C8D9EAF59
+S31500602920C0D1E2F30415263748596A7B8C9DAEBF49
+S31500602930D0E1F2031425364758697A8B9CADBECF39
+S31500602940E0F102132435465768798A9BACBDCEDF29
+S31500602950F00112233445566778899AABBCCDDEEF19
+S3150060296000112233445566778899AABBCCDDEEFF09
+S31500602970102132435465768798A9BACBDCEDFE0FF9
+S315006029802031425364758697A8B9CADBECFD0E1FE9
+S3150060299030415263748596A7B8C9DAEBFC0D1E2FD9
+S315006029A0405162738495A6B7C8D9EAFB0C1D2E3FC9
+S315006029B05061728394A5B6C7D8E9FA0B1C2D3E4FB9
+S315006029C060718293A4B5C6D7E8F90A1B2C3D4E5FA9
+S315006029D0708192A3B4C5D6E7F8091A2B3C4D5E6F99
+S315006029E08091A2B3C4D5E6F708192A3B4C5D6E7F89
+S315006029F090A1B2C3D4E5F60718293A4B5C6D7E8F79
+S31500602A00A0B1C2D3E4F5061728394A5B6C7D8E9F68
+S31500602A10B0C1D2E3F405162738495A6B7C8D9EAF58
+S31500602A20C0D1E2F30415263748596A7B8C9DAEBF48
+S31500602A30D0E1F2031425364758697A8B9CADBECF38
+S31500602A40E0F102132435465768798A9BACBDCEDF28
+S31500602A50F00112233445566778899AABBCCDDEEF18
+S31500602A6000112233445566778899AABBCCDDEEFF08
+S31500602A70102132435465768798A9BACBDCEDFE0FF8
+S31500602A802031425364758697A8B9CADBECFD0E1FE8
+S31500602A9030415263748596A7B8C9DAEBFC0D1E2FD8
+S31500602AA0405162738495A6B7C8D9EAFB0C1D2E3FC8
+S31500602AB05061728394A5B6C7D8E9FA0B1C2D3E4FB8
+S31500602AC060718293A4B5C6D7E8F90A1B2C3D4E5FA8
+S31500602AD0708192A3B4C5D6E7F8091A2B3C4D5E6F98
+S31500602AE08091A2B3C4D5E6F708192A3B4C5D6E7F88
+S31500602AF090A1B2C3D4E5F60718293A4B5C6D7E8F78
+S31500602B00A0B1C2D3E4F5061728394A5B6C7D8E9F67
+S31500602B10B0C1D2E3F405162738495A6B7C8D9EAF57
+S31500602B20C0D1E2F30415263748596A7B8C9DAEBF47
+S31500602B30D0E1F2031425364758697A8B9CADBECF37
+S31500602B40E0F102132435465768798A9BACBDCEDF27
+S31500602B50F00112233445566778899AABBCCDDEEF17
+S31500602B6000112233445566778899AABBCCDDEEFF07
+S31500602B70102132435465768798A9BACBDCEDFE0FF7
+S31500602B802031425364758697A8B9CADBECFD0E1FE7
+S31500602B9030415263748596A7B8C9DAEBFC0D1E2FD7
+S31500602BA0405162738495A6B7C8D9EAFB0C1D2E3FC7
+S31500602BB05061728394A5B6C7D8E9FA0B1C2D3E4FB7
+S31500602BC060718293A4B5C6D7E8F90A1B2C3D4E5FA7
+S31500602BD0708192A3B4C5D6E7F8091A2B3C4D5E6F97
+S31500602BE08091A2B3C4D5E6F708192A3B4C5D6E7F87
+S31500602BF090A1B2C3D4E5F60718293A4B5C6D7E8F77
+S31500602C00A0B1C2D3E4F5061728394A5B6C7D8E9F66
+S31500602C10B0C1D2E3F405162738495A6B7C8D9EAF56
+S31500602C20C0D1E2F30415263748596A7B8C9DAEBF46
+S31500602C30D0E1F2031425364758697A8B9CADBECF36
+S31500602C40E0F102132435465768798A9BACBDCEDF26
+S31500602C50F00112233445566778899AABBCCDDEEF16
+S31500602C6000112233445566778899AABBCCDDEEFF06
+S31500602C70102132435465768798A9BACBDCEDFE0FF6
+S31500602C802031425364758697A8B9CADBECFD0E1FE6
+S31500602C9030415263748596A7B8C9DAEBFC0D1E2FD6
+S31500602CA0405162738495A6B7C8D9EAFB0C1D2E3FC6
+S31500602CB05061728394A5B6C7D8E9FA0B1C2D3E4FB6
+S31500602CC060718293A4B5C6D7E8F90A1B2C3D4E5FA6
+S31500602CD0708192A3B4C5D6E7F8091A2B3C4D5E6F96
+S31500602CE08091A2B3C4D5E6F708192A3B4C5D6E7F86
+S31500602CF090A1B2C3D4E5F60718293A4B5C6D7E8F76
+S31500602D00A0B1C2D3E4F5061728394A5B6C7D8E9F65
+S31500602D10B0C1D2E3F405162738495A6B7C8D9EAF55
+S31500602D20C0D1E2F30415263748596A7B8C9DAEBF45
+S31500602D30D0E1F2031425364758697A8B9CADBECF35
+S31500602D40E0F102132435465768798A9BACBDCEDF25
+S31500602D50F00112233445566778899AABBCCDDEEF15
+S31500602D6000112233445566778899AABBCCDDEEFF05
+S31500602D70102132435465768798A9BACBDCEDFE0FF5
+S31500602D802031425364758697A8B9CADBECFD0E1FE5
+S31500602D9030415263748596A7B8C9DAEBFC0D1E2FD5
+S31500602DA0405162738495A6B7C8D9EAFB0C1D2E3FC5
+S31500602DB05061728394A5B6C7D8E9FA0B1C2D3E4FB5
+S31500602DC060718293A4B5C6D7E8F90A1B2C3D4E5FA5
+S31500602DD0708192A3B4C5D6E7F8091A2B3C4D5E6F95
+S31500602DE08091A2B3C4D5E6F708192A3B4C5D6E7F85
+S31500602DF090A1B2C3D4E5F60718293A4B5C6D7E8F75
+S31500602E00A0B1C2D3E4F5061728394A5B6C7D8E9F64
+S31500602E10B0C1D2E3F405162738495A6B7C8D9EAF54
+S31500602E20C0D1E2F30415263748596A7B8C9DAEBF44
+S31500602E30D0E1F2031425364758697A8B9CADBECF34
+S31500602E40E0F102132435465768798A9BACBDCEDF24
+S31500602E50F00112233445566778899AABBCCDDEEF14
+S31500602E6000112233445566778899AABBCCDDEEFF04
+S31500602E70102132435465768798A9BACBDCEDFE0FF4
+S31500602E802031425364758697A8B9CADBECFD0E1FE4
+S31500602E9030415263748596A7B8C9DAEBFC0D1E2FD4
+S31500602EA0405162738495A6B7C8D9EAFB0C1D2E3FC4
+S31500602EB05061728394A5B6C7D8E9FA0B1C2D3E4FB4
+S31500602EC060718293A4B5C6D7E8F90A1B2C3D4E5FA4
+S31500602ED0708192A3B4C5D6E7F8091A2B3C4D5E6F94
+S31500602EE08091A2B3C4D5E6F708192A3B4C5D6E7F84
+S31500602EF090A1B2C3D4E5F60718293A4B5C6D7E8F74
+S31500602F00A0B1C2D3E4F5061728394A5B6C7D8E9F63
+S31500602F10B0C1D2E3F405162738495A6B7C8D9EAF53
+S31500602F20C0D1E2F30415263748596A7B8C9DAEBF43
+S31500602F30D0E1F2031425364758697A8B9CADBECF33
+S31500602F40E0F102132435465768798A9BACBDCEDF23
+S31500602F50F00112233445566778899AABBCCDDEEF13
+S31500602F6000112233445566778899AABBCCDDEEFF03
+S31500602F70102132435465768798A9BACBDCEDFE0FF3
+S31500602F802031425364758697A8B9CADBECFD0E1FE3
+S31500602F9030415263748596A7B8C9DAEBFC0D1E2FD3
+S31500602FA0405162738495A6B7C8D9EAFB0C1D2E3FC3
+S31500602FB05061728394A5B6C7D8E9FA0B1C2D3E4FB3
+S31500602FC060718293A4B5C6D7E8F90A1B2C3D4E5FA3
+S31500602FD0708192A3B4C5D6E7F8091A2B3C4D5E6F93
+S31500602FE08091A2B3C4D5E6F708192A3B4C5D6E7F83
+S31500602FF090A1B2C3D4E5F60718293A4B5C6D7E8F73
+S31500603000A0B1C2D3E4F5061728394A5B6C7D8E9F62
+S31500603010B0C1D2E3F405162738495A6B7C8D9EAF52
+S31500603020C0D1E2F30415263748596A7B8C9DAEBF42
+S31500603030D0E1F2031425364758697A8B9CADBECF32
+S31500603040E0F102132435465768798A9BACBDCEDF22
+S31500603050F00112233445566778899AABBCCDDEEF12
+S3150060306000112233445566778899AABBCCDDEEFF02
+S31500603070102132435465768798A9BACBDCEDFE0FF2
+S315006030802031425364758697A8B9CADBECFD0E1FE2
+S3150060309030415263748596A7B8C9DAEBFC0D1E2FD2
+S315006030A0405162738495A6B7C8D9EAFB0C1D2E3FC2
+S315006030B05061728394A5B6C7D8E9FA0B1C2D3E4FB2
+S315006030C060718293A4B5C6D7E8F90A1B2C3D4E5FA2
+S315006030D0708192A3B4C5D6E7F8091A2B3C4D5E6F92
+S315006030E08091A2B3C4D5E6F708192A3B4C5D6E7F82
+S315006030F090A1B2C3D4E5F60718293A4B5C6D7E8F72
+S31500603100A0B1C2D3E4F5061728394A5B6C7D8E9F61
+S31500603110B0C1D2E3F405162738495A6B7C8D9EAF51
+S31500603120C0D1E2F30415263748596A7B8C9DAEBF41
+S31500603130D0E1F2031425364758697A8B9CADBECF31
+S31500603140E0F102132435465768798A9BACBDCEDF21
+S31500603150F00112233445566778899AABBCCDDEEF11
+S3150060316000112233445566778899AABBCCDDEEFF01
+S31500603170102132435465768798A9BACBDCEDFE0FF1
+S315006031802031425364758697A8B9CADBECFD0E1FE1
+S3150060319030415263748596A7B8C9DAEBFC0D1E2FD1
+S315006031A0405162738495A6B7C8D9EAFB0C1D2E3FC1
+S315006031B05061728394A5B6C7D8E9FA0B1C2D3E4FB1
+S315006031C060718293A4B5C6D7E8F90A1B2C3D4E5FA1
+S315006031D0708192A3B4C5D6E7F8091A2B3C4D5E6F91
+S315006031E08091A2B3C4D5E6F708192A3B4C5D6E7F81
+S315006031F090A1B2C3D4E5F60718293A4B5C6D7E8F71
+S31500603200A0B1C2D3E4F5061728394A5B6C7D8E9F60
+S31500603210B0C1D2E3F405162738495A6B7C8D9EAF50
+S31500603220C0D1E2F30415263748596A7B8C9DAEBF40
+S31500603230D0E1F2031425364758697A8B9CADBECF30
+S31500603240E0F102132435465768798A9BACBDCEDF20
+S31500603250F00112233445566778899AABBCCDDEEF10
+S3150060326000112233445566778899AABBCCDDEEFF00
+S31500603270102132435465768798A9BACBDCEDFE0FF0
+S315006032802031425364758697A8B9CADBECFD0E1FE0
+S3150060329030415263748596A7B8C9DAEBFC0D1E2FD0
+S315006032A0405162738495A6B7C8D9EAFB0C1D2E3FC0
+S315006032B05061728394A5B6C7D8E9FA0B1C2D3E4FB0
+S315006032C060718293A4B5C6D7E8F90A1B2C3D4E5FA0
+S315006032D0708192A3B4C5D6E7F8091A2B3C4D5E6F90
+S315006032E08091A2B3C4D5E6F708192A3B4C5D6E7F80
+S315006032F090A1B2C3D4E5F60718293A4B5C6D7E8F70
+S31500603300A0B1C2D3E4F5061728394A5B6C7D8E9F5F
+S31500603310B0C1D2E3F405162738495A6B7C8D9EAF4F
+S31500603320C0D1E2F30415263748596A7B8C9DAEBF3F
+S31500603330D0E1F2031425364758697A8B9CADBECF2F
+S31500603340E0F102132435465768798A9BACBDCEDF1F
+S31500603350F00112233445566778899AABBCCDDEEF0F
+S3150060336000112233445566778899AABBCCDDEEFFFF
+S31500603370102132435465768798A9BACBDCEDFE0FEF
+S315006033802031425364758697A8B9CADBECFD0E1FDF
+S3150060339030415263748596A7B8C9DAEBFC0D1E2FCF
+S315006033A0405162738495A6B7C8D9EAFB0C1D2E3FBF
+S315006033B05061728394A5B6C7D8E9FA0B1C2D3E4FAF
+S315006033C060718293A4B5C6D7E8F90A1B2C3D4E5F9F
+S315006033D0708192A3B4C5D6E7F8091A2B3C4D5E6F8F
+S315006033E08091A2B3C4D5E6F708192A3B4C5D6E7F7F
+S315006033F090A1B2C3D4E5F60718293A4B5C6D7E8F6F
+S31500603400A0B1C2D3E4F5061728394A5B6C7D8E9F5E
+S31500603410B0C1D2E3F405162738495A6B7C8D9EAF4E
+S31500603420C0D1E2F30415263748596A7B8C9DAEBF3E
+S31500603430D0E1F2031425364758697A8B9CADBECF2E
+S31500603440E0F102132435465768798A9BACBDCEDF1E
+S31500603450F00112233445566778899AABBCCDDEEF0E
+S3150060346000112233445566778899AABBCCDDEEFFFE
+S31500603470102132435465768798A9BACBDCEDFE0FEE
+S315006034802031425364758697A8B9CADBECFD0E1FDE
+S3150060349030415263748596A7B8C9DAEBFC0D1E2FCE
+S315006034A0405162738495A6B7C8D9EAFB0C1D2E3FBE
+S315006034B05061728394A5B6C7D8E9FA0B1C2D3E4FAE
+S315006034C060718293A4B5C6D7E8F90A1B2C3D4E5F9E
+S315006034D0708192A3B4C5D6E7F8091A2B3C4D5E6F8E
+S315006034E08091A2B3C4D5E6F708192A3B4C5D6E7F7E
+S315006034F090A1B2C3D4E5F60718293A4B5C6D7E8F6E
+S31500603500A0B1C2D3E4F5061728394A5B6C7D8E9F5D
+S31500603510B0C1D2E3F405162738495A6B7C8D9EAF4D
+S31500603520C0D1E2F30415263748596A7B8C9DAEBF3D
+S31500603530D0E1F2031425364758697A8B9CADBECF2D
+S31500603540E0F102132435465768798A9BACBDCEDF1D
+S31500603550F00112233445566778899AABBCCDDEEF0D
+S3150060356000112233445566778899AABBCCDDEEFFFD
+S31500603570102132435465768798A9BACBDCEDFE0FED
+S315006035802031425364758697A8B9CADBECFD0E1FDD
+S3150060359030415263748596A7B8C9DAEBFC0D1E2FCD
+S315006035A0405162738495A6B7C8D9EAFB0C1D2E3FBD
+S315006035B05061728394A5B6C7D8E9FA0B1C2D3E4FAD
+S315006035C060718293A4B5C6D7E8F90A1B2C3D4E5F9D
+S315006035D0708192A3B4C5D6E7F8091A2B3C4D5E6F8D
+S315006035E08091A2B3C4D5E6F708192A3B4C5D6E7F7D
+S315006035F090A1B2C3D4E5F60718293A4B5C6D7E8F6D
+S31500603600A0B1C2D3E4F5061728394A5B6C7D8E9F5C
+S31500603610B0C1D2E3F405162738495A6B7C8D9EAF4C
+S31500603620C0D1E2F30415263748596A7B8C9DAEBF3C
+S31500603630D0E1F2031425364758697A8B9CADBECF2C
+S31500603640E0F102132435465768798A9BACBDCEDF1C
+S31500603650F00112233445566778899AABBCCDDEEF0C
+S3150060366000112233445566778899AABBCCDDEEFFFC
+S31500603670102132435465768798A9BACBDCEDFE0FEC
+S315006036802031425364758697A8B9CADBECFD0E1FDC
+S3150060369030415263748596A7B8C9DAEBFC0D1E2FCC
+S315006036A0405162738495A6B7C8D9EAFB0C1D2E3FBC
+S315006036B05061728394A5B6C7D8E9FA0B1C2D3E4FAC
+S315006036C060718293A4B5C6D7E8F90A1B2C3D4E5F9C
+S315006036D0708192A3B4C5D6E7F8091A2B3C4D5E6F8C
+S315006036E08091A2B3C4D5E6F708192A3B4C5D6E7F7C
+S315006036F090A1B2C3D4E5F60718293A4B5C6D7E8F6C
+S31500603700A0B1C2D3E4F5061728394A5B6C7D8E9F5B
+S31500603710B0C1D2E3F405162738495A6B7C8D9EAF4B
+S31500603720C0D1E2F30415263748596A7B8C9DAEBF3B
+S31500603730D0E1F2031425364758697A8B9CADBECF2B
+S31500603740E0F102132435465768798A9BACBDCEDF1B
+S31500603750F00112233445566778899AABBCCDDEEF0B
+S3150060376000112233445566778899AABBCCDDEEFFFB
+S31500603770102132435465768798A9BACBDCEDFE0FEB
+S315006037802031425364758697A8B9CADBECFD0E1FDB
+S3150060379030415263748596A7B8C9DAEBFC0D1E2FCB
+S315006037A0405162738495A6B7C8D9EAFB0C1D2E3FBB
+S315006037B05061728394A5B6C7D8E9FA0B1C2D3E4FAB
+S315006037C060718293A4B5C6D7E8F90A1B2C3D4E5F9B
+S315006037D0708192A3B4C5D6E7F8091A2B3C4D5E6F8B
+S315006037E08091A2B3C4D5E6F708192A3B4C5D6E7F7B
+S315006037F090A1B2C3D4E5F60718293A4B5C6D7E8F6B
+S31500603800A0B1C2D3E4F5061728394A5B6C7D8E9F5A
+S31500603810B0C1D2E3F405162738495A6B7C8D9EAF4A
+S31500603820C0D1E2F30415263748596A7B8C9DAEBF3A
+S31500603830D0E1F2031425364758697A8B9CADBECF2A
+S31500603840E0F102132435465768798A9BACBDCEDF1A
+S31500603850F00112233445566778899AABBCCDDEEF0A
+S3150060386000112233445566778899AABBCCDDEEFFFA
+S31500603870102132435465768798A9BACBDCEDFE0FEA
+S315006038802031425364758697A8B9CADBECFD0E1FDA
+S3150060389030415263748596A7B8C9DAEBFC0D1E2FCA
+S315006038A0405162738495A6B7C8D9EAFB0C1D2E3FBA
+S315006038B05061728394A5B6C7D8E9FA0B1C2D3E4FAA
+S315006038C060718293A4B5C6D7E8F90A1B2C3D4E5F9A
+S315006038D0708192A3B4C5D6E7F8091A2B3C4D5E6F8A
+S315006038E08091A2B3C4D5E6F708192A3B4C5D6E7F7A
+S315006038F090A1B2C3D4E5F60718293A4B5C6D7E8F6A
+S31500603900A0B1C2D3E4F5061728394A5B6C7D8E9F59
+S31500603910B0C1D2E3F405162738495A6B7C8D9EAF49
+S31500603920C0D1E2F30415263748596A7B8C9DAEBF39
+S31500603930D0E1F2031425364758697A8B9CADBECF29
+S31500603940E0F102132435465768798A9BACBDCEDF19
+S31500603950F00112233445566778899AABBCCDDEEF09
+S3150060396000112233445566778899AABBCCDDEEFFF9
+S31500603970102132435465768798A9BACBDCEDFE0FE9
+S315006039802031425364758697A8B9CADBECFD0E1FD9
+S3150060399030415263748596A7B8C9DAEBFC0D1E2FC9
+S315006039A0405162738495A6B7C8D9EAFB0C1D2E3FB9
+S315006039B05061728394A5B6C7D8E9FA0B1C2D3E4FA9
+S315006039C060718293A4B5C6D7E8F90A1B2C3D4E5F99
+S315006039D0708192A3B4C5D6E7F8091A2B3C4D5E6F89
+S315006039E08091A2B3C4D5E6F708192A3B4C5D6E7F79
+S315006039F090A1B2C3D4E5F60718293A4B5C6D7E8F69
+S31500603A00A0B1C2D3E4F5061728394A5B6C7D8E9F58
+S31500603A10B0C1D2E3F405162738495A6B7C8D9EAF48
+S31500603A20C0D1E2F30415263748596A7B8C9DAEBF38
+S31500603A30D0E1F2031425364758697A8B9CADBECF28
+S31500603A40E0F102132435465768798A9BACBDCEDF18
+S31500603A50F00112233445566778899AABBCCDDEEF08
+S31500603A6000112233445566778899AABBCCDDEEFFF8
+S31500603A70102132435465768798A9BACBDCEDFE0FE8
+S31500603A802031425364758697A8B9CADBECFD0E1FD8
+S31500603A9030415263748596A7B8C9DAEBFC0D1E2FC8
+S31500603AA0405162738495A6B7C8D9EAFB0C1D2E3FB8
+S31500603AB05061728394A5B6C7D8E9FA0B1C2D3E4FA8
+S31500603AC060718293A4B5C6D7E8F90A1B2C3D4E5F98
+S31500603AD0708192A3B4C5D6E7F8091A2B3C4D5E6F88
+S31500603AE08091A2B3C4D5E6F708192A3B4C5D6E7F78
+S31500603AF090A1B2C3D4E5F60718293A4B5C6D7E8F68
+S31500603B00A0B1C2D3E4F5061728394A5B6C7D8E9F57
+S31500603B10B0C1D2E3F405162738495A6B7C8D9EAF47
+S31500603B20C0D1E2F30415263748596A7B8C9DAEBF37
+S31500603B30D0E1F2031425364758697A8B9CADBECF27
+S31500603B40E0F102132435465768798A9BACBDCEDF17
+S31500603B50F00112233445566778899AABBCCDDEEF07
+S31500603B6000112233445566778899AABBCCDDEEFFF7
+S31500603B70102132435465768798A9BACBDCEDFE0FE7
+S31500603B802031425364758697A8B9CADBECFD0E1FD7
+S31500603B9030415263748596A7B8C9DAEBFC0D1E2FC7
+S31500603BA0405162738495A6B7C8D9EAFB0C1D2E3FB7
+S31500603BB05061728394A5B6C7D8E9FA0B1C2D3E4FA7
+S31500603BC060718293A4B5C6D7E8F90A1B2C3D4E5F97
+S31500603BD0708192A3B4C5D6E7F8091A2B3C4D5E6F87
+S31500603BE08091A2B3C4D5E6F708192A3B4C5D6E7F77
+S31500603BF090A1B2C3D4E5F60718293A4B5C6D7E8F67
+S31500603C00A0B1C2D3E4F5061728394A5B6C7D8E9F56
+S31500603C10B0C1D2E3F405162738495A6B7C8D9EAF46
+S31500603C20C0D1E2F30415263748596A7B8C9DAEBF36
+S31500603C30D0E1F2031425364758697A8B9CADBECF26
+S31500603C40E0F102132435465768798A9BACBDCEDF16
+S31500603C50F00112233445566778899AABBCCDDEEF06
+S31500603C6000112233445566778899AABBCCDDEEFFF6
+S31500603C70102132435465768798A9BACBDCEDFE0FE6
+S31500603C802031425364758697A8B9CADBECFD0E1FD6
+S31500603C9030415263748596A7B8C9DAEBFC0D1E2FC6
+S31500603CA0405162738495A6B7C8D9EAFB0C1D2E3FB6
+S31500603CB05061728394A5B6C7D8E9FA0B1C2D3E4FA6
+S31500603CC060718293A4B5C6D7E8F90A1B2C3D4E5F96
+S31500603CD0708192A3B4C5D6E7F8091A2B3C4D5E6F86
+S31500603CE08091A2B3C4D5E6F708192A3B4C5D6E7F76
+S31500603CF090A1B2C3D4E5F60718293A4B5C6D7E8F66
+S31500603D00A0B1C2D3E4F5061728394A5B6C7D8E9F55
+S31500603D10B0C1D2E3F405162738495A6B7C8D9EAF45
+S31500603D20C0D1E2F30415263748596A7B8C9DAEBF35
+S31500603D30D0E1F2031425364758697A8B9CADBECF25
+S31500603D40E0F102132435465768798A9BACBDCEDF15
+S31500603D50F00112233445566778899AABBCCDDEEF05
+S31500603D6000112233445566778899AABBCCDDEEFFF5
+S31500603D70102132435465768798A9BACBDCEDFE0FE5
+S31500603D802031425364758697A8B9CADBECFD0E1FD5
+S31500603D9030415263748596A7B8C9DAEBFC0D1E2FC5
+S31500603DA0405162738495A6B7C8D9EAFB0C1D2E3FB5
+S31500603DB05061728394A5B6C7D8E9FA0B1C2D3E4FA5
+S31500603DC060718293A4B5C6D7E8F90A1B2C3D4E5F95
+S31500603DD0708192A3B4C5D6E7F8091A2B3C4D5E6F85
+S31500603DE08091A2B3C4D5E6F708192A3B4C5D6E7F75
+S31500603DF090A1B2C3D4E5F60718293A4B5C6D7E8F65
+S31500603E00A0B1C2D3E4F5061728394A5B6C7D8E9F54
+S31500603E10B0C1D2E3F405162738495A6B7C8D9EAF44
+S31500603E20C0D1E2F30415263748596A7B8C9DAEBF34
+S31500603E30D0E1F2031425364758697A8B9CADBECF24
+S31500603E40E0F102132435465768798A9BACBDCEDF14
+S31500603E50F00112233445566778899AABBCCDDEEF04
+S31500603E6000112233445566778899AABBCCDDEEFFF4
+S31500603E70102132435465768798A9BACBDCEDFE0FE4
+S31500603E802031425364758697A8B9CADBECFD0E1FD4
+S31500603E9030415263748596A7B8C9DAEBFC0D1E2FC4
+S31500603EA0405162738495A6B7C8D9EAFB0C1D2E3FB4
+S31500603EB05061728394A5B6C7D8E9FA0B1C2D3E4FA4
+S31500603EC060718293A4B5C6D7E8F90A1B2C3D4E5F94
+S31500603ED0708192A3B4C5D6E7F8091A2B3C4D5E6F84
+S31500603EE08091A2B3C4D5E6F708192A3B4C5D6E7F74
+S31500603EF090A1B2C3D4E5F60718293A4B5C6D7E8F64
+S31500603F00A0B1C2D3E4F5061728394A5B6C7D8E9F53
+S31500603F10B0C1D2E3F405162738495A6B7C8D9EAF43
+S31500603F20C0D1E2F30415263748596A7B8C9DAEBF33
+S31500603F30D0E1F2031425364758697A8B9CADBECF23
+S31500603F40E0F102132435465768798A9BACBDCEDF13
+S31500603F50F00112233445566778899AABBCCDDEEF03
+S31500603F6000112233445566778899AABBCCDDEEFFF3
+S31500603F70102132435465768798A9BACBDCEDFE0FE3
+S31500603F802031425364758697A8B9CADBECFD0E1FD3
+S31500603F9030415263748596A7B8C9DAEBFC0D1E2FC3
+S31500603FA0405162738495A6B7C8D9EAFB0C1D2E3FB3
+S31500603FB05061728394A5B6C7D8E9FA0B1C2D3E4FA3
+S31500603FC060718293A4B5C6D7E8F90A1B2C3D4E5F93
+S31500603FD0708192A3B4C5D6E7F8091A2B3C4D5E6F83
+S31500603FE08091A2B3C4D5E6F708192A3B4C5D6E7F73
+S31500603FF090A1B2C3D4E5F60718293A4B5C6D7E8F63
+S31500604000A0B1C2D3E4F5061728394A5B6C7D8E9F52
+S31500604010B0C1D2E3F405162738495A6B7C8D9EAF42
+S31500604020C0D1E2F30415263748596A7B8C9DAEBF32
+S31500604030D0E1F2031425364758697A8B9CADBECF22
+S31500604040E0F102132435465768798A9BACBDCEDF12
+S31500604050F00112233445566778899AABBCCDDEEF02
+S3150060406000112233445566778899AABBCCDDEEFFF2
+S31500604070102132435465768798A9BACBDCEDFE0FE2
+S315006040802031425364758697A8B9CADBECFD0E1FD2
+S3150060409030415263748596A7B8C9DAEBFC0D1E2FC2
+S315006040A0405162738495A6B7C8D9EAFB0C1D2E3FB2
+S315006040B05061728394A5B6C7D8E9FA0B1C2D3E4FA2
+S315006040C060718293A4B5C6D7E8F90A1B2C3D4E5F92
+S315006040D0708192A3B4C5D6E7F8091A2B3C4D5E6F82
+S315006040E08091A2B3C4D5E6F708192A3B4C5D6E7F72
+S315006040F090A1B2C3D4E5F60718293A4B5C6D7E8F62
+S31500604100A0B1C2D3E4F5061728394A5B6C7D8E9F51
+S31500604110B0C1D2E3F405162738495A6B7C8D9EAF41
+S31500604120C0D1E2F30415263748596A7B8C9DAEBF31
+S31500604130D0E1F2031425364758697A8B9CADBECF21
+S31500604140E0F102132435465768798A9BACBDCEDF11
+S31500604150F00112233445566778899AABBCCDDEEF01
+S3150060416000112233445566778899AABBCCDDEEFFF1
+S31500604170102132435465768798A9BACBDCEDFE0FE1
+S315006041802031425364758697A8B9CADBECFD0E1FD1
+S3150060419030415263748596A7B8C9DAEBFC0D1E2FC1
+S315006041A0405162738495A6B7C8D9EAFB0C1D2E3FB1
+S315006041B05061728394A5B6C7D8E9FA0B1C2D3E4FA1
+S315006041C060718293A4B5C6D7E8F90A1B2C3D4E5F91
+S315006041D0708192A3B4C5D6E7F8091A2B3C4D5E6F81
+S315006041E08091A2B3C4D5E6F708192A3B4C5D6E7F71
+S315006041F090A1B2C3D4E5F60718293A4B5C6D7E8F61
+S31500604200A0B1C2D3E4F5061728394A5B6C7D8E9F50
+S31500604210B0C1D2E3F405162738495A6B7C8D9EAF40
+S31500604220C0D1E2F30415263748596A7B8C9DAEBF30
+S31500604230D0E1F2031425364758697A8B9CADBECF20
+S31500604240E0F102132435465768798A9BACBDCEDF10
+S31500604250F00112233445566778899AABBCCDDEEF00
+S3150060426000112233445566778899AABBCCDDEEFFF0
+S31500604270102132435465768798A9BACBDCEDFE0FE0
+S315006042802031425364758697A8B9CADBECFD0E1FD0
+S3150060429030415263748596A7B8C9DAEBFC0D1E2FC0
+S315006042A0405162738495A6B7C8D9EAFB0C1D2E3FB0
+S315006042B05061728394A5B6C7D8E9FA0B1C2D3E4FA0
+S315006042C060718293A4B5C6D7E8F90A1B2C3D4E5F90
+S315006042D0708192A3B4C5D6E7F8091A2B3C4D5E6F80
+S315006042E08091A2B3C4D5E6F708192A3B4C5D6E7F70
+S315006042F090A1B2C3D4E5F60718293A4B5C6D7E8F60
+S31500604300A0B1C2D3E4F5061728394A5B6C7D8E9F4F
+S31500604310B0C1D2E3F405162738495A6B7C8D9EAF3F
+S31500604320C0D1E2F30415263748596A7B8C9DAEBF2F
+S31500604330D0E1F2031425364758697A8B9CADBECF1F
+S31500604340E0F102132435465768798A9BACBDCEDF0F
+S31500604350F00112233445566778899AABBCCDDEEFFF
+S3150060436000112233445566778899AABBCCDDEEFFEF
+S31500604370102132435465768798A9BACBDCEDFE0FDF
+S315006043802031425364758697A8B9CADBECFD0E1FCF
+S3150060439030415263748596A7B8C9DAEBFC0D1E2FBF
+S315006043A0405162738495A6B7C8D9EAFB0C1D2E3FAF
+S315006043B05061728394A5B6C7D8E9FA0B1C2D3E4F9F
+S315006043C060718293A4B5C6D7E8F90A1B2C3D4E5F8F
+S315006043D0708192A3B4C5D6E7F8091A2B3C4D5E6F7F
+S315006043E08091A2B3C4D5E6F708192A3B4C5D6E7F6F
+S315006043F090A1B2C3D4E5F60718293A4B5C6D7E8F5F
+S31500604400A0B1C2D3E4F5061728394A5B6C7D8E9F4E
+S31500604410B0C1D2E3F405162738495A6B7C8D9EAF3E
+S31500604420C0D1E2F30415263748596A7B8C9DAEBF2E
+S31500604430D0E1F2031425364758697A8B9CADBECF1E
+S31500604440E0F102132435465768798A9BACBDCEDF0E
+S31500604450F00112233445566778899AABBCCDDEEFFE
+S3150060446000112233445566778899AABBCCDDEEFFEE
+S31500604470102132435465768798A9BACBDCEDFE0FDE
+S315006044802031425364758697A8B9CADBECFD0E1FCE
+S3150060449030415263748596A7B8C9DAEBFC0D1E2FBE
+S315006044A0405162738495A6B7C8D9EAFB0C1D2E3FAE
+S315006044B05061728394A5B6C7D8E9FA0B1C2D3E4F9E
+S315006044C060718293A4B5C6D7E8F90A1B2C3D4E5F8E
+S315006044D0708192A3B4C5D6E7F8091A2B3C4D5E6F7E
+S315006044E08091A2B3C4D5E6F708192A3B4C5D6E7F6E
+S315006044F090A1B2C3D4E5F60718293A4B5C6D7E8F5E
+S31500604500A0B1C2D3E4F5061728394A5B6C7D8E9F4D
+S31500604510B0C1D2E3F405162738495A6B7C8D9EAF3D
+S31500604520C0D1E2F30415263748596A7B8C9DAEBF2D
+S31500604530D0E1F2031425364758697A8B9CADBECF1D
+S31500604540E0F102132435465768798A9BACBDCEDF0D
+S31500604550F00112233445566778899AABBCCDDEEFFD
+S3150060456000112233445566778899AABBCCDDEEFFED
+S31500604570102132435465768798A9BACBDCEDFE0FDD
+S315006045802031425364758697A8B9CADBECFD0E1FCD
+S3150060459030415263748596A7B8C9DAEBFC0D1E2FBD
+S315006045A0405162738495A6B7C8D9EAFB0C1D2E3FAD
+S315006045B05061728394A5B6C7D8E9FA0B1C2D3E4F9D
+S315006045C060718293A4B5C6D7E8F90A1B2C3D4E5F8D
+S315006045D0708192A3B4C5D6E7F8091A2B3C4D5E6F7D
+S315006045E08091A2B3C4D5E6F708192A3B4C5D6E7F6D
+S315006045F090A1B2C3D4E5F60718293A4B5C6D7E8F5D
+S31500604600A0B1C2D3E4F5061728394A5B6C7D8E9F4C
+S31500604610B0C1D2E3F405162738495A6B7C8D9EAF3C
+S31500604620C0D1E2F30415263748596A7B8C9DAEBF2C
+S31500604630D0E1F2031425364758697A8B9CADBECF1C
+S31500604640E0F102132435465768798A9BACBDCEDF0C
+S31500604650F00112233445566778899AABBCCDDEEFFC
+S3150060466000112233445566778899AABBCCDDEEFFEC
+S31500604670102132435465768798A9BACBDCEDFE0FDC
+S315006046802031425364758697A8B9CADBECFD0E1FCC
+S3150060469030415263748596A7B8C9DAEBFC0D1E2FBC
+S315006046A0405162738495A6B7C8D9EAFB0C1D2E3FAC
+S315006046B05061728394A5B6C7D8E9FA0B1C2D3E4F9C
+S315006046C060718293A4B5C6D7E8F90A1B2C3D4E5F8C
+S315006046D0708192A3B4C5D6E7F8091A2B3C4D5E6F7C
+S315006046E08091A2B3C4D5E6F708192A3B4C5D6E7F6C
+S315006046F090A1B2C3D4E5F60718293A4B5C6D7E8F5C
+S31500604700A0B1C2D3E4F5061728394A5B6C7D8E9F4B
+S31500604710B0C1D2E3F405162738495A6B7C8D9EAF3B
+S31500604720C0D1E2F30415263748596A7B8C9DAEBF2B
+S31500604730D0E1F2031425364758697A8B9CADBECF1B
+S31500604740E0F102132435465768798A9BACBDCEDF0B
+S31500604750F00112233445566778899AABBCCDDEEFFB
+S3150060476000112233445566778899AABBCCDDEEFFEB
+S31500604770102132435465768798A9BACBDCEDFE0FDB
+S315006047802031425364758697A8B9CADBECFD0E1FCB
+S3150060479030415263748596A7B8C9DAEBFC0D1E2FBB
+S315006047A0405162738495A6B7C8D9EAFB0C1D2E3FAB
+S315006047B05061728394A5B6C7D8E9FA0B1C2D3E4F9B
+S315006047C060718293A4B5C6D7E8F90A1B2C3D4E5F8B
+S315006047D0708192A3B4C5D6E7F8091A2B3C4D5E6F7B
+S315006047E08091A2B3C4D5E6F708192A3B4C5D6E7F6B
+S315006047F090A1B2C3D4E5F60718293A4B5C6D7E8F5B
+S31500604800A0B1C2D3E4F5061728394A5B6C7D8E9F4A
+S31500604810B0C1D2E3F405162738495A6B7C8D9EAF3A
+S31500604820C0D1E2F30415263748596A7B8C9DAEBF2A
+S31500604830D0E1F2031425364758697A8B9CADBECF1A
+S31500604840E0F102132435465768798A9BACBDCEDF0A
+S31500604850F00112233445566778899AABBCCDDEEFFA
+S3150060486000112233445566778899AABBCCDDEEFFEA
+S31500604870102132435465768798A9BACBDCEDFE0FDA
+S315006048802031425364758697A8B9CADBECFD0E1FCA
+S3150060489030415263748596A7B8C9DAEBFC0D1E2FBA
+S315006048A0405162738495A6B7C8D9EAFB0C1D2E3FAA
+S315006048B05061728394A5B6C7D8E9FA0B1C2D3E4F9A
+S315006048C060718293A4B5C6D7E8F90A1B2C3D4E5F8A
+S315006048D0708192A3B4C5D6E7F8091A2B3C4D5E6F7A
+S315006048E08091A2B3C4D5E6F708192A3B4C5D6E7F6A
+S315006048F090A1B2C3D4E5F60718293A4B5C6D7E8F5A
+S31500604900A0B1C2D3E4F5061728394A5B6C7D8E9F49
+S31500604910B0C1D2E3F405162738495A6B7C8D9EAF39
+S31500604920C0D1E2F30415263748596A7B8C9DAEBF29
+S31500604930D0E1F2031425364758697A8B9CADBECF19
+S31500604940E0F102132435465768798A9BACBDCEDF09
+S31500604950F00112233445566778899AABBCCDDEEFF9
+S3150060496000112233445566778899AABBCCDDEEFFE9
+S31500604970102132435465768798A9BACBDCEDFE0FD9
+S315006049802031425364758697A8B9CADBECFD0E1FC9
+S3150060499030415263748596A7B8C9DAEBFC0D1E2FB9
+S315006049A0405162738495A6B7C8D9EAFB0C1D2E3FA9
+S315006049B05061728394A5B6C7D8E9FA0B1C2D3E4F99
+S315006049C060718293A4B5C6D7E8F90A1B2C3D4E5F89
+S315006049D0708192A3B4C5D6E7F8091A2B3C4D5E6F79
+S315006049E08091A2B3C4D5E6F708192A3B4C5D6E7F69
+S315006049F090A1B2C3D4E5F60718293A4B5C6D7E8F59
+S31500604A00A0B1C2D3E4F5061728394A5B6C7D8E9F48
+S31500604A10B0C1D2E3F405162738495A6B7C8D9EAF38
+S31500604A20C0D1E2F30415263748596A7B8C9DAEBF28
+S31500604A30D0E1F2031425364758697A8B9CADBECF18
+S31500604A40E0F102132435465768798A9BACBDCEDF08
+S31500604A50F00112233445566778899AABBCCDDEEFF8
+S31500604A6000112233445566778899AABBCCDDEEFFE8
+S31500604A70102132435465768798A9BACBDCEDFE0FD8
+S31500604A802031425364758697A8B9CADBECFD0E1FC8
+S31500604A9030415263748596A7B8C9DAEBFC0D1E2FB8
+S31500604AA0405162738495A6B7C8D9EAFB0C1D2E3FA8
+S31500604AB05061728394A5B6C7D8E9FA0B1C2D3E4F98
+S31500604AC060718293A4B5C6D7E8F90A1B2C3D4E5F88
+S31500604AD0708192A3B4C5D6E7F8091A2B3C4D5E6F78
+S31500604AE08091A2B3C4D5E6F708192A3B4C5D6E7F68
+S31500604AF090A1B2C3D4E5F60718293A4B5C6D7E8F58
+S31500604B00A0B1C2D3E4F5061728394A5B6C7D8E9F47
+S31500604B10B0C1D2E3F405162738495A6B7C8D9EAF37
+S31500604B20C0D1E2F30415263748596A7B8C9DAEBF27
+S31500604B30D0E1F2031425364758697A8B9CADBECF17
+S31500604B40E0F102132435465768798A9BACBDCEDF07
+S31500604B50F00112233445566778899AABBCCDDEEFF7
+S31500604B6000112233445566778899AABBCCDDEEFFE7
+S31500604B70102132435465768798A9BACBDCEDFE0FD7
+S31500604B802031425364758697A8B9CADBECFD0E1FC7
+S31500604B9030415263748596A7B8C9DAEBFC0D1E2FB7
+S31500604BA0405162738495A6B7C8D9EAFB0C1D2E3FA7
+S31500604BB05061728394A5B6C7D8E9FA0B1C2D3E4F97
+S31500604BC060718293A4B5C6D7E8F90A1B2C3D4E5F87
+S31500604BD0708192A3B4C5D6E7F8091A2B3C4D5E6F77
+S31500604BE08091A2B3C4D5E6F708192A3B4C5D6E7F67
+S31500604BF090A1B2C3D4E5F60718293A4B5C6D7E8F57
+S31500604C00A0B1C2D3E4F5061728394A5B6C7D8E9F46
+S31500604C10B0C1D2E3F405162738495A6B7C8D9EAF36
+S31500604C20C0D1E2F30415263748596A7B8C9DAEBF26
+S31500604C30D0E1F2031425364758697A8B9CADBECF16
+S31500604C40E0F102132435465768798A9BACBDCEDF06
+S31500604C50F00112233445566778899AABBCCDDEEFF6
+S31500604C6000112233445566778899AABBCCDDEEFFE6
+S31500604C70102132435465768798A9BACBDCEDFE0FD6
+S31500604C802031425364758697A8B9CADBECFD0E1FC6
+S31500604C9030415263748596A7B8C9DAEBFC0D1E2FB6
+S31500604CA0405162738495A6B7C8D9EAFB0C1D2E3FA6
+S31500604CB05061728394A5B6C7D8E9FA0B1C2D3E4F96
+S31500604CC060718293A4B5C6D7E8F90A1B2C3D4E5F86
+S31500604CD0708192A3B4C5D6E7F8091A2B3C4D5E6F76
+S31500604CE08091A2B3C4D5E6F708192A3B4C5D6E7F66
+S31500604CF090A1B2C3D4E5F60718293A4B5C6D7E8F56
+S31500604D00A0B1C2D3E4F5061728394A5B6C7D8E9F45
+S31500604D10B0C1D2E3F405162738495A6B7C8D9EAF35
+S31500604D20C0D1E2F30415263748596A7B8C9DAEBF25
+S31500604D30D0E1F2031425364758697A8B9CADBECF15
+S31500604D40E0F102132435465768798A9BACBDCEDF05
+S31500604D50F00112233445566778899AABBCCDDEEFF5
+S31500604D6000112233445566778899AABBCCDDEEFFE5
+S31500604D70102132435465768798A9BACBDCEDFE0FD5
+S31500604D802031425364758697A8B9CADBECFD0E1FC5
+S31500604D9030415263748596A7B8C9DAEBFC0D1E2FB5
+S31500604DA0405162738495A6B7C8D9EAFB0C1D2E3FA5
+S31500604DB05061728394A5B6C7D8E9FA0B1C2D3E4F95
+S31500604DC060718293A4B5C6D7E8F90A1B2C3D4E5F85
+S31500604DD0708192A3B4C5D6E7F8091A2B3C4D5E6F75
+S31500604DE08091A2B3C4D5E6F708192A3B4C5D6E7F65
+S31500604DF090A1B2C3D4E5F60718293A4B5C6D7E8F55
+S31500604E00A0B1C2D3E4F5061728394A5B6C7D8E9F44
+S31500604E10B0C1D2E3F405162738495A6B7C8D9EAF34
+S31500604E20C0D1E2F30415263748596A7B8C9DAEBF24
+S31500604E30D0E1F2031425364758697A8B9CADBECF14
+S31500604E40E0F102132435465768798A9BACBDCEDF04
+S31500604E50F00112233445566778899AABBCCDDEEFF4
+S31500604E6000112233445566778899AABBCCDDEEFFE4
+S31500604E70102132435465768798A9BACBDCEDFE0FD4
+S31500604E802031425364758697A8B9CADBECFD0E1FC4
+S31500604E9030415263748596A7B8C9DAEBFC0D1E2FB4
+S31500604EA0405162738495A6B7C8D9EAFB0C1D2E3FA4
+S31500604EB05061728394A5B6C7D8E9FA0B1C2D3E4F94
+S31500604EC060718293A4B5C6D7E8F90A1B2C3D4E5F84
+S31500604ED0708192A3B4C5D6E7F8091A2B3C4D5E6F74
+S31500604EE08091A2B3C4D5E6F708192A3B4C5D6E7F64
+S31500604EF090A1B2C3D4E5F60718293A4B5C6D7E8F54
+S31500604F00A0B1C2D3E4F5061728394A5B6C7D8E9F43
+S31500604F10B0C1D2E3F405162738495A6B7C8D9EAF33
+S31500604F20C0D1E2F30415263748596A7B8C9DAEBF23
+S31500604F30D0E1F2031425364758697A8B9CADBECF13
+S31500604F40E0F102132435465768798A9BACBDCEDF03
+S31500604F50F00112233445566778899AABBCCDDEEFF3
+S31500604F6000112233445566778899AABBCCDDEEFFE3
+S31500604F70102132435465768798A9BACBDCEDFE0FD3
+S31500604F802031425364758697A8B9CADBECFD0E1FC3
+S31500604F9030415263748596A7B8C9DAEBFC0D1E2FB3
+S31500604FA0405162738495A6B7C8D9EAFB0C1D2E3FA3
+S31500604FB05061728394A5B6C7D8E9FA0B1C2D3E4F93
+S31500604FC060718293A4B5C6D7E8F90A1B2C3D4E5F83
+S31500604FD0708192A3B4C5D6E7F8091A2B3C4D5E6F73
+S31500604FE08091A2B3C4D5E6F708192A3B4C5D6E7F63
+S31500604FF090A1B2C3D4E5F60718293A4B5C6D7E8F53
+S31500605000A0B1C2D3E4F5061728394A5B6C7D8E9F42
+S31500605010B0C1D2E3F405162738495A6B7C8D9EAF32
+S31500605020C0D1E2F30415263748596A7B8C9DAEBF22
+S31500605030D0E1F2031425364758697A8B9CADBECF12
+S31500605040E0F102132435465768798A9BACBDCEDF02
+S31500605050F00112233445566778899AABBCCDDEEFF2
+S3150060506000112233445566778899AABBCCDDEEFFE2
+S31500605070102132435465768798A9BACBDCEDFE0FD2
+S315006050802031425364758697A8B9CADBECFD0E1FC2
+S3150060509030415263748596A7B8C9DAEBFC0D1E2FB2
+S315006050A0405162738495A6B7C8D9EAFB0C1D2E3FA2
+S315006050B05061728394A5B6C7D8E9FA0B1C2D3E4F92
+S315006050C060718293A4B5C6D7E8F90A1B2C3D4E5F82
+S315006050D0708192A3B4C5D6E7F8091A2B3C4D5E6F72
+S315006050E08091A2B3C4D5E6F708192A3B4C5D6E7F62
+S315006050F090A1B2C3D4E5F60718293A4B5C6D7E8F52
+S31500605100A0B1C2D3E4F5061728394A5B6C7D8E9F41
+S31500605110B0C1D2E3F405162738495A6B7C8D9EAF31
+S31500605120C0D1E2F30415263748596A7B8C9DAEBF21
+S31500605130D0E1F2031425364758697A8B9CADBECF11
+S31500605140E0F102132435465768798A9BACBDCEDF01
+S31500605150F00112233445566778899AABBCCDDEEFF1
+S3150060516000112233445566778899AABBCCDDEEFFE1
+S31500605170102132435465768798A9BACBDCEDFE0FD1
+S315006051802031425364758697A8B9CADBECFD0E1FC1
+S3150060519030415263748596A7B8C9DAEBFC0D1E2FB1
+S315006051A0405162738495A6B7C8D9EAFB0C1D2E3FA1
+S315006051B05061728394A5B6C7D8E9FA0B1C2D3E4F91
+S315006051C060718293A4B5C6D7E8F90A1B2C3D4E5F81
+S315006051D0708192A3B4C5D6E7F8091A2B3C4D5E6F71
+S315006051E08091A2B3C4D5E6F708192A3B4C5D6E7F61
+S315006051F090A1B2C3D4E5F60718293A4B5C6D7E8F51
+S31500605200A0B1C2D3E4F5061728394A5B6C7D8E9F40
+S31500605210B0C1D2E3F405162738495A6B7C8D9EAF30
+S31500605220C0D1E2F30415263748596A7B8C9DAEBF20
+S31500605230D0E1F2031425364758697A8B9CADBECF10
+S31500605240E0F102132435465768798A9BACBDCEDF00
+S31500605250F00112233445566778899AABBCCDDEEFF0
+S3150060526000112233445566778899AABBCCDDEEFFE0
+S31500605270102132435465768798A9BACBDCEDFE0FD0
+S315006052802031425364758697A8B9CADBECFD0E1FC0
+S3150060529030415263748596A7B8C9DAEBFC0D1E2FB0
+S315006052A0405162738495A6B7C8D9EAFB0C1D2E3FA0
+S315006052B05061728394A5B6C7D8E9FA0B1C2D3E4F90
+S315006052C060718293A4B5C6D7E8F90A1B2C3D4E5F80
+S315006052D0708192A3B4C5D6E7F8091A2B3C4D5E6F70
+S315006052E08091A2B3C4D5E6F708192A3B4C5D6E7F60
+S315006052F090A1B2C3D4E5F60718293A4B5C6D7E8F50
+S31500605300A0B1C2D3E4F5061728394A5B6C7D8E9F3F
+S31500605310B0C1D2E3F405162738495A6B7C8D9EAF2F
+S31500605320C0D1E2F30415263748596A7B8C9DAEBF1F
+S31500605330D0E1F2031425364758697A8B9CADBECF0F
+S31500605340E0F102132435465768798A9BACBDCEDFFF
+S31500605350F00112233445566778899AABBCCDDEEFEF
+S3150060536000112233445566778899AABBCCDDEEFFDF
+S31500605370102132435465768798A9BACBDCEDFE0FCF
+S315006053802031425364758697A8B9CADBECFD0E1FBF
+S3150060539030415263748596A7B8C9DAEBFC0D1E2FAF
+S315006053A0405162738495A6B7C8D9EAFB0C1D2E3F9F
+S315006053B05061728394A5B6C7D8E9FA0B1C2D3E4F8F
+S315006053C060718293A4B5C6D7E8F90A1B2C3D4E5F7F
+S315006053D0708192A3B4C5D6E7F8091A2B3C4D5E6F6F
+S315006053E08091A2B3C4D5E6F708192A3B4C5D6E7F5F
+S315006053F090A1B2C3D4E5F60718293A4B5C6D7E8F4F
+S31500605400A0B1C2D3E4F5061728394A5B6C7D8E9F3E
+S31500605410B0C1D2E3F405162738495A6B7C8D9EAF2E
+S31500605420C0D1E2F30415263748596A7B8C9DAEBF1E
+S31500605430D0E1F2031425364758697A8B9CADBECF0E
+S31500605440E0F102132435465768798A9BACBDCEDFFE
+S31500605450F00112233445566778899AABBCCDDEEFEE
+S3150060546000112233445566778899AABBCCDDEEFFDE
+S31500605470102132435465768798A9BACBDCEDFE0FCE
+S315006054802031425364758697A8B9CADBECFD0E1FBE
+S3150060549030415263748596A7B8C9DAEBFC0D1E2FAE
+S315006054A0405162738495A6B7C8D9EAFB0C1D2E3F9E
+S315006054B05061728394A5B6C7D8E9FA0B1C2D3E4F8E
+S315006054C060718293A4B5C6D7E8F90A1B2C3D4E5F7E
+S315006054D0708192A3B4C5D6E7F8091A2B3C4D5E6F6E
+S315006054E08091A2B3C4D5E6F708192A3B4C5D6E7F5E
+S315006054F090A1B2C3D4E5F60718293A4B5C6D7E8F4E
+S31500605500A0B1C2D3E4F5061728394A5B6C7D8E9F3D
+S31500605510B0C1D2E3F405162738495A6B7C8D9EAF2D
+S31500605520C0D1E2F30415263748596A7B8C9DAEBF1D
+S31500605530D0E1F2031425364758697A8B9CADBECF0D
+S31500605540E0F102132435465768798A9BACBDCEDFFD
+S31500605550F00112233445566778899AABBCCDDEEFED
+S3150060556000112233445566778899AABBCCDDEEFFDD
+S31500605570102132435465768798A9BACBDCEDFE0FCD
+S315006055802031425364758697A8B9CADBECFD0E1FBD
+S3150060559030415263748596A7B8C9DAEBFC0D1E2FAD
+S315006055A0405162738495A6B7C8D9EAFB0C1D2E3F9D
+S315006055B05061728394A5B6C7D8E9FA0B1C2D3E4F8D
+S315006055C060718293A4B5C6D7E8F90A1B2C3D4E5F7D
+S315006055D0708192A3B4C5D6E7F8091A2B3C4D5E6F6D
+S315006055E08091A2B3C4D5E6F708192A3B4C5D6E7F5D
+S315006055F090A1B2C3D4E5F60718293A4B5C6D7E8F4D
+S31500605600A0B1C2D3E4F5061728394A5B6C7D8E9F3C
+S31500605610B0C1D2E3F405162738495A6B7C8D9EAF2C
+S31500605620C0D1E2F30415263748596A7B8C9DAEBF1C
+S31500605630D0E1F2031425364758697A8B9CADBECF0C
+S31500605640E0F102132435465768798A9BACBDCEDFFC
+S31500605650F00112233445566778899AABBCCDDEEFEC
+S3150060566000112233445566778899AABBCCDDEEFFDC
+S31500605670102132435465768798A9BACBDCEDFE0FCC
+S315006056802031425364758697A8B9CADBECFD0E1FBC
+S3150060569030415263748596A7B8C9DAEBFC0D1E2FAC
+S315006056A0405162738495A6B7C8D9EAFB0C1D2E3F9C
+S315006056B05061728394A5B6C7D8E9FA0B1C2D3E4F8C
+S315006056C060718293A4B5C6D7E8F90A1B2C3D4E5F7C
+S315006056D0708192A3B4C5D6E7F8091A2B3C4D5E6F6C
+S315006056E08091A2B3C4D5E6F708192A3B4C5D6E7F5C
+S315006056F090A1B2C3D4E5F60718293A4B5C6D7E8F4C
+S31500605700A0B1C2D3E4F5061728394A5B6C7D8E9F3B
+S31500605710B0C1D2E3F405162738495A6B7C8D9EAF2B
+S31500605720C0D1E2F30415263748596A7B8C9DAEBF1B
+S31500605730D0E1F2031425364758697A8B9CADBECF0B
+S31500605740E0F102132435465768798A9BACBDCEDFFB
+S31500605750F00112233445566778899AABBCCDDEEFEB
+S3150060576000112233445566778899AABBCCDDEEFFDB
+S31500605770102132435465768798A9BACBDCEDFE0FCB
+S315006057802031425364758697A8B9CADBECFD0E1FBB
+S3150060579030415263748596A7B8C9DAEBFC0D1E2FAB
+S315006057A0405162738495A6B7C8D9EAFB0C1D2E3F9B
+S315006057B05061728394A5B6C7D8E9FA0B1C2D3E4F8B
+S315006057C060718293A4B5C6D7E8F90A1B2C3D4E5F7B
+S315006057D0708192A3B4C5D6E7F8091A2B3C4D5E6F6B
+S315006057E08091A2B3C4D5E6F708192A3B4C5D6E7F5B
+S315006057F090A1B2C3D4E5F60718293A4B5C6D7E8F4B
+S31500605800A0B1C2D3E4F5061728394A5B6C7D8E9F3A
+S31500605810B0C1D2E3F405162738495A6B7C8D9EAF2A
+S31500605820C0D1E2F30415263748596A7B8C9DAEBF1A
+S31500605830D0E1F2031425364758697A8B9CADBECF0A
+S31500605840E0F102132435465768798A9BACBDCEDFFA
+S31500605850F00112233445566778899AABBCCDDEEFEA
+S3150060586000112233445566778899AABBCCDDEEFFDA
+S31500605870102132435465768798A9BACBDCEDFE0FCA
+S315006058802031425364758697A8B9CADBECFD0E1FBA
+S3150060589030415263748596A7B8C9DAEBFC0D1E2FAA
+S315006058A0405162738495A6B7C8D9EAFB0C1D2E3F9A
+S315006058B05061728394A5B6C7D8E9FA0B1C2D3E4F8A
+S315006058C060718293A4B5C6D7E8F90A1B2C3D4E5F7A
+S315006058D0708192A3B4C5D6E7F8091A2B3C4D5E6F6A
+S315006058E08091A2B3C4D5E6F708192A3B4C5D6E7F5A
+S315006058F090A1B2C3D4E5F60718293A4B5C6D7E8F4A
+S31500605900A0B1C2D3E4F5061728394A5B6C7D8E9F39
+S31500605910B0C1D2E3F405162738495A6B7C8D9EAF29
+S31500605920C0D1E2F30415263748596A7B8C9DAEBF19
+S31500605930D0E1F2031425364758697A8B9CADBECF09
+S31500605940E0F102132435465768798A9BACBDCEDFF9
+S31500605950F00112233445566778899AABBCCDDEEFE9
+S3150060596000112233445566778899AABBCCDDEEFFD9
+S31500605970102132435465768798A9BACBDCEDFE0FC9
+S315006059802031425364758697A8B9CADBECFD0E1FB9
+S3150060599030415263748596A7B8C9DAEBFC0D1E2FA9
+S315006059A0405162738495A6B7C8D9EAFB0C1D2E3F99
+S315006059B05061728394A5B6C7D8E9FA0B1C2D3E4F89
+S315006059C060718293A4B5C6D7E8F90A1B2C3D4E5F79
+S315006059D0708192A3B4C5D6E7F8091A2B3C4D5E6F69
+S315006059E08091A2B3C4D5E6F708192A3B4C5D6E7F59
+S315006059F090A1B2C3D4E5F60718293A4B5C6D7E8F49
+S31500605A00A0B1C2D3E4F5061728394A5B6C7D8E9F38
+S31500605A10B0C1D2E3F405162738495A6B7C8D9EAF28
+S31500605A20C0D1E2F30415263748596A7B8C9DAEBF18
+S31500605A30D0E1F2031425364758697A8B9CADBECF08
+S31500605A40E0F102132435465768798A9BACBDCEDFF8
+S31500605A50F00112233445566778899AABBCCDDEEFE8
+S31500605A6000112233445566778899AABBCCDDEEFFD8
+S31500605A70102132435465768798A9BACBDCEDFE0FC8
+S31500605A802031425364758697A8B9CADBECFD0E1FB8
+S31500605A9030415263748596A7B8C9DAEBFC0D1E2FA8
+S31500605AA0405162738495A6B7C8D9EAFB0C1D2E3F98
+S31500605AB05061728394A5B6C7D8E9FA0B1C2D3E4F88
+S31500605AC060718293A4B5C6D7E8F90A1B2C3D4E5F78
+S31500605AD0708192A3B4C5D6E7F8091A2B3C4D5E6F68
+S31500605AE08091A2B3C4D5E6F708192A3B4C5D6E7F58
+S31500605AF090A1B2C3D4E5F60718293A4B5C6D7E8F48
+S31500605B00A0B1C2D3E4F5061728394A5B6C7D8E9F37
+S31500605B10B0C1D2E3F405162738495A6B7C8D9EAF27
+S31500605B20C0D1E2F30415263748596A7B8C9DAEBF17
+S31500605B30D0E1F2031425364758697A8B9CADBECF07
+S31500605B40E0F102132435465768798A9BACBDCEDFF7
+S31500605B50F00112233445566778899AABBCCDDEEFE7
+S31500605B6000112233445566778899AABBCCDDEEFFD7
+S31500605B70102132435465768798A9BACBDCEDFE0FC7
+S31500605B802031425364758697A8B9CADBECFD0E1FB7
+S31500605B9030415263748596A7B8C9DAEBFC0D1E2FA7
+S31500605BA0405162738495A6B7C8D9EAFB0C1D2E3F97
+S31500605BB05061728394A5B6C7D8E9FA0B1C2D3E4F87
+S31500605BC060718293A4B5C6D7E8F90A1B2C3D4E5F77
+S31500605BD0708192A3B4C5D6E7F8091A2B3C4D5E6F67
+S31500605BE08091A2B3C4D5E6F708192A3B4C5D6E7F57
+S31500605BF090A1B2C3D4E5F60718293A4B5C6D7E8F47
+S31500605C00A0B1C2D3E4F5061728394A5B6C7D8E9F36
+S31500605C10B0C1D2E3F405162738495A6B7C8D9EAF26
+S31500605C20C0D1E2F30415263748596A7B8C9DAEBF16
+S31500605C30D0E1F2031425364758697A8B9CADBECF06
+S31500605C40E0F102132435465768798A9BACBDCEDFF6
+S31500605C50F00112233445566778899AABBCCDDEEFE6
+S31500605C6000112233445566778899AABBCCDDEEFFD6
+S31500605C70102132435465768798A9BACBDCEDFE0FC6
+S31500605C802031425364758697A8B9CADBECFD0E1FB6
+S31500605C9030415263748596A7B8C9DAEBFC0D1E2FA6
+S31500605CA0405162738495A6B7C8D9EAFB0C1D2E3F96
+S31500605CB05061728394A5B6C7D8E9FA0B1C2D3E4F86
+S31500605CC060718293A4B5C6D7E8F90A1B2C3D4E5F76
+S31500605CD0708192A3B4C5D6E7F8091A2B3C4D5E6F66
+S31500605CE08091A2B3C4D5E6F708192A3B4C5D6E7F56
+S31500605CF090A1B2C3D4E5F60718293A4B5C6D7E8F46
+S31500605D00A0B1C2D3E4F5061728394A5B6C7D8E9F35
+S31500605D10B0C1D2E3F405162738495A6B7C8D9EAF25
+S31500605D20C0D1E2F30415263748596A7B8C9DAEBF15
+S31500605D30D0E1F2031425364758697A8B9CADBECF05
+S31500605D40E0F102132435465768798A9BACBDCEDFF5
+S31500605D50F00112233445566778899AABBCCDDEEFE5
+S31500605D6000112233445566778899AABBCCDDEEFFD5
+S31500605D70102132435465768798A9BACBDCEDFE0FC5
+S31500605D802031425364758697A8B9CADBECFD0E1FB5
+S31500605D9030415263748596A7B8C9DAEBFC0D1E2FA5
+S31500605DA0405162738495A6B7C8D9EAFB0C1D2E3F95
+S31500605DB05061728394A5B6C7D8E9FA0B1C2D3E4F85
+S31500605DC060718293A4B5C6D7E8F90A1B2C3D4E5F75
+S31500605DD0708192A3B4C5D6E7F8091A2B3C4D5E6F65
+S31500605DE08091A2B3C4D5E6F708192A3B4C5D6E7F55
+S31500605DF090A1B2C3D4E5F60718293A4B5C6D7E8F45
+S31500605E00A0B1C2D3E4F5061728394A5B6C7D8E9F34
+S31500605E10B0C1D2E3F405162738495A6B7C8D9EAF24
+S31500605E20C0D1E2F30415263748596A7B8C9DAEBF14
+S31500605E30D0E1F2031425364758697A8B9CADBECF04
+S31500605E40E0F102132435465768798A9BACBDCEDFF4
+S31500605E50F00112233445566778899AABBCCDDEEFE4
+S31500605E6000112233445566778899AABBCCDDEEFFD4
+S31500605E70102132435465768798A9BACBDCEDFE0FC4
+S31500605E802031425364758697A8B9CADBECFD0E1FB4
+S31500605E9030415263748596A7B8C9DAEBFC0D1E2FA4
+S31500605EA0405162738495A6B7C8D9EAFB0C1D2E3F94
+S31500605EB05061728394A5B6C7D8E9FA0B1C2D3E4F84
+S31500605EC060718293A4B5C6D7E8F90A1B2C3D4E5F74
+S31500605ED0708192A3B4C5D6E7F8091A2B3C4D5E6F64
+S31500605EE08091A2B3C4D5E6F708192A3B4C5D6E7F54
+S31500605EF090A1B2C3D4E5F60718293A4B5C6D7E8F44
+S31500605F00A0B1C2D3E4F5061728394A5B6C7D8E9F33
+S31500605F10B0C1D2E3F405162738495A6B7C8D9EAF23
+S31500605F20C0D1E2F30415263748596A7B8C9DAEBF13
+S31500605F30D0E1F2031425364758697A8B9CADBECF03
+S31500605F40E0F102132435465768798A9BACBDCEDFF3
+S31500605F50F00112233445566778899AABBCCDDEEFE3
+S31500605F6000112233445566778899AABBCCDDEEFFD3
+S31500605F70102132435465768798A9BACBDCEDFE0FC3
+S31500605F802031425364758697A8B9CADBECFD0E1FB3
+S31500605F9030415263748596A7B8C9DAEBFC0D1E2FA3
+S31500605FA0405162738495A6B7C8D9EAFB0C1D2E3F93
+S31500605FB05061728394A5B6C7D8E9FA0B1C2D3E4F83
+S31500605FC060718293A4B5C6D7E8F90A1B2C3D4E5F73
+S31500605FD0708192A3B4C5D6E7F8091A2B3C4D5E6F63
+S31500605FE08091A2B3C4D5E6F708192A3B4C5D6E7F53
+S31500605FF090A1B2C3D4E5F60718293A4B5C6D7E8F43
+S31500606000A0B1C2D3E4F5061728394A5B6C7D8E9F32
+S31500606010B0C1D2E3F405162738495A6B7C8D9EAF22
+S31500606020C0D1E2F30415263748596A7B8C9DAEBF12
+S31500606030D0E1F2031425364758697A8B9CADBECF02
+S31500606040E0F102132435465768798A9BACBDCEDFF2
+S31500606050F00112233445566778899AABBCCDDEEFE2
+S3150060606000112233445566778899AABBCCDDEEFFD2
+S31500606070102132435465768798A9BACBDCEDFE0FC2
+S315006060802031425364758697A8B9CADBECFD0E1FB2
+S3150060609030415263748596A7B8C9DAEBFC0D1E2FA2
+S315006060A0405162738495A6B7C8D9EAFB0C1D2E3F92
+S315006060B05061728394A5B6C7D8E9FA0B1C2D3E4F82
+S315006060C060718293A4B5C6D7E8F90A1B2C3D4E5F72
+S315006060D0708192A3B4C5D6E7F8091A2B3C4D5E6F62
+S315006060E08091A2B3C4D5E6F708192A3B4C5D6E7F52
+S315006060F090A1B2C3D4E5F60718293A4B5C6D7E8F42
+S31500606100A0B1C2D3E4F5061728394A5B6C7D8E9F31
+S31500606110B0C1D2E3F405162738495A6B7C8D9EAF21
+S31500606120C0D1E2F30415263748596A7B8C9DAEBF11
+S31500606130D0E1F2031425364758697A8B9CADBECF01
+S31500606140E0F102132435465768798A9BACBDCEDFF1
+S31500606150F00112233445566778899AABBCCDDEEFE1
+S3150060616000112233445566778899AABBCCDDEEFFD1
+S31500606170102132435465768798A9BACBDCEDFE0FC1
+S315006061802031425364758697A8B9CADBECFD0E1FB1
+S3150060619030415263748596A7B8C9DAEBFC0D1E2FA1
+S315006061A0405162738495A6B7C8D9EAFB0C1D2E3F91
+S315006061B05061728394A5B6C7D8E9FA0B1C2D3E4F81
+S315006061C060718293A4B5C6D7E8F90A1B2C3D4E5F71
+S315006061D0708192A3B4C5D6E7F8091A2B3C4D5E6F61
+S315006061E08091A2B3C4D5E6F708192A3B4C5D6E7F51
+S315006061F090A1B2C3D4E5F60718293A4B5C6D7E8F41
+S31500606200A0B1C2D3E4F5061728394A5B6C7D8E9F30
+S31500606210B0C1D2E3F405162738495A6B7C8D9EAF20
+S31500606220C0D1E2F30415263748596A7B8C9DAEBF10
+S31500606230D0E1F2031425364758697A8B9CADBECF00
+S31500606240E0F102132435465768798A9BACBDCEDFF0
+S31500606250F00112233445566778899AABBCCDDEEFE0
+S3150060626000112233445566778899AABBCCDDEEFFD0
+S31500606270102132435465768798A9BACBDCEDFE0FC0
+S315006062802031425364758697A8B9CADBECFD0E1FB0
+S3150060629030415263748596A7B8C9DAEBFC0D1E2FA0
+S315006062A0405162738495A6B7C8D9EAFB0C1D2E3F90
+S315006062B05061728394A5B6C7D8E9FA0B1C2D3E4F80
+S315006062C060718293A4B5C6D7E8F90A1B2C3D4E5F70
+S315006062D0708192A3B4C5D6E7F8091A2B3C4D5E6F60
+S315006062E08091A2B3C4D5E6F708192A3B4C5D6E7F50
+S315006062F090A1B2C3D4E5F60718293A4B5C6D7E8F40
+S31500606300A0B1C2D3E4F5061728394A5B6C7D8E9F2F
+S31500606310B0C1D2E3F405162738495A6B7C8D9EAF1F
+S31500606320C0D1E2F30415263748596A7B8C9DAEBF0F
+S31500606330D0E1F2031425364758697A8B9CADBECFFF
+S31500606340E0F102132435465768798A9BACBDCEDFEF
+S31500606350F00112233445566778899AABBCCDDEEFDF
+S3150060636000112233445566778899AABBCCDDEEFFCF
+S31500606370102132435465768798A9BACBDCEDFE0FBF
+S315006063802031425364758697A8B9CADBECFD0E1FAF
+S3150060639030415263748596A7B8C9DAEBFC0D1E2F9F
+S315006063A0405162738495A6B7C8D9EAFB0C1D2E3F8F
+S315006063B05061728394A5B6C7D8E9FA0B1C2D3E4F7F
+S315006063C060718293A4B5C6D7E8F90A1B2C3D4E5F6F
+S315006063D0708192A3B4C5D6E7F8091A2B3C4D5E6F5F
+S315006063E08091A2B3C4D5E6F708192A3B4C5D6E7F4F
+S315006063F090A1B2C3D4E5F60718293A4B5C6D7E8F3F
+S31500606400A0B1C2D3E4F5061728394A5B6C7D8E9F2E
+S31500606410B0C1D2E3F405162738495A6B7C8D9EAF1E
+S31500606420C0D1E2F30415263748596A7B8C9DAEBF0E
+S31500606430D0E1F2031425364758697A8B9CADBECFFE
+S31500606440E0F102132435465768798A9BACBDCEDFEE
+S31500606450F00112233445566778899AABBCCDDEEFDE
+S3150060646000112233445566778899AABBCCDDEEFFCE
+S31500606470102132435465768798A9BACBDCEDFE0FBE
+S315006064802031425364758697A8B9CADBECFD0E1FAE
+S3150060649030415263748596A7B8C9DAEBFC0D1E2F9E
+S315006064A0405162738495A6B7C8D9EAFB0C1D2E3F8E
+S315006064B05061728394A5B6C7D8E9FA0B1C2D3E4F7E
+S315006064C060718293A4B5C6D7E8F90A1B2C3D4E5F6E
+S315006064D0708192A3B4C5D6E7F8091A2B3C4D5E6F5E
+S315006064E08091A2B3C4D5E6F708192A3B4C5D6E7F4E
+S315006064F090A1B2C3D4E5F60718293A4B5C6D7E8F3E
+S31500606500A0B1C2D3E4F5061728394A5B6C7D8E9F2D
+S31500606510B0C1D2E3F405162738495A6B7C8D9EAF1D
+S31500606520C0D1E2F30415263748596A7B8C9DAEBF0D
+S31500606530D0E1F2031425364758697A8B9CADBECFFD
+S31500606540E0F102132435465768798A9BACBDCEDFED
+S31500606550F00112233445566778899AABBCCDDEEFDD
+S3150060656000112233445566778899AABBCCDDEEFFCD
+S31500606570102132435465768798A9BACBDCEDFE0FBD
+S315006065802031425364758697A8B9CADBECFD0E1FAD
+S3150060659030415263748596A7B8C9DAEBFC0D1E2F9D
+S315006065A0405162738495A6B7C8D9EAFB0C1D2E3F8D
+S315006065B05061728394A5B6C7D8E9FA0B1C2D3E4F7D
+S315006065C060718293A4B5C6D7E8F90A1B2C3D4E5F6D
+S315006065D0708192A3B4C5D6E7F8091A2B3C4D5E6F5D
+S315006065E08091A2B3C4D5E6F708192A3B4C5D6E7F4D
+S315006065F090A1B2C3D4E5F60718293A4B5C6D7E8F3D
+S31500606600A0B1C2D3E4F5061728394A5B6C7D8E9F2C
+S31500606610B0C1D2E3F405162738495A6B7C8D9EAF1C
+S31500606620C0D1E2F30415263748596A7B8C9DAEBF0C
+S31500606630D0E1F2031425364758697A8B9CADBECFFC
+S31500606640E0F102132435465768798A9BACBDCEDFEC
+S31500606650F00112233445566778899AABBCCDDEEFDC
+S3150060666000112233445566778899AABBCCDDEEFFCC
+S31500606670102132435465768798A9BACBDCEDFE0FBC
+S315006066802031425364758697A8B9CADBECFD0E1FAC
+S3150060669030415263748596A7B8C9DAEBFC0D1E2F9C
+S315006066A0405162738495A6B7C8D9EAFB0C1D2E3F8C
+S315006066B05061728394A5B6C7D8E9FA0B1C2D3E4F7C
+S315006066C060718293A4B5C6D7E8F90A1B2C3D4E5F6C
+S315006066D0708192A3B4C5D6E7F8091A2B3C4D5E6F5C
+S315006066E08091A2B3C4D5E6F708192A3B4C5D6E7F4C
+S315006066F090A1B2C3D4E5F60718293A4B5C6D7E8F3C
+S31500606700A0B1C2D3E4F5061728394A5B6C7D8E9F2B
+S31500606710B0C1D2E3F405162738495A6B7C8D9EAF1B
+S31500606720C0D1E2F30415263748596A7B8C9DAEBF0B
+S31500606730D0E1F2031425364758697A8B9CADBECFFB
+S31500606740E0F102132435465768798A9BACBDCEDFEB
+S31500606750F00112233445566778899AABBCCDDEEFDB
+S3150060676000112233445566778899AABBCCDDEEFFCB
+S31500606770102132435465768798A9BACBDCEDFE0FBB
+S315006067802031425364758697A8B9CADBECFD0E1FAB
+S3150060679030415263748596A7B8C9DAEBFC0D1E2F9B
+S315006067A0405162738495A6B7C8D9EAFB0C1D2E3F8B
+S315006067B05061728394A5B6C7D8E9FA0B1C2D3E4F7B
+S315006067C060718293A4B5C6D7E8F90A1B2C3D4E5F6B
+S315006067D0708192A3B4C5D6E7F8091A2B3C4D5E6F5B
+S315006067E08091A2B3C4D5E6F708192A3B4C5D6E7F4B
+S315006067F090A1B2C3D4E5F60718293A4B5C6D7E8F3B
+S31500606800A0B1C2D3E4F5061728394A5B6C7D8E9F2A
+S31500606810B0C1D2E3F405162738495A6B7C8D9EAF1A
+S31500606820C0D1E2F30415263748596A7B8C9DAEBF0A
+S31500606830D0E1F2031425364758697A8B9CADBECFFA
+S31500606840E0F102132435465768798A9BACBDCEDFEA
+S31500606850F00112233445566778899AABBCCDDEEFDA
+S3150060686000112233445566778899AABBCCDDEEFFCA
+S31500606870102132435465768798A9BACBDCEDFE0FBA
+S315006068802031425364758697A8B9CADBECFD0E1FAA
+S3150060689030415263748596A7B8C9DAEBFC0D1E2F9A
+S315006068A0405162738495A6B7C8D9EAFB0C1D2E3F8A
+S315006068B05061728394A5B6C7D8E9FA0B1C2D3E4F7A
+S315006068C060718293A4B5C6D7E8F90A1B2C3D4E5F6A
+S315006068D0708192A3B4C5D6E7F8091A2B3C4D5E6F5A
+S315006068E08091A2B3C4D5E6F708192A3B4C5D6E7F4A
+S315006068F090A1B2C3D4E5F60718293A4B5C6D7E8F3A
+S31500606900A0B1C2D3E4F5061728394A5B6C7D8E9F29
+S31500606910B0C1D2E3F405162738495A6B7C8D9EAF19
+S31500606920C0D1E2F30415263748596A7B8C9DAEBF09
+S31500606930D0E1F2031425364758697A8B9CADBECFF9
+S31500606940E0F102132435465768798A9BACBDCEDFE9
+S31500606950F00112233445566778899AABBCCDDEEFD9
+S3150060696000112233445566778899AABBCCDDEEFFC9
+S31500606970102132435465768798A9BACBDCEDFE0FB9
+S315006069802031425364758697A8B9CADBECFD0E1FA9
+S3150060699030415263748596A7B8C9DAEBFC0D1E2F99
+S315006069A0405162738495A6B7C8D9EAFB0C1D2E3F89
+S315006069B05061728394A5B6C7D8E9FA0B1C2D3E4F79
+S315006069C060718293A4B5C6D7E8F90A1B2C3D4E5F69
+S315006069D0708192A3B4C5D6E7F8091A2B3C4D5E6F59
+S315006069E08091A2B3C4D5E6F708192A3B4C5D6E7F49
+S315006069F090A1B2C3D4E5F60718293A4B5C6D7E8F39
+S31500606A00A0B1C2D3E4F5061728394A5B6C7D8E9F28
+S31500606A10B0C1D2E3F405162738495A6B7C8D9EAF18
+S31500606A20C0D1E2F30415263748596A7B8C9DAEBF08
+S31500606A30D0E1F2031425364758697A8B9CADBECFF8
+S31500606A40E0F102132435465768798A9BACBDCEDFE8
+S31500606A50F00112233445566778899AABBCCDDEEFD8
+S31500606A6000112233445566778899AABBCCDDEEFFC8
+S31500606A70102132435465768798A9BACBDCEDFE0FB8
+S31500606A802031425364758697A8B9CADBECFD0E1FA8
+S31500606A9030415263748596A7B8C9DAEBFC0D1E2F98
+S31500606AA0405162738495A6B7C8D9EAFB0C1D2E3F88
+S31500606AB05061728394A5B6C7D8E9FA0B1C2D3E4F78
+S31500606AC060718293A4B5C6D7E8F90A1B2C3D4E5F68
+S31500606AD0708192A3B4C5D6E7F8091A2B3C4D5E6F58
+S31500606AE08091A2B3C4D5E6F708192A3B4C5D6E7F48
+S31500606AF090A1B2C3D4E5F60718293A4B5C6D7E8F38
+S31500606B00A0B1C2D3E4F5061728394A5B6C7D8E9F27
+S31500606B10B0C1D2E3F405162738495A6B7C8D9EAF17
+S31500606B20C0D1E2F30415263748596A7B8C9DAEBF07
+S31500606B30D0E1F2031425364758697A8B9CADBECFF7
+S31500606B40E0F102132435465768798A9BACBDCEDFE7
+S31500606B50F00112233445566778899AABBCCDDEEFD7
+S31500606B6000112233445566778899AABBCCDDEEFFC7
+S31500606B70102132435465768798A9BACBDCEDFE0FB7
+S31500606B802031425364758697A8B9CADBECFD0E1FA7
+S31500606B9030415263748596A7B8C9DAEBFC0D1E2F97
+S31500606BA0405162738495A6B7C8D9EAFB0C1D2E3F87
+S31500606BB05061728394A5B6C7D8E9FA0B1C2D3E4F77
+S31500606BC060718293A4B5C6D7E8F90A1B2C3D4E5F67
+S31500606BD0708192A3B4C5D6E7F8091A2B3C4D5E6F57
+S31500606BE08091A2B3C4D5E6F708192A3B4C5D6E7F47
+S31500606BF090A1B2C3D4E5F60718293A4B5C6D7E8F37
+S31500606C00A0B1C2D3E4F5061728394A5B6C7D8E9F26
+S31500606C10B0C1D2E3F405162738495A6B7C8D9EAF16
+S31500606C20C0D1E2F30415263748596A7B8C9DAEBF06
+S31500606C30D0E1F2031425364758697A8B9CADBECFF6
+S31500606C40E0F102132435465768798A9BACBDCEDFE6
+S31500606C50F00112233445566778899AABBCCDDEEFD6
+S31500606C6000112233445566778899AABBCCDDEEFFC6
+S31500606C70102132435465768798A9BACBDCEDFE0FB6
+S31500606C802031425364758697A8B9CADBECFD0E1FA6
+S31500606C9030415263748596A7B8C9DAEBFC0D1E2F96
+S31500606CA0405162738495A6B7C8D9EAFB0C1D2E3F86
+S31500606CB05061728394A5B6C7D8E9FA0B1C2D3E4F76
+S31500606CC060718293A4B5C6D7E8F90A1B2C3D4E5F66
+S31500606CD0708192A3B4C5D6E7F8091A2B3C4D5E6F56
+S31500606CE08091A2B3C4D5E6F708192A3B4C5D6E7F46
+S31500606CF090A1B2C3D4E5F60718293A4B5C6D7E8F36
+S31500606D00A0B1C2D3E4F5061728394A5B6C7D8E9F25
+S31500606D10B0C1D2E3F405162738495A6B7C8D9EAF15
+S31500606D20C0D1E2F30415263748596A7B8C9DAEBF05
+S31500606D30D0E1F2031425364758697A8B9CADBECFF5
+S31500606D40E0F102132435465768798A9BACBDCEDFE5
+S31500606D50F00112233445566778899AABBCCDDEEFD5
+S31500606D6000112233445566778899AABBCCDDEEFFC5
+S31500606D70102132435465768798A9BACBDCEDFE0FB5
+S31500606D802031425364758697A8B9CADBECFD0E1FA5
+S31500606D9030415263748596A7B8C9DAEBFC0D1E2F95
+S31500606DA0405162738495A6B7C8D9EAFB0C1D2E3F85
+S31500606DB05061728394A5B6C7D8E9FA0B1C2D3E4F75
+S31500606DC060718293A4B5C6D7E8F90A1B2C3D4E5F65
+S31500606DD0708192A3B4C5D6E7F8091A2B3C4D5E6F55
+S31500606DE08091A2B3C4D5E6F708192A3B4C5D6E7F45
+S31500606DF090A1B2C3D4E5F60718293A4B5C6D7E8F35
+S31500606E00A0B1C2D3E4F5061728394A5B6C7D8E9F24
+S31500606E10B0C1D2E3F405162738495A6B7C8D9EAF14
+S31500606E20C0D1E2F30415263748596A7B8C9DAEBF04
+S31500606E30D0E1F2031425364758697A8B9CADBECFF4
+S31500606E40E0F102132435465768798A9BACBDCEDFE4
+S31500606E50F00112233445566778899AABBCCDDEEFD4
+S31500606E6000112233445566778899AABBCCDDEEFFC4
+S31500606E70102132435465768798A9BACBDCEDFE0FB4
+S31500606E802031425364758697A8B9CADBECFD0E1FA4
+S31500606E9030415263748596A7B8C9DAEBFC0D1E2F94
+S31500606EA0405162738495A6B7C8D9EAFB0C1D2E3F84
+S31500606EB05061728394A5B6C7D8E9FA0B1C2D3E4F74
+S31500606EC060718293A4B5C6D7E8F90A1B2C3D4E5F64
+S31500606ED0708192A3B4C5D6E7F8091A2B3C4D5E6F54
+S31500606EE08091A2B3C4D5E6F708192A3B4C5D6E7F44
+S31500606EF090A1B2C3D4E5F60718293A4B5C6D7E8F34
+S31500606F00A0B1C2D3E4F5061728394A5B6C7D8E9F23
+S31500606F10B0C1D2E3F405162738495A6B7C8D9EAF13
+S31500606F20C0D1E2F30415263748596A7B8C9DAEBF03
+S31500606F30D0E1F2031425364758697A8B9CADBECFF3
+S31500606F40E0F102132435465768798A9BACBDCEDFE3
+S31500606F50F00112233445566778899AABBCCDDEEFD3
+S31500606F6000112233445566778899AABBCCDDEEFFC3
+S31500606F70102132435465768798A9BACBDCEDFE0FB3
+S31500606F802031425364758697A8B9CADBECFD0E1FA3
+S31500606F9030415263748596A7B8C9DAEBFC0D1E2F93
+S31500606FA0405162738495A6B7C8D9EAFB0C1D2E3F83
+S31500606FB05061728394A5B6C7D8E9FA0B1C2D3E4F73
+S31500606FC060718293A4B5C6D7E8F90A1B2C3D4E5F63
+S31500606FD0708192A3B4C5D6E7F8091A2B3C4D5E6F53
+S31500606FE08091A2B3C4D5E6F708192A3B4C5D6E7F43
+S31500606FF090A1B2C3D4E5F60718293A4B5C6D7E8F33
+S31500607000A0B1C2D3E4F5061728394A5B6C7D8E9F22
+S31500607010B0C1D2E3F405162738495A6B7C8D9EAF12
+S31500607020C0D1E2F30415263748596A7B8C9DAEBF02
+S31500607030D0E1F2031425364758697A8B9CADBECFF2
+S31500607040E0F102132435465768798A9BACBDCEDFE2
+S31500607050F00112233445566778899AABBCCDDEEFD2
+S3150060706000112233445566778899AABBCCDDEEFFC2
+S31500607070102132435465768798A9BACBDCEDFE0FB2
+S315006070802031425364758697A8B9CADBECFD0E1FA2
+S3150060709030415263748596A7B8C9DAEBFC0D1E2F92
+S315006070A0405162738495A6B7C8D9EAFB0C1D2E3F82
+S315006070B05061728394A5B6C7D8E9FA0B1C2D3E4F72
+S315006070C060718293A4B5C6D7E8F90A1B2C3D4E5F62
+S315006070D0708192A3B4C5D6E7F8091A2B3C4D5E6F52
+S315006070E08091A2B3C4D5E6F708192A3B4C5D6E7F42
+S315006070F090A1B2C3D4E5F60718293A4B5C6D7E8F32
+S31500607100A0B1C2D3E4F5061728394A5B6C7D8E9F21
+S31500607110B0C1D2E3F405162738495A6B7C8D9EAF11
+S31500607120C0D1E2F30415263748596A7B8C9DAEBF01
+S31500607130D0E1F2031425364758697A8B9CADBECFF1
+S31500607140E0F102132435465768798A9BACBDCEDFE1
+S31500607150F00112233445566778899AABBCCDDEEFD1
+S3150060716000112233445566778899AABBCCDDEEFFC1
+S31500607170102132435465768798A9BACBDCEDFE0FB1
+S315006071802031425364758697A8B9CADBECFD0E1FA1
+S3150060719030415263748596A7B8C9DAEBFC0D1E2F91
+S315006071A0405162738495A6B7C8D9EAFB0C1D2E3F81
+S315006071B05061728394A5B6C7D8E9FA0B1C2D3E4F71
+S315006071C060718293A4B5C6D7E8F90A1B2C3D4E5F61
+S315006071D0708192A3B4C5D6E7F8091A2B3C4D5E6F51
+S315006071E08091A2B3C4D5E6F708192A3B4C5D6E7F41
+S315006071F090A1B2C3D4E5F60718293A4B5C6D7E8F31
+S31500607200A0B1C2D3E4F5061728394A5B6C7D8E9F20
+S31500607210B0C1D2E3F405162738495A6B7C8D9EAF10
+S31500607220C0D1E2F30415263748596A7B8C9DAEBF00
+S31500607230D0E1F2031425364758697A8B9CADBECFF0
+S31500607240E0F102132435465768798A9BACBDCEDFE0
+S31500607250F00112233445566778899AABBCCDDEEFD0
+S3150060726000112233445566778899AABBCCDDEEFFC0
+S31500607270102132435465768798A9BACBDCEDFE0FB0
+S315006072802031425364758697A8B9CADBECFD0E1FA0
+S3150060729030415263748596A7B8C9DAEBFC0D1E2F90
+S315006072A0405162738495A6B7C8D9EAFB0C1D2E3F80
+S315006072B05061728394A5B6C7D8E9FA0B1C2D3E4F70
+S315006072C060718293A4B5C6D7E8F90A1B2C3D4E5F60
+S315006072D0708192A3B4C5D6E7F8091A2B3C4D5E6F50
+S315006072E08091A2B3C4D5E6F708192A3B4C5D6E7F40
+S315006072F090A1B2C3D4E5F60718293A4B5C6D7E8F30
+S31500607300A0B1C2D3E4F5061728394A5B6C7D8E9F1F
+S31500607310B0C1D2E3F405162738495A6B7C8D9EAF0F
+S31500607320C0D1E2F30415263748596A7B8C9DAEBFFF
+S31500607330D0E1F2031425364758697A8B9CADBECFEF
+S31500607340E0F102132435465768798A9BACBDCEDFDF
+S31500607350F00112233445566778899AABBCCDDEEFCF
+S3150060736000112233445566778899AABBCCDDEEFFBF
+S31500607370102132435465768798A9BACBDCEDFE0FAF
+S315006073802031425364758697A8B9CADBECFD0E1F9F
+S3150060739030415263748596A7B8C9DAEBFC0D1E2F8F
+S315006073A0405162738495A6B7C8D9EAFB0C1D2E3F7F
+S315006073B05061728394A5B6C7D8E9FA0B1C2D3E4F6F
+S315006073C060718293A4B5C6D7E8F90A1B2C3D4E5F5F
+S315006073D0708192A3B4C5D6E7F8091A2B3C4D5E6F4F
+S315006073E08091A2B3C4D5E6F708192A3B4C5D6E7F3F
+S315006073F090A1B2C3D4E5F60718293A4B5C6D7E8F2F
+S31500607400A0B1C2D3E4F5061728394A5B6C7D8E9F1E
+S31500607410B0C1D2E3F405162738495A6B7C8D9EAF0E
+S31500607420C0D1E2F30415263748596A7B8C9DAEBFFE
+S31500607430D0E1F2031425364758697A8B9CADBECFEE
+S31500607440E0F102132435465768798A9BACBDCEDFDE
+S31500607450F00112233445566778899AABBCCDDEEFCE
+S3150060746000112233445566778899AABBCCDDEEFFBE
+S31500607470102132435465768798A9BACBDCEDFE0FAE
+S315006074802031425364758697A8B9CADBECFD0E1F9E
+S3150060749030415263748596A7B8C9DAEBFC0D1E2F8E
+S315006074A0405162738495A6B7C8D9EAFB0C1D2E3F7E
+S315006074B05061728394A5B6C7D8E9FA0B1C2D3E4F6E
+S315006074C060718293A4B5C6D7E8F90A1B2C3D4E5F5E
+S315006074D0708192A3B4C5D6E7F8091A2B3C4D5E6F4E
+S315006074E08091A2B3C4D5E6F708192A3B4C5D6E7F3E
+S315006074F090A1B2C3D4E5F60718293A4B5C6D7E8F2E
+S31500607500A0B1C2D3E4F5061728394A5B6C7D8E9F1D
+S31500607510B0C1D2E3F405162738495A6B7C8D9EAF0D
+S31500607520C0D1E2F30415263748596A7B8C9DAEBFFD
+S31500607530D0E1F2031425364758697A8B9CADBECFED
+S31500607540E0F102132435465768798A9BACBDCEDFDD
+S31500607550F00112233445566778899AABBCCDDEEFCD
+S3150060756000112233445566778899AABBCCDDEEFFBD
+S31500607570102132435465768798A9BACBDCEDFE0FAD
+S315006075802031425364758697A8B9CADBECFD0E1F9D
+S3150060759030415263748596A7B8C9DAEBFC0D1E2F8D
+S315006075A0405162738495A6B7C8D9EAFB0C1D2E3F7D
+S315006075B05061728394A5B6C7D8E9FA0B1C2D3E4F6D
+S315006075C060718293A4B5C6D7E8F90A1B2C3D4E5F5D
+S315006075D0708192A3B4C5D6E7F8091A2B3C4D5E6F4D
+S315006075E08091A2B3C4D5E6F708192A3B4C5D6E7F3D
+S315006075F090A1B2C3D4E5F60718293A4B5C6D7E8F2D
+S31500607600A0B1C2D3E4F5061728394A5B6C7D8E9F1C
+S31500607610B0C1D2E3F405162738495A6B7C8D9EAF0C
+S31500607620C0D1E2F30415263748596A7B8C9DAEBFFC
+S31500607630D0E1F2031425364758697A8B9CADBECFEC
+S31500607640E0F102132435465768798A9BACBDCEDFDC
+S31500607650F00112233445566778899AABBCCDDEEFCC
+S3150060766000112233445566778899AABBCCDDEEFFBC
+S31500607670102132435465768798A9BACBDCEDFE0FAC
+S315006076802031425364758697A8B9CADBECFD0E1F9C
+S3150060769030415263748596A7B8C9DAEBFC0D1E2F8C
+S315006076A0405162738495A6B7C8D9EAFB0C1D2E3F7C
+S315006076B05061728394A5B6C7D8E9FA0B1C2D3E4F6C
+S315006076C060718293A4B5C6D7E8F90A1B2C3D4E5F5C
+S315006076D0708192A3B4C5D6E7F8091A2B3C4D5E6F4C
+S315006076E08091A2B3C4D5E6F708192A3B4C5D6E7F3C
+S315006076F090A1B2C3D4E5F60718293A4B5C6D7E8F2C
+S31500607700A0B1C2D3E4F5061728394A5B6C7D8E9F1B
+S31500607710B0C1D2E3F405162738495A6B7C8D9EAF0B
+S31500607720C0D1E2F30415263748596A7B8C9DAEBFFB
+S31500607730D0E1F2031425364758697A8B9CADBECFEB
+S31500607740E0F102132435465768798A9BACBDCEDFDB
+S31500607750F00112233445566778899AABBCCDDEEFCB
+S3150060776000112233445566778899AABBCCDDEEFFBB
+S31500607770102132435465768798A9BACBDCEDFE0FAB
+S315006077802031425364758697A8B9CADBECFD0E1F9B
+S3150060779030415263748596A7B8C9DAEBFC0D1E2F8B
+S315006077A0405162738495A6B7C8D9EAFB0C1D2E3F7B
+S315006077B05061728394A5B6C7D8E9FA0B1C2D3E4F6B
+S315006077C060718293A4B5C6D7E8F90A1B2C3D4E5F5B
+S315006077D0708192A3B4C5D6E7F8091A2B3C4D5E6F4B
+S315006077E08091A2B3C4D5E6F708192A3B4C5D6E7F3B
+S315006077F090A1B2C3D4E5F60718293A4B5C6D7E8F2B
+S31500607800A0B1C2D3E4F5061728394A5B6C7D8E9F1A
+S31500607810B0C1D2E3F405162738495A6B7C8D9EAF0A
+S31500607820C0D1E2F30415263748596A7B8C9DAEBFFA
+S31500607830D0E1F2031425364758697A8B9CADBECFEA
+S31500607840E0F102132435465768798A9BACBDCEDFDA
+S31500607850F00112233445566778899AABBCCDDEEFCA
+S3150060786000112233445566778899AABBCCDDEEFFBA
+S31500607870102132435465768798A9BACBDCEDFE0FAA
+S315006078802031425364758697A8B9CADBECFD0E1F9A
+S3150060789030415263748596A7B8C9DAEBFC0D1E2F8A
+S315006078A0405162738495A6B7C8D9EAFB0C1D2E3F7A
+S315006078B05061728394A5B6C7D8E9FA0B1C2D3E4F6A
+S315006078C060718293A4B5C6D7E8F90A1B2C3D4E5F5A
+S315006078D0708192A3B4C5D6E7F8091A2B3C4D5E6F4A
+S315006078E08091A2B3C4D5E6F708192A3B4C5D6E7F3A
+S315006078F090A1B2C3D4E5F60718293A4B5C6D7E8F2A
+S31500607900A0B1C2D3E4F5061728394A5B6C7D8E9F19
+S31500607910B0C1D2E3F405162738495A6B7C8D9EAF09
+S31500607920C0D1E2F30415263748596A7B8C9DAEBFF9
+S31500607930D0E1F2031425364758697A8B9CADBECFE9
+S31500607940E0F102132435465768798A9BACBDCEDFD9
+S31500607950F00112233445566778899AABBCCDDEEFC9
+S3150060796000112233445566778899AABBCCDDEEFFB9
+S31500607970102132435465768798A9BACBDCEDFE0FA9
+S315006079802031425364758697A8B9CADBECFD0E1F99
+S3150060799030415263748596A7B8C9DAEBFC0D1E2F89
+S315006079A0405162738495A6B7C8D9EAFB0C1D2E3F79
+S315006079B05061728394A5B6C7D8E9FA0B1C2D3E4F69
+S315006079C060718293A4B5C6D7E8F90A1B2C3D4E5F59
+S315006079D0708192A3B4C5D6E7F8091A2B3C4D5E6F49
+S315006079E08091A2B3C4D5E6F708192A3B4C5D6E7F39
+S315006079F090A1B2C3D4E5F60718293A4B5C6D7E8F29
+S31500607A00A0B1C2D3E4F5061728394A5B6C7D8E9F18
+S31500607A10B0C1D2E3F405162738495A6B7C8D9EAF08
+S31500607A20C0D1E2F30415263748596A7B8C9DAEBFF8
+S31500607A30D0E1F2031425364758697A8B9CADBECFE8
+S31500607A40E0F102132435465768798A9BACBDCEDFD8
+S31500607A50F00112233445566778899AABBCCDDEEFC8
+S31500607A6000112233445566778899AABBCCDDEEFFB8
+S31500607A70102132435465768798A9BACBDCEDFE0FA8
+S31500607A802031425364758697A8B9CADBECFD0E1F98
+S31500607A9030415263748596A7B8C9DAEBFC0D1E2F88
+S31500607AA0405162738495A6B7C8D9EAFB0C1D2E3F78
+S31500607AB05061728394A5B6C7D8E9FA0B1C2D3E4F68
+S31500607AC060718293A4B5C6D7E8F90A1B2C3D4E5F58
+S31500607AD0708192A3B4C5D6E7F8091A2B3C4D5E6F48
+S31500607AE08091A2B3C4D5E6F708192A3B4C5D6E7F38
+S31500607AF090A1B2C3D4E5F60718293A4B5C6D7E8F28
+S31500607B00A0B1C2D3E4F5061728394A5B6C7D8E9F17
+S31500607B10B0C1D2E3F405162738495A6B7C8D9EAF07
+S31500607B20C0D1E2F30415263748596A7B8C9DAEBFF7
+S31500607B30D0E1F2031425364758697A8B9CADBECFE7
+S31500607B40E0F102132435465768798A9BACBDCEDFD7
+S31500607B50F00112233445566778899AABBCCDDEEFC7
+S31500607B6000112233445566778899AABBCCDDEEFFB7
+S31500607B70102132435465768798A9BACBDCEDFE0FA7
+S31500607B802031425364758697A8B9CADBECFD0E1F97
+S31500607B9030415263748596A7B8C9DAEBFC0D1E2F87
+S31500607BA0405162738495A6B7C8D9EAFB0C1D2E3F77
+S31500607BB05061728394A5B6C7D8E9FA0B1C2D3E4F67
+S31500607BC060718293A4B5C6D7E8F90A1B2C3D4E5F57
+S31500607BD0708192A3B4C5D6E7F8091A2B3C4D5E6F47
+S31500607BE08091A2B3C4D5E6F708192A3B4C5D6E7F37
+S31500607BF090A1B2C3D4E5F60718293A4B5C6D7E8F27
+S31500607C00A0B1C2D3E4F5061728394A5B6C7D8E9F16
+S31500607C10B0C1D2E3F405162738495A6B7C8D9EAF06
+S31500607C20C0D1E2F30415263748596A7B8C9DAEBFF6
+S31500607C30D0E1F2031425364758697A8B9CADBECFE6
+S31500607C40E0F102132435465768798A9BACBDCEDFD6
+S31500607C50F00112233445566778899AABBCCDDEEFC6
+S31500607C6000112233445566778899AABBCCDDEEFFB6
+S31500607C70102132435465768798A9BACBDCEDFE0FA6
+S31500607C802031425364758697A8B9CADBECFD0E1F96
+S31500607C9030415263748596A7B8C9DAEBFC0D1E2F86
+S31500607CA0405162738495A6B7C8D9EAFB0C1D2E3F76
+S31500607CB05061728394A5B6C7D8E9FA0B1C2D3E4F66
+S31500607CC060718293A4B5C6D7E8F90A1B2C3D4E5F56
+S31500607CD0708192A3B4C5D6E7F8091A2B3C4D5E6F46
+S31500607CE08091A2B3C4D5E6F708192A3B4C5D6E7F36
+S31500607CF090A1B2C3D4E5F60718293A4B5C6D7E8F26
+S31500607D00A0B1C2D3E4F5061728394A5B6C7D8E9F15
+S31500607D10B0C1D2E3F405162738495A6B7C8D9EAF05
+S31500607D20C0D1E2F30415263748596A7B8C9DAEBFF5
+S31500607D30D0E1F2031425364758697A8B9CADBECFE5
+S31500607D40E0F102132435465768798A9BACBDCEDFD5
+S31500607D50F00112233445566778899AABBCCDDEEFC5
+S31500607D6000112233445566778899AABBCCDDEEFFB5
+S31500607D70102132435465768798A9BACBDCEDFE0FA5
+S31500607D802031425364758697A8B9CADBECFD0E1F95
+S31500607D9030415263748596A7B8C9DAEBFC0D1E2F85
+S31500607DA0405162738495A6B7C8D9EAFB0C1D2E3F75
+S31500607DB05061728394A5B6C7D8E9FA0B1C2D3E4F65
+S31500607DC060718293A4B5C6D7E8F90A1B2C3D4E5F55
+S31500607DD0708192A3B4C5D6E7F8091A2B3C4D5E6F45
+S31500607DE08091A2B3C4D5E6F708192A3B4C5D6E7F35
+S31500607DF090A1B2C3D4E5F60718293A4B5C6D7E8F25
+S31500607E00A0B1C2D3E4F5061728394A5B6C7D8E9F14
+S31500607E10B0C1D2E3F405162738495A6B7C8D9EAF04
+S31500607E20C0D1E2F30415263748596A7B8C9DAEBFF4
+S31500607E30D0E1F2031425364758697A8B9CADBECFE4
+S31500607E40E0F102132435465768798A9BACBDCEDFD4
+S31500607E50F00112233445566778899AABBCCDDEEFC4
+S31500607E6000112233445566778899AABBCCDDEEFFB4
+S31500607E70102132435465768798A9BACBDCEDFE0FA4
+S31500607E802031425364758697A8B9CADBECFD0E1F94
+S31500607E9030415263748596A7B8C9DAEBFC0D1E2F84
+S31500607EA0405162738495A6B7C8D9EAFB0C1D2E3F74
+S31500607EB05061728394A5B6C7D8E9FA0B1C2D3E4F64
+S31500607EC060718293A4B5C6D7E8F90A1B2C3D4E5F54
+S31500607ED0708192A3B4C5D6E7F8091A2B3C4D5E6F44
+S31500607EE08091A2B3C4D5E6F708192A3B4C5D6E7F34
+S31500607EF090A1B2C3D4E5F60718293A4B5C6D7E8F24
+S31500607F00A0B1C2D3E4F5061728394A5B6C7D8E9F13
+S31500607F10B0C1D2E3F405162738495A6B7C8D9EAF03
+S31500607F20C0D1E2F30415263748596A7B8C9DAEBFF3
+S31500607F30D0E1F2031425364758697A8B9CADBECFE3
+S31500607F40E0F102132435465768798A9BACBDCEDFD3
+S31500607F50F00112233445566778899AABBCCDDEEFC3
+S31500607F6000112233445566778899AABBCCDDEEFFB3
+S31500607F70102132435465768798A9BACBDCEDFE0FA3
+S31500607F802031425364758697A8B9CADBECFD0E1F93
+S31500607F9030415263748596A7B8C9DAEBFC0D1E2F83
+S31500607FA0405162738495A6B7C8D9EAFB0C1D2E3F73
+S31500607FB05061728394A5B6C7D8E9FA0B1C2D3E4F63
+S31500607FC060718293A4B5C6D7E8F90A1B2C3D4E5F53
+S31500607FD0708192A3B4C5D6E7F8091A2B3C4D5E6F43
+S31500607FE08091A2B3C4D5E6F708192A3B4C5D6E7F33
+S31500607FF090A1B2C3D4E5F60718293A4B5C6D7E8F23
+S31500608000A0B1C2D3E4F5061728394A5B6C7D8E9F12
+S31500608010B0C1D2E3F405162738495A6B7C8D9EAF02
+S31500608020C0D1E2F30415263748596A7B8C9DAEBFF2
+S31500608030D0E1F2031425364758697A8B9CADBECFE2
+S31500608040E0F102132435465768798A9BACBDCEDFD2
+S31500608050F00112233445566778899AABBCCDDEEFC2
+S3150060806000112233445566778899AABBCCDDEEFFB2
+S31500608070102132435465768798A9BACBDCEDFE0FA2
+S315006080802031425364758697A8B9CADBECFD0E1F92
+S3150060809030415263748596A7B8C9DAEBFC0D1E2F82
+S315006080A0405162738495A6B7C8D9EAFB0C1D2E3F72
+S315006080B05061728394A5B6C7D8E9FA0B1C2D3E4F62
+S315006080C060718293A4B5C6D7E8F90A1B2C3D4E5F52
+S315006080D0708192A3B4C5D6E7F8091A2B3C4D5E6F42
+S315006080E08091A2B3C4D5E6F708192A3B4C5D6E7F32
+S315006080F090A1B2C3D4E5F60718293A4B5C6D7E8F22
+S31500608100A0B1C2D3E4F5061728394A5B6C7D8E9F11
+S31500608110B0C1D2E3F405162738495A6B7C8D9EAF01
+S31500608120C0D1E2F30415263748596A7B8C9DAEBFF1
+S31500608130D0E1F2031425364758697A8B9CADBECFE1
+S31500608140E0F102132435465768798A9BACBDCEDFD1
+S31500608150F00112233445566778899AABBCCDDEEFC1
+S3150060816000112233445566778899AABBCCDDEEFFB1
+S31500608170102132435465768798A9BACBDCEDFE0FA1
+S315006081802031425364758697A8B9CADBECFD0E1F91
+S3150060819030415263748596A7B8C9DAEBFC0D1E2F81
+S315006081A0405162738495A6B7C8D9EAFB0C1D2E3F71
+S315006081B05061728394A5B6C7D8E9FA0B1C2D3E4F61
+S315006081C060718293A4B5C6D7E8F90A1B2C3D4E5F51
+S315006081D0708192A3B4C5D6E7F8091A2B3C4D5E6F41
+S315006081E08091A2B3C4D5E6F708192A3B4C5D6E7F31
+S315006081F090A1B2C3D4E5F60718293A4B5C6D7E8F21
+S31500608200A0B1C2D3E4F5061728394A5B6C7D8E9F10
+S31500608210B0C1D2E3F405162738495A6B7C8D9EAF00
+S31500608220C0D1E2F30415263748596A7B8C9DAEBFF0
+S31500608230D0E1F2031425364758697A8B9CADBECFE0
+S31500608240E0F102132435465768798A9BACBDCEDFD0
+S31500608250F00112233445566778899AABBCCDDEEFC0
+S3150060826000112233445566778899AABBCCDDEEFFB0
+S31500608270102132435465768798A9BACBDCEDFE0FA0
+S315006082802031425364758697A8B9CADBECFD0E1F90
+S3150060829030415263748596A7B8C9DAEBFC0D1E2F80
+S315006082A0405162738495A6B7C8D9EAFB0C1D2E3F70
+S315006082B05061728394A5B6C7D8E9FA0B1C2D3E4F60
+S315006082C060718293A4B5C6D7E8F90A1B2C3D4E5F50
+S315006082D0708192A3B4C5D6E7F8091A2B3C4D5E6F40
+S315006082E08091A2B3C4D5E6F708192A3B4C5D6E7F30
+S315006082F090A1B2C3D4E5F60718293A4B5C6D7E8F20
+S31500608300A0B1C2D3E4F5061728394A5B6C7D8E9F0F
+S31500608310B0C1D2E3F405162738495A6B7C8D9EAFFF
+S31500608320C0D1E2F30415263748596A7B8C9DAEBFEF
+S31500608330D0E1F2031425364758697A8B9CADBECFDF
+S31500608340E0F102132435465768798A9BACBDCEDFCF
+S31500608350F00112233445566778899AABBCCDDEEFBF
+S3150060836000112233445566778899AABBCCDDEEFFAF
+S31500608370102132435465768798A9BACBDCEDFE0F9F
+S315006083802031425364758697A8B9CADBECFD0E1F8F
+S3150060839030415263748596A7B8C9DAEBFC0D1E2F7F
+S315006083A0405162738495A6B7C8D9EAFB0C1D2E3F6F
+S315006083B05061728394A5B6C7D8E9FA0B1C2D3E4F5F
+S315006083C060718293A4B5C6D7E8F90A1B2C3D4E5F4F
+S315006083D0708192A3B4C5D6E7F8091A2B3C4D5E6F3F
+S315006083E08091A2B3C4D5E6F708192A3B4C5D6E7F2F
+S315006083F090A1B2C3D4E5F60718293A4B5C6D7E8F1F
+S31500608400A0B1C2D3E4F5061728394A5B6C7D8E9F0E
+S31500608410B0C1D2E3F405162738495A6B7C8D9EAFFE
+S31500608420C0D1E2F30415263748596A7B8C9DAEBFEE
+S31500608430D0E1F2031425364758697A8B9CADBECFDE
+S31500608440E0F102132435465768798A9BACBDCEDFCE
+S31500608450F00112233445566778899AABBCCDDEEFBE
+S3150060846000112233445566778899AABBCCDDEEFFAE
+S31500608470102132435465768798A9BACBDCEDFE0F9E
+S315006084802031425364758697A8B9CADBECFD0E1F8E
+S3150060849030415263748596A7B8C9DAEBFC0D1E2F7E
+S315006084A0405162738495A6B7C8D9EAFB0C1D2E3F6E
+S315006084B05061728394A5B6C7D8E9FA0B1C2D3E4F5E
+S315006084C060718293A4B5C6D7E8F90A1B2C3D4E5F4E
+S315006084D0708192A3B4C5D6E7F8091A2B3C4D5E6F3E
+S315006084E08091A2B3C4D5E6F708192A3B4C5D6E7F2E
+S315006084F090A1B2C3D4E5F60718293A4B5C6D7E8F1E
+S31500608500A0B1C2D3E4F5061728394A5B6C7D8E9F0D
+S31500608510B0C1D2E3F405162738495A6B7C8D9EAFFD
+S31500608520C0D1E2F30415263748596A7B8C9DAEBFED
+S31500608530D0E1F2031425364758697A8B9CADBECFDD
+S31500608540E0F102132435465768798A9BACBDCEDFCD
+S31500608550F00112233445566778899AABBCCDDEEFBD
+S3150060856000112233445566778899AABBCCDDEEFFAD
+S31500608570102132435465768798A9BACBDCEDFE0F9D
+S315006085802031425364758697A8B9CADBECFD0E1F8D
+S3150060859030415263748596A7B8C9DAEBFC0D1E2F7D
+S315006085A0405162738495A6B7C8D9EAFB0C1D2E3F6D
+S315006085B05061728394A5B6C7D8E9FA0B1C2D3E4F5D
+S315006085C060718293A4B5C6D7E8F90A1B2C3D4E5F4D
+S315006085D0708192A3B4C5D6E7F8091A2B3C4D5E6F3D
+S315006085E08091A2B3C4D5E6F708192A3B4C5D6E7F2D
+S315006085F090A1B2C3D4E5F60718293A4B5C6D7E8F1D
+S31500608600A0B1C2D3E4F5061728394A5B6C7D8E9F0C
+S31500608610B0C1D2E3F405162738495A6B7C8D9EAFFC
+S31500608620C0D1E2F30415263748596A7B8C9DAEBFEC
+S31500608630D0E1F2031425364758697A8B9CADBECFDC
+S31500608640E0F102132435465768798A9BACBDCEDFCC
+S31500608650F00112233445566778899AABBCCDDEEFBC
+S3150060866000112233445566778899AABBCCDDEEFFAC
+S31500608670102132435465768798A9BACBDCEDFE0F9C
+S315006086802031425364758697A8B9CADBECFD0E1F8C
+S3150060869030415263748596A7B8C9DAEBFC0D1E2F7C
+S315006086A0405162738495A6B7C8D9EAFB0C1D2E3F6C
+S315006086B05061728394A5B6C7D8E9FA0B1C2D3E4F5C
+S315006086C060718293A4B5C6D7E8F90A1B2C3D4E5F4C
+S315006086D0708192A3B4C5D6E7F8091A2B3C4D5E6F3C
+S315006086E08091A2B3C4D5E6F708192A3B4C5D6E7F2C
+S315006086F090A1B2C3D4E5F60718293A4B5C6D7E8F1C
+S31500608700A0B1C2D3E4F5061728394A5B6C7D8E9F0B
+S31500608710B0C1D2E3F405162738495A6B7C8D9EAFFB
+S31500608720C0D1E2F30415263748596A7B8C9DAEBFEB
+S31500608730D0E1F2031425364758697A8B9CADBECFDB
+S31500608740E0F102132435465768798A9BACBDCEDFCB
+S31500608750F00112233445566778899AABBCCDDEEFBB
+S3150060876000112233445566778899AABBCCDDEEFFAB
+S31500608770102132435465768798A9BACBDCEDFE0F9B
+S315006087802031425364758697A8B9CADBECFD0E1F8B
+S3150060879030415263748596A7B8C9DAEBFC0D1E2F7B
+S315006087A0405162738495A6B7C8D9EAFB0C1D2E3F6B
+S315006087B05061728394A5B6C7D8E9FA0B1C2D3E4F5B
+S315006087C060718293A4B5C6D7E8F90A1B2C3D4E5F4B
+S315006087D0708192A3B4C5D6E7F8091A2B3C4D5E6F3B
+S315006087E08091A2B3C4D5E6F708192A3B4C5D6E7F2B
+S315006087F090A1B2C3D4E5F60718293A4B5C6D7E8F1B
+S31500608800A0B1C2D3E4F5061728394A5B6C7D8E9F0A
+S31500608810B0C1D2E3F405162738495A6B7C8D9EAFFA
+S31500608820C0D1E2F30415263748596A7B8C9DAEBFEA
+S31500608830D0E1F2031425364758697A8B9CADBECFDA
+S31500608840E0F102132435465768798A9BACBDCEDFCA
+S31500608850F00112233445566778899AABBCCDDEEFBA
+S3150060886000112233445566778899AABBCCDDEEFFAA
+S31500608870102132435465768798A9BACBDCEDFE0F9A
+S315006088802031425364758697A8B9CADBECFD0E1F8A
+S3150060889030415263748596A7B8C9DAEBFC0D1E2F7A
+S315006088A0405162738495A6B7C8D9EAFB0C1D2E3F6A
+S315006088B05061728394A5B6C7D8E9FA0B1C2D3E4F5A
+S315006088C060718293A4B5C6D7E8F90A1B2C3D4E5F4A
+S315006088D0708192A3B4C5D6E7F8091A2B3C4D5E6F3A
+S315006088E08091A2B3C4D5E6F708192A3B4C5D6E7F2A
+S315006088F090A1B2C3D4E5F60718293A4B5C6D7E8F1A
+S31500608900A0B1C2D3E4F5061728394A5B6C7D8E9F09
+S31500608910B0C1D2E3F405162738495A6B7C8D9EAFF9
+S31500608920C0D1E2F30415263748596A7B8C9DAEBFE9
+S31500608930D0E1F2031425364758697A8B9CADBECFD9
+S31500608940E0F102132435465768798A9BACBDCEDFC9
+S31500608950F00112233445566778899AABBCCDDEEFB9
+S3150060896000112233445566778899AABBCCDDEEFFA9
+S31500608970102132435465768798A9BACBDCEDFE0F99
+S315006089802031425364758697A8B9CADBECFD0E1F89
+S3150060899030415263748596A7B8C9DAEBFC0D1E2F79
+S315006089A0405162738495A6B7C8D9EAFB0C1D2E3F69
+S315006089B05061728394A5B6C7D8E9FA0B1C2D3E4F59
+S315006089C060718293A4B5C6D7E8F90A1B2C3D4E5F49
+S315006089D0708192A3B4C5D6E7F8091A2B3C4D5E6F39
+S315006089E08091A2B3C4D5E6F708192A3B4C5D6E7F29
+S315006089F090A1B2C3D4E5F60718293A4B5C6D7E8F19
+S31500608A00A0B1C2D3E4F5061728394A5B6C7D8E9F08
+S31500608A10B0C1D2E3F405162738495A6B7C8D9EAFF8
+S31500608A20C0D1E2F30415263748596A7B8C9DAEBFE8
+S31500608A30D0E1F2031425364758697A8B9CADBECFD8
+S31500608A40E0F102132435465768798A9BACBDCEDFC8
+S31500608A50F00112233445566778899AABBCCDDEEFB8
+S31500608A6000112233445566778899AABBCCDDEEFFA8
+S31500608A70102132435465768798A9BACBDCEDFE0F98
+S31500608A802031425364758697A8B9CADBECFD0E1F88
+S31500608A9030415263748596A7B8C9DAEBFC0D1E2F78
+S31500608AA0405162738495A6B7C8D9EAFB0C1D2E3F68
+S31500608AB05061728394A5B6C7D8E9FA0B1C2D3E4F58
+S31500608AC060718293A4B5C6D7E8F90A1B2C3D4E5F48
+S31500608AD0708192A3B4C5D6E7F8091A2B3C4D5E6F38
+S31500608AE08091A2B3C4D5E6F708192A3B4C5D6E7F28
+S31500608AF090A1B2C3D4E5F60718293A4B5C6D7E8F18
+S31500608B00A0B1C2D3E4F5061728394A5B6C7D8E9F07
+S31500608B10B0C1D2E3F405162738495A6B7C8D9EAFF7
+S31500608B20C0D1E2F30415263748596A7B8C9DAEBFE7
+S31500608B30D0E1F2031425364758697A8B9CADBECFD7
+S31500608B40E0F102132435465768798A9BACBDCEDFC7
+S31500608B50F00112233445566778899AABBCCDDEEFB7
+S31500608B6000112233445566778899AABBCCDDEEFFA7
+S31500608B70102132435465768798A9BACBDCEDFE0F97
+S31500608B802031425364758697A8B9CADBECFD0E1F87
+S31500608B9030415263748596A7B8C9DAEBFC0D1E2F77
+S31500608BA0405162738495A6B7C8D9EAFB0C1D2E3F67
+S31500608BB05061728394A5B6C7D8E9FA0B1C2D3E4F57
+S31500608BC060718293A4B5C6D7E8F90A1B2C3D4E5F47
+S31500608BD0708192A3B4C5D6E7F8091A2B3C4D5E6F37
+S31500608BE08091A2B3C4D5E6F708192A3B4C5D6E7F27
+S31500608BF090A1B2C3D4E5F60718293A4B5C6D7E8F17
+S31500608C00A0B1C2D3E4F5061728394A5B6C7D8E9F06
+S31500608C10B0C1D2E3F405162738495A6B7C8D9EAFF6
+S31500608C20C0D1E2F30415263748596A7B8C9DAEBFE6
+S31500608C30D0E1F2031425364758697A8B9CADBECFD6
+S31500608C40E0F102132435465768798A9BACBDCEDFC6
+S31500608C50F00112233445566778899AABBCCDDEEFB6
+S31500608C6000112233445566778899AABBCCDDEEFFA6
+S31500608C70102132435465768798A9BACBDCEDFE0F96
+S31500608C802031425364758697A8B9CADBECFD0E1F86
+S31500608C9030415263748596A7B8C9DAEBFC0D1E2F76
+S31500608CA0405162738495A6B7C8D9EAFB0C1D2E3F66
+S31500608CB05061728394A5B6C7D8E9FA0B1C2D3E4F56
+S31500608CC060718293A4B5C6D7E8F90A1B2C3D4E5F46
+S31500608CD0708192A3B4C5D6E7F8091A2B3C4D5E6F36
+S31500608CE08091A2B3C4D5E6F708192A3B4C5D6E7F26
+S31500608CF090A1B2C3D4E5F60718293A4B5C6D7E8F16
+S31500608D00A0B1C2D3E4F5061728394A5B6C7D8E9F05
+S31500608D10B0C1D2E3F405162738495A6B7C8D9EAFF5
+S31500608D20C0D1E2F30415263748596A7B8C9DAEBFE5
+S31500608D30D0E1F2031425364758697A8B9CADBECFD5
+S31500608D40E0F102132435465768798A9BACBDCEDFC5
+S31500608D50F00112233445566778899AABBCCDDEEFB5
+S31500608D6000112233445566778899AABBCCDDEEFFA5
+S31500608D70102132435465768798A9BACBDCEDFE0F95
+S31500608D802031425364758697A8B9CADBECFD0E1F85
+S31500608D9030415263748596A7B8C9DAEBFC0D1E2F75
+S31500608DA0405162738495A6B7C8D9EAFB0C1D2E3F65
+S31500608DB05061728394A5B6C7D8E9FA0B1C2D3E4F55
+S31500608DC060718293A4B5C6D7E8F90A1B2C3D4E5F45
+S31500608DD0708192A3B4C5D6E7F8091A2B3C4D5E6F35
+S31500608DE08091A2B3C4D5E6F708192A3B4C5D6E7F25
+S31500608DF090A1B2C3D4E5F60718293A4B5C6D7E8F15
+S31500608E00A0B1C2D3E4F5061728394A5B6C7D8E9F04
+S31500608E10B0C1D2E3F405162738495A6B7C8D9EAFF4
+S31500608E20C0D1E2F30415263748596A7B8C9DAEBFE4
+S31500608E30D0E1F2031425364758697A8B9CADBECFD4
+S31500608E40E0F102132435465768798A9BACBDCEDFC4
+S31500608E50F00112233445566778899AABBCCDDEEFB4
+S31500608E6000112233445566778899AABBCCDDEEFFA4
+S31500608E70102132435465768798A9BACBDCEDFE0F94
+S31500608E802031425364758697A8B9CADBECFD0E1F84
+S31500608E9030415263748596A7B8C9DAEBFC0D1E2F74
+S31500608EA0405162738495A6B7C8D9EAFB0C1D2E3F64
+S31500608EB05061728394A5B6C7D8E9FA0B1C2D3E4F54
+S31500608EC060718293A4B5C6D7E8F90A1B2C3D4E5F44
+S31500608ED0708192A3B4C5D6E7F8091A2B3C4D5E6F34
+S31500608EE08091A2B3C4D5E6F708192A3B4C5D6E7F24
+S31500608EF090A1B2C3D4E5F60718293A4B5C6D7E8F14
+S31500608F00A0B1C2D3E4F5061728394A5B6C7D8E9F03
+S31500608F10B0C1D2E3F405162738495A6B7C8D9EAFF3
+S31500608F20C0D1E2F30415263748596A7B8C9DAEBFE3
+S31500608F30D0E1F2031425364758697A8B9CADBECFD3
+S31500608F40E0F102132435465768798A9BACBDCEDFC3
+S31500608F50F00112233445566778899AABBCCDDEEFB3
+S31500608F6000112233445566778899AABBCCDDEEFFA3
+S31500608F70102132435465768798A9BACBDCEDFE0F93
+S31500608F802031425364758697A8B9CADBECFD0E1F83
+S31500608F9030415263748596A7B8C9DAEBFC0D1E2F73
+S31500608FA0405162738495A6B7C8D9EAFB0C1D2E3F63
+S31500608FB05061728394A5B6C7D8E9FA0B1C2D3E4F53
+S31500608FC060718293A4B5C6D7E8F90A1B2C3D4E5F43
+S31500608FD0708192A3B4C5D6E7F8091A2B3C4D5E6F33
+S31500608FE08091A2B3C4D5E6F708192A3B4C5D6E7F23
+S31500608FF090A1B2C3D4E5F60718293A4B5C6D7E8F13
+S31500609000A0B1C2D3E4F5061728394A5B6C7D8E9F02
+S31500609010B0C1D2E3F405162738495A6B7C8D9EAFF2
+S31500609020C0D1E2F30415263748596A7B8C9DAEBFE2
+S31500609030D0E1F2031425364758697A8B9CADBECFD2
+S31500609040E0F102132435465768798A9BACBDCEDFC2
+S31500609050F00112233445566778899AABBCCDDEEFB2
+S3150060906000112233445566778899AABBCCDDEEFFA2
+S31500609070102132435465768798A9BACBDCEDFE0F92
+S315006090802031425364758697A8B9CADBECFD0E1F82
+S3150060909030415263748596A7B8C9DAEBFC0D1E2F72
+S315006090A0405162738495A6B7C8D9EAFB0C1D2E3F62
+S315006090B05061728394A5B6C7D8E9FA0B1C2D3E4F52
+S315006090C060718293A4B5C6D7E8F90A1B2C3D4E5F42
+S315006090D0708192A3B4C5D6E7F8091A2B3C4D5E6F32
+S315006090E08091A2B3C4D5E6F708192A3B4C5D6E7F22
+S315006090F090A1B2C3D4E5F60718293A4B5C6D7E8F12
+S31500609100A0B1C2D3E4F5061728394A5B6C7D8E9F01
+S31500609110B0C1D2E3F405162738495A6B7C8D9EAFF1
+S31500609120C0D1E2F30415263748596A7B8C9DAEBFE1
+S31500609130D0E1F2031425364758697A8B9CADBECFD1
+S31500609140E0F102132435465768798A9BACBDCEDFC1
+S31500609150F00112233445566778899AABBCCDDEEFB1
+S3150060916000112233445566778899AABBCCDDEEFFA1
+S31500609170102132435465768798A9BACBDCEDFE0F91
+S315006091802031425364758697A8B9CADBECFD0E1F81
+S3150060919030415263748596A7B8C9DAEBFC0D1E2F71
+S315006091A0405162738495A6B7C8D9EAFB0C1D2E3F61
+S315006091B05061728394A5B6C7D8E9FA0B1C2D3E4F51
+S315006091C060718293A4B5C6D7E8F90A1B2C3D4E5F41
+S315006091D0708192A3B4C5D6E7F8091A2B3C4D5E6F31
+S315006091E08091A2B3C4D5E6F708192A3B4C5D6E7F21
+S315006091F090A1B2C3D4E5F60718293A4B5C6D7E8F11
+S31500609200A0B1C2D3E4F5061728394A5B6C7D8E9F00
+S31500609210B0C1D2E3F405162738495A6B7C8D9EAFF0
+S31500609220C0D1E2F30415263748596A7B8C9DAEBFE0
+S31500609230D0E1F2031425364758697A8B9CADBECFD0
+S31500609240E0F102132435465768798A9BACBDCEDFC0
+S31500609250F00112233445566778899AABBCCDDEEFB0
+S3150060926000112233445566778899AABBCCDDEEFFA0
+S31500609270102132435465768798A9BACBDCEDFE0F90
+S315006092802031425364758697A8B9CADBECFD0E1F80
+S3150060929030415263748596A7B8C9DAEBFC0D1E2F70
+S315006092A0405162738495A6B7C8D9EAFB0C1D2E3F60
+S315006092B05061728394A5B6C7D8E9FA0B1C2D3E4F50
+S315006092C060718293A4B5C6D7E8F90A1B2C3D4E5F40
+S315006092D0708192A3B4C5D6E7F8091A2B3C4D5E6F30
+S315006092E08091A2B3C4D5E6F708192A3B4C5D6E7F20
+S315006092F090A1B2C3D4E5F60718293A4B5C6D7E8F10
+S31500609300A0B1C2D3E4F5061728394A5B6C7D8E9FFF
+S31500609310B0C1D2E3F405162738495A6B7C8D9EAFEF
+S31500609320C0D1E2F30415263748596A7B8C9DAEBFDF
+S31500609330D0E1F2031425364758697A8B9CADBECFCF
+S31500609340E0F102132435465768798A9BACBDCEDFBF
+S31500609350F00112233445566778899AABBCCDDEEFAF
+S3150060936000112233445566778899AABBCCDDEEFF9F
+S31500609370102132435465768798A9BACBDCEDFE0F8F
+S315006093802031425364758697A8B9CADBECFD0E1F7F
+S3150060939030415263748596A7B8C9DAEBFC0D1E2F6F
+S315006093A0405162738495A6B7C8D9EAFB0C1D2E3F5F
+S315006093B05061728394A5B6C7D8E9FA0B1C2D3E4F4F
+S315006093C060718293A4B5C6D7E8F90A1B2C3D4E5F3F
+S315006093D0708192A3B4C5D6E7F8091A2B3C4D5E6F2F
+S315006093E08091A2B3C4D5E6F708192A3B4C5D6E7F1F
+S315006093F090A1B2C3D4E5F60718293A4B5C6D7E8F0F
+S31500609400A0B1C2D3E4F5061728394A5B6C7D8E9FFE
+S31500609410B0C1D2E3F405162738495A6B7C8D9EAFEE
+S31500609420C0D1E2F30415263748596A7B8C9DAEBFDE
+S31500609430D0E1F2031425364758697A8B9CADBECFCE
+S31500609440E0F102132435465768798A9BACBDCEDFBE
+S31500609450F00112233445566778899AABBCCDDEEFAE
+S3150060946000112233445566778899AABBCCDDEEFF9E
+S31500609470102132435465768798A9BACBDCEDFE0F8E
+S315006094802031425364758697A8B9CADBECFD0E1F7E
+S3150060949030415263748596A7B8C9DAEBFC0D1E2F6E
+S315006094A0405162738495A6B7C8D9EAFB0C1D2E3F5E
+S315006094B05061728394A5B6C7D8E9FA0B1C2D3E4F4E
+S315006094C060718293A4B5C6D7E8F90A1B2C3D4E5F3E
+S315006094D0708192A3B4C5D6E7F8091A2B3C4D5E6F2E
+S315006094E08091A2B3C4D5E6F708192A3B4C5D6E7F1E
+S315006094F090A1B2C3D4E5F60718293A4B5C6D7E8F0E
+S31500609500A0B1C2D3E4F5061728394A5B6C7D8E9FFD
+S31500609510B0C1D2E3F405162738495A6B7C8D9EAFED
+S31500609520C0D1E2F30415263748596A7B8C9DAEBFDD
+S31500609530D0E1F2031425364758697A8B9CADBECFCD
+S31500609540E0F102132435465768798A9BACBDCEDFBD
+S31500609550F00112233445566778899AABBCCDDEEFAD
+S3150060956000112233445566778899AABBCCDDEEFF9D
+S31500609570102132435465768798A9BACBDCEDFE0F8D
+S315006095802031425364758697A8B9CADBECFD0E1F7D
+S3150060959030415263748596A7B8C9DAEBFC0D1E2F6D
+S315006095A0405162738495A6B7C8D9EAFB0C1D2E3F5D
+S315006095B05061728394A5B6C7D8E9FA0B1C2D3E4F4D
+S315006095C060718293A4B5C6D7E8F90A1B2C3D4E5F3D
+S315006095D0708192A3B4C5D6E7F8091A2B3C4D5E6F2D
+S315006095E08091A2B3C4D5E6F708192A3B4C5D6E7F1D
+S315006095F090A1B2C3D4E5F60718293A4B5C6D7E8F0D
+S31500609600A0B1C2D3E4F5061728394A5B6C7D8E9FFC
+S31500609610B0C1D2E3F405162738495A6B7C8D9EAFEC
+S31500609620C0D1E2F30415263748596A7B8C9DAEBFDC
+S31500609630D0E1F2031425364758697A8B9CADBECFCC
+S31500609640E0F102132435465768798A9BACBDCEDFBC
+S31500609650F00112233445566778899AABBCCDDEEFAC
+S3150060966000112233445566778899AABBCCDDEEFF9C
+S31500609670102132435465768798A9BACBDCEDFE0F8C
+S315006096802031425364758697A8B9CADBECFD0E1F7C
+S3150060969030415263748596A7B8C9DAEBFC0D1E2F6C
+S315006096A0405162738495A6B7C8D9EAFB0C1D2E3F5C
+S315006096B05061728394A5B6C7D8E9FA0B1C2D3E4F4C
+S315006096C060718293A4B5C6D7E8F90A1B2C3D4E5F3C
+S315006096D0708192A3B4C5D6E7F8091A2B3C4D5E6F2C
+S315006096E08091A2B3C4D5E6F708192A3B4C5D6E7F1C
+S315006096F090A1B2C3D4E5F60718293A4B5C6D7E8F0C
+S31500609700A0B1C2D3E4F5061728394A5B6C7D8E9FFB
+S31500609710B0C1D2E3F405162738495A6B7C8D9EAFEB
+S31500609720C0D1E2F30415263748596A7B8C9DAEBFDB
+S31500609730D0E1F2031425364758697A8B9CADBECFCB
+S31500609740E0F102132435465768798A9BACBDCEDFBB
+S31500609750F00112233445566778899AABBCCDDEEFAB
+S3150060976000112233445566778899AABBCCDDEEFF9B
+S31500609770102132435465768798A9BACBDCEDFE0F8B
+S315006097802031425364758697A8B9CADBECFD0E1F7B
+S3150060979030415263748596A7B8C9DAEBFC0D1E2F6B
+S315006097A0405162738495A6B7C8D9EAFB0C1D2E3F5B
+S315006097B05061728394A5B6C7D8E9FA0B1C2D3E4F4B
+S315006097C060718293A4B5C6D7E8F90A1B2C3D4E5F3B
+S315006097D0708192A3B4C5D6E7F8091A2B3C4D5E6F2B
+S315006097E08091A2B3C4D5E6F708192A3B4C5D6E7F1B
+S315006097F090A1B2C3D4E5F60718293A4B5C6D7E8F0B
+S31500609800A0B1C2D3E4F5061728394A5B6C7D8E9FFA
+S31500609810B0C1D2E3F405162738495A6B7C8D9EAFEA
+S31500609820C0D1E2F30415263748596A7B8C9DAEBFDA
+S31500609830D0E1F2031425364758697A8B9CADBECFCA
+S31500609840E0F102132435465768798A9BACBDCEDFBA
+S31500609850F00112233445566778899AABBCCDDEEFAA
+S3150060986000112233445566778899AABBCCDDEEFF9A
+S31500609870102132435465768798A9BACBDCEDFE0F8A
+S315006098802031425364758697A8B9CADBECFD0E1F7A
+S3150060989030415263748596A7B8C9DAEBFC0D1E2F6A
+S315006098A0405162738495A6B7C8D9EAFB0C1D2E3F5A
+S315006098B05061728394A5B6C7D8E9FA0B1C2D3E4F4A
+S315006098C060718293A4B5C6D7E8F90A1B2C3D4E5F3A
+S315006098D0708192A3B4C5D6E7F8091A2B3C4D5E6F2A
+S315006098E08091A2B3C4D5E6F708192A3B4C5D6E7F1A
+S315006098F090A1B2C3D4E5F60718293A4B5C6D7E8F0A
+S31500609900A0B1C2D3E4F5061728394A5B6C7D8E9FF9
+S31500609910B0C1D2E3F405162738495A6B7C8D9EAFE9
+S31500609920C0D1E2F30415263748596A7B8C9DAEBFD9
+S31500609930D0E1F2031425364758697A8B9CADBECFC9
+S31500609940E0F102132435465768798A9BACBDCEDFB9
+S31500609950F00112233445566778899AABBCCDDEEFA9
+S3150060996000112233445566778899AABBCCDDEEFF99
+S31500609970102132435465768798A9BACBDCEDFE0F89
+S315006099802031425364758697A8B9CADBECFD0E1F79
+S3150060999030415263748596A7B8C9DAEBFC0D1E2F69
+S315006099A0405162738495A6B7C8D9EAFB0C1D2E3F59
+S315006099B05061728394A5B6C7D8E9FA0B1C2D3E4F49
+S315006099C060718293A4B5C6D7E8F90A1B2C3D4E5F39
+S315006099D0708192A3B4C5D6E7F8091A2B3C4D5E6F29
+S315006099E08091A2B3C4D5E6F708192A3B4C5D6E7F19
+S315006099F090A1B2C3D4E5F60718293A4B5C6D7E8F09
+S31500609A00A0B1C2D3E4F5061728394A5B6C7D8E9FF8
+S31500609A10B0C1D2E3F405162738495A6B7C8D9EAFE8
+S31500609A20C0D1E2F30415263748596A7B8C9DAEBFD8
+S31500609A30D0E1F2031425364758697A8B9CADBECFC8
+S31500609A40E0F102132435465768798A9BACBDCEDFB8
+S31500609A50F00112233445566778899AABBCCDDEEFA8
+S31500609A6000112233445566778899AABBCCDDEEFF98
+S31500609A70102132435465768798A9BACBDCEDFE0F88
+S31500609A802031425364758697A8B9CADBECFD0E1F78
+S31500609A9030415263748596A7B8C9DAEBFC0D1E2F68
+S31500609AA0405162738495A6B7C8D9EAFB0C1D2E3F58
+S31500609AB05061728394A5B6C7D8E9FA0B1C2D3E4F48
+S31500609AC060718293A4B5C6D7E8F90A1B2C3D4E5F38
+S31500609AD0708192A3B4C5D6E7F8091A2B3C4D5E6F28
+S31500609AE08091A2B3C4D5E6F708192A3B4C5D6E7F18
+S31500609AF090A1B2C3D4E5F60718293A4B5C6D7E8F08
+S31500609B00A0B1C2D3E4F5061728394A5B6C7D8E9FF7
+S31500609B10B0C1D2E3F405162738495A6B7C8D9EAFE7
+S31500609B20C0D1E2F30415263748596A7B8C9DAEBFD7
+S31500609B30D0E1F2031425364758697A8B9CADBECFC7
+S31500609B40E0F102132435465768798A9BACBDCEDFB7
+S31500609B50F00112233445566778899AABBCCDDEEFA7
+S31500609B6000112233445566778899AABBCCDDEEFF97
+S31500609B70102132435465768798A9BACBDCEDFE0F87
+S31500609B802031425364758697A8B9CADBECFD0E1F77
+S31500609B9030415263748596A7B8C9DAEBFC0D1E2F67
+S31500609BA0405162738495A6B7C8D9EAFB0C1D2E3F57
+S31500609BB05061728394A5B6C7D8E9FA0B1C2D3E4F47
+S31500609BC060718293A4B5C6D7E8F90A1B2C3D4E5F37
+S31500609BD0708192A3B4C5D6E7F8091A2B3C4D5E6F27
+S31500609BE08091A2B3C4D5E6F708192A3B4C5D6E7F17
+S31500609BF090A1B2C3D4E5F60718293A4B5C6D7E8F07
+S31500609C00A0B1C2D3E4F5061728394A5B6C7D8E9FF6
+S31500609C10B0C1D2E3F405162738495A6B7C8D9EAFE6
+S31500609C20C0D1E2F30415263748596A7B8C9DAEBFD6
+S31500609C30D0E1F2031425364758697A8B9CADBECFC6
+S31500609C40E0F102132435465768798A9BACBDCEDFB6
+S31500609C50F00112233445566778899AABBCCDDEEFA6
+S31500609C6000112233445566778899AABBCCDDEEFF96
+S31500609C70102132435465768798A9BACBDCEDFE0F86
+S31500609C802031425364758697A8B9CADBECFD0E1F76
+S31500609C9030415263748596A7B8C9DAEBFC0D1E2F66
+S31500609CA0405162738495A6B7C8D9EAFB0C1D2E3F56
+S31500609CB05061728394A5B6C7D8E9FA0B1C2D3E4F46
+S31500609CC060718293A4B5C6D7E8F90A1B2C3D4E5F36
+S31500609CD0708192A3B4C5D6E7F8091A2B3C4D5E6F26
+S31500609CE08091A2B3C4D5E6F708192A3B4C5D6E7F16
+S31500609CF090A1B2C3D4E5F60718293A4B5C6D7E8F06
+S31500609D00A0B1C2D3E4F5061728394A5B6C7D8E9FF5
+S31500609D10B0C1D2E3F405162738495A6B7C8D9EAFE5
+S31500609D20C0D1E2F30415263748596A7B8C9DAEBFD5
+S31500609D30D0E1F2031425364758697A8B9CADBECFC5
+S31500609D40E0F102132435465768798A9BACBDCEDFB5
+S31500609D50F00112233445566778899AABBCCDDEEFA5
+S31500609D6000112233445566778899AABBCCDDEEFF95
+S31500609D70102132435465768798A9BACBDCEDFE0F85
+S31500609D802031425364758697A8B9CADBECFD0E1F75
+S31500609D9030415263748596A7B8C9DAEBFC0D1E2F65
+S31500609DA0405162738495A6B7C8D9EAFB0C1D2E3F55
+S31500609DB05061728394A5B6C7D8E9FA0B1C2D3E4F45
+S31500609DC060718293A4B5C6D7E8F90A1B2C3D4E5F35
+S31500609DD0708192A3B4C5D6E7F8091A2B3C4D5E6F25
+S31500609DE08091A2B3C4D5E6F708192A3B4C5D6E7F15
+S31500609DF090A1B2C3D4E5F60718293A4B5C6D7E8F05
+S31500609E00A0B1C2D3E4F5061728394A5B6C7D8E9FF4
+S31500609E10B0C1D2E3F405162738495A6B7C8D9EAFE4
+S31500609E20C0D1E2F30415263748596A7B8C9DAEBFD4
+S31500609E30D0E1F2031425364758697A8B9CADBECFC4
+S31500609E40E0F102132435465768798A9BACBDCEDFB4
+S31500609E50F00112233445566778899AABBCCDDEEFA4
+S31500609E6000112233445566778899AABBCCDDEEFF94
+S31500609E70102132435465768798A9BACBDCEDFE0F84
+S31500609E802031425364758697A8B9CADBECFD0E1F74
+S31500609E9030415263748596A7B8C9DAEBFC0D1E2F64
+S31500609EA0405162738495A6B7C8D9EAFB0C1D2E3F54
+S31500609EB05061728394A5B6C7D8E9FA0B1C2D3E4F44
+S31500609EC060718293A4B5C6D7E8F90A1B2C3D4E5F34
+S31500609ED0708192A3B4C5D6E7F8091A2B3C4D5E6F24
+S31500609EE08091A2B3C4D5E6F708192A3B4C5D6E7F14
+S31500609EF090A1B2C3D4E5F60718293A4B5C6D7E8F04
+S31500609F00A0B1C2D3E4F5061728394A5B6C7D8E9FF3
+S31500609F10B0C1D2E3F405162738495A6B7C8D9EAFE3
+S31500609F20C0D1E2F30415263748596A7B8C9DAEBFD3
+S31500609F30D0E1F2031425364758697A8B9CADBECFC3
+S31500609F40E0F102132435465768798A9BACBDCEDFB3
+S31500609F50F00112233445566778899AABBCCDDEEFA3
+S31500609F6000112233445566778899AABBCCDDEEFF93
+S31500609F70102132435465768798A9BACBDCEDFE0F83
+S31500609F802031425364758697A8B9CADBECFD0E1F73
+S31500609F9030415263748596A7B8C9DAEBFC0D1E2F63
+S31500609FA0405162738495A6B7C8D9EAFB0C1D2E3F53
+S31500609FB05061728394A5B6C7D8E9FA0B1C2D3E4F43
+S31500609FC060718293A4B5C6D7E8F90A1B2C3D4E5F33
+S31500609FD0708192A3B4C5D6E7F8091A2B3C4D5E6F23
+S31500609FE08091A2B3C4D5E6F708192A3B4C5D6E7F13
+S31500609FF090A1B2C3D4E5F60718293A4B5C6D7E8F03
+S3150060A000A0B1C2D3E4F5061728394A5B6C7D8E9FF2
+S3150060A010B0C1D2E3F405162738495A6B7C8D9EAFE2
+S3150060A020C0D1E2F30415263748596A7B8C9DAEBFD2
+S3150060A030D0E1F2031425364758697A8B9CADBECFC2
+S3150060A040E0F102132435465768798A9BACBDCEDFB2
+S3150060A050F00112233445566778899AABBCCDDEEFA2
+S3150060A06000112233445566778899AABBCCDDEEFF92
+S3150060A070102132435465768798A9BACBDCEDFE0F82
+S3150060A0802031425364758697A8B9CADBECFD0E1F72
+S3150060A09030415263748596A7B8C9DAEBFC0D1E2F62
+S3150060A0A0405162738495A6B7C8D9EAFB0C1D2E3F52
+S3150060A0B05061728394A5B6C7D8E9FA0B1C2D3E4F42
+S3150060A0C060718293A4B5C6D7E8F90A1B2C3D4E5F32
+S3150060A0D0708192A3B4C5D6E7F8091A2B3C4D5E6F22
+S3150060A0E08091A2B3C4D5E6F708192A3B4C5D6E7F12
+S3150060A0F090A1B2C3D4E5F60718293A4B5C6D7E8F02
+S3150060A100A0B1C2D3E4F5061728394A5B6C7D8E9FF1
+S3150060A110B0C1D2E3F405162738495A6B7C8D9EAFE1
+S3150060A120C0D1E2F30415263748596A7B8C9DAEBFD1
+S3150060A130D0E1F2031425364758697A8B9CADBECFC1
+S3150060A140E0F102132435465768798A9BACBDCEDFB1
+S3150060A150F00112233445566778899AABBCCDDEEFA1
+S3150060A16000112233445566778899AABBCCDDEEFF91
+S3150060A170102132435465768798A9BACBDCEDFE0F81
+S3150060A1802031425364758697A8B9CADBECFD0E1F71
+S3150060A19030415263748596A7B8C9DAEBFC0D1E2F61
+S3150060A1A0405162738495A6B7C8D9EAFB0C1D2E3F51
+S3150060A1B05061728394A5B6C7D8E9FA0B1C2D3E4F41
+S3150060A1C060718293A4B5C6D7E8F90A1B2C3D4E5F31
+S3150060A1D0708192A3B4C5D6E7F8091A2B3C4D5E6F21
+S3150060A1E08091A2B3C4D5E6F708192A3B4C5D6E7F11
+S3150060A1F090A1B2C3D4E5F60718293A4B5C6D7E8F01
+S3150060A200A0B1C2D3E4F5061728394A5B6C7D8E9FF0
+S3150060A210B0C1D2E3F405162738495A6B7C8D9EAFE0
+S3150060A220C0D1E2F30415263748596A7B8C9DAEBFD0
+S3150060A230D0E1F2031425364758697A8B9CADBECFC0
+S3150060A240E0F102132435465768798A9BACBDCEDFB0
+S3150060A250F00112233445566778899AABBCCDDEEFA0
+S3150060A26000112233445566778899AABBCCDDEEFF90
+S3150060A270102132435465768798A9BACBDCEDFE0F80
+S3150060A2802031425364758697A8B9CADBECFD0E1F70
+S3150060A29030415263748596A7B8C9DAEBFC0D1E2F60
+S3150060A2A0405162738495A6B7C8D9EAFB0C1D2E3F50
+S3150060A2B05061728394A5B6C7D8E9FA0B1C2D3E4F40
+S3150060A2C060718293A4B5C6D7E8F90A1B2C3D4E5F30
+S3150060A2D0708192A3B4C5D6E7F8091A2B3C4D5E6F20
+S3150060A2E08091A2B3C4D5E6F708192A3B4C5D6E7F10
+S3150060A2F090A1B2C3D4E5F60718293A4B5C6D7E8F00
+S3150060A300A0B1C2D3E4F5061728394A5B6C7D8E9FEF
+S3150060A310B0C1D2E3F405162738495A6B7C8D9EAFDF
+S3150060A320C0D1E2F30415263748596A7B8C9DAEBFCF
+S3150060A330D0E1F2031425364758697A8B9CADBECFBF
+S3150060A340E0F102132435465768798A9BACBDCEDFAF
+S3150060A350F00112233445566778899AABBCCDDEEF9F
+S3150060A36000112233445566778899AABBCCDDEEFF8F
+S3150060A370102132435465768798A9BACBDCEDFE0F7F
+S3150060A3802031425364758697A8B9CADBECFD0E1F6F
+S3150060A39030415263748596A7B8C9DAEBFC0D1E2F5F
+S3150060A3A0405162738495A6B7C8D9EAFB0C1D2E3F4F
+S3150060A3B05061728394A5B6C7D8E9FA0B1C2D3E4F3F
+S3150060A3C060718293A4B5C6D7E8F90A1B2C3D4E5F2F
+S3150060A3D0708192A3B4C5D6E7F8091A2B3C4D5E6F1F
+S3150060A3E08091A2B3C4D5E6F708192A3B4C5D6E7F0F
+S3150060A3F090A1B2C3D4E5F60718293A4B5C6D7E8FFF
+S3150060A400A0B1C2D3E4F5061728394A5B6C7D8E9FEE
+S3150060A410B0C1D2E3F405162738495A6B7C8D9EAFDE
+S3150060A420C0D1E2F30415263748596A7B8C9DAEBFCE
+S3150060A430D0E1F2031425364758697A8B9CADBECFBE
+S3150060A440E0F102132435465768798A9BACBDCEDFAE
+S3150060A450F00112233445566778899AABBCCDDEEF9E
+S3150060A46000112233445566778899AABBCCDDEEFF8E
+S3150060A470102132435465768798A9BACBDCEDFE0F7E
+S3150060A4802031425364758697A8B9CADBECFD0E1F6E
+S3150060A49030415263748596A7B8C9DAEBFC0D1E2F5E
+S3150060A4A0405162738495A6B7C8D9EAFB0C1D2E3F4E
+S3150060A4B05061728394A5B6C7D8E9FA0B1C2D3E4F3E
+S3150060A4C060718293A4B5C6D7E8F90A1B2C3D4E5F2E
+S3150060A4D0708192A3B4C5D6E7F8091A2B3C4D5E6F1E
+S3150060A4E08091A2B3C4D5E6F708192A3B4C5D6E7F0E
+S3150060A4F090A1B2C3D4E5F60718293A4B5C6D7E8FFE
+S3150060A500A0B1C2D3E4F5061728394A5B6C7D8E9FED
+S3150060A510B0C1D2E3F405162738495A6B7C8D9EAFDD
+S3150060A520C0D1E2F30415263748596A7B8C9DAEBFCD
+S3150060A530D0E1F2031425364758697A8B9CADBECFBD
+S3150060A540E0F102132435465768798A9BACBDCEDFAD
+S3150060A550F00112233445566778899AABBCCDDEEF9D
+S3150060A56000112233445566778899AABBCCDDEEFF8D
+S3150060A570102132435465768798A9BACBDCEDFE0F7D
+S3150060A5802031425364758697A8B9CADBECFD0E1F6D
+S3150060A59030415263748596A7B8C9DAEBFC0D1E2F5D
+S3150060A5A0405162738495A6B7C8D9EAFB0C1D2E3F4D
+S3150060A5B05061728394A5B6C7D8E9FA0B1C2D3E4F3D
+S3150060A5C060718293A4B5C6D7E8F90A1B2C3D4E5F2D
+S3150060A5D0708192A3B4C5D6E7F8091A2B3C4D5E6F1D
+S3150060A5E08091A2B3C4D5E6F708192A3B4C5D6E7F0D
+S3150060A5F090A1B2C3D4E5F60718293A4B5C6D7E8FFD
+S3150060A600A0B1C2D3E4F5061728394A5B6C7D8E9FEC
+S3150060A610B0C1D2E3F405162738495A6B7C8D9EAFDC
+S3150060A620C0D1E2F30415263748596A7B8C9DAEBFCC
+S3150060A630D0E1F2031425364758697A8B9CADBECFBC
+S3150060A640E0F102132435465768798A9BACBDCEDFAC
+S3150060A650F00112233445566778899AABBCCDDEEF9C
+S3150060A66000112233445566778899AABBCCDDEEFF8C
+S3150060A670102132435465768798A9BACBDCEDFE0F7C
+S3150060A6802031425364758697A8B9CADBECFD0E1F6C
+S3150060A69030415263748596A7B8C9DAEBFC0D1E2F5C
+S3150060A6A0405162738495A6B7C8D9EAFB0C1D2E3F4C
+S3150060A6B05061728394A5B6C7D8E9FA0B1C2D3E4F3C
+S3150060A6C060718293A4B5C6D7E8F90A1B2C3D4E5F2C
+S3150060A6D0708192A3B4C5D6E7F8091A2B3C4D5E6F1C
+S3150060A6E08091A2B3C4D5E6F708192A3B4C5D6E7F0C
+S3150060A6F090A1B2C3D4E5F60718293A4B5C6D7E8FFC
+S3150060A700A0B1C2D3E4F5061728394A5B6C7D8E9FEB
+S3150060A710B0C1D2E3F405162738495A6B7C8D9EAFDB
+S3150060A720C0D1E2F30415263748596A7B8C9DAEBFCB
+S3150060A730D0E1F2031425364758697A8B9CADBECFBB
+S3150060A740E0F102132435465768798A9BACBDCEDFAB
+S3150060A750F00112233445566778899AABBCCDDEEF9B
+S3150060A76000112233445566778899AABBCCDDEEFF8B
+S3150060A770102132435465768798A9BACBDCEDFE0F7B
+S3150060A7802031425364758697A8B9CADBECFD0E1F6B
+S3150060A79030415263748596A7B8C9DAEBFC0D1E2F5B
+S3150060A7A0405162738495A6B7C8D9EAFB0C1D2E3F4B
+S3150060A7B05061728394A5B6C7D8E9FA0B1C2D3E4F3B
+S3150060A7C060718293A4B5C6D7E8F90A1B2C3D4E5F2B
+S3150060A7D0708192A3B4C5D6E7F8091A2B3C4D5E6F1B
+S3150060A7E08091A2B3C4D5E6F708192A3B4C5D6E7F0B
+S3150060A7F090A1B2C3D4E5F60718293A4B5C6D7E8FFB
+S3150060A800A0B1C2D3E4F5061728394A5B6C7D8E9FEA
+S3150060A810B0C1D2E3F405162738495A6B7C8D9EAFDA
+S3150060A820C0D1E2F30415263748596A7B8C9DAEBFCA
+S3150060A830D0E1F2031425364758697A8B9CADBECFBA
+S3150060A840E0F102132435465768798A9BACBDCEDFAA
+S3150060A850F00112233445566778899AABBCCDDEEF9A
+S3150060A86000112233445566778899AABBCCDDEEFF8A
+S3150060A870102132435465768798A9BACBDCEDFE0F7A
+S3150060A8802031425364758697A8B9CADBECFD0E1F6A
+S3150060A89030415263748596A7B8C9DAEBFC0D1E2F5A
+S3150060A8A0405162738495A6B7C8D9EAFB0C1D2E3F4A
+S3150060A8B05061728394A5B6C7D8E9FA0B1C2D3E4F3A
+S3150060A8C060718293A4B5C6D7E8F90A1B2C3D4E5F2A
+S3150060A8D0708192A3B4C5D6E7F8091A2B3C4D5E6F1A
+S3150060A8E08091A2B3C4D5E6F708192A3B4C5D6E7F0A
+S3150060A8F090A1B2C3D4E5F60718293A4B5C6D7E8FFA
+S3150060A900A0B1C2D3E4F5061728394A5B6C7D8E9FE9
+S3150060A910B0C1D2E3F405162738495A6B7C8D9EAFD9
+S3150060A920C0D1E2F30415263748596A7B8C9DAEBFC9
+S3150060A930D0E1F2031425364758697A8B9CADBECFB9
+S3150060A940E0F102132435465768798A9BACBDCEDFA9
+S3150060A950F00112233445566778899AABBCCDDEEF99
+S3150060A96000112233445566778899AABBCCDDEEFF89
+S3150060A970102132435465768798A9BACBDCEDFE0F79
+S3150060A9802031425364758697A8B9CADBECFD0E1F69
+S3150060A99030415263748596A7B8C9DAEBFC0D1E2F59
+S3150060A9A0405162738495A6B7C8D9EAFB0C1D2E3F49
+S3150060A9B05061728394A5B6C7D8E9FA0B1C2D3E4F39
+S3150060A9C060718293A4B5C6D7E8F90A1B2C3D4E5F29
+S3150060A9D0708192A3B4C5D6E7F8091A2B3C4D5E6F19
+S3150060A9E08091A2B3C4D5E6F708192A3B4C5D6E7F09
+S3150060A9F090A1B2C3D4E5F60718293A4B5C6D7E8FF9
+S3150060AA00A0B1C2D3E4F5061728394A5B6C7D8E9FE8
+S3150060AA10B0C1D2E3F405162738495A6B7C8D9EAFD8
+S3150060AA20C0D1E2F30415263748596A7B8C9DAEBFC8
+S3150060AA30D0E1F2031425364758697A8B9CADBECFB8
+S3150060AA40E0F102132435465768798A9BACBDCEDFA8
+S3150060AA50F00112233445566778899AABBCCDDEEF98
+S3150060AA6000112233445566778899AABBCCDDEEFF88
+S3150060AA70102132435465768798A9BACBDCEDFE0F78
+S3150060AA802031425364758697A8B9CADBECFD0E1F68
+S3150060AA9030415263748596A7B8C9DAEBFC0D1E2F58
+S3150060AAA0405162738495A6B7C8D9EAFB0C1D2E3F48
+S3150060AAB05061728394A5B6C7D8E9FA0B1C2D3E4F38
+S3150060AAC060718293A4B5C6D7E8F90A1B2C3D4E5F28
+S3150060AAD0708192A3B4C5D6E7F8091A2B3C4D5E6F18
+S3150060AAE08091A2B3C4D5E6F708192A3B4C5D6E7F08
+S3150060AAF090A1B2C3D4E5F60718293A4B5C6D7E8FF8
+S3150060AB00A0B1C2D3E4F5061728394A5B6C7D8E9FE7
+S3150060AB10B0C1D2E3F405162738495A6B7C8D9EAFD7
+S3150060AB20C0D1E2F30415263748596A7B8C9DAEBFC7
+S3150060AB30D0E1F2031425364758697A8B9CADBECFB7
+S3150060AB40E0F102132435465768798A9BACBDCEDFA7
+S3150060AB50F00112233445566778899AABBCCDDEEF97
+S3150060AB6000112233445566778899AABBCCDDEEFF87
+S3150060AB70102132435465768798A9BACBDCEDFE0F77
+S3150060AB802031425364758697A8B9CADBECFD0E1F67
+S3150060AB9030415263748596A7B8C9DAEBFC0D1E2F57
+S3150060ABA0405162738495A6B7C8D9EAFB0C1D2E3F47
+S3150060ABB05061728394A5B6C7D8E9FA0B1C2D3E4F37
+S3150060ABC060718293A4B5C6D7E8F90A1B2C3D4E5F27
+S3150060ABD0708192A3B4C5D6E7F8091A2B3C4D5E6F17
+S3150060ABE08091A2B3C4D5E6F708192A3B4C5D6E7F07
+S3150060ABF090A1B2C3D4E5F60718293A4B5C6D7E8FF7
+S3150060AC00A0B1C2D3E4F5061728394A5B6C7D8E9FE6
+S3150060AC10B0C1D2E3F405162738495A6B7C8D9EAFD6
+S3150060AC20C0D1E2F30415263748596A7B8C9DAEBFC6
+S3150060AC30D0E1F2031425364758697A8B9CADBECFB6
+S3150060AC40E0F102132435465768798A9BACBDCEDFA6
+S3150060AC50F00112233445566778899AABBCCDDEEF96
+S3150060AC6000112233445566778899AABBCCDDEEFF86
+S3150060AC70102132435465768798A9BACBDCEDFE0F76
+S3150060AC802031425364758697A8B9CADBECFD0E1F66
+S3150060AC9030415263748596A7B8C9DAEBFC0D1E2F56
+S3150060ACA0405162738495A6B7C8D9EAFB0C1D2E3F46
+S3150060ACB05061728394A5B6C7D8E9FA0B1C2D3E4F36
+S3150060ACC060718293A4B5C6D7E8F90A1B2C3D4E5F26
+S3150060ACD0708192A3B4C5D6E7F8091A2B3C4D5E6F16
+S3150060ACE08091A2B3C4D5E6F708192A3B4C5D6E7F06
+S3150060ACF090A1B2C3D4E5F60718293A4B5C6D7E8FF6
+S3150060AD00A0B1C2D3E4F5061728394A5B6C7D8E9FE5
+S3150060AD10B0C1D2E3F405162738495A6B7C8D9EAFD5
+S3150060AD20C0D1E2F30415263748596A7B8C9DAEBFC5
+S3150060AD30D0E1F2031425364758697A8B9CADBECFB5
+S3150060AD40E0F102132435465768798A9BACBDCEDFA5
+S3150060AD50F00112233445566778899AABBCCDDEEF95
+S3150060AD6000112233445566778899AABBCCDDEEFF85
+S3150060AD70102132435465768798A9BACBDCEDFE0F75
+S3150060AD802031425364758697A8B9CADBECFD0E1F65
+S3150060AD9030415263748596A7B8C9DAEBFC0D1E2F55
+S3150060ADA0405162738495A6B7C8D9EAFB0C1D2E3F45
+S3150060ADB05061728394A5B6C7D8E9FA0B1C2D3E4F35
+S3150060ADC060718293A4B5C6D7E8F90A1B2C3D4E5F25
+S3150060ADD0708192A3B4C5D6E7F8091A2B3C4D5E6F15
+S3150060ADE08091A2B3C4D5E6F708192A3B4C5D6E7F05
+S3150060ADF090A1B2C3D4E5F60718293A4B5C6D7E8FF5
+S3150060AE00A0B1C2D3E4F5061728394A5B6C7D8E9FE4
+S3150060AE10B0C1D2E3F405162738495A6B7C8D9EAFD4
+S3150060AE20C0D1E2F30415263748596A7B8C9DAEBFC4
+S3150060AE30D0E1F2031425364758697A8B9CADBECFB4
+S3150060AE40E0F102132435465768798A9BACBDCEDFA4
+S3150060AE50F00112233445566778899AABBCCDDEEF94
+S3150060AE6000112233445566778899AABBCCDDEEFF84
+S3150060AE70102132435465768798A9BACBDCEDFE0F74
+S3150060AE802031425364758697A8B9CADBECFD0E1F64
+S3150060AE9030415263748596A7B8C9DAEBFC0D1E2F54
+S3150060AEA0405162738495A6B7C8D9EAFB0C1D2E3F44
+S3150060AEB05061728394A5B6C7D8E9FA0B1C2D3E4F34
+S3150060AEC060718293A4B5C6D7E8F90A1B2C3D4E5F24
+S3150060AED0708192A3B4C5D6E7F8091A2B3C4D5E6F14
+S3150060AEE08091A2B3C4D5E6F708192A3B4C5D6E7F04
+S3150060AEF090A1B2C3D4E5F60718293A4B5C6D7E8FF4
+S3150060AF00A0B1C2D3E4F5061728394A5B6C7D8E9FE3
+S3150060AF10B0C1D2E3F405162738495A6B7C8D9EAFD3
+S3150060AF20C0D1E2F30415263748596A7B8C9DAEBFC3
+S3150060AF30D0E1F2031425364758697A8B9CADBECFB3
+S3150060AF40E0F102132435465768798A9BACBDCEDFA3
+S3150060AF50F00112233445566778899AABBCCDDEEF93
+S3150060AF6000112233445566778899AABBCCDDEEFF83
+S3150060AF70102132435465768798A9BACBDCEDFE0F73
+S3150060AF802031425364758697A8B9CADBECFD0E1F63
+S3150060AF9030415263748596A7B8C9DAEBFC0D1E2F53
+S3150060AFA0405162738495A6B7C8D9EAFB0C1D2E3F43
+S3150060AFB05061728394A5B6C7D8E9FA0B1C2D3E4F33
+S3150060AFC060718293A4B5C6D7E8F90A1B2C3D4E5F23
+S3150060AFD0708192A3B4C5D6E7F8091A2B3C4D5E6F13
+S3150060AFE08091A2B3C4D5E6F708192A3B4C5D6E7F03
+S3150060AFF090A1B2C3D4E5F60718293A4B5C6D7E8FF3
+S3150060B000A0B1C2D3E4F5061728394A5B6C7D8E9FE2
+S3150060B010B0C1D2E3F405162738495A6B7C8D9EAFD2
+S3150060B020C0D1E2F30415263748596A7B8C9DAEBFC2
+S3150060B030D0E1F2031425364758697A8B9CADBECFB2
+S3150060B040E0F102132435465768798A9BACBDCEDFA2
+S3150060B050F00112233445566778899AABBCCDDEEF92
+S3150060B06000112233445566778899AABBCCDDEEFF82
+S3150060B070102132435465768798A9BACBDCEDFE0F72
+S3150060B0802031425364758697A8B9CADBECFD0E1F62
+S3150060B09030415263748596A7B8C9DAEBFC0D1E2F52
+S3150060B0A0405162738495A6B7C8D9EAFB0C1D2E3F42
+S3150060B0B05061728394A5B6C7D8E9FA0B1C2D3E4F32
+S3150060B0C060718293A4B5C6D7E8F90A1B2C3D4E5F22
+S3150060B0D0708192A3B4C5D6E7F8091A2B3C4D5E6F12
+S3150060B0E08091A2B3C4D5E6F708192A3B4C5D6E7F02
+S3150060B0F090A1B2C3D4E5F60718293A4B5C6D7E8FF2
+S3150060B100A0B1C2D3E4F5061728394A5B6C7D8E9FE1
+S3150060B110B0C1D2E3F405162738495A6B7C8D9EAFD1
+S3150060B120C0D1E2F30415263748596A7B8C9DAEBFC1
+S3150060B130D0E1F2031425364758697A8B9CADBECFB1
+S3150060B140E0F102132435465768798A9BACBDCEDFA1
+S3150060B150F00112233445566778899AABBCCDDEEF91
+S3150060B16000112233445566778899AABBCCDDEEFF81
+S3150060B170102132435465768798A9BACBDCEDFE0F71
+S3150060B1802031425364758697A8B9CADBECFD0E1F61
+S3150060B19030415263748596A7B8C9DAEBFC0D1E2F51
+S3150060B1A0405162738495A6B7C8D9EAFB0C1D2E3F41
+S3150060B1B05061728394A5B6C7D8E9FA0B1C2D3E4F31
+S3150060B1C060718293A4B5C6D7E8F90A1B2C3D4E5F21
+S3150060B1D0708192A3B4C5D6E7F8091A2B3C4D5E6F11
+S3150060B1E08091A2B3C4D5E6F708192A3B4C5D6E7F01
+S3150060B1F090A1B2C3D4E5F60718293A4B5C6D7E8FF1
+S3150060B200A0B1C2D3E4F5061728394A5B6C7D8E9FE0
+S3150060B210B0C1D2E3F405162738495A6B7C8D9EAFD0
+S3150060B220C0D1E2F30415263748596A7B8C9DAEBFC0
+S3150060B230D0E1F2031425364758697A8B9CADBECFB0
+S3150060B240E0F102132435465768798A9BACBDCEDFA0
+S3150060B250F00112233445566778899AABBCCDDEEF90
+S3150060B26000112233445566778899AABBCCDDEEFF80
+S3150060B270102132435465768798A9BACBDCEDFE0F70
+S3150060B2802031425364758697A8B9CADBECFD0E1F60
+S3150060B29030415263748596A7B8C9DAEBFC0D1E2F50
+S3150060B2A0405162738495A6B7C8D9EAFB0C1D2E3F40
+S3150060B2B05061728394A5B6C7D8E9FA0B1C2D3E4F30
+S3150060B2C060718293A4B5C6D7E8F90A1B2C3D4E5F20
+S3150060B2D0708192A3B4C5D6E7F8091A2B3C4D5E6F10
+S3150060B2E08091A2B3C4D5E6F708192A3B4C5D6E7F00
+S3150060B2F090A1B2C3D4E5F60718293A4B5C6D7E8FF0
+S3150060B300A0B1C2D3E4F5061728394A5B6C7D8E9FDF
+S3150060B310B0C1D2E3F405162738495A6B7C8D9EAFCF
+S3150060B320C0D1E2F30415263748596A7B8C9DAEBFBF
+S3150060B330D0E1F2031425364758697A8B9CADBECFAF
+S3150060B340E0F102132435465768798A9BACBDCEDF9F
+S3150060B350F00112233445566778899AABBCCDDEEF8F
+S3150060B36000112233445566778899AABBCCDDEEFF7F
+S3150060B370102132435465768798A9BACBDCEDFE0F6F
+S3150060B3802031425364758697A8B9CADBECFD0E1F5F
+S3150060B39030415263748596A7B8C9DAEBFC0D1E2F4F
+S3150060B3A0405162738495A6B7C8D9EAFB0C1D2E3F3F
+S3150060B3B05061728394A5B6C7D8E9FA0B1C2D3E4F2F
+S3150060B3C060718293A4B5C6D7E8F90A1B2C3D4E5F1F
+S3150060B3D0708192A3B4C5D6E7F8091A2B3C4D5E6F0F
+S3150060B3E08091A2B3C4D5E6F708192A3B4C5D6E7FFF
+S3150060B3F090A1B2C3D4E5F60718293A4B5C6D7E8FEF
+S3150060B400A0B1C2D3E4F5061728394A5B6C7D8E9FDE
+S3150060B410B0C1D2E3F405162738495A6B7C8D9EAFCE
+S3150060B420C0D1E2F30415263748596A7B8C9DAEBFBE
+S3150060B430D0E1F2031425364758697A8B9CADBECFAE
+S3150060B440E0F102132435465768798A9BACBDCEDF9E
+S3150060B450F00112233445566778899AABBCCDDEEF8E
+S3150060B46000112233445566778899AABBCCDDEEFF7E
+S3150060B470102132435465768798A9BACBDCEDFE0F6E
+S3150060B4802031425364758697A8B9CADBECFD0E1F5E
+S3150060B49030415263748596A7B8C9DAEBFC0D1E2F4E
+S3150060B4A0405162738495A6B7C8D9EAFB0C1D2E3F3E
+S3150060B4B05061728394A5B6C7D8E9FA0B1C2D3E4F2E
+S3150060B4C060718293A4B5C6D7E8F90A1B2C3D4E5F1E
+S3150060B4D0708192A3B4C5D6E7F8091A2B3C4D5E6F0E
+S3150060B4E08091A2B3C4D5E6F708192A3B4C5D6E7FFE
+S3150060B4F090A1B2C3D4E5F60718293A4B5C6D7E8FEE
+S3150060B500A0B1C2D3E4F5061728394A5B6C7D8E9FDD
+S3150060B510B0C1D2E3F405162738495A6B7C8D9EAFCD
+S3150060B520C0D1E2F30415263748596A7B8C9DAEBFBD
+S3150060B530D0E1F2031425364758697A8B9CADBECFAD
+S3150060B540E0F102132435465768798A9BACBDCEDF9D
+S3150060B550F00112233445566778899AABBCCDDEEF8D
+S3150060B56000112233445566778899AABBCCDDEEFF7D
+S3150060B570102132435465768798A9BACBDCEDFE0F6D
+S3150060B5802031425364758697A8B9CADBECFD0E1F5D
+S3150060B59030415263748596A7B8C9DAEBFC0D1E2F4D
+S3150060B5A0405162738495A6B7C8D9EAFB0C1D2E3F3D
+S3150060B5B05061728394A5B6C7D8E9FA0B1C2D3E4F2D
+S3150060B5C060718293A4B5C6D7E8F90A1B2C3D4E5F1D
+S3150060B5D0708192A3B4C5D6E7F8091A2B3C4D5E6F0D
+S3150060B5E08091A2B3C4D5E6F708192A3B4C5D6E7FFD
+S3150060B5F090A1B2C3D4E5F60718293A4B5C6D7E8FED
+S3150060B600A0B1C2D3E4F5061728394A5B6C7D8E9FDC
+S3150060B610B0C1D2E3F405162738495A6B7C8D9EAFCC
+S3150060B620C0D1E2F30415263748596A7B8C9DAEBFBC
+S3150060B630D0E1F2031425364758697A8B9CADBECFAC
+S3150060B640E0F102132435465768798A9BACBDCEDF9C
+S3150060B650F00112233445566778899AABBCCDDEEF8C
+S3150060B66000112233445566778899AABBCCDDEEFF7C
+S3150060B670102132435465768798A9BACBDCEDFE0F6C
+S3150060B6802031425364758697A8B9CADBECFD0E1F5C
+S3150060B69030415263748596A7B8C9DAEBFC0D1E2F4C
+S3150060B6A0405162738495A6B7C8D9EAFB0C1D2E3F3C
+S3150060B6B05061728394A5B6C7D8E9FA0B1C2D3E4F2C
+S3150060B6C060718293A4B5C6D7E8F90A1B2C3D4E5F1C
+S3150060B6D0708192A3B4C5D6E7F8091A2B3C4D5E6F0C
+S3150060B6E08091A2B3C4D5E6F708192A3B4C5D6E7FFC
+S3150060B6F090A1B2C3D4E5F60718293A4B5C6D7E8FEC
+S3150060B700A0B1C2D3E4F5061728394A5B6C7D8E9FDB
+S3150060B710B0C1D2E3F405162738495A6B7C8D9EAFCB
+S3150060B720C0D1E2F30415263748596A7B8C9DAEBFBB
+S3150060B730D0E1F2031425364758697A8B9CADBECFAB
+S3150060B740E0F102132435465768798A9BACBDCEDF9B
+S3150060B750F00112233445566778899AABBCCDDEEF8B
+S3150060B76000112233445566778899AABBCCDDEEFF7B
+S3150060B770102132435465768798A9BACBDCEDFE0F6B
+S3150060B7802031425364758697A8B9CADBECFD0E1F5B
+S3150060B79030415263748596A7B8C9DAEBFC0D1E2F4B
+S3150060B7A0405162738495A6B7C8D9EAFB0C1D2E3F3B
+S3150060B7B05061728394A5B6C7D8E9FA0B1C2D3E4F2B
+S3150060B7C060718293A4B5C6D7E8F90A1B2C3D4E5F1B
+S3150060B7D0708192A3B4C5D6E7F8091A2B3C4D5E6F0B
+S3150060B7E08091A2B3C4D5E6F708192A3B4C5D6E7FFB
+S3150060B7F090A1B2C3D4E5F60718293A4B5C6D7E8FEB
+S3150060B800A0B1C2D3E4F5061728394A5B6C7D8E9FDA
+S3150060B810B0C1D2E3F405162738495A6B7C8D9EAFCA
+S3150060B820C0D1E2F30415263748596A7B8C9DAEBFBA
+S3150060B830D0E1F2031425364758697A8B9CADBECFAA
+S3150060B840E0F102132435465768798A9BACBDCEDF9A
+S3150060B850F00112233445566778899AABBCCDDEEF8A
+S3150060B86000112233445566778899AABBCCDDEEFF7A
+S3150060B870102132435465768798A9BACBDCEDFE0F6A
+S3150060B8802031425364758697A8B9CADBECFD0E1F5A
+S3150060B89030415263748596A7B8C9DAEBFC0D1E2F4A
+S3150060B8A0405162738495A6B7C8D9EAFB0C1D2E3F3A
+S3150060B8B05061728394A5B6C7D8E9FA0B1C2D3E4F2A
+S3150060B8C060718293A4B5C6D7E8F90A1B2C3D4E5F1A
+S3150060B8D0708192A3B4C5D6E7F8091A2B3C4D5E6F0A
+S3150060B8E08091A2B3C4D5E6F708192A3B4C5D6E7FFA
+S3150060B8F090A1B2C3D4E5F60718293A4B5C6D7E8FEA
+S3150060B900A0B1C2D3E4F5061728394A5B6C7D8E9FD9
+S3150060B910B0C1D2E3F405162738495A6B7C8D9EAFC9
+S3150060B920C0D1E2F30415263748596A7B8C9DAEBFB9
+S3150060B930D0E1F2031425364758697A8B9CADBECFA9
+S3150060B940E0F102132435465768798A9BACBDCEDF99
+S3150060B950F00112233445566778899AABBCCDDEEF89
+S3150060B96000112233445566778899AABBCCDDEEFF79
+S3150060B970102132435465768798A9BACBDCEDFE0F69
+S3150060B9802031425364758697A8B9CADBECFD0E1F59
+S3150060B99030415263748596A7B8C9DAEBFC0D1E2F49
+S3150060B9A0405162738495A6B7C8D9EAFB0C1D2E3F39
+S3150060B9B05061728394A5B6C7D8E9FA0B1C2D3E4F29
+S3150060B9C060718293A4B5C6D7E8F90A1B2C3D4E5F19
+S3150060B9D0708192A3B4C5D6E7F8091A2B3C4D5E6F09
+S3150060B9E08091A2B3C4D5E6F708192A3B4C5D6E7FF9
+S3150060B9F090A1B2C3D4E5F60718293A4B5C6D7E8FE9
+S3150060BA00A0B1C2D3E4F5061728394A5B6C7D8E9FD8
+S3150060BA10B0C1D2E3F405162738495A6B7C8D9EAFC8
+S3150060BA20C0D1E2F30415263748596A7B8C9DAEBFB8
+S3150060BA30D0E1F2031425364758697A8B9CADBECFA8
+S3150060BA40E0F102132435465768798A9BACBDCEDF98
+S3150060BA50F00112233445566778899AABBCCDDEEF88
+S3150060BA6000112233445566778899AABBCCDDEEFF78
+S3150060BA70102132435465768798A9BACBDCEDFE0F68
+S3150060BA802031425364758697A8B9CADBECFD0E1F58
+S3150060BA9030415263748596A7B8C9DAEBFC0D1E2F48
+S3150060BAA0405162738495A6B7C8D9EAFB0C1D2E3F38
+S3150060BAB05061728394A5B6C7D8E9FA0B1C2D3E4F28
+S3150060BAC060718293A4B5C6D7E8F90A1B2C3D4E5F18
+S3150060BAD0708192A3B4C5D6E7F8091A2B3C4D5E6F08
+S3150060BAE08091A2B3C4D5E6F708192A3B4C5D6E7FF8
+S3150060BAF090A1B2C3D4E5F60718293A4B5C6D7E8FE8
+S3150060BB00A0B1C2D3E4F5061728394A5B6C7D8E9FD7
+S3150060BB10B0C1D2E3F405162738495A6B7C8D9EAFC7
+S3150060BB20C0D1E2F30415263748596A7B8C9DAEBFB7
+S3150060BB30D0E1F2031425364758697A8B9CADBECFA7
+S3150060BB40E0F102132435465768798A9BACBDCEDF97
+S3150060BB50F00112233445566778899AABBCCDDEEF87
+S3150060BB6000112233445566778899AABBCCDDEEFF77
+S3150060BB70102132435465768798A9BACBDCEDFE0F67
+S3150060BB802031425364758697A8B9CADBECFD0E1F57
+S3150060BB9030415263748596A7B8C9DAEBFC0D1E2F47
+S3150060BBA0405162738495A6B7C8D9EAFB0C1D2E3F37
+S3150060BBB05061728394A5B6C7D8E9FA0B1C2D3E4F27
+S3150060BBC060718293A4B5C6D7E8F90A1B2C3D4E5F17
+S3150060BBD0708192A3B4C5D6E7F8091A2B3C4D5E6F07
+S3150060BBE08091A2B3C4D5E6F708192A3B4C5D6E7FF7
+S3150060BBF090A1B2C3D4E5F60718293A4B5C6D7E8FE7
+S3150060BC00A0B1C2D3E4F5061728394A5B6C7D8E9FD6
+S3150060BC10B0C1D2E3F405162738495A6B7C8D9EAFC6
+S3150060BC20C0D1E2F30415263748596A7B8C9DAEBFB6
+S3150060BC30D0E1F2031425364758697A8B9CADBECFA6
+S3150060BC40E0F102132435465768798A9BACBDCEDF96
+S3150060BC50F00112233445566778899AABBCCDDEEF86
+S3150060BC6000112233445566778899AABBCCDDEEFF76
+S3150060BC70102132435465768798A9BACBDCEDFE0F66
+S3150060BC802031425364758697A8B9CADBECFD0E1F56
+S3150060BC9030415263748596A7B8C9DAEBFC0D1E2F46
+S3150060BCA0405162738495A6B7C8D9EAFB0C1D2E3F36
+S3150060BCB05061728394A5B6C7D8E9FA0B1C2D3E4F26
+S3150060BCC060718293A4B5C6D7E8F90A1B2C3D4E5F16
+S3150060BCD0708192A3B4C5D6E7F8091A2B3C4D5E6F06
+S3150060BCE08091A2B3C4D5E6F708192A3B4C5D6E7FF6
+S3150060BCF090A1B2C3D4E5F60718293A4B5C6D7E8FE6
+S3150060BD00A0B1C2D3E4F5061728394A5B6C7D8E9FD5
+S3150060BD10B0C1D2E3F405162738495A6B7C8D9EAFC5
+S3150060BD20C0D1E2F30415263748596A7B8C9DAEBFB5
+S3150060BD30D0E1F2031425364758697A8B9CADBECFA5
+S3150060BD40E0F102132435465768798A9BACBDCEDF95
+S3150060BD50F00112233445566778899AABBCCDDEEF85
+S3150060BD6000112233445566778899AABBCCDDEEFF75
+S3150060BD70102132435465768798A9BACBDCEDFE0F65
+S3150060BD802031425364758697A8B9CADBECFD0E1F55
+S3150060BD9030415263748596A7B8C9DAEBFC0D1E2F45
+S3150060BDA0405162738495A6B7C8D9EAFB0C1D2E3F35
+S3150060BDB05061728394A5B6C7D8E9FA0B1C2D3E4F25
+S3150060BDC060718293A4B5C6D7E8F90A1B2C3D4E5F15
+S3150060BDD0708192A3B4C5D6E7F8091A2B3C4D5E6F05
+S3150060BDE08091A2B3C4D5E6F708192A3B4C5D6E7FF5
+S3150060BDF090A1B2C3D4E5F60718293A4B5C6D7E8FE5
+S3150060BE00A0B1C2D3E4F5061728394A5B6C7D8E9FD4
+S3150060BE10B0C1D2E3F405162738495A6B7C8D9EAFC4
+S3150060BE20C0D1E2F30415263748596A7B8C9DAEBFB4
+S3150060BE30D0E1F2031425364758697A8B9CADBECFA4
+S3150060BE40E0F102132435465768798A9BACBDCEDF94
+S3150060BE50F00112233445566778899AABBCCDDEEF84
+S3150060BE6000112233445566778899AABBCCDDEEFF74
+S3150060BE70102132435465768798A9BACBDCEDFE0F64
+S3150060BE802031425364758697A8B9CADBECFD0E1F54
+S3150060BE9030415263748596A7B8C9DAEBFC0D1E2F44
+S3150060BEA0405162738495A6B7C8D9EAFB0C1D2E3F34
+S3150060BEB05061728394A5B6C7D8E9FA0B1C2D3E4F24
+S3150060BEC060718293A4B5C6D7E8F90A1B2C3D4E5F14
+S3150060BED0708192A3B4C5D6E7F8091A2B3C4D5E6F04
+S3150060BEE08091A2B3C4D5E6F708192A3B4C5D6E7FF4
+S3150060BEF090A1B2C3D4E5F60718293A4B5C6D7E8FE4
+S3150060BF00A0B1C2D3E4F5061728394A5B6C7D8E9FD3
+S3150060BF10B0C1D2E3F405162738495A6B7C8D9EAFC3
+S3150060BF20C0D1E2F30415263748596A7B8C9DAEBFB3
+S3150060BF30D0E1F2031425364758697A8B9CADBECFA3
+S3150060BF40E0F102132435465768798A9BACBDCEDF93
+S3150060BF50F00112233445566778899AABBCCDDEEF83
+S3150060BF6000112233445566778899AABBCCDDEEFF73
+S3150060BF70102132435465768798A9BACBDCEDFE0F63
+S3150060BF802031425364758697A8B9CADBECFD0E1F53
+S3150060BF9030415263748596A7B8C9DAEBFC0D1E2F43
+S3150060BFA0405162738495A6B7C8D9EAFB0C1D2E3F33
+S3150060BFB05061728394A5B6C7D8E9FA0B1C2D3E4F23
+S3150060BFC060718293A4B5C6D7E8F90A1B2C3D4E5F13
+S3150060BFD0708192A3B4C5D6E7F8091A2B3C4D5E6F03
+S3150060BFE08091A2B3C4D5E6F708192A3B4C5D6E7FF3
+S3150060BFF090A1B2C3D4E5F60718293A4B5C6D7E8FE3
+S3150060C000A0B1C2D3E4F5061728394A5B6C7D8E9FD2
+S3150060C010B0C1D2E3F405162738495A6B7C8D9EAFC2
+S3150060C020C0D1E2F30415263748596A7B8C9DAEBFB2
+S3150060C030D0E1F2031425364758697A8B9CADBECFA2
+S3150060C040E0F102132435465768798A9BACBDCEDF92
+S3150060C050F00112233445566778899AABBCCDDEEF82
+S3150060C06000112233445566778899AABBCCDDEEFF72
+S3150060C070102132435465768798A9BACBDCEDFE0F62
+S3150060C0802031425364758697A8B9CADBECFD0E1F52
+S3150060C09030415263748596A7B8C9DAEBFC0D1E2F42
+S3150060C0A0405162738495A6B7C8D9EAFB0C1D2E3F32
+S3150060C0B05061728394A5B6C7D8E9FA0B1C2D3E4F22
+S3150060C0C060718293A4B5C6D7E8F90A1B2C3D4E5F12
+S3150060C0D0708192A3B4C5D6E7F8091A2B3C4D5E6F02
+S3150060C0E08091A2B3C4D5E6F708192A3B4C5D6E7FF2
+S3150060C0F090A1B2C3D4E5F60718293A4B5C6D7E8FE2
+S3150060C100A0B1C2D3E4F5061728394A5B6C7D8E9FD1
+S3150060C110B0C1D2E3F405162738495A6B7C8D9EAFC1
+S3150060C120C0D1E2F30415263748596A7B8C9DAEBFB1
+S3150060C130D0E1F2031425364758697A8B9CADBECFA1
+S3150060C140E0F102132435465768798A9BACBDCEDF91
+S3150060C150F00112233445566778899AABBCCDDEEF81
+S3150060C16000112233445566778899AABBCCDDEEFF71
+S3150060C170102132435465768798A9BACBDCEDFE0F61
+S3150060C1802031425364758697A8B9CADBECFD0E1F51
+S3150060C19030415263748596A7B8C9DAEBFC0D1E2F41
+S3150060C1A0405162738495A6B7C8D9EAFB0C1D2E3F31
+S3150060C1B05061728394A5B6C7D8E9FA0B1C2D3E4F21
+S3150060C1C060718293A4B5C6D7E8F90A1B2C3D4E5F11
+S3150060C1D0708192A3B4C5D6E7F8091A2B3C4D5E6F01
+S3150060C1E08091A2B3C4D5E6F708192A3B4C5D6E7FF1
+S3150060C1F090A1B2C3D4E5F60718293A4B5C6D7E8FE1
+S3150060C200A0B1C2D3E4F5061728394A5B6C7D8E9FD0
+S3150060C210B0C1D2E3F405162738495A6B7C8D9EAFC0
+S3150060C220C0D1E2F30415263748596A7B8C9DAEBFB0
+S3150060C230D0E1F2031425364758697A8B9CADBECFA0
+S3150060C240E0F102132435465768798A9BACBDCEDF90
+S3150060C250F00112233445566778899AABBCCDDEEF80
+S3150060C26000112233445566778899AABBCCDDEEFF70
+S3150060C270102132435465768798A9BACBDCEDFE0F60
+S3150060C2802031425364758697A8B9CADBECFD0E1F50
+S3150060C29030415263748596A7B8C9DAEBFC0D1E2F40
+S3150060C2A0405162738495A6B7C8D9EAFB0C1D2E3F30
+S3150060C2B05061728394A5B6C7D8E9FA0B1C2D3E4F20
+S3150060C2C060718293A4B5C6D7E8F90A1B2C3D4E5F10
+S3150060C2D0708192A3B4C5D6E7F8091A2B3C4D5E6F00
+S3150060C2E08091A2B3C4D5E6F708192A3B4C5D6E7FF0
+S3150060C2F090A1B2C3D4E5F60718293A4B5C6D7E8FE0
+S3150060C300A0B1C2D3E4F5061728394A5B6C7D8E9FCF
+S3150060C310B0C1D2E3F405162738495A6B7C8D9EAFBF
+S3150060C320C0D1E2F30415263748596A7B8C9DAEBFAF
+S3150060C330D0E1F2031425364758697A8B9CADBECF9F
+S3150060C340E0F102132435465768798A9BACBDCEDF8F
+S3150060C350F00112233445566778899AABBCCDDEEF7F
+S3150060C36000112233445566778899AABBCCDDEEFF6F
+S3150060C370102132435465768798A9BACBDCEDFE0F5F
+S3150060C3802031425364758697A8B9CADBECFD0E1F4F
+S3150060C39030415263748596A7B8C9DAEBFC0D1E2F3F
+S3150060C3A0405162738495A6B7C8D9EAFB0C1D2E3F2F
+S3150060C3B05061728394A5B6C7D8E9FA0B1C2D3E4F1F
+S3150060C3C060718293A4B5C6D7E8F90A1B2C3D4E5F0F
+S3150060C3D0708192A3B4C5D6E7F8091A2B3C4D5E6FFF
+S3150060C3E08091A2B3C4D5E6F708192A3B4C5D6E7FEF
+S3150060C3F090A1B2C3D4E5F60718293A4B5C6D7E8FDF
+S3150060C400A0B1C2D3E4F5061728394A5B6C7D8E9FCE
+S3150060C410B0C1D2E3F405162738495A6B7C8D9EAFBE
+S3150060C420C0D1E2F30415263748596A7B8C9DAEBFAE
+S3150060C430D0E1F2031425364758697A8B9CADBECF9E
+S3150060C440E0F102132435465768798A9BACBDCEDF8E
+S3150060C450F00112233445566778899AABBCCDDEEF7E
+S3150060C46000112233445566778899AABBCCDDEEFF6E
+S3150060C470102132435465768798A9BACBDCEDFE0F5E
+S3150060C4802031425364758697A8B9CADBECFD0E1F4E
+S3150060C49030415263748596A7B8C9DAEBFC0D1E2F3E
+S3150060C4A0405162738495A6B7C8D9EAFB0C1D2E3F2E
+S3150060C4B05061728394A5B6C7D8E9FA0B1C2D3E4F1E
+S3150060C4C060718293A4B5C6D7E8F90A1B2C3D4E5F0E
+S3150060C4D0708192A3B4C5D6E7F8091A2B3C4D5E6FFE
+S3150060C4E08091A2B3C4D5E6F708192A3B4C5D6E7FEE
+S3150060C4F090A1B2C3D4E5F60718293A4B5C6D7E8FDE
+S3150060C500A0B1C2D3E4F5061728394A5B6C7D8E9FCD
+S3150060C510B0C1D2E3F405162738495A6B7C8D9EAFBD
+S3150060C520C0D1E2F30415263748596A7B8C9DAEBFAD
+S3150060C530D0E1F2031425364758697A8B9CADBECF9D
+S3150060C540E0F102132435465768798A9BACBDCEDF8D
+S3150060C550F00112233445566778899AABBCCDDEEF7D
+S3150060C56000112233445566778899AABBCCDDEEFF6D
+S3150060C570102132435465768798A9BACBDCEDFE0F5D
+S3150060C5802031425364758697A8B9CADBECFD0E1F4D
+S3150060C59030415263748596A7B8C9DAEBFC0D1E2F3D
+S3150060C5A0405162738495A6B7C8D9EAFB0C1D2E3F2D
+S3150060C5B05061728394A5B6C7D8E9FA0B1C2D3E4F1D
+S3150060C5C060718293A4B5C6D7E8F90A1B2C3D4E5F0D
+S3150060C5D0708192A3B4C5D6E7F8091A2B3C4D5E6FFD
+S3150060C5E08091A2B3C4D5E6F708192A3B4C5D6E7FED
+S3150060C5F090A1B2C3D4E5F60718293A4B5C6D7E8FDD
+S3150060C600A0B1C2D3E4F5061728394A5B6C7D8E9FCC
+S3150060C610B0C1D2E3F405162738495A6B7C8D9EAFBC
+S3150060C620C0D1E2F30415263748596A7B8C9DAEBFAC
+S3150060C630D0E1F2031425364758697A8B9CADBECF9C
+S3150060C640E0F102132435465768798A9BACBDCEDF8C
+S3150060C650F00112233445566778899AABBCCDDEEF7C
+S3150060C66000112233445566778899AABBCCDDEEFF6C
+S3150060C670102132435465768798A9BACBDCEDFE0F5C
+S3150060C6802031425364758697A8B9CADBECFD0E1F4C
+S3150060C69030415263748596A7B8C9DAEBFC0D1E2F3C
+S3150060C6A0405162738495A6B7C8D9EAFB0C1D2E3F2C
+S3150060C6B05061728394A5B6C7D8E9FA0B1C2D3E4F1C
+S3150060C6C060718293A4B5C6D7E8F90A1B2C3D4E5F0C
+S3150060C6D0708192A3B4C5D6E7F8091A2B3C4D5E6FFC
+S3150060C6E08091A2B3C4D5E6F708192A3B4C5D6E7FEC
+S3150060C6F090A1B2C3D4E5F60718293A4B5C6D7E8FDC
+S3150060C700A0B1C2D3E4F5061728394A5B6C7D8E9FCB
+S3150060C710B0C1D2E3F405162738495A6B7C8D9EAFBB
+S3150060C720C0D1E2F30415263748596A7B8C9DAEBFAB
+S3150060C730D0E1F2031425364758697A8B9CADBECF9B
+S3150060C740E0F102132435465768798A9BACBDCEDF8B
+S3150060C750F00112233445566778899AABBCCDDEEF7B
+S3150060C76000112233445566778899AABBCCDDEEFF6B
+S3150060C770102132435465768798A9BACBDCEDFE0F5B
+S3150060C7802031425364758697A8B9CADBECFD0E1F4B
+S3150060C79030415263748596A7B8C9DAEBFC0D1E2F3B
+S3150060C7A0405162738495A6B7C8D9EAFB0C1D2E3F2B
+S3150060C7B05061728394A5B6C7D8E9FA0B1C2D3E4F1B
+S3150060C7C060718293A4B5C6D7E8F90A1B2C3D4E5F0B
+S3150060C7D0708192A3B4C5D6E7F8091A2B3C4D5E6FFB
+S3150060C7E08091A2B3C4D5E6F708192A3B4C5D6E7FEB
+S3150060C7F090A1B2C3D4E5F60718293A4B5C6D7E8FDB
+S3150060C800A0B1C2D3E4F5061728394A5B6C7D8E9FCA
+S3150060C810B0C1D2E3F405162738495A6B7C8D9EAFBA
+S3150060C820C0D1E2F30415263748596A7B8C9DAEBFAA
+S3150060C830D0E1F2031425364758697A8B9CADBECF9A
+S3150060C840E0F102132435465768798A9BACBDCEDF8A
+S3150060C850F00112233445566778899AABBCCDDEEF7A
+S3150060C86000112233445566778899AABBCCDDEEFF6A
+S3150060C870102132435465768798A9BACBDCEDFE0F5A
+S3150060C8802031425364758697A8B9CADBECFD0E1F4A
+S3150060C89030415263748596A7B8C9DAEBFC0D1E2F3A
+S3150060C8A0405162738495A6B7C8D9EAFB0C1D2E3F2A
+S3150060C8B05061728394A5B6C7D8E9FA0B1C2D3E4F1A
+S3150060C8C060718293A4B5C6D7E8F90A1B2C3D4E5F0A
+S3150060C8D0708192A3B4C5D6E7F8091A2B3C4D5E6FFA
+S3150060C8E08091A2B3C4D5E6F708192A3B4C5D6E7FEA
+S3150060C8F090A1B2C3D4E5F60718293A4B5C6D7E8FDA
+S3150060C900A0B1C2D3E4F5061728394A5B6C7D8E9FC9
+S3150060C910B0C1D2E3F405162738495A6B7C8D9EAFB9
+S3150060C920C0D1E2F30415263748596A7B8C9DAEBFA9
+S3150060C930D0E1F2031425364758697A8B9CADBECF99
+S3150060C940E0F102132435465768798A9BACBDCEDF89
+S3150060C950F00112233445566778899AABBCCDDEEF79
+S3150060C96000112233445566778899AABBCCDDEEFF69
+S3150060C970102132435465768798A9BACBDCEDFE0F59
+S3150060C9802031425364758697A8B9CADBECFD0E1F49
+S3150060C99030415263748596A7B8C9DAEBFC0D1E2F39
+S3150060C9A0405162738495A6B7C8D9EAFB0C1D2E3F29
+S3150060C9B05061728394A5B6C7D8E9FA0B1C2D3E4F19
+S3150060C9C060718293A4B5C6D7E8F90A1B2C3D4E5F09
+S3150060C9D0708192A3B4C5D6E7F8091A2B3C4D5E6FF9
+S3150060C9E08091A2B3C4D5E6F708192A3B4C5D6E7FE9
+S3150060C9F090A1B2C3D4E5F60718293A4B5C6D7E8FD9
+S3150060CA00A0B1C2D3E4F5061728394A5B6C7D8E9FC8
+S3150060CA10B0C1D2E3F405162738495A6B7C8D9EAFB8
+S3150060CA20C0D1E2F30415263748596A7B8C9DAEBFA8
+S3150060CA30D0E1F2031425364758697A8B9CADBECF98
+S3150060CA40E0F102132435465768798A9BACBDCEDF88
+S3150060CA50F00112233445566778899AABBCCDDEEF78
+S3150060CA6000112233445566778899AABBCCDDEEFF68
+S3150060CA70102132435465768798A9BACBDCEDFE0F58
+S3150060CA802031425364758697A8B9CADBECFD0E1F48
+S3150060CA9030415263748596A7B8C9DAEBFC0D1E2F38
+S3150060CAA0405162738495A6B7C8D9EAFB0C1D2E3F28
+S3150060CAB05061728394A5B6C7D8E9FA0B1C2D3E4F18
+S3150060CAC060718293A4B5C6D7E8F90A1B2C3D4E5F08
+S3150060CAD0708192A3B4C5D6E7F8091A2B3C4D5E6FF8
+S3150060CAE08091A2B3C4D5E6F708192A3B4C5D6E7FE8
+S3150060CAF090A1B2C3D4E5F60718293A4B5C6D7E8FD8
+S3150060CB00A0B1C2D3E4F5061728394A5B6C7D8E9FC7
+S3150060CB10B0C1D2E3F405162738495A6B7C8D9EAFB7
+S3150060CB20C0D1E2F30415263748596A7B8C9DAEBFA7
+S3150060CB30D0E1F2031425364758697A8B9CADBECF97
+S3150060CB40E0F102132435465768798A9BACBDCEDF87
+S3150060CB50F00112233445566778899AABBCCDDEEF77
+S3150060CB6000112233445566778899AABBCCDDEEFF67
+S3150060CB70102132435465768798A9BACBDCEDFE0F57
+S3150060CB802031425364758697A8B9CADBECFD0E1F47
+S3150060CB9030415263748596A7B8C9DAEBFC0D1E2F37
+S3150060CBA0405162738495A6B7C8D9EAFB0C1D2E3F27
+S3150060CBB05061728394A5B6C7D8E9FA0B1C2D3E4F17
+S3150060CBC060718293A4B5C6D7E8F90A1B2C3D4E5F07
+S3150060CBD0708192A3B4C5D6E7F8091A2B3C4D5E6FF7
+S3150060CBE08091A2B3C4D5E6F708192A3B4C5D6E7FE7
+S3150060CBF090A1B2C3D4E5F60718293A4B5C6D7E8FD7
+S3150060CC00A0B1C2D3E4F5061728394A5B6C7D8E9FC6
+S3150060CC10B0C1D2E3F405162738495A6B7C8D9EAFB6
+S3150060CC20C0D1E2F30415263748596A7B8C9DAEBFA6
+S3150060CC30D0E1F2031425364758697A8B9CADBECF96
+S3150060CC40E0F102132435465768798A9BACBDCEDF86
+S3150060CC50F00112233445566778899AABBCCDDEEF76
+S3150060CC6000112233445566778899AABBCCDDEEFF66
+S3150060CC70102132435465768798A9BACBDCEDFE0F56
+S3150060CC802031425364758697A8B9CADBECFD0E1F46
+S3150060CC9030415263748596A7B8C9DAEBFC0D1E2F36
+S3150060CCA0405162738495A6B7C8D9EAFB0C1D2E3F26
+S3150060CCB05061728394A5B6C7D8E9FA0B1C2D3E4F16
+S3150060CCC060718293A4B5C6D7E8F90A1B2C3D4E5F06
+S3150060CCD0708192A3B4C5D6E7F8091A2B3C4D5E6FF6
+S3150060CCE08091A2B3C4D5E6F708192A3B4C5D6E7FE6
+S3150060CCF090A1B2C3D4E5F60718293A4B5C6D7E8FD6
+S3150060CD00A0B1C2D3E4F5061728394A5B6C7D8E9FC5
+S3150060CD10B0C1D2E3F405162738495A6B7C8D9EAFB5
+S3150060CD20C0D1E2F30415263748596A7B8C9DAEBFA5
+S3150060CD30D0E1F2031425364758697A8B9CADBECF95
+S3150060CD40E0F102132435465768798A9BACBDCEDF85
+S3150060CD50F00112233445566778899AABBCCDDEEF75
+S3150060CD6000112233445566778899AABBCCDDEEFF65
+S3150060CD70102132435465768798A9BACBDCEDFE0F55
+S3150060CD802031425364758697A8B9CADBECFD0E1F45
+S3150060CD9030415263748596A7B8C9DAEBFC0D1E2F35
+S3150060CDA0405162738495A6B7C8D9EAFB0C1D2E3F25
+S3150060CDB05061728394A5B6C7D8E9FA0B1C2D3E4F15
+S3150060CDC060718293A4B5C6D7E8F90A1B2C3D4E5F05
+S3150060CDD0708192A3B4C5D6E7F8091A2B3C4D5E6FF5
+S3150060CDE08091A2B3C4D5E6F708192A3B4C5D6E7FE5
+S3150060CDF090A1B2C3D4E5F60718293A4B5C6D7E8FD5
+S3150060CE00A0B1C2D3E4F5061728394A5B6C7D8E9FC4
+S3150060CE10B0C1D2E3F405162738495A6B7C8D9EAFB4
+S3150060CE20C0D1E2F30415263748596A7B8C9DAEBFA4
+S3150060CE30D0E1F2031425364758697A8B9CADBECF94
+S3150060CE40E0F102132435465768798A9BACBDCEDF84
+S3150060CE50F00112233445566778899AABBCCDDEEF74
+S3150060CE6000112233445566778899AABBCCDDEEFF64
+S3150060CE70102132435465768798A9BACBDCEDFE0F54
+S3150060CE802031425364758697A8B9CADBECFD0E1F44
+S3150060CE9030415263748596A7B8C9DAEBFC0D1E2F34
+S3150060CEA0405162738495A6B7C8D9EAFB0C1D2E3F24
+S3150060CEB05061728394A5B6C7D8E9FA0B1C2D3E4F14
+S3150060CEC060718293A4B5C6D7E8F90A1B2C3D4E5F04
+S3150060CED0708192A3B4C5D6E7F8091A2B3C4D5E6FF4
+S3150060CEE08091A2B3C4D5E6F708192A3B4C5D6E7FE4
+S3150060CEF090A1B2C3D4E5F60718293A4B5C6D7E8FD4
+S3150060CF00A0B1C2D3E4F5061728394A5B6C7D8E9FC3
+S3150060CF10B0C1D2E3F405162738495A6B7C8D9EAFB3
+S3150060CF20C0D1E2F30415263748596A7B8C9DAEBFA3
+S3150060CF30D0E1F2031425364758697A8B9CADBECF93
+S3150060CF40E0F102132435465768798A9BACBDCEDF83
+S3150060CF50F00112233445566778899AABBCCDDEEF73
+S3150060CF6000112233445566778899AABBCCDDEEFF63
+S3150060CF70102132435465768798A9BACBDCEDFE0F53
+S3150060CF802031425364758697A8B9CADBECFD0E1F43
+S3150060CF9030415263748596A7B8C9DAEBFC0D1E2F33
+S3150060CFA0405162738495A6B7C8D9EAFB0C1D2E3F23
+S3150060CFB05061728394A5B6C7D8E9FA0B1C2D3E4F13
+S3150060CFC060718293A4B5C6D7E8F90A1B2C3D4E5F03
+S3150060CFD0708192A3B4C5D6E7F8091A2B3C4D5E6FF3
+S3150060CFE08091A2B3C4D5E6F708192A3B4C5D6E7FE3
+S3150060CFF090A1B2C3D4E5F60718293A4B5C6D7E8FD3
+S3150060D000A0B1C2D3E4F5061728394A5B6C7D8E9FC2
+S3150060D010B0C1D2E3F405162738495A6B7C8D9EAFB2
+S3150060D020C0D1E2F30415263748596A7B8C9DAEBFA2
+S3150060D030D0E1F2031425364758697A8B9CADBECF92
+S3150060D040E0F102132435465768798A9BACBDCEDF82
+S3150060D050F00112233445566778899AABBCCDDEEF72
+S3150060D06000112233445566778899AABBCCDDEEFF62
+S3150060D070102132435465768798A9BACBDCEDFE0F52
+S3150060D0802031425364758697A8B9CADBECFD0E1F42
+S3150060D09030415263748596A7B8C9DAEBFC0D1E2F32
+S3150060D0A0405162738495A6B7C8D9EAFB0C1D2E3F22
+S3150060D0B05061728394A5B6C7D8E9FA0B1C2D3E4F12
+S3150060D0C060718293A4B5C6D7E8F90A1B2C3D4E5F02
+S3150060D0D0708192A3B4C5D6E7F8091A2B3C4D5E6FF2
+S3150060D0E08091A2B3C4D5E6F708192A3B4C5D6E7FE2
+S3150060D0F090A1B2C3D4E5F60718293A4B5C6D7E8FD2
+S3150060D100A0B1C2D3E4F5061728394A5B6C7D8E9FC1
+S3150060D110B0C1D2E3F405162738495A6B7C8D9EAFB1
+S3150060D120C0D1E2F30415263748596A7B8C9DAEBFA1
+S3150060D130D0E1F2031425364758697A8B9CADBECF91
+S3150060D140E0F102132435465768798A9BACBDCEDF81
+S3150060D150F00112233445566778899AABBCCDDEEF71
+S3150060D16000112233445566778899AABBCCDDEEFF61
+S3150060D170102132435465768798A9BACBDCEDFE0F51
+S3150060D1802031425364758697A8B9CADBECFD0E1F41
+S3150060D19030415263748596A7B8C9DAEBFC0D1E2F31
+S3150060D1A0405162738495A6B7C8D9EAFB0C1D2E3F21
+S3150060D1B05061728394A5B6C7D8E9FA0B1C2D3E4F11
+S3150060D1C060718293A4B5C6D7E8F90A1B2C3D4E5F01
+S3150060D1D0708192A3B4C5D6E7F8091A2B3C4D5E6FF1
+S3150060D1E08091A2B3C4D5E6F708192A3B4C5D6E7FE1
+S3150060D1F090A1B2C3D4E5F60718293A4B5C6D7E8FD1
+S3150060D200A0B1C2D3E4F5061728394A5B6C7D8E9FC0
+S3150060D210B0C1D2E3F405162738495A6B7C8D9EAFB0
+S3150060D220C0D1E2F30415263748596A7B8C9DAEBFA0
+S3150060D230D0E1F2031425364758697A8B9CADBECF90
+S3150060D240E0F102132435465768798A9BACBDCEDF80
+S3150060D250F00112233445566778899AABBCCDDEEF70
+S3150060D26000112233445566778899AABBCCDDEEFF60
+S3150060D270102132435465768798A9BACBDCEDFE0F50
+S3150060D2802031425364758697A8B9CADBECFD0E1F40
+S3150060D29030415263748596A7B8C9DAEBFC0D1E2F30
+S3150060D2A0405162738495A6B7C8D9EAFB0C1D2E3F20
+S3150060D2B05061728394A5B6C7D8E9FA0B1C2D3E4F10
+S3150060D2C060718293A4B5C6D7E8F90A1B2C3D4E5F00
+S3150060D2D0708192A3B4C5D6E7F8091A2B3C4D5E6FF0
+S3150060D2E08091A2B3C4D5E6F708192A3B4C5D6E7FE0
+S3150060D2F090A1B2C3D4E5F60718293A4B5C6D7E8FD0
+S3150060D300A0B1C2D3E4F5061728394A5B6C7D8E9FBF
+S3150060D310B0C1D2E3F405162738495A6B7C8D9EAFAF
+S3150060D320C0D1E2F30415263748596A7B8C9DAEBF9F
+S3150060D330D0E1F2031425364758697A8B9CADBECF8F
+S3150060D340E0F102132435465768798A9BACBDCEDF7F
+S3150060D350F00112233445566778899AABBCCDDEEF6F
+S3150060D36000112233445566778899AABBCCDDEEFF5F
+S3150060D370102132435465768798A9BACBDCEDFE0F4F
+S3150060D3802031425364758697A8B9CADBECFD0E1F3F
+S3150060D39030415263748596A7B8C9DAEBFC0D1E2F2F
+S3150060D3A0405162738495A6B7C8D9EAFB0C1D2E3F1F
+S3150060D3B05061728394A5B6C7D8E9FA0B1C2D3E4F0F
+S3150060D3C060718293A4B5C6D7E8F90A1B2C3D4E5FFF
+S3150060D3D0708192A3B4C5D6E7F8091A2B3C4D5E6FEF
+S3150060D3E08091A2B3C4D5E6F708192A3B4C5D6E7FDF
+S3150060D3F090A1B2C3D4E5F60718293A4B5C6D7E8FCF
+S3150060D400A0B1C2D3E4F5061728394A5B6C7D8E9FBE
+S3150060D410B0C1D2E3F405162738495A6B7C8D9EAFAE
+S3150060D420C0D1E2F30415263748596A7B8C9DAEBF9E
+S3150060D430D0E1F2031425364758697A8B9CADBECF8E
+S3150060D440E0F102132435465768798A9BACBDCEDF7E
+S3150060D450F00112233445566778899AABBCCDDEEF6E
+S3150060D46000112233445566778899AABBCCDDEEFF5E
+S3150060D470102132435465768798A9BACBDCEDFE0F4E
+S3150060D4802031425364758697A8B9CADBECFD0E1F3E
+S3150060D49030415263748596A7B8C9DAEBFC0D1E2F2E
+S3150060D4A0405162738495A6B7C8D9EAFB0C1D2E3F1E
+S3150060D4B05061728394A5B6C7D8E9FA0B1C2D3E4F0E
+S3150060D4C060718293A4B5C6D7E8F90A1B2C3D4E5FFE
+S3150060D4D0708192A3B4C5D6E7F8091A2B3C4D5E6FEE
+S3150060D4E08091A2B3C4D5E6F708192A3B4C5D6E7FDE
+S3150060D4F090A1B2C3D4E5F60718293A4B5C6D7E8FCE
+S3150060D500A0B1C2D3E4F5061728394A5B6C7D8E9FBD
+S3150060D510B0C1D2E3F405162738495A6B7C8D9EAFAD
+S3150060D520C0D1E2F30415263748596A7B8C9DAEBF9D
+S3150060D530D0E1F2031425364758697A8B9CADBECF8D
+S3150060D540E0F102132435465768798A9BACBDCEDF7D
+S3150060D550F00112233445566778899AABBCCDDEEF6D
+S3150060D56000112233445566778899AABBCCDDEEFF5D
+S3150060D570102132435465768798A9BACBDCEDFE0F4D
+S3150060D5802031425364758697A8B9CADBECFD0E1F3D
+S3150060D59030415263748596A7B8C9DAEBFC0D1E2F2D
+S3150060D5A0405162738495A6B7C8D9EAFB0C1D2E3F1D
+S3150060D5B05061728394A5B6C7D8E9FA0B1C2D3E4F0D
+S3150060D5C060718293A4B5C6D7E8F90A1B2C3D4E5FFD
+S3150060D5D0708192A3B4C5D6E7F8091A2B3C4D5E6FED
+S3150060D5E08091A2B3C4D5E6F708192A3B4C5D6E7FDD
+S3150060D5F090A1B2C3D4E5F60718293A4B5C6D7E8FCD
+S3150060D600A0B1C2D3E4F5061728394A5B6C7D8E9FBC
+S3150060D610B0C1D2E3F405162738495A6B7C8D9EAFAC
+S3150060D620C0D1E2F30415263748596A7B8C9DAEBF9C
+S3150060D630D0E1F2031425364758697A8B9CADBECF8C
+S3150060D640E0F102132435465768798A9BACBDCEDF7C
+S3150060D650F00112233445566778899AABBCCDDEEF6C
+S3150060D66000112233445566778899AABBCCDDEEFF5C
+S3150060D670102132435465768798A9BACBDCEDFE0F4C
+S3150060D6802031425364758697A8B9CADBECFD0E1F3C
+S3150060D69030415263748596A7B8C9DAEBFC0D1E2F2C
+S3150060D6A0405162738495A6B7C8D9EAFB0C1D2E3F1C
+S3150060D6B05061728394A5B6C7D8E9FA0B1C2D3E4F0C
+S3150060D6C060718293A4B5C6D7E8F90A1B2C3D4E5FFC
+S3150060D6D0708192A3B4C5D6E7F8091A2B3C4D5E6FEC
+S3150060D6E08091A2B3C4D5E6F708192A3B4C5D6E7FDC
+S3150060D6F090A1B2C3D4E5F60718293A4B5C6D7E8FCC
+S3150060D700A0B1C2D3E4F5061728394A5B6C7D8E9FBB
+S3150060D710B0C1D2E3F405162738495A6B7C8D9EAFAB
+S3150060D720C0D1E2F30415263748596A7B8C9DAEBF9B
+S3150060D730D0E1F2031425364758697A8B9CADBECF8B
+S3150060D740E0F102132435465768798A9BACBDCEDF7B
+S3150060D750F00112233445566778899AABBCCDDEEF6B
+S3150060D76000112233445566778899AABBCCDDEEFF5B
+S3150060D770102132435465768798A9BACBDCEDFE0F4B
+S3150060D7802031425364758697A8B9CADBECFD0E1F3B
+S3150060D79030415263748596A7B8C9DAEBFC0D1E2F2B
+S3150060D7A0405162738495A6B7C8D9EAFB0C1D2E3F1B
+S3150060D7B05061728394A5B6C7D8E9FA0B1C2D3E4F0B
+S3150060D7C060718293A4B5C6D7E8F90A1B2C3D4E5FFB
+S3150060D7D0708192A3B4C5D6E7F8091A2B3C4D5E6FEB
+S3150060D7E08091A2B3C4D5E6F708192A3B4C5D6E7FDB
+S3150060D7F090A1B2C3D4E5F60718293A4B5C6D7E8FCB
+S3150060D800A0B1C2D3E4F5061728394A5B6C7D8E9FBA
+S3150060D810B0C1D2E3F405162738495A6B7C8D9EAFAA
+S3150060D820C0D1E2F30415263748596A7B8C9DAEBF9A
+S3150060D830D0E1F2031425364758697A8B9CADBECF8A
+S3150060D840E0F102132435465768798A9BACBDCEDF7A
+S3150060D850F00112233445566778899AABBCCDDEEF6A
+S3150060D86000112233445566778899AABBCCDDEEFF5A
+S3150060D870102132435465768798A9BACBDCEDFE0F4A
+S3150060D8802031425364758697A8B9CADBECFD0E1F3A
+S3150060D89030415263748596A7B8C9DAEBFC0D1E2F2A
+S3150060D8A0405162738495A6B7C8D9EAFB0C1D2E3F1A
+S3150060D8B05061728394A5B6C7D8E9FA0B1C2D3E4F0A
+S3150060D8C060718293A4B5C6D7E8F90A1B2C3D4E5FFA
+S3150060D8D0708192A3B4C5D6E7F8091A2B3C4D5E6FEA
+S3150060D8E08091A2B3C4D5E6F708192A3B4C5D6E7FDA
+S3150060D8F090A1B2C3D4E5F60718293A4B5C6D7E8FCA
+S3150060D900A0B1C2D3E4F5061728394A5B6C7D8E9FB9
+S3150060D910B0C1D2E3F405162738495A6B7C8D9EAFA9
+S3150060D920C0D1E2F30415263748596A7B8C9DAEBF99
+S3150060D930D0E1F2031425364758697A8B9CADBECF89
+S3150060D940E0F102132435465768798A9BACBDCEDF79
+S3150060D950F00112233445566778899AABBCCDDEEF69
+S3150060D96000112233445566778899AABBCCDDEEFF59
+S3150060D970102132435465768798A9BACBDCEDFE0F49
+S3150060D9802031425364758697A8B9CADBECFD0E1F39
+S3150060D99030415263748596A7B8C9DAEBFC0D1E2F29
+S3150060D9A0405162738495A6B7C8D9EAFB0C1D2E3F19
+S3150060D9B05061728394A5B6C7D8E9FA0B1C2D3E4F09
+S3150060D9C060718293A4B5C6D7E8F90A1B2C3D4E5FF9
+S3150060D9D0708192A3B4C5D6E7F8091A2B3C4D5E6FE9
+S3150060D9E08091A2B3C4D5E6F708192A3B4C5D6E7FD9
+S3150060D9F090A1B2C3D4E5F60718293A4B5C6D7E8FC9
+S3150060DA00A0B1C2D3E4F5061728394A5B6C7D8E9FB8
+S3150060DA10B0C1D2E3F405162738495A6B7C8D9EAFA8
+S3150060DA20C0D1E2F30415263748596A7B8C9DAEBF98
+S3150060DA30D0E1F2031425364758697A8B9CADBECF88
+S3150060DA40E0F102132435465768798A9BACBDCEDF78
+S3150060DA50F00112233445566778899AABBCCDDEEF68
+S3150060DA6000112233445566778899AABBCCDDEEFF58
+S3150060DA70102132435465768798A9BACBDCEDFE0F48
+S3150060DA802031425364758697A8B9CADBECFD0E1F38
+S3150060DA9030415263748596A7B8C9DAEBFC0D1E2F28
+S3150060DAA0405162738495A6B7C8D9EAFB0C1D2E3F18
+S3150060DAB05061728394A5B6C7D8E9FA0B1C2D3E4F08
+S3150060DAC060718293A4B5C6D7E8F90A1B2C3D4E5FF8
+S3150060DAD0708192A3B4C5D6E7F8091A2B3C4D5E6FE8
+S3150060DAE08091A2B3C4D5E6F708192A3B4C5D6E7FD8
+S3150060DAF090A1B2C3D4E5F60718293A4B5C6D7E8FC8
+S3150060DB00A0B1C2D3E4F5061728394A5B6C7D8E9FB7
+S3150060DB10B0C1D2E3F405162738495A6B7C8D9EAFA7
+S3150060DB20C0D1E2F30415263748596A7B8C9DAEBF97
+S3150060DB30D0E1F2031425364758697A8B9CADBECF87
+S3150060DB40E0F102132435465768798A9BACBDCEDF77
+S3150060DB50F00112233445566778899AABBCCDDEEF67
+S3150060DB6000112233445566778899AABBCCDDEEFF57
+S3150060DB70102132435465768798A9BACBDCEDFE0F47
+S3150060DB802031425364758697A8B9CADBECFD0E1F37
+S3150060DB9030415263748596A7B8C9DAEBFC0D1E2F27
+S3150060DBA0405162738495A6B7C8D9EAFB0C1D2E3F17
+S3150060DBB05061728394A5B6C7D8E9FA0B1C2D3E4F07
+S3150060DBC060718293A4B5C6D7E8F90A1B2C3D4E5FF7
+S3150060DBD0708192A3B4C5D6E7F8091A2B3C4D5E6FE7
+S3150060DBE08091A2B3C4D5E6F708192A3B4C5D6E7FD7
+S3150060DBF090A1B2C3D4E5F60718293A4B5C6D7E8FC7
+S3150060DC00A0B1C2D3E4F5061728394A5B6C7D8E9FB6
+S3150060DC10B0C1D2E3F405162738495A6B7C8D9EAFA6
+S3150060DC20C0D1E2F30415263748596A7B8C9DAEBF96
+S3150060DC30D0E1F2031425364758697A8B9CADBECF86
+S3150060DC40E0F102132435465768798A9BACBDCEDF76
+S3150060DC50F00112233445566778899AABBCCDDEEF66
+S3150060DC6000112233445566778899AABBCCDDEEFF56
+S3150060DC70102132435465768798A9BACBDCEDFE0F46
+S3150060DC802031425364758697A8B9CADBECFD0E1F36
+S3150060DC9030415263748596A7B8C9DAEBFC0D1E2F26
+S3150060DCA0405162738495A6B7C8D9EAFB0C1D2E3F16
+S3150060DCB05061728394A5B6C7D8E9FA0B1C2D3E4F06
+S3150060DCC060718293A4B5C6D7E8F90A1B2C3D4E5FF6
+S3150060DCD0708192A3B4C5D6E7F8091A2B3C4D5E6FE6
+S3150060DCE08091A2B3C4D5E6F708192A3B4C5D6E7FD6
+S3150060DCF090A1B2C3D4E5F60718293A4B5C6D7E8FC6
+S3150060DD00A0B1C2D3E4F5061728394A5B6C7D8E9FB5
+S3150060DD10B0C1D2E3F405162738495A6B7C8D9EAFA5
+S3150060DD20C0D1E2F30415263748596A7B8C9DAEBF95
+S3150060DD30D0E1F2031425364758697A8B9CADBECF85
+S3150060DD40E0F102132435465768798A9BACBDCEDF75
+S3150060DD50F00112233445566778899AABBCCDDEEF65
+S3150060DD6000112233445566778899AABBCCDDEEFF55
+S3150060DD70102132435465768798A9BACBDCEDFE0F45
+S3150060DD802031425364758697A8B9CADBECFD0E1F35
+S3150060DD9030415263748596A7B8C9DAEBFC0D1E2F25
+S3150060DDA0405162738495A6B7C8D9EAFB0C1D2E3F15
+S3150060DDB05061728394A5B6C7D8E9FA0B1C2D3E4F05
+S3150060DDC060718293A4B5C6D7E8F90A1B2C3D4E5FF5
+S3150060DDD0708192A3B4C5D6E7F8091A2B3C4D5E6FE5
+S3150060DDE08091A2B3C4D5E6F708192A3B4C5D6E7FD5
+S3150060DDF090A1B2C3D4E5F60718293A4B5C6D7E8FC5
+S3150060DE00A0B1C2D3E4F5061728394A5B6C7D8E9FB4
+S3150060DE10B0C1D2E3F405162738495A6B7C8D9EAFA4
+S3150060DE20C0D1E2F30415263748596A7B8C9DAEBF94
+S3150060DE30D0E1F2031425364758697A8B9CADBECF84
+S3150060DE40E0F102132435465768798A9BACBDCEDF74
+S3150060DE50F00112233445566778899AABBCCDDEEF64
+S3150060DE6000112233445566778899AABBCCDDEEFF54
+S3150060DE70102132435465768798A9BACBDCEDFE0F44
+S3150060DE802031425364758697A8B9CADBECFD0E1F34
+S3150060DE9030415263748596A7B8C9DAEBFC0D1E2F24
+S3150060DEA0405162738495A6B7C8D9EAFB0C1D2E3F14
+S3150060DEB05061728394A5B6C7D8E9FA0B1C2D3E4F04
+S3150060DEC060718293A4B5C6D7E8F90A1B2C3D4E5FF4
+S3150060DED0708192A3B4C5D6E7F8091A2B3C4D5E6FE4
+S3150060DEE08091A2B3C4D5E6F708192A3B4C5D6E7FD4
+S3150060DEF090A1B2C3D4E5F60718293A4B5C6D7E8FC4
+S3150060DF00A0B1C2D3E4F5061728394A5B6C7D8E9FB3
+S3150060DF10B0C1D2E3F405162738495A6B7C8D9EAFA3
+S3150060DF20C0D1E2F30415263748596A7B8C9DAEBF93
+S3150060DF30D0E1F2031425364758697A8B9CADBECF83
+S3150060DF40E0F102132435465768798A9BACBDCEDF73
+S3150060DF50F00112233445566778899AABBCCDDEEF63
+S3150060DF6000112233445566778899AABBCCDDEEFF53
+S3150060DF70102132435465768798A9BACBDCEDFE0F43
+S3150060DF802031425364758697A8B9CADBECFD0E1F33
+S3150060DF9030415263748596A7B8C9DAEBFC0D1E2F23
+S3150060DFA0405162738495A6B7C8D9EAFB0C1D2E3F13
+S3150060DFB05061728394A5B6C7D8E9FA0B1C2D3E4F03
+S3150060DFC060718293A4B5C6D7E8F90A1B2C3D4E5FF3
+S3150060DFD0708192A3B4C5D6E7F8091A2B3C4D5E6FE3
+S3150060DFE08091A2B3C4D5E6F708192A3B4C5D6E7FD3
+S3150060DFF090A1B2C3D4E5F60718293A4B5C6D7E8FC3
+S3150060E000A0B1C2D3E4F5061728394A5B6C7D8E9FB2
+S3150060E010B0C1D2E3F405162738495A6B7C8D9EAFA2
+S3150060E020C0D1E2F30415263748596A7B8C9DAEBF92
+S3150060E030D0E1F2031425364758697A8B9CADBECF82
+S3150060E040E0F102132435465768798A9BACBDCEDF72
+S3150060E050F00112233445566778899AABBCCDDEEF62
+S3150060E06000112233445566778899AABBCCDDEEFF52
+S3150060E070102132435465768798A9BACBDCEDFE0F42
+S3150060E0802031425364758697A8B9CADBECFD0E1F32
+S3150060E09030415263748596A7B8C9DAEBFC0D1E2F22
+S3150060E0A0405162738495A6B7C8D9EAFB0C1D2E3F12
+S3150060E0B05061728394A5B6C7D8E9FA0B1C2D3E4F02
+S3150060E0C060718293A4B5C6D7E8F90A1B2C3D4E5FF2
+S3150060E0D0708192A3B4C5D6E7F8091A2B3C4D5E6FE2
+S3150060E0E08091A2B3C4D5E6F708192A3B4C5D6E7FD2
+S3150060E0F090A1B2C3D4E5F60718293A4B5C6D7E8FC2
+S3150060E100A0B1C2D3E4F5061728394A5B6C7D8E9FB1
+S3150060E110B0C1D2E3F405162738495A6B7C8D9EAFA1
+S3150060E120C0D1E2F30415263748596A7B8C9DAEBF91
+S3150060E130D0E1F2031425364758697A8B9CADBECF81
+S3150060E140E0F102132435465768798A9BACBDCEDF71
+S3150060E150F00112233445566778899AABBCCDDEEF61
+S3150060E16000112233445566778899AABBCCDDEEFF51
+S3150060E170102132435465768798A9BACBDCEDFE0F41
+S3150060E1802031425364758697A8B9CADBECFD0E1F31
+S3150060E19030415263748596A7B8C9DAEBFC0D1E2F21
+S3150060E1A0405162738495A6B7C8D9EAFB0C1D2E3F11
+S3150060E1B05061728394A5B6C7D8E9FA0B1C2D3E4F01
+S3150060E1C060718293A4B5C6D7E8F90A1B2C3D4E5FF1
+S3150060E1D0708192A3B4C5D6E7F8091A2B3C4D5E6FE1
+S3150060E1E08091A2B3C4D5E6F708192A3B4C5D6E7FD1
+S3150060E1F090A1B2C3D4E5F60718293A4B5C6D7E8FC1
+S3150060E200A0B1C2D3E4F5061728394A5B6C7D8E9FB0
+S3150060E210B0C1D2E3F405162738495A6B7C8D9EAFA0
+S3150060E220C0D1E2F30415263748596A7B8C9DAEBF90
+S3150060E230D0E1F2031425364758697A8B9CADBECF80
+S3150060E240E0F102132435465768798A9BACBDCEDF70
+S3150060E250F00112233445566778899AABBCCDDEEF60
+S3150060E26000112233445566778899AABBCCDDEEFF50
+S3150060E270102132435465768798A9BACBDCEDFE0F40
+S3150060E2802031425364758697A8B9CADBECFD0E1F30
+S3150060E29030415263748596A7B8C9DAEBFC0D1E2F20
+S3150060E2A0405162738495A6B7C8D9EAFB0C1D2E3F10
+S3150060E2B05061728394A5B6C7D8E9FA0B1C2D3E4F00
+S3150060E2C060718293A4B5C6D7E8F90A1B2C3D4E5FF0
+S3150060E2D0708192A3B4C5D6E7F8091A2B3C4D5E6FE0
+S3150060E2E08091A2B3C4D5E6F708192A3B4C5D6E7FD0
+S3150060E2F090A1B2C3D4E5F60718293A4B5C6D7E8FC0
+S3150060E300A0B1C2D3E4F5061728394A5B6C7D8E9FAF
+S3150060E310B0C1D2E3F405162738495A6B7C8D9EAF9F
+S3150060E320C0D1E2F30415263748596A7B8C9DAEBF8F
+S3150060E330D0E1F2031425364758697A8B9CADBECF7F
+S3150060E340E0F102132435465768798A9BACBDCEDF6F
+S3150060E350F00112233445566778899AABBCCDDEEF5F
+S3150060E36000112233445566778899AABBCCDDEEFF4F
+S3150060E370102132435465768798A9BACBDCEDFE0F3F
+S3150060E3802031425364758697A8B9CADBECFD0E1F2F
+S3150060E39030415263748596A7B8C9DAEBFC0D1E2F1F
+S3150060E3A0405162738495A6B7C8D9EAFB0C1D2E3F0F
+S3150060E3B05061728394A5B6C7D8E9FA0B1C2D3E4FFF
+S3150060E3C060718293A4B5C6D7E8F90A1B2C3D4E5FEF
+S3150060E3D0708192A3B4C5D6E7F8091A2B3C4D5E6FDF
+S3150060E3E08091A2B3C4D5E6F708192A3B4C5D6E7FCF
+S3150060E3F090A1B2C3D4E5F60718293A4B5C6D7E8FBF
+S3150060E400A0B1C2D3E4F5061728394A5B6C7D8E9FAE
+S3150060E410B0C1D2E3F405162738495A6B7C8D9EAF9E
+S3150060E420C0D1E2F30415263748596A7B8C9DAEBF8E
+S3150060E430D0E1F2031425364758697A8B9CADBECF7E
+S3150060E440E0F102132435465768798A9BACBDCEDF6E
+S3150060E450F00112233445566778899AABBCCDDEEF5E
+S3150060E46000112233445566778899AABBCCDDEEFF4E
+S3150060E470102132435465768798A9BACBDCEDFE0F3E
+S3150060E4802031425364758697A8B9CADBECFD0E1F2E
+S3150060E49030415263748596A7B8C9DAEBFC0D1E2F1E
+S3150060E4A0405162738495A6B7C8D9EAFB0C1D2E3F0E
+S3150060E4B05061728394A5B6C7D8E9FA0B1C2D3E4FFE
+S3150060E4C060718293A4B5C6D7E8F90A1B2C3D4E5FEE
+S3150060E4D0708192A3B4C5D6E7F8091A2B3C4D5E6FDE
+S3150060E4E08091A2B3C4D5E6F708192A3B4C5D6E7FCE
+S3150060E4F090A1B2C3D4E5F60718293A4B5C6D7E8FBE
+S3150060E500A0B1C2D3E4F5061728394A5B6C7D8E9FAD
+S3150060E510B0C1D2E3F405162738495A6B7C8D9EAF9D
+S3150060E520C0D1E2F30415263748596A7B8C9DAEBF8D
+S3150060E530D0E1F2031425364758697A8B9CADBECF7D
+S3150060E540E0F102132435465768798A9BACBDCEDF6D
+S3150060E550F00112233445566778899AABBCCDDEEF5D
+S3150060E56000112233445566778899AABBCCDDEEFF4D
+S3150060E570102132435465768798A9BACBDCEDFE0F3D
+S3150060E5802031425364758697A8B9CADBECFD0E1F2D
+S3150060E59030415263748596A7B8C9DAEBFC0D1E2F1D
+S3150060E5A0405162738495A6B7C8D9EAFB0C1D2E3F0D
+S3150060E5B05061728394A5B6C7D8E9FA0B1C2D3E4FFD
+S3150060E5C060718293A4B5C6D7E8F90A1B2C3D4E5FED
+S3150060E5D0708192A3B4C5D6E7F8091A2B3C4D5E6FDD
+S3150060E5E08091A2B3C4D5E6F708192A3B4C5D6E7FCD
+S3150060E5F090A1B2C3D4E5F60718293A4B5C6D7E8FBD
+S3150060E600A0B1C2D3E4F5061728394A5B6C7D8E9FAC
+S3150060E610B0C1D2E3F405162738495A6B7C8D9EAF9C
+S3150060E620C0D1E2F30415263748596A7B8C9DAEBF8C
+S3150060E630D0E1F2031425364758697A8B9CADBECF7C
+S3150060E640E0F102132435465768798A9BACBDCEDF6C
+S3150060E650F00112233445566778899AABBCCDDEEF5C
+S3150060E66000112233445566778899AABBCCDDEEFF4C
+S3150060E670102132435465768798A9BACBDCEDFE0F3C
+S3150060E6802031425364758697A8B9CADBECFD0E1F2C
+S3150060E69030415263748596A7B8C9DAEBFC0D1E2F1C
+S3150060E6A0405162738495A6B7C8D9EAFB0C1D2E3F0C
+S3150060E6B05061728394A5B6C7D8E9FA0B1C2D3E4FFC
+S3150060E6C060718293A4B5C6D7E8F90A1B2C3D4E5FEC
+S3150060E6D0708192A3B4C5D6E7F8091A2B3C4D5E6FDC
+S3150060E6E08091A2B3C4D5E6F708192A3B4C5D6E7FCC
+S3150060E6F090A1B2C3D4E5F60718293A4B5C6D7E8FBC
+S3150060E700A0B1C2D3E4F5061728394A5B6C7D8E9FAB
+S3150060E710B0C1D2E3F405162738495A6B7C8D9EAF9B
+S3150060E720C0D1E2F30415263748596A7B8C9DAEBF8B
+S3150060E730D0E1F2031425364758697A8B9CADBECF7B
+S3150060E740E0F102132435465768798A9BACBDCEDF6B
+S3150060E750F00112233445566778899AABBCCDDEEF5B
+S3150060E76000112233445566778899AABBCCDDEEFF4B
+S3150060E770102132435465768798A9BACBDCEDFE0F3B
+S3150060E7802031425364758697A8B9CADBECFD0E1F2B
+S3150060E79030415263748596A7B8C9DAEBFC0D1E2F1B
+S3150060E7A0405162738495A6B7C8D9EAFB0C1D2E3F0B
+S3150060E7B05061728394A5B6C7D8E9FA0B1C2D3E4FFB
+S3150060E7C060718293A4B5C6D7E8F90A1B2C3D4E5FEB
+S3150060E7D0708192A3B4C5D6E7F8091A2B3C4D5E6FDB
+S3150060E7E08091A2B3C4D5E6F708192A3B4C5D6E7FCB
+S3150060E7F090A1B2C3D4E5F60718293A4B5C6D7E8FBB
+S3150060E800A0B1C2D3E4F5061728394A5B6C7D8E9FAA
+S3150060E810B0C1D2E3F405162738495A6B7C8D9EAF9A
+S3150060E820C0D1E2F30415263748596A7B8C9DAEBF8A
+S3150060E830D0E1F2031425364758697A8B9CADBECF7A
+S3150060E840E0F102132435465768798A9BACBDCEDF6A
+S3150060E850F00112233445566778899AABBCCDDEEF5A
+S3150060E86000112233445566778899AABBCCDDEEFF4A
+S3150060E870102132435465768798A9BACBDCEDFE0F3A
+S3150060E8802031425364758697A8B9CADBECFD0E1F2A
+S3150060E89030415263748596A7B8C9DAEBFC0D1E2F1A
+S3150060E8A0405162738495A6B7C8D9EAFB0C1D2E3F0A
+S3150060E8B05061728394A5B6C7D8E9FA0B1C2D3E4FFA
+S3150060E8C060718293A4B5C6D7E8F90A1B2C3D4E5FEA
+S3150060E8D0708192A3B4C5D6E7F8091A2B3C4D5E6FDA
+S3150060E8E08091A2B3C4D5E6F708192A3B4C5D6E7FCA
+S3150060E8F090A1B2C3D4E5F60718293A4B5C6D7E8FBA
+S3150060E900A0B1C2D3E4F5061728394A5B6C7D8E9FA9
+S3150060E910B0C1D2E3F405162738495A6B7C8D9EAF99
+S3150060E920C0D1E2F30415263748596A7B8C9DAEBF89
+S3150060E930D0E1F2031425364758697A8B9CADBECF79
+S3150060E940E0F102132435465768798A9BACBDCEDF69
+S3150060E950F00112233445566778899AABBCCDDEEF59
+S3150060E96000112233445566778899AABBCCDDEEFF49
+S3150060E970102132435465768798A9BACBDCEDFE0F39
+S3150060E9802031425364758697A8B9CADBECFD0E1F29
+S3150060E99030415263748596A7B8C9DAEBFC0D1E2F19
+S3150060E9A0405162738495A6B7C8D9EAFB0C1D2E3F09
+S3150060E9B05061728394A5B6C7D8E9FA0B1C2D3E4FF9
+S3150060E9C060718293A4B5C6D7E8F90A1B2C3D4E5FE9
+S3150060E9D0708192A3B4C5D6E7F8091A2B3C4D5E6FD9
+S3150060E9E08091A2B3C4D5E6F708192A3B4C5D6E7FC9
+S3150060E9F090A1B2C3D4E5F60718293A4B5C6D7E8FB9
+S3150060EA00A0B1C2D3E4F5061728394A5B6C7D8E9FA8
+S3150060EA10B0C1D2E3F405162738495A6B7C8D9EAF98
+S3150060EA20C0D1E2F30415263748596A7B8C9DAEBF88
+S3150060EA30D0E1F2031425364758697A8B9CADBECF78
+S3150060EA40E0F102132435465768798A9BACBDCEDF68
+S3150060EA50F00112233445566778899AABBCCDDEEF58
+S3150060EA6000112233445566778899AABBCCDDEEFF48
+S3150060EA70102132435465768798A9BACBDCEDFE0F38
+S3150060EA802031425364758697A8B9CADBECFD0E1F28
+S3150060EA9030415263748596A7B8C9DAEBFC0D1E2F18
+S3150060EAA0405162738495A6B7C8D9EAFB0C1D2E3F08
+S3150060EAB05061728394A5B6C7D8E9FA0B1C2D3E4FF8
+S3150060EAC060718293A4B5C6D7E8F90A1B2C3D4E5FE8
+S3150060EAD0708192A3B4C5D6E7F8091A2B3C4D5E6FD8
+S3150060EAE08091A2B3C4D5E6F708192A3B4C5D6E7FC8
+S3150060EAF090A1B2C3D4E5F60718293A4B5C6D7E8FB8
+S3150060EB00A0B1C2D3E4F5061728394A5B6C7D8E9FA7
+S3150060EB10B0C1D2E3F405162738495A6B7C8D9EAF97
+S3150060EB20C0D1E2F30415263748596A7B8C9DAEBF87
+S3150060EB30D0E1F2031425364758697A8B9CADBECF77
+S3150060EB40E0F102132435465768798A9BACBDCEDF67
+S3150060EB50F00112233445566778899AABBCCDDEEF57
+S3150060EB6000112233445566778899AABBCCDDEEFF47
+S3150060EB70102132435465768798A9BACBDCEDFE0F37
+S3150060EB802031425364758697A8B9CADBECFD0E1F27
+S3150060EB9030415263748596A7B8C9DAEBFC0D1E2F17
+S3150060EBA0405162738495A6B7C8D9EAFB0C1D2E3F07
+S3150060EBB05061728394A5B6C7D8E9FA0B1C2D3E4FF7
+S3150060EBC060718293A4B5C6D7E8F90A1B2C3D4E5FE7
+S3150060EBD0708192A3B4C5D6E7F8091A2B3C4D5E6FD7
+S3150060EBE08091A2B3C4D5E6F708192A3B4C5D6E7FC7
+S3150060EBF090A1B2C3D4E5F60718293A4B5C6D7E8FB7
+S3150060EC00A0B1C2D3E4F5061728394A5B6C7D8E9FA6
+S3150060EC10B0C1D2E3F405162738495A6B7C8D9EAF96
+S3150060EC20C0D1E2F30415263748596A7B8C9DAEBF86
+S3150060EC30D0E1F2031425364758697A8B9CADBECF76
+S3150060EC40E0F102132435465768798A9BACBDCEDF66
+S3150060EC50F00112233445566778899AABBCCDDEEF56
+S3150060EC6000112233445566778899AABBCCDDEEFF46
+S3150060EC70102132435465768798A9BACBDCEDFE0F36
+S3150060EC802031425364758697A8B9CADBECFD0E1F26
+S3150060EC9030415263748596A7B8C9DAEBFC0D1E2F16
+S3150060ECA0405162738495A6B7C8D9EAFB0C1D2E3F06
+S3150060ECB05061728394A5B6C7D8E9FA0B1C2D3E4FF6
+S3150060ECC060718293A4B5C6D7E8F90A1B2C3D4E5FE6
+S3150060ECD0708192A3B4C5D6E7F8091A2B3C4D5E6FD6
+S3150060ECE08091A2B3C4D5E6F708192A3B4C5D6E7FC6
+S3150060ECF090A1B2C3D4E5F60718293A4B5C6D7E8FB6
+S3150060ED00A0B1C2D3E4F5061728394A5B6C7D8E9FA5
+S3150060ED10B0C1D2E3F405162738495A6B7C8D9EAF95
+S3150060ED20C0D1E2F30415263748596A7B8C9DAEBF85
+S3150060ED30D0E1F2031425364758697A8B9CADBECF75
+S3150060ED40E0F102132435465768798A9BACBDCEDF65
+S3150060ED50F00112233445566778899AABBCCDDEEF55
+S3150060ED6000112233445566778899AABBCCDDEEFF45
+S3150060ED70102132435465768798A9BACBDCEDFE0F35
+S3150060ED802031425364758697A8B9CADBECFD0E1F25
+S3150060ED9030415263748596A7B8C9DAEBFC0D1E2F15
+S3150060EDA0405162738495A6B7C8D9EAFB0C1D2E3F05
+S3150060EDB05061728394A5B6C7D8E9FA0B1C2D3E4FF5
+S3150060EDC060718293A4B5C6D7E8F90A1B2C3D4E5FE5
+S3150060EDD0708192A3B4C5D6E7F8091A2B3C4D5E6FD5
+S3150060EDE08091A2B3C4D5E6F708192A3B4C5D6E7FC5
+S3150060EDF090A1B2C3D4E5F60718293A4B5C6D7E8FB5
+S3150060EE00A0B1C2D3E4F5061728394A5B6C7D8E9FA4
+S3150060EE10B0C1D2E3F405162738495A6B7C8D9EAF94
+S3150060EE20C0D1E2F30415263748596A7B8C9DAEBF84
+S3150060EE30D0E1F2031425364758697A8B9CADBECF74
+S3150060EE40E0F102132435465768798A9BACBDCEDF64
+S3150060EE50F00112233445566778899AABBCCDDEEF54
+S3150060EE6000112233445566778899AABBCCDDEEFF44
+S3150060EE70102132435465768798A9BACBDCEDFE0F34
+S3150060EE802031425364758697A8B9CADBECFD0E1F24
+S3150060EE9030415263748596A7B8C9DAEBFC0D1E2F14
+S3150060EEA0405162738495A6B7C8D9EAFB0C1D2E3F04
+S3150060EEB05061728394A5B6C7D8E9FA0B1C2D3E4FF4
+S3150060EEC060718293A4B5C6D7E8F90A1B2C3D4E5FE4
+S3150060EED0708192A3B4C5D6E7F8091A2B3C4D5E6FD4
+S3150060EEE08091A2B3C4D5E6F708192A3B4C5D6E7FC4
+S3150060EEF090A1B2C3D4E5F60718293A4B5C6D7E8FB4
+S3150060EF00A0B1C2D3E4F5061728394A5B6C7D8E9FA3
+S3150060EF10B0C1D2E3F405162738495A6B7C8D9EAF93
+S3150060EF20C0D1E2F30415263748596A7B8C9DAEBF83
+S3150060EF30D0E1F2031425364758697A8B9CADBECF73
+S3150060EF40E0F102132435465768798A9BACBDCEDF63
+S3150060EF50F00112233445566778899AABBCCDDEEF53
+S3150060EF6000112233445566778899AABBCCDDEEFF43
+S3150060EF70102132435465768798A9BACBDCEDFE0F33
+S3150060EF802031425364758697A8B9CADBECFD0E1F23
+S3150060EF9030415263748596A7B8C9DAEBFC0D1E2F13
+S3150060EFA0405162738495A6B7C8D9EAFB0C1D2E3F03
+S3150060EFB05061728394A5B6C7D8E9FA0B1C2D3E4FF3
+S3150060EFC060718293A4B5C6D7E8F90A1B2C3D4E5FE3
+S3150060EFD0708192A3B4C5D6E7F8091A2B3C4D5E6FD3
+S3150060EFE08091A2B3C4D5E6F708192A3B4C5D6E7FC3
+S3150060EFF090A1B2C3D4E5F60718293A4B5C6D7E8FB3
+S3150060F000A0B1C2D3E4F5061728394A5B6C7D8E9FA2
+S3150060F010B0C1D2E3F405162738495A6B7C8D9EAF92
+S3150060F020C0D1E2F30415263748596A7B8C9DAEBF82
+S3150060F030D0E1F2031425364758697A8B9CADBECF72
+S3150060F040E0F102132435465768798A9BACBDCEDF62
+S3150060F050F00112233445566778899AABBCCDDEEF52
+S3150060F06000112233445566778899AABBCCDDEEFF42
+S3150060F070102132435465768798A9BACBDCEDFE0F32
+S3150060F0802031425364758697A8B9CADBECFD0E1F22
+S3150060F09030415263748596A7B8C9DAEBFC0D1E2F12
+S3150060F0A0405162738495A6B7C8D9EAFB0C1D2E3F02
+S3150060F0B05061728394A5B6C7D8E9FA0B1C2D3E4FF2
+S3150060F0C060718293A4B5C6D7E8F90A1B2C3D4E5FE2
+S3150060F0D0708192A3B4C5D6E7F8091A2B3C4D5E6FD2
+S3150060F0E08091A2B3C4D5E6F708192A3B4C5D6E7FC2
+S3150060F0F090A1B2C3D4E5F60718293A4B5C6D7E8FB2
+S3150060F100A0B1C2D3E4F5061728394A5B6C7D8E9FA1
+S3150060F110B0C1D2E3F405162738495A6B7C8D9EAF91
+S3150060F120C0D1E2F30415263748596A7B8C9DAEBF81
+S3150060F130D0E1F2031425364758697A8B9CADBECF71
+S3150060F140E0F102132435465768798A9BACBDCEDF61
+S3150060F150F00112233445566778899AABBCCDDEEF51
+S3150060F16000112233445566778899AABBCCDDEEFF41
+S3150060F170102132435465768798A9BACBDCEDFE0F31
+S3150060F1802031425364758697A8B9CADBECFD0E1F21
+S3150060F19030415263748596A7B8C9DAEBFC0D1E2F11
+S3150060F1A0405162738495A6B7C8D9EAFB0C1D2E3F01
+S3150060F1B05061728394A5B6C7D8E9FA0B1C2D3E4FF1
+S3150060F1C060718293A4B5C6D7E8F90A1B2C3D4E5FE1
+S3150060F1D0708192A3B4C5D6E7F8091A2B3C4D5E6FD1
+S3150060F1E08091A2B3C4D5E6F708192A3B4C5D6E7FC1
+S3150060F1F090A1B2C3D4E5F60718293A4B5C6D7E8FB1
+S3150060F200A0B1C2D3E4F5061728394A5B6C7D8E9FA0
+S3150060F210B0C1D2E3F405162738495A6B7C8D9EAF90
+S3150060F220C0D1E2F30415263748596A7B8C9DAEBF80
+S3150060F230D0E1F2031425364758697A8B9CADBECF70
+S3150060F240E0F102132435465768798A9BACBDCEDF60
+S3150060F250F00112233445566778899AABBCCDDEEF50
+S3150060F26000112233445566778899AABBCCDDEEFF40
+S3150060F270102132435465768798A9BACBDCEDFE0F30
+S3150060F2802031425364758697A8B9CADBECFD0E1F20
+S3150060F29030415263748596A7B8C9DAEBFC0D1E2F10
+S3150060F2A0405162738495A6B7C8D9EAFB0C1D2E3F00
+S3150060F2B05061728394A5B6C7D8E9FA0B1C2D3E4FF0
+S3150060F2C060718293A4B5C6D7E8F90A1B2C3D4E5FE0
+S3150060F2D0708192A3B4C5D6E7F8091A2B3C4D5E6FD0
+S3150060F2E08091A2B3C4D5E6F708192A3B4C5D6E7FC0
+S3150060F2F090A1B2C3D4E5F60718293A4B5C6D7E8FB0
+S3150060F300A0B1C2D3E4F5061728394A5B6C7D8E9F9F
+S3150060F310B0C1D2E3F405162738495A6B7C8D9EAF8F
+S3150060F320C0D1E2F30415263748596A7B8C9DAEBF7F
+S3150060F330D0E1F2031425364758697A8B9CADBECF6F
+S3150060F340E0F102132435465768798A9BACBDCEDF5F
+S3150060F350F00112233445566778899AABBCCDDEEF4F
+S3150060F36000112233445566778899AABBCCDDEEFF3F
+S3150060F370102132435465768798A9BACBDCEDFE0F2F
+S3150060F3802031425364758697A8B9CADBECFD0E1F1F
+S3150060F39030415263748596A7B8C9DAEBFC0D1E2F0F
+S3150060F3A0405162738495A6B7C8D9EAFB0C1D2E3FFF
+S3150060F3B05061728394A5B6C7D8E9FA0B1C2D3E4FEF
+S3150060F3C060718293A4B5C6D7E8F90A1B2C3D4E5FDF
+S3150060F3D0708192A3B4C5D6E7F8091A2B3C4D5E6FCF
+S3150060F3E08091A2B3C4D5E6F708192A3B4C5D6E7FBF
+S3150060F3F090A1B2C3D4E5F60718293A4B5C6D7E8FAF
+S3150060F400A0B1C2D3E4F5061728394A5B6C7D8E9F9E
+S3150060F410B0C1D2E3F405162738495A6B7C8D9EAF8E
+S3150060F420C0D1E2F30415263748596A7B8C9DAEBF7E
+S3150060F430D0E1F2031425364758697A8B9CADBECF6E
+S3150060F440E0F102132435465768798A9BACBDCEDF5E
+S3150060F450F00112233445566778899AABBCCDDEEF4E
+S3150060F46000112233445566778899AABBCCDDEEFF3E
+S3150060F470102132435465768798A9BACBDCEDFE0F2E
+S3150060F4802031425364758697A8B9CADBECFD0E1F1E
+S3150060F49030415263748596A7B8C9DAEBFC0D1E2F0E
+S3150060F4A0405162738495A6B7C8D9EAFB0C1D2E3FFE
+S3150060F4B05061728394A5B6C7D8E9FA0B1C2D3E4FEE
+S3150060F4C060718293A4B5C6D7E8F90A1B2C3D4E5FDE
+S3150060F4D0708192A3B4C5D6E7F8091A2B3C4D5E6FCE
+S3150060F4E08091A2B3C4D5E6F708192A3B4C5D6E7FBE
+S3150060F4F090A1B2C3D4E5F60718293A4B5C6D7E8FAE
+S3150060F500A0B1C2D3E4F5061728394A5B6C7D8E9F9D
+S3150060F510B0C1D2E3F405162738495A6B7C8D9EAF8D
+S3150060F520C0D1E2F30415263748596A7B8C9DAEBF7D
+S3150060F530D0E1F2031425364758697A8B9CADBECF6D
+S3150060F540E0F102132435465768798A9BACBDCEDF5D
+S3150060F550F00112233445566778899AABBCCDDEEF4D
+S3150060F56000112233445566778899AABBCCDDEEFF3D
+S3150060F570102132435465768798A9BACBDCEDFE0F2D
+S3150060F5802031425364758697A8B9CADBECFD0E1F1D
+S3150060F59030415263748596A7B8C9DAEBFC0D1E2F0D
+S3150060F5A0405162738495A6B7C8D9EAFB0C1D2E3FFD
+S3150060F5B05061728394A5B6C7D8E9FA0B1C2D3E4FED
+S3150060F5C060718293A4B5C6D7E8F90A1B2C3D4E5FDD
+S3150060F5D0708192A3B4C5D6E7F8091A2B3C4D5E6FCD
+S3150060F5E08091A2B3C4D5E6F708192A3B4C5D6E7FBD
+S3150060F5F090A1B2C3D4E5F60718293A4B5C6D7E8FAD
+S3150060F600A0B1C2D3E4F5061728394A5B6C7D8E9F9C
+S3150060F610B0C1D2E3F405162738495A6B7C8D9EAF8C
+S3150060F620C0D1E2F30415263748596A7B8C9DAEBF7C
+S3150060F630D0E1F2031425364758697A8B9CADBECF6C
+S3150060F640E0F102132435465768798A9BACBDCEDF5C
+S3150060F650F00112233445566778899AABBCCDDEEF4C
+S3150060F66000112233445566778899AABBCCDDEEFF3C
+S3150060F670102132435465768798A9BACBDCEDFE0F2C
+S3150060F6802031425364758697A8B9CADBECFD0E1F1C
+S3150060F69030415263748596A7B8C9DAEBFC0D1E2F0C
+S3150060F6A0405162738495A6B7C8D9EAFB0C1D2E3FFC
+S3150060F6B05061728394A5B6C7D8E9FA0B1C2D3E4FEC
+S3150060F6C060718293A4B5C6D7E8F90A1B2C3D4E5FDC
+S3150060F6D0708192A3B4C5D6E7F8091A2B3C4D5E6FCC
+S3150060F6E08091A2B3C4D5E6F708192A3B4C5D6E7FBC
+S3150060F6F090A1B2C3D4E5F60718293A4B5C6D7E8FAC
+S3150060F700A0B1C2D3E4F5061728394A5B6C7D8E9F9B
+S3150060F710B0C1D2E3F405162738495A6B7C8D9EAF8B
+S3150060F720C0D1E2F30415263748596A7B8C9DAEBF7B
+S3150060F730D0E1F2031425364758697A8B9CADBECF6B
+S3150060F740E0F102132435465768798A9BACBDCEDF5B
+S3150060F750F00112233445566778899AABBCCDDEEF4B
+S3150060F76000112233445566778899AABBCCDDEEFF3B
+S3150060F770102132435465768798A9BACBDCEDFE0F2B
+S3150060F7802031425364758697A8B9CADBECFD0E1F1B
+S3150060F79030415263748596A7B8C9DAEBFC0D1E2F0B
+S3150060F7A0405162738495A6B7C8D9EAFB0C1D2E3FFB
+S3150060F7B05061728394A5B6C7D8E9FA0B1C2D3E4FEB
+S3150060F7C060718293A4B5C6D7E8F90A1B2C3D4E5FDB
+S3150060F7D0708192A3B4C5D6E7F8091A2B3C4D5E6FCB
+S3150060F7E08091A2B3C4D5E6F708192A3B4C5D6E7FBB
+S3150060F7F090A1B2C3D4E5F60718293A4B5C6D7E8FAB
+S3150060F800A0B1C2D3E4F5061728394A5B6C7D8E9F9A
+S3150060F810B0C1D2E3F405162738495A6B7C8D9EAF8A
+S3150060F820C0D1E2F30415263748596A7B8C9DAEBF7A
+S3150060F830D0E1F2031425364758697A8B9CADBECF6A
+S3150060F840E0F102132435465768798A9BACBDCEDF5A
+S3150060F850F00112233445566778899AABBCCDDEEF4A
+S3150060F86000112233445566778899AABBCCDDEEFF3A
+S3150060F870102132435465768798A9BACBDCEDFE0F2A
+S3150060F8802031425364758697A8B9CADBECFD0E1F1A
+S3150060F89030415263748596A7B8C9DAEBFC0D1E2F0A
+S3150060F8A0405162738495A6B7C8D9EAFB0C1D2E3FFA
+S3150060F8B05061728394A5B6C7D8E9FA0B1C2D3E4FEA
+S3150060F8C060718293A4B5C6D7E8F90A1B2C3D4E5FDA
+S3150060F8D0708192A3B4C5D6E7F8091A2B3C4D5E6FCA
+S3150060F8E08091A2B3C4D5E6F708192A3B4C5D6E7FBA
+S3150060F8F090A1B2C3D4E5F60718293A4B5C6D7E8FAA
+S3150060F900A0B1C2D3E4F5061728394A5B6C7D8E9F99
+S3150060F910B0C1D2E3F405162738495A6B7C8D9EAF89
+S3150060F920C0D1E2F30415263748596A7B8C9DAEBF79
+S3150060F930D0E1F2031425364758697A8B9CADBECF69
+S3150060F940E0F102132435465768798A9BACBDCEDF59
+S3150060F950F00112233445566778899AABBCCDDEEF49
+S3150060F96000112233445566778899AABBCCDDEEFF39
+S3150060F970102132435465768798A9BACBDCEDFE0F29
+S3150060F9802031425364758697A8B9CADBECFD0E1F19
+S3150060F99030415263748596A7B8C9DAEBFC0D1E2F09
+S3150060F9A0405162738495A6B7C8D9EAFB0C1D2E3FF9
+S3150060F9B05061728394A5B6C7D8E9FA0B1C2D3E4FE9
+S3150060F9C060718293A4B5C6D7E8F90A1B2C3D4E5FD9
+S3150060F9D0708192A3B4C5D6E7F8091A2B3C4D5E6FC9
+S3150060F9E08091A2B3C4D5E6F708192A3B4C5D6E7FB9
+S3150060F9F090A1B2C3D4E5F60718293A4B5C6D7E8FA9
+S3150060FA00A0B1C2D3E4F5061728394A5B6C7D8E9F98
+S3150060FA10B0C1D2E3F405162738495A6B7C8D9EAF88
+S3150060FA20C0D1E2F30415263748596A7B8C9DAEBF78
+S3150060FA30D0E1F2031425364758697A8B9CADBECF68
+S3150060FA40E0F102132435465768798A9BACBDCEDF58
+S3150060FA50F00112233445566778899AABBCCDDEEF48
+S3150060FA6000112233445566778899AABBCCDDEEFF38
+S3150060FA70102132435465768798A9BACBDCEDFE0F28
+S3150060FA802031425364758697A8B9CADBECFD0E1F18
+S3150060FA9030415263748596A7B8C9DAEBFC0D1E2F08
+S3150060FAA0405162738495A6B7C8D9EAFB0C1D2E3FF8
+S3150060FAB05061728394A5B6C7D8E9FA0B1C2D3E4FE8
+S3150060FAC060718293A4B5C6D7E8F90A1B2C3D4E5FD8
+S3150060FAD0708192A3B4C5D6E7F8091A2B3C4D5E6FC8
+S3150060FAE08091A2B3C4D5E6F708192A3B4C5D6E7FB8
+S3150060FAF090A1B2C3D4E5F60718293A4B5C6D7E8FA8
+S3150060FB00A0B1C2D3E4F5061728394A5B6C7D8E9F97
+S3150060FB10B0C1D2E3F405162738495A6B7C8D9EAF87
+S3150060FB20C0D1E2F30415263748596A7B8C9DAEBF77
+S3150060FB30D0E1F2031425364758697A8B9CADBECF67
+S3150060FB40E0F102132435465768798A9BACBDCEDF57
+S3150060FB50F00112233445566778899AABBCCDDEEF47
+S3150060FB6000112233445566778899AABBCCDDEEFF37
+S3150060FB70102132435465768798A9BACBDCEDFE0F27
+S3150060FB802031425364758697A8B9CADBECFD0E1F17
+S3150060FB9030415263748596A7B8C9DAEBFC0D1E2F07
+S3150060FBA0405162738495A6B7C8D9EAFB0C1D2E3FF7
+S3150060FBB05061728394A5B6C7D8E9FA0B1C2D3E4FE7
+S3150060FBC060718293A4B5C6D7E8F90A1B2C3D4E5FD7
+S3150060FBD0708192A3B4C5D6E7F8091A2B3C4D5E6FC7
+S3150060FBE08091A2B3C4D5E6F708192A3B4C5D6E7FB7
+S3150060FBF090A1B2C3D4E5F60718293A4B5C6D7E8FA7
+S3150060FC00A0B1C2D3E4F5061728394A5B6C7D8E9F96
+S3150060FC10B0C1D2E3F405162738495A6B7C8D9EAF86
+S3150060FC20C0D1E2F30415263748596A7B8C9DAEBF76
+S3150060FC30D0E1F2031425364758697A8B9CADBECF66
+S3150060FC40E0F102132435465768798A9BACBDCEDF56
+S3150060FC50F00112233445566778899AABBCCDDEEF46
+S3150060FC6000112233445566778899AABBCCDDEEFF36
+S3150060FC70102132435465768798A9BACBDCEDFE0F26
+S3150060FC802031425364758697A8B9CADBECFD0E1F16
+S3150060FC9030415263748596A7B8C9DAEBFC0D1E2F06
+S3150060FCA0405162738495A6B7C8D9EAFB0C1D2E3FF6
+S3150060FCB05061728394A5B6C7D8E9FA0B1C2D3E4FE6
+S3150060FCC060718293A4B5C6D7E8F90A1B2C3D4E5FD6
+S3150060FCD0708192A3B4C5D6E7F8091A2B3C4D5E6FC6
+S3150060FCE08091A2B3C4D5E6F708192A3B4C5D6E7FB6
+S3150060FCF090A1B2C3D4E5F60718293A4B5C6D7E8FA6
+S3150060FD00A0B1C2D3E4F5061728394A5B6C7D8E9F95
+S3150060FD10B0C1D2E3F405162738495A6B7C8D9EAF85
+S3150060FD20C0D1E2F30415263748596A7B8C9DAEBF75
+S3150060FD30D0E1F2031425364758697A8B9CADBECF65
+S3150060FD40E0F102132435465768798A9BACBDCEDF55
+S3150060FD50F00112233445566778899AABBCCDDEEF45
+S3150060FD6000112233445566778899AABBCCDDEEFF35
+S3150060FD70102132435465768798A9BACBDCEDFE0F25
+S3150060FD802031425364758697A8B9CADBECFD0E1F15
+S3150060FD9030415263748596A7B8C9DAEBFC0D1E2F05
+S3150060FDA0405162738495A6B7C8D9EAFB0C1D2E3FF5
+S3150060FDB05061728394A5B6C7D8E9FA0B1C2D3E4FE5
+S3150060FDC060718293A4B5C6D7E8F90A1B2C3D4E5FD5
+S3150060FDD0708192A3B4C5D6E7F8091A2B3C4D5E6FC5
+S3150060FDE08091A2B3C4D5E6F708192A3B4C5D6E7FB5
+S3150060FDF090A1B2C3D4E5F60718293A4B5C6D7E8FA5
+S3150060FE00A0B1C2D3E4F5061728394A5B6C7D8E9F94
+S3150060FE10B0C1D2E3F405162738495A6B7C8D9EAF84
+S3150060FE20C0D1E2F30415263748596A7B8C9DAEBF74
+S3150060FE30D0E1F2031425364758697A8B9CADBECF64
+S3150060FE40E0F102132435465768798A9BACBDCEDF54
+S3150060FE50F00112233445566778899AABBCCDDEEF44
+S3150060FE6000112233445566778899AABBCCDDEEFF34
+S3150060FE70102132435465768798A9BACBDCEDFE0F24
+S3150060FE802031425364758697A8B9CADBECFD0E1F14
+S3150060FE9030415263748596A7B8C9DAEBFC0D1E2F04
+S3150060FEA0405162738495A6B7C8D9EAFB0C1D2E3FF4
+S3150060FEB05061728394A5B6C7D8E9FA0B1C2D3E4FE4
+S3150060FEC060718293A4B5C6D7E8F90A1B2C3D4E5FD4
+S3150060FED0708192A3B4C5D6E7F8091A2B3C4D5E6FC4
+S3150060FEE08091A2B3C4D5E6F708192A3B4C5D6E7FB4
+S3150060FEF090A1B2C3D4E5F60718293A4B5C6D7E8FA4
+S3150060FF00A0B1C2D3E4F5061728394A5B6C7D8E9F93
+S3150060FF10B0C1D2E3F405162738495A6B7C8D9EAF83
+S3150060FF20C0D1E2F30415263748596A7B8C9DAEBF73
+S3150060FF30D0E1F2031425364758697A8B9CADBECF63
+S3150060FF40E0F102132435465768798A9BACBDCEDF53
+S3150060FF50F00112233445566778899AABBCCDDEEF43
+S3150060FF6000112233445566778899AABBCCDDEEFF33
+S3150060FF70102132435465768798A9BACBDCEDFE0F23
+S3150060FF802031425364758697A8B9CADBECFD0E1F13
+S3150060FF9030415263748596A7B8C9DAEBFC0D1E2F03
+S3150060FFA0405162738495A6B7C8D9EAFB0C1D2E3FF3
+S3150060FFB05061728394A5B6C7D8E9FA0B1C2D3E4FE3
+S3150060FFC060718293A4B5C6D7E8F90A1B2C3D4E5FD3
+S3150060FFD0708192A3B4C5D6E7F8091A2B3C4D5E6FC3
+S3150060FFE08091A2B3C4D5E6F708192A3B4C5D6E7FB3
+S3150060FFF090A1B2C3D4E5F60718293A4B5C6D7E8FA3
+S31500610000A0B1C2D3E4F5061728394A5B6C7D8E9F91
+S31500610010B0C1D2E3F405162738495A6B7C8D9EAF81
+S31500610020C0D1E2F30415263748596A7B8C9DAEBF71
+S31500610030D0E1F2031425364758697A8B9CADBECF61
+S31500610040E0F102132435465768798A9BACBDCEDF51
+S31500610050F00112233445566778899AABBCCDDEEF41
+S3150061006000112233445566778899AABBCCDDEEFF31
+S31500610070102132435465768798A9BACBDCEDFE0F21
+S315006100802031425364758697A8B9CADBECFD0E1F11
+S3150061009030415263748596A7B8C9DAEBFC0D1E2F01
+S315006100A0405162738495A6B7C8D9EAFB0C1D2E3FF1
+S315006100B05061728394A5B6C7D8E9FA0B1C2D3E4FE1
+S315006100C060718293A4B5C6D7E8F90A1B2C3D4E5FD1
+S315006100D0708192A3B4C5D6E7F8091A2B3C4D5E6FC1
+S315006100E08091A2B3C4D5E6F708192A3B4C5D6E7FB1
+S315006100F090A1B2C3D4E5F60718293A4B5C6D7E8FA1
+S31500610100A0B1C2D3E4F5061728394A5B6C7D8E9F90
+S31500610110B0C1D2E3F405162738495A6B7C8D9EAF80
+S31500610120C0D1E2F30415263748596A7B8C9DAEBF70
+S31500610130D0E1F2031425364758697A8B9CADBECF60
+S31500610140E0F102132435465768798A9BACBDCEDF50
+S31500610150F00112233445566778899AABBCCDDEEF40
+S3150061016000112233445566778899AABBCCDDEEFF30
+S31500610170102132435465768798A9BACBDCEDFE0F20
+S315006101802031425364758697A8B9CADBECFD0E1F10
+S3150061019030415263748596A7B8C9DAEBFC0D1E2F00
+S315006101A0405162738495A6B7C8D9EAFB0C1D2E3FF0
+S315006101B05061728394A5B6C7D8E9FA0B1C2D3E4FE0
+S315006101C060718293A4B5C6D7E8F90A1B2C3D4E5FD0
+S315006101D0708192A3B4C5D6E7F8091A2B3C4D5E6FC0
+S315006101E08091A2B3C4D5E6F708192A3B4C5D6E7FB0
+S315006101F090A1B2C3D4E5F60718293A4B5C6D7E8FA0
+S31500610200A0B1C2D3E4F5061728394A5B6C7D8E9F8F
+S31500610210B0C1D2E3F405162738495A6B7C8D9EAF7F
+S31500610220C0D1E2F30415263748596A7B8C9DAEBF6F
+S31500610230D0E1F2031425364758697A8B9CADBECF5F
+S31500610240E0F102132435465768798A9BACBDCEDF4F
+S31500610250F00112233445566778899AABBCCDDEEF3F
+S3150061026000112233445566778899AABBCCDDEEFF2F
+S31500610270102132435465768798A9BACBDCEDFE0F1F
+S315006102802031425364758697A8B9CADBECFD0E1F0F
+S3150061029030415263748596A7B8C9DAEBFC0D1E2FFF
+S315006102A0405162738495A6B7C8D9EAFB0C1D2E3FEF
+S315006102B05061728394A5B6C7D8E9FA0B1C2D3E4FDF
+S315006102C060718293A4B5C6D7E8F90A1B2C3D4E5FCF
+S315006102D0708192A3B4C5D6E7F8091A2B3C4D5E6FBF
+S315006102E08091A2B3C4D5E6F708192A3B4C5D6E7FAF
+S315006102F090A1B2C3D4E5F60718293A4B5C6D7E8F9F
+S31500610300A0B1C2D3E4F5061728394A5B6C7D8E9F8E
+S31500610310B0C1D2E3F405162738495A6B7C8D9EAF7E
+S31500610320C0D1E2F30415263748596A7B8C9DAEBF6E
+S31500610330D0E1F2031425364758697A8B9CADBECF5E
+S31500610340E0F102132435465768798A9BACBDCEDF4E
+S31500610350F00112233445566778899AABBCCDDEEF3E
+S3150061036000112233445566778899AABBCCDDEEFF2E
+S31500610370102132435465768798A9BACBDCEDFE0F1E
+S315006103802031425364758697A8B9CADBECFD0E1F0E
+S3150061039030415263748596A7B8C9DAEBFC0D1E2FFE
+S315006103A0405162738495A6B7C8D9EAFB0C1D2E3FEE
+S315006103B05061728394A5B6C7D8E9FA0B1C2D3E4FDE
+S315006103C060718293A4B5C6D7E8F90A1B2C3D4E5FCE
+S315006103D0708192A3B4C5D6E7F8091A2B3C4D5E6FBE
+S315006103E08091A2B3C4D5E6F708192A3B4C5D6E7FAE
+S315006103F090A1B2C3D4E5F60718293A4B5C6D7E8F9E
+S31500610400A0B1C2D3E4F5061728394A5B6C7D8E9F8D
+S31500610410B0C1D2E3F405162738495A6B7C8D9EAF7D
+S31500610420C0D1E2F30415263748596A7B8C9DAEBF6D
+S31500610430D0E1F2031425364758697A8B9CADBECF5D
+S31500610440E0F102132435465768798A9BACBDCEDF4D
+S31500610450F00112233445566778899AABBCCDDEEF3D
+S3150061046000112233445566778899AABBCCDDEEFF2D
+S31500610470102132435465768798A9BACBDCEDFE0F1D
+S315006104802031425364758697A8B9CADBECFD0E1F0D
+S3150061049030415263748596A7B8C9DAEBFC0D1E2FFD
+S315006104A0405162738495A6B7C8D9EAFB0C1D2E3FED
+S315006104B05061728394A5B6C7D8E9FA0B1C2D3E4FDD
+S315006104C060718293A4B5C6D7E8F90A1B2C3D4E5FCD
+S315006104D0708192A3B4C5D6E7F8091A2B3C4D5E6FBD
+S315006104E08091A2B3C4D5E6F708192A3B4C5D6E7FAD
+S315006104F090A1B2C3D4E5F60718293A4B5C6D7E8F9D
+S31500610500A0B1C2D3E4F5061728394A5B6C7D8E9F8C
+S31500610510B0C1D2E3F405162738495A6B7C8D9EAF7C
+S31500610520C0D1E2F30415263748596A7B8C9DAEBF6C
+S31500610530D0E1F2031425364758697A8B9CADBECF5C
+S31500610540E0F102132435465768798A9BACBDCEDF4C
+S31500610550F00112233445566778899AABBCCDDEEF3C
+S3150061056000112233445566778899AABBCCDDEEFF2C
+S31500610570102132435465768798A9BACBDCEDFE0F1C
+S315006105802031425364758697A8B9CADBECFD0E1F0C
+S3150061059030415263748596A7B8C9DAEBFC0D1E2FFC
+S315006105A0405162738495A6B7C8D9EAFB0C1D2E3FEC
+S315006105B05061728394A5B6C7D8E9FA0B1C2D3E4FDC
+S315006105C060718293A4B5C6D7E8F90A1B2C3D4E5FCC
+S315006105D0708192A3B4C5D6E7F8091A2B3C4D5E6FBC
+S315006105E08091A2B3C4D5E6F708192A3B4C5D6E7FAC
+S315006105F090A1B2C3D4E5F60718293A4B5C6D7E8F9C
+S31500610600A0B1C2D3E4F5061728394A5B6C7D8E9F8B
+S31500610610B0C1D2E3F405162738495A6B7C8D9EAF7B
+S31500610620C0D1E2F30415263748596A7B8C9DAEBF6B
+S31500610630D0E1F2031425364758697A8B9CADBECF5B
+S31500610640E0F102132435465768798A9BACBDCEDF4B
+S31500610650F00112233445566778899AABBCCDDEEF3B
+S3150061066000112233445566778899AABBCCDDEEFF2B
+S31500610670102132435465768798A9BACBDCEDFE0F1B
+S315006106802031425364758697A8B9CADBECFD0E1F0B
+S3150061069030415263748596A7B8C9DAEBFC0D1E2FFB
+S315006106A0405162738495A6B7C8D9EAFB0C1D2E3FEB
+S315006106B05061728394A5B6C7D8E9FA0B1C2D3E4FDB
+S315006106C060718293A4B5C6D7E8F90A1B2C3D4E5FCB
+S315006106D0708192A3B4C5D6E7F8091A2B3C4D5E6FBB
+S315006106E08091A2B3C4D5E6F708192A3B4C5D6E7FAB
+S315006106F090A1B2C3D4E5F60718293A4B5C6D7E8F9B
+S31500610700A0B1C2D3E4F5061728394A5B6C7D8E9F8A
+S31500610710B0C1D2E3F405162738495A6B7C8D9EAF7A
+S31500610720C0D1E2F30415263748596A7B8C9DAEBF6A
+S31500610730D0E1F2031425364758697A8B9CADBECF5A
+S31500610740E0F102132435465768798A9BACBDCEDF4A
+S31500610750F00112233445566778899AABBCCDDEEF3A
+S3150061076000112233445566778899AABBCCDDEEFF2A
+S31500610770102132435465768798A9BACBDCEDFE0F1A
+S315006107802031425364758697A8B9CADBECFD0E1F0A
+S3150061079030415263748596A7B8C9DAEBFC0D1E2FFA
+S315006107A0405162738495A6B7C8D9EAFB0C1D2E3FEA
+S315006107B05061728394A5B6C7D8E9FA0B1C2D3E4FDA
+S315006107C060718293A4B5C6D7E8F90A1B2C3D4E5FCA
+S315006107D0708192A3B4C5D6E7F8091A2B3C4D5E6FBA
+S315006107E08091A2B3C4D5E6F708192A3B4C5D6E7FAA
+S315006107F090A1B2C3D4E5F60718293A4B5C6D7E8F9A
+S31500610800A0B1C2D3E4F5061728394A5B6C7D8E9F89
+S31500610810B0C1D2E3F405162738495A6B7C8D9EAF79
+S31500610820C0D1E2F30415263748596A7B8C9DAEBF69
+S31500610830D0E1F2031425364758697A8B9CADBECF59
+S31500610840E0F102132435465768798A9BACBDCEDF49
+S31500610850F00112233445566778899AABBCCDDEEF39
+S3150061086000112233445566778899AABBCCDDEEFF29
+S31500610870102132435465768798A9BACBDCEDFE0F19
+S315006108802031425364758697A8B9CADBECFD0E1F09
+S3150061089030415263748596A7B8C9DAEBFC0D1E2FF9
+S315006108A0405162738495A6B7C8D9EAFB0C1D2E3FE9
+S315006108B05061728394A5B6C7D8E9FA0B1C2D3E4FD9
+S315006108C060718293A4B5C6D7E8F90A1B2C3D4E5FC9
+S315006108D0708192A3B4C5D6E7F8091A2B3C4D5E6FB9
+S315006108E08091A2B3C4D5E6F708192A3B4C5D6E7FA9
+S315006108F090A1B2C3D4E5F60718293A4B5C6D7E8F99
+S31500610900A0B1C2D3E4F5061728394A5B6C7D8E9F88
+S31500610910B0C1D2E3F405162738495A6B7C8D9EAF78
+S31500610920C0D1E2F30415263748596A7B8C9DAEBF68
+S31500610930D0E1F2031425364758697A8B9CADBECF58
+S31500610940E0F102132435465768798A9BACBDCEDF48
+S31500610950F00112233445566778899AABBCCDDEEF38
+S3150061096000112233445566778899AABBCCDDEEFF28
+S31500610970102132435465768798A9BACBDCEDFE0F18
+S315006109802031425364758697A8B9CADBECFD0E1F08
+S3150061099030415263748596A7B8C9DAEBFC0D1E2FF8
+S315006109A0405162738495A6B7C8D9EAFB0C1D2E3FE8
+S315006109B05061728394A5B6C7D8E9FA0B1C2D3E4FD8
+S315006109C060718293A4B5C6D7E8F90A1B2C3D4E5FC8
+S315006109D0708192A3B4C5D6E7F8091A2B3C4D5E6FB8
+S315006109E08091A2B3C4D5E6F708192A3B4C5D6E7FA8
+S315006109F090A1B2C3D4E5F60718293A4B5C6D7E8F98
+S31500610A00A0B1C2D3E4F5061728394A5B6C7D8E9F87
+S31500610A10B0C1D2E3F405162738495A6B7C8D9EAF77
+S31500610A20C0D1E2F30415263748596A7B8C9DAEBF67
+S31500610A30D0E1F2031425364758697A8B9CADBECF57
+S31500610A40E0F102132435465768798A9BACBDCEDF47
+S31500610A50F00112233445566778899AABBCCDDEEF37
+S31500610A6000112233445566778899AABBCCDDEEFF27
+S31500610A70102132435465768798A9BACBDCEDFE0F17
+S31500610A802031425364758697A8B9CADBECFD0E1F07
+S31500610A9030415263748596A7B8C9DAEBFC0D1E2FF7
+S31500610AA0405162738495A6B7C8D9EAFB0C1D2E3FE7
+S31500610AB05061728394A5B6C7D8E9FA0B1C2D3E4FD7
+S31500610AC060718293A4B5C6D7E8F90A1B2C3D4E5FC7
+S31500610AD0708192A3B4C5D6E7F8091A2B3C4D5E6FB7
+S31500610AE08091A2B3C4D5E6F708192A3B4C5D6E7FA7
+S31500610AF090A1B2C3D4E5F60718293A4B5C6D7E8F97
+S31500610B00A0B1C2D3E4F5061728394A5B6C7D8E9F86
+S31500610B10B0C1D2E3F405162738495A6B7C8D9EAF76
+S31500610B20C0D1E2F30415263748596A7B8C9DAEBF66
+S31500610B30D0E1F2031425364758697A8B9CADBECF56
+S31500610B40E0F102132435465768798A9BACBDCEDF46
+S31500610B50F00112233445566778899AABBCCDDEEF36
+S31500610B6000112233445566778899AABBCCDDEEFF26
+S31500610B70102132435465768798A9BACBDCEDFE0F16
+S31500610B802031425364758697A8B9CADBECFD0E1F06
+S31500610B9030415263748596A7B8C9DAEBFC0D1E2FF6
+S31500610BA0405162738495A6B7C8D9EAFB0C1D2E3FE6
+S31500610BB05061728394A5B6C7D8E9FA0B1C2D3E4FD6
+S31500610BC060718293A4B5C6D7E8F90A1B2C3D4E5FC6
+S31500610BD0708192A3B4C5D6E7F8091A2B3C4D5E6FB6
+S31500610BE08091A2B3C4D5E6F708192A3B4C5D6E7FA6
+S31500610BF090A1B2C3D4E5F60718293A4B5C6D7E8F96
+S31500610C00A0B1C2D3E4F5061728394A5B6C7D8E9F85
+S31500610C10B0C1D2E3F405162738495A6B7C8D9EAF75
+S31500610C20C0D1E2F30415263748596A7B8C9DAEBF65
+S31500610C30D0E1F2031425364758697A8B9CADBECF55
+S31500610C40E0F102132435465768798A9BACBDCEDF45
+S31500610C50F00112233445566778899AABBCCDDEEF35
+S31500610C6000112233445566778899AABBCCDDEEFF25
+S31500610C70102132435465768798A9BACBDCEDFE0F15
+S31500610C802031425364758697A8B9CADBECFD0E1F05
+S31500610C9030415263748596A7B8C9DAEBFC0D1E2FF5
+S31500610CA0405162738495A6B7C8D9EAFB0C1D2E3FE5
+S31500610CB05061728394A5B6C7D8E9FA0B1C2D3E4FD5
+S31500610CC060718293A4B5C6D7E8F90A1B2C3D4E5FC5
+S31500610CD0708192A3B4C5D6E7F8091A2B3C4D5E6FB5
+S31500610CE08091A2B3C4D5E6F708192A3B4C5D6E7FA5
+S31500610CF090A1B2C3D4E5F60718293A4B5C6D7E8F95
+S31500610D00A0B1C2D3E4F5061728394A5B6C7D8E9F84
+S31500610D10B0C1D2E3F405162738495A6B7C8D9EAF74
+S31500610D20C0D1E2F30415263748596A7B8C9DAEBF64
+S31500610D30D0E1F2031425364758697A8B9CADBECF54
+S31500610D40E0F102132435465768798A9BACBDCEDF44
+S31500610D50F00112233445566778899AABBCCDDEEF34
+S31500610D6000112233445566778899AABBCCDDEEFF24
+S31500610D70102132435465768798A9BACBDCEDFE0F14
+S31500610D802031425364758697A8B9CADBECFD0E1F04
+S31500610D9030415263748596A7B8C9DAEBFC0D1E2FF4
+S31500610DA0405162738495A6B7C8D9EAFB0C1D2E3FE4
+S31500610DB05061728394A5B6C7D8E9FA0B1C2D3E4FD4
+S31500610DC060718293A4B5C6D7E8F90A1B2C3D4E5FC4
+S31500610DD0708192A3B4C5D6E7F8091A2B3C4D5E6FB4
+S31500610DE08091A2B3C4D5E6F708192A3B4C5D6E7FA4
+S31500610DF090A1B2C3D4E5F60718293A4B5C6D7E8F94
+S31500610E00A0B1C2D3E4F5061728394A5B6C7D8E9F83
+S31500610E10B0C1D2E3F405162738495A6B7C8D9EAF73
+S31500610E20C0D1E2F30415263748596A7B8C9DAEBF63
+S31500610E30D0E1F2031425364758697A8B9CADBECF53
+S31500610E40E0F102132435465768798A9BACBDCEDF43
+S31500610E50F00112233445566778899AABBCCDDEEF33
+S31500610E6000112233445566778899AABBCCDDEEFF23
+S31500610E70102132435465768798A9BACBDCEDFE0F13
+S31500610E802031425364758697A8B9CADBECFD0E1F03
+S31500610E9030415263748596A7B8C9DAEBFC0D1E2FF3
+S31500610EA0405162738495A6B7C8D9EAFB0C1D2E3FE3
+S31500610EB05061728394A5B6C7D8E9FA0B1C2D3E4FD3
+S31500610EC060718293A4B5C6D7E8F90A1B2C3D4E5FC3
+S31500610ED0708192A3B4C5D6E7F8091A2B3C4D5E6FB3
+S31500610EE08091A2B3C4D5E6F708192A3B4C5D6E7FA3
+S31500610EF090A1B2C3D4E5F60718293A4B5C6D7E8F93
+S31500610F00A0B1C2D3E4F5061728394A5B6C7D8E9F82
+S31500610F10B0C1D2E3F405162738495A6B7C8D9EAF72
+S31500610F20C0D1E2F30415263748596A7B8C9DAEBF62
+S31500610F30D0E1F2031425364758697A8B9CADBECF52
+S31500610F40E0F102132435465768798A9BACBDCEDF42
+S31500610F50F00112233445566778899AABBCCDDEEF32
+S31500610F6000112233445566778899AABBCCDDEEFF22
+S31500610F70102132435465768798A9BACBDCEDFE0F12
+S31500610F802031425364758697A8B9CADBECFD0E1F02
+S31500610F9030415263748596A7B8C9DAEBFC0D1E2FF2
+S31500610FA0405162738495A6B7C8D9EAFB0C1D2E3FE2
+S31500610FB05061728394A5B6C7D8E9FA0B1C2D3E4FD2
+S31500610FC060718293A4B5C6D7E8F90A1B2C3D4E5FC2
+S31500610FD0708192A3B4C5D6E7F8091A2B3C4D5E6FB2
+S31500610FE08091A2B3C4D5E6F708192A3B4C5D6E7FA2
+S31500610FF090A1B2C3D4E5F60718293A4B5C6D7E8F92
+S31500611000A0B1C2D3E4F5061728394A5B6C7D8E9F81
+S31500611010B0C1D2E3F405162738495A6B7C8D9EAF71
+S31500611020C0D1E2F30415263748596A7B8C9DAEBF61
+S31500611030D0E1F2031425364758697A8B9CADBECF51
+S31500611040E0F102132435465768798A9BACBDCEDF41
+S31500611050F00112233445566778899AABBCCDDEEF31
diff --git a/memory/org.eclipse.cdt.debug.core.memory.tests/data/memory_10000.txt b/memory/org.eclipse.cdt.debug.core.memory.tests/data/memory_10000.txt
new file mode 100644
index 00000000000..b44b074bb28
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.core.memory.tests/data/memory_10000.txt
@@ -0,0 +1,2048 @@
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
diff --git a/memory/org.eclipse.cdt.debug.core.memory.tests/data/memory_10001.bin b/memory/org.eclipse.cdt.debug.core.memory.tests/data/memory_10001.bin
new file mode 100644
index 00000000000..7097662d93a
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.core.memory.tests/data/memory_10001.bin
Binary files differ
diff --git a/memory/org.eclipse.cdt.debug.core.memory.tests/data/memory_10001.srec b/memory/org.eclipse.cdt.debug.core.memory.tests/data/memory_10001.srec
new file mode 100644
index 00000000000..1ff8296301d
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.core.memory.tests/data/memory_10001.srec
@@ -0,0 +1,4097 @@
+S3150060106000112233445566778899AABBCCDDEEFF22
+S31500601070102132435465768798A9BACBDCEDFE0F12
+S315006010802031425364758697A8B9CADBECFD0E1F02
+S3150060109030415263748596A7B8C9DAEBFC0D1E2FF2
+S315006010A0405162738495A6B7C8D9EAFB0C1D2E3FE2
+S315006010B05061728394A5B6C7D8E9FA0B1C2D3E4FD2
+S315006010C060718293A4B5C6D7E8F90A1B2C3D4E5FC2
+S315006010D0708192A3B4C5D6E7F8091A2B3C4D5E6FB2
+S315006010E08091A2B3C4D5E6F708192A3B4C5D6E7FA2
+S315006010F090A1B2C3D4E5F60718293A4B5C6D7E8F92
+S31500601100A0B1C2D3E4F5061728394A5B6C7D8E9F81
+S31500601110B0C1D2E3F405162738495A6B7C8D9EAF71
+S31500601120C0D1E2F30415263748596A7B8C9DAEBF61
+S31500601130D0E1F2031425364758697A8B9CADBECF51
+S31500601140E0F102132435465768798A9BACBDCEDF41
+S31500601150F00112233445566778899AABBCCDDEEF31
+S3150060116000112233445566778899AABBCCDDEEFF21
+S31500601170102132435465768798A9BACBDCEDFE0F11
+S315006011802031425364758697A8B9CADBECFD0E1F01
+S3150060119030415263748596A7B8C9DAEBFC0D1E2FF1
+S315006011A0405162738495A6B7C8D9EAFB0C1D2E3FE1
+S315006011B05061728394A5B6C7D8E9FA0B1C2D3E4FD1
+S315006011C060718293A4B5C6D7E8F90A1B2C3D4E5FC1
+S315006011D0708192A3B4C5D6E7F8091A2B3C4D5E6FB1
+S315006011E08091A2B3C4D5E6F708192A3B4C5D6E7FA1
+S315006011F090A1B2C3D4E5F60718293A4B5C6D7E8F91
+S31500601200A0B1C2D3E4F5061728394A5B6C7D8E9F80
+S31500601210B0C1D2E3F405162738495A6B7C8D9EAF70
+S31500601220C0D1E2F30415263748596A7B8C9DAEBF60
+S31500601230D0E1F2031425364758697A8B9CADBECF50
+S31500601240E0F102132435465768798A9BACBDCEDF40
+S31500601250F00112233445566778899AABBCCDDEEF30
+S3150060126000112233445566778899AABBCCDDEEFF20
+S31500601270102132435465768798A9BACBDCEDFE0F10
+S315006012802031425364758697A8B9CADBECFD0E1F00
+S3150060129030415263748596A7B8C9DAEBFC0D1E2FF0
+S315006012A0405162738495A6B7C8D9EAFB0C1D2E3FE0
+S315006012B05061728394A5B6C7D8E9FA0B1C2D3E4FD0
+S315006012C060718293A4B5C6D7E8F90A1B2C3D4E5FC0
+S315006012D0708192A3B4C5D6E7F8091A2B3C4D5E6FB0
+S315006012E08091A2B3C4D5E6F708192A3B4C5D6E7FA0
+S315006012F090A1B2C3D4E5F60718293A4B5C6D7E8F90
+S31500601300A0B1C2D3E4F5061728394A5B6C7D8E9F7F
+S31500601310B0C1D2E3F405162738495A6B7C8D9EAF6F
+S31500601320C0D1E2F30415263748596A7B8C9DAEBF5F
+S31500601330D0E1F2031425364758697A8B9CADBECF4F
+S31500601340E0F102132435465768798A9BACBDCEDF3F
+S31500601350F00112233445566778899AABBCCDDEEF2F
+S3150060136000112233445566778899AABBCCDDEEFF1F
+S31500601370102132435465768798A9BACBDCEDFE0F0F
+S315006013802031425364758697A8B9CADBECFD0E1FFF
+S3150060139030415263748596A7B8C9DAEBFC0D1E2FEF
+S315006013A0405162738495A6B7C8D9EAFB0C1D2E3FDF
+S315006013B05061728394A5B6C7D8E9FA0B1C2D3E4FCF
+S315006013C060718293A4B5C6D7E8F90A1B2C3D4E5FBF
+S315006013D0708192A3B4C5D6E7F8091A2B3C4D5E6FAF
+S315006013E08091A2B3C4D5E6F708192A3B4C5D6E7F9F
+S315006013F090A1B2C3D4E5F60718293A4B5C6D7E8F8F
+S31500601400A0B1C2D3E4F5061728394A5B6C7D8E9F7E
+S31500601410B0C1D2E3F405162738495A6B7C8D9EAF6E
+S31500601420C0D1E2F30415263748596A7B8C9DAEBF5E
+S31500601430D0E1F2031425364758697A8B9CADBECF4E
+S31500601440E0F102132435465768798A9BACBDCEDF3E
+S31500601450F00112233445566778899AABBCCDDEEF2E
+S3150060146000112233445566778899AABBCCDDEEFF1E
+S31500601470102132435465768798A9BACBDCEDFE0F0E
+S315006014802031425364758697A8B9CADBECFD0E1FFE
+S3150060149030415263748596A7B8C9DAEBFC0D1E2FEE
+S315006014A0405162738495A6B7C8D9EAFB0C1D2E3FDE
+S315006014B05061728394A5B6C7D8E9FA0B1C2D3E4FCE
+S315006014C060718293A4B5C6D7E8F90A1B2C3D4E5FBE
+S315006014D0708192A3B4C5D6E7F8091A2B3C4D5E6FAE
+S315006014E08091A2B3C4D5E6F708192A3B4C5D6E7F9E
+S315006014F090A1B2C3D4E5F60718293A4B5C6D7E8F8E
+S31500601500A0B1C2D3E4F5061728394A5B6C7D8E9F7D
+S31500601510B0C1D2E3F405162738495A6B7C8D9EAF6D
+S31500601520C0D1E2F30415263748596A7B8C9DAEBF5D
+S31500601530D0E1F2031425364758697A8B9CADBECF4D
+S31500601540E0F102132435465768798A9BACBDCEDF3D
+S31500601550F00112233445566778899AABBCCDDEEF2D
+S3150060156000112233445566778899AABBCCDDEEFF1D
+S31500601570102132435465768798A9BACBDCEDFE0F0D
+S315006015802031425364758697A8B9CADBECFD0E1FFD
+S3150060159030415263748596A7B8C9DAEBFC0D1E2FED
+S315006015A0405162738495A6B7C8D9EAFB0C1D2E3FDD
+S315006015B05061728394A5B6C7D8E9FA0B1C2D3E4FCD
+S315006015C060718293A4B5C6D7E8F90A1B2C3D4E5FBD
+S315006015D0708192A3B4C5D6E7F8091A2B3C4D5E6FAD
+S315006015E08091A2B3C4D5E6F708192A3B4C5D6E7F9D
+S315006015F090A1B2C3D4E5F60718293A4B5C6D7E8F8D
+S31500601600A0B1C2D3E4F5061728394A5B6C7D8E9F7C
+S31500601610B0C1D2E3F405162738495A6B7C8D9EAF6C
+S31500601620C0D1E2F30415263748596A7B8C9DAEBF5C
+S31500601630D0E1F2031425364758697A8B9CADBECF4C
+S31500601640E0F102132435465768798A9BACBDCEDF3C
+S31500601650F00112233445566778899AABBCCDDEEF2C
+S3150060166000112233445566778899AABBCCDDEEFF1C
+S31500601670102132435465768798A9BACBDCEDFE0F0C
+S315006016802031425364758697A8B9CADBECFD0E1FFC
+S3150060169030415263748596A7B8C9DAEBFC0D1E2FEC
+S315006016A0405162738495A6B7C8D9EAFB0C1D2E3FDC
+S315006016B05061728394A5B6C7D8E9FA0B1C2D3E4FCC
+S315006016C060718293A4B5C6D7E8F90A1B2C3D4E5FBC
+S315006016D0708192A3B4C5D6E7F8091A2B3C4D5E6FAC
+S315006016E08091A2B3C4D5E6F708192A3B4C5D6E7F9C
+S315006016F090A1B2C3D4E5F60718293A4B5C6D7E8F8C
+S31500601700A0B1C2D3E4F5061728394A5B6C7D8E9F7B
+S31500601710B0C1D2E3F405162738495A6B7C8D9EAF6B
+S31500601720C0D1E2F30415263748596A7B8C9DAEBF5B
+S31500601730D0E1F2031425364758697A8B9CADBECF4B
+S31500601740E0F102132435465768798A9BACBDCEDF3B
+S31500601750F00112233445566778899AABBCCDDEEF2B
+S3150060176000112233445566778899AABBCCDDEEFF1B
+S31500601770102132435465768798A9BACBDCEDFE0F0B
+S315006017802031425364758697A8B9CADBECFD0E1FFB
+S3150060179030415263748596A7B8C9DAEBFC0D1E2FEB
+S315006017A0405162738495A6B7C8D9EAFB0C1D2E3FDB
+S315006017B05061728394A5B6C7D8E9FA0B1C2D3E4FCB
+S315006017C060718293A4B5C6D7E8F90A1B2C3D4E5FBB
+S315006017D0708192A3B4C5D6E7F8091A2B3C4D5E6FAB
+S315006017E08091A2B3C4D5E6F708192A3B4C5D6E7F9B
+S315006017F090A1B2C3D4E5F60718293A4B5C6D7E8F8B
+S31500601800A0B1C2D3E4F5061728394A5B6C7D8E9F7A
+S31500601810B0C1D2E3F405162738495A6B7C8D9EAF6A
+S31500601820C0D1E2F30415263748596A7B8C9DAEBF5A
+S31500601830D0E1F2031425364758697A8B9CADBECF4A
+S31500601840E0F102132435465768798A9BACBDCEDF3A
+S31500601850F00112233445566778899AABBCCDDEEF2A
+S3150060186000112233445566778899AABBCCDDEEFF1A
+S31500601870102132435465768798A9BACBDCEDFE0F0A
+S315006018802031425364758697A8B9CADBECFD0E1FFA
+S3150060189030415263748596A7B8C9DAEBFC0D1E2FEA
+S315006018A0405162738495A6B7C8D9EAFB0C1D2E3FDA
+S315006018B05061728394A5B6C7D8E9FA0B1C2D3E4FCA
+S315006018C060718293A4B5C6D7E8F90A1B2C3D4E5FBA
+S315006018D0708192A3B4C5D6E7F8091A2B3C4D5E6FAA
+S315006018E08091A2B3C4D5E6F708192A3B4C5D6E7F9A
+S315006018F090A1B2C3D4E5F60718293A4B5C6D7E8F8A
+S31500601900A0B1C2D3E4F5061728394A5B6C7D8E9F79
+S31500601910B0C1D2E3F405162738495A6B7C8D9EAF69
+S31500601920C0D1E2F30415263748596A7B8C9DAEBF59
+S31500601930D0E1F2031425364758697A8B9CADBECF49
+S31500601940E0F102132435465768798A9BACBDCEDF39
+S31500601950F00112233445566778899AABBCCDDEEF29
+S3150060196000112233445566778899AABBCCDDEEFF19
+S31500601970102132435465768798A9BACBDCEDFE0F09
+S315006019802031425364758697A8B9CADBECFD0E1FF9
+S3150060199030415263748596A7B8C9DAEBFC0D1E2FE9
+S315006019A0405162738495A6B7C8D9EAFB0C1D2E3FD9
+S315006019B05061728394A5B6C7D8E9FA0B1C2D3E4FC9
+S315006019C060718293A4B5C6D7E8F90A1B2C3D4E5FB9
+S315006019D0708192A3B4C5D6E7F8091A2B3C4D5E6FA9
+S315006019E08091A2B3C4D5E6F708192A3B4C5D6E7F99
+S315006019F090A1B2C3D4E5F60718293A4B5C6D7E8F89
+S31500601A00A0B1C2D3E4F5061728394A5B6C7D8E9F78
+S31500601A10B0C1D2E3F405162738495A6B7C8D9EAF68
+S31500601A20C0D1E2F30415263748596A7B8C9DAEBF58
+S31500601A30D0E1F2031425364758697A8B9CADBECF48
+S31500601A40E0F102132435465768798A9BACBDCEDF38
+S31500601A50F00112233445566778899AABBCCDDEEF28
+S31500601A6000112233445566778899AABBCCDDEEFF18
+S31500601A70102132435465768798A9BACBDCEDFE0F08
+S31500601A802031425364758697A8B9CADBECFD0E1FF8
+S31500601A9030415263748596A7B8C9DAEBFC0D1E2FE8
+S31500601AA0405162738495A6B7C8D9EAFB0C1D2E3FD8
+S31500601AB05061728394A5B6C7D8E9FA0B1C2D3E4FC8
+S31500601AC060718293A4B5C6D7E8F90A1B2C3D4E5FB8
+S31500601AD0708192A3B4C5D6E7F8091A2B3C4D5E6FA8
+S31500601AE08091A2B3C4D5E6F708192A3B4C5D6E7F98
+S31500601AF090A1B2C3D4E5F60718293A4B5C6D7E8F88
+S31500601B00A0B1C2D3E4F5061728394A5B6C7D8E9F77
+S31500601B10B0C1D2E3F405162738495A6B7C8D9EAF67
+S31500601B20C0D1E2F30415263748596A7B8C9DAEBF57
+S31500601B30D0E1F2031425364758697A8B9CADBECF47
+S31500601B40E0F102132435465768798A9BACBDCEDF37
+S31500601B50F00112233445566778899AABBCCDDEEF27
+S31500601B6000112233445566778899AABBCCDDEEFF17
+S31500601B70102132435465768798A9BACBDCEDFE0F07
+S31500601B802031425364758697A8B9CADBECFD0E1FF7
+S31500601B9030415263748596A7B8C9DAEBFC0D1E2FE7
+S31500601BA0405162738495A6B7C8D9EAFB0C1D2E3FD7
+S31500601BB05061728394A5B6C7D8E9FA0B1C2D3E4FC7
+S31500601BC060718293A4B5C6D7E8F90A1B2C3D4E5FB7
+S31500601BD0708192A3B4C5D6E7F8091A2B3C4D5E6FA7
+S31500601BE08091A2B3C4D5E6F708192A3B4C5D6E7F97
+S31500601BF090A1B2C3D4E5F60718293A4B5C6D7E8F87
+S31500601C00A0B1C2D3E4F5061728394A5B6C7D8E9F76
+S31500601C10B0C1D2E3F405162738495A6B7C8D9EAF66
+S31500601C20C0D1E2F30415263748596A7B8C9DAEBF56
+S31500601C30D0E1F2031425364758697A8B9CADBECF46
+S31500601C40E0F102132435465768798A9BACBDCEDF36
+S31500601C50F00112233445566778899AABBCCDDEEF26
+S31500601C6000112233445566778899AABBCCDDEEFF16
+S31500601C70102132435465768798A9BACBDCEDFE0F06
+S31500601C802031425364758697A8B9CADBECFD0E1FF6
+S31500601C9030415263748596A7B8C9DAEBFC0D1E2FE6
+S31500601CA0405162738495A6B7C8D9EAFB0C1D2E3FD6
+S31500601CB05061728394A5B6C7D8E9FA0B1C2D3E4FC6
+S31500601CC060718293A4B5C6D7E8F90A1B2C3D4E5FB6
+S31500601CD0708192A3B4C5D6E7F8091A2B3C4D5E6FA6
+S31500601CE08091A2B3C4D5E6F708192A3B4C5D6E7F96
+S31500601CF090A1B2C3D4E5F60718293A4B5C6D7E8F86
+S31500601D00A0B1C2D3E4F5061728394A5B6C7D8E9F75
+S31500601D10B0C1D2E3F405162738495A6B7C8D9EAF65
+S31500601D20C0D1E2F30415263748596A7B8C9DAEBF55
+S31500601D30D0E1F2031425364758697A8B9CADBECF45
+S31500601D40E0F102132435465768798A9BACBDCEDF35
+S31500601D50F00112233445566778899AABBCCDDEEF25
+S31500601D6000112233445566778899AABBCCDDEEFF15
+S31500601D70102132435465768798A9BACBDCEDFE0F05
+S31500601D802031425364758697A8B9CADBECFD0E1FF5
+S31500601D9030415263748596A7B8C9DAEBFC0D1E2FE5
+S31500601DA0405162738495A6B7C8D9EAFB0C1D2E3FD5
+S31500601DB05061728394A5B6C7D8E9FA0B1C2D3E4FC5
+S31500601DC060718293A4B5C6D7E8F90A1B2C3D4E5FB5
+S31500601DD0708192A3B4C5D6E7F8091A2B3C4D5E6FA5
+S31500601DE08091A2B3C4D5E6F708192A3B4C5D6E7F95
+S31500601DF090A1B2C3D4E5F60718293A4B5C6D7E8F85
+S31500601E00A0B1C2D3E4F5061728394A5B6C7D8E9F74
+S31500601E10B0C1D2E3F405162738495A6B7C8D9EAF64
+S31500601E20C0D1E2F30415263748596A7B8C9DAEBF54
+S31500601E30D0E1F2031425364758697A8B9CADBECF44
+S31500601E40E0F102132435465768798A9BACBDCEDF34
+S31500601E50F00112233445566778899AABBCCDDEEF24
+S31500601E6000112233445566778899AABBCCDDEEFF14
+S31500601E70102132435465768798A9BACBDCEDFE0F04
+S31500601E802031425364758697A8B9CADBECFD0E1FF4
+S31500601E9030415263748596A7B8C9DAEBFC0D1E2FE4
+S31500601EA0405162738495A6B7C8D9EAFB0C1D2E3FD4
+S31500601EB05061728394A5B6C7D8E9FA0B1C2D3E4FC4
+S31500601EC060718293A4B5C6D7E8F90A1B2C3D4E5FB4
+S31500601ED0708192A3B4C5D6E7F8091A2B3C4D5E6FA4
+S31500601EE08091A2B3C4D5E6F708192A3B4C5D6E7F94
+S31500601EF090A1B2C3D4E5F60718293A4B5C6D7E8F84
+S31500601F00A0B1C2D3E4F5061728394A5B6C7D8E9F73
+S31500601F10B0C1D2E3F405162738495A6B7C8D9EAF63
+S31500601F20C0D1E2F30415263748596A7B8C9DAEBF53
+S31500601F30D0E1F2031425364758697A8B9CADBECF43
+S31500601F40E0F102132435465768798A9BACBDCEDF33
+S31500601F50F00112233445566778899AABBCCDDEEF23
+S31500601F6000112233445566778899AABBCCDDEEFF13
+S31500601F70102132435465768798A9BACBDCEDFE0F03
+S31500601F802031425364758697A8B9CADBECFD0E1FF3
+S31500601F9030415263748596A7B8C9DAEBFC0D1E2FE3
+S31500601FA0405162738495A6B7C8D9EAFB0C1D2E3FD3
+S31500601FB05061728394A5B6C7D8E9FA0B1C2D3E4FC3
+S31500601FC060718293A4B5C6D7E8F90A1B2C3D4E5FB3
+S31500601FD0708192A3B4C5D6E7F8091A2B3C4D5E6FA3
+S31500601FE08091A2B3C4D5E6F708192A3B4C5D6E7F93
+S31500601FF090A1B2C3D4E5F60718293A4B5C6D7E8F83
+S31500602000A0B1C2D3E4F5061728394A5B6C7D8E9F72
+S31500602010B0C1D2E3F405162738495A6B7C8D9EAF62
+S31500602020C0D1E2F30415263748596A7B8C9DAEBF52
+S31500602030D0E1F2031425364758697A8B9CADBECF42
+S31500602040E0F102132435465768798A9BACBDCEDF32
+S31500602050F00112233445566778899AABBCCDDEEF22
+S3150060206000112233445566778899AABBCCDDEEFF12
+S31500602070102132435465768798A9BACBDCEDFE0F02
+S315006020802031425364758697A8B9CADBECFD0E1FF2
+S3150060209030415263748596A7B8C9DAEBFC0D1E2FE2
+S315006020A0405162738495A6B7C8D9EAFB0C1D2E3FD2
+S315006020B05061728394A5B6C7D8E9FA0B1C2D3E4FC2
+S315006020C060718293A4B5C6D7E8F90A1B2C3D4E5FB2
+S315006020D0708192A3B4C5D6E7F8091A2B3C4D5E6FA2
+S315006020E08091A2B3C4D5E6F708192A3B4C5D6E7F92
+S315006020F090A1B2C3D4E5F60718293A4B5C6D7E8F82
+S31500602100A0B1C2D3E4F5061728394A5B6C7D8E9F71
+S31500602110B0C1D2E3F405162738495A6B7C8D9EAF61
+S31500602120C0D1E2F30415263748596A7B8C9DAEBF51
+S31500602130D0E1F2031425364758697A8B9CADBECF41
+S31500602140E0F102132435465768798A9BACBDCEDF31
+S31500602150F00112233445566778899AABBCCDDEEF21
+S3150060216000112233445566778899AABBCCDDEEFF11
+S31500602170102132435465768798A9BACBDCEDFE0F01
+S315006021802031425364758697A8B9CADBECFD0E1FF1
+S3150060219030415263748596A7B8C9DAEBFC0D1E2FE1
+S315006021A0405162738495A6B7C8D9EAFB0C1D2E3FD1
+S315006021B05061728394A5B6C7D8E9FA0B1C2D3E4FC1
+S315006021C060718293A4B5C6D7E8F90A1B2C3D4E5FB1
+S315006021D0708192A3B4C5D6E7F8091A2B3C4D5E6FA1
+S315006021E08091A2B3C4D5E6F708192A3B4C5D6E7F91
+S315006021F090A1B2C3D4E5F60718293A4B5C6D7E8F81
+S31500602200A0B1C2D3E4F5061728394A5B6C7D8E9F70
+S31500602210B0C1D2E3F405162738495A6B7C8D9EAF60
+S31500602220C0D1E2F30415263748596A7B8C9DAEBF50
+S31500602230D0E1F2031425364758697A8B9CADBECF40
+S31500602240E0F102132435465768798A9BACBDCEDF30
+S31500602250F00112233445566778899AABBCCDDEEF20
+S3150060226000112233445566778899AABBCCDDEEFF10
+S31500602270102132435465768798A9BACBDCEDFE0F00
+S315006022802031425364758697A8B9CADBECFD0E1FF0
+S3150060229030415263748596A7B8C9DAEBFC0D1E2FE0
+S315006022A0405162738495A6B7C8D9EAFB0C1D2E3FD0
+S315006022B05061728394A5B6C7D8E9FA0B1C2D3E4FC0
+S315006022C060718293A4B5C6D7E8F90A1B2C3D4E5FB0
+S315006022D0708192A3B4C5D6E7F8091A2B3C4D5E6FA0
+S315006022E08091A2B3C4D5E6F708192A3B4C5D6E7F90
+S315006022F090A1B2C3D4E5F60718293A4B5C6D7E8F80
+S31500602300A0B1C2D3E4F5061728394A5B6C7D8E9F6F
+S31500602310B0C1D2E3F405162738495A6B7C8D9EAF5F
+S31500602320C0D1E2F30415263748596A7B8C9DAEBF4F
+S31500602330D0E1F2031425364758697A8B9CADBECF3F
+S31500602340E0F102132435465768798A9BACBDCEDF2F
+S31500602350F00112233445566778899AABBCCDDEEF1F
+S3150060236000112233445566778899AABBCCDDEEFF0F
+S31500602370102132435465768798A9BACBDCEDFE0FFF
+S315006023802031425364758697A8B9CADBECFD0E1FEF
+S3150060239030415263748596A7B8C9DAEBFC0D1E2FDF
+S315006023A0405162738495A6B7C8D9EAFB0C1D2E3FCF
+S315006023B05061728394A5B6C7D8E9FA0B1C2D3E4FBF
+S315006023C060718293A4B5C6D7E8F90A1B2C3D4E5FAF
+S315006023D0708192A3B4C5D6E7F8091A2B3C4D5E6F9F
+S315006023E08091A2B3C4D5E6F708192A3B4C5D6E7F8F
+S315006023F090A1B2C3D4E5F60718293A4B5C6D7E8F7F
+S31500602400A0B1C2D3E4F5061728394A5B6C7D8E9F6E
+S31500602410B0C1D2E3F405162738495A6B7C8D9EAF5E
+S31500602420C0D1E2F30415263748596A7B8C9DAEBF4E
+S31500602430D0E1F2031425364758697A8B9CADBECF3E
+S31500602440E0F102132435465768798A9BACBDCEDF2E
+S31500602450F00112233445566778899AABBCCDDEEF1E
+S3150060246000112233445566778899AABBCCDDEEFF0E
+S31500602470102132435465768798A9BACBDCEDFE0FFE
+S315006024802031425364758697A8B9CADBECFD0E1FEE
+S3150060249030415263748596A7B8C9DAEBFC0D1E2FDE
+S315006024A0405162738495A6B7C8D9EAFB0C1D2E3FCE
+S315006024B05061728394A5B6C7D8E9FA0B1C2D3E4FBE
+S315006024C060718293A4B5C6D7E8F90A1B2C3D4E5FAE
+S315006024D0708192A3B4C5D6E7F8091A2B3C4D5E6F9E
+S315006024E08091A2B3C4D5E6F708192A3B4C5D6E7F8E
+S315006024F090A1B2C3D4E5F60718293A4B5C6D7E8F7E
+S31500602500A0B1C2D3E4F5061728394A5B6C7D8E9F6D
+S31500602510B0C1D2E3F405162738495A6B7C8D9EAF5D
+S31500602520C0D1E2F30415263748596A7B8C9DAEBF4D
+S31500602530D0E1F2031425364758697A8B9CADBECF3D
+S31500602540E0F102132435465768798A9BACBDCEDF2D
+S31500602550F00112233445566778899AABBCCDDEEF1D
+S3150060256000112233445566778899AABBCCDDEEFF0D
+S31500602570102132435465768798A9BACBDCEDFE0FFD
+S315006025802031425364758697A8B9CADBECFD0E1FED
+S3150060259030415263748596A7B8C9DAEBFC0D1E2FDD
+S315006025A0405162738495A6B7C8D9EAFB0C1D2E3FCD
+S315006025B05061728394A5B6C7D8E9FA0B1C2D3E4FBD
+S315006025C060718293A4B5C6D7E8F90A1B2C3D4E5FAD
+S315006025D0708192A3B4C5D6E7F8091A2B3C4D5E6F9D
+S315006025E08091A2B3C4D5E6F708192A3B4C5D6E7F8D
+S315006025F090A1B2C3D4E5F60718293A4B5C6D7E8F7D
+S31500602600A0B1C2D3E4F5061728394A5B6C7D8E9F6C
+S31500602610B0C1D2E3F405162738495A6B7C8D9EAF5C
+S31500602620C0D1E2F30415263748596A7B8C9DAEBF4C
+S31500602630D0E1F2031425364758697A8B9CADBECF3C
+S31500602640E0F102132435465768798A9BACBDCEDF2C
+S31500602650F00112233445566778899AABBCCDDEEF1C
+S3150060266000112233445566778899AABBCCDDEEFF0C
+S31500602670102132435465768798A9BACBDCEDFE0FFC
+S315006026802031425364758697A8B9CADBECFD0E1FEC
+S3150060269030415263748596A7B8C9DAEBFC0D1E2FDC
+S315006026A0405162738495A6B7C8D9EAFB0C1D2E3FCC
+S315006026B05061728394A5B6C7D8E9FA0B1C2D3E4FBC
+S315006026C060718293A4B5C6D7E8F90A1B2C3D4E5FAC
+S315006026D0708192A3B4C5D6E7F8091A2B3C4D5E6F9C
+S315006026E08091A2B3C4D5E6F708192A3B4C5D6E7F8C
+S315006026F090A1B2C3D4E5F60718293A4B5C6D7E8F7C
+S31500602700A0B1C2D3E4F5061728394A5B6C7D8E9F6B
+S31500602710B0C1D2E3F405162738495A6B7C8D9EAF5B
+S31500602720C0D1E2F30415263748596A7B8C9DAEBF4B
+S31500602730D0E1F2031425364758697A8B9CADBECF3B
+S31500602740E0F102132435465768798A9BACBDCEDF2B
+S31500602750F00112233445566778899AABBCCDDEEF1B
+S3150060276000112233445566778899AABBCCDDEEFF0B
+S31500602770102132435465768798A9BACBDCEDFE0FFB
+S315006027802031425364758697A8B9CADBECFD0E1FEB
+S3150060279030415263748596A7B8C9DAEBFC0D1E2FDB
+S315006027A0405162738495A6B7C8D9EAFB0C1D2E3FCB
+S315006027B05061728394A5B6C7D8E9FA0B1C2D3E4FBB
+S315006027C060718293A4B5C6D7E8F90A1B2C3D4E5FAB
+S315006027D0708192A3B4C5D6E7F8091A2B3C4D5E6F9B
+S315006027E08091A2B3C4D5E6F708192A3B4C5D6E7F8B
+S315006027F090A1B2C3D4E5F60718293A4B5C6D7E8F7B
+S31500602800A0B1C2D3E4F5061728394A5B6C7D8E9F6A
+S31500602810B0C1D2E3F405162738495A6B7C8D9EAF5A
+S31500602820C0D1E2F30415263748596A7B8C9DAEBF4A
+S31500602830D0E1F2031425364758697A8B9CADBECF3A
+S31500602840E0F102132435465768798A9BACBDCEDF2A
+S31500602850F00112233445566778899AABBCCDDEEF1A
+S3150060286000112233445566778899AABBCCDDEEFF0A
+S31500602870102132435465768798A9BACBDCEDFE0FFA
+S315006028802031425364758697A8B9CADBECFD0E1FEA
+S3150060289030415263748596A7B8C9DAEBFC0D1E2FDA
+S315006028A0405162738495A6B7C8D9EAFB0C1D2E3FCA
+S315006028B05061728394A5B6C7D8E9FA0B1C2D3E4FBA
+S315006028C060718293A4B5C6D7E8F90A1B2C3D4E5FAA
+S315006028D0708192A3B4C5D6E7F8091A2B3C4D5E6F9A
+S315006028E08091A2B3C4D5E6F708192A3B4C5D6E7F8A
+S315006028F090A1B2C3D4E5F60718293A4B5C6D7E8F7A
+S31500602900A0B1C2D3E4F5061728394A5B6C7D8E9F69
+S31500602910B0C1D2E3F405162738495A6B7C8D9EAF59
+S31500602920C0D1E2F30415263748596A7B8C9DAEBF49
+S31500602930D0E1F2031425364758697A8B9CADBECF39
+S31500602940E0F102132435465768798A9BACBDCEDF29
+S31500602950F00112233445566778899AABBCCDDEEF19
+S3150060296000112233445566778899AABBCCDDEEFF09
+S31500602970102132435465768798A9BACBDCEDFE0FF9
+S315006029802031425364758697A8B9CADBECFD0E1FE9
+S3150060299030415263748596A7B8C9DAEBFC0D1E2FD9
+S315006029A0405162738495A6B7C8D9EAFB0C1D2E3FC9
+S315006029B05061728394A5B6C7D8E9FA0B1C2D3E4FB9
+S315006029C060718293A4B5C6D7E8F90A1B2C3D4E5FA9
+S315006029D0708192A3B4C5D6E7F8091A2B3C4D5E6F99
+S315006029E08091A2B3C4D5E6F708192A3B4C5D6E7F89
+S315006029F090A1B2C3D4E5F60718293A4B5C6D7E8F79
+S31500602A00A0B1C2D3E4F5061728394A5B6C7D8E9F68
+S31500602A10B0C1D2E3F405162738495A6B7C8D9EAF58
+S31500602A20C0D1E2F30415263748596A7B8C9DAEBF48
+S31500602A30D0E1F2031425364758697A8B9CADBECF38
+S31500602A40E0F102132435465768798A9BACBDCEDF28
+S31500602A50F00112233445566778899AABBCCDDEEF18
+S31500602A6000112233445566778899AABBCCDDEEFF08
+S31500602A70102132435465768798A9BACBDCEDFE0FF8
+S31500602A802031425364758697A8B9CADBECFD0E1FE8
+S31500602A9030415263748596A7B8C9DAEBFC0D1E2FD8
+S31500602AA0405162738495A6B7C8D9EAFB0C1D2E3FC8
+S31500602AB05061728394A5B6C7D8E9FA0B1C2D3E4FB8
+S31500602AC060718293A4B5C6D7E8F90A1B2C3D4E5FA8
+S31500602AD0708192A3B4C5D6E7F8091A2B3C4D5E6F98
+S31500602AE08091A2B3C4D5E6F708192A3B4C5D6E7F88
+S31500602AF090A1B2C3D4E5F60718293A4B5C6D7E8F78
+S31500602B00A0B1C2D3E4F5061728394A5B6C7D8E9F67
+S31500602B10B0C1D2E3F405162738495A6B7C8D9EAF57
+S31500602B20C0D1E2F30415263748596A7B8C9DAEBF47
+S31500602B30D0E1F2031425364758697A8B9CADBECF37
+S31500602B40E0F102132435465768798A9BACBDCEDF27
+S31500602B50F00112233445566778899AABBCCDDEEF17
+S31500602B6000112233445566778899AABBCCDDEEFF07
+S31500602B70102132435465768798A9BACBDCEDFE0FF7
+S31500602B802031425364758697A8B9CADBECFD0E1FE7
+S31500602B9030415263748596A7B8C9DAEBFC0D1E2FD7
+S31500602BA0405162738495A6B7C8D9EAFB0C1D2E3FC7
+S31500602BB05061728394A5B6C7D8E9FA0B1C2D3E4FB7
+S31500602BC060718293A4B5C6D7E8F90A1B2C3D4E5FA7
+S31500602BD0708192A3B4C5D6E7F8091A2B3C4D5E6F97
+S31500602BE08091A2B3C4D5E6F708192A3B4C5D6E7F87
+S31500602BF090A1B2C3D4E5F60718293A4B5C6D7E8F77
+S31500602C00A0B1C2D3E4F5061728394A5B6C7D8E9F66
+S31500602C10B0C1D2E3F405162738495A6B7C8D9EAF56
+S31500602C20C0D1E2F30415263748596A7B8C9DAEBF46
+S31500602C30D0E1F2031425364758697A8B9CADBECF36
+S31500602C40E0F102132435465768798A9BACBDCEDF26
+S31500602C50F00112233445566778899AABBCCDDEEF16
+S31500602C6000112233445566778899AABBCCDDEEFF06
+S31500602C70102132435465768798A9BACBDCEDFE0FF6
+S31500602C802031425364758697A8B9CADBECFD0E1FE6
+S31500602C9030415263748596A7B8C9DAEBFC0D1E2FD6
+S31500602CA0405162738495A6B7C8D9EAFB0C1D2E3FC6
+S31500602CB05061728394A5B6C7D8E9FA0B1C2D3E4FB6
+S31500602CC060718293A4B5C6D7E8F90A1B2C3D4E5FA6
+S31500602CD0708192A3B4C5D6E7F8091A2B3C4D5E6F96
+S31500602CE08091A2B3C4D5E6F708192A3B4C5D6E7F86
+S31500602CF090A1B2C3D4E5F60718293A4B5C6D7E8F76
+S31500602D00A0B1C2D3E4F5061728394A5B6C7D8E9F65
+S31500602D10B0C1D2E3F405162738495A6B7C8D9EAF55
+S31500602D20C0D1E2F30415263748596A7B8C9DAEBF45
+S31500602D30D0E1F2031425364758697A8B9CADBECF35
+S31500602D40E0F102132435465768798A9BACBDCEDF25
+S31500602D50F00112233445566778899AABBCCDDEEF15
+S31500602D6000112233445566778899AABBCCDDEEFF05
+S31500602D70102132435465768798A9BACBDCEDFE0FF5
+S31500602D802031425364758697A8B9CADBECFD0E1FE5
+S31500602D9030415263748596A7B8C9DAEBFC0D1E2FD5
+S31500602DA0405162738495A6B7C8D9EAFB0C1D2E3FC5
+S31500602DB05061728394A5B6C7D8E9FA0B1C2D3E4FB5
+S31500602DC060718293A4B5C6D7E8F90A1B2C3D4E5FA5
+S31500602DD0708192A3B4C5D6E7F8091A2B3C4D5E6F95
+S31500602DE08091A2B3C4D5E6F708192A3B4C5D6E7F85
+S31500602DF090A1B2C3D4E5F60718293A4B5C6D7E8F75
+S31500602E00A0B1C2D3E4F5061728394A5B6C7D8E9F64
+S31500602E10B0C1D2E3F405162738495A6B7C8D9EAF54
+S31500602E20C0D1E2F30415263748596A7B8C9DAEBF44
+S31500602E30D0E1F2031425364758697A8B9CADBECF34
+S31500602E40E0F102132435465768798A9BACBDCEDF24
+S31500602E50F00112233445566778899AABBCCDDEEF14
+S31500602E6000112233445566778899AABBCCDDEEFF04
+S31500602E70102132435465768798A9BACBDCEDFE0FF4
+S31500602E802031425364758697A8B9CADBECFD0E1FE4
+S31500602E9030415263748596A7B8C9DAEBFC0D1E2FD4
+S31500602EA0405162738495A6B7C8D9EAFB0C1D2E3FC4
+S31500602EB05061728394A5B6C7D8E9FA0B1C2D3E4FB4
+S31500602EC060718293A4B5C6D7E8F90A1B2C3D4E5FA4
+S31500602ED0708192A3B4C5D6E7F8091A2B3C4D5E6F94
+S31500602EE08091A2B3C4D5E6F708192A3B4C5D6E7F84
+S31500602EF090A1B2C3D4E5F60718293A4B5C6D7E8F74
+S31500602F00A0B1C2D3E4F5061728394A5B6C7D8E9F63
+S31500602F10B0C1D2E3F405162738495A6B7C8D9EAF53
+S31500602F20C0D1E2F30415263748596A7B8C9DAEBF43
+S31500602F30D0E1F2031425364758697A8B9CADBECF33
+S31500602F40E0F102132435465768798A9BACBDCEDF23
+S31500602F50F00112233445566778899AABBCCDDEEF13
+S31500602F6000112233445566778899AABBCCDDEEFF03
+S31500602F70102132435465768798A9BACBDCEDFE0FF3
+S31500602F802031425364758697A8B9CADBECFD0E1FE3
+S31500602F9030415263748596A7B8C9DAEBFC0D1E2FD3
+S31500602FA0405162738495A6B7C8D9EAFB0C1D2E3FC3
+S31500602FB05061728394A5B6C7D8E9FA0B1C2D3E4FB3
+S31500602FC060718293A4B5C6D7E8F90A1B2C3D4E5FA3
+S31500602FD0708192A3B4C5D6E7F8091A2B3C4D5E6F93
+S31500602FE08091A2B3C4D5E6F708192A3B4C5D6E7F83
+S31500602FF090A1B2C3D4E5F60718293A4B5C6D7E8F73
+S31500603000A0B1C2D3E4F5061728394A5B6C7D8E9F62
+S31500603010B0C1D2E3F405162738495A6B7C8D9EAF52
+S31500603020C0D1E2F30415263748596A7B8C9DAEBF42
+S31500603030D0E1F2031425364758697A8B9CADBECF32
+S31500603040E0F102132435465768798A9BACBDCEDF22
+S31500603050F00112233445566778899AABBCCDDEEF12
+S3150060306000112233445566778899AABBCCDDEEFF02
+S31500603070102132435465768798A9BACBDCEDFE0FF2
+S315006030802031425364758697A8B9CADBECFD0E1FE2
+S3150060309030415263748596A7B8C9DAEBFC0D1E2FD2
+S315006030A0405162738495A6B7C8D9EAFB0C1D2E3FC2
+S315006030B05061728394A5B6C7D8E9FA0B1C2D3E4FB2
+S315006030C060718293A4B5C6D7E8F90A1B2C3D4E5FA2
+S315006030D0708192A3B4C5D6E7F8091A2B3C4D5E6F92
+S315006030E08091A2B3C4D5E6F708192A3B4C5D6E7F82
+S315006030F090A1B2C3D4E5F60718293A4B5C6D7E8F72
+S31500603100A0B1C2D3E4F5061728394A5B6C7D8E9F61
+S31500603110B0C1D2E3F405162738495A6B7C8D9EAF51
+S31500603120C0D1E2F30415263748596A7B8C9DAEBF41
+S31500603130D0E1F2031425364758697A8B9CADBECF31
+S31500603140E0F102132435465768798A9BACBDCEDF21
+S31500603150F00112233445566778899AABBCCDDEEF11
+S3150060316000112233445566778899AABBCCDDEEFF01
+S31500603170102132435465768798A9BACBDCEDFE0FF1
+S315006031802031425364758697A8B9CADBECFD0E1FE1
+S3150060319030415263748596A7B8C9DAEBFC0D1E2FD1
+S315006031A0405162738495A6B7C8D9EAFB0C1D2E3FC1
+S315006031B05061728394A5B6C7D8E9FA0B1C2D3E4FB1
+S315006031C060718293A4B5C6D7E8F90A1B2C3D4E5FA1
+S315006031D0708192A3B4C5D6E7F8091A2B3C4D5E6F91
+S315006031E08091A2B3C4D5E6F708192A3B4C5D6E7F81
+S315006031F090A1B2C3D4E5F60718293A4B5C6D7E8F71
+S31500603200A0B1C2D3E4F5061728394A5B6C7D8E9F60
+S31500603210B0C1D2E3F405162738495A6B7C8D9EAF50
+S31500603220C0D1E2F30415263748596A7B8C9DAEBF40
+S31500603230D0E1F2031425364758697A8B9CADBECF30
+S31500603240E0F102132435465768798A9BACBDCEDF20
+S31500603250F00112233445566778899AABBCCDDEEF10
+S3150060326000112233445566778899AABBCCDDEEFF00
+S31500603270102132435465768798A9BACBDCEDFE0FF0
+S315006032802031425364758697A8B9CADBECFD0E1FE0
+S3150060329030415263748596A7B8C9DAEBFC0D1E2FD0
+S315006032A0405162738495A6B7C8D9EAFB0C1D2E3FC0
+S315006032B05061728394A5B6C7D8E9FA0B1C2D3E4FB0
+S315006032C060718293A4B5C6D7E8F90A1B2C3D4E5FA0
+S315006032D0708192A3B4C5D6E7F8091A2B3C4D5E6F90
+S315006032E08091A2B3C4D5E6F708192A3B4C5D6E7F80
+S315006032F090A1B2C3D4E5F60718293A4B5C6D7E8F70
+S31500603300A0B1C2D3E4F5061728394A5B6C7D8E9F5F
+S31500603310B0C1D2E3F405162738495A6B7C8D9EAF4F
+S31500603320C0D1E2F30415263748596A7B8C9DAEBF3F
+S31500603330D0E1F2031425364758697A8B9CADBECF2F
+S31500603340E0F102132435465768798A9BACBDCEDF1F
+S31500603350F00112233445566778899AABBCCDDEEF0F
+S3150060336000112233445566778899AABBCCDDEEFFFF
+S31500603370102132435465768798A9BACBDCEDFE0FEF
+S315006033802031425364758697A8B9CADBECFD0E1FDF
+S3150060339030415263748596A7B8C9DAEBFC0D1E2FCF
+S315006033A0405162738495A6B7C8D9EAFB0C1D2E3FBF
+S315006033B05061728394A5B6C7D8E9FA0B1C2D3E4FAF
+S315006033C060718293A4B5C6D7E8F90A1B2C3D4E5F9F
+S315006033D0708192A3B4C5D6E7F8091A2B3C4D5E6F8F
+S315006033E08091A2B3C4D5E6F708192A3B4C5D6E7F7F
+S315006033F090A1B2C3D4E5F60718293A4B5C6D7E8F6F
+S31500603400A0B1C2D3E4F5061728394A5B6C7D8E9F5E
+S31500603410B0C1D2E3F405162738495A6B7C8D9EAF4E
+S31500603420C0D1E2F30415263748596A7B8C9DAEBF3E
+S31500603430D0E1F2031425364758697A8B9CADBECF2E
+S31500603440E0F102132435465768798A9BACBDCEDF1E
+S31500603450F00112233445566778899AABBCCDDEEF0E
+S3150060346000112233445566778899AABBCCDDEEFFFE
+S31500603470102132435465768798A9BACBDCEDFE0FEE
+S315006034802031425364758697A8B9CADBECFD0E1FDE
+S3150060349030415263748596A7B8C9DAEBFC0D1E2FCE
+S315006034A0405162738495A6B7C8D9EAFB0C1D2E3FBE
+S315006034B05061728394A5B6C7D8E9FA0B1C2D3E4FAE
+S315006034C060718293A4B5C6D7E8F90A1B2C3D4E5F9E
+S315006034D0708192A3B4C5D6E7F8091A2B3C4D5E6F8E
+S315006034E08091A2B3C4D5E6F708192A3B4C5D6E7F7E
+S315006034F090A1B2C3D4E5F60718293A4B5C6D7E8F6E
+S31500603500A0B1C2D3E4F5061728394A5B6C7D8E9F5D
+S31500603510B0C1D2E3F405162738495A6B7C8D9EAF4D
+S31500603520C0D1E2F30415263748596A7B8C9DAEBF3D
+S31500603530D0E1F2031425364758697A8B9CADBECF2D
+S31500603540E0F102132435465768798A9BACBDCEDF1D
+S31500603550F00112233445566778899AABBCCDDEEF0D
+S3150060356000112233445566778899AABBCCDDEEFFFD
+S31500603570102132435465768798A9BACBDCEDFE0FED
+S315006035802031425364758697A8B9CADBECFD0E1FDD
+S3150060359030415263748596A7B8C9DAEBFC0D1E2FCD
+S315006035A0405162738495A6B7C8D9EAFB0C1D2E3FBD
+S315006035B05061728394A5B6C7D8E9FA0B1C2D3E4FAD
+S315006035C060718293A4B5C6D7E8F90A1B2C3D4E5F9D
+S315006035D0708192A3B4C5D6E7F8091A2B3C4D5E6F8D
+S315006035E08091A2B3C4D5E6F708192A3B4C5D6E7F7D
+S315006035F090A1B2C3D4E5F60718293A4B5C6D7E8F6D
+S31500603600A0B1C2D3E4F5061728394A5B6C7D8E9F5C
+S31500603610B0C1D2E3F405162738495A6B7C8D9EAF4C
+S31500603620C0D1E2F30415263748596A7B8C9DAEBF3C
+S31500603630D0E1F2031425364758697A8B9CADBECF2C
+S31500603640E0F102132435465768798A9BACBDCEDF1C
+S31500603650F00112233445566778899AABBCCDDEEF0C
+S3150060366000112233445566778899AABBCCDDEEFFFC
+S31500603670102132435465768798A9BACBDCEDFE0FEC
+S315006036802031425364758697A8B9CADBECFD0E1FDC
+S3150060369030415263748596A7B8C9DAEBFC0D1E2FCC
+S315006036A0405162738495A6B7C8D9EAFB0C1D2E3FBC
+S315006036B05061728394A5B6C7D8E9FA0B1C2D3E4FAC
+S315006036C060718293A4B5C6D7E8F90A1B2C3D4E5F9C
+S315006036D0708192A3B4C5D6E7F8091A2B3C4D5E6F8C
+S315006036E08091A2B3C4D5E6F708192A3B4C5D6E7F7C
+S315006036F090A1B2C3D4E5F60718293A4B5C6D7E8F6C
+S31500603700A0B1C2D3E4F5061728394A5B6C7D8E9F5B
+S31500603710B0C1D2E3F405162738495A6B7C8D9EAF4B
+S31500603720C0D1E2F30415263748596A7B8C9DAEBF3B
+S31500603730D0E1F2031425364758697A8B9CADBECF2B
+S31500603740E0F102132435465768798A9BACBDCEDF1B
+S31500603750F00112233445566778899AABBCCDDEEF0B
+S3150060376000112233445566778899AABBCCDDEEFFFB
+S31500603770102132435465768798A9BACBDCEDFE0FEB
+S315006037802031425364758697A8B9CADBECFD0E1FDB
+S3150060379030415263748596A7B8C9DAEBFC0D1E2FCB
+S315006037A0405162738495A6B7C8D9EAFB0C1D2E3FBB
+S315006037B05061728394A5B6C7D8E9FA0B1C2D3E4FAB
+S315006037C060718293A4B5C6D7E8F90A1B2C3D4E5F9B
+S315006037D0708192A3B4C5D6E7F8091A2B3C4D5E6F8B
+S315006037E08091A2B3C4D5E6F708192A3B4C5D6E7F7B
+S315006037F090A1B2C3D4E5F60718293A4B5C6D7E8F6B
+S31500603800A0B1C2D3E4F5061728394A5B6C7D8E9F5A
+S31500603810B0C1D2E3F405162738495A6B7C8D9EAF4A
+S31500603820C0D1E2F30415263748596A7B8C9DAEBF3A
+S31500603830D0E1F2031425364758697A8B9CADBECF2A
+S31500603840E0F102132435465768798A9BACBDCEDF1A
+S31500603850F00112233445566778899AABBCCDDEEF0A
+S3150060386000112233445566778899AABBCCDDEEFFFA
+S31500603870102132435465768798A9BACBDCEDFE0FEA
+S315006038802031425364758697A8B9CADBECFD0E1FDA
+S3150060389030415263748596A7B8C9DAEBFC0D1E2FCA
+S315006038A0405162738495A6B7C8D9EAFB0C1D2E3FBA
+S315006038B05061728394A5B6C7D8E9FA0B1C2D3E4FAA
+S315006038C060718293A4B5C6D7E8F90A1B2C3D4E5F9A
+S315006038D0708192A3B4C5D6E7F8091A2B3C4D5E6F8A
+S315006038E08091A2B3C4D5E6F708192A3B4C5D6E7F7A
+S315006038F090A1B2C3D4E5F60718293A4B5C6D7E8F6A
+S31500603900A0B1C2D3E4F5061728394A5B6C7D8E9F59
+S31500603910B0C1D2E3F405162738495A6B7C8D9EAF49
+S31500603920C0D1E2F30415263748596A7B8C9DAEBF39
+S31500603930D0E1F2031425364758697A8B9CADBECF29
+S31500603940E0F102132435465768798A9BACBDCEDF19
+S31500603950F00112233445566778899AABBCCDDEEF09
+S3150060396000112233445566778899AABBCCDDEEFFF9
+S31500603970102132435465768798A9BACBDCEDFE0FE9
+S315006039802031425364758697A8B9CADBECFD0E1FD9
+S3150060399030415263748596A7B8C9DAEBFC0D1E2FC9
+S315006039A0405162738495A6B7C8D9EAFB0C1D2E3FB9
+S315006039B05061728394A5B6C7D8E9FA0B1C2D3E4FA9
+S315006039C060718293A4B5C6D7E8F90A1B2C3D4E5F99
+S315006039D0708192A3B4C5D6E7F8091A2B3C4D5E6F89
+S315006039E08091A2B3C4D5E6F708192A3B4C5D6E7F79
+S315006039F090A1B2C3D4E5F60718293A4B5C6D7E8F69
+S31500603A00A0B1C2D3E4F5061728394A5B6C7D8E9F58
+S31500603A10B0C1D2E3F405162738495A6B7C8D9EAF48
+S31500603A20C0D1E2F30415263748596A7B8C9DAEBF38
+S31500603A30D0E1F2031425364758697A8B9CADBECF28
+S31500603A40E0F102132435465768798A9BACBDCEDF18
+S31500603A50F00112233445566778899AABBCCDDEEF08
+S31500603A6000112233445566778899AABBCCDDEEFFF8
+S31500603A70102132435465768798A9BACBDCEDFE0FE8
+S31500603A802031425364758697A8B9CADBECFD0E1FD8
+S31500603A9030415263748596A7B8C9DAEBFC0D1E2FC8
+S31500603AA0405162738495A6B7C8D9EAFB0C1D2E3FB8
+S31500603AB05061728394A5B6C7D8E9FA0B1C2D3E4FA8
+S31500603AC060718293A4B5C6D7E8F90A1B2C3D4E5F98
+S31500603AD0708192A3B4C5D6E7F8091A2B3C4D5E6F88
+S31500603AE08091A2B3C4D5E6F708192A3B4C5D6E7F78
+S31500603AF090A1B2C3D4E5F60718293A4B5C6D7E8F68
+S31500603B00A0B1C2D3E4F5061728394A5B6C7D8E9F57
+S31500603B10B0C1D2E3F405162738495A6B7C8D9EAF47
+S31500603B20C0D1E2F30415263748596A7B8C9DAEBF37
+S31500603B30D0E1F2031425364758697A8B9CADBECF27
+S31500603B40E0F102132435465768798A9BACBDCEDF17
+S31500603B50F00112233445566778899AABBCCDDEEF07
+S31500603B6000112233445566778899AABBCCDDEEFFF7
+S31500603B70102132435465768798A9BACBDCEDFE0FE7
+S31500603B802031425364758697A8B9CADBECFD0E1FD7
+S31500603B9030415263748596A7B8C9DAEBFC0D1E2FC7
+S31500603BA0405162738495A6B7C8D9EAFB0C1D2E3FB7
+S31500603BB05061728394A5B6C7D8E9FA0B1C2D3E4FA7
+S31500603BC060718293A4B5C6D7E8F90A1B2C3D4E5F97
+S31500603BD0708192A3B4C5D6E7F8091A2B3C4D5E6F87
+S31500603BE08091A2B3C4D5E6F708192A3B4C5D6E7F77
+S31500603BF090A1B2C3D4E5F60718293A4B5C6D7E8F67
+S31500603C00A0B1C2D3E4F5061728394A5B6C7D8E9F56
+S31500603C10B0C1D2E3F405162738495A6B7C8D9EAF46
+S31500603C20C0D1E2F30415263748596A7B8C9DAEBF36
+S31500603C30D0E1F2031425364758697A8B9CADBECF26
+S31500603C40E0F102132435465768798A9BACBDCEDF16
+S31500603C50F00112233445566778899AABBCCDDEEF06
+S31500603C6000112233445566778899AABBCCDDEEFFF6
+S31500603C70102132435465768798A9BACBDCEDFE0FE6
+S31500603C802031425364758697A8B9CADBECFD0E1FD6
+S31500603C9030415263748596A7B8C9DAEBFC0D1E2FC6
+S31500603CA0405162738495A6B7C8D9EAFB0C1D2E3FB6
+S31500603CB05061728394A5B6C7D8E9FA0B1C2D3E4FA6
+S31500603CC060718293A4B5C6D7E8F90A1B2C3D4E5F96
+S31500603CD0708192A3B4C5D6E7F8091A2B3C4D5E6F86
+S31500603CE08091A2B3C4D5E6F708192A3B4C5D6E7F76
+S31500603CF090A1B2C3D4E5F60718293A4B5C6D7E8F66
+S31500603D00A0B1C2D3E4F5061728394A5B6C7D8E9F55
+S31500603D10B0C1D2E3F405162738495A6B7C8D9EAF45
+S31500603D20C0D1E2F30415263748596A7B8C9DAEBF35
+S31500603D30D0E1F2031425364758697A8B9CADBECF25
+S31500603D40E0F102132435465768798A9BACBDCEDF15
+S31500603D50F00112233445566778899AABBCCDDEEF05
+S31500603D6000112233445566778899AABBCCDDEEFFF5
+S31500603D70102132435465768798A9BACBDCEDFE0FE5
+S31500603D802031425364758697A8B9CADBECFD0E1FD5
+S31500603D9030415263748596A7B8C9DAEBFC0D1E2FC5
+S31500603DA0405162738495A6B7C8D9EAFB0C1D2E3FB5
+S31500603DB05061728394A5B6C7D8E9FA0B1C2D3E4FA5
+S31500603DC060718293A4B5C6D7E8F90A1B2C3D4E5F95
+S31500603DD0708192A3B4C5D6E7F8091A2B3C4D5E6F85
+S31500603DE08091A2B3C4D5E6F708192A3B4C5D6E7F75
+S31500603DF090A1B2C3D4E5F60718293A4B5C6D7E8F65
+S31500603E00A0B1C2D3E4F5061728394A5B6C7D8E9F54
+S31500603E10B0C1D2E3F405162738495A6B7C8D9EAF44
+S31500603E20C0D1E2F30415263748596A7B8C9DAEBF34
+S31500603E30D0E1F2031425364758697A8B9CADBECF24
+S31500603E40E0F102132435465768798A9BACBDCEDF14
+S31500603E50F00112233445566778899AABBCCDDEEF04
+S31500603E6000112233445566778899AABBCCDDEEFFF4
+S31500603E70102132435465768798A9BACBDCEDFE0FE4
+S31500603E802031425364758697A8B9CADBECFD0E1FD4
+S31500603E9030415263748596A7B8C9DAEBFC0D1E2FC4
+S31500603EA0405162738495A6B7C8D9EAFB0C1D2E3FB4
+S31500603EB05061728394A5B6C7D8E9FA0B1C2D3E4FA4
+S31500603EC060718293A4B5C6D7E8F90A1B2C3D4E5F94
+S31500603ED0708192A3B4C5D6E7F8091A2B3C4D5E6F84
+S31500603EE08091A2B3C4D5E6F708192A3B4C5D6E7F74
+S31500603EF090A1B2C3D4E5F60718293A4B5C6D7E8F64
+S31500603F00A0B1C2D3E4F5061728394A5B6C7D8E9F53
+S31500603F10B0C1D2E3F405162738495A6B7C8D9EAF43
+S31500603F20C0D1E2F30415263748596A7B8C9DAEBF33
+S31500603F30D0E1F2031425364758697A8B9CADBECF23
+S31500603F40E0F102132435465768798A9BACBDCEDF13
+S31500603F50F00112233445566778899AABBCCDDEEF03
+S31500603F6000112233445566778899AABBCCDDEEFFF3
+S31500603F70102132435465768798A9BACBDCEDFE0FE3
+S31500603F802031425364758697A8B9CADBECFD0E1FD3
+S31500603F9030415263748596A7B8C9DAEBFC0D1E2FC3
+S31500603FA0405162738495A6B7C8D9EAFB0C1D2E3FB3
+S31500603FB05061728394A5B6C7D8E9FA0B1C2D3E4FA3
+S31500603FC060718293A4B5C6D7E8F90A1B2C3D4E5F93
+S31500603FD0708192A3B4C5D6E7F8091A2B3C4D5E6F83
+S31500603FE08091A2B3C4D5E6F708192A3B4C5D6E7F73
+S31500603FF090A1B2C3D4E5F60718293A4B5C6D7E8F63
+S31500604000A0B1C2D3E4F5061728394A5B6C7D8E9F52
+S31500604010B0C1D2E3F405162738495A6B7C8D9EAF42
+S31500604020C0D1E2F30415263748596A7B8C9DAEBF32
+S31500604030D0E1F2031425364758697A8B9CADBECF22
+S31500604040E0F102132435465768798A9BACBDCEDF12
+S31500604050F00112233445566778899AABBCCDDEEF02
+S3150060406000112233445566778899AABBCCDDEEFFF2
+S31500604070102132435465768798A9BACBDCEDFE0FE2
+S315006040802031425364758697A8B9CADBECFD0E1FD2
+S3150060409030415263748596A7B8C9DAEBFC0D1E2FC2
+S315006040A0405162738495A6B7C8D9EAFB0C1D2E3FB2
+S315006040B05061728394A5B6C7D8E9FA0B1C2D3E4FA2
+S315006040C060718293A4B5C6D7E8F90A1B2C3D4E5F92
+S315006040D0708192A3B4C5D6E7F8091A2B3C4D5E6F82
+S315006040E08091A2B3C4D5E6F708192A3B4C5D6E7F72
+S315006040F090A1B2C3D4E5F60718293A4B5C6D7E8F62
+S31500604100A0B1C2D3E4F5061728394A5B6C7D8E9F51
+S31500604110B0C1D2E3F405162738495A6B7C8D9EAF41
+S31500604120C0D1E2F30415263748596A7B8C9DAEBF31
+S31500604130D0E1F2031425364758697A8B9CADBECF21
+S31500604140E0F102132435465768798A9BACBDCEDF11
+S31500604150F00112233445566778899AABBCCDDEEF01
+S3150060416000112233445566778899AABBCCDDEEFFF1
+S31500604170102132435465768798A9BACBDCEDFE0FE1
+S315006041802031425364758697A8B9CADBECFD0E1FD1
+S3150060419030415263748596A7B8C9DAEBFC0D1E2FC1
+S315006041A0405162738495A6B7C8D9EAFB0C1D2E3FB1
+S315006041B05061728394A5B6C7D8E9FA0B1C2D3E4FA1
+S315006041C060718293A4B5C6D7E8F90A1B2C3D4E5F91
+S315006041D0708192A3B4C5D6E7F8091A2B3C4D5E6F81
+S315006041E08091A2B3C4D5E6F708192A3B4C5D6E7F71
+S315006041F090A1B2C3D4E5F60718293A4B5C6D7E8F61
+S31500604200A0B1C2D3E4F5061728394A5B6C7D8E9F50
+S31500604210B0C1D2E3F405162738495A6B7C8D9EAF40
+S31500604220C0D1E2F30415263748596A7B8C9DAEBF30
+S31500604230D0E1F2031425364758697A8B9CADBECF20
+S31500604240E0F102132435465768798A9BACBDCEDF10
+S31500604250F00112233445566778899AABBCCDDEEF00
+S3150060426000112233445566778899AABBCCDDEEFFF0
+S31500604270102132435465768798A9BACBDCEDFE0FE0
+S315006042802031425364758697A8B9CADBECFD0E1FD0
+S3150060429030415263748596A7B8C9DAEBFC0D1E2FC0
+S315006042A0405162738495A6B7C8D9EAFB0C1D2E3FB0
+S315006042B05061728394A5B6C7D8E9FA0B1C2D3E4FA0
+S315006042C060718293A4B5C6D7E8F90A1B2C3D4E5F90
+S315006042D0708192A3B4C5D6E7F8091A2B3C4D5E6F80
+S315006042E08091A2B3C4D5E6F708192A3B4C5D6E7F70
+S315006042F090A1B2C3D4E5F60718293A4B5C6D7E8F60
+S31500604300A0B1C2D3E4F5061728394A5B6C7D8E9F4F
+S31500604310B0C1D2E3F405162738495A6B7C8D9EAF3F
+S31500604320C0D1E2F30415263748596A7B8C9DAEBF2F
+S31500604330D0E1F2031425364758697A8B9CADBECF1F
+S31500604340E0F102132435465768798A9BACBDCEDF0F
+S31500604350F00112233445566778899AABBCCDDEEFFF
+S3150060436000112233445566778899AABBCCDDEEFFEF
+S31500604370102132435465768798A9BACBDCEDFE0FDF
+S315006043802031425364758697A8B9CADBECFD0E1FCF
+S3150060439030415263748596A7B8C9DAEBFC0D1E2FBF
+S315006043A0405162738495A6B7C8D9EAFB0C1D2E3FAF
+S315006043B05061728394A5B6C7D8E9FA0B1C2D3E4F9F
+S315006043C060718293A4B5C6D7E8F90A1B2C3D4E5F8F
+S315006043D0708192A3B4C5D6E7F8091A2B3C4D5E6F7F
+S315006043E08091A2B3C4D5E6F708192A3B4C5D6E7F6F
+S315006043F090A1B2C3D4E5F60718293A4B5C6D7E8F5F
+S31500604400A0B1C2D3E4F5061728394A5B6C7D8E9F4E
+S31500604410B0C1D2E3F405162738495A6B7C8D9EAF3E
+S31500604420C0D1E2F30415263748596A7B8C9DAEBF2E
+S31500604430D0E1F2031425364758697A8B9CADBECF1E
+S31500604440E0F102132435465768798A9BACBDCEDF0E
+S31500604450F00112233445566778899AABBCCDDEEFFE
+S3150060446000112233445566778899AABBCCDDEEFFEE
+S31500604470102132435465768798A9BACBDCEDFE0FDE
+S315006044802031425364758697A8B9CADBECFD0E1FCE
+S3150060449030415263748596A7B8C9DAEBFC0D1E2FBE
+S315006044A0405162738495A6B7C8D9EAFB0C1D2E3FAE
+S315006044B05061728394A5B6C7D8E9FA0B1C2D3E4F9E
+S315006044C060718293A4B5C6D7E8F90A1B2C3D4E5F8E
+S315006044D0708192A3B4C5D6E7F8091A2B3C4D5E6F7E
+S315006044E08091A2B3C4D5E6F708192A3B4C5D6E7F6E
+S315006044F090A1B2C3D4E5F60718293A4B5C6D7E8F5E
+S31500604500A0B1C2D3E4F5061728394A5B6C7D8E9F4D
+S31500604510B0C1D2E3F405162738495A6B7C8D9EAF3D
+S31500604520C0D1E2F30415263748596A7B8C9DAEBF2D
+S31500604530D0E1F2031425364758697A8B9CADBECF1D
+S31500604540E0F102132435465768798A9BACBDCEDF0D
+S31500604550F00112233445566778899AABBCCDDEEFFD
+S3150060456000112233445566778899AABBCCDDEEFFED
+S31500604570102132435465768798A9BACBDCEDFE0FDD
+S315006045802031425364758697A8B9CADBECFD0E1FCD
+S3150060459030415263748596A7B8C9DAEBFC0D1E2FBD
+S315006045A0405162738495A6B7C8D9EAFB0C1D2E3FAD
+S315006045B05061728394A5B6C7D8E9FA0B1C2D3E4F9D
+S315006045C060718293A4B5C6D7E8F90A1B2C3D4E5F8D
+S315006045D0708192A3B4C5D6E7F8091A2B3C4D5E6F7D
+S315006045E08091A2B3C4D5E6F708192A3B4C5D6E7F6D
+S315006045F090A1B2C3D4E5F60718293A4B5C6D7E8F5D
+S31500604600A0B1C2D3E4F5061728394A5B6C7D8E9F4C
+S31500604610B0C1D2E3F405162738495A6B7C8D9EAF3C
+S31500604620C0D1E2F30415263748596A7B8C9DAEBF2C
+S31500604630D0E1F2031425364758697A8B9CADBECF1C
+S31500604640E0F102132435465768798A9BACBDCEDF0C
+S31500604650F00112233445566778899AABBCCDDEEFFC
+S3150060466000112233445566778899AABBCCDDEEFFEC
+S31500604670102132435465768798A9BACBDCEDFE0FDC
+S315006046802031425364758697A8B9CADBECFD0E1FCC
+S3150060469030415263748596A7B8C9DAEBFC0D1E2FBC
+S315006046A0405162738495A6B7C8D9EAFB0C1D2E3FAC
+S315006046B05061728394A5B6C7D8E9FA0B1C2D3E4F9C
+S315006046C060718293A4B5C6D7E8F90A1B2C3D4E5F8C
+S315006046D0708192A3B4C5D6E7F8091A2B3C4D5E6F7C
+S315006046E08091A2B3C4D5E6F708192A3B4C5D6E7F6C
+S315006046F090A1B2C3D4E5F60718293A4B5C6D7E8F5C
+S31500604700A0B1C2D3E4F5061728394A5B6C7D8E9F4B
+S31500604710B0C1D2E3F405162738495A6B7C8D9EAF3B
+S31500604720C0D1E2F30415263748596A7B8C9DAEBF2B
+S31500604730D0E1F2031425364758697A8B9CADBECF1B
+S31500604740E0F102132435465768798A9BACBDCEDF0B
+S31500604750F00112233445566778899AABBCCDDEEFFB
+S3150060476000112233445566778899AABBCCDDEEFFEB
+S31500604770102132435465768798A9BACBDCEDFE0FDB
+S315006047802031425364758697A8B9CADBECFD0E1FCB
+S3150060479030415263748596A7B8C9DAEBFC0D1E2FBB
+S315006047A0405162738495A6B7C8D9EAFB0C1D2E3FAB
+S315006047B05061728394A5B6C7D8E9FA0B1C2D3E4F9B
+S315006047C060718293A4B5C6D7E8F90A1B2C3D4E5F8B
+S315006047D0708192A3B4C5D6E7F8091A2B3C4D5E6F7B
+S315006047E08091A2B3C4D5E6F708192A3B4C5D6E7F6B
+S315006047F090A1B2C3D4E5F60718293A4B5C6D7E8F5B
+S31500604800A0B1C2D3E4F5061728394A5B6C7D8E9F4A
+S31500604810B0C1D2E3F405162738495A6B7C8D9EAF3A
+S31500604820C0D1E2F30415263748596A7B8C9DAEBF2A
+S31500604830D0E1F2031425364758697A8B9CADBECF1A
+S31500604840E0F102132435465768798A9BACBDCEDF0A
+S31500604850F00112233445566778899AABBCCDDEEFFA
+S3150060486000112233445566778899AABBCCDDEEFFEA
+S31500604870102132435465768798A9BACBDCEDFE0FDA
+S315006048802031425364758697A8B9CADBECFD0E1FCA
+S3150060489030415263748596A7B8C9DAEBFC0D1E2FBA
+S315006048A0405162738495A6B7C8D9EAFB0C1D2E3FAA
+S315006048B05061728394A5B6C7D8E9FA0B1C2D3E4F9A
+S315006048C060718293A4B5C6D7E8F90A1B2C3D4E5F8A
+S315006048D0708192A3B4C5D6E7F8091A2B3C4D5E6F7A
+S315006048E08091A2B3C4D5E6F708192A3B4C5D6E7F6A
+S315006048F090A1B2C3D4E5F60718293A4B5C6D7E8F5A
+S31500604900A0B1C2D3E4F5061728394A5B6C7D8E9F49
+S31500604910B0C1D2E3F405162738495A6B7C8D9EAF39
+S31500604920C0D1E2F30415263748596A7B8C9DAEBF29
+S31500604930D0E1F2031425364758697A8B9CADBECF19
+S31500604940E0F102132435465768798A9BACBDCEDF09
+S31500604950F00112233445566778899AABBCCDDEEFF9
+S3150060496000112233445566778899AABBCCDDEEFFE9
+S31500604970102132435465768798A9BACBDCEDFE0FD9
+S315006049802031425364758697A8B9CADBECFD0E1FC9
+S3150060499030415263748596A7B8C9DAEBFC0D1E2FB9
+S315006049A0405162738495A6B7C8D9EAFB0C1D2E3FA9
+S315006049B05061728394A5B6C7D8E9FA0B1C2D3E4F99
+S315006049C060718293A4B5C6D7E8F90A1B2C3D4E5F89
+S315006049D0708192A3B4C5D6E7F8091A2B3C4D5E6F79
+S315006049E08091A2B3C4D5E6F708192A3B4C5D6E7F69
+S315006049F090A1B2C3D4E5F60718293A4B5C6D7E8F59
+S31500604A00A0B1C2D3E4F5061728394A5B6C7D8E9F48
+S31500604A10B0C1D2E3F405162738495A6B7C8D9EAF38
+S31500604A20C0D1E2F30415263748596A7B8C9DAEBF28
+S31500604A30D0E1F2031425364758697A8B9CADBECF18
+S31500604A40E0F102132435465768798A9BACBDCEDF08
+S31500604A50F00112233445566778899AABBCCDDEEFF8
+S31500604A6000112233445566778899AABBCCDDEEFFE8
+S31500604A70102132435465768798A9BACBDCEDFE0FD8
+S31500604A802031425364758697A8B9CADBECFD0E1FC8
+S31500604A9030415263748596A7B8C9DAEBFC0D1E2FB8
+S31500604AA0405162738495A6B7C8D9EAFB0C1D2E3FA8
+S31500604AB05061728394A5B6C7D8E9FA0B1C2D3E4F98
+S31500604AC060718293A4B5C6D7E8F90A1B2C3D4E5F88
+S31500604AD0708192A3B4C5D6E7F8091A2B3C4D5E6F78
+S31500604AE08091A2B3C4D5E6F708192A3B4C5D6E7F68
+S31500604AF090A1B2C3D4E5F60718293A4B5C6D7E8F58
+S31500604B00A0B1C2D3E4F5061728394A5B6C7D8E9F47
+S31500604B10B0C1D2E3F405162738495A6B7C8D9EAF37
+S31500604B20C0D1E2F30415263748596A7B8C9DAEBF27
+S31500604B30D0E1F2031425364758697A8B9CADBECF17
+S31500604B40E0F102132435465768798A9BACBDCEDF07
+S31500604B50F00112233445566778899AABBCCDDEEFF7
+S31500604B6000112233445566778899AABBCCDDEEFFE7
+S31500604B70102132435465768798A9BACBDCEDFE0FD7
+S31500604B802031425364758697A8B9CADBECFD0E1FC7
+S31500604B9030415263748596A7B8C9DAEBFC0D1E2FB7
+S31500604BA0405162738495A6B7C8D9EAFB0C1D2E3FA7
+S31500604BB05061728394A5B6C7D8E9FA0B1C2D3E4F97
+S31500604BC060718293A4B5C6D7E8F90A1B2C3D4E5F87
+S31500604BD0708192A3B4C5D6E7F8091A2B3C4D5E6F77
+S31500604BE08091A2B3C4D5E6F708192A3B4C5D6E7F67
+S31500604BF090A1B2C3D4E5F60718293A4B5C6D7E8F57
+S31500604C00A0B1C2D3E4F5061728394A5B6C7D8E9F46
+S31500604C10B0C1D2E3F405162738495A6B7C8D9EAF36
+S31500604C20C0D1E2F30415263748596A7B8C9DAEBF26
+S31500604C30D0E1F2031425364758697A8B9CADBECF16
+S31500604C40E0F102132435465768798A9BACBDCEDF06
+S31500604C50F00112233445566778899AABBCCDDEEFF6
+S31500604C6000112233445566778899AABBCCDDEEFFE6
+S31500604C70102132435465768798A9BACBDCEDFE0FD6
+S31500604C802031425364758697A8B9CADBECFD0E1FC6
+S31500604C9030415263748596A7B8C9DAEBFC0D1E2FB6
+S31500604CA0405162738495A6B7C8D9EAFB0C1D2E3FA6
+S31500604CB05061728394A5B6C7D8E9FA0B1C2D3E4F96
+S31500604CC060718293A4B5C6D7E8F90A1B2C3D4E5F86
+S31500604CD0708192A3B4C5D6E7F8091A2B3C4D5E6F76
+S31500604CE08091A2B3C4D5E6F708192A3B4C5D6E7F66
+S31500604CF090A1B2C3D4E5F60718293A4B5C6D7E8F56
+S31500604D00A0B1C2D3E4F5061728394A5B6C7D8E9F45
+S31500604D10B0C1D2E3F405162738495A6B7C8D9EAF35
+S31500604D20C0D1E2F30415263748596A7B8C9DAEBF25
+S31500604D30D0E1F2031425364758697A8B9CADBECF15
+S31500604D40E0F102132435465768798A9BACBDCEDF05
+S31500604D50F00112233445566778899AABBCCDDEEFF5
+S31500604D6000112233445566778899AABBCCDDEEFFE5
+S31500604D70102132435465768798A9BACBDCEDFE0FD5
+S31500604D802031425364758697A8B9CADBECFD0E1FC5
+S31500604D9030415263748596A7B8C9DAEBFC0D1E2FB5
+S31500604DA0405162738495A6B7C8D9EAFB0C1D2E3FA5
+S31500604DB05061728394A5B6C7D8E9FA0B1C2D3E4F95
+S31500604DC060718293A4B5C6D7E8F90A1B2C3D4E5F85
+S31500604DD0708192A3B4C5D6E7F8091A2B3C4D5E6F75
+S31500604DE08091A2B3C4D5E6F708192A3B4C5D6E7F65
+S31500604DF090A1B2C3D4E5F60718293A4B5C6D7E8F55
+S31500604E00A0B1C2D3E4F5061728394A5B6C7D8E9F44
+S31500604E10B0C1D2E3F405162738495A6B7C8D9EAF34
+S31500604E20C0D1E2F30415263748596A7B8C9DAEBF24
+S31500604E30D0E1F2031425364758697A8B9CADBECF14
+S31500604E40E0F102132435465768798A9BACBDCEDF04
+S31500604E50F00112233445566778899AABBCCDDEEFF4
+S31500604E6000112233445566778899AABBCCDDEEFFE4
+S31500604E70102132435465768798A9BACBDCEDFE0FD4
+S31500604E802031425364758697A8B9CADBECFD0E1FC4
+S31500604E9030415263748596A7B8C9DAEBFC0D1E2FB4
+S31500604EA0405162738495A6B7C8D9EAFB0C1D2E3FA4
+S31500604EB05061728394A5B6C7D8E9FA0B1C2D3E4F94
+S31500604EC060718293A4B5C6D7E8F90A1B2C3D4E5F84
+S31500604ED0708192A3B4C5D6E7F8091A2B3C4D5E6F74
+S31500604EE08091A2B3C4D5E6F708192A3B4C5D6E7F64
+S31500604EF090A1B2C3D4E5F60718293A4B5C6D7E8F54
+S31500604F00A0B1C2D3E4F5061728394A5B6C7D8E9F43
+S31500604F10B0C1D2E3F405162738495A6B7C8D9EAF33
+S31500604F20C0D1E2F30415263748596A7B8C9DAEBF23
+S31500604F30D0E1F2031425364758697A8B9CADBECF13
+S31500604F40E0F102132435465768798A9BACBDCEDF03
+S31500604F50F00112233445566778899AABBCCDDEEFF3
+S31500604F6000112233445566778899AABBCCDDEEFFE3
+S31500604F70102132435465768798A9BACBDCEDFE0FD3
+S31500604F802031425364758697A8B9CADBECFD0E1FC3
+S31500604F9030415263748596A7B8C9DAEBFC0D1E2FB3
+S31500604FA0405162738495A6B7C8D9EAFB0C1D2E3FA3
+S31500604FB05061728394A5B6C7D8E9FA0B1C2D3E4F93
+S31500604FC060718293A4B5C6D7E8F90A1B2C3D4E5F83
+S31500604FD0708192A3B4C5D6E7F8091A2B3C4D5E6F73
+S31500604FE08091A2B3C4D5E6F708192A3B4C5D6E7F63
+S31500604FF090A1B2C3D4E5F60718293A4B5C6D7E8F53
+S31500605000A0B1C2D3E4F5061728394A5B6C7D8E9F42
+S31500605010B0C1D2E3F405162738495A6B7C8D9EAF32
+S31500605020C0D1E2F30415263748596A7B8C9DAEBF22
+S31500605030D0E1F2031425364758697A8B9CADBECF12
+S31500605040E0F102132435465768798A9BACBDCEDF02
+S31500605050F00112233445566778899AABBCCDDEEFF2
+S3150060506000112233445566778899AABBCCDDEEFFE2
+S31500605070102132435465768798A9BACBDCEDFE0FD2
+S315006050802031425364758697A8B9CADBECFD0E1FC2
+S3150060509030415263748596A7B8C9DAEBFC0D1E2FB2
+S315006050A0405162738495A6B7C8D9EAFB0C1D2E3FA2
+S315006050B05061728394A5B6C7D8E9FA0B1C2D3E4F92
+S315006050C060718293A4B5C6D7E8F90A1B2C3D4E5F82
+S315006050D0708192A3B4C5D6E7F8091A2B3C4D5E6F72
+S315006050E08091A2B3C4D5E6F708192A3B4C5D6E7F62
+S315006050F090A1B2C3D4E5F60718293A4B5C6D7E8F52
+S31500605100A0B1C2D3E4F5061728394A5B6C7D8E9F41
+S31500605110B0C1D2E3F405162738495A6B7C8D9EAF31
+S31500605120C0D1E2F30415263748596A7B8C9DAEBF21
+S31500605130D0E1F2031425364758697A8B9CADBECF11
+S31500605140E0F102132435465768798A9BACBDCEDF01
+S31500605150F00112233445566778899AABBCCDDEEFF1
+S3150060516000112233445566778899AABBCCDDEEFFE1
+S31500605170102132435465768798A9BACBDCEDFE0FD1
+S315006051802031425364758697A8B9CADBECFD0E1FC1
+S3150060519030415263748596A7B8C9DAEBFC0D1E2FB1
+S315006051A0405162738495A6B7C8D9EAFB0C1D2E3FA1
+S315006051B05061728394A5B6C7D8E9FA0B1C2D3E4F91
+S315006051C060718293A4B5C6D7E8F90A1B2C3D4E5F81
+S315006051D0708192A3B4C5D6E7F8091A2B3C4D5E6F71
+S315006051E08091A2B3C4D5E6F708192A3B4C5D6E7F61
+S315006051F090A1B2C3D4E5F60718293A4B5C6D7E8F51
+S31500605200A0B1C2D3E4F5061728394A5B6C7D8E9F40
+S31500605210B0C1D2E3F405162738495A6B7C8D9EAF30
+S31500605220C0D1E2F30415263748596A7B8C9DAEBF20
+S31500605230D0E1F2031425364758697A8B9CADBECF10
+S31500605240E0F102132435465768798A9BACBDCEDF00
+S31500605250F00112233445566778899AABBCCDDEEFF0
+S3150060526000112233445566778899AABBCCDDEEFFE0
+S31500605270102132435465768798A9BACBDCEDFE0FD0
+S315006052802031425364758697A8B9CADBECFD0E1FC0
+S3150060529030415263748596A7B8C9DAEBFC0D1E2FB0
+S315006052A0405162738495A6B7C8D9EAFB0C1D2E3FA0
+S315006052B05061728394A5B6C7D8E9FA0B1C2D3E4F90
+S315006052C060718293A4B5C6D7E8F90A1B2C3D4E5F80
+S315006052D0708192A3B4C5D6E7F8091A2B3C4D5E6F70
+S315006052E08091A2B3C4D5E6F708192A3B4C5D6E7F60
+S315006052F090A1B2C3D4E5F60718293A4B5C6D7E8F50
+S31500605300A0B1C2D3E4F5061728394A5B6C7D8E9F3F
+S31500605310B0C1D2E3F405162738495A6B7C8D9EAF2F
+S31500605320C0D1E2F30415263748596A7B8C9DAEBF1F
+S31500605330D0E1F2031425364758697A8B9CADBECF0F
+S31500605340E0F102132435465768798A9BACBDCEDFFF
+S31500605350F00112233445566778899AABBCCDDEEFEF
+S3150060536000112233445566778899AABBCCDDEEFFDF
+S31500605370102132435465768798A9BACBDCEDFE0FCF
+S315006053802031425364758697A8B9CADBECFD0E1FBF
+S3150060539030415263748596A7B8C9DAEBFC0D1E2FAF
+S315006053A0405162738495A6B7C8D9EAFB0C1D2E3F9F
+S315006053B05061728394A5B6C7D8E9FA0B1C2D3E4F8F
+S315006053C060718293A4B5C6D7E8F90A1B2C3D4E5F7F
+S315006053D0708192A3B4C5D6E7F8091A2B3C4D5E6F6F
+S315006053E08091A2B3C4D5E6F708192A3B4C5D6E7F5F
+S315006053F090A1B2C3D4E5F60718293A4B5C6D7E8F4F
+S31500605400A0B1C2D3E4F5061728394A5B6C7D8E9F3E
+S31500605410B0C1D2E3F405162738495A6B7C8D9EAF2E
+S31500605420C0D1E2F30415263748596A7B8C9DAEBF1E
+S31500605430D0E1F2031425364758697A8B9CADBECF0E
+S31500605440E0F102132435465768798A9BACBDCEDFFE
+S31500605450F00112233445566778899AABBCCDDEEFEE
+S3150060546000112233445566778899AABBCCDDEEFFDE
+S31500605470102132435465768798A9BACBDCEDFE0FCE
+S315006054802031425364758697A8B9CADBECFD0E1FBE
+S3150060549030415263748596A7B8C9DAEBFC0D1E2FAE
+S315006054A0405162738495A6B7C8D9EAFB0C1D2E3F9E
+S315006054B05061728394A5B6C7D8E9FA0B1C2D3E4F8E
+S315006054C060718293A4B5C6D7E8F90A1B2C3D4E5F7E
+S315006054D0708192A3B4C5D6E7F8091A2B3C4D5E6F6E
+S315006054E08091A2B3C4D5E6F708192A3B4C5D6E7F5E
+S315006054F090A1B2C3D4E5F60718293A4B5C6D7E8F4E
+S31500605500A0B1C2D3E4F5061728394A5B6C7D8E9F3D
+S31500605510B0C1D2E3F405162738495A6B7C8D9EAF2D
+S31500605520C0D1E2F30415263748596A7B8C9DAEBF1D
+S31500605530D0E1F2031425364758697A8B9CADBECF0D
+S31500605540E0F102132435465768798A9BACBDCEDFFD
+S31500605550F00112233445566778899AABBCCDDEEFED
+S3150060556000112233445566778899AABBCCDDEEFFDD
+S31500605570102132435465768798A9BACBDCEDFE0FCD
+S315006055802031425364758697A8B9CADBECFD0E1FBD
+S3150060559030415263748596A7B8C9DAEBFC0D1E2FAD
+S315006055A0405162738495A6B7C8D9EAFB0C1D2E3F9D
+S315006055B05061728394A5B6C7D8E9FA0B1C2D3E4F8D
+S315006055C060718293A4B5C6D7E8F90A1B2C3D4E5F7D
+S315006055D0708192A3B4C5D6E7F8091A2B3C4D5E6F6D
+S315006055E08091A2B3C4D5E6F708192A3B4C5D6E7F5D
+S315006055F090A1B2C3D4E5F60718293A4B5C6D7E8F4D
+S31500605600A0B1C2D3E4F5061728394A5B6C7D8E9F3C
+S31500605610B0C1D2E3F405162738495A6B7C8D9EAF2C
+S31500605620C0D1E2F30415263748596A7B8C9DAEBF1C
+S31500605630D0E1F2031425364758697A8B9CADBECF0C
+S31500605640E0F102132435465768798A9BACBDCEDFFC
+S31500605650F00112233445566778899AABBCCDDEEFEC
+S3150060566000112233445566778899AABBCCDDEEFFDC
+S31500605670102132435465768798A9BACBDCEDFE0FCC
+S315006056802031425364758697A8B9CADBECFD0E1FBC
+S3150060569030415263748596A7B8C9DAEBFC0D1E2FAC
+S315006056A0405162738495A6B7C8D9EAFB0C1D2E3F9C
+S315006056B05061728394A5B6C7D8E9FA0B1C2D3E4F8C
+S315006056C060718293A4B5C6D7E8F90A1B2C3D4E5F7C
+S315006056D0708192A3B4C5D6E7F8091A2B3C4D5E6F6C
+S315006056E08091A2B3C4D5E6F708192A3B4C5D6E7F5C
+S315006056F090A1B2C3D4E5F60718293A4B5C6D7E8F4C
+S31500605700A0B1C2D3E4F5061728394A5B6C7D8E9F3B
+S31500605710B0C1D2E3F405162738495A6B7C8D9EAF2B
+S31500605720C0D1E2F30415263748596A7B8C9DAEBF1B
+S31500605730D0E1F2031425364758697A8B9CADBECF0B
+S31500605740E0F102132435465768798A9BACBDCEDFFB
+S31500605750F00112233445566778899AABBCCDDEEFEB
+S3150060576000112233445566778899AABBCCDDEEFFDB
+S31500605770102132435465768798A9BACBDCEDFE0FCB
+S315006057802031425364758697A8B9CADBECFD0E1FBB
+S3150060579030415263748596A7B8C9DAEBFC0D1E2FAB
+S315006057A0405162738495A6B7C8D9EAFB0C1D2E3F9B
+S315006057B05061728394A5B6C7D8E9FA0B1C2D3E4F8B
+S315006057C060718293A4B5C6D7E8F90A1B2C3D4E5F7B
+S315006057D0708192A3B4C5D6E7F8091A2B3C4D5E6F6B
+S315006057E08091A2B3C4D5E6F708192A3B4C5D6E7F5B
+S315006057F090A1B2C3D4E5F60718293A4B5C6D7E8F4B
+S31500605800A0B1C2D3E4F5061728394A5B6C7D8E9F3A
+S31500605810B0C1D2E3F405162738495A6B7C8D9EAF2A
+S31500605820C0D1E2F30415263748596A7B8C9DAEBF1A
+S31500605830D0E1F2031425364758697A8B9CADBECF0A
+S31500605840E0F102132435465768798A9BACBDCEDFFA
+S31500605850F00112233445566778899AABBCCDDEEFEA
+S3150060586000112233445566778899AABBCCDDEEFFDA
+S31500605870102132435465768798A9BACBDCEDFE0FCA
+S315006058802031425364758697A8B9CADBECFD0E1FBA
+S3150060589030415263748596A7B8C9DAEBFC0D1E2FAA
+S315006058A0405162738495A6B7C8D9EAFB0C1D2E3F9A
+S315006058B05061728394A5B6C7D8E9FA0B1C2D3E4F8A
+S315006058C060718293A4B5C6D7E8F90A1B2C3D4E5F7A
+S315006058D0708192A3B4C5D6E7F8091A2B3C4D5E6F6A
+S315006058E08091A2B3C4D5E6F708192A3B4C5D6E7F5A
+S315006058F090A1B2C3D4E5F60718293A4B5C6D7E8F4A
+S31500605900A0B1C2D3E4F5061728394A5B6C7D8E9F39
+S31500605910B0C1D2E3F405162738495A6B7C8D9EAF29
+S31500605920C0D1E2F30415263748596A7B8C9DAEBF19
+S31500605930D0E1F2031425364758697A8B9CADBECF09
+S31500605940E0F102132435465768798A9BACBDCEDFF9
+S31500605950F00112233445566778899AABBCCDDEEFE9
+S3150060596000112233445566778899AABBCCDDEEFFD9
+S31500605970102132435465768798A9BACBDCEDFE0FC9
+S315006059802031425364758697A8B9CADBECFD0E1FB9
+S3150060599030415263748596A7B8C9DAEBFC0D1E2FA9
+S315006059A0405162738495A6B7C8D9EAFB0C1D2E3F99
+S315006059B05061728394A5B6C7D8E9FA0B1C2D3E4F89
+S315006059C060718293A4B5C6D7E8F90A1B2C3D4E5F79
+S315006059D0708192A3B4C5D6E7F8091A2B3C4D5E6F69
+S315006059E08091A2B3C4D5E6F708192A3B4C5D6E7F59
+S315006059F090A1B2C3D4E5F60718293A4B5C6D7E8F49
+S31500605A00A0B1C2D3E4F5061728394A5B6C7D8E9F38
+S31500605A10B0C1D2E3F405162738495A6B7C8D9EAF28
+S31500605A20C0D1E2F30415263748596A7B8C9DAEBF18
+S31500605A30D0E1F2031425364758697A8B9CADBECF08
+S31500605A40E0F102132435465768798A9BACBDCEDFF8
+S31500605A50F00112233445566778899AABBCCDDEEFE8
+S31500605A6000112233445566778899AABBCCDDEEFFD8
+S31500605A70102132435465768798A9BACBDCEDFE0FC8
+S31500605A802031425364758697A8B9CADBECFD0E1FB8
+S31500605A9030415263748596A7B8C9DAEBFC0D1E2FA8
+S31500605AA0405162738495A6B7C8D9EAFB0C1D2E3F98
+S31500605AB05061728394A5B6C7D8E9FA0B1C2D3E4F88
+S31500605AC060718293A4B5C6D7E8F90A1B2C3D4E5F78
+S31500605AD0708192A3B4C5D6E7F8091A2B3C4D5E6F68
+S31500605AE08091A2B3C4D5E6F708192A3B4C5D6E7F58
+S31500605AF090A1B2C3D4E5F60718293A4B5C6D7E8F48
+S31500605B00A0B1C2D3E4F5061728394A5B6C7D8E9F37
+S31500605B10B0C1D2E3F405162738495A6B7C8D9EAF27
+S31500605B20C0D1E2F30415263748596A7B8C9DAEBF17
+S31500605B30D0E1F2031425364758697A8B9CADBECF07
+S31500605B40E0F102132435465768798A9BACBDCEDFF7
+S31500605B50F00112233445566778899AABBCCDDEEFE7
+S31500605B6000112233445566778899AABBCCDDEEFFD7
+S31500605B70102132435465768798A9BACBDCEDFE0FC7
+S31500605B802031425364758697A8B9CADBECFD0E1FB7
+S31500605B9030415263748596A7B8C9DAEBFC0D1E2FA7
+S31500605BA0405162738495A6B7C8D9EAFB0C1D2E3F97
+S31500605BB05061728394A5B6C7D8E9FA0B1C2D3E4F87
+S31500605BC060718293A4B5C6D7E8F90A1B2C3D4E5F77
+S31500605BD0708192A3B4C5D6E7F8091A2B3C4D5E6F67
+S31500605BE08091A2B3C4D5E6F708192A3B4C5D6E7F57
+S31500605BF090A1B2C3D4E5F60718293A4B5C6D7E8F47
+S31500605C00A0B1C2D3E4F5061728394A5B6C7D8E9F36
+S31500605C10B0C1D2E3F405162738495A6B7C8D9EAF26
+S31500605C20C0D1E2F30415263748596A7B8C9DAEBF16
+S31500605C30D0E1F2031425364758697A8B9CADBECF06
+S31500605C40E0F102132435465768798A9BACBDCEDFF6
+S31500605C50F00112233445566778899AABBCCDDEEFE6
+S31500605C6000112233445566778899AABBCCDDEEFFD6
+S31500605C70102132435465768798A9BACBDCEDFE0FC6
+S31500605C802031425364758697A8B9CADBECFD0E1FB6
+S31500605C9030415263748596A7B8C9DAEBFC0D1E2FA6
+S31500605CA0405162738495A6B7C8D9EAFB0C1D2E3F96
+S31500605CB05061728394A5B6C7D8E9FA0B1C2D3E4F86
+S31500605CC060718293A4B5C6D7E8F90A1B2C3D4E5F76
+S31500605CD0708192A3B4C5D6E7F8091A2B3C4D5E6F66
+S31500605CE08091A2B3C4D5E6F708192A3B4C5D6E7F56
+S31500605CF090A1B2C3D4E5F60718293A4B5C6D7E8F46
+S31500605D00A0B1C2D3E4F5061728394A5B6C7D8E9F35
+S31500605D10B0C1D2E3F405162738495A6B7C8D9EAF25
+S31500605D20C0D1E2F30415263748596A7B8C9DAEBF15
+S31500605D30D0E1F2031425364758697A8B9CADBECF05
+S31500605D40E0F102132435465768798A9BACBDCEDFF5
+S31500605D50F00112233445566778899AABBCCDDEEFE5
+S31500605D6000112233445566778899AABBCCDDEEFFD5
+S31500605D70102132435465768798A9BACBDCEDFE0FC5
+S31500605D802031425364758697A8B9CADBECFD0E1FB5
+S31500605D9030415263748596A7B8C9DAEBFC0D1E2FA5
+S31500605DA0405162738495A6B7C8D9EAFB0C1D2E3F95
+S31500605DB05061728394A5B6C7D8E9FA0B1C2D3E4F85
+S31500605DC060718293A4B5C6D7E8F90A1B2C3D4E5F75
+S31500605DD0708192A3B4C5D6E7F8091A2B3C4D5E6F65
+S31500605DE08091A2B3C4D5E6F708192A3B4C5D6E7F55
+S31500605DF090A1B2C3D4E5F60718293A4B5C6D7E8F45
+S31500605E00A0B1C2D3E4F5061728394A5B6C7D8E9F34
+S31500605E10B0C1D2E3F405162738495A6B7C8D9EAF24
+S31500605E20C0D1E2F30415263748596A7B8C9DAEBF14
+S31500605E30D0E1F2031425364758697A8B9CADBECF04
+S31500605E40E0F102132435465768798A9BACBDCEDFF4
+S31500605E50F00112233445566778899AABBCCDDEEFE4
+S31500605E6000112233445566778899AABBCCDDEEFFD4
+S31500605E70102132435465768798A9BACBDCEDFE0FC4
+S31500605E802031425364758697A8B9CADBECFD0E1FB4
+S31500605E9030415263748596A7B8C9DAEBFC0D1E2FA4
+S31500605EA0405162738495A6B7C8D9EAFB0C1D2E3F94
+S31500605EB05061728394A5B6C7D8E9FA0B1C2D3E4F84
+S31500605EC060718293A4B5C6D7E8F90A1B2C3D4E5F74
+S31500605ED0708192A3B4C5D6E7F8091A2B3C4D5E6F64
+S31500605EE08091A2B3C4D5E6F708192A3B4C5D6E7F54
+S31500605EF090A1B2C3D4E5F60718293A4B5C6D7E8F44
+S31500605F00A0B1C2D3E4F5061728394A5B6C7D8E9F33
+S31500605F10B0C1D2E3F405162738495A6B7C8D9EAF23
+S31500605F20C0D1E2F30415263748596A7B8C9DAEBF13
+S31500605F30D0E1F2031425364758697A8B9CADBECF03
+S31500605F40E0F102132435465768798A9BACBDCEDFF3
+S31500605F50F00112233445566778899AABBCCDDEEFE3
+S31500605F6000112233445566778899AABBCCDDEEFFD3
+S31500605F70102132435465768798A9BACBDCEDFE0FC3
+S31500605F802031425364758697A8B9CADBECFD0E1FB3
+S31500605F9030415263748596A7B8C9DAEBFC0D1E2FA3
+S31500605FA0405162738495A6B7C8D9EAFB0C1D2E3F93
+S31500605FB05061728394A5B6C7D8E9FA0B1C2D3E4F83
+S31500605FC060718293A4B5C6D7E8F90A1B2C3D4E5F73
+S31500605FD0708192A3B4C5D6E7F8091A2B3C4D5E6F63
+S31500605FE08091A2B3C4D5E6F708192A3B4C5D6E7F53
+S31500605FF090A1B2C3D4E5F60718293A4B5C6D7E8F43
+S31500606000A0B1C2D3E4F5061728394A5B6C7D8E9F32
+S31500606010B0C1D2E3F405162738495A6B7C8D9EAF22
+S31500606020C0D1E2F30415263748596A7B8C9DAEBF12
+S31500606030D0E1F2031425364758697A8B9CADBECF02
+S31500606040E0F102132435465768798A9BACBDCEDFF2
+S31500606050F00112233445566778899AABBCCDDEEFE2
+S3150060606000112233445566778899AABBCCDDEEFFD2
+S31500606070102132435465768798A9BACBDCEDFE0FC2
+S315006060802031425364758697A8B9CADBECFD0E1FB2
+S3150060609030415263748596A7B8C9DAEBFC0D1E2FA2
+S315006060A0405162738495A6B7C8D9EAFB0C1D2E3F92
+S315006060B05061728394A5B6C7D8E9FA0B1C2D3E4F82
+S315006060C060718293A4B5C6D7E8F90A1B2C3D4E5F72
+S315006060D0708192A3B4C5D6E7F8091A2B3C4D5E6F62
+S315006060E08091A2B3C4D5E6F708192A3B4C5D6E7F52
+S315006060F090A1B2C3D4E5F60718293A4B5C6D7E8F42
+S31500606100A0B1C2D3E4F5061728394A5B6C7D8E9F31
+S31500606110B0C1D2E3F405162738495A6B7C8D9EAF21
+S31500606120C0D1E2F30415263748596A7B8C9DAEBF11
+S31500606130D0E1F2031425364758697A8B9CADBECF01
+S31500606140E0F102132435465768798A9BACBDCEDFF1
+S31500606150F00112233445566778899AABBCCDDEEFE1
+S3150060616000112233445566778899AABBCCDDEEFFD1
+S31500606170102132435465768798A9BACBDCEDFE0FC1
+S315006061802031425364758697A8B9CADBECFD0E1FB1
+S3150060619030415263748596A7B8C9DAEBFC0D1E2FA1
+S315006061A0405162738495A6B7C8D9EAFB0C1D2E3F91
+S315006061B05061728394A5B6C7D8E9FA0B1C2D3E4F81
+S315006061C060718293A4B5C6D7E8F90A1B2C3D4E5F71
+S315006061D0708192A3B4C5D6E7F8091A2B3C4D5E6F61
+S315006061E08091A2B3C4D5E6F708192A3B4C5D6E7F51
+S315006061F090A1B2C3D4E5F60718293A4B5C6D7E8F41
+S31500606200A0B1C2D3E4F5061728394A5B6C7D8E9F30
+S31500606210B0C1D2E3F405162738495A6B7C8D9EAF20
+S31500606220C0D1E2F30415263748596A7B8C9DAEBF10
+S31500606230D0E1F2031425364758697A8B9CADBECF00
+S31500606240E0F102132435465768798A9BACBDCEDFF0
+S31500606250F00112233445566778899AABBCCDDEEFE0
+S3150060626000112233445566778899AABBCCDDEEFFD0
+S31500606270102132435465768798A9BACBDCEDFE0FC0
+S315006062802031425364758697A8B9CADBECFD0E1FB0
+S3150060629030415263748596A7B8C9DAEBFC0D1E2FA0
+S315006062A0405162738495A6B7C8D9EAFB0C1D2E3F90
+S315006062B05061728394A5B6C7D8E9FA0B1C2D3E4F80
+S315006062C060718293A4B5C6D7E8F90A1B2C3D4E5F70
+S315006062D0708192A3B4C5D6E7F8091A2B3C4D5E6F60
+S315006062E08091A2B3C4D5E6F708192A3B4C5D6E7F50
+S315006062F090A1B2C3D4E5F60718293A4B5C6D7E8F40
+S31500606300A0B1C2D3E4F5061728394A5B6C7D8E9F2F
+S31500606310B0C1D2E3F405162738495A6B7C8D9EAF1F
+S31500606320C0D1E2F30415263748596A7B8C9DAEBF0F
+S31500606330D0E1F2031425364758697A8B9CADBECFFF
+S31500606340E0F102132435465768798A9BACBDCEDFEF
+S31500606350F00112233445566778899AABBCCDDEEFDF
+S3150060636000112233445566778899AABBCCDDEEFFCF
+S31500606370102132435465768798A9BACBDCEDFE0FBF
+S315006063802031425364758697A8B9CADBECFD0E1FAF
+S3150060639030415263748596A7B8C9DAEBFC0D1E2F9F
+S315006063A0405162738495A6B7C8D9EAFB0C1D2E3F8F
+S315006063B05061728394A5B6C7D8E9FA0B1C2D3E4F7F
+S315006063C060718293A4B5C6D7E8F90A1B2C3D4E5F6F
+S315006063D0708192A3B4C5D6E7F8091A2B3C4D5E6F5F
+S315006063E08091A2B3C4D5E6F708192A3B4C5D6E7F4F
+S315006063F090A1B2C3D4E5F60718293A4B5C6D7E8F3F
+S31500606400A0B1C2D3E4F5061728394A5B6C7D8E9F2E
+S31500606410B0C1D2E3F405162738495A6B7C8D9EAF1E
+S31500606420C0D1E2F30415263748596A7B8C9DAEBF0E
+S31500606430D0E1F2031425364758697A8B9CADBECFFE
+S31500606440E0F102132435465768798A9BACBDCEDFEE
+S31500606450F00112233445566778899AABBCCDDEEFDE
+S3150060646000112233445566778899AABBCCDDEEFFCE
+S31500606470102132435465768798A9BACBDCEDFE0FBE
+S315006064802031425364758697A8B9CADBECFD0E1FAE
+S3150060649030415263748596A7B8C9DAEBFC0D1E2F9E
+S315006064A0405162738495A6B7C8D9EAFB0C1D2E3F8E
+S315006064B05061728394A5B6C7D8E9FA0B1C2D3E4F7E
+S315006064C060718293A4B5C6D7E8F90A1B2C3D4E5F6E
+S315006064D0708192A3B4C5D6E7F8091A2B3C4D5E6F5E
+S315006064E08091A2B3C4D5E6F708192A3B4C5D6E7F4E
+S315006064F090A1B2C3D4E5F60718293A4B5C6D7E8F3E
+S31500606500A0B1C2D3E4F5061728394A5B6C7D8E9F2D
+S31500606510B0C1D2E3F405162738495A6B7C8D9EAF1D
+S31500606520C0D1E2F30415263748596A7B8C9DAEBF0D
+S31500606530D0E1F2031425364758697A8B9CADBECFFD
+S31500606540E0F102132435465768798A9BACBDCEDFED
+S31500606550F00112233445566778899AABBCCDDEEFDD
+S3150060656000112233445566778899AABBCCDDEEFFCD
+S31500606570102132435465768798A9BACBDCEDFE0FBD
+S315006065802031425364758697A8B9CADBECFD0E1FAD
+S3150060659030415263748596A7B8C9DAEBFC0D1E2F9D
+S315006065A0405162738495A6B7C8D9EAFB0C1D2E3F8D
+S315006065B05061728394A5B6C7D8E9FA0B1C2D3E4F7D
+S315006065C060718293A4B5C6D7E8F90A1B2C3D4E5F6D
+S315006065D0708192A3B4C5D6E7F8091A2B3C4D5E6F5D
+S315006065E08091A2B3C4D5E6F708192A3B4C5D6E7F4D
+S315006065F090A1B2C3D4E5F60718293A4B5C6D7E8F3D
+S31500606600A0B1C2D3E4F5061728394A5B6C7D8E9F2C
+S31500606610B0C1D2E3F405162738495A6B7C8D9EAF1C
+S31500606620C0D1E2F30415263748596A7B8C9DAEBF0C
+S31500606630D0E1F2031425364758697A8B9CADBECFFC
+S31500606640E0F102132435465768798A9BACBDCEDFEC
+S31500606650F00112233445566778899AABBCCDDEEFDC
+S3150060666000112233445566778899AABBCCDDEEFFCC
+S31500606670102132435465768798A9BACBDCEDFE0FBC
+S315006066802031425364758697A8B9CADBECFD0E1FAC
+S3150060669030415263748596A7B8C9DAEBFC0D1E2F9C
+S315006066A0405162738495A6B7C8D9EAFB0C1D2E3F8C
+S315006066B05061728394A5B6C7D8E9FA0B1C2D3E4F7C
+S315006066C060718293A4B5C6D7E8F90A1B2C3D4E5F6C
+S315006066D0708192A3B4C5D6E7F8091A2B3C4D5E6F5C
+S315006066E08091A2B3C4D5E6F708192A3B4C5D6E7F4C
+S315006066F090A1B2C3D4E5F60718293A4B5C6D7E8F3C
+S31500606700A0B1C2D3E4F5061728394A5B6C7D8E9F2B
+S31500606710B0C1D2E3F405162738495A6B7C8D9EAF1B
+S31500606720C0D1E2F30415263748596A7B8C9DAEBF0B
+S31500606730D0E1F2031425364758697A8B9CADBECFFB
+S31500606740E0F102132435465768798A9BACBDCEDFEB
+S31500606750F00112233445566778899AABBCCDDEEFDB
+S3150060676000112233445566778899AABBCCDDEEFFCB
+S31500606770102132435465768798A9BACBDCEDFE0FBB
+S315006067802031425364758697A8B9CADBECFD0E1FAB
+S3150060679030415263748596A7B8C9DAEBFC0D1E2F9B
+S315006067A0405162738495A6B7C8D9EAFB0C1D2E3F8B
+S315006067B05061728394A5B6C7D8E9FA0B1C2D3E4F7B
+S315006067C060718293A4B5C6D7E8F90A1B2C3D4E5F6B
+S315006067D0708192A3B4C5D6E7F8091A2B3C4D5E6F5B
+S315006067E08091A2B3C4D5E6F708192A3B4C5D6E7F4B
+S315006067F090A1B2C3D4E5F60718293A4B5C6D7E8F3B
+S31500606800A0B1C2D3E4F5061728394A5B6C7D8E9F2A
+S31500606810B0C1D2E3F405162738495A6B7C8D9EAF1A
+S31500606820C0D1E2F30415263748596A7B8C9DAEBF0A
+S31500606830D0E1F2031425364758697A8B9CADBECFFA
+S31500606840E0F102132435465768798A9BACBDCEDFEA
+S31500606850F00112233445566778899AABBCCDDEEFDA
+S3150060686000112233445566778899AABBCCDDEEFFCA
+S31500606870102132435465768798A9BACBDCEDFE0FBA
+S315006068802031425364758697A8B9CADBECFD0E1FAA
+S3150060689030415263748596A7B8C9DAEBFC0D1E2F9A
+S315006068A0405162738495A6B7C8D9EAFB0C1D2E3F8A
+S315006068B05061728394A5B6C7D8E9FA0B1C2D3E4F7A
+S315006068C060718293A4B5C6D7E8F90A1B2C3D4E5F6A
+S315006068D0708192A3B4C5D6E7F8091A2B3C4D5E6F5A
+S315006068E08091A2B3C4D5E6F708192A3B4C5D6E7F4A
+S315006068F090A1B2C3D4E5F60718293A4B5C6D7E8F3A
+S31500606900A0B1C2D3E4F5061728394A5B6C7D8E9F29
+S31500606910B0C1D2E3F405162738495A6B7C8D9EAF19
+S31500606920C0D1E2F30415263748596A7B8C9DAEBF09
+S31500606930D0E1F2031425364758697A8B9CADBECFF9
+S31500606940E0F102132435465768798A9BACBDCEDFE9
+S31500606950F00112233445566778899AABBCCDDEEFD9
+S3150060696000112233445566778899AABBCCDDEEFFC9
+S31500606970102132435465768798A9BACBDCEDFE0FB9
+S315006069802031425364758697A8B9CADBECFD0E1FA9
+S3150060699030415263748596A7B8C9DAEBFC0D1E2F99
+S315006069A0405162738495A6B7C8D9EAFB0C1D2E3F89
+S315006069B05061728394A5B6C7D8E9FA0B1C2D3E4F79
+S315006069C060718293A4B5C6D7E8F90A1B2C3D4E5F69
+S315006069D0708192A3B4C5D6E7F8091A2B3C4D5E6F59
+S315006069E08091A2B3C4D5E6F708192A3B4C5D6E7F49
+S315006069F090A1B2C3D4E5F60718293A4B5C6D7E8F39
+S31500606A00A0B1C2D3E4F5061728394A5B6C7D8E9F28
+S31500606A10B0C1D2E3F405162738495A6B7C8D9EAF18
+S31500606A20C0D1E2F30415263748596A7B8C9DAEBF08
+S31500606A30D0E1F2031425364758697A8B9CADBECFF8
+S31500606A40E0F102132435465768798A9BACBDCEDFE8
+S31500606A50F00112233445566778899AABBCCDDEEFD8
+S31500606A6000112233445566778899AABBCCDDEEFFC8
+S31500606A70102132435465768798A9BACBDCEDFE0FB8
+S31500606A802031425364758697A8B9CADBECFD0E1FA8
+S31500606A9030415263748596A7B8C9DAEBFC0D1E2F98
+S31500606AA0405162738495A6B7C8D9EAFB0C1D2E3F88
+S31500606AB05061728394A5B6C7D8E9FA0B1C2D3E4F78
+S31500606AC060718293A4B5C6D7E8F90A1B2C3D4E5F68
+S31500606AD0708192A3B4C5D6E7F8091A2B3C4D5E6F58
+S31500606AE08091A2B3C4D5E6F708192A3B4C5D6E7F48
+S31500606AF090A1B2C3D4E5F60718293A4B5C6D7E8F38
+S31500606B00A0B1C2D3E4F5061728394A5B6C7D8E9F27
+S31500606B10B0C1D2E3F405162738495A6B7C8D9EAF17
+S31500606B20C0D1E2F30415263748596A7B8C9DAEBF07
+S31500606B30D0E1F2031425364758697A8B9CADBECFF7
+S31500606B40E0F102132435465768798A9BACBDCEDFE7
+S31500606B50F00112233445566778899AABBCCDDEEFD7
+S31500606B6000112233445566778899AABBCCDDEEFFC7
+S31500606B70102132435465768798A9BACBDCEDFE0FB7
+S31500606B802031425364758697A8B9CADBECFD0E1FA7
+S31500606B9030415263748596A7B8C9DAEBFC0D1E2F97
+S31500606BA0405162738495A6B7C8D9EAFB0C1D2E3F87
+S31500606BB05061728394A5B6C7D8E9FA0B1C2D3E4F77
+S31500606BC060718293A4B5C6D7E8F90A1B2C3D4E5F67
+S31500606BD0708192A3B4C5D6E7F8091A2B3C4D5E6F57
+S31500606BE08091A2B3C4D5E6F708192A3B4C5D6E7F47
+S31500606BF090A1B2C3D4E5F60718293A4B5C6D7E8F37
+S31500606C00A0B1C2D3E4F5061728394A5B6C7D8E9F26
+S31500606C10B0C1D2E3F405162738495A6B7C8D9EAF16
+S31500606C20C0D1E2F30415263748596A7B8C9DAEBF06
+S31500606C30D0E1F2031425364758697A8B9CADBECFF6
+S31500606C40E0F102132435465768798A9BACBDCEDFE6
+S31500606C50F00112233445566778899AABBCCDDEEFD6
+S31500606C6000112233445566778899AABBCCDDEEFFC6
+S31500606C70102132435465768798A9BACBDCEDFE0FB6
+S31500606C802031425364758697A8B9CADBECFD0E1FA6
+S31500606C9030415263748596A7B8C9DAEBFC0D1E2F96
+S31500606CA0405162738495A6B7C8D9EAFB0C1D2E3F86
+S31500606CB05061728394A5B6C7D8E9FA0B1C2D3E4F76
+S31500606CC060718293A4B5C6D7E8F90A1B2C3D4E5F66
+S31500606CD0708192A3B4C5D6E7F8091A2B3C4D5E6F56
+S31500606CE08091A2B3C4D5E6F708192A3B4C5D6E7F46
+S31500606CF090A1B2C3D4E5F60718293A4B5C6D7E8F36
+S31500606D00A0B1C2D3E4F5061728394A5B6C7D8E9F25
+S31500606D10B0C1D2E3F405162738495A6B7C8D9EAF15
+S31500606D20C0D1E2F30415263748596A7B8C9DAEBF05
+S31500606D30D0E1F2031425364758697A8B9CADBECFF5
+S31500606D40E0F102132435465768798A9BACBDCEDFE5
+S31500606D50F00112233445566778899AABBCCDDEEFD5
+S31500606D6000112233445566778899AABBCCDDEEFFC5
+S31500606D70102132435465768798A9BACBDCEDFE0FB5
+S31500606D802031425364758697A8B9CADBECFD0E1FA5
+S31500606D9030415263748596A7B8C9DAEBFC0D1E2F95
+S31500606DA0405162738495A6B7C8D9EAFB0C1D2E3F85
+S31500606DB05061728394A5B6C7D8E9FA0B1C2D3E4F75
+S31500606DC060718293A4B5C6D7E8F90A1B2C3D4E5F65
+S31500606DD0708192A3B4C5D6E7F8091A2B3C4D5E6F55
+S31500606DE08091A2B3C4D5E6F708192A3B4C5D6E7F45
+S31500606DF090A1B2C3D4E5F60718293A4B5C6D7E8F35
+S31500606E00A0B1C2D3E4F5061728394A5B6C7D8E9F24
+S31500606E10B0C1D2E3F405162738495A6B7C8D9EAF14
+S31500606E20C0D1E2F30415263748596A7B8C9DAEBF04
+S31500606E30D0E1F2031425364758697A8B9CADBECFF4
+S31500606E40E0F102132435465768798A9BACBDCEDFE4
+S31500606E50F00112233445566778899AABBCCDDEEFD4
+S31500606E6000112233445566778899AABBCCDDEEFFC4
+S31500606E70102132435465768798A9BACBDCEDFE0FB4
+S31500606E802031425364758697A8B9CADBECFD0E1FA4
+S31500606E9030415263748596A7B8C9DAEBFC0D1E2F94
+S31500606EA0405162738495A6B7C8D9EAFB0C1D2E3F84
+S31500606EB05061728394A5B6C7D8E9FA0B1C2D3E4F74
+S31500606EC060718293A4B5C6D7E8F90A1B2C3D4E5F64
+S31500606ED0708192A3B4C5D6E7F8091A2B3C4D5E6F54
+S31500606EE08091A2B3C4D5E6F708192A3B4C5D6E7F44
+S31500606EF090A1B2C3D4E5F60718293A4B5C6D7E8F34
+S31500606F00A0B1C2D3E4F5061728394A5B6C7D8E9F23
+S31500606F10B0C1D2E3F405162738495A6B7C8D9EAF13
+S31500606F20C0D1E2F30415263748596A7B8C9DAEBF03
+S31500606F30D0E1F2031425364758697A8B9CADBECFF3
+S31500606F40E0F102132435465768798A9BACBDCEDFE3
+S31500606F50F00112233445566778899AABBCCDDEEFD3
+S31500606F6000112233445566778899AABBCCDDEEFFC3
+S31500606F70102132435465768798A9BACBDCEDFE0FB3
+S31500606F802031425364758697A8B9CADBECFD0E1FA3
+S31500606F9030415263748596A7B8C9DAEBFC0D1E2F93
+S31500606FA0405162738495A6B7C8D9EAFB0C1D2E3F83
+S31500606FB05061728394A5B6C7D8E9FA0B1C2D3E4F73
+S31500606FC060718293A4B5C6D7E8F90A1B2C3D4E5F63
+S31500606FD0708192A3B4C5D6E7F8091A2B3C4D5E6F53
+S31500606FE08091A2B3C4D5E6F708192A3B4C5D6E7F43
+S31500606FF090A1B2C3D4E5F60718293A4B5C6D7E8F33
+S31500607000A0B1C2D3E4F5061728394A5B6C7D8E9F22
+S31500607010B0C1D2E3F405162738495A6B7C8D9EAF12
+S31500607020C0D1E2F30415263748596A7B8C9DAEBF02
+S31500607030D0E1F2031425364758697A8B9CADBECFF2
+S31500607040E0F102132435465768798A9BACBDCEDFE2
+S31500607050F00112233445566778899AABBCCDDEEFD2
+S3150060706000112233445566778899AABBCCDDEEFFC2
+S31500607070102132435465768798A9BACBDCEDFE0FB2
+S315006070802031425364758697A8B9CADBECFD0E1FA2
+S3150060709030415263748596A7B8C9DAEBFC0D1E2F92
+S315006070A0405162738495A6B7C8D9EAFB0C1D2E3F82
+S315006070B05061728394A5B6C7D8E9FA0B1C2D3E4F72
+S315006070C060718293A4B5C6D7E8F90A1B2C3D4E5F62
+S315006070D0708192A3B4C5D6E7F8091A2B3C4D5E6F52
+S315006070E08091A2B3C4D5E6F708192A3B4C5D6E7F42
+S315006070F090A1B2C3D4E5F60718293A4B5C6D7E8F32
+S31500607100A0B1C2D3E4F5061728394A5B6C7D8E9F21
+S31500607110B0C1D2E3F405162738495A6B7C8D9EAF11
+S31500607120C0D1E2F30415263748596A7B8C9DAEBF01
+S31500607130D0E1F2031425364758697A8B9CADBECFF1
+S31500607140E0F102132435465768798A9BACBDCEDFE1
+S31500607150F00112233445566778899AABBCCDDEEFD1
+S3150060716000112233445566778899AABBCCDDEEFFC1
+S31500607170102132435465768798A9BACBDCEDFE0FB1
+S315006071802031425364758697A8B9CADBECFD0E1FA1
+S3150060719030415263748596A7B8C9DAEBFC0D1E2F91
+S315006071A0405162738495A6B7C8D9EAFB0C1D2E3F81
+S315006071B05061728394A5B6C7D8E9FA0B1C2D3E4F71
+S315006071C060718293A4B5C6D7E8F90A1B2C3D4E5F61
+S315006071D0708192A3B4C5D6E7F8091A2B3C4D5E6F51
+S315006071E08091A2B3C4D5E6F708192A3B4C5D6E7F41
+S315006071F090A1B2C3D4E5F60718293A4B5C6D7E8F31
+S31500607200A0B1C2D3E4F5061728394A5B6C7D8E9F20
+S31500607210B0C1D2E3F405162738495A6B7C8D9EAF10
+S31500607220C0D1E2F30415263748596A7B8C9DAEBF00
+S31500607230D0E1F2031425364758697A8B9CADBECFF0
+S31500607240E0F102132435465768798A9BACBDCEDFE0
+S31500607250F00112233445566778899AABBCCDDEEFD0
+S3150060726000112233445566778899AABBCCDDEEFFC0
+S31500607270102132435465768798A9BACBDCEDFE0FB0
+S315006072802031425364758697A8B9CADBECFD0E1FA0
+S3150060729030415263748596A7B8C9DAEBFC0D1E2F90
+S315006072A0405162738495A6B7C8D9EAFB0C1D2E3F80
+S315006072B05061728394A5B6C7D8E9FA0B1C2D3E4F70
+S315006072C060718293A4B5C6D7E8F90A1B2C3D4E5F60
+S315006072D0708192A3B4C5D6E7F8091A2B3C4D5E6F50
+S315006072E08091A2B3C4D5E6F708192A3B4C5D6E7F40
+S315006072F090A1B2C3D4E5F60718293A4B5C6D7E8F30
+S31500607300A0B1C2D3E4F5061728394A5B6C7D8E9F1F
+S31500607310B0C1D2E3F405162738495A6B7C8D9EAF0F
+S31500607320C0D1E2F30415263748596A7B8C9DAEBFFF
+S31500607330D0E1F2031425364758697A8B9CADBECFEF
+S31500607340E0F102132435465768798A9BACBDCEDFDF
+S31500607350F00112233445566778899AABBCCDDEEFCF
+S3150060736000112233445566778899AABBCCDDEEFFBF
+S31500607370102132435465768798A9BACBDCEDFE0FAF
+S315006073802031425364758697A8B9CADBECFD0E1F9F
+S3150060739030415263748596A7B8C9DAEBFC0D1E2F8F
+S315006073A0405162738495A6B7C8D9EAFB0C1D2E3F7F
+S315006073B05061728394A5B6C7D8E9FA0B1C2D3E4F6F
+S315006073C060718293A4B5C6D7E8F90A1B2C3D4E5F5F
+S315006073D0708192A3B4C5D6E7F8091A2B3C4D5E6F4F
+S315006073E08091A2B3C4D5E6F708192A3B4C5D6E7F3F
+S315006073F090A1B2C3D4E5F60718293A4B5C6D7E8F2F
+S31500607400A0B1C2D3E4F5061728394A5B6C7D8E9F1E
+S31500607410B0C1D2E3F405162738495A6B7C8D9EAF0E
+S31500607420C0D1E2F30415263748596A7B8C9DAEBFFE
+S31500607430D0E1F2031425364758697A8B9CADBECFEE
+S31500607440E0F102132435465768798A9BACBDCEDFDE
+S31500607450F00112233445566778899AABBCCDDEEFCE
+S3150060746000112233445566778899AABBCCDDEEFFBE
+S31500607470102132435465768798A9BACBDCEDFE0FAE
+S315006074802031425364758697A8B9CADBECFD0E1F9E
+S3150060749030415263748596A7B8C9DAEBFC0D1E2F8E
+S315006074A0405162738495A6B7C8D9EAFB0C1D2E3F7E
+S315006074B05061728394A5B6C7D8E9FA0B1C2D3E4F6E
+S315006074C060718293A4B5C6D7E8F90A1B2C3D4E5F5E
+S315006074D0708192A3B4C5D6E7F8091A2B3C4D5E6F4E
+S315006074E08091A2B3C4D5E6F708192A3B4C5D6E7F3E
+S315006074F090A1B2C3D4E5F60718293A4B5C6D7E8F2E
+S31500607500A0B1C2D3E4F5061728394A5B6C7D8E9F1D
+S31500607510B0C1D2E3F405162738495A6B7C8D9EAF0D
+S31500607520C0D1E2F30415263748596A7B8C9DAEBFFD
+S31500607530D0E1F2031425364758697A8B9CADBECFED
+S31500607540E0F102132435465768798A9BACBDCEDFDD
+S31500607550F00112233445566778899AABBCCDDEEFCD
+S3150060756000112233445566778899AABBCCDDEEFFBD
+S31500607570102132435465768798A9BACBDCEDFE0FAD
+S315006075802031425364758697A8B9CADBECFD0E1F9D
+S3150060759030415263748596A7B8C9DAEBFC0D1E2F8D
+S315006075A0405162738495A6B7C8D9EAFB0C1D2E3F7D
+S315006075B05061728394A5B6C7D8E9FA0B1C2D3E4F6D
+S315006075C060718293A4B5C6D7E8F90A1B2C3D4E5F5D
+S315006075D0708192A3B4C5D6E7F8091A2B3C4D5E6F4D
+S315006075E08091A2B3C4D5E6F708192A3B4C5D6E7F3D
+S315006075F090A1B2C3D4E5F60718293A4B5C6D7E8F2D
+S31500607600A0B1C2D3E4F5061728394A5B6C7D8E9F1C
+S31500607610B0C1D2E3F405162738495A6B7C8D9EAF0C
+S31500607620C0D1E2F30415263748596A7B8C9DAEBFFC
+S31500607630D0E1F2031425364758697A8B9CADBECFEC
+S31500607640E0F102132435465768798A9BACBDCEDFDC
+S31500607650F00112233445566778899AABBCCDDEEFCC
+S3150060766000112233445566778899AABBCCDDEEFFBC
+S31500607670102132435465768798A9BACBDCEDFE0FAC
+S315006076802031425364758697A8B9CADBECFD0E1F9C
+S3150060769030415263748596A7B8C9DAEBFC0D1E2F8C
+S315006076A0405162738495A6B7C8D9EAFB0C1D2E3F7C
+S315006076B05061728394A5B6C7D8E9FA0B1C2D3E4F6C
+S315006076C060718293A4B5C6D7E8F90A1B2C3D4E5F5C
+S315006076D0708192A3B4C5D6E7F8091A2B3C4D5E6F4C
+S315006076E08091A2B3C4D5E6F708192A3B4C5D6E7F3C
+S315006076F090A1B2C3D4E5F60718293A4B5C6D7E8F2C
+S31500607700A0B1C2D3E4F5061728394A5B6C7D8E9F1B
+S31500607710B0C1D2E3F405162738495A6B7C8D9EAF0B
+S31500607720C0D1E2F30415263748596A7B8C9DAEBFFB
+S31500607730D0E1F2031425364758697A8B9CADBECFEB
+S31500607740E0F102132435465768798A9BACBDCEDFDB
+S31500607750F00112233445566778899AABBCCDDEEFCB
+S3150060776000112233445566778899AABBCCDDEEFFBB
+S31500607770102132435465768798A9BACBDCEDFE0FAB
+S315006077802031425364758697A8B9CADBECFD0E1F9B
+S3150060779030415263748596A7B8C9DAEBFC0D1E2F8B
+S315006077A0405162738495A6B7C8D9EAFB0C1D2E3F7B
+S315006077B05061728394A5B6C7D8E9FA0B1C2D3E4F6B
+S315006077C060718293A4B5C6D7E8F90A1B2C3D4E5F5B
+S315006077D0708192A3B4C5D6E7F8091A2B3C4D5E6F4B
+S315006077E08091A2B3C4D5E6F708192A3B4C5D6E7F3B
+S315006077F090A1B2C3D4E5F60718293A4B5C6D7E8F2B
+S31500607800A0B1C2D3E4F5061728394A5B6C7D8E9F1A
+S31500607810B0C1D2E3F405162738495A6B7C8D9EAF0A
+S31500607820C0D1E2F30415263748596A7B8C9DAEBFFA
+S31500607830D0E1F2031425364758697A8B9CADBECFEA
+S31500607840E0F102132435465768798A9BACBDCEDFDA
+S31500607850F00112233445566778899AABBCCDDEEFCA
+S3150060786000112233445566778899AABBCCDDEEFFBA
+S31500607870102132435465768798A9BACBDCEDFE0FAA
+S315006078802031425364758697A8B9CADBECFD0E1F9A
+S3150060789030415263748596A7B8C9DAEBFC0D1E2F8A
+S315006078A0405162738495A6B7C8D9EAFB0C1D2E3F7A
+S315006078B05061728394A5B6C7D8E9FA0B1C2D3E4F6A
+S315006078C060718293A4B5C6D7E8F90A1B2C3D4E5F5A
+S315006078D0708192A3B4C5D6E7F8091A2B3C4D5E6F4A
+S315006078E08091A2B3C4D5E6F708192A3B4C5D6E7F3A
+S315006078F090A1B2C3D4E5F60718293A4B5C6D7E8F2A
+S31500607900A0B1C2D3E4F5061728394A5B6C7D8E9F19
+S31500607910B0C1D2E3F405162738495A6B7C8D9EAF09
+S31500607920C0D1E2F30415263748596A7B8C9DAEBFF9
+S31500607930D0E1F2031425364758697A8B9CADBECFE9
+S31500607940E0F102132435465768798A9BACBDCEDFD9
+S31500607950F00112233445566778899AABBCCDDEEFC9
+S3150060796000112233445566778899AABBCCDDEEFFB9
+S31500607970102132435465768798A9BACBDCEDFE0FA9
+S315006079802031425364758697A8B9CADBECFD0E1F99
+S3150060799030415263748596A7B8C9DAEBFC0D1E2F89
+S315006079A0405162738495A6B7C8D9EAFB0C1D2E3F79
+S315006079B05061728394A5B6C7D8E9FA0B1C2D3E4F69
+S315006079C060718293A4B5C6D7E8F90A1B2C3D4E5F59
+S315006079D0708192A3B4C5D6E7F8091A2B3C4D5E6F49
+S315006079E08091A2B3C4D5E6F708192A3B4C5D6E7F39
+S315006079F090A1B2C3D4E5F60718293A4B5C6D7E8F29
+S31500607A00A0B1C2D3E4F5061728394A5B6C7D8E9F18
+S31500607A10B0C1D2E3F405162738495A6B7C8D9EAF08
+S31500607A20C0D1E2F30415263748596A7B8C9DAEBFF8
+S31500607A30D0E1F2031425364758697A8B9CADBECFE8
+S31500607A40E0F102132435465768798A9BACBDCEDFD8
+S31500607A50F00112233445566778899AABBCCDDEEFC8
+S31500607A6000112233445566778899AABBCCDDEEFFB8
+S31500607A70102132435465768798A9BACBDCEDFE0FA8
+S31500607A802031425364758697A8B9CADBECFD0E1F98
+S31500607A9030415263748596A7B8C9DAEBFC0D1E2F88
+S31500607AA0405162738495A6B7C8D9EAFB0C1D2E3F78
+S31500607AB05061728394A5B6C7D8E9FA0B1C2D3E4F68
+S31500607AC060718293A4B5C6D7E8F90A1B2C3D4E5F58
+S31500607AD0708192A3B4C5D6E7F8091A2B3C4D5E6F48
+S31500607AE08091A2B3C4D5E6F708192A3B4C5D6E7F38
+S31500607AF090A1B2C3D4E5F60718293A4B5C6D7E8F28
+S31500607B00A0B1C2D3E4F5061728394A5B6C7D8E9F17
+S31500607B10B0C1D2E3F405162738495A6B7C8D9EAF07
+S31500607B20C0D1E2F30415263748596A7B8C9DAEBFF7
+S31500607B30D0E1F2031425364758697A8B9CADBECFE7
+S31500607B40E0F102132435465768798A9BACBDCEDFD7
+S31500607B50F00112233445566778899AABBCCDDEEFC7
+S31500607B6000112233445566778899AABBCCDDEEFFB7
+S31500607B70102132435465768798A9BACBDCEDFE0FA7
+S31500607B802031425364758697A8B9CADBECFD0E1F97
+S31500607B9030415263748596A7B8C9DAEBFC0D1E2F87
+S31500607BA0405162738495A6B7C8D9EAFB0C1D2E3F77
+S31500607BB05061728394A5B6C7D8E9FA0B1C2D3E4F67
+S31500607BC060718293A4B5C6D7E8F90A1B2C3D4E5F57
+S31500607BD0708192A3B4C5D6E7F8091A2B3C4D5E6F47
+S31500607BE08091A2B3C4D5E6F708192A3B4C5D6E7F37
+S31500607BF090A1B2C3D4E5F60718293A4B5C6D7E8F27
+S31500607C00A0B1C2D3E4F5061728394A5B6C7D8E9F16
+S31500607C10B0C1D2E3F405162738495A6B7C8D9EAF06
+S31500607C20C0D1E2F30415263748596A7B8C9DAEBFF6
+S31500607C30D0E1F2031425364758697A8B9CADBECFE6
+S31500607C40E0F102132435465768798A9BACBDCEDFD6
+S31500607C50F00112233445566778899AABBCCDDEEFC6
+S31500607C6000112233445566778899AABBCCDDEEFFB6
+S31500607C70102132435465768798A9BACBDCEDFE0FA6
+S31500607C802031425364758697A8B9CADBECFD0E1F96
+S31500607C9030415263748596A7B8C9DAEBFC0D1E2F86
+S31500607CA0405162738495A6B7C8D9EAFB0C1D2E3F76
+S31500607CB05061728394A5B6C7D8E9FA0B1C2D3E4F66
+S31500607CC060718293A4B5C6D7E8F90A1B2C3D4E5F56
+S31500607CD0708192A3B4C5D6E7F8091A2B3C4D5E6F46
+S31500607CE08091A2B3C4D5E6F708192A3B4C5D6E7F36
+S31500607CF090A1B2C3D4E5F60718293A4B5C6D7E8F26
+S31500607D00A0B1C2D3E4F5061728394A5B6C7D8E9F15
+S31500607D10B0C1D2E3F405162738495A6B7C8D9EAF05
+S31500607D20C0D1E2F30415263748596A7B8C9DAEBFF5
+S31500607D30D0E1F2031425364758697A8B9CADBECFE5
+S31500607D40E0F102132435465768798A9BACBDCEDFD5
+S31500607D50F00112233445566778899AABBCCDDEEFC5
+S31500607D6000112233445566778899AABBCCDDEEFFB5
+S31500607D70102132435465768798A9BACBDCEDFE0FA5
+S31500607D802031425364758697A8B9CADBECFD0E1F95
+S31500607D9030415263748596A7B8C9DAEBFC0D1E2F85
+S31500607DA0405162738495A6B7C8D9EAFB0C1D2E3F75
+S31500607DB05061728394A5B6C7D8E9FA0B1C2D3E4F65
+S31500607DC060718293A4B5C6D7E8F90A1B2C3D4E5F55
+S31500607DD0708192A3B4C5D6E7F8091A2B3C4D5E6F45
+S31500607DE08091A2B3C4D5E6F708192A3B4C5D6E7F35
+S31500607DF090A1B2C3D4E5F60718293A4B5C6D7E8F25
+S31500607E00A0B1C2D3E4F5061728394A5B6C7D8E9F14
+S31500607E10B0C1D2E3F405162738495A6B7C8D9EAF04
+S31500607E20C0D1E2F30415263748596A7B8C9DAEBFF4
+S31500607E30D0E1F2031425364758697A8B9CADBECFE4
+S31500607E40E0F102132435465768798A9BACBDCEDFD4
+S31500607E50F00112233445566778899AABBCCDDEEFC4
+S31500607E6000112233445566778899AABBCCDDEEFFB4
+S31500607E70102132435465768798A9BACBDCEDFE0FA4
+S31500607E802031425364758697A8B9CADBECFD0E1F94
+S31500607E9030415263748596A7B8C9DAEBFC0D1E2F84
+S31500607EA0405162738495A6B7C8D9EAFB0C1D2E3F74
+S31500607EB05061728394A5B6C7D8E9FA0B1C2D3E4F64
+S31500607EC060718293A4B5C6D7E8F90A1B2C3D4E5F54
+S31500607ED0708192A3B4C5D6E7F8091A2B3C4D5E6F44
+S31500607EE08091A2B3C4D5E6F708192A3B4C5D6E7F34
+S31500607EF090A1B2C3D4E5F60718293A4B5C6D7E8F24
+S31500607F00A0B1C2D3E4F5061728394A5B6C7D8E9F13
+S31500607F10B0C1D2E3F405162738495A6B7C8D9EAF03
+S31500607F20C0D1E2F30415263748596A7B8C9DAEBFF3
+S31500607F30D0E1F2031425364758697A8B9CADBECFE3
+S31500607F40E0F102132435465768798A9BACBDCEDFD3
+S31500607F50F00112233445566778899AABBCCDDEEFC3
+S31500607F6000112233445566778899AABBCCDDEEFFB3
+S31500607F70102132435465768798A9BACBDCEDFE0FA3
+S31500607F802031425364758697A8B9CADBECFD0E1F93
+S31500607F9030415263748596A7B8C9DAEBFC0D1E2F83
+S31500607FA0405162738495A6B7C8D9EAFB0C1D2E3F73
+S31500607FB05061728394A5B6C7D8E9FA0B1C2D3E4F63
+S31500607FC060718293A4B5C6D7E8F90A1B2C3D4E5F53
+S31500607FD0708192A3B4C5D6E7F8091A2B3C4D5E6F43
+S31500607FE08091A2B3C4D5E6F708192A3B4C5D6E7F33
+S31500607FF090A1B2C3D4E5F60718293A4B5C6D7E8F23
+S31500608000A0B1C2D3E4F5061728394A5B6C7D8E9F12
+S31500608010B0C1D2E3F405162738495A6B7C8D9EAF02
+S31500608020C0D1E2F30415263748596A7B8C9DAEBFF2
+S31500608030D0E1F2031425364758697A8B9CADBECFE2
+S31500608040E0F102132435465768798A9BACBDCEDFD2
+S31500608050F00112233445566778899AABBCCDDEEFC2
+S3150060806000112233445566778899AABBCCDDEEFFB2
+S31500608070102132435465768798A9BACBDCEDFE0FA2
+S315006080802031425364758697A8B9CADBECFD0E1F92
+S3150060809030415263748596A7B8C9DAEBFC0D1E2F82
+S315006080A0405162738495A6B7C8D9EAFB0C1D2E3F72
+S315006080B05061728394A5B6C7D8E9FA0B1C2D3E4F62
+S315006080C060718293A4B5C6D7E8F90A1B2C3D4E5F52
+S315006080D0708192A3B4C5D6E7F8091A2B3C4D5E6F42
+S315006080E08091A2B3C4D5E6F708192A3B4C5D6E7F32
+S315006080F090A1B2C3D4E5F60718293A4B5C6D7E8F22
+S31500608100A0B1C2D3E4F5061728394A5B6C7D8E9F11
+S31500608110B0C1D2E3F405162738495A6B7C8D9EAF01
+S31500608120C0D1E2F30415263748596A7B8C9DAEBFF1
+S31500608130D0E1F2031425364758697A8B9CADBECFE1
+S31500608140E0F102132435465768798A9BACBDCEDFD1
+S31500608150F00112233445566778899AABBCCDDEEFC1
+S3150060816000112233445566778899AABBCCDDEEFFB1
+S31500608170102132435465768798A9BACBDCEDFE0FA1
+S315006081802031425364758697A8B9CADBECFD0E1F91
+S3150060819030415263748596A7B8C9DAEBFC0D1E2F81
+S315006081A0405162738495A6B7C8D9EAFB0C1D2E3F71
+S315006081B05061728394A5B6C7D8E9FA0B1C2D3E4F61
+S315006081C060718293A4B5C6D7E8F90A1B2C3D4E5F51
+S315006081D0708192A3B4C5D6E7F8091A2B3C4D5E6F41
+S315006081E08091A2B3C4D5E6F708192A3B4C5D6E7F31
+S315006081F090A1B2C3D4E5F60718293A4B5C6D7E8F21
+S31500608200A0B1C2D3E4F5061728394A5B6C7D8E9F10
+S31500608210B0C1D2E3F405162738495A6B7C8D9EAF00
+S31500608220C0D1E2F30415263748596A7B8C9DAEBFF0
+S31500608230D0E1F2031425364758697A8B9CADBECFE0
+S31500608240E0F102132435465768798A9BACBDCEDFD0
+S31500608250F00112233445566778899AABBCCDDEEFC0
+S3150060826000112233445566778899AABBCCDDEEFFB0
+S31500608270102132435465768798A9BACBDCEDFE0FA0
+S315006082802031425364758697A8B9CADBECFD0E1F90
+S3150060829030415263748596A7B8C9DAEBFC0D1E2F80
+S315006082A0405162738495A6B7C8D9EAFB0C1D2E3F70
+S315006082B05061728394A5B6C7D8E9FA0B1C2D3E4F60
+S315006082C060718293A4B5C6D7E8F90A1B2C3D4E5F50
+S315006082D0708192A3B4C5D6E7F8091A2B3C4D5E6F40
+S315006082E08091A2B3C4D5E6F708192A3B4C5D6E7F30
+S315006082F090A1B2C3D4E5F60718293A4B5C6D7E8F20
+S31500608300A0B1C2D3E4F5061728394A5B6C7D8E9F0F
+S31500608310B0C1D2E3F405162738495A6B7C8D9EAFFF
+S31500608320C0D1E2F30415263748596A7B8C9DAEBFEF
+S31500608330D0E1F2031425364758697A8B9CADBECFDF
+S31500608340E0F102132435465768798A9BACBDCEDFCF
+S31500608350F00112233445566778899AABBCCDDEEFBF
+S3150060836000112233445566778899AABBCCDDEEFFAF
+S31500608370102132435465768798A9BACBDCEDFE0F9F
+S315006083802031425364758697A8B9CADBECFD0E1F8F
+S3150060839030415263748596A7B8C9DAEBFC0D1E2F7F
+S315006083A0405162738495A6B7C8D9EAFB0C1D2E3F6F
+S315006083B05061728394A5B6C7D8E9FA0B1C2D3E4F5F
+S315006083C060718293A4B5C6D7E8F90A1B2C3D4E5F4F
+S315006083D0708192A3B4C5D6E7F8091A2B3C4D5E6F3F
+S315006083E08091A2B3C4D5E6F708192A3B4C5D6E7F2F
+S315006083F090A1B2C3D4E5F60718293A4B5C6D7E8F1F
+S31500608400A0B1C2D3E4F5061728394A5B6C7D8E9F0E
+S31500608410B0C1D2E3F405162738495A6B7C8D9EAFFE
+S31500608420C0D1E2F30415263748596A7B8C9DAEBFEE
+S31500608430D0E1F2031425364758697A8B9CADBECFDE
+S31500608440E0F102132435465768798A9BACBDCEDFCE
+S31500608450F00112233445566778899AABBCCDDEEFBE
+S3150060846000112233445566778899AABBCCDDEEFFAE
+S31500608470102132435465768798A9BACBDCEDFE0F9E
+S315006084802031425364758697A8B9CADBECFD0E1F8E
+S3150060849030415263748596A7B8C9DAEBFC0D1E2F7E
+S315006084A0405162738495A6B7C8D9EAFB0C1D2E3F6E
+S315006084B05061728394A5B6C7D8E9FA0B1C2D3E4F5E
+S315006084C060718293A4B5C6D7E8F90A1B2C3D4E5F4E
+S315006084D0708192A3B4C5D6E7F8091A2B3C4D5E6F3E
+S315006084E08091A2B3C4D5E6F708192A3B4C5D6E7F2E
+S315006084F090A1B2C3D4E5F60718293A4B5C6D7E8F1E
+S31500608500A0B1C2D3E4F5061728394A5B6C7D8E9F0D
+S31500608510B0C1D2E3F405162738495A6B7C8D9EAFFD
+S31500608520C0D1E2F30415263748596A7B8C9DAEBFED
+S31500608530D0E1F2031425364758697A8B9CADBECFDD
+S31500608540E0F102132435465768798A9BACBDCEDFCD
+S31500608550F00112233445566778899AABBCCDDEEFBD
+S3150060856000112233445566778899AABBCCDDEEFFAD
+S31500608570102132435465768798A9BACBDCEDFE0F9D
+S315006085802031425364758697A8B9CADBECFD0E1F8D
+S3150060859030415263748596A7B8C9DAEBFC0D1E2F7D
+S315006085A0405162738495A6B7C8D9EAFB0C1D2E3F6D
+S315006085B05061728394A5B6C7D8E9FA0B1C2D3E4F5D
+S315006085C060718293A4B5C6D7E8F90A1B2C3D4E5F4D
+S315006085D0708192A3B4C5D6E7F8091A2B3C4D5E6F3D
+S315006085E08091A2B3C4D5E6F708192A3B4C5D6E7F2D
+S315006085F090A1B2C3D4E5F60718293A4B5C6D7E8F1D
+S31500608600A0B1C2D3E4F5061728394A5B6C7D8E9F0C
+S31500608610B0C1D2E3F405162738495A6B7C8D9EAFFC
+S31500608620C0D1E2F30415263748596A7B8C9DAEBFEC
+S31500608630D0E1F2031425364758697A8B9CADBECFDC
+S31500608640E0F102132435465768798A9BACBDCEDFCC
+S31500608650F00112233445566778899AABBCCDDEEFBC
+S3150060866000112233445566778899AABBCCDDEEFFAC
+S31500608670102132435465768798A9BACBDCEDFE0F9C
+S315006086802031425364758697A8B9CADBECFD0E1F8C
+S3150060869030415263748596A7B8C9DAEBFC0D1E2F7C
+S315006086A0405162738495A6B7C8D9EAFB0C1D2E3F6C
+S315006086B05061728394A5B6C7D8E9FA0B1C2D3E4F5C
+S315006086C060718293A4B5C6D7E8F90A1B2C3D4E5F4C
+S315006086D0708192A3B4C5D6E7F8091A2B3C4D5E6F3C
+S315006086E08091A2B3C4D5E6F708192A3B4C5D6E7F2C
+S315006086F090A1B2C3D4E5F60718293A4B5C6D7E8F1C
+S31500608700A0B1C2D3E4F5061728394A5B6C7D8E9F0B
+S31500608710B0C1D2E3F405162738495A6B7C8D9EAFFB
+S31500608720C0D1E2F30415263748596A7B8C9DAEBFEB
+S31500608730D0E1F2031425364758697A8B9CADBECFDB
+S31500608740E0F102132435465768798A9BACBDCEDFCB
+S31500608750F00112233445566778899AABBCCDDEEFBB
+S3150060876000112233445566778899AABBCCDDEEFFAB
+S31500608770102132435465768798A9BACBDCEDFE0F9B
+S315006087802031425364758697A8B9CADBECFD0E1F8B
+S3150060879030415263748596A7B8C9DAEBFC0D1E2F7B
+S315006087A0405162738495A6B7C8D9EAFB0C1D2E3F6B
+S315006087B05061728394A5B6C7D8E9FA0B1C2D3E4F5B
+S315006087C060718293A4B5C6D7E8F90A1B2C3D4E5F4B
+S315006087D0708192A3B4C5D6E7F8091A2B3C4D5E6F3B
+S315006087E08091A2B3C4D5E6F708192A3B4C5D6E7F2B
+S315006087F090A1B2C3D4E5F60718293A4B5C6D7E8F1B
+S31500608800A0B1C2D3E4F5061728394A5B6C7D8E9F0A
+S31500608810B0C1D2E3F405162738495A6B7C8D9EAFFA
+S31500608820C0D1E2F30415263748596A7B8C9DAEBFEA
+S31500608830D0E1F2031425364758697A8B9CADBECFDA
+S31500608840E0F102132435465768798A9BACBDCEDFCA
+S31500608850F00112233445566778899AABBCCDDEEFBA
+S3150060886000112233445566778899AABBCCDDEEFFAA
+S31500608870102132435465768798A9BACBDCEDFE0F9A
+S315006088802031425364758697A8B9CADBECFD0E1F8A
+S3150060889030415263748596A7B8C9DAEBFC0D1E2F7A
+S315006088A0405162738495A6B7C8D9EAFB0C1D2E3F6A
+S315006088B05061728394A5B6C7D8E9FA0B1C2D3E4F5A
+S315006088C060718293A4B5C6D7E8F90A1B2C3D4E5F4A
+S315006088D0708192A3B4C5D6E7F8091A2B3C4D5E6F3A
+S315006088E08091A2B3C4D5E6F708192A3B4C5D6E7F2A
+S315006088F090A1B2C3D4E5F60718293A4B5C6D7E8F1A
+S31500608900A0B1C2D3E4F5061728394A5B6C7D8E9F09
+S31500608910B0C1D2E3F405162738495A6B7C8D9EAFF9
+S31500608920C0D1E2F30415263748596A7B8C9DAEBFE9
+S31500608930D0E1F2031425364758697A8B9CADBECFD9
+S31500608940E0F102132435465768798A9BACBDCEDFC9
+S31500608950F00112233445566778899AABBCCDDEEFB9
+S3150060896000112233445566778899AABBCCDDEEFFA9
+S31500608970102132435465768798A9BACBDCEDFE0F99
+S315006089802031425364758697A8B9CADBECFD0E1F89
+S3150060899030415263748596A7B8C9DAEBFC0D1E2F79
+S315006089A0405162738495A6B7C8D9EAFB0C1D2E3F69
+S315006089B05061728394A5B6C7D8E9FA0B1C2D3E4F59
+S315006089C060718293A4B5C6D7E8F90A1B2C3D4E5F49
+S315006089D0708192A3B4C5D6E7F8091A2B3C4D5E6F39
+S315006089E08091A2B3C4D5E6F708192A3B4C5D6E7F29
+S315006089F090A1B2C3D4E5F60718293A4B5C6D7E8F19
+S31500608A00A0B1C2D3E4F5061728394A5B6C7D8E9F08
+S31500608A10B0C1D2E3F405162738495A6B7C8D9EAFF8
+S31500608A20C0D1E2F30415263748596A7B8C9DAEBFE8
+S31500608A30D0E1F2031425364758697A8B9CADBECFD8
+S31500608A40E0F102132435465768798A9BACBDCEDFC8
+S31500608A50F00112233445566778899AABBCCDDEEFB8
+S31500608A6000112233445566778899AABBCCDDEEFFA8
+S31500608A70102132435465768798A9BACBDCEDFE0F98
+S31500608A802031425364758697A8B9CADBECFD0E1F88
+S31500608A9030415263748596A7B8C9DAEBFC0D1E2F78
+S31500608AA0405162738495A6B7C8D9EAFB0C1D2E3F68
+S31500608AB05061728394A5B6C7D8E9FA0B1C2D3E4F58
+S31500608AC060718293A4B5C6D7E8F90A1B2C3D4E5F48
+S31500608AD0708192A3B4C5D6E7F8091A2B3C4D5E6F38
+S31500608AE08091A2B3C4D5E6F708192A3B4C5D6E7F28
+S31500608AF090A1B2C3D4E5F60718293A4B5C6D7E8F18
+S31500608B00A0B1C2D3E4F5061728394A5B6C7D8E9F07
+S31500608B10B0C1D2E3F405162738495A6B7C8D9EAFF7
+S31500608B20C0D1E2F30415263748596A7B8C9DAEBFE7
+S31500608B30D0E1F2031425364758697A8B9CADBECFD7
+S31500608B40E0F102132435465768798A9BACBDCEDFC7
+S31500608B50F00112233445566778899AABBCCDDEEFB7
+S31500608B6000112233445566778899AABBCCDDEEFFA7
+S31500608B70102132435465768798A9BACBDCEDFE0F97
+S31500608B802031425364758697A8B9CADBECFD0E1F87
+S31500608B9030415263748596A7B8C9DAEBFC0D1E2F77
+S31500608BA0405162738495A6B7C8D9EAFB0C1D2E3F67
+S31500608BB05061728394A5B6C7D8E9FA0B1C2D3E4F57
+S31500608BC060718293A4B5C6D7E8F90A1B2C3D4E5F47
+S31500608BD0708192A3B4C5D6E7F8091A2B3C4D5E6F37
+S31500608BE08091A2B3C4D5E6F708192A3B4C5D6E7F27
+S31500608BF090A1B2C3D4E5F60718293A4B5C6D7E8F17
+S31500608C00A0B1C2D3E4F5061728394A5B6C7D8E9F06
+S31500608C10B0C1D2E3F405162738495A6B7C8D9EAFF6
+S31500608C20C0D1E2F30415263748596A7B8C9DAEBFE6
+S31500608C30D0E1F2031425364758697A8B9CADBECFD6
+S31500608C40E0F102132435465768798A9BACBDCEDFC6
+S31500608C50F00112233445566778899AABBCCDDEEFB6
+S31500608C6000112233445566778899AABBCCDDEEFFA6
+S31500608C70102132435465768798A9BACBDCEDFE0F96
+S31500608C802031425364758697A8B9CADBECFD0E1F86
+S31500608C9030415263748596A7B8C9DAEBFC0D1E2F76
+S31500608CA0405162738495A6B7C8D9EAFB0C1D2E3F66
+S31500608CB05061728394A5B6C7D8E9FA0B1C2D3E4F56
+S31500608CC060718293A4B5C6D7E8F90A1B2C3D4E5F46
+S31500608CD0708192A3B4C5D6E7F8091A2B3C4D5E6F36
+S31500608CE08091A2B3C4D5E6F708192A3B4C5D6E7F26
+S31500608CF090A1B2C3D4E5F60718293A4B5C6D7E8F16
+S31500608D00A0B1C2D3E4F5061728394A5B6C7D8E9F05
+S31500608D10B0C1D2E3F405162738495A6B7C8D9EAFF5
+S31500608D20C0D1E2F30415263748596A7B8C9DAEBFE5
+S31500608D30D0E1F2031425364758697A8B9CADBECFD5
+S31500608D40E0F102132435465768798A9BACBDCEDFC5
+S31500608D50F00112233445566778899AABBCCDDEEFB5
+S31500608D6000112233445566778899AABBCCDDEEFFA5
+S31500608D70102132435465768798A9BACBDCEDFE0F95
+S31500608D802031425364758697A8B9CADBECFD0E1F85
+S31500608D9030415263748596A7B8C9DAEBFC0D1E2F75
+S31500608DA0405162738495A6B7C8D9EAFB0C1D2E3F65
+S31500608DB05061728394A5B6C7D8E9FA0B1C2D3E4F55
+S31500608DC060718293A4B5C6D7E8F90A1B2C3D4E5F45
+S31500608DD0708192A3B4C5D6E7F8091A2B3C4D5E6F35
+S31500608DE08091A2B3C4D5E6F708192A3B4C5D6E7F25
+S31500608DF090A1B2C3D4E5F60718293A4B5C6D7E8F15
+S31500608E00A0B1C2D3E4F5061728394A5B6C7D8E9F04
+S31500608E10B0C1D2E3F405162738495A6B7C8D9EAFF4
+S31500608E20C0D1E2F30415263748596A7B8C9DAEBFE4
+S31500608E30D0E1F2031425364758697A8B9CADBECFD4
+S31500608E40E0F102132435465768798A9BACBDCEDFC4
+S31500608E50F00112233445566778899AABBCCDDEEFB4
+S31500608E6000112233445566778899AABBCCDDEEFFA4
+S31500608E70102132435465768798A9BACBDCEDFE0F94
+S31500608E802031425364758697A8B9CADBECFD0E1F84
+S31500608E9030415263748596A7B8C9DAEBFC0D1E2F74
+S31500608EA0405162738495A6B7C8D9EAFB0C1D2E3F64
+S31500608EB05061728394A5B6C7D8E9FA0B1C2D3E4F54
+S31500608EC060718293A4B5C6D7E8F90A1B2C3D4E5F44
+S31500608ED0708192A3B4C5D6E7F8091A2B3C4D5E6F34
+S31500608EE08091A2B3C4D5E6F708192A3B4C5D6E7F24
+S31500608EF090A1B2C3D4E5F60718293A4B5C6D7E8F14
+S31500608F00A0B1C2D3E4F5061728394A5B6C7D8E9F03
+S31500608F10B0C1D2E3F405162738495A6B7C8D9EAFF3
+S31500608F20C0D1E2F30415263748596A7B8C9DAEBFE3
+S31500608F30D0E1F2031425364758697A8B9CADBECFD3
+S31500608F40E0F102132435465768798A9BACBDCEDFC3
+S31500608F50F00112233445566778899AABBCCDDEEFB3
+S31500608F6000112233445566778899AABBCCDDEEFFA3
+S31500608F70102132435465768798A9BACBDCEDFE0F93
+S31500608F802031425364758697A8B9CADBECFD0E1F83
+S31500608F9030415263748596A7B8C9DAEBFC0D1E2F73
+S31500608FA0405162738495A6B7C8D9EAFB0C1D2E3F63
+S31500608FB05061728394A5B6C7D8E9FA0B1C2D3E4F53
+S31500608FC060718293A4B5C6D7E8F90A1B2C3D4E5F43
+S31500608FD0708192A3B4C5D6E7F8091A2B3C4D5E6F33
+S31500608FE08091A2B3C4D5E6F708192A3B4C5D6E7F23
+S31500608FF090A1B2C3D4E5F60718293A4B5C6D7E8F13
+S31500609000A0B1C2D3E4F5061728394A5B6C7D8E9F02
+S31500609010B0C1D2E3F405162738495A6B7C8D9EAFF2
+S31500609020C0D1E2F30415263748596A7B8C9DAEBFE2
+S31500609030D0E1F2031425364758697A8B9CADBECFD2
+S31500609040E0F102132435465768798A9BACBDCEDFC2
+S31500609050F00112233445566778899AABBCCDDEEFB2
+S3150060906000112233445566778899AABBCCDDEEFFA2
+S31500609070102132435465768798A9BACBDCEDFE0F92
+S315006090802031425364758697A8B9CADBECFD0E1F82
+S3150060909030415263748596A7B8C9DAEBFC0D1E2F72
+S315006090A0405162738495A6B7C8D9EAFB0C1D2E3F62
+S315006090B05061728394A5B6C7D8E9FA0B1C2D3E4F52
+S315006090C060718293A4B5C6D7E8F90A1B2C3D4E5F42
+S315006090D0708192A3B4C5D6E7F8091A2B3C4D5E6F32
+S315006090E08091A2B3C4D5E6F708192A3B4C5D6E7F22
+S315006090F090A1B2C3D4E5F60718293A4B5C6D7E8F12
+S31500609100A0B1C2D3E4F5061728394A5B6C7D8E9F01
+S31500609110B0C1D2E3F405162738495A6B7C8D9EAFF1
+S31500609120C0D1E2F30415263748596A7B8C9DAEBFE1
+S31500609130D0E1F2031425364758697A8B9CADBECFD1
+S31500609140E0F102132435465768798A9BACBDCEDFC1
+S31500609150F00112233445566778899AABBCCDDEEFB1
+S3150060916000112233445566778899AABBCCDDEEFFA1
+S31500609170102132435465768798A9BACBDCEDFE0F91
+S315006091802031425364758697A8B9CADBECFD0E1F81
+S3150060919030415263748596A7B8C9DAEBFC0D1E2F71
+S315006091A0405162738495A6B7C8D9EAFB0C1D2E3F61
+S315006091B05061728394A5B6C7D8E9FA0B1C2D3E4F51
+S315006091C060718293A4B5C6D7E8F90A1B2C3D4E5F41
+S315006091D0708192A3B4C5D6E7F8091A2B3C4D5E6F31
+S315006091E08091A2B3C4D5E6F708192A3B4C5D6E7F21
+S315006091F090A1B2C3D4E5F60718293A4B5C6D7E8F11
+S31500609200A0B1C2D3E4F5061728394A5B6C7D8E9F00
+S31500609210B0C1D2E3F405162738495A6B7C8D9EAFF0
+S31500609220C0D1E2F30415263748596A7B8C9DAEBFE0
+S31500609230D0E1F2031425364758697A8B9CADBECFD0
+S31500609240E0F102132435465768798A9BACBDCEDFC0
+S31500609250F00112233445566778899AABBCCDDEEFB0
+S3150060926000112233445566778899AABBCCDDEEFFA0
+S31500609270102132435465768798A9BACBDCEDFE0F90
+S315006092802031425364758697A8B9CADBECFD0E1F80
+S3150060929030415263748596A7B8C9DAEBFC0D1E2F70
+S315006092A0405162738495A6B7C8D9EAFB0C1D2E3F60
+S315006092B05061728394A5B6C7D8E9FA0B1C2D3E4F50
+S315006092C060718293A4B5C6D7E8F90A1B2C3D4E5F40
+S315006092D0708192A3B4C5D6E7F8091A2B3C4D5E6F30
+S315006092E08091A2B3C4D5E6F708192A3B4C5D6E7F20
+S315006092F090A1B2C3D4E5F60718293A4B5C6D7E8F10
+S31500609300A0B1C2D3E4F5061728394A5B6C7D8E9FFF
+S31500609310B0C1D2E3F405162738495A6B7C8D9EAFEF
+S31500609320C0D1E2F30415263748596A7B8C9DAEBFDF
+S31500609330D0E1F2031425364758697A8B9CADBECFCF
+S31500609340E0F102132435465768798A9BACBDCEDFBF
+S31500609350F00112233445566778899AABBCCDDEEFAF
+S3150060936000112233445566778899AABBCCDDEEFF9F
+S31500609370102132435465768798A9BACBDCEDFE0F8F
+S315006093802031425364758697A8B9CADBECFD0E1F7F
+S3150060939030415263748596A7B8C9DAEBFC0D1E2F6F
+S315006093A0405162738495A6B7C8D9EAFB0C1D2E3F5F
+S315006093B05061728394A5B6C7D8E9FA0B1C2D3E4F4F
+S315006093C060718293A4B5C6D7E8F90A1B2C3D4E5F3F
+S315006093D0708192A3B4C5D6E7F8091A2B3C4D5E6F2F
+S315006093E08091A2B3C4D5E6F708192A3B4C5D6E7F1F
+S315006093F090A1B2C3D4E5F60718293A4B5C6D7E8F0F
+S31500609400A0B1C2D3E4F5061728394A5B6C7D8E9FFE
+S31500609410B0C1D2E3F405162738495A6B7C8D9EAFEE
+S31500609420C0D1E2F30415263748596A7B8C9DAEBFDE
+S31500609430D0E1F2031425364758697A8B9CADBECFCE
+S31500609440E0F102132435465768798A9BACBDCEDFBE
+S31500609450F00112233445566778899AABBCCDDEEFAE
+S3150060946000112233445566778899AABBCCDDEEFF9E
+S31500609470102132435465768798A9BACBDCEDFE0F8E
+S315006094802031425364758697A8B9CADBECFD0E1F7E
+S3150060949030415263748596A7B8C9DAEBFC0D1E2F6E
+S315006094A0405162738495A6B7C8D9EAFB0C1D2E3F5E
+S315006094B05061728394A5B6C7D8E9FA0B1C2D3E4F4E
+S315006094C060718293A4B5C6D7E8F90A1B2C3D4E5F3E
+S315006094D0708192A3B4C5D6E7F8091A2B3C4D5E6F2E
+S315006094E08091A2B3C4D5E6F708192A3B4C5D6E7F1E
+S315006094F090A1B2C3D4E5F60718293A4B5C6D7E8F0E
+S31500609500A0B1C2D3E4F5061728394A5B6C7D8E9FFD
+S31500609510B0C1D2E3F405162738495A6B7C8D9EAFED
+S31500609520C0D1E2F30415263748596A7B8C9DAEBFDD
+S31500609530D0E1F2031425364758697A8B9CADBECFCD
+S31500609540E0F102132435465768798A9BACBDCEDFBD
+S31500609550F00112233445566778899AABBCCDDEEFAD
+S3150060956000112233445566778899AABBCCDDEEFF9D
+S31500609570102132435465768798A9BACBDCEDFE0F8D
+S315006095802031425364758697A8B9CADBECFD0E1F7D
+S3150060959030415263748596A7B8C9DAEBFC0D1E2F6D
+S315006095A0405162738495A6B7C8D9EAFB0C1D2E3F5D
+S315006095B05061728394A5B6C7D8E9FA0B1C2D3E4F4D
+S315006095C060718293A4B5C6D7E8F90A1B2C3D4E5F3D
+S315006095D0708192A3B4C5D6E7F8091A2B3C4D5E6F2D
+S315006095E08091A2B3C4D5E6F708192A3B4C5D6E7F1D
+S315006095F090A1B2C3D4E5F60718293A4B5C6D7E8F0D
+S31500609600A0B1C2D3E4F5061728394A5B6C7D8E9FFC
+S31500609610B0C1D2E3F405162738495A6B7C8D9EAFEC
+S31500609620C0D1E2F30415263748596A7B8C9DAEBFDC
+S31500609630D0E1F2031425364758697A8B9CADBECFCC
+S31500609640E0F102132435465768798A9BACBDCEDFBC
+S31500609650F00112233445566778899AABBCCDDEEFAC
+S3150060966000112233445566778899AABBCCDDEEFF9C
+S31500609670102132435465768798A9BACBDCEDFE0F8C
+S315006096802031425364758697A8B9CADBECFD0E1F7C
+S3150060969030415263748596A7B8C9DAEBFC0D1E2F6C
+S315006096A0405162738495A6B7C8D9EAFB0C1D2E3F5C
+S315006096B05061728394A5B6C7D8E9FA0B1C2D3E4F4C
+S315006096C060718293A4B5C6D7E8F90A1B2C3D4E5F3C
+S315006096D0708192A3B4C5D6E7F8091A2B3C4D5E6F2C
+S315006096E08091A2B3C4D5E6F708192A3B4C5D6E7F1C
+S315006096F090A1B2C3D4E5F60718293A4B5C6D7E8F0C
+S31500609700A0B1C2D3E4F5061728394A5B6C7D8E9FFB
+S31500609710B0C1D2E3F405162738495A6B7C8D9EAFEB
+S31500609720C0D1E2F30415263748596A7B8C9DAEBFDB
+S31500609730D0E1F2031425364758697A8B9CADBECFCB
+S31500609740E0F102132435465768798A9BACBDCEDFBB
+S31500609750F00112233445566778899AABBCCDDEEFAB
+S3150060976000112233445566778899AABBCCDDEEFF9B
+S31500609770102132435465768798A9BACBDCEDFE0F8B
+S315006097802031425364758697A8B9CADBECFD0E1F7B
+S3150060979030415263748596A7B8C9DAEBFC0D1E2F6B
+S315006097A0405162738495A6B7C8D9EAFB0C1D2E3F5B
+S315006097B05061728394A5B6C7D8E9FA0B1C2D3E4F4B
+S315006097C060718293A4B5C6D7E8F90A1B2C3D4E5F3B
+S315006097D0708192A3B4C5D6E7F8091A2B3C4D5E6F2B
+S315006097E08091A2B3C4D5E6F708192A3B4C5D6E7F1B
+S315006097F090A1B2C3D4E5F60718293A4B5C6D7E8F0B
+S31500609800A0B1C2D3E4F5061728394A5B6C7D8E9FFA
+S31500609810B0C1D2E3F405162738495A6B7C8D9EAFEA
+S31500609820C0D1E2F30415263748596A7B8C9DAEBFDA
+S31500609830D0E1F2031425364758697A8B9CADBECFCA
+S31500609840E0F102132435465768798A9BACBDCEDFBA
+S31500609850F00112233445566778899AABBCCDDEEFAA
+S3150060986000112233445566778899AABBCCDDEEFF9A
+S31500609870102132435465768798A9BACBDCEDFE0F8A
+S315006098802031425364758697A8B9CADBECFD0E1F7A
+S3150060989030415263748596A7B8C9DAEBFC0D1E2F6A
+S315006098A0405162738495A6B7C8D9EAFB0C1D2E3F5A
+S315006098B05061728394A5B6C7D8E9FA0B1C2D3E4F4A
+S315006098C060718293A4B5C6D7E8F90A1B2C3D4E5F3A
+S315006098D0708192A3B4C5D6E7F8091A2B3C4D5E6F2A
+S315006098E08091A2B3C4D5E6F708192A3B4C5D6E7F1A
+S315006098F090A1B2C3D4E5F60718293A4B5C6D7E8F0A
+S31500609900A0B1C2D3E4F5061728394A5B6C7D8E9FF9
+S31500609910B0C1D2E3F405162738495A6B7C8D9EAFE9
+S31500609920C0D1E2F30415263748596A7B8C9DAEBFD9
+S31500609930D0E1F2031425364758697A8B9CADBECFC9
+S31500609940E0F102132435465768798A9BACBDCEDFB9
+S31500609950F00112233445566778899AABBCCDDEEFA9
+S3150060996000112233445566778899AABBCCDDEEFF99
+S31500609970102132435465768798A9BACBDCEDFE0F89
+S315006099802031425364758697A8B9CADBECFD0E1F79
+S3150060999030415263748596A7B8C9DAEBFC0D1E2F69
+S315006099A0405162738495A6B7C8D9EAFB0C1D2E3F59
+S315006099B05061728394A5B6C7D8E9FA0B1C2D3E4F49
+S315006099C060718293A4B5C6D7E8F90A1B2C3D4E5F39
+S315006099D0708192A3B4C5D6E7F8091A2B3C4D5E6F29
+S315006099E08091A2B3C4D5E6F708192A3B4C5D6E7F19
+S315006099F090A1B2C3D4E5F60718293A4B5C6D7E8F09
+S31500609A00A0B1C2D3E4F5061728394A5B6C7D8E9FF8
+S31500609A10B0C1D2E3F405162738495A6B7C8D9EAFE8
+S31500609A20C0D1E2F30415263748596A7B8C9DAEBFD8
+S31500609A30D0E1F2031425364758697A8B9CADBECFC8
+S31500609A40E0F102132435465768798A9BACBDCEDFB8
+S31500609A50F00112233445566778899AABBCCDDEEFA8
+S31500609A6000112233445566778899AABBCCDDEEFF98
+S31500609A70102132435465768798A9BACBDCEDFE0F88
+S31500609A802031425364758697A8B9CADBECFD0E1F78
+S31500609A9030415263748596A7B8C9DAEBFC0D1E2F68
+S31500609AA0405162738495A6B7C8D9EAFB0C1D2E3F58
+S31500609AB05061728394A5B6C7D8E9FA0B1C2D3E4F48
+S31500609AC060718293A4B5C6D7E8F90A1B2C3D4E5F38
+S31500609AD0708192A3B4C5D6E7F8091A2B3C4D5E6F28
+S31500609AE08091A2B3C4D5E6F708192A3B4C5D6E7F18
+S31500609AF090A1B2C3D4E5F60718293A4B5C6D7E8F08
+S31500609B00A0B1C2D3E4F5061728394A5B6C7D8E9FF7
+S31500609B10B0C1D2E3F405162738495A6B7C8D9EAFE7
+S31500609B20C0D1E2F30415263748596A7B8C9DAEBFD7
+S31500609B30D0E1F2031425364758697A8B9CADBECFC7
+S31500609B40E0F102132435465768798A9BACBDCEDFB7
+S31500609B50F00112233445566778899AABBCCDDEEFA7
+S31500609B6000112233445566778899AABBCCDDEEFF97
+S31500609B70102132435465768798A9BACBDCEDFE0F87
+S31500609B802031425364758697A8B9CADBECFD0E1F77
+S31500609B9030415263748596A7B8C9DAEBFC0D1E2F67
+S31500609BA0405162738495A6B7C8D9EAFB0C1D2E3F57
+S31500609BB05061728394A5B6C7D8E9FA0B1C2D3E4F47
+S31500609BC060718293A4B5C6D7E8F90A1B2C3D4E5F37
+S31500609BD0708192A3B4C5D6E7F8091A2B3C4D5E6F27
+S31500609BE08091A2B3C4D5E6F708192A3B4C5D6E7F17
+S31500609BF090A1B2C3D4E5F60718293A4B5C6D7E8F07
+S31500609C00A0B1C2D3E4F5061728394A5B6C7D8E9FF6
+S31500609C10B0C1D2E3F405162738495A6B7C8D9EAFE6
+S31500609C20C0D1E2F30415263748596A7B8C9DAEBFD6
+S31500609C30D0E1F2031425364758697A8B9CADBECFC6
+S31500609C40E0F102132435465768798A9BACBDCEDFB6
+S31500609C50F00112233445566778899AABBCCDDEEFA6
+S31500609C6000112233445566778899AABBCCDDEEFF96
+S31500609C70102132435465768798A9BACBDCEDFE0F86
+S31500609C802031425364758697A8B9CADBECFD0E1F76
+S31500609C9030415263748596A7B8C9DAEBFC0D1E2F66
+S31500609CA0405162738495A6B7C8D9EAFB0C1D2E3F56
+S31500609CB05061728394A5B6C7D8E9FA0B1C2D3E4F46
+S31500609CC060718293A4B5C6D7E8F90A1B2C3D4E5F36
+S31500609CD0708192A3B4C5D6E7F8091A2B3C4D5E6F26
+S31500609CE08091A2B3C4D5E6F708192A3B4C5D6E7F16
+S31500609CF090A1B2C3D4E5F60718293A4B5C6D7E8F06
+S31500609D00A0B1C2D3E4F5061728394A5B6C7D8E9FF5
+S31500609D10B0C1D2E3F405162738495A6B7C8D9EAFE5
+S31500609D20C0D1E2F30415263748596A7B8C9DAEBFD5
+S31500609D30D0E1F2031425364758697A8B9CADBECFC5
+S31500609D40E0F102132435465768798A9BACBDCEDFB5
+S31500609D50F00112233445566778899AABBCCDDEEFA5
+S31500609D6000112233445566778899AABBCCDDEEFF95
+S31500609D70102132435465768798A9BACBDCEDFE0F85
+S31500609D802031425364758697A8B9CADBECFD0E1F75
+S31500609D9030415263748596A7B8C9DAEBFC0D1E2F65
+S31500609DA0405162738495A6B7C8D9EAFB0C1D2E3F55
+S31500609DB05061728394A5B6C7D8E9FA0B1C2D3E4F45
+S31500609DC060718293A4B5C6D7E8F90A1B2C3D4E5F35
+S31500609DD0708192A3B4C5D6E7F8091A2B3C4D5E6F25
+S31500609DE08091A2B3C4D5E6F708192A3B4C5D6E7F15
+S31500609DF090A1B2C3D4E5F60718293A4B5C6D7E8F05
+S31500609E00A0B1C2D3E4F5061728394A5B6C7D8E9FF4
+S31500609E10B0C1D2E3F405162738495A6B7C8D9EAFE4
+S31500609E20C0D1E2F30415263748596A7B8C9DAEBFD4
+S31500609E30D0E1F2031425364758697A8B9CADBECFC4
+S31500609E40E0F102132435465768798A9BACBDCEDFB4
+S31500609E50F00112233445566778899AABBCCDDEEFA4
+S31500609E6000112233445566778899AABBCCDDEEFF94
+S31500609E70102132435465768798A9BACBDCEDFE0F84
+S31500609E802031425364758697A8B9CADBECFD0E1F74
+S31500609E9030415263748596A7B8C9DAEBFC0D1E2F64
+S31500609EA0405162738495A6B7C8D9EAFB0C1D2E3F54
+S31500609EB05061728394A5B6C7D8E9FA0B1C2D3E4F44
+S31500609EC060718293A4B5C6D7E8F90A1B2C3D4E5F34
+S31500609ED0708192A3B4C5D6E7F8091A2B3C4D5E6F24
+S31500609EE08091A2B3C4D5E6F708192A3B4C5D6E7F14
+S31500609EF090A1B2C3D4E5F60718293A4B5C6D7E8F04
+S31500609F00A0B1C2D3E4F5061728394A5B6C7D8E9FF3
+S31500609F10B0C1D2E3F405162738495A6B7C8D9EAFE3
+S31500609F20C0D1E2F30415263748596A7B8C9DAEBFD3
+S31500609F30D0E1F2031425364758697A8B9CADBECFC3
+S31500609F40E0F102132435465768798A9BACBDCEDFB3
+S31500609F50F00112233445566778899AABBCCDDEEFA3
+S31500609F6000112233445566778899AABBCCDDEEFF93
+S31500609F70102132435465768798A9BACBDCEDFE0F83
+S31500609F802031425364758697A8B9CADBECFD0E1F73
+S31500609F9030415263748596A7B8C9DAEBFC0D1E2F63
+S31500609FA0405162738495A6B7C8D9EAFB0C1D2E3F53
+S31500609FB05061728394A5B6C7D8E9FA0B1C2D3E4F43
+S31500609FC060718293A4B5C6D7E8F90A1B2C3D4E5F33
+S31500609FD0708192A3B4C5D6E7F8091A2B3C4D5E6F23
+S31500609FE08091A2B3C4D5E6F708192A3B4C5D6E7F13
+S31500609FF090A1B2C3D4E5F60718293A4B5C6D7E8F03
+S3150060A000A0B1C2D3E4F5061728394A5B6C7D8E9FF2
+S3150060A010B0C1D2E3F405162738495A6B7C8D9EAFE2
+S3150060A020C0D1E2F30415263748596A7B8C9DAEBFD2
+S3150060A030D0E1F2031425364758697A8B9CADBECFC2
+S3150060A040E0F102132435465768798A9BACBDCEDFB2
+S3150060A050F00112233445566778899AABBCCDDEEFA2
+S3150060A06000112233445566778899AABBCCDDEEFF92
+S3150060A070102132435465768798A9BACBDCEDFE0F82
+S3150060A0802031425364758697A8B9CADBECFD0E1F72
+S3150060A09030415263748596A7B8C9DAEBFC0D1E2F62
+S3150060A0A0405162738495A6B7C8D9EAFB0C1D2E3F52
+S3150060A0B05061728394A5B6C7D8E9FA0B1C2D3E4F42
+S3150060A0C060718293A4B5C6D7E8F90A1B2C3D4E5F32
+S3150060A0D0708192A3B4C5D6E7F8091A2B3C4D5E6F22
+S3150060A0E08091A2B3C4D5E6F708192A3B4C5D6E7F12
+S3150060A0F090A1B2C3D4E5F60718293A4B5C6D7E8F02
+S3150060A100A0B1C2D3E4F5061728394A5B6C7D8E9FF1
+S3150060A110B0C1D2E3F405162738495A6B7C8D9EAFE1
+S3150060A120C0D1E2F30415263748596A7B8C9DAEBFD1
+S3150060A130D0E1F2031425364758697A8B9CADBECFC1
+S3150060A140E0F102132435465768798A9BACBDCEDFB1
+S3150060A150F00112233445566778899AABBCCDDEEFA1
+S3150060A16000112233445566778899AABBCCDDEEFF91
+S3150060A170102132435465768798A9BACBDCEDFE0F81
+S3150060A1802031425364758697A8B9CADBECFD0E1F71
+S3150060A19030415263748596A7B8C9DAEBFC0D1E2F61
+S3150060A1A0405162738495A6B7C8D9EAFB0C1D2E3F51
+S3150060A1B05061728394A5B6C7D8E9FA0B1C2D3E4F41
+S3150060A1C060718293A4B5C6D7E8F90A1B2C3D4E5F31
+S3150060A1D0708192A3B4C5D6E7F8091A2B3C4D5E6F21
+S3150060A1E08091A2B3C4D5E6F708192A3B4C5D6E7F11
+S3150060A1F090A1B2C3D4E5F60718293A4B5C6D7E8F01
+S3150060A200A0B1C2D3E4F5061728394A5B6C7D8E9FF0
+S3150060A210B0C1D2E3F405162738495A6B7C8D9EAFE0
+S3150060A220C0D1E2F30415263748596A7B8C9DAEBFD0
+S3150060A230D0E1F2031425364758697A8B9CADBECFC0
+S3150060A240E0F102132435465768798A9BACBDCEDFB0
+S3150060A250F00112233445566778899AABBCCDDEEFA0
+S3150060A26000112233445566778899AABBCCDDEEFF90
+S3150060A270102132435465768798A9BACBDCEDFE0F80
+S3150060A2802031425364758697A8B9CADBECFD0E1F70
+S3150060A29030415263748596A7B8C9DAEBFC0D1E2F60
+S3150060A2A0405162738495A6B7C8D9EAFB0C1D2E3F50
+S3150060A2B05061728394A5B6C7D8E9FA0B1C2D3E4F40
+S3150060A2C060718293A4B5C6D7E8F90A1B2C3D4E5F30
+S3150060A2D0708192A3B4C5D6E7F8091A2B3C4D5E6F20
+S3150060A2E08091A2B3C4D5E6F708192A3B4C5D6E7F10
+S3150060A2F090A1B2C3D4E5F60718293A4B5C6D7E8F00
+S3150060A300A0B1C2D3E4F5061728394A5B6C7D8E9FEF
+S3150060A310B0C1D2E3F405162738495A6B7C8D9EAFDF
+S3150060A320C0D1E2F30415263748596A7B8C9DAEBFCF
+S3150060A330D0E1F2031425364758697A8B9CADBECFBF
+S3150060A340E0F102132435465768798A9BACBDCEDFAF
+S3150060A350F00112233445566778899AABBCCDDEEF9F
+S3150060A36000112233445566778899AABBCCDDEEFF8F
+S3150060A370102132435465768798A9BACBDCEDFE0F7F
+S3150060A3802031425364758697A8B9CADBECFD0E1F6F
+S3150060A39030415263748596A7B8C9DAEBFC0D1E2F5F
+S3150060A3A0405162738495A6B7C8D9EAFB0C1D2E3F4F
+S3150060A3B05061728394A5B6C7D8E9FA0B1C2D3E4F3F
+S3150060A3C060718293A4B5C6D7E8F90A1B2C3D4E5F2F
+S3150060A3D0708192A3B4C5D6E7F8091A2B3C4D5E6F1F
+S3150060A3E08091A2B3C4D5E6F708192A3B4C5D6E7F0F
+S3150060A3F090A1B2C3D4E5F60718293A4B5C6D7E8FFF
+S3150060A400A0B1C2D3E4F5061728394A5B6C7D8E9FEE
+S3150060A410B0C1D2E3F405162738495A6B7C8D9EAFDE
+S3150060A420C0D1E2F30415263748596A7B8C9DAEBFCE
+S3150060A430D0E1F2031425364758697A8B9CADBECFBE
+S3150060A440E0F102132435465768798A9BACBDCEDFAE
+S3150060A450F00112233445566778899AABBCCDDEEF9E
+S3150060A46000112233445566778899AABBCCDDEEFF8E
+S3150060A470102132435465768798A9BACBDCEDFE0F7E
+S3150060A4802031425364758697A8B9CADBECFD0E1F6E
+S3150060A49030415263748596A7B8C9DAEBFC0D1E2F5E
+S3150060A4A0405162738495A6B7C8D9EAFB0C1D2E3F4E
+S3150060A4B05061728394A5B6C7D8E9FA0B1C2D3E4F3E
+S3150060A4C060718293A4B5C6D7E8F90A1B2C3D4E5F2E
+S3150060A4D0708192A3B4C5D6E7F8091A2B3C4D5E6F1E
+S3150060A4E08091A2B3C4D5E6F708192A3B4C5D6E7F0E
+S3150060A4F090A1B2C3D4E5F60718293A4B5C6D7E8FFE
+S3150060A500A0B1C2D3E4F5061728394A5B6C7D8E9FED
+S3150060A510B0C1D2E3F405162738495A6B7C8D9EAFDD
+S3150060A520C0D1E2F30415263748596A7B8C9DAEBFCD
+S3150060A530D0E1F2031425364758697A8B9CADBECFBD
+S3150060A540E0F102132435465768798A9BACBDCEDFAD
+S3150060A550F00112233445566778899AABBCCDDEEF9D
+S3150060A56000112233445566778899AABBCCDDEEFF8D
+S3150060A570102132435465768798A9BACBDCEDFE0F7D
+S3150060A5802031425364758697A8B9CADBECFD0E1F6D
+S3150060A59030415263748596A7B8C9DAEBFC0D1E2F5D
+S3150060A5A0405162738495A6B7C8D9EAFB0C1D2E3F4D
+S3150060A5B05061728394A5B6C7D8E9FA0B1C2D3E4F3D
+S3150060A5C060718293A4B5C6D7E8F90A1B2C3D4E5F2D
+S3150060A5D0708192A3B4C5D6E7F8091A2B3C4D5E6F1D
+S3150060A5E08091A2B3C4D5E6F708192A3B4C5D6E7F0D
+S3150060A5F090A1B2C3D4E5F60718293A4B5C6D7E8FFD
+S3150060A600A0B1C2D3E4F5061728394A5B6C7D8E9FEC
+S3150060A610B0C1D2E3F405162738495A6B7C8D9EAFDC
+S3150060A620C0D1E2F30415263748596A7B8C9DAEBFCC
+S3150060A630D0E1F2031425364758697A8B9CADBECFBC
+S3150060A640E0F102132435465768798A9BACBDCEDFAC
+S3150060A650F00112233445566778899AABBCCDDEEF9C
+S3150060A66000112233445566778899AABBCCDDEEFF8C
+S3150060A670102132435465768798A9BACBDCEDFE0F7C
+S3150060A6802031425364758697A8B9CADBECFD0E1F6C
+S3150060A69030415263748596A7B8C9DAEBFC0D1E2F5C
+S3150060A6A0405162738495A6B7C8D9EAFB0C1D2E3F4C
+S3150060A6B05061728394A5B6C7D8E9FA0B1C2D3E4F3C
+S3150060A6C060718293A4B5C6D7E8F90A1B2C3D4E5F2C
+S3150060A6D0708192A3B4C5D6E7F8091A2B3C4D5E6F1C
+S3150060A6E08091A2B3C4D5E6F708192A3B4C5D6E7F0C
+S3150060A6F090A1B2C3D4E5F60718293A4B5C6D7E8FFC
+S3150060A700A0B1C2D3E4F5061728394A5B6C7D8E9FEB
+S3150060A710B0C1D2E3F405162738495A6B7C8D9EAFDB
+S3150060A720C0D1E2F30415263748596A7B8C9DAEBFCB
+S3150060A730D0E1F2031425364758697A8B9CADBECFBB
+S3150060A740E0F102132435465768798A9BACBDCEDFAB
+S3150060A750F00112233445566778899AABBCCDDEEF9B
+S3150060A76000112233445566778899AABBCCDDEEFF8B
+S3150060A770102132435465768798A9BACBDCEDFE0F7B
+S3150060A7802031425364758697A8B9CADBECFD0E1F6B
+S3150060A79030415263748596A7B8C9DAEBFC0D1E2F5B
+S3150060A7A0405162738495A6B7C8D9EAFB0C1D2E3F4B
+S3150060A7B05061728394A5B6C7D8E9FA0B1C2D3E4F3B
+S3150060A7C060718293A4B5C6D7E8F90A1B2C3D4E5F2B
+S3150060A7D0708192A3B4C5D6E7F8091A2B3C4D5E6F1B
+S3150060A7E08091A2B3C4D5E6F708192A3B4C5D6E7F0B
+S3150060A7F090A1B2C3D4E5F60718293A4B5C6D7E8FFB
+S3150060A800A0B1C2D3E4F5061728394A5B6C7D8E9FEA
+S3150060A810B0C1D2E3F405162738495A6B7C8D9EAFDA
+S3150060A820C0D1E2F30415263748596A7B8C9DAEBFCA
+S3150060A830D0E1F2031425364758697A8B9CADBECFBA
+S3150060A840E0F102132435465768798A9BACBDCEDFAA
+S3150060A850F00112233445566778899AABBCCDDEEF9A
+S3150060A86000112233445566778899AABBCCDDEEFF8A
+S3150060A870102132435465768798A9BACBDCEDFE0F7A
+S3150060A8802031425364758697A8B9CADBECFD0E1F6A
+S3150060A89030415263748596A7B8C9DAEBFC0D1E2F5A
+S3150060A8A0405162738495A6B7C8D9EAFB0C1D2E3F4A
+S3150060A8B05061728394A5B6C7D8E9FA0B1C2D3E4F3A
+S3150060A8C060718293A4B5C6D7E8F90A1B2C3D4E5F2A
+S3150060A8D0708192A3B4C5D6E7F8091A2B3C4D5E6F1A
+S3150060A8E08091A2B3C4D5E6F708192A3B4C5D6E7F0A
+S3150060A8F090A1B2C3D4E5F60718293A4B5C6D7E8FFA
+S3150060A900A0B1C2D3E4F5061728394A5B6C7D8E9FE9
+S3150060A910B0C1D2E3F405162738495A6B7C8D9EAFD9
+S3150060A920C0D1E2F30415263748596A7B8C9DAEBFC9
+S3150060A930D0E1F2031425364758697A8B9CADBECFB9
+S3150060A940E0F102132435465768798A9BACBDCEDFA9
+S3150060A950F00112233445566778899AABBCCDDEEF99
+S3150060A96000112233445566778899AABBCCDDEEFF89
+S3150060A970102132435465768798A9BACBDCEDFE0F79
+S3150060A9802031425364758697A8B9CADBECFD0E1F69
+S3150060A99030415263748596A7B8C9DAEBFC0D1E2F59
+S3150060A9A0405162738495A6B7C8D9EAFB0C1D2E3F49
+S3150060A9B05061728394A5B6C7D8E9FA0B1C2D3E4F39
+S3150060A9C060718293A4B5C6D7E8F90A1B2C3D4E5F29
+S3150060A9D0708192A3B4C5D6E7F8091A2B3C4D5E6F19
+S3150060A9E08091A2B3C4D5E6F708192A3B4C5D6E7F09
+S3150060A9F090A1B2C3D4E5F60718293A4B5C6D7E8FF9
+S3150060AA00A0B1C2D3E4F5061728394A5B6C7D8E9FE8
+S3150060AA10B0C1D2E3F405162738495A6B7C8D9EAFD8
+S3150060AA20C0D1E2F30415263748596A7B8C9DAEBFC8
+S3150060AA30D0E1F2031425364758697A8B9CADBECFB8
+S3150060AA40E0F102132435465768798A9BACBDCEDFA8
+S3150060AA50F00112233445566778899AABBCCDDEEF98
+S3150060AA6000112233445566778899AABBCCDDEEFF88
+S3150060AA70102132435465768798A9BACBDCEDFE0F78
+S3150060AA802031425364758697A8B9CADBECFD0E1F68
+S3150060AA9030415263748596A7B8C9DAEBFC0D1E2F58
+S3150060AAA0405162738495A6B7C8D9EAFB0C1D2E3F48
+S3150060AAB05061728394A5B6C7D8E9FA0B1C2D3E4F38
+S3150060AAC060718293A4B5C6D7E8F90A1B2C3D4E5F28
+S3150060AAD0708192A3B4C5D6E7F8091A2B3C4D5E6F18
+S3150060AAE08091A2B3C4D5E6F708192A3B4C5D6E7F08
+S3150060AAF090A1B2C3D4E5F60718293A4B5C6D7E8FF8
+S3150060AB00A0B1C2D3E4F5061728394A5B6C7D8E9FE7
+S3150060AB10B0C1D2E3F405162738495A6B7C8D9EAFD7
+S3150060AB20C0D1E2F30415263748596A7B8C9DAEBFC7
+S3150060AB30D0E1F2031425364758697A8B9CADBECFB7
+S3150060AB40E0F102132435465768798A9BACBDCEDFA7
+S3150060AB50F00112233445566778899AABBCCDDEEF97
+S3150060AB6000112233445566778899AABBCCDDEEFF87
+S3150060AB70102132435465768798A9BACBDCEDFE0F77
+S3150060AB802031425364758697A8B9CADBECFD0E1F67
+S3150060AB9030415263748596A7B8C9DAEBFC0D1E2F57
+S3150060ABA0405162738495A6B7C8D9EAFB0C1D2E3F47
+S3150060ABB05061728394A5B6C7D8E9FA0B1C2D3E4F37
+S3150060ABC060718293A4B5C6D7E8F90A1B2C3D4E5F27
+S3150060ABD0708192A3B4C5D6E7F8091A2B3C4D5E6F17
+S3150060ABE08091A2B3C4D5E6F708192A3B4C5D6E7F07
+S3150060ABF090A1B2C3D4E5F60718293A4B5C6D7E8FF7
+S3150060AC00A0B1C2D3E4F5061728394A5B6C7D8E9FE6
+S3150060AC10B0C1D2E3F405162738495A6B7C8D9EAFD6
+S3150060AC20C0D1E2F30415263748596A7B8C9DAEBFC6
+S3150060AC30D0E1F2031425364758697A8B9CADBECFB6
+S3150060AC40E0F102132435465768798A9BACBDCEDFA6
+S3150060AC50F00112233445566778899AABBCCDDEEF96
+S3150060AC6000112233445566778899AABBCCDDEEFF86
+S3150060AC70102132435465768798A9BACBDCEDFE0F76
+S3150060AC802031425364758697A8B9CADBECFD0E1F66
+S3150060AC9030415263748596A7B8C9DAEBFC0D1E2F56
+S3150060ACA0405162738495A6B7C8D9EAFB0C1D2E3F46
+S3150060ACB05061728394A5B6C7D8E9FA0B1C2D3E4F36
+S3150060ACC060718293A4B5C6D7E8F90A1B2C3D4E5F26
+S3150060ACD0708192A3B4C5D6E7F8091A2B3C4D5E6F16
+S3150060ACE08091A2B3C4D5E6F708192A3B4C5D6E7F06
+S3150060ACF090A1B2C3D4E5F60718293A4B5C6D7E8FF6
+S3150060AD00A0B1C2D3E4F5061728394A5B6C7D8E9FE5
+S3150060AD10B0C1D2E3F405162738495A6B7C8D9EAFD5
+S3150060AD20C0D1E2F30415263748596A7B8C9DAEBFC5
+S3150060AD30D0E1F2031425364758697A8B9CADBECFB5
+S3150060AD40E0F102132435465768798A9BACBDCEDFA5
+S3150060AD50F00112233445566778899AABBCCDDEEF95
+S3150060AD6000112233445566778899AABBCCDDEEFF85
+S3150060AD70102132435465768798A9BACBDCEDFE0F75
+S3150060AD802031425364758697A8B9CADBECFD0E1F65
+S3150060AD9030415263748596A7B8C9DAEBFC0D1E2F55
+S3150060ADA0405162738495A6B7C8D9EAFB0C1D2E3F45
+S3150060ADB05061728394A5B6C7D8E9FA0B1C2D3E4F35
+S3150060ADC060718293A4B5C6D7E8F90A1B2C3D4E5F25
+S3150060ADD0708192A3B4C5D6E7F8091A2B3C4D5E6F15
+S3150060ADE08091A2B3C4D5E6F708192A3B4C5D6E7F05
+S3150060ADF090A1B2C3D4E5F60718293A4B5C6D7E8FF5
+S3150060AE00A0B1C2D3E4F5061728394A5B6C7D8E9FE4
+S3150060AE10B0C1D2E3F405162738495A6B7C8D9EAFD4
+S3150060AE20C0D1E2F30415263748596A7B8C9DAEBFC4
+S3150060AE30D0E1F2031425364758697A8B9CADBECFB4
+S3150060AE40E0F102132435465768798A9BACBDCEDFA4
+S3150060AE50F00112233445566778899AABBCCDDEEF94
+S3150060AE6000112233445566778899AABBCCDDEEFF84
+S3150060AE70102132435465768798A9BACBDCEDFE0F74
+S3150060AE802031425364758697A8B9CADBECFD0E1F64
+S3150060AE9030415263748596A7B8C9DAEBFC0D1E2F54
+S3150060AEA0405162738495A6B7C8D9EAFB0C1D2E3F44
+S3150060AEB05061728394A5B6C7D8E9FA0B1C2D3E4F34
+S3150060AEC060718293A4B5C6D7E8F90A1B2C3D4E5F24
+S3150060AED0708192A3B4C5D6E7F8091A2B3C4D5E6F14
+S3150060AEE08091A2B3C4D5E6F708192A3B4C5D6E7F04
+S3150060AEF090A1B2C3D4E5F60718293A4B5C6D7E8FF4
+S3150060AF00A0B1C2D3E4F5061728394A5B6C7D8E9FE3
+S3150060AF10B0C1D2E3F405162738495A6B7C8D9EAFD3
+S3150060AF20C0D1E2F30415263748596A7B8C9DAEBFC3
+S3150060AF30D0E1F2031425364758697A8B9CADBECFB3
+S3150060AF40E0F102132435465768798A9BACBDCEDFA3
+S3150060AF50F00112233445566778899AABBCCDDEEF93
+S3150060AF6000112233445566778899AABBCCDDEEFF83
+S3150060AF70102132435465768798A9BACBDCEDFE0F73
+S3150060AF802031425364758697A8B9CADBECFD0E1F63
+S3150060AF9030415263748596A7B8C9DAEBFC0D1E2F53
+S3150060AFA0405162738495A6B7C8D9EAFB0C1D2E3F43
+S3150060AFB05061728394A5B6C7D8E9FA0B1C2D3E4F33
+S3150060AFC060718293A4B5C6D7E8F90A1B2C3D4E5F23
+S3150060AFD0708192A3B4C5D6E7F8091A2B3C4D5E6F13
+S3150060AFE08091A2B3C4D5E6F708192A3B4C5D6E7F03
+S3150060AFF090A1B2C3D4E5F60718293A4B5C6D7E8FF3
+S3150060B000A0B1C2D3E4F5061728394A5B6C7D8E9FE2
+S3150060B010B0C1D2E3F405162738495A6B7C8D9EAFD2
+S3150060B020C0D1E2F30415263748596A7B8C9DAEBFC2
+S3150060B030D0E1F2031425364758697A8B9CADBECFB2
+S3150060B040E0F102132435465768798A9BACBDCEDFA2
+S3150060B050F00112233445566778899AABBCCDDEEF92
+S3150060B06000112233445566778899AABBCCDDEEFF82
+S3150060B070102132435465768798A9BACBDCEDFE0F72
+S3150060B0802031425364758697A8B9CADBECFD0E1F62
+S3150060B09030415263748596A7B8C9DAEBFC0D1E2F52
+S3150060B0A0405162738495A6B7C8D9EAFB0C1D2E3F42
+S3150060B0B05061728394A5B6C7D8E9FA0B1C2D3E4F32
+S3150060B0C060718293A4B5C6D7E8F90A1B2C3D4E5F22
+S3150060B0D0708192A3B4C5D6E7F8091A2B3C4D5E6F12
+S3150060B0E08091A2B3C4D5E6F708192A3B4C5D6E7F02
+S3150060B0F090A1B2C3D4E5F60718293A4B5C6D7E8FF2
+S3150060B100A0B1C2D3E4F5061728394A5B6C7D8E9FE1
+S3150060B110B0C1D2E3F405162738495A6B7C8D9EAFD1
+S3150060B120C0D1E2F30415263748596A7B8C9DAEBFC1
+S3150060B130D0E1F2031425364758697A8B9CADBECFB1
+S3150060B140E0F102132435465768798A9BACBDCEDFA1
+S3150060B150F00112233445566778899AABBCCDDEEF91
+S3150060B16000112233445566778899AABBCCDDEEFF81
+S3150060B170102132435465768798A9BACBDCEDFE0F71
+S3150060B1802031425364758697A8B9CADBECFD0E1F61
+S3150060B19030415263748596A7B8C9DAEBFC0D1E2F51
+S3150060B1A0405162738495A6B7C8D9EAFB0C1D2E3F41
+S3150060B1B05061728394A5B6C7D8E9FA0B1C2D3E4F31
+S3150060B1C060718293A4B5C6D7E8F90A1B2C3D4E5F21
+S3150060B1D0708192A3B4C5D6E7F8091A2B3C4D5E6F11
+S3150060B1E08091A2B3C4D5E6F708192A3B4C5D6E7F01
+S3150060B1F090A1B2C3D4E5F60718293A4B5C6D7E8FF1
+S3150060B200A0B1C2D3E4F5061728394A5B6C7D8E9FE0
+S3150060B210B0C1D2E3F405162738495A6B7C8D9EAFD0
+S3150060B220C0D1E2F30415263748596A7B8C9DAEBFC0
+S3150060B230D0E1F2031425364758697A8B9CADBECFB0
+S3150060B240E0F102132435465768798A9BACBDCEDFA0
+S3150060B250F00112233445566778899AABBCCDDEEF90
+S3150060B26000112233445566778899AABBCCDDEEFF80
+S3150060B270102132435465768798A9BACBDCEDFE0F70
+S3150060B2802031425364758697A8B9CADBECFD0E1F60
+S3150060B29030415263748596A7B8C9DAEBFC0D1E2F50
+S3150060B2A0405162738495A6B7C8D9EAFB0C1D2E3F40
+S3150060B2B05061728394A5B6C7D8E9FA0B1C2D3E4F30
+S3150060B2C060718293A4B5C6D7E8F90A1B2C3D4E5F20
+S3150060B2D0708192A3B4C5D6E7F8091A2B3C4D5E6F10
+S3150060B2E08091A2B3C4D5E6F708192A3B4C5D6E7F00
+S3150060B2F090A1B2C3D4E5F60718293A4B5C6D7E8FF0
+S3150060B300A0B1C2D3E4F5061728394A5B6C7D8E9FDF
+S3150060B310B0C1D2E3F405162738495A6B7C8D9EAFCF
+S3150060B320C0D1E2F30415263748596A7B8C9DAEBFBF
+S3150060B330D0E1F2031425364758697A8B9CADBECFAF
+S3150060B340E0F102132435465768798A9BACBDCEDF9F
+S3150060B350F00112233445566778899AABBCCDDEEF8F
+S3150060B36000112233445566778899AABBCCDDEEFF7F
+S3150060B370102132435465768798A9BACBDCEDFE0F6F
+S3150060B3802031425364758697A8B9CADBECFD0E1F5F
+S3150060B39030415263748596A7B8C9DAEBFC0D1E2F4F
+S3150060B3A0405162738495A6B7C8D9EAFB0C1D2E3F3F
+S3150060B3B05061728394A5B6C7D8E9FA0B1C2D3E4F2F
+S3150060B3C060718293A4B5C6D7E8F90A1B2C3D4E5F1F
+S3150060B3D0708192A3B4C5D6E7F8091A2B3C4D5E6F0F
+S3150060B3E08091A2B3C4D5E6F708192A3B4C5D6E7FFF
+S3150060B3F090A1B2C3D4E5F60718293A4B5C6D7E8FEF
+S3150060B400A0B1C2D3E4F5061728394A5B6C7D8E9FDE
+S3150060B410B0C1D2E3F405162738495A6B7C8D9EAFCE
+S3150060B420C0D1E2F30415263748596A7B8C9DAEBFBE
+S3150060B430D0E1F2031425364758697A8B9CADBECFAE
+S3150060B440E0F102132435465768798A9BACBDCEDF9E
+S3150060B450F00112233445566778899AABBCCDDEEF8E
+S3150060B46000112233445566778899AABBCCDDEEFF7E
+S3150060B470102132435465768798A9BACBDCEDFE0F6E
+S3150060B4802031425364758697A8B9CADBECFD0E1F5E
+S3150060B49030415263748596A7B8C9DAEBFC0D1E2F4E
+S3150060B4A0405162738495A6B7C8D9EAFB0C1D2E3F3E
+S3150060B4B05061728394A5B6C7D8E9FA0B1C2D3E4F2E
+S3150060B4C060718293A4B5C6D7E8F90A1B2C3D4E5F1E
+S3150060B4D0708192A3B4C5D6E7F8091A2B3C4D5E6F0E
+S3150060B4E08091A2B3C4D5E6F708192A3B4C5D6E7FFE
+S3150060B4F090A1B2C3D4E5F60718293A4B5C6D7E8FEE
+S3150060B500A0B1C2D3E4F5061728394A5B6C7D8E9FDD
+S3150060B510B0C1D2E3F405162738495A6B7C8D9EAFCD
+S3150060B520C0D1E2F30415263748596A7B8C9DAEBFBD
+S3150060B530D0E1F2031425364758697A8B9CADBECFAD
+S3150060B540E0F102132435465768798A9BACBDCEDF9D
+S3150060B550F00112233445566778899AABBCCDDEEF8D
+S3150060B56000112233445566778899AABBCCDDEEFF7D
+S3150060B570102132435465768798A9BACBDCEDFE0F6D
+S3150060B5802031425364758697A8B9CADBECFD0E1F5D
+S3150060B59030415263748596A7B8C9DAEBFC0D1E2F4D
+S3150060B5A0405162738495A6B7C8D9EAFB0C1D2E3F3D
+S3150060B5B05061728394A5B6C7D8E9FA0B1C2D3E4F2D
+S3150060B5C060718293A4B5C6D7E8F90A1B2C3D4E5F1D
+S3150060B5D0708192A3B4C5D6E7F8091A2B3C4D5E6F0D
+S3150060B5E08091A2B3C4D5E6F708192A3B4C5D6E7FFD
+S3150060B5F090A1B2C3D4E5F60718293A4B5C6D7E8FED
+S3150060B600A0B1C2D3E4F5061728394A5B6C7D8E9FDC
+S3150060B610B0C1D2E3F405162738495A6B7C8D9EAFCC
+S3150060B620C0D1E2F30415263748596A7B8C9DAEBFBC
+S3150060B630D0E1F2031425364758697A8B9CADBECFAC
+S3150060B640E0F102132435465768798A9BACBDCEDF9C
+S3150060B650F00112233445566778899AABBCCDDEEF8C
+S3150060B66000112233445566778899AABBCCDDEEFF7C
+S3150060B670102132435465768798A9BACBDCEDFE0F6C
+S3150060B6802031425364758697A8B9CADBECFD0E1F5C
+S3150060B69030415263748596A7B8C9DAEBFC0D1E2F4C
+S3150060B6A0405162738495A6B7C8D9EAFB0C1D2E3F3C
+S3150060B6B05061728394A5B6C7D8E9FA0B1C2D3E4F2C
+S3150060B6C060718293A4B5C6D7E8F90A1B2C3D4E5F1C
+S3150060B6D0708192A3B4C5D6E7F8091A2B3C4D5E6F0C
+S3150060B6E08091A2B3C4D5E6F708192A3B4C5D6E7FFC
+S3150060B6F090A1B2C3D4E5F60718293A4B5C6D7E8FEC
+S3150060B700A0B1C2D3E4F5061728394A5B6C7D8E9FDB
+S3150060B710B0C1D2E3F405162738495A6B7C8D9EAFCB
+S3150060B720C0D1E2F30415263748596A7B8C9DAEBFBB
+S3150060B730D0E1F2031425364758697A8B9CADBECFAB
+S3150060B740E0F102132435465768798A9BACBDCEDF9B
+S3150060B750F00112233445566778899AABBCCDDEEF8B
+S3150060B76000112233445566778899AABBCCDDEEFF7B
+S3150060B770102132435465768798A9BACBDCEDFE0F6B
+S3150060B7802031425364758697A8B9CADBECFD0E1F5B
+S3150060B79030415263748596A7B8C9DAEBFC0D1E2F4B
+S3150060B7A0405162738495A6B7C8D9EAFB0C1D2E3F3B
+S3150060B7B05061728394A5B6C7D8E9FA0B1C2D3E4F2B
+S3150060B7C060718293A4B5C6D7E8F90A1B2C3D4E5F1B
+S3150060B7D0708192A3B4C5D6E7F8091A2B3C4D5E6F0B
+S3150060B7E08091A2B3C4D5E6F708192A3B4C5D6E7FFB
+S3150060B7F090A1B2C3D4E5F60718293A4B5C6D7E8FEB
+S3150060B800A0B1C2D3E4F5061728394A5B6C7D8E9FDA
+S3150060B810B0C1D2E3F405162738495A6B7C8D9EAFCA
+S3150060B820C0D1E2F30415263748596A7B8C9DAEBFBA
+S3150060B830D0E1F2031425364758697A8B9CADBECFAA
+S3150060B840E0F102132435465768798A9BACBDCEDF9A
+S3150060B850F00112233445566778899AABBCCDDEEF8A
+S3150060B86000112233445566778899AABBCCDDEEFF7A
+S3150060B870102132435465768798A9BACBDCEDFE0F6A
+S3150060B8802031425364758697A8B9CADBECFD0E1F5A
+S3150060B89030415263748596A7B8C9DAEBFC0D1E2F4A
+S3150060B8A0405162738495A6B7C8D9EAFB0C1D2E3F3A
+S3150060B8B05061728394A5B6C7D8E9FA0B1C2D3E4F2A
+S3150060B8C060718293A4B5C6D7E8F90A1B2C3D4E5F1A
+S3150060B8D0708192A3B4C5D6E7F8091A2B3C4D5E6F0A
+S3150060B8E08091A2B3C4D5E6F708192A3B4C5D6E7FFA
+S3150060B8F090A1B2C3D4E5F60718293A4B5C6D7E8FEA
+S3150060B900A0B1C2D3E4F5061728394A5B6C7D8E9FD9
+S3150060B910B0C1D2E3F405162738495A6B7C8D9EAFC9
+S3150060B920C0D1E2F30415263748596A7B8C9DAEBFB9
+S3150060B930D0E1F2031425364758697A8B9CADBECFA9
+S3150060B940E0F102132435465768798A9BACBDCEDF99
+S3150060B950F00112233445566778899AABBCCDDEEF89
+S3150060B96000112233445566778899AABBCCDDEEFF79
+S3150060B970102132435465768798A9BACBDCEDFE0F69
+S3150060B9802031425364758697A8B9CADBECFD0E1F59
+S3150060B99030415263748596A7B8C9DAEBFC0D1E2F49
+S3150060B9A0405162738495A6B7C8D9EAFB0C1D2E3F39
+S3150060B9B05061728394A5B6C7D8E9FA0B1C2D3E4F29
+S3150060B9C060718293A4B5C6D7E8F90A1B2C3D4E5F19
+S3150060B9D0708192A3B4C5D6E7F8091A2B3C4D5E6F09
+S3150060B9E08091A2B3C4D5E6F708192A3B4C5D6E7FF9
+S3150060B9F090A1B2C3D4E5F60718293A4B5C6D7E8FE9
+S3150060BA00A0B1C2D3E4F5061728394A5B6C7D8E9FD8
+S3150060BA10B0C1D2E3F405162738495A6B7C8D9EAFC8
+S3150060BA20C0D1E2F30415263748596A7B8C9DAEBFB8
+S3150060BA30D0E1F2031425364758697A8B9CADBECFA8
+S3150060BA40E0F102132435465768798A9BACBDCEDF98
+S3150060BA50F00112233445566778899AABBCCDDEEF88
+S3150060BA6000112233445566778899AABBCCDDEEFF78
+S3150060BA70102132435465768798A9BACBDCEDFE0F68
+S3150060BA802031425364758697A8B9CADBECFD0E1F58
+S3150060BA9030415263748596A7B8C9DAEBFC0D1E2F48
+S3150060BAA0405162738495A6B7C8D9EAFB0C1D2E3F38
+S3150060BAB05061728394A5B6C7D8E9FA0B1C2D3E4F28
+S3150060BAC060718293A4B5C6D7E8F90A1B2C3D4E5F18
+S3150060BAD0708192A3B4C5D6E7F8091A2B3C4D5E6F08
+S3150060BAE08091A2B3C4D5E6F708192A3B4C5D6E7FF8
+S3150060BAF090A1B2C3D4E5F60718293A4B5C6D7E8FE8
+S3150060BB00A0B1C2D3E4F5061728394A5B6C7D8E9FD7
+S3150060BB10B0C1D2E3F405162738495A6B7C8D9EAFC7
+S3150060BB20C0D1E2F30415263748596A7B8C9DAEBFB7
+S3150060BB30D0E1F2031425364758697A8B9CADBECFA7
+S3150060BB40E0F102132435465768798A9BACBDCEDF97
+S3150060BB50F00112233445566778899AABBCCDDEEF87
+S3150060BB6000112233445566778899AABBCCDDEEFF77
+S3150060BB70102132435465768798A9BACBDCEDFE0F67
+S3150060BB802031425364758697A8B9CADBECFD0E1F57
+S3150060BB9030415263748596A7B8C9DAEBFC0D1E2F47
+S3150060BBA0405162738495A6B7C8D9EAFB0C1D2E3F37
+S3150060BBB05061728394A5B6C7D8E9FA0B1C2D3E4F27
+S3150060BBC060718293A4B5C6D7E8F90A1B2C3D4E5F17
+S3150060BBD0708192A3B4C5D6E7F8091A2B3C4D5E6F07
+S3150060BBE08091A2B3C4D5E6F708192A3B4C5D6E7FF7
+S3150060BBF090A1B2C3D4E5F60718293A4B5C6D7E8FE7
+S3150060BC00A0B1C2D3E4F5061728394A5B6C7D8E9FD6
+S3150060BC10B0C1D2E3F405162738495A6B7C8D9EAFC6
+S3150060BC20C0D1E2F30415263748596A7B8C9DAEBFB6
+S3150060BC30D0E1F2031425364758697A8B9CADBECFA6
+S3150060BC40E0F102132435465768798A9BACBDCEDF96
+S3150060BC50F00112233445566778899AABBCCDDEEF86
+S3150060BC6000112233445566778899AABBCCDDEEFF76
+S3150060BC70102132435465768798A9BACBDCEDFE0F66
+S3150060BC802031425364758697A8B9CADBECFD0E1F56
+S3150060BC9030415263748596A7B8C9DAEBFC0D1E2F46
+S3150060BCA0405162738495A6B7C8D9EAFB0C1D2E3F36
+S3150060BCB05061728394A5B6C7D8E9FA0B1C2D3E4F26
+S3150060BCC060718293A4B5C6D7E8F90A1B2C3D4E5F16
+S3150060BCD0708192A3B4C5D6E7F8091A2B3C4D5E6F06
+S3150060BCE08091A2B3C4D5E6F708192A3B4C5D6E7FF6
+S3150060BCF090A1B2C3D4E5F60718293A4B5C6D7E8FE6
+S3150060BD00A0B1C2D3E4F5061728394A5B6C7D8E9FD5
+S3150060BD10B0C1D2E3F405162738495A6B7C8D9EAFC5
+S3150060BD20C0D1E2F30415263748596A7B8C9DAEBFB5
+S3150060BD30D0E1F2031425364758697A8B9CADBECFA5
+S3150060BD40E0F102132435465768798A9BACBDCEDF95
+S3150060BD50F00112233445566778899AABBCCDDEEF85
+S3150060BD6000112233445566778899AABBCCDDEEFF75
+S3150060BD70102132435465768798A9BACBDCEDFE0F65
+S3150060BD802031425364758697A8B9CADBECFD0E1F55
+S3150060BD9030415263748596A7B8C9DAEBFC0D1E2F45
+S3150060BDA0405162738495A6B7C8D9EAFB0C1D2E3F35
+S3150060BDB05061728394A5B6C7D8E9FA0B1C2D3E4F25
+S3150060BDC060718293A4B5C6D7E8F90A1B2C3D4E5F15
+S3150060BDD0708192A3B4C5D6E7F8091A2B3C4D5E6F05
+S3150060BDE08091A2B3C4D5E6F708192A3B4C5D6E7FF5
+S3150060BDF090A1B2C3D4E5F60718293A4B5C6D7E8FE5
+S3150060BE00A0B1C2D3E4F5061728394A5B6C7D8E9FD4
+S3150060BE10B0C1D2E3F405162738495A6B7C8D9EAFC4
+S3150060BE20C0D1E2F30415263748596A7B8C9DAEBFB4
+S3150060BE30D0E1F2031425364758697A8B9CADBECFA4
+S3150060BE40E0F102132435465768798A9BACBDCEDF94
+S3150060BE50F00112233445566778899AABBCCDDEEF84
+S3150060BE6000112233445566778899AABBCCDDEEFF74
+S3150060BE70102132435465768798A9BACBDCEDFE0F64
+S3150060BE802031425364758697A8B9CADBECFD0E1F54
+S3150060BE9030415263748596A7B8C9DAEBFC0D1E2F44
+S3150060BEA0405162738495A6B7C8D9EAFB0C1D2E3F34
+S3150060BEB05061728394A5B6C7D8E9FA0B1C2D3E4F24
+S3150060BEC060718293A4B5C6D7E8F90A1B2C3D4E5F14
+S3150060BED0708192A3B4C5D6E7F8091A2B3C4D5E6F04
+S3150060BEE08091A2B3C4D5E6F708192A3B4C5D6E7FF4
+S3150060BEF090A1B2C3D4E5F60718293A4B5C6D7E8FE4
+S3150060BF00A0B1C2D3E4F5061728394A5B6C7D8E9FD3
+S3150060BF10B0C1D2E3F405162738495A6B7C8D9EAFC3
+S3150060BF20C0D1E2F30415263748596A7B8C9DAEBFB3
+S3150060BF30D0E1F2031425364758697A8B9CADBECFA3
+S3150060BF40E0F102132435465768798A9BACBDCEDF93
+S3150060BF50F00112233445566778899AABBCCDDEEF83
+S3150060BF6000112233445566778899AABBCCDDEEFF73
+S3150060BF70102132435465768798A9BACBDCEDFE0F63
+S3150060BF802031425364758697A8B9CADBECFD0E1F53
+S3150060BF9030415263748596A7B8C9DAEBFC0D1E2F43
+S3150060BFA0405162738495A6B7C8D9EAFB0C1D2E3F33
+S3150060BFB05061728394A5B6C7D8E9FA0B1C2D3E4F23
+S3150060BFC060718293A4B5C6D7E8F90A1B2C3D4E5F13
+S3150060BFD0708192A3B4C5D6E7F8091A2B3C4D5E6F03
+S3150060BFE08091A2B3C4D5E6F708192A3B4C5D6E7FF3
+S3150060BFF090A1B2C3D4E5F60718293A4B5C6D7E8FE3
+S3150060C000A0B1C2D3E4F5061728394A5B6C7D8E9FD2
+S3150060C010B0C1D2E3F405162738495A6B7C8D9EAFC2
+S3150060C020C0D1E2F30415263748596A7B8C9DAEBFB2
+S3150060C030D0E1F2031425364758697A8B9CADBECFA2
+S3150060C040E0F102132435465768798A9BACBDCEDF92
+S3150060C050F00112233445566778899AABBCCDDEEF82
+S3150060C06000112233445566778899AABBCCDDEEFF72
+S3150060C070102132435465768798A9BACBDCEDFE0F62
+S3150060C0802031425364758697A8B9CADBECFD0E1F52
+S3150060C09030415263748596A7B8C9DAEBFC0D1E2F42
+S3150060C0A0405162738495A6B7C8D9EAFB0C1D2E3F32
+S3150060C0B05061728394A5B6C7D8E9FA0B1C2D3E4F22
+S3150060C0C060718293A4B5C6D7E8F90A1B2C3D4E5F12
+S3150060C0D0708192A3B4C5D6E7F8091A2B3C4D5E6F02
+S3150060C0E08091A2B3C4D5E6F708192A3B4C5D6E7FF2
+S3150060C0F090A1B2C3D4E5F60718293A4B5C6D7E8FE2
+S3150060C100A0B1C2D3E4F5061728394A5B6C7D8E9FD1
+S3150060C110B0C1D2E3F405162738495A6B7C8D9EAFC1
+S3150060C120C0D1E2F30415263748596A7B8C9DAEBFB1
+S3150060C130D0E1F2031425364758697A8B9CADBECFA1
+S3150060C140E0F102132435465768798A9BACBDCEDF91
+S3150060C150F00112233445566778899AABBCCDDEEF81
+S3150060C16000112233445566778899AABBCCDDEEFF71
+S3150060C170102132435465768798A9BACBDCEDFE0F61
+S3150060C1802031425364758697A8B9CADBECFD0E1F51
+S3150060C19030415263748596A7B8C9DAEBFC0D1E2F41
+S3150060C1A0405162738495A6B7C8D9EAFB0C1D2E3F31
+S3150060C1B05061728394A5B6C7D8E9FA0B1C2D3E4F21
+S3150060C1C060718293A4B5C6D7E8F90A1B2C3D4E5F11
+S3150060C1D0708192A3B4C5D6E7F8091A2B3C4D5E6F01
+S3150060C1E08091A2B3C4D5E6F708192A3B4C5D6E7FF1
+S3150060C1F090A1B2C3D4E5F60718293A4B5C6D7E8FE1
+S3150060C200A0B1C2D3E4F5061728394A5B6C7D8E9FD0
+S3150060C210B0C1D2E3F405162738495A6B7C8D9EAFC0
+S3150060C220C0D1E2F30415263748596A7B8C9DAEBFB0
+S3150060C230D0E1F2031425364758697A8B9CADBECFA0
+S3150060C240E0F102132435465768798A9BACBDCEDF90
+S3150060C250F00112233445566778899AABBCCDDEEF80
+S3150060C26000112233445566778899AABBCCDDEEFF70
+S3150060C270102132435465768798A9BACBDCEDFE0F60
+S3150060C2802031425364758697A8B9CADBECFD0E1F50
+S3150060C29030415263748596A7B8C9DAEBFC0D1E2F40
+S3150060C2A0405162738495A6B7C8D9EAFB0C1D2E3F30
+S3150060C2B05061728394A5B6C7D8E9FA0B1C2D3E4F20
+S3150060C2C060718293A4B5C6D7E8F90A1B2C3D4E5F10
+S3150060C2D0708192A3B4C5D6E7F8091A2B3C4D5E6F00
+S3150060C2E08091A2B3C4D5E6F708192A3B4C5D6E7FF0
+S3150060C2F090A1B2C3D4E5F60718293A4B5C6D7E8FE0
+S3150060C300A0B1C2D3E4F5061728394A5B6C7D8E9FCF
+S3150060C310B0C1D2E3F405162738495A6B7C8D9EAFBF
+S3150060C320C0D1E2F30415263748596A7B8C9DAEBFAF
+S3150060C330D0E1F2031425364758697A8B9CADBECF9F
+S3150060C340E0F102132435465768798A9BACBDCEDF8F
+S3150060C350F00112233445566778899AABBCCDDEEF7F
+S3150060C36000112233445566778899AABBCCDDEEFF6F
+S3150060C370102132435465768798A9BACBDCEDFE0F5F
+S3150060C3802031425364758697A8B9CADBECFD0E1F4F
+S3150060C39030415263748596A7B8C9DAEBFC0D1E2F3F
+S3150060C3A0405162738495A6B7C8D9EAFB0C1D2E3F2F
+S3150060C3B05061728394A5B6C7D8E9FA0B1C2D3E4F1F
+S3150060C3C060718293A4B5C6D7E8F90A1B2C3D4E5F0F
+S3150060C3D0708192A3B4C5D6E7F8091A2B3C4D5E6FFF
+S3150060C3E08091A2B3C4D5E6F708192A3B4C5D6E7FEF
+S3150060C3F090A1B2C3D4E5F60718293A4B5C6D7E8FDF
+S3150060C400A0B1C2D3E4F5061728394A5B6C7D8E9FCE
+S3150060C410B0C1D2E3F405162738495A6B7C8D9EAFBE
+S3150060C420C0D1E2F30415263748596A7B8C9DAEBFAE
+S3150060C430D0E1F2031425364758697A8B9CADBECF9E
+S3150060C440E0F102132435465768798A9BACBDCEDF8E
+S3150060C450F00112233445566778899AABBCCDDEEF7E
+S3150060C46000112233445566778899AABBCCDDEEFF6E
+S3150060C470102132435465768798A9BACBDCEDFE0F5E
+S3150060C4802031425364758697A8B9CADBECFD0E1F4E
+S3150060C49030415263748596A7B8C9DAEBFC0D1E2F3E
+S3150060C4A0405162738495A6B7C8D9EAFB0C1D2E3F2E
+S3150060C4B05061728394A5B6C7D8E9FA0B1C2D3E4F1E
+S3150060C4C060718293A4B5C6D7E8F90A1B2C3D4E5F0E
+S3150060C4D0708192A3B4C5D6E7F8091A2B3C4D5E6FFE
+S3150060C4E08091A2B3C4D5E6F708192A3B4C5D6E7FEE
+S3150060C4F090A1B2C3D4E5F60718293A4B5C6D7E8FDE
+S3150060C500A0B1C2D3E4F5061728394A5B6C7D8E9FCD
+S3150060C510B0C1D2E3F405162738495A6B7C8D9EAFBD
+S3150060C520C0D1E2F30415263748596A7B8C9DAEBFAD
+S3150060C530D0E1F2031425364758697A8B9CADBECF9D
+S3150060C540E0F102132435465768798A9BACBDCEDF8D
+S3150060C550F00112233445566778899AABBCCDDEEF7D
+S3150060C56000112233445566778899AABBCCDDEEFF6D
+S3150060C570102132435465768798A9BACBDCEDFE0F5D
+S3150060C5802031425364758697A8B9CADBECFD0E1F4D
+S3150060C59030415263748596A7B8C9DAEBFC0D1E2F3D
+S3150060C5A0405162738495A6B7C8D9EAFB0C1D2E3F2D
+S3150060C5B05061728394A5B6C7D8E9FA0B1C2D3E4F1D
+S3150060C5C060718293A4B5C6D7E8F90A1B2C3D4E5F0D
+S3150060C5D0708192A3B4C5D6E7F8091A2B3C4D5E6FFD
+S3150060C5E08091A2B3C4D5E6F708192A3B4C5D6E7FED
+S3150060C5F090A1B2C3D4E5F60718293A4B5C6D7E8FDD
+S3150060C600A0B1C2D3E4F5061728394A5B6C7D8E9FCC
+S3150060C610B0C1D2E3F405162738495A6B7C8D9EAFBC
+S3150060C620C0D1E2F30415263748596A7B8C9DAEBFAC
+S3150060C630D0E1F2031425364758697A8B9CADBECF9C
+S3150060C640E0F102132435465768798A9BACBDCEDF8C
+S3150060C650F00112233445566778899AABBCCDDEEF7C
+S3150060C66000112233445566778899AABBCCDDEEFF6C
+S3150060C670102132435465768798A9BACBDCEDFE0F5C
+S3150060C6802031425364758697A8B9CADBECFD0E1F4C
+S3150060C69030415263748596A7B8C9DAEBFC0D1E2F3C
+S3150060C6A0405162738495A6B7C8D9EAFB0C1D2E3F2C
+S3150060C6B05061728394A5B6C7D8E9FA0B1C2D3E4F1C
+S3150060C6C060718293A4B5C6D7E8F90A1B2C3D4E5F0C
+S3150060C6D0708192A3B4C5D6E7F8091A2B3C4D5E6FFC
+S3150060C6E08091A2B3C4D5E6F708192A3B4C5D6E7FEC
+S3150060C6F090A1B2C3D4E5F60718293A4B5C6D7E8FDC
+S3150060C700A0B1C2D3E4F5061728394A5B6C7D8E9FCB
+S3150060C710B0C1D2E3F405162738495A6B7C8D9EAFBB
+S3150060C720C0D1E2F30415263748596A7B8C9DAEBFAB
+S3150060C730D0E1F2031425364758697A8B9CADBECF9B
+S3150060C740E0F102132435465768798A9BACBDCEDF8B
+S3150060C750F00112233445566778899AABBCCDDEEF7B
+S3150060C76000112233445566778899AABBCCDDEEFF6B
+S3150060C770102132435465768798A9BACBDCEDFE0F5B
+S3150060C7802031425364758697A8B9CADBECFD0E1F4B
+S3150060C79030415263748596A7B8C9DAEBFC0D1E2F3B
+S3150060C7A0405162738495A6B7C8D9EAFB0C1D2E3F2B
+S3150060C7B05061728394A5B6C7D8E9FA0B1C2D3E4F1B
+S3150060C7C060718293A4B5C6D7E8F90A1B2C3D4E5F0B
+S3150060C7D0708192A3B4C5D6E7F8091A2B3C4D5E6FFB
+S3150060C7E08091A2B3C4D5E6F708192A3B4C5D6E7FEB
+S3150060C7F090A1B2C3D4E5F60718293A4B5C6D7E8FDB
+S3150060C800A0B1C2D3E4F5061728394A5B6C7D8E9FCA
+S3150060C810B0C1D2E3F405162738495A6B7C8D9EAFBA
+S3150060C820C0D1E2F30415263748596A7B8C9DAEBFAA
+S3150060C830D0E1F2031425364758697A8B9CADBECF9A
+S3150060C840E0F102132435465768798A9BACBDCEDF8A
+S3150060C850F00112233445566778899AABBCCDDEEF7A
+S3150060C86000112233445566778899AABBCCDDEEFF6A
+S3150060C870102132435465768798A9BACBDCEDFE0F5A
+S3150060C8802031425364758697A8B9CADBECFD0E1F4A
+S3150060C89030415263748596A7B8C9DAEBFC0D1E2F3A
+S3150060C8A0405162738495A6B7C8D9EAFB0C1D2E3F2A
+S3150060C8B05061728394A5B6C7D8E9FA0B1C2D3E4F1A
+S3150060C8C060718293A4B5C6D7E8F90A1B2C3D4E5F0A
+S3150060C8D0708192A3B4C5D6E7F8091A2B3C4D5E6FFA
+S3150060C8E08091A2B3C4D5E6F708192A3B4C5D6E7FEA
+S3150060C8F090A1B2C3D4E5F60718293A4B5C6D7E8FDA
+S3150060C900A0B1C2D3E4F5061728394A5B6C7D8E9FC9
+S3150060C910B0C1D2E3F405162738495A6B7C8D9EAFB9
+S3150060C920C0D1E2F30415263748596A7B8C9DAEBFA9
+S3150060C930D0E1F2031425364758697A8B9CADBECF99
+S3150060C940E0F102132435465768798A9BACBDCEDF89
+S3150060C950F00112233445566778899AABBCCDDEEF79
+S3150060C96000112233445566778899AABBCCDDEEFF69
+S3150060C970102132435465768798A9BACBDCEDFE0F59
+S3150060C9802031425364758697A8B9CADBECFD0E1F49
+S3150060C99030415263748596A7B8C9DAEBFC0D1E2F39
+S3150060C9A0405162738495A6B7C8D9EAFB0C1D2E3F29
+S3150060C9B05061728394A5B6C7D8E9FA0B1C2D3E4F19
+S3150060C9C060718293A4B5C6D7E8F90A1B2C3D4E5F09
+S3150060C9D0708192A3B4C5D6E7F8091A2B3C4D5E6FF9
+S3150060C9E08091A2B3C4D5E6F708192A3B4C5D6E7FE9
+S3150060C9F090A1B2C3D4E5F60718293A4B5C6D7E8FD9
+S3150060CA00A0B1C2D3E4F5061728394A5B6C7D8E9FC8
+S3150060CA10B0C1D2E3F405162738495A6B7C8D9EAFB8
+S3150060CA20C0D1E2F30415263748596A7B8C9DAEBFA8
+S3150060CA30D0E1F2031425364758697A8B9CADBECF98
+S3150060CA40E0F102132435465768798A9BACBDCEDF88
+S3150060CA50F00112233445566778899AABBCCDDEEF78
+S3150060CA6000112233445566778899AABBCCDDEEFF68
+S3150060CA70102132435465768798A9BACBDCEDFE0F58
+S3150060CA802031425364758697A8B9CADBECFD0E1F48
+S3150060CA9030415263748596A7B8C9DAEBFC0D1E2F38
+S3150060CAA0405162738495A6B7C8D9EAFB0C1D2E3F28
+S3150060CAB05061728394A5B6C7D8E9FA0B1C2D3E4F18
+S3150060CAC060718293A4B5C6D7E8F90A1B2C3D4E5F08
+S3150060CAD0708192A3B4C5D6E7F8091A2B3C4D5E6FF8
+S3150060CAE08091A2B3C4D5E6F708192A3B4C5D6E7FE8
+S3150060CAF090A1B2C3D4E5F60718293A4B5C6D7E8FD8
+S3150060CB00A0B1C2D3E4F5061728394A5B6C7D8E9FC7
+S3150060CB10B0C1D2E3F405162738495A6B7C8D9EAFB7
+S3150060CB20C0D1E2F30415263748596A7B8C9DAEBFA7
+S3150060CB30D0E1F2031425364758697A8B9CADBECF97
+S3150060CB40E0F102132435465768798A9BACBDCEDF87
+S3150060CB50F00112233445566778899AABBCCDDEEF77
+S3150060CB6000112233445566778899AABBCCDDEEFF67
+S3150060CB70102132435465768798A9BACBDCEDFE0F57
+S3150060CB802031425364758697A8B9CADBECFD0E1F47
+S3150060CB9030415263748596A7B8C9DAEBFC0D1E2F37
+S3150060CBA0405162738495A6B7C8D9EAFB0C1D2E3F27
+S3150060CBB05061728394A5B6C7D8E9FA0B1C2D3E4F17
+S3150060CBC060718293A4B5C6D7E8F90A1B2C3D4E5F07
+S3150060CBD0708192A3B4C5D6E7F8091A2B3C4D5E6FF7
+S3150060CBE08091A2B3C4D5E6F708192A3B4C5D6E7FE7
+S3150060CBF090A1B2C3D4E5F60718293A4B5C6D7E8FD7
+S3150060CC00A0B1C2D3E4F5061728394A5B6C7D8E9FC6
+S3150060CC10B0C1D2E3F405162738495A6B7C8D9EAFB6
+S3150060CC20C0D1E2F30415263748596A7B8C9DAEBFA6
+S3150060CC30D0E1F2031425364758697A8B9CADBECF96
+S3150060CC40E0F102132435465768798A9BACBDCEDF86
+S3150060CC50F00112233445566778899AABBCCDDEEF76
+S3150060CC6000112233445566778899AABBCCDDEEFF66
+S3150060CC70102132435465768798A9BACBDCEDFE0F56
+S3150060CC802031425364758697A8B9CADBECFD0E1F46
+S3150060CC9030415263748596A7B8C9DAEBFC0D1E2F36
+S3150060CCA0405162738495A6B7C8D9EAFB0C1D2E3F26
+S3150060CCB05061728394A5B6C7D8E9FA0B1C2D3E4F16
+S3150060CCC060718293A4B5C6D7E8F90A1B2C3D4E5F06
+S3150060CCD0708192A3B4C5D6E7F8091A2B3C4D5E6FF6
+S3150060CCE08091A2B3C4D5E6F708192A3B4C5D6E7FE6
+S3150060CCF090A1B2C3D4E5F60718293A4B5C6D7E8FD6
+S3150060CD00A0B1C2D3E4F5061728394A5B6C7D8E9FC5
+S3150060CD10B0C1D2E3F405162738495A6B7C8D9EAFB5
+S3150060CD20C0D1E2F30415263748596A7B8C9DAEBFA5
+S3150060CD30D0E1F2031425364758697A8B9CADBECF95
+S3150060CD40E0F102132435465768798A9BACBDCEDF85
+S3150060CD50F00112233445566778899AABBCCDDEEF75
+S3150060CD6000112233445566778899AABBCCDDEEFF65
+S3150060CD70102132435465768798A9BACBDCEDFE0F55
+S3150060CD802031425364758697A8B9CADBECFD0E1F45
+S3150060CD9030415263748596A7B8C9DAEBFC0D1E2F35
+S3150060CDA0405162738495A6B7C8D9EAFB0C1D2E3F25
+S3150060CDB05061728394A5B6C7D8E9FA0B1C2D3E4F15
+S3150060CDC060718293A4B5C6D7E8F90A1B2C3D4E5F05
+S3150060CDD0708192A3B4C5D6E7F8091A2B3C4D5E6FF5
+S3150060CDE08091A2B3C4D5E6F708192A3B4C5D6E7FE5
+S3150060CDF090A1B2C3D4E5F60718293A4B5C6D7E8FD5
+S3150060CE00A0B1C2D3E4F5061728394A5B6C7D8E9FC4
+S3150060CE10B0C1D2E3F405162738495A6B7C8D9EAFB4
+S3150060CE20C0D1E2F30415263748596A7B8C9DAEBFA4
+S3150060CE30D0E1F2031425364758697A8B9CADBECF94
+S3150060CE40E0F102132435465768798A9BACBDCEDF84
+S3150060CE50F00112233445566778899AABBCCDDEEF74
+S3150060CE6000112233445566778899AABBCCDDEEFF64
+S3150060CE70102132435465768798A9BACBDCEDFE0F54
+S3150060CE802031425364758697A8B9CADBECFD0E1F44
+S3150060CE9030415263748596A7B8C9DAEBFC0D1E2F34
+S3150060CEA0405162738495A6B7C8D9EAFB0C1D2E3F24
+S3150060CEB05061728394A5B6C7D8E9FA0B1C2D3E4F14
+S3150060CEC060718293A4B5C6D7E8F90A1B2C3D4E5F04
+S3150060CED0708192A3B4C5D6E7F8091A2B3C4D5E6FF4
+S3150060CEE08091A2B3C4D5E6F708192A3B4C5D6E7FE4
+S3150060CEF090A1B2C3D4E5F60718293A4B5C6D7E8FD4
+S3150060CF00A0B1C2D3E4F5061728394A5B6C7D8E9FC3
+S3150060CF10B0C1D2E3F405162738495A6B7C8D9EAFB3
+S3150060CF20C0D1E2F30415263748596A7B8C9DAEBFA3
+S3150060CF30D0E1F2031425364758697A8B9CADBECF93
+S3150060CF40E0F102132435465768798A9BACBDCEDF83
+S3150060CF50F00112233445566778899AABBCCDDEEF73
+S3150060CF6000112233445566778899AABBCCDDEEFF63
+S3150060CF70102132435465768798A9BACBDCEDFE0F53
+S3150060CF802031425364758697A8B9CADBECFD0E1F43
+S3150060CF9030415263748596A7B8C9DAEBFC0D1E2F33
+S3150060CFA0405162738495A6B7C8D9EAFB0C1D2E3F23
+S3150060CFB05061728394A5B6C7D8E9FA0B1C2D3E4F13
+S3150060CFC060718293A4B5C6D7E8F90A1B2C3D4E5F03
+S3150060CFD0708192A3B4C5D6E7F8091A2B3C4D5E6FF3
+S3150060CFE08091A2B3C4D5E6F708192A3B4C5D6E7FE3
+S3150060CFF090A1B2C3D4E5F60718293A4B5C6D7E8FD3
+S3150060D000A0B1C2D3E4F5061728394A5B6C7D8E9FC2
+S3150060D010B0C1D2E3F405162738495A6B7C8D9EAFB2
+S3150060D020C0D1E2F30415263748596A7B8C9DAEBFA2
+S3150060D030D0E1F2031425364758697A8B9CADBECF92
+S3150060D040E0F102132435465768798A9BACBDCEDF82
+S3150060D050F00112233445566778899AABBCCDDEEF72
+S3150060D06000112233445566778899AABBCCDDEEFF62
+S3150060D070102132435465768798A9BACBDCEDFE0F52
+S3150060D0802031425364758697A8B9CADBECFD0E1F42
+S3150060D09030415263748596A7B8C9DAEBFC0D1E2F32
+S3150060D0A0405162738495A6B7C8D9EAFB0C1D2E3F22
+S3150060D0B05061728394A5B6C7D8E9FA0B1C2D3E4F12
+S3150060D0C060718293A4B5C6D7E8F90A1B2C3D4E5F02
+S3150060D0D0708192A3B4C5D6E7F8091A2B3C4D5E6FF2
+S3150060D0E08091A2B3C4D5E6F708192A3B4C5D6E7FE2
+S3150060D0F090A1B2C3D4E5F60718293A4B5C6D7E8FD2
+S3150060D100A0B1C2D3E4F5061728394A5B6C7D8E9FC1
+S3150060D110B0C1D2E3F405162738495A6B7C8D9EAFB1
+S3150060D120C0D1E2F30415263748596A7B8C9DAEBFA1
+S3150060D130D0E1F2031425364758697A8B9CADBECF91
+S3150060D140E0F102132435465768798A9BACBDCEDF81
+S3150060D150F00112233445566778899AABBCCDDEEF71
+S3150060D16000112233445566778899AABBCCDDEEFF61
+S3150060D170102132435465768798A9BACBDCEDFE0F51
+S3150060D1802031425364758697A8B9CADBECFD0E1F41
+S3150060D19030415263748596A7B8C9DAEBFC0D1E2F31
+S3150060D1A0405162738495A6B7C8D9EAFB0C1D2E3F21
+S3150060D1B05061728394A5B6C7D8E9FA0B1C2D3E4F11
+S3150060D1C060718293A4B5C6D7E8F90A1B2C3D4E5F01
+S3150060D1D0708192A3B4C5D6E7F8091A2B3C4D5E6FF1
+S3150060D1E08091A2B3C4D5E6F708192A3B4C5D6E7FE1
+S3150060D1F090A1B2C3D4E5F60718293A4B5C6D7E8FD1
+S3150060D200A0B1C2D3E4F5061728394A5B6C7D8E9FC0
+S3150060D210B0C1D2E3F405162738495A6B7C8D9EAFB0
+S3150060D220C0D1E2F30415263748596A7B8C9DAEBFA0
+S3150060D230D0E1F2031425364758697A8B9CADBECF90
+S3150060D240E0F102132435465768798A9BACBDCEDF80
+S3150060D250F00112233445566778899AABBCCDDEEF70
+S3150060D26000112233445566778899AABBCCDDEEFF60
+S3150060D270102132435465768798A9BACBDCEDFE0F50
+S3150060D2802031425364758697A8B9CADBECFD0E1F40
+S3150060D29030415263748596A7B8C9DAEBFC0D1E2F30
+S3150060D2A0405162738495A6B7C8D9EAFB0C1D2E3F20
+S3150060D2B05061728394A5B6C7D8E9FA0B1C2D3E4F10
+S3150060D2C060718293A4B5C6D7E8F90A1B2C3D4E5F00
+S3150060D2D0708192A3B4C5D6E7F8091A2B3C4D5E6FF0
+S3150060D2E08091A2B3C4D5E6F708192A3B4C5D6E7FE0
+S3150060D2F090A1B2C3D4E5F60718293A4B5C6D7E8FD0
+S3150060D300A0B1C2D3E4F5061728394A5B6C7D8E9FBF
+S3150060D310B0C1D2E3F405162738495A6B7C8D9EAFAF
+S3150060D320C0D1E2F30415263748596A7B8C9DAEBF9F
+S3150060D330D0E1F2031425364758697A8B9CADBECF8F
+S3150060D340E0F102132435465768798A9BACBDCEDF7F
+S3150060D350F00112233445566778899AABBCCDDEEF6F
+S3150060D36000112233445566778899AABBCCDDEEFF5F
+S3150060D370102132435465768798A9BACBDCEDFE0F4F
+S3150060D3802031425364758697A8B9CADBECFD0E1F3F
+S3150060D39030415263748596A7B8C9DAEBFC0D1E2F2F
+S3150060D3A0405162738495A6B7C8D9EAFB0C1D2E3F1F
+S3150060D3B05061728394A5B6C7D8E9FA0B1C2D3E4F0F
+S3150060D3C060718293A4B5C6D7E8F90A1B2C3D4E5FFF
+S3150060D3D0708192A3B4C5D6E7F8091A2B3C4D5E6FEF
+S3150060D3E08091A2B3C4D5E6F708192A3B4C5D6E7FDF
+S3150060D3F090A1B2C3D4E5F60718293A4B5C6D7E8FCF
+S3150060D400A0B1C2D3E4F5061728394A5B6C7D8E9FBE
+S3150060D410B0C1D2E3F405162738495A6B7C8D9EAFAE
+S3150060D420C0D1E2F30415263748596A7B8C9DAEBF9E
+S3150060D430D0E1F2031425364758697A8B9CADBECF8E
+S3150060D440E0F102132435465768798A9BACBDCEDF7E
+S3150060D450F00112233445566778899AABBCCDDEEF6E
+S3150060D46000112233445566778899AABBCCDDEEFF5E
+S3150060D470102132435465768798A9BACBDCEDFE0F4E
+S3150060D4802031425364758697A8B9CADBECFD0E1F3E
+S3150060D49030415263748596A7B8C9DAEBFC0D1E2F2E
+S3150060D4A0405162738495A6B7C8D9EAFB0C1D2E3F1E
+S3150060D4B05061728394A5B6C7D8E9FA0B1C2D3E4F0E
+S3150060D4C060718293A4B5C6D7E8F90A1B2C3D4E5FFE
+S3150060D4D0708192A3B4C5D6E7F8091A2B3C4D5E6FEE
+S3150060D4E08091A2B3C4D5E6F708192A3B4C5D6E7FDE
+S3150060D4F090A1B2C3D4E5F60718293A4B5C6D7E8FCE
+S3150060D500A0B1C2D3E4F5061728394A5B6C7D8E9FBD
+S3150060D510B0C1D2E3F405162738495A6B7C8D9EAFAD
+S3150060D520C0D1E2F30415263748596A7B8C9DAEBF9D
+S3150060D530D0E1F2031425364758697A8B9CADBECF8D
+S3150060D540E0F102132435465768798A9BACBDCEDF7D
+S3150060D550F00112233445566778899AABBCCDDEEF6D
+S3150060D56000112233445566778899AABBCCDDEEFF5D
+S3150060D570102132435465768798A9BACBDCEDFE0F4D
+S3150060D5802031425364758697A8B9CADBECFD0E1F3D
+S3150060D59030415263748596A7B8C9DAEBFC0D1E2F2D
+S3150060D5A0405162738495A6B7C8D9EAFB0C1D2E3F1D
+S3150060D5B05061728394A5B6C7D8E9FA0B1C2D3E4F0D
+S3150060D5C060718293A4B5C6D7E8F90A1B2C3D4E5FFD
+S3150060D5D0708192A3B4C5D6E7F8091A2B3C4D5E6FED
+S3150060D5E08091A2B3C4D5E6F708192A3B4C5D6E7FDD
+S3150060D5F090A1B2C3D4E5F60718293A4B5C6D7E8FCD
+S3150060D600A0B1C2D3E4F5061728394A5B6C7D8E9FBC
+S3150060D610B0C1D2E3F405162738495A6B7C8D9EAFAC
+S3150060D620C0D1E2F30415263748596A7B8C9DAEBF9C
+S3150060D630D0E1F2031425364758697A8B9CADBECF8C
+S3150060D640E0F102132435465768798A9BACBDCEDF7C
+S3150060D650F00112233445566778899AABBCCDDEEF6C
+S3150060D66000112233445566778899AABBCCDDEEFF5C
+S3150060D670102132435465768798A9BACBDCEDFE0F4C
+S3150060D6802031425364758697A8B9CADBECFD0E1F3C
+S3150060D69030415263748596A7B8C9DAEBFC0D1E2F2C
+S3150060D6A0405162738495A6B7C8D9EAFB0C1D2E3F1C
+S3150060D6B05061728394A5B6C7D8E9FA0B1C2D3E4F0C
+S3150060D6C060718293A4B5C6D7E8F90A1B2C3D4E5FFC
+S3150060D6D0708192A3B4C5D6E7F8091A2B3C4D5E6FEC
+S3150060D6E08091A2B3C4D5E6F708192A3B4C5D6E7FDC
+S3150060D6F090A1B2C3D4E5F60718293A4B5C6D7E8FCC
+S3150060D700A0B1C2D3E4F5061728394A5B6C7D8E9FBB
+S3150060D710B0C1D2E3F405162738495A6B7C8D9EAFAB
+S3150060D720C0D1E2F30415263748596A7B8C9DAEBF9B
+S3150060D730D0E1F2031425364758697A8B9CADBECF8B
+S3150060D740E0F102132435465768798A9BACBDCEDF7B
+S3150060D750F00112233445566778899AABBCCDDEEF6B
+S3150060D76000112233445566778899AABBCCDDEEFF5B
+S3150060D770102132435465768798A9BACBDCEDFE0F4B
+S3150060D7802031425364758697A8B9CADBECFD0E1F3B
+S3150060D79030415263748596A7B8C9DAEBFC0D1E2F2B
+S3150060D7A0405162738495A6B7C8D9EAFB0C1D2E3F1B
+S3150060D7B05061728394A5B6C7D8E9FA0B1C2D3E4F0B
+S3150060D7C060718293A4B5C6D7E8F90A1B2C3D4E5FFB
+S3150060D7D0708192A3B4C5D6E7F8091A2B3C4D5E6FEB
+S3150060D7E08091A2B3C4D5E6F708192A3B4C5D6E7FDB
+S3150060D7F090A1B2C3D4E5F60718293A4B5C6D7E8FCB
+S3150060D800A0B1C2D3E4F5061728394A5B6C7D8E9FBA
+S3150060D810B0C1D2E3F405162738495A6B7C8D9EAFAA
+S3150060D820C0D1E2F30415263748596A7B8C9DAEBF9A
+S3150060D830D0E1F2031425364758697A8B9CADBECF8A
+S3150060D840E0F102132435465768798A9BACBDCEDF7A
+S3150060D850F00112233445566778899AABBCCDDEEF6A
+S3150060D86000112233445566778899AABBCCDDEEFF5A
+S3150060D870102132435465768798A9BACBDCEDFE0F4A
+S3150060D8802031425364758697A8B9CADBECFD0E1F3A
+S3150060D89030415263748596A7B8C9DAEBFC0D1E2F2A
+S3150060D8A0405162738495A6B7C8D9EAFB0C1D2E3F1A
+S3150060D8B05061728394A5B6C7D8E9FA0B1C2D3E4F0A
+S3150060D8C060718293A4B5C6D7E8F90A1B2C3D4E5FFA
+S3150060D8D0708192A3B4C5D6E7F8091A2B3C4D5E6FEA
+S3150060D8E08091A2B3C4D5E6F708192A3B4C5D6E7FDA
+S3150060D8F090A1B2C3D4E5F60718293A4B5C6D7E8FCA
+S3150060D900A0B1C2D3E4F5061728394A5B6C7D8E9FB9
+S3150060D910B0C1D2E3F405162738495A6B7C8D9EAFA9
+S3150060D920C0D1E2F30415263748596A7B8C9DAEBF99
+S3150060D930D0E1F2031425364758697A8B9CADBECF89
+S3150060D940E0F102132435465768798A9BACBDCEDF79
+S3150060D950F00112233445566778899AABBCCDDEEF69
+S3150060D96000112233445566778899AABBCCDDEEFF59
+S3150060D970102132435465768798A9BACBDCEDFE0F49
+S3150060D9802031425364758697A8B9CADBECFD0E1F39
+S3150060D99030415263748596A7B8C9DAEBFC0D1E2F29
+S3150060D9A0405162738495A6B7C8D9EAFB0C1D2E3F19
+S3150060D9B05061728394A5B6C7D8E9FA0B1C2D3E4F09
+S3150060D9C060718293A4B5C6D7E8F90A1B2C3D4E5FF9
+S3150060D9D0708192A3B4C5D6E7F8091A2B3C4D5E6FE9
+S3150060D9E08091A2B3C4D5E6F708192A3B4C5D6E7FD9
+S3150060D9F090A1B2C3D4E5F60718293A4B5C6D7E8FC9
+S3150060DA00A0B1C2D3E4F5061728394A5B6C7D8E9FB8
+S3150060DA10B0C1D2E3F405162738495A6B7C8D9EAFA8
+S3150060DA20C0D1E2F30415263748596A7B8C9DAEBF98
+S3150060DA30D0E1F2031425364758697A8B9CADBECF88
+S3150060DA40E0F102132435465768798A9BACBDCEDF78
+S3150060DA50F00112233445566778899AABBCCDDEEF68
+S3150060DA6000112233445566778899AABBCCDDEEFF58
+S3150060DA70102132435465768798A9BACBDCEDFE0F48
+S3150060DA802031425364758697A8B9CADBECFD0E1F38
+S3150060DA9030415263748596A7B8C9DAEBFC0D1E2F28
+S3150060DAA0405162738495A6B7C8D9EAFB0C1D2E3F18
+S3150060DAB05061728394A5B6C7D8E9FA0B1C2D3E4F08
+S3150060DAC060718293A4B5C6D7E8F90A1B2C3D4E5FF8
+S3150060DAD0708192A3B4C5D6E7F8091A2B3C4D5E6FE8
+S3150060DAE08091A2B3C4D5E6F708192A3B4C5D6E7FD8
+S3150060DAF090A1B2C3D4E5F60718293A4B5C6D7E8FC8
+S3150060DB00A0B1C2D3E4F5061728394A5B6C7D8E9FB7
+S3150060DB10B0C1D2E3F405162738495A6B7C8D9EAFA7
+S3150060DB20C0D1E2F30415263748596A7B8C9DAEBF97
+S3150060DB30D0E1F2031425364758697A8B9CADBECF87
+S3150060DB40E0F102132435465768798A9BACBDCEDF77
+S3150060DB50F00112233445566778899AABBCCDDEEF67
+S3150060DB6000112233445566778899AABBCCDDEEFF57
+S3150060DB70102132435465768798A9BACBDCEDFE0F47
+S3150060DB802031425364758697A8B9CADBECFD0E1F37
+S3150060DB9030415263748596A7B8C9DAEBFC0D1E2F27
+S3150060DBA0405162738495A6B7C8D9EAFB0C1D2E3F17
+S3150060DBB05061728394A5B6C7D8E9FA0B1C2D3E4F07
+S3150060DBC060718293A4B5C6D7E8F90A1B2C3D4E5FF7
+S3150060DBD0708192A3B4C5D6E7F8091A2B3C4D5E6FE7
+S3150060DBE08091A2B3C4D5E6F708192A3B4C5D6E7FD7
+S3150060DBF090A1B2C3D4E5F60718293A4B5C6D7E8FC7
+S3150060DC00A0B1C2D3E4F5061728394A5B6C7D8E9FB6
+S3150060DC10B0C1D2E3F405162738495A6B7C8D9EAFA6
+S3150060DC20C0D1E2F30415263748596A7B8C9DAEBF96
+S3150060DC30D0E1F2031425364758697A8B9CADBECF86
+S3150060DC40E0F102132435465768798A9BACBDCEDF76
+S3150060DC50F00112233445566778899AABBCCDDEEF66
+S3150060DC6000112233445566778899AABBCCDDEEFF56
+S3150060DC70102132435465768798A9BACBDCEDFE0F46
+S3150060DC802031425364758697A8B9CADBECFD0E1F36
+S3150060DC9030415263748596A7B8C9DAEBFC0D1E2F26
+S3150060DCA0405162738495A6B7C8D9EAFB0C1D2E3F16
+S3150060DCB05061728394A5B6C7D8E9FA0B1C2D3E4F06
+S3150060DCC060718293A4B5C6D7E8F90A1B2C3D4E5FF6
+S3150060DCD0708192A3B4C5D6E7F8091A2B3C4D5E6FE6
+S3150060DCE08091A2B3C4D5E6F708192A3B4C5D6E7FD6
+S3150060DCF090A1B2C3D4E5F60718293A4B5C6D7E8FC6
+S3150060DD00A0B1C2D3E4F5061728394A5B6C7D8E9FB5
+S3150060DD10B0C1D2E3F405162738495A6B7C8D9EAFA5
+S3150060DD20C0D1E2F30415263748596A7B8C9DAEBF95
+S3150060DD30D0E1F2031425364758697A8B9CADBECF85
+S3150060DD40E0F102132435465768798A9BACBDCEDF75
+S3150060DD50F00112233445566778899AABBCCDDEEF65
+S3150060DD6000112233445566778899AABBCCDDEEFF55
+S3150060DD70102132435465768798A9BACBDCEDFE0F45
+S3150060DD802031425364758697A8B9CADBECFD0E1F35
+S3150060DD9030415263748596A7B8C9DAEBFC0D1E2F25
+S3150060DDA0405162738495A6B7C8D9EAFB0C1D2E3F15
+S3150060DDB05061728394A5B6C7D8E9FA0B1C2D3E4F05
+S3150060DDC060718293A4B5C6D7E8F90A1B2C3D4E5FF5
+S3150060DDD0708192A3B4C5D6E7F8091A2B3C4D5E6FE5
+S3150060DDE08091A2B3C4D5E6F708192A3B4C5D6E7FD5
+S3150060DDF090A1B2C3D4E5F60718293A4B5C6D7E8FC5
+S3150060DE00A0B1C2D3E4F5061728394A5B6C7D8E9FB4
+S3150060DE10B0C1D2E3F405162738495A6B7C8D9EAFA4
+S3150060DE20C0D1E2F30415263748596A7B8C9DAEBF94
+S3150060DE30D0E1F2031425364758697A8B9CADBECF84
+S3150060DE40E0F102132435465768798A9BACBDCEDF74
+S3150060DE50F00112233445566778899AABBCCDDEEF64
+S3150060DE6000112233445566778899AABBCCDDEEFF54
+S3150060DE70102132435465768798A9BACBDCEDFE0F44
+S3150060DE802031425364758697A8B9CADBECFD0E1F34
+S3150060DE9030415263748596A7B8C9DAEBFC0D1E2F24
+S3150060DEA0405162738495A6B7C8D9EAFB0C1D2E3F14
+S3150060DEB05061728394A5B6C7D8E9FA0B1C2D3E4F04
+S3150060DEC060718293A4B5C6D7E8F90A1B2C3D4E5FF4
+S3150060DED0708192A3B4C5D6E7F8091A2B3C4D5E6FE4
+S3150060DEE08091A2B3C4D5E6F708192A3B4C5D6E7FD4
+S3150060DEF090A1B2C3D4E5F60718293A4B5C6D7E8FC4
+S3150060DF00A0B1C2D3E4F5061728394A5B6C7D8E9FB3
+S3150060DF10B0C1D2E3F405162738495A6B7C8D9EAFA3
+S3150060DF20C0D1E2F30415263748596A7B8C9DAEBF93
+S3150060DF30D0E1F2031425364758697A8B9CADBECF83
+S3150060DF40E0F102132435465768798A9BACBDCEDF73
+S3150060DF50F00112233445566778899AABBCCDDEEF63
+S3150060DF6000112233445566778899AABBCCDDEEFF53
+S3150060DF70102132435465768798A9BACBDCEDFE0F43
+S3150060DF802031425364758697A8B9CADBECFD0E1F33
+S3150060DF9030415263748596A7B8C9DAEBFC0D1E2F23
+S3150060DFA0405162738495A6B7C8D9EAFB0C1D2E3F13
+S3150060DFB05061728394A5B6C7D8E9FA0B1C2D3E4F03
+S3150060DFC060718293A4B5C6D7E8F90A1B2C3D4E5FF3
+S3150060DFD0708192A3B4C5D6E7F8091A2B3C4D5E6FE3
+S3150060DFE08091A2B3C4D5E6F708192A3B4C5D6E7FD3
+S3150060DFF090A1B2C3D4E5F60718293A4B5C6D7E8FC3
+S3150060E000A0B1C2D3E4F5061728394A5B6C7D8E9FB2
+S3150060E010B0C1D2E3F405162738495A6B7C8D9EAFA2
+S3150060E020C0D1E2F30415263748596A7B8C9DAEBF92
+S3150060E030D0E1F2031425364758697A8B9CADBECF82
+S3150060E040E0F102132435465768798A9BACBDCEDF72
+S3150060E050F00112233445566778899AABBCCDDEEF62
+S3150060E06000112233445566778899AABBCCDDEEFF52
+S3150060E070102132435465768798A9BACBDCEDFE0F42
+S3150060E0802031425364758697A8B9CADBECFD0E1F32
+S3150060E09030415263748596A7B8C9DAEBFC0D1E2F22
+S3150060E0A0405162738495A6B7C8D9EAFB0C1D2E3F12
+S3150060E0B05061728394A5B6C7D8E9FA0B1C2D3E4F02
+S3150060E0C060718293A4B5C6D7E8F90A1B2C3D4E5FF2
+S3150060E0D0708192A3B4C5D6E7F8091A2B3C4D5E6FE2
+S3150060E0E08091A2B3C4D5E6F708192A3B4C5D6E7FD2
+S3150060E0F090A1B2C3D4E5F60718293A4B5C6D7E8FC2
+S3150060E100A0B1C2D3E4F5061728394A5B6C7D8E9FB1
+S3150060E110B0C1D2E3F405162738495A6B7C8D9EAFA1
+S3150060E120C0D1E2F30415263748596A7B8C9DAEBF91
+S3150060E130D0E1F2031425364758697A8B9CADBECF81
+S3150060E140E0F102132435465768798A9BACBDCEDF71
+S3150060E150F00112233445566778899AABBCCDDEEF61
+S3150060E16000112233445566778899AABBCCDDEEFF51
+S3150060E170102132435465768798A9BACBDCEDFE0F41
+S3150060E1802031425364758697A8B9CADBECFD0E1F31
+S3150060E19030415263748596A7B8C9DAEBFC0D1E2F21
+S3150060E1A0405162738495A6B7C8D9EAFB0C1D2E3F11
+S3150060E1B05061728394A5B6C7D8E9FA0B1C2D3E4F01
+S3150060E1C060718293A4B5C6D7E8F90A1B2C3D4E5FF1
+S3150060E1D0708192A3B4C5D6E7F8091A2B3C4D5E6FE1
+S3150060E1E08091A2B3C4D5E6F708192A3B4C5D6E7FD1
+S3150060E1F090A1B2C3D4E5F60718293A4B5C6D7E8FC1
+S3150060E200A0B1C2D3E4F5061728394A5B6C7D8E9FB0
+S3150060E210B0C1D2E3F405162738495A6B7C8D9EAFA0
+S3150060E220C0D1E2F30415263748596A7B8C9DAEBF90
+S3150060E230D0E1F2031425364758697A8B9CADBECF80
+S3150060E240E0F102132435465768798A9BACBDCEDF70
+S3150060E250F00112233445566778899AABBCCDDEEF60
+S3150060E26000112233445566778899AABBCCDDEEFF50
+S3150060E270102132435465768798A9BACBDCEDFE0F40
+S3150060E2802031425364758697A8B9CADBECFD0E1F30
+S3150060E29030415263748596A7B8C9DAEBFC0D1E2F20
+S3150060E2A0405162738495A6B7C8D9EAFB0C1D2E3F10
+S3150060E2B05061728394A5B6C7D8E9FA0B1C2D3E4F00
+S3150060E2C060718293A4B5C6D7E8F90A1B2C3D4E5FF0
+S3150060E2D0708192A3B4C5D6E7F8091A2B3C4D5E6FE0
+S3150060E2E08091A2B3C4D5E6F708192A3B4C5D6E7FD0
+S3150060E2F090A1B2C3D4E5F60718293A4B5C6D7E8FC0
+S3150060E300A0B1C2D3E4F5061728394A5B6C7D8E9FAF
+S3150060E310B0C1D2E3F405162738495A6B7C8D9EAF9F
+S3150060E320C0D1E2F30415263748596A7B8C9DAEBF8F
+S3150060E330D0E1F2031425364758697A8B9CADBECF7F
+S3150060E340E0F102132435465768798A9BACBDCEDF6F
+S3150060E350F00112233445566778899AABBCCDDEEF5F
+S3150060E36000112233445566778899AABBCCDDEEFF4F
+S3150060E370102132435465768798A9BACBDCEDFE0F3F
+S3150060E3802031425364758697A8B9CADBECFD0E1F2F
+S3150060E39030415263748596A7B8C9DAEBFC0D1E2F1F
+S3150060E3A0405162738495A6B7C8D9EAFB0C1D2E3F0F
+S3150060E3B05061728394A5B6C7D8E9FA0B1C2D3E4FFF
+S3150060E3C060718293A4B5C6D7E8F90A1B2C3D4E5FEF
+S3150060E3D0708192A3B4C5D6E7F8091A2B3C4D5E6FDF
+S3150060E3E08091A2B3C4D5E6F708192A3B4C5D6E7FCF
+S3150060E3F090A1B2C3D4E5F60718293A4B5C6D7E8FBF
+S3150060E400A0B1C2D3E4F5061728394A5B6C7D8E9FAE
+S3150060E410B0C1D2E3F405162738495A6B7C8D9EAF9E
+S3150060E420C0D1E2F30415263748596A7B8C9DAEBF8E
+S3150060E430D0E1F2031425364758697A8B9CADBECF7E
+S3150060E440E0F102132435465768798A9BACBDCEDF6E
+S3150060E450F00112233445566778899AABBCCDDEEF5E
+S3150060E46000112233445566778899AABBCCDDEEFF4E
+S3150060E470102132435465768798A9BACBDCEDFE0F3E
+S3150060E4802031425364758697A8B9CADBECFD0E1F2E
+S3150060E49030415263748596A7B8C9DAEBFC0D1E2F1E
+S3150060E4A0405162738495A6B7C8D9EAFB0C1D2E3F0E
+S3150060E4B05061728394A5B6C7D8E9FA0B1C2D3E4FFE
+S3150060E4C060718293A4B5C6D7E8F90A1B2C3D4E5FEE
+S3150060E4D0708192A3B4C5D6E7F8091A2B3C4D5E6FDE
+S3150060E4E08091A2B3C4D5E6F708192A3B4C5D6E7FCE
+S3150060E4F090A1B2C3D4E5F60718293A4B5C6D7E8FBE
+S3150060E500A0B1C2D3E4F5061728394A5B6C7D8E9FAD
+S3150060E510B0C1D2E3F405162738495A6B7C8D9EAF9D
+S3150060E520C0D1E2F30415263748596A7B8C9DAEBF8D
+S3150060E530D0E1F2031425364758697A8B9CADBECF7D
+S3150060E540E0F102132435465768798A9BACBDCEDF6D
+S3150060E550F00112233445566778899AABBCCDDEEF5D
+S3150060E56000112233445566778899AABBCCDDEEFF4D
+S3150060E570102132435465768798A9BACBDCEDFE0F3D
+S3150060E5802031425364758697A8B9CADBECFD0E1F2D
+S3150060E59030415263748596A7B8C9DAEBFC0D1E2F1D
+S3150060E5A0405162738495A6B7C8D9EAFB0C1D2E3F0D
+S3150060E5B05061728394A5B6C7D8E9FA0B1C2D3E4FFD
+S3150060E5C060718293A4B5C6D7E8F90A1B2C3D4E5FED
+S3150060E5D0708192A3B4C5D6E7F8091A2B3C4D5E6FDD
+S3150060E5E08091A2B3C4D5E6F708192A3B4C5D6E7FCD
+S3150060E5F090A1B2C3D4E5F60718293A4B5C6D7E8FBD
+S3150060E600A0B1C2D3E4F5061728394A5B6C7D8E9FAC
+S3150060E610B0C1D2E3F405162738495A6B7C8D9EAF9C
+S3150060E620C0D1E2F30415263748596A7B8C9DAEBF8C
+S3150060E630D0E1F2031425364758697A8B9CADBECF7C
+S3150060E640E0F102132435465768798A9BACBDCEDF6C
+S3150060E650F00112233445566778899AABBCCDDEEF5C
+S3150060E66000112233445566778899AABBCCDDEEFF4C
+S3150060E670102132435465768798A9BACBDCEDFE0F3C
+S3150060E6802031425364758697A8B9CADBECFD0E1F2C
+S3150060E69030415263748596A7B8C9DAEBFC0D1E2F1C
+S3150060E6A0405162738495A6B7C8D9EAFB0C1D2E3F0C
+S3150060E6B05061728394A5B6C7D8E9FA0B1C2D3E4FFC
+S3150060E6C060718293A4B5C6D7E8F90A1B2C3D4E5FEC
+S3150060E6D0708192A3B4C5D6E7F8091A2B3C4D5E6FDC
+S3150060E6E08091A2B3C4D5E6F708192A3B4C5D6E7FCC
+S3150060E6F090A1B2C3D4E5F60718293A4B5C6D7E8FBC
+S3150060E700A0B1C2D3E4F5061728394A5B6C7D8E9FAB
+S3150060E710B0C1D2E3F405162738495A6B7C8D9EAF9B
+S3150060E720C0D1E2F30415263748596A7B8C9DAEBF8B
+S3150060E730D0E1F2031425364758697A8B9CADBECF7B
+S3150060E740E0F102132435465768798A9BACBDCEDF6B
+S3150060E750F00112233445566778899AABBCCDDEEF5B
+S3150060E76000112233445566778899AABBCCDDEEFF4B
+S3150060E770102132435465768798A9BACBDCEDFE0F3B
+S3150060E7802031425364758697A8B9CADBECFD0E1F2B
+S3150060E79030415263748596A7B8C9DAEBFC0D1E2F1B
+S3150060E7A0405162738495A6B7C8D9EAFB0C1D2E3F0B
+S3150060E7B05061728394A5B6C7D8E9FA0B1C2D3E4FFB
+S3150060E7C060718293A4B5C6D7E8F90A1B2C3D4E5FEB
+S3150060E7D0708192A3B4C5D6E7F8091A2B3C4D5E6FDB
+S3150060E7E08091A2B3C4D5E6F708192A3B4C5D6E7FCB
+S3150060E7F090A1B2C3D4E5F60718293A4B5C6D7E8FBB
+S3150060E800A0B1C2D3E4F5061728394A5B6C7D8E9FAA
+S3150060E810B0C1D2E3F405162738495A6B7C8D9EAF9A
+S3150060E820C0D1E2F30415263748596A7B8C9DAEBF8A
+S3150060E830D0E1F2031425364758697A8B9CADBECF7A
+S3150060E840E0F102132435465768798A9BACBDCEDF6A
+S3150060E850F00112233445566778899AABBCCDDEEF5A
+S3150060E86000112233445566778899AABBCCDDEEFF4A
+S3150060E870102132435465768798A9BACBDCEDFE0F3A
+S3150060E8802031425364758697A8B9CADBECFD0E1F2A
+S3150060E89030415263748596A7B8C9DAEBFC0D1E2F1A
+S3150060E8A0405162738495A6B7C8D9EAFB0C1D2E3F0A
+S3150060E8B05061728394A5B6C7D8E9FA0B1C2D3E4FFA
+S3150060E8C060718293A4B5C6D7E8F90A1B2C3D4E5FEA
+S3150060E8D0708192A3B4C5D6E7F8091A2B3C4D5E6FDA
+S3150060E8E08091A2B3C4D5E6F708192A3B4C5D6E7FCA
+S3150060E8F090A1B2C3D4E5F60718293A4B5C6D7E8FBA
+S3150060E900A0B1C2D3E4F5061728394A5B6C7D8E9FA9
+S3150060E910B0C1D2E3F405162738495A6B7C8D9EAF99
+S3150060E920C0D1E2F30415263748596A7B8C9DAEBF89
+S3150060E930D0E1F2031425364758697A8B9CADBECF79
+S3150060E940E0F102132435465768798A9BACBDCEDF69
+S3150060E950F00112233445566778899AABBCCDDEEF59
+S3150060E96000112233445566778899AABBCCDDEEFF49
+S3150060E970102132435465768798A9BACBDCEDFE0F39
+S3150060E9802031425364758697A8B9CADBECFD0E1F29
+S3150060E99030415263748596A7B8C9DAEBFC0D1E2F19
+S3150060E9A0405162738495A6B7C8D9EAFB0C1D2E3F09
+S3150060E9B05061728394A5B6C7D8E9FA0B1C2D3E4FF9
+S3150060E9C060718293A4B5C6D7E8F90A1B2C3D4E5FE9
+S3150060E9D0708192A3B4C5D6E7F8091A2B3C4D5E6FD9
+S3150060E9E08091A2B3C4D5E6F708192A3B4C5D6E7FC9
+S3150060E9F090A1B2C3D4E5F60718293A4B5C6D7E8FB9
+S3150060EA00A0B1C2D3E4F5061728394A5B6C7D8E9FA8
+S3150060EA10B0C1D2E3F405162738495A6B7C8D9EAF98
+S3150060EA20C0D1E2F30415263748596A7B8C9DAEBF88
+S3150060EA30D0E1F2031425364758697A8B9CADBECF78
+S3150060EA40E0F102132435465768798A9BACBDCEDF68
+S3150060EA50F00112233445566778899AABBCCDDEEF58
+S3150060EA6000112233445566778899AABBCCDDEEFF48
+S3150060EA70102132435465768798A9BACBDCEDFE0F38
+S3150060EA802031425364758697A8B9CADBECFD0E1F28
+S3150060EA9030415263748596A7B8C9DAEBFC0D1E2F18
+S3150060EAA0405162738495A6B7C8D9EAFB0C1D2E3F08
+S3150060EAB05061728394A5B6C7D8E9FA0B1C2D3E4FF8
+S3150060EAC060718293A4B5C6D7E8F90A1B2C3D4E5FE8
+S3150060EAD0708192A3B4C5D6E7F8091A2B3C4D5E6FD8
+S3150060EAE08091A2B3C4D5E6F708192A3B4C5D6E7FC8
+S3150060EAF090A1B2C3D4E5F60718293A4B5C6D7E8FB8
+S3150060EB00A0B1C2D3E4F5061728394A5B6C7D8E9FA7
+S3150060EB10B0C1D2E3F405162738495A6B7C8D9EAF97
+S3150060EB20C0D1E2F30415263748596A7B8C9DAEBF87
+S3150060EB30D0E1F2031425364758697A8B9CADBECF77
+S3150060EB40E0F102132435465768798A9BACBDCEDF67
+S3150060EB50F00112233445566778899AABBCCDDEEF57
+S3150060EB6000112233445566778899AABBCCDDEEFF47
+S3150060EB70102132435465768798A9BACBDCEDFE0F37
+S3150060EB802031425364758697A8B9CADBECFD0E1F27
+S3150060EB9030415263748596A7B8C9DAEBFC0D1E2F17
+S3150060EBA0405162738495A6B7C8D9EAFB0C1D2E3F07
+S3150060EBB05061728394A5B6C7D8E9FA0B1C2D3E4FF7
+S3150060EBC060718293A4B5C6D7E8F90A1B2C3D4E5FE7
+S3150060EBD0708192A3B4C5D6E7F8091A2B3C4D5E6FD7
+S3150060EBE08091A2B3C4D5E6F708192A3B4C5D6E7FC7
+S3150060EBF090A1B2C3D4E5F60718293A4B5C6D7E8FB7
+S3150060EC00A0B1C2D3E4F5061728394A5B6C7D8E9FA6
+S3150060EC10B0C1D2E3F405162738495A6B7C8D9EAF96
+S3150060EC20C0D1E2F30415263748596A7B8C9DAEBF86
+S3150060EC30D0E1F2031425364758697A8B9CADBECF76
+S3150060EC40E0F102132435465768798A9BACBDCEDF66
+S3150060EC50F00112233445566778899AABBCCDDEEF56
+S3150060EC6000112233445566778899AABBCCDDEEFF46
+S3150060EC70102132435465768798A9BACBDCEDFE0F36
+S3150060EC802031425364758697A8B9CADBECFD0E1F26
+S3150060EC9030415263748596A7B8C9DAEBFC0D1E2F16
+S3150060ECA0405162738495A6B7C8D9EAFB0C1D2E3F06
+S3150060ECB05061728394A5B6C7D8E9FA0B1C2D3E4FF6
+S3150060ECC060718293A4B5C6D7E8F90A1B2C3D4E5FE6
+S3150060ECD0708192A3B4C5D6E7F8091A2B3C4D5E6FD6
+S3150060ECE08091A2B3C4D5E6F708192A3B4C5D6E7FC6
+S3150060ECF090A1B2C3D4E5F60718293A4B5C6D7E8FB6
+S3150060ED00A0B1C2D3E4F5061728394A5B6C7D8E9FA5
+S3150060ED10B0C1D2E3F405162738495A6B7C8D9EAF95
+S3150060ED20C0D1E2F30415263748596A7B8C9DAEBF85
+S3150060ED30D0E1F2031425364758697A8B9CADBECF75
+S3150060ED40E0F102132435465768798A9BACBDCEDF65
+S3150060ED50F00112233445566778899AABBCCDDEEF55
+S3150060ED6000112233445566778899AABBCCDDEEFF45
+S3150060ED70102132435465768798A9BACBDCEDFE0F35
+S3150060ED802031425364758697A8B9CADBECFD0E1F25
+S3150060ED9030415263748596A7B8C9DAEBFC0D1E2F15
+S3150060EDA0405162738495A6B7C8D9EAFB0C1D2E3F05
+S3150060EDB05061728394A5B6C7D8E9FA0B1C2D3E4FF5
+S3150060EDC060718293A4B5C6D7E8F90A1B2C3D4E5FE5
+S3150060EDD0708192A3B4C5D6E7F8091A2B3C4D5E6FD5
+S3150060EDE08091A2B3C4D5E6F708192A3B4C5D6E7FC5
+S3150060EDF090A1B2C3D4E5F60718293A4B5C6D7E8FB5
+S3150060EE00A0B1C2D3E4F5061728394A5B6C7D8E9FA4
+S3150060EE10B0C1D2E3F405162738495A6B7C8D9EAF94
+S3150060EE20C0D1E2F30415263748596A7B8C9DAEBF84
+S3150060EE30D0E1F2031425364758697A8B9CADBECF74
+S3150060EE40E0F102132435465768798A9BACBDCEDF64
+S3150060EE50F00112233445566778899AABBCCDDEEF54
+S3150060EE6000112233445566778899AABBCCDDEEFF44
+S3150060EE70102132435465768798A9BACBDCEDFE0F34
+S3150060EE802031425364758697A8B9CADBECFD0E1F24
+S3150060EE9030415263748596A7B8C9DAEBFC0D1E2F14
+S3150060EEA0405162738495A6B7C8D9EAFB0C1D2E3F04
+S3150060EEB05061728394A5B6C7D8E9FA0B1C2D3E4FF4
+S3150060EEC060718293A4B5C6D7E8F90A1B2C3D4E5FE4
+S3150060EED0708192A3B4C5D6E7F8091A2B3C4D5E6FD4
+S3150060EEE08091A2B3C4D5E6F708192A3B4C5D6E7FC4
+S3150060EEF090A1B2C3D4E5F60718293A4B5C6D7E8FB4
+S3150060EF00A0B1C2D3E4F5061728394A5B6C7D8E9FA3
+S3150060EF10B0C1D2E3F405162738495A6B7C8D9EAF93
+S3150060EF20C0D1E2F30415263748596A7B8C9DAEBF83
+S3150060EF30D0E1F2031425364758697A8B9CADBECF73
+S3150060EF40E0F102132435465768798A9BACBDCEDF63
+S3150060EF50F00112233445566778899AABBCCDDEEF53
+S3150060EF6000112233445566778899AABBCCDDEEFF43
+S3150060EF70102132435465768798A9BACBDCEDFE0F33
+S3150060EF802031425364758697A8B9CADBECFD0E1F23
+S3150060EF9030415263748596A7B8C9DAEBFC0D1E2F13
+S3150060EFA0405162738495A6B7C8D9EAFB0C1D2E3F03
+S3150060EFB05061728394A5B6C7D8E9FA0B1C2D3E4FF3
+S3150060EFC060718293A4B5C6D7E8F90A1B2C3D4E5FE3
+S3150060EFD0708192A3B4C5D6E7F8091A2B3C4D5E6FD3
+S3150060EFE08091A2B3C4D5E6F708192A3B4C5D6E7FC3
+S3150060EFF090A1B2C3D4E5F60718293A4B5C6D7E8FB3
+S3150060F000A0B1C2D3E4F5061728394A5B6C7D8E9FA2
+S3150060F010B0C1D2E3F405162738495A6B7C8D9EAF92
+S3150060F020C0D1E2F30415263748596A7B8C9DAEBF82
+S3150060F030D0E1F2031425364758697A8B9CADBECF72
+S3150060F040E0F102132435465768798A9BACBDCEDF62
+S3150060F050F00112233445566778899AABBCCDDEEF52
+S3150060F06000112233445566778899AABBCCDDEEFF42
+S3150060F070102132435465768798A9BACBDCEDFE0F32
+S3150060F0802031425364758697A8B9CADBECFD0E1F22
+S3150060F09030415263748596A7B8C9DAEBFC0D1E2F12
+S3150060F0A0405162738495A6B7C8D9EAFB0C1D2E3F02
+S3150060F0B05061728394A5B6C7D8E9FA0B1C2D3E4FF2
+S3150060F0C060718293A4B5C6D7E8F90A1B2C3D4E5FE2
+S3150060F0D0708192A3B4C5D6E7F8091A2B3C4D5E6FD2
+S3150060F0E08091A2B3C4D5E6F708192A3B4C5D6E7FC2
+S3150060F0F090A1B2C3D4E5F60718293A4B5C6D7E8FB2
+S3150060F100A0B1C2D3E4F5061728394A5B6C7D8E9FA1
+S3150060F110B0C1D2E3F405162738495A6B7C8D9EAF91
+S3150060F120C0D1E2F30415263748596A7B8C9DAEBF81
+S3150060F130D0E1F2031425364758697A8B9CADBECF71
+S3150060F140E0F102132435465768798A9BACBDCEDF61
+S3150060F150F00112233445566778899AABBCCDDEEF51
+S3150060F16000112233445566778899AABBCCDDEEFF41
+S3150060F170102132435465768798A9BACBDCEDFE0F31
+S3150060F1802031425364758697A8B9CADBECFD0E1F21
+S3150060F19030415263748596A7B8C9DAEBFC0D1E2F11
+S3150060F1A0405162738495A6B7C8D9EAFB0C1D2E3F01
+S3150060F1B05061728394A5B6C7D8E9FA0B1C2D3E4FF1
+S3150060F1C060718293A4B5C6D7E8F90A1B2C3D4E5FE1
+S3150060F1D0708192A3B4C5D6E7F8091A2B3C4D5E6FD1
+S3150060F1E08091A2B3C4D5E6F708192A3B4C5D6E7FC1
+S3150060F1F090A1B2C3D4E5F60718293A4B5C6D7E8FB1
+S3150060F200A0B1C2D3E4F5061728394A5B6C7D8E9FA0
+S3150060F210B0C1D2E3F405162738495A6B7C8D9EAF90
+S3150060F220C0D1E2F30415263748596A7B8C9DAEBF80
+S3150060F230D0E1F2031425364758697A8B9CADBECF70
+S3150060F240E0F102132435465768798A9BACBDCEDF60
+S3150060F250F00112233445566778899AABBCCDDEEF50
+S3150060F26000112233445566778899AABBCCDDEEFF40
+S3150060F270102132435465768798A9BACBDCEDFE0F30
+S3150060F2802031425364758697A8B9CADBECFD0E1F20
+S3150060F29030415263748596A7B8C9DAEBFC0D1E2F10
+S3150060F2A0405162738495A6B7C8D9EAFB0C1D2E3F00
+S3150060F2B05061728394A5B6C7D8E9FA0B1C2D3E4FF0
+S3150060F2C060718293A4B5C6D7E8F90A1B2C3D4E5FE0
+S3150060F2D0708192A3B4C5D6E7F8091A2B3C4D5E6FD0
+S3150060F2E08091A2B3C4D5E6F708192A3B4C5D6E7FC0
+S3150060F2F090A1B2C3D4E5F60718293A4B5C6D7E8FB0
+S3150060F300A0B1C2D3E4F5061728394A5B6C7D8E9F9F
+S3150060F310B0C1D2E3F405162738495A6B7C8D9EAF8F
+S3150060F320C0D1E2F30415263748596A7B8C9DAEBF7F
+S3150060F330D0E1F2031425364758697A8B9CADBECF6F
+S3150060F340E0F102132435465768798A9BACBDCEDF5F
+S3150060F350F00112233445566778899AABBCCDDEEF4F
+S3150060F36000112233445566778899AABBCCDDEEFF3F
+S3150060F370102132435465768798A9BACBDCEDFE0F2F
+S3150060F3802031425364758697A8B9CADBECFD0E1F1F
+S3150060F39030415263748596A7B8C9DAEBFC0D1E2F0F
+S3150060F3A0405162738495A6B7C8D9EAFB0C1D2E3FFF
+S3150060F3B05061728394A5B6C7D8E9FA0B1C2D3E4FEF
+S3150060F3C060718293A4B5C6D7E8F90A1B2C3D4E5FDF
+S3150060F3D0708192A3B4C5D6E7F8091A2B3C4D5E6FCF
+S3150060F3E08091A2B3C4D5E6F708192A3B4C5D6E7FBF
+S3150060F3F090A1B2C3D4E5F60718293A4B5C6D7E8FAF
+S3150060F400A0B1C2D3E4F5061728394A5B6C7D8E9F9E
+S3150060F410B0C1D2E3F405162738495A6B7C8D9EAF8E
+S3150060F420C0D1E2F30415263748596A7B8C9DAEBF7E
+S3150060F430D0E1F2031425364758697A8B9CADBECF6E
+S3150060F440E0F102132435465768798A9BACBDCEDF5E
+S3150060F450F00112233445566778899AABBCCDDEEF4E
+S3150060F46000112233445566778899AABBCCDDEEFF3E
+S3150060F470102132435465768798A9BACBDCEDFE0F2E
+S3150060F4802031425364758697A8B9CADBECFD0E1F1E
+S3150060F49030415263748596A7B8C9DAEBFC0D1E2F0E
+S3150060F4A0405162738495A6B7C8D9EAFB0C1D2E3FFE
+S3150060F4B05061728394A5B6C7D8E9FA0B1C2D3E4FEE
+S3150060F4C060718293A4B5C6D7E8F90A1B2C3D4E5FDE
+S3150060F4D0708192A3B4C5D6E7F8091A2B3C4D5E6FCE
+S3150060F4E08091A2B3C4D5E6F708192A3B4C5D6E7FBE
+S3150060F4F090A1B2C3D4E5F60718293A4B5C6D7E8FAE
+S3150060F500A0B1C2D3E4F5061728394A5B6C7D8E9F9D
+S3150060F510B0C1D2E3F405162738495A6B7C8D9EAF8D
+S3150060F520C0D1E2F30415263748596A7B8C9DAEBF7D
+S3150060F530D0E1F2031425364758697A8B9CADBECF6D
+S3150060F540E0F102132435465768798A9BACBDCEDF5D
+S3150060F550F00112233445566778899AABBCCDDEEF4D
+S3150060F56000112233445566778899AABBCCDDEEFF3D
+S3150060F570102132435465768798A9BACBDCEDFE0F2D
+S3150060F5802031425364758697A8B9CADBECFD0E1F1D
+S3150060F59030415263748596A7B8C9DAEBFC0D1E2F0D
+S3150060F5A0405162738495A6B7C8D9EAFB0C1D2E3FFD
+S3150060F5B05061728394A5B6C7D8E9FA0B1C2D3E4FED
+S3150060F5C060718293A4B5C6D7E8F90A1B2C3D4E5FDD
+S3150060F5D0708192A3B4C5D6E7F8091A2B3C4D5E6FCD
+S3150060F5E08091A2B3C4D5E6F708192A3B4C5D6E7FBD
+S3150060F5F090A1B2C3D4E5F60718293A4B5C6D7E8FAD
+S3150060F600A0B1C2D3E4F5061728394A5B6C7D8E9F9C
+S3150060F610B0C1D2E3F405162738495A6B7C8D9EAF8C
+S3150060F620C0D1E2F30415263748596A7B8C9DAEBF7C
+S3150060F630D0E1F2031425364758697A8B9CADBECF6C
+S3150060F640E0F102132435465768798A9BACBDCEDF5C
+S3150060F650F00112233445566778899AABBCCDDEEF4C
+S3150060F66000112233445566778899AABBCCDDEEFF3C
+S3150060F670102132435465768798A9BACBDCEDFE0F2C
+S3150060F6802031425364758697A8B9CADBECFD0E1F1C
+S3150060F69030415263748596A7B8C9DAEBFC0D1E2F0C
+S3150060F6A0405162738495A6B7C8D9EAFB0C1D2E3FFC
+S3150060F6B05061728394A5B6C7D8E9FA0B1C2D3E4FEC
+S3150060F6C060718293A4B5C6D7E8F90A1B2C3D4E5FDC
+S3150060F6D0708192A3B4C5D6E7F8091A2B3C4D5E6FCC
+S3150060F6E08091A2B3C4D5E6F708192A3B4C5D6E7FBC
+S3150060F6F090A1B2C3D4E5F60718293A4B5C6D7E8FAC
+S3150060F700A0B1C2D3E4F5061728394A5B6C7D8E9F9B
+S3150060F710B0C1D2E3F405162738495A6B7C8D9EAF8B
+S3150060F720C0D1E2F30415263748596A7B8C9DAEBF7B
+S3150060F730D0E1F2031425364758697A8B9CADBECF6B
+S3150060F740E0F102132435465768798A9BACBDCEDF5B
+S3150060F750F00112233445566778899AABBCCDDEEF4B
+S3150060F76000112233445566778899AABBCCDDEEFF3B
+S3150060F770102132435465768798A9BACBDCEDFE0F2B
+S3150060F7802031425364758697A8B9CADBECFD0E1F1B
+S3150060F79030415263748596A7B8C9DAEBFC0D1E2F0B
+S3150060F7A0405162738495A6B7C8D9EAFB0C1D2E3FFB
+S3150060F7B05061728394A5B6C7D8E9FA0B1C2D3E4FEB
+S3150060F7C060718293A4B5C6D7E8F90A1B2C3D4E5FDB
+S3150060F7D0708192A3B4C5D6E7F8091A2B3C4D5E6FCB
+S3150060F7E08091A2B3C4D5E6F708192A3B4C5D6E7FBB
+S3150060F7F090A1B2C3D4E5F60718293A4B5C6D7E8FAB
+S3150060F800A0B1C2D3E4F5061728394A5B6C7D8E9F9A
+S3150060F810B0C1D2E3F405162738495A6B7C8D9EAF8A
+S3150060F820C0D1E2F30415263748596A7B8C9DAEBF7A
+S3150060F830D0E1F2031425364758697A8B9CADBECF6A
+S3150060F840E0F102132435465768798A9BACBDCEDF5A
+S3150060F850F00112233445566778899AABBCCDDEEF4A
+S3150060F86000112233445566778899AABBCCDDEEFF3A
+S3150060F870102132435465768798A9BACBDCEDFE0F2A
+S3150060F8802031425364758697A8B9CADBECFD0E1F1A
+S3150060F89030415263748596A7B8C9DAEBFC0D1E2F0A
+S3150060F8A0405162738495A6B7C8D9EAFB0C1D2E3FFA
+S3150060F8B05061728394A5B6C7D8E9FA0B1C2D3E4FEA
+S3150060F8C060718293A4B5C6D7E8F90A1B2C3D4E5FDA
+S3150060F8D0708192A3B4C5D6E7F8091A2B3C4D5E6FCA
+S3150060F8E08091A2B3C4D5E6F708192A3B4C5D6E7FBA
+S3150060F8F090A1B2C3D4E5F60718293A4B5C6D7E8FAA
+S3150060F900A0B1C2D3E4F5061728394A5B6C7D8E9F99
+S3150060F910B0C1D2E3F405162738495A6B7C8D9EAF89
+S3150060F920C0D1E2F30415263748596A7B8C9DAEBF79
+S3150060F930D0E1F2031425364758697A8B9CADBECF69
+S3150060F940E0F102132435465768798A9BACBDCEDF59
+S3150060F950F00112233445566778899AABBCCDDEEF49
+S3150060F96000112233445566778899AABBCCDDEEFF39
+S3150060F970102132435465768798A9BACBDCEDFE0F29
+S3150060F9802031425364758697A8B9CADBECFD0E1F19
+S3150060F99030415263748596A7B8C9DAEBFC0D1E2F09
+S3150060F9A0405162738495A6B7C8D9EAFB0C1D2E3FF9
+S3150060F9B05061728394A5B6C7D8E9FA0B1C2D3E4FE9
+S3150060F9C060718293A4B5C6D7E8F90A1B2C3D4E5FD9
+S3150060F9D0708192A3B4C5D6E7F8091A2B3C4D5E6FC9
+S3150060F9E08091A2B3C4D5E6F708192A3B4C5D6E7FB9
+S3150060F9F090A1B2C3D4E5F60718293A4B5C6D7E8FA9
+S3150060FA00A0B1C2D3E4F5061728394A5B6C7D8E9F98
+S3150060FA10B0C1D2E3F405162738495A6B7C8D9EAF88
+S3150060FA20C0D1E2F30415263748596A7B8C9DAEBF78
+S3150060FA30D0E1F2031425364758697A8B9CADBECF68
+S3150060FA40E0F102132435465768798A9BACBDCEDF58
+S3150060FA50F00112233445566778899AABBCCDDEEF48
+S3150060FA6000112233445566778899AABBCCDDEEFF38
+S3150060FA70102132435465768798A9BACBDCEDFE0F28
+S3150060FA802031425364758697A8B9CADBECFD0E1F18
+S3150060FA9030415263748596A7B8C9DAEBFC0D1E2F08
+S3150060FAA0405162738495A6B7C8D9EAFB0C1D2E3FF8
+S3150060FAB05061728394A5B6C7D8E9FA0B1C2D3E4FE8
+S3150060FAC060718293A4B5C6D7E8F90A1B2C3D4E5FD8
+S3150060FAD0708192A3B4C5D6E7F8091A2B3C4D5E6FC8
+S3150060FAE08091A2B3C4D5E6F708192A3B4C5D6E7FB8
+S3150060FAF090A1B2C3D4E5F60718293A4B5C6D7E8FA8
+S3150060FB00A0B1C2D3E4F5061728394A5B6C7D8E9F97
+S3150060FB10B0C1D2E3F405162738495A6B7C8D9EAF87
+S3150060FB20C0D1E2F30415263748596A7B8C9DAEBF77
+S3150060FB30D0E1F2031425364758697A8B9CADBECF67
+S3150060FB40E0F102132435465768798A9BACBDCEDF57
+S3150060FB50F00112233445566778899AABBCCDDEEF47
+S3150060FB6000112233445566778899AABBCCDDEEFF37
+S3150060FB70102132435465768798A9BACBDCEDFE0F27
+S3150060FB802031425364758697A8B9CADBECFD0E1F17
+S3150060FB9030415263748596A7B8C9DAEBFC0D1E2F07
+S3150060FBA0405162738495A6B7C8D9EAFB0C1D2E3FF7
+S3150060FBB05061728394A5B6C7D8E9FA0B1C2D3E4FE7
+S3150060FBC060718293A4B5C6D7E8F90A1B2C3D4E5FD7
+S3150060FBD0708192A3B4C5D6E7F8091A2B3C4D5E6FC7
+S3150060FBE08091A2B3C4D5E6F708192A3B4C5D6E7FB7
+S3150060FBF090A1B2C3D4E5F60718293A4B5C6D7E8FA7
+S3150060FC00A0B1C2D3E4F5061728394A5B6C7D8E9F96
+S3150060FC10B0C1D2E3F405162738495A6B7C8D9EAF86
+S3150060FC20C0D1E2F30415263748596A7B8C9DAEBF76
+S3150060FC30D0E1F2031425364758697A8B9CADBECF66
+S3150060FC40E0F102132435465768798A9BACBDCEDF56
+S3150060FC50F00112233445566778899AABBCCDDEEF46
+S3150060FC6000112233445566778899AABBCCDDEEFF36
+S3150060FC70102132435465768798A9BACBDCEDFE0F26
+S3150060FC802031425364758697A8B9CADBECFD0E1F16
+S3150060FC9030415263748596A7B8C9DAEBFC0D1E2F06
+S3150060FCA0405162738495A6B7C8D9EAFB0C1D2E3FF6
+S3150060FCB05061728394A5B6C7D8E9FA0B1C2D3E4FE6
+S3150060FCC060718293A4B5C6D7E8F90A1B2C3D4E5FD6
+S3150060FCD0708192A3B4C5D6E7F8091A2B3C4D5E6FC6
+S3150060FCE08091A2B3C4D5E6F708192A3B4C5D6E7FB6
+S3150060FCF090A1B2C3D4E5F60718293A4B5C6D7E8FA6
+S3150060FD00A0B1C2D3E4F5061728394A5B6C7D8E9F95
+S3150060FD10B0C1D2E3F405162738495A6B7C8D9EAF85
+S3150060FD20C0D1E2F30415263748596A7B8C9DAEBF75
+S3150060FD30D0E1F2031425364758697A8B9CADBECF65
+S3150060FD40E0F102132435465768798A9BACBDCEDF55
+S3150060FD50F00112233445566778899AABBCCDDEEF45
+S3150060FD6000112233445566778899AABBCCDDEEFF35
+S3150060FD70102132435465768798A9BACBDCEDFE0F25
+S3150060FD802031425364758697A8B9CADBECFD0E1F15
+S3150060FD9030415263748596A7B8C9DAEBFC0D1E2F05
+S3150060FDA0405162738495A6B7C8D9EAFB0C1D2E3FF5
+S3150060FDB05061728394A5B6C7D8E9FA0B1C2D3E4FE5
+S3150060FDC060718293A4B5C6D7E8F90A1B2C3D4E5FD5
+S3150060FDD0708192A3B4C5D6E7F8091A2B3C4D5E6FC5
+S3150060FDE08091A2B3C4D5E6F708192A3B4C5D6E7FB5
+S3150060FDF090A1B2C3D4E5F60718293A4B5C6D7E8FA5
+S3150060FE00A0B1C2D3E4F5061728394A5B6C7D8E9F94
+S3150060FE10B0C1D2E3F405162738495A6B7C8D9EAF84
+S3150060FE20C0D1E2F30415263748596A7B8C9DAEBF74
+S3150060FE30D0E1F2031425364758697A8B9CADBECF64
+S3150060FE40E0F102132435465768798A9BACBDCEDF54
+S3150060FE50F00112233445566778899AABBCCDDEEF44
+S3150060FE6000112233445566778899AABBCCDDEEFF34
+S3150060FE70102132435465768798A9BACBDCEDFE0F24
+S3150060FE802031425364758697A8B9CADBECFD0E1F14
+S3150060FE9030415263748596A7B8C9DAEBFC0D1E2F04
+S3150060FEA0405162738495A6B7C8D9EAFB0C1D2E3FF4
+S3150060FEB05061728394A5B6C7D8E9FA0B1C2D3E4FE4
+S3150060FEC060718293A4B5C6D7E8F90A1B2C3D4E5FD4
+S3150060FED0708192A3B4C5D6E7F8091A2B3C4D5E6FC4
+S3150060FEE08091A2B3C4D5E6F708192A3B4C5D6E7FB4
+S3150060FEF090A1B2C3D4E5F60718293A4B5C6D7E8FA4
+S3150060FF00A0B1C2D3E4F5061728394A5B6C7D8E9F93
+S3150060FF10B0C1D2E3F405162738495A6B7C8D9EAF83
+S3150060FF20C0D1E2F30415263748596A7B8C9DAEBF73
+S3150060FF30D0E1F2031425364758697A8B9CADBECF63
+S3150060FF40E0F102132435465768798A9BACBDCEDF53
+S3150060FF50F00112233445566778899AABBCCDDEEF43
+S3150060FF6000112233445566778899AABBCCDDEEFF33
+S3150060FF70102132435465768798A9BACBDCEDFE0F23
+S3150060FF802031425364758697A8B9CADBECFD0E1F13
+S3150060FF9030415263748596A7B8C9DAEBFC0D1E2F03
+S3150060FFA0405162738495A6B7C8D9EAFB0C1D2E3FF3
+S3150060FFB05061728394A5B6C7D8E9FA0B1C2D3E4FE3
+S3150060FFC060718293A4B5C6D7E8F90A1B2C3D4E5FD3
+S3150060FFD0708192A3B4C5D6E7F8091A2B3C4D5E6FC3
+S3150060FFE08091A2B3C4D5E6F708192A3B4C5D6E7FB3
+S3150060FFF090A1B2C3D4E5F60718293A4B5C6D7E8FA3
+S31500610000A0B1C2D3E4F5061728394A5B6C7D8E9F91
+S31500610010B0C1D2E3F405162738495A6B7C8D9EAF81
+S31500610020C0D1E2F30415263748596A7B8C9DAEBF71
+S31500610030D0E1F2031425364758697A8B9CADBECF61
+S31500610040E0F102132435465768798A9BACBDCEDF51
+S31500610050F00112233445566778899AABBCCDDEEF41
+S3150061006000112233445566778899AABBCCDDEEFF31
+S31500610070102132435465768798A9BACBDCEDFE0F21
+S315006100802031425364758697A8B9CADBECFD0E1F11
+S3150061009030415263748596A7B8C9DAEBFC0D1E2F01
+S315006100A0405162738495A6B7C8D9EAFB0C1D2E3FF1
+S315006100B05061728394A5B6C7D8E9FA0B1C2D3E4FE1
+S315006100C060718293A4B5C6D7E8F90A1B2C3D4E5FD1
+S315006100D0708192A3B4C5D6E7F8091A2B3C4D5E6FC1
+S315006100E08091A2B3C4D5E6F708192A3B4C5D6E7FB1
+S315006100F090A1B2C3D4E5F60718293A4B5C6D7E8FA1
+S31500610100A0B1C2D3E4F5061728394A5B6C7D8E9F90
+S31500610110B0C1D2E3F405162738495A6B7C8D9EAF80
+S31500610120C0D1E2F30415263748596A7B8C9DAEBF70
+S31500610130D0E1F2031425364758697A8B9CADBECF60
+S31500610140E0F102132435465768798A9BACBDCEDF50
+S31500610150F00112233445566778899AABBCCDDEEF40
+S3150061016000112233445566778899AABBCCDDEEFF30
+S31500610170102132435465768798A9BACBDCEDFE0F20
+S315006101802031425364758697A8B9CADBECFD0E1F10
+S3150061019030415263748596A7B8C9DAEBFC0D1E2F00
+S315006101A0405162738495A6B7C8D9EAFB0C1D2E3FF0
+S315006101B05061728394A5B6C7D8E9FA0B1C2D3E4FE0
+S315006101C060718293A4B5C6D7E8F90A1B2C3D4E5FD0
+S315006101D0708192A3B4C5D6E7F8091A2B3C4D5E6FC0
+S315006101E08091A2B3C4D5E6F708192A3B4C5D6E7FB0
+S315006101F090A1B2C3D4E5F60718293A4B5C6D7E8FA0
+S31500610200A0B1C2D3E4F5061728394A5B6C7D8E9F8F
+S31500610210B0C1D2E3F405162738495A6B7C8D9EAF7F
+S31500610220C0D1E2F30415263748596A7B8C9DAEBF6F
+S31500610230D0E1F2031425364758697A8B9CADBECF5F
+S31500610240E0F102132435465768798A9BACBDCEDF4F
+S31500610250F00112233445566778899AABBCCDDEEF3F
+S3150061026000112233445566778899AABBCCDDEEFF2F
+S31500610270102132435465768798A9BACBDCEDFE0F1F
+S315006102802031425364758697A8B9CADBECFD0E1F0F
+S3150061029030415263748596A7B8C9DAEBFC0D1E2FFF
+S315006102A0405162738495A6B7C8D9EAFB0C1D2E3FEF
+S315006102B05061728394A5B6C7D8E9FA0B1C2D3E4FDF
+S315006102C060718293A4B5C6D7E8F90A1B2C3D4E5FCF
+S315006102D0708192A3B4C5D6E7F8091A2B3C4D5E6FBF
+S315006102E08091A2B3C4D5E6F708192A3B4C5D6E7FAF
+S315006102F090A1B2C3D4E5F60718293A4B5C6D7E8F9F
+S31500610300A0B1C2D3E4F5061728394A5B6C7D8E9F8E
+S31500610310B0C1D2E3F405162738495A6B7C8D9EAF7E
+S31500610320C0D1E2F30415263748596A7B8C9DAEBF6E
+S31500610330D0E1F2031425364758697A8B9CADBECF5E
+S31500610340E0F102132435465768798A9BACBDCEDF4E
+S31500610350F00112233445566778899AABBCCDDEEF3E
+S3150061036000112233445566778899AABBCCDDEEFF2E
+S31500610370102132435465768798A9BACBDCEDFE0F1E
+S315006103802031425364758697A8B9CADBECFD0E1F0E
+S3150061039030415263748596A7B8C9DAEBFC0D1E2FFE
+S315006103A0405162738495A6B7C8D9EAFB0C1D2E3FEE
+S315006103B05061728394A5B6C7D8E9FA0B1C2D3E4FDE
+S315006103C060718293A4B5C6D7E8F90A1B2C3D4E5FCE
+S315006103D0708192A3B4C5D6E7F8091A2B3C4D5E6FBE
+S315006103E08091A2B3C4D5E6F708192A3B4C5D6E7FAE
+S315006103F090A1B2C3D4E5F60718293A4B5C6D7E8F9E
+S31500610400A0B1C2D3E4F5061728394A5B6C7D8E9F8D
+S31500610410B0C1D2E3F405162738495A6B7C8D9EAF7D
+S31500610420C0D1E2F30415263748596A7B8C9DAEBF6D
+S31500610430D0E1F2031425364758697A8B9CADBECF5D
+S31500610440E0F102132435465768798A9BACBDCEDF4D
+S31500610450F00112233445566778899AABBCCDDEEF3D
+S3150061046000112233445566778899AABBCCDDEEFF2D
+S31500610470102132435465768798A9BACBDCEDFE0F1D
+S315006104802031425364758697A8B9CADBECFD0E1F0D
+S3150061049030415263748596A7B8C9DAEBFC0D1E2FFD
+S315006104A0405162738495A6B7C8D9EAFB0C1D2E3FED
+S315006104B05061728394A5B6C7D8E9FA0B1C2D3E4FDD
+S315006104C060718293A4B5C6D7E8F90A1B2C3D4E5FCD
+S315006104D0708192A3B4C5D6E7F8091A2B3C4D5E6FBD
+S315006104E08091A2B3C4D5E6F708192A3B4C5D6E7FAD
+S315006104F090A1B2C3D4E5F60718293A4B5C6D7E8F9D
+S31500610500A0B1C2D3E4F5061728394A5B6C7D8E9F8C
+S31500610510B0C1D2E3F405162738495A6B7C8D9EAF7C
+S31500610520C0D1E2F30415263748596A7B8C9DAEBF6C
+S31500610530D0E1F2031425364758697A8B9CADBECF5C
+S31500610540E0F102132435465768798A9BACBDCEDF4C
+S31500610550F00112233445566778899AABBCCDDEEF3C
+S3150061056000112233445566778899AABBCCDDEEFF2C
+S31500610570102132435465768798A9BACBDCEDFE0F1C
+S315006105802031425364758697A8B9CADBECFD0E1F0C
+S3150061059030415263748596A7B8C9DAEBFC0D1E2FFC
+S315006105A0405162738495A6B7C8D9EAFB0C1D2E3FEC
+S315006105B05061728394A5B6C7D8E9FA0B1C2D3E4FDC
+S315006105C060718293A4B5C6D7E8F90A1B2C3D4E5FCC
+S315006105D0708192A3B4C5D6E7F8091A2B3C4D5E6FBC
+S315006105E08091A2B3C4D5E6F708192A3B4C5D6E7FAC
+S315006105F090A1B2C3D4E5F60718293A4B5C6D7E8F9C
+S31500610600A0B1C2D3E4F5061728394A5B6C7D8E9F8B
+S31500610610B0C1D2E3F405162738495A6B7C8D9EAF7B
+S31500610620C0D1E2F30415263748596A7B8C9DAEBF6B
+S31500610630D0E1F2031425364758697A8B9CADBECF5B
+S31500610640E0F102132435465768798A9BACBDCEDF4B
+S31500610650F00112233445566778899AABBCCDDEEF3B
+S3150061066000112233445566778899AABBCCDDEEFF2B
+S31500610670102132435465768798A9BACBDCEDFE0F1B
+S315006106802031425364758697A8B9CADBECFD0E1F0B
+S3150061069030415263748596A7B8C9DAEBFC0D1E2FFB
+S315006106A0405162738495A6B7C8D9EAFB0C1D2E3FEB
+S315006106B05061728394A5B6C7D8E9FA0B1C2D3E4FDB
+S315006106C060718293A4B5C6D7E8F90A1B2C3D4E5FCB
+S315006106D0708192A3B4C5D6E7F8091A2B3C4D5E6FBB
+S315006106E08091A2B3C4D5E6F708192A3B4C5D6E7FAB
+S315006106F090A1B2C3D4E5F60718293A4B5C6D7E8F9B
+S31500610700A0B1C2D3E4F5061728394A5B6C7D8E9F8A
+S31500610710B0C1D2E3F405162738495A6B7C8D9EAF7A
+S31500610720C0D1E2F30415263748596A7B8C9DAEBF6A
+S31500610730D0E1F2031425364758697A8B9CADBECF5A
+S31500610740E0F102132435465768798A9BACBDCEDF4A
+S31500610750F00112233445566778899AABBCCDDEEF3A
+S3150061076000112233445566778899AABBCCDDEEFF2A
+S31500610770102132435465768798A9BACBDCEDFE0F1A
+S315006107802031425364758697A8B9CADBECFD0E1F0A
+S3150061079030415263748596A7B8C9DAEBFC0D1E2FFA
+S315006107A0405162738495A6B7C8D9EAFB0C1D2E3FEA
+S315006107B05061728394A5B6C7D8E9FA0B1C2D3E4FDA
+S315006107C060718293A4B5C6D7E8F90A1B2C3D4E5FCA
+S315006107D0708192A3B4C5D6E7F8091A2B3C4D5E6FBA
+S315006107E08091A2B3C4D5E6F708192A3B4C5D6E7FAA
+S315006107F090A1B2C3D4E5F60718293A4B5C6D7E8F9A
+S31500610800A0B1C2D3E4F5061728394A5B6C7D8E9F89
+S31500610810B0C1D2E3F405162738495A6B7C8D9EAF79
+S31500610820C0D1E2F30415263748596A7B8C9DAEBF69
+S31500610830D0E1F2031425364758697A8B9CADBECF59
+S31500610840E0F102132435465768798A9BACBDCEDF49
+S31500610850F00112233445566778899AABBCCDDEEF39
+S3150061086000112233445566778899AABBCCDDEEFF29
+S31500610870102132435465768798A9BACBDCEDFE0F19
+S315006108802031425364758697A8B9CADBECFD0E1F09
+S3150061089030415263748596A7B8C9DAEBFC0D1E2FF9
+S315006108A0405162738495A6B7C8D9EAFB0C1D2E3FE9
+S315006108B05061728394A5B6C7D8E9FA0B1C2D3E4FD9
+S315006108C060718293A4B5C6D7E8F90A1B2C3D4E5FC9
+S315006108D0708192A3B4C5D6E7F8091A2B3C4D5E6FB9
+S315006108E08091A2B3C4D5E6F708192A3B4C5D6E7FA9
+S315006108F090A1B2C3D4E5F60718293A4B5C6D7E8F99
+S31500610900A0B1C2D3E4F5061728394A5B6C7D8E9F88
+S31500610910B0C1D2E3F405162738495A6B7C8D9EAF78
+S31500610920C0D1E2F30415263748596A7B8C9DAEBF68
+S31500610930D0E1F2031425364758697A8B9CADBECF58
+S31500610940E0F102132435465768798A9BACBDCEDF48
+S31500610950F00112233445566778899AABBCCDDEEF38
+S3150061096000112233445566778899AABBCCDDEEFF28
+S31500610970102132435465768798A9BACBDCEDFE0F18
+S315006109802031425364758697A8B9CADBECFD0E1F08
+S3150061099030415263748596A7B8C9DAEBFC0D1E2FF8
+S315006109A0405162738495A6B7C8D9EAFB0C1D2E3FE8
+S315006109B05061728394A5B6C7D8E9FA0B1C2D3E4FD8
+S315006109C060718293A4B5C6D7E8F90A1B2C3D4E5FC8
+S315006109D0708192A3B4C5D6E7F8091A2B3C4D5E6FB8
+S315006109E08091A2B3C4D5E6F708192A3B4C5D6E7FA8
+S315006109F090A1B2C3D4E5F60718293A4B5C6D7E8F98
+S31500610A00A0B1C2D3E4F5061728394A5B6C7D8E9F87
+S31500610A10B0C1D2E3F405162738495A6B7C8D9EAF77
+S31500610A20C0D1E2F30415263748596A7B8C9DAEBF67
+S31500610A30D0E1F2031425364758697A8B9CADBECF57
+S31500610A40E0F102132435465768798A9BACBDCEDF47
+S31500610A50F00112233445566778899AABBCCDDEEF37
+S31500610A6000112233445566778899AABBCCDDEEFF27
+S31500610A70102132435465768798A9BACBDCEDFE0F17
+S31500610A802031425364758697A8B9CADBECFD0E1F07
+S31500610A9030415263748596A7B8C9DAEBFC0D1E2FF7
+S31500610AA0405162738495A6B7C8D9EAFB0C1D2E3FE7
+S31500610AB05061728394A5B6C7D8E9FA0B1C2D3E4FD7
+S31500610AC060718293A4B5C6D7E8F90A1B2C3D4E5FC7
+S31500610AD0708192A3B4C5D6E7F8091A2B3C4D5E6FB7
+S31500610AE08091A2B3C4D5E6F708192A3B4C5D6E7FA7
+S31500610AF090A1B2C3D4E5F60718293A4B5C6D7E8F97
+S31500610B00A0B1C2D3E4F5061728394A5B6C7D8E9F86
+S31500610B10B0C1D2E3F405162738495A6B7C8D9EAF76
+S31500610B20C0D1E2F30415263748596A7B8C9DAEBF66
+S31500610B30D0E1F2031425364758697A8B9CADBECF56
+S31500610B40E0F102132435465768798A9BACBDCEDF46
+S31500610B50F00112233445566778899AABBCCDDEEF36
+S31500610B6000112233445566778899AABBCCDDEEFF26
+S31500610B70102132435465768798A9BACBDCEDFE0F16
+S31500610B802031425364758697A8B9CADBECFD0E1F06
+S31500610B9030415263748596A7B8C9DAEBFC0D1E2FF6
+S31500610BA0405162738495A6B7C8D9EAFB0C1D2E3FE6
+S31500610BB05061728394A5B6C7D8E9FA0B1C2D3E4FD6
+S31500610BC060718293A4B5C6D7E8F90A1B2C3D4E5FC6
+S31500610BD0708192A3B4C5D6E7F8091A2B3C4D5E6FB6
+S31500610BE08091A2B3C4D5E6F708192A3B4C5D6E7FA6
+S31500610BF090A1B2C3D4E5F60718293A4B5C6D7E8F96
+S31500610C00A0B1C2D3E4F5061728394A5B6C7D8E9F85
+S31500610C10B0C1D2E3F405162738495A6B7C8D9EAF75
+S31500610C20C0D1E2F30415263748596A7B8C9DAEBF65
+S31500610C30D0E1F2031425364758697A8B9CADBECF55
+S31500610C40E0F102132435465768798A9BACBDCEDF45
+S31500610C50F00112233445566778899AABBCCDDEEF35
+S31500610C6000112233445566778899AABBCCDDEEFF25
+S31500610C70102132435465768798A9BACBDCEDFE0F15
+S31500610C802031425364758697A8B9CADBECFD0E1F05
+S31500610C9030415263748596A7B8C9DAEBFC0D1E2FF5
+S31500610CA0405162738495A6B7C8D9EAFB0C1D2E3FE5
+S31500610CB05061728394A5B6C7D8E9FA0B1C2D3E4FD5
+S31500610CC060718293A4B5C6D7E8F90A1B2C3D4E5FC5
+S31500610CD0708192A3B4C5D6E7F8091A2B3C4D5E6FB5
+S31500610CE08091A2B3C4D5E6F708192A3B4C5D6E7FA5
+S31500610CF090A1B2C3D4E5F60718293A4B5C6D7E8F95
+S31500610D00A0B1C2D3E4F5061728394A5B6C7D8E9F84
+S31500610D10B0C1D2E3F405162738495A6B7C8D9EAF74
+S31500610D20C0D1E2F30415263748596A7B8C9DAEBF64
+S31500610D30D0E1F2031425364758697A8B9CADBECF54
+S31500610D40E0F102132435465768798A9BACBDCEDF44
+S31500610D50F00112233445566778899AABBCCDDEEF34
+S31500610D6000112233445566778899AABBCCDDEEFF24
+S31500610D70102132435465768798A9BACBDCEDFE0F14
+S31500610D802031425364758697A8B9CADBECFD0E1F04
+S31500610D9030415263748596A7B8C9DAEBFC0D1E2FF4
+S31500610DA0405162738495A6B7C8D9EAFB0C1D2E3FE4
+S31500610DB05061728394A5B6C7D8E9FA0B1C2D3E4FD4
+S31500610DC060718293A4B5C6D7E8F90A1B2C3D4E5FC4
+S31500610DD0708192A3B4C5D6E7F8091A2B3C4D5E6FB4
+S31500610DE08091A2B3C4D5E6F708192A3B4C5D6E7FA4
+S31500610DF090A1B2C3D4E5F60718293A4B5C6D7E8F94
+S31500610E00A0B1C2D3E4F5061728394A5B6C7D8E9F83
+S31500610E10B0C1D2E3F405162738495A6B7C8D9EAF73
+S31500610E20C0D1E2F30415263748596A7B8C9DAEBF63
+S31500610E30D0E1F2031425364758697A8B9CADBECF53
+S31500610E40E0F102132435465768798A9BACBDCEDF43
+S31500610E50F00112233445566778899AABBCCDDEEF33
+S31500610E6000112233445566778899AABBCCDDEEFF23
+S31500610E70102132435465768798A9BACBDCEDFE0F13
+S31500610E802031425364758697A8B9CADBECFD0E1F03
+S31500610E9030415263748596A7B8C9DAEBFC0D1E2FF3
+S31500610EA0405162738495A6B7C8D9EAFB0C1D2E3FE3
+S31500610EB05061728394A5B6C7D8E9FA0B1C2D3E4FD3
+S31500610EC060718293A4B5C6D7E8F90A1B2C3D4E5FC3
+S31500610ED0708192A3B4C5D6E7F8091A2B3C4D5E6FB3
+S31500610EE08091A2B3C4D5E6F708192A3B4C5D6E7FA3
+S31500610EF090A1B2C3D4E5F60718293A4B5C6D7E8F93
+S31500610F00A0B1C2D3E4F5061728394A5B6C7D8E9F82
+S31500610F10B0C1D2E3F405162738495A6B7C8D9EAF72
+S31500610F20C0D1E2F30415263748596A7B8C9DAEBF62
+S31500610F30D0E1F2031425364758697A8B9CADBECF52
+S31500610F40E0F102132435465768798A9BACBDCEDF42
+S31500610F50F00112233445566778899AABBCCDDEEF32
+S31500610F6000112233445566778899AABBCCDDEEFF22
+S31500610F70102132435465768798A9BACBDCEDFE0F12
+S31500610F802031425364758697A8B9CADBECFD0E1F02
+S31500610F9030415263748596A7B8C9DAEBFC0D1E2FF2
+S31500610FA0405162738495A6B7C8D9EAFB0C1D2E3FE2
+S31500610FB05061728394A5B6C7D8E9FA0B1C2D3E4FD2
+S31500610FC060718293A4B5C6D7E8F90A1B2C3D4E5FC2
+S31500610FD0708192A3B4C5D6E7F8091A2B3C4D5E6FB2
+S31500610FE08091A2B3C4D5E6F708192A3B4C5D6E7FA2
+S31500610FF090A1B2C3D4E5F60718293A4B5C6D7E8F92
+S31500611000A0B1C2D3E4F5061728394A5B6C7D8E9F81
+S31500611010B0C1D2E3F405162738495A6B7C8D9EAF71
+S31500611020C0D1E2F30415263748596A7B8C9DAEBF61
+S31500611030D0E1F2031425364758697A8B9CADBECF51
+S31500611040E0F102132435465768798A9BACBDCEDF41
+S31500611050F00112233445566778899AABBCCDDEEF31
+S306006110600028
diff --git a/memory/org.eclipse.cdt.debug.core.memory.tests/data/memory_10001.txt b/memory/org.eclipse.cdt.debug.core.memory.tests/data/memory_10001.txt
new file mode 100644
index 00000000000..729dddcc466
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.core.memory.tests/data/memory_10001.txt
@@ -0,0 +1,2049 @@
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 10 21 32 43 54 65 76 87 98 A9 BA CB DC ED FE 0F
+20 31 42 53 64 75 86 97 A8 B9 CA DB EC FD 0E 1F 30 41 52 63 74 85 96 A7 B8 C9 DA EB FC 0D 1E 2F
+40 51 62 73 84 95 A6 B7 C8 D9 EA FB 0C 1D 2E 3F 50 61 72 83 94 A5 B6 C7 D8 E9 FA 0B 1C 2D 3E 4F
+60 71 82 93 A4 B5 C6 D7 E8 F9 0A 1B 2C 3D 4E 5F 70 81 92 A3 B4 C5 D6 E7 F8 09 1A 2B 3C 4D 5E 6F
+80 91 A2 B3 C4 D5 E6 F7 08 19 2A 3B 4C 5D 6E 7F 90 A1 B2 C3 D4 E5 F6 07 18 29 3A 4B 5C 6D 7E 8F
+A0 B1 C2 D3 E4 F5 06 17 28 39 4A 5B 6C 7D 8E 9F B0 C1 D2 E3 F4 05 16 27 38 49 5A 6B 7C 8D 9E AF
+C0 D1 E2 F3 04 15 26 37 48 59 6A 7B 8C 9D AE BF D0 E1 F2 03 14 25 36 47 58 69 7A 8B 9C AD BE CF
+E0 F1 02 13 24 35 46 57 68 79 8A 9B AC BD CE DF F0 01 12 23 34 45 56 67 78 89 9A AB BC CD DE EF
+00
diff --git a/memory/org.eclipse.cdt.debug.core.memory.tests/src/org/eclipse/cdt/debug/core/memory/tests/AutomatedIntegrationSuite.java b/memory/org.eclipse.cdt.debug.core.memory.tests/src/org/eclipse/cdt/debug/core/memory/tests/AutomatedIntegrationSuite.java
new file mode 100644
index 00000000000..e131e974778
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.core.memory.tests/src/org/eclipse/cdt/debug/core/memory/tests/AutomatedIntegrationSuite.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2020 ArSysOp and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov (ArSysOp) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.debug.core.memory.tests;
+
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+
+import junit.framework.TestSuite;
+
+@RunWith(Suite.class)
+@Suite.SuiteClasses({ PlainTextTransportTest.class, RAWBinaryTransportTest.class, SRecordTransportTest.class })
+public class AutomatedIntegrationSuite extends TestSuite {
+
+}
diff --git a/memory/org.eclipse.cdt.debug.core.memory.tests/src/org/eclipse/cdt/debug/core/memory/tests/CollectScrolls.java b/memory/org.eclipse.cdt.debug.core.memory.tests/src/org/eclipse/cdt/debug/core/memory/tests/CollectScrolls.java
new file mode 100644
index 00000000000..ed156c8957f
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.core.memory.tests/src/org/eclipse/cdt/debug/core/memory/tests/CollectScrolls.java
@@ -0,0 +1,39 @@
+/*******************************************************************************
+ * Copyright (c) 2020 ArSysOp and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov (ArSysOp) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.debug.core.memory.tests;
+
+import java.math.BigInteger;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.cdt.debug.core.memory.transport.IScrollMemory;
+
+final class CollectScrolls implements IScrollMemory {
+
+ private final List<BigInteger> collected;
+
+ CollectScrolls() {
+ collected = new ArrayList<>();
+ }
+
+ @Override
+ public void accept(BigInteger t) {
+ collected.add(t);
+ }
+
+ List<BigInteger> collected() {
+ return collected;
+ }
+
+}
diff --git a/memory/org.eclipse.cdt.debug.core.memory.tests/src/org/eclipse/cdt/debug/core/memory/tests/EmulateMemory.java b/memory/org.eclipse.cdt.debug.core.memory.tests/src/org/eclipse/cdt/debug/core/memory/tests/EmulateMemory.java
new file mode 100644
index 00000000000..a68653626fe
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.core.memory.tests/src/org/eclipse/cdt/debug/core/memory/tests/EmulateMemory.java
@@ -0,0 +1,86 @@
+/*******************************************************************************
+ * Copyright (c) 2020 ArSysOp and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov (ArSysOp) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.debug.core.memory.tests;
+
+import java.math.BigInteger;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+import org.eclipse.cdt.debug.core.memory.transport.IReadMemory;
+import org.eclipse.cdt.debug.core.memory.transport.WriteMemory;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.debug.core.DebugException;
+import org.eclipse.debug.core.model.MemoryByte;
+import org.eclipse.osgi.util.NLS;
+
+/**
+ * Simple emulator of memory block to control the memory transport without real device
+ *
+ */
+final class EmulateMemory implements WriteMemory, IReadMemory {
+
+ private final BigInteger addressable;
+ private final BigInteger base;
+ //FIXME: needs improvements, assumes identical pattern during write and read
+ private final Map<BigInteger, byte[]> storage;
+
+ EmulateMemory(BigInteger addressable, BigInteger base) {
+ this.addressable = addressable;
+ this.base = base;
+ this.storage = new LinkedHashMap<>();
+ }
+
+ @Override
+ public MemoryByte[] from(BigInteger offset, long units) throws DebugException {
+ int length = (int) (units * addressable.longValue());
+ MemoryByte[] result = new MemoryByte[length];
+ int i = 0;
+ while (i < length) {
+ byte[] raw = storage.getOrDefault(offset.add(BigInteger.valueOf(i)), new byte[0]);
+ int obtained = raw.length;
+ if (obtained > 0) {
+ for (int j = 0; j < obtained; j++) {
+ result[i + j] = new MemoryByte(raw[j]);
+ }
+ i = i + obtained;
+ } else {
+ //unreachable with current test data
+ MemoryByte unavailable = new MemoryByte();
+ unavailable.setReadable(false);
+ for (int j = i; j < length; j++) {
+ result[i + j] = unavailable;
+ }
+ i = length;
+ }
+ }
+ return result;
+ }
+
+ @Override
+ public void to(BigInteger offset, byte[] data) throws DebugException {
+ storage.put(base.add(offset), data);
+ }
+
+ @Override
+ public void flush() throws DebugException {
+ //do nothing
+ }
+
+ private DebugException failed(BigInteger offset) {
+ return new DebugException(
+ new Status(IStatus.ERROR, getClass().getName(), NLS.bind("Invalid memory access at {0}", offset))); //$NON-NLS-1$
+ }
+
+}
diff --git a/memory/org.eclipse.cdt.debug.core.memory.tests/src/org/eclipse/cdt/debug/core/memory/tests/InputFile.java b/memory/org.eclipse.cdt.debug.core.memory.tests/src/org/eclipse/cdt/debug/core/memory/tests/InputFile.java
new file mode 100644
index 00000000000..0cc574abfd4
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.core.memory.tests/src/org/eclipse/cdt/debug/core/memory/tests/InputFile.java
@@ -0,0 +1,34 @@
+/*******************************************************************************
+ * Copyright (c) 2020 ArSysOp and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov (ArSysOp) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.debug.core.memory.tests;
+
+import java.io.File;
+import java.util.function.Supplier;
+
+final class InputFile implements Supplier<File> {
+
+ private final String base;
+ private final String relative;
+
+ public InputFile(String relative) {
+ this.relative = relative;
+ this.base = System.getProperty("user.dir") + File.separator + "data"; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ @Override
+ public File get() {
+ return new File(base + File.separator + relative);
+ }
+
+}
diff --git a/memory/org.eclipse.cdt.debug.core.memory.tests/src/org/eclipse/cdt/debug/core/memory/tests/OutputFile.java b/memory/org.eclipse.cdt.debug.core.memory.tests/src/org/eclipse/cdt/debug/core/memory/tests/OutputFile.java
new file mode 100644
index 00000000000..d3c4d414ebd
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.core.memory.tests/src/org/eclipse/cdt/debug/core/memory/tests/OutputFile.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2020 ArSysOp and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov (ArSysOp) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.debug.core.memory.tests;
+
+import java.io.File;
+import java.util.function.Supplier;
+
+final class OutputFile implements Supplier<File> {
+
+ private final String base;
+ private final String relative;
+
+ public OutputFile(String relative) {
+ this.relative = relative;
+ this.base = System.getProperty("project.build.directory", //$NON-NLS-1$
+ System.getProperty("user.dir") + File.separator + "target"); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ @Override
+ public File get() {
+ return new File(base + File.separator + relative);
+ }
+
+}
diff --git a/memory/org.eclipse.cdt.debug.core.memory.tests/src/org/eclipse/cdt/debug/core/memory/tests/PlainTextTransportTest.java b/memory/org.eclipse.cdt.debug.core.memory.tests/src/org/eclipse/cdt/debug/core/memory/tests/PlainTextTransportTest.java
new file mode 100644
index 00000000000..534ec7c505d
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.core.memory.tests/src/org/eclipse/cdt/debug/core/memory/tests/PlainTextTransportTest.java
@@ -0,0 +1,78 @@
+/*******************************************************************************
+ * Copyright (c) 2020 ArSysOp and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov (ArSysOp) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.debug.core.memory.tests;
+
+import java.io.File;
+import java.io.IOException;
+import java.math.BigInteger;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.Arrays;
+import java.util.List;
+
+import org.eclipse.cdt.debug.core.memory.transport.ExportRequest;
+import org.eclipse.cdt.debug.core.memory.transport.ImportRequest;
+import org.eclipse.cdt.debug.internal.core.memory.transport.PlainTextExport;
+import org.eclipse.cdt.debug.internal.core.memory.transport.PlainTextImport;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.junit.Assert;
+import org.junit.Test;
+
+public final class PlainTextTransportTest {
+
+ private final BigInteger base;
+ private final BigInteger start;
+
+ public PlainTextTransportTest() {
+ base = new BigInteger("1000"); //$NON-NLS-1$
+ start = new BigInteger("0"); //$NON-NLS-1$
+ }
+
+ @Test
+ public void transport0ffff() throws CoreException, IOException {
+ BigInteger end = start.add(new BigInteger("0ffff", 16)); //$NON-NLS-1$
+ transport("memory_0ffff.txt", end); //$NON-NLS-1$
+ }
+
+ @Test
+ public void transport10000() throws CoreException, IOException {
+ BigInteger end = start.add(new BigInteger("10000", 16)); //$NON-NLS-1$
+ transport("memory_10000.txt", end); //$NON-NLS-1$
+ }
+
+ @Test
+ public void transport10001() throws CoreException, IOException {
+ BigInteger end = start.add(new BigInteger("10001", 16)); //$NON-NLS-1$
+ transport("memory_10001.txt", end); //$NON-NLS-1$
+ }
+
+ private void transport(String name, BigInteger end) throws CoreException, IOException {
+ EmulateMemory memory = new EmulateMemory(BigInteger.valueOf(1), base);
+ CollectScrolls scroll = new CollectScrolls();
+ File input = new InputFile(name).get();
+ new PlainTextImport(input, new ImportRequest(base, start, memory), scroll)//
+ .run(new NullProgressMonitor());
+ File output = new OutputFile(name).get();
+ new PlainTextExport(output, new ExportRequest(start, end, BigInteger.ONE, memory))//
+ .run(new NullProgressMonitor());
+ Assert.assertEquals(read(input), read(output));
+ Assert.assertEquals(Arrays.asList(start), scroll.collected());
+ }
+
+ private List<String> read(File file) throws IOException {
+ return Files.readAllLines(Paths.get(file.toString()));
+ }
+
+}
diff --git a/memory/org.eclipse.cdt.debug.core.memory.tests/src/org/eclipse/cdt/debug/core/memory/tests/RAWBinaryTransportTest.java b/memory/org.eclipse.cdt.debug.core.memory.tests/src/org/eclipse/cdt/debug/core/memory/tests/RAWBinaryTransportTest.java
new file mode 100644
index 00000000000..1e96226753a
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.core.memory.tests/src/org/eclipse/cdt/debug/core/memory/tests/RAWBinaryTransportTest.java
@@ -0,0 +1,77 @@
+/*******************************************************************************
+ * Copyright (c) 2020 ArSysOp and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov (ArSysOp) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.debug.core.memory.tests;
+
+import java.io.File;
+import java.io.IOException;
+import java.math.BigInteger;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.Arrays;
+
+import org.eclipse.cdt.debug.core.memory.transport.ExportRequest;
+import org.eclipse.cdt.debug.core.memory.transport.ImportRequest;
+import org.eclipse.cdt.debug.internal.core.memory.transport.RAWBinaryExport;
+import org.eclipse.cdt.debug.internal.core.memory.transport.RAWBinaryImport;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.junit.Assert;
+import org.junit.Test;
+
+public final class RAWBinaryTransportTest {
+
+ private final BigInteger base;
+ private final BigInteger start;
+
+ public RAWBinaryTransportTest() {
+ base = new BigInteger("1000"); //$NON-NLS-1$
+ start = new BigInteger("0"); //$NON-NLS-1$
+ }
+
+ @Test
+ public void transport0ffff() throws CoreException, IOException {
+ BigInteger end = start.add(new BigInteger("0ffff", 16)); //$NON-NLS-1$
+ transport("memory_0ffff.bin", end); //$NON-NLS-1$
+ }
+
+ @Test
+ public void transport10000() throws CoreException, IOException {
+ BigInteger end = start.add(new BigInteger("10000", 16)); //$NON-NLS-1$
+ transport("memory_10000.bin", end); //$NON-NLS-1$
+ }
+
+ @Test
+ public void transport10001() throws CoreException, IOException {
+ BigInteger end = start.add(new BigInteger("10001", 16)); //$NON-NLS-1$
+ transport("memory_10001.bin", end); //$NON-NLS-1$
+ }
+
+ private void transport(String name, BigInteger end) throws CoreException, IOException {
+ EmulateMemory memory = new EmulateMemory(BigInteger.valueOf(1), base);
+ CollectScrolls scroll = new CollectScrolls();
+ File input = new InputFile(name).get();
+ new RAWBinaryImport(input, new ImportRequest(base, start, memory), scroll)//
+ .run(new NullProgressMonitor());
+ File output = new OutputFile(name).get();
+ new RAWBinaryExport(output, new ExportRequest(start, end, BigInteger.ONE, memory))//
+ .run(new NullProgressMonitor());
+ Assert.assertArrayEquals(read(input), read(output));
+ Assert.assertEquals(Arrays.asList(start), scroll.collected());
+ }
+
+ private byte[] read(File file) throws IOException {
+ return Files.readAllBytes(Paths.get(file.toString()));
+ }
+
+}
diff --git a/memory/org.eclipse.cdt.debug.core.memory.tests/src/org/eclipse/cdt/debug/core/memory/tests/SRecordTransportTest.java b/memory/org.eclipse.cdt.debug.core.memory.tests/src/org/eclipse/cdt/debug/core/memory/tests/SRecordTransportTest.java
new file mode 100644
index 00000000000..51a0b112120
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.core.memory.tests/src/org/eclipse/cdt/debug/core/memory/tests/SRecordTransportTest.java
@@ -0,0 +1,87 @@
+/*******************************************************************************
+ * Copyright (c) 2020 ArSysOp and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov (ArSysOp) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.debug.core.memory.tests;
+
+import java.io.File;
+import java.io.IOException;
+import java.math.BigInteger;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.Arrays;
+import java.util.List;
+
+import org.eclipse.cdt.debug.core.memory.transport.ExportRequest;
+import org.eclipse.cdt.debug.core.memory.transport.ImportRequest;
+import org.eclipse.cdt.debug.internal.core.memory.transport.SRecordExport;
+import org.eclipse.cdt.debug.internal.core.memory.transport.SRecordImport;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.junit.Assert;
+import org.junit.Test;
+
+public final class SRecordTransportTest {
+
+ private final BigInteger base;
+ private final BigInteger start;
+
+ public SRecordTransportTest() {
+ base = new BigInteger("1000"); //$NON-NLS-1$
+ start = new BigInteger("00601060", 16); //$NON-NLS-1$
+ }
+
+ @Test
+ public void transport0ffff() throws CoreException, IOException {
+ BigInteger end = start.add(new BigInteger("0ffff", 16)); //$NON-NLS-1$
+ transport("memory_0ffff.srec", end); //$NON-NLS-1$
+ }
+
+ @Test
+ public void transport10000() throws CoreException, IOException {
+ BigInteger end = start.add(new BigInteger("10000", 16)); //$NON-NLS-1$
+ transport("memory_10000.srec", end); //$NON-NLS-1$
+ }
+
+ @Test
+ public void transport10001() throws CoreException, IOException {
+ BigInteger end = start.add(new BigInteger("10001", 16)); //$NON-NLS-1$
+ transport("memory_10001.srec", end); //$NON-NLS-1$
+ }
+
+ private void transport(String name, BigInteger end) throws CoreException, IOException {
+ EmulateMemory memory = new EmulateMemory(BigInteger.valueOf(1), base);
+ CollectScrolls scroll = new CollectScrolls();
+ File input = new InputFile(name).get();
+ File output = new OutputFile(name).get();
+ new SRecordImport(input, new ImportRequest(base, start, memory), scroll, true)//
+ .run(new NullProgressMonitor());
+ new SRecordExport(output, new ExportRequest(start, end, BigInteger.ONE, memory))//
+ .run(new NullProgressMonitor());
+ Assert.assertArrayEquals(read(input), read(output));
+ Assert.assertEquals(Arrays.asList(start), scroll.collected());
+
+ scroll = new CollectScrolls();
+ new SRecordImport(input, new ImportRequest(base, start, memory), scroll, false)//
+ .run(new NullProgressMonitor());
+ new SRecordExport(output, new ExportRequest(start, end, BigInteger.ONE, memory))//
+ .run(new NullProgressMonitor());
+ Assert.assertArrayEquals(read(input), read(output));
+ Assert.assertEquals(Arrays.asList(start), scroll.collected());
+ }
+
+ private String[] read(File file) throws IOException {
+ List<String> lines = Files.readAllLines(Paths.get(file.toString()));
+ return lines.toArray(new String[lines.size()]);
+ }
+
+}
diff --git a/memory/org.eclipse.cdt.debug.core.memory/.classpath b/memory/org.eclipse.cdt.debug.core.memory/.classpath
new file mode 100644
index 00000000000..e801ebfb468
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.core.memory/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/memory/org.eclipse.cdt.debug.core.memory/.project b/memory/org.eclipse.cdt.debug.core.memory/.project
new file mode 100644
index 00000000000..5a85d2dea5d
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.core.memory/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.cdt.debug.core.memory</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+ </natures>
+</projectDescription>
diff --git a/memory/org.eclipse.cdt.debug.core.memory/.settings/org.eclipse.core.resources.prefs b/memory/org.eclipse.cdt.debug.core.memory/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.core.memory/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/memory/org.eclipse.cdt.debug.core.memory/.settings/org.eclipse.jdt.core.prefs b/memory/org.eclipse.cdt.debug.core.memory/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..e3a8104f9ca
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.core.memory/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/.settings/org.eclipse.jdt.launching.prefs b/memory/org.eclipse.cdt.debug.core.memory/.settings/org.eclipse.jdt.launching.prefs
index f8a131b56e0..f8a131b56e0 100644
--- a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/.settings/org.eclipse.jdt.launching.prefs
+++ b/memory/org.eclipse.cdt.debug.core.memory/.settings/org.eclipse.jdt.launching.prefs
diff --git a/memory/org.eclipse.cdt.debug.core.memory/.settings/org.eclipse.jdt.ui.prefs b/memory/org.eclipse.cdt.debug.core.memory/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.core.memory/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/memory/org.eclipse.cdt.debug.core.memory/.settings/org.eclipse.pde.api.tools.prefs b/memory/org.eclipse.cdt.debug.core.memory/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 00000000000..ec9fbf321d0
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.core.memory/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,184 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITH_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_FIELD=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERCLASS_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_CHANGED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENTS=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETERS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Error
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Warning
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+MISSING_EE_DESCRIPTIONS=Warning
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=false
+changed_execution_env=Error
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+incompatible_api_component_version_report_major_without_breaking_change=Warning
+incompatible_api_component_version_report_minor_without_api_change=Warning
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/memory/org.eclipse.cdt.debug.core.memory/.settings/org.eclipse.pde.prefs b/memory/org.eclipse.cdt.debug.core.memory/.settings/org.eclipse.pde.prefs
new file mode 100644
index 00000000000..d2dc703ba9e
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.core.memory/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,35 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=2
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=2
+compilers.p.missing-version-export-package=2
+compilers.p.missing-version-import-package=2
+compilers.p.missing-version-require-bundle=2
+compilers.p.no-required-att=0
+compilers.p.no.automatic.module=1
+compilers.p.not-externalized-att=1
+compilers.p.service.component.without.lazyactivation=1
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/memory/org.eclipse.cdt.debug.core.memory/META-INF/MANIFEST.MF b/memory/org.eclipse.cdt.debug.core.memory/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..be3b43ed991
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.core.memory/META-INF/MANIFEST.MF
@@ -0,0 +1,13 @@
+Manifest-Version: 1.0
+Automatic-Module-Name: org.eclipse.cdt.debug.core.memory
+Bundle-ManifestVersion: 2
+Bundle-SymbolicName: org.eclipse.cdt.debug.core.memory
+Bundle-Version: 0.1.300.qualifier
+Bundle-Name: %Bundle-Name
+Bundle-Vendor: %Bundle-Vendor
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Require-Bundle: org.eclipse.core.runtime;bundle-version="3.17.0",
+ org.eclipse.debug.core;bundle-version="3.15.0",
+ org.eclipse.equinox.common;bundle-version="3.11.0"
+Export-Package: org.eclipse.cdt.debug.core.memory.transport;x-friends:="org.eclipse.cdt.debug.ui.memory.transport",
+ org.eclipse.cdt.debug.internal.core.memory.transport;x-friends:="org.eclipse.cdt.debug.ui.memory.transport"
diff --git a/memory/org.eclipse.cdt.debug.core.memory/OSGI-INF/l10n/bundle.properties b/memory/org.eclipse.cdt.debug.core.memory/OSGI-INF/l10n/bundle.properties
new file mode 100644
index 00000000000..983bd35c497
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.core.memory/OSGI-INF/l10n/bundle.properties
@@ -0,0 +1,17 @@
+#Properties file for org.eclipse.cdt.debug.core.memory
+###############################################################################
+# Copyright (c) 2020 ArSysOp and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Alexander Fedorov (ArSysOp) - initial API and implementation
+###############################################################################
+
+Bundle-Name = Debug Core Memory
+Bundle-Vendor = Eclipse CDT
diff --git a/memory/org.eclipse.cdt.debug.core.memory/about.html b/memory/org.eclipse.cdt.debug.core.memory/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.core.memory/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/memory/org.eclipse.cdt.debug.core.memory/build.properties b/memory/org.eclipse.cdt.debug.core.memory/build.properties
new file mode 100644
index 00000000000..52ea2e6a704
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.core.memory/build.properties
@@ -0,0 +1,21 @@
+###############################################################################
+# Copyright (c) 2020 ArSysOp and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Alexander Fedorov (ArSysOp) - initial API and implementation
+###############################################################################
+
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ OSGI-INF/,\
+ about.html
+src.includes = about.html
diff --git a/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/core/memory/transport/ExportRequest.java b/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/core/memory/transport/ExportRequest.java
new file mode 100644
index 00000000000..de773a25d78
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/core/memory/transport/ExportRequest.java
@@ -0,0 +1,70 @@
+/*******************************************************************************
+ * Copyright (c) 2020 ArSysOp and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov (ArSysOp) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.debug.core.memory.transport;
+
+import java.math.BigInteger;
+
+/**
+ *
+ * Aggregates memory export configuration
+ *
+ * @since 0.1
+ *
+ */
+public final class ExportRequest {
+
+ private final BigInteger start;
+ private final BigInteger end;
+ private final BigInteger addressable;
+ private final IReadMemory read;
+
+ public ExportRequest(BigInteger start, BigInteger end, BigInteger addressable, IReadMemory read) {
+ this.start = start;
+ this.end = end;
+ this.addressable = addressable;
+ this.read = read;
+ }
+
+ /**
+ *
+ * @return starting offset
+ */
+ public BigInteger start() {
+ return start;
+ }
+
+ /**
+ *
+ * @return ending offset
+ */
+ public BigInteger end() {
+ return end;
+ }
+
+ /**
+ *
+ * @return addressable size
+ */
+ public BigInteger addressable() {
+ return addressable;
+ }
+
+ /**
+ *
+ * @return reader
+ */
+ public IReadMemory read() {
+ return read;
+ }
+}
diff --git a/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/core/memory/transport/FileExport.java b/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/core/memory/transport/FileExport.java
new file mode 100644
index 00000000000..72fd7206568
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/core/memory/transport/FileExport.java
@@ -0,0 +1,129 @@
+/*******************************************************************************
+ * Copyright (c) 2020 ArSysOp and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov (ArSysOp) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.debug.core.memory.transport;
+
+import java.io.BufferedOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.math.BigInteger;
+
+import org.eclipse.cdt.debug.internal.core.memory.transport.Messages;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.ICoreRunnable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.debug.core.DebugException;
+import org.osgi.framework.FrameworkUtil;
+
+/**
+ * Exports memory information to a given file
+ *
+ * @since 0.1
+ */
+public abstract class FileExport implements ICoreRunnable {
+
+ protected final BigInteger start;
+ protected final BigInteger end;
+ protected final BigInteger addressable;
+ protected final IReadMemory read;
+
+ private final File file;
+
+ protected FileExport(File input, ExportRequest request) {
+ this.file = input;
+ this.start = request.start();
+ this.end = request.end();
+ this.addressable = request.addressable();
+ this.read = request.read();
+ }
+
+ @Override
+ public void run(IProgressMonitor monitor) throws CoreException {
+ try (OutputStream output = output(file)) {
+ BigInteger jobs = end.subtract(start).divide(chunkSize());
+ BigInteger factor = BigInteger.ONE;
+ if (jobs.compareTo(BigInteger.valueOf(0x7FFFFFFF)) > 0) {
+ factor = jobs.divide(BigInteger.valueOf(0x7FFFFFFF));
+ jobs = jobs.divide(factor);
+ }
+ monitor.beginTask(Messages.FileExport_task_transferring, jobs.intValue());
+ transfer(output, factor, monitor);
+ output.flush();
+ } catch (IOException ex) {
+ requestFailed(Messages.FileExport_e_write_file, ex);
+ } catch (DebugException ex) {
+ requestFailed(Messages.FileExport_e_read_target, ex);
+ } catch (Exception ex) {
+ internalError(Messages.FileExport_e_export_memory, ex);
+ } finally {
+ monitor.done();
+ }
+ }
+
+ /**
+ * Creates the output stream for the given file
+ *
+ * @param file to export to
+ * @return writer instance
+ * @throws IOException
+ */
+ protected OutputStream output(File file) throws IOException {
+ file.getParentFile().mkdirs();
+ return new BufferedOutputStream(new FileOutputStream(file));
+ }
+
+ /**
+ * Determines the data chunk to use for export
+ *
+ * @return the size of data chunk
+ */
+ protected abstract BigInteger chunkSize();
+
+ protected abstract void transfer(OutputStream output, BigInteger factor, IProgressMonitor monitor)
+ throws IOException, DebugException;
+
+ protected String transferring(BigInteger length, BigInteger address) {
+ return String.format(Messages.FileExport_sub_transferring, length.toString(10), address.toString(16));
+ }
+
+ protected void requestFailed(String message, Throwable exception) throws DebugException {
+ failed(DebugException.REQUEST_FAILED, message, exception);
+ }
+
+ protected void internalError(String message, Throwable exception) throws DebugException {
+ failed(DebugException.INTERNAL_ERROR, message, exception);
+ }
+
+ protected void failed(int code, String message, Throwable exception) throws DebugException {
+ Status status = new Status(//
+ IStatus.ERROR, //
+ getClass(), //
+ code, //
+ message, //
+ exception);
+ failed(new DebugException(status));
+ }
+
+ protected void failed(DebugException exception) throws DebugException {
+ if (Platform.isRunning()) {
+ Platform.getLog(FrameworkUtil.getBundle(getClass())).log(exception.getStatus());
+ }
+ throw exception;
+ }
+
+}
diff --git a/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/core/memory/transport/FileImport.java b/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/core/memory/transport/FileImport.java
new file mode 100644
index 00000000000..b7cd3ea25a8
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/core/memory/transport/FileImport.java
@@ -0,0 +1,114 @@
+/*******************************************************************************
+ * Copyright (c) 2020 ArSysOp and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov (ArSysOp) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.debug.core.memory.transport;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.math.BigInteger;
+
+import org.eclipse.cdt.debug.internal.core.memory.transport.Messages;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.ICoreRunnable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.debug.core.DebugException;
+import org.osgi.framework.FrameworkUtil;
+
+/**
+ * Imports memory information from a given file
+ *
+ * @since 0.1
+ */
+public abstract class FileImport<I extends AutoCloseable> implements ICoreRunnable {
+
+ protected final BigInteger base;
+ protected final BigInteger start;
+ protected final WriteMemory write;
+ protected final IScrollMemory scroll;
+
+ private final File file;
+
+ protected FileImport(File input, ImportRequest request, IScrollMemory scroll) {
+ this.file = input;
+ this.base = request.base();
+ this.start = request.start();
+ this.write = request.write();
+ this.scroll = scroll;
+ }
+
+ @Override
+ public void run(IProgressMonitor monitor) throws CoreException {
+ try (I reader = input(file)) {
+ BigInteger jobs = BigInteger.valueOf(file.length());
+ BigInteger factor = BigInteger.ONE;
+ if (jobs.compareTo(BigInteger.valueOf(0x7FFFFFFF)) > 0) {
+ factor = jobs.divide(BigInteger.valueOf(0x7FFFFFFF));
+ jobs = jobs.divide(factor);
+ }
+ monitor.beginTask(Messages.FileImport_task_transferring, jobs.intValue());
+ transfer(reader, factor, monitor);
+ if (!monitor.isCanceled()) {
+ write.flush();
+ }
+ } catch (IOException ex) {
+ requestFailed(Messages.FileImport_e_read_file, ex);
+ } catch (DebugException ex) {
+ requestFailed(Messages.FileImport_e_write_target, ex);
+ } catch (Exception ex) {
+ internalError(Messages.FileImport_e_import_file, ex);
+ } finally {
+ monitor.done();
+ }
+ }
+
+ /**
+ * Creates the reader for the given file
+ *
+ * @param file to import from
+ * @return reader instance
+ * @throws IOException
+ */
+ protected abstract I input(File file) throws FileNotFoundException;
+
+ protected abstract void transfer(I input, BigInteger factor, IProgressMonitor monitor)
+ throws IOException, DebugException;
+
+ protected void requestFailed(String message, Throwable exception) throws DebugException {
+ failed(DebugException.REQUEST_FAILED, message, exception);
+ }
+
+ protected void internalError(String message, Throwable exception) throws DebugException {
+ failed(DebugException.INTERNAL_ERROR, message, exception);
+ }
+
+ protected void failed(int code, String message, Throwable exception) throws DebugException {
+ Status status = new Status(//
+ IStatus.ERROR, //
+ getClass(), //
+ code, //
+ message, //
+ exception);
+ failed(new DebugException(status));
+ }
+
+ protected void failed(DebugException exception) throws DebugException {
+ if (Platform.isRunning()) {
+ Platform.getLog(FrameworkUtil.getBundle(getClass())).log(exception.getStatus());
+ }
+ throw exception;
+ }
+}
diff --git a/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/core/memory/transport/IReadMemory.java b/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/core/memory/transport/IReadMemory.java
new file mode 100644
index 00000000000..a83e2466951
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/core/memory/transport/IReadMemory.java
@@ -0,0 +1,43 @@
+/*******************************************************************************
+ * Copyright (c) 2020 ArSysOp and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov (ArSysOp) - initial API and implementation
+ * John Dallaway - use absolute memory address (bug 562164)
+ *******************************************************************************/
+package org.eclipse.cdt.debug.core.memory.transport;
+
+import java.math.BigInteger;
+
+import org.eclipse.debug.core.DebugException;
+import org.eclipse.debug.core.model.MemoryByte;
+
+/**
+ * Reads an array of bytes using the given offset
+ *
+ * @since 0.1
+ */
+public interface IReadMemory {
+
+ /**
+ * Reads an array of bytes from a memory starting from the given address. If requested to retrieve data beyond the memory
+ * boundaries, implementations should return memory bytes with the <code>READABLE</code> bit turned off for each byte outside the
+ * of the accessible range. An exception should not be thrown in this case.
+ *
+ * @param address address at which to begin retrieving bytes in terms of addressable units
+ * @param units the number of addressable units to retrieve
+ * @return the obtained data, {@link MemoryByte#isReadable()} needs to be checked
+ * @throws DebugException if unable to retrieve the specified bytes due to a failure communicating with the target
+ *
+ * @see {@link MemoryByte}
+ */
+ MemoryByte[] from(BigInteger address, long units) throws DebugException;
+
+}
diff --git a/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/core/memory/transport/IScrollMemory.java b/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/core/memory/transport/IScrollMemory.java
new file mode 100644
index 00000000000..b511c2fe1ee
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/core/memory/transport/IScrollMemory.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Kichwa Coders Canada Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.debug.core.memory.transport;
+
+import java.math.BigInteger;
+
+@FunctionalInterface
+public interface IScrollMemory {
+ void accept(BigInteger t);
+
+ static IScrollMemory ignore() {
+ return t -> {
+ // ignore
+ };
+ }
+
+} \ No newline at end of file
diff --git a/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/core/memory/transport/ImportRequest.java b/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/core/memory/transport/ImportRequest.java
new file mode 100644
index 00000000000..ab981503f3b
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/core/memory/transport/ImportRequest.java
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * Copyright (c) 2020 ArSysOp and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov (ArSysOp) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.debug.core.memory.transport;
+
+import java.math.BigInteger;
+
+/**
+ *
+ * Aggregates memory import configuration
+ *
+ * @since 0.1
+ *
+ */
+public final class ImportRequest {
+
+ private final BigInteger base;
+ private final BigInteger start;
+ private final WriteMemory write;
+
+ public ImportRequest(BigInteger base, BigInteger start, WriteMemory write) {
+ this.base = base;
+ this.start = start;
+ this.write = write;
+ }
+
+ /**
+ *
+ * @return base memory address
+ */
+ public BigInteger base() {
+ return base;
+ }
+
+ /**
+ *
+ * @return starting offset
+ */
+ public BigInteger start() {
+ return start;
+ }
+
+ /**
+ *
+ * @return writer
+ */
+ public WriteMemory write() {
+ return write;
+ }
+}
diff --git a/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/core/memory/transport/WriteMemory.java b/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/core/memory/transport/WriteMemory.java
new file mode 100644
index 00000000000..1f058c1715d
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/core/memory/transport/WriteMemory.java
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * Copyright (c) 2020 ArSysOp and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov (ArSysOp) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.debug.core.memory.transport;
+
+import java.math.BigInteger;
+
+import org.eclipse.debug.core.DebugException;
+
+/**
+ * Writes an array of bytes using the given offset
+ *
+ * @since 0.1
+ */
+public interface WriteMemory {
+
+ /**
+ * Writes the given data to a memory starting from the given offset. Actual write may be delayed until the nearest {@link WriteMemory#flush()} call
+ *
+ * @param offset
+ * @param data
+ * @throws DebugException
+ */
+ void to(BigInteger offset, byte[] data) throws DebugException;
+
+ /**
+ * Forces data write to a memory.
+ *
+ * @throws DebugException
+ */
+ void flush() throws DebugException;
+}
diff --git a/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/internal/core/memory/transport/Messages.java b/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/internal/core/memory/transport/Messages.java
new file mode 100644
index 00000000000..59bf38bcf12
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/internal/core/memory/transport/Messages.java
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * Copyright (c) 2020 ArSysOp and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov (ArSysOp) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.debug.internal.core.memory.transport;
+
+import org.eclipse.osgi.util.NLS;
+
+public class Messages extends NLS {
+ private static final String BUNDLE_NAME = "org.eclipse.cdt.debug.internal.core.memory.transport.messages"; //$NON-NLS-1$
+ public static String FileExport_e_export_memory;
+ public static String FileExport_e_read_target;
+ public static String FileExport_e_write_file;
+ public static String FileExport_sub_transferring;
+ public static String FileExport_task_transferring;
+ public static String FileImport_e_import_file;
+ public static String FileImport_e_read_file;
+ public static String FileImport_e_write_target;
+ public static String FileImport_task_transferring;
+ public static String PlainTextImport_e_invalid_format;
+ public static String SRecordImport_e_checksum_failure;
+ public static String SRecordImport_e_invalid_address;
+ public static String SRecordImport_e_invalid_checksum_format;
+ public static String SRecordImport_e_invalid_data;
+ public static String SRecordImport_e_invalid_line_length;
+ static {
+ // initialize resource bundle
+ NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+ }
+
+ private Messages() {
+ }
+}
diff --git a/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/internal/core/memory/transport/PlainTextExport.java b/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/internal/core/memory/transport/PlainTextExport.java
new file mode 100644
index 00000000000..b2783387213
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/internal/core/memory/transport/PlainTextExport.java
@@ -0,0 +1,88 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2020 Wind River Systems, Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Ted R Williams (Wind River Systems, Inc.) - initial implementation
+ * Alexander Fedorov (ArSysOp) - headless part extraction
+ *******************************************************************************/
+package org.eclipse.cdt.debug.internal.core.memory.transport;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.math.BigInteger;
+
+import org.eclipse.cdt.debug.core.memory.transport.ExportRequest;
+import org.eclipse.cdt.debug.core.memory.transport.FileExport;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.debug.core.DebugException;
+import org.eclipse.debug.core.model.MemoryByte;
+
+public final class PlainTextExport extends FileExport {
+
+ public PlainTextExport(File output, ExportRequest request) {
+ super(output, request);
+ }
+
+ @Override
+ protected BigInteger chunkSize() {
+ // These variables control how the output will be formatted
+ // The output data is split by chunks of 1 addressable unit size.
+ BigInteger dataCellSize = BigInteger.valueOf(1);
+ // show 32 bytes of data per line, total. Adjust number of columns to compensate
+ // for longer addressable unit size
+ BigInteger numberOfColumns = BigInteger.valueOf(32).divide(addressable);
+ // deduce the number of data chunks to be output, per line
+ return dataCellSize.multiply(numberOfColumns);
+ }
+
+ @Override
+ protected void transfer(OutputStream output, BigInteger factor, IProgressMonitor monitor)
+ throws IOException, DebugException {
+ // These variables control how the output will be formatted
+ // The output data is split by chunks of 1 addressable unit size.
+ final BigInteger dataCellSize = BigInteger.valueOf(1);
+ BigInteger transferAddress = start;
+ BigInteger jobCount = BigInteger.ZERO;
+ BigInteger dataCellsPerLine = chunkSize();
+ while (transferAddress.compareTo(end) < 0 && !monitor.isCanceled()) {
+ BigInteger length = dataCellsPerLine;
+ if (end.subtract(transferAddress).compareTo(length) < 0) {
+ length = end.subtract(transferAddress);
+ }
+ monitor.subTask(transferring(length, transferAddress));
+ StringBuilder buf = new StringBuilder();
+ for (int i = 0; i < length.divide(dataCellSize).intValue(); i++) {
+ if (i != 0) {
+ buf.append(" "); //$NON-NLS-1$
+ }
+ BigInteger from = transferAddress.add(dataCellSize.multiply(BigInteger.valueOf(i)));
+ MemoryByte[] bytes = read.from(from, dataCellSize.longValue());
+ for (int byteIndex = 0; byteIndex < bytes.length; byteIndex++) {
+ //FIXME: check MemoryByte#isReadable
+ String bString = BigInteger.valueOf(0xFF & bytes[byteIndex].getValue()).toString(16);
+ if (bString.length() == 1) {
+ buf.append("0"); //$NON-NLS-1$
+ }
+ buf.append(bString);
+ }
+ }
+ output.write(buf.toString().toUpperCase().getBytes());
+ output.write("\n".getBytes()); //$NON-NLS-1$
+ transferAddress = transferAddress.add(length);
+ jobCount = jobCount.add(BigInteger.ONE);
+ if (jobCount.compareTo(factor) == 0) {
+ jobCount = BigInteger.ZERO;
+ monitor.worked(1);
+ }
+ }
+ }
+
+} \ No newline at end of file
diff --git a/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/internal/core/memory/transport/PlainTextImport.java b/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/internal/core/memory/transport/PlainTextImport.java
new file mode 100644
index 00000000000..48ff698a006
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/internal/core/memory/transport/PlainTextImport.java
@@ -0,0 +1,80 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2020 Wind River Systems, Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Ted R Williams (Wind River Systems, Inc.) - initial implementation
+ * Alexander Fedorov (ArSysOp) - headless part extraction
+ *******************************************************************************/
+package org.eclipse.cdt.debug.internal.core.memory.transport;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.math.BigInteger;
+import java.util.StringTokenizer;
+
+import org.eclipse.cdt.debug.core.memory.transport.FileImport;
+import org.eclipse.cdt.debug.core.memory.transport.IScrollMemory;
+import org.eclipse.cdt.debug.core.memory.transport.ImportRequest;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.debug.core.DebugException;
+import org.osgi.framework.FrameworkUtil;
+
+public final class PlainTextImport extends FileImport<BufferedReader> {
+
+ public PlainTextImport(File input, ImportRequest request, IScrollMemory scroll) {
+ super(input, request, scroll);
+ }
+
+ @Override
+ protected BufferedReader input(File file) throws FileNotFoundException {
+ return new BufferedReader(new InputStreamReader(new FileInputStream(file)));
+ }
+
+ @Override
+ protected void transfer(BufferedReader reader, BigInteger factor, IProgressMonitor monitor)
+ throws IOException, DebugException {
+ BigInteger recordAddress = start;
+ String line = reader.readLine();
+ int lineNo = 1; // line error reporting
+ while (line != null && !monitor.isCanceled()) {
+ StringTokenizer st = new StringTokenizer(line, " "); //$NON-NLS-1$
+ int bytesRead = 0;
+ while (st.hasMoreElements()) {
+ String valueString = (String) st.nextElement();
+ int position = 0;
+ byte data[] = new byte[valueString.length() / 2];
+ for (int i = 0; i < data.length; i++) {
+ try {
+ data[i] = new BigInteger(valueString.substring(position++, position++ + 1), 16).byteValue();
+ } catch (NumberFormatException ex) {
+ throw new DebugException(new Status(IStatus.ERROR,
+ FrameworkUtil.getBundle(getClass()).getSymbolicName(), DebugException.REQUEST_FAILED,
+ String.format(Messages.PlainTextImport_e_invalid_format, lineNo), ex));
+ }
+ }
+ BigInteger writeAddress = recordAddress.subtract(base).add(BigInteger.valueOf(bytesRead));
+ write.to(writeAddress, data);
+ bytesRead += data.length;
+ }
+ recordAddress = recordAddress.add(BigInteger.valueOf(bytesRead));
+ BigInteger jobCount = BigInteger.valueOf(bytesRead).divide(factor);
+ monitor.worked(jobCount.intValue());
+ line = reader.readLine();
+ lineNo++;
+ }
+ scroll.accept(start);
+ }
+} \ No newline at end of file
diff --git a/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/internal/core/memory/transport/RAWBinaryExport.java b/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/internal/core/memory/transport/RAWBinaryExport.java
new file mode 100644
index 00000000000..4ce08f90095
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/internal/core/memory/transport/RAWBinaryExport.java
@@ -0,0 +1,65 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2020 Wind River Systems, Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Ted R Williams (Wind River Systems, Inc.) - initial implementation
+ * Alexander Fedorov (ArSysOp) - headless part extraction
+ *******************************************************************************/
+package org.eclipse.cdt.debug.internal.core.memory.transport;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.math.BigInteger;
+
+import org.eclipse.cdt.debug.core.memory.transport.ExportRequest;
+import org.eclipse.cdt.debug.core.memory.transport.FileExport;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.debug.core.DebugException;
+import org.eclipse.debug.core.model.MemoryByte;
+
+public final class RAWBinaryExport extends FileExport {
+
+ public RAWBinaryExport(File input, ExportRequest request) {
+ super(input, request);
+ }
+
+ @Override
+ protected BigInteger chunkSize() {
+ return BigInteger.valueOf(1024);
+ }
+
+ @Override
+ protected void transfer(OutputStream output, BigInteger factor, IProgressMonitor monitor)
+ throws IOException, DebugException {
+ BigInteger transferAddress = start;
+ BigInteger jobCount = BigInteger.ZERO;
+ BigInteger chunkSize = chunkSize();
+ while (transferAddress.compareTo(end) < 0 && !monitor.isCanceled()) {
+ BigInteger length = chunkSize;
+ if (end.subtract(transferAddress).compareTo(length) < 0) {
+ length = end.subtract(transferAddress);
+ }
+ monitor.subTask(transferring(length, transferAddress));
+ MemoryByte[] byteValues = read.from(transferAddress, length.longValue() / addressable.longValue());
+ for (MemoryByte memoryByte : byteValues) {
+ //FIXME: check MemoryByte#isReadable
+ output.write(memoryByte.getValue());
+ }
+ transferAddress = transferAddress.add(length);
+ jobCount = jobCount.add(BigInteger.ONE);
+ if (jobCount.compareTo(factor) == 0) {
+ jobCount = BigInteger.ZERO;
+ monitor.worked(1);
+ }
+ }
+ }
+
+} \ No newline at end of file
diff --git a/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/internal/core/memory/transport/RAWBinaryImport.java b/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/internal/core/memory/transport/RAWBinaryImport.java
new file mode 100644
index 00000000000..65e099e8ff9
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/internal/core/memory/transport/RAWBinaryImport.java
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2020 Wind River Systems, Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Ted R Williams (Wind River Systems, Inc.) - initial implementation
+ * Alexander Fedorov (ArSysOp) - headless part extraction
+ *******************************************************************************/
+package org.eclipse.cdt.debug.internal.core.memory.transport;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.math.BigInteger;
+
+import org.eclipse.cdt.debug.core.memory.transport.FileImport;
+import org.eclipse.cdt.debug.core.memory.transport.IScrollMemory;
+import org.eclipse.cdt.debug.core.memory.transport.ImportRequest;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.debug.core.DebugException;
+
+public final class RAWBinaryImport extends FileImport<FileInputStream> {
+
+ public RAWBinaryImport(File input, ImportRequest request, IScrollMemory scroll) {
+ super(input, request, scroll);
+ }
+
+ @Override
+ protected FileInputStream input(File file) throws FileNotFoundException {
+ return new FileInputStream(file);
+ }
+
+ @Override
+ protected void transfer(FileInputStream input, BigInteger factor, IProgressMonitor monitor)
+ throws IOException, DebugException {
+ byte[] byteValues = new byte[1024];
+ int actualByteCount = input.read(byteValues);
+ BigInteger recordAddress = start;
+ while (actualByteCount != -1 && !monitor.isCanceled()) {
+ byte data[] = new byte[actualByteCount];
+ for (int i = 0; i < data.length; i++) {
+ data[i] = byteValues[i];
+ }
+ write.to(recordAddress.subtract(base), data);
+ BigInteger jobCount = BigInteger.valueOf(actualByteCount).divide(factor);
+ monitor.worked(jobCount.intValue());
+ recordAddress = recordAddress.add(BigInteger.valueOf(actualByteCount));
+ actualByteCount = input.read(byteValues);
+ }
+ scroll.accept(start);
+ }
+
+} \ No newline at end of file
diff --git a/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/internal/core/memory/transport/ReadMemoryBlock.java b/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/internal/core/memory/transport/ReadMemoryBlock.java
new file mode 100644
index 00000000000..2ec527cb8c8
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/internal/core/memory/transport/ReadMemoryBlock.java
@@ -0,0 +1,41 @@
+/*******************************************************************************
+ * Copyright (c) 2020 ArSysOp and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov (ArSysOp) - initial API and implementation
+ * John Dallaway - use absolute memory address (bug 562164)
+ *******************************************************************************/
+package org.eclipse.cdt.debug.internal.core.memory.transport;
+
+import java.math.BigInteger;
+
+import org.eclipse.cdt.debug.core.memory.transport.IReadMemory;
+import org.eclipse.debug.core.DebugException;
+import org.eclipse.debug.core.model.IMemoryBlockExtension;
+import org.eclipse.debug.core.model.MemoryByte;
+
+/**
+ * Reads memory from the given {@link IMemoryBlockExtension}
+ *
+ */
+public final class ReadMemoryBlock implements IReadMemory {
+
+ private final IMemoryBlockExtension memory;
+
+ public ReadMemoryBlock(IMemoryBlockExtension memory) {
+ this.memory = memory;
+ }
+
+ @Override
+ public MemoryByte[] from(BigInteger address, long units) throws DebugException {
+ return memory.getBytesFromAddress(address, units);
+ }
+
+}
diff --git a/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/internal/core/memory/transport/SRecordExport.java b/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/internal/core/memory/transport/SRecordExport.java
new file mode 100644
index 00000000000..6cabd215665
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/internal/core/memory/transport/SRecordExport.java
@@ -0,0 +1,115 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2020 Wind River Systems, Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Ted R Williams (Wind River Systems, Inc.) - initial implementation
+ * Alexander Fedorov (ArSysOp) - headless part extraction
+ *******************************************************************************/
+package org.eclipse.cdt.debug.internal.core.memory.transport;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.math.BigInteger;
+
+import org.eclipse.cdt.debug.core.memory.transport.ExportRequest;
+import org.eclipse.cdt.debug.core.memory.transport.FileExport;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.debug.core.DebugException;
+import org.eclipse.debug.core.model.MemoryByte;
+
+public final class SRecordExport extends FileExport {
+
+ public SRecordExport(File input, ExportRequest request) {
+ super(input, request);
+ }
+
+ @Override
+ protected BigInteger chunkSize() {
+ // FIXME 4 byte default
+ return BigInteger.valueOf(16);
+ }
+
+ @Override
+ protected void transfer(OutputStream output, BigInteger factor, IProgressMonitor monitor)
+ throws IOException, DebugException {
+ final BigInteger DATA_PER_RECORD = chunkSize();
+ final BigInteger DATA_PER_TRANSFER = BigInteger.valueOf(4096).multiply(DATA_PER_RECORD);
+ BigInteger jobCount = BigInteger.ZERO;
+ BigInteger transferAddress = start;
+ while (transferAddress.compareTo(end) < 0 && !monitor.isCanceled()) {
+ BigInteger length = DATA_PER_TRANSFER;
+ if (end.subtract(transferAddress).compareTo(length) < 0) {
+ length = end.subtract(transferAddress);
+ }
+ monitor.subTask(transferring(length, transferAddress));
+ MemoryByte[] bytes = read.from(transferAddress, length.longValue() / addressable.longValue());
+ BigInteger sRecordAddress = transferAddress;
+ BigInteger sRecordEndAddress = transferAddress.add(length);
+ while (sRecordAddress.compareTo(sRecordEndAddress) < 0 && !monitor.isCanceled()) {
+ BigInteger sRecordDataLength = DATA_PER_RECORD;
+ if (sRecordEndAddress.subtract(sRecordAddress).compareTo(sRecordDataLength) < 0) {
+ sRecordDataLength = end.subtract(sRecordAddress);
+ }
+ output.write("S3".getBytes()); // FIXME 4 byte address //$NON-NLS-1$
+
+ StringBuilder buf = new StringBuilder();
+ BigInteger sRecordLength = BigInteger.valueOf(4); // address size
+ sRecordLength = sRecordLength.add(sRecordDataLength);
+ sRecordLength = sRecordLength.add(BigInteger.ONE); // checksum
+ String transferAddressString = sRecordAddress.toString(16);
+ String lengthString = sRecordLength.toString(16);
+ if (lengthString.length() == 1) {
+ buf.append("0"); //$NON-NLS-1$
+ }
+ buf.append(lengthString);
+ for (int i = 0; i < 8 - transferAddressString.length(); i++) {
+ buf.append("0"); //$NON-NLS-1$
+ }
+ buf.append(transferAddressString);
+ final int byteOffset = sRecordAddress.subtract(transferAddress).intValue();
+ final int byteLength = byteOffset + sRecordDataLength.intValue();
+ for (int byteIndex = byteOffset; byteIndex < byteLength; byteIndex++) {
+ //FIXME: check MemoryByte#isReadable
+ String bString = BigInteger.valueOf(0xFF & bytes[byteIndex].getValue()).toString(16);
+ if (bString.length() == 1) {
+ buf.append("0"); //$NON-NLS-1$
+ }
+ buf.append(bString);
+ }
+ /*
+ * The least significant byte of the one's complement of the sum of the values
+ * represented by the pairs of characters making up the records length, address,
+ * and the code/data fields.
+ */
+ byte checksum = 0;
+ for (int i = 0; i < buf.length(); i += 2) {
+ BigInteger value = new BigInteger(buf.substring(i, i + 2), 16);
+ checksum += value.byteValue();
+ }
+ String bString = BigInteger.valueOf(0xFF - checksum).and(BigInteger.valueOf(0xFF)).toString(16);
+ if (bString.length() == 1) {
+ buf.append("0"); //$NON-NLS-1$
+ }
+ buf.append(bString);
+ output.write(buf.toString().toUpperCase().getBytes());
+ output.write("\n".getBytes()); //$NON-NLS-1$
+ sRecordAddress = sRecordAddress.add(sRecordDataLength);
+ jobCount = jobCount.add(BigInteger.ONE);
+ if (jobCount.compareTo(factor) == 0) {
+ jobCount = BigInteger.ZERO;
+ monitor.worked(1);
+ }
+ }
+ transferAddress = transferAddress.add(length);
+ }
+ }
+
+} \ No newline at end of file
diff --git a/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/internal/core/memory/transport/SRecordImport.java b/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/internal/core/memory/transport/SRecordImport.java
new file mode 100644
index 00000000000..da7efb38686
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/internal/core/memory/transport/SRecordImport.java
@@ -0,0 +1,152 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2020 Wind River Systems, Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Ted R Williams (Wind River Systems, Inc.) - initial implementation
+ * Alexander Fedorov (ArSysOp) - headless part extraction
+ *******************************************************************************/
+package org.eclipse.cdt.debug.internal.core.memory.transport;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.math.BigInteger;
+
+import org.eclipse.cdt.debug.core.memory.transport.FileImport;
+import org.eclipse.cdt.debug.core.memory.transport.IScrollMemory;
+import org.eclipse.cdt.debug.core.memory.transport.ImportRequest;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.debug.core.DebugException;
+import org.osgi.framework.FrameworkUtil;
+
+public class SRecordImport extends FileImport<BufferedReader> {
+
+ private final boolean transfer;
+
+ public SRecordImport(File input, ImportRequest request, IScrollMemory scroll, boolean transfer) {
+ super(input, request, scroll);
+ this.transfer = transfer;
+ }
+
+ @Override
+ protected BufferedReader input(File file) throws FileNotFoundException {
+ return new BufferedReader(new InputStreamReader(new FileInputStream(file)));
+ }
+
+ @Override
+ protected void transfer(BufferedReader reader, BigInteger factor, IProgressMonitor monitor)
+ throws IOException, DebugException {
+ // FIXME 4 byte default
+ final int CHECKSUM_LENGTH = 1;
+ BigInteger scrollToAddress = null;
+ BigInteger offset = null;
+ if (!transfer) {
+ offset = BigInteger.ZERO;
+ }
+ String line = reader.readLine();
+ int lineNo = 1; // line error reporting
+ while (line != null && !monitor.isCanceled()) {
+ String recordType = line.substring(0, 2);
+ int recordCount = 0;
+ try {
+ recordCount = Integer.parseInt(line.substring(2, 4), 16);
+ } catch (NumberFormatException ex) {
+ throw new DebugException(new Status(IStatus.ERROR,
+ FrameworkUtil.getBundle(getClass()).getSymbolicName(), DebugException.REQUEST_FAILED,
+ String.format(Messages.SRecordImport_e_invalid_line_length, lineNo), ex));
+ }
+ int bytesRead = 4 + recordCount;
+ int position = 4;
+ int addressSize = 0;
+ BigInteger recordAddress = null;
+ if ("S3".equals(recordType)) //$NON-NLS-1$
+ addressSize = 4;
+ else if ("S1".equals(recordType)) //$NON-NLS-1$
+ addressSize = 2;
+ else if ("S2".equals(recordType)) //$NON-NLS-1$
+ addressSize = 3;
+ else if ("S0".equals(recordType) || "S5".equals(recordType) || "S7".equals(recordType) //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ || "S8".equals(recordType) || "S9".equals(recordType)) //$NON-NLS-1$ //$NON-NLS-2$
+ { // ignore S0, S5, S7, S8 and S9 records
+ line = reader.readLine();
+ lineNo++;
+ continue;
+ }
+ try {
+ recordAddress = new BigInteger(line.substring(position, position + addressSize * 2), 16);
+ } catch (NumberFormatException ex) {
+ throw new DebugException(new Status(IStatus.ERROR,
+ FrameworkUtil.getBundle(getClass()).getSymbolicName(), DebugException.REQUEST_FAILED,
+ String.format(Messages.SRecordImport_e_invalid_address, lineNo), ex));
+ }
+ recordCount -= addressSize;
+ position += addressSize * 2;
+ if (offset == null) {
+ offset = start.subtract(recordAddress);
+ }
+ recordAddress = recordAddress.add(offset);
+ byte data[] = new byte[recordCount - CHECKSUM_LENGTH];
+ for (int i = 0; i < data.length; i++) {
+ try {
+ data[i] = new BigInteger(line.substring(position++, position++ + 1), 16).byteValue();
+ } catch (NumberFormatException ex) {
+ throw new DebugException(new Status(IStatus.ERROR,
+ FrameworkUtil.getBundle(getClass()).getSymbolicName(), DebugException.REQUEST_FAILED,
+ String.format(Messages.SRecordImport_e_invalid_data, lineNo), ex));
+ }
+ }
+ /*
+ * The least significant byte of the one's complement of the sum of the values
+ * represented by the pairs of characters making up the records length, address,
+ * and the code/data fields.
+ */
+ StringBuilder buf = new StringBuilder(line.substring(2));
+ byte checksum = 0;
+ for (int i = 0; i < buf.length(); i += 2) {
+ BigInteger value = null;
+ try {
+ value = new BigInteger(buf.substring(i, i + 2), 16);
+ } catch (NumberFormatException ex) {
+ throw new DebugException(new Status(IStatus.ERROR,
+ FrameworkUtil.getBundle(getClass()).getSymbolicName(), DebugException.REQUEST_FAILED,
+ String.format(Messages.SRecordImport_e_invalid_checksum_format, lineNo), ex));
+ }
+ checksum += value.byteValue();
+ }
+ /*
+ * Since we included the checksum in the checksum calculation the checksum
+ * ( if correct ) will always be 0xFF which is -1 using the signed byte size
+ * calculation here.
+ */
+ if (checksum != (byte) -1) {
+ monitor.done();
+ throw new DebugException(
+ new Status(IStatus.ERROR, FrameworkUtil.getBundle(getClass()).getSymbolicName(),
+ String.format(Messages.SRecordImport_e_checksum_failure, line)));
+ }
+ if (scrollToAddress == null) {
+ scrollToAddress = recordAddress;
+ }
+ // FIXME error on incorrect checksum
+ write.to(recordAddress.subtract(base), data);
+ BigInteger jobCount = BigInteger.valueOf(bytesRead).divide(factor);
+ monitor.worked(jobCount.intValue());
+ line = reader.readLine();
+ lineNo++;
+ }
+ scroll.accept(scrollToAddress);
+ }
+
+} \ No newline at end of file
diff --git a/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/internal/core/memory/transport/TransportJob.java b/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/internal/core/memory/transport/TransportJob.java
new file mode 100644
index 00000000000..4b344c6578d
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/internal/core/memory/transport/TransportJob.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * Copyright (c) 2020 ArSysOp and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov (ArSysOp) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.debug.internal.core.memory.transport;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.ICoreRunnable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+
+/**
+ * Runs memory transport runnable as a {@link Job}
+ *
+ */
+public final class TransportJob extends Job {
+
+ private final ICoreRunnable runnable;
+
+ public TransportJob(String name, ICoreRunnable runnable) {
+ super(name);
+ this.runnable = runnable;
+ }
+
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ try {
+ runnable.run(monitor);
+ } catch (CoreException e) {
+ return e.getStatus();
+ }
+ return Status.OK_STATUS;
+ }
+
+}
diff --git a/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/internal/core/memory/transport/messages.properties b/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/internal/core/memory/transport/messages.properties
new file mode 100644
index 00000000000..bc42752fc0e
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/internal/core/memory/transport/messages.properties
@@ -0,0 +1,29 @@
+###############################################################################
+# Copyright (c) 2020 ArSysOp and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Alexander Fedorov (ArSysOp) - initial API and implementation
+###############################################################################
+
+FileExport_e_export_memory=Failure exporting memory
+FileExport_e_read_target=Could not read from target.
+FileExport_e_write_file=Could not write to file.
+FileExport_sub_transferring=Transferring %s bytes at address 0x%s
+FileExport_task_transferring=Transferring Data
+FileImport_e_import_file=Failure importing from file
+FileImport_e_read_file=Could not read from file.
+FileImport_e_write_target=Could not write to target.
+FileImport_task_transferring=Transferring Data
+PlainTextImport_e_invalid_format=Invalid file format. Expected integer at line %d
+SRecordImport_e_checksum_failure=Checksum failure of line = %d
+SRecordImport_e_invalid_address=Invalid file format. Invalid address at line %d
+SRecordImport_e_invalid_checksum_format=Invalid file format. Invalid checksum format at line %d
+SRecordImport_e_invalid_data=Invalid file format. Invalid data at line %d
+SRecordImport_e_invalid_line_length=Invalid file format. Invalid line length at line %d
diff --git a/memory/org.eclipse.cdt.debug.ui.memory-feature/.settings/org.eclipse.core.resources.prefs b/memory/org.eclipse.cdt.debug.ui.memory-feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.ui.memory-feature/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/memory/org.eclipse.cdt.debug.ui.memory-feature/feature.xml b/memory/org.eclipse.cdt.debug.ui.memory-feature/feature.xml
index a940b8f2add..14bf9cbd850 100644
--- a/memory/org.eclipse.cdt.debug.ui.memory-feature/feature.xml
+++ b/memory/org.eclipse.cdt.debug.ui.memory-feature/feature.xml
@@ -1,9 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2009, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<feature
id="org.eclipse.cdt.debug.ui.memory"
label="%featureName"
- version="9.10.0.qualifier"
+ version="10.7.0.qualifier"
provider-name="%providerName"
+ plugin="org.eclipse.cdt.debug.ui.memory.memorybrowser"
license-feature="org.eclipse.license"
license-feature-version="0.0.0">
@@ -20,6 +31,13 @@
</license>
<plugin
+ id="org.eclipse.cdt.debug.core.memory"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
id="org.eclipse.cdt.debug.ui.memory.search"
download-size="0"
install-size="0"
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.floatingpoint/.classpath b/memory/org.eclipse.cdt.debug.ui.memory.floatingpoint/.classpath
index eca7bdba8f0..e801ebfb468 100644
--- a/memory/org.eclipse.cdt.debug.ui.memory.floatingpoint/.classpath
+++ b/memory/org.eclipse.cdt.debug.ui.memory.floatingpoint/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.floatingpoint/.settings/org.eclipse.core.resources.prefs b/memory/org.eclipse.cdt.debug.ui.memory.floatingpoint/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.ui.memory.floatingpoint/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.floatingpoint/.settings/org.eclipse.jdt.core.prefs b/memory/org.eclipse.cdt.debug.ui.memory.floatingpoint/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/memory/org.eclipse.cdt.debug.ui.memory.floatingpoint/.settings/org.eclipse.jdt.core.prefs
+++ b/memory/org.eclipse.cdt.debug.ui.memory.floatingpoint/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.floatingpoint/.settings/org.eclipse.jdt.ui.prefs b/memory/org.eclipse.cdt.debug.ui.memory.floatingpoint/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/memory/org.eclipse.cdt.debug.ui.memory.floatingpoint/.settings/org.eclipse.jdt.ui.prefs
+++ b/memory/org.eclipse.cdt.debug.ui.memory.floatingpoint/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.floatingpoint/META-INF/MANIFEST.MF b/memory/org.eclipse.cdt.debug.ui.memory.floatingpoint/META-INF/MANIFEST.MF
index 6543715bd41..c65f8b5dae2 100644
--- a/memory/org.eclipse.cdt.debug.ui.memory.floatingpoint/META-INF/MANIFEST.MF
+++ b/memory/org.eclipse.cdt.debug.ui.memory.floatingpoint/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.debug.ui.memory.floatingpoint;singleton:=true
-Bundle-Version: 1.0.200.qualifier
+Bundle-Version: 1.1.200.qualifier
Bundle-Localization: plugin
Require-Bundle: org.eclipse.debug.core;bundle-version="3.7.100",
org.eclipse.debug.ui;bundle-version="3.8.1",
@@ -13,6 +13,6 @@ Require-Bundle: org.eclipse.debug.core;bundle-version="3.7.100",
Bundle-ActivationPolicy: lazy
Bundle-Activator: org.eclipse.cdt.debug.ui.memory.floatingpoint.FPRenderingPlugin
Bundle-Vendor: %providerName
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Export-Package: org.eclipse.cdt.debug.ui.memory.floatingpoint
Automatic-Module-Name: org.eclipse.cdt.debug.ui.memory.floatingpoint
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.floatingpoint/about.html b/memory/org.eclipse.cdt.debug.ui.memory.floatingpoint/about.html
index 164f781a8fd..b3134865230 100644
--- a/memory/org.eclipse.cdt.debug.ui.memory.floatingpoint/about.html
+++ b/memory/org.eclipse.cdt.debug.ui.memory.floatingpoint/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.floatingpoint/src/org/eclipse/cdt/debug/ui/memory/floatingpoint/FPRendering.java b/memory/org.eclipse.cdt.debug.ui.memory.floatingpoint/src/org/eclipse/cdt/debug/ui/memory/floatingpoint/FPRendering.java
index 176e0c31cff..5ecdcb255f7 100644
--- a/memory/org.eclipse.cdt.debug.ui.memory.floatingpoint/src/org/eclipse/cdt/debug/ui/memory/floatingpoint/FPRendering.java
+++ b/memory/org.eclipse.cdt.debug.ui.memory.floatingpoint/src/org/eclipse/cdt/debug/ui/memory/floatingpoint/FPRendering.java
@@ -1101,7 +1101,7 @@ public class FPRendering extends AbstractMemoryRendering implements IRepositiona
if (fConnection == null) {
fConnection = () -> {
// update UI asynchronously
- Display display = FPRenderingPlugin.getDefault().getWorkbench().getDisplay();
+ Display display = PlatformUI.getWorkbench().getDisplay();
display.asyncExec(() -> {
try {
if (fBigBaseAddress != FPRendering.this.fRendering.getMemoryBlock().getBigBaseAddress()) {
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.floatingpoint/src/org/eclipse/cdt/debug/ui/memory/floatingpoint/Rendering.java b/memory/org.eclipse.cdt.debug.ui.memory.floatingpoint/src/org/eclipse/cdt/debug/ui/memory/floatingpoint/Rendering.java
index 90eec95d7f1..222d0cf82b7 100644
--- a/memory/org.eclipse.cdt.debug.ui.memory.floatingpoint/src/org/eclipse/cdt/debug/ui/memory/floatingpoint/Rendering.java
+++ b/memory/org.eclipse.cdt.debug.ui.memory.floatingpoint/src/org/eclipse/cdt/debug/ui/memory/floatingpoint/Rendering.java
@@ -700,8 +700,8 @@ public class Rendering extends Composite implements IDebugEventSetListener {
@Override
public void refresh() {
- assert Thread.currentThread().equals(Display.getDefault().getThread()) : FPRenderingMessages
- .getString("CALLED_ON_NON_DISPATCH_THREAD"); //$NON-NLS-1$
+ assert Thread.currentThread().equals(Display.getDefault().getThread())
+ : FPRenderingMessages.getString("CALLED_ON_NON_DISPATCH_THREAD"); //$NON-NLS-1$
if (fCache != null) {
queueRequest(fViewportAddress, getViewportEndAddress());
@@ -710,8 +710,8 @@ public class Rendering extends Composite implements IDebugEventSetListener {
@Override
public void archiveDeltas() {
- assert Thread.currentThread().equals(Display.getDefault().getThread()) : FPRenderingMessages
- .getString("CALLED_ON_NON_DISPATCH_THREAD"); //$NON-NLS-1$
+ assert Thread.currentThread().equals(Display.getDefault().getThread())
+ : FPRenderingMessages.getString("CALLED_ON_NON_DISPATCH_THREAD"); //$NON-NLS-1$
if (fCache != null) {
queueRequestArchiveDeltas();
@@ -1055,8 +1055,8 @@ public class Rendering extends Composite implements IDebugEventSetListener {
@Override
public FPMemoryByte[] getBytes(BigInteger address, int bytesRequested) throws DebugException {
- assert Thread.currentThread().equals(Display.getDefault().getThread()) : FPRenderingMessages
- .getString("CALLED_ON_NON_DISPATCH_THREAD"); //$NON-NLS-1$
+ assert Thread.currentThread().equals(Display.getDefault().getThread())
+ : FPRenderingMessages.getString("CALLED_ON_NON_DISPATCH_THREAD"); //$NON-NLS-1$
if (containsEditedCell(address)) // Cell size cannot be switched during an edit
return getEditedMemory(address);
@@ -1096,29 +1096,29 @@ public class Rendering extends Composite implements IDebugEventSetListener {
@Override
public boolean containsEditedCell(BigInteger address) {
- assert Thread.currentThread().equals(Display.getDefault().getThread()) : FPRenderingMessages
- .getString("CALLED_ON_NON_DISPATCH_THREAD"); //$NON-NLS-1$
+ assert Thread.currentThread().equals(Display.getDefault().getThread())
+ : FPRenderingMessages.getString("CALLED_ON_NON_DISPATCH_THREAD"); //$NON-NLS-1$
return fEditBuffer.containsKey(address);
}
public FPMemoryByte[] getEditedMemory(BigInteger address) {
- assert Thread.currentThread().equals(Display.getDefault().getThread()) : FPRenderingMessages
- .getString("CALLED_ON_NON_DISPATCH_THREAD"); //$NON-NLS-1$
+ assert Thread.currentThread().equals(Display.getDefault().getThread())
+ : FPRenderingMessages.getString("CALLED_ON_NON_DISPATCH_THREAD"); //$NON-NLS-1$
return fEditBuffer.get(address);
}
@Override
public void clearEditBuffer() {
- assert Thread.currentThread().equals(Display.getDefault().getThread()) : FPRenderingMessages
- .getString("CALLED_ON_NON_DISPATCH_THREAD"); //$NON-NLS-1$
+ assert Thread.currentThread().equals(Display.getDefault().getThread())
+ : FPRenderingMessages.getString("CALLED_ON_NON_DISPATCH_THREAD"); //$NON-NLS-1$
fEditBuffer.clear();
Rendering.this.redrawPanes();
}
@Override
public void writeEditBuffer() {
- assert Thread.currentThread().equals(Display.getDefault().getThread()) : FPRenderingMessages
- .getString("CALLED_ON_NON_DISPATCH_THREAD"); //$NON-NLS-1$
+ assert Thread.currentThread().equals(Display.getDefault().getThread())
+ : FPRenderingMessages.getString("CALLED_ON_NON_DISPATCH_THREAD"); //$NON-NLS-1$
Set<BigInteger> keySet = fEditBuffer.keySet();
Iterator<BigInteger> iterator = keySet.iterator();
@@ -1147,8 +1147,8 @@ public class Rendering extends Composite implements IDebugEventSetListener {
@Override
public void setEditedValue(BigInteger address, FPMemoryByte[] bytes) {
- assert Thread.currentThread().equals(Display.getDefault().getThread()) : FPRenderingMessages
- .getString("CALLED_ON_NON_DISPATCH_THREAD"); //$NON-NLS-1$
+ assert Thread.currentThread().equals(Display.getDefault().getThread())
+ : FPRenderingMessages.getString("CALLED_ON_NON_DISPATCH_THREAD"); //$NON-NLS-1$
fEditBuffer.put(address, bytes);
Rendering.this.redrawPanes();
}
@@ -2009,7 +2009,7 @@ public class Rendering extends Composite implements IDebugEventSetListener {
// Construct the edit mode message
statusLineMessage = NLS.bind(FPRenderingMessages.getString("FPRendering.EDIT_MODE"), //$NON-NLS-1$
(insertMode() ? FPRenderingMessages.getString("FPRendering.EDIT_MODE_INSERT") : //$NON-NLS-1$
- FPRenderingMessages.getString("FPRendering.EDIT_MODE_OVERWRITE"))); //$NON-NLS-1$
+ FPRenderingMessages.getString("FPRendering.EDIT_MODE_OVERWRITE"))); //$NON-NLS-1$
} else {
// 'null' = clear the message
statusLineMessage = null;
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/.classpath b/memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/.classpath
index eca7bdba8f0..e801ebfb468 100644
--- a/memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/.classpath
+++ b/memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/.settings/org.eclipse.core.resources.prefs b/memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/.settings/org.eclipse.jdt.core.prefs b/memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/.settings/org.eclipse.jdt.core.prefs
+++ b/memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/.settings/org.eclipse.jdt.ui.prefs b/memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/.settings/org.eclipse.jdt.ui.prefs
+++ b/memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/META-INF/MANIFEST.MF b/memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/META-INF/MANIFEST.MF
index 6307af97c85..52210734b8a 100644
--- a/memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/META-INF/MANIFEST.MF
+++ b/memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.debug.ui.memory.memorybrowser;singleton:=true
-Bundle-Version: 1.3.200.qualifier
+Bundle-Version: 1.4.500.qualifier
Bundle-Activator: org.eclipse.cdt.debug.ui.memory.memorybrowser.MemoryBrowserPlugin
Bundle-Vendor: %providerName
Bundle-Localization: plugin
@@ -12,7 +12,7 @@ Require-Bundle: org.eclipse.ui,
org.eclipse.debug.ui;bundle-version="3.5.0",
org.eclipse.cdt.debug.core;bundle-version="7.0.0",
org.eclipse.cdt.debug.ui;bundle-version="7.0.0"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-ActivationPolicy: lazy
Export-Package: org.eclipse.cdt.debug.ui.memory.memorybrowser,
org.eclipse.cdt.debug.ui.memory.memorybrowser.api
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/about.html b/memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/about.html
index 164f781a8fd..b3134865230 100644
--- a/memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/about.html
+++ b/memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/about.ini b/memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/about.ini
new file mode 100644
index 00000000000..e07a7bb377e
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/about.ini
@@ -0,0 +1,24 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%blurb
+
+# Property "windowImage" contains path to window icon (16x16)
+# needed for primary features only
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=cdt_logo_icon32.png
+
+# Property "aboutImage" contains path to product image (500x330 or 115x164)
+# needed for primary features only
+
+# Property "appName" contains name of the application (translated)
+# needed for primary features only
+
+# Property "welcomePerspective" contains the id of the perspective in which the
+# welcome page is to be opened.
+# optional
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/about.mappings b/memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/about.mappings
new file mode 100644
index 00000000000..936a8039c3e
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/about.mappings
@@ -0,0 +1,9 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+# The following should contain the build version.
+# e.g. "0=20200106-1728"
+# This value will be added automatically via the build scripts
+0=${buildId}
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/about.properties b/memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/about.properties
new file mode 100644
index 00000000000..09eebaa2588
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/about.properties
@@ -0,0 +1,32 @@
+###############################################################################
+# Copyright (c) 2009, 2022 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+# about.properties
+# contains externalized strings for about.ini
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# fill-ins are supplied by about.mappings
+# This file should be translated.
+# NOTE TO TRANSLATOR: Please do not translate the featureVersion variable.
+
+
+blurb=C/C++ Memory View Enhancements\n\
+\n\
+Version: {featureVersion}\n\
+Build id: {0}\n\
+\n\
+Copyright (c) 2009, 2022 Contributors to the Eclipse Foundation
+\n\
+See the NOTICE file(s) distributed with this work for additional\n\
+information regarding copyright ownership.\n\
+\n\
+Visit http://www.eclipse.org/cdt
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/build.properties b/memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/build.properties
index 0a38b557d1f..1128fcd488e 100644
--- a/memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/build.properties
+++ b/memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/build.properties
@@ -21,5 +21,9 @@ bin.includes = plugin.xml,\
.,\
icons/,\
about.html,\
- plugin.properties
+ plugin.properties,\
+ about.ini,\
+ about.mappings,\
+ about.properties,\
+ cdt_logo_icon32.png
src.includes = about.html
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/cdt_logo_icon32.png b/memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/cdt_logo_icon32.png
new file mode 100644
index 00000000000..470ca81b327
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/cdt_logo_icon32.png
Binary files differ
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/icons/memorybrowser_view.gif b/memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/icons/memorybrowser_view.gif
index 7ce1112834c..7ce1112834c 100755..100644
--- a/memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/icons/memorybrowser_view.gif
+++ b/memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/icons/memorybrowser_view.gif
Binary files differ
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/src/org/eclipse/cdt/debug/ui/memory/memorybrowser/GoToAddressBarWidget.java b/memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/src/org/eclipse/cdt/debug/ui/memory/memorybrowser/GoToAddressBarWidget.java
index 3058f770e76..cb8933a7e0c 100644
--- a/memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/src/org/eclipse/cdt/debug/ui/memory/memorybrowser/GoToAddressBarWidget.java
+++ b/memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/src/org/eclipse/cdt/debug/ui/memory/memorybrowser/GoToAddressBarWidget.java
@@ -49,7 +49,7 @@ public class GoToAddressBarWidget {
* Character sequence that is unlikely to appear naturally in a recurring
* debug context ID or memory space ID
*/
- private static String SEPARATOR = "<seperator>";
+ private static String SEPARATOR = "<seperator>"; //$NON-NLS-1$
/**
* At a minimum, the expression history is kept on a per launch
@@ -57,7 +57,7 @@ public class GoToAddressBarWidget {
* provide a recurring ID, we further divide the history by those IDs. This
* constant is used when no recurring context ID is available.
*/
- private static String UNKNOWN_CONTEXT_ID = "Unknown";
+ private static String UNKNOWN_CONTEXT_ID = "Unknown"; //$NON-NLS-1$
private Combo fExpression;
private ControlDecoration fEmptyExpression;
private ControlDecoration fWrongExpression;
@@ -120,12 +120,12 @@ public class GoToAddressBarWidget {
String contextID = getRecurringContextID(context);
ILaunchConfiguration launchConfiguration = launch.getLaunchConfiguration();
- String currentExpressions = "";
+ String currentExpressions = ""; //$NON-NLS-1$
if (launchConfiguration != null) {
try {
ILaunchConfigurationWorkingCopy wc = launchConfiguration.getWorkingCopy();
if (wc != null) {
- currentExpressions = wc.getAttribute(getSaveExpressionKey(contextID, memorySpace), "");
+ currentExpressions = wc.getAttribute(getSaveExpressionKey(contextID, memorySpace), ""); //$NON-NLS-1$
StringTokenizer st = new StringTokenizer(currentExpressions, ","); //$NON-NLS-1$
/*
@@ -143,10 +143,10 @@ public class GoToAddressBarWidget {
list.remove(0);
}
- currentExpressions = "";
+ currentExpressions = ""; //$NON-NLS-1$
for (int idx = 0; idx < list.size(); idx++) {
if (idx > 0) {
- currentExpressions += ",";
+ currentExpressions += ","; //$NON-NLS-1$
}
currentExpressions += list.get(idx);
}
@@ -233,10 +233,10 @@ public class GoToAddressBarWidget {
}
ILaunchConfiguration launchConfiguration = launch.getLaunchConfiguration();
- String expressions = "";
+ String expressions = ""; //$NON-NLS-1$
if (launchConfiguration != null) {
expressions = launchConfiguration
- .getAttribute(getSaveExpressionKey(getRecurringContextID(context), memorySpace), "");
+ .getAttribute(getSaveExpressionKey(getRecurringContextID(context), memorySpace), ""); //$NON-NLS-1$
}
StringTokenizer st = new StringTokenizer(expressions, ","); //$NON-NLS-1$
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/src/org/eclipse/cdt/debug/ui/memory/memorybrowser/MemoryBrowser.java b/memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/src/org/eclipse/cdt/debug/ui/memory/memorybrowser/MemoryBrowser.java
index e14e2090f19..fb05287646d 100644
--- a/memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/src/org/eclipse/cdt/debug/ui/memory/memorybrowser/MemoryBrowser.java
+++ b/memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/src/org/eclipse/cdt/debug/ui/memory/memorybrowser/MemoryBrowser.java
@@ -533,8 +533,8 @@ public class MemoryBrowser extends ViewPart
// out the rendering in the tab with either a new one or an
// existing one already associated with that memory space.
String oldMemorySpaceId = (String) activeFolder.getSelection().getData(KEY_MEMORY_SPACE);
- assert oldMemorySpaceId == null || !oldMemorySpaceId.equals(
- NA_MEMORY_SPACE_ID) : "should be null reference or an explicit, valid memory space ID (not including '----')"; //$NON-NLS-1$
+ assert oldMemorySpaceId == null || !oldMemorySpaceId.equals(NA_MEMORY_SPACE_ID)
+ : "should be null reference or an explicit, valid memory space ID (not including '----')"; //$NON-NLS-1$
if ((oldMemorySpaceId != null && !oldMemorySpaceId.equals(memorySpaceId))
|| (oldMemorySpaceId == null && memorySpaceId != null)) {
try {
@@ -585,7 +585,7 @@ public class MemoryBrowser extends ViewPart
// widgets update require Display
runOnUIThread(() -> fGotoAddressBar
.handleExpressionStatus(new Status(Status.ERROR, MemoryBrowserPlugin.PLUGIN_ID,
- Messages.getString("MemoryBrowser.FailedToGoToAddressTitle"), e1)));
+ Messages.getString("MemoryBrowser.FailedToGoToAddressTitle"), e1))); //$NON-NLS-1$
}
}
}.start();
@@ -621,11 +621,11 @@ public class MemoryBrowser extends ViewPart
IMemoryBlockRetrieval retrieval = (IMemoryBlockRetrieval) tab.getParent().getData(KEY_RETRIEVAL);
if (retrieval instanceof IMemorySpaceAwareMemoryBlockRetrieval) {
label = ((IMemorySpaceAwareMemoryBlockRetrieval) retrieval)
- .encodeAddress("0x" + viewportAddress.toString(16), memorySpaceID);
+ .encodeAddress("0x" + viewportAddress.toString(16), memorySpaceID); //$NON-NLS-1$
}
}
if (label == null) {
- label = "0x" + viewportAddress.toString(16);
+ label = "0x" + viewportAddress.toString(16); //$NON-NLS-1$
}
// If the expression that was went to ("Go") is not a hex address,
@@ -639,13 +639,13 @@ public class MemoryBrowser extends ViewPart
//
String expression = (String) tab.getData(KEY_EXPRESSION);
BigInteger evaluatedAddress = (BigInteger) tab.getData(KEY_EXPRESSION_ADDRESS);
- if (expression != null && !expression.equals("0x" + viewportAddress.toString(16))) {
- label += " - " + expression;
+ if (expression != null && !expression.equals("0x" + viewportAddress.toString(16))) { //$NON-NLS-1$
+ label += " - " + expression; //$NON-NLS-1$
BigInteger delta = evaluatedAddress.subtract(viewportAddress);
if (!delta.equals(BigInteger.ZERO)) {
- label += "(";
+ label += "("; //$NON-NLS-1$
label += delta.signum() < 0 ? '+' : '-';
- label += "0x" + delta.abs().toString(16) + ")";
+ label += "0x" + delta.abs().toString(16) + ")"; //$NON-NLS-1$ //$NON-NLS-2$
}
}
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/src/org/eclipse/cdt/debug/ui/memory/memorybrowser/MemoryBrowserPreferenceInitializer.java b/memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/src/org/eclipse/cdt/debug/ui/memory/memorybrowser/MemoryBrowserPreferenceInitializer.java
index 5e9b0779ff7..4580f6b8f05 100644
--- a/memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/src/org/eclipse/cdt/debug/ui/memory/memorybrowser/MemoryBrowserPreferenceInitializer.java
+++ b/memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/src/org/eclipse/cdt/debug/ui/memory/memorybrowser/MemoryBrowserPreferenceInitializer.java
@@ -26,7 +26,7 @@ public class MemoryBrowserPreferenceInitializer extends AbstractPreferenceInitia
IPreferenceStore store = MemoryBrowserPlugin.getDefault().getPreferenceStore();
// The following preferences should be kept in the store
- store.setDefault(MemoryBrowser.PREF_DEFAULT_RENDERING, "");
+ store.setDefault(MemoryBrowser.PREF_DEFAULT_RENDERING, ""); //$NON-NLS-1$
}
}
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.search/.classpath b/memory/org.eclipse.cdt.debug.ui.memory.search/.classpath
index 22f30643cba..e801ebfb468 100644
--- a/memory/org.eclipse.cdt.debug.ui.memory.search/.classpath
+++ b/memory/org.eclipse.cdt.debug.ui.memory.search/.classpath
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.search/.project b/memory/org.eclipse.cdt.debug.ui.memory.search/.project
index 7d2db578ea9..f0c07debbc1 100644
--- a/memory/org.eclipse.cdt.debug.ui.memory.search/.project
+++ b/memory/org.eclipse.cdt.debug.ui.memory.search/.project
@@ -10,8 +10,25 @@
<arguments>
</arguments>
</buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
</natures>
</projectDescription>
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.search/.settings/org.eclipse.core.resources.prefs b/memory/org.eclipse.cdt.debug.ui.memory.search/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.ui.memory.search/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.search/.settings/org.eclipse.jdt.core.prefs b/memory/org.eclipse.cdt.debug.ui.memory.search/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/memory/org.eclipse.cdt.debug.ui.memory.search/.settings/org.eclipse.jdt.core.prefs
+++ b/memory/org.eclipse.cdt.debug.ui.memory.search/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.search/.settings/org.eclipse.jdt.ui.prefs b/memory/org.eclipse.cdt.debug.ui.memory.search/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/memory/org.eclipse.cdt.debug.ui.memory.search/.settings/org.eclipse.jdt.ui.prefs
+++ b/memory/org.eclipse.cdt.debug.ui.memory.search/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.search/META-INF/MANIFEST.MF b/memory/org.eclipse.cdt.debug.ui.memory.search/META-INF/MANIFEST.MF
index ccaa7f42f85..764ed75d185 100644
--- a/memory/org.eclipse.cdt.debug.ui.memory.search/META-INF/MANIFEST.MF
+++ b/memory/org.eclipse.cdt.debug.ui.memory.search/META-INF/MANIFEST.MF
@@ -2,8 +2,11 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.debug.ui.memory.search;singleton:=true
-Bundle-Version: 1.3.100.qualifier
+Bundle-Version: 1.4.100.qualifier
+Bundle-Activator: org.eclipse.cdt.debug.ui.memory.search.MemorySearchPlugin
+Bundle-Vendor: %providerName
Bundle-Localization: plugin
+Export-Package: org.eclipse.cdt.debug.ui.memory.search
Require-Bundle: org.eclipse.debug.core,
org.eclipse.debug.ui,
org.eclipse.core.runtime,
@@ -12,9 +15,7 @@ Require-Bundle: org.eclipse.debug.core,
org.eclipse.ui,
org.eclipse.search;bundle-version="3.4.0",
org.eclipse.cdt.debug.ui;bundle-version="6.0.0"
-Eclipse-LazyStart: true
-Bundle-Activator: org.eclipse.cdt.debug.ui.memory.search.MemorySearchPlugin
-Bundle-Vendor: %providerName
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Import-Package: org.eclipse.debug.ui.memory
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Export-Package: org.eclipse.cdt.debug.ui.memory.search
+Eclipse-LazyStart: true
+Automatic-Module-Name: org.eclipse.cdt.debug.ui.memory.search
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.search/about.html b/memory/org.eclipse.cdt.debug.ui.memory.search/about.html
index 164f781a8fd..b3134865230 100644
--- a/memory/org.eclipse.cdt.debug.ui.memory.search/about.html
+++ b/memory/org.eclipse.cdt.debug.ui.memory.search/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.traditional/.classpath b/memory/org.eclipse.cdt.debug.ui.memory.traditional/.classpath
index 22f30643cba..e801ebfb468 100644
--- a/memory/org.eclipse.cdt.debug.ui.memory.traditional/.classpath
+++ b/memory/org.eclipse.cdt.debug.ui.memory.traditional/.classpath
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.traditional/.settings/org.eclipse.core.resources.prefs b/memory/org.eclipse.cdt.debug.ui.memory.traditional/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.ui.memory.traditional/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.traditional/.settings/org.eclipse.jdt.core.prefs b/memory/org.eclipse.cdt.debug.ui.memory.traditional/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/memory/org.eclipse.cdt.debug.ui.memory.traditional/.settings/org.eclipse.jdt.core.prefs
+++ b/memory/org.eclipse.cdt.debug.ui.memory.traditional/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.traditional/.settings/org.eclipse.jdt.ui.prefs b/memory/org.eclipse.cdt.debug.ui.memory.traditional/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/memory/org.eclipse.cdt.debug.ui.memory.traditional/.settings/org.eclipse.jdt.ui.prefs
+++ b/memory/org.eclipse.cdt.debug.ui.memory.traditional/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.traditional/META-INF/MANIFEST.MF b/memory/org.eclipse.cdt.debug.ui.memory.traditional/META-INF/MANIFEST.MF
index dd1632d6c75..fe3852b13ee 100644
--- a/memory/org.eclipse.cdt.debug.ui.memory.traditional/META-INF/MANIFEST.MF
+++ b/memory/org.eclipse.cdt.debug.ui.memory.traditional/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.debug.ui.memory.traditional;singleton:=true
-Bundle-Version: 1.5.100.qualifier
+Bundle-Version: 1.6.300.qualifier
Bundle-Localization: plugin
Require-Bundle: org.eclipse.debug.core,
org.eclipse.debug.ui,
@@ -15,7 +15,7 @@ Require-Bundle: org.eclipse.debug.core,
Bundle-ActivationPolicy: lazy
Bundle-Activator: org.eclipse.cdt.debug.ui.memory.traditional.TraditionalRenderingPlugin
Bundle-Vendor: %providerName
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Export-Package: org.eclipse.cdt.debug.ui.memory.traditional,
org.eclipse.cdt.debug.ui.internal
Automatic-Module-Name: org.eclipse.cdt.debug.ui.memory.traditional
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.traditional/about.html b/memory/org.eclipse.cdt.debug.ui.memory.traditional/about.html
index 164f781a8fd..b3134865230 100644
--- a/memory/org.eclipse.cdt.debug.ui.memory.traditional/about.html
+++ b/memory/org.eclipse.cdt.debug.ui.memory.traditional/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.traditional/src/org/eclipse/cdt/debug/ui/internal/MemorySpacePreferencesHelper.java b/memory/org.eclipse.cdt.debug.ui.memory.traditional/src/org/eclipse/cdt/debug/ui/internal/MemorySpacePreferencesHelper.java
index 019598248c0..514e82e5d51 100644
--- a/memory/org.eclipse.cdt.debug.ui.memory.traditional/src/org/eclipse/cdt/debug/ui/internal/MemorySpacePreferencesHelper.java
+++ b/memory/org.eclipse.cdt.debug.ui.memory.traditional/src/org/eclipse/cdt/debug/ui/internal/MemorySpacePreferencesHelper.java
@@ -41,6 +41,7 @@ public class MemorySpacePreferencesHelper implements IMemorySpacePreferencesHelp
private final IPreferenceStore fStore;
// List of RGB colors that we can use, by default, for memory space backgrounds
+ @SuppressWarnings("nls")
private static final String[] fColorPool = { "238,192,192", "250,238,195", "255,179,0", "122,245,0", "184,242,255",
"166,189,215", "206,162,98", "245,138,157", "244,200,0", "255,136,56", "244,255,128" };
@@ -55,7 +56,7 @@ public class MemorySpacePreferencesHelper implements IMemorySpacePreferencesHelp
*/
private String[] getMemorySpaceIds() {
String csv = fStore.getString(TraditionalRenderingPreferenceConstants.MEM_KNOWN_MEMORY_SPACE_ID_LIST_CSV);
- return csv.isEmpty() ? new String[0] : csv.split(",");
+ return csv.isEmpty() ? new String[0] : csv.split(","); //$NON-NLS-1$
}
/* (non-Javadoc)
@@ -94,7 +95,7 @@ public class MemorySpacePreferencesHelper implements IMemorySpacePreferencesHelp
for (int i = 0; i < memorySpaces.length; i++) {
csv.append(memorySpaces[i]);
if (i < memorySpaces.length - 1) {
- csv.append(",");
+ csv.append(","); //$NON-NLS-1$
}
}
@@ -113,14 +114,14 @@ public class MemorySpacePreferencesHelper implements IMemorySpacePreferencesHelp
public Map<String, String> getMemorySpaceLabels() {
String prefix = TraditionalRenderingPreferenceConstants.MEM_MEMORY_SPACE_ID_PREFIX;
String labelPrefix = TraditionalRenderingMessages
- .getString("TraditionalRenderingPreferencePage_BackgroundColorMemorySpacePrefix");
+ .getString("TraditionalRenderingPreferencePage_BackgroundColorMemorySpacePrefix"); //$NON-NLS-1$
String[] ids = getMemorySpaceIds();
Map<String, String> keysToLabels = new HashMap<>();
String key, label;
for (int i = 0; i < ids.length; i++) {
key = prefix + ids[i];
- label = labelPrefix + " " + ids[i];
+ label = labelPrefix + " " + ids[i]; //$NON-NLS-1$
keysToLabels.put(key, label);
}
return keysToLabels;
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.traditional/src/org/eclipse/cdt/debug/ui/memory/traditional/AbstractPane.java b/memory/org.eclipse.cdt.debug.ui.memory.traditional/src/org/eclipse/cdt/debug/ui/memory/traditional/AbstractPane.java
index 27906b65faa..27906b65faa 100755..100644
--- a/memory/org.eclipse.cdt.debug.ui.memory.traditional/src/org/eclipse/cdt/debug/ui/memory/traditional/AbstractPane.java
+++ b/memory/org.eclipse.cdt.debug.ui.memory.traditional/src/org/eclipse/cdt/debug/ui/memory/traditional/AbstractPane.java
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.traditional/src/org/eclipse/cdt/debug/ui/memory/traditional/AddressPane.java b/memory/org.eclipse.cdt.debug.ui.memory.traditional/src/org/eclipse/cdt/debug/ui/memory/traditional/AddressPane.java
index f14eca43bfc..9cd74a8a892 100644
--- a/memory/org.eclipse.cdt.debug.ui.memory.traditional/src/org/eclipse/cdt/debug/ui/memory/traditional/AddressPane.java
+++ b/memory/org.eclipse.cdt.debug.ui.memory.traditional/src/org/eclipse/cdt/debug/ui/memory/traditional/AddressPane.java
@@ -74,7 +74,7 @@ public class AddressPane extends AbstractPane {
GC gc = new GC(this);
StringBuilder buf = new StringBuilder();
for (int i = 0; i < getCellCharacterCount(); i++)
- buf.append("0");
+ buf.append("0"); //$NON-NLS-1$
int width = gc.textExtent(buf.toString()).x;
gc.dispose();
return width;
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.traditional/src/org/eclipse/cdt/debug/ui/memory/traditional/ColorAndEffectFieldEditor.java b/memory/org.eclipse.cdt.debug.ui.memory.traditional/src/org/eclipse/cdt/debug/ui/memory/traditional/ColorAndEffectFieldEditor.java
index df8830a3442..21cf5d3b543 100644
--- a/memory/org.eclipse.cdt.debug.ui.memory.traditional/src/org/eclipse/cdt/debug/ui/memory/traditional/ColorAndEffectFieldEditor.java
+++ b/memory/org.eclipse.cdt.debug.ui.memory.traditional/src/org/eclipse/cdt/debug/ui/memory/traditional/ColorAndEffectFieldEditor.java
@@ -56,15 +56,15 @@ public class ColorAndEffectFieldEditor extends FieldEditor {
colorSelector.getButton().setLayoutData(new GridData());
checkBold = new Button(parent, SWT.CHECK);
- checkBold.setText(TraditionalRenderingMessages.getString("ColorAndEffectFieldEditor.bold"));
+ checkBold.setText(TraditionalRenderingMessages.getString("ColorAndEffectFieldEditor.bold")); //$NON-NLS-1$
checkBold.setLayoutData(new GridData());
checkItalic = new Button(parent, SWT.CHECK);
- checkItalic.setText(TraditionalRenderingMessages.getString("ColorAndEffectFieldEditor.italic"));
+ checkItalic.setText(TraditionalRenderingMessages.getString("ColorAndEffectFieldEditor.italic")); //$NON-NLS-1$
checkItalic.setLayoutData(new GridData());
checkBox = new Button(parent, SWT.CHECK);
- checkBox.setText(TraditionalRenderingMessages.getString("ColorAndEffectFieldEditor.box"));
+ checkBox.setText(TraditionalRenderingMessages.getString("ColorAndEffectFieldEditor.box")); //$NON-NLS-1$
checkBox.setLayoutData(new GridData());
}
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.traditional/src/org/eclipse/cdt/debug/ui/memory/traditional/DataPane.java b/memory/org.eclipse.cdt.debug.ui.memory.traditional/src/org/eclipse/cdt/debug/ui/memory/traditional/DataPane.java
index fd332f8f866..6a892b2bffd 100644
--- a/memory/org.eclipse.cdt.debug.ui.memory.traditional/src/org/eclipse/cdt/debug/ui/memory/traditional/DataPane.java
+++ b/memory/org.eclipse.cdt.debug.ui.memory.traditional/src/org/eclipse/cdt/debug/ui/memory/traditional/DataPane.java
@@ -42,7 +42,7 @@ import org.eclipse.swt.widgets.Shell;
public class DataPane extends AbstractPane {
private Shell fToolTipShell;
- private final static String UNICODE_NORTH_WEST_ARROW = "\u2196";
+ private final static String UNICODE_NORTH_WEST_ARROW = "\u2196"; //$NON-NLS-1$
public DataPane(Rendering parent) {
super(parent);
@@ -542,7 +542,7 @@ public class DataPane extends AbstractPane {
}
// Display the associated textual information
- String info = fRendering.buildAddressInfoString(startAddress, ",", false);
+ String info = fRendering.buildAddressInfoString(startAddress, ",", false); //$NON-NLS-1$
if (info.length() > 0) {
// Add one character e.g. up arrow, to indicate the start of the data i.e. upper or lower row
gc.drawText(UNICODE_NORTH_WEST_ARROW + info, location.x, location.y + getCellTextHeight());
@@ -654,9 +654,8 @@ public class DataPane extends AbstractPane {
// TODO consider adding finer granularity?
boolean anyByteEditing = false;
for (int n = 0; n < bytes.length && !anyByteEditing; n++)
- if (bytes[n] instanceof TraditionalMemoryByte)
- if (bytes[n].isEdited())
- anyByteEditing = true;
+ if (bytes[n].isEdited())
+ anyByteEditing = true;
TraditionalRendering ren = fRendering.getTraditionalRendering();
@@ -758,13 +757,13 @@ public class DataPane extends AbstractPane {
private void diplayToolTip(Point hoverPoint, BigInteger subAddress) {
// Show the current hovering address as the first line in the tooltip
- StringBuilder sb = new StringBuilder("0x").append(subAddress.toString(16));
+ StringBuilder sb = new StringBuilder("0x").append(subAddress.toString(16)); //$NON-NLS-1$
// Add additional address information, if available
if (fRendering.hasAddressInfo(subAddress)) {
- String info = fRendering.buildAddressInfoString(subAddress, "\n", true);
+ String info = fRendering.buildAddressInfoString(subAddress, "\n", true); //$NON-NLS-1$
if (info.length() > 0) {
- sb.append("\n").append(info);
+ sb.append("\n").append(info); //$NON-NLS-1$
}
}
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.traditional/src/org/eclipse/cdt/debug/ui/memory/traditional/Rendering.java b/memory/org.eclipse.cdt.debug.ui.memory.traditional/src/org/eclipse/cdt/debug/ui/memory/traditional/Rendering.java
index 146f2efaefc..76ad327000c 100755..100644
--- a/memory/org.eclipse.cdt.debug.ui.memory.traditional/src/org/eclipse/cdt/debug/ui/memory/traditional/Rendering.java
+++ b/memory/org.eclipse.cdt.debug.ui.memory.traditional/src/org/eclipse/cdt/debug/ui/memory/traditional/Rendering.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2006, 2016 Wind River Systems, Inc. and others.
+ * Copyright (c) 2006, 2021 Wind River Systems, Inc. and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -13,6 +13,7 @@
* Alvaro Sanchez-Leon (Ericsson AB) - [Memory] Support 16 bit addressable size (Bug 426730)
* Ling Wang (Silicon Laboratories) - Honor start address (Bug 414519)
* Teodor Madan (Freescale) - Fix scrolling for memory spaces with 64-bit address
+ * John Dallaway - Fix byte ordering when addressableSize != 1 (Bug 576058)
*******************************************************************************/
package org.eclipse.cdt.debug.ui.memory.traditional;
@@ -714,8 +715,8 @@ public class Rendering extends Composite implements IDebugEventSetListener {
@Override
public void refresh() {
- assert Thread.currentThread().equals(Display.getDefault().getThread()) : TraditionalRenderingMessages
- .getString("TraditionalRendering.CALLED_ON_NON_DISPATCH_THREAD"); //$NON-NLS-1$
+ assert Thread.currentThread().equals(Display.getDefault().getThread())
+ : TraditionalRenderingMessages.getString("TraditionalRendering.CALLED_ON_NON_DISPATCH_THREAD"); //$NON-NLS-1$
if (fCache != null) {
queueRequest(fViewportAddress, getViewportEndAddress());
@@ -724,8 +725,8 @@ public class Rendering extends Composite implements IDebugEventSetListener {
@Override
public void archiveDeltas() {
- assert Thread.currentThread().equals(Display.getDefault().getThread()) : TraditionalRenderingMessages
- .getString("TraditionalRendering.CALLED_ON_NON_DISPATCH_THREAD"); //$NON-NLS-1$
+ assert Thread.currentThread().equals(Display.getDefault().getThread())
+ : TraditionalRenderingMessages.getString("TraditionalRendering.CALLED_ON_NON_DISPATCH_THREAD"); //$NON-NLS-1$
if (fCache != null) {
queueRequestArchiveDeltas();
@@ -836,7 +837,7 @@ public class Rendering extends Composite implements IDebugEventSetListener {
for (int unit = 0; unit < units; unit++) {
for (int unitbyte = 0; unitbyte < unitSize; unitbyte++) {
cachedBytesAsByteSequence[unit * unitSize + unitbyte] = cachedBytes[unit * unitSize
- + unitSize - unitbyte];
+ + unitSize - unitbyte - 1];
}
}
cachedBytes = cachedBytesAsByteSequence;
@@ -899,8 +900,8 @@ public class Rendering extends Composite implements IDebugEventSetListener {
// bytes will be fetched from cache
@Override
public TraditionalMemoryByte[] getBytes(BigInteger address, int bytesRequested) throws DebugException {
- assert Thread.currentThread().equals(Display.getDefault().getThread()) : TraditionalRenderingMessages
- .getString("TraditionalRendering.CALLED_ON_NON_DISPATCH_THREAD"); //$NON-NLS-1$
+ assert Thread.currentThread().equals(Display.getDefault().getThread())
+ : TraditionalRenderingMessages.getString("TraditionalRendering.CALLED_ON_NON_DISPATCH_THREAD"); //$NON-NLS-1$
//calculate the number of units needed for the number of requested bytes
int rem = (bytesRequested % getAddressableSize()) > 0 ? 1 : 0;
@@ -943,23 +944,23 @@ public class Rendering extends Composite implements IDebugEventSetListener {
@Override
public boolean containsEditedCell(BigInteger address) {
- assert Thread.currentThread().equals(Display.getDefault().getThread()) : TraditionalRenderingMessages
- .getString("TraditionalRendering.CALLED_ON_NON_DISPATCH_THREAD"); //$NON-NLS-1$
+ assert Thread.currentThread().equals(Display.getDefault().getThread())
+ : TraditionalRenderingMessages.getString("TraditionalRendering.CALLED_ON_NON_DISPATCH_THREAD"); //$NON-NLS-1$
return fEditBuffer.containsKey(address);
}
private TraditionalMemoryByte[] getEditedMemory(BigInteger address) {
- assert Thread.currentThread().equals(Display.getDefault().getThread()) : TraditionalRenderingMessages
- .getString("TraditionalRendering.CALLED_ON_NON_DISPATCH_THREAD"); //$NON-NLS-1$
+ assert Thread.currentThread().equals(Display.getDefault().getThread())
+ : TraditionalRenderingMessages.getString("TraditionalRendering.CALLED_ON_NON_DISPATCH_THREAD"); //$NON-NLS-1$
return fEditBuffer.get(address);
}
@Override
public void clearEditBuffer() {
- assert Thread.currentThread().equals(Display.getDefault().getThread()) : TraditionalRenderingMessages
- .getString("TraditionalRendering.CALLED_ON_NON_DISPATCH_THREAD"); //$NON-NLS-1$
+ assert Thread.currentThread().equals(Display.getDefault().getThread())
+ : TraditionalRenderingMessages.getString("TraditionalRendering.CALLED_ON_NON_DISPATCH_THREAD"); //$NON-NLS-1$
fEditBuffer.clear();
Rendering.this.redrawPanes();
@@ -967,8 +968,8 @@ public class Rendering extends Composite implements IDebugEventSetListener {
@Override
public void writeEditBuffer() {
- assert Thread.currentThread().equals(Display.getDefault().getThread()) : TraditionalRenderingMessages
- .getString("TraditionalRendering.CALLED_ON_NON_DISPATCH_THREAD"); //$NON-NLS-1$
+ assert Thread.currentThread().equals(Display.getDefault().getThread())
+ : TraditionalRenderingMessages.getString("TraditionalRendering.CALLED_ON_NON_DISPATCH_THREAD"); //$NON-NLS-1$
Set<BigInteger> keySet = fEditBuffer.keySet();
Iterator<BigInteger> iterator = keySet.iterator();
@@ -987,7 +988,7 @@ public class Rendering extends Composite implements IDebugEventSetListener {
block.setValue(offset, byteValue);
} catch (Exception e) {
MemoryViewUtil.openError(
- TraditionalRenderingMessages.getString("TraditionalRendering.FAILURE_WRITE_MEMORY"), "", e);
+ TraditionalRenderingMessages.getString("TraditionalRendering.FAILURE_WRITE_MEMORY"), "", e); //$NON-NLS-1$ //$NON-NLS-2$
logError(TraditionalRenderingMessages.getString("TraditionalRendering.FAILURE_WRITE_MEMORY"), e); //$NON-NLS-1$
}
@@ -998,8 +999,8 @@ public class Rendering extends Composite implements IDebugEventSetListener {
@Override
public void setEditedValue(BigInteger address, TraditionalMemoryByte[] bytes) {
- assert Thread.currentThread().equals(Display.getDefault().getThread()) : TraditionalRenderingMessages
- .getString("TraditionalRendering.CALLED_ON_NON_DISPATCH_THREAD"); //$NON-NLS-1$
+ assert Thread.currentThread().equals(Display.getDefault().getThread())
+ : TraditionalRenderingMessages.getString("TraditionalRendering.CALLED_ON_NON_DISPATCH_THREAD"); //$NON-NLS-1$
fEditBuffer.put(address, bytes);
Rendering.this.redrawPanes();
@@ -1009,7 +1010,7 @@ public class Rendering extends Composite implements IDebugEventSetListener {
public void setVisibleAddressBar(boolean visible) {
fAddressBarControl.setVisible(visible);
if (visible) {
- String selectedStr = "0x" + getCaretAddress().toString(16);
+ String selectedStr = "0x" + getCaretAddress().toString(16); //$NON-NLS-1$
Text text = fAddressBar.getExpressionWidget();
text.setText(selectedStr);
text.setSelection(0, text.getCharCount());
@@ -1444,9 +1445,9 @@ public class Rendering extends Composite implements IDebugEventSetListener {
protected void setCurrentScrollSelection() {
BigInteger viewportStartAddress = getViewportStartAddress();
if (TraceOptions.DEBUG) {
- TraceOptions.trace(MessageFormat.format("Update scroll for viewrange[0x{0} : 0x{1}]:\n",
+ TraceOptions.trace(MessageFormat.format("Update scroll for viewrange[0x{0} : 0x{1}]:\n", //$NON-NLS-1$
viewportStartAddress.toString(16), getViewportEndAddress().toString(16)));
- TraceOptions.trace(MessageFormat.format(" current ScrollRange=[0x{0} : 0x{1}]; selection = {2}\n",
+ TraceOptions.trace(MessageFormat.format(" current ScrollRange=[0x{0} : 0x{1}]; selection = {2}\n", //$NON-NLS-1$
getScrollStartAddress().toString(16), getScrollEndAddress().toString(16), fCurrentScrollSelection));
}
BigInteger addressableRow = BigInteger.valueOf(getAddressableCellsPerRow());
@@ -1460,7 +1461,7 @@ public class Rendering extends Composite implements IDebugEventSetListener {
setScrollStartAddress(newScrollStart);
if (TraceOptions.DEBUG) {
- TraceOptions.trace(MessageFormat.format(" new ScrollRange=[0x{0} : 0x{1}]\n",
+ TraceOptions.trace(MessageFormat.format(" new ScrollRange=[0x{0} : 0x{1}]\n", //$NON-NLS-1$
getScrollStartAddress().toString(16), getScrollEndAddress().toString(16)));
}
} else if (getViewportEndAddress().compareTo(getScrollEndAddress()) >= 0) {
@@ -1477,7 +1478,7 @@ public class Rendering extends Composite implements IDebugEventSetListener {
setScrollStartAddress(newScrollStart);
if (TraceOptions.DEBUG) {
- TraceOptions.trace(MessageFormat.format(" new ScrollRange=[0x{0} : 0x{1}]\n",
+ TraceOptions.trace(MessageFormat.format(" new ScrollRange=[0x{0} : 0x{1}]\n", //$NON-NLS-1$
getScrollStartAddress().toString(16), getScrollEndAddress().toString(16)));
}
}
@@ -1486,7 +1487,7 @@ public class Rendering extends Composite implements IDebugEventSetListener {
fCurrentScrollSelection = viewportStartAddress.subtract(getScrollStartAddress()).divide(addressableRow)
.intValue() + 1;
if (TraceOptions.DEBUG) {
- TraceOptions.trace(MessageFormat.format(" new selection={0}\n", fCurrentScrollSelection));
+ TraceOptions.trace(MessageFormat.format(" new selection={0}\n", fCurrentScrollSelection)); //$NON-NLS-1$
}
getVerticalBar().setSelection(fCurrentScrollSelection);
}
@@ -1581,14 +1582,14 @@ public class Rendering extends Composite implements IDebugEventSetListener {
protected String getCharacterSet(int mode) {
switch (mode) {
case Rendering.TEXT_UTF8:
- return "UTF8";
+ return "UTF8"; //$NON-NLS-1$
case Rendering.TEXT_UTF16:
- return "UTF16";
+ return "UTF16"; //$NON-NLS-1$
case Rendering.TEXT_USASCII:
- return "US-ASCII";
+ return "US-ASCII"; //$NON-NLS-1$
case Rendering.TEXT_ISO_8859_1:
default:
- return "ISO-8859-1";
+ return "ISO-8859-1"; //$NON-NLS-1$
}
}
@@ -1711,7 +1712,7 @@ public class Rendering extends Composite implements IDebugEventSetListener {
try {
clip = new Clipboard(getDisplay());
- String addressString = "0x" + getCaretAddress().toString(16);
+ String addressString = "0x" + getCaretAddress().toString(16); //$NON-NLS-1$
TextTransfer plainTextTransfer = TextTransfer.getInstance();
clip.setContents(new Object[] { addressString }, new Transfer[] { plainTextTransfer });
@@ -2024,7 +2025,7 @@ public class Rendering extends Composite implements IDebugEventSetListener {
* type e.g. Variables, Registers, etc.
*/
String buildAddressInfoString(BigInteger address, String separator, boolean addTypeHeaders) {
- return "";
+ return ""; //$NON-NLS-1$
}
/**
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.traditional/src/org/eclipse/cdt/debug/ui/memory/traditional/RenderingAddressInfo.java b/memory/org.eclipse.cdt.debug.ui.memory.traditional/src/org/eclipse/cdt/debug/ui/memory/traditional/RenderingAddressInfo.java
index dc708d0364a..15fdfe8561e 100644
--- a/memory/org.eclipse.cdt.debug.ui.memory.traditional/src/org/eclipse/cdt/debug/ui/memory/traditional/RenderingAddressInfo.java
+++ b/memory/org.eclipse.cdt.debug.ui.memory.traditional/src/org/eclipse/cdt/debug/ui/memory/traditional/RenderingAddressInfo.java
@@ -481,7 +481,7 @@ public class RenderingAddressInfo extends Rendering implements IDebugContextList
List<IMemoryBlockAddressInfoItem> infoItems) {
if (infoItems == null || infoItems.size() < 1) {
// No information to display
- return "";
+ return ""; //$NON-NLS-1$
}
// The container string builder for all types
@@ -496,7 +496,7 @@ public class RenderingAddressInfo extends Rendering implements IDebugContextList
if (typeBuilder == null) {
// Create a String builder per information type
if (addTypeHeaders) {
- typeBuilder = new StringBuilder(infoType).append(":").append(separator);
+ typeBuilder = new StringBuilder(infoType).append(":").append(separator); //$NON-NLS-1$
} else {
typeBuilder = new StringBuilder();
}
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.traditional/src/org/eclipse/cdt/debug/ui/memory/traditional/TraditionalRendering.java b/memory/org.eclipse.cdt.debug.ui.memory.traditional/src/org/eclipse/cdt/debug/ui/memory/traditional/TraditionalRendering.java
index 61b00a09477..e90daf2b19c 100644
--- a/memory/org.eclipse.cdt.debug.ui.memory.traditional/src/org/eclipse/cdt/debug/ui/memory/traditional/TraditionalRendering.java
+++ b/memory/org.eclipse.cdt.debug.ui.memory.traditional/src/org/eclipse/cdt/debug/ui/memory/traditional/TraditionalRendering.java
@@ -484,7 +484,7 @@ public class TraditionalRendering extends AbstractMemoryRendering implements IRe
// has a memory-space-specific background color been set for the associated memory space?
if (fMemorySpaceId != null) {
String key = fMemSpacePreferenceHelper.getMemorySpaceKey(fMemorySpaceId);
- if (store.getString(key) != "") {
+ if (store.getString(key) != "") { //$NON-NLS-1$
colorBackground = new Color(Display.getDefault(), PreferenceConverter.getColor(store, key));
}
}
@@ -1269,7 +1269,7 @@ public class TraditionalRendering extends AbstractMemoryRendering implements IRe
if (fConnection == null) {
fConnection = () -> {
// update UI asynchronously
- Display display = TraditionalRenderingPlugin.getDefault().getWorkbench().getDisplay();
+ Display display = PlatformUI.getWorkbench().getDisplay();
display.asyncExec(() -> {
try {
if (fBigBaseAddress != TraditionalRendering.this.fRendering.getMemoryBlock()
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.traditional/src/org/eclipse/cdt/debug/ui/memory/traditional/TraditionalRenderingPreferenceConstants.java b/memory/org.eclipse.cdt.debug.ui.memory.traditional/src/org/eclipse/cdt/debug/ui/memory/traditional/TraditionalRenderingPreferenceConstants.java
index a788dbf7096..dcb9e2ece07 100644
--- a/memory/org.eclipse.cdt.debug.ui.memory.traditional/src/org/eclipse/cdt/debug/ui/memory/traditional/TraditionalRenderingPreferenceConstants.java
+++ b/memory/org.eclipse.cdt.debug.ui.memory.traditional/src/org/eclipse/cdt/debug/ui/memory/traditional/TraditionalRenderingPreferenceConstants.java
@@ -19,53 +19,53 @@ package org.eclipse.cdt.debug.ui.memory.traditional;
*/
public class TraditionalRenderingPreferenceConstants {
- public static final String MEM_COLOR_CHANGED = "memoryColorChanged";
- public static final String MEM_COLOR_CHANGED_ITALIC = "memoryColorChanged.italic";
- public static final String MEM_COLOR_CHANGED_BOLD = "memoryColorChanged.bold";
- public static final String MEM_COLOR_CHANGED_BOX = "memoryColorChanged.box";
+ public static final String MEM_COLOR_CHANGED = "memoryColorChanged"; //$NON-NLS-1$
+ public static final String MEM_COLOR_CHANGED_ITALIC = "memoryColorChanged.italic"; //$NON-NLS-1$
+ public static final String MEM_COLOR_CHANGED_BOLD = "memoryColorChanged.bold"; //$NON-NLS-1$
+ public static final String MEM_COLOR_CHANGED_BOX = "memoryColorChanged.box"; //$NON-NLS-1$
- public static final String MEM_COLOR_EDIT = "memoryColorEdit";
- public static final String MEM_COLOR_EDIT_ITALIC = "memoryColorEdit.italic";
- public static final String MEM_COLOR_EDIT_BOLD = "memoryColorEdit.bold";
- public static final String MEM_COLOR_EDIT_BOX = "memoryColorEdit.box";
+ public static final String MEM_COLOR_EDIT = "memoryColorEdit"; //$NON-NLS-1$
+ public static final String MEM_COLOR_EDIT_ITALIC = "memoryColorEdit.italic"; //$NON-NLS-1$
+ public static final String MEM_COLOR_EDIT_BOLD = "memoryColorEdit.bold"; //$NON-NLS-1$
+ public static final String MEM_COLOR_EDIT_BOX = "memoryColorEdit.box"; //$NON-NLS-1$
- public static final String MEM_USE_GLOBAL_BACKGROUND = "memUseGlobalBackground";
+ public static final String MEM_USE_GLOBAL_BACKGROUND = "memUseGlobalBackground"; //$NON-NLS-1$
- public static final String MEM_COLOR_BACKGROUND = "memoryColorBackground";
+ public static final String MEM_COLOR_BACKGROUND = "memoryColorBackground"; //$NON-NLS-1$
- public static final String MEM_COLOR_TEXT = "memoryColorText";
+ public static final String MEM_COLOR_TEXT = "memoryColorText"; //$NON-NLS-1$
- public static final String MEM_USE_GLOBAL_SELECTION = "memUseGlobalSelection";
+ public static final String MEM_USE_GLOBAL_SELECTION = "memUseGlobalSelection"; //$NON-NLS-1$
- public static final String MEM_COLOR_SELECTION = "memoryColorSelection";
+ public static final String MEM_COLOR_SELECTION = "memoryColorSelection"; //$NON-NLS-1$
- public static final String MEM_USE_GLOBAL_TEXT = "memUseGlobalText";
+ public static final String MEM_USE_GLOBAL_TEXT = "memUseGlobalText"; //$NON-NLS-1$
- public static final String MEM_LIGHTEN_DARKEN_ALTERNATE_CELLS = "memoryColorScaleTextAlternate";
+ public static final String MEM_LIGHTEN_DARKEN_ALTERNATE_CELLS = "memoryColorScaleTextAlternate"; //$NON-NLS-1$
- public static final String MEM_EDIT_BUFFER_SAVE = "memoryEditBufferSave";
+ public static final String MEM_EDIT_BUFFER_SAVE = "memoryEditBufferSave"; //$NON-NLS-1$
- public static final String MEM_EDIT_BUFFER_SAVE_ON_ENTER_ONLY = "saveOnEnterCancelOnFocusLost";
+ public static final String MEM_EDIT_BUFFER_SAVE_ON_ENTER_ONLY = "saveOnEnterCancelOnFocusLost"; //$NON-NLS-1$
- public static final String MEM_EDIT_BUFFER_SAVE_ON_ENTER_OR_FOCUS_LOST = "saveOnEnterOrFocusLost";
+ public static final String MEM_EDIT_BUFFER_SAVE_ON_ENTER_OR_FOCUS_LOST = "saveOnEnterOrFocusLost"; //$NON-NLS-1$
- public static final String MEM_HISTORY_TRAILS_COUNT = "memoryHistoryTrailsCount";
+ public static final String MEM_HISTORY_TRAILS_COUNT = "memoryHistoryTrailsCount"; //$NON-NLS-1$
- public static final String MEM_DEFAULT_COPY_ACTION = "memoryDefaultCopyAction";
+ public static final String MEM_DEFAULT_COPY_ACTION = "memoryDefaultCopyAction"; //$NON-NLS-1$
// support for memory space - specific coloring
/**
* @since 1.4
*/
- public static final String MEM_KNOWN_MEMORY_SPACE_ID_LIST_CSV = "memorySpaceIdList";
+ public static final String MEM_KNOWN_MEMORY_SPACE_ID_LIST_CSV = "memorySpaceIdList"; //$NON-NLS-1$
/**
* @since 1.4
*/
- public static final String MEM_MEMORY_SPACE_ID_PREFIX = MEM_COLOR_BACKGROUND + "MemorySpace-";
+ public static final String MEM_MEMORY_SPACE_ID_PREFIX = MEM_COLOR_BACKGROUND + "MemorySpace-"; //$NON-NLS-1$
/**
* @since 1.4
*/
- public static final String MEM_CROSS_REFERENCE_INFO = "memCrossReferenceInfo";
+ public static final String MEM_CROSS_REFERENCE_INFO = "memCrossReferenceInfo"; //$NON-NLS-1$
}
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.traditional/src/org/eclipse/cdt/debug/ui/memory/traditional/TraditionalRenderingPreferenceInitializer.java b/memory/org.eclipse.cdt.debug.ui.memory.traditional/src/org/eclipse/cdt/debug/ui/memory/traditional/TraditionalRenderingPreferenceInitializer.java
index 996ba81825a..19a8ba765cf 100644
--- a/memory/org.eclipse.cdt.debug.ui.memory.traditional/src/org/eclipse/cdt/debug/ui/memory/traditional/TraditionalRenderingPreferenceInitializer.java
+++ b/memory/org.eclipse.cdt.debug.ui.memory.traditional/src/org/eclipse/cdt/debug/ui/memory/traditional/TraditionalRenderingPreferenceInitializer.java
@@ -35,29 +35,26 @@ public class TraditionalRenderingPreferenceInitializer extends AbstractPreferenc
store.setDefault(TraditionalRenderingPreferenceConstants.MEM_USE_GLOBAL_BACKGROUND, true);
store.setDefault(TraditionalRenderingPreferenceConstants.MEM_USE_GLOBAL_SELECTION, true);
- store.setDefault(TraditionalRenderingPreferenceConstants.MEM_COLOR_CHANGED, "255,0,0");
+ store.setDefault(TraditionalRenderingPreferenceConstants.MEM_COLOR_CHANGED, "255,0,0"); //$NON-NLS-1$
store.setDefault(TraditionalRenderingPreferenceConstants.MEM_COLOR_CHANGED_ITALIC, false);
store.setDefault(TraditionalRenderingPreferenceConstants.MEM_COLOR_CHANGED_BOLD, false);
store.setDefault(TraditionalRenderingPreferenceConstants.MEM_COLOR_CHANGED_BOX, true);
- store.setDefault(TraditionalRenderingPreferenceConstants.MEM_COLOR_EDIT, "0,255,0");
+ store.setDefault(TraditionalRenderingPreferenceConstants.MEM_COLOR_EDIT, "0,255,0"); //$NON-NLS-1$
store.setDefault(TraditionalRenderingPreferenceConstants.MEM_COLOR_EDIT_ITALIC, true);
store.setDefault(TraditionalRenderingPreferenceConstants.MEM_COLOR_EDIT_BOLD, false);
store.setDefault(TraditionalRenderingPreferenceConstants.MEM_COLOR_EDIT_BOX, true);
Color systemSelection = Display.getDefault().getSystemColor(SWT.COLOR_LIST_SELECTION);
- store.setDefault(TraditionalRenderingPreferenceConstants.MEM_COLOR_SELECTION,
- systemSelection.getRed() + "," + systemSelection.getGreen() + "," + systemSelection.getBlue());
+ store.setDefault(TraditionalRenderingPreferenceConstants.MEM_COLOR_SELECTION, toColorString(systemSelection));
- store.setDefault(TraditionalRenderingPreferenceConstants.MEM_LIGHTEN_DARKEN_ALTERNATE_CELLS, "5");
+ store.setDefault(TraditionalRenderingPreferenceConstants.MEM_LIGHTEN_DARKEN_ALTERNATE_CELLS, "5"); //$NON-NLS-1$
Color systemText = Display.getDefault().getSystemColor(SWT.COLOR_LIST_FOREGROUND);
- store.setDefault(TraditionalRenderingPreferenceConstants.MEM_COLOR_TEXT,
- systemText.getRed() + "," + systemText.getGreen() + "," + systemText.getBlue());
+ store.setDefault(TraditionalRenderingPreferenceConstants.MEM_COLOR_TEXT, toColorString(systemText));
Color systemBackground = Display.getDefault().getSystemColor(SWT.COLOR_LIST_BACKGROUND);
- store.setDefault(TraditionalRenderingPreferenceConstants.MEM_COLOR_BACKGROUND,
- systemBackground.getRed() + "," + systemBackground.getGreen() + "," + systemBackground.getBlue());
+ store.setDefault(TraditionalRenderingPreferenceConstants.MEM_COLOR_BACKGROUND, toColorString(systemBackground));
// Set the default background colors, for known memory spaces
IMemorySpacePreferencesHelper util = TraditionalMemoryRenderingFactory.getMemorySpacesPreferencesHelper();
@@ -74,9 +71,12 @@ public class TraditionalRenderingPreferenceInitializer extends AbstractPreferenc
store.setDefault(TraditionalRenderingPreferenceConstants.MEM_EDIT_BUFFER_SAVE,
TraditionalRenderingPreferenceConstants.MEM_EDIT_BUFFER_SAVE_ON_ENTER_ONLY);
- store.setDefault(TraditionalRenderingPreferenceConstants.MEM_HISTORY_TRAILS_COUNT, "1");
+ store.setDefault(TraditionalRenderingPreferenceConstants.MEM_HISTORY_TRAILS_COUNT, "1"); //$NON-NLS-1$
store.setDefault(TraditionalRenderingPreferenceConstants.MEM_CROSS_REFERENCE_INFO, true);
}
+ private String toColorString(Color color) {
+ return String.format("%d,%d,%d", color.getRed(), color.getGreen(), color.getBlue()); //$NON-NLS-1$
+ }
}
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.transport/.classpath b/memory/org.eclipse.cdt.debug.ui.memory.transport/.classpath
index eca7bdba8f0..e801ebfb468 100644
--- a/memory/org.eclipse.cdt.debug.ui.memory.transport/.classpath
+++ b/memory/org.eclipse.cdt.debug.ui.memory.transport/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.transport/.settings/org.eclipse.core.resources.prefs b/memory/org.eclipse.cdt.debug.ui.memory.transport/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.ui.memory.transport/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.transport/.settings/org.eclipse.jdt.core.prefs b/memory/org.eclipse.cdt.debug.ui.memory.transport/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/memory/org.eclipse.cdt.debug.ui.memory.transport/.settings/org.eclipse.jdt.core.prefs
+++ b/memory/org.eclipse.cdt.debug.ui.memory.transport/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.transport/.settings/org.eclipse.jdt.ui.prefs b/memory/org.eclipse.cdt.debug.ui.memory.transport/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/memory/org.eclipse.cdt.debug.ui.memory.transport/.settings/org.eclipse.jdt.ui.prefs
+++ b/memory/org.eclipse.cdt.debug.ui.memory.transport/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.transport/META-INF/MANIFEST.MF b/memory/org.eclipse.cdt.debug.ui.memory.transport/META-INF/MANIFEST.MF
index 50f2afd7066..ed5696ea0bf 100644
--- a/memory/org.eclipse.cdt.debug.ui.memory.transport/META-INF/MANIFEST.MF
+++ b/memory/org.eclipse.cdt.debug.ui.memory.transport/META-INF/MANIFEST.MF
@@ -2,19 +2,21 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.debug.ui.memory.transport;singleton:=true
-Bundle-Version: 2.1.100.qualifier
+Bundle-Version: 2.2.200.qualifier
Bundle-Localization: plugin
Bundle-Vendor: %providerName
-Require-Bundle: org.eclipse.debug.core,
+Require-Bundle: org.eclipse.cdt.debug.core.memory;bundle-version="0.1.0",
+ org.eclipse.debug.core,
org.eclipse.debug.ui,
org.eclipse.core.runtime,
org.eclipse.swt,
org.eclipse.jface,
org.eclipse.ui
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-ActivationPolicy: lazy
Bundle-Activator: org.eclipse.cdt.debug.ui.memory.transport.MemoryTransportPlugin
-Export-Package: org.eclipse.cdt.debug.ui.memory.transport,
+Export-Package: org.eclipse.cdt.debug.internal.ui.memory.transport;x-internal:=true,
+ org.eclipse.cdt.debug.ui.memory.transport,
org.eclipse.cdt.debug.ui.memory.transport.actions,
org.eclipse.cdt.debug.ui.memory.transport.model
Automatic-Module-Name: org.eclipse.cdt.debug.ui.memory.transport
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.transport/about.html b/memory/org.eclipse.cdt.debug.ui.memory.transport/about.html
index 164f781a8fd..b3134865230 100644
--- a/memory/org.eclipse.cdt.debug.ui.memory.transport/about.html
+++ b/memory/org.eclipse.cdt.debug.ui.memory.transport/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/internal/ui/memory/transport/AddressableSize.java b/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/internal/ui/memory/transport/AddressableSize.java
new file mode 100644
index 00000000000..6c8f4e352d1
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/internal/ui/memory/transport/AddressableSize.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2020 ArSysOp and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov (ArSysOp) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.debug.internal.ui.memory.transport;
+
+import java.math.BigInteger;
+import java.util.function.Supplier;
+
+import org.eclipse.debug.core.DebugException;
+import org.eclipse.debug.core.model.IMemoryBlockExtension;
+
+public class AddressableSize implements Supplier<BigInteger> {
+
+ private final IMemoryBlockExtension memory;
+
+ public AddressableSize(IMemoryBlockExtension memory) {
+ this.memory = memory;
+ }
+
+ @Override
+ public BigInteger get() {
+ try {
+ return BigInteger.valueOf(memory.getAddressableSize());
+ } catch (DebugException e1) {
+ // sane value for most cases
+ return BigInteger.ONE;
+ }
+ }
+
+}
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/internal/ui/memory/transport/ScrollMemory.java b/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/internal/ui/memory/transport/ScrollMemory.java
new file mode 100644
index 00000000000..85e8de66d1e
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/internal/ui/memory/transport/ScrollMemory.java
@@ -0,0 +1,34 @@
+/*******************************************************************************
+ * Copyright (c) 2020 ArSysOp and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov (ArSysOp) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.debug.internal.ui.memory.transport;
+
+import java.math.BigInteger;
+
+import org.eclipse.cdt.debug.core.memory.transport.IScrollMemory;
+import org.eclipse.cdt.debug.ui.memory.transport.ImportMemoryDialog;
+
+public final class ScrollMemory implements IScrollMemory {
+
+ private final ImportMemoryDialog dialog;
+
+ public ScrollMemory(ImportMemoryDialog dialog) {
+ this.dialog = dialog;
+ }
+
+ @Override
+ public void accept(BigInteger address) {
+ dialog.scrollRenderings(address);
+ }
+
+}
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/internal/ui/memory/transport/WriteMemoryBlock.java b/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/internal/ui/memory/transport/WriteMemoryBlock.java
new file mode 100644
index 00000000000..eff285e7f96
--- /dev/null
+++ b/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/internal/ui/memory/transport/WriteMemoryBlock.java
@@ -0,0 +1,47 @@
+/*******************************************************************************
+ * Copyright (c) 2020 ArSysOp and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alexander Fedorov (ArSysOp) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.debug.internal.ui.memory.transport;
+
+import java.math.BigInteger;
+
+import org.eclipse.cdt.debug.core.memory.transport.WriteMemory;
+import org.eclipse.cdt.debug.ui.memory.transport.BufferedMemoryWriter;
+import org.eclipse.debug.core.DebugException;
+import org.eclipse.debug.core.model.IMemoryBlockExtension;
+
+/**
+ * Writes to a given {@link IMemoryBlockExtension} using {@link BufferedMemoryWriter}
+ *
+ *
+ */
+public final class WriteMemoryBlock implements WriteMemory {
+
+ private final BufferedMemoryWriter writer;
+ private final int capacity = 64 * 1024;
+
+ public WriteMemoryBlock(IMemoryBlockExtension block) {
+ this.writer = new BufferedMemoryWriter(block, capacity);
+ }
+
+ @Override
+ public void to(BigInteger offset, byte[] data) throws DebugException {
+ writer.write(offset, data);
+ }
+
+ @Override
+ public void flush() throws DebugException {
+ writer.flush();
+ }
+
+}
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/ui/memory/transport/ExportMemoryDialog.java b/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/ui/memory/transport/ExportMemoryDialog.java
index 2e4707b7fa7..f78642c2219 100644
--- a/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/ui/memory/transport/ExportMemoryDialog.java
+++ b/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/ui/memory/transport/ExportMemoryDialog.java
@@ -60,7 +60,7 @@ public class ExportMemoryDialog extends SelectionDialog {
private IDialogSettings fProperties = MemoryTransportPlugin.getDefault().getDialogSettings(EXPORT_SETTINGS);
- private final String INITIAL_ADDRESS = "Initial address";
+ private final String INITIAL_ADDRESS = "Initial address"; //$NON-NLS-1$
public ExportMemoryDialog(Shell parent, IMemoryBlock memoryBlock, BigInteger initialStartAddr) {
super(parent);
@@ -183,14 +183,14 @@ public class ExportMemoryDialog extends SelectionDialog {
IConfigurationElement element = points[i];
if ("exporter".equals(element.getName())) //$NON-NLS-1$
{
- String maxSizeStr = element.getAttribute("maxmemorysize");
+ String maxSizeStr = element.getAttribute("maxmemorysize"); //$NON-NLS-1$
if (maxSizeStr != null) {
if (fMemoryBlock instanceof IMemoryBlockExtension) {
IMemoryBlockExtension memBlock = (IMemoryBlockExtension) fMemoryBlock;
try {
BigInteger endAddress = memBlock.getBigBaseAddress();
BigInteger length = memBlock.getBigLength();
- if (length != null && !length.equals(new BigInteger("-1", 10))) {
+ if (length != null && !length.equals(new BigInteger("-1", 10))) { //$NON-NLS-1$
endAddress = endAddress.add(length);
}
int maxAddressSizeInBits = endAddress.bitLength();
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/ui/memory/transport/ImportMemoryDialog.java b/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/ui/memory/transport/ImportMemoryDialog.java
index 738134e4365..df2cf960f11 100644
--- a/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/ui/memory/transport/ImportMemoryDialog.java
+++ b/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/ui/memory/transport/ImportMemoryDialog.java
@@ -70,7 +70,7 @@ public class ImportMemoryDialog extends SelectionDialog {
private IMemoryRenderingSite fMemoryView;
- private final String INITIAL_ADDRESS = "Initial address";
+ private final String INITIAL_ADDRESS = "Initial address"; //$NON-NLS-1$
public ImportMemoryDialog(Shell parent, IMemoryBlock memoryBlock, BigInteger initialStartAddr,
IMemoryRenderingSite renderingSite) {
@@ -221,7 +221,7 @@ public class ImportMemoryDialog extends SelectionDialog {
IConfigurationElement element = points[i];
if ("importer".equals(element.getName())) //$NON-NLS-1$
{
- String maxSizeStr = element.getAttribute("maxmemorysize");
+ String maxSizeStr = element.getAttribute("maxmemorysize"); //$NON-NLS-1$
if (maxSizeStr != null) {
if (fMemoryBlock instanceof IMemoryBlockExtension) {
IMemoryBlockExtension memBlock = (IMemoryBlockExtension) fMemoryBlock;
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/ui/memory/transport/PlainTextExporter.java b/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/ui/memory/transport/PlainTextExporter.java
index d8bc66c642c..b12563517ef 100644
--- a/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/ui/memory/transport/PlainTextExporter.java
+++ b/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/ui/memory/transport/PlainTextExporter.java
@@ -15,19 +15,17 @@
package org.eclipse.cdt.debug.ui.memory.transport;
import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
import java.math.BigInteger;
+import org.eclipse.cdt.debug.core.memory.transport.ExportRequest;
+import org.eclipse.cdt.debug.core.memory.transport.IReadMemory;
+import org.eclipse.cdt.debug.internal.core.memory.transport.PlainTextExport;
+import org.eclipse.cdt.debug.internal.core.memory.transport.ReadMemoryBlock;
+import org.eclipse.cdt.debug.internal.core.memory.transport.TransportJob;
+import org.eclipse.cdt.debug.internal.ui.memory.transport.AddressableSize;
import org.eclipse.cdt.debug.ui.memory.transport.model.IMemoryExporter;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.debug.core.DebugException;
import org.eclipse.debug.core.model.IMemoryBlock;
import org.eclipse.debug.core.model.IMemoryBlockExtension;
-import org.eclipse.debug.core.model.MemoryByte;
import org.eclipse.jface.dialogs.IDialogSettings;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.KeyEvent;
@@ -311,7 +309,7 @@ public class PlainTextExporter implements IMemoryExporter {
if (length.compareTo(BigInteger.ZERO) <= 0) {
if (endAddress.compareTo(BigInteger.ZERO) < 0) {
- endString = endAddress.toString(16); //$NON-NLS-1$
+ endString = endAddress.toString(16);
} else {
endString = "0x" + endAddress.toString(16); //$NON-NLS-1$
}
@@ -453,110 +451,13 @@ public class PlainTextExporter implements IMemoryExporter {
@Override
public void exportMemory() {
- Job job = new Job("Memory Export to Plain Text File") { //$NON-NLS-1$
- @Override
- public IStatus run(IProgressMonitor monitor) {
- try {
- final BigInteger addressableSize = getAdressableSize();
-
- // These variables control how the output will be formatted
-
- // The output data is split by chunks of 1 addressable unit size.
- final BigInteger dataCellSize = BigInteger.valueOf(1);
- // show 32 bytes of data per line, total. Adjust number of columns to compensate
- // for longer addressable unit size
- final BigInteger numberOfColumns = BigInteger.valueOf(32).divide(addressableSize);
- // deduce the number of data chunks to be output, per line
- final BigInteger dataCellsPerLine = dataCellSize.multiply(numberOfColumns);
-
- BigInteger transferAddress = fStartAddress;
-
- FileWriter writer = new FileWriter(fOutputFile);
-
- BigInteger jobs = fEndAddress.subtract(transferAddress).divide(dataCellsPerLine);
- BigInteger factor = BigInteger.ONE;
- if (jobs.compareTo(BigInteger.valueOf(0x7FFFFFFF)) > 0) {
- factor = jobs.divide(BigInteger.valueOf(0x7FFFFFFF));
- jobs = jobs.divide(factor);
- }
-
- monitor.beginTask(Messages.getString("Exporter.ProgressTitle"), jobs.intValue()); //$NON-NLS-1$
-
- BigInteger jobCount = BigInteger.ZERO;
- while (transferAddress.compareTo(fEndAddress) < 0 && !monitor.isCanceled()) {
- BigInteger length = dataCellsPerLine;
- if (fEndAddress.subtract(transferAddress).compareTo(length) < 0)
- length = fEndAddress.subtract(transferAddress);
-
- monitor.subTask(String.format(Messages.getString("Exporter.Progress"), length.toString(10), //$NON-NLS-1$
- transferAddress.toString(16)));
-
- StringBuilder buf = new StringBuilder();
-
- for (int i = 0; i < length.divide(dataCellSize).intValue(); i++) {
- if (i != 0)
- buf.append(" "); //$NON-NLS-1$
- MemoryByte bytes[] = ((IMemoryBlockExtension) fMemoryBlock).getBytesFromAddress(
- transferAddress.add(dataCellSize.multiply(BigInteger.valueOf(i))),
- dataCellSize.longValue());
- for (int byteIndex = 0; byteIndex < bytes.length; byteIndex++) {
- String bString = BigInteger.valueOf(0xFF & bytes[byteIndex].getValue()).toString(16);
- if (bString.length() == 1)
- buf.append("0"); //$NON-NLS-1$
- buf.append(bString);
- }
- }
-
- writer.write(buf.toString().toUpperCase());
- writer.write("\n"); //$NON-NLS-1$
-
- transferAddress = transferAddress.add(length);
-
- jobCount = jobCount.add(BigInteger.ONE);
- if (jobCount.compareTo(factor) == 0) {
- jobCount = BigInteger.ZERO;
- monitor.worked(1);
- }
- }
-
- writer.close();
- monitor.done();
- } catch (IOException ex) {
- MemoryTransportPlugin.getDefault().getLog()
- .log(new Status(IStatus.ERROR, MemoryTransportPlugin.getUniqueIdentifier(),
- DebugException.REQUEST_FAILED, Messages.getString("Exporter.ErrFile"), ex)); //$NON-NLS-1$
- return new Status(IStatus.ERROR, MemoryTransportPlugin.getUniqueIdentifier(),
- DebugException.REQUEST_FAILED, Messages.getString("Exporter.ErrFile"), ex); //$NON-NLS-1$
-
- } catch (DebugException ex) {
- MemoryTransportPlugin.getDefault().getLog()
- .log(new Status(IStatus.ERROR, MemoryTransportPlugin.getUniqueIdentifier(),
- DebugException.REQUEST_FAILED, Messages.getString("Exporter.ErrReadTarget"), ex)); //$NON-NLS-1$
- return new Status(IStatus.ERROR, MemoryTransportPlugin.getUniqueIdentifier(),
- DebugException.REQUEST_FAILED, Messages.getString("Exporter.ErrReadTarget"), ex); //$NON-NLS-1$
- } catch (Exception ex) {
- MemoryTransportPlugin.getDefault().getLog()
- .log(new Status(IStatus.ERROR, MemoryTransportPlugin.getUniqueIdentifier(),
- DebugException.INTERNAL_ERROR, Messages.getString("Exporter.Falure"), ex)); //$NON-NLS-1$
- return new Status(IStatus.ERROR, MemoryTransportPlugin.getUniqueIdentifier(),
- DebugException.INTERNAL_ERROR, Messages.getString("Exporter.Falure"), ex); //$NON-NLS-1$
- }
- return Status.OK_STATUS;
- }
- };
+ IReadMemory read = new ReadMemoryBlock((IMemoryBlockExtension) fMemoryBlock);
+ BigInteger addressable = new AddressableSize((IMemoryBlockExtension) fMemoryBlock).get();
+ ExportRequest request = new ExportRequest(fStartAddress, fEndAddress, addressable, read);
+ PlainTextExport memoryExport = new PlainTextExport(fOutputFile, request);
+ TransportJob job = new TransportJob("Memory Export to Plain Text File", memoryExport);
job.setUser(true);
job.schedule();
}
- private BigInteger getAdressableSize() {
- BigInteger addressableSize;
- try {
- addressableSize = BigInteger.valueOf(((IMemoryBlockExtension) fMemoryBlock).getAddressableSize());
- } catch (DebugException e1) {
- // sane value for most cases
- addressableSize = BigInteger.ONE;
- }
- return addressableSize;
- }
-
}
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/ui/memory/transport/PlainTextImporter.java b/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/ui/memory/transport/PlainTextImporter.java
index fd3b36b42dc..8de863df91b 100644
--- a/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/ui/memory/transport/PlainTextImporter.java
+++ b/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/ui/memory/transport/PlainTextImporter.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2006, 2013 Wind River Systems, Inc. and others.
+ * Copyright (c) 2006, 2020 Wind River Systems, Inc. and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -10,26 +10,25 @@
*
* Contributors:
* Ted R Williams (Wind River Systems, Inc.) - initial implementation
+ * Alexander Fedorov (ArSysOp) - headless part extraction
*******************************************************************************/
package org.eclipse.cdt.debug.ui.memory.transport;
-import java.io.BufferedReader;
import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
import java.math.BigInteger;
-import java.util.StringTokenizer;
+import org.eclipse.cdt.debug.core.memory.transport.IScrollMemory;
+import org.eclipse.cdt.debug.core.memory.transport.ImportRequest;
+import org.eclipse.cdt.debug.internal.core.memory.transport.PlainTextImport;
+import org.eclipse.cdt.debug.internal.core.memory.transport.TransportJob;
+import org.eclipse.cdt.debug.internal.ui.memory.transport.ScrollMemory;
+import org.eclipse.cdt.debug.internal.ui.memory.transport.WriteMemoryBlock;
import org.eclipse.cdt.debug.ui.memory.transport.model.IMemoryImporter;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.debug.core.DebugException;
import org.eclipse.debug.core.model.IMemoryBlock;
import org.eclipse.debug.core.model.IMemoryBlockExtension;
+import org.eclipse.jface.dialogs.ErrorDialog;
import org.eclipse.jface.dialogs.IDialogSettings;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
@@ -64,8 +63,6 @@ public class PlainTextImporter implements IMemoryImporter {
private IDialogSettings fProperties;
- private static final int BUFFER_LENGTH = 64 * 1024;
-
@Override
public Control createControl(final Composite parent, IMemoryBlock memBlock, IDialogSettings properties,
ImportMemoryDialog parentDialog) {
@@ -267,104 +264,22 @@ public class PlainTextImporter implements IMemoryImporter {
@Override
public void importMemory() {
- Job job = new Job("Memory Import from Plain Text File") { //$NON-NLS-1$
-
- @Override
- public IStatus run(IProgressMonitor monitor) {
- try {
- BufferedMemoryWriter memoryWriter = new BufferedMemoryWriter((IMemoryBlockExtension) fMemoryBlock,
- BUFFER_LENGTH);
-
- BigInteger scrollToAddress = null;
-
- BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(fInputFile)));
-
- BigInteger jobs = BigInteger.valueOf(fInputFile.length());
- BigInteger factor = BigInteger.ONE;
- if (jobs.compareTo(BigInteger.valueOf(0x7FFFFFFF)) > 0) {
- factor = jobs.divide(BigInteger.valueOf(0x7FFFFFFF));
- jobs = jobs.divide(factor);
- }
-
- monitor.beginTask(Messages.getString("Importer.ProgressTitle"), jobs.intValue()); //$NON-NLS-1$
-
- BigInteger recordAddress = fStartAddress;
- String line = reader.readLine();
- int lineNo = 1; // line error reporting
- while (line != null && !monitor.isCanceled()) {
- StringTokenizer st = new StringTokenizer(line, " "); //$NON-NLS-1$
- int bytesRead = 0;
- while (st.hasMoreElements()) {
- String valueString = (String) st.nextElement();
- int position = 0;
- byte data[] = new byte[valueString.length() / 2];
- for (int i = 0; i < data.length; i++) {
- try {
- data[i] = new BigInteger(valueString.substring(position++, position++ + 1), 16)
- .byteValue();
- } catch (NumberFormatException ex) {
- return new Status(IStatus.ERROR, MemoryTransportPlugin.getUniqueIdentifier(),
- DebugException.REQUEST_FAILED,
- String.format(Messages.getString("PlainTextImporter.ErrInvalidFormat"), //$NON-NLS-1$
- lineNo),
- ex);
- }
- }
-
- if (scrollToAddress == null)
- scrollToAddress = recordAddress;
-
- BigInteger writeAddress =
-
- recordAddress.subtract(((IMemoryBlockExtension) fMemoryBlock).getBigBaseAddress())
- .add(BigInteger.valueOf(bytesRead));
-
- memoryWriter.write(writeAddress, data);
-
- bytesRead += data.length;
- }
-
- recordAddress = recordAddress.add(BigInteger.valueOf(bytesRead));
-
- BigInteger jobCount = BigInteger.valueOf(bytesRead).divide(factor);
- monitor.worked(jobCount.intValue());
-
- line = reader.readLine();
- lineNo++;
- }
-
- if (!monitor.isCanceled())
- memoryWriter.flush();
-
- reader.close();
- monitor.done();
-
- if (fScrollToStart)
- fParentDialog.scrollRenderings(scrollToAddress);
- } catch (IOException ex) {
- MemoryTransportPlugin.getDefault().getLog()
- .log(new Status(IStatus.ERROR, MemoryTransportPlugin.getUniqueIdentifier(),
- DebugException.REQUEST_FAILED, Messages.getString("Importer.ErrReadFile"), ex)); //$NON-NLS-1$
- return new Status(IStatus.ERROR, MemoryTransportPlugin.getUniqueIdentifier(),
- DebugException.REQUEST_FAILED, Messages.getString("Importer.ErrReadFile"), ex); //$NON-NLS-1$
-
- } catch (DebugException ex) {
- MemoryTransportPlugin.getDefault().getLog()
- .log(new Status(IStatus.ERROR, MemoryTransportPlugin.getUniqueIdentifier(),
- DebugException.REQUEST_FAILED, Messages.getString("Importer.ErrWriteTarget"), ex)); //$NON-NLS-1$
- return new Status(IStatus.ERROR, MemoryTransportPlugin.getUniqueIdentifier(),
- DebugException.REQUEST_FAILED, Messages.getString("Importer.ErrWriteTarget"), ex); //$NON-NLS-1$
- } catch (Exception ex) {
- MemoryTransportPlugin.getDefault().getLog()
- .log(new Status(IStatus.ERROR, MemoryTransportPlugin.getUniqueIdentifier(),
- DebugException.INTERNAL_ERROR, Messages.getString("Importer.FalureImporting"), ex)); //$NON-NLS-1$
- return new Status(IStatus.ERROR, MemoryTransportPlugin.getUniqueIdentifier(),
- DebugException.INTERNAL_ERROR, Messages.getString("Importer.FalureImporting"), ex); //$NON-NLS-1$
- }
- return Status.OK_STATUS;
- }
- };
- job.setUser(true);
- job.schedule();
+ try {
+ IScrollMemory scroll = fScrollToStart ? new ScrollMemory(fParentDialog) : IScrollMemory.ignore();
+ IMemoryBlockExtension block = (IMemoryBlockExtension) fMemoryBlock;
+ ImportRequest request = new ImportRequest(block.getBigBaseAddress(), fStartAddress,
+ new WriteMemoryBlock(block));
+ PlainTextImport memoryImport = new PlainTextImport(fInputFile, request, scroll);
+ TransportJob job = new TransportJob(//
+ "Memory Import from Plain Text File", memoryImport);
+ job.setUser(true);
+ job.schedule();
+ } catch (DebugException e) {
+ //FIXME: unreachable with current implementation, to be i18n after UI rework
+ ErrorDialog.openError(fParentDialog.getShell(), //
+ "Import Failure", //
+ "Failed to retrieve base memory address", //
+ e.getStatus());
+ }
}
}
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/ui/memory/transport/RAWBinaryExporter.java b/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/ui/memory/transport/RAWBinaryExporter.java
index 6ad3ffec185..953e5889928 100644
--- a/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/ui/memory/transport/RAWBinaryExporter.java
+++ b/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/ui/memory/transport/RAWBinaryExporter.java
@@ -15,19 +15,17 @@
package org.eclipse.cdt.debug.ui.memory.transport;
import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
import java.math.BigInteger;
+import org.eclipse.cdt.debug.core.memory.transport.ExportRequest;
+import org.eclipse.cdt.debug.core.memory.transport.IReadMemory;
+import org.eclipse.cdt.debug.internal.core.memory.transport.RAWBinaryExport;
+import org.eclipse.cdt.debug.internal.core.memory.transport.ReadMemoryBlock;
+import org.eclipse.cdt.debug.internal.core.memory.transport.TransportJob;
+import org.eclipse.cdt.debug.internal.ui.memory.transport.AddressableSize;
import org.eclipse.cdt.debug.ui.memory.transport.model.IMemoryExporter;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.debug.core.DebugException;
import org.eclipse.debug.core.model.IMemoryBlock;
import org.eclipse.debug.core.model.IMemoryBlockExtension;
-import org.eclipse.debug.core.model.MemoryByte;
import org.eclipse.jface.dialogs.IDialogSettings;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.KeyEvent;
@@ -313,7 +311,7 @@ public class RAWBinaryExporter implements IMemoryExporter {
if (length.compareTo(BigInteger.ZERO) <= 0) {
if (endAddress.compareTo(BigInteger.ZERO) < 0) {
- endString = endAddress.toString(16); //$NON-NLS-1$
+ endString = endAddress.toString(16);
} else {
endString = "0x" + endAddress.toString(16); //$NON-NLS-1$
}
@@ -456,79 +454,11 @@ public class RAWBinaryExporter implements IMemoryExporter {
@Override
public void exportMemory() {
- Job job = new Job("Memory Export to RAW Binary File") { //$NON-NLS-1$
- @Override
- public IStatus run(IProgressMonitor monitor) {
- try {
- BigInteger DATA_PER_RECORD = BigInteger.valueOf(1024);
-
- BigInteger transferAddress = fStartAddress;
-
- FileOutputStream writer = new FileOutputStream(fOutputFile);
-
- BigInteger jobs = fEndAddress.subtract(transferAddress).divide(DATA_PER_RECORD);
- BigInteger factor = BigInteger.ONE;
- if (jobs.compareTo(BigInteger.valueOf(0x7FFFFFFF)) > 0) {
- factor = jobs.divide(BigInteger.valueOf(0x7FFFFFFF));
- jobs = jobs.divide(factor);
- }
-
- monitor.beginTask(Messages.getString("Exporter.ProgressTitle"), jobs.intValue()); //$NON-NLS-1$
-
- BigInteger jobCount = BigInteger.ZERO;
- while (transferAddress.compareTo(fEndAddress) < 0 && !monitor.isCanceled()) {
- BigInteger length = DATA_PER_RECORD;
- if (fEndAddress.subtract(transferAddress).compareTo(length) < 0)
- length = fEndAddress.subtract(transferAddress);
-
- monitor.subTask(String.format(Messages.getString("Exporter.Progress"), length.toString(10), //$NON-NLS-1$
- transferAddress.toString(16)));
-
- // data
- byte[] byteValues = new byte[length.intValue()];
-
- MemoryByte bytes[] = ((IMemoryBlockExtension) fMemoryBlock).getBytesFromAddress(transferAddress,
- length.longValue() / ((IMemoryBlockExtension) fMemoryBlock).getAddressableSize());
- for (int byteIndex = 0; byteIndex < bytes.length; byteIndex++) {
- byteValues[byteIndex] = bytes[byteIndex].getValue();
- }
-
- writer.write(byteValues);
-
- transferAddress = transferAddress.add(length);
-
- jobCount = jobCount.add(BigInteger.ONE);
- if (jobCount.compareTo(factor) == 0) {
- jobCount = BigInteger.ZERO;
- monitor.worked(1);
- }
- }
-
- writer.close();
- monitor.done();
- } catch (IOException ex) {
- MemoryTransportPlugin.getDefault().getLog()
- .log(new Status(IStatus.ERROR, MemoryTransportPlugin.getUniqueIdentifier(),
- DebugException.REQUEST_FAILED, Messages.getString("Exporter.ErrFile"), ex)); //$NON-NLS-1$
- return new Status(IStatus.ERROR, MemoryTransportPlugin.getUniqueIdentifier(),
- DebugException.REQUEST_FAILED, Messages.getString("Exporter.ErrFile"), ex); //$NON-NLS-1$
-
- } catch (DebugException ex) {
- MemoryTransportPlugin.getDefault().getLog()
- .log(new Status(IStatus.ERROR, MemoryTransportPlugin.getUniqueIdentifier(),
- DebugException.REQUEST_FAILED, Messages.getString("Exporter.ErrReadTarget"), ex)); //$NON-NLS-1$
- return new Status(IStatus.ERROR, MemoryTransportPlugin.getUniqueIdentifier(),
- DebugException.REQUEST_FAILED, Messages.getString("Exporter.ErrReadTarget"), ex); //$NON-NLS-1$
- } catch (Exception ex) {
- MemoryTransportPlugin.getDefault().getLog()
- .log(new Status(IStatus.ERROR, MemoryTransportPlugin.getUniqueIdentifier(),
- DebugException.INTERNAL_ERROR, Messages.getString("Exporter.Falure"), ex)); //$NON-NLS-1$
- return new Status(IStatus.ERROR, MemoryTransportPlugin.getUniqueIdentifier(),
- DebugException.INTERNAL_ERROR, Messages.getString("Exporter.Falure"), ex); //$NON-NLS-1$
- }
- return Status.OK_STATUS;
- }
- };
+ IReadMemory read = new ReadMemoryBlock((IMemoryBlockExtension) fMemoryBlock);
+ BigInteger addressable = new AddressableSize((IMemoryBlockExtension) fMemoryBlock).get();
+ ExportRequest request = new ExportRequest(fStartAddress, fEndAddress, addressable, read);
+ RAWBinaryExport memoryExport = new RAWBinaryExport(fOutputFile, request);
+ TransportJob job = new TransportJob("Memory Export to RAW Binary File", memoryExport);
job.setUser(true);
job.schedule();
}
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/ui/memory/transport/RAWBinaryImporter.java b/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/ui/memory/transport/RAWBinaryImporter.java
index f9f12b05d7e..c7e36d74b01 100644
--- a/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/ui/memory/transport/RAWBinaryImporter.java
+++ b/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/ui/memory/transport/RAWBinaryImporter.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2006, 2013 Wind River Systems, Inc. and others.
+ * Copyright (c) 2006, 2020 Wind River Systems, Inc. and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -10,23 +10,25 @@
*
* Contributors:
* Ted R Williams (Wind River Systems, Inc.) - initial implementation
+ * Alexander Fedorov (ArSysOp) - headless part extraction
*******************************************************************************/
package org.eclipse.cdt.debug.ui.memory.transport;
import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
import java.math.BigInteger;
+import org.eclipse.cdt.debug.core.memory.transport.IScrollMemory;
+import org.eclipse.cdt.debug.core.memory.transport.ImportRequest;
+import org.eclipse.cdt.debug.internal.core.memory.transport.RAWBinaryImport;
+import org.eclipse.cdt.debug.internal.core.memory.transport.TransportJob;
+import org.eclipse.cdt.debug.internal.ui.memory.transport.ScrollMemory;
+import org.eclipse.cdt.debug.internal.ui.memory.transport.WriteMemoryBlock;
import org.eclipse.cdt.debug.ui.memory.transport.model.IMemoryImporter;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.debug.core.DebugException;
import org.eclipse.debug.core.model.IMemoryBlock;
import org.eclipse.debug.core.model.IMemoryBlockExtension;
+import org.eclipse.jface.dialogs.ErrorDialog;
import org.eclipse.jface.dialogs.IDialogSettings;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
@@ -61,8 +63,6 @@ public class RAWBinaryImporter implements IMemoryImporter {
private IDialogSettings fProperties;
- private static final int BUFFER_LENGTH = 64 * 1024;
-
@Override
public Control createControl(final Composite parent, IMemoryBlock memBlock, IDialogSettings properties,
ImportMemoryDialog parentDialog) {
@@ -247,89 +247,23 @@ public class RAWBinaryImporter implements IMemoryImporter {
@Override
public void importMemory() {
- Job job = new Job("Memory Import from RAW Binary File") { //$NON-NLS-1$
-
- @Override
- public IStatus run(IProgressMonitor monitor) {
- try {
- BufferedMemoryWriter memoryWriter = new BufferedMemoryWriter((IMemoryBlockExtension) fMemoryBlock,
- BUFFER_LENGTH);
-
- BigInteger scrollToAddress = null;
-
- FileInputStream reader = new FileInputStream(fInputFile);
-
- BigInteger jobs = BigInteger.valueOf(fInputFile.length());
- BigInteger factor = BigInteger.ONE;
- if (jobs.compareTo(BigInteger.valueOf(0x7FFFFFFF)) > 0) {
- factor = jobs.divide(BigInteger.valueOf(0x7FFFFFFF));
- jobs = jobs.divide(factor);
- }
-
- byte[] byteValues = new byte[1024];
-
- monitor.beginTask(Messages.getString("Importer.ProgressTitle"), jobs.intValue()); //$NON-NLS-1$
-
- int actualByteCount = reader.read(byteValues);
- BigInteger recordAddress = fStartAddress;
-
- while (actualByteCount != -1 && !monitor.isCanceled()) {
- byte data[] = new byte[actualByteCount];
- for (int i = 0; i < data.length; i++) {
- data[i] = byteValues[i];
- }
-
- if (scrollToAddress == null)
- scrollToAddress = recordAddress;
-
- BigInteger baseAddress = null;
- if (fMemoryBlock instanceof IMemoryBlockExtension)
- baseAddress = ((IMemoryBlockExtension) fMemoryBlock).getBigBaseAddress();
- else
- baseAddress = BigInteger.valueOf(fMemoryBlock.getStartAddress());
-
- memoryWriter.write(recordAddress.subtract(baseAddress), data);
-
- BigInteger jobCount = BigInteger.valueOf(actualByteCount).divide(factor);
- monitor.worked(jobCount.intValue());
-
- recordAddress = recordAddress.add(BigInteger.valueOf(actualByteCount));
- actualByteCount = reader.read(byteValues);
- }
-
- if (!monitor.isCanceled())
- memoryWriter.flush();
-
- reader.close();
- monitor.done();
-
- if (fScrollToStart)
- fParentDialog.scrollRenderings(scrollToAddress);
-
- } catch (IOException ex) {
- MemoryTransportPlugin.getDefault().getLog()
- .log(new Status(IStatus.ERROR, MemoryTransportPlugin.getUniqueIdentifier(),
- DebugException.REQUEST_FAILED, Messages.getString("Importer.ErrReadFile"), ex)); //$NON-NLS-1$
- return new Status(IStatus.ERROR, MemoryTransportPlugin.getUniqueIdentifier(),
- DebugException.REQUEST_FAILED, Messages.getString("Importer.ErrReadFile"), ex); //$NON-NLS-1$
-
- } catch (DebugException ex) {
- MemoryTransportPlugin.getDefault().getLog()
- .log(new Status(IStatus.ERROR, MemoryTransportPlugin.getUniqueIdentifier(),
- DebugException.REQUEST_FAILED, Messages.getString("Importer.ErrWriteTarget"), ex)); //$NON-NLS-1$
- return new Status(IStatus.ERROR, MemoryTransportPlugin.getUniqueIdentifier(),
- DebugException.REQUEST_FAILED, Messages.getString("Importer.ErrWriteTarget"), ex); //$NON-NLS-1$
- } catch (Exception ex) {
- MemoryTransportPlugin.getDefault().getLog()
- .log(new Status(IStatus.ERROR, MemoryTransportPlugin.getUniqueIdentifier(),
- DebugException.INTERNAL_ERROR, Messages.getString("Importer.FalureImporting"), ex)); //$NON-NLS-1$
- return new Status(IStatus.ERROR, MemoryTransportPlugin.getUniqueIdentifier(),
- DebugException.INTERNAL_ERROR, Messages.getString("Importer.FalureImporting"), ex); //$NON-NLS-1$
- }
- return Status.OK_STATUS;
- }
- };
- job.setUser(true);
- job.schedule();
+ try {
+ IScrollMemory scroll = fScrollToStart ? new ScrollMemory(fParentDialog) : IScrollMemory.ignore();
+ IMemoryBlockExtension block = (IMemoryBlockExtension) fMemoryBlock;
+ ImportRequest request = new ImportRequest(block.getBigBaseAddress(), fStartAddress,
+ new WriteMemoryBlock(block));
+ RAWBinaryImport memoryImport = new RAWBinaryImport(fInputFile, request, scroll);
+ TransportJob job = new TransportJob(//
+ "Memory Import from RAW Binary File", memoryImport);
+ job.setUser(true);
+ job.schedule();
+ } catch (DebugException e) {
+ //FIXME: unreachable with current implementation, to be i18n after UI rework
+ ErrorDialog.openError(fParentDialog.getShell(), //
+ "Import Failure", //
+ "Failed to retrieve base memory address", //
+ e.getStatus());
+ }
}
+
}
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/ui/memory/transport/SRecordExporter.java b/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/ui/memory/transport/SRecordExporter.java
index 0ec3254f294..19edb4f6bde 100644
--- a/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/ui/memory/transport/SRecordExporter.java
+++ b/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/ui/memory/transport/SRecordExporter.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2006, 2016 Wind River Systems, Inc. and others.
+ * Copyright (c) 2006, 2020 Wind River Systems, Inc. and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -10,24 +10,23 @@
*
* Contributors:
* Ted R Williams (Wind River Systems, Inc.) - initial implementation
+ * John Dallaway - Enhanced data buffering for performance (bug 390897)
*******************************************************************************/
package org.eclipse.cdt.debug.ui.memory.transport;
import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
import java.math.BigInteger;
+import org.eclipse.cdt.debug.core.memory.transport.ExportRequest;
+import org.eclipse.cdt.debug.core.memory.transport.IReadMemory;
+import org.eclipse.cdt.debug.internal.core.memory.transport.ReadMemoryBlock;
+import org.eclipse.cdt.debug.internal.core.memory.transport.SRecordExport;
+import org.eclipse.cdt.debug.internal.core.memory.transport.TransportJob;
+import org.eclipse.cdt.debug.internal.ui.memory.transport.AddressableSize;
import org.eclipse.cdt.debug.ui.memory.transport.model.IMemoryExporter;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.debug.core.DebugException;
import org.eclipse.debug.core.model.IMemoryBlock;
import org.eclipse.debug.core.model.IMemoryBlockExtension;
-import org.eclipse.debug.core.model.MemoryByte;
import org.eclipse.jface.dialogs.IDialogSettings;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.KeyEvent;
@@ -333,7 +332,7 @@ public class SRecordExporter implements IMemoryExporter {
if (length.compareTo(BigInteger.ZERO) <= 0) {
if (endAddress.compareTo(BigInteger.ZERO) < 0) {
- endString = endAddress.toString(16); //$NON-NLS-1$
+ endString = endAddress.toString(16);
} else {
endString = "0x" + endAddress.toString(16); //$NON-NLS-1$
}
@@ -490,119 +489,11 @@ public class SRecordExporter implements IMemoryExporter {
@Override
public void exportMemory() {
- Job job = new Job("Memory Export to S-Record File") { //$NON-NLS-1$
- @Override
- public IStatus run(IProgressMonitor monitor) {
- try {
- // FIXME 4 byte default
-
- BigInteger DATA_PER_RECORD = BigInteger.valueOf(16);
-
- BigInteger transferAddress = fStartAddress;
-
- FileWriter writer = new FileWriter(fOutputFile);
-
- BigInteger jobs = fEndAddress.subtract(transferAddress).divide(DATA_PER_RECORD);
- BigInteger factor = BigInteger.ONE;
- if (jobs.compareTo(BigInteger.valueOf(0x7FFFFFFF)) > 0) {
- factor = jobs.divide(BigInteger.valueOf(0x7FFFFFFF));
- jobs = jobs.divide(factor);
- }
-
- monitor.beginTask(Messages.getString("Exporter.ProgressTitle"), jobs.intValue()); //$NON-NLS-1$
-
- BigInteger jobCount = BigInteger.ZERO;
- while (transferAddress.compareTo(fEndAddress) < 0 && !monitor.isCanceled()) {
- BigInteger length = DATA_PER_RECORD;
- if (fEndAddress.subtract(transferAddress).compareTo(length) < 0)
- length = fEndAddress.subtract(transferAddress);
-
- monitor.subTask(String.format(Messages.getString("Exporter.Progress"), length.toString(10), //$NON-NLS-1$
- transferAddress.toString(16)));
-
- writer.write("S3"); // FIXME 4 byte address //$NON-NLS-1$
-
- StringBuilder buf = new StringBuilder();
-
- BigInteger sRecordLength = BigInteger.valueOf(4); // address size
- sRecordLength = sRecordLength.add(length);
- sRecordLength = sRecordLength.add(BigInteger.ONE); // checksum
-
- String transferAddressString = transferAddress.toString(16);
-
- String lengthString = sRecordLength.toString(16);
- if (lengthString.length() == 1)
- buf.append("0"); //$NON-NLS-1$
- buf.append(lengthString);
- for (int i = 0; i < 8 - transferAddressString.length(); i++)
- buf.append("0"); //$NON-NLS-1$
- buf.append(transferAddressString);
-
- // data
-
- MemoryByte bytes[] = ((IMemoryBlockExtension) fMemoryBlock).getBytesFromAddress(transferAddress,
- length.longValue() / ((IMemoryBlockExtension) fMemoryBlock).getAddressableSize());
- for (int byteIndex = 0; byteIndex < bytes.length; byteIndex++) {
- String bString = BigInteger.valueOf(0xFF & bytes[byteIndex].getValue()).toString(16);
- if (bString.length() == 1)
- buf.append("0"); //$NON-NLS-1$
- buf.append(bString);
- }
-
- /*
- * The least significant byte of the one's complement of the sum of the values
- * represented by the pairs of characters making up the records length, address,
- * and the code/data fields.
- */
- byte checksum = 0;
-
- for (int i = 0; i < buf.length(); i += 2) {
- BigInteger value = new BigInteger(buf.substring(i, i + 2), 16);
- checksum += value.byteValue();
- }
-
- String bString = BigInteger.valueOf(0xFF - checksum).and(BigInteger.valueOf(0xFF)).toString(16);
- if (bString.length() == 1)
- buf.append("0"); //$NON-NLS-1$
- buf.append(bString);
-
- writer.write(buf.toString().toUpperCase());
- writer.write("\n"); //$NON-NLS-1$
-
- transferAddress = transferAddress.add(length);
-
- jobCount = jobCount.add(BigInteger.ONE);
- if (jobCount.compareTo(factor) == 0) {
- jobCount = BigInteger.ZERO;
- monitor.worked(1);
- }
- }
-
- writer.close();
- monitor.done();
- } catch (IOException ex) {
- MemoryTransportPlugin.getDefault().getLog()
- .log(new Status(IStatus.ERROR, MemoryTransportPlugin.getUniqueIdentifier(),
- DebugException.REQUEST_FAILED, Messages.getString("Exporter.ErrFile"), ex)); //$NON-NLS-1$
- return new Status(IStatus.ERROR, MemoryTransportPlugin.getUniqueIdentifier(),
- DebugException.REQUEST_FAILED, Messages.getString("Exporter.ErrFile"), ex); //$NON-NLS-1$
-
- } catch (DebugException ex) {
- MemoryTransportPlugin.getDefault().getLog()
- .log(new Status(IStatus.ERROR, MemoryTransportPlugin.getUniqueIdentifier(),
- DebugException.REQUEST_FAILED, Messages.getString("Exporter.ErrReadTarget"), ex)); //$NON-NLS-1$
- return new Status(IStatus.ERROR, MemoryTransportPlugin.getUniqueIdentifier(),
- DebugException.REQUEST_FAILED, Messages.getString("Exporter.ErrReadTarget"), ex); //$NON-NLS-1$
- } catch (Exception ex) {
- MemoryTransportPlugin.getDefault().getLog()
- .log(new Status(IStatus.ERROR, MemoryTransportPlugin.getUniqueIdentifier(),
- DebugException.INTERNAL_ERROR, Messages.getString("Exporter.Falure"), ex)); //$NON-NLS-1$
- return new Status(IStatus.ERROR, MemoryTransportPlugin.getUniqueIdentifier(),
- DebugException.INTERNAL_ERROR, Messages.getString("Exporter.Falure"), ex); //$NON-NLS-1$
- }
- return Status.OK_STATUS;
- }
- };
+ IReadMemory read = new ReadMemoryBlock((IMemoryBlockExtension) fMemoryBlock);
+ BigInteger addressable = new AddressableSize((IMemoryBlockExtension) fMemoryBlock).get();
+ ExportRequest request = new ExportRequest(fStartAddress, fEndAddress, addressable, read);
+ SRecordExport memoryExport = new SRecordExport(fOutputFile, request);
+ TransportJob job = new TransportJob("Memory Export to S-Record File", memoryExport);
job.setUser(true);
job.schedule();
}
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/ui/memory/transport/SRecordImporter.java b/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/ui/memory/transport/SRecordImporter.java
index 318ca6dc6e6..99dafba1ef6 100644
--- a/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/ui/memory/transport/SRecordImporter.java
+++ b/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/ui/memory/transport/SRecordImporter.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2006, 2016 Wind River Systems, Inc. and others.
+ * Copyright (c) 2006, 2020 Wind River Systems, Inc. and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -10,25 +10,25 @@
*
* Contributors:
* Ted R Williams (Wind River Systems, Inc.) - initial implementation
+ * Alexander Fedorov (ArSysOp) - headless part extraction
*******************************************************************************/
package org.eclipse.cdt.debug.ui.memory.transport;
-import java.io.BufferedReader;
import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
import java.math.BigInteger;
+import org.eclipse.cdt.debug.core.memory.transport.IScrollMemory;
+import org.eclipse.cdt.debug.core.memory.transport.ImportRequest;
+import org.eclipse.cdt.debug.internal.core.memory.transport.SRecordImport;
+import org.eclipse.cdt.debug.internal.core.memory.transport.TransportJob;
+import org.eclipse.cdt.debug.internal.ui.memory.transport.ScrollMemory;
+import org.eclipse.cdt.debug.internal.ui.memory.transport.WriteMemoryBlock;
import org.eclipse.cdt.debug.ui.memory.transport.model.IMemoryImporter;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.debug.core.DebugException;
import org.eclipse.debug.core.model.IMemoryBlock;
import org.eclipse.debug.core.model.IMemoryBlockExtension;
+import org.eclipse.jface.dialogs.ErrorDialog;
import org.eclipse.jface.dialogs.IDialogSettings;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.KeyEvent;
@@ -68,8 +68,6 @@ public class SRecordImporter implements IMemoryImporter {
private IDialogSettings fProperties;
- private static final int BUFFER_LENGTH = 64 * 1024;
-
@Override
public Control createControl(final Composite parent, IMemoryBlock memBlock, IDialogSettings properties,
ImportMemoryDialog parentDialog) {
@@ -337,176 +335,23 @@ public class SRecordImporter implements IMemoryImporter {
@Override
public void importMemory() {
- Job job = new Job("Memory Import from S-Record File") { //$NON-NLS-1$
-
- @Override
- public IStatus run(IProgressMonitor monitor) {
-
- try {
- BufferedMemoryWriter memoryWriter = new BufferedMemoryWriter((IMemoryBlockExtension) fMemoryBlock,
- BUFFER_LENGTH);
-
- // FIXME 4 byte default
-
- final int CHECKSUM_LENGTH = 1;
-
- BigInteger scrollToAddress = null;
-
- BigInteger offset = null;
- if (!fProperties.getBoolean(TRANSFER_CUSTOM_START_ADDRESS))
- offset = BigInteger.ZERO;
-
- BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(fInputFile)));
-
- BigInteger jobs = BigInteger.valueOf(fInputFile.length());
- BigInteger factor = BigInteger.ONE;
- if (jobs.compareTo(BigInteger.valueOf(0x7FFFFFFF)) > 0) {
- factor = jobs.divide(BigInteger.valueOf(0x7FFFFFFF));
- jobs = jobs.divide(factor);
- }
-
- monitor.beginTask(Messages.getString("Importer.ProgressTitle"), jobs.intValue()); //$NON-NLS-1$
-
- String line = reader.readLine();
- int lineNo = 1; // line error reporting
- while (line != null && !monitor.isCanceled()) {
- String recordType = line.substring(0, 2);
- int recordCount = 0;
- try {
- recordCount = Integer.parseInt(line.substring(2, 4), 16);
- } catch (NumberFormatException ex) {
- return new Status(IStatus.ERROR, MemoryTransportPlugin.getUniqueIdentifier(),
- DebugException.REQUEST_FAILED,
- String.format(Messages.getString("SRecordImporter.InvalidLineLength"), lineNo), ex); //$NON-NLS-1$
- }
-
- int bytesRead = 4 + recordCount;
- int position = 4;
- int addressSize = 0;
-
- BigInteger recordAddress = null;
-
- if ("S3".equals(recordType)) //$NON-NLS-1$
- addressSize = 4;
- else if ("S1".equals(recordType)) //$NON-NLS-1$
- addressSize = 2;
- else if ("S2".equals(recordType)) //$NON-NLS-1$
- addressSize = 3;
- else if ("S0".equals(recordType) || "S5".equals(recordType) || "S7".equals(recordType)
- || "S8".equals(recordType) || "S9".equals(recordType)) //$NON-NLS-1$
- { // ignore S0, S5, S7, S8 and S9 records
- line = reader.readLine();
- lineNo++;
- continue;
- }
- try {
- recordAddress = new BigInteger(line.substring(position, position + addressSize * 2), 16);
- } catch (NumberFormatException ex) {
- return new Status(IStatus.ERROR, MemoryTransportPlugin.getUniqueIdentifier(),
- DebugException.REQUEST_FAILED,
- String.format(Messages.getString("SRecordImporter.InvalidAddress"), lineNo), ex); //$NON-NLS-1$
- }
- recordCount -= addressSize;
- position += addressSize * 2;
-
- if (offset == null)
- offset = fStartAddress.subtract(recordAddress);
-
- recordAddress = recordAddress.add(offset);
-
- byte data[] = new byte[recordCount - CHECKSUM_LENGTH];
- for (int i = 0; i < data.length; i++) {
- try {
- data[i] = new BigInteger(line.substring(position++, position++ + 1), 16).byteValue();
- } catch (NumberFormatException ex) {
- return new Status(IStatus.ERROR, MemoryTransportPlugin.getUniqueIdentifier(),
- DebugException.REQUEST_FAILED,
- String.format(Messages.getString("SRecordImporter.InvalidData"), lineNo), ex); //$NON-NLS-1$
- }
- }
-
- /*
- * The least significant byte of the one's complement of the sum of the values
- * represented by the pairs of characters making up the records length, address,
- * and the code/data fields.
- */
- StringBuilder buf = new StringBuilder(line.substring(2));
- byte checksum = 0;
-
- for (int i = 0; i < buf.length(); i += 2) {
- BigInteger value = null;
- try {
- value = new BigInteger(buf.substring(i, i + 2), 16);
- } catch (NumberFormatException ex) {
- return new Status(IStatus.ERROR, MemoryTransportPlugin.getUniqueIdentifier(),
- DebugException.REQUEST_FAILED,
- String.format(Messages.getString("SRecordImporter.InvalidChecksum"), lineNo), //$NON-NLS-1$
- ex);
- }
- checksum += value.byteValue();
- }
-
- /*
- * Since we included the checksum in the checksum calculation the checksum
- * ( if correct ) will always be 0xFF which is -1 using the signed byte size
- * calculation here.
- */
- if (checksum != (byte) -1) {
- reader.close();
- monitor.done();
- return new Status(IStatus.ERROR, MemoryTransportPlugin.getUniqueIdentifier(),
- Messages.getString("SRecordImporter.ChecksumFalure") + line); //$NON-NLS-1$
- }
-
- if (scrollToAddress == null)
- scrollToAddress = recordAddress;
-
- // FIXME error on incorrect checksum
-
- memoryWriter.write(
- recordAddress.subtract(((IMemoryBlockExtension) fMemoryBlock).getBigBaseAddress()),
- data);
-
- BigInteger jobCount = BigInteger.valueOf(bytesRead).divide(factor);
- monitor.worked(jobCount.intValue());
-
- line = reader.readLine();
- lineNo++;
- }
-
- if (!monitor.isCanceled())
- memoryWriter.flush();
-
- reader.close();
- monitor.done();
-
- if (fScrollToStart)
- fParentDialog.scrollRenderings(scrollToAddress);
-
- } catch (IOException ex) {
- MemoryTransportPlugin.getDefault().getLog()
- .log(new Status(IStatus.ERROR, MemoryTransportPlugin.getUniqueIdentifier(),
- DebugException.REQUEST_FAILED, Messages.getString("Importer.ErrReadFile"), ex)); //$NON-NLS-1$
- return new Status(IStatus.ERROR, MemoryTransportPlugin.getUniqueIdentifier(),
- DebugException.REQUEST_FAILED, Messages.getString("Importer.ErrReadFile"), ex); //$NON-NLS-1$
-
- } catch (DebugException ex) {
- MemoryTransportPlugin.getDefault().getLog()
- .log(new Status(IStatus.ERROR, MemoryTransportPlugin.getUniqueIdentifier(),
- DebugException.REQUEST_FAILED, Messages.getString("Importer.ErrWriteTarget"), ex)); //$NON-NLS-1$
- return new Status(IStatus.ERROR, MemoryTransportPlugin.getUniqueIdentifier(),
- DebugException.REQUEST_FAILED, Messages.getString("Importer.ErrWriteTarget"), ex); //$NON-NLS-1$
- } catch (Exception ex) {
- MemoryTransportPlugin.getDefault().getLog()
- .log(new Status(IStatus.ERROR, MemoryTransportPlugin.getUniqueIdentifier(),
- DebugException.INTERNAL_ERROR, Messages.getString("Importer.FalureImporting"), ex)); //$NON-NLS-1$
- return new Status(IStatus.ERROR, MemoryTransportPlugin.getUniqueIdentifier(),
- DebugException.INTERNAL_ERROR, Messages.getString("Importer.FalureImporting"), ex); //$NON-NLS-1$
- }
- return Status.OK_STATUS;
- }
- };
- job.setUser(true);
- job.schedule();
+ try {
+ IScrollMemory scroll = fScrollToStart ? new ScrollMemory(fParentDialog) : IScrollMemory.ignore();
+ IMemoryBlockExtension block = (IMemoryBlockExtension) fMemoryBlock;
+ ImportRequest request = new ImportRequest(block.getBigBaseAddress(), fStartAddress,
+ new WriteMemoryBlock(block));
+ SRecordImport memoryImport = new SRecordImport(fInputFile, request, scroll,
+ fProperties.getBoolean(TRANSFER_CUSTOM_START_ADDRESS));
+ TransportJob job = new TransportJob(//
+ "Memory Import from S-Record File", memoryImport);
+ job.setUser(true);
+ job.schedule();
+ } catch (DebugException e) {
+ //FIXME: unreachable with current implementation, to be i18n after UI rework
+ ErrorDialog.openError(fParentDialog.getShell(), //
+ "Import Failure", //
+ "Failed to retrieve base memory address", //
+ e.getStatus());
+ }
}
}
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/ui/memory/transport/messages.properties b/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/ui/memory/transport/messages.properties
index dd3a4a22e37..93bf6ec43f7 100644
--- a/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/ui/memory/transport/messages.properties
+++ b/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/ui/memory/transport/messages.properties
@@ -1,5 +1,5 @@
###############################################################################
-# Copyright (c) 2009, 2010 Wind River Systems and others.
+# Copyright (c) 2009, 2020 Wind River Systems and others.
#
# This program and the accompanying materials
# are made available under the terms of the Eclipse Public License 2.0
@@ -11,6 +11,7 @@
# Contributors:
# Ted R Williams (Wind River) - initial API and implementation
# Teodor Madan (Freescale) -
+# Alexander Fedorov (ArSysOp) - headless part extraction
###############################################################################
ExportMemoryDialog.Format=Format:\u0020
@@ -22,20 +23,11 @@ ImportMemoryDialog.Title=Import Memory
Exporter.AllFiles=All Files
Exporter.Browse=Browse...
-Exporter.ErrFile=Could not write to file.
-Exporter.ErrReadTarget=Could not read from target.
-Exporter.Falure=Failure exporting memory
Exporter.FileName=File name:\u0020
-Exporter.Progress=Transferring %s bytes at address 0x%s
-Exporter.ProgressTitle=Transferring Data
Importer.AllFiles=All Files
Importer.Browse=Browse...
-Importer.ErrReadFile=Could not read from file.
-Importer.ErrWriteTarget=Could not write to target.
-Importer.FalureImporting=Failure importing from file
Importer.File=File name:\u0020
-Importer.ProgressTitle=Transferring Data
PlainTextExporter.ChooseFile=Choose memory export file
PlainTextExporter.EndAddress=End address:\u0020
@@ -44,7 +36,6 @@ PlainTextExporter.Name=Plain Text
PlainTextExporter.StartAddress=Start address:\u0020
PlainTextImporter.ChooseFile=Choose memory import file
-PlainTextImporter.ErrInvalidFormat=Invalid file format. Expected integer at line %d
PlainTextImporter.Name=Plain Text
PlainTextImporter.RestoreAddress=Restore to address:\u0020
PlainTextImporter.ScrollToStart=Scroll to restore address
@@ -56,14 +47,9 @@ SRecordExporter.Name=SRecord
SRecordExporter.StartAddress=Start address:\u0020
SRecordExporter.32BitLimitationMessage=SRecord format only supports 32-bit address spaces.
-SRecordImporter.ChecksumFalure=Checksum failure of line =\u0020
SRecordImporter.ChooseFile=Choose memory import file
SRecordImporter.CustomAddressRestore=Restore to this address:\u0020
SRecordImporter.FileAddressRestore=Restore to address specified in the file
-SRecordImporter.InvalidAddress=Invalid file format. Invalid address at line %d
-SRecordImporter.InvalidChecksum=Invalid file format. Invalid checksum format at line %d
-SRecordImporter.InvalidData=Invalid file format. Invalid data at line %d
-SRecordImporter.InvalidLineLength=Invalid file format. Invalid line length at line %d
SRecordImporter.Name=SRecord
SRecordImporter.ScrollToStart=Scroll to restore address
SRecordImporter.32BitLimitationMessage=SRecord format only supports 32-bit address spaces.
diff --git a/memory/pom.xml b/memory/pom.xml
index c10f7cd85b6..6ffaa9a96f4 100644
--- a/memory/pom.xml
+++ b/memory/pom.xml
@@ -1,4 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2017, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
@@ -7,7 +17,7 @@
<parent>
<groupId>org.eclipse.cdt</groupId>
<artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
+ <version>10.7.0-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.cdt.memory-parent</artifactId>
diff --git a/native/org.eclipse.cdt.native.serial/.classpath b/native/org.eclipse.cdt.native.serial/.classpath
index eca7bdba8f0..e801ebfb468 100644
--- a/native/org.eclipse.cdt.native.serial/.classpath
+++ b/native/org.eclipse.cdt.native.serial/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/native/org.eclipse.cdt.native.serial/.project b/native/org.eclipse.cdt.native.serial/.project
index 39705da7693..fefe4496add 100644
--- a/native/org.eclipse.cdt.native.serial/.project
+++ b/native/org.eclipse.cdt.native.serial/.project
@@ -20,9 +20,16 @@
<arguments>
</arguments>
</buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.pde.PluginNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+ <nature>org.eclipse.cdt.core.cnature</nature>
</natures>
</projectDescription>
diff --git a/native/org.eclipse.cdt.native.serial/.settings/org.eclipse.core.resources.prefs b/native/org.eclipse.cdt.native.serial/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/native/org.eclipse.cdt.native.serial/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/native/org.eclipse.cdt.native.serial/.settings/org.eclipse.jdt.core.prefs b/native/org.eclipse.cdt.native.serial/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/native/org.eclipse.cdt.native.serial/.settings/org.eclipse.jdt.core.prefs
+++ b/native/org.eclipse.cdt.native.serial/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/native/org.eclipse.cdt.native.serial/.settings/org.eclipse.jdt.ui.prefs b/native/org.eclipse.cdt.native.serial/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/native/org.eclipse.cdt.native.serial/.settings/org.eclipse.jdt.ui.prefs
+++ b/native/org.eclipse.cdt.native.serial/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/native/org.eclipse.cdt.native.serial/META-INF/MANIFEST.MF b/native/org.eclipse.cdt.native.serial/META-INF/MANIFEST.MF
index 9347970cf04..dd9d301f2cc 100644
--- a/native/org.eclipse.cdt.native.serial/META-INF/MANIFEST.MF
+++ b/native/org.eclipse.cdt.native.serial/META-INF/MANIFEST.MF
@@ -1,9 +1,11 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
-Bundle-Name: Serial Port
+Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.native.serial
-Bundle-Version: 1.1.300.qualifier
-Bundle-Vendor: Eclipse CDT
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-Version: 1.2.600.qualifier
+Bundle-Vendor: %providerName
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Export-Package: org.eclipse.cdt.serial
Automatic-Module-Name: org.eclipse.cdt.native.serial
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.cdt.core.native;bundle-version="[6.1.0,7.0.0)"
diff --git a/native/org.eclipse.cdt.native.serial/about.html b/native/org.eclipse.cdt.native.serial/about.html
index 164f781a8fd..b3134865230 100644
--- a/native/org.eclipse.cdt.native.serial/about.html
+++ b/native/org.eclipse.cdt.native.serial/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/native/org.eclipse.cdt.native.serial/build.properties b/native/org.eclipse.cdt.native.serial/build.properties
index 22cb27bb991..8dd5348ff3c 100644
--- a/native/org.eclipse.cdt.native.serial/build.properties
+++ b/native/org.eclipse.cdt.native.serial/build.properties
@@ -3,7 +3,8 @@ output.. = bin/
bin.includes = META-INF/,\
.,\
os/,\
+ plugin.properties,\
about.html,\
cdt_logo_icon32.png
-src.includes = jni/,\
+src.includes = native_src/,\
about.html
diff --git a/native/org.eclipse.cdt.native.serial/jni/Makefile b/native/org.eclipse.cdt.native.serial/jni/Makefile
deleted file mode 100644
index 72c59e6e8ac..00000000000
--- a/native/org.eclipse.cdt.native.serial/jni/Makefile
+++ /dev/null
@@ -1,66 +0,0 @@
-#*******************************************************************************
-# Copyright (c) 2002, 2019 QNX Software Systems and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# QNX Software Systems - initial API and implementation
-# Alex Blewitt - MacOSX with a 64-bit vm
-#*******************************************************************************/
-
-ifeq ($(JAVA_HOME),)
-$(error Please define JAVA_HOME)
-endif
-
-OS_DIR = ../os
-
-CFLAGS += -fPIC -D_REENTRANT
-
-UNAME = $(shell uname)
-ifeq ($(UNAME),Linux)
-LIBS = \
- $(OS_DIR)/win32/x86_64/serial.dll \
- $(OS_DIR)/linux/x86_64/libserial.so \
- $(OS_DIR)/macosx/x86_64/libserial.jnilib
-else
-ifeq ($(UNAME),Darwin)
-LIBS = \
- $(OS_DIR)/macosx/x86_64/libserial.jnilib
-else
-LIBS = \
- $(OS_DIR)/win32/x86_64/serial.dll
-endif
-endif
-
-all: $(LIBS)
-
-clean :
- $(RM) $(LIBS)
-
-rebuild: clean all
-
-# Windows DLLs have a build timestamp in them. This makes it impossible to have reproducible builds.
-# However, x86_64-w64-mingw32-ld on Debian/Ubuntu has a patch that overrides the current date
-# using the SOURCE_DATE_EPOCH environment variable. Therefore we set SOURCE_DATE_EPOCH to a
-# consistent timestamp that can be reproduced. We base it off of the commit timestamp of the
-# most recent git commit in this directory.
-$(OS_DIR)/win32/x86_64/serial.dll: serial.c
- mkdir -p $(dir $@)
- SOURCE_DATE_EPOCH=$(shell git log -1 --pretty=format:%ct -- .) x86_64-w64-mingw32-gcc -I"$(JAVA_HOME)/include" -I"$(JAVA_HOME)/include/win32" -shared -o $@ serial.c
-
-$(OS_DIR)/linux/x86_64/libserial.so: serial.c
- mkdir -p $(dir $@)
- gcc -m64 $(CFLAGS) -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux $(LDFLAGS) -shared -o $@ serial.c
-
-$(OS_DIR)/linux/ppc64le/libserial.so: serial.c
- mkdir -p $(dir $@)
- gcc -m64 -mcpu=power8 $(CFLAGS) -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux $(LDFLAGS) -shared -o $@ serial.c
-
-$(OS_DIR)/macosx/x86_64/libserial.jnilib: serial.c
- mkdir -p $(dir $@)
- x86_64-apple-darwin17-clang $(CFLAGS) -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/darwin $(LDFLAGS) -dynamiclib -o $@ serial.c
diff --git a/native/org.eclipse.cdt.native.serial/jni/Readme.md b/native/org.eclipse.cdt.native.serial/jni/Readme.md
deleted file mode 100644
index 9e8d9f663bd..00000000000
--- a/native/org.eclipse.cdt.native.serial/jni/Readme.md
+++ /dev/null
@@ -1,21 +0,0 @@
-### How to rebuild natives.
-
-The goal of these instructions is to have a cross-platform build of the natives in CDT. Using tools in CDT's
-[docker](https://github.com/eclipse-cdt/cdt-infra/blob/master/docker/cdt-infra-eclipse-full/ubuntu-18.04/Dockerfile) build image
-(quay.io/eclipse-cdt/cdt-infra-eclipse-full:latest).
-
-It is fairly straightforward to biuild the natives, run this command:
-
-```
-docker run --rm -it -v $(git rev-parse --show-toplevel):/work -w /work/$(git rev-parse --show-prefix) quay.io/eclipse-cdt/cdt-infra-eclipse-full:latest make -C jni rebuild
-```
-
-However, the challenge is that dll files on Windows have a timestamp in them. To have reproducible builds, we need to have a reproducible
-timestamp. Therefore we use the commit time of the commit to derive a timestamp (See the Makefile for more info). Because we want
-to keep the DLL checked in so that contributors don't need to rebuild it all the time we need a way to have to check in the dll with
-the same commit time. To do this we use GIT_COMMITTER_DATE. So, after editing and committing your change, you need to rebuild one last
-time with the commit date and the commit it without changing the commit date again using:
-
-```
-GIT_COMMITTER_DATE=$(git log -1 --pretty=format:%cI -- .) git commit --amend -a --reuse-message=HEAD
-```
diff --git a/native/org.eclipse.cdt.native.serial/jni/serial.c b/native/org.eclipse.cdt.native.serial/jni/serial.c
deleted file mode 100644
index 95d3b57f379..00000000000
--- a/native/org.eclipse.cdt.native.serial/jni/serial.c
+++ /dev/null
@@ -1,471 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - initial API and implementation
- * STMicroelectronics
- *******************************************************************************/
-#ifdef __APPLE__
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/uio.h>
-#endif
-#ifndef __MINGW32__
-#include <unistd.h>
-#include <fcntl.h>
-#include <termios.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <strings.h>
-#include <errno.h>
-#include <sys/ioctl.h>
-#else
-#define WIN32_LEAN_AND_MEAN
-#define UNICODE
-#include <windows.h>
-#endif
-#include <jni.h>
-
-#define FUNC(x) Java_org_eclipse_cdt_serial_SerialPort_ ## x
-
-static void throwIOException(JNIEnv *env, const char *msg)
-{
- char buff[256];
-#ifndef __MINGW32__
- sprintf(buff, "%s: %s", msg, strerror(errno));
-#else
- sprintf_s(buff, sizeof(buff), "%s (%d)", msg, GetLastError());
-#endif
- jclass cls = (*env)->FindClass(env, "java/io/IOException");
- (*env)->ThrowNew(env, cls, buff);
-}
-
-JNIEXPORT jlong JNICALL FUNC(open0)(JNIEnv *env, jobject jobj, jstring portName, jint baudRate, jint byteSize, jint parity, jint stopBits)
-{
-#ifndef __MINGW32__
- const char * cportName = (*env)->GetStringUTFChars(env, portName, NULL);
- int fd = open(cportName, O_RDWR | O_NOCTTY | O_NDELAY);
- if (fd < 0) {
- char msg[256];
- sprintf(msg, "Error opening %s", cportName);
- (*env)->ReleaseStringUTFChars(env, portName, cportName);
- throwIOException(env, msg);
- return fd;
- }
- (*env)->ReleaseStringUTFChars(env, portName, cportName);
-
- // Turn off all flags
- fcntl(fd, F_SETFL, 0);
-
- struct termios options;
- tcgetattr(fd, &options);
- options.c_cflag |= (CLOCAL | CREAD);
-
- speed_t baud;
- switch (baudRate) {
- case 110:
- baud = B110;
- break;
- case 300:
- baud = B300;
- break;
- case 600:
- baud = B600;
- break;
- case 1200:
- baud = B1200;
- break;
- case 2400:
- baud = B2400;
- break;
- case 4800:
- baud = B4800;
- break;
- case 9600:
- baud = B9600;
- break;
- case 19200:
- baud = B19200;
- break;
- case 38400:
- baud = B38400;
- break;
- case 57600:
- baud = B57600;
- break;
- case 115200:
- baud = B115200;
- break;
- default:
- baud = B115200;
- }
- // Set baud rate
- cfsetispeed(&options, baud);
- cfsetospeed(&options, baud);
-
- // set data size
- options.c_cflag &= ~CSIZE;
- switch (byteSize) {
- case 5:
- options.c_cflag |= CS5;
- break;
- case 6:
- options.c_cflag |= CS6;
- break;
- case 7:
- options.c_cflag |= CS7;
- break;
- case 8:
- options.c_cflag |= CS8;
- break;
-
- }
-
- // set parity
- switch (parity) {
- case 0: // None
- options.c_cflag &= ~PARENB;
- break;
- case 1: // Even
- options.c_cflag |= PARENB;
- options.c_cflag &= ~PARODD;
- break;
- case 2: // Odd
- options.c_cflag |= (PARENB | PARODD);
- break;
- }
-
- switch (stopBits) {
- case 0: // 1
- options.c_cflag &= ~CSTOPB;
- break;
- case 1: // 2
- options.c_cflag |= CSTOPB;
- break;
- }
-
- // raw input
- options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
-
- // ignore parity
- options.c_iflag |= IGNPAR;
-
- // turn off those bits in the input flag that fiddle with CR and NL
- options.c_iflag &= ~(ICRNL | INLCR | IGNCR);
-
- options.c_cc[VMIN] = 0; // min chars to read
- options.c_cc[VTIME] = 2; // 10ths second timeout
-
- tcflush(fd, TCIFLUSH);
- tcsetattr(fd, TCSANOW, &options);
-
- return fd;
-#else // __MINGW32__
- const wchar_t * cportName = (const wchar_t *)(*env)->GetStringChars(env, portName, NULL);
- HANDLE handle = CreateFile(cportName,
- GENERIC_READ | GENERIC_WRITE,
- 0,
- NULL,
- OPEN_EXISTING,
- FILE_FLAG_OVERLAPPED,
- NULL);
- (*env)->ReleaseStringChars(env, portName, cportName);
-
- if (handle == INVALID_HANDLE_VALUE) {
- char msg[256];
- const char * name = (*env)->GetStringUTFChars(env, portName, NULL);
- sprintf_s(msg, sizeof(msg), "Error opening %s", name);
- (*env)->ReleaseStringUTFChars(env, portName, name);
- throwIOException(env, msg);
- return -1;
- }
-
- DCB dcb = { 0 };
-
- if (!GetCommState(handle, &dcb)) {
- throwIOException(env, "Error getting DCB");
- return -1;
- }
-
- dcb.BaudRate = baudRate;
- dcb.ByteSize = (BYTE)byteSize;
-
- switch (parity) {
- case 0: // None
- dcb.fParity = FALSE;
- dcb.Parity = NOPARITY;
- break;
- case 1: // Even
- dcb.fParity = TRUE;
- dcb.Parity = EVENPARITY;
- break;
- case 2: // Odd
- dcb.fParity = TRUE;
- dcb.Parity = ODDPARITY;
- break;
- }
-
- switch (stopBits) {
- case 0:
- dcb.StopBits = ONESTOPBIT;
- break;
- case 1:
- dcb.StopBits = TWOSTOPBITS;
- break;
- }
-
- if (!SetCommState(handle, &dcb)) {
- throwIOException(env, "Error setting DCB");
- return -1;
- }
-
- COMMTIMEOUTS timeouts = { 0 };
- timeouts.ReadIntervalTimeout = MAXDWORD;
- timeouts.ReadTotalTimeoutMultiplier = MAXDWORD;
- timeouts.ReadTotalTimeoutConstant = 200;
- if (!SetCommTimeouts(handle, &timeouts)) {
- throwIOException(env, "Error setting timeouts");
- return -1;
- }
-
-#ifdef _WIN64
- return (jlong)handle;
-#else
- return (jlong)(unsigned)handle;
-#endif
-#endif // __MINGW32__
-}
-
-JNIEXPORT void JNICALL FUNC(close0)(JNIEnv *env, jobject jobj, jlong handle)
-{
-#ifndef __MINGW32__
- close(handle);
-#else
-#ifdef _WIN64
- CloseHandle((HANDLE)handle);
-#else
- CloseHandle((HANDLE)(unsigned)handle);
-#endif
-#endif
-}
-
-JNIEXPORT jint JNICALL FUNC(available0)(JNIEnv * env, jobject jobj, jlong jhandle)
-{
-#ifndef __MINGW32__
- int result = 0;
- if (ioctl(jhandle, FIONREAD, &result ) < 0) {
- throwIOException(env, "Error calling ioctl");
- return 0;
- }
- return result;
-#else
- COMSTAT stat;
- DWORD errCode;
-#ifdef _WIN64
- HANDLE handle = (HANDLE)jhandle;
-#else
- HANDLE handle = (HANDLE)(unsigned)jhandle;
-#endif
-
- if (ClearCommError(handle, &errCode, &stat) == 0) {
- throwIOException(env, "Error calling ClearCommError");
- return -1;
- }
- return (int)stat.cbInQue;
-#endif
-}
-
-JNIEXPORT jint JNICALL FUNC(read1)(JNIEnv * env, jobject jobj, jlong jhandle, jbyteArray bytes, jint offset, jint size)
-{
-#ifndef __MINGW32__
- jbyte buff[256];
- int n = size < sizeof(buff) ? size : sizeof(buff);
- n = read(jhandle, buff, n);
- if (n > 0) {
- (*env)->SetByteArrayRegion(env, bytes, offset, n, buff);
- }
- return n;
-#else
- OVERLAPPED olp = { 0 };
-
- olp.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
- if (olp.hEvent == NULL) {
- throwIOException(env, "Error creating event");
- return -1;
- }
-
- char buff[256];
- DWORD nread = sizeof(buff) < size ? sizeof(buff) : size;
-#ifdef _WIN64
- HANDLE handle = (HANDLE)jhandle;
-#else
- HANDLE handle = (HANDLE)(unsigned)jhandle;
-#endif
-
- if (!ReadFile(handle, buff, sizeof(buff), &nread, &olp)) {
- if (GetLastError() != ERROR_IO_PENDING) {
- throwIOException(env, "Error reading from port");
- CloseHandle(olp.hEvent);
- return -1;
- } else {
- switch (WaitForSingleObject(olp.hEvent, INFINITE)) {
- case WAIT_OBJECT_0:
- if (!GetOverlappedResult(handle, &olp, &nread, FALSE)) {
- if (GetLastError() != ERROR_OPERATION_ABORTED) {
- throwIOException(env, "Error waiting for read");
- }
- CloseHandle(olp.hEvent);
- return -1;
- }
- break;
- }
- }
- }
-
- if (nread > 0) {
- (*env)->SetByteArrayRegion(env, bytes, offset, nread, (jbyte *)buff);
- }
- CloseHandle(olp.hEvent);
- return nread;
-#endif
-}
-
-JNIEXPORT void JNICALL FUNC(write0)(JNIEnv *env, jobject jobj, jlong jhandle, jint b)
-{
-#ifndef __MINGW32__
- char buff = b;
- write(jhandle, &buff, 1);
-#else
- OVERLAPPED olp = { 0 };
-
- olp.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
- if (olp.hEvent == NULL) {
- throwIOException(env, "Error creating event");
- return;
- }
-
- char buff = (char)b;
- DWORD nwritten;
-#ifdef _WIN64
- HANDLE handle = (HANDLE)jhandle;
-#else
- HANDLE handle = (HANDLE)(unsigned)jhandle;
-#endif
-
- if (!WriteFile(handle, &buff, sizeof(buff), &nwritten, &olp)) {
- if (GetLastError() != ERROR_IO_PENDING) {
- throwIOException(env, "Error writing to port");
- }
- else {
- switch (WaitForSingleObject(olp.hEvent, INFINITE)) {
- case WAIT_OBJECT_0:
- if (!GetOverlappedResult(handle, &olp, &nwritten, FALSE)) {
- throwIOException(env, "Error waiting for write");
- }
- }
- }
- }
-
- CloseHandle(olp.hEvent);
-#endif
-}
-
-JNIEXPORT void JNICALL FUNC(write1)(JNIEnv *env, jobject jobj, jlong jhandle, jbyteArray bytes, jint offset, jint size)
-{
-#ifndef __MINGW32__
- while (size > 0) {
- jbyte buff[256];
- int n = size < sizeof(buff) ? size : sizeof(buff);
- (*env)->GetByteArrayRegion(env, bytes, offset, n, buff);
- n = write(jhandle, buff, n);
- if (n < 0) {
- return;
- }
- size -= n;
- offset += n;
- }
-#else
- OVERLAPPED olp = { 0 };
-
- olp.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
- if (olp.hEvent == NULL) {
- throwIOException(env, "Error creating event");
- return;
- }
-
- while (size > 0) {
- char buff[256];
- DWORD nwritten = sizeof(buff) < size ? sizeof(buff) : size;
- (*env)->GetByteArrayRegion(env, bytes, offset, nwritten, (jbyte *)buff);
-#ifdef _WIN64
- HANDLE handle = (HANDLE)jhandle;
-#else
- HANDLE handle = (HANDLE)(unsigned)jhandle;
-#endif
-
- if (!WriteFile(handle, buff, nwritten, &nwritten, &olp)) {
- if (GetLastError() != ERROR_IO_PENDING) {
- throwIOException(env, "Error writing to port");
- return;
- }
- else {
- switch (WaitForSingleObject(olp.hEvent, INFINITE)) {
- case WAIT_OBJECT_0:
- if (!GetOverlappedResult(handle, &olp, &nwritten, FALSE)) {
- throwIOException(env, "Error waiting for write");
- return;
- }
- }
- }
- }
- size -= nwritten;
- offset += nwritten;
- }
-
- CloseHandle(olp.hEvent);
-#endif
-}
-
-#ifdef __MINGW32__
-JNIEXPORT jstring FUNC(getPortName)(JNIEnv *env, jclass cls, jint i)
-{
- HKEY key;
-
- if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"HARDWARE\\DEVICEMAP\\SERIALCOMM", 0, KEY_READ, &key) != ERROR_SUCCESS) {
- // There are none
- return NULL;
- }
-
- wchar_t name[256];
- DWORD len = sizeof(name);
- LONG rc = RegEnumValue(key, (DWORD)i, name, &len, NULL, NULL, NULL, NULL);
- if (rc != ERROR_SUCCESS) {
- if (rc != ERROR_NO_MORE_ITEMS) {
- throwIOException(env, "Can not enum value");
- }
- RegCloseKey(key);
- return NULL;
- }
-
- wchar_t value[256];
- DWORD type;
- len = sizeof(value);
- if (RegQueryValueEx(key, name, NULL, &type, (BYTE *)value, &len) != ERROR_SUCCESS) {
- throwIOException(env, "Can not query value");
- RegCloseKey(key);
- return NULL;
- }
-
- jstring result = (*env)->NewString(env, (jchar *)value, (jsize) wcslen(value));
- RegCloseKey(key);
- return result;
-}
-#endif
diff --git a/native/org.eclipse.cdt.native.serial/jni/.gitignore b/native/org.eclipse.cdt.native.serial/native_src/.gitignore
index 5761abcfdf0..5761abcfdf0 100644
--- a/native/org.eclipse.cdt.native.serial/jni/.gitignore
+++ b/native/org.eclipse.cdt.native.serial/native_src/.gitignore
diff --git a/native/org.eclipse.cdt.native.serial/native_src/Makefile b/native/org.eclipse.cdt.native.serial/native_src/Makefile
new file mode 100644
index 00000000000..078c9b5c5b7
--- /dev/null
+++ b/native/org.eclipse.cdt.native.serial/native_src/Makefile
@@ -0,0 +1,101 @@
+#*******************************************************************************
+# Copyright (c) 2002, 2019 QNX Software Systems and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# QNX Software Systems - initial API and implementation
+# Alex Blewitt - MacOSX with a 64-bit vm
+#*******************************************************************************/
+SHELL=/bin/bash -o pipefail
+ifeq ($(JAVA_HOME),)
+$(error Please define JAVA_HOME)
+endif
+
+REPRODUCIBLE_BUILD_WRAPPER := $(shell git rev-parse --show-toplevel)/releng/scripts/reproducible_build_wrapper.py
+
+OS_DIR = ../os
+
+CFLAGS += -fPIC -D_REENTRANT
+COMMON_CFLAGS := -Wall -pedantic -Werror
+
+UNAME = $(shell uname)
+ifeq ($(UNAME),Linux)
+LIBS = \
+ $(OS_DIR)/win32/x86_64/serial.dll \
+ $(OS_DIR)/linux/x86_64/libserial.so \
+ $(OS_DIR)/linux/aarch64/libserial.so \
+ $(OS_DIR)/linux/ppc64le/libserial.so \
+ $(OS_DIR)/macosx/x86_64/libserial.jnilib \
+ $(OS_DIR)/macosx/aarch64/libserial.jnilib
+else
+ifeq ($(UNAME),Darwin)
+LIBS = \
+ $(OS_DIR)/macosx/x86_64/libserial.jnilib
+else
+LIBS = \
+ $(OS_DIR)/win32/x86_64/serial.dll
+endif
+endif
+
+all: $(LIBS)
+
+clean :
+ $(RM) $(LIBS)
+
+MAC_TO_SIGN=$(OS_DIR)/macosx/x86_64/libserial.jnilib $(OS_DIR)/macosx/aarch64/libserial.jnilib
+WIN_TO_SIGN=$(OS_DIR)/win32/x86_64/serial.dll
+### This block of code also exists in core/org.eclipse.cdt.core.native/native_src/Makefile
+TMPDIR := $(shell mktemp -d -t production-XXXXXXXXXX)
+.PHONY: production
+production: $(MAC_TO_SIGN) $(WIN_TO_SIGN)
+ set -x ; $(foreach tosign,$(MAC_TO_SIGN),\
+ temp=$(TMPDIR)/$(shell basename $(tosign)) && \
+ mv $(tosign) $$temp && \
+ curl -f --silent --show-error -o $(tosign) -F file=@$$temp https://cbi.eclipse.org/macos/codesign/sign && \
+ rm $$temp && \
+ ) true
+ set -x ; $(foreach tosign,$(WIN_TO_SIGN),\
+ temp=$(TMPDIR)/$(shell basename $(tosign)) && \
+ mv $(tosign) $$temp && \
+ curl -f --silent --show-error -o $(tosign) -F file=@$$temp https://cbi.eclipse.org/authenticode/sign && \
+ rm $$temp && \
+ ) true
+ rmdir $(TMPDIR)
+
+
+rebuild: clean all
+
+# Windows DLLs have a build timestamp in them. This makes it impossible to have reproducible builds.
+# However, x86_64-w64-mingw32-ld on Debian/Ubuntu has a patch that overrides the current date
+# using the SOURCE_DATE_EPOCH environment variable. Call REPRODUCIBLE_BUILD_WRAPPER to make sure the
+# same binary is produced for the same source each time.
+$(OS_DIR)/win32/x86_64/serial.dll: serial.c
+ mkdir -p $(dir $@) && \
+ $(REPRODUCIBLE_BUILD_WRAPPER) \
+ x86_64-w64-mingw32-gcc $(COMMON_CFLAGS) -Iinclude -I"$(JAVA_HOME)/include" -I"$(JAVA_HOME)/include/win32" -shared -o $@ $^
+
+$(OS_DIR)/linux/x86_64/libserial.so: serial.c
+ mkdir -p $(dir $@) && \
+ x86_64-linux-gnu-gcc -m64 $(COMMON_CFLAGS) $(CFLAGS) -Iinclude -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux $(LDFLAGS) -shared -o $@ $^
+
+$(OS_DIR)/linux/aarch64/libserial.so: serial.c
+ mkdir -p $(dir $@) && \
+ aarch64-linux-gnu-gcc $(COMMON_CFLAGS) $(CFLAGS) -Iinclude -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux $(LDFLAGS) -shared -o $@ $^
+
+$(OS_DIR)/linux/ppc64le/libserial.so: serial.c
+ mkdir -p $(dir $@)
+ powerpc64le-linux-gnu-gcc $(COMMON_CFLAGS) -m64 -mcpu=power8 $(CFLAGS) -Iinclude -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux $(LDFLAGS) -shared -o $@ serial.c
+
+$(OS_DIR)/macosx/x86_64/libserial.jnilib: serial.c
+ mkdir -p $(dir $@) && \
+ x86_64-apple-darwin21.1-clang $(COMMON_CFLAGS) $(CFLAGS) -Iinclude -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/darwin $(LDFLAGS) -dynamiclib -o $@ $^
+
+$(OS_DIR)/macosx/aarch64/libserial.jnilib: serial.c
+ mkdir -p $(dir $@) && \
+ arm64-apple-darwin21.1-clang $(COMMON_CFLAGS) $(CFLAGS) -Iinclude -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/darwin $(LDFLAGS) -dynamiclib -o $@ $^
diff --git a/native/org.eclipse.cdt.native.serial/native_src/Readme.md b/native/org.eclipse.cdt.native.serial/native_src/Readme.md
new file mode 100644
index 00000000000..2413d2502f5
--- /dev/null
+++ b/native/org.eclipse.cdt.native.serial/native_src/Readme.md
@@ -0,0 +1,3 @@
+### How to rebuild natives.
+
+This information has moved to the `native` section in CDT's root README.md.
diff --git a/native/org.eclipse.cdt.native.serial/native_src/include/org_eclipse_cdt_serial_SerialPort.h b/native/org.eclipse.cdt.native.serial/native_src/include/org_eclipse_cdt_serial_SerialPort.h
new file mode 100644
index 00000000000..44505c12fff
--- /dev/null
+++ b/native/org.eclipse.cdt.native.serial/native_src/include/org_eclipse_cdt_serial_SerialPort.h
@@ -0,0 +1,56 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+/* Header for class org_eclipse_cdt_serial_SerialPort */
+
+#ifndef _Included_org_eclipse_cdt_serial_SerialPort
+#define _Included_org_eclipse_cdt_serial_SerialPort
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+ * Class: org_eclipse_cdt_serial_SerialPort
+ * Method: open0
+ * Signature: (Ljava/lang/String;IIII)J
+ */
+JNIEXPORT jlong JNICALL Java_org_eclipse_cdt_serial_SerialPort_open0(JNIEnv *, jobject, jstring, jint, jint, jint,
+ jint);
+
+/*
+ * Class: org_eclipse_cdt_serial_SerialPort
+ * Method: close0
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_eclipse_cdt_serial_SerialPort_close0(JNIEnv *, jobject, jlong);
+
+/*
+ * Class: org_eclipse_cdt_serial_SerialPort
+ * Method: read1
+ * Signature: (J[BII)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_cdt_serial_SerialPort_read1(JNIEnv *, jobject, jlong, jbyteArray, jint, jint);
+
+/*
+ * Class: org_eclipse_cdt_serial_SerialPort
+ * Method: available0
+ * Signature: (J)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_cdt_serial_SerialPort_available0(JNIEnv *, jobject, jlong);
+
+/*
+ * Class: org_eclipse_cdt_serial_SerialPort
+ * Method: write0
+ * Signature: (JI)V
+ */
+JNIEXPORT void JNICALL Java_org_eclipse_cdt_serial_SerialPort_write0(JNIEnv *, jobject, jlong, jint);
+
+/*
+ * Class: org_eclipse_cdt_serial_SerialPort
+ * Method: write1
+ * Signature: (J[BII)V
+ */
+JNIEXPORT void JNICALL Java_org_eclipse_cdt_serial_SerialPort_write1(JNIEnv *, jobject, jlong, jbyteArray, jint, jint);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/native/org.eclipse.cdt.native.serial/native_src/serial.c b/native/org.eclipse.cdt.native.serial/native_src/serial.c
new file mode 100644
index 00000000000..91943f5c85a
--- /dev/null
+++ b/native/org.eclipse.cdt.native.serial/native_src/serial.c
@@ -0,0 +1,522 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - initial API and implementation
+ * STMicroelectronics
+ *******************************************************************************/
+#ifdef __APPLE__
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/uio.h>
+#endif
+#ifndef __MINGW32__
+#include <unistd.h>
+#include <fcntl.h>
+#include <termios.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <strings.h>
+#include <errno.h>
+#include <sys/ioctl.h>
+#ifndef __APPLE__
+#include <linux/serial.h>
+#endif
+#else
+#define WIN32_LEAN_AND_MEAN
+#define UNICODE
+#include <windows.h>
+#endif
+#include <jni.h>
+#include <org_eclipse_cdt_serial_SerialPort.h>
+
+#define FUNC(x) Java_org_eclipse_cdt_serial_SerialPort_##x
+
+/**
+ * Use this method to throw an exception when open fails after the OS open
+ * stage. This method obtains the last error from OS to include in the
+ * IOException
+ */
+#ifndef __APPLE__
+#ifndef __MINGW32__
+static void closeAndthrowIOException(int fd, JNIEnv *env, const char *msg) {
+#else
+static void closeAndthrowIOException(HANDLE handle, JNIEnv *env, const char *msg) {
+#endif
+ char buff[256];
+#ifndef __MINGW32__
+ snprintf(buff, sizeof(buff), "%s: %s", msg, strerror(errno));
+ close(fd);
+#else
+ sprintf_s(buff, sizeof(buff), "%s (%d)", msg, GetLastError());
+ CloseHandle(handle);
+#endif
+ jclass cls = (*env)->FindClass(env, "java/io/IOException");
+ (*env)->ThrowNew(env, cls, buff);
+}
+#endif
+
+static void throwIOException(JNIEnv *env, const char *msg) {
+ char buff[256];
+#ifndef __MINGW32__
+ snprintf(buff, sizeof(buff), "%s: %s", msg, strerror(errno));
+#else
+ sprintf_s(buff, sizeof(buff), "%s (%d)", msg, GetLastError());
+#endif
+ jclass cls = (*env)->FindClass(env, "java/io/IOException");
+ (*env)->ThrowNew(env, cls, buff);
+}
+
+JNIEXPORT jlong JNICALL FUNC(open0)(JNIEnv *env, jobject jobj, jstring portName, jint baudRate, jint byteSize,
+ jint parity, jint stopBits) {
+#ifndef __MINGW32__
+ const char *cportName = (*env)->GetStringUTFChars(env, portName, NULL);
+ int fd = open(cportName, O_RDWR | O_NOCTTY | O_NDELAY);
+ if (fd < 0) {
+ char msg[256];
+ snprintf(msg, sizeof(msg), "Error opening %s", cportName);
+ (*env)->ReleaseStringUTFChars(env, portName, cportName);
+ throwIOException(env, msg);
+ return fd;
+ }
+ (*env)->ReleaseStringUTFChars(env, portName, cportName);
+
+ // Turn off all flags
+ fcntl(fd, F_SETFL, 0);
+
+ struct termios options;
+ tcgetattr(fd, &options);
+ options.c_cflag |= (CLOCAL | CREAD);
+
+#ifndef __APPLE__
+ speed_t baud;
+ switch (baudRate) {
+ case 110:
+ baud = B110;
+ break;
+ case 300:
+ baud = B300;
+ break;
+ case 600:
+ baud = B600;
+ break;
+ case 1200:
+ baud = B1200;
+ break;
+ case 2400:
+ baud = B2400;
+ break;
+ case 4800:
+ baud = B4800;
+ break;
+ case 9600:
+ baud = B9600;
+ break;
+ case 19200:
+ baud = B19200;
+ break;
+ case 38400:
+ baud = B38400;
+ break;
+ case 57600:
+ baud = B57600;
+ break;
+ case 115200:
+ baud = B115200;
+ break;
+ case 230400:
+ baud = B230400;
+ break;
+ case 460800:
+ baud = B460800;
+ break;
+ case 500000:
+ baud = B500000;
+ break;
+ case 576000:
+ baud = B576000;
+ break;
+ case 921600:
+ baud = B921600;
+ break;
+ case 1000000:
+ baud = B1000000;
+ break;
+ case 1152000:
+ baud = B1152000;
+ break;
+ case 1500000:
+ baud = B1500000;
+ break;
+ case 2000000:
+ baud = B2000000;
+ break;
+ case 2500000:
+ baud = B2500000;
+ break;
+ case 3000000:
+ baud = B3000000;
+ break;
+ case 3500000:
+ baud = B3500000;
+ break;
+ case 4000000:
+ baud = B4000000;
+ break;
+ default:
+ baud = B0;
+ break;
+ }
+
+ if (baud == B0) {
+ // Use custom linux baud rates if possible: https://bugs.eclipse.org/bugs/show_bug.cgi?id=543122#c8
+ struct serial_struct serial_options;
+ options.c_cflag |= B38400;
+
+ if (ioctl(fd, TIOCGSERIAL, &serial_options) != 0) {
+ closeAndthrowIOException(fd, env, "Failed to use custom baud rate. Error using TIOCGSERIAL");
+ return -1;
+ }
+ serial_options.custom_divisor = serial_options.baud_base / baudRate;
+ if (serial_options.custom_divisor == 0) {
+ serial_options.custom_divisor = 1;
+ }
+
+ serial_options.flags &= ~ASYNC_SPD_MASK;
+ serial_options.flags |= ASYNC_SPD_CUST;
+
+ if (ioctl(fd, TIOCSSERIAL, &serial_options) != 0) {
+ closeAndthrowIOException(fd, env, "Failed to use custom baud rate. Error using TIOCSSERIAL");
+ return -1;
+ }
+ } else {
+ // Set baud rate
+ cfsetispeed(&options, baud);
+ cfsetospeed(&options, baud);
+ }
+
+#else
+ // On OSX speed_t is simply the baud rate:
+ // https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man3/cfsetispeed.3.html
+ cfsetispeed(&options, baudRate);
+ cfsetospeed(&options, baudRate);
+#endif
+
+ // set data size
+ options.c_cflag &= ~CSIZE;
+ switch (byteSize) {
+ case 5:
+ options.c_cflag |= CS5;
+ break;
+ case 6:
+ options.c_cflag |= CS6;
+ break;
+ case 7:
+ options.c_cflag |= CS7;
+ break;
+ case 8:
+ options.c_cflag |= CS8;
+ break;
+ }
+
+ // set parity
+ switch (parity) {
+ case 0: // None
+ options.c_cflag &= ~PARENB;
+ break;
+ case 1: // Even
+ options.c_cflag |= PARENB;
+ options.c_cflag &= ~PARODD;
+ break;
+ case 2: // Odd
+ options.c_cflag |= (PARENB | PARODD);
+ break;
+ }
+
+ switch (stopBits) {
+ case 0: // 1
+ options.c_cflag &= ~CSTOPB;
+ break;
+ case 1: // 2
+ options.c_cflag |= CSTOPB;
+ break;
+ }
+
+ // raw input
+ options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
+
+ // ignore parity
+ options.c_iflag |= IGNPAR;
+
+ // turn off those bits in the input flag that fiddle with CR and NL
+ options.c_iflag &= ~(ICRNL | INLCR | IGNCR);
+
+ options.c_cc[VMIN] = 0; // min chars to read
+ options.c_cc[VTIME] = 2; // 10ths second timeout
+
+ tcflush(fd, TCIFLUSH);
+ tcsetattr(fd, TCSANOW, &options);
+
+ return fd;
+#else // __MINGW32__
+ const wchar_t *cportName = (const wchar_t *)(*env)->GetStringChars(env, portName, NULL);
+ HANDLE handle =
+ CreateFile(cportName, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);
+ (*env)->ReleaseStringChars(env, portName, cportName);
+
+ if (handle == INVALID_HANDLE_VALUE) {
+ char msg[256];
+ const char *name = (*env)->GetStringUTFChars(env, portName, NULL);
+ sprintf_s(msg, sizeof(msg), "Error opening %s", name);
+ (*env)->ReleaseStringUTFChars(env, portName, name);
+ throwIOException(env, msg);
+ return -1;
+ }
+
+ DCB dcb = {0};
+
+ if (!GetCommState(handle, &dcb)) {
+ closeAndthrowIOException(handle, env, "Error getting DCB");
+ return -1;
+ }
+
+ dcb.BaudRate = baudRate;
+ dcb.ByteSize = (BYTE)byteSize;
+
+ switch (parity) {
+ case 0: // None
+ dcb.fParity = FALSE;
+ dcb.Parity = NOPARITY;
+ break;
+ case 1: // Even
+ dcb.fParity = TRUE;
+ dcb.Parity = EVENPARITY;
+ break;
+ case 2: // Odd
+ dcb.fParity = TRUE;
+ dcb.Parity = ODDPARITY;
+ break;
+ }
+
+ switch (stopBits) {
+ case 0:
+ dcb.StopBits = ONESTOPBIT;
+ break;
+ case 1:
+ dcb.StopBits = TWOSTOPBITS;
+ break;
+ }
+
+ if (!SetCommState(handle, &dcb)) {
+ closeAndthrowIOException(handle, env, "Error setting DCB");
+ return -1;
+ }
+
+ COMMTIMEOUTS timeouts = {0};
+ timeouts.ReadIntervalTimeout = MAXDWORD;
+ timeouts.ReadTotalTimeoutMultiplier = MAXDWORD;
+ timeouts.ReadTotalTimeoutConstant = 200;
+ if (!SetCommTimeouts(handle, &timeouts)) {
+ closeAndthrowIOException(handle, env, "Error setting timeouts");
+ return -1;
+ }
+
+#ifdef _WIN64
+ return (jlong)handle;
+#else
+ return (jlong)(unsigned)handle;
+#endif
+#endif // __MINGW32__
+}
+
+JNIEXPORT void JNICALL FUNC(close0)(JNIEnv *env, jobject jobj, jlong handle) {
+#ifndef __MINGW32__
+ close(handle);
+#else
+#ifdef _WIN64
+ CloseHandle((HANDLE)handle);
+#else
+ CloseHandle((HANDLE)(unsigned)handle);
+#endif
+#endif
+}
+
+JNIEXPORT jint JNICALL FUNC(available0)(JNIEnv *env, jobject jobj, jlong jhandle) {
+#ifndef __MINGW32__
+ int result = 0;
+ if (ioctl(jhandle, FIONREAD, &result) < 0) {
+ throwIOException(env, "Error calling ioctl");
+ return 0;
+ }
+ return result;
+#else
+ COMSTAT stat;
+ DWORD errCode;
+#ifdef _WIN64
+ HANDLE handle = (HANDLE)jhandle;
+#else
+ HANDLE handle = (HANDLE)(unsigned)jhandle;
+#endif
+
+ if (ClearCommError(handle, &errCode, &stat) == 0) {
+ throwIOException(env, "Error calling ClearCommError");
+ return -1;
+ }
+ return (int)stat.cbInQue;
+#endif
+}
+
+JNIEXPORT jint JNICALL FUNC(read1)(JNIEnv *env, jobject jobj, jlong jhandle, jbyteArray bytes, jint offset, jint size) {
+#ifndef __MINGW32__
+ jbyte buff[256];
+ int n = size < sizeof(buff) ? size : sizeof(buff);
+ n = read(jhandle, buff, n);
+ if (n > 0) {
+ (*env)->SetByteArrayRegion(env, bytes, offset, n, buff);
+ }
+ return n;
+#else
+ OVERLAPPED olp = {0};
+
+ olp.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
+ if (olp.hEvent == NULL) {
+ throwIOException(env, "Error creating event");
+ return -1;
+ }
+
+ char buff[256];
+ DWORD nread = sizeof(buff) < size ? sizeof(buff) : size;
+#ifdef _WIN64
+ HANDLE handle = (HANDLE)jhandle;
+#else
+ HANDLE handle = (HANDLE)(unsigned)jhandle;
+#endif
+
+ if (!ReadFile(handle, buff, sizeof(buff), &nread, &olp)) {
+ if (GetLastError() != ERROR_IO_PENDING) {
+ throwIOException(env, "Error reading from port");
+ CloseHandle(olp.hEvent);
+ return -1;
+ } else {
+ switch (WaitForSingleObject(olp.hEvent, INFINITE)) {
+ case WAIT_OBJECT_0:
+ if (!GetOverlappedResult(handle, &olp, &nread, FALSE)) {
+ if (GetLastError() != ERROR_OPERATION_ABORTED) {
+ throwIOException(env, "Error waiting for read");
+ }
+ CloseHandle(olp.hEvent);
+ return -1;
+ }
+ break;
+ }
+ }
+ }
+
+ if (nread > 0) {
+ (*env)->SetByteArrayRegion(env, bytes, offset, nread, (jbyte *)buff);
+ }
+ CloseHandle(olp.hEvent);
+ return nread;
+#endif
+}
+
+JNIEXPORT void JNICALL FUNC(write0)(JNIEnv *env, jobject jobj, jlong jhandle, jint b) {
+#ifndef __MINGW32__
+ char buff = b;
+ write(jhandle, &buff, 1);
+#else
+ OVERLAPPED olp = {0};
+
+ olp.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
+ if (olp.hEvent == NULL) {
+ throwIOException(env, "Error creating event");
+ return;
+ }
+
+ char buff = (char)b;
+ DWORD nwritten;
+#ifdef _WIN64
+ HANDLE handle = (HANDLE)jhandle;
+#else
+ HANDLE handle = (HANDLE)(unsigned)jhandle;
+#endif
+
+ if (!WriteFile(handle, &buff, sizeof(buff), &nwritten, &olp)) {
+ if (GetLastError() != ERROR_IO_PENDING) {
+ throwIOException(env, "Error writing to port");
+ } else {
+ switch (WaitForSingleObject(olp.hEvent, INFINITE)) {
+ case WAIT_OBJECT_0:
+ if (!GetOverlappedResult(handle, &olp, &nwritten, FALSE)) {
+ throwIOException(env, "Error waiting for write");
+ }
+ }
+ }
+ }
+
+ CloseHandle(olp.hEvent);
+#endif
+}
+
+JNIEXPORT void JNICALL FUNC(write1)(JNIEnv *env, jobject jobj, jlong jhandle, jbyteArray bytes, jint offset,
+ jint size) {
+#ifndef __MINGW32__
+ while (size > 0) {
+ jbyte buff[256];
+ int n = size < sizeof(buff) ? size : sizeof(buff);
+ (*env)->GetByteArrayRegion(env, bytes, offset, n, buff);
+ n = write(jhandle, buff, n);
+ if (n < 0) {
+ return;
+ }
+ size -= n;
+ offset += n;
+ }
+#else
+ OVERLAPPED olp = {0};
+
+ olp.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
+ if (olp.hEvent == NULL) {
+ throwIOException(env, "Error creating event");
+ return;
+ }
+
+ while (size > 0) {
+ char buff[256];
+ DWORD nwritten = sizeof(buff) < size ? sizeof(buff) : size;
+ (*env)->GetByteArrayRegion(env, bytes, offset, nwritten, (jbyte *)buff);
+#ifdef _WIN64
+ HANDLE handle = (HANDLE)jhandle;
+#else
+ HANDLE handle = (HANDLE)(unsigned)jhandle;
+#endif
+
+ if (!WriteFile(handle, buff, nwritten, &nwritten, &olp)) {
+ if (GetLastError() != ERROR_IO_PENDING) {
+ throwIOException(env, "Error writing to port");
+ return;
+ } else {
+ switch (WaitForSingleObject(olp.hEvent, INFINITE)) {
+ case WAIT_OBJECT_0:
+ if (!GetOverlappedResult(handle, &olp, &nwritten, FALSE)) {
+ throwIOException(env, "Error waiting for write");
+ return;
+ }
+ }
+ }
+ }
+ size -= nwritten;
+ offset += nwritten;
+ }
+
+ CloseHandle(olp.hEvent);
+#endif
+}
diff --git a/native/org.eclipse.cdt.native.serial/os/linux/aarch64/libserial.so b/native/org.eclipse.cdt.native.serial/os/linux/aarch64/libserial.so
new file mode 100755
index 00000000000..cbad242128a
--- /dev/null
+++ b/native/org.eclipse.cdt.native.serial/os/linux/aarch64/libserial.so
Binary files differ
diff --git a/native/org.eclipse.cdt.native.serial/os/linux/ppc64le/libserial.so b/native/org.eclipse.cdt.native.serial/os/linux/ppc64le/libserial.so
new file mode 100755
index 00000000000..96a0e104b9a
--- /dev/null
+++ b/native/org.eclipse.cdt.native.serial/os/linux/ppc64le/libserial.so
Binary files differ
diff --git a/native/org.eclipse.cdt.native.serial/os/linux/x86_64/libserial.so b/native/org.eclipse.cdt.native.serial/os/linux/x86_64/libserial.so
index 3abd110e911..8b05efbeced 100755
--- a/native/org.eclipse.cdt.native.serial/os/linux/x86_64/libserial.so
+++ b/native/org.eclipse.cdt.native.serial/os/linux/x86_64/libserial.so
Binary files differ
diff --git a/native/org.eclipse.cdt.native.serial/os/macosx/aarch64/libserial.jnilib b/native/org.eclipse.cdt.native.serial/os/macosx/aarch64/libserial.jnilib
new file mode 100755
index 00000000000..dcebcd9e97d
--- /dev/null
+++ b/native/org.eclipse.cdt.native.serial/os/macosx/aarch64/libserial.jnilib
Binary files differ
diff --git a/native/org.eclipse.cdt.native.serial/os/macosx/x86_64/libserial.jnilib b/native/org.eclipse.cdt.native.serial/os/macosx/x86_64/libserial.jnilib
index 164c975250a..4915bcadadc 100755
--- a/native/org.eclipse.cdt.native.serial/os/macosx/x86_64/libserial.jnilib
+++ b/native/org.eclipse.cdt.native.serial/os/macosx/x86_64/libserial.jnilib
Binary files differ
diff --git a/native/org.eclipse.cdt.native.serial/os/win32/x86_64/serial.dll b/native/org.eclipse.cdt.native.serial/os/win32/x86_64/serial.dll
index fa6b4ce6c0e..94b335c339a 100755
--- a/native/org.eclipse.cdt.native.serial/os/win32/x86_64/serial.dll
+++ b/native/org.eclipse.cdt.native.serial/os/win32/x86_64/serial.dll
Binary files differ
diff --git a/native/org.eclipse.cdt.native.serial/plugin.properties b/native/org.eclipse.cdt.native.serial/plugin.properties
new file mode 100644
index 00000000000..c2a40a95aee
--- /dev/null
+++ b/native/org.eclipse.cdt.native.serial/plugin.properties
@@ -0,0 +1,14 @@
+##################################################################################
+# Copyright (c) 2020 Torbjörn Svensson and others. All rights reserved.
+# This program and the accompanying materials are made available under the terms
+# of the Eclipse Public License 2.0 which accompanies this distribution, and is
+# available at https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Torbjörn Svensson - initial API and implementation
+##################################################################################
+
+pluginName = Serial Port
+providerName = Eclipse CDT
diff --git a/native/org.eclipse.cdt.native.serial/pom.xml b/native/org.eclipse.cdt.native.serial/pom.xml
index de6ac78ae72..42f9e033b40 100644
--- a/native/org.eclipse.cdt.native.serial/pom.xml
+++ b/native/org.eclipse.cdt.native.serial/pom.xml
@@ -1,11 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
- Copyright (c) 2018 Red Hat, Inc. and others.
+ Copyright (c) 2018, 2021 Red Hat, Inc. and others.
This program and the accompanying materials
are made available under the terms of the Eclipse Public License 2.0
which accompanies this distribution, and is available at
https://www.eclipse.org/legal/epl-2.0/
-
+
SPDX-License-Identifier: EPL-2.0
Contributors:
@@ -19,11 +19,11 @@
<parent>
<groupId>org.eclipse.cdt</groupId>
<artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
+ <version>10.7.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
- <version>1.1.300-SNAPSHOT</version>
+ <version>1.2.600-SNAPSHOT</version>
<artifactId>org.eclipse.cdt.native.serial</artifactId>
<packaging>eclipse-plugin</packaging>
@@ -46,7 +46,7 @@
<phase>process-resources</phase>
<configuration>
<target>
- <exec executable="make" newenvironment="false" failOnError="true" dir="./jni">
+ <exec executable="make" newenvironment="false" failOnError="true" dir="./native_src">
<arg value="rebuild" />
</exec>
</target>
@@ -79,7 +79,7 @@
<configuration>
<target>
<exec executable="docker" newenvironment="false" failOnError="true">
- <!-- docker run -\-rm -t -v $(git rev-parse -\-show-toplevel):/work -w /work/$(git rev-parse -\-show-prefix) quay.io/eclipse-cdt/cdt-infra-eclipse-full:latest make -C jni rebuild -->
+ <!-- docker run -\-rm -t -v $(git rev-parse -\-show-toplevel):/work -w /work/$(git rev-parse -\-show-prefix) quay.io/eclipse-cdt/cdt-infra-eclipse-full:latest make -C native_src rebuild -->
<arg value="run" />
<arg value="--rm" />
<arg value="-t" />
@@ -90,7 +90,7 @@
<arg value="quay.io/eclipse-cdt/cdt-infra-eclipse-full:latest" />
<arg value="make" />
<arg value="-C" />
- <arg value="jni" />
+ <arg value="native_src" />
<arg value="rebuild" />
</exec>
</target>
@@ -122,7 +122,7 @@
<phase>process-resources</phase>
<configuration>
<target>
- <exec executable="make" newenvironment="false" dir="./jni">
+ <exec executable="make" newenvironment="false" dir="./native_src">
<arg value="LIBS=../os/linux/x86_64/libserial.so" />
</exec>
</target>
@@ -136,7 +136,7 @@
<phase>clean</phase>
<configuration>
<target>
- <exec executable="make" newenvironment="false" dir="./jni">
+ <exec executable="make" newenvironment="false" dir="./native_src">
<arg value="LIBS=../os/linux/x86_64/libserial.so" />
<arg value="clean" />
</exec>
@@ -169,7 +169,7 @@
<phase>process-resources</phase>
<configuration>
<target>
- <exec executable="make" newenvironment="false" dir="./jni">
+ <exec executable="make" newenvironment="false" dir="./native_src">
<arg value="LIBS=../os/linux/ppc64le/libserial.so" />
</exec>
</target>
@@ -183,7 +183,7 @@
<phase>clean</phase>
<configuration>
<target>
- <exec executable="make" newenvironment="false" dir="./jni">
+ <exec executable="make" newenvironment="false" dir="./native_src">
<arg value="LIBS=../os/linux/ppc64le/libserial.so" />
<arg value="clean" />
</exec>
@@ -198,5 +198,75 @@
</plugins>
</build>
</profile>
+ <profile>
+ <id>jniheaders</id>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>3.8.1</version>
+ <executions>
+ <execution>
+ <id>headers</id>
+ <phase>process-resources</phase>
+ <configuration>
+ <compilerArgs>
+ <arg>-h</arg>
+ <arg>${project.basedir}/native_src/include</arg>
+ </compilerArgs>
+ <source>11</source>
+ <target>11</target>
+ <encoding>UTF-8</encoding>
+ </configuration>
+ <goals>
+ <goal>compile</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ <profile>
+ <id>production</id>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-antrun-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>natives</id>
+ <phase>process-resources</phase>
+ <configuration>
+ <target>
+ <exec executable="make" newenvironment="false" failOnError="true" dir="./native_src">
+ <arg value="production" />
+ </exec>
+ </target>
+ </configuration>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
</profiles>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-packaging-plugin</artifactId>
+ <configuration>
+ <!-- When signing binaries, the result is not checked into repo, so the
+ jgit timestamp provider cannot be used. This has the side effect
+ that the version of this bundle needs to be incremented on each
+ CDT release. -->
+ <timestampProvider>default</timestampProvider>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
</project>
diff --git a/native/org.eclipse.cdt.native.serial/src/org/eclipse/cdt/serial/BaudRate.java b/native/org.eclipse.cdt.native.serial/src/org/eclipse/cdt/serial/BaudRate.java
index ada49ce4485..8a20d3329b9 100644
--- a/native/org.eclipse.cdt.native.serial/src/org/eclipse/cdt/serial/BaudRate.java
+++ b/native/org.eclipse.cdt.native.serial/src/org/eclipse/cdt/serial/BaudRate.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2015 QNX Software Systems and others.
+ * Copyright (c) 2015, 2020 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -13,60 +13,135 @@
*******************************************************************************/
package org.eclipse.cdt.serial;
+import java.util.Arrays;
+import java.util.Optional;
+
/**
+ * Standard BaudRates that are generally supported by serial driver.
* @since 1.0
+ * @deprecated Baud Rates are not a fixed set. Instead use {@link StandardBaudRates} for
+ * typical values and use an int to represent baud rates. This deprecation goes
+ * along with {@link SerialPort#setBaudRate(BaudRate)'s deprecation. Use
+ * SerialPort#setBaudRateValue(int) instead.
*/
+@Deprecated
public enum BaudRate {
- B110(110), B300(300), B600(600), B1200(1200), B2400(2400), B4800(4800), B9600(9600), B14400(14400), B19200(19200),
- B38400(38400), B57600(57600), B115200(115200);
+ B110, //
+ B300, //
+ B600, //
+ B1200, //
+ B2400, //
+ B4800, //
+ B9600,
+ /**
+ * 14,400 is not standard on Linux and requires custom baud rate support.
+ */
+ B14400, //
+ B19200, //
+ B38400, //
+ B57600, //
+ B115200,
+ /**
+ * @since 1.2
+ */
+ B230400,
+ /**
+ * @since 1.2
+ */
+ B460800,
+ /**
+ * @since 1.2
+ */
+ B500000,
+ /**
+ * @since 1.2
+ */
+ B576000,
+ /**
+ * @since 1.2
+ */
+ B921600,
+ /**
+ * @since 1.2
+ */
+ B1000000,
+ /**
+ * @since 1.2
+ */
+ B1152000,
+ /**
+ * @since 1.2
+ */
+ B1500000,
+ /**
+ * @since 1.2
+ */
+ B2000000,
+ /**
+ * @since 1.2
+ */
+ B2500000,
+ /**
+ * @since 1.2
+ */
+ B3000000,
+ /**
+ * @since 1.2
+ */
+ B3500000,
+ /**
+ * @since 1.2
+ */
+ B4000000;
private final int rate;
- private BaudRate(int rate) {
- this.rate = rate;
+ BaudRate() {
+ this.rate = Integer.parseInt(toString().substring(1));
}
public int getRate() {
return rate;
}
- private static final String[] strings = { "110", //$NON-NLS-1$
- "300", //$NON-NLS-1$
- "600", //$NON-NLS-1$
- "1200", //$NON-NLS-1$
- "2400", //$NON-NLS-1$
- "4800", //$NON-NLS-1$
- "9600", //$NON-NLS-1$
- "14400", //$NON-NLS-1$
- "19200", //$NON-NLS-1$
- "38400", //$NON-NLS-1$
- "57600", //$NON-NLS-1$
- "115200" //$NON-NLS-1$
- };
+ private String getSpeedString() {
+ return toString().substring(1);
+ }
public static String[] getStrings() {
- return strings;
+ return Arrays.asList(values()).stream().map(BaudRate::getSpeedString).toArray(String[]::new);
}
- private static final BaudRate[] rates = { B110, B300, B600, B1200, B2400, B4800, B9600, B14400, B19200, B38400,
- B57600, B115200 };
-
public static BaudRate fromStringIndex(int rate) {
- return rates[rate];
+ if (rate < values().length && rate >= 0) {
+ return values()[rate];
+ }
+ return getDefault();
}
public static int getStringIndex(BaudRate rate) {
- for (int i = 0; i < rates.length; ++i) {
- if (rate.equals(rates[i])) {
- return i;
- }
- }
- return getStringIndex(getDefault());
+ return rate.ordinal();
+ }
+
+ /**
+ * This method allows some amount of translation between new API that uses ints
+ * for baud rate and those that use BaudRate. It attempts to get the closest
+ * value.
+ *
+ * @since 1.2
+ */
+ public static BaudRate getClosest(int baudRate) {
+ Optional<BaudRate> reduce = Arrays.asList(BaudRate.values()).stream().reduce((result, current) -> {
+ if (Math.abs(baudRate - current.getRate()) < Math.abs(baudRate - result.getRate()))
+ return current;
+ else
+ return result;
+ });
+ return reduce.get();
}
public static BaudRate getDefault() {
return B115200;
}
-
}
diff --git a/native/org.eclipse.cdt.native.serial/src/org/eclipse/cdt/serial/SerialPort.java b/native/org.eclipse.cdt.native.serial/src/org/eclipse/cdt/serial/SerialPort.java
index 672895179cc..a305eb30cd1 100644
--- a/native/org.eclipse.cdt.native.serial/src/org/eclipse/cdt/serial/SerialPort.java
+++ b/native/org.eclipse.cdt.native.serial/src/org/eclipse/cdt/serial/SerialPort.java
@@ -19,15 +19,14 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.lang.ref.WeakReference;
-import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
-import java.util.List;
import java.util.Map;
import java.util.regex.Pattern;
import org.eclipse.cdt.serial.internal.Messages;
+import org.eclipse.cdt.utils.WindowsRegistry;
/**
* @since 5.8
@@ -38,7 +37,7 @@ public class SerialPort {
private boolean isOpen;
private boolean isPaused;
private Object pauseMutex = new Object();
- private BaudRate baudRate = BaudRate.B115200;
+ private int baudRate = StandardBaudRates.getDefault();
private ByteSize byteSize = ByteSize.B8;
private Parity parity = Parity.None;
private StopBits stopBits = StopBits.S1;
@@ -223,8 +222,6 @@ public class SerialPort {
private native void write1(long handle, byte[] b, int off, int len) throws IOException;
- private static native String getPortName(int i) throws IOException;
-
private static String[] listDevs(final Pattern pattern) {
File dev = new File("/dev"); //$NON-NLS-1$
File[] files = dev.listFiles(new FilenameFilter() {
@@ -257,24 +254,15 @@ public class SerialPort {
} else if (osName.equals("Linux")) { //$NON-NLS-1$
return listDevs(Pattern.compile("(ttyUSB|ttyACM|ttyS).*")); //$NON-NLS-1$
} else if (osName.startsWith("Windows")) { //$NON-NLS-1$
- List<String> ports = new ArrayList<>();
- int i = 0;
- String name = null;
- do {
- try {
- name = getPortName(i++);
- if (name != null) {
- ports.add(name);
- }
- } catch (IOException e) {
- // TODO log the exception
- e.printStackTrace();
- }
- } while (name != null);
- return ports.toArray(new String[ports.size()]);
- } else {
- return new String[0];
+ final WindowsRegistry registry = WindowsRegistry.getRegistry();
+ if (registry != null) {
+ return registry.getLocalMachineValues("HARDWARE\\DEVICEMAP\\SERIALCOMM").values().stream() //$NON-NLS-1$
+ .filter(String.class::isInstance) // Should only be strings here, but lets be safe
+ .map(String.class::cast) //
+ .toArray(String[]::new);
+ }
}
+ return new String[0];
}
/**
@@ -325,7 +313,7 @@ public class SerialPort {
}
public synchronized void open() throws IOException {
- handle = open0(portName, baudRate.getRate(), byteSize.getSize(), parity.ordinal(), stopBits.ordinal());
+ handle = open0(portName, baudRate, byteSize.getSize(), parity.ordinal(), stopBits.ordinal());
isOpen = true;
synchronized (openPorts) {
@@ -393,20 +381,51 @@ public class SerialPort {
return;
}
isPaused = false;
- handle = open0(portName, baudRate.getRate(), byteSize.getSize(), parity.ordinal(), stopBits.ordinal());
+ handle = open0(portName, baudRate, byteSize.getSize(), parity.ordinal(), stopBits.ordinal());
isOpen = true;
pauseMutex.notifyAll();
}
}
+ /**
+ *
+ * @param rate
+ * @throws IOException
+ * @deprecated Use {@link #setBaudRateValue(int)}
+ */
+ @Deprecated
public void setBaudRate(BaudRate rate) throws IOException {
if (isOpen) {
throw new IOException(PORT_OPEN);
}
+ this.baudRate = rate.getRate();
+ }
+
+ /**
+ * @since 1.2
+ */
+ public void setBaudRateValue(int rate) throws IOException {
+ if (isOpen) {
+ throw new IOException(PORT_OPEN);
+ }
this.baudRate = rate;
}
+ /**
+ * @return the baud rate or closest match. Will only
+ * return same value as {@link #setBaudRate(BaudRate)},
+ * may not match value passed {@link #setBaudRateValue(int)}
+ * @deprecated Use {@link #getBaudRateValue()}
+ */
+ @Deprecated
public BaudRate getBaudRate() {
+ return BaudRate.getClosest(baudRate);
+ }
+
+ /**
+ * @since 1.2
+ */
+ public int getBaudRateValue() {
return baudRate;
}
diff --git a/native/org.eclipse.cdt.native.serial/src/org/eclipse/cdt/serial/StandardBaudRates.java b/native/org.eclipse.cdt.native.serial/src/org/eclipse/cdt/serial/StandardBaudRates.java
new file mode 100644
index 00000000000..eb9198377c6
--- /dev/null
+++ b/native/org.eclipse.cdt.native.serial/src/org/eclipse/cdt/serial/StandardBaudRates.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Kichwa Coders Canada Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+= *******************************************************************************/
+package org.eclipse.cdt.serial;
+
+/**
+ * Define the set of baud rates that are standard are generally supported.
+ *
+ * @since 1.2
+ */
+public final class StandardBaudRates {
+ /**
+ * Return an array of the standard values for baud rates.
+ *
+ * Note: Especially on Linux these values are special as they can be set
+ * without requiring operations on the serial port that are not universally
+ * supported.
+ *
+ * The contents of this array may be changed from time to time and therefore
+ * the order of the elements and length of this array should not be used
+ * for anything. In particular, if storing a baud rate preference, store the
+ * integer value of that preference, not the index in this table.
+ *
+ * @return array of standard values
+ */
+ public static int[] asArray() {
+ // This list comes from what linux supports without custom rates.
+ return new int[] { 110, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 500000,
+ 576000, 921600, 1000000, 1152000, 1500000, 2000000, 2500000, 3000000, 3500000, 4000000 };
+ }
+
+ /**
+ * Return an array of the standard values for baud rates, as strings for
+ * display in the UI.
+ * @see #asArray()
+ */
+ public static String[] asStringArray() {
+ int[] rates = asArray();
+ String[] rateStrings = new String[rates.length];
+ for (int i = 0; i < rateStrings.length; i++) {
+ rateStrings[i] = Integer.toString(rates[i]);
+ }
+ return rateStrings;
+ }
+
+ /**
+ * Return the default speed used by the {@link SerialPort}
+ */
+ public static int getDefault() {
+ return 115200;
+ }
+}
diff --git a/native/pom.xml b/native/pom.xml
index 8694c8619f8..6ba73aae448 100644
--- a/native/pom.xml
+++ b/native/pom.xml
@@ -1,4 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2017, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
@@ -7,7 +17,7 @@
<parent>
<groupId>org.eclipse.cdt</groupId>
<artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
+ <version>10.7.0-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.cdt.native-parent</artifactId>
diff --git a/pom.xml b/pom.xml
index 9b698f9569a..5f9b8683187 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,45 +1,53 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2011, 2020 Wind River Systems, Inc. and others.
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<prerequisites>
- <maven>${requiredven-version}</maven>
+ <maven>${required-maven-version}</maven>
</prerequisites>
<groupId>org.eclipse.cdt</groupId>
<artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
+ <version>10.7.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>CDT Parent</name>
<properties>
<!-- Maven 3.6.1 and 3.6.2 do not work with Tycho, see Bug 551674
- CDT enforces a minimum of 3.6.0 because that is what CDT's CI
+ CDT enforces a minimum of 3.6.3 because that is what CDT's CI
runs with. It may work with older versions, but this is not
tested or supported. -->
- <required-maven-version>[3.6.0]</required-maven-version>
- <tycho-version>1.5.1</tycho-version>
- <tycho-extras-version>1.5.1</tycho-extras-version>
- <cbi-plugins.version>1.1.7</cbi-plugins.version>
+ <required-maven-version>3.6.3</required-maven-version>
+ <tycho-version>2.7.1</tycho-version>
+ <cbi-plugins.version>1.3.2</cbi-plugins.version>
<sonar.core.codeCoveragePlugin>jacoco</sonar.core.codeCoveragePlugin>
<cdt-site>http://ci.eclipse.org/cdt/job/cdt-master/lastSuccessfulBuild/artifact/releng/org.eclipse.cdt.repo/target/repository</cdt-site>
- <simrel-site>https://download.eclipse.org/releases/2019-12</simrel-site>
+ <simrel-site>https://download.eclipse.org/staging/2022-06/</simrel-site>
<repo-path>tools/cdt/builds/master/nightly</repo-path>
<sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis>
<sonar.jacoco.reportPath>${project.basedir}/../../target/jacoco.exec</sonar.jacoco.reportPath>
- <sonar.java.source>1.8</sonar.java.source>
+ <sonar.java.source>11</sonar.java.source>
<target-platform>cdt</target-platform>
- <!-- When changing this value, consider also bumping the version numbers of all the docs plug-ins so that compare&replace does not
- replace the the newly built docs because the only change is in the filtered out index/* resources. -->
- <help-docs-eclipserun-repo>http://download.eclipse.org/eclipse/updates/4.13/</help-docs-eclipserun-repo>
+ <!-- When changing this value, consider also bumping the version numbers of all the docs plug-ins (those with build-doc profile in pom.xml)
+ so that compare&replace does not replace the the newly built docs because the only change is in the filtered out index/* resources. -->
+ <help-docs-eclipserun-repo>https://download.eclipse.org/eclipse/updates/4.24/</help-docs-eclipserun-repo>
-
- <tycho.scmUrl>scm:git:git://git.eclipse.org/gitroot/cdt/org.eclipse.cdt.git</tycho.scmUrl>
+ <tycho.scmUrl>scm:git:https://git.eclipse.org/r/cdt/org.eclipse.cdt</tycho.scmUrl>
<base.test.vmargs>-Xms256m -Xmx512m -ea</base.test.vmargs>
- <comparator.repo>https://download.eclipse.org/tools/cdt/releases/9.9/cdt-9.9.0/</comparator.repo>
+ <comparator.repo>https://download.eclipse.org/tools/cdt/releases/10.6/cdt-10.6.0/</comparator.repo>
<!-- these parameters are to control baseline replace and compare. On a local build you want
to avoid baseline replace and compare, especially if you have different versions of Java than
the baseline was built with. This is the default.
@@ -65,7 +73,10 @@
users expect. -->
<skipTests>${cdt-other.skip.tests}</skipTests>
<dsf.gdb.tests.gdbPath>/shared/common/gdb/gdb-all/bin</dsf.gdb.tests.gdbPath>
- <cdt.tests.dsf.gdb.versions>gdb.8.3</cdt.tests.dsf.gdb.versions>
+ <cdt.tests.dsf.gdb.versions>gdb.10,gdbserver.10</cdt.tests.dsf.gdb.versions>
+ <maven.build.timestamp.format>yyyyMMdd-HHmm</maven.build.timestamp.format>
+ <buildTimestamp>${maven.build.timestamp}</buildTimestamp>
+ <buildId>${buildTimestamp}</buildId>
</properties>
<licenses>
@@ -93,6 +104,7 @@
<module>build/org.eclipse.cdt.managedbuilder.core</module>
<module>build/org.eclipse.cdt.managedbuilder.ui</module>
<module>build/org.eclipse.cdt.managedbuilder.gnu.ui</module>
+ <module>build/org.eclipse.cdt.managedbuilder.headlessbuilderapp</module>
<module>build/org.eclipse.cdt.gnu.build-feature</module>
<module>build/org.eclipse.cdt.autotools.core</module>
@@ -100,10 +112,6 @@
<module>build/org.eclipse.cdt.autotools.ui</module>
<module>build/org.eclipse.cdt.autotools-feature</module>
- <module>build/org.eclipse.cdt.cmake.core</module>
- <module>build/org.eclipse.cdt.cmake.ui</module>
- <module>build/org.eclipse.cdt.cmake-feature</module>
-
<module>build/org.eclipse.cdt.meson.core</module>
<module>build/org.eclipse.cdt.meson.docs</module>
<module>build/org.eclipse.cdt.meson.ui</module>
@@ -124,6 +132,7 @@
<module>core/org.eclipse.cdt.core.native</module>
<module>core/org.eclipse.cdt.core.linux</module>
<module>core/org.eclipse.cdt.core.linux.x86_64</module>
+ <module>core/org.eclipse.cdt.core.linux.aarch64</module>
<module>core/org.eclipse.cdt.core.linux.ppc64le</module>
<module>core/org.eclipse.cdt.core.win32</module>
<module>core/org.eclipse.cdt.core.win32.x86_64</module>
@@ -181,6 +190,8 @@
<module>launch/org.eclipse.cdt.launch</module>
<module>launch/org.eclipse.cdt.docker.launcher</module>
<module>launch/org.eclipse.cdt.docker.launcher-feature</module>
+ <module>launch/org.eclipse.cdt.flatpak.launcher</module>
+ <module>launch/org.eclipse.cdt.flatpak.launcher-feature</module>
<module>llvm/org.eclipse.cdt.managedbuilder.llvm.ui</module>
<module>llvm/org.eclipse.cdt.managedbuilder.llvm-feature</module>
@@ -188,13 +199,13 @@
<module>llvm/org.eclipse.cdt.llvm.dsf.lldb.ui</module>
<module>llvm/org.eclipse.cdt.llvm.dsf.lldb-feature</module>
- <module>lrparser/org.eclipse.cdt.core.lrparser</module>
- <module>lrparser/org.eclipse.cdt.core.lrparser.feature</module>
- <module>lrparser/org.eclipse.cdt.core.lrparser.sdk.feature</module>
-
<module>lsp/org.eclipse.cdt.lsp.core</module>
+ <module>lsp/org.eclipse.cdt.lsp.ui</module>
+ <module>lsp/org.eclipse.cdt.lsp.clangd</module>
+ <module>lsp/org.eclipse.cdt.lsp.cquery</module>
<module>lsp/org.eclipse.cdt.lsp-feature</module>
+ <module>memory/org.eclipse.cdt.debug.core.memory</module>
<module>memory/org.eclipse.cdt.debug.ui.memory.memorybrowser</module>
<module>memory/org.eclipse.cdt.debug.ui.memory.floatingpoint</module>
<module>memory/org.eclipse.cdt.debug.ui.memory.search</module>
@@ -217,16 +228,8 @@
<module>testsrunner/org.eclipse.cdt.testsrunner.tap</module>
<module>testsrunner/org.eclipse.cdt.testsrunner.feature</module>
- <module>toolchains/arduino/org.eclipse.cdt.arduino.core</module>
- <module>toolchains/arduino/org.eclipse.cdt.arduino.ui</module>
- <module>toolchains/arduino/org.eclipse.cdt.arduino-feature</module>
-
- <module>upc/org.eclipse.cdt.core.parser.upc</module>
- <module>upc/org.eclipse.cdt.core.parser.upc.feature</module>
- <module>upc/org.eclipse.cdt.core.parser.upc.sdk.feature</module>
-
- <module>upc/org.eclipse.cdt.managedbuilder.bupc.ui</module>
- <module>upc/org.eclipse.cdt.bupc-feature</module>
+ <module>unittest/org.eclipse.cdt.unittest</module>
+ <module>unittest/org.eclipse.cdt.unittest.feature</module>
<module>util/org.eclipse.cdt.util</module>
@@ -239,17 +242,60 @@
<module>windows/org.eclipse.cdt.msw.build.tests</module>
<module>windows/org.eclipse.cdt.msw-feature</module>
- <module>xlc/org.eclipse.cdt.core.lrparser.xlc</module>
- <module>xlc/org.eclipse.cdt.errorparsers.xlc</module>
- <module>xlc/org.eclipse.cdt.make.xlc.core</module>
- <module>xlc/org.eclipse.cdt.managedbuilder.xlc.core</module>
- <module>xlc/org.eclipse.cdt.managedbuilder.xlc.ui</module>
- <module>xlc/org.eclipse.cdt.managedbuilder.xlupc.ui</module>
- <module>xlc/org.eclipse.cdt.xlc.feature</module>
- <module>xlc/org.eclipse.cdt.xlc.sdk-feature</module>
+ <module>launchbar/org.eclipse.launchbar</module>
+ <module>launchbar/org.eclipse.launchbar.core</module>
+ <module>launchbar/org.eclipse.launchbar.core.tests</module>
+ <module>launchbar/org.eclipse.launchbar.remote</module>
+ <module>launchbar/org.eclipse.launchbar.remote.core</module>
+ <module>launchbar/org.eclipse.launchbar.remote.ui</module>
+ <module>launchbar/org.eclipse.launchbar.ui</module>
+ <module>launchbar/org.eclipse.launchbar.ui.controls</module>
+ <module>launchbar/org.eclipse.launchbar.ui.tests</module>
+
+ <module>tools.templates/org.eclipse.tools.templates.core</module>
+ <module>tools.templates/org.eclipse.tools.templates.freemarker</module>
+ <module>tools.templates/org.eclipse.tools.templates.ui</module>
+
+ <!-- Remote bundles -->
+ <module>remote/org.eclipse.remote.core</module>
+ <module>remote/org.eclipse.remote.jsch.core</module>
+ <module>remote/org.eclipse.remote.jsch.ui</module>
+ <module>remote/org.eclipse.remote.ui</module>
+ <!-- Proxy bundles -->
+ <module>remote/org.eclipse.remote.proxy.core</module>
+ <module>remote/org.eclipse.remote.proxy.ui</module>
+ <module>remote/org.eclipse.remote.proxy.protocol.core</module>
+ <module>remote/org.eclipse.remote.proxy.server.core</module>
+ <module>remote/org.eclipse.remote.proxy.server.product</module>
+ <module>remote/org.eclipse.remote.proxy.server.linux.x86_64</module>
+ <module>remote/org.eclipse.remote.proxy.server.linux.ppc64le</module>
+ <module>remote/org.eclipse.remote.proxy.server.macosx.x86_64</module>
+ <!-- Main feature -->
+ <module>remote/org.eclipse.remote-feature</module>
+ <!-- Proxy feature -->
+ <module>remote/org.eclipse.remote.proxy-feature</module>
+ <!-- Console Terminal feature -->
+ <module>remote/org.eclipse.remote.console</module>
+ <module>remote/org.eclipse.remote.console-feature</module>
+ <!-- Serial Port feature -->
+ <module>remote/org.eclipse.remote.serial.core</module>
+ <module>remote/org.eclipse.remote.serial.ui</module>
+ <module>remote/org.eclipse.remote.serial-feature</module>
+ <!-- Telnet feature -->
+ <module>remote/org.eclipse.remote.telnet.core</module>
+ <module>remote/org.eclipse.remote.telnet.ui</module>
+ <module>remote/org.eclipse.remote.telnet-feature</module>
+ <!-- Documentation -->
+ <module>remote/org.eclipse.remote.doc.isv</module>
+
+ <module>terminal</module>
+
+ <module>jsoncdb</module>
+ <module>cmake</module>
<module>releng/org.eclipse.cdt.native-feature</module>
<module>releng/org.eclipse.cdt</module>
+ <module>releng/org.eclipse.cdt.platform.branding</module>
<module>releng/org.eclipse.cdt.platform-feature</module>
<module>releng/org.eclipse.cdt-feature</module>
<module>releng/org.eclipse.cdt.sdk</module>
@@ -263,7 +309,6 @@
<module>build/org.eclipse.cdt.make.ui.tests</module>
<module>build/org.eclipse.cdt.autotools.tests</module>
<module>build/org.eclipse.cdt.autotools.ui.tests</module>
- <module>build/org.eclipse.cdt.cmake.ui.tests</module>
<module>build/org.eclipse.cdt.meson.ui.tests</module>
<module>codan/org.eclipse.cdt.codan.core.tests</module>
<module>codan/org.eclipse.cdt.codan.checkers.ui.tests</module>
@@ -274,9 +319,10 @@
<module>dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui.tests</module>
<module>jtag/org.eclipse.cdt.debug.gdbjtag.core.tests</module>
<module>lsp/org.eclipse.cdt.lsp.core.tests</module>
+ <module>lsp/org.eclipse.cdt.lsp.cquery.tests</module>
+ <module>memory/org.eclipse.cdt.debug.core.memory.tests</module>
<module>qt/org.eclipse.cdt.qt.ui.tests</module>
<module>testsrunner/org.eclipse.cdt.testsrunner.tests</module>
- <module>xlc/org.eclipse.cdt.errorparsers.xlc.tests</module>
<module>releng/org.eclipse.cdt.testing</module>
<module>releng/org.eclipse.cdt.testing-feature</module>
@@ -287,10 +333,7 @@
-->
<!--
- <module>lrparser/org.eclipse.cdt.core.lrparser.tests</module>
<module>qt/org.eclipse.cdt.qt.core.tests</module>
- <module>upc/org.eclipse.cdt.core.parser.upc.tests</module>
- <module>org.eclipse.cdt.core.lrparser.xlc.tests</module>
-->
</modules>
@@ -414,7 +457,7 @@
<plugin>
<groupId>org.eclipse.tycho.extras</groupId>
<artifactId>tycho-source-feature-plugin</artifactId>
- <version>${tycho-extras-version}</version>
+ <version>${tycho-version}</version>
<executions>
<execution>
<id>source-feature</id>
@@ -443,6 +486,8 @@
<useUIThread>true</useUIThread>
<argLine>${tycho.testArgLine} ${base.ui.test.vmargs}</argLine>
<appArgLine>-pluginCustomization ${basedir}/../../disable_intro_in_tests.ini</appArgLine>
+ <!-- using tags can cause all tests to be excluded, which is ok and should not fail the build -->
+ <failIfNoTests>false</failIfNoTests>
</configuration>
</plugin>
</plugins>
@@ -466,12 +511,33 @@
<useUIThread>false</useUIThread>
<argLine>${tycho.testArgLine} ${base.ui.test.vmargs}</argLine>
<appArgLine>-pluginCustomization ${basedir}/../../disable_intro_in_tests.ini</appArgLine>
+ <!-- using tags can cause all tests to be excluded, which is ok and should not fail the build -->
+ <failIfNoTests>false</failIfNoTests>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
+ <id>about-mappings</id>
+ <activation>
+ <file>
+ <exists>about.mappings</exists>
+ </file>
+ </activation>
+ <build>
+ <resources>
+ <resource>
+ <directory>.</directory>
+ <filtering>true</filtering>
+ <includes>
+ <include>about.mappings</include>
+ </includes>
+ </resource>
+ </resources>
+ </build>
+ </profile>
+ <profile>
<id>skip-all-tests</id>
<properties>
<cdt-ui.skip.tests>true</cdt-ui.skip.tests>
@@ -533,20 +599,6 @@
</configuration>
</plugin>
<plugin>
- <groupId>org.eclipse.tycho.extras</groupId>
- <artifactId>tycho-pack200a-plugin</artifactId>
- <version>${tycho-extras-version}</version>
- <executions>
- <execution>
- <id>pack200-normalize</id>
- <goals>
- <goal>normalize</goal>
- </goals>
- <phase>verify</phase>
- </execution>
- </executions>
- </plugin>
- <plugin>
<groupId>org.eclipse.cbi.maven.plugins</groupId>
<artifactId>eclipse-jarsigner-plugin</artifactId>
<version>${cbi-plugins.version}</version>
@@ -561,20 +613,6 @@
</executions>
</plugin>
<plugin>
- <groupId>org.eclipse.tycho.extras</groupId>
- <artifactId>tycho-pack200b-plugin</artifactId>
- <version>${tycho-extras-version}</version>
- <executions>
- <execution>
- <id>pack200-pack</id>
- <goals>
- <goal>pack</goal>
- </goals>
- <phase>verify</phase>
- </execution>
- </executions>
- </plugin>
- <plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-p2-plugin</artifactId>
<version>${tycho-version}</version>
@@ -601,7 +639,7 @@
<inherited>true</inherited>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
- <version>3.0.0-M2</version>
+ <version>3.0.0</version>
<executions>
<execution>
<id>enforce-maven-version</id>
@@ -614,7 +652,7 @@
<version>${required-maven-version}</version>
</requireMavenVersion>
<requireJavaVersion>
- <version>1.8</version>
+ <version>11</version>
</requireJavaVersion>
</rules>
<fail>true</fail>
@@ -650,6 +688,11 @@
<environment>
<os>linux</os>
<ws>gtk</ws>
+ <arch>aarch64</arch>
+ </environment>
+ <environment>
+ <os>linux</os>
+ <ws>gtk</ws>
<arch>ppc64le</arch>
</environment>
<environment>
@@ -662,7 +705,21 @@
<ws>cocoa</ws>
<arch>x86_64</arch>
</environment>
+ <environment>
+ <os>macosx</os>
+ <ws>cocoa</ws>
+ <arch>aarch64</arch>
+ </environment>
</environments>
+ <dependency-resolution>
+ <extraRequirements>
+ <requirement>
+ <type>eclipse-plugin</type>
+ <id>org.eclipse.ui.ide</id>
+ <versionRange>0.0.0</versionRange>
+ </requirement>
+ </extraRequirements>
+ </dependency-resolution>
</configuration>
</plugin>
<plugin>
@@ -683,7 +740,7 @@
<plugin>
<groupId>org.eclipse.tycho.extras</groupId>
<artifactId>tycho-source-feature-plugin</artifactId>
- <version>${tycho-extras-version}</version>
+ <version>${tycho-version}</version>
<configuration>
<includeBinaryFeature>false</includeBinaryFeature>
</configuration>
@@ -700,6 +757,7 @@
<plugin id="org.eclipse.cdt.meson.docs"/>
<plugin id="org.eclipse.cdt.core.linux.ppc64le"/>
<plugin id="org.eclipse.cdt.core.linux.x86_64"/>
+ <plugin id="org.eclipse.cdt.core.linux.aarch64"/>
<plugin id="org.eclipse.cdt.core.win32.x86_64"/>
<plugin id="org.eclipse.cdt.debug.application.doc"/>
<plugin id="org.eclipse.cdt.doc.user"/>
@@ -708,6 +766,10 @@
<plugin id="net.sourceforge.lpg.lpgjavaruntime"/>
<plugin id="org.eclipse.ant.optional.junit"/>
<plugin id="org.eclipse.cdt.testing"/>
+ <plugin id="org.eclipse.remote.proxy.server.linux.x86_64"/>
+ <plugin id="org.eclipse.remote.proxy.server.linux.ppc64le"/>
+ <plugin id="org.eclipse.remote.proxy.server.macosx.x86_64"/>
+ <plugin id="org.eclipse.remote.doc.isv"/>
</excludes>
</configuration>
</execution>
@@ -729,7 +791,7 @@
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
- <version>0.8.5</version>
+ <version>0.8.7</version>
<executions>
<execution>
<id>pre-test</id>
@@ -797,26 +859,36 @@
<artifactId>tycho-packaging-plugin</artifactId>
<version>${tycho-version}</version>
<configuration>
+ <deriveHeaderFromProject>false</deriveHeaderFromProject>
<format>${qualifier.format}</format>
<timestampProvider>jgit</timestampProvider>
<jgit.ignore>
pom.xml
+ .polyglot.*
</jgit.ignore>
<jgit.dirtyWorkingTree>${jgit.dirtyWorkingTree-cdtDefault}</jgit.dirtyWorkingTree>
<sourceReferences>
<generate>true</generate>
</sourceReferences>
+ <additionalFileSets>
+ <fileSet>
+ <directory>${project.build.outputDirectory}</directory>
+ <includes>
+ <include>about.mappings</include>
+ </includes>
+ </fileSet>
+ </additionalFileSets>
</configuration>
<dependencies>
<dependency>
<groupId>org.eclipse.tycho.extras</groupId>
<artifactId>tycho-buildtimestamp-jgit</artifactId>
- <version>${tycho-extras-version}</version>
+ <version>${tycho-version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.tycho.extras</groupId>
<artifactId>tycho-sourceref-jgit</artifactId>
- <version>${tycho-extras-version}</version>
+ <version>${tycho-version}</version>
</dependency>
</dependencies>
</plugin>
@@ -828,10 +900,6 @@
<!-- Default configuration, UI tests may have to override these -->
<useUIHarness>false</useUIHarness>
<useUIThread>false</useUIThread>
- <includes>
- <include>**/AutomatedIntegrationSuite.*</include>
- </includes>
- <testFailureIgnore>true</testFailureIgnore>
<dependencies>
<dependency>
<type>p2-installable-unit</type>
@@ -841,6 +909,8 @@
<product>org.eclipse.platform.ide</product>
<argLine>${tycho.testArgLine} ${base.test.vmargs}</argLine>
<appArgLine>-pluginCustomization ${basedir}/../../disable_intro_in_tests.ini</appArgLine>
+ <!-- using tags can cause all tests to be excluded, which is ok and should not fail the build -->
+ <failIfNoTests>false</failIfNoTests>
</configuration>
</plugin>
<plugin>
@@ -869,6 +939,7 @@
<ignoredPatterns>
<pattern>META-INF/ECLIPSE_.RSA</pattern>
<pattern>META-INF/ECLIPSE_.SF</pattern>
+ <pattern>about.mappings</pattern>
<pattern>index/*</pattern>
</ignoredPatterns>
</configuration>
@@ -876,7 +947,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
- <version>3.1.0</version>
+ <version>3.2.0</version>
<configuration>
<encoding>ISO-8859-1</encoding>
</configuration>
@@ -884,7 +955,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.8</version>
+ <version>3.0.0</version>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
@@ -906,11 +977,11 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
- <version>3.12.0</version>
+ <version>3.15.0</version>
<configuration>
<sourceEncoding>utf-8</sourceEncoding>
<minimumTokens>100</minimumTokens>
- <targetJdk>1.8</targetJdk>
+ <targetJdk>11</targetJdk>
<format>xml</format>
<failOnViolation>false</failOnViolation>
</configuration>
@@ -925,7 +996,7 @@
<plugin>
<groupId>org.eclipse.tycho.extras</groupId>
<artifactId>tycho-eclipserun-plugin</artifactId>
- <version>${tycho-extras-version}</version>
+ <version>${tycho-version}</version>
<configuration>
<appArgLine>-application org.eclipse.ant.core.antRunner -buildfile customBuildCallbacks.xml build.index</appArgLine>
<dependencies>
@@ -958,7 +1029,7 @@
</goals>
<phase>compile</phase>
<configuration>
- <executionEnvironment>JavaSE-1.8</executionEnvironment>
+ <executionEnvironment>JavaSE-11</executionEnvironment>
</configuration>
</execution>
</executions>
diff --git a/qt/org.eclipse.cdt.qt-feature/.settings/org.eclipse.core.resources.prefs b/qt/org.eclipse.cdt.qt-feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/qt/org.eclipse.cdt.qt-feature/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/qt/org.eclipse.cdt.qt-feature/feature.xml b/qt/org.eclipse.cdt.qt-feature/feature.xml
index 50dd2c10007..6a3a3b3984d 100644
--- a/qt/org.eclipse.cdt.qt-feature/feature.xml
+++ b/qt/org.eclipse.cdt.qt-feature/feature.xml
@@ -1,9 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2013, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<feature
id="org.eclipse.cdt.qt"
label="%featureName"
- version="9.10.0.qualifier"
+ version="10.7.0.qualifier"
provider-name="%providerName"
+ plugin="org.eclipse.cdt.qt.ui"
license-feature="org.eclipse.license"
license-feature-version="0.0.0">
@@ -20,7 +31,7 @@
</license>
<requires>
- <import feature="org.eclipse.launchbar" version="2.0.0" match="compatible"/>
+ <import feature="org.eclipse.launchbar" version="10.7.0" match="compatible"/>
</requires>
<plugin
@@ -37,12 +48,4 @@
version="0.0.0"
unpack="false"/>
- <plugin
- id="org.eclipse.tools.templates.freemarker.java11"
- download-size="0"
- install-size="0"
- version="0.0.0"
- fragment="true"
- unpack="false"/>
-
</feature>
diff --git a/qt/org.eclipse.cdt.qt.core.tests/.classpath b/qt/org.eclipse.cdt.qt.core.tests/.classpath
index eca7bdba8f0..a42a828e04a 100644
--- a/qt/org.eclipse.cdt.qt.core.tests/.classpath
+++ b/qt/org.eclipse.cdt.qt.core.tests/.classpath
@@ -1,7 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="src" path="src"/>
+ <classpathentry kind="src" path="src">
+ <attributes>
+ <attribute name="test" value="true"/>
+ </attributes>
+ </classpathentry>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/qt/org.eclipse.cdt.qt.core.tests/.settings/org.eclipse.core.resources.prefs b/qt/org.eclipse.cdt.qt.core.tests/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/qt/org.eclipse.cdt.qt.core.tests/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/qt/org.eclipse.cdt.qt.core.tests/.settings/org.eclipse.jdt.core.prefs b/qt/org.eclipse.cdt.qt.core.tests/.settings/org.eclipse.jdt.core.prefs
index ad05599159f..5b1c443114d 100644
--- a/qt/org.eclipse.cdt.qt.core.tests/.settings/org.eclipse.jdt.core.prefs
+++ b/qt/org.eclipse.cdt.qt.core.tests/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/qt/org.eclipse.cdt.qt.core.tests/.settings/org.eclipse.jdt.ui.prefs b/qt/org.eclipse.cdt.qt.core.tests/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/qt/org.eclipse.cdt.qt.core.tests/.settings/org.eclipse.jdt.ui.prefs
+++ b/qt/org.eclipse.cdt.qt.core.tests/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/qt/org.eclipse.cdt.qt.core.tests/META-INF/MANIFEST.MF b/qt/org.eclipse.cdt.qt.core.tests/META-INF/MANIFEST.MF
index ba9242b7092..01c4a49a33b 100644
--- a/qt/org.eclipse.cdt.qt.core.tests/META-INF/MANIFEST.MF
+++ b/qt/org.eclipse.cdt.qt.core.tests/META-INF/MANIFEST.MF
@@ -1,10 +1,10 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
-Bundle-Name: QML Tests
+Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.qt.core.tests
-Bundle-Vendor: Eclipse CDT
+Bundle-Vendor: %providerName
Bundle-Version: 2.0.0.qualifier
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Require-Bundle: org.eclipse.osgi;bundle-version="3.10.100",
org.junit,
org.eclipse.cdt.qt.core;bundle-version="2.0.0"
@@ -12,3 +12,4 @@ Bundle-ClassPath: .
Bundle-Activator: org.eclipse.cdt.qt.core.tests.Activator
Bundle-ActivationPolicy: lazy
Automatic-Module-Name: org.eclipse.cdt.qt.core.tests
+Bundle-Localization: plugin
diff --git a/qt/org.eclipse.cdt.qt.core.tests/about.html b/qt/org.eclipse.cdt.qt.core.tests/about.html
index 164f781a8fd..b3134865230 100644
--- a/qt/org.eclipse.cdt.qt.core.tests/about.html
+++ b/qt/org.eclipse.cdt.qt.core.tests/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/qt/org.eclipse.cdt.qt.core.tests/build.properties b/qt/org.eclipse.cdt.qt.core.tests/build.properties
index 9cbab3c135e..2b112c46131 100644
--- a/qt/org.eclipse.cdt.qt.core.tests/build.properties
+++ b/qt/org.eclipse.cdt.qt.core.tests/build.properties
@@ -2,5 +2,6 @@ source.. = src/
output.. = bin/
bin.includes = META-INF/,\
.,\
+ plugin.properties,\
about.html
src.includes = about.html
diff --git a/qt/org.eclipse.cdt.qt.core.tests/plugin.properties b/qt/org.eclipse.cdt.qt.core.tests/plugin.properties
new file mode 100644
index 00000000000..c425c9670f4
--- /dev/null
+++ b/qt/org.eclipse.cdt.qt.core.tests/plugin.properties
@@ -0,0 +1,14 @@
+##################################################################################
+# Copyright (c) 2020 Torbjörn Svensson and others. All rights reserved.
+# This program and the accompanying materials are made available under the terms
+# of the Eclipse Public License 2.0 which accompanies this distribution, and is
+# available at https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Torbjörn Svensson - initial API and implementation
+##################################################################################
+
+pluginName = QML Tests
+providerName = Eclipse CDT
diff --git a/qt/org.eclipse.cdt.qt.core/.classpath b/qt/org.eclipse.cdt.qt.core/.classpath
index eca7bdba8f0..e801ebfb468 100644
--- a/qt/org.eclipse.cdt.qt.core/.classpath
+++ b/qt/org.eclipse.cdt.qt.core/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/qt/org.eclipse.cdt.qt.core/.project b/qt/org.eclipse.cdt.qt.core/.project
index a679b3bf3a9..8aaa1e708b1 100644
--- a/qt/org.eclipse.cdt.qt.core/.project
+++ b/qt/org.eclipse.cdt.qt.core/.project
@@ -20,9 +20,15 @@
<arguments>
</arguments>
</buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.pde.PluginNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
</natures>
</projectDescription>
diff --git a/qt/org.eclipse.cdt.qt.core/.settings/org.eclipse.core.resources.prefs b/qt/org.eclipse.cdt.qt.core/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/qt/org.eclipse.cdt.qt.core/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/qt/org.eclipse.cdt.qt.core/.settings/org.eclipse.jdt.core.prefs b/qt/org.eclipse.cdt.qt.core/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/qt/org.eclipse.cdt.qt.core/.settings/org.eclipse.jdt.core.prefs
+++ b/qt/org.eclipse.cdt.qt.core/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/qt/org.eclipse.cdt.qt.core/.settings/org.eclipse.jdt.ui.prefs b/qt/org.eclipse.cdt.qt.core/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/qt/org.eclipse.cdt.qt.core/.settings/org.eclipse.jdt.ui.prefs
+++ b/qt/org.eclipse.cdt.qt.core/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/qt/org.eclipse.cdt.qt.core/META-INF/MANIFEST.MF b/qt/org.eclipse.cdt.qt.core/META-INF/MANIFEST.MF
index e47acb3decf..1cf6b14cf39 100644
--- a/qt/org.eclipse.cdt.qt.core/META-INF/MANIFEST.MF
+++ b/qt/org.eclipse.cdt.qt.core/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.qt.core;singleton:=true
-Bundle-Version: 2.2.200.qualifier
+Bundle-Version: 2.3.300.qualifier
Bundle-Activator: org.eclipse.cdt.internal.qt.core.Activator
Bundle-Vendor: %providerName
Require-Bundle: org.eclipse.core.runtime,
@@ -21,7 +21,7 @@ Require-Bundle: org.eclipse.core.runtime,
org.eclipse.cdt.dsf;bundle-version="2.6.0",
org.eclipse.tools.templates.freemarker;bundle-version="1.0.0",
org.eclipse.cdt.build.gcc.core;bundle-version="1.0.0"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-ActivationPolicy: lazy
Bundle-Localization: plugin
Export-Package: org.eclipse.cdt.internal.qt.core;x-friends:="org.eclipse.cdt.qt.ui,org.eclipse.cdt.qt.ui.tests",
@@ -35,6 +35,6 @@ Export-Package: org.eclipse.cdt.internal.qt.core;x-friends:="org.eclipse.cdt.qt.
org.eclipse.cdt.qt.core.location,
org.eclipse.cdt.qt.core.qmldir,
org.eclipse.cdt.qt.core.qmljs
-Import-Package: javax.xml.bind;version="2.2.0"
+Import-Package: javax.xml.bind;version="[2.3.3,3.0.0)"
Automatic-Module-Name: org.eclipse.cdt.qt.core
diff --git a/qt/org.eclipse.cdt.qt.core/about.html b/qt/org.eclipse.cdt.qt.core/about.html
index 164f781a8fd..b3134865230 100644
--- a/qt/org.eclipse.cdt.qt.core/about.html
+++ b/qt/org.eclipse.cdt.qt.core/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/qt/org.eclipse.cdt.qt.core/plugin.properties b/qt/org.eclipse.cdt.qt.core/plugin.properties
index 5a448c955a7..a125c876cdb 100644
--- a/qt/org.eclipse.cdt.qt.core/plugin.properties
+++ b/qt/org.eclipse.cdt.qt.core/plugin.properties
@@ -15,3 +15,4 @@ qmlFile.name = QML File
qrcFile.name = Qt Resource Collection File
qmakeEnvProvider.name = QMake Environment Provider
QtInstallHeaders.pathProvider.name = Qt Installed Headers
+qtNature.name=Qt Nature \ No newline at end of file
diff --git a/qt/org.eclipse.cdt.qt.core/plugin.xml b/qt/org.eclipse.cdt.qt.core/plugin.xml
index 8491d574499..c31e3954f56 100644
--- a/qt/org.eclipse.cdt.qt.core/plugin.xml
+++ b/qt/org.eclipse.cdt.qt.core/plugin.xml
@@ -30,6 +30,7 @@
</extension>
<extension
id="qtNature"
+ name="%qtNature.name"
point="org.eclipse.core.resources.natures">
<runtime>
<run
diff --git a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/ASTUtil.java b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/ASTUtil.java
index 0623dee3a60..246b075ec55 100644
--- a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/ASTUtil.java
+++ b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/ASTUtil.java
@@ -94,7 +94,7 @@ public class ASTUtil {
}
String ownerName = getFullyQualifiedName(binding.getOwner());
- return (ownerName == null ? "" : ownerName) + "::" + binding.getName();
+ return (ownerName == null ? "" : ownerName) + "::" + binding.getName(); //$NON-NLS-1$ //$NON-NLS-2$
}
/**
@@ -108,7 +108,7 @@ public class ASTUtil {
if (first)
first = false;
else
- str.append("::");
+ str.append("::"); //$NON-NLS-1$
str.append(name);
}
return str.toString();
@@ -122,7 +122,7 @@ public class ASTUtil {
// The regex trims leading and trailing whitespace within the expansion parameter. This is needed
// so that the start of the capture group provides the proper offset into the expansion.
public static final Pattern Regex_MacroExpansion = Pattern
- .compile("(?s)([_a-zA-Z]\\w*)\\s*\\(\\s*(.*?)\\s*\\)\\s*");
+ .compile("(?s)([_a-zA-Z]\\w*)\\s*\\(\\s*(.*?)\\s*\\)\\s*"); //$NON-NLS-1$
public static IType getBaseType(IType type) {
while (type instanceof ITypeContainer)
diff --git a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/QMLAnalyzer.java b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/QMLAnalyzer.java
index b347e5404e8..5f04092fcf3 100644
--- a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/QMLAnalyzer.java
+++ b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/QMLAnalyzer.java
@@ -39,6 +39,7 @@ public class QMLAnalyzer implements IQMLAnalyzer {
private QMLModuleResolver moduleResolver;
private ScriptEngine engine;
+ private Boolean supported;
private Invocable invoke;
private Object tern;
@@ -46,6 +47,14 @@ public class QMLAnalyzer implements IQMLAnalyzer {
public void load() throws ScriptException, IOException, NoSuchMethodException {
moduleResolver = new QMLModuleResolver(this);
engine = new ScriptEngineManager().getEngineByName("nashorn");
+ if (engine == null) {
+ synchronized (this) {
+ supported = false;
+ notifyAll();
+ }
+ throw new ScriptException(
+ "Nashorn script engine is not available in Java 15 and above. The QML Analyzer is not supported.");
+ }
invoke = (Invocable) engine;
loadDep("/tern-qml/node_modules/acorn/dist/acorn.js");
@@ -100,6 +109,7 @@ public class QMLAnalyzer implements IQMLAnalyzer {
synchronized (this) {
tern = invoke.invokeFunction("newTernServer", options);
+ supported = tern != null;
notifyAll();
}
}
@@ -126,16 +136,25 @@ public class QMLAnalyzer implements IQMLAnalyzer {
}
}
- private void waitUntilLoaded() {
+ @Override
+ public boolean isSupported() {
synchronized (this) {
- while (tern == null) {
+ while (supported == null) {
try {
wait();
} catch (InterruptedException e) {
Activator.log(e);
- return;
+ return false;
}
}
+ return supported;
+ }
+ }
+
+ private void waitUntilLoaded() throws ScriptException {
+ if (!isSupported()) {
+ throw new ScriptException(
+ "Nashorn script engine is not available in Java 15 and above. The QML Analyzer is not supported.");
}
}
diff --git a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/QtFunctionCallUtil.java b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/QtFunctionCallUtil.java
index a3d44028d6d..d7253c8a6ef 100644
--- a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/QtFunctionCallUtil.java
+++ b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/QtFunctionCallUtil.java
@@ -60,9 +60,9 @@ import org.eclipse.cdt.core.dom.ast.IType;
*/
public class QtFunctionCallUtil {
- private static final Pattern SignalRegex = Pattern.compile("^\\s*" + QtKeywords.SIGNAL + ".*");
+ private static final Pattern SignalRegex = Pattern.compile("^\\s*" + QtKeywords.SIGNAL + ".*"); //$NON-NLS-1$ //$NON-NLS-2$
private static final Pattern MethodRegex = Pattern
- .compile("^\\s*(?:" + QtKeywords.SIGNAL + '|' + QtKeywords.SLOT + ").*");
+ .compile("^\\s*(?:" + QtKeywords.SIGNAL + '|' + QtKeywords.SLOT + ").*"); //$NON-NLS-1$ //$NON-NLS-2$
/**
* Return true if the specified name is a QObject::connect or QObject::disconnect function
diff --git a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/QtIncludePaths.java b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/QtIncludePaths.java
index 53fbb559603..f9996d70036 100644
--- a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/QtIncludePaths.java
+++ b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/QtIncludePaths.java
@@ -66,10 +66,10 @@ public class QtIncludePaths extends LanguageSettingsSerializableProvider {
*/
private long qtInstallHeadersModTime;
- private static final String ATTR_QMAKE = "qmake";
- private static final String ATTR_QMAKE_MOD = "qmakeModification";
- private static final String ATTR_QT_INSTALL_HEADERS = "QT_INSTALL_HEADERS";
- private static final String ATTR_QT_INSTALL_HEADERS_MOD = "qtInstallHeadersModification";
+ private static final String ATTR_QMAKE = "qmake"; //$NON-NLS-1$
+ private static final String ATTR_QMAKE_MOD = "qmakeModification"; //$NON-NLS-1$
+ private static final String ATTR_QT_INSTALL_HEADERS = "QT_INSTALL_HEADERS"; //$NON-NLS-1$
+ private static final String ATTR_QT_INSTALL_HEADERS_MOD = "qtInstallHeadersModification"; //$NON-NLS-1$
/**
* Create a new instance of the include path wrapper for the Qt installation for
@@ -198,7 +198,7 @@ public class QtIncludePaths extends LanguageSettingsSerializableProvider {
try {
return Long.parseLong(value);
} catch (NumberFormatException e) {
- Activator.log("attribute name:" + attr + " value:" + value, e);
+ Activator.log("attribute name:" + attr + " value:" + value, e); //$NON-NLS-1$ //$NON-NLS-2$
return 0;
}
}
@@ -223,7 +223,7 @@ public class QtIncludePaths extends LanguageSettingsSerializableProvider {
BufferedReader reader = null;
Process process = null;
try {
- process = ProcessFactory.getFactory().exec(new String[] { qmakePath, "-query", "QT_INSTALL_HEADERS" });
+ process = ProcessFactory.getFactory().exec(new String[] { qmakePath, "-query", "QT_INSTALL_HEADERS" }); //$NON-NLS-1$ //$NON-NLS-2$
reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
qtInstallHeadersPath = reader.readLine();
} catch (IOException e) {
diff --git a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/QtIncludePathsProvider.java b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/QtIncludePathsProvider.java
index 2dcd0e02ffa..cdbb579134e 100644
--- a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/QtIncludePathsProvider.java
+++ b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/QtIncludePathsProvider.java
@@ -44,9 +44,9 @@ public class QtIncludePathsProvider extends LanguageSettingsSerializableProvider
/**
* The build configuration stores the path to the qmake binary as an environment variable.
*/
- private static final String ENVVAR_QMAKE = "QMAKE";
+ private static final String ENVVAR_QMAKE = "QMAKE"; //$NON-NLS-1$
- private static final String ELEMENT_QMAKE = "qmake";
+ private static final String ELEMENT_QMAKE = "qmake"; //$NON-NLS-1$
@Override
public boolean equals(Object obj) {
diff --git a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/QtKeywords.java b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/QtKeywords.java
index c9613d433bb..28de83e6b80 100644
--- a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/QtKeywords.java
+++ b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/QtKeywords.java
@@ -21,30 +21,30 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPFunction;
* Declares constants related to tokens that are special in Qt applications.
*/
public class QtKeywords {
- public static final String CONNECT = "connect";
- public static final String DISCONNECT = "disconnect";
- public static final String Q_CLASSINFO = "Q_CLASSINFO";
- public static final String Q_DECLARE_FLAGS = "Q_DECLARE_FLAGS";
- public static final String Q_ENUMS = "Q_ENUMS";
- public static final String Q_FLAGS = "Q_FLAGS";
- public static final String Q_GADGET = "Q_GADGET";
- public static final String Q_INVOKABLE = "Q_INVOKABLE";
- public static final String Q_OBJECT = "Q_OBJECT";
- public static final String Q_PROPERTY = "Q_PROPERTY";
- public static final String Q_REVISION = "Q_REVISION";
- public static final String Q_SIGNAL = "Q_SIGNAL";
- public static final String Q_SIGNALS = "Q_SIGNALS";
- public static final String Q_SLOT = "Q_SLOT";
- public static final String Q_SLOTS = "Q_SLOTS";
- public static final String QMETAMETHOD = "QMetaMethod";
- public static final String QML_ATTACHED_PROPERTIES = "qmlAttachedProperties";
- public static final String QML_REGISTER_TYPE = "qmlRegisterType";
- public static final String QML_REGISTER_UNCREATABLE_TYPE = "qmlRegisterUncreatableType";
- public static final String QOBJECT = "QObject";
- public static final String SIGNAL = "SIGNAL";
- public static final String SIGNALS = "signals";
- public static final String SLOT = "SLOT";
- public static final String SLOTS = "slots";
+ public static final String CONNECT = "connect"; //$NON-NLS-1$
+ public static final String DISCONNECT = "disconnect"; //$NON-NLS-1$
+ public static final String Q_CLASSINFO = "Q_CLASSINFO"; //$NON-NLS-1$
+ public static final String Q_DECLARE_FLAGS = "Q_DECLARE_FLAGS"; //$NON-NLS-1$
+ public static final String Q_ENUMS = "Q_ENUMS"; //$NON-NLS-1$
+ public static final String Q_FLAGS = "Q_FLAGS"; //$NON-NLS-1$
+ public static final String Q_GADGET = "Q_GADGET"; //$NON-NLS-1$
+ public static final String Q_INVOKABLE = "Q_INVOKABLE"; //$NON-NLS-1$
+ public static final String Q_OBJECT = "Q_OBJECT"; //$NON-NLS-1$
+ public static final String Q_PROPERTY = "Q_PROPERTY"; //$NON-NLS-1$
+ public static final String Q_REVISION = "Q_REVISION"; //$NON-NLS-1$
+ public static final String Q_SIGNAL = "Q_SIGNAL"; //$NON-NLS-1$
+ public static final String Q_SIGNALS = "Q_SIGNALS"; //$NON-NLS-1$
+ public static final String Q_SLOT = "Q_SLOT"; //$NON-NLS-1$
+ public static final String Q_SLOTS = "Q_SLOTS"; //$NON-NLS-1$
+ public static final String QMETAMETHOD = "QMetaMethod"; //$NON-NLS-1$
+ public static final String QML_ATTACHED_PROPERTIES = "qmlAttachedProperties"; //$NON-NLS-1$
+ public static final String QML_REGISTER_TYPE = "qmlRegisterType"; //$NON-NLS-1$
+ public static final String QML_REGISTER_UNCREATABLE_TYPE = "qmlRegisterUncreatableType"; //$NON-NLS-1$
+ public static final String QOBJECT = "QObject"; //$NON-NLS-1$
+ public static final String SIGNAL = "SIGNAL"; //$NON-NLS-1$
+ public static final String SIGNALS = "signals"; //$NON-NLS-1$
+ public static final String SLOT = "SLOT"; //$NON-NLS-1$
+ public static final String SLOTS = "slots"; //$NON-NLS-1$
/**
* Returns true if the argument type is for Qt's QObject class and false otherwise.
diff --git a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/QtMethodReference.java b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/QtMethodReference.java
index 0bd322cd9e1..79b045eea85 100644
--- a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/QtMethodReference.java
+++ b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/QtMethodReference.java
@@ -41,7 +41,8 @@ import org.eclipse.core.resources.IProject;
public class QtMethodReference extends ASTNameReference {
public static enum Type {
- Signal("sender", "SIGNAL", "signal"), Slot("receiver", "SLOT", "member");
+ Signal("sender", "SIGNAL", "signal"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ Slot("receiver", "SLOT", "member"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
public final String roleName;
public final String macroName;
diff --git a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/QtMethodUtil.java b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/QtMethodUtil.java
index 42233f6e361..f197f946c18 100644
--- a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/QtMethodUtil.java
+++ b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/QtMethodUtil.java
@@ -116,7 +116,7 @@ public class QtMethodUtil {
boolean first = true;
List<String> signatures = new ArrayList<>();
qtEncSignatures = qtEncSignatures.substring(i + 1);
- Pattern p = Pattern.compile("^([a-zA-Z0-9+/=]*)(@?).*$");
+ Pattern p = Pattern.compile("^([a-zA-Z0-9+/=]*)(@?).*$"); //$NON-NLS-1$
while (!qtEncSignatures.isEmpty()) {
Matcher m = p.matcher(qtEncSignatures);
if (!m.matches())
@@ -193,21 +193,22 @@ public class QtMethodUtil {
}
private static String stripWS(String str) {
- return str.trim().replaceAll("\\s+", " ").replaceAll(" ([\\*&,()<>]+)", "$1").replaceAll("([\\*&,()<>]+) ",
- "$1");
+ return str.trim().replaceAll("\\s+", " "). //$NON-NLS-1$ //$NON-NLS-2$
+ replaceAll(" ([\\*&,()<>]+)", "$1"). //$NON-NLS-1$ //$NON-NLS-2$
+ replaceAll("([\\*&,()<>]+) ", "$1"); //$NON-NLS-1$ //$NON-NLS-2$
}
private static String asString(IASTPointerOperator ptr) {
if (ptr instanceof ICPPASTReferenceOperator)
- return "&";
+ return "&"; //$NON-NLS-1$
if (ptr instanceof IASTPointer) {
StringBuilder str = new StringBuilder();
IASTPointer astPtr = (IASTPointer) ptr;
str.append('*');
if (astPtr.isConst())
- str.append(" const");
+ str.append(" const"); //$NON-NLS-1$
if (astPtr.isVolatile())
- str.append(" volatile");
+ str.append(" volatile"); //$NON-NLS-1$
return str.toString();
}
@@ -239,7 +240,7 @@ public class QtMethodUtil {
if (isConst || stripLastPtrConst) {
if (!pruneConst)
- result.append("const ");
+ result.append("const "); //$NON-NLS-1$
else {
// Qt signature generation converts const value and const reference types
// into simple value types. E.g.,
@@ -255,14 +256,14 @@ public class QtMethodUtil {
if (lastPtr instanceof ICPPASTReferenceOperator)
ptrs = Arrays.copyOf(ptrs, ptrs.length - 1);
else if (!(lastPtr instanceof IASTPointer) || !((IASTPointer) lastPtr).isConst())
- result.append("const ");
+ result.append("const "); //$NON-NLS-1$
}
}
}
// Qt does no special handling for volatile. This is likely an oversight.
if (cppSpec.isVolatile())
- result.append("volatile ");
+ result.append("volatile "); //$NON-NLS-1$
IASTNode[] children = cppSpec.getChildren();
if (children == null || children.length <= 0) {
@@ -270,8 +271,8 @@ public class QtMethodUtil {
// type (without following typedefs, etc.), and then strip out all const
// which has already been handled.
String raw = cppSpec.toString();
- raw = raw.replaceAll("const\\s", "");
- raw = raw.replaceAll("\\sconst", "");
+ raw = raw.replaceAll("const\\s", ""); //$NON-NLS-1$ //$NON-NLS-2$
+ raw = raw.replaceAll("\\sconst", ""); //$NON-NLS-1$ //$NON-NLS-2$
result.append(raw);
} else {
for (IASTNode child : children) {
@@ -294,7 +295,7 @@ public class QtMethodUtil {
if (!stripLastPtrConst || i < ptrs.length - 1)
result.append(asString(ptrs[i]));
else
- result.append(asString(ptrs[i]).replaceAll("const", ""));
+ result.append(asString(ptrs[i]).replaceAll("const", "")); //$NON-NLS-1$ //$NON-NLS-2$
}
}
@@ -332,7 +333,7 @@ public class QtMethodUtil {
if (first)
first = false;
else
- result.append(", ");
+ result.append(", "); //$NON-NLS-1$
append(result, child);
}
result.append('>');
diff --git a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/QtNature.java b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/QtNature.java
index 9cf0f896fe0..e8f1e79ba36 100644
--- a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/QtNature.java
+++ b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/QtNature.java
@@ -97,7 +97,7 @@ public class QtNature implements IProjectNature {
// this doesn't happen then the PDOM could have the current version (so
// nothing would trigger
// an update) but no Qt content.
- CCorePlugin.log(IStatus.INFO, "Reindexing " + project.getName() + " because Qt nature has been added");
+ CCorePlugin.log(IStatus.INFO, "Reindexing " + project.getName() + " because Qt nature has been added"); //$NON-NLS-1$ //$NON-NLS-2$
CCorePlugin.getIndexManager().reindex(cProject);
}
diff --git a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/build/QtBuildConfiguration.java b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/build/QtBuildConfiguration.java
index 8e05b7aef14..189ed99053d 100644
--- a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/build/QtBuildConfiguration.java
+++ b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/build/QtBuildConfiguration.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2015, 2016 QNX Software Systems and others.
+ * Copyright (c) 2015, 2022 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -379,9 +379,8 @@ public class QtBuildConfiguration extends CBuildConfiguration implements IQtBuil
IFile projectFile = project.getFile(project.getName() + ".pro"); //$NON-NLS-1$
command.add(projectFile.getLocation().toOSString());
- ProcessBuilder processBuilder = new ProcessBuilder(command).directory(getBuildDirectory().toFile());
- setBuildEnvironment(processBuilder.environment());
- Process process = processBuilder.start();
+ startBuildProcess(command, new IEnvironmentVariable[0],
+ new org.eclipse.core.runtime.Path(buildDir.toString()), console, monitor);
StringBuffer msg = new StringBuffer();
for (String arg : command) {
@@ -391,7 +390,7 @@ public class QtBuildConfiguration extends CBuildConfiguration implements IQtBuil
outStream.write(msg.toString());
// TODO qmake error parser
- watchProcess(process, console);
+ watchProcess(console, monitor);
doFullBuild = false;
}
@@ -401,11 +400,11 @@ public class QtBuildConfiguration extends CBuildConfiguration implements IQtBuil
// run make
List<String> command = new ArrayList<>(Arrays.asList(makeCommand));
command.add("all"); //$NON-NLS-1$
- ProcessBuilder processBuilder = new ProcessBuilder(command).directory(buildDir.toFile());
- setBuildEnvironment(processBuilder.environment());
- Process process = processBuilder.start();
+
+ startBuildProcess(command, new IEnvironmentVariable[0],
+ new org.eclipse.core.runtime.Path(buildDir.toString()), console, monitor);
outStream.write(String.join(" ", command) + '\n'); //$NON-NLS-1$
- watchProcess(process, new IConsoleParser[] { epm });
+ watchProcess(new IConsoleParser[] { epm }, monitor);
}
getProject().refreshLocal(IResource.DEPTH_INFINITE, monitor);
@@ -438,11 +437,10 @@ public class QtBuildConfiguration extends CBuildConfiguration implements IQtBuil
// run make
List<String> command = new ArrayList<>(Arrays.asList(makeCommand));
command.add("clean"); //$NON-NLS-1$
- ProcessBuilder processBuilder = new ProcessBuilder(command).directory(buildDir.toFile());
- setBuildEnvironment(processBuilder.environment());
- Process process = processBuilder.start();
+ startBuildProcess(command, new IEnvironmentVariable[0],
+ new org.eclipse.core.runtime.Path(buildDir.toString()), console, monitor);
outStream.write(String.join(" ", command) + '\n'); //$NON-NLS-1$
- watchProcess(process, new IConsoleParser[] { epm });
+ watchProcess(new IConsoleParser[] { epm }, monitor);
}
project.refreshLocal(IResource.DEPTH_INFINITE, monitor);
diff --git a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/index/IQProperty.java b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/index/IQProperty.java
index 27585a937fa..c5351c6eeae 100644
--- a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/index/IQProperty.java
+++ b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/index/IQProperty.java
@@ -39,8 +39,16 @@ public interface IQProperty extends IQObject.IMember {
// This enum is used when scanning Q_PROPERTY expansions, only attributes listed here
// will be extracted from the expansion. This enum should be expanded with new values
// as needed (based on the version of Qt). See QProperty#scanAttributes.
- READ("getFunction"), WRITE("setFunction"), RESET("resetFunction"), NOTIFY("notifySignal"), REVISION("int"),
- DESIGNABLE("bool"), SCRIPTABLE("bool"), STORED("bool"), USER("bool"), CONSTANT(null), FINAL(null);
+ READ("getFunction"), //$NON-NLS-1$
+ WRITE("setFunction"), //$NON-NLS-1$
+ RESET("resetFunction"), //$NON-NLS-1$
+ NOTIFY("notifySignal"), //$NON-NLS-1$
+ REVISION("int"), //$NON-NLS-1$
+ DESIGNABLE("bool"), //$NON-NLS-1$
+ SCRIPTABLE("bool"), //$NON-NLS-1$
+ STORED("bool"), //$NON-NLS-1$
+ USER("bool"), //$NON-NLS-1$
+ CONSTANT(null), FINAL(null);
/**
* A string containing the C++ identifier for this attribute.
diff --git a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/index/QMakeInfo.java b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/index/QMakeInfo.java
index ce32f7e70ad..bc2330b4f4c 100644
--- a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/index/QMakeInfo.java
+++ b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/index/QMakeInfo.java
@@ -29,9 +29,9 @@ import org.eclipse.cdt.utils.spawner.ProcessFactory;
public final class QMakeInfo implements IQMakeInfo {
// reg. exp. for parsing output of "qmake -query" command
- public static final Pattern PATTERN_QUERY_LINE = Pattern.compile("^(\\w+):(.*)$");
+ public static final Pattern PATTERN_QUERY_LINE = Pattern.compile("^(\\w+):(.*)$"); //$NON-NLS-1$
// reg. exp. for parsing output of "qmake -E file.pro" command (for QMake 3.0 only)
- public static final Pattern PATTERN_EVAL_LINE = Pattern.compile("^([a-zA-Z0-9_\\.]+)\\s*=\\s*(.*)$");
+ public static final Pattern PATTERN_EVAL_LINE = Pattern.compile("^([a-zA-Z0-9_\\.]+)\\s*=\\s*(.*)$"); //$NON-NLS-1$
/**
* Instance that is used to present an invalid IQMakeInfo.
@@ -88,8 +88,11 @@ public final class QMakeInfo implements IQMakeInfo {
}
// run "qmake -query"
- Map<String, String> qmake1 = exec(PATTERN_QUERY_LINE, extraEnv, qmakePath, "-query");
- if (qmake1 == null) {
+ Map<String, String> qmake1;
+ try {
+ qmake1 = exec(PATTERN_QUERY_LINE, extraEnv, qmakePath, "-query"); //$NON-NLS-1$
+ } catch (IOException e) {
+ Activator.log(e);
return INVALID;
}
@@ -98,9 +101,15 @@ public final class QMakeInfo implements IQMakeInfo {
// TODO - no support for pre-3.0
// for QMake version 3.0 or newer, run "qmake -E file.pro"
- Map<String, String> qmake2 = version != null && version.getMajor() >= 3
- ? exec(PATTERN_EVAL_LINE, extraEnv, qmakePath, "-E", proPath)
- : Collections.<String, String>emptyMap();
+ Map<String, String> qmake2 = Collections.emptyMap();
+ if (version != null && version.getMajor() >= 3) {
+ try {
+ qmake2 = exec(PATTERN_EVAL_LINE, extraEnv, qmakePath, "-E", proPath); //$NON-NLS-1$
+ } catch (IOException e) {
+ Activator.log(e);
+ // Continue with an empty map.
+ }
+ }
return new QMakeInfo(true, qmake1, qmake2);
}
@@ -181,13 +190,12 @@ public final class QMakeInfo implements IQMakeInfo {
* @param extraEnv the extra environment for command
* @param cmd the command line
* @return the map of resolved key-value pairs
+ * @throws IOException If command execution failed
*/
- private static Map<String, String> exec(Pattern regex, String[] extraEnv, String... command) {
+ private static Map<String, String> exec(Pattern regex, String[] extraEnv, String... command) throws IOException {
if (command.length < 1 || !new File(command[0]).exists()) {
- Activator.log("qmake: cannot run command: " + (command.length > 0 ? command[0] : ""));
- return null;
+ throw new IOException("qmake: cannot run command: " + (command.length > 0 ? command[0] : "")); //$NON-NLS-1$ //$NON-NLS-2$
}
- BufferedReader reader = null;
Process process = null;
try {
if (extraEnv != null && extraEnv.length > 0) {
@@ -195,18 +203,10 @@ public final class QMakeInfo implements IQMakeInfo {
} else {
process = ProcessFactory.getFactory().exec(command);
}
- reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
- return QMakeParser.parse(regex, reader);
- } catch (IOException e) {
- Activator.log(e);
- return null;
+ try (BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()))) {
+ return QMakeParser.parse(regex, reader);
+ }
} finally {
- if (reader != null)
- try {
- reader.close();
- } catch (IOException e) {
- /* ignore */
- }
if (process != null) {
process.destroy();
}
diff --git a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/index/QMakeParser.java b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/index/QMakeParser.java
index b9b5485d933..658c1a533f8 100644
--- a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/index/QMakeParser.java
+++ b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/index/QMakeParser.java
@@ -27,20 +27,20 @@ import org.eclipse.cdt.internal.qt.core.Activator;
*/
public final class QMakeParser {
- public static final String KEY_QMAKE_VERSION = "QMAKE_VERSION";
- public static final String KEY_QT_VERSION = "QT_VERSION";
- public static final String KEY_QT_INSTALL_IMPORTS = "QT_INSTALL_IMPORTS";
- public static final String KEY_QT_INSTALL_QML = "QT_INSTALL_QML";
- public static final String KEY_QT_INSTALL_DOCS = "QT_INSTALL_DOCS";
- public static final String KEY_QMAKE_INTERNAL_INCLUDED_FILES = "QMAKE_INTERNAL_INCLUDED_FILES";
- public static final String KEY_SOURCES = "SOURCES";
- public static final String KEY_HEADERS = "HEADERS";
- public static final String KEY_INCLUDEPATH = "INCLUDEPATH";
- public static final String KEY_DEFINES = "DEFINES";
- public static final String KEY_RESOURCES = "RESOURCES";
- public static final String KEY_FORMS = "FORMS";
- public static final String KEY_OTHER_FILES = "OTHER_FILES";
- public static final String KEY_QML_IMPORT_PATH = "QML_IMPORT_PATH";
+ public static final String KEY_QMAKE_VERSION = "QMAKE_VERSION"; //$NON-NLS-1$
+ public static final String KEY_QT_VERSION = "QT_VERSION"; //$NON-NLS-1$
+ public static final String KEY_QT_INSTALL_IMPORTS = "QT_INSTALL_IMPORTS"; //$NON-NLS-1$
+ public static final String KEY_QT_INSTALL_QML = "QT_INSTALL_QML"; //$NON-NLS-1$
+ public static final String KEY_QT_INSTALL_DOCS = "QT_INSTALL_DOCS"; //$NON-NLS-1$
+ public static final String KEY_QMAKE_INTERNAL_INCLUDED_FILES = "QMAKE_INTERNAL_INCLUDED_FILES"; //$NON-NLS-1$
+ public static final String KEY_SOURCES = "SOURCES"; //$NON-NLS-1$
+ public static final String KEY_HEADERS = "HEADERS"; //$NON-NLS-1$
+ public static final String KEY_INCLUDEPATH = "INCLUDEPATH"; //$NON-NLS-1$
+ public static final String KEY_DEFINES = "DEFINES"; //$NON-NLS-1$
+ public static final String KEY_RESOURCES = "RESOURCES"; //$NON-NLS-1$
+ public static final String KEY_FORMS = "FORMS"; //$NON-NLS-1$
+ public static final String KEY_OTHER_FILES = "OTHER_FILES"; //$NON-NLS-1$
+ public static final String KEY_QML_IMPORT_PATH = "QML_IMPORT_PATH"; //$NON-NLS-1$
/**
* Parses QMake output via a specified reg. exp.
@@ -57,13 +57,13 @@ public final class QMakeParser {
while ((line = reader.readLine()) != null) {
Matcher m = regex.matcher(line);
if (!m.matches() || m.groupCount() != 2) {
- Activator.log("qmake: cannot decode query line '" + line + '\'');
+ Activator.log("qmake: cannot decode query line '" + line + '\''); //$NON-NLS-1$
} else {
String key = m.group(1);
String value = m.group(2);
String oldValue = result.put(key, value);
if (oldValue != null)
- Activator.log("qmake: duplicate keys in query info '" + line + "' was '" + oldValue + '\'');
+ Activator.log("qmake: duplicate keys in query info '" + line + "' was '" + oldValue + '\''); //$NON-NLS-1$ //$NON-NLS-2$
}
}
diff --git a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/index/QMakeProjectInfo.java b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/index/QMakeProjectInfo.java
index 63e66f69742..9641c288b84 100644
--- a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/index/QMakeProjectInfo.java
+++ b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/index/QMakeProjectInfo.java
@@ -194,7 +194,7 @@ public final class QMakeProjectInfo implements IQMakeProjectInfo {
Map<String, String> envMap = qmakeEnvInfo != null ? qmakeEnvInfo.getEnvironment()
: Collections.<String, String>emptyMap();
for (Map.Entry<String, String> entry : envMap.entrySet()) {
- envList.add(entry.getKey() + "=" + entry.getValue());
+ envList.add(entry.getKey() + "=" + entry.getValue()); //$NON-NLS-1$
}
// calculates actual QMake info
diff --git a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/index/QMakeVersion.java b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/index/QMakeVersion.java
index c2c21caa007..592443e8e3c 100644
--- a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/index/QMakeVersion.java
+++ b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/index/QMakeVersion.java
@@ -21,7 +21,7 @@ import org.eclipse.cdt.internal.qt.core.Activator;
public final class QMakeVersion implements IQtVersion {
// QMAKE_VERSION looks like 2.01a or 3.0
- private static final Pattern REGEXP = Pattern.compile("([\\d]+)\\.([\\d]+).*");
+ private static final Pattern REGEXP = Pattern.compile("([\\d]+)\\.([\\d]+).*"); //$NON-NLS-1$
// parses major and minor version numbers only
public static QMakeVersion create(String version) {
diff --git a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/index/QProperty.java b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/index/QProperty.java
index d2556b13fe6..5f5b25cb167 100644
--- a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/index/QProperty.java
+++ b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/index/QProperty.java
@@ -22,7 +22,7 @@ public class QProperty extends AbstractQField implements IQProperty {
}
public void setAttribute(IQProperty.Attribute attr, String value) {
- values[attr.ordinal()] = (value == null ? "" : value);
+ values[attr.ordinal()] = (value == null ? "" : value); //$NON-NLS-1$
}
@Override
diff --git a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/index/QmlRegistration.java b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/index/QmlRegistration.java
index 73c8e16e6bd..fbefaa5f282 100644
--- a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/index/QmlRegistration.java
+++ b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/index/QmlRegistration.java
@@ -42,7 +42,7 @@ public class QmlRegistration implements IQmlRegistration {
this.kind = IQmlRegistration.Kind.Type;
String qobjName = pdom.getQObjectName();
- this.ownerName = qobjName == null ? null : qobjName.split("::");
+ this.ownerName = qobjName == null ? null : qobjName.split("::"); //$NON-NLS-1$
this.version = pdom.getVersion();
this.uri = pdom.getUri();
@@ -57,7 +57,7 @@ public class QmlRegistration implements IQmlRegistration {
this.kind = IQmlRegistration.Kind.Uncreatable;
String qobjName = pdom.getQObjectName();
- this.ownerName = qobjName == null ? null : qobjName.split("::");
+ this.ownerName = qobjName == null ? null : qobjName.split("::"); //$NON-NLS-1$
this.version = pdom.getVersion();
this.uri = pdom.getUri();
diff --git a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/index/QtFactory.java b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/index/QtFactory.java
index c77a9701708..0b7b02cf557 100644
--- a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/index/QtFactory.java
+++ b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/index/QtFactory.java
@@ -27,18 +27,18 @@ import org.eclipse.core.runtime.CoreException;
public class QtFactory {
- private static final char[] QT_VERSION = "QT_VERSION".toCharArray();
+ private static final char[] QT_VERSION = "QT_VERSION".toCharArray(); //$NON-NLS-1$
public static QtIndex create(IProject project) {
CDTIndex cdtIndex = getCDTIndex(project);
if (cdtIndex == null) {
- Activator.log("could not get CDT index from project " + project.getName());
+ Activator.log("could not get CDT index from project " + project.getName()); //$NON-NLS-1$
return null;
}
QtVersion qtVersion = cdtIndex.get(QtVersionAccessor);
if (qtVersion == null) {
- Activator.log("could not find Qt version in CDT index from project " + project.getName());
+ Activator.log("could not find Qt version in CDT index from project " + project.getName()); //$NON-NLS-1$
return null;
}
@@ -79,7 +79,7 @@ public class QtFactory {
// QT_VERSION looks like 0x040805
private static final Pattern Version_regex = Pattern
- .compile("0x([a-fA-F\\d]{1,2})([a-fA-F\\d]{2})([a-fA-F\\d]{2})");
+ .compile("0x([a-fA-F\\d]{1,2})([a-fA-F\\d]{2})([a-fA-F\\d]{2})"); //$NON-NLS-1$
public static QtVersion create(String version) {
Matcher m = Version_regex.matcher(version);
@@ -104,7 +104,7 @@ public class QtFactory {
}
}
- private static final CDTIndex.Accessor<QtVersion> QtVersionAccessor = new CDTIndex.Accessor<QtVersion>() {
+ private static final CDTIndex.Accessor<QtVersion> QtVersionAccessor = new CDTIndex.Accessor<>() {
@Override
public QtVersion access(IIndex index) throws CoreException {
// Multiple macros might be found, sort the values and choose the highest version.
diff --git a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/index/QtIndexImpl.java b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/index/QtIndexImpl.java
index f049cc248d2..a9572ff6ef8 100644
--- a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/index/QtIndexImpl.java
+++ b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/index/QtIndexImpl.java
@@ -31,7 +31,7 @@ public class QtIndexImpl extends QtIndex {
private final CDTIndex cdtIndex;
private static final Pattern QmlTypeNameRegex = Pattern.compile(
- "^(?:" + QtKeywords.QML_REGISTER_TYPE + '|' + QtKeywords.QML_REGISTER_UNCREATABLE_TYPE + ")<.*>\0(.*)$");
+ "^(?:" + QtKeywords.QML_REGISTER_TYPE + '|' + QtKeywords.QML_REGISTER_UNCREATABLE_TYPE + ")<.*>\0(.*)$"); //$NON-NLS-1$ //$NON-NLS-2$
private static final IndexFilter QtLinkageFilter = new IndexFilter() {
@Override
diff --git a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/parser/QtParser.java b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/parser/QtParser.java
index 49e3c975d77..89796ec4e4c 100644
--- a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/parser/QtParser.java
+++ b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/parser/QtParser.java
@@ -47,7 +47,7 @@ public class QtParser extends GNUCPPSourceParser {
public static ICPPASTFunctionDeclarator parseQtMethodReference(String str) {
// Reject strings that have embedded line terminators. This is needed to properly check that
// one that is about to be added.
- if (str == null || str.contains(";"))
+ if (str == null || str.contains(";")) //$NON-NLS-1$
return null;
QtParser parser = new QtParser(str + ';');
diff --git a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/pdom/QmlTypeRegistration.java b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/pdom/QmlTypeRegistration.java
index a24cec1f743..2c7409102ad 100644
--- a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/pdom/QmlTypeRegistration.java
+++ b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/pdom/QmlTypeRegistration.java
@@ -49,7 +49,7 @@ public class QmlTypeRegistration extends ASTDelegatedName implements IQtASTName
if (simpleID == null) {
IASTInitializerClause[] args = fnCall.getArguments();
simpleID = (functionInstanceBinding.getName()
- + ASTTypeUtil.getArgumentListString(functionInstanceBinding.getTemplateArguments(), true) + "\0("
+ + ASTTypeUtil.getArgumentListString(functionInstanceBinding.getTemplateArguments(), true) + "\0(" //$NON-NLS-1$
+ asStringForName(args, 0) + ',' + asStringForName(args, 1) + ',' + asStringForName(args, 2) + ','
+ asStringForName(args, 3) + ')').toCharArray();
}
@@ -108,7 +108,7 @@ public class QmlTypeRegistration extends ASTDelegatedName implements IQtASTName
private String asStringForName(IASTInitializerClause[] args, int index) {
String arg = args.length <= index ? null : asString(args[index]);
- return arg == null ? "" : arg;
+ return arg == null ? "" : arg; //$NON-NLS-1$
}
private String getArgAsStringOrNull(int index) {
diff --git a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/pdom/QtASTClass.java b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/pdom/QtASTClass.java
index 10b15df5a7f..78a02a7328a 100644
--- a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/pdom/QtASTClass.java
+++ b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/pdom/QtASTClass.java
@@ -320,7 +320,7 @@ public class QtASTClass {
// and long suffixes are allowed but are excluded from the capture group. The matcher's
// input string should be trimmed and have all newlines replaced.
private static final Pattern QREVISION_REGEX = Pattern
- .compile("^Q_REVISION\\s*\\(\\s*((?:0x)?[\\da-fA-F]+)[ulUL]*\\s*\\)$");
+ .compile("^Q_REVISION\\s*\\(\\s*((?:0x)?[\\da-fA-F]+)[ulUL]*\\s*\\)$"); //$NON-NLS-1$
public Revision(int offset, Long revision) {
this.offset = offset;
@@ -351,7 +351,7 @@ public class QtASTClass {
return null;
// Trim leading and trailing whitespace and remove all newlines.
- Matcher m = QREVISION_REGEX.matcher(raw.trim().replaceAll("\\s+", ""));
+ Matcher m = QREVISION_REGEX.matcher(raw.trim().replaceAll("\\s+", "")); //$NON-NLS-1$ //$NON-NLS-2$
if (m.matches()) {
try {
return new Revision(offset, Long.parseLong(m.group(1)));
diff --git a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/pdom/QtASTVisitor.java b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/pdom/QtASTVisitor.java
index 1b07883e68c..05a898d93d6 100644
--- a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/pdom/QtASTVisitor.java
+++ b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/pdom/QtASTVisitor.java
@@ -57,12 +57,12 @@ public class QtASTVisitor extends ASTVisitor {
private final IIndexSymbols symbols;
private final LocationMap locationMap;
- private static final Pattern expansionParamRegex = Pattern.compile("^(?:Q_ENUMS|Q_FLAGS)\\s*\\((.*)\\)$",
+ private static final Pattern expansionParamRegex = Pattern.compile("^(?:Q_ENUMS|Q_FLAGS)\\s*\\((.*)\\)$", //$NON-NLS-1$
Pattern.DOTALL);
- private static final Pattern qualNameRegex = Pattern.compile("\\s*((?:[^\\s:]+\\s*::\\s*)*[^\\s:]+).*");
+ private static final Pattern qualNameRegex = Pattern.compile("\\s*((?:[^\\s:]+\\s*::\\s*)*[^\\s:]+).*"); //$NON-NLS-1$
private static final Pattern declareFlagsRegex = Pattern
- .compile("^Q_DECLARE_FLAGS\\s*\\(\\s*([^\\s]+),\\s*([^\\s]+)\\s*\\)$", Pattern.DOTALL);
+ .compile("^Q_DECLARE_FLAGS\\s*\\(\\s*([^\\s]+),\\s*([^\\s]+)\\s*\\)$", Pattern.DOTALL); //$NON-NLS-1$
/**
* A regular expression for scanning the Q_CLASSINFO expansion and extracting the
@@ -73,12 +73,12 @@ public class QtASTVisitor extends ASTVisitor {
* The key must not have embedded quotes.
*/
private static final Pattern classInfoRegex = Pattern
- .compile("^Q_CLASSINFO\\s*\\(\\s*\"([^\"]+)\"\\s*,\\s*\"(.*)\"\\s*\\)$", Pattern.DOTALL);
+ .compile("^Q_CLASSINFO\\s*\\(\\s*\"([^\"]+)\"\\s*,\\s*\"(.*)\"\\s*\\)$", Pattern.DOTALL); //$NON-NLS-1$
- private static final Pattern leadingWhitespaceRegex = Pattern.compile("^\\s*([^\\s].*)$");
+ private static final Pattern leadingWhitespaceRegex = Pattern.compile("^\\s*([^\\s].*)$"); //$NON-NLS-1$
private static final Pattern qPropertyRegex = Pattern.compile(
- "^Q_PROPERTY\\s*\\(\\s*(.+?)\\s*([a-zA-Z_][\\w]*+)(?:(?:\\s+(READ\\s+.*))|\\s*)\\s*\\)$", Pattern.DOTALL);
+ "^Q_PROPERTY\\s*\\(\\s*(.+?)\\s*([a-zA-Z_][\\w]*+)(?:(?:\\s+(READ\\s+.*))|\\s*)\\s*\\)$", Pattern.DOTALL); //$NON-NLS-1$
/**
* A regular expression for scanning Q_PROPERTY attributes. The regular expression is built
@@ -97,9 +97,9 @@ public class QtASTVisitor extends ASTVisitor {
for (IQProperty.Attribute attr : IQProperty.Attribute.values()) {
if (attr.ordinal() > 0)
regexBuilder.append('|');
- regexBuilder.append("(:?");
+ regexBuilder.append("(:?"); //$NON-NLS-1$
regexBuilder.append(attr.identifier);
- regexBuilder.append(")");
+ regexBuilder.append(")"); //$NON-NLS-1$
}
qPropertyAttributeRegex = Pattern.compile(regexBuilder.toString());
}
@@ -307,8 +307,8 @@ public class QtASTVisitor extends ASTVisitor {
IASTName refName = expansion.getMacroReference();
String param = m.group(1);
- for (int offset = m.start(1), end = param.length(); !param.isEmpty(); offset += end, param = param
- .substring(end)) {
+ for (int offset = m.start(1),
+ end = param.length(); !param.isEmpty(); offset += end, param = param.substring(end)) {
m = qualNameRegex.matcher(param);
if (!m.matches())
break;
diff --git a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/pdom/QtPDOMProperty.java b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/pdom/QtPDOMProperty.java
index 204b73c5ea3..05bd422b058 100644
--- a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/pdom/QtPDOMProperty.java
+++ b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/pdom/QtPDOMProperty.java
@@ -129,7 +129,7 @@ public class QtPDOMProperty extends QtPDOMBinding {
this.cppRecord = cppRecord;
}
- private static final IQtPDOMCodec<Attribute> Codec = new IQtPDOMCodec<Attribute>() {
+ private static final IQtPDOMCodec<Attribute> Codec = new IQtPDOMCodec<>() {
@Override
public int getElementSize() {
return 1 + Database.PTR_SIZE + Database.PTR_SIZE;
@@ -151,7 +151,7 @@ public class QtPDOMProperty extends QtPDOMBinding {
IQProperty.Attribute attr = IQProperty.Attribute.values()[attrId];
- String val = valRec == 0 ? "" : linkage.getDB().getString(valRec).getString();
+ String val = valRec == 0 ? "" : linkage.getDB().getString(valRec).getString(); //$NON-NLS-1$
return new Attribute(attr, val, cppRec);
}
diff --git a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/pdom/QtPDOMQObject.java b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/pdom/QtPDOMQObject.java
index 433699c0097..043487b09d5 100644
--- a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/pdom/QtPDOMQObject.java
+++ b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/pdom/QtPDOMQObject.java
@@ -149,7 +149,7 @@ public class QtPDOMQObject extends AbstractQtPDOMClass {
this.value = value;
}
- public static final IQtPDOMCodec<ClassInfo> Codec = new IQtPDOMCodec<ClassInfo>() {
+ public static final IQtPDOMCodec<ClassInfo> Codec = new IQtPDOMCodec<>() {
@Override
public int getElementSize() {
return 2 * Database.PTR_SIZE;
diff --git a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/provider/LinuxQtInstallProvider.java b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/provider/LinuxQtInstallProvider.java
index fdd499aef6d..f24cd3f955d 100644
--- a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/provider/LinuxQtInstallProvider.java
+++ b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/provider/LinuxQtInstallProvider.java
@@ -34,7 +34,7 @@ public class LinuxQtInstallProvider implements IQtInstallProvider {
Path qmakePath = Paths.get("/usr/bin/qmake"); //$NON-NLS-1$
if (Files.exists(qmakePath)) {
QtInstall install = new QtInstall(qmakePath);
- install.setProperty(IToolChain.ATTR_PACKAGE, "system");
+ install.setProperty(IToolChain.ATTR_PACKAGE, "system"); //$NON-NLS-1$
return Arrays.asList(install);
}
}
diff --git a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/provider/QtInstallProvider.java b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/provider/QtInstallProvider.java
index 5b6554d45ac..1f73d24e2ce 100644
--- a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/provider/QtInstallProvider.java
+++ b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/provider/QtInstallProvider.java
@@ -42,7 +42,7 @@ public class QtInstallProvider implements IQtInstallProvider {
return Files.walk(root, 2).filter((path) -> Files.exists(path.resolve(qmake))).map((path) -> {
QtInstall install = new QtInstall(path.resolve(qmake));
if (isWin32 && "win32-g++".equals(install.getSpec())) { //$NON-NLS-1$
- install.setProperty(IToolChain.ATTR_PACKAGE, "qt"); //$NON-NLS-1$ //$NON-NLS-2$
+ install.setProperty(IToolChain.ATTR_PACKAGE, "qt"); //$NON-NLS-1$
}
return install;
}).collect(Collectors.toList());
diff --git a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/qt/core/IQMLAnalyzer.java b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/qt/core/IQMLAnalyzer.java
index 88f7b2a7213..6a4e5591731 100644
--- a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/qt/core/IQMLAnalyzer.java
+++ b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/qt/core/IQMLAnalyzer.java
@@ -24,6 +24,14 @@ import org.eclipse.cdt.qt.core.qmljs.IQmlASTNode;
public interface IQMLAnalyzer {
+ /**
+ * Added in CDT 10.0.1 with no version bump. See Bug 567124.
+ * @since 2.3
+ */
+ default boolean isSupported() {
+ return true;
+ }
+
void addFile(String fileName, String code) throws NoSuchMethodException, ScriptException;
void deleteFile(String fileName) throws NoSuchMethodException, ScriptException;
diff --git a/qt/org.eclipse.cdt.qt.ui.tests/.classpath b/qt/org.eclipse.cdt.qt.ui.tests/.classpath
index eca7bdba8f0..a42a828e04a 100644
--- a/qt/org.eclipse.cdt.qt.ui.tests/.classpath
+++ b/qt/org.eclipse.cdt.qt.ui.tests/.classpath
@@ -1,7 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="src" path="src"/>
+ <classpathentry kind="src" path="src">
+ <attributes>
+ <attribute name="test" value="true"/>
+ </attributes>
+ </classpathentry>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/qt/org.eclipse.cdt.qt.ui.tests/.settings/org.eclipse.core.resources.prefs b/qt/org.eclipse.cdt.qt.ui.tests/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/qt/org.eclipse.cdt.qt.ui.tests/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/qt/org.eclipse.cdt.qt.ui.tests/.settings/org.eclipse.jdt.core.prefs b/qt/org.eclipse.cdt.qt.ui.tests/.settings/org.eclipse.jdt.core.prefs
index ad05599159f..5b1c443114d 100644
--- a/qt/org.eclipse.cdt.qt.ui.tests/.settings/org.eclipse.jdt.core.prefs
+++ b/qt/org.eclipse.cdt.qt.ui.tests/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/qt/org.eclipse.cdt.qt.ui.tests/.settings/org.eclipse.jdt.ui.prefs b/qt/org.eclipse.cdt.qt.ui.tests/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/qt/org.eclipse.cdt.qt.ui.tests/.settings/org.eclipse.jdt.ui.prefs
+++ b/qt/org.eclipse.cdt.qt.ui.tests/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/qt/org.eclipse.cdt.qt.ui.tests/META-INF/MANIFEST.MF b/qt/org.eclipse.cdt.qt.ui.tests/META-INF/MANIFEST.MF
index 59c844e842b..f717b9f9003 100644
--- a/qt/org.eclipse.cdt.qt.ui.tests/META-INF/MANIFEST.MF
+++ b/qt/org.eclipse.cdt.qt.ui.tests/META-INF/MANIFEST.MF
@@ -19,6 +19,7 @@ Require-Bundle: org.eclipse.ui,
org.eclipse.ui.editors,
org.eclipse.search
Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Bundle-Vendor: %vendorName
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Bundle-Vendor: %providerName
Automatic-Module-Name: org.eclipse.cdt.qt.ui.tests
+Bundle-Localization: plugin
diff --git a/qt/org.eclipse.cdt.qt.ui.tests/about.html b/qt/org.eclipse.cdt.qt.ui.tests/about.html
index 164f781a8fd..b3134865230 100644
--- a/qt/org.eclipse.cdt.qt.ui.tests/about.html
+++ b/qt/org.eclipse.cdt.qt.ui.tests/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/qt/org.eclipse.cdt.qt.ui.tests/src/org/eclipse/cdt/qt/tests/BaseQtTestCase.java b/qt/org.eclipse.cdt.qt.ui.tests/src/org/eclipse/cdt/qt/tests/BaseQtTestCase.java
index bc3c86e3278..a1a0fd25721 100644
--- a/qt/org.eclipse.cdt.qt.ui.tests/src/org/eclipse/cdt/qt/tests/BaseQtTestCase.java
+++ b/qt/org.eclipse.cdt.qt.ui.tests/src/org/eclipse/cdt/qt/tests/BaseQtTestCase.java
@@ -29,7 +29,7 @@ import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.NullProgressMonitor;
-public class BaseQtTestCase extends BaseTestCase {
+public abstract class BaseQtTestCase extends BaseTestCase {
// TODO There is a problem with the unit test framework where it sometimes will not wait
// long enough for the index to be updated. For now mask this problem by stopping
diff --git a/qt/org.eclipse.cdt.qt.ui/.classpath b/qt/org.eclipse.cdt.qt.ui/.classpath
index eca7bdba8f0..e801ebfb468 100644
--- a/qt/org.eclipse.cdt.qt.ui/.classpath
+++ b/qt/org.eclipse.cdt.qt.ui/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/qt/org.eclipse.cdt.qt.ui/.project b/qt/org.eclipse.cdt.qt.ui/.project
index 83277e4b223..6a41956f43e 100644
--- a/qt/org.eclipse.cdt.qt.ui/.project
+++ b/qt/org.eclipse.cdt.qt.ui/.project
@@ -20,9 +20,15 @@
<arguments>
</arguments>
</buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.pde.PluginNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
</natures>
</projectDescription>
diff --git a/qt/org.eclipse.cdt.qt.ui/.settings/org.eclipse.core.resources.prefs b/qt/org.eclipse.cdt.qt.ui/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/qt/org.eclipse.cdt.qt.ui/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/qt/org.eclipse.cdt.qt.ui/.settings/org.eclipse.jdt.core.prefs b/qt/org.eclipse.cdt.qt.ui/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/qt/org.eclipse.cdt.qt.ui/.settings/org.eclipse.jdt.core.prefs
+++ b/qt/org.eclipse.cdt.qt.ui/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/qt/org.eclipse.cdt.qt.ui/.settings/org.eclipse.jdt.ui.prefs b/qt/org.eclipse.cdt.qt.ui/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/qt/org.eclipse.cdt.qt.ui/.settings/org.eclipse.jdt.ui.prefs
+++ b/qt/org.eclipse.cdt.qt.ui/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/qt/org.eclipse.cdt.qt.ui/META-INF/MANIFEST.MF b/qt/org.eclipse.cdt.qt.ui/META-INF/MANIFEST.MF
index 405d02ca0ee..21b6b740821 100644
--- a/qt/org.eclipse.cdt.qt.ui/META-INF/MANIFEST.MF
+++ b/qt/org.eclipse.cdt.qt.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.qt.ui;singleton:=true
-Bundle-Version: 2.0.100.qualifier
+Bundle-Version: 2.1.500.qualifier
Bundle-Activator: org.eclipse.cdt.internal.qt.ui.Activator
Bundle-Vendor: %providerName
Bundle-Localization: plugin
@@ -24,7 +24,7 @@ Require-Bundle: org.eclipse.core.runtime,
org.eclipse.tools.templates.freemarker;bundle-version="1.0.0",
org.eclipse.cdt.launch;bundle-version="9.1.0",
org.eclipse.cdt.debug.core;bundle-version="8.1.0"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-ActivationPolicy: lazy
Export-Package: org.eclipse.cdt.internal.qt.ui.assist;x-friends:="org.eclipse.cdt.qt.ui.tests",
org.eclipse.cdt.internal.qt.ui.pro.parser;x-friends:="org.eclipse.cdt.qt.ui.tests"
diff --git a/qt/org.eclipse.cdt.qt.ui/about.html b/qt/org.eclipse.cdt.qt.ui/about.html
index 164f781a8fd..b3134865230 100644
--- a/qt/org.eclipse.cdt.qt.ui/about.html
+++ b/qt/org.eclipse.cdt.qt.ui/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/qt/org.eclipse.cdt.qt.ui/about.ini b/qt/org.eclipse.cdt.qt.ui/about.ini
new file mode 100644
index 00000000000..e07a7bb377e
--- /dev/null
+++ b/qt/org.eclipse.cdt.qt.ui/about.ini
@@ -0,0 +1,24 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%blurb
+
+# Property "windowImage" contains path to window icon (16x16)
+# needed for primary features only
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=cdt_logo_icon32.png
+
+# Property "aboutImage" contains path to product image (500x330 or 115x164)
+# needed for primary features only
+
+# Property "appName" contains name of the application (translated)
+# needed for primary features only
+
+# Property "welcomePerspective" contains the id of the perspective in which the
+# welcome page is to be opened.
+# optional
diff --git a/qt/org.eclipse.cdt.qt.ui/about.mappings b/qt/org.eclipse.cdt.qt.ui/about.mappings
new file mode 100644
index 00000000000..936a8039c3e
--- /dev/null
+++ b/qt/org.eclipse.cdt.qt.ui/about.mappings
@@ -0,0 +1,9 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+# The following should contain the build version.
+# e.g. "0=20200106-1728"
+# This value will be added automatically via the build scripts
+0=${buildId}
diff --git a/qt/org.eclipse.cdt.qt.ui/about.properties b/qt/org.eclipse.cdt.qt.ui/about.properties
new file mode 100644
index 00000000000..2b4cb93d2bf
--- /dev/null
+++ b/qt/org.eclipse.cdt.qt.ui/about.properties
@@ -0,0 +1,32 @@
+###############################################################################
+# Copyright (c) 2013, 2022 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+# about.properties
+# contains externalized strings for about.ini
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# fill-ins are supplied by about.mappings
+# This file should be translated.
+# NOTE TO TRANSLATOR: Please do not translate the featureVersion variable.
+
+
+blurb=C/C++ Qt Support - Preview\n\
+\n\
+Version: {featureVersion}\n\
+Build id: {0}\n\
+\n\
+Copyright (c) 2013, 2022 Contributors to the Eclipse Foundation
+\n\
+See the NOTICE file(s) distributed with this work for additional\n\
+information regarding copyright ownership.\n\
+\n\
+Visit http://www.eclipse.org/cdt
diff --git a/qt/org.eclipse.cdt.qt.ui/build.properties b/qt/org.eclipse.cdt.qt.ui/build.properties
index 9bf79af851e..f05ff10d249 100644
--- a/qt/org.eclipse.cdt.qt.ui/build.properties
+++ b/qt/org.eclipse.cdt.qt.ui/build.properties
@@ -5,5 +5,9 @@ bin.includes = META-INF/,\
plugin.xml,\
plugin.properties,\
about.html,\
- icons/
+ icons/,\
+ cdt_logo_icon32.png,\
+ about.properties,\
+ about.mappings,\
+ about.ini
src.includes = about.html
diff --git a/qt/org.eclipse.cdt.qt.ui/cdt_logo_icon32.png b/qt/org.eclipse.cdt.qt.ui/cdt_logo_icon32.png
new file mode 100644
index 00000000000..470ca81b327
--- /dev/null
+++ b/qt/org.eclipse.cdt.qt.ui/cdt_logo_icon32.png
Binary files differ
diff --git a/qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/QObjectConnectCompletion.java b/qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/QObjectConnectCompletion.java
index 68293764986..c3d8dffb175 100644
--- a/qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/QObjectConnectCompletion.java
+++ b/qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/QObjectConnectCompletion.java
@@ -81,8 +81,8 @@ public class QObjectConnectCompletion {
public final String display;
public final int cursorOffset;
- public static final Data SIGNAL = new Data("SIGNAL()", "SIGNAL(a)", -1);
- public static final Data SLOT = new Data("SLOT()", "SLOT(a)", -1);
+ public static final Data SIGNAL = new Data("SIGNAL()", "SIGNAL(a)", -1); //$NON-NLS-1$ //$NON-NLS-2$
+ public static final Data SLOT = new Data("SLOT()", "SLOT(a)", -1); //$NON-NLS-1$ //$NON-NLS-2$
public Data(String replacement) {
this(replacement, replacement, 0);
@@ -228,7 +228,7 @@ public class QObjectConnectCompletion {
int parseOffset = context.getParseOffset();
int invocationOffset = context.getInvocationOffset();
- String unparsed = "";
+ String unparsed = ""; //$NON-NLS-1$
try {
unparsed = context.getDocument().get(parseOffset, invocationOffset - parseOffset);
} catch (BadLocationException e) {
diff --git a/qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/QObjectDeclarationCompletion.java b/qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/QObjectDeclarationCompletion.java
index 473afce493c..c75451a21c2 100644
--- a/qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/QObjectDeclarationCompletion.java
+++ b/qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/QObjectDeclarationCompletion.java
@@ -32,7 +32,7 @@ import org.eclipse.ui.texteditor.ITextEditor;
@SuppressWarnings("restriction")
public class QObjectDeclarationCompletion {
- private static final String TEMPLATE = "class ${name} : public ${QObject}\n{\nQ_OBJECT\n\n${cursor}\n};";
+ private static final String TEMPLATE = "class ${name} : public ${QObject}\n{\nQ_OBJECT\n\n${cursor}\n};"; //$NON-NLS-1$
private final static TranslationUnitContextType context;
static {
@@ -44,7 +44,7 @@ public class QObjectDeclarationCompletion {
IASTName name) {
String token = name.getLastName().toString();
- if (token.isEmpty() || !"class".startsWith(token))
+ if (token.isEmpty() || !"class".startsWith(token)) //$NON-NLS-1$
return null;
Position position = getPosition(ctx);
diff --git a/qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/QPropertyCompletion.java b/qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/QPropertyCompletion.java
index d32bb50e356..bc39fa98868 100644
--- a/qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/QPropertyCompletion.java
+++ b/qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/QPropertyCompletion.java
@@ -30,10 +30,10 @@ import org.eclipse.jface.text.templates.TemplateContextType;
@SuppressWarnings("restriction")
public class QPropertyCompletion {
- private static final String CONTEXT_ID = Activator.PLUGIN_ID + ".proposal.Q_PROPERTY";
+ private static final String CONTEXT_ID = Activator.PLUGIN_ID + ".proposal.Q_PROPERTY"; //$NON-NLS-1$
- private static final Template QPropertyTemplate = new Template("Q_PROPERTY", "Q_PROPERTY declaration", CONTEXT_ID,
- "Q_PROPERTY( ${type} ${name} READ ${accessor} ${cursor} )", true);
+ private static final Template QPropertyTemplate = new Template("Q_PROPERTY", "Q_PROPERTY declaration", CONTEXT_ID, //$NON-NLS-1$ //$NON-NLS-2$
+ "Q_PROPERTY( ${type} ${name} READ ${accessor} ${cursor} )", true); //$NON-NLS-1$
public static Collection<ICompletionProposal> getAttributeProposals(
ICEditorContentAssistInvocationContext context) {
diff --git a/qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/assist/QPropertyAttributeProposal.java b/qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/assist/QPropertyAttributeProposal.java
index ea0b2865fd0..133a5e09c38 100644
--- a/qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/assist/QPropertyAttributeProposal.java
+++ b/qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/assist/QPropertyAttributeProposal.java
@@ -89,8 +89,8 @@ public class QPropertyAttributeProposal {
case SCRIPTABLE:
case STORED:
case USER:
- return Arrays.asList(new QPropertyAttributeProposal("true", IMethodAttribute.BaseRelevance + 11),
- new QPropertyAttributeProposal("false", IMethodAttribute.BaseRelevance + 10));
+ return Arrays.asList(new QPropertyAttributeProposal("true", IMethodAttribute.BaseRelevance + 11), //$NON-NLS-1$
+ new QPropertyAttributeProposal("false", IMethodAttribute.BaseRelevance + 10)); //$NON-NLS-1$
// propose appropriate methods for method-based attributes
case READ:
@@ -200,7 +200,7 @@ public class QPropertyAttributeProposal {
sig.append(' ');
if (includeClassname) {
sig.append(method.getOwner().getName());
- sig.append("::");
+ sig.append("::"); //$NON-NLS-1$
}
sig.append(method.getName());
sig.append('(');
@@ -209,7 +209,7 @@ public class QPropertyAttributeProposal {
if (first)
first = false;
else
- sig.append(", ");
+ sig.append(", "); //$NON-NLS-1$
String defValue = null;
if (param instanceof CPPParameter) {
@@ -299,12 +299,12 @@ public class QPropertyAttributeProposal {
return BaseRelevance + 20;
// accessor with "get" prefix is the 2nd highest rank
- if (methodName.equalsIgnoreCase("get" + propertyName))
+ if (methodName.equalsIgnoreCase("get" + propertyName)) //$NON-NLS-1$
return BaseRelevance + 19;
// method names that include the property name anywhere are the next
// most relevant
- if (methodName.matches(".*(?i)" + propertyName + ".*"))
+ if (methodName.matches(".*(?i)" + propertyName + ".*")) //$NON-NLS-1$ //$NON-NLS-2$
return BaseRelevance + 18;
// otherwise return default relevance
@@ -357,12 +357,12 @@ public class QPropertyAttributeProposal {
return BaseRelevance + 20;
// accessor with "get" prefix is the 2nd highest rank
- if (methodName.equalsIgnoreCase("set" + propertyName))
+ if (methodName.equalsIgnoreCase("set" + propertyName)) //$NON-NLS-1$
return BaseRelevance + 19;
// method names that include the property name anywhere are the next
// most relevant
- if (methodName.matches(".*(?i)" + propertyName + ".*"))
+ if (methodName.matches(".*(?i)" + propertyName + ".*")) //$NON-NLS-1$ //$NON-NLS-2$
return BaseRelevance + 18;
// otherwise return default relevance
@@ -408,12 +408,12 @@ public class QPropertyAttributeProposal {
return 0;
// accessor with "reet" prefix is the most relevant
- if (methodName.equalsIgnoreCase("reset" + propertyName))
+ if (methodName.equalsIgnoreCase("reset" + propertyName)) //$NON-NLS-1$
return BaseRelevance + 20;
// method names that include the property name anywhere are the next
// most relevant
- if (methodName.matches(".*(?i)" + propertyName + ".*"))
+ if (methodName.matches(".*(?i)" + propertyName + ".*")) //$NON-NLS-1$ //$NON-NLS-2$
return BaseRelevance + 18;
// otherwise return default relevance
diff --git a/qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/assist/QPropertyExpansion.java b/qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/assist/QPropertyExpansion.java
index 4b7c1519991..2e49be707d7 100644
--- a/qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/assist/QPropertyExpansion.java
+++ b/qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/assist/QPropertyExpansion.java
@@ -73,15 +73,15 @@ public class QPropertyExpansion {
private static final Pattern TYPENAME_REGEX;
static {
StringBuilder regexBuilder = new StringBuilder();
- regexBuilder.append("^(?:Q_PROPERTY\\s*\\()?\\s*(.*?)(\\s+)(?:");
+ regexBuilder.append("^(?:Q_PROPERTY\\s*\\()?\\s*(.*?)(\\s+)(?:"); //$NON-NLS-1$
for (IQProperty.Attribute attr : IQProperty.Attribute.values()) {
if (attr.ordinal() > 0)
regexBuilder.append('|');
- regexBuilder.append("(?:");
+ regexBuilder.append("(?:"); //$NON-NLS-1$
regexBuilder.append(attr.identifier);
- regexBuilder.append(")");
+ regexBuilder.append(")"); //$NON-NLS-1$
}
- regexBuilder.append(").*$");
+ regexBuilder.append(").*$"); //$NON-NLS-1$
TYPENAME_REGEX = Pattern.compile(regexBuilder.toString());
}
@@ -295,12 +295,12 @@ public class QPropertyExpansion {
// Otherwise create a template where the content depends on the type of the attribute's parameter.
String display = attribute.identifier + ' ' + attribute.paramName;
String replacement = attribute.identifier;
- if ("bool".equals(attribute.paramName))
- replacement += " ${true}";
- else if ("int".equals(attribute.paramName))
- replacement += " ${0}";
+ if ("bool".equals(attribute.paramName)) //$NON-NLS-1$
+ replacement += " ${true}"; //$NON-NLS-1$
+ else if ("int".equals(attribute.paramName)) //$NON-NLS-1$
+ replacement += " ${0}"; //$NON-NLS-1$
else if (attribute.paramName != null)
- replacement += " ${" + attribute.paramName + '}';
+ replacement += " ${" + attribute.paramName + '}'; //$NON-NLS-1$
return templateProposal(contextId, context, display, replacement, relevance);
}
@@ -308,7 +308,7 @@ public class QPropertyExpansion {
private static ICompletionProposal templateProposal(String contextId,
ICEditorContentAssistInvocationContext context, String display, String replacement, int relevance) {
- Template template = new Template(display, "Q_PROPERTY declaration parameter", contextId, replacement, true);
+ Template template = new Template(display, "Q_PROPERTY declaration parameter", contextId, replacement, true); //$NON-NLS-1$
TemplateContextType ctxType = new CContextType();
ctxType.setId(contextId);
@@ -366,10 +366,10 @@ public class QPropertyExpansion {
}
if (prefix != null) {
- if (attr.identifier.startsWith(prefix) && (!expansion.matches(".*\\s+" + attr.identifier + "\\s+.*")
+ if (attr.identifier.startsWith(prefix) && (!expansion.matches(".*\\s+" + attr.identifier + "\\s+.*") //$NON-NLS-1$ //$NON-NLS-2$
|| attr.identifier.equals(currIdentifier.ident)))
unspecifiedAttributes.add(new Attribute(attr));
- } else if (!expansion.matches(".*\\s+" + attr.identifier + "\\s+.*"))
+ } else if (!expansion.matches(".*\\s+" + attr.identifier + "\\s+.*")) //$NON-NLS-1$ //$NON-NLS-2$
unspecifiedAttributes.add(new Attribute(attr));
}
@@ -417,7 +417,7 @@ public class QPropertyExpansion {
if (cursor >= expansion.length())
return expansion + '|';
if (cursor < 0)
- return "|" + expansion;
+ return "|" + expansion; //$NON-NLS-1$
return expansion.substring(0, cursor) + '|' + expansion.substring(cursor);
}
diff --git a/qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/editor/QMLContentAssistProcessor.java b/qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/editor/QMLContentAssistProcessor.java
index 1a6fa9c1d3a..1d7dde76579 100644
--- a/qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/editor/QMLContentAssistProcessor.java
+++ b/qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/editor/QMLContentAssistProcessor.java
@@ -41,6 +41,9 @@ public class QMLContentAssistProcessor implements IContentAssistProcessor {
@Override
public ICompletionProposal[] computeCompletionProposals(ITextViewer viewer, int offset) {
+ if (analyzer == null || !analyzer.isSupported()) {
+ return NO_COMPLETIONS;
+ }
IDocument document = viewer.getDocument();
String prefix = lastWord(document, offset);
// Save the file
diff --git a/qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/editor/QMLEditor.java b/qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/editor/QMLEditor.java
index a076895130b..5a501835227 100644
--- a/qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/editor/QMLEditor.java
+++ b/qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/editor/QMLEditor.java
@@ -81,13 +81,15 @@ public class QMLEditor extends TextEditor {
String fileName = new File(fileInput.getFile().getLocationURI()).getAbsolutePath();
IDocument document = getSourceViewer().getDocument();
- try {
- analyzer.deleteFile(fileName);
- analyzer.addFile(fileName, document.get());
- } catch (NoSuchMethodException e) {
- Activator.log(e);
- } catch (ScriptException e) {
- Activator.log(e);
+ if (analyzer != null && analyzer.isSupported()) {
+ try {
+ analyzer.deleteFile(fileName);
+ analyzer.addFile(fileName, document.get());
+ } catch (NoSuchMethodException e) {
+ Activator.log(e);
+ } catch (ScriptException e) {
+ Activator.log(e);
+ }
}
super.doSave(progressMonitor);
}
diff --git a/qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/editor/QMLHyperlink.java b/qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/editor/QMLHyperlink.java
index 49f5c624bf4..3b76d00a591 100644
--- a/qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/editor/QMLHyperlink.java
+++ b/qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/editor/QMLHyperlink.java
@@ -61,6 +61,10 @@ public class QMLHyperlink implements IHyperlink {
@Override
public void open() {
IQMLAnalyzer analyzer = Activator.getService(IQMLAnalyzer.class);
+ if (analyzer == null || !analyzer.isSupported()) {
+ return;
+ }
+
try {
IDocument document = viewer.getDocument();
String selected = document.get(region.getOffset(), region.getLength());
diff --git a/qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/editor/QMLHyperlinkDetector.java b/qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/editor/QMLHyperlinkDetector.java
index de8a3cb723f..a5174e6d0eb 100644
--- a/qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/editor/QMLHyperlinkDetector.java
+++ b/qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/editor/QMLHyperlinkDetector.java
@@ -10,6 +10,8 @@
*******************************************************************************/
package org.eclipse.cdt.internal.qt.ui.editor;
+import org.eclipse.cdt.internal.qt.core.Activator;
+import org.eclipse.cdt.qt.core.IQMLAnalyzer;
import org.eclipse.jface.text.IRegion;
import org.eclipse.jface.text.ITextViewer;
import org.eclipse.jface.text.hyperlink.AbstractHyperlinkDetector;
@@ -20,6 +22,11 @@ public class QMLHyperlinkDetector extends AbstractHyperlinkDetector {
@Override
public IHyperlink[] detectHyperlinks(ITextViewer textViewer, IRegion region, boolean canShowMultipleHyperlinks) {
+ IQMLAnalyzer analyzer = Activator.getService(IQMLAnalyzer.class);
+ if (analyzer == null || !analyzer.isSupported()) {
+ return null;
+ }
+
// TODO is length of region ever > 0?
IRegion wordRegion = QMLEditor.findWord(textViewer.getDocument(), region.getOffset());
if (wordRegion != null) {
diff --git a/qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/resources/QMLTernFileUpdateJob.java b/qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/resources/QMLTernFileUpdateJob.java
index c0c6c7cfaaa..26eac6509c1 100644
--- a/qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/resources/QMLTernFileUpdateJob.java
+++ b/qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/resources/QMLTernFileUpdateJob.java
@@ -42,6 +42,9 @@ public class QMLTernFileUpdateJob extends Job {
@Override
protected IStatus run(IProgressMonitor monitor) {
+ if (analyzer == null || !analyzer.isSupported()) {
+ return Status.OK_STATUS;
+ }
for (IResourceDelta delta : deltaList) {
IResource resource = delta.getResource();
String fileName = resource.getFullPath().toString().substring(1);
diff --git a/qt/pom.xml b/qt/pom.xml
index 5f366ce24e6..d00f0337df4 100644
--- a/qt/pom.xml
+++ b/qt/pom.xml
@@ -1,4 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2017, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
@@ -7,7 +17,7 @@
<parent>
<groupId>org.eclipse.cdt</groupId>
<artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
+ <version>10.7.0-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.cdt.qt-parent</artifactId>
diff --git a/releng/CDT.setup b/releng/CDT.setup
index 9430d61d0b3..4213c85489c 100644
--- a/releng/CDT.setup
+++ b/releng/CDT.setup
@@ -31,8 +31,12 @@
name="org.eclipse.jdt.feature.group"/>
<requirement
name="org.eclipse.pde.feature.group"/>
+ <requirement
+ name="org.sonatype.tycho.m2e.feature.feature.group"/>
<repository
url="http://download.eclipse.org/technology/swtbot/releases/latest"/>
+ <repository
+ url="https://repo1.maven.org/maven2/.m2e/connectors/m2eclipse-tycho/0.9.0/N/LATEST/"/>
<description>Install the tools needed in the IDE to work with the source code for ${scope.project.label}</description>
</setupTask>
<setupTask
@@ -45,113 +49,235 @@
<setupTask
xsi:type="setup:ResourceCreationTask"
excludedTriggers="STARTUP MANUAL"
- content="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?>&#xD;&#xA;&lt;section name=&quot;Workbench&quot;>&#xD;&#xA;&#x9;&lt;section name=&quot;org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart&quot;>&#xD;&#xA;&#x9;&#x9;&lt;item value=&quot;true&quot; key=&quot;group_libraries&quot;/>&#xD;&#xA;&#x9;&#x9;&lt;item value=&quot;false&quot; key=&quot;linkWithEditor&quot;/>&#xD;&#xA;&#x9;&#x9;&lt;item value=&quot;2&quot; key=&quot;layout&quot;/>&#xD;&#xA;&#x9;&#x9;&lt;item value=&quot;2&quot; key=&quot;rootMode&quot;/>&#xD;&#xA;&#x9;&#x9;&lt;item value=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;#x0D;&amp;#x0A;&amp;lt;packageExplorer configured=&amp;quot;true&amp;quot; group_libraries=&amp;quot;1&amp;quot; layout=&amp;quot;2&amp;quot; linkWithEditor=&amp;quot;0&amp;quot; rootMode=&amp;quot;2&amp;quot; sortWorkingSets=&amp;quot;false&amp;quot; workingSetName=&amp;quot;&amp;quot;&amp;gt;&amp;#x0D;&amp;#x0A;&amp;lt;localWorkingSetManager&amp;gt;&amp;#x0D;&amp;#x0A;&amp;lt;workingSet editPageId=&amp;quot;org.eclipse.jdt.internal.ui.OthersWorkingSet&amp;quot; factoryID=&amp;quot;org.eclipse.ui.internal.WorkingSetFactory&amp;quot; id=&amp;quot;1382792884467_1&amp;quot; label=&amp;quot;Other Projects&amp;quot; name=&amp;quot;Other Projects&amp;quot;/&amp;gt;&amp;#x0D;&amp;#x0A;&amp;lt;/localWorkingSetManager&amp;gt;&amp;#x0D;&amp;#x0A;&amp;lt;activeWorkingSet workingSetName=&amp;quot;Other Projects&amp;quot;/&amp;gt;&amp;#x0D;&amp;#x0A;&amp;lt;allWorkingSets workingSetName=&amp;quot;Other Projects&amp;quot;/&amp;gt;&amp;#x0D;&amp;#x0A;&amp;lt;/packageExplorer&amp;gt;&quot; key=&quot;memento&quot;/>&#xD;&#xA;&#x9;&lt;/section>&#xD;&#xA;&lt;/section>&#xD;&#xA;"
targetURL="${workspace.location|uri}/.metadata/.plugins/org.eclipse.jdt.ui/dialog_settings.xml"
encoding="UTF-8">
<description>Initialize JDT's package explorer to show working sets as its root objects</description>
+ <content>
+ &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?>
+ &lt;section name=&quot;Workbench&quot;>
+ &lt;section name=&quot;org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart&quot;>
+ &lt;item value=&quot;true&quot; key=&quot;group_libraries&quot;/>
+ &lt;item value=&quot;false&quot; key=&quot;linkWithEditor&quot;/>
+ &lt;item value=&quot;2&quot; key=&quot;layout&quot;/>
+ &lt;item value=&quot;2&quot; key=&quot;rootMode&quot;/>
+ &lt;item value=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;#x0D;&amp;#x0A;&amp;lt;packageExplorer configured=&amp;quot;true&amp;quot; group_libraries=&amp;quot;1&amp;quot; layout=&amp;quot;2&amp;quot; linkWithEditor=&amp;quot;0&amp;quot; rootMode=&amp;quot;2&amp;quot; sortWorkingSets=&amp;quot;false&amp;quot; workingSetName=&amp;quot;&amp;quot;&amp;gt;&amp;#x0D;&amp;#x0A;&amp;lt;localWorkingSetManager&amp;gt;&amp;#x0D;&amp;#x0A;&amp;lt;workingSet editPageId=&amp;quot;org.eclipse.jdt.internal.ui.OthersWorkingSet&amp;quot; factoryID=&amp;quot;org.eclipse.ui.internal.WorkingSetFactory&amp;quot; id=&amp;quot;1382792884467_1&amp;quot; label=&amp;quot;Other Projects&amp;quot; name=&amp;quot;Other Projects&amp;quot;/&amp;gt;&amp;#x0D;&amp;#x0A;&amp;lt;/localWorkingSetManager&amp;gt;&amp;#x0D;&amp;#x0A;&amp;lt;activeWorkingSet workingSetName=&amp;quot;Other Projects&amp;quot;/&amp;gt;&amp;#x0D;&amp;#x0A;&amp;lt;allWorkingSets workingSetName=&amp;quot;Other Projects&amp;quot;/&amp;gt;&amp;#x0D;&amp;#x0A;&amp;lt;/packageExplorer&amp;gt;&quot; key=&quot;memento&quot;/>
+ &lt;/section>
+ &lt;/section>
+
+ </content>
</setupTask>
<setupTask
xsi:type="jdt:JRETask"
- version="JavaSE-1.8"
- location="${jre.location-1.8}">
+ version="JavaSE-11"
+ location="${jre.location-11}">
<description>Define the JRE needed to compile and run the Java projects of ${scope.project.label}</description>
</setupTask>
<setupTask
xsi:type="setup:VariableTask"
name="eclipse.target.platform"
- defaultValue="Photon"
+ defaultValue="${eclipse.target.platform.latest}"
storageURI="scope://Workspace"/>
+ <setupTask
+ xsi:type="setup.targlets:TargletTask"
+ id="api.baseline.targlet"
+ targetName="Modular API Baseline Target"
+ activateTarget="false">
+ <targlet
+ name="${scope.project.label}"
+ activeRepositoryList="CDT Latest Released">
+ <requirement
+ name="org.eclipse.cdt.autotools.feature.group"/>
+ <requirement
+ name="org.eclipse.cdt.build.crossgcc.feature.group"/>
+ <requirement
+ name="org.eclipse.cdt.cmake.feature.group"/>
+ <requirement
+ name="org.eclipse.cdt.core.autotools.feature.group"/>
+ <requirement
+ name="org.eclipse.cdt.debug.dap.feature.group"/>
+ <requirement
+ name="org.eclipse.cdt.debug.dap.gdbjtag.feature.group"/>
+ <requirement
+ name="org.eclipse.cdt.debug.gdbjtag.feature.group"/>
+ <requirement
+ name="org.eclipse.cdt.debug.standalone.feature.group"/>
+ <requirement
+ name="org.eclipse.cdt.debug.ui.memory.feature.group"/>
+ <requirement
+ name="org.eclipse.cdt.docker.launcher.feature.group"/>
+ <requirement
+ name="org.eclipse.cdt.feature.group"/>
+ <requirement
+ name="org.eclipse.cdt.gdb.feature.group"/>
+ <requirement
+ name="org.eclipse.cdt.gnu.build.feature.group"/>
+ <requirement
+ name="org.eclipse.cdt.gnu.debug.feature.group"/>
+ <requirement
+ name="org.eclipse.cdt.gnu.dsf.feature.group"/>
+ <requirement
+ name="org.eclipse.cdt.gnu.multicorevisualizer.feature.group"/>
+ <requirement
+ name="org.eclipse.cdt.examples.dsf.feature.group"/>
+ <requirement
+ name="org.eclipse.cdt.launch.remote.feature.group"/>
+ <requirement
+ name="org.eclipse.cdt.launch.serial.feature.feature.group"/>
+ <requirement
+ name="org.eclipse.cdt.llvm.dsf.lldb.feature.group"/>
+ <requirement
+ name="org.eclipse.cdt.managedbuilder.llvm.feature.group"/>
+ <requirement
+ name="org.eclipse.cdt.meson.feature.group"/>
+ <requirement
+ name="org.eclipse.cdt.msw.feature.group"/>
+ <requirement
+ name="org.eclipse.cdt.native.feature.group"/>
+ <requirement
+ name="org.eclipse.cdt.platform.feature.group"/>
+ <requirement
+ name="org.eclipse.cdt.qt.feature.group"/>
+ <requirement
+ name="org.eclipse.cdt.sdk.feature.group"/>
+ <requirement
+ name="org.eclipse.cdt.testsrunner.feature.feature.group"/>
+ <requirement
+ name="org.eclipse.cdt.visualizer.feature.group"/>
+ <requirement
+ name="org.eclipse.launchbar.feature.group"/>
+ <requirement
+ name="org.eclipse.launchbar.remote.feature.group"/>
+ <requirement
+ name="org.eclipse.tm.terminal.connector.cdtserial.feature.feature.group"/>
+ <requirement
+ name="org.eclipse.tm.terminal.connector.local.feature.feature.group"/>
+ <requirement
+ name="org.eclipse.tm.terminal.connector.remote.feature.feature.group"/>
+ <requirement
+ name="org.eclipse.tm.terminal.connector.ssh.feature.feature.group"/>
+ <requirement
+ name="org.eclipse.tm.terminal.connector.telnet.feature.feature.group"/>
+ <requirement
+ name="org.eclipse.tm.terminal.control.feature.feature.group"/>
+ <requirement
+ name="org.eclipse.tm.terminal.feature.feature.group"/>
+ <requirement
+ name="org.eclipse.tm.terminal.view.feature.feature.group"/>
+ <repositoryList
+ name="CDT Latest Released">
+ <repository
+ url="https://download.eclipse.org/eclipse/updates/4.23/R-4.23-202203080310"/>
+ <repository
+ url="https://download.eclipse.org/egit/updates-6.1/"/>
+ <repository
+ url="https://download.eclipse.org/linuxtools/update-docker-5.6.0/"/>
+ <repository
+ url="https://download.eclipse.org/lsp4e/releases/0.20.2/"/>
+ <repository
+ url="https://download.eclipse.org/modeling/emf/emf/builds/release/2.28/"/>
+ <repository
+ url="https://download.eclipse.org/mylyn/docs/releases/3.0.42/"/>
+ <repository
+ url="https://download.eclipse.org/mylyn/drops/3.25.2/v20200831-1956"/>
+ <repository
+ url="https://download.eclipse.org/tm4e/releases/0.4.3/"/>
+ <repository
+ url="https://download.eclipse.org/tools/cdt/releases/10.6/cdt-10.6.0/">
+ <annotation>
+ <detail
+ key="description">
+ <value>
+ OMG! We have circular dependency that involves 'java.package; org.eclipse.cdt.utils.pty 0.0.0'
+ but it gets resolved here as we have CDT repo below.
+ </value>
+ </detail>
+ </annotation>
+ </repository>
+ <repository
+ url="https://download.eclipse.org/tools/orbit/downloads/drops/R20220302172233/repository/"/>
+ <repository
+ url="https://download.eclipse.org/tools/ptp/builds/remote/3.0/2021-09/"/>
+ </repositoryList>
+ </targlet>
+ </setupTask>
<stream name="master">
<setupTask
- xsi:type="pde:APIBaselineTask"
- id="baseline"
- name="CDT"
- version="9.7"
- location="${workspace.location/../api.baseline}"
- remoteURI="https://download.eclipse.org/tools/cdt/builds/9.7/cdt-9.7.0-simrel-2019-03-rc2a/cdt-9.7.0-simrel-2019-03-rc2a.zip"/>
- <setupTask
- xsi:type="git:GitCloneTask"
- id="git.clone.cdt"
- remoteURI="cdt/org.eclipse.cdt"
- checkoutBranch="master">
- <annotation
- source="http://www.eclipse.org/oomph/setup/InducedChoices">
- <detail
- key="inherit">
- <value>eclipse.git.gerrit.remoteURIs</value>
- </detail>
- <detail
- key="label">
- <value>${scope.project.label} Git or Gerrit Repository</value>
- </detail>
- <detail
- key="target">
- <value>remoteURI</value>
- </detail>
- </annotation>
- <description>CDT</description>
+ xsi:type="pde:APIBaselineFromTargetTask"
+ predecessor="api.baseline.targlet"
+ name="Modular API Baseline"
+ targetName="Modular API Baseline Target"
+ version="0.0.0">
+ <description>An API baseline based on the target platform named 'Modular API Baseline Target'</description>
</setupTask>
<setupTask
xsi:type="setup.targlets:TargletTask"
programArguments="-consolelog"
vmArguments="-Xms40m -Xmx512M -ea">
<targlet
- name="CDT"
- activeRepositoryList="${eclipse.target.platform}">
+ name="CDT">
<requirement
- name="org.eclipse.platform.feature.group"/>
+ name="org.eclipse.license.feature.group"/>
<requirement
- name="com.sun.xml.bind"/>
+ name="com.google.gson"/>
<requirement
- name="javax.activation"/>
+ name="com.sun.jna"
+ versionRange="5.8.0"/>
<requirement
- name="javax.xml.bind"/>
+ name="com.sun.jna.platform"
+ versionRange="5.8.0"/>
<requirement
- name="javax.xml.stream"/>
+ name="com.sun.xml.bind"
+ versionRange="2.3.3"/>
<requirement
- name="org.apache.log4j"/>
- <requirement
- name="org.apache.log4j.source"/>
+ name="jakarta.xml.bind"
+ versionRange="2.3.3"/>
<requirement
- name="org.apache.commons.compress"/>
+ name="javax.activation"
+ versionRange="1.2.2"/>
<requirement
- name="org.assertj"/>
+ name="javax.xml.stream"/>
<requirement
name="net.sourceforge.lpg.lpgjavaruntime"/>
<requirement
- name="org.junit"/>
+ name="org.antlr.runtime"/>
<requirement
- name="org.junit.source"/>
+ name="org.apache.commons.compress"/>
<requirement
- name="org.junit.jupiter.api"/>
+ name="org.apache.log4j"/>
<requirement
- name="org.junit.jupiter.api.source"/>
+ name="org.assertj"/>
<requirement
- name="org.mockito"/>
+ name="org.eclipse.egit.feature.group"/>
<requirement
- name="org.hamcrest"/>
+ name="org.eclipse.equinox.executable.feature.group"/>
<requirement
- name="org.hamcrest.core"/>
+ name="org.eclipse.jdt.annotation"/>
<requirement
- name="org.eclipse.swtbot.eclipse.feature.group"/>
+ name="org.eclipse.launchbar.feature.group"/>
<requirement
- name="org.eclipse.swtbot.feature.group"/>
+ name="org.eclipse.launchbar.remote.feature.group"/>
<requirement
- name="org.eclipse.swtbot.eclipse.test.junit.feature.group"/>
+ name="org.eclipse.linuxtools.docker.feature.feature.group"/>
<requirement
- name="org.eclipse.rse.feature.group"/>
+ name="org.eclipse.lsp4e"/>
<requirement
- name="org.eclipse.test.feature.group"/>
+ name="org.eclipse.lsp4e.debug"/>
+ <requirement
+ name="org.eclipse.remote.console.feature.group"/>
<requirement
name="org.eclipse.remote.feature.group"/>
<requirement
- name="org.eclipse.license.feature.group"/>
+ name="org.eclipse.remote.serial.feature.group"/>
<requirement
- name="com.google.gson"/>
+ name="org.eclipse.sdk.feature.group"/>
<requirement
- name="org.eclipse.remote.serial.feature.group"/>
+ name="org.eclipse.swtbot.eclipse.feature.group"/>
<requirement
- name="org.eclipse.remote.console.feature.group"/>
+ name="org.eclipse.swtbot.eclipse.test.junit.feature.group"/>
+ <requirement
+ name="org.eclipse.swtbot.feature.group"/>
+ <requirement
+ name="org.eclipse.test.feature.group"/>
<requirement
name="org.eclipse.tm.terminal.connector.cdtserial.feature.feature.group"/>
<requirement
@@ -159,68 +285,90 @@
<requirement
name="org.eclipse.tm.terminal.feature.feature.group"/>
<requirement
- name="org.eclipse.launchbar.feature.group"/>
- <requirement
- name="org.eclipse.launchbar.remote.feature.group"/>
- <requirement
- name="org.eclipse.linuxtools.docker.feature.feature.group"/>
+ name="org.eclipse.tm4e.feature.feature.group"/>
<requirement
name="org.freemarker"/>
<requirement
- name="org.bouncycastle.bcpkix"/>
- <requirement
- name="org.bouncycastle.bcprov"/>
+ name="org.hamcrest"/>
<requirement
- name="org.antlr.runtime"/>
+ name="org.hamcrest.core"/>
<requirement
- name="org.eclipse.tools.templates.freemarker"/>
+ name="org.junit"/>
<requirement
- name="org.eclipse.tools.templates.ui"/>
+ name="org.junit.jupiter.api"/>
<requirement
- name="org.eclipse.ui.trace"/>
+ name="org.mockito"/>
<requirement
- name="tm-feature.feature.group"/>
+ name="org.slf4j.impl.log4j12"/>
<requirement
- name="org.eclipse.lsp4e"/>
+ name="org.yaml.snakeyaml"/>
<requirement
- name="org.eclipse.epp.logging.aeri.feature.feature.group"/>
+ name="org.eclipse.unittest.ui"/>
<sourceLocator
rootFolder="${git.clone.cdt.location}"
locateNestedProjects="true"/>
- <repositoryList
- name="Photon">
+ <repositoryList>
<repository
- url="https://download.eclipse.org/tools/orbit/downloads/drops/R20190827152740/repository/"/>
+ url="https://download.eclipse.org/cbi/updates/license/"/>
<repository
- url="https://download.eclipse.org/technology/swtbot/releases/2.7.0/"/>
+ url="https://download.eclipse.org/eclipse/updates/4.22/R-4.22-202111241800/"/>
<repository
- url="https://download.eclipse.org/tools/ptp/builds/remote/3.0.1/"/>
+ url="https://download.eclipse.org/egit/updates/"/>
<repository
- url="https://download.eclipse.org/releases/2019-09/"/>
+ url="https://download.eclipse.org/linuxtools/updates-docker-nightly/"/>
<repository
- url="http://download.eclipse.org/cbi/updates/license"/>
+ url="https://download.eclipse.org/lsp4e/releases/0.20.2/"/>
<repository
- url="https://download.eclipse.org/eclipse/updates/4.13/R-4.13-201909161045/"/>
+ url="https://download.eclipse.org/modeling/emf/emf/builds/release/latest/"/>
<repository
- url="https://download.eclipse.org/tools/cdt/launchbar/2.4/launchbar-2.4.0-simrel-2019-09-m1/"/>
+ url="https://download.eclipse.org/mylyn/docs/releases/3.0.42/"/>
<repository
- url="http://download.eclipse.org/linuxtools/updates-docker-nightly-4.4/"/>
+ url="https://download.eclipse.org/mylyn/drops/3.25.2/v20200831-1956"/>
<repository
- url="https://download.eclipse.org/webtools/downloads/drops/R3.15.0/R-3.15.0-20190830034720/repository/"/>
+ url="https://download.eclipse.org/technology/swtbot/releases/3.1.0/"/>
<repository
- url="http://download.eclipse.org/technology/epp/logging/stable/"/>
+ url="https://download.eclipse.org/tm4e/releases/0.4.3/"/>
<repository
- url="http://download.eclipse.org/tm/terminal/updates/4.4milestones/"/>
+ url="https://download.eclipse.org/tools/cdt/releases/10.6/cdt-10.6.0/">
+ <annotation>
+ <detail
+ key="description">
+ <value>We explicitly have CDT in target platform so that developers can develop org.eclipse.cdt.core/ui without requiring all the projects from CDT in their workspace.</value>
+ </detail>
+ </annotation>
+ </repository>
<repository
- url="http://download.eclipse.org/tools/cdt/tools.templates/1.1/tools.template-1.1.1-simrel-2018-12a/"/>
+ url="https://download.eclipse.org/tools/orbit/downloads/drops/R20220302172233/repository/"/>
<repository
- url="https://download.eclipse.org/tm4e/releases/0.3.4/"/>
+ url="https://download.eclipse.org/tools/ptp/builds/remote/3.0/2021-09"/>
<repository
- url="https://download.eclipse.org/lsp4e/releases/0.11.0/"/>
+ url="https://download.eclipse.org/wildwebdeveloper/snapshots/"/>
</repositoryList>
</targlet>
</setupTask>
<setupTask
+ xsi:type="git:GitCloneTask"
+ id="git.clone.cdt"
+ remoteURI="cdt/org.eclipse.cdt"
+ checkoutBranch="master">
+ <annotation
+ source="http://www.eclipse.org/oomph/setup/InducedChoices">
+ <detail
+ key="inherit">
+ <value>eclipse.git.gerrit.remoteURIs</value>
+ </detail>
+ <detail
+ key="label">
+ <value>${scope.project.label} Git or Gerrit Repository</value>
+ </detail>
+ <detail
+ key="target">
+ <value>remoteURI</value>
+ </detail>
+ </annotation>
+ <description>CDT</description>
+ </setupTask>
+ <setupTask
xsi:type="projects:ProjectsImportTask">
<sourceLocator
rootFolder="${git.clone.cdt.location}"
diff --git a/releng/org.eclipse.cdt-feature/.project b/releng/org.eclipse.cdt-feature/.project
index 514cc100664..d5b49216e39 100644
--- a/releng/org.eclipse.cdt-feature/.project
+++ b/releng/org.eclipse.cdt-feature/.project
@@ -10,19 +10,8 @@
<arguments>
</arguments>
</buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.ManifestBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.SchemaBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.pde.FeatureNature</nature>
- <nature>org.eclipse.pde.PluginNature</nature>
</natures>
</projectDescription>
diff --git a/releng/org.eclipse.cdt-feature/.settings/org.eclipse.core.resources.prefs b/releng/org.eclipse.cdt-feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/releng/org.eclipse.cdt-feature/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/releng/org.eclipse.cdt-feature/feature.xml b/releng/org.eclipse.cdt-feature/feature.xml
index 1fc96c82c10..cbeeca8cf83 100644
--- a/releng/org.eclipse.cdt-feature/feature.xml
+++ b/releng/org.eclipse.cdt-feature/feature.xml
@@ -1,8 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2002, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<feature
id="org.eclipse.cdt"
label="%featureName"
- version="9.10.0.qualifier"
+ version="10.7.0.qualifier"
provider-name="%providerName"
license-feature="org.eclipse.license"
license-feature-version="0.0.0">
diff --git a/releng/org.eclipse.cdt-feature/p2.inf b/releng/org.eclipse.cdt-feature/p2.inf
index 552f6aa698f..613f21abc60 100644
--- a/releng/org.eclipse.cdt-feature/p2.inf
+++ b/releng/org.eclipse.cdt-feature/p2.inf
@@ -1,3 +1,3 @@
instructions.configure=\
-org.eclipse.equinox.p2.touchpoint.eclipse.addRepository(location:http${#58}//download.eclipse.org/tools/cdt/releases/9.9,type:0,name:CDT,enabled:false); \
-org.eclipse.equinox.p2.touchpoint.eclipse.addRepository(location:http${#58}//download.eclipse.org/tools/cdt/releases/9.9,type:1,name:CDT,enabled:false);
+org.eclipse.equinox.p2.touchpoint.eclipse.addRepository(location:https${#58}//download.eclipse.org/tools/cdt/releases/latest,type:0,name:CDT,enabled:true); \
+org.eclipse.equinox.p2.touchpoint.eclipse.addRepository(location:https${#58}//download.eclipse.org/tools/cdt/releases/latest,type:1,name:CDT,enabled:true);
diff --git a/releng/org.eclipse.cdt-feature/pom.xml b/releng/org.eclipse.cdt-feature/pom.xml
index 1bb92c6ee67..991cc526497 100644
--- a/releng/org.eclipse.cdt-feature/pom.xml
+++ b/releng/org.eclipse.cdt-feature/pom.xml
@@ -1,4 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2011, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
@@ -7,7 +17,7 @@
<parent>
<groupId>org.eclipse.cdt</groupId>
<artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
+ <version>10.7.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
diff --git a/releng/org.eclipse.cdt.native-feature/.settings/org.eclipse.core.resources.prefs b/releng/org.eclipse.cdt.native-feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/releng/org.eclipse.cdt.native-feature/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/releng/org.eclipse.cdt.native-feature/feature.xml b/releng/org.eclipse.cdt.native-feature/feature.xml
index cb1cd2d50f7..ce74124a71d 100644
--- a/releng/org.eclipse.cdt.native-feature/feature.xml
+++ b/releng/org.eclipse.cdt.native-feature/feature.xml
@@ -1,9 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2014, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<feature
id="org.eclipse.cdt.native"
label="%featureName"
- version="9.10.0.qualifier"
+ version="10.7.0.qualifier"
provider-name="%providerName"
+ plugin="org.eclipse.cdt.core.native"
license-feature="org.eclipse.license"
license-feature-version="0.0.0">
@@ -56,6 +67,16 @@
unpack="false"/>
<plugin
+ id="org.eclipse.cdt.core.linux.aarch64"
+ os="linux"
+ arch="aarch64"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ fragment="true"
+ unpack="false"/>
+
+ <plugin
id="org.eclipse.cdt.core.macosx"
os="macosx"
download-size="0"
diff --git a/releng/org.eclipse.cdt.platform-feature/.settings/org.eclipse.core.resources.prefs b/releng/org.eclipse.cdt.platform-feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/releng/org.eclipse.cdt.platform-feature/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/releng/org.eclipse.cdt.platform-feature/feature.xml b/releng/org.eclipse.cdt.platform-feature/feature.xml
index b8b7fc3aaa7..92d3ed77e3d 100644
--- a/releng/org.eclipse.cdt.platform-feature/feature.xml
+++ b/releng/org.eclipse.cdt.platform-feature/feature.xml
@@ -1,9 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2008, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<feature
id="org.eclipse.cdt.platform"
label="%featureName"
- version="9.10.0.qualifier"
+ version="10.7.0.qualifier"
provider-name="%providerName"
+ plugin="org.eclipse.cdt.platform.branding"
license-feature="org.eclipse.license"
license-feature-version="0.0.0">
@@ -115,6 +126,13 @@
unpack="false"/>
<plugin
+ id="org.eclipse.cdt.managedbuilder.headlessbuilderapp"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
id="org.eclipse.cdt.managedbuilder.ui"
download-size="0"
install-size="0"
@@ -150,6 +168,13 @@
unpack="false"/>
<plugin
+ id="org.eclipse.cdt.flatpak.launcher"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
id="org.eclipse.cdt.native.serial"
download-size="0"
install-size="0"
@@ -157,11 +182,10 @@
unpack="false"/>
<plugin
- id="org.eclipse.tools.templates.freemarker.java11"
+ id="org.eclipse.cdt.platform.branding"
download-size="0"
install-size="0"
version="0.0.0"
- fragment="true"
unpack="false"/>
</feature>
diff --git a/releng/org.eclipse.cdt.platform.branding/.project b/releng/org.eclipse.cdt.platform.branding/.project
new file mode 100644
index 00000000000..ed51d86b51b
--- /dev/null
+++ b/releng/org.eclipse.cdt.platform.branding/.project
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.cdt.platform.branding</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ </natures>
+</projectDescription>
diff --git a/releng/org.eclipse.cdt.platform.branding/.settings/org.eclipse.core.resources.prefs b/releng/org.eclipse.cdt.platform.branding/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/releng/org.eclipse.cdt.platform.branding/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/releng/org.eclipse.cdt.platform.branding/.settings/org.eclipse.pde.api.tools.prefs b/releng/org.eclipse.cdt.platform.branding/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 00000000000..ec9fbf321d0
--- /dev/null
+++ b/releng/org.eclipse.cdt.platform.branding/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,184 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITH_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_FIELD=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERCLASS_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_CHANGED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENTS=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETERS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Error
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Warning
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+MISSING_EE_DESCRIPTIONS=Warning
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=false
+changed_execution_env=Error
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+incompatible_api_component_version_report_major_without_breaking_change=Warning
+incompatible_api_component_version_report_minor_without_api_change=Warning
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/releng/org.eclipse.cdt.platform.branding/.settings/org.eclipse.pde.prefs b/releng/org.eclipse.cdt.platform.branding/.settings/org.eclipse.pde.prefs
new file mode 100644
index 00000000000..d2dc703ba9e
--- /dev/null
+++ b/releng/org.eclipse.cdt.platform.branding/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,35 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=2
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=2
+compilers.p.missing-version-export-package=2
+compilers.p.missing-version-import-package=2
+compilers.p.missing-version-require-bundle=2
+compilers.p.no-required-att=0
+compilers.p.no.automatic.module=1
+compilers.p.not-externalized-att=1
+compilers.p.service.component.without.lazyactivation=1
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/releng/org.eclipse.cdt.platform.branding/META-INF/MANIFEST.MF b/releng/org.eclipse.cdt.platform.branding/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..ce6e9cd9a5d
--- /dev/null
+++ b/releng/org.eclipse.cdt.platform.branding/META-INF/MANIFEST.MF
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.cdt.platform.branding;singleton:=true
+Bundle-Version: 10.7.0.qualifier
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
diff --git a/releng/org.eclipse.cdt.platform.branding/about.html b/releng/org.eclipse.cdt.platform.branding/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/releng/org.eclipse.cdt.platform.branding/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/releng/org.eclipse.cdt.platform.branding/about.ini b/releng/org.eclipse.cdt.platform.branding/about.ini
new file mode 100644
index 00000000000..e07a7bb377e
--- /dev/null
+++ b/releng/org.eclipse.cdt.platform.branding/about.ini
@@ -0,0 +1,24 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%blurb
+
+# Property "windowImage" contains path to window icon (16x16)
+# needed for primary features only
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=cdt_logo_icon32.png
+
+# Property "aboutImage" contains path to product image (500x330 or 115x164)
+# needed for primary features only
+
+# Property "appName" contains name of the application (translated)
+# needed for primary features only
+
+# Property "welcomePerspective" contains the id of the perspective in which the
+# welcome page is to be opened.
+# optional
diff --git a/releng/org.eclipse.cdt.platform.branding/about.mappings b/releng/org.eclipse.cdt.platform.branding/about.mappings
new file mode 100644
index 00000000000..936a8039c3e
--- /dev/null
+++ b/releng/org.eclipse.cdt.platform.branding/about.mappings
@@ -0,0 +1,9 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+# The following should contain the build version.
+# e.g. "0=20200106-1728"
+# This value will be added automatically via the build scripts
+0=${buildId}
diff --git a/releng/org.eclipse.cdt.platform.branding/about.properties b/releng/org.eclipse.cdt.platform.branding/about.properties
new file mode 100644
index 00000000000..a56e56ebd48
--- /dev/null
+++ b/releng/org.eclipse.cdt.platform.branding/about.properties
@@ -0,0 +1,32 @@
+###############################################################################
+# Copyright (c) 2008, 2022 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+# about.properties
+# contains externalized strings for about.ini
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# fill-ins are supplied by about.mappings
+# This file should be translated.
+# NOTE TO TRANSLATOR: Please do not translate the featureVersion variable.
+
+
+blurb=C/C++ Development Platform\n\
+\n\
+Version: {featureVersion}\n\
+Build id: {0}\n\
+\n\
+Copyright (c) 2008, 2022 Contributors to the Eclipse Foundation
+\n\
+See the NOTICE file(s) distributed with this work for additional\n\
+information regarding copyright ownership.\n\
+\n\
+Visit http://www.eclipse.org/cdt
diff --git a/releng/org.eclipse.cdt.platform.branding/build.properties b/releng/org.eclipse.cdt.platform.branding/build.properties
new file mode 100644
index 00000000000..f9952c2d349
--- /dev/null
+++ b/releng/org.eclipse.cdt.platform.branding/build.properties
@@ -0,0 +1,23 @@
+###############################################################################
+# Copyright (c) 2005, 2009 IBM Corporation and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# IBM Corporation - initial API and implementation
+###############################################################################
+bin.includes = about.html,\
+ about.ini,\
+ about.mappings,\
+ about.properties,\
+ notice.html,\
+ plugin.properties,\
+ epl-v20.html,\
+ META-INF/,\
+ cdt_logo_icon32.png
+src.includes = about.html
diff --git a/releng/org.eclipse.cdt.platform.branding/cdt_logo_icon32.png b/releng/org.eclipse.cdt.platform.branding/cdt_logo_icon32.png
new file mode 100644
index 00000000000..470ca81b327
--- /dev/null
+++ b/releng/org.eclipse.cdt.platform.branding/cdt_logo_icon32.png
Binary files differ
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.feature/rootfiles/notice.html b/releng/org.eclipse.cdt.platform.branding/epl-v20.html
index 008b8018db8..008b8018db8 100644
--- a/lrparser/org.eclipse.cdt.core.lrparser.feature/rootfiles/notice.html
+++ b/releng/org.eclipse.cdt.platform.branding/epl-v20.html
diff --git a/upc/org.eclipse.cdt.core.parser.upc.feature/rootfiles/notice.html b/releng/org.eclipse.cdt.platform.branding/notice.html
index 008b8018db8..008b8018db8 100644
--- a/upc/org.eclipse.cdt.core.parser.upc.feature/rootfiles/notice.html
+++ b/releng/org.eclipse.cdt.platform.branding/notice.html
diff --git a/releng/org.eclipse.cdt.platform.branding/plugin.properties b/releng/org.eclipse.cdt.platform.branding/plugin.properties
new file mode 100644
index 00000000000..9e71bb16255
--- /dev/null
+++ b/releng/org.eclipse.cdt.platform.branding/plugin.properties
@@ -0,0 +1,15 @@
+###############################################################################
+# Copyright (c) 2005, 2011 IBM Corporation and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# IBM Corporation - initial API and implementation
+###############################################################################
+pluginName=C/C++ Development Platform
+providerName=Eclipse CDT \ No newline at end of file
diff --git a/releng/org.eclipse.cdt.repo/.settings/org.eclipse.core.resources.prefs b/releng/org.eclipse.cdt.repo/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/releng/org.eclipse.cdt.repo/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/releng/org.eclipse.cdt.repo/.settings/org.eclipse.jdt.core.prefs b/releng/org.eclipse.cdt.repo/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 2b6ecff8a01..00000000000
--- a/releng/org.eclipse.cdt.repo/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,464 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
-org.eclipse.jdt.core.codeComplete.argumentPrefixes=
-org.eclipse.jdt.core.codeComplete.argumentSuffixes=
-org.eclipse.jdt.core.codeComplete.fieldPrefixes=
-org.eclipse.jdt.core.codeComplete.fieldSuffixes=
-org.eclipse.jdt.core.codeComplete.localPrefixes=
-org.eclipse.jdt.core.codeComplete.localSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
-org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
-org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
-org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
-org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
-org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
-org.eclipse.jdt.core.compiler.problem.APILeak=warning
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
-org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
-org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
-org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
-org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
-org.eclipse.jdt.core.compiler.problem.nullReference=error
-org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
-org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
-org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
-org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
-org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
-org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
-org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
-org.eclipse.jdt.core.formatter.align_with_spaces=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
-org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
-org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
-org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
-org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=0
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
-org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
-org.eclipse.jdt.core.formatter.comment.format_block_comments=false
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
-org.eclipse.jdt.core.formatter.comment.format_line_comments=false
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
-org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
-org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
-org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.join_lines_in_comments=true
-org.eclipse.jdt.core.formatter.join_wrapped_lines=true
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=120
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_on_off_tags=true
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
-org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
-org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/releng/org.eclipse.cdt.repo/.settings/org.eclipse.jdt.ui.prefs b/releng/org.eclipse.cdt.repo/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index e44576346c4..00000000000
--- a/releng/org.eclipse.cdt.repo/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,133 +0,0 @@
-cleanup.add_default_serial_version_id=true
-cleanup.add_generated_serial_version_id=false
-cleanup.add_missing_annotations=true
-cleanup.add_missing_deprecated_annotations=true
-cleanup.add_missing_methods=false
-cleanup.add_missing_nls_tags=false
-cleanup.add_missing_override_annotations=true
-cleanup.add_missing_override_annotations_interface_methods=true
-cleanup.add_serial_version_id=false
-cleanup.always_use_blocks=true
-cleanup.always_use_parentheses_in_expressions=false
-cleanup.always_use_this_for_non_static_field_access=false
-cleanup.always_use_this_for_non_static_method_access=false
-cleanup.convert_functional_interfaces=false
-cleanup.convert_to_enhanced_for_loop=false
-cleanup.correct_indentation=false
-cleanup.format_source_code=true
-cleanup.format_source_code_changes_only=false
-cleanup.insert_inferred_type_arguments=false
-cleanup.make_local_variable_final=true
-cleanup.make_parameters_final=false
-cleanup.make_private_fields_final=true
-cleanup.make_type_abstract_if_missing_method=false
-cleanup.make_variable_declarations_final=false
-cleanup.never_use_blocks=false
-cleanup.never_use_parentheses_in_expressions=true
-cleanup.organize_imports=true
-cleanup.qualify_static_field_accesses_with_declaring_class=false
-cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-cleanup.qualify_static_member_accesses_with_declaring_class=false
-cleanup.qualify_static_method_accesses_with_declaring_class=false
-cleanup.remove_private_constructors=true
-cleanup.remove_redundant_modifiers=false
-cleanup.remove_redundant_semicolons=true
-cleanup.remove_redundant_type_arguments=true
-cleanup.remove_trailing_whitespaces=true
-cleanup.remove_trailing_whitespaces_all=true
-cleanup.remove_trailing_whitespaces_ignore_empty=false
-cleanup.remove_unnecessary_casts=true
-cleanup.remove_unnecessary_nls_tags=false
-cleanup.remove_unused_imports=true
-cleanup.remove_unused_local_variables=false
-cleanup.remove_unused_private_fields=true
-cleanup.remove_unused_private_members=false
-cleanup.remove_unused_private_methods=true
-cleanup.remove_unused_private_types=true
-cleanup.sort_members=false
-cleanup.sort_members_all=false
-cleanup.use_anonymous_class_creation=false
-cleanup.use_blocks=false
-cleanup.use_blocks_only_for_return_and_throw=false
-cleanup.use_lambda=true
-cleanup.use_parentheses_in_expressions=false
-cleanup.use_this_for_non_static_field_access=false
-cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-cleanup.use_this_for_non_static_method_access=false
-cleanup.use_this_for_non_static_method_access_only_if_necessary=true
-cleanup_profile=_CDT
-cleanup_settings_version=2
-eclipse.preferences.version=1
-editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=_CDT
-formatter_settings_version=14
-internal.default.compliance=user
-org.eclipse.jdt.ui.exception.name=e
-org.eclipse.jdt.ui.gettersetter.use.is=true
-org.eclipse.jdt.ui.ignorelowercasenames=true
-org.eclipse.jdt.ui.importorder=java;javax;org;com;
-org.eclipse.jdt.ui.keywordthis=false
-org.eclipse.jdt.ui.ondemandthreshold=1000
-org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.staticondemandthreshold=1000
-org.eclipse.jdt.ui.text.custom_code_templates=
-sp_cleanup.add_default_serial_version_id=true
-sp_cleanup.add_generated_serial_version_id=false
-sp_cleanup.add_missing_annotations=true
-sp_cleanup.add_missing_deprecated_annotations=true
-sp_cleanup.add_missing_methods=false
-sp_cleanup.add_missing_nls_tags=false
-sp_cleanup.add_missing_override_annotations=true
-sp_cleanup.add_missing_override_annotations_interface_methods=true
-sp_cleanup.add_serial_version_id=false
-sp_cleanup.always_use_blocks=true
-sp_cleanup.always_use_parentheses_in_expressions=false
-sp_cleanup.always_use_this_for_non_static_field_access=false
-sp_cleanup.always_use_this_for_non_static_method_access=false
-sp_cleanup.convert_functional_interfaces=false
-sp_cleanup.convert_to_enhanced_for_loop=false
-sp_cleanup.correct_indentation=false
-sp_cleanup.format_source_code=true
-sp_cleanup.format_source_code_changes_only=false
-sp_cleanup.insert_inferred_type_arguments=false
-sp_cleanup.make_local_variable_final=true
-sp_cleanup.make_parameters_final=false
-sp_cleanup.make_private_fields_final=true
-sp_cleanup.make_type_abstract_if_missing_method=false
-sp_cleanup.make_variable_declarations_final=false
-sp_cleanup.never_use_blocks=false
-sp_cleanup.never_use_parentheses_in_expressions=true
-sp_cleanup.on_save_use_additional_actions=true
-sp_cleanup.organize_imports=true
-sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
-sp_cleanup.remove_private_constructors=true
-sp_cleanup.remove_redundant_modifiers=false
-sp_cleanup.remove_redundant_semicolons=true
-sp_cleanup.remove_redundant_type_arguments=true
-sp_cleanup.remove_trailing_whitespaces=true
-sp_cleanup.remove_trailing_whitespaces_all=true
-sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
-sp_cleanup.remove_unnecessary_casts=true
-sp_cleanup.remove_unnecessary_nls_tags=false
-sp_cleanup.remove_unused_imports=true
-sp_cleanup.remove_unused_local_variables=false
-sp_cleanup.remove_unused_private_fields=true
-sp_cleanup.remove_unused_private_members=false
-sp_cleanup.remove_unused_private_methods=true
-sp_cleanup.remove_unused_private_types=true
-sp_cleanup.sort_members=false
-sp_cleanup.sort_members_all=false
-sp_cleanup.use_anonymous_class_creation=false
-sp_cleanup.use_blocks=false
-sp_cleanup.use_blocks_only_for_return_and_throw=false
-sp_cleanup.use_lambda=true
-sp_cleanup.use_parentheses_in_expressions=false
-sp_cleanup.use_this_for_non_static_field_access=false
-sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-sp_cleanup.use_this_for_non_static_method_access=false
-sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/releng/org.eclipse.cdt.repo/category.xml b/releng/org.eclipse.cdt.repo/category.xml
index 094eff239eb..cd0abf9a8cb 100644
--- a/releng/org.eclipse.cdt.repo/category.xml
+++ b/releng/org.eclipse.cdt.repo/category.xml
@@ -1,192 +1,309 @@
<?xml version="1.0" encoding="UTF-8"?>
<site>
- <category-def name="main" label="CDT Main Features"/>
- <category-def name="extra" label="CDT Optional Features"/>
- <feature url="features/org.eclipse.cdt_0.0.0.qualifier.jar" id="org.eclipse.cdt" version="0.0.0">
+ <feature id="org.eclipse.cdt">
<category name="main"/>
</feature>
- <feature url="features/org.eclipse.cdt.sdk_0.0.0.qualifier.jar" id="org.eclipse.cdt.sdk" version="0.0.0">
+ <feature id="org.eclipse.cdt.sdk">
<category name="main"/>
</feature>
- <feature url="features/org.eclipse.cdt.core.lrparser.feature_0.0.0.qualifier.jar" id="org.eclipse.cdt.core.lrparser.feature" version="0.0.0">
+ <feature id="org.eclipse.cdt.debug.gdbjtag">
<category name="extra"/>
</feature>
- <feature url="features/org.eclipse.cdt.core.lrparser.feature.source_0.0.0.qualifier.jar" id="org.eclipse.cdt.core.lrparser.feature.source" version="0.0.0">
+ <feature id="org.eclipse.cdt.debug.gdbjtag.source">
<category name="extra"/>
</feature>
- <feature url="features/org.eclipse.cdt.core.lrparser.sdk_0.0.0.qualifier.jar" id="org.eclipse.cdt.core.lrparser.sdk" version="0.0.0">
+ <feature id="org.eclipse.cdt.debug.ui.memory">
<category name="extra"/>
</feature>
- <feature url="features/org.eclipse.cdt.core.parser.upc.feature_0.0.0.qualifier.jar" id="org.eclipse.cdt.core.parser.upc.feature" version="0.0.0">
+ <feature id="org.eclipse.cdt.debug.ui.memory.source">
<category name="extra"/>
</feature>
- <feature url="features/org.eclipse.cdt.core.parser.upc.feature.source_0.0.0.qualifier.jar" id="org.eclipse.cdt.core.parser.upc.feature.source" version="0.0.0">
+ <feature id="org.eclipse.cdt.build.crossgcc">
<category name="extra"/>
</feature>
- <feature url="features/org.eclipse.cdt.core.parser.upc.sdk_0.0.0.qualifier.jar" id="org.eclipse.cdt.core.parser.upc.sdk" version="0.0.0">
+ <feature id="org.eclipse.cdt.build.crossgcc.source">
<category name="extra"/>
</feature>
- <feature url="features/org.eclipse.cdt.bupc_0.0.0.qualifier.jar" id="org.eclipse.cdt.bupc" version="0.0.0">
+ <feature id="org.eclipse.cdt.launch.remote">
<category name="extra"/>
</feature>
- <feature url="features/org.eclipse.cdt.bupc.source_0.0.0.qualifier.jar" id="org.eclipse.cdt.bupc.source" version="0.0.0">
+ <feature id="org.eclipse.cdt.launch.remote.source">
<category name="extra"/>
</feature>
- <feature url="features/org.eclipse.cdt.debug.gdbjtag_0.0.0.qualifier.jar" id="org.eclipse.cdt.debug.gdbjtag" version="0.0.0">
+ <feature id="org.eclipse.cdt.msw">
<category name="extra"/>
</feature>
- <feature url="features/org.eclipse.cdt.debug.gdbjtag.source_0.0.0.qualifier.jar" id="org.eclipse.cdt.debug.gdbjtag.source" version="0.0.0">
+ <feature id="org.eclipse.cdt.msw.source">
<category name="extra"/>
</feature>
- <feature url="features/org.eclipse.cdt.xlc.feature_0.0.0.qualifier.jar" id="org.eclipse.cdt.xlc.feature" version="0.0.0">
+ <feature id="org.eclipse.cdt.examples.dsf.source">
<category name="extra"/>
</feature>
- <feature url="features/org.eclipse.cdt.xlc.feature.source_0.0.0.qualifier.jar" id="org.eclipse.cdt.xlc.feature.source" version="0.0.0">
+ <feature id="org.eclipse.cdt.examples.dsf">
<category name="extra"/>
</feature>
- <feature url="features/org.eclipse.cdt.xlc.sdk_0.0.0.qualifier.jar" id="org.eclipse.cdt.xlc.sdk" version="0.0.0">
+ <feature id="org.eclipse.cdt.visualizer">
<category name="extra"/>
</feature>
- <feature url="features/org.eclipse.cdt.debug.ui.memory_0.0.0.qualifier.jar" id="org.eclipse.cdt.debug.ui.memory" version="0.0.0">
+ <feature id="org.eclipse.cdt.visualizer.source">
<category name="extra"/>
</feature>
- <feature url="features/org.eclipse.cdt.debug.ui.memory.source_0.0.0.qualifier.jar" id="org.eclipse.cdt.debug.ui.memory.source" version="0.0.0">
+ <feature id="org.eclipse.cdt.gnu.multicorevisualizer">
<category name="extra"/>
</feature>
- <feature url="features/org.eclipse.cdt.build.crossgcc_0.0.0.qualifier.jar" id="org.eclipse.cdt.build.crossgcc" version="0.0.0">
+ <feature id="org.eclipse.cdt.gnu.multicorevisualizer.source">
<category name="extra"/>
</feature>
- <feature url="features/org.eclipse.cdt.build.crossgcc.source_0.0.0.qualifier.jar" id="org.eclipse.cdt.build.crossgcc.source" version="0.0.0">
+ <feature id="org.eclipse.cdt.autotools">
<category name="extra"/>
</feature>
- <feature url="features/org.eclipse.cdt.launch.remote_0.0.0.qualifier.jar" id="org.eclipse.cdt.launch.remote" version="0.0.0">
+ <feature id="org.eclipse.cdt.autotools.source">
<category name="extra"/>
</feature>
- <feature url="features/org.eclipse.cdt.launch.remote.source_0.0.0.qualifier.jar" id="org.eclipse.cdt.launch.remote.source" version="0.0.0">
+ <feature id="org.eclipse.cdt.meson">
<category name="extra"/>
</feature>
- <feature url="features/org.eclipse.cdt.msw_0.0.0.qualifier.jar" id="org.eclipse.cdt.msw" version="0.0.0">
+ <feature id="org.eclipse.cdt.meson.source">
<category name="extra"/>
</feature>
- <feature url="features/org.eclipse.cdt.msw.source_0.0.0.qualifier.jar" id="org.eclipse.cdt.msw.source" version="0.0.0">
+ <feature id="org.eclipse.cdt.docker.launcher">
<category name="extra"/>
</feature>
- <feature url="features/org.eclipse.cdt.examples.dsf.source_0.0.0.qualifier.jar" id="org.eclipse.cdt.examples.dsf.source" version="0.0.0">
+ <feature id="org.eclipse.cdt.docker.launcher.source">
<category name="extra"/>
</feature>
- <feature url="features/org.eclipse.cdt.examples.dsf_0.0.0.qualifier.jar" id="org.eclipse.cdt.examples.dsf" version="0.0.0">
+ <feature id="org.eclipse.cdt.testsrunner.feature">
<category name="extra"/>
</feature>
- <feature url="features/org.eclipse.cdt.visualizer_0.0.0.qualifier.jar" id="org.eclipse.cdt.visualizer" version="0.0.0">
+ <feature id="org.eclipse.cdt.testsrunner.feature.source">
<category name="extra"/>
</feature>
- <feature url="features/org.eclipse.cdt.visualizer.source_0.0.0.qualifier.jar" id="org.eclipse.cdt.visualizer.source" version="0.0.0">
+ <feature id="org.eclipse.cdt.unittest.feature">
<category name="extra"/>
</feature>
- <feature url="features/org.eclipse.cdt.gnu.multicorevisualizer_0.0.0.qualifier.jar" id="org.eclipse.cdt.gnu.multicorevisualizer" version="0.0.0">
+ <feature id="org.eclipse.cdt.unittest.feature.source">
<category name="extra"/>
</feature>
- <feature url="features/org.eclipse.cdt.gnu.multicorevisualizer.source_0.0.0.qualifier.jar" id="org.eclipse.cdt.gnu.multicorevisualizer.source" version="0.0.0">
+ <feature id="org.eclipse.cdt.managedbuilder.llvm">
<category name="extra"/>
</feature>
- <feature url="features/org.eclipse.cdt.autotools_0.0.0.qualifier.jar" id="org.eclipse.cdt.autotools" version="0.0.0">
+ <feature id="org.eclipse.cdt.managedbuilder.llvm.source">
<category name="extra"/>
</feature>
- <feature url="features/org.eclipse.cdt.autotools.source_0.0.0.qualifier.jar" id="org.eclipse.cdt.autotools.source" version="0.0.0">
+ <feature id="org.eclipse.cdt.qt">
<category name="extra"/>
</feature>
- <feature url="features/org.eclipse.cdt.meson_0.0.0.qualifier.jar" id="org.eclipse.cdt.meson" version="0.0.0">
+ <feature id="org.eclipse.cdt.qt.source">
<category name="extra"/>
</feature>
- <feature url="features/org.eclipse.cdt.meson.source_0.0.0.qualifier.jar" id="org.eclipse.cdt.meson.source" version="0.0.0">
+ <feature id="org.eclipse.cdt.debug.dap">
<category name="extra"/>
</feature>
- <feature url="features/org.eclipse.cdt.docker.launcher_0.0.0.qualifier.jar" id="org.eclipse.cdt.docker.launcher" version="0.0.0">
+ <feature id="org.eclipse.cdt.debug.dap.source">
<category name="extra"/>
</feature>
- <feature url="features/org.eclipse.cdt.docker.launcher.source_0.0.0.qualifier.jar" id="org.eclipse.cdt.docker.launcher.source" version="0.0.0">
+ <feature id="org.eclipse.cdt.debug.dap.gdbjtag">
<category name="extra"/>
</feature>
- <feature url="features/org.eclipse.cdt.testsrunner.feature_0.0.0.qualifier.jar" id="org.eclipse.cdt.testsrunner.feature" version="0.0.0">
+ <feature id="org.eclipse.cdt.debug.dap.gdbjtag.source">
<category name="extra"/>
</feature>
- <feature url="features/org.eclipse.cdt.testsrunner.feature.source_0.0.0.qualifier.jar" id="org.eclipse.cdt.testsrunner.feature.source" version="0.0.0">
+ <feature id="org.eclipse.cdt.debug.standalone">
<category name="extra"/>
</feature>
- <feature url="features/org.eclipse.cdt.managedbuilder.llvm_0.0.0.qualifier.jar" id="org.eclipse.cdt.managedbuilder.llvm" version="0.0.0">
+ <feature id="org.eclipse.cdt.debug.standalone.source">
<category name="extra"/>
</feature>
- <feature url="features/org.eclipse.cdt.managedbuilder.llvm.source_0.0.0.qualifier.jar" id="org.eclipse.cdt.managedbuilder.llvm.source" version="0.0.0">
+ <feature id="org.eclipse.cdt.cmake">
<category name="extra"/>
</feature>
- <feature url="features/org.eclipse.cdt.qt_0.0.0.qualifier.jar" id="org.eclipse.cdt.qt" version="0.0.0">
+ <feature id="org.eclipse.cdt.cmake.source">
<category name="extra"/>
</feature>
- <feature url="features/org.eclipse.cdt.qt.source_0.0.0.qualifier.jar" id="org.eclipse.cdt.qt.source" version="0.0.0">
+ <feature id="org.eclipse.cdt.core.autotools">
<category name="extra"/>
</feature>
- <feature url="features/org.eclipse.cdt.debug.dap_0.0.0.qualifier.jar" id="org.eclipse.cdt.debug.dap" version="0.0.0">
+ <feature id="org.eclipse.cdt.core.autotools.source">
<category name="extra"/>
</feature>
- <feature url="features/org.eclipse.cdt.debug.dap.source_0.0.0.qualifier.jar" id="org.eclipse.cdt.debug.dap.source" version="0.0.0">
+ <feature id="org.eclipse.cdt.llvm.dsf.lldb">
<category name="extra"/>
</feature>
- <feature url="features/org.eclipse.cdt.debug.dap.gdbjtag_0.0.0.qualifier.jar" id="org.eclipse.cdt.debug.dap.gdbjtag" version="0.0.0">
+ <feature id="org.eclipse.cdt.llvm.dsf.lldb.source">
<category name="extra"/>
</feature>
- <feature url="features/org.eclipse.cdt.debug.dap.gdbjtag.source_0.0.0.qualifier.jar" id="org.eclipse.cdt.debug.dap.gdbjtag.source" version="0.0.0">
+ <feature id="org.eclipse.cdt.launch.serial.feature">
<category name="extra"/>
</feature>
- <feature url="features/org.eclipse.cdt.debug.standalone_0.0.0.qualifier.jar" id="org.eclipse.cdt.debug.standalone" version="0.0.0">
+ <feature id="org.eclipse.cdt.launch.serial.feature.source">
<category name="extra"/>
</feature>
- <feature url="features/org.eclipse.cdt.debug.standalone.source_0.0.0.qualifier.jar" id="org.eclipse.cdt.debug.standalone.source" version="0.0.0">
+ <feature id="org.eclipse.cdt.lsp">
<category name="extra"/>
</feature>
- <feature url="features/org.eclipse.cdt.arduino_0.0.0.qualifier.jar" id="org.eclipse.cdt.arduino" version="0.0.0">
+ <feature id="org.eclipse.cdt.lsp.source">
<category name="extra"/>
</feature>
- <feature url="features/org.eclipse.cdt.arduino.source_0.0.0.qualifier.jar" id="org.eclipse.cdt.arduino.source" version="0.0.0">
- <category name="extra"/>
+ <feature id="org.eclipse.launchbar">
+ <category name="launchbar"/>
</feature>
- <feature url="features/org.eclipse.cdt.cmake_0.0.0.qualifier.jar" id="org.eclipse.cdt.cmake" version="0.0.0">
- <category name="extra"/>
+ <feature id="org.eclipse.launchbar.source">
+ <category name="launchbar"/>
</feature>
- <feature url="features/org.eclipse.cdt.cmake.source_0.0.0.qualifier.jar" id="org.eclipse.cdt.cmake.source" version="0.0.0">
- <category name="extra"/>
+ <feature id="org.eclipse.launchbar.remote">
+ <category name="launchbar"/>
</feature>
- <feature url="features/org.eclipse.cdt.core.autotools_0.0.0.qualifier.jar" id="org.eclipse.cdt.core.autotools" version="0.0.0">
- <category name="extra"/>
+ <feature id="org.eclipse.launchbar.remote.source">
+ <category name="launchbar"/>
</feature>
- <feature url="features/org.eclipse.cdt.core.autotools.source_0.0.0.qualifier.jar" id="org.eclipse.cdt.core.autotools.source" version="0.0.0">
- <category name="extra"/>
+ <feature id="org.eclipse.tm.terminal.control.feature">
+ <category name="terminal_main"/>
</feature>
- <feature url="features/org.eclipse.cdt.llvm.dsf.lldb_0.0.0.qualifier.jar" id="org.eclipse.cdt.llvm.dsf.lldb" version="0.0.0">
- <category name="extra"/>
+ <feature id="org.eclipse.tm.terminal.control.feature.source">
+ <category name="terminal_sdk"/>
</feature>
- <feature url="features/org.eclipse.cdt.llvm.dsf.lldb.source_0.0.0.qualifier.jar" id="org.eclipse.cdt.llvm.dsf.lldb.source" version="0.0.0">
- <category name="extra"/>
+ <feature id="org.eclipse.tm.terminal.connector.local.feature">
+ <category name="terminal_main"/>
</feature>
- <feature url="features/org.eclipse.cdt.launch.serial.feature_0.0.0.qualifier.jar" id="org.eclipse.cdt.launch.serial.feature" version="0.0.0">
- <category name="extra"/>
+ <feature id="org.eclipse.tm.terminal.connector.local.feature.source">
+ <category name="terminal_sdk"/>
</feature>
- <feature url="features/org.eclipse.cdt.launch.serial.feature.source_0.0.0.qualifier.jar" id="org.eclipse.cdt.launch.serial.feature.source" version="0.0.0">
- <category name="extra"/>
+ <feature id="org.eclipse.tm.terminal.connector.cdtserial.feature">
+ <category name="terminal_main"/>
+ </feature>
+ <feature id="org.eclipse.tm.terminal.connector.cdtserial.feature.source">
+ <category name="terminal_sdk"/>
+ </feature>
+ <feature id="org.eclipse.tm.terminal.connector.ssh.feature">
+ <category name="terminal_main"/>
</feature>
- <iu id="org.eclipse.cdt.util" version="0.0.0"/>
- <iu id="org.eclipse.cdt.util.source" version="0.0.0"/>
- <iu id="org.eclipse.cdt.remote.core" version="0.0.0"/>
- <iu id="org.eclipse.cdt.remote.core.source" version="0.0.0"/>
- <iu id="javax.activation" version="0.0.0"/>
- <iu id="javax.xml" version="0.0.0"/>
- <iu id="javax.xml.bind" version="0.0.0"/>
- <iu id="javax.xml.stream" version="0.0.0"/>
- <iu id="com.google.gson" version="0.0.0"/>
- <iu id="org.freemarker" version="0.0.0"/>
- <iu id="org.eclipse.tools.templates.core" version="0.0.0"/>
- <iu id="org.eclipse.tools.templates.core.source" version="0.0.0"/>
- <iu id="org.eclipse.tools.templates.freemarker" version="0.0.0"/>
- <iu id="org.eclipse.tools.templates.freemarker.source" version="0.0.0"/>
- <iu id="org.eclipse.tools.templates.ui" version="0.0.0"/>
- <iu id="org.eclipse.tools.templates.ui.source" version="0.0.0"/>
+ <feature id="org.eclipse.tm.terminal.connector.ssh.feature.source">
+ <category name="terminal_sdk"/>
+ </feature>
+ <feature id="org.eclipse.tm.terminal.connector.telnet.feature">
+ <category name="terminal_main"/>
+ </feature>
+ <feature id="org.eclipse.tm.terminal.connector.telnet.feature.source">
+ <category name="terminal_sdk"/>
+ </feature>
+ <feature id="org.eclipse.tm.terminal.connector.remote.feature">
+ <category name="terminal_main"/>
+ </feature>
+ <feature id="org.eclipse.tm.terminal.connector.remote.feature.source">
+ <category name="terminal_sdk"/>
+ </feature>
+ <feature id="org.eclipse.tm.terminal.view.feature">
+ <category name="terminal_main"/>
+ </feature>
+ <feature id="org.eclipse.tm.terminal.view.feature.source">
+ <category name="terminal_sdk"/>
+ </feature>
+ <feature id="org.eclipse.tm.terminal.feature">
+ <category name="terminal_main"/>
+ </feature>
+ <feature id="org.eclipse.tm.terminal.feature.source">
+ <category name="terminal_sdk"/>
+ </feature>
+ <bundle id="org.eclipse.cdt.util" version="0.0.0"/>
+ <bundle id="org.eclipse.cdt.util.source" version="0.0.0"/>
+ <bundle id="org.eclipse.cdt.remote.core" version="0.0.0"/>
+ <bundle id="org.eclipse.cdt.remote.core.source" version="0.0.0"/>
+ <bundle id="com.sun.xml.bind" version="0.0.0"/>
+ <bundle id="javax.activation" version="0.0.0"/>
+ <bundle id="javax.xml" version="0.0.0"/>
+ <bundle id="jakarta.xml.bind" version="0.0.0"/>
+ <bundle id="javax.xml.stream" version="0.0.0"/>
+ <bundle id="com.google.gson" version="0.0.0"/>
+ <bundle id="org.freemarker" version="0.0.0"/>
+ <bundle id="org.yaml.snakeyaml" version="0.0.0"/>
+ <bundle id="com.sun.jna" version="0.0.0"/>
+ <bundle id="com.sun.jna.platform" version="0.0.0"/>
+ <bundle id="org.eclipse.tools.templates.core" version="0.0.0"/>
+ <bundle id="org.eclipse.tools.templates.core.source" version="0.0.0"/>
+ <bundle id="org.eclipse.tools.templates.freemarker" version="0.0.0"/>
+ <bundle id="org.eclipse.tools.templates.freemarker.source" version="0.0.0"/>
+ <bundle id="org.eclipse.tools.templates.ui" version="0.0.0"/>
+ <bundle id="org.eclipse.tools.templates.ui.source" version="0.0.0"/>
+ <bundle id="org.eclipse.cdt.jsoncdb.arm">
+ <category name="extra-jsoncdb"/>
+ </bundle>
+ <bundle id="org.eclipse.cdt.jsoncdb.arm.source">
+ <category name="extra-jsoncdb"/>
+ </bundle>
+ <bundle id="org.eclipse.cdt.jsoncdb.hpenonstop">
+ <category name="extra-jsoncdb"/>
+ </bundle>
+ <bundle id="org.eclipse.cdt.jsoncdb.hpenonstop.source">
+ <category name="extra-jsoncdb"/>
+ </bundle>
+ <bundle id="org.eclipse.cdt.jsoncdb.intel">
+ <category name="extra-jsoncdb"/>
+ </bundle>
+ <bundle id="org.eclipse.cdt.jsoncdb.intel.source">
+ <category name="extra-jsoncdb"/>
+ </bundle>
+ <bundle id="org.eclipse.cdt.jsoncdb.microsoft">
+ <category name="extra-jsoncdb"/>
+ </bundle>
+ <bundle id="org.eclipse.cdt.jsoncdb.microsoft.source">
+ <category name="extra-jsoncdb"/>
+ </bundle>
+ <bundle id="org.eclipse.cdt.jsoncdb.nvidia">
+ <category name="extra-jsoncdb"/>
+ </bundle>
+ <bundle id="org.eclipse.cdt.jsoncdb.nvidia.source">
+ <category name="extra-jsoncdb"/>
+ </bundle>
+ <feature id="org.eclipse.remote">
+ <category name="remote"/>
+ </feature>
+ <feature id="org.eclipse.remote.source">
+ <category name="remote_sdk"/>
+ </feature>
+ <feature id="org.eclipse.remote.serial">
+ <category name="remote"/>
+ </feature>
+ <feature id="org.eclipse.remote.serial.source">
+ <category name="remote_sdk"/>
+ </feature>
+ <feature id="org.eclipse.remote.console">
+ <category name="remote"/>
+ </feature>
+ <feature id="org.eclipse.remote.console.source">
+ <category name="remote_sdk"/>
+ </feature>
+ <feature id="org.eclipse.remote.telnet">
+ <category name="remote"/>
+ </feature>
+ <feature id="org.eclipse.remote.telnet.source">
+ <category name="remote_sdk"/>
+ </feature>
+ <feature id="org.eclipse.remote.proxy">
+ <category name="remote"/>
+ </feature>
+ <feature id="org.eclipse.remote.proxy.source">
+ <category name="remote_sdk"/>
+ </feature>
+ <category-def name="main" label="CDT Main Features"/>
+ <category-def name="extra" label="CDT Optional Features"/>
+ <category-def name="launchbar" label="LaunchBar"/>
+ <category-def name="launchbar" label="LaunchBar"/>
+ <category-def name="terminal_main" label="Terminal Features">
+ <description>
+ TM Terminal Features
+ </description>
+ </category-def>
+ <category-def name="terminal_sdk" label="Terminal SDK Features">
+ <description>
+ TM Terminal SDK Features
+ </description>
+ </category-def>
+ <category-def name="extra-jsoncdb" label="JSON CDB Extras">
+ <category name="extra"/>
+ <description>
+ Additional compilers support for the JSON CDB parser.
+ </description>
+ </category-def>
+ <category-def name="remote" label="Remote Services"/>
+ <category-def name="remote_sdk" label="Remote Services SDK"/>
</site>
diff --git a/releng/org.eclipse.cdt.repo/pom.xml b/releng/org.eclipse.cdt.repo/pom.xml
index aa5978e5611..91806113324 100644
--- a/releng/org.eclipse.cdt.repo/pom.xml
+++ b/releng/org.eclipse.cdt.repo/pom.xml
@@ -1,4 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2011, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
@@ -7,7 +17,7 @@
<parent>
<groupId>org.eclipse.cdt</groupId>
<artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
+ <version>10.7.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
diff --git a/releng/org.eclipse.cdt.sdk-feature/.settings/org.eclipse.core.resources.prefs b/releng/org.eclipse.cdt.sdk-feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/releng/org.eclipse.cdt.sdk-feature/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/releng/org.eclipse.cdt.sdk-feature/feature.xml b/releng/org.eclipse.cdt.sdk-feature/feature.xml
index 7fe29e7a9aa..684429b8f85 100644
--- a/releng/org.eclipse.cdt.sdk-feature/feature.xml
+++ b/releng/org.eclipse.cdt.sdk-feature/feature.xml
@@ -1,8 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2004, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<feature
id="org.eclipse.cdt.sdk"
label="%featureName"
- version="9.10.0.qualifier"
+ version="10.7.0.qualifier"
provider-name="%providerName"
license-feature="org.eclipse.license"
license-feature-version="0.0.0">
diff --git a/releng/org.eclipse.cdt.sdk-feature/pom.xml b/releng/org.eclipse.cdt.sdk-feature/pom.xml
index 539fcaff31c..e0b4ed8d8bf 100644
--- a/releng/org.eclipse.cdt.sdk-feature/pom.xml
+++ b/releng/org.eclipse.cdt.sdk-feature/pom.xml
@@ -1,4 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2011, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
@@ -7,7 +17,7 @@
<parent>
<groupId>org.eclipse.cdt</groupId>
<artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
+ <version>10.7.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
diff --git a/releng/org.eclipse.cdt.sdk/.settings/org.eclipse.core.resources.prefs b/releng/org.eclipse.cdt.sdk/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/releng/org.eclipse.cdt.sdk/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/releng/org.eclipse.cdt.sdk/.settings/org.eclipse.jdt.core.prefs b/releng/org.eclipse.cdt.sdk/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 2b6ecff8a01..00000000000
--- a/releng/org.eclipse.cdt.sdk/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,464 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
-org.eclipse.jdt.core.codeComplete.argumentPrefixes=
-org.eclipse.jdt.core.codeComplete.argumentSuffixes=
-org.eclipse.jdt.core.codeComplete.fieldPrefixes=
-org.eclipse.jdt.core.codeComplete.fieldSuffixes=
-org.eclipse.jdt.core.codeComplete.localPrefixes=
-org.eclipse.jdt.core.codeComplete.localSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
-org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
-org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
-org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
-org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
-org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
-org.eclipse.jdt.core.compiler.problem.APILeak=warning
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
-org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
-org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
-org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
-org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
-org.eclipse.jdt.core.compiler.problem.nullReference=error
-org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
-org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
-org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
-org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
-org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
-org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
-org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
-org.eclipse.jdt.core.formatter.align_with_spaces=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
-org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
-org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
-org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
-org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=0
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
-org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
-org.eclipse.jdt.core.formatter.comment.format_block_comments=false
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
-org.eclipse.jdt.core.formatter.comment.format_line_comments=false
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
-org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
-org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
-org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.join_lines_in_comments=true
-org.eclipse.jdt.core.formatter.join_wrapped_lines=true
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=120
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_on_off_tags=true
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
-org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
-org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/releng/org.eclipse.cdt.sdk/.settings/org.eclipse.jdt.ui.prefs b/releng/org.eclipse.cdt.sdk/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index e44576346c4..00000000000
--- a/releng/org.eclipse.cdt.sdk/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,133 +0,0 @@
-cleanup.add_default_serial_version_id=true
-cleanup.add_generated_serial_version_id=false
-cleanup.add_missing_annotations=true
-cleanup.add_missing_deprecated_annotations=true
-cleanup.add_missing_methods=false
-cleanup.add_missing_nls_tags=false
-cleanup.add_missing_override_annotations=true
-cleanup.add_missing_override_annotations_interface_methods=true
-cleanup.add_serial_version_id=false
-cleanup.always_use_blocks=true
-cleanup.always_use_parentheses_in_expressions=false
-cleanup.always_use_this_for_non_static_field_access=false
-cleanup.always_use_this_for_non_static_method_access=false
-cleanup.convert_functional_interfaces=false
-cleanup.convert_to_enhanced_for_loop=false
-cleanup.correct_indentation=false
-cleanup.format_source_code=true
-cleanup.format_source_code_changes_only=false
-cleanup.insert_inferred_type_arguments=false
-cleanup.make_local_variable_final=true
-cleanup.make_parameters_final=false
-cleanup.make_private_fields_final=true
-cleanup.make_type_abstract_if_missing_method=false
-cleanup.make_variable_declarations_final=false
-cleanup.never_use_blocks=false
-cleanup.never_use_parentheses_in_expressions=true
-cleanup.organize_imports=true
-cleanup.qualify_static_field_accesses_with_declaring_class=false
-cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-cleanup.qualify_static_member_accesses_with_declaring_class=false
-cleanup.qualify_static_method_accesses_with_declaring_class=false
-cleanup.remove_private_constructors=true
-cleanup.remove_redundant_modifiers=false
-cleanup.remove_redundant_semicolons=true
-cleanup.remove_redundant_type_arguments=true
-cleanup.remove_trailing_whitespaces=true
-cleanup.remove_trailing_whitespaces_all=true
-cleanup.remove_trailing_whitespaces_ignore_empty=false
-cleanup.remove_unnecessary_casts=true
-cleanup.remove_unnecessary_nls_tags=false
-cleanup.remove_unused_imports=true
-cleanup.remove_unused_local_variables=false
-cleanup.remove_unused_private_fields=true
-cleanup.remove_unused_private_members=false
-cleanup.remove_unused_private_methods=true
-cleanup.remove_unused_private_types=true
-cleanup.sort_members=false
-cleanup.sort_members_all=false
-cleanup.use_anonymous_class_creation=false
-cleanup.use_blocks=false
-cleanup.use_blocks_only_for_return_and_throw=false
-cleanup.use_lambda=true
-cleanup.use_parentheses_in_expressions=false
-cleanup.use_this_for_non_static_field_access=false
-cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-cleanup.use_this_for_non_static_method_access=false
-cleanup.use_this_for_non_static_method_access_only_if_necessary=true
-cleanup_profile=_CDT
-cleanup_settings_version=2
-eclipse.preferences.version=1
-editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=_CDT
-formatter_settings_version=14
-internal.default.compliance=user
-org.eclipse.jdt.ui.exception.name=e
-org.eclipse.jdt.ui.gettersetter.use.is=true
-org.eclipse.jdt.ui.ignorelowercasenames=true
-org.eclipse.jdt.ui.importorder=java;javax;org;com;
-org.eclipse.jdt.ui.keywordthis=false
-org.eclipse.jdt.ui.ondemandthreshold=1000
-org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.staticondemandthreshold=1000
-org.eclipse.jdt.ui.text.custom_code_templates=
-sp_cleanup.add_default_serial_version_id=true
-sp_cleanup.add_generated_serial_version_id=false
-sp_cleanup.add_missing_annotations=true
-sp_cleanup.add_missing_deprecated_annotations=true
-sp_cleanup.add_missing_methods=false
-sp_cleanup.add_missing_nls_tags=false
-sp_cleanup.add_missing_override_annotations=true
-sp_cleanup.add_missing_override_annotations_interface_methods=true
-sp_cleanup.add_serial_version_id=false
-sp_cleanup.always_use_blocks=true
-sp_cleanup.always_use_parentheses_in_expressions=false
-sp_cleanup.always_use_this_for_non_static_field_access=false
-sp_cleanup.always_use_this_for_non_static_method_access=false
-sp_cleanup.convert_functional_interfaces=false
-sp_cleanup.convert_to_enhanced_for_loop=false
-sp_cleanup.correct_indentation=false
-sp_cleanup.format_source_code=true
-sp_cleanup.format_source_code_changes_only=false
-sp_cleanup.insert_inferred_type_arguments=false
-sp_cleanup.make_local_variable_final=true
-sp_cleanup.make_parameters_final=false
-sp_cleanup.make_private_fields_final=true
-sp_cleanup.make_type_abstract_if_missing_method=false
-sp_cleanup.make_variable_declarations_final=false
-sp_cleanup.never_use_blocks=false
-sp_cleanup.never_use_parentheses_in_expressions=true
-sp_cleanup.on_save_use_additional_actions=true
-sp_cleanup.organize_imports=true
-sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
-sp_cleanup.remove_private_constructors=true
-sp_cleanup.remove_redundant_modifiers=false
-sp_cleanup.remove_redundant_semicolons=true
-sp_cleanup.remove_redundant_type_arguments=true
-sp_cleanup.remove_trailing_whitespaces=true
-sp_cleanup.remove_trailing_whitespaces_all=true
-sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
-sp_cleanup.remove_unnecessary_casts=true
-sp_cleanup.remove_unnecessary_nls_tags=false
-sp_cleanup.remove_unused_imports=true
-sp_cleanup.remove_unused_local_variables=false
-sp_cleanup.remove_unused_private_fields=true
-sp_cleanup.remove_unused_private_members=false
-sp_cleanup.remove_unused_private_methods=true
-sp_cleanup.remove_unused_private_types=true
-sp_cleanup.sort_members=false
-sp_cleanup.sort_members_all=false
-sp_cleanup.use_anonymous_class_creation=false
-sp_cleanup.use_blocks=false
-sp_cleanup.use_blocks_only_for_return_and_throw=false
-sp_cleanup.use_lambda=true
-sp_cleanup.use_parentheses_in_expressions=false
-sp_cleanup.use_this_for_non_static_field_access=false
-sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-sp_cleanup.use_this_for_non_static_method_access=false
-sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/releng/org.eclipse.cdt.sdk/META-INF/MANIFEST.MF b/releng/org.eclipse.cdt.sdk/META-INF/MANIFEST.MF
index 53e2c5d2e96..710f279eec4 100644
--- a/releng/org.eclipse.cdt.sdk/META-INF/MANIFEST.MF
+++ b/releng/org.eclipse.cdt.sdk/META-INF/MANIFEST.MF
@@ -2,6 +2,6 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.sdk;singleton:=true
-Bundle-Version: 9.10.0.qualifier
+Bundle-Version: 10.7.0.qualifier
Bundle-Vendor: %providerName
Bundle-Localization: plugin
diff --git a/releng/org.eclipse.cdt.sdk/about.html b/releng/org.eclipse.cdt.sdk/about.html
index 164f781a8fd..b3134865230 100644
--- a/releng/org.eclipse.cdt.sdk/about.html
+++ b/releng/org.eclipse.cdt.sdk/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/releng/org.eclipse.cdt.sdk/about.mappings b/releng/org.eclipse.cdt.sdk/about.mappings
index 0824105e69d..936a8039c3e 100644
--- a/releng/org.eclipse.cdt.sdk/about.mappings
+++ b/releng/org.eclipse.cdt.sdk/about.mappings
@@ -4,6 +4,6 @@
# This file does not need to be translated.
# The following should contain the build version.
-# e.g. "0=20020612"
-# This value will be added automaticaly via the build scripts
-0=@build@ \ No newline at end of file
+# e.g. "0=20200106-1728"
+# This value will be added automatically via the build scripts
+0=${buildId}
diff --git a/releng/org.eclipse.cdt.sdk/about.properties b/releng/org.eclipse.cdt.sdk/about.properties
index 530123dfad0..89d12c73d98 100644
--- a/releng/org.eclipse.cdt.sdk/about.properties
+++ b/releng/org.eclipse.cdt.sdk/about.properties
@@ -1,5 +1,8 @@
###############################################################################
-# Copyright (c) 2005, 2007 IBM Corporation and others.
+# Copyright (c) 2004, 2022 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
#
# This program and the accompanying materials
# are made available under the terms of the Eclipse Public License 2.0
@@ -7,20 +10,23 @@
# https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
###############################################################################
# about.properties
# contains externalized strings for about.ini
# java.io.Properties file (ISO 8859-1 with "\" escapes)
# fill-ins are supplied by about.mappings
# This file should be translated.
+# NOTE TO TRANSLATOR: Please do not translate the featureVersion variable.
+
-blurb=Eclipse C/C++ Development Tools SDK\n\
+blurb=C/C++ Development Tools SDK\n\
\n\
Version: {featureVersion}\n\
Build id: {0}\n\
\n\
-(c) Copyright Eclipse contributors and others, 2005, 2010.\n\
+Copyright (c) 2004, 2022 Contributors to the Eclipse Foundation
+\n\
+See the NOTICE file(s) distributed with this work for additional\n\
+information regarding copyright ownership.\n\
+\n\
Visit http://www.eclipse.org/cdt
diff --git a/releng/org.eclipse.cdt.target/.settings/org.eclipse.core.resources.prefs b/releng/org.eclipse.cdt.target/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/releng/org.eclipse.cdt.target/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/releng/org.eclipse.cdt.target/.settings/org.eclipse.jdt.core.prefs b/releng/org.eclipse.cdt.target/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 2b6ecff8a01..00000000000
--- a/releng/org.eclipse.cdt.target/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,464 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
-org.eclipse.jdt.core.codeComplete.argumentPrefixes=
-org.eclipse.jdt.core.codeComplete.argumentSuffixes=
-org.eclipse.jdt.core.codeComplete.fieldPrefixes=
-org.eclipse.jdt.core.codeComplete.fieldSuffixes=
-org.eclipse.jdt.core.codeComplete.localPrefixes=
-org.eclipse.jdt.core.codeComplete.localSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
-org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
-org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
-org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
-org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
-org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
-org.eclipse.jdt.core.compiler.problem.APILeak=warning
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
-org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
-org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
-org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
-org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
-org.eclipse.jdt.core.compiler.problem.nullReference=error
-org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
-org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
-org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
-org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
-org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
-org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
-org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
-org.eclipse.jdt.core.formatter.align_with_spaces=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
-org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
-org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
-org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
-org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=0
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
-org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
-org.eclipse.jdt.core.formatter.comment.format_block_comments=false
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
-org.eclipse.jdt.core.formatter.comment.format_line_comments=false
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
-org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
-org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
-org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.join_lines_in_comments=true
-org.eclipse.jdt.core.formatter.join_wrapped_lines=true
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=120
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_on_off_tags=true
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
-org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
-org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/releng/org.eclipse.cdt.target/.settings/org.eclipse.jdt.ui.prefs b/releng/org.eclipse.cdt.target/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index e44576346c4..00000000000
--- a/releng/org.eclipse.cdt.target/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,133 +0,0 @@
-cleanup.add_default_serial_version_id=true
-cleanup.add_generated_serial_version_id=false
-cleanup.add_missing_annotations=true
-cleanup.add_missing_deprecated_annotations=true
-cleanup.add_missing_methods=false
-cleanup.add_missing_nls_tags=false
-cleanup.add_missing_override_annotations=true
-cleanup.add_missing_override_annotations_interface_methods=true
-cleanup.add_serial_version_id=false
-cleanup.always_use_blocks=true
-cleanup.always_use_parentheses_in_expressions=false
-cleanup.always_use_this_for_non_static_field_access=false
-cleanup.always_use_this_for_non_static_method_access=false
-cleanup.convert_functional_interfaces=false
-cleanup.convert_to_enhanced_for_loop=false
-cleanup.correct_indentation=false
-cleanup.format_source_code=true
-cleanup.format_source_code_changes_only=false
-cleanup.insert_inferred_type_arguments=false
-cleanup.make_local_variable_final=true
-cleanup.make_parameters_final=false
-cleanup.make_private_fields_final=true
-cleanup.make_type_abstract_if_missing_method=false
-cleanup.make_variable_declarations_final=false
-cleanup.never_use_blocks=false
-cleanup.never_use_parentheses_in_expressions=true
-cleanup.organize_imports=true
-cleanup.qualify_static_field_accesses_with_declaring_class=false
-cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-cleanup.qualify_static_member_accesses_with_declaring_class=false
-cleanup.qualify_static_method_accesses_with_declaring_class=false
-cleanup.remove_private_constructors=true
-cleanup.remove_redundant_modifiers=false
-cleanup.remove_redundant_semicolons=true
-cleanup.remove_redundant_type_arguments=true
-cleanup.remove_trailing_whitespaces=true
-cleanup.remove_trailing_whitespaces_all=true
-cleanup.remove_trailing_whitespaces_ignore_empty=false
-cleanup.remove_unnecessary_casts=true
-cleanup.remove_unnecessary_nls_tags=false
-cleanup.remove_unused_imports=true
-cleanup.remove_unused_local_variables=false
-cleanup.remove_unused_private_fields=true
-cleanup.remove_unused_private_members=false
-cleanup.remove_unused_private_methods=true
-cleanup.remove_unused_private_types=true
-cleanup.sort_members=false
-cleanup.sort_members_all=false
-cleanup.use_anonymous_class_creation=false
-cleanup.use_blocks=false
-cleanup.use_blocks_only_for_return_and_throw=false
-cleanup.use_lambda=true
-cleanup.use_parentheses_in_expressions=false
-cleanup.use_this_for_non_static_field_access=false
-cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-cleanup.use_this_for_non_static_method_access=false
-cleanup.use_this_for_non_static_method_access_only_if_necessary=true
-cleanup_profile=_CDT
-cleanup_settings_version=2
-eclipse.preferences.version=1
-editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=_CDT
-formatter_settings_version=14
-internal.default.compliance=user
-org.eclipse.jdt.ui.exception.name=e
-org.eclipse.jdt.ui.gettersetter.use.is=true
-org.eclipse.jdt.ui.ignorelowercasenames=true
-org.eclipse.jdt.ui.importorder=java;javax;org;com;
-org.eclipse.jdt.ui.keywordthis=false
-org.eclipse.jdt.ui.ondemandthreshold=1000
-org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.staticondemandthreshold=1000
-org.eclipse.jdt.ui.text.custom_code_templates=
-sp_cleanup.add_default_serial_version_id=true
-sp_cleanup.add_generated_serial_version_id=false
-sp_cleanup.add_missing_annotations=true
-sp_cleanup.add_missing_deprecated_annotations=true
-sp_cleanup.add_missing_methods=false
-sp_cleanup.add_missing_nls_tags=false
-sp_cleanup.add_missing_override_annotations=true
-sp_cleanup.add_missing_override_annotations_interface_methods=true
-sp_cleanup.add_serial_version_id=false
-sp_cleanup.always_use_blocks=true
-sp_cleanup.always_use_parentheses_in_expressions=false
-sp_cleanup.always_use_this_for_non_static_field_access=false
-sp_cleanup.always_use_this_for_non_static_method_access=false
-sp_cleanup.convert_functional_interfaces=false
-sp_cleanup.convert_to_enhanced_for_loop=false
-sp_cleanup.correct_indentation=false
-sp_cleanup.format_source_code=true
-sp_cleanup.format_source_code_changes_only=false
-sp_cleanup.insert_inferred_type_arguments=false
-sp_cleanup.make_local_variable_final=true
-sp_cleanup.make_parameters_final=false
-sp_cleanup.make_private_fields_final=true
-sp_cleanup.make_type_abstract_if_missing_method=false
-sp_cleanup.make_variable_declarations_final=false
-sp_cleanup.never_use_blocks=false
-sp_cleanup.never_use_parentheses_in_expressions=true
-sp_cleanup.on_save_use_additional_actions=true
-sp_cleanup.organize_imports=true
-sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
-sp_cleanup.remove_private_constructors=true
-sp_cleanup.remove_redundant_modifiers=false
-sp_cleanup.remove_redundant_semicolons=true
-sp_cleanup.remove_redundant_type_arguments=true
-sp_cleanup.remove_trailing_whitespaces=true
-sp_cleanup.remove_trailing_whitespaces_all=true
-sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
-sp_cleanup.remove_unnecessary_casts=true
-sp_cleanup.remove_unnecessary_nls_tags=false
-sp_cleanup.remove_unused_imports=true
-sp_cleanup.remove_unused_local_variables=false
-sp_cleanup.remove_unused_private_fields=true
-sp_cleanup.remove_unused_private_members=false
-sp_cleanup.remove_unused_private_methods=true
-sp_cleanup.remove_unused_private_types=true
-sp_cleanup.sort_members=false
-sp_cleanup.sort_members_all=false
-sp_cleanup.use_anonymous_class_creation=false
-sp_cleanup.use_blocks=false
-sp_cleanup.use_blocks_only_for_return_and_throw=false
-sp_cleanup.use_lambda=true
-sp_cleanup.use_parentheses_in_expressions=false
-sp_cleanup.use_this_for_non_static_field_access=false
-sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-sp_cleanup.use_this_for_non_static_method_access=false
-sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/releng/org.eclipse.cdt.target/cdt-baseline.target b/releng/org.eclipse.cdt.target/cdt-baseline.target
index 06d727b85fc..d80ad2d92ea 100644
--- a/releng/org.eclipse.cdt.target/cdt-baseline.target
+++ b/releng/org.eclipse.cdt.target/cdt-baseline.target
@@ -1,57 +1,101 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?><?pde version="3.8"?><target name="cdt-baseline" sequenceNumber="17">
-<locations>
-<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.cdt.gnu.build.source.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.cdt.debug.gdbjtag.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.cdt.gnu.dsf.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.cdt.gdb.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.cdt.debug.standalone.source.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.cdt.visualizer.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.cdt.core.lrparser.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.cdt.docker.launcher.source.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.cdt.gnu.debug.source.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.cdt.platform.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.cdt.debug.ui.memory.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.cdt.bupc.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.cdt.debug.ui.memory.source.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.cdt.core.parser.upc.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.cdt.gnu.debug.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.cdt.core.lrparser.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.cdt.gnu.multicorevisualizer.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.cdt.examples.dsf.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.cdt.msw.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.cdt.build.crossgcc.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.cdt.platform.source.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.cdt.autotools.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.cdt.launch.remote.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.cdt.qt.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.cdt.xlc.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.cdt.xlc.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.cdt.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.cdt.debug.standalone.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.cdt.managedbuilder.llvm.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.cdt.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.cdt.gnu.build.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.cdt.docker.launcher.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.cdt.testsrunner.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.cdt.gdb.source.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.cdt.native.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.cdt.arduino.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.cdt.native.source.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.cdt.core.parser.upc.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.cdt.gnu.dsf.source.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.cdt.autotools.source.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.tools.templates.core" version="0.0.0"/>
-<unit id="org.eclipse.tools.templates.ui" version="0.0.0"/>
-<repository location="https://download.eclipse.org/tools/cdt/releases/9.9/cdt-9.9.0/"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.launchbar.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.launchbar.remote.feature.group" version="0.0.0"/>
-<repository location="https://download.eclipse.org/tools/cdt/launchbar/2.4/launchbar-2.4.0/"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
-<repository location="https://download.eclipse.org/releases/2019-09/"/>
-</location>
-</locations>
-</target> \ No newline at end of file
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?pde version="3.8"?>
+<target name="cdt-baseline" sequenceNumber="33">
+ <locations>
+ <location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
+ <repository location="https://download.eclipse.org/eclipse/updates/4.23/R-4.23-202203080310"/>
+ </location>
+ <location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
+ <repository location="https://download.eclipse.org/egit/updates-6.1/"/>
+ <unit id="org.eclipse.egit.feature.group" version="0.0.0"/>
+ </location>
+ <location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
+ <repository location="https://download.eclipse.org/linuxtools/update-docker-5.6.0/"/>
+ <unit id="org.eclipse.linuxtools.docker.feature.feature.group" version="0.0.0"/>
+ </location>
+ <location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
+ <repository location="https://download.eclipse.org/lsp4e/releases/0.20.2/"/>
+ <unit id="org.eclipse.lsp4e" version="0.0.0"/>
+ <unit id="org.eclipse.lsp4e.debug" version="0.0.0"/>
+ </location>
+ <location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
+ <repository location="https://download.eclipse.org/modeling/emf/emf/builds/release/2.28/"/>
+ </location>
+ <location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
+ <repository location="https://download.eclipse.org/tm4e/releases/0.4.3/"/>
+ <unit id="org.eclipse.tm4e.feature.feature.group" version="0.0.0"/>
+ </location>
+ <location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
+ <repository location="https://download.eclipse.org/tools/cdt/releases/10.6/cdt-10.6.0/"/>
+ <unit id="org.eclipse.cdt.autotools.feature.group" version="0.0.0"/>
+ <unit id="org.eclipse.cdt.build.crossgcc.feature.group" version="0.0.0"/>
+ <unit id="org.eclipse.cdt.cmake.feature.group" version="0.0.0"/>
+ <unit id="org.eclipse.cdt.core.autotools.feature.group" version="0.0.0"/>
+ <unit id="org.eclipse.cdt.debug.dap.feature.group" version="0.0.0"/>
+ <unit id="org.eclipse.cdt.debug.dap.gdbjtag.feature.group" version="0.0.0"/>
+ <unit id="org.eclipse.cdt.debug.gdbjtag.feature.group" version="0.0.0"/>
+ <unit id="org.eclipse.cdt.debug.standalone.feature.group" version="0.0.0"/>
+ <unit id="org.eclipse.cdt.debug.ui.memory.feature.group" version="0.0.0"/>
+ <unit id="org.eclipse.cdt.docker.launcher.feature.group" version="0.0.0"/>
+ <unit id="org.eclipse.cdt.feature.group" version="0.0.0"/>
+ <unit id="org.eclipse.cdt.gdb.feature.group" version="0.0.0"/>
+ <unit id="org.eclipse.cdt.gnu.build.feature.group" version="0.0.0"/>
+ <unit id="org.eclipse.cdt.gnu.debug.feature.group" version="0.0.0"/>
+ <unit id="org.eclipse.cdt.gnu.dsf.feature.group" version="0.0.0"/>
+ <unit id="org.eclipse.cdt.gnu.multicorevisualizer.feature.group" version="0.0.0"/>
+ <unit id="org.eclipse.cdt.examples.dsf.feature.group" version="0.0.0"/>
+ <unit id="org.eclipse.cdt.launch.remote.feature.group" version="0.0.0"/>
+ <unit id="org.eclipse.cdt.launch.serial.feature.feature.group" version="0.0.0"/>
+ <unit id="org.eclipse.cdt.llvm.dsf.lldb.feature.group" version="0.0.0"/>
+ <unit id="org.eclipse.cdt.managedbuilder.llvm.feature.group" version="0.0.0"/>
+ <unit id="org.eclipse.cdt.meson.feature.group" version="0.0.0"/>
+ <unit id="org.eclipse.cdt.msw.feature.group" version="0.0.0"/>
+ <unit id="org.eclipse.cdt.native.feature.group" version="0.0.0"/>
+ <unit id="org.eclipse.cdt.platform.feature.group" version="0.0.0"/>
+ <unit id="org.eclipse.cdt.qt.feature.group" version="0.0.0"/>
+ <unit id="org.eclipse.cdt.sdk.feature.group" version="0.0.0"/>
+ <unit id="org.eclipse.cdt.testsrunner.feature.feature.group" version="0.0.0"/>
+ <unit id="org.eclipse.cdt.visualizer.feature.group" version="0.0.0"/>
+ <unit id="org.eclipse.launchbar.feature.group" version="0.0.0"/>
+ <unit id="org.eclipse.launchbar.remote.feature.group" version="0.0.0"/>
+ <unit id="org.eclipse.tm.terminal.connector.cdtserial.feature.feature.group" version="0.0.0"/>
+ <unit id="org.eclipse.tm.terminal.connector.local.feature.feature.group" version="0.0.0"/>
+ <unit id="org.eclipse.tm.terminal.connector.remote.feature.feature.group" version="0.0.0"/>
+ <unit id="org.eclipse.tm.terminal.connector.ssh.feature.feature.group" version="0.0.0"/>
+ <unit id="org.eclipse.tm.terminal.connector.telnet.feature.feature.group" version="0.0.0"/>
+ <unit id="org.eclipse.tm.terminal.control.feature.feature.group" version="0.0.0"/>
+ <unit id="org.eclipse.tm.terminal.feature.feature.group" version="0.0.0"/>
+ <unit id="org.eclipse.tm.terminal.view.feature.feature.group" version="0.0.0"/>
+ <unit id="org.eclipse.remote.console.feature.group" version="0.0.0"/>
+ <unit id="org.eclipse.remote.feature.group" version="0.0.0"/>
+ <unit id="org.eclipse.remote.serial.feature.group" version="0.0.0"/>
+ </location>
+ <location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
+ <repository location="https://download.eclipse.org/tools/orbit/downloads/drops/R20220302172233/repository/"/>
+ <unit id="com.google.gson" version="0.0.0"/>
+ <unit id="com.sun.xml.bind" version="2.3.3.v20201118-1818"/>
+ <unit id="javax.activation" version="1.2.2.v20201119-1642"/>
+ <unit id="jakarta.xml.bind" version="2.3.3.v20201118-1818"/>
+ <unit id="javax.xml.stream" version="0.0.0"/>
+ <unit id="net.sourceforge.lpg.lpgjavaruntime" version="0.0.0"/>
+ <unit id="org.antlr.runtime" version="0.0.0"/>
+ <unit id="org.apache.commons.compress" version="0.0.0"/>
+ <unit id="org.apache.log4j" version="0.0.0"/>
+ <unit id="org.assertj" version="0.0.0"/>
+ <unit id="org.freemarker" version="0.0.0"/>
+ <unit id="org.hamcrest" version="0.0.0"/>
+ <unit id="org.hamcrest.core" version="0.0.0"/>
+ <unit id="org.junit" version="0.0.0"/>
+ <unit id="org.junit.jupiter.api" version="0.0.0"/>
+ <unit id="org.mockito" version="0.0.0"/>
+ <unit id="org.slf4j.impl.log4j12" version="0.0.0"/>
+ <unit id="org.yaml.snakeyaml" version="0.0.0"/>
+ <unit id="com.sun.jna" version="5.8.0.v20210503-0343"/>
+ <unit id="com.sun.jna.platform" version="5.8.0.v20210406-1004"/>
+ </location>
+ <location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
+ <repository location="https://download.eclipse.org/wildwebdeveloper/snapshots/"/>
+ <unit id="org.eclipse.wildwebdeveloper.embedder.node.feature.feature.group" version="0.0.0"/>
+ </location>
+ </locations>
+</target>
diff --git a/releng/org.eclipse.cdt.target/cdt.target b/releng/org.eclipse.cdt.target/cdt.target
index c81a6916415..f5a0b9e8874 100644
--- a/releng/org.eclipse.cdt.target/cdt.target
+++ b/releng/org.eclipse.cdt.target/cdt.target
@@ -1,105 +1,88 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?><?pde version="3.8"?><target name="cdt" sequenceNumber="63">
-<locations>
-<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
-<unit id="com.google.gson" version="0.0.0"/>
-<unit id="com.sun.xml.bind" version="0.0.0"/>
-<unit id="javax.activation" version="0.0.0"/>
-<unit id="javax.xml.bind" version="0.0.0"/>
-<unit id="javax.xml.stream" version="0.0.0"/>
-<unit id="net.sourceforge.lpg.lpgjavaruntime" version="0.0.0"/>
-<unit id="org.antlr.runtime" version="0.0.0"/>
-<unit id="org.apache.commons.compress" version="0.0.0"/>
-<unit id="org.apache.log4j" version="0.0.0"/>
-<unit id="org.apache.log4j.source" version="0.0.0"/>
-<unit id="org.assertj" version="0.0.0"/>
-<unit id="org.freemarker" version="0.0.0"/>
-<unit id="org.hamcrest" version="0.0.0"/>
-<unit id="org.hamcrest.core" version="0.0.0"/>
-<unit id="org.junit" version="0.0.0"/>
-<unit id="org.junit.source" version="0.0.0"/>
-<unit id="org.junit.jupiter.api" version="0.0.0"/>
-<unit id="org.junit.jupiter.api.source" version="0.0.0"/>
-<unit id="org.mockito" version="0.0.0"/>
-<unit id="org.slf4j.impl.log4j12" version="0.0.0"/>
-<repository location="https://download.eclipse.org/tools/orbit/downloads/drops/R20190827152740/repository/"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.epp.logging.aeri.feature.feature.group" version="0.0.0"/>
-<repository location="http://download.eclipse.org/technology/epp/logging/stable/"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.swtbot.eclipse.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.swtbot.eclipse.test.junit.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.swtbot.feature.group" version="0.0.0"/>
-<repository location="https://download.eclipse.org/technology/swtbot/releases/2.7.0/"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.remote.console.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.remote.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.remote.serial.feature.group" version="0.0.0"/>
-<repository location="https://download.eclipse.org/tools/ptp/builds/remote/3.0.1/"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
-<!-- Needed for org.eclipse.emf.edit -->
-<!-- Need to pull in org.eclipse.cdt.utils.pty for org.eclipse.remote.core to build -->
-<!-- This slows down the build significantly, it should be removed when it becomes possible. -->
-<repository location="https://download.eclipse.org/releases/2019-09/"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.license.feature.group" version="0.0.0"/>
-<repository location="http://download.eclipse.org/cbi/updates/license/"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.equinox.executable.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.test.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.sdk.feature.group" version="0.0.0"/>
-<repository location="https://download.eclipse.org/eclipse/updates/4.13/R-4.13-201909161045/"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.launchbar.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.launchbar.remote.feature.group" version="0.0.0"/>
-<repository location="https://download.eclipse.org/tools/cdt/launchbar/2.4/launchbar-2.4.0-simrel-2019-09-m1/"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.linuxtools.docker.feature.feature.group" version="0.0.0"/>
-<repository location="http://download.eclipse.org/linuxtools/updates-docker-nightly/"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.wst.xml_ui.feature.feature.group" version="0.0.0"/>
-<repository location="https://download.eclipse.org/webtools/downloads/drops/R3.15.0/R-3.15.0-20190830034720/repository/"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.tm.terminal.connector.cdtserial.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.tm.terminal.control" version="0.0.0"/>
-<unit id="org.eclipse.tm.terminal.feature.feature.group" version="0.0.0"/>
-<repository location="http://download.eclipse.org/tm/terminal/updates/4.4milestones/"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.tools.templates.core" version="0.0.0"/>
-<unit id="org.eclipse.tools.templates.core.source" version="0.0.0"/>
-<unit id="org.eclipse.tools.templates.freemarker" version="0.0.0"/>
-<unit id="org.eclipse.tools.templates.freemarker.java11" version="0.0.0"/>
-<unit id="org.eclipse.tools.templates.freemarker.source" version="0.0.0"/>
-<unit id="org.eclipse.tools.templates.freemarker.java11.source" version="0.0.0"/>
-<unit id="org.eclipse.tools.templates.ui" version="0.0.0"/>
-<unit id="org.eclipse.tools.templates.ui.source" version="0.0.0"/>
-<repository location="http://download.eclipse.org/tools/cdt/tools.templates/1.1/tools.template-1.1.1-simrel-2018-12a/"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.tm4e.feature.feature.group" version="0.0.0"/>
-<repository location="https://download.eclipse.org/tm4e/releases/0.3.4/"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.lsp4e" version="0.0.0"/>
-<unit id="org.eclipse.lsp4e.debug" version="0.0.0"/>
-<repository location="http://download.eclipse.org/lsp4e/snapshots/"/>
-</location>
-</locations>
-<targetJRE path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
-<launcherArgs>
-<vmArgs>-Xms40m&#13;
--Xmx512M&#13;
--ea</vmArgs>
-<programArgs>-consolelog</programArgs>
-</launcherArgs>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?pde version="3.8"?>
+<target name="cdt" sequenceNumber="122">
+ <locations>
+ <location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
+ <repository location="https://download.eclipse.org/cbi/updates/license/"/>
+ <unit id="org.eclipse.license.feature.group" version="0.0.0"/>
+ </location>
+ <location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
+ <repository location="https://download.eclipse.org/eclipse/updates/4.24/R-4.24-202206070700/"/>
+ <unit id="org.eclipse.equinox.executable.feature.group" version="0.0.0"/>
+ <unit id="org.eclipse.jdt.annotation" version="0.0.0"/>
+ <unit id="org.eclipse.sdk.feature.group" version="0.0.0"/>
+ <unit id="org.eclipse.test.feature.group" version="0.0.0"/>
+ <unit id="org.eclipse.unittest.ui" version="0.0.0"/>
+ </location>
+ <location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
+ <repository location="https://download.eclipse.org/egit/updates"/>
+ <unit id="org.eclipse.egit.feature.group" version="0.0.0"/>
+ </location>
+ <location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
+ <repository location="https://download.eclipse.org/linuxtools/update-2022-06-docker-rc2"/>
+ <unit id="org.eclipse.linuxtools.docker.feature.feature.group" version="0.0.0"/>
+ </location>
+ <location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
+ <repository location="https://download.eclipse.org/lsp4e/releases/latest/"/>
+ <unit id="org.eclipse.lsp4e" version="0.0.0"/>
+ <unit id="org.eclipse.lsp4e.debug" version="0.0.0"/>
+ </location>
+ <location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
+ <repository location="https://download.eclipse.org/modeling/emf/emf/builds/release/latest/"/>
+ </location>
+ <location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
+ <repository location="https://download.eclipse.org/technology/swtbot/releases/3.1.0/"/>
+ <unit id="org.eclipse.swtbot.eclipse.feature.group" version="0.0.0"/>
+ <unit id="org.eclipse.swtbot.eclipse.test.junit.feature.group" version="0.0.0"/>
+ <unit id="org.eclipse.swtbot.feature.group" version="0.0.0"/>
+ </location>
+ <location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
+ <repository location="https://download.eclipse.org/tm4e/releases/0.4.3/"/>
+ <unit id="org.eclipse.tm4e.feature.feature.group" version="0.0.0"/>
+ </location>
+ <location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
+ <repository location="https://download.eclipse.org/tools/cdt/releases/10.7/cdt-10.7.0/"/>
+ <!-- We explicitly have CDT in target platform so that developers can develop org.eclipse.cdt.core/ui without requiring all the projects from CDT in their workspace. -->
+ <unit id="org.eclipse.cdt.feature.group" version="0.0.0"/>
+ </location>
+ <location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
+ <repository location="https://download.eclipse.org/wildwebdeveloper/releases/0.13.5/"/>
+ <unit id="org.eclipse.wildwebdeveloper.embedder.node.feature.feature.group" version="0.0.0"/>
+ </location>
+ <location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
+ <repository location="https://download.eclipse.org/tools/orbit/downloads/drops/R20220531185310/repository/"/>
+ <unit id="com.google.gson" version="0.0.0"/>
+ <unit id="com.sun.xml.bind" version="2.3.3.v20201118-1818"/>
+ <unit id="javax.activation" version="1.2.2.v20201119-1642"/>
+ <unit id="jakarta.xml.bind" version="2.3.3.v20201118-1818"/>
+ <unit id="org.antlr.runtime" version="0.0.0"/>
+ <unit id="org.apache.commons.compress" version="0.0.0"/>
+ <unit id="org.apache.log4j" version="0.0.0"/>
+ <unit id="org.assertj" version="0.0.0"/>
+ <unit id="org.freemarker" version="0.0.0"/>
+ <unit id="org.hamcrest" version="0.0.0"/>
+ <unit id="org.hamcrest.core" version="0.0.0"/>
+ <unit id="org.junit" version="0.0.0"/>
+ <unit id="org.junit.jupiter.api" version="0.0.0"/>
+ <unit id="org.mockito" version="0.0.0"/>
+ <unit id="org.yaml.snakeyaml" version="0.0.0"/>
+ <unit id="com.sun.jna" version="5.8.0.v20210503-0343"/>
+ <unit id="com.sun.jna.platform" version="5.8.0.v20210406-1004"/>
+ <unit id="javax.activation" version="2.0.0.v20201118-1818"/>
+ <unit id="javax.xml" version="1.4.1.v20220503-2331"/>
+ </location>
+ <location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
+ <repository location="https://download.eclipse.org/tools/orbit/downloads/drops/R20201118194144/repository/"/>
+ <unit id="javax.xml.stream" version="0.0.0"/>
+ <unit id="net.sourceforge.lpg.lpgjavaruntime" version="0.0.0"/>
+ <unit id="org.slf4j.impl.log4j12" version="0.0.0"/>
+ </location>
+ </locations>
+ <targetJRE path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <launcherArgs>
+ <vmArgs>-Xms40m&#13;
+ -Xmx512M&#13;
+ -ea</vmArgs>
+ <programArgs>-consolelog</programArgs>
+ </launcherArgs>
</target>
diff --git a/releng/org.eclipse.cdt.target/pom.xml b/releng/org.eclipse.cdt.target/pom.xml
index 7f09073a97e..a990283fba9 100644
--- a/releng/org.eclipse.cdt.target/pom.xml
+++ b/releng/org.eclipse.cdt.target/pom.xml
@@ -1,3 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2014, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
@@ -6,7 +17,7 @@
<parent>
<groupId>org.eclipse.cdt</groupId>
<artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
+ <version>10.7.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
@@ -20,7 +31,7 @@
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
- <version>3.0.0</version>
+ <version>3.3.0</version>
<executions>
<execution>
<id>attach-artifacts</id>
diff --git a/releng/org.eclipse.cdt.testing-feature/.project b/releng/org.eclipse.cdt.testing-feature/.project
index 63f3a231d39..7028a5894a6 100644
--- a/releng/org.eclipse.cdt.testing-feature/.project
+++ b/releng/org.eclipse.cdt.testing-feature/.project
@@ -6,17 +6,12 @@
</projects>
<buildSpec>
<buildCommand>
- <name>org.eclipse.pde.ManifestBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.SchemaBuilder</name>
+ <name>org.eclipse.pde.FeatureBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
- <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.pde.FeatureNature</nature>
</natures>
</projectDescription>
diff --git a/releng/org.eclipse.cdt.testing-feature/.settings/org.eclipse.core.resources.prefs b/releng/org.eclipse.cdt.testing-feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/releng/org.eclipse.cdt.testing-feature/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/releng/org.eclipse.cdt.testing-feature/feature.xml b/releng/org.eclipse.cdt.testing-feature/feature.xml
index e3c77472a4b..337586f0d64 100644
--- a/releng/org.eclipse.cdt.testing-feature/feature.xml
+++ b/releng/org.eclipse.cdt.testing-feature/feature.xml
@@ -1,8 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2003, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<feature
id="org.eclipse.cdt.testing"
label="%featureName"
- version="9.10.0.qualifier"
+ version="10.7.0.qualifier"
provider-name="%providerName"
license-feature="org.eclipse.license"
license-feature-version="0.0.0">
diff --git a/releng/org.eclipse.cdt.testing-feature/pom.xml b/releng/org.eclipse.cdt.testing-feature/pom.xml
index 64734902dee..b5a78df43c8 100644
--- a/releng/org.eclipse.cdt.testing-feature/pom.xml
+++ b/releng/org.eclipse.cdt.testing-feature/pom.xml
@@ -1,4 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2013, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
@@ -7,7 +17,7 @@
<parent>
<groupId>org.eclipse.cdt</groupId>
<artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
+ <version>10.7.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
diff --git a/releng/org.eclipse.cdt.testing.repo/.settings/org.eclipse.core.resources.prefs b/releng/org.eclipse.cdt.testing.repo/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/releng/org.eclipse.cdt.testing.repo/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/releng/org.eclipse.cdt.testing.repo/.settings/org.eclipse.jdt.core.prefs b/releng/org.eclipse.cdt.testing.repo/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 2b6ecff8a01..00000000000
--- a/releng/org.eclipse.cdt.testing.repo/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,464 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
-org.eclipse.jdt.core.codeComplete.argumentPrefixes=
-org.eclipse.jdt.core.codeComplete.argumentSuffixes=
-org.eclipse.jdt.core.codeComplete.fieldPrefixes=
-org.eclipse.jdt.core.codeComplete.fieldSuffixes=
-org.eclipse.jdt.core.codeComplete.localPrefixes=
-org.eclipse.jdt.core.codeComplete.localSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
-org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
-org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
-org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
-org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
-org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
-org.eclipse.jdt.core.compiler.problem.APILeak=warning
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
-org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
-org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
-org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
-org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
-org.eclipse.jdt.core.compiler.problem.nullReference=error
-org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
-org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
-org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
-org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
-org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
-org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
-org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
-org.eclipse.jdt.core.formatter.align_with_spaces=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
-org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
-org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
-org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
-org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=0
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
-org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
-org.eclipse.jdt.core.formatter.comment.format_block_comments=false
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
-org.eclipse.jdt.core.formatter.comment.format_line_comments=false
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
-org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
-org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
-org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.join_lines_in_comments=true
-org.eclipse.jdt.core.formatter.join_wrapped_lines=true
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=120
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_on_off_tags=true
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
-org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
-org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/releng/org.eclipse.cdt.testing.repo/.settings/org.eclipse.jdt.ui.prefs b/releng/org.eclipse.cdt.testing.repo/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index e44576346c4..00000000000
--- a/releng/org.eclipse.cdt.testing.repo/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,133 +0,0 @@
-cleanup.add_default_serial_version_id=true
-cleanup.add_generated_serial_version_id=false
-cleanup.add_missing_annotations=true
-cleanup.add_missing_deprecated_annotations=true
-cleanup.add_missing_methods=false
-cleanup.add_missing_nls_tags=false
-cleanup.add_missing_override_annotations=true
-cleanup.add_missing_override_annotations_interface_methods=true
-cleanup.add_serial_version_id=false
-cleanup.always_use_blocks=true
-cleanup.always_use_parentheses_in_expressions=false
-cleanup.always_use_this_for_non_static_field_access=false
-cleanup.always_use_this_for_non_static_method_access=false
-cleanup.convert_functional_interfaces=false
-cleanup.convert_to_enhanced_for_loop=false
-cleanup.correct_indentation=false
-cleanup.format_source_code=true
-cleanup.format_source_code_changes_only=false
-cleanup.insert_inferred_type_arguments=false
-cleanup.make_local_variable_final=true
-cleanup.make_parameters_final=false
-cleanup.make_private_fields_final=true
-cleanup.make_type_abstract_if_missing_method=false
-cleanup.make_variable_declarations_final=false
-cleanup.never_use_blocks=false
-cleanup.never_use_parentheses_in_expressions=true
-cleanup.organize_imports=true
-cleanup.qualify_static_field_accesses_with_declaring_class=false
-cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-cleanup.qualify_static_member_accesses_with_declaring_class=false
-cleanup.qualify_static_method_accesses_with_declaring_class=false
-cleanup.remove_private_constructors=true
-cleanup.remove_redundant_modifiers=false
-cleanup.remove_redundant_semicolons=true
-cleanup.remove_redundant_type_arguments=true
-cleanup.remove_trailing_whitespaces=true
-cleanup.remove_trailing_whitespaces_all=true
-cleanup.remove_trailing_whitespaces_ignore_empty=false
-cleanup.remove_unnecessary_casts=true
-cleanup.remove_unnecessary_nls_tags=false
-cleanup.remove_unused_imports=true
-cleanup.remove_unused_local_variables=false
-cleanup.remove_unused_private_fields=true
-cleanup.remove_unused_private_members=false
-cleanup.remove_unused_private_methods=true
-cleanup.remove_unused_private_types=true
-cleanup.sort_members=false
-cleanup.sort_members_all=false
-cleanup.use_anonymous_class_creation=false
-cleanup.use_blocks=false
-cleanup.use_blocks_only_for_return_and_throw=false
-cleanup.use_lambda=true
-cleanup.use_parentheses_in_expressions=false
-cleanup.use_this_for_non_static_field_access=false
-cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-cleanup.use_this_for_non_static_method_access=false
-cleanup.use_this_for_non_static_method_access_only_if_necessary=true
-cleanup_profile=_CDT
-cleanup_settings_version=2
-eclipse.preferences.version=1
-editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=_CDT
-formatter_settings_version=14
-internal.default.compliance=user
-org.eclipse.jdt.ui.exception.name=e
-org.eclipse.jdt.ui.gettersetter.use.is=true
-org.eclipse.jdt.ui.ignorelowercasenames=true
-org.eclipse.jdt.ui.importorder=java;javax;org;com;
-org.eclipse.jdt.ui.keywordthis=false
-org.eclipse.jdt.ui.ondemandthreshold=1000
-org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.staticondemandthreshold=1000
-org.eclipse.jdt.ui.text.custom_code_templates=
-sp_cleanup.add_default_serial_version_id=true
-sp_cleanup.add_generated_serial_version_id=false
-sp_cleanup.add_missing_annotations=true
-sp_cleanup.add_missing_deprecated_annotations=true
-sp_cleanup.add_missing_methods=false
-sp_cleanup.add_missing_nls_tags=false
-sp_cleanup.add_missing_override_annotations=true
-sp_cleanup.add_missing_override_annotations_interface_methods=true
-sp_cleanup.add_serial_version_id=false
-sp_cleanup.always_use_blocks=true
-sp_cleanup.always_use_parentheses_in_expressions=false
-sp_cleanup.always_use_this_for_non_static_field_access=false
-sp_cleanup.always_use_this_for_non_static_method_access=false
-sp_cleanup.convert_functional_interfaces=false
-sp_cleanup.convert_to_enhanced_for_loop=false
-sp_cleanup.correct_indentation=false
-sp_cleanup.format_source_code=true
-sp_cleanup.format_source_code_changes_only=false
-sp_cleanup.insert_inferred_type_arguments=false
-sp_cleanup.make_local_variable_final=true
-sp_cleanup.make_parameters_final=false
-sp_cleanup.make_private_fields_final=true
-sp_cleanup.make_type_abstract_if_missing_method=false
-sp_cleanup.make_variable_declarations_final=false
-sp_cleanup.never_use_blocks=false
-sp_cleanup.never_use_parentheses_in_expressions=true
-sp_cleanup.on_save_use_additional_actions=true
-sp_cleanup.organize_imports=true
-sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
-sp_cleanup.remove_private_constructors=true
-sp_cleanup.remove_redundant_modifiers=false
-sp_cleanup.remove_redundant_semicolons=true
-sp_cleanup.remove_redundant_type_arguments=true
-sp_cleanup.remove_trailing_whitespaces=true
-sp_cleanup.remove_trailing_whitespaces_all=true
-sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
-sp_cleanup.remove_unnecessary_casts=true
-sp_cleanup.remove_unnecessary_nls_tags=false
-sp_cleanup.remove_unused_imports=true
-sp_cleanup.remove_unused_local_variables=false
-sp_cleanup.remove_unused_private_fields=true
-sp_cleanup.remove_unused_private_members=false
-sp_cleanup.remove_unused_private_methods=true
-sp_cleanup.remove_unused_private_types=true
-sp_cleanup.sort_members=false
-sp_cleanup.sort_members_all=false
-sp_cleanup.use_anonymous_class_creation=false
-sp_cleanup.use_blocks=false
-sp_cleanup.use_blocks_only_for_return_and_throw=false
-sp_cleanup.use_lambda=true
-sp_cleanup.use_parentheses_in_expressions=false
-sp_cleanup.use_this_for_non_static_field_access=false
-sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-sp_cleanup.use_this_for_non_static_method_access=false
-sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/releng/org.eclipse.cdt.testing.repo/pom.xml b/releng/org.eclipse.cdt.testing.repo/pom.xml
index 42c7eb8df19..915694c47a0 100644
--- a/releng/org.eclipse.cdt.testing.repo/pom.xml
+++ b/releng/org.eclipse.cdt.testing.repo/pom.xml
@@ -1,4 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2013, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
@@ -7,7 +17,7 @@
<parent>
<groupId>org.eclipse.cdt</groupId>
<artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
+ <version>10.7.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
diff --git a/releng/org.eclipse.cdt.testing/.settings/org.eclipse.core.resources.prefs b/releng/org.eclipse.cdt.testing/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/releng/org.eclipse.cdt.testing/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/releng/org.eclipse.cdt.testing/.settings/org.eclipse.jdt.core.prefs b/releng/org.eclipse.cdt.testing/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 2b6ecff8a01..00000000000
--- a/releng/org.eclipse.cdt.testing/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,464 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
-org.eclipse.jdt.core.codeComplete.argumentPrefixes=
-org.eclipse.jdt.core.codeComplete.argumentSuffixes=
-org.eclipse.jdt.core.codeComplete.fieldPrefixes=
-org.eclipse.jdt.core.codeComplete.fieldSuffixes=
-org.eclipse.jdt.core.codeComplete.localPrefixes=
-org.eclipse.jdt.core.codeComplete.localSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
-org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
-org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
-org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
-org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
-org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
-org.eclipse.jdt.core.compiler.problem.APILeak=warning
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
-org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
-org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
-org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
-org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
-org.eclipse.jdt.core.compiler.problem.nullReference=error
-org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
-org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
-org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
-org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
-org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
-org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
-org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
-org.eclipse.jdt.core.formatter.align_with_spaces=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
-org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
-org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
-org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
-org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=0
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
-org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
-org.eclipse.jdt.core.formatter.comment.format_block_comments=false
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
-org.eclipse.jdt.core.formatter.comment.format_line_comments=false
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
-org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
-org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
-org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.join_lines_in_comments=true
-org.eclipse.jdt.core.formatter.join_wrapped_lines=true
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=120
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_on_off_tags=true
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
-org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
-org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/releng/org.eclipse.cdt.testing/.settings/org.eclipse.jdt.ui.prefs b/releng/org.eclipse.cdt.testing/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index e44576346c4..00000000000
--- a/releng/org.eclipse.cdt.testing/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,133 +0,0 @@
-cleanup.add_default_serial_version_id=true
-cleanup.add_generated_serial_version_id=false
-cleanup.add_missing_annotations=true
-cleanup.add_missing_deprecated_annotations=true
-cleanup.add_missing_methods=false
-cleanup.add_missing_nls_tags=false
-cleanup.add_missing_override_annotations=true
-cleanup.add_missing_override_annotations_interface_methods=true
-cleanup.add_serial_version_id=false
-cleanup.always_use_blocks=true
-cleanup.always_use_parentheses_in_expressions=false
-cleanup.always_use_this_for_non_static_field_access=false
-cleanup.always_use_this_for_non_static_method_access=false
-cleanup.convert_functional_interfaces=false
-cleanup.convert_to_enhanced_for_loop=false
-cleanup.correct_indentation=false
-cleanup.format_source_code=true
-cleanup.format_source_code_changes_only=false
-cleanup.insert_inferred_type_arguments=false
-cleanup.make_local_variable_final=true
-cleanup.make_parameters_final=false
-cleanup.make_private_fields_final=true
-cleanup.make_type_abstract_if_missing_method=false
-cleanup.make_variable_declarations_final=false
-cleanup.never_use_blocks=false
-cleanup.never_use_parentheses_in_expressions=true
-cleanup.organize_imports=true
-cleanup.qualify_static_field_accesses_with_declaring_class=false
-cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-cleanup.qualify_static_member_accesses_with_declaring_class=false
-cleanup.qualify_static_method_accesses_with_declaring_class=false
-cleanup.remove_private_constructors=true
-cleanup.remove_redundant_modifiers=false
-cleanup.remove_redundant_semicolons=true
-cleanup.remove_redundant_type_arguments=true
-cleanup.remove_trailing_whitespaces=true
-cleanup.remove_trailing_whitespaces_all=true
-cleanup.remove_trailing_whitespaces_ignore_empty=false
-cleanup.remove_unnecessary_casts=true
-cleanup.remove_unnecessary_nls_tags=false
-cleanup.remove_unused_imports=true
-cleanup.remove_unused_local_variables=false
-cleanup.remove_unused_private_fields=true
-cleanup.remove_unused_private_members=false
-cleanup.remove_unused_private_methods=true
-cleanup.remove_unused_private_types=true
-cleanup.sort_members=false
-cleanup.sort_members_all=false
-cleanup.use_anonymous_class_creation=false
-cleanup.use_blocks=false
-cleanup.use_blocks_only_for_return_and_throw=false
-cleanup.use_lambda=true
-cleanup.use_parentheses_in_expressions=false
-cleanup.use_this_for_non_static_field_access=false
-cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-cleanup.use_this_for_non_static_method_access=false
-cleanup.use_this_for_non_static_method_access_only_if_necessary=true
-cleanup_profile=_CDT
-cleanup_settings_version=2
-eclipse.preferences.version=1
-editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=_CDT
-formatter_settings_version=14
-internal.default.compliance=user
-org.eclipse.jdt.ui.exception.name=e
-org.eclipse.jdt.ui.gettersetter.use.is=true
-org.eclipse.jdt.ui.ignorelowercasenames=true
-org.eclipse.jdt.ui.importorder=java;javax;org;com;
-org.eclipse.jdt.ui.keywordthis=false
-org.eclipse.jdt.ui.ondemandthreshold=1000
-org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.staticondemandthreshold=1000
-org.eclipse.jdt.ui.text.custom_code_templates=
-sp_cleanup.add_default_serial_version_id=true
-sp_cleanup.add_generated_serial_version_id=false
-sp_cleanup.add_missing_annotations=true
-sp_cleanup.add_missing_deprecated_annotations=true
-sp_cleanup.add_missing_methods=false
-sp_cleanup.add_missing_nls_tags=false
-sp_cleanup.add_missing_override_annotations=true
-sp_cleanup.add_missing_override_annotations_interface_methods=true
-sp_cleanup.add_serial_version_id=false
-sp_cleanup.always_use_blocks=true
-sp_cleanup.always_use_parentheses_in_expressions=false
-sp_cleanup.always_use_this_for_non_static_field_access=false
-sp_cleanup.always_use_this_for_non_static_method_access=false
-sp_cleanup.convert_functional_interfaces=false
-sp_cleanup.convert_to_enhanced_for_loop=false
-sp_cleanup.correct_indentation=false
-sp_cleanup.format_source_code=true
-sp_cleanup.format_source_code_changes_only=false
-sp_cleanup.insert_inferred_type_arguments=false
-sp_cleanup.make_local_variable_final=true
-sp_cleanup.make_parameters_final=false
-sp_cleanup.make_private_fields_final=true
-sp_cleanup.make_type_abstract_if_missing_method=false
-sp_cleanup.make_variable_declarations_final=false
-sp_cleanup.never_use_blocks=false
-sp_cleanup.never_use_parentheses_in_expressions=true
-sp_cleanup.on_save_use_additional_actions=true
-sp_cleanup.organize_imports=true
-sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
-sp_cleanup.remove_private_constructors=true
-sp_cleanup.remove_redundant_modifiers=false
-sp_cleanup.remove_redundant_semicolons=true
-sp_cleanup.remove_redundant_type_arguments=true
-sp_cleanup.remove_trailing_whitespaces=true
-sp_cleanup.remove_trailing_whitespaces_all=true
-sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
-sp_cleanup.remove_unnecessary_casts=true
-sp_cleanup.remove_unnecessary_nls_tags=false
-sp_cleanup.remove_unused_imports=true
-sp_cleanup.remove_unused_local_variables=false
-sp_cleanup.remove_unused_private_fields=true
-sp_cleanup.remove_unused_private_members=false
-sp_cleanup.remove_unused_private_methods=true
-sp_cleanup.remove_unused_private_types=true
-sp_cleanup.sort_members=false
-sp_cleanup.sort_members_all=false
-sp_cleanup.use_anonymous_class_creation=false
-sp_cleanup.use_blocks=false
-sp_cleanup.use_blocks_only_for_return_and_throw=false
-sp_cleanup.use_lambda=true
-sp_cleanup.use_parentheses_in_expressions=false
-sp_cleanup.use_this_for_non_static_field_access=false
-sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-sp_cleanup.use_this_for_non_static_method_access=false
-sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/releng/org.eclipse.cdt.testing/META-INF/MANIFEST.MF b/releng/org.eclipse.cdt.testing/META-INF/MANIFEST.MF
index ab5c26cfe3d..72520f46ff3 100644
--- a/releng/org.eclipse.cdt.testing/META-INF/MANIFEST.MF
+++ b/releng/org.eclipse.cdt.testing/META-INF/MANIFEST.MF
@@ -2,6 +2,6 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.testing;singleton:=true
-Bundle-Version: 8.1.0.qualifier
+Bundle-Version: 8.1.300.qualifier
Bundle-Vendor: %providerName
Bundle-Localization: plugin
diff --git a/releng/org.eclipse.cdt.testing/about.html b/releng/org.eclipse.cdt.testing/about.html
index 164f781a8fd..b3134865230 100644
--- a/releng/org.eclipse.cdt.testing/about.html
+++ b/releng/org.eclipse.cdt.testing/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/releng/org.eclipse.cdt.testing/about.ini b/releng/org.eclipse.cdt.testing/about.ini
index 656877d0afa..e07a7bb377e 100644
--- a/releng/org.eclipse.cdt.testing/about.ini
+++ b/releng/org.eclipse.cdt.testing/about.ini
@@ -19,9 +19,6 @@ featureImage=cdt_logo_icon32.png
# Property "appName" contains name of the application (translated)
# needed for primary features only
-# Property "welcomePage" contains path to welcome page (special XML-based format)
-welcomePage=$nl$/welcome.xml
-
# Property "welcomePerspective" contains the id of the perspective in which the
# welcome page is to be opened.
# optional
diff --git a/releng/org.eclipse.cdt.testing/about.mappings b/releng/org.eclipse.cdt.testing/about.mappings
index 0824105e69d..936a8039c3e 100644
--- a/releng/org.eclipse.cdt.testing/about.mappings
+++ b/releng/org.eclipse.cdt.testing/about.mappings
@@ -4,6 +4,6 @@
# This file does not need to be translated.
# The following should contain the build version.
-# e.g. "0=20020612"
-# This value will be added automaticaly via the build scripts
-0=@build@ \ No newline at end of file
+# e.g. "0=20200106-1728"
+# This value will be added automatically via the build scripts
+0=${buildId}
diff --git a/releng/org.eclipse.cdt.testing/about.properties b/releng/org.eclipse.cdt.testing/about.properties
index 8562837df8c..8f35c34b7da 100644
--- a/releng/org.eclipse.cdt.testing/about.properties
+++ b/releng/org.eclipse.cdt.testing/about.properties
@@ -1,5 +1,8 @@
###############################################################################
-# Copyright (c) 2005, 2007 IBM Corporation and others.
+# Copyright (c) 2003, 2022 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
#
# This program and the accompanying materials
# are made available under the terms of the Eclipse Public License 2.0
@@ -7,20 +10,23 @@
# https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
###############################################################################
# about.properties
# contains externalized strings for about.ini
# java.io.Properties file (ISO 8859-1 with "\" escapes)
# fill-ins are supplied by about.mappings
# This file should be translated.
+# NOTE TO TRANSLATOR: Please do not translate the featureVersion variable.
+
-blurb=Eclipse C/C++ Development Tools Testing Framework\n\
+blurb=C/C++ Development Tooling Tests\n\
\n\
Version: {featureVersion}\n\
Build id: {0}\n\
\n\
-(c) Copyright Eclipse contributors and others, 2000, 2010.\n\
+Copyright (c) 2003, 2022 Contributors to the Eclipse Foundation
+\n\
+See the NOTICE file(s) distributed with this work for additional\n\
+information regarding copyright ownership.\n\
+\n\
Visit http://www.eclipse.org/cdt
diff --git a/releng/org.eclipse.cdt.testing/build.properties b/releng/org.eclipse.cdt.testing/build.properties
index 0986006222d..6b093609528 100644
--- a/releng/org.eclipse.cdt.testing/build.properties
+++ b/releng/org.eclipse.cdt.testing/build.properties
@@ -15,6 +15,7 @@ bin.includes = about.html,\
about.ini,\
about.mappings,\
about.properties,\
+ plugin.xml,\
plugin.properties,\
test.xml,\
epl-v20.html,\
diff --git a/releng/org.eclipse.cdt.testing/pom.xml b/releng/org.eclipse.cdt.testing/pom.xml
index 8c19ca8686d..396a41f50cb 100644
--- a/releng/org.eclipse.cdt.testing/pom.xml
+++ b/releng/org.eclipse.cdt.testing/pom.xml
@@ -1,4 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2013, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
@@ -7,11 +17,11 @@
<parent>
<groupId>org.eclipse.cdt</groupId>
<artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
+ <version>10.7.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
- <version>8.1.0-SNAPSHOT</version>
+ <version>8.1.300-SNAPSHOT</version>
<artifactId>org.eclipse.cdt.testing</artifactId>
<packaging>eclipse-plugin</packaging>
diff --git a/releng/org.eclipse.cdt.testing/test.xml b/releng/org.eclipse.cdt.testing/test.xml
index 4b157c4554b..4c10f2a2a92 100644
--- a/releng/org.eclipse.cdt.testing/test.xml
+++ b/releng/org.eclipse.cdt.testing/test.xml
@@ -4,9 +4,6 @@
<property name="cdt-ui-loc" value="${eclipse-home}/cdt_ui_folder"/>
<property name="cdt-mbs-core-loc" value="${eclipse-home}/cdt_mbs_core_folder"/>
<property name="cdt-mbs-ui-loc" value="${eclipse-home}/cdt_mbs_ui_folder"/>
- <property name="cdt-lr-parser-loc" value="${eclipse-home}/cdt_lr_parser_folder"/>
- <property name="cdt-upc-parser-loc" value="${eclipse-home}/cdt_upc_parser_folder"/>
- <property name="cdt-lr-parser-xlc-loc" value="${eclipse-home}/cdt_lr_parser_xlc_folder"/>
<property name="cdt-vmargs" value=" -ea -Xms40m -Xmx1024m"/>
<property name="cdt-common-vmargs" value="-Dorg.eclipse.swt.browser.XULRunnerPath=/shared/common/mozilla-xulrunner181-1.8.1.4-30.ppc"/>
@@ -63,36 +60,6 @@
<property name="extraVMargs" value="${cdt-common-vmargs}"/>
</ant>
</target>
-
- <target name="cdt-lr-parser" depends="init">
- <ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
- <property name="data-dir" value="${cdt-lr-parser-loc}"/>
- <property name="plugin-name" value="org.eclipse.cdt.core.lrparser.tests"/>
- <property name="classname" value="org.eclipse.cdt.core.lrparser.tests.LRParserTestSuite"/>
- <property name="vmargs" value="${cdt-vmargs}"/>
- <property name="extraVMargs" value="${cdt-common-vmargs}"/>
- </ant>
- </target>
-
- <target name="cdt-upc-parser" depends="init">
- <ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
- <property name="data-dir" value="${cdt-upc-parser-loc}"/>
- <property name="plugin-name" value="org.eclipse.cdt.core.parser.upc.tests"/>
- <property name="classname" value="org.eclipse.cdt.core.parser.upc.tests.UPCParserTestSuite"/>
- <property name="vmargs" value="${cdt-vmargs}"/>
- <property name="extraVMargs" value="${cdt-common-vmargs}"/>
- </ant>
- </target>
-
- <target name="cdt-lr-parser-xlc" depends="init">
- <ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
- <property name="data-dir" value="${cdt-lr-parser-xlc-loc}"/>
- <property name="plugin-name" value="org.eclipse.cdt.core.lrparser.xlc.tests"/>
- <property name="classname" value="org.eclipse.cdt.core.parser.xlc.tests.suite.XlcTestSuite"/>
- <property name="vmargs" value="${cdt-vmargs}"/>
- <property name="extraVMargs" value="${cdt-common-vmargs}"/>
- </ant>
- </target>
<target name="cdt-codan" depends="init">
<ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
@@ -110,9 +77,6 @@
<antcall target="cdt-mbs-core"/>
<antcall target="cdt-mbs-ui"/>
<antcall target="cdt-codan"/>
- <antcall target="cdt-lr-parser"/>
- <antcall target="cdt-upc-parser"/>
- <antcall target="cdt-lr-parser-xlc"/>
</target>
</project>
diff --git a/releng/org.eclipse.cdt/.settings/org.eclipse.core.resources.prefs b/releng/org.eclipse.cdt/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/releng/org.eclipse.cdt/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/releng/org.eclipse.cdt/.settings/org.eclipse.jdt.core.prefs b/releng/org.eclipse.cdt/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 2b6ecff8a01..00000000000
--- a/releng/org.eclipse.cdt/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,464 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
-org.eclipse.jdt.core.codeComplete.argumentPrefixes=
-org.eclipse.jdt.core.codeComplete.argumentSuffixes=
-org.eclipse.jdt.core.codeComplete.fieldPrefixes=
-org.eclipse.jdt.core.codeComplete.fieldSuffixes=
-org.eclipse.jdt.core.codeComplete.localPrefixes=
-org.eclipse.jdt.core.codeComplete.localSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
-org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
-org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
-org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
-org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
-org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
-org.eclipse.jdt.core.compiler.problem.APILeak=warning
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
-org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
-org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
-org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
-org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
-org.eclipse.jdt.core.compiler.problem.nullReference=error
-org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
-org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
-org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
-org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
-org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
-org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
-org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
-org.eclipse.jdt.core.formatter.align_with_spaces=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
-org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
-org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
-org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
-org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=0
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
-org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
-org.eclipse.jdt.core.formatter.comment.format_block_comments=false
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
-org.eclipse.jdt.core.formatter.comment.format_line_comments=false
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
-org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
-org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
-org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.join_lines_in_comments=true
-org.eclipse.jdt.core.formatter.join_wrapped_lines=true
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=120
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_on_off_tags=true
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
-org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
-org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/releng/org.eclipse.cdt/.settings/org.eclipse.jdt.ui.prefs b/releng/org.eclipse.cdt/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index e44576346c4..00000000000
--- a/releng/org.eclipse.cdt/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,133 +0,0 @@
-cleanup.add_default_serial_version_id=true
-cleanup.add_generated_serial_version_id=false
-cleanup.add_missing_annotations=true
-cleanup.add_missing_deprecated_annotations=true
-cleanup.add_missing_methods=false
-cleanup.add_missing_nls_tags=false
-cleanup.add_missing_override_annotations=true
-cleanup.add_missing_override_annotations_interface_methods=true
-cleanup.add_serial_version_id=false
-cleanup.always_use_blocks=true
-cleanup.always_use_parentheses_in_expressions=false
-cleanup.always_use_this_for_non_static_field_access=false
-cleanup.always_use_this_for_non_static_method_access=false
-cleanup.convert_functional_interfaces=false
-cleanup.convert_to_enhanced_for_loop=false
-cleanup.correct_indentation=false
-cleanup.format_source_code=true
-cleanup.format_source_code_changes_only=false
-cleanup.insert_inferred_type_arguments=false
-cleanup.make_local_variable_final=true
-cleanup.make_parameters_final=false
-cleanup.make_private_fields_final=true
-cleanup.make_type_abstract_if_missing_method=false
-cleanup.make_variable_declarations_final=false
-cleanup.never_use_blocks=false
-cleanup.never_use_parentheses_in_expressions=true
-cleanup.organize_imports=true
-cleanup.qualify_static_field_accesses_with_declaring_class=false
-cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-cleanup.qualify_static_member_accesses_with_declaring_class=false
-cleanup.qualify_static_method_accesses_with_declaring_class=false
-cleanup.remove_private_constructors=true
-cleanup.remove_redundant_modifiers=false
-cleanup.remove_redundant_semicolons=true
-cleanup.remove_redundant_type_arguments=true
-cleanup.remove_trailing_whitespaces=true
-cleanup.remove_trailing_whitespaces_all=true
-cleanup.remove_trailing_whitespaces_ignore_empty=false
-cleanup.remove_unnecessary_casts=true
-cleanup.remove_unnecessary_nls_tags=false
-cleanup.remove_unused_imports=true
-cleanup.remove_unused_local_variables=false
-cleanup.remove_unused_private_fields=true
-cleanup.remove_unused_private_members=false
-cleanup.remove_unused_private_methods=true
-cleanup.remove_unused_private_types=true
-cleanup.sort_members=false
-cleanup.sort_members_all=false
-cleanup.use_anonymous_class_creation=false
-cleanup.use_blocks=false
-cleanup.use_blocks_only_for_return_and_throw=false
-cleanup.use_lambda=true
-cleanup.use_parentheses_in_expressions=false
-cleanup.use_this_for_non_static_field_access=false
-cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-cleanup.use_this_for_non_static_method_access=false
-cleanup.use_this_for_non_static_method_access_only_if_necessary=true
-cleanup_profile=_CDT
-cleanup_settings_version=2
-eclipse.preferences.version=1
-editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=_CDT
-formatter_settings_version=14
-internal.default.compliance=user
-org.eclipse.jdt.ui.exception.name=e
-org.eclipse.jdt.ui.gettersetter.use.is=true
-org.eclipse.jdt.ui.ignorelowercasenames=true
-org.eclipse.jdt.ui.importorder=java;javax;org;com;
-org.eclipse.jdt.ui.keywordthis=false
-org.eclipse.jdt.ui.ondemandthreshold=1000
-org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.staticondemandthreshold=1000
-org.eclipse.jdt.ui.text.custom_code_templates=
-sp_cleanup.add_default_serial_version_id=true
-sp_cleanup.add_generated_serial_version_id=false
-sp_cleanup.add_missing_annotations=true
-sp_cleanup.add_missing_deprecated_annotations=true
-sp_cleanup.add_missing_methods=false
-sp_cleanup.add_missing_nls_tags=false
-sp_cleanup.add_missing_override_annotations=true
-sp_cleanup.add_missing_override_annotations_interface_methods=true
-sp_cleanup.add_serial_version_id=false
-sp_cleanup.always_use_blocks=true
-sp_cleanup.always_use_parentheses_in_expressions=false
-sp_cleanup.always_use_this_for_non_static_field_access=false
-sp_cleanup.always_use_this_for_non_static_method_access=false
-sp_cleanup.convert_functional_interfaces=false
-sp_cleanup.convert_to_enhanced_for_loop=false
-sp_cleanup.correct_indentation=false
-sp_cleanup.format_source_code=true
-sp_cleanup.format_source_code_changes_only=false
-sp_cleanup.insert_inferred_type_arguments=false
-sp_cleanup.make_local_variable_final=true
-sp_cleanup.make_parameters_final=false
-sp_cleanup.make_private_fields_final=true
-sp_cleanup.make_type_abstract_if_missing_method=false
-sp_cleanup.make_variable_declarations_final=false
-sp_cleanup.never_use_blocks=false
-sp_cleanup.never_use_parentheses_in_expressions=true
-sp_cleanup.on_save_use_additional_actions=true
-sp_cleanup.organize_imports=true
-sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
-sp_cleanup.remove_private_constructors=true
-sp_cleanup.remove_redundant_modifiers=false
-sp_cleanup.remove_redundant_semicolons=true
-sp_cleanup.remove_redundant_type_arguments=true
-sp_cleanup.remove_trailing_whitespaces=true
-sp_cleanup.remove_trailing_whitespaces_all=true
-sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
-sp_cleanup.remove_unnecessary_casts=true
-sp_cleanup.remove_unnecessary_nls_tags=false
-sp_cleanup.remove_unused_imports=true
-sp_cleanup.remove_unused_local_variables=false
-sp_cleanup.remove_unused_private_fields=true
-sp_cleanup.remove_unused_private_members=false
-sp_cleanup.remove_unused_private_methods=true
-sp_cleanup.remove_unused_private_types=true
-sp_cleanup.sort_members=false
-sp_cleanup.sort_members_all=false
-sp_cleanup.use_anonymous_class_creation=false
-sp_cleanup.use_blocks=false
-sp_cleanup.use_blocks_only_for_return_and_throw=false
-sp_cleanup.use_lambda=true
-sp_cleanup.use_parentheses_in_expressions=false
-sp_cleanup.use_this_for_non_static_field_access=false
-sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-sp_cleanup.use_this_for_non_static_method_access=false
-sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/releng/org.eclipse.cdt/META-INF/MANIFEST.MF b/releng/org.eclipse.cdt/META-INF/MANIFEST.MF
index 771a3fe26a7..e58874c7d8d 100644
--- a/releng/org.eclipse.cdt/META-INF/MANIFEST.MF
+++ b/releng/org.eclipse.cdt/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt; singleton:=true
-Bundle-Version: 9.10.0.qualifier
+Bundle-Version: 10.7.0.qualifier
Bundle-Vendor: %providerName
Bundle-Localization: plugin
Require-Bundle: org.eclipse.ui.intro;bundle-version="[3.2.0,4.0.0)",
diff --git a/releng/org.eclipse.cdt/about.html b/releng/org.eclipse.cdt/about.html
index 164f781a8fd..b3134865230 100644
--- a/releng/org.eclipse.cdt/about.html
+++ b/releng/org.eclipse.cdt/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/releng/org.eclipse.cdt/about.mappings b/releng/org.eclipse.cdt/about.mappings
index 0824105e69d..936a8039c3e 100644
--- a/releng/org.eclipse.cdt/about.mappings
+++ b/releng/org.eclipse.cdt/about.mappings
@@ -4,6 +4,6 @@
# This file does not need to be translated.
# The following should contain the build version.
-# e.g. "0=20020612"
-# This value will be added automaticaly via the build scripts
-0=@build@ \ No newline at end of file
+# e.g. "0=20200106-1728"
+# This value will be added automatically via the build scripts
+0=${buildId}
diff --git a/releng/org.eclipse.cdt/about.properties b/releng/org.eclipse.cdt/about.properties
index da2bd29f71c..e402706d145 100644
--- a/releng/org.eclipse.cdt/about.properties
+++ b/releng/org.eclipse.cdt/about.properties
@@ -1,15 +1,15 @@
###############################################################################
-# Copyright (c) 2002, 2008 IBM Corporation and others.
+# Copyright (c) 2002, 2022 Contributors to the Eclipse Foundation
#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
#
-# SPDX-License-Identifier: EPL-2.0
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
#
-# Contributors:
-# IBM Corporation - initial API and implementation
+# SPDX-License-Identifier: EPL-2.0
###############################################################################
# about.properties
# contains externalized strings for about.ini
@@ -19,10 +19,14 @@
# NOTE TO TRANSLATOR: Please do not translate the featureVersion variable.
-blurb=Eclipse C/C++ Development Tools\n\
+blurb=C/C++ Development Tools\n\
\n\
Version: {featureVersion}\n\
Build id: {0}\n\
\n\
-(c) Copyright Eclipse contributors and others, 2000, 2010.\n\
+Copyright (c) 2002, 2022 Contributors to the Eclipse Foundation
+\n\
+See the NOTICE file(s) distributed with this work for additional\n\
+information regarding copyright ownership.\n\
+\n\
Visit http://www.eclipse.org/cdt
diff --git a/releng/org.eclipse.cdt/pom.xml b/releng/org.eclipse.cdt/pom.xml
index 73aaee25f14..3f5a5464f74 100644
--- a/releng/org.eclipse.cdt/pom.xml
+++ b/releng/org.eclipse.cdt/pom.xml
@@ -1,4 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2011, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
@@ -7,11 +17,10 @@
<parent>
<groupId>org.eclipse.cdt</groupId>
<artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
+ <version>10.7.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
- <version>9.10.0-SNAPSHOT</version>
<artifactId>org.eclipse.cdt</artifactId>
<packaging>eclipse-plugin</packaging>
diff --git a/releng/pom.xml b/releng/pom.xml
index e0d46c2af57..2daed0d3b39 100644
--- a/releng/pom.xml
+++ b/releng/pom.xml
@@ -1,4 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2017, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
@@ -7,7 +17,7 @@
<parent>
<groupId>org.eclipse.cdt</groupId>
<artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
+ <version>10.7.0-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.cdt.releng-parent</artifactId>
diff --git a/releng/scripts/.settings/org.eclipse.core.resources.prefs b/releng/scripts/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/releng/scripts/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/releng/scripts/.settings/org.eclipse.jdt.core.prefs b/releng/scripts/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 2b6ecff8a01..00000000000
--- a/releng/scripts/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,464 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
-org.eclipse.jdt.core.codeComplete.argumentPrefixes=
-org.eclipse.jdt.core.codeComplete.argumentSuffixes=
-org.eclipse.jdt.core.codeComplete.fieldPrefixes=
-org.eclipse.jdt.core.codeComplete.fieldSuffixes=
-org.eclipse.jdt.core.codeComplete.localPrefixes=
-org.eclipse.jdt.core.codeComplete.localSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
-org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
-org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
-org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
-org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
-org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
-org.eclipse.jdt.core.compiler.problem.APILeak=warning
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
-org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
-org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
-org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
-org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
-org.eclipse.jdt.core.compiler.problem.nullReference=error
-org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
-org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
-org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
-org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
-org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
-org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
-org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
-org.eclipse.jdt.core.formatter.align_with_spaces=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
-org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
-org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
-org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
-org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=0
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
-org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
-org.eclipse.jdt.core.formatter.comment.format_block_comments=false
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
-org.eclipse.jdt.core.formatter.comment.format_line_comments=false
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
-org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
-org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
-org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.join_lines_in_comments=true
-org.eclipse.jdt.core.formatter.join_wrapped_lines=true
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=120
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_on_off_tags=true
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
-org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
-org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/releng/scripts/.settings/org.eclipse.jdt.ui.prefs b/releng/scripts/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index e44576346c4..00000000000
--- a/releng/scripts/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,133 +0,0 @@
-cleanup.add_default_serial_version_id=true
-cleanup.add_generated_serial_version_id=false
-cleanup.add_missing_annotations=true
-cleanup.add_missing_deprecated_annotations=true
-cleanup.add_missing_methods=false
-cleanup.add_missing_nls_tags=false
-cleanup.add_missing_override_annotations=true
-cleanup.add_missing_override_annotations_interface_methods=true
-cleanup.add_serial_version_id=false
-cleanup.always_use_blocks=true
-cleanup.always_use_parentheses_in_expressions=false
-cleanup.always_use_this_for_non_static_field_access=false
-cleanup.always_use_this_for_non_static_method_access=false
-cleanup.convert_functional_interfaces=false
-cleanup.convert_to_enhanced_for_loop=false
-cleanup.correct_indentation=false
-cleanup.format_source_code=true
-cleanup.format_source_code_changes_only=false
-cleanup.insert_inferred_type_arguments=false
-cleanup.make_local_variable_final=true
-cleanup.make_parameters_final=false
-cleanup.make_private_fields_final=true
-cleanup.make_type_abstract_if_missing_method=false
-cleanup.make_variable_declarations_final=false
-cleanup.never_use_blocks=false
-cleanup.never_use_parentheses_in_expressions=true
-cleanup.organize_imports=true
-cleanup.qualify_static_field_accesses_with_declaring_class=false
-cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-cleanup.qualify_static_member_accesses_with_declaring_class=false
-cleanup.qualify_static_method_accesses_with_declaring_class=false
-cleanup.remove_private_constructors=true
-cleanup.remove_redundant_modifiers=false
-cleanup.remove_redundant_semicolons=true
-cleanup.remove_redundant_type_arguments=true
-cleanup.remove_trailing_whitespaces=true
-cleanup.remove_trailing_whitespaces_all=true
-cleanup.remove_trailing_whitespaces_ignore_empty=false
-cleanup.remove_unnecessary_casts=true
-cleanup.remove_unnecessary_nls_tags=false
-cleanup.remove_unused_imports=true
-cleanup.remove_unused_local_variables=false
-cleanup.remove_unused_private_fields=true
-cleanup.remove_unused_private_members=false
-cleanup.remove_unused_private_methods=true
-cleanup.remove_unused_private_types=true
-cleanup.sort_members=false
-cleanup.sort_members_all=false
-cleanup.use_anonymous_class_creation=false
-cleanup.use_blocks=false
-cleanup.use_blocks_only_for_return_and_throw=false
-cleanup.use_lambda=true
-cleanup.use_parentheses_in_expressions=false
-cleanup.use_this_for_non_static_field_access=false
-cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-cleanup.use_this_for_non_static_method_access=false
-cleanup.use_this_for_non_static_method_access_only_if_necessary=true
-cleanup_profile=_CDT
-cleanup_settings_version=2
-eclipse.preferences.version=1
-editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=_CDT
-formatter_settings_version=14
-internal.default.compliance=user
-org.eclipse.jdt.ui.exception.name=e
-org.eclipse.jdt.ui.gettersetter.use.is=true
-org.eclipse.jdt.ui.ignorelowercasenames=true
-org.eclipse.jdt.ui.importorder=java;javax;org;com;
-org.eclipse.jdt.ui.keywordthis=false
-org.eclipse.jdt.ui.ondemandthreshold=1000
-org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.staticondemandthreshold=1000
-org.eclipse.jdt.ui.text.custom_code_templates=
-sp_cleanup.add_default_serial_version_id=true
-sp_cleanup.add_generated_serial_version_id=false
-sp_cleanup.add_missing_annotations=true
-sp_cleanup.add_missing_deprecated_annotations=true
-sp_cleanup.add_missing_methods=false
-sp_cleanup.add_missing_nls_tags=false
-sp_cleanup.add_missing_override_annotations=true
-sp_cleanup.add_missing_override_annotations_interface_methods=true
-sp_cleanup.add_serial_version_id=false
-sp_cleanup.always_use_blocks=true
-sp_cleanup.always_use_parentheses_in_expressions=false
-sp_cleanup.always_use_this_for_non_static_field_access=false
-sp_cleanup.always_use_this_for_non_static_method_access=false
-sp_cleanup.convert_functional_interfaces=false
-sp_cleanup.convert_to_enhanced_for_loop=false
-sp_cleanup.correct_indentation=false
-sp_cleanup.format_source_code=true
-sp_cleanup.format_source_code_changes_only=false
-sp_cleanup.insert_inferred_type_arguments=false
-sp_cleanup.make_local_variable_final=true
-sp_cleanup.make_parameters_final=false
-sp_cleanup.make_private_fields_final=true
-sp_cleanup.make_type_abstract_if_missing_method=false
-sp_cleanup.make_variable_declarations_final=false
-sp_cleanup.never_use_blocks=false
-sp_cleanup.never_use_parentheses_in_expressions=true
-sp_cleanup.on_save_use_additional_actions=true
-sp_cleanup.organize_imports=true
-sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
-sp_cleanup.remove_private_constructors=true
-sp_cleanup.remove_redundant_modifiers=false
-sp_cleanup.remove_redundant_semicolons=true
-sp_cleanup.remove_redundant_type_arguments=true
-sp_cleanup.remove_trailing_whitespaces=true
-sp_cleanup.remove_trailing_whitespaces_all=true
-sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
-sp_cleanup.remove_unnecessary_casts=true
-sp_cleanup.remove_unnecessary_nls_tags=false
-sp_cleanup.remove_unused_imports=true
-sp_cleanup.remove_unused_local_variables=false
-sp_cleanup.remove_unused_private_fields=true
-sp_cleanup.remove_unused_private_members=false
-sp_cleanup.remove_unused_private_methods=true
-sp_cleanup.remove_unused_private_types=true
-sp_cleanup.sort_members=false
-sp_cleanup.sort_members_all=false
-sp_cleanup.use_anonymous_class_creation=false
-sp_cleanup.use_blocks=false
-sp_cleanup.use_blocks_only_for_return_and_throw=false
-sp_cleanup.use_lambda=true
-sp_cleanup.use_parentheses_in_expressions=false
-sp_cleanup.use_this_for_non_static_field_access=false
-sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-sp_cleanup.use_this_for_non_static_method_access=false
-sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/releng/scripts/ChangeJavaVersion.sh b/releng/scripts/ChangeJavaVersion.sh
deleted file mode 100755
index d83b00874b8..00000000000
--- a/releng/scripts/ChangeJavaVersion.sh
+++ /dev/null
@@ -1,79 +0,0 @@
-#!/bin/sh
-
-# This script was used to update most of CDT's plugins from
-# java 7 to java 8.
-# The script recursively updated all plugins starting
-# at $root_dir from java version $old_ver to $new_ver
-# for changes required to go from java 7 to java 8.
-#
-# To re-use this script in the future for a new version of java,
-# please make sure its behaviour mimics Eclipse behavior of
-# "Update the classpath settings" in the Overview tab of manifest
-# file editor.
-
-old_ver=1\\.7 # Need to escape the . to avoid it matching any character
-new_ver=1.8
-java_name=JavaSE
-
-root_dir=.
-
-classpath_file=.classpath
-manifest_file=MANIFEST.MF
-jdt_pref_file=org.eclipse.jdt.core.prefs
-jdt_pref1=org.eclipse.jdt.core.compiler.codegen.targetPlatform
-jdt_pref2=org.eclipse.jdt.core.compiler.compliance
-jdt_pref3=org.eclipse.jdt.core.compiler.source
-
-fix_classpath_file()
-{
- find $root_dir -type f -name ${classpath_file} \
- -exec sed -i s,${java_name}-${old_ver},${java_name}-${new_ver}, '{}' \;
-}
-
-fix_manifest_file()
-{
- find $root_dir -type f -name ${manifest_file} \
- -exec sed -i s,${java_name}-${old_ver},${java_name}-${new_ver}, '{}' \;
-}
-
-fix_jdt_prefs_file()
-{
- find $root_dir -type f -name ${jdt_pref_file} \
- -exec sed -i s,${jdt_pref1}=$old_ver,${jdt_pref1}=$new_ver, '{}' \;
- find $root_dir -type f -name ${jdt_pref_file} \
- -exec sed -i s,${jdt_pref2}=$old_ver,${jdt_pref2}=$new_ver, '{}' \;
- find $root_dir -type f -name ${jdt_pref_file} \
- -exec sed -i s,${jdt_pref3}=$old_ver,${jdt_pref3}=$new_ver, '{}' \;
-}
-
-launch_file=StandaloneTests.launch
-fix_standalone_debugger_test_launch()
-{
- find $root_dir -type f -name ${launch_file} \
- -exec sed -i s,${java_name}-${old_ver},${java_name}-${new_ver}, '{}' \;
-}
-
-pom_file=pom.xml
-fix_pom()
-{
- find $root_dir -type f -name ${pom_file} \
- -exec sed -i s,sonar.java.source\>${old_ver},sonar.java.source\>${new_ver}, '{}' \;
- find $root_dir -type f -name ${pom_file} \
- -exec sed -i s,targetJdk\>${old_ver},targetJdk\>${new_ver}, '{}' \;
-}
-
-old_ver_remaining_log=/tmp/remaingOldStrings.log
-grep_for_remaining_old_version_string()
-{
- echo "Please CHECK the file\n ${old_ver_remaining_log}\nfor any remaining instances"\
- "of ${old_ver} below directory:\n $root_dir\nto make sure they were not forgotten."
- grep -r ${old_ver} ${root_dir} | grep -v "/target/" | grep -v "Binary file" | grep -vF .log | grep -v "Generated by javadoc" > ${old_ver_remaining_log}
- echo "Please also CHECK that all changes made are correct before committing"
-}
-
-fix_classpath_file
-fix_manifest_file
-fix_jdt_prefs_file
-fix_standalone_debugger_test_launch
-fix_pom
-grep_for_remaining_old_version_string
diff --git a/releng/scripts/change_to_eplv2.sh b/releng/scripts/change_to_eplv2.sh
index d2971606953..e7a40dc83d5 100755
--- a/releng/scripts/change_to_eplv2.sh
+++ b/releng/scripts/change_to_eplv2.sh
@@ -1,4 +1,14 @@
#!/bin/bash
+###############################################################################
+# Copyright (c) 2018, 2020 Kichwa Coders Ltd and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
find . -type f ! -name "change_to_eplv2.sh" ! -path "./.git/*" ! \( -name debug.product -name "*.exsd" -or -name cdt_c_over_cdt.htm \) \
diff --git a/releng/scripts/check_code_cleanliness.sh b/releng/scripts/check_code_cleanliness.sh
index c056004d734..dcc1ce66ad0 100755
--- a/releng/scripts/check_code_cleanliness.sh
+++ b/releng/scripts/check_code_cleanliness.sh
@@ -1,14 +1,105 @@
#!/bin/bash
+###############################################################################
+# Copyright (c) 2018, 2020 Kichwa Coders Ltd and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
set -e
##
-# The script is shared by all the CDT projects. When running
-# local edits, you can, for example, do:
-# SCRIPT_URL=file:///scratch/eclipse/src/cdt/cdt-infra/scripts/check_code_cleanliness.sh ./check_code_cleanliness.sh
+# Check the features are all branded and all content has proper licenses
##
+DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
+${DIR}/check_features.sh
+${DIR}/check_license.sh
-: ${SCRIPT_URL:=https://raw.githubusercontent.com/eclipse-cdt/cdt-infra/master/scripts/check_code_cleanliness.sh}
-export COREPROJECT=core/org.eclipse.cdt.core
-echo Obtaining check_code_cleanliness.sh from $SCRIPT_URL
-curl -sL $SCRIPT_URL | bash
+##
+# The next set of scripts automatically apply formatting and other rules
+# to CDT. At the end of this, git repo is checked for no diffs.
+##
+${DIR}/do_all_code_cleanups.sh
+
+##
+# Check that none of the above caused any changes
+##
+if test -z "$(git status -s)"; then
+ echo "Tree looks clean!"
+else
+ echo "Tree is dirty - something needs to be cleaned up in your commit (more info below)"
+ echo "Result of git status"
+ git status
+ echo "Result of git diff"
+ git diff
+ echo "Tree is dirty - something needs to be cleaned up in your commit (see above for git status/diff). The 'something'"
+ echo "is likely a misformatted file, extra whitespace at end of line, or something similar. The diff above"
+ echo "shows what changes you need to apply to your patch to get it past the code cleanliness check."
+ exit 1
+fi
+
+##
+# Error out if there are dependencies that are not allowed in the dlls, exes, sos
+##
+DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
+echo "Checking dependencies of all .dll, .exe and .so files in CDT to make"
+echo "sure no dependencies on unexpected or newer libraries are accidentally"
+echo "introduced."
+${DIR}/check_dll_dependencies.sh
+${DIR}/check_glibc_dependencies.sh
+
+
+##
+# Make sure all versions have been bumped appropriately compared to the baseline
+##
+java -XX:+PrintFlagsFinal -version
+logfile=baseline-compare-and-replace.log
+echo "Running 'mvn verify -P baseline-compare-and-replace' to make sure all versions"
+echo "have been appropriately incremented. The check output is very verbose, so it is"
+echo "redirected to ${logfile} which is archived as part of the build artifacts."
+if ${MVN:-mvn} \
+ clean verify -B -V --fail-at-end \
+ -DskipDoc=true \
+ -DskipTests=true \
+ -P baseline-compare-and-replace >${logfile} 2>&1; then
+ echo "Maven check all versions have been bumped appropriately appears to have completed successfully"
+else
+ bundles_only_qualifier_changed=$(grep "Only qualifier changed" ${logfile} | sed -e 's/^.*Only qualifier changed for .//' -e 's@/.*@@' | sort)
+ if [ -n "$bundles_only_qualifier_changed" ]; then
+ echo "The following bundles are missing a service segment version bump:"
+ for bundle in $bundles_only_qualifier_changed; do
+ echo " - $bundle"
+ done
+ echo "Please bump service segment by 100 if on master branch"
+ echo "The log of this build is part of the artifacts"
+ echo "See: https://wiki.eclipse.org/Version_Numbering#When_to_change_the_service_segment"
+ echo
+ fi
+
+ bundles_same_version_different_content=$(grep "baseline and build artifacts have same version but different contents" ${logfile} | sed -e 's/^.* on project //' -e 's@: baseline.*@@' | sort)
+ if [ -n "$bundles_same_version_different_content" ]; then
+ echo "The following bundles have same version as baseline, but different contents:"
+ for bundle in $bundles_same_version_different_content; do
+ echo " - $bundle"
+ done
+ echo "This can happen for a variety of reasons:"
+ echo " - The comparison filters in the root pom.xml are not working"
+ echo " - Different versions of Java are being used to compile compared to the baseline"
+ echo " - A dependency has changed causing the generated classes to be different"
+ echo "The log of this build is part of the artifacts"
+ echo "Please bump service segment by 100 if on master branch"
+ echo "See: https://wiki.eclipse.org/Version_Numbering#When_to_change_the_service_segment"
+ echo
+ fi
+
+ if [ -z "$bundles_only_qualifier_changed" ] && [ -z "$bundles_same_version_different_content" ]; then
+ echo "Maven 'check all versions have been bumped appropriately' failed! Please see the"
+ echo "log of the failed maven run which is available as part of the artifacts in a"
+ echo "file called baseline-compare-and-replace.log"
+ fi
+ exit 1
+fi
diff --git a/releng/scripts/check_dll_dependencies.sh b/releng/scripts/check_dll_dependencies.sh
new file mode 100755
index 00000000000..620c9f27bc2
--- /dev/null
+++ b/releng/scripts/check_dll_dependencies.sh
@@ -0,0 +1,33 @@
+#!/bin/bash
+###############################################################################
+# Copyright (c) 2020 Kichwa Coders Canada Inc and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+
+set -eu
+
+# This is the current set of allowed DLL dependencies for CDT code. Additional entries here are permitted,
+# provided they are found on all Windows machines by default.
+ALLOWED_DLLS="KERNEL32.DLL MSVCRT.DLL USER32.DLL PSAPI.DLL SHELL32.DLL ADVAPI32.DLL"
+# In addition, the WINPTY.DLL is something CDT ships so is allowed to be a dependency
+ALLOWED_DLLS+=" WINPTY.DLL"
+
+exit_code=0
+while read line; do
+ while read import; do
+ dllname=${import//DLL Name: /}
+ dllname_upper=${dllname^^}
+ if [[ ! " ${ALLOWED_DLLS} " =~ " ${dllname_upper} " ]]; then
+ echo "ERROR: $line has illegal import of ${dllname}"
+ exit_code=1
+ fi
+ done <<<$(x86_64-w64-mingw32-objdump -p $line | grep "DLL Name")
+done <<<$(git ls-files -- \*.exe \*.dll)
+
+exit ${exit_code}
diff --git a/releng/scripts/check_features.sh b/releng/scripts/check_features.sh
new file mode 100755
index 00000000000..56172821195
--- /dev/null
+++ b/releng/scripts/check_features.sh
@@ -0,0 +1,109 @@
+#!/bin/bash
+###############################################################################
+# Copyright (c) 2020 Kichwa Coders Canada Inc and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+
+set -u # run with unset flag error so that missing parameters cause build failure
+set -e # error out on any failed commands
+#set -x # echo all commands used for debugging purposes
+
+# Point ourselves to the script's directory (so it can be run "out-of-tree")
+DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
+
+echo "Normalizing branding content on all features"
+git ls-files -- \*/feature.xml | while read feature_xml; do
+ plugin=$(xmllint --xpath 'string(//feature/@plugin)' $feature_xml)
+ if [ -z "$plugin" ]; then
+ plugin=$(xmllint --xpath 'string(//feature/@id)' $feature_xml)
+ fi
+ feature_dir=$(dirname ${feature_xml})
+
+ if [ $(find * -name $plugin -type d -not -path */target/* | wc -l) -ne 1 ]; then
+ echo "Script failure - did not find unique dir for $plugin part of feature $feature_dir":
+ echo "This may mean the branding is missing, or not understood by the script.":
+ find * -name $plugin -type d
+ exit 1
+ fi
+ plugin_dir=$(find * -name $plugin -type d -not -path */target/*)
+
+ # echo Working on: $feature_xml 'whose plugin is' $plugin
+ cp releng/templates/feature/cdt_logo_icon32.png $plugin_dir
+ cp releng/templates/feature/about.mappings $plugin_dir
+ if [ -e ${plugin_dir}/welcome.xml ] ; then
+ cp releng/templates/feature/about.with_welcome.ini ${plugin_dir}/about.ini
+ else
+ cp releng/templates/feature/about.ini $plugin_dir
+ fi
+
+ case $feature_xml in
+ launchbar*)
+ # The git history does not show the proper start year for launchbar because of Bug 558439
+ # Note, we can't simply use --follow because that causes other features to have a too
+ # early copyright year.
+ feature_start_year=2014
+ ;;
+ cmake/org.eclipse.cdt.cmake-feature/feature.xml)
+ # The git history does not show the proper start year for cmake because of Bug 567488
+ # Note, we can't simply use --follow because that causes other features to have a too
+ # early copyright year.
+ feature_start_year=2015
+ ;;
+ *)
+ feature_start_year=$(git log --reverse --format='%ad' --date="format:%Y" -- $feature_xml $plugin_dir | head -1)
+ ;;
+ esac
+ feature_end_year=$(git log --format='%ad' --date="format:%Y" -- $feature_xml $plugin_dir | head -1)
+ feature_name=$(grep featureName= $feature_dir/feature.properties | sed '-es,featureName=,,')
+ if [ "$feature_start_year" = "$feature_end_year" ]; then
+ feature_years="${feature_start_year}"
+ else
+ feature_years="${feature_start_year}, ${feature_end_year}"
+ fi
+ export feature_years feature_name
+ envsubst '$feature_years $feature_name' < \
+ releng/templates/feature/about.properties > \
+ ${plugin_dir}/about.properties
+
+ for f in about.ini about.mappings about.properties cdt_logo_icon32.png; do
+ if ! grep $f ${plugin_dir}/build.properties > /dev/null; then
+ echo "Missing $f entry in $plugin/build.properties"
+ # cp ./build/org.eclipse.cdt.autotools.ui/build.properties ${plugin_dir}/build.properties
+ exit 1
+ fi
+ done
+
+ # Check the license and copyright settings of the feature
+ if [ "$(xmllint --xpath 'string(//feature/copyright)' $feature_xml | xargs)" != "%copyright" ]; then
+ echo "Copyright entry in $feature_xml should be %copyright"
+ exit 1
+ fi
+ if [ "$(xmllint --xpath 'string(//feature/license)' $feature_xml | xargs)" != "%license" ]; then
+ echo "License entry in $feature_xml should be %license"
+ exit 1
+ fi
+ if [ "$(xmllint --xpath 'string(//feature/license/@url)' $feature_xml | xargs)" != "%licenseURL" ]; then
+ echo "License URL in $feature_xml should be %licenseURL"
+ exit 1
+ fi
+ if [ "$(xmllint --xpath 'string(//feature/@license-feature)' $feature_xml | xargs)" != "org.eclipse.license" ]; then
+ echo "License feature in $feature_xml should be org.eclipse.license"
+ exit 1
+ fi
+ if [ "$(xmllint --xpath 'string(//feature/@license-feature-version)' $feature_xml | xargs)" != "0.0.0" ]; then
+ echo "License version in $feature_xml should be 0.0.0"
+ exit 1
+ fi
+ if [ -z "$(grep -E '^copyright=' $feature_dir/feature.properties)" ]; then
+ echo "Copyright entry in $feature_dir/feature.properties missing (key copyright= not found)"
+ exit 1
+ fi
+
+done
+
diff --git a/releng/scripts/check_glibc_dependencies.sh b/releng/scripts/check_glibc_dependencies.sh
new file mode 100755
index 00000000000..2d0f718c6af
--- /dev/null
+++ b/releng/scripts/check_glibc_dependencies.sh
@@ -0,0 +1,63 @@
+#!/bin/bash
+###############################################################################
+# Copyright (c) 2020 Kichwa Coders Canada Inc and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+
+set -eu
+
+
+###
+# Check that all .so files in CDT for a given ${ARCH} (using ${PREFIX} toolchain)
+# use glibc symbols no greater than ${ALLOWED_GLIBC_VERSION} and depend on
+# no libs other than ${ALLOWED_LIBS}
+function check {
+ ARCH=$1; shift
+ PREFIX=$1; shift
+ ALLOWED_GLIBC_VERSION=$1; shift
+ ALLOWED_LIBS="$@"; shift
+ ret_code=0
+ while read line; do
+ ${PREFIX}-linux-gnu-readelf -d ${line} | grep -E '\(NEEDED\)' | while read needed; do
+ needed=${needed//*Shared library: [/}
+ needed=${needed//]*/}
+ if [[ ! " ${ALLOWED_LIBS} " =~ " ${needed} " ]]; then
+ echo "ERROR: $line has illegal dependency of ${needed}"
+ ret_code=1
+ fi
+ done
+
+ # The way the version check is done is that all symbol version info is extracted
+ # from relocations match @GLIBC_*, the versions are sorted with the max
+ # allowed version added to the list too. And then we check the last entry in
+ # the list to make sure it is == to max allowed version.
+ ${PREFIX}-linux-gnu-objdump -R ${line} | grep @GLIBC_ | while read version; do
+ echo ${version//*@GLIBC_}
+ done > /tmp/version_check
+ echo ${ALLOWED_GLIBC_VERSION} >> /tmp/version_check
+ max_version_in_use=$(cat /tmp/version_check | sort --unique --version-sort | tail -n1)
+ if [ "$max_version_in_use" != "$ALLOWED_GLIBC_VERSION" ]; then
+ echo "ERROR: $line has dependency on glibc greater than allowed version of ${ALLOWED_GLIBC_VERSION} for at least the following symbols"
+ # This only lists greatest version number symbols
+ ${PREFIX}-linux-gnu-objdump -R ${line} | grep @GLIBC_${max_version_in_use}
+ ret_code=1
+ fi
+ done <<<$(git ls-files **/linux/${ARCH}/\*.so)
+ return ${ret_code}
+}
+
+
+exit_code=0
+# This is the current set of allowed so dependencies for CDT code. Additional entries here are permitted,
+# provided they are found on all Linux machines by default.
+check aarch64 aarch64 2.17 libc.so.6 ld-linux-aarch64.so.1 || exit_code=1
+check x86_64 x86_64 2.4 libc.so.6 || exit_code=1
+check ppc64le powerpc64le 2.17 libc.so.6 || exit_code=1
+
+exit ${exit_code}
diff --git a/releng/scripts/check_license.sh b/releng/scripts/check_license.sh
new file mode 100755
index 00000000000..6cdeec1bcdd
--- /dev/null
+++ b/releng/scripts/check_license.sh
@@ -0,0 +1,53 @@
+#!/bin/bash
+###############################################################################
+# Copyright (c) 2020 Kichwa Coders Canada Inc and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+
+set -u # run with unset flag error so that missing parameters cause build failure
+set -e # error out on any failed commands
+# set -x # echo all commands used for debugging purposes
+
+# Point ourselves to the script's directory (so it can be run "out-of-tree")
+DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
+
+##
+# This script is reused by other projects, if so, COREPROJECT should be set
+# to the project to use a basis for project settings
+##
+: ${COREPROJECT:=core/org.eclipse.cdt.core}
+
+tmpfile=$(mktemp /tmp/check_license.XXXXXX)
+git ls-files -- \*\*/.project | while read i ; do
+ d=$(dirname $i);
+ natures=$(xmllint --xpath 'string(//projectDescription/natures)' $i)
+
+ if [[ $natures == *"org.eclipse.pde.PluginNature"* ]]; then
+ build_properties=$d/build.properties
+ about_html=$d/about.html
+
+ cat $build_properties | sed -z '-es,\\\n,,g' > $tmpfile
+ if [ -z "$(grep bin.includes $tmpfile | grep about.html)" ]; then
+ echo "$build_properties is missing bin.includes reference to about.html"
+ exit 1
+ fi
+ if [ -z "$(grep src.includes $tmpfile | grep about.html)" ]; then
+ echo "$build_properties is missing src.includes reference to about.html"
+ exit 1
+ fi
+
+ if [ ! -e "$about_html" ]; then
+ echo "$about_html is missing"
+ exit 1
+ elif ! cmp $COREPROJECT/about.html $about_html > /dev/null ; then
+ echo "$about_html differs from $COREPROJECT/about.html"
+ exit 1
+ fi
+ fi
+done
diff --git a/releng/scripts/cleanup.py b/releng/scripts/cleanup.py
index 1f5de49b382..c5428de3e2d 100644..100755
--- a/releng/scripts/cleanup.py
+++ b/releng/scripts/cleanup.py
@@ -1,3 +1,16 @@
+###############################################################################
+# Copyright (c) 2018, 2020 Kichwa Coders Ltd and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+
+# This script is used as part of the rebase_helper.sh script
+
loadModule('/System/UI')
while getActiveEditor():
# We need to cleanup twice. The first one may remove some code (like unneeded
diff --git a/releng/scripts/do_add_all_file_types_to_gitattributes.sh b/releng/scripts/do_add_all_file_types_to_gitattributes.sh
new file mode 100755
index 00000000000..bfa3ae84e81
--- /dev/null
+++ b/releng/scripts/do_add_all_file_types_to_gitattributes.sh
@@ -0,0 +1,24 @@
+#!/bin/bash
+###############################################################################
+# Copyright (c) 2018, 2020 Kichwa Coders Ltd and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+
+set -e
+
+##
+# Add all file types to .gitattributes
+##
+git ls-files | sed -E '-es@^.*/([^/]+)$@\1@' '-es@.+\.@\\\*\\.@' | sort -u | while read i ; do
+ if ! grep "^$i " .gitattributes > /dev/null
+ then
+ echo "MISSING $i in .gitattributes, adding as text, check if that is correct"
+ echo "$i text # automatically added - please verify" >> .gitattributes
+ fi
+done
diff --git a/releng/scripts/do_all_code_cleanups.sh b/releng/scripts/do_all_code_cleanups.sh
new file mode 100755
index 00000000000..927890711ad
--- /dev/null
+++ b/releng/scripts/do_all_code_cleanups.sh
@@ -0,0 +1,23 @@
+#!/bin/bash
+###############################################################################
+# Copyright (c) 2020 Kichwa Coders Canada Inc and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+
+# This script calls all the sub-scripts that do code cleanups
+
+set -e
+
+DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
+${DIR}/do_format_code.sh
+${DIR}/do_remove_trailing_whitespace.sh
+${DIR}/do_add_all_file_types_to_gitattributes.sh
+${DIR}/do_project_settings.sh
+${DIR}/do_rebuild_natives.sh
+${DIR}/do_fix_file_permissions.sh
diff --git a/releng/scripts/do_fix_file_permissions.sh b/releng/scripts/do_fix_file_permissions.sh
new file mode 100755
index 00000000000..d5ee16db001
--- /dev/null
+++ b/releng/scripts/do_fix_file_permissions.sh
@@ -0,0 +1,31 @@
+#!/bin/bash
+###############################################################################
+# Copyright (c) 2018, 2020 Kichwa Coders Ltd and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+
+set -e
+
+##
+# Remove execute permission from all files in the repository.
+##
+echo "Removing execute permission from all files in repository"
+git ls-files -z | xargs --null --no-run-if-empty chmod -x
+
+##
+# Enforce certain file types to have execute permission.
+# The .gitattributes is used as a filter to identify files to add execute
+# permissions to. Patterns with this "# file permission +x" on the line before
+# are considered (lines in .gitattributes starting with '#' are ignored).
+##
+awk '/# file permission \+x/{do getline; while ($0 ~ /^#/); print $1}' .gitattributes |
+ while read i ; do
+ echo "Adding execute permission to $i files"
+ git ls-files -z -- "$i" | xargs --null --no-run-if-empty chmod +x
+ done
diff --git a/releng/scripts/do_format_code.sh b/releng/scripts/do_format_code.sh
new file mode 100755
index 00000000000..ec3930c7c07
--- /dev/null
+++ b/releng/scripts/do_format_code.sh
@@ -0,0 +1,33 @@
+#!/bin/bash
+###############################################################################
+# Copyright (c) 2018, 2020 Kichwa Coders Ltd and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+
+set -e
+
+##
+# This script is reused by other projects, if so, COREPROJECT should be set
+# to the project to use a basis for project settings
+##
+: ${COREPROJECT:=core/org.eclipse.cdt.core}
+
+##
+# Format code
+##
+: ${ECLIPSE:=~/buildtools/eclipse-SDK-4.23/eclipse}
+if test -e check_code_cleanliness_workspace; then
+ echo check_code_cleanliness_workspace needs to be deleted
+ exit 1
+fi
+${ECLIPSE} \
+ -consolelog -nosplash -application org.eclipse.jdt.core.JavaCodeFormatter \
+ -config $PWD/$COREPROJECT/.settings/org.eclipse.jdt.core.prefs \
+ $PWD -data check_code_cleanliness_workspace
+rm -rf check_code_cleanliness_workspace
diff --git a/releng/scripts/do_project_settings.sh b/releng/scripts/do_project_settings.sh
new file mode 100755
index 00000000000..c81e091e1d1
--- /dev/null
+++ b/releng/scripts/do_project_settings.sh
@@ -0,0 +1,108 @@
+#!/bin/bash
+###############################################################################
+# Copyright (c) 2018, 2020 Kichwa Coders Ltd and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+
+set -e
+
+
+##
+# This script is reused by other projects, if so, COREPROJECT should be set
+# to the project to use a basis for project settings
+##
+: ${COREPROJECT:=core/org.eclipse.cdt.core}
+
+##
+# Setup Eclipse Core Preferences
+##
+git ls-files -- \*\*/.project | while read i ; do
+ d=`dirname $i`;
+ mkdir -p $d/.settings
+ if ! test -e $d/.settings/org.eclipse.core.resources.prefs; then
+ echo 'eclipse.preferences.version=1' > $d/.settings/org.eclipse.core.resources.prefs
+ echo 'encoding/<project>=UTF-8' >> $d/.settings/org.eclipse.core.resources.prefs
+ fi
+ if ! grep 'encoding/<project>=UTF-8' $d/.settings/org.eclipse.core.resources.prefs > /dev/null; then
+ echo 'encoding/<project>=UTF-8' >> $d/.settings/org.eclipse.core.resources.prefs
+ fi
+ if ! grep 'eclipse.preferences.version=1' $d/.settings/org.eclipse.core.resources.prefs > /dev/null; then
+ echo 'eclipse.preferences.version=1' >> $d/.settings/org.eclipse.core.resources.prefs
+ fi
+done
+
+##
+# Copy JDT/PDE preferences
+##
+git ls-files -- \*\*/.project ":!$COREPROJECT/.project" | while read i ; do
+ d=`dirname $i`;
+ natures=$(xmllint --xpath 'string(//projectDescription/natures)' $i)
+ mkdir -p $d/.settings
+
+ # JDT
+ if [[ $natures == *"org.eclipse.jdt.core.javanature"* ]]; then
+ cp $COREPROJECT/.settings/org.eclipse.jdt.* $d/.settings
+ # For test plug-ins we are more lenient so don't warn on some items
+ if echo $i | grep -E '\.tests?[/\.]' > /dev/null; then
+ sed -i \
+ '-es@org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning@org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore@' \
+ '-es@org.eclipse.jdt.core.compiler.problem.discouragedReference=warning@org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore@' \
+ '-es@org.eclipse.jdt.core.compiler.problem.deprecation=warning@org.eclipse.jdt.core.compiler.problem.deprecation=ignore@' \
+ '-es@org.eclipse.jdt.core.compiler.problem.discouragedReference=warning@org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore@' \
+ '-es@org.eclipse.jdt.core.compiler.problem.emptyStatement=warning@org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore@' \
+ '-es@org.eclipse.jdt.core.compiler.problem.fieldHiding=warning@org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore@' \
+ '-es@org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning@org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore@' \
+ '-es@org.eclipse.jdt.core.compiler.problem.forbiddenReference=error@org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning@' \
+ '-es@org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning@org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore@' \
+ '-es@org.eclipse.jdt.core.compiler.problem.unusedLocal=warning@org.eclipse.jdt.core.compiler.problem.unusedLocal=ignore@' \
+ '-es@org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning@org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore@' \
+ '-es@org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning@org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore@' \
+ '-es@org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning@org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore@' \
+ '-es@org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning@org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore@' \
+ $d/.settings/org.eclipse.jdt.core.prefs
+ fi
+ if echo $i | grep 'org.eclipse.cdt.examples.dsf' > /dev/null; then
+ sed -i \
+ '-es@org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning@org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore@' \
+ $d/.settings/org.eclipse.jdt.core.prefs
+ fi
+ else
+ rm -f $d/.settings/org.eclipse.jdt*.prefs
+ fi
+
+ # PDE
+ if [[ $natures == *"org.eclipse.pde.PluginNature"* ]]; then
+ cp $COREPROJECT/.settings/org.eclipse.pde.prefs $d/.settings
+ cp $COREPROJECT/.settings/org.eclipse.pde.api.tools.prefs $d/.settings
+ if echo $i | grep -E '\.tests?[/\.]' > /dev/null; then
+ sed -i \
+ '-es@compilers.p.not-externalized-att=1@compilers.p.not-externalized-att=2@' \
+ $d/.settings/org.eclipse.pde.prefs
+ fi
+ else
+ rm -f $d/.settings/org.eclipse.pde*.prefs
+ fi
+done
+
+##
+# Verify API Tooling is enabled for all non-test/example bundles
+##
+git ls-files -- \*\*/.project | while read i ; do
+ d=`dirname $i`;
+ natures=$(xmllint --xpath 'string(//projectDescription/natures)' $i)
+ if [[ $natures == *"org.eclipse.pde.PluginNature"* ]] && [[ $natures == *"org.eclipse.jdt.core.javanature"* ]]; then
+ if [[ $natures != *"org.eclipse.pde.api.tools.apiAnalysisNature"* ]]; then
+ if ! echo $i | grep -E '\.tests?[/\.]' > /dev/null && ! echo $i | grep -E '\.examples?[/\.]' > /dev/null; then
+ echo "$d is missing API Tools Nature - Turn it on in Eclipse by 1) Right-click project 2) Plug-in tools -> API Tools Setup"
+ exit 1
+ fi
+ fi
+ fi
+done
+
diff --git a/releng/scripts/do_rebuild_natives.sh b/releng/scripts/do_rebuild_natives.sh
new file mode 100755
index 00000000000..7c95e368718
--- /dev/null
+++ b/releng/scripts/do_rebuild_natives.sh
@@ -0,0 +1,44 @@
+#!/bin/bash
+###############################################################################
+# Copyright (c) 2018, 2020 Kichwa Coders Ltd and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+
+set -e
+
+##
+# Make sure that natives are up to date
+##
+for p in native/org.eclipse.cdt.native.serial core/org.eclipse.cdt.core.native; do
+ echo "Rebuilding $p JNI headers to make sure they match source"
+ logfile=jni-headers-${p//\//-}.log
+ if ! ${MVN:-mvn} -B -V process-resources -DuseSimrelRepo -P jniheaders -f $p >${logfile} 2>&1; then
+ echo "Rebuilding of $p JNI headers failed. The log (${logfile}) is part of the artifacts of the build"
+ exit 1
+ fi
+
+ # Need to apply format after header files are generated
+ echo "Applying enforcing formatting rules to $p native source files"
+ clang-format -i --style=file $(git ls-files $p/native_src/\*\*/\*.{c,cpp,cc,h,hh,hpp})
+
+ echo "Rebuilding $p natives to make sure they match source"
+ logfile=make-natives-${p//\//-}.log
+ if ! make -C $p/native_src rebuild >${logfile} 2>&1; then
+ echo "Rebuilding of $p natives failed. The log (${logfile}) is part of the artifacts of the build"
+ exit 1
+ fi
+done
+
+##
+# Mark Windows binaries as executable
+##
+echo "Marking Windows binaries as executable"
+git ls-files -- \*.exe \*.dll | while read line; do
+ chmod +x "$line"
+done
diff --git a/releng/scripts/do_remove_trailing_whitespace.sh b/releng/scripts/do_remove_trailing_whitespace.sh
new file mode 100755
index 00000000000..81b2cea881d
--- /dev/null
+++ b/releng/scripts/do_remove_trailing_whitespace.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+###############################################################################
+# Copyright (c) 2018, 2020 Kichwa Coders Ltd and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+
+set -e
+
+##
+# Remove trailing whitespace.
+# The .gitattributes is used as a filter to identify files to check. Patterns
+# with this "# check trailing whitespace" on the line before are checked
+# (lines in .gitattributes starting with '#' are ignored).
+##
+awk '/# remove trailing whitespace/{do getline; while ($0 ~ /^#/); print $1}' .gitattributes |
+ while read i ; do
+ echo "Removing trailing whitespace on $i files"
+ git ls-files -z -- "$i" | xargs --null --no-run-if-empty sed -i 's/[ \t]*$//'
+ done
diff --git a/releng/scripts/rebase_helper.sh b/releng/scripts/rebase_helper.sh
index 566ea73e51c..20e9e384979 100755
--- a/releng/scripts/rebase_helper.sh
+++ b/releng/scripts/rebase_helper.sh
@@ -2,6 +2,18 @@
echo this is not really a script, run the steps by hand as there are manual steps
exit 1
+###############################################################################
+# Copyright (c) 2018, 2020 Kichwa Coders Ltd and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+
+
#####
# Prerequisites
# - Python installed and on PATH
@@ -34,7 +46,7 @@ git rebase 35996a5c5ca5c254959ba48241eaada6dbf8628d
git diff-tree --no-commit-id --name-only -r commit_to_rebase -- *.java | xargs $ECLIPSE
# C. Run cleanup.py on them using Eclipse EASE
# D. Remove trailing whitespace on all relevant files
-git show master:.gitattributes | awk '/# remove trailing whitespace/{getline; print $1}' |
+git show master:.gitattributes | awk '/# remove trailing whitespace/{do getline; while ($0 ~ /^#/); print $1}' |
while read i ; do
echo "Removing trailing whitespace on $i files"
git diff-tree --no-commit-id --name-only -r commit_to_rebase -- "$i" | xargs --no-run-if-empty sed -i 's/[ \t]*$//'
diff --git a/releng/scripts/reproducible_build_wrapper.py b/releng/scripts/reproducible_build_wrapper.py
new file mode 100755
index 00000000000..141fe825e23
--- /dev/null
+++ b/releng/scripts/reproducible_build_wrapper.py
@@ -0,0 +1,72 @@
+#!/usr/bin/env python3
+###############################################################################
+# Copyright (c) 2020 Torbjörn Svensson
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+
+import sys
+import os
+import hashlib
+import subprocess
+
+UINT32_MAX = (1 << 32) - 1
+DEBUG = True
+
+def usage(msg=None):
+ if msg:
+ print(msg)
+ print("Usage: {0} <gcc/g++ command>".format(sys.argv[0]))
+ sys.exit(1)
+
+def debug(s):
+ if DEBUG:
+ print("{} {}".format(sys.argv[0], s))
+
+compiler_command = sys.argv[1:]
+if len(compiler_command) == 0:
+ usage()
+
+
+
+# Hash all the source files and traverse any directories recursively
+sha1 = hashlib.sha1()
+
+
+# Hash the build command too
+sha1.update(" ".join(compiler_command).encode())
+debug("Compiler command hashed: {}".format(sha1.hexdigest()))
+
+
+preprocess_command = [*compiler_command, "-E"]
+
+# Remove any output file (needs to write to stdout)
+try:
+ index = compiler_command.index("-o")
+ del preprocess_command[index:index+2]
+except ValueError:
+ usage("Missing output compiler flag")
+
+# Preprocess the source file(s)
+debug("Preprocess cmd: {}".format(preprocess_command))
+try:
+ data = subprocess.check_output(preprocess_command)
+except subprocess.CalledProcessError as e:
+ print("Failed to hash source code, exit code {}".format(e.returncode))
+ sys.exit(e.returncode)
+
+# Hash the content
+sha1.update(data)
+debug("Content hashed: {}".format(sha1.hexdigest()))
+
+# Set the SOURCE_DATE_EPOCH environment variable to the hash value
+os.environ["SOURCE_DATE_EPOCH"] = str(int(sha1.hexdigest(), base=16) % UINT32_MAX)
+debug("SOURCE_DATE_EPOCH: {}".format(os.environ["SOURCE_DATE_EPOCH"]))
+
+# Run the compiler with the environement variable set
+sys.exit(subprocess.run(compiler_command).returncode)
diff --git a/releng/scripts/run_dash_licenses.sh b/releng/scripts/run_dash_licenses.sh
new file mode 100755
index 00000000000..676fb2c485a
--- /dev/null
+++ b/releng/scripts/run_dash_licenses.sh
@@ -0,0 +1,46 @@
+#!/bin/bash
+###############################################################################
+# Copyright (c) 2020 Kichwa Coders Canada Inc and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+
+set -e
+
+# This script is used to check the current status of all CDT dependencies to make sure no
+# CQs need to be filed.
+
+
+echo Generate the list of dependencies according to Maven
+${MVN:-mvn} -B -V package dependency:list -DappendOutput=true -DoutputFile=$PWD/deps-raw.log >mvn-dependency-list.log 2>&1
+echo Clean out the lines and whitespace that are not actually dependencies
+cat deps-raw.log | grep -v "The following files have been resolved" | grep -v " none" | grep -Poh '[^ ]*' > deps-stripped.log
+echo Sort and uniqify and store all deps in deps.log that will be passed to the tool
+cat deps-stripped.log | sort -u > deps.log
+
+if test -e dash-licenses; then
+ echo Pull and build Dash Licenses
+ (cd dash-licenses && git pull) >git-pull.log 2>&1
+else
+ echo Clone and build Dash Licenses
+ git clone https://github.com/eclipse/dash-licenses.git >git-clone.log 2>&1
+fi
+${MVN:-mvn} -B -V -f dash-licenses clean package >dash-build.log 2>&1
+
+echo Run the license check
+exit_code=0
+if ! java -jar dash-licenses/core/target/org.eclipse.dash.licenses-*-SNAPSHOT.jar deps.log >dash-licenses.log 2>&1; then
+ echo Some licenses appear to have failed a check, review output below.
+ exit_code=1
+fi
+
+echo See *.log for various outputs. The key one is dash-licenses.log which is the summary and repeated below:
+echo ============ dash-licenses.log ============
+cat dash-licenses.log
+
+exit $exit_code
diff --git a/releng/scripts/update_legal_files.sh b/releng/scripts/update_legal_files.sh
new file mode 100755
index 00000000000..cfc1409f784
--- /dev/null
+++ b/releng/scripts/update_legal_files.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+###############################################################################
+# Copyright (c) 2018, 2022 Kichwa Coders Ltd and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+
+
+mkdir -p /tmp/eplv2
+curl -s https://www.eclipse.org/legal/epl/epl-2.0/about.html > /tmp/eplv2/about.html
+curl -s http://www.eclipse.org/legal/epl/notice.html > /tmp/eplv2/notice.html
+curl -s http://www.eclipse.org/legal/epl/notice.html > /tmp/eplv2/license.html
+
+find . -name about.html -exec cp /tmp/eplv2/about.html {} \;
+find . -name license.html -exec cp /tmp/eplv2/license.html {} \;
+find . -name notice.html -exec cp /tmp/eplv2/notice.html {} \;
diff --git a/releng/templates/feature/about.ini b/releng/templates/feature/about.ini
new file mode 100644
index 00000000000..e07a7bb377e
--- /dev/null
+++ b/releng/templates/feature/about.ini
@@ -0,0 +1,24 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%blurb
+
+# Property "windowImage" contains path to window icon (16x16)
+# needed for primary features only
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=cdt_logo_icon32.png
+
+# Property "aboutImage" contains path to product image (500x330 or 115x164)
+# needed for primary features only
+
+# Property "appName" contains name of the application (translated)
+# needed for primary features only
+
+# Property "welcomePerspective" contains the id of the perspective in which the
+# welcome page is to be opened.
+# optional
diff --git a/releng/templates/feature/about.mappings b/releng/templates/feature/about.mappings
new file mode 100644
index 00000000000..936a8039c3e
--- /dev/null
+++ b/releng/templates/feature/about.mappings
@@ -0,0 +1,9 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+# The following should contain the build version.
+# e.g. "0=20200106-1728"
+# This value will be added automatically via the build scripts
+0=${buildId}
diff --git a/releng/templates/feature/about.properties b/releng/templates/feature/about.properties
new file mode 100644
index 00000000000..3ca3eea8387
--- /dev/null
+++ b/releng/templates/feature/about.properties
@@ -0,0 +1,32 @@
+###############################################################################
+# Copyright (c) ${feature_years} Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+# about.properties
+# contains externalized strings for about.ini
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# fill-ins are supplied by about.mappings
+# This file should be translated.
+# NOTE TO TRANSLATOR: Please do not translate the featureVersion variable.
+
+
+blurb=${feature_name}\n\
+\n\
+Version: {featureVersion}\n\
+Build id: {0}\n\
+\n\
+Copyright (c) ${feature_years} Contributors to the Eclipse Foundation
+\n\
+See the NOTICE file(s) distributed with this work for additional\n\
+information regarding copyright ownership.\n\
+\n\
+Visit http://www.eclipse.org/cdt
diff --git a/releng/templates/feature/about.with_welcome.ini b/releng/templates/feature/about.with_welcome.ini
new file mode 100644
index 00000000000..656877d0afa
--- /dev/null
+++ b/releng/templates/feature/about.with_welcome.ini
@@ -0,0 +1,27 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%blurb
+
+# Property "windowImage" contains path to window icon (16x16)
+# needed for primary features only
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=cdt_logo_icon32.png
+
+# Property "aboutImage" contains path to product image (500x330 or 115x164)
+# needed for primary features only
+
+# Property "appName" contains name of the application (translated)
+# needed for primary features only
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=$nl$/welcome.xml
+
+# Property "welcomePerspective" contains the id of the perspective in which the
+# welcome page is to be opened.
+# optional
diff --git a/releng/templates/feature/cdt_logo_icon32.png b/releng/templates/feature/cdt_logo_icon32.png
new file mode 100644
index 00000000000..470ca81b327
--- /dev/null
+++ b/releng/templates/feature/cdt_logo_icon32.png
Binary files differ
diff --git a/remote/org.eclipse.cdt.remote.core/.classpath b/remote/org.eclipse.cdt.remote.core/.classpath
index eca7bdba8f0..e801ebfb468 100644
--- a/remote/org.eclipse.cdt.remote.core/.classpath
+++ b/remote/org.eclipse.cdt.remote.core/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/remote/org.eclipse.cdt.remote.core/.settings/org.eclipse.core.resources.prefs b/remote/org.eclipse.cdt.remote.core/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/remote/org.eclipse.cdt.remote.core/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/remote/org.eclipse.cdt.remote.core/.settings/org.eclipse.jdt.core.prefs b/remote/org.eclipse.cdt.remote.core/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/remote/org.eclipse.cdt.remote.core/.settings/org.eclipse.jdt.core.prefs
+++ b/remote/org.eclipse.cdt.remote.core/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/remote/org.eclipse.cdt.remote.core/.settings/org.eclipse.jdt.ui.prefs b/remote/org.eclipse.cdt.remote.core/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/remote/org.eclipse.cdt.remote.core/.settings/org.eclipse.jdt.ui.prefs
+++ b/remote/org.eclipse.cdt.remote.core/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/remote/org.eclipse.cdt.remote.core/META-INF/MANIFEST.MF b/remote/org.eclipse.cdt.remote.core/META-INF/MANIFEST.MF
index 21c0d3a0c04..0e01873188c 100644
--- a/remote/org.eclipse.cdt.remote.core/META-INF/MANIFEST.MF
+++ b/remote/org.eclipse.cdt.remote.core/META-INF/MANIFEST.MF
@@ -2,14 +2,14 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.remote.core;singleton:=true
-Bundle-Version: 1.0.100.qualifier
+Bundle-Version: 1.1.100.qualifier
Bundle-Activator: org.eclipse.cdt.remote.internal.core.Activator
Bundle-Localization: plugin
Require-Bundle: org.eclipse.core.runtime,
org.eclipse.cdt.core,
org.eclipse.remote.core;bundle-version="2.0.0",
org.eclipse.core.filesystem
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-ActivationPolicy: lazy
Bundle-Vendor: %pluginProvider
Import-Package: org.eclipse.core.resources
diff --git a/remote/org.eclipse.cdt.remote.core/about.html b/remote/org.eclipse.cdt.remote.core/about.html
index 164f781a8fd..b3134865230 100644
--- a/remote/org.eclipse.cdt.remote.core/about.html
+++ b/remote/org.eclipse.cdt.remote.core/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/remote/org.eclipse.remote-feature/.project b/remote/org.eclipse.remote-feature/.project
new file mode 100644
index 00000000000..04f5e2c94a8
--- /dev/null
+++ b/remote/org.eclipse.remote-feature/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.remote-feature</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.pde.FeatureBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.FeatureNature</nature>
+ </natures>
+</projectDescription>
diff --git a/remote/org.eclipse.remote-feature/.settings/org.eclipse.core.resources.prefs b/remote/org.eclipse.remote-feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/remote/org.eclipse.remote-feature/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/remote/org.eclipse.remote-feature/build.properties b/remote/org.eclipse.remote-feature/build.properties
new file mode 100644
index 00000000000..90b78ae6f71
--- /dev/null
+++ b/remote/org.eclipse.remote-feature/build.properties
@@ -0,0 +1,4 @@
+bin.includes = feature.xml,\
+ feature.properties,\
+ eclipse_update_120.jpg,\
+ epl-v20.html
diff --git a/remote/org.eclipse.remote-feature/eclipse_update_120.jpg b/remote/org.eclipse.remote-feature/eclipse_update_120.jpg
new file mode 100644
index 00000000000..bfdf708ad61
--- /dev/null
+++ b/remote/org.eclipse.remote-feature/eclipse_update_120.jpg
Binary files differ
diff --git a/xlc/org.eclipse.cdt.xlc.feature/rootfiles/notice.html b/remote/org.eclipse.remote-feature/epl-v20.html
index 008b8018db8..008b8018db8 100644
--- a/xlc/org.eclipse.cdt.xlc.feature/rootfiles/notice.html
+++ b/remote/org.eclipse.remote-feature/epl-v20.html
diff --git a/remote/org.eclipse.remote-feature/feature.properties b/remote/org.eclipse.remote-feature/feature.properties
new file mode 100644
index 00000000000..763a98aea96
--- /dev/null
+++ b/remote/org.eclipse.remote-feature/feature.properties
@@ -0,0 +1,27 @@
+#################################################################################
+# Copyright (c) 2013 IBM Corporation.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#################################################################################
+
+# "featureName" property - name of the feature
+featureName=Remote Services
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse CDT
+
+# "description" property - description of the feature
+description=Provides an extensible remote services framework
+
+# copyright
+copyright=\
+Copyright (c) 2013 IBM Corporation.\n\
+This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License 2.0\n\
+which accompanies this distribution, and is available at\n\
+https://www.eclipse.org/legal/epl-2.0/\n
diff --git a/remote/org.eclipse.remote-feature/feature.xml b/remote/org.eclipse.remote-feature/feature.xml
new file mode 100644
index 00000000000..775d4a15e3f
--- /dev/null
+++ b/remote/org.eclipse.remote-feature/feature.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+ id="org.eclipse.remote"
+ label="%featureName"
+ version="10.7.0.qualifier"
+ provider-name="%providerName"
+ plugin="org.eclipse.remote.ui"
+ license-feature="org.eclipse.license"
+ license-feature-version="0.0.0">
+
+ <description url="http://eclipse.org/remote">
+ %description
+ </description>
+
+ <copyright>
+ %copyright
+ </copyright>
+
+ <license url="%licenseURL">
+ %license
+ </license>
+
+ <plugin
+ id="org.eclipse.remote.core"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.remote.ui"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.remote.doc.isv"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.remote.jsch.core"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.remote.jsch.ui"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+</feature>
diff --git a/remote/org.eclipse.remote.console-feature/.project b/remote/org.eclipse.remote.console-feature/.project
new file mode 100644
index 00000000000..6b3986a45b6
--- /dev/null
+++ b/remote/org.eclipse.remote.console-feature/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.remote.console-feature</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.pde.FeatureBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.FeatureNature</nature>
+ </natures>
+</projectDescription>
diff --git a/remote/org.eclipse.remote.console-feature/.settings/org.eclipse.core.resources.prefs b/remote/org.eclipse.remote.console-feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/remote/org.eclipse.remote.console-feature/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/remote/org.eclipse.remote.console-feature/build.properties b/remote/org.eclipse.remote.console-feature/build.properties
new file mode 100644
index 00000000000..adcc4e399d4
--- /dev/null
+++ b/remote/org.eclipse.remote.console-feature/build.properties
@@ -0,0 +1,4 @@
+bin.includes = feature.xml,\
+ feature.properties,\
+ epl-v20.html,\
+ eclipse_update_120.jpg
diff --git a/remote/org.eclipse.remote.console-feature/eclipse_update_120.jpg b/remote/org.eclipse.remote.console-feature/eclipse_update_120.jpg
new file mode 100644
index 00000000000..bfdf708ad61
--- /dev/null
+++ b/remote/org.eclipse.remote.console-feature/eclipse_update_120.jpg
Binary files differ
diff --git a/xlc/org.eclipse.cdt.xlc.sdk-feature/rootfiles/notice.html b/remote/org.eclipse.remote.console-feature/epl-v20.html
index 008b8018db8..008b8018db8 100644
--- a/xlc/org.eclipse.cdt.xlc.sdk-feature/rootfiles/notice.html
+++ b/remote/org.eclipse.remote.console-feature/epl-v20.html
diff --git a/remote/org.eclipse.remote.console-feature/feature.properties b/remote/org.eclipse.remote.console-feature/feature.properties
new file mode 100644
index 00000000000..0c2248d72b0
--- /dev/null
+++ b/remote/org.eclipse.remote.console-feature/feature.properties
@@ -0,0 +1,27 @@
+#################################################################################
+# Copyright (c) 2015 QNX Software Systems Corporation.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#################################################################################
+
+# "featureName" property - name of the feature
+featureName=Remote Command Shell Console
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse CDT
+
+# "description" property - description of the feature
+description=Provides serial port services for the remote framework
+
+# copyright
+copyright=\
+Copyright (c) 2015 QNX Software Corporation.\n\
+This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License 2.0\n\
+which accompanies this distribution, and is available at\n\
+https://www.eclipse.org/legal/epl-2.0/\n
diff --git a/remote/org.eclipse.remote.console-feature/feature.xml b/remote/org.eclipse.remote.console-feature/feature.xml
new file mode 100644
index 00000000000..7c996eb732a
--- /dev/null
+++ b/remote/org.eclipse.remote.console-feature/feature.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+ id="org.eclipse.remote.console"
+ label="%featureName"
+ version="10.7.0.qualifier"
+ provider-name="%providerName"
+ license-feature="org.eclipse.license"
+ license-feature-version="0.0.0">
+
+ <description>
+ %description
+ </description>
+
+ <copyright>
+ %copyright
+ </copyright>
+
+ <license url="%licenseURL">
+ %license
+ </license>
+
+ <plugin
+ id="org.eclipse.remote.console"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+</feature>
diff --git a/remote/org.eclipse.remote.console/.classpath b/remote/org.eclipse.remote.console/.classpath
new file mode 100644
index 00000000000..e801ebfb468
--- /dev/null
+++ b/remote/org.eclipse.remote.console/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/remote/org.eclipse.remote.console/.project b/remote/org.eclipse.remote.console/.project
new file mode 100644
index 00000000000..da0bcc42ec2
--- /dev/null
+++ b/remote/org.eclipse.remote.console/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.remote.console</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+ </natures>
+</projectDescription>
diff --git a/remote/org.eclipse.remote.console/.settings/org.eclipse.core.resources.prefs b/remote/org.eclipse.remote.console/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/remote/org.eclipse.remote.console/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/remote/org.eclipse.remote.console/.settings/org.eclipse.jdt.core.prefs b/remote/org.eclipse.remote.console/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..e3a8104f9ca
--- /dev/null
+++ b/remote/org.eclipse.remote.console/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/xlc/org.eclipse.cdt.errorparsers.xlc/.settings/org.eclipse.jdt.launching.prefs b/remote/org.eclipse.remote.console/.settings/org.eclipse.jdt.launching.prefs
index f8a131b56e0..f8a131b56e0 100644
--- a/xlc/org.eclipse.cdt.errorparsers.xlc/.settings/org.eclipse.jdt.launching.prefs
+++ b/remote/org.eclipse.remote.console/.settings/org.eclipse.jdt.launching.prefs
diff --git a/remote/org.eclipse.remote.console/.settings/org.eclipse.jdt.ui.prefs b/remote/org.eclipse.remote.console/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/remote/org.eclipse.remote.console/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/remote/org.eclipse.remote.console/.settings/org.eclipse.pde.api.tools.prefs b/remote/org.eclipse.remote.console/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 00000000000..ec9fbf321d0
--- /dev/null
+++ b/remote/org.eclipse.remote.console/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,184 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITH_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_FIELD=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERCLASS_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_CHANGED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENTS=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETERS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Error
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Warning
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+MISSING_EE_DESCRIPTIONS=Warning
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=false
+changed_execution_env=Error
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+incompatible_api_component_version_report_major_without_breaking_change=Warning
+incompatible_api_component_version_report_minor_without_api_change=Warning
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/remote/org.eclipse.remote.console/.settings/org.eclipse.pde.prefs b/remote/org.eclipse.remote.console/.settings/org.eclipse.pde.prefs
new file mode 100644
index 00000000000..d2dc703ba9e
--- /dev/null
+++ b/remote/org.eclipse.remote.console/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,35 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=2
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=2
+compilers.p.missing-version-export-package=2
+compilers.p.missing-version-import-package=2
+compilers.p.missing-version-require-bundle=2
+compilers.p.no-required-att=0
+compilers.p.no.automatic.module=1
+compilers.p.not-externalized-att=1
+compilers.p.service.component.without.lazyactivation=1
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/remote/org.eclipse.remote.console/META-INF/MANIFEST.MF b/remote/org.eclipse.remote.console/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..b6823b19dec
--- /dev/null
+++ b/remote/org.eclipse.remote.console/META-INF/MANIFEST.MF
@@ -0,0 +1,38 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.remote.console;singleton:=true
+Bundle-Version: 1.3.100.qualifier
+Bundle-Activator: org.eclipse.remote.internal.console.Activator
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Bundle-ActivationPolicy: lazy
+Bundle-Vendor: %pluginProvider
+Export-Package: org.eclipse.remote.console,
+ org.eclipse.remote.console.actions
+Import-Package: org.eclipse.core.commands,
+ org.eclipse.core.runtime,
+ org.eclipse.core.runtime.jobs,
+ org.eclipse.jface.action,
+ org.eclipse.jface.dialogs,
+ org.eclipse.jface.resource,
+ org.eclipse.jface.viewers,
+ org.eclipse.jface.window,
+ org.eclipse.osgi.util,
+ org.eclipse.remote.core,
+ org.eclipse.remote.core.exception,
+ org.eclipse.remote.ui.widgets,
+ org.eclipse.swt,
+ org.eclipse.swt.events,
+ org.eclipse.swt.layout,
+ org.eclipse.swt.widgets,
+ org.eclipse.tm.internal.terminal.control,
+ org.eclipse.tm.internal.terminal.provisional.api,
+ org.eclipse.ui,
+ org.eclipse.ui.console,
+ org.eclipse.ui.console.actions,
+ org.eclipse.ui.handlers,
+ org.eclipse.ui.part,
+ org.eclipse.ui.plugin,
+ org.eclipse.ui.progress,
+ org.osgi.framework
diff --git a/remote/org.eclipse.remote.console/about.html b/remote/org.eclipse.remote.console/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/remote/org.eclipse.remote.console/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/remote/org.eclipse.remote.console/about.ini b/remote/org.eclipse.remote.console/about.ini
new file mode 100644
index 00000000000..e07a7bb377e
--- /dev/null
+++ b/remote/org.eclipse.remote.console/about.ini
@@ -0,0 +1,24 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%blurb
+
+# Property "windowImage" contains path to window icon (16x16)
+# needed for primary features only
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=cdt_logo_icon32.png
+
+# Property "aboutImage" contains path to product image (500x330 or 115x164)
+# needed for primary features only
+
+# Property "appName" contains name of the application (translated)
+# needed for primary features only
+
+# Property "welcomePerspective" contains the id of the perspective in which the
+# welcome page is to be opened.
+# optional
diff --git a/remote/org.eclipse.remote.console/about.mappings b/remote/org.eclipse.remote.console/about.mappings
new file mode 100644
index 00000000000..936a8039c3e
--- /dev/null
+++ b/remote/org.eclipse.remote.console/about.mappings
@@ -0,0 +1,9 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+# The following should contain the build version.
+# e.g. "0=20200106-1728"
+# This value will be added automatically via the build scripts
+0=${buildId}
diff --git a/remote/org.eclipse.remote.console/about.properties b/remote/org.eclipse.remote.console/about.properties
new file mode 100644
index 00000000000..993ffb8a4c8
--- /dev/null
+++ b/remote/org.eclipse.remote.console/about.properties
@@ -0,0 +1,32 @@
+###############################################################################
+# Copyright (c) 2021, 2022 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+# about.properties
+# contains externalized strings for about.ini
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# fill-ins are supplied by about.mappings
+# This file should be translated.
+# NOTE TO TRANSLATOR: Please do not translate the featureVersion variable.
+
+
+blurb=Remote Command Shell Console\n\
+\n\
+Version: {featureVersion}\n\
+Build id: {0}\n\
+\n\
+Copyright (c) 2021, 2022 Contributors to the Eclipse Foundation
+\n\
+See the NOTICE file(s) distributed with this work for additional\n\
+information regarding copyright ownership.\n\
+\n\
+Visit http://www.eclipse.org/cdt
diff --git a/remote/org.eclipse.remote.console/build.properties b/remote/org.eclipse.remote.console/build.properties
new file mode 100644
index 00000000000..1e413e22bce
--- /dev/null
+++ b/remote/org.eclipse.remote.console/build.properties
@@ -0,0 +1,14 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ plugin.properties,\
+ icons/,\
+ about.ini,\
+ about.mappings,\
+ about.properties,\
+ cdt_logo_icon32.png,\
+ about.html,\
+ schema/
+src.includes = about.html
diff --git a/remote/org.eclipse.remote.console/cdt_logo_icon32.png b/remote/org.eclipse.remote.console/cdt_logo_icon32.png
new file mode 100644
index 00000000000..470ca81b327
--- /dev/null
+++ b/remote/org.eclipse.remote.console/cdt_logo_icon32.png
Binary files differ
diff --git a/remote/org.eclipse.remote.console/icons/clcl16/command_input_field.gif b/remote/org.eclipse.remote.console/icons/clcl16/command_input_field.gif
new file mode 100644
index 00000000000..9e3a547c145
--- /dev/null
+++ b/remote/org.eclipse.remote.console/icons/clcl16/command_input_field.gif
Binary files differ
diff --git a/remote/org.eclipse.remote.console/icons/clcl16/connect_co.gif b/remote/org.eclipse.remote.console/icons/clcl16/connect_co.gif
new file mode 100644
index 00000000000..556b230da56
--- /dev/null
+++ b/remote/org.eclipse.remote.console/icons/clcl16/connect_co.gif
Binary files differ
diff --git a/remote/org.eclipse.remote.console/icons/clcl16/disconnect_co.gif b/remote/org.eclipse.remote.console/icons/clcl16/disconnect_co.gif
new file mode 100644
index 00000000000..f1d5fb31e51
--- /dev/null
+++ b/remote/org.eclipse.remote.console/icons/clcl16/disconnect_co.gif
Binary files differ
diff --git a/remote/org.eclipse.remote.console/icons/clcl16/lock_co.gif b/remote/org.eclipse.remote.console/icons/clcl16/lock_co.gif
new file mode 100644
index 00000000000..68fd6cf39ca
--- /dev/null
+++ b/remote/org.eclipse.remote.console/icons/clcl16/lock_co.gif
Binary files differ
diff --git a/remote/org.eclipse.remote.console/icons/clcl16/newterminal.gif b/remote/org.eclipse.remote.console/icons/clcl16/newterminal.gif
new file mode 100644
index 00000000000..80201e0d469
--- /dev/null
+++ b/remote/org.eclipse.remote.console/icons/clcl16/newterminal.gif
Binary files differ
diff --git a/remote/org.eclipse.remote.console/icons/clcl16/properties_tsk.gif b/remote/org.eclipse.remote.console/icons/clcl16/properties_tsk.gif
new file mode 100644
index 00000000000..41b5adbd543
--- /dev/null
+++ b/remote/org.eclipse.remote.console/icons/clcl16/properties_tsk.gif
Binary files differ
diff --git a/remote/org.eclipse.remote.console/icons/cview16/terminal_view.gif b/remote/org.eclipse.remote.console/icons/cview16/terminal_view.gif
new file mode 100644
index 00000000000..bbb6a9e153e
--- /dev/null
+++ b/remote/org.eclipse.remote.console/icons/cview16/terminal_view.gif
Binary files differ
diff --git a/remote/org.eclipse.remote.console/icons/dlcl16/command_input_field.gif b/remote/org.eclipse.remote.console/icons/dlcl16/command_input_field.gif
new file mode 100644
index 00000000000..f538ca707fc
--- /dev/null
+++ b/remote/org.eclipse.remote.console/icons/dlcl16/command_input_field.gif
Binary files differ
diff --git a/remote/org.eclipse.remote.console/icons/dlcl16/connect_co.gif b/remote/org.eclipse.remote.console/icons/dlcl16/connect_co.gif
new file mode 100644
index 00000000000..ae5e64b9f6f
--- /dev/null
+++ b/remote/org.eclipse.remote.console/icons/dlcl16/connect_co.gif
Binary files differ
diff --git a/remote/org.eclipse.remote.console/icons/dlcl16/disconnect_co.gif b/remote/org.eclipse.remote.console/icons/dlcl16/disconnect_co.gif
new file mode 100644
index 00000000000..24a628713dc
--- /dev/null
+++ b/remote/org.eclipse.remote.console/icons/dlcl16/disconnect_co.gif
Binary files differ
diff --git a/remote/org.eclipse.remote.console/icons/dlcl16/lock_co.gif b/remote/org.eclipse.remote.console/icons/dlcl16/lock_co.gif
new file mode 100644
index 00000000000..b7764789356
--- /dev/null
+++ b/remote/org.eclipse.remote.console/icons/dlcl16/lock_co.gif
Binary files differ
diff --git a/remote/org.eclipse.remote.console/icons/dlcl16/newterminal.gif b/remote/org.eclipse.remote.console/icons/dlcl16/newterminal.gif
new file mode 100644
index 00000000000..80201e0d469
--- /dev/null
+++ b/remote/org.eclipse.remote.console/icons/dlcl16/newterminal.gif
Binary files differ
diff --git a/remote/org.eclipse.remote.console/icons/dlcl16/properties_tsk.gif b/remote/org.eclipse.remote.console/icons/dlcl16/properties_tsk.gif
new file mode 100644
index 00000000000..c307524a7a4
--- /dev/null
+++ b/remote/org.eclipse.remote.console/icons/dlcl16/properties_tsk.gif
Binary files differ
diff --git a/remote/org.eclipse.remote.console/icons/dlcl16/rem_co.gif b/remote/org.eclipse.remote.console/icons/dlcl16/rem_co.gif
new file mode 100644
index 00000000000..559e462985f
--- /dev/null
+++ b/remote/org.eclipse.remote.console/icons/dlcl16/rem_co.gif
Binary files differ
diff --git a/remote/org.eclipse.remote.console/icons/elcl16/command_input_field.gif b/remote/org.eclipse.remote.console/icons/elcl16/command_input_field.gif
new file mode 100644
index 00000000000..f538ca707fc
--- /dev/null
+++ b/remote/org.eclipse.remote.console/icons/elcl16/command_input_field.gif
Binary files differ
diff --git a/remote/org.eclipse.remote.console/icons/elcl16/connect_co.gif b/remote/org.eclipse.remote.console/icons/elcl16/connect_co.gif
new file mode 100644
index 00000000000..c0de0d32dd6
--- /dev/null
+++ b/remote/org.eclipse.remote.console/icons/elcl16/connect_co.gif
Binary files differ
diff --git a/remote/org.eclipse.remote.console/icons/elcl16/disconnect_co.gif b/remote/org.eclipse.remote.console/icons/elcl16/disconnect_co.gif
new file mode 100644
index 00000000000..ef5bfa8ad71
--- /dev/null
+++ b/remote/org.eclipse.remote.console/icons/elcl16/disconnect_co.gif
Binary files differ
diff --git a/remote/org.eclipse.remote.console/icons/elcl16/lock_co.gif b/remote/org.eclipse.remote.console/icons/elcl16/lock_co.gif
new file mode 100644
index 00000000000..68fd6cf39ca
--- /dev/null
+++ b/remote/org.eclipse.remote.console/icons/elcl16/lock_co.gif
Binary files differ
diff --git a/remote/org.eclipse.remote.console/icons/elcl16/newterminal.gif b/remote/org.eclipse.remote.console/icons/elcl16/newterminal.gif
new file mode 100644
index 00000000000..80201e0d469
--- /dev/null
+++ b/remote/org.eclipse.remote.console/icons/elcl16/newterminal.gif
Binary files differ
diff --git a/remote/org.eclipse.remote.console/icons/elcl16/properties_tsk.gif b/remote/org.eclipse.remote.console/icons/elcl16/properties_tsk.gif
new file mode 100644
index 00000000000..41b5adbd543
--- /dev/null
+++ b/remote/org.eclipse.remote.console/icons/elcl16/properties_tsk.gif
Binary files differ
diff --git a/remote/org.eclipse.remote.console/icons/elcl16/rem_co.gif b/remote/org.eclipse.remote.console/icons/elcl16/rem_co.gif
new file mode 100644
index 00000000000..2cd9c544436
--- /dev/null
+++ b/remote/org.eclipse.remote.console/icons/elcl16/rem_co.gif
Binary files differ
diff --git a/remote/org.eclipse.remote.console/icons/eview16/terminal_view.gif b/remote/org.eclipse.remote.console/icons/eview16/terminal_view.gif
new file mode 100644
index 00000000000..bbb6a9e153e
--- /dev/null
+++ b/remote/org.eclipse.remote.console/icons/eview16/terminal_view.gif
Binary files differ
diff --git a/remote/org.eclipse.remote.console/plugin.properties b/remote/org.eclipse.remote.console/plugin.properties
new file mode 100644
index 00000000000..d845f050cde
--- /dev/null
+++ b/remote/org.eclipse.remote.console/plugin.properties
@@ -0,0 +1,14 @@
+##########################################################################
+# Copyright (c) 2015 QNX Software Systems, Inc. and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+##########################################################################
+pluginName=Remote Console
+pluginProvider=Eclipse PTP
+terminal.console.name=Command Shell Console
+OpenTerminalCommand.name=Open Command Shell
diff --git a/remote/org.eclipse.remote.console/plugin.xml b/remote/org.eclipse.remote.console/plugin.xml
new file mode 100644
index 00000000000..c016588a867
--- /dev/null
+++ b/remote/org.eclipse.remote.console/plugin.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension-point id="org.eclipse.remote.console.toolbar" name="org.eclipse.remote.console.toolbar" schema="schema/consoleToolbar.exsd"/>
+ <extension
+ point="org.eclipse.ui.console.consoleFactories">
+ <consoleFactory
+ class="org.eclipse.remote.internal.console.TerminalConsoleFactory"
+ icon="icons/cview16/terminal_view.gif"
+ label="%terminal.console.name">
+ </consoleFactory>
+ </extension>
+ <extension
+ point="org.eclipse.ui.commands">
+ <command
+ defaultHandler="org.eclipse.remote.internal.console.actions.OpenCommandShellHandler"
+ id="org.eclipse.remote.ui.command.openTerminal"
+ name="%OpenTerminalCommand.name">
+ </command>
+ </extension>
+ <extension
+ point="org.eclipse.ui.menus">
+ <menuContribution
+ allPopups="false"
+ locationURI="popup:org.eclipse.remote.ui.view.connections">
+ <command
+ commandId="org.eclipse.remote.ui.command.openTerminal"
+ label="%OpenTerminalCommand.name"
+ style="push">
+ <visibleWhen
+ checkEnabled="false">
+ <with
+ variable="selection">
+ <iterate>
+ <test
+ args="org.eclipse.remote.core.IRemoteCommandShellService"
+ property="org.eclipse.remote.ui.hasConnectionService">
+ </test>
+ </iterate>
+ </with>
+ </visibleWhen>
+ </command>
+ </menuContribution>
+ </extension>
+
+</plugin>
diff --git a/remote/org.eclipse.remote.console/schema/consoleToolbar.exsd b/remote/org.eclipse.remote.console/schema/consoleToolbar.exsd
new file mode 100644
index 00000000000..de275214403
--- /dev/null
+++ b/remote/org.eclipse.remote.console/schema/consoleToolbar.exsd
@@ -0,0 +1,137 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.remote.console" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+ <appinfo>
+ <meta.schema plugin="org.eclipse.remote.console" id="org.eclipse.remote.console.toolbar" name="Terminal Console Toolbar Contributions"/>
+ </appinfo>
+ <documentation>
+ This extension point allows contributions to the TerminalConsole for various types of connections. It associates an action id with a connection type and factory.
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <annotation>
+ <appinfo>
+ <meta.element />
+ </appinfo>
+ </annotation>
+ <complexType>
+ <sequence>
+ <element ref="action" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute translatable="true"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="action">
+ <complexType>
+ <attribute name="id" type="string" use="required">
+ <annotation>
+ <documentation>
+ Identifier for this action
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="connectionType" type="string" use="required">
+ <annotation>
+ <documentation>
+ The connection type this Action applies to
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="actionFactory" type="string" use="required">
+ <annotation>
+ <documentation>
+ A class implementing IConsoleActionFactory to be called to create the Action
+ </documentation>
+ <appinfo>
+ <meta.attribute kind="java" basedOn=":org.eclipse.remote.console.actions.IConsoleActionFactory"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+
+ <annotation>
+ <appinfo>
+ <meta.section type="examples"/>
+ </appinfo>
+ <documentation>
+ &lt;extension
+ point=&quot;org.eclipse.remote.console.toolbar&quot;&gt;
+ &lt;action
+ actionFactory=&quot;com.example.actions.MyActionFactory&quot;
+ connectionType=&quot;org.eclipse.remote.serial.core.connectionType&quot;
+ id=&quot;com.example.actions.MyAction&quot;&gt;
+ &lt;/action&gt;
+ &lt;/extension&gt;
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="apiinfo"/>
+ </appinfo>
+ <documentation>
+ The value of the actionFactory attribute must implement the abstract class &lt;code&gt;org.eclipse.remote.console.ConsoleAction&lt;/code&gt;
+
+The value of the connectionType attribute should reference the id of a connectionType under the org.eclipse.remote.core.remoteServices extension point.
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="implementation"/>
+ </appinfo>
+ <documentation>
+ The package itself does not have any predefined toolbar contributions.
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="copyright"/>
+ </appinfo>
+ <documentation>
+ /*******************************************************************************
+ * Copyright (c) 2016 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - Initial API and implementation
+ *******************************************************************************/
+ </documentation>
+ </annotation>
+
+</schema>
diff --git a/remote/org.eclipse.remote.console/src/org/eclipse/remote/console/ITerminalConsole.java b/remote/org.eclipse.remote.console/src/org/eclipse/remote/console/ITerminalConsole.java
new file mode 100644
index 00000000000..9a1a5c89402
--- /dev/null
+++ b/remote/org.eclipse.remote.console/src/org/eclipse/remote/console/ITerminalConsole.java
@@ -0,0 +1,14 @@
+package org.eclipse.remote.console;
+
+import org.eclipse.remote.core.IRemoteConnection;
+
+/**
+ * @since 1.2
+ */
+public interface ITerminalConsole {
+
+ /**
+ * @return The {@link IRemoteConnection} associated to this {@link ITerminalConsole}
+ */
+ public IRemoteConnection getConnection();
+}
diff --git a/remote/org.eclipse.remote.console/src/org/eclipse/remote/console/TerminalConsoleUtility.java b/remote/org.eclipse.remote.console/src/org/eclipse/remote/console/TerminalConsoleUtility.java
new file mode 100644
index 00000000000..a4d08ddffd2
--- /dev/null
+++ b/remote/org.eclipse.remote.console/src/org/eclipse/remote/console/TerminalConsoleUtility.java
@@ -0,0 +1,56 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Red Hat Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Red Hat Inc. - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.console;
+
+import java.util.List;
+
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.internal.console.TerminalConsoleFactory;
+import org.eclipse.ui.console.IConsole;
+
+/**
+ * A collection of public API utility methods to open consoles to
+ * IRemoteConnection objects
+ *
+ * @since 1.1
+ */
+public class TerminalConsoleUtility {
+ /**
+ * Opens a dialog to allow selection of an IRemoteConnection, encoding, etc.
+ * and then open a console to it.
+ */
+ public void openConsole() {
+ new TerminalConsoleFactory().openConsole();
+ }
+
+ /**
+ * Open a specific IRemoteConnection and encoding combination.
+ *
+ * @param connection
+ * @param encoding
+ */
+ public static void openConsole(final IRemoteConnection connection, final String encoding) {
+ TerminalConsoleFactory.openConsole(connection, encoding);
+ }
+
+ /**
+ * Find an existing console for the given IRemoteConnection
+ *
+ * @param connection
+ * @return
+ */
+ public static List<IConsole> findConsole(IRemoteConnection connection) {
+ return TerminalConsoleFactory.findConsole(connection);
+ }
+}
diff --git a/remote/org.eclipse.remote.console/src/org/eclipse/remote/console/actions/ConsoleAction.java b/remote/org.eclipse.remote.console/src/org/eclipse/remote/console/actions/ConsoleAction.java
new file mode 100644
index 00000000000..4bec036d5af
--- /dev/null
+++ b/remote/org.eclipse.remote.console/src/org/eclipse/remote/console/actions/ConsoleAction.java
@@ -0,0 +1,118 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.console.actions;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.resource.ImageRegistry;
+import org.eclipse.remote.internal.console.Activator;
+
+/**
+ * An abstract class to implement basic functionality common to terminal console actions
+ * @since 1.1
+ */
+public abstract class ConsoleAction extends Action {
+
+ /**
+ * @param id
+ * The action id
+ */
+ public ConsoleAction(String id) {
+ this(id, 0);
+ }
+
+ /**
+ * @param id
+ * The action id
+ * @param style
+ * one of AS_PUSH_BUTTON, AS_CHECK_BOX, AS_DROP_DOWN_MENU, AS_RADIO_BUTTON,
+ * and AS_UNSPECIFIED
+ */
+ public ConsoleAction(String id, int style) {
+ super("", style); //$NON-NLS-1$
+ setId(id);
+ }
+
+ /**
+ * @param text
+ * the text for this action
+ * @param tooltip
+ * the tooltip for this action
+ * @param image
+ * the image key for this action
+ * @param enabledImage
+ * the enabled image key for this action
+ * @param disabledImage
+ * the disabled image key for this action
+ * @param enabled
+ * the enabled state for this action
+ */
+ protected void setupAction(String text, String tooltip, String image, String enabledImage, String disabledImage,
+ boolean enabled) {
+ ImageRegistry imageRegistry = Activator.getDefault().getImageRegistry();
+ setupAction(text, tooltip, image, enabledImage, disabledImage, enabled, imageRegistry);
+ }
+
+ /**
+ * @param text
+ * the text for this action
+ * @param tooltip
+ * the tooltip for this action
+ * @param hoverImage
+ * the hover image key for this action
+ * @param enabledImage
+ * the enabled image key for this action
+ * @param disabledImage
+ * the disabled image key for this action
+ * @param enabled
+ * the enabled state for this action
+ * @param imageRegistry
+ * the ImageRegistry to retrieve ImageDescriptor for the keys provided
+ */
+ protected void setupAction(String text, String tooltip, String hoverImage, String enabledImage,
+ String disabledImage, boolean enabled, ImageRegistry imageRegistry) {
+ setupAction(text, tooltip, imageRegistry.getDescriptor(hoverImage), imageRegistry.getDescriptor(enabledImage),
+ imageRegistry.getDescriptor(disabledImage), enabled);
+ }
+
+ /**
+ * @param text
+ * the text for this action
+ * @param tooltip
+ * the tooltip for this action
+ * @param hoverImage
+ * the hover image for this action
+ * @param enabledImage
+ * the enabled image for this action
+ * @param disabledImage
+ * the disabled image for this action
+ * @param enabled
+ * the enabled state for this action
+ */
+ protected void setupAction(String text, String tooltip, ImageDescriptor hoverImage, ImageDescriptor enabledImage,
+ ImageDescriptor disabledImage, boolean enabled) {
+ setText(text);
+ setToolTipText(tooltip);
+ setEnabled(enabled);
+ if (enabledImage != null) {
+ setImageDescriptor(enabledImage);
+ }
+ if (disabledImage != null) {
+ setDisabledImageDescriptor(disabledImage);
+ }
+ if (hoverImage != null) {
+ setHoverImageDescriptor(hoverImage);
+ }
+ }
+}
diff --git a/remote/org.eclipse.remote.console/src/org/eclipse/remote/console/actions/IConsoleActionFactory.java b/remote/org.eclipse.remote.console/src/org/eclipse/remote/console/actions/IConsoleActionFactory.java
new file mode 100644
index 00000000000..11eae980cbf
--- /dev/null
+++ b/remote/org.eclipse.remote.console/src/org/eclipse/remote/console/actions/IConsoleActionFactory.java
@@ -0,0 +1,34 @@
+/*******************************************************************************
+ * Copyright (c) 2016 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.console.actions;
+
+import org.eclipse.core.runtime.IAdaptable;
+
+/**
+ * @since 1.1
+ */
+public interface IConsoleActionFactory {
+ /**
+ * Returns an implementation of ConsoleAction
+ *
+ * @param actionId
+ * The id of the action being requested
+ * @param connectionType
+ * The connection type of the terminal console
+ * @param adapter
+ * An adapter to get relevant objects for use by the ConsoleAction being created (eg. IRemoteConnection)
+ * @return an implementation of ConsoleAction
+ */
+ public ConsoleAction createAction(String actionId, String connectionType, IAdaptable adapter);
+}
diff --git a/remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/Activator.java b/remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/Activator.java
new file mode 100644
index 00000000000..909b1ab12ad
--- /dev/null
+++ b/remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/Activator.java
@@ -0,0 +1,150 @@
+package org.eclipse.remote.internal.console;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Map.Entry;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.resource.ImageRegistry;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.eclipse.remote.console"; //$NON-NLS-1$
+
+ // The shared instance
+ private static Activator plugin;
+
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+ @Override
+ protected void initializeImageRegistry(ImageRegistry imageRegistry) {
+ HashMap<String, String> map = new HashMap<>();
+
+ try {
+ // Local toolbars
+ map.put(ImageConsts.IMAGE_NEW_TERMINAL, "newterminal.gif"); //$NON-NLS-1$
+ map.put(ImageConsts.IMAGE_CLCL_CONNECT, "connect_co.gif"); //$NON-NLS-1$
+ map.put(ImageConsts.IMAGE_CLCL_DISCONNECT, "disconnect_co.gif"); //$NON-NLS-1$
+ map.put(ImageConsts.IMAGE_CLCL_SETTINGS, "properties_tsk.gif"); //$NON-NLS-1$
+ map.put(ImageConsts.IMAGE_CLCL_COMMAND_INPUT_FIELD, "command_input_field.gif"); //$NON-NLS-1$
+ map.put(ImageConsts.IMAGE_CLCL_SCROLL_LOCK, "lock_co.gif"); //$NON-NLS-1$
+
+ loadImageRegistry(imageRegistry, ImageConsts.IMAGE_DIR_LOCALTOOL, map);
+
+ map.clear();
+
+ // Enabled local toolbars
+ map.put(ImageConsts.IMAGE_NEW_TERMINAL, "newterminal.gif"); //$NON-NLS-1$
+ map.put(ImageConsts.IMAGE_ELCL_CONNECT, "connect_co.gif"); //$NON-NLS-1$
+ map.put(ImageConsts.IMAGE_ELCL_DISCONNECT, "disconnect_co.gif"); //$NON-NLS-1$
+ map.put(ImageConsts.IMAGE_ELCL_SETTINGS, "properties_tsk.gif"); //$NON-NLS-1$
+ map.put(ImageConsts.IMAGE_ELCL_COMMAND_INPUT_FIELD, "command_input_field.gif"); //$NON-NLS-1$
+ map.put(ImageConsts.IMAGE_ELCL_SCROLL_LOCK, "lock_co.gif"); //$NON-NLS-1$
+ map.put(ImageConsts.IMAGE_ELCL_REMOVE, "rem_co.gif"); //$NON-NLS-1$
+
+ loadImageRegistry(imageRegistry, ImageConsts.IMAGE_DIR_ELCL, map);
+
+ map.clear();
+
+ // Disabled local toolbars
+ map.put(ImageConsts.IMAGE_NEW_TERMINAL, "newterminal.gif"); //$NON-NLS-1$
+ map.put(ImageConsts.IMAGE_DLCL_CONNECT, "connect_co.gif"); //$NON-NLS-1$
+ map.put(ImageConsts.IMAGE_DLCL_DISCONNECT, "disconnect_co.gif"); //$NON-NLS-1$
+ map.put(ImageConsts.IMAGE_DLCL_SETTINGS, "properties_tsk.gif"); //$NON-NLS-1$
+ map.put(ImageConsts.IMAGE_DLCL_COMMAND_INPUT_FIELD, "command_input_field.gif"); //$NON-NLS-1$
+ map.put(ImageConsts.IMAGE_DLCL_SCROLL_LOCK, "lock_co.gif"); //$NON-NLS-1$
+ map.put(ImageConsts.IMAGE_DLCL_REMOVE, "rem_co.gif"); //$NON-NLS-1$
+
+ loadImageRegistry(imageRegistry, ImageConsts.IMAGE_DIR_DLCL, map);
+
+ map.clear();
+
+ map.put(ImageConsts.IMAGE_TERMINAL_VIEW, "terminal_view.gif"); //$NON-NLS-1$
+
+ loadImageRegistry(imageRegistry, ImageConsts.IMAGE_DIR_EVIEW, map);
+
+ map.clear();
+
+ } catch (MalformedURLException malformedURLException) {
+ malformedURLException.printStackTrace();
+ }
+ }
+
+ protected void loadImageRegistry(ImageRegistry imageRegistry, String strDir, HashMap<String, String> map)
+ throws MalformedURLException {
+ ImageDescriptor imageDescriptor;
+
+ for (Entry<String, String> entry : map.entrySet()) {
+ URL url = plugin.getBundle().getEntry(ImageConsts.IMAGE_DIR_ROOT + strDir + entry.getValue());
+ imageDescriptor = ImageDescriptor.createFromURL(url);
+ imageRegistry.put(entry.getKey(), imageDescriptor);
+ }
+ }
+
+ /**
+ * Create log entry from an IStatus
+ *
+ * @param status
+ * status to log
+ */
+ public static void log(IStatus status) {
+ getDefault().getLog().log(status);
+ }
+
+ /**
+ * Create log entry from a string
+ *
+ * @param msg
+ * message to log
+ */
+ public static void log(String msg) {
+ log(new Status(IStatus.ERROR, PLUGIN_ID, IStatus.ERROR, msg, null));
+ }
+
+ /**
+ * Create log entry from a Throwable
+ *
+ * @param e
+ * throwable to log
+ */
+ public static void log(Throwable e) {
+ log(new Status(IStatus.ERROR, PLUGIN_ID, IStatus.ERROR, e.getMessage(), e));
+ }
+
+ /**
+ * Return the OSGi service with the given service interface.
+ *
+ * @param service
+ * service interface
+ * @return the specified service or null if it's not registered
+ */
+ public static <T> T getService(Class<T> service) {
+ final BundleContext context = plugin.getBundle().getBundleContext();
+ final ServiceReference<T> ref = context.getServiceReference(service);
+ return ref != null ? context.getService(ref) : null;
+ }
+}
diff --git a/remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/ConsoleMessages.java b/remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/ConsoleMessages.java
new file mode 100644
index 00000000000..f02536f61b6
--- /dev/null
+++ b/remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/ConsoleMessages.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.internal.console;
+
+import org.eclipse.osgi.util.NLS;
+
+public class ConsoleMessages extends NLS {
+ static {
+ NLS.initializeMessages(ConsoleMessages.class.getName(), ConsoleMessages.class);
+ }
+
+ public static String SELECT_CONNECTION;
+ public static String ENCODING_UNAVAILABLE_0;
+ public static String ENCODING_UNAVAILABLE_1;
+ public static String ENCODING;
+ public static String OPEN_CONSOLE_ERROR;
+ public static String STATUS;
+ public static String STATUS_CONNECTED;
+ public static String STATUS_CONNECTING;
+ public static String STATUS_CLOSED;
+
+ public static String CONNECTING_TO_TERMINAL;
+ public static String OPENNING_TERMINAL;
+ public static String MAKING_CONNECTION;
+ public static String DISCONNECTING;
+ public static String TerminalConsoleConnector_0;
+}
diff --git a/remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/ConsoleMessages.properties b/remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/ConsoleMessages.properties
new file mode 100644
index 00000000000..e0ffda82eb1
--- /dev/null
+++ b/remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/ConsoleMessages.properties
@@ -0,0 +1,28 @@
+################################################################################
+# Copyright (c) 2015 QNX Software Systems and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# QNX Software Systems - Initial API and implementation
+################################################################################
+SELECT_CONNECTION = Select Remote Connection
+ENCODING_UNAVAILABLE_0 = Unable to set Encoding
+ENCODING_UNAVAILABLE_1 = Encoding {0} is unavailable!
+ENCODING = Encoding:
+OPEN_CONSOLE_ERROR = Error Opening Command Shell Console
+STATUS = Status:
+STATUS_CONNECTED = CONNECTED
+STATUS_CONNECTING = CONNECTING...
+STATUS_CLOSED = CLOSED
+
+CONNECTING_TO_TERMINAL = Connecting to Command Shell
+OPENNING_TERMINAL = Openning Command Shell
+MAKING_CONNECTION = Making Connection
+DISCONNECTING = Disconnecting
+TerminalConsoleConnector_0=Command shell not supported on this connection
diff --git a/remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/ImageConsts.java b/remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/ImageConsts.java
new file mode 100644
index 00000000000..f87758d76f4
--- /dev/null
+++ b/remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/ImageConsts.java
@@ -0,0 +1,54 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2015 Wind River Systems, Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Initial Contributors:
+ * The following Wind River employees contributed to the Terminal component
+ * that contains this file: Chris Thew, Fran Litterio, Stephen Lamb,
+ * Helmut Haigermoser and Ted Williams.
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - extracted from TerminalConsts
+ * Martin Oberhuber (Wind River) - fixed copyright headers and beautified
+ * Anna Dushistova (MontaVista) - [227537] moved actions from terminal.view to terminal plugin
+ * Michael Scharf (Wind River) - [172483] added some more icons
+ * Michael Scharf (Wind River) - [240023] Get rid of the terminal's "Pin" button
+ *******************************************************************************/
+package org.eclipse.remote.internal.console;
+
+public interface ImageConsts {
+ public final static String IMAGE_DIR_ROOT = "icons/"; //$NON-NLS-1$
+ public final static String IMAGE_DIR_LOCALTOOL = "clcl16/"; // basic colors - size 16x16 //$NON-NLS-1$
+ public final static String IMAGE_DIR_DLCL = "dlcl16/"; // disabled - size 16x16 //$NON-NLS-1$
+ public final static String IMAGE_DIR_ELCL = "elcl16/"; // enabled - size 16x16 //$NON-NLS-1$
+ public final static String IMAGE_DIR_VIEW = "cview16/"; // views //$NON-NLS-1$
+ public final static String IMAGE_DIR_EVIEW = "eview16/"; // views //$NON-NLS-1$
+
+ public static final String IMAGE_NEW_TERMINAL = "TerminalViewNewTerminal"; //$NON-NLS-1$
+ public static final String IMAGE_TERMINAL_VIEW = "TerminalView"; //$NON-NLS-1$
+ public static final String IMAGE_CLCL_CONNECT = "ImageClclConnect"; //$NON-NLS-1$
+ public static final String IMAGE_CLCL_DISCONNECT = "ImageClclDisconnect"; //$NON-NLS-1$
+ public static final String IMAGE_CLCL_SETTINGS = "ImageClclSettings"; //$NON-NLS-1$
+ public static final String IMAGE_CLCL_SCROLL_LOCK = "ImageClclScrollLock"; //$NON-NLS-1$
+
+ public static final String IMAGE_DLCL_CONNECT = "ImageDlclConnect"; //$NON-NLS-1$
+ public static final String IMAGE_DLCL_DISCONNECT = "ImageDlclDisconnect"; //$NON-NLS-1$
+ public static final String IMAGE_DLCL_SETTINGS = "ImageDlclSettings"; //$NON-NLS-1$
+ public static final String IMAGE_DLCL_SCROLL_LOCK = "ImageDlclScrollLock"; //$NON-NLS-1$
+ public static final String IMAGE_DLCL_REMOVE = "ImageDlclRemove"; //$NON-NLS-1$
+
+ public static final String IMAGE_ELCL_CONNECT = "ImageElclConnect"; //$NON-NLS-1$
+ public static final String IMAGE_ELCL_DISCONNECT = "ImageElclDisconnect"; //$NON-NLS-1$
+ public static final String IMAGE_ELCL_SETTINGS = "ImageElclSettings"; //$NON-NLS-1$
+ public static final String IMAGE_ELCL_SCROLL_LOCK = "ImageElclScrollLock"; //$NON-NLS-1$
+ public static final String IMAGE_ELCL_REMOVE = "ImageElclRemove"; //$NON-NLS-1$
+ public static final String IMAGE_CLCL_COMMAND_INPUT_FIELD = "ImageClclCommandInputField";//$NON-NLS-1$
+ public static final String IMAGE_ELCL_COMMAND_INPUT_FIELD = "ImageDlclCommandInputField";//$NON-NLS-1$
+ public static final String IMAGE_DLCL_COMMAND_INPUT_FIELD = "ImageDlclCommandInputField";//$NON-NLS-1$
+}
diff --git a/remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/TerminalConsole.java b/remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/TerminalConsole.java
new file mode 100644
index 00000000000..4e9cb8a89bb
--- /dev/null
+++ b/remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/TerminalConsole.java
@@ -0,0 +1,88 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.internal.console;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.remote.console.ITerminalConsole;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.tm.internal.terminal.provisional.api.TerminalState;
+import org.eclipse.ui.console.AbstractConsole;
+import org.eclipse.ui.console.IConsoleView;
+import org.eclipse.ui.part.IPageBookViewPage;
+import org.eclipse.ui.progress.UIJob;
+
+public class TerminalConsole extends AbstractConsole implements ITerminalConsole {
+ private final String encoding;
+ private final TerminalConsoleConnector terminalConnector;
+ private final int index;
+
+ public TerminalConsole(IRemoteConnection connection, int index, String encoding) {
+ super(connection.getName(),
+ Activator.getDefault().getImageRegistry().getDescriptor(ImageConsts.IMAGE_TERMINAL_VIEW));
+ this.encoding = encoding;
+ this.terminalConnector = new TerminalConsoleConnector(connection);
+ this.index = index;
+ }
+
+ public TerminalConsoleConnector getTerminalConnector() {
+ return terminalConnector;
+ }
+
+ @Override
+ public IRemoteConnection getConnection() {
+ return terminalConnector.getConnection();
+ }
+
+ public int getIndex() {
+ return index;
+ }
+
+ public synchronized void setState(TerminalState terminalState) {
+ StringBuffer nameBuff = new StringBuffer(getConnection().getName());
+ if (index > 0) {
+ nameBuff.append(' ');
+ nameBuff.append(String.valueOf(index));
+ }
+ nameBuff.append(" ("); //$NON-NLS-1$
+ if (terminalState == TerminalState.CLOSED) {
+ nameBuff.append(ConsoleMessages.STATUS_CLOSED);
+ } else if (terminalState == TerminalState.CONNECTED) {
+ nameBuff.append(ConsoleMessages.STATUS_CONNECTED);
+ } else if (terminalState == TerminalState.CONNECTING) {
+ nameBuff.append(ConsoleMessages.STATUS_CONNECTING);
+ }
+ nameBuff.append(")"); //$NON-NLS-1$
+
+ final String name = nameBuff.toString();
+ if (!name.equals(getName())) {
+ UIJob job = new UIJob("updating name") { //$NON-NLS-1$
+ @Override
+ public IStatus runInUIThread(IProgressMonitor monitor) {
+ TerminalConsole.this.setName(name);
+ return Status.OK_STATUS;
+ }
+ };
+ job.setSystem(true);
+ job.schedule();
+ }
+ }
+
+ @Override
+ public IPageBookViewPage createPage(IConsoleView view) {
+ view.setFocus();
+ return new TerminalConsolePage(this, encoding);
+ }
+}
diff --git a/remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/TerminalConsoleConnector.java b/remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/TerminalConsoleConnector.java
new file mode 100644
index 00000000000..86dba723c31
--- /dev/null
+++ b/remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/TerminalConsoleConnector.java
@@ -0,0 +1,308 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.internal.console;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.PlatformObject;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.remote.core.IRemoteCommandShellService;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteProcess;
+import org.eclipse.remote.core.IRemoteProcessBuilder;
+import org.eclipse.remote.core.IRemoteProcessTerminalService;
+import org.eclipse.remote.core.exception.RemoteConnectionException;
+import org.eclipse.tm.internal.terminal.provisional.api.ISettingsStore;
+import org.eclipse.tm.internal.terminal.provisional.api.ITerminalConnector;
+import org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl;
+import org.eclipse.tm.internal.terminal.provisional.api.TerminalState;
+
+public class TerminalConsoleConnector {
+
+ private final IRemoteConnection connection;
+ private IRemoteProcess remoteProcess;
+ private PageConnector[] pageConnectors = new PageConnector[0];
+ private int width, height;
+ private TerminalState state = TerminalState.CLOSED;
+
+ private class OutThread extends Thread {
+ public OutThread() {
+ super("Terminal Output"); //$NON-NLS-1$
+ }
+
+ @Override
+ public void run() {
+ try {
+ byte[] buff = new byte[1024];
+ if (remoteProcess != null) {
+ InputStream in = remoteProcess.getInputStream();
+ for (int n = in.read(buff); n >= 0; n = in.read(buff)) {
+ for (PageConnector connector : pageConnectors) {
+ ITerminalControl control = connector.control;
+ if (control != null) {
+ control.getRemoteToTerminalOutputStream().write(buff, 0, n);
+ }
+ }
+ }
+ }
+ } catch (IOException e) {
+ Activator.log(e);
+ }
+
+ synchronized (TerminalConsoleConnector.this) {
+ outThread = null;
+ disconnect();
+ }
+ }
+ }
+
+ private OutThread outThread;
+
+ public TerminalConsoleConnector(IRemoteConnection connection) {
+ this.connection = connection;
+ }
+
+ public IRemoteConnection getConnection() {
+ return connection;
+ }
+
+ public ITerminalConnector newPageConnector() {
+ PageConnector connector = new PageConnector();
+ List<PageConnector> list = new ArrayList<>(Arrays.asList(pageConnectors));
+ list.add(connector);
+ pageConnectors = list.toArray(new PageConnector[list.size()]);
+ return connector;
+ }
+
+ private void disposePageConnector(PageConnector connector) {
+ List<PageConnector> list = new ArrayList<>(Arrays.asList(pageConnectors));
+ list.remove(connector);
+ pageConnectors = list.toArray(new PageConnector[list.size()]);
+ if (list.isEmpty()) {
+ // All gone, disconnect
+ disconnect();
+ }
+ }
+
+ private synchronized void setState(TerminalState state) {
+ this.state = state;
+ for (PageConnector connector : pageConnectors) {
+ ITerminalControl control = connector.control;
+ if (control != null) {
+ connector.control.setState(state);
+ }
+ }
+ }
+
+ public synchronized void connect() {
+ if (state != TerminalState.CLOSED) {
+ return;
+ }
+
+ new Job(ConsoleMessages.MAKING_CONNECTION) {
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ // make sure we're only doing this one at a time
+ // second and further controls will inherit much of this
+ synchronized (TerminalConsoleConnector.this) {
+ setState(TerminalState.CONNECTING);
+
+ if (remoteProcess == null || remoteProcess.isCompleted()) {
+ try {
+ // We'll need a new one
+ if (!connection.isOpen()) {
+ try {
+ connection.open(monitor);
+ } catch (RemoteConnectionException e) {
+ return e.getStatus();
+ }
+ }
+ remoteProcess = connection.getService(IRemoteCommandShellService.class)
+ .getCommandShell(IRemoteProcessBuilder.ALLOCATE_PTY);
+ } catch (IOException e) {
+ disconnect();
+ return new Status(IStatus.ERROR, Activator.PLUGIN_ID, e.getLocalizedMessage(), e);
+ }
+ }
+
+ if (remoteProcess == null) {
+ disconnect();
+ return new Status(IStatus.ERROR, Activator.PLUGIN_ID,
+ ConsoleMessages.TerminalConsoleConnector_0);
+ }
+
+ if (width > 0 || height > 0) {
+ IRemoteProcessTerminalService termService = remoteProcess
+ .getService(IRemoteProcessTerminalService.class);
+ if (termService != null) {
+ termService.setTerminalSize(width, height, 8 * width, 8 * height);
+ }
+ }
+
+ if (outThread == null) {
+ outThread = new OutThread();
+ outThread.start();
+ }
+
+ setState(TerminalState.CONNECTED);
+ return Status.OK_STATUS;
+ }
+ }
+ }.schedule();
+ }
+
+ public void disconnect() {
+ if (remoteProcess != null && !remoteProcess.isCompleted()) {
+ new Job(ConsoleMessages.DISCONNECTING) {
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ remoteProcess.destroy();
+ remoteProcess = null;
+ setState(TerminalState.CLOSED);
+ return Status.OK_STATUS;
+ }
+ }.schedule();
+ } else {
+ setState(TerminalState.CLOSED);
+ }
+ }
+
+ private void setTerminalSize() {
+ int minWidth = Integer.MAX_VALUE;
+ int minHeight = Integer.MAX_VALUE;
+
+ for (PageConnector connector : pageConnectors) {
+ if (connector.myWidth < minWidth) {
+ minWidth = connector.myWidth;
+ }
+ if (connector.myHeight < minHeight) {
+ minHeight = connector.myHeight;
+ }
+ }
+
+ // Weird but the terminal has wrapping issues at this width, need to reduce it by 4.
+ minWidth -= 4;
+
+ if (minWidth != width || minHeight != height) {
+ width = minWidth;
+ height = minHeight;
+ synchronized (this) {
+ if (remoteProcess != null) {
+ IRemoteProcessTerminalService termService = remoteProcess
+ .getService(IRemoteProcessTerminalService.class);
+ if (termService != null) {
+ termService.setTerminalSize(width, height, 8 * width, 8 * height);
+ }
+ }
+ }
+ }
+ }
+
+ private class PageConnector extends PlatformObject implements ITerminalConnector {
+ private int myWidth, myHeight;
+ private ITerminalControl control;
+
+ @Override
+ public OutputStream getTerminalToRemoteStream() {
+ return remoteProcess != null ? remoteProcess.getOutputStream() : null;
+ }
+
+ @Override
+ public void connect(final ITerminalControl control) {
+ this.control = control;
+ control.setVT100LineWrapping(true);
+ TerminalConsoleConnector.this.connect();
+ if (!control.getState().equals(state)) {
+ control.setState(state);
+ }
+ }
+
+ @Override
+ public synchronized void disconnect() {
+ disposePageConnector(this);
+ }
+
+ @Override
+ public void setTerminalSize(int newWidth, int newHeight) {
+ if (newWidth != myWidth || newHeight != myHeight) {
+ myWidth = newWidth;
+ myHeight = newHeight;
+ TerminalConsoleConnector.this.setTerminalSize();
+ }
+ }
+
+ @Override
+ public String getId() {
+ // No id, we're magic
+ return null;
+ }
+
+ @Override
+ public String getName() {
+ // No name
+ return null;
+ }
+
+ @Override
+ public boolean isHidden() {
+ // in case we do leak into the TM world, we shouldn't be visible
+ return true;
+ }
+
+ @Override
+ public boolean isInitialized() {
+ return true;
+ }
+
+ @Override
+ public String getInitializationErrorMessage() {
+ return null;
+ }
+
+ @Override
+ public boolean isLocalEcho() {
+ // TODO should the be a property of the connection?
+ return false;
+ }
+
+ @Override
+ public void setDefaultSettings() {
+ // we don't do settings
+ }
+
+ @Override
+ public String getSettingsSummary() {
+ // we don't do settings
+ return null;
+ }
+
+ @Override
+ public void load(ISettingsStore arg0) {
+ // we don't do settings
+ }
+
+ @Override
+ public void save(ISettingsStore arg0) {
+ // we don't do settings
+ }
+ }
+}
diff --git a/remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/TerminalConsoleExtensionManager.java b/remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/TerminalConsoleExtensionManager.java
new file mode 100644
index 00000000000..7bb0eec5568
--- /dev/null
+++ b/remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/TerminalConsoleExtensionManager.java
@@ -0,0 +1,92 @@
+/*******************************************************************************
+ * Copyright (c) 2016 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.internal.console;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtension;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.IExtensionRegistry;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.remote.console.actions.IConsoleActionFactory;
+
+public class TerminalConsoleExtensionManager {
+ private static TerminalConsoleExtensionManager instance;
+ private Map<String, List<String>> actions;
+ private Map<String, IConsoleActionFactory> factories;
+ private Map<String, IConfigurationElement> elements;
+
+ private TerminalConsoleExtensionManager() {
+ }
+
+ public static TerminalConsoleExtensionManager getInstance() {
+ if (instance == null) {
+ instance = new TerminalConsoleExtensionManager();
+ }
+ return instance;
+ }
+
+ public List<String> getActionsForType(String id) {
+ initialize();
+ List<String> list = actions.get(id);
+ return list == null ? new ArrayList<>() : list;
+ }
+
+ public IConsoleActionFactory getFactory(String id) {
+ return factories.get(id);
+ }
+
+ private void initialize() {
+ if (actions == null) {
+ actions = new LinkedHashMap<>();
+ elements = new LinkedHashMap<>();
+ factories = new HashMap<>();
+ IExtensionRegistry registry = Platform.getExtensionRegistry();
+ IExtensionPoint point = registry
+ .getExtensionPoint(Activator.getDefault().getBundle().getSymbolicName() + ".toolbar");
+ for (IExtension extension : point.getExtensions()) {
+ for (IConfigurationElement element : extension.getConfigurationElements()) {
+ String id = element.getAttribute("id"); //$NON-NLS-1$
+ if (id != null) {
+ elements.put(id, element);
+ IConsoleActionFactory factory = null;
+ try {
+ factory = (IConsoleActionFactory) element.createExecutableExtension("actionFactory");
+ } catch (CoreException e) {
+ Activator.log(e);
+ }
+ if (factory != null) {
+ String connectionType = element.getAttribute("connectionType");
+ if (connectionType != null) {
+ List<String> actionList = actions.get(connectionType);
+ if (actionList == null) {
+ actionList = new ArrayList<>();
+ }
+ actionList.add(id);
+ actions.put(connectionType, actionList);
+ factories.put(id, factory);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/TerminalConsoleFactory.java b/remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/TerminalConsoleFactory.java
new file mode 100644
index 00000000000..96882b69be3
--- /dev/null
+++ b/remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/TerminalConsoleFactory.java
@@ -0,0 +1,120 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.internal.console;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jface.window.Window;
+import org.eclipse.remote.core.IRemoteCommandShellService;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.exception.RemoteConnectionException;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.console.ConsolePlugin;
+import org.eclipse.ui.console.IConsole;
+import org.eclipse.ui.console.IConsoleFactory;
+import org.eclipse.ui.console.IConsoleManager;
+
+public class TerminalConsoleFactory implements IConsoleFactory {
+
+ @Override
+ public void openConsole() {
+ final TerminalConsoleSettingsDialog settingsDialog = new TerminalConsoleSettingsDialog(
+ PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell());
+ if (settingsDialog.open() == Window.OK) {
+ openConsole(settingsDialog.getRemoteConnection(), settingsDialog.getEncoding());
+ }
+ }
+
+ public static void openConsole(final IRemoteConnection connection, final String encoding) {
+ Job j = new Job(ConsoleMessages.OPENNING_TERMINAL) {
+ @Override
+ public IStatus run(IProgressMonitor monitor) {
+ return openConsoleImplementation(connection, encoding, monitor);
+ }
+ };
+ j.schedule();
+ }
+
+ private static IStatus openConsoleImplementation(final IRemoteConnection connection, final String encoding,
+ IProgressMonitor monitor) {
+ IRemoteCommandShellService commandShellService = connection.getService(IRemoteCommandShellService.class);
+ if (commandShellService == null) {
+ return Status.CANCEL_STATUS;
+ }
+ try {
+ createConsole(connection, encoding, commandShellService, monitor);
+ return Status.OK_STATUS;
+ } catch (RemoteConnectionException rce) {
+ return rce.getStatus();
+ }
+
+ }
+
+ private static IConsole createConsole(final IRemoteConnection connection, final String encoding,
+ IRemoteCommandShellService service, IProgressMonitor monitor) throws RemoteConnectionException {
+ if (!connection.isOpen()) {
+ connection.open(monitor);
+ }
+
+ // TODO, how to handle command shells that are singletons, like serial ports
+
+ IConsoleManager consoleManager = ConsolePlugin.getDefault().getConsoleManager();
+ // Find the next index;
+ int index = findNextIndex(consoleManager, connection);
+
+ TerminalConsole terminalConsole = new TerminalConsole(connection, index, encoding);
+ consoleManager.addConsoles(new IConsole[] { terminalConsole });
+ consoleManager.showConsoleView(terminalConsole);
+ return terminalConsole;
+ }
+
+ private static int findNextIndex(IConsoleManager consoleManager, IRemoteConnection connection) {
+ IConsole[] consoles = consoleManager.getConsoles();
+ boolean[] indices = new boolean[consoles.length];
+ for (IConsole console : consoles) {
+ if (console instanceof TerminalConsole) {
+ TerminalConsole terminalConsole = (TerminalConsole) console;
+ if (terminalConsole.getConnection().equals(connection)) {
+ indices[terminalConsole.getIndex()] = true;
+ }
+ }
+ }
+ int index = 0;
+ while (index < indices.length && indices[index]) {
+ index++;
+ }
+ return index;
+ }
+
+ public static List<IConsole> findConsole(IRemoteConnection connection) {
+ ArrayList<IConsole> ret = new ArrayList<>();
+ IConsoleManager consoleManager = ConsolePlugin.getDefault().getConsoleManager();
+ IConsole[] consoles = consoleManager.getConsoles();
+ for (IConsole console : consoles) {
+ if (console instanceof TerminalConsole) {
+ TerminalConsole terminalConsole = (TerminalConsole) console;
+ if (terminalConsole.getConnection().equals(connection)) {
+ ret.add(terminalConsole);
+ }
+ }
+ }
+ return ret;
+ }
+
+} \ No newline at end of file
diff --git a/remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/TerminalConsolePage.java b/remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/TerminalConsolePage.java
new file mode 100644
index 00000000000..ec06831235d
--- /dev/null
+++ b/remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/TerminalConsolePage.java
@@ -0,0 +1,216 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.internal.console;
+
+import java.io.UnsupportedEncodingException;
+import java.util.List;
+
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jface.action.GroupMarker;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.dialogs.ErrorDialog;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.remote.console.actions.ConsoleAction;
+import org.eclipse.remote.console.actions.IConsoleActionFactory;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.internal.console.actions.ConsoleActionConnect;
+import org.eclipse.remote.internal.console.actions.ConsoleActionDisconnect;
+import org.eclipse.remote.internal.console.actions.ConsoleActionScrollLock;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.tm.internal.terminal.control.ITerminalListener;
+import org.eclipse.tm.internal.terminal.control.ITerminalViewControl;
+import org.eclipse.tm.internal.terminal.control.TerminalViewControlFactory;
+import org.eclipse.tm.internal.terminal.provisional.api.ITerminalConnector;
+import org.eclipse.tm.internal.terminal.provisional.api.TerminalState;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.console.IConsoleConstants;
+import org.eclipse.ui.console.actions.CloseConsoleAction;
+import org.eclipse.ui.part.IPageSite;
+import org.eclipse.ui.part.Page;
+import org.eclipse.ui.progress.UIJob;
+
+public class TerminalConsolePage extends Page implements IAdaptable {
+ public static final String TOOLBAR_GROUP_ID = "org.eclipse.remote.internal.terminal.console.Toolbar"; //$NON-NLS-1$
+ public static final String CONTRIBUTIONS_GROUP_ID = "org.eclipse.remote.internal.terminal.console.Toolbar.contributions"; //$NON-NLS-1$
+
+ private final ConsoleActionConnect connectAction;
+ private final ConsoleActionDisconnect disconnectAction;
+
+ private final TerminalConsole terminalConsole;
+ private final String encoding;
+ private Composite mainComposite;
+ private ITerminalViewControl tViewCtrl;
+
+ private Job connectTerminalJob = new ConnectTerminalJob();
+
+ private final ITerminalListener listener = new ITerminalListener() {
+ @Override
+ public void setState(TerminalState state) {
+ if (state == TerminalState.CONNECTING || state == TerminalState.CONNECTED) {
+ disconnectAction.setEnabled(true);
+ connectAction.setEnabled(false);
+ } else if (state == TerminalState.CLOSED) {
+ disconnectAction.setEnabled(false);
+ connectAction.setEnabled(true);
+ }
+ terminalConsole.setState(state);
+ }
+
+ @Override
+ public void setTerminalTitle(final String title) {
+ // ignore titles coming from the widget
+ }
+ };
+
+ public TerminalConsolePage(TerminalConsole console, String encoding) {
+ terminalConsole = console;
+ this.encoding = encoding;
+ connectAction = new ConsoleActionConnect(console);
+ disconnectAction = new ConsoleActionDisconnect(console);
+ }
+
+ public TerminalConsole getConsole() {
+ return terminalConsole;
+ }
+
+ @Override
+ public void init(IPageSite pageSite) {
+ super.init(pageSite);
+ IToolBarManager toolBarManager = pageSite.getActionBars().getToolBarManager();
+ toolBarManager.insertBefore(IConsoleConstants.OUTPUT_GROUP, new GroupMarker(TOOLBAR_GROUP_ID));
+
+ toolBarManager.appendToGroup(TOOLBAR_GROUP_ID, connectAction);
+ toolBarManager.appendToGroup(TOOLBAR_GROUP_ID, disconnectAction);
+ toolBarManager.appendToGroup(TOOLBAR_GROUP_ID, new ConsoleActionScrollLock(this));
+ toolBarManager.appendToGroup(TOOLBAR_GROUP_ID, new CloseConsoleAction(terminalConsole));
+
+ toolBarManager.insertAfter(TOOLBAR_GROUP_ID, new GroupMarker(CONTRIBUTIONS_GROUP_ID));
+
+ addToolbarContributions(toolBarManager);
+ }
+
+ private void addToolbarContributions(IToolBarManager toolBarManager) {
+ String connectionType = terminalConsole.getConnection().getConnectionType().getId();
+ List<String> actions = TerminalConsoleExtensionManager.getInstance().getActionsForType(connectionType);
+ for (String id : actions) {
+ IConsoleActionFactory factory = TerminalConsoleExtensionManager.getInstance().getFactory(id);
+ if (factory != null) {
+ ConsoleAction action = factory.createAction(id, connectionType, this);
+ if (action != null) {
+ toolBarManager.appendToGroup(CONTRIBUTIONS_GROUP_ID, action);
+ }
+ }
+ }
+ }
+
+ @Override
+ public void createControl(Composite parent) {
+ mainComposite = new Composite(parent, SWT.NONE);
+ mainComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
+ mainComposite.setLayout(new FillLayout());
+
+ tViewCtrl = TerminalViewControlFactory.makeControl(listener, mainComposite, new ITerminalConnector[] {});
+ tViewCtrl.setConnector(terminalConsole.getTerminalConnector().newPageConnector());
+
+ try {
+ tViewCtrl.setEncoding(encoding);
+ } catch (UnsupportedEncodingException e) {
+ IStatus status = new Status(IStatus.ERROR, Activator.PLUGIN_ID,
+ NLS.bind(ConsoleMessages.ENCODING_UNAVAILABLE_1, encoding));
+ Activator.log(status);
+ ErrorDialog.openError(PlatformUI.getWorkbench().getDisplay().getActiveShell(),
+ ConsoleMessages.OPEN_CONSOLE_ERROR, ConsoleMessages.ENCODING_UNAVAILABLE_0, status);
+ }
+ connectTerminalJob.schedule();
+ }
+
+ @Override
+ public Control getControl() {
+ return mainComposite;
+ }
+
+ @Override
+ public void setFocus() {
+ tViewCtrl.setFocus();
+ }
+
+ @Override
+ public void dispose() {
+ tViewCtrl.disposeTerminal();
+ super.dispose();
+ }
+
+ public TerminalState getTerminalState() {
+ return tViewCtrl.getState();
+ }
+
+ public void connectTerminal() {
+ if (!tViewCtrl.isConnected()) {
+ connectTerminalJob.schedule();
+ }
+ }
+
+ public void disconnectTerminal() {
+ if (tViewCtrl.getState() != TerminalState.CLOSED) {
+ tViewCtrl.disconnectTerminal();
+ }
+ }
+
+ public void setScrollLock(boolean enabled) {
+ tViewCtrl.setScrollLock(enabled);
+ }
+
+ public boolean getScrollLock() {
+ return tViewCtrl.isScrollLock();
+ }
+
+ class ConnectTerminalJob extends UIJob {
+ public ConnectTerminalJob() {
+ super(ConsoleMessages.CONNECTING_TO_TERMINAL);
+ setSystem(true);
+ }
+
+ @Override
+ public IStatus runInUIThread(IProgressMonitor monitor) {
+ if (tViewCtrl != null && !tViewCtrl.isDisposed()) {
+ tViewCtrl.clearTerminal();
+ tViewCtrl.connectTerminal();
+ }
+ return Status.OK_STATUS;
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public <T> T getAdapter(Class<T> adapter) {
+ if (adapter.equals(IRemoteConnection.class)) {
+ return (T) terminalConsole.getConnection();
+ }
+ if (adapter.equals(TerminalConsole.class)) {
+ return (T) terminalConsole;
+ }
+ if (adapter.equals(TerminalConsolePage.class)) {
+ return (T) this;
+ }
+ return null;
+ }
+}
diff --git a/remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/TerminalConsoleSettingsDialog.java b/remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/TerminalConsoleSettingsDialog.java
new file mode 100644
index 00000000000..f22d114a117
--- /dev/null
+++ b/remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/TerminalConsoleSettingsDialog.java
@@ -0,0 +1,194 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.internal.console;
+
+import java.nio.charset.Charset;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.IDialogSettings;
+import org.eclipse.jface.window.IShellProvider;
+import org.eclipse.jface.window.Window;
+import org.eclipse.remote.core.IRemoteCommandShellService;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteConnectionType;
+import org.eclipse.remote.core.IRemoteProcessService;
+import org.eclipse.remote.core.IRemoteServicesManager;
+import org.eclipse.remote.ui.widgets.RemoteConnectionWidget;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+
+public class TerminalConsoleSettingsDialog extends Dialog {
+
+ private static final String CONNECTION_TYPE = "connectionType"; //$NON-NLS-1$
+ private static final String CONNECTION_NAME = "connectionName"; //$NON-NLS-1$
+ private static final String ENCODING = "encoding"; //$NON-NLS-1$
+
+ private RemoteConnectionWidget remoteConnWidget;
+ private Combo encodingCombo;
+ private String selectedEncoding;
+
+ public TerminalConsoleSettingsDialog(IShellProvider parentShell) {
+ this(parentShell.getShell());
+ }
+
+ public TerminalConsoleSettingsDialog(Shell parentShell) {
+ super(parentShell);
+ }
+
+ @Override
+ protected Control createDialogArea(Composite parent) {
+ Composite composite = (Composite) super.createDialogArea(parent);
+ composite.setLayout(new GridLayout(2, false));
+
+ IRemoteServicesManager manager = Activator.getService(IRemoteServicesManager.class);
+ // TODO remove the remote process service once we get command shell available with ssh and local
+ @SuppressWarnings("unchecked")
+ List<IRemoteConnectionType> connTypes = manager.getConnectionTypesSupporting(IRemoteCommandShellService.class,
+ IRemoteProcessService.class);
+
+ remoteConnWidget = new RemoteConnectionWidget(composite, SWT.NONE, null, 0, connTypes);
+
+ IDialogSettings settings = getDialogSettings();
+ String initialId = settings.get(CONNECTION_TYPE);
+ String initialName = settings.get(CONNECTION_NAME);
+ if (initialId != null && initialName != null) {
+ remoteConnWidget.setConnection(initialId, initialName);
+ }
+ GridData gd = new GridData();
+ gd.horizontalSpan = 2;
+ remoteConnWidget.setLayoutData(gd);
+ remoteConnWidget.addSelectionListener(new ValidationSelectionListener());
+
+ Label encodingLabel = new Label(composite, SWT.NONE);
+ encodingLabel.setLayoutData(new GridData());
+ encodingLabel.setText(ConsoleMessages.ENCODING);
+
+ encodingCombo = new Combo(composite, SWT.READ_ONLY);
+ encodingCombo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ int i = 0;
+ String initialEncoding = settings.get(ENCODING);
+ if (initialEncoding == null) {
+ initialEncoding = Charset.defaultCharset().name();
+ }
+ for (String encoding : getEncodings()) {
+ encodingCombo.add(encoding);
+ if (encoding.equals(initialEncoding)) {
+ selectedEncoding = encoding;
+ encodingCombo.select(i);
+ }
+ i++;
+ }
+ encodingCombo.addSelectionListener(new ValidationSelectionListener());
+
+ return composite;
+ }
+
+ private List<String> getEncodings() {
+ List<String> encodings = new ArrayList<>(2);
+ encodings.add("ISO-8859-1"); //$NON-NLS-1$
+ encodings.add("UTF-8"); //$NON-NLS-1$
+
+ String hostEncoding = Charset.defaultCharset().name();
+ if (!encodings.contains(hostEncoding)) {
+ encodings.add(hostEncoding);
+ }
+ return encodings;
+ }
+
+ @Override
+ protected void createButtonsForButtonBar(Composite parent) {
+ super.createButtonsForButtonBar(parent);
+ validateDialog();
+ }
+
+ @Override
+ protected void configureShell(Shell newShell) {
+ super.configureShell(newShell);
+ newShell.setText(ConsoleMessages.SELECT_CONNECTION);
+ }
+
+ private void validateDialog() {
+ IRemoteConnection connection = remoteConnWidget.getConnection();
+ selectedEncoding = encodingCombo.getItem(encodingCombo.getSelectionIndex());
+ if (connection != null && selectedEncoding != null) {
+ getButton(OK).setEnabled(true);
+ } else {
+ getButton(OK).setEnabled(false);
+ }
+ }
+
+ /**
+ * Get the remote connection selected in the dialog.
+ */
+ public IRemoteConnection getRemoteConnection() {
+ return remoteConnWidget.getConnection();
+ }
+
+ /**
+ * Get the encoding selected in the dialog.
+ */
+ public String getEncoding() {
+ return selectedEncoding;
+ }
+
+ class ValidationSelectionListener implements SelectionListener {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ validateDialog();
+ }
+
+ @Override
+ public void widgetDefaultSelected(SelectionEvent e) {
+ validateDialog();
+ }
+ }
+
+ private IDialogSettings getDialogSettings() {
+ IDialogSettings result = Activator.getDefault().getDialogSettings()
+ .getSection(TerminalConsoleSettingsDialog.class.getName());
+
+ if (result == null) {
+ result = Activator.getDefault().getDialogSettings()
+ .addNewSection(TerminalConsoleSettingsDialog.class.getName());
+ }
+
+ return result;
+
+ }
+
+ @Override
+ public int open() {
+ int rc = super.open();
+ if (rc == Window.OK) {
+ // save the settings
+ IDialogSettings settings = getDialogSettings();
+ IRemoteConnection connection = getRemoteConnection();
+ settings.put(CONNECTION_TYPE, connection.getConnectionType().getId());
+ settings.put(CONNECTION_NAME, connection.getName());
+ settings.put(ENCODING, getEncoding());
+ }
+ return rc;
+ }
+
+}
diff --git a/remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/actions/ActionMessages.java b/remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/actions/ActionMessages.java
new file mode 100644
index 00000000000..758a83c2470
--- /dev/null
+++ b/remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/actions/ActionMessages.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.internal.console.actions;
+
+import org.eclipse.osgi.util.NLS;
+
+public class ActionMessages extends NLS {
+
+ static {
+ NLS.initializeMessages(ActionMessages.class.getName(), ActionMessages.class);
+ }
+
+ public static String CONNECT;
+ public static String DISCONNECT;
+ public static String SCROLL_LOCK;
+
+}
diff --git a/remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/actions/ActionMessages.properties b/remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/actions/ActionMessages.properties
new file mode 100644
index 00000000000..1f5b7e51cd4
--- /dev/null
+++ b/remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/actions/ActionMessages.properties
@@ -0,0 +1,16 @@
+################################################################################
+# Copyright (c) 2015 QNX Software Systems and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# QNX Software Systems - Initial API and implementation
+################################################################################
+CONNECT = Connect
+DISCONNECT = Disconnect
+SCROLL_LOCK = Scroll Lock \ No newline at end of file
diff --git a/remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/actions/ConsoleActionConnect.java b/remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/actions/ConsoleActionConnect.java
new file mode 100644
index 00000000000..19a21ad1e74
--- /dev/null
+++ b/remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/actions/ConsoleActionConnect.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.internal.console.actions;
+
+import org.eclipse.remote.console.actions.ConsoleAction;
+import org.eclipse.remote.internal.console.ImageConsts;
+import org.eclipse.remote.internal.console.TerminalConsole;
+
+public class ConsoleActionConnect extends ConsoleAction {
+ private final TerminalConsole console;
+
+ public ConsoleActionConnect(TerminalConsole console) {
+ super(ConsoleActionConnect.class.getName());
+
+ this.console = console;
+
+ setupAction(ActionMessages.CONNECT, ActionMessages.CONNECT, ImageConsts.IMAGE_CLCL_CONNECT,
+ ImageConsts.IMAGE_ELCL_CONNECT, ImageConsts.IMAGE_DLCL_CONNECT, true);
+ }
+
+ @Override
+ public void run() {
+ console.getTerminalConnector().connect();
+ }
+}
diff --git a/remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/actions/ConsoleActionDisconnect.java b/remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/actions/ConsoleActionDisconnect.java
new file mode 100644
index 00000000000..c82a928a1a0
--- /dev/null
+++ b/remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/actions/ConsoleActionDisconnect.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.internal.console.actions;
+
+import org.eclipse.remote.console.actions.ConsoleAction;
+import org.eclipse.remote.internal.console.ImageConsts;
+import org.eclipse.remote.internal.console.TerminalConsole;
+
+public class ConsoleActionDisconnect extends ConsoleAction {
+ private final TerminalConsole console;
+
+ public ConsoleActionDisconnect(TerminalConsole console) {
+ super(ConsoleActionDisconnect.class.getName());
+
+ this.console = console;
+
+ setupAction(ActionMessages.DISCONNECT, ActionMessages.DISCONNECT, ImageConsts.IMAGE_CLCL_DISCONNECT,
+ ImageConsts.IMAGE_ELCL_DISCONNECT, ImageConsts.IMAGE_DLCL_DISCONNECT, false);
+ }
+
+ @Override
+ public void run() {
+ console.getTerminalConnector().disconnect();
+ }
+}
diff --git a/remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/actions/ConsoleActionScrollLock.java b/remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/actions/ConsoleActionScrollLock.java
new file mode 100644
index 00000000000..38ec2674b96
--- /dev/null
+++ b/remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/actions/ConsoleActionScrollLock.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.internal.console.actions;
+
+import org.eclipse.jface.action.IAction;
+import org.eclipse.remote.console.actions.ConsoleAction;
+import org.eclipse.remote.internal.console.ImageConsts;
+import org.eclipse.remote.internal.console.TerminalConsolePage;
+
+public class ConsoleActionScrollLock extends ConsoleAction {
+ private final TerminalConsolePage page;
+
+ public ConsoleActionScrollLock(TerminalConsolePage page) {
+ super(ConsoleActionScrollLock.class.getName(), IAction.AS_RADIO_BUTTON);
+
+ this.page = page;
+
+ setupAction(ActionMessages.SCROLL_LOCK, ActionMessages.SCROLL_LOCK, ImageConsts.IMAGE_CLCL_SCROLL_LOCK,
+ ImageConsts.IMAGE_ELCL_SCROLL_LOCK, ImageConsts.IMAGE_DLCL_SCROLL_LOCK, true);
+ }
+
+ @Override
+ public void run() {
+ page.setScrollLock(!page.getScrollLock());
+ setChecked(page.getScrollLock());
+ }
+}
diff --git a/remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/actions/OpenCommandShellHandler.java b/remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/actions/OpenCommandShellHandler.java
new file mode 100644
index 00000000000..a382559d8e5
--- /dev/null
+++ b/remote/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/actions/OpenCommandShellHandler.java
@@ -0,0 +1,27 @@
+package org.eclipse.remote.internal.console.actions;
+
+import java.nio.charset.Charset;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.internal.console.TerminalConsoleFactory;
+import org.eclipse.ui.handlers.HandlerUtil;
+
+public class OpenCommandShellHandler extends AbstractHandler {
+
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ ISelection selection = HandlerUtil.getActiveWorkbenchWindow(event).getActivePage().getSelection();
+ if (selection != null && selection instanceof IStructuredSelection) {
+ IRemoteConnection connection = (IRemoteConnection) ((IStructuredSelection) selection).iterator().next();
+ TerminalConsoleFactory.openConsole(connection, Charset.defaultCharset().name());
+ }
+ return Status.OK_STATUS;
+ }
+
+}
diff --git a/remote/org.eclipse.remote.core.tests/.classpath b/remote/org.eclipse.remote.core.tests/.classpath
new file mode 100644
index 00000000000..a42a828e04a
--- /dev/null
+++ b/remote/org.eclipse.remote.core.tests/.classpath
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src">
+ <attributes>
+ <attribute name="test" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/remote/org.eclipse.remote.core.tests/.project b/remote/org.eclipse.remote.core.tests/.project
new file mode 100644
index 00000000000..8eccea27b31
--- /dev/null
+++ b/remote/org.eclipse.remote.core.tests/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.remote.core.tests</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+ </natures>
+</projectDescription>
diff --git a/remote/org.eclipse.remote.core.tests/.settings/org.eclipse.core.resources.prefs b/remote/org.eclipse.remote.core.tests/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/remote/org.eclipse.remote.core.tests/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/remote/org.eclipse.remote.core.tests/.settings/org.eclipse.jdt.core.prefs b/remote/org.eclipse.remote.core.tests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..5b1c443114d
--- /dev/null
+++ b/remote/org.eclipse.remote.core.tests/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=ignore
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
+org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=ignore
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/xlc/org.eclipse.cdt.make.xlc.core/.settings/org.eclipse.jdt.launching.prefs b/remote/org.eclipse.remote.core.tests/.settings/org.eclipse.jdt.launching.prefs
index f8a131b56e0..f8a131b56e0 100644
--- a/xlc/org.eclipse.cdt.make.xlc.core/.settings/org.eclipse.jdt.launching.prefs
+++ b/remote/org.eclipse.remote.core.tests/.settings/org.eclipse.jdt.launching.prefs
diff --git a/remote/org.eclipse.remote.core.tests/.settings/org.eclipse.jdt.ui.prefs b/remote/org.eclipse.remote.core.tests/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/remote/org.eclipse.remote.core.tests/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/remote/org.eclipse.remote.core.tests/.settings/org.eclipse.pde.api.tools.prefs b/remote/org.eclipse.remote.core.tests/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 00000000000..ec9fbf321d0
--- /dev/null
+++ b/remote/org.eclipse.remote.core.tests/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,184 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITH_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_FIELD=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERCLASS_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_CHANGED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENTS=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETERS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Error
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Warning
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+MISSING_EE_DESCRIPTIONS=Warning
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=false
+changed_execution_env=Error
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+incompatible_api_component_version_report_major_without_breaking_change=Warning
+incompatible_api_component_version_report_minor_without_api_change=Warning
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/remote/org.eclipse.remote.core.tests/.settings/org.eclipse.pde.prefs b/remote/org.eclipse.remote.core.tests/.settings/org.eclipse.pde.prefs
new file mode 100644
index 00000000000..51a63ec9988
--- /dev/null
+++ b/remote/org.eclipse.remote.core.tests/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,35 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=2
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=2
+compilers.p.missing-version-export-package=2
+compilers.p.missing-version-import-package=2
+compilers.p.missing-version-require-bundle=2
+compilers.p.no-required-att=0
+compilers.p.no.automatic.module=1
+compilers.p.not-externalized-att=2
+compilers.p.service.component.without.lazyactivation=1
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/remote/org.eclipse.remote.core.tests/META-INF/MANIFEST.MF b/remote/org.eclipse.remote.core.tests/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..25f06cb40ae
--- /dev/null
+++ b/remote/org.eclipse.remote.core.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,15 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.remote.core.tests;singleton:=true
+Bundle-Version: 1.0.200.qualifier
+Bundle-Vendor: %pluginProvider
+Require-Bundle: org.eclipse.core.runtime;bundle-version="3.8.0",
+ org.junit,
+ com.jcraft.jsch;bundle-version="0.1.41",
+ org.eclipse.core.filesystem;bundle-version="1.2.0",
+ org.eclipse.remote.core;bundle-version="1.0.0",
+ org.eclipse.remote.ui;bundle-version="1.0.0"
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Bundle-Activator: org.eclipse.remote.core.tests.internal.Activator
+Bundle-ActivationPolicy: lazy
diff --git a/remote/org.eclipse.remote.core.tests/about.html b/remote/org.eclipse.remote.core.tests/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/remote/org.eclipse.remote.core.tests/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/remote/org.eclipse.remote.core.tests/build.properties b/remote/org.eclipse.remote.core.tests/build.properties
new file mode 100644
index 00000000000..67af4196ea0
--- /dev/null
+++ b/remote/org.eclipse.remote.core.tests/build.properties
@@ -0,0 +1,6 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ about.html,\
+ .
+src.includes = about.html
diff --git a/remote/org.eclipse.remote.core.tests/plugin.properties b/remote/org.eclipse.remote.core.tests/plugin.properties
new file mode 100644
index 00000000000..0c334d914b6
--- /dev/null
+++ b/remote/org.eclipse.remote.core.tests/plugin.properties
@@ -0,0 +1,16 @@
+###############################################################################
+# Copyright (c) 2009 IBM Corporation and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# IBM Corporation - initial API and implementation
+###############################################################################
+
+pluginName=Remote Core Tests
+pluginProvider=Eclipse PTP
diff --git a/remote/org.eclipse.remote.core.tests/src/org/eclipse/remote/core/tests/internal/Activator.java b/remote/org.eclipse.remote.core.tests/src/org/eclipse/remote/core/tests/internal/Activator.java
new file mode 100644
index 00000000000..a54a6c73c9e
--- /dev/null
+++ b/remote/org.eclipse.remote.core.tests/src/org/eclipse/remote/core/tests/internal/Activator.java
@@ -0,0 +1,39 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.core.tests.internal;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+
+public class Activator implements BundleActivator {
+
+ private static BundleContext bundleContext;
+
+ @Override
+ public void start(BundleContext context) throws Exception {
+ bundleContext = context;
+ }
+
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ bundleContext = null;
+ }
+
+ public static <T> T getService(Class<T> service) {
+ ServiceReference<T> ref = bundleContext.getServiceReference(service);
+ return ref != null ? bundleContext.getService(ref) : null;
+ }
+
+}
diff --git a/remote/org.eclipse.remote.core.tests/src/org/eclipse/remote/core/tests/internal/ServiceTests.java b/remote/org.eclipse.remote.core.tests/src/org/eclipse/remote/core/tests/internal/ServiceTests.java
new file mode 100644
index 00000000000..e39e4ecec55
--- /dev/null
+++ b/remote/org.eclipse.remote.core.tests/src/org/eclipse/remote/core/tests/internal/ServiceTests.java
@@ -0,0 +1,83 @@
+package org.eclipse.remote.core.tests.internal;
+
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteConnectionHostService;
+import org.eclipse.remote.core.IRemoteConnectionType;
+import org.eclipse.remote.core.IRemoteConnectionWorkingCopy;
+import org.eclipse.remote.core.IRemoteServicesManager;
+import org.eclipse.remote.core.exception.RemoteConnectionException;
+
+import junit.framework.TestCase;
+
+public class ServiceTests extends TestCase {
+ private static final String USERNAME = "test"; //$NON-NLS-1$
+ private static final String PASSWORD = ""; //$NON-NLS-1$
+ private static final String HOST = "localhost"; //$NON-NLS-1$
+
+ private IRemoteConnectionType fConnectionType;
+ private IRemoteConnection fRemoteConnection;
+
+ public void testHostService() {
+ IRemoteConnectionWorkingCopy wc = null;
+ try {
+ wc = fConnectionType.newConnection("test_connection");//$NON-NLS-1$
+ } catch (RemoteConnectionException e) {
+ fail(e.getLocalizedMessage());
+ }
+
+ IRemoteConnectionHostService hostService = wc.getService(IRemoteConnectionHostService.class);
+ assertNotNull(hostService);
+
+ String host = System.getenv("TEST_HOST");
+ if (host == null) {
+ host = HOST;
+ }
+ hostService.setHostname(host);
+
+ String username = System.getenv("TEST_USERNAME");
+ if (username == null) {
+ username = USERNAME;
+ }
+ hostService.setUsername(username);
+
+ String password = System.getenv("TEST_PASSWORD");
+ if (password == null) {
+ password = PASSWORD;
+ }
+ hostService.setPassword(password);
+
+ try {
+ fRemoteConnection = wc.save();
+ } catch (RemoteConnectionException e) {
+ fail(e.getLocalizedMessage());
+ }
+ assertNotNull(fRemoteConnection);
+
+ try {
+ fRemoteConnection.open(new NullProgressMonitor());
+ } catch (RemoteConnectionException e) {
+ fail(e.getLocalizedMessage());
+ }
+ assertTrue(fRemoteConnection.isOpen());
+
+ hostService = fRemoteConnection.getService(IRemoteConnectionHostService.class);
+ assertNotNull(hostService);
+
+ assertEquals(hostService.getHostname(), host);
+ assertEquals(hostService.getUsername(), username);
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+ IRemoteServicesManager manager = Activator.getService(IRemoteServicesManager.class);
+ fConnectionType = manager.getConnectionType("org.eclipse.remote.JSch"); //$NON-NLS-1$
+ assertNotNull(fConnectionType);
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ fConnectionType.removeConnection(fRemoteConnection);
+ }
+
+}
diff --git a/remote/org.eclipse.remote.core/.classpath b/remote/org.eclipse.remote.core/.classpath
new file mode 100644
index 00000000000..e801ebfb468
--- /dev/null
+++ b/remote/org.eclipse.remote.core/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/remote/org.eclipse.remote.core/.options b/remote/org.eclipse.remote.core/.options
new file mode 100644
index 00000000000..2ebe6916eba
--- /dev/null
+++ b/remote/org.eclipse.remote.core/.options
@@ -0,0 +1,2 @@
+org.eclipse.remote.core/debug=false
+org.eclipse.remote.core/debug/commands=false
diff --git a/remote/org.eclipse.remote.core/.project b/remote/org.eclipse.remote.core/.project
new file mode 100644
index 00000000000..d733886f190
--- /dev/null
+++ b/remote/org.eclipse.remote.core/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.remote.core</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+ </natures>
+</projectDescription>
diff --git a/remote/org.eclipse.remote.core/.settings/org.eclipse.core.resources.prefs b/remote/org.eclipse.remote.core/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/remote/org.eclipse.remote.core/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/remote/org.eclipse.remote.core/.settings/org.eclipse.jdt.core.prefs b/remote/org.eclipse.remote.core/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..e3a8104f9ca
--- /dev/null
+++ b/remote/org.eclipse.remote.core/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.core/.settings/org.eclipse.jdt.launching.prefs b/remote/org.eclipse.remote.core/.settings/org.eclipse.jdt.launching.prefs
index f8a131b56e0..f8a131b56e0 100644
--- a/xlc/org.eclipse.cdt.managedbuilder.xlc.core/.settings/org.eclipse.jdt.launching.prefs
+++ b/remote/org.eclipse.remote.core/.settings/org.eclipse.jdt.launching.prefs
diff --git a/remote/org.eclipse.remote.core/.settings/org.eclipse.jdt.ui.prefs b/remote/org.eclipse.remote.core/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/remote/org.eclipse.remote.core/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/remote/org.eclipse.remote.core/.settings/org.eclipse.pde.api.tools.prefs b/remote/org.eclipse.remote.core/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 00000000000..ec9fbf321d0
--- /dev/null
+++ b/remote/org.eclipse.remote.core/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,184 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITH_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_FIELD=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERCLASS_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_CHANGED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENTS=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETERS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Error
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Warning
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+MISSING_EE_DESCRIPTIONS=Warning
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=false
+changed_execution_env=Error
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+incompatible_api_component_version_report_major_without_breaking_change=Warning
+incompatible_api_component_version_report_minor_without_api_change=Warning
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/remote/org.eclipse.remote.core/.settings/org.eclipse.pde.prefs b/remote/org.eclipse.remote.core/.settings/org.eclipse.pde.prefs
new file mode 100644
index 00000000000..d2dc703ba9e
--- /dev/null
+++ b/remote/org.eclipse.remote.core/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,35 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=2
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=2
+compilers.p.missing-version-export-package=2
+compilers.p.missing-version-import-package=2
+compilers.p.missing-version-require-bundle=2
+compilers.p.no-required-att=0
+compilers.p.no.automatic.module=1
+compilers.p.not-externalized-att=1
+compilers.p.service.component.without.lazyactivation=1
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/remote/org.eclipse.remote.core/META-INF/MANIFEST.MF b/remote/org.eclipse.remote.core/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..61ef546a389
--- /dev/null
+++ b/remote/org.eclipse.remote.core/META-INF/MANIFEST.MF
@@ -0,0 +1,29 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.remote.core;singleton:=true
+Bundle-Version: 4.1.100.qualifier
+Bundle-Activator: org.eclipse.remote.internal.core.RemoteCorePlugin
+Bundle-Vendor: %pluginProvider
+Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.remote.core,
+ org.eclipse.remote.core.exception,
+ org.eclipse.remote.core.launch,
+ org.eclipse.remote.internal.core;x-friends:="org.eclipse.remote.ui,org.eclipse.remote.jsch.core",
+ org.eclipse.remote.internal.core.preferences;x-friends:="org.eclipse.remote.ui"
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Import-Package: org.eclipse.cdt.utils.pty,
+ org.eclipse.cdt.utils.spawner,
+ org.eclipse.core.expressions,
+ org.eclipse.core.filesystem,
+ org.eclipse.core.resources,
+ org.eclipse.core.runtime,
+ org.eclipse.core.runtime.jobs,
+ org.eclipse.core.runtime.preferences,
+ org.eclipse.debug.core,
+ org.eclipse.equinox.security.storage,
+ org.eclipse.osgi.service.debug,
+ org.eclipse.osgi.util,
+ org.osgi.framework,
+ org.osgi.service.prefs
diff --git a/remote/org.eclipse.remote.core/about.html b/remote/org.eclipse.remote.core/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/remote/org.eclipse.remote.core/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/remote/org.eclipse.remote.core/about.ini b/remote/org.eclipse.remote.core/about.ini
new file mode 100644
index 00000000000..5bd1defab8b
--- /dev/null
+++ b/remote/org.eclipse.remote.core/about.ini
@@ -0,0 +1,27 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%blurb
+
+# Property "windowImage" contains path to window icon (16x16)
+# needed for primary features only
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=ptp_logo_icon32.png
+
+# Property "aboutImage" contains path to product image (500x330 or 115x164)
+# needed for primary features only
+
+# Property "appName" contains name of the application (not translated)
+# needed for primary features only
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+# optional
+
+# Property "welcomePerspective" contains the id of the perspective in which the
+# welcome page is to be opened.
+# optional
diff --git a/remote/org.eclipse.remote.core/about.mappings b/remote/org.eclipse.remote.core/about.mappings
new file mode 100644
index 00000000000..bddaab43109
--- /dev/null
+++ b/remote/org.eclipse.remote.core/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=@build@ \ No newline at end of file
diff --git a/remote/org.eclipse.remote.core/about.properties b/remote/org.eclipse.remote.core/about.properties
new file mode 100644
index 00000000000..e3428f2ba08
--- /dev/null
+++ b/remote/org.eclipse.remote.core/about.properties
@@ -0,0 +1,25 @@
+###############################################################################
+# Copyright (c) 2005, 2007 IBM Corporation and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# IBM Corporation - initial API and implementation
+###############################################################################
+
+# NLS_MESSAGEFORMAT_NONE
+# NLS_ENCODING=UTF-8
+
+blurb=Remote Services\n\
+\n\
+Version: {featureVersion}\n\
+Build id: {0}\n\
+\n\
+Copyright (c) 2008 IBM Corporation, and others.\n\
+Visit http://www.eclipse.org/ptp\n
+
diff --git a/remote/org.eclipse.remote.core/build.properties b/remote/org.eclipse.remote.core/build.properties
new file mode 100644
index 00000000000..8b2d6bd061d
--- /dev/null
+++ b/remote/org.eclipse.remote.core/build.properties
@@ -0,0 +1,14 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ about.html,\
+ plugin.properties,\
+ about.ini,\
+ about.mappings,\
+ about.properties,\
+ ptp_logo_icon32.png,\
+ schema/,\
+ .options
+src.includes = about.html
diff --git a/remote/org.eclipse.remote.core/plugin.properties b/remote/org.eclipse.remote.core/plugin.properties
new file mode 100644
index 00000000000..2e02797f08b
--- /dev/null
+++ b/remote/org.eclipse.remote.core/plugin.properties
@@ -0,0 +1,14 @@
+###############################################################################
+# Copyright (c) 2013 IBM Corporation.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+###############################################################################
+
+pluginName=Remote Services Core
+pluginProvider=Eclipse PTP
diff --git a/remote/org.eclipse.remote.core/plugin.xml b/remote/org.eclipse.remote.core/plugin.xml
new file mode 100644
index 00000000000..bdb2cd3159f
--- /dev/null
+++ b/remote/org.eclipse.remote.core/plugin.xml
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+ <extension-point id="remoteServices" name="Remote Services" schema="schema/remoteServices.exsd"/>
+ <extension-point id="remoteResources" name="Remote Resources" schema="schema/remoteResources.exsd"/>
+ <extension-point id="processFactory" name="Process Factory" schema="schema/processFactory.exsd"/>
+ <extension-point id="authenticator" name="User Authenticator" schema="schema/authenticator.exsd"/>
+ <extension
+ point="org.eclipse.remote.core.remoteServices">
+ <connectionType
+ canAdd="false"
+ canEdit="false"
+ canRemove="false"
+ id="org.eclipse.remote.LocalServices"
+ name="Local"
+ scheme="file">
+ </connectionType>
+ <connectionTypeService
+ factory="org.eclipse.remote.internal.core.services.local.LocalConnectionProviderService$Factory"
+ connectionTypeId="org.eclipse.remote.LocalServices"
+ service="org.eclipse.remote.core.IRemoteConnectionProviderService">
+ </connectionTypeService>
+ <connectionService
+ connectionTypeId="org.eclipse.remote.LocalServices"
+ factory="org.eclipse.remote.internal.core.services.local.LocalConnectionPropertyService$Factory"
+ service="org.eclipse.remote.core.IRemoteConnectionPropertyService">
+ </connectionService>
+ <connectionService
+ connectionTypeId="org.eclipse.remote.LocalServices"
+ factory="org.eclipse.remote.internal.core.services.local.LocalFileService$Factory"
+ service="org.eclipse.remote.core.IRemoteFileService">
+ </connectionService>
+ <connectionService
+ connectionTypeId="org.eclipse.remote.LocalServices"
+ factory="org.eclipse.remote.internal.core.services.local.LocalProcessService$Factory"
+ service="org.eclipse.remote.core.IRemoteProcessService">
+ </connectionService>
+ <connectionService
+ connectionTypeId="org.eclipse.remote.LocalServices"
+ factory="org.eclipse.remote.internal.core.services.local.LocalCommandShellService$Factory"
+ service="org.eclipse.remote.core.IRemoteCommandShellService">
+ </connectionService>
+ <connectionService
+ connectionTypeId="org.eclipse.remote.LocalServices"
+ factory="org.eclipse.remote.internal.core.services.local.LocalConnectionHostService$Factory"
+ service="org.eclipse.remote.core.IRemoteConnectionHostService">
+ </connectionService>
+ <processService
+ connectionTypeId="org.eclipse.remote.LocalServices"
+ factory="org.eclipse.remote.internal.core.services.local.LocalProcess$Factory"
+ service="org.eclipse.remote.core.IRemoteProcessControlService">
+ </processService>
+ <processService
+ connectionTypeId="org.eclipse.remote.LocalServices"
+ factory="org.eclipse.remote.internal.core.services.local.LocalProcess$Factory"
+ service="org.eclipse.remote.internal.core.services.local.LocalProcess">
+ </processService>
+ <processService
+ connectionTypeId="org.eclipse.remote.LocalServices"
+ factory="org.eclipse.remote.internal.core.services.local.LocalProcess$Factory"
+ service="org.eclipse.remote.core.IRemoteProcessTerminalService">
+ </processService>
+ </extension>
+ <extension
+ point="org.eclipse.core.runtime.adapters">
+ <factory
+ adaptableType="org.eclipse.core.resources.IResource"
+ class="org.eclipse.remote.internal.core.RemoteResourceAdapterFactory">
+ <adapter
+ type="org.eclipse.remote.core.IRemoteResource">
+ </adapter>
+ </factory>
+ </extension>
+ <extension
+ point="org.eclipse.core.runtime.preferences">
+ <initializer
+ class="org.eclipse.remote.internal.core.preferences.PreferenceInitializer">
+ </initializer>
+ </extension>
+ <extension
+ point="org.eclipse.core.expressions.propertyTesters">
+ <propertyTester
+ class="org.eclipse.remote.core.RemoteConnectionPropertyTester"
+ id="org.eclipse.remote.core.remoteConnectionTester"
+ namespace="org.eclipse.remote.core"
+ properties="isConnectionType"
+ type="org.eclipse.remote.core.IRemoteConnection">
+ </propertyTester>
+ </extension>
+
+</plugin>
diff --git a/remote/org.eclipse.remote.core/ptp_logo_icon32.png b/remote/org.eclipse.remote.core/ptp_logo_icon32.png
new file mode 100644
index 00000000000..e8ec57270f3
--- /dev/null
+++ b/remote/org.eclipse.remote.core/ptp_logo_icon32.png
Binary files differ
diff --git a/remote/org.eclipse.remote.core/schema/authenticator.exsd b/remote/org.eclipse.remote.core/schema/authenticator.exsd
new file mode 100644
index 00000000000..865b6bbbba7
--- /dev/null
+++ b/remote/org.eclipse.remote.core/schema/authenticator.exsd
@@ -0,0 +1,99 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.remote.core" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+ <appInfo>
+ <meta.schema plugin="org.eclipse.remote.core" id="authenticator" name="Authenticator"/>
+ </appInfo>
+ <documentation>
+ [Enter description of this extension point.]
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <annotation>
+ <appInfo>
+ <meta.element />
+ </appInfo>
+ </annotation>
+ <complexType>
+ <sequence>
+ <element ref="authenticator"/>
+ </sequence>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="authenticator">
+ <complexType>
+ <attribute name="id" type="string" use="required">
+ <annotation>
+ <documentation>
+ The ID of the remote services that this authenticator should be used for.
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="class" type="string" use="required">
+ <annotation>
+ <documentation>
+ An implementation of the IUserAuthenticator interface.
+ </documentation>
+ <appInfo>
+ <meta.attribute kind="java" basedOn=":org.eclipse.remote.core.IUserAuthenticator"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ <attribute name="priority" type="string">
+ <annotation>
+ <documentation>
+ The numerical value of the priority of the authenticator. The highest priority authenticator will be preferred over lower priority authenticators.
+ </documentation>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="since"/>
+ </appInfo>
+ <documentation>
+ [Enter the first release in which this extension point appears.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="examples"/>
+ </appInfo>
+ <documentation>
+ [Enter extension point usage example here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="apiInfo"/>
+ </appInfo>
+ <documentation>
+ [Enter API information here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="implementation"/>
+ </appInfo>
+ <documentation>
+ [Enter information about supplied implementation of this extension point.]
+ </documentation>
+ </annotation>
+
+
+</schema>
diff --git a/remote/org.eclipse.remote.core/schema/processFactory.exsd b/remote/org.eclipse.remote.core/schema/processFactory.exsd
new file mode 100644
index 00000000000..dffed2a056c
--- /dev/null
+++ b/remote/org.eclipse.remote.core/schema/processFactory.exsd
@@ -0,0 +1,98 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.remote.core" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+ <appInfo>
+ <meta.schema plugin="org.eclipse.remote.core" id="processFactory" name="Process Factory"/>
+ </appInfo>
+ <documentation>
+ This extension point allows an alternate implementation of the java.lang.Runtime#exec() methods to be supplied. This is useful because the Java runtime provides limited support for controlling external processes.
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <annotation>
+ <appInfo>
+ <meta.element />
+ </appInfo>
+ </annotation>
+ <complexType>
+ <sequence>
+ <element ref="processFactory"/>
+ </sequence>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute translatable="true"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="processFactory">
+ <complexType>
+ <attribute name="class" type="string" use="required">
+ <annotation>
+ <documentation>
+ the fully qualified name of a class that implements &lt;code&gt;org.eclipse.remote.core.IProcessFactory&lt;/code&gt;
+ </documentation>
+ <appInfo>
+ <meta.attribute kind="java" basedOn=":org.eclipse.remote.core.IProcessFactory"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+
+ <annotation>
+ <appInfo>
+ <meta.section type="examples"/>
+ </appInfo>
+ <documentation>
+ &lt;pre&gt;
+ &lt;extension point=&quot;org.eclipse.remote.core.processFactory&quot;&gt;
+ &lt;processFactory class=&quot;MyProcessFactoryClass&quot;/&gt;
+ &lt;/extension&gt;
+&lt;/pre&gt;
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="apiinfo"/>
+ </appInfo>
+ <documentation>
+ The value of the class attribute must implement the interface &lt;code&gt;org.eclipse.remote.core.IProcessFactory&lt;/code&gt;
+ </documentation>
+ </annotation>
+
+
+ <annotation>
+ <appInfo>
+ <meta.section type="copyright"/>
+ </appInfo>
+ <documentation>
+ Copyright (c) 2013 IBM Corporation and others. This program and the accompanying materials are made available under the terms of the Eclipse Public License 2.0 which accompanies this distribution, and is available at https://www.eclipse.org/legal/epl-2.0/
+ </documentation>
+ </annotation>
+
+</schema>
diff --git a/remote/org.eclipse.remote.core/schema/remoteResources.exsd b/remote/org.eclipse.remote.core/schema/remoteResources.exsd
new file mode 100644
index 00000000000..d9db0f8cbdf
--- /dev/null
+++ b/remote/org.eclipse.remote.core/schema/remoteResources.exsd
@@ -0,0 +1,113 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.remote.core" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+ <appInfo>
+ <meta.schema plugin="org.eclipse.remote.core" id="remoteResources" name="Remote Resources"/>
+ </appInfo>
+ <documentation>
+ This extension point allows remote implementations to provide additional operations on a resource. The extension associates a project nature with the resource extension. Resources contained within a particular project can be adapted to obtain the additional operations.
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <annotation>
+ <appInfo>
+ <meta.element />
+ </appInfo>
+ </annotation>
+ <complexType>
+ <sequence>
+ <element ref="remoteResource"/>
+ </sequence>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute translatable="true"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="remoteResource">
+ <complexType>
+ <attribute name="class" type="string" use="required">
+ <annotation>
+ <documentation>
+ the fully qualified name of a class that implements &lt;code&gt;org.eclipse.remote.core.IRemoteResource&lt;/code&gt;
+ </documentation>
+ <appInfo>
+ <meta.attribute kind="java" basedOn=":org.eclipse.remote.core.IRemoteResource"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ <attribute name="nature" type="string" use="required">
+ <annotation>
+ <documentation>
+ a project nature. Resources contained within a project with this nature can be adapted to obtain the &lt;code&gt;org.eclipse.remote.core.IRemoteResource&lt;/code&gt; interface.
+ </documentation>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+
+ <annotation>
+ <appInfo>
+ <meta.section type="examples"/>
+ </appInfo>
+ <documentation>
+ &lt;pre&gt;
+ &lt;extension point=&quot;org.eclipse.remote.core.remoteResource&quot;&gt;
+ &lt;remoteResource class=&quot;MyRemoteResourceClass&quot; nature=&quot;MyProjectNature&quot;/&gt;
+ &lt;/extension&gt;
+&lt;/pre&gt;
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="apiinfo"/>
+ </appInfo>
+ <documentation>
+ The value of the class attribute must implement the interface &lt;code&gt;org.eclipse.remote.core.IRemoteResource&lt;/code&gt;
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="implementation"/>
+ </appInfo>
+ <documentation>
+ The remote package itself does not have any predefined remote resources.
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="copyright"/>
+ </appInfo>
+ <documentation>
+ Copyright (c) 2013 IBM Corporation and others. This program and the accompanying materials are made available under the terms of the Eclipse Public License 2.0 which accompanies this distribution, and is available at https://www.eclipse.org/legal/epl-2.0/
+ </documentation>
+ </annotation>
+
+</schema>
diff --git a/remote/org.eclipse.remote.core/schema/remoteServices.exsd b/remote/org.eclipse.remote.core/schema/remoteServices.exsd
new file mode 100644
index 00000000000..0be736abc86
--- /dev/null
+++ b/remote/org.eclipse.remote.core/schema/remoteServices.exsd
@@ -0,0 +1,278 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.remote.core" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+ <appInfo>
+ <meta.schema plugin="org.eclipse.remote.core" id="remoteServices" name="Remote Services"/>
+ </appInfo>
+ <documentation>
+ This extension point is used to add a remote services provider.
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <annotation>
+ <appInfo>
+ <meta.element />
+ </appInfo>
+ </annotation>
+ <complexType>
+ <sequence minOccurs="1" maxOccurs="unbounded">
+ <element ref="connectionType" minOccurs="0" maxOccurs="unbounded"/>
+ <element ref="connectionTypeService" minOccurs="0" maxOccurs="unbounded"/>
+ <element ref="connectionService" minOccurs="0" maxOccurs="unbounded"/>
+ <element ref="processService" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute translatable="true"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="connectionType">
+ <annotation>
+ <appInfo>
+ <meta.element labelAttribute="name"/>
+ </appInfo>
+ <documentation>
+ A connection type.
+ </documentation>
+ </annotation>
+ <complexType>
+ <attribute name="id" type="string" use="required">
+ <annotation>
+ <documentation>
+ A unique identifier for this remote service
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string" use="required">
+ <annotation>
+ <documentation>
+ A human readable name for the remote service
+ </documentation>
+ <appInfo>
+ <meta.attribute translatable="true"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ <attribute name="scheme" type="string">
+ <annotation>
+ <documentation>
+ An EFS scheme name for this service
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="canAdd" type="boolean">
+ <annotation>
+ <documentation>
+ Can you add connections using the API. Default is true.
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="canEdit" type="boolean">
+ <annotation>
+ <documentation>
+ Can a connection be changed using the API. Default is true.
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="canRemove" type="boolean">
+ <annotation>
+ <documentation>
+ Can a connection be removed using the API.
+ </documentation>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="connectionTypeService">
+ <annotation>
+ <documentation>
+ This is a service that implements the given service interface for a given connection type.
+ </documentation>
+ </annotation>
+ <complexType>
+ <attribute name="connectionTypeId" type="string" use="required">
+ <annotation>
+ <documentation>
+ The remote services that this service applies to.
+ </documentation>
+ <appInfo>
+ <meta.attribute kind="identifier" basedOn="org.eclipse.remote.core.remoteServices/connectionType/@id"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ <attribute name="service" type="string" use="required">
+ <annotation>
+ <documentation>
+ The interface class that this service implements. The service is found by calling the getService() method on the IRemoteServices object with this interface class as the parameter.
+ </documentation>
+ <appInfo>
+ <meta.attribute kind="java"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ <attribute name="factory" type="string" use="required">
+ <annotation>
+ <documentation>
+ The factory class used to instantiate the service.
+ </documentation>
+ <appInfo>
+ <meta.attribute kind="java" basedOn=":org.eclipse.remote.core.IRemoteServices$Service$Factory"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="connectionService">
+ <annotation>
+ <documentation>
+ This is a service that implements the given service interface for connections of a given connection type.
+ </documentation>
+ </annotation>
+ <complexType>
+ <attribute name="connectionTypeId" type="string" use="required">
+ <annotation>
+ <documentation>
+ The connection type for the connections that this service applies to.
+ </documentation>
+ <appInfo>
+ <meta.attribute kind="identifier" basedOn="org.eclipse.remote.core.remoteServices/connectionType/@id"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ <attribute name="service" type="string" use="required">
+ <annotation>
+ <documentation>
+ The interface class that this service implements. The service is found by calling the getService() method on the IRemoteConnection object with this interface class as the parameter.
+ </documentation>
+ <appInfo>
+ <meta.attribute kind="java"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ <attribute name="factory" type="string" use="required">
+ <annotation>
+ <documentation>
+ The factory class used to instantiate the service.
+ </documentation>
+ <appInfo>
+ <meta.attribute kind="java" basedOn=":org.eclipse.remote.core.IRemoteConnection$Service$Factory"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="processService">
+ <annotation>
+ <documentation>
+ This is a service that implements the given service interface for processes of a given connection type.
+ </documentation>
+ </annotation>
+ <complexType>
+ <attribute name="connectionTypeId" type="string" use="required">
+ <annotation>
+ <documentation>
+ The connection type for the connections that this service applies to.
+ </documentation>
+ <appInfo>
+ <meta.attribute kind="identifier" basedOn="org.eclipse.remote.core.remoteServices/connectionType/@id"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ <attribute name="service" type="string" use="required">
+ <annotation>
+ <documentation>
+ The interface class that this service implements. The service is found by calling the getService() method on the IRemoteProcess object with this interface class as the parameter.
+ </documentation>
+ <appInfo>
+ <meta.attribute kind="java"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ <attribute name="factory" type="string" use="required">
+ <annotation>
+ <documentation>
+ The factory class used to instantiate the service.
+ </documentation>
+ <appInfo>
+ <meta.attribute kind="java" basedOn=":org.eclipse.remote.core.IRemoteProcess$Service$Factory"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+
+ <annotation>
+ <appInfo>
+ <meta.section type="examples"/>
+ </appInfo>
+ <documentation>
+ &lt;pre&gt;
+ &lt;extension
+ point=&quot;org.eclipse.remote.core.remoteServices&quot;&gt;
+ &lt;remoteServices
+ class=&quot;org.eclipse.remote.internal.core.services.local.LocalServicesFactory&quot;
+ id=&quot;org.eclipse.ptp.remote.LocalServices&quot;
+ name=&quot;Local&quot;
+ scheme=&quot;file&quot;&gt;
+ &lt;/remoteServices&gt;
+ &lt;/extension&gt;
+&lt;/pre&gt;
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="apiInfo"/>
+ </appInfo>
+ <documentation>
+ The value of the class attribute must implement &lt;samp&gt;org.eclipse.remote.core.IRemoteServicesFactory&lt;/samp&gt;.
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="implementation"/>
+ </appInfo>
+ <documentation>
+ The remote package provides a remote services implementation for local services.
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="copyright"/>
+ </appInfo>
+ <documentation>
+ Copyright (c) 2013 IBM Corporation and others. This program and the accompanying materials are made available under the terms of the Eclipse Public License 2.0 which accompanies this distribution, and is available at https://www.eclipse.org/legal/epl-2.0/
+ </documentation>
+ </annotation>
+
+</schema>
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/AbstractRemoteProcessBuilder.java b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/AbstractRemoteProcessBuilder.java
new file mode 100644
index 00000000000..1e3685787b9
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/AbstractRemoteProcessBuilder.java
@@ -0,0 +1,135 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2010 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.core;
+
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.filesystem.IFileStore;
+import org.eclipse.remote.internal.core.RemoteProcess;
+
+/**
+ * Abstract base class for remote process builders. Implementors can use this class to provide a default implementation of a remote
+ * process builder.
+ *
+ * @since 5.0
+ */
+public abstract class AbstractRemoteProcessBuilder implements IRemoteProcessBuilder {
+ private List<String> fCommandArgs;
+ private IFileStore fRemoteDir;
+ private boolean fRedirectErrorStream;
+
+ private final IRemoteConnection fConnection;
+
+ /**
+ * @since 2.0
+ */
+ public AbstractRemoteProcessBuilder(IRemoteConnection connection, List<String> command) {
+ fCommandArgs = command;
+ fConnection = connection;
+ }
+
+ /**
+ * @since 2.0
+ */
+ public AbstractRemoteProcessBuilder(IRemoteConnection connection, String... command) {
+ this(connection, Arrays.asList(command));
+ }
+
+ @Override
+ public List<String> command() {
+ return fCommandArgs;
+ }
+
+ @Override
+ public IRemoteProcessBuilder command(List<String> command) {
+ fCommandArgs = command;
+ return this;
+ }
+
+ @Override
+ public IRemoteProcessBuilder command(String... command) {
+ fCommandArgs = Arrays.asList(command);
+ return this;
+ }
+
+ @Override
+ public IFileStore directory() {
+ return fRemoteDir;
+ }
+
+ @Override
+ public IRemoteProcessBuilder directory(IFileStore directory) {
+ fRemoteDir = directory;
+ return this;
+ }
+
+ @Override
+ public abstract Map<String, String> environment();
+
+ /**
+ * @since 5.0
+ */
+ @Override
+ public abstract int getSupportedFlags();
+
+ @Override
+ public boolean redirectErrorStream() {
+ return fRedirectErrorStream;
+ }
+
+ @Override
+ public IRemoteProcessBuilder redirectErrorStream(boolean redirectErrorStream) {
+ this.fRedirectErrorStream = redirectErrorStream;
+ return this;
+ }
+
+ @Override
+ public IRemoteProcess start() throws IOException {
+ return start(NONE);
+ }
+
+ /**
+ * @since 5.0
+ */
+ @Override
+ public abstract IRemoteProcess start(int flags) throws IOException;
+
+ @Override
+ public String toString() {
+ StringBuilder res = new StringBuilder();
+ for (String arg : command()) {
+ res.append(arg);
+ res.append(" "); //$NON-NLS-1$
+ }
+ return res.toString();
+ }
+
+ /**
+ * @since 2.0
+ */
+ @Override
+ public IRemoteConnection getRemoteConnection() {
+ return fConnection;
+ }
+
+ /**
+ * @since 4.0
+ */
+ protected IRemoteProcess newRemoteProcess() {
+ return new RemoteProcess(getRemoteConnection(), this);
+ }
+}
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IProcessFactory.java b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IProcessFactory.java
new file mode 100644
index 00000000000..ee8783faf9a
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IProcessFactory.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2013 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.core;
+
+import java.io.File;
+import java.io.IOException;
+
+/**
+ * Abstraction of the java.lang.Runtime exec() methods to allow different implementations to be supplied.
+ */
+public interface IProcessFactory {
+
+ public Process exec(String cmd) throws IOException;
+
+ public Process exec(String[] cmdarray) throws IOException;
+
+ public Process exec(String[] cmdarray, String[] envp) throws IOException;
+
+ public Process exec(String cmd, String[] envp) throws IOException;
+
+ public Process exec(String cmd, String[] envp, File dir) throws IOException;
+
+ public Process exec(String cmdarray[], String[] envp, File dir) throws IOException;
+}
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteCommandShellService.java b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteCommandShellService.java
new file mode 100644
index 00000000000..cb072409b37
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteCommandShellService.java
@@ -0,0 +1,47 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.core;
+
+import java.io.IOException;
+
+/**
+ * A service that provides a command shell on a remote. This is mainly used by
+ * Terminal views.
+ *
+ * @since 2.0
+ */
+public interface IRemoteCommandShellService extends IRemoteConnection.Service {
+
+ /**
+ * Get a remote process that runs a command shell on the remote system. The shell will be the user's default shell on the remote
+ * system. The flags may be used to modify behavior of the remote process. These flags may only be supported by specific types
+ * of remote service providers. Clients can use {@link IRemoteProcessBuilder#getSupportedFlags()} to find out the flags
+ * supported by the service provider.
+ *
+ * <pre>
+ * Current flags are:
+ * {@link IRemoteProcessBuilder#NONE} - disable any flags
+ * {@link IRemoteProcessBuilder#ALLOCATE_PTY} - allocate a pseudo-terminal for the process (RFC-4254 Sec. 6.2)
+ * {@link IRemoteProcessBuilder#FORWARD_X11} - enable X11 forwarding (RFC-4254 Sec. 6.3)
+ * </pre>
+ *
+ * @param flags
+ * bitwise-or of flags
+ * @return remote process object
+ * @throws IOException
+ * @since 7.0
+ */
+ public IRemoteProcess getCommandShell(int flags) throws IOException;
+
+}
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteConnection.java b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteConnection.java
new file mode 100644
index 00000000000..2bac5f20bb9
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteConnection.java
@@ -0,0 +1,174 @@
+/*******************************************************************************
+ * Copyright (c) 2007 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.core;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.remote.core.exception.RemoteConnectionException;
+
+/**
+ * Represents a connection to a remote system. Use the getService method to get at connection
+ * specific services. Connections have state, open or closed. Some connection types are always
+ * open in which case the close does nothing. Connections have properties which are values that
+ * describe the connection and are discovered. Connections also have attributes which are
+ * client specified values that control the connection.
+ *
+ * @noimplement This interface is not intended to be implemented by clients.
+ */
+public interface IRemoteConnection {
+ /**
+ * The interface that is extend by services provided for this remote connection.
+ *
+ * @since 2.0
+ */
+ interface Service {
+ IRemoteConnection getRemoteConnection();
+
+ interface Factory {
+ <T extends Service> T getService(IRemoteConnection remoteConnection, Class<T> service);
+ }
+ }
+
+ // Common properties
+ final static String OS_NAME_PROPERTY = "os.name"; //$NON-NLS-1$
+ final static String OS_VERSION_PROPERTY = "os.version"; //$NON-NLS-1$
+ final static String OS_ARCH_PROPERTY = "os.arch"; //$NON-NLS-1$
+ final static String FILE_SEPARATOR_PROPERTY = "file.separator"; //$NON-NLS-1$
+ final static String PATH_SEPARATOR_PROPERTY = "path.separator"; //$NON-NLS-1$
+ final static String LINE_SEPARATOR_PROPERTY = "line.separator"; //$NON-NLS-1$
+ final static String USER_HOME_PROPERTY = "user.home"; //$NON-NLS-1$
+ /**
+ * @since 2.0
+ */
+ final static String LOCALE_CHARMAP_PROPERTY = "locale.charmap"; //$NON-NLS-1$
+
+ /**
+ * Get the connection type of this connection
+ *
+ * @return connection type
+ * @since 2.0
+ */
+ public IRemoteConnectionType getConnectionType();
+
+ /**
+ * Get unique name for this connection.
+ *
+ * @return connection name
+ */
+ public String getName();
+
+ /**
+ * Get the service for this remote connection that implements the given interface.
+ *
+ * @param service
+ * the interface the required service must implements
+ * @return the desired service or null if there is no such service available
+ * @throws CoreException
+ * @since 2.0
+ */
+ <T extends Service> T getService(Class<T> service);
+
+ /**
+ * Does this connection support the given service.
+ *
+ * @param service
+ * The service to be tested
+ * @return true if this connection supports the service
+ * @since 2.0
+ */
+ <T extends Service> boolean hasService(Class<T> service);
+
+ /**
+ * Open the connection. Must be called before the connection can be used.
+ *
+ * @param monitor
+ * the progress monitor to use for reporting progress to the user. It is the caller's responsibility to call done()
+ * on the given monitor. Accepts null, indicating that no progress should be reported and that the operation cannot
+ * be cancelled.
+ * @throws RemoteConnectionException
+ */
+ public void open(IProgressMonitor monitor) throws RemoteConnectionException;
+
+ /**
+ * Close the connection. Must be called to terminate the connection.
+ */
+ public void close();
+
+ /**
+ * Test if the connection is open.
+ *
+ * @return true if connection is open.
+ */
+ public boolean isOpen();
+
+ /**
+ * Gets the remote system property indicated by the specified key. The connection must be open prior to calling this method.
+ *
+ * @param key
+ * the name of the property
+ * @return the string value of the property, or null if no property has that key
+ */
+ public String getProperty(String key);
+
+ /**
+ * Get an attribute for a connection.
+ *
+ * NOTE: the attributes do not include any security related information (e.g. passwords, keys, etc.)
+ *
+ * @param key
+ * @return the attribute value, or empty string if not defined.
+ * @since 2.0
+ */
+ public String getAttribute(String key);
+
+ /**
+ * Get an attribute that is stored in secure storage, such as passwords.
+ *
+ * @param key
+ * @return the attribute value, or empty string if not defined.
+ * @since 2.0
+ */
+ public String getSecureAttribute(String key);
+
+ /**
+ * Return a working copy to allow setting and changing of attributes.
+ *
+ * @return working copy of remote
+ */
+ public IRemoteConnectionWorkingCopy getWorkingCopy();
+
+ /**
+ * Register a listener that will be notified when this connection's status changes.
+ *
+ * @param listener
+ */
+ public void addConnectionChangeListener(IRemoteConnectionChangeListener listener);
+
+ /**
+ * Remove a listener that will be notified when this connection's status changes.
+ *
+ * @param listener
+ */
+ public void removeConnectionChangeListener(IRemoteConnectionChangeListener listener);
+
+ /**
+ * Notify all listeners when this connection's status changes. See {{@link RemoteConnectionChangeEvent} for a list of event
+ * types.
+ *
+ * @param event
+ * event type indicating the nature of the event
+ */
+ public void fireConnectionChangeEvent(int type);
+
+}
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteConnectionChangeListener.java b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteConnectionChangeListener.java
new file mode 100644
index 00000000000..94e280f85b8
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteConnectionChangeListener.java
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.core;
+
+import java.util.EventListener;
+
+/**
+ * Listener used to register for notification of connection status changes.
+ * Listeners can be registered on individual connections using
+ * {@link IRemoteConnection#addConnectionChangeListener(IRemoteConnectionChangeListener)},
+ * or globally for all connections using
+ * {@link IRemoteServicesManager#addRemoteConnectionChangeListener(IRemoteConnectionChangeListener)}.
+ */
+public interface IRemoteConnectionChangeListener extends EventListener {
+
+ /**
+ * Notifies this listener that the status of a connection has changed.
+ *
+ * @param event
+ * the connection change event
+ * @since 2.0
+ */
+
+ public void connectionChanged(RemoteConnectionChangeEvent event);
+
+}
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteConnectionControlService.java b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteConnectionControlService.java
new file mode 100644
index 00000000000..f9396d67a25
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteConnectionControlService.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.core;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.remote.core.exception.RemoteConnectionException;
+
+/**
+ * A service to control and report on the state of a connection, open or closed.
+ * Connections that do not provide this service are always assumed to be opened.
+ *
+ * @since 2.0
+ */
+public interface IRemoteConnectionControlService extends IRemoteConnection.Service {
+
+ /**
+ * Open the connection. Must be called before the connection can be used.
+ *
+ * @param monitor
+ * the progress monitor to use for reporting progress to the user. It is the caller's responsibility to call done()
+ * on the given monitor. Accepts null, indicating that no progress should be reported and that the operation cannot
+ * be cancelled.
+ * @throws RemoteConnectionException
+ */
+ public void open(IProgressMonitor monitor) throws RemoteConnectionException;
+
+ /**
+ * Close the connection. Must be called to terminate the connection.
+ */
+ public void close();
+
+ /**
+ * Test if the connection is open.
+ *
+ * @return true if connection is open.
+ */
+ public boolean isOpen();
+
+}
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteConnectionHostService.java b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteConnectionHostService.java
new file mode 100644
index 00000000000..85e590e2fb3
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteConnectionHostService.java
@@ -0,0 +1,152 @@
+/*******************************************************************************
+ * Copyright (c) 2015 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.core;
+
+/**
+ * A service to obtain host specific information.
+ *
+ * @since 2.0
+ */
+public interface IRemoteConnectionHostService extends IRemoteConnection.Service {
+
+ /**
+ * Obtain the hostname associated with this connection.
+ *
+ * @return hostname
+ */
+ String getHostname();
+
+ /**
+ * Obtain the port associated with this connection
+ *
+ * @return port
+ */
+ int getPort();
+
+ /**
+ * Obtain the timeout used when establishing the connection.
+ *
+ * @return timeout
+ */
+ int getTimeout();
+
+ /**
+ * Get the pass phrase associated with this connection.
+ *
+ * @return pass phrase
+ * @since 3.0
+ */
+ String getPassphrase();
+
+ /**
+ * Get the password associated with this connection.
+ *
+ * @return password
+ * @since 3.0
+ */
+ String getPassword();
+
+ /**
+ * Get the value of the use password authentication flag. If true, the connection will try using a password first.
+ *
+ * @return use password authentication flag
+ * @since 3.0
+ */
+ boolean usePassword();
+
+ /**
+ * Obtain the flag that indicates a login shell should be started once the connection is established
+ *
+ * @return login shell flag
+ */
+ boolean useLoginShell();
+
+ /**
+ * Obtain the username associated with this connection.
+ *
+ * @return
+ */
+ String getUsername();
+
+ /**
+ * Set the hostname associated with this connection. Note, this method can only be used for an
+ * IRemoteConnectionWorkingCopy and will have no effect otherwise.
+ *
+ * @param hostname
+ * new hostname for connection
+ */
+ void setHostname(String hostname);
+
+ /**
+ * Set the pass phrase associated with this connection. Note, this method can only be used for an
+ * IRemoteConnectionWorkingCopy and will have no effect otherwise.
+ *
+ * @param passphrase
+ */
+ void setPassphrase(String passphrase);
+
+ /**
+ * Set the password associated with this connection. Note, this method can only be used for an
+ * IRemoteConnectionWorkingCopy and will have no effect otherwise.
+ *
+ * @param password
+ * new password for connection
+ */
+ void setPassword(String password);
+
+ /**
+ * Set the port used for the connection. Note, this method can only be used forh an
+ * IRemoteConnectionWorkingCopy and will have no effect otherwise.
+ *
+ * @param port
+ * new port for connection
+ */
+ void setPort(int port);
+
+ /**
+ * Set the timeout used when establishing the connection. A timeout of 0 means infinite. Note, this method can only be used
+ * for an IRemoteConnectionWorkingCopy and will have no effect otherwise.
+ *
+ * @param timeout
+ * new timeout value
+ */
+ void setTimeout(int timeout);
+
+ /**
+ * Set the flag indicating a login shell should be stated for this connection. Note, this method can only be used
+ * for an IRemoteConnectionWorkingCopy and will have no effect otherwise.
+ *
+ * @param useLogingShell
+ * true to start a login shell
+ */
+ void setUseLoginShell(boolean useLogingShell);
+
+ /**
+ * Set the connection to try password authentication first. Note, this method can only be used for an
+ * IRemoteConnectionWorkingCopy and will have no effect otherwise.
+ *
+ * @param usePassword
+ * use password authentication
+ */
+ void setUsePassword(boolean usePassword);
+
+ /**
+ * Set the username associated with this connection. Note, this method can only be used for an
+ * IRemoteConnectionWorkingCopy and will have no effect otherwise.
+ *
+ * @param username
+ * new username for connection
+ */
+ void setUsername(String username);
+}
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteConnectionPropertyService.java b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteConnectionPropertyService.java
new file mode 100644
index 00000000000..dccf1c41533
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteConnectionPropertyService.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.core;
+
+/**
+ * A connection property is some descriptive information that's discovered about the connection.
+ * This service provides property values for a connection.
+ *
+ * Examples include:
+ * <pre>
+ * os.name Operating system name
+ * os.arch Operating system architecture
+ * os.version Operating system version
+ * file.separator File separator ("/" on UNIX)
+ * path.separator Path separator (":" on UNIX)
+ * line.separator Line separator ("\n" on UNIX)
+ * user.home Home directory
+ * </pre>
+ *
+ * @since 2.0
+ */
+public interface IRemoteConnectionPropertyService extends IRemoteConnection.Service {
+
+ /**
+ * Gets the remote system property indicated by the specified key. The connection must be open prior to calling this method.
+ *
+ * @param key
+ * the name of the property
+ * @return the string value of the property, or null if no property has that key
+ */
+ public String getProperty(String key);
+
+}
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteConnectionProviderService.java b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteConnectionProviderService.java
new file mode 100644
index 00000000000..2117ee44da9
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteConnectionProviderService.java
@@ -0,0 +1,33 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.core;
+
+/**
+ * A connection type service for connection types that have automatic means of adding
+ * and removing services. For example, the Local connection type needs to be able
+ * to ensure the Local connection is created, or adapters to other target management
+ * systems may prefer to let those systems manage the connections.
+ *
+ * @since 2.0
+ */
+public interface IRemoteConnectionProviderService extends IRemoteConnectionType.Service {
+
+ /**
+ * Initialize the service. Called after all existing connections are loaded.
+ * This method typically will add the initial connections or start up a job to do it.
+ * This method is called on startup, it's important that it be fast.
+ */
+ void init();
+
+}
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteConnectionType.java b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteConnectionType.java
new file mode 100644
index 00000000000..745892537ae
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteConnectionType.java
@@ -0,0 +1,206 @@
+/*******************************************************************************
+ * Copyright (c) 2013 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.core;
+
+import java.net.URI;
+import java.util.List;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.remote.core.exception.RemoteConnectionException;
+
+/**
+ * A remote connection type manages a list of connections that implement the same services.
+ * Services may be registered on the individual connections, or at the connection type level
+ * for service that apply to all connections of this type.
+ *
+ * @noimplement This interface is not intended to be implemented by clients.
+ * @since 2.0
+ */
+public interface IRemoteConnectionType {
+ /**
+ * The interface that is extend by services provided for this remote services implementation.
+ *
+ * @since 2.0
+ */
+ interface Service {
+ IRemoteConnectionType getConnectionType();
+
+ interface Factory {
+ <T extends Service> T getService(IRemoteConnectionType connectionType, Class<T> service);
+ }
+ }
+
+ /**
+ * Get the remote services manager. This is a convenient way to get back
+ * to the root.
+ *
+ * @return remote services manager
+ */
+ IRemoteServicesManager getRemoteServicesManager();
+
+ /**
+ * Get unique ID of this service. Can be used as a lookup key.
+ *
+ * @return unique ID
+ */
+ String getId();
+
+ /**
+ * Get display name of this service.
+ *
+ * @return display name
+ */
+ String getName();
+
+ /**
+ * Get the EFS scheme provided by this service.
+ *
+ * @return display name
+ */
+ String getScheme();
+
+ /**
+ * Can you add new connections of this type using the API.
+ *
+ * @return can add
+ */
+ boolean canAdd();
+
+ /**
+ * Can you edit connections of this type, i.e. create working copies.
+ *
+ * @return can edit
+ */
+ boolean canEdit();
+
+ /**
+ * Can you remove connections of this type using the API.
+ *
+ * @return can remove
+ */
+ boolean canRemove();
+
+ /**
+ * Get the service for this remote services implementation that implements the given interface.
+ *
+ * @param service
+ * the interface the required service must implements
+ * @return the desired service or null if there is no such service available
+ * @throws CoreException
+ * @since 2.0
+ */
+ <T extends Service> T getService(Class<T> service);
+
+ /**
+ * Does this connection type support the given service.
+ *
+ * @param service
+ * the service to be tested
+ * @return true if this connection type supports this service
+ */
+ <T extends Service> boolean hasService(Class<T> service);
+
+ /**
+ * Return the list of connection type services supported by this type.
+ *
+ * @return connection type services
+ */
+ List<String> getServices();
+
+ /**
+ * Do connections created by this connection type support the given service.
+ *
+ * @param service
+ * the service to be tested
+ * @return true if connections created by this connection type support this service
+ */
+ <T extends IRemoteConnection.Service> boolean hasConnectionService(Class<T> service);
+
+ /**
+ * Return the list of connection services supported by connections of this type.
+ *
+ * @return connection services
+ */
+ List<String> getConnectionServices();
+
+ /**
+ * Do processes created by this connection type support the given service.
+ *
+ * @param service
+ * the service to be tested
+ * @return true if processes created by this connection type support this service
+ */
+ <T extends IRemoteProcess.Service> boolean hasProcessService(Class<T> service);
+
+ /**
+ * Return the list of process services supported by connections of this type.
+ *
+ * @return process services
+ */
+ List<String> getProcessServices();
+
+ /**
+ * Gets the remote connection corresponding to the supplied name.
+ *
+ * @param name
+ * name of the connection (as returned by {@link IRemoteConnection#getName()})
+ * @return remote connection or null if no connection exists
+ */
+ IRemoteConnection getConnection(String name);
+
+ /**
+ * Gets the remote connection corresponding to the supplied URI.
+ *
+ * @param uri
+ * URI containing a schema for this remote connection
+ * @return remote connection or null if no connection exists or the schema
+ * is incorrect
+ * @since 4.0
+ */
+ IRemoteConnection getConnection(URI uri);
+
+ /**
+ * Get all the connections for this service provider.
+ *
+ * @return connections that we know about
+ */
+ List<IRemoteConnection> getConnections();
+
+ /**
+ * Creates a new remote connection named with supplied name. The connection attributes will be the default for the
+ * implementation.
+ *
+ * Returns a working copy of the remote connection. Callers must call {@link IRemoteConnectionWorkingCopy#save()} before the
+ * connection can be used.
+ *
+ * @param name
+ * name of the connection
+ * @return a new connection working copy with the supplied name
+ * @throws RemoteConnectionException
+ * if connection creation failed
+ * @since 5.0
+ */
+ IRemoteConnectionWorkingCopy newConnection(String name) throws RemoteConnectionException;
+
+ /**
+ * Remove a connection and all resources associated with it.
+ *
+ * @param connection
+ * connection to remove
+ * @throws RemoteConnectionException
+ * if the connection could not be removed
+ */
+ void removeConnection(IRemoteConnection connection) throws RemoteConnectionException;
+
+}
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteConnectionWorkingCopy.java b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteConnectionWorkingCopy.java
new file mode 100644
index 00000000000..16f4ed5aa54
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteConnectionWorkingCopy.java
@@ -0,0 +1,76 @@
+/*******************************************************************************
+ * Copyright (c) 2007 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.core;
+
+import org.eclipse.remote.core.exception.RemoteConnectionException;
+
+/**
+ * A working copy of a remote connection used to change the name and/or
+ * attributes of the connection. It is also used when creating a new
+ * connection
+ */
+public interface IRemoteConnectionWorkingCopy extends IRemoteConnection {
+
+ /**
+ * Returns the original connection this working copy was created from.
+ * Returns null if this is a new connection.
+ *
+ * @return original connection
+ */
+ public IRemoteConnection getOriginal();
+
+ /**
+ * Returns whether this connection has been modified since it was last saved or created.
+ *
+ * @return true if the connection has been modified
+ */
+ public boolean isDirty();
+
+ /**
+ * Saves this working copy to its original connection and returns a handle to the resulting connection. Has no effect if this
+ * connection does not need saving.
+ *
+ * @return saved connection
+ * @throws RemoteConnectionException
+ */
+ public IRemoteConnection save() throws RemoteConnectionException;
+
+ /**
+ * Set the name for this connection
+ *
+ * @param name
+ */
+ public void setName(String name);
+
+ /**
+ * Set an implementation dependent attribute for the connection. Attributes keys supported by the connection can be obtained
+ * using {@link #getAttributes()}. Attributes are persisted along with connection information.
+ *
+ * @param key
+ * attribute key
+ * @param value
+ * attribute value
+ */
+ public void setAttribute(String key, String value);
+
+ /**
+ * Set an attribute such as a password that's stored in secure storage.
+ *
+ * @param key
+ * @param value
+ * @since 2.0
+ */
+ public void setSecureAttribute(String key, String value);
+
+}
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteFileService.java b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteFileService.java
new file mode 100644
index 00000000000..4c41caa6ba5
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteFileService.java
@@ -0,0 +1,99 @@
+/*******************************************************************************
+ * Copyright (c) 2007 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.core;
+
+import java.net.URI;
+
+import org.eclipse.core.filesystem.IFileStore;
+import org.eclipse.core.runtime.IPath;
+
+/**
+ * Interface for managing files on a remote system.
+ *
+ * @since 2.0
+ */
+public interface IRemoteFileService extends IRemoteConnection.Service {
+
+ /**
+ * Get the resource associated with path. IFileStore can then be used to
+ * perform operations on the file.
+ *
+ * The remote connection does not need to be open to use this method, but
+ * subsequent operations on the IFileStore that access the underlying remote
+ * filesystem may require the connection to be open.
+ *
+ * @param path
+ * path to resource
+ * @return the file store representing the remote path
+ */
+ IFileStore getResource(String path);
+
+ /**
+ * Get the base directory to be used for relative paths.
+ *
+ * @return base directory
+ */
+ String getBaseDirectory();
+
+ /**
+ * Set the base directory to be used for relative paths..
+ *
+ * @param path new base directory
+ */
+ void setBaseDirectory(String path);
+
+ /**
+ * Gets the directory separator on the target system.
+ *
+ * @return String
+ */
+ String getDirectorySeparator();
+
+ /**
+ * Convert URI to a remote path. This path is suitable for direct file
+ * operations <i>on the remote system</i>.
+ *
+ * The remote connection does not need to be open to use this method.
+ *
+ * @return IPath representing the remote path
+ */
+ String toPath(URI uri);
+
+ /**
+ * Convert remote path to equivalent URI. This URI is suitable for EFS
+ * operations <i>on the local system</i>.
+ *
+ * The remote connection does not need to be open to use this method.
+ *
+ * @param path
+ * path on remote system
+ * @return URI representing path on remote system, or null if the path is
+ * invalid
+ */
+ URI toURI(IPath path);
+
+ /**
+ * Convert string representation of a remote path to equivalent URI. This
+ * URI is suitable for EFS operations <i>on the local system</i>.
+ *
+ * The remote connection does not need to be open to use this method.
+ *
+ * @param path
+ * path on remote system
+ * @return URI representing path on remote system, or null if the path is
+ * invalid
+ */
+ URI toURI(String path);
+
+}
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemotePortForwardingService.java b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemotePortForwardingService.java
new file mode 100644
index 00000000000..caaff8e9c42
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemotePortForwardingService.java
@@ -0,0 +1,106 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.core;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.remote.core.exception.RemoteConnectionException;
+
+/**
+ * A connection service for setting up port forwarding between the host and the remote.
+ * This is a feature provided by SSH.
+ *
+ * @since 2.0
+ */
+public interface IRemotePortForwardingService extends IRemoteConnection.Service {
+
+ /**
+ * Forward local port localPort to remote port fwdPort on remote machine fwdAddress. If this IRemoteConnection is not to
+ * fwdAddress, the port will be routed via the connection machine to fwdAddress.
+ *
+ * @param localPort
+ * local port to forward
+ * @param fwdAddress
+ * address of remote machine
+ * @param fwdPort
+ * remote port on remote machine
+ * @throws RemoteConnectionException
+ */
+ public void forwardLocalPort(int localPort, String fwdAddress, int fwdPort) throws RemoteConnectionException;
+
+ /**
+ * Forward a local port to remote port fwdPort on remote machine fwdAddress. The local port is chosen dynamically and returned
+ * by the method. If this IRemoteConnection is not to fwdAddress, the port will be routed via the connection machine to
+ * fwdAddress.
+ *
+ * @param fwdAddress
+ * @param fwdPort
+ * @param monitor
+ * @return local port number
+ * @throws RemoteConnectionException
+ */
+ public int forwardLocalPort(String fwdAddress, int fwdPort, IProgressMonitor monitor)
+ throws RemoteConnectionException;
+
+ /**
+ * Forward remote port remotePort to port fwdPort on machine fwdAddress. When a connection is made to remotePort on the remote
+ * machine, it is forwarded via this IRemoteConnection to fwdPort on machine fwdAddress.
+ *
+ * @param remotePort
+ * remote port to forward
+ * @param fwdAddress
+ * address of recipient machine
+ * @param fwdPort
+ * port on recipient machine
+ * @throws RemoteConnectionException
+ */
+ public void forwardRemotePort(int remotePort, String fwdAddress, int fwdPort) throws RemoteConnectionException;
+
+ /**
+ * Forward a remote port to port fwdPort on remote machine fwdAddress. The remote port is chosen dynamically and returned by the
+ * method. When a connection is made to this port on the remote machine, it is forwarded via this IRemoteConnection to fwdPort
+ * on machine fwdAddress.
+ *
+ * If fwdAddress is the empty string ("") then the fwdPort will be bound to any address on all interfaces. Note that this
+ * requires enabling the GatewayPort sshd option on some systems.
+ *
+ * @param fwdAddress
+ * @param fwdPort
+ * @param monitor
+ * @return remote port number
+ * @throws RemoteConnectionException
+ */
+ public int forwardRemotePort(String fwdAddress, int fwdPort, IProgressMonitor monitor)
+ throws RemoteConnectionException;
+
+ /**
+ * Remove the local port forwarding associated with the given port.
+ *
+ * @param port
+ * forwarded port
+ * @throws RemoteConnectionException
+ * @since 7.0
+ */
+ public void removeLocalPortForwarding(int port) throws RemoteConnectionException;
+
+ /**
+ * Remove the remote port forwarding associated with the given port.
+ *
+ * @param port
+ * forwarded port
+ * @throws RemoteConnectionException
+ * @since 7.0
+ */
+ public void removeRemotePortForwarding(int port) throws RemoteConnectionException;
+
+}
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemotePreferenceConstants.java b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemotePreferenceConstants.java
new file mode 100644
index 00000000000..645f7420cfe
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemotePreferenceConstants.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2011 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.core;
+
+/**
+ * Preference constants that can be used to check the default remote service provider preference.
+ *
+ * @since 6.0
+ */
+public interface IRemotePreferenceConstants {
+ /**
+ * Preference setting for the default connection type. Clients can check this preference to see if a default provider
+ * has been set, and if so, what the provider ID is.
+ *
+ * @since 2.0
+ */
+ public static final String PREF_CONNECTION_TYPE_ID = "connectionTypeId"; //$NON-NLS-1$
+}
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteProcess.java b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteProcess.java
new file mode 100644
index 00000000000..28d375309c6
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteProcess.java
@@ -0,0 +1,136 @@
+/*******************************************************************************
+ * Copyright (c) 2007 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.core;
+
+import java.io.InputStream;
+import java.io.OutputStream;
+
+/**
+ * Represents a process running on a remote system. Remote process are created using the {@link IRemoteProcessBuilder} interface.
+ */
+public interface IRemoteProcess {
+ /**
+ * The interface that is extend by services provided for this remote connection.
+ *
+ * @since 2.0
+ */
+ interface Service {
+ IRemoteProcess getRemoteProcess();
+
+ interface Factory {
+ <T extends Service> T getService(IRemoteProcess remoteProcess, Class<T> service);
+ }
+ }
+
+ /**
+ * Terminate the process
+ */
+ void destroy();
+
+ /**
+ * Returns the exit value for the process
+ *
+ * @return the exit value
+ */
+ int exitValue();
+
+ /**
+ * Gets the error output stream of the process
+ *
+ * Note: some implementations (e.g. JSch) will not work correctly if the remote process generates stdout or stderr but the
+ * calling thread does not read the corresponding output or error streams.
+ *
+ * @return the output stream connected to the standard
+ * error of the process
+ */
+ InputStream getErrorStream();
+
+ /**
+ * Gets an InputStream which can be used to read the standard output stream of the process
+ *
+ * Note: some implementations (e.g. JSch) will not work correctly if the remote process generates stdout or stderr but the
+ * calling thread does not read the corresponding input or error streams.
+ *
+ * @return the input stream connected to the standard
+ * output of the process
+ */
+ InputStream getInputStream();
+
+ /**
+ * Gets an output stream which can be used to write to the standard input stream of the process
+ *
+ * @return the output stream connected to the standard
+ * input of the process
+ */
+ OutputStream getOutputStream();
+
+ /**
+ * Get the service for this remote process that implements the given interface.
+ *
+ * @param service
+ * the interface the required service must implements
+ * @return the desired service or null if there is no such service available
+ * @since 2.0
+ */
+ <T extends Service> T getService(Class<T> service);
+
+ /**
+ * Does this remote process support the given service.
+ *
+ * @param service
+ * The service to be tested
+ * @return true if this connection supports the service
+ * @since 2.0
+ */
+ <T extends Service> boolean hasService(Class<T> service);
+
+ /**
+ * Wait until the process has terminated
+ *
+ * Note: some implementations (e.g. JSch) will not work correctly if the remote process generates stdout or stderr but the
+ * calling thread does not read the corresponding input or error streams.
+ *
+ * @return the exit value of the process
+ * @throws InterruptedException
+ * if the current thread is
+ * interrupted by another thread while it is waiting
+ */
+ int waitFor() throws InterruptedException;
+
+ /**
+ * Check if the remote process has completed.
+ *
+ * Note: some implementations (e.g. JSch) will not work correctly if the remote process generates stdout or stderr but the
+ * calling thread does not read the corresponding input or error streams.
+ *
+ * @return true if remote process has completed
+ */
+ boolean isCompleted();
+
+ /**
+ * Get the connection that is used by this process
+ *
+ * @return connection used by this process
+ * @since 2.0
+ */
+ IRemoteConnection getRemoteConnection();
+
+ /**
+ * Get the process builder used to create this process
+ *
+ * @return process builder used to create this process
+ * @since 2.0
+ */
+ IRemoteProcessBuilder getProcessBuilder();
+}
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteProcessBuilder.java b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteProcessBuilder.java
new file mode 100644
index 00000000000..3167b52a6a7
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteProcessBuilder.java
@@ -0,0 +1,161 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2010 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.core;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.filesystem.IFileStore;
+
+/**
+ * Abstraction of a process builder for remote processes. This interface behaves in the same manner as
+ * {@link java.lang.ProcessBuilder}.
+ */
+public interface IRemoteProcessBuilder {
+ /**
+ * @since 5.0
+ */
+ public static int NONE = 0x00;
+
+ /**
+ * Flag to request allocation of a pseudo-terminal for the process (RFC-4254
+ * Sec. 6.2)
+ *
+ * @since 5.0
+ */
+ public static int ALLOCATE_PTY = 0x01;
+
+ /**
+ * Flag to request X11 forwarding (RFC-4254 Sec. 6.3)
+ *
+ * @since 5.0
+ */
+ public static int FORWARD_X11 = 0x02;
+
+ /**
+ * Flag to request that the supplied environment be apended to the remote environment; otherwise
+ * it is replaced.
+ * @since 3.0
+ */
+ public static int APPEND_ENVIRONMENT = 0x03;
+
+ /**
+ * Returns this process builder's operating system program and arguments.
+ *
+ * @return a list containing the program and arguments
+ */
+ List<String> command();
+
+ /**
+ * Sets this process builder's operating system program and arguments.
+ *
+ * @param command
+ * @return This process builder
+ */
+ IRemoteProcessBuilder command(List<String> command);
+
+ /**
+ * Sets this process builder's operating system program and arguments.
+ *
+ * @param command
+ * @return this process builder
+ */
+ IRemoteProcessBuilder command(String... command);
+
+ /**
+ * Returns this process builder's working directory.
+ *
+ * @return an IFileStore reference to the working directory
+ */
+ IFileStore directory();
+
+ /**
+ * Sets this process builder's working directory.
+ *
+ * @param directory
+ * @return This process builder
+ */
+ IRemoteProcessBuilder directory(IFileStore directory);
+
+ /**
+ * Returns a string map view of this process builder's environment. The
+ * returned map behaves in the same manner as described in {@link java.lang.ProcessBuilder#environment()}.
+ *
+ * @return the process builder's environment
+ */
+ Map<String, String> environment();
+
+ /**
+ * Get the flags that are supported by this process builder.
+ *
+ * @return bitwise-or of the supported flags
+ * @since 5.0
+ */
+ int getSupportedFlags();
+
+ /**
+ * Tells whether this process builder merges standard error and standard
+ * output.
+ *
+ * @return true if standard error and standard output will be merged
+ */
+ boolean redirectErrorStream();
+
+ /**
+ * Sets this process builder's redirectErrorStream property.
+ *
+ * @param redirectErrorStream
+ * @return This process builder
+ */
+ IRemoteProcessBuilder redirectErrorStream(boolean redirectErrorStream);
+
+ /**
+ * Starts a new process using the attributes of this process builder.
+ *
+ * @return remote process object
+ * @throws IOException
+ */
+ IRemoteProcess start() throws IOException;
+
+ /**
+ * Starts a new process using the attributes of this process builder. The
+ * flags may be used to modify behavior of the remote process. These flags
+ * may only be supported by specific types of remote service providers.
+ * Clients can use {@link #getSupportedFlags()} to find out the flags
+ * supported by the service provider.
+ *
+ * <pre>
+ * Current flags are:
+ * NONE - disable any flags
+ * ALLOCATE_PTY - allocate a pseudo-terminal for the process (RFC-4254 Sec. 6.2)
+ * FORWARD_X11 - enable X11 forwarding (RFC-4254 Sec. 6.3)
+ * </pre>
+ *
+ * @param flags
+ * bitwise-or of flags to use when starting process
+ * @return remote process object
+ * @throws IOException
+ * @since 5.0
+ */
+ IRemoteProcess start(int flags) throws IOException;
+
+ /**
+ * Get the connection that will be used by this process builder to create remote processes.
+ *
+ * @return connection used to create remote processes
+ * @since 2.0
+ */
+ IRemoteConnection getRemoteConnection();
+} \ No newline at end of file
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteProcessControlService.java b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteProcessControlService.java
new file mode 100644
index 00000000000..f1e817038e1
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteProcessControlService.java
@@ -0,0 +1,77 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.core;
+
+import java.io.InputStream;
+import java.io.OutputStream;
+
+/**
+ * A service to control and report on the state of a process.
+ *
+ * @since 2.0
+ */
+public interface IRemoteProcessControlService extends IRemoteProcess.Service {
+ /**
+ * Terminate the process
+ */
+ public void destroy();
+
+ /**
+ * Returns the exit value for the process
+ *
+ * @return the exit value
+ */
+ public int exitValue();
+
+ /**
+ * Gets the error output stream of the process
+ *
+ * @return the output stream connected to the standard
+ * error of the process
+ */
+ public InputStream getErrorStream();
+
+ /**
+ * Gets an InputStream which can be used to read the standard output stream of the process
+ *
+ * @return the input stream connected to the standard
+ * output of the process
+ */
+ public InputStream getInputStream();
+
+ /**
+ * Gets an output stream which can be used to write to the standard input stream of the process
+ *
+ * @return the output stream connected to the standard
+ * input of the process
+ */
+ public OutputStream getOutputStream();
+
+ /**
+ * Wait until the process has terminated
+ *
+ * @return the exit value of the process
+ * @throws InterruptedException
+ * if the current thread is
+ * interrupted by another thread while it is waiting
+ */
+ public int waitFor() throws InterruptedException;
+
+ /**
+ * Check if the remote process has completed
+ *
+ * @return true if remote process has completed
+ */
+ public boolean isCompleted();
+}
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteProcessService.java b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteProcessService.java
new file mode 100644
index 00000000000..b38cae6ec09
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteProcessService.java
@@ -0,0 +1,78 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.core;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * A connection service for starting up processes on a remote.
+ *
+ * @since 2.0
+ */
+public interface IRemoteProcessService extends IRemoteConnection.Service {
+
+ /**
+ * Returns an unmodifiable string map view of the remote environment. The connection must be open prior to calling this method.
+ *
+ * @return the remote environment
+ */
+ public Map<String, String> getEnv();
+
+ /**
+ * Returns the value of an environment variable. The connection must be open prior to calling this method.
+ *
+ * @param name
+ * name of the environment variable
+ * @return value of the environment variable or null if the variable is not defined
+ */
+ public String getEnv(String name);
+
+ /**
+ * Get a process builder for creating remote processes
+ *
+ * @return process builder or null if connection is not open
+ */
+ public IRemoteProcessBuilder getProcessBuilder(List<String> command);
+
+ /**
+ * Get a process builder for creating remote processes
+ *
+ * @return process builder or null if connection is not open
+ */
+ public IRemoteProcessBuilder getProcessBuilder(String... command);
+
+ /**
+ * Get the working directory. Relative paths will be resolved using this path.
+ *
+ * The remote connection does not need to be open to use this method, however a default directory path, rather than the actual
+ * working directory, may be returned in this case.
+ *
+ * @return String representing the current working directory
+ */
+ public String getWorkingDirectory();
+
+ /**
+ * Set the working directory while the connection is open. The working directory will revert to the default when the connection
+ * is closed then subsequently reopened.
+ *
+ * Relative paths will be resolved using this path. The path must be valid and absolute for any changes to be made.
+ *
+ * @param path
+ * String representing the current working directory
+ * @since 4.0
+ */
+ public void setWorkingDirectory(String path);
+
+}
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteProcessSignalService.java b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteProcessSignalService.java
new file mode 100644
index 00000000000..038952be6d7
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteProcessSignalService.java
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * Copyright (c) 2015 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.core;
+
+import org.eclipse.remote.core.exception.RemoteConnectionException;
+
+/**
+ * A service abstraction for signals.
+ *
+ * @since 2.0
+ */
+public interface IRemoteProcessSignalService extends IRemoteProcess.Service {
+ public static final int HUP = 1;
+ public static final int INT = 2;
+ public static final int QUIT = 3;
+ public static final int ILL = 4;
+ public static final int ABRT = 6;
+ public static final int FPE = 8;
+ public static final int KILL = 9;
+ public static final int SEGV = 11;
+ public static final int PIPE = 13;
+ public static final int ALRM = 14;
+ public static final int TERM = 15;
+ public static final int STOP = 17;
+ public static final int TSTP = 18;
+ public static final int CONT = 19;
+ public static final int USR1 = 30;
+ public static final int USR2 = 31;
+
+ /**
+ * Send a signal to the remote process.
+ *
+ * @param signal
+ * signal to send.
+ * @throws RemoteConnectionException
+ * if the underlying connection fails
+ * @since 2.0
+ */
+ void sendSignal(int signal) throws RemoteConnectionException;
+}
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteProcessTerminalService.java b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteProcessTerminalService.java
new file mode 100644
index 00000000000..b9597c5270f
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteProcessTerminalService.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2015 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.core;
+
+/**
+ * A service abstraction for remote terminals.
+ *
+ * @since 2.0
+ */
+public interface IRemoteProcessTerminalService extends IRemoteProcess.Service {
+ /**
+ * Change the terminal window dimension interactively. Refer to RFC 4254 6.7. Window Dimension Change Message. The character/row
+ * dimensions override the pixel dimensions (when nonzero). Pixel dimensions refer to the drawable area of the window.
+ *
+ * @param cols
+ * terminal width in characters
+ * @param rows
+ * terminal height in characters
+ * @param width
+ * terminal width in pixels
+ * @param height
+ * terminal height in pixels
+ */
+ void setTerminalSize(int cols, int rows, int width, int height);
+}
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteResource.java b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteResource.java
new file mode 100644
index 00000000000..06afab93dcf
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteResource.java
@@ -0,0 +1,78 @@
+/*******************************************************************************
+ * Copyright (c) 2011 IBM Corporation.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.core;
+
+import java.net.URI;
+
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+
+/**
+ * Abstraction of a remote resource. There are currently two types of remote resources: fully remote and synchronized. This
+ * interface provides a common mechanism for accessing resource information from either type.
+ *
+ * Usage:
+ *
+ * <code>
+ * IRemoteResource remoteRes = (IRemoteResource)resource.getAdapter(IRemoteResource.class);
+ * if (remoteRes != null) {
+ * URI location = remoteRes.getDefaultLocationURI();
+ * ...
+ * }
+ * </code>
+ *
+ * @author greg
+ * @since 6.0
+ *
+ */
+public interface IRemoteResource {
+ /**
+ * Get the active location URI of the resource in the remote project. Returns null if the URI can't be obtained (@see
+ * {@link IResource#getLocationURI()}).
+ *
+ * For fully remote projects, this is just the URI of the remote resource. For synchronized projects, this is the URI of the
+ * resource from the active synchronization target.
+ *
+ * @return URI or null if URI can't be obtained
+ */
+ public URI getActiveLocationURI();
+
+ /**
+ * Get the platform resource corresponding to the remote resource
+ *
+ * @return IResource
+ */
+ public IResource getResource();
+
+ /**
+ * Synchronize the resource with the underlying filesystem. Performs a refresh for local and remote projects, but causes
+ * synchronized projects to attempt to synchronize with their remote files. May synchronize more than just the single resource.
+ * Blocks until the refresh has completed, so callers should use a job if necessary.
+ *
+ * @param monitor
+ * progress monitor to cancel refresh
+ * @throws CoreException
+ * if the underlying synchronization fails
+ */
+ public void refresh(IProgressMonitor monitor) throws CoreException;
+
+ /**
+ * Set the platform resource
+ *
+ * @param resource
+ * platform resource corresponding to this remote resource
+ */
+ public void setResource(IResource resource);
+} \ No newline at end of file
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteServicesManager.java b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteServicesManager.java
new file mode 100644
index 00000000000..330a8d06f77
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IRemoteServicesManager.java
@@ -0,0 +1,125 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.core;
+
+import java.net.URI;
+import java.util.List;
+
+/**
+ * The main entry point into the remote services system. The remote services manager
+ * is an OSGi service. It provides a list of connection types and the global
+ * list of all connections.
+ *
+ * @noimplement This interface is not intended to be implemented by clients.
+ * @since 2.0
+ */
+public interface IRemoteServicesManager {
+
+ /**
+ * Get the connection type identified by the id
+ *
+ * @param id
+ * id of the connection type
+ * @return connection type or null if the service can not be found
+ */
+ IRemoteConnectionType getConnectionType(String id);
+
+ /**
+ * Get the connection type that provides connections to locations identified by
+ * the URI.
+ *
+ * @param uri
+ * uri of locations to be accessed
+ * @return the connection type that can be used to access the locations
+ * or null if no connection type is available for the uri.
+ */
+ IRemoteConnectionType getConnectionType(URI uri);
+
+ /**
+ * Return the connection type used to access local resources.
+ *
+ * @return the local services
+ */
+ IRemoteConnectionType getLocalConnectionType();
+
+ /**
+ * Returns the list of all connection types including the local services.
+ *
+ * @return all connection types
+ */
+ List<IRemoteConnectionType> getAllConnectionTypes();
+
+ /**
+ * Returns the list of all connection types that support connections that provide specific services. The connections
+ * can provide additional services that are not included in the list, so this just guarantees the minimum set of services that
+ * will be supported.
+ *
+ * @param services
+ * services provided by connections supported by this connection type
+ * @return compatible connection types
+ */
+ @SuppressWarnings("unchecked")
+ List<IRemoteConnectionType> getConnectionTypesSupporting(Class<? extends IRemoteConnection.Service>... services);
+
+ /**
+ * Returns the list of all connection types that provide specific services. The connection types can provide additional services
+ * that are not included in the list, so this just guarantees the minimum set of services that will be supported.
+ *
+ * @param services
+ * services provided by this connection type
+ * @return compatible connection types
+ */
+ @SuppressWarnings("unchecked")
+ List<IRemoteConnectionType> getConnectionTypesByService(Class<? extends IRemoteConnectionType.Service>... services);
+
+ /**
+ * Returns the list of connection types except for the local connection type.
+ *
+ * @return all connection types that are really remote
+ */
+ List<IRemoteConnectionType> getRemoteConnectionTypes();
+
+ /**
+ * Returns the list of all known remote connections.
+ *
+ * @return all remote connections
+ */
+ List<IRemoteConnection> getAllRemoteConnections();
+
+ /**
+ * Add a global connection change listener that receives events for all connections.
+ *
+ * @param listener
+ * global connection change listener to be added
+ */
+ void addRemoteConnectionChangeListener(IRemoteConnectionChangeListener listener);
+
+ /**
+ * Remove the global connection change listener.
+ *
+ * @param listener
+ * global connection change listener to be removed
+ */
+ void removeRemoteConnectionChangeListener(IRemoteConnectionChangeListener listener);
+
+ /**
+ * Used by connections and other components to notify the global connection
+ * change listeners of events.
+ *
+ * @param event
+ * connection change event
+ */
+ void fireRemoteConnectionChangeEvent(RemoteConnectionChangeEvent event);
+
+}
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IUserAuthenticatorService.java b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IUserAuthenticatorService.java
new file mode 100644
index 00000000000..e497335c32c
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/IUserAuthenticatorService.java
@@ -0,0 +1,131 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2007, 2013 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ * Atsuhiko Yamanaka, JCraft,Inc. - adding promptForKeyboradInteractive method
+ * - copying this class from cvs.core plug-in.
+ * Greg Watson, IBM - modified for use with PTP
+ *******************************************************************************/
+package org.eclipse.remote.core;
+
+import java.net.PasswordAuthentication;
+
+/**
+ * Allow clients to provide their own user interface for connection authentication.
+ *
+ * @since 2.0
+ */
+public interface IUserAuthenticatorService extends IRemoteConnection.Service {
+
+ /**
+ * ID for an "Ok" response (value 0).
+ */
+ public final static int OK = 0;
+
+ /**
+ * ID for a "Cancel" response (value 1).
+ */
+ public final static int CANCEL = 1;
+
+ /**
+ * ID for a "Yes" response (value 2).
+ */
+ public final static int YES = 2;
+
+ /**
+ * ID for a "No" response (value 3).
+ */
+ public final static int NO = 3;
+
+ /**
+ * Constant for a prompt with no type (value 0).
+ */
+ public final static int NONE = 0;
+
+ /**
+ * Constant for an error prompt (value 1).
+ */
+ public final static int ERROR = 1;
+
+ /**
+ * Constant for an information prompt (value 2).
+ */
+ public final static int INFORMATION = 2;
+
+ /**
+ * Constant for a question prompt (value 3).
+ */
+ public final static int QUESTION = 3;
+
+ /**
+ * Constant for a warning dialog (value 4).
+ */
+ public final static int WARNING = 4;
+
+ /**
+ * Authenticates the user for access.
+ * The obtained values for user name and password will be placed
+ * into returned object. Implementors are allowed to
+ * save user names and passwords. The user should be prompted for
+ * user name and password if there is no saved one.
+ *
+ * @param username
+ * The initial username, or null if there is no initial username
+ * @param message
+ * An optional message to display if, e.g., previous authentication failed.
+ */
+ public PasswordAuthentication prompt(String username, String message);
+
+ /**
+ * Prompts the user for a number values using text fields. The labels are provided in
+ * the <core>prompt</code> array. Implementors will return the entered values, or null if
+ * the user cancels the prompt.
+ *
+ * @param destination
+ * the destination in the format like username@hostname:port
+ * @param name
+ * a name for this dialog
+ * @param message
+ * the message to be displayed to the user
+ * @param prompt
+ * labels for each of the text fields.
+ * @param echo
+ * an array to show which fields are secret
+ * @return the entered values, or null if the user canceled.
+ */
+ public String[] prompt(String destination, String name, String message, String[] prompt, boolean[] echo);
+
+ /**
+ * Prompts for additional information regarding this authentication
+ * request. A default implementation of this method should return the <code>defaultResponse</code>,
+ * whereas alternate implementations could prompt the user with a dialog.
+ *
+ * @param promptType
+ * one of the following values:
+ * <ul>
+ * <li> <code>NONE</code> for a unspecified prompt type</li>
+ * <li> <code>ERROR</code> for an error prompt</li>
+ * <li> <code>INFORMATION</code> for an information prompt</li>
+ * <li> <code>QUESTION </code> for a question prompt</li>
+ * <li> <code>WARNING</code> for a warning prompt</li>
+ * </ul>
+ * @param title
+ * the prompt title that could be displayed to the user
+ * @param message
+ * the message to display to the user
+ * @param promptResponses
+ * the possible responses to the prompt (e.g. corresponding to buttons on a dialog)
+ * @param defaultResponseIndex
+ * the default response to the prompt
+ * @return the response to the prompt
+ */
+ public int prompt(int promptType, String title, String message, int[] promptResponses, int defaultResponseIndex);
+}
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/RemoteConnectionChangeEvent.java b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/RemoteConnectionChangeEvent.java
new file mode 100644
index 00000000000..661c70b2423
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/RemoteConnectionChangeEvent.java
@@ -0,0 +1,92 @@
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.core;
+
+/**
+ * Event representing a change in connection status. The {@link #getType()} method can be used to obtain information about the type
+ * of event that occurred.
+ *
+ * @since 2.0
+ */
+public class RemoteConnectionChangeEvent {
+
+ /**
+ * Event indicating that the connection was closed.
+ */
+ public static final int CONNECTION_CLOSED = 1 << 0;
+
+ /**
+ * Event indicating that the connection was opened.
+ */
+ public static final int CONNECTION_OPENED = 1 << 1;
+
+ /**
+ * Event indicating that the connection was closed abnormally.
+ */
+ public static final int CONNECTION_ABORTED = 1 << 2;
+
+ /**
+ * Event indicating that the connection name will be changed. It is sent prior to the name change taking place.
+ * The event passes an IRemoteConnectionWorkingCopy so that the original and new name can be used by the listener.
+ */
+ public static final int CONNECTION_RENAMED = 1 << 3;
+
+ /**
+ * Event indicating the connection was added.
+ * @since 2.0
+ */
+ public static final int CONNECTION_ADDED = 1 << 4;
+
+ /**
+ * Event indicating the connection is about to be removed.
+ * @since 2.0
+ */
+ public static final int CONNECTION_REMOVED = 1 << 5;
+
+ /**
+ * Event indicating the connection attributes had changed.
+ * @since 4.0
+ */
+ public static final int ATTRIBUTES_CHANGED = 1 << 6;
+
+ private final IRemoteConnection connection;
+ private final int type;
+
+ public RemoteConnectionChangeEvent(IRemoteConnection connection, int type) {
+ this.connection = connection;
+ this.type = type;
+ }
+
+ /**
+ * Get the connection that has changed.
+ *
+ * @return IRemoteConnection
+ */
+ public IRemoteConnection getConnection() {
+ return connection;
+ }
+
+ /**
+ * Returns the type of event being reported. This type
+ * is obtained by bitwise OR'ing the event types together.
+ *
+ * {@link #CONNECTION_CLOSED} {@link #CONNECTION_OPENED} {@link #CONNECTION_ABORTED} {@link #CONNECTION_RENAMED}
+ *
+ * @return a bitwise OR of event type constants
+ */
+ public int getType() {
+ return type;
+ }
+
+}
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/RemoteConnectionPropertyTester.java b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/RemoteConnectionPropertyTester.java
new file mode 100644
index 00000000000..8d78ccea991
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/RemoteConnectionPropertyTester.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2016 QNX Software Systems, and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - initial contribution
+ *******************************************************************************/
+package org.eclipse.remote.core;
+
+import org.eclipse.core.expressions.PropertyTester;
+
+/**
+ * @since 2.1
+ */
+public class RemoteConnectionPropertyTester extends PropertyTester {
+
+ @Override
+ public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
+ if (receiver instanceof IRemoteConnection) {
+ if (property.equals("isConnectionType")) {
+ IRemoteConnection connection = (IRemoteConnection) receiver;
+ if (connection.getConnectionType().getId().equals(expectedValue)) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+}
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/RemoteProcessAdapter.java b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/RemoteProcessAdapter.java
new file mode 100644
index 00000000000..0eb03c2f25d
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/RemoteProcessAdapter.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.core;
+
+import java.io.InputStream;
+import java.io.OutputStream;
+
+/**
+ * Utility class to adapt an IRemoteProcess to a java.lang.Process
+ *
+ * @author crecoskie
+ *
+ */
+public class RemoteProcessAdapter extends Process {
+
+ private final IRemoteProcess fProcess;
+
+ public RemoteProcessAdapter(IRemoteProcess process) {
+ fProcess = process;
+ }
+
+ @Override
+ public void destroy() {
+ fProcess.destroy();
+
+ }
+
+ @Override
+ public int exitValue() {
+ return fProcess.exitValue();
+ }
+
+ @Override
+ public InputStream getErrorStream() {
+ return fProcess.getErrorStream();
+ }
+
+ @Override
+ public InputStream getInputStream() {
+ return fProcess.getInputStream();
+ }
+
+ @Override
+ public OutputStream getOutputStream() {
+ return fProcess.getOutputStream();
+ }
+
+ @Override
+ public int waitFor() throws InterruptedException {
+ return fProcess.waitFor();
+ }
+
+}
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/RemoteServicesUtils.java b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/RemoteServicesUtils.java
new file mode 100644
index 00000000000..b135c5827d6
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/RemoteServicesUtils.java
@@ -0,0 +1,118 @@
+/*******************************************************************************
+ * Copyright (c) 2013, 2015 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - Initial API and implementation
+ * Martin Oberhuber - [468889] Support Eclipse older than Mars
+ *******************************************************************************/
+package org.eclipse.remote.core;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.remote.internal.core.RemoteCorePlugin;
+import org.eclipse.remote.internal.core.RemotePath;
+import org.eclipse.remote.internal.core.preferences.Preferences;
+
+/**
+ * Remote services utility methods.
+ */
+public class RemoteServicesUtils {
+ /**
+ * Constructs a new POSIX path from the given string path. The string path
+ * must represent a valid file system path on a POSIX file system. The path
+ * is canonicalized and double slashes are removed except at the beginning
+ * (to handle UNC paths). All forward slashes ('/') are treated as segment
+ * delimiters. This factory method should be used if the string path is for
+ * a POSIX file system.
+ *
+ * @param path the string path
+ * @see org.eclipse.core.runtime.Path#forPosix(String)
+ * @since 2.0
+ */
+ public static IPath posixPath(String path) {
+ try {
+ //Use the Mars implementation of Path, see bug 454959
+ return Path.forPosix(path);
+ } catch (NoSuchMethodError e) {
+ //TODO For older Eclipse, use the fallback below. That code should be
+ //removed when support for Eclipse older than Mars is no longer needed.
+ return RemotePath.forPosix(path);
+ }
+ }
+
+ /**
+ * Convert a UNC path to a URI
+ *
+ * Maps the UNC server component to a connection known by one of the remote service implementations. It is assumed that the
+ * server component is of the form "[connection_type_id:]connection_name". If the "connection_type_id:" part is omitted then the
+ * current connection type preference is used by default. If no preference is set, then each implementation is tried until
+ * a matching connection name is found.
+ *
+ * @param path
+ * UNC path
+ * @return corresponding URI or null if not a valid path
+ */
+ public static URI toURI(IPath path) {
+ if (path.isUNC()) {
+ IRemoteServicesManager manager = RemoteCorePlugin.getService(IRemoteServicesManager.class);
+ /*
+ * Split the server component if possible.
+ */
+ String[] parts = path.segment(0).split(":"); //$NON-NLS-1$
+ IRemoteConnectionType services = null;
+ String connName = null;
+ if (parts.length == 2) {
+ services = manager.getConnectionType(parts[0]);
+ connName = parts[1];
+ } else if (parts.length == 1) {
+ String id = Preferences.getString(IRemotePreferenceConstants.PREF_CONNECTION_TYPE_ID);
+ if (id != null) {
+ services = manager.getConnectionType(id);
+ }
+ connName = parts[0];
+ }
+
+ /*
+ * If we've found the remote services then look up the connection, otherwise iterate through all available services
+ * checking for the connection name.
+ */
+ IRemoteConnection conn = null;
+ if (services != null) {
+ conn = services.getConnection(connName);
+ } else if (connName != null) {
+ for (IRemoteConnectionType s : manager.getAllConnectionTypes()) {
+ if (s != null) {
+ conn = s.getConnection(connName);
+ if (conn != null) {
+ break;
+ }
+ }
+ }
+ }
+
+ /*
+ * If a connection was found then convert it to a URI.
+ */
+ if (conn != null) {
+ String scheme = conn.getConnectionType().getScheme();
+ String filePath = path.removeFirstSegments(1).makeAbsolute().toString();
+ try {
+ return new URI(scheme, connName, filePath, null, null);
+ } catch (URISyntaxException e) {
+ // Ignore
+ }
+ }
+ }
+ return null;
+ }
+}
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/exception/AddressInUseException.java b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/exception/AddressInUseException.java
new file mode 100644
index 00000000000..2f797393327
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/exception/AddressInUseException.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * Copyright (c) 2007 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - Initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.remote.core.exception;
+
+/**
+ * Exception thrown when a connection address is already in use.
+ *
+ */
+public class AddressInUseException extends RemoteConnectionException {
+ private static final long serialVersionUID = 1771839754428411610L;
+
+ /**
+ * @param message
+ * @param cause
+ */
+ public AddressInUseException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ /**
+ * @param message
+ */
+ public AddressInUseException(String message) {
+ super(message);
+ }
+
+ /**
+ * @param cause
+ */
+ public AddressInUseException(Throwable cause) {
+ super(cause);
+ }
+
+}
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/exception/ConnectionExistsException.java b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/exception/ConnectionExistsException.java
new file mode 100644
index 00000000000..4848696e6d2
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/exception/ConnectionExistsException.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.core.exception;
+
+/**
+ * Thrown when trying to add a connection with the same name as an existing
+ * connection, or when trying to rename a connection to the same name as an
+ * existing connection.
+ *
+ * @since 2.0
+ */
+public class ConnectionExistsException extends RemoteConnectionException {
+
+ private static final long serialVersionUID = -1591235868439783613L;
+
+ public ConnectionExistsException(String message) {
+ super(message);
+ }
+
+}
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/exception/PrivilegedPortException.java b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/exception/PrivilegedPortException.java
new file mode 100644
index 00000000000..192577d21f2
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/exception/PrivilegedPortException.java
@@ -0,0 +1,45 @@
+/*******************************************************************************
+ * Copyright (c) 2007 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - Initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.remote.core.exception;
+
+/**
+ * Exception thrown when an attempt is made to use a privileged port.
+ */
+public class PrivilegedPortException extends RemoteConnectionException {
+ private static final long serialVersionUID = -7794871221470179956L;
+
+ /**
+ * @param message
+ * @param cause
+ */
+ public PrivilegedPortException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ /**
+ * @param message
+ */
+ public PrivilegedPortException(String message) {
+ super(message);
+ }
+
+ /**
+ * @param cause
+ */
+ public PrivilegedPortException(Throwable cause) {
+ super(cause);
+ }
+
+}
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/exception/RemoteConnectionException.java b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/exception/RemoteConnectionException.java
new file mode 100644
index 00000000000..81157e01319
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/exception/RemoteConnectionException.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2007 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - Initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.remote.core.exception;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.remote.internal.core.RemoteCorePlugin;
+
+/**
+ * Exception thrown when a remote connection error occurs.
+ */
+public class RemoteConnectionException extends CoreException {
+ private static final long serialVersionUID = -7794871221470179956L;
+
+ /**
+ * @param message
+ * @param cause
+ */
+ public RemoteConnectionException(String message, Throwable cause) {
+ super(new Status(IStatus.ERROR, RemoteCorePlugin.getUniqueIdentifier(), message, cause));
+ }
+
+ /**
+ * @param message
+ */
+ public RemoteConnectionException(String message) {
+ this(message, null);
+ }
+
+ /**
+ * @param cause
+ */
+ public RemoteConnectionException(Throwable cause) {
+ this(cause.getMessage(), cause);
+ }
+}
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/exception/UnableToForwardPortException.java b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/exception/UnableToForwardPortException.java
new file mode 100644
index 00000000000..45c42a84c89
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/exception/UnableToForwardPortException.java
@@ -0,0 +1,48 @@
+/*******************************************************************************
+ * Copyright (c) 2007 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - Initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.remote.core.exception;
+
+/**
+ * Exception thrown when a port is unable to be forwarded.
+ */
+public class UnableToForwardPortException extends RemoteConnectionException {
+ /**
+ *
+ */
+ private static final long serialVersionUID = -5814772755700213717L;
+
+ /**
+ * @param message
+ * @param cause
+ */
+ public UnableToForwardPortException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ /**
+ * @param message
+ */
+ public UnableToForwardPortException(String message) {
+ super(message);
+ }
+
+ /**
+ * @param cause
+ */
+ public UnableToForwardPortException(Throwable cause) {
+ super(cause);
+ }
+
+}
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/launch/IRemoteLaunchConfigService.java b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/launch/IRemoteLaunchConfigService.java
new file mode 100644
index 00000000000..913ab81dd7a
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/core/launch/IRemoteLaunchConfigService.java
@@ -0,0 +1,56 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.core.launch;
+
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.ILaunchConfigurationType;
+import org.eclipse.remote.core.IRemoteConnection;
+
+/**
+ * Manages and persists the mapping between launch configurations and
+ * remote connections that they run on. Each launch configuration has an
+ * active remote connection.
+ *
+ * @since 2.0
+ */
+public interface IRemoteLaunchConfigService {
+
+ /**
+ * Sets the active remote connection for the given launch configuration.
+ *
+ * @param launchConfig launch configuration
+ * @param connection active remote connection
+ */
+ void setActiveConnection(ILaunchConfiguration launchConfig, IRemoteConnection connection);
+
+ /**
+ * Gets the active remote connection for the given launch configuration
+ * @param launchConfig launch configuration
+ * @return active remote connection
+ */
+ IRemoteConnection getActiveConnection(ILaunchConfiguration launchConfig);
+
+ /**
+ * For a given launch configuration type, get the remote connection that was last
+ * used by a launch configuration of that type.
+ *
+ * This is used for new launch configurations with the assumption that the user
+ * will want to use the same remote connection.
+ *
+ * @param launchConfigType launch configuration type
+ * @return last active remote configuration
+ */
+ IRemoteConnection getLastActiveConnection(ILaunchConfigurationType launchConfigType);
+
+}
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/RemoteConnection.java b/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/RemoteConnection.java
new file mode 100644
index 00000000000..015843de9b9
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/RemoteConnection.java
@@ -0,0 +1,214 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.internal.core;
+
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.ListenerList;
+import org.eclipse.equinox.security.storage.ISecurePreferences;
+import org.eclipse.equinox.security.storage.StorageException;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteConnectionChangeListener;
+import org.eclipse.remote.core.IRemoteConnectionControlService;
+import org.eclipse.remote.core.IRemoteConnectionPropertyService;
+import org.eclipse.remote.core.IRemoteConnectionType;
+import org.eclipse.remote.core.IRemoteConnectionWorkingCopy;
+import org.eclipse.remote.core.RemoteConnectionChangeEvent;
+import org.eclipse.remote.core.exception.ConnectionExistsException;
+import org.eclipse.remote.core.exception.RemoteConnectionException;
+import org.osgi.service.prefs.BackingStoreException;
+import org.osgi.service.prefs.Preferences;
+
+/**
+ * The standard root class for remote connections. Implements common hook up
+ * with the remote services and the remote services manager as well as handling
+ * for services.
+ */
+public class RemoteConnection implements IRemoteConnection {
+
+ private final RemoteConnectionType connectionType;
+ private String name;
+
+ private final Map<Class<? extends Service>, Service> servicesMap = new HashMap<>();
+
+ private final ListenerList fListeners = new ListenerList();
+
+ final static String EMPTY_STRING = ""; //$NON-NLS-1$
+
+ public RemoteConnection(RemoteConnectionType connectionType, String name) {
+ this.connectionType = connectionType;
+ this.name = name;
+ }
+
+ @Override
+ public IRemoteConnectionType getConnectionType() {
+ return connectionType;
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public <T extends Service> T getService(Class<T> service) {
+ T obj = (T) servicesMap.get(service);
+ if (obj == null) {
+ obj = connectionType.getConnectionService(this, service);
+ if (obj != null) {
+ servicesMap.put(service, obj);
+ }
+ }
+
+ return obj;
+ }
+
+ @Override
+ public <T extends Service> boolean hasService(Class<T> service) {
+ return servicesMap.get(service.getName()) != null || connectionType.hasConnectionService(service);
+ }
+
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * Called from working copy when name has changed.
+ *
+ * @param name
+ * the new name
+ */
+ void rename(String newName) throws ConnectionExistsException {
+ try {
+ // Copy the old preferences over and remove the old node
+ if (connectionType.getPreferenceNode().nodeExists(newName)) {
+ throw new ConnectionExistsException(newName);
+ }
+
+ Preferences newPrefs = connectionType.getPreferenceNode().node(URLEncoder.encode(newName, "UTF-8"));
+ Preferences oldPrefs = getPreferences();
+ for (String key : oldPrefs.keys()) {
+ newPrefs.put(key, oldPrefs.get(key, null));
+ }
+
+ oldPrefs.removeNode();
+ } catch (BackingStoreException | UnsupportedEncodingException e) {
+ RemoteCorePlugin.log(e);
+ }
+
+ this.name = newName;
+ }
+
+ Preferences getPreferences() {
+ try {
+ return connectionType.getPreferenceNode().node(URLEncoder.encode(name, "UTF-8")); //$NON-NLS-1$
+ } catch (UnsupportedEncodingException e) {
+ // Should not happen!
+ throw new RuntimeException(e);
+ }
+ }
+
+ ISecurePreferences getSecurePreferences() {
+ try {
+ return connectionType.getSecurePreferencesNode().node(URLEncoder.encode(name, "UTF-8")); //$NON-NLS-1$
+ } catch (UnsupportedEncodingException e) {
+ // Should not happen!
+ throw new RuntimeException(e);
+ }
+ }
+
+ @Override
+ public String getAttribute(String key) {
+ return getPreferences().get(key, EMPTY_STRING);
+ }
+
+ @Override
+ public String getSecureAttribute(String key) {
+ try {
+ return getSecurePreferences().get(key, EMPTY_STRING);
+ } catch (StorageException e) {
+ RemoteCorePlugin.log(e);
+ return EMPTY_STRING;
+ }
+ }
+
+ @Override
+ public IRemoteConnectionWorkingCopy getWorkingCopy() {
+ return new RemoteConnectionWorkingCopy(this);
+ }
+
+ @Override
+ public String getProperty(String key) {
+ IRemoteConnectionPropertyService propertyService = getService(IRemoteConnectionPropertyService.class);
+ if (propertyService != null) {
+ return propertyService.getProperty(key);
+ } else {
+ return null;
+ }
+ }
+
+ @Override
+ public void open(IProgressMonitor monitor) throws RemoteConnectionException {
+ IRemoteConnectionControlService controlService = getService(IRemoteConnectionControlService.class);
+ if (controlService != null) {
+ controlService.open(monitor);
+ }
+ }
+
+ @Override
+ public void close() {
+ IRemoteConnectionControlService controlService = getService(IRemoteConnectionControlService.class);
+ if (controlService != null) {
+ controlService.close();
+ }
+ }
+
+ @Override
+ public boolean isOpen() {
+ IRemoteConnectionControlService controlService = getService(IRemoteConnectionControlService.class);
+ if (controlService != null) {
+ return controlService.isOpen();
+ } else {
+ // default is always open
+ return true;
+ }
+ }
+
+ @Override
+ public void addConnectionChangeListener(IRemoteConnectionChangeListener listener) {
+ fListeners.add(listener);
+ }
+
+ @Override
+ public void removeConnectionChangeListener(IRemoteConnectionChangeListener listener) {
+ fListeners.remove(listener);
+ }
+
+ @Override
+ public void fireConnectionChangeEvent(final int type) {
+ RemoteConnectionChangeEvent event = new RemoteConnectionChangeEvent(this, type);
+ for (Object listener : fListeners.getListeners()) {
+ ((IRemoteConnectionChangeListener) listener).connectionChanged(event);
+ }
+ // fire to the global listeners too
+ connectionType.getRemoteServicesManager().fireRemoteConnectionChangeEvent(event);
+ }
+
+ @Override
+ public String toString() {
+ return name + " - " + connectionType.getName(); //$NON-NLS-1$
+ }
+
+}
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/RemoteConnectionType.java b/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/RemoteConnectionType.java
new file mode 100644
index 00000000000..3bfe570ea18
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/RemoteConnectionType.java
@@ -0,0 +1,370 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.internal.core;
+
+import java.io.UnsupportedEncodingException;
+import java.net.URI;
+import java.net.URLDecoder;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.equinox.security.storage.ISecurePreferences;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteConnectionType;
+import org.eclipse.remote.core.IRemoteConnectionWorkingCopy;
+import org.eclipse.remote.core.IRemoteProcess;
+import org.eclipse.remote.core.IRemoteServicesManager;
+import org.eclipse.remote.core.RemoteConnectionChangeEvent;
+import org.eclipse.remote.core.exception.ConnectionExistsException;
+import org.eclipse.remote.core.exception.RemoteConnectionException;
+import org.osgi.service.prefs.BackingStoreException;
+import org.osgi.service.prefs.Preferences;
+
+/**
+ * The implementation for a given remote services collection.n
+ */
+public class RemoteConnectionType implements IRemoteConnectionType {
+
+ private final RemoteServicesManager remoteServicesManager;
+ private final String id;
+ private final String name;
+ private final String scheme;
+ private final boolean canAdd;
+ private final boolean canEdit;
+ private final boolean canRemove;
+
+ private final Map<Class<? extends Service>, Object> serviceMap = new HashMap<>();
+ private final Map<String, IConfigurationElement> serviceDefinitionMap = new HashMap<>();
+ private final Map<String, IConfigurationElement> connectionServiceDefinitionMap = new HashMap<>();
+ private final Map<String, IConfigurationElement> processServiceDefinitionMap = new HashMap<>();
+
+ private final Map<String, RemoteConnection> connections = new HashMap<>();
+
+ public RemoteConnectionType(IConfigurationElement ce, RemoteServicesManager manager) {
+ this.remoteServicesManager = manager;
+ id = ce.getAttribute("id"); //$NON-NLS-1$
+ name = ce.getAttribute("name"); //$NON-NLS-1$
+ scheme = ce.getAttribute("scheme"); //$NON-NLS-1$
+
+ // capabilities, default is true for all of these
+ String canAddStr = ce.getAttribute("canAdd"); //$NON-NLS-1$
+ canAdd = canAddStr != null ? Boolean.parseBoolean(canAddStr) : true;
+
+ String canEditStr = ce.getAttribute("canEdit"); //$NON-NLS-1$
+ canEdit = canEditStr != null ? Boolean.parseBoolean(canEditStr) : true;
+
+ String canRemoveStr = ce.getAttribute("canRemove"); //$NON-NLS-1$
+ canRemove = canRemoveStr != null ? Boolean.parseBoolean(canRemoveStr) : true;
+
+ // load up existing connections
+ try {
+ for (String nodeName : getPreferenceNode().childrenNames()) {
+ String connectionName = URLDecoder.decode(nodeName, "UTF-8");
+ connections.put(connectionName, new RemoteConnection(this, connectionName));
+ }
+ } catch (BackingStoreException | UnsupportedEncodingException e) {
+ RemoteCorePlugin.log(e);
+ }
+ }
+
+ Preferences getPreferenceNode() {
+ return remoteServicesManager.getPreferenceNode().node(id);
+ }
+
+ ISecurePreferences getSecurePreferencesNode() {
+ return remoteServicesManager.getSecurePreferenceNode().node(id);
+ }
+
+ @Override
+ public IRemoteServicesManager getRemoteServicesManager() {
+ return remoteServicesManager;
+ }
+
+ @Override
+ public String getId() {
+ return id;
+ }
+
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public String getScheme() {
+ return scheme;
+ }
+
+ @Override
+ public boolean canAdd() {
+ return canAdd;
+ }
+
+ @Override
+ public boolean canEdit() {
+ return canEdit;
+ }
+
+ @Override
+ public boolean canRemove() {
+ return canRemove;
+ }
+
+ @Override
+ public <T extends Service> T getService(Class<T> service) {
+ synchronized (serviceDefinitionMap) {
+ @SuppressWarnings("unchecked")
+ T obj = (T) serviceMap.get(service);
+ if (obj == null) {
+ IConfigurationElement ce = serviceDefinitionMap.get(service.getName());
+ if (ce != null) {
+ try {
+ Service.Factory factory = (Service.Factory) ce.createExecutableExtension("factory"); //$NON-NLS-1$
+ if (factory != null) {
+ obj = factory.getService(this, service);
+ serviceMap.put(service, obj);
+ }
+ } catch (CoreException e) {
+ RemoteCorePlugin.log(e.getStatus());
+ }
+ }
+ }
+ return obj;
+ }
+ }
+
+ @Override
+ public List<String> getServices() {
+ synchronized (serviceDefinitionMap) {
+ return new ArrayList<>(serviceDefinitionMap.keySet());
+ }
+ }
+
+ @Override
+ public <T extends Service> boolean hasService(Class<T> service) {
+ synchronized (serviceDefinitionMap) {
+ return serviceDefinitionMap.get(service.getName()) != null;
+ }
+ }
+
+ /**
+ * Called from the connection to get a service object for that connection.
+ *
+ * @param connection
+ * the connection to which the service applies
+ * @param service
+ * the interface the service must implement
+ * @return the service object
+ * @throws CoreException
+ */
+ public <T extends IRemoteConnection.Service> T getConnectionService(IRemoteConnection connection,
+ Class<T> service) {
+ synchronized (connectionServiceDefinitionMap) {
+ IConfigurationElement ce = connectionServiceDefinitionMap.get(service.getName());
+ if (ce != null) {
+ try {
+ IRemoteConnection.Service.Factory factory = (IRemoteConnection.Service.Factory) ce
+ .createExecutableExtension("factory"); //$NON-NLS-1$
+ if (factory != null) {
+ return factory.getService(connection, service);
+ }
+ } catch (CoreException e) {
+ RemoteCorePlugin.log(e.getStatus());
+ }
+ }
+ return null;
+ }
+ }
+
+ @Override
+ public List<String> getConnectionServices() {
+ synchronized (connectionServiceDefinitionMap) {
+ return new ArrayList<>(connectionServiceDefinitionMap.keySet());
+ }
+ }
+
+ @Override
+ public <T extends IRemoteConnection.Service> boolean hasConnectionService(Class<T> service) {
+ synchronized (connectionServiceDefinitionMap) {
+ return connectionServiceDefinitionMap.get(service.getName()) != null;
+ }
+ }
+
+ /**
+ * Called from the remote process to get a service object for that process.
+ *
+ * @param process
+ * the process to which the service applies
+ * @param service
+ * the interface the service must implement
+ * @return the service object
+ * @throws CoreException
+ */
+ public <T extends IRemoteProcess.Service> T getProcessService(IRemoteProcess process, Class<T> service) {
+ synchronized (processServiceDefinitionMap) {
+ IConfigurationElement ce = processServiceDefinitionMap.get(service.getName());
+ if (ce != null) {
+ try {
+ IRemoteProcess.Service.Factory factory = (IRemoteProcess.Service.Factory) ce
+ .createExecutableExtension("factory"); //$NON-NLS-1$
+ if (factory != null) {
+ return factory.getService(process, service);
+ }
+ } catch (CoreException e) {
+ RemoteCorePlugin.log(e.getStatus());
+ }
+ }
+ return null;
+ }
+ }
+
+ @Override
+ public List<String> getProcessServices() {
+ synchronized (processServiceDefinitionMap) {
+ return new ArrayList<>(processServiceDefinitionMap.keySet());
+ }
+ }
+
+ @Override
+ public <T extends IRemoteProcess.Service> boolean hasProcessService(Class<T> service) {
+ synchronized (processServiceDefinitionMap) {
+ return processServiceDefinitionMap.get(service.getName()) != null;
+ }
+ }
+
+ /**
+ * Called from the remote service manager to register a service extension for
+ * this remote services implementation
+ *
+ * @param ce
+ * the extension element defining the service
+ */
+ public void addService(IConfigurationElement ce) {
+ String serviceName = ce.getAttribute("service"); //$NON-NLS-1$
+ String name = ce.getName();
+ switch (name) {
+ case "connectionTypeService": //$NON-NLS-1$
+ serviceDefinitionMap.put(serviceName, ce);
+ break;
+ case "connectionService": //$NON-NLS-1$
+ connectionServiceDefinitionMap.put(serviceName, ce);
+ break;
+ case "processService": //$NON-NLS-1$
+ processServiceDefinitionMap.put(serviceName, ce);
+ break;
+ }
+ }
+
+ /**
+ * Signal connection has been added.
+ *
+ * @since 2.0
+ */
+ protected void connectionAdded(final IRemoteConnection connection) {
+ RemoteConnectionChangeEvent event = new RemoteConnectionChangeEvent(connection,
+ RemoteConnectionChangeEvent.CONNECTION_ADDED);
+ remoteServicesManager.fireRemoteConnectionChangeEvent(event);
+ }
+
+ /**
+ * Signal a connection is about to be removed.
+ *
+ * @since 2.0
+ */
+ protected void connectionRemoved(final IRemoteConnection connection) {
+ RemoteConnectionChangeEvent event = new RemoteConnectionChangeEvent(connection,
+ RemoteConnectionChangeEvent.CONNECTION_REMOVED);
+ remoteServicesManager.fireRemoteConnectionChangeEvent(event);
+ }
+
+ @Override
+ public IRemoteConnection getConnection(String name) {
+ synchronized (connections) {
+ return connections.get(name);
+ }
+ }
+
+ @Override
+ public IRemoteConnection getConnection(URI uri) {
+ synchronized (connections) {
+ IRemoteConnection connection = connections.get(uri.getAuthority());
+ if (connection != null) {
+ return connection;
+ }
+
+ // If it's a file: scheme we must be the local connection type, just return our
+ // hopefully one connection, the Local connection.
+ if (uri.getScheme().equals("file") && !connections.isEmpty()) { //$NON-NLS-1$
+ return connections.values().iterator().next();
+ }
+
+ return null;
+ }
+ }
+
+ @Override
+ public List<IRemoteConnection> getConnections() {
+ synchronized (connections) {
+ return new ArrayList<>(connections.values());
+ }
+ }
+
+ @Override
+ public IRemoteConnectionWorkingCopy newConnection(String name) throws RemoteConnectionException {
+ synchronized (connections) {
+ if (connections.containsKey(name)) {
+ throw new ConnectionExistsException(name);
+ }
+ return new RemoteConnectionWorkingCopy(this, name);
+ }
+ }
+
+ void addConnection(RemoteConnection remoteConnection) {
+ synchronized (connections) {
+ connections.put(remoteConnection.getName(), remoteConnection);
+ }
+ }
+
+ void removeConnection(String name) {
+ synchronized (connections) {
+ connections.remove(name);
+ }
+ }
+
+ @Override
+ public void removeConnection(IRemoteConnection connection) throws RemoteConnectionException {
+ synchronized (connections) {
+ if (connection instanceof RemoteConnection) {
+ connection.close();
+ RemoteConnection conn = (RemoteConnection) connection;
+ try {
+ conn.getPreferences().removeNode();
+ } catch (BackingStoreException e) {
+ throw new RemoteConnectionException(e);
+ }
+ conn.getSecurePreferences().removeNode();
+ connections.remove(conn.getName());
+ connection.fireConnectionChangeEvent(RemoteConnectionChangeEvent.CONNECTION_REMOVED);
+ } else {
+ RemoteCorePlugin
+ .log("Wrong class for " + connection.getName() + ", was " + connection.getClass().getName()); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ }
+ }
+
+}
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/RemoteConnectionWorkingCopy.java b/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/RemoteConnectionWorkingCopy.java
new file mode 100644
index 00000000000..e304bb3d69d
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/RemoteConnectionWorkingCopy.java
@@ -0,0 +1,314 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.internal.core;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.equinox.security.storage.ISecurePreferences;
+import org.eclipse.equinox.security.storage.StorageException;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteConnectionChangeListener;
+import org.eclipse.remote.core.IRemoteConnectionControlService;
+import org.eclipse.remote.core.IRemoteConnectionPropertyService;
+import org.eclipse.remote.core.IRemoteConnectionType;
+import org.eclipse.remote.core.IRemoteConnectionWorkingCopy;
+import org.eclipse.remote.core.RemoteConnectionChangeEvent;
+import org.eclipse.remote.core.exception.RemoteConnectionException;
+import org.osgi.service.prefs.BackingStoreException;
+import org.osgi.service.prefs.Preferences;
+
+public class RemoteConnectionWorkingCopy implements IRemoteConnectionWorkingCopy {
+
+ private RemoteConnection original;
+ private final RemoteConnectionType connectionType;
+ private String newName;
+ private final Map<String, String> newAttributes = new HashMap<>();
+ private final Map<String, String> newSecureAttributes = new HashMap<>();
+ private final List<IRemoteConnectionChangeListener> newListeners = new ArrayList<>();
+
+ /**
+ * New Connection.
+ */
+ public RemoteConnectionWorkingCopy(RemoteConnectionType connectionType, String name) {
+ this.connectionType = connectionType;
+ this.newName = name;
+ }
+
+ /**
+ * Edit Connection
+ */
+ public RemoteConnectionWorkingCopy(RemoteConnection original) {
+ this.original = original;
+ this.connectionType = (RemoteConnectionType) original.getConnectionType();
+ }
+
+ @Override
+ public String getName() {
+ if (newName != null) {
+ return newName;
+ }
+
+ if (original != null) {
+ return original.getName();
+ }
+
+ return null;
+ }
+
+ @Override
+ public void setName(String name) {
+ // set it only if it's changed
+ if (original == null || !name.equals(original.getName())) {
+ newName = name;
+ }
+ }
+
+ @Override
+ public String getAttribute(String key) {
+ String value = newAttributes.get(key);
+ if (value != null) {
+ return value;
+ }
+
+ if (original != null) {
+ return original.getAttribute(key);
+ }
+
+ return RemoteConnection.EMPTY_STRING;
+ }
+
+ @Override
+ public void setAttribute(String key, String value) {
+ // set only if it's changed or value is null
+ if (original == null || value == null || !value.equals(original.getAttribute(key))) {
+ newAttributes.put(key, value);
+ }
+ }
+
+ @Override
+ public String getSecureAttribute(String key) {
+ String value = newSecureAttributes.get(key);
+ if (value != null) {
+ return value;
+ }
+
+ if (original != null) {
+ return original.getSecureAttribute(key);
+ }
+
+ return RemoteConnection.EMPTY_STRING;
+ }
+
+ @Override
+ public void setSecureAttribute(String key, String value) {
+ // set only if it's changed or value is null
+ if (original == null || value == null || !value.equals(original.getSecureAttribute(key))) {
+ newSecureAttributes.put(key, value);
+ }
+ }
+
+ @Override
+ public void addConnectionChangeListener(IRemoteConnectionChangeListener listener) {
+ if (original != null) {
+ original.addConnectionChangeListener(listener);
+ } else {
+ newListeners.add(listener);
+ }
+ }
+
+ @Override
+ public void removeConnectionChangeListener(IRemoteConnectionChangeListener listener) {
+ if (original != null) {
+ original.removeConnectionChangeListener(listener);
+ } else {
+ newListeners.remove(listener);
+ }
+ }
+
+ @Override
+ public void fireConnectionChangeEvent(int type) {
+ if (original != null && type != RemoteConnectionChangeEvent.CONNECTION_RENAMED) {
+ original.fireConnectionChangeEvent(type);
+ } else {
+ RemoteConnectionChangeEvent event = new RemoteConnectionChangeEvent(this, type);
+ for (IRemoteConnectionChangeListener listener : newListeners) {
+ listener.connectionChanged(event);
+ }
+ connectionType.getRemoteServicesManager().fireRemoteConnectionChangeEvent(event);
+ }
+ }
+
+ @Override
+ public IRemoteConnectionType getConnectionType() {
+ return connectionType;
+ }
+
+ @Override
+ public IRemoteConnectionWorkingCopy getWorkingCopy() {
+ return this;
+ }
+
+ @Override
+ public <T extends Service> T getService(Class<T> service) {
+ return connectionType.getConnectionService(this, service);
+ }
+
+ @Override
+ public <T extends Service> boolean hasService(Class<T> service) {
+ if (original != null) {
+ return original.hasService(service);
+ } else {
+ return connectionType.hasConnectionService(service);
+ }
+ }
+
+ @Override
+ public IRemoteConnection getOriginal() {
+ return original;
+ }
+
+ @Override
+ public boolean isDirty() {
+ return newName != null || !newAttributes.isEmpty() || !newSecureAttributes.isEmpty();
+ }
+
+ @Override
+ public IRemoteConnection save() throws RemoteConnectionException {
+ if (newName != null && original != null) {
+ // rename, delete the old one
+ fireConnectionChangeEvent(RemoteConnectionChangeEvent.CONNECTION_RENAMED);
+ connectionType.removeConnection(original.getName());
+ original.rename(newName);
+ }
+
+ boolean added = false;
+ if (original == null) {
+ original = new RemoteConnection(connectionType, newName);
+ added = true;
+ }
+
+ Preferences prefs = original.getPreferences();
+ for (Map.Entry<String, String> entry : newAttributes.entrySet()) {
+ String value = entry.getValue();
+ if (value != null && !value.isEmpty()) {
+ prefs.put(entry.getKey(), value);
+ } else {
+ prefs.remove(entry.getKey());
+ }
+ }
+ try {
+ prefs.flush();
+ } catch (BackingStoreException e1) {
+ throw new RemoteConnectionException(e1);
+ }
+
+ ISecurePreferences securePrefs = original.getSecurePreferences();
+ for (Map.Entry<String, String> entry : newSecureAttributes.entrySet()) {
+ String value = entry.getValue();
+ if (value != null && !value.isEmpty()) {
+ try {
+ securePrefs.put(entry.getKey(), value, true);
+ } catch (StorageException e) {
+ throw new RemoteConnectionException(e);
+ }
+ } else {
+ securePrefs.remove(entry.getKey());
+ }
+ }
+ try {
+ securePrefs.flush();
+ } catch (IOException e) {
+ throw new RemoteConnectionException(e);
+ }
+
+ if (newAttributes.size() > 0 || newSecureAttributes.size() > 0) {
+ original.fireConnectionChangeEvent(RemoteConnectionChangeEvent.ATTRIBUTES_CHANGED);
+ }
+
+ /*
+ * Reset state for isDirty()
+ */
+ newAttributes.clear();
+ newSecureAttributes.clear();
+ newName = null;
+
+ connectionType.addConnection(original);
+ if (added) {
+ original.fireConnectionChangeEvent(RemoteConnectionChangeEvent.CONNECTION_ADDED);
+ }
+ return original;
+ }
+
+ @Override
+ public void open(IProgressMonitor monitor) throws RemoteConnectionException {
+ if (original != null) {
+ original.open(monitor);
+ } else {
+ IRemoteConnectionControlService controlService = connectionType.getConnectionService(this,
+ IRemoteConnectionControlService.class);
+ if (controlService != null) {
+ controlService.open(monitor);
+ }
+ }
+ }
+
+ @Override
+ public void close() {
+ if (original != null) {
+ original.close();
+ } else {
+ IRemoteConnectionControlService controlService = connectionType.getConnectionService(this,
+ IRemoteConnectionControlService.class);
+ if (controlService != null) {
+ controlService.close();
+ }
+ }
+ }
+
+ @Override
+ public boolean isOpen() {
+ if (original != null) {
+ return original.isOpen();
+ }
+
+ IRemoteConnectionControlService controlService = connectionType.getConnectionService(this,
+ IRemoteConnectionControlService.class);
+ if (controlService != null) {
+ return controlService.isOpen();
+ }
+
+ return true;
+ }
+
+ @Override
+ public String getProperty(String key) {
+ if (original != null) {
+ return original.getProperty(key);
+ }
+
+ IRemoteConnectionPropertyService propertyService = connectionType.getConnectionService(this,
+ IRemoteConnectionPropertyService.class);
+ if (propertyService != null) {
+ return propertyService.getProperty(key);
+ }
+
+ return null;
+ }
+
+}
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/RemoteCorePlugin.java b/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/RemoteCorePlugin.java
new file mode 100644
index 00000000000..b115c3f34fe
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/RemoteCorePlugin.java
@@ -0,0 +1,142 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2010 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.internal.core;
+
+import org.eclipse.core.resources.ISaveContext;
+import org.eclipse.core.resources.ISaveParticipant;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Plugin;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.remote.core.IRemoteServicesManager;
+import org.eclipse.remote.core.launch.IRemoteLaunchConfigService;
+import org.eclipse.remote.internal.core.launch.RemoteLaunchConfigService;
+import org.eclipse.remote.internal.core.preferences.Preferences;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class RemoteCorePlugin extends Plugin {
+ private static final String PLUGIN_ID = "org.eclipse.remote.core"; //$NON-NLS-1$
+
+ // The shared instance
+ private static RemoteCorePlugin plugin;
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static RemoteCorePlugin getDefault() {
+ return plugin;
+ }
+
+ /**
+ * Get unique identifier for this plugin
+ */
+ public static String getUniqueIdentifier() {
+ if (getDefault() == null) {
+ return PLUGIN_ID;
+ }
+ return getDefault().getBundle().getSymbolicName();
+ }
+
+ /**
+ * Logs the specified status with this plug-in's log.
+ *
+ * @param status
+ * status to log
+ */
+ public static void log(IStatus status) {
+ getDefault().getLog().log(status);
+ }
+
+ /**
+ * Logs an internal error with the specified message.
+ *
+ * @param message
+ * the error message to log
+ */
+ public static void log(String message) {
+ log(new Status(IStatus.ERROR, getUniqueIdentifier(), IStatus.ERROR, message, null));
+ }
+
+ /**
+ * Logs an internal error with the specified throwable
+ *
+ * @param e
+ * the exception to be logged
+ */
+ public static void log(Throwable e) {
+ log(new Status(IStatus.ERROR, getUniqueIdentifier(), IStatus.ERROR, e.getMessage(), e));
+ }
+
+ /**
+ * Return the OSGi service with the given service interface.
+ *
+ * @param service service interface
+ * @return the specified service or null if it's not registered
+ */
+ public static <T> T getService(Class<T> service) {
+ BundleContext context = plugin.getBundle().getBundleContext();
+ ServiceReference<T> ref = context.getServiceReference(service);
+ return ref != null ? context.getService(ref) : null;
+ }
+
+ /**
+ * The constructor
+ */
+ public RemoteCorePlugin() {
+ }
+
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ context.registerService(IRemoteServicesManager.class, new RemoteServicesManager(), null);
+ context.registerService(IRemoteLaunchConfigService.class, new RemoteLaunchConfigService(), null);
+ RemoteDebugOptions.configure(context);
+ ResourcesPlugin.getWorkspace().addSaveParticipant(getUniqueIdentifier(), new ISaveParticipant() {
+ @Override
+ public void saving(ISaveContext saveContext) throws CoreException {
+ Preferences.savePreferences();
+ }
+
+ @Override
+ public void rollback(ISaveContext saveContext) {
+ // Do nothing
+ }
+
+ @Override
+ public void prepareToSave(ISaveContext saveContext) throws CoreException {
+ // Do nothing
+ }
+
+ @Override
+ public void doneSaving(ISaveContext saveContext) {
+ // Do nothing
+ }
+ });
+ }
+
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ Preferences.savePreferences();
+ plugin = null;
+ super.stop(context);
+ }
+}
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/RemoteDebugOptions.java b/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/RemoteDebugOptions.java
new file mode 100644
index 00000000000..9fa9cda9e85
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/RemoteDebugOptions.java
@@ -0,0 +1,115 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Sage Electronic Engineering, LLC. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Jason Litton (Sage Electronic Engineering, LLC) - initial API and implementation
+ * Greg Watson (IBM) - adapted for remote core
+ *******************************************************************************/
+
+package org.eclipse.remote.internal.core;
+
+import java.util.Hashtable;
+
+import org.eclipse.osgi.service.debug.DebugOptions;
+import org.eclipse.osgi.service.debug.DebugOptionsListener;
+import org.eclipse.osgi.service.debug.DebugTrace;
+import org.eclipse.osgi.util.NLS;
+import org.osgi.framework.BundleContext;
+
+/**
+ * Hooks our debug options to the Platform trace functonality.
+ * In essence, we can open Window -> Preferences -> Tracing
+ * and turn on debug options for this package. The debug output
+ * will come out on the console and can be saved directly to
+ * a file. Classes that need to be debugged can call into
+ * RemoteDebugOptions to get debug flags. If new flags need to be
+ * created, they will need to have a unique identifier and added to
+ * the .options file in this plugin
+ */
+public class RemoteDebugOptions implements DebugOptionsListener {
+
+ public static final String DEBUG_REMOTE_COMMANDS = "/debug/commands"; //$NON-NLS-1$
+
+ private static DebugTrace fDebugTrace;
+ private static DebugOptions fDebugOptions;
+ private static RemoteDebugOptions fRemoteDebugOptions;
+
+ public static void configure(BundleContext context) {
+ if (fRemoteDebugOptions == null) {
+ fRemoteDebugOptions = new RemoteDebugOptions(context);
+ }
+ }
+
+ private RemoteDebugOptions(BundleContext context) {
+ Hashtable<String, String> props = new Hashtable<>(2);
+ props.put(DebugOptions.LISTENER_SYMBOLICNAME, RemoteCorePlugin.getUniqueIdentifier());
+ context.registerService(DebugOptionsListener.class.getName(), this, props);
+ }
+
+ @Override
+ public void optionsChanged(DebugOptions options) {
+ fDebugOptions = options;
+ fDebugTrace = options.newDebugTrace(RemoteCorePlugin.getUniqueIdentifier());
+ }
+
+ public static boolean isDebugging() {
+ return RemoteCorePlugin.getDefault().isDebugging();
+ }
+
+ public static boolean isDebugging(String option) {
+ if (fDebugOptions == null) {
+ return false;
+ }
+ return fDebugOptions.getBooleanOption(RemoteCorePlugin.getUniqueIdentifier() + option, false);
+ }
+
+ public static void setDebugging(String option, boolean value) {
+ if (fDebugOptions != null) {
+ if (value) {
+ fDebugOptions.setDebugEnabled(true);
+ }
+ fDebugOptions.setOption(option, Boolean.toString(value));
+ }
+ }
+
+ /**
+ * Prints the given message to System.out and to the OSGi tracing (if enabled)
+ *
+ * @param message
+ * the message or <code>null</code>
+ */
+ public static void trace(String message) {
+ trace(null, message);
+ }
+
+ /**
+ * Prints the given message to System.out and to the OSGi tracing (if enabled)
+ *
+ * @param option
+ * the option to determine if tracing is displayed
+ * @param message
+ * the message or <code>null</code>
+ * @param arguments
+ * optional arguments for the message or <code>null</code>
+ */
+ public static void trace(String option, String message, String... arguments) {
+ String traceMsg = message;
+ if (arguments.length > 0) {
+ traceMsg = NLS.bind(message, arguments);
+ }
+ if ((option != null && isDebugging(option)) || isDebugging()) {
+ System.out.println(traceMsg);
+ if (fDebugTrace != null) {
+ fDebugTrace.trace(option, traceMsg, null);
+ }
+ }
+ }
+
+}
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/RemotePath.java b/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/RemotePath.java
new file mode 100644
index 00000000000..ce63b9bde3d
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/RemotePath.java
@@ -0,0 +1,1216 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2015 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ * Patrick Tasse - Add extra constructor to Path class (bug 454959)
+ * Martin Oberhuber - [468889] Copy from equinox.common/org.eclipse.core.runtime
+ *******************************************************************************/
+package org.eclipse.remote.internal.core;
+
+import java.io.File;
+import java.util.Arrays;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.IPath;
+
+/**
+ * The Eclipse Mars implementation of <code>org.eclipse.core.runtime.Path</code>.
+ *
+ * Cloned from org.eclipse.equinox.common. This class should be removed when
+ * Eclipse older than Mars no longer needs to be supported.
+ *
+ * @see org.eclipse.core.runtime.Path
+ * @noextend This class is not intended to be subclassed by clients.
+ */
+public class RemotePath implements IPath, Cloneable {
+ /** masks for flag values */
+ private static final int HAS_LEADING = 1;
+ private static final int IS_UNC = 2;
+ private static final int HAS_TRAILING = 4;
+ private static final int IS_FOR_WINDOWS = 8;
+
+ private static final int ALL_SEPARATORS = HAS_LEADING | IS_UNC | HAS_TRAILING;
+ private static final int ALL_FLAGS = HAS_LEADING | IS_UNC | HAS_TRAILING | IS_FOR_WINDOWS;
+
+ /** Constant value indicating if the current platform is Windows */
+ private static final boolean RUNNING_ON_WINDOWS = java.io.File.separatorChar == '\\';
+
+ /** Constant empty string value. */
+ private static final String EMPTY_STRING = ""; //$NON-NLS-1$
+
+ /** Constant value indicating no segments */
+ private static final String[] NO_SEGMENTS = new String[0];
+
+ /** Constant value containing the empty path with no device on the local file system. */
+ public static final RemotePath EMPTY = new RemotePath(EMPTY_STRING);
+
+ /** Mask for all bits that are involved in the hash code */
+ private static final int HASH_MASK = ~(HAS_TRAILING | IS_FOR_WINDOWS);
+
+ /** Constant root path string (<code>"/"</code>). */
+ private static final String ROOT_STRING = "/"; //$NON-NLS-1$
+
+ /** Constant value containing the root path with no device on the local file system. */
+ public static final RemotePath ROOT = new RemotePath(ROOT_STRING);
+
+ /** The device id string. May be null if there is no device. */
+ private String device = null;
+
+ //Private implementation note: the segments array and flag bitmap
+ //are never modified, so that they can be shared between path instances
+
+ /** The path segments */
+ private String[] segments;
+
+ /** flags indicating separators (has leading, is UNC, has trailing, is for Windows) */
+ private int flags;
+
+ /**
+ * Constructs a new path from the given string path.
+ * The string path must represent a valid file system path
+ * on the local file system.
+ * The path is canonicalized and double slashes are removed
+ * except at the beginning. (to handle UNC paths). All forward
+ * slashes ('/') are treated as segment delimiters, and any
+ * segment and device delimiters for the local file system are
+ * also respected.
+ *
+ * @param pathString the portable string path
+ * @see IPath#toPortableString()
+ * @since 3.1
+ */
+ public static IPath fromOSString(String pathString) {
+ return new RemotePath(pathString);
+ }
+
+ /**
+ * Constructs a new path from the given path string.
+ * The path string must have been produced by a previous
+ * call to <code>IPath.toPortableString</code>.
+ *
+ * @param pathString the portable path string
+ * @see IPath#toPortableString()
+ * @since 3.1
+ */
+ public static IPath fromPortableString(String pathString) {
+ int firstMatch = pathString.indexOf(DEVICE_SEPARATOR) + 1;
+ //no extra work required if no device characters
+ if (firstMatch <= 0)
+ return new RemotePath().initialize(null, pathString, RUNNING_ON_WINDOWS);
+ //if we find a single colon, then the path has a device
+ String devicePart = null;
+ int pathLength = pathString.length();
+ if (firstMatch == pathLength || pathString.charAt(firstMatch) != DEVICE_SEPARATOR) {
+ devicePart = pathString.substring(0, firstMatch);
+ pathString = pathString.substring(firstMatch, pathLength);
+ }
+ //optimize for no colon literals
+ if (pathString.indexOf(DEVICE_SEPARATOR) == -1)
+ return new RemotePath().initialize(devicePart, pathString, RUNNING_ON_WINDOWS);
+ //contract colon literals
+ char[] chars = pathString.toCharArray();
+ int readOffset = 0, writeOffset = 0, length = chars.length;
+ while (readOffset < length) {
+ if (chars[readOffset] == DEVICE_SEPARATOR)
+ if (++readOffset >= length)
+ break;
+ chars[writeOffset++] = chars[readOffset++];
+ }
+ return new RemotePath().initialize(devicePart, new String(chars, 0, writeOffset), RUNNING_ON_WINDOWS);
+ }
+
+ /**
+ * Constructs a new POSIX path from the given string path. The string path
+ * must represent a valid file system path on a POSIX file system. The path
+ * is canonicalized and double slashes are removed except at the beginning
+ * (to handle UNC paths). All forward slashes ('/') are treated as segment
+ * delimiters. This factory method should be used if the string path is for
+ * a POSIX file system.
+ *
+ * @param fullPath the string path
+ * @see #isValidPosixPath(String)
+ * @since 3.7
+ */
+ public static RemotePath forPosix(String fullPath) {
+ return new RemotePath(fullPath, false);
+ }
+
+ /**
+ * Constructs a new Windows path from the given string path. The string path
+ * must represent a valid file system path on the Windows file system. The
+ * path is canonicalized and double slashes are removed except at the
+ * beginning (to handle UNC paths). All forward slashes ('/') are treated as
+ * segment delimiters, and any segment ('\') and device (':') delimiters for
+ * the Windows file system are also respected. This factory method should be
+ * used if the string path is for the Windows file system.
+ *
+ * @param fullPath the string path
+ * @see #isValidWindowsPath(String)
+ * @since 3.7
+ */
+ public static RemotePath forWindows(String fullPath) {
+ return new RemotePath(fullPath, true);
+ }
+
+ /* (Intentionally not included in javadoc)
+ * Private constructor.
+ */
+ private RemotePath() {
+ // not allowed
+ }
+
+ /**
+ * Constructs a new path from the given string path.
+ * The string path must represent a valid file system path
+ * on the local file system.
+ * The path is canonicalized and double slashes are removed
+ * except at the beginning. (to handle UNC paths). All forward
+ * slashes ('/') are treated as segment delimiters, and any
+ * segment and device delimiters for the local file system are
+ * also respected (such as colon (':') and backslash ('\') on some file systems).
+ * This constructor should be used if the string path if for the local file system.
+ *
+ * @param fullPath the string path
+ * @see #isValidPath(String)
+ */
+ public RemotePath(String fullPath) {
+ this(fullPath, RUNNING_ON_WINDOWS);
+ }
+
+ /**
+ * Constructs a new path from the given device id and string path.
+ * The given string path must be valid.
+ * The path is canonicalized and double slashes are removed except
+ * at the beginning (to handle UNC paths). All forward
+ * slashes ('/') are treated as segment delimiters, and any
+ * segment delimiters for the local file system are
+ * also respected (such as backslash ('\') on some file systems).
+ *
+ * @param device the device id
+ * @param path the string path
+ * @see #isValidPath(String)
+ * @see #setDevice(String)
+ */
+ public RemotePath(String device, String path) {
+ if (RUNNING_ON_WINDOWS) {
+ //convert backslash to forward slash
+ path = path.indexOf('\\') == -1 ? path : path.replace('\\', SEPARATOR);
+ }
+ initialize(device, path, RUNNING_ON_WINDOWS);
+ }
+
+ /**
+ * Constructs a new path from the given string path. The string path must
+ * represent a valid file system path on the specified file system. The path
+ * is canonicalized and double slashes are removed except at the beginning
+ * (to handle UNC paths). All forward slashes ('/') are treated as segment
+ * delimiters, and any segment and device delimiters for the specified file
+ * system are also respected (such as colon (':') and backslash ('\') on
+ * Windows).
+ *
+ * @param fullPath the string path
+ * @param forWindows true if the string path is for the Windows file system
+ * @since 3.7
+ */
+ private RemotePath(String fullPath, boolean forWindows) {
+ String devicePart = null;
+ if (forWindows) {
+ //convert backslash to forward slash
+ fullPath = fullPath.indexOf('\\') == -1 ? fullPath : fullPath.replace('\\', SEPARATOR);
+ //extract device
+ int i = fullPath.indexOf(DEVICE_SEPARATOR);
+ if (i != -1) {
+ //remove leading slash from device part to handle output of URL.getFile()
+ int start = fullPath.charAt(0) == SEPARATOR ? 1 : 0;
+ devicePart = fullPath.substring(start, i + 1);
+ fullPath = fullPath.substring(i + 1, fullPath.length());
+ }
+ }
+ initialize(devicePart, fullPath, forWindows);
+ }
+
+ /* (Intentionally not included in javadoc)
+ * Private constructor.
+ */
+ private RemotePath(String device, String[] segments, int flags) {
+ // no segment validations are done for performance reasons
+ this.segments = segments;
+ this.device = device;
+ //hash code is cached in all but the bottom four bits of the flags field
+ this.flags = (computeHashCode() << 4) | (flags & ALL_FLAGS);
+ }
+
+ /* (Intentionally not included in javadoc)
+ * @see IPath#addFileExtension
+ */
+ @Override
+ public IPath addFileExtension(String extension) {
+ if (isRoot() || isEmpty() || hasTrailingSeparator())
+ return this;
+ int len = segments.length;
+ String[] newSegments = new String[len];
+ System.arraycopy(segments, 0, newSegments, 0, len - 1);
+ newSegments[len - 1] = segments[len - 1] + '.' + extension;
+ return new RemotePath(device, newSegments, flags);
+ }
+
+ /* (Intentionally not included in javadoc)
+ * @see IPath#addTrailingSeparator
+ */
+ @Override
+ public IPath addTrailingSeparator() {
+ if (hasTrailingSeparator() || isRoot()) {
+ return this;
+ }
+ //XXX workaround, see 1GIGQ9V
+ if (isEmpty()) {
+ return new RemotePath(device, segments, (flags & IS_FOR_WINDOWS) | HAS_LEADING);
+ }
+ return new RemotePath(device, segments, flags | HAS_TRAILING);
+ }
+
+ /* (Intentionally not included in javadoc)
+ * @see IPath#append(IPath)
+ */
+ @Override
+ public IPath append(IPath tail) {
+ //optimize some easy cases
+ if (tail == null || tail.segmentCount() == 0)
+ return this;
+ //these call chains look expensive, but in most cases they are no-ops
+ //the tail must be for the same platform as this instance
+ if (this.isEmpty() && ((flags & IS_FOR_WINDOWS) == 0) == tail.isValidSegment(":")) //$NON-NLS-1$
+ return tail.setDevice(device).makeRelative().makeUNC(isUNC());
+ if (this.isRoot() && ((flags & IS_FOR_WINDOWS) == 0) == tail.isValidSegment(":")) //$NON-NLS-1$
+ return tail.setDevice(device).makeAbsolute().makeUNC(isUNC());
+
+ //concatenate the two segment arrays
+ int myLen = segments.length;
+ int tailLen = tail.segmentCount();
+ String[] newSegments = new String[myLen + tailLen];
+ System.arraycopy(segments, 0, newSegments, 0, myLen);
+ for (int i = 0; i < tailLen; i++) {
+ newSegments[myLen + i] = tail.segment(i);
+ }
+ //use my leading separators and the tail's trailing separator
+ RemotePath result = new RemotePath(device, newSegments,
+ (flags & (HAS_LEADING | IS_UNC | IS_FOR_WINDOWS)) | (tail.hasTrailingSeparator() ? HAS_TRAILING : 0));
+ String tailFirstSegment = newSegments[myLen];
+ if (tailFirstSegment.equals("..") || tailFirstSegment.equals(".")) { //$NON-NLS-1$ //$NON-NLS-2$
+ result.canonicalize();
+ }
+ return result;
+ }
+
+ /* (Intentionally not included in javadoc)
+ * @see IPath#append(java.lang.String)
+ */
+ @Override
+ public IPath append(String tail) {
+ //optimize addition of a single segment
+ if (tail.indexOf(SEPARATOR) == -1 && tail.indexOf("\\") == -1 && tail.indexOf(DEVICE_SEPARATOR) == -1) { //$NON-NLS-1$
+ int tailLength = tail.length();
+ if (tailLength < 3) {
+ //some special cases
+ if (tailLength == 0 || ".".equals(tail)) { //$NON-NLS-1$
+ return this;
+ }
+ if ("..".equals(tail)) //$NON-NLS-1$
+ return removeLastSegments(1);
+ }
+ //just add the segment
+ int myLen = segments.length;
+ String[] newSegments = new String[myLen + 1];
+ System.arraycopy(segments, 0, newSegments, 0, myLen);
+ newSegments[myLen] = tail;
+ return new RemotePath(device, newSegments, flags & ~HAS_TRAILING);
+ }
+ //go with easy implementation
+ return append(new RemotePath(tail, (flags & IS_FOR_WINDOWS) != 0));
+ }
+
+ /**
+ * Destructively converts this path to its canonical form.
+ * <p>
+ * In its canonical form, a path does not have any
+ * "." segments, and parent references ("..") are collapsed
+ * where possible.
+ * </p>
+ * @return true if the path was modified, and false otherwise.
+ */
+ private boolean canonicalize() {
+ //look for segments that need canonicalizing
+ for (int i = 0, max = segments.length; i < max; i++) {
+ String segment = segments[i];
+ if (segment.charAt(0) == '.' && (segment.equals("..") || segment.equals("."))) { //$NON-NLS-1$ //$NON-NLS-2$
+ //path needs to be canonicalized
+ collapseParentReferences();
+ //paths of length 0 have no trailing separator
+ if (segments.length == 0)
+ flags &= (HAS_LEADING | IS_UNC);
+ //recompute hash because canonicalize affects hash
+ flags = (flags & ALL_FLAGS) | (computeHashCode() << 4);
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /* (Intentionally not included in javadoc)
+ * Clones this object.
+ */
+ @Override
+ public Object clone() {
+ try {
+ return super.clone();
+ } catch (CloneNotSupportedException e) {
+ return null;
+ }
+ }
+
+ /**
+ * Destructively removes all occurrences of ".." segments from this path.
+ */
+ private void collapseParentReferences() {
+ int segmentCount = segments.length;
+ String[] stack = new String[segmentCount];
+ int stackPointer = 0;
+ for (int i = 0; i < segmentCount; i++) {
+ String segment = segments[i];
+ if (segment.equals("..")) { //$NON-NLS-1$
+ if (stackPointer == 0) {
+ // if the stack is empty we are going out of our scope
+ // so we need to accumulate segments. But only if the original
+ // path is relative. If it is absolute then we can't go any higher than
+ // root so simply toss the .. references.
+ if (!isAbsolute())
+ stack[stackPointer++] = segment; //stack push
+ } else {
+ // if the top is '..' then we are accumulating segments so don't pop
+ if ("..".equals(stack[stackPointer - 1])) //$NON-NLS-1$
+ stack[stackPointer++] = ".."; //$NON-NLS-1$
+ else
+ stackPointer--;
+ //stack pop
+ }
+ //collapse current references
+ } else if (!segment.equals(".") || segmentCount == 1) //$NON-NLS-1$
+ stack[stackPointer++] = segment; //stack push
+ }
+ //if the number of segments hasn't changed, then no modification needed
+ if (stackPointer == segmentCount)
+ return;
+ //build the new segment array backwards by popping the stack
+ String[] newSegments = new String[stackPointer];
+ System.arraycopy(stack, 0, newSegments, 0, stackPointer);
+ this.segments = newSegments;
+ }
+
+ /**
+ * Removes duplicate slashes from the given path, with the exception
+ * of leading double slash which represents a UNC path.
+ */
+ private String collapseSlashes(String path) {
+ int length = path.length();
+ // if the path is only 0, 1 or 2 chars long then it could not possibly have illegal
+ // duplicate slashes.
+ if (length < 3)
+ return path;
+ // check for an occurrence of // in the path. Start at index 1 to ensure we skip leading UNC //
+ // If there are no // then there is nothing to collapse so just return.
+ if (path.indexOf("//", 1) == -1) //$NON-NLS-1$
+ return path;
+ // We found an occurrence of // in the path so do the slow collapse.
+ char[] result = new char[path.length()];
+ int count = 0;
+ boolean hasPrevious = false;
+ char[] characters = path.toCharArray();
+ for (int index = 0; index < characters.length; index++) {
+ char c = characters[index];
+ if (c == SEPARATOR) {
+ if (hasPrevious) {
+ // skip double slashes, except for beginning of UNC.
+ // note that a UNC path can't have a device.
+ if (device == null && index == 1) {
+ result[count] = c;
+ count++;
+ }
+ } else {
+ hasPrevious = true;
+ result[count] = c;
+ count++;
+ }
+ } else {
+ hasPrevious = false;
+ result[count] = c;
+ count++;
+ }
+ }
+ return new String(result, 0, count);
+ }
+
+ /* (Intentionally not included in javadoc)
+ * Computes the hash code for this object.
+ */
+ private int computeHashCode() {
+ int hash = device == null ? 17 : device.hashCode();
+ int segmentCount = segments.length;
+ for (int i = 0; i < segmentCount; i++) {
+ //this function tends to given a fairly even distribution
+ hash = hash * 37 + segments[i].hashCode();
+ }
+ return hash;
+ }
+
+ /* (Intentionally not included in javadoc)
+ * Returns the size of the string that will be created by toString or toOSString.
+ */
+ private int computeLength() {
+ int length = 0;
+ if (device != null)
+ length += device.length();
+ if ((flags & HAS_LEADING) != 0)
+ length++;
+ if ((flags & IS_UNC) != 0)
+ length++;
+ //add the segment lengths
+ int max = segments.length;
+ if (max > 0) {
+ for (int i = 0; i < max; i++) {
+ length += segments[i].length();
+ }
+ //add the separator lengths
+ length += max - 1;
+ }
+ if ((flags & HAS_TRAILING) != 0)
+ length++;
+ return length;
+ }
+
+ /* (Intentionally not included in javadoc)
+ * Returns the number of segments in the given path
+ */
+ private int computeSegmentCount(String path) {
+ int len = path.length();
+ if (len == 0 || (len == 1 && path.charAt(0) == SEPARATOR)) {
+ return 0;
+ }
+ int count = 1;
+ int prev = -1;
+ int i;
+ while ((i = path.indexOf(SEPARATOR, prev + 1)) != -1) {
+ if (i != prev + 1 && i != len) {
+ ++count;
+ }
+ prev = i;
+ }
+ if (path.charAt(len - 1) == SEPARATOR) {
+ --count;
+ }
+ return count;
+ }
+
+ /**
+ * Computes the segment array for the given canonicalized path.
+ */
+ private String[] computeSegments(String path) {
+ // performance sensitive --- avoid creating garbage
+ int segmentCount = computeSegmentCount(path);
+ if (segmentCount == 0)
+ return NO_SEGMENTS;
+ String[] newSegments = new String[segmentCount];
+ int len = path.length();
+ // check for initial slash
+ int firstPosition = (path.charAt(0) == SEPARATOR) ? 1 : 0;
+ // check for UNC
+ if (firstPosition == 1 && len > 1 && (path.charAt(1) == SEPARATOR))
+ firstPosition = 2;
+ int lastPosition = (path.charAt(len - 1) != SEPARATOR) ? len - 1 : len - 2;
+ // for non-empty paths, the number of segments is
+ // the number of slashes plus 1, ignoring any leading
+ // and trailing slashes
+ int next = firstPosition;
+ for (int i = 0; i < segmentCount; i++) {
+ int start = next;
+ int end = path.indexOf(SEPARATOR, next);
+ if (end == -1) {
+ newSegments[i] = path.substring(start, lastPosition + 1);
+ } else {
+ newSegments[i] = path.substring(start, end);
+ }
+ next = end + 1;
+ }
+ return newSegments;
+ }
+
+ /**
+ * Returns the platform-neutral encoding of the given segment onto
+ * the given string buffer. This escapes literal colon characters with double colons.
+ */
+ private void encodeSegment(String string, StringBuffer buf) {
+ int len = string.length();
+ for (int i = 0; i < len; i++) {
+ char c = string.charAt(i);
+ buf.append(c);
+ if (c == DEVICE_SEPARATOR)
+ buf.append(DEVICE_SEPARATOR);
+ }
+ }
+
+ /* (Intentionally not included in javadoc)
+ * Compares objects for equality.
+ */
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (!(obj instanceof RemotePath))
+ return false;
+ RemotePath target = (RemotePath) obj;
+ //check leading separators and hash code
+ if ((flags & HASH_MASK) != (target.flags & HASH_MASK))
+ return false;
+ String[] targetSegments = target.segments;
+ int i = segments.length;
+ //check segment count
+ if (i != targetSegments.length)
+ return false;
+ //check segments in reverse order - later segments more likely to differ
+ while (--i >= 0)
+ if (!segments[i].equals(targetSegments[i]))
+ return false;
+ //check device last (least likely to differ)
+ return device == target.device || (device != null && device.equals(target.device));
+ }
+
+ /* (Intentionally not included in javadoc)
+ * @see IPath#getDevice
+ */
+ @Override
+ public String getDevice() {
+ return device;
+ }
+
+ /* (Intentionally not included in javadoc)
+ * @see IPath#getFileExtension
+ */
+ @Override
+ public String getFileExtension() {
+ if (hasTrailingSeparator()) {
+ return null;
+ }
+ String lastSegment = lastSegment();
+ if (lastSegment == null) {
+ return null;
+ }
+ int index = lastSegment.lastIndexOf('.');
+ if (index == -1) {
+ return null;
+ }
+ return lastSegment.substring(index + 1);
+ }
+
+ /* (Intentionally not included in javadoc)
+ * Computes the hash code for this object.
+ */
+ @Override
+ public int hashCode() {
+ return flags & HASH_MASK;
+ }
+
+ /* (Intentionally not included in javadoc)
+ * @see IPath#hasTrailingSeparator2
+ */
+ @Override
+ public boolean hasTrailingSeparator() {
+ return (flags & HAS_TRAILING) != 0;
+ }
+
+ /*
+ * Initialize the current path with the given string.
+ */
+ private IPath initialize(String deviceString, String path, boolean forWindows) {
+ Assert.isNotNull(path);
+ this.device = deviceString;
+
+ path = collapseSlashes(path);
+ int len = path.length();
+
+ //compute the flags bitmap
+ if (len < 2) {
+ if (len == 1 && path.charAt(0) == SEPARATOR) {
+ this.flags = HAS_LEADING;
+ } else {
+ this.flags = 0;
+ }
+ } else {
+ boolean hasLeading = path.charAt(0) == SEPARATOR;
+ boolean isUNC = hasLeading && path.charAt(1) == SEPARATOR;
+ //UNC path of length two has no trailing separator
+ boolean hasTrailing = !(isUNC && len == 2) && path.charAt(len - 1) == SEPARATOR;
+ flags = hasLeading ? HAS_LEADING : 0;
+ if (isUNC)
+ flags |= IS_UNC;
+ if (hasTrailing)
+ flags |= HAS_TRAILING;
+ }
+ if (forWindows) {
+ flags |= IS_FOR_WINDOWS;
+ }
+ //compute segments and ensure canonical form
+ segments = computeSegments(path);
+ if (!canonicalize()) {
+ //compute hash now because canonicalize didn't need to do it
+ flags = (flags & ALL_FLAGS) | (computeHashCode() << 4);
+ }
+ return this;
+ }
+
+ /* (Intentionally not included in javadoc)
+ * @see IPath#isAbsolute
+ */
+ @Override
+ public boolean isAbsolute() {
+ //it's absolute if it has a leading separator
+ return (flags & HAS_LEADING) != 0;
+ }
+
+ /* (Intentionally not included in javadoc)
+ * @see IPath#isEmpty
+ */
+ @Override
+ public boolean isEmpty() {
+ //true if no segments and no leading prefix
+ return segments.length == 0 && ((flags & ALL_SEPARATORS) != HAS_LEADING);
+ }
+
+ /* (Intentionally not included in javadoc)
+ * @see IPath#isPrefixOf
+ */
+ @Override
+ public boolean isPrefixOf(IPath anotherPath) {
+ if (device == null) {
+ if (anotherPath.getDevice() != null) {
+ return false;
+ }
+ } else {
+ if (!device.equalsIgnoreCase(anotherPath.getDevice())) {
+ return false;
+ }
+ }
+ if (isEmpty() || (isRoot() && anotherPath.isAbsolute())) {
+ return true;
+ }
+ int len = segments.length;
+ if (len > anotherPath.segmentCount()) {
+ return false;
+ }
+ for (int i = 0; i < len; i++) {
+ if (!segments[i].equals(anotherPath.segment(i)))
+ return false;
+ }
+ return true;
+ }
+
+ /* (Intentionally not included in javadoc)
+ * @see IPath#isRoot
+ */
+ @Override
+ public boolean isRoot() {
+ //must have no segments, a leading separator, and not be a UNC path.
+ return this == ROOT || (segments.length == 0 && ((flags & ALL_SEPARATORS) == HAS_LEADING));
+ }
+
+ /* (Intentionally not included in javadoc)
+ * @see IPath#isUNC
+ */
+ @Override
+ public boolean isUNC() {
+ if (device != null)
+ return false;
+ return (flags & IS_UNC) != 0;
+ }
+
+ /* (Intentionally not included in javadoc)
+ * @see IPath#isValidPath(String)
+ */
+ @Override
+ public boolean isValidPath(String path) {
+ return isValidPath(path, (flags & IS_FOR_WINDOWS) != 0);
+ }
+
+ /**
+ * Returns whether the given string is syntactically correct as a path on a
+ * POSIX file system. The path is correct if each of the segments in its
+ * canonicalized form is valid.
+ *
+ * @param path the path to check
+ * @return <code>true</code> if the given string is a valid path,
+ * and <code>false</code> otherwise
+ * @see #isValidPosixSegment(String)
+ * @since 3.7
+ */
+ public static boolean isValidPosixPath(String path) {
+ return isValidPath(path, false);
+ }
+
+ /**
+ * Returns whether the given string is syntactically correct as a path on
+ * the Windows file system. The device id is the prefix up to and including
+ * the device separator (':'); the path proper is everything to the right of
+ * it, or the entire string if there is no device separator. The device id
+ * is not checked for validity; the path proper is correct if each of the
+ * segments in its canonicalized form is valid.
+ *
+ * @param path the path to check
+ * @return <code>true</code> if the given string is a valid path,
+ * and <code>false</code> otherwise
+ * @see #isValidWindowsSegment(String)
+ * @since 3.7
+ */
+ public static boolean isValidWindowsPath(String path) {
+ return isValidPath(path, true);
+ }
+
+ /**
+ * Returns whether the given string is syntactically correct as a path on
+ * the specified file system. The device id is the prefix up to and
+ * including the device separator for the specified file system; the path
+ * proper is everything to the right of it, or the entire string if there is
+ * no device separator. When the specified platform is a file system with no
+ * meaningful device separator, the entire string is treated as the path
+ * proper. The device id is not checked for validity; the path proper is
+ * correct if each of the segments in its canonicalized form is valid.
+ *
+ * @param path the path to check
+ * @param forWindows true if the path is for the Windows file system
+ * @return <code>true</code> if the given string is a valid path,
+ * and <code>false</code> otherwise
+ * @see #isValidSegment(String, boolean)
+ * @since 3.7
+ */
+ private static boolean isValidPath(String path, boolean forWindows) {
+ RemotePath test = new RemotePath(path, forWindows);
+ for (int i = 0, max = test.segmentCount(); i < max; i++)
+ if (!RemotePath.isValidSegment(test.segment(i), forWindows))
+ return false;
+ return true;
+ }
+
+ /* (Intentionally not included in javadoc)
+ * @see IPath#isValidSegment(String)
+ */
+ @Override
+ public boolean isValidSegment(String segment) {
+ return isValidSegment(segment, (flags & IS_FOR_WINDOWS) != 0);
+ }
+
+ /**
+ * Returns whether the given string is valid as a segment in a path on a
+ * POSIX file system. The rules for valid segments are as follows:
+ * <ul>
+ * <li>the empty string is not valid
+ * <li>any string containing the slash character ('/') is not valid
+ * </ul>
+ *
+ * @param segment the path segment to check
+ * @return <code>true</code> if the given path segment is valid,
+ * and <code>false</code> otherwise
+ * @since 3.7
+ */
+ public static boolean isValidPosixSegment(String segment) {
+ return isValidSegment(segment, false);
+ }
+
+ /**
+ * Returns whether the given string is valid as a segment in a path on the
+ * Windows file system. The rules for valid segments are as follows:
+ * <ul>
+ * <li>the empty string is not valid
+ * <li>any string containing the slash character ('/') is not valid
+ * <li>any string containing segment ('\') or device (':') separator
+ * characters is not valid
+ * </ul>
+ *
+ * @param segment the path segment to check
+ * @return <code>true</code> if the given path segment is valid,
+ * and <code>false</code> otherwise
+ * @since 3.7
+ */
+ public static boolean isValidWindowsSegment(String segment) {
+ return isValidSegment(segment, true);
+ }
+
+ /**
+ * Returns whether the given string is valid as a segment in a path on the
+ * specified file system. The rules for valid segments are as follows:
+ * <ul>
+ * <li>the empty string is not valid
+ * <li>any string containing the slash character ('/') is not valid
+ * <li>any string containing segment or device separator characters on the
+ * specified file system, such as the backslash ('\') and colon (':') on
+ * Windows, is not valid
+ * </ul>
+ *
+ * @param segment the path segment to check
+ * @param forWindows true if the path is for the Windows file system
+ * @return <code>true</code> if the given path segment is valid,
+ * and <code>false</code> otherwise
+ * @since 3.7
+ */
+ private static boolean isValidSegment(String segment, boolean forWindows) {
+ int size = segment.length();
+ if (size == 0)
+ return false;
+ for (int i = 0; i < size; i++) {
+ char c = segment.charAt(i);
+ if (c == '/')
+ return false;
+ if (forWindows && (c == '\\' || c == ':'))
+ return false;
+ }
+ return true;
+ }
+
+ /* (Intentionally not included in javadoc)
+ * @see IPath#lastSegment()
+ */
+ @Override
+ public String lastSegment() {
+ int len = segments.length;
+ return len == 0 ? null : segments[len - 1];
+ }
+
+ /* (Intentionally not included in javadoc)
+ * @see IPath#makeAbsolute()
+ */
+ @Override
+ public IPath makeAbsolute() {
+ if (isAbsolute()) {
+ return this;
+ }
+ RemotePath result = new RemotePath(device, segments, flags | HAS_LEADING);
+ //may need canonicalizing if it has leading ".." or "." segments
+ if (result.segmentCount() > 0) {
+ String first = result.segment(0);
+ if (first.equals("..") || first.equals(".")) { //$NON-NLS-1$ //$NON-NLS-2$
+ result.canonicalize();
+ }
+ }
+ return result;
+ }
+
+ /* (Intentionally not included in javadoc)
+ * @see IPath#makeRelative()
+ */
+ @Override
+ public IPath makeRelative() {
+ if (!isAbsolute()) {
+ return this;
+ }
+ return new RemotePath(device, segments, flags & (HAS_TRAILING | IS_FOR_WINDOWS));
+ }
+
+ /**
+ * {@inheritDoc}
+ * @since org.eclipse.equinox.common 3.5
+ */
+ @Override
+ public IPath makeRelativeTo(IPath base) {
+ //can't make relative if devices are not equal
+ if (device != base.getDevice() && (device == null || !device.equalsIgnoreCase(base.getDevice())))
+ return this;
+ int commonLength = matchingFirstSegments(base);
+ final int differenceLength = base.segmentCount() - commonLength;
+ final int newSegmentLength = differenceLength + segmentCount() - commonLength;
+ if (newSegmentLength == 0)
+ return RemotePath.EMPTY;
+ String[] newSegments = new String[newSegmentLength];
+ //add parent references for each segment different from the base
+ Arrays.fill(newSegments, 0, differenceLength, ".."); //$NON-NLS-1$
+ //append the segments of this path not in common with the base
+ System.arraycopy(segments, commonLength, newSegments, differenceLength, newSegmentLength - differenceLength);
+ return new RemotePath(null, newSegments, flags & (HAS_TRAILING | IS_FOR_WINDOWS));
+ }
+
+ /* (Intentionally not included in javadoc)
+ * @see IPath#makeUNC(boolean)
+ */
+ @Override
+ public IPath makeUNC(boolean toUNC) {
+ // if we are already in the right form then just return
+ if (!(toUNC ^ isUNC()))
+ return this;
+
+ int newSeparators = this.flags;
+ if (toUNC) {
+ newSeparators |= HAS_LEADING | IS_UNC;
+ } else {
+ //mask out the UNC bit
+ newSeparators &= HAS_LEADING | HAS_TRAILING | IS_FOR_WINDOWS;
+ }
+ return new RemotePath(toUNC ? null : device, segments, newSeparators);
+ }
+
+ /* (Intentionally not included in javadoc)
+ * @see IPath#matchingFirstSegments(IPath)
+ */
+ @Override
+ public int matchingFirstSegments(IPath anotherPath) {
+ Assert.isNotNull(anotherPath);
+ int anotherPathLen = anotherPath.segmentCount();
+ int max = Math.min(segments.length, anotherPathLen);
+ int count = 0;
+ for (int i = 0; i < max; i++) {
+ if (!segments[i].equals(anotherPath.segment(i))) {
+ return count;
+ }
+ count++;
+ }
+ return count;
+ }
+
+ /* (Intentionally not included in javadoc)
+ * @see IPath#removeFileExtension()
+ */
+ @Override
+ public IPath removeFileExtension() {
+ String extension = getFileExtension();
+ if (extension == null || extension.equals("")) { //$NON-NLS-1$
+ return this;
+ }
+ String lastSegment = lastSegment();
+ int index = lastSegment.lastIndexOf(extension) - 1;
+ return removeLastSegments(1).append(lastSegment.substring(0, index));
+ }
+
+ /* (Intentionally not included in javadoc)
+ * @see IPath#removeFirstSegments(int)
+ */
+ @Override
+ public IPath removeFirstSegments(int count) {
+ if (count == 0)
+ return this;
+ if (count >= segments.length) {
+ return new RemotePath(device, NO_SEGMENTS, flags & IS_FOR_WINDOWS);
+ }
+ Assert.isLegal(count > 0);
+ int newSize = segments.length - count;
+ String[] newSegments = new String[newSize];
+ System.arraycopy(this.segments, count, newSegments, 0, newSize);
+
+ //result is always a relative path
+ return new RemotePath(device, newSegments, flags & (HAS_TRAILING | IS_FOR_WINDOWS));
+ }
+
+ /* (Intentionally not included in javadoc)
+ * @see IPath#removeLastSegments(int)
+ */
+ @Override
+ public IPath removeLastSegments(int count) {
+ if (count == 0)
+ return this;
+ if (count >= segments.length) {
+ //result will have no trailing separator
+ return new RemotePath(device, NO_SEGMENTS, flags & (HAS_LEADING | IS_UNC | IS_FOR_WINDOWS));
+ }
+ Assert.isLegal(count > 0);
+ int newSize = segments.length - count;
+ String[] newSegments = new String[newSize];
+ System.arraycopy(this.segments, 0, newSegments, 0, newSize);
+ return new RemotePath(device, newSegments, flags);
+ }
+
+ /* (Intentionally not included in javadoc)
+ * @see IPath#removeTrailingSeparator()
+ */
+ @Override
+ public IPath removeTrailingSeparator() {
+ if (!hasTrailingSeparator()) {
+ return this;
+ }
+ return new RemotePath(device, segments, flags & (HAS_LEADING | IS_UNC | IS_FOR_WINDOWS));
+ }
+
+ /* (Intentionally not included in javadoc)
+ * @see IPath#segment(int)
+ */
+ @Override
+ public String segment(int index) {
+ if (index >= segments.length)
+ return null;
+ return segments[index];
+ }
+
+ /* (Intentionally not included in javadoc)
+ * @see IPath#segmentCount()
+ */
+ @Override
+ public int segmentCount() {
+ return segments.length;
+ }
+
+ /* (Intentionally not included in javadoc)
+ * @see IPath#segments()
+ */
+ @Override
+ public String[] segments() {
+ String[] segmentCopy = new String[segments.length];
+ System.arraycopy(segments, 0, segmentCopy, 0, segments.length);
+ return segmentCopy;
+ }
+
+ /* (Intentionally not included in javadoc)
+ * @see IPath#setDevice(String)
+ */
+ @Override
+ public IPath setDevice(String value) {
+ if (value != null) {
+ Assert.isTrue(value.indexOf(IPath.DEVICE_SEPARATOR) == (value.length() - 1),
+ "Last character should be the device separator"); //$NON-NLS-1$
+ }
+ //return the receiver if the device is the same
+ if (value == device || (value != null && value.equals(device)))
+ return this;
+
+ return new RemotePath(value, segments, flags);
+ }
+
+ /* (Intentionally not included in javadoc)
+ * @see IPath#toFile()
+ */
+ @Override
+ public File toFile() {
+ return new File(toOSString());
+ }
+
+ /* (Intentionally not included in javadoc)
+ * @see IPath#toOSString()
+ */
+ @Override
+ public String toOSString() {
+ //Note that this method is identical to toString except
+ //it uses the OS file separator instead of the path separator
+ int resultSize = computeLength();
+ if (resultSize <= 0)
+ return EMPTY_STRING;
+ char FILE_SEPARATOR = File.separatorChar;
+ char[] result = new char[resultSize];
+ int offset = 0;
+ if (device != null) {
+ int size = device.length();
+ device.getChars(0, size, result, offset);
+ offset += size;
+ }
+ if ((flags & HAS_LEADING) != 0)
+ result[offset++] = FILE_SEPARATOR;
+ if ((flags & IS_UNC) != 0)
+ result[offset++] = FILE_SEPARATOR;
+ int len = segments.length - 1;
+ if (len >= 0) {
+ //append all but the last segment, with file separators
+ for (int i = 0; i < len; i++) {
+ int size = segments[i].length();
+ segments[i].getChars(0, size, result, offset);
+ offset += size;
+ result[offset++] = FILE_SEPARATOR;
+ }
+ //append the last segment
+ int size = segments[len].length();
+ segments[len].getChars(0, size, result, offset);
+ offset += size;
+ }
+ if ((flags & HAS_TRAILING) != 0)
+ result[offset++] = FILE_SEPARATOR;
+ return new String(result);
+ }
+
+ /* (Intentionally not included in javadoc)
+ * @see IPath#toPortableString()
+ */
+ @Override
+ public String toPortableString() {
+ int resultSize = computeLength();
+ if (resultSize <= 0)
+ return EMPTY_STRING;
+ StringBuffer result = new StringBuffer(resultSize);
+ if (device != null)
+ result.append(device);
+ if ((flags & HAS_LEADING) != 0)
+ result.append(SEPARATOR);
+ if ((flags & IS_UNC) != 0)
+ result.append(SEPARATOR);
+ int len = segments.length;
+ //append all segments with separators
+ for (int i = 0; i < len; i++) {
+ if (segments[i].indexOf(DEVICE_SEPARATOR) >= 0)
+ encodeSegment(segments[i], result);
+ else
+ result.append(segments[i]);
+ if (i < len - 1 || (flags & HAS_TRAILING) != 0)
+ result.append(SEPARATOR);
+ }
+ return result.toString();
+ }
+
+ /* (Intentionally not included in javadoc)
+ * @see IPath#toString()
+ */
+ @Override
+ public String toString() {
+ int resultSize = computeLength();
+ if (resultSize <= 0)
+ return EMPTY_STRING;
+ char[] result = new char[resultSize];
+ int offset = 0;
+ if (device != null) {
+ int size = device.length();
+ device.getChars(0, size, result, offset);
+ offset += size;
+ }
+ if ((flags & HAS_LEADING) != 0)
+ result[offset++] = SEPARATOR;
+ if ((flags & IS_UNC) != 0)
+ result[offset++] = SEPARATOR;
+ int len = segments.length - 1;
+ if (len >= 0) {
+ //append all but the last segment, with separators
+ for (int i = 0; i < len; i++) {
+ int size = segments[i].length();
+ segments[i].getChars(0, size, result, offset);
+ offset += size;
+ result[offset++] = SEPARATOR;
+ }
+ //append the last segment
+ int size = segments[len].length();
+ segments[len].getChars(0, size, result, offset);
+ offset += size;
+ }
+ if ((flags & HAS_TRAILING) != 0)
+ result[offset++] = SEPARATOR;
+ return new String(result);
+ }
+
+ /* (Intentionally not included in javadoc)
+ * @see IPath#uptoSegment(int)
+ */
+ @Override
+ public IPath uptoSegment(int count) {
+ if (count == 0)
+ return new RemotePath(device, NO_SEGMENTS, flags & (HAS_LEADING | IS_UNC | IS_FOR_WINDOWS));
+ if (count >= segments.length)
+ return this;
+ Assert.isTrue(count > 0, "Invalid parameter to RemotePath.uptoSegment"); //$NON-NLS-1$
+ String[] newSegments = new String[count];
+ System.arraycopy(segments, 0, newSegments, 0, count);
+ return new RemotePath(device, newSegments, flags);
+ }
+}
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/RemoteProcess.java b/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/RemoteProcess.java
new file mode 100644
index 00000000000..fe68a06b4e6
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/RemoteProcess.java
@@ -0,0 +1,145 @@
+/*******************************************************************************
+ * Copyright (c) 2007 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.internal.core;
+
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteProcess;
+import org.eclipse.remote.core.IRemoteProcessBuilder;
+import org.eclipse.remote.core.IRemoteProcessControlService;
+
+/**
+ * Standard root class for remote processes.
+ */
+public class RemoteProcess extends Process implements IRemoteProcess {
+ private final Map<Class<? extends Service>, Service> servicesMap = new HashMap<>();
+ private final IRemoteConnection connection;
+ private final IRemoteProcessBuilder builder;
+
+ /**
+ * @since 2.0
+ */
+ public RemoteProcess(IRemoteConnection connection, IRemoteProcessBuilder builder) {
+ this.connection = connection;
+ this.builder = builder;
+ }
+
+ @Override
+ public void destroy() {
+ IRemoteProcessControlService controlService = getService(IRemoteProcessControlService.class);
+ if (controlService != null) {
+ controlService.destroy();
+ }
+ }
+
+ @Override
+ public int exitValue() {
+ IRemoteProcessControlService controlService = getService(IRemoteProcessControlService.class);
+ if (controlService != null) {
+ return controlService.exitValue();
+ }
+ return 0;
+ }
+
+ @Override
+ public InputStream getErrorStream() {
+ IRemoteProcessControlService controlService = getService(IRemoteProcessControlService.class);
+ if (controlService != null) {
+ return controlService.getErrorStream();
+ }
+ return null;
+ }
+
+ @Override
+ public InputStream getInputStream() {
+ IRemoteProcessControlService controlService = getService(IRemoteProcessControlService.class);
+ if (controlService != null) {
+ return controlService.getInputStream();
+ }
+ return null;
+ }
+
+ @Override
+ public OutputStream getOutputStream() {
+ IRemoteProcessControlService controlService = getService(IRemoteProcessControlService.class);
+ if (controlService != null) {
+ return controlService.getOutputStream();
+ }
+ return null;
+ }
+
+ /**
+ * @since 2.0
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public <T extends Service> T getService(Class<T> service) {
+ T obj = (T) servicesMap.get(service);
+ if (obj == null) {
+ obj = getConnectionType().getProcessService(this, service);
+ if (obj != null) {
+ servicesMap.put(service, obj);
+ }
+ }
+
+ return obj;
+ }
+
+ /**
+ * @since 2.0
+ */
+ @Override
+ public <T extends Service> boolean hasService(Class<T> service) {
+ return servicesMap.get(service.getName()) != null || getConnectionType().hasProcessService(service);
+ }
+
+ @Override
+ public int waitFor() throws InterruptedException {
+ IRemoteProcessControlService controlService = getService(IRemoteProcessControlService.class);
+ if (controlService != null) {
+ return controlService.waitFor();
+ }
+ return 0;
+ }
+
+ @Override
+ public boolean isCompleted() {
+ IRemoteProcessControlService controlService = getService(IRemoteProcessControlService.class);
+ if (controlService != null) {
+ return controlService.isCompleted();
+ }
+ return true;
+ }
+
+ /**
+ * @since 2.0
+ */
+ @Override
+ public IRemoteConnection getRemoteConnection() {
+ return connection;
+ }
+
+ @Override
+ public IRemoteProcessBuilder getProcessBuilder() {
+ return builder;
+ }
+
+ private RemoteConnectionType getConnectionType() {
+ return (RemoteConnectionType) getRemoteConnection().getConnectionType();
+ }
+}
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/RemoteResourceAdapterFactory.java b/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/RemoteResourceAdapterFactory.java
new file mode 100644
index 00000000000..4af892e7891
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/RemoteResourceAdapterFactory.java
@@ -0,0 +1,87 @@
+/*******************************************************************************
+ * Copyright (c) 2011 IBM Corporation.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.internal.core;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IAdapterFactory;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtension;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.IExtensionRegistry;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.remote.core.IRemoteResource;
+import org.eclipse.remote.internal.core.services.local.LocalResource;
+
+public class RemoteResourceAdapterFactory implements IAdapterFactory {
+ public static final String EXTENSION_POINT_ID = "remoteResources"; //$NON-NLS-1$
+
+ public static final String ATTR_NATURE = "nature"; //$NON-NLS-1$
+ public static final String ATTR_CLASS = "class"; //$NON-NLS-1$
+
+ private Map<String, RemoteResourceFactory> fResourceFactory;
+
+ @Override
+ public <T> T getAdapter(Object adaptableObject, Class<T> adapterType) {
+ if (adapterType == IRemoteResource.class) {
+ if (adaptableObject instanceof IResource) {
+ loadExtensions();
+ IResource resource = (IResource) adaptableObject;
+ for (String nature : fResourceFactory.keySet()) {
+ try {
+ if (resource.getProject().hasNature(nature)) {
+ RemoteResourceFactory factory = fResourceFactory.get(nature);
+ if (factory != null) {
+ return adapterType.cast(factory.getRemoteResource(resource));
+ }
+ }
+ } catch (CoreException e) {
+ // Treat as failure
+ }
+ }
+ return adapterType.cast(new LocalResource(resource));
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public Class<?>[] getAdapterList() {
+ return new Class[] { IRemoteResource.class };
+ }
+
+ private synchronized void loadExtensions() {
+ if (fResourceFactory == null) {
+ fResourceFactory = new HashMap<>();
+
+ IExtensionRegistry registry = Platform.getExtensionRegistry();
+ IExtensionPoint extensionPoint = registry.getExtensionPoint(RemoteCorePlugin.getUniqueIdentifier(),
+ EXTENSION_POINT_ID);
+
+ for (IExtension ext : extensionPoint.getExtensions()) {
+ final IConfigurationElement[] elements = ext.getConfigurationElements();
+
+ for (IConfigurationElement ce : elements) {
+ String nature = ce.getAttribute(ATTR_NATURE);
+ RemoteResourceFactory factory = new RemoteResourceFactory(ce);
+ fResourceFactory.put(nature, factory);
+ }
+ }
+ }
+ }
+
+}
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/RemoteResourceFactory.java b/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/RemoteResourceFactory.java
new file mode 100644
index 00000000000..83e164456f9
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/RemoteResourceFactory.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * Copyright (c) 2011 IBM Corporation.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.internal.core;
+
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.remote.core.IRemoteResource;
+
+/**
+ * Factory to create an IRemoteResource
+ *
+ * @author greg
+ *
+ */
+public class RemoteResourceFactory {
+ private final IConfigurationElement fConfigElement;
+
+ public RemoteResourceFactory(IConfigurationElement ce) {
+ fConfigElement = ce;
+ }
+
+ /**
+ * Get the remote resource associated with the platform resource.
+ *
+ * @return IRemoteResource
+ */
+ public IRemoteResource getRemoteResource(IResource resource) {
+ try {
+ IRemoteResource remoteRes = (IRemoteResource) fConfigElement
+ .createExecutableExtension(RemoteResourceAdapterFactory.ATTR_CLASS);
+ remoteRes.setResource(resource);
+ return remoteRes;
+ } catch (CoreException e) {
+ RemoteCorePlugin.log(e);
+ return null;
+ }
+ }
+} \ No newline at end of file
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/RemoteServicesManager.java b/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/RemoteServicesManager.java
new file mode 100644
index 00000000000..828a10abc4d
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/RemoteServicesManager.java
@@ -0,0 +1,220 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.internal.core;
+
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtension;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.IExtensionRegistry;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.preferences.InstanceScope;
+import org.eclipse.equinox.security.storage.ISecurePreferences;
+import org.eclipse.equinox.security.storage.SecurePreferencesFactory;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteConnectionChangeListener;
+import org.eclipse.remote.core.IRemoteConnectionProviderService;
+import org.eclipse.remote.core.IRemoteConnectionType;
+import org.eclipse.remote.core.IRemoteServicesManager;
+import org.eclipse.remote.core.RemoteConnectionChangeEvent;
+import org.osgi.service.prefs.Preferences;
+
+/**
+ * The implementation for the remote services manager service.
+ *
+ */
+public class RemoteServicesManager implements IRemoteServicesManager {
+
+ private static final String LOCAL_SERVICES_ID = "org.eclipse.remote.LocalServices"; //$NON-NLS-1$
+
+ // Map from id to remote services
+ private final Map<String, RemoteConnectionType> connectionTypeMap = new HashMap<>();
+
+ // Map from URI scheme to remote services
+ private final Map<String, IRemoteConnectionType> schemeMap = new HashMap<>();
+
+ private final List<IRemoteConnectionChangeListener> listeners = new LinkedList<>();
+ private boolean inited;
+
+ /**
+ * Loads up the services extensions and then loads up the persisted connections.
+ * This stuff can't be done from the constructor for the manager since that's done
+ * in the bundle activator which is way too early. It also gives us the ability
+ * to override the initialization in tests
+ */
+ protected void init() {
+ if (inited) {
+ return;
+ }
+ inited = true;
+
+ IExtensionRegistry registry = Platform.getExtensionRegistry();
+ IExtensionPoint point = registry.getExtensionPoint(RemoteCorePlugin.getUniqueIdentifier(), "remoteServices"); //$NON-NLS-1$
+
+ // Load up the connection types
+ for (IExtension ext : point.getExtensions()) {
+ for (IConfigurationElement ce : ext.getConfigurationElements()) {
+ if (ce.getName().equals("connectionType")) { //$NON-NLS-1$
+ RemoteConnectionType services = new RemoteConnectionType(ce, this);
+ connectionTypeMap.put(services.getId(), services);
+ String scheme = services.getScheme();
+ if (scheme != null) {
+ schemeMap.put(scheme, services);
+ }
+ }
+ }
+ }
+
+ // Load up the services
+ for (IExtension ext : point.getExtensions()) {
+ for (IConfigurationElement ce : ext.getConfigurationElements()) {
+ String name = ce.getName();
+ if (name.equals("connectionTypeService") || name.equals("connectionService") //$NON-NLS-1$//$NON-NLS-2$
+ || name.equals("processService")) { //$NON-NLS-1$
+ String id = ce.getAttribute("connectionTypeId"); //$NON-NLS-1$
+ RemoteConnectionType services = connectionTypeMap.get(id);
+ if (services != null) {
+ services.addService(ce);
+ }
+ }
+ }
+ }
+
+ // Init connection providers
+ for (IRemoteConnectionType connectionType : connectionTypeMap.values()) {
+ IRemoteConnectionProviderService providerService = connectionType
+ .getService(IRemoteConnectionProviderService.class);
+ if (providerService != null) {
+ providerService.init();
+ }
+ }
+ }
+
+ public Preferences getPreferenceNode() {
+ return InstanceScope.INSTANCE.getNode(RemoteCorePlugin.getUniqueIdentifier()).node("connections"); //$NON-NLS-1$
+ }
+
+ public ISecurePreferences getSecurePreferenceNode() {
+ return SecurePreferencesFactory.getDefault().node(RemoteCorePlugin.getUniqueIdentifier()).node("connections"); //$NON-NLS-1$
+ }
+
+ @Override
+ public IRemoteConnectionType getConnectionType(String id) {
+ init();
+ return connectionTypeMap.get(id);
+ }
+
+ @Override
+ public IRemoteConnectionType getConnectionType(URI uri) {
+ init();
+ return schemeMap.get(uri.getScheme());
+ }
+
+ @Override
+ public IRemoteConnectionType getLocalConnectionType() {
+ return getConnectionType(LOCAL_SERVICES_ID);
+ }
+
+ @Override
+ public List<IRemoteConnectionType> getAllConnectionTypes() {
+ init();
+ return new ArrayList<>(connectionTypeMap.values());
+ }
+
+ @Override
+ @SafeVarargs
+ public final List<IRemoteConnectionType> getConnectionTypesSupporting(
+ Class<? extends IRemoteConnection.Service>... services) {
+ List<IRemoteConnectionType> connTypes = new ArrayList<>();
+ for (IRemoteConnectionType connType : getAllConnectionTypes()) {
+ for (Class<? extends IRemoteConnection.Service> service : services) {
+ if (connType.hasConnectionService(service)) {
+ connTypes.add(connType);
+ break;
+ }
+ }
+ }
+ return connTypes;
+ }
+
+ @Override
+ @SafeVarargs
+ public final List<IRemoteConnectionType> getConnectionTypesByService(
+ Class<? extends IRemoteConnectionType.Service>... services) {
+ List<IRemoteConnectionType> connTypes = new ArrayList<>();
+ for (IRemoteConnectionType connType : getAllConnectionTypes()) {
+ for (Class<? extends IRemoteConnectionType.Service> service : services) {
+ if (!connType.hasService(service)) {
+ connTypes.add(connType);
+ break;
+ }
+ }
+ }
+ return connTypes;
+ }
+
+ @Override
+ public List<IRemoteConnectionType> getRemoteConnectionTypes() {
+ init();
+ List<IRemoteConnectionType> connTypes = new ArrayList<>(connectionTypeMap.values().size() - 1);
+ IRemoteConnectionType localServices = getLocalConnectionType();
+ for (IRemoteConnectionType s : connectionTypeMap.values()) {
+ if (!s.equals(localServices)) {
+ connTypes.add(s);
+ }
+ }
+ return connTypes;
+ }
+
+ @Override
+ public List<IRemoteConnection> getAllRemoteConnections() {
+ List<IRemoteConnection> connections = new ArrayList<>();
+ for (IRemoteConnectionType connType : getAllConnectionTypes()) {
+ connections.addAll(connType.getConnections());
+ }
+ return connections;
+ }
+
+ @Override
+ public void addRemoteConnectionChangeListener(IRemoteConnectionChangeListener listener) {
+ synchronized (listeners) {
+ listeners.add(listener);
+ }
+ }
+
+ @Override
+ public void removeRemoteConnectionChangeListener(IRemoteConnectionChangeListener listener) {
+ synchronized (listeners) {
+ listeners.remove(listener);
+ }
+ }
+
+ @Override
+ public void fireRemoteConnectionChangeEvent(RemoteConnectionChangeEvent event) {
+ List<IRemoteConnectionChangeListener> iListeners;
+ synchronized (listeners) {
+ iListeners = new ArrayList<>(listeners);
+ }
+ for (IRemoteConnectionChangeListener listener : iListeners) {
+ listener.connectionChanged(event);
+ }
+ }
+
+}
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/launch/RemoteLaunchConfigService.java b/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/launch/RemoteLaunchConfigService.java
new file mode 100644
index 00000000000..3e71db08388
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/launch/RemoteLaunchConfigService.java
@@ -0,0 +1,65 @@
+package org.eclipse.remote.internal.core.launch;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.preferences.InstanceScope;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.ILaunchConfigurationType;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteConnectionType;
+import org.eclipse.remote.core.IRemoteServicesManager;
+import org.eclipse.remote.core.launch.IRemoteLaunchConfigService;
+import org.eclipse.remote.internal.core.RemoteCorePlugin;
+import org.osgi.service.prefs.Preferences;
+
+public class RemoteLaunchConfigService implements IRemoteLaunchConfigService {
+
+ private static final String REMOTE_LAUNCH_CONFIG = "remoteLaunchConfig"; //$NON-NLS-1$
+ private static final String REMOTE_LAUNCH_TYPE = "remoteLaunchType"; //$NON-NLS-1$
+
+ private Preferences getPreferences(String node) {
+ return InstanceScope.INSTANCE.getNode(RemoteCorePlugin.getUniqueIdentifier()).node(node);
+ }
+
+ private IRemoteConnection getRemoteConnection(String remoteId) {
+ if (remoteId == null) {
+ return null;
+ }
+
+ String[] ids = remoteId.split(":"); //$NON-NLS-1$
+ if (ids.length < 2) {
+ return null;
+ }
+
+ IRemoteServicesManager manager = RemoteCorePlugin.getService(IRemoteServicesManager.class);
+ IRemoteConnectionType connectionType = manager.getConnectionType(ids[0]);
+ if (connectionType == null) {
+ return null;
+ }
+
+ return connectionType.getConnection(ids[1]);
+ }
+
+ @Override
+ public void setActiveConnection(ILaunchConfiguration launchConfig, IRemoteConnection connection) {
+ String remoteId = connection.getConnectionType().getId() + ":" + connection.getName(); //$NON-NLS-1$
+ getPreferences(REMOTE_LAUNCH_CONFIG).put(launchConfig.getName(), remoteId);
+ try {
+ getPreferences(REMOTE_LAUNCH_TYPE).put(launchConfig.getType().getIdentifier(), remoteId);
+ } catch (CoreException e) {
+ RemoteCorePlugin.log(e.getStatus());
+ }
+ }
+
+ @Override
+ public IRemoteConnection getActiveConnection(ILaunchConfiguration launchConfig) {
+ String remoteId = getPreferences(REMOTE_LAUNCH_CONFIG).get(launchConfig.getName(), null);
+ return getRemoteConnection(remoteId);
+ }
+
+ @Override
+ public IRemoteConnection getLastActiveConnection(ILaunchConfigurationType launchConfigType) {
+ String remoteId = getPreferences(REMOTE_LAUNCH_TYPE).get(launchConfigType.getIdentifier(), null);
+ return getRemoteConnection(remoteId);
+ }
+
+}
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/messages/Messages.java b/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/messages/Messages.java
new file mode 100644
index 00000000000..306928d81c6
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/messages/Messages.java
@@ -0,0 +1,20 @@
+package org.eclipse.remote.internal.core.messages;
+
+import org.eclipse.osgi.util.NLS;
+
+public class Messages extends NLS {
+ private static final String BUNDLE_NAME = "org.eclipse.remote.internal.core.messages.messages"; //$NON-NLS-1$
+ public static String LocalConnection_1;
+ public static String LocalConnection_2;
+ public static String RemoteServicesProxy_0;
+ public static String RemoteServicesProxy_1;
+ public static String Unable_to_create_new_local_connections;
+
+ static {
+ // initialize resource bundle
+ NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+ }
+
+ private Messages() {
+ }
+}
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/messages/messages.properties b/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/messages/messages.properties
new file mode 100644
index 00000000000..501161fef7d
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/messages/messages.properties
@@ -0,0 +1,5 @@
+LocalConnection_1=localhost
+LocalConnection_2=Port forwarding not supported
+Unable_to_create_new_local_connections=Unable to create new local connections
+RemoteServicesProxy_0=Missing {0} attribute
+RemoteServicesProxy_1=Failed to instantiate factory: {0} in type: {1} in plugin: {2}
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/preferences/PreferenceInitializer.java b/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/preferences/PreferenceInitializer.java
new file mode 100644
index 00000000000..0ba21c8d684
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/preferences/PreferenceInitializer.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * Copyright (c) 2012 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.remote.internal.core.preferences;
+
+import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
+import org.eclipse.remote.core.IRemotePreferenceConstants;
+
+/**
+ * Class used to initialize default preference values.
+ *
+ * @since 6.0
+ */
+public class PreferenceInitializer extends AbstractPreferenceInitializer {
+
+ @Override
+ public void initializeDefaultPreferences() {
+ Preferences.setDefaultString(IRemotePreferenceConstants.PREF_CONNECTION_TYPE_ID, "org.eclipse.remote.JSch"); //$NON-NLS-1$
+ }
+}
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/preferences/Preferences.java b/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/preferences/Preferences.java
new file mode 100644
index 00000000000..88e14f49981
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/preferences/Preferences.java
@@ -0,0 +1,495 @@
+/*******************************************************************************
+ * Copyright (c) 2011 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.internal.core.preferences;
+
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.preferences.DefaultScope;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences.IPreferenceChangeListener;
+import org.eclipse.core.runtime.preferences.IScopeContext;
+import org.eclipse.core.runtime.preferences.InstanceScope;
+import org.eclipse.remote.internal.core.RemoteCorePlugin;
+import org.osgi.service.prefs.BackingStoreException;
+
+/**
+ * Convenience class to facilitate using the new {@link IEclipsePreferences} story. Adapted from
+ * org.eclipse.debug.internal.core.Preferences.
+ *
+ * @since 5.0
+ * @noinstantiate This class is not intended to be instantiated by clients.
+ */
+public final class Preferences {
+
+ private static final IScopeContext[] contexts = new IScopeContext[] { DefaultScope.INSTANCE,
+ InstanceScope.INSTANCE };
+
+ private static final int DEFAULT_CONTEXT = 0;
+ private static final int INSTANCE_CONTEXT = 1;
+
+ private static final String fQualifier = RemoteCorePlugin.getUniqueIdentifier();
+
+ /**
+ * Adds the given preference listener to the {@link DefaultScope} and the {@link InstanceScope}
+ *
+ * @param listener
+ */
+ public static void addPreferenceChangeListener(IPreferenceChangeListener listener) {
+ contexts[DEFAULT_CONTEXT].getNode(fQualifier).addPreferenceChangeListener(listener);
+ contexts[INSTANCE_CONTEXT].getNode(fQualifier).addPreferenceChangeListener(listener);
+ }
+
+ /**
+ * Returns whether the named preference is know in the preference store.
+ *
+ * @param name
+ * @return
+ */
+ public static boolean contains(String name) {
+ return (contexts[INSTANCE_CONTEXT].getNode(fQualifier).get(name, null) != null
+ || contexts[DEFAULT_CONTEXT].getNode(fQualifier).get(name, null) != null);
+ }
+
+ /**
+ * Returns the value in the preference store for the given key. If the key
+ * is not defined then return the default value. Use the canonical scope
+ * lookup order for finding the preference value.
+ *
+ * @param key
+ * @param defaultvalue
+ *
+ * @return the value of the preference or the given default value
+ */
+ public static boolean getBoolean(String key) {
+ return Platform.getPreferencesService().getBoolean(fQualifier, key, false, null);
+ }
+
+ /**
+ * Returns the value in the preference store for the given key. If the key
+ * is not defined then return the default value. Use the canonical scope
+ * lookup order for finding the preference value.
+ *
+ * @param key
+ * @param defaultvalue
+ *
+ * @return the value of the preference or the given default value
+ */
+ public static byte[] getByteArray(String key) {
+ return Platform.getPreferencesService().getByteArray(fQualifier, key, null, null);
+ }
+
+ /**
+ * Returns the default boolean value stored in the {@link DefaultScope} for
+ * the given key or the specified default value if the key does not appear
+ * in the {@link DefaultScope}
+ *
+ * @param key
+ * @param defaultvalue
+ *
+ * @return the boolean value set in the {@link DefaultScope} for the given
+ * key, or the specified default value.
+ */
+ public static synchronized boolean getDefaultBoolean(String key, boolean defaultvalue) {
+ return contexts[DEFAULT_CONTEXT].getNode(fQualifier).getBoolean(key, defaultvalue);
+ }
+
+ /**
+ * Returns the default byte array value stored in the {@link DefaultScope} for the given key or the specified default value if
+ * the key does not
+ * appear in the {@link DefaultScope}
+ *
+ * @param key
+ * @param defaultvalue
+ *
+ * @return the byte array value set in the {@link DefaultScope} for the
+ * given key, or the specified default value.
+ */
+ public static synchronized byte[] getDefaultByteArray(String key, byte[] defaultvalue) {
+ return contexts[DEFAULT_CONTEXT].getNode(fQualifier).getByteArray(key, defaultvalue);
+ }
+
+ /**
+ * Returns the default double value stored in the {@link DefaultScope} for
+ * the given key or the specified default value if the key does not appear
+ * in the {@link DefaultScope}
+ *
+ * @param key
+ * @param defaultvalue
+ *
+ * @return the double value set in the {@link DefaultScope} for the given
+ * key, or the specified default value.
+ */
+ public static synchronized double getDefaultDouble(String key, double defaultvalue) {
+ return contexts[DEFAULT_CONTEXT].getNode(fQualifier).getDouble(key, defaultvalue);
+ }
+
+ /**
+ * Returns the default float value stored in the {@link DefaultScope} for
+ * the given key or the specified default value if the key does not appear
+ * in the {@link DefaultScope}
+ *
+ * @param key
+ * @param defaultvalue
+ *
+ * @return the float value set in the {@link DefaultScope} for the given
+ * key, or the specified default value.
+ */
+ public static synchronized float getDefaultFloat(String key, float defaultvalue) {
+ return contexts[DEFAULT_CONTEXT].getNode(fQualifier).getFloat(key, defaultvalue);
+ }
+
+ /**
+ * Returns the default integer value stored in the {@link DefaultScope} for
+ * the given key or the specified default value if the key does not appear
+ * in the {@link DefaultScope}
+ *
+ * @param key
+ * @param defaultvalue
+ *
+ * @return the integer value set in the {@link DefaultScope} for the given
+ * key, or the specified default value.
+ */
+ public static synchronized int getDefaultInt(String key, int defaultvalue) {
+ return contexts[DEFAULT_CONTEXT].getNode(fQualifier).getInt(key, defaultvalue);
+ }
+
+ /**
+ * Returns the default long value stored in the {@link DefaultScope} for the
+ * given key or the specified default value if the key does not appear in
+ * the {@link DefaultScope}
+ *
+ * @param key
+ * @param defaultvalue
+ *
+ * @return the long value set in the {@link DefaultScope} for the given key,
+ * or the specified default value.
+ */
+ public static synchronized long getDefaultLong(String key, long defaultvalue) {
+ return contexts[DEFAULT_CONTEXT].getNode(fQualifier).getLong(key, defaultvalue);
+ }
+
+ /**
+ * Returns the default string value stored in the {@link DefaultScope} for
+ * the given key or the specified default value if the key does not appear
+ * in the {@link DefaultScope}
+ *
+ * @param key
+ * @param defaultvalue
+ *
+ * @return the string value set in the {@link DefaultScope} for the given
+ * key, or the specified default value.
+ */
+ public static synchronized String getDefaultString(String key, String defaultvalue) {
+ return contexts[DEFAULT_CONTEXT].getNode(fQualifier).get(key, defaultvalue);
+ }
+
+ /**
+ * Returns the value in the preference store for the given key. If the key
+ * is not defined then return the default value. Use the canonical scope
+ * lookup order for finding the preference value.
+ *
+ * @param key
+ * @param defaultvalue
+ *
+ * @return the value of the preference or the given default value
+ */
+ public static double getDouble(String key) {
+ return Platform.getPreferencesService().getDouble(fQualifier, key, 0.0, null);
+ }
+
+ /**
+ * Returns the value in the preference store for the given key. If the key
+ * is not defined then return the default value. Use the canonical scope
+ * lookup order for finding the preference value.
+ *
+ * @param fQualifier
+ * @param key
+ * @param defaultvalue
+ *
+ * @return the value of the preference or the given default value
+ */
+ public static float getFloat(String key) {
+ return Platform.getPreferencesService().getFloat(fQualifier, key, 0.0f, null);
+ }
+
+ /**
+ * Returns the value in the preference store for the given key. If the key
+ * is not defined then return the default value. Use the canonical scope
+ * lookup order for finding the preference value.
+ *
+ * @param fQualifier
+ * @param key
+ * @param defaultvalue
+ *
+ * @return the value of the preference or the given default value
+ */
+ public static int getInt(String key) {
+ return Platform.getPreferencesService().getInt(fQualifier, key, 0, null);
+ }
+
+ /**
+ * Returns the value in the preference store for the given key. If the key
+ * is not defined then return the default value. Use the canonical scope
+ * lookup order for finding the preference value.
+ *
+ * @param key
+ * @param defaultvalue
+ *
+ * @return the value of the preference or the given default value
+ */
+ public static long getLong(String key) {
+ return Platform.getPreferencesService().getLong(fQualifier, key, 0L, null);
+ }
+
+ /**
+ * Returns the value in the preference store for the given key. If the key
+ * is not defined then return the default value. Use the canonical scope
+ * lookup order for finding the preference value.
+ *
+ * @param key
+ * @param defaultvalue
+ *
+ * @return the value of the preference or the given default value
+ */
+ public static String getString(String key) {
+ return Platform.getPreferencesService().getString(fQualifier, key, null, null);
+ }
+
+ /**
+ * Returns true if the named preference has the default value.
+ *
+ * @param name
+ * @return
+ */
+ public static boolean isDefault(String name) {
+ String defVal = contexts[DEFAULT_CONTEXT].getNode(fQualifier).get(name, null);
+ if (defVal != null) {
+ String val = contexts[INSTANCE_CONTEXT].getNode(fQualifier).get(name, null);
+ return (val != null && val.equals(defVal));
+ }
+ return false;
+ }
+
+ /**
+ * Removes the given preference listener from the {@link DefaultScope} and
+ * the {@link InstanceScope}
+ *
+ * @param listener
+ */
+ public static void removePreferenceChangeListener(IPreferenceChangeListener listener) {
+ contexts[DEFAULT_CONTEXT].getNode(fQualifier).removePreferenceChangeListener(listener);
+ contexts[INSTANCE_CONTEXT].getNode(fQualifier).removePreferenceChangeListener(listener);
+ }
+
+ /**
+ * Save the preferences for the given plugin identifier. It should be noted
+ * that all pending preference changes will be flushed with this method.
+ */
+ public static synchronized void savePreferences() {
+ try {
+ contexts[DEFAULT_CONTEXT].getNode(fQualifier).flush();
+ contexts[INSTANCE_CONTEXT].getNode(fQualifier).flush();
+ } catch (BackingStoreException bse) {
+ RemoteCorePlugin.log(bse);
+ }
+ }
+
+ /**
+ * Sets a boolean preference in the {@link InstanceScope}.
+ *
+ * @param key
+ * the key
+ * @param value
+ * the value
+ */
+ public static synchronized void setBoolean(String key, boolean value) {
+ contexts[INSTANCE_CONTEXT].getNode(fQualifier).putBoolean(key, value);
+ }
+
+ /**
+ * Sets a byte array preference in the {@link InstanceScope}.
+ *
+ * @param key
+ * the key
+ * @param value
+ * the value
+ */
+ public static synchronized void setByteArray(String key, byte[] value) {
+ contexts[INSTANCE_CONTEXT].getNode(fQualifier).putByteArray(key, value);
+ }
+
+ /**
+ * Sets a boolean in the {@link DefaultScope}
+ *
+ * @param key
+ * the key
+ * @param value
+ * the new value
+ */
+ public static synchronized void setDefaultBoolean(String key, boolean value) {
+ contexts[DEFAULT_CONTEXT].getNode(fQualifier).putBoolean(key, value);
+ }
+
+ /**
+ * Sets a byte array in the {@link DefaultScope}
+ *
+ * @param key
+ * the key
+ * @param value
+ * the new value
+ */
+ public static synchronized void setDefaultByteArray(String key, byte[] value) {
+ contexts[DEFAULT_CONTEXT].getNode(fQualifier).putByteArray(key, value);
+ }
+
+ /**
+ * Sets a double in the {@link DefaultScope}
+ *
+ * @param key
+ * the key
+ * @param value
+ * the new value
+ */
+ public static synchronized void setDefaultDouble(String key, double value) {
+ contexts[DEFAULT_CONTEXT].getNode(fQualifier).putDouble(key, value);
+ }
+
+ /**
+ * Sets a float in the {@link DefaultScope}
+ *
+ * @param key
+ * the key
+ * @param value
+ * the new value
+ */
+ public static synchronized void setDefaultFloat(String key, float value) {
+ contexts[DEFAULT_CONTEXT].getNode(fQualifier).putFloat(key, value);
+ }
+
+ /**
+ * Sets a integer in the {@link DefaultScope}
+ *
+ * @param key
+ * the key
+ * @param value
+ * the new value
+ */
+ public static synchronized void setDefaultInt(String key, int value) {
+ contexts[DEFAULT_CONTEXT].getNode(fQualifier).putInt(key, value);
+ }
+
+ /**
+ * Sets a long in the {@link DefaultScope}
+ *
+ * @param key
+ * the key
+ * @param value
+ * the new value
+ */
+ public static synchronized void setDefaultLong(String key, long value) {
+ contexts[DEFAULT_CONTEXT].getNode(fQualifier).putLong(key, value);
+ }
+
+ /**
+ * Sets a string in the {@link DefaultScope}
+ *
+ * @param key
+ * the key
+ * @param value
+ * the new value
+ */
+ public static synchronized void setDefaultString(String key, String value) {
+ contexts[DEFAULT_CONTEXT].getNode(fQualifier).put(key, value);
+ }
+
+ /**
+ * Sets a double preference in the {@link InstanceScope}.
+ *
+ * @param key
+ * the key
+ * @param value
+ * the value
+ */
+ public static synchronized void setDouble(String key, double value) {
+ contexts[INSTANCE_CONTEXT].getNode(fQualifier).putDouble(key, value);
+ }
+
+ /**
+ * Sets a float preference in the {@link InstanceScope}.
+ *
+ * @param key
+ * the key
+ * @param value
+ * the value
+ */
+ public static synchronized void setFloat(String key, float value) {
+ contexts[INSTANCE_CONTEXT].getNode(fQualifier).putFloat(key, value);
+ }
+
+ /**
+ * Sets a integer preference in the {@link InstanceScope}.
+ *
+ * @param key
+ * the key
+ * @param value
+ * the value
+ */
+ public static synchronized void setInt(String key, int value) {
+ contexts[INSTANCE_CONTEXT].getNode(fQualifier).putInt(key, value);
+ }
+
+ /**
+ * Sets a long preference in the {@link InstanceScope}.
+ *
+ * @param key
+ * the key
+ * @param value
+ * the value
+ */
+ public static synchronized void setLong(String key, long value) {
+ contexts[INSTANCE_CONTEXT].getNode(fQualifier).putLong(key, value);
+ }
+
+ /**
+ * Sets a string preference in the {@link InstanceScope}.
+ *
+ * @param key
+ * the key
+ * @param value
+ * the value
+ */
+ public static synchronized void setString(String key, String value) {
+ contexts[INSTANCE_CONTEXT].getNode(fQualifier).put(key, value);
+ }
+
+ /**
+ * Sets the given preference to its default value. This is done by removing
+ * any set value from the {@link InstanceScope}. Has no effect if the given
+ * key is <code>null</code>.
+ *
+ * @param key
+ * the key for the preference
+ */
+ public static synchronized void setToDefault(String key) {
+ if (key != null) {
+ contexts[INSTANCE_CONTEXT].getNode(fQualifier).remove(key);
+ }
+ }
+
+ /**
+ * Constructor
+ */
+ private Preferences() {
+ // no direct instantiation
+ }
+}
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/services/local/LocalCommandShellService.java b/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/services/local/LocalCommandShellService.java
new file mode 100644
index 00000000000..dbf6132f0f6
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/services/local/LocalCommandShellService.java
@@ -0,0 +1,69 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.internal.core.services.local;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.remote.core.IRemoteCommandShellService;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteConnection.Service;
+import org.eclipse.remote.core.IRemoteProcess;
+import org.eclipse.remote.core.IRemoteProcessBuilder;
+import org.eclipse.remote.core.IRemoteProcessService;
+
+public class LocalCommandShellService implements IRemoteCommandShellService {
+
+ private final IRemoteConnection connection;
+
+ public LocalCommandShellService(IRemoteConnection connection) {
+ this.connection = connection;
+ }
+
+ public static class Factory implements IRemoteCommandShellService.Factory {
+ @SuppressWarnings("unchecked")
+ @Override
+ public <T extends Service> T getService(IRemoteConnection remoteConnection, Class<T> service) {
+ if (service.equals(IRemoteCommandShellService.class)) {
+ return (T) new LocalCommandShellService(remoteConnection);
+ }
+ return null;
+ }
+ }
+
+ @Override
+ public IRemoteConnection getRemoteConnection() {
+ return connection;
+ }
+
+ @SuppressWarnings("nls")
+ @Override
+ public IRemoteProcess getCommandShell(int flags) throws IOException {
+ IRemoteProcessService procService = connection.getService(IRemoteProcessService.class);
+ String[] command;
+ if (Platform.getOS().equals(Platform.OS_WIN32)) {
+ command = new String[] { "cmd" };
+ } else {
+ List<String> list = new ArrayList<>(Arrays.asList(System.getenv("SHELL").split("\\s+")));
+ list.add("-l");
+ command = list.toArray(new String[list.size()]);
+ }
+ IRemoteProcessBuilder builder = procService.getProcessBuilder(command);
+ return builder.start(IRemoteProcessBuilder.ALLOCATE_PTY);
+ }
+
+}
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/services/local/LocalConnectionHostService.java b/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/services/local/LocalConnectionHostService.java
new file mode 100644
index 00000000000..d11d8b55f7a
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/services/local/LocalConnectionHostService.java
@@ -0,0 +1,130 @@
+/*******************************************************************************
+ * Copyright (c) 2007 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.internal.core.services.local;
+
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteConnection.Service;
+import org.eclipse.remote.core.IRemoteConnectionHostService;
+
+public class LocalConnectionHostService implements IRemoteConnectionHostService {
+
+ private final IRemoteConnection connection;
+
+ public LocalConnectionHostService(IRemoteConnection connection) {
+ this.connection = connection;
+ }
+
+ public static class Factory implements IRemoteConnectionHostService.Factory {
+ @SuppressWarnings("unchecked")
+ @Override
+ public <T extends Service> T getService(IRemoteConnection remoteConnection, Class<T> service) {
+ if (service.equals(IRemoteConnectionHostService.class)) {
+ return (T) new LocalConnectionHostService(remoteConnection);
+ }
+ return null;
+ }
+ }
+
+ @Override
+ public IRemoteConnection getRemoteConnection() {
+ return this.connection;
+ }
+
+ @Override
+ public String getHostname() {
+ try {
+ return InetAddress.getLocalHost().getHostName();
+ } catch (UnknownHostException e) {
+ return "unknown"; //$NON-NLS-1$
+ }
+ }
+
+ @Override
+ public String getPassphrase() {
+ return ""; //$NON-NLS-1$
+ }
+
+ @Override
+ public String getPassword() {
+ return ""; //$NON-NLS-1$
+ }
+
+ @Override
+ public int getPort() {
+ return 0;
+ }
+
+ @Override
+ public int getTimeout() {
+ return 0;
+ }
+
+ @Override
+ public boolean useLoginShell() {
+ return true;
+ }
+
+ @Override
+ public String getUsername() {
+ return System.getProperty("user.name"); //$NON-NLS-1$
+ }
+
+ @Override
+ public void setHostname(String hostname) {
+ // Ignored
+ }
+
+ @Override
+ public void setPassphrase(String passphrase) {
+ // Ignored
+ }
+
+ @Override
+ public void setPassword(String password) {
+ // Ignored
+ }
+
+ @Override
+ public void setPort(int port) {
+ // Ignored
+ }
+
+ @Override
+ public void setTimeout(int timeout) {
+ // Ignored
+ }
+
+ @Override
+ public void setUseLoginShell(boolean useLogingShell) {
+ // Ignored
+ }
+
+ @Override
+ public void setUsePassword(boolean usePassword) {
+ // Ignored
+ }
+
+ @Override
+ public void setUsername(String username) {
+ // Ignored
+ }
+
+ @Override
+ public boolean usePassword() {
+ return false;
+ }
+}
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/services/local/LocalConnectionPropertyService.java b/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/services/local/LocalConnectionPropertyService.java
new file mode 100644
index 00000000000..27f00ac311e
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/services/local/LocalConnectionPropertyService.java
@@ -0,0 +1,58 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.internal.core.services.local;
+
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteConnection.Service;
+import org.eclipse.remote.core.IRemoteConnectionPropertyService;
+import org.eclipse.remote.internal.core.RemoteCorePlugin;
+
+public class LocalConnectionPropertyService implements IRemoteConnectionPropertyService {
+
+ private final IRemoteConnection connection;
+
+ public LocalConnectionPropertyService(IRemoteConnection connection) {
+ this.connection = connection;
+ }
+
+ public static class Factory implements IRemoteConnectionPropertyService.Factory {
+ @SuppressWarnings("unchecked")
+ @Override
+ public <T extends Service> T getService(IRemoteConnection remoteConnection, Class<T> service) {
+ if (service.equals(IRemoteConnectionPropertyService.class)) {
+ return (T) new LocalConnectionPropertyService(remoteConnection);
+ }
+ return null;
+ }
+ }
+
+ @Override
+ public IRemoteConnection getRemoteConnection() {
+ return connection;
+ }
+
+ @Override
+ public String getProperty(String key) {
+ switch (key) {
+ case IRemoteConnection.OS_NAME_PROPERTY:
+ return RemoteCorePlugin.getDefault().getBundle().getBundleContext().getProperty("osgi.os"); //$NON-NLS-1$
+ case IRemoteConnection.OS_ARCH_PROPERTY:
+ return RemoteCorePlugin.getDefault().getBundle().getBundleContext().getProperty("osgi.arch"); //$NON-NLS-1$
+ case IRemoteConnection.LOCALE_CHARMAP_PROPERTY:
+ return System.getProperty("file.encoding"); //$NON-NLS-1$
+ }
+ return System.getProperty(key);
+ }
+
+}
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/services/local/LocalConnectionProviderService.java b/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/services/local/LocalConnectionProviderService.java
new file mode 100644
index 00000000000..8b811b7e354
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/services/local/LocalConnectionProviderService.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.internal.core.services.local;
+
+import org.eclipse.remote.core.IRemoteConnectionProviderService;
+import org.eclipse.remote.core.IRemoteConnectionType;
+import org.eclipse.remote.core.IRemoteConnectionType.Service;
+import org.eclipse.remote.core.exception.RemoteConnectionException;
+import org.eclipse.remote.internal.core.RemoteCorePlugin;
+
+public class LocalConnectionProviderService implements IRemoteConnectionProviderService {
+
+ private static final String localConnectionName = Messages.LocalConnectionProviderService_LocalConnectionName;
+
+ private IRemoteConnectionType connectionType;
+
+ public static class Factory implements IRemoteConnectionType.Service.Factory {
+ @SuppressWarnings("unchecked")
+ @Override
+ public <T extends Service> T getService(IRemoteConnectionType connectionType, Class<T> service) {
+ if (service.equals(IRemoteConnectionProviderService.class)) {
+ return (T) new LocalConnectionProviderService(connectionType);
+ }
+ return null;
+ }
+ }
+
+ public LocalConnectionProviderService(IRemoteConnectionType connectionType) {
+ this.connectionType = connectionType;
+ }
+
+ @Override
+ public void init() {
+ if (connectionType.getConnections().isEmpty()) {
+ try {
+ connectionType.newConnection(localConnectionName).save();
+ } catch (RemoteConnectionException e) {
+ RemoteCorePlugin.log(e.getStatus());
+ }
+ }
+ }
+
+ @Override
+ public IRemoteConnectionType getConnectionType() {
+ return connectionType;
+ }
+
+}
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/services/local/LocalFileService.java b/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/services/local/LocalFileService.java
new file mode 100644
index 00000000000..b9aa823302f
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/services/local/LocalFileService.java
@@ -0,0 +1,87 @@
+/*******************************************************************************
+ * Copyright (c) 2007 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.internal.core.services.local;
+
+import java.net.URI;
+
+import org.eclipse.core.filesystem.EFS;
+import org.eclipse.core.filesystem.IFileStore;
+import org.eclipse.core.filesystem.URIUtil;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteConnection.Service;
+import org.eclipse.remote.core.IRemoteFileService;
+import org.eclipse.remote.core.IRemoteProcessService;
+
+public class LocalFileService implements IRemoteFileService {
+
+ private final IRemoteConnection connection;
+
+ public LocalFileService(IRemoteConnection connection) {
+ this.connection = connection;
+ }
+
+ public static class Factory implements IRemoteFileService.Factory {
+ @SuppressWarnings("unchecked")
+ @Override
+ public <T extends Service> T getService(IRemoteConnection remoteConnection, Class<T> service) {
+ if (IRemoteFileService.class.equals(service)) {
+ return (T) new LocalFileService(remoteConnection);
+ }
+ return null;
+ }
+ }
+
+ @Override
+ public IRemoteConnection getRemoteConnection() {
+ return connection;
+ }
+
+ @Override
+ public String getDirectorySeparator() {
+ return System.getProperty("file.separator", "/"); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ @Override
+ public IFileStore getResource(String path) {
+ return EFS.getLocalFileSystem().getStore(Path.fromOSString(path));
+ }
+
+ @Override
+ public String getBaseDirectory() {
+ return connection.getService(IRemoteProcessService.class).getWorkingDirectory();
+ }
+
+ @Override
+ public void setBaseDirectory(String path) {
+ connection.getService(IRemoteProcessService.class).setWorkingDirectory(path);
+ }
+
+ @Override
+ public String toPath(URI uri) {
+ return URIUtil.toPath(uri).toString();
+ }
+
+ @Override
+ public URI toURI(IPath path) {
+ return URIUtil.toURI(path);
+ }
+
+ @Override
+ public URI toURI(String path) {
+ return URIUtil.toURI(path);
+ }
+
+}
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/services/local/LocalProcess.java b/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/services/local/LocalProcess.java
new file mode 100644
index 00000000000..b72c06b3c5b
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/services/local/LocalProcess.java
@@ -0,0 +1,209 @@
+/*******************************************************************************
+ * Copyright (c) 2007 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.internal.core.services.local;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.PipedInputStream;
+import java.io.PipedOutputStream;
+
+import org.eclipse.cdt.utils.pty.PTY;
+import org.eclipse.remote.core.IRemoteProcess;
+import org.eclipse.remote.core.IRemoteProcessControlService;
+import org.eclipse.remote.core.IRemoteProcessTerminalService;
+
+public class LocalProcess implements IRemoteProcessControlService, IRemoteProcessTerminalService {
+ private static int refCount = 0;
+
+ private final IRemoteProcess remoteProcess;
+ private final Process localProcess;
+ private final PTY pty;
+ private int width, height;
+ private InputStream procStdout;
+ private InputStream procStderr;
+ private Thread stdoutReader;
+ private Thread stderrReader;
+ private final Thread completedChecker;
+ private volatile boolean isCompleted;
+
+ public static class Factory implements IRemoteProcess.Service.Factory {
+ @SuppressWarnings("unchecked")
+ @Override
+ public <T extends IRemoteProcess.Service> T getService(IRemoteProcess remoteProcess, Class<T> service) {
+ // This little trick creates an instance of this class
+ // then for each interface it implements, it returns the same object.
+ // This works because the connection caches the service so only one gets created.
+ // As a side effect, it makes this class a service too which can be used
+ // by the this plug-in
+ if (LocalProcess.class.equals(service)) {
+ return (T) new LocalProcess(remoteProcess);
+ }
+ if (IRemoteProcessControlService.class.equals(service)) {
+ return (T) remoteProcess.getService(LocalProcess.class);
+ }
+ if (IRemoteProcessTerminalService.class.equals(service)) {
+ return (T) remoteProcess.getService(LocalProcess.class);
+ }
+ return null;
+ }
+ }
+
+ /**
+ * Thread to merge stdout and stderr. Keeps refcount so that output stream
+ * is not closed too early.
+ *
+ */
+ private class ProcOutputMerger implements Runnable {
+ private final static int BUF_SIZE = 8192;
+
+ private final InputStream input;
+ private final OutputStream output;
+
+ public ProcOutputMerger(InputStream input, OutputStream output) {
+ this.input = input;
+ this.output = output;
+ synchronized (this.output) {
+ refCount++;
+ }
+ }
+
+ @Override
+ public void run() {
+ int len;
+ byte b[] = new byte[BUF_SIZE];
+
+ try {
+ while ((len = input.read(b)) > 0) {
+ output.write(b, 0, len);
+ }
+ } catch (IOException e) {
+ // Ignore
+ }
+ synchronized (output) {
+ if (--refCount == 0) {
+ try {
+ output.close();
+ } catch (IOException e) {
+ // Ignore
+ }
+ }
+ }
+ }
+ }
+
+ public class NullInputStream extends InputStream {
+ @Override
+ public int read() throws IOException {
+ return -1;
+ }
+
+ @Override
+ public int available() {
+ return 0;
+ }
+ }
+
+ public LocalProcess(IRemoteProcess process) {
+ remoteProcess = process;
+ LocalProcessBuilder builder = (LocalProcessBuilder) process.getProcessBuilder();
+ localProcess = builder.getProcess();
+ pty = builder.getPty();
+
+ try {
+ if (process.getProcessBuilder().redirectErrorStream()) {
+ PipedOutputStream pipedOutput = new PipedOutputStream();
+
+ procStderr = new NullInputStream();
+ procStdout = new PipedInputStream(pipedOutput);
+
+ stderrReader = new Thread(new ProcOutputMerger(localProcess.getErrorStream(), pipedOutput));
+ stdoutReader = new Thread(new ProcOutputMerger(localProcess.getInputStream(), pipedOutput));
+
+ stderrReader.start();
+ stdoutReader.start();
+ } else {
+ procStderr = localProcess.getErrorStream();
+ procStdout = localProcess.getInputStream();
+ }
+ } catch (IOException e) {
+ localProcess.destroy();
+ }
+
+ completedChecker = new Thread(new Runnable() {
+ @Override
+ public void run() {
+ while (!isCompleted) {
+ try {
+ localProcess.waitFor();
+ } catch (InterruptedException e) {
+ continue;
+ }
+ isCompleted = true;
+ }
+ }
+
+ });
+ completedChecker.start();
+ }
+
+ @Override
+ public void destroy() {
+ localProcess.destroy();
+ }
+
+ @Override
+ public int exitValue() {
+ return localProcess.exitValue();
+ }
+
+ @Override
+ public InputStream getErrorStream() {
+ return procStderr;
+ }
+
+ @Override
+ public InputStream getInputStream() {
+ return procStdout;
+ }
+
+ @Override
+ public OutputStream getOutputStream() {
+ return localProcess.getOutputStream();
+ }
+
+ @Override
+ public int waitFor() throws InterruptedException {
+ return localProcess.waitFor();
+ }
+
+ @Override
+ public boolean isCompleted() {
+ return isCompleted;
+ }
+
+ @Override
+ public IRemoteProcess getRemoteProcess() {
+ return remoteProcess;
+ }
+
+ @Override
+ public void setTerminalSize(int cols, int rows, int pwidth, int pheight) {
+ if (pty != null && (width != cols || height != rows)) {
+ width = cols;
+ height = rows;
+ pty.setTerminalSize(width, height);
+ }
+ }
+}
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/services/local/LocalProcessBuilder.java b/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/services/local/LocalProcessBuilder.java
new file mode 100644
index 00000000000..3f7a4a3a2f4
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/services/local/LocalProcessBuilder.java
@@ -0,0 +1,183 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2010 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.internal.core.services.local;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import org.eclipse.cdt.utils.pty.PTY;
+import org.eclipse.cdt.utils.pty.PTY.Mode;
+import org.eclipse.cdt.utils.spawner.ProcessFactory;
+import org.eclipse.core.filesystem.EFS;
+import org.eclipse.core.filesystem.IFileStore;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtension;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.IExtensionRegistry;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.remote.core.AbstractRemoteProcessBuilder;
+import org.eclipse.remote.core.IProcessFactory;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteProcess;
+import org.eclipse.remote.core.IRemoteProcessBuilder;
+import org.eclipse.remote.internal.core.RemoteCorePlugin;
+import org.eclipse.remote.internal.core.RemoteProcess;
+
+public class LocalProcessBuilder extends AbstractRemoteProcessBuilder {
+ private static final String EXTENSION_POINT_ID = "processFactory"; //$NON-NLS-1$
+ private static final String ATTR_CLASS = "class"; //$NON-NLS-1$
+
+ private final IProcessFactory fProcessFactory;
+ private final Map<String, String> fRemoteEnv = new HashMap<>();
+
+ private Process localProcess;
+ private PTY pty;
+
+ public LocalProcessBuilder(IRemoteConnection connection, List<String> command) {
+ super(connection, command);
+ fRemoteEnv.putAll(System.getenv());
+ fProcessFactory = getProcessFactory();
+ }
+
+ public LocalProcessBuilder(IRemoteConnection connection, String... command) {
+ this(connection, Arrays.asList(command));
+ }
+
+ @Override
+ public IFileStore directory() {
+ IFileStore dir = super.directory();
+ if (dir == null) {
+ String userDir = System.getProperty("user.dir"); //$NON-NLS-1$
+ if (userDir != null) {
+ dir = EFS.getLocalFileSystem().getStore(Path.fromOSString(userDir));
+ directory(dir);
+ }
+ }
+ return dir;
+ }
+
+ @Override
+ public Map<String, String> environment() {
+ return fRemoteEnv;
+ }
+
+ @Override
+ public int getSupportedFlags() {
+ return NONE;
+ }
+
+ @Override
+ public IRemoteProcess start(int flags) throws IOException {
+ String commandArray[] = command().toArray(new String[0]);
+
+ if ((flags & IRemoteProcessBuilder.ALLOCATE_PTY) != 0) {
+ environment().put("TERM", "vt100"); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ String environmentArray[] = new String[environment().size()];
+ int index = 0;
+ for (Entry<String, String> entry : environment().entrySet()) {
+ environmentArray[index++] = entry.getKey() + "=" + entry.getValue(); //$NON-NLS-1$
+ }
+
+ try {
+ if ((flags & IRemoteProcessBuilder.ALLOCATE_PTY) != 0) {
+ pty = new PTY(Mode.TERMINAL);
+ File dir = directory() != null ? directory().toLocalFile(EFS.NONE, new NullProgressMonitor()) : null;
+ localProcess = ProcessFactory.getFactory().exec(commandArray, environmentArray, dir, pty);
+ } else {
+ if (directory() != null) {
+ localProcess = fProcessFactory.exec(commandArray, environmentArray,
+ directory().toLocalFile(EFS.NONE, new NullProgressMonitor()));
+ } else {
+ localProcess = fProcessFactory.exec(commandArray, environmentArray);
+ }
+ }
+ } catch (CoreException e) {
+ throw new IOException(e.getMessage());
+ }
+ return new RemoteProcess(getRemoteConnection(), this);
+ }
+
+ public Process getProcess() {
+ return localProcess;
+ }
+
+ public PTY getPty() {
+ return pty;
+ }
+
+ private IProcessFactory getProcessFactory() {
+ IExtensionRegistry registry = Platform.getExtensionRegistry();
+ IExtensionPoint extensionPoint = registry.getExtensionPoint(RemoteCorePlugin.getUniqueIdentifier(),
+ EXTENSION_POINT_ID);
+
+ IProcessFactory processFactory = null;
+
+ for (IExtension ext : extensionPoint.getExtensions()) {
+ final IConfigurationElement[] elements = ext.getConfigurationElements();
+
+ for (IConfigurationElement ce : elements) {
+ try {
+ processFactory = (IProcessFactory) ce.createExecutableExtension(ATTR_CLASS);
+ } catch (CoreException e) {
+ // Use default factory
+ }
+ }
+ }
+
+ if (processFactory == null) {
+ processFactory = new IProcessFactory() {
+ @Override
+ public Process exec(String cmd) throws IOException {
+ return Runtime.getRuntime().exec(cmd);
+ }
+
+ @Override
+ public Process exec(String[] cmdarray) throws IOException {
+ return Runtime.getRuntime().exec(cmdarray);
+ }
+
+ @Override
+ public Process exec(String[] cmdarray, String[] envp) throws IOException {
+ return Runtime.getRuntime().exec(cmdarray, envp);
+ }
+
+ @Override
+ public Process exec(String cmd, String[] envp) throws IOException {
+ return Runtime.getRuntime().exec(cmd, envp);
+ }
+
+ @Override
+ public Process exec(String cmd, String[] envp, File dir) throws IOException {
+ return Runtime.getRuntime().exec(cmd, envp, dir);
+ }
+
+ @Override
+ public Process exec(String[] cmdarray, String[] envp, File dir) throws IOException {
+ return Runtime.getRuntime().exec(cmdarray, envp, dir);
+ }
+ };
+ }
+
+ return processFactory;
+ }
+}
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/services/local/LocalProcessService.java b/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/services/local/LocalProcessService.java
new file mode 100644
index 00000000000..7dac4f81b5b
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/services/local/LocalProcessService.java
@@ -0,0 +1,76 @@
+package org.eclipse.remote.internal.core.services.local;
+
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.runtime.Path;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteConnection.Service;
+import org.eclipse.remote.core.IRemoteProcessBuilder;
+import org.eclipse.remote.core.IRemoteProcessService;
+
+public class LocalProcessService implements IRemoteProcessService {
+
+ private final IRemoteConnection remoteConnection;
+ private String workingDirectory;
+
+ public LocalProcessService(IRemoteConnection remoteConnection) {
+ this.remoteConnection = remoteConnection;
+ }
+
+ public static class Factory implements IRemoteProcessService.Factory {
+ @SuppressWarnings("unchecked")
+ @Override
+ public <T extends Service> T getService(IRemoteConnection remoteConnection, Class<T> service) {
+ if (IRemoteProcessService.class.equals(service)) {
+ return (T) new LocalProcessService(remoteConnection);
+ }
+ return null;
+ }
+ }
+
+ @Override
+ public IRemoteConnection getRemoteConnection() {
+ return remoteConnection;
+ }
+
+ @Override
+ public Map<String, String> getEnv() {
+ return System.getenv();
+ }
+
+ @Override
+ public String getEnv(String name) {
+ return System.getenv(name);
+ }
+
+ @Override
+ public IRemoteProcessBuilder getProcessBuilder(List<String> command) {
+ return new LocalProcessBuilder(remoteConnection, command);
+ }
+
+ @Override
+ public IRemoteProcessBuilder getProcessBuilder(String... command) {
+ return new LocalProcessBuilder(remoteConnection, command);
+ }
+
+ @Override
+ public String getWorkingDirectory() {
+ if (workingDirectory == null) {
+ workingDirectory = System.getProperty("user.home"); //$NON-NLS-1$
+ if (workingDirectory == null) {
+ workingDirectory = System.getProperty("user.dir"); //$NON-NLS-1$
+ if (workingDirectory == null) {
+ workingDirectory = Path.ROOT.toOSString();
+ }
+ }
+ }
+ return workingDirectory;
+ }
+
+ @Override
+ public void setWorkingDirectory(String path) {
+ workingDirectory = path;
+ }
+
+}
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/services/local/LocalResource.java b/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/services/local/LocalResource.java
new file mode 100644
index 00000000000..be943a9c3aa
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/services/local/LocalResource.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2011 IBM Corporation.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.internal.core.services.local;
+
+import java.net.URI;
+
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.remote.core.IRemoteResource;
+
+public class LocalResource implements IRemoteResource {
+ private IResource fResource;
+
+ public LocalResource(IResource resource) {
+ fResource = resource;
+ }
+
+ @Override
+ public URI getActiveLocationURI() {
+ return fResource.getLocationURI();
+ }
+
+ @Override
+ public IResource getResource() {
+ return fResource;
+ }
+
+ @Override
+ public void refresh(IProgressMonitor monitor) throws CoreException {
+ fResource.refreshLocal(IResource.DEPTH_INFINITE, monitor);
+ }
+
+ @Override
+ public void setResource(IResource resource) {
+ fResource = resource;
+ }
+}
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/services/local/Messages.java b/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/services/local/Messages.java
new file mode 100644
index 00000000000..571f9045ca8
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/services/local/Messages.java
@@ -0,0 +1,15 @@
+package org.eclipse.remote.internal.core.services.local;
+
+import org.eclipse.osgi.util.NLS;
+
+public class Messages extends NLS {
+ private static final String BUNDLE_NAME = "org.eclipse.remote.internal.core.services.local.messages"; //$NON-NLS-1$
+ public static String LocalConnectionProviderService_LocalConnectionName;
+ static {
+ // initialize resource bundle
+ NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+ }
+
+ private Messages() {
+ }
+}
diff --git a/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/services/local/messages.properties b/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/services/local/messages.properties
new file mode 100644
index 00000000000..e72dc8616fc
--- /dev/null
+++ b/remote/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/services/local/messages.properties
@@ -0,0 +1 @@
+LocalConnectionProviderService_LocalConnectionName=Local
diff --git a/remote/org.eclipse.remote.doc.isv/.project b/remote/org.eclipse.remote.doc.isv/.project
new file mode 100644
index 00000000000..f25b52a6f0c
--- /dev/null
+++ b/remote/org.eclipse.remote.doc.isv/.project
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.remote.doc.isv</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ </natures>
+</projectDescription>
diff --git a/remote/org.eclipse.remote.doc.isv/.settings/org.eclipse.core.resources.prefs b/remote/org.eclipse.remote.doc.isv/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/remote/org.eclipse.remote.doc.isv/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/remote/org.eclipse.remote.doc.isv/.settings/org.eclipse.pde.api.tools.prefs b/remote/org.eclipse.remote.doc.isv/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 00000000000..ec9fbf321d0
--- /dev/null
+++ b/remote/org.eclipse.remote.doc.isv/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,184 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITH_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_FIELD=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERCLASS_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_CHANGED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENTS=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETERS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Error
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Warning
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+MISSING_EE_DESCRIPTIONS=Warning
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=false
+changed_execution_env=Error
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+incompatible_api_component_version_report_major_without_breaking_change=Warning
+incompatible_api_component_version_report_minor_without_api_change=Warning
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/remote/org.eclipse.remote.doc.isv/.settings/org.eclipse.pde.prefs b/remote/org.eclipse.remote.doc.isv/.settings/org.eclipse.pde.prefs
new file mode 100644
index 00000000000..d2dc703ba9e
--- /dev/null
+++ b/remote/org.eclipse.remote.doc.isv/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,35 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=2
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=2
+compilers.p.missing-version-export-package=2
+compilers.p.missing-version-import-package=2
+compilers.p.missing-version-require-bundle=2
+compilers.p.no-required-att=0
+compilers.p.no.automatic.module=1
+compilers.p.not-externalized-att=1
+compilers.p.service.component.without.lazyactivation=1
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/remote/org.eclipse.remote.doc.isv/META-INF/MANIFEST.MF b/remote/org.eclipse.remote.doc.isv/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..481cefaea0a
--- /dev/null
+++ b/remote/org.eclipse.remote.doc.isv/META-INF/MANIFEST.MF
@@ -0,0 +1,15 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Eclipse Remote Development documentation plug-in
+Bundle-SymbolicName: org.eclipse.remote.doc.isv;singleton:=true
+Bundle-Version: 1.1.200.qualifier
+Bundle-Vendor: Eclipse PTP
+Require-Bundle: org.eclipse.remote.console,
+ org.eclipse.remote.core,
+ org.eclipse.remote.jsch.core,
+ org.eclipse.remote.jsch.ui,
+ org.eclipse.remote.serial.core,
+ org.eclipse.remote.serial.ui,
+ org.eclipse.remote.telnet.core,
+ org.eclipse.remote.telnet.ui,
+ org.eclipse.remote.ui
diff --git a/remote/org.eclipse.remote.doc.isv/about.html b/remote/org.eclipse.remote.doc.isv/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/remote/org.eclipse.remote.doc.isv/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/remote/org.eclipse.remote.doc.isv/build.properties b/remote/org.eclipse.remote.doc.isv/build.properties
new file mode 100644
index 00000000000..4f5ed0212bd
--- /dev/null
+++ b/remote/org.eclipse.remote.doc.isv/build.properties
@@ -0,0 +1,12 @@
+bin.includes = plugin.xml,\
+ META-INF/,\
+ html/,\
+ toc*.xml,\
+ css/,\
+ about.html,\
+ toc.xml,\
+ tocconcepts.xml,\
+ tocgettingstarted.xml,\
+ tocreference.xml,\
+ tocsamples.xml
+src.includes = about.html
diff --git a/remote/org.eclipse.remote.doc.isv/css/style.css b/remote/org.eclipse.remote.doc.isv/css/style.css
new file mode 100644
index 00000000000..00cc9fbc494
--- /dev/null
+++ b/remote/org.eclipse.remote.doc.isv/css/style.css
@@ -0,0 +1,17 @@
+code {
+ color: Crimson;
+ font-family: monaco,consolas,"courier new",monospace;
+ }
+
+pre {
+ background-color: lightgrey;
+ width: auto;
+ overflow: auto;
+ padding: 25px;
+ border: 1px solid navy;
+ margin: 1em;
+}
+
+p {
+ font: 15px arial, sans-serif;
+} \ No newline at end of file
diff --git a/remote/org.eclipse.remote.doc.isv/html/.gitignore b/remote/org.eclipse.remote.doc.isv/html/.gitignore
new file mode 100644
index 00000000000..07f43314f62
--- /dev/null
+++ b/remote/org.eclipse.remote.doc.isv/html/.gitignore
@@ -0,0 +1 @@
+/reference/
diff --git a/remote/org.eclipse.remote.doc.isv/html/concepts/concepts.html b/remote/org.eclipse.remote.doc.isv/html/concepts/concepts.html
new file mode 100644
index 00000000000..a000aa679f9
--- /dev/null
+++ b/remote/org.eclipse.remote.doc.isv/html/concepts/concepts.html
@@ -0,0 +1,76 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <title>Concepts</title>
+ <link rel="stylesheet" type="text/css" href="../../css/style.css">
+</style>
+</head>
+
+<body>
+<p>This section describes the main concepts and services implemented by the Eclipse remote framework.</p>
+
+<!--
+ Concepts
+-->
+
+<h1>Concepts</h1>
+
+<p>Some few concepts are needed to understand the framework's services overall. They are described in the next sections.</p>
+
+<h3>Connection type</h3>
+<p>An connection type (<code>IRemoteConnectionType</code>) abstracts a remote protocol to host access. As of version 2.0.1, the framework provides the <b>ssh</b> (implemented through JSch framework), <b>Telnet</b> and <b>Local</b> types.</p>
+<p>The connection type is obtained from the remote services manager either by passing its scheme ID (Identification) or an URI.</p>
+<p>It has the <code>newConnection</code> method where a new connection of this type is created. It also holds the list of all connections already created that belongs to it.</p>
+
+<h3>Remote connection</h3>
+<p>The remote connection (<code>IRemoteConnection</code>) interface is used to manage a connection to a single remote host. A connection must be established (open) before any other operations are permitted. All operations carried out on remote host should be evoked from its associated services, which are get with <code>getService</code> method.</p>
+<p>Connections are read-only objects. In order to change the attributes of a connection, a working copy (<code>IRemoteConnectionWorkingCopy</code>) must be created. The host attributes getters and setters can also be managed with connection host service (<code>IRemoteConnectionHostService</code>).
+
+<p>Every remote connection belongs to a connection type.</p>
+
+
+<h3>Remote resource</h3>
+<p>The remote resource interface (<code>IRemoteResource</code>) provides an adapter to a remote resource.</p>
+<p>As of version 2.0.1, there are two types of remote resources: fully remote and synchronized. This interface provides a common mechanism for accessing resource information from either types.</p>
+
+<h3>Process builder</h3>
+<p>The process builder (<code>IRemoteProcessBuilder</code>) provides process operations on the remote host. This interface is intended to be a drop-in replacement for the Java SE <code>ProcessBuilder</code> class. See the <code>java.lang.ProcessBuilder</code> documentation for a description of the methods.</p>
+<p>It is obtained from the process service (see <code>IRemoteProcessService</code> below) associated with a connection object that holds access information to the remote host.</p>
+
+<h3>Remote process</h3>
+<p>The remote process (<code>IRemoteProcess</code>) represents a process running on the remote host. Use it to manage the process (destroy), get exit status, and input/output/error streams.</p>
+<p>Remote process are created using the <code>IRemoteProcessBuilder</code> interface.</p>
+
+<!--
+ Services
+-->
+
+<h1>Services</h1>
+
+<p>The remote services are implemented as OSGi services. There are available non-UI (core) and UI services.</p>
+
+<p>Any given service can be associated with objects of the model (concepts) or nested to another one. In either case, an service instance is obtained by calling the <code>getService</code> method of its object's provider.</p>
+
+<p>The main remote services are detailed in the next sections.</p>
+
+<h3>Services manager</h3>
+<p>The services manager (<code>IRemoteServicesManager</code>) interface provides the <b>main entry point</b> for accessing remote services. It can be obtained by calling <code>RemoteServicesUtils.getService(IRemoteServicesManager.class)</code> or using the Plugin's bundle context to access a OSGi service.</p>
+<p>It provides access to connection types implemented by the framework and any connection already created.</p>
+
+<h3>File Service</h3>
+<p>The file service (<code>IRemoteFileService</code>) provides remote file manipulation operations on a given connection. It is obtained from a remote connection object by calling its <code>getService(IRemoteFileService.class)</code> method.</p>
+
+<p>Using this interface, a path can be translated into an <code>IFileStore</code> object, and then manipulated using any of the normal EFS operations.</p>
+<p>Its UI counterpart service (<code>IRemoteUIFileService</code>) comes with dialog widgets to browse files and directories on remote filesystem.
+
+<h3>Process Service</h3>
+<p>The process service (<code>IRemoteProcessService</code>) provides services for starting up processes on a remote host. It is obtained from a remote connection object by calling its <code>getService(IRemoteProcessService.class)</code> method.</p>
+<p>It is the entry point to get an <code>IRemoteProcessBuilder</code> object, used to spawn processes on the remote host. Environment variables of remote host are accessed using this service too.</p>
+
+<h3>Connection Service</h3>
+<p>The UI Connection service (<code>IRemoteUIConnectionService</code>) is used for manipulating connections in the UI, such as adding, editing, and opening connections.</p>
+<p>Non-UI connection manipulation should use the <code>IRemoteConnectionType</code> interface (obtained from services manager) and the services related with <code>IRemoteConnection</code> interface.</p>
+</body>
+</html>
diff --git a/remote/org.eclipse.remote.doc.isv/html/gettingstarted/intro.html b/remote/org.eclipse.remote.doc.isv/html/gettingstarted/intro.html
new file mode 100644
index 00000000000..ea7b1499cf8
--- /dev/null
+++ b/remote/org.eclipse.remote.doc.isv/html/gettingstarted/intro.html
@@ -0,0 +1,46 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <title>Getting started</title>
+ <link rel="stylesheet" type="text/css" href="../../css/style.css">
+</head>
+
+<body>
+<h1>Introduction</h1>
+<p>The purpose of remote services API is to provide a programming interface to remote services that is agnostic to the actual remote services implementation. Currently the only implementation supported of SSH protocol uses JSch(Java Secure Channel) project (<a href="http://www.jcraft.com/jsch/">www.jcraft.com/jsch</a>). An implementation for the local system (where Eclipse is run) and Telnet protocol are also provided.</p>
+<p>The API is generic enough so that it is possible to use it for all remote or local operations. This is useful for situations where both a remote and local mode should be provided, but the programmer wants to avoid two separate code paths.</p>
+
+<h1>Types of services</h1>
+<p>The API is divided into two types of remote services: UI and non-UI.</p>
+<p>UI services are for activities such as file browsing that require use of the UI. In particular, it provides a main preference page (under "Remote Development > Remote Connections") which allow connections to be created, edited, removed, opened, and closed. </p>
+<p>Non-UI services are purely programmatic, they provides a set of core services for manipulating remote resources. The non-UI services can be used independently of the UI services.</p>
+
+<h1>Remote Services Plugins</h1>
+
+<p>The remote services are divided into two plugins. These plugins should have no dependencies other than the platform.</p>
+<ul>
+ <li>org.eclipse.remote.core - provides non-UI remote services</li>
+ <li>org.eclipse.remote.ui - provides UI remote services</li>
+</ul>
+
+<p>Remote service implementations provide the actual remote functionality using a particular remote protocol. These are supplied as a set of adapter plugins.
+
+<p>As of version 2.0.1, there is currently one implementation of SSH protocol using JSch:</p>
+
+<ul>
+ <li>org.eclipse.remote.jsch.core</li>
+ <li>org.eclipse.remote.jsch.ui</li>
+</ul>
+
+<p>The Telnet protocol implementation and UI widgets are provided by the plugins:</p>
+<ul>
+ <li>org.eclipse.remote.telnet.core</li>
+ <li>org.eclipse.remote.telnet.ui</li>
+</ul>
+
+<p>These plugins are dependent on the remote services implementations, but are optional for the remote services API. The API will automatically detect the installed plugins.</p>
+
+</body>
+</html> \ No newline at end of file
diff --git a/remote/org.eclipse.remote.doc.isv/html/samples/examples.html b/remote/org.eclipse.remote.doc.isv/html/samples/examples.html
new file mode 100644
index 00000000000..955358e4309
--- /dev/null
+++ b/remote/org.eclipse.remote.doc.isv/html/samples/examples.html
@@ -0,0 +1,112 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <title>Samples</title>
+ <link rel="stylesheet" type="text/css" href="../../css/style.css">
+</head>
+
+<body>
+<h1>Usage examples</h1>
+<p>This section shows usage examples for using the Eclipse Remote API.</p>
+
+<p>The services manager can be obtained using <code>RemoteServicesUtils</code> (since 2.0.1) helper:</p>
+
+<pre><code class="snippet">
+IRemoteServicesManager servicesManager = RemoteServicesUtils.getService(IRemoteServicesManager.class);
+</code></pre>
+
+<p>An alternative is to use the bundle's context to get the service reference:</p>
+
+<pre><code class="snippet">
+BundleContext context = plugin.getBundle().getBundleContext();
+ServiceReference<T> ref = context.getServiceReference(IRemoteServicesManager.class);
+IRemoteServicesManager servicesManager = context.getService(ref);
+</code></pre>
+
+<p>Once with services manager object, you obtain a connection type by its scheme ID or any URI to the remote host, as in:</p>
+<pre><code class="snippet">
+IRemoteConnectionType connType;
+// Get connection type by Scheme ID
+connType = servicesManager.getConnectionType("ssh");
+// Get connection type by URI
+URI uri = URI.create("ssh://MyConnection/path/to/file");
+connType = servicesManager.getConnectionType(uri);
+</code></pre>
+
+<p>The Telnet connection type can not be obtained by URI, instead you must use its ID:
+<pre><code class="snippet">
+IRemoteConnectionType connType;
+connType = servicesManager.getConnectionType("org.eclipse.remote.telnet.core.connectionType");
+</code></pre>
+
+<p>The remote connection is obtained from connection type object by either name or an URI. For example:
+<pre><code class="snippet">
+IRemoteConnection connection;
+// Get connection by URI
+URI uri = URI.create("ssh://MyConnection/path/to/file");
+connection = connType.getConnection(uri);
+// Get connection by name
+connection = connType.getConnection("MyConnection");
+</code></pre>
+
+<p>If the connection does not exist, it can be created with a connection type (<code>IRemoteConnectionType</code>) instance. Use the connection type object to delete it as well:
+
+<pre><code class="snippet">
+IRemoteConnectionWorkingCopy rcwc; // Writable connection working copy
+rcwc = connType.newConnection(connectionName); // Create connection of connection type
+IRemoteConnectionHostService hostServices; // Fill connection information through host service
+hostServices = rcwc.getService(IRemoteConnectionHostService.class); // Obtain the service from working copy instance
+hostServices.setHostname(address);
+hostServices.setUsername(username);
+hostServices.setUsePassword(true);
+hostServices.setPassword(passwd);
+IRemoteConnection connection = rcwc.save(); // Finally save the working copy, then get the connection (read-only) object
+
+connType.removeConnection(connection); // Remove connection and all resources associated with it
+</code></pre>
+
+<p>Connections can be opened or closed programmatically. Some operations requires the connection opened:</p>
+<pre><code class="snippet">
+connection.open(monitor); // Open the connection but allow the user to cancel the progress monitor
+connection.close(); // Now close it
+</code></pre>
+
+<p>The file service is obtained from a connection object. Remote resources can be manipulated with <code>IFileStore</code>:</p>
+<pre><code class="snippet">
+IRemoteFileService fileService = connection.getService(IRemoteFileService.class);
+// The remote connection does not need to be open to get the resource
+IFileStore fs = fileService.getResource("/path/to/resource");
+// But the remote connection need to be open to operate on the resource
+if (fs.fetchInfo().exists()) {
+ System.out.println("It exists!");
+}
+</code></pre>
+
+<p>In the other hand, the UI file service is obtained from a connection type rather than the connection. The reason is that it allows user to select the connection in a list. It is also possible to set the connection:</p>
+<pre><code class="snippet">
+IRemoteUIFileService uiFileService = conn.getConnectionType().getService(IRemoteUIFileService.class);
+uiFileService.setConnection(connection); // Set default connection (optional)
+uiFileService.showConnections(true); // Also show list of available connections
+// The return value is the path of the directory selected on the remote system
+String path = uiFileService.browseDirectory(shell, "Browse /home", "/home", IRemoteUIConstants.NONE);
+</code></pre>
+
+<p>Use a connection object to get its associated process service (<code>IRemoteProcessService</code>). Then obtain a process builder (<code>IRemoteProcessBuilder</code>), so that commands can be executed on remote host:</p>
+<pre><code class="snippet">
+IRemoteProcessService ps = connection.getService(IRemoteProcessService.class);
+IRemoteProcessBuilder pb = ps.getProcessBuilder("/bin/ls", "-l");
+IRemoteProcess process = pb.start();
+// Use IRemoteProcess to manage the process. Alternatively, use an adaptor to java.lang.Process
+Process process2 = new RemoteProcessAdapter(process);
+</code></pre>
+
+<p>Use the <code>IRemoteResource</code> adapter to get a location URI of the project (<code>IProject</code>):
+<pre><code class="snippet">
+IRemoteResource resource = (IRemoteResource)project.getAdapter(IRemoteResource.class);
+URI projectLocation = resource.getActiveLocationURI(); // Get URI to active location
+</code></pre>
+
+</body>
+</html> \ No newline at end of file
diff --git a/remote/org.eclipse.remote.doc.isv/html/toc.html b/remote/org.eclipse.remote.doc.isv/html/toc.html
new file mode 100644
index 00000000000..e589c3134ee
--- /dev/null
+++ b/remote/org.eclipse.remote.doc.isv/html/toc.html
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <title>Remote Developer's Guide</title>
+</head>
+
+<body>
+<h1>Eclipse Remote Developer's Guide</h1>
+<p>This is the guide of the eclipse remote development framework as of provided by <i>org.eclipse.remote</i> project.</p>
+<h3>Table of Contents</h3>
+<ul style="list-style-type:none">
+ <li><a href="gettingstarted/intro.html">Getting Started</a></li>
+ <li><a href="concepts/concepts.html">Concepts</a></li>
+ <li><a href="samples/examples.html">Usage Examples</a></li>
+ <li><a href="reference/api/index.html">Reference</a></li>
+</ul>
+</body>
+</html>
diff --git a/remote/org.eclipse.remote.doc.isv/plugin.xml b/remote/org.eclipse.remote.doc.isv/plugin.xml
new file mode 100644
index 00000000000..1f77cc97a9c
--- /dev/null
+++ b/remote/org.eclipse.remote.doc.isv/plugin.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+
+ <extension
+ point="org.eclipse.help.toc">
+ <toc
+ file="toc.xml"
+ primary="true">
+ </toc>
+ <toc
+ file="tocconcepts.xml">
+ </toc>
+ <toc
+ file="tocgettingstarted.xml">
+ </toc>
+ <toc
+ file="tocreference.xml">
+ </toc>
+ <toc
+ file="tocsamples.xml">
+ </toc>
+ </extension>
+
+</plugin>
diff --git a/remote/org.eclipse.remote.doc.isv/pom.xml b/remote/org.eclipse.remote.doc.isv/pom.xml
new file mode 100644
index 00000000000..2e21470ef8e
--- /dev/null
+++ b/remote/org.eclipse.remote.doc.isv/pom.xml
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.cdt</groupId>
+ <artifactId>cdt-parent</artifactId>
+ <version>10.7.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent>
+
+ <version>1.1.200-SNAPSHOT</version>
+ <artifactId>org.eclipse.remote.doc.isv</artifactId>
+ <packaging>eclipse-plugin</packaging>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-source-plugin</artifactId>
+ <version>${tycho-version}</version>
+ <executions>
+ <execution>
+ <id>plugin-source</id>
+ <phase>none</phase>
+ </execution>
+ <execution>
+ <id>attach-source</id>
+ <phase>none</phase>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+ <profiles>
+ <profile>
+ <id>build-doc</id>
+ <activation>
+ <property>
+ <name>!skipDoc</name>
+ </property>
+ </activation>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.eclipse.tycho.extras</groupId>
+ <artifactId>tycho-document-bundle-plugin</artifactId>
+ <version>${tycho-version}</version>
+ <executions>
+ <execution>
+ <id>eclipse-javadoc</id>
+ <phase>generate-resources</phase>
+ <goals>
+ <goal>javadoc</goal>
+ </goals>
+ <configuration>
+ <outputDirectory>${project.basedir}/html/reference/api
+ </outputDirectory>
+ <javadocOptions>
+ <includes>
+ <include>org.eclipse.cdt.remote.*</include>
+ <include>org.eclipse.remote.*</include>
+ </includes>
+ <excludes>
+ <exclude>org.eclipse.remote.internal.*</exclude>
+ <exclude>org.eclipse.remote.*.internal.*</exclude>
+ <exclude>org.eclipse.cdt.remote.internal.*</exclude>
+ <exclude>org.eclipse.cdt.remote.*.internal.*</exclude>
+ </excludes>
+ <additionalArguments>
+ <additionalArgument>-windowtitle "Eclipse CDT org.eclipse.remote API Specification"</additionalArgument>
+ <additionalArgument>-doctitle "Eclipse CDT org.eclipse.remote API Specification"
+ </additionalArgument>
+ <additionalArgument>-link "https://docs.oracle.com/en/java/javase/11/docs/api/"</additionalArgument>
+ <additionalArgument>-linkoffline ../../org.eclipse.platform.doc.isv/reference/api
+ </additionalArgument>
+ <additionalArgument>-public</additionalArgument>
+ <additionalArgument>-header "Eclipse CDT's org.eclipse.remote 10.7.0"
+ </additionalArgument>
+ <additionalArgument>-bottom "Copyright (c) IBM Corp. and others 2004, 2021. All Rights Reserved."</additionalArgument>
+ <additionalArgument>-tag 'noimplement:a:Restriction:'</additionalArgument>
+ <additionalArgument>-tag 'noextend:a:Restriction:'</additionalArgument>
+ <additionalArgument>-tag 'noreference:a:Restriction:'</additionalArgument>
+ <additionalArgument>-tag 'noinstantiate:a:Restriction:'</additionalArgument>
+ <additionalArgument>-tag 'nooverride:a:Restriction:'</additionalArgument>
+ </additionalArguments>
+ </javadocOptions>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ <profile>
+ <id>fake-doc</id>
+ <activation>
+ <property>
+ <name>skipDoc</name>
+ </property>
+ </activation>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-antrun-plugin</artifactId>
+ <executions>
+ <execution>
+ <phase>compile</phase>
+ <configuration>
+ <target>
+ <touch file="index/indexed_docs" mkdirs="true" />
+ </target>
+ </configuration>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+</project>
diff --git a/remote/org.eclipse.remote.doc.isv/toc.xml b/remote/org.eclipse.remote.doc.isv/toc.xml
new file mode 100644
index 00000000000..4a099b6a2a2
--- /dev/null
+++ b/remote/org.eclipse.remote.doc.isv/toc.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?NLS TYPE="org.eclipse.help.toc"?>
+
+<toc label="Eclipse Remote Developer's Guide" topic="html/toc.html">
+ <topic label="Getting Started">
+ <anchor id="gettingstarted"/>
+ </topic>
+ <topic label="Concepts">
+ <anchor id="concepts"/>
+ </topic>
+ <topic label="Reference">
+ <anchor id="reference"/>
+ </topic>
+ <topic label="Samples">
+ <anchor id="samples"/>
+ </topic>
+</toc>
diff --git a/remote/org.eclipse.remote.doc.isv/tocconcepts.xml b/remote/org.eclipse.remote.doc.isv/tocconcepts.xml
new file mode 100644
index 00000000000..eb382cbaf3a
--- /dev/null
+++ b/remote/org.eclipse.remote.doc.isv/tocconcepts.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?NLS TYPE="org.eclipse.help.toc"?>
+
+<toc label="Concepts" link_to="toc.xml#concepts">
+ <topic label="Concepts" href="html/concepts/concepts.html">
+ </topic>
+</toc>
diff --git a/remote/org.eclipse.remote.doc.isv/tocgettingstarted.xml b/remote/org.eclipse.remote.doc.isv/tocgettingstarted.xml
new file mode 100644
index 00000000000..fb12307e209
--- /dev/null
+++ b/remote/org.eclipse.remote.doc.isv/tocgettingstarted.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?NLS TYPE="org.eclipse.help.toc"?>
+
+<toc label="Getting Started" link_to="toc.xml#gettingstarted">
+ <topic label="Getting Started" href="html/gettingstarted/intro.html">
+ </topic>
+</toc>
diff --git a/remote/org.eclipse.remote.doc.isv/tocreference.xml b/remote/org.eclipse.remote.doc.isv/tocreference.xml
new file mode 100644
index 00000000000..e9dc3b6853f
--- /dev/null
+++ b/remote/org.eclipse.remote.doc.isv/tocreference.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?NLS TYPE="org.eclipse.help.toc"?>
+
+<toc label="Reference" link_to="toc.xml#reference">
+ <topic label="API Reference" href="html/reference/api/index.html" />
+</toc>
diff --git a/remote/org.eclipse.remote.doc.isv/tocsamples.xml b/remote/org.eclipse.remote.doc.isv/tocsamples.xml
new file mode 100644
index 00000000000..542cbc72678
--- /dev/null
+++ b/remote/org.eclipse.remote.doc.isv/tocsamples.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?NLS TYPE="org.eclipse.help.toc"?>
+
+<toc label="Samples" link_to="toc.xml#samples">
+ <topic label="Samples" href="html/samples/examples.html">
+ </topic>
+</toc>
diff --git a/remote/org.eclipse.remote.jsch.core/.classpath b/remote/org.eclipse.remote.jsch.core/.classpath
new file mode 100644
index 00000000000..e801ebfb468
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.core/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/remote/org.eclipse.remote.jsch.core/.project b/remote/org.eclipse.remote.jsch.core/.project
new file mode 100644
index 00000000000..dcc7bbcb87c
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.core/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.remote.jsch.core</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+ </natures>
+</projectDescription>
diff --git a/remote/org.eclipse.remote.jsch.core/.settings/org.eclipse.core.resources.prefs b/remote/org.eclipse.remote.jsch.core/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.core/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/remote/org.eclipse.remote.jsch.core/.settings/org.eclipse.jdt.core.prefs b/remote/org.eclipse.remote.jsch.core/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..e3a8104f9ca
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.core/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/.settings/org.eclipse.jdt.launching.prefs b/remote/org.eclipse.remote.jsch.core/.settings/org.eclipse.jdt.launching.prefs
index f8a131b56e0..f8a131b56e0 100644
--- a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/.settings/org.eclipse.jdt.launching.prefs
+++ b/remote/org.eclipse.remote.jsch.core/.settings/org.eclipse.jdt.launching.prefs
diff --git a/remote/org.eclipse.remote.jsch.core/.settings/org.eclipse.jdt.ui.prefs b/remote/org.eclipse.remote.jsch.core/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.core/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/remote/org.eclipse.remote.jsch.core/.settings/org.eclipse.pde.api.tools.prefs b/remote/org.eclipse.remote.jsch.core/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 00000000000..ec9fbf321d0
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.core/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,184 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITH_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_FIELD=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERCLASS_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_CHANGED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENTS=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETERS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Error
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Warning
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+MISSING_EE_DESCRIPTIONS=Warning
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=false
+changed_execution_env=Error
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+incompatible_api_component_version_report_major_without_breaking_change=Warning
+incompatible_api_component_version_report_minor_without_api_change=Warning
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/remote/org.eclipse.remote.jsch.core/.settings/org.eclipse.pde.prefs b/remote/org.eclipse.remote.jsch.core/.settings/org.eclipse.pde.prefs
new file mode 100644
index 00000000000..d2dc703ba9e
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.core/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,35 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=2
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=2
+compilers.p.missing-version-export-package=2
+compilers.p.missing-version-import-package=2
+compilers.p.missing-version-require-bundle=2
+compilers.p.no-required-att=0
+compilers.p.no.automatic.module=1
+compilers.p.not-externalized-att=1
+compilers.p.service.component.without.lazyactivation=1
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/remote/org.eclipse.remote.jsch.core/META-INF/MANIFEST.MF b/remote/org.eclipse.remote.jsch.core/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..778724bd8a5
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.core/META-INF/MANIFEST.MF
@@ -0,0 +1,22 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.remote.jsch.core;singleton:=true
+Bundle-Version: 1.1.100.qualifier
+Bundle-Activator: org.eclipse.remote.internal.jsch.core.Activator
+Bundle-Vendor: %pluginProvider
+Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.remote.internal.jsch.core;x-friends:="org.eclipse.remote.jsch.ui,org.eclipse.remote.jsch.tests",
+ org.eclipse.remote.internal.jsch.core.messages;x-internal:=true
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Import-Package: com.jcraft.jsch,
+ org.eclipse.core.filesystem,
+ org.eclipse.core.filesystem.provider,
+ org.eclipse.core.runtime,
+ org.eclipse.jsch.core,
+ org.eclipse.osgi.util,
+ org.eclipse.remote.core,
+ org.eclipse.remote.core.exception,
+ org.eclipse.remote.internal.core,
+ org.osgi.framework
diff --git a/remote/org.eclipse.remote.jsch.core/about.html b/remote/org.eclipse.remote.jsch.core/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.core/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/remote/org.eclipse.remote.jsch.core/build.properties b/remote/org.eclipse.remote.jsch.core/build.properties
new file mode 100644
index 00000000000..7b3c227b84a
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.core/build.properties
@@ -0,0 +1,8 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ plugin.properties,\
+ about.html
+src.includes = about.html
diff --git a/remote/org.eclipse.remote.jsch.core/plugin.properties b/remote/org.eclipse.remote.jsch.core/plugin.properties
new file mode 100644
index 00000000000..523756273b5
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.core/plugin.properties
@@ -0,0 +1,14 @@
+###############################################################################
+# Copyright (c) 2013 IBM Corporation.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+###############################################################################
+
+pluginName=JSch Remote Support
+pluginProvider=Eclipse PTP
diff --git a/remote/org.eclipse.remote.jsch.core/plugin.xml b/remote/org.eclipse.remote.jsch.core/plugin.xml
new file mode 100644
index 00000000000..b3d72c998f0
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.core/plugin.xml
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+ <extension
+ point="org.eclipse.remote.core.remoteServices">
+ <connectionType
+ id="org.eclipse.remote.JSch"
+ name="SSH"
+ scheme="ssh">
+ </connectionType>
+ <connectionService
+ connectionTypeId="org.eclipse.remote.JSch"
+ factory="org.eclipse.remote.internal.jsch.core.JSchConnection$Factory"
+ service="org.eclipse.remote.core.IRemoteConnectionControlService">
+ </connectionService>
+ <connectionService
+ connectionTypeId="org.eclipse.remote.JSch"
+ factory="org.eclipse.remote.internal.jsch.core.JSchConnection$Factory"
+ service="org.eclipse.remote.core.IRemotePortForwardingService">
+ </connectionService>
+ <connectionService
+ connectionTypeId="org.eclipse.remote.JSch"
+ factory="org.eclipse.remote.internal.jsch.core.JSchConnection$Factory"
+ service="org.eclipse.remote.core.IRemoteConnectionPropertyService">
+ </connectionService>
+ <connectionService
+ connectionTypeId="org.eclipse.remote.JSch"
+ factory="org.eclipse.remote.internal.jsch.core.JSchConnection$Factory"
+ service="org.eclipse.remote.core.IRemoteProcessService">
+ </connectionService>
+ <connectionService
+ connectionTypeId="org.eclipse.remote.JSch"
+ factory="org.eclipse.remote.internal.jsch.core.JSchFileManager$Factory"
+ service="org.eclipse.remote.core.IRemoteFileService">
+ </connectionService>
+ <connectionService
+ connectionTypeId="org.eclipse.remote.JSch"
+ factory="org.eclipse.remote.internal.jsch.core.JSchConnection$Factory"
+ service="org.eclipse.remote.core.IRemoteConnectionHostService">
+ </connectionService>
+ <connectionService
+ connectionTypeId="org.eclipse.remote.JSch"
+ factory="org.eclipse.remote.internal.jsch.core.JSchConnection$Factory"
+ service="org.eclipse.remote.internal.jsch.core.JSchConnection">
+ </connectionService>
+ <connectionService
+ connectionTypeId="org.eclipse.remote.JSch"
+ factory="org.eclipse.remote.internal.jsch.core.JSchCommandShellService$Factory"
+ service="org.eclipse.remote.core.IRemoteCommandShellService">
+ </connectionService>
+ <processService
+ connectionTypeId="org.eclipse.remote.JSch"
+ factory="org.eclipse.remote.internal.jsch.core.JSchProcess$Factory"
+ service="org.eclipse.remote.core.IRemoteProcessControlService">
+ </processService>
+ <processService
+ connectionTypeId="org.eclipse.remote.JSch"
+ factory="org.eclipse.remote.internal.jsch.core.JSchProcess$Factory"
+ service="org.eclipse.remote.core.IRemoteProcessSignalService">
+ </processService>
+ <processService
+ connectionTypeId="org.eclipse.remote.JSch"
+ factory="org.eclipse.remote.internal.jsch.core.JSchProcess$Factory"
+ service="org.eclipse.remote.core.IRemoteProcessTerminalService">
+ </processService>
+ <processService
+ connectionTypeId="org.eclipse.remote.JSch"
+ factory="org.eclipse.remote.internal.jsch.core.JSchProcess$Factory"
+ service="org.eclipse.remote.internal.jsch.core.JSchProcess">
+ </processService>
+ </extension>
+ <extension
+ id="org.eclipse.remote.jsch.filesystem"
+ point="org.eclipse.core.filesystem.filesystems">
+ <filesystem
+ scheme="ssh">
+ <run
+ class="org.eclipse.remote.internal.jsch.core.JSchFileSystem">
+ </run>
+ </filesystem>
+ </extension>
+</plugin>
diff --git a/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/Activator.java b/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/Activator.java
new file mode 100644
index 00000000000..3a1ff880f70
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/Activator.java
@@ -0,0 +1,110 @@
+package org.eclipse.remote.internal.jsch.core;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Plugin;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jsch.core.IJSchService;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends Plugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.eclipse.remote.jsch.core"; //$NON-NLS-1$
+
+ // The shared instance
+ private static Activator plugin;
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+ /**
+ * Get unique identifier
+ *
+ * @return
+ * @since 5.0
+ */
+ public static String getUniqueIdentifier() {
+ if (getDefault() == null) {
+ return PLUGIN_ID;
+ }
+ return getDefault().getBundle().getSymbolicName();
+ }
+
+ /**
+ * Logs the specified status with this plug-in's log.
+ *
+ * @param status
+ * status to log
+ */
+ public static void log(IStatus status) {
+ getDefault().getLog().log(status);
+ }
+
+ /**
+ * Logs an internal error with the specified message.
+ *
+ * @param message
+ * the error message to log
+ */
+ public static void log(String message) {
+ log(new Status(IStatus.ERROR, getUniqueIdentifier(), IStatus.ERROR, message, null));
+ }
+
+ /**
+ * Logs an internal error with the specified throwable
+ *
+ * @param e
+ * the exception to be logged
+ */
+ public static void log(Throwable e) {
+ log(new Status(IStatus.ERROR, getUniqueIdentifier(), IStatus.ERROR, e.getMessage(), e));
+ }
+
+ private IJSchService fJSchService;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ /**
+ * Return the OSGi service with the given service interface.
+ *
+ * @param service service interface
+ * @return the specified service or null if it's not registered
+ */
+ public static <T> T getService(Class<T> service) {
+ BundleContext context = plugin.getBundle().getBundleContext();
+ ServiceReference<T> ref = context.getServiceReference(service);
+ return ref != null ? context.getService(ref) : null;
+ }
+
+ public IJSchService getService() {
+ return fJSchService;
+ }
+
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ ServiceReference<IJSchService> reference = context.getServiceReference(IJSchService.class);
+ fJSchService = context.getService(reference);
+ }
+
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+}
diff --git a/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/ArgumentParser.java b/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/ArgumentParser.java
new file mode 100644
index 00000000000..3649730a553
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/ArgumentParser.java
@@ -0,0 +1,371 @@
+/*******************************************************************************
+ * Copyright (c) 2007 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.internal.jsch.core;
+
+import java.text.CharacterIterator;
+import java.text.StringCharacterIterator;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * Utilitiy class for managing command line arguments.
+ *
+ */
+public class ArgumentParser {
+ private static List<String> parseCommandline(String commandline) {
+ ArrayList<String> result = new ArrayList<>();
+ StringCharacterIterator iterator = new StringCharacterIterator(commandline);
+
+ for (iterator.first(); iterator.current() != CharacterIterator.DONE; iterator.next()) {
+
+ // Restart to skip white space
+ if (Character.isWhitespace(iterator.current())) {
+ continue;
+ }
+
+ // Read token
+ StringBuffer buffer = new StringBuffer();
+ token_reader: for (; iterator.current() != CharacterIterator.DONE; iterator.next()) {
+ char tokenChar = iterator.current();
+
+ // A white space terminates the token
+ if (Character.isWhitespace(tokenChar)) {
+ break token_reader;
+ }
+
+ // Handle character that composes the token
+ switch (tokenChar) {
+ case '"': {
+ /*
+ * Read all text within double quotes or until end of
+ * string. Allows escaping.
+ */
+ iterator.next(); // Skip quote
+ quoted_reader: while ((iterator.current() != CharacterIterator.DONE)
+ && (iterator.current() != '"')) {
+ char innerChar = iterator.current();
+ switch (innerChar) {
+ case '\\':
+ char nextChar = iterator.next();
+ switch (nextChar) {
+ case CharacterIterator.DONE:
+ break quoted_reader;
+ case '"':
+ // Add the character, but remove the escape
+ buffer.append(nextChar);
+ iterator.next();
+ continue quoted_reader;
+ default:
+ // Add the character and keep escape
+ buffer.append(innerChar);
+ buffer.append(nextChar);
+ iterator.next();
+ continue quoted_reader;
+ }
+ default:
+ buffer.append(innerChar);
+ iterator.next();
+ continue quoted_reader;
+ }
+ }
+ continue token_reader;
+ }
+ case '\'': {
+ /*
+ * Read all text within single quotes or until end of
+ * string. No escaping.
+ */
+ iterator.next(); // Skip the quote
+ while ((iterator.current() != CharacterIterator.DONE) && (iterator.current() != '\'')) {
+ buffer.append(iterator.current());
+ iterator.next();
+ }
+ continue token_reader;
+ }
+ case '\\': {
+ /*
+ * Read escaped char.
+ */
+ char nextChar = iterator.next();
+ switch (nextChar) {
+ case CharacterIterator.DONE:
+ break token_reader;
+ case '\n':
+ // Ignore newline. Both lines are concatenated.
+ continue token_reader;
+ default:
+ // Add the character, but remove the escape
+ buffer.append(nextChar);
+ continue token_reader;
+ }
+ }
+ default:
+ /*
+ * Any other char, add to the buffer.
+ */
+ buffer.append(tokenChar);
+ continue token_reader;
+ }
+ }
+ result.add(buffer.toString());
+ }
+
+ return result;
+ }
+
+ private final List<String> tokens;
+
+ /**
+ * Create a command line representation from an array of strings. The first
+ * element of the list is assumed to be the command, the remaining, the
+ * arguments. The elements are not parsed not (un)escaped., but taked as the
+ * are.
+ *
+ */
+ public ArgumentParser(List<String> tokenList) {
+ this.tokens = new ArrayList<>(tokenList);
+ }
+
+ /**
+ * Create a command line representation from the string with a shell command
+ * line. The command line is parsed and split on spaces. Quoted or escaped
+ * spaces are preserved..
+ *
+ */
+ public ArgumentParser(String commandline) {
+ this.tokens = parseCommandline(commandline);
+ }
+
+ /**
+ * Create a command line representation from an array of strings. The first
+ * element of the array is assumed to be the command, the remaining, the
+ * arguments. The elements are not parsed not (un)escaped., but taked as the
+ * are.
+ *
+ */
+ public ArgumentParser(String tokenArray[]) {
+ this(Arrays.asList(tokenArray));
+ }
+
+ /**
+ * Create a command line representation from the command and an list of
+ * parameters. The elements are not parsed not (un)escaped., but taked as
+ * the are.
+ *
+ */
+ public ArgumentParser(String command, List<String> parameterList) {
+ this.tokens = new ArrayList<>();
+ this.tokens.add(command);
+ this.tokens.addAll(parameterList);
+ }
+
+ /**
+ * Create a command line representation from the command and an array of
+ * parameters. The elements are not parsed not (un)escaped., but taked as
+ * the are.
+ *
+ */
+ public ArgumentParser(String command, String parameterArray[]) {
+ this(command, Arrays.asList(parameterArray));
+ }
+
+ private StringBuffer escapeToken(String token, boolean fullEscape) {
+ StringBuffer buffer = new StringBuffer();
+ StringCharacterIterator iter = new StringCharacterIterator(token);
+ for (char c = iter.first(); c != CharacterIterator.DONE; c = iter.next()) {
+ if (Character.isWhitespace(c)) {
+ buffer.append('\\');
+ buffer.append(c);
+ continue;
+ }
+ switch (c) {
+ case '(':
+ case ')':
+ case '[':
+ case ']':
+ case '{':
+ case '}':
+ case '|':
+ case '\\':
+ case '*':
+ case '&':
+ case '^':
+ case '%':
+ case '$':
+ case '#':
+ case '@':
+ case '!':
+ case '~':
+ case '`':
+ case '\'':
+ case '"':
+ case ':':
+ case ';':
+ case '?':
+ case '>':
+ case '<':
+ case '\n':
+ if (fullEscape) {
+ buffer.append('\\');
+ }
+ buffer.append(c);
+ continue;
+ case ' ':
+ buffer.append('\\');
+ buffer.append(c);
+ continue;
+ default:
+ buffer.append(c);
+ continue;
+ }
+ }
+ return buffer;
+ }
+
+ /**
+ * Returns the command of the command line, assuming that the first entry is
+ * always the command.
+ *
+ * @return The command or null if the command lines has no command nor
+ * arguments.
+ */
+ public String getCommand() {
+ if (this.tokens.size() == 0) {
+ return null;
+ }
+ return this.tokens.get(0);
+ }
+
+ /**
+ * Convert all tokens in a full command line that can be executed in a
+ * shell.
+ *
+ * @param fullEscape
+ * If every special character shall be escaped. If false, only
+ * white spaces are escaped and the shell will interpret the
+ * special chars. If true, then all special chars are quoted.
+ */
+ public String getCommandLine(boolean fullEscape) {
+ StringBuffer buffer = new StringBuffer();
+ Iterator<String> iterator = this.tokens.iterator();
+ boolean first = true;
+ while (iterator.hasNext()) {
+ String token = iterator.next();
+ if (!first) {
+ buffer.append(' ');
+ } else {
+ first = false;
+ }
+ buffer.append(escapeToken(token, fullEscape));
+ }
+ return buffer.toString();
+ }
+
+ /**
+ * Returns the command of the command line, assuming that the first entry is
+ * always the command.
+ *
+ * @return The command or null if the command lines has no command nor
+ * arguments.
+ * @param fullEscape
+ * If every special character shall be escaped. If false, only
+ * white spaces are escaped and the shell will interpret the
+ * special chars. If true, then all special chars are quoted.
+ */
+ public String getEscapedCommand(boolean fullEscalpe) {
+ if (this.tokens.size() == 0) {
+ return null;
+ }
+ return escapeToken(this.tokens.get(0), fullEscalpe).toString();
+ }
+
+ /**
+ * Returns a list of all arguments, assuming that the first entry is the
+ * command name.
+ *
+ * @return The Array or null if the command lines has no command nor
+ * arguments.
+ */
+ public String[] getParameterArray() {
+ if (this.tokens.size() == 0) {
+ return null;
+ }
+ return this.tokens.subList(1, this.tokens.size()).toArray(new String[this.tokens.size() - 1]);
+ }
+
+ /**
+ * Returns a list of all arguments, assuming that the first entry is the
+ * command name.
+ *
+ * @return The List or null if the command lines has no command nor
+ * arguments.
+ */
+ public List<String> getParameterList() {
+ if (this.tokens.size() == 0) {
+ return null;
+ }
+ return new ArrayList<>(this.tokens.subList(1, this.tokens.size()));
+ }
+
+ /**
+ * Returns the total number of entries.
+ *
+ * @return
+ */
+ public int getSize() {
+ return this.tokens.size();
+ }
+
+ /**
+ * Returns a List of all entries of the command line.
+ *
+ * @return The Array
+ */
+ public String[] getTokenArray() {
+ return this.tokens.toArray(new String[this.tokens.size()]);
+ }
+
+ /**
+ * Returns a List of all entries of the command line.
+ *
+ * @return The List
+ */
+ public List<String> getTokenList() {
+ return new ArrayList<>(this.tokens);
+ }
+
+ /**
+ * Returns a representation of the command line for debug purposes.
+ */
+ @Override
+ public String toString() {
+ StringBuffer buffer = new StringBuffer();
+ buffer.append("<"); //$NON-NLS-1$
+ Iterator<String> iterator = this.tokens.iterator();
+ boolean first = true;
+ while (iterator.hasNext()) {
+ String token = iterator.next();
+ if (!first) {
+ buffer.append('\n');
+ } else {
+ first = false;
+ }
+ buffer.append(token);
+ }
+ buffer.append(">"); //$NON-NLS-1$
+ return buffer.toString();
+ }
+}
diff --git a/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/JSchCommandShellService.java b/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/JSchCommandShellService.java
new file mode 100644
index 00000000000..9051fceb51e
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/JSchCommandShellService.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.internal.jsch.core;
+
+import java.io.IOException;
+
+import org.eclipse.remote.core.IRemoteCommandShellService;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteProcess;
+
+public class JSchCommandShellService implements IRemoteCommandShellService {
+ private IRemoteConnection fRemoteConnection;
+
+ public JSchCommandShellService(IRemoteConnection remoteConnection) {
+ fRemoteConnection = remoteConnection;
+ }
+
+ @Override
+ public IRemoteConnection getRemoteConnection() {
+ return fRemoteConnection;
+ }
+
+ @Override
+ public IRemoteProcess getCommandShell(int flags) throws IOException {
+ return new JSchProcessBuilder(getRemoteConnection()).start(flags);
+ }
+
+ public static class Factory implements IRemoteConnection.Service.Factory {
+ @Override
+ @SuppressWarnings("unchecked")
+ public <T extends IRemoteConnection.Service> T getService(IRemoteConnection connection, Class<T> service) {
+ if (IRemoteCommandShellService.class.equals(service)) {
+ return (T) new JSchCommandShellService(connection);
+ }
+ return null;
+ }
+ }
+}
diff --git a/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/JSchConnection.java b/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/JSchConnection.java
new file mode 100644
index 00000000000..49378fe3466
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/JSchConnection.java
@@ -0,0 +1,897 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2015 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - Initial API and implementation
+ * Patrick Tasse - [462418] use stored password on non-preferred password based authentication
+ * Martin Oberhuber - [468889] Support Eclipse older than Mars
+ *******************************************************************************/
+package org.eclipse.remote.internal.jsch.core;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.OperationCanceledException;
+import org.eclipse.core.runtime.SubMonitor;
+import org.eclipse.jsch.core.IJSchService;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteConnectionChangeListener;
+import org.eclipse.remote.core.IRemoteConnectionControlService;
+import org.eclipse.remote.core.IRemoteConnectionHostService;
+import org.eclipse.remote.core.IRemoteConnectionPropertyService;
+import org.eclipse.remote.core.IRemoteConnectionWorkingCopy;
+import org.eclipse.remote.core.IRemotePortForwardingService;
+import org.eclipse.remote.core.IRemoteProcessBuilder;
+import org.eclipse.remote.core.IRemoteProcessService;
+import org.eclipse.remote.core.IUserAuthenticatorService;
+import org.eclipse.remote.core.RemoteConnectionChangeEvent;
+import org.eclipse.remote.core.RemoteServicesUtils;
+import org.eclipse.remote.core.exception.AddressInUseException;
+import org.eclipse.remote.core.exception.RemoteConnectionException;
+import org.eclipse.remote.core.exception.UnableToForwardPortException;
+import org.eclipse.remote.internal.jsch.core.commands.ExecCommand;
+import org.eclipse.remote.internal.jsch.core.messages.Messages;
+
+import com.jcraft.jsch.Channel;
+import com.jcraft.jsch.ChannelExec;
+import com.jcraft.jsch.ChannelSftp;
+import com.jcraft.jsch.ChannelShell;
+import com.jcraft.jsch.JSchException;
+import com.jcraft.jsch.Session;
+
+/**
+ * @since 5.0
+ */
+public class JSchConnection
+ implements IRemoteConnectionControlService, IRemoteConnectionPropertyService, IRemotePortForwardingService,
+ IRemoteProcessService, IRemoteConnectionHostService, IRemoteConnectionChangeListener {
+ // Connection Type ID
+ public static final String JSCH_ID = "org.eclipse.remote.JSch"; //$NON-NLS-1$
+
+ // Attributes
+ public static final String ADDRESS_ATTR = "JSCH_ADDRESS_ATTR"; //$NON-NLS-1$
+ public static final String USERNAME_ATTR = "JSCH_USERNAME_ATTR"; //$NON-NLS-1$
+ public static final String PASSWORD_ATTR = "JSCH_PASSWORD_ATTR"; //$NON-NLS-1$
+ public static final String PORT_ATTR = "JSCH_PORT_ATTR"; //$NON-NLS-1$
+ public static final String PROXYCONNECTION_ATTR = "JSCH_PROXYCONNECTION_ATTR"; //$NON-NLS-1$
+ public static final String PROXYCOMMAND_ATTR = "JSCH_PROXYCOMMAND_ATTR"; //$NON-NLS-1$
+ public static final String IS_PASSWORD_ATTR = "JSCH_IS_PASSWORD_ATTR"; //$NON-NLS-1$
+ public static final String PASSPHRASE_ATTR = "JSCH_PASSPHRASE_ATTR"; //$NON-NLS-1$
+ public static final String TIMEOUT_ATTR = "JSCH_TIMEOUT_ATTR"; //$NON-NLS-1$
+ public static final String USE_LOGIN_SHELL_ATTR = "JSCH_USE_LOGIN_SHELL_ATTR"; //$NON-NLS-1$
+ public static final String LOGIN_SHELL_COMMAND_ATTR = "JSCH_LOGIN_SHELL_COMMAND_ATTR"; //$NON-NLS-1$
+
+ public static final int DEFAULT_PORT = 22;
+ public static final int DEFAULT_TIMEOUT = 0;
+ public static final boolean DEFAULT_IS_PASSWORD = false;
+ public static final boolean DEFAULT_USE_LOGIN_SHELL = true;
+ public static final String DEFAULT_LOGIN_SHELL_COMMAND = "/bin/bash -l -c '{0}'"; //$NON-NLS-1$
+ public static final String DEFAULT_ENCODING = "UTF-8"; //$NON-NLS-1$
+ public static final String EMPTY_STRING = ""; //$NON-NLS-1$
+
+ private String fWorkingDir;
+
+ private final IRemoteConnection fRemoteConnection;
+ private final IJSchService fJSchService;
+
+ private final Map<String, String> fEnv = new HashMap<>();
+ private final Map<String, String> fProperties = new HashMap<>();
+ private final List<Session> fSessions = new ArrayList<>();
+
+ private ChannelSftp fSftpCommandChannel;
+ private boolean isFullySetup; // including sftp channel and environment
+
+ private static final Map<IRemoteConnection, JSchConnection> connectionMap = new HashMap<>();
+
+ public JSchConnection(IRemoteConnection connection) {
+ fRemoteConnection = connection;
+ fJSchService = Activator.getDefault().getService();
+ connection.addConnectionChangeListener(this);
+ }
+
+ @Override
+ public void connectionChanged(RemoteConnectionChangeEvent event) {
+ if (event.getType() == RemoteConnectionChangeEvent.CONNECTION_REMOVED) {
+ synchronized (connectionMap) {
+ connectionMap.remove(event.getConnection());
+ }
+ }
+ }
+
+ @Override
+ public IRemoteConnection getRemoteConnection() {
+ return fRemoteConnection;
+ }
+
+ public static class Factory implements IRemoteConnection.Service.Factory {
+ @Override
+ @SuppressWarnings("unchecked")
+ public <T extends IRemoteConnection.Service> T getService(IRemoteConnection connection, Class<T> service) {
+ // This little trick creates an instance of this class for a connection
+ // then for each interface it implements, it returns the same object.
+ // This works because the connection caches the service so only one gets created.
+ // As a side effect, it makes this class a service too which can be used
+ // by the this plug-in
+ if (JSchConnection.class.equals(service)) {
+ synchronized (connectionMap) {
+ JSchConnection jschConnection = connectionMap.get(connection);
+ if (jschConnection == null) {
+ jschConnection = new JSchConnection(connection);
+ connectionMap.put(connection, jschConnection);
+ }
+ return (T) jschConnection;
+ }
+ } else if (IRemoteConnectionControlService.class.equals(service)
+ || IRemoteConnectionPropertyService.class.equals(service)
+ || IRemotePortForwardingService.class.equals(service) || IRemoteProcessService.class.equals(service)
+ || IRemoteConnectionHostService.class.equals(service)) {
+ return (T) connection.getService(JSchConnection.class);
+ } else {
+ return null;
+ }
+ }
+ }
+
+ private boolean checkConfiguration(Session session, IProgressMonitor monitor) throws RemoteConnectionException {
+ SubMonitor subMon = SubMonitor.convert(monitor, 10);
+ ChannelSftp sftp;
+ try {
+ /*
+ * First, check if sftp is supported at all. This is required for EFS, so throw exception if not supported.
+ */
+ sftp = openSftpChannel(session);
+ } catch (RemoteConnectionException e) {
+ throw new RemoteConnectionException(Messages.JSchConnection_Remote_host_does_not_support_sftp);
+ }
+ /*
+ * While sftp channel is open, try opening an exec channel. If it doesn't succeed, then MaxSession is < 2 so we need at
+ * least one additional session.
+ */
+ try {
+ loadEnv(subMon.newChild(10));
+ } catch (RemoteConnectionException e) {
+ if (e.getMessage().contains("channel is not opened")) { //$NON-NLS-1$
+ return false;
+ }
+ } finally {
+ if (sftp != null) {
+ sftp.disconnect();
+ }
+ }
+ return true;
+ }
+
+ /**
+ * @throws RemoteConnectionException
+ */
+ private void checkIsConfigured() throws RemoteConnectionException {
+ if (fRemoteConnection.getAttribute(ADDRESS_ATTR) == null) {
+ throw new RemoteConnectionException(Messages.JSchConnection_remote_address_must_be_set);
+ }
+ if (fRemoteConnection.getAttribute(USERNAME_ATTR) == null) {
+ throw new RemoteConnectionException(Messages.JSchConnection_username_must_be_set);
+ }
+ }
+
+ private synchronized void cleanup() {
+ if (fSftpCommandChannel != null) {
+ if (fSftpCommandChannel.isConnected()) {
+ fSftpCommandChannel.disconnect();
+ }
+ fSftpCommandChannel = null;
+ }
+ for (Session session : fSessions) {
+ if (session.isConnected()) {
+ session.disconnect();
+ }
+ }
+ fSessions.clear();
+ }
+
+ @Override
+ public synchronized void close() {
+ cleanup();
+ fRemoteConnection.fireConnectionChangeEvent(RemoteConnectionChangeEvent.CONNECTION_CLOSED);
+ }
+
+ /**
+ * Execute the command and return the result as a string.
+ *
+ * @param cmd
+ * command to execute
+ * @param monitor
+ * progress monitor
+ * @return result of command
+ * @throws RemoteConnectionException
+ */
+ private String executeCommand(String cmd, IProgressMonitor monitor) throws RemoteConnectionException {
+ ExecCommand exec = new ExecCommand(this);
+ monitor.subTask(NLS.bind(Messages.JSchConnection_Executing_command, cmd));
+ return exec.setCommand(cmd).getResult(monitor).trim();
+ }
+
+ @Override
+ public void forwardLocalPort(int localPort, String fwdAddress, int fwdPort) throws RemoteConnectionException {
+ if (!isOpen()) {
+ throw new RemoteConnectionException(Messages.JSchConnection_connectionNotOpen);
+ }
+ try {
+ fSessions.get(0).setPortForwardingL(localPort, fwdAddress, fwdPort);
+ } catch (JSchException e) {
+ throw new RemoteConnectionException(e.getMessage());
+ }
+ }
+
+ @Override
+ public int forwardLocalPort(String fwdAddress, int fwdPort, IProgressMonitor monitor)
+ throws RemoteConnectionException {
+ if (!isOpen()) {
+ throw new RemoteConnectionException(Messages.JSchConnection_connectionNotOpen);
+ }
+ SubMonitor progress = SubMonitor.convert(monitor, 10);
+ progress.beginTask(Messages.JSchConnection_forwarding, 10);
+ /*
+ * Start with a different port number, in case we're doing this all on localhost.
+ */
+ int localPort = fwdPort + 1;
+
+ /*
+ * Try to find a free port on the remote machine. This take a while, so allow it to be canceled. If we've tried all
+ * ports (which could take a very long while) then bail out.
+ */
+ while (!progress.isCanceled()) {
+ try {
+ forwardLocalPort(localPort, fwdAddress, fwdPort);
+ } catch (AddressInUseException e) {
+ if (++localPort == fwdPort) {
+ throw new UnableToForwardPortException(Messages.JSchConnection_remotePort);
+ }
+ progress.worked(1);
+ }
+ return localPort;
+ }
+ return -1;
+ }
+
+ @Override
+ public void forwardRemotePort(int remotePort, String fwdAddress, int fwdPort) throws RemoteConnectionException {
+ if (!isOpen()) {
+ throw new RemoteConnectionException(Messages.JSchConnection_connectionNotOpen);
+ }
+ try {
+ fSessions.get(0).setPortForwardingR(remotePort, fwdAddress, fwdPort);
+ } catch (JSchException e) {
+ throw new RemoteConnectionException(e.getMessage());
+ }
+ }
+
+ @Override
+ public int forwardRemotePort(String fwdAddress, int fwdPort, IProgressMonitor monitor)
+ throws RemoteConnectionException {
+ if (!isOpen()) {
+ throw new RemoteConnectionException(Messages.JSchConnection_connectionNotOpen);
+ }
+ SubMonitor progress = SubMonitor.convert(monitor, 10);
+ progress.beginTask(Messages.JSchConnection_forwarding, 10);
+ /*
+ * Start with a different port number, in case we're doing this all on localhost.
+ */
+ int remotePort = fwdPort + 1;
+ /*
+ * Try to find a free port on the remote machine. This take a while, so allow it to be canceled. If we've tried all
+ * ports (which could take a very long while) then bail out.
+ */
+ while (!progress.isCanceled()) {
+ try {
+ forwardRemotePort(remotePort, fwdAddress, fwdPort);
+ return remotePort;
+ } catch (AddressInUseException e) {
+ if (++remotePort == fwdPort) {
+ throw new UnableToForwardPortException(Messages.JSchConnection_remotePort);
+ }
+ progress.worked(1);
+ }
+ }
+ return -1;
+ }
+
+ @Override
+ public String getHostname() {
+ return fRemoteConnection.getAttribute(ADDRESS_ATTR);
+ }
+
+ /**
+ * Get the result of executing a pwd command.
+ *
+ * @return current working directory
+ */
+ private String getCwd(IProgressMonitor monitor) {
+ SubMonitor subMon = SubMonitor.convert(monitor, 10);
+ try {
+ return executeCommand("pwd", subMon.newChild(10)); //$NON-NLS-1$
+ } catch (RemoteConnectionException e) {
+ // Ignore
+ }
+ return null;
+ }
+
+ @Override
+ public Map<String, String> getEnv() {
+ return Collections.unmodifiableMap(fEnv);
+ }
+
+ @Override
+ public String getEnv(String name) {
+ return getEnv().get(name);
+ }
+
+ /**
+ * Open an exec channel to the remote host.
+ *
+ * @return exec channel or null if the progress monitor was cancelled
+ *
+ * @throws RemoteConnectionException
+ * if a channel could not be opened
+ */
+ public ChannelExec getExecChannel() throws RemoteConnectionException {
+ try {
+ return (ChannelExec) fSessions.get(0).openChannel("exec"); //$NON-NLS-1$
+ } catch (JSchException e) {
+ throw new RemoteConnectionException(e.getMessage());
+ }
+ }
+
+ /**
+ * Open a shell channel to the remote host.
+ *
+ * @return shell channel or null if the progress monitor was cancelled
+ *
+ * @throws RemoteConnectionException
+ * if a channel could not be opened
+ */
+ public ChannelShell getShellChannel() throws RemoteConnectionException {
+ try {
+ return (ChannelShell) fSessions.get(0).openChannel("shell"); //$NON-NLS-1$
+ } catch (JSchException e) {
+ throw new RemoteConnectionException(e.getMessage());
+ }
+ }
+
+ @Override
+ public String getPassphrase() {
+ return fRemoteConnection.getSecureAttribute(PASSPHRASE_ATTR);
+ }
+
+ @Override
+ public String getPassword() {
+ return fRemoteConnection.getSecureAttribute(PASSWORD_ATTR);
+ }
+
+ @Override
+ public int getPort() {
+ String portStr = fRemoteConnection.getAttribute(PORT_ATTR);
+ return !portStr.isEmpty() ? Integer.parseInt(portStr) : DEFAULT_PORT;
+ }
+
+ @Override
+ public IRemoteProcessBuilder getProcessBuilder(List<String> command) {
+ if (!isOpen()) {
+ return null;
+ }
+ return new JSchProcessBuilder(getRemoteConnection(), command);
+ }
+
+ @Override
+ public IRemoteProcessBuilder getProcessBuilder(String... command) {
+ if (!isOpen()) {
+ return null;
+ }
+ return new JSchProcessBuilder(getRemoteConnection(), command);
+ }
+
+ @Override
+ public String getProperty(String key) {
+ return fProperties.get(key);
+ }
+
+ /**
+ * Get the login shell command if useLoginShell is true
+ *
+ * @return login shell command
+ */
+ public String getLoginShellCommand() {
+ String loginShell = fRemoteConnection.getAttribute(LOGIN_SHELL_COMMAND_ATTR);
+ return loginShell.isEmpty() ? DEFAULT_LOGIN_SHELL_COMMAND : loginShell;
+ }
+
+ /**
+ * Gets the proxy command. For no proxy command null is returned.
+ *
+ * @return proxy command
+ */
+ public String getProxyCommand() {
+ return fRemoteConnection.getAttribute(PROXYCOMMAND_ATTR);
+ }
+
+ /**
+ * Gets the proxy connection. If no proxy connection is used it returns null.
+ *
+ * @return proxy connection
+ */
+ public JSchConnection getProxyConnection() {
+ String proxyConnectionName = getProxyConnectionName();
+ if (proxyConnectionName.isEmpty()) {
+ return null;
+ }
+ return fRemoteConnection.getConnectionType().getConnection(proxyConnectionName)
+ .getService(JSchConnection.class);
+ }
+
+ /**
+ * Gets the proxy connection name
+ *
+ * @return proxy connection name. If no proxy is used returns null.
+ */
+ public String getProxyConnectionName() {
+ return fRemoteConnection.getAttribute(PROXYCONNECTION_ATTR);
+ }
+
+ /**
+ * Open an sftp command channel to the remote host. This channel is for commands that do not require any
+ * state being preserved and should not be closed. Long running commands (such as get/put) should use a separate channel
+ * obtained via {#link #newSftpChannel()}.
+ *
+ * Always use the second session if available.
+ *
+ * @return sftp channel
+ * @throws RemoteConnectionException
+ * if a channel could not be opened
+ */
+ public ChannelSftp getSftpCommandChannel() throws RemoteConnectionException {
+ if (fSftpCommandChannel == null || fSftpCommandChannel.isClosed()) {
+ fSftpCommandChannel = newSftpChannel();
+ }
+ return fSftpCommandChannel;
+ }
+
+ /**
+ * Open a channel for long running commands. This channel should be closed when the command is completed.
+ *
+ * @return sftp channel
+ * @throws RemoteConnectionException
+ * if a channel could not be opened
+ */
+ public ChannelSftp newSftpChannel() throws RemoteConnectionException {
+ Session session = fSessions.get(0);
+ if (fSessions.size() > 1) {
+ session = fSessions.get(1);
+ }
+ ChannelSftp channel = openSftpChannel(session);
+ if (channel == null) {
+ throw new RemoteConnectionException(Messages.JSchConnection_Unable_to_open_sftp_channel);
+ }
+ return channel;
+ }
+
+ public Channel getStreamForwarder(String host, int port) throws RemoteConnectionException {
+ try {
+ Channel channel = fSessions.get(0).getStreamForwarder(host, port);
+ channel.connect();
+ return channel;
+ } catch (JSchException e) {
+ throw new RemoteConnectionException(e);
+ }
+ }
+
+ @Override
+ public int getTimeout() {
+ String str = fRemoteConnection.getAttribute(TIMEOUT_ATTR);
+ return !str.isEmpty() ? Integer.parseInt(str) : DEFAULT_TIMEOUT;
+ }
+
+ @Override
+ public String getUsername() {
+ return fRemoteConnection.getAttribute(USERNAME_ATTR);
+ }
+
+ @Override
+ public String getWorkingDirectory() {
+ if (!isOpen()) {
+ return "/"; //$NON-NLS-1$
+ }
+ if (fWorkingDir == null) {
+ return "/"; //$NON-NLS-1$
+ }
+ return fWorkingDir;
+ }
+
+ /**
+ * Test if the connection has a valid open session. Doesn't check whether the connection is fully setup.
+ *
+ * @return true if a valid session is available.
+ */
+ public boolean hasOpenSession() {
+ boolean hasOpenSession = fSessions.size() > 0;
+ if (hasOpenSession) {
+ for (Session session : fSessions) {
+ hasOpenSession &= session.isConnected();
+ }
+ }
+ if (!hasOpenSession) {
+ cleanup(); // Cleanup if session is closed
+ }
+ return hasOpenSession;
+ }
+
+ @Override
+ public boolean isOpen() {
+ return hasOpenSession() && isFullySetup;
+ }
+
+ @Override
+ public boolean usePassword() {
+ String str = fRemoteConnection.getAttribute(IS_PASSWORD_ATTR);
+ return !str.isEmpty() ? Boolean.parseBoolean(str) : DEFAULT_IS_PASSWORD;
+ }
+
+ private void loadEnv(IProgressMonitor monitor) throws RemoteConnectionException {
+ SubMonitor subMon = SubMonitor.convert(monitor, 10);
+ String env = executeCommand("printenv", subMon.newChild(10)); //$NON-NLS-1$
+ String[] vars = env.split("\n"); //$NON-NLS-1$
+ for (String var : vars) {
+ String[] kv = var.split("="); //$NON-NLS-1$
+ if (kv.length == 2) {
+ fEnv.put(kv[0], kv[1]);
+ }
+ }
+ }
+
+ /**
+ *
+ * Load the following hard-coded properties at runtime:
+ *
+ * <dl>
+ * <dt>file.separator
+ * <dd>File separator character of the (remote) connection. Hardcoded "/" (forward slash).
+ * <dt>path.separator
+ * <dd>Path separator character of the (remote) connection. Hardcoded ":" (colon).
+ * <dt>line.separator
+ * <dd>Line separator character of the (remote) connection. Hardcoded "\n" (new-line).
+ * <dt>user.home
+ * <dd>User home directory on the (remote) connection.
+ * <dt>os.name
+ * <dd>Operating system name of the (remote) connection. For example, given results from the "uname" command:
+ * <ul>
+ * <li>Linux</li>
+ * <li>AIX</li>
+ * <li>Mac OS X - if results equal "Darwin" then results from "sw_vers -productName"</li>
+ * <li>everything else - results from "uname" command</li>
+ * </ul>
+ * <dt>os.version
+ * <dd>Operating system version of the (remote) connection. For example:
+ * <ul>
+ * <li>For Linux - results from "uname -r" such as "2.6.32-279.2.1.el6.x86_64"</li>
+ * <li>For AIX - results from "oslevel" such as "7.1.0.0"</li>
+ * <li>For Mac OS X - results from "sw_vers -productVersion" such as "10.8.3"</li>
+ * <li>For everything else - "unknown"</li>
+ * </ul>
+ * <dt>os.arch
+ * <dd>Machine architecture of the (remote) connection. For example:
+ * <ul>
+ * <li>For Linux - results from "uname -m" such as "x86_64"</li>
+ * <li>For AIX - if results from "uname -p" equals "powerpc"
+ * <ul style="list-style: none;">
+ * <li>then if "prtconf -k" contains "64-bit" then "ppc64" else "ppc"</li>
+ * <li>else the result from "uname -p"</li>
+ * </ul>
+ * </li>
+ * <li>For Mac OS X - if results from "uname -m" equals "i386"
+ * <ul style="list-style: none;">
+ * <li>then if results from "sysctl -n hw.optional.x86_64" equals "1" then "x86_64" else the results from "uname -m"</li>
+ * <li>else the results from "uname -m"</li>
+ * </ul>
+ * </li>
+ * <li>For everything else - "unknown"</li>
+ * </ul>
+ * <dl>
+ *
+ */
+ private void loadProperties(IProgressMonitor monitor) throws RemoteConnectionException {
+ SubMonitor subMon = SubMonitor.convert(monitor, 100);
+ fProperties.put(IRemoteConnection.FILE_SEPARATOR_PROPERTY, "/"); //$NON-NLS-1$
+ fProperties.put(IRemoteConnection.PATH_SEPARATOR_PROPERTY, ":"); //$NON-NLS-1$
+ fProperties.put(IRemoteConnection.LINE_SEPARATOR_PROPERTY, "\n"); //$NON-NLS-1$
+ fProperties.put(IRemoteConnection.USER_HOME_PROPERTY, getWorkingDirectory());
+
+ String osVersion;
+ String osArch;
+ String encoding = DEFAULT_ENCODING;
+
+ String osName = executeCommand("uname", subMon.newChild(10)); //$NON-NLS-1$
+ switch (osName.toLowerCase()) {
+ case "linux": //$NON-NLS-1$
+ osArch = executeCommand("uname -m", subMon.newChild(10)); //$NON-NLS-1$
+ osVersion = executeCommand("uname -r", subMon.newChild(10)); //$NON-NLS-1$
+ try {
+ encoding = executeCommand("locale charmap", subMon.newChild(10)); //$NON-NLS-1$
+ } catch (RemoteConnectionException e) {
+ // Use default
+ }
+ break;
+
+ case "darwin": //$NON-NLS-1$
+ osName = executeCommand("sw_vers -productName", subMon.newChild(10)); //$NON-NLS-1$
+ osVersion = executeCommand("sw_vers -productVersion", subMon.newChild(10)); //$NON-NLS-1$
+ osArch = executeCommand("uname -m", subMon.newChild(10)); //$NON-NLS-1$
+ if (osArch.equalsIgnoreCase("i386")) { //$NON-NLS-1$
+ String opt = executeCommand("sysctl -n hw.optional.x86_64", subMon.newChild(10)); //$NON-NLS-1$
+ if (opt.equals("1")) { //$NON-NLS-1$
+ osArch = "x86_64"; //$NON-NLS-1$
+ }
+ }
+ try {
+ encoding = executeCommand("locale charmap", subMon.newChild(10)); //$NON-NLS-1$
+ } catch (RemoteConnectionException e) {
+ // Use default
+ }
+ break;
+
+ case "aix": //$NON-NLS-1$
+ osArch = executeCommand("uname -p", subMon.newChild(10)); //$NON-NLS-1$
+ osVersion = executeCommand("oslevel", subMon.newChild(10)); //$NON-NLS-1$
+ if (osArch.equalsIgnoreCase("powerpc")) { //$NON-NLS-1$
+ /* Make the architecture match what Linux produces: either ppc or ppc64 */
+ osArch = "ppc"; //$NON-NLS-1$
+ /* Get Kernel type either 32-bit or 64-bit */
+ String opt = executeCommand("prtconf -k", subMon.newChild(10)); //$NON-NLS-1$
+ if (opt.indexOf("64-bit") > 0) { //$NON-NLS-1$
+ osArch += "64"; //$NON-NLS-1$
+ }
+ }
+ try {
+ encoding = executeCommand("locale charmap", subMon.newChild(10)); //$NON-NLS-1$
+ } catch (RemoteConnectionException e) {
+ // Use default
+ }
+ break;
+
+ case "qnx": //$NON-NLS-1$
+ osArch = executeCommand("uname -p", subMon.newChild(10)); //$NON-NLS-1$
+ osVersion = executeCommand("uname -r", subMon.newChild(10)); //$NON-NLS-1$
+ break;
+
+ default:
+ osVersion = "unknown"; //$NON-NLS-1$
+ osArch = "unknown"; //$NON-NLS-1$
+ encoding = "unknown"; //$NON-NLS-1$
+ break;
+ }
+
+ fProperties.put(IRemoteConnection.OS_NAME_PROPERTY, osName);
+ fProperties.put(IRemoteConnection.OS_VERSION_PROPERTY, osVersion);
+ fProperties.put(IRemoteConnection.OS_ARCH_PROPERTY, osArch);
+ fProperties.put(IRemoteConnection.LOCALE_CHARMAP_PROPERTY, encoding);
+ }
+
+ private Session newSession(IProgressMonitor monitor) throws RemoteConnectionException {
+ SubMonitor progress = SubMonitor.convert(monitor, 10);
+ try {
+ IRemoteConnectionWorkingCopy wc = getRemoteConnection().getWorkingCopy();
+ IRemoteConnectionHostService hostService = wc.getService(IRemoteConnectionHostService.class);
+ IUserAuthenticatorService authService = wc.getService(IUserAuthenticatorService.class);
+ Session session = fJSchService.createSession(hostService.getHostname(), hostService.getPort(),
+ hostService.getUsername());
+ session.setUserInfo(new JSchUserInfo(hostService, authService));
+ if (hostService.usePassword()) {
+ session.setConfig("PreferredAuthentications", //$NON-NLS-1$
+ "password,keyboard-interactive,gssapi-with-mic,publickey"); //$NON-NLS-1$
+ } else {
+ session.setConfig("PreferredAuthentications", //$NON-NLS-1$
+ "publickey,gssapi-with-mic,password,keyboard-interactive"); //$NON-NLS-1$
+ }
+ String password = hostService.getPassword();
+ if (!password.isEmpty()) {
+ session.setPassword(password);
+ }
+ if (getProxyCommand().isEmpty() && getProxyConnectionName().isEmpty()) {
+ fJSchService.connect(session, getTimeout() * 1000, progress.newChild(10)); // connect without proxy
+ } else {
+ if (getProxyCommand().isEmpty()) {
+ session.setProxy(
+ JSchConnectionProxyFactory.createForwardProxy(getProxyConnection(), progress.newChild(10)));
+ fJSchService.connect(session, getTimeout() * 1000, progress.newChild(10));
+ } else {
+ session.setProxy(JSchConnectionProxyFactory.createCommandProxy(getProxyConnection(),
+ getProxyCommand(), progress.newChild(10)));
+ session.connect(getTimeout() * 1000); // the fJSchService doesn't pass the timeout correctly
+ }
+ }
+ if (progress.isCanceled()) {
+ return null;
+ }
+ wc.save();
+ fSessions.add(session);
+ return session;
+ } catch (OperationCanceledException e) {
+ throw new RemoteConnectionException(Messages.JSchConnection_0);
+ } catch (JSchException e) {
+ throw new RemoteConnectionException(e.getMessage());
+ }
+ }
+
+ @Override
+ public void open(IProgressMonitor monitor) throws RemoteConnectionException {
+ open(monitor, true);
+ }
+
+ /**
+ * Open ssh connection without full setup (environment, sftp)
+ *
+ * @see org.eclipse.remote.core.IRemoteConnection#open()
+ *
+ * @param monitor
+ * @throws RemoteConnectionException
+ */
+ public void openMinimal(IProgressMonitor monitor) throws RemoteConnectionException {
+ open(monitor, false);
+ }
+
+ /**
+ * @see org.eclipse.remote.core.IRemoteConnection#open()
+ *
+ * @param monitor
+ * @param setupFully
+ * open a full featured connection (environment query and sftp)
+ * @throws RemoteConnectionException
+ */
+ private void open(IProgressMonitor monitor, boolean setupFully) throws RemoteConnectionException {
+ SubMonitor subMon = SubMonitor.convert(monitor, 60);
+ if (!hasOpenSession()) {
+ checkIsConfigured();
+ newSession(subMon.newChild(10));
+ if (subMon.isCanceled()) {
+ throw new RemoteConnectionException(Messages.JSchConnection_Connection_was_cancelled);
+ }
+ isFullySetup = false;
+ }
+ if (setupFully && !isFullySetup) { // happens on the first open with setupFully==true, which might not be the first open
+ isFullySetup = true;
+ // getCwd checks the exec channel before checkConfiguration checks the sftp channel
+ fWorkingDir = getCwd(subMon.newChild(10));
+ try {
+ if (!checkConfiguration(fSessions.get(0), subMon.newChild(20))) {
+ newSession(subMon.newChild(10));
+ loadEnv(subMon.newChild(10));
+ }
+ } catch (RemoteConnectionException e) {
+ // Do not throw exception now, it will be thrown if FileService is accessed.
+ }
+ loadProperties(subMon.newChild(10));
+ fRemoteConnection.fireConnectionChangeEvent(RemoteConnectionChangeEvent.CONNECTION_OPENED);
+ }
+ }
+
+ private ChannelSftp openSftpChannel(Session session) throws RemoteConnectionException {
+ try {
+ ChannelSftp channel = (ChannelSftp) session.openChannel("sftp"); //$NON-NLS-1$
+ channel.connect();
+ return channel;
+ } catch (JSchException e) {
+ throw new RemoteConnectionException(e.getMessage());
+ }
+ }
+
+ @Override
+ public void removeLocalPortForwarding(int port) throws RemoteConnectionException {
+ if (!isOpen()) {
+ throw new RemoteConnectionException(Messages.JSchConnection_connectionNotOpen);
+ }
+ try {
+ fSessions.get(0).delPortForwardingL(port);
+ } catch (JSchException e) {
+ throw new RemoteConnectionException(e.getMessage());
+ }
+ }
+
+ @Override
+ public void removeRemotePortForwarding(int port) throws RemoteConnectionException {
+ if (!isOpen()) {
+ throw new RemoteConnectionException(Messages.JSchConnection_connectionNotOpen);
+ }
+ try {
+ fSessions.get(0).delPortForwardingR(port);
+ } catch (JSchException e) {
+ throw new RemoteConnectionException(e.getMessage());
+ }
+ }
+
+ @Override
+ public void setWorkingDirectory(String path) {
+ if (RemoteServicesUtils.posixPath(path).isAbsolute()) {
+ fWorkingDir = path;
+ }
+ }
+
+ @Override
+ public boolean useLoginShell() {
+ String str = fRemoteConnection.getAttribute(USE_LOGIN_SHELL_ATTR);
+ return !str.isEmpty() ? Boolean.parseBoolean(str) : DEFAULT_USE_LOGIN_SHELL;
+ }
+
+ @Override
+ public void setHostname(String hostname) {
+ if (fRemoteConnection instanceof IRemoteConnectionWorkingCopy) {
+ IRemoteConnectionWorkingCopy wc = (IRemoteConnectionWorkingCopy) fRemoteConnection;
+ wc.setAttribute(ADDRESS_ATTR, hostname);
+ }
+ }
+
+ @Override
+ public void setPassphrase(String passphrase) {
+ if (fRemoteConnection instanceof IRemoteConnectionWorkingCopy) {
+ IRemoteConnectionWorkingCopy wc = (IRemoteConnectionWorkingCopy) fRemoteConnection;
+ wc.setSecureAttribute(PASSPHRASE_ATTR, passphrase);
+ }
+ }
+
+ @Override
+ public void setPassword(String password) {
+ if (fRemoteConnection instanceof IRemoteConnectionWorkingCopy) {
+ IRemoteConnectionWorkingCopy wc = (IRemoteConnectionWorkingCopy) fRemoteConnection;
+ wc.setSecureAttribute(PASSWORD_ATTR, password);
+ }
+ }
+
+ @Override
+ public void setPort(int port) {
+ if (fRemoteConnection instanceof IRemoteConnectionWorkingCopy) {
+ IRemoteConnectionWorkingCopy wc = (IRemoteConnectionWorkingCopy) fRemoteConnection;
+ wc.setAttribute(PORT_ATTR, Integer.toString(port));
+ }
+ }
+
+ @Override
+ public void setTimeout(int timeout) {
+ if (fRemoteConnection instanceof IRemoteConnectionWorkingCopy) {
+ IRemoteConnectionWorkingCopy wc = (IRemoteConnectionWorkingCopy) fRemoteConnection;
+ wc.setAttribute(TIMEOUT_ATTR, Integer.toString(timeout));
+ }
+ }
+
+ @Override
+ public void setUseLoginShell(boolean useLogingShell) {
+ if (fRemoteConnection instanceof IRemoteConnectionWorkingCopy) {
+ IRemoteConnectionWorkingCopy wc = (IRemoteConnectionWorkingCopy) fRemoteConnection;
+ wc.setAttribute(USE_LOGIN_SHELL_ATTR, Boolean.toString(useLogingShell));
+ }
+ }
+
+ @Override
+ public void setUsePassword(boolean usePassword) {
+ if (fRemoteConnection instanceof IRemoteConnectionWorkingCopy) {
+ IRemoteConnectionWorkingCopy wc = (IRemoteConnectionWorkingCopy) fRemoteConnection;
+ wc.setAttribute(IS_PASSWORD_ATTR, Boolean.toString(usePassword));
+ }
+ }
+
+ @Override
+ public void setUsername(String username) {
+ if (fRemoteConnection instanceof IRemoteConnectionWorkingCopy) {
+ IRemoteConnectionWorkingCopy wc = (IRemoteConnectionWorkingCopy) fRemoteConnection;
+ wc.setAttribute(USERNAME_ATTR, username);
+ }
+ }
+
+}
diff --git a/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/JSchConnectionProxyFactory.java b/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/JSchConnectionProxyFactory.java
new file mode 100644
index 00000000000..041da3314b5
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/JSchConnectionProxyFactory.java
@@ -0,0 +1,268 @@
+/*******************************************************************************
+ * Copyright (c) 2014 University of Tennessee and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * University of Tennessee (Roland Schulz) - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.internal.jsch.core;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.net.Socket;
+import java.text.MessageFormat;
+import java.util.List;
+
+import org.eclipse.core.runtime.ILog;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.SubMonitor;
+import org.eclipse.remote.core.IRemoteProcess;
+import org.eclipse.remote.core.IRemoteProcessService;
+import org.eclipse.remote.core.IRemoteServicesManager;
+import org.eclipse.remote.core.exception.RemoteConnectionException;
+import org.eclipse.remote.internal.jsch.core.messages.Messages;
+
+import com.jcraft.jsch.Channel;
+import com.jcraft.jsch.Proxy;
+import com.jcraft.jsch.SocketFactory;
+
+/**
+ * Creates a JSch Proxy. Supports both command proxies, as well as the ssh build-in
+ * stream forwarding.
+ *
+ * @author rschulz
+ *
+ */
+public class JSchConnectionProxyFactory {
+ private static class CommandProxy implements Proxy {
+ private String command;
+ private IRemoteProcess process;
+ private JSchConnection connection;
+ private final IProgressMonitor monitor;
+ private boolean connectCalled = false;
+
+ private CommandProxy(JSchConnection connection, String command, IProgressMonitor monitor) {
+ if (command == null || monitor == null) {
+ throw new IllegalArgumentException();
+ }
+ this.command = command;
+ this.connection = connection;
+ this.monitor = monitor;
+ }
+
+ @Override
+ public void close() {
+ process.destroy();
+ }
+
+ @Override
+ public void connect(SocketFactory socket_factory, String host, int port, int timeout) throws IOException {
+ assert !connectCalled : "connect should only be called once"; //$NON-NLS-1$
+ connectCalled = true;
+
+ if (timeout == 0) {
+ timeout = 10000; // default to 10s
+ }
+ final int waitTime = 50;
+ final int waitSteps = timeout / waitTime;
+ SubMonitor subMon = SubMonitor.convert(monitor, waitSteps * 2);
+ final SubMonitor childMon = subMon.newChild(waitSteps);
+
+ if (connection != null) {
+ // Open connection if it isn't already opened
+ try {
+ connection.openMinimal(childMon);
+ } catch (RemoteConnectionException e) {
+ throw new IOException(e);
+ }
+ }
+ subMon.setWorkRemaining(waitSteps);
+
+ // Start command
+ command = command.replace("%h", host); //$NON-NLS-1$
+ command = command.replace("%p", Integer.toString(port)); //$NON-NLS-1$
+
+ List<String> cmd = new ArgumentParser(command).getTokenList();
+
+ if (connection != null) {
+ JSchProcessBuilder processBuilder = (JSchProcessBuilder) connection.getProcessBuilder(cmd);
+ processBuilder.setPreamble(false);
+ process = processBuilder.start();
+ } else {
+ process = Activator.getService(IRemoteServicesManager.class).getLocalConnectionType().getConnections()
+ .get(0).getService(IRemoteProcessService.class).getProcessBuilder(cmd).start();
+ }
+
+ // Wait on command to produce stdout output
+ long endTime = System.currentTimeMillis() + timeout;
+ boolean bOutputAvailable, bProcessComplete, bTimedOut, bCanceled;
+ do {
+ try {
+ Thread.sleep(waitTime);
+ subMon.worked(1);
+ } catch (InterruptedException e) {
+ /* ignore */
+ }
+ bOutputAvailable = (getInputStream().available() != 0);
+ bProcessComplete = process.isCompleted();
+ bTimedOut = System.currentTimeMillis() > endTime;
+ bCanceled = subMon.isCanceled();
+ } while (!bOutputAvailable && !bProcessComplete && !bTimedOut && !bCanceled);
+
+ // If no output was produced before process died, throw an exception with the stderr output
+ final BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getErrorStream()));
+ if (getInputStream().available() == 0 || process.isCompleted()) {
+ String msg = ""; //$NON-NLS-1$
+ while (bufferedReader.ready()) {
+ msg += (char) bufferedReader.read();
+ }
+ msg = msg.trim();
+
+ if (!process.isCompleted()) {
+ process.destroy();
+ }
+
+ String cause = Messages.JSchConnectionProxyFactory_failed;
+ if (bTimedOut) {
+ cause = Messages.JSchConnectionProxyFactory_timedOut;
+ } else if (bCanceled) {
+ cause = Messages.JSchConnectionProxyFactory_wasCanceled;
+ }
+ throw new IOException(MessageFormat.format(Messages.JSchConnectionProxyFactory_ProxyCommandFailed,
+ command, cause, msg));
+ }
+
+ // Dump the stderr to log
+ new Thread() {
+ @Override
+ public void run() {
+ final ILog log = Activator.getDefault().getLog();
+ String line;
+ try {
+ while ((line = bufferedReader.readLine()) != null) {
+ log.log(new Status(IStatus.INFO, Activator.getUniqueIdentifier(), IStatus.OK, line, null));
+ }
+ } catch (IOException e) {
+ Activator.log(e);
+ }
+ }
+ }.start();
+ }
+
+ @Override
+ public InputStream getInputStream() {
+ return process.getInputStream();
+ }
+
+ @Override
+ public OutputStream getOutputStream() {
+ return process.getOutputStream();
+ }
+
+ @Override
+ public Socket getSocket() {
+ return null;
+ }
+ }
+
+ private static class SSHForwardProxy implements Proxy {
+ private Channel channel;
+ private final JSchConnection connection;
+ private final IProgressMonitor monitor;
+ private boolean connectCalled = false;
+
+ private SSHForwardProxy(JSchConnection proxyConnection, IProgressMonitor monitor) {
+ if (proxyConnection == null || monitor == null) {
+ throw new IllegalArgumentException();
+ }
+ this.connection = proxyConnection;
+ this.monitor = monitor;
+ }
+
+ @Override
+ public void close() {
+ channel.disconnect();
+ }
+
+ @Override
+ public void connect(SocketFactory socket_factory, String host, int port, int timeout) throws Exception {
+ assert !connectCalled : "connect should only be called once"; //$NON-NLS-1$
+ try {
+ if (!connection.hasOpenSession()) {
+ try {
+ connection.openMinimal(monitor);
+ } catch (RemoteConnectionException e) {
+ throw new IOException(e);
+ }
+ }
+ channel = connection.getStreamForwarder(host, port);
+ } finally {
+ connectCalled = true;
+ }
+ }
+
+ @Override
+ public InputStream getInputStream() {
+ try {
+ return channel.getInputStream();
+ } catch (IOException e) {
+ Activator.log(e);
+ return null;
+ }
+ }
+
+ @Override
+ public OutputStream getOutputStream() {
+ try {
+ return channel.getOutputStream();
+ } catch (IOException e) {
+ Activator.log(e);
+ return null;
+ }
+ }
+
+ @Override
+ public Socket getSocket() {
+ return null;
+ }
+ }
+
+ /**
+ * Creates a (local or remote) command proxy.
+ *
+ * @param connection
+ * Either a valid connection or null for a local command
+ * @param command
+ * A valid proxy command. Cannot be null or empty.
+ * @param monitor
+ * A valid progress monitor. Cannot be null.
+ * @return ssh proxy
+ */
+ public static Proxy createCommandProxy(JSchConnection connection, String command, IProgressMonitor monitor) {
+ return new CommandProxy(connection, command, monitor);
+ }
+
+ /**
+ * Creates a ssh forward proxy.
+ *
+ * @param proxyConnection
+ * The Jsch proxy connection. Cannot be null.
+ * @param monitor
+ * A valid progress monitor. Cannot be null.
+ * @return ssh proxy
+ */
+ public static Proxy createForwardProxy(JSchConnection proxyConnection, IProgressMonitor monitor) {
+ return new SSHForwardProxy(proxyConnection, monitor);
+ }
+}
diff --git a/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/JSchFileManager.java b/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/JSchFileManager.java
new file mode 100644
index 00000000000..05b8627318c
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/JSchFileManager.java
@@ -0,0 +1,101 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2015 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - Initial API and implementation
+ * Martin Oberhuber - [468889] Support Eclipse older than Mars
+ *******************************************************************************/
+package org.eclipse.remote.internal.jsch.core;
+
+import java.net.URI;
+
+import org.eclipse.core.filesystem.IFileStore;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteConnection.Service;
+import org.eclipse.remote.core.IRemoteFileService;
+import org.eclipse.remote.core.IRemoteProcessService;
+import org.eclipse.remote.core.RemoteServicesUtils;
+import org.eclipse.remote.core.exception.RemoteConnectionException;
+import org.eclipse.remote.internal.jsch.core.messages.Messages;
+
+public class JSchFileManager implements IRemoteFileService {
+ private final IRemoteConnection fConnection;
+
+ private JSchFileManager(IRemoteConnection connection) {
+ fConnection = connection;
+ }
+
+ public static class Factory implements IRemoteFileService.Factory {
+ @SuppressWarnings("unchecked")
+ @Override
+ public <T extends Service> T getService(IRemoteConnection remoteConnection, Class<T> service) {
+ if (IRemoteFileService.class.equals(service)) {
+ if (remoteConnection instanceof JSchConnection)
+ try {
+ ((JSchConnection) remoteConnection).getSftpCommandChannel();
+ } catch (RemoteConnectionException e) {
+ throw new UnsupportedOperationException(
+ Messages.JSchConnection_Remote_host_does_not_support_sftp);
+ }
+ return (T) new JSchFileManager(remoteConnection);
+ }
+ return null;
+ }
+ }
+
+ @Override
+ public IRemoteConnection getRemoteConnection() {
+ return fConnection;
+ }
+
+ @Override
+ public String getDirectorySeparator() {
+ return "/"; //$NON-NLS-1$
+ }
+
+ @Override
+ public IFileStore getResource(String pathStr) {
+ IPath path = RemoteServicesUtils.posixPath(pathStr);
+ if (!path.isAbsolute()) {
+ path = RemoteServicesUtils.posixPath(getBaseDirectory()).append(path);
+ }
+ return JschFileStore.getInstance(JSchFileSystem.getURIFor(fConnection.getName(), path.toString()));
+ }
+
+ @Override
+ public String getBaseDirectory() {
+ return fConnection.getService(IRemoteProcessService.class).getWorkingDirectory();
+ }
+
+ @Override
+ public void setBaseDirectory(String path) {
+ fConnection.getService(IRemoteProcessService.class).setWorkingDirectory(path);
+ }
+
+ @Override
+ public String toPath(URI uri) {
+ return uri.getPath();
+ }
+
+ @Override
+ public URI toURI(IPath path) {
+ try {
+ return JSchFileSystem.getURIFor(fConnection.getName(), path.toString());
+ } catch (Exception e) {
+ return null;
+ }
+ }
+
+ @Override
+ public URI toURI(String path) {
+ return toURI(RemoteServicesUtils.posixPath(path));
+ }
+}
diff --git a/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/JSchFileSystem.java b/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/JSchFileSystem.java
new file mode 100644
index 00000000000..135f82d53d0
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/JSchFileSystem.java
@@ -0,0 +1,102 @@
+/********************************************************************************
+ * Copyright (c) 2006, 2007 IBM Corporation and others.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * Initial Contributors:
+ * The following IBM employees contributed to the Remote System Explorer
+ * component that contains this file: David McKnight, Kushal Munir,
+ * Michael Berger, David Dykstal, Phil Coulthard, Don Yantzi, Eric Simpson,
+ * Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley.
+ *
+ * Contributors:
+ * David Dykstal (IBM) - 168977: refactoring IConnectorService and ServerLauncher hierarchies
+ * Kushal Munir (IBM) - moved to internal package
+ * Martin Oberhuber (Wind River) - [181917] EFS Improvements: Avoid unclosed Streams,
+ * - Fix early startup issues by deferring FileStore evaluation and classloading,
+ * - Improve performance by RSEFileStore instance factory and caching IRemoteFile.
+ * - Also remove unnecessary class RSEFileCache and obsolete branding files.
+ * Martin Oberhuber (Wind River) - [188360] renamed from plugin org.eclipse.rse.eclipse.filesystem
+ * Martin Oberhuber (Wind River) - [199587] return attributes of RemoteToolsFileSystem
+ ********************************************************************************/
+
+package org.eclipse.remote.internal.jsch.core;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+
+import org.eclipse.core.filesystem.EFS;
+import org.eclipse.core.filesystem.IFileStore;
+import org.eclipse.core.filesystem.provider.FileSystem;
+import org.eclipse.core.runtime.IPath;
+
+public class JSchFileSystem extends FileSystem {
+ /**
+ * Return the connection name encoded in the URI.
+ *
+ * @param uri
+ * URI specifying a remote tools connection
+ * @return name of the connection or null if the URI is invalid
+ * @since 4.0
+ */
+ public static String getConnectionNameFor(URI uri) {
+ return uri.getAuthority();
+ }
+
+ /**
+ * Return an URI uniquely naming a remote tools remote resource.
+ *
+ * @param connectionName
+ * remote tools connection name
+ * @param path
+ * absolute path to resource as valid on the remote system
+ * @return an URI uniquely naming the remote resource.
+ */
+ public static URI getURIFor(String connectionName, String path) {
+ try {
+ return new URI("ssh", connectionName, path, null, null); //$NON-NLS-1$
+ } catch (URISyntaxException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ /**
+ * Default constructor.
+ */
+ public JSchFileSystem() {
+ super();
+ }
+
+ @Override
+ public int attributes() {
+ // Attributes supported by JSch IFileService
+ return EFS.ATTRIBUTE_READ_ONLY | EFS.ATTRIBUTE_EXECUTABLE | EFS.ATTRIBUTE_SYMLINK | EFS.ATTRIBUTE_LINK_TARGET;
+ }
+
+ @Override
+ public boolean canDelete() {
+ return true;
+ }
+
+ @Override
+ public boolean canWrite() {
+ return true;
+ }
+
+ @Override
+ public IFileStore getStore(IPath path) {
+ return EFS.getNullFileSystem().getStore(path);
+ }
+
+ @Override
+ public IFileStore getStore(URI uri) {
+ try {
+ return JschFileStore.getInstance(uri);
+ } catch (Exception e) {
+ // Could be an URI format exception
+ Activator.log(e);
+ return EFS.getNullFileSystem().getStore(uri);
+ }
+ }
+} \ No newline at end of file
diff --git a/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/JSchProcess.java b/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/JSchProcess.java
new file mode 100644
index 00000000000..e94d7e304d1
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/JSchProcess.java
@@ -0,0 +1,217 @@
+/*******************************************************************************
+ * Copyright (c) 2007 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.internal.jsch.core;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.PipedInputStream;
+import java.io.PipedOutputStream;
+
+import org.eclipse.remote.core.IRemoteProcess;
+import org.eclipse.remote.core.IRemoteProcessControlService;
+import org.eclipse.remote.core.IRemoteProcessSignalService;
+import org.eclipse.remote.core.IRemoteProcessTerminalService;
+import org.eclipse.remote.core.exception.RemoteConnectionException;
+import org.eclipse.remote.internal.jsch.core.messages.Messages;
+
+import com.jcraft.jsch.Channel;
+import com.jcraft.jsch.ChannelExec;
+import com.jcraft.jsch.ChannelShell;
+
+public class JSchProcess
+ implements IRemoteProcessControlService, IRemoteProcessSignalService, IRemoteProcessTerminalService {
+ @SuppressWarnings("nls")
+ private final String signals[] = new String[] { "", "HUP", "INT", "QUIT", "ILL", "", "ABRT", "", "FPE", "KILL", "",
+ "SEGV", "", "PIPE", "ALRM", "TERM", "", "STOP", "TSTP", "CONT", "", "", "", "", "", "", "", "", "", "",
+ "USR1", "USR2" };
+
+ private static int WAIT_TIMEOUT = 1000;
+ private static int refCount = 0;
+
+ private final Channel fChannel;
+ private final IRemoteProcess fProcess;
+
+ private InputStream fProcStdout;
+ private InputStream fProcStderr;
+ private Thread fStdoutReader;
+ private Thread fStderrReader;
+
+ public static class Factory implements IRemoteProcess.Service.Factory {
+ @SuppressWarnings("unchecked")
+ @Override
+ public <T extends IRemoteProcess.Service> T getService(IRemoteProcess remoteProcess, Class<T> service) {
+ // This little trick creates an instance of this class
+ // then for each interface it implements, it returns the same object.
+ // This works because the connection caches the service so only one gets created.
+ // As a side effect, it makes this class a service too which can be used
+ // by the this plug-in
+ if (JSchProcess.class.equals(service)) {
+ return (T) new JSchProcess(remoteProcess);
+ }
+ if (IRemoteProcessControlService.class.equals(service) || IRemoteProcessSignalService.class.equals(service)
+ || IRemoteProcessTerminalService.class.equals(service)) {
+ return (T) remoteProcess.getService(JSchProcess.class);
+ }
+ return null;
+ }
+ }
+
+ private class ProcReader implements Runnable {
+ private final static int BUF_SIZE = 8192;
+
+ private final InputStream fInput;
+ private final OutputStream fOutput;
+
+ public ProcReader(InputStream input, OutputStream output) {
+ fInput = input;
+ fOutput = output;
+ synchronized (this.fOutput) {
+ refCount++;
+ }
+ }
+
+ @Override
+ public void run() {
+ int len;
+ byte b[] = new byte[BUF_SIZE];
+
+ try {
+ while ((len = fInput.read(b)) > 0) {
+ fOutput.write(b, 0, len);
+ }
+ } catch (IOException e) {
+ // Ignore
+ }
+ synchronized (fOutput) {
+ if (--refCount == 0) {
+ try {
+ fOutput.close();
+ } catch (IOException e) {
+ // Ignore
+ }
+ }
+ }
+ }
+ }
+
+ public class NullInputStream extends InputStream {
+ @Override
+ public int read() throws IOException {
+ return -1;
+ }
+
+ @Override
+ public int available() {
+ return 0;
+ }
+ }
+
+ public JSchProcess(IRemoteProcess process) {
+ fProcess = process;
+ fChannel = ((JSchProcessBuilder) process.getProcessBuilder()).getChannel();
+
+ try {
+ if (process.getProcessBuilder().redirectErrorStream()) {
+ PipedOutputStream pipedOutput = new PipedOutputStream();
+
+ fProcStdout = new PipedInputStream(pipedOutput);
+ fProcStderr = new NullInputStream();
+
+ fStderrReader = new Thread(new ProcReader(fChannel.getExtInputStream(), pipedOutput));
+ fStdoutReader = new Thread(new ProcReader(fChannel.getInputStream(), pipedOutput));
+
+ fStderrReader.start();
+ fStdoutReader.start();
+ } else {
+ fProcStdout = fChannel.getInputStream();
+ fProcStderr = fChannel.getExtInputStream();
+ }
+ } catch (IOException e) {
+ Activator.log(e);
+ destroy();
+ }
+
+ }
+
+ @Override
+ public void destroy() {
+ fChannel.disconnect();
+ }
+
+ @Override
+ public int exitValue() {
+ if (!isCompleted()) {
+ throw new IllegalThreadStateException(Messages.JSchProcess_exitValue_exception_msg);
+ }
+ return fChannel.getExitStatus();
+ }
+
+ @Override
+ public InputStream getErrorStream() {
+ return fProcStderr;
+ }
+
+ @Override
+ public InputStream getInputStream() {
+ return fProcStdout;
+ }
+
+ @Override
+ public OutputStream getOutputStream() {
+ try {
+ return fChannel.getOutputStream();
+ } catch (IOException e) {
+ return null;
+ }
+ }
+
+ @Override
+ public int waitFor() throws InterruptedException {
+ while (!isCompleted()) {
+ Thread.sleep(WAIT_TIMEOUT);
+ }
+ return exitValue();
+ }
+
+ @Override
+ public boolean isCompleted() {
+ return fChannel.isClosed();
+ }
+
+ @Override
+ public IRemoteProcess getRemoteProcess() {
+ return fProcess;
+ }
+
+ @Override
+ public void setTerminalSize(int cols, int rows, int width, int height) {
+ if (fChannel instanceof ChannelExec) {
+ ((ChannelExec) fChannel).setPtySize(cols, rows, width, height);
+ } else if (fChannel instanceof ChannelShell) {
+ ((ChannelShell) fChannel).setPtySize(cols, rows, width, height);
+ }
+ }
+
+ @Override
+ public void sendSignal(int signal) throws RemoteConnectionException {
+ if (signal >= 0 && signal <= USR2) {
+ try {
+ fChannel.sendSignal(signals[signal]);
+ } catch (Exception e) {
+ throw new RemoteConnectionException(e.getMessage());
+ }
+ }
+ }
+}
diff --git a/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/JSchProcessBuilder.java b/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/JSchProcessBuilder.java
new file mode 100644
index 00000000000..5b45981762f
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/JSchProcessBuilder.java
@@ -0,0 +1,290 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2010 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.internal.jsch.core;
+
+import java.io.IOException;
+import java.text.CharacterIterator;
+import java.text.StringCharacterIterator;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+
+import org.eclipse.core.filesystem.IFileStore;
+import org.eclipse.remote.core.AbstractRemoteProcessBuilder;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteFileService;
+import org.eclipse.remote.core.IRemoteProcess;
+import org.eclipse.remote.core.exception.RemoteConnectionException;
+import org.eclipse.remote.internal.core.RemoteDebugOptions;
+import org.eclipse.remote.internal.jsch.core.messages.Messages;
+
+import com.jcraft.jsch.Channel;
+import com.jcraft.jsch.ChannelExec;
+import com.jcraft.jsch.ChannelShell;
+import com.jcraft.jsch.JSchException;
+
+public class JSchProcessBuilder extends AbstractRemoteProcessBuilder {
+
+ private final JSchConnection fConnection;
+ private final Map<String, String> fRemoteEnv = new HashMap<>();
+ private final Set<Character> charSet = new HashSet<>();
+
+ private Channel fChannel;
+ private Map<String, String> fNewRemoteEnv;
+ private boolean fPreamble = true;
+ private boolean fShell = false;
+
+ public JSchProcessBuilder(IRemoteConnection connection, List<String> command) {
+ super(connection, command);
+ fConnection = connection.getService(JSchConnection.class);
+ fRemoteEnv.putAll(fConnection.getEnv());
+
+ // Create set of characters not to escape
+ String trustedChars = null;
+ trustedChars = "abcdefghijklmnopqrstuvwxyz" + "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; //$NON-NLS-1$ //$NON-NLS-2$
+ trustedChars += "0123456789" + "/._-"; //$NON-NLS-1$ //$NON-NLS-2$
+ CharacterIterator it = new StringCharacterIterator(trustedChars);
+ for (char c = it.first(); c != CharacterIterator.DONE; c = it.next()) {
+ charSet.add(c);
+ }
+ }
+
+ public JSchProcessBuilder(IRemoteConnection connection, String... command) {
+ this(connection, Arrays.asList(command));
+ }
+
+ public JSchProcessBuilder(IRemoteConnection connection) {
+ this(connection, new ArrayList<String>());
+ fShell = true;
+ }
+
+ @Override
+ public IFileStore directory() {
+ IFileStore dir = super.directory();
+ IRemoteFileService fileService = fConnection.getRemoteConnection().getService(IRemoteFileService.class);
+ if (dir == null && fileService != null) {
+ dir = fileService.getResource(fConnection.getWorkingDirectory());
+ directory(dir);
+ }
+ return dir;
+ }
+
+ @Override
+ public Map<String, String> environment() {
+ if (fNewRemoteEnv == null) {
+ fNewRemoteEnv = new HashMap<>();
+ fNewRemoteEnv.putAll(fRemoteEnv);
+ }
+ return fNewRemoteEnv;
+ }
+
+ @Override
+ public int getSupportedFlags() {
+ return ALLOCATE_PTY | FORWARD_X11;
+ }
+
+ @Override
+ public IRemoteProcess start(int flags) throws IOException {
+ if (!fConnection.hasOpenSession()) {
+ throw new IOException(Messages.JSchProcessBuilder_Connection_is_not_open);
+ }
+
+ List<String> cmdArgs = command();
+ if (cmdArgs.size() < 1 && !fShell) {
+ throw new IndexOutOfBoundsException();
+ }
+
+ String remoteCmd = ""; //$NON-NLS-1$
+
+ for (int i = 0; i < cmdArgs.size(); i++) {
+ if (i > 0) {
+ remoteCmd += " "; //$NON-NLS-1$
+ }
+ remoteCmd += charEscapify(cmdArgs.get(i), charSet);
+ }
+
+ /*
+ * There are two possibilities:
+ *
+ * 1. Some environment variables have changed values, or new variables have been added. In this case we just want to
+ * send send the changed values rather than all the variables.
+ *
+ * 2. Some of the existing variables have been removed. In this case, we need to resend the entire environment variable
+ * list.
+ */
+
+ final List<String> env = new ArrayList<>();
+ boolean clearEnv = false;
+
+ if (fNewRemoteEnv != null) {
+
+ /*
+ * See if any of the existing variables have been removed
+ */
+ for (String key : fRemoteEnv.keySet()) {
+ if (fNewRemoteEnv.get(key) == null) {
+ clearEnv = true;
+ break;
+ }
+ }
+
+ if (clearEnv) {
+ /*
+ * Add new/changed variables
+ */
+ for (Entry<String, String> entry : fNewRemoteEnv.entrySet()) {
+ env.add(entry.getKey() + "=" + entry.getValue()); //$NON-NLS-1$
+ }
+ } else {
+ /*
+ * Just add new or changed environment variables.
+ */
+ for (Entry<String, String> entry : fNewRemoteEnv.entrySet()) {
+ String oldValue = fRemoteEnv.get(entry.getKey());
+ if (oldValue == null || !oldValue.equals(entry.getValue())) {
+ env.add(entry.getKey() + "=" + entry.getValue()); //$NON-NLS-1$
+ }
+ }
+ }
+ }
+
+ try {
+ if (fShell) {
+ fChannel = fConnection.getShellChannel();
+ if ((flags & ALLOCATE_PTY) == ALLOCATE_PTY) {
+ ((ChannelShell) fChannel).setPty(true);
+ ((ChannelShell) fChannel).setPtyType((flags & FORWARD_X11) == FORWARD_X11 ? "xterm" : "vt100"); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ RemoteDebugOptions.trace(RemoteDebugOptions.DEBUG_REMOTE_COMMANDS, "executing shell"); //$NON-NLS-1$
+ } else {
+ fChannel = fConnection.getExecChannel();
+ String command = buildCommand(remoteCmd, env, clearEnv);
+ ((ChannelExec) fChannel).setCommand(command);
+ if ((flags & ALLOCATE_PTY) == ALLOCATE_PTY) {
+ ((ChannelExec) fChannel).setPty(true);
+ ((ChannelExec) fChannel).setPtyType((flags & FORWARD_X11) == FORWARD_X11 ? "xterm" : "vt100"); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ RemoteDebugOptions.trace(RemoteDebugOptions.DEBUG_REMOTE_COMMANDS, "executing command: " + command); //$NON-NLS-1$
+ }
+ fChannel.setXForwarding((flags & FORWARD_X11) == FORWARD_X11);
+ fChannel.connect();
+ return newRemoteProcess();
+ } catch (RemoteConnectionException e) {
+ throw new IOException(e.getMessage());
+ } catch (JSchException e) {
+ throw new IOException(e.getMessage());
+ }
+ }
+
+ public Channel getChannel() {
+ return fChannel;
+ }
+
+ public void setPreamble(boolean enable) {
+ fPreamble = enable;
+ }
+
+ private String buildCommand(String cmd, List<String> environment, boolean clearEnv) {
+ StringBuffer sb = new StringBuffer();
+ if (fPreamble) {
+ if (directory() != null) {
+ sb.append("cd " + charEscapify(directory().toURI().getPath(), charSet) + " && "); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ if (clearEnv) {
+ sb.append("env -i"); //$NON-NLS-1$
+ for (String env : environment) {
+ sb.append(" \"" + env + "\""); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ sb.append(" "); //$NON-NLS-1$
+ } else {
+ for (String env : environment) {
+ sb.append("export \"" + env + "\"; "); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ }
+ }
+ sb.append(cmd);
+ if (fPreamble && fConnection.useLoginShell()) {
+ return substitute(fConnection.getLoginShellCommand(), sb.toString());
+ }
+ return sb.toString();
+ }
+
+ private String charEscapify(String inputString, Set<Character> charSet) {
+ if (inputString == null) {
+ return null;
+ }
+ StringBuffer newString = new StringBuffer(""); //$NON-NLS-1$
+ CharacterIterator it = new StringCharacterIterator(inputString);
+
+ for (char c = it.first(); c != CharacterIterator.DONE; c = it.next()) {
+ if (c == '\'') {
+ newString.append("'\\\\\\''"); //$NON-NLS-1$
+ } else if (c > 127 || charSet.contains(c)) { // Do not escape non-ASCII characters (> 127)
+ newString.append(c);
+ } else {
+ newString.append("\\" + c); //$NON-NLS-1$
+ }
+ }
+ inputString = newString.toString();
+ return inputString;
+ }
+
+ private String substitute(String str, String... args) {
+ int length = str.length();
+ StringBuffer buffer = new StringBuffer(length + (args.length * 5));
+ for (int i = 0; i < length; i++) {
+ char c = str.charAt(i);
+ switch (c) {
+ case '{':
+ int index = str.indexOf('}', i);
+ // if we don't have a matching closing brace then...
+ if (index == -1) {
+ buffer.append(c);
+ break;
+ }
+ i++;
+ if (i >= length) {
+ buffer.append(c);
+ break;
+ }
+ // look for a substitution
+ int number = -1;
+ try {
+ number = Integer.parseInt(str.substring(i, index));
+ } catch (NumberFormatException e) {
+ buffer.append("<invalid argument>"); //$NON-NLS-1$
+ i = index;
+ break;
+ }
+ if (number >= args.length || number < 0) {
+ buffer.append("<missing argument>"); //$NON-NLS-1$
+ i = index;
+ break;
+ }
+ buffer.append(args[number]);
+ i = index;
+ break;
+ default:
+ buffer.append(c);
+ }
+ }
+ return buffer.toString();
+ }
+
+} \ No newline at end of file
diff --git a/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/JSchUserInfo.java b/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/JSchUserInfo.java
new file mode 100644
index 00000000000..58eaa019a63
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/JSchUserInfo.java
@@ -0,0 +1,148 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2015 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - Initial API and implementation
+ * Patrick Tasse - [462418] use stored password on non-preferred password based authentication
+ * Martin Oberhuber - [468889] Support Eclipse older than Mars
+ *******************************************************************************/
+package org.eclipse.remote.internal.jsch.core;
+
+import java.net.PasswordAuthentication;
+
+import org.eclipse.remote.core.IRemoteConnectionHostService;
+import org.eclipse.remote.core.IUserAuthenticatorService;
+import org.eclipse.remote.internal.jsch.core.messages.Messages;
+
+import com.jcraft.jsch.UIKeyboardInteractive;
+import com.jcraft.jsch.UserInfo;
+
+/**
+ * Class to supply credentials from connection attributes without user interaction.
+ */
+public class JSchUserInfo implements UserInfo, UIKeyboardInteractive {
+ private boolean logging = false;
+ private boolean firstTryPassphrase = true;
+
+ private final IRemoteConnectionHostService hostService;
+ private IUserAuthenticatorService userAuthenticatorService;
+
+ public JSchUserInfo(IRemoteConnectionHostService hostService) {
+ this.hostService = hostService;
+ }
+
+ public JSchUserInfo(IRemoteConnectionHostService hostService, IUserAuthenticatorService userAuthenticatorService) {
+ this(hostService);
+ this.userAuthenticatorService = userAuthenticatorService;
+ }
+
+ @Override
+ public String getPassphrase() {
+ if (logging) {
+ System.out.println("getPassphrase"); //$NON-NLS-1$
+ }
+ return hostService.getPassphrase();
+ }
+
+ @Override
+ public String getPassword() {
+ if (logging) {
+ System.out.println("getPassword"); //$NON-NLS-1$
+ }
+ return hostService.getPassword();
+ }
+
+ @Override
+ public String[] promptKeyboardInteractive(String destination, String name, String instruction, String[] prompt,
+ boolean[] echo) {
+ if (logging) {
+ System.out.println("promptKeyboardInteractive:" + destination + ":" + name + ":" + instruction); //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
+ for (String p : prompt) {
+ System.out.println(" " + p); //$NON-NLS-1$
+ }
+ }
+
+ if (userAuthenticatorService != null) {
+ String[] result = userAuthenticatorService.prompt(destination, name, instruction, prompt, echo);
+ if (result != null) {
+ if (prompt.length == 1 && prompt[0].trim().equalsIgnoreCase("password:")) { //$NON-NLS-1$
+ hostService.setPassword(result[0]);
+ }
+ }
+ return result;
+ }
+ return null;
+ }
+
+ @Override
+ public boolean promptPassphrase(String message) {
+ if (logging) {
+ System.out.println("promptPassphrase:" + message); //$NON-NLS-1$
+ }
+ if (firstTryPassphrase && !getPassphrase().equals("")) { //$NON-NLS-1$
+ firstTryPassphrase = false;
+ return true;
+ }
+ if (userAuthenticatorService != null) {
+ PasswordAuthentication auth = userAuthenticatorService.prompt(hostService.getUsername(), message);
+ if (auth == null) {
+ return false;
+ }
+ hostService.setUsername(auth.getUserName());
+ hostService.setPassphrase(new String(auth.getPassword()));
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public boolean promptPassword(String message) {
+ if (logging) {
+ System.out.println("promptPassword:" + message); //$NON-NLS-1$
+ }
+ if (userAuthenticatorService != null) {
+ PasswordAuthentication auth = userAuthenticatorService.prompt(hostService.getUsername(), message);
+ if (auth == null) {
+ return false;
+ }
+ hostService.setUsername(auth.getUserName());
+ hostService.setPassword(new String(auth.getPassword()));
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public boolean promptYesNo(String message) {
+ if (logging) {
+ System.out.println("promptYesNo:" + message); //$NON-NLS-1$
+ }
+ if (userAuthenticatorService != null) {
+ int prompt = userAuthenticatorService.prompt(IUserAuthenticatorService.QUESTION,
+ Messages.AuthInfo_Authentication_message, message,
+ new int[] { IUserAuthenticatorService.YES, IUserAuthenticatorService.NO },
+ IUserAuthenticatorService.YES);
+ return prompt == IUserAuthenticatorService.YES;
+ }
+ return true;
+ }
+
+ @Override
+ public void showMessage(String message) {
+ if (logging) {
+ System.out.println("showMessage:" + message); //$NON-NLS-1$
+ }
+ if (userAuthenticatorService != null) {
+ userAuthenticatorService.prompt(IUserAuthenticatorService.INFORMATION,
+ Messages.AuthInfo_Authentication_message, message, new int[] { IUserAuthenticatorService.OK },
+ IUserAuthenticatorService.OK);
+ }
+ }
+}
diff --git a/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/JschFileStore.java b/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/JschFileStore.java
new file mode 100644
index 00000000000..14461a4df78
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/JschFileStore.java
@@ -0,0 +1,274 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2015 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - Initial API and implementation
+ * Roland Schulz, University of Tennessee
+ * Martin Oberhuber - [468889] Support Eclipse older than Mars
+ *******************************************************************************/
+package org.eclipse.remote.internal.jsch.core;
+
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.URI;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.core.filesystem.EFS;
+import org.eclipse.core.filesystem.IFileInfo;
+import org.eclipse.core.filesystem.IFileStore;
+import org.eclipse.core.filesystem.provider.FileStore;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.SubMonitor;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteConnectionType;
+import org.eclipse.remote.core.IRemoteServicesManager;
+import org.eclipse.remote.core.RemoteServicesUtils;
+import org.eclipse.remote.core.exception.RemoteConnectionException;
+import org.eclipse.remote.internal.jsch.core.commands.ChildInfosCommand;
+import org.eclipse.remote.internal.jsch.core.commands.DeleteCommand;
+import org.eclipse.remote.internal.jsch.core.commands.FetchInfoCommand;
+import org.eclipse.remote.internal.jsch.core.commands.GetInputStreamCommand;
+import org.eclipse.remote.internal.jsch.core.commands.GetOutputStreamCommand;
+import org.eclipse.remote.internal.jsch.core.commands.MkdirCommand;
+import org.eclipse.remote.internal.jsch.core.commands.PutInfoCommand;
+import org.eclipse.remote.internal.jsch.core.messages.Messages;
+
+public class JschFileStore extends FileStore {
+ /**
+ * Public factory method for obtaining JschFileStore instances.
+ *
+ * @param uri
+ * URI to get a fileStore for
+ * @return an JschFileStore instance for the URI.
+ */
+ public static JschFileStore getInstance(URI uri) {
+ synchronized (instanceMap) {
+ JschFileStore store = instanceMap.get(uri.toString());
+ if (store == null) {
+ store = new JschFileStore(uri);
+ instanceMap.put(uri.toString(), store);
+ }
+ return store;
+ }
+ }
+
+ private static Map<String, JschFileStore> instanceMap = new HashMap<>();
+
+ private final IPath fRemotePath;
+ private final URI fURI;
+
+ private JschFileStore(URI uri) {
+ fURI = uri;
+ fRemotePath = RemoteServicesUtils.posixPath(uri.getPath());
+ }
+
+ private JSchConnection checkConnection(IProgressMonitor monitor) throws RemoteConnectionException {
+ IRemoteServicesManager manager = Activator.getService(IRemoteServicesManager.class);
+ IRemoteConnectionType connectionType = manager.getConnectionType(fURI);
+ if (connectionType == null) {
+ throw new RemoteConnectionException(
+ NLS.bind(Messages.JschFileStore_No_remote_services_found_for_URI, fURI));
+ }
+
+ try {
+ IRemoteConnection connection = connectionType.getConnection(fURI);
+ if (connection == null) {
+ throw new RemoteConnectionException(NLS.bind(Messages.JschFileStore_Invalid_connection_for_URI, fURI));
+ }
+ if (!connection.isOpen()) {
+ connection.open(monitor);
+ if (!connection.isOpen()) {
+ throw new RemoteConnectionException(Messages.JschFileStore_Connection_is_not_open);
+ }
+ }
+ return connection.getService(JSchConnection.class);
+ } catch (CoreException e) {
+ throw new RemoteConnectionException(e);
+ }
+ }
+
+ @Override
+ public IFileInfo[] childInfos(int options, IProgressMonitor monitor) throws CoreException {
+ SubMonitor subMon = SubMonitor.convert(monitor, 10);
+ JSchConnection connection = checkConnection(subMon.newChild(1));
+ ChildInfosCommand command = new ChildInfosCommand(connection, fRemotePath);
+ return command.getResult(subMon.newChild(9));
+ }
+
+ @Override
+ public String[] childNames(int options, IProgressMonitor monitor) throws CoreException {
+ SubMonitor subMon = SubMonitor.convert(monitor, 10);
+ IFileInfo[] infos = childInfos(options, subMon.newChild(10));
+ String[] names = new String[infos.length];
+ for (int i = 0; i < infos.length; i++) {
+ names[i] = infos[i].getName();
+ }
+ return names;
+ }
+
+ @Override
+ public void delete(int options, IProgressMonitor monitor) throws CoreException {
+ SubMonitor subMon = SubMonitor.convert(monitor, 20);
+ JSchConnection connection = checkConnection(subMon.newChild(1));
+ IFileInfo info = fetchInfo(EFS.NONE, subMon.newChild(9));
+ if (!subMon.isCanceled() && info.exists()) {
+ DeleteCommand command = new DeleteCommand(connection, fRemotePath);
+ command.getResult(subMon.newChild(10));
+ }
+ }
+
+ @Override
+ public IFileInfo fetchInfo(int options, IProgressMonitor monitor) throws CoreException {
+ SubMonitor subMon = SubMonitor.convert(monitor, 10);
+ JSchConnection connection = checkConnection(subMon.newChild(1));
+ FetchInfoCommand command = new FetchInfoCommand(connection, fRemotePath);
+ return command.getResult(subMon.newChild(9));
+ }
+
+ @Override
+ public IFileStore getChild(String name) {
+ URI uri = JSchFileSystem.getURIFor(JSchFileSystem.getConnectionNameFor(fURI),
+ fRemotePath.append(name).toString());
+ return JschFileStore.getInstance(uri);
+ }
+
+ @Override
+ public String getName() {
+ return getNameFromPath(fRemotePath);
+ }
+
+ /**
+ * Utility routing to get the file name from an absolute path.
+ *
+ * @param path
+ * path to extract file name from
+ * @return last segment of path, or the full path if it is root
+ */
+ private String getNameFromPath(IPath path) {
+ if (path.isRoot()) {
+ return path.toString();
+ }
+ return path.lastSegment();
+ }
+
+ @Override
+ public IFileStore getParent() {
+ if (fRemotePath.isRoot()) {
+ return null;
+ }
+ String parentPath = fRemotePath.toString();
+ if (fRemotePath.segmentCount() > 0) {
+ parentPath = fRemotePath.removeLastSegments(1).toString();
+ }
+ return JschFileStore
+ .getInstance(JSchFileSystem.getURIFor(JSchFileSystem.getConnectionNameFor(fURI), parentPath));
+ }
+
+ @Override
+ public IFileStore mkdir(int options, IProgressMonitor monitor) throws CoreException {
+ SubMonitor subMon = SubMonitor.convert(monitor, 20);
+ JSchConnection connection = checkConnection(subMon.newChild(1));
+
+ if ((options & EFS.SHALLOW) == EFS.SHALLOW) {
+ IFileStore parent = getParent();
+ if (parent != null && !parent.fetchInfo(EFS.NONE, subMon.newChild(9)).exists()) {
+ throw new CoreException(new Status(IStatus.ERROR, Activator.getUniqueIdentifier(), EFS.ERROR_WRITE,
+ NLS.bind(Messages.JschFileStore_The_parent_of_directory_does_not_exist, fRemotePath.toString()),
+ null));
+ }
+ if (subMon.isCanceled()) {
+ return this;
+ }
+ }
+
+ try {
+ MkdirCommand command = new MkdirCommand(connection, fRemotePath);
+ command.getResult(subMon.newChild(10));
+ } catch (Exception e) {
+ // Ignore any exceptions
+ }
+ if (!subMon.isCanceled()) {
+ /*
+ * Check if the result exists and is a directory, throw an exception if neither.
+ */
+ IFileInfo info = fetchInfo(EFS.NONE, subMon.newChild(10));
+ if (!subMon.isCanceled()) {
+ if (!info.exists()) {
+ throw new CoreException(new Status(IStatus.ERROR, Activator.getUniqueIdentifier(), EFS.ERROR_WRITE,
+ NLS.bind(Messages.JschFileStore_The_directory_could_not_be_created, fRemotePath.toString()),
+ null));
+ }
+ if (!info.isDirectory()) {
+ throw new CoreException(new Status(IStatus.ERROR, Activator.getUniqueIdentifier(),
+ EFS.ERROR_WRONG_TYPE,
+ NLS.bind(Messages.JschFileStore_A_file_of_name_already_exists, fRemotePath.toString()),
+ null));
+ }
+ }
+ }
+
+ return this;
+ }
+
+ @Override
+ public InputStream openInputStream(int options, IProgressMonitor monitor) throws CoreException {
+ SubMonitor subMon = SubMonitor.convert(monitor, 30);
+ JSchConnection connection = checkConnection(subMon.newChild(1));
+ IFileInfo info = fetchInfo(EFS.NONE, subMon.newChild(9));
+ if (!subMon.isCanceled()) {
+ if (!info.exists()) {
+ throw new CoreException(new Status(IStatus.ERROR, Activator.getUniqueIdentifier(), EFS.ERROR_READ,
+ NLS.bind(Messages.JschFileStore_File_doesnt_exist, fRemotePath.toString()), null));
+ }
+ if (info.isDirectory()) {
+ throw new CoreException(new Status(IStatus.ERROR, Activator.getUniqueIdentifier(), EFS.ERROR_WRONG_TYPE,
+ NLS.bind(Messages.JschFileStore_Is_a_directory, fRemotePath.toString()), null));
+ }
+ GetInputStreamCommand command = new GetInputStreamCommand(connection, fRemotePath);
+ return command.getResult(subMon.newChild(10));
+ }
+ return null;
+ }
+
+ @Override
+ public OutputStream openOutputStream(int options, IProgressMonitor monitor) throws CoreException {
+ SubMonitor subMon = SubMonitor.convert(monitor, 30);
+ JSchConnection connection = checkConnection(subMon.newChild(1));
+ IFileInfo info = fetchInfo(EFS.NONE, subMon.newChild(9));
+ if (!subMon.isCanceled()) {
+ if (info.isDirectory()) {
+ throw new CoreException(new Status(IStatus.ERROR, Activator.getUniqueIdentifier(), EFS.ERROR_WRONG_TYPE,
+ NLS.bind(Messages.JschFileStore_Is_a_directory, fRemotePath.toString()), null));
+ }
+ GetOutputStreamCommand command = new GetOutputStreamCommand(connection, options, fRemotePath);
+ return command.getResult(subMon.newChild(10));
+ }
+ return null;
+ }
+
+ @Override
+ public void putInfo(IFileInfo info, int options, IProgressMonitor monitor) throws CoreException {
+ SubMonitor subMon = SubMonitor.convert(monitor, 10);
+ JSchConnection connection = checkConnection(subMon.newChild(1));
+ PutInfoCommand command = new PutInfoCommand(connection, info, options, fRemotePath);
+ command.getResult(subMon.newChild(9));
+ }
+
+ @Override
+ public URI toURI() {
+ return fURI;
+ }
+}
diff --git a/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/commands/AbstractRemoteCommand.java b/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/commands/AbstractRemoteCommand.java
new file mode 100644
index 00000000000..31cd158af04
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/commands/AbstractRemoteCommand.java
@@ -0,0 +1,479 @@
+/******************************************************************************
+ * Copyright (c) 2013, 2015 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - Initial Implementation
+ * Martin Oberhuber - [468889] Support Eclipse older than Mars
+ *****************************************************************************/
+package org.eclipse.remote.internal.jsch.core.commands;
+
+import java.io.IOException;
+import java.text.CharacterIterator;
+import java.text.MessageFormat;
+import java.text.StringCharacterIterator;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+
+import org.eclipse.core.filesystem.EFS;
+import org.eclipse.core.filesystem.IFileInfo;
+import org.eclipse.core.filesystem.provider.FileInfo;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.SubMonitor;
+import org.eclipse.remote.core.RemoteServicesUtils;
+import org.eclipse.remote.core.exception.RemoteConnectionException;
+import org.eclipse.remote.internal.jsch.core.JSchConnection;
+import org.eclipse.remote.internal.jsch.core.messages.Messages;
+
+import com.jcraft.jsch.ChannelExec;
+import com.jcraft.jsch.ChannelSftp;
+import com.jcraft.jsch.JSchException;
+import com.jcraft.jsch.SftpATTRS;
+import com.jcraft.jsch.SftpException;
+import com.jcraft.jsch.SftpProgressMonitor;
+
+/**
+ * @author greg
+ *
+ */
+public abstract class AbstractRemoteCommand<T> {
+ protected static class CommandProgressMonitor implements SftpProgressMonitor {
+ private final IProgressMonitor fMonitor;
+ private double fWorkPercentFactor;
+ private Long fMaxWork;
+ private String fMaxWorkSize;
+ private long fWorkToDate;
+ private String fPrefix;
+
+ public CommandProgressMonitor(IProgressMonitor monitor) {
+ fMonitor = monitor;
+ }
+
+ public CommandProgressMonitor(String prefix, IProgressMonitor monitor) {
+ fPrefix = prefix;
+ fMonitor = monitor;
+ }
+
+ @Override
+ public boolean count(long count) {
+ fWorkToDate += count;
+ String size;
+ Long workToDate;
+ if (fWorkToDate < 1024L) {
+ size = "bytes"; //$NON-NLS-1$
+ workToDate = fWorkToDate;
+ } else {
+ size = "KB"; //$NON-NLS-1$
+ workToDate = fWorkToDate / 1024L;
+ }
+ StringBuffer taskName = new StringBuffer();
+ if (fPrefix != null) {
+ taskName.append(fPrefix);
+ }
+ if (fWorkPercentFactor < 0) {
+ taskName.append(MessageFormat.format(Messages.AbstractRemoteCommand_format1,
+ new Object[] { workToDate, size }));
+ } else {
+ Double workPercent = Double.valueOf(fWorkPercentFactor * fWorkToDate);
+ taskName.append(MessageFormat.format(Messages.AbstractRemoteCommand_format2,
+ new Object[] { workToDate, size, fMaxWork, fMaxWorkSize, workPercent }));
+ }
+ fMonitor.subTask(taskName.toString());
+ fMonitor.worked((int) count);
+ return !(fMonitor.isCanceled());
+ }
+
+ @Override
+ public void end() {
+ fMonitor.done();
+ }
+
+ @Override
+ public void init(int op, String src, String dest, long max) {
+ fWorkPercentFactor = 1.0 / max;
+ if (max < 1024L) {
+ fMaxWorkSize = "bytes"; //$NON-NLS-1$
+ fMaxWork = max;
+ } else {
+ fMaxWorkSize = "KB"; //$NON-NLS-1$
+ fMaxWork = max / 1024L;
+ }
+ fWorkToDate = 0;
+ fMonitor.beginTask(RemoteServicesUtils.posixPath(src).lastSegment(), (int) max);
+ }
+ }
+
+ protected abstract class ExecCallable<T1> implements Callable<T1> {
+ private IProgressMonitor fProgressMonitor;
+ private ChannelExec fExecChannel;
+
+ private Future<T1> asyncCmdInThread() throws RemoteConnectionException {
+ setChannel(fConnection.getExecChannel());
+ return fPool.submit(this);
+ }
+
+ @Override
+ public abstract T1 call() throws JSchException, IOException, RemoteConnectionException;
+
+ private void finalizeCmdInThread() {
+ setChannel(null);
+ }
+
+ public ChannelExec getChannel() {
+ return fExecChannel;
+ }
+
+ public IProgressMonitor getProgressMonitor() {
+ return fProgressMonitor;
+ }
+
+ /**
+ * Function opens exec channel and then executes the exec operation. If
+ * run on the main thread it executes it on a separate thread
+ */
+ public T1 getResult(IProgressMonitor monitor) throws RemoteConnectionException {
+ Future<T1> future = null;
+ fProgressMonitor = SubMonitor.convert(monitor, 10);
+ try {
+ future = asyncCmdInThread();
+ return waitCmdInThread(future);
+ } finally {
+ finalizeCmdInThread();
+ }
+ }
+
+ public void setChannel(ChannelExec channel) {
+ fExecChannel = channel;
+ }
+
+ private T1 waitCmdInThread(Future<T1> future) throws RemoteConnectionException {
+ boolean bInterrupted = Thread.interrupted();
+ while (!getProgressMonitor().isCanceled()) {
+ try {
+ return future.get(100, TimeUnit.MILLISECONDS);
+ } catch (InterruptedException e) {
+ bInterrupted = true;
+ } catch (TimeoutException e) {
+ // ignore
+ } catch (ExecutionException e) {
+ getChannel().disconnect();
+ throw new RemoteConnectionException(e.getMessage());
+ }
+ getProgressMonitor().worked(1);
+ }
+ if (bInterrupted) {
+ Thread.currentThread().interrupt(); // set current thread flag
+ }
+ future.cancel(true);
+ getChannel().disconnect();
+ throw new RemoteConnectionException(Messages.AbstractRemoteCommand_Operation_cancelled_by_user);
+ }
+ }
+
+ protected abstract class SftpCallable<T1> implements Callable<T1> {
+ private IProgressMonitor fProgressMonitor;
+ private ChannelSftp fSftpChannel;
+
+ private Future<T1> asyncCmdInThread() throws RemoteConnectionException {
+ setChannel(fConnection.getSftpCommandChannel());
+ return fPool.submit(this);
+ }
+
+ @Override
+ public abstract T1 call() throws JSchException, SftpException, IOException;
+
+ private void finalizeCmdInThread() {
+ setChannel(null);
+ }
+
+ public ChannelSftp getChannel() {
+ return fSftpChannel;
+ }
+
+ public IProgressMonitor getProgressMonitor() {
+ return fProgressMonitor;
+ }
+
+ /**
+ * Function opens sftp channel and then executes the sftp operation. If
+ * run on the main thread it executes it on a separate thread
+ */
+ public T1 getResult(IProgressMonitor monitor) throws SftpException, RemoteConnectionException {
+ Future<T1> future = null;
+ fProgressMonitor = SubMonitor.convert(monitor, 10);
+ try {
+ future = asyncCmdInThread();
+ return waitCmdInThread(future);
+ } finally {
+ finalizeCmdInThread();
+ }
+ }
+
+ public void setChannel(ChannelSftp channel) {
+ fSftpChannel = channel;
+ }
+
+ private T1 waitCmdInThread(Future<T1> future) throws SftpException, RemoteConnectionException {
+ boolean bInterrupted = Thread.interrupted();
+ while (!getProgressMonitor().isCanceled()) {
+ try {
+ return future.get(100, TimeUnit.MILLISECONDS);
+ } catch (InterruptedException e) {
+ bInterrupted = true;
+ } catch (TimeoutException e) {
+ // ignore
+ } catch (ExecutionException e) {
+ if (e.getCause() instanceof SftpException) {
+ throw (SftpException) e.getCause();
+ }
+ throw new RemoteConnectionException(e.getMessage());
+ }
+ getProgressMonitor().worked(1);
+ }
+ if (bInterrupted) {
+ Thread.currentThread().interrupt(); // set current thread flag
+ }
+ future.cancel(true);
+ throw new RemoteConnectionException(Messages.AbstractRemoteCommand_Operation_cancelled_by_user);
+ }
+ }
+
+ private static ExecutorService fPool = Executors.newSingleThreadExecutor();
+
+ private final JSchConnection fConnection;
+
+ public static final int UNKNOWN = 0;
+
+ public static final int SUCCESS_OK = 1;
+
+ public static final int SUCCESS_ERROR = 2;
+
+ public static final int ERROR_NOT_EXECUTABLE = 126;
+
+ public static final int ERROR_NOT_FOUND = 127;
+ public static final int INVALID_EXIT_CODE = 128;
+ public static final int SIGHUP = 129;
+ public static final int SIGINT = 130;
+ public static final int SIGQUIT = 131;
+ public static final int SIGILL = 132;
+ public static final int SIGTRAP = 133;
+ public static final int SIGIOT = 134;
+ public static final int SIGBUS = 135;
+ public static final int SIGFPE = 136;
+ public static final int SIGKILL = 137;
+ public static final int SIGUSR1 = 138;
+ public static final int SIGSEGV = 139;
+ public static final int SIGUSR2 = 140;
+ public static final int SIGPIPE = 141;
+ public static final int SIGALRM = 142;
+ public static final int SIGTERM = 143;
+ public static final int SIGSTKFLT = 144;
+ public static final int SIGCHLD = 145;
+ public static final int SIGCONT = 146;
+ public static final int SIGSTOP = 147;
+ public static final int SIGTSTP = 148;
+ public static final int SIGTTIN = 149;
+ public static final int SIGTTOU = 150;
+ public static final int SIGURG = 151;
+ public static final int SIGXCPU = 152;
+ public static final int SIGXFSZ = 153;
+ public static final int SIGVTALRM = 154;
+ public static final int SIGPROF = 155;
+ public static final int SIGWINCH = 156;
+ public static final int SIGIO = 157;
+ public static final int SIGPWR = 158;
+
+ public AbstractRemoteCommand(JSchConnection connection) {
+ fConnection = connection;
+ }
+
+ protected IFileInfo convertToFileInfo(final IPath path, SftpATTRS attrs, IProgressMonitor monitor)
+ throws RemoteConnectionException {
+ return convertToFileInfo(path.lastSegment(), path.removeLastSegments(1), attrs, monitor);
+ }
+
+ protected IFileInfo convertToFileInfo(final String name, final IPath parentPath, SftpATTRS attrs,
+ IProgressMonitor monitor) throws RemoteConnectionException {
+ SubMonitor progress = SubMonitor.convert(monitor, 10);
+ FileInfo fileInfo = new FileInfo(name);
+ fileInfo.setExists(true);
+ fileInfo.setDirectory(attrs.isDir());
+ fileInfo.setAttribute(EFS.ATTRIBUTE_OWNER_EXECUTE, (attrs.getPermissions() & 0100) != 0);
+ fileInfo.setAttribute(EFS.ATTRIBUTE_OWNER_WRITE, (attrs.getPermissions() & 0200) != 0);
+ fileInfo.setAttribute(EFS.ATTRIBUTE_OWNER_READ, (attrs.getPermissions() & 0400) != 0);
+ fileInfo.setAttribute(EFS.ATTRIBUTE_GROUP_EXECUTE, (attrs.getPermissions() & 0010) != 0);
+ fileInfo.setAttribute(EFS.ATTRIBUTE_GROUP_WRITE, (attrs.getPermissions() & 0020) != 0);
+ fileInfo.setAttribute(EFS.ATTRIBUTE_GROUP_READ, (attrs.getPermissions() & 0040) != 0);
+ fileInfo.setAttribute(EFS.ATTRIBUTE_OTHER_EXECUTE, (attrs.getPermissions() & 0001) != 0);
+ fileInfo.setAttribute(EFS.ATTRIBUTE_OTHER_WRITE, (attrs.getPermissions() & 0002) != 0);
+ fileInfo.setAttribute(EFS.ATTRIBUTE_OTHER_READ, (attrs.getPermissions() & 0004) != 0);
+ fileInfo.setAttribute(EFS.ATTRIBUTE_SYMLINK, attrs.isLink());
+ if (attrs.isLink()) {
+ SftpCallable<String> c2 = new SftpCallable<>() {
+ @Override
+ public String call() throws JSchException, SftpException {
+ return getChannel().readlink(parentPath.append(name).toString());
+ }
+ };
+ String target;
+ try {
+ progress.subTask(Messages.AbstractRemoteCommand_Get_symlink_target);
+ target = c2.getResult(progress.newChild(10));
+ fileInfo.setStringAttribute(EFS.ATTRIBUTE_LINK_TARGET, target);
+ } catch (SftpException e) {
+ // Ignore
+ }
+ }
+ fileInfo.setLastModified(attrs.getMTime() * 1000L);
+ fileInfo.setLength(attrs.getSize());
+ return fileInfo;
+ }
+
+ public JSchConnection getConnection() {
+ return fConnection;
+ }
+
+ public int getFinishStatus() {
+ int code = 0;
+
+ if (code == 0) {
+ return SUCCESS_OK;
+ } else if (code <= 125) {
+ return SUCCESS_ERROR;
+ } else if (code == 126) {
+ return ERROR_NOT_EXECUTABLE;
+ } else if (code == 127) {
+ return ERROR_NOT_FOUND;
+ } else if (code == 128) {
+ return UNKNOWN;
+ } else if (code == 255) {
+ return INVALID_EXIT_CODE;
+ } else if (code == 128 + 1) {
+ return SIGHUP;
+ } else if (code == 128 + 2) {
+ return SIGINT;
+ } else if (code == 128 + 3) {
+ return SIGQUIT;
+ } else if (code == 128 + 4) {
+ return SIGILL;
+ } else if (code == 128 + 5) {
+ return SIGTRAP;
+ } else if (code == 128 + 6) {
+ return SIGIOT;
+ } else if (code == 128 + 7) {
+ return SIGBUS;
+ } else if (code == 128 + 8) {
+ return SIGFPE;
+ } else if (code == 128 + 9) {
+ return SIGKILL;
+ } else if (code == 128 + 10) {
+ return SIGUSR1;
+ } else if (code == 128 + 11) {
+ return SIGSEGV;
+ } else if (code == 128 + 12) {
+ return SIGUSR2;
+ } else if (code == 128 + 13) {
+ return SIGPIPE;
+ } else if (code == 128 + 14) {
+ return SIGALRM;
+ } else if (code == 128 + 15) {
+ return SIGTERM;
+ } else if (code == 128 + 16) {
+ return SIGSTKFLT;
+ } else if (code == 128 + 17) {
+ return SIGCHLD;
+ } else if (code == 128 + 18) {
+ return SIGCONT;
+ } else if (code == 128 + 19) {
+ return SIGSTOP;
+ } else if (code == 128 + 20) {
+ return SIGTSTP;
+ } else if (code == 128 + 21) {
+ return SIGTTIN;
+ } else if (code == 128 + 22) {
+ return SIGTTOU;
+ } else if (code == 128 + 23) {
+ return SIGURG;
+ } else if (code == 128 + 24) {
+ return SIGXCPU;
+ } else if (code == 128 + 25) {
+ return SIGXFSZ;
+ } else if (code == 128 + 26) {
+ return SIGVTALRM;
+ } else if (code == 128 + 27) {
+ return SIGPROF;
+ } else if (code == 128 + 28) {
+ return SIGWINCH;
+ } else if (code == 128 + 29) {
+ return SIGIO;
+ } else if (code == 128 + 30) {
+ return SIGPWR;
+ } else {
+ return UNKNOWN;
+ }
+ }
+
+ protected abstract T getResult(IProgressMonitor monitor) throws RemoteConnectionException;
+
+ protected String quote(String path, boolean full) {
+ StringBuffer buffer = new StringBuffer();
+ StringCharacterIterator iter = new StringCharacterIterator(path);
+ for (char c = iter.first(); c != CharacterIterator.DONE; c = iter.next()) {
+ switch (c) {
+ case '(':
+ case ')':
+ case '[':
+ case ']':
+ case '{':
+ case '}':
+ case '|':
+ case '\\':
+ case '*':
+ case '&':
+ case '^':
+ case '%':
+ case '$':
+ case '#':
+ case '@':
+ case '!':
+ case '~':
+ case '`':
+ case '\'':
+ case '"':
+ case ':':
+ case ';':
+ case '?':
+ case '<':
+ case '>':
+ case ',':
+ case '\n':
+ if (full) {
+ buffer.append('\\');
+ }
+ buffer.append(c);
+ continue;
+ case ' ':
+ buffer.append('\\');
+ buffer.append(c);
+ continue;
+ default:
+ buffer.append(c);
+ continue;
+ }
+ }
+ return buffer.toString();
+ }
+
+} \ No newline at end of file
diff --git a/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/commands/ChildInfosCommand.java b/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/commands/ChildInfosCommand.java
new file mode 100644
index 00000000000..99ae42e0531
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/commands/ChildInfosCommand.java
@@ -0,0 +1,67 @@
+package org.eclipse.remote.internal.jsch.core.commands;
+
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.List;
+import java.util.Vector;
+
+import org.eclipse.core.filesystem.IFileInfo;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.SubMonitor;
+import org.eclipse.remote.core.exception.RemoteConnectionException;
+import org.eclipse.remote.internal.jsch.core.JSchConnection;
+
+import com.jcraft.jsch.ChannelSftp.LsEntry;
+import com.jcraft.jsch.JSchException;
+import com.jcraft.jsch.SftpException;
+
+public class ChildInfosCommand extends AbstractRemoteCommand<IFileInfo[]> {
+
+ private final IPath fRemotePath;
+
+ public ChildInfosCommand(JSchConnection connection, IPath path) {
+ super(connection);
+ fRemotePath = path;
+ }
+
+ @Override
+ public IFileInfo[] getResult(IProgressMonitor monitor) throws RemoteConnectionException {
+ final SubMonitor subMon = SubMonitor.convert(monitor, 20);
+
+ Vector<LsEntry> files = getResult(fRemotePath.toString(), subMon.newChild(10));
+
+ List<IFileInfo> result = new ArrayList<>();
+
+ if (files != null && !subMon.isCanceled()) {
+ Enumeration<LsEntry> enumeration = files.elements();
+ while (enumeration.hasMoreElements() && !subMon.isCanceled()) {
+ LsEntry entry = enumeration.nextElement();
+ final String fileName = entry.getFilename();
+ if (fileName.equals(".") || fileName.equals("..")) { //$NON-NLS-1$ //$NON-NLS-2$
+ // Ignore parent and current dir entry.
+ continue;
+ }
+ result.add(convertToFileInfo(fileName, fRemotePath, entry.getAttrs(), subMon.newChild(10)));
+ }
+ }
+
+ return result.toArray(new IFileInfo[result.size()]);
+ }
+
+ private Vector<LsEntry> getResult(String path, IProgressMonitor monitor) throws RemoteConnectionException {
+ final SubMonitor subMon = SubMonitor.convert(monitor, 10);
+ SftpCallable<Vector<LsEntry>> c = new SftpCallable<>() {
+ @SuppressWarnings("unchecked")
+ @Override
+ public Vector<LsEntry> call() throws JSchException, SftpException {
+ return getChannel().ls(quote(fRemotePath.toString(), true));
+ }
+ };
+ try {
+ return c.getResult(subMon.newChild(10));
+ } catch (SftpException e) {
+ throw new RemoteConnectionException(e.getMessage());
+ }
+ }
+}
diff --git a/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/commands/DeleteCommand.java b/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/commands/DeleteCommand.java
new file mode 100644
index 00000000000..4183e83ff3a
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/commands/DeleteCommand.java
@@ -0,0 +1,30 @@
+package org.eclipse.remote.internal.jsch.core.commands;
+
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.SubMonitor;
+import org.eclipse.remote.core.exception.RemoteConnectionException;
+import org.eclipse.remote.internal.jsch.core.JSchConnection;
+
+public class DeleteCommand extends AbstractRemoteCommand<Void> {
+
+ private final IPath fRemotePath;
+
+ public DeleteCommand(JSchConnection connection, IPath path) {
+ super(connection);
+ fRemotePath = path;
+ }
+
+ @Override
+ public Void getResult(IProgressMonitor monitor) throws RemoteConnectionException {
+ final SubMonitor subMon = SubMonitor.convert(monitor, 10);
+
+ ExecCommand command = new ExecCommand(getConnection());
+ command.setCommand("/bin/rm -rf " + quote(fRemotePath.toString(), true)); //$NON-NLS-1$
+ String result = command.getResult(subMon.newChild(10));
+ if (!result.equals("")) { //$NON-NLS-1$
+ throw new RemoteConnectionException(result);
+ }
+ return null;
+ }
+}
diff --git a/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/commands/ExecCommand.java b/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/commands/ExecCommand.java
new file mode 100644
index 00000000000..19801e04aa9
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/commands/ExecCommand.java
@@ -0,0 +1,60 @@
+package org.eclipse.remote.internal.jsch.core.commands;
+
+import java.io.ByteArrayOutputStream;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.SubMonitor;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.remote.core.exception.RemoteConnectionException;
+import org.eclipse.remote.internal.jsch.core.JSchConnection;
+import org.eclipse.remote.internal.jsch.core.messages.Messages;
+
+import com.jcraft.jsch.JSchException;
+
+public class ExecCommand extends AbstractRemoteCommand<String> {
+
+ private String fCommand;
+
+ public ExecCommand(JSchConnection connection) {
+ super(connection);
+ }
+
+ public ExecCommand setCommand(String command) {
+ fCommand = command;
+ return this;
+ }
+
+ @Override
+ public String getResult(IProgressMonitor monitor) throws RemoteConnectionException {
+ final SubMonitor subMon = SubMonitor.convert(monitor, 10);
+ ExecCallable<String> c = new ExecCallable<>() {
+ @Override
+ public String call() throws JSchException, RemoteConnectionException {
+ getChannel().setCommand(fCommand);
+ ByteArrayOutputStream stream = new ByteArrayOutputStream();
+ ByteArrayOutputStream err = new ByteArrayOutputStream();
+ getChannel().setOutputStream(stream);
+ getChannel().setErrStream(err);
+ getChannel().connect();
+ while (!getChannel().isClosed() && !getProgressMonitor().isCanceled()) {
+ synchronized (this) {
+ try {
+ wait(100);
+ } catch (InterruptedException e) {
+ // Ignore
+ }
+ }
+ }
+ if (getProgressMonitor().isCanceled()) {
+ return ""; //$NON-NLS-1$
+ }
+ if (getChannel().getExitStatus() != 0) {
+ throw new RemoteConnectionException(err.toString());
+ }
+ return stream.toString();
+ }
+ };
+ subMon.subTask(NLS.bind(Messages.ExecCommand_Exec_command, fCommand));
+ return c.getResult(subMon.newChild(10));
+ }
+}
diff --git a/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/commands/FetchInfoCommand.java b/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/commands/FetchInfoCommand.java
new file mode 100644
index 00000000000..93494f6bb1f
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/commands/FetchInfoCommand.java
@@ -0,0 +1,47 @@
+package org.eclipse.remote.internal.jsch.core.commands;
+
+import org.eclipse.core.filesystem.IFileInfo;
+import org.eclipse.core.filesystem.provider.FileInfo;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.SubMonitor;
+import org.eclipse.remote.core.exception.RemoteConnectionException;
+import org.eclipse.remote.internal.jsch.core.JSchConnection;
+
+import com.jcraft.jsch.ChannelSftp;
+import com.jcraft.jsch.JSchException;
+import com.jcraft.jsch.SftpATTRS;
+import com.jcraft.jsch.SftpException;
+
+public class FetchInfoCommand extends AbstractRemoteCommand<IFileInfo> {
+
+ private final IPath fRemotePath;
+
+ public FetchInfoCommand(JSchConnection connection, IPath path) {
+ super(connection);
+ fRemotePath = path;
+ }
+
+ @Override
+ public IFileInfo getResult(IProgressMonitor monitor) throws RemoteConnectionException {
+ SubMonitor subMon = SubMonitor.convert(monitor, 20);
+ SftpCallable<SftpATTRS> c = new SftpCallable<>() {
+ @Override
+ public SftpATTRS call() throws JSchException, SftpException {
+ return getChannel().lstat(fRemotePath.toString());
+ }
+ };
+ SftpATTRS attrs;
+ try {
+ attrs = c.getResult(subMon.newChild(10));
+ return convertToFileInfo(fRemotePath, attrs, subMon.newChild(10));
+ } catch (SftpException e) {
+ if (e.id == ChannelSftp.SSH_FX_NO_SUCH_FILE) {
+ FileInfo info = new FileInfo(fRemotePath.lastSegment());
+ info.setExists(false);
+ return info;
+ }
+ throw new RemoteConnectionException(e.getMessage());
+ }
+ }
+}
diff --git a/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/commands/GetInputStreamCommand.java b/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/commands/GetInputStreamCommand.java
new file mode 100644
index 00000000000..e1636dc2ca6
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/commands/GetInputStreamCommand.java
@@ -0,0 +1,124 @@
+package org.eclipse.remote.internal.jsch.core.commands;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.SubMonitor;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.remote.core.exception.RemoteConnectionException;
+import org.eclipse.remote.internal.jsch.core.JSchConnection;
+import org.eclipse.remote.internal.jsch.core.messages.Messages;
+
+import com.jcraft.jsch.ChannelSftp;
+import com.jcraft.jsch.JSchException;
+import com.jcraft.jsch.SftpException;
+
+/**
+ * The JSch implementation does not support multiple streams open on a single channel, so we must create a new channel for each
+ * subsequent stream. This has the problem that there are usually only a limited number of channels that can be opened
+ * simultaneously, so it is possible that this call will fail unless the open streams are closed first.
+ *
+ * This code will use the initial (command) channel first, or if that is already being used, will open a new stream. It must be
+ * careful not to close the command stream as other threads may still be using it.
+ */
+public class GetInputStreamCommand extends AbstractRemoteCommand<InputStream> {
+ private final IPath fRemotePath;
+
+ private static ChannelSftp commandChannel;
+ private ChannelSftp thisChannel;
+
+ public GetInputStreamCommand(JSchConnection connection, IPath path) {
+ super(connection);
+ fRemotePath = path;
+ }
+
+ @Override
+ public InputStream getResult(IProgressMonitor monitor) throws RemoteConnectionException {
+ final SubMonitor subMon = SubMonitor.convert(monitor, 10);
+
+ final SftpCallable<InputStream> c = new SftpCallable<>() {
+ private ChannelSftp newChannel() throws IOException {
+ synchronized (GetInputStreamCommand.class) {
+ if (commandChannel != null) {
+ try {
+ thisChannel = getConnection().newSftpChannel();
+ return thisChannel;
+ } catch (RemoteConnectionException e) {
+ throw new IOException(e.getMessage());
+ }
+ }
+ thisChannel = commandChannel = getChannel();
+ return commandChannel;
+ }
+ }
+
+ @Override
+ public InputStream call() throws JSchException, SftpException, IOException {
+ return newChannel().get(fRemotePath.toString(),
+ new CommandProgressMonitor(
+ NLS.bind(Messages.GetInputStreamCommand_Receiving, fRemotePath.toString()),
+ getProgressMonitor()));
+ }
+ };
+ try {
+ final InputStream stream = c.getResult(subMon.newChild(10));
+ return new InputStream() {
+ @Override
+ public int read() throws IOException {
+ return stream.read();
+ }
+
+ @Override
+ public void close() throws IOException {
+ stream.close();
+ synchronized (GetInputStreamCommand.class) {
+ if (thisChannel != commandChannel) {
+ thisChannel.disconnect();
+ } else {
+ commandChannel = null;
+ }
+ }
+ }
+
+ @Override
+ public int read(byte[] b) throws IOException {
+ return stream.read(b);
+ }
+
+ @Override
+ public int read(byte[] b, int off, int len) throws IOException {
+ return stream.read(b, off, len);
+ }
+
+ @Override
+ public long skip(long n) throws IOException {
+ return stream.skip(n);
+ }
+
+ @Override
+ public int available() throws IOException {
+ return stream.available();
+ }
+
+ @Override
+ public synchronized void mark(int readlimit) {
+ stream.mark(readlimit);
+ }
+
+ @Override
+ public synchronized void reset() throws IOException {
+ stream.reset();
+ }
+
+ @Override
+ public boolean markSupported() {
+ return stream.markSupported();
+ }
+ };
+ } catch (SftpException e) {
+ throw new RemoteConnectionException(e.getMessage());
+ }
+ }
+}
diff --git a/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/commands/GetOutputStreamCommand.java b/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/commands/GetOutputStreamCommand.java
new file mode 100644
index 00000000000..91030313e6a
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/commands/GetOutputStreamCommand.java
@@ -0,0 +1,73 @@
+package org.eclipse.remote.internal.jsch.core.commands;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+
+import org.eclipse.core.filesystem.EFS;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.SubMonitor;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.remote.core.exception.RemoteConnectionException;
+import org.eclipse.remote.internal.jsch.core.JSchConnection;
+import org.eclipse.remote.internal.jsch.core.messages.Messages;
+
+import com.jcraft.jsch.ChannelSftp;
+import com.jcraft.jsch.JSchException;
+import com.jcraft.jsch.SftpException;
+
+public class GetOutputStreamCommand extends AbstractRemoteCommand<OutputStream> {
+ private final IPath fRemotePath;
+ private final int fOptions;
+ private boolean fIsClosed;
+
+ public GetOutputStreamCommand(JSchConnection connection, int options, IPath path) {
+ super(connection);
+ fRemotePath = path;
+ fOptions = options;
+ fIsClosed = false;
+ }
+
+ @Override
+ public OutputStream getResult(IProgressMonitor monitor) throws RemoteConnectionException {
+ final SubMonitor subMon = SubMonitor.convert(monitor, 10);
+ return new ByteArrayOutputStream() {
+ @Override
+ public void close() throws IOException {
+ if (!fIsClosed) {
+ super.close();
+ final InputStream input = new ByteArrayInputStream(this.toByteArray());
+ try {
+ SftpCallable<Integer> c = new SftpCallable<>() {
+ @Override
+ public Integer call() throws JSchException, SftpException, IOException {
+ try {
+ int mode = ChannelSftp.OVERWRITE;
+ if ((fOptions & EFS.APPEND) != 0) {
+ mode = ChannelSftp.APPEND;
+ }
+ getChannel().put(input, fRemotePath.toString(), new CommandProgressMonitor(
+ NLS.bind(Messages.GetOutputStreamCommand_Sending, fRemotePath.toString()),
+ getProgressMonitor()), mode);
+ input.close();
+ } finally {
+ fIsClosed = true;
+ }
+ return 0;
+ }
+ };
+ c.getResult(subMon.newChild(10));
+ } catch (SftpException e) {
+ throw new IOException(e.getMessage());
+ } catch (CoreException e) {
+ throw new IOException(e.getMessage());
+ }
+ }
+ }
+ };
+ }
+}
diff --git a/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/commands/MkdirCommand.java b/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/commands/MkdirCommand.java
new file mode 100644
index 00000000000..888c2ebe6d2
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/commands/MkdirCommand.java
@@ -0,0 +1,53 @@
+package org.eclipse.remote.internal.jsch.core.commands;
+
+import org.eclipse.core.filesystem.IFileInfo;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.SubMonitor;
+import org.eclipse.remote.core.exception.RemoteConnectionException;
+import org.eclipse.remote.internal.jsch.core.JSchConnection;
+
+import com.jcraft.jsch.JSchException;
+import com.jcraft.jsch.SftpException;
+
+public class MkdirCommand extends AbstractRemoteCommand<Void> {
+
+ private final IPath fRemotePath;
+
+ public MkdirCommand(JSchConnection connection, IPath path) {
+ super(connection);
+ fRemotePath = path;
+ }
+
+ @Override
+ public Void getResult(IProgressMonitor monitor) throws RemoteConnectionException {
+ final SubMonitor subMon = SubMonitor.convert(monitor, 20);
+
+ /*
+ * Recursively create parent directories
+ */
+ FetchInfoCommand command = new FetchInfoCommand(getConnection(), fRemotePath.removeLastSegments(1));
+ IFileInfo info = command.getResult(subMon.newChild(10));
+ if (!info.exists()) {
+ MkdirCommand mkdirCommand = new MkdirCommand(getConnection(), fRemotePath.removeLastSegments(1));
+ mkdirCommand.getResult(subMon.newChild(10));
+ }
+
+ /*
+ * Now create directory
+ */
+ SftpCallable<Void> c = new SftpCallable<>() {
+ @Override
+ public Void call() throws JSchException, SftpException {
+ getChannel().mkdir(fRemotePath.toString());
+ return null;
+ }
+ };
+ try {
+ c.getResult(subMon.newChild(10));
+ } catch (SftpException e) {
+ throw new RemoteConnectionException(e.getMessage());
+ }
+ return null;
+ }
+}
diff --git a/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/commands/PutInfoCommand.java b/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/commands/PutInfoCommand.java
new file mode 100644
index 00000000000..711a035e9f4
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/commands/PutInfoCommand.java
@@ -0,0 +1,121 @@
+package org.eclipse.remote.internal.jsch.core.commands;
+
+import org.eclipse.core.filesystem.EFS;
+import org.eclipse.core.filesystem.IFileInfo;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.SubMonitor;
+import org.eclipse.remote.core.exception.RemoteConnectionException;
+import org.eclipse.remote.internal.jsch.core.JSchConnection;
+
+import com.jcraft.jsch.JSchException;
+import com.jcraft.jsch.SftpException;
+
+public class PutInfoCommand extends AbstractRemoteCommand<Void> {
+ private static final int S_IRUSR = 0400; // owner has read permission
+ private static final int S_IWUSR = 0200; // owner has write permission
+ private static final int S_IXUSR = 0100; // owner has execute permission
+ private static final int S_IRGRP = 0040; // group has read permission
+ private static final int S_IWGRP = 0020; // group has write permission
+ private static final int S_IXGRP = 0010; // group has execute permission
+ private static final int S_IROTH = 0004; // others have read permission
+ private static final int S_IWOTH = 0002; // others have write permission
+ private static final int S_IXOTH = 0001; // others have execute permission
+
+ private final IPath fRemotePath;
+ private final IFileInfo fFileInfo;
+ private final int fOptions;
+
+ public PutInfoCommand(JSchConnection connection, IFileInfo info, int options, IPath path) {
+ super(connection);
+ fFileInfo = info;
+ fOptions = options;
+ fRemotePath = path;
+ }
+
+ @Override
+ public Void getResult(IProgressMonitor monitor) throws RemoteConnectionException {
+ final SubMonitor subMon = SubMonitor.convert(monitor, 30);
+
+ FetchInfoCommand command = new FetchInfoCommand(getConnection(), fRemotePath);
+ String quotedPath = quote(fRemotePath.toString(), true);
+ if ((fOptions & EFS.SET_ATTRIBUTES) != 0) {
+ chmod(getPermissions(fFileInfo), quotedPath, subMon.newChild(10));
+ }
+ if ((fOptions & EFS.SET_LAST_MODIFIED) != 0) {
+ IFileInfo info = command.getResult(subMon.newChild(10));
+ long oldMTime = info.getLastModified();
+ int newMTime = (int) (oldMTime / 1000);
+ if (oldMTime != newMTime) {
+ setMTime(newMTime, quotedPath, subMon.newChild(10));
+ }
+ }
+ return null;
+ }
+
+ private void chmod(final int permissions, final String path, IProgressMonitor monitor)
+ throws RemoteConnectionException {
+ final SubMonitor subMon = SubMonitor.convert(monitor, 10);
+ SftpCallable<Void> c = new SftpCallable<>() {
+ @Override
+ public Void call() throws JSchException, SftpException {
+ getChannel().chmod(permissions, path);
+ return null;
+ }
+ };
+ try {
+ c.getResult(subMon.newChild(10));
+ } catch (SftpException e) {
+ throw new RemoteConnectionException(e.getMessage());
+ }
+ }
+
+ private void setMTime(final int mtime, final String path, IProgressMonitor monitor)
+ throws RemoteConnectionException {
+ final SubMonitor subMon = SubMonitor.convert(monitor, 10);
+ SftpCallable<Void> c = new SftpCallable<>() {
+ @Override
+ public Void call() throws JSchException, SftpException {
+ getChannel().setMtime(path, mtime);
+ return null;
+ }
+ };
+ try {
+ c.getResult(subMon.newChild(10));
+ } catch (SftpException e) {
+ throw new RemoteConnectionException(e.getMessage());
+ }
+ }
+
+ private int getPermissions(IFileInfo info) {
+ int permissions = 0;
+ if (info.getAttribute(EFS.ATTRIBUTE_OWNER_READ)) {
+ permissions |= S_IRUSR;
+ }
+ if (info.getAttribute(EFS.ATTRIBUTE_OWNER_WRITE)) {
+ permissions |= S_IWUSR;
+ }
+ if (info.getAttribute(EFS.ATTRIBUTE_OWNER_EXECUTE)) {
+ permissions |= S_IXUSR;
+ }
+ if (info.getAttribute(EFS.ATTRIBUTE_GROUP_READ)) {
+ permissions |= S_IRGRP;
+ }
+ if (info.getAttribute(EFS.ATTRIBUTE_GROUP_WRITE)) {
+ permissions |= S_IWGRP;
+ }
+ if (info.getAttribute(EFS.ATTRIBUTE_GROUP_EXECUTE)) {
+ permissions |= S_IXGRP;
+ }
+ if (info.getAttribute(EFS.ATTRIBUTE_OTHER_READ)) {
+ permissions |= S_IROTH;
+ }
+ if (info.getAttribute(EFS.ATTRIBUTE_OTHER_WRITE)) {
+ permissions |= S_IWOTH;
+ }
+ if (info.getAttribute(EFS.ATTRIBUTE_OTHER_EXECUTE)) {
+ permissions |= S_IXOTH;
+ }
+ return permissions;
+ }
+}
diff --git a/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/messages/Messages.java b/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/messages/Messages.java
new file mode 100644
index 00000000000..594f25cbf04
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/messages/Messages.java
@@ -0,0 +1,70 @@
+/**
+ * Copyright (c) 2013 IBM Corporation.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - Initial Implementation
+ *
+ */
+package org.eclipse.remote.internal.jsch.core.messages;
+
+import org.eclipse.osgi.util.NLS;
+
+public class Messages extends NLS {
+ private static final String BUNDLE_ID = "org.eclipse.remote.internal.jsch.core.messages.messages"; //$NON-NLS-1$
+
+ public static String AbstractRemoteCommand_format1;
+ public static String AbstractRemoteCommand_format2;
+ public static String AbstractRemoteCommand_Get_symlink_target;
+ public static String AbstractRemoteCommand_Operation_cancelled_by_user;
+ public static String AuthInfo_Authentication_message;
+ public static String ExecCommand_Exec_command;
+
+ public static String GetInputStreamCommand_Receiving;
+
+ public static String GetOutputStreamCommand_Sending;
+ public static String JSchConnection_0;
+
+ public static String JSchConnection_Connection_was_cancelled;
+ public static String JSchConnection_connectionNotOpen;
+ public static String JSchConnection_Executing_command;
+ public static String JSchConnection_remote_address_must_be_set;
+ public static String JSchConnection_remotePort;
+ public static String JSchConnection_forwarding;
+ public static String JSchConnection_Remote_host_does_not_support_sftp;
+ public static String JSchConnection_Unable_to_open_sftp_channel;
+ public static String JSchConnection_username_must_be_set;
+ public static String JSchConnectionManager_connection_with_name_exists;
+ public static String JSchConnectionManager_cannotRemoveOpenConnection;
+ public static String JSchConnectionManager_invalidConnectionType;
+ public static String JSchConnectionProxyFactory_failed;
+ public static String JSchConnectionProxyFactory_ProxyCommandFailed;
+ public static String JSchConnectionProxyFactory_timedOut;
+ public static String JSchConnectionProxyFactory_wasCanceled;
+ public static String JSchProcess_exitValue_exception_msg;
+ public static String JSchProcessBuilder_Connection_is_not_open;
+ public static String JschFileStore_Connection_is_not_open;
+ public static String JschFileStore_File_doesnt_exist;
+ public static String JschFileStore_Invalid_connection_for_URI;
+ public static String JschFileStore_Is_a_directory;
+ public static String JschFileStore_No_remote_services_found_for_URI;
+ public static String JschFileStore_The_directory_could_not_be_created;
+
+ public static String JschFileStore_A_file_of_name_already_exists;
+ public static String JschFileStore_The_parent_of_directory_does_not_exist;
+
+ static {
+ // load message values from bundle file
+ NLS.initializeMessages(BUNDLE_ID, Messages.class);
+ }
+
+ private Messages() {
+ // cannot create new instance
+ }
+}
diff --git a/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/messages/messages.properties b/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/messages/messages.properties
new file mode 100644
index 00000000000..8e80c516a45
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.core/src/org/eclipse/remote/internal/jsch/core/messages/messages.properties
@@ -0,0 +1,48 @@
+###############################################################################
+# Copyright (c) 2013 IBM Corporation.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# IBM Corporation - initial implementation
+###############################################################################
+AbstractRemoteCommand_format1={0,number,integer} {1} completed
+AbstractRemoteCommand_format2={0,number,integer} {1} of {2,number,integer} {3} complete ({4,number,percent})
+AbstractRemoteCommand_Get_symlink_target=Get symlink target
+AbstractRemoteCommand_Operation_cancelled_by_user=Operation cancelled by user
+AuthInfo_Authentication_message=Authentication Message
+ExecCommand_Exec_command=Executing command "{0}"
+GetInputStreamCommand_Receiving=Receiving {0}:
+GetOutputStreamCommand_Sending=Sending {0}:
+JSchConnection_0=Connection canceled by user
+JSchConnection_Connection_was_cancelled=Connection was cancelled
+JSchConnection_connectionNotOpen=Connection is not open
+JSchConnection_Executing_command=Executing command "{0}"
+JSchConnection_remote_address_must_be_set=Remote address must be set before opening connection
+JSchConnection_remotePort=Could not allocate remote port
+JSchConnection_forwarding=Setting up remote forwarding
+JSchConnection_Remote_host_does_not_support_sftp=Remote host does not support sftp. Remote functionality requires sftp to be enabled
+JSchConnection_Unable_to_open_sftp_channel=Unable to open sftp channel: check sftp is enabled on remote host
+JSchConnection_username_must_be_set=Username must be set before opening connection
+JSchConnectionManager_connection_with_name_exists=A connection with name \"{0}\" already exists
+JSchConnectionManager_cannotRemoveOpenConnection=Cannot remove an open connection
+JSchConnectionManager_invalidConnectionType=Invalid connection type
+JSchConnectionProxyFactory_failed=failed
+JSchConnectionProxyFactory_ProxyCommandFailed=Proxy command "{0}" {1} and printed message "{2}"
+JSchConnectionProxyFactory_timedOut=timed out
+JSchConnectionProxyFactory_wasCanceled=was canceled
+JSchProcess_exitValue_exception_msg=process has not exited
+JSchProcessBuilder_Connection_is_not_open=Connection is not open
+JschFileStore_Connection_is_not_open=Connection is not open
+JschFileStore_File_doesnt_exist=File {0} doesn't exist
+JschFileStore_Invalid_connection_for_URI=Invalid connection for URI: "{0}"
+JschFileStore_Is_a_directory={0} is a directory
+JschFileStore_No_remote_services_found_for_URI=No remote services found for URI: "{0}"
+JschFileStore_The_directory_could_not_be_created=The directory {0} could not be created
+JschFileStore_A_file_of_name_already_exists=A file of name {0} already exists
+JschFileStore_The_parent_of_directory_does_not_exist=The parent of directory {0} does not exist
diff --git a/remote/org.eclipse.remote.jsch.tests/.classpath b/remote/org.eclipse.remote.jsch.tests/.classpath
new file mode 100644
index 00000000000..a42a828e04a
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.tests/.classpath
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src">
+ <attributes>
+ <attribute name="test" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/remote/org.eclipse.remote.jsch.tests/.project b/remote/org.eclipse.remote.jsch.tests/.project
new file mode 100644
index 00000000000..05b96bf0a29
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.tests/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.remote.jsch.tests</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/remote/org.eclipse.remote.jsch.tests/.settings/org.eclipse.core.resources.prefs b/remote/org.eclipse.remote.jsch.tests/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.tests/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/remote/org.eclipse.remote.jsch.tests/.settings/org.eclipse.jdt.core.prefs b/remote/org.eclipse.remote.jsch.tests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..5b1c443114d
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.tests/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=ignore
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
+org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=ignore
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/.settings/org.eclipse.jdt.launching.prefs b/remote/org.eclipse.remote.jsch.tests/.settings/org.eclipse.jdt.launching.prefs
index f8a131b56e0..f8a131b56e0 100644
--- a/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/.settings/org.eclipse.jdt.launching.prefs
+++ b/remote/org.eclipse.remote.jsch.tests/.settings/org.eclipse.jdt.launching.prefs
diff --git a/remote/org.eclipse.remote.jsch.tests/.settings/org.eclipse.jdt.ui.prefs b/remote/org.eclipse.remote.jsch.tests/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.tests/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/remote/org.eclipse.remote.jsch.tests/.settings/org.eclipse.pde.api.tools.prefs b/remote/org.eclipse.remote.jsch.tests/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 00000000000..ec9fbf321d0
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.tests/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,184 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITH_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_FIELD=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERCLASS_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_CHANGED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENTS=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETERS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Error
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Warning
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+MISSING_EE_DESCRIPTIONS=Warning
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=false
+changed_execution_env=Error
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+incompatible_api_component_version_report_major_without_breaking_change=Warning
+incompatible_api_component_version_report_minor_without_api_change=Warning
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/remote/org.eclipse.remote.jsch.tests/.settings/org.eclipse.pde.prefs b/remote/org.eclipse.remote.jsch.tests/.settings/org.eclipse.pde.prefs
new file mode 100644
index 00000000000..51a63ec9988
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.tests/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,35 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=2
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=2
+compilers.p.missing-version-export-package=2
+compilers.p.missing-version-import-package=2
+compilers.p.missing-version-require-bundle=2
+compilers.p.no-required-att=0
+compilers.p.no.automatic.module=1
+compilers.p.not-externalized-att=2
+compilers.p.service.component.without.lazyactivation=1
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/remote/org.eclipse.remote.jsch.tests/META-INF/MANIFEST.MF b/remote/org.eclipse.remote.jsch.tests/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..9f65c5d31f8
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,15 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: JSch Remote Tests
+Bundle-SymbolicName: org.eclipse.remote.jsch.tests
+Bundle-Version: 1.0.100.qualifier
+Bundle-Activator: org.eclipse.remote.jsch.tests.Activator
+Bundle-Vendor: Eclipse PTP
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime;bundle-version="3.8.0",
+ org.eclipse.core.filesystem,
+ org.eclipse.remote.core,
+ org.eclipse.remote.jsch.core,
+ org.junit
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Bundle-ActivationPolicy: lazy
diff --git a/remote/org.eclipse.remote.jsch.tests/about.html b/remote/org.eclipse.remote.jsch.tests/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.tests/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/remote/org.eclipse.remote.jsch.tests/build.properties b/remote/org.eclipse.remote.jsch.tests/build.properties
new file mode 100644
index 00000000000..67af4196ea0
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.tests/build.properties
@@ -0,0 +1,6 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ about.html,\
+ .
+src.includes = about.html
diff --git a/remote/org.eclipse.remote.jsch.tests/src/org/eclipse/remote/jsch/tests/Activator.java b/remote/org.eclipse.remote.jsch.tests/src/org/eclipse/remote/jsch/tests/Activator.java
new file mode 100644
index 00000000000..58f564dc35a
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.tests/src/org/eclipse/remote/jsch/tests/Activator.java
@@ -0,0 +1,57 @@
+package org.eclipse.remote.jsch.tests;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.eclipse.remote.jsch.tests"; //$NON-NLS-1$
+
+ // The shared instance
+ private static Activator plugin;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+ /**
+ * Return the OSGi service with the given service interface.
+ *
+ * @param service service interface
+ * @return the specified service or null if it's not registered
+ */
+ public static <T> T getService(Class<T> service) {
+ BundleContext context = plugin.getBundle().getBundleContext();
+ ServiceReference<T> ref = context.getServiceReference(service);
+ return ref != null ? context.getService(ref) : null;
+ }
+
+}
diff --git a/remote/org.eclipse.remote.jsch.tests/src/org/eclipse/remote/jsch/tests/ConnectionTests.java b/remote/org.eclipse.remote.jsch.tests/src/org/eclipse/remote/jsch/tests/ConnectionTests.java
new file mode 100644
index 00000000000..b3fcbd1e672
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.tests/src/org/eclipse/remote/jsch/tests/ConnectionTests.java
@@ -0,0 +1,152 @@
+package org.eclipse.remote.jsch.tests;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteConnectionType;
+import org.eclipse.remote.core.IRemoteConnectionWorkingCopy;
+import org.eclipse.remote.core.IRemoteFileService;
+import org.eclipse.remote.core.IRemoteProcess;
+import org.eclipse.remote.core.IRemoteProcessBuilder;
+import org.eclipse.remote.core.IRemoteProcessService;
+import org.eclipse.remote.core.IRemoteServicesManager;
+import org.eclipse.remote.internal.jsch.core.JSchConnection;
+
+import junit.framework.TestCase;
+
+public class ConnectionTests extends TestCase {
+ private static final String USERNAME = "test"; //$NON-NLS-1$
+ private static final String PASSWORD = ""; //$NON-NLS-1$
+ private static final String HOST = "localhost"; //$NON-NLS-1$
+
+ private IRemoteConnectionType fConnectionType;
+ private IRemoteConnection fRemoteConnection;
+
+ public void testEnv() {
+ IRemoteProcessService processService = fRemoteConnection.getService(IRemoteProcessService.class);
+ assertNotNull(processService);
+ String var = processService.getEnv("SHELL"); //$NON-NLS-1$
+ assertNotNull(var);
+
+ var = processService.getEnv("FOO_VAR_SHOULD_NOT_BE_DEFINED"); //$NON-NLS-1$
+ assertNull(var);
+
+ assertNotNull(fRemoteConnection.getProperty("os.name")); //$NON-NLS-1$
+ assertNotNull(fRemoteConnection.getProperty("os.arch")); //$NON-NLS-1$
+ assertNotNull(fRemoteConnection.getProperty("os.version")); //$NON-NLS-1$
+ assertNotNull(fRemoteConnection.getProperty("file.separator")); //$NON-NLS-1$
+ assertNotNull(fRemoteConnection.getProperty("path.separator")); //$NON-NLS-1$
+ assertNotNull(fRemoteConnection.getProperty("line.separator")); //$NON-NLS-1$
+
+ IRemoteProcessBuilder builder = processService.getProcessBuilder("env"); //$NON-NLS-1$
+ assertNotNull(builder);
+ builder.environment().put("FOO", "BAR"); //$NON-NLS-1$ //$NON-NLS-2$
+ builder.environment().put("USER", "FOO"); //$NON-NLS-1$ //$NON-NLS-2$
+ try {
+ IRemoteProcess proc = builder.start();
+ BufferedReader stdout = new BufferedReader(new InputStreamReader(proc.getInputStream()));
+ String line;
+ while ((line = stdout.readLine()) != null) {
+ String[] kv = line.trim().split("="); //$NON-NLS-1$
+ if (kv.length == 2) {
+ if (kv[0].equals("FOO")) {
+ assertTrue(kv[1].equals("BAR")); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ if (kv[0].equals("USER")) {
+ assertTrue(kv[1].equals("FOO")); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ }
+ }
+ } catch (IOException e) {
+ fail(e.getMessage());
+ }
+ }
+
+ public void testWd() {
+ IRemoteProcessService processService = fRemoteConnection.getService(IRemoteProcessService.class);
+ assertNotNull(processService);
+ /*
+ * Test connection wd
+ */
+ String oldWd = processService.getWorkingDirectory();
+ assertTrue(oldWd.startsWith("/"));
+ String newWd = "/tmp";
+ processService.setWorkingDirectory(newWd);
+ assertTrue(processService.getWorkingDirectory().equals(newWd));
+
+ /*
+ * Test process builder inherits wd from connection
+ */
+ IRemoteProcessBuilder builder = processService.getProcessBuilder("pwd"); //$NON-NLS-1$
+ assertNotNull(builder);
+ try {
+ IRemoteProcess proc = builder.start();
+ BufferedReader stdout = new BufferedReader(new InputStreamReader(proc.getInputStream()));
+ String line = stdout.readLine();
+ proc.destroy();
+ assertTrue(line != null && line.equals(newWd));
+ } catch (IOException e) {
+ fail(e.getMessage());
+ }
+
+ /*
+ * Test process builder wd
+ */
+ final IRemoteFileService fileManager = fRemoteConnection.getService(IRemoteFileService.class);
+ assertNotNull(fileManager);
+ builder = processService.getProcessBuilder("pwd"); //$NON-NLS-1$
+ assertNotNull(builder);
+ builder.directory(fileManager.getResource("/bin"));
+ try {
+ IRemoteProcess proc = builder.start();
+ BufferedReader stdout = new BufferedReader(new InputStreamReader(proc.getInputStream()));
+ String line = stdout.readLine();
+ proc.destroy();
+ assertTrue(line != null && line.equals("/bin"));
+ } catch (IOException e) {
+ fail(e.getMessage());
+ }
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+ IRemoteServicesManager manager = Activator.getService(IRemoteServicesManager.class);
+ fConnectionType = manager.getConnectionType("org.eclipse.remote.JSch"); //$NON-NLS-1$
+ assertNotNull(fConnectionType);
+
+ IRemoteConnectionWorkingCopy wc = fConnectionType.newConnection("test_connection"); //$NON-NLS-1$
+
+ String host = System.getenv("TEST_HOST");
+ if (host == null) {
+ host = HOST;
+ }
+ wc.setAttribute(JSchConnection.ADDRESS_ATTR, host);
+
+ String username = System.getenv("TEST_USERNAME");
+ if (username == null) {
+ username = USERNAME;
+ }
+ wc.setAttribute(JSchConnection.USERNAME_ATTR, username);
+
+ String password = System.getenv("TEST_PASSWORD");
+ if (password == null) {
+ password = PASSWORD;
+ }
+ wc.setSecureAttribute(JSchConnection.PASSWORD_ATTR, password);
+
+ fRemoteConnection = wc.save();
+ assertNotNull(fRemoteConnection);
+
+ fRemoteConnection.open(new NullProgressMonitor());
+ assertTrue(fRemoteConnection.isOpen());
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ fConnectionType.removeConnection(fRemoteConnection);
+ }
+
+}
diff --git a/remote/org.eclipse.remote.jsch.tests/src/org/eclipse/remote/jsch/tests/FileStoreTests.java b/remote/org.eclipse.remote.jsch.tests/src/org/eclipse/remote/jsch/tests/FileStoreTests.java
new file mode 100644
index 00000000000..e2de273f002
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.tests/src/org/eclipse/remote/jsch/tests/FileStoreTests.java
@@ -0,0 +1,257 @@
+package org.eclipse.remote.jsch.tests;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.net.URI;
+
+import org.eclipse.core.filesystem.EFS;
+import org.eclipse.core.filesystem.IFileInfo;
+import org.eclipse.core.filesystem.IFileStore;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteConnectionType;
+import org.eclipse.remote.core.IRemoteConnectionWorkingCopy;
+import org.eclipse.remote.core.IRemoteFileService;
+import org.eclipse.remote.core.IRemoteServicesManager;
+import org.eclipse.remote.internal.jsch.core.JSchConnection;
+
+import junit.framework.TestCase;
+
+public class FileStoreTests extends TestCase {
+ private static final String CONNECTION_NAME = "test_connection";
+ private static final String USERNAME = "test";
+ private static final String PASSWORD = "";
+ private static final String HOST = "localhost";
+ private static final String LOCAL_DIR = "/tmp/ptp_" + System.getProperty("user.name") + "/filestore_tests";
+ private static final String REMOTE_DIR = "/tmp/ptp_" + USERNAME + "/filestore_tests";
+ private static final String LOCAL_FILE = "local_file";
+ private static final String REMOTE_FILE = "remote_file";
+ private static final String REMOTE_FILE2 = "remote_file2";
+ private static final String TEST_STRING = "a string containing fairly *()(*&^$%## random text";
+ private static final String TEST_STRING2 = "a different string containing fairly *()(*&^$%## random text";
+
+ private IRemoteConnectionType fConnectionType;
+ private IRemoteConnection fRemoteConnection;
+ private IRemoteFileService fRemoteFileManager;
+ private IFileStore fRemoteDir;
+ private IFileStore fLocalDir;
+
+ private void createFile(IFileStore fileStore, String contents) throws CoreException, IOException {
+ OutputStream stream = fileStore.openOutputStream(EFS.NONE, new NullProgressMonitor());
+ assertNotNull(stream);
+ BufferedWriter buf = new BufferedWriter(new OutputStreamWriter(stream));
+ buf.write(contents);
+ buf.close();
+ }
+
+ public void testStreams() {
+ IFileStore remoteFileStore = fRemoteDir.getChild(REMOTE_FILE);
+
+ for (int i = 0; i < 5; i++) {
+ try {
+ remoteFileStore.delete(EFS.NONE, null);
+ } catch (CoreException e) {
+ fail(e.getMessage());
+ }
+
+ assertFalse(remoteFileStore.fetchInfo().exists());
+
+ try {
+ createFile(remoteFileStore, TEST_STRING);
+ } catch (Exception e) {
+ fail(e.getMessage());
+ }
+
+ assertTrue(remoteFileStore.fetchInfo().exists());
+
+ try {
+ InputStream stream = remoteFileStore.openInputStream(EFS.NONE, null);
+ assertNotNull(stream);
+ BufferedReader buf = new BufferedReader(new InputStreamReader(stream));
+ String line = buf.readLine().trim();
+ assertTrue(line.equals(TEST_STRING));
+ buf.close();
+ } catch (Exception e) {
+ fail(e.getMessage());
+ }
+ }
+ }
+
+ public void testMultiStreams() {
+ IFileStore remoteFileStore = fRemoteDir.getChild(REMOTE_FILE);
+ IFileStore remoteFileStore2 = fRemoteDir.getChild(REMOTE_FILE2);
+
+ try {
+ createFile(remoteFileStore, TEST_STRING);
+ createFile(remoteFileStore2, TEST_STRING2);
+ } catch (Exception e) {
+ fail(e.getMessage());
+ }
+
+ assertTrue(remoteFileStore.fetchInfo().exists());
+ assertTrue(remoteFileStore2.fetchInfo().exists());
+
+ /*
+ * Check how many streams we can open
+ */
+ InputStream streams[] = new InputStream[100];
+ int streamCount = 0;
+
+ for (; streamCount < streams.length; streamCount++) {
+ try {
+ streams[streamCount] = remoteFileStore.openInputStream(EFS.NONE, null);
+ } catch (Exception e) {
+ if (!e.getMessage().endsWith("channel is not opened.")) {
+ fail(e.getMessage());
+ }
+ break;
+ }
+ }
+
+ for (int i = 0; i < streamCount; i++) {
+ try {
+ streams[i].close();
+ } catch (IOException e) {
+ // No need to deal with this
+ }
+ }
+
+ for (int i = 0; i < streamCount / 2; i++) {
+ try {
+ InputStream stream = remoteFileStore.openInputStream(EFS.NONE, null);
+ assertNotNull(stream);
+ BufferedReader buf = new BufferedReader(new InputStreamReader(stream));
+ String line = buf.readLine().trim();
+ assertTrue(line.equals(TEST_STRING));
+
+ InputStream stream2 = remoteFileStore2.openInputStream(EFS.NONE, null);
+ assertNotNull(stream2);
+ BufferedReader buf2 = new BufferedReader(new InputStreamReader(stream2));
+ String line2 = buf2.readLine().trim();
+ assertTrue(line2.equals(TEST_STRING2));
+
+ stream.close();
+ stream2.close();
+ } catch (Exception e) {
+ fail(e.getMessage());
+ }
+ }
+ }
+
+ public void testCopy() {
+ final IFileStore localFileStore = fLocalDir.getChild(LOCAL_FILE);
+ final IFileStore remoteFileStore = fRemoteDir.getChild(REMOTE_FILE);
+ try {
+ localFileStore.delete(EFS.NONE, new NullProgressMonitor());
+ remoteFileStore.delete(EFS.NONE, new NullProgressMonitor());
+ createFile(localFileStore, "foo\n");
+ localFileStore.copy(remoteFileStore, EFS.NONE, new NullProgressMonitor());
+ } catch (CoreException e) {
+ fail(e.getMessage());
+ } catch (IOException e) {
+ fail(e.getMessage());
+ }
+ IFileInfo srcInfo = localFileStore.fetchInfo();
+ IFileInfo dstInfo = remoteFileStore.fetchInfo();
+ assertTrue(dstInfo.exists());
+ assertTrue(srcInfo.getLength() == dstInfo.getLength());
+ try {
+ InputStream stream = remoteFileStore.openInputStream(EFS.NONE, new NullProgressMonitor());
+ byte[] b = new byte[4];
+ stream.read(b);
+ stream.close();
+ assertTrue(b[0] == 'f');
+ assertTrue(b[1] == 'o');
+ assertTrue(b[2] == 'o');
+ assertTrue(b[3] == '\n');
+ } catch (CoreException e) {
+ fail(e.getMessage());
+ } catch (IOException e) {
+ fail(e.getMessage());
+ }
+ }
+
+ public void testExecutable() {
+ IFileStore fs = fRemoteDir.getChild(REMOTE_FILE);
+ try {
+ fs.delete(EFS.NONE, new NullProgressMonitor());
+ createFile(fs, "contents");
+ } catch (Exception e) {
+ fail(e.getMessage());
+ }
+ IFileInfo fi = fs.fetchInfo();
+ boolean current = fi.getAttribute(EFS.ATTRIBUTE_EXECUTABLE);
+ boolean expected = !current;
+ fi.setAttribute(EFS.ATTRIBUTE_EXECUTABLE, expected);
+ try {
+ fs.putInfo(fi, EFS.SET_ATTRIBUTES, new NullProgressMonitor());
+ } catch (CoreException e) {
+ fail(e.getMessage());
+ }
+ fs = fRemoteDir.getChild(REMOTE_FILE);
+ fi = fs.fetchInfo();
+ assertEquals(expected, fi.getAttribute(EFS.ATTRIBUTE_EXECUTABLE));
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+ IRemoteServicesManager manager = Activator.getService(IRemoteServicesManager.class);
+ fConnectionType = manager.getConnectionType("org.eclipse.remote.JSch");
+ assertNotNull(fConnectionType);
+
+ IRemoteConnectionWorkingCopy wc = fConnectionType.newConnection(CONNECTION_NAME);
+
+ String host = System.getenv("TEST_HOST");
+ if (host == null) {
+ host = HOST;
+ }
+ wc.setAttribute(JSchConnection.ADDRESS_ATTR, host);
+
+ String username = System.getenv("TEST_USERNAME");
+ if (username == null) {
+ username = USERNAME;
+ }
+ wc.setAttribute(JSchConnection.USERNAME_ATTR, username);
+
+ String password = System.getenv("TEST_PASSWORD");
+ if (password == null) {
+ password = PASSWORD;
+ }
+ wc.setSecureAttribute(JSchConnection.PASSWORD_ATTR, password);
+
+ fRemoteConnection = wc.save();
+ assertNotNull(fRemoteConnection);
+
+ fRemoteConnection.open(new NullProgressMonitor());
+ assertTrue(fRemoteConnection.isOpen());
+
+ fRemoteFileManager = fRemoteConnection.getService(IRemoteFileService.class);
+ assertNotNull(fRemoteFileManager);
+
+ URI remoteDirUri = fRemoteFileManager.toURI(REMOTE_DIR);
+ URI localDirUri = fRemoteFileManager.toURI(LOCAL_DIR);
+ assertNotNull(remoteDirUri);
+ assertNotNull(localDirUri);
+
+ fRemoteDir = EFS.getStore(fRemoteFileManager.toURI(REMOTE_DIR));
+ fLocalDir = EFS.getLocalFileSystem().getStore(new Path(LOCAL_DIR));
+
+ fRemoteDir.mkdir(EFS.NONE, null);
+ fLocalDir.mkdir(EFS.NONE, null);
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ fRemoteDir.delete(EFS.NONE, new NullProgressMonitor());
+ fLocalDir.delete(EFS.NONE, new NullProgressMonitor());
+ fConnectionType.removeConnection(fRemoteConnection);
+ }
+
+}
diff --git a/remote/org.eclipse.remote.jsch.tests/src/org/eclipse/remote/jsch/tests/ProcessTests.java b/remote/org.eclipse.remote.jsch.tests/src/org/eclipse/remote/jsch/tests/ProcessTests.java
new file mode 100644
index 00000000000..477fd286c27
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.tests/src/org/eclipse/remote/jsch/tests/ProcessTests.java
@@ -0,0 +1,235 @@
+package org.eclipse.remote.jsch.tests;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteConnectionType;
+import org.eclipse.remote.core.IRemoteConnectionWorkingCopy;
+import org.eclipse.remote.core.IRemoteProcess;
+import org.eclipse.remote.core.IRemoteProcessBuilder;
+import org.eclipse.remote.core.IRemoteProcessService;
+import org.eclipse.remote.core.IRemoteServicesManager;
+import org.eclipse.remote.core.RemoteProcessAdapter;
+import org.eclipse.remote.internal.jsch.core.JSchConnection;
+
+import junit.framework.TestCase;
+
+public class ProcessTests extends TestCase {
+ private static final String USERNAME = "test"; //$NON-NLS-1$
+ private static final String PASSWORD = ""; //$NON-NLS-1$
+ private static final String HOST = "localhost"; //$NON-NLS-1$
+ private static int NUM_THREADS = 1; // Test currently fails for more than one thread
+
+ private IRemoteConnectionType fConnectionType;
+ private IRemoteConnection fRemoteConnection;
+
+ public void testConcurrentProcess() {
+ Thread[] threads = new Thread[NUM_THREADS];
+
+ for (int t = 0; t < NUM_THREADS; t++) {
+ final String threadNum = Integer.toString(t);
+ Thread thread = new Thread("test thread " + t) {
+ @Override
+ public void run() {
+ final Set<String> results = Collections.synchronizedSet(new HashSet<String>());
+ IRemoteProcessService processService = fRemoteConnection.getService(IRemoteProcessService.class);
+ assertNotNull(processService);
+ IRemoteProcessBuilder builder = processService.getProcessBuilder("perl", "-v", threadNum); //$NON-NLS-1$
+ assertNotNull(builder);
+ builder.redirectErrorStream(true);
+ for (int i = 0; i < 10; i++) {
+ try {
+ IRemoteProcess proc = builder.start();
+ BufferedReader stdout = new BufferedReader(new InputStreamReader(proc.getInputStream()));
+ String line;
+ while ((line = stdout.readLine()) != null) {
+ results.add(line);
+ results.add("\n");
+ }
+ try {
+ proc.waitFor();
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ assertTrue(results.toString().contains("Larry Wall"));
+ } catch (IOException e) {
+ e.printStackTrace();
+ fail(e.getLocalizedMessage());
+ }
+ }
+ }
+
+ };
+ thread.start();
+ threads[t] = thread;
+ }
+ for (Thread t : threads) {
+ try {
+ t.join();
+ } catch (InterruptedException e) {
+ }
+ }
+ }
+
+ public void testEnv() {
+ IRemoteProcessService processService = fRemoteConnection.getService(IRemoteProcessService.class);
+ assertNotNull(processService);
+ IRemoteProcessBuilder builder = processService.getProcessBuilder("printenv"); //$NON-NLS-1$
+ assertNotNull(builder);
+ builder.redirectErrorStream(true);
+ String path = builder.environment().get("PATH");
+ builder.environment().clear();
+ builder.environment().put("PATH", path);
+ try {
+ IRemoteProcess proc = builder.start();
+ BufferedReader stdout = new BufferedReader(new InputStreamReader(proc.getInputStream()));
+ String line;
+ String result = null;
+ while ((line = stdout.readLine()) != null) {
+ assertNull(result);
+ result = line;
+ }
+ assertEquals(result, "PATH=" + path);
+ } catch (IOException e) {
+ e.printStackTrace();
+ fail(e.getLocalizedMessage());
+ }
+ }
+
+ public void testEcho() {
+ IRemoteProcessService processService = fRemoteConnection.getService(IRemoteProcessService.class);
+ assertNotNull(processService);
+ IRemoteProcessBuilder builder = processService.getProcessBuilder("cat"); //$NON-NLS-1$
+ assertNotNull(builder);
+ builder.redirectErrorStream(true);
+ final StringBuffer result = new StringBuffer();
+ try {
+ final IRemoteProcess proc = builder.start();
+ Thread readerThread = new Thread("echo reader thread") {
+ @Override
+ public void run() {
+ try {
+ BufferedReader stdout = new BufferedReader(new InputStreamReader(proc.getInputStream()));
+ String line;
+ while ((line = stdout.readLine()) != null) {
+ result.append(line);
+ }
+ try {
+ proc.waitFor();
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ fail(e.getLocalizedMessage());
+ }
+ }
+
+ };
+ Thread writerThread = new Thread("echo writer thread") {
+ @Override
+ public void run() {
+ try {
+ BufferedWriter stdin = new BufferedWriter(new OutputStreamWriter(proc.getOutputStream()));
+ for (int i = 0; i < 10; i++) {
+ String line = i + "\n";
+ stdin.append(line);
+ stdin.flush();
+ }
+ proc.getOutputStream().close();
+ try {
+ proc.waitFor();
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ fail(e.getLocalizedMessage());
+ }
+ }
+
+ };
+ writerThread.start();
+ readerThread.start();
+ writerThread.join();
+ readerThread.join();
+ } catch (IOException e) {
+ e.printStackTrace();
+ fail(e.getLocalizedMessage());
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ fail(e.getLocalizedMessage());
+ }
+
+ assertEquals("0123456789", result.toString());
+ }
+
+ public void testExitValue() {
+ IRemoteProcessService processService = fRemoteConnection.getService(IRemoteProcessService.class);
+ assertNotNull(processService);
+ IRemoteProcessBuilder builder = processService.getProcessBuilder(new String[] { "sleep", "60" }); //$NON-NLS-1$
+ assertNotNull(builder);
+ IRemoteProcess rp = null;
+ try {
+ rp = builder.start();
+ } catch (IOException e) {
+ e.printStackTrace();
+ fail(e.getLocalizedMessage());
+ }
+ assertNotNull(rp);
+ Process p = new RemoteProcessAdapter(rp);
+ try {
+ p.exitValue();
+ fail("Process has not exited. Should throws an IllegalThreadStateException exception");
+ } catch (IllegalThreadStateException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+ IRemoteServicesManager manager = Activator.getService(IRemoteServicesManager.class);
+ fConnectionType = manager.getConnectionType("org.eclipse.remote.JSch"); //$NON-NLS-1$
+ assertNotNull(fConnectionType);
+
+ IRemoteConnectionWorkingCopy wc = fConnectionType.newConnection("test_connection"); //$NON-NLS-1$
+
+ String host = System.getenv("TEST_HOST");
+ if (host == null) {
+ host = HOST;
+ }
+ wc.setAttribute(JSchConnection.ADDRESS_ATTR, host);
+
+ String username = System.getenv("TEST_USERNAME");
+ if (username == null) {
+ username = USERNAME;
+ }
+ wc.setAttribute(JSchConnection.USERNAME_ATTR, username);
+
+ String password = System.getenv("TEST_PASSWORD");
+ if (password == null) {
+ password = PASSWORD;
+ }
+ wc.setSecureAttribute(JSchConnection.PASSWORD_ATTR, password);
+
+ fRemoteConnection = wc.save();
+ assertNotNull(fRemoteConnection);
+
+ fRemoteConnection.open(new NullProgressMonitor());
+ assertTrue(fRemoteConnection.isOpen());
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ fConnectionType.removeConnection(fRemoteConnection);
+ }
+
+}
diff --git a/remote/org.eclipse.remote.jsch.tests/src/org/eclipse/remote/jsch/tests/RemoteCoreTestSuite.java b/remote/org.eclipse.remote.jsch.tests/src/org/eclipse/remote/jsch/tests/RemoteCoreTestSuite.java
new file mode 100644
index 00000000000..e1b4f17bd14
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.tests/src/org/eclipse/remote/jsch/tests/RemoteCoreTestSuite.java
@@ -0,0 +1,16 @@
+package org.eclipse.remote.jsch.tests;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+public class RemoteCoreTestSuite {
+ public static Test suite() {
+ TestSuite suite = new TestSuite(RemoteCoreTestSuite.class.getName());
+
+ suite.addTestSuite(ConnectionTests.class);
+ suite.addTestSuite(FileStoreTests.class);
+ suite.addTestSuite(ProcessTests.class);
+ return suite;
+ }
+
+}
diff --git a/remote/org.eclipse.remote.jsch.ui/.classpath b/remote/org.eclipse.remote.jsch.ui/.classpath
new file mode 100644
index 00000000000..e801ebfb468
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.ui/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/remote/org.eclipse.remote.jsch.ui/.project b/remote/org.eclipse.remote.jsch.ui/.project
new file mode 100644
index 00000000000..05c0dc929b6
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.ui/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.remote.jsch.ui</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+ </natures>
+</projectDescription>
diff --git a/remote/org.eclipse.remote.jsch.ui/.settings/org.eclipse.core.resources.prefs b/remote/org.eclipse.remote.jsch.ui/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.ui/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/remote/org.eclipse.remote.jsch.ui/.settings/org.eclipse.jdt.core.prefs b/remote/org.eclipse.remote.jsch.ui/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..e3a8104f9ca
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.ui/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/remote/org.eclipse.remote.jsch.ui/.settings/org.eclipse.jdt.launching.prefs b/remote/org.eclipse.remote.jsch.ui/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 00000000000..f8a131b56e0
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.ui/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_COMPILER_COMPLIANCE_DOES_NOT_MATCH_JRE=warning
+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=warning
diff --git a/remote/org.eclipse.remote.jsch.ui/.settings/org.eclipse.jdt.ui.prefs b/remote/org.eclipse.remote.jsch.ui/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.ui/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/remote/org.eclipse.remote.jsch.ui/.settings/org.eclipse.pde.api.tools.prefs b/remote/org.eclipse.remote.jsch.ui/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 00000000000..ec9fbf321d0
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.ui/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,184 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITH_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_FIELD=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERCLASS_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_CHANGED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENTS=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETERS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Error
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Warning
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+MISSING_EE_DESCRIPTIONS=Warning
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=false
+changed_execution_env=Error
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+incompatible_api_component_version_report_major_without_breaking_change=Warning
+incompatible_api_component_version_report_minor_without_api_change=Warning
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/remote/org.eclipse.remote.jsch.ui/.settings/org.eclipse.pde.prefs b/remote/org.eclipse.remote.jsch.ui/.settings/org.eclipse.pde.prefs
new file mode 100644
index 00000000000..d2dc703ba9e
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.ui/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,35 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=2
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=2
+compilers.p.missing-version-export-package=2
+compilers.p.missing-version-import-package=2
+compilers.p.missing-version-require-bundle=2
+compilers.p.no-required-att=0
+compilers.p.no.automatic.module=1
+compilers.p.not-externalized-att=1
+compilers.p.service.component.without.lazyactivation=1
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/remote/org.eclipse.remote.jsch.ui/META-INF/MANIFEST.MF b/remote/org.eclipse.remote.jsch.ui/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..c3b459ea30a
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,42 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.remote.jsch.ui;singleton:=true
+Bundle-Version: 1.1.100.qualifier
+Bundle-Activator: org.eclipse.remote.internal.jsch.ui.Activator
+Bundle-Vendor: %pluginProvider
+Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.remote.internal.jsch.ui;x-internal:=true,
+ org.eclipse.remote.internal.jsch.ui.messages;x-internal:=true
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Import-Package: com.jcraft.jsch,
+ org.eclipse.core.filesystem,
+ org.eclipse.core.runtime,
+ org.eclipse.jface.dialogs,
+ org.eclipse.jface.operation,
+ org.eclipse.jface.preference,
+ org.eclipse.jface.resource,
+ org.eclipse.jface.viewers,
+ org.eclipse.jface.window,
+ org.eclipse.jface.wizard,
+ org.eclipse.jsch.core,
+ org.eclipse.jsch.ui,
+ org.eclipse.osgi.util,
+ org.eclipse.remote.core,
+ org.eclipse.remote.core.exception,
+ org.eclipse.remote.internal.jsch.core,
+ org.eclipse.remote.ui,
+ org.eclipse.remote.ui.dialogs,
+ org.eclipse.remote.ui.widgets,
+ org.eclipse.swt,
+ org.eclipse.swt.events,
+ org.eclipse.swt.graphics,
+ org.eclipse.swt.layout,
+ org.eclipse.swt.widgets,
+ org.eclipse.ui.dialogs,
+ org.eclipse.ui.forms.events,
+ org.eclipse.ui.forms.widgets,
+ org.eclipse.ui.ide.fileSystem,
+ org.eclipse.ui.plugin,
+ org.osgi.framework
diff --git a/remote/org.eclipse.remote.jsch.ui/about.html b/remote/org.eclipse.remote.jsch.ui/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.ui/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/remote/org.eclipse.remote.jsch.ui/build.properties b/remote/org.eclipse.remote.jsch.ui/build.properties
new file mode 100644
index 00000000000..6a66a469bae
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.ui/build.properties
@@ -0,0 +1,10 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ plugin.properties,\
+ about.html,\
+ icons/
+src.includes = about.html
+
diff --git a/remote/org.eclipse.remote.jsch.ui/icons/full/obj16/connection.gif b/remote/org.eclipse.remote.jsch.ui/icons/full/obj16/connection.gif
new file mode 100644
index 00000000000..870934b6934
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.ui/icons/full/obj16/connection.gif
Binary files differ
diff --git a/remote/org.eclipse.remote.jsch.ui/icons/ssh.png b/remote/org.eclipse.remote.jsch.ui/icons/ssh.png
new file mode 100644
index 00000000000..8cbd0a13ba8
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.ui/icons/ssh.png
Binary files differ
diff --git a/remote/org.eclipse.remote.jsch.ui/plugin.properties b/remote/org.eclipse.remote.jsch.ui/plugin.properties
new file mode 100644
index 00000000000..acc4f00330a
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.ui/plugin.properties
@@ -0,0 +1,16 @@
+###############################################################################
+# Copyright (c) 2013 IBM Corporation.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+###############################################################################
+
+pluginName=JSch UI Remote Support
+pluginProvider=Eclipse PTP
+JSchTransferConnections.name=Remote Connections
+JSchTransferConnections.description=All remote ssh connections \ No newline at end of file
diff --git a/remote/org.eclipse.remote.jsch.ui/plugin.xml b/remote/org.eclipse.remote.jsch.ui/plugin.xml
new file mode 100644
index 00000000000..9668c411bce
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.ui/plugin.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+ <extension
+ point="org.eclipse.ui.ide.filesystemSupport">
+ <filesystemContributor
+ class="org.eclipse.remote.internal.jsch.ui.JSchFileSystemContributor"
+ label="JSch"
+ scheme="ssh">
+ </filesystemContributor>
+ </extension>
+ <extension
+ point="org.eclipse.ui.preferenceTransfer">
+ <transfer
+ icon="icons/full/obj16/connection.gif"
+ id="org.eclipse.remote.jsch.transfer.connections"
+ name="%JSchTransferConnections.name">
+ <mapping
+ scope="instance">
+ <entry
+ node="org.eclipse.remote.jsch.core/connections">
+ </entry>
+ </mapping>
+ <description>
+ %JSchTransferConnections.description
+ </description>
+ </transfer>
+ </extension>
+ <extension
+ point="org.eclipse.remote.core.authenticator">
+ <authenticator
+ class="org.eclipse.remote.internal.jsch.ui.JSchUserAuthenticator"
+ id="org.eclipse.remote.JSch"
+ priority="0">
+ </authenticator>
+ </extension>
+ <extension
+ point="org.eclipse.remote.core.remoteServices">
+ <connectionTypeService
+ connectionTypeId="org.eclipse.remote.JSch"
+ factory="org.eclipse.remote.internal.jsch.ui.JSchUIConnectionService$Factory"
+ service="org.eclipse.remote.ui.IRemoteUIConnectionService">
+ </connectionTypeService>
+ <connectionTypeService
+ connectionTypeId="org.eclipse.remote.JSch"
+ factory="org.eclipse.remote.ui.RemoteUIFileService$Factory"
+ service="org.eclipse.remote.ui.IRemoteUIFileService">
+ </connectionTypeService>
+ <connectionService
+ connectionTypeId="org.eclipse.remote.JSch"
+ factory="org.eclipse.remote.internal.jsch.ui.JSchUserAuthenticator$Factory"
+ service="org.eclipse.remote.core.IUserAuthenticatorService">
+ </connectionService>
+ </extension>
+
+</plugin>
diff --git a/remote/org.eclipse.remote.jsch.ui/src/org/eclipse/remote/internal/jsch/ui/Activator.java b/remote/org.eclipse.remote.jsch.ui/src/org/eclipse/remote/internal/jsch/ui/Activator.java
new file mode 100644
index 00000000000..5767eed2d3c
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.ui/src/org/eclipse/remote/internal/jsch/ui/Activator.java
@@ -0,0 +1,114 @@
+package org.eclipse.remote.internal.jsch.ui;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jsch.core.IJSchService;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+ // The plug-in ID
+ private static final String PLUGIN_ID = "org.eclipse.remote.jsch.ui"; //$NON-NLS-1$
+
+ // Image Keys
+ public static final String IMG_CONNECTION_TYPE = PLUGIN_ID + ".connectionType"; //$NON-NLS-1$
+
+ // The shared instance
+ private static Activator plugin;
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+ /**
+ * Get unique identifier
+ *
+ * @return
+ * @since 5.0
+ */
+ public static String getUniqueIdentifier() {
+ if (getDefault() == null) {
+ return PLUGIN_ID;
+ }
+ return getDefault().getBundle().getSymbolicName();
+ }
+
+ /**
+ * Logs the specified status with this plug-in's log.
+ *
+ * @param status
+ * status to log
+ */
+ public static void log(IStatus status) {
+ getDefault().getLog().log(status);
+ }
+
+ /**
+ * Logs an internal error with the specified message.
+ *
+ * @param message
+ * the error message to log
+ */
+ public static void log(String message) {
+ log(new Status(IStatus.ERROR, getUniqueIdentifier(), IStatus.ERROR, message, null));
+ }
+
+ /**
+ * Logs an internal error with the specified throwable
+ *
+ * @param e
+ * the exception to be logged
+ */
+ public static void log(Throwable e) {
+ log(new Status(IStatus.ERROR, getUniqueIdentifier(), IStatus.ERROR, e.getMessage(), e));
+ }
+
+ private IJSchService fJSchService;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ /**
+ * Return the OSGi service with the given service interface.
+ *
+ * @param service service interface
+ * @return the specified service or null if it's not registered
+ */
+ public static <T> T getService(Class<T> service) {
+ BundleContext context = plugin.getBundle().getBundleContext();
+ ServiceReference<T> ref = context.getServiceReference(service);
+ return ref != null ? context.getService(ref) : null;
+ }
+
+ public IJSchService getService() {
+ return fJSchService;
+ }
+
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ ServiceReference<IJSchService> reference = context.getServiceReference(IJSchService.class);
+ fJSchService = context.getService(reference);
+ getImageRegistry().put(IMG_CONNECTION_TYPE, imageDescriptorFromPlugin(PLUGIN_ID, "/icons/ssh.png")); //$NON-NLS-1$
+ }
+
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+}
diff --git a/remote/org.eclipse.remote.jsch.ui/src/org/eclipse/remote/internal/jsch/ui/JSchFileSystemContributor.java b/remote/org.eclipse.remote.jsch.ui/src/org/eclipse/remote/internal/jsch/ui/JSchFileSystemContributor.java
new file mode 100644
index 00000000000..d12924612c6
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.ui/src/org/eclipse/remote/internal/jsch/ui/JSchFileSystemContributor.java
@@ -0,0 +1,66 @@
+/********************************************************************************
+ * Copyright (c) 2002, 2008 IBM Corporation and others.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * Initial Contributors:
+ * The following IBM employees contributed to the Remote System Explorer
+ * component that contains this file: David McKnight, Kushal Munir,
+ * Michael Berger, David Dykstal, Phil Coulthard, Don Yantzi, Eric Simpson,
+ * Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley.
+ *
+ * Contributors:
+ * Kushal Munir (IBM) - moved to internal package.
+ * Martin Oberhuber (Wind River) - [181917] EFS Improvements: Avoid unclosed Streams,
+ * - Fix early startup issues by deferring FileStore evaluation and classloading,
+ * - Improve performance by RSEFileStore instance factory and caching IRemoteFile.
+ * - Also remove unnecessary class RSEFileCache and obsolete branding files.
+ * Martin Oberhuber (Wind River) - [188360] renamed from plugin org.eclipse.rse.eclipse.filesystem
+ * Martin Oberhuber (Wind River) - [189441] fix EFS operations on Windows (Local) systems
+ * David Dykstal (IBM) - [235840] externalizing dialog title
+ ********************************************************************************/
+
+package org.eclipse.remote.internal.jsch.ui;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteConnectionType;
+import org.eclipse.remote.core.IRemoteServicesManager;
+import org.eclipse.remote.internal.jsch.core.JSchConnection;
+import org.eclipse.remote.internal.jsch.core.JSchFileSystem;
+import org.eclipse.remote.internal.jsch.ui.messages.Messages;
+import org.eclipse.remote.ui.IRemoteUIFileService;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.ide.fileSystem.FileSystemContributor;
+
+public class JSchFileSystemContributor extends FileSystemContributor {
+ @Override
+ public URI browseFileSystem(String initialPath, Shell shell) {
+ IRemoteServicesManager manager = Activator.getService(IRemoteServicesManager.class);
+ IRemoteConnectionType connectionType = manager.getConnectionType(JSchConnection.JSCH_ID);
+ IRemoteUIFileService uiFileMgr = connectionType.getService(IRemoteUIFileService.class);
+ uiFileMgr.showConnections(true);
+ String path = uiFileMgr.browseDirectory(shell, Messages.JSchFileSystemContributor_0, initialPath, 0);
+ if (path != null) {
+ IRemoteConnection conn = uiFileMgr.getConnection();
+ if (conn != null) {
+ return JSchFileSystem.getURIFor(conn.getName(), path);
+ }
+ }
+
+ return null;
+ }
+
+ @Override
+ public URI getURI(String string) {
+ try {
+ return new URI(string);
+ } catch (URISyntaxException e) {
+ // Ignore
+ }
+ return null;
+ }
+} \ No newline at end of file
diff --git a/remote/org.eclipse.remote.jsch.ui/src/org/eclipse/remote/internal/jsch/ui/JSchUIConnectionService.java b/remote/org.eclipse.remote.jsch.ui/src/org/eclipse/remote/internal/jsch/ui/JSchUIConnectionService.java
new file mode 100644
index 00000000000..d31425548a1
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.ui/src/org/eclipse/remote/internal/jsch/ui/JSchUIConnectionService.java
@@ -0,0 +1,111 @@
+/*******************************************************************************
+ * Copyright (c) 2013 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.internal.jsch.ui;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.dialogs.ErrorDialog;
+import org.eclipse.jface.dialogs.ProgressMonitorDialog;
+import org.eclipse.jface.operation.IRunnableContext;
+import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteConnectionType;
+import org.eclipse.remote.core.IRemoteConnectionType.Service;
+import org.eclipse.remote.core.exception.RemoteConnectionException;
+import org.eclipse.remote.internal.jsch.ui.messages.Messages;
+import org.eclipse.remote.internal.jsch.ui.wizards.JSchConnectionWizard;
+import org.eclipse.remote.ui.AbstractRemoteUIConnectionService;
+import org.eclipse.remote.ui.IRemoteUIConnectionService;
+import org.eclipse.remote.ui.IRemoteUIConnectionWizard;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Shell;
+
+public class JSchUIConnectionService extends AbstractRemoteUIConnectionService {
+
+ private final IRemoteConnectionType fConnectionType;
+
+ public JSchUIConnectionService(IRemoteConnectionType connectionType) {
+ fConnectionType = connectionType;
+ }
+
+ public static class Factory implements IRemoteConnectionType.Service.Factory {
+ @SuppressWarnings("unchecked")
+ @Override
+ public <T extends Service> T getService(IRemoteConnectionType connectionType, Class<T> service) {
+ if (IRemoteUIConnectionService.class.equals(service)) {
+ return (T) new JSchUIConnectionService(connectionType);
+ }
+ return null;
+ }
+ }
+
+ @Override
+ public IRemoteConnectionType getConnectionType() {
+ return fConnectionType;
+ }
+
+ @Override
+ public IRemoteUIConnectionWizard getConnectionWizard(Shell shell) {
+ return new JSchConnectionWizard(shell, fConnectionType);
+ }
+
+ @Override
+ public void openConnectionWithProgress(Shell shell, IRunnableContext context, final IRemoteConnection connection) {
+ if (!connection.isOpen()) {
+ IRunnableWithProgress op = new IRunnableWithProgress() {
+ @Override
+ public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
+ try {
+ connection.open(monitor);
+ } catch (RemoteConnectionException e) {
+ throw new InvocationTargetException(e);
+ }
+ if (monitor.isCanceled()) {
+ throw new InterruptedException();
+ }
+ }
+ };
+ try {
+ if (context != null) {
+ context.run(true, true, op);
+ } else {
+ new ProgressMonitorDialog(shell).run(true, true, op);
+ }
+ } catch (InvocationTargetException e) {
+ ErrorDialog.openError(shell, Messages.JSchUIConnectionManager_Connection_Error,
+ Messages.JSchUIConnectionManager_Could_not_open_connection,
+ new Status(IStatus.ERROR, Activator.getUniqueIdentifier(), e.getCause().getMessage()));
+ } catch (InterruptedException e) {
+ ErrorDialog.openError(shell, Messages.JSchUIConnectionManager_Connection_Error,
+ Messages.JSchUIConnectionManager_Could_not_open_connection,
+ new Status(IStatus.ERROR, Activator.getUniqueIdentifier(), e.getMessage()));
+ }
+ }
+ }
+
+ @Override
+ public ILabelProvider getLabelProvider() {
+ return new DefaultLabelProvider() {
+ @Override
+ public Image getImage(Object element) {
+ return Activator.getDefault().getImageRegistry().get(Activator.IMG_CONNECTION_TYPE);
+ }
+ };
+ }
+
+}
diff --git a/remote/org.eclipse.remote.jsch.ui/src/org/eclipse/remote/internal/jsch/ui/JSchUserAuthenticator.java b/remote/org.eclipse.remote.jsch.ui/src/org/eclipse/remote/internal/jsch/ui/JSchUserAuthenticator.java
new file mode 100644
index 00000000000..8dbeac9e9e2
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.ui/src/org/eclipse/remote/internal/jsch/ui/JSchUserAuthenticator.java
@@ -0,0 +1,123 @@
+/*******************************************************************************
+ * Copyright (c) 2014, 2015 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - Initial API and implementation
+ * Bernd Hufmann - Implement IRemoteConnection.Service.Factory
+ *******************************************************************************/
+package org.eclipse.remote.internal.jsch.ui;
+
+import java.net.PasswordAuthentication;
+
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jsch.ui.UserInfoPrompter;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IUserAuthenticatorService;
+import org.eclipse.remote.internal.jsch.core.JSchConnection;
+import org.eclipse.swt.widgets.Display;
+
+import com.jcraft.jsch.JSch;
+import com.jcraft.jsch.JSchException;
+
+public class JSchUserAuthenticator implements IUserAuthenticatorService {
+
+ private final IRemoteConnection remoteConnection;
+ private UserInfoPrompter prompter;
+
+ public JSchUserAuthenticator(IRemoteConnection conn) {
+ this.remoteConnection = conn;
+ try {
+ String username = conn.getAttribute(JSchConnection.USERNAME_ATTR);
+ String address = conn.getAttribute(JSchConnection.ADDRESS_ATTR);
+ prompter = new UserInfoPrompter(new JSch().getSession(username, address));
+ } catch (JSchException e) {
+ // Not allowed
+ }
+ }
+
+ @Override
+ public IRemoteConnection getRemoteConnection() {
+ return remoteConnection;
+ }
+
+ @Override
+ public PasswordAuthentication prompt(String username, String message) {
+ if (prompter.promptPassword(message)) {
+ String sessionUserName = prompter.getSession().getUserName();
+ if (sessionUserName != null) {
+ username = sessionUserName;
+ }
+ PasswordAuthentication auth = new PasswordAuthentication(username, prompter.getPassword().toCharArray());
+ return auth;
+ }
+ return null;
+ }
+
+ @Override
+ public String[] prompt(String destination, String name, String message, String[] prompt, boolean[] echo) {
+ return prompter.promptKeyboardInteractive(destination, name, message, prompt, echo);
+ }
+
+ @Override
+ public int prompt(final int promptType, final String title, final String message, final int[] promptResponses,
+ final int defaultResponseIndex) {
+ final Display display = getDisplay();
+ final int[] retval = new int[1];
+ final String[] buttons = new String[promptResponses.length];
+ for (int i = 0; i < promptResponses.length; i++) {
+ int prompt = promptResponses[i];
+ switch (prompt) {
+ case IDialogConstants.OK_ID:
+ buttons[i] = IDialogConstants.OK_LABEL;
+ break;
+ case IDialogConstants.CANCEL_ID:
+ buttons[i] = IDialogConstants.CANCEL_LABEL;
+ break;
+ case IDialogConstants.NO_ID:
+ buttons[i] = IDialogConstants.NO_LABEL;
+ break;
+ case IDialogConstants.YES_ID:
+ buttons[i] = IDialogConstants.YES_LABEL;
+ break;
+ }
+ }
+
+ display.syncExec(new Runnable() {
+ @Override
+ public void run() {
+ final MessageDialog dialog = new MessageDialog(display.getActiveShell(), title, null /* title image */,
+ message, promptType, buttons, defaultResponseIndex);
+ retval[0] = dialog.open();
+ }
+ });
+ return promptResponses[retval[0]];
+ }
+
+ private Display getDisplay() {
+ Display display = Display.getCurrent();
+ if (display == null) {
+ display = Display.getDefault();
+ }
+ return display;
+ }
+
+ public static class Factory implements IRemoteConnection.Service.Factory {
+ @Override
+ @SuppressWarnings("unchecked")
+ public <T extends IRemoteConnection.Service> T getService(IRemoteConnection connection, Class<T> service) {
+ if (IUserAuthenticatorService.class.equals(service)) {
+ return (T) new JSchUserAuthenticator(connection);
+ } else {
+ return null;
+ }
+ }
+ }
+}
diff --git a/remote/org.eclipse.remote.jsch.ui/src/org/eclipse/remote/internal/jsch/ui/messages/Messages.java b/remote/org.eclipse.remote.jsch.ui/src/org/eclipse/remote/internal/jsch/ui/messages/Messages.java
new file mode 100644
index 00000000000..b94438f3771
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.ui/src/org/eclipse/remote/internal/jsch/ui/messages/Messages.java
@@ -0,0 +1,71 @@
+/**
+ * Copyright (c) 2013 IBM Corporation.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - Initial Implementation
+ *
+ */
+package org.eclipse.remote.internal.jsch.ui.messages;
+
+import org.eclipse.osgi.util.NLS;
+
+public class Messages extends NLS {
+ private static final String BUNDLE_ID = "org.eclipse.remote.internal.jsch.ui.messages.messages"; //$NON-NLS-1$
+
+ static {
+ // load message values from bundle file
+ NLS.initializeMessages(BUNDLE_ID, Messages.class);
+ }
+
+ public static String JSchConnectionPage_0;
+ public static String JSchConnectionPage_1;
+ public static String JSchConnectionPage_2;
+ public static String JSchConnectionPage_A_connection_with_that_name_already_exists;
+ public static String JSchConnectionPage_Edit_Connection;
+ public static String JSchConnectionPage_Edit_properties_of_an_existing_connection;
+ public static String JSchConnectionPage_Initial_Message;
+ public static String JSchConnectionPage_Proxy;
+ public static String JSchConnectionPage_Help;
+ public static String JSchConnectionPage_KeysAtSSH2;
+ public static String JSchConnectionPage_SelectCommand;
+ public static String JSchConnectionPage_SelectConnection;
+ public static String JSchConnectionPage_Settings0;
+ public static String JSchConnectionPage_selectProxyConnection;
+ public static String JSchFileSystemContributor_0;
+ public static String JSchNewConnectionPage_Advanced;
+ public static String JSchNewConnectionPage_Connection_name;
+ public static String JSchNewConnectionPage_File_with_private_key;
+ public static String JSchNewConnectionPage_Host;
+ public static String JSchNewConnectionPage_Host_information;
+ public static String JSchNewConnectionPage_Host_name_cannot_be_empty;
+ public static String JSchNewConnectionPage_New_Connection;
+ public static String JSchNewConnectionPage_New_connection_properties;
+ public static String JSchNewConnectionPage_Passphrase;
+ public static String JSchNewConnectionPage_Password;
+ public static String JSchNewConnectionPage_Password_based_authentication;
+ public static String JSchNewConnectionPage_Please_enter_a_connection_name;
+ public static String JSchNewConnectionPage_Port;
+ public static String JSchNewConnectionPage_Port_is_not_valid;
+ public static String JSchNewConnectionPage_Private_key_file_cannot_be_read;
+ public static String JSchNewConnectionPage_Private_key_file_does_not_exist;
+ public static String JSchNewConnectionPage_Private_key_file_is_invalid;
+ public static String JSchNewConnectionPage_Private_key_path_cannot_be_empty;
+ public static String JSchNewConnectionPage_Public_key_based_authentication;
+ public static String JSchNewConnectionPage_Timeout;
+ public static String JSchNewConnectionPage_Timeout_is_not_valid;
+ public static String JSchNewConnectionPage_User;
+ public static String JSchNewConnectionPage_User_name_cannot_be_empty;
+ public static String JSchUIConnectionManager_Connection_Error;
+ public static String JSchUIConnectionManager_Could_not_open_connection;
+
+ private Messages() {
+ // cannot create new instance
+ }
+}
diff --git a/remote/org.eclipse.remote.jsch.ui/src/org/eclipse/remote/internal/jsch/ui/messages/messages.properties b/remote/org.eclipse.remote.jsch.ui/src/org/eclipse/remote/internal/jsch/ui/messages/messages.properties
new file mode 100644
index 00000000000..f782ea96a90
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.ui/src/org/eclipse/remote/internal/jsch/ui/messages/messages.properties
@@ -0,0 +1,53 @@
+###############################################################################
+# Copyright (c) 2013 IBM Corporation.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# IBM Corporation - initial implementation
+###############################################################################
+JSchConnectionPage_0=Use login shell
+JSchConnectionPage_1=Login shell command
+JSchConnectionPage_2=Login shell command cannot be empty
+JSchConnectionPage_A_connection_with_that_name_already_exists=A connection with that name already exists
+JSchConnectionPage_Edit_Connection=Edit Connection
+JSchConnectionPage_Edit_properties_of_an_existing_connection=Edit properties of an existing connection
+JSchConnectionPage_Initial_Message=Specify properties of a new connection
+JSchConnectionPage_Proxy=SSH Proxy Settings
+JSchConnectionPage_Help=If 'Local' is selected and proxy command is empty, no proxy is used.\nSee <a>Network Connections</a> for SOCKS and HTTP proxy options.
+JSchConnectionPage_KeysAtSSH2=Keys are set at <a>Network Connections, SSH2</a>
+JSchConnectionPage_SelectCommand=Enter a local or remote command such as 'nc %h %p'. Can be empty for an ssh gateway.
+JSchConnectionPage_SelectConnection=Select 'Remote' for an ssh gateway or a remote proxy command.
+JSchConnectionPage_Settings0=Connection Settings
+JSchConnectionPage_selectProxyConnection=Please select a proxy connection
+JSchFileSystemContributor_0=Browse File System
+JSchNewConnectionPage_Advanced=Advanced
+JSchNewConnectionPage_Connection_name=Connection name:
+JSchNewConnectionPage_File_with_private_key=File with private key:
+JSchNewConnectionPage_Host=Host:
+JSchNewConnectionPage_Host_information=Host information
+JSchNewConnectionPage_Host_name_cannot_be_empty=Host name cannot be empty
+JSchNewConnectionPage_New_Connection=New Connection
+JSchNewConnectionPage_New_connection_properties=New connection properties
+JSchNewConnectionPage_Passphrase=Passphrase:
+JSchNewConnectionPage_Password=Password:
+JSchNewConnectionPage_Password_based_authentication=Password based authentication
+JSchNewConnectionPage_Please_enter_a_connection_name=Please enter a connection name
+JSchNewConnectionPage_Port=Port:
+JSchNewConnectionPage_Port_is_not_valid=Port is not valid
+JSchNewConnectionPage_Private_key_file_cannot_be_read=Private key file cannot be read
+JSchNewConnectionPage_Private_key_file_does_not_exist=Private key file does not exist
+JSchNewConnectionPage_Private_key_file_is_invalid=Private key file is invalid
+JSchNewConnectionPage_Private_key_path_cannot_be_empty=Private key path cannot be empty
+JSchNewConnectionPage_Public_key_based_authentication=Public key based authentication
+JSchNewConnectionPage_Timeout=Timeout:
+JSchNewConnectionPage_Timeout_is_not_valid=Timeout is not valid
+JSchNewConnectionPage_User=User:
+JSchNewConnectionPage_User_name_cannot_be_empty=User name cannot be empty
+JSchUIConnectionManager_Connection_Error=Connection Error
+JSchUIConnectionManager_Could_not_open_connection=Could not open connection
diff --git a/remote/org.eclipse.remote.jsch.ui/src/org/eclipse/remote/internal/jsch/ui/wizards/JSchConnectionPage.java b/remote/org.eclipse.remote.jsch.ui/src/org/eclipse/remote/internal/jsch/ui/wizards/JSchConnectionPage.java
new file mode 100644
index 00000000000..5fb5c2c1a82
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.ui/src/org/eclipse/remote/internal/jsch/ui/wizards/JSchConnectionPage.java
@@ -0,0 +1,585 @@
+/**
+ * Copyright (c) 2013, 2015 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - Initial Implementation
+ * Patrick Tasse - [461541] fix handling of default attributes
+ */
+package org.eclipse.remote.internal.jsch.ui.wizards;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.jface.preference.PreferenceDialog;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteConnectionHostService;
+import org.eclipse.remote.core.IRemoteConnectionType;
+import org.eclipse.remote.core.IRemoteConnectionWorkingCopy;
+import org.eclipse.remote.core.IRemotePortForwardingService;
+import org.eclipse.remote.core.IRemoteServicesManager;
+import org.eclipse.remote.core.exception.RemoteConnectionException;
+import org.eclipse.remote.internal.jsch.core.Activator;
+import org.eclipse.remote.internal.jsch.core.JSchConnection;
+import org.eclipse.remote.internal.jsch.ui.messages.Messages;
+import org.eclipse.remote.ui.widgets.RemoteConnectionWidget;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.FontMetrics;
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Link;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.dialogs.PreferencesUtil;
+import org.eclipse.ui.forms.events.ExpansionEvent;
+import org.eclipse.ui.forms.events.IExpansionListener;
+import org.eclipse.ui.forms.widgets.ExpandableComposite;
+
+public class JSchConnectionPage extends WizardPage {
+
+ private class DataModifyListener implements ModifyListener {
+ @Override
+ public synchronized void modifyText(ModifyEvent e) {
+ validateFields();
+ getContainer().updateButtons();
+ }
+ }
+
+ private Text fConnectionName;
+ private Button fPasswordButton;
+ private Button fPublicKeyButton;
+ private Button fUseLoginShellButton;
+ private Text fHostText;
+ private Text fUserText;
+ private Text fPasswordText;
+ private Text fPassphraseText;
+ private Text fPortText;
+ private Text fTimeoutText;
+ private Text fLoginShellText;
+
+ private String fInitialName = "Remote Host"; //$NON-NLS-1$
+ private Set<String> fInvalidConnectionNames;
+ private final Map<String, String> fInitialAttributes = new HashMap<>();
+ private IRemoteConnectionWorkingCopy fConnection;
+
+ private final IRemoteConnectionType fConnectionType;
+
+ private final DataModifyListener fDataModifyListener = new DataModifyListener();
+ private RemoteConnectionWidget fProxyConnectionWidget;
+ private Text fProxyCommandText;
+ private static final String PREFS_PAGE_ID_NET_PROXY = "org.eclipse.ui.net.NetPreferences"; //$NON-NLS-1$
+
+ public JSchConnectionPage(IRemoteConnectionType connectionType) {
+ super(Messages.JSchNewConnectionPage_New_Connection);
+ fConnectionType = connectionType;
+ setPageComplete(false);
+ }
+
+ /**
+ * Create controls for the bottom (hideable) advanced composite
+ *
+ * @param mold
+ *
+ */
+ private void createAdvancedControls(final Composite parent) {
+ ExpandableComposite expComp = new ExpandableComposite(parent, ExpandableComposite.TWISTIE);
+ expComp.setText(Messages.JSchNewConnectionPage_Advanced);
+ expComp.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
+ expComp.setExpanded(false);
+ expComp.addExpansionListener(new IExpansionListener() {
+
+ @Override
+ public void expansionStateChanged(ExpansionEvent e) {
+ for (int i = 0; i < 2; i++) { // sometimes the size compute isn't correct on first try
+ Point newSize = parent.computeSize(SWT.DEFAULT, SWT.DEFAULT);
+ Point currentSize = parent.getSize();
+ int deltaY = newSize.y - currentSize.y;
+ Point shellSize = getShell().getSize();
+ shellSize.y += deltaY;
+ getShell().setSize(shellSize);
+ getShell().layout(true, true);
+ }
+ }
+
+ @Override
+ public void expansionStateChanging(ExpansionEvent e) {
+ // Ignore
+ }
+ });
+
+ Composite advancedComp = new Composite(expComp, SWT.NONE);
+ advancedComp.setLayout(new GridLayout(1, false));
+ advancedComp.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
+
+ Group settingsComp = new Group(advancedComp, SWT.NONE);
+ settingsComp.setText(Messages.JSchConnectionPage_Settings0);
+ settingsComp.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
+ settingsComp.setLayout(new GridLayout(2, false));
+
+ Label portLabel = new Label(settingsComp, SWT.NONE);
+ portLabel.setText(Messages.JSchNewConnectionPage_Port);
+ fPortText = new Text(settingsComp, SWT.BORDER | SWT.SINGLE);
+ fPortText.setText(Integer.toString(JSchConnection.DEFAULT_PORT));
+ fPortText.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false));
+ setTextFieldWidthInChars(fPortText, 5);
+
+ Label timeoutLabel = new Label(settingsComp, SWT.NONE);
+ timeoutLabel.setText(Messages.JSchNewConnectionPage_Timeout);
+ fTimeoutText = new Text(settingsComp, SWT.BORDER | SWT.SINGLE);
+ fTimeoutText.setText(Integer.toString(JSchConnection.DEFAULT_TIMEOUT));
+ fTimeoutText.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false));
+ setTextFieldWidthInChars(fTimeoutText, 5);
+
+ fUseLoginShellButton = new Button(settingsComp, SWT.CHECK);
+ fUseLoginShellButton.setText(Messages.JSchConnectionPage_0);
+ fUseLoginShellButton.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false, 2, 1));
+ fUseLoginShellButton.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ validateFields();
+ updateEnablement();
+ }
+ });
+ Label loginShellLabel = new Label(settingsComp, SWT.NONE);
+ loginShellLabel.setText(Messages.JSchConnectionPage_1);
+ fLoginShellText = new Text(settingsComp, SWT.BORDER | SWT.SINGLE);
+ fLoginShellText.setText(JSchConnection.DEFAULT_LOGIN_SHELL_COMMAND);
+ fLoginShellText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
+ fUseLoginShellButton.setSelection(JSchConnection.DEFAULT_USE_LOGIN_SHELL);
+
+ Group proxyComp = new Group(advancedComp, SWT.NONE);
+ proxyComp.setText(Messages.JSchConnectionPage_Proxy);
+ proxyComp.setLayout(new GridLayout(1, false));
+ proxyComp.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
+ createProxyControls(proxyComp);
+
+ expComp.setClient(advancedComp);
+ }
+
+ private void createAuthControls(Composite parent) {
+ Composite controls = new Composite(parent, SWT.NONE);
+ controls.setLayout(new GridLayout(3, false));
+ controls.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+
+ Label hostLabel = new Label(controls, SWT.NONE);
+ hostLabel.setText(Messages.JSchNewConnectionPage_Host);
+ fHostText = new Text(controls, SWT.BORDER | SWT.SINGLE);
+ fHostText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
+
+ Label userLabel = new Label(controls, SWT.NONE);
+ userLabel.setText(Messages.JSchNewConnectionPage_User);
+ fUserText = new Text(controls, SWT.BORDER | SWT.SINGLE);
+ fUserText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
+
+ // Key option box
+ fPublicKeyButton = new Button(controls, SWT.RADIO);
+ fPublicKeyButton.setText(Messages.JSchNewConnectionPage_Public_key_based_authentication);
+ fPublicKeyButton.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false, 2, 1));
+ fPublicKeyButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ validateFields();
+ updateEnablement();
+ }
+ });
+
+ Link link = new Link(controls, SWT.WRAP);
+ final GridData linkLayoutData = new GridData(GridData.FILL_HORIZONTAL);
+ link.setLayoutData(linkLayoutData);
+ final String PREFS_PAGE_ID_NET_SSH = "org.eclipse.jsch.ui.SSHPreferences"; //$NON-NLS-1$
+ link.addSelectionListener(new SelectionListener() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ PreferenceDialog dlg = PreferencesUtil.createPreferenceDialogOn(getShell(), PREFS_PAGE_ID_NET_SSH,
+ new String[] { PREFS_PAGE_ID_NET_SSH }, null);
+ dlg.open();
+ }
+
+ @Override
+ public void widgetDefaultSelected(SelectionEvent e) {
+ // ignore
+ }
+ });
+ link.setText(Messages.JSchConnectionPage_KeysAtSSH2);
+
+ // Passphrase field
+ Label passphraseLabel = new Label(controls, SWT.NONE);
+ passphraseLabel.setText(Messages.JSchNewConnectionPage_Passphrase);
+ fPassphraseText = new Text(controls, SWT.BORDER | SWT.SINGLE | SWT.PASSWORD);
+ fPassphraseText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
+
+ // User option box
+ fPasswordButton = new Button(controls, SWT.RADIO);
+ fPasswordButton.setText(Messages.JSchNewConnectionPage_Password_based_authentication);
+ fPasswordButton.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false, 3, 1));
+ fPasswordButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ validateFields();
+ updateEnablement();
+ }
+ });
+
+ // Password field
+ Label passwordLabel = new Label(controls, SWT.NONE);
+ passwordLabel.setText(Messages.JSchNewConnectionPage_Password);
+ fPasswordText = new Text(controls, SWT.BORDER | SWT.SINGLE | SWT.PASSWORD);
+ fPasswordText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
+
+ fPasswordButton.setSelection(JSchConnection.DEFAULT_IS_PASSWORD);
+ fPublicKeyButton.setSelection(!JSchConnection.DEFAULT_IS_PASSWORD);
+ controls.setTabList(new Control[] { fHostText, fUserText, fPublicKeyButton, fPassphraseText, fPasswordButton,
+ fPasswordText });
+ }
+
+ @Override
+ public void createControl(Composite parent) {
+ if (fConnection == null) {
+ setDescription(Messages.JSchNewConnectionPage_New_connection_properties);
+ setTitle(Messages.JSchNewConnectionPage_New_Connection);
+ setMessage(Messages.JSchConnectionPage_Initial_Message);
+ } else {
+ setDescription(Messages.JSchConnectionPage_Edit_properties_of_an_existing_connection);
+ setTitle(Messages.JSchConnectionPage_Edit_Connection);
+ }
+ setErrorMessage(null);
+
+ GridLayout topLayout = new GridLayout(2, false);
+ final Composite topControl = new Composite(parent, SWT.NONE);
+ setControl(topControl);
+ topControl.setLayout(topLayout);
+
+ Label label = new Label(topControl, SWT.NONE);
+ label.setText(Messages.JSchNewConnectionPage_Connection_name);
+
+ fConnectionName = new Text(topControl, SWT.BORDER | SWT.SINGLE);
+ fConnectionName.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
+ fConnectionName.setEnabled(fConnection == null);
+
+ final Group authGroup = new Group(topControl, SWT.NONE);
+ authGroup.setText(Messages.JSchNewConnectionPage_Host_information);
+ authGroup.setLayout(new GridLayout(1, false));
+ authGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1));
+
+ createAuthControls(authGroup);
+ createAdvancedControls(authGroup);
+
+ try {
+ loadValues();
+ } catch (CoreException e) {
+ Activator.log(e.getStatus());
+ }
+
+ /*
+ * Register listeners after loading values so we don't trigger listeners
+ */
+ registerListeners();
+
+ if (fConnection != null) {
+ validateFields();
+ }
+
+ updateEnablement();
+ }
+
+ /**
+ * Create controls for the bottom (hideable) proxy composite
+ *
+ * @param mold
+ *
+ */
+ private void createProxyControls(final Composite proxyComp) {
+ Label lblConnection = new Label(proxyComp, SWT.WRAP);
+ lblConnection.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ lblConnection.setText(Messages.JSchConnectionPage_SelectConnection);
+
+ fProxyConnectionWidget = new RemoteConnectionWidget(proxyComp, SWT.NONE, null, 0);
+ fProxyConnectionWidget.filterConnections(IRemoteConnectionHostService.class,
+ IRemotePortForwardingService.class);
+
+ Label lblCommand = new Label(proxyComp, SWT.WRAP);
+ lblCommand.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ lblCommand.setText(Messages.JSchConnectionPage_SelectCommand);
+
+ fProxyCommandText = new Text(proxyComp, SWT.BORDER);
+ fProxyCommandText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+ Link link = new Link(proxyComp, SWT.WRAP);
+ final GridData linkLayoutData = new GridData(GridData.FILL_HORIZONTAL);
+ link.setLayoutData(linkLayoutData);
+ link.addSelectionListener(new SelectionListener() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ PreferenceDialog dlg = PreferencesUtil.createPreferenceDialogOn(getShell(), PREFS_PAGE_ID_NET_PROXY,
+ new String[] { PREFS_PAGE_ID_NET_PROXY }, null);
+ dlg.open();
+ }
+
+ @Override
+ public void widgetDefaultSelected(SelectionEvent e) {
+ // ignore
+ }
+ });
+
+ linkLayoutData.widthHint = 400;
+ link.setText(Messages.JSchConnectionPage_Help);
+ }
+
+ public IRemoteConnectionWorkingCopy getConnection() {
+ return fConnection;
+ }
+
+ /**
+ * Check if the connection name is invalid. This only applies to new connections (when fConnection is null).
+ *
+ * @param name
+ * connection name
+ * @return true if the name is invalid, false otherwise
+ */
+ private boolean isInvalidName(String name) {
+ if (fConnection == null) {
+ if (fInvalidConnectionNames == null) {
+ return fConnectionType.getConnection(name) != null;
+ }
+ return fInvalidConnectionNames.contains(name);
+ }
+ return false;
+ }
+
+ private void loadValues() throws CoreException {
+ IRemoteServicesManager manager = Activator.getService(IRemoteServicesManager.class);
+ if (fConnection != null) {
+ fConnectionName.setText(fConnection.getName());
+ fHostText.setText(fConnection.getAttribute(JSchConnection.ADDRESS_ATTR));
+ fUserText.setText(fConnection.getAttribute(JSchConnection.USERNAME_ATTR));
+ String portStr = fConnection.getAttribute(JSchConnection.PORT_ATTR);
+ fPortText.setText(portStr.isEmpty() ? Integer.toString(JSchConnection.DEFAULT_PORT) : portStr);
+ String timeoutStr = fConnection.getAttribute(JSchConnection.TIMEOUT_ATTR);
+ fTimeoutText.setText(timeoutStr.isEmpty() ? Integer.toString(JSchConnection.DEFAULT_TIMEOUT) : timeoutStr);
+ String isPwdStr = fConnection.getAttribute(JSchConnection.IS_PASSWORD_ATTR);
+ boolean isPwd = isPwdStr.isEmpty() ? JSchConnection.DEFAULT_IS_PASSWORD : Boolean.parseBoolean(isPwdStr);
+ fPasswordButton.setSelection(isPwd);
+ fPublicKeyButton.setSelection(!isPwd);
+ fPasswordText.setText(fConnection.getSecureAttribute(JSchConnection.PASSWORD_ATTR));
+ fPassphraseText.setText(fConnection.getSecureAttribute(JSchConnection.PASSPHRASE_ATTR));
+ String useLoginShellStr = fConnection.getAttribute(JSchConnection.USE_LOGIN_SHELL_ATTR);
+ boolean useLoginShell = useLoginShellStr.isEmpty() ? JSchConnection.DEFAULT_USE_LOGIN_SHELL
+ : Boolean.parseBoolean(useLoginShellStr);
+ fUseLoginShellButton.setSelection(useLoginShell);
+ String loginShellStr = fConnection.getAttribute(JSchConnection.LOGIN_SHELL_COMMAND_ATTR);
+ fLoginShellText
+ .setText(loginShellStr.isEmpty() ? JSchConnection.DEFAULT_LOGIN_SHELL_COMMAND : loginShellStr);
+ fProxyCommandText.setText(fConnection.getAttribute(JSchConnection.PROXYCOMMAND_ATTR));
+ JSchConnection proxyConn = fConnection.getService(JSchConnection.class).getProxyConnection();
+ if (proxyConn == null) {
+ // Use local connection
+ fProxyConnectionWidget.setConnection(manager.getLocalConnectionType().getConnections().get(0));
+ } else {
+ fProxyConnectionWidget.setConnection(proxyConn.getRemoteConnection());
+ }
+ } else {
+ fConnectionName.setText(fInitialName);
+ String host = fInitialAttributes.get(JSchConnection.ADDRESS_ATTR);
+ if (host != null) {
+ fHostText.setText(host);
+ }
+ String username = fInitialAttributes.get(JSchConnection.USERNAME_ATTR);
+ if (username != null) {
+ fUserText.setText(username);
+ }
+ String port = fInitialAttributes.get(JSchConnection.PORT_ATTR);
+ if (port != null) {
+ fPortText.setText(port);
+ }
+ String timeout = fInitialAttributes.get(JSchConnection.TIMEOUT_ATTR);
+ if (timeout != null) {
+ fTimeoutText.setText(timeout);
+ }
+ String isPwd = fInitialAttributes.get(JSchConnection.IS_PASSWORD_ATTR);
+ if (isPwd != null) {
+ fPasswordButton.setSelection(Boolean.parseBoolean(isPwd));
+ }
+ String password = fInitialAttributes.get(JSchConnection.PASSWORD_ATTR);
+ if (password != null) {
+ fPasswordText.setText(password);
+ }
+ String passphrase = fInitialAttributes.get(JSchConnection.PASSPHRASE_ATTR);
+ if (passphrase != null) {
+ fPassphraseText.setText(passphrase);
+ }
+ String useLoginShell = fInitialAttributes.get(JSchConnection.USE_LOGIN_SHELL_ATTR);
+ if (useLoginShell != null) {
+ fUseLoginShellButton.setSelection(Boolean.parseBoolean(useLoginShell));
+ }
+ String loginShell = fInitialAttributes.get(JSchConnection.LOGIN_SHELL_COMMAND_ATTR);
+ if (loginShell != null) {
+ fLoginShellText.setText(loginShell);
+ }
+ fProxyConnectionWidget.setConnection(manager.getLocalConnectionType().getConnections().get(0));
+ }
+ }
+
+ private void registerListeners() {
+ fConnectionName.addModifyListener(fDataModifyListener);
+ fHostText.addModifyListener(fDataModifyListener);
+ fUserText.addModifyListener(fDataModifyListener);
+ fPasswordText.addModifyListener(fDataModifyListener);
+ fPassphraseText.addModifyListener(fDataModifyListener);
+ fPortText.addModifyListener(fDataModifyListener);
+ fTimeoutText.addModifyListener(fDataModifyListener);
+ fLoginShellText.addModifyListener(fDataModifyListener);
+ fProxyCommandText.addModifyListener(fDataModifyListener);
+ fProxyConnectionWidget.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ validateFields();
+ getContainer().updateButtons();
+ }
+ });
+ }
+
+ public void setAddress(String address) {
+ fInitialAttributes.put(JSchConnection.ADDRESS_ATTR, address);
+ }
+
+ public void setAttributes(Map<String, String> attributes) {
+ fInitialAttributes.putAll(attributes);
+ }
+
+ public void setConnection(IRemoteConnectionWorkingCopy connection) {
+ fConnection = connection;
+ }
+
+ public void setConnectionName(String name) {
+ fInitialName = name;
+ }
+
+ public void setInvalidConnectionNames(Set<String> names) {
+ fInvalidConnectionNames = names;
+ }
+
+ @Override
+ public void setPageComplete(boolean complete) {
+ super.setPageComplete(complete);
+ if (complete) {
+ storeValues();
+ }
+ }
+
+ public void setPort(int port) {
+ fInitialAttributes.put(JSchConnection.PORT_ATTR, Integer.toString(port));
+ }
+
+ private void setTextFieldWidthInChars(Text text, int chars) {
+ text.setTextLimit(chars);
+ Object data = text.getLayoutData();
+ if (data instanceof GridData) {
+ GC gc = new GC(text);
+ FontMetrics fm = gc.getFontMetrics();
+ int width = (int) (chars * fm.getAverageCharacterWidth());
+ gc.dispose();
+ ((GridData) data).widthHint = width;
+ }
+ }
+
+ public void setUsername(String username) {
+ fInitialAttributes.put(JSchConnection.USERNAME_ATTR, username);
+ }
+
+ private void storeValues() {
+ if (fConnection == null) {
+ try {
+ fConnection = fConnectionType.newConnection(fConnectionName.getText().trim());
+ } catch (RemoteConnectionException e) {
+ Activator.log(e);
+ }
+ }
+ if (fConnection != null) {
+ fConnection.setName(fConnectionName.getText().trim());
+ fConnection.setAttribute(JSchConnection.ADDRESS_ATTR, fHostText.getText().trim());
+ fConnection.setAttribute(JSchConnection.USERNAME_ATTR, fUserText.getText().trim());
+ fConnection.setSecureAttribute(JSchConnection.PASSWORD_ATTR, fPasswordText.getText().trim());
+ fConnection.setSecureAttribute(JSchConnection.PASSPHRASE_ATTR, fPassphraseText.getText().trim());
+ fConnection.setAttribute(JSchConnection.IS_PASSWORD_ATTR, Boolean.toString(fPasswordButton.getSelection()));
+ fConnection.setAttribute(JSchConnection.TIMEOUT_ATTR, fTimeoutText.getText().trim());
+ fConnection.setAttribute(JSchConnection.PORT_ATTR, fPortText.getText().trim());
+ fConnection.setAttribute(JSchConnection.PROXYCOMMAND_ATTR, fProxyCommandText.getText().trim());
+ fConnection.setAttribute(JSchConnection.USE_LOGIN_SHELL_ATTR,
+ Boolean.toString(fUseLoginShellButton.getSelection()));
+ fConnection.setAttribute(JSchConnection.LOGIN_SHELL_COMMAND_ATTR, fLoginShellText.getText().trim());
+ IRemoteConnection proxyConnection = fProxyConnectionWidget.getConnection();
+ IRemoteServicesManager manager = Activator.getService(IRemoteServicesManager.class);
+ String proxyConnectionName = ""; //$NON-NLS-1$
+ if (proxyConnection != null && proxyConnection.getConnectionType() != manager.getLocalConnectionType()) {
+ proxyConnectionName = proxyConnection.getName();
+ }
+ fConnection.setAttribute(JSchConnection.PROXYCONNECTION_ATTR, proxyConnectionName);
+ }
+ }
+
+ private void updateEnablement() {
+ boolean isPasswordAuth = fPasswordButton.getSelection();
+ fPasswordText.setEnabled(isPasswordAuth);
+ fPassphraseText.setEnabled(!isPasswordAuth);
+ fLoginShellText.setEnabled(fUseLoginShellButton.getSelection());
+ }
+
+ private String validateAdvanced() {
+ try {
+ Integer.parseInt(fPortText.getText().trim());
+ } catch (NumberFormatException ne) {
+ return Messages.JSchNewConnectionPage_Port_is_not_valid;
+ }
+ try {
+ Integer.parseInt(fTimeoutText.getText().trim());
+ } catch (NumberFormatException ne) {
+ return Messages.JSchNewConnectionPage_Timeout_is_not_valid;
+ }
+ return null;
+ }
+
+ private void validateFields() {
+ String message = null;
+ if (fConnectionName.getText().trim().length() == 0) {
+ message = Messages.JSchNewConnectionPage_Please_enter_a_connection_name;
+ } else if (isInvalidName(fConnectionName.getText().trim())) {
+ message = Messages.JSchConnectionPage_A_connection_with_that_name_already_exists;
+ } else if (fHostText.getText().trim().length() == 0) {
+ message = Messages.JSchNewConnectionPage_Host_name_cannot_be_empty;
+ } else if (fUserText.getText().trim().length() == 0) {
+ message = Messages.JSchNewConnectionPage_User_name_cannot_be_empty;
+ } else if (fUseLoginShellButton.getSelection() && fLoginShellText.getText().trim().length() == 0) {
+ message = Messages.JSchConnectionPage_2;
+ } else if (fProxyConnectionWidget.getConnection() == null) {
+ message = Messages.JSchConnectionPage_selectProxyConnection;
+ }
+ if (message == null) {
+ message = validateAdvanced();
+ }
+
+ setErrorMessage(message);
+ setPageComplete(message == null);
+ }
+
+}
diff --git a/remote/org.eclipse.remote.jsch.ui/src/org/eclipse/remote/internal/jsch/ui/wizards/JSchConnectionWizard.java b/remote/org.eclipse.remote.jsch.ui/src/org/eclipse/remote/internal/jsch/ui/wizards/JSchConnectionWizard.java
new file mode 100644
index 00000000000..93f6f9fbc0a
--- /dev/null
+++ b/remote/org.eclipse.remote.jsch.ui/src/org/eclipse/remote/internal/jsch/ui/wizards/JSchConnectionWizard.java
@@ -0,0 +1,82 @@
+/**
+ * Copyright (c) 2013 IBM Corporation.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - Initial Implementation
+ *
+ */
+package org.eclipse.remote.internal.jsch.ui.wizards;
+
+import java.util.Set;
+
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.remote.core.IRemoteConnectionType;
+import org.eclipse.remote.core.IRemoteConnectionWorkingCopy;
+import org.eclipse.remote.ui.IRemoteUIConnectionWizard;
+import org.eclipse.swt.widgets.Shell;
+
+public class JSchConnectionWizard extends Wizard implements IRemoteUIConnectionWizard {
+
+ private final Shell fShell;
+ private final JSchConnectionPage fPage;
+
+ public JSchConnectionWizard(Shell shell, IRemoteConnectionType connectionType) {
+ fShell = shell;
+ fPage = new JSchConnectionPage(connectionType);
+ }
+
+ @Override
+ public void addPages() {
+ super.addPages();
+ addPage(fPage);
+ }
+
+ @Override
+ public IRemoteConnectionWorkingCopy open() {
+ WizardDialog dialog = new WizardDialog(fShell, this);
+ dialog.setBlockOnOpen(true);
+ if (dialog.open() == WizardDialog.OK) {
+ return fPage.getConnection();
+ }
+ return null;
+ }
+
+ @Override
+ public IRemoteConnectionWorkingCopy getConnection() {
+ return fPage.getConnection();
+ }
+
+ @Override
+ public boolean performCancel() {
+ return true;
+ }
+
+ @Override
+ public boolean performFinish() {
+ return true;
+ }
+
+ @Override
+ public void setConnection(IRemoteConnectionWorkingCopy connection) {
+ fPage.setConnection(connection);
+ }
+
+ @Override
+ public void setConnectionName(String name) {
+ fPage.setConnectionName(name);
+ }
+
+ @Override
+ public void setInvalidConnectionNames(Set<String> names) {
+ fPage.setInvalidConnectionNames(names);
+ }
+
+}
diff --git a/remote/org.eclipse.remote.proxy-feature/.project b/remote/org.eclipse.remote.proxy-feature/.project
new file mode 100644
index 00000000000..144e9faeaef
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy-feature/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.remote.proxy-feature</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.pde.FeatureBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.FeatureNature</nature>
+ </natures>
+</projectDescription>
diff --git a/remote/org.eclipse.remote.proxy-feature/.settings/org.eclipse.core.resources.prefs b/remote/org.eclipse.remote.proxy-feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy-feature/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/remote/org.eclipse.remote.proxy-feature/build.properties b/remote/org.eclipse.remote.proxy-feature/build.properties
new file mode 100644
index 00000000000..90b78ae6f71
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy-feature/build.properties
@@ -0,0 +1,4 @@
+bin.includes = feature.xml,\
+ feature.properties,\
+ eclipse_update_120.jpg,\
+ epl-v20.html
diff --git a/remote/org.eclipse.remote.proxy-feature/eclipse_update_120.jpg b/remote/org.eclipse.remote.proxy-feature/eclipse_update_120.jpg
new file mode 100644
index 00000000000..bfdf708ad61
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy-feature/eclipse_update_120.jpg
Binary files differ
diff --git a/remote/org.eclipse.remote.proxy-feature/epl-v20.html b/remote/org.eclipse.remote.proxy-feature/epl-v20.html
new file mode 100644
index 00000000000..008b8018db8
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy-feature/epl-v20.html
@@ -0,0 +1,189 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+ <h2>Eclipse Foundation Software User Agreement</h2>
+ <p>November 22, 2017</p>
+
+ <h3>Usage Of Content</h3>
+
+ <p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION,
+ INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+ (COLLECTIVELY &quot;CONTENT&quot;). USE OF THE CONTENT IS GOVERNED BY
+ THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+ CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+ BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS
+ GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY
+ APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+ BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS
+ AGREEMENT AND THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+ AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT
+ USE THE CONTENT.</p>
+
+ <h3>Applicable Licenses</h3>
+
+ <p>
+ Unless otherwise indicated, all Content made available by the Eclipse
+ Foundation is provided to you under the terms and conditions of the
+ Eclipse Public License Version 2.0 (&quot;EPL&quot;). A copy of the
+ EPL is provided with this Content and is also available at <a
+ href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>Content includes, but is not limited to, source code, object
+ code, documentation and other files maintained in the Eclipse
+ Foundation source code repository (&quot;Repository&quot;) in software
+ modules (&quot;Modules&quot;) and made available as downloadable
+ archives (&quot;Downloads&quot;).</p>
+
+ <ul>
+ <li>Content may be structured and packaged into modules to
+ facilitate delivering, extending, and upgrading the Content. Typical
+ modules may include plug-ins (&quot;Plug-ins&quot;), plug-in
+ fragments (&quot;Fragments&quot;), and features
+ (&quot;Features&quot;).</li>
+ <li>Each Plug-in or Fragment may be packaged as a sub-directory
+ or JAR (Java&trade; ARchive) in a directory named
+ &quot;plugins&quot;.</li>
+ <li>A Feature is a bundle of one or more Plug-ins and/or
+ Fragments and associated material. Each Feature may be packaged as a
+ sub-directory in a directory named &quot;features&quot;. Within a
+ Feature, files named &quot;feature.xml&quot; may contain a list of
+ the names and version numbers of the Plug-ins and/or Fragments
+ associated with that Feature.</li>
+ <li>Features may also include other Features (&quot;Included
+ Features&quot;). Within a Feature, files named
+ &quot;feature.xml&quot; may contain a list of the names and version
+ numbers of Included Features.</li>
+ </ul>
+
+ <p>The terms and conditions governing Plug-ins and Fragments should
+ be contained in files named &quot;about.html&quot;
+ (&quot;Abouts&quot;). The terms and conditions governing Features and
+ Included Features should be contained in files named
+ &quot;license.html&quot; (&quot;Feature Licenses&quot;). Abouts and
+ Feature Licenses may be located in any directory of a Download or
+ Module including, but not limited to the following locations:</p>
+
+ <ul>
+ <li>The top-level (root) directory</li>
+ <li>Plug-in and Fragment directories</li>
+ <li>Inside Plug-ins and Fragments packaged as JARs</li>
+ <li>Sub-directories of the directory named &quot;src&quot; of
+ certain Plug-ins</li>
+ <li>Feature directories</li>
+ </ul>
+
+ <p>Note: if a Feature made available by the Eclipse Foundation is
+ installed using the Provisioning Technology (as defined below), you
+ must agree to a license (&quot;Feature Update License&quot;) during
+ the installation process. If the Feature contains Included Features,
+ the Feature Update License should either provide you with the terms
+ and conditions governing the Included Features or inform you where you
+ can locate them. Feature Update Licenses may be found in the
+ &quot;license&quot; property of files named
+ &quot;feature.properties&quot; found within a Feature. Such Abouts,
+ Feature Licenses, and Feature Update Licenses contain the terms and
+ conditions (or references to such terms and conditions) that govern
+ your use of the associated Content in that directory.</p>
+
+ <p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY
+ REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND
+ CONDITIONS. SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT
+ ARE NOT LIMITED TO):</p>
+
+ <ul>
+ <li>Eclipse Public License Version 1.0 (available at <a
+ href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>)
+ </li>
+ <li>Eclipse Distribution License Version 1.0 (available at <a
+ href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)
+ </li>
+ <li>Common Public License Version 1.0 (available at <a
+ href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)
+ </li>
+ <li>Apache Software License 1.1 (available at <a
+ href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)
+ </li>
+ <li>Apache Software License 2.0 (available at <a
+ href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)
+ </li>
+ <li>Mozilla Public License Version 1.1 (available at <a
+ href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)
+ </li>
+ </ul>
+
+ <p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND
+ CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License,
+ or Feature Update License is provided, please contact the Eclipse
+ Foundation to determine what terms and conditions govern that
+ particular Content.</p>
+
+
+ <h3>Use of Provisioning Technology</h3>
+
+ <p>
+ The Eclipse Foundation makes available provisioning software, examples
+ of which include, but are not limited to, p2 and the Eclipse Update
+ Manager (&quot;Provisioning Technology&quot;) for the purpose of
+ allowing users to install software, documentation, information and/or
+ other materials (collectively &quot;Installable Software&quot;). This
+ capability is provided with the intent of allowing such users to
+ install, extend and update Eclipse-based products. Information about
+ packaging Installable Software is available at <a
+ href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+ (&quot;Specification&quot;).
+ </p>
+
+ <p>You may use Provisioning Technology to allow other parties to
+ install Installable Software. You shall be responsible for enabling
+ the applicable license agreements relating to the Installable Software
+ to be presented to, and accepted by, the users of the Provisioning
+ Technology in accordance with the Specification. By using Provisioning
+ Technology in such a manner and making it available in accordance with
+ the Specification, you further acknowledge your agreement to, and the
+ acquisition of all necessary rights to permit the following:</p>
+
+ <ol>
+ <li>A series of actions may occur (&quot;Provisioning
+ Process&quot;) in which a user may execute the Provisioning
+ Technology on a machine (&quot;Target Machine&quot;) with the intent
+ of installing, extending or updating the functionality of an
+ Eclipse-based product.</li>
+ <li>During the Provisioning Process, the Provisioning Technology
+ may cause third party Installable Software or a portion thereof to be
+ accessed and copied to the Target Machine.</li>
+ <li>Pursuant to the Specification, you will provide to the user
+ the terms and conditions that govern the use of the Installable
+ Software (&quot;Installable Software Agreement&quot;) and such
+ Installable Software Agreement shall be accessed from the Target
+ Machine in accordance with the Specification. Such Installable
+ Software Agreement must inform the user of the terms and conditions
+ that govern the Installable Software and must solicit acceptance by
+ the end user in the manner prescribed in such Installable Software
+ Agreement. Upon such indication of agreement by the user, the
+ provisioning Technology will complete installation of the Installable
+ Software.</li>
+ </ol>
+
+ <h3>Cryptography</h3>
+
+ <p>Content may contain encryption software. The country in which
+ you are currently may have restrictions on the import, possession, and
+ use, and/or re-export to another country, of encryption software.
+ BEFORE using any encryption software, please check the country's laws,
+ regulations and policies concerning the import, possession, or use,
+ and re-export of encryption software, to see if this is permitted.</p>
+
+ <p>
+ <small>Java and all Java-based trademarks are trademarks of
+ Oracle Corporation in the United States, other countries, or both.</small>
+ </p>
+</body>
+</html>
diff --git a/remote/org.eclipse.remote.proxy-feature/feature.properties b/remote/org.eclipse.remote.proxy-feature/feature.properties
new file mode 100644
index 00000000000..3ac43a6c5f1
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy-feature/feature.properties
@@ -0,0 +1,28 @@
+#################################################################################
+# Copyright (c) 2016 Oak Ridge National Laborator and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#################################################################################
+
+# "featureName" property - name of the feature
+featureName=Remote Services Proxy
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse CDT
+
+# "description" property - description of the feature
+description=Provides a proxy for the remote services framework
+
+# copyright
+copyright=\
+Copyright (c) 2016 Oak Ridge National Laboratory and others.\n\
+This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License 2.0\n\
+which accompanies this distribution, and is available at\n\
+https://www.eclipse.org/legal/epl-2.0/\n
+
diff --git a/remote/org.eclipse.remote.proxy-feature/feature.xml b/remote/org.eclipse.remote.proxy-feature/feature.xml
new file mode 100644
index 00000000000..f6a269ebf23
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy-feature/feature.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+ id="org.eclipse.remote.proxy"
+ label="%featureName"
+ version="10.7.0.qualifier"
+ provider-name="%providerName"
+ plugin="org.eclipse.remote.proxy.ui"
+ license-feature="org.eclipse.license"
+ license-feature-version="0.0.0">
+
+ <description url="http://eclipse.org/ptp">
+ %description
+ </description>
+
+ <copyright>
+ %copyright
+ </copyright>
+
+ <license url="%licenseURL">
+ %license
+ </license>
+
+ <plugin
+ id="org.eclipse.remote.proxy.core"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.remote.proxy.server.core"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.remote.proxy.server.linux.x86_64"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"/>
+
+ <plugin
+ id="org.eclipse.remote.proxy.ui"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.remote.proxy.server.macosx.x86_64"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"/>
+
+ <plugin
+ id="org.eclipse.remote.proxy.protocol.core"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.remote.proxy.server.linux.ppc64le"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"/>
+
+</feature>
diff --git a/remote/org.eclipse.remote.proxy.core/.classpath b/remote/org.eclipse.remote.proxy.core/.classpath
new file mode 100644
index 00000000000..e801ebfb468
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.core/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/remote/org.eclipse.remote.proxy.core/.project b/remote/org.eclipse.remote.proxy.core/.project
new file mode 100644
index 00000000000..a6208317c9b
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.core/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.remote.proxy.core</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+ </natures>
+</projectDescription>
diff --git a/remote/org.eclipse.remote.proxy.core/.settings/org.eclipse.core.resources.prefs b/remote/org.eclipse.remote.proxy.core/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.core/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/remote/org.eclipse.remote.proxy.core/.settings/org.eclipse.jdt.core.prefs b/remote/org.eclipse.remote.proxy.core/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..e3a8104f9ca
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.core/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/remote/org.eclipse.remote.proxy.core/.settings/org.eclipse.jdt.launching.prefs b/remote/org.eclipse.remote.proxy.core/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 00000000000..f8a131b56e0
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.core/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_COMPILER_COMPLIANCE_DOES_NOT_MATCH_JRE=warning
+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=warning
diff --git a/remote/org.eclipse.remote.proxy.core/.settings/org.eclipse.jdt.ui.prefs b/remote/org.eclipse.remote.proxy.core/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.core/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/remote/org.eclipse.remote.proxy.core/.settings/org.eclipse.pde.api.tools.prefs b/remote/org.eclipse.remote.proxy.core/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 00000000000..ec9fbf321d0
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.core/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,184 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITH_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_FIELD=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERCLASS_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_CHANGED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENTS=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETERS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Error
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Warning
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+MISSING_EE_DESCRIPTIONS=Warning
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=false
+changed_execution_env=Error
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+incompatible_api_component_version_report_major_without_breaking_change=Warning
+incompatible_api_component_version_report_minor_without_api_change=Warning
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/remote/org.eclipse.remote.proxy.core/.settings/org.eclipse.pde.prefs b/remote/org.eclipse.remote.proxy.core/.settings/org.eclipse.pde.prefs
new file mode 100644
index 00000000000..d2dc703ba9e
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.core/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,35 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=2
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=2
+compilers.p.missing-version-export-package=2
+compilers.p.missing-version-import-package=2
+compilers.p.missing-version-require-bundle=2
+compilers.p.no-required-att=0
+compilers.p.no.automatic.module=1
+compilers.p.not-externalized-att=1
+compilers.p.service.component.without.lazyactivation=1
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/remote/org.eclipse.remote.proxy.core/META-INF/MANIFEST.MF b/remote/org.eclipse.remote.proxy.core/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..bc6047ff5d1
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.core/META-INF/MANIFEST.MF
@@ -0,0 +1,27 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.remote.proxy.core;singleton:=true
+Bundle-Version: 1.0.200.qualifier
+Bundle-Activator: org.eclipse.remote.internal.proxy.core.Activator
+Bundle-Vendor: %pluginProvider
+Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.remote.internal.proxy.core;x-friends:="org.eclipse.remote.proxy.ui",
+ org.eclipse.remote.internal.proxy.core.commands;x-friends:="org.eclipse.remote.proxy.ui",
+ org.eclipse.remote.internal.proxy.core.messages;x-friends:="org.eclipse.remote.proxy.ui"
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Import-Package: com.jcraft.jsch,
+ org.eclipse.core.filesystem,
+ org.eclipse.core.filesystem.provider,
+ org.eclipse.core.runtime,
+ org.eclipse.core.runtime.jobs,
+ org.eclipse.jsch.core,
+ org.eclipse.osgi.util,
+ org.eclipse.remote.core,
+ org.eclipse.remote.core.exception,
+ org.eclipse.remote.internal.core,
+ org.eclipse.remote.internal.jsch.core,
+ org.eclipse.remote.proxy.protocol.core,
+ org.eclipse.remote.proxy.protocol.core.exceptions,
+ org.osgi.framework
diff --git a/remote/org.eclipse.remote.proxy.core/about.html b/remote/org.eclipse.remote.proxy.core/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.core/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/remote/org.eclipse.remote.proxy.core/bootstrap.sh b/remote/org.eclipse.remote.proxy.core/bootstrap.sh
new file mode 100755
index 00000000000..976a6352a98
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.core/bootstrap.sh
@@ -0,0 +1,125 @@
+installdir="$HOME/.eclipsesettings"
+if test ! -d $installdir; then
+ mkdir $installdir
+ if test ! -d $installdir; then
+ echo fail:cannot create $installdir
+ exit 1
+ fi
+fi
+cat > $installdir/bootstrap.sh <<-\EOF
+#!/bin/sh
+installdir="$HOME/.eclipsesettings"
+proxytmp=$installdir/proxy.b64
+success=false
+
+cleanup() {
+ rm -f $installdir/bootstrap.sh
+}
+
+trap 'cleanup' EXIT
+
+parent_is_not_orphan () {
+ parent=`ps -ef|awk '$2=='$$'{print $3}'`
+ let parent=$parent+0
+ if [[ $parent -eq 1 ]]; then
+ return 1
+ fi
+ return 0
+}
+
+do_check() {
+ java_vers=`java -version 2>&1`
+ case "$java_vers" in
+ *"not found")
+ echo "fail:could not find a valid java installation"
+ return
+ ;;
+ esac
+ major=`expr "$java_vers" : ".* version \"\([0-9]*\)\.[0-9]*.*\""`
+ minor=`expr "$java_vers" : ".* version \"[0-9]*\.\([0-9]*\).*\""`
+ if test "$major" -ge 2 -o "$minor" -ge 8; then
+ :
+ else
+ echo "fail:invalid java version $major.$minor; must be >= 1.8"
+ return
+ fi
+ case "`uname`" in
+ Linux)
+ osname="linux";
+ osarch=`uname -m`;
+ proxydir=$installdir/proxy;
+ plugins=$proxydir/plugins;;
+ Darwin)
+ osname="macosx";
+ osarch=`uname -m`;
+ proxydir=$installdir/Proxy.app;
+ plugins=$proxydir/Contents/Eclipse/plugins;;
+ *)
+ echo fail:system not supported;
+ return;;
+ esac
+ proxy=not_found
+ if test -d $proxydir; then
+ bundle="org.eclipse.remote.proxy.server.core_$1.jar"
+ if test -f $plugins/$bundle; then
+ proxy=found
+ else
+ mv $proxydir $proxydir.pre_$1
+ fi
+ fi
+ echo ok:$proxy/$osname/$osarch
+}
+
+do_download() {
+ dd of=$proxytmp ibs=680 count=$1
+ IFS= read -r last
+ echo "$last" >> $proxytmp
+ base64 --decode < $proxytmp | (cd $installdir && tar zxvf -) > /dev/null 2>&1
+ if test $? -eq 0; then
+ echo ok
+ else
+ echo fail:download failed
+ fi
+}
+
+#
+# Start java in background so we can clean up after connection is dropped. The only way to tell if this
+# has happened is to poll if ppid has changed to 1 (i.e. we no longer have a controlling terminal)
+#
+start_server() {
+ # enable debugoptions in order to attach a debugger
+ #debugoptions="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=1044,quiet=y"
+
+ # use globbing to find launcher version
+ java -cp $plugins/org.eclipse.equinox.launcher_1.*.jar \
+ $debugoptions \
+ org.eclipse.equinox.launcher.Main \
+ -application org.eclipse.remote.proxy.server.core.application \
+ -noExit 0<&0 &
+
+ pid=$!
+
+ trap 'kill $pid; exit' HUP INT TERM
+
+ while parent_is_not_orphan; do
+ sleep 10
+ done
+
+ kill $pid
+}
+
+echo running
+
+while read line arg; do
+ case $line in
+ check) do_check $arg;;
+ download) do_download $arg;;
+ start) start_server;;
+ exit) break;;
+ *) echo fail:unrecognized command:$line; exit 1;;
+ esac
+done
+exit 0
+EOF
+chmod 755 $installdir/bootstrap.sh
+exec $installdir/bootstrap.sh
diff --git a/remote/org.eclipse.remote.proxy.core/build.properties b/remote/org.eclipse.remote.proxy.core/build.properties
new file mode 100644
index 00000000000..9eb007f8285
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.core/build.properties
@@ -0,0 +1,11 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ plugin.properties,\
+ about.html,\
+ bootstrap.sh
+src.includes = about.html
+
+
diff --git a/remote/org.eclipse.remote.proxy.core/plugin.properties b/remote/org.eclipse.remote.proxy.core/plugin.properties
new file mode 100644
index 00000000000..7ac8be930eb
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.core/plugin.properties
@@ -0,0 +1,14 @@
+###############################################################################
+# Copyright (c) 2016 Oak Ridge National Laboratory and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+###############################################################################
+
+pluginName=Remote Proxy Support
+pluginProvider=Eclipse PTP
diff --git a/remote/org.eclipse.remote.proxy.core/plugin.xml b/remote/org.eclipse.remote.proxy.core/plugin.xml
new file mode 100644
index 00000000000..2de33ec7138
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.core/plugin.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+ <extension
+ point="org.eclipse.remote.core.remoteServices">
+ <connectionType
+ id="org.eclipse.remote.Proxy"
+ name="PROXY"
+ scheme="proxy">
+ </connectionType>
+ <connectionService
+ connectionTypeId="org.eclipse.remote.Proxy"
+ factory="org.eclipse.remote.internal.proxy.core.ProxyConnection$Factory"
+ service="org.eclipse.remote.core.IRemoteConnectionControlService">
+ </connectionService>
+ <connectionService
+ connectionTypeId="org.eclipse.remote.Proxy"
+ factory="org.eclipse.remote.internal.proxy.core.ProxyConnection$Factory"
+ service="org.eclipse.remote.core.IRemoteConnectionPropertyService">
+ </connectionService>
+ <connectionService
+ connectionTypeId="org.eclipse.remote.Proxy"
+ factory="org.eclipse.remote.internal.proxy.core.ProxyConnection$Factory"
+ service="org.eclipse.remote.core.IRemoteProcessService">
+ </connectionService>
+ <connectionService
+ connectionTypeId="org.eclipse.remote.Proxy"
+ factory="org.eclipse.remote.internal.proxy.core.ProxyFileManager$Factory"
+ service="org.eclipse.remote.core.IRemoteFileService">
+ </connectionService>
+ <connectionService
+ connectionTypeId="org.eclipse.remote.Proxy"
+ factory="org.eclipse.remote.internal.proxy.core.ProxyConnection$Factory"
+ service="org.eclipse.remote.core.IRemoteConnectionHostService">
+ </connectionService>
+ <connectionService
+ connectionTypeId="org.eclipse.remote.Proxy"
+ factory="org.eclipse.remote.internal.proxy.core.ProxyConnection$Factory"
+ service="org.eclipse.remote.internal.proxy.core.ProxyConnection">
+ </connectionService>
+ <connectionService
+ connectionTypeId="org.eclipse.remote.Proxy"
+ factory="org.eclipse.remote.internal.proxy.core.ProxyConnection$Factory"
+ service="org.eclipse.remote.core.IRemoteCommandShellService">
+ </connectionService>
+ <processService
+ connectionTypeId="org.eclipse.remote.Proxy"
+ factory="org.eclipse.remote.internal.proxy.core.ProxyProcess$Factory"
+ service="org.eclipse.remote.core.IRemoteProcessControlService">
+ </processService>
+ <processService
+ connectionTypeId="org.eclipse.remote.Proxy"
+ factory="org.eclipse.remote.internal.proxy.core.ProxyProcess$Factory"
+ service="org.eclipse.remote.core.IRemoteProcessSignalService">
+ </processService>
+ <processService
+ connectionTypeId="org.eclipse.remote.Proxy"
+ factory="org.eclipse.remote.internal.proxy.core.ProxyProcess$Factory"
+ service="org.eclipse.remote.core.IRemoteProcessTerminalService">
+ </processService>
+ <processService
+ connectionTypeId="org.eclipse.remote.Proxy"
+ factory="org.eclipse.remote.internal.proxy.core.ProxyProcess$Factory"
+ service="org.eclipse.remote.internal.proxy.core.ProxyProcess">
+ </processService>
+ </extension>
+ <extension
+ id="org.eclipse.remote.proxy.filesystem"
+ point="org.eclipse.core.filesystem.filesystems">
+ <filesystem
+ scheme="proxy">
+ <run
+ class="org.eclipse.remote.internal.proxy.core.ProxyFileSystem">
+ </run>
+ </filesystem>
+ </extension>
+</plugin>
diff --git a/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/Activator.java b/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/Activator.java
new file mode 100644
index 00000000000..ec8cce8cd81
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/Activator.java
@@ -0,0 +1,101 @@
+package org.eclipse.remote.internal.proxy.core;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Plugin;
+import org.eclipse.core.runtime.Status;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends Plugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.eclipse.remote.proxy.core"; //$NON-NLS-1$
+
+ // The shared instance
+ private static Activator plugin;
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+ /**
+ * Get unique identifier
+ *
+ * @return
+ * @since 5.0
+ */
+ public static String getUniqueIdentifier() {
+ if (getDefault() == null) {
+ return PLUGIN_ID;
+ }
+ return getDefault().getBundle().getSymbolicName();
+ }
+
+ /**
+ * Logs the specified status with this plug-in's log.
+ *
+ * @param status
+ * status to log
+ */
+ public static void log(IStatus status) {
+ getDefault().getLog().log(status);
+ }
+
+ /**
+ * Logs an internal error with the specified message.
+ *
+ * @param message
+ * the error message to log
+ */
+ public static void log(String message) {
+ log(new Status(IStatus.ERROR, getUniqueIdentifier(), IStatus.ERROR, message, null));
+ }
+
+ /**
+ * Logs an internal error with the specified throwable
+ *
+ * @param e
+ * the exception to be logged
+ */
+ public static void log(Throwable e) {
+ log(new Status(IStatus.ERROR, getUniqueIdentifier(), IStatus.ERROR, e.getMessage(), e));
+ }
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ /**
+ * Return the OSGi service with the given service interface.
+ *
+ * @param service service interface
+ * @return the specified service or null if it's not registered
+ */
+ public static <T> T getService(Class<T> service) {
+ BundleContext context = plugin.getBundle().getBundleContext();
+ ServiceReference<T> ref = context.getServiceReference(service);
+ return ref != null ? context.getService(ref) : null;
+ }
+
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+}
diff --git a/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/ProxyConnection.java b/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/ProxyConnection.java
new file mode 100644
index 00000000000..f1d5e32b769
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/ProxyConnection.java
@@ -0,0 +1,440 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Oak Ridge National Laboratory and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.remote.internal.proxy.core;
+
+import java.io.BufferedWriter;
+import java.io.ByteArrayOutputStream;
+import java.io.DataInputStream;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.SubMonitor;
+import org.eclipse.remote.core.IRemoteCommandShellService;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteConnectionChangeListener;
+import org.eclipse.remote.core.IRemoteConnectionControlService;
+import org.eclipse.remote.core.IRemoteConnectionHostService;
+import org.eclipse.remote.core.IRemoteConnectionPropertyService;
+import org.eclipse.remote.core.IRemoteConnectionWorkingCopy;
+import org.eclipse.remote.core.IRemoteProcess;
+import org.eclipse.remote.core.IRemoteProcessBuilder;
+import org.eclipse.remote.core.IRemoteProcessService;
+import org.eclipse.remote.core.RemoteConnectionChangeEvent;
+import org.eclipse.remote.core.RemoteServicesUtils;
+import org.eclipse.remote.core.exception.RemoteConnectionException;
+import org.eclipse.remote.internal.proxy.core.commands.ExecCommand;
+import org.eclipse.remote.internal.proxy.core.commands.GetCwdCommand;
+import org.eclipse.remote.internal.proxy.core.commands.GetEnvCommand;
+import org.eclipse.remote.internal.proxy.core.commands.GetPropertiesCommand;
+import org.eclipse.remote.internal.proxy.core.messages.Messages;
+import org.eclipse.remote.proxy.protocol.core.StreamChannel;
+import org.eclipse.remote.proxy.protocol.core.StreamChannelManager;
+import org.eclipse.remote.proxy.protocol.core.exceptions.ProxyException;
+
+import com.jcraft.jsch.ChannelShell;
+
+/**
+ * @since 5.0
+ */
+public class ProxyConnection
+ implements IRemoteConnectionControlService, IRemoteConnectionChangeListener, IRemoteProcessService,
+ IRemoteCommandShellService, IRemoteConnectionHostService, IRemoteConnectionPropertyService {
+ // Connection Type ID
+ public static final String JSCH_ID = "org.eclipse.remote.Proxy"; //$NON-NLS-1$
+
+ public static final int DEFAULT_PORT = 22;
+ public static final int DEFAULT_TIMEOUT = 0;
+ public static final boolean DEFAULT_USE_PASSWORD = false;
+ public static final boolean DEFAULT_USE_DEFAULT_SERVER = true;
+ public static final String DEFAULT_SERVER_COMMAND = "sh .eclipsesettings/proxy.sh"; //$NON-NLS-1$
+
+ public static final String HOSTNAME_ATTR = "PROXY_HOSTNAME__ATTR"; //$NON-NLS-1$
+ public static final String USERNAME_ATTR = "PROXY_USERNAME_ATTR"; //$NON-NLS-1$
+ public static final String PASSWORD_ATTR = "PROXY_PASSWORD_ATTR"; //$NON-NLS-1$
+ public static final String PORT_ATTR = "PROXY_PORT_ATTR"; //$NON-NLS-1$
+ public static final String USE_PASSWORD_ATTR = "PROXY_USE_PASSWORD_ATTR"; //$NON-NLS-1$
+ public static final String PASSPHRASE_ATTR = "PROXY_PASSPHRASE_ATTR"; //$NON-NLS-1$
+ public static final String TIMEOUT_ATTR = "PROXY_TIMEOUT_ATTR"; //$NON-NLS-1$
+ public static final String SERVER_COMMAND_ATTR = "PROXY_SERVER_COMMAND_ATTR"; //$NON-NLS-1$
+ public static final String USE_DEFAULT_SERVER_ATTR = "PROXY_USE_DEFAULT_SERVER_ATTR"; //$NON-NLS-1$
+
+ private String fWorkingDir;
+ private StreamChannelManager channelMux;
+ private StreamChannel commandChannel;
+ private boolean isOpen;
+
+ private final IRemoteConnection fRemoteConnection;
+
+ private final Map<String, String> fEnv = new HashMap<>();
+ private final Map<String, String> fProperties = new HashMap<>();
+
+ private static final Map<IRemoteConnection, ProxyConnection> connectionMap = new HashMap<>();
+
+ public ProxyConnection(IRemoteConnection connection) {
+ fRemoteConnection = connection;
+ connection.addConnectionChangeListener(this);
+ }
+
+ @Override
+ public void connectionChanged(RemoteConnectionChangeEvent event) {
+ if (event.getType() == RemoteConnectionChangeEvent.CONNECTION_REMOVED) {
+ synchronized (connectionMap) {
+ connectionMap.remove(event.getConnection());
+ }
+ }
+ }
+
+ @Override
+ public IRemoteConnection getRemoteConnection() {
+ return fRemoteConnection;
+ }
+
+ public static class Factory implements IRemoteConnection.Service.Factory {
+ @Override
+ @SuppressWarnings("unchecked")
+ public <T extends IRemoteConnection.Service> T getService(IRemoteConnection connection, Class<T> service) {
+ // This little trick creates an instance of this class for a connection
+ // then for each interface it implements, it returns the same object.
+ // This works because the connection caches the service so only one gets created.
+ // As a side effect, it makes this class a service too which can be used
+ // by the this plug-in
+ if (ProxyConnection.class.equals(service)) {
+ synchronized (connectionMap) {
+ ProxyConnection conn = connectionMap.get(connection);
+ if (conn == null) {
+ conn = new ProxyConnection(connection);
+ connectionMap.put(connection, conn);
+ }
+ return (T) conn;
+ }
+ } else if (IRemoteConnectionControlService.class.equals(service)
+ || IRemoteConnectionPropertyService.class.equals(service)
+ || IRemoteConnectionHostService.class.equals(service) || IRemoteProcessService.class.equals(service)
+ || IRemoteCommandShellService.class.equals(service)
+ || IRemoteConnectionPropertyService.class.equals(service)) {
+ return (T) connection.getService(ProxyConnection.class);
+ } else {
+ return null;
+ }
+ }
+ }
+
+ @Override
+ public synchronized void close() {
+ if (isOpen) {
+ channelMux.shutdown();
+ isOpen = false;
+ fRemoteConnection.fireConnectionChangeEvent(RemoteConnectionChangeEvent.CONNECTION_CLOSED);
+ }
+ }
+
+ @Override
+ public boolean isOpen() {
+ return isOpen;
+ }
+
+ @Override
+ public void open(IProgressMonitor monitor) throws RemoteConnectionException {
+ SubMonitor subMon = SubMonitor.convert(monitor, Messages.ProxyConnection_0, 20);
+ if (!isOpen) {
+ ProxyConnectionBootstrap bootstrap = new ProxyConnectionBootstrap();
+ channelMux = bootstrap.run(getRemoteConnection(), subMon.newChild(10));
+ new Thread(channelMux, "multiplexer").start(); //$NON-NLS-1$
+ try {
+ commandChannel = channelMux.openChannel();
+ initialize(subMon.newChild(10));
+ } catch (RemoteConnectionException | IOException e) {
+ try {
+ commandChannel.close();
+ } catch (IOException e1) {
+ // Ignore
+ }
+ channelMux.shutdown();
+ throw new RemoteConnectionException(e.getMessage());
+ }
+
+ isOpen = true;
+ fRemoteConnection.fireConnectionChangeEvent(RemoteConnectionChangeEvent.CONNECTION_OPENED);
+ }
+ }
+
+ private void initialize(IProgressMonitor monitor) throws RemoteConnectionException {
+ SubMonitor subMon = SubMonitor.convert(monitor, 30);
+ fWorkingDir = getCwd(subMon.newChild(10));
+ if (subMon.isCanceled()) {
+ throw new RemoteConnectionException(Messages.ProxyConnection_2);
+ }
+ fEnv.putAll(loadEnv(subMon.newChild(10)));
+ if (subMon.isCanceled()) {
+ throw new RemoteConnectionException(Messages.ProxyConnection_2);
+ }
+ fProperties.putAll(loadProperties(subMon.newChild(10)));
+ if (subMon.isCanceled()) {
+ throw new RemoteConnectionException(Messages.ProxyConnection_2);
+ }
+ }
+
+ private String getCwd(IProgressMonitor monitor) throws RemoteConnectionException {
+ try {
+ GetCwdCommand cmd = new GetCwdCommand(this);
+ return cmd.getResult(monitor);
+ } catch (ProxyException e) {
+ throw new RemoteConnectionException(e.getMessage());
+ }
+ }
+
+ private Map<String, String> loadEnv(IProgressMonitor monitor) throws RemoteConnectionException {
+ try {
+ GetEnvCommand cmd = new GetEnvCommand(this);
+ return cmd.getResult(monitor);
+ } catch (ProxyException e) {
+ throw new RemoteConnectionException(e.getMessage());
+ }
+ }
+
+ private Map<String, String> loadProperties(IProgressMonitor monitor) throws RemoteConnectionException {
+ try {
+ GetPropertiesCommand cmd = new GetPropertiesCommand(this);
+ return cmd.getResult(monitor);
+ } catch (ProxyException e) {
+ throw new RemoteConnectionException(e.getMessage());
+ }
+ }
+
+ @Override
+ public Map<String, String> getEnv() {
+ return Collections.unmodifiableMap(fEnv);
+ }
+
+ public StreamChannel getCommandChannel() {
+ return commandChannel;
+ }
+
+ public StreamChannel openChannel() throws IOException {
+ return channelMux.openChannel();
+ }
+
+ private StringBuffer stdout = new StringBuffer();
+ private StringBuffer stderr = new StringBuffer();
+
+ @SuppressWarnings("unused")
+ private String executeSshCommand(ChannelShell shell, String command) throws RemoteConnectionException {
+ try {
+ ByteArrayOutputStream stream = new ByteArrayOutputStream();
+ ByteArrayOutputStream err = new ByteArrayOutputStream();
+ shell.setOutputStream(stream);
+ shell.setExtOutputStream(err);
+ BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(shell.getOutputStream()));
+ writer.write(command);
+ writer.flush();
+ if (err.size() > 0) {
+ throw new RemoteConnectionException(err.toString());
+ }
+ return stream.toString();
+ } catch (IOException e) {
+ throw new RemoteConnectionException(e.getMessage());
+ }
+ }
+
+ @SuppressWarnings("unused")
+ private String executeCommand(List<String> command, IProgressMonitor monitor) throws ProxyException {
+ try {
+ final StreamChannel chanA = channelMux.openChannel();
+ final StreamChannel chanB = channelMux.openChannel();
+ final StreamChannel chanC = channelMux.openChannel();
+ new Thread("cmd stdin reader") { //$NON-NLS-1$
+ @Override
+ public void run() {
+ byte[] buf = new byte[1024];
+ int n;
+ try {
+ while ((n = chanA.getInputStream().read(buf)) >= 0) {
+ stdout.append(new String(buf, 0, n));
+ }
+ } catch (IOException e) {
+ // Finish
+ }
+ }
+ }.start();
+ new Thread("cmd stderr reader") { //$NON-NLS-1$
+ @Override
+ public void run() {
+ byte[] buf = new byte[1024];
+ int n;
+ try {
+ while ((n = chanB.getInputStream().read(buf)) >= 0) {
+ stderr.append(new String(buf, 0, n));
+ }
+ } catch (IOException e) {
+ // Finish
+ }
+ }
+ }.start();
+ ExecCommand cmd = new ExecCommand(this, command, getEnv(), getWorkingDirectory(), false, false,
+ chanA.getId(), chanB.getId(), chanC.getId());
+ cmd.getResult(monitor);
+ DataInputStream status = new DataInputStream(chanC.getInputStream());
+ int stat = status.readInt();
+ if (stat == 0) {
+ return stdout.toString();
+ }
+ return stderr.toString();
+ } catch (IOException e) {
+ throw new ProxyException(e.getMessage());
+ }
+ }
+
+ @Override
+ public String getEnv(String name) {
+ return getEnv().get(name);
+ }
+
+ @Override
+ public IRemoteProcessBuilder getProcessBuilder(List<String> command) {
+ return new ProxyProcessBuilder(this, command);
+ }
+
+ @Override
+ public IRemoteProcessBuilder getProcessBuilder(String... command) {
+ return new ProxyProcessBuilder(this, command);
+ }
+
+ @Override
+ public String getWorkingDirectory() {
+ return fWorkingDir;
+ }
+
+ @Override
+ public void setWorkingDirectory(String path) {
+ if (RemoteServicesUtils.posixPath(path).isAbsolute()) {
+ fWorkingDir = path;
+ }
+ }
+
+ @Override
+ public IRemoteProcess getCommandShell(int flags) throws IOException {
+ return new ProxyProcessBuilder(this).start(flags);
+ }
+
+ @Override
+ public String getHostname() {
+ return fRemoteConnection.getAttribute(HOSTNAME_ATTR);
+ }
+
+ @Override
+ public int getPort() {
+ String portStr = fRemoteConnection.getAttribute(PORT_ATTR);
+ return !portStr.isEmpty() ? Integer.parseInt(portStr) : DEFAULT_PORT;
+ }
+
+ @Override
+ public int getTimeout() {
+ String portStr = fRemoteConnection.getAttribute(TIMEOUT_ATTR);
+ return !portStr.isEmpty() ? Integer.parseInt(portStr) : DEFAULT_TIMEOUT;
+ }
+
+ @Override
+ public String getPassphrase() {
+ return fRemoteConnection.getSecureAttribute(PASSPHRASE_ATTR);
+ }
+
+ @Override
+ public String getPassword() {
+ return fRemoteConnection.getSecureAttribute(PASSWORD_ATTR);
+ }
+
+ @Override
+ public boolean usePassword() {
+ String str = fRemoteConnection.getAttribute(USE_PASSWORD_ATTR);
+ return !str.isEmpty() ? Boolean.parseBoolean(str) : DEFAULT_USE_PASSWORD;
+ }
+
+ @Override
+ public String getUsername() {
+ return fRemoteConnection.getAttribute(USERNAME_ATTR);
+ }
+
+ @Override
+ public boolean useLoginShell() {
+ return false;
+ }
+
+ @Override
+ public void setHostname(String hostname) {
+ if (fRemoteConnection instanceof IRemoteConnectionWorkingCopy) {
+ IRemoteConnectionWorkingCopy wc = (IRemoteConnectionWorkingCopy) fRemoteConnection;
+ wc.setAttribute(HOSTNAME_ATTR, hostname);
+ }
+ }
+
+ @Override
+ public void setPassphrase(String passphrase) {
+ if (fRemoteConnection instanceof IRemoteConnectionWorkingCopy) {
+ IRemoteConnectionWorkingCopy wc = (IRemoteConnectionWorkingCopy) fRemoteConnection;
+ wc.setSecureAttribute(PASSPHRASE_ATTR, passphrase);
+ }
+ }
+
+ @Override
+ public void setPassword(String password) {
+ if (fRemoteConnection instanceof IRemoteConnectionWorkingCopy) {
+ IRemoteConnectionWorkingCopy wc = (IRemoteConnectionWorkingCopy) fRemoteConnection;
+ wc.setSecureAttribute(PASSWORD_ATTR, password);
+ }
+ }
+
+ @Override
+ public void setPort(int port) {
+ if (fRemoteConnection instanceof IRemoteConnectionWorkingCopy) {
+ IRemoteConnectionWorkingCopy wc = (IRemoteConnectionWorkingCopy) fRemoteConnection;
+ wc.setAttribute(PORT_ATTR, Integer.toString(port));
+ }
+ }
+
+ @Override
+ public void setTimeout(int timeout) {
+ if (fRemoteConnection instanceof IRemoteConnectionWorkingCopy) {
+ IRemoteConnectionWorkingCopy wc = (IRemoteConnectionWorkingCopy) fRemoteConnection;
+ wc.setAttribute(TIMEOUT_ATTR, Integer.toString(timeout));
+ }
+ }
+
+ @Override
+ public void setUseLoginShell(boolean useLogingShell) {
+ // Not used
+ }
+
+ @Override
+ public void setUsePassword(boolean usePassword) {
+ if (fRemoteConnection instanceof IRemoteConnectionWorkingCopy) {
+ IRemoteConnectionWorkingCopy wc = (IRemoteConnectionWorkingCopy) fRemoteConnection;
+ wc.setAttribute(USE_PASSWORD_ATTR, Boolean.toString(usePassword));
+ }
+ }
+
+ @Override
+ public void setUsername(String username) {
+ if (fRemoteConnection instanceof IRemoteConnectionWorkingCopy) {
+ IRemoteConnectionWorkingCopy wc = (IRemoteConnectionWorkingCopy) fRemoteConnection;
+ wc.setAttribute(USERNAME_ATTR, username);
+ }
+ }
+
+ @Override
+ public String getProperty(String key) {
+ return fProperties.get(key);
+ }
+}
diff --git a/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/ProxyConnectionBootstrap.java b/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/ProxyConnectionBootstrap.java
new file mode 100644
index 00000000000..5644f5a96fb
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/ProxyConnectionBootstrap.java
@@ -0,0 +1,331 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Oak Ridge National Laboratory and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.remote.internal.proxy.core;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.net.URL;
+import java.util.Arrays;
+import java.util.Base64;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.SubMonitor;
+import org.eclipse.jsch.core.IJSchService;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteConnectionHostService;
+import org.eclipse.remote.core.IRemoteConnectionWorkingCopy;
+import org.eclipse.remote.core.IUserAuthenticatorService;
+import org.eclipse.remote.core.exception.RemoteConnectionException;
+import org.eclipse.remote.internal.jsch.core.JSchUserInfo;
+import org.eclipse.remote.internal.proxy.core.messages.Messages;
+import org.eclipse.remote.proxy.protocol.core.StreamChannelManager;
+import org.osgi.framework.Bundle;
+
+import com.jcraft.jsch.Channel;
+import com.jcraft.jsch.ChannelExec;
+import com.jcraft.jsch.JSchException;
+import com.jcraft.jsch.Session;
+
+public class ProxyConnectionBootstrap {
+ private final IJSchService jSchService;
+ private Session session;
+ private ChannelExec exec;
+
+ private class Context {
+ private State state;
+ private String osName;
+ private String osArch;
+ private String errorMessage;
+
+ private final SubMonitor monitor;
+ private final BufferedReader reader;
+ private final BufferedWriter writer;
+
+ public Context(BufferedReader reader, BufferedWriter writer, IProgressMonitor monitor) {
+ this.reader = reader;
+ this.writer = writer;
+ this.monitor = SubMonitor.convert(monitor);
+ setState(States.INIT);
+ }
+
+ State getState() {
+ return state;
+ }
+
+ SubMonitor getMonitor() {
+ return monitor;
+ }
+
+ void setState(State state) {
+ this.state = state;
+ }
+
+ String getOSName() {
+ return osName;
+ }
+
+ void setOSName(String osName) {
+ this.osName = osName;
+ }
+
+ String getOSArch() {
+ return osArch;
+ }
+
+ void setOSArch(String osArch) {
+ this.osArch = osArch;
+ }
+
+ void setErrorMessage(String message) {
+ this.errorMessage = message;
+ }
+
+ String getErrorMessage() {
+ return errorMessage;
+ }
+ }
+
+ private interface State {
+ /**
+ * @return true to keep processing, false to read more data.
+ */
+ boolean process(Context context) throws IOException;
+ }
+
+ private enum States implements State {
+ INIT {
+ @Override
+ public boolean process(Context context) throws IOException {
+ context.getMonitor().subTask(Messages.ProxyConnectionBootstrap_0);
+ String line = context.reader.readLine();
+ context.getMonitor().worked(1);
+ if (line.equals("running")) { //$NON-NLS-1$
+ context.setState(States.CHECK);
+ return true;
+ }
+ return false;
+ }
+ },
+ CHECK {
+ @Override
+ public boolean process(Context context) throws IOException {
+ context.getMonitor().subTask(Messages.ProxyConnectionBootstrap_1);
+ String bundleName = "org.eclipse.remote.proxy.server.core"; //$NON-NLS-1$
+ Bundle serverBundle = Platform.getBundle(bundleName);
+ if (serverBundle == null) {
+ throw new IOException(NLS.bind(Messages.ProxyConnectionBootstrap_2, bundleName));
+ }
+ context.writer.write("check " + serverBundle.getVersion() + "\n"); //$NON-NLS-1$ //$NON-NLS-2$
+ context.writer.flush();
+ String line = context.reader.readLine();
+ while (line != null) {
+ context.getMonitor().worked(2);
+ String[] parts = line.split(":"); //$NON-NLS-1$
+ switch (parts[0]) {
+ case "ok": //$NON-NLS-1$
+ String[] status = parts[1].split("/"); //$NON-NLS-1$
+ context.setOSName(status[1]);
+ context.setOSArch(status[2]);
+ context.setState(status[0].equals("found") ? States.START : States.DOWNLOAD); //$NON-NLS-1$
+ return true;
+ case "fail": //$NON-NLS-1$
+ context.setErrorMessage(parts[1]);
+ System.out.println("fail:" + parts[1]); //$NON-NLS-1$
+ return false;
+ case "debug": //$NON-NLS-1$
+ System.err.println(line);
+ break;
+ default:
+ System.err.println("Invalid response from bootstrap script: " + line); //$NON-NLS-1$
+ return false;
+ }
+ line = context.reader.readLine();
+ }
+ return false;
+ }
+ },
+ DOWNLOAD {
+ @Override
+ public boolean process(Context context) throws IOException {
+ context.getMonitor().subTask(Messages.ProxyConnectionBootstrap_3);
+ String bundleName = "org.eclipse.remote.proxy.server." + context.getOSName() + "." //$NON-NLS-1$//$NON-NLS-2$
+ + context.getOSArch();
+ Bundle serverBundle = Platform.getBundle(bundleName);
+ if (serverBundle == null) {
+ throw new IOException(NLS.bind(Messages.ProxyConnectionBootstrap_2, bundleName));
+ }
+ URL fileURL = FileLocator.find(serverBundle, new Path("proxy.server.tar.gz"), null); //$NON-NLS-1$
+ if (fileURL == null) {
+ return false;
+ }
+ File file = new File(FileLocator.toFileURL(fileURL).getFile());
+ long count = file.length() / 510;
+ context.writer.write("download " + count + "\n"); //$NON-NLS-1$ //$NON-NLS-2$
+ context.writer.flush();
+ context.getMonitor().worked(2);
+ if (downloadFile(file, context.writer, context.getMonitor().newChild(5))) {
+ String line = context.reader.readLine();
+ while (line != null) {
+ String[] parts = line.split(":"); //$NON-NLS-1$
+ switch (parts[0]) {
+ case "ok": //$NON-NLS-1$
+ context.setState(States.START);
+ return true;
+ case "fail": //$NON-NLS-1$
+ context.setErrorMessage(parts[1]);
+ System.out.println("fail:" + parts[1]); //$NON-NLS-1$
+ return false;
+ case "debug": //$NON-NLS-1$
+ System.err.println(line);
+ break;
+ default:
+ System.err.println("Invalid response from bootstrap script: " + line); //$NON-NLS-1$
+ return false;
+ }
+ line = context.reader.readLine();
+ }
+ }
+ return false;
+ }
+
+ private boolean downloadFile(File file, BufferedWriter writer, IProgressMonitor monitor) {
+ SubMonitor subMon = SubMonitor.convert(monitor, 10);
+ try {
+ Base64.Encoder encoder = Base64.getEncoder();
+ FileInputStream in = new FileInputStream(file);
+ byte[] buf = new byte[510]; // Multiple of 3
+ int n;
+ while ((n = in.read(buf)) >= 0) {
+ if (n < 510) {
+ writer.write(encoder.encodeToString(Arrays.copyOf(buf, n)) + "\n"); //$NON-NLS-1$
+ } else {
+ writer.write(encoder.encodeToString(buf));
+ }
+ subMon.setWorkRemaining(8);
+ }
+ writer.flush();
+ in.close();
+ return true;
+ } catch (IOException e) {
+ return false;
+ }
+ }
+ },
+ START {
+ @Override
+ public boolean process(Context context) throws IOException {
+ context.getMonitor().subTask(Messages.ProxyConnectionBootstrap_4);
+ context.writer.write("start\n"); //$NON-NLS-1$
+ context.writer.flush();
+ return false; // Finished
+ }
+ }
+ }
+
+ public ProxyConnectionBootstrap() {
+ jSchService = Activator.getService(IJSchService.class);
+ }
+
+ public StreamChannelManager run(IRemoteConnection connection, IProgressMonitor monitor)
+ throws RemoteConnectionException {
+ SubMonitor subMon = SubMonitor.convert(monitor, 20);
+ try {
+ final Channel chan = openChannel(connection, subMon.newChild(10));
+ BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(chan.getOutputStream()));
+ BufferedReader reader = new BufferedReader(new InputStreamReader(chan.getInputStream()));
+ subMon.beginTask(Messages.ProxyConnectionBootstrap_5, 10);
+ subMon.subTask(Messages.ProxyConnectionBootstrap_9);
+ URL fileURL = FileLocator.find(Activator.getDefault().getBundle(), new Path("bootstrap.sh"), null); //$NON-NLS-1$
+ if (fileURL == null) {
+ throw new RemoteConnectionException(Messages.ProxyConnectionBootstrap_6);
+ }
+ File file = new File(FileLocator.toFileURL(fileURL).getFile());
+ BufferedReader scriptReader = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
+ String line;
+ while ((line = scriptReader.readLine()) != null) {
+ writer.write(line + "\n"); //$NON-NLS-1$
+ }
+ scriptReader.close();
+ writer.flush();
+ subMon.worked(2);
+ Context context = new Context(reader, writer, subMon.newChild(8));
+ while (context.getState().process(context)) {
+ // do state machine
+ }
+ if (context.getState() != States.START) {
+ context.writer.write("exit\n"); //$NON-NLS-1$
+ context.writer.flush();
+ throw new RemoteConnectionException(
+ NLS.bind(Messages.ProxyConnectionBootstrap_7, context.getErrorMessage()));
+ }
+ new Thread("server error stream") { //$NON-NLS-1$
+ @Override
+ public void run() {
+ try {
+ BufferedReader reader = new BufferedReader(new InputStreamReader(chan.getExtInputStream()));
+ String line;
+ while ((line = reader.readLine()) != null) {
+ System.err.println("server: " + line); //$NON-NLS-1$
+ }
+ } catch (IOException e) {
+ // Ignore and terminate thread
+ }
+ }
+ }.start();
+ return new StreamChannelManager(chan.getInputStream(), chan.getOutputStream());
+ } catch (IOException | CoreException e) {
+ throw new RemoteConnectionException(e.getMessage());
+ }
+ }
+
+ private Channel openChannel(IRemoteConnection connection, IProgressMonitor monitor)
+ throws RemoteConnectionException {
+ IRemoteConnectionWorkingCopy wc = connection.getWorkingCopy();
+ IRemoteConnectionHostService hostService = wc.getService(IRemoteConnectionHostService.class);
+ IUserAuthenticatorService authService = wc.getService(IUserAuthenticatorService.class);
+ try {
+ session = jSchService.createSession(hostService.getHostname(), hostService.getPort(),
+ hostService.getUsername());
+ session.setUserInfo(new JSchUserInfo(hostService, authService));
+ if (hostService.usePassword()) {
+ session.setConfig("PreferredAuthentications", //$NON-NLS-1$
+ "password,keyboard-interactive,gssapi-with-mic,publickey"); //$NON-NLS-1$
+ } else {
+ session.setConfig("PreferredAuthentications", //$NON-NLS-1$
+ "publickey,gssapi-with-mic,password,keyboard-interactive"); //$NON-NLS-1$
+ }
+ String password = hostService.getPassword();
+ if (!password.isEmpty()) {
+ session.setPassword(password);
+ }
+ jSchService.connect(session, hostService.getTimeout() * 1000, monitor);
+ if (monitor.isCanceled()) {
+ throw new RemoteConnectionException(Messages.ProxyConnectionBootstrap_8);
+ }
+ exec = (ChannelExec) session.openChannel("exec"); //$NON-NLS-1$
+ exec.setCommand("/bin/bash -l"); //$NON-NLS-1$
+ exec.connect();
+ return exec;
+ } catch (JSchException e) {
+ throw new RemoteConnectionException(e.getMessage());
+ }
+ }
+}
diff --git a/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/ProxyConnectionProviderService.java b/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/ProxyConnectionProviderService.java
new file mode 100644
index 00000000000..68e228bff33
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/ProxyConnectionProviderService.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+* Copyright (c) 2016 Oak Ridge National Laboratory and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.remote.internal.proxy.core;
+
+import org.eclipse.remote.core.IRemoteConnectionProviderService;
+import org.eclipse.remote.core.IRemoteConnectionType;
+import org.eclipse.remote.core.IRemoteConnectionType.Service;
+
+public class ProxyConnectionProviderService implements IRemoteConnectionProviderService {
+
+ private IRemoteConnectionType connectionType;
+
+ public static class Factory implements IRemoteConnectionType.Service.Factory {
+ @SuppressWarnings("unchecked")
+ @Override
+ public <T extends Service> T getService(IRemoteConnectionType connectionType, Class<T> service) {
+ if (service.equals(IRemoteConnectionProviderService.class)) {
+ return (T) new ProxyConnectionProviderService(connectionType);
+ }
+ return null;
+ }
+ }
+
+ public ProxyConnectionProviderService(IRemoteConnectionType connectionType) {
+ this.connectionType = connectionType;
+ }
+
+ @Override
+ public void init() {
+ // Nothing
+ }
+
+ @Override
+ public IRemoteConnectionType getConnectionType() {
+ return connectionType;
+ }
+
+}
diff --git a/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/ProxyFileManager.java b/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/ProxyFileManager.java
new file mode 100644
index 00000000000..f0dd21191a6
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/ProxyFileManager.java
@@ -0,0 +1,88 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Oak Ridge National Laboratory and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.remote.internal.proxy.core;
+
+import java.net.URI;
+
+import org.eclipse.core.filesystem.IFileStore;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteConnection.Service;
+import org.eclipse.remote.core.IRemoteFileService;
+import org.eclipse.remote.core.IRemoteProcessService;
+import org.eclipse.remote.core.RemoteServicesUtils;
+
+public class ProxyFileManager implements IRemoteFileService {
+ private final IRemoteConnection fConnection;
+
+ private ProxyFileManager(IRemoteConnection connection) {
+ fConnection = connection;
+ }
+
+ public static class Factory implements IRemoteFileService.Factory {
+ @SuppressWarnings("unchecked")
+ @Override
+ public <T extends Service> T getService(IRemoteConnection remoteConnection, Class<T> service) {
+ if (IRemoteFileService.class.equals(service)) {
+ return (T) new ProxyFileManager(remoteConnection);
+ }
+ return null;
+ }
+ }
+
+ @Override
+ public IRemoteConnection getRemoteConnection() {
+ return fConnection;
+ }
+
+ @Override
+ public String getDirectorySeparator() {
+ return "/"; //$NON-NLS-1$
+ }
+
+ @Override
+ public IFileStore getResource(String pathStr) {
+ IPath path = RemoteServicesUtils.posixPath(pathStr);
+ if (!path.isAbsolute()) {
+ path = RemoteServicesUtils.posixPath(getBaseDirectory()).append(path);
+ }
+ return ProxyFileStore.getInstance(ProxyFileSystem.getURIFor(fConnection.getName(), path.toString()));
+ }
+
+ @Override
+ public String getBaseDirectory() {
+ return fConnection.getService(IRemoteProcessService.class).getWorkingDirectory();
+ }
+
+ @Override
+ public void setBaseDirectory(String path) {
+ fConnection.getService(IRemoteProcessService.class).setWorkingDirectory(path);
+ }
+
+ @Override
+ public String toPath(URI uri) {
+ return uri.getPath();
+ }
+
+ @Override
+ public URI toURI(IPath path) {
+ try {
+ return ProxyFileSystem.getURIFor(fConnection.getName(), path.toString());
+ } catch (Exception e) {
+ return null;
+ }
+ }
+
+ @Override
+ public URI toURI(String path) {
+ return toURI(RemoteServicesUtils.posixPath(path));
+ }
+}
diff --git a/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/ProxyFileStore.java b/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/ProxyFileStore.java
new file mode 100644
index 00000000000..91df470fd8b
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/ProxyFileStore.java
@@ -0,0 +1,290 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Oak Ridge National Laboratory and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.remote.internal.proxy.core;
+
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.URI;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.core.filesystem.EFS;
+import org.eclipse.core.filesystem.IFileInfo;
+import org.eclipse.core.filesystem.IFileStore;
+import org.eclipse.core.filesystem.provider.FileStore;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.SubMonitor;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteConnectionType;
+import org.eclipse.remote.core.IRemoteServicesManager;
+import org.eclipse.remote.core.RemoteServicesUtils;
+import org.eclipse.remote.core.exception.RemoteConnectionException;
+import org.eclipse.remote.internal.proxy.core.commands.ChildInfosCommand;
+import org.eclipse.remote.internal.proxy.core.commands.DeleteCommand;
+import org.eclipse.remote.internal.proxy.core.commands.FetchInfoCommand;
+import org.eclipse.remote.internal.proxy.core.commands.GetInputStreamCommand;
+import org.eclipse.remote.internal.proxy.core.commands.GetOutputStreamCommand;
+import org.eclipse.remote.internal.proxy.core.commands.MkdirCommand;
+import org.eclipse.remote.internal.proxy.core.commands.PutInfoCommand;
+import org.eclipse.remote.internal.proxy.core.messages.Messages;
+import org.eclipse.remote.proxy.protocol.core.exceptions.ProxyException;
+
+public class ProxyFileStore extends FileStore {
+ /**
+ * Public factory method for obtaining ProxyFileStore instances.
+ *
+ * @param uri
+ * URI to get a fileStore for
+ * @return an ProxyFileStore instance for the URI.
+ */
+ public static ProxyFileStore getInstance(URI uri) {
+ synchronized (instanceMap) {
+ ProxyFileStore store = instanceMap.get(uri.toString());
+ if (store == null) {
+ store = new ProxyFileStore(uri);
+ instanceMap.put(uri.toString(), store);
+ }
+ return store;
+ }
+ }
+
+ private static Map<String, ProxyFileStore> instanceMap = new HashMap<>();
+
+ private final IPath fRemotePath;
+ private final URI fURI;
+
+ private ProxyFileStore(URI uri) {
+ fURI = uri;
+ fRemotePath = RemoteServicesUtils.posixPath(uri.getPath());
+ }
+
+ private ProxyConnection checkConnection(IProgressMonitor monitor) throws RemoteConnectionException {
+ IRemoteServicesManager manager = Activator.getService(IRemoteServicesManager.class);
+ IRemoteConnectionType connectionType = manager.getConnectionType(fURI);
+ if (connectionType == null) {
+ throw new RemoteConnectionException(NLS.bind(Messages.ProxyFileStore_0, fURI));
+ }
+
+ try {
+ IRemoteConnection connection = connectionType.getConnection(fURI);
+ if (connection == null) {
+ throw new RemoteConnectionException(NLS.bind(Messages.ProxyFileStore_1, fURI));
+ }
+ if (!connection.isOpen()) {
+ connection.open(monitor);
+ if (!connection.isOpen()) {
+ throw new RemoteConnectionException(Messages.ProxyFileStore_2);
+ }
+ }
+ return connection.getService(ProxyConnection.class);
+ } catch (CoreException e) {
+ throw new RemoteConnectionException(e);
+ }
+ }
+
+ @Override
+ public IFileInfo[] childInfos(int options, IProgressMonitor monitor) throws CoreException {
+ SubMonitor subMon = SubMonitor.convert(monitor, 10);
+ ProxyConnection connection = checkConnection(subMon.newChild(1));
+ ChildInfosCommand command = new ChildInfosCommand(connection, fRemotePath.toString());
+ try {
+ return command.getResult(subMon.newChild(9));
+ } catch (ProxyException e) {
+ throw new CoreException(new Status(IStatus.ERROR, Activator.getUniqueIdentifier(), e.getMessage()));
+ }
+ }
+
+ @Override
+ public String[] childNames(int options, IProgressMonitor monitor) throws CoreException {
+ SubMonitor subMon = SubMonitor.convert(monitor, 10);
+ IFileInfo[] infos = childInfos(options, subMon.newChild(10));
+ String[] names = new String[infos.length];
+ for (int i = 0; i < infos.length; i++) {
+ names[i] = infos[i].getName();
+ }
+ return names;
+ }
+
+ @Override
+ public void delete(int options, IProgressMonitor monitor) throws CoreException {
+ SubMonitor subMon = SubMonitor.convert(monitor, 20);
+ ProxyConnection connection = checkConnection(subMon.newChild(1));
+ IFileInfo info = fetchInfo(EFS.NONE, subMon.newChild(9));
+ if (!subMon.isCanceled() && info.exists()) {
+ DeleteCommand command = new DeleteCommand(connection, options, fRemotePath.toString());
+ try {
+ command.getResult(subMon.newChild(10));
+ } catch (ProxyException e) {
+ throw new CoreException(new Status(IStatus.ERROR, Activator.getUniqueIdentifier(), e.getMessage()));
+ }
+ }
+ subMon.setWorkRemaining(0);
+ }
+
+ @Override
+ public IFileInfo fetchInfo(int options, IProgressMonitor monitor) throws CoreException {
+ SubMonitor subMon = SubMonitor.convert(monitor, 10);
+ ProxyConnection connection = checkConnection(subMon.newChild(1));
+ FetchInfoCommand command = new FetchInfoCommand(connection, fRemotePath.toString());
+ try {
+ return command.getResult(subMon.newChild(9));
+ } catch (ProxyException e) {
+ throw new CoreException(new Status(IStatus.ERROR, Activator.getUniqueIdentifier(), e.getMessage()));
+ }
+ }
+
+ @Override
+ public IFileStore getChild(String name) {
+ URI uri = ProxyFileSystem.getURIFor(ProxyFileSystem.getConnectionNameFor(fURI),
+ fRemotePath.append(name).toString());
+ return getInstance(uri);
+ }
+
+ @Override
+ public String getName() {
+ return getNameFromPath(fRemotePath);
+ }
+
+ /**
+ * Utility routing to get the file name from an absolute path.
+ *
+ * @param path
+ * path to extract file name from
+ * @return last segment of path, or the full path if it is root
+ */
+ private String getNameFromPath(IPath path) {
+ if (path.isRoot()) {
+ return path.toString();
+ }
+ return path.lastSegment();
+ }
+
+ @Override
+ public IFileStore getParent() {
+ if (fRemotePath.isRoot()) {
+ return null;
+ }
+ String parentPath = fRemotePath.toString();
+ if (fRemotePath.segmentCount() > 0) {
+ parentPath = fRemotePath.removeLastSegments(1).toString();
+ }
+ return getInstance(ProxyFileSystem.getURIFor(ProxyFileSystem.getConnectionNameFor(fURI), parentPath));
+ }
+
+ @Override
+ public IFileStore mkdir(int options, IProgressMonitor monitor) throws CoreException {
+ SubMonitor subMon = SubMonitor.convert(monitor, 16);
+ ProxyConnection connection = checkConnection(subMon.newChild(1));
+
+ if ((options & EFS.SHALLOW) == EFS.SHALLOW) {
+ IFileStore parent = getParent();
+ if (parent != null && !parent.fetchInfo(EFS.NONE, subMon.newChild(5)).exists()) {
+ throw new CoreException(new Status(IStatus.ERROR, Activator.getUniqueIdentifier(), EFS.ERROR_WRITE,
+ NLS.bind(Messages.ProxyFileStore_3, fRemotePath.toString()), null));
+ }
+ if (subMon.isCanceled()) {
+ return this;
+ }
+ }
+ subMon.setWorkRemaining(10);
+
+ try {
+ MkdirCommand command = new MkdirCommand(connection, options, fRemotePath.toString());
+ command.getResult(subMon.newChild(5));
+ } catch (Exception e) {
+ // Ignore any exceptions
+ }
+ if (!subMon.isCanceled()) {
+ /*
+ * Check if the result exists and is a directory, throw an exception if neither.
+ */
+ IFileInfo info = fetchInfo(EFS.NONE, subMon.newChild(5));
+ if (!subMon.isCanceled()) {
+ if (!info.exists()) {
+ throw new CoreException(new Status(IStatus.ERROR, Activator.getUniqueIdentifier(), EFS.ERROR_WRITE,
+ NLS.bind(Messages.ProxyFileStore_4, fRemotePath.toString()), null));
+ }
+ if (!info.isDirectory()) {
+ throw new CoreException(new Status(IStatus.ERROR, Activator.getUniqueIdentifier(),
+ EFS.ERROR_WRONG_TYPE, NLS.bind(Messages.ProxyFileStore_5, fRemotePath.toString()), null));
+ }
+ }
+ }
+
+ return this;
+ }
+
+ @Override
+ public InputStream openInputStream(int options, IProgressMonitor monitor) throws CoreException {
+ SubMonitor subMon = SubMonitor.convert(monitor, 20);
+ ProxyConnection connection = checkConnection(subMon.newChild(1));
+ IFileInfo info = fetchInfo(EFS.NONE, subMon.newChild(9));
+ if (!subMon.isCanceled()) {
+ if (!info.exists()) {
+ throw new CoreException(new Status(IStatus.ERROR, Activator.getUniqueIdentifier(), EFS.ERROR_READ,
+ NLS.bind(Messages.ProxyFileStore_6, fRemotePath.toString()), null));
+ }
+ if (info.isDirectory()) {
+ throw new CoreException(new Status(IStatus.ERROR, Activator.getUniqueIdentifier(), EFS.ERROR_WRONG_TYPE,
+ NLS.bind(Messages.ProxyFileStore_7, fRemotePath.toString()), null));
+ }
+ GetInputStreamCommand command = new GetInputStreamCommand(connection, options, fRemotePath.toString());
+ try {
+ return command.getResult(subMon.newChild(10));
+ } catch (ProxyException e) {
+ throw new CoreException(new Status(IStatus.ERROR, Activator.getUniqueIdentifier(), e.getMessage()));
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public OutputStream openOutputStream(int options, IProgressMonitor monitor) throws CoreException {
+ SubMonitor subMon = SubMonitor.convert(monitor, 20);
+ ProxyConnection connection = checkConnection(subMon.newChild(1));
+ IFileInfo info = fetchInfo(EFS.NONE, subMon.newChild(9));
+ if (!subMon.isCanceled()) {
+ if (info.isDirectory()) {
+ throw new CoreException(new Status(IStatus.ERROR, Activator.getUniqueIdentifier(), EFS.ERROR_WRONG_TYPE,
+ NLS.bind(Messages.ProxyFileStore_7, fRemotePath.toString()), null));
+ }
+ GetOutputStreamCommand command = new GetOutputStreamCommand(connection, options, fRemotePath.toString());
+ try {
+ return command.getResult(subMon.newChild(10));
+ } catch (ProxyException e) {
+ throw new CoreException(new Status(IStatus.ERROR, Activator.getUniqueIdentifier(), e.getMessage()));
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public void putInfo(IFileInfo info, int options, IProgressMonitor monitor) throws CoreException {
+ SubMonitor subMon = SubMonitor.convert(monitor, 10);
+ ProxyConnection connection = checkConnection(subMon.newChild(1));
+ PutInfoCommand command = new PutInfoCommand(connection, info, options, fRemotePath.toString());
+ try {
+ command.getResult(subMon.newChild(9));
+ } catch (ProxyException e) {
+ throw new CoreException(new Status(IStatus.ERROR, Activator.getUniqueIdentifier(), e.getMessage()));
+ }
+ }
+
+ @Override
+ public URI toURI() {
+ return fURI;
+ }
+}
diff --git a/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/ProxyFileSystem.java b/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/ProxyFileSystem.java
new file mode 100644
index 00000000000..8af4820efd8
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/ProxyFileSystem.java
@@ -0,0 +1,86 @@
+/********************************************************************************
+ * Copyright (c) 2016 Oak Ridge National Laboratory and others.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ ********************************************************************************/
+
+package org.eclipse.remote.internal.proxy.core;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+
+import org.eclipse.core.filesystem.EFS;
+import org.eclipse.core.filesystem.IFileStore;
+import org.eclipse.core.filesystem.provider.FileSystem;
+import org.eclipse.core.runtime.IPath;
+
+public class ProxyFileSystem extends FileSystem {
+ /**
+ * Return the connection name encoded in the URI.
+ *
+ * @param uri
+ * URI specifying a remote tools connection
+ * @return name of the connection or null if the URI is invalid
+ * @since 4.0
+ */
+ public static String getConnectionNameFor(URI uri) {
+ return uri.getAuthority();
+ }
+
+ /**
+ * Return an URI uniquely naming a remote tools remote resource.
+ *
+ * @param connectionName
+ * remote tools connection name
+ * @param path
+ * absolute path to resource as valid on the remote system
+ * @return an URI uniquely naming the remote resource.
+ */
+ public static URI getURIFor(String connectionName, String path) {
+ try {
+ return new URI("proxy", connectionName, path, null, null); //$NON-NLS-1$
+ } catch (URISyntaxException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ /**
+ * Default constructor.
+ */
+ public ProxyFileSystem() {
+ super();
+ }
+
+ @Override
+ public int attributes() {
+ // Attributes supported by JSch IFileService
+ return EFS.ATTRIBUTE_READ_ONLY | EFS.ATTRIBUTE_EXECUTABLE | EFS.ATTRIBUTE_SYMLINK | EFS.ATTRIBUTE_LINK_TARGET;
+ }
+
+ @Override
+ public boolean canDelete() {
+ return true;
+ }
+
+ @Override
+ public boolean canWrite() {
+ return true;
+ }
+
+ @Override
+ public IFileStore getStore(IPath path) {
+ return EFS.getNullFileSystem().getStore(path);
+ }
+
+ @Override
+ public IFileStore getStore(URI uri) {
+ try {
+ return ProxyFileStore.getInstance(uri);
+ } catch (Exception e) {
+ // Could be an URI format exception
+ Activator.log(e);
+ return EFS.getNullFileSystem().getStore(uri);
+ }
+ }
+} \ No newline at end of file
diff --git a/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/ProxyProcess.java b/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/ProxyProcess.java
new file mode 100644
index 00000000000..74b64b3a4a8
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/ProxyProcess.java
@@ -0,0 +1,173 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Oak Ridge National Laboratory and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.remote.internal.proxy.core;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.List;
+
+import org.eclipse.remote.core.IRemoteProcess;
+import org.eclipse.remote.core.IRemoteProcessControlService;
+import org.eclipse.remote.core.IRemoteProcessSignalService;
+import org.eclipse.remote.core.IRemoteProcessTerminalService;
+import org.eclipse.remote.proxy.protocol.core.Protocol;
+import org.eclipse.remote.proxy.protocol.core.StreamChannel;
+
+public class ProxyProcess implements IRemoteProcessControlService, IRemoteProcessTerminalService {
+ private IRemoteProcess remoteProcess;
+
+ private final StreamChannel stdIOChan;
+ private final StreamChannel stdErrChan;
+ private final StreamChannel controlChan;
+ private final DataOutputStream cmdStream;
+ private final DataInputStream resultStream;
+ private final Thread cmdThread;
+
+ private volatile int exitValue;
+ private volatile boolean isCompleted;
+
+ public static class Factory implements IRemoteProcess.Service.Factory {
+ @SuppressWarnings("unchecked")
+ @Override
+ public <T extends IRemoteProcess.Service> T getService(IRemoteProcess remoteProcess, Class<T> service) {
+ if (ProxyProcess.class.equals(service)) {
+ return (T) new ProxyProcess(remoteProcess);
+ }
+ if (IRemoteProcessControlService.class.equals(service) || IRemoteProcessSignalService.class.equals(service)
+ || IRemoteProcessTerminalService.class.equals(service)) {
+ return (T) remoteProcess.getService(ProxyProcess.class);
+ }
+ return null;
+ }
+ }
+
+ protected ProxyProcess(IRemoteProcess process) {
+ remoteProcess = process;
+ ProxyProcessBuilder builder = (ProxyProcessBuilder) process.getProcessBuilder();
+ List<StreamChannel> streams = builder.getStreams();
+ controlChan = streams.get(0);
+ stdIOChan = streams.get(1);
+ stdErrChan = streams.size() > 2 ? streams.get(2) : null;
+ cmdStream = new DataOutputStream(controlChan.getOutputStream());
+ resultStream = new DataInputStream(controlChan.getInputStream());
+ isCompleted = false;
+ exitValue = 0;
+
+ cmdThread = new Thread("process result reader") { //$NON-NLS-1$
+ @Override
+ public void run() {
+ try {
+ exitValue = resultStream.readInt();
+ } catch (IOException e) {
+ // Finish
+ }
+ isCompleted = true;
+ try {
+ stdIOChan.close();
+ } catch (IOException e1) {
+ // Ignore
+ }
+ try {
+ if (stdErrChan != null) {
+ stdErrChan.close();
+ }
+ } catch (IOException e1) {
+ // Ignore
+ }
+ try {
+ controlChan.close();
+ } catch (IOException e) {
+ // Ignore
+ }
+ }
+ };
+ cmdThread.start();
+ }
+
+ @Override
+ public void destroy() {
+ try {
+ cmdStream.writeByte(Protocol.CONTROL_KILL);
+ cmdStream.flush();
+ } catch (IOException e) {
+ isCompleted = true;
+ }
+ }
+
+ @Override
+ public int exitValue() {
+ if (!isCompleted) {
+ throw new IllegalThreadStateException();
+ }
+ return exitValue;
+ }
+
+ @Override
+ public InputStream getErrorStream() {
+ if (stdErrChan == null) {
+ return new InputStream() {
+ @Override
+ public int read() throws IOException {
+ return -1;
+ }
+
+ @Override
+ public int available() {
+ return 0;
+ }
+ };
+ }
+ return stdErrChan.getInputStream();
+ }
+
+ @Override
+ public InputStream getInputStream() {
+ return stdIOChan.getInputStream();
+ }
+
+ @Override
+ public OutputStream getOutputStream() {
+ return stdIOChan.getOutputStream();
+ }
+
+ @Override
+ public int waitFor() throws InterruptedException {
+ cmdThread.join();
+ return exitValue;
+ }
+
+ @Override
+ public boolean isCompleted() {
+ return isCompleted;
+ }
+
+ @Override
+ public IRemoteProcess getRemoteProcess() {
+ return remoteProcess;
+ }
+
+ @Override
+ public void setTerminalSize(int cols, int rows, int pwidth, int pheight) {
+ try {
+ cmdStream.writeByte(Protocol.CONTROL_SETTERMINALSIZE);
+ cmdStream.writeInt(cols);
+ cmdStream.writeInt(rows);
+ cmdStream.writeInt(pwidth);
+ cmdStream.writeInt(pheight);
+ cmdStream.flush();
+ } catch (IOException e) {
+ // Dealt with somewhere else hopefully
+ }
+ }
+}
diff --git a/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/ProxyProcessBuilder.java b/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/ProxyProcessBuilder.java
new file mode 100644
index 00000000000..f37985e8259
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/ProxyProcessBuilder.java
@@ -0,0 +1,154 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Oak Ridge National Laboratory and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.remote.internal.proxy.core;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.remote.core.AbstractRemoteProcessBuilder;
+import org.eclipse.remote.core.IRemoteFileService;
+import org.eclipse.remote.core.IRemoteProcess;
+import org.eclipse.remote.core.IRemoteProcessBuilder;
+import org.eclipse.remote.internal.proxy.core.commands.ExecCommand;
+import org.eclipse.remote.internal.proxy.core.commands.ShellCommand;
+import org.eclipse.remote.internal.proxy.core.messages.Messages;
+import org.eclipse.remote.proxy.protocol.core.StreamChannel;
+import org.eclipse.remote.proxy.protocol.core.exceptions.ProxyException;
+
+public class ProxyProcessBuilder extends AbstractRemoteProcessBuilder {
+ private final ProxyConnection proxyConnection;
+ private Map<String, String> remoteEnv;
+ private List<StreamChannel> streams = new ArrayList<>();
+
+ public ProxyProcessBuilder(ProxyConnection connection, List<String> command) {
+ super(connection.getRemoteConnection(), command);
+ proxyConnection = connection;
+ IRemoteFileService fileSvc = proxyConnection.getRemoteConnection().getService(IRemoteFileService.class);
+ if (fileSvc != null) {
+ directory(fileSvc.getResource(proxyConnection.getWorkingDirectory()));
+ }
+ }
+
+ public ProxyProcessBuilder(ProxyConnection connection, String... command) {
+ this(connection, Arrays.asList(command));
+ }
+
+ /**
+ * Constructor for creating command shell
+ * @param connection
+ */
+ public ProxyProcessBuilder(ProxyConnection connection) {
+ super(connection.getRemoteConnection(), (List<String>) null);
+ proxyConnection = connection;
+ redirectErrorStream(true);
+ }
+
+ @Override
+ public Map<String, String> environment() {
+ if (remoteEnv == null) {
+ remoteEnv = new HashMap<>(proxyConnection.getEnv());
+ }
+ return remoteEnv;
+ }
+
+ @Override
+ public int getSupportedFlags() {
+ return NONE;
+ }
+
+ @Override
+ public IRemoteProcess start(int flags) throws IOException {
+ final ProxyConnection conn = getRemoteConnection().getService(ProxyConnection.class);
+ if (conn == null) {
+ throw new IOException(Messages.ProxyProcessBuilder_0);
+ }
+
+ Job job;
+
+ final List<String> cmdArgs = command();
+ if (cmdArgs != null) {
+ if (cmdArgs.size() < 1) {
+ throw new IOException(Messages.ProxyProcessBuilder_1);
+ }
+ /*
+ * If environment has not been touched, then don't send anything
+ */
+ final Map<String, String> env = new HashMap<>();
+ if (remoteEnv != null) {
+ env.putAll(remoteEnv);
+ }
+
+ final boolean append = (flags & IRemoteProcessBuilder.APPEND_ENVIRONMENT) != 0 || remoteEnv == null;
+
+ streams.add(conn.openChannel());
+ streams.add(conn.openChannel());
+ streams.add(conn.openChannel());
+
+ job = new Job("process executor") { //$NON-NLS-1$
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ ExecCommand cmd = new ExecCommand(conn, cmdArgs, env, directory().toURI().getPath(),
+ redirectErrorStream(), append, streams.get(0).getId(), streams.get(1).getId(),
+ streams.get(2).getId());
+ try {
+ cmd.getResult(monitor);
+ } catch (ProxyException e) {
+ return new Status(IStatus.ERROR, Activator.getUniqueIdentifier(), e.getMessage());
+ }
+ return monitor.isCanceled() ? Status.CANCEL_STATUS : Status.OK_STATUS;
+ }
+ };
+ } else {
+ /*
+ * Start command shell
+ */
+ streams.add(conn.openChannel());
+ streams.add(conn.openChannel());
+
+ job = new Job("process executor") { //$NON-NLS-1$
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ ShellCommand cmd = new ShellCommand(conn, streams.get(0).getId(), streams.get(1).getId());
+ try {
+ cmd.getResult(monitor);
+ } catch (ProxyException e) {
+ return new Status(IStatus.ERROR, Activator.getUniqueIdentifier(), e.getMessage());
+ }
+ return monitor.isCanceled() ? Status.CANCEL_STATUS : Status.OK_STATUS;
+ }
+ };
+ }
+
+ job.schedule();
+ try {
+ job.join();
+ } catch (InterruptedException e) {
+ throw new IOException(e.getMessage());
+ }
+ if (!job.getResult().isOK()) {
+ throw new IOException(job.getResult().getMessage());
+ }
+
+ return newRemoteProcess();
+ }
+
+ public List<StreamChannel> getStreams() {
+ return streams;
+ }
+}
diff --git a/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/commands/AbstractCommand.java b/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/commands/AbstractCommand.java
new file mode 100644
index 00000000000..c588d4ceebc
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/commands/AbstractCommand.java
@@ -0,0 +1,86 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Oak Ridge National Laboratory and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.remote.internal.proxy.core.commands;
+
+import java.io.IOException;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.SubMonitor;
+import org.eclipse.remote.internal.proxy.core.ProxyConnection;
+import org.eclipse.remote.internal.proxy.core.messages.Messages;
+import org.eclipse.remote.proxy.protocol.core.StreamChannel;
+import org.eclipse.remote.proxy.protocol.core.exceptions.ProxyException;
+
+public abstract class AbstractCommand<T> implements Callable<T> {
+ private IProgressMonitor progressMonitor;
+
+ private static ExecutorService executors = Executors.newSingleThreadExecutor();
+
+ private final ProxyConnection connection;
+
+ private Future<T> asyncCmdInThread() throws ProxyException {
+ return executors.submit(this);
+ }
+
+ public StreamChannel openChannel() throws IOException {
+ return connection.openChannel();
+ }
+
+ public IProgressMonitor getProgressMonitor() {
+ return progressMonitor;
+ }
+
+ /**
+ * Function opens exec channel and then executes the exec operation. If
+ * run on the main thread it executes it on a separate thread
+ */
+ public T getResult(IProgressMonitor monitor) throws ProxyException {
+ Future<T> future = null;
+ progressMonitor = SubMonitor.convert(monitor, 10);
+ future = asyncCmdInThread();
+ return waitCmdInThread(future);
+ }
+
+ private T waitCmdInThread(Future<T> future) throws ProxyException {
+ boolean bInterrupted = Thread.interrupted();
+ while (!getProgressMonitor().isCanceled()) {
+ try {
+ return future.get(100, TimeUnit.MILLISECONDS);
+ } catch (InterruptedException e) {
+ bInterrupted = true;
+ } catch (TimeoutException e) {
+ // ignore
+ } catch (ExecutionException e) {
+ throw new ProxyException(e.getMessage());
+ }
+ getProgressMonitor().worked(1);
+ }
+ if (bInterrupted) {
+ Thread.currentThread().interrupt(); // set current thread flag
+ }
+ future.cancel(true);
+ throw new ProxyException(Messages.AbstractCommand_0);
+ }
+
+ @Override
+ public abstract T call() throws ProxyException;
+
+ public AbstractCommand(ProxyConnection conn) {
+ this.connection = conn;
+ }
+}
diff --git a/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/commands/ChildInfosCommand.java b/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/commands/ChildInfosCommand.java
new file mode 100644
index 00000000000..7f6bdaf0d61
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/commands/ChildInfosCommand.java
@@ -0,0 +1,68 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Oak Ridge National Laboratory and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.remote.internal.proxy.core.commands;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import org.eclipse.core.filesystem.IFileInfo;
+import org.eclipse.remote.internal.proxy.core.ProxyConnection;
+import org.eclipse.remote.proxy.protocol.core.Protocol;
+import org.eclipse.remote.proxy.protocol.core.SerializableFileInfo;
+import org.eclipse.remote.proxy.protocol.core.StreamChannel;
+import org.eclipse.remote.proxy.protocol.core.exceptions.ProxyException;
+
+public class ChildInfosCommand extends AbstractCommand<IFileInfo[]> {
+
+ private final DataOutputStream out;
+ private final DataInputStream in;
+ private final String path;
+
+ public ChildInfosCommand(ProxyConnection conn, String path) {
+ super(conn);
+ this.out = new DataOutputStream(conn.getCommandChannel().getOutputStream());
+ this.in = new DataInputStream(conn.getCommandChannel().getInputStream());
+ this.path = path;
+ }
+
+ @Override
+ public IFileInfo[] call() throws ProxyException {
+ try {
+ final StreamChannel chan = openChannel();
+
+ out.writeByte(Protocol.PROTO_COMMAND);
+ out.writeShort(Protocol.CMD_CHILDINFOS);
+ out.writeByte(chan.getId());
+ out.writeUTF(path);
+ out.flush();
+
+ byte res = in.readByte();
+ if (res != Protocol.PROTO_OK) {
+ String errMsg = in.readUTF();
+ throw new ProxyException(errMsg);
+ }
+
+ DataInputStream resultStream = new DataInputStream(chan.getInputStream());
+ int length = resultStream.readInt();
+ SerializableFileInfo sInfo = new SerializableFileInfo();
+ IFileInfo[] infos = new IFileInfo[length];
+ for (int i = 0; i < length; i++) {
+ sInfo.readObject(resultStream);
+ infos[i] = sInfo.getIFileInfo();
+ }
+ chan.close();
+ return infos;
+ } catch (IOException e) {
+ throw new ProxyException(e.getMessage());
+ }
+ }
+}
diff --git a/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/commands/DeleteCommand.java b/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/commands/DeleteCommand.java
new file mode 100644
index 00000000000..a4a7adfaea8
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/commands/DeleteCommand.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Oak Ridge National Laboratory and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.remote.internal.proxy.core.commands;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import org.eclipse.remote.internal.proxy.core.ProxyConnection;
+import org.eclipse.remote.proxy.protocol.core.Protocol;
+import org.eclipse.remote.proxy.protocol.core.exceptions.ProxyException;
+
+public class DeleteCommand extends AbstractCommand<Void> {
+
+ private final DataOutputStream out;
+ private final DataInputStream in;
+ private final int options;
+ private final String path;
+
+ public DeleteCommand(ProxyConnection conn, int options, String path) {
+ super(conn);
+ this.out = new DataOutputStream(conn.getCommandChannel().getOutputStream());
+ this.in = new DataInputStream(conn.getCommandChannel().getInputStream());
+ this.options = options;
+ this.path = path;
+ }
+
+ @Override
+ public Void call() throws ProxyException {
+ try {
+ out.writeByte(Protocol.PROTO_COMMAND);
+ out.writeShort(Protocol.CMD_DELETE);
+ out.writeInt(options);
+ out.writeUTF(path);
+ out.flush();
+
+ byte res = in.readByte();
+ if (res != Protocol.PROTO_OK) {
+ String errMsg = in.readUTF();
+ throw new ProxyException(errMsg);
+ }
+ return null;
+ } catch (IOException e) {
+ throw new ProxyException(e.getMessage());
+ }
+ }
+}
diff --git a/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/commands/ExecCommand.java b/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/commands/ExecCommand.java
new file mode 100644
index 00000000000..9cd6d04d4b4
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/commands/ExecCommand.java
@@ -0,0 +1,83 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Oak Ridge National Laboratory and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.remote.internal.proxy.core.commands;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.remote.internal.proxy.core.ProxyConnection;
+import org.eclipse.remote.proxy.protocol.core.Protocol;
+import org.eclipse.remote.proxy.protocol.core.exceptions.ProxyException;
+
+public class ExecCommand extends AbstractCommand<Void> {
+
+ private final DataOutputStream out;
+ private final DataInputStream in;
+ private final List<String> command;
+ private final Map<String, String> env;
+ private final String directory;
+ private final boolean appendEnv;
+ private final boolean redirect;
+ private final int cmdChan;
+ private final int ioChan;
+ private final int errChan;
+
+ public ExecCommand(ProxyConnection conn, List<String> command, Map<String, String> env, String directory,
+ boolean redirect, boolean appendEnv, int cmdChan, int ioChan, int errChan) {
+ super(conn);
+ this.out = new DataOutputStream(conn.getCommandChannel().getOutputStream());
+ this.in = new DataInputStream(conn.getCommandChannel().getInputStream());
+ this.command = command;
+ this.env = env;
+ this.directory = directory;
+ this.redirect = redirect;
+ this.appendEnv = appendEnv;
+ this.cmdChan = cmdChan;
+ this.ioChan = ioChan;
+ this.errChan = errChan;
+ }
+
+ @Override
+ public Void call() throws ProxyException {
+ try {
+ out.writeByte(Protocol.PROTO_COMMAND);
+ out.writeShort(Protocol.CMD_EXEC);
+ out.writeByte(cmdChan);
+ out.writeByte(ioChan);
+ out.writeByte(errChan);
+ out.writeInt(command.size());
+ for (String arg : command) {
+ out.writeUTF(arg);
+ }
+ out.writeInt(env.size());
+ for (Map.Entry<String, String> entry : env.entrySet()) {
+ out.writeUTF(entry.getKey());
+ out.writeUTF(entry.getValue());
+ }
+ out.writeUTF(directory);
+ out.writeBoolean(redirect);
+ out.writeBoolean(appendEnv);
+ out.flush();
+
+ byte res = in.readByte();
+ if (res != Protocol.PROTO_OK) {
+ String errMsg = in.readUTF();
+ throw new ProxyException(errMsg);
+ }
+ } catch (IOException e) {
+ throw new ProxyException(e.getMessage());
+ }
+ return null;
+ }
+}
diff --git a/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/commands/FetchInfoCommand.java b/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/commands/FetchInfoCommand.java
new file mode 100644
index 00000000000..b17fdfa0664
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/commands/FetchInfoCommand.java
@@ -0,0 +1,63 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Oak Ridge National Laboratory and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.remote.internal.proxy.core.commands;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import org.eclipse.core.filesystem.IFileInfo;
+import org.eclipse.remote.internal.proxy.core.ProxyConnection;
+import org.eclipse.remote.proxy.protocol.core.Protocol;
+import org.eclipse.remote.proxy.protocol.core.SerializableFileInfo;
+import org.eclipse.remote.proxy.protocol.core.StreamChannel;
+import org.eclipse.remote.proxy.protocol.core.exceptions.ProxyException;
+
+public class FetchInfoCommand extends AbstractCommand<IFileInfo> {
+
+ private final DataOutputStream out;
+ private final DataInputStream in;
+ private final String path;
+
+ public FetchInfoCommand(ProxyConnection conn, String path) {
+ super(conn);
+ this.out = new DataOutputStream(conn.getCommandChannel().getOutputStream());
+ this.in = new DataInputStream(conn.getCommandChannel().getInputStream());
+ this.path = path;
+ }
+
+ @Override
+ public IFileInfo call() throws ProxyException {
+ try {
+ final StreamChannel chan = openChannel();
+
+ out.writeByte(Protocol.PROTO_COMMAND);
+ out.writeShort(Protocol.CMD_FETCHINFO);
+ out.writeByte(chan.getId());
+ out.writeUTF(path);
+ out.flush();
+
+ byte res = in.readByte();
+ if (res != Protocol.PROTO_OK) {
+ String errMsg = in.readUTF();
+ throw new ProxyException(errMsg);
+ }
+
+ DataInputStream resultStream = new DataInputStream(chan.getInputStream());
+ SerializableFileInfo info = new SerializableFileInfo();
+ info.readObject(resultStream);
+ chan.close();
+ return info.getIFileInfo();
+ } catch (IOException e) {
+ throw new ProxyException(e.getMessage());
+ }
+ }
+}
diff --git a/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/commands/GetCwdCommand.java b/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/commands/GetCwdCommand.java
new file mode 100644
index 00000000000..d10956d2f3f
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/commands/GetCwdCommand.java
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Oak Ridge National Laboratory and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.remote.internal.proxy.core.commands;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import org.eclipse.remote.internal.proxy.core.ProxyConnection;
+import org.eclipse.remote.proxy.protocol.core.Protocol;
+import org.eclipse.remote.proxy.protocol.core.StreamChannel;
+import org.eclipse.remote.proxy.protocol.core.exceptions.ProxyException;
+
+public class GetCwdCommand extends AbstractCommand<String> {
+
+ private final DataOutputStream out;
+ private final DataInputStream in;
+
+ public GetCwdCommand(ProxyConnection conn) {
+ super(conn);
+ this.out = new DataOutputStream(conn.getCommandChannel().getOutputStream());
+ this.in = new DataInputStream(conn.getCommandChannel().getInputStream());
+ }
+
+ @Override
+ public String call() throws ProxyException {
+ try {
+ final StreamChannel chan = openChannel();
+ DataInputStream resultStream = new DataInputStream(chan.getInputStream());
+
+ out.writeByte(Protocol.PROTO_COMMAND);
+ out.writeShort(Protocol.CMD_GETCWD);
+ out.writeByte(chan.getId());
+ out.flush();
+
+ byte res = in.readByte();
+ if (res != Protocol.PROTO_OK) {
+ String errMsg = in.readUTF();
+ throw new ProxyException(errMsg);
+ }
+
+ String cwd = resultStream.readUTF();
+ chan.close();
+ return cwd;
+ } catch (IOException e) {
+ throw new ProxyException(e.getMessage());
+ }
+ }
+}
diff --git a/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/commands/GetEnvCommand.java b/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/commands/GetEnvCommand.java
new file mode 100644
index 00000000000..ec245d2aa28
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/commands/GetEnvCommand.java
@@ -0,0 +1,65 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Oak Ridge National Laboratory and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.remote.internal.proxy.core.commands;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.remote.internal.proxy.core.ProxyConnection;
+import org.eclipse.remote.proxy.protocol.core.Protocol;
+import org.eclipse.remote.proxy.protocol.core.StreamChannel;
+import org.eclipse.remote.proxy.protocol.core.exceptions.ProxyException;
+
+public class GetEnvCommand extends AbstractCommand<Map<String, String>> {
+
+ private final DataOutputStream out;
+ private final DataInputStream in;
+
+ public GetEnvCommand(ProxyConnection conn) {
+ super(conn);
+ this.out = new DataOutputStream(conn.getCommandChannel().getOutputStream());
+ this.in = new DataInputStream(conn.getCommandChannel().getInputStream());
+ }
+
+ @Override
+ public Map<String, String> call() throws ProxyException {
+ try {
+ final StreamChannel chan = openChannel();
+ DataInputStream resultStream = new DataInputStream(chan.getInputStream());
+
+ out.writeByte(Protocol.PROTO_COMMAND);
+ out.writeShort(Protocol.CMD_GETENV);
+ out.writeByte(chan.getId());
+ out.flush();
+
+ byte res = in.readByte();
+ if (res != Protocol.PROTO_OK) {
+ String errMsg = in.readUTF();
+ throw new ProxyException(errMsg);
+ }
+
+ int len = resultStream.readInt();
+ Map<String, String> env = new HashMap<>(len);
+ for (int i = 0; i < len; i++) {
+ String key = resultStream.readUTF();
+ String value = resultStream.readUTF();
+ env.put(key, value);
+ }
+ chan.close();
+ return env;
+ } catch (IOException e) {
+ throw new ProxyException(e.getMessage());
+ }
+ }
+}
diff --git a/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/commands/GetInputStreamCommand.java b/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/commands/GetInputStreamCommand.java
new file mode 100644
index 00000000000..6bd9dfdf54f
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/commands/GetInputStreamCommand.java
@@ -0,0 +1,62 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Oak Ridge National Laboratory and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.remote.internal.proxy.core.commands;
+
+import java.io.BufferedInputStream;
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+import org.eclipse.remote.internal.proxy.core.ProxyConnection;
+import org.eclipse.remote.proxy.protocol.core.Protocol;
+import org.eclipse.remote.proxy.protocol.core.StreamChannel;
+import org.eclipse.remote.proxy.protocol.core.exceptions.ProxyException;
+
+public class GetInputStreamCommand extends AbstractCommand<InputStream> {
+
+ private final DataOutputStream out;
+ private final DataInputStream in;
+ private final int options;
+ private final String path;
+
+ public GetInputStreamCommand(ProxyConnection conn, int options, String path) {
+ super(conn);
+ this.out = new DataOutputStream(conn.getCommandChannel().getOutputStream());
+ this.in = new DataInputStream(conn.getCommandChannel().getInputStream());
+ this.options = options;
+ this.path = path;
+ }
+
+ @Override
+ public InputStream call() throws ProxyException {
+ try {
+ StreamChannel chan = openChannel();
+
+ out.writeByte(Protocol.PROTO_COMMAND);
+ out.writeShort(Protocol.CMD_GETINPUTSTREAM);
+ out.writeByte(chan.getId());
+ out.writeInt(options);
+ out.writeUTF(path);
+ out.flush();
+
+ byte res = in.readByte();
+ if (res != Protocol.PROTO_OK) {
+ String errMsg = in.readUTF();
+ throw new ProxyException(errMsg);
+ }
+
+ return new BufferedInputStream(chan.getInputStream());
+ } catch (IOException e) {
+ throw new ProxyException(e.getMessage());
+ }
+ }
+}
diff --git a/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/commands/GetOutputStreamCommand.java b/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/commands/GetOutputStreamCommand.java
new file mode 100644
index 00000000000..f50515b62c0
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/commands/GetOutputStreamCommand.java
@@ -0,0 +1,62 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Oak Ridge National Laboratory and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.remote.internal.proxy.core.commands;
+
+import java.io.BufferedOutputStream;
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+
+import org.eclipse.remote.internal.proxy.core.ProxyConnection;
+import org.eclipse.remote.proxy.protocol.core.Protocol;
+import org.eclipse.remote.proxy.protocol.core.StreamChannel;
+import org.eclipse.remote.proxy.protocol.core.exceptions.ProxyException;
+
+public class GetOutputStreamCommand extends AbstractCommand<OutputStream> {
+
+ private final DataOutputStream out;
+ private final DataInputStream in;
+ private final int options;
+ private final String path;
+
+ public GetOutputStreamCommand(ProxyConnection conn, int options, String path) {
+ super(conn);
+ this.out = new DataOutputStream(conn.getCommandChannel().getOutputStream());
+ this.in = new DataInputStream(conn.getCommandChannel().getInputStream());
+ this.options = options;
+ this.path = path;
+ }
+
+ @Override
+ public OutputStream call() throws ProxyException {
+ try {
+ StreamChannel chan = openChannel();
+
+ out.writeByte(Protocol.PROTO_COMMAND);
+ out.writeShort(Protocol.CMD_GETOUTPUTSTREAM);
+ out.writeByte(chan.getId());
+ out.writeInt(options);
+ out.writeUTF(path);
+ out.flush();
+
+ byte res = in.readByte();
+ if (res != Protocol.PROTO_OK) {
+ String errMsg = in.readUTF();
+ throw new ProxyException(errMsg);
+ }
+
+ return new BufferedOutputStream(chan.getOutputStream());
+ } catch (IOException e) {
+ throw new ProxyException(e.getMessage());
+ }
+ }
+}
diff --git a/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/commands/GetPropertiesCommand.java b/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/commands/GetPropertiesCommand.java
new file mode 100644
index 00000000000..f7e416b4f9b
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/commands/GetPropertiesCommand.java
@@ -0,0 +1,65 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Oak Ridge National Laboratory and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.remote.internal.proxy.core.commands;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.remote.internal.proxy.core.ProxyConnection;
+import org.eclipse.remote.proxy.protocol.core.Protocol;
+import org.eclipse.remote.proxy.protocol.core.StreamChannel;
+import org.eclipse.remote.proxy.protocol.core.exceptions.ProxyException;
+
+public class GetPropertiesCommand extends AbstractCommand<Map<String, String>> {
+
+ private final DataOutputStream out;
+ private final DataInputStream in;
+
+ public GetPropertiesCommand(ProxyConnection conn) {
+ super(conn);
+ this.out = new DataOutputStream(conn.getCommandChannel().getOutputStream());
+ this.in = new DataInputStream(conn.getCommandChannel().getInputStream());
+ }
+
+ @Override
+ public Map<String, String> call() throws ProxyException {
+ try {
+ final StreamChannel chan = openChannel();
+ DataInputStream resultStream = new DataInputStream(chan.getInputStream());
+
+ out.writeByte(Protocol.PROTO_COMMAND);
+ out.writeShort(Protocol.CMD_GETPROPERTIES);
+ out.writeByte(chan.getId());
+ out.flush();
+
+ byte res = in.readByte();
+ if (res != Protocol.PROTO_OK) {
+ String errMsg = in.readUTF();
+ throw new ProxyException(errMsg);
+ }
+
+ int len = resultStream.readInt();
+ Map<String, String> props = new HashMap<>(len);
+ for (int i = 0; i < len; i++) {
+ String key = resultStream.readUTF();
+ String value = resultStream.readUTF();
+ props.put(key, value);
+ }
+ chan.close();
+ return props;
+ } catch (IOException e) {
+ throw new ProxyException(e.getMessage());
+ }
+ }
+}
diff --git a/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/commands/MkdirCommand.java b/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/commands/MkdirCommand.java
new file mode 100644
index 00000000000..6fcffd6ec78
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/commands/MkdirCommand.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Oak Ridge National Laboratory and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.remote.internal.proxy.core.commands;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import org.eclipse.remote.internal.proxy.core.ProxyConnection;
+import org.eclipse.remote.proxy.protocol.core.Protocol;
+import org.eclipse.remote.proxy.protocol.core.exceptions.ProxyException;
+
+public class MkdirCommand extends AbstractCommand<Void> {
+
+ private final DataOutputStream out;
+ private final DataInputStream in;
+ private final int options;
+ private final String path;
+
+ public MkdirCommand(ProxyConnection conn, int options, String path) {
+ super(conn);
+ this.out = new DataOutputStream(conn.getCommandChannel().getOutputStream());
+ this.in = new DataInputStream(conn.getCommandChannel().getInputStream());
+ this.options = options;
+ this.path = path;
+ }
+
+ @Override
+ public Void call() throws ProxyException {
+ try {
+ out.writeByte(Protocol.PROTO_COMMAND);
+ out.writeShort(Protocol.CMD_MKDIR);
+ out.writeInt(options);
+ out.writeUTF(path);
+ out.flush();
+
+ byte res = in.readByte();
+ if (res != Protocol.PROTO_OK) {
+ String errMsg = in.readUTF();
+ throw new ProxyException(errMsg);
+ }
+ return null;
+ } catch (IOException e) {
+ throw new ProxyException(e.getMessage());
+ }
+ }
+}
diff --git a/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/commands/PutInfoCommand.java b/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/commands/PutInfoCommand.java
new file mode 100644
index 00000000000..1e87466054b
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/commands/PutInfoCommand.java
@@ -0,0 +1,61 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Oak Ridge National Laboratory and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.remote.internal.proxy.core.commands;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import org.eclipse.core.filesystem.IFileInfo;
+import org.eclipse.remote.internal.proxy.core.ProxyConnection;
+import org.eclipse.remote.proxy.protocol.core.Protocol;
+import org.eclipse.remote.proxy.protocol.core.SerializableFileInfo;
+import org.eclipse.remote.proxy.protocol.core.exceptions.ProxyException;
+
+public class PutInfoCommand extends AbstractCommand<Void> {
+
+ private final DataOutputStream out;
+ private final DataInputStream in;
+ private final IFileInfo info;
+ private final int options;
+ private final String path;
+
+ public PutInfoCommand(ProxyConnection conn, IFileInfo info, int options, String path) {
+ super(conn);
+ this.out = new DataOutputStream(conn.getCommandChannel().getOutputStream());
+ this.in = new DataInputStream(conn.getCommandChannel().getInputStream());
+ this.info = info;
+ this.options = options;
+ this.path = path;
+ }
+
+ @Override
+ public Void call() throws ProxyException {
+ try {
+ out.writeByte(Protocol.PROTO_COMMAND);
+ out.writeShort(Protocol.CMD_PUTINFO);
+ out.writeInt(options);
+ out.writeUTF(path);
+ SerializableFileInfo sInfo = new SerializableFileInfo(info);
+ sInfo.writeObject(out);
+ out.flush();
+
+ byte res = in.readByte();
+ if (res != Protocol.PROTO_OK) {
+ String errMsg = in.readUTF();
+ throw new ProxyException(errMsg);
+ }
+ return null;
+ } catch (IOException e) {
+ throw new ProxyException(e.getMessage());
+ }
+ }
+}
diff --git a/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/commands/ShellCommand.java b/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/commands/ShellCommand.java
new file mode 100644
index 00000000000..a47039d6987
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/commands/ShellCommand.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Oak Ridge National Laboratory and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.remote.internal.proxy.core.commands;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import org.eclipse.remote.internal.proxy.core.ProxyConnection;
+import org.eclipse.remote.proxy.protocol.core.Protocol;
+import org.eclipse.remote.proxy.protocol.core.exceptions.ProxyException;
+
+public class ShellCommand extends AbstractCommand<Void> {
+
+ private final DataOutputStream out;
+ private final DataInputStream in;
+ private final int cmdChan;
+ private final int ioChan;
+
+ public ShellCommand(ProxyConnection conn, int cmdChan, int ioChan) {
+ super(conn);
+ this.out = new DataOutputStream(conn.getCommandChannel().getOutputStream());
+ this.in = new DataInputStream(conn.getCommandChannel().getInputStream());
+ this.cmdChan = cmdChan;
+ this.ioChan = ioChan;
+ }
+
+ @Override
+ public Void call() throws ProxyException {
+ try {
+ out.writeByte(Protocol.PROTO_COMMAND);
+ out.writeShort(Protocol.CMD_SHELL);
+ out.writeByte(cmdChan);
+ out.writeByte(ioChan);
+ out.flush();
+
+ byte res = in.readByte();
+ if (res != Protocol.PROTO_OK) {
+ String errMsg = in.readUTF();
+ throw new ProxyException(errMsg);
+ }
+ } catch (IOException e) {
+ throw new ProxyException(e.getMessage());
+ }
+ return null;
+ }
+}
diff --git a/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/messages/Messages.java b/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/messages/Messages.java
new file mode 100644
index 00000000000..b3f9947b80c
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/messages/Messages.java
@@ -0,0 +1,118 @@
+/**
+ * Copyright (c) 2013 IBM Corporation.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - Initial Implementation
+ *
+ */
+package org.eclipse.remote.internal.proxy.core.messages;
+
+import org.eclipse.osgi.util.NLS;
+
+public class Messages extends NLS {
+ private static final String BUNDLE_ID = "org.eclipse.remote.internal.proxy.core.messages.messages"; //$NON-NLS-1$
+
+ public static String AbstractCommand_0;
+
+ public static String AbstractRemoteCommand_format1;
+ public static String AbstractRemoteCommand_format2;
+ public static String AbstractRemoteCommand_Get_symlink_target;
+ public static String AbstractRemoteCommand_Operation_cancelled_by_user;
+ public static String AuthInfo_Authentication_message;
+ public static String ExecCommand_Exec_command;
+
+ public static String GetInputStreamCommand_Receiving;
+
+ public static String GetOutputStreamCommand_Sending;
+ public static String JSchConnection_0;
+
+ public static String JSchConnection_Connection_was_cancelled;
+ public static String JSchConnection_connectionNotOpen;
+ public static String JSchConnection_Executing_command;
+ public static String JSchConnection_remote_address_must_be_set;
+ public static String JSchConnection_remotePort;
+ public static String JSchConnection_forwarding;
+ public static String JSchConnection_Remote_host_does_not_support_sftp;
+ public static String JSchConnection_Unable_to_open_sftp_channel;
+ public static String JSchConnection_username_must_be_set;
+ public static String JSchConnectionManager_connection_with_name_exists;
+ public static String JSchConnectionManager_cannotRemoveOpenConnection;
+ public static String JSchConnectionManager_invalidConnectionType;
+ public static String JSchConnectionProxyFactory_failed;
+ public static String JSchConnectionProxyFactory_ProxyCommandFailed;
+ public static String JSchConnectionProxyFactory_timedOut;
+ public static String JSchConnectionProxyFactory_wasCanceled;
+ public static String JSchProcess_exitValue_exception_msg;
+ public static String JSchProcessBuilder_Connection_is_not_open;
+ public static String JschFileStore_Connection_is_not_open;
+ public static String JschFileStore_File_doesnt_exist;
+ public static String JschFileStore_Invalid_connection_for_URI;
+ public static String JschFileStore_Is_a_directory;
+ public static String JschFileStore_No_remote_services_found_for_URI;
+ public static String JschFileStore_The_directory_could_not_be_created;
+
+ public static String JschFileStore_A_file_of_name_already_exists;
+ public static String JschFileStore_The_parent_of_directory_does_not_exist;
+
+ public static String ProxyCommandShell_0;
+
+ public static String ProxyConnection_0;
+
+ public static String ProxyConnection_2;
+
+ public static String ProxyConnectionBootstrap_0;
+
+ public static String ProxyConnectionBootstrap_1;
+
+ public static String ProxyConnectionBootstrap_2;
+
+ public static String ProxyConnectionBootstrap_3;
+
+ public static String ProxyConnectionBootstrap_4;
+
+ public static String ProxyConnectionBootstrap_5;
+
+ public static String ProxyConnectionBootstrap_6;
+
+ public static String ProxyConnectionBootstrap_7;
+
+ public static String ProxyConnectionBootstrap_8;
+
+ public static String ProxyConnectionBootstrap_9;
+
+ public static String ProxyFileStore_0;
+
+ public static String ProxyFileStore_1;
+
+ public static String ProxyFileStore_2;
+
+ public static String ProxyFileStore_3;
+
+ public static String ProxyFileStore_4;
+
+ public static String ProxyFileStore_5;
+
+ public static String ProxyFileStore_6;
+
+ public static String ProxyFileStore_7;
+
+ public static String ProxyProcessBuilder_0;
+
+ public static String ProxyProcessBuilder_1;
+
+ static {
+ // load message values from bundle file
+ NLS.initializeMessages(BUNDLE_ID, Messages.class);
+ }
+
+ private Messages() {
+ // cannot create new instance
+ }
+}
diff --git a/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/messages/messages.properties b/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/messages/messages.properties
new file mode 100644
index 00000000000..518d8f97b5f
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.core/src/org/eclipse/remote/internal/proxy/core/messages/messages.properties
@@ -0,0 +1,72 @@
+###############################################################################
+# Copyright (c) 2013 IBM Corporation.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# IBM Corporation - initial implementation
+###############################################################################
+AbstractCommand_0=Operation cancelled by user
+AbstractRemoteCommand_format1={0,number,integer} {1} completed
+AbstractRemoteCommand_format2={0,number,integer} {1} of {2,number,integer} {3} complete ({4,number,percent})
+AbstractRemoteCommand_Get_symlink_target=Get symlink target
+AbstractRemoteCommand_Operation_cancelled_by_user=Operation cancelled by user
+AuthInfo_Authentication_message=Authentication Message
+ExecCommand_Exec_command=Executing command "{0}"
+GetInputStreamCommand_Receiving=Receiving {0}:
+GetOutputStreamCommand_Sending=Sending {0}:
+JSchConnection_0=Connection canceled by user
+JSchConnection_Connection_was_cancelled=Connection was cancelled
+JSchConnection_connectionNotOpen=Connection is not open
+JSchConnection_Executing_command=Executing command "{0}"
+JSchConnection_remote_address_must_be_set=Remote address must be set before opening connection
+JSchConnection_remotePort=Could not allocate remote port
+JSchConnection_forwarding=Setting up remote forwarding
+JSchConnection_Remote_host_does_not_support_sftp=Remote host does not support sftp. Remote functionality requires sftp to be enabled
+JSchConnection_Unable_to_open_sftp_channel=Unable to open sftp channel: check sftp is enabled on remote host
+JSchConnection_username_must_be_set=Username must be set before opening connection
+JSchConnectionManager_connection_with_name_exists=A connection with name \"{0}\" already exists
+JSchConnectionManager_cannotRemoveOpenConnection=Cannot remove an open connection
+JSchConnectionManager_invalidConnectionType=Invalid connection type
+JSchConnectionProxyFactory_failed=failed
+JSchConnectionProxyFactory_ProxyCommandFailed=Proxy command "{0}" {1} and printed message "{2}"
+JSchConnectionProxyFactory_timedOut=timed out
+JSchConnectionProxyFactory_wasCanceled=was canceled
+JSchProcess_exitValue_exception_msg=process has not exited
+JSchProcessBuilder_Connection_is_not_open=Connection is not open
+JschFileStore_Connection_is_not_open=Connection is not open
+JschFileStore_File_doesnt_exist=File {0} doesn't exist
+JschFileStore_Invalid_connection_for_URI=Invalid connection for URI: "{0}"
+JschFileStore_Is_a_directory={0} is a directory
+JschFileStore_No_remote_services_found_for_URI=No remote services found for URI: "{0}"
+JschFileStore_The_directory_could_not_be_created=The directory {0} could not be created
+JschFileStore_A_file_of_name_already_exists=A file of name {0} already exists
+JschFileStore_The_parent_of_directory_does_not_exist=The parent of directory {0} does not exist
+ProxyCommandShell_0=Unable to locate connection for command shell
+ProxyConnection_0=Opening connection...
+ProxyConnection_2=User canceled opening connection
+ProxyConnectionBootstrap_0=Initializing
+ProxyConnectionBootstrap_1=Validating environment
+ProxyConnectionBootstrap_2=Unable to locate server bundle {0}
+ProxyConnectionBootstrap_3=Updating server proxy
+ProxyConnectionBootstrap_4=Starting server
+ProxyConnectionBootstrap_5=Checking server installation
+ProxyConnectionBootstrap_6=Unable to locate bootstrap shell
+ProxyConnectionBootstrap_7=Unable to start server: {0}
+ProxyConnectionBootstrap_8=User canceled connection open
+ProxyConnectionBootstrap_9=Loading bootstrap shell
+ProxyFileStore_0=No remote services found for URI {0}
+ProxyFileStore_1=Invalid connection for URI {0}
+ProxyFileStore_2=Connection is not open
+ProxyFileStore_3=The parent of directory {0} does not exist
+ProxyFileStore_4=The directory {0} could not be created
+ProxyFileStore_5=A file of name {0} already exists
+ProxyFileStore_6=File {0} does not exist
+ProxyFileStore_7={0} is a directory
+ProxyProcessBuilder_0=Unable to located connection for this process
+ProxyProcessBuilder_1=No command to run\!
diff --git a/remote/org.eclipse.remote.proxy.protocol.core/.classpath b/remote/org.eclipse.remote.proxy.protocol.core/.classpath
new file mode 100644
index 00000000000..e801ebfb468
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.protocol.core/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/remote/org.eclipse.remote.proxy.protocol.core/.project b/remote/org.eclipse.remote.proxy.protocol.core/.project
new file mode 100644
index 00000000000..8a48fee1d62
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.protocol.core/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.remote.proxy.protocol.core</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+ </natures>
+</projectDescription>
diff --git a/remote/org.eclipse.remote.proxy.protocol.core/.settings/org.eclipse.core.resources.prefs b/remote/org.eclipse.remote.proxy.protocol.core/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.protocol.core/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/remote/org.eclipse.remote.proxy.protocol.core/.settings/org.eclipse.jdt.core.prefs b/remote/org.eclipse.remote.proxy.protocol.core/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..e3a8104f9ca
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.protocol.core/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/remote/org.eclipse.remote.proxy.protocol.core/.settings/org.eclipse.jdt.launching.prefs b/remote/org.eclipse.remote.proxy.protocol.core/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 00000000000..f8a131b56e0
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.protocol.core/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_COMPILER_COMPLIANCE_DOES_NOT_MATCH_JRE=warning
+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=warning
diff --git a/remote/org.eclipse.remote.proxy.protocol.core/.settings/org.eclipse.jdt.ui.prefs b/remote/org.eclipse.remote.proxy.protocol.core/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.protocol.core/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/remote/org.eclipse.remote.proxy.protocol.core/.settings/org.eclipse.pde.api.tools.prefs b/remote/org.eclipse.remote.proxy.protocol.core/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 00000000000..ec9fbf321d0
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.protocol.core/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,184 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITH_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_FIELD=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERCLASS_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_CHANGED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENTS=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETERS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Error
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Warning
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+MISSING_EE_DESCRIPTIONS=Warning
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=false
+changed_execution_env=Error
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+incompatible_api_component_version_report_major_without_breaking_change=Warning
+incompatible_api_component_version_report_minor_without_api_change=Warning
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/remote/org.eclipse.remote.proxy.protocol.core/.settings/org.eclipse.pde.prefs b/remote/org.eclipse.remote.proxy.protocol.core/.settings/org.eclipse.pde.prefs
new file mode 100644
index 00000000000..d2dc703ba9e
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.protocol.core/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,35 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=2
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=2
+compilers.p.missing-version-export-package=2
+compilers.p.missing-version-import-package=2
+compilers.p.missing-version-require-bundle=2
+compilers.p.no-required-att=0
+compilers.p.no.automatic.module=1
+compilers.p.not-externalized-att=1
+compilers.p.service.component.without.lazyactivation=1
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/remote/org.eclipse.remote.proxy.protocol.core/META-INF/MANIFEST.MF b/remote/org.eclipse.remote.proxy.protocol.core/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..9c387125423
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.protocol.core/META-INF/MANIFEST.MF
@@ -0,0 +1,16 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.remote.proxy.protocol.core;singleton:=true
+Bundle-Version: 2.0.200.qualifier
+Bundle-Activator: org.eclipse.remote.internal.proxy.protocol.core.Activator
+Bundle-Vendor: %pluginProvider
+Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.remote.proxy.protocol.core,
+ org.eclipse.remote.proxy.protocol.core.exceptions
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Import-Package: org.eclipse.core.filesystem,
+ org.eclipse.core.filesystem.provider,
+ org.eclipse.core.runtime,
+ org.osgi.framework
diff --git a/remote/org.eclipse.remote.proxy.protocol.core/about.html b/remote/org.eclipse.remote.proxy.protocol.core/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.protocol.core/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/remote/org.eclipse.remote.proxy.protocol.core/build.properties b/remote/org.eclipse.remote.proxy.protocol.core/build.properties
new file mode 100644
index 00000000000..f946f4ece5a
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.protocol.core/build.properties
@@ -0,0 +1,9 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.properties,\
+ about.html
+src.includes = about.html
+
+
diff --git a/remote/org.eclipse.remote.proxy.protocol.core/plugin.properties b/remote/org.eclipse.remote.proxy.protocol.core/plugin.properties
new file mode 100644
index 00000000000..030ad74eb9f
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.protocol.core/plugin.properties
@@ -0,0 +1,14 @@
+###############################################################################
+# Copyright (c) 2016 Oak Ridge National Laboratory and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+###############################################################################
+
+pluginName=Remote Proxy Protocol Support
+pluginProvider=Eclipse PTP
diff --git a/remote/org.eclipse.remote.proxy.protocol.core/src/org/eclipse/remote/internal/proxy/protocol/core/Activator.java b/remote/org.eclipse.remote.proxy.protocol.core/src/org/eclipse/remote/internal/proxy/protocol/core/Activator.java
new file mode 100644
index 00000000000..b0a3d71ecfa
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.protocol.core/src/org/eclipse/remote/internal/proxy/protocol/core/Activator.java
@@ -0,0 +1,101 @@
+package org.eclipse.remote.internal.proxy.protocol.core;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Plugin;
+import org.eclipse.core.runtime.Status;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends Plugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.eclipse.remote.proxy.protocol.core"; //$NON-NLS-1$
+
+ // The shared instance
+ private static Activator plugin;
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+ /**
+ * Get unique identifier
+ *
+ * @return
+ * @since 5.0
+ */
+ public static String getUniqueIdentifier() {
+ if (getDefault() == null) {
+ return PLUGIN_ID;
+ }
+ return getDefault().getBundle().getSymbolicName();
+ }
+
+ /**
+ * Logs the specified status with this plug-in's log.
+ *
+ * @param status
+ * status to log
+ */
+ public static void log(IStatus status) {
+ getDefault().getLog().log(status);
+ }
+
+ /**
+ * Logs an internal error with the specified message.
+ *
+ * @param message
+ * the error message to log
+ */
+ public static void log(String message) {
+ log(new Status(IStatus.ERROR, getUniqueIdentifier(), IStatus.ERROR, message, null));
+ }
+
+ /**
+ * Logs an internal error with the specified throwable
+ *
+ * @param e
+ * the exception to be logged
+ */
+ public static void log(Throwable e) {
+ log(new Status(IStatus.ERROR, getUniqueIdentifier(), IStatus.ERROR, e.getMessage(), e));
+ }
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ /**
+ * Return the OSGi service with the given service interface.
+ *
+ * @param service service interface
+ * @return the specified service or null if it's not registered
+ */
+ public static <T> T getService(Class<T> service) {
+ BundleContext context = plugin.getBundle().getBundleContext();
+ ServiceReference<T> ref = context.getServiceReference(service);
+ return ref != null ? context.getService(ref) : null;
+ }
+
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+}
diff --git a/remote/org.eclipse.remote.proxy.protocol.core/src/org/eclipse/remote/proxy/protocol/core/Protocol.java b/remote/org.eclipse.remote.proxy.protocol.core/src/org/eclipse/remote/proxy/protocol/core/Protocol.java
new file mode 100644
index 00000000000..23eb1474f5e
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.protocol.core/src/org/eclipse/remote/proxy/protocol/core/Protocol.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Oak Ridge National Laboratory and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.remote.proxy.protocol.core;
+
+public class Protocol {
+ public static final int MAGIC = 0xAFFA;
+
+ public final static byte PROTO_COMMAND = 1;
+ public final static byte PROTO_SHUTDOWN = 2;
+ public final static byte PROTO_ERROR = 126;
+ public final static byte PROTO_OK = 0;
+
+ public final static short CmdBase = 100;
+
+ public final static short CMD_EXEC = CmdBase + 1;
+ public final static short CMD_SHELL = CmdBase + 2;
+ public final static short CMD_GETCWD = CmdBase + 3;
+ public final static short CMD_GETENV = CmdBase + 4;
+ public final static short CMD_CHILDINFOS = CmdBase + 5;
+ public final static short CMD_DELETE = CmdBase + 6;
+ public final static short CMD_FETCHINFO = CmdBase + 7;
+ public final static short CMD_GETINPUTSTREAM = CmdBase + 8;
+ public final static short CMD_GETOUTPUTSTREAM = CmdBase + 9;
+ public final static short CMD_MKDIR = CmdBase + 10;
+ public final static short CMD_PUTINFO = CmdBase + 11;
+ public final static short CMD_GETPROPERTIES = CmdBase + 12;
+
+ /**
+ * @since 2.0
+ */
+ public final static byte CONTROL_KILL = 0;
+ /**
+ * @since 2.0
+ */
+ public final static byte CONTROL_SETTERMINALSIZE = 1;
+}
diff --git a/remote/org.eclipse.remote.proxy.protocol.core/src/org/eclipse/remote/proxy/protocol/core/SerializableFileInfo.java b/remote/org.eclipse.remote.proxy.protocol.core/src/org/eclipse/remote/proxy/protocol/core/SerializableFileInfo.java
new file mode 100644
index 00000000000..6a20c5e1ee6
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.protocol.core/src/org/eclipse/remote/proxy/protocol/core/SerializableFileInfo.java
@@ -0,0 +1,93 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Oak Ridge National Laboratory and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.remote.proxy.protocol.core;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.io.Serializable;
+
+import org.eclipse.core.filesystem.EFS;
+import org.eclipse.core.filesystem.IFileInfo;
+import org.eclipse.core.filesystem.provider.FileInfo;
+
+public class SerializableFileInfo implements Serializable {
+ private static final long serialVersionUID = -1986643088683154145L;
+
+ private IFileInfo info;
+
+ public SerializableFileInfo() {
+ }
+
+ public SerializableFileInfo(IFileInfo info) {
+ setIFileInfo(info);
+ }
+
+ public void setIFileInfo(IFileInfo info) {
+ this.info = info;
+ }
+
+ public IFileInfo getIFileInfo() {
+ return info;
+ }
+
+ public void writeObject(DataOutputStream out) throws IOException {
+ out.writeUTF(info.getName());
+ boolean symlink = info.getAttribute(EFS.ATTRIBUTE_SYMLINK);
+ out.writeBoolean(symlink);
+ if (symlink) {
+ out.writeUTF(info.getStringAttribute(EFS.ATTRIBUTE_LINK_TARGET));
+ }
+ out.writeBoolean(info.exists());
+ out.writeLong(info.getLastModified());
+ out.writeLong(info.getLength());
+ out.writeBoolean(info.isDirectory());
+ out.writeBoolean(info.getAttribute(EFS.ATTRIBUTE_GROUP_READ));
+ out.writeBoolean(info.getAttribute(EFS.ATTRIBUTE_GROUP_WRITE));
+ out.writeBoolean(info.getAttribute(EFS.ATTRIBUTE_GROUP_EXECUTE));
+ out.writeBoolean(info.getAttribute(EFS.ATTRIBUTE_OTHER_READ));
+ out.writeBoolean(info.getAttribute(EFS.ATTRIBUTE_OTHER_WRITE));
+ out.writeBoolean(info.getAttribute(EFS.ATTRIBUTE_OTHER_EXECUTE));
+ out.writeBoolean(info.getAttribute(EFS.ATTRIBUTE_OWNER_READ));
+ out.writeBoolean(info.getAttribute(EFS.ATTRIBUTE_OWNER_WRITE));
+ out.writeBoolean(info.getAttribute(EFS.ATTRIBUTE_OWNER_EXECUTE));
+ }
+
+ public void readObject(DataInputStream in) throws IOException {
+ FileInfo newInfo = new FileInfo();
+
+ try {
+ newInfo.setName(in.readUTF());
+ boolean symlink = in.readBoolean();
+ newInfo.setAttribute(EFS.ATTRIBUTE_SYMLINK, symlink);
+ if (symlink) {
+ newInfo.setStringAttribute(EFS.ATTRIBUTE_LINK_TARGET, in.readUTF());
+ }
+ newInfo.setExists(in.readBoolean());
+ newInfo.setLastModified(in.readLong());
+ newInfo.setLength(in.readLong());
+ newInfo.setDirectory(in.readBoolean());
+ newInfo.setAttribute(EFS.ATTRIBUTE_GROUP_READ, in.readBoolean());
+ newInfo.setAttribute(EFS.ATTRIBUTE_GROUP_WRITE, in.readBoolean());
+ newInfo.setAttribute(EFS.ATTRIBUTE_GROUP_EXECUTE, in.readBoolean());
+ newInfo.setAttribute(EFS.ATTRIBUTE_OTHER_READ, in.readBoolean());
+ newInfo.setAttribute(EFS.ATTRIBUTE_OTHER_WRITE, in.readBoolean());
+ newInfo.setAttribute(EFS.ATTRIBUTE_OTHER_EXECUTE, in.readBoolean());
+ newInfo.setAttribute(EFS.ATTRIBUTE_OWNER_READ, in.readBoolean());
+ newInfo.setAttribute(EFS.ATTRIBUTE_OWNER_WRITE, in.readBoolean());
+ newInfo.setAttribute(EFS.ATTRIBUTE_OWNER_EXECUTE, in.readBoolean());
+ } catch (IOException e) {
+ newInfo.setError(IFileInfo.IO_ERROR);
+ }
+
+ setIFileInfo(newInfo);
+ }
+}
diff --git a/remote/org.eclipse.remote.proxy.protocol.core/src/org/eclipse/remote/proxy/protocol/core/StreamChannel.java b/remote/org.eclipse.remote.proxy.protocol.core/src/org/eclipse/remote/proxy/protocol/core/StreamChannel.java
new file mode 100644
index 00000000000..09de286f9a7
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.protocol.core/src/org/eclipse/remote/proxy/protocol/core/StreamChannel.java
@@ -0,0 +1,369 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Oak Ridge National Laboratory and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ *******************************************************************************/
+package org.eclipse.remote.proxy.protocol.core;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.concurrent.locks.Condition;
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReentrantLock;
+
+public class StreamChannel {
+ public static final int CAPACITY = 8192;
+
+ private class ChannelInputStream extends InputStream {
+ private final Lock lock = new ReentrantLock();
+ private final Condition cond = lock.newCondition();
+ private final StreamChannel channel;
+
+ private int currentPos;
+ private int currentSize;
+ private boolean connected = true;
+ private int inputRequestCount;
+ private byte[] buffer = new byte[CAPACITY];
+
+ public ChannelInputStream(StreamChannel channel) {
+ this.channel = channel;
+ }
+
+ @Override
+ public synchronized int read() throws IOException {
+ byte[] b = new byte[1];
+ if (read(b, 0, 1) != 1) {
+ return -1;
+ }
+ return b[0] & 0xff;
+ }
+
+ @Override
+ public int available() throws IOException {
+ lock.lock();
+ try {
+ return currentSize - currentPos;
+ } finally {
+ lock.unlock();
+ }
+ }
+
+ @Override
+ public synchronized int read(byte b[], int off, int len) throws IOException {
+ if (len <= 0) {
+ return 0;
+ }
+ int moreSpace;
+ lock.lock();
+ try {
+ if (currentPos >= currentSize) {
+ currentPos = currentSize = 0;
+ } else if (currentPos >= CAPACITY / 2) {
+ System.arraycopy(buffer, currentPos, buffer, 0, currentSize - currentPos);
+ currentSize -= currentPos;
+ currentPos = 0;
+ }
+ int freeSpace = CAPACITY - currentSize;
+ moreSpace = Math.max(freeSpace - inputRequestCount, 0);
+ } finally {
+ lock.unlock();
+ }
+ if (moreSpace > 0) {
+ mux.sendRequestCmd(StreamChannel.this, moreSpace);
+ }
+ lock.lock();
+ try {
+ inputRequestCount += moreSpace;
+ while (currentPos >= currentSize && connected) {
+ try {
+ cond.await();
+ } catch (InterruptedException e) {
+ }
+ }
+ if (!connected && currentPos >= currentSize) {
+ return -1;
+ }
+
+ int available = currentSize - currentPos;
+ if (len < available) {
+ System.arraycopy(buffer, currentPos, b, off, len);
+ currentPos += len;
+ return len;
+ } else {
+ System.arraycopy(buffer, currentPos, b, off, available);
+ currentPos = currentSize = 0;
+ return available;
+ }
+ } finally {
+ lock.unlock();
+ }
+ }
+
+ @Override
+ public void close() throws IOException {
+ channel.closeOutput();
+ disconnect();
+ }
+
+ void receive(byte[] buf, int len) throws IOException {
+ lock.lock();
+ try {
+ if (currentPos > 0 && (CAPACITY - currentSize) < len) {
+ System.arraycopy(buffer, currentPos, buffer, 0, currentSize - currentPos);
+ currentSize -= currentPos;
+ currentPos = 0;
+ }
+ if (CAPACITY - currentSize < len) {
+ throw new IOException("Receive buffer overflow");
+ }
+ System.arraycopy(buf, 0, buffer, currentSize, len);
+ currentSize += len;
+ inputRequestCount -= len;
+ cond.signalAll();
+ } finally {
+ lock.unlock();
+ }
+ }
+
+ void disconnect() {
+ lock.lock();
+ try {
+ connected = false;
+ cond.signalAll();
+ } finally {
+ lock.unlock();
+ }
+ }
+
+ boolean isConnected() {
+ lock.lock();
+ try {
+ return connected;
+ } finally {
+ lock.unlock();
+ }
+ }
+ }
+
+ private class ChannelOutputStream extends OutputStream {
+ private final Lock lock = new ReentrantLock();
+ private final Condition cond = lock.newCondition();
+ private final StreamChannel channel;
+
+ private int currentPos;
+ private byte[] buffer = new byte[CAPACITY];
+ private boolean connected = true;
+ private int outputRequestCount;
+
+ public ChannelOutputStream(StreamChannel channel) {
+ this.channel = channel;
+ }
+
+ @Override
+ public synchronized void write(int b) throws IOException {
+ while (currentPos >= CAPACITY) {
+ send();
+ }
+ buffer[currentPos++] = (byte) b;
+ }
+
+ @Override
+ public synchronized void flush() throws IOException {
+ while (currentPos > 0) {
+ send();
+ }
+ }
+
+ @Override
+ public synchronized void write(byte[] b, int off, int len) throws IOException {
+ if (len <= 0) {
+ return;
+ }
+ if (len <= CAPACITY - currentPos) {
+ System.arraycopy(b, off, buffer, currentPos, len);
+ currentPos += len;
+ return;
+ }
+ flush();
+ int canSend;
+ while (true) {
+ lock.lock();
+ try {
+ while ((canSend = outputRequestCount) == 0 && connected) {
+ try {
+ cond.await();
+ } catch (InterruptedException e) {
+ }
+ }
+ if (!connected) {
+ throw new IOException("channel closed");
+ }
+ } finally {
+ lock.unlock();
+ }
+
+ if (canSend < len) {
+ mux.sendTransmitCmd(StreamChannel.this, b, off, canSend);
+ off += canSend;
+ len -= canSend;
+ lock.lock();
+ outputRequestCount -= canSend;
+ lock.unlock();
+ } else {
+ mux.sendTransmitCmd(StreamChannel.this, b, off, len);
+ lock.lock();
+ outputRequestCount -= len;
+ lock.unlock();
+ break;
+ }
+ }
+ }
+
+ void send() throws IOException {
+ int canSend;
+ lock.lock();
+ try {
+ while ((canSend = outputRequestCount) == 0 && connected) {
+ try {
+ cond.await();
+ } catch (InterruptedException e) {
+ }
+ }
+ if (!connected) {
+ throw new IOException("channel closed");
+ }
+ } finally {
+ lock.unlock();
+ }
+ if (canSend < currentPos) {
+ mux.sendTransmitCmd(StreamChannel.this, buffer, 0, canSend);
+ currentPos -= canSend;
+ System.arraycopy(buffer, canSend, buffer, 0, currentPos);
+ lock.lock();
+ outputRequestCount -= canSend;
+ lock.unlock();
+ } else {
+ mux.sendTransmitCmd(StreamChannel.this, buffer, 0, currentPos);
+ lock.lock();
+ outputRequestCount -= currentPos;
+ lock.unlock();
+ currentPos = 0;
+ }
+ }
+
+ @Override
+ public void close() throws IOException {
+ flush();
+ channel.closeInput();
+ disconnect();
+ }
+
+ void request(int len) {
+ lock.lock();
+ outputRequestCount += len;
+ cond.signalAll();
+ lock.unlock();
+ }
+
+ void disconnect() {
+ lock.lock();
+ try {
+ connected = false;
+ cond.signalAll();
+ } finally {
+ lock.unlock();
+ }
+ }
+
+ boolean isConnected() {
+ lock.lock();
+ try {
+ return connected;
+ } finally {
+ lock.unlock();
+ }
+
+ }
+ }
+
+ private final StreamChannelManager mux;
+ private final int channelId;
+ private final ChannelInputStream min = new ChannelInputStream(this);
+ private final ChannelOutputStream mout = new ChannelOutputStream(this);
+
+ private boolean open;
+
+ public StreamChannel(StreamChannelManager mux, int id) {
+ this.mux = mux;
+ channelId = id;
+ open = true;
+ }
+
+ public int getId() {
+ return channelId;
+ }
+
+ public InputStream getInputStream() {
+ return min;
+ }
+
+ public OutputStream getOutputStream() {
+ return mout;
+ }
+
+ public boolean isOpen() {
+ return open;
+ }
+
+ public void close() throws IOException {
+ mux.sendCloseCmd(this);
+ }
+
+ void receive(byte[] buf, int len) throws IOException {
+ min.receive(buf, len);
+ }
+
+ void request(int len) {
+ mout.request(len);
+ }
+
+ void disconnect() {
+ min.disconnect();
+ mout.disconnect();
+ }
+
+ void setClosed() {
+ open = false;
+ }
+
+ void disconnectInput() {
+ min.disconnect();
+ }
+
+ void disconnectOutput() {
+ mout.disconnect();
+ }
+
+ void closeInput() throws IOException {
+ mux.sendCloseInputCmd(this);
+ }
+
+ void closeOutput() throws IOException {
+ mux.sendCloseOutputCmd(this);
+ }
+
+ boolean isInputConnected() {
+ return min.isConnected();
+ }
+
+ boolean isOutputConnected() {
+ return mout.isConnected();
+ }
+}
diff --git a/remote/org.eclipse.remote.proxy.protocol.core/src/org/eclipse/remote/proxy/protocol/core/StreamChannelManager.java b/remote/org.eclipse.remote.proxy.protocol.core/src/org/eclipse/remote/proxy/protocol/core/StreamChannelManager.java
new file mode 100644
index 00000000000..854972e0e45
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.protocol.core/src/org/eclipse/remote/proxy/protocol/core/StreamChannelManager.java
@@ -0,0 +1,567 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Oak Ridge National Laboratory and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ *******************************************************************************/
+package org.eclipse.remote.proxy.protocol.core;
+
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.EOFException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.LinkedBlockingQueue;
+
+public class StreamChannelManager implements Runnable {
+ public interface IChannelListener {
+ public void newChannel(StreamChannel chan);
+
+ public void closeChannel(StreamChannel chan);
+ }
+
+ private class Sender implements Runnable {
+ private OutputStream out;
+ private BlockingQueue<ByteArrayOutputStream> queue = new LinkedBlockingQueue<>();
+ private boolean running = true;
+
+ public Sender(OutputStream out) {
+ this.out = out;
+ }
+
+ public void sendOpenCmd(int id) throws IOException {
+ ByteArrayOutputStream bytes = new ByteArrayOutputStream();
+ DataOutputStream data = new DataOutputStream(bytes);
+ data.writeByte(CMD_OPEN);
+ data.writeByte(id);
+ try {
+ queue.put(bytes);
+ } catch (InterruptedException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ public void sendTransmitCmd(int id, byte buf[], int off, int len) throws IOException {
+ ByteArrayOutputStream bytes = new ByteArrayOutputStream();
+ DataOutputStream data = new DataOutputStream(bytes);
+ data.writeByte(CMD_TRANSMIT);
+ data.writeByte(id);
+ data.writeInt(len);
+ data.write(buf, off, len);
+ try {
+ queue.put(bytes);
+ } catch (InterruptedException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ public void sendCloseCmd(int id) throws IOException {
+ ByteArrayOutputStream bytes = new ByteArrayOutputStream();
+ DataOutputStream data = new DataOutputStream(bytes);
+ data.writeByte(CMD_CLOSE);
+ data.writeByte(id);
+ try {
+ queue.put(bytes);
+ } catch (InterruptedException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ public void sendCloseAckCmd(int id) throws IOException {
+ ByteArrayOutputStream bytes = new ByteArrayOutputStream();
+ DataOutputStream data = new DataOutputStream(bytes);
+ data.writeByte(CMD_CLOSEACK);
+ data.writeByte(id);
+ try {
+ queue.put(bytes);
+ } catch (InterruptedException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ public void sendRequestCmd(int id, int len) throws IOException {
+ ByteArrayOutputStream bytes = new ByteArrayOutputStream();
+ DataOutputStream data = new DataOutputStream(bytes);
+ data.writeByte(CMD_REQUEST);
+ data.writeByte(id);
+ data.writeInt(len);
+ try {
+ queue.put(bytes);
+ } catch (InterruptedException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ public void sendCloseInputCmd(int id) throws IOException {
+ ByteArrayOutputStream bytes = new ByteArrayOutputStream();
+ DataOutputStream data = new DataOutputStream(bytes);
+ data.writeByte(CMD_CLOSE_INPUT);
+ data.writeByte(id);
+ try {
+ queue.put(bytes);
+ } catch (InterruptedException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ public void sendCloseOutputCmd(int id) throws IOException {
+ ByteArrayOutputStream bytes = new ByteArrayOutputStream();
+ DataOutputStream data = new DataOutputStream(bytes);
+ data.writeByte(CMD_CLOSE_OUTPUT);
+ data.writeByte(id);
+ try {
+ queue.put(bytes);
+ } catch (InterruptedException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ public void shutdown() {
+ running = false;
+ try {
+ queue.put(new ByteArrayOutputStream());
+ } catch (InterruptedException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public void run() {
+ try {
+ while (running) {
+ ByteArrayOutputStream bytes = queue.take();
+ if (bytes != null) {
+ bytes.writeTo(out);
+ out.flush();
+ }
+ }
+ } catch (InterruptedException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ }
+
+ private boolean isMyChannel(int id) {
+ return !(isServer ^ ((id & SERVER_ID_MASK) == SERVER_ID_MASK));
+ }
+
+ private class Receiver implements Runnable {
+ private DataInputStream dataIn;
+
+ public Receiver(InputStream in) {
+ this.dataIn = new DataInputStream(in);
+ }
+
+ @Override
+ public void run() {
+ StreamChannel chan;
+ running = true;
+ try {
+ while (true) {
+ debugPrint("start read");
+ int cmd = dataIn.readByte() & 0xff;
+ int id = dataIn.readByte() & 0xff;
+
+ switch (cmd) {
+ case CMD_OPEN:
+ debugPrint("received cmd=OPEN id=" + id);
+ chan = channels.get(id);
+ if (chan != null) {
+ throw new IOException("Channel already exists");
+ }
+ if (!isServer && (id & SERVER_ID_MASK) != SERVER_ID_MASK) {
+ throw new IOException("Client received invalid server channel id: " + id);
+ }
+ if (isServer && (id & SERVER_ID_MASK) == SERVER_ID_MASK) {
+ throw new IOException("Server received invalid client channel id: " + id);
+ }
+ chan = new StreamChannel(StreamChannelManager.this, id);
+ channels.put(id, chan);
+ newChannelCallback(chan);
+ break;
+
+ case CMD_CLOSE:
+ /*
+ * Received a command to close the channel.
+ * Clean up channel and free channel ID if we allocated it.
+ */
+ debugPrint("received cmd=CLOSE id=" + id);
+ chan = channels.get(id);
+ if (chan == null) {
+ throw new IOException("CLOSE: Invalid channel id: " + id);
+ }
+ chan.disconnect();
+ if (chan.isOpen()) {
+ sendCloseAckCmd(chan);
+ }
+ closeChannelCallback(chan);
+ channels.remove(id);
+ if (isMyChannel(id)) {
+ freeId(id);
+ }
+ break;
+
+ case CMD_CLOSEACK:
+ /*
+ * Received acknowledgement for our close command.
+ * Clean up channel and free channel ID if we allocated it.
+ */
+ debugPrint("received cmd=CLOSEACK id=" + id);
+ chan = channels.get(id);
+ if (chan == null) {
+ throw new IOException("CLOSEACK: Invalid channel id");
+ }
+ if (chan.isOpen()) {
+ throw new IOException("Channel is still open");
+ }
+ chan.disconnect();
+ channels.remove(id);
+ if (isMyChannel(id)) {
+ freeId(id);
+ }
+ break;
+
+ case CMD_TRANSMIT:
+ debugPrint("received cmd=TRANSMIT id=" + id);
+ chan = channels.get(id);
+ if (chan == null) {
+ throw new IOException("TRANSMIT: Invalid channel id: " + id);
+ }
+ int len = dataIn.readInt();
+ byte[] buf = new byte[len];
+ dataIn.readFully(buf, 0, len);
+ chan.receive(buf, len);
+ break;
+
+ case CMD_REQUEST:
+ chan = channels.get(id);
+ if (chan == null) {
+ throw new IOException("REQUEST: Invalid channel id: " + id);
+ }
+ int req = dataIn.readInt();
+ debugPrint("received cmd=REQUEST id=" + id + " len=" + req);
+ chan.request(req);
+ break;
+
+ case CMD_CLOSE_INPUT:
+ /*
+ * Received a command to close the input side of the channel.
+ */
+ debugPrint("received cmd=CLOSE_INPUT id=" + id);
+ chan = channels.get(id);
+ if (chan == null) {
+ throw new IOException("CLOSE: Invalid channel id: " + id);
+ }
+ chan.disconnectInput();
+ break;
+
+ case CMD_CLOSE_OUTPUT:
+ /*
+ * Received a command to close the output side of the channel.
+ */
+ debugPrint("received cmd=CLOSE_OUTPUT id=" + id);
+ chan = channels.get(id);
+ if (chan == null) {
+ throw new IOException("CLOSE: Invalid channel id: " + id);
+ }
+ chan.disconnectOutput();
+ break;
+
+ default:
+ synchronized (System.err) {
+ System.err.print("invalid command: " + dump_byte((byte) cmd) + dump_byte((byte) id));
+ }
+ try {
+ while (true) {
+ byte b = dataIn.readByte();
+ System.err.print(dump_byte(b));
+ }
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ throw new IOException("Invalid command: " + cmd);
+ }
+ }
+ } catch (EOFException e) {
+ // Finish
+ } catch (Exception e) {
+ e.printStackTrace();
+ debugPrint("run got exception:" + e.getMessage());
+ } finally {
+ debugPrint("shutting down manager");
+ StreamChannelManager.this.shutdown();
+ }
+ }
+
+ public void shutdown() {
+ try {
+ dataIn.close();
+ } catch (IOException e) {
+ // Ignore
+ }
+ }
+ }
+
+ private final static int CMD_OPEN = 0xA1; // Open a new channel
+ private final static int CMD_CLOSE = 0xA2; // Close a channel; acknowledgement required
+ private final static int CMD_CLOSEACK = 0xA3; // Channel close acknowledgement
+ private final static int CMD_REQUEST = 0xA4; // Request buffer space
+ private final static int CMD_TRANSMIT = 0xA5; // Transmit a buffer
+ private final static int CMD_CLOSE_INPUT = 0xA6; // Close input side of the channel; no acknowledgement required
+ private final static int CMD_CLOSE_OUTPUT = 0xA7; // Close output side of the channel; no acknowledgement required
+
+ private final static int SERVER_ID_MASK = 1 << 15;
+ private final static int MAX_CHANNELS = SERVER_ID_MASK >> 1;
+
+ private final Map<Integer, StreamChannel> channels = Collections
+ .synchronizedMap(new HashMap<Integer, StreamChannel>());
+ private final List<IChannelListener> listeners = Collections.synchronizedList(new ArrayList<IChannelListener>());
+
+ private Set<Short> usedIds = new HashSet<>();
+ private int nextUnusedChannelId;
+ private boolean isServer;
+
+ private volatile boolean running = true;
+
+ private Sender sender;
+ private Receiver receiver;
+
+ private boolean debug = false;
+
+ public StreamChannelManager(InputStream in, OutputStream out) {
+ sender = new Sender(new BufferedOutputStream(out));
+ receiver = new Receiver(new BufferedInputStream(in));
+ }
+
+ /**
+ * Clients allocate IDs with leading bit 0
+ * Servers allocate IDs with leading bit 1
+ *
+ * Reuse an ID if it is not longer being used.
+ *
+ * @return new ID
+ */
+ synchronized int newId() throws IOException {
+ if (!usedIds.isEmpty()) {
+ Short id = usedIds.iterator().next();
+ usedIds.remove(id);
+ debugPrint("recover id=" + id);
+ return id;
+ }
+ int nextId = nextUnusedChannelId;
+ if (nextUnusedChannelId++ > (MAX_CHANNELS - 1)) {
+ throw new IOException("Maximum number of channels exceeded");
+ }
+ return nextId | (isServer ? SERVER_ID_MASK : 0);
+ }
+
+ synchronized void freeId(int id) {
+ debugPrint("free id=" + id);
+ usedIds.add((short) id);
+ }
+
+ void dump_buf(String pref, byte[] b, int off, int len) {
+ System.err.print(pref + ": ");
+ for (int i = off; i < len + off; i++) {
+ if (b[i] <= 32 || b[i] > 126) {
+ System.err.print(String.format(" 0x%02x ", b[i]));
+ } else {
+ System.err.print((char) b[i]);
+ }
+ }
+ System.err.println();
+ }
+
+ public boolean isServer() {
+ return isServer;
+ }
+
+ public void setServer(boolean server) {
+ isServer = server;
+ }
+
+ public void addListener(IChannelListener listener) {
+ if (!listeners.contains(listener)) {
+ listeners.add(listener);
+ }
+ }
+
+ public void removeListener(IChannelListener listener) {
+ if (listeners.contains(listener)) {
+ listeners.remove(listener);
+ }
+ }
+
+ protected void newChannelCallback(StreamChannel chan) {
+ for (IChannelListener listener : listeners.toArray(new IChannelListener[listeners.size()])) {
+ listener.newChannel(chan);
+ }
+ }
+
+ protected void closeChannelCallback(StreamChannel chan) {
+ for (IChannelListener listener : listeners.toArray(new IChannelListener[listeners.size()])) {
+ listener.closeChannel(chan);
+ }
+ }
+
+ public String dump_byte(byte b) {
+ if (b <= 32 || b > 126) {
+ return String.format(" 0x%02x ", b);
+ }
+
+ return String.valueOf((char) b);
+ }
+
+ public StreamChannel openChannel() throws IOException {
+ if (!running) {
+ throw new IOException("Multiplexer is not running");
+ }
+
+ StreamChannel chan = new StreamChannel(this, newId());
+ channels.put(chan.getId(), chan);
+
+ debugPrint("send cmd=OPEN id=" + chan.getId());
+ sender.sendOpenCmd(chan.getId());
+
+ return chan;
+ }
+
+ synchronized void sendTransmitCmd(StreamChannel chan, byte buf[], int off, int len) throws IOException {
+ if (running && chan.isOpen()) {
+ debugPrint(
+ "send cmd=TRANSMIT id=" + chan.getId() + " len=" + len + " off=" + off + " buflen=" + buf.length);
+ sender.sendTransmitCmd(chan.getId(), buf, off, len);
+ }
+ }
+
+ synchronized void sendCloseCmd(StreamChannel chan) throws IOException {
+ if (running && chan.isOpen()) {
+ debugPrint("send cmd=CLOSE id=" + chan.getId());
+ chan.disconnect();
+ sender.sendCloseCmd(chan.getId());
+ chan.setClosed();
+ }
+ }
+
+ synchronized void sendCloseAckCmd(StreamChannel chan) throws IOException {
+ if (running && chan.isOpen()) {
+ debugPrint("send cmd=CLOSEACK id=" + chan.getId());
+ sender.sendCloseAckCmd(chan.getId());
+ chan.setClosed();
+ }
+ }
+
+ synchronized void sendRequestCmd(StreamChannel chan, int len) throws IOException {
+ if (running && chan.isOpen()) {
+ debugPrint("send cmd=REQUEST id=" + chan.getId() + " len=" + len);
+ sender.sendRequestCmd(chan.getId(), len);
+ }
+ }
+
+ synchronized void sendCloseInputCmd(StreamChannel chan) throws IOException {
+ if (running && chan.isOpen()) {
+ if (!chan.isOutputConnected()) {
+ sendCloseCmd(chan);
+ } else {
+ debugPrint("send cmd=CLOSE_INPUT id=" + chan.getId());
+ sender.sendCloseInputCmd(chan.getId());
+ }
+ }
+ }
+
+ synchronized void sendCloseOutputCmd(StreamChannel chan) throws IOException {
+ if (running && chan.isOpen()) {
+ if (!chan.isInputConnected()) {
+ sendCloseCmd(chan);
+ } else {
+ debugPrint("send cmd=CLOSE_OUTPUT id=" + chan.getId());
+ sender.sendCloseOutputCmd(chan.getId());
+ }
+ }
+ }
+
+ public void debugPrint(String x) {
+ if (debug) {
+ synchronized (System.err) {
+ System.err.println(x);
+ }
+ }
+ }
+
+ public void shutdown() {
+ if (!running) {
+ return;
+ }
+ running = false;
+
+ synchronized (channels) {
+ for (StreamChannel c : channels.values()) {
+ c.disconnect();
+ }
+ }
+ channels.clear();
+
+ sender.shutdown();
+ receiver.shutdown();
+ debugPrint("chan mpx stopped");
+ // Should in and out be closed also?
+ }
+
+ private String asString(int v) {
+ switch (v) {
+ case CMD_OPEN:
+ return "OPEN";
+
+ case CMD_CLOSE:
+ return "CLOSE";
+
+ case CMD_CLOSEACK:
+ return "CLOSEACK";
+
+ case CMD_TRANSMIT:
+ return "TRANSMIT";
+
+ case CMD_REQUEST:
+ return "REQUEST";
+ }
+ return "<UNKNOWN>";
+ }
+
+ @Override
+ public void run() {
+ debugPrint("mux starting");
+ new Thread(sender, "mux sender").start();
+ receiver.run();
+ }
+}
diff --git a/remote/org.eclipse.remote.proxy.protocol.core/src/org/eclipse/remote/proxy/protocol/core/exceptions/ProxyException.java b/remote/org.eclipse.remote.proxy.protocol.core/src/org/eclipse/remote/proxy/protocol/core/exceptions/ProxyException.java
new file mode 100644
index 00000000000..e32e8fd7ff6
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.protocol.core/src/org/eclipse/remote/proxy/protocol/core/exceptions/ProxyException.java
@@ -0,0 +1,20 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Oak Ridge National Laboratory and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.remote.proxy.protocol.core.exceptions;
+
+public class ProxyException extends Exception {
+
+ private static final long serialVersionUID = 1L;
+
+ public ProxyException(String message) {
+ super(message);
+ }
+}
diff --git a/remote/org.eclipse.remote.proxy.server.core/.classpath b/remote/org.eclipse.remote.proxy.server.core/.classpath
new file mode 100644
index 00000000000..e801ebfb468
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.core/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/remote/org.eclipse.remote.proxy.server.core/.project b/remote/org.eclipse.remote.proxy.server.core/.project
new file mode 100644
index 00000000000..591801c1a12
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.core/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.remote.proxy.server.core</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+ </natures>
+</projectDescription>
diff --git a/remote/org.eclipse.remote.proxy.server.core/.settings/org.eclipse.core.resources.prefs b/remote/org.eclipse.remote.proxy.server.core/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.core/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/remote/org.eclipse.remote.proxy.server.core/.settings/org.eclipse.jdt.core.prefs b/remote/org.eclipse.remote.proxy.server.core/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..e3a8104f9ca
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.core/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/remote/org.eclipse.remote.proxy.server.core/.settings/org.eclipse.jdt.launching.prefs b/remote/org.eclipse.remote.proxy.server.core/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 00000000000..f8a131b56e0
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.core/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_COMPILER_COMPLIANCE_DOES_NOT_MATCH_JRE=warning
+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=warning
diff --git a/remote/org.eclipse.remote.proxy.server.core/.settings/org.eclipse.jdt.ui.prefs b/remote/org.eclipse.remote.proxy.server.core/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.core/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/remote/org.eclipse.remote.proxy.server.core/.settings/org.eclipse.pde.api.tools.prefs b/remote/org.eclipse.remote.proxy.server.core/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 00000000000..ec9fbf321d0
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.core/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,184 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITH_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_FIELD=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERCLASS_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_CHANGED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENTS=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETERS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Error
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Warning
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+MISSING_EE_DESCRIPTIONS=Warning
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=false
+changed_execution_env=Error
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+incompatible_api_component_version_report_major_without_breaking_change=Warning
+incompatible_api_component_version_report_minor_without_api_change=Warning
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/remote/org.eclipse.remote.proxy.server.core/.settings/org.eclipse.pde.core.prefs b/remote/org.eclipse.remote.proxy.server.core/.settings/org.eclipse.pde.core.prefs
new file mode 100644
index 00000000000..d40b9600d07
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.core/.settings/org.eclipse.pde.core.prefs
@@ -0,0 +1,4 @@
+eclipse.preferences.version=1
+pluginProject.equinox=false
+pluginProject.extensions=true
+resolve.requirebundle=false
diff --git a/remote/org.eclipse.remote.proxy.server.core/.settings/org.eclipse.pde.prefs b/remote/org.eclipse.remote.proxy.server.core/.settings/org.eclipse.pde.prefs
new file mode 100644
index 00000000000..d2dc703ba9e
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.core/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,35 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=2
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=2
+compilers.p.missing-version-export-package=2
+compilers.p.missing-version-import-package=2
+compilers.p.missing-version-require-bundle=2
+compilers.p.no-required-att=0
+compilers.p.no.automatic.module=1
+compilers.p.not-externalized-att=1
+compilers.p.service.component.without.lazyactivation=1
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/remote/org.eclipse.remote.proxy.server.core/META-INF/MANIFEST.MF b/remote/org.eclipse.remote.proxy.server.core/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..e9d2baa1937
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.core/META-INF/MANIFEST.MF
@@ -0,0 +1,18 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.remote.proxy.server.core;singleton:=true
+Bundle-Version: 1.0.200.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Import-Package: org.eclipse.core.filesystem,
+ org.eclipse.core.runtime,
+ org.eclipse.core.runtime.adaptor,
+ org.eclipse.equinox.app,
+ org.eclipse.remote.core,
+ org.eclipse.remote.proxy.protocol.core,
+ org.eclipse.remote.proxy.protocol.core.exceptions,
+ org.osgi.framework,
+ org.osgi.framework.launch
+Bundle-Vendor: %pluginProvider
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.cdt.core.native
diff --git a/remote/org.eclipse.remote.proxy.server.core/about.html b/remote/org.eclipse.remote.proxy.server.core/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.core/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/remote/org.eclipse.remote.proxy.server.core/build.properties b/remote/org.eclipse.remote.proxy.server.core/build.properties
new file mode 100644
index 00000000000..7b3c227b84a
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.core/build.properties
@@ -0,0 +1,8 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ plugin.properties,\
+ about.html
+src.includes = about.html
diff --git a/remote/org.eclipse.remote.proxy.server.core/plugin.properties b/remote/org.eclipse.remote.proxy.server.core/plugin.properties
new file mode 100644
index 00000000000..896e3fcdef7
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.core/plugin.properties
@@ -0,0 +1,14 @@
+###############################################################################
+# Copyright (c) 2016 Oak Ridge National Laboratory and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+###############################################################################
+
+pluginName=Remote Proxy Server Support
+pluginProvider=Eclipse PTP
diff --git a/remote/org.eclipse.remote.proxy.server.core/plugin.xml b/remote/org.eclipse.remote.proxy.server.core/plugin.xml
new file mode 100644
index 00000000000..43ce2939415
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.core/plugin.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension
+ id="application"
+ point="org.eclipse.core.runtime.applications">
+ <application
+ cardinality="singleton-global"
+ thread="main"
+ visible="true">
+ <run
+ class="org.eclipse.remote.internal.proxy.server.core.Application">
+ </run>
+ </application>
+ </extension>
+
+</plugin>
diff --git a/remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/Application.java b/remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/Application.java
new file mode 100644
index 00000000000..7fb9defe377
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/Application.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Oak Ridge National Laboratory and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.remote.internal.proxy.server.core;
+
+import java.nio.ByteBuffer;
+
+import org.eclipse.equinox.app.IApplication;
+import org.eclipse.equinox.app.IApplicationContext;
+import org.eclipse.remote.proxy.protocol.core.Protocol;
+
+/**
+ * This class controls all aspects of the application's execution
+ */
+public class Application implements IApplication {
+ private Server server = new Server();
+
+ @Override
+ public Object start(IApplicationContext context) throws Exception {
+ String[] args = (String[]) context.getArguments().get(IApplicationContext.APPLICATION_ARGS);
+ for (String arg : args) {
+ if (arg.equals("-magic")) { //$NON-NLS-1$
+ ByteBuffer b = ByteBuffer.allocate(4);
+ b.putInt(Protocol.MAGIC);
+ System.out.write(b.array());
+ }
+ }
+ server.start();
+ server.waitFor();
+ return IApplication.EXIT_OK;
+ }
+
+ @Override
+ public void stop() {
+ // Nothing
+ }
+}
diff --git a/remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/CommandServer.java b/remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/CommandServer.java
new file mode 100644
index 00000000000..56f7d38ee07
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/CommandServer.java
@@ -0,0 +1,295 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Oak Ridge National Laboratory and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.remote.internal.proxy.server.core;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.EOFException;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.remote.internal.proxy.server.core.commands.AbstractServerCommand;
+import org.eclipse.remote.internal.proxy.server.core.commands.ServerChildInfosCommand;
+import org.eclipse.remote.internal.proxy.server.core.commands.ServerDeleteCommand;
+import org.eclipse.remote.internal.proxy.server.core.commands.ServerExecCommand;
+import org.eclipse.remote.internal.proxy.server.core.commands.ServerFetchInfoCommand;
+import org.eclipse.remote.internal.proxy.server.core.commands.ServerGetCwdCommand;
+import org.eclipse.remote.internal.proxy.server.core.commands.ServerGetEnvCommand;
+import org.eclipse.remote.internal.proxy.server.core.commands.ServerGetInputStreamCommand;
+import org.eclipse.remote.internal.proxy.server.core.commands.ServerGetOutputStreamCommand;
+import org.eclipse.remote.internal.proxy.server.core.commands.ServerGetPropertiesCommand;
+import org.eclipse.remote.internal.proxy.server.core.commands.ServerMkdirCommand;
+import org.eclipse.remote.internal.proxy.server.core.commands.ServerPutInfoCommand;
+import org.eclipse.remote.internal.proxy.server.core.commands.ServerShellCommand;
+import org.eclipse.remote.proxy.protocol.core.Protocol;
+import org.eclipse.remote.proxy.protocol.core.SerializableFileInfo;
+import org.eclipse.remote.proxy.protocol.core.StreamChannel;
+import org.eclipse.remote.proxy.protocol.core.exceptions.ProxyException;
+
+public class CommandServer implements Runnable {
+ private Server server;
+ private DataInputStream cmdIn;
+ private DataOutputStream cmdOut;
+ private boolean running = true;
+ private StreamChannel chan;
+
+ public CommandServer(StreamChannel chan, Server server) {
+ this.chan = chan;
+ this.server = server;
+ this.cmdIn = new DataInputStream(chan.getInputStream());
+ this.cmdOut = new DataOutputStream(chan.getOutputStream());
+ }
+
+ @Override
+ public void run() {
+ new Thread("cmd reader") { //$NON-NLS-1$
+ @Override
+ public void run() {
+ try {
+ while (running) {
+ byte proto = cmdIn.readByte();
+ switch (proto) {
+ case Protocol.PROTO_COMMAND:
+ try {
+ dispatchCommand(cmdIn);
+ sendOKResult();
+ } catch (ProxyException e) {
+ sendErrorResult(e.getMessage());
+ }
+ break;
+
+ case Protocol.PROTO_SHUTDOWN:
+ running = false;
+ break;
+
+ default:
+ System.err.println("Invalid protocol ID: " + proto);
+ break;
+ }
+ }
+ } catch (EOFException e) {
+ // Exit server
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } finally {
+ running = false;
+ }
+ }
+ }.start();
+ }
+
+ private void sendOKResult() throws IOException {
+ cmdOut.writeByte(Protocol.PROTO_OK);
+ cmdOut.flush();
+ }
+
+ private void sendErrorResult(String error) throws IOException {
+ cmdOut.writeByte(Protocol.PROTO_ERROR);
+ cmdOut.writeUTF(error);
+ cmdOut.flush();
+ }
+
+ /**
+ * TODO replace with dynamic dispatcher
+ */
+ private void dispatchCommand(DataInputStream in) throws ProxyException, IOException {
+ AbstractServerCommand serverCmd;
+
+ short cmd = in.readShort();
+ switch (cmd) {
+ case Protocol.CMD_CHILDINFOS:
+ serverCmd = cmdChildInfos(in);
+ break;
+
+ case Protocol.CMD_DELETE:
+ serverCmd = cmdDelete(in);
+ break;
+
+ case Protocol.CMD_EXEC:
+ serverCmd = cmdExec(in);
+ break;
+
+ case Protocol.CMD_SHELL:
+ serverCmd = cmdShell(in);
+ break;
+
+ case Protocol.CMD_FETCHINFO:
+ serverCmd = cmdFetchInfo(in);
+ break;
+
+ case Protocol.CMD_GETCWD:
+ serverCmd = cmdGetCwd(in);
+ break;
+
+ case Protocol.CMD_GETENV:
+ serverCmd = cmdGetEnv(in);
+ break;
+
+ case Protocol.CMD_GETINPUTSTREAM:
+ serverCmd = cmdGetInputStream(in);
+ break;
+
+ case Protocol.CMD_GETOUTPUTSTREAM:
+ serverCmd = cmdGetOutputStream(in);
+ break;
+
+ case Protocol.CMD_GETPROPERTIES:
+ serverCmd = cmdGetProperties(in);
+ break;
+
+ case Protocol.CMD_MKDIR:
+ serverCmd = cmdMkdir(in);
+ break;
+
+ case Protocol.CMD_PUTINFO:
+ serverCmd = cmdPutInfo(in);
+ break;
+
+ default:
+ System.err.println("Invalid command ID: " + cmd);
+ throw new ProxyException("Invalid command ID: " + cmd); //$NON-NLS-1$
+ }
+
+ serverCmd.exec();
+ }
+
+ private AbstractServerCommand cmdExec(DataInputStream in) throws ProxyException, IOException {
+ int cmdChanId = in.readByte();
+ int ioChanId = in.readByte();
+ int errChanId = in.readByte();
+ int length = in.readInt();
+ List<String> command = new ArrayList<>(length);
+ for (int i = 0; i < length; i++) {
+ command.add(in.readUTF());
+ }
+ length = in.readInt();
+ Map<String, String> env = new HashMap<>(length);
+ for (int i = 0; i < length; i++) {
+ String key = in.readUTF();
+ String val = in.readUTF();
+ env.put(key, val);
+ }
+ String dir = in.readUTF();
+ boolean redirect = in.readBoolean();
+ boolean appendEnv = in.readBoolean();
+ StreamChannel cmdChan = server.getChannel(cmdChanId);
+ StreamChannel ioChan = server.getChannel(ioChanId);
+ StreamChannel errChan = server.getChannel(errChanId);
+ if (cmdChan == null || ioChan == null || errChan == null) {
+ throw new ProxyException("Unable to locate channels for command"); //$NON-NLS-1$
+ }
+ return new ServerExecCommand(command, env, dir, redirect, appendEnv, cmdChan, ioChan, errChan);
+ }
+
+ private AbstractServerCommand cmdShell(DataInputStream in) throws ProxyException, IOException {
+ int cmdChanId = in.readByte();
+ int ioChanId = in.readByte();
+ StreamChannel cmdChan = server.getChannel(cmdChanId);
+ StreamChannel ioChan = server.getChannel(ioChanId);
+ if (cmdChan == null || ioChan == null) {
+ throw new ProxyException("Unable to locate channels for command"); //$NON-NLS-1$
+ }
+ return new ServerShellCommand(cmdChan, ioChan);
+ }
+
+ private AbstractServerCommand cmdGetCwd(DataInputStream in) throws ProxyException, IOException {
+ int chanId = in.readByte();
+ StreamChannel chan = server.getChannel(chanId);
+ if (chan == null) {
+ throw new ProxyException("Unable to locate channel for command"); //$NON-NLS-1$
+ }
+ return new ServerGetCwdCommand(chan);
+ }
+
+ private AbstractServerCommand cmdGetEnv(DataInputStream in) throws ProxyException, IOException {
+ int chanId = in.readByte();
+ StreamChannel chan = server.getChannel(chanId);
+ if (chan == null) {
+ throw new ProxyException("Unable to locate channel for command"); //$NON-NLS-1$
+ }
+ return new ServerGetEnvCommand(chan);
+ }
+
+ private AbstractServerCommand cmdGetProperties(DataInputStream in) throws ProxyException, IOException {
+ int chanId = in.readByte();
+ StreamChannel chan = server.getChannel(chanId);
+ if (chan == null) {
+ throw new ProxyException("Unable to locate channel for command"); //$NON-NLS-1$
+ }
+ return new ServerGetPropertiesCommand(chan);
+ }
+
+ private AbstractServerCommand cmdChildInfos(DataInputStream in) throws ProxyException, IOException {
+ int chanId = in.readByte();
+ StreamChannel chan = server.getChannel(chanId);
+ if (chan == null) {
+ throw new ProxyException("Unable to locate channel for command"); //$NON-NLS-1$
+ }
+ String path = in.readUTF();
+ return new ServerChildInfosCommand(chan, path);
+ }
+
+ private AbstractServerCommand cmdFetchInfo(DataInputStream in) throws ProxyException, IOException {
+ int chanId = in.readByte();
+ StreamChannel chan = server.getChannel(chanId);
+ if (chan == null) {
+ throw new ProxyException("Unable to locate channel for command"); //$NON-NLS-1$
+ }
+ String path = in.readUTF();
+ return new ServerFetchInfoCommand(chan, path);
+ }
+
+ private AbstractServerCommand cmdGetInputStream(DataInputStream in) throws ProxyException, IOException {
+ int chanId = in.readByte();
+ StreamChannel chan = server.getChannel(chanId);
+ if (chan == null) {
+ throw new ProxyException("Unable to locate channel for command"); //$NON-NLS-1$
+ }
+ int options = in.readInt();
+ String path = in.readUTF();
+ return new ServerGetInputStreamCommand(chan, options, path);
+ }
+
+ private AbstractServerCommand cmdGetOutputStream(DataInputStream in) throws ProxyException, IOException {
+ int chanId = in.readByte();
+ StreamChannel chan = server.getChannel(chanId);
+ if (chan == null) {
+ throw new ProxyException("Unable to locate channel for command"); //$NON-NLS-1$
+ }
+ int options = in.readInt();
+ String path = in.readUTF();
+ return new ServerGetOutputStreamCommand(chan, options, path);
+ }
+
+ private AbstractServerCommand cmdDelete(DataInputStream in) throws ProxyException, IOException {
+ int options = in.readInt();
+ String path = in.readUTF();
+ return new ServerDeleteCommand(options, path);
+ }
+
+ private AbstractServerCommand cmdMkdir(DataInputStream in) throws ProxyException, IOException {
+ int options = in.readInt();
+ String path = in.readUTF();
+ return new ServerMkdirCommand(options, path);
+ }
+
+ private AbstractServerCommand cmdPutInfo(DataInputStream in) throws ProxyException, IOException {
+ int options = in.readInt();
+ String path = in.readUTF();
+ SerializableFileInfo info = new SerializableFileInfo();
+ info.readObject(in);
+ return new ServerPutInfoCommand(info.getIFileInfo(), options, path);
+ }
+}
diff --git a/remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/Server.java b/remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/Server.java
new file mode 100644
index 00000000000..1a2c679b36e
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/Server.java
@@ -0,0 +1,78 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Oak Ridge National Laboratory and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.remote.internal.proxy.server.core;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.remote.proxy.protocol.core.StreamChannel;
+import org.eclipse.remote.proxy.protocol.core.StreamChannelManager;
+import org.eclipse.remote.proxy.protocol.core.StreamChannelManager.IChannelListener;
+
+public class Server {
+ private volatile boolean running;
+ private Thread serverThread;
+ private StreamChannel cmdChannel;
+ private Map<Integer, StreamChannel> auxChannel = Collections.synchronizedMap(new HashMap<Integer, StreamChannel>());
+
+ public void start() {
+ final StreamChannelManager mux = new StreamChannelManager(System.in, System.out);
+ mux.setServer(true);
+ mux.addListener(new IChannelListener() {
+
+ @Override
+ public void newChannel(StreamChannel chan) {
+ Runnable runnable;
+ System.err.println("newChannel: " + chan.getId());
+ // First channel opened becomes command channel
+ if (cmdChannel == null) {
+ cmdChannel = chan;
+ runnable = new CommandServer(chan, Server.this);
+ new Thread(runnable).start();
+ } else {
+ auxChannel.put(chan.getId(), chan);
+ }
+ }
+
+ @Override
+ public void closeChannel(StreamChannel chan) {
+ System.err.println("closeChannel: " + chan.getId());
+ auxChannel.remove(chan.getId());
+ }
+
+ });
+ serverThread = new Thread(mux) {
+ @Override
+ public void run() {
+ running = true;
+ mux.run();
+ running = false;
+ }
+ };
+ serverThread.start();
+ }
+
+ public StreamChannel getChannel(int id) {
+ System.err.println("getChannel: " + id);
+ return auxChannel.get(id);
+ }
+
+ public void waitFor() {
+ if (running && serverThread != null) {
+ try {
+ serverThread.join();
+ } catch (InterruptedException e) {
+ // Ignore
+ }
+ }
+ }
+}
diff --git a/remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/commands/AbstractServerCommand.java b/remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/commands/AbstractServerCommand.java
new file mode 100644
index 00000000000..eabaae84dc7
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/commands/AbstractServerCommand.java
@@ -0,0 +1,17 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Oak Ridge National Laboratory and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.remote.internal.proxy.server.core.commands;
+
+import org.eclipse.remote.proxy.protocol.core.exceptions.ProxyException;
+
+public abstract class AbstractServerCommand {
+ public abstract void exec() throws ProxyException;
+}
diff --git a/remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/commands/AbstractServerExecCommand.java b/remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/commands/AbstractServerExecCommand.java
new file mode 100644
index 00000000000..1a80ad718c7
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/commands/AbstractServerExecCommand.java
@@ -0,0 +1,238 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Oak Ridge National Laboratory and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.remote.internal.proxy.server.core.commands;
+
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.BufferedWriter;
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.locks.Condition;
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReentrantLock;
+
+import org.eclipse.remote.proxy.protocol.core.Protocol;
+import org.eclipse.remote.proxy.protocol.core.StreamChannel;
+import org.eclipse.remote.proxy.protocol.core.exceptions.ProxyException;
+
+public abstract class AbstractServerExecCommand extends AbstractServerCommand {
+
+ private class CommandRunner implements Runnable {
+ @Override
+ public void run() {
+ try {
+ int exit = 0;
+ try {
+ proc = doRun();
+ Forwarder stdoutFwd = startForwarder("stdout", proc.getInputStream(), stdoutChan); //$NON-NLS-1$
+ Forwarder stderrFwd = null;
+ if (!redirect) {
+ stderrFwd = startForwarder("stderr", proc.getErrorStream(), stderrChan); //$NON-NLS-1$
+ }
+ startForwarder("stdin", stdinChan, proc.getOutputStream()); //$NON-NLS-1$
+ new Thread(new ProcMonitor(), "process monitor").start(); //$NON-NLS-1$
+ exit = proc.waitFor();
+ /*
+ * After the process has finished, wait for the stdout and stderr forwarders to finish to
+ * ensure that all output is flushed.
+ */
+ stdoutFwd.waitFor();
+ if (stderrFwd != null) {
+ stderrFwd.waitFor();
+ }
+ } catch (IOException e) {
+ BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(stderrChan));
+ try {
+ writer.write(e.getMessage());
+ writer.flush();
+ } catch (IOException e1) {
+ // Things look pretty hopeless
+ }
+ exit = -1;
+ }
+ try {
+ resultStream.writeInt(exit);
+ resultStream.flush();
+ } catch (IOException e) {
+ // We're finished anyway
+ }
+ } catch (InterruptedException e) {
+ // Ignore?
+ }
+ }
+ }
+
+ private class ProcMonitor implements Runnable {
+ @Override
+ public void run() {
+ try {
+ switch (cmdStream.readByte()) {
+ case Protocol.CONTROL_KILL:
+ doKill(proc);
+ break;
+ case Protocol.CONTROL_SETTERMINALSIZE:
+ int cols = cmdStream.readInt();
+ int rows = cmdStream.readInt();
+ cmdStream.readInt(); // pixel dimensions not supported
+ cmdStream.readInt(); // pixel dimensions not supported
+ doSetTerminalSize(proc, cols, rows);
+ break;
+ }
+ } catch (IOException e) {
+ // Finish
+ }
+ }
+ }
+
+ private class Forwarder implements Runnable {
+ private final InputStream in;
+ private final OutputStream out;
+ private final String name;
+
+ private boolean running = true;
+
+ private final Lock lock = new ReentrantLock();
+ private final Condition cond = lock.newCondition();
+
+ public Forwarder(String name, InputStream in, OutputStream out) {
+ this.name = name;
+ this.in = new BufferedInputStream(in);
+ this.out = new BufferedOutputStream(out);
+ }
+
+ @Override
+ public void run() {
+ byte[] buf = new byte[8192];
+ int n;
+ try {
+ while (running) {
+ n = in.read(buf);
+ if (n > 0) {
+ out.write(buf, 0, n);
+ out.flush();
+ }
+ if (n < 0)
+ break;
+ }
+ } catch (IOException e) {
+ // Finish
+ }
+
+ lock.lock();
+ try {
+ running = false;
+ try {
+ out.close();
+ } catch (IOException e) {
+ // Best effort
+ }
+ cond.signalAll();
+ } finally {
+ lock.unlock();
+ }
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public synchronized void waitFor() {
+ lock.lock();
+ try {
+ while (running) {
+ try {
+ cond.await();
+ } catch (InterruptedException e) {
+ // Check terminated flag
+ }
+ }
+ } finally {
+ lock.unlock();
+ }
+ }
+ }
+
+ private final List<String> command;
+ private final Map<String, String> env;
+ private final boolean redirect;
+ private final boolean appendEnv;
+ private final String directory;
+
+ private final InputStream stdinChan;
+ private final OutputStream stdoutChan;
+ private final OutputStream stderrChan;
+
+ private final DataInputStream cmdStream;
+ private final DataOutputStream resultStream;
+
+ private Process proc;
+
+ public AbstractServerExecCommand(List<String> command, Map<String, String> env, String directory, boolean redirect,
+ boolean appendEnv, StreamChannel cmdChan, StreamChannel ioChan, StreamChannel errChan) {
+ this.command = command;
+ this.env = env;
+ this.directory = directory;
+ this.redirect = redirect;
+ this.appendEnv = appendEnv;
+
+ this.stdinChan = ioChan.getInputStream();
+ this.stdoutChan = ioChan.getOutputStream();
+
+ this.stderrChan = errChan != null ? errChan.getOutputStream() : this.stdoutChan;
+
+ this.resultStream = new DataOutputStream(cmdChan.getOutputStream());
+ this.cmdStream = new DataInputStream(cmdChan.getInputStream());
+ }
+
+ protected abstract Process doRun() throws IOException;
+
+ protected abstract void doKill(Process proc);
+
+ protected abstract void doSetTerminalSize(Process proc, int col, int rows);
+
+ protected List<String> getCommand() {
+ return command;
+ }
+
+ protected Map<String, String> getEnv() {
+ return env;
+ }
+
+ protected boolean isRedirect() {
+ return redirect;
+ }
+
+ protected boolean isAppendEnv() {
+ return appendEnv;
+ }
+
+ protected String getDirectory() {
+ return directory;
+ }
+
+ @Override
+ public void exec() throws ProxyException {
+ new Thread(new CommandRunner()).start();
+ }
+
+ private Forwarder startForwarder(String name, InputStream in, OutputStream out) {
+ Forwarder forwarder = new Forwarder(name, in, out);
+ Thread thread = new Thread(forwarder, forwarder.getName());
+ thread.start();
+ return forwarder;
+ }
+}
diff --git a/remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/commands/ServerChildInfosCommand.java b/remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/commands/ServerChildInfosCommand.java
new file mode 100644
index 00000000000..2f0ab124449
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/commands/ServerChildInfosCommand.java
@@ -0,0 +1,63 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Oak Ridge National Laboratory and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.remote.internal.proxy.server.core.commands;
+
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.net.URI;
+
+import org.eclipse.core.filesystem.EFS;
+import org.eclipse.core.filesystem.IFileInfo;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.remote.proxy.protocol.core.SerializableFileInfo;
+import org.eclipse.remote.proxy.protocol.core.StreamChannel;
+import org.eclipse.remote.proxy.protocol.core.exceptions.ProxyException;
+
+public class ServerChildInfosCommand extends AbstractServerCommand {
+ private IFileInfo[] infos;
+
+ private final URI uri;
+ private final OutputStream out;
+
+ private class CommandRunner implements Runnable {
+ @Override
+ public void run() {
+ try {
+ DataOutputStream result = new DataOutputStream(out);
+ result.writeInt(infos.length);
+ for (int i = 0; i < infos.length; i++) {
+ SerializableFileInfo sInfo = new SerializableFileInfo(infos[i]);
+ sInfo.writeObject(result);
+ }
+ result.flush();
+ } catch (IOException e) {
+ // Failed
+ e.printStackTrace();
+ }
+ }
+ }
+
+ public ServerChildInfosCommand(StreamChannel chan, String path) {
+ this.out = chan.getOutputStream();
+ this.uri = URI.create("file:" + path); //$NON-NLS-1$
+ }
+
+ @Override
+ public void exec() throws ProxyException {
+ try {
+ infos = EFS.getStore(uri).childInfos(EFS.NONE, null);
+ } catch (CoreException e) {
+ throw new ProxyException(e.getMessage());
+ }
+ new Thread(new CommandRunner()).start();
+ }
+}
diff --git a/remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/commands/ServerDeleteCommand.java b/remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/commands/ServerDeleteCommand.java
new file mode 100644
index 00000000000..cf207323762
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/commands/ServerDeleteCommand.java
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Oak Ridge National Laboratory and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.remote.internal.proxy.server.core.commands;
+
+import java.net.URI;
+
+import org.eclipse.core.filesystem.EFS;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.remote.proxy.protocol.core.exceptions.ProxyException;
+
+public class ServerDeleteCommand extends AbstractServerCommand {
+ private final int options;
+ private final URI uri;
+
+ public ServerDeleteCommand(int options, String path) {
+ this.options = options;
+ this.uri = URI.create("file:" + path); //$NON-NLS-1$
+ }
+
+ @Override
+ public void exec() throws ProxyException {
+ try {
+ EFS.getStore(uri).delete(options, new NullProgressMonitor());
+ } catch (CoreException e) {
+ throw new ProxyException(e.getMessage());
+ }
+ }
+}
diff --git a/remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/commands/ServerExecCommand.java b/remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/commands/ServerExecCommand.java
new file mode 100644
index 00000000000..06ebe5e1ef6
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/commands/ServerExecCommand.java
@@ -0,0 +1,72 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Oak Ridge National Laboratory and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.remote.internal.proxy.server.core.commands;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.remote.proxy.protocol.core.StreamChannel;
+
+/**
+ * TODO: Fix hang if command fails...
+ *
+ */
+public class ServerExecCommand extends AbstractServerExecCommand {
+ @Override
+ public Process doRun() throws IOException {
+ System.err.print("exec: ");
+ for (String arg : getCommand()) {
+ System.err.print(arg + " ");
+ }
+ System.err.println();
+ ProcessBuilder builder = new ProcessBuilder(getCommand());
+ try {
+ if (!isAppendEnv()) {
+ builder.environment().clear();
+ builder.environment().putAll(getEnv());
+ } else {
+ for (Map.Entry<String, String> entry : getEnv().entrySet()) {
+ String val = builder.environment().get(entry.getKey());
+ if (val == null || !val.equals(entry.getValue())) {
+ builder.environment().put(entry.getKey(), entry.getValue());
+ }
+ }
+ }
+ } catch (UnsupportedOperationException | IllegalArgumentException e) {
+ // Leave environment untouched
+ }
+ File dir = new File(getDirectory());
+ if (dir.exists() && dir.isAbsolute()) {
+ builder.directory(dir);
+ }
+ builder.redirectErrorStream(isRedirect());
+ return builder.start();
+ }
+
+ @Override
+ protected void doKill(Process proc) {
+ if (proc.isAlive()) {
+ proc.destroyForcibly();
+ }
+ }
+
+ @Override
+ protected void doSetTerminalSize(Process proc, int cols, int rows) {
+ // Not supported
+ }
+
+ public ServerExecCommand(List<String> command, Map<String, String> env, String directory, boolean redirect,
+ boolean appendEnv, StreamChannel cmdChan, StreamChannel ioChan, StreamChannel errChan) {
+ super(command, env, directory, redirect, appendEnv, cmdChan, ioChan, errChan);
+ }
+}
diff --git a/remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/commands/ServerFetchInfoCommand.java b/remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/commands/ServerFetchInfoCommand.java
new file mode 100644
index 00000000000..7b32c6bbad2
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/commands/ServerFetchInfoCommand.java
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Oak Ridge National Laboratory and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.remote.internal.proxy.server.core.commands;
+
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.net.URI;
+
+import org.eclipse.core.filesystem.EFS;
+import org.eclipse.core.filesystem.IFileInfo;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.remote.proxy.protocol.core.SerializableFileInfo;
+import org.eclipse.remote.proxy.protocol.core.StreamChannel;
+import org.eclipse.remote.proxy.protocol.core.exceptions.ProxyException;
+
+public class ServerFetchInfoCommand extends AbstractServerCommand {
+ private IFileInfo info;
+
+ private final URI uri;
+ private final OutputStream out;
+
+ private class CommandRunner implements Runnable {
+ @Override
+ public void run() {
+ try {
+ DataOutputStream result = new DataOutputStream(out);
+ SerializableFileInfo sInfo = new SerializableFileInfo(info);
+ sInfo.writeObject(result);
+ result.flush();
+ } catch (IOException e) {
+ // Failed
+ e.printStackTrace();
+ }
+ }
+ }
+
+ public ServerFetchInfoCommand(StreamChannel chan, String path) {
+ this.out = chan.getOutputStream();
+ this.uri = URI.create("file:" + path); //$NON-NLS-1$
+ }
+
+ @Override
+ public void exec() throws ProxyException {
+ try {
+ info = EFS.getStore(uri).fetchInfo();
+ } catch (CoreException e) {
+ throw new ProxyException(e.getMessage());
+ }
+ new Thread(new CommandRunner()).start();
+ }
+}
diff --git a/remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/commands/ServerGetCwdCommand.java b/remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/commands/ServerGetCwdCommand.java
new file mode 100644
index 00000000000..f4b8a2655ae
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/commands/ServerGetCwdCommand.java
@@ -0,0 +1,45 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Oak Ridge National Laboratory and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.remote.internal.proxy.server.core.commands;
+
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import org.eclipse.remote.proxy.protocol.core.StreamChannel;
+import org.eclipse.remote.proxy.protocol.core.exceptions.ProxyException;
+
+public class ServerGetCwdCommand extends AbstractServerCommand {
+
+ private String cwd;
+ private final DataOutputStream result;
+
+ private class CommandRunner implements Runnable {
+ @Override
+ public void run() {
+ try {
+ result.writeUTF(cwd);
+ result.flush();
+ } catch (IOException e) {
+ // Failed
+ }
+ }
+ }
+
+ public ServerGetCwdCommand(StreamChannel chan) {
+ this.result = new DataOutputStream(chan.getOutputStream());
+ }
+
+ @Override
+ public void exec() throws ProxyException {
+ cwd = System.getProperty("user.dir"); //$NON-NLS-1$
+ new Thread(new CommandRunner()).start();
+ }
+}
diff --git a/remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/commands/ServerGetEnvCommand.java b/remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/commands/ServerGetEnvCommand.java
new file mode 100644
index 00000000000..256222dcab8
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/commands/ServerGetEnvCommand.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Oak Ridge National Laboratory and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.remote.internal.proxy.server.core.commands;
+
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.util.Map;
+
+import org.eclipse.remote.proxy.protocol.core.StreamChannel;
+import org.eclipse.remote.proxy.protocol.core.exceptions.ProxyException;
+
+public class ServerGetEnvCommand extends AbstractServerCommand {
+
+ private final DataOutputStream result;
+
+ private class CommandRunner implements Runnable {
+ @Override
+ public void run() {
+ try {
+ Map<String, String> env = System.getenv();
+ result.writeInt(env.size());
+ for (Map.Entry<String, String> entry : env.entrySet()) {
+ result.writeUTF(entry.getKey());
+ result.writeUTF(entry.getValue());
+ }
+ result.flush();
+ } catch (IOException e) {
+ // Failed
+ }
+ }
+ }
+
+ public ServerGetEnvCommand(StreamChannel chan) {
+ this.result = new DataOutputStream(chan.getOutputStream());
+ }
+
+ @Override
+ public void exec() throws ProxyException {
+ new Thread(new CommandRunner()).start();
+ }
+}
diff --git a/remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/commands/ServerGetInputStreamCommand.java b/remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/commands/ServerGetInputStreamCommand.java
new file mode 100644
index 00000000000..cb0fb5b4aed
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/commands/ServerGetInputStreamCommand.java
@@ -0,0 +1,91 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Oak Ridge National Laboratory and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.remote.internal.proxy.server.core.commands;
+
+import java.io.BufferedInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.URI;
+
+import org.eclipse.core.filesystem.EFS;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.remote.proxy.protocol.core.StreamChannel;
+import org.eclipse.remote.proxy.protocol.core.exceptions.ProxyException;
+
+/**
+ * TODO: Fix hang if command fails...
+ *
+ */
+public class ServerGetInputStreamCommand extends AbstractServerCommand {
+
+ private final OutputStream out;
+ private final URI uri;
+ private final int options;
+
+ private class Forwarder implements Runnable {
+ private final InputStream in;
+ private final OutputStream out;
+
+ public Forwarder(InputStream in, OutputStream out) {
+ this.in = in;
+ this.out = out;
+ }
+
+ @Override
+ public void run() {
+ byte[] buf = new byte[8192];
+ int n;
+ try {
+ while ((n = in.read(buf)) >= 0) {
+ if (n > 0) {
+ out.write(buf, 0, n); // should block if no-one is reading
+ out.flush();
+ }
+ }
+ } catch (IOException e) {
+ // Finish
+ }
+ try {
+ out.close();
+ } catch (IOException e) {
+ // Ignore
+ }
+ try {
+ in.close();
+ } catch (IOException e) {
+ // Ignore
+ }
+ }
+ }
+
+ public ServerGetInputStreamCommand(StreamChannel chan, int options, String path) {
+ this.out = chan.getOutputStream();
+ this.options = options;
+ this.uri = URI.create("file:" + path); //$NON-NLS-1$
+ }
+
+ @Override
+ public void exec() throws ProxyException {
+ try {
+ InputStream in = new BufferedInputStream(
+ EFS.getStore(uri).openInputStream(options, new NullProgressMonitor()));
+ startForwarder(in, out);
+ } catch (Exception e) {
+ throw new ProxyException(e.getMessage());
+ }
+ }
+
+ private void startForwarder(InputStream in, OutputStream out) {
+ Forwarder forwarder = new Forwarder(in, out);
+ new Thread(forwarder).start();
+ }
+}
diff --git a/remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/commands/ServerGetOutputStreamCommand.java b/remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/commands/ServerGetOutputStreamCommand.java
new file mode 100644
index 00000000000..930fb4d69fe
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/commands/ServerGetOutputStreamCommand.java
@@ -0,0 +1,92 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Oak Ridge National Laboratory and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.remote.internal.proxy.server.core.commands;
+
+import java.io.BufferedOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.URI;
+
+import org.eclipse.core.filesystem.EFS;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.remote.proxy.protocol.core.StreamChannel;
+import org.eclipse.remote.proxy.protocol.core.exceptions.ProxyException;
+
+/**
+ * TODO: Fix hang if command fails...
+ *
+ */
+public class ServerGetOutputStreamCommand extends AbstractServerCommand {
+
+ private final InputStream in;
+ private final URI uri;
+ private final int options;
+
+ private class Forwarder implements Runnable {
+ private final InputStream in;
+ private final OutputStream out;
+
+ public Forwarder(InputStream in, OutputStream out) {
+ this.in = in;
+ this.out = out;
+ }
+
+ @Override
+ public void run() {
+ byte[] buf = new byte[8192];
+ int n;
+ try {
+ while ((n = in.read(buf)) >= 0) {
+ if (n > 0) {
+ out.write(buf, 0, n); // should block if no-one is reading
+ }
+ }
+ out.flush();
+ } catch (IOException e) {
+ // Finish
+ }
+ try {
+ out.close();
+ } catch (IOException e) {
+ // Ignore
+ }
+ try {
+ in.close();
+ } catch (IOException e) {
+ // Ignore
+ }
+ }
+ }
+
+ public ServerGetOutputStreamCommand(StreamChannel chan, int options, String path) {
+ this.in = chan.getInputStream();
+ this.options = options;
+ this.uri = URI.create("file:" + path); //$NON-NLS-1$
+ }
+
+ @Override
+ public void exec() throws ProxyException {
+ try {
+ OutputStream out = new BufferedOutputStream(
+ EFS.getStore(uri).openOutputStream(options, new NullProgressMonitor()));
+ startForwarder(in, out);
+ } catch (CoreException e) {
+ throw new ProxyException(e.getMessage());
+ }
+ }
+
+ private void startForwarder(InputStream in, OutputStream out) {
+ Forwarder forwarder = new Forwarder(in, out);
+ new Thread(forwarder).start();
+ }
+}
diff --git a/remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/commands/ServerGetPropertiesCommand.java b/remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/commands/ServerGetPropertiesCommand.java
new file mode 100644
index 00000000000..46d538c3082
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/commands/ServerGetPropertiesCommand.java
@@ -0,0 +1,65 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Oak Ridge National Laboratory and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.remote.internal.proxy.server.core.commands;
+
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.proxy.protocol.core.StreamChannel;
+import org.eclipse.remote.proxy.protocol.core.exceptions.ProxyException;
+
+public class ServerGetPropertiesCommand extends AbstractServerCommand {
+
+ private final DataOutputStream result;
+
+ private class CommandRunner implements Runnable {
+ @Override
+ public void run() {
+ try {
+ Map<String, String> props = new HashMap<>();
+ props.put(IRemoteConnection.FILE_SEPARATOR_PROPERTY,
+ System.getProperty(IRemoteConnection.FILE_SEPARATOR_PROPERTY));
+ props.put(IRemoteConnection.PATH_SEPARATOR_PROPERTY,
+ System.getProperty(IRemoteConnection.PATH_SEPARATOR_PROPERTY));
+ props.put(IRemoteConnection.LINE_SEPARATOR_PROPERTY,
+ System.getProperty(IRemoteConnection.LINE_SEPARATOR_PROPERTY));
+ props.put(IRemoteConnection.USER_HOME_PROPERTY,
+ System.getProperty(IRemoteConnection.USER_HOME_PROPERTY));
+ props.put(IRemoteConnection.OS_NAME_PROPERTY, System.getProperty(IRemoteConnection.OS_NAME_PROPERTY));
+ props.put(IRemoteConnection.OS_VERSION_PROPERTY,
+ System.getProperty(IRemoteConnection.OS_VERSION_PROPERTY));
+ props.put(IRemoteConnection.OS_ARCH_PROPERTY, System.getProperty(IRemoteConnection.OS_ARCH_PROPERTY));
+ props.put(IRemoteConnection.LOCALE_CHARMAP_PROPERTY, System.getProperty("file.encoding")); //$NON-NLS-1$
+
+ result.writeInt(props.size());
+ for (Map.Entry<String, String> entry : props.entrySet()) {
+ result.writeUTF(entry.getKey());
+ result.writeUTF(entry.getValue());
+ }
+ result.flush();
+ } catch (IOException e) {
+ // Failed
+ }
+ }
+ }
+
+ public ServerGetPropertiesCommand(StreamChannel chan) {
+ this.result = new DataOutputStream(chan.getOutputStream());
+ }
+
+ @Override
+ public void exec() throws ProxyException {
+ new Thread(new CommandRunner()).start();
+ }
+}
diff --git a/remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/commands/ServerMkdirCommand.java b/remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/commands/ServerMkdirCommand.java
new file mode 100644
index 00000000000..3f193f8b29c
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/commands/ServerMkdirCommand.java
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Oak Ridge National Laboratory and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.remote.internal.proxy.server.core.commands;
+
+import java.net.URI;
+
+import org.eclipse.core.filesystem.EFS;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.remote.proxy.protocol.core.exceptions.ProxyException;
+
+public class ServerMkdirCommand extends AbstractServerCommand {
+ private final int options;
+ private final URI uri;
+
+ public ServerMkdirCommand(int options, String path) {
+ this.options = options;
+ this.uri = URI.create("file:" + path); //$NON-NLS-1$
+ }
+
+ @Override
+ public void exec() throws ProxyException {
+ try {
+ EFS.getStore(uri).mkdir(options, new NullProgressMonitor());
+ } catch (CoreException e) {
+ throw new ProxyException(e.getMessage());
+ }
+ }
+}
diff --git a/remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/commands/ServerPutInfoCommand.java b/remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/commands/ServerPutInfoCommand.java
new file mode 100644
index 00000000000..6647589df9f
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/commands/ServerPutInfoCommand.java
@@ -0,0 +1,41 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Oak Ridge National Laboratory and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.remote.internal.proxy.server.core.commands;
+
+import java.net.URI;
+
+import org.eclipse.core.filesystem.EFS;
+import org.eclipse.core.filesystem.IFileInfo;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.remote.proxy.protocol.core.exceptions.ProxyException;
+
+public class ServerPutInfoCommand extends AbstractServerCommand {
+ private final IFileInfo info;
+ private final int options;
+ private final URI uri;
+
+ public ServerPutInfoCommand(IFileInfo info, int options, String path) {
+ this.info = info;
+ this.options = options;
+ this.uri = URI.create("file:" + path); //$NON-NLS-1$
+ }
+
+ @Override
+ public void exec() throws ProxyException {
+ try {
+ EFS.getStore(uri).putInfo(info, options, new NullProgressMonitor());
+
+ } catch (CoreException e) {
+ throw new ProxyException(e.getMessage());
+ }
+ }
+}
diff --git a/remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/commands/ServerShellCommand.java b/remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/commands/ServerShellCommand.java
new file mode 100644
index 00000000000..eb2b93e7f77
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.core/src/org/eclipse/remote/internal/proxy/server/core/commands/ServerShellCommand.java
@@ -0,0 +1,184 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Oak Ridge National Laboratory and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.remote.internal.proxy.server.core.commands;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+
+import org.eclipse.cdt.utils.pty.PTY;
+import org.eclipse.cdt.utils.pty.PTY.Mode;
+import org.eclipse.cdt.utils.spawner.ProcessFactory;
+import org.eclipse.remote.proxy.protocol.core.StreamChannel;
+
+/**
+ * TODO: Fix hang if command fails...
+ *
+ */
+public class ServerShellCommand extends AbstractServerExecCommand {
+ private class ShellProcess extends Process {
+ private final Process proc;
+ private final PTY pty;
+
+ public ShellProcess(Process proc, PTY pty) {
+ this.proc = proc;
+ this.pty = pty;
+ }
+
+ @Override
+ public OutputStream getOutputStream() {
+ if (pty != null) {
+ return pty.getOutputStream();
+ }
+ return proc.getOutputStream();
+ }
+
+ @Override
+ public InputStream getInputStream() {
+ if (pty != null) {
+ return pty.getInputStream();
+ }
+ return proc.getInputStream();
+ }
+
+ @Override
+ public InputStream getErrorStream() {
+ if (pty != null) {
+ return pty.getInputStream();
+ }
+ return proc.getErrorStream();
+ }
+
+ @Override
+ public int waitFor() throws InterruptedException {
+ return proc.waitFor();
+ }
+
+ @Override
+ public int exitValue() {
+ return proc.exitValue();
+ }
+
+ @Override
+ public void destroy() {
+ proc.destroy();
+ }
+
+ public void setTerminalSize(int cols, int rows) {
+ if (pty != null) {
+ pty.setTerminalSize(cols, rows);
+ }
+ }
+ }
+
+ public ServerShellCommand(StreamChannel cmdChan, StreamChannel ioChan) {
+ super(null, null, null, true, false, cmdChan, ioChan, null);
+ }
+
+ @Override
+ public Process doRun() throws IOException {
+ String shell = findLoginShell();
+
+ if (PTY.isSupported(Mode.TERMINAL)) {
+ PTY pty = new PTY(Mode.TERMINAL);
+ Process p = ProcessFactory.getFactory().exec(new String[] { shell, "-l" }, null, null, pty); //$NON-NLS-1$
+ return new ShellProcess(p, pty);
+ }
+
+ return ProcessFactory.getFactory().exec(new String[] { shell, "-l" }, null, null); //$NON-NLS-1$
+ }
+
+ @Override
+ protected void doKill(Process proc) {
+ if (proc.isAlive()) {
+ proc.destroyForcibly();
+ }
+ }
+
+ @Override
+ protected void doSetTerminalSize(Process proc, int cols, int rows) {
+ if (proc.isAlive() && proc instanceof ShellProcess) {
+ ShellProcess shell = (ShellProcess) proc;
+ shell.setTerminalSize(cols, rows);
+ }
+ }
+
+ /**
+ * Find the login shell.
+ *
+ * On Linux, use `getent passwd $USER`
+ * On Mac OSX, use `dscl . -read /Users/$USER UserShell`
+ *
+ * @return
+ */
+ private String findLoginShell() throws IOException {
+ String res;
+
+ String osName = System.getProperty("os.name"); //$NON-NLS-1$
+ String userName = System.getProperty("user.name"); //$NON-NLS-1$
+ if (osName == null || userName == null) {
+ throw new IOException("Unable to obtain information needed to find login shell"); //$NON-NLS-1$
+ }
+ switch (osName) {
+ case "Mac OS X": //$NON-NLS-1$
+ res = executeCommand("dscl . -read /Users/" + userName + " UserShell"); //$NON-NLS-1$ //$NON-NLS-2$
+ if (res != null) {
+ String[] vals = res.split(" "); //$NON-NLS-1$
+ if (vals.length == 2) {
+ return vals[1];
+ }
+ }
+ break;
+ case "Linux": //$NON-NLS-1$
+ res = executeCommand("getent passwd " + userName); //$NON-NLS-1$
+ if (res != null) {
+ String[] vals = res.split(":"); //$NON-NLS-1$
+ if (vals.length == 7) {
+ return vals[6];
+ }
+ }
+ break;
+ default:
+ break;
+ }
+ throw new IOException("Unable to find login shell for os=" + osName + " user=" + userName); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ private String executeCommand(String command) throws IOException {
+ String line;
+ StringBuffer output = new StringBuffer();
+
+ Process p;
+ try {
+ p = Runtime.getRuntime().exec(command);
+ } catch (Exception e) {
+ throw new IOException(e.getMessage());
+ }
+ try {
+ p.waitFor();
+ } catch (InterruptedException e) {
+ throw new IOException(e.getMessage());
+ }
+ BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
+ line = reader.readLine();
+ while (line != null) {
+ output.append(line);
+ line = reader.readLine();
+ if (line != null) {
+ output.append("\n"); //$NON-NLS-1$
+ }
+ }
+
+ return output.toString();
+ }
+}
diff --git a/remote/org.eclipse.remote.proxy.server.linux.ppc64le/.gitignore b/remote/org.eclipse.remote.proxy.server.linux.ppc64le/.gitignore
new file mode 100644
index 00000000000..22ddaadc2eb
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.linux.ppc64le/.gitignore
@@ -0,0 +1 @@
+/proxy.server.tar.gz
diff --git a/remote/org.eclipse.remote.proxy.server.linux.ppc64le/.project b/remote/org.eclipse.remote.proxy.server.linux.ppc64le/.project
new file mode 100644
index 00000000000..19aa35e59de
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.linux.ppc64le/.project
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.remote.proxy.server.linux.ppc64le</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ </natures>
+</projectDescription>
diff --git a/remote/org.eclipse.remote.proxy.server.linux.ppc64le/.settings/org.eclipse.core.resources.prefs b/remote/org.eclipse.remote.proxy.server.linux.ppc64le/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.linux.ppc64le/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/remote/org.eclipse.remote.proxy.server.linux.ppc64le/.settings/org.eclipse.pde.api.tools.prefs b/remote/org.eclipse.remote.proxy.server.linux.ppc64le/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 00000000000..ec9fbf321d0
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.linux.ppc64le/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,184 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITH_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_FIELD=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERCLASS_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_CHANGED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENTS=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETERS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Error
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Warning
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+MISSING_EE_DESCRIPTIONS=Warning
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=false
+changed_execution_env=Error
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+incompatible_api_component_version_report_major_without_breaking_change=Warning
+incompatible_api_component_version_report_minor_without_api_change=Warning
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/remote/org.eclipse.remote.proxy.server.linux.ppc64le/.settings/org.eclipse.pde.core.prefs b/remote/org.eclipse.remote.proxy.server.linux.ppc64le/.settings/org.eclipse.pde.core.prefs
new file mode 100644
index 00000000000..f29e940a005
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.linux.ppc64le/.settings/org.eclipse.pde.core.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+pluginProject.extensions=false
+resolve.requirebundle=false
diff --git a/remote/org.eclipse.remote.proxy.server.linux.ppc64le/.settings/org.eclipse.pde.prefs b/remote/org.eclipse.remote.proxy.server.linux.ppc64le/.settings/org.eclipse.pde.prefs
new file mode 100644
index 00000000000..d2dc703ba9e
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.linux.ppc64le/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,35 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=2
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=2
+compilers.p.missing-version-export-package=2
+compilers.p.missing-version-import-package=2
+compilers.p.missing-version-require-bundle=2
+compilers.p.no-required-att=0
+compilers.p.no.automatic.module=1
+compilers.p.not-externalized-att=1
+compilers.p.service.component.without.lazyactivation=1
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/remote/org.eclipse.remote.proxy.server.linux.ppc64le/META-INF/MANIFEST.MF b/remote/org.eclipse.remote.proxy.server.linux.ppc64le/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..76c99c1fff2
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.linux.ppc64le/META-INF/MANIFEST.MF
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.remote.proxy.server.linux.ppc64le
+Bundle-Version: 1.0.200.qualifier
+Bundle-Vendor: %pluginProvider
+Bundle-Localization: plugin
diff --git a/remote/org.eclipse.remote.proxy.server.linux.ppc64le/about.html b/remote/org.eclipse.remote.proxy.server.linux.ppc64le/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.linux.ppc64le/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/remote/org.eclipse.remote.proxy.server.linux.ppc64le/build.properties b/remote/org.eclipse.remote.proxy.server.linux.ppc64le/build.properties
new file mode 100644
index 00000000000..0c81c8bc303
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.linux.ppc64le/build.properties
@@ -0,0 +1,5 @@
+bin.includes = META-INF/,\
+ proxy.server.tar.gz,\
+ plugin.properties,\
+ about.html
+src.includes = about.html
diff --git a/remote/org.eclipse.remote.proxy.server.linux.ppc64le/plugin.properties b/remote/org.eclipse.remote.proxy.server.linux.ppc64le/plugin.properties
new file mode 100644
index 00000000000..fcffde1896b
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.linux.ppc64le/plugin.properties
@@ -0,0 +1,14 @@
+###############################################################################
+# Copyright (c) 2016 Oak Ridge National Laboratory and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+###############################################################################
+
+pluginName=Remote Proxy Server Linux ppc64le Component
+pluginProvider=Eclipse PTP
diff --git a/remote/org.eclipse.remote.proxy.server.linux.ppc64le/pom.xml b/remote/org.eclipse.remote.proxy.server.linux.ppc64le/pom.xml
new file mode 100644
index 00000000000..42e5ae1bbdb
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.linux.ppc64le/pom.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2021 Kichwa Coders Canada Inc. and others.
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
+<project
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+ xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.cdt</groupId>
+ <artifactId>cdt-parent</artifactId>
+ <version>10.7.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent>
+
+ <version>1.0.200-SNAPSHOT</version>
+ <artifactId>org.eclipse.remote.proxy.server.linux.ppc64le</artifactId>
+ <packaging>eclipse-plugin</packaging>
+
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-antrun-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>copy-proxy-server-from-product-to-bundle</id>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ <phase>process-resources</phase>
+ <configuration>
+ <target name="copy-proxy-server-from-product-to-bundle">
+ <copy file="${basedir}/../org.eclipse.remote.proxy.server.product/target/products/proxy.server-linux.gtk.ppc64le.tar.gz"
+ tofile="${basedir}/proxy.server.tar.gz"/>
+ </target>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/remote/org.eclipse.remote.proxy.server.linux.x86_64/.gitignore b/remote/org.eclipse.remote.proxy.server.linux.x86_64/.gitignore
new file mode 100644
index 00000000000..22ddaadc2eb
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.linux.x86_64/.gitignore
@@ -0,0 +1 @@
+/proxy.server.tar.gz
diff --git a/remote/org.eclipse.remote.proxy.server.linux.x86_64/.project b/remote/org.eclipse.remote.proxy.server.linux.x86_64/.project
new file mode 100644
index 00000000000..eb7c18084dd
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.linux.x86_64/.project
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.remote.proxy.server.linux.x86_64</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ </natures>
+</projectDescription>
diff --git a/remote/org.eclipse.remote.proxy.server.linux.x86_64/.settings/org.eclipse.core.resources.prefs b/remote/org.eclipse.remote.proxy.server.linux.x86_64/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.linux.x86_64/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/remote/org.eclipse.remote.proxy.server.linux.x86_64/.settings/org.eclipse.pde.api.tools.prefs b/remote/org.eclipse.remote.proxy.server.linux.x86_64/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 00000000000..ec9fbf321d0
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.linux.x86_64/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,184 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITH_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_FIELD=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERCLASS_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_CHANGED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENTS=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETERS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Error
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Warning
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+MISSING_EE_DESCRIPTIONS=Warning
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=false
+changed_execution_env=Error
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+incompatible_api_component_version_report_major_without_breaking_change=Warning
+incompatible_api_component_version_report_minor_without_api_change=Warning
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/remote/org.eclipse.remote.proxy.server.linux.x86_64/.settings/org.eclipse.pde.core.prefs b/remote/org.eclipse.remote.proxy.server.linux.x86_64/.settings/org.eclipse.pde.core.prefs
new file mode 100644
index 00000000000..f29e940a005
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.linux.x86_64/.settings/org.eclipse.pde.core.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+pluginProject.extensions=false
+resolve.requirebundle=false
diff --git a/remote/org.eclipse.remote.proxy.server.linux.x86_64/.settings/org.eclipse.pde.prefs b/remote/org.eclipse.remote.proxy.server.linux.x86_64/.settings/org.eclipse.pde.prefs
new file mode 100644
index 00000000000..d2dc703ba9e
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.linux.x86_64/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,35 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=2
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=2
+compilers.p.missing-version-export-package=2
+compilers.p.missing-version-import-package=2
+compilers.p.missing-version-require-bundle=2
+compilers.p.no-required-att=0
+compilers.p.no.automatic.module=1
+compilers.p.not-externalized-att=1
+compilers.p.service.component.without.lazyactivation=1
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/remote/org.eclipse.remote.proxy.server.linux.x86_64/META-INF/MANIFEST.MF b/remote/org.eclipse.remote.proxy.server.linux.x86_64/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..110167a2482
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.linux.x86_64/META-INF/MANIFEST.MF
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.remote.proxy.server.linux.x86_64
+Bundle-Version: 1.0.200.qualifier
+Bundle-Vendor: %pluginProvider
+Bundle-Localization: plugin
diff --git a/remote/org.eclipse.remote.proxy.server.linux.x86_64/about.html b/remote/org.eclipse.remote.proxy.server.linux.x86_64/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.linux.x86_64/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/remote/org.eclipse.remote.proxy.server.linux.x86_64/build.properties b/remote/org.eclipse.remote.proxy.server.linux.x86_64/build.properties
new file mode 100644
index 00000000000..0c81c8bc303
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.linux.x86_64/build.properties
@@ -0,0 +1,5 @@
+bin.includes = META-INF/,\
+ proxy.server.tar.gz,\
+ plugin.properties,\
+ about.html
+src.includes = about.html
diff --git a/remote/org.eclipse.remote.proxy.server.linux.x86_64/plugin.properties b/remote/org.eclipse.remote.proxy.server.linux.x86_64/plugin.properties
new file mode 100644
index 00000000000..72cb494a492
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.linux.x86_64/plugin.properties
@@ -0,0 +1,14 @@
+###############################################################################
+# Copyright (c) 2016 Oak Ridge National Laboratory and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+###############################################################################
+
+pluginName=Remote Proxy Server Linux x86_64 Component
+pluginProvider=Eclipse PTP
diff --git a/remote/org.eclipse.remote.proxy.server.linux.x86_64/pom.xml b/remote/org.eclipse.remote.proxy.server.linux.x86_64/pom.xml
new file mode 100644
index 00000000000..9529a67982b
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.linux.x86_64/pom.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2021 Kichwa Coders Canada Inc. and others.
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
+<project
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+ xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.cdt</groupId>
+ <artifactId>cdt-parent</artifactId>
+ <version>10.7.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent>
+
+ <version>1.0.200-SNAPSHOT</version>
+ <artifactId>org.eclipse.remote.proxy.server.linux.x86_64</artifactId>
+ <packaging>eclipse-plugin</packaging>
+
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-antrun-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>copy-proxy-server-from-product-to-bundle</id>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ <phase>process-resources</phase>
+ <configuration>
+ <target name="copy-proxy-server-from-product-to-bundle">
+ <copy file="${basedir}/../org.eclipse.remote.proxy.server.product/target/products/proxy.server-linux.gtk.x86_64.tar.gz"
+ tofile="${basedir}/proxy.server.tar.gz"/>
+ </target>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/remote/org.eclipse.remote.proxy.server.macosx.x86_64/.gitignore b/remote/org.eclipse.remote.proxy.server.macosx.x86_64/.gitignore
new file mode 100644
index 00000000000..22ddaadc2eb
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.macosx.x86_64/.gitignore
@@ -0,0 +1 @@
+/proxy.server.tar.gz
diff --git a/remote/org.eclipse.remote.proxy.server.macosx.x86_64/.project b/remote/org.eclipse.remote.proxy.server.macosx.x86_64/.project
new file mode 100644
index 00000000000..1cd20fb4f09
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.macosx.x86_64/.project
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.remote.proxy.server.macosx.x86_64</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ </natures>
+</projectDescription>
diff --git a/remote/org.eclipse.remote.proxy.server.macosx.x86_64/.settings/org.eclipse.core.resources.prefs b/remote/org.eclipse.remote.proxy.server.macosx.x86_64/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.macosx.x86_64/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/remote/org.eclipse.remote.proxy.server.macosx.x86_64/.settings/org.eclipse.pde.api.tools.prefs b/remote/org.eclipse.remote.proxy.server.macosx.x86_64/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 00000000000..ec9fbf321d0
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.macosx.x86_64/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,184 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITH_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_FIELD=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERCLASS_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_CHANGED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENTS=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETERS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Error
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Warning
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+MISSING_EE_DESCRIPTIONS=Warning
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=false
+changed_execution_env=Error
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+incompatible_api_component_version_report_major_without_breaking_change=Warning
+incompatible_api_component_version_report_minor_without_api_change=Warning
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/remote/org.eclipse.remote.proxy.server.macosx.x86_64/.settings/org.eclipse.pde.core.prefs b/remote/org.eclipse.remote.proxy.server.macosx.x86_64/.settings/org.eclipse.pde.core.prefs
new file mode 100644
index 00000000000..f29e940a005
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.macosx.x86_64/.settings/org.eclipse.pde.core.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+pluginProject.extensions=false
+resolve.requirebundle=false
diff --git a/remote/org.eclipse.remote.proxy.server.macosx.x86_64/.settings/org.eclipse.pde.prefs b/remote/org.eclipse.remote.proxy.server.macosx.x86_64/.settings/org.eclipse.pde.prefs
new file mode 100644
index 00000000000..d2dc703ba9e
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.macosx.x86_64/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,35 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=2
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=2
+compilers.p.missing-version-export-package=2
+compilers.p.missing-version-import-package=2
+compilers.p.missing-version-require-bundle=2
+compilers.p.no-required-att=0
+compilers.p.no.automatic.module=1
+compilers.p.not-externalized-att=1
+compilers.p.service.component.without.lazyactivation=1
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/remote/org.eclipse.remote.proxy.server.macosx.x86_64/META-INF/MANIFEST.MF b/remote/org.eclipse.remote.proxy.server.macosx.x86_64/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..16eaf6cef77
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.macosx.x86_64/META-INF/MANIFEST.MF
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.remote.proxy.server.macosx.x86_64
+Bundle-Version: 1.0.200.qualifier
+Bundle-Vendor: %pluginProvider
+Bundle-Localization: plugin
diff --git a/remote/org.eclipse.remote.proxy.server.macosx.x86_64/about.html b/remote/org.eclipse.remote.proxy.server.macosx.x86_64/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.macosx.x86_64/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/remote/org.eclipse.remote.proxy.server.macosx.x86_64/build.properties b/remote/org.eclipse.remote.proxy.server.macosx.x86_64/build.properties
new file mode 100644
index 00000000000..0c81c8bc303
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.macosx.x86_64/build.properties
@@ -0,0 +1,5 @@
+bin.includes = META-INF/,\
+ proxy.server.tar.gz,\
+ plugin.properties,\
+ about.html
+src.includes = about.html
diff --git a/remote/org.eclipse.remote.proxy.server.macosx.x86_64/plugin.properties b/remote/org.eclipse.remote.proxy.server.macosx.x86_64/plugin.properties
new file mode 100644
index 00000000000..0e193487c25
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.macosx.x86_64/plugin.properties
@@ -0,0 +1,14 @@
+###############################################################################
+# Copyright (c) 2016 Oak Ridge National Laboratory and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+###############################################################################
+
+pluginName=Remote Proxy Server Mac OS X x86_64 Component
+pluginProvider=Eclipse PTP
diff --git a/remote/org.eclipse.remote.proxy.server.macosx.x86_64/pom.xml b/remote/org.eclipse.remote.proxy.server.macosx.x86_64/pom.xml
new file mode 100644
index 00000000000..71751a36fe1
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.macosx.x86_64/pom.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2021 Kichwa Coders Canada Inc. and others.
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
+<project
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+ xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.cdt</groupId>
+ <artifactId>cdt-parent</artifactId>
+ <version>10.7.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent>
+
+ <version>1.0.200-SNAPSHOT</version>
+ <artifactId>org.eclipse.remote.proxy.server.macosx.x86_64</artifactId>
+ <packaging>eclipse-plugin</packaging>
+
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-antrun-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>copy-proxy-server-from-product-to-bundle</id>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ <phase>process-resources</phase>
+ <configuration>
+ <target name="copy-proxy-server-from-product-to-bundle">
+ <copy file="${basedir}/../org.eclipse.remote.proxy.server.product/target/products/proxy.server-macosx.cocoa.x86_64.tar.gz"
+ tofile="${basedir}/proxy.server.tar.gz"/>
+ </target>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/remote/org.eclipse.remote.proxy.server.product/.project b/remote/org.eclipse.remote.proxy.server.product/.project
new file mode 100644
index 00000000000..cf484fa252c
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.product/.project
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.remote.proxy.server.product</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ </buildSpec>
+ <natures>
+ </natures>
+</projectDescription>
diff --git a/remote/org.eclipse.remote.proxy.server.product/.settings/org.eclipse.core.resources.prefs b/remote/org.eclipse.remote.proxy.server.product/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.product/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/remote/org.eclipse.remote.proxy.server.product/pom.xml b/remote/org.eclipse.remote.proxy.server.product/pom.xml
new file mode 100644
index 00000000000..6f3073bbefb
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.product/pom.xml
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.cdt</groupId>
+ <artifactId>cdt-parent</artifactId>
+ <version>10.7.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent>
+
+ <artifactId>org.eclipse.remote.proxy.server.product</artifactId>
+ <version>1.0.100</version>
+ <packaging>eclipse-repository</packaging>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-p2-repository-plugin</artifactId>
+ <version>${tycho-version}</version>
+ <configuration>
+ <createArtifactRepository>false</createArtifactRepository>
+ <includeAllDependencies>true</includeAllDependencies>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+ <profiles>
+ <profile>
+ <id>not-production</id>
+ <activation>
+ <activeByDefault>true</activeByDefault>
+ </activation>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-p2-director-plugin</artifactId>
+ <version>${tycho-version}</version>
+ <configuration>
+ <formats>
+ <win32>zip</win32>
+ <linux>tar.gz</linux>
+ <macosx>tar.gz</macosx>
+ </formats>
+ <products>
+ <product>
+ <id>proxy.server</id>
+ <rootFolder>proxy</rootFolder>
+ <rootFolders>
+ <macosx>Proxy.app</macosx>
+ </rootFolders>
+ </product>
+ </products>
+ </configuration>
+ <executions>
+ <execution>
+ <id>materialize-products</id>
+ <goals>
+ <goal>materialize-products</goal>
+ </goals>
+ </execution>
+ <execution>
+ <id>archive-products</id>
+ <goals>
+ <goal>archive-products</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ <profile>
+ <id>production</id>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-p2-director-plugin</artifactId>
+ <version>${tycho-version}</version>
+ <configuration>
+ <formats>
+ <win32>zip</win32>
+ <linux>tar.gz</linux>
+ <macosx>tar.gz</macosx>
+ </formats>
+ <products>
+ <product>
+ <id>proxy.server</id>
+ <rootFolder>proxy</rootFolder>
+ <rootFolders>
+ <macosx>Proxy.app</macosx>
+ </rootFolders>
+ </product>
+ </products>
+ </configuration>
+ <executions>
+ <execution>
+ <id>materialize-products</id>
+ <goals>
+ <goal>materialize-products</goal>
+ </goals>
+ </execution>
+ <execution>
+ <id>archive-products</id>
+ <!-- must run after signing -->
+ <phase>pre-integration-test</phase>
+ <goals>
+ <goal>archive-products</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.eclipse.cbi.maven.plugins</groupId>
+ <artifactId>eclipse-macsigner-plugin</artifactId>
+ <version>${cbi-plugins.version}</version>
+ <executions>
+ <execution>
+ <id>sign</id>
+ <phase>package</phase>
+ <goals>
+ <goal>sign</goal>
+ </goals>
+ <configuration>
+ <baseSearchDir>${project.build.directory}/products/proxy.server/macosx</baseSearchDir>
+ <fileNames>
+ <fileName>Proxy.app</fileName>
+ </fileNames>
+ <timeoutMillis>300000</timeoutMillis>
+ <entitlements>${project.basedir}/product.entitlements</entitlements>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+</project>
diff --git a/remote/org.eclipse.remote.proxy.server.product/product.entitlements b/remote/org.eclipse.remote.proxy.server.product/product.entitlements
new file mode 100644
index 00000000000..6fdb9d33d10
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.product/product.entitlements
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>com.apple.security.cs.allow-jit</key>
+ <true/>
+ <key>com.apple.security.cs.allow-unsigned-executable-memory</key>
+ <true/>
+ <key>com.apple.security.cs.disable-executable-page-protection</key>
+ <true/>
+ <key>com.apple.security.cs.allow-dyld-environment-variables</key>
+ <true/>
+ <key>com.apple.security.cs.disable-library-validation</key>
+ <true/>
+ <key>com.apple.security.cs.debugger</key>
+ <true/>
+</dict>
+</plist> \ No newline at end of file
diff --git a/remote/org.eclipse.remote.proxy.server.product/proxy.server.product b/remote/org.eclipse.remote.proxy.server.product/proxy.server.product
new file mode 100644
index 00000000000..3376d126d2c
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.server.product/proxy.server.product
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?pde version="3.5"?>
+
+<product uid="proxy.server" application="org.eclipse.remote.proxy.server.core.application" version="1.0.0" useFeatures="false" includeLaunchers="true">
+
+ <configIni use="default">
+ </configIni>
+
+ <launcherArgs>
+ <programArgsWin>-consoleLog
+ </programArgsWin>
+ <vmArgs>-Declipse.ignoreApp=true -Dosgi.noShutdown=true
+ </vmArgs>
+ </launcherArgs>
+
+ <windowImages/>
+
+ <launcher name="proxy">
+ <win useIco="false">
+ <bmp/>
+ </win>
+ </launcher>
+
+ <vm>
+ <macos include="false">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7</macos>
+ </vm>
+
+ <plugins>
+ <plugin id="com.ibm.icu"/>
+ <plugin id="org.eclipse.cdt.core.macosx" fragment="true"/>
+ <plugin id="org.eclipse.cdt.core.linux.x86_64" fragment="true"/>
+ <plugin id="org.eclipse.cdt.core.linux.ppc64le" fragment="true"/>
+ <plugin id="org.eclipse.cdt.core.native"/>
+ <plugin id="org.eclipse.core.contenttype"/>
+ <plugin id="org.eclipse.core.expressions"/>
+ <plugin id="org.eclipse.core.filesystem"/>
+ <plugin id="org.eclipse.core.filesystem.macosx" fragment="true"/>
+ <plugin id="org.eclipse.core.jobs"/>
+ <plugin id="org.eclipse.core.resources"/>
+ <plugin id="org.eclipse.core.runtime"/>
+ <plugin id="org.eclipse.core.variables"/>
+ <plugin id="org.eclipse.debug.core"/>
+ <plugin id="org.eclipse.equinox.app"/>
+ <plugin id="org.eclipse.equinox.common"/>
+ <plugin id="org.eclipse.equinox.event"/>
+ <plugin id="org.eclipse.equinox.preferences"/>
+ <plugin id="org.eclipse.equinox.registry"/>
+ <plugin id="org.eclipse.equinox.security"/>
+ <plugin id="org.eclipse.equinox.security.macosx" fragment="true"/>
+ <plugin id="org.eclipse.osgi"/>
+ <plugin id="org.eclipse.osgi.compatibility.state" fragment="true"/>
+ <plugin id="org.eclipse.osgi.services"/>
+ <plugin id="org.eclipse.remote.core"/>
+ <plugin id="org.eclipse.remote.proxy.protocol.core"/>
+ <plugin id="org.eclipse.remote.proxy.server.core"/>
+ </plugins>
+
+ <configurations>
+ <plugin id="org.eclipse.core.runtime" autoStart="true" startLevel="0" />
+ <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="2" />
+ <plugin id="org.eclipse.equinox.ds" autoStart="true" startLevel="2" />
+ <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="2" />
+ <plugin id="org.eclipse.equinox.registry" autoStart="true" startLevel="2" />
+ </configurations>
+
+ <preferencesInfo>
+ <targetfile overwrite="false"/>
+ </preferencesInfo>
+
+ <cssInfo>
+ </cssInfo>
+
+</product>
diff --git a/remote/org.eclipse.remote.proxy.tests/.classpath b/remote/org.eclipse.remote.proxy.tests/.classpath
new file mode 100644
index 00000000000..a42a828e04a
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.tests/.classpath
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src">
+ <attributes>
+ <attribute name="test" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/remote/org.eclipse.remote.proxy.tests/.project b/remote/org.eclipse.remote.proxy.tests/.project
new file mode 100644
index 00000000000..41c1372aa28
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.tests/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.remote.proxy.tests</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/remote/org.eclipse.remote.proxy.tests/.settings/org.eclipse.core.resources.prefs b/remote/org.eclipse.remote.proxy.tests/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.tests/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/remote/org.eclipse.remote.proxy.tests/.settings/org.eclipse.jdt.core.prefs b/remote/org.eclipse.remote.proxy.tests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..5b1c443114d
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.tests/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=ignore
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
+org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=ignore
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/remote/org.eclipse.remote.proxy.tests/.settings/org.eclipse.jdt.launching.prefs b/remote/org.eclipse.remote.proxy.tests/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 00000000000..f8a131b56e0
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.tests/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_COMPILER_COMPLIANCE_DOES_NOT_MATCH_JRE=warning
+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=warning
diff --git a/remote/org.eclipse.remote.proxy.tests/.settings/org.eclipse.jdt.ui.prefs b/remote/org.eclipse.remote.proxy.tests/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.tests/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/remote/org.eclipse.remote.proxy.tests/.settings/org.eclipse.pde.api.tools.prefs b/remote/org.eclipse.remote.proxy.tests/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 00000000000..ec9fbf321d0
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.tests/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,184 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITH_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_FIELD=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERCLASS_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_CHANGED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENTS=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETERS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Error
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Warning
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+MISSING_EE_DESCRIPTIONS=Warning
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=false
+changed_execution_env=Error
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+incompatible_api_component_version_report_major_without_breaking_change=Warning
+incompatible_api_component_version_report_minor_without_api_change=Warning
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/remote/org.eclipse.remote.proxy.tests/.settings/org.eclipse.pde.prefs b/remote/org.eclipse.remote.proxy.tests/.settings/org.eclipse.pde.prefs
new file mode 100644
index 00000000000..51a63ec9988
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.tests/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,35 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=2
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=2
+compilers.p.missing-version-export-package=2
+compilers.p.missing-version-import-package=2
+compilers.p.missing-version-require-bundle=2
+compilers.p.no-required-att=0
+compilers.p.no.automatic.module=1
+compilers.p.not-externalized-att=2
+compilers.p.service.component.without.lazyactivation=1
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/remote/org.eclipse.remote.proxy.tests/META-INF/MANIFEST.MF b/remote/org.eclipse.remote.proxy.tests/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..61c35eb4b4b
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,19 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Remote Proxy Tests
+Bundle-SymbolicName: org.eclipse.remote.proxy.tests
+Bundle-Version: 1.0.100.qualifier
+Bundle-Activator: org.eclipse.remote.proxy.tests.Activator
+Bundle-Vendor: Eclipse PTP
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.core.filesystem,
+ org.eclipse.remote.core,
+ org.eclipse.remote.proxy.core,
+ org.junit,
+ org.eclipse.remote.proxy.protocol.core
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Bundle-ActivationPolicy: lazy
+Import-Package: com.jcraft.jsch;version="0.1.53",
+ org.eclipse.jsch.core,
+ org.eclipse.jsch.ui
diff --git a/remote/org.eclipse.remote.proxy.tests/about.html b/remote/org.eclipse.remote.proxy.tests/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.tests/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/remote/org.eclipse.remote.proxy.tests/build.properties b/remote/org.eclipse.remote.proxy.tests/build.properties
new file mode 100644
index 00000000000..67af4196ea0
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.tests/build.properties
@@ -0,0 +1,6 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ about.html,\
+ .
+src.includes = about.html
diff --git a/remote/org.eclipse.remote.proxy.tests/src/org/eclipse/remote/proxy/tests/Activator.java b/remote/org.eclipse.remote.proxy.tests/src/org/eclipse/remote/proxy/tests/Activator.java
new file mode 100644
index 00000000000..02ff2019936
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.tests/src/org/eclipse/remote/proxy/tests/Activator.java
@@ -0,0 +1,57 @@
+package org.eclipse.remote.proxy.tests;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.eclipse.remote.proxy.tests"; //$NON-NLS-1$
+
+ // The shared instance
+ private static Activator plugin;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+ /**
+ * Return the OSGi service with the given service interface.
+ *
+ * @param service service interface
+ * @return the specified service or null if it's not registered
+ */
+ public static <T> T getService(Class<T> service) {
+ BundleContext context = plugin.getBundle().getBundleContext();
+ ServiceReference<T> ref = context.getServiceReference(service);
+ return ref != null ? context.getService(ref) : null;
+ }
+
+}
diff --git a/remote/org.eclipse.remote.proxy.tests/src/org/eclipse/remote/proxy/tests/ConnectionTests.java b/remote/org.eclipse.remote.proxy.tests/src/org/eclipse/remote/proxy/tests/ConnectionTests.java
new file mode 100644
index 00000000000..b1100eb7af4
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.tests/src/org/eclipse/remote/proxy/tests/ConnectionTests.java
@@ -0,0 +1,258 @@
+package org.eclipse.remote.proxy.tests;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.util.Arrays;
+import java.util.Base64;
+
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.jsch.core.IJSchService;
+import org.eclipse.jsch.ui.UserInfoPrompter;
+import org.eclipse.remote.core.IRemoteConnectionType;
+import org.eclipse.remote.core.exception.RemoteConnectionException;
+
+import com.jcraft.jsch.ChannelExec;
+import com.jcraft.jsch.ChannelShell;
+import com.jcraft.jsch.JSchException;
+import com.jcraft.jsch.Session;
+
+import junit.framework.TestCase;
+
+public class ConnectionTests extends TestCase {
+
+ private IRemoteConnectionType connType;
+
+ class Context {
+ private String line;
+ private State state;
+ private BufferedReader reader;
+ private BufferedWriter writer;
+
+ public Context(BufferedReader reader, BufferedWriter writer) {
+ this.reader = reader;
+ this.writer = writer;
+ setState(States.INIT);
+ }
+
+ String getLine() {
+ return line;
+ }
+
+ void setLine(String line) {
+ this.line = line;
+ }
+
+ State getState() {
+ return state;
+ }
+
+ void setState(State state) {
+ this.state = state;
+ }
+ }
+
+ interface State {
+ /**
+ * @return true to keep processing, false to read more data.
+ */
+ boolean process(Context context) throws IOException;
+ }
+
+ enum States implements State {
+ INIT {
+ @Override
+ public boolean process(Context context) throws IOException {
+ System.out.println("state=" + INIT);
+ String line = context.reader.readLine();
+ System.out.println("got " + line);
+ if (line.equals("running")) {
+ context.setState(States.CHECK);
+ return true;
+ }
+ return false;
+ }
+ },
+ CHECK {
+ @Override
+ public boolean process(Context context) throws IOException {
+ System.out.println("state=" + CHECK);
+ context.writer.write("check\n");
+ context.writer.flush();
+ String line = context.reader.readLine();
+ String[] parts = line.split(":");
+ switch (parts[0]) {
+ case "ok":
+ context.setState(States.START);
+ return true;
+ case "warning":
+ context.setState(States.DOWNLOAD);
+ return true;
+ }
+ System.out.println("fail:" + parts[1]);
+ return false;
+ }
+ },
+ DOWNLOAD {
+ @Override
+ public boolean process(Context context) throws IOException {
+ System.out.println("state=" + DOWNLOAD);
+ File file = new File("proxy.server-linux.gtk.x86_64.tar.gz");
+ long count = file.length() / 510;
+ System.out.println("download " + count);
+ context.writer.write("download " + count + "\n");
+ context.writer.flush();
+ if (downloadFile(file, context.writer)) {
+ String line = context.reader.readLine();
+ String[] parts = line.split(":");
+ switch (parts[0]) {
+ case "ok":
+ context.setState(States.START);
+ return true;
+ case "fail":
+ System.out.println("fail:" + parts[1]);
+ return false;
+ }
+ }
+ return false;
+ }
+
+ private boolean downloadFile(File file, BufferedWriter writer) {
+ try {
+ Base64.Encoder encoder = Base64.getEncoder();
+ FileInputStream in = new FileInputStream(file);
+ byte[] buf = new byte[510]; // Multiple of 3
+ int n;
+ while ((n = in.read(buf)) >= 0) {
+ if (n < 510) {
+ writer.write(encoder.encodeToString(Arrays.copyOf(buf, n)) + "\n");
+ } else {
+ writer.write(encoder.encodeToString(buf));
+ }
+ }
+ writer.flush();
+ in.close();
+ return true;
+ } catch (IOException e) {
+ return false;
+ }
+ }
+ },
+ START {
+ @Override
+ public boolean process(Context context) throws IOException {
+ System.out.println("state=" + START);
+ context.writer.write("start\n");
+ context.writer.flush();
+ return false;
+ }
+ }
+ }
+
+ public void testProxyConnection() {
+ try {
+ IJSchService jService = Activator.getService(IJSchService.class);
+ Session session = jService.createSession("titan.ccs.ornl.gov", 22, "gw6");
+ session.setConfig("PreferredAuthentications", "password,keyboard-interactive,gssapi-with-mic,publickey"); //$NON-NLS-1$ //$NON-NLS-2$
+ new UserInfoPrompter(session);
+ jService.connect(session, 0, new NullProgressMonitor());
+ ChannelExec server = (ChannelExec) session.openChannel("exec");
+ server.setCommand("/bin/sh");
+ server.connect();
+ BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(server.getOutputStream()));
+ BufferedReader reader = new BufferedReader(new InputStreamReader(server.getInputStream()));
+ FileReader script = new FileReader("bootstrap.sh");
+ BufferedReader scriptReader = new BufferedReader(script);
+ String line;
+ while ((line = scriptReader.readLine()) != null) {
+ writer.write(line + "\n");
+ }
+ scriptReader.close();
+ writer.flush();
+ Context context = new Context(reader, writer);
+ while (context.getState().process(context)) {
+ // do state machine
+ }
+ } catch (JSchException | IOException e) {
+ fail(e.getMessage());
+ }
+
+ // try {
+ // final Process proc = Runtime.getRuntime().exec("java"
+ // + " -cp /Users/gw6/Work/git/org.eclipse.remote/releng/org.eclipse.remote.proxy.server.product/target/products/proxy.server/macosx/cocoa/x86_64/Proxy.app/Contents/Eclipse/plugins/org.eclipse.equinox.launcher_1.3.200.v20160318-1642.jar"
+ // + " org.eclipse.equinox.launcher.Main"
+ // + " -application org.eclipse.remote.proxy.server.core.application"
+ // + " -noExit");
+ // assertTrue(proc.isAlive());
+ //
+ // new Thread("stderr") {
+ // private byte[] buf = new byte[1024];
+ // @Override
+ // public void run() {
+ // int n;
+ // BufferedInputStream err = new BufferedInputStream(proc.getErrorStream());
+ // try {
+ // while ((n = err.read(buf)) >= 0) {
+ // if (n > 0) {
+ // System.err.println("server: " + new String(buf, 0, n));
+ // }
+ // }
+ // } catch (IOException e) {
+ // // TODO Auto-generated catch block
+ // e.printStackTrace();
+ // }
+ // }
+ //
+ // }.start();
+ //
+ // IRemoteConnection conn = connType.newConnection("test");
+ // assertNotNull(conn);
+ // IRemoteProxyService proxy = conn.getService(IRemoteProxyService.class);
+ // assertNotNull(proxy);
+ // proxy.setStreams(proc.getInputStream(), proc.getOutputStream());
+ // conn.open(new NullProgressMonitor());
+ // conn.close();
+ //
+ // proc.destroy();
+ // proc.waitFor();
+ // assertEquals(false, proc.isAlive());
+ // } catch (IOException | RemoteConnectionException | InterruptedException e) {
+ // fail(e.getMessage());
+ // }
+ }
+
+ private String executeSshCommand(ChannelShell shell, String command) throws RemoteConnectionException {
+ try {
+ ByteArrayOutputStream stream = new ByteArrayOutputStream();
+ ByteArrayOutputStream err = new ByteArrayOutputStream();
+ shell.setOutputStream(stream);
+ shell.setExtOutputStream(err);
+ BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(shell.getOutputStream()));
+ writer.write(command);
+ writer.flush();
+ if (err.size() > 0) {
+ throw new RemoteConnectionException(err.toString());
+ }
+ return stream.toString();
+ } catch (IOException e) {
+ throw new RemoteConnectionException(e.getMessage());
+ }
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+ // IRemoteServicesManager manager = Activator.getService(IRemoteServicesManager.class);
+ // connType = manager.getConnectionType("org.eclipse.remote.Proxy"); //$NON-NLS-1$
+ // assertNotNull(connType);
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ }
+}
diff --git a/remote/org.eclipse.remote.proxy.tests/src/org/eclipse/remote/proxy/tests/FileStoreTests.java b/remote/org.eclipse.remote.proxy.tests/src/org/eclipse/remote/proxy/tests/FileStoreTests.java
new file mode 100644
index 00000000000..875b83d1007
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.tests/src/org/eclipse/remote/proxy/tests/FileStoreTests.java
@@ -0,0 +1,279 @@
+package org.eclipse.remote.proxy.tests;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.net.URI;
+import java.util.UUID;
+
+import org.eclipse.core.filesystem.EFS;
+import org.eclipse.core.filesystem.IFileInfo;
+import org.eclipse.core.filesystem.IFileStore;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteConnectionHostService;
+import org.eclipse.remote.core.IRemoteConnectionType;
+import org.eclipse.remote.core.IRemoteConnectionWorkingCopy;
+import org.eclipse.remote.core.IRemoteFileService;
+import org.eclipse.remote.core.IRemoteServicesManager;
+
+import junit.framework.TestCase;
+
+public class FileStoreTests extends TestCase {
+ private static final String CONNECTION_NAME = "test_connection";
+ private static final String LOCAL_DIR = "/tmp/ptp_" + UUID.randomUUID();
+ private static final String REMOTE_DIR = "/tmp/ptp_" + UUID.randomUUID();
+ private static final String DIR_NAME = "filestore_tests";
+ private static final String LOCAL_FILE = "local_file";
+ private static final String REMOTE_FILE = "remote_file";
+ private static final String REMOTE_FILE2 = "remote_file2";
+ private static final String TEST_CONTENTS = "a string containing fairly *()(*&^$%##\n random text\n with some newlines\n";
+ private static final String TEST_CONTENTS2 = "a different string containing \nfairly *()(*&^$%## random text\n with some newlines\n";
+
+ private IFileStore remoteParent;
+ private IFileStore localParent;
+ private IFileStore remoteDir;
+ private IFileStore localDir;
+
+ private static IRemoteFileService fileService;
+ private static IRemoteConnection connection;
+
+ private void createFile(IFileStore fileStore, String contents) throws CoreException, IOException {
+ OutputStream stream = fileStore.openOutputStream(EFS.NONE, new NullProgressMonitor());
+ assertNotNull(stream);
+ BufferedWriter buf = new BufferedWriter(new OutputStreamWriter(stream));
+ buf.write(contents);
+ buf.close();
+ }
+
+ public void testStreams() {
+ IFileStore remoteFileStore = remoteDir.getChild(REMOTE_FILE);
+
+ for (int i = 0; i < 5; i++) {
+ try {
+ remoteFileStore.delete(EFS.NONE, null);
+ } catch (CoreException e) {
+ fail(e.getMessage());
+ }
+
+ assertFalse(remoteFileStore.fetchInfo().exists());
+
+ try {
+ createFile(remoteFileStore, TEST_CONTENTS);
+ } catch (Exception e) {
+ fail(e.getMessage());
+ }
+
+ assertTrue(remoteFileStore.fetchInfo().exists());
+
+ try {
+ InputStream stream = remoteFileStore.openInputStream(EFS.NONE, null);
+ assertNotNull(stream);
+ BufferedReader buf = new BufferedReader(new InputStreamReader(stream));
+ String line = buf.readLine();
+ assertEquals(line, TEST_CONTENTS.split("\n")[0]);
+
+ buf.close();
+ } catch (Exception e) {
+ fail(e.getMessage());
+ }
+ }
+ }
+
+ public void testMultiStreams() {
+ IFileStore remoteFileStore = remoteDir.getChild(REMOTE_FILE);
+ IFileStore remoteFileStore2 = remoteDir.getChild(REMOTE_FILE2);
+
+ try {
+ createFile(remoteFileStore, TEST_CONTENTS);
+ createFile(remoteFileStore2, TEST_CONTENTS2);
+ } catch (Exception e) {
+ fail(e.getMessage());
+ }
+
+ assertTrue(remoteFileStore.fetchInfo().exists());
+ assertTrue(remoteFileStore2.fetchInfo().exists());
+
+ /*
+ * Check how many streams we can open
+ */
+ InputStream streams[] = new InputStream[10];
+ int streamCount = 0;
+
+ for (; streamCount < streams.length; streamCount++) {
+ try {
+ streams[streamCount] = remoteFileStore.openInputStream(EFS.NONE, null);
+ } catch (Exception e) {
+ if (!e.getMessage().endsWith("channel is not opened.")) {
+ fail(e.getMessage());
+ }
+ break;
+ }
+ }
+
+ for (int i = 0; i < streamCount; i++) {
+ try {
+ streams[i].close();
+ } catch (IOException e) {
+ // No need to deal with this
+ }
+ }
+
+ for (int i = 0; i < streamCount / 2; i++) {
+ try {
+ InputStream stream = remoteFileStore.openInputStream(EFS.NONE, null);
+ assertNotNull(stream);
+ BufferedReader buf = new BufferedReader(new InputStreamReader(stream));
+ String line = buf.readLine();
+ assertEquals(line, TEST_CONTENTS.split("\n")[0]);
+
+ InputStream stream2 = remoteFileStore2.openInputStream(EFS.NONE, null);
+ assertNotNull(stream2);
+ BufferedReader buf2 = new BufferedReader(new InputStreamReader(stream2));
+ String line2 = buf2.readLine();
+ assertEquals(line2, TEST_CONTENTS2.split("\n")[0]);
+
+ stream.close();
+ stream2.close();
+ } catch (Exception e) {
+ fail(e.getMessage());
+ }
+ }
+ }
+
+ public void testCopy() {
+ final IFileStore localFileStore = localDir.getChild(LOCAL_FILE);
+ final IFileStore remoteFileStore = remoteDir.getChild(REMOTE_FILE);
+ try {
+ localFileStore.delete(EFS.NONE, new NullProgressMonitor());
+ remoteFileStore.delete(EFS.NONE, new NullProgressMonitor());
+ createFile(localFileStore, "foo\n");
+ localFileStore.copy(remoteFileStore, EFS.NONE, new NullProgressMonitor());
+ } catch (CoreException e) {
+ fail(e.getMessage());
+ } catch (IOException e) {
+ fail(e.getMessage());
+ }
+ IFileInfo srcInfo = localFileStore.fetchInfo();
+ IFileInfo dstInfo = remoteFileStore.fetchInfo();
+ assertTrue(dstInfo.exists());
+ assertTrue(srcInfo.getLength() == dstInfo.getLength());
+ try {
+ InputStream stream = remoteFileStore.openInputStream(EFS.NONE, new NullProgressMonitor());
+ byte[] b = new byte[4];
+ stream.read(b);
+ stream.close();
+ assertTrue(b[0] == 'f');
+ assertTrue(b[1] == 'o');
+ assertTrue(b[2] == 'o');
+ assertTrue(b[3] == '\n');
+ } catch (CoreException e) {
+ fail(e.getMessage());
+ } catch (IOException e) {
+ fail(e.getMessage());
+ }
+ }
+
+ public void testExecutable() {
+ IFileStore fs = remoteDir.getChild(REMOTE_FILE);
+ try {
+ fs.delete(EFS.NONE, new NullProgressMonitor());
+ createFile(fs, "contents");
+ } catch (Exception e) {
+ fail(e.getMessage());
+ }
+ IFileInfo fi = fs.fetchInfo();
+ boolean current = fi.getAttribute(EFS.ATTRIBUTE_EXECUTABLE);
+ boolean expected = !current;
+ fi.setAttribute(EFS.ATTRIBUTE_EXECUTABLE, expected);
+ try {
+ fs.putInfo(fi, EFS.SET_ATTRIBUTES, new NullProgressMonitor());
+ } catch (CoreException e) {
+ fail(e.getMessage());
+ }
+ fs = remoteDir.getChild(REMOTE_FILE);
+ fi = fs.fetchInfo();
+ assertEquals(expected, fi.getAttribute(EFS.ATTRIBUTE_EXECUTABLE));
+ }
+
+ public void xtestLargeFile() {
+ IFileStore local = EFS.getLocalFileSystem().getStore(new Path("/usr/bin/php"));
+ IFileStore remote = remoteDir.getChild("php.xxx");
+ try {
+ remote.delete(0, new NullProgressMonitor());
+ InputStream inp = local.openInputStream(0, new NullProgressMonitor());
+ OutputStream out = remote.openOutputStream(0, new NullProgressMonitor());
+ byte[] b = new byte[1024];
+ int len;
+ while ((len = inp.read(b)) > 0) {
+ out.write(b, 0, len);
+ }
+ inp.close();
+ out.close();
+ IFileInfo linfo = local.fetchInfo();
+ IFileInfo rinfo = remote.fetchInfo();
+ assertEquals(linfo.getLength(), rinfo.getLength());
+ } catch (CoreException | IOException e) {
+ fail(e.getMessage());
+ }
+ }
+
+ public void testCopyLargeFile() {
+ IFileStore local = EFS.getLocalFileSystem().getStore(new Path("/usr/bin/php"));
+ IFileStore remote = remoteDir.getChild("php.xxx");
+ try {
+ local.copy(remote, EFS.OVERWRITE, new NullProgressMonitor());
+ IFileInfo linfo = local.fetchInfo();
+ IFileInfo rinfo = remote.fetchInfo();
+ assertEquals(linfo.getLength(), rinfo.getLength());
+ } catch (CoreException e) {
+ fail(e.getMessage());
+ }
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+ if (connection == null) {
+ IRemoteServicesManager manager = Activator.getService(IRemoteServicesManager.class);
+ IRemoteConnectionType connType = manager.getConnectionType("org.eclipse.remote.Proxy"); //$NON-NLS-1$
+ assertNotNull(connType);
+ IRemoteConnectionWorkingCopy wc = connType.newConnection(CONNECTION_NAME);
+ IRemoteConnectionHostService host = wc.getService(IRemoteConnectionHostService.class);
+ host.setHostname("titan-ext1.ccs.ornl.gov");
+ // host.setHostname("localhost");
+ host.setUsername("gw6");
+ connection = wc.save();
+ assertNotNull(connection);
+ connection.open(new NullProgressMonitor());
+ assertTrue(connection.isOpen());
+ fileService = connection.getService(IRemoteFileService.class);
+ assertNotNull(fileService);
+ }
+
+ URI remoteDirUri = fileService.toURI(REMOTE_DIR);
+ URI localDirUri = fileService.toURI(LOCAL_DIR);
+ assertNotNull(remoteDirUri);
+ assertNotNull(localDirUri);
+
+ remoteParent = EFS.getStore(fileService.toURI(REMOTE_DIR));
+ remoteDir = remoteParent.getChild(DIR_NAME);
+ localParent = EFS.getLocalFileSystem().getStore(new Path(LOCAL_DIR));
+ localDir = localParent.getChild(DIR_NAME);
+
+ remoteDir.mkdir(EFS.NONE, null);
+ localDir.mkdir(EFS.NONE, null);
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ remoteParent.delete(EFS.NONE, new NullProgressMonitor());
+ localParent.delete(EFS.NONE, new NullProgressMonitor());
+ }
+
+}
diff --git a/remote/org.eclipse.remote.proxy.tests/src/org/eclipse/remote/proxy/tests/MultiplexServerTests.java b/remote/org.eclipse.remote.proxy.tests/src/org/eclipse/remote/proxy/tests/MultiplexServerTests.java
new file mode 100644
index 00000000000..9ff7172a240
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.tests/src/org/eclipse/remote/proxy/tests/MultiplexServerTests.java
@@ -0,0 +1,193 @@
+package org.eclipse.remote.proxy.tests;
+
+import java.io.BufferedInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Random;
+
+import org.eclipse.remote.proxy.protocol.core.StreamChannel;
+import org.eclipse.remote.proxy.protocol.core.StreamChannelManager;
+
+import junit.framework.TestCase;
+
+public class MultiplexServerTests extends TestCase {
+ private static final int NUM_CHANS = 5;
+
+ private class ChanReader implements Runnable {
+ private byte[] buf = new byte[8192];
+ private StreamChannel chan;
+ private StringBuffer[] recvBufs;
+ private String name;
+
+ public ChanReader(StreamChannel chan, StringBuffer[] recvBufs, String name) {
+ this.chan = chan;
+ this.recvBufs = recvBufs;
+ this.name = name;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public void run() {
+ try {
+ synchronized (MultiplexServerTests.this) {
+ System.out.println(getName() + " started");
+ }
+ int n;
+ while ((n = chan.getInputStream().read(buf)) >= 0) {
+ if (n > 0) {
+ String s = new String(buf, 0, n);
+ recvBufs[chan.getId()].append(s);
+ }
+ }
+ synchronized (MultiplexServerTests.this) {
+ System.out.println(getName() + " finished");
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ private class ChanWriter implements Runnable {
+ private StreamChannel chan;
+ private StringBuffer[] sentBufs;
+ private Random r = new Random();
+ private String name;
+
+ public ChanWriter(StreamChannel chan, StringBuffer[] sentBufs, String name) {
+ this.chan = chan;
+ this.sentBufs = sentBufs;
+ this.name = name;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public void run() {
+ try {
+ synchronized (MultiplexServerTests.this) {
+ System.out.println(getName() + " started");
+ }
+ for (int i = 0; i < 100; i++) {
+ String s = String.format("%05d\n", i);
+ chan.getOutputStream().write(s.getBytes());
+ // chan.getOutputStream().flush();
+ sentBufs[chan.getId()].append(s);
+ try {
+ Thread.sleep(r.nextInt(100));
+ } catch (InterruptedException e) {
+ fail(e.getMessage());
+ }
+ }
+ chan.getOutputStream().flush();
+ synchronized (MultiplexServerTests.this) {
+ System.out.println(getName() + " finished");
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ public void testChannels() {
+ try {
+ final StringBuffer[] clntSentBufs = new StringBuffer[NUM_CHANS];
+ final StringBuffer[] clntRecvBufs = new StringBuffer[NUM_CHANS];
+
+ final Thread[] clntReaders = new Thread[NUM_CHANS];
+ final Thread[] clntWriters = new Thread[NUM_CHANS];
+
+ for (int i = 0; i < NUM_CHANS; i++) {
+ clntSentBufs[i] = new StringBuffer();
+ clntRecvBufs[i] = new StringBuffer();
+ }
+
+ final Process proc = Runtime.getRuntime().exec("java -jar /Users/gw6/Desktop/Server.jar");
+ assertTrue(proc.isAlive());
+
+ new Thread("stderr") {
+ private byte[] buf = new byte[1024];
+
+ @Override
+ public void run() {
+ int n;
+ BufferedInputStream err = new BufferedInputStream(proc.getErrorStream());
+ try {
+ while ((n = err.read(buf)) >= 0) {
+ if (n > 0) {
+ System.err.println("server: " + new String(buf, 0, n));
+ }
+ }
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ }.start();
+
+ StreamChannelManager mpxClnt = startMpxClient(proc.getInputStream(), proc.getOutputStream());
+
+ List<StreamChannel> channels = runChannelTest(mpxClnt, clntReaders, clntWriters, clntSentBufs,
+ clntRecvBufs);
+
+ for (int i = 0; i < NUM_CHANS; i++) {
+ clntWriters[i].join();
+ }
+
+ for (StreamChannel channel : channels) {
+ channel.close();
+ }
+
+ for (int i = 0; i < NUM_CHANS; i++) {
+ if (clntReaders[i] != null) {
+ clntReaders[i].join();
+ }
+ }
+
+ proc.destroy();
+ proc.waitFor();
+ assertEquals(0, proc.exitValue());
+ } catch (IOException | InterruptedException e) {
+ fail(e.getMessage());
+ }
+ }
+
+ private List<StreamChannel> runChannelTest(StreamChannelManager mpx, Thread[] readers, Thread[] writers,
+ final StringBuffer[] sentBufs, final StringBuffer[] recvBufs) throws IOException {
+ List<StreamChannel> channels = new ArrayList<>();
+ for (int i = 0; i < NUM_CHANS; i++) {
+ StreamChannel chan = mpx.openChannel(); // needs to be in same thread as reader
+ // ChanReader reader = new ChanReader(chan, recvBufs, "clnt reader thread " + chan.getId());
+ // readers[chan.getId()] = new Thread(reader, reader.getName());
+ ChanWriter writer = new ChanWriter(chan, sentBufs, "clnt writer thread " + chan.getId());
+ writers[chan.getId()] = new Thread(writer, writer.getName());
+ // readers[chan.getId()].start();
+ writers[chan.getId()].start();
+ channels.add(chan);
+ }
+ return channels;
+ }
+
+ private StreamChannelManager startMpxClient(InputStream in, OutputStream out) {
+ final StreamChannelManager mpx = new StreamChannelManager(in, out);
+ new Thread(mpx, "client multiplexer").start();
+ return mpx;
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ }
+}
diff --git a/remote/org.eclipse.remote.proxy.tests/src/org/eclipse/remote/proxy/tests/MultiplexTests.java b/remote/org.eclipse.remote.proxy.tests/src/org/eclipse/remote/proxy/tests/MultiplexTests.java
new file mode 100644
index 00000000000..cf5597d76b7
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.tests/src/org/eclipse/remote/proxy/tests/MultiplexTests.java
@@ -0,0 +1,283 @@
+package org.eclipse.remote.proxy.tests;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.EOFException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.PipedInputStream;
+import java.io.PipedOutputStream;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Random;
+
+import org.eclipse.remote.proxy.protocol.core.StreamChannel;
+import org.eclipse.remote.proxy.protocol.core.StreamChannelManager;
+import org.eclipse.remote.proxy.protocol.core.StreamChannelManager.IChannelListener;
+
+import junit.framework.TestCase;
+
+public class MultiplexTests extends TestCase {
+ private static final int NUM_CHANS_PER_THREAD = 5;
+ private static final int NUM_THREADS = 5;
+ private static final int FINISH = -1;
+
+ private class ChanReader implements Runnable {
+ private DataInputStream in;
+ private List<Integer> recvBufs;
+ private String name;
+
+ public ChanReader(StreamChannel chan, List<Integer> recvBufs, String name) {
+ this.in = new DataInputStream(chan.getInputStream());
+ this.recvBufs = recvBufs;
+ this.name = name;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public void run() {
+ try {
+ synchronized (MultiplexTests.this) {
+ System.out.println(getName() + " started");
+ }
+ try {
+ while (true) {
+ int val = in.readInt();
+ if (val == FINISH) {
+ break;
+ }
+ recvBufs.add(val);
+ }
+ } catch (EOFException e) {
+ // Finish
+ }
+ synchronized (MultiplexTests.this) {
+ System.out.println(getName() + " finished");
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ private class ChanWriter implements Runnable {
+ private DataOutputStream out;
+ private List<Integer> sentBufs;
+ private Random r = new Random();
+ private String name;
+
+ public ChanWriter(StreamChannel chan, List<Integer> sentBufs, String name) {
+ this.out = new DataOutputStream(chan.getOutputStream());
+ this.sentBufs = sentBufs;
+ this.name = name;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public void run() {
+ try {
+ synchronized (MultiplexTests.this) {
+ System.out.println(getName() + " started");
+ }
+ for (int i = 0; i < 100; i++) {
+ int val = r.nextInt(1024);
+ out.writeInt(val);
+ out.flush();
+ sentBufs.add(val);
+ try {
+ Thread.sleep(r.nextInt(100));
+ } catch (InterruptedException e) {
+ fail(e.getMessage());
+ }
+ }
+ out.writeInt(FINISH);
+ out.flush();
+ synchronized (MultiplexTests.this) {
+ System.out.println(getName() + " finished");
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ private class ChanReaderWriter implements Runnable {
+ private DataInputStream in;
+ private DataOutputStream out;
+ private String name;
+
+ public ChanReaderWriter(StreamChannel chan, String name) {
+ this.in = new DataInputStream(chan.getInputStream());
+ this.out = new DataOutputStream(chan.getOutputStream());
+ this.name = name;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public void run() {
+ try {
+ synchronized (MultiplexTests.this) {
+ System.out.println(getName() + " started");
+ }
+ try {
+ while (true) {
+ int val = in.readInt();
+ out.writeInt(val);
+ out.flush();
+ }
+ } catch (EOFException e) {
+ // Finish
+ }
+ synchronized (MultiplexTests.this) {
+ System.out.println(getName() + " finished");
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ public void testChannels() {
+ try {
+ final PipedInputStream inClnt = new PipedInputStream();
+ final PipedInputStream inSvr = new PipedInputStream();
+ final PipedOutputStream outClnt = new PipedOutputStream(inSvr);
+ final PipedOutputStream outSvr = new PipedOutputStream(inClnt);
+
+ final List<List<Integer>> clntSentBufs = new ArrayList<>();
+ final List<List<Integer>> clntRecvBufs = new ArrayList<>();
+
+ final Thread[][] clntReaders = new Thread[NUM_THREADS][NUM_CHANS_PER_THREAD];
+ final Thread[][] clntWriters = new Thread[NUM_THREADS][NUM_CHANS_PER_THREAD];
+ final Thread[] svrRW = new Thread[NUM_THREADS * NUM_CHANS_PER_THREAD];
+ final Thread[] testers = new Thread[NUM_THREADS];
+
+ for (int i = 0; i < NUM_CHANS_PER_THREAD * NUM_THREADS; i++) {
+ clntSentBufs.add(new ArrayList<Integer>());
+ clntRecvBufs.add(new ArrayList<Integer>());
+ }
+
+ // Must start server first or it will miss the new channel message
+ StreamChannelManager mpxSvr = startMpxServer(inSvr, outSvr, svrRW);
+
+ StreamChannelManager mpxClnt = startMpxClient(inClnt, outClnt);
+
+ List<StreamChannel> channels = runChannelTest(mpxClnt, testers, clntReaders, clntWriters, clntSentBufs,
+ clntRecvBufs);
+
+ // Make sure all the testers have finished
+ for (int i = 0; i < NUM_THREADS; i++) {
+ testers[i].join();
+ }
+
+ // Wait for the readers and writers to complete
+ for (int i = 0; i < NUM_THREADS; i++) {
+ for (int j = 0; j < NUM_CHANS_PER_THREAD; j++) {
+ clntWriters[i][j].join();
+ clntReaders[i][j].join();
+ }
+ }
+
+ for (StreamChannel channel : channels) {
+ channel.close();
+ }
+
+ for (int i = 0; i < NUM_THREADS * NUM_CHANS_PER_THREAD; i++) {
+ svrRW[i].join();
+ }
+
+ for (int i = 0; i < NUM_CHANS_PER_THREAD * NUM_THREADS; i++) {
+ assertEquals(clntSentBufs.get(i), clntRecvBufs.get(i));
+ }
+ } catch (IOException | InterruptedException e) {
+ fail(e.getMessage());
+ }
+ }
+
+ private List<StreamChannel> runChannelTest(final StreamChannelManager mpx, final Thread[] testers,
+ final Thread[][] readers, final Thread[][] writers, final List<List<Integer>> sentBufs,
+ final List<List<Integer>> recvBufs) throws IOException {
+ final List<StreamChannel> channels = new ArrayList<>();
+ for (int i = 0; i < NUM_THREADS; i++) {
+ final int thread = i;
+ testers[i] = new Thread("client test thread " + thread) {
+ @Override
+ public void run() {
+ try {
+ for (int j = 0; j < NUM_CHANS_PER_THREAD; j++) {
+ StreamChannel chan = mpx.openChannel();
+ ChanReader reader = new ChanReader(chan, recvBufs.get(thread * NUM_CHANS_PER_THREAD + j),
+ "clnt reader thread=" + thread + " chan=" + chan.getId());
+ readers[thread][j] = new Thread(reader, reader.getName());
+ ChanWriter writer = new ChanWriter(chan, sentBufs.get(thread * NUM_CHANS_PER_THREAD + j),
+ "clnt writer thread=" + thread + " chan=" + chan.getId());
+ writers[thread][j] = new Thread(writer, writer.getName());
+ readers[thread][j].start();
+ writers[thread][j].start();
+ channels.add(chan);
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ };
+ testers[i].start();
+ }
+ return channels;
+ }
+
+ private StreamChannelManager startMpxClient(InputStream in, OutputStream out) {
+ final StreamChannelManager mpx = new StreamChannelManager(in, out);
+ new Thread(mpx, "client multiplexer").start();
+ return mpx;
+ }
+
+ private StreamChannelManager startMpxServer(InputStream in, OutputStream out, final Thread[] rws)
+ throws IOException {
+ final StreamChannelManager mpx = new StreamChannelManager(in, out);
+ mpx.setServer(true);
+ mpx.addListener(new IChannelListener() {
+ private int numThreadChans;
+
+ @Override
+ public void newChannel(final StreamChannel chan) {
+ synchronized (MultiplexTests.this) {
+ System.out.println("newChannel " + chan.getId());
+ }
+
+ ChanReaderWriter rw = new ChanReaderWriter(chan, "svr rw thread " + numThreadChans);
+ rws[numThreadChans] = new Thread(rw, rw.getName());
+ rws[numThreadChans++].start();
+ }
+
+ @Override
+ public void closeChannel(StreamChannel chan) {
+ // readers[idx].interrupt();
+ // writers[idx].interrupt();
+ synchronized (MultiplexTests.this) {
+ System.out.println("closeChannel " + chan.getId());
+ }
+ }
+ });
+ new Thread(mpx, "server multiplexer").start();
+ return mpx;
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ }
+}
diff --git a/remote/org.eclipse.remote.proxy.tests/src/org/eclipse/remote/proxy/tests/ProcessTests.java b/remote/org.eclipse.remote.proxy.tests/src/org/eclipse/remote/proxy/tests/ProcessTests.java
new file mode 100644
index 00000000000..b22c2cc2b76
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.tests/src/org/eclipse/remote/proxy/tests/ProcessTests.java
@@ -0,0 +1,259 @@
+package org.eclipse.remote.proxy.tests;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteConnectionHostService;
+import org.eclipse.remote.core.IRemoteConnectionType;
+import org.eclipse.remote.core.IRemoteConnectionWorkingCopy;
+import org.eclipse.remote.core.IRemoteProcess;
+import org.eclipse.remote.core.IRemoteProcessBuilder;
+import org.eclipse.remote.core.IRemoteProcessService;
+import org.eclipse.remote.core.IRemoteServicesManager;
+import org.eclipse.remote.core.RemoteProcessAdapter;
+
+import junit.framework.TestCase;
+
+public class ProcessTests extends TestCase {
+ private static final String CONNECTION_NAME = "test_connection";
+ private static final int NUM_THREADS = 1;
+
+ private static IRemoteConnection connection;
+ private static IRemoteProcessService processService;
+
+ private boolean threadFailed = false;
+
+ public void testStreamHalfClose() {
+ IRemoteProcessBuilder builder = processService.getProcessBuilder("perl", "-v"); //$NON-NLS-1$
+ try {
+ final Set<String> results = new HashSet<>();
+ IRemoteProcess proc = builder.start();
+ proc.getOutputStream().close(); // close stdin to make sure half closed channel works
+ BufferedReader stdout = new BufferedReader(new InputStreamReader(proc.getInputStream()));
+ String line;
+ while ((line = stdout.readLine()) != null) {
+ results.add(line);
+ results.add("\n");
+ }
+ try {
+ proc.waitFor();
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ assertTrue(results.toString().contains("Larry Wall"));
+ } catch (IOException e) {
+ fail(e.getMessage());
+ }
+
+ }
+
+ public void testConcurrentProcess() {
+ Thread[] threads = new Thread[NUM_THREADS];
+
+ for (int t = 0; t < NUM_THREADS; t++) {
+ final String threadNum = Integer.toString(t);
+ Thread thread = new Thread("test thread " + t) {
+ @Override
+ public void run() {
+ final Set<String> results = Collections.synchronizedSet(new HashSet<String>());
+ IRemoteProcessBuilder builder = processService.getProcessBuilder("perl", "-v"); //$NON-NLS-1$
+ assertNotNull(builder);
+ // builder.redirectErrorStream(true);
+ for (int i = 0; i < 1; i++) {
+ try {
+ IRemoteProcess proc = builder.start();
+ BufferedReader stdout = new BufferedReader(new InputStreamReader(proc.getInputStream()));
+ String line;
+ while ((line = stdout.readLine()) != null) {
+ System.out.println("read " + line);
+ results.add(line);
+ results.add("\n");
+ }
+ try {
+ proc.waitFor();
+ } catch (InterruptedException e) {
+ fail(e.getMessage());
+ }
+ if (!results.toString().contains("Larry Wall")) {
+ threadFailed = true;
+ }
+ assertTrue(results.toString().contains("Larry Wall"));
+ } catch (IOException e) {
+ fail(e.getMessage());
+ }
+ }
+ }
+
+ };
+ thread.start();
+ threads[t] = thread;
+ }
+ for (Thread t : threads) {
+ try {
+ t.join();
+ } catch (InterruptedException e) {
+ }
+ }
+ assertFalse(threadFailed);
+ }
+
+ public void testEnv() {
+ IRemoteProcessBuilder builder = processService.getProcessBuilder("printenv"); //$NON-NLS-1$
+ assertNotNull(builder);
+ builder.redirectErrorStream(true);
+ String path = builder.environment().get("PATH");
+ builder.environment().clear();
+ builder.environment().put("PATH", path);
+ try {
+ IRemoteProcess proc = builder.start();
+ BufferedReader stdout = new BufferedReader(new InputStreamReader(proc.getInputStream()));
+ String line;
+ String result = null;
+ while ((line = stdout.readLine()) != null) {
+ assertNull(result);
+ result = line;
+ break;
+ }
+ assertEquals("PATH=" + path, result);
+ } catch (IOException e) {
+ e.printStackTrace();
+ fail(e.getLocalizedMessage());
+ }
+ }
+
+ public void testEcho() {
+ IRemoteProcessBuilder builder = processService.getProcessBuilder("cat"); //$NON-NLS-1$
+ assertNotNull(builder);
+ builder.redirectErrorStream(true);
+ final StringBuffer result = new StringBuffer();
+ try {
+ final IRemoteProcess proc = builder.start();
+ Thread readerThread = new Thread("echo reader thread") {
+ @Override
+ public void run() {
+ try {
+ BufferedReader stdout = new BufferedReader(new InputStreamReader(proc.getInputStream()));
+ String line = stdout.readLine();
+ int count = Integer.parseInt(line);
+ for (int i = 0; i < count; i++) {
+ line = stdout.readLine();
+ if (line == null) {
+ break;
+ }
+ result.append(line);
+ System.out.println(line);
+ }
+ try {
+ proc.destroy();
+ proc.waitFor();
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ fail(e.getLocalizedMessage());
+ }
+ }
+
+ };
+ Thread writerThread = new Thread("echo writer thread") {
+ @Override
+ public void run() {
+ try {
+ BufferedWriter stdin = new BufferedWriter(new OutputStreamWriter(proc.getOutputStream()));
+ int count = 10;
+ String line = count + "\n";
+ stdin.write(line);
+ stdin.flush();
+ for (int i = 0; i < count; i++) {
+ line = i + "\n";
+ stdin.write(line);
+ stdin.flush();
+ }
+ try {
+ proc.waitFor();
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ fail(e.getLocalizedMessage());
+ }
+ }
+
+ };
+ writerThread.start();
+ readerThread.start();
+ writerThread.join();
+ readerThread.join();
+ } catch (IOException e) {
+ e.printStackTrace();
+ fail(e.getLocalizedMessage());
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ fail(e.getLocalizedMessage());
+ }
+
+ assertEquals("0123456789", result.toString());
+ }
+
+ public void testExitValue() {
+ IRemoteProcessBuilder builder = processService.getProcessBuilder(new String[] { "sleep", "50" }); //$NON-NLS-1$
+ assertNotNull(builder);
+ IRemoteProcess rp = null;
+ try {
+ rp = builder.start();
+ } catch (IOException e) {
+ e.printStackTrace();
+ fail(e.getLocalizedMessage());
+ }
+ assertNotNull(rp);
+ Process p = new RemoteProcessAdapter(rp);
+ try {
+ p.exitValue();
+ fail("Process has not exited. Should throws an IllegalThreadStateException exception");
+ } catch (IllegalThreadStateException e) {
+ // Ok
+ }
+ try {
+ p.destroyForcibly();
+ p.waitFor();
+ } catch (InterruptedException e) {
+ fail(e.getMessage());
+ }
+ assertFalse(p.isAlive());
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+ if (connection == null) {
+ IRemoteServicesManager manager = Activator.getService(IRemoteServicesManager.class);
+ IRemoteConnectionType connType = manager.getConnectionType("org.eclipse.remote.Proxy"); //$NON-NLS-1$
+ assertNotNull(connType);
+ IRemoteConnectionWorkingCopy wc = connType.newConnection(CONNECTION_NAME);
+ IRemoteConnectionHostService host = wc.getService(IRemoteConnectionHostService.class);
+ host.setHostname("localhost");
+ // host.setHostname("titan-ext1.ccs.ornl.gov");
+ host.setUsername("gw6");
+ connection = wc.save();
+ assertNotNull(connection);
+ connection.open(new NullProgressMonitor());
+ assertTrue(connection.isOpen());
+ processService = connection.getService(IRemoteProcessService.class);
+ assertNotNull(processService);
+ }
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ }
+
+}
diff --git a/remote/org.eclipse.remote.proxy.tests/src/org/eclipse/remote/proxy/tests/RemoteCoreTestSuite.java b/remote/org.eclipse.remote.proxy.tests/src/org/eclipse/remote/proxy/tests/RemoteCoreTestSuite.java
new file mode 100644
index 00000000000..2d9151705a4
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.tests/src/org/eclipse/remote/proxy/tests/RemoteCoreTestSuite.java
@@ -0,0 +1,13 @@
+package org.eclipse.remote.proxy.tests;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+public class RemoteCoreTestSuite {
+ public static Test suite() {
+ TestSuite suite = new TestSuite(RemoteCoreTestSuite.class.getName());
+
+ return suite;
+ }
+
+}
diff --git a/remote/org.eclipse.remote.proxy.ui/.classpath b/remote/org.eclipse.remote.proxy.ui/.classpath
new file mode 100644
index 00000000000..e801ebfb468
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.ui/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/remote/org.eclipse.remote.proxy.ui/.project b/remote/org.eclipse.remote.proxy.ui/.project
new file mode 100644
index 00000000000..1979ba08863
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.ui/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.remote.proxy.ui</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+ </natures>
+</projectDescription>
diff --git a/remote/org.eclipse.remote.proxy.ui/.settings/org.eclipse.core.resources.prefs b/remote/org.eclipse.remote.proxy.ui/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.ui/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/remote/org.eclipse.remote.proxy.ui/.settings/org.eclipse.jdt.core.prefs b/remote/org.eclipse.remote.proxy.ui/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..e3a8104f9ca
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.ui/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/remote/org.eclipse.remote.proxy.ui/.settings/org.eclipse.jdt.launching.prefs b/remote/org.eclipse.remote.proxy.ui/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 00000000000..f8a131b56e0
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.ui/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_COMPILER_COMPLIANCE_DOES_NOT_MATCH_JRE=warning
+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=warning
diff --git a/remote/org.eclipse.remote.proxy.ui/.settings/org.eclipse.jdt.ui.prefs b/remote/org.eclipse.remote.proxy.ui/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.ui/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/remote/org.eclipse.remote.proxy.ui/.settings/org.eclipse.pde.api.tools.prefs b/remote/org.eclipse.remote.proxy.ui/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 00000000000..ec9fbf321d0
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.ui/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,184 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITH_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_FIELD=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERCLASS_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_CHANGED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENTS=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETERS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Error
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Warning
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+MISSING_EE_DESCRIPTIONS=Warning
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=false
+changed_execution_env=Error
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+incompatible_api_component_version_report_major_without_breaking_change=Warning
+incompatible_api_component_version_report_minor_without_api_change=Warning
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/remote/org.eclipse.remote.proxy.ui/.settings/org.eclipse.pde.prefs b/remote/org.eclipse.remote.proxy.ui/.settings/org.eclipse.pde.prefs
new file mode 100644
index 00000000000..d2dc703ba9e
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.ui/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,35 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=2
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=2
+compilers.p.missing-version-export-package=2
+compilers.p.missing-version-import-package=2
+compilers.p.missing-version-require-bundle=2
+compilers.p.no-required-att=0
+compilers.p.no.automatic.module=1
+compilers.p.not-externalized-att=1
+compilers.p.service.component.without.lazyactivation=1
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/remote/org.eclipse.remote.proxy.ui/META-INF/MANIFEST.MF b/remote/org.eclipse.remote.proxy.ui/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..bc677565ba5
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,42 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.remote.proxy.ui;singleton:=true
+Bundle-Version: 1.0.200.qualifier
+Bundle-Activator: org.eclipse.remote.internal.proxy.ui.Activator
+Bundle-Vendor: %pluginProvider
+Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.remote.internal.proxy.ui;x-internal:=true,
+ org.eclipse.remote.internal.proxy.ui.messages;x-internal:=true
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Import-Package: com.jcraft.jsch,
+ org.eclipse.core.filesystem,
+ org.eclipse.core.runtime,
+ org.eclipse.jface.dialogs,
+ org.eclipse.jface.operation,
+ org.eclipse.jface.preference,
+ org.eclipse.jface.resource,
+ org.eclipse.jface.viewers,
+ org.eclipse.jface.window,
+ org.eclipse.jface.wizard,
+ org.eclipse.jsch.core,
+ org.eclipse.jsch.ui,
+ org.eclipse.osgi.util,
+ org.eclipse.remote.core,
+ org.eclipse.remote.core.exception,
+ org.eclipse.remote.internal.proxy.core,
+ org.eclipse.remote.ui,
+ org.eclipse.remote.ui.dialogs,
+ org.eclipse.remote.ui.widgets,
+ org.eclipse.swt,
+ org.eclipse.swt.events,
+ org.eclipse.swt.graphics,
+ org.eclipse.swt.layout,
+ org.eclipse.swt.widgets,
+ org.eclipse.ui.dialogs,
+ org.eclipse.ui.forms.events,
+ org.eclipse.ui.forms.widgets,
+ org.eclipse.ui.ide.fileSystem,
+ org.eclipse.ui.plugin,
+ org.osgi.framework
diff --git a/remote/org.eclipse.remote.proxy.ui/about.html b/remote/org.eclipse.remote.proxy.ui/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.ui/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/remote/org.eclipse.remote.proxy.ui/about.ini b/remote/org.eclipse.remote.proxy.ui/about.ini
new file mode 100644
index 00000000000..e07a7bb377e
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.ui/about.ini
@@ -0,0 +1,24 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%blurb
+
+# Property "windowImage" contains path to window icon (16x16)
+# needed for primary features only
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=cdt_logo_icon32.png
+
+# Property "aboutImage" contains path to product image (500x330 or 115x164)
+# needed for primary features only
+
+# Property "appName" contains name of the application (translated)
+# needed for primary features only
+
+# Property "welcomePerspective" contains the id of the perspective in which the
+# welcome page is to be opened.
+# optional
diff --git a/remote/org.eclipse.remote.proxy.ui/about.mappings b/remote/org.eclipse.remote.proxy.ui/about.mappings
new file mode 100644
index 00000000000..936a8039c3e
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.ui/about.mappings
@@ -0,0 +1,9 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+# The following should contain the build version.
+# e.g. "0=20200106-1728"
+# This value will be added automatically via the build scripts
+0=${buildId}
diff --git a/remote/org.eclipse.remote.proxy.ui/about.properties b/remote/org.eclipse.remote.proxy.ui/about.properties
new file mode 100644
index 00000000000..08450260a0a
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.ui/about.properties
@@ -0,0 +1,32 @@
+###############################################################################
+# Copyright (c) 2021, 2022 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+# about.properties
+# contains externalized strings for about.ini
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# fill-ins are supplied by about.mappings
+# This file should be translated.
+# NOTE TO TRANSLATOR: Please do not translate the featureVersion variable.
+
+
+blurb=Remote Services Proxy\n\
+\n\
+Version: {featureVersion}\n\
+Build id: {0}\n\
+\n\
+Copyright (c) 2021, 2022 Contributors to the Eclipse Foundation
+\n\
+See the NOTICE file(s) distributed with this work for additional\n\
+information regarding copyright ownership.\n\
+\n\
+Visit http://www.eclipse.org/cdt
diff --git a/remote/org.eclipse.remote.proxy.ui/build.properties b/remote/org.eclipse.remote.proxy.ui/build.properties
new file mode 100644
index 00000000000..a021be1bfe6
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.ui/build.properties
@@ -0,0 +1,14 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ plugin.properties,\
+ about.html,\
+ about.ini,\
+ about.mappings,\
+ about.properties,\
+ cdt_logo_icon32.png,\
+ icons/
+src.includes = about.html
+
diff --git a/remote/org.eclipse.remote.proxy.ui/cdt_logo_icon32.png b/remote/org.eclipse.remote.proxy.ui/cdt_logo_icon32.png
new file mode 100644
index 00000000000..470ca81b327
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.ui/cdt_logo_icon32.png
Binary files differ
diff --git a/remote/org.eclipse.remote.proxy.ui/icons/full/obj16/connection.gif b/remote/org.eclipse.remote.proxy.ui/icons/full/obj16/connection.gif
new file mode 100644
index 00000000000..870934b6934
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.ui/icons/full/obj16/connection.gif
Binary files differ
diff --git a/remote/org.eclipse.remote.proxy.ui/icons/ssh.png b/remote/org.eclipse.remote.proxy.ui/icons/ssh.png
new file mode 100644
index 00000000000..8cbd0a13ba8
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.ui/icons/ssh.png
Binary files differ
diff --git a/remote/org.eclipse.remote.proxy.ui/plugin.properties b/remote/org.eclipse.remote.proxy.ui/plugin.properties
new file mode 100644
index 00000000000..2df15ff1a0d
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.ui/plugin.properties
@@ -0,0 +1,16 @@
+###############################################################################
+# Copyright (c) 2016 Oak Ridge National Laboratory and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+###############################################################################
+
+pluginName=Proxy UI Remote Support
+pluginProvider=Eclipse PTP
+ProxyTransferConnections.name=Remote Connections
+ProxyTransferConnections.description=All remote proxy connections \ No newline at end of file
diff --git a/remote/org.eclipse.remote.proxy.ui/plugin.xml b/remote/org.eclipse.remote.proxy.ui/plugin.xml
new file mode 100644
index 00000000000..8c2b5b2704c
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.ui/plugin.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+ <extension
+ point="org.eclipse.ui.ide.filesystemSupport">
+ <filesystemContributor
+ class="org.eclipse.remote.internal.proxy.ui.ProxyFileSystemContributor"
+ label="Proxy"
+ scheme="proxy">
+ </filesystemContributor>
+ </extension>
+ <extension
+ point="org.eclipse.ui.preferenceTransfer">
+ <transfer
+ icon="icons/full/obj16/connection.gif"
+ id="org.eclipse.remote.proxy.transfer.connections"
+ name="%ProxyTransferConnections.name">
+ <mapping
+ scope="instance">
+ <entry
+ node="org.eclipse.remote.proxy.core/connections">
+ </entry>
+ </mapping>
+ <description>
+ %ProxyTransferConnections.description
+ </description>
+ </transfer>
+ </extension>
+ <extension
+ point="org.eclipse.remote.core.authenticator">
+ <authenticator
+ class="org.eclipse.remote.internal.proxy.ui.ProxyUserAuthenticator"
+ id="org.eclipse.remote.Proxy"
+ priority="0">
+ </authenticator>
+ </extension>
+ <extension
+ point="org.eclipse.remote.core.remoteServices">
+ <connectionTypeService
+ connectionTypeId="org.eclipse.remote.Proxy"
+ factory="org.eclipse.remote.internal.proxy.ui.ProxyUIConnectionService$Factory"
+ service="org.eclipse.remote.ui.IRemoteUIConnectionService">
+ </connectionTypeService>
+ <connectionTypeService
+ connectionTypeId="org.eclipse.remote.Proxy"
+ factory="org.eclipse.remote.ui.RemoteUIFileService$Factory"
+ service="org.eclipse.remote.ui.IRemoteUIFileService">
+ </connectionTypeService>
+ <connectionService
+ connectionTypeId="org.eclipse.remote.Proxy"
+ factory="org.eclipse.remote.internal.proxy.ui.ProxyUserAuthenticator$Factory"
+ service="org.eclipse.remote.core.IUserAuthenticatorService">
+ </connectionService>
+ </extension>
+
+</plugin>
diff --git a/remote/org.eclipse.remote.proxy.ui/src/org/eclipse/remote/internal/proxy/ui/Activator.java b/remote/org.eclipse.remote.proxy.ui/src/org/eclipse/remote/internal/proxy/ui/Activator.java
new file mode 100644
index 00000000000..78b23735369
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.ui/src/org/eclipse/remote/internal/proxy/ui/Activator.java
@@ -0,0 +1,114 @@
+package org.eclipse.remote.internal.proxy.ui;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jsch.core.IJSchService;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+ // The plug-in ID
+ private static final String PLUGIN_ID = "org.eclipse.remote.jsch.ui"; //$NON-NLS-1$
+
+ // Image Keys
+ public static final String IMG_CONNECTION_TYPE = PLUGIN_ID + ".connectionType"; //$NON-NLS-1$
+
+ // The shared instance
+ private static Activator plugin;
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+ /**
+ * Get unique identifier
+ *
+ * @return
+ * @since 5.0
+ */
+ public static String getUniqueIdentifier() {
+ if (getDefault() == null) {
+ return PLUGIN_ID;
+ }
+ return getDefault().getBundle().getSymbolicName();
+ }
+
+ /**
+ * Logs the specified status with this plug-in's log.
+ *
+ * @param status
+ * status to log
+ */
+ public static void log(IStatus status) {
+ getDefault().getLog().log(status);
+ }
+
+ /**
+ * Logs an internal error with the specified message.
+ *
+ * @param message
+ * the error message to log
+ */
+ public static void log(String message) {
+ log(new Status(IStatus.ERROR, getUniqueIdentifier(), IStatus.ERROR, message, null));
+ }
+
+ /**
+ * Logs an internal error with the specified throwable
+ *
+ * @param e
+ * the exception to be logged
+ */
+ public static void log(Throwable e) {
+ log(new Status(IStatus.ERROR, getUniqueIdentifier(), IStatus.ERROR, e.getMessage(), e));
+ }
+
+ private IJSchService fJSchService;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ /**
+ * Return the OSGi service with the given service interface.
+ *
+ * @param service service interface
+ * @return the specified service or null if it's not registered
+ */
+ public static <T> T getService(Class<T> service) {
+ BundleContext context = plugin.getBundle().getBundleContext();
+ ServiceReference<T> ref = context.getServiceReference(service);
+ return ref != null ? context.getService(ref) : null;
+ }
+
+ public IJSchService getService() {
+ return fJSchService;
+ }
+
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ ServiceReference<IJSchService> reference = context.getServiceReference(IJSchService.class);
+ fJSchService = context.getService(reference);
+ getImageRegistry().put(IMG_CONNECTION_TYPE, imageDescriptorFromPlugin(PLUGIN_ID, "/icons/ssh.png")); //$NON-NLS-1$
+ }
+
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+}
diff --git a/remote/org.eclipse.remote.proxy.ui/src/org/eclipse/remote/internal/proxy/ui/ProxyFileSystemContributor.java b/remote/org.eclipse.remote.proxy.ui/src/org/eclipse/remote/internal/proxy/ui/ProxyFileSystemContributor.java
new file mode 100644
index 00000000000..1c9dc72da16
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.ui/src/org/eclipse/remote/internal/proxy/ui/ProxyFileSystemContributor.java
@@ -0,0 +1,50 @@
+/********************************************************************************
+ * Copyright (c) 2016 Oak Ridge National Laboratory and others.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ ********************************************************************************/
+
+package org.eclipse.remote.internal.proxy.ui;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteConnectionType;
+import org.eclipse.remote.core.IRemoteServicesManager;
+import org.eclipse.remote.internal.proxy.core.ProxyConnection;
+import org.eclipse.remote.internal.proxy.core.ProxyFileSystem;
+import org.eclipse.remote.internal.proxy.ui.messages.Messages;
+import org.eclipse.remote.ui.IRemoteUIFileService;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.ide.fileSystem.FileSystemContributor;
+
+public class ProxyFileSystemContributor extends FileSystemContributor {
+ @Override
+ public URI browseFileSystem(String initialPath, Shell shell) {
+ IRemoteServicesManager manager = Activator.getService(IRemoteServicesManager.class);
+ IRemoteConnectionType connectionType = manager.getConnectionType(ProxyConnection.JSCH_ID);
+ IRemoteUIFileService uiFileMgr = connectionType.getService(IRemoteUIFileService.class);
+ uiFileMgr.showConnections(true);
+ String path = uiFileMgr.browseDirectory(shell, Messages.ProxyFileSystemContributor_0, initialPath, 0);
+ if (path != null) {
+ IRemoteConnection conn = uiFileMgr.getConnection();
+ if (conn != null) {
+ return ProxyFileSystem.getURIFor(conn.getName(), path);
+ }
+ }
+
+ return null;
+ }
+
+ @Override
+ public URI getURI(String string) {
+ try {
+ return new URI(string);
+ } catch (URISyntaxException e) {
+ // Ignore
+ }
+ return null;
+ }
+} \ No newline at end of file
diff --git a/remote/org.eclipse.remote.proxy.ui/src/org/eclipse/remote/internal/proxy/ui/ProxyUIConnectionService.java b/remote/org.eclipse.remote.proxy.ui/src/org/eclipse/remote/internal/proxy/ui/ProxyUIConnectionService.java
new file mode 100644
index 00000000000..daa7a78cddc
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.ui/src/org/eclipse/remote/internal/proxy/ui/ProxyUIConnectionService.java
@@ -0,0 +1,104 @@
+/*******************************************************************************
+ * Copyright (c) 2016, 2020 Oak Ridge National Laboratory and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.remote.internal.proxy.ui;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.dialogs.ErrorDialog;
+import org.eclipse.jface.dialogs.ProgressMonitorDialog;
+import org.eclipse.jface.operation.IRunnableContext;
+import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteConnectionType;
+import org.eclipse.remote.core.IRemoteConnectionType.Service;
+import org.eclipse.remote.core.exception.RemoteConnectionException;
+import org.eclipse.remote.internal.proxy.ui.messages.Messages;
+import org.eclipse.remote.internal.proxy.ui.wizards.ProxyConnectionWizard;
+import org.eclipse.remote.ui.AbstractRemoteUIConnectionService;
+import org.eclipse.remote.ui.IRemoteUIConnectionService;
+import org.eclipse.remote.ui.IRemoteUIConnectionWizard;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Shell;
+
+public class ProxyUIConnectionService extends AbstractRemoteUIConnectionService {
+
+ private final IRemoteConnectionType fConnectionType;
+
+ public ProxyUIConnectionService(IRemoteConnectionType connectionType) {
+ fConnectionType = connectionType;
+ }
+
+ public static class Factory implements IRemoteConnectionType.Service.Factory {
+ @SuppressWarnings("unchecked")
+ @Override
+ public <T extends Service> T getService(IRemoteConnectionType connectionType, Class<T> service) {
+ if (IRemoteUIConnectionService.class.equals(service)) {
+ return (T) new ProxyUIConnectionService(connectionType);
+ }
+ return null;
+ }
+ }
+
+ @Override
+ public IRemoteConnectionType getConnectionType() {
+ return fConnectionType;
+ }
+
+ @Override
+ public IRemoteUIConnectionWizard getConnectionWizard(Shell shell) {
+ return new ProxyConnectionWizard(shell, fConnectionType);
+ }
+
+ @Override
+ public void openConnectionWithProgress(Shell shell, IRunnableContext context, final IRemoteConnection connection) {
+ if (!connection.isOpen()) {
+ IRunnableWithProgress op = monitor -> {
+ try {
+ connection.open(monitor);
+ } catch (RemoteConnectionException e) {
+ throw new InvocationTargetException(e);
+ }
+ if (monitor.isCanceled()) {
+ throw new InterruptedException();
+ }
+ };
+ try {
+ if (context != null) {
+ context.run(true, true, op);
+ } else {
+ new ProgressMonitorDialog(shell).run(true, true, op);
+ }
+ } catch (InvocationTargetException e) {
+ ErrorDialog.openError(shell, Messages.ProxyUIConnectionManager_Connection_Error,
+ Messages.ProxyUIConnectionManager_Could_not_open_connection,
+ new Status(IStatus.ERROR, Activator.getUniqueIdentifier(), e.getCause().getMessage()));
+ } catch (InterruptedException e) {
+ ErrorDialog.openError(shell, Messages.ProxyUIConnectionManager_Connection_Error,
+ Messages.ProxyUIConnectionManager_Could_not_open_connection,
+ new Status(IStatus.ERROR, Activator.getUniqueIdentifier(), e.getMessage()));
+ }
+ }
+ }
+
+ @Override
+ public ILabelProvider getLabelProvider() {
+ return new DefaultLabelProvider() {
+ @Override
+ public Image getImage(Object element) {
+ return Activator.getDefault().getImageRegistry().get(Activator.IMG_CONNECTION_TYPE);
+ }
+ };
+ }
+
+}
diff --git a/remote/org.eclipse.remote.proxy.ui/src/org/eclipse/remote/internal/proxy/ui/ProxyUserAuthenticator.java b/remote/org.eclipse.remote.proxy.ui/src/org/eclipse/remote/internal/proxy/ui/ProxyUserAuthenticator.java
new file mode 100644
index 00000000000..79b3be3bc45
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.ui/src/org/eclipse/remote/internal/proxy/ui/ProxyUserAuthenticator.java
@@ -0,0 +1,118 @@
+/*******************************************************************************
+ * Copyright (c) 2016, 2020 Oak Ridge National Laboratory and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.remote.internal.proxy.ui;
+
+import java.net.PasswordAuthentication;
+
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jsch.ui.UserInfoPrompter;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteConnectionHostService;
+import org.eclipse.remote.core.IUserAuthenticatorService;
+import org.eclipse.swt.widgets.Display;
+
+import com.jcraft.jsch.JSch;
+import com.jcraft.jsch.JSchException;
+
+public class ProxyUserAuthenticator implements IUserAuthenticatorService {
+
+ private final IRemoteConnection remoteConnection;
+ private UserInfoPrompter prompter;
+
+ public ProxyUserAuthenticator(IRemoteConnection conn) {
+ this.remoteConnection = conn;
+ IRemoteConnectionHostService hostService = conn.getService(IRemoteConnectionHostService.class);
+ if (hostService != null) {
+ try {
+ prompter = new UserInfoPrompter(
+ new JSch().getSession(hostService.getUsername(), hostService.getHostname()));
+ } catch (JSchException e) {
+ // Not allowed
+ }
+ }
+ }
+
+ @Override
+ public IRemoteConnection getRemoteConnection() {
+ return remoteConnection;
+ }
+
+ @Override
+ public PasswordAuthentication prompt(String username, String message) {
+ if (prompter.promptPassword(message)) {
+ String sessionUserName = prompter.getSession().getUserName();
+ if (sessionUserName != null) {
+ username = sessionUserName;
+ }
+ PasswordAuthentication auth = new PasswordAuthentication(username, prompter.getPassword().toCharArray());
+ return auth;
+ }
+ return null;
+ }
+
+ @Override
+ public String[] prompt(String destination, String name, String message, String[] prompt, boolean[] echo) {
+ return prompter.promptKeyboardInteractive(destination, name, message, prompt, echo);
+ }
+
+ @Override
+ public int prompt(final int promptType, final String title, final String message, final int[] promptResponses,
+ final int defaultResponseIndex) {
+ final Display display = getDisplay();
+ final int[] retval = new int[1];
+ final String[] buttons = new String[promptResponses.length];
+ for (int i = 0; i < promptResponses.length; i++) {
+ int prompt = promptResponses[i];
+ switch (prompt) {
+ case IDialogConstants.OK_ID:
+ buttons[i] = IDialogConstants.OK_LABEL;
+ break;
+ case IDialogConstants.CANCEL_ID:
+ buttons[i] = IDialogConstants.CANCEL_LABEL;
+ break;
+ case IDialogConstants.NO_ID:
+ buttons[i] = IDialogConstants.NO_LABEL;
+ break;
+ case IDialogConstants.YES_ID:
+ buttons[i] = IDialogConstants.YES_LABEL;
+ break;
+ }
+ }
+
+ display.syncExec(() -> {
+ final MessageDialog dialog = new MessageDialog(display.getActiveShell(), title, null /* title image */,
+ message, promptType, buttons, defaultResponseIndex);
+ retval[0] = dialog.open();
+ });
+ return promptResponses[retval[0]];
+ }
+
+ private Display getDisplay() {
+ Display display = Display.getCurrent();
+ if (display == null) {
+ display = Display.getDefault();
+ }
+ return display;
+ }
+
+ public static class Factory implements IRemoteConnection.Service.Factory {
+ @Override
+ @SuppressWarnings("unchecked")
+ public <T extends IRemoteConnection.Service> T getService(IRemoteConnection connection, Class<T> service) {
+ if (IUserAuthenticatorService.class.equals(service)) {
+ return (T) new ProxyUserAuthenticator(connection);
+ } else {
+ return null;
+ }
+ }
+ }
+}
diff --git a/remote/org.eclipse.remote.proxy.ui/src/org/eclipse/remote/internal/proxy/ui/messages/Messages.java b/remote/org.eclipse.remote.proxy.ui/src/org/eclipse/remote/internal/proxy/ui/messages/Messages.java
new file mode 100644
index 00000000000..45bb17e1e2f
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.ui/src/org/eclipse/remote/internal/proxy/ui/messages/Messages.java
@@ -0,0 +1,71 @@
+/**
+ * Copyright (c) 2013 IBM Corporation.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - Initial Implementation
+ *
+ */
+package org.eclipse.remote.internal.proxy.ui.messages;
+
+import org.eclipse.osgi.util.NLS;
+
+public class Messages extends NLS {
+ private static final String BUNDLE_ID = "org.eclipse.remote.internal.proxy.ui.messages.messages"; //$NON-NLS-1$
+
+ static {
+ // load message values from bundle file
+ NLS.initializeMessages(BUNDLE_ID, Messages.class);
+ }
+
+ public static String ProxyConnectionPage_0;
+ public static String ProxyConnectionPage_1;
+ public static String ProxyConnectionPage_2;
+ public static String ProxyConnectionPage_A_connection_with_that_name_already_exists;
+ public static String ProxyConnectionPage_Edit_Connection;
+ public static String ProxyConnectionPage_Edit_properties_of_an_existing_connection;
+ public static String ProxyConnectionPage_Initial_Message;
+ public static String ProxyConnectionPage_Proxy;
+ public static String ProxyConnectionPage_Help;
+ public static String ProxyConnectionPage_KeysAtSSH2;
+ public static String ProxyConnectionPage_SelectCommand;
+ public static String ProxyConnectionPage_SelectConnection;
+ public static String ProxyConnectionPage_Settings0;
+ public static String ProxyConnectionPage_selectProxyConnection;
+ public static String ProxyFileSystemContributor_0;
+ public static String ProxyNewConnectionPage_Advanced;
+ public static String ProxyNewConnectionPage_Connection_name;
+ public static String ProxyNewConnectionPage_File_with_private_key;
+ public static String ProxyNewConnectionPage_Host;
+ public static String ProxyNewConnectionPage_Host_information;
+ public static String ProxyNewConnectionPage_Host_name_cannot_be_empty;
+ public static String ProxyNewConnectionPage_New_Connection;
+ public static String ProxyNewConnectionPage_New_connection_properties;
+ public static String ProxyNewConnectionPage_Passphrase;
+ public static String ProxyNewConnectionPage_Password;
+ public static String ProxyNewConnectionPage_Password_based_authentication;
+ public static String ProxyNewConnectionPage_Please_enter_a_connection_name;
+ public static String ProxyNewConnectionPage_Port;
+ public static String ProxyNewConnectionPage_Port_is_not_valid;
+ public static String ProxyNewConnectionPage_Private_key_file_cannot_be_read;
+ public static String ProxyNewConnectionPage_Private_key_file_does_not_exist;
+ public static String ProxyNewConnectionPage_Private_key_file_is_invalid;
+ public static String ProxyNewConnectionPage_Private_key_path_cannot_be_empty;
+ public static String ProxyNewConnectionPage_Public_key_based_authentication;
+ public static String ProxyNewConnectionPage_Timeout;
+ public static String ProxyNewConnectionPage_Timeout_is_not_valid;
+ public static String ProxyNewConnectionPage_User;
+ public static String ProxyNewConnectionPage_User_name_cannot_be_empty;
+ public static String ProxyUIConnectionManager_Connection_Error;
+ public static String ProxyUIConnectionManager_Could_not_open_connection;
+
+ private Messages() {
+ // cannot create new instance
+ }
+}
diff --git a/remote/org.eclipse.remote.proxy.ui/src/org/eclipse/remote/internal/proxy/ui/messages/messages.properties b/remote/org.eclipse.remote.proxy.ui/src/org/eclipse/remote/internal/proxy/ui/messages/messages.properties
new file mode 100644
index 00000000000..7f2ff286db8
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.ui/src/org/eclipse/remote/internal/proxy/ui/messages/messages.properties
@@ -0,0 +1,53 @@
+###############################################################################
+# Copyright (c) 2013 IBM Corporation.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# IBM Corporation - initial implementation
+###############################################################################
+ProxyConnectionPage_0=Use login shell
+ProxyConnectionPage_1=Login shell command
+ProxyConnectionPage_2=Login shell command cannot be empty
+ProxyConnectionPage_A_connection_with_that_name_already_exists=A connection with that name already exists
+ProxyConnectionPage_Edit_Connection=Edit Connection
+ProxyConnectionPage_Edit_properties_of_an_existing_connection=Edit properties of an existing connection
+ProxyConnectionPage_Initial_Message=Specify properties of a new connection
+ProxyConnectionPage_Proxy=SSH Proxy Settings
+ProxyConnectionPage_Help=If 'Local' is selected and proxy command is empty, no proxy is used.\nSee <a>Network Connections</a> for SOCKS and HTTP proxy options.
+ProxyConnectionPage_KeysAtSSH2=Keys are set at <a>Network Connections, SSH2</a>
+ProxyConnectionPage_SelectCommand=Enter a local or remote command such as 'nc %h %p'. Can be empty for an ssh gateway.
+ProxyConnectionPage_SelectConnection=Select 'Remote' for an ssh gateway or a remote proxy command.
+ProxyConnectionPage_Settings0=Connection Settings
+ProxyConnectionPage_selectProxyConnection=Please select a proxy connection
+ProxyFileSystemContributor_0=Browse File System
+ProxyNewConnectionPage_Advanced=Advanced
+ProxyNewConnectionPage_Connection_name=Connection name:
+ProxyNewConnectionPage_File_with_private_key=File with private key:
+ProxyNewConnectionPage_Host=Host:
+ProxyNewConnectionPage_Host_information=Host information
+ProxyNewConnectionPage_Host_name_cannot_be_empty=Host name cannot be empty
+ProxyNewConnectionPage_New_Connection=New Connection
+ProxyNewConnectionPage_New_connection_properties=New connection properties
+ProxyNewConnectionPage_Passphrase=Passphrase:
+ProxyNewConnectionPage_Password=Password:
+ProxyNewConnectionPage_Password_based_authentication=Password based authentication
+ProxyNewConnectionPage_Please_enter_a_connection_name=Please enter a connection name
+ProxyNewConnectionPage_Port=Port:
+ProxyNewConnectionPage_Port_is_not_valid=Port is not valid
+ProxyNewConnectionPage_Private_key_file_cannot_be_read=Private key file cannot be read
+ProxyNewConnectionPage_Private_key_file_does_not_exist=Private key file does not exist
+ProxyNewConnectionPage_Private_key_file_is_invalid=Private key file is invalid
+ProxyNewConnectionPage_Private_key_path_cannot_be_empty=Private key path cannot be empty
+ProxyNewConnectionPage_Public_key_based_authentication=Public key based authentication
+ProxyNewConnectionPage_Timeout=Timeout:
+ProxyNewConnectionPage_Timeout_is_not_valid=Timeout is not valid
+ProxyNewConnectionPage_User=User:
+ProxyNewConnectionPage_User_name_cannot_be_empty=User name cannot be empty
+ProxyUIConnectionManager_Connection_Error=Connection Error
+ProxyUIConnectionManager_Could_not_open_connection=Could not open connection
diff --git a/remote/org.eclipse.remote.proxy.ui/src/org/eclipse/remote/internal/proxy/ui/wizards/ProxyConnectionPage.java b/remote/org.eclipse.remote.proxy.ui/src/org/eclipse/remote/internal/proxy/ui/wizards/ProxyConnectionPage.java
new file mode 100644
index 00000000000..8c3d2494d76
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.ui/src/org/eclipse/remote/internal/proxy/ui/wizards/ProxyConnectionPage.java
@@ -0,0 +1,497 @@
+/**
+ * Copyright (c) 2016 Oak Ridge National Laboratory and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.eclipse.remote.internal.proxy.ui.wizards;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.jface.preference.PreferenceDialog;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.remote.core.IRemoteConnectionType;
+import org.eclipse.remote.core.IRemoteConnectionWorkingCopy;
+import org.eclipse.remote.core.IRemoteServicesManager;
+import org.eclipse.remote.core.exception.RemoteConnectionException;
+import org.eclipse.remote.internal.proxy.core.ProxyConnection;
+import org.eclipse.remote.internal.proxy.ui.Activator;
+import org.eclipse.remote.internal.proxy.ui.messages.Messages;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.FontMetrics;
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Link;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.dialogs.PreferencesUtil;
+import org.eclipse.ui.forms.events.ExpansionEvent;
+import org.eclipse.ui.forms.events.IExpansionListener;
+import org.eclipse.ui.forms.widgets.ExpandableComposite;
+
+public class ProxyConnectionPage extends WizardPage {
+
+ private class DataModifyListener implements ModifyListener {
+ @Override
+ public synchronized void modifyText(ModifyEvent e) {
+ validateFields();
+ getContainer().updateButtons();
+ }
+ }
+
+ private Text fConnectionName;
+ private Button fPasswordButton;
+ private Button fPublicKeyButton;
+ private Button fDefaultServerButton;
+ private Text fHostText;
+ private Text fUserText;
+ private Text fPasswordText;
+ private Text fPassphraseText;
+ private Text fPortText;
+ private Text fTimeoutText;
+ private Text fServerCommandText;
+
+ private String fInitialName = "Remote Host"; //$NON-NLS-1$
+ private Set<String> fInvalidConnectionNames;
+ private final Map<String, String> fInitialAttributes = new HashMap<>();
+ private IRemoteConnectionWorkingCopy fConnection;
+
+ private final IRemoteConnectionType fConnectionType;
+
+ private final DataModifyListener fDataModifyListener = new DataModifyListener();
+
+ public ProxyConnectionPage(IRemoteConnectionType connectionType) {
+ super(Messages.ProxyNewConnectionPage_New_connection_properties);
+ fConnectionType = connectionType;
+ setPageComplete(false);
+ }
+
+ /**
+ * Create controls for the bottom (hideable) advanced composite
+ *
+ * @param mold
+ *
+ */
+ private void createAdvancedControls(final Composite parent) {
+ ExpandableComposite expComp = new ExpandableComposite(parent, ExpandableComposite.TWISTIE);
+ expComp.setText(Messages.ProxyNewConnectionPage_Advanced);
+ expComp.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
+ expComp.setExpanded(false);
+ expComp.addExpansionListener(new IExpansionListener() {
+
+ @Override
+ public void expansionStateChanged(ExpansionEvent e) {
+ for (int i = 0; i < 2; i++) { // sometimes the size compute isn't correct on first try
+ Point newSize = parent.computeSize(SWT.DEFAULT, SWT.DEFAULT);
+ Point currentSize = parent.getSize();
+ int deltaY = newSize.y - currentSize.y;
+ Point shellSize = getShell().getSize();
+ shellSize.y += deltaY;
+ getShell().setSize(shellSize);
+ getShell().layout(true, true);
+ }
+ }
+
+ @Override
+ public void expansionStateChanging(ExpansionEvent e) {
+ // Ignore
+ }
+ });
+
+ Composite advancedComp = new Composite(expComp, SWT.NONE);
+ advancedComp.setLayout(new GridLayout(1, false));
+ advancedComp.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
+
+ Group settingsComp = new Group(advancedComp, SWT.NONE);
+ settingsComp.setText(Messages.ProxyConnectionPage_Settings0);
+ settingsComp.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
+ settingsComp.setLayout(new GridLayout(2, false));
+
+ Label portLabel = new Label(settingsComp, SWT.NONE);
+ portLabel.setText(Messages.ProxyNewConnectionPage_Port);
+ fPortText = new Text(settingsComp, SWT.BORDER | SWT.SINGLE);
+ fPortText.setText(Integer.toString(ProxyConnection.DEFAULT_PORT));
+ fPortText.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false));
+ setTextFieldWidthInChars(fPortText, 5);
+
+ Label timeoutLabel = new Label(settingsComp, SWT.NONE);
+ timeoutLabel.setText(Messages.ProxyNewConnectionPage_Timeout);
+ fTimeoutText = new Text(settingsComp, SWT.BORDER | SWT.SINGLE);
+ fTimeoutText.setText(Integer.toString(ProxyConnection.DEFAULT_TIMEOUT));
+
+ fDefaultServerButton = new Button(settingsComp, SWT.CHECK);
+ fDefaultServerButton.setText("Use default server");
+ fDefaultServerButton.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false, 2, 1));
+ fDefaultServerButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ validateFields();
+ updateEnablement();
+ }
+ });
+ Label serverLabel = new Label(settingsComp, SWT.NONE);
+ serverLabel.setText("Server command");
+ fServerCommandText = new Text(settingsComp, SWT.BORDER | SWT.SINGLE);
+ fServerCommandText.setText(ProxyConnection.DEFAULT_SERVER_COMMAND);
+ fServerCommandText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
+ fDefaultServerButton.setSelection(ProxyConnection.DEFAULT_USE_DEFAULT_SERVER);
+
+ expComp.setClient(advancedComp);
+ }
+
+ private void createAuthControls(Composite parent) {
+ Composite controls = new Composite(parent, SWT.NONE);
+ controls.setLayout(new GridLayout(3, false));
+ controls.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+
+ Label hostLabel = new Label(controls, SWT.NONE);
+ hostLabel.setText(Messages.ProxyNewConnectionPage_Host);
+ fHostText = new Text(controls, SWT.BORDER | SWT.SINGLE);
+ fHostText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
+
+ Label userLabel = new Label(controls, SWT.NONE);
+ userLabel.setText(Messages.ProxyNewConnectionPage_User);
+ fUserText = new Text(controls, SWT.BORDER | SWT.SINGLE);
+ fUserText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
+
+ // Key option box
+ fPublicKeyButton = new Button(controls, SWT.RADIO);
+ fPublicKeyButton.setText(Messages.ProxyNewConnectionPage_Public_key_based_authentication);
+ fPublicKeyButton.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false, 2, 1));
+ fPublicKeyButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ validateFields();
+ updateEnablement();
+ }
+ });
+
+ Link link = new Link(controls, SWT.WRAP);
+ final GridData linkLayoutData = new GridData(GridData.FILL_HORIZONTAL);
+ link.setLayoutData(linkLayoutData);
+ final String PREFS_PAGE_ID_NET_SSH = "org.eclipse.jsch.ui.SSHPreferences"; //$NON-NLS-1$
+ link.addSelectionListener(new SelectionListener() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ PreferenceDialog dlg = PreferencesUtil.createPreferenceDialogOn(getShell(), PREFS_PAGE_ID_NET_SSH,
+ new String[] { PREFS_PAGE_ID_NET_SSH }, null);
+ dlg.open();
+ }
+
+ @Override
+ public void widgetDefaultSelected(SelectionEvent e) {
+ // ignore
+ }
+ });
+ link.setText(Messages.ProxyConnectionPage_KeysAtSSH2);
+
+ // Passphrase field
+ Label passphraseLabel = new Label(controls, SWT.NONE);
+ passphraseLabel.setText(Messages.ProxyNewConnectionPage_Passphrase);
+ fPassphraseText = new Text(controls, SWT.BORDER | SWT.SINGLE | SWT.PASSWORD);
+ fPassphraseText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
+
+ // User option box
+ fPasswordButton = new Button(controls, SWT.RADIO);
+ fPasswordButton.setText(Messages.ProxyNewConnectionPage_Password_based_authentication);
+ fPasswordButton.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false, 3, 1));
+ fPasswordButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ validateFields();
+ updateEnablement();
+ }
+ });
+
+ // Password field
+ Label passwordLabel = new Label(controls, SWT.NONE);
+ passwordLabel.setText(Messages.ProxyNewConnectionPage_Password);
+ fPasswordText = new Text(controls, SWT.BORDER | SWT.SINGLE | SWT.PASSWORD);
+ fPasswordText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
+
+ fPasswordButton.setSelection(ProxyConnection.DEFAULT_USE_PASSWORD);
+ fPublicKeyButton.setSelection(!ProxyConnection.DEFAULT_USE_PASSWORD);
+ controls.setTabList(new Control[] { fHostText, fUserText, fPublicKeyButton, fPassphraseText, fPasswordButton,
+ fPasswordText });
+ }
+
+ @Override
+ public void createControl(Composite parent) {
+ if (fConnection == null) {
+ setDescription(Messages.ProxyNewConnectionPage_New_connection_properties);
+ setTitle(Messages.ProxyNewConnectionPage_New_connection_properties);
+ setMessage(Messages.ProxyConnectionPage_Initial_Message);
+ } else {
+ setDescription(Messages.ProxyConnectionPage_Edit_properties_of_an_existing_connection);
+ setTitle(Messages.ProxyConnectionPage_Edit_Connection);
+ }
+ setErrorMessage(null);
+
+ GridLayout topLayout = new GridLayout(2, false);
+ final Composite topControl = new Composite(parent, SWT.NONE);
+ setControl(topControl);
+ topControl.setLayout(topLayout);
+
+ Label label = new Label(topControl, SWT.NONE);
+ label.setText(Messages.ProxyNewConnectionPage_Connection_name);
+
+ fConnectionName = new Text(topControl, SWT.BORDER | SWT.SINGLE);
+ fConnectionName.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
+ fConnectionName.setEnabled(fConnection == null);
+
+ final Group authGroup = new Group(topControl, SWT.NONE);
+ authGroup.setText(Messages.ProxyNewConnectionPage_Host_information);
+ authGroup.setLayout(new GridLayout(1, false));
+ authGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1));
+
+ createAuthControls(authGroup);
+ createAdvancedControls(authGroup);
+
+ try {
+ loadValues();
+ } catch (CoreException e) {
+ Activator.log(e.getStatus());
+ }
+
+ /*
+ * Register listeners after loading values so we don't trigger listeners
+ */
+ registerListeners();
+
+ if (fConnection != null) {
+ validateFields();
+ }
+
+ updateEnablement();
+ }
+
+ public IRemoteConnectionWorkingCopy getConnection() {
+ return fConnection;
+ }
+
+ /**
+ * Check if the connection name is invalid. This only applies to new connections (when fConnection is null).
+ *
+ * @param name
+ * connection name
+ * @return true if the name is invalid, false otherwise
+ */
+ private boolean isInvalidName(String name) {
+ if (fConnection == null) {
+ if (fInvalidConnectionNames == null) {
+ return fConnectionType.getConnection(name) != null;
+ }
+ return fInvalidConnectionNames.contains(name);
+ }
+ return false;
+ }
+
+ private void loadValues() throws CoreException {
+ IRemoteServicesManager manager = Activator.getService(IRemoteServicesManager.class);
+ if (fConnection != null) {
+ fConnectionName.setText(fConnection.getName());
+ fHostText.setText(fConnection.getAttribute(ProxyConnection.HOSTNAME_ATTR));
+ fUserText.setText(fConnection.getAttribute(ProxyConnection.USERNAME_ATTR));
+ String portStr = fConnection.getAttribute(ProxyConnection.PORT_ATTR);
+ fPortText.setText(portStr.isEmpty() ? Integer.toString(ProxyConnection.DEFAULT_PORT) : portStr);
+ String timeoutStr = fConnection.getAttribute(ProxyConnection.TIMEOUT_ATTR);
+ fTimeoutText.setText(timeoutStr.isEmpty() ? Integer.toString(ProxyConnection.DEFAULT_TIMEOUT) : timeoutStr);
+ String isPwdStr = fConnection.getAttribute(ProxyConnection.USE_PASSWORD_ATTR);
+ boolean isPwd = isPwdStr.isEmpty() ? ProxyConnection.DEFAULT_USE_PASSWORD : Boolean.parseBoolean(isPwdStr);
+ fPasswordButton.setSelection(isPwd);
+ fPublicKeyButton.setSelection(!isPwd);
+ fPasswordText.setText(fConnection.getSecureAttribute(ProxyConnection.PASSWORD_ATTR));
+ fPassphraseText.setText(fConnection.getSecureAttribute(ProxyConnection.PASSPHRASE_ATTR));
+ String useDefaultServerStr = fConnection.getAttribute(ProxyConnection.USE_DEFAULT_SERVER_ATTR);
+ boolean useDefaultServer = useDefaultServerStr.isEmpty() ? ProxyConnection.DEFAULT_USE_DEFAULT_SERVER
+ : Boolean.parseBoolean(useDefaultServerStr);
+ fDefaultServerButton.setSelection(useDefaultServer);
+ String serverCommandStr = fConnection.getAttribute(ProxyConnection.SERVER_COMMAND_ATTR);
+ fServerCommandText
+ .setText(serverCommandStr.isEmpty() ? ProxyConnection.DEFAULT_SERVER_COMMAND : serverCommandStr);
+
+ } else {
+ fConnectionName.setText(fInitialName);
+ String host = fInitialAttributes.get(ProxyConnection.HOSTNAME_ATTR);
+ if (host != null) {
+ fHostText.setText(host);
+ }
+ String username = fInitialAttributes.get(ProxyConnection.USERNAME_ATTR);
+ if (username != null) {
+ fUserText.setText(username);
+ }
+ String port = fInitialAttributes.get(ProxyConnection.PORT_ATTR);
+ if (port != null) {
+ fPortText.setText(port);
+ }
+ String timeout = fInitialAttributes.get(ProxyConnection.TIMEOUT_ATTR);
+ if (timeout != null) {
+ fTimeoutText.setText(timeout);
+ }
+ String isPwd = fInitialAttributes.get(ProxyConnection.USE_PASSWORD_ATTR);
+ if (isPwd != null) {
+ fPasswordButton.setSelection(Boolean.parseBoolean(isPwd));
+ }
+ String password = fInitialAttributes.get(ProxyConnection.PASSWORD_ATTR);
+ if (password != null) {
+ fPasswordText.setText(password);
+ }
+ String passphrase = fInitialAttributes.get(ProxyConnection.PASSPHRASE_ATTR);
+ if (passphrase != null) {
+ fPassphraseText.setText(passphrase);
+ }
+ String useDefaultServer = fInitialAttributes.get(ProxyConnection.USE_DEFAULT_SERVER_ATTR);
+ if (useDefaultServer != null) {
+ fDefaultServerButton.setSelection(Boolean.parseBoolean(useDefaultServer));
+ }
+ String serverCommand = fInitialAttributes.get(ProxyConnection.SERVER_COMMAND_ATTR);
+ if (serverCommand != null) {
+ fServerCommandText.setText(serverCommand);
+ }
+ }
+ }
+
+ private void registerListeners() {
+ fConnectionName.addModifyListener(fDataModifyListener);
+ fHostText.addModifyListener(fDataModifyListener);
+ fUserText.addModifyListener(fDataModifyListener);
+ fPasswordText.addModifyListener(fDataModifyListener);
+ fPassphraseText.addModifyListener(fDataModifyListener);
+ fPortText.addModifyListener(fDataModifyListener);
+ fTimeoutText.addModifyListener(fDataModifyListener);
+ fServerCommandText.addModifyListener(fDataModifyListener);
+ }
+
+ public void setAddress(String address) {
+ fInitialAttributes.put(ProxyConnection.HOSTNAME_ATTR, address);
+ }
+
+ public void setAttributes(Map<String, String> attributes) {
+ fInitialAttributes.putAll(attributes);
+ }
+
+ public void setConnection(IRemoteConnectionWorkingCopy connection) {
+ fConnection = connection;
+ }
+
+ public void setConnectionName(String name) {
+ fInitialName = name;
+ }
+
+ public void setInvalidConnectionNames(Set<String> names) {
+ fInvalidConnectionNames = names;
+ }
+
+ @Override
+ public void setPageComplete(boolean complete) {
+ super.setPageComplete(complete);
+ if (complete) {
+ storeValues();
+ }
+ }
+
+ public void setPort(int port) {
+ fInitialAttributes.put(ProxyConnection.PORT_ATTR, Integer.toString(port));
+ }
+
+ private void setTextFieldWidthInChars(Text text, int chars) {
+ text.setTextLimit(chars);
+ Object data = text.getLayoutData();
+ if (data instanceof GridData) {
+ GC gc = new GC(text);
+ FontMetrics fm = gc.getFontMetrics();
+ int width = (int) (chars * fm.getAverageCharacterWidth());
+ gc.dispose();
+ ((GridData) data).widthHint = width;
+ }
+ }
+
+ public void setUsername(String username) {
+ fInitialAttributes.put(ProxyConnection.USERNAME_ATTR, username);
+ }
+
+ private void storeValues() {
+ if (fConnection == null) {
+ try {
+ fConnection = fConnectionType.newConnection(fConnectionName.getText().trim());
+ } catch (RemoteConnectionException e) {
+ Activator.log(e);
+ }
+ }
+ if (fConnection != null) {
+ fConnection.setName(fConnectionName.getText().trim());
+ fConnection.setAttribute(ProxyConnection.HOSTNAME_ATTR, fHostText.getText().trim());
+ fConnection.setAttribute(ProxyConnection.USERNAME_ATTR, fUserText.getText().trim());
+ fConnection.setSecureAttribute(ProxyConnection.PASSWORD_ATTR, fPasswordText.getText().trim());
+ fConnection.setSecureAttribute(ProxyConnection.PASSPHRASE_ATTR, fPassphraseText.getText().trim());
+ fConnection.setAttribute(ProxyConnection.USE_PASSWORD_ATTR,
+ Boolean.toString(fPasswordButton.getSelection()));
+ fConnection.setAttribute(ProxyConnection.TIMEOUT_ATTR, fTimeoutText.getText().trim());
+ fConnection.setAttribute(ProxyConnection.PORT_ATTR, fPortText.getText().trim());
+ fConnection.setAttribute(ProxyConnection.USE_DEFAULT_SERVER_ATTR,
+ Boolean.toString(fDefaultServerButton.getSelection()));
+ fConnection.setAttribute(ProxyConnection.SERVER_COMMAND_ATTR, fServerCommandText.getText().trim());
+ }
+ }
+
+ private void updateEnablement() {
+ boolean isPasswordAuth = fPasswordButton.getSelection();
+ fPasswordText.setEnabled(isPasswordAuth);
+ fPassphraseText.setEnabled(!isPasswordAuth);
+ fServerCommandText.setEnabled(!fDefaultServerButton.getSelection());
+ }
+
+ private String validateAdvanced() {
+ try {
+ Integer.parseInt(fPortText.getText().trim());
+ } catch (NumberFormatException ne) {
+ return Messages.ProxyNewConnectionPage_Port_is_not_valid;
+ }
+ try {
+ Integer.parseInt(fTimeoutText.getText().trim());
+ } catch (NumberFormatException ne) {
+ return Messages.ProxyNewConnectionPage_Timeout_is_not_valid;
+ }
+ return null;
+ }
+
+ private void validateFields() {
+ String message = null;
+ if (fConnectionName.getText().trim().length() == 0) {
+ message = Messages.ProxyNewConnectionPage_Please_enter_a_connection_name;
+ } else if (isInvalidName(fConnectionName.getText().trim())) {
+ message = Messages.ProxyConnectionPage_A_connection_with_that_name_already_exists;
+ } else if (fHostText.getText().trim().length() == 0) {
+ message = Messages.ProxyNewConnectionPage_Host_name_cannot_be_empty;
+ } else if (fUserText.getText().trim().length() == 0) {
+ message = Messages.ProxyNewConnectionPage_User_name_cannot_be_empty;
+ } else if (!fDefaultServerButton.getSelection() && fServerCommandText.getText().trim().length() == 0) {
+ message = "Server command cannot be empty";
+ }
+ if (message == null) {
+ message = validateAdvanced();
+ }
+
+ setErrorMessage(message);
+ setPageComplete(message == null);
+ }
+
+}
diff --git a/remote/org.eclipse.remote.proxy.ui/src/org/eclipse/remote/internal/proxy/ui/wizards/ProxyConnectionWizard.java b/remote/org.eclipse.remote.proxy.ui/src/org/eclipse/remote/internal/proxy/ui/wizards/ProxyConnectionWizard.java
new file mode 100644
index 00000000000..522a832ac46
--- /dev/null
+++ b/remote/org.eclipse.remote.proxy.ui/src/org/eclipse/remote/internal/proxy/ui/wizards/ProxyConnectionWizard.java
@@ -0,0 +1,78 @@
+/**
+ * Copyright (c) 2016 Oak Ridge National Laboratory and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.eclipse.remote.internal.proxy.ui.wizards;
+
+import java.util.Set;
+
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.remote.core.IRemoteConnectionType;
+import org.eclipse.remote.core.IRemoteConnectionWorkingCopy;
+import org.eclipse.remote.ui.IRemoteUIConnectionWizard;
+import org.eclipse.swt.widgets.Shell;
+
+public class ProxyConnectionWizard extends Wizard implements IRemoteUIConnectionWizard {
+
+ private final Shell fShell;
+ private final ProxyConnectionPage fPage;
+
+ public ProxyConnectionWizard(Shell shell, IRemoteConnectionType connectionType) {
+ fShell = shell;
+ fPage = new ProxyConnectionPage(connectionType);
+ }
+
+ @Override
+ public void addPages() {
+ super.addPages();
+ addPage(fPage);
+ }
+
+ @Override
+ public IRemoteConnectionWorkingCopy open() {
+ WizardDialog dialog = new WizardDialog(fShell, this);
+ dialog.setBlockOnOpen(true);
+ if (dialog.open() == WizardDialog.OK) {
+ return fPage.getConnection();
+ }
+ return null;
+ }
+
+ @Override
+ public IRemoteConnectionWorkingCopy getConnection() {
+ return fPage.getConnection();
+ }
+
+ @Override
+ public boolean performCancel() {
+ return true;
+ }
+
+ @Override
+ public boolean performFinish() {
+ return true;
+ }
+
+ @Override
+ public void setConnection(IRemoteConnectionWorkingCopy connection) {
+ fPage.setConnection(connection);
+ }
+
+ @Override
+ public void setConnectionName(String name) {
+ fPage.setConnectionName(name);
+ }
+
+ @Override
+ public void setInvalidConnectionNames(Set<String> names) {
+ fPage.setInvalidConnectionNames(names);
+ }
+
+}
diff --git a/remote/org.eclipse.remote.serial-feature/.project b/remote/org.eclipse.remote.serial-feature/.project
new file mode 100644
index 00000000000..15b7923f8a4
--- /dev/null
+++ b/remote/org.eclipse.remote.serial-feature/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.remote.serial-feature</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.pde.FeatureBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.FeatureNature</nature>
+ </natures>
+</projectDescription>
diff --git a/remote/org.eclipse.remote.serial-feature/.settings/org.eclipse.core.resources.prefs b/remote/org.eclipse.remote.serial-feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/remote/org.eclipse.remote.serial-feature/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/remote/org.eclipse.remote.serial-feature/build.properties b/remote/org.eclipse.remote.serial-feature/build.properties
new file mode 100644
index 00000000000..adcc4e399d4
--- /dev/null
+++ b/remote/org.eclipse.remote.serial-feature/build.properties
@@ -0,0 +1,4 @@
+bin.includes = feature.xml,\
+ feature.properties,\
+ epl-v20.html,\
+ eclipse_update_120.jpg
diff --git a/remote/org.eclipse.remote.serial-feature/eclipse_update_120.jpg b/remote/org.eclipse.remote.serial-feature/eclipse_update_120.jpg
new file mode 100644
index 00000000000..bfdf708ad61
--- /dev/null
+++ b/remote/org.eclipse.remote.serial-feature/eclipse_update_120.jpg
Binary files differ
diff --git a/remote/org.eclipse.remote.serial-feature/epl-v20.html b/remote/org.eclipse.remote.serial-feature/epl-v20.html
new file mode 100644
index 00000000000..008b8018db8
--- /dev/null
+++ b/remote/org.eclipse.remote.serial-feature/epl-v20.html
@@ -0,0 +1,189 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+ <h2>Eclipse Foundation Software User Agreement</h2>
+ <p>November 22, 2017</p>
+
+ <h3>Usage Of Content</h3>
+
+ <p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION,
+ INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+ (COLLECTIVELY &quot;CONTENT&quot;). USE OF THE CONTENT IS GOVERNED BY
+ THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+ CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+ BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS
+ GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY
+ APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+ BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS
+ AGREEMENT AND THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+ AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT
+ USE THE CONTENT.</p>
+
+ <h3>Applicable Licenses</h3>
+
+ <p>
+ Unless otherwise indicated, all Content made available by the Eclipse
+ Foundation is provided to you under the terms and conditions of the
+ Eclipse Public License Version 2.0 (&quot;EPL&quot;). A copy of the
+ EPL is provided with this Content and is also available at <a
+ href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>Content includes, but is not limited to, source code, object
+ code, documentation and other files maintained in the Eclipse
+ Foundation source code repository (&quot;Repository&quot;) in software
+ modules (&quot;Modules&quot;) and made available as downloadable
+ archives (&quot;Downloads&quot;).</p>
+
+ <ul>
+ <li>Content may be structured and packaged into modules to
+ facilitate delivering, extending, and upgrading the Content. Typical
+ modules may include plug-ins (&quot;Plug-ins&quot;), plug-in
+ fragments (&quot;Fragments&quot;), and features
+ (&quot;Features&quot;).</li>
+ <li>Each Plug-in or Fragment may be packaged as a sub-directory
+ or JAR (Java&trade; ARchive) in a directory named
+ &quot;plugins&quot;.</li>
+ <li>A Feature is a bundle of one or more Plug-ins and/or
+ Fragments and associated material. Each Feature may be packaged as a
+ sub-directory in a directory named &quot;features&quot;. Within a
+ Feature, files named &quot;feature.xml&quot; may contain a list of
+ the names and version numbers of the Plug-ins and/or Fragments
+ associated with that Feature.</li>
+ <li>Features may also include other Features (&quot;Included
+ Features&quot;). Within a Feature, files named
+ &quot;feature.xml&quot; may contain a list of the names and version
+ numbers of Included Features.</li>
+ </ul>
+
+ <p>The terms and conditions governing Plug-ins and Fragments should
+ be contained in files named &quot;about.html&quot;
+ (&quot;Abouts&quot;). The terms and conditions governing Features and
+ Included Features should be contained in files named
+ &quot;license.html&quot; (&quot;Feature Licenses&quot;). Abouts and
+ Feature Licenses may be located in any directory of a Download or
+ Module including, but not limited to the following locations:</p>
+
+ <ul>
+ <li>The top-level (root) directory</li>
+ <li>Plug-in and Fragment directories</li>
+ <li>Inside Plug-ins and Fragments packaged as JARs</li>
+ <li>Sub-directories of the directory named &quot;src&quot; of
+ certain Plug-ins</li>
+ <li>Feature directories</li>
+ </ul>
+
+ <p>Note: if a Feature made available by the Eclipse Foundation is
+ installed using the Provisioning Technology (as defined below), you
+ must agree to a license (&quot;Feature Update License&quot;) during
+ the installation process. If the Feature contains Included Features,
+ the Feature Update License should either provide you with the terms
+ and conditions governing the Included Features or inform you where you
+ can locate them. Feature Update Licenses may be found in the
+ &quot;license&quot; property of files named
+ &quot;feature.properties&quot; found within a Feature. Such Abouts,
+ Feature Licenses, and Feature Update Licenses contain the terms and
+ conditions (or references to such terms and conditions) that govern
+ your use of the associated Content in that directory.</p>
+
+ <p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY
+ REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND
+ CONDITIONS. SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT
+ ARE NOT LIMITED TO):</p>
+
+ <ul>
+ <li>Eclipse Public License Version 1.0 (available at <a
+ href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>)
+ </li>
+ <li>Eclipse Distribution License Version 1.0 (available at <a
+ href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)
+ </li>
+ <li>Common Public License Version 1.0 (available at <a
+ href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)
+ </li>
+ <li>Apache Software License 1.1 (available at <a
+ href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)
+ </li>
+ <li>Apache Software License 2.0 (available at <a
+ href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)
+ </li>
+ <li>Mozilla Public License Version 1.1 (available at <a
+ href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)
+ </li>
+ </ul>
+
+ <p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND
+ CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License,
+ or Feature Update License is provided, please contact the Eclipse
+ Foundation to determine what terms and conditions govern that
+ particular Content.</p>
+
+
+ <h3>Use of Provisioning Technology</h3>
+
+ <p>
+ The Eclipse Foundation makes available provisioning software, examples
+ of which include, but are not limited to, p2 and the Eclipse Update
+ Manager (&quot;Provisioning Technology&quot;) for the purpose of
+ allowing users to install software, documentation, information and/or
+ other materials (collectively &quot;Installable Software&quot;). This
+ capability is provided with the intent of allowing such users to
+ install, extend and update Eclipse-based products. Information about
+ packaging Installable Software is available at <a
+ href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+ (&quot;Specification&quot;).
+ </p>
+
+ <p>You may use Provisioning Technology to allow other parties to
+ install Installable Software. You shall be responsible for enabling
+ the applicable license agreements relating to the Installable Software
+ to be presented to, and accepted by, the users of the Provisioning
+ Technology in accordance with the Specification. By using Provisioning
+ Technology in such a manner and making it available in accordance with
+ the Specification, you further acknowledge your agreement to, and the
+ acquisition of all necessary rights to permit the following:</p>
+
+ <ol>
+ <li>A series of actions may occur (&quot;Provisioning
+ Process&quot;) in which a user may execute the Provisioning
+ Technology on a machine (&quot;Target Machine&quot;) with the intent
+ of installing, extending or updating the functionality of an
+ Eclipse-based product.</li>
+ <li>During the Provisioning Process, the Provisioning Technology
+ may cause third party Installable Software or a portion thereof to be
+ accessed and copied to the Target Machine.</li>
+ <li>Pursuant to the Specification, you will provide to the user
+ the terms and conditions that govern the use of the Installable
+ Software (&quot;Installable Software Agreement&quot;) and such
+ Installable Software Agreement shall be accessed from the Target
+ Machine in accordance with the Specification. Such Installable
+ Software Agreement must inform the user of the terms and conditions
+ that govern the Installable Software and must solicit acceptance by
+ the end user in the manner prescribed in such Installable Software
+ Agreement. Upon such indication of agreement by the user, the
+ provisioning Technology will complete installation of the Installable
+ Software.</li>
+ </ol>
+
+ <h3>Cryptography</h3>
+
+ <p>Content may contain encryption software. The country in which
+ you are currently may have restrictions on the import, possession, and
+ use, and/or re-export to another country, of encryption software.
+ BEFORE using any encryption software, please check the country's laws,
+ regulations and policies concerning the import, possession, or use,
+ and re-export of encryption software, to see if this is permitted.</p>
+
+ <p>
+ <small>Java and all Java-based trademarks are trademarks of
+ Oracle Corporation in the United States, other countries, or both.</small>
+ </p>
+</body>
+</html>
diff --git a/remote/org.eclipse.remote.serial-feature/feature.properties b/remote/org.eclipse.remote.serial-feature/feature.properties
new file mode 100644
index 00000000000..748b1ce4b90
--- /dev/null
+++ b/remote/org.eclipse.remote.serial-feature/feature.properties
@@ -0,0 +1,27 @@
+#################################################################################
+# Copyright (c) 2015 QNX Software Systems Corporation.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#################################################################################
+
+# "featureName" property - name of the feature
+featureName=Serial Port Remote Services
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse CDT
+
+# "description" property - description of the feature
+description=Provides serial port services for the remote framework
+
+# copyright
+copyright=\
+Copyright (c) 2015 QNX Software Corporation.\n\
+This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License 2.0\n\
+which accompanies this distribution, and is available at\n\
+https://www.eclipse.org/legal/epl-2.0/\n
diff --git a/remote/org.eclipse.remote.serial-feature/feature.xml b/remote/org.eclipse.remote.serial-feature/feature.xml
new file mode 100644
index 00000000000..3fcbce867b2
--- /dev/null
+++ b/remote/org.eclipse.remote.serial-feature/feature.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+ id="org.eclipse.remote.serial"
+ label="%featureName"
+ version="10.7.0.qualifier"
+ provider-name="%providerName"
+ plugin="org.eclipse.remote.serial.ui"
+ license-feature="org.eclipse.license"
+ license-feature-version="0.0.0">
+
+ <description>
+ %description
+ </description>
+
+ <copyright>
+ %copyright
+ </copyright>
+
+ <license url="%licenseURL">
+ %license
+ </license>
+
+ <plugin
+ id="org.eclipse.remote.serial.core"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.remote.serial.ui"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+</feature>
diff --git a/remote/org.eclipse.remote.serial.core/.classpath b/remote/org.eclipse.remote.serial.core/.classpath
new file mode 100644
index 00000000000..e801ebfb468
--- /dev/null
+++ b/remote/org.eclipse.remote.serial.core/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/remote/org.eclipse.remote.serial.core/.project b/remote/org.eclipse.remote.serial.core/.project
new file mode 100644
index 00000000000..8b8d788adb1
--- /dev/null
+++ b/remote/org.eclipse.remote.serial.core/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.remote.serial.core</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+ </natures>
+</projectDescription>
diff --git a/remote/org.eclipse.remote.serial.core/.settings/org.eclipse.core.resources.prefs b/remote/org.eclipse.remote.serial.core/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/remote/org.eclipse.remote.serial.core/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/remote/org.eclipse.remote.serial.core/.settings/org.eclipse.jdt.core.prefs b/remote/org.eclipse.remote.serial.core/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..e3a8104f9ca
--- /dev/null
+++ b/remote/org.eclipse.remote.serial.core/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/remote/org.eclipse.remote.serial.core/.settings/org.eclipse.jdt.launching.prefs b/remote/org.eclipse.remote.serial.core/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 00000000000..f8a131b56e0
--- /dev/null
+++ b/remote/org.eclipse.remote.serial.core/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_COMPILER_COMPLIANCE_DOES_NOT_MATCH_JRE=warning
+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=warning
diff --git a/remote/org.eclipse.remote.serial.core/.settings/org.eclipse.jdt.ui.prefs b/remote/org.eclipse.remote.serial.core/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/remote/org.eclipse.remote.serial.core/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/remote/org.eclipse.remote.serial.core/.settings/org.eclipse.pde.api.tools.prefs b/remote/org.eclipse.remote.serial.core/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 00000000000..ec9fbf321d0
--- /dev/null
+++ b/remote/org.eclipse.remote.serial.core/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,184 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITH_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_FIELD=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERCLASS_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_CHANGED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENTS=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETERS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Error
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Warning
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+MISSING_EE_DESCRIPTIONS=Warning
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=false
+changed_execution_env=Error
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+incompatible_api_component_version_report_major_without_breaking_change=Warning
+incompatible_api_component_version_report_minor_without_api_change=Warning
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/remote/org.eclipse.remote.serial.core/.settings/org.eclipse.pde.prefs b/remote/org.eclipse.remote.serial.core/.settings/org.eclipse.pde.prefs
new file mode 100644
index 00000000000..d2dc703ba9e
--- /dev/null
+++ b/remote/org.eclipse.remote.serial.core/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,35 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=2
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=2
+compilers.p.missing-version-export-package=2
+compilers.p.missing-version-import-package=2
+compilers.p.missing-version-require-bundle=2
+compilers.p.no-required-att=0
+compilers.p.no.automatic.module=1
+compilers.p.not-externalized-att=1
+compilers.p.service.component.without.lazyactivation=1
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/remote/org.eclipse.remote.serial.core/META-INF/MANIFEST.MF b/remote/org.eclipse.remote.serial.core/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..c84f9017310
--- /dev/null
+++ b/remote/org.eclipse.remote.serial.core/META-INF/MANIFEST.MF
@@ -0,0 +1,16 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %bundleName
+Bundle-SymbolicName: org.eclipse.remote.serial.core;singleton:=true
+Bundle-Version: 1.1.100.qualifier
+Bundle-Activator: org.eclipse.remote.serial.internal.core.Activator
+Bundle-Vendor: %providerName
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.remote.serial.core
+Bundle-Localization: plugin
+Import-Package: org.eclipse.cdt.serial,
+ org.eclipse.core.runtime,
+ org.eclipse.osgi.util,
+ org.eclipse.remote.core,
+ org.osgi.framework
diff --git a/remote/org.eclipse.remote.serial.core/about.html b/remote/org.eclipse.remote.serial.core/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/remote/org.eclipse.remote.serial.core/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/remote/org.eclipse.remote.serial.core/about.ini b/remote/org.eclipse.remote.serial.core/about.ini
new file mode 100644
index 00000000000..5bd1defab8b
--- /dev/null
+++ b/remote/org.eclipse.remote.serial.core/about.ini
@@ -0,0 +1,27 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%blurb
+
+# Property "windowImage" contains path to window icon (16x16)
+# needed for primary features only
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=ptp_logo_icon32.png
+
+# Property "aboutImage" contains path to product image (500x330 or 115x164)
+# needed for primary features only
+
+# Property "appName" contains name of the application (not translated)
+# needed for primary features only
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+# optional
+
+# Property "welcomePerspective" contains the id of the perspective in which the
+# welcome page is to be opened.
+# optional
diff --git a/remote/org.eclipse.remote.serial.core/about.mappings b/remote/org.eclipse.remote.serial.core/about.mappings
new file mode 100644
index 00000000000..bddaab43109
--- /dev/null
+++ b/remote/org.eclipse.remote.serial.core/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=@build@ \ No newline at end of file
diff --git a/remote/org.eclipse.remote.serial.core/about.properties b/remote/org.eclipse.remote.serial.core/about.properties
new file mode 100644
index 00000000000..fe59955ba93
--- /dev/null
+++ b/remote/org.eclipse.remote.serial.core/about.properties
@@ -0,0 +1,25 @@
+###############################################################################
+# Copyright (c) 2015 QNX Software Systems and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# QNX Software Systems - initial API and implementation
+###############################################################################
+
+# NLS_MESSAGEFORMAT_NONE
+# NLS_ENCODING=UTF-8
+
+blurb=Serial Port Remote Services\n\
+\n\
+Version: {featureVersion}\n\
+Build id: {0}\n\
+\n\
+Copyright (c) 2015 QNX Software Systems, and others.\n\
+Visit http://www.eclipse.org/ptp\n
+
diff --git a/remote/org.eclipse.remote.serial.core/build.properties b/remote/org.eclipse.remote.serial.core/build.properties
new file mode 100644
index 00000000000..d213cef4be1
--- /dev/null
+++ b/remote/org.eclipse.remote.serial.core/build.properties
@@ -0,0 +1,12 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ about.html,\
+ about.ini,\
+ about.mappings,\
+ about.properties,\
+ ptp_logo_icon32.png,\
+ plugin.properties
+src.includes = about.html
diff --git a/remote/org.eclipse.remote.serial.core/plugin.properties b/remote/org.eclipse.remote.serial.core/plugin.properties
new file mode 100644
index 00000000000..a8a8ec291cb
--- /dev/null
+++ b/remote/org.eclipse.remote.serial.core/plugin.properties
@@ -0,0 +1,2 @@
+bundleName = Remote Serial Port Services
+providerName = Eclipse PTP
diff --git a/remote/org.eclipse.remote.serial.core/plugin.xml b/remote/org.eclipse.remote.serial.core/plugin.xml
new file mode 100644
index 00000000000..2f226dccdd5
--- /dev/null
+++ b/remote/org.eclipse.remote.serial.core/plugin.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension
+ point="org.eclipse.remote.core.remoteServices">
+ <connectionType
+ id="org.eclipse.remote.serial.core.connectionType"
+ name="Serial Port">
+ </connectionType>
+ <connectionService
+ connectionTypeId="org.eclipse.remote.serial.core.connectionType"
+ factory="org.eclipse.remote.serial.core.SerialPortConnection$Factory"
+ service="org.eclipse.remote.serial.core.ISerialPortService">
+ </connectionService>
+ <connectionService
+ connectionTypeId="org.eclipse.remote.serial.core.connectionType"
+ factory="org.eclipse.remote.serial.core.SerialPortConnection$Factory"
+ service="org.eclipse.remote.core.IRemoteCommandShellService">
+ </connectionService>
+ </extension>
+
+</plugin>
diff --git a/remote/org.eclipse.remote.serial.core/ptp_logo_icon32.png b/remote/org.eclipse.remote.serial.core/ptp_logo_icon32.png
new file mode 100644
index 00000000000..e8ec57270f3
--- /dev/null
+++ b/remote/org.eclipse.remote.serial.core/ptp_logo_icon32.png
Binary files differ
diff --git a/remote/org.eclipse.remote.serial.core/src/org/eclipse/remote/serial/core/ISerialPortService.java b/remote/org.eclipse.remote.serial.core/src/org/eclipse/remote/serial/core/ISerialPortService.java
new file mode 100644
index 00000000000..39f6d3cc2c2
--- /dev/null
+++ b/remote/org.eclipse.remote.serial.core/src/org/eclipse/remote/serial/core/ISerialPortService.java
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems, and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - initial contribution
+ *******************************************************************************/
+package org.eclipse.remote.serial.core;
+
+import org.eclipse.cdt.serial.SerialPort;
+import org.eclipse.remote.core.IRemoteConnection;
+
+public interface ISerialPortService extends IRemoteConnection.Service {
+
+ static final String CONNECTION_TYPE_ID = "org.eclipse.remote.serial.core.connectionType"; //$NON-NLS-1$
+ static final String PORT_NAME_ATTR = "serial.portName"; //$NON-NLS-1$
+ static final String BAUD_RATE_ATTR = "serial.baudRate"; //$NON-NLS-1$
+ static final String BYTE_SIZE_ATTR = "serial.byteSize"; //$NON-NLS-1$
+ static final String PARITY_ATTR = "serial.parity"; //$NON-NLS-1$
+ static final String STOP_BITS_ATTR = "serial.stopBits"; //$NON-NLS-1$
+
+ SerialPort getSerialPort();
+
+}
diff --git a/remote/org.eclipse.remote.serial.core/src/org/eclipse/remote/serial/core/SerialPortCommandShell.java b/remote/org.eclipse.remote.serial.core/src/org/eclipse/remote/serial/core/SerialPortCommandShell.java
new file mode 100644
index 00000000000..bbb07ae35fe
--- /dev/null
+++ b/remote/org.eclipse.remote.serial.core/src/org/eclipse/remote/serial/core/SerialPortCommandShell.java
@@ -0,0 +1,115 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems, and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - initial contribution
+ *******************************************************************************/
+package org.eclipse.remote.serial.core;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+
+import org.eclipse.cdt.serial.SerialPort;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteProcess;
+import org.eclipse.remote.core.IRemoteProcessBuilder;
+import org.eclipse.remote.serial.internal.core.Activator;
+
+public class SerialPortCommandShell implements IRemoteProcess {
+
+ private final IRemoteConnection remoteConnection;
+ private final SerialPort serialPort;
+
+ public SerialPortCommandShell(IRemoteConnection remoteConnection, SerialPort serialPort) throws IOException {
+ this.remoteConnection = remoteConnection;
+ this.serialPort = serialPort;
+ serialPort.open();
+ }
+
+ @Override
+ public synchronized void destroy() {
+ if (serialPort.isOpen()) {
+ try {
+ serialPort.close();
+ } catch (IOException e) {
+ Activator.log(e);
+ }
+ notifyAll();
+ }
+ }
+
+ @Override
+ public int exitValue() {
+ return 0;
+ }
+
+ @Override
+ public InputStream getErrorStream() {
+ return new InputStream() {
+ @Override
+ public int read() throws IOException {
+ synchronized (SerialPortCommandShell.this) {
+ if (serialPort.isOpen()) {
+ try {
+ wait();
+ } catch (InterruptedException e) {
+ }
+ }
+ }
+ return 0;
+ }
+ };
+ }
+
+ @Override
+ public InputStream getInputStream() {
+ return serialPort.getInputStream();
+ }
+
+ @Override
+ public OutputStream getOutputStream() {
+ return serialPort.getOutputStream();
+ }
+
+ @Override
+ public synchronized int waitFor() throws InterruptedException {
+ if (serialPort.isOpen()) {
+ wait();
+ }
+ return 0;
+ }
+
+ @Override
+ public boolean isCompleted() {
+ return false;
+ }
+
+ @Override
+ public IRemoteConnection getRemoteConnection() {
+ return remoteConnection;
+ }
+
+ @Override
+ public <T extends Service> T getService(Class<T> service) {
+ return null;
+ }
+
+ @Override
+ public <T extends Service> boolean hasService(Class<T> service) {
+ return false;
+ }
+
+ @Override
+ public IRemoteProcessBuilder getProcessBuilder() {
+ return null;
+ }
+
+}
diff --git a/remote/org.eclipse.remote.serial.core/src/org/eclipse/remote/serial/core/SerialPortConnection.java b/remote/org.eclipse.remote.serial.core/src/org/eclipse/remote/serial/core/SerialPortConnection.java
new file mode 100644
index 00000000000..5360f24cefb
--- /dev/null
+++ b/remote/org.eclipse.remote.serial.core/src/org/eclipse/remote/serial/core/SerialPortConnection.java
@@ -0,0 +1,100 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems, and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - initial contribution
+ *******************************************************************************/
+package org.eclipse.remote.serial.core;
+
+import java.io.IOException;
+
+import org.eclipse.cdt.serial.BaudRate;
+import org.eclipse.cdt.serial.ByteSize;
+import org.eclipse.cdt.serial.Parity;
+import org.eclipse.cdt.serial.SerialPort;
+import org.eclipse.cdt.serial.StopBits;
+import org.eclipse.remote.core.IRemoteCommandShellService;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteConnection.Service;
+import org.eclipse.remote.core.IRemoteConnectionChangeListener;
+import org.eclipse.remote.core.IRemoteProcess;
+import org.eclipse.remote.core.RemoteConnectionChangeEvent;
+import org.eclipse.remote.serial.internal.core.Activator;
+import org.eclipse.remote.serial.internal.core.Messages;
+
+public class SerialPortConnection implements ISerialPortService, IRemoteCommandShellService {
+
+ private final IRemoteConnection remoteConnection;
+ private SerialPort serialPort;
+
+ private SerialPortConnection(IRemoteConnection remoteConnection) {
+ this.remoteConnection = remoteConnection;
+ this.remoteConnection.addConnectionChangeListener(new IRemoteConnectionChangeListener() {
+
+ @Override
+ public void connectionChanged(RemoteConnectionChangeEvent event) {
+ if (event.getType() == RemoteConnectionChangeEvent.ATTRIBUTES_CHANGED) {
+ serialPort = null;
+ }
+ }
+ });
+ }
+
+ public static class Factory implements IRemoteConnection.Service.Factory {
+ @SuppressWarnings("unchecked")
+ @Override
+ public <T extends Service> T getService(IRemoteConnection remoteConnection, Class<T> service) {
+ if (ISerialPortService.class.equals(service)) {
+ return (T) new SerialPortConnection(remoteConnection);
+ } else if (IRemoteCommandShellService.class.equals(service)) {
+ return (T) getService(remoteConnection, ISerialPortService.class);
+ }
+ return null;
+ }
+ }
+
+ @Override
+ public IRemoteConnection getRemoteConnection() {
+ return remoteConnection;
+ }
+
+ @Override
+ public SerialPort getSerialPort() {
+ if (serialPort == null) {
+ String portName = remoteConnection.getAttribute(PORT_NAME_ATTR);
+ if (portName != null) {
+ serialPort = new SerialPort(portName);
+ try {
+ serialPort.setBaudRate(
+ BaudRate.fromStringIndex(Integer.parseInt(remoteConnection.getAttribute(BAUD_RATE_ATTR))));
+ serialPort.setByteSize(
+ ByteSize.fromStringIndex(Integer.parseInt(remoteConnection.getAttribute(BYTE_SIZE_ATTR))));
+ serialPort.setParity(
+ Parity.fromStringIndex(Integer.parseInt(remoteConnection.getAttribute(PARITY_ATTR))));
+ serialPort.setStopBits(
+ StopBits.fromStringIndex(Integer.parseInt(remoteConnection.getAttribute(STOP_BITS_ATTR))));
+ } catch (IOException e) {
+ Activator.log(e);
+ }
+ }
+ }
+ return serialPort;
+ }
+
+ @Override
+ public IRemoteProcess getCommandShell(int flags) throws IOException {
+ SerialPort serialPort = getSerialPort();
+ if (serialPort == null) {
+ throw new IOException(Messages.SerialPortConnection_SerialPortNotAvailable);
+ }
+ return new SerialPortCommandShell(remoteConnection, getSerialPort());
+ }
+
+}
diff --git a/remote/org.eclipse.remote.serial.core/src/org/eclipse/remote/serial/internal/core/Activator.java b/remote/org.eclipse.remote.serial.core/src/org/eclipse/remote/serial/internal/core/Activator.java
new file mode 100644
index 00000000000..90ab8c2109e
--- /dev/null
+++ b/remote/org.eclipse.remote.serial.core/src/org/eclipse/remote/serial/internal/core/Activator.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems, and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - initial contribution
+ *******************************************************************************/
+package org.eclipse.remote.serial.internal.core;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Plugin;
+import org.eclipse.core.runtime.Status;
+import org.osgi.framework.BundleContext;
+
+public class Activator extends Plugin {
+
+ private static Plugin plugin;
+
+ @Override
+ public void start(BundleContext bundleContext) throws Exception {
+ plugin = this;
+ }
+
+ @Override
+ public void stop(BundleContext bundleContext) throws Exception {
+ plugin = null;
+ }
+
+ public static void log(IStatus status) {
+ plugin.getLog().log(status);
+ }
+
+ public static void log(Exception exception) {
+ if (exception instanceof CoreException) {
+ log(((CoreException) exception).getStatus());
+ } else {
+ log(new Status(IStatus.ERROR, plugin.getBundle().getSymbolicName(), exception.getLocalizedMessage(),
+ exception));
+ }
+ }
+
+}
diff --git a/remote/org.eclipse.remote.serial.core/src/org/eclipse/remote/serial/internal/core/Messages.java b/remote/org.eclipse.remote.serial.core/src/org/eclipse/remote/serial/internal/core/Messages.java
new file mode 100644
index 00000000000..b4bf7be3f38
--- /dev/null
+++ b/remote/org.eclipse.remote.serial.core/src/org/eclipse/remote/serial/internal/core/Messages.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems, and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - initial contribution
+ *******************************************************************************/
+package org.eclipse.remote.serial.internal.core;
+
+import org.eclipse.osgi.util.NLS;
+
+public class Messages extends NLS {
+ private static final String BUNDLE_NAME = "org.eclipse.remote.serial.internal.core.messages"; //$NON-NLS-1$
+ public static String SerialPortConnection_SerialPortNotAvailable;
+
+ static {
+ // initialize resource bundle
+ NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+ }
+
+ private Messages() {
+ }
+}
diff --git a/remote/org.eclipse.remote.serial.core/src/org/eclipse/remote/serial/internal/core/messages.properties b/remote/org.eclipse.remote.serial.core/src/org/eclipse/remote/serial/internal/core/messages.properties
new file mode 100644
index 00000000000..5c01c5263a9
--- /dev/null
+++ b/remote/org.eclipse.remote.serial.core/src/org/eclipse/remote/serial/internal/core/messages.properties
@@ -0,0 +1,14 @@
+################################################################################
+# Copyright (c) 2015 QNX Software Systems, and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# QNX Software Systems - initial contribution
+################################################################################
+SerialPortConnection_SerialPortNotAvailable=Serial port not available.
diff --git a/remote/org.eclipse.remote.serial.ui/.classpath b/remote/org.eclipse.remote.serial.ui/.classpath
new file mode 100644
index 00000000000..e801ebfb468
--- /dev/null
+++ b/remote/org.eclipse.remote.serial.ui/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/remote/org.eclipse.remote.serial.ui/.project b/remote/org.eclipse.remote.serial.ui/.project
new file mode 100644
index 00000000000..6c7fbb37598
--- /dev/null
+++ b/remote/org.eclipse.remote.serial.ui/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.remote.serial.ui</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+ </natures>
+</projectDescription>
diff --git a/remote/org.eclipse.remote.serial.ui/.settings/org.eclipse.core.resources.prefs b/remote/org.eclipse.remote.serial.ui/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/remote/org.eclipse.remote.serial.ui/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/remote/org.eclipse.remote.serial.ui/.settings/org.eclipse.jdt.core.prefs b/remote/org.eclipse.remote.serial.ui/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..e3a8104f9ca
--- /dev/null
+++ b/remote/org.eclipse.remote.serial.ui/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/remote/org.eclipse.remote.serial.ui/.settings/org.eclipse.jdt.launching.prefs b/remote/org.eclipse.remote.serial.ui/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 00000000000..f8a131b56e0
--- /dev/null
+++ b/remote/org.eclipse.remote.serial.ui/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_COMPILER_COMPLIANCE_DOES_NOT_MATCH_JRE=warning
+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=warning
diff --git a/remote/org.eclipse.remote.serial.ui/.settings/org.eclipse.jdt.ui.prefs b/remote/org.eclipse.remote.serial.ui/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/remote/org.eclipse.remote.serial.ui/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/remote/org.eclipse.remote.serial.ui/.settings/org.eclipse.pde.api.tools.prefs b/remote/org.eclipse.remote.serial.ui/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 00000000000..ec9fbf321d0
--- /dev/null
+++ b/remote/org.eclipse.remote.serial.ui/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,184 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITH_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_FIELD=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERCLASS_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_CHANGED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENTS=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETERS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Error
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Warning
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+MISSING_EE_DESCRIPTIONS=Warning
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=false
+changed_execution_env=Error
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+incompatible_api_component_version_report_major_without_breaking_change=Warning
+incompatible_api_component_version_report_minor_without_api_change=Warning
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/remote/org.eclipse.remote.serial.ui/.settings/org.eclipse.pde.prefs b/remote/org.eclipse.remote.serial.ui/.settings/org.eclipse.pde.prefs
new file mode 100644
index 00000000000..d2dc703ba9e
--- /dev/null
+++ b/remote/org.eclipse.remote.serial.ui/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,35 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=2
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=2
+compilers.p.missing-version-export-package=2
+compilers.p.missing-version-import-package=2
+compilers.p.missing-version-require-bundle=2
+compilers.p.no-required-att=0
+compilers.p.no.automatic.module=1
+compilers.p.not-externalized-att=1
+compilers.p.service.component.without.lazyactivation=1
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/remote/org.eclipse.remote.serial.ui/META-INF/MANIFEST.MF b/remote/org.eclipse.remote.serial.ui/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..31cf1557301
--- /dev/null
+++ b/remote/org.eclipse.remote.serial.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,35 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %bundleName
+Bundle-SymbolicName: org.eclipse.remote.serial.ui;singleton:=true
+Bundle-Version: 1.0.200.qualifier
+Bundle-Activator: org.eclipse.remote.serial.internal.ui.Activator
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Bundle-ActivationPolicy: lazy
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Export-Package: org.eclipse.remote.serial.ui
+Import-Package: org.eclipse.cdt.serial,
+ org.eclipse.core.expressions,
+ org.eclipse.core.runtime,
+ org.eclipse.jface.dialogs,
+ org.eclipse.jface.operation,
+ org.eclipse.jface.preference,
+ org.eclipse.jface.resource,
+ org.eclipse.jface.viewers,
+ org.eclipse.jface.window,
+ org.eclipse.jface.wizard,
+ org.eclipse.osgi.util,
+ org.eclipse.remote.core,
+ org.eclipse.remote.core.exception,
+ org.eclipse.remote.serial.core,
+ org.eclipse.remote.ui,
+ org.eclipse.swt,
+ org.eclipse.swt.events,
+ org.eclipse.swt.graphics,
+ org.eclipse.swt.layout,
+ org.eclipse.swt.widgets,
+ org.eclipse.ui,
+ org.eclipse.ui.dialogs,
+ org.eclipse.ui.plugin,
+ org.osgi.framework
diff --git a/remote/org.eclipse.remote.serial.ui/about.html b/remote/org.eclipse.remote.serial.ui/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/remote/org.eclipse.remote.serial.ui/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/remote/org.eclipse.remote.serial.ui/about.ini b/remote/org.eclipse.remote.serial.ui/about.ini
new file mode 100644
index 00000000000..e07a7bb377e
--- /dev/null
+++ b/remote/org.eclipse.remote.serial.ui/about.ini
@@ -0,0 +1,24 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%blurb
+
+# Property "windowImage" contains path to window icon (16x16)
+# needed for primary features only
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=cdt_logo_icon32.png
+
+# Property "aboutImage" contains path to product image (500x330 or 115x164)
+# needed for primary features only
+
+# Property "appName" contains name of the application (translated)
+# needed for primary features only
+
+# Property "welcomePerspective" contains the id of the perspective in which the
+# welcome page is to be opened.
+# optional
diff --git a/remote/org.eclipse.remote.serial.ui/about.mappings b/remote/org.eclipse.remote.serial.ui/about.mappings
new file mode 100644
index 00000000000..936a8039c3e
--- /dev/null
+++ b/remote/org.eclipse.remote.serial.ui/about.mappings
@@ -0,0 +1,9 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+# The following should contain the build version.
+# e.g. "0=20200106-1728"
+# This value will be added automatically via the build scripts
+0=${buildId}
diff --git a/remote/org.eclipse.remote.serial.ui/about.properties b/remote/org.eclipse.remote.serial.ui/about.properties
new file mode 100644
index 00000000000..544df0e4828
--- /dev/null
+++ b/remote/org.eclipse.remote.serial.ui/about.properties
@@ -0,0 +1,32 @@
+###############################################################################
+# Copyright (c) 2021, 2022 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+# about.properties
+# contains externalized strings for about.ini
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# fill-ins are supplied by about.mappings
+# This file should be translated.
+# NOTE TO TRANSLATOR: Please do not translate the featureVersion variable.
+
+
+blurb=Serial Port Remote Services\n\
+\n\
+Version: {featureVersion}\n\
+Build id: {0}\n\
+\n\
+Copyright (c) 2021, 2022 Contributors to the Eclipse Foundation
+\n\
+See the NOTICE file(s) distributed with this work for additional\n\
+information regarding copyright ownership.\n\
+\n\
+Visit http://www.eclipse.org/cdt
diff --git a/remote/org.eclipse.remote.serial.ui/build.properties b/remote/org.eclipse.remote.serial.ui/build.properties
new file mode 100644
index 00000000000..ed7e7fb3471
--- /dev/null
+++ b/remote/org.eclipse.remote.serial.ui/build.properties
@@ -0,0 +1,13 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ about.html,\
+ about.ini,\
+ about.mappings,\
+ about.properties,\
+ cdt_logo_icon32.png,\
+ icons/,\
+ plugin.properties
+src.includes = about.html
diff --git a/remote/org.eclipse.remote.serial.ui/cdt_logo_icon32.png b/remote/org.eclipse.remote.serial.ui/cdt_logo_icon32.png
new file mode 100644
index 00000000000..470ca81b327
--- /dev/null
+++ b/remote/org.eclipse.remote.serial.ui/cdt_logo_icon32.png
Binary files differ
diff --git a/remote/org.eclipse.remote.serial.ui/icons/serial.png b/remote/org.eclipse.remote.serial.ui/icons/serial.png
new file mode 100644
index 00000000000..55927362f66
--- /dev/null
+++ b/remote/org.eclipse.remote.serial.ui/icons/serial.png
Binary files differ
diff --git a/remote/org.eclipse.remote.serial.ui/plugin.properties b/remote/org.eclipse.remote.serial.ui/plugin.properties
new file mode 100644
index 00000000000..214fce2774e
--- /dev/null
+++ b/remote/org.eclipse.remote.serial.ui/plugin.properties
@@ -0,0 +1,2 @@
+bundleName = Remote Serial Port Services UI
+providerName = Eclipse PTP
diff --git a/remote/org.eclipse.remote.serial.ui/plugin.xml b/remote/org.eclipse.remote.serial.ui/plugin.xml
new file mode 100644
index 00000000000..ea286af5ecc
--- /dev/null
+++ b/remote/org.eclipse.remote.serial.ui/plugin.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension
+ point="org.eclipse.remote.core.remoteServices">
+ <connectionTypeService
+ connectionTypeId="org.eclipse.remote.serial.core.connectionType"
+ factory="org.eclipse.remote.serial.internal.ui.SerialPortConnectionsUI$Factory"
+ service="org.eclipse.remote.ui.IRemoteUIConnectionService">
+ </connectionTypeService>
+ </extension>
+ <extension
+ point="org.eclipse.ui.propertyPages">
+ <page
+ class="org.eclipse.remote.serial.ui.SerialPortConnectionPropertyPage"
+ id="org.eclipse.remote.serial.ui.targetPropertyPage"
+ name="Serial Port Settings"
+ selectionFilter="single">
+ <enabledWhen>
+ <adapt type="org.eclipse.remote.core.IRemoteConnection">
+ <test
+ property="org.eclipse.remote.core.isConnectionType"
+ value="org.eclipse.remote.serial.core.connectionType"/>
+ </adapt>
+ </enabledWhen>
+ </page>
+ </extension>
+</plugin>
diff --git a/remote/org.eclipse.remote.serial.ui/ptp_logo_icon32.png b/remote/org.eclipse.remote.serial.ui/ptp_logo_icon32.png
new file mode 100644
index 00000000000..e8ec57270f3
--- /dev/null
+++ b/remote/org.eclipse.remote.serial.ui/ptp_logo_icon32.png
Binary files differ
diff --git a/remote/org.eclipse.remote.serial.ui/src/org/eclipse/remote/serial/internal/ui/Activator.java b/remote/org.eclipse.remote.serial.ui/src/org/eclipse/remote/serial/internal/ui/Activator.java
new file mode 100644
index 00000000000..1e6f51ed8e2
--- /dev/null
+++ b/remote/org.eclipse.remote.serial.ui/src/org/eclipse/remote/serial/internal/ui/Activator.java
@@ -0,0 +1,77 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems, and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - initial contribution
+ *******************************************************************************/
+package org.eclipse.remote.serial.internal.ui;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.eclipse.remote.serial.ui"; //$NON-NLS-1$
+
+ // Image keys
+ public static final String IMG_CONNECTION_TYPE = PLUGIN_ID + ".connectionType"; //$NON-NLS-1$
+
+ // The shared instance
+ private static Activator plugin;
+
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ getImageRegistry().put(IMG_CONNECTION_TYPE, imageDescriptorFromPlugin(PLUGIN_ID, "/icons/serial.png")); //$NON-NLS-1$
+ }
+
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+ public static void log(IStatus status) {
+ plugin.getLog().log(status);
+ }
+
+ public static void log(Exception e) {
+ if (e instanceof CoreException) {
+ log(((CoreException) e).getStatus());
+ } else {
+ log(new Status(IStatus.ERROR, PLUGIN_ID, e.getLocalizedMessage(), e));
+ }
+ }
+
+ public static <T> T getService(Class<T> service) {
+ BundleContext context = plugin.getBundle().getBundleContext();
+ ServiceReference<T> ref = context.getServiceReference(service);
+ return ref != null ? context.getService(ref) : null;
+ }
+
+}
diff --git a/remote/org.eclipse.remote.serial.ui/src/org/eclipse/remote/serial/internal/ui/Messages.java b/remote/org.eclipse.remote.serial.ui/src/org/eclipse/remote/serial/internal/ui/Messages.java
new file mode 100644
index 00000000000..1f95311b3ee
--- /dev/null
+++ b/remote/org.eclipse.remote.serial.ui/src/org/eclipse/remote/serial/internal/ui/Messages.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems, and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - initial contribution
+ *******************************************************************************/
+package org.eclipse.remote.serial.internal.ui;
+
+import org.eclipse.osgi.util.NLS;
+
+public class Messages extends NLS {
+ private static final String BUNDLE_NAME = "org.eclipse.remote.serial.internal.ui.messages"; //$NON-NLS-1$
+ public static String NewSerialPortConnectionWizardPage_BaudRateLabel;
+ public static String NewSerialPortConnectionWizardPage_ByteSizeLabel;
+ public static String NewSerialPortConnectionWizardPage_Description;
+ public static String NewSerialPortConnectionWizardPage_NameLabel;
+ public static String NewSerialPortConnectionWizardPage_ParityLabel;
+ public static String NewSerialPortConnectionWizardPage_PortLabel;
+ public static String NewSerialPortConnectionWizardPage_StopBitsLabel;
+ public static String NewSerialPortConnectionWizardPage_Title;
+
+ static {
+ // initialize resource bundle
+ NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+ }
+
+ private Messages() {
+ }
+}
diff --git a/remote/org.eclipse.remote.serial.ui/src/org/eclipse/remote/serial/internal/ui/SerialPortConnectionsUI.java b/remote/org.eclipse.remote.serial.ui/src/org/eclipse/remote/serial/internal/ui/SerialPortConnectionsUI.java
new file mode 100644
index 00000000000..ae2155d1aa6
--- /dev/null
+++ b/remote/org.eclipse.remote.serial.ui/src/org/eclipse/remote/serial/internal/ui/SerialPortConnectionsUI.java
@@ -0,0 +1,85 @@
+/*******************************************************************************
+ * Copyright (c) 2015, 2020 QNX Software Systems, and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - initial contribution
+ *******************************************************************************/
+package org.eclipse.remote.serial.internal.ui;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.jface.operation.IRunnableContext;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteConnectionType;
+import org.eclipse.remote.core.IRemoteConnectionType.Service;
+import org.eclipse.remote.core.exception.RemoteConnectionException;
+import org.eclipse.remote.serial.ui.NewSerialPortConnectionWizard;
+import org.eclipse.remote.ui.AbstractRemoteUIConnectionService;
+import org.eclipse.remote.ui.IRemoteUIConnectionService;
+import org.eclipse.remote.ui.IRemoteUIConnectionWizard;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Shell;
+
+public class SerialPortConnectionsUI extends AbstractRemoteUIConnectionService {
+
+ private final IRemoteConnectionType connectionType;
+
+ private SerialPortConnectionsUI(IRemoteConnectionType connectionType) {
+ this.connectionType = connectionType;
+ }
+
+ public static class Factory implements IRemoteConnectionType.Service.Factory {
+ @SuppressWarnings("unchecked")
+ @Override
+ public <T extends Service> T getService(IRemoteConnectionType connectionType, Class<T> service) {
+ if (IRemoteUIConnectionService.class.equals(service)) {
+ return (T) new SerialPortConnectionsUI(connectionType);
+ }
+ return null;
+ }
+ }
+
+ @Override
+ public IRemoteConnectionType getConnectionType() {
+ return connectionType;
+ }
+
+ @Override
+ public IRemoteUIConnectionWizard getConnectionWizard(Shell shell) {
+ return new NewSerialPortConnectionWizard(shell, connectionType);
+ }
+
+ @Override
+ public void openConnectionWithProgress(Shell shell, IRunnableContext context, final IRemoteConnection connection) {
+ try {
+ context.run(false, true, monitor -> {
+ try {
+ connection.open(monitor);
+ } catch (RemoteConnectionException e) {
+ Activator.log(e.getStatus());
+ }
+ });
+ } catch (InvocationTargetException | InterruptedException e) {
+ Activator.log(e);
+ }
+ }
+
+ @Override
+ public ILabelProvider getLabelProvider() {
+ return new DefaultLabelProvider() {
+ @Override
+ public Image getImage(Object element) {
+ return Activator.getDefault().getImageRegistry().get(Activator.IMG_CONNECTION_TYPE);
+ }
+ };
+ }
+
+}
diff --git a/remote/org.eclipse.remote.serial.ui/src/org/eclipse/remote/serial/internal/ui/messages.properties b/remote/org.eclipse.remote.serial.ui/src/org/eclipse/remote/serial/internal/ui/messages.properties
new file mode 100644
index 00000000000..f073d286682
--- /dev/null
+++ b/remote/org.eclipse.remote.serial.ui/src/org/eclipse/remote/serial/internal/ui/messages.properties
@@ -0,0 +1,21 @@
+################################################################################
+# Copyright (c) 2015 QNX Software Systems, and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# QNX Software Systems - initial contribution
+################################################################################
+NewSerialPortConnectionWizardPage_BaudRateLabel=Baud rate:
+NewSerialPortConnectionWizardPage_ByteSizeLabel=Data size:
+NewSerialPortConnectionWizardPage_Description=New serial port connection settings
+NewSerialPortConnectionWizardPage_NameLabel=Connection name:
+NewSerialPortConnectionWizardPage_ParityLabel=Parity:
+NewSerialPortConnectionWizardPage_PortLabel=Serial port:
+NewSerialPortConnectionWizardPage_StopBitsLabel=Stop bits:
+NewSerialPortConnectionWizardPage_Title=New Serial Port Connection
diff --git a/remote/org.eclipse.remote.serial.ui/src/org/eclipse/remote/serial/ui/NewSerialPortConnectionWizard.java b/remote/org.eclipse.remote.serial.ui/src/org/eclipse/remote/serial/ui/NewSerialPortConnectionWizard.java
new file mode 100644
index 00000000000..0bdb50d3765
--- /dev/null
+++ b/remote/org.eclipse.remote.serial.ui/src/org/eclipse/remote/serial/ui/NewSerialPortConnectionWizard.java
@@ -0,0 +1,100 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems, and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - initial contribution
+ *******************************************************************************/
+package org.eclipse.remote.serial.ui;
+
+import java.util.Set;
+
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.remote.core.IRemoteConnectionType;
+import org.eclipse.remote.core.IRemoteConnectionWorkingCopy;
+import org.eclipse.remote.core.exception.RemoteConnectionException;
+import org.eclipse.remote.serial.core.ISerialPortService;
+import org.eclipse.remote.serial.internal.ui.Activator;
+import org.eclipse.remote.ui.IRemoteUIConnectionWizard;
+import org.eclipse.swt.widgets.Shell;
+
+public class NewSerialPortConnectionWizard extends Wizard implements IRemoteUIConnectionWizard {
+
+ private NewSerialPortConnectionWizardPage page;
+ private IRemoteConnectionWorkingCopy workingCopy;
+ private Shell shell;
+ private IRemoteConnectionType connectionType;
+
+ public NewSerialPortConnectionWizard(Shell shell, IRemoteConnectionType connectionType) {
+ this.shell = shell;
+ this.connectionType = connectionType;
+ }
+
+ @Override
+ public void addPages() {
+ page = new NewSerialPortConnectionWizardPage();
+ addPage(page);
+ }
+
+ @Override
+ public boolean performFinish() {
+ if (getConnection() == null) {
+ return false;
+ }
+
+ workingCopy.setAttribute(ISerialPortService.PORT_NAME_ATTR, page.getPortName());
+ workingCopy.setAttribute(ISerialPortService.BAUD_RATE_ATTR, Integer.toString(page.getBaudRateIndex()));
+ workingCopy.setAttribute(ISerialPortService.BYTE_SIZE_ATTR, Integer.toString(page.getByteSizeIndex()));
+ workingCopy.setAttribute(ISerialPortService.PARITY_ATTR, Integer.toString(page.getParityIndex()));
+ workingCopy.setAttribute(ISerialPortService.STOP_BITS_ATTR, Integer.toString(page.getStopBitsIndex()));
+
+ return true;
+ }
+
+ @Override
+ public IRemoteConnectionWorkingCopy open() {
+ WizardDialog dialog = new WizardDialog(shell, this);
+ dialog.setBlockOnOpen(true);
+ if (dialog.open() == WizardDialog.OK) {
+ return getConnection();
+ }
+ return null;
+ }
+
+ @Override
+ public IRemoteConnectionWorkingCopy getConnection() {
+ if (workingCopy == null) {
+ try {
+ workingCopy = connectionType.newConnection(page.getConnectionName());
+ } catch (RemoteConnectionException e) {
+ Activator.log(e.getStatus());
+ }
+ }
+ return workingCopy;
+ }
+
+ @Override
+ public void setConnection(IRemoteConnectionWorkingCopy connection) {
+ workingCopy = connection;
+ }
+
+ @Override
+ public void setConnectionName(String name) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void setInvalidConnectionNames(Set<String> names) {
+ // TODO Auto-generated method stub
+
+ }
+
+}
diff --git a/remote/org.eclipse.remote.serial.ui/src/org/eclipse/remote/serial/ui/NewSerialPortConnectionWizardPage.java b/remote/org.eclipse.remote.serial.ui/src/org/eclipse/remote/serial/ui/NewSerialPortConnectionWizardPage.java
new file mode 100644
index 00000000000..2657543cbb4
--- /dev/null
+++ b/remote/org.eclipse.remote.serial.ui/src/org/eclipse/remote/serial/ui/NewSerialPortConnectionWizardPage.java
@@ -0,0 +1,73 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems, and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - initial contribution
+ *******************************************************************************/
+package org.eclipse.remote.serial.ui;
+
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.remote.serial.internal.ui.Messages;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+
+public class NewSerialPortConnectionWizardPage extends WizardPage {
+
+ protected SerialPortConnectionBlock block;
+
+ public NewSerialPortConnectionWizardPage() {
+ super(NewSerialPortConnectionWizardPage.class.getName());
+ setDescription(Messages.NewSerialPortConnectionWizardPage_Description);
+ setTitle(Messages.NewSerialPortConnectionWizardPage_Title);
+ block = new SerialPortConnectionBlock();
+ block.addUpdateListener(block.new SerialBlockUpdateListener() {
+
+ @Override
+ public void update() {
+ setPageComplete(block.isComplete());
+ }
+
+ });
+ }
+
+ @Override
+ public void createControl(Composite parent) {
+ Composite comp = new Composite(parent, SWT.NONE);
+ comp.setLayout(new GridLayout(2, false));
+ block.createBlock(comp, null);
+ setControl(comp);
+ }
+
+ public String getConnectionName() {
+ return block.getConnectionName();
+ }
+
+ public String getPortName() {
+ return block.getPortName();
+ }
+
+ public int getBaudRateIndex() {
+ return block.getBaudRateIndex();
+ }
+
+ public int getByteSizeIndex() {
+ return block.getByteSizeIndex();
+ }
+
+ public int getParityIndex() {
+ return block.getParityIndex();
+ }
+
+ public int getStopBitsIndex() {
+ return block.getStopBitsIndex();
+ }
+
+}
diff --git a/remote/org.eclipse.remote.serial.ui/src/org/eclipse/remote/serial/ui/SerialPortConnectionBlock.java b/remote/org.eclipse.remote.serial.ui/src/org/eclipse/remote/serial/ui/SerialPortConnectionBlock.java
new file mode 100644
index 00000000000..cec2147fa18
--- /dev/null
+++ b/remote/org.eclipse.remote.serial.ui/src/org/eclipse/remote/serial/ui/SerialPortConnectionBlock.java
@@ -0,0 +1,254 @@
+/*******************************************************************************
+ * Copyright (c) 2016 QNX Software Systems, and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - initial contribution
+ *******************************************************************************/
+package org.eclipse.remote.serial.ui;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.cdt.serial.BaudRate;
+import org.eclipse.cdt.serial.ByteSize;
+import org.eclipse.cdt.serial.Parity;
+import org.eclipse.cdt.serial.SerialPort;
+import org.eclipse.cdt.serial.StopBits;
+import org.eclipse.remote.core.IRemoteConnectionWorkingCopy;
+import org.eclipse.remote.serial.core.ISerialPortService;
+import org.eclipse.remote.serial.internal.ui.Activator;
+import org.eclipse.remote.serial.internal.ui.Messages;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.KeyListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+
+public class SerialPortConnectionBlock {
+
+ private String name;
+ private String portName;
+ private int baudRateIndex;
+ private int byteSizeIndex;
+ private int parityIndex;
+ private int stopBitsIndex;
+
+ private String[] portNames;
+
+ private Text nameText;
+ private Combo portCombo;
+ private Combo baudRateCombo;
+ private Combo byteSizeCombo;
+ private Combo parityCombo;
+ private Combo stopBitsCombo;
+
+ private boolean isComplete;
+ private List<SerialBlockUpdateListener> listeners = new ArrayList<>();
+
+ /**
+ * Creates the UI elements for the SerialPortConnectionBlock
+ *
+ * @param comp - parent composite
+ * @param wc - an IRemoteConnectionWorkingCopy to populate the default values from. Can be null.
+ */
+ public void createBlock(Composite comp, IRemoteConnectionWorkingCopy wc) {
+
+ String name = "";
+ String connectionPortName = "";
+ int baudRateStringIndex = BaudRate.getStringIndex(BaudRate.getDefault());
+ int byteSizeStringIndex = ByteSize.getStringIndex(ByteSize.getDefault());
+ int parityStringIndex = Parity.getStringIndex(Parity.getDefault());
+ int stopBitsStringIndex = StopBits.getStringIndex(StopBits.getDefault());
+
+ if (wc != null) {
+ name = wc.getName();
+ connectionPortName = wc.getAttribute(ISerialPortService.PORT_NAME_ATTR);
+ baudRateStringIndex = Integer.parseInt(wc.getAttribute(ISerialPortService.BAUD_RATE_ATTR));
+ byteSizeStringIndex = Integer.parseInt(wc.getAttribute(ISerialPortService.BYTE_SIZE_ATTR));
+ parityStringIndex = Integer.parseInt(wc.getAttribute(ISerialPortService.PARITY_ATTR));
+ stopBitsStringIndex = Integer.parseInt(wc.getAttribute(ISerialPortService.STOP_BITS_ATTR));
+ }
+
+ Label nameLabel = new Label(comp, SWT.NONE);
+ nameLabel.setText(Messages.NewSerialPortConnectionWizardPage_NameLabel);
+
+ nameText = new Text(comp, SWT.BORDER | SWT.SINGLE);
+ nameText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ nameText.setText(name); //$NON-NLS-1$
+ nameText.addKeyListener(new KeyListener() {
+ @Override
+ public void keyReleased(KeyEvent e) {
+ updateStatus();
+ }
+
+ @Override
+ public void keyPressed(KeyEvent e) {
+ }
+ });
+
+ Label portLabel = new Label(comp, SWT.NONE);
+ portLabel.setText(Messages.NewSerialPortConnectionWizardPage_PortLabel);
+
+ portCombo = new Combo(comp, SWT.READ_ONLY);
+ portCombo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ try {
+ portNames = SerialPort.list();
+ } catch (IOException e) {
+ Activator.log(e);
+ }
+ int index = 0;
+ int portNameIndex = 0;
+ for (String portName : portNames) {
+ portCombo.add(portName);
+ if (portName.equals(connectionPortName))
+ portNameIndex = index;
+ index++;
+ }
+ portCombo.select(portNameIndex);
+ portCombo.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ updateStatus();
+ }
+ });
+
+ Label baudRateLabel = new Label(comp, SWT.NONE);
+ baudRateLabel.setText(Messages.NewSerialPortConnectionWizardPage_BaudRateLabel);
+
+ baudRateCombo = new Combo(comp, SWT.READ_ONLY);
+ baudRateCombo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ for (String baudRateStr : BaudRate.getStrings()) {
+ baudRateCombo.add(baudRateStr);
+ }
+
+ baudRateCombo.select(baudRateStringIndex);
+ baudRateCombo.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ updateStatus();
+ }
+ });
+
+ Label byteSizeLabel = new Label(comp, SWT.NONE);
+ byteSizeLabel.setText(Messages.NewSerialPortConnectionWizardPage_ByteSizeLabel);
+
+ byteSizeCombo = new Combo(comp, SWT.READ_ONLY);
+ byteSizeCombo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ for (String byteSizeStr : ByteSize.getStrings()) {
+ byteSizeCombo.add(byteSizeStr);
+ }
+ byteSizeCombo.select(byteSizeStringIndex);
+ byteSizeCombo.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ updateStatus();
+ }
+ });
+
+ Label parityLabel = new Label(comp, SWT.NONE);
+ parityLabel.setText(Messages.NewSerialPortConnectionWizardPage_ParityLabel);
+
+ parityCombo = new Combo(comp, SWT.READ_ONLY);
+ parityCombo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ for (String parityStr : Parity.getStrings()) {
+ parityCombo.add(parityStr);
+ }
+ parityCombo.select(parityStringIndex);
+ parityCombo.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ updateStatus();
+ }
+ });
+
+ Label stopBitsLabel = new Label(comp, SWT.NONE);
+ stopBitsLabel.setText(Messages.NewSerialPortConnectionWizardPage_StopBitsLabel);
+
+ stopBitsCombo = new Combo(comp, SWT.READ_ONLY);
+ stopBitsCombo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ for (String stopBitsStr : StopBits.getStrings()) {
+ stopBitsCombo.add(stopBitsStr);
+ }
+ stopBitsCombo.select(stopBitsStringIndex);
+ stopBitsCombo.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ updateStatus();
+ }
+ });
+
+ updateStatus();
+ }
+
+ private void updateStatus() {
+ name = nameText.getText();
+
+ int portIndex = portCombo.getSelectionIndex();
+ portName = portIndex < 0 ? null : portNames[portIndex];
+
+ baudRateIndex = baudRateCombo.getSelectionIndex();
+ byteSizeIndex = byteSizeCombo.getSelectionIndex();
+ parityIndex = parityCombo.getSelectionIndex();
+ stopBitsIndex = stopBitsCombo.getSelectionIndex();
+
+ isComplete = (!name.isEmpty() && portName != null);
+
+ for (SerialBlockUpdateListener listener : listeners) {
+ listener.update();
+ }
+ }
+
+ public String getConnectionName() {
+ return name;
+ }
+
+ public String getPortName() {
+ return portName;
+ }
+
+ public int getBaudRateIndex() {
+ return baudRateIndex;
+ }
+
+ public int getByteSizeIndex() {
+ return byteSizeIndex;
+ }
+
+ public int getParityIndex() {
+ return parityIndex;
+ }
+
+ public int getStopBitsIndex() {
+ return stopBitsIndex;
+ }
+
+ public boolean isComplete() {
+ return isComplete;
+ }
+
+ public void addUpdateListener(SerialBlockUpdateListener listener) {
+ if (listener != null && !listeners.contains(listener))
+ listeners.add(listener);
+ }
+
+ public void removeUpdateListener(SerialBlockUpdateListener listener) {
+ listeners.remove(listener);
+ }
+
+ public abstract class SerialBlockUpdateListener {
+ public abstract void update();
+ }
+}
diff --git a/remote/org.eclipse.remote.serial.ui/src/org/eclipse/remote/serial/ui/SerialPortConnectionPropertyPage.java b/remote/org.eclipse.remote.serial.ui/src/org/eclipse/remote/serial/ui/SerialPortConnectionPropertyPage.java
new file mode 100644
index 00000000000..512d4d682e3
--- /dev/null
+++ b/remote/org.eclipse.remote.serial.ui/src/org/eclipse/remote/serial/ui/SerialPortConnectionPropertyPage.java
@@ -0,0 +1,84 @@
+/*******************************************************************************
+ * Copyright (c) 2016 QNX Software Systems, and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - initial contribution
+ *******************************************************************************/
+package org.eclipse.remote.serial.ui;
+
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteConnectionWorkingCopy;
+import org.eclipse.remote.core.exception.RemoteConnectionException;
+import org.eclipse.remote.serial.core.ISerialPortService;
+import org.eclipse.remote.serial.internal.ui.Activator;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.ui.IWorkbenchPropertyPage;
+import org.eclipse.ui.dialogs.PropertyPage;
+
+public class SerialPortConnectionPropertyPage extends PropertyPage implements IWorkbenchPropertyPage {
+
+ protected SerialPortConnectionBlock block;
+ protected IRemoteConnectionWorkingCopy workingCopy;
+
+ public SerialPortConnectionPropertyPage() {
+ super();
+ block = new SerialPortConnectionBlock();
+ }
+
+ @Override
+ protected Control createContents(Composite parent) {
+ Composite comp = new Composite(parent, SWT.NONE);
+ comp.setLayout(new GridLayout(2, false));
+
+ block.addUpdateListener(block.new SerialBlockUpdateListener() {
+
+ @Override
+ public void update() {
+ setValid(block.isComplete());
+ }
+
+ });
+
+ IRemoteConnection remoteConnection = getElement().getAdapter(IRemoteConnection.class);
+ if (remoteConnection != null)
+ workingCopy = remoteConnection.getWorkingCopy();
+ else
+ workingCopy = null;
+
+ block.createBlock(comp, workingCopy);
+ return comp;
+ }
+
+ @Override
+ public boolean performOk() {
+ if (workingCopy != null) {
+
+ workingCopy.setName(block.getConnectionName());
+ workingCopy.setAttribute(ISerialPortService.PORT_NAME_ATTR, block.getPortName());
+ workingCopy.setAttribute(ISerialPortService.BAUD_RATE_ATTR, Integer.toString(block.getBaudRateIndex()));
+ workingCopy.setAttribute(ISerialPortService.BYTE_SIZE_ATTR, Integer.toString(block.getByteSizeIndex()));
+ workingCopy.setAttribute(ISerialPortService.PARITY_ATTR, Integer.toString(block.getParityIndex()));
+ workingCopy.setAttribute(ISerialPortService.STOP_BITS_ATTR, Integer.toString(block.getStopBitsIndex()));
+ try {
+ workingCopy.save();
+ } catch (RemoteConnectionException e) {
+ Activator.log(e);
+ return false;
+ }
+
+ }
+
+ return true;
+ }
+
+}
diff --git a/remote/org.eclipse.remote.telnet-feature/.project b/remote/org.eclipse.remote.telnet-feature/.project
new file mode 100644
index 00000000000..3951b60a149
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet-feature/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.remote.telnet-feature</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.pde.FeatureBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.FeatureNature</nature>
+ </natures>
+</projectDescription>
diff --git a/remote/org.eclipse.remote.telnet-feature/.settings/org.eclipse.core.resources.prefs b/remote/org.eclipse.remote.telnet-feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet-feature/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/remote/org.eclipse.remote.telnet-feature/build.properties b/remote/org.eclipse.remote.telnet-feature/build.properties
new file mode 100644
index 00000000000..adcc4e399d4
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet-feature/build.properties
@@ -0,0 +1,4 @@
+bin.includes = feature.xml,\
+ feature.properties,\
+ epl-v20.html,\
+ eclipse_update_120.jpg
diff --git a/remote/org.eclipse.remote.telnet-feature/eclipse_update_120.jpg b/remote/org.eclipse.remote.telnet-feature/eclipse_update_120.jpg
new file mode 100644
index 00000000000..bfdf708ad61
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet-feature/eclipse_update_120.jpg
Binary files differ
diff --git a/remote/org.eclipse.remote.telnet-feature/epl-v20.html b/remote/org.eclipse.remote.telnet-feature/epl-v20.html
new file mode 100644
index 00000000000..008b8018db8
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet-feature/epl-v20.html
@@ -0,0 +1,189 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+ <h2>Eclipse Foundation Software User Agreement</h2>
+ <p>November 22, 2017</p>
+
+ <h3>Usage Of Content</h3>
+
+ <p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION,
+ INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+ (COLLECTIVELY &quot;CONTENT&quot;). USE OF THE CONTENT IS GOVERNED BY
+ THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+ CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+ BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS
+ GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY
+ APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+ BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS
+ AGREEMENT AND THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+ AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT
+ USE THE CONTENT.</p>
+
+ <h3>Applicable Licenses</h3>
+
+ <p>
+ Unless otherwise indicated, all Content made available by the Eclipse
+ Foundation is provided to you under the terms and conditions of the
+ Eclipse Public License Version 2.0 (&quot;EPL&quot;). A copy of the
+ EPL is provided with this Content and is also available at <a
+ href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>Content includes, but is not limited to, source code, object
+ code, documentation and other files maintained in the Eclipse
+ Foundation source code repository (&quot;Repository&quot;) in software
+ modules (&quot;Modules&quot;) and made available as downloadable
+ archives (&quot;Downloads&quot;).</p>
+
+ <ul>
+ <li>Content may be structured and packaged into modules to
+ facilitate delivering, extending, and upgrading the Content. Typical
+ modules may include plug-ins (&quot;Plug-ins&quot;), plug-in
+ fragments (&quot;Fragments&quot;), and features
+ (&quot;Features&quot;).</li>
+ <li>Each Plug-in or Fragment may be packaged as a sub-directory
+ or JAR (Java&trade; ARchive) in a directory named
+ &quot;plugins&quot;.</li>
+ <li>A Feature is a bundle of one or more Plug-ins and/or
+ Fragments and associated material. Each Feature may be packaged as a
+ sub-directory in a directory named &quot;features&quot;. Within a
+ Feature, files named &quot;feature.xml&quot; may contain a list of
+ the names and version numbers of the Plug-ins and/or Fragments
+ associated with that Feature.</li>
+ <li>Features may also include other Features (&quot;Included
+ Features&quot;). Within a Feature, files named
+ &quot;feature.xml&quot; may contain a list of the names and version
+ numbers of Included Features.</li>
+ </ul>
+
+ <p>The terms and conditions governing Plug-ins and Fragments should
+ be contained in files named &quot;about.html&quot;
+ (&quot;Abouts&quot;). The terms and conditions governing Features and
+ Included Features should be contained in files named
+ &quot;license.html&quot; (&quot;Feature Licenses&quot;). Abouts and
+ Feature Licenses may be located in any directory of a Download or
+ Module including, but not limited to the following locations:</p>
+
+ <ul>
+ <li>The top-level (root) directory</li>
+ <li>Plug-in and Fragment directories</li>
+ <li>Inside Plug-ins and Fragments packaged as JARs</li>
+ <li>Sub-directories of the directory named &quot;src&quot; of
+ certain Plug-ins</li>
+ <li>Feature directories</li>
+ </ul>
+
+ <p>Note: if a Feature made available by the Eclipse Foundation is
+ installed using the Provisioning Technology (as defined below), you
+ must agree to a license (&quot;Feature Update License&quot;) during
+ the installation process. If the Feature contains Included Features,
+ the Feature Update License should either provide you with the terms
+ and conditions governing the Included Features or inform you where you
+ can locate them. Feature Update Licenses may be found in the
+ &quot;license&quot; property of files named
+ &quot;feature.properties&quot; found within a Feature. Such Abouts,
+ Feature Licenses, and Feature Update Licenses contain the terms and
+ conditions (or references to such terms and conditions) that govern
+ your use of the associated Content in that directory.</p>
+
+ <p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY
+ REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND
+ CONDITIONS. SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT
+ ARE NOT LIMITED TO):</p>
+
+ <ul>
+ <li>Eclipse Public License Version 1.0 (available at <a
+ href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>)
+ </li>
+ <li>Eclipse Distribution License Version 1.0 (available at <a
+ href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)
+ </li>
+ <li>Common Public License Version 1.0 (available at <a
+ href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)
+ </li>
+ <li>Apache Software License 1.1 (available at <a
+ href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)
+ </li>
+ <li>Apache Software License 2.0 (available at <a
+ href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)
+ </li>
+ <li>Mozilla Public License Version 1.1 (available at <a
+ href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)
+ </li>
+ </ul>
+
+ <p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND
+ CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License,
+ or Feature Update License is provided, please contact the Eclipse
+ Foundation to determine what terms and conditions govern that
+ particular Content.</p>
+
+
+ <h3>Use of Provisioning Technology</h3>
+
+ <p>
+ The Eclipse Foundation makes available provisioning software, examples
+ of which include, but are not limited to, p2 and the Eclipse Update
+ Manager (&quot;Provisioning Technology&quot;) for the purpose of
+ allowing users to install software, documentation, information and/or
+ other materials (collectively &quot;Installable Software&quot;). This
+ capability is provided with the intent of allowing such users to
+ install, extend and update Eclipse-based products. Information about
+ packaging Installable Software is available at <a
+ href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+ (&quot;Specification&quot;).
+ </p>
+
+ <p>You may use Provisioning Technology to allow other parties to
+ install Installable Software. You shall be responsible for enabling
+ the applicable license agreements relating to the Installable Software
+ to be presented to, and accepted by, the users of the Provisioning
+ Technology in accordance with the Specification. By using Provisioning
+ Technology in such a manner and making it available in accordance with
+ the Specification, you further acknowledge your agreement to, and the
+ acquisition of all necessary rights to permit the following:</p>
+
+ <ol>
+ <li>A series of actions may occur (&quot;Provisioning
+ Process&quot;) in which a user may execute the Provisioning
+ Technology on a machine (&quot;Target Machine&quot;) with the intent
+ of installing, extending or updating the functionality of an
+ Eclipse-based product.</li>
+ <li>During the Provisioning Process, the Provisioning Technology
+ may cause third party Installable Software or a portion thereof to be
+ accessed and copied to the Target Machine.</li>
+ <li>Pursuant to the Specification, you will provide to the user
+ the terms and conditions that govern the use of the Installable
+ Software (&quot;Installable Software Agreement&quot;) and such
+ Installable Software Agreement shall be accessed from the Target
+ Machine in accordance with the Specification. Such Installable
+ Software Agreement must inform the user of the terms and conditions
+ that govern the Installable Software and must solicit acceptance by
+ the end user in the manner prescribed in such Installable Software
+ Agreement. Upon such indication of agreement by the user, the
+ provisioning Technology will complete installation of the Installable
+ Software.</li>
+ </ol>
+
+ <h3>Cryptography</h3>
+
+ <p>Content may contain encryption software. The country in which
+ you are currently may have restrictions on the import, possession, and
+ use, and/or re-export to another country, of encryption software.
+ BEFORE using any encryption software, please check the country's laws,
+ regulations and policies concerning the import, possession, or use,
+ and re-export of encryption software, to see if this is permitted.</p>
+
+ <p>
+ <small>Java and all Java-based trademarks are trademarks of
+ Oracle Corporation in the United States, other countries, or both.</small>
+ </p>
+</body>
+</html>
diff --git a/remote/org.eclipse.remote.telnet-feature/feature.properties b/remote/org.eclipse.remote.telnet-feature/feature.properties
new file mode 100644
index 00000000000..bf96c9d224c
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet-feature/feature.properties
@@ -0,0 +1,27 @@
+#################################################################################
+# Copyright (c) 2015 IBM Corporation.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#################################################################################
+
+# "featureName" property - name of the feature
+featureName=Telnet Remote Services
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse CDT
+
+# "description" property - description of the feature
+description=Provides telnet services for the remote framework
+
+# copyright
+copyright=\
+Copyright (c) 2015 IBM Corporation.\n\
+This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License 2.0\n\
+which accompanies this distribution, and is available at\n\
+https://www.eclipse.org/legal/epl-2.0/\n
diff --git a/remote/org.eclipse.remote.telnet-feature/feature.xml b/remote/org.eclipse.remote.telnet-feature/feature.xml
new file mode 100644
index 00000000000..f0cd9f55e97
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet-feature/feature.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+ id="org.eclipse.remote.telnet"
+ label="%featureName"
+ version="10.7.0.qualifier"
+ provider-name="%providerName"
+ plugin="org.eclipse.remote.telnet.ui"
+ license-feature="org.eclipse.license"
+ license-feature-version="0.0.0">
+
+ <description>
+ %description
+ </description>
+
+ <copyright>
+ %copyright
+ </copyright>
+
+ <license url="%licenseURL">
+ %license
+ </license>
+
+ <plugin
+ id="org.eclipse.remote.telnet.core"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.remote.telnet.ui"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+</feature>
diff --git a/remote/org.eclipse.remote.telnet.core.tests/.classpath b/remote/org.eclipse.remote.telnet.core.tests/.classpath
new file mode 100644
index 00000000000..a42a828e04a
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.core.tests/.classpath
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src">
+ <attributes>
+ <attribute name="test" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/remote/org.eclipse.remote.telnet.core.tests/.project b/remote/org.eclipse.remote.telnet.core.tests/.project
new file mode 100644
index 00000000000..5a2fef9d7b9
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.core.tests/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.remote.telnet.core.tests</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/remote/org.eclipse.remote.telnet.core.tests/.settings/org.eclipse.core.resources.prefs b/remote/org.eclipse.remote.telnet.core.tests/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.core.tests/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/remote/org.eclipse.remote.telnet.core.tests/.settings/org.eclipse.jdt.core.prefs b/remote/org.eclipse.remote.telnet.core.tests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..5b1c443114d
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.core.tests/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=ignore
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
+org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=ignore
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/remote/org.eclipse.remote.telnet.core.tests/.settings/org.eclipse.jdt.launching.prefs b/remote/org.eclipse.remote.telnet.core.tests/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 00000000000..f8a131b56e0
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.core.tests/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_COMPILER_COMPLIANCE_DOES_NOT_MATCH_JRE=warning
+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=warning
diff --git a/remote/org.eclipse.remote.telnet.core.tests/.settings/org.eclipse.jdt.ui.prefs b/remote/org.eclipse.remote.telnet.core.tests/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.core.tests/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/remote/org.eclipse.remote.telnet.core.tests/.settings/org.eclipse.pde.api.tools.prefs b/remote/org.eclipse.remote.telnet.core.tests/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 00000000000..ec9fbf321d0
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.core.tests/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,184 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITH_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_FIELD=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERCLASS_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_CHANGED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENTS=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETERS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Error
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Warning
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+MISSING_EE_DESCRIPTIONS=Warning
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=false
+changed_execution_env=Error
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+incompatible_api_component_version_report_major_without_breaking_change=Warning
+incompatible_api_component_version_report_minor_without_api_change=Warning
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/remote/org.eclipse.remote.telnet.core.tests/.settings/org.eclipse.pde.prefs b/remote/org.eclipse.remote.telnet.core.tests/.settings/org.eclipse.pde.prefs
new file mode 100644
index 00000000000..51a63ec9988
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.core.tests/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,35 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=2
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=2
+compilers.p.missing-version-export-package=2
+compilers.p.missing-version-import-package=2
+compilers.p.missing-version-require-bundle=2
+compilers.p.no-required-att=0
+compilers.p.no.automatic.module=1
+compilers.p.not-externalized-att=2
+compilers.p.service.component.without.lazyactivation=1
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/remote/org.eclipse.remote.telnet.core.tests/META-INF/MANIFEST.MF b/remote/org.eclipse.remote.telnet.core.tests/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..0d695cf1c4a
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.core.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,13 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Remote Telnet tests
+Bundle-SymbolicName: org.eclipse.remote.telnet.core.tests
+Bundle-Version: 1.0.100.qualifier
+Bundle-Activator: org.eclipse.remote.telnet.core.tests.Activator
+Bundle-Vendor: Eclipse PTP
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.remote.telnet.core;bundle-version="1.0.0",
+ org.junit;bundle-version="4.12.0",
+ org.eclipse.remote.core;bundle-version="2.0.0"
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Bundle-ActivationPolicy: lazy
diff --git a/remote/org.eclipse.remote.telnet.core.tests/about.html b/remote/org.eclipse.remote.telnet.core.tests/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.core.tests/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/remote/org.eclipse.remote.telnet.core.tests/build.properties b/remote/org.eclipse.remote.telnet.core.tests/build.properties
new file mode 100644
index 00000000000..67af4196ea0
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.core.tests/build.properties
@@ -0,0 +1,6 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ about.html,\
+ .
+src.includes = about.html
diff --git a/remote/org.eclipse.remote.telnet.core.tests/src/org/eclipse/remote/telnet/core/tests/Activator.java b/remote/org.eclipse.remote.telnet.core.tests/src/org/eclipse/remote/telnet/core/tests/Activator.java
new file mode 100644
index 00000000000..464be259a87
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.core.tests/src/org/eclipse/remote/telnet/core/tests/Activator.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * Copyright (c) 2015 IBM Corporation, and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wainer dos Santos Moschetta (IBM Corp.) - initial contribution
+ *******************************************************************************/
+package org.eclipse.remote.telnet.core.tests;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+
+public class Activator implements BundleActivator {
+
+ private static BundleContext context;
+
+ static BundleContext getContext() {
+ return context;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
+ */
+ @Override
+ public void start(BundleContext bundleContext) throws Exception {
+ Activator.context = bundleContext;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
+ */
+ @Override
+ public void stop(BundleContext bundleContext) throws Exception {
+ Activator.context = null;
+ }
+
+ public static <T> T getService(Class<T> service) {
+ ServiceReference<T> ref = context.getServiceReference(service);
+ return ref != null ? context.getService(ref) : null;
+ }
+}
diff --git a/remote/org.eclipse.remote.telnet.core.tests/src/org/eclipse/remote/telnet/core/tests/TelnetConnectionTests.java b/remote/org.eclipse.remote.telnet.core.tests/src/org/eclipse/remote/telnet/core/tests/TelnetConnectionTests.java
new file mode 100644
index 00000000000..bdb2c8abb1d
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.core.tests/src/org/eclipse/remote/telnet/core/tests/TelnetConnectionTests.java
@@ -0,0 +1,171 @@
+/*******************************************************************************
+ * Copyright (c) 2015 IBM Corporation, and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wainer dos Santos Moschetta (IBM Corp.) - initial contribution
+ *******************************************************************************/
+package org.eclipse.remote.telnet.core.tests;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteConnectionHostService;
+import org.eclipse.remote.core.IRemoteConnectionType;
+import org.eclipse.remote.core.IRemoteConnectionWorkingCopy;
+import org.eclipse.remote.core.IRemoteProcessBuilder;
+import org.eclipse.remote.core.IRemoteServicesManager;
+import org.eclipse.remote.core.exception.RemoteConnectionException;
+import org.eclipse.remote.telnet.core.TelnetCommandShell;
+import org.eclipse.remote.telnet.core.TelnetConnection;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+@RunWith(JUnit4.class)
+public class TelnetConnectionTests {
+
+ private static final String TELNET_CONN_TYPE_ID = "org.eclipse.remote.telnet.core.connectionType";
+ private static String hostname = "localhost";
+ private static String username = "test";
+ private static String password = "";
+ private static String TEST_CONN_NAME = "NewTelnetConnection";
+ private final String expected_connType_name = "Telnet";
+ private final int expected_telnet_default_port = 23;
+ private final int expected_telnet_default_timeout = 0;
+ private static TelnetConnection telnet;
+
+ @BeforeClass
+ public static void setup() {
+ String host = System.getenv("TEST_HOSTNAME");
+ if (host != null) {
+ hostname = host;
+ }
+ String user = System.getenv("TEST_USERNAME");
+ if (user != null) {
+ username = user;
+ }
+ String passwd = System.getenv("TEST_PASSWORD");
+ if (user != null) {
+ password = passwd;
+ }
+ IRemoteServicesManager services = Activator.getService(IRemoteServicesManager.class);
+ IRemoteConnectionType connType = services.getConnectionType(TELNET_CONN_TYPE_ID);
+ assertNotNull(connType);
+ IRemoteConnectionWorkingCopy workingCopy = null;
+ IRemoteConnection connection = null;
+ try {
+ workingCopy = connType.newConnection(TEST_CONN_NAME);
+ assertNotNull(workingCopy);
+ IRemoteConnectionHostService hostService = workingCopy.getService(IRemoteConnectionHostService.class);
+ hostService.setHostname(hostname);
+ connection = workingCopy.save();
+ assertNotNull(connection);
+ } catch (RemoteConnectionException e) {
+ fail("Failed to create a Telnet connection: " + e.getMessage());
+ }
+ telnet = connection.getService(TelnetConnection.class);
+ assertNotNull(telnet);
+ }
+
+ @Test
+ public void testTelnetConnection() throws RemoteConnectionException {
+ IRemoteConnectionType connType = telnet.getRemoteConnection().getConnectionType();
+ assertEquals("Connection type name", expected_connType_name, connType.getName());
+ assertEquals("Default Telnet over TCP port", expected_telnet_default_port, telnet.getPort());
+ assertEquals("Default connection timeout", expected_telnet_default_timeout, telnet.getTimeout());
+ telnet.open(new NullProgressMonitor());
+ assertTrue("Connection should be open", telnet.isOpen());
+ telnet.close();
+ assertTrue("Connection should be closed", !telnet.isOpen());
+ }
+
+ @Test
+ public void testTelnetCommandShell() {
+ try {
+ telnet.open(new NullProgressMonitor());
+ } catch (RemoteConnectionException e) {
+ e.printStackTrace();
+ fail("Failed to open telnet connection");
+ }
+ TelnetCommandShell commandShell = null;
+ try {
+ commandShell = (TelnetCommandShell) telnet.getCommandShell(IRemoteProcessBuilder.ALLOCATE_PTY);
+ } catch (IOException e) {
+ e.printStackTrace();
+ fail("Failed to get command shell");
+ }
+ try {
+ commandShell.connect();
+ } catch (RemoteConnectionException e) {
+ e.printStackTrace();
+ fail("Unabled to connect with command shell");
+ }
+ OutputStream os = commandShell.getOutputStream();
+ assertNotNull("Command shel output stream", os);
+ InputStream is = commandShell.getInputStream();
+ assertNotNull("Command shel input stream");
+ if (!username.isEmpty() && !password.isEmpty()) {
+ try {
+ // Assume that a login prompt appears
+ readPrompt(is);
+ os.write((username + "\r\n").getBytes());
+ readPrompt(is);
+ os.write((password + "\r\n").getBytes());
+ BufferedReader br = new BufferedReader(new InputStreamReader(is));
+ br.readLine();
+ } catch (IOException e) {
+ e.printStackTrace();
+ fail("Failed to log in");
+ }
+ }
+ }
+
+ @AfterClass
+ public static void tearDown() {
+ IRemoteServicesManager services = Activator.getService(IRemoteServicesManager.class);
+ IRemoteConnectionType connType = services.getConnectionType(TELNET_CONN_TYPE_ID);
+ try {
+ connType.removeConnection(telnet.getRemoteConnection());
+ IRemoteConnection conn = connType.getConnection(TEST_CONN_NAME);
+ assertTrue("Connection should had been deleted", conn == null);
+ } catch (RemoteConnectionException e) {
+ e.printStackTrace();
+ fail("Failed to delete the Telnet connection");
+ }
+ }
+
+ /*
+ * Consume characters until prompt delimite ":" has been found.
+ */
+ private void readPrompt(InputStream is) {
+ int v;
+ try {
+ v = is.read();
+ while ((v != -1) && (v != ':')) {
+ v = is.read();
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ fail("Failed to read prompt: " + e.getMessage());
+ }
+ }
+}
diff --git a/remote/org.eclipse.remote.telnet.core/.classpath b/remote/org.eclipse.remote.telnet.core/.classpath
new file mode 100644
index 00000000000..e801ebfb468
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.core/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/remote/org.eclipse.remote.telnet.core/.project b/remote/org.eclipse.remote.telnet.core/.project
new file mode 100644
index 00000000000..5ceada3a77e
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.core/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.remote.telnet.core</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+ </natures>
+</projectDescription>
diff --git a/remote/org.eclipse.remote.telnet.core/.settings/org.eclipse.core.resources.prefs b/remote/org.eclipse.remote.telnet.core/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.core/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/remote/org.eclipse.remote.telnet.core/.settings/org.eclipse.jdt.core.prefs b/remote/org.eclipse.remote.telnet.core/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..e3a8104f9ca
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.core/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/remote/org.eclipse.remote.telnet.core/.settings/org.eclipse.jdt.launching.prefs b/remote/org.eclipse.remote.telnet.core/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 00000000000..f8a131b56e0
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.core/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_COMPILER_COMPLIANCE_DOES_NOT_MATCH_JRE=warning
+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=warning
diff --git a/remote/org.eclipse.remote.telnet.core/.settings/org.eclipse.jdt.ui.prefs b/remote/org.eclipse.remote.telnet.core/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.core/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/remote/org.eclipse.remote.telnet.core/.settings/org.eclipse.pde.api.tools.prefs b/remote/org.eclipse.remote.telnet.core/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 00000000000..ec9fbf321d0
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.core/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,184 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITH_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_FIELD=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERCLASS_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_CHANGED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENTS=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETERS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Error
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Warning
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+MISSING_EE_DESCRIPTIONS=Warning
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=false
+changed_execution_env=Error
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+incompatible_api_component_version_report_major_without_breaking_change=Warning
+incompatible_api_component_version_report_minor_without_api_change=Warning
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/remote/org.eclipse.remote.telnet.core/.settings/org.eclipse.pde.prefs b/remote/org.eclipse.remote.telnet.core/.settings/org.eclipse.pde.prefs
new file mode 100644
index 00000000000..d2dc703ba9e
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.core/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,35 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=2
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=2
+compilers.p.missing-version-export-package=2
+compilers.p.missing-version-import-package=2
+compilers.p.missing-version-require-bundle=2
+compilers.p.no-required-att=0
+compilers.p.no.automatic.module=1
+compilers.p.not-externalized-att=1
+compilers.p.service.component.without.lazyactivation=1
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/remote/org.eclipse.remote.telnet.core/META-INF/MANIFEST.MF b/remote/org.eclipse.remote.telnet.core/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..2dd175879fb
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.core/META-INF/MANIFEST.MF
@@ -0,0 +1,18 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %bundleName
+Bundle-SymbolicName: org.eclipse.remote.telnet.core;singleton:=true
+Bundle-Version: 1.1.100.qualifier
+Bundle-Activator: org.eclipse.remote.telnet.internal.core.Activator
+Bundle-Vendor: %providerName
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.remote.telnet.core,
+ org.eclipse.remote.telnet.internal.core;x-internal:=true
+Bundle-Localization: plugin
+Import-Package: org.eclipse.core.runtime,
+ org.eclipse.osgi.service.debug;version="1.2.0",
+ org.eclipse.osgi.util,
+ org.eclipse.remote.core,
+ org.eclipse.remote.core.exception,
+ org.osgi.framework
diff --git a/remote/org.eclipse.remote.telnet.core/about.html b/remote/org.eclipse.remote.telnet.core/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.core/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/remote/org.eclipse.remote.telnet.core/about.ini b/remote/org.eclipse.remote.telnet.core/about.ini
new file mode 100644
index 00000000000..5bd1defab8b
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.core/about.ini
@@ -0,0 +1,27 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%blurb
+
+# Property "windowImage" contains path to window icon (16x16)
+# needed for primary features only
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=ptp_logo_icon32.png
+
+# Property "aboutImage" contains path to product image (500x330 or 115x164)
+# needed for primary features only
+
+# Property "appName" contains name of the application (not translated)
+# needed for primary features only
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+# optional
+
+# Property "welcomePerspective" contains the id of the perspective in which the
+# welcome page is to be opened.
+# optional
diff --git a/remote/org.eclipse.remote.telnet.core/about.mappings b/remote/org.eclipse.remote.telnet.core/about.mappings
new file mode 100644
index 00000000000..bddaab43109
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.core/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=@build@ \ No newline at end of file
diff --git a/remote/org.eclipse.remote.telnet.core/about.properties b/remote/org.eclipse.remote.telnet.core/about.properties
new file mode 100644
index 00000000000..781e4e7e3a3
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.core/about.properties
@@ -0,0 +1,25 @@
+###############################################################################
+# Copyright (c) 2015 QNX Software Systems and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# QNX Software Systems - initial API and implementation
+###############################################################################
+
+# NLS_MESSAGEFORMAT_NONE
+# NLS_ENCODING=UTF-8
+
+blurb=Telnet Remote Services\n\
+\n\
+Version: {featureVersion}\n\
+Build id: {0}\n\
+\n\
+Copyright (c) 2015 IBM Corporation, and others.\n\
+Visit http://www.eclipse.org/ptp\n
+
diff --git a/remote/org.eclipse.remote.telnet.core/build.properties b/remote/org.eclipse.remote.telnet.core/build.properties
new file mode 100644
index 00000000000..d213cef4be1
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.core/build.properties
@@ -0,0 +1,12 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ about.html,\
+ about.ini,\
+ about.mappings,\
+ about.properties,\
+ ptp_logo_icon32.png,\
+ plugin.properties
+src.includes = about.html
diff --git a/remote/org.eclipse.remote.telnet.core/plugin.properties b/remote/org.eclipse.remote.telnet.core/plugin.properties
new file mode 100644
index 00000000000..a8a8ec291cb
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.core/plugin.properties
@@ -0,0 +1,2 @@
+bundleName = Remote Serial Port Services
+providerName = Eclipse PTP
diff --git a/remote/org.eclipse.remote.telnet.core/plugin.xml b/remote/org.eclipse.remote.telnet.core/plugin.xml
new file mode 100644
index 00000000000..0d03a26753a
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.core/plugin.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension
+ point="org.eclipse.remote.core.remoteServices">
+ <connectionType
+ id="org.eclipse.remote.telnet.core.connectionType"
+ name="Telnet">
+ </connectionType>
+ <connectionService
+ connectionTypeId="org.eclipse.remote.telnet.core.connectionType"
+ factory="org.eclipse.remote.telnet.core.TelnetConnection$Factory"
+ service="org.eclipse.remote.core.IRemoteConnectionControlService">
+ </connectionService>
+ <connectionService
+ connectionTypeId="org.eclipse.remote.telnet.core.connectionType"
+ factory="org.eclipse.remote.telnet.core.TelnetConnection$Factory"
+ service="org.eclipse.remote.core.IRemoteConnectionHostService">
+ </connectionService>
+ <connectionService
+ connectionTypeId="org.eclipse.remote.telnet.core.connectionType"
+ factory="org.eclipse.remote.telnet.core.TelnetConnection$Factory"
+ service="org.eclipse.remote.core.IRemoteCommandShellService">
+ </connectionService>
+ <connectionService
+ connectionTypeId="org.eclipse.remote.telnet.core.connectionType"
+ factory="org.eclipse.remote.telnet.core.TelnetConnection$Factory"
+ service="org.eclipse.remote.telnet.core.TelnetConnection">
+ </connectionService>
+ </extension>
+
+</plugin>
diff --git a/remote/org.eclipse.remote.telnet.core/ptp_logo_icon32.png b/remote/org.eclipse.remote.telnet.core/ptp_logo_icon32.png
new file mode 100644
index 00000000000..e8ec57270f3
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.core/ptp_logo_icon32.png
Binary files differ
diff --git a/remote/org.eclipse.remote.telnet.core/src/org/eclipse/remote/telnet/core/TelnetCodes.java b/remote/org.eclipse.remote.telnet.core/src/org/eclipse/remote/telnet/core/TelnetCodes.java
new file mode 100644
index 00000000000..a22f6148b00
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.core/src/org/eclipse/remote/telnet/core/TelnetCodes.java
@@ -0,0 +1,96 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2015 Wind River Systems, Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Fran Litterio (Wind River) - initial API and implementation
+ * Helmut Haigermoser (Wind River) - repackaged
+ * Ted Williams (Wind River) - repackaged into org.eclipse namespace
+ * Michael Scharf (Wind River) - split into core, view and connector plugins
+ * Martin Oberhuber (Wind River) - fixed copyright headers and beautified
+ * Greg Watson (IBM) - Adapted for org.eclipse.remote
+ *******************************************************************************/
+package org.eclipse.remote.telnet.core;
+
+/**
+ * This interface defines symbolic constants for numeric TELNET protocol command and
+ * option codes. Any class that needs to use these constants must implement this
+ * interface. The meanings of these constants are defined in the various TELNET RFCs
+ * (RFC 854 to RFC 861, and others).
+ */
+interface TelnetCodes {
+ /** Command code: Subnegotiation End. */
+ static final byte TELNET_SE = (byte) 240;
+
+ /** Command code: No-op. */
+ static final byte TELNET_NOP = (byte) 241;
+
+ /** Command code: Data Mark. */
+ static final byte TELNET_DM = (byte) 242;
+
+ /** Command code: Break. */
+ static final byte TELNET_BREAK = (byte) 243;
+
+ /** Command code: Interrupt Process. */
+ static final byte TELNET_IP = (byte) 244;
+
+ /** Command code: Abort Output. */
+ static final byte TELNET_AO = (byte) 245;
+
+ /** Command code: Are You There. */
+ static final byte TELNET_AYT = (byte) 246;
+
+ /** Command code: Erase Character. */
+ static final byte TELNET_EC = (byte) 247;
+
+ /** Command code: Erase Line. */
+ static final byte TELNET_EL = (byte) 248;
+
+ /** Command code: Go Ahead. */
+ static final byte TELNET_GA = (byte) 249;
+
+ /** Command code: Subnegotiation Begin. */
+ static final byte TELNET_SB = (byte) 250;
+
+ /** Command code: Will. */
+ static final byte TELNET_WILL = (byte) 251;
+
+ /** Command code: Won't. */
+ static final byte TELNET_WONT = (byte) 252;
+
+ /** Command code: Do. */
+ static final byte TELNET_DO = (byte) 253;
+
+ /** Command code: Don't. */
+ static final byte TELNET_DONT = (byte) 254;
+
+ /** Command code: Interpret As Command. */
+ static final byte TELNET_IAC = (byte) 255;
+
+ /** Command code: IS. */
+ static final byte TELNET_IS = 0;
+
+ /** Command code: SEND. */
+ static final byte TELNET_SEND = 1;
+
+ /** Option code: Transmit Binary option. */
+ static final byte TELNET_OPTION_TRANSMIT_BINARY = 0;
+
+ /** Option code: Echo option. */
+ static final byte TELNET_OPTION_ECHO = 1;
+
+ /** Option code: Suppress Go Ahead option. */
+ static final byte TELNET_OPTION_SUPPRESS_GA = 3;
+
+ /** Option code: Terminal Type */
+ static final byte TELNET_OPTION_TERMINAL_TYPE = 24;
+
+ /** Option code: Negotitate About Window Size (NAWS) */
+ static final byte TELNET_OPTION_NAWS = 31;
+}
diff --git a/remote/org.eclipse.remote.telnet.core/src/org/eclipse/remote/telnet/core/TelnetCommandShell.java b/remote/org.eclipse.remote.telnet.core/src/org/eclipse/remote/telnet/core/TelnetCommandShell.java
new file mode 100644
index 00000000000..b0341986848
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.core/src/org/eclipse/remote/telnet/core/TelnetCommandShell.java
@@ -0,0 +1,192 @@
+/*******************************************************************************
+ * Copyright (c) 2015 IBM Corporation, and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - initial contribution
+ *******************************************************************************/
+package org.eclipse.remote.telnet.core;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.PipedInputStream;
+import java.io.PipedOutputStream;
+import java.net.ConnectException;
+import java.net.InetSocketAddress;
+import java.net.Socket;
+import java.net.SocketTimeoutException;
+import java.net.UnknownHostException;
+
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteConnectionHostService;
+import org.eclipse.remote.core.IRemoteProcess;
+import org.eclipse.remote.core.IRemoteProcessBuilder;
+import org.eclipse.remote.core.exception.RemoteConnectionException;
+import org.eclipse.remote.telnet.internal.core.Logger;
+import org.eclipse.remote.telnet.internal.core.messages.Messages;
+
+public class TelnetCommandShell implements IRemoteProcess {
+ private final TelnetConnection telnetConnection;
+ private TelnetProtocol protocol;
+
+ public TelnetCommandShell(IRemoteConnection remoteConnection, TelnetConnection telnetConnection) {
+ this.telnetConnection = telnetConnection;
+ assert (remoteConnection.getService(IRemoteConnectionHostService.class) != null);
+ }
+
+ @Override
+ public void destroy() {
+ if (protocol != null) {
+ protocol.interrupt();
+ }
+ }
+
+ @Override
+ public int exitValue() {
+ return 0;
+ }
+
+ @Override
+ public InputStream getErrorStream() {
+ return null;
+ }
+
+ @Override
+ public InputStream getInputStream() {
+ if (protocol != null) {
+ PipedOutputStream pipedOutput = new PipedOutputStream();
+ protocol.setClientOutputStream(pipedOutput);
+ try {
+ return new PipedInputStream(pipedOutput);
+ } catch (IOException e) {
+ return null;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public OutputStream getOutputStream() {
+ if (protocol != null) {
+ return protocol.getOutputStream();
+ }
+ return null;
+ }
+
+ @Override
+ public int waitFor() throws InterruptedException {
+ if (protocol != null && protocol.isConnected()) {
+ wait();
+ }
+ return 0;
+ }
+
+ @Override
+ public boolean isCompleted() {
+ return protocol == null || !protocol.isAlive();
+ }
+
+ @Override
+ public IRemoteConnection getRemoteConnection() {
+ return telnetConnection.getRemoteConnection();
+ }
+
+ @Override
+ public <T extends Service> T getService(Class<T> service) {
+ return null;
+ }
+
+ @Override
+ public <T extends Service> boolean hasService(Class<T> service) {
+ return false;
+ }
+
+ @Override
+ public IRemoteProcessBuilder getProcessBuilder() {
+ return null;
+ }
+
+ public void connect() throws RemoteConnectionException {
+ IRemoteConnectionHostService hostSvc = telnetConnection.getRemoteConnection()
+ .getService(IRemoteConnectionHostService.class);
+
+ // Retry the connect after a little pause in case the
+ // remote telnet server isn't ready. ConnectExceptions might
+ // happen if the telnet server process did not initialized itself.
+ // This is seen especially if the telnet server is a process
+ // providing it's input and output via a built in telnet server.
+ int remaining = 10;
+
+ while (remaining >= 0) {
+ // Pause before we re-try if the remaining tries are less than the initial value
+ if (remaining < 10) {
+ try {
+ Thread.sleep(500);
+ } catch (InterruptedException e) {
+ /* ignored on purpose */ }
+ }
+
+ try {
+ int nTimeout = hostSvc.getTimeout() * 1000;
+ String strHost = hostSvc.getHostname();
+ int nPort = hostSvc.getPort();
+ InetSocketAddress address = new InetSocketAddress(strHost, nPort);
+ Socket socket = new Socket();
+
+ socket.connect(address, nTimeout);
+
+ // If we get to this point, the connect succeeded and we will
+ // force the remaining counter to be 0.
+ remaining = 0;
+
+ // This next call causes reads on the socket to see TCP urgent data
+ // inline with the rest of the non-urgent data. Without this call, TCP
+ // urgent data is silently dropped by Java. This is required for
+ // TELNET support, because when the TELNET server sends "IAC DM", the
+ // IAC byte is TCP urgent data. If urgent data is silently dropped, we
+ // only see the DM, which looks like an ISO Latin-1 '�' character.
+
+ socket.setOOBInline(true);
+ socket.setKeepAlive(true);
+
+ protocol = new TelnetProtocol(socket, this);
+ protocol.start();
+ } catch (UnknownHostException ex) {
+ // No re-try in case of UnknownHostException, there is no indication that
+ // the DNS will fix itself
+ throw new RemoteConnectionException(Messages.TelnetCommandShell_0 + ex.getMessage());
+ } catch (SocketTimeoutException socketTimeoutException) {
+ // Time out occurred. No re-try in this case either. Time out can
+ // be increased by the user. Multiplying the timeout with the remaining
+ // counter is not desired.
+ throw new RemoteConnectionException(socketTimeoutException.getMessage());
+ } catch (ConnectException connectException) {
+ // In case of a ConnectException, do a re-try. The server could have been
+ // simply not ready yet and the worker would give up to early. If the terminal
+ // control is already closed (disconnected), don't print "Connection refused" errors
+ if (remaining == 0) {
+ throw new RemoteConnectionException(connectException.getMessage());
+ }
+ } catch (Exception exception) {
+ // Any other exception on connect. No re-try in this case either
+ // Log the exception
+ Logger.logException(exception);
+ // And signal failed
+ throw new RemoteConnectionException(exception.getMessage());
+ } finally {
+ remaining--;
+ }
+ }
+ }
+
+ protected void terminated() {
+ telnetConnection.terminated(this);
+ }
+}
diff --git a/remote/org.eclipse.remote.telnet.core/src/org/eclipse/remote/telnet/core/TelnetConnection.java b/remote/org.eclipse.remote.telnet.core/src/org/eclipse/remote/telnet/core/TelnetConnection.java
new file mode 100644
index 00000000000..7b1e1e2939a
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.core/src/org/eclipse/remote/telnet/core/TelnetConnection.java
@@ -0,0 +1,230 @@
+/*******************************************************************************
+ * Copyright (c) 2015 IBM Corporation, and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - initial contribution
+ *******************************************************************************/
+package org.eclipse.remote.telnet.core;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.remote.core.IRemoteCommandShellService;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteConnection.Service;
+import org.eclipse.remote.core.IRemoteConnectionChangeListener;
+import org.eclipse.remote.core.IRemoteConnectionControlService;
+import org.eclipse.remote.core.IRemoteConnectionHostService;
+import org.eclipse.remote.core.IRemoteConnectionWorkingCopy;
+import org.eclipse.remote.core.IRemoteProcess;
+import org.eclipse.remote.core.RemoteConnectionChangeEvent;
+import org.eclipse.remote.core.exception.RemoteConnectionException;
+
+public class TelnetConnection implements IRemoteConnectionControlService, IRemoteCommandShellService,
+ IRemoteConnectionHostService, IRemoteConnectionChangeListener {
+ public static int DEFAULT_PORT = 23;
+ public static int DEFAULT_TIMEOUT = 0; // Infinite
+
+ public static final String HOSTNAME_ATTR = "telnet.hostname.attr"; //$NON-NLS-1$
+ public static final String USERNAME_ATTR = "telnet.username.attr"; //$NON-NLS-1$
+ public static final String PASSWORD_ATTR = "telnet.password.attr"; //$NON-NLS-1$
+ public static final String PORT_ATTR = "telnet.port.attr"; //$NON-NLS-1$
+ public static final String TIMEOUT_ATTR = "telnet.timeout.attr"; //$NON-NLS-1$
+
+ private final IRemoteConnection remoteConnection;
+ private final List<TelnetCommandShell> shells = Collections.synchronizedList(new ArrayList<TelnetCommandShell>());
+ private boolean isOpen;
+
+ private TelnetConnection(IRemoteConnection remoteConnection) {
+ this.remoteConnection = remoteConnection;
+ remoteConnection.addConnectionChangeListener(this);
+ }
+
+ public static class Factory implements IRemoteConnection.Service.Factory {
+ @SuppressWarnings("unchecked")
+ @Override
+ public <T extends Service> T getService(IRemoteConnection remoteConnection, Class<T> service) {
+ if (TelnetConnection.class.equals(service)) {
+ return (T) new TelnetConnection(remoteConnection);
+ } else if (IRemoteConnectionControlService.class.equals(service)
+ || IRemoteConnectionHostService.class.equals(service)
+ || IRemoteCommandShellService.class.equals(service)) {
+ return (T) remoteConnection.getService(TelnetConnection.class);
+ }
+ return null;
+ }
+ }
+
+ @Override
+ public IRemoteConnection getRemoteConnection() {
+ return remoteConnection;
+ }
+
+ @Override
+ public IRemoteProcess getCommandShell(int flags) throws IOException {
+ if (isOpen) {
+ TelnetCommandShell shell = new TelnetCommandShell(remoteConnection, this);
+ try {
+ shell.connect();
+ } catch (RemoteConnectionException e) {
+ throw new IOException(e.getMessage());
+ }
+ shells.add(shell);
+ return shell;
+ }
+ return null;
+ }
+
+ @Override
+ public int getPort() {
+ try {
+ String portStr = remoteConnection.getAttribute(PORT_ATTR);
+ return !portStr.isEmpty() ? Integer.parseInt(portStr) : DEFAULT_PORT;
+ } catch (NumberFormatException e) {
+ return -1;
+ }
+ }
+
+ @Override
+ public int getTimeout() {
+ try {
+ String timeoutStr = remoteConnection.getAttribute(TIMEOUT_ATTR);
+ return !timeoutStr.isEmpty() ? Integer.parseInt(timeoutStr) : DEFAULT_TIMEOUT;
+ } catch (NumberFormatException e) {
+ return -1;
+ }
+ }
+
+ @Override
+ public void close() {
+ synchronized (shells) {
+ for (TelnetCommandShell shell : shells) {
+ shell.destroy();
+ }
+ }
+ isOpen = false;
+ }
+
+ @Override
+ public String getHostname() {
+ return remoteConnection.getAttribute(HOSTNAME_ATTR);
+ }
+
+ @Override
+ public boolean useLoginShell() {
+ return true;
+ }
+
+ @Override
+ public String getUsername() {
+ return remoteConnection.getAttribute(USERNAME_ATTR);
+ }
+
+ @Override
+ public void setHostname(String hostname) {
+ if (remoteConnection instanceof IRemoteConnectionWorkingCopy) {
+ IRemoteConnectionWorkingCopy wc = (IRemoteConnectionWorkingCopy) remoteConnection;
+ wc.setAttribute(HOSTNAME_ATTR, hostname);
+ }
+ }
+
+ @Override
+ public void setPassphrase(String passphrase) {
+ // Ignore
+ }
+
+ @Override
+ public void setPassword(String password) {
+ if (remoteConnection instanceof IRemoteConnectionWorkingCopy) {
+ IRemoteConnectionWorkingCopy wc = (IRemoteConnectionWorkingCopy) remoteConnection;
+ wc.setSecureAttribute(PASSWORD_ATTR, password);
+ }
+ }
+
+ @Override
+ public void setPort(int port) {
+ if (remoteConnection instanceof IRemoteConnectionWorkingCopy) {
+ IRemoteConnectionWorkingCopy wc = (IRemoteConnectionWorkingCopy) remoteConnection;
+ wc.setAttribute(PORT_ATTR, Integer.toString(port));
+ }
+ }
+
+ @Override
+ public void setTimeout(int timeout) {
+ if (remoteConnection instanceof IRemoteConnectionWorkingCopy) {
+ IRemoteConnectionWorkingCopy wc = (IRemoteConnectionWorkingCopy) remoteConnection;
+ wc.setAttribute(TIMEOUT_ATTR, Integer.toString(timeout));
+ }
+ }
+
+ @Override
+ public void setUseLoginShell(boolean useLogingShell) {
+ // Ignore
+ }
+
+ @Override
+ public void setUsePassword(boolean usePassword) {
+ // Ignore
+ }
+
+ @Override
+ public void setUsername(String username) {
+ if (remoteConnection instanceof IRemoteConnectionWorkingCopy) {
+ IRemoteConnectionWorkingCopy wc = (IRemoteConnectionWorkingCopy) remoteConnection;
+ wc.setAttribute(USERNAME_ATTR, username);
+ }
+ }
+
+ @Override
+ public void open(IProgressMonitor monitor) throws RemoteConnectionException {
+ isOpen = true;
+ }
+
+ @Override
+ public boolean isOpen() {
+ return isOpen;
+ }
+
+ @Override
+ public void connectionChanged(RemoteConnectionChangeEvent event) {
+ switch (event.getType()) {
+ case RemoteConnectionChangeEvent.CONNECTION_OPENED:
+ isOpen = true;
+ break;
+
+ case RemoteConnectionChangeEvent.CONNECTION_ABORTED:
+ case RemoteConnectionChangeEvent.CONNECTION_CLOSED:
+ isOpen = false;
+ break;
+ }
+ }
+
+ protected void terminated(TelnetCommandShell shell) {
+ shells.remove(shell);
+ }
+
+ @Override
+ public String getPassphrase() {
+ return ""; //$NON-NLS-1$
+ }
+
+ @Override
+ public String getPassword() {
+ return remoteConnection.getSecureAttribute(PASSWORD_ATTR);
+ }
+
+ @Override
+ public boolean usePassword() {
+ return true;
+ }
+}
diff --git a/remote/org.eclipse.remote.telnet.core/src/org/eclipse/remote/telnet/core/TelnetOption.java b/remote/org.eclipse.remote.telnet.core/src/org/eclipse/remote/telnet/core/TelnetOption.java
new file mode 100644
index 00000000000..58620cb579a
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.core/src/org/eclipse/remote/telnet/core/TelnetOption.java
@@ -0,0 +1,727 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2015 Wind River Systems, Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Initial Contributors:
+ * The following Wind River employees contributed to the Terminal component
+ * that contains this file: Chris Thew, Fran Litterio, Stephen Lamb,
+ * Helmut Haigermoser and Ted Williams.
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - split into core, view and connector plugins
+ * Martin Oberhuber (Wind River) - fixed copyright headers and beautified
+ * Martin Oberhuber (Wind River) - [267181] Fix telnet option negotiation loop
+ * Anton Leherbauer (Wind River) - [453393] Add support for copying wrapped lines without line break
+ * Greg Watson (IBM) - Adapted for org.eclipse.remote
+ *******************************************************************************/
+package org.eclipse.remote.telnet.core;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.Date;
+
+import org.eclipse.remote.telnet.internal.core.Logger;
+
+/**
+ * This class represents a single TELNET protocol option at one endpoint of a TELNET
+ * connection. This class encapsulates the endpoint associated with the option (local
+ * or remote), the current state of the option (enabled or disabled), the desired state
+ * of the option, the current state of the negotiation, an OutputStream that allows
+ * communication with the remote endpoint, and the number of negotiations that have
+ * started within this connection.
+ * <p>
+ *
+ * In addition to encapsulating the above state, this class performs option negotiation
+ * to attempt to achieve the desired option state. For some options, this class also
+ * performs option sub-negotiation.
+ * <p>
+ *
+ * IMPORTANT: Understanding this code requires understanding the TELNET protocol and
+ * TELNET option processing.
+ * <p>
+ *
+ * @author Fran Litterio (francis.litterio@windriver.com)
+ */
+class TelnetOption implements TelnetCodes {
+ /**
+ * This array of Strings maps an integer TELNET option code value to the symbolic
+ * name of the option. Array elements of the form "?" represent unassigned option
+ * values.
+ */
+ protected static final String[] optionNames = { "BINARY", // 0 //$NON-NLS-1$
+ "ECHO", // 1 //$NON-NLS-1$
+ "RECONNECTION", // 2 //$NON-NLS-1$
+ "SUPPRESS GO AHEAD", // 3 //$NON-NLS-1$
+ "MSG SIZE NEGOTIATION", // 4 //$NON-NLS-1$
+ "STATUS", // 5 //$NON-NLS-1$
+ "TIMING MARK", // 6 //$NON-NLS-1$
+ "REMOTE CTRL TRANS+ECHO", // 7 //$NON-NLS-1$
+ "OUTPUT LINE WIDTH", // 8 //$NON-NLS-1$
+ "OUTPUT PAGE SIZE", // 9 //$NON-NLS-1$
+ "OUTPUT CR DISPOSITION", // 10 //$NON-NLS-1$
+ "OUTPUT HORIZ TABSTOPS", // 11 //$NON-NLS-1$
+ "OUTPUT HORIZ TAB DISPOSITION", // 12 //$NON-NLS-1$
+ "OUTPUT FORMFEED DISPOSITION", // 13 //$NON-NLS-1$
+ "OUTPUT VERTICAL TABSTOPS", // 14 //$NON-NLS-1$
+ "OUTPUT VT DISPOSITION", // 15 //$NON-NLS-1$
+ "OUTPUT LF DISPOSITION", // 16 //$NON-NLS-1$
+ "EXTENDED ASCII", // 17 //$NON-NLS-1$
+ "LOGOUT", // 18 //$NON-NLS-1$
+ "BYTE MACRO", // 19 //$NON-NLS-1$
+ "DATA ENTRY TERMINAL", // 20 //$NON-NLS-1$
+ "SUPDUP", // 21 //$NON-NLS-1$
+ "SUPDUP OUTPUT", // 22 //$NON-NLS-1$
+ "SEND LOCATION", // 23 //$NON-NLS-1$
+ "TERMINAL TYPE", // 24 //$NON-NLS-1$
+ "END OF RECORD", // 25 //$NON-NLS-1$
+ "TACACS USER IDENTIFICATION", // 26 //$NON-NLS-1$
+ "OUTPUT MARKING", // 27 //$NON-NLS-1$
+ "TERMINAL LOCATION NUMBER", // 28 //$NON-NLS-1$
+ "3270 REGIME", // 29 //$NON-NLS-1$
+ "X.3 PAD", // 30 //$NON-NLS-1$
+ "NEGOTIATE ABOUT WINDOW SIZE", // 31 //$NON-NLS-1$
+ "TERMINAL SPEED", // 32 //$NON-NLS-1$
+ "REMOTE FLOW CONTROL", // 33 //$NON-NLS-1$
+ "LINEMODE", // 34 //$NON-NLS-1$
+ "X DISPLAY LOCATION", // 35 //$NON-NLS-1$
+ "ENVIRONMENT OPTION", // 36 //$NON-NLS-1$
+ "AUTHENTICATION OPTION", // 37 //$NON-NLS-1$
+ "ENCRYPTION OPTION", // 38 //$NON-NLS-1$
+ "NEW ENVIRONMENT OPTION", // 39 //$NON-NLS-1$
+ "TN3270E", // 40 //$NON-NLS-1$
+ "XAUTH", // 41 //$NON-NLS-1$
+ "CHARSET", // 42 //$NON-NLS-1$
+ "REMOTE SERIAL PORT", // 43 //$NON-NLS-1$
+ "COM PORT CONTROL OPTION", // 44 //$NON-NLS-1$
+ "SUPPRESS LOCAL ECHO", // 45 //$NON-NLS-1$
+ "START TLS", // 46 //$NON-NLS-1$
+ "KERMIT", // 47 //$NON-NLS-1$
+ "SEND URL", // 48 //$NON-NLS-1$
+ "FORWARD X", // 49 //$NON-NLS-1$
+ "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", // 50 //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$
+ // ...
+ "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$
+ "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$
+ "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$
+ "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$
+ "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$
+ "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$
+ "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$
+ "?", "?", "?", "?", "?", "?", "?", // ... //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$
+ // 137
+ "TELOPT PRAGMA LOGON", // 138 //$NON-NLS-1$
+ "TELOPT SSPI LOGON", // 139 //$NON-NLS-1$
+ "TELOPT PRAGMA HEARTBEAT", // 140 //$NON-NLS-1$
+ "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", // 141 //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$
+ // ...
+ "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$
+ "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$
+ "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$
+ "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$
+ "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$
+ "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$
+ "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$
+ "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$
+ "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$
+ "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$
+ "?", "?", "?", "?", // ... 254 //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+ "EXTENDED OPTIONS LIST" // 255 //$NON-NLS-1$
+ };
+
+ /**
+ * Negotiation state: Negotiation not yet started for this option.
+ * <p>
+ *
+ * This constant and the others having similar names represent the states of a
+ * finite state automaton (FSA) that tracks the negotiation state of this option.
+ * The initial state is NEGOTIATION_NOT_STARTED. The state machine is as follows
+ * (with transitions labeled with letters in parentheses):
+ * <p>
+ *
+ * <pre>
+ * NEGOTIATION_NOT_STARTED -----> {@link #NEGOTIATION_IN_PROGRESS}
+ * | (A) | ^
+ * (C)| (B)| |(D)
+ * | V |
+ * +--------> {@link #NEGOTIATION_DONE}
+ * </pre>
+ * <p>
+ *
+ * Once the FSA leaves state NEGOTIATION_NOT_STARTED, it never returns to that
+ * state. Transition A happens when the local endpoint sends an option command
+ * before receiving a command for the same option from the remote endpoint.
+ * <p>
+ *
+ * Transition B happens when the local endpoint receives a reply to an option
+ * command sent earlier by the local endpoint. Receipt of that reply terminates
+ * the negotiation.
+ * <p>
+ *
+ * Transition D happens after negotiation is done and "something changes" (see the
+ * RFCs for the definition of "something changes"). Either endpoint can
+ * re-negotiate an option after a previous negotiation, but only if some external
+ * influence (such as the user or the OS) causes it to do so. Re-negotiation must
+ * start more than {@link #NEGOTIATION_IGNORE_DURATION} milliseconds after the FSA
+ * enters state NEGOTIATION_DONE or it will be ignored. This is how this client
+ * prevents negotiation loops.
+ * <p>
+ *
+ * Transition C happens when the local endpoint receives an option command from the
+ * remote endpoint before sending a command for the same option. In that case, the
+ * local endpoint replies immediately with an option command and the negotiation
+ * terminates.
+ * <p>
+ *
+ * Some TELNET servers (e.g., the Solaris server), after sending WILL and receiving
+ * DONT, will reply with a superfluous WONT. Any such superfluous option command
+ * received from the remote endpoint while the option's FSA is in state
+ * {@link #NEGOTIATION_DONE} will be ignored by the local endpoint.
+ */
+ protected static final int NEGOTIATION_NOT_STARTED = 0;
+
+ /** Negotiation state: Negotiation is in progress for this option. */
+ protected static final int NEGOTIATION_IN_PROGRESS = 1;
+
+ /** Negotiation state: Negotiation has terminated for this option. */
+ protected static final int NEGOTIATION_DONE = 2;
+
+ /**
+ * The number of milliseconds following the end of negotiation of this option
+ * before which the remote endpoint can re-negotiate the option. Any option
+ * command received from the remote endpoint before this time passes is ignored.
+ * This is used to prevent option negotiation loops.
+ *
+ * @see #ignoreNegotiation()
+ * @see #negotiationCompletionTime
+ */
+ protected static final int NEGOTIATION_IGNORE_DURATION = 30000;
+
+ /**
+ * This field holds the current negotiation state for this option.
+ */
+ protected int negotiationState = NEGOTIATION_NOT_STARTED;
+
+ /**
+ * This field holds the time when negotiation of this option most recently
+ * terminated (i.e., entered state {@link #NEGOTIATION_DONE}). This is used to
+ * determine whether an option command received from the remote endpoint after
+ * negotiation has terminated for this option is to be ignored or interpreted as
+ * the start of a new negotiation.
+ *
+ * @see #NEGOTIATION_IGNORE_DURATION
+ */
+ protected Date negotiationCompletionTime = new Date(0);
+
+ /**
+ * Holds the total number of negotiations that have completed for this option.
+ */
+ protected int negotiationCount = 0;
+
+ /**
+ * Holds the integer code representing the option.
+ */
+ protected byte option = 0;
+
+ /**
+ * Holds the OutputStream object that allows data to be sent to the remote endpoint
+ * of the TELNET connection.
+ */
+ protected OutputStream outputStream;
+
+ /**
+ * True if this option is for the local endpoint, false for the remote endpoint.
+ */
+ protected boolean local = true;
+
+ /**
+ * This field is true if the option is enabled, false if it is disabled. All
+ * options are initially disabled until they are negotiated to be enabled.
+ * <p>
+ */
+ protected boolean enabled = false;
+
+ /**
+ * This field is true if the client desires the option to be enabled, false if the
+ * client desires the option to be disabled. This field does not represent the
+ * remote's endpoints desire (as expressed via WILL and WONT commands) -- it
+ * represnet the local endpoint's desire.
+ * <p>
+ *
+ * @see #setDesired(boolean)
+ */
+ protected boolean desired = false;
+
+ /**
+ * Constructor.
+ * <p>
+ *
+ * @param option
+ * The integer code of this option.
+ * @param desired
+ * Whether we desire this option to be enabled.
+ * @param local
+ * Whether this option is for the local or remote endpoint.
+ * @param serverOutputStream
+ * A stream used to negotiate with the remote endpoint.
+ */
+ TelnetOption(byte option, boolean desired, boolean local, OutputStream outputStream) {
+ this.option = option;
+ this.desired = desired;
+ this.local = local;
+ this.outputStream = outputStream;
+ }
+
+ /**
+ * @return Returns a String containing the name of the TELNET option specified in
+ * parameter <i>option</i>.
+ */
+ public String optionName() {
+ return optionNames[option & 0xFF];
+ }
+
+ /**
+ * Returns true if this option is enabled, false if it is disabled.
+ * <p>
+ *
+ * @return Returns true if this option is enabled, false if it is disabled.
+ */
+ public boolean isEnabled() {
+ return enabled;
+ }
+
+ /**
+ * Enables this option if <i>newValue</i> is true, otherwise disables this
+ * option.
+ * <p>
+ *
+ * @param newValue
+ * True if this option is to be enabled, false otherwise.
+ */
+ public void setEnabled(boolean newValue) {
+ Logger.log("Enabling " + (local ? "local" : "remote") + " option " + //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+ optionName());
+ enabled = newValue;
+ }
+
+ /**
+ * Returns true if the local endpoint desires this option to be enabled, false if
+ * not. It is not an error for the value returned by this method to differ from
+ * the value returned by isEnabled(). The value returned by this method can change
+ * over time, reflecting the local endpoint's changing desire regarding the
+ * option.
+ * <p>
+ *
+ * NOTE: Even if this option represents a remote endpoint option, the return value
+ * of this method represents the local endpint's desire regarding the remote
+ * option.
+ * <p>
+ *
+ * @return Returns true if the local endpoint desires this option to be enabled,
+ * false if not.
+ */
+ public boolean isDesired() {
+ return desired;
+ }
+
+ /**
+ * Sets our desired value for this option. Note that the option can be desired
+ * when <i>enabled</i> is false, and the option can be undesired when
+ * <i>enabled</i> is true, though the latter state should not persist, since either
+ * endpoint can disable any option at any time.
+ * <p>
+ *
+ * @param newValue
+ * True if we desire this option to be enabled, false if
+ * we desire this option to be disabled.
+ */
+ public void setDesired(boolean newValue) {
+ if (newValue) {
+ Logger.log("Setting " + (local ? "local" : "remote") + " option " + //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+ optionName() + " as desired."); //$NON-NLS-1$
+ }
+
+ desired = newValue;
+ }
+
+ /**
+ * Call this method to request that negotiation begin for this option. This method
+ * does nothing if negotiation for this option has already started or is already
+ * complete. If negotiation has not yet started for this option and the local
+ * endpoint desires this option to be enabled, then we send a WILL or DO command to
+ * the remote endpoint.
+ */
+ public void negotiate() {
+ if (negotiationState == NEGOTIATION_NOT_STARTED && desired) {
+ if (local) {
+ Logger.log("Starting negotiation for local option " + optionName()); //$NON-NLS-1$
+ sendWill();
+ } else {
+ Logger.log("Starting negotiation for remote option " + optionName()); //$NON-NLS-1$
+ sendDo();
+ }
+
+ negotiationState = NEGOTIATION_IN_PROGRESS;
+ }
+ }
+
+ /**
+ * This method is called whenever we receive a WILL command from the remote
+ * endpoint.
+ */
+ public void handleWill() {
+ if (negotiationState == NEGOTIATION_DONE && ignoreNegotiation()) {
+ Logger.log("Ignoring superfluous WILL command from remote endpoint."); //$NON-NLS-1$
+ return;
+ }
+
+ if (negotiationState == NEGOTIATION_IN_PROGRESS) {
+ if (desired) {
+ // We sent DO and server replied with WILL. Enable the option, and end
+ // this negotiation.
+
+ enabled = true;
+ Logger.log("Enabling remote option " + optionName() + "."); //$NON-NLS-1$ //$NON-NLS-2$
+ endNegotiation();
+ } else {
+ // This should never happen! We sent DONT and the server replied with
+ // WILL. Bad server. No soup for you. Disable the option, and end
+ // this negotiation.
+
+ Logger.log("Server answered DONT with WILL!"); //$NON-NLS-1$
+ enabled = false;
+ Logger.log("Disabling remote option " + optionName() + "."); //$NON-NLS-1$ //$NON-NLS-2$
+ endNegotiation();
+ }
+ } else {
+ if (desired) {
+ // Server sent WILL, so we reply with DO. Enable the option, and end
+ // this negotiation.
+
+ sendDo();
+ enabled = true;
+ Logger.log("Enabling remote option " + optionName() + "."); //$NON-NLS-1$ //$NON-NLS-2$
+ endNegotiation();
+ } else {
+ // Server sent WILL, so we reply with DONT. Disable the option, and
+ // end this negotiation.
+
+ sendDont();
+ enabled = false;
+ Logger.log("Disabling remote option " + optionName() + "."); //$NON-NLS-1$ //$NON-NLS-2$
+ endNegotiation();
+ }
+ }
+ }
+
+ /**
+ * Handles a WONT command sent by the remote endpoint for this option. The value
+ * of <i>desired</i> doesn't matter in this method, because the remote endpoint is
+ * forcing the option to be disabled.
+ */
+ public void handleWont() {
+ if (negotiationState == NEGOTIATION_DONE && ignoreNegotiation()) {
+ Logger.log("Ignoring superfluous WONT command from remote endpoint."); //$NON-NLS-1$
+ return;
+ }
+
+ if (negotiationState == NEGOTIATION_IN_PROGRESS) {
+ // We sent DO or DONT and server replied with WONT. Disable the
+ // option, and end this negotiation.
+
+ enabled = false;
+ Logger.log("Disabling remote option " + optionName() + "."); //$NON-NLS-1$ //$NON-NLS-2$
+ endNegotiation();
+ } else {
+ // Server sent WONT, so we reply with DONT. Disable the option, and
+ // end this negotiation.
+
+ sendDont();
+ enabled = false;
+ Logger.log("Disabling remote option " + optionName() + "."); //$NON-NLS-1$ //$NON-NLS-2$
+ endNegotiation();
+ }
+ }
+
+ /**
+ * Handles a DO command sent by the remote endpoint for this option.
+ */
+ public void handleDo() {
+ if (negotiationState == NEGOTIATION_DONE && ignoreNegotiation()) {
+ Logger.log("Ignoring superfluous DO command from remote endpoint."); //$NON-NLS-1$
+ return;
+ }
+
+ if (negotiationState == NEGOTIATION_IN_PROGRESS) {
+ if (desired) {
+ // We sent WILL and server replied with DO. Enable the option, and end
+ // this negotiation.
+
+ enabled = true;
+ Logger.log("Enabling local option " + optionName() + "."); //$NON-NLS-1$ //$NON-NLS-2$
+ endNegotiation();
+ } else {
+ // We sent WONT and server replied with DO. This should never happen!
+ // Bad server. No soup for you. Disable the option, and end this
+ // negotiation.
+
+ Logger.log("Server answered WONT with DO!"); //$NON-NLS-1$
+ enabled = false;
+ Logger.log("Disabling local option " + optionName() + "."); //$NON-NLS-1$ //$NON-NLS-2$
+ endNegotiation();
+ }
+ } else {
+ if (desired) {
+ // Server sent DO, so we reply with WILL. Enable the option, and end
+ // this negotiation.
+
+ sendWill();
+ enabled = true;
+ Logger.log("Enabling local option " + optionName() + "."); //$NON-NLS-1$ //$NON-NLS-2$
+ endNegotiation();
+ } else {
+ // Server sent DO, so we reply with WONT. Disable the option, and end
+ // this negotiation.
+
+ sendWont();
+ enabled = false;
+ Logger.log("Disabling local option " + optionName() + "."); //$NON-NLS-1$ //$NON-NLS-2$
+ endNegotiation();
+ }
+ }
+ }
+
+ /**
+ * Handles a DONT command sent by the remote endpoint for this option. The value
+ * of <i>desired</i> doesn't matter in this method, because the remote endpoint is
+ * forcing the option to be disabled.
+ */
+ public void handleDont() {
+ if (negotiationState == NEGOTIATION_DONE && ignoreNegotiation()) {
+ Logger.log("Ignoring superfluous DONT command from remote endpoint."); //$NON-NLS-1$
+ return;
+ }
+
+ if (negotiationState == NEGOTIATION_IN_PROGRESS) {
+ // We sent WILL or WONT and server replied with DONT. Disable the
+ // option, and end this negotiation.
+
+ enabled = false;
+ Logger.log("Disabling local option " + optionName() + "."); //$NON-NLS-1$ //$NON-NLS-2$
+ endNegotiation();
+ } else {
+ // Server sent DONT, so we reply with WONT. Disable the option, and end
+ // this negotiation.
+
+ sendWont();
+ enabled = false;
+ Logger.log("Disabling local option " + optionName() + "."); //$NON-NLS-1$ //$NON-NLS-2$
+ endNegotiation();
+ }
+ }
+
+ /**
+ * This method handles a subnegotiation command received from the remote endpoint.
+ * Currently, the only subnegotiation we handle is when the remote endpoint
+ * commands us to send our terminal type (which is "xterm").
+ *
+ * @param subnegotiationData
+ * An array of bytes containing a TELNET
+ * subnegotiation command received from the
+ * remote endpoint.
+ * @param count
+ * The number of bytes in array
+ * subnegotiationData to examine.
+ */
+ public void handleSubnegotiation(byte[] subnegotiationData, int count) {
+ switch (option) {
+ case TELNET_OPTION_TERMINAL_TYPE:
+ if (subnegotiationData[1] != TELNET_SEND) {
+ // This should never happen!
+ Logger.log("Invalid TERMINAL-TYPE subnegotiation command from remote endpoint: " + //$NON-NLS-1$
+ (subnegotiationData[1] & 0xff));
+ break;
+ }
+
+ // Tell the remote endpoint our terminal type is "ansi" using this sequence
+ // of TELNET protocol bytes:
+ //
+ // IAC SB TERMINAL-TYPE IS x t e r m IAC SE
+
+ byte[] terminalTypeData = { TELNET_IAC, TELNET_SB, TELNET_OPTION_TERMINAL_TYPE, TELNET_IS, (byte) 'x',
+ (byte) 't', (byte) 'e', (byte) 'r', (byte) 'm', TELNET_IAC, TELNET_SE };
+
+ try {
+ outputStream.write(terminalTypeData);
+ } catch (IOException ex) {
+ Logger.log("IOException sending TERMINAL-TYPE subnegotiation!"); //$NON-NLS-1$
+ Logger.logException(ex);
+ }
+ break;
+
+ default:
+ // This should never happen!
+ Logger.log("SHOULD NOT BE REACHED: Called for option " + optionName()); //$NON-NLS-1$
+ break;
+ }
+ }
+
+ /**
+ * This method sends a subnegotiation command to the remote endpoint.
+ *
+ * @param subnegotiationData
+ * An array of Objects holding data to be used
+ * when generating the outbound subnegotiation
+ * command.
+ */
+ public void sendSubnegotiation(Object[] subnegotiationData) {
+ switch (option) {
+ case TELNET_OPTION_NAWS:
+ // Get the width and height of the view and send it to the remote
+ // endpoint using this sequence of TELNET protocol bytes:
+ //
+ // IAC SB NAWS <width-highbyte> <width-lowbyte> <height-highbyte>
+ // <height-lowbyte> IAC SE
+
+ byte[] NAWSData = { TELNET_IAC, TELNET_SB, TELNET_OPTION_NAWS, 0, 0, 0, 0, TELNET_IAC, TELNET_SE };
+ int width = ((Integer) subnegotiationData[0]).intValue();
+ int height = ((Integer) subnegotiationData[1]).intValue();
+
+ NAWSData[3] = (byte) ((width >>> 8) & 0xff); // High order byte of width.
+ NAWSData[4] = (byte) (width & 0xff); // Low order byte of width.
+ NAWSData[5] = (byte) ((height >>> 8) & 0xff); // High order byte of height.
+ NAWSData[6] = (byte) (height & 0xff); // Low order byte of height.
+
+ Logger.log("sending terminal size to remote endpoint: width = " + width + //$NON-NLS-1$
+ ", height = " + height + "."); //$NON-NLS-1$ //$NON-NLS-2$
+
+ // This final local variable is a hack to get around the fact that inner
+ // classes cannot reference a non-final local variable in a lexically
+ // enclosing scope.
+
+ final byte[] NAWSDataFinal = NAWSData;
+
+ // Send the NAWS data in a new thread. The current thread is the display
+ // thread, and calls to write() can block, but blocking the display thread
+ // is _bad_ (it hangs the GUI).
+
+ Thread t = new Thread() {
+ @Override
+ public void run() {
+ try {
+ outputStream.write(NAWSDataFinal);
+ } catch (IOException ex) {
+ Logger.log("IOException sending NAWS subnegotiation!"); //$NON-NLS-1$
+ Logger.logException(ex);
+ }
+ }
+ };
+ t.setDaemon(true);
+ t.start();
+ break;
+
+ default:
+ // This should never happen!
+ Logger.log("SHOULD NOT BE REACHED: Called for option " + optionName()); //$NON-NLS-1$
+ break;
+ }
+ }
+
+ /**
+ * This method returns true if there has not yet been any negotiation of this
+ * option.
+ *
+ * @return Returns true if there has not yet been any negotiation of this option.
+ */
+ protected boolean notYetNegotiated() {
+ return negotiationState == NEGOTIATION_NOT_STARTED;
+ }
+
+ /**
+ * This method terminates the current negotiation and records the time at which the
+ * negotiation terminated.
+ */
+ protected void endNegotiation() {
+ Logger.log("Ending negotiation #" + negotiationCount + " for " + //$NON-NLS-1$ //$NON-NLS-2$
+ (local ? "local" : "remote") + " option " + optionName()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ negotiationState = NEGOTIATION_DONE;
+ negotiationCompletionTime.setTime(System.currentTimeMillis());
+ ++negotiationCount;
+ }
+
+ /**
+ * This method determines whether or not to ignore what appears to be a new
+ * negotiation initiated by the remote endpoint. This is needed because some
+ * TELNET servers send superfluous option commands that a naive client might
+ * interpret as the start of a new negotiation. If the superfluous command is not
+ * ignored, an option negotiation loop can result (which is bad). For details
+ * about the superfluous commands sent by some servers, see the documentation for
+ * {@link #NEGOTIATION_NOT_STARTED}.
+ * <p>
+ *
+ * The current implementation of this method returns true if the new negotiation
+ * starts within NEGOTIATION_IGNORE_DURATION seconds of the end of the previous
+ * negotiation of this option.
+ * <p>
+ *
+ * @return Returns true if the new negotiation should be ignored, false if not.
+ */
+ protected boolean ignoreNegotiation() {
+ return (System.currentTimeMillis() - negotiationCompletionTime.getTime()) < NEGOTIATION_IGNORE_DURATION;
+ }
+
+ /**
+ * Sends a DO command to the remote endpoint for this option.
+ */
+ protected void sendDo() {
+ Logger.log("Sending DO " + optionName()); //$NON-NLS-1$
+ sendCommand(TELNET_DO);
+ }
+
+ /**
+ * Sends a DONT command to the remote endpoint for this option.
+ */
+ protected void sendDont() {
+ Logger.log("Sending DONT " + optionName()); //$NON-NLS-1$
+ sendCommand(TELNET_DONT);
+ }
+
+ /**
+ * Sends a WILL command to the remote endpoint for this option.
+ */
+ protected void sendWill() {
+ Logger.log("Sending WILL " + optionName()); //$NON-NLS-1$
+ sendCommand(TELNET_WILL);
+ }
+
+ /**
+ * Sends a WONT command to the remote endpoint for this option.
+ */
+ protected void sendWont() {
+ Logger.log("Sending WONT " + optionName()); //$NON-NLS-1$
+ sendCommand(TELNET_WONT);
+ }
+
+ /**
+ * This method sends a WILL/WONT/DO/DONT command to the remote endpoint for this
+ * option.
+ */
+ protected void sendCommand(byte command) {
+ byte[] data = { TELNET_IAC, 0, 0 };
+
+ data[1] = command;
+ data[2] = option;
+
+ try {
+ outputStream.write(data);
+ } catch (IOException ex) {
+ Logger.log("IOException sending command " + command); //$NON-NLS-1$
+ Logger.logException(ex);
+ }
+ }
+}
diff --git a/remote/org.eclipse.remote.telnet.core/src/org/eclipse/remote/telnet/core/TelnetProtocol.java b/remote/org.eclipse.remote.telnet.core/src/org/eclipse/remote/telnet/core/TelnetProtocol.java
new file mode 100644
index 00000000000..0f929599ab6
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.core/src/org/eclipse/remote/telnet/core/TelnetProtocol.java
@@ -0,0 +1,734 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2015 Wind River Systems, Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Fran Litterio (Wind River) - initial API and implementation
+ * Helmut Haigermoser (Wind River) - repackaged
+ * Ted Williams (Wind River) - repackaged into org.eclipse namespace
+ * Michael Scharf (Wind River) - split into core, view and connector plugins
+ * Martin Oberhuber (Wind River) - fixed copyright headers and beautified
+ * Michael Scharf (Wind River) - [209665] Add ability to log byte streams from terminal
+ * Alex Panchenko (Xored) - [277061] TelnetProtocol.isConnected() should check if socket was not closed
+ * Uwe Stieber (Wind River) - [281329] Telnet connection not handling "SocketException: Connection reset" correct
+ * Nils Hagge (Siemens AG) - [276023] close socket streams after connection is disconnected
+ * Greg Watson (IBM) - Adapted for org.eclipse.remote
+ *******************************************************************************/
+package org.eclipse.remote.telnet.core;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.net.Socket;
+import java.net.SocketException;
+import java.nio.ByteBuffer;
+import java.nio.channels.Channels;
+import java.nio.channels.ClosedByInterruptException;
+import java.nio.channels.ReadableByteChannel;
+
+import org.eclipse.remote.telnet.internal.core.Logger;
+import org.eclipse.remote.telnet.internal.core.messages.Messages;
+
+/**
+ * This class encapsulates a TELNET connection to a remote server. It processes
+ * incoming TELNET protocol data and generates outbound TELNET protocol data. It
+ * also manages two sets of TelnetOption objects: one for the local endpoint and
+ * one for the remote endpoint.
+ * <p>
+ *
+ * IMPORTANT: Understanding this code requires understanding the TELNET protocol
+ * and TELNET option processing, as defined in the RFCs listed below.
+ * <p>
+ *
+ * @author Fran Litterio (francis.litterio@windriver.com)
+ *
+ * @see <a href="ftp://ftp.rfc-editor.org/in-notes/rfc854.txt">RFC 854</a>
+ * @see <a href="ftp://ftp.rfc-editor.org/in-notes/rfc855.txt">RFC 855</a>
+ * @see <a href="ftp://ftp.rfc-editor.org/in-notes/rfc856.txt">RFC 856</a>
+ * @see <a href="ftp://ftp.rfc-editor.org/in-notes/rfc857.txt">RFC 857</a>
+ * @see <a href="ftp://ftp.rfc-editor.org/in-notes/rfc858.txt">RFC 858</a>
+ * @see <a href="ftp://ftp.rfc-editor.org/in-notes/rfc859.txt">RFC 859</a>
+ * @see <a href="ftp://ftp.rfc-editor.org/in-notes/rfc860.txt">RFC 860</a>
+ * @see <a href="ftp://ftp.rfc-editor.org/in-notes/rfc861.txt">RFC 861</a>
+ * @see <a href="ftp://ftp.rfc-editor.org/in-notes/rfc1091.txt">RFC 1091</a>
+ * @see <a href="ftp://ftp.rfc-editor.org/in-notes/rfc1096.txt">RFC 1096</a>
+ * @see <a href="ftp://ftp.rfc-editor.org/in-notes/rfc1073.txt">RFC 1073</a>
+ * @see <a href="ftp://ftp.rfc-editor.org/in-notes/rfc1079.txt">RFC 1079</a>
+ * @see <a href="ftp://ftp.rfc-editor.org/in-notes/rfc1143.txt">RFC 1143</a>
+ * @see <a href="ftp://ftp.rfc-editor.org/in-notes/rfc1572.txt">RFC 1572</a>
+ */
+public class TelnetProtocol extends Thread implements TelnetCodes {
+ /**
+ * TELNET connection state: Initial state.
+ */
+ protected static final int STATE_INITIAL = 0;
+
+ /**
+ * TELNET connection state: Last byte processed was IAC code. code.
+ */
+ protected static final int STATE_IAC_RECEIVED = 1;
+
+ /**
+ * TELNET connection state: Last byte processed was WILL code. code.
+ */
+ protected static final int STATE_WILL_RECEIVED = 2;
+
+ /**
+ * TELNET connection state: Last byte processed was WONT code.
+ */
+ protected static final int STATE_WONT_RECEIVED = 3;
+
+ /**
+ * TELNET connection state: Last byte processed was DO code.
+ */
+ protected static final int STATE_DO_RECEIVED = 4;
+
+ /**
+ * TELNET connection state: Last byte processed was DONT code.
+ */
+ protected static final int STATE_DONT_RECEIVED = 5;
+
+ /**
+ * TELNET connection state: Last byte processed was SB.
+ */
+ protected static final int STATE_SUBNEGOTIATION_STARTED = 6;
+
+ /**
+ * TELNET connection state: Currently receiving sub-negotiation data.
+ */
+ protected static final int STATE_RECEIVING_SUBNEGOTIATION = 7;
+
+ /**
+ * Size of buffer for processing data received from remote endpoint.
+ */
+ protected static final int BUFFER_SIZE = 2048;
+
+ /**
+ * Holds raw bytes received from the remote endpoint, prior to any TELNET
+ * protocol processing.
+ */
+ protected ByteBuffer rawBytes = ByteBuffer.allocateDirect(BUFFER_SIZE);
+
+ /**
+ * Holds incoming network data after the TELNET protocol bytes have been
+ * processed and removed.
+ */
+ protected byte[] processedBytes = new byte[BUFFER_SIZE];
+
+ /**
+ * This field holds a StringBuffer containing text recently received from
+ * the remote endpoint (after all TELNET protocol bytes have been processed
+ * and removed).
+ */
+ protected StringBuffer processedStringBuffer = new StringBuffer(BUFFER_SIZE);
+
+ /**
+ * Holds the current state of the TELNET protocol processor.
+ */
+ protected int telnetState = STATE_INITIAL;
+
+ /**
+ * This field is true if the remote endpoint is a TELNET server, false if
+ * not. We set this to true if and only if the remote endpoint sends
+ * recognizable TELNET protocol data. We do not assume that the remote
+ * endpoint is a TELNET server just because it is listening on port 23. This
+ * allows us to successfully connect to a TELNET server listening on a port
+ * other than 23.
+ * <p>
+ *
+ * When this field first changes from false to true, we send all WILL or DO
+ * commands to the remote endpoint.
+ * <p>
+ *
+ * @see #telnetServerDetected()
+ */
+ protected boolean remoteIsTelnetServer = false;
+
+ /**
+ * An array of TelnetOption objects representing the local endpoint's TELNET
+ * options. The array is indexed by the numeric TELNET option code.
+ */
+ protected TelnetOption[] localOptions = new TelnetOption[256];
+
+ /**
+ * An array of TelnetOption objects representing the remote endpoint's
+ * TELNET options. The array is indexed by the numeric TELNET option code.
+ */
+ protected TelnetOption[] remoteOptions = new TelnetOption[256];
+
+ /**
+ * An array of bytes that holds the TELNET subnegotiation command most
+ * recently received from the remote endpoint. This array does _not_ include
+ * the leading IAC SB bytes, nor does it include the trailing IAC SE bytes.
+ * The first byte of this array is always a TELNET option code.
+ */
+ protected byte[] receivedSubnegotiation = new byte[128];
+
+ /**
+ * This field holds the index into array {@link #receivedSubnegotiation} of
+ * the next unused byte. This is used by method
+ * {@link #processTelnetProtocol(int)} when the state machine is in states
+ * {@link #STATE_SUBNEGOTIATION_STARTED} and {@link
+ * #STATE_RECEIVING_SUBNEGOTIATION}.
+ */
+ protected int nextSubnegotiationByteIndex = 0;
+
+ /**
+ * This field is true if an error occurs while processing a subnegotiation
+ * command.
+ *
+ * @see #processTelnetProtocol(int)
+ */
+ protected boolean ignoreSubnegotiation = false;
+
+ /**
+ * This field holds the width of the Terminal screen in columns.
+ */
+ protected int width = 0;
+
+ /**
+ * This field holds the height of the Terminal screen in rows.
+ */
+ protected int height = 0;
+
+ /**
+ * This field holds a reference to the {@link TelnetCommandShell}.
+ */
+ protected TelnetCommandShell shell;
+
+ /**
+ * This method holds the Socket object for the TELNET connection.
+ */
+ protected Socket socket;
+
+ /**
+ * This field holds a reference to an {@link ReadableByteChannel} object used to
+ * receive data from the remote endpoint.
+ */
+ protected ReadableByteChannel inputChannel;
+
+ /**
+ * This field holds a reference to an {@link OutputStream} object used to
+ * send data to the remote endpoint.
+ */
+ protected OutputStream serverOutputStream;
+
+ /**
+ * This field holds a reference to an {@link OutputStream} object used to
+ * send data to the client.
+ */
+ protected OutputStream clientOutputStream;
+
+ /**
+ * UNDER CONSTRUCTION
+ */
+ protected boolean localEcho = true;
+
+ /**
+ * This constructor just initializes some internal object state from its
+ * arguments.
+ */
+ public TelnetProtocol(Socket socket, TelnetCommandShell shell) throws IOException {
+ super();
+
+ Logger.log("entered"); //$NON-NLS-1$
+
+ this.shell = shell;
+ this.socket = socket;
+
+ // serverInputStream = socket.getInputStream();
+ serverOutputStream = socket.getOutputStream();
+ inputChannel = Channels.newChannel(socket.getInputStream());
+
+ initializeOptions();
+ }
+
+ public OutputStream getOutputStream() {
+ return serverOutputStream;
+ }
+
+ public void setClientOutputStream(OutputStream stream) {
+ clientOutputStream = stream;
+ }
+
+ /**
+ * Returns true if the TCP connection represented by this object is
+ * connected, false otherwise.
+ */
+ public boolean isConnected() {
+ return socket != null && socket.isConnected() && !socket.isClosed();
+ }
+
+ /**
+ * Returns true if the TCP connection represented by this object is
+ * connected and the remote endpoint is a TELNET server, false otherwise.
+ */
+ public boolean isRemoteTelnetServer() {
+ return remoteIsTelnetServer;
+ }
+
+ /**
+ * This method sets the terminal width and height to the supplied values. If
+ * either new value differs from the corresponding old value, we initiate a
+ * NAWS subnegotiation to inform the remote endpoint of the new terminal
+ * size.
+ */
+ public void setTerminalSize(int newWidth, int newHeight) {
+ Logger.log("Setting new size: width = " + newWidth + ", height = " + newHeight); //$NON-NLS-1$ //$NON-NLS-2$
+ if (!isConnected() || !isRemoteTelnetServer()) {
+ return;
+ }
+ boolean sizeChanged = false;
+
+ if (newWidth != width || newHeight != height) {
+ sizeChanged = true;
+ }
+
+ width = newWidth;
+ height = newHeight;
+
+ if (sizeChanged && remoteIsTelnetServer && localOptions[TELNET_OPTION_NAWS].isEnabled()) {
+ Integer[] sizeData = { Integer.valueOf(width), Integer.valueOf(height) };
+
+ localOptions[TELNET_OPTION_NAWS].sendSubnegotiation(sizeData);
+ }
+ }
+
+ /**
+ * Returns true if local echoing is enabled for this TCP connection, false
+ * otherwise.
+ */
+ public boolean localEcho() {
+ return localEcho;
+ }
+
+ /**
+ * This method runs in its own thread. It reads raw bytes from the TELNET
+ * connection socket, processes any TELNET protocol bytes (and removes
+ * them), and passes the remaining bytes to a TerminalDisplay object for
+ * display.
+ */
+ @Override
+ public void run() {
+ Logger.log("Entered"); //$NON-NLS-1$
+
+ try {
+ while (socket.isConnected()) {
+ rawBytes.clear();
+ int nRawBytes = inputChannel.read(rawBytes);
+ if (nRawBytes == -1) {
+ // End of input on serverInputStream.
+ Logger.log("End of input reading from socket!"); //$NON-NLS-1$
+
+ // Announce to the user that the remote endpoint has closed the
+ // connection.
+ if (clientOutputStream != null) {
+ clientOutputStream.write(Messages.TelnetProtocol_0.getBytes());
+ }
+ break;
+ }
+
+ // Process any TELNET protocol data that we receive. Don't
+ // send any TELNET protocol data until we are sure the remote
+ // endpoint is a TELNET server.
+
+ int nProcessedBytes = processTelnetProtocol(nRawBytes);
+
+ if (nProcessedBytes > 0 && clientOutputStream != null) {
+ clientOutputStream.write(processedBytes, 0, nProcessedBytes);
+ clientOutputStream.flush();
+ }
+ }
+ } catch (ClosedByInterruptException e) {
+ // Handled by finally clause
+ } catch (SocketException ex) {
+ String message = ex.getMessage();
+
+ // A "socket closed" exception is normal here. It's caused by the
+ // user clicking the disconnect button on the Terminal view toolbar.
+
+ if (message != null && !message.equalsIgnoreCase("Socket closed") //$NON-NLS-1$
+ && !message.equalsIgnoreCase("Connection reset")) { //$NON-NLS-1$
+ Logger.logException(ex);
+ }
+
+ } catch (Exception ex) {
+ Logger.logException(ex);
+ } finally {
+ // Tell the command shell that we have terminated
+ shell.terminated();
+ try {
+ if (inputChannel != null) {
+ inputChannel.close();
+ }
+ } catch (IOException ioe) {
+ /* ignore */
+ }
+ try {
+ if (serverOutputStream != null) {
+ serverOutputStream.close();
+ }
+ } catch (IOException ioe) {
+ /* ignore */
+ }
+ try {
+ if (clientOutputStream != null) {
+ clientOutputStream.close();
+ }
+ } catch (IOException ioe) {
+ /* ignore */
+ }
+ }
+ }
+
+ /**
+ * This method initializes the localOptions[] and remoteOptions[] arrays so
+ * that they contain references to TelnetOption objects representing our
+ * desired state for each option. The goal is to achieve server-side
+ * echoing, suppression of Go Aheads, and to send the local terminal type
+ * and size to the remote endpoint.
+ */
+ protected void initializeOptions() {
+ // First, create all the TelnetOption objects in the "undesired" state.
+
+ for (int i = 0; i < localOptions.length; ++i) {
+ localOptions[i] = new TelnetOption((byte) i, false, true, serverOutputStream);
+ }
+
+ for (int i = 0; i < localOptions.length; ++i) {
+ remoteOptions[i] = new TelnetOption((byte) i, false, false, serverOutputStream);
+ }
+
+ // Next, set some of the options to the "desired" state. The options we
+ // desire to be enabled are as follows:
+ //
+ // TELNET Option Desired for Desired for
+ // Name and Code Local Endpoint Remote Endpoint
+ // --------------------- -------------- ---------------
+ // Echo (1) No Yes
+ // Suppress Go Ahead (3) Yes Yes
+ // Terminal Type (24) Yes Yes
+ // NAWS (31) Yes Yes
+ //
+ // All other options remain in the "undesired" state, and thus will be
+ // disabled (since either endpoint can force any option to be disabled by simply
+ // answering WILL with DONT and DO with WONT).
+
+ localOptions[TELNET_OPTION_ECHO].setDesired(false);
+ remoteOptions[TELNET_OPTION_ECHO].setDesired(true);
+
+ localOptions[TELNET_OPTION_SUPPRESS_GA].setDesired(true);
+ remoteOptions[TELNET_OPTION_SUPPRESS_GA].setDesired(true);
+
+ localOptions[TELNET_OPTION_TERMINAL_TYPE].setDesired(true);
+ remoteOptions[TELNET_OPTION_TERMINAL_TYPE].setDesired(true);
+
+ localOptions[TELNET_OPTION_NAWS].setDesired(true);
+ remoteOptions[TELNET_OPTION_NAWS].setDesired(true);
+ }
+
+ /**
+ * Process TELNET protocol data contained in the first <i>count</i> bytes
+ * of <i>rawBytes</i>. This function preserves its state between calls,
+ * because a multi-byte TELNET command might be split between two (or more)
+ * calls to this function. The state is preserved in field <i>telnetState</i>.
+ * This function implements an FSA that recognizes TELNET option codes.
+ * TELNET option sub-negotiation is delegated to instances of TelnetOption.
+ *
+ * @return The number of bytes remaining in the buffer after removing all
+ * TELNET protocol bytes.
+ */
+ // TELNET option state is stored in instances of TelnetOption.
+ protected int processTelnetProtocol(int count) {
+ // This is too noisy to leave on all the time.
+ // Logger.log("Processing " + count + " bytes of data.");
+
+ int nextProcessedByte = 0;
+
+ for (int byteIndex = 0; byteIndex < count; ++byteIndex) {
+ // It is possible for control to flow through the below code such
+ // that nothing happens. This happens when array rawBytes[] contains no
+ // TELNET protocol data.
+
+ byte inputByte = rawBytes.get(byteIndex);
+ int ubyte = inputByte & 0xFF;
+
+ switch (telnetState) {
+ case STATE_INITIAL:
+ if (inputByte == TELNET_IAC) {
+ telnetState = STATE_IAC_RECEIVED;
+ } else {
+ // It's not an IAC code, so just append it to
+ // processedBytes.
+
+ processedBytes[nextProcessedByte++] = inputByte;
+ }
+ break;
+
+ case STATE_IAC_RECEIVED:
+ switch (inputByte) {
+ case TELNET_IAC:
+ // Two IAC bytes in a row are translated into one byte with
+ // the
+ // value 0xff.
+
+ processedBytes[nextProcessedByte++] = (byte) 0xff;
+ telnetState = STATE_INITIAL;
+ break;
+
+ case TELNET_WILL:
+ telnetState = STATE_WILL_RECEIVED;
+ break;
+
+ case TELNET_WONT:
+ telnetState = STATE_WONT_RECEIVED;
+ break;
+
+ case TELNET_DO:
+ telnetState = STATE_DO_RECEIVED;
+ break;
+
+ case TELNET_DONT:
+ telnetState = STATE_DONT_RECEIVED;
+ break;
+
+ case TELNET_SB:
+ telnetState = STATE_SUBNEGOTIATION_STARTED;
+ break;
+
+ // Commands to consume and ignore.
+
+ // Data Mark (DM). This is sent by a TELNET server following an
+ // IAC sent as TCP urgent data. It should cause the client to
+ // skip all not yet processed non-TELNET-protocol data preceding the
+ // DM byte. However, Java 1.4.x has no way to inform clients of
+ // class Socket that urgent data is available, so we simply ignore the
+ // "IAC DM" command. Since the IAC is sent as TCP urgent data,
+ // the Socket must be put into OOB-inline mode via a call to
+ // setOOBInline(true), otherwise the IAC is silently dropped by
+ // Java and only the DM arrives (leaving the user to see a
+ // spurious ISO Latin-1 character).
+ case TELNET_DM:
+
+ case TELNET_NOP: // No-op.
+ case TELNET_GA: // Go Ahead command. Meaningless on a full-duplex link.
+ case TELNET_IP: // Interupt Process command. Server should never send this.
+ case TELNET_AO: // Abort Output command. Server should never send this.
+ case TELNET_AYT: // Are You There command. Server should never send this.
+ case TELNET_EC: // Erase Character command. Server should never send this.
+ case TELNET_EL: // Erase Line command. Server should never send this.
+ telnetState = STATE_INITIAL;
+ break;
+
+ default:
+ // Unrecognized command! This should never happen.
+ Logger.log("processTelnetProtocol: UNRECOGNIZED TELNET PROTOCOL COMMAND: " + //$NON-NLS-1$
+ ubyte);
+ telnetState = STATE_INITIAL;
+ break;
+ }
+ break;
+
+ // For the next four cases, WILL and WONT commands affect the state
+ // of remote options, and DO and DONT commands affect the state of
+ // local options.
+
+ case STATE_WILL_RECEIVED:
+ Logger.log("Received WILL " + localOptions[ubyte].optionName() + "."); //$NON-NLS-1$ //$NON-NLS-2$
+ remoteOptions[ubyte].handleWill();
+ telnetState = STATE_INITIAL;
+ telnetServerDetected();
+ break;
+
+ case STATE_WONT_RECEIVED:
+ Logger.log("Received WONT " + localOptions[ubyte].optionName() + "."); //$NON-NLS-1$ //$NON-NLS-2$
+ remoteOptions[ubyte].handleWont();
+ telnetState = STATE_INITIAL;
+ telnetServerDetected();
+ break;
+
+ case STATE_DO_RECEIVED:
+ Logger.log("Received DO " + localOptions[ubyte].optionName() + "."); //$NON-NLS-1$ //$NON-NLS-2$
+ localOptions[ubyte].handleDo();
+ telnetState = STATE_INITIAL;
+ telnetServerDetected();
+ break;
+
+ case STATE_DONT_RECEIVED:
+ Logger.log("Received DONT " + localOptions[ubyte].optionName() + "."); //$NON-NLS-1$ //$NON-NLS-2$
+ localOptions[ubyte].handleDont();
+ telnetState = STATE_INITIAL;
+ telnetServerDetected();
+ break;
+
+ case STATE_SUBNEGOTIATION_STARTED:
+ Logger.log("Starting subnegotiation for option " + //$NON-NLS-1$
+ localOptions[ubyte].optionName() + "."); //$NON-NLS-1$
+
+ // First, zero out the array of received subnegotiation butes.
+
+ for (int i = 0; i < receivedSubnegotiation.length; ++i) {
+ receivedSubnegotiation[i] = 0;
+ }
+
+ // Forget about any previous subnegotiation errors.
+
+ ignoreSubnegotiation = false;
+
+ // Then insert this input byte into the array and enter state
+ // STATE_RECEIVING_SUBNEGOTIATION, where we will gather the
+ // remaining subnegotiation bytes.
+
+ nextSubnegotiationByteIndex = 0;
+ receivedSubnegotiation[nextSubnegotiationByteIndex++] = inputByte;
+ telnetState = STATE_RECEIVING_SUBNEGOTIATION;
+ break;
+
+ case STATE_RECEIVING_SUBNEGOTIATION:
+ if (inputByte == TELNET_IAC) {
+ // Handle double IAC bytes. From RFC 855: "if parameters
+ // in an option 'subnegotiation' include a byte with a value
+ // of 255, it is necessary to double this byte in accordance
+ // the general TELNET rules."
+
+ if (nextSubnegotiationByteIndex > 0
+ && receivedSubnegotiation[nextSubnegotiationByteIndex - 1] == TELNET_IAC) {
+ // The last input byte we received in this
+ // subnegotiation was IAC, so this is a double IAC. Leave the previous IAC
+ // in the receivedSubnegotiation[] array and drop the current
+ // one (thus translating a double IAC into a single IAC).
+
+ Logger.log("Double IAC in subnegotiation translated into single IAC."); //$NON-NLS-1$
+ break;
+ }
+
+ // Append the IAC byte to receivedSubnegotiation[]. If there
+ // is no room for the IAC byte, it overwrites the last byte,
+ // because we need to know when the subnegotiation ends, and that is
+ // marked by an "IAC SE" command.
+
+ if (nextSubnegotiationByteIndex < receivedSubnegotiation.length) {
+ receivedSubnegotiation[nextSubnegotiationByteIndex++] = inputByte;
+ } else {
+ receivedSubnegotiation[receivedSubnegotiation.length - 1] = inputByte;
+ }
+ break;
+ }
+
+ // Handle an "IAC SE" command, which marks the end of the
+ // subnegotiation. An SE byte by itself might be a legitimate
+ // part of the subnegotiation data, so don't do anything unless the SE
+ // is immediately preceded by an IAC.
+
+ if (inputByte == TELNET_SE && receivedSubnegotiation[nextSubnegotiationByteIndex - 1] == TELNET_IAC) {
+ Logger.log("Found SE code marking end of subnegotiation."); //$NON-NLS-1$
+
+ // We are done receiving the subnegotiation command. Now
+ // process it. We always use the option object stored in array
+ // localOptions[] to process the received subnegotiation.
+ // This is an arbitrary decision, but it is sufficient for handling
+ // options TERMINAL-TYPE and NAWS, which are the only options that
+ // we subnegotiate (presently). If, in the future,subnegotiations
+ // need to be handled by option objects stored in both
+ // localOptions[] and remoteOptions[], then some mechanism
+ // to choose the correct option object must be implemented.
+ //
+ // Also, if ignoreSubnegotiation is true, there was an error
+ // while receiving the subnegotiation, so we must not process the
+ // command, and instead just return to the initial state.
+
+ if (!ignoreSubnegotiation) {
+ // Remove the trailing IAC byte from
+ // receivedSubnegotiation[].
+
+ receivedSubnegotiation[nextSubnegotiationByteIndex - 1] = 0;
+
+ int subnegotiatedOption = receivedSubnegotiation[0] & 0xFF;
+
+ localOptions[subnegotiatedOption].handleSubnegotiation(receivedSubnegotiation,
+ nextSubnegotiationByteIndex);
+ } else {
+ Logger.log("NOT CALLING handleSubnegotiation() BECAUSE OF ERRORS!"); //$NON-NLS-1$
+ }
+
+ // Return to the initial state.
+
+ telnetState = STATE_INITIAL;
+ }
+
+ // Check whether the receivedSubnegotiation[] array is full.
+
+ if (nextSubnegotiationByteIndex >= receivedSubnegotiation.length) {
+ // This should not happen. Array receivedSubnegotiation can
+ // hold 128 bytes, and no TELNET option that we perform
+ // subnegotiation for requires that many bytes in a subnegotiation command.
+ // In the interest of robustness, we handle this case by ignoring all
+ // remaining subnegotiation bytes until we receive the IAC SE
+ // command that ends the subnegotiation. Also, we set
+ // ignoreSubnegotiation to true to prevent a call to
+ // handleSubnegotiation() when the IAC SE command arrives.
+
+ Logger.log("SUBNEGOTIATION BUFFER FULL!"); //$NON-NLS-1$
+ ignoreSubnegotiation = true;
+ } else {
+ Logger.log("Recording subnegotiation byte " + ubyte); //$NON-NLS-1$
+
+ receivedSubnegotiation[nextSubnegotiationByteIndex++] = inputByte;
+ }
+ break;
+
+ default:
+ // This should _never_ happen! If it does, it means there is a
+ // bug in this FSA. For robustness, we return to the initial state.
+
+ Logger.log("INVALID TELNET STATE: " + telnetState); //$NON-NLS-1$
+ telnetState = STATE_INITIAL;
+ break;
+ }
+ }
+
+ // Return the number of bytes of processed data (i.e., number of bytes
+ // of raw data minus TELNET control bytes). This value can be zero.
+
+ return nextProcessedByte;
+ }
+
+ /**
+ * This method is called whenever we receive a valid TELNET protocol command
+ * from the remote endpoint. When it is called for the first time for this
+ * connection, we negotiate all options that we desire to be enabled.
+ * <p>
+ *
+ * This method does not negotiate options that we do not desire to be
+ * enabled, because all options are initially disabled.
+ * <p>
+ */
+ protected void telnetServerDetected() {
+ if (!remoteIsTelnetServer) {
+ // This block only executes once per TelnetProtocol instance.
+
+ localEcho = false;
+
+ Logger.log("Detected TELNET server."); //$NON-NLS-1$
+
+ remoteIsTelnetServer = true;
+
+ for (TelnetOption localOption : localOptions) {
+ if (localOption.isDesired()) {
+ localOption.negotiate();
+ }
+ }
+
+ for (TelnetOption remoteOption : remoteOptions) {
+ if (remoteOption.isDesired()) {
+ remoteOption.negotiate();
+ }
+ }
+ }
+ }
+}
diff --git a/remote/org.eclipse.remote.telnet.core/src/org/eclipse/remote/telnet/internal/core/Activator.java b/remote/org.eclipse.remote.telnet.core/src/org/eclipse/remote/telnet/internal/core/Activator.java
new file mode 100644
index 00000000000..1d3945ef79b
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.core/src/org/eclipse/remote/telnet/internal/core/Activator.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 2015 IBM Corporation, and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - initial contribution
+ *******************************************************************************/
+package org.eclipse.remote.telnet.internal.core;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Plugin;
+import org.eclipse.core.runtime.Status;
+import org.osgi.framework.BundleContext;
+
+public class Activator extends Plugin {
+ public static final String PLUGIN_ID = "org.eclipse.remote.telnet.core"; //$NON-NLS-1$
+
+ private static Plugin plugin;
+
+ @Override
+ public void start(BundleContext bundleContext) throws Exception {
+ plugin = this;
+ Logger.configure(bundleContext);
+ }
+
+ @Override
+ public void stop(BundleContext bundleContext) throws Exception {
+ plugin = null;
+ }
+
+ public static Plugin getDefault() {
+ return plugin;
+ }
+
+ public static void log(IStatus status) {
+ plugin.getLog().log(status);
+ }
+
+ public static void log(Throwable e) {
+ if (e instanceof CoreException) {
+ log(((CoreException) e).getStatus());
+ } else {
+ log(new Status(IStatus.ERROR, plugin.getBundle().getSymbolicName(), IStatus.ERROR, e.getLocalizedMessage(),
+ e));
+ }
+ }
+
+}
diff --git a/remote/org.eclipse.remote.telnet.core/src/org/eclipse/remote/telnet/internal/core/Logger.java b/remote/org.eclipse.remote.telnet.core/src/org/eclipse/remote/telnet/internal/core/Logger.java
new file mode 100644
index 00000000000..a05f45f6ef6
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.core/src/org/eclipse/remote/telnet/internal/core/Logger.java
@@ -0,0 +1,241 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2015 Wind River Systems, Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Fran Litterio (Wind River) - initial API and implementation
+ * Ted Williams (Wind River) - refactored into org.eclipse namespace
+ * Michael Scharf (Wind River) - split into core, view and connector plugins
+ * Martin Oberhuber (Wind River) - fixed copyright headers and beautified
+ * Greg Watson (IBM) - Adapted for org.eclipse.remote
+ *******************************************************************************/
+package org.eclipse.remote.telnet.internal.core;
+
+import java.io.FileOutputStream;
+import java.io.PrintStream;
+import java.util.Hashtable;
+
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.osgi.service.debug.DebugOptions;
+import org.eclipse.osgi.service.debug.DebugOptionsListener;
+import org.osgi.framework.BundleContext;
+
+/**
+ * A simple logger class. Every method in this class is static, so they can be
+ * called from both class and instance methods. To use this class, write code
+ * like this:
+ * <p>
+ *
+ * <pre>
+ * Logger.log(&quot;something has happened&quot;);
+ * Logger.log(&quot;counter is &quot; + counter);
+ * </pre>
+ *
+ * @author Fran Litterio <francis.litterio@windriver.com>
+ *
+ */
+public final class Logger implements DebugOptionsListener {
+ public static final String TRACE_DEBUG_LOG = "org.eclipse.remote.telnet.core/debug/log"; //$NON-NLS-1$
+ public static final String TRACE_DEBUG_LOG_CHAR = "org.eclipse.remote.telnet.coredebug/log/char"; //$NON-NLS-1$
+ public static final String TRACE_DEBUG_LOG_VT100BACKEND = "org.eclipse.remote.telnet.core/debug/log/VT100Backend"; //$NON-NLS-1$
+
+ private static PrintStream logStream;
+ private static Logger logger;
+
+ private DebugOptions options;
+
+ public static void configure(BundleContext context) {
+ if (logger == null) {
+ logger = new Logger(context);
+ }
+ }
+
+ private Logger(BundleContext context) {
+ Hashtable<String, String> props = new Hashtable<>(2);
+ props.put(DebugOptions.LISTENER_SYMBOLICNAME, Activator.PLUGIN_ID);
+ context.registerService(DebugOptionsListener.class.getName(), this, props);
+ }
+
+ /**
+ * Encodes a String such that non-printable control characters are
+ * converted into user-readable escape sequences for logging.
+ *
+ * @param message
+ * String to encode
+ * @return encoded String
+ */
+ public static final String encode(String message) {
+ boolean encoded = false;
+ StringBuffer buf = new StringBuffer(message.length() + 32);
+ for (int i = 0; i < message.length(); i++) {
+ char c = message.charAt(i);
+ switch (c) {
+ case '\\':
+ case '\'':
+ buf.append('\\');
+ buf.append(c);
+ encoded = true;
+ break;
+ case '\r':
+ buf.append('\\');
+ buf.append('r');
+ encoded = true;
+ break;
+ case '\n':
+ buf.append('\\');
+ buf.append('n');
+ encoded = true;
+ break;
+ case '\t':
+ buf.append('\\');
+ buf.append('t');
+ encoded = true;
+ break;
+ case '\f':
+ buf.append('\\');
+ buf.append('f');
+ encoded = true;
+ break;
+ case '\b':
+ buf.append('\\');
+ buf.append('b');
+ encoded = true;
+ break;
+ default:
+ if (c <= '\u000f') {
+ buf.append('\\');
+ buf.append('x');
+ buf.append('0');
+ buf.append(Integer.toHexString(c));
+ encoded = true;
+ } else if (c >= ' ' && c < '\u007f') {
+ buf.append(c);
+ } else if (c <= '\u00ff') {
+ buf.append('\\');
+ buf.append('x');
+ buf.append(Integer.toHexString(c));
+ encoded = true;
+ } else {
+ buf.append('\\');
+ buf.append('u');
+ if (c <= '\u0fff') {
+ buf.append('0');
+ }
+ buf.append(Integer.toHexString(c));
+ encoded = true;
+ }
+ }
+ }
+ if (encoded) {
+ return buf.toString();
+ }
+ return message;
+ }
+
+ /**
+ * Checks if logging is enabled.
+ *
+ * @return true if logging is enabled.
+ */
+ public static final boolean isLogEnabled() {
+ return (logStream != null);
+ }
+
+ /**
+ * Logs the specified message. Do not append a newline to parameter
+ * <i>message</i>. This method does that for you.
+ *
+ * @param message
+ * A String containing the message to log.
+ */
+ public static final void log(String message) {
+ if (logStream != null) {
+ // Read my own stack to get the class name, method name, and line
+ // number of
+ // where this method was called.
+
+ StackTraceElement caller = new Throwable().getStackTrace()[1];
+ int lineNumber = caller.getLineNumber();
+ String className = caller.getClassName();
+ String methodName = caller.getMethodName();
+ className = className.substring(className.lastIndexOf('.') + 1);
+
+ logStream.println(className + "." + methodName + ":" + lineNumber + ": " + message); //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
+ logStream.flush();
+ }
+ }
+
+ /**
+ * Writes a stack trace for an exception to both Standard Error and to the
+ * log file.
+ */
+ public static final void logException(Exception ex) {
+ // log in eclipse error log
+ if (Activator.getDefault() != null) {
+ Activator.getDefault().getLog()
+ .log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, IStatus.OK, ex.getMessage(), ex));
+ } else {
+ ex.printStackTrace();
+ }
+ // Additional Tracing for debug purposes:
+ // Read my own stack to get the class name, method name, and line number
+ // of where this method was called
+ if (logStream != null) {
+ StackTraceElement caller = new Throwable().getStackTrace()[1];
+ int lineNumber = caller.getLineNumber();
+ String className = caller.getClassName();
+ String methodName = caller.getMethodName();
+ className = className.substring(className.lastIndexOf('.') + 1);
+
+ PrintStream tmpStream = System.err;
+
+ if (logStream != null) {
+ tmpStream = logStream;
+ }
+
+ tmpStream.println(className + "." + methodName + ":" + lineNumber + ": " + //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
+ "Caught exception: " + ex); //$NON-NLS-1$
+ ex.printStackTrace(tmpStream);
+ }
+ }
+
+ @Override
+ public void optionsChanged(DebugOptions options) {
+ this.options = options;
+
+ // Any of the three known debugging options turns on the creation of the log file
+ boolean createLogFile = isOptionEnabled(TRACE_DEBUG_LOG) || isOptionEnabled(TRACE_DEBUG_LOG_CHAR)
+ || isOptionEnabled(TRACE_DEBUG_LOG_VT100BACKEND);
+
+ // Log only if tracing is enabled
+ if (createLogFile && Activator.getDefault() != null) {
+ IPath logFile = Platform.getStateLocation(Activator.getDefault().getBundle());
+ if (logFile != null && logFile.toFile().isDirectory()) {
+ logFile = logFile.append("tmterminal.log"); //$NON-NLS-1$
+ try {
+ logStream = new PrintStream(new FileOutputStream(logFile.toFile(), true));
+ } catch (Exception ex) {
+ logStream = System.err;
+ logStream.println("Exception when opening log file -- logging to stderr!"); //$NON-NLS-1$
+ ex.printStackTrace(logStream);
+ }
+ }
+ }
+ }
+
+ public boolean isOptionEnabled(String option) {
+ if (options == null) {
+ return false;
+ }
+ return options.getBooleanOption(Activator.PLUGIN_ID + option, false);
+ }
+}
diff --git a/remote/org.eclipse.remote.telnet.core/src/org/eclipse/remote/telnet/internal/core/messages/Messages.java b/remote/org.eclipse.remote.telnet.core/src/org/eclipse/remote/telnet/internal/core/messages/Messages.java
new file mode 100644
index 00000000000..9b82d7265d2
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.core/src/org/eclipse/remote/telnet/internal/core/messages/Messages.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * Copyright (c) 2015 IBM Corporation, and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - initial contribution
+ *******************************************************************************/
+package org.eclipse.remote.telnet.internal.core.messages;
+
+import org.eclipse.osgi.util.NLS;
+
+public class Messages extends NLS {
+ private static final String BUNDLE_NAME = "org.eclipse.remote.telnet.internal.core.messages.messages"; //$NON-NLS-1$
+
+ public static String TelnetCommandShell_0;
+ public static String TelnetProtocol_0;
+
+ static {
+ // initialize resource bundle
+ NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+ }
+
+ private Messages() {
+ }
+}
diff --git a/remote/org.eclipse.remote.telnet.core/src/org/eclipse/remote/telnet/internal/core/messages/messages.properties b/remote/org.eclipse.remote.telnet.core/src/org/eclipse/remote/telnet/internal/core/messages/messages.properties
new file mode 100644
index 00000000000..aaa36f39359
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.core/src/org/eclipse/remote/telnet/internal/core/messages/messages.properties
@@ -0,0 +1,15 @@
+################################################################################
+# Copyright (c) 2015 IBM Corporation, and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# IBM Corporation - initial contribution
+################################################################################
+TelnetCommandShell_0=Unknown host:
+TelnetProtocol_0=Connection closed by foreign host.
diff --git a/remote/org.eclipse.remote.telnet.ui/.classpath b/remote/org.eclipse.remote.telnet.ui/.classpath
new file mode 100644
index 00000000000..e801ebfb468
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.ui/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/remote/org.eclipse.remote.telnet.ui/.project b/remote/org.eclipse.remote.telnet.ui/.project
new file mode 100644
index 00000000000..4614316f3b3
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.ui/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.remote.telnet.ui</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+ </natures>
+</projectDescription>
diff --git a/remote/org.eclipse.remote.telnet.ui/.settings/org.eclipse.core.resources.prefs b/remote/org.eclipse.remote.telnet.ui/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.ui/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/remote/org.eclipse.remote.telnet.ui/.settings/org.eclipse.jdt.core.prefs b/remote/org.eclipse.remote.telnet.ui/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..e3a8104f9ca
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.ui/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/remote/org.eclipse.remote.telnet.ui/.settings/org.eclipse.jdt.launching.prefs b/remote/org.eclipse.remote.telnet.ui/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 00000000000..f8a131b56e0
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.ui/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_COMPILER_COMPLIANCE_DOES_NOT_MATCH_JRE=warning
+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=warning
diff --git a/remote/org.eclipse.remote.telnet.ui/.settings/org.eclipse.jdt.ui.prefs b/remote/org.eclipse.remote.telnet.ui/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.ui/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/remote/org.eclipse.remote.telnet.ui/.settings/org.eclipse.pde.api.tools.prefs b/remote/org.eclipse.remote.telnet.ui/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 00000000000..ec9fbf321d0
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.ui/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,184 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITH_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_FIELD=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERCLASS_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_CHANGED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENTS=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETERS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Error
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Warning
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+MISSING_EE_DESCRIPTIONS=Warning
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=false
+changed_execution_env=Error
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+incompatible_api_component_version_report_major_without_breaking_change=Warning
+incompatible_api_component_version_report_minor_without_api_change=Warning
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/remote/org.eclipse.remote.telnet.ui/.settings/org.eclipse.pde.prefs b/remote/org.eclipse.remote.telnet.ui/.settings/org.eclipse.pde.prefs
new file mode 100644
index 00000000000..d2dc703ba9e
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.ui/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,35 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=2
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=2
+compilers.p.missing-version-export-package=2
+compilers.p.missing-version-import-package=2
+compilers.p.missing-version-require-bundle=2
+compilers.p.no-required-att=0
+compilers.p.no.automatic.module=1
+compilers.p.not-externalized-att=1
+compilers.p.service.component.without.lazyactivation=1
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/remote/org.eclipse.remote.telnet.ui/META-INF/MANIFEST.MF b/remote/org.eclipse.remote.telnet.ui/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..5bf47b0cac2
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,29 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %bundleName
+Bundle-SymbolicName: org.eclipse.remote.telnet.ui;singleton:=true
+Bundle-Version: 1.0.200.qualifier
+Bundle-Activator: org.eclipse.remote.telnet.internal.ui.Activator
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Bundle-ActivationPolicy: lazy
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Import-Package: org.eclipse.core.runtime,
+ org.eclipse.jface.dialogs,
+ org.eclipse.jface.operation,
+ org.eclipse.jface.resource,
+ org.eclipse.jface.viewers,
+ org.eclipse.jface.window,
+ org.eclipse.jface.wizard,
+ org.eclipse.osgi.util,
+ org.eclipse.remote.core,
+ org.eclipse.remote.core.exception,
+ org.eclipse.remote.telnet.core,
+ org.eclipse.remote.ui,
+ org.eclipse.swt,
+ org.eclipse.swt.events,
+ org.eclipse.swt.graphics,
+ org.eclipse.swt.layout,
+ org.eclipse.swt.widgets,
+ org.eclipse.ui.plugin,
+ org.osgi.framework
diff --git a/remote/org.eclipse.remote.telnet.ui/about.html b/remote/org.eclipse.remote.telnet.ui/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.ui/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/remote/org.eclipse.remote.telnet.ui/about.ini b/remote/org.eclipse.remote.telnet.ui/about.ini
new file mode 100644
index 00000000000..e07a7bb377e
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.ui/about.ini
@@ -0,0 +1,24 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%blurb
+
+# Property "windowImage" contains path to window icon (16x16)
+# needed for primary features only
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=cdt_logo_icon32.png
+
+# Property "aboutImage" contains path to product image (500x330 or 115x164)
+# needed for primary features only
+
+# Property "appName" contains name of the application (translated)
+# needed for primary features only
+
+# Property "welcomePerspective" contains the id of the perspective in which the
+# welcome page is to be opened.
+# optional
diff --git a/remote/org.eclipse.remote.telnet.ui/about.mappings b/remote/org.eclipse.remote.telnet.ui/about.mappings
new file mode 100644
index 00000000000..936a8039c3e
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.ui/about.mappings
@@ -0,0 +1,9 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+# The following should contain the build version.
+# e.g. "0=20200106-1728"
+# This value will be added automatically via the build scripts
+0=${buildId}
diff --git a/remote/org.eclipse.remote.telnet.ui/about.properties b/remote/org.eclipse.remote.telnet.ui/about.properties
new file mode 100644
index 00000000000..07d04d6070c
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.ui/about.properties
@@ -0,0 +1,32 @@
+###############################################################################
+# Copyright (c) 2021, 2022 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+# about.properties
+# contains externalized strings for about.ini
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# fill-ins are supplied by about.mappings
+# This file should be translated.
+# NOTE TO TRANSLATOR: Please do not translate the featureVersion variable.
+
+
+blurb=Telnet Remote Services\n\
+\n\
+Version: {featureVersion}\n\
+Build id: {0}\n\
+\n\
+Copyright (c) 2021, 2022 Contributors to the Eclipse Foundation
+\n\
+See the NOTICE file(s) distributed with this work for additional\n\
+information regarding copyright ownership.\n\
+\n\
+Visit http://www.eclipse.org/cdt
diff --git a/remote/org.eclipse.remote.telnet.ui/build.properties b/remote/org.eclipse.remote.telnet.ui/build.properties
new file mode 100644
index 00000000000..ed7e7fb3471
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.ui/build.properties
@@ -0,0 +1,13 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ about.html,\
+ about.ini,\
+ about.mappings,\
+ about.properties,\
+ cdt_logo_icon32.png,\
+ icons/,\
+ plugin.properties
+src.includes = about.html
diff --git a/remote/org.eclipse.remote.telnet.ui/cdt_logo_icon32.png b/remote/org.eclipse.remote.telnet.ui/cdt_logo_icon32.png
new file mode 100644
index 00000000000..470ca81b327
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.ui/cdt_logo_icon32.png
Binary files differ
diff --git a/remote/org.eclipse.remote.telnet.ui/icons/telnet.png b/remote/org.eclipse.remote.telnet.ui/icons/telnet.png
new file mode 100644
index 00000000000..58bc8dafa9b
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.ui/icons/telnet.png
Binary files differ
diff --git a/remote/org.eclipse.remote.telnet.ui/plugin.properties b/remote/org.eclipse.remote.telnet.ui/plugin.properties
new file mode 100644
index 00000000000..214fce2774e
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.ui/plugin.properties
@@ -0,0 +1,2 @@
+bundleName = Remote Serial Port Services UI
+providerName = Eclipse PTP
diff --git a/remote/org.eclipse.remote.telnet.ui/plugin.xml b/remote/org.eclipse.remote.telnet.ui/plugin.xml
new file mode 100644
index 00000000000..d123a9ce009
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.ui/plugin.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension
+ point="org.eclipse.remote.core.remoteServices">
+ <connectionTypeService
+ connectionTypeId="org.eclipse.remote.telnet.core.connectionType"
+ factory="org.eclipse.remote.telnet.internal.ui.TelnetConnectionsUI$Factory"
+ service="org.eclipse.remote.ui.IRemoteUIConnectionService">
+ </connectionTypeService>
+ </extension>
+
+</plugin>
diff --git a/remote/org.eclipse.remote.telnet.ui/ptp_logo_icon32.png b/remote/org.eclipse.remote.telnet.ui/ptp_logo_icon32.png
new file mode 100644
index 00000000000..e8ec57270f3
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.ui/ptp_logo_icon32.png
Binary files differ
diff --git a/remote/org.eclipse.remote.telnet.ui/src/org/eclipse/remote/telnet/internal/ui/Activator.java b/remote/org.eclipse.remote.telnet.ui/src/org/eclipse/remote/telnet/internal/ui/Activator.java
new file mode 100644
index 00000000000..89f214c2794
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.ui/src/org/eclipse/remote/telnet/internal/ui/Activator.java
@@ -0,0 +1,77 @@
+/*******************************************************************************
+ * Copyright (c) 2015 IBM Corporation, and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - initial contribution
+ *******************************************************************************/
+package org.eclipse.remote.telnet.internal.ui;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.eclipse.remote.telnet.ui"; //$NON-NLS-1$
+
+ // Image keys
+ public static final String IMG_CONNECTION_TYPE = PLUGIN_ID + ".connectionType"; //$NON-NLS-1$
+
+ // The shared instance
+ private static Activator plugin;
+
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ getImageRegistry().put(IMG_CONNECTION_TYPE, imageDescriptorFromPlugin(PLUGIN_ID, "/icons/telnet.png")); //$NON-NLS-1$
+ }
+
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+ public static void log(IStatus status) {
+ plugin.getLog().log(status);
+ }
+
+ public static void log(Exception e) {
+ if (e instanceof CoreException) {
+ log(((CoreException) e).getStatus());
+ } else {
+ log(new Status(IStatus.ERROR, PLUGIN_ID, e.getLocalizedMessage(), e));
+ }
+ }
+
+ public static <T> T getService(Class<T> service) {
+ BundleContext context = plugin.getBundle().getBundleContext();
+ ServiceReference<T> ref = context.getServiceReference(service);
+ return ref != null ? context.getService(ref) : null;
+ }
+
+}
diff --git a/remote/org.eclipse.remote.telnet.ui/src/org/eclipse/remote/telnet/internal/ui/Messages.java b/remote/org.eclipse.remote.telnet.ui/src/org/eclipse/remote/telnet/internal/ui/Messages.java
new file mode 100644
index 00000000000..abdbf2a6d29
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.ui/src/org/eclipse/remote/telnet/internal/ui/Messages.java
@@ -0,0 +1,41 @@
+/*******************************************************************************
+ * Copyright (c) 2015 IBM Corporation, and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - initial contribution
+ *******************************************************************************/
+package org.eclipse.remote.telnet.internal.ui;
+
+import org.eclipse.osgi.util.NLS;
+
+public class Messages extends NLS {
+ private static final String BUNDLE_NAME = "org.eclipse.remote.telnet.internal.ui.messages"; //$NON-NLS-1$
+ public static String NewSerialPortConnectionWizardPage_BaudRateLabel;
+ public static String NewSerialPortConnectionWizardPage_ByteSizeLabel;
+ public static String NewSerialPortConnectionWizardPage_Description;
+ public static String NewSerialPortConnectionWizardPage_NameLabel;
+ public static String NewSerialPortConnectionWizardPage_ParityLabel;
+ public static String NewSerialPortConnectionWizardPage_PortLabel;
+ public static String NewSerialPortConnectionWizardPage_StopBitsLabel;
+ public static String NewSerialPortConnectionWizardPage_Title;
+ public static String TelnetConnectionWizardPage_0;
+ public static String TelnetConnectionWizardPage_1;
+ public static String TelnetConnectionWizardPage_2;
+ public static String TelnetConnectionWizardPage_3;
+ public static String TelnetConnectionWizardPage_4;
+
+ static {
+ // initialize resource bundle
+ NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+ }
+
+ private Messages() {
+ }
+}
diff --git a/remote/org.eclipse.remote.telnet.ui/src/org/eclipse/remote/telnet/internal/ui/TelnetConnectionWizard.java b/remote/org.eclipse.remote.telnet.ui/src/org/eclipse/remote/telnet/internal/ui/TelnetConnectionWizard.java
new file mode 100644
index 00000000000..a909567e41c
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.ui/src/org/eclipse/remote/telnet/internal/ui/TelnetConnectionWizard.java
@@ -0,0 +1,106 @@
+/*******************************************************************************
+ * Copyright (c) 2015 IBM Corporation, and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - initial contribution
+ *******************************************************************************/
+package org.eclipse.remote.telnet.internal.ui;
+
+import java.util.Set;
+
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteConnectionHostService;
+import org.eclipse.remote.core.IRemoteConnectionType;
+import org.eclipse.remote.core.IRemoteConnectionWorkingCopy;
+import org.eclipse.remote.core.exception.RemoteConnectionException;
+import org.eclipse.remote.ui.IRemoteUIConnectionWizard;
+import org.eclipse.swt.widgets.Shell;
+
+public class TelnetConnectionWizard extends Wizard implements IRemoteUIConnectionWizard {
+
+ private TelnetConnectionWizardPage page;
+ private IRemoteConnectionWorkingCopy workingCopy;
+ private final Shell shell;
+ private final IRemoteConnectionType connectionType;
+
+ public TelnetConnectionWizard(Shell shell, IRemoteConnectionType connectionType) {
+ this.shell = shell;
+ this.connectionType = connectionType;
+ }
+
+ @Override
+ public void addPages() {
+ page = new TelnetConnectionWizardPage();
+ if (workingCopy != null) {
+ IRemoteConnectionHostService hostSvc = workingCopy.getService(IRemoteConnectionHostService.class);
+ if (hostSvc != null) {
+ page.setHost(hostSvc.getHostname());
+ page.setPort(hostSvc.getPort());
+ page.setTimeout(hostSvc.getTimeout());
+ }
+ }
+ addPage(page);
+ }
+
+ @Override
+ public boolean performFinish() {
+ IRemoteConnection conn = getConnection();
+ if (conn != null) {
+ IRemoteConnectionHostService hostSvc = conn.getService(IRemoteConnectionHostService.class);
+ if (hostSvc != null) {
+ hostSvc.setHostname(page.getHost());
+ hostSvc.setPort(page.getPort());
+ hostSvc.setTimeout(page.getTimeout());
+ return true;
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public IRemoteConnectionWorkingCopy open() {
+ WizardDialog dialog = new WizardDialog(shell, this);
+ dialog.setBlockOnOpen(true);
+ if (dialog.open() == WizardDialog.OK) {
+ return getConnection();
+ }
+ return null;
+ }
+
+ @Override
+ public IRemoteConnectionWorkingCopy getConnection() {
+ if (workingCopy == null) {
+ try {
+ workingCopy = connectionType.newConnection(page.getHost());
+ } catch (RemoteConnectionException e) {
+ Activator.log(e.getStatus());
+ }
+ }
+ return workingCopy;
+ }
+
+ @Override
+ public void setConnection(IRemoteConnectionWorkingCopy connection) {
+ workingCopy = connection;
+ }
+
+ @Override
+ public void setConnectionName(String name) {
+ // Ignored
+ }
+
+ @Override
+ public void setInvalidConnectionNames(Set<String> names) {
+ // Ignored
+ }
+
+}
diff --git a/remote/org.eclipse.remote.telnet.ui/src/org/eclipse/remote/telnet/internal/ui/TelnetConnectionWizardPage.java b/remote/org.eclipse.remote.telnet.ui/src/org/eclipse/remote/telnet/internal/ui/TelnetConnectionWizardPage.java
new file mode 100644
index 00000000000..bae212079ba
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.ui/src/org/eclipse/remote/telnet/internal/ui/TelnetConnectionWizardPage.java
@@ -0,0 +1,145 @@
+/*******************************************************************************
+ * Copyright (c) 2015 IBM Corporation, and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - initial contribution
+ *******************************************************************************/
+package org.eclipse.remote.telnet.internal.ui;
+
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.remote.telnet.core.TelnetConnection;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.KeyListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+
+public class TelnetConnectionWizardPage extends WizardPage {
+
+ private String host;
+ private int port = TelnetConnection.DEFAULT_PORT;
+ private int timeout = TelnetConnection.DEFAULT_TIMEOUT;
+
+ private Text hostText;
+ private Text portText;
+ private Text timeoutText;
+
+ protected TelnetConnectionWizardPage() {
+ super(TelnetConnectionWizardPage.class.getName());
+ setDescription(Messages.TelnetConnectionWizardPage_0);
+ setTitle(Messages.TelnetConnectionWizardPage_1);
+ }
+
+ @Override
+ public void createControl(Composite parent) {
+ Composite comp = new Composite(parent, SWT.NONE);
+ comp.setLayout(new GridLayout(2, false));
+
+ Label nameLabel = new Label(comp, SWT.NONE);
+ nameLabel.setText(Messages.TelnetConnectionWizardPage_2);
+
+ hostText = new Text(comp, SWT.BORDER | SWT.SINGLE);
+ hostText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ hostText.setText(host != null ? host : ""); //$NON-NLS-1$
+ hostText.addKeyListener(new KeyListener() {
+ @Override
+ public void keyReleased(KeyEvent e) {
+ updateStatus();
+ }
+
+ @Override
+ public void keyPressed(KeyEvent e) {
+ // Ignore
+ }
+ });
+
+ Label portLabel = new Label(comp, SWT.NONE);
+ portLabel.setText(Messages.TelnetConnectionWizardPage_3);
+
+ portText = new Text(comp, SWT.BORDER | SWT.SINGLE);
+ portText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ portText.setText(port < 0 ? "" : Integer.toString(port)); //$NON-NLS-1$
+ portText.addKeyListener(new KeyListener() {
+ @Override
+ public void keyReleased(KeyEvent e) {
+ updateStatus();
+ }
+
+ @Override
+ public void keyPressed(KeyEvent e) {
+ // Ignore
+ }
+ });
+
+ Label timeoutLabel = new Label(comp, SWT.NONE);
+ timeoutLabel.setText(Messages.TelnetConnectionWizardPage_4);
+
+ timeoutText = new Text(comp, SWT.BORDER | SWT.SINGLE);
+ timeoutText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ timeoutText.setText(timeout < 0 ? "" : Integer.toString(timeout)); //$NON-NLS-1$
+ timeoutText.addKeyListener(new KeyListener() {
+ @Override
+ public void keyReleased(KeyEvent e) {
+ updateStatus();
+ }
+
+ @Override
+ public void keyPressed(KeyEvent e) {
+ // Ignore
+ }
+ });
+
+ setControl(comp);
+ updateStatus();
+ }
+
+ private void updateStatus() {
+ host = hostText.getText();
+ try {
+ port = Integer.parseInt(portText.getText());
+ } catch (NumberFormatException e) {
+ port = -1;
+ }
+ try {
+ timeout = Integer.parseInt(timeoutText.getText());
+ } catch (NumberFormatException e) {
+ timeout = -1;
+ }
+
+ setPageComplete(!host.isEmpty());
+ }
+
+ public String getHost() {
+ return host;
+ }
+
+ public int getPort() {
+ return port;
+ }
+
+ public int getTimeout() {
+ return timeout;
+ }
+
+ public void setHost(String host) {
+ this.host = host;
+ }
+
+ public void setPort(int port) {
+ this.port = port;
+ }
+
+ public void setTimeout(int timeout) {
+ this.timeout = timeout;
+ }
+}
diff --git a/remote/org.eclipse.remote.telnet.ui/src/org/eclipse/remote/telnet/internal/ui/TelnetConnectionsUI.java b/remote/org.eclipse.remote.telnet.ui/src/org/eclipse/remote/telnet/internal/ui/TelnetConnectionsUI.java
new file mode 100644
index 00000000000..15d180dea28
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.ui/src/org/eclipse/remote/telnet/internal/ui/TelnetConnectionsUI.java
@@ -0,0 +1,95 @@
+/*******************************************************************************
+ * Copyright (c) 2015, 2020 QNX Software Systems, and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - initial contribution
+ * Greg Watson (IBM) - Adapted for telnet service
+ *******************************************************************************/
+package org.eclipse.remote.telnet.internal.ui;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.jface.dialogs.ProgressMonitorDialog;
+import org.eclipse.jface.operation.IRunnableContext;
+import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteConnectionType;
+import org.eclipse.remote.core.IRemoteConnectionType.Service;
+import org.eclipse.remote.core.exception.RemoteConnectionException;
+import org.eclipse.remote.ui.AbstractRemoteUIConnectionService;
+import org.eclipse.remote.ui.IRemoteUIConnectionService;
+import org.eclipse.remote.ui.IRemoteUIConnectionWizard;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Shell;
+
+public class TelnetConnectionsUI extends AbstractRemoteUIConnectionService {
+
+ private final IRemoteConnectionType connectionType;
+
+ private TelnetConnectionsUI(IRemoteConnectionType connectionType) {
+ this.connectionType = connectionType;
+ }
+
+ public static class Factory implements IRemoteConnectionType.Service.Factory {
+ @SuppressWarnings("unchecked")
+ @Override
+ public <T extends Service> T getService(IRemoteConnectionType connectionType, Class<T> service) {
+ if (IRemoteUIConnectionService.class.equals(service)) {
+ return (T) new TelnetConnectionsUI(connectionType);
+ }
+ return null;
+ }
+ }
+
+ @Override
+ public IRemoteConnectionType getConnectionType() {
+ return connectionType;
+ }
+
+ @Override
+ public IRemoteUIConnectionWizard getConnectionWizard(Shell shell) {
+ return new TelnetConnectionWizard(shell, connectionType);
+ }
+
+ @Override
+ public void openConnectionWithProgress(Shell shell, IRunnableContext context, final IRemoteConnection connection) {
+ try {
+ IRunnableWithProgress op = monitor -> {
+ try {
+ connection.open(monitor);
+ } catch (RemoteConnectionException e) {
+ throw new InvocationTargetException(e);
+ }
+ if (monitor.isCanceled()) {
+ throw new InterruptedException();
+ }
+ };
+ if (context != null) {
+ context.run(true, true, op);
+ } else {
+ new ProgressMonitorDialog(shell).run(true, true, op);
+ }
+ } catch (InvocationTargetException | InterruptedException e) {
+ Activator.log(e);
+ }
+ }
+
+ @Override
+ public ILabelProvider getLabelProvider() {
+ return new DefaultLabelProvider() {
+ @Override
+ public Image getImage(Object element) {
+ return Activator.getDefault().getImageRegistry().get(Activator.IMG_CONNECTION_TYPE);
+ }
+ };
+ }
+
+}
diff --git a/remote/org.eclipse.remote.telnet.ui/src/org/eclipse/remote/telnet/internal/ui/messages.properties b/remote/org.eclipse.remote.telnet.ui/src/org/eclipse/remote/telnet/internal/ui/messages.properties
new file mode 100644
index 00000000000..f7aed57d6db
--- /dev/null
+++ b/remote/org.eclipse.remote.telnet.ui/src/org/eclipse/remote/telnet/internal/ui/messages.properties
@@ -0,0 +1,26 @@
+################################################################################
+# Copyright (c) 2015 IBM Corporation, and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# IBM Corporation - initial contribution
+################################################################################
+NewSerialPortConnectionWizardPage_BaudRateLabel=Baud rate:
+NewSerialPortConnectionWizardPage_ByteSizeLabel=Data size:
+NewSerialPortConnectionWizardPage_Description=New serial port connection settings
+NewSerialPortConnectionWizardPage_NameLabel=Connection name:
+NewSerialPortConnectionWizardPage_ParityLabel=Parity:
+NewSerialPortConnectionWizardPage_PortLabel=Serial port:
+NewSerialPortConnectionWizardPage_StopBitsLabel=Stop bits:
+NewSerialPortConnectionWizardPage_Title=New Serial Port Connection
+TelnetConnectionWizardPage_0=New telnet connection settings
+TelnetConnectionWizardPage_1=New Telnet Connection
+TelnetConnectionWizardPage_2=Host
+TelnetConnectionWizardPage_3=Port:
+TelnetConnectionWizardPage_4=Timeout:
diff --git a/remote/org.eclipse.remote.ui.tests/.classpath b/remote/org.eclipse.remote.ui.tests/.classpath
new file mode 100644
index 00000000000..a42a828e04a
--- /dev/null
+++ b/remote/org.eclipse.remote.ui.tests/.classpath
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src">
+ <attributes>
+ <attribute name="test" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/remote/org.eclipse.remote.ui.tests/.project b/remote/org.eclipse.remote.ui.tests/.project
new file mode 100644
index 00000000000..c0c71f6780c
--- /dev/null
+++ b/remote/org.eclipse.remote.ui.tests/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.remote.ui.tests</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/remote/org.eclipse.remote.ui.tests/.settings/org.eclipse.core.resources.prefs b/remote/org.eclipse.remote.ui.tests/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/remote/org.eclipse.remote.ui.tests/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/remote/org.eclipse.remote.ui.tests/.settings/org.eclipse.jdt.core.prefs b/remote/org.eclipse.remote.ui.tests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..5b1c443114d
--- /dev/null
+++ b/remote/org.eclipse.remote.ui.tests/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=ignore
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
+org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=ignore
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/remote/org.eclipse.remote.ui.tests/.settings/org.eclipse.jdt.launching.prefs b/remote/org.eclipse.remote.ui.tests/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 00000000000..f8a131b56e0
--- /dev/null
+++ b/remote/org.eclipse.remote.ui.tests/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_COMPILER_COMPLIANCE_DOES_NOT_MATCH_JRE=warning
+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=warning
diff --git a/remote/org.eclipse.remote.ui.tests/.settings/org.eclipse.jdt.ui.prefs b/remote/org.eclipse.remote.ui.tests/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/remote/org.eclipse.remote.ui.tests/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/remote/org.eclipse.remote.ui.tests/.settings/org.eclipse.pde.api.tools.prefs b/remote/org.eclipse.remote.ui.tests/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 00000000000..ec9fbf321d0
--- /dev/null
+++ b/remote/org.eclipse.remote.ui.tests/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,184 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITH_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_FIELD=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERCLASS_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_CHANGED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENTS=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETERS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Error
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Warning
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+MISSING_EE_DESCRIPTIONS=Warning
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=false
+changed_execution_env=Error
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+incompatible_api_component_version_report_major_without_breaking_change=Warning
+incompatible_api_component_version_report_minor_without_api_change=Warning
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/remote/org.eclipse.remote.ui.tests/.settings/org.eclipse.pde.prefs b/remote/org.eclipse.remote.ui.tests/.settings/org.eclipse.pde.prefs
new file mode 100644
index 00000000000..51a63ec9988
--- /dev/null
+++ b/remote/org.eclipse.remote.ui.tests/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,35 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=2
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=2
+compilers.p.missing-version-export-package=2
+compilers.p.missing-version-import-package=2
+compilers.p.missing-version-require-bundle=2
+compilers.p.no-required-att=0
+compilers.p.no.automatic.module=1
+compilers.p.not-externalized-att=2
+compilers.p.service.component.without.lazyactivation=1
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/remote/org.eclipse.remote.ui.tests/META-INF/MANIFEST.MF b/remote/org.eclipse.remote.ui.tests/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..19bd6cd5f5a
--- /dev/null
+++ b/remote/org.eclipse.remote.ui.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,13 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Remote UI Tests
+Bundle-SymbolicName: org.eclipse.remote.ui.tests
+Bundle-Version: 1.0.100.qualifier
+Fragment-Host: org.eclipse.remote.ui;bundle-version="2.0.0"
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Require-Bundle: org.junit;bundle-version="4.12.0",
+ org.eclipse.remote.core,
+ org.eclipse.ui.workbench,
+ org.eclipse.swt,
+ org.eclipse.core.filesystem
+Bundle-Vendor: Eclipse PTP
diff --git a/remote/org.eclipse.remote.ui.tests/about.html b/remote/org.eclipse.remote.ui.tests/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/remote/org.eclipse.remote.ui.tests/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/remote/org.eclipse.remote.ui.tests/build.properties b/remote/org.eclipse.remote.ui.tests/build.properties
new file mode 100644
index 00000000000..67af4196ea0
--- /dev/null
+++ b/remote/org.eclipse.remote.ui.tests/build.properties
@@ -0,0 +1,6 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ about.html,\
+ .
+src.includes = about.html
diff --git a/remote/org.eclipse.remote.ui.tests/src/org/eclipse/remote/ui/tests/RemoteResourceBrowserTest.java b/remote/org.eclipse.remote.ui.tests/src/org/eclipse/remote/ui/tests/RemoteResourceBrowserTest.java
new file mode 100644
index 00000000000..856541a6b81
--- /dev/null
+++ b/remote/org.eclipse.remote.ui.tests/src/org/eclipse/remote/ui/tests/RemoteResourceBrowserTest.java
@@ -0,0 +1,215 @@
+/*
+ * Copyright (c) 2016 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.remote.ui.tests;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.util.List;
+
+import org.eclipse.core.filesystem.IFileStore;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteConnectionHostService;
+import org.eclipse.remote.core.IRemoteConnectionType;
+import org.eclipse.remote.core.IRemoteConnectionWorkingCopy;
+import org.eclipse.remote.core.IRemoteServicesManager;
+import org.eclipse.remote.core.exception.RemoteConnectionException;
+import org.eclipse.remote.internal.ui.RemoteUIPlugin;
+import org.eclipse.remote.ui.dialogs.RemoteResourceBrowser;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.PlatformUI;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+/*
+ * Provides tests to several scenarios but they should be
+ * executed manually (i.e. browse and click OK)
+ */
+@RunWith(JUnit4.class)
+public class RemoteResourceBrowserTest {
+ private static final String USERNAME = "test"; //$NON-NLS-1$
+ private static final String PASSWORD = ""; //$NON-NLS-1$
+ private static final String HOST = "localhost"; //$NON-NLS-1$
+ private static IRemoteConnectionType fConnectionType;
+ private static IRemoteConnection fRemoteConnection;
+ private static Shell shell = null;
+ private RemoteResourceBrowser browser;
+ private IFileStore expectedResource;
+
+ @BeforeClass
+ public static void setUp() {
+ IRemoteServicesManager manager = RemoteUIPlugin.getService(IRemoteServicesManager.class);
+ fConnectionType = manager.getConnectionType("org.eclipse.remote.JSch"); //$NON-NLS-1$
+ assertNotNull(fConnectionType);
+ IRemoteConnectionWorkingCopy wc = null;
+ try {
+ wc = fConnectionType.newConnection("test_connection");//$NON-NLS-1$
+ } catch (RemoteConnectionException e) {
+ fail(e.getLocalizedMessage());
+ }
+
+ IRemoteConnectionHostService hostService = wc.getService(IRemoteConnectionHostService.class);
+ assertNotNull(hostService);
+
+ String host = System.getenv("TEST_HOST");
+ if (host == null) {
+ host = HOST;
+ }
+ hostService.setHostname(host);
+
+ String username = System.getenv("TEST_USERNAME");
+ if (username == null) {
+ username = USERNAME;
+ }
+ hostService.setUsername(username);
+
+ String password = System.getenv("TEST_PASSWORD");
+ if (password == null) {
+ password = PASSWORD;
+ }
+ hostService.setPassword(password);
+
+ try {
+ fRemoteConnection = wc.save();
+ } catch (RemoteConnectionException e) {
+ fail(e.getLocalizedMessage());
+ }
+ assertNotNull(fRemoteConnection);
+
+ try {
+ fRemoteConnection.open(new NullProgressMonitor());
+ } catch (RemoteConnectionException e) {
+ fail(e.getLocalizedMessage());
+ }
+ assertTrue(fRemoteConnection.isOpen());
+
+ shell = PlatformUI.getWorkbench().getDisplay().getActiveShell();
+ assertNotNull(shell);
+ }
+
+ @AfterClass
+ public static void tearDown() throws RemoteConnectionException {
+ fConnectionType.removeConnection(fRemoteConnection);
+ }
+
+ /*
+ * Select any file.
+ */
+ @Test
+ public void browseFileTest() {
+ browser = new RemoteResourceBrowser(shell, SWT.SINGLE);
+ browser.setConnection(fRemoteConnection);
+ browser.setType(RemoteResourceBrowser.FILE_BROWSER);
+ browser.setTitle("Allows to select file only");
+ browser.open();
+ expectedResource = browser.getResource();
+ assertNotNull(expectedResource);
+ assertTrue(!expectedResource.fetchInfo().isDirectory());
+ }
+
+ /*
+ * Select any directory.
+ */
+ @Test
+ public void browseDirectoryTest() {
+ browser = new RemoteResourceBrowser(shell, SWT.SINGLE);
+ browser.setConnection(fRemoteConnection);
+ browser.setType(RemoteResourceBrowser.DIRECTORY_BROWSER);
+ browser.setTitle("Allows to select directory only");
+ browser.open();
+ expectedResource = browser.getResource();
+ assertNotNull(expectedResource);
+ assertTrue(expectedResource.fetchInfo().isDirectory());
+ }
+
+ /*
+ * Select either file or directory.
+ */
+ @Test
+ public void browseResourceTest() {
+ browser = new RemoteResourceBrowser(shell, SWT.SINGLE);
+ browser.setConnection(fRemoteConnection);
+ browser.setTitle("Allows to select either file or directory");
+ browser.open();
+ expectedResource = browser.getResource();
+ assertNotNull(expectedResource);
+ }
+
+ /*
+ * Select more than one resource.
+ */
+ @Test
+ public void browseResourcesTest() {
+ browser = new RemoteResourceBrowser(shell, SWT.MULTI);
+ browser.setConnection(fRemoteConnection);
+ browser.setTitle("Allows to select either multiple resources");
+ browser.open();
+ List<IFileStore> expectedResources = browser.getResources();
+ assertNotNull(expectedResources);
+ assertTrue(expectedResources.size() > 0);
+ }
+
+ /*
+ * Select to local connection and select a directory.
+ */
+ @Test
+ public void changeLocalConnectionTest() {
+ browser = new RemoteResourceBrowser(shell, SWT.SINGLE);
+ browser.setConnection(fRemoteConnection);
+ browser.setTitle("Allows to switch to local browsing");
+ browser.setType(RemoteResourceBrowser.DIRECTORY_BROWSER);
+ browser.showConnections(true);
+ browser.showLocalSelection(true);
+ browser.open();
+ expectedResource = browser.getResource();
+ assertNotNull(expectedResource);
+ assertEquals(expectedResource.getFileSystem().getScheme(), "file");
+ }
+
+ /*
+ * Initial path set.
+ */
+ @Test
+ public void setInitialPathTest() {
+ String initialPath = "/tmp";
+ browser = new RemoteResourceBrowser(shell, SWT.SINGLE);
+ browser.setConnection(fRemoteConnection);
+ browser.setTitle("Initial path set to " + initialPath);
+ browser.setType(RemoteResourceBrowser.FILE_BROWSER);
+ browser.setInitialPath(initialPath);
+ browser.open();
+ }
+
+ /*
+ * Show connections.
+ * Don't show hidden check box and new folder button.
+ */
+ @Test
+ public void changeDefaultSettingsTest() {
+ browser = new RemoteResourceBrowser(shell, SWT.SINGLE);
+ browser.setConnection(fRemoteConnection);
+ browser.setType(RemoteResourceBrowser.FILE_BROWSER);
+ browser.showConnections(true);
+ browser.showHiddenCheckbox(false);
+ browser.showNewFolderButton(false);
+ browser.open();
+ }
+}
diff --git a/remote/org.eclipse.remote.ui/.classpath b/remote/org.eclipse.remote.ui/.classpath
new file mode 100644
index 00000000000..e801ebfb468
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/remote/org.eclipse.remote.ui/.project b/remote/org.eclipse.remote.ui/.project
new file mode 100644
index 00000000000..c3d7657d04a
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.remote.ui</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+ </natures>
+</projectDescription>
diff --git a/remote/org.eclipse.remote.ui/.settings/org.eclipse.core.resources.prefs b/remote/org.eclipse.remote.ui/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/remote/org.eclipse.remote.ui/.settings/org.eclipse.jdt.core.prefs b/remote/org.eclipse.remote.ui/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..e3a8104f9ca
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/remote/org.eclipse.remote.ui/.settings/org.eclipse.jdt.launching.prefs b/remote/org.eclipse.remote.ui/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 00000000000..f8a131b56e0
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_COMPILER_COMPLIANCE_DOES_NOT_MATCH_JRE=warning
+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=warning
diff --git a/remote/org.eclipse.remote.ui/.settings/org.eclipse.jdt.ui.prefs b/remote/org.eclipse.remote.ui/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/remote/org.eclipse.remote.ui/.settings/org.eclipse.pde.api.tools.prefs b/remote/org.eclipse.remote.ui/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 00000000000..ec9fbf321d0
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,184 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITH_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_FIELD=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERCLASS_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_CHANGED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENTS=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETERS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Error
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Warning
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+MISSING_EE_DESCRIPTIONS=Warning
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=false
+changed_execution_env=Error
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+incompatible_api_component_version_report_major_without_breaking_change=Warning
+incompatible_api_component_version_report_minor_without_api_change=Warning
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/remote/org.eclipse.remote.ui/.settings/org.eclipse.pde.prefs b/remote/org.eclipse.remote.ui/.settings/org.eclipse.pde.prefs
new file mode 100644
index 00000000000..d2dc703ba9e
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,35 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=2
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=2
+compilers.p.missing-version-export-package=2
+compilers.p.missing-version-import-package=2
+compilers.p.missing-version-require-bundle=2
+compilers.p.no-required-att=0
+compilers.p.no.automatic.module=1
+compilers.p.not-externalized-att=1
+compilers.p.service.component.without.lazyactivation=1
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/remote/org.eclipse.remote.ui/META-INF/MANIFEST.MF b/remote/org.eclipse.remote.ui/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..6fca78aa060
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,52 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.remote.ui;singleton:=true
+Bundle-Version: 2.2.100.qualifier
+Bundle-Activator: org.eclipse.remote.internal.ui.RemoteUIPlugin
+Bundle-Vendor: %pluginProvider
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.remote.internal.ui;x-internal:=true,
+ org.eclipse.remote.internal.ui.messages;x-internal:=true,
+ org.eclipse.remote.internal.ui.preferences;x-internal:=true,
+ org.eclipse.remote.internal.ui.services.local;x-internal:=true,
+ org.eclipse.remote.ui,
+ org.eclipse.remote.ui.dialogs,
+ org.eclipse.remote.ui.widgets
+Bundle-Localization: plugin
+Import-Package: org.eclipse.core.commands,
+ org.eclipse.core.expressions,
+ org.eclipse.core.filesystem,
+ org.eclipse.core.resources,
+ org.eclipse.core.runtime,
+ org.eclipse.core.runtime.jobs,
+ org.eclipse.core.runtime.preferences;version="3.3.0",
+ org.eclipse.jface.action,
+ org.eclipse.jface.dialogs,
+ org.eclipse.jface.operation,
+ org.eclipse.jface.preference,
+ org.eclipse.jface.resource,
+ org.eclipse.jface.util,
+ org.eclipse.jface.viewers,
+ org.eclipse.jface.window,
+ org.eclipse.jface.wizard,
+ org.eclipse.osgi.util,
+ org.eclipse.remote.core,
+ org.eclipse.remote.core.exception,
+ org.eclipse.remote.internal.core.preferences,
+ org.eclipse.remote.ui.widgets,
+ org.eclipse.swt,
+ org.eclipse.swt.events,
+ org.eclipse.swt.graphics,
+ org.eclipse.swt.layout,
+ org.eclipse.swt.widgets,
+ org.eclipse.ui,
+ org.eclipse.ui.dialogs,
+ org.eclipse.ui.handlers,
+ org.eclipse.ui.model,
+ org.eclipse.ui.navigator,
+ org.eclipse.ui.plugin,
+ org.eclipse.ui.progress,
+ org.osgi.framework,
+ org.osgi.service.prefs
diff --git a/remote/org.eclipse.remote.ui/about.html b/remote/org.eclipse.remote.ui/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/remote/org.eclipse.remote.ui/about.ini b/remote/org.eclipse.remote.ui/about.ini
new file mode 100644
index 00000000000..e07a7bb377e
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/about.ini
@@ -0,0 +1,24 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%blurb
+
+# Property "windowImage" contains path to window icon (16x16)
+# needed for primary features only
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=cdt_logo_icon32.png
+
+# Property "aboutImage" contains path to product image (500x330 or 115x164)
+# needed for primary features only
+
+# Property "appName" contains name of the application (translated)
+# needed for primary features only
+
+# Property "welcomePerspective" contains the id of the perspective in which the
+# welcome page is to be opened.
+# optional
diff --git a/remote/org.eclipse.remote.ui/about.mappings b/remote/org.eclipse.remote.ui/about.mappings
new file mode 100644
index 00000000000..936a8039c3e
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/about.mappings
@@ -0,0 +1,9 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+# The following should contain the build version.
+# e.g. "0=20200106-1728"
+# This value will be added automatically via the build scripts
+0=${buildId}
diff --git a/remote/org.eclipse.remote.ui/about.properties b/remote/org.eclipse.remote.ui/about.properties
new file mode 100644
index 00000000000..9f09c78699e
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/about.properties
@@ -0,0 +1,32 @@
+###############################################################################
+# Copyright (c) 2021, 2022 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+# about.properties
+# contains externalized strings for about.ini
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# fill-ins are supplied by about.mappings
+# This file should be translated.
+# NOTE TO TRANSLATOR: Please do not translate the featureVersion variable.
+
+
+blurb=Remote Services\n\
+\n\
+Version: {featureVersion}\n\
+Build id: {0}\n\
+\n\
+Copyright (c) 2021, 2022 Contributors to the Eclipse Foundation
+\n\
+See the NOTICE file(s) distributed with this work for additional\n\
+information regarding copyright ownership.\n\
+\n\
+Visit http://www.eclipse.org/cdt
diff --git a/remote/org.eclipse.remote.ui/build.properties b/remote/org.eclipse.remote.ui/build.properties
new file mode 100644
index 00000000000..32d940a1926
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/build.properties
@@ -0,0 +1,13 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ about.ini,\
+ about.mappings,\
+ about.properties,\
+ cdt_logo_icon32.png,\
+ about.html,\
+ plugin.properties,\
+ icons/
+src.includes = about.html
diff --git a/remote/org.eclipse.remote.ui/cdt_logo_icon32.png b/remote/org.eclipse.remote.ui/cdt_logo_icon32.png
new file mode 100644
index 00000000000..470ca81b327
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/cdt_logo_icon32.png
Binary files differ
diff --git a/remote/org.eclipse.remote.ui/icons/connection.gif b/remote/org.eclipse.remote.ui/icons/connection.gif
new file mode 100644
index 00000000000..870934b6934
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/icons/connection.gif
Binary files differ
diff --git a/remote/org.eclipse.remote.ui/icons/console.png b/remote/org.eclipse.remote.ui/icons/console.png
new file mode 100644
index 00000000000..ca77aee5bca
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/icons/console.png
Binary files differ
diff --git a/remote/org.eclipse.remote.ui/icons/dlcl16/new_folder.gif b/remote/org.eclipse.remote.ui/icons/dlcl16/new_folder.gif
new file mode 100644
index 00000000000..310eb18e34b
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/icons/dlcl16/new_folder.gif
Binary files differ
diff --git a/remote/org.eclipse.remote.ui/icons/dlcl16/up_nav.gif b/remote/org.eclipse.remote.ui/icons/dlcl16/up_nav.gif
new file mode 100644
index 00000000000..884952fd288
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/icons/dlcl16/up_nav.gif
Binary files differ
diff --git a/remote/org.eclipse.remote.ui/icons/elcl16/new_folder.gif b/remote/org.eclipse.remote.ui/icons/elcl16/new_folder.gif
new file mode 100644
index 00000000000..310eb18e34b
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/icons/elcl16/new_folder.gif
Binary files differ
diff --git a/remote/org.eclipse.remote.ui/icons/elcl16/up_nav.gif b/remote/org.eclipse.remote.ui/icons/elcl16/up_nav.gif
new file mode 100644
index 00000000000..884952fd288
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/icons/elcl16/up_nav.gif
Binary files differ
diff --git a/remote/org.eclipse.remote.ui/icons/new_wiz.gif b/remote/org.eclipse.remote.ui/icons/new_wiz.gif
new file mode 100644
index 00000000000..7aea894d0b6
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/icons/new_wiz.gif
Binary files differ
diff --git a/remote/org.eclipse.remote.ui/icons/ovr16/symlink_ovr.gif b/remote/org.eclipse.remote.ui/icons/ovr16/symlink_ovr.gif
new file mode 100644
index 00000000000..73bd973f540
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/icons/ovr16/symlink_ovr.gif
Binary files differ
diff --git a/remote/org.eclipse.remote.ui/plugin.properties b/remote/org.eclipse.remote.ui/plugin.properties
new file mode 100644
index 00000000000..e712d0e931b
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/plugin.properties
@@ -0,0 +1,24 @@
+###############################################################################
+# Copyright (c) 2013 IBM Corporation.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+###############################################################################
+
+pluginName=Remote Services UI
+pluginProvider=Eclipse PTP
+RemoteDevPrefPage.name=Remote Development
+ConnectionsPreferencePage.name=Remote Connections
+ConnectionsViewCategory.name=Connections
+ConnectionsView.name=Connections
+ConnectionsContent.name=Connections
+NewConnectionCommand.name=New Connection
+DeleteConnectionCommand.name=Delete Connection
+ConnectionProperties.name=Connection
+OpenConnectionCommand.name=Open Connection
+CloseConnectionCommand.name=Close Connection
diff --git a/remote/org.eclipse.remote.ui/plugin.xml b/remote/org.eclipse.remote.ui/plugin.xml
new file mode 100644
index 00000000000..69b96adf4d6
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/plugin.xml
@@ -0,0 +1,230 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+ <extension
+ point="org.eclipse.ui.preferencePages">
+ <page
+ class="org.eclipse.remote.internal.ui.preferences.RemoteDevelopmentPreferencePage"
+ id="org.eclipse.remote.ui.RemoteDevelopmentPreferencePage"
+ name="%RemoteDevPrefPage.name">
+ </page>
+ </extension>
+ <extension
+ point="org.eclipse.ui.preferencePages">
+ <page
+ category="org.eclipse.remote.ui.RemoteDevelopmentPreferencePage"
+ class="org.eclipse.remote.internal.ui.preferences.ConnectionsPreferencePage"
+ id="org.eclipse.remote.connections"
+ name="%ConnectionsPreferencePage.name">
+ </page>
+ </extension>
+ <extension
+ point="org.eclipse.ui.trace.traceComponents">
+ <component
+ id="org.eclipse.remote.core.component"
+ label="Remote Core">
+ <bundle
+ consumed="true"
+ name="org.eclipse.remote.core">
+ </bundle>
+ </component>
+ </extension>
+ <extension
+ point="org.eclipse.remote.core.remoteServices">
+ <connectionTypeService
+ connectionTypeId="org.eclipse.remote.LocalServices"
+ factory="org.eclipse.remote.internal.ui.services.local.LocalUIFileService$Factory"
+ service="org.eclipse.remote.ui.IRemoteUIFileService">
+ </connectionTypeService>
+ <connectionTypeService
+ connectionTypeId="org.eclipse.remote.LocalServices"
+ factory="org.eclipse.remote.internal.ui.services.local.LocalUIConnectionService$Factory"
+ service="org.eclipse.remote.ui.IRemoteUIConnectionService">
+ </connectionTypeService>
+ </extension>
+ <extension
+ point="org.eclipse.ui.views">
+ <category
+ id="org.eclipse.remote.ui.view.category.connections"
+ name="%ConnectionsViewCategory.name">
+ </category>
+ <view
+ category="org.eclipse.remote.ui.view.category.connections"
+ class="org.eclipse.remote.internal.ui.views.RemoteConnectionsView"
+ icon="icons/connection.gif"
+ id="org.eclipse.remote.ui.view.connections"
+ name="%ConnectionsView.name"
+ restorable="true">
+ </view>
+ </extension>
+ <extension
+ point="org.eclipse.ui.navigator.navigatorContent">
+ <navigatorContent
+ activeByDefault="true"
+ contentProvider="org.eclipse.remote.internal.ui.views.RemoteConnectionsContentProvider"
+ id="org.eclipse.remote.ui.navigatorContent.connections"
+ labelProvider="org.eclipse.remote.ui.RemoteConnectionsLabelProvider"
+ name="%ConnectionsContent.name">
+ <triggerPoints>
+ <instanceof
+ value="org.eclipse.remote.core.IRemoteServicesManager">
+ </instanceof>
+ </triggerPoints>
+ <possibleChildren>
+ <instanceof
+ value="org.eclipse.remote.core.IRemoteConnection">
+ </instanceof>
+ </possibleChildren>
+ </navigatorContent>
+ <actionProvider
+ class="org.eclipse.remote.internal.ui.views.RemoteConnectionsActionProvider"
+ id="org.eclipse.remote.ui.actionProvider.properties">
+ <enablement>
+ <instanceof
+ value="org.eclipse.remote.core.IRemoteConnection">
+ </instanceof>
+ </enablement>
+ </actionProvider>
+ </extension>
+ <extension
+ point="org.eclipse.ui.navigator.viewer">
+ <viewer
+ viewerId="org.eclipse.remote.ui.view.connections">
+ <options>
+ <property
+ name="org.eclipse.ui.navigator.hideLinkWithEditorAction"
+ value="true">
+ </property>
+ </options>
+ </viewer>
+ <viewerContentBinding
+ viewerId="org.eclipse.remote.ui.view.connections">
+ <includes>
+ <contentExtension
+ isRoot="true"
+ pattern="org.eclipse.remote.ui.navigatorContent.connections">
+ </contentExtension>
+ </includes>
+ </viewerContentBinding>
+ <viewerActionBinding
+ viewerId="org.eclipse.remote.ui.view.connections">
+ <includes>
+ <actionExtension
+ pattern="org.eclipse.remote.ui.actionProvider.*">
+ </actionExtension>
+ </includes>
+ </viewerActionBinding>
+ </extension>
+ <extension
+ point="org.eclipse.ui.commands">
+ <command
+ defaultHandler="org.eclipse.remote.internal.ui.views.NewRemoteConnectionHandler"
+ id="org.eclipse.remote.ui.command.newConnection"
+ name="%NewConnectionCommand.name">
+ </command>
+ <command
+ defaultHandler="org.eclipse.remote.internal.ui.views.DeleteRemoteConnectionHandler"
+ id="org.eclipse.remote.ui.command.deleteConnection"
+ name="%DeleteConnectionCommand.name">
+ </command>
+ <command
+ defaultHandler="org.eclipse.remote.internal.ui.views.OpenConnectionHandler"
+ id="org.eclipse.remote.ui.command.openConnection"
+ name="%OpenConnectionCommand.name">
+ </command>
+ <command
+ defaultHandler="org.eclipse.remote.internal.ui.views.CloseConnectionHandler"
+ id="org.eclipse.remote.ui.command.closeConnection"
+ name="%CloseConnectionCommand.name">
+ </command>
+ </extension>
+ <extension
+ point="org.eclipse.core.expressions.propertyTesters">
+ <propertyTester
+ class="org.eclipse.remote.internal.ui.ServicePropertyTester"
+ id="org.eclipse.remote.ui.propertyTester.hasService"
+ namespace="org.eclipse.remote.ui"
+ properties="hasConnectionTypeService,hasConnectionService,canDelete,canOpen,canClose"
+ type="org.eclipse.remote.core.IRemoteConnection">
+ </propertyTester>
+ </extension>
+ <extension
+ point="org.eclipse.ui.menus">
+ <menuContribution
+ allPopups="false"
+ locationURI="toolbar:org.eclipse.remote.ui.view.connections">
+ <command
+ commandId="org.eclipse.remote.ui.command.newConnection"
+ icon="icons/new_wiz.gif"
+ label="%NewConnectionCommand.name"
+ style="push">
+ </command>
+ </menuContribution>
+ <menuContribution
+ allPopups="false"
+ locationURI="popup:org.eclipse.remote.ui.view.connections">
+ <command
+ commandId="org.eclipse.remote.ui.command.openConnection"
+ label="%OpenConnectionCommand.name"
+ style="push">
+ <visibleWhen
+ checkEnabled="false">
+ <with
+ variable="selection">
+ <iterate>
+ <test
+ property="org.eclipse.remote.ui.canOpen">
+ </test>
+ </iterate>
+ </with>
+ </visibleWhen>
+ </command>
+ <command
+ commandId="org.eclipse.remote.ui.command.closeConnection"
+ label="%CloseConnectionCommand.name"
+ style="push">
+ <visibleWhen
+ checkEnabled="false">
+ <with
+ variable="selection">
+ <iterate>
+ <test
+ property="org.eclipse.remote.ui.canClose">
+ </test>
+ </iterate>
+ </with>
+ </visibleWhen>
+ </command>
+ <command
+ commandId="org.eclipse.remote.ui.command.deleteConnection"
+ label="%DeleteConnectionCommand.name"
+ style="push">
+ <visibleWhen
+ checkEnabled="false">
+ <with
+ variable="selection">
+ <iterate>
+ <test
+ property="org.eclipse.remote.ui.canDelete">
+ </test>
+ </iterate>
+ </with>
+ </visibleWhen>
+ </command>
+ </menuContribution>
+ </extension>
+ <extension
+ point="org.eclipse.ui.propertyPages">
+ <page
+ class="org.eclipse.remote.internal.ui.views.RemoteConnectionPropertyPage"
+ id="org.eclipse.remote.ui.page.connectionProperties"
+ name="%ConnectionProperties.name">
+ <enabledWhen>
+ <adapt
+ type="org.eclipse.remote.core.IRemoteConnection">
+ </adapt>
+ </enabledWhen>
+ </page>
+ </extension>
+
+</plugin>
diff --git a/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/DeferredFileStore.java b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/DeferredFileStore.java
new file mode 100644
index 00000000000..b69e1d88458
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/DeferredFileStore.java
@@ -0,0 +1,240 @@
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.internal.ui;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.filesystem.EFS;
+import org.eclipse.core.filesystem.IFileInfo;
+import org.eclipse.core.filesystem.IFileStore;
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.PlatformObject;
+import org.eclipse.core.runtime.jobs.ISchedulingRule;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.ui.dialogs.FileSystemElement;
+import org.eclipse.ui.model.IWorkbenchAdapter;
+import org.eclipse.ui.progress.IDeferredWorkbenchAdapter;
+import org.eclipse.ui.progress.IElementCollector;
+
+public class DeferredFileStore implements IDeferredWorkbenchAdapter, IAdaptable {
+ private final IFileStore fFileStore;
+ private IFileInfo fFileInfo;
+ private IFileInfo fTargetInfo;
+ private ImageDescriptor fImage;
+ private final boolean fExcludeHidden;
+ private final DeferredFileStore fParent;
+
+ public DeferredFileStore(IFileStore store, boolean exclude) {
+ this(store, null, exclude, null);
+ }
+
+ /**
+ * @since 7.0
+ */
+ public DeferredFileStore(IFileStore store, boolean exclude, DeferredFileStore parent) {
+ this(store, null, exclude, parent);
+ }
+
+ /**
+ * @since 7.0
+ */
+ public DeferredFileStore(IFileStore store, IFileInfo info, boolean exclude, DeferredFileStore parent) {
+ fFileStore = store;
+ fFileInfo = info;
+ fExcludeHidden = exclude;
+ fParent = parent;
+ }
+
+ @Override
+ public void fetchDeferredChildren(Object object, IElementCollector collector, IProgressMonitor monitor) {
+ ArrayList<DeferredFileStore> children = new ArrayList<>();
+ try {
+ IFileInfo[] childInfos = fFileStore.childInfos(EFS.NONE, monitor);
+ for (IFileInfo info : childInfos) {
+ if (!(fExcludeHidden && info.getName().startsWith("."))) { //$NON-NLS-1$
+ children.add(
+ new DeferredFileStore(fFileStore.getChild(info.getName()), info, fExcludeHidden, this));
+ }
+ }
+ } catch (CoreException e) {
+ // Ignore
+ }
+ if (children != null) {
+ collector.add(children.toArray(), monitor);
+ }
+ collector.done();
+ }
+
+ /**
+ * Fetch the file info for the store. If the store is a symbolic link, fetch the file info for the target as well.
+ */
+ private void fetchInfo() {
+ if (fFileInfo == null) {
+ fFileInfo = fFileStore.fetchInfo();
+ }
+ if (fTargetInfo == null && fFileInfo.getAttribute(EFS.ATTRIBUTE_SYMLINK)) {
+ String target = fFileInfo.getStringAttribute(EFS.ATTRIBUTE_LINK_TARGET);
+ if (target != null) {
+ try {
+ URI targetUri = new URI(null, null, target, null); // Make sure target is escaped correctly
+ URI uri = fFileStore.toURI().resolve(targetUri.getRawPath());
+ IFileStore store = fFileStore.getFileSystem().getStore(uri);
+ fTargetInfo = store.fetchInfo();
+ } catch (URISyntaxException e) {
+ RemoteUIPlugin.log(e);
+ }
+ }
+ }
+ }
+
+ @Override
+ public <T> T getAdapter(Class<T> adapter) {
+ if (IWorkbenchAdapter.class.equals(adapter)) {
+ return adapter.cast(this);
+ }
+ return null;
+ }
+
+ /**
+ * Return the IWorkbenchAdapter for element or the element if it is
+ * an instance of IWorkbenchAdapter. If it does not exist return
+ * null.
+ *
+ * @param element
+ * @return IWorkbenchAdapter or <code>null</code>
+ */
+ protected IWorkbenchAdapter getAdapter(Object element) {
+ return getAdapter(element, IWorkbenchAdapter.class);
+ }
+
+ /**
+ * If it is possible to adapt the given object to the given type, this returns the adapter. Performs the following checks:
+ *
+ * <ol>
+ * <li>Returns <code>sourceObject</code> if it is an instance of the adapter type.</li>
+ * <li>If sourceObject implements IAdaptable, it is queried for adapters.</li>
+ * <li>If sourceObject is not an instance of PlatformObject (which would have already done so), the adapter manager is queried
+ * for adapters</li>
+ * </ol>
+ *
+ * Otherwise returns null.
+ *
+ * @param sourceObject
+ * object to adapt, or null
+ * @param adapterType
+ * type to adapt to
+ * @return a representation of sourceObject that is assignable to the adapter type, or null if no such representation exists
+ */
+ protected <T> T getAdapter(Object sourceObject, Class<T> adapterType) {
+ Assert.isNotNull(adapterType);
+ if (sourceObject == null) {
+ return null;
+ }
+ if (adapterType.isInstance(sourceObject)) {
+ return adapterType.cast(sourceObject);
+ }
+
+ if (sourceObject instanceof IAdaptable) {
+ IAdaptable adaptable = (IAdaptable) sourceObject;
+
+ Object result = adaptable.getAdapter(adapterType);
+ if (result != null) {
+ // Sanity-check
+ Assert.isTrue(adapterType.isInstance(result));
+ return adapterType.cast(result);
+ }
+ }
+
+ if (!(sourceObject instanceof PlatformObject)) {
+ Object result = Platform.getAdapterManager().getAdapter(sourceObject, adapterType);
+ if (result != null) {
+ return adapterType.cast(result);
+ }
+ }
+
+ return null;
+ }
+
+ @Override
+ public Object[] getChildren(Object o) {
+ try {
+ IFileStore[] stores = fFileStore.childStores(EFS.NONE, null);
+ List<DeferredFileStore> def = new ArrayList<>();
+ for (int i = 0; i < stores.length; i++) {
+ if (!(fExcludeHidden && stores[i].getName().startsWith("."))) { //$NON-NLS-1$
+ def.add(new DeferredFileStore(stores[i], fExcludeHidden, this));
+ }
+ }
+ return def.toArray();
+ } catch (CoreException e) {
+ return new Object[0];
+ }
+ }
+
+ /**
+ * Get the filestore backing this object
+ *
+ * @return
+ */
+ public IFileStore getFileStore() {
+ return fFileStore;
+ }
+
+ @Override
+ public ImageDescriptor getImageDescriptor(Object object) {
+ fetchInfo();
+ if (fImage == null) {
+ boolean isDir = fFileInfo.isDirectory() || (fTargetInfo != null && fTargetInfo.isDirectory());
+ FileSystemElement element = new FileSystemElement(fFileStore.getName(), null, isDir);
+ IWorkbenchAdapter adapter = getAdapter(element);
+ if (adapter != null) {
+ ImageDescriptor imageDesc = adapter.getImageDescriptor(object);
+ if (fTargetInfo != null) {
+ imageDesc = new OverlayImageDescriptor(imageDesc, RemoteUIImages.DESC_OVR_SYMLINK,
+ OverlayImageDescriptor.BOTTOM_RIGHT);
+ }
+ fImage = imageDesc;
+ }
+ }
+ return fImage;
+ }
+
+ @Override
+ public String getLabel(Object o) {
+ return fFileStore.getName();
+ }
+
+ @Override
+ public Object getParent(Object o) {
+ return fParent;
+ }
+
+ @Override
+ public ISchedulingRule getRule(Object object) {
+ return null;
+ }
+
+ @Override
+ public boolean isContainer() {
+ fetchInfo();
+ return fFileInfo.isDirectory() || (fTargetInfo != null && fTargetInfo.isDirectory());
+ }
+}
diff --git a/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/DeferredFileStoreComparer.java b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/DeferredFileStoreComparer.java
new file mode 100644
index 00000000000..082cf432431
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/DeferredFileStoreComparer.java
@@ -0,0 +1,48 @@
+/*******************************************************************************
+ * Copyright (c) 2013 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.internal.ui;
+
+import org.eclipse.jface.viewers.IElementComparer;
+
+public class DeferredFileStoreComparer implements IElementComparer {
+
+ @Override
+ public boolean equals(Object o1, Object o2) {
+ if (o1 == o2) {
+ return true;
+ }
+ if (o1 == null) {
+ return false; // o2 != null if we reach this point
+ }
+ if (o1.equals(o2)) {
+ return true;
+ }
+
+ // Assume they are DeferredFileStore
+ DeferredFileStore c1 = (o1 instanceof DeferredFileStore) ? (DeferredFileStore) o1 : null;
+ DeferredFileStore c2 = (o2 instanceof DeferredFileStore) ? (DeferredFileStore) o2 : null;
+ if (c1 == null || c2 == null) {
+ return false;
+ }
+ return c1.getFileStore().equals(c2.getFileStore());
+ }
+
+ @Override
+ public int hashCode(Object element) {
+ if (element instanceof DeferredFileStore) {
+ return ((DeferredFileStore) element).getFileStore().hashCode();
+ }
+ return element.hashCode();
+ }
+}
diff --git a/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/Messages.java b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/Messages.java
new file mode 100644
index 00000000000..a98aa0636cf
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/Messages.java
@@ -0,0 +1,20 @@
+package org.eclipse.remote.internal.ui;
+
+import org.eclipse.osgi.util.NLS;
+
+public class Messages extends NLS {
+ private static final String BUNDLE_NAME = "org.eclipse.remote.internal.ui.messages"; //$NON-NLS-1$
+ public static String NewRemoteConnectionTypePage_LaunchTargetType;
+ public static String NewRemoteConnectionTypePage_SelectTargetType;
+ public static String NewRemoteConnectionWizard_0;
+ public static String OpenTerminalHandler_OpenTerminalDesc;
+ public static String OpenTerminalHandler_OpenTerminalTitle;
+ public static String RemoteConnectionPropertyPage_ConnectionName;
+ static {
+ // initialize resource bundle
+ NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+ }
+
+ private Messages() {
+ }
+}
diff --git a/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/OverlayImageDescriptor.java b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/OverlayImageDescriptor.java
new file mode 100644
index 00000000000..94d1f315203
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/OverlayImageDescriptor.java
@@ -0,0 +1,82 @@
+/*******************************************************************************
+ * Copyright (c) 2013 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.remote.internal.ui;
+
+import org.eclipse.jface.resource.CompositeImageDescriptor;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.swt.graphics.ImageData;
+import org.eclipse.swt.graphics.Point;
+
+/**
+ * @since 7.0
+ */
+public class OverlayImageDescriptor extends CompositeImageDescriptor {
+
+ static final int DEFAULT_WIDTH = 16;
+ static final int DEFAULT_HEIGHT = 16;
+
+ public static final int TOP_LEFT = 0;
+ public static final int TOP_RIGHT = 1;
+ public static final int BOTTOM_LEFT = 2;
+ public static final int BOTTOM_RIGHT = 3;
+
+ private final ImageDescriptor fBase;
+ private final ImageDescriptor fOverlay;
+ private final int fPosition;
+ private final int fOffset = 3;
+
+ public OverlayImageDescriptor(ImageDescriptor base, ImageDescriptor overlay, int pos) {
+ fBase = base;
+ fOverlay = overlay;
+ fPosition = pos;
+ }
+
+ /*
+ * @see org.eclipse.jface.resource.CompositeImageDescriptor#drawCompositeImage(int,
+ * int)
+ */
+ @Override
+ protected void drawCompositeImage(int width, int height) {
+ ImageData imageData = fBase.getImageData();
+ if (imageData != null) {
+ drawImage(imageData, 0, 0);
+ }
+ ImageData overlayData = fOverlay.getImageData();
+ if (overlayData != null) {
+ Point pos = null;
+ switch (fPosition) {
+ case TOP_LEFT:
+ pos = new Point(-overlayData.width / 2, -overlayData.height / 2);
+ break;
+ case TOP_RIGHT:
+ pos = new Point(imageData.width - overlayData.width / 2, 0);
+ break;
+ case BOTTOM_LEFT:
+ pos = new Point(0, imageData.height - overlayData.height / 2);
+
+ break;
+ case BOTTOM_RIGHT:
+ pos = new Point(imageData.width - overlayData.width / 2, imageData.height - overlayData.height / 2);
+ break;
+ }
+ drawImage(overlayData, pos.x - fOffset, pos.y - fOffset);
+ }
+ }
+
+ @Override
+ protected Point getSize() {
+ return new Point(DEFAULT_WIDTH, DEFAULT_HEIGHT);
+ }
+}
diff --git a/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/PendingUpdateAdapter.java b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/PendingUpdateAdapter.java
new file mode 100644
index 00000000000..9586793e98a
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/PendingUpdateAdapter.java
@@ -0,0 +1,82 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2009 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.internal.ui;
+
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.remote.internal.ui.messages.Messages;
+import org.eclipse.ui.model.IWorkbenchAdapter;
+
+/**
+ * The PendingUpdateAdapter is a convenience object that can be used
+ * by a BaseWorkbenchContentProvider that wants to show a pending update.
+ */
+public class PendingUpdateAdapter implements IWorkbenchAdapter, IAdaptable {
+
+ boolean removed = false;
+
+ /**
+ * Return whether or not this has been removed from the tree.
+ *
+ * @return boolean
+ */
+ public boolean isRemoved() {
+ return removed;
+ }
+
+ /**
+ * Set whether or not this has been removed from the tree.
+ *
+ * @param removedValue
+ * boolean
+ */
+ public void setRemoved(boolean removedValue) {
+ this.removed = removedValue;
+ }
+
+ /**
+ * Create a new instance of the receiver.
+ */
+ public PendingUpdateAdapter() {
+ // No initial behavior
+ }
+
+ @Override
+ public <T> T getAdapter(Class<T> adapter) {
+ if (adapter == IWorkbenchAdapter.class) {
+ return adapter.cast(this);
+ }
+ return null;
+ }
+
+ @Override
+ public Object[] getChildren(Object o) {
+ return new Object[0];
+ }
+
+ @Override
+ public ImageDescriptor getImageDescriptor(Object object) {
+ return null;
+ }
+
+ @Override
+ public String getLabel(Object o) {
+ return Messages.PendingUpdateAdapter_Pending;
+ }
+
+ @Override
+ public Object getParent(Object o) {
+ return null;
+ }
+}
diff --git a/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/RemoteContentProvider.java b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/RemoteContentProvider.java
new file mode 100644
index 00000000000..7143be7133e
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/RemoteContentProvider.java
@@ -0,0 +1,78 @@
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.internal.ui;
+
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.ui.IWorkingSet;
+import org.eclipse.ui.model.WorkbenchContentProvider;
+
+/**
+ * Extension to the generic workbench content provider mechanism
+ * to lazily determine whether an element has children. That is,
+ * children for an element aren't fetched until the user clicks
+ * on the tree expansion box.
+ */
+public class RemoteContentProvider extends WorkbenchContentProvider {
+ private IWorkingSet workingSet;
+ private RemoteTreeContentManager manager;
+
+ @Override
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ if (newInput != null) {
+ manager = new RemoteTreeContentManager(this, (RemoteTreeViewer) viewer, null);
+ } else {
+ manager = null;
+ }
+ super.inputChanged(viewer, oldInput, newInput);
+ }
+
+ @Override
+ public boolean hasChildren(Object element) {
+ if (manager != null /* && manager.isDeferredAdapter(element) */) {
+ return manager.mayHaveChildren(element);
+ }
+
+ return super.hasChildren(element);
+ }
+
+ /**
+ * Sets the workingSet.
+ *
+ * @param workingSet
+ * The workingSet to set
+ */
+ public void setWorkingSet(IWorkingSet workingSet) {
+ this.workingSet = workingSet;
+ }
+
+ /**
+ * Returns the workingSet.
+ *
+ * @return IWorkingSet
+ */
+ public IWorkingSet getWorkingSet() {
+ return workingSet;
+ }
+
+ @Override
+ public Object[] getChildren(Object element) {
+ if (manager != null) {
+ Object[] children = manager.getChildren(element);
+ if (children != null) {
+ return children;
+ }
+ }
+ return super.getChildren(element);
+ }
+}
diff --git a/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/RemoteResourceComparator.java b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/RemoteResourceComparator.java
new file mode 100644
index 00000000000..f76304815e4
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/RemoteResourceComparator.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.internal.ui;
+
+import org.eclipse.core.filesystem.IFileInfo;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerComparator;
+
+public class RemoteResourceComparator extends ViewerComparator {
+
+ private boolean ascending = true;
+
+ public RemoteResourceComparator() {
+ super();
+ }
+
+ public void setAscending(boolean ascending) {
+ this.ascending = ascending;
+ }
+
+ public boolean isAscending() {
+ return ascending;
+ }
+
+ @Override
+ public int compare(Viewer viewer, Object o1, Object o2) {
+ if (o1 instanceof IFileInfo && o2 instanceof IFileInfo) {
+ int compareResult = ((IFileInfo) o1).getName().compareToIgnoreCase(((IFileInfo) o2).getName());
+ return ascending ? compareResult : -compareResult;
+ }
+
+ return super.compare(viewer, o1, o2);
+ }
+
+}
diff --git a/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/RemoteTreeContentManager.java b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/RemoteTreeContentManager.java
new file mode 100644
index 00000000000..7882d47a0d3
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/RemoteTreeContentManager.java
@@ -0,0 +1,345 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2008 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.remote.internal.ui;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.ui.IWorkbenchPartSite;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.progress.IDeferredWorkbenchAdapter;
+import org.eclipse.ui.progress.IElementCollector;
+import org.eclipse.ui.progress.IWorkbenchSiteProgressService;
+import org.eclipse.ui.progress.WorkbenchJob;
+
+/**
+ * A remote content manager that merges content into a tree rather then replacing its children with a
+ * "pending" node, and then the real children when they are available. This avoids collapsing the viewer when
+ * a refresh is performed. This implementation is currently tied to the <code>RemoteTreeViewer</code>.
+ *
+ * @since 3.1
+ */
+public class RemoteTreeContentManager {
+ private final RemoteTreeViewer fViewer;
+ private IWorkbenchSiteProgressService progressService;
+
+ /**
+ * Job to fetch children
+ */
+ private final Job fFetchJob = new FetchJob();
+
+ /**
+ * Queue of parents to fetch children for, and associated element collectors and deferred adapters.
+ */
+ private final List<Object> fElementQueue = new ArrayList<>();
+ private final List<IElementCollector> fCollectors = new ArrayList<>();
+ private final List<IDeferredWorkbenchAdapter> fAdapaters = new ArrayList<>();
+
+ /**
+ * Fetching children is done in a single background job. This makes fetching single threaded/serial per
+ * view.
+ */
+ private class FetchJob extends Job {
+
+ public FetchJob() {
+ super("FetchJob"); //$NON-NLS-1$
+ setSystem(true);
+ }
+
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ while (!fElementQueue.isEmpty() && !monitor.isCanceled()) {
+ Object element = null;
+ IElementCollector collector = null;
+ IDeferredWorkbenchAdapter adapter = null;
+ synchronized (fElementQueue) {
+ // could have been cancelled after entering the while loop
+ if (fElementQueue.isEmpty()) {
+ return Status.CANCEL_STATUS;
+ }
+ element = fElementQueue.remove(0);
+ collector = fCollectors.remove(0);
+ adapter = fAdapaters.remove(0);
+ }
+ adapter.fetchDeferredChildren(element, collector, monitor);
+ }
+ if (monitor.isCanceled()) {
+ return Status.CANCEL_STATUS;
+ }
+ return Status.OK_STATUS;
+ }
+
+ }
+
+ /**
+ * Element collector
+ */
+ private class Collector implements IElementCollector {
+ // number of children added to the tree
+ int offset = 0;
+ Object fParent;
+
+ public Collector(Object parent) {
+ fParent = parent;
+ }
+
+ @Override
+ public void add(Object element, IProgressMonitor monitor) {
+ add(new Object[] { element }, monitor);
+ }
+
+ @Override
+ public void add(Object[] elements, IProgressMonitor monitor) {
+ Object[] filtered = fViewer.filter(elements);
+ if (fViewer.getComparator() != null) {
+ fViewer.getComparator().sort(fViewer, filtered);
+ }
+ if (filtered.length > 0) {
+ replaceChildren(fParent, filtered, offset, monitor);
+ offset = offset + filtered.length;
+ }
+ }
+
+ @Override
+ public void done() {
+ prune(fParent, offset);
+ }
+ }
+
+ /**
+ * Contructs a new content manager.
+ *
+ * @param provider
+ * content provider
+ * @param viewer
+ * viewer
+ * @param site
+ * part site
+ */
+ public RemoteTreeContentManager(ITreeContentProvider provider, RemoteTreeViewer viewer, IWorkbenchPartSite site) {
+ fViewer = viewer;
+ if (site != null) {
+ Object siteService = site.getAdapter(IWorkbenchSiteProgressService.class);
+ if (siteService != null) {
+ progressService = (IWorkbenchSiteProgressService) siteService;
+ }
+ }
+ }
+
+ /**
+ * Create the element collector for the receiver.
+ *
+ * @param parent
+ * The parent object being filled in,
+ * @param placeholder
+ * The adapter that will be used to indicate that results are pending, possibly <code>null</code>
+ * @return IElementCollector
+ */
+ protected IElementCollector createElementCollector(Object parent, PendingUpdateAdapter placeholder) {
+ return new Collector(parent);
+ }
+
+ /**
+ * Returns the child elements of the given element, or in the case of a deferred element, returns a
+ * placeholder. If a deferred element is used, a job is created to fetch the children in the background.
+ *
+ * @param parent
+ * The parent object.
+ * @return Object[] or <code>null</code> if parent is not an instance of IDeferredWorkbenchAdapter.
+ */
+ public Object[] getChildren(final Object parent) {
+ IDeferredWorkbenchAdapter element = getAdapter(parent);
+ if (element == null) {
+ return null;
+ }
+ Object[] currentChildren = fViewer.getCurrentChildren(parent);
+ PendingUpdateAdapter placeholder = null;
+ if (currentChildren == null || currentChildren.length == 0) {
+ placeholder = new PendingUpdateAdapter();
+ }
+ startFetchingDeferredChildren(parent, element, placeholder);
+ if (placeholder == null) {
+ return currentChildren;
+ }
+ return new Object[] { placeholder };
+ }
+
+ /**
+ * Create a UIJob to replace the children of the parent in the tree viewer.
+ *
+ * @param parent
+ * the parent for which children are to be replaced
+ * @param children
+ * the replacement children
+ * @param offset
+ * the offset at which to start replacing children
+ * @param monitor
+ * progress monitor
+ */
+ protected void replaceChildren(final Object parent, final Object[] children, final int offset,
+ IProgressMonitor monitor) {
+ if (monitor.isCanceled()) {
+ return;
+ }
+ WorkbenchJob updateJob = new WorkbenchJob("IncrementalDeferredTreeContentManager") { //$NON-NLS-1$
+ @Override
+ public IStatus runInUIThread(IProgressMonitor updateMonitor) {
+ // Cancel the job if the tree viewer got closed
+ if (fViewer.getControl().isDisposed()) {
+ return Status.CANCEL_STATUS;
+ }
+ fViewer.replace(parent, children, offset);
+ return Status.OK_STATUS;
+ }
+ };
+ updateJob.setSystem(true);
+ updateJob.setPriority(Job.INTERACTIVE);
+ updateJob.schedule();
+ }
+
+ /**
+ * Create a UIJob to prune the children of the parent in the tree viewer, starting at the given offset.
+ *
+ * @param parent
+ * the parent for which children should be pruned
+ * @param offset
+ * the offset at which children should be pruned. All children at and after this index will be
+ * removed from the tree.
+ */
+ protected void prune(final Object parent, final int offset) {
+ WorkbenchJob updateJob = new WorkbenchJob("DeferredTree") { //$NON-NLS-1$
+ @Override
+ public IStatus runInUIThread(IProgressMonitor updateMonitor) {
+ // Cancel the job if the tree viewer got closed
+ if (fViewer.getControl().isDisposed()) {
+ return Status.CANCEL_STATUS;
+ }
+ fViewer.prune(parent, offset);
+ return Status.OK_STATUS;
+ }
+ };
+ updateJob.setSystem(true);
+ updateJob.setPriority(Job.INTERACTIVE);
+ updateJob.schedule();
+ }
+
+ /**
+ * Run a job to clear the placeholder. This is used when the update for the tree is complete so that the
+ * user is aware that no more updates are pending.
+ *
+ * @param placeholder
+ */
+ protected void runClearPlaceholderJob(final PendingUpdateAdapter placeholder) {
+ if (placeholder == null || placeholder.isRemoved() || !PlatformUI.isWorkbenchRunning()) {
+ return;
+ }
+ // Clear the placeholder if it is still there
+ WorkbenchJob clearJob = new WorkbenchJob("DeferredTreeContentManager_ClearJob") { //$NON-NLS-1$
+ @Override
+ public IStatus runInUIThread(IProgressMonitor monitor) {
+ if (!placeholder.isRemoved()) {
+ Control control = fViewer.getControl();
+ if (control.isDisposed()) {
+ return Status.CANCEL_STATUS;
+ }
+ fViewer.remove(placeholder);
+ placeholder.setRemoved(true);
+ }
+ return Status.OK_STATUS;
+ }
+ };
+ clearJob.setSystem(true);
+ clearJob.schedule();
+ }
+
+ protected String getFetchJobName(Object parent, IDeferredWorkbenchAdapter adapter) {
+ return "RemoteTreeContentManager"; //$NON-NLS-1$
+ }
+
+ /**
+ * Return the IDeferredWorkbenchAdapter for element or the element if it is an instance of
+ * IDeferredWorkbenchAdapter. If it does not exist return null.
+ *
+ * @param element
+ * @return IDeferredWorkbenchAdapter or <code>null</code>
+ */
+ protected IDeferredWorkbenchAdapter getAdapter(Object element) {
+ if (element instanceof IDeferredWorkbenchAdapter) {
+ return (IDeferredWorkbenchAdapter) element;
+ }
+ if (!(element instanceof IAdaptable)) {
+ return null;
+ }
+ Object adapter = ((IAdaptable) element).getAdapter(IDeferredWorkbenchAdapter.class);
+ if (adapter == null) {
+ return null;
+ }
+ return (IDeferredWorkbenchAdapter) adapter;
+ }
+
+ protected void startFetchingDeferredChildren(final Object parent, final IDeferredWorkbenchAdapter adapter,
+ PendingUpdateAdapter placeholder) {
+ final IElementCollector collector = createElementCollector(parent, placeholder);
+ synchronized (fElementQueue) {
+ if (!fElementQueue.contains(parent)) {
+ fElementQueue.add(parent);
+ fCollectors.add(collector);
+ fAdapaters.add(adapter);
+ }
+ }
+ if (progressService == null) {
+ fFetchJob.schedule();
+ } else {
+ progressService.schedule(fFetchJob);
+ }
+ }
+
+ /**
+ * Provides an optimized lookup for determining if an element has children. This is required because
+ * elements that are populated lazilly can't answer <code>getChildren</code> just to determine the
+ * potential for children. Throw an AssertionFailedException if element is null.
+ *
+ * @param element
+ * The Object being tested. This should not be <code>null</code>.
+ * @return boolean <code>true</code> if there are potentially children.
+ * @throws RuntimeException
+ * if the element is null.
+ */
+ public boolean mayHaveChildren(Object element) {
+ // Assert.isNotNull(element, ProgressMessages.DeferredTreeContentManager_NotDeferred);
+ IDeferredWorkbenchAdapter adapter = getAdapter(element);
+ return adapter != null && adapter.isContainer();
+ }
+
+ /**
+ * Cancels any content this provider is currently fetching.
+ */
+ public void cancel() {
+ synchronized (fElementQueue) {
+ fFetchJob.cancel();
+ fElementQueue.clear();
+ fAdapaters.clear();
+ fCollectors.clear();
+ }
+ }
+
+}
diff --git a/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/RemoteTreeViewer.java b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/RemoteTreeViewer.java
new file mode 100644
index 00000000000..b6ba5f44e79
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/RemoteTreeViewer.java
@@ -0,0 +1,423 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2008 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.remote.internal.ui;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.swt.events.DisposeEvent;
+import org.eclipse.swt.events.DisposeListener;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Item;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.swt.widgets.TreeItem;
+import org.eclipse.swt.widgets.Widget;
+import org.eclipse.ui.model.IWorkbenchAdapter;
+import org.eclipse.ui.progress.UIJob;
+
+public class RemoteTreeViewer extends TreeViewer {
+ private ExpansionJob fExpansionJob = null;
+ private SelectionJob fSelectionJob = null;
+
+ private class ExpansionJob extends UIJob {
+
+ private Object element;
+ private final List<Object> parents = new ArrayList<>(); // top down
+
+ /**
+ * Constructs a job to expand the given element.
+ *
+ */
+ public ExpansionJob() {
+ super("Expansion"); //$NON-NLS-1$
+ setPriority(Job.INTERACTIVE);
+ setSystem(true);
+ }
+
+ @Override
+ public IStatus runInUIThread(IProgressMonitor monitor) {
+ if (getControl().isDisposed() || element == null) {
+ return Status.OK_STATUS;
+ }
+ synchronized (RemoteTreeViewer.this) {
+ boolean allParentsExpanded = true;
+ Iterator<Object> iterator = parents.iterator();
+ while (iterator.hasNext() && !monitor.isCanceled()) {
+ Object parent = iterator.next();
+ Widget item = findItem(parent);
+ if (item != null) {
+ expandToLevel(parent, 1);
+ } else {
+ allParentsExpanded = false;
+ break;
+ }
+ }
+ if (allParentsExpanded) {
+ Widget item = findItem(element);
+ if (item != null) {
+ if (isExpandable(element)) {
+ expandToLevel(element, 1);
+ }
+ element = null;
+ parents.clear();
+ return Status.OK_STATUS;
+ }
+ }
+ return Status.OK_STATUS;
+ }
+ }
+
+ public void validate(Object object) {
+ if (element != null) {
+ if (element.equals(object) || parents.contains(object)) {
+ cancel();
+ element = null;
+ }
+ }
+ }
+
+ public void setDeferredExpansion(Object toExpand) {
+ element = toExpand;
+ parents.clear();
+ addAllParents(parents, element);
+ }
+
+ }
+
+ private class SelectionJob extends UIJob {
+
+ private IStructuredSelection selection;
+ private Object first;
+ private final List<Object> parents = new ArrayList<>(); // top down
+
+ /**
+ * Constucts a job to select the given element.
+ */
+ public SelectionJob() {
+ super("Selection"); //$NON-NLS-1$
+ setPriority(Job.INTERACTIVE);
+ setSystem(true);
+ }
+
+ @Override
+ public IStatus runInUIThread(IProgressMonitor monitor) {
+ if (getControl().isDisposed() || selection == null) {
+ return Status.OK_STATUS;
+ }
+ synchronized (RemoteTreeViewer.this) {
+ boolean allParentsExpanded = true;
+ Iterator<Object> iterator = parents.iterator();
+ while (iterator.hasNext() && !monitor.isCanceled()) {
+ Object parent = iterator.next();
+ Widget item = findItem(parent);
+ if (item != null) {
+ expandToLevel(parent, 1);
+ } else {
+ allParentsExpanded = false;
+ break;
+ }
+ }
+ if (allParentsExpanded) {
+ if (findItem(first) != null) {
+ setSelection(selection, true);
+ selection = null;
+ first = null;
+ parents.clear();
+ return Status.OK_STATUS;
+ }
+ }
+
+ return Status.OK_STATUS;
+ }
+ }
+
+ public void setDeferredSelection(IStructuredSelection sel) {
+ selection = sel;
+ first = selection.getFirstElement();
+ parents.clear();
+ addAllParents(parents, first);
+ }
+
+ public void validate(Object object) {
+ if (first != null) {
+ if (first.equals(object) || parents.contains(object)) {
+ cancel();
+ selection = null;
+ }
+ }
+ }
+ }
+
+ /**
+ * Constructs a remote tree viewer parented by the given composite.
+ *
+ * @param parent
+ * parent composite
+ */
+ public RemoteTreeViewer(Composite parent) {
+ super(parent);
+ addDisposeListener();
+ fExpansionJob = new ExpansionJob();
+ fSelectionJob = new SelectionJob();
+ }
+
+ /**
+ * Constructs a remote tree viewer parented by the given composite
+ * with the given style.
+ *
+ * @param parent
+ * parent composite
+ * @param style
+ * style bits
+ */
+ public RemoteTreeViewer(Composite parent, int style) {
+ super(parent, style);
+ addDisposeListener();
+ fExpansionJob = new ExpansionJob();
+ fSelectionJob = new SelectionJob();
+ }
+
+ /**
+ * Constructs a remote tree viewer with the given tree.
+ *
+ * @param tree
+ * tree widget
+ */
+ public RemoteTreeViewer(Tree tree) {
+ super(tree);
+ addDisposeListener();
+ fExpansionJob = new ExpansionJob();
+ fSelectionJob = new SelectionJob();
+ }
+
+ private void addDisposeListener() {
+ getControl().addDisposeListener(new DisposeListener() {
+ @Override
+ public void widgetDisposed(DisposeEvent e) {
+ cancelJobs();
+ }
+ });
+ }
+
+ protected void runDeferredUpdates() {
+ if (fExpansionJob != null) {
+ fExpansionJob.schedule();
+ }
+ if (fSelectionJob != null) {
+ fSelectionJob.schedule();
+ }
+ }
+
+ /**
+ * The given element is being removed from the tree. Cancel
+ * any deferred updates for the element.
+ *
+ * @param element
+ */
+ protected void validateDeferredUpdates(Object element) {
+ if (element != null) {
+ if (fExpansionJob != null) {
+ fExpansionJob.validate(element);
+ }
+ if (fSelectionJob != null) {
+ fSelectionJob.validate(element);
+ }
+ }
+ }
+
+ @Override
+ public synchronized void add(Object parentElement, Object childElement) {
+ super.add(parentElement, childElement);
+ runDeferredUpdates();
+ }
+
+ @Override
+ public synchronized void add(Object parentElement, Object... childElements) {
+ super.add(parentElement, childElements);
+ runDeferredUpdates();
+ }
+
+ @Override
+ public synchronized void remove(Object element) {
+ validateDeferredUpdates(element);
+ super.remove(element);
+ }
+
+ @Override
+ public synchronized void remove(Object... elements) {
+ for (Object element : elements) {
+ validateDeferredUpdates(element);
+ }
+ super.remove(elements);
+ }
+
+ /**
+ * Cancels any deferred updates currently scheduled/running.
+ */
+ public void cancelJobs() {
+ cancel(fSelectionJob);
+ cancel(fExpansionJob);
+ }
+
+ public synchronized void deferExpansion(Object element) {
+ TreeItem treeItem = (TreeItem) findItem(element);
+ if (treeItem == null) {
+ fExpansionJob.setDeferredExpansion(element);
+ fExpansionJob.schedule();
+ } else {
+ if (!getExpanded(treeItem)) {
+ fExpansionJob.setDeferredExpansion(element);
+ fExpansionJob.schedule();
+ }
+ }
+ }
+
+ public synchronized void deferSelection(IStructuredSelection selection) {
+ if (fSelectionJob == null) {
+ fSelectionJob = new SelectionJob();
+ }
+
+ fSelectionJob.setDeferredSelection(selection);
+ fSelectionJob.schedule();
+ }
+
+ public IStructuredSelection getDeferredSelection() {
+ if (fSelectionJob != null) {
+ return fSelectionJob.selection;
+ }
+ return null;
+ }
+
+ private void cancel(Job job) {
+ if (job != null) {
+ job.cancel();
+ }
+ }
+
+ private void addAllParents(List<Object> list, Object element) {
+ if (element instanceof IAdaptable) {
+ IAdaptable adaptable = (IAdaptable) element;
+ IWorkbenchAdapter adapter = adaptable.getAdapter(IWorkbenchAdapter.class);
+ if (adapter != null) {
+ Object parent = adapter.getParent(element);
+ if (parent != null) {
+ list.add(0, parent);
+ addAllParents(list, parent);
+ }
+ }
+ }
+ }
+
+ @Override
+ public Object[] filter(Object[] elements) {
+ return super.filter(elements);
+ }
+
+ public Object[] getCurrentChildren(Object parent) {
+ Widget widget = findItem(parent);
+ if (widget != null) {
+ Item[] items = getChildren(widget);
+ Object[] children = new Object[items.length];
+ for (int i = 0; i < children.length; i++) {
+ Object data = items[i].getData();
+ if (data == null) {
+ return null;
+ }
+ children[i] = data;
+ }
+ return children;
+ }
+ return null;
+ }
+
+ public synchronized void prune(final Object parent, final int offset) {
+ Widget widget = findItem(parent);
+ if (widget != null) {
+ final Item[] currentChildren = getChildren(widget);
+ if (offset < currentChildren.length) {
+ preservingSelection(new Runnable() {
+ @Override
+ public void run() {
+ for (int i = offset; i < currentChildren.length; i++) {
+ if (currentChildren[i].getData() != null) {
+ disassociate(currentChildren[i]);
+ }
+ currentChildren[i].dispose();
+ }
+ }
+ });
+ }
+ }
+ }
+
+ public synchronized void replace(final Object parent, final Object[] children, final int offset) {
+ preservingSelection(new Runnable() {
+ @Override
+ public void run() {
+ Widget widget = findItem(parent);
+ if (widget == null) {
+ add(parent, children);
+ } else {
+ Item[] currentChildren = getChildren(widget);
+ int pos = offset;
+ if (pos >= currentChildren.length) {
+ // append
+ add(parent, children);
+ } else {
+ // replace
+ for (int i = 0; i < children.length; i++) {
+ Object child = children[i];
+ if (pos < currentChildren.length) {
+ // replace
+ Item item = currentChildren[pos];
+ Object data = item.getData();
+ if (!child.equals(data)) {
+ // no need to cancel pending updates here, the child may have shifted up/down
+ internalRefresh(item, child, true, true);
+ } else {
+ // If it's the same child, the label/content may still have changed
+ doUpdateItem(item, child);
+ updatePlus(item, child);
+ }
+ } else {
+ // add
+ int numLeft = children.length - i;
+ if (numLeft > 1) {
+ Object[] others = new Object[numLeft];
+ System.arraycopy(children, i, others, 0, numLeft);
+ add(parent, others);
+ } else {
+ add(parent, child);
+ }
+ break;
+ }
+ pos++;
+ }
+ }
+ }
+ runDeferredUpdates();
+ }
+ });
+ }
+
+}
diff --git a/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/RemoteUIImages.java b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/RemoteUIImages.java
new file mode 100644
index 00000000000..fba8c3ea091
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/RemoteUIImages.java
@@ -0,0 +1,158 @@
+/*******************************************************************************
+ * Copyright (c) 2010,2013 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.internal.ui;
+
+import java.net.URL;
+
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.resource.ImageRegistry;
+import org.eclipse.swt.graphics.Image;
+import org.osgi.framework.Bundle;
+
+public class RemoteUIImages {
+
+ public static final IPath ICONS_PATH = new Path("icons"); //$NON-NLS-1$
+
+ private static final String NAME_PREFIX = RemoteUIPlugin.PLUGIN_ID + "."; //$NON-NLS-1$
+
+ private static ImageRegistry fgImageRegistry = new ImageRegistry();
+
+ private static final String T_ELCL = "elcl16"; //$NON-NLS-1$
+ private static final String T_DLCL = "dlcl16"; //$NON-NLS-1$
+ private static final String T_OVR = "ovr16"; //$NON-NLS-1$
+
+ /*
+ * Keys for images available from the plug-in image registry.
+ */
+ public static final String IMG_ELCL_UP_NAV = NAME_PREFIX + T_ELCL + ".up_nav.gif"; //$NON-NLS-1$
+ public static final String IMG_DLCL_UP_NAV = NAME_PREFIX + T_DLCL + ".up_nav.gif"; //$NON-NLS-1$
+ public static final String IMG_OVR_SYMLINK = NAME_PREFIX + T_OVR + ".symlink_ovr.gif"; //$NON-NLS-1$
+ public static final String IMG_ELCL_NEW_FOLDER = NAME_PREFIX + T_ELCL + ".new_folder.gif"; //$NON-NLS-1$
+ public static final String IMG_DLCL_NEW_FOLDER = NAME_PREFIX + T_DLCL + ".new_folder.gif"; //$NON-NLS-1$
+ public static final String IMG_DEFAULT_TYPE = NAME_PREFIX + "defaultType"; //$NON-NLS-1$
+
+ /*
+ * Set of predefined Image Descriptors.
+ */
+ public static final ImageDescriptor DESC_ELCL_UP_NAV = createManaged(T_ELCL, "up_nav.gif", IMG_ELCL_UP_NAV); //$NON-NLS-1$
+ public static final ImageDescriptor DESC_DLCL_UP_NAV = createManaged(T_DLCL, "up_nav.gif", IMG_ELCL_UP_NAV); //$NON-NLS-1$
+ public static final ImageDescriptor DESC_OVR_SYMLINK = createManaged(T_OVR, "symlink_ovr.gif", IMG_OVR_SYMLINK); //$NON-NLS-1$
+ public static final ImageDescriptor DESC_ELCL_NEW_FOLDER = createManaged(T_ELCL, "new_folder.gif", //$NON-NLS-1$
+ IMG_ELCL_NEW_FOLDER);
+ public static final ImageDescriptor DESC_DLCL_NEW_FOLDER = createManaged(T_DLCL, "new_folder.gif", //$NON-NLS-1$
+ IMG_DLCL_NEW_FOLDER);
+ public static final ImageDescriptor DESC_DEFAULT_TYPE = createManaged(ICONS_PATH.append("console.png"), //$NON-NLS-1$
+ IMG_DEFAULT_TYPE);
+
+ /**
+ * Returns the image managed under the given key in this registry.
+ *
+ * @param key
+ * the image's key
+ * @return the image managed under the given key
+ */
+ public static Image get(String key) {
+ return fgImageRegistry.get(key);
+ }
+
+ /**
+ * Returns the image descriptor for the given key in this registry. Might be called in a non-UI thread.
+ *
+ * @param key
+ * the image's key
+ * @return the image descriptor for the given key
+ */
+ public static ImageDescriptor getDescriptor(String key) {
+ return fgImageRegistry.getDescriptor(key);
+ }
+
+ /**
+ * Sets the three image descriptors for enabled, disabled, and hovered to an action. The actions
+ * are retrieved from the *lcl16 folders.
+ *
+ * @param action
+ * the action
+ * @param iconName
+ * the icon name
+ */
+ public static void setLocalImageDescriptors(IAction action, String iconName) {
+ setImageDescriptors(action, "lcl16", iconName); //$NON-NLS-1$
+ }
+
+ // ---- Helper methods to access icons on the file system --------------------------------------
+
+ private static void setImageDescriptors(IAction action, String type, String relPath) {
+ ImageDescriptor id = create("d" + type, relPath, false); //$NON-NLS-1$
+ if (id != null) {
+ action.setDisabledImageDescriptor(id);
+ }
+
+ /*
+ * id= create("c" + type, relPath, false); //$NON-NLS-1$
+ * if (id != null)
+ * action.setHoverImageDescriptor(id);
+ */
+
+ ImageDescriptor descriptor = create("e" + type, relPath, true); //$NON-NLS-1$
+ action.setHoverImageDescriptor(descriptor);
+ action.setImageDescriptor(descriptor);
+ }
+
+ private static ImageDescriptor createManaged(IPath path, String key) {
+ ImageDescriptor desc = createImageDescriptor(RemoteUIPlugin.getDefault().getBundle(), path, true);
+ fgImageRegistry.put(key, desc);
+ return desc;
+ }
+
+ private static ImageDescriptor createManaged(String prefix, String name, String key) {
+ ImageDescriptor image = create(prefix, name, true);
+ fgImageRegistry.put(key, image);
+ return image;
+ }
+
+ /*
+ * Creates an image descriptor for the given prefix and name in the JDT UI bundle. The path can
+ * contain variables like $NL$.
+ * If no image could be found, <code>useMissingImageDescriptor</code> decides if either
+ * the 'missing image descriptor' is returned or <code>null</code>.
+ * or <code>null</code>.
+ */
+ private static ImageDescriptor create(String prefix, String name, boolean useMissingImageDescriptor) {
+ IPath path = ICONS_PATH.append(prefix).append(name);
+ return createImageDescriptor(RemoteUIPlugin.getDefault().getBundle(), path, useMissingImageDescriptor);
+ }
+
+ /*
+ * Creates an image descriptor for the given path in a bundle. The path can contain variables
+ * like $NL$.
+ * If no image could be found, <code>useMissingImageDescriptor</code> decides if either
+ * the 'missing image descriptor' is returned or <code>null</code>.
+ * Added for 3.1.1.
+ */
+ public static ImageDescriptor createImageDescriptor(Bundle bundle, IPath path, boolean useMissingImageDescriptor) {
+ URL url = FileLocator.find(bundle, path, null);
+ if (url != null) {
+ return ImageDescriptor.createFromURL(url);
+ }
+ if (useMissingImageDescriptor) {
+ return ImageDescriptor.getMissingImageDescriptor();
+ }
+ return null;
+ }
+
+}
diff --git a/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/RemoteUIPlugin.java b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/RemoteUIPlugin.java
new file mode 100644
index 00000000000..f41e885e268
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/RemoteUIPlugin.java
@@ -0,0 +1,104 @@
+package org.eclipse.remote.internal.ui;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.remote.internal.ui.messages.Messages;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class RemoteUIPlugin extends AbstractUIPlugin {
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.eclipse.remote.ui"; //$NON-NLS-1$
+
+ // The shared instance
+ private static RemoteUIPlugin plugin;
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static RemoteUIPlugin getDefault() {
+ return plugin;
+ }
+
+ /**
+ * Get unique identifier for this plugin
+ *
+ * @since 7.0
+ */
+ public static String getUniqueIdentifier() {
+ if (getDefault() == null) {
+ return PLUGIN_ID;
+ }
+ return getDefault().getBundle().getSymbolicName();
+ }
+
+ /**
+ * Generate a log message given an IStatus object
+ *
+ * @param status
+ * IStatus object
+ * @since 5.0
+ */
+ public static void log(IStatus status) {
+ getDefault().getLog().log(status);
+ }
+
+ /**
+ * Generate a log message
+ *
+ * @param msg
+ * message to log
+ * @since 5.0
+ */
+ public static void log(String msg) {
+ log(new Status(IStatus.ERROR, getDefault().getBundle().getSymbolicName(), IStatus.ERROR, msg, null));
+ }
+
+ /**
+ * Generate a log message for an exception
+ *
+ * @param e
+ * exception used to generate message
+ * @since 5.0
+ */
+ public static void log(Throwable e) {
+ log(new Status(IStatus.ERROR, getDefault().getBundle().getSymbolicName(), IStatus.ERROR,
+ Messages.PTPRemoteUIPlugin_3, e));
+ }
+
+ /**
+ * Return the OSGi service with the given service interface.
+ *
+ * @param service service interface
+ * @return the specified service or null if it's not registered
+ */
+ public static <T> T getService(Class<T> service) {
+ BundleContext context = plugin.getBundle().getBundleContext();
+ ServiceReference<T> ref = context.getServiceReference(service);
+ return ref != null ? context.getService(ref) : null;
+ }
+
+ /**
+ * The constructor
+ */
+ public RemoteUIPlugin() {
+ }
+
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+}
diff --git a/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/ServicePropertyTester.java b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/ServicePropertyTester.java
new file mode 100644
index 00000000000..5e230c62888
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/ServicePropertyTester.java
@@ -0,0 +1,59 @@
+package org.eclipse.remote.internal.ui;
+
+import org.eclipse.core.expressions.PropertyTester;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteConnectionControlService;
+import org.eclipse.remote.core.IRemoteConnectionType;
+
+public class ServicePropertyTester extends PropertyTester {
+
+ @Override
+ @SuppressWarnings("unchecked")
+ public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
+ if (receiver instanceof IRemoteConnection) {
+ IRemoteConnection connection = (IRemoteConnection) receiver;
+ if (property.equals("hasConnectionTypeService")) { //$NON-NLS-1$
+ if (args.length > 0 && args[0] instanceof String) {
+ String serviceName = (String) args[0];
+ try {
+ Class<?> service = Class.forName(serviceName);
+ return connection.getConnectionType()
+ .hasService((Class<IRemoteConnectionType.Service>) service);
+ } catch (ClassNotFoundException e) {
+ return false;
+ }
+ }
+ } else if (property.equals("hasConnectionService")) { //$NON-NLS-1$
+ if (args.length > 0 && args[0] instanceof String) {
+ String serviceName = (String) args[0];
+ try {
+ Class<?> service = Class.forName(serviceName);
+ return connection.hasService((Class<IRemoteConnection.Service>) service);
+ } catch (ClassNotFoundException e) {
+ return false;
+ }
+ }
+ } else if (property.equals("canDelete")) { //$NON-NLS-1$
+ return connection.getConnectionType().canRemove();
+ } else if (property.equals("canOpen")) { //$NON-NLS-1$
+ IRemoteConnectionControlService controlService = connection
+ .getService(IRemoteConnectionControlService.class);
+ if (controlService != null) {
+ return !connection.isOpen();
+ } else {
+ return false;
+ }
+ } else if (property.equals("canClose")) { //$NON-NLS-1$
+ IRemoteConnectionControlService controlService = connection
+ .getService(IRemoteConnectionControlService.class);
+ if (controlService != null) {
+ return connection.isOpen();
+ } else {
+ return false;
+ }
+ }
+ }
+ return false;
+ }
+
+}
diff --git a/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/messages.properties b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/messages.properties
new file mode 100644
index 00000000000..b9b7ca6feb5
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/messages.properties
@@ -0,0 +1,6 @@
+NewRemoteConnectionTypePage_LaunchTargetType=Connection Type
+NewRemoteConnectionTypePage_SelectTargetType=Select type of connection to create.
+NewRemoteConnectionWizard_0=Connection Type
+OpenTerminalHandler_OpenTerminalDesc=A real terminal would open now
+OpenTerminalHandler_OpenTerminalTitle=Open Terminal
+RemoteConnectionPropertyPage_ConnectionName=Connection Name:
diff --git a/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/messages/Messages.java b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/messages/Messages.java
new file mode 100644
index 00000000000..ff746b74b50
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/messages/Messages.java
@@ -0,0 +1,134 @@
+/*******************************************************************************
+ * Copyright (c) 2007 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.remote.internal.ui.messages;
+
+import org.eclipse.osgi.util.NLS;
+
+public class Messages extends NLS {
+ private static final String BUNDLE_NAME = "org.eclipse.remote.internal.ui.messages.messages"; //$NON-NLS-1$
+
+ public static String AbstractRemoteUIConnectionManager_Connection_Error;
+
+ public static String AbstractRemoteUIConnectionManager_Could_not_open_connection;
+
+ public static String ConnectionsPreferencePage_Add;
+
+ public static String ConnectionsPreferencePage_closed;
+
+ public static String ConnectionsPreferencePage_Close;
+
+ public static String ConnectionsPreferencePage_Confirm_Actions;
+
+ public static String ConnectionsPreferencePage_Connection_Name;
+
+ public static String ConnectionsPreferencePage_Edit;
+
+ public static String ConnectionsPreferencePage_Host;
+
+ public static String ConnectionsPreferencePage_open;
+
+ public static String ConnectionsPreferencePage_Open;
+
+ public static String ConnectionsPreferencePage_Remote_Services;
+
+ public static String ConnectionsPreferencePage_Remove;
+
+ public static String ConnectionsPreferencePage_Status;
+
+ public static String ConnectionsPreferencePage_There_are_unsaved_changes;
+
+ public static String ConnectionsPreferencePage_This_connection_contains_unsaved_changes;
+
+ public static String ConnectionsPreferencePage_User;
+
+ public static String LocalUIConnectionManager_0;
+ public static String LocalUIConnectionManager_1;
+ public static String LocalUIConnectionManager_2;
+ public static String LocalUIConnectionManager_3;
+
+ public static String PendingUpdateAdapter_Pending;
+
+ public static String PTPRemoteUIPlugin_3;
+ public static String PTPRemoteUIPlugin_4;
+
+ public static String RemoteConnectionWidget_Connection_Type;
+ public static String RemoteConnectionWidget_Connection_Name;
+ public static String RemoteConnectionWidget_Local;
+ public static String RemoteConnectionWidget_New;
+ public static String RemoteConnectionWidget_Remote;
+ public static String RemoteConnectionWidget_selectConnection;
+ public static String RemoteConnectionWidget_selectConnectionType;
+
+ public static String RemoteDevelopmentPreferencePage_Default_connection_type;
+
+ public static String RemoteDirectoryWidget_0;
+ public static String RemoteDirectoryWidget_1;
+ public static String RemoteDirectoryWidget_2;
+ public static String RemoteDirectoryWidget_3;
+
+ public static String RemoteFileWidget_Browse;
+
+ public static String RemoteFileWidget_File;
+
+ public static String RemoteFileWidget_Restore_Default;
+
+ public static String RemoteFileWidget_Select_File;
+
+ public static String RemoteResourceBrowser_resourceTitle;
+ public static String RemoteResourceBrowser_fileTitle;
+ public static String RemoteResourceBrowser_directoryTitle;
+ public static String RemoteResourceBrowser_resourceLabel;
+ public static String RemoteResourceBrowser_fileLabel;
+ public static String RemoteResourceBrowser_directoryLabel;
+ public static String RemoteResourceBrowser_connectonLabel;
+ public static String RemoteResourceBrowser_newConnection;
+ public static String RemoteResourceBrowser_NewFolder;
+ public static String RemoteResourceBrowser_Show_hidden_files;
+ public static String RemoteResourceBrowser_UpOneLevel;
+
+ public static String RemoteResourceBrowserWidget_0;
+
+ public static String RemoteResourceBrowserWidget_1;
+
+ public static String RemoteResourceBrowserWidget_2;
+
+ public static String RemoteResourceBrowserWidget_3;
+
+ public static String RemoteResourceBrowserWidget_4;
+
+ public static String RemoteResourceBrowserWidget_New_Folder;
+
+ public static String RemoteResourceBrowserWidget_Unable_to_create_new_folder;
+
+ public static String RemoteUIServices_Configuring_remote_services;
+
+ public static String RemoteUIServicesProxy_1;
+ public static String RemoteUIServicesProxy_2;
+
+ public static String CloseConnectionHandler_0;
+ public static String CloseConnectionHandler_1;
+ public static String DeleteRemoteConnectionHandler_ConfirmDeleteMessage;
+ public static String DeleteRemoteConnectionHandler_DeleteConnectionTitle;
+ public static String OpenConnectionHandler_0;
+ public static String OpenConnectionHandler_1;
+
+ static {
+ // initialize resource bundle
+ NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+ }
+
+ private Messages() {
+ }
+}
diff --git a/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/messages/messages.properties b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/messages/messages.properties
new file mode 100644
index 00000000000..5bf83a33ab2
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/messages/messages.properties
@@ -0,0 +1,77 @@
+###############################################################################
+# Copyright (c) 2007 IBM Corporation and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+AbstractRemoteUIConnectionManager_Could_not_open_connection=Could not open connection
+AbstractRemoteUIConnectionManager_Connection_Error=Connection Error
+ConnectionsPreferencePage_Add=Add
+ConnectionsPreferencePage_Close=Close
+ConnectionsPreferencePage_closed=closed
+ConnectionsPreferencePage_Confirm_Actions=Confirm Actions
+ConnectionsPreferencePage_Connection_Name=Connection Name
+ConnectionsPreferencePage_Edit=Edit
+ConnectionsPreferencePage_Host=Host
+ConnectionsPreferencePage_open=open
+ConnectionsPreferencePage_Open=Open
+ConnectionsPreferencePage_Remote_Services=Remote Services:
+ConnectionsPreferencePage_Remove=Remove
+ConnectionsPreferencePage_Status=Status
+ConnectionsPreferencePage_There_are_unsaved_changes=There are unsaved changes that must be saved before proceeding. Do you wish to save the changes?
+ConnectionsPreferencePage_This_connection_contains_unsaved_changes=This connection contains unsaved changes which must be saved before the connection can be opened. Do you wish to save the changes?
+ConnectionsPreferencePage_User=User
+LocalUIConnectionManager_0=Connection Error
+LocalUIConnectionManager_1=Could not open connection
+LocalUIConnectionManager_2=Can not create local connection
+LocalUIConnectionManager_3=It is not possible to create a connection for the local connection provider. Select a different remote provider first.
+PendingUpdateAdapter_Pending=Pending...
+PTPRemoteUIPlugin_3=Internal Error
+PTPRemoteUIPlugin_4=Initializing remote services
+RemoteConnectionWidget_Connection_Type=Connection Type:
+RemoteConnectionWidget_Connection_Name=Connection name:
+RemoteConnectionWidget_Local=Local
+RemoteConnectionWidget_New=New...
+RemoteConnectionWidget_Remote=Remote
+RemoteConnectionWidget_selectConnection=Please select a connection
+RemoteConnectionWidget_selectConnectionType=Please select a connection type
+RemoteDevelopmentPreferencePage_Default_connection_type=Default connection type
+RemoteDirectoryWidget_0=Select Directory
+RemoteDirectoryWidget_1=Directory:
+RemoteDirectoryWidget_2=Browse...
+RemoteDirectoryWidget_3=Restore Default
+RemoteFileWidget_Browse=Browse...
+RemoteFileWidget_File=File:
+RemoteFileWidget_Restore_Default=Restore Default
+RemoteFileWidget_Select_File=Select File
+RemoteResourceBrowser_resourceTitle=Browse Resource
+RemoteResourceBrowser_fileTitle=Browse File
+RemoteResourceBrowser_directoryTitle=Browse Directory
+RemoteResourceBrowser_resourceLabel=Selected resource:
+RemoteResourceBrowser_fileLabel=Selected file:
+RemoteResourceBrowser_directoryLabel=Selected directory:
+RemoteResourceBrowser_connectonLabel=Connection:
+RemoteResourceBrowser_newConnection=New...
+RemoteResourceBrowser_NewFolder=New folder
+RemoteResourceBrowser_Show_hidden_files=Show hidden files
+RemoteResourceBrowser_UpOneLevel=Up one level
+RemoteResourceBrowserWidget_0=validate input
+RemoteResourceBrowserWidget_1=Enter Folder Name
+RemoteResourceBrowserWidget_2=Folder name:
+RemoteResourceBrowserWidget_3=Folder already exists
+RemoteResourceBrowserWidget_4=Please enter a folder name
+RemoteResourceBrowserWidget_New_Folder=New Folder
+RemoteResourceBrowserWidget_Unable_to_create_new_folder=Unable to create new folder
+RemoteUIServices_Configuring_remote_services=Configuring remote services...
+RemoteUIServicesProxy_1=Missing {0} attribute
+RemoteUIServicesProxy_2=Failed to instantiate factory: {0} in type: {1} in plugin: {2}
+CloseConnectionHandler_0=Closing connections
+CloseConnectionHandler_1=Error closing connections
+DeleteRemoteConnectionHandler_ConfirmDeleteMessage=Delete connection
+DeleteRemoteConnectionHandler_DeleteConnectionTitle=Delete Connection
+OpenConnectionHandler_0=Opening connections
+OpenConnectionHandler_1=Error opening connections
diff --git a/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/preferences/ConnectionsPreferencePage.java b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/preferences/ConnectionsPreferencePage.java
new file mode 100644
index 00000000000..4c92f021b68
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/preferences/ConnectionsPreferencePage.java
@@ -0,0 +1,631 @@
+/*******************************************************************************
+ * Copyright (c) 2009, 2015 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ * Patrick Tasse - [462499] set viewer comparator
+ * Bernd Hufmann - [462709] Display Host and User per connection
+ *******************************************************************************/
+package org.eclipse.remote.internal.ui.preferences;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.preference.PreferencePage;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.viewers.ColumnLayoutData;
+import org.eclipse.jface.viewers.ColumnWeightData;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.TableLayout;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerComparator;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteConnectionControlService;
+import org.eclipse.remote.core.IRemoteConnectionHostService;
+import org.eclipse.remote.core.IRemoteConnectionType;
+import org.eclipse.remote.core.IRemoteConnectionWorkingCopy;
+import org.eclipse.remote.core.IRemotePreferenceConstants;
+import org.eclipse.remote.core.IRemoteServicesManager;
+import org.eclipse.remote.core.exception.RemoteConnectionException;
+import org.eclipse.remote.internal.core.preferences.Preferences;
+import org.eclipse.remote.internal.ui.RemoteUIPlugin;
+import org.eclipse.remote.internal.ui.messages.Messages;
+import org.eclipse.remote.ui.IRemoteUIConnectionService;
+import org.eclipse.remote.ui.IRemoteUIConnectionWizard;
+import org.eclipse.remote.ui.widgets.RemoteConnectionWidget;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.events.MouseListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.TableItem;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPreferencePage;
+
+/**
+ * This class implements a preference page which can be used to view a list of
+ * JSch connections, create new connections or to delete existing connections.
+ *
+ */
+public class ConnectionsPreferencePage extends PreferencePage implements IWorkbenchPreferencePage {
+
+ private class ConnectionContentProvider implements IStructuredContentProvider {
+
+ @Override
+ public void dispose() {
+ // Nothing to do
+ }
+
+ @Override
+ public Object[] getElements(Object inputElement) {
+ return fWorkingCopies.values().toArray(new IRemoteConnection[fWorkingCopies.size()]);
+ }
+
+ @Override
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ // Nothing to do
+ }
+
+ }
+
+ private class ConnectionLabelProvider implements ITableLabelProvider, ILabelProvider {
+
+ @Override
+ public void addListener(ILabelProviderListener listener) {
+ // Nothing to do
+ }
+
+ @Override
+ public void dispose() {
+ // Nothing to do
+ }
+
+ @Override
+ public Image getColumnImage(Object element, int columnIndex) {
+ return null;
+ }
+
+ @Override
+ public String getColumnText(Object element, int columnIndex) {
+ IRemoteConnection connection = getOriginalIfClean((IRemoteConnection) element);
+ switch (columnIndex) {
+ case 0:
+ return connection.isOpen() ? Messages.ConnectionsPreferencePage_open
+ : Messages.ConnectionsPreferencePage_closed;
+ case 1:
+ return connection.getName();
+ case 2:
+ if (connection.hasService(IRemoteConnectionHostService.class)) {
+ return connection.getService(IRemoteConnectionHostService.class).getHostname();
+ }
+ break;
+ case 3:
+ if (connection.hasService(IRemoteConnectionHostService.class)) {
+ return connection.getService(IRemoteConnectionHostService.class).getUsername();
+ }
+ break;
+ }
+ return null;
+ }
+
+ @Override
+ public boolean isLabelProperty(Object element, String property) {
+ return false;
+ }
+
+ @Override
+ public Image getImage(Object element) {
+ return null;
+ }
+
+ @Override
+ public String getText(Object element) {
+ /*
+ * This interface is used by the default ViewerComparator.
+ */
+ IRemoteConnection connection = (IRemoteConnection) element;
+ return connection.getName();
+ }
+
+ @Override
+ public void removeListener(ILabelProviderListener listener) {
+ // Nothing to do
+ }
+
+ }
+
+ /**
+ * Handle widget selection events for this page
+ *
+ */
+ private class EventHandler extends SelectionAdapter {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ Object source;
+
+ source = e.getSource();
+ if (source == fAddButton) {
+ addConnection();
+ } else if (source == fEditButton) {
+ editConnection();
+ } else if (source == fRemoveButton) {
+ removeConnections();
+ } else if (source == fOpenButton) {
+ toggleConnection();
+ } else if (source == fCloseButton) {
+ toggleConnection();
+ } else if (source == fConnectionTable) {
+ selectConnection();
+ } else if (source == fServicesCombo) {
+ String id = fServiceIDs[fServicesCombo.getSelectionIndex()];
+ selectServices(id);
+ }
+ }
+
+ }
+
+ private final String[] fTableColumnHeaders = { Messages.ConnectionsPreferencePage_Status,
+ Messages.ConnectionsPreferencePage_Connection_Name, Messages.ConnectionsPreferencePage_Host,
+ Messages.ConnectionsPreferencePage_User };
+
+ private final ColumnLayoutData[] fTableColumnLayouts = { new ColumnWeightData(15), new ColumnWeightData(35),
+ new ColumnWeightData(30), new ColumnWeightData(20) };
+
+ private Combo fServicesCombo;
+ private Button fAddButton;
+ private Button fEditButton;
+ private Button fRemoveButton;
+ private Button fOpenButton;
+ private Button fCloseButton;
+ private Table fConnectionTable;
+ private TableViewer fConnectionViewer;
+ private EventHandler fEventHandler;
+
+ private String[] fServiceIDs;
+ private boolean fIsDirty;
+ private IRemoteConnection fSelectedConnection;
+ private IRemoteConnectionType fConnectionType;
+ private IRemoteUIConnectionService fUIConnectionManager;
+
+ private final Map<String, IRemoteConnection> fWorkingCopies = new HashMap<>();
+
+ private static final String DEFAULT_CONNECTION_NAME = "Remote Host"; //$NON-NLS-1$
+
+ public ConnectionsPreferencePage() {
+ super();
+ }
+
+ public ConnectionsPreferencePage(String title) {
+ super(title);
+ }
+
+ public ConnectionsPreferencePage(String title, ImageDescriptor image) {
+ super(title, image);
+ }
+
+ /**
+ * Add a new connection
+ */
+ private void addConnection() {
+ if (fIsDirty) {
+ MessageDialog dialog = new MessageDialog(getShell(), Messages.ConnectionsPreferencePage_Confirm_Actions,
+ null, Messages.ConnectionsPreferencePage_There_are_unsaved_changes, MessageDialog.QUESTION,
+ new String[] { IDialogConstants.YES_LABEL, IDialogConstants.NO_LABEL }, 0);
+ if (dialog.open() == 1) {
+ return;
+ }
+ performOk();
+ }
+ if (fUIConnectionManager != null) {
+ IRemoteUIConnectionWizard wizard = fUIConnectionManager.getConnectionWizard(getShell());
+ if (wizard != null) {
+ wizard.setConnectionName(initialConnectionName());
+ wizard.setInvalidConnectionNames(invalidConnectionNames());
+ IRemoteConnectionWorkingCopy conn = wizard.open();
+ if (conn != null) {
+ fWorkingCopies.put(conn.getName(), conn);
+ if (!fConnectionViewer.getTable().isDisposed()) {
+ fConnectionViewer.refresh();
+ }
+ fIsDirty = true;
+ }
+ }
+ }
+ }
+
+ /**
+ * Create the contents for this page
+ *
+ * @param parent
+ * - The parent widget for the client area
+ */
+ @Override
+ protected Control createContents(Composite parent) {
+ return createWidgets(parent);
+ }
+
+ /**
+ * Create the widgets for this page
+ *
+ * @param parent
+ * The parent widget for the client area
+ * @return
+ */
+ private Control createWidgets(Composite parent) {
+ fEventHandler = new EventHandler();
+
+ Composite selectComp = new Composite(parent, SWT.NONE);
+ selectComp.setLayout(new GridLayout(2, false));
+ selectComp.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1));
+
+ Label label = new Label(selectComp, SWT.NONE);
+ label.setText(Messages.ConnectionsPreferencePage_Remote_Services);
+ label.setLayoutData(new GridData());
+ fServicesCombo = new Combo(selectComp, SWT.READ_ONLY);
+ label.setLayoutData(new GridData());
+
+ IRemoteServicesManager manager = RemoteUIPlugin.getService(IRemoteServicesManager.class);
+ List<IRemoteConnectionType> services = manager.getRemoteConnectionTypes();
+ String[] names = new String[services.size()];
+ fServiceIDs = new String[services.size()];
+ {
+ int i = 0;
+ for (IRemoteConnectionType s : services) {
+ names[i] = s.getName();
+ fServiceIDs[i] = s.getId();
+ i++;
+ }
+ }
+ fServicesCombo.addSelectionListener(fEventHandler);
+ fServicesCombo.setItems(names);
+
+ Composite preferencePane = new Composite(parent, SWT.NONE);
+ preferencePane.setLayout(new GridLayout(2, false));
+
+ fConnectionTable = new Table(preferencePane, SWT.MULTI | SWT.FULL_SELECTION | SWT.BORDER);
+ GridData data = new GridData(GridData.FILL_BOTH);
+ data.widthHint = 425;
+ data.heightHint = fConnectionTable.getItemHeight();
+ data.horizontalSpan = 1;
+ fConnectionTable.setLayoutData(data);
+ fConnectionTable.setFont(parent.getFont());
+ fConnectionTable.addSelectionListener(fEventHandler);
+ fConnectionTable.addMouseListener(new MouseListener() {
+ @Override
+ public void mouseDoubleClick(MouseEvent e) {
+ if (fSelectedConnection != null) {
+ IRemoteConnection original = getOriginalIfClean(fSelectedConnection);
+ if (original.isOpen()) {
+ editConnection();
+ }
+ }
+ }
+
+ @Override
+ public void mouseDown(MouseEvent e) {
+ // Nothing
+ }
+
+ @Override
+ public void mouseUp(MouseEvent e) {
+ // Nothing
+ }
+ });
+
+ TableLayout tableLayout = new TableLayout();
+ fConnectionTable.setLayout(tableLayout);
+ fConnectionTable.setHeaderVisible(true);
+ fConnectionTable.setLinesVisible(true);
+
+ for (int i = 0; i < fTableColumnHeaders.length; i++) {
+ tableLayout.addColumnData(fTableColumnLayouts[i]);
+ TableColumn column = new TableColumn(fConnectionTable, SWT.NONE, i);
+ column.setResizable(fTableColumnLayouts[i].resizable);
+ column.setText(fTableColumnHeaders[i]);
+ }
+ fConnectionViewer = new TableViewer(fConnectionTable);
+ fConnectionViewer.setContentProvider(new ConnectionContentProvider());
+ fConnectionViewer.setLabelProvider(new ConnectionLabelProvider());
+ fConnectionViewer.setComparator(new ViewerComparator());
+ fConnectionViewer.setInput(this);
+
+ Composite buttonPane = new Composite(preferencePane, SWT.NONE);
+ buttonPane.setLayout(new GridLayout(1, false));
+ buttonPane.setLayoutData(new GridData(GridData.FILL_VERTICAL));
+ buttonPane.setFont(preferencePane.getFont());
+
+ fAddButton = new Button(buttonPane, SWT.PUSH);
+ setButtonLayoutData(fAddButton);
+ fAddButton.setText(Messages.ConnectionsPreferencePage_Add);
+ fAddButton.addSelectionListener(fEventHandler);
+ fEditButton = new Button(buttonPane, SWT.PUSH);
+ setButtonLayoutData(fEditButton);
+ fEditButton.setText(Messages.ConnectionsPreferencePage_Edit);
+ fEditButton.addSelectionListener(fEventHandler);
+ fEditButton.setEnabled(false);
+ fRemoveButton = new Button(buttonPane, SWT.PUSH);
+ setButtonLayoutData(fRemoveButton);
+ fRemoveButton.setText(Messages.ConnectionsPreferencePage_Remove);
+ fRemoveButton.addSelectionListener(fEventHandler);
+ fRemoveButton.setEnabled(false);
+ fOpenButton = new Button(buttonPane, SWT.PUSH);
+ setButtonLayoutData(fOpenButton);
+ fOpenButton.setText(Messages.ConnectionsPreferencePage_Open);
+ fOpenButton.addSelectionListener(fEventHandler);
+ fOpenButton.setEnabled(false);
+ fCloseButton = new Button(buttonPane, SWT.PUSH);
+ setButtonLayoutData(fCloseButton);
+ fCloseButton.setText(Messages.ConnectionsPreferencePage_Close);
+ fCloseButton.addSelectionListener(fEventHandler);
+ fCloseButton.setEnabled(false);
+
+ if (fServiceIDs.length > 0) {
+ String id = Preferences.getString(IRemotePreferenceConstants.PREF_CONNECTION_TYPE_ID);
+ if ("".equals(id)) { //$NON-NLS-1$
+ id = fServiceIDs[0];
+ }
+ for (int i = 0; i < fServiceIDs.length; i++) {
+ if (id.equals(fServiceIDs[i])) {
+ fServicesCombo.select(i);
+ }
+ }
+ selectServices(id);
+ }
+
+ return preferencePane;
+ }
+
+ /**
+ * Edit an existing service configuration
+ */
+ private void editConnection() {
+ if (fSelectedConnection != null) {
+ IRemoteConnectionWorkingCopy copy;
+ if (fSelectedConnection instanceof IRemoteConnectionWorkingCopy) {
+ copy = (IRemoteConnectionWorkingCopy) fSelectedConnection;
+ } else {
+ copy = fSelectedConnection.getWorkingCopy();
+ }
+ IRemoteUIConnectionWizard wizard = fUIConnectionManager.getConnectionWizard(getShell());
+ if (wizard != null) {
+ wizard.setConnection(copy);
+ wizard.setInvalidConnectionNames(invalidConnectionNames());
+ IRemoteConnectionWorkingCopy conn = wizard.open();
+ if (conn != null && conn.isDirty()) {
+ fWorkingCopies.put(copy.getName(), copy);
+ fConnectionViewer.refresh();
+ fIsDirty = true;
+ }
+ }
+ }
+ }
+
+ @Override
+ public void init(IWorkbench workbench) {
+ // Do nothing
+ }
+
+ private String initialConnectionName() {
+ String name = RemoteConnectionWidget.DEFAULT_CONNECTION_NAME;
+ int count = 2;
+ while (fWorkingCopies.containsKey(name)) {
+ name = DEFAULT_CONNECTION_NAME + " " + count++; //$NON-NLS-1$
+ }
+ return name;
+ }
+
+ private void initWorkingConnections() {
+ fWorkingCopies.clear();
+ for (IRemoteConnection conn : fConnectionType.getConnections()) {
+ fWorkingCopies.put(conn.getName(), conn);
+ }
+ }
+
+ private Set<String> invalidConnectionNames() {
+ return fWorkingCopies.keySet();
+ }
+
+ @Override
+ protected void performDefaults() {
+ initWorkingConnections();
+ fIsDirty = false;
+ fConnectionViewer.refresh();
+ super.performDefaults();
+ }
+
+ /**
+ * Delete service configurations when Ok button is pressed
+ *
+ * @return Status from superclass indicating if Ok processing is to continue
+ */
+ @Override
+ public boolean performOk() {
+ if (fIsDirty) {
+ updateConnections();
+ fIsDirty = false;
+ }
+ return super.performOk();
+ }
+
+ /**
+ * Remove the selected service configuration from the set of service
+ * configurations
+ */
+ private void removeConnections() {
+ TableItem[] items = fConnectionTable.getSelection();
+ if (items.length > 0) {
+ for (TableItem item : items) {
+ fWorkingCopies.remove(((IRemoteConnection) item.getData()).getName());
+ }
+ fConnectionViewer.refresh();
+ fIsDirty = true;
+ fConnectionTable.deselectAll();
+ fSelectedConnection = null;
+ }
+ updateEnablement();
+ }
+
+ /**
+ * Record the selected connection and enable the buttons.
+ */
+ private void selectConnection() {
+ TableItem[] selection = fConnectionTable.getSelection();
+ if (selection.length > 0) {
+ fSelectedConnection = (IRemoteConnection) selection[0].getData();
+ } else {
+ fSelectedConnection = null;
+ }
+ updateEnablement();
+ }
+
+ private void selectServices(String id) {
+ IRemoteServicesManager manager = RemoteUIPlugin.getService(IRemoteServicesManager.class);
+ fConnectionType = manager.getConnectionType(id);
+ if (fConnectionType != null) {
+ fUIConnectionManager = fConnectionType.getService(IRemoteUIConnectionService.class);
+ initWorkingConnections();
+ fConnectionViewer.refresh();
+ fAddButton.setEnabled(fConnectionType.canAdd());
+ }
+ fIsDirty = false;
+ }
+
+ /**
+ * Toggle the connection
+ */
+ private void toggleConnection() {
+ TableItem[] items = fConnectionTable.getSelection();
+ if (items.length > 0) {
+ IRemoteConnection conn = getOriginalIfClean((IRemoteConnection) items[0].getData());
+ if (conn.hasService(IRemoteConnectionControlService.class) && conn.isOpen()) {
+ conn.close();
+ } else {
+ if (conn instanceof IRemoteConnectionWorkingCopy) {
+ IRemoteConnectionWorkingCopy wc = (IRemoteConnectionWorkingCopy) conn;
+ if (wc.isDirty()) {
+ MessageDialog dialog = new MessageDialog(getShell(),
+ Messages.ConnectionsPreferencePage_Confirm_Actions, null,
+ Messages.ConnectionsPreferencePage_This_connection_contains_unsaved_changes,
+ MessageDialog.QUESTION,
+ new String[] { IDialogConstants.YES_LABEL, IDialogConstants.NO_LABEL }, 0);
+ if (dialog.open() == 1) {
+ return;
+ }
+ try {
+ conn = wc.save();
+ } catch (RemoteConnectionException e) {
+ RemoteUIPlugin.log(e);
+ }
+ /*
+ * Replace working copy with original so that the correct version will be used in the future
+ */
+ fWorkingCopies.put(conn.getName(), conn);
+ }
+ }
+ IRemoteUIConnectionService mgr = conn.getConnectionType().getService(IRemoteUIConnectionService.class);
+ if (mgr != null) {
+ mgr.openConnectionWithProgress(getShell(), null, conn);
+ }
+ }
+ fConnectionViewer.refresh();
+ updateEnablement();
+ }
+ }
+
+ /**
+ * Update the connection manager with changes to the connections.
+ */
+ private void updateConnections() {
+ /*
+ * Remove any deleted connections
+ */
+ for (IRemoteConnection conn : fConnectionType.getConnections()) {
+ if (!fWorkingCopies.containsKey(conn.getName())
+ && (!conn.hasService(IRemoteConnectionControlService.class) || !conn.isOpen())) {
+ try {
+ fConnectionType.removeConnection(conn);
+ } catch (RemoteConnectionException e) {
+ // Ignore
+ }
+ }
+ }
+ /*
+ * Save any added/edited connections
+ */
+ for (IRemoteConnection conn : fWorkingCopies.values()) {
+ if (conn instanceof IRemoteConnectionWorkingCopy) {
+ IRemoteConnectionWorkingCopy wc = (IRemoteConnectionWorkingCopy) conn;
+ if (wc.isDirty()) {
+ try {
+ wc.save();
+ } catch (RemoteConnectionException e) {
+ RemoteUIPlugin.log(e);
+ }
+ }
+ }
+ }
+ initWorkingConnections();
+ }
+
+ private void updateEnablement() {
+ fEditButton.setEnabled(false);
+ fRemoveButton.setEnabled(false);
+ fOpenButton.setEnabled(false);
+ fCloseButton.setEnabled(false);
+ if (fSelectedConnection != null) {
+ IRemoteConnection conn = getOriginalIfClean(fSelectedConnection);
+ if (conn.hasService(IRemoteConnectionControlService.class)) {
+ if (!conn.isOpen()) {
+ fEditButton.setEnabled(conn.getConnectionType().canEdit());
+ fRemoveButton.setEnabled(conn.getConnectionType().canRemove());
+ fOpenButton.setEnabled(true);
+ } else {
+ fCloseButton.setEnabled(true);
+ }
+ } else {
+ fEditButton.setEnabled(conn.getConnectionType().canEdit());
+ }
+ }
+ }
+
+ /**
+ * Get the original connection if the working copy is not dirty
+ *
+ * @param conn
+ * @return
+ */
+ private IRemoteConnection getOriginalIfClean(IRemoteConnection conn) {
+ if (conn instanceof IRemoteConnectionWorkingCopy) {
+ IRemoteConnectionWorkingCopy wc = (IRemoteConnectionWorkingCopy) conn;
+ if (!wc.isDirty()) {
+ return wc.getOriginal();
+ }
+ }
+ return conn;
+ }
+}
diff --git a/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/preferences/PreferencesAdapter.java b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/preferences/PreferencesAdapter.java
new file mode 100644
index 00000000000..7649ef6dd05
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/preferences/PreferencesAdapter.java
@@ -0,0 +1,339 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2006 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.remote.internal.ui.preferences;
+
+import org.eclipse.core.runtime.ListenerList;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences.IPreferenceChangeListener;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.jface.util.PropertyChangeEvent;
+import org.eclipse.remote.internal.core.preferences.Preferences;
+
+/**
+ * Adapts {@link org.eclipse.core.runtime.IEclipsePreferences} to {@link org.eclipse.jface.preference.IPreferenceStore}
+ *
+ * @since 3.0
+ */
+public class PreferencesAdapter implements IPreferenceStore {
+
+ /**
+ * Property change listener. Listens for events of type
+ * {@link org.eclipse.core.runtime.IEclipsePreferences.PreferenceChangeEvent} and fires a
+ * {@link org.eclipse.jface.util.PropertyChangeEvent} on the adapter with arguments from the received event.
+ */
+ private class PreferenceChangeListener implements IPreferenceChangeListener {
+
+ /*
+ * @see org.eclipse.core.runtime.Preferences.IPropertyChangeListener# propertyChange
+ * (org.eclipse.core.runtime.Preferences.PropertyChangeEvent)
+ */
+ @Override
+ public void preferenceChange(IEclipsePreferences.PreferenceChangeEvent event) {
+ firePropertyChangeEvent(event.getKey(), event.getOldValue(), event.getNewValue());
+ }
+ }
+
+ /** Listeners on the adapter */
+ private final ListenerList fListeners = new ListenerList(ListenerList.IDENTITY);
+
+ /** Listener on the adapted Preferences */
+ private final PreferenceChangeListener fListener = new PreferenceChangeListener();
+
+ /** True iff no events should be forwarded */
+ private boolean fSilent;
+
+ /** True if any preferences have changed */
+ private boolean fNeedsSaving = false;
+
+ /**
+ * Initialize with the given Preferences.
+ *
+ * @param preferences
+ * The preferences to wrap.
+ * @since 4.0
+ */
+ public PreferencesAdapter() {
+ Preferences.addPreferenceChangeListener(fListener);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void addPropertyChangeListener(IPropertyChangeListener listener) {
+ fListeners.add(listener);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void removePropertyChangeListener(IPropertyChangeListener listener) {
+ fListeners.remove(listener);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public boolean contains(String name) {
+ return Preferences.contains(name);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void firePropertyChangeEvent(String name, Object oldValue, Object newValue) {
+ fNeedsSaving = true;
+ if (!fSilent) {
+ PropertyChangeEvent event = new PropertyChangeEvent(this, name, oldValue, newValue);
+ Object[] listeners = fListeners.getListeners();
+ for (Object listener : listeners) {
+ ((IPropertyChangeListener) listener).propertyChange(event);
+ }
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public boolean getBoolean(String name) {
+ return Preferences.getBoolean(name);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public boolean getDefaultBoolean(String name) {
+ return Preferences.getDefaultBoolean(name, false);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public double getDefaultDouble(String name) {
+ return Preferences.getDefaultDouble(name, 0.0);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public float getDefaultFloat(String name) {
+ return Preferences.getDefaultFloat(name, 0.0f);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public int getDefaultInt(String name) {
+ return Preferences.getDefaultInt(name, 0);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public long getDefaultLong(String name) {
+ return Preferences.getDefaultLong(name, 0L);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public String getDefaultString(String name) {
+ return Preferences.getDefaultString(name, ""); //$NON-NLS-1$
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public double getDouble(String name) {
+ return Preferences.getDouble(name);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public float getFloat(String name) {
+ return Preferences.getFloat(name);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public int getInt(String name) {
+ return Preferences.getInt(name);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public long getLong(String name) {
+ return Preferences.getLong(name);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public String getString(String name) {
+ return Preferences.getString(name);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public boolean isDefault(String name) {
+ return Preferences.isDefault(name);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public boolean needsSaving() {
+ return fNeedsSaving;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void putValue(String name, String value) {
+ try {
+ fSilent = true;
+ Preferences.setString(name, value);
+ } finally {
+ fSilent = false;
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void setDefault(String name, double value) {
+ Preferences.setDefaultDouble(name, value);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void setDefault(String name, float value) {
+ Preferences.setDefaultFloat(name, value);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void setDefault(String name, int value) {
+ Preferences.setDefaultInt(name, value);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void setDefault(String name, long value) {
+ Preferences.setDefaultLong(name, value);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void setDefault(String name, String defaultObject) {
+ Preferences.setDefaultString(name, defaultObject);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void setDefault(String name, boolean value) {
+ Preferences.setDefaultBoolean(name, value);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void setToDefault(String name) {
+ Preferences.setToDefault(name);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void setValue(String name, double value) {
+ Preferences.setDouble(name, value);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void setValue(String name, float value) {
+ Preferences.setFloat(name, value);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void setValue(String name, int value) {
+ Preferences.setInt(name, value);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void setValue(String name, long value) {
+ Preferences.setLong(name, value);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void setValue(String name, String value) {
+ Preferences.setString(name, value);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void setValue(String name, boolean value) {
+ Preferences.setBoolean(name, value);
+ }
+}
diff --git a/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/preferences/RemoteDevelopmentPreferencePage.java b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/preferences/RemoteDevelopmentPreferencePage.java
new file mode 100644
index 00000000000..2026745f586
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/preferences/RemoteDevelopmentPreferencePage.java
@@ -0,0 +1,65 @@
+/*******************************************************************************
+ * Copyright (c) 2012 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.remote.internal.ui.preferences;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.jface.preference.ComboFieldEditor;
+import org.eclipse.jface.preference.FieldEditorPreferencePage;
+import org.eclipse.remote.core.IRemoteConnectionType;
+import org.eclipse.remote.core.IRemotePreferenceConstants;
+import org.eclipse.remote.core.IRemoteServicesManager;
+import org.eclipse.remote.internal.ui.RemoteUIPlugin;
+import org.eclipse.remote.internal.ui.messages.Messages;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPreferencePage;
+
+/**
+ * @since 4.1
+ *
+ */
+public class RemoteDevelopmentPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {
+
+ public RemoteDevelopmentPreferencePage() {
+ super(GRID);
+ setPreferenceStore(new PreferencesAdapter());
+ }
+
+ @Override
+ public void init(IWorkbench workbench) {
+ // Do nothing
+ }
+
+ @Override
+ protected void createFieldEditors() {
+ List<String[]> namesAndValues = new ArrayList<>();
+ String[] nameAndValue = new String[2];
+ nameAndValue[0] = "None"; //$NON-NLS-1$
+ nameAndValue[1] = ""; //$NON-NLS-1$
+ namesAndValues.add(nameAndValue);
+
+ IRemoteServicesManager manager = RemoteUIPlugin.getService(IRemoteServicesManager.class);
+ for (IRemoteConnectionType service : manager.getRemoteConnectionTypes()) {
+ nameAndValue = new String[2];
+ nameAndValue[0] = service.getName();
+ nameAndValue[1] = service.getId();
+ namesAndValues.add(nameAndValue);
+ }
+ addField(new ComboFieldEditor(IRemotePreferenceConstants.PREF_CONNECTION_TYPE_ID,
+ Messages.RemoteDevelopmentPreferencePage_Default_connection_type,
+ namesAndValues.toArray(new String[namesAndValues.size()][2]), getFieldEditorParent()));
+ }
+}
diff --git a/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/services/local/LocalUIConnectionService.java b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/services/local/LocalUIConnectionService.java
new file mode 100644
index 00000000000..80266678f35
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/services/local/LocalUIConnectionService.java
@@ -0,0 +1,53 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.internal.ui.services.local;
+
+import org.eclipse.remote.core.IRemoteConnectionType;
+import org.eclipse.remote.core.IRemoteConnectionType.Service;
+import org.eclipse.remote.ui.AbstractRemoteUIConnectionService;
+import org.eclipse.remote.ui.IRemoteUIConnectionService;
+import org.eclipse.remote.ui.IRemoteUIConnectionWizard;
+import org.eclipse.swt.widgets.Shell;
+
+public class LocalUIConnectionService extends AbstractRemoteUIConnectionService {
+
+ private IRemoteConnectionType connectionType;
+
+ public LocalUIConnectionService(IRemoteConnectionType connectionType) {
+ this.connectionType = connectionType;
+ }
+
+ @Override
+ public IRemoteUIConnectionWizard getConnectionWizard(Shell shell) {
+ // we don't do this
+ return null;
+ }
+
+ public static class Factory implements IRemoteConnectionType.Service.Factory {
+ @SuppressWarnings("unchecked")
+ @Override
+ public <T extends Service> T getService(IRemoteConnectionType connectionType, Class<T> service) {
+ if (IRemoteUIConnectionService.class.equals(service)) {
+ return (T) new LocalUIConnectionService(connectionType);
+ }
+ return null;
+ }
+ }
+
+ @Override
+ public IRemoteConnectionType getConnectionType() {
+ return connectionType;
+ }
+
+}
diff --git a/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/services/local/LocalUIFileService.java b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/services/local/LocalUIFileService.java
new file mode 100644
index 00000000000..683c3f7acf3
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/services/local/LocalUIFileService.java
@@ -0,0 +1,124 @@
+/*******************************************************************************
+ * Copyright (c) 2007 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.internal.ui.services.local;
+
+import java.io.File;
+import java.util.Arrays;
+import java.util.List;
+
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteConnectionType;
+import org.eclipse.remote.core.IRemoteConnectionType.Service;
+import org.eclipse.remote.ui.IRemoteUIFileService;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.DirectoryDialog;
+import org.eclipse.swt.widgets.FileDialog;
+import org.eclipse.swt.widgets.Shell;
+
+public class LocalUIFileService implements IRemoteUIFileService {
+ private final IRemoteConnectionType connectionType;
+ private IRemoteConnection connection = null;
+
+ public LocalUIFileService(IRemoteConnectionType connectionType) {
+ this.connectionType = connectionType;
+ }
+
+ public static class Factory implements IRemoteConnectionType.Service.Factory {
+ @SuppressWarnings("unchecked")
+ @Override
+ public <T extends Service> T getService(IRemoteConnectionType connectionType, Class<T> service) {
+ if (IRemoteUIFileService.class.equals(service)) {
+ return (T) new LocalUIFileService(connectionType);
+ }
+ return null;
+ }
+ }
+
+ @Override
+ public IRemoteConnectionType getConnectionType() {
+ return connectionType;
+ }
+
+ @Override
+ public String browseDirectory(Shell shell, String message, String filterPath, int flags) {
+ DirectoryDialog dialog = new DirectoryDialog(shell);
+ dialog.setText(message);
+ if (filterPath != null) {
+ File path = new File(filterPath);
+ if (path.exists()) {
+ dialog.setFilterPath(path.isFile() ? path.getParent() : filterPath);
+ }
+ }
+
+ String path = dialog.open();
+ if (path == null) {
+ return null;
+ }
+
+ return path;
+ }
+
+ @Override
+ public String browseFile(Shell shell, String message, String filterPath, int flags) {
+ FileDialog dialog = new FileDialog(shell, SWT.SINGLE);
+ dialog.setText(message);
+ if (filterPath != null) {
+ File path = new File(filterPath);
+ if (path.exists()) {
+ dialog.setFilterPath(path.isFile() ? path.getParent() : filterPath);
+ }
+ }
+
+ String path = dialog.open();
+ if (path == null) {
+ return null;
+ }
+
+ return path;
+ }
+
+ @Override
+ public List<String> browseFiles(Shell shell, String message, String filterPath, int flags) {
+ FileDialog dialog = new FileDialog(shell, SWT.MULTI);
+ dialog.setText(message);
+ if (filterPath != null) {
+ File path = new File(filterPath);
+ if (path.exists()) {
+ dialog.setFilterPath(path.isFile() ? path.getParent() : filterPath);
+ }
+ }
+
+ String path = dialog.open();
+ if (path == null) {
+ return null;
+ }
+
+ return Arrays.asList(dialog.getFileNames());
+ }
+
+ @Override
+ public IRemoteConnection getConnection() {
+ return connection;
+ }
+
+ @Override
+ public void setConnection(IRemoteConnection connection) {
+ this.connection = connection;
+ }
+
+ @Override
+ public void showConnections(boolean enable) {
+ // Not implemented
+ }
+}
diff --git a/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/views/CloseConnectionHandler.java b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/views/CloseConnectionHandler.java
new file mode 100644
index 00000000000..2374eb95458
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/views/CloseConnectionHandler.java
@@ -0,0 +1,65 @@
+package org.eclipse.remote.internal.ui.views;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.MultiStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteConnectionControlService;
+import org.eclipse.remote.internal.ui.RemoteUIPlugin;
+import org.eclipse.remote.internal.ui.messages.Messages;
+import org.eclipse.ui.handlers.HandlerUtil;
+
+public class CloseConnectionHandler extends AbstractHandler {
+
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ ISelection selection = HandlerUtil.getActiveWorkbenchWindow(event).getActivePage().getSelection();
+ if (selection != null && selection instanceof IStructuredSelection) {
+ // Get the manageable connections from the selection
+ final List<IRemoteConnection> connections = new ArrayList<>();
+ @SuppressWarnings("unchecked")
+ Iterator<Object> i = ((IStructuredSelection) selection).iterator();
+ while (i.hasNext()) {
+ Object obj = i.next();
+ if (obj instanceof IRemoteConnection) {
+ IRemoteConnection connection = (IRemoteConnection) obj;
+ connections.add(connection);
+ }
+ }
+
+ new Job(Messages.CloseConnectionHandler_0) {
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ List<IStatus> status = new ArrayList<>();
+ for (IRemoteConnection connection : connections) {
+ IRemoteConnectionControlService controlService = connection
+ .getService(IRemoteConnectionControlService.class);
+ if (controlService != null) {
+ controlService.close();
+ }
+ }
+
+ if (status.isEmpty()) {
+ return Status.OK_STATUS;
+ } else {
+ return new MultiStatus(RemoteUIPlugin.PLUGIN_ID, 1, status.toArray(new IStatus[status.size()]),
+ Messages.CloseConnectionHandler_1, null);
+ }
+ }
+ }.schedule();
+ }
+ return Status.OK_STATUS;
+ }
+
+}
diff --git a/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/views/DeleteRemoteConnectionHandler.java b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/views/DeleteRemoteConnectionHandler.java
new file mode 100644
index 00000000000..5b49b27e59a
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/views/DeleteRemoteConnectionHandler.java
@@ -0,0 +1,77 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.internal.ui.views;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteConnectionType;
+import org.eclipse.remote.core.exception.RemoteConnectionException;
+import org.eclipse.remote.internal.ui.RemoteUIPlugin;
+import org.eclipse.remote.internal.ui.messages.Messages;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.handlers.HandlerUtil;
+
+public class DeleteRemoteConnectionHandler extends AbstractHandler {
+
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ ISelection selection = HandlerUtil.getActiveWorkbenchWindow(event).getActivePage().getSelection();
+ if (selection != null && selection instanceof IStructuredSelection) {
+ // Get the manageable connections from the selection
+ List<IRemoteConnection> connections = new ArrayList<>();
+ @SuppressWarnings("unchecked")
+ Iterator<Object> i = ((IStructuredSelection) selection).iterator();
+ while (i.hasNext()) {
+ Object obj = i.next();
+ if (obj instanceof IRemoteConnection) {
+ IRemoteConnection connection = (IRemoteConnection) obj;
+ IRemoteConnectionType connectionType = connection.getConnectionType();
+ if (connectionType.canRemove()) {
+ connections.add(connection);
+ }
+ }
+ }
+
+ // Confirm the delete
+ String message = Messages.DeleteRemoteConnectionHandler_ConfirmDeleteMessage;
+ for (IRemoteConnection connection : connections) {
+ message += " " + connection.getName(); //$NON-NLS-1$
+ }
+ message += "?"; //$NON-NLS-1$
+ if (MessageDialog.openConfirm(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(),
+ Messages.DeleteRemoteConnectionHandler_DeleteConnectionTitle, message)) {
+ for (IRemoteConnection connection : connections) {
+ IRemoteConnectionType connectionType = connection.getConnectionType();
+ try {
+ connectionType.removeConnection(connection);
+ } catch (RemoteConnectionException e) {
+ RemoteUIPlugin.log(e.getStatus());
+ }
+ }
+ }
+ }
+ return Status.OK_STATUS;
+ }
+
+}
diff --git a/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/views/NewRemoteConnectionHandler.java b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/views/NewRemoteConnectionHandler.java
new file mode 100644
index 00000000000..4d0b62b0ccf
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/views/NewRemoteConnectionHandler.java
@@ -0,0 +1,22 @@
+package org.eclipse.remote.internal.ui.views;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.PlatformUI;
+
+public class NewRemoteConnectionHandler extends AbstractHandler {
+
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ NewRemoteConnectionWizard wizard = new NewRemoteConnectionWizard();
+ Shell parent = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
+ WizardDialog dialog = new WizardDialog(parent, wizard);
+ dialog.open();
+ return Status.OK_STATUS;
+ }
+
+}
diff --git a/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/views/NewRemoteConnectionTypePage.java b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/views/NewRemoteConnectionTypePage.java
new file mode 100644
index 00000000000..3e266a8e507
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/views/NewRemoteConnectionTypePage.java
@@ -0,0 +1,120 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.internal.ui.views;
+
+import org.eclipse.jface.wizard.IWizardPage;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.remote.core.IRemoteConnectionType;
+import org.eclipse.remote.core.IRemoteServicesManager;
+import org.eclipse.remote.internal.ui.Messages;
+import org.eclipse.remote.internal.ui.RemoteUIPlugin;
+import org.eclipse.remote.ui.IRemoteUIConnectionService;
+import org.eclipse.remote.ui.IRemoteUIConnectionWizard;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableItem;
+
+/**
+ * @since 2.0 API tooling made me put this in even though it's an internal package...
+ */
+public class NewRemoteConnectionTypePage extends WizardPage {
+
+ private Table table;
+ private IRemoteUIConnectionWizard nextWizard;
+
+ public NewRemoteConnectionTypePage() {
+ super("NewLaunchTargetTypePage"); //$NON-NLS-1$
+ setTitle(Messages.NewRemoteConnectionTypePage_LaunchTargetType);
+ setDescription(Messages.NewRemoteConnectionTypePage_SelectTargetType);
+ }
+
+ public IRemoteUIConnectionWizard getNextWizard() {
+ return nextWizard;
+ }
+
+ @Override
+ public void createControl(Composite parent) {
+ Composite comp = new Composite(parent, SWT.NONE);
+ comp.setLayout(new GridLayout());
+
+ table = new Table(comp, SWT.SINGLE | SWT.BORDER);
+ GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);
+ table.setLayoutData(data);
+
+ setPageComplete(false);
+
+ IRemoteServicesManager remoteManager = RemoteUIPlugin.getService(IRemoteServicesManager.class);
+ for (IRemoteConnectionType connectionType : remoteManager.getAllConnectionTypes()) {
+ if (!connectionType.canAdd())
+ continue;
+
+ IRemoteUIConnectionService connService = connectionType.getService(IRemoteUIConnectionService.class);
+ if (connService == null)
+ continue;
+
+ IRemoteUIConnectionWizard wizard = connService.getConnectionWizard(parent.getShell());
+ if (wizard == null)
+ continue;
+
+ TableItem item = new TableItem(table, SWT.NONE);
+ item.setText(connectionType.getName());
+ item.setData(wizard);
+
+ Image icon = connService.getLabelProvider().getImage(connectionType);
+ if (icon != null) {
+ item.setImage(icon);
+ }
+
+ // TODO select the last selected entry
+ table.select(0);
+ setPageComplete(true);
+ }
+
+ table.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetDefaultSelected(SelectionEvent e) {
+ widgetSelected(e);
+ getContainer().showPage(getNextPage());
+ }
+ });
+
+ setControl(comp);
+ }
+
+ @Override
+ public boolean canFlipToNextPage() {
+ return isPageComplete();
+ }
+
+ @Override
+ public IWizardPage getNextPage() {
+ nextWizard = (IRemoteUIConnectionWizard) table.getSelection()[0].getData();
+ if (nextWizard != null) {
+ nextWizard.addPages();
+ IWizardPage[] pages = nextWizard.getPages();
+ if (pages.length > 0) {
+ return pages[0];
+ }
+ }
+
+ return super.getNextPage();
+ }
+
+}
diff --git a/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/views/NewRemoteConnectionWizard.java b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/views/NewRemoteConnectionWizard.java
new file mode 100644
index 00000000000..320e1cc8926
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/views/NewRemoteConnectionWizard.java
@@ -0,0 +1,65 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Doug Schaefer
+ *******************************************************************************/
+package org.eclipse.remote.internal.ui.views;
+
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.remote.core.IRemoteConnectionWorkingCopy;
+import org.eclipse.remote.core.exception.RemoteConnectionException;
+import org.eclipse.remote.internal.ui.Messages;
+import org.eclipse.remote.internal.ui.RemoteUIPlugin;
+import org.eclipse.remote.ui.IRemoteUIConnectionWizard;
+
+/**
+ * @since 2.0
+ */
+public class NewRemoteConnectionWizard extends Wizard {
+
+ private final NewRemoteConnectionTypePage typePage;
+
+ public NewRemoteConnectionWizard() {
+ setWindowTitle(Messages.NewRemoteConnectionWizard_0);
+ typePage = new NewRemoteConnectionTypePage();
+ setForcePreviousAndNextButtons(true);
+ }
+
+ @Override
+ public void addPages() {
+ addPage(typePage);
+ }
+
+ @Override
+ public boolean performFinish() {
+ IRemoteUIConnectionWizard nextWizard = typePage.getNextWizard();
+ if (nextWizard != null) {
+ IRemoteConnectionWorkingCopy wc = nextWizard.getConnection();
+ try {
+ wc.save();
+ } catch (RemoteConnectionException e) {
+ RemoteUIPlugin.log(e);
+ return false;
+ }
+ return true;
+ } else {
+ // what happened?
+ return false;
+ }
+ }
+
+ @Override
+ public boolean canFinish() {
+ // don't allow to finish since we need to activate actual connection wizard page
+ return false;
+ }
+
+}
diff --git a/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/views/OpenConnectionHandler.java b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/views/OpenConnectionHandler.java
new file mode 100644
index 00000000000..d9f368d2ea2
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/views/OpenConnectionHandler.java
@@ -0,0 +1,70 @@
+package org.eclipse.remote.internal.ui.views;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.MultiStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteConnectionControlService;
+import org.eclipse.remote.core.exception.RemoteConnectionException;
+import org.eclipse.remote.internal.ui.RemoteUIPlugin;
+import org.eclipse.remote.internal.ui.messages.Messages;
+import org.eclipse.ui.handlers.HandlerUtil;
+
+public class OpenConnectionHandler extends AbstractHandler {
+
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ ISelection selection = HandlerUtil.getActiveWorkbenchWindow(event).getActivePage().getSelection();
+ if (selection != null && selection instanceof IStructuredSelection) {
+ // Get the manageable connections from the selection
+ final List<IRemoteConnection> connections = new ArrayList<>();
+ @SuppressWarnings("unchecked")
+ Iterator<Object> i = ((IStructuredSelection) selection).iterator();
+ while (i.hasNext()) {
+ Object obj = i.next();
+ if (obj instanceof IRemoteConnection) {
+ IRemoteConnection connection = (IRemoteConnection) obj;
+ connections.add(connection);
+ }
+ }
+
+ new Job(Messages.OpenConnectionHandler_0) {
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ List<IStatus> status = new ArrayList<>();
+ for (IRemoteConnection connection : connections) {
+ IRemoteConnectionControlService controlService = connection
+ .getService(IRemoteConnectionControlService.class);
+ if (controlService != null) {
+ try {
+ controlService.open(monitor);
+ } catch (RemoteConnectionException e) {
+ status.add(e.getStatus());
+ }
+ }
+ }
+
+ if (status.isEmpty()) {
+ return Status.OK_STATUS;
+ } else {
+ return new MultiStatus(RemoteUIPlugin.PLUGIN_ID, 1, status.toArray(new IStatus[status.size()]),
+ Messages.OpenConnectionHandler_1, null);
+ }
+ }
+ }.schedule();
+ }
+ return Status.OK_STATUS;
+ }
+
+}
diff --git a/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/views/RemoteConnectionPropertyPage.java b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/views/RemoteConnectionPropertyPage.java
new file mode 100644
index 00000000000..3d886c1fd70
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/views/RemoteConnectionPropertyPage.java
@@ -0,0 +1,48 @@
+package org.eclipse.remote.internal.ui.views;
+
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.internal.ui.Messages;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.dialogs.PropertyPage;
+
+public class RemoteConnectionPropertyPage extends PropertyPage {
+
+ @Override
+ protected Control createContents(Composite parent) {
+ Composite comp = new Composite(parent, SWT.NONE);
+ comp.setLayout(new GridLayout(2, false));
+
+ IRemoteConnection connection = null;
+ Object element = getElement();
+ if (element instanceof IRemoteConnection) {
+ connection = (IRemoteConnection) element;
+ } else if (element instanceof IAdaptable) {
+ connection = ((IAdaptable) element).getAdapter(IRemoteConnection.class);
+ }
+
+ if (connection != null) {
+ Label nameLabel = new Label(comp, SWT.NONE);
+ nameLabel.setText(Messages.RemoteConnectionPropertyPage_ConnectionName);
+
+ Text nameText = new Text(comp, SWT.BORDER);
+ nameText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ nameText.setText(connection.getName());
+ }
+
+ return comp;
+ }
+
+ @Override
+ public boolean performOk() {
+ // TODO, change the name if it needs changing
+ return true;
+ }
+
+}
diff --git a/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/views/RemoteConnectionsActionProvider.java b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/views/RemoteConnectionsActionProvider.java
new file mode 100644
index 00000000000..1e09bb16f8c
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/views/RemoteConnectionsActionProvider.java
@@ -0,0 +1,17 @@
+package org.eclipse.remote.internal.ui.views;
+
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.window.SameShellProvider;
+import org.eclipse.ui.dialogs.PropertyDialogAction;
+import org.eclipse.ui.navigator.CommonActionProvider;
+
+public class RemoteConnectionsActionProvider extends CommonActionProvider {
+
+ @Override
+ public void fillContextMenu(IMenuManager menu) {
+ // Property menu
+ menu.add(new PropertyDialogAction(new SameShellProvider(getActionSite().getViewSite().getShell()),
+ getActionSite().getStructuredViewer()));
+ }
+
+}
diff --git a/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/views/RemoteConnectionsContentProvider.java b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/views/RemoteConnectionsContentProvider.java
new file mode 100644
index 00000000000..eef7007c91a
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/views/RemoteConnectionsContentProvider.java
@@ -0,0 +1,90 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.internal.ui.views;
+
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteConnectionChangeListener;
+import org.eclipse.remote.core.IRemoteServicesManager;
+import org.eclipse.remote.core.RemoteConnectionChangeEvent;
+
+public class RemoteConnectionsContentProvider implements ITreeContentProvider, IRemoteConnectionChangeListener {
+
+ private IRemoteServicesManager remoteServicesManager;
+ private Viewer viewer;
+
+ @Override
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ this.viewer = viewer;
+
+ if (newInput instanceof IRemoteServicesManager) {
+ if (remoteServicesManager != null) {
+ // remove us as a listener on the old manager
+ remoteServicesManager.removeRemoteConnectionChangeListener(this);
+ }
+
+ remoteServicesManager = (IRemoteServicesManager) newInput;
+ remoteServicesManager.addRemoteConnectionChangeListener(this);
+ }
+ }
+
+ @Override
+ public void connectionChanged(RemoteConnectionChangeEvent event) {
+ // Refresh the viewer on the UI thread
+ viewer.getControl().getDisplay().asyncExec(new Runnable() {
+ @Override
+ public void run() {
+ viewer.refresh();
+ }
+ });
+ }
+
+ @Override
+ public void dispose() {
+ if (remoteServicesManager != null) {
+ remoteServicesManager.removeRemoteConnectionChangeListener(this);
+ }
+ }
+
+ @Override
+ public Object[] getElements(Object inputElement) {
+ return remoteServicesManager.getAllRemoteConnections().toArray();
+ }
+
+ @Override
+ public Object[] getChildren(Object parentElement) {
+ // Connections have no children by default
+ return new Object[0];
+ }
+
+ @Override
+ public Object getParent(Object element) {
+ if (element instanceof IRemoteConnection) {
+ return remoteServicesManager;
+ } else {
+ return null;
+ }
+ }
+
+ @Override
+ public boolean hasChildren(Object element) {
+ if (element instanceof IRemoteServicesManager) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+}
diff --git a/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/views/RemoteConnectionsView.java b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/views/RemoteConnectionsView.java
new file mode 100644
index 00000000000..4cc37197833
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/internal/ui/views/RemoteConnectionsView.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.internal.ui.views;
+
+import org.eclipse.remote.core.IRemoteServicesManager;
+import org.eclipse.remote.internal.ui.RemoteUIPlugin;
+import org.eclipse.ui.navigator.CommonNavigator;
+
+public class RemoteConnectionsView extends CommonNavigator {
+
+ @Override
+ protected Object getInitialInput() {
+ // the remote services manager is the root object
+ return RemoteUIPlugin.getService(IRemoteServicesManager.class);
+ }
+
+}
diff --git a/remote/org.eclipse.remote.ui/src/org/eclipse/remote/ui/AbstractRemoteUIConnectionService.java b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/ui/AbstractRemoteUIConnectionService.java
new file mode 100644
index 00000000000..060716ad1ac
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/ui/AbstractRemoteUIConnectionService.java
@@ -0,0 +1,103 @@
+/*******************************************************************************
+ * Copyright (c) 2013 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.ui;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.dialogs.ErrorDialog;
+import org.eclipse.jface.dialogs.ProgressMonitorDialog;
+import org.eclipse.jface.operation.IRunnableContext;
+import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteConnectionType;
+import org.eclipse.remote.core.exception.RemoteConnectionException;
+import org.eclipse.remote.internal.ui.RemoteUIImages;
+import org.eclipse.remote.internal.ui.RemoteUIPlugin;
+import org.eclipse.remote.internal.ui.messages.Messages;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Shell;
+
+/**
+ * Abstract base class for providing UI connection manager services.
+ * @since 2.0
+ */
+public abstract class AbstractRemoteUIConnectionService implements IRemoteUIConnectionService {
+
+ @Override
+ public void openConnectionWithProgress(final Shell shell, IRunnableContext context,
+ final IRemoteConnection connection) {
+ if (!connection.isOpen()) {
+ IRunnableWithProgress op = new IRunnableWithProgress() {
+ @Override
+ public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
+ try {
+ connection.open(monitor);
+ } catch (RemoteConnectionException e) {
+ throw new InvocationTargetException(e);
+ }
+ if (monitor.isCanceled()) {
+ throw new InterruptedException();
+ }
+ }
+ };
+ try {
+ if (context != null) {
+ context.run(true, true, op);
+ } else {
+ new ProgressMonitorDialog(shell).run(true, true, op);
+ }
+ } catch (InvocationTargetException e) {
+ ErrorDialog.openError(shell, Messages.AbstractRemoteUIConnectionManager_Connection_Error,
+ Messages.AbstractRemoteUIConnectionManager_Could_not_open_connection,
+ new Status(IStatus.ERROR, RemoteUIPlugin.PLUGIN_ID, e.getCause().getMessage()));
+ } catch (InterruptedException e) {
+ ErrorDialog.openError(shell, Messages.AbstractRemoteUIConnectionManager_Connection_Error,
+ Messages.AbstractRemoteUIConnectionManager_Could_not_open_connection,
+ new Status(IStatus.ERROR, RemoteUIPlugin.PLUGIN_ID, e.getMessage()));
+ }
+ }
+ }
+
+ protected static class DefaultLabelProvider extends LabelProvider {
+ @Override
+ public String getText(Object element) {
+ if (element instanceof IRemoteConnection) {
+ return ((IRemoteConnection) element).getName();
+ } else if (element instanceof IRemoteConnectionType) {
+ return ((IRemoteConnectionType) element).getName();
+ } else {
+ return super.getText(element);
+ }
+ }
+
+ @Override
+ public Image getImage(Object element) {
+ if (element instanceof IRemoteConnection || element instanceof IRemoteConnectionType) {
+ return RemoteUIImages.get(RemoteUIImages.IMG_DEFAULT_TYPE);
+ }
+ return super.getImage(element);
+ }
+ }
+
+ @Override
+ public ILabelProvider getLabelProvider() {
+ return new DefaultLabelProvider();
+ }
+
+}
diff --git a/remote/org.eclipse.remote.ui/src/org/eclipse/remote/ui/IRemoteUIConnectionService.java b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/ui/IRemoteUIConnectionService.java
new file mode 100644
index 00000000000..ed71e543751
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/ui/IRemoteUIConnectionService.java
@@ -0,0 +1,66 @@
+/*******************************************************************************
+ * Copyright (c) 2007 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.ui;
+
+import org.eclipse.jface.operation.IRunnableContext;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteConnectionType;
+import org.eclipse.swt.widgets.Shell;
+
+/**
+ * Interface for providing connection management operations in the UI. Clients can call these methods to open generic dialogs for
+ * operations on connections.
+ * @since 2.0
+ */
+public interface IRemoteUIConnectionService extends IRemoteConnectionType.Service {
+
+ /**
+ * ID for the command to start the new connection wizard.
+ */
+ public static final String NEW_CONNECTION_COMMAND = "org.eclipse.remote.ui.command.newConnection"; //$NON-NLS-1$
+
+ /**
+ * Create a wizard for adding or editing connections. The implementation can choose to do this in any way, but typically will
+ * use a dialog or wizard.
+ *
+ * @param shell
+ * shell used to display dialogs
+ * @return connection wizard
+ */
+ public IRemoteUIConnectionWizard getConnectionWizard(Shell shell);
+
+ /**
+ * Attempt to open a connection using a progress monitor. Can be called on either open or closed connections, and will
+ * initialize the remote services if necessary. Users should check connection.isOpen() on return to determine if the connection
+ * was actually opened.
+ *
+ * @param shell
+ * shell used to display dialogs
+ * @param context
+ * runnable context for displaying progress indicator. Can be null.
+ * @param connection
+ * connection to open
+ */
+ public void openConnectionWithProgress(Shell shell, IRunnableContext context, IRemoteConnection connection);
+
+ /**
+ * Return the label provider that provides the text and base image for the connection type
+ * and connections of that type.
+ *
+ * @return label provider
+ */
+ public ILabelProvider getLabelProvider();
+
+}
diff --git a/remote/org.eclipse.remote.ui/src/org/eclipse/remote/ui/IRemoteUIConnectionWizard.java b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/ui/IRemoteUIConnectionWizard.java
new file mode 100644
index 00000000000..895802a7456
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/ui/IRemoteUIConnectionWizard.java
@@ -0,0 +1,68 @@
+/*******************************************************************************
+ * Copyright (c) 2013 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.ui;
+
+import java.util.Set;
+
+import org.eclipse.jface.wizard.IWizard;
+import org.eclipse.remote.core.IRemoteConnectionWorkingCopy;
+
+/**
+ * Interface for creating and editing connections in the UI.
+ */
+public interface IRemoteUIConnectionWizard extends IWizard {
+ /**
+ * Open configuration wizard allowing the user to enter information about a connection. If the user confirms the information is
+ * correct (e.g. selects OK in a dialog) then a working copy of the connection is returned. If the user discards the
+ * information, then null is returned.
+ *
+ * @return connection working copy or null if the wizard is canceled
+ */
+ IRemoteConnectionWorkingCopy open();
+
+ /**
+ * Get the connection being edited.
+ *
+ * @return connection being edited
+ * @since 2.0
+ */
+ IRemoteConnectionWorkingCopy getConnection();
+
+ /**
+ * Set a connection containing the information to be edited by the wizard. Setting this value overrides the
+ * {@link #setConnectionName(String)} method.
+ *
+ * @param connection
+ * connection used to initialize the wizard
+ */
+ void setConnection(IRemoteConnectionWorkingCopy connection);
+
+ /**
+ * Set the initial name of the connection.
+ *
+ * @param name
+ * initial connection name
+ */
+ void setConnectionName(String name);
+
+ /**
+ * Supply a set of connection names that are invalid. The dialog should display an error if the user trys to select a name from
+ * the set.
+ *
+ * @param names
+ * set of invalid connections names
+ */
+ void setInvalidConnectionNames(Set<String> names);
+
+}
diff --git a/remote/org.eclipse.remote.ui/src/org/eclipse/remote/ui/IRemoteUIConstants.java b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/ui/IRemoteUIConstants.java
new file mode 100644
index 00000000000..d98140898ab
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/ui/IRemoteUIConstants.java
@@ -0,0 +1,34 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.ui;
+
+/**
+ * Constants use by UI operations.
+ */
+public interface IRemoteUIConstants {
+ /**
+ * A constant indicating that no bits are set.
+ */
+ public static int NONE = 0;
+
+ /**
+ * A constant used to indicate a dialog used for opening files.
+ */
+ public static int OPEN = 1 << 1;
+
+ /**
+ * A constant used to indicate a dialog should be used for saving files.
+ */
+ public static int SAVE = 1 << 2;
+}
diff --git a/remote/org.eclipse.remote.ui/src/org/eclipse/remote/ui/IRemoteUIFileService.java b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/ui/IRemoteUIFileService.java
new file mode 100644
index 00000000000..cf4c5b6cb73
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/ui/IRemoteUIFileService.java
@@ -0,0 +1,113 @@
+/*******************************************************************************
+ * Copyright (c) 2007 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.ui;
+
+import java.util.List;
+
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteConnectionType;
+import org.eclipse.swt.widgets.Shell;
+
+/**
+ * Interface for providing file management operations in the UI. Clients can call these methods to open generic dialogs for
+ * operations on remote resources.
+ *
+ * @since 2.0
+ */
+public interface IRemoteUIFileService extends IRemoteConnectionType.Service {
+ /**
+ * Browse for a remote directory. The return value is the path of the
+ * directory <i>on the remote system</i>.
+ *
+ * Equivalent to {@link org.eclipse.swt.widgets.DirectoryDialog}.
+ *
+ * @param shell
+ * workbench shell
+ * @param message
+ * message to display in dialog
+ * @param initialPath
+ * initial path to use when displaying files
+ * @param flags
+ * option settings for dialog (not currently used)
+ * valid values are NONE (@see IRemoteUIConstants)
+ * @return the path to the directory relative to the remote system or null
+ * if the browser was cancelled
+ */
+ public String browseDirectory(Shell shell, String message, String initialPath, int flags);
+
+ /**
+ * Browse for a remote file. The return value is the path of the file <i>on
+ * the remote system</i>.
+ *
+ * Equivalent to {@link org.eclipse.swt.widgets.FileDialog}.
+ *
+ * @param shell
+ * workbench shell
+ * @param message
+ * message to display in dialog
+ * @param initialPath
+ * initial path to use when displaying files
+ * @param flags
+ * options settings for dialog
+ * valid values are NONE, SAVE, or OPEN (@see IRemoteUIConstants)
+ * @return the path to the file relative to the remote system or null if the
+ * browser was cancelled
+ */
+
+ public String browseFile(Shell shell, String message, String initialPath, int flags);
+
+ /**
+ * Browse for a set of remote files. The return value is a list of paths
+ * of the files <i>on the remote system</i>.
+ *
+ * Equivalent to {@link org.eclipse.swt.widgets.FileDialog}.
+ *
+ * @param shell
+ * workbench shell
+ * @param message
+ * message to display in dialog
+ * @param initialPath
+ * initial path to use when displaying files
+ * @param flags
+ * options settings for dialog (@see IRemoteUIConstants)
+ * valid values are NONE, SAVE, or OPEN (@see IRemoteUIConstants)
+ * @return list of paths to the files relative to the remote system or null if the
+ * browser was cancelled
+ */
+ public List<String> browseFiles(Shell shell, String message, String initialPath, int flags);
+
+ /**
+ * Get the last connection that was selected in the browser.
+ *
+ * @return selected connection
+ */
+ public IRemoteConnection getConnection();
+
+ /**
+ * Set the connection to use for file browsing. The connection must support the IRemoteFileService service or it will be
+ * ignored.
+ *
+ * @param connection
+ * connection to use for file browsing
+ */
+ public void setConnection(IRemoteConnection connection);
+
+ /**
+ * Show a list of available connections if possible.
+ *
+ * @param enable
+ * enable connection list
+ */
+ public void showConnections(boolean enable);
+}
diff --git a/remote/org.eclipse.remote.ui/src/org/eclipse/remote/ui/RemoteConnectionsLabelProvider.java b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/ui/RemoteConnectionsLabelProvider.java
new file mode 100644
index 00000000000..2da75719b8f
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/ui/RemoteConnectionsLabelProvider.java
@@ -0,0 +1,92 @@
+/*******************************************************************************
+ * Copyright (c) 2015 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.ui;
+
+import org.eclipse.jface.resource.CompositeImageDescriptor;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteConnectionType;
+import org.eclipse.remote.internal.ui.RemoteUIPlugin;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.PlatformUI;
+
+/**
+ * A label provider to show the test and base image for remote connections.
+ * It calls out to the connection type services to get the text and images for
+ * the types of the connections.
+ *
+ * @since 2.0
+ */
+public class RemoteConnectionsLabelProvider extends LabelProvider {
+
+ @Override
+ public String getText(Object element) {
+ if (element instanceof IRemoteConnection) {
+ IRemoteConnectionType type = ((IRemoteConnection) element).getConnectionType();
+ IRemoteUIConnectionService uiService = type.getService(IRemoteUIConnectionService.class);
+ if (uiService != null) {
+ return uiService.getLabelProvider().getText(element);
+ } else {
+ return ((IRemoteConnection) element).getName();
+ }
+ } else {
+ return super.getText(element);
+ }
+ }
+
+ @Override
+ public Image getImage(Object element) {
+ if (element instanceof IRemoteConnection) {
+ IRemoteConnection connection = (IRemoteConnection) element;
+ IRemoteConnectionType type = connection.getConnectionType();
+ IRemoteUIConnectionService uiService = type.getService(IRemoteUIConnectionService.class);
+ if (uiService != null) {
+ final Image baseImage = uiService.getLabelProvider().getImage(element);
+ if (connection.isOpen()) {
+ return baseImage;
+ } else {
+ String closedId = "closed." + type.getId(); //$NON-NLS-1$
+ Image closedImage = RemoteUIPlugin.getDefault().getImageRegistry().get(closedId);
+ if (closedImage == null) {
+ final Image errorImage = PlatformUI.getWorkbench().getSharedImages()
+ .getImage(ISharedImages.IMG_DEC_FIELD_ERROR);
+ ImageDescriptor desc = new CompositeImageDescriptor() {
+ @Override
+ protected Point getSize() {
+ Rectangle bounds = baseImage.getBounds();
+ return new Point(bounds.width, bounds.height);
+ }
+
+ @Override
+ protected void drawCompositeImage(int width, int height) {
+ drawImage(baseImage.getImageData(), 0, 0);
+ int y = baseImage.getBounds().height - errorImage.getBounds().height;
+ drawImage(errorImage.getImageData(), 0, y);
+ }
+ };
+ closedImage = desc.createImage();
+ RemoteUIPlugin.getDefault().getImageRegistry().put(closedId, closedImage);
+ }
+ return closedImage;
+ }
+ }
+ }
+ return super.getImage(element);
+ }
+
+}
diff --git a/remote/org.eclipse.remote.ui/src/org/eclipse/remote/ui/RemoteUIFileService.java b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/ui/RemoteUIFileService.java
new file mode 100644
index 00000000000..85ef9158bcc
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/ui/RemoteUIFileService.java
@@ -0,0 +1,127 @@
+/*******************************************************************************
+ * Copyright (c) 2007 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.ui;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.filesystem.IFileStore;
+import org.eclipse.jface.window.Window;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteConnectionType;
+import org.eclipse.remote.core.IRemoteConnectionType.Service;
+import org.eclipse.remote.ui.dialogs.RemoteResourceBrowser;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Shell;
+
+/**
+ * @since 2.1
+ */
+public class RemoteUIFileService implements IRemoteUIFileService {
+ private final IRemoteConnectionType connectionType;
+ private IRemoteConnection connection = null;
+ private boolean showConnections = false;
+
+ public RemoteUIFileService(IRemoteConnectionType connectionType) {
+ this.connectionType = connectionType;
+ }
+
+ public static class Factory implements IRemoteConnectionType.Service.Factory {
+ @SuppressWarnings("unchecked")
+ @Override
+ public <T extends Service> T getService(IRemoteConnectionType connectionType, Class<T> service) {
+ if (IRemoteUIFileService.class.equals(service)) {
+ return (T) new RemoteUIFileService(connectionType);
+ }
+ return null;
+ }
+ }
+
+ @Override
+ public IRemoteConnectionType getConnectionType() {
+ return connectionType;
+ }
+
+ @Override
+ public String browseDirectory(Shell shell, String message, String filterPath, int flags) {
+ RemoteResourceBrowser browser = new RemoteResourceBrowser(shell, SWT.SINGLE);
+ browser.setType(RemoteResourceBrowser.DIRECTORY_BROWSER);
+ browser.setInitialPath(filterPath);
+ browser.setTitle(message);
+ browser.showConnections(showConnections);
+ browser.setConnection(connection);
+ if (browser.open() == Window.CANCEL) {
+ return null;
+ }
+ connection = browser.getConnection();
+ IFileStore resource = browser.getResource();
+ if (resource == null) {
+ return null;
+ }
+ return resource.toURI().getPath();
+ }
+
+ @Override
+ public String browseFile(Shell shell, String message, String filterPath, int flags) {
+ RemoteResourceBrowser browser = new RemoteResourceBrowser(shell, SWT.SINGLE);
+ browser.setType(RemoteResourceBrowser.FILE_BROWSER);
+ browser.setInitialPath(filterPath);
+ browser.setTitle(message);
+ browser.showConnections(showConnections);
+ browser.setConnection(connection);
+ if (browser.open() == Window.CANCEL) {
+ return null;
+ }
+ connection = browser.getConnection();
+ IFileStore resource = browser.getResource();
+ if (resource == null) {
+ return null;
+ }
+ return resource.toURI().getPath();
+ }
+
+ @Override
+ public List<String> browseFiles(Shell shell, String message, String filterPath, int flags) {
+ RemoteResourceBrowser browser = new RemoteResourceBrowser(shell, SWT.MULTI);
+ browser.setType(RemoteResourceBrowser.FILE_BROWSER);
+ browser.setInitialPath(filterPath);
+ browser.setTitle(message);
+ browser.showConnections(showConnections);
+ browser.setConnection(connection);
+ if (browser.open() == Window.CANCEL) {
+ return null;
+ }
+ connection = browser.getConnection();
+ List<String> paths = new ArrayList<>();
+ for (IFileStore store : browser.getResources()) {
+ paths.add(store.toURI().getPath());
+ }
+ return paths;
+ }
+
+ @Override
+ public IRemoteConnection getConnection() {
+ return connection;
+ }
+
+ @Override
+ public void setConnection(IRemoteConnection connection) {
+ this.connection = connection;
+ }
+
+ @Override
+ public void showConnections(boolean enable) {
+ showConnections = enable;
+ }
+}
diff --git a/remote/org.eclipse.remote.ui/src/org/eclipse/remote/ui/dialogs/RemoteResourceBrowser.java b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/ui/dialogs/RemoteResourceBrowser.java
new file mode 100644
index 00000000000..cb4c1ddaf51
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/ui/dialogs/RemoteResourceBrowser.java
@@ -0,0 +1,331 @@
+/*******************************************************************************
+ * Copyright (c) 2008,2013 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.ui.dialogs;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.filesystem.IFileStore;
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.operation.IRunnableContext;
+import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.jface.operation.ModalContext;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.wizard.ProgressMonitorPart;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteFileService;
+import org.eclipse.remote.internal.ui.messages.Messages;
+import org.eclipse.remote.ui.widgets.RemoteResourceBrowserWidget;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.FocusEvent;
+import org.eclipse.swt.events.FocusListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Shell;
+
+/**
+ * Generic file/directory browser for remote resources.
+ *
+ * A directory browser (DIRECTORY_BROWSER) only allows selection of directories.
+ * A file browser (FILE_BROWSER) allows selection of files and directories, but the ok button is only enabled when a file is
+ * selected.
+ * A resource browser (FILE_BROWSER|DIRECTORY_BROWSER) allows selection of files and directories. This is the default.
+ *
+ * To select multiple resources, set the style to SWT.MULTI.
+ *
+ * @author greg
+ *
+ */
+public class RemoteResourceBrowser extends Dialog implements IRunnableContext {
+ public static final String EMPTY_STRING = ""; //$NON-NLS-1$
+ public static final int FILE_BROWSER = 0x01;
+ public static final int DIRECTORY_BROWSER = 0x02;
+
+ private final static int widthHint = 400;
+
+ private Button fOkButton;
+ private RemoteResourceBrowserWidget fResourceBrowserWidget;
+ private ProgressMonitorPart fProgressMonitor;
+
+ private int fBrowserType;
+ private String fDialogTitle;
+
+ private boolean fShowHiddenCheckbox = true;
+ private boolean fShowNewFolderButton = true;
+ private boolean fShowConnections = false;
+ private boolean fShowLocalSelection = false;
+ private String fInitialPath;
+ private IRemoteConnection fConnection;
+ private int fBrowserStyle = SWT.SINGLE;
+
+ public RemoteResourceBrowser(Shell parent, int style) {
+ super(parent);
+ setShellStyle(SWT.RESIZE | getShellStyle());
+ if (style != SWT.NONE) {
+ fBrowserStyle = style;
+ }
+ setTitle(Messages.RemoteResourceBrowser_resourceTitle);
+ setType(FILE_BROWSER | DIRECTORY_BROWSER);
+ }
+
+ @Override
+ protected Button createButton(Composite parent, int id, String label, boolean defaultButton) {
+ Button button = super.createButton(parent, id, label, defaultButton);
+ if (id == IDialogConstants.OK_ID) {
+ fOkButton = button;
+ }
+ return button;
+ }
+
+ @Override
+ protected Control createContents(Composite parent) {
+ Control contents = super.createContents(parent);
+ if (fDialogTitle == null) {
+ if (fBrowserType == DIRECTORY_BROWSER) {
+ setTitle(Messages.RemoteResourceBrowser_directoryTitle);
+ } else if (fBrowserType == FILE_BROWSER) {
+ setTitle(Messages.RemoteResourceBrowser_fileTitle);
+ }
+ } else {
+ setTitle(fDialogTitle);
+ }
+ if (fInitialPath != null) {
+ fResourceBrowserWidget.setInitialPath(fInitialPath);
+ }
+ if (fConnection != null) {
+ fResourceBrowserWidget.setConnection(fConnection);
+ }
+ updateDialog();
+ return contents;
+ }
+
+ @Override
+ protected Control createDialogArea(Composite parent) {
+ Composite main = (Composite) super.createDialogArea(parent);
+ GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
+ gd.widthHint = widthHint;
+ main.setLayoutData(gd);
+ main.setLayout(new GridLayout(1, true));
+
+ int options = 0;
+ if (fConnection == null || fShowConnections) {
+ options |= RemoteResourceBrowserWidget.SHOW_CONNECTIONS;
+ }
+ if (fBrowserType == DIRECTORY_BROWSER) {
+ options |= RemoteResourceBrowserWidget.DIRECTORY_BROWSER;
+ } else if (fBrowserType == FILE_BROWSER) {
+ options |= RemoteResourceBrowserWidget.FILE_BROWSER;
+ } else {
+ options |= RemoteResourceBrowserWidget.FILE_BROWSER | RemoteResourceBrowserWidget.DIRECTORY_BROWSER;
+ }
+ if (fShowHiddenCheckbox) {
+ options |= RemoteResourceBrowserWidget.SHOW_HIDDEN_CHECKBOX;
+ }
+ if (fShowNewFolderButton) {
+ options |= RemoteResourceBrowserWidget.SHOW_NEW_FOLDER_BUTTON;
+ }
+ if (fShowLocalSelection) {
+ options |= RemoteResourceBrowserWidget.SHOW_LOCAL_SELECTION;
+ }
+ fResourceBrowserWidget = new RemoteResourceBrowserWidget(main, fBrowserStyle, options);
+ fResourceBrowserWidget.addSelectionChangedListener(new ISelectionChangedListener() {
+ @Override
+ public void selectionChanged(SelectionChangedEvent event) {
+ updateDialog();
+ }
+ });
+ fResourceBrowserWidget.addFocusListener(new FocusListener() {
+ @Override
+ public void focusGained(FocusEvent e) {
+ getShell().setDefaultButton(null); // allow text widget to receive SWT.DefaultSelection event
+ }
+
+ @Override
+ public void focusLost(FocusEvent e) {
+ getShell().setDefaultButton(fOkButton);
+ }
+ });
+ fResourceBrowserWidget.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ if (fConnection != null) {
+ fResourceBrowserWidget.setConnection(fConnection);
+ }
+
+ Composite monitorComposite = new Composite(main, SWT.NULL);
+ GridLayout layout = new GridLayout();
+ layout.marginHeight = 0;
+ layout.marginWidth = 0;
+ layout.numColumns = 2;
+ monitorComposite.setLayout(layout);
+ monitorComposite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ fProgressMonitor = new ProgressMonitorPart(monitorComposite, new GridLayout(), true);
+ GridData gridData = new GridData(SWT.FILL, SWT.TOP, true, true);
+ fProgressMonitor.setLayoutData(gridData);
+ monitorComposite.setVisible(false);
+
+ fResourceBrowserWidget.setRunnableContext(this);
+
+ return main;
+ }
+
+ /**
+ * Get the connection that was selected
+ *
+ * @return selected connection
+ */
+ public IRemoteConnection getConnection() {
+ if (fResourceBrowserWidget != null) {
+ return fResourceBrowserWidget.getConnection();
+ }
+ return null;
+ }
+
+ /**
+ * Get the resources that was selected.
+ *
+ * @return selected resource or null if no resource is selected
+ */
+ public IFileStore getResource() {
+ if (fResourceBrowserWidget != null) {
+ return fResourceBrowserWidget.getResource();
+ }
+ return null;
+ }
+
+ /**
+ * Get the resources that were selected.
+ *
+ * @return selected resources
+ */
+ public List<IFileStore> getResources() {
+ if (fResourceBrowserWidget != null) {
+ return fResourceBrowserWidget.getResources();
+ }
+ return new ArrayList<>();
+ }
+
+ @Override
+ public void run(boolean fork, boolean cancelable, IRunnableWithProgress runnable)
+ throws InvocationTargetException, InterruptedException {
+ fProgressMonitor.attachToCancelComponent(null);
+ fProgressMonitor.getParent().setVisible(true);
+ try {
+ ModalContext.run(runnable, fork, fProgressMonitor, getShell().getDisplay());
+ } finally {
+ fProgressMonitor.getParent().setVisible(false);
+ fProgressMonitor.removeFromCancelComponent(null);
+ }
+ }
+
+ /**
+ * Set the connection for the browser. The connection must support the IRemoteFileService service or this method will have no
+ * effect.
+ *
+ * @param connection
+ * connection that supports the IRemoteFileService service
+ */
+ public void setConnection(IRemoteConnection connection) {
+ if (connection != null && connection.hasService(IRemoteFileService.class)) {
+ fConnection = connection;
+ }
+ }
+
+ /**
+ * Set the initial path to start browsing. This will be set in the browser
+ * text field, and in a future version should expand the browser to this
+ * location if it exists.
+ *
+ * @param path initial path
+ */
+ public void setInitialPath(String path) {
+ fInitialPath = path;
+ }
+
+ /**
+ * Set the fDialogTitle of the dialog.
+ *
+ * @param title title to display
+ */
+ public void setTitle(String title) {
+ fDialogTitle = title;
+ if (fDialogTitle == null) {
+ fDialogTitle = ""; //$NON-NLS-1$
+ }
+ Shell shell = getShell();
+ if ((shell != null) && !shell.isDisposed()) {
+ shell.setText(fDialogTitle);
+ }
+ }
+
+ /**
+ * Set the type of browser. Can be either a file browser (allows selection
+ * of files), a directory browser (allows selection of directories), or
+ * a resource browser (allows selection of files and directories).
+ */
+ public void setType(int type) {
+ fBrowserType = type;
+ }
+
+ /**
+ * Show available connections on browser if possible (default disabled).
+ *
+ * @param enable enable connection display if true
+ */
+ public void showConnections(boolean enable) {
+ fShowConnections = enable;
+ }
+
+ /**
+ * Enable a checkbox to show hidden files (default enabled)
+ *
+ * @param showHidden show hidden files if true
+ */
+ public void showHiddenCheckbox(boolean showHidden) {
+ fShowHiddenCheckbox = showHidden;
+ }
+
+ /**
+ * Enable selection of local files
+ *
+ * @param showLocalSelection show local files if true
+ */
+ public void showLocalSelection(boolean showLocalSelection) {
+ fShowLocalSelection = showLocalSelection;
+ }
+
+ /**
+ * Enable a button to create new folders (default enabled)
+ *
+ * @param showNewFolderButton show new folder button if true
+ */
+ public void showNewFolderButton(boolean showNewFolderButton) {
+ fShowNewFolderButton = showNewFolderButton;
+ }
+
+ private void updateDialog() {
+ if (fOkButton != null) {
+ IFileStore resource = getResource();
+ boolean enabled = getConnection() != null && resource != null;
+ if (enabled && fBrowserType == FILE_BROWSER) {
+ enabled &= !resource.fetchInfo().isDirectory();
+ }
+ fOkButton.setEnabled(enabled);
+ }
+ }
+}
diff --git a/remote/org.eclipse.remote.ui/src/org/eclipse/remote/ui/widgets/RemoteConnectionWidget.java b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/ui/widgets/RemoteConnectionWidget.java
new file mode 100644
index 00000000000..e7bb243a56c
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/ui/widgets/RemoteConnectionWidget.java
@@ -0,0 +1,652 @@
+/*******************************************************************************
+ * Copyright (c) 2011 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Greg Watson - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.ui.widgets;
+
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.ListenerList;
+import org.eclipse.jface.operation.IRunnableContext;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteConnectionType;
+import org.eclipse.remote.core.IRemoteConnectionWorkingCopy;
+import org.eclipse.remote.core.IRemotePreferenceConstants;
+import org.eclipse.remote.core.IRemoteServicesManager;
+import org.eclipse.remote.internal.core.preferences.Preferences;
+import org.eclipse.remote.internal.ui.RemoteUIPlugin;
+import org.eclipse.remote.internal.ui.messages.Messages;
+import org.eclipse.remote.ui.IRemoteUIConnectionService;
+import org.eclipse.remote.ui.IRemoteUIConnectionWizard;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
+
+/**
+ * Widget to allow the user to select a service provider and connection. Provides a "New" button to create a new connection.
+ *
+ * If title is supplied then the widget will be placed in a group.
+ *
+ * @since 5.0
+ *
+ */
+public class RemoteConnectionWidget extends Composite {
+ /**
+ * Listener for widget selected events. Allows the events to be enabled/disabled.
+ *
+ */
+ protected class WidgetListener implements SelectionListener {
+ /** State of the listener (enabled/disabled). */
+ private boolean listenerEnabled = true;
+
+ /**
+ * Disable listener, received events shall be ignored.
+ */
+ public void disable() {
+ setEnabled(false);
+ }
+
+ protected void doWidgetDefaultSelected(SelectionEvent e) {
+ // Default empty implementation.
+ }
+
+ /**
+ * Enable the listener to handle events.
+ */
+ public void enable() {
+ setEnabled(true);
+ }
+
+ /**
+ * Test if the listener is enabled.
+ */
+ public synchronized boolean isEnabled() {
+ return listenerEnabled;
+ }
+
+ /**
+ * Set listener enabled state
+ *
+ * @param enabled
+ */
+ public synchronized void setEnabled(boolean enabled) {
+ listenerEnabled = enabled;
+ }
+
+ @Override
+ public void widgetDefaultSelected(SelectionEvent e) {
+ if (isEnabled()) {
+ widgetSelected(e);
+ }
+ }
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ if (isEnabled()) {
+ Object source = e.getSource();
+ if (source == fConnectionTypeCombo) {
+ handleConnectionTypeSelected(null);
+ } else if (source == fConnectionCombo) {
+ handleConnectionSelected();
+ } else if (source == fNewConnectionButton) {
+ handleNewRemoteConnectionSelected();
+ } else if (source == fLocalButton) {
+ handleButtonSelected();
+ } else if (source == fRemoteButton) {
+ handleButtonSelected();
+ }
+ }
+ }
+
+ }
+
+ public static final String DEFAULT_CONNECTION_NAME = "Remote Host"; //$NON-NLS-1$
+
+ /**
+ * Force the use of the connection type combo, regardless of the PREF_CONNECTION_TYPE preference setting.
+ *
+ * @since 2.0
+ */
+ public static int FLAG_FORCE_CONNECTION_TYPE_SELECTION = 1 << 0;
+
+ /**
+ * Do not provide a selection for local services.
+ */
+ public static int FLAG_NO_LOCAL_SELECTION = 1 << 1;
+
+ private Combo fConnectionTypeCombo;
+ private Button fLocalButton;
+ private Button fRemoteButton;
+ private final Combo fConnectionCombo;
+ private final Button fNewConnectionButton;
+
+ private List<IRemoteConnectionType> fConnectionTypes;
+ private IRemoteConnection fSelectedConnection;
+ private IRemoteServicesManager fRemoteServicesManager = RemoteUIPlugin.getService(IRemoteServicesManager.class);
+ private IRemoteConnectionType fDefaultConnectionType;
+ private boolean fSelectionListernersEnabled = true;
+ private boolean fEnabled = true;
+
+ private final ListenerList fSelectionListeners = new ListenerList();
+ private final WidgetListener fWidgetListener = new WidgetListener();
+
+ /**
+ * Constructor
+ *
+ * @param parent
+ * parent composite
+ * @param style
+ * style or SWT.NONE
+ * @param title
+ * if a title is supplied then the widget will be placed in a group. Can be null.
+ * @param flags
+ * a combination of flags that modify the behavior of the widget.
+ */
+ public RemoteConnectionWidget(Composite parent, int style, String title, int flags) {
+ this(parent, style, title, flags, null, null);
+ }
+
+ /**
+ * Constructor
+ *
+ * @param parent
+ * parent composite
+ * @param style
+ * style or SWT.NONE
+ * @param title
+ * if a title is supplied then the widget will be placed in a group. Can be null.
+ * @param flags
+ * a combination of flags that modify the behavior of the widget.
+ * @param context
+ * runnable context, or null
+ * @since 2.0
+ */
+ public RemoteConnectionWidget(Composite parent, int style, String title, int flags, IRunnableContext context) {
+ this(parent, style, title, flags, context, null);
+ }
+
+ /**
+ * Constructor
+ *
+ * @param parent
+ * parent composite
+ * @param style
+ * style or SWT.NONE
+ * @param title
+ * if a title is supplied then the widget will be placed in a group. Can be null.
+ * @param flags
+ * a combination of flags that modify the behavior of the widget.
+ * @param connnectionTypes
+ * list of connection types to select from
+ * @since 2.0
+ */
+ public RemoteConnectionWidget(Composite parent, int style, String title, int flags,
+ List<IRemoteConnectionType> connectionTypes) {
+ this(parent, style, title, flags, null, connectionTypes);
+ }
+
+ /**
+ * Constructor
+ *
+ * @param parent
+ * parent composite
+ * @param style
+ * style or SWT.NONE
+ * @param title
+ * if a title is supplied then the widget will be placed in a group. Can be null.
+ * @param flags
+ * a combination of flags that modify the behavior of the widget.
+ * @param context
+ * runnable context, or null
+ * @param connectionTypes
+ * list of connection types to select from
+ * @since 2.0
+ */
+ public RemoteConnectionWidget(Composite parent, int style, String title, int flags, IRunnableContext context,
+ List<IRemoteConnectionType> connectionTypes) {
+ super(parent, style);
+
+ if (connectionTypes != null) {
+ // Just present the connections that are provided
+ flags |= FLAG_FORCE_CONNECTION_TYPE_SELECTION | FLAG_NO_LOCAL_SELECTION;
+ }
+
+ Composite body = this;
+
+ GridLayout layout = new GridLayout(1, false);
+ layout.marginHeight = 0;
+ layout.marginWidth = 0;
+ layout.numColumns = 4;
+ setLayout(layout);
+ setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+
+ if (title != null) {
+ Group group = new Group(this, SWT.NONE);
+ group.setText(title);
+ GridLayout groupLayout = new GridLayout(1, false);
+ groupLayout.marginHeight = 0;
+ groupLayout.marginWidth = 0;
+ groupLayout.numColumns = 4;
+ group.setLayout(groupLayout);
+ group.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ layout.numColumns = 1;
+ body = group;
+ }
+
+ fRemoteServicesManager = RemoteUIPlugin.getService(IRemoteServicesManager.class);
+ if (connectionTypes != null) {
+ // No default if the list of connection types was supplied
+ fConnectionTypes = connectionTypes;
+ } else {
+ fConnectionTypes = fRemoteServicesManager.getRemoteConnectionTypes();
+ String id = Preferences.getString(IRemotePreferenceConstants.PREF_CONNECTION_TYPE_ID);
+ if (id != null) {
+ fDefaultConnectionType = fRemoteServicesManager.getConnectionType(id);
+ }
+ }
+
+ /*
+ * Check if we need a connection type combo, or we should just use the default provider
+ */
+ if ((flags & FLAG_FORCE_CONNECTION_TYPE_SELECTION) != 0) {
+ Label label = new Label(body, SWT.NONE);
+ label.setText(Messages.RemoteConnectionWidget_Connection_Type);
+ label.setLayoutData(new GridData());
+
+ fConnectionTypeCombo = new Combo(body, SWT.DROP_DOWN | SWT.READ_ONLY);
+ GridData gd = new GridData(SWT.FILL, SWT.CENTER, true, false);
+ gd.horizontalSpan = 3;
+ fConnectionTypeCombo.setLayoutData(gd);
+ fConnectionTypeCombo.addSelectionListener(fWidgetListener);
+ fConnectionTypeCombo.setFocus();
+ }
+
+ if ((flags & FLAG_NO_LOCAL_SELECTION) == 0 && (flags & FLAG_FORCE_CONNECTION_TYPE_SELECTION) == 0) {
+ fLocalButton = new Button(body, SWT.RADIO);
+ fLocalButton.setText(Messages.RemoteConnectionWidget_Local);
+ fLocalButton.setLayoutData(new GridData());
+ fLocalButton.addSelectionListener(fWidgetListener);
+ fLocalButton.setSelection(false);
+
+ fRemoteButton = new Button(body, SWT.RADIO);
+ fRemoteButton.setText(Messages.RemoteConnectionWidget_Remote);
+ fRemoteButton.setLayoutData(new GridData());
+ fRemoteButton.addSelectionListener(fWidgetListener);
+ } else {
+ Label remoteLabel = new Label(body, SWT.NONE);
+ remoteLabel.setText(Messages.RemoteConnectionWidget_Connection_Name);
+ remoteLabel.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false));
+ }
+
+ fConnectionCombo = new Combo(body, SWT.DROP_DOWN | SWT.READ_ONLY);
+ fConnectionCombo.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
+ fConnectionCombo.addSelectionListener(fWidgetListener);
+ if (fDefaultConnectionType != null) {
+ fConnectionCombo.setFocus();
+ }
+ fConnectionCombo.setEnabled(false);
+
+ fNewConnectionButton = new Button(body, SWT.PUSH);
+ fNewConnectionButton.setText(Messages.RemoteConnectionWidget_New);
+ fNewConnectionButton.setLayoutData(new GridData());
+ fNewConnectionButton.addSelectionListener(fWidgetListener);
+
+ if (fConnectionTypeCombo != null) {
+ initializeConnectionTypeCombo();
+ }
+
+ handleConnectionTypeSelected(null);
+
+ if (fLocalButton != null) {
+ handleButtonSelected();
+ }
+ }
+
+ /**
+ * Adds the listener to the collection of listeners who will be notified when the user changes the receiver's selection, by
+ * sending it one of the messages defined in the <code>SelectionListener</code> interface.
+ * <p>
+ * <code>widgetSelected</code> is called when the user changes the service provider or connection.
+ * </p>
+ *
+ * @param listener
+ * the listener which should be notified
+ */
+ public void addSelectionListener(SelectionListener listener) {
+ fSelectionListeners.add(listener);
+ }
+
+ /**
+ * Limit the connection types that will be used when displaying valid connections. Only connection types that support
+ * connections with supplied services will be displayed in the connection type combo, and only connections from these connection
+ * types will be displayed in the connection combo.
+ *
+ * @param services
+ * list of services {@link IRemoteConnection.Service}
+ * @since 2.0
+ */
+ @SafeVarargs
+ public final void filterConnections(Class<? extends IRemoteConnection.Service>... services) {
+ fConnectionTypes = fRemoteServicesManager.getConnectionTypesSupporting(services);
+ if (fConnectionTypeCombo != null) {
+ initializeConnectionTypeCombo();
+ }
+ handleConnectionTypeSelected(null);
+ }
+
+ /**
+ * Get the new button from the widget
+ *
+ * @return button
+ * @since 7.0
+ */
+ public Button getButton() {
+ return fNewConnectionButton;
+ }
+
+ /**
+ * Get the connection that is currently selected in the widget, or null if there is no selected connection.
+ *
+ * @return selected connection
+ */
+ public IRemoteConnection getConnection() {
+ return fSelectedConnection;
+ }
+
+ private IRemoteConnectionType getSelectedConnectionType() {
+ if (fConnectionTypeCombo != null) {
+ int selectionIndex = fConnectionTypeCombo.getSelectionIndex();
+ if (fConnectionTypes.size() > 0 && selectionIndex > 0) {
+ return fConnectionTypes.get(selectionIndex - 1);
+ }
+ }
+ if (fDefaultConnectionType != null) {
+ return fDefaultConnectionType;
+ }
+ return null;
+ }
+
+ private IRemoteUIConnectionService getUIConnectionManager() {
+ IRemoteConnectionType services = getSelectedConnectionType();
+ if (services != null) {
+ return services.getService(IRemoteUIConnectionService.class);
+ }
+ return null;
+ }
+
+ private void handleButtonSelected() {
+ fRemoteButton.setSelection(!fLocalButton.getSelection());
+ updateEnablement();
+ handleConnectionSelected();
+ }
+
+ /**
+ * Handle the section of a new connection. Update connection option buttons appropriately.
+ */
+ protected void handleConnectionSelected() {
+ final boolean enabled = fWidgetListener.isEnabled();
+ fWidgetListener.disable();
+ IRemoteConnection selectedConnection = null;
+ if (fLocalButton != null && fLocalButton.getSelection()) {
+ selectedConnection = fRemoteServicesManager.getLocalConnectionType().getConnections().get(0);
+ } else {
+ int currentSelection = fConnectionCombo.getSelectionIndex();
+ if (currentSelection > 0) {
+ String connectionName = fConnectionCombo.getItem(currentSelection);
+ selectedConnection = getSelectedConnectionType().getConnection(connectionName);
+ }
+ }
+ if (selectedConnection == null || fSelectedConnection == null
+ || !selectedConnection.getName().equals(fSelectedConnection.getName())) {
+ fSelectedConnection = selectedConnection;
+ Event evt = new Event();
+ evt.widget = this;
+ notifyListeners(new SelectionEvent(evt));
+ }
+ fWidgetListener.setEnabled(enabled);
+ }
+
+ /**
+ * Handle creation of a new connection by pressing the 'New...' button. Calls handleRemoteServicesSelected() to update the
+ * connection combo with the new connection.
+ *
+ * TODO should probably select the new connection
+ */
+ protected void handleNewRemoteConnectionSelected() {
+ if (getUIConnectionManager() != null) {
+ IRemoteUIConnectionWizard wizard = getUIConnectionManager().getConnectionWizard(getShell());
+ if (wizard != null) {
+ wizard.setConnectionName(initialConnectionName());
+ IRemoteConnectionWorkingCopy conn = wizard.open();
+ if (conn != null) {
+ try {
+ handleConnectionTypeSelected(conn.save());
+ handleConnectionSelected();
+ } catch (CoreException e) {
+ RemoteUIPlugin.log(e);
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Handle selection of a new connection type from the connection type combo. Handles the special case where the
+ * connection type combo is null and a local connection is supplied. In this case, the selected connection type is not changed.
+ *
+ * The assumption is that this will trigger a call to the selection handler for the connection combo.
+ *
+ * @param conn
+ * connection to select as current. If conn is null, select the first item in the list.
+ * @since 2.0
+ */
+ protected void handleConnectionTypeSelected(IRemoteConnection conn) {
+ final boolean enabled = fWidgetListener.isEnabled();
+ fWidgetListener.disable();
+ try {
+ IRemoteConnectionType selectedConnectionType = getSelectedConnectionType();
+ if (conn != null) {
+ selectedConnectionType = conn.getConnectionType();
+ }
+
+ /*
+ * If a connection was supplied, set its connection type in the combo. Otherwise use the currently selected
+ * service.
+ */
+ if (fDefaultConnectionType == null && conn != null) {
+ for (int index = 0; index < fConnectionTypes.size(); index++) {
+ if (fConnectionTypes.get(index).getId().equals(selectedConnectionType.getId())) {
+ fConnectionTypeCombo.select(index + 1);
+ break;
+ }
+ }
+ }
+
+ fConnectionCombo.removeAll();
+ fConnectionCombo.add(Messages.RemoteConnectionWidget_selectConnection);
+
+ if (selectedConnectionType == null) {
+ fConnectionCombo.select(0);
+ fConnectionCombo.setEnabled(false);
+ fNewConnectionButton.setEnabled(false);
+ handleConnectionSelected();
+ } else {
+ fConnectionCombo.setEnabled(true);
+
+ /*
+ * Populate the connection combo and select the connection
+ */
+ int selected = 0;
+ int offset = 1;
+
+ List<IRemoteConnection> sorted = selectedConnectionType.getConnections();
+ Collections.sort(sorted, new Comparator<IRemoteConnection>() {
+ @Override
+ public int compare(IRemoteConnection o1, IRemoteConnection o2) {
+ return o1.getName().compareTo(o2.getName());
+ }
+ });
+
+ for (IRemoteConnection s : sorted) {
+ fConnectionCombo.add(s.getName());
+ if (conn != null && s.getName().equals(conn.getName())) {
+ selected = offset;
+ }
+ offset++;
+ }
+
+ fConnectionCombo.select(selected);
+ handleConnectionSelected();
+
+ /*
+ * Enable 'new' button if new connections are supported
+ */
+ fNewConnectionButton.setEnabled(selectedConnectionType.canAdd());
+ }
+ } finally {
+ fWidgetListener.setEnabled(enabled);
+ }
+ }
+
+ private String initialConnectionName() {
+ String name = DEFAULT_CONNECTION_NAME;
+ int count = 1;
+ while (getSelectedConnectionType().getConnection(name) != null) {
+ name = DEFAULT_CONNECTION_NAME + " " + count++; //$NON-NLS-1$
+ }
+ return name;
+ }
+
+ /**
+ * Initialize the contents of the connection type combo. Keeps an array of connection types that matches the combo elements.
+ *
+ * @since 2.0
+ */
+ protected void initializeConnectionTypeCombo() {
+ final boolean enabled = fWidgetListener.isEnabled();
+ fWidgetListener.disable();
+ fConnectionTypeCombo.removeAll();
+ int offset = 1;
+ int defIndex = 0;
+ fConnectionTypeCombo.add(Messages.RemoteConnectionWidget_selectConnectionType);
+ for (int i = 0; i < fConnectionTypes.size(); i++) {
+ fConnectionTypeCombo.add(fConnectionTypes.get(i).getName());
+ if (fDefaultConnectionType != null && fConnectionTypes.get(i).equals(fDefaultConnectionType)) {
+ defIndex = i + offset;
+ }
+ }
+ if (fConnectionTypes.size() > 0) {
+ fConnectionTypeCombo.select(defIndex);
+ }
+ fWidgetListener.setEnabled(enabled);
+ }
+
+ @Override
+ public boolean isEnabled() {
+ return fEnabled;
+ }
+
+ private void notifyListeners(SelectionEvent e) {
+ if (fSelectionListernersEnabled) {
+ for (Object listener : fSelectionListeners.getListeners()) {
+ ((SelectionListener) listener).widgetSelected(e);
+ }
+ }
+ }
+
+ /**
+ * Remove a listener that will be notified when one of the widget's controls are selected
+ *
+ * @param listener
+ * listener to remove
+ */
+ public void removeSelectionListener(SelectionListener listener) {
+ fSelectionListeners.remove(listener);
+ }
+
+ /**
+ * Set the connection that should be selected in the widget.
+ *
+ * @param connection
+ * connection to select
+ * @throws CoreException
+ */
+ public void setConnection(IRemoteConnection connection) {
+ fSelectionListernersEnabled = false;
+ if (fLocalButton != null && connection != null
+ && connection.getConnectionType() == fRemoteServicesManager.getLocalConnectionType()) {
+ fLocalButton.setSelection(true);
+ handleButtonSelected();
+ } else {
+ handleConnectionTypeSelected(connection);
+ }
+ handleConnectionSelected();
+ updateEnablement();
+ fSelectionListernersEnabled = true;
+ }
+
+ /**
+ * Set the connection that should be selected in the widget.
+ *
+ * @param id
+ * connection type id
+ * @param name
+ * connection name
+ * @since 6.0
+ */
+ public void setConnection(String id, String name) {
+ IRemoteConnectionType connectionType = fRemoteServicesManager.getConnectionType(id);
+ if (connectionType != null) {
+ IRemoteConnection connection = connectionType.getConnection(name);
+ if (connection != null) {
+ setConnection(connection);
+ }
+ }
+ }
+
+ @Override
+ public void setEnabled(boolean enabled) {
+ fEnabled = enabled;
+ updateEnablement();
+ }
+
+ private void updateEnablement() {
+ if (fDefaultConnectionType != null) {
+ boolean isRemote = true;
+ if (fLocalButton != null) {
+ fLocalButton.setEnabled(fEnabled);
+ fRemoteButton.setEnabled(fEnabled);
+ isRemote = !fLocalButton.getSelection();
+ }
+ fConnectionCombo.setEnabled(fEnabled && isRemote);
+ fNewConnectionButton.setEnabled(fEnabled && isRemote && fDefaultConnectionType.canAdd());
+ } else {
+ IRemoteConnectionType services = getSelectedConnectionType();
+ fConnectionCombo.setEnabled(fEnabled && services != null);
+ fNewConnectionButton.setEnabled(fEnabled && services != null && services.canAdd());
+ if (fConnectionTypeCombo != null) {
+ fConnectionTypeCombo.setEnabled(fEnabled);
+ }
+ }
+ }
+}
diff --git a/remote/org.eclipse.remote.ui/src/org/eclipse/remote/ui/widgets/RemoteDirectoryWidget.java b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/ui/widgets/RemoteDirectoryWidget.java
new file mode 100644
index 00000000000..4add1483dcd
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/ui/widgets/RemoteDirectoryWidget.java
@@ -0,0 +1,281 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Mike Kucera (IBM) - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.ui.widgets;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.core.runtime.ListenerList;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteFileService;
+import org.eclipse.remote.core.IRemoteProcessService;
+import org.eclipse.remote.internal.ui.messages.Messages;
+import org.eclipse.remote.ui.IRemoteUIConnectionService;
+import org.eclipse.remote.ui.IRemoteUIFileService;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+
+/**
+ * Widget to allow the user to select a remote directory. Provides a "Browse"
+ * button that uses the currently specified connection and a "Restore Default"
+ * button to revert to the initial setting.
+ *
+ * If title is supplied then the widget will be placed in a group.
+ *
+ * The browse message can be modified using {@link #setBrowseMessage(String)}
+ *
+ */
+public class RemoteDirectoryWidget extends Composite {
+ private final Text text;
+ private final Button browseButton;
+ private final Button defaultButton;
+
+ private final String fDefaultPath = null;
+ private String fBrowseMessage = Messages.RemoteDirectoryWidget_0;
+ private IRemoteConnection fRemoteConnection;
+ private final ListenerList modifyListeners = new ListenerList();
+
+ private final Map<String, String> previousSelections = new HashMap<>();
+
+ public RemoteDirectoryWidget(Composite parent, int style, String title, String defaultPath) {
+ super(parent, style);
+
+ GridLayout layout = new GridLayout(1, false);
+ layout.marginHeight = 0;
+ layout.marginWidth = 0;
+ setLayout(layout);
+ setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+
+ Composite body = this;
+
+ if (title != null) {
+ Group group = new Group(this, SWT.NONE);
+ group.setText(title);
+ group.setLayout(new GridLayout(1, false));
+ group.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ body = group;
+ }
+
+ Composite textComp = new Composite(body, SWT.NONE);
+ textComp.setLayout(new GridLayout(2, false));
+ textComp.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+
+ Label label = new Label(textComp, SWT.NONE);
+ label.setText(Messages.RemoteDirectoryWidget_1);
+
+ text = new Text(textComp, SWT.BORDER);
+ GridData data = new GridData(SWT.FILL, SWT.FILL, true, false);
+ text.setLayoutData(data);
+ text.addModifyListener(new ModifyListener() {
+ @Override
+ public void modifyText(ModifyEvent e) {
+ String path = text.getText();
+ setSavedPath(path);
+ notifyListeners(e);
+ }
+ });
+
+ Composite buttonComp = new Composite(body, SWT.NONE);
+ buttonComp.setLayout(new GridLayout(2, true));
+ GridData buttonCompData = new GridData(SWT.FILL, SWT.FILL, false, false);
+ buttonCompData.horizontalAlignment = SWT.END;
+ buttonComp.setLayoutData(buttonCompData);
+
+ browseButton = new Button(buttonComp, SWT.NONE);
+ browseButton.setText(Messages.RemoteDirectoryWidget_2);
+ GridData browseButtonData = new GridData(SWT.BEGINNING, SWT.FILL, false, false);
+ browseButtonData.widthHint = 110;
+ browseButton.setLayoutData(browseButtonData);
+ browseButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ browse();
+ }
+ });
+
+ defaultButton = new Button(buttonComp, SWT.NONE);
+ defaultButton.setText(Messages.RemoteDirectoryWidget_3);
+ GridData defaultButtonData = new GridData(SWT.BEGINNING, SWT.FILL, false, false);
+ defaultButtonData.widthHint = 110;
+ defaultButton.setLayoutData(defaultButtonData);
+ defaultButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ restoreDefault(fDefaultPath);
+ }
+ });
+
+ if (defaultPath != null) {
+ text.setText(defaultPath);
+ }
+ updateBrowseButton();
+ }
+
+ /**
+ * Add a listener that will be notified when the directory path is modified.
+ *
+ * @param listener
+ * listener to add
+ */
+ public void addModifyListener(ModifyListener listener) {
+ modifyListeners.add(listener);
+ }
+
+ /**
+ * Get the directory location path. This path will be relative to the remote
+ * machine.
+ *
+ * @return directory location path
+ */
+ public String getLocationPath() {
+ return text.getText();
+ }
+
+ /**
+ * Remove a listener that will be notified when the directory path is
+ * modified.
+ *
+ * @param listener
+ * listener to remove
+ */
+ public void removeModifyListener(ModifyListener listener) {
+ modifyListeners.remove(listener);
+ }
+
+ /**
+ * Set the message that will be displayed in the remote directory browser
+ * dialog.
+ *
+ * @param message
+ * message to be displayed
+ */
+ public void setBrowseMessage(String message) {
+ fBrowseMessage = message;
+ }
+
+ /**
+ * Set the remote connection to use for browsing for the remote directory.
+ *
+ * The connection type must provide the IRemoteUIConnectionService and IRemoteUIFileService services and the connection must
+ * support the IRemoteFileService service. If any of these conditions are not met, this method will do nothing.
+ *
+ * @param conn
+ * remote connection
+ * @since 4.0
+ */
+ public void setConnection(IRemoteConnection conn) {
+ if (conn == null) {
+ throw new NullPointerException();
+ }
+
+ if (conn.hasService(IRemoteFileService.class)
+ && conn.getConnectionType().hasService(IRemoteUIConnectionService.class)
+ && conn.getConnectionType().hasService(IRemoteUIFileService.class) && !conn.equals(fRemoteConnection)) {
+ fRemoteConnection = conn;
+ String path = getSavedPath();
+ restoreDefault(path);
+ updateBrowseButton();
+ }
+ }
+
+ /**
+ * Set the initial remote location that will be displayed in the widget.
+ *
+ * @param path
+ */
+ public void setLocationPath(String path) {
+ if (path != null && !path.equals(getLocationPath())) {
+ text.setText(path);
+ }
+ }
+
+ private void browse() {
+ IRemoteUIConnectionService connMgr = getUIConnectionManager();
+ if (connMgr != null) {
+ connMgr.openConnectionWithProgress(getShell(), null, fRemoteConnection);
+ }
+ if (fRemoteConnection.isOpen()) {
+ IRemoteUIFileService fileMgr = getUIFileManager();
+ if (fileMgr != null) {
+ fileMgr.setConnection(fRemoteConnection);
+ String path = fileMgr.browseDirectory(getShell(), fBrowseMessage, "", 0); //$NON-NLS-1$
+ if (path != null) {
+ setLocationPath(path);
+ }
+ }
+ }
+ }
+
+ private String getSavedPath() {
+ if (fRemoteConnection != null) {
+ return previousSelections
+ .get(fRemoteConnection.getConnectionType().getId() + "." + fRemoteConnection.getName()); //$NON-NLS-1$
+ }
+ return null;
+ }
+
+ private IRemoteUIFileService getUIFileManager() {
+ if (fRemoteConnection != null) {
+ return fRemoteConnection.getConnectionType().getService(IRemoteUIFileService.class);
+ }
+ return null;
+ }
+
+ private IRemoteUIConnectionService getUIConnectionManager() {
+ if (fRemoteConnection != null) {
+ return fRemoteConnection.getConnectionType().getService(IRemoteUIConnectionService.class);
+ }
+ return null;
+ }
+
+ private void notifyListeners(ModifyEvent e) {
+ for (Object listener : modifyListeners.getListeners()) {
+ ((ModifyListener) listener).modifyText(e);
+ }
+ }
+
+ private void restoreDefault(String path) {
+ if (path == null && fRemoteConnection != null) {
+ IRemoteProcessService processService = fRemoteConnection.getService(IRemoteProcessService.class);
+ if (processService != null) {
+ path = processService.getWorkingDirectory().toString();
+ }
+ }
+ if (path == null) {
+ path = ""; //$NON-NLS-1$
+ }
+ setLocationPath(path); // modify event listener updates map
+ }
+
+ private void setSavedPath(String path) {
+ if (fRemoteConnection != null) {
+ previousSelections.put(fRemoteConnection.getConnectionType().getId() + "." + fRemoteConnection.getName(), //$NON-NLS-1$
+ path);
+ }
+ }
+
+ private void updateBrowseButton() {
+ browseButton.setEnabled(getUIFileManager() != null);
+ }
+}
diff --git a/remote/org.eclipse.remote.ui/src/org/eclipse/remote/ui/widgets/RemoteFileWidget.java b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/ui/widgets/RemoteFileWidget.java
new file mode 100644
index 00000000000..e27065a4067
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/ui/widgets/RemoteFileWidget.java
@@ -0,0 +1,300 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Mike Kucera (IBM) - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.ui.widgets;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.core.runtime.ListenerList;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteFileService;
+import org.eclipse.remote.core.IRemoteProcessService;
+import org.eclipse.remote.internal.ui.messages.Messages;
+import org.eclipse.remote.ui.IRemoteUIConnectionService;
+import org.eclipse.remote.ui.IRemoteUIFileService;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+
+/**
+ * Widget to allow the user to select a remote file. Provides a "Browse"
+ * button that uses the currently specified connection and a "Restore Default"
+ * button to revert to the initial setting.
+ *
+ * If GROUP_FLAG is set, then the widget will be placed in a group.
+ * If RESTORE_BUTTON_FLAG is set, then a "Restore Default" button will be added
+ *
+ * If defaultPath is not null, then the initial path will be set to its value.
+ *
+ * The browse message can be modified using {@link #setBrowseMessage(String)}
+ *
+ */
+public class RemoteFileWidget extends Composite {
+ public static int GROUP_FLAG = 0x01;
+ public static int RESTORE_BUTTON_FLAG = 0x02;
+
+ private final Label fLabel;
+ private final Text fText;
+ private final Button fBrowseButton;
+
+ private Button fDefaultButton;
+ private String fDefaultPath;
+ private String fBrowseMessage = Messages.RemoteFileWidget_Select_File;
+ private IRemoteConnection fRemoteConnection;
+
+ private final ListenerList fModifyListeners = new ListenerList();
+ private final Map<String, String> fPreviousSelections = new HashMap<>();
+
+ public RemoteFileWidget(Composite parent, int style, int flags, String title, String defaultPath) {
+ super(parent, style);
+
+ GridLayout layout = new GridLayout(4, false);
+ layout.marginHeight = 0;
+ layout.marginWidth = 0;
+ setLayout(layout);
+
+ Composite body = this;
+
+ if ((flags & GROUP_FLAG) != 0) {
+ Group group = new Group(this, SWT.NONE);
+ group.setText(title);
+ group.setLayout(new GridLayout(1, false));
+ group.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ body = group;
+ }
+
+ fLabel = new Label(body, SWT.NONE);
+ fLabel.setText(Messages.RemoteFileWidget_File);
+ fLabel.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false));
+
+ fText = new Text(body, SWT.BORDER);
+ fText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
+ fText.addModifyListener(new ModifyListener() {
+ @Override
+ public void modifyText(ModifyEvent e) {
+ String path = fText.getText();
+ setSavedPath(path);
+ notifyListeners(e);
+ }
+ });
+
+ fBrowseButton = new Button(body, SWT.NONE);
+ fBrowseButton.setText(Messages.RemoteFileWidget_Browse);
+ GridData browseButtonData = new GridData(SWT.LEFT, SWT.CENTER, false, false);
+ browseButtonData.widthHint = 110;
+ fBrowseButton.setLayoutData(browseButtonData);
+ fBrowseButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ browse();
+ }
+ });
+
+ if ((flags & RESTORE_BUTTON_FLAG) != 0) {
+ fDefaultButton = new Button(body, SWT.NONE);
+ fDefaultButton.setText(Messages.RemoteFileWidget_Restore_Default);
+ GridData defaultButtonData = new GridData(SWT.LEFT, SWT.CENTER, false, false);
+ defaultButtonData.widthHint = 110;
+ fDefaultButton.setLayoutData(defaultButtonData);
+ fDefaultButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ restoreDefault(fDefaultPath);
+ }
+ });
+ }
+ if (defaultPath != null) {
+ fDefaultPath = defaultPath;
+ fText.setText(defaultPath);
+ }
+ updateBrowseButton();
+ }
+
+ /**
+ * Add a listener that will be notified when the file path is modified.
+ *
+ * @param listener
+ * listener to add
+ */
+ public void addModifyListener(ModifyListener listener) {
+ fModifyListeners.add(listener);
+ }
+
+ private void browse() {
+ IRemoteUIConnectionService connMgr = getUIConnectionManager();
+ if (connMgr != null) {
+ connMgr.openConnectionWithProgress(getShell(), null, fRemoteConnection);
+ }
+ if (fRemoteConnection.isOpen()) {
+ IRemoteUIFileService fileMgr = getUIFileManager();
+ if (fileMgr != null) {
+ fileMgr.setConnection(fRemoteConnection);
+ String path = fileMgr.browseFile(getShell(), fBrowseMessage, "", 0); //$NON-NLS-1$
+ if (path != null) {
+ setLocationPath(path);
+ }
+ }
+ }
+ }
+
+ /**
+ * Get the file location path. This path will be relative to the remote
+ * machine.
+ *
+ * @return file location path
+ */
+ public String getLocationPath() {
+ return fText.getText();
+ }
+
+ private String getSavedPath() {
+ if (fRemoteConnection != null) {
+ return fPreviousSelections
+ .get(fRemoteConnection.getConnectionType().getId() + "." + fRemoteConnection.getName()); //$NON-NLS-1$
+ }
+ return null;
+ }
+
+ private IRemoteUIConnectionService getUIConnectionManager() {
+ if (fRemoteConnection != null) {
+ return fRemoteConnection.getConnectionType().getService(IRemoteUIConnectionService.class);
+ }
+ return null;
+ }
+
+ private IRemoteUIFileService getUIFileManager() {
+ if (fRemoteConnection != null) {
+ return fRemoteConnection.getConnectionType().getService(IRemoteUIFileService.class);
+ }
+ return null;
+ }
+
+ private void notifyListeners(ModifyEvent e) {
+ for (Object listener : fModifyListeners.getListeners()) {
+ ((ModifyListener) listener).modifyText(e);
+ }
+ }
+
+ /**
+ * Remove a listener that will be notified when the file path is
+ * modified.
+ *
+ * @param listener
+ * listener to remove
+ */
+ public void removeModifyListener(ModifyListener listener) {
+ fModifyListeners.remove(listener);
+ }
+
+ private void restoreDefault(String path) {
+ if (path == null && fRemoteConnection != null) {
+ IRemoteProcessService processService = fRemoteConnection.getService(IRemoteProcessService.class);
+ if (processService != null) {
+ path = processService.getWorkingDirectory().toString();
+ }
+ }
+ if (path == null) {
+ path = ""; //$NON-NLS-1$
+ }
+ setLocationPath(path); // modify event listener updates map
+ }
+
+ /**
+ * Set the message that will be displayed in the remote file browser
+ * dialog.
+ *
+ * @param message
+ * message to be displayed
+ */
+ public void setBrowseMessage(String message) {
+ fBrowseMessage = message;
+ }
+
+ /**
+ * Set the remote connection to use for browsing for the remote file.
+ *
+ * The connection type must provide the IRemoteUIConnectionService and IRemoteUIFileService services and the connection must
+ * support the IRemoteFileService service. If any of these conditions are not met, this method will do nothing.
+ *
+ * @param conn
+ * remote connection
+ * @since 4.0
+ */
+ public void setConnection(IRemoteConnection conn) {
+ if (conn == null) {
+ throw new NullPointerException();
+ }
+
+ if (conn.hasService(IRemoteFileService.class)
+ && conn.getConnectionType().hasService(IRemoteUIConnectionService.class)
+ && conn.getConnectionType().hasService(IRemoteUIFileService.class) && !conn.equals(fRemoteConnection)) {
+ fRemoteConnection = conn;
+ String path = getSavedPath();
+ restoreDefault(path);
+ updateBrowseButton();
+ }
+ }
+
+ @Override
+ public void setEnabled(boolean enabled) {
+ if (!fText.isDisposed()) {
+ fText.setEnabled(enabled);
+ }
+ if (!fBrowseButton.isDisposed()) {
+ fBrowseButton.setEnabled(enabled);
+ }
+ }
+
+ /**
+ * Set the label to be displayed
+ *
+ * @param label
+ */
+ public void setLabel(String label) {
+ if (fLabel != null && !fLabel.isDisposed()) {
+ fLabel.setText(label);
+ }
+ }
+
+ /**
+ * Set the initial remote location that will be displayed in the widget.
+ *
+ * @param path
+ */
+ public void setLocationPath(String path) {
+ if (path != null && !path.equals(getLocationPath())) {
+ fText.setText(path);
+ }
+ }
+
+ private void setSavedPath(String path) {
+ if (fRemoteConnection != null) {
+ fPreviousSelections.put(fRemoteConnection.getConnectionType().getId() + "." + fRemoteConnection.getName(), //$NON-NLS-1$
+ path);
+ }
+ }
+
+ private void updateBrowseButton() {
+ fBrowseButton.setEnabled(getUIFileManager() != null);
+ }
+}
diff --git a/remote/org.eclipse.remote.ui/src/org/eclipse/remote/ui/widgets/RemoteResourceBrowserWidget.java b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/ui/widgets/RemoteResourceBrowserWidget.java
new file mode 100644
index 00000000000..7ff3356ec0f
--- /dev/null
+++ b/remote/org.eclipse.remote.ui/src/org/eclipse/remote/ui/widgets/RemoteResourceBrowserWidget.java
@@ -0,0 +1,808 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2015 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ * Martin Oberhuber - [468889] Support Eclipse older than Mars
+ *******************************************************************************/
+package org.eclipse.remote.ui.widgets;
+
+import java.lang.reflect.InvocationTargetException;
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.filesystem.EFS;
+import org.eclipse.core.filesystem.IFileStore;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.ListenerList;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.SubMonitor;
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.ErrorDialog;
+import org.eclipse.jface.dialogs.IInputValidator;
+import org.eclipse.jface.dialogs.InputDialog;
+import org.eclipse.jface.dialogs.ProgressMonitorDialog;
+import org.eclipse.jface.operation.IRunnableContext;
+import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.TreePath;
+import org.eclipse.jface.viewers.TreeSelection;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerFilter;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteFileService;
+import org.eclipse.remote.core.IRemoteProcessService;
+import org.eclipse.remote.core.RemoteServicesUtils;
+import org.eclipse.remote.internal.ui.DeferredFileStore;
+import org.eclipse.remote.internal.ui.DeferredFileStoreComparer;
+import org.eclipse.remote.internal.ui.PendingUpdateAdapter;
+import org.eclipse.remote.internal.ui.RemoteContentProvider;
+import org.eclipse.remote.internal.ui.RemoteResourceComparator;
+import org.eclipse.remote.internal.ui.RemoteTreeViewer;
+import org.eclipse.remote.internal.ui.RemoteUIImages;
+import org.eclipse.remote.internal.ui.RemoteUIPlugin;
+import org.eclipse.remote.internal.ui.messages.Messages;
+import org.eclipse.remote.ui.IRemoteUIConnectionService;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.TraverseEvent;
+import org.eclipse.swt.events.TraverseListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.model.WorkbenchLabelProvider;
+import org.eclipse.ui.progress.UIJob;
+
+/**
+ * Generic file/directory browser for remote resources.
+ *
+ * @author greg
+ *
+ */
+public class RemoteResourceBrowserWidget extends Composite {
+ /**
+ * Delayed input dialog uses {@link ValidateJob} to create an InputDialog that only validates it's text field after an
+ * appropriate timeout has occurred. This is to prevent excessive network traffic when checking the existence of a remote
+ * directory on a target system.
+ *
+ * Due to the timing of the validation, it is possible to close the dialog prior to the validation completing. However since the
+ * validation is only used to check for the existence of a remote file/directory, the worst that can happen is that the user
+ * will not be notified that the directory already exists.
+ *
+ */
+ private class DelayedInputDialog extends InputDialog {
+ public DelayedInputDialog(Shell parentShell, String dialogTitle, String dialogMessage, String initialValue,
+ IInputValidator validator) {
+ super(parentShell, dialogTitle, dialogMessage, initialValue, validator);
+ }
+
+ @Override
+ protected void buttonPressed(int buttonId) {
+ /*
+ * Cancel the job as soon as the dialog is closed to avoid SWTException
+ */
+ fValidateJob.cancel();
+ super.buttonPressed(buttonId);
+ }
+
+ protected void doValidate() {
+ super.validateInput();
+ }
+
+ @Override
+ protected void validateInput() {
+ fValidateJob.cancel();
+ if (!getText().getText().equals("")) { //$NON-NLS-1$
+ fValidateJob.schedule(VALIDATE_DELAY);
+ } else {
+ super.validateInput();
+ }
+ }
+ }
+
+ /**
+ * Validation job that will call the {@link DelayedInputDialog#doValidate()} method when run. The job should be scheduled with a
+ * delay to limit the frequency of validation.
+ */
+ private class ValidateJob extends UIJob {
+ private DelayedInputDialog fDialog;
+
+ public ValidateJob() {
+ super(Messages.RemoteResourceBrowserWidget_0);
+ setSystem(true);
+ }
+
+ @Override
+ public IStatus runInUIThread(IProgressMonitor monitor) {
+ fDialog.doValidate();
+ return Status.OK_STATUS;
+ }
+
+ public void setDialog(DelayedInputDialog dialog) {
+ fDialog = dialog;
+ }
+ }
+
+ private static final int VALIDATE_DELAY = 100;
+ private final ValidateJob fValidateJob = new ValidateJob();
+
+ /**
+ * Browse for files
+ */
+ public static final int FILE_BROWSER = 0x01;
+ /**
+ * Browse for directories (files are not shown)
+ */
+ public static final int DIRECTORY_BROWSER = 0x02;
+ /**
+ * Show local selection button
+ */
+ public static final int SHOW_LOCAL_SELECTION = 0x04;
+ /**
+ * Display checkbox to show/hide hidden files
+ */
+ public static final int SHOW_HIDDEN_CHECKBOX = 0x10;
+ /**
+ * Display button to create new folders
+ */
+ public static final int SHOW_NEW_FOLDER_BUTTON = 0x20;
+ /**
+ * Display widget to select a connection
+ */
+ public static final int SHOW_CONNECTIONS = 0x40;
+
+ @SuppressWarnings("unused")
+ private static final int minimumWidth = 200;
+ private static final int heightHint = 300;
+
+ private RemoteTreeViewer fTreeViewer;
+ private Text fRemotePathText;
+ private Button fUpButton;
+ private Button fNewFolderButton;
+ private Button fShowHiddenButton;
+ private RemoteConnectionWidget fRemoteConnectionWidget;
+
+ private String fDialogTitle;
+ private String fDialogLabel;
+
+ private boolean fShowHidden;
+ private final List<IFileStore> fResources = new ArrayList<>();
+ private String fResource;
+ private String fInitialPath;
+ private IPath fRootPath;
+ private IRemoteFileService fFileMgr;
+ private IRemoteConnection fConnection;
+
+ private final ListenerList fSelectionListeners = new ListenerList();
+
+ private int fOptionFlags = FILE_BROWSER | SHOW_HIDDEN_CHECKBOX | SHOW_NEW_FOLDER_BUTTON;
+
+ private IRunnableContext fRunnableContext;
+
+ public RemoteResourceBrowserWidget(Composite parent, int style, int flags) {
+ super(parent, style);
+ setTitle(Messages.RemoteResourceBrowser_resourceTitle);
+
+ if (flags != 0) {
+ fOptionFlags = flags;
+ }
+
+ setType();
+
+ GridLayout layout = new GridLayout(1, false);
+ layout.marginHeight = 0;
+ layout.marginWidth = 0;
+ setLayout(layout);
+
+ final Composite mainComp = new Composite(this, SWT.NONE);
+ mainComp.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ mainComp.setLayout(new GridLayout(1, false));
+
+ if ((fOptionFlags & SHOW_CONNECTIONS) != 0) {
+ fRemoteConnectionWidget = new RemoteConnectionWidget(mainComp, SWT.NONE, "", //$NON-NLS-1$
+ (fOptionFlags & SHOW_LOCAL_SELECTION) == 0 ? RemoteConnectionWidget.FLAG_NO_LOCAL_SELECTION : 0);
+ fRemoteConnectionWidget.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+ // Must happen before adding selection listener as this will trigger selection event
+ fRemoteConnectionWidget.filterConnections(IRemoteFileService.class);
+ fRemoteConnectionWidget.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent event) {
+ try {
+ connectionSelected();
+ } catch (CoreException e) {
+ RemoteUIPlugin.log(e.getStatus());
+ }
+ updateEnablement();
+ notifySelectionChangedListeners(new SelectionChangedEvent(fTreeViewer, new ISelection() {
+ @Override
+ public boolean isEmpty() {
+ return true;
+ }
+ }));
+ }
+ });
+ }
+
+ Composite textComp = new Composite(mainComp, SWT.NONE);
+ layout = new GridLayout(4, false);
+ layout.marginHeight = 0;
+ layout.marginWidth = 0;
+ textComp.setLayout(layout);
+ textComp.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
+
+ Label label = new Label(textComp, SWT.NONE);
+ label.setText(fDialogLabel);
+ label.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false));
+
+ fRemotePathText = new Text(textComp, SWT.BORDER | SWT.SINGLE);
+ fRemotePathText.addTraverseListener(new TraverseListener() {
+ @Override
+ public void keyTraversed(TraverseEvent e) {
+ if (e.detail == SWT.TRAVERSE_RETURN) {
+ e.doit = false;
+ }
+ }
+ });
+ fRemotePathText.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetDefaultSelected(SelectionEvent e) {
+ fRemotePathText.setSelection(fRemotePathText.getText().length());
+ setRoot(fRemotePathText.getText());
+ }
+ });
+ fRemotePathText.addModifyListener(new ModifyListener() {
+ @Override
+ public void modifyText(ModifyEvent e) {
+ fResource = fRemotePathText.getText().trim();
+ }
+ });
+ GridData gd = new GridData(SWT.FILL, SWT.CENTER, true, false);
+ // gd.minimumWidth = minimumWidth;
+ fRemotePathText.setLayoutData(gd);
+
+ fUpButton = new Button(textComp, SWT.PUSH | SWT.FLAT);
+ fUpButton.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false));
+ fUpButton.setImage(RemoteUIImages.get(RemoteUIImages.IMG_ELCL_UP_NAV));
+ fUpButton.setToolTipText(Messages.RemoteResourceBrowser_UpOneLevel);
+ fUpButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ if (!fRootPath.isRoot()) {
+ setRoot(fRootPath.removeLastSegments(1).toString());
+ }
+ }
+ });
+
+ if ((fOptionFlags & SHOW_NEW_FOLDER_BUTTON) != 0) {
+ // new folder: See Bug 396334
+ fNewFolderButton = new Button(textComp, SWT.PUSH | SWT.FLAT);
+ fNewFolderButton.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false));
+ fNewFolderButton.setImage(RemoteUIImages.get(RemoteUIImages.IMG_ELCL_NEW_FOLDER));
+ fNewFolderButton.setToolTipText(Messages.RemoteResourceBrowser_NewFolder);
+ fNewFolderButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ ISelection selection = fTreeViewer.getSelection();
+ if (!selection.isEmpty()) {
+ if (selection instanceof TreeSelection) {
+ TreePath[] treePaths = ((TreeSelection) selection).getPaths();
+ /*
+ * There should only be one path
+ */
+ if (treePaths.length > 0) {
+ TreePath treePath = treePaths[0];
+ if (treePath.getLastSegment() instanceof DeferredFileStore) {
+ DeferredFileStore element = ((DeferredFileStore) treePath.getLastSegment());
+ String path = toPath(element.getFileStore().toURI());
+ String newPath = createNewFolder(path);
+ if (newPath != null) {
+ fTreeViewer.expandToLevel(element, 1);
+ fTreeViewer.refresh(element);
+ Object[] children = element.getChildren(null);
+ for (Object child : children) {
+ if (child instanceof DeferredFileStore && newPath
+ .equals(((DeferredFileStore) child).getFileStore().getName())) {
+ fTreeViewer.deferSelection(new StructuredSelection(child));
+ }
+ }
+ }
+ }
+ }
+ }
+ } else {
+ DeferredFileStore root = (DeferredFileStore) fTreeViewer.getInput();
+ String path = toPath(root.getFileStore().toURI());
+ String newPath = createNewFolder(path);
+ if (newPath != null) {
+ fTreeViewer.refresh();
+ fTreeViewer.getTree().setFocus();
+ Object[] children = root.getChildren(null);
+ for (Object child : children) {
+ if (child instanceof DeferredFileStore
+ && newPath.equals(((DeferredFileStore) child).getFileStore().getName())) {
+ fTreeViewer.deferSelection(new StructuredSelection(child));
+ }
+ }
+ }
+ }
+ }
+ });
+ } else {
+ gd = new GridData(SWT.LEFT, SWT.CENTER, false, false);
+ gd.horizontalSpan = 2;
+ fUpButton.setLayoutData(gd);
+ }
+
+ if ((style & SWT.MULTI) == SWT.MULTI) {
+ fTreeViewer = new RemoteTreeViewer(mainComp, SWT.MULTI | SWT.BORDER);
+ } else {
+ fTreeViewer = new RemoteTreeViewer(mainComp, SWT.SINGLE | SWT.BORDER);
+ }
+ gd = new GridData(SWT.FILL, SWT.FILL, true, true);
+ // see bug 158380
+ gd.heightHint = Math.max(parent.getSize().y, heightHint);
+ fTreeViewer.getTree().setLayoutData(gd);
+ fTreeViewer.setUseHashlookup(true);
+ fTreeViewer.setComparer(new DeferredFileStoreComparer());
+ fTreeViewer.setComparator(new RemoteResourceComparator());
+ fTreeViewer.setContentProvider(new RemoteContentProvider());
+ fTreeViewer.setLabelProvider(new WorkbenchLabelProvider());
+ fTreeViewer.addSelectionChangedListener(new ISelectionChangedListener() {
+ @Override
+ public void selectionChanged(SelectionChangedEvent event) {
+ ISelection selection = event.getSelection();
+ if (!selection.isEmpty() && selection instanceof IStructuredSelection) {
+ IStructuredSelection ss = (IStructuredSelection) selection;
+ fResources.clear();
+ for (Object currentSelection : ss.toArray()) {
+ if (currentSelection instanceof DeferredFileStore) {
+ IFileStore store = ((DeferredFileStore) currentSelection).getFileStore();
+ fResources.add(store);
+ }
+ }
+ if (fResources.size() > 0) {
+ fRemotePathText.setText(toPath(fResources.get(0).toURI()));
+ }
+ updateEnablement();
+ notifySelectionChangedListeners(event);
+ }
+ }
+ });
+ fTreeViewer.addDoubleClickListener(new IDoubleClickListener() {
+ @Override
+ public void doubleClick(DoubleClickEvent event) {
+ IStructuredSelection s = (IStructuredSelection) event.getSelection();
+ Object o = s.getFirstElement();
+ if (fTreeViewer.isExpandable(o)) {
+ fTreeViewer.setExpandedState(o, !fTreeViewer.getExpandedState(o));
+ }
+ }
+
+ });
+ /*
+ * Only add filter if we are a directory browser. File and resource browsers show everything.
+ */
+ int mask = FILE_BROWSER | DIRECTORY_BROWSER;
+ if ((fOptionFlags & mask) != mask // Avoid filter on resource browsers.
+ && (fOptionFlags & DIRECTORY_BROWSER) != 0) {
+ fTreeViewer.addFilter(new ViewerFilter() {
+ @Override
+ public boolean select(Viewer viewer, Object parentElement, Object element) {
+ if ((element instanceof DeferredFileStore)) {
+ return ((DeferredFileStore) element).isContainer();
+ }
+ return element instanceof PendingUpdateAdapter;
+ }
+ });
+ }
+
+ if ((fOptionFlags & SHOW_HIDDEN_CHECKBOX) != 0) {
+ fShowHiddenButton = new Button(mainComp, SWT.CHECK);
+ fShowHiddenButton.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false));
+ fShowHiddenButton.setText(Messages.RemoteResourceBrowser_Show_hidden_files);
+ fShowHiddenButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ fShowHidden = fShowHiddenButton.getSelection();
+ setRoot(fRootPath.toString());
+ }
+ });
+ }
+
+ updateEnablement();
+ }
+
+ private String toPath(URI uri) {
+ return getConnection().getService(IRemoteFileService.class).toPath(uri);
+ }
+
+ /**
+ * Add a listener that will be notified when the selection is changed.
+ *
+ * @param listener
+ * listener to add
+ */
+ public void addSelectionChangedListener(ISelectionChangedListener listener) {
+ fSelectionListeners.add(listener);
+ }
+
+ /**
+ * Change the viewers input. Called when a new connection is selected.
+ *
+ * @param conn
+ * new connection
+ * @return true if input successfully changed
+ */
+ private boolean changeInput(final IRemoteConnection conn) {
+ if (conn == null) {
+ setRoot(null);
+ return true;
+ }
+ IRemoteUIConnectionService uiMgr = conn.getConnectionType().getService(IRemoteUIConnectionService.class);
+ if (uiMgr != null) {
+ uiMgr.openConnectionWithProgress(getShell(), getRunnableContext(), conn);
+ }
+ if (!conn.isOpen()) {
+ return false;
+ }
+
+ fFileMgr = conn.getService(IRemoteFileService.class);
+ if (fFileMgr != null) {
+ /*
+ * Note: the call to findInitialPath must happen before the
+ * fTreeViewer input is set or the fTreeViewer fails. No idea why this
+ * is.
+ */
+ IRemoteProcessService processService = conn.getService(IRemoteProcessService.class);
+ if (processService != null) {
+ String cwd = processService.getWorkingDirectory();
+ IPath initial = findInitialPath(cwd, fInitialPath);
+
+ // TODO: not platform independent - needs IRemotePath
+ setRoot(initial.toString());
+ }
+
+ fConnection = conn;
+ return true;
+ }
+
+ return false;
+ }
+
+ /**
+ * When a new connection is selected, make sure it is open before using it.
+ *
+ * @throws CoreException
+ */
+ private void connectionSelected() throws CoreException {
+ /*
+ * Make sure the connection is open before we try and read from the
+ * connection.
+ */
+ final IRemoteConnection conn = fRemoteConnectionWidget.getConnection();
+ if (!changeInput(conn)) {
+ /*
+ * Reset combo back to the previous selection
+ */
+ fRemoteConnectionWidget.setConnection(fConnection);
+ }
+ }
+
+ /**
+ * @return
+ */
+ private String createNewFolder(final String parent) {
+ final String[] name = new String[1];
+ name[0] = null;
+ try {
+ IRunnableWithProgress runnable = new IRunnableWithProgress() {
+ @Override
+ public void run(IProgressMonitor monitor) {
+ SubMonitor progress = SubMonitor.convert(monitor, 10);
+ String baseName = "newfolder"; //$NON-NLS-1$
+ final IFileStore path = fConnection.getService(IRemoteFileService.class).getResource(parent);
+ IFileStore child = path.getChild(baseName);
+ int count = 1;
+ try {
+ while (!progress.isCanceled() && child.fetchInfo(EFS.NONE, progress.newChild(1)).exists()) {
+ progress.setWorkRemaining(10);
+ child = path.getChild(baseName + " (" + count++ + ")"); //$NON-NLS-1$//$NON-NLS-2$
+ }
+ } catch (final CoreException e) {
+ Display.getDefault().syncExec(new Runnable() {
+ @Override
+ public void run() {
+ ErrorDialog.openError(getShell(), Messages.RemoteResourceBrowserWidget_New_Folder,
+ Messages.RemoteResourceBrowserWidget_Unable_to_create_new_folder,
+ e.getStatus());
+ }
+ });
+ }
+ final IFileStore basePath = child;
+ final String[] userPath = new String[1];
+ Display.getDefault().syncExec(new Runnable() {
+ @Override
+ public void run() {
+ DelayedInputDialog dialog = new DelayedInputDialog(getShell(),
+ Messages.RemoteResourceBrowserWidget_1, Messages.RemoteResourceBrowserWidget_2,
+ basePath.getName(), new IInputValidator() {
+ @Override
+ public String isValid(String newText) {
+ if (!newText.equals("")) { //$NON-NLS-1$
+ IFileStore newPath = path.getChild(newText);
+ if (newPath.fetchInfo().exists()) {
+ return Messages.RemoteResourceBrowserWidget_3;
+ }
+ } else {
+ return Messages.RemoteResourceBrowserWidget_4;
+ }
+ return null;
+ }
+ });
+ fValidateJob.setDialog(dialog);
+ if (dialog.open() == Dialog.OK) {
+ userPath[0] = dialog.getValue();
+ }
+ }
+ });
+ if (userPath[0] != null) {
+ try {
+ IFileStore newPath = path.getChild(userPath[0]);
+ if (!progress.isCanceled()) {
+ newPath.mkdir(EFS.SHALLOW, progress.newChild(10));
+ name[0] = newPath.getName();
+ }
+ } catch (final CoreException e) {
+ Display.getDefault().syncExec(new Runnable() {
+ @Override
+ public void run() {
+ ErrorDialog.openError(getShell(), Messages.RemoteResourceBrowserWidget_New_Folder,
+ Messages.RemoteResourceBrowserWidget_Unable_to_create_new_folder,
+ e.getStatus());
+ }
+ });
+ }
+ }
+ }
+ };
+ getRunnableContext().run(true, true, runnable);
+ } catch (InvocationTargetException e) {
+ // Ignore, return null
+ } catch (InterruptedException e) {
+ // Ignore, return null
+ }
+ return name[0];
+ }
+
+ /**
+ * Determine the initial path for the browser. If the initial path is not
+ * supplied or does not exist on the remote machine, then the initial path
+ * will be the cwd.
+ *
+ * @param cwd
+ * @param initialPath
+ * @return initial path
+ */
+ private IPath findInitialPath(String cwd, String initialPath) {
+ if (initialPath != null) {
+ IPath path = RemoteServicesUtils.posixPath(initialPath);
+ if (!path.isAbsolute()) {
+ path = RemoteServicesUtils.posixPath(cwd).append(path);
+ }
+ if (fFileMgr.getResource(path.toString()).fetchInfo().exists()) {
+ return path;
+ }
+ }
+ return RemoteServicesUtils.posixPath(cwd);
+ }
+
+ /**
+ * Get the connection that was selected
+ *
+ * @return selected connection
+ */
+ public IRemoteConnection getConnection() {
+ return fConnection;
+ }
+
+ /**
+ * Get a resource that corresponds to the text field
+ *
+ * @return resource corresponding to the text field
+ * @since 1.1
+ */
+ public IFileStore getResource() {
+ if (fResource != null) {
+ if (!fResource.equals("") && getConnection() != null) { //$NON-NLS-1$
+ return getConnection().getService(IRemoteFileService.class).getResource(fResource);
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Get the resources that were selected.
+ *
+ * @return selected resources
+ */
+ public List<IFileStore> getResources() {
+ return fResources;
+ }
+
+ public IRunnableContext getRunnableContext() {
+ if (fRunnableContext == null) {
+ return new ProgressMonitorDialog(getShell());
+ }
+ return fRunnableContext;
+ }
+
+ private void notifySelectionChangedListeners(SelectionChangedEvent e) {
+ for (Object listener : fSelectionListeners.getListeners()) {
+ ((ISelectionChangedListener) listener).selectionChanged(e);
+ }
+ }
+
+ /**
+ * Remove a listener that will be notified when the selection is changed
+ *
+ * @param listener
+ * listener to remove
+ */
+ public void removeSelectionChangedListener(ISelectionChangedListener listener) {
+ fSelectionListeners.remove(listener);
+ }
+
+ /**
+ * Set the connection for the browser. The connection must support the IRemoteFileService service or this method will have no
+ * effect.
+ *
+ * @param connection
+ * connection that supports the IRemoteFileService service
+ */
+ public void setConnection(IRemoteConnection connection) {
+ if (connection.hasService(IRemoteFileService.class)) {
+ changeInput(connection);
+ if (fRemoteConnectionWidget != null) {
+ fRemoteConnectionWidget.setConnection(connection);
+ }
+ updateEnablement();
+ }
+ }
+
+ /**
+ * Set the initial path to start browsing. This will be set in the browser
+ * text field, and in a future version should expand the browser to this
+ * location if it exists.
+ *
+ * NOTE: This must be called *before* {@link #setConnection(IRemoteConnection)} to have any effect.
+ *
+ * @param path
+ */
+ public void setInitialPath(String path) {
+ fInitialPath = path;
+ updateEnablement();
+ }
+
+ /**
+ * Set the root directory for the browser. This will also update the text
+ * field with the path. If the path is null, the browser will be set to the initial state.
+ *
+ * @param path
+ * path of root directory or null
+ */
+ private void setRoot(String path) {
+ fResources.clear();
+ fRootPath = null;
+ if (path == null) {
+ fTreeViewer.setInput(null);
+ } else if (fFileMgr != null) {
+ IFileStore root = fFileMgr.getResource(path);
+ fTreeViewer.setInput(new DeferredFileStore(root, !fShowHidden));
+ fRemotePathText.setText(path);
+ fRemotePathText.setSelection(fRemotePathText.getText().length());
+ fResources.add(root);
+ fRootPath = RemoteServicesUtils.posixPath(path);
+ }
+ }
+
+ public void setRunnableContext(IRunnableContext context) {
+ fRunnableContext = context;
+ }
+
+ /**
+ * Set the fDialogTitle of the dialog.
+ *
+ * @param title
+ */
+ public void setTitle(String title) {
+ fDialogTitle = title;
+ if (fDialogTitle == null) {
+ fDialogTitle = ""; //$NON-NLS-1$
+ }
+ Shell shell = getShell();
+ if ((shell != null) && !shell.isDisposed()) {
+ shell.setText(fDialogTitle);
+ }
+ }
+
+ /**
+ * Set the type of browser. Can be either a file browser (allows selection
+ * of files only) or a directory browser (allows selection of directories only), or
+ * both files and directories.
+ */
+ public void setType() {
+ if ((fOptionFlags & DIRECTORY_BROWSER) == 0) {
+ fDialogLabel = Messages.RemoteResourceBrowser_fileLabel;
+ setTitle(Messages.RemoteResourceBrowser_fileTitle);
+ } else if ((fOptionFlags & FILE_BROWSER) == 0) {
+ fDialogLabel = Messages.RemoteResourceBrowser_directoryLabel;
+ setTitle(Messages.RemoteResourceBrowser_directoryTitle);
+ } else {
+ fDialogLabel = Messages.RemoteResourceBrowser_resourceLabel;
+ setTitle(Messages.RemoteResourceBrowser_resourceTitle);
+ }
+ }
+
+ private void updateEnablement() {
+ boolean upEnabled = false;
+ boolean newFolderEnabled = false;
+ boolean connectionOpen = fConnection != null && fConnection.isOpen();
+
+ if (connectionOpen) {
+ if (fResources.size() == 1) {
+ IFileStore store = fResources.get(0);
+ /*
+ * Assume that we have already called fetchInfo() on the file store, so this should
+ * effectively be a noop.
+ */
+ if (store.fetchInfo().isDirectory()) {
+ newFolderEnabled = true;
+ }
+ if (store.getParent() != null) {
+ upEnabled = true;
+ }
+ }
+ }
+
+ if (fUpButton != null) {
+ fUpButton.setEnabled(upEnabled);
+ }
+ if (fNewFolderButton != null) {
+ fNewFolderButton.setEnabled(newFolderEnabled);
+ }
+ if (fRemotePathText != null) {
+ fRemotePathText.setEnabled(connectionOpen);
+ }
+ if (fTreeViewer != null) {
+ fTreeViewer.getTree().setEnabled(connectionOpen);
+ }
+ if (fShowHiddenButton != null) {
+ fShowHiddenButton.setEnabled(connectionOpen);
+ }
+ }
+}
diff --git a/remote/pom.xml b/remote/pom.xml
index ae316c81dbe..e6e17f123c3 100644
--- a/remote/pom.xml
+++ b/remote/pom.xml
@@ -1,4 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2017, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
@@ -7,7 +17,7 @@
<parent>
<groupId>org.eclipse.cdt</groupId>
<artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
+ <version>10.7.0-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.cdt.remote-parent</artifactId>
diff --git a/terminal/.gitignore b/terminal/.gitignore
new file mode 100644
index 00000000000..0751d5c9ae4
--- /dev/null
+++ b/terminal/.gitignore
@@ -0,0 +1,17 @@
+# ignore various emacs droppings
+*~
+\#*\#
+
+# .
+workspace
+debug-workspace
+
+# Ignored throughout the whole tree
+bin/
+target/
+coverage/
+artifacts/
+/ManifestValidationResult.html
+
+# MacOSX
+.DS_Store
diff --git a/terminal/CONTRIBUTING b/terminal/CONTRIBUTING
new file mode 100644
index 00000000000..871327d9889
--- /dev/null
+++ b/terminal/CONTRIBUTING
@@ -0,0 +1,50 @@
+Contributing to Target Management Terminal
+==========================================
+
+Thanks for your interest in this project.
+
+Project description:
+--------------------
+
+The Target Management Terminal is a lightweight VT100 terminal implementation. The project provides a re-usable terminal widget,
+a set of predefined terminal connectors (i.e. SSH and local shell) and a view managing the terminal sessions.
+
+Developer resources:
+--------------------
+
+Source Repositories:
+
+You can use the code from these repositories to experiment, test, build, create patches, issue pull requests, etc. This project uses Gerrit Code Review; please see contributing via Gerrit (https://wiki.eclipse.org/Gerrit).
+
+tm/org.eclipse.tm.terminal - Target Management Terminal
+ Clone: https://git.eclipse.org/r/tm/org.eclipse.tm.terminal
+ Browse Repository: http://git.eclipse.org/c/tm/org.eclipse.tm.terminal.git
+ Review with Gerrit: https://git.eclipse.org/r/p/tm/org.eclipse.tm.terminal
+
+Contributor License Agreement:
+------------------------------
+
+Before your contribution can be accepted by the project, you need to create and electronically sign the Eclipse Foundation Contributor License Agreement (CLA).
+
+- http://www.eclipse.org/legal/CLA.php
+
+Contact:
+--------
+
+Contact the project developers via the project's "dev" list.
+
+- https://dev.eclipse.org/mailman/listinfo/tm-dev
+
+Search for bugs:
+----------------
+
+This project uses Bugzilla to track ongoing development and issues.
+
+- https://bugs.eclipse.org/bugs/buglist.cgi?bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&classification=Tools&component=Terminal&list_id=11564722&product=Target%20Management&query_format=advanced
+
+Create a new bug:
+-----------------
+
+Be sure to search for existing bugs before you create another one. Remember that contributions are always welcome!
+
+- https://bugs.eclipse.org/bugs/enter_bug.cgi?product=Target%20Management&component=Terminal
diff --git a/terminal/admin/findbugs-exclude.xml b/terminal/admin/findbugs-exclude.xml
new file mode 100644
index 00000000000..7e5962c7154
--- /dev/null
+++ b/terminal/admin/findbugs-exclude.xml
@@ -0,0 +1,101 @@
+<!--
+ Copyright (c) 2018 Red Hat and others.
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+ -->
+<FindBugsFilter>
+ <!-- Ignore all Terminal Tests -->
+ <Match>
+ <Package name="~org\.eclipse\.tm\.internal\.terminal\.test..*"/>
+ </Match>
+
+ <!-- Set maximum rank level to 16 -->
+ <Match>
+ <Rank value="17"/>
+ </Match>
+
+ <!-- Ignore all I18N Internationalization bugs -->
+ <Match>
+ <Bug category="I18N"/>
+ </Match>
+
+ <!-- Ignore all NM_SAME_SIMPLE_NAME_AS_SUPERCLASS or NM_SAME_SIMPLE_NAME_AS_INTERFACE violations -->
+ <Match>
+ <Bug pattern="NM_SAME_SIMPLE_NAME_AS_SUPERCLASS"/>
+ </Match>
+ <Match>
+ <Bug pattern="NM_SAME_SIMPLE_NAME_AS_INTERFACE"/>
+ </Match>
+
+ <!-- Ignore all SF_SWITCH_NO_DEFAULT violations -->
+ <Match>
+ <Bug pattern="SF_SWITCH_NO_DEFAULT"/>
+ </Match>
+
+ <!-- Ignore all serialization violations -->
+ <Match>
+ <Or>
+ <Bug pattern="SE_BAD_FIELD"/>
+ <Bug pattern="SE_BAD_FIELD_INNER_CLASS"/>
+ <Bug pattern="SE_COMPARATOR_SHOULD_BE_SERIALIZABLE"/>
+ </Or>
+ </Match>
+
+ <!-- Ignore all inner class should be static violations -->
+ <Match>
+ <Or>
+ <Bug pattern="SIC_INNER_SHOULD_BE_STATIC"/>
+ <Bug pattern="SIC_INNER_SHOULD_BE_STATIC_ANON"/>
+ <Bug pattern="SIC_INNER_SHOULD_BE_STATIC_NEEDS_THIS"/>
+ </Or>
+ </Match>
+
+ <!-- Ignore all REC_CATCH_EXCEPTION -->
+ <Match>
+ <Bug pattern="REC_CATCH_EXCEPTION"/>
+ </Match>
+
+ <!-- Ignore all STCAL_INVOKE_ON_STATIC_DATE_FORMAT_INSTANCE -->
+ <Match>
+ <Bug pattern="STCAL_INVOKE_ON_STATIC_DATE_FORMAT_INSTANCE"/>
+ </Match>
+
+ <!-- Ignore ES_COMPARING_PARAMETER_STRING_WITH_EQ -->
+ <Match>
+ <Bug pattern="ES_COMPARING_PARAMETER_STRING_WITH_EQ"/>
+ <Class name="org.eclipse.tm.terminal.view.ui.manager.ConsoleManager"/>
+ </Match>
+
+ <!-- Ignore all ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD violations in bundle activators -->
+ <Match>
+ <Bug pattern="ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD"/>
+ <Or>
+ <Method name="start" params="org.osgi.framework.BundleContext" returns="void"/>
+ <Method name="stop" params="org.osgi.framework.BundleContext" returns="void"/>
+ <Class name="~.*\.Activator"/>
+ <Class name="~.*\..*Plugin"/>
+ </Or>
+ </Match>
+
+ <!-- Ignore RV_RETURN_VALUE_IGNORED_BAD_PRACTICE -->
+ <Match>
+ <Bug pattern="RV_RETURN_VALUE_IGNORED_BAD_PRACTICE"/>
+ <Class name="org.eclipse.tm.terminal.connector.local.showin.ExternalExecutablesManager"/>
+ </Match>
+
+ <!-- Ignore RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE -->
+ <Match>
+ <Bug pattern="RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE"/>
+ </Match>
+
+ <!-- Ignore NP_LOAD_OF_KNOWN_NULL_VALUE -->
+ <Match>
+ <Bug pattern="NP_LOAD_OF_KNOWN_NULL_VALUE"/>
+ <Class name="org.eclipse.tm.terminal.connector.local.showin.ExternalExecutablesDialog"/>
+ </Match>
+
+</FindBugsFilter>
diff --git a/terminal/features/org.eclipse.tm.terminal.connector.cdtserial.feature/.project b/terminal/features/org.eclipse.tm.terminal.connector.cdtserial.feature/.project
new file mode 100644
index 00000000000..ea0d993407f
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.connector.cdtserial.feature/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.tm.terminal.connector.cdtserial.feature</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.pde.FeatureBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.FeatureNature</nature>
+ </natures>
+</projectDescription>
diff --git a/terminal/features/org.eclipse.tm.terminal.connector.cdtserial.feature/.settings/org.eclipse.core.resources.prefs b/terminal/features/org.eclipse.tm.terminal.connector.cdtserial.feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.connector.cdtserial.feature/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/terminal/features/org.eclipse.tm.terminal.connector.cdtserial.feature/about.ini b/terminal/features/org.eclipse.tm.terminal.connector.cdtserial.feature/about.ini
new file mode 100644
index 00000000000..e07a7bb377e
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.connector.cdtserial.feature/about.ini
@@ -0,0 +1,24 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%blurb
+
+# Property "windowImage" contains path to window icon (16x16)
+# needed for primary features only
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=cdt_logo_icon32.png
+
+# Property "aboutImage" contains path to product image (500x330 or 115x164)
+# needed for primary features only
+
+# Property "appName" contains name of the application (translated)
+# needed for primary features only
+
+# Property "welcomePerspective" contains the id of the perspective in which the
+# welcome page is to be opened.
+# optional
diff --git a/terminal/features/org.eclipse.tm.terminal.connector.cdtserial.feature/about.mappings b/terminal/features/org.eclipse.tm.terminal.connector.cdtserial.feature/about.mappings
new file mode 100644
index 00000000000..936a8039c3e
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.connector.cdtserial.feature/about.mappings
@@ -0,0 +1,9 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+# The following should contain the build version.
+# e.g. "0=20200106-1728"
+# This value will be added automatically via the build scripts
+0=${buildId}
diff --git a/terminal/features/org.eclipse.tm.terminal.connector.cdtserial.feature/about.properties b/terminal/features/org.eclipse.tm.terminal.connector.cdtserial.feature/about.properties
new file mode 100644
index 00000000000..dc26a55f1a8
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.connector.cdtserial.feature/about.properties
@@ -0,0 +1,32 @@
+###############################################################################
+# Copyright (c) 2018, 2022 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+# about.properties
+# contains externalized strings for about.ini
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# fill-ins are supplied by about.mappings
+# This file should be translated.
+# NOTE TO TRANSLATOR: Please do not translate the featureVersion variable.
+
+
+blurb=TM Terminal Serial Connector Extensions\n\
+\n\
+Version: {featureVersion}\n\
+Build id: {0}\n\
+\n\
+Copyright (c) 2018, 2022 Contributors to the Eclipse Foundation
+\n\
+See the NOTICE file(s) distributed with this work for additional\n\
+information regarding copyright ownership.\n\
+\n\
+Visit http://www.eclipse.org/cdt
diff --git a/terminal/features/org.eclipse.tm.terminal.connector.cdtserial.feature/build.properties b/terminal/features/org.eclipse.tm.terminal.connector.cdtserial.feature/build.properties
new file mode 100644
index 00000000000..89538a20b32
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.connector.cdtserial.feature/build.properties
@@ -0,0 +1,17 @@
+################################################################################
+# Copyright (c) 2006, 2018 Wind River Systems, Inc. and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# Contributors:
+# Michael Scharf (Wind River) - initial API and implementation
+# Uwe Stieber (Wind River) - Bug 434937 - Releng: The Terminal Features have an incorrect license
+################################################################################
+bin.includes = feature.xml,\
+ feature.properties,\
+ about.ini,\
+ about.mappings,\
+ about.properties,\
+ cdt_logo_icon32.png
diff --git a/terminal/features/org.eclipse.tm.terminal.connector.cdtserial.feature/cdt_logo_icon32.png b/terminal/features/org.eclipse.tm.terminal.connector.cdtserial.feature/cdt_logo_icon32.png
new file mode 100644
index 00000000000..470ca81b327
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.connector.cdtserial.feature/cdt_logo_icon32.png
Binary files differ
diff --git a/terminal/features/org.eclipse.tm.terminal.connector.cdtserial.feature/feature.properties b/terminal/features/org.eclipse.tm.terminal.connector.cdtserial.feature/feature.properties
new file mode 100644
index 00000000000..b1870332650
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.connector.cdtserial.feature/feature.properties
@@ -0,0 +1,38 @@
+###############################################################################
+# Copyright (c) 2017, 2018 QNX Software Systems and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# QNX Software Systems - Initial API and implementation
+###############################################################################
+# feature.properties
+# contains externalized strings for feature.xml
+# "%foo" in feature.xml corresponds to the key "foo" in this file
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file should be translated.
+
+# "featureName" property - name of the feature
+featureName=TM Terminal Serial Connector Extensions
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse CDT
+
+# "updateSiteName" property - label for the update site
+updateSiteName=TM Terminal 4.3 Updates
+
+# "description" property - description of the feature
+description=A serial line connector for the Terminal
+
+# "copyright" property - text of the "Feature Update Copyright"
+copyright=\
+Copyright (c) 2017 QNX Software Systems and others.\
+All rights reserved. This program and the accompanying materials\
+are made available under the terms of the Eclipse Public License 2.0\
+which accompanies this distribution, and is available at\
+https://www.eclipse.org/legal/epl-2.0/
+################ end of copyright property ####################################
diff --git a/terminal/features/org.eclipse.tm.terminal.connector.cdtserial.feature/feature.xml b/terminal/features/org.eclipse.tm.terminal.connector.cdtserial.feature/feature.xml
new file mode 100644
index 00000000000..d8a2e00b13f
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.connector.cdtserial.feature/feature.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2006, 2021 Wind River Systems, Inc. and others.
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+
+ Contributors:
+ Wind River - initial API and implementation
+ Uwe Stieber (Wind River) - Bug 434937 - Releng: The Terminal Features have an incorrect license
+ -->
+<feature
+ id="org.eclipse.tm.terminal.connector.cdtserial.feature"
+ label="%featureName"
+ version="10.7.0.qualifier"
+ provider-name="%providerName"
+ license-feature="org.eclipse.license"
+ license-feature-version="0.0.0">
+
+ <description>
+ %description
+ </description>
+
+ <copyright>
+ %copyright
+ </copyright>
+
+ <license url="%licenseURL">
+ %license
+ </license>
+
+ <plugin
+ id="org.eclipse.tm.terminal.connector.cdtserial"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+</feature>
diff --git a/terminal/features/org.eclipse.tm.terminal.connector.local.feature/.project b/terminal/features/org.eclipse.tm.terminal.connector.local.feature/.project
new file mode 100644
index 00000000000..2b177926011
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.connector.local.feature/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.tm.terminal.connector.local.feature</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.pde.FeatureBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.FeatureNature</nature>
+ </natures>
+</projectDescription>
diff --git a/terminal/features/org.eclipse.tm.terminal.connector.local.feature/.settings/org.eclipse.core.resources.prefs b/terminal/features/org.eclipse.tm.terminal.connector.local.feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.connector.local.feature/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/terminal/features/org.eclipse.tm.terminal.connector.local.feature/about.ini b/terminal/features/org.eclipse.tm.terminal.connector.local.feature/about.ini
new file mode 100644
index 00000000000..e07a7bb377e
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.connector.local.feature/about.ini
@@ -0,0 +1,24 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%blurb
+
+# Property "windowImage" contains path to window icon (16x16)
+# needed for primary features only
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=cdt_logo_icon32.png
+
+# Property "aboutImage" contains path to product image (500x330 or 115x164)
+# needed for primary features only
+
+# Property "appName" contains name of the application (translated)
+# needed for primary features only
+
+# Property "welcomePerspective" contains the id of the perspective in which the
+# welcome page is to be opened.
+# optional
diff --git a/terminal/features/org.eclipse.tm.terminal.connector.local.feature/about.mappings b/terminal/features/org.eclipse.tm.terminal.connector.local.feature/about.mappings
new file mode 100644
index 00000000000..936a8039c3e
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.connector.local.feature/about.mappings
@@ -0,0 +1,9 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+# The following should contain the build version.
+# e.g. "0=20200106-1728"
+# This value will be added automatically via the build scripts
+0=${buildId}
diff --git a/terminal/features/org.eclipse.tm.terminal.connector.local.feature/about.properties b/terminal/features/org.eclipse.tm.terminal.connector.local.feature/about.properties
new file mode 100644
index 00000000000..c5bc1bfa5a6
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.connector.local.feature/about.properties
@@ -0,0 +1,32 @@
+###############################################################################
+# Copyright (c) 2018, 2022 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+# about.properties
+# contains externalized strings for about.ini
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# fill-ins are supplied by about.mappings
+# This file should be translated.
+# NOTE TO TRANSLATOR: Please do not translate the featureVersion variable.
+
+
+blurb=TM Terminal Local Connector Extensions\n\
+\n\
+Version: {featureVersion}\n\
+Build id: {0}\n\
+\n\
+Copyright (c) 2018, 2022 Contributors to the Eclipse Foundation
+\n\
+See the NOTICE file(s) distributed with this work for additional\n\
+information regarding copyright ownership.\n\
+\n\
+Visit http://www.eclipse.org/cdt
diff --git a/terminal/features/org.eclipse.tm.terminal.connector.local.feature/build.properties b/terminal/features/org.eclipse.tm.terminal.connector.local.feature/build.properties
new file mode 100644
index 00000000000..89538a20b32
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.connector.local.feature/build.properties
@@ -0,0 +1,17 @@
+################################################################################
+# Copyright (c) 2006, 2018 Wind River Systems, Inc. and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# Contributors:
+# Michael Scharf (Wind River) - initial API and implementation
+# Uwe Stieber (Wind River) - Bug 434937 - Releng: The Terminal Features have an incorrect license
+################################################################################
+bin.includes = feature.xml,\
+ feature.properties,\
+ about.ini,\
+ about.mappings,\
+ about.properties,\
+ cdt_logo_icon32.png
diff --git a/terminal/features/org.eclipse.tm.terminal.connector.local.feature/cdt_logo_icon32.png b/terminal/features/org.eclipse.tm.terminal.connector.local.feature/cdt_logo_icon32.png
new file mode 100644
index 00000000000..470ca81b327
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.connector.local.feature/cdt_logo_icon32.png
Binary files differ
diff --git a/terminal/features/org.eclipse.tm.terminal.connector.local.feature/feature.properties b/terminal/features/org.eclipse.tm.terminal.connector.local.feature/feature.properties
new file mode 100644
index 00000000000..a4d0b296163
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.connector.local.feature/feature.properties
@@ -0,0 +1,38 @@
+###############################################################################
+# Copyright (c) 2006, 2018 Wind River Systems, Inc. and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Martin Oberhuber (Wind River) - initial API and implementation
+###############################################################################
+# feature.properties
+# contains externalized strings for feature.xml
+# "%foo" in feature.xml corresponds to the key "foo" in this file
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file should be translated.
+
+# "featureName" property - name of the feature
+featureName=TM Terminal Local Connector Extensions
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse CDT
+
+# "updateSiteName" property - label for the update site
+updateSiteName=TM Terminal 4.3 Updates
+
+# "description" property - description of the feature
+description=A connector implementation for the Local Terminal.
+
+# "copyright" property - text of the "Feature Update Copyright"
+copyright=\
+Copyright (c) 2003, 2017 Wind River Systems, Inc. and others.\n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License 2.0\n\
+which accompanies this distribution, and is available at\n\
+https://www.eclipse.org/legal/epl-2.0/
+################ end of copyright property ####################################
diff --git a/terminal/features/org.eclipse.tm.terminal.connector.local.feature/feature.xml b/terminal/features/org.eclipse.tm.terminal.connector.local.feature/feature.xml
new file mode 100644
index 00000000000..ca14b2c85b0
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.connector.local.feature/feature.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2015, 2021 Wind River Systems, Inc. and others.
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+
+ Contributors:
+ Wind River - initial API and implementation
+ -->
+<feature
+ id="org.eclipse.tm.terminal.connector.local.feature"
+ label="%featureName"
+ version="10.7.0.qualifier"
+ provider-name="%providerName"
+ license-feature="org.eclipse.license"
+ license-feature-version="0.0.0">
+
+ <description>
+ %description
+ </description>
+
+ <copyright>
+ %copyright
+ </copyright>
+
+ <license url="%licenseURL">
+ %license
+ </license>
+
+ <requires>
+ <import plugin="org.eclipse.core.expressions" version="3.4.400" match="greaterOrEqual"/>
+ <import plugin="org.eclipse.core.runtime" version="3.8.0" match="greaterOrEqual"/>
+ <import plugin="org.eclipse.core.variables" version="3.2.600" match="greaterOrEqual"/>
+ <import plugin="org.eclipse.tm.terminal.connector.process" version="4.5.0" match="greaterOrEqual"/>
+ <import plugin="org.eclipse.tm.terminal.control" version="4.5.0" match="greaterOrEqual"/>
+ <import plugin="org.eclipse.ui" version="3.8.0" match="greaterOrEqual"/>
+ <import feature="org.eclipse.tm.terminal.control.feature"/>
+ <import plugin="org.eclipse.cdt.core.native"/>
+ </requires>
+
+ <plugin
+ id="org.eclipse.tm.terminal.connector.local"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.tm.terminal.connector.process"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+</feature>
diff --git a/terminal/features/org.eclipse.tm.terminal.connector.local.feature/p2.inf b/terminal/features/org.eclipse.tm.terminal.connector.local.feature/p2.inf
new file mode 100644
index 00000000000..aa2b22ba1aa
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.connector.local.feature/p2.inf
@@ -0,0 +1,22 @@
+###############################################################################
+# Copyright (c) 2014, 2015 Wind River Systems, Inc. and others. All rights reserved.
+# This program and the accompanying materials are made available under the terms
+# of the Eclipse Public License 2.0 which accompanies this distribution, and is
+# available at https://www.eclipse.org/legal/epl-2.0/
+#
+# Contributors:
+# Wind River Systems - initial API and implementation
+###############################################################################
+
+# Make the org.eclipse.cdt.native feature dependency "optional" since it didn't
+# exist in CDT 8.3 and we can also work on top of CDT 8.3.
+
+# The real dependencies are all properly managed via p2.inf in the
+# org.eclipse.tm.terminal.connector.process/META-INF/p2.inf file.
+# The only benefit of requesting the feature here is that it allow pulling in
+# additional fragments that we are not aware of in the bundle's p2.inf.
+
+requires.0.namespace = org.eclipse.equinox.p2.iu
+requires.0.name = org.eclipse.cdt.native.feature.group
+requires.0.greedy = true
+requires.0.optional = true
diff --git a/terminal/features/org.eclipse.tm.terminal.connector.remote.feature/.project b/terminal/features/org.eclipse.tm.terminal.connector.remote.feature/.project
new file mode 100644
index 00000000000..678a8ee6245
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.connector.remote.feature/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.tm.terminal.connector.remote.feature</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.pde.FeatureBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.FeatureNature</nature>
+ </natures>
+</projectDescription>
diff --git a/terminal/features/org.eclipse.tm.terminal.connector.remote.feature/.settings/org.eclipse.core.resources.prefs b/terminal/features/org.eclipse.tm.terminal.connector.remote.feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.connector.remote.feature/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/terminal/features/org.eclipse.tm.terminal.connector.remote.feature/about.ini b/terminal/features/org.eclipse.tm.terminal.connector.remote.feature/about.ini
new file mode 100644
index 00000000000..e07a7bb377e
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.connector.remote.feature/about.ini
@@ -0,0 +1,24 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%blurb
+
+# Property "windowImage" contains path to window icon (16x16)
+# needed for primary features only
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=cdt_logo_icon32.png
+
+# Property "aboutImage" contains path to product image (500x330 or 115x164)
+# needed for primary features only
+
+# Property "appName" contains name of the application (translated)
+# needed for primary features only
+
+# Property "welcomePerspective" contains the id of the perspective in which the
+# welcome page is to be opened.
+# optional
diff --git a/terminal/features/org.eclipse.tm.terminal.connector.remote.feature/about.mappings b/terminal/features/org.eclipse.tm.terminal.connector.remote.feature/about.mappings
new file mode 100644
index 00000000000..936a8039c3e
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.connector.remote.feature/about.mappings
@@ -0,0 +1,9 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+# The following should contain the build version.
+# e.g. "0=20200106-1728"
+# This value will be added automatically via the build scripts
+0=${buildId}
diff --git a/terminal/features/org.eclipse.tm.terminal.connector.remote.feature/about.properties b/terminal/features/org.eclipse.tm.terminal.connector.remote.feature/about.properties
new file mode 100644
index 00000000000..fe144686d47
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.connector.remote.feature/about.properties
@@ -0,0 +1,32 @@
+###############################################################################
+# Copyright (c) 2018, 2022 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+# about.properties
+# contains externalized strings for about.ini
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# fill-ins are supplied by about.mappings
+# This file should be translated.
+# NOTE TO TRANSLATOR: Please do not translate the featureVersion variable.
+
+
+blurb=TM Terminal via Remote API Connector Extensions\n\
+\n\
+Version: {featureVersion}\n\
+Build id: {0}\n\
+\n\
+Copyright (c) 2018, 2022 Contributors to the Eclipse Foundation
+\n\
+See the NOTICE file(s) distributed with this work for additional\n\
+information regarding copyright ownership.\n\
+\n\
+Visit http://www.eclipse.org/cdt
diff --git a/terminal/features/org.eclipse.tm.terminal.connector.remote.feature/build.properties b/terminal/features/org.eclipse.tm.terminal.connector.remote.feature/build.properties
new file mode 100644
index 00000000000..c75cf36afb9
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.connector.remote.feature/build.properties
@@ -0,0 +1,15 @@
+###############################################################################
+# Copyright (c) 2015, 2018 IBM Corp. and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+bin.includes = feature.xml,\
+ feature.properties,\
+ about.ini,\
+ about.mappings,\
+ about.properties,\
+ cdt_logo_icon32.png
diff --git a/terminal/features/org.eclipse.tm.terminal.connector.remote.feature/cdt_logo_icon32.png b/terminal/features/org.eclipse.tm.terminal.connector.remote.feature/cdt_logo_icon32.png
new file mode 100644
index 00000000000..470ca81b327
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.connector.remote.feature/cdt_logo_icon32.png
Binary files differ
diff --git a/terminal/features/org.eclipse.tm.terminal.connector.remote.feature/feature.properties b/terminal/features/org.eclipse.tm.terminal.connector.remote.feature/feature.properties
new file mode 100644
index 00000000000..df3c320aef0
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.connector.remote.feature/feature.properties
@@ -0,0 +1,35 @@
+###############################################################################
+# Copyright (c) 2015, 2018 IBM Corporation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+# feature.properties
+# contains externalized strings for feature.xml
+# "%foo" in feature.xml corresponds to the key "foo" in this file
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file should be translated.
+
+# "featureName" property - name of the feature
+featureName=TM Terminal via Remote API Connector Extensions
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse CDT
+
+# "updateSiteName" property - label for the update site
+updateSiteName=TM Terminal 4.3 Updates
+
+# "description" property - description of the feature
+description=A Terminal Connector using the org.eclipse.remote API.
+
+# "copyright" property - text of the "Feature Update Copyright"
+copyright=\
+Copyright (c) 2015, 2017 IBM Corporation and others.\n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License 2.0\n\
+which accompanies this distribution, and is available at\n\
+https://www.eclipse.org/legal/epl-2.0/
+################ end of copyright property ####################################
diff --git a/terminal/features/org.eclipse.tm.terminal.connector.remote.feature/feature.xml b/terminal/features/org.eclipse.tm.terminal.connector.remote.feature/feature.xml
new file mode 100644
index 00000000000..ca395824cfd
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.connector.remote.feature/feature.xml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2015, 2021 IBM Corporation and others.
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+
+ Contributors:
+ IBM Corporation - initial API and implementation
+ -->
+<feature
+ id="org.eclipse.tm.terminal.connector.remote.feature"
+ label="%featureName"
+ version="10.7.0.qualifier"
+ provider-name="%providerName"
+ license-feature="org.eclipse.license"
+ license-feature-version="0.0.0">
+
+ <description>
+ %description
+ </description>
+
+ <copyright>
+ %copyright
+ </copyright>
+
+ <license url="%licenseURL">
+ %license
+ </license>
+
+ <requires>
+ <import plugin="org.eclipse.ui"/>
+ <import plugin="org.eclipse.core.runtime"/>
+ <import plugin="org.eclipse.tm.terminal.control"/>
+ <import plugin="org.eclipse.remote.core"/>
+ <import plugin="org.eclipse.remote.ui"/>
+ <import plugin="org.eclipse.core.resources"/>
+ <import plugin="org.eclipse.swt"/>
+ <import plugin="org.eclipse.jface"/>
+ <import plugin="org.eclipse.ui.ide"/>
+ <import feature="org.eclipse.tm.terminal.control.feature"/>
+ <import plugin="org.eclipse.core.expressions"/>
+ </requires>
+
+ <plugin
+ id="org.eclipse.tm.terminal.connector.remote"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+</feature>
diff --git a/terminal/features/org.eclipse.tm.terminal.connector.ssh.feature/.project b/terminal/features/org.eclipse.tm.terminal.connector.ssh.feature/.project
new file mode 100644
index 00000000000..c96f85db4dd
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.connector.ssh.feature/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.tm.terminal.connector.ssh.feature</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.pde.FeatureBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.FeatureNature</nature>
+ </natures>
+</projectDescription>
diff --git a/terminal/features/org.eclipse.tm.terminal.connector.ssh.feature/.settings/org.eclipse.core.resources.prefs b/terminal/features/org.eclipse.tm.terminal.connector.ssh.feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.connector.ssh.feature/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/terminal/features/org.eclipse.tm.terminal.connector.ssh.feature/about.html b/terminal/features/org.eclipse.tm.terminal.connector.ssh.feature/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.connector.ssh.feature/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/terminal/features/org.eclipse.tm.terminal.connector.ssh.feature/build.properties b/terminal/features/org.eclipse.tm.terminal.connector.ssh.feature/build.properties
new file mode 100644
index 00000000000..c3d7109be57
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.connector.ssh.feature/build.properties
@@ -0,0 +1,15 @@
+###############################################################################
+# Copyright (c) 2006, 2018 Wind River Systems, Inc. and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Michael Scharf (Wind River) - initial API and implementation
+# Uwe Stieber (Wind River) - Bug 434937 - Releng: The Terminal Features have an incorrect license
+###############################################################################
+bin.includes = feature.xml,\
+ feature.properties
diff --git a/terminal/features/org.eclipse.tm.terminal.connector.ssh.feature/feature.properties b/terminal/features/org.eclipse.tm.terminal.connector.ssh.feature/feature.properties
new file mode 100644
index 00000000000..bfc76976189
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.connector.ssh.feature/feature.properties
@@ -0,0 +1,38 @@
+###############################################################################
+# Copyright (c) 2006, 2018 Wind River Systems, Inc. and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Martin Oberhuber (Wind River) - initial API and implementation
+###############################################################################
+# feature.properties
+# contains externalized strings for feature.xml
+# "%foo" in feature.xml corresponds to the key "foo" in this file
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file should be translated.
+
+# "featureName" property - name of the feature
+featureName=TM Terminal SSH Connector Extensions
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse CDT
+
+# "updateSiteName" property - label for the update site
+updateSiteName=TM Terminal 4.3 Updates
+
+# "description" property - description of the feature
+description=An SSH connector implementation for the Terminal.
+
+# "copyright" property - text of the "Feature Update Copyright"
+copyright=\
+Copyright (c) 2000, 2017 Wind River Systems, Inc. and others.\n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License 2.0\n\
+which accompanies this distribution, and is available at\n\
+https://www.eclipse.org/legal/epl-2.0/
+################ end of copyright property ####################################
diff --git a/terminal/features/org.eclipse.tm.terminal.connector.ssh.feature/feature.xml b/terminal/features/org.eclipse.tm.terminal.connector.ssh.feature/feature.xml
new file mode 100644
index 00000000000..b59fd2f098c
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.connector.ssh.feature/feature.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2005, 2021 IBM Corporation and others.
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+
+ Contributors:
+ IBM Corporation - initial API and implementation
+ Uwe Stieber (Wind River) - Bug 434937 - Releng: The Terminal Features have an incorrect license
+ -->
+<feature
+ id="org.eclipse.tm.terminal.connector.ssh.feature"
+ label="%featureName"
+ version="10.7.0.qualifier"
+ provider-name="%providerName"
+ plugin="org.eclipse.tm.terminal.connector.ssh"
+ license-feature="org.eclipse.license"
+ license-feature-version="0.0.0">
+
+ <description>
+ %description
+ </description>
+
+ <copyright>
+ %copyright
+ </copyright>
+
+ <license url="%licenseURL">
+ %license
+ </license>
+
+ <requires>
+ <import plugin="org.eclipse.tm.terminal.control"/>
+ <import plugin="com.jcraft.jsch" version="0.1.31" match="compatible"/>
+ <import plugin="org.eclipse.jsch.core" version="1.0.0" match="compatible"/>
+ <import feature="org.eclipse.tm.terminal.control.feature"/>
+ <import plugin="org.eclipse.core.expressions" version="3.4.400" match="greaterOrEqual"/>
+ <import plugin="org.eclipse.core.runtime" version="3.8.0" match="greaterOrEqual"/>
+ <import plugin="org.eclipse.equinox.security" version="1.1.100" match="greaterOrEqual"/>
+ <import plugin="org.eclipse.ui" version="3.8.0" match="greaterOrEqual"/>
+ </requires>
+
+ <plugin
+ id="org.eclipse.tm.terminal.connector.ssh"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+</feature>
diff --git a/terminal/features/org.eclipse.tm.terminal.connector.telnet.feature/.project b/terminal/features/org.eclipse.tm.terminal.connector.telnet.feature/.project
new file mode 100644
index 00000000000..97df9e70ce7
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.connector.telnet.feature/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.tm.terminal.connector.telnet.feature</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.pde.FeatureBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.FeatureNature</nature>
+ </natures>
+</projectDescription>
diff --git a/terminal/features/org.eclipse.tm.terminal.connector.telnet.feature/.settings/org.eclipse.core.resources.prefs b/terminal/features/org.eclipse.tm.terminal.connector.telnet.feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.connector.telnet.feature/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/terminal/features/org.eclipse.tm.terminal.connector.telnet.feature/about.ini b/terminal/features/org.eclipse.tm.terminal.connector.telnet.feature/about.ini
new file mode 100644
index 00000000000..e07a7bb377e
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.connector.telnet.feature/about.ini
@@ -0,0 +1,24 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%blurb
+
+# Property "windowImage" contains path to window icon (16x16)
+# needed for primary features only
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=cdt_logo_icon32.png
+
+# Property "aboutImage" contains path to product image (500x330 or 115x164)
+# needed for primary features only
+
+# Property "appName" contains name of the application (translated)
+# needed for primary features only
+
+# Property "welcomePerspective" contains the id of the perspective in which the
+# welcome page is to be opened.
+# optional
diff --git a/terminal/features/org.eclipse.tm.terminal.connector.telnet.feature/about.mappings b/terminal/features/org.eclipse.tm.terminal.connector.telnet.feature/about.mappings
new file mode 100644
index 00000000000..936a8039c3e
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.connector.telnet.feature/about.mappings
@@ -0,0 +1,9 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+# The following should contain the build version.
+# e.g. "0=20200106-1728"
+# This value will be added automatically via the build scripts
+0=${buildId}
diff --git a/terminal/features/org.eclipse.tm.terminal.connector.telnet.feature/about.properties b/terminal/features/org.eclipse.tm.terminal.connector.telnet.feature/about.properties
new file mode 100644
index 00000000000..c4ca2b06b04
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.connector.telnet.feature/about.properties
@@ -0,0 +1,32 @@
+###############################################################################
+# Copyright (c) 2018, 2022 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+# about.properties
+# contains externalized strings for about.ini
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# fill-ins are supplied by about.mappings
+# This file should be translated.
+# NOTE TO TRANSLATOR: Please do not translate the featureVersion variable.
+
+
+blurb=TM Terminal Telnet Connector Extensions\n\
+\n\
+Version: {featureVersion}\n\
+Build id: {0}\n\
+\n\
+Copyright (c) 2018, 2022 Contributors to the Eclipse Foundation
+\n\
+See the NOTICE file(s) distributed with this work for additional\n\
+information regarding copyright ownership.\n\
+\n\
+Visit http://www.eclipse.org/cdt
diff --git a/terminal/features/org.eclipse.tm.terminal.connector.telnet.feature/build.properties b/terminal/features/org.eclipse.tm.terminal.connector.telnet.feature/build.properties
new file mode 100644
index 00000000000..89538a20b32
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.connector.telnet.feature/build.properties
@@ -0,0 +1,17 @@
+################################################################################
+# Copyright (c) 2006, 2018 Wind River Systems, Inc. and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# Contributors:
+# Michael Scharf (Wind River) - initial API and implementation
+# Uwe Stieber (Wind River) - Bug 434937 - Releng: The Terminal Features have an incorrect license
+################################################################################
+bin.includes = feature.xml,\
+ feature.properties,\
+ about.ini,\
+ about.mappings,\
+ about.properties,\
+ cdt_logo_icon32.png
diff --git a/terminal/features/org.eclipse.tm.terminal.connector.telnet.feature/cdt_logo_icon32.png b/terminal/features/org.eclipse.tm.terminal.connector.telnet.feature/cdt_logo_icon32.png
new file mode 100644
index 00000000000..470ca81b327
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.connector.telnet.feature/cdt_logo_icon32.png
Binary files differ
diff --git a/terminal/features/org.eclipse.tm.terminal.connector.telnet.feature/feature.properties b/terminal/features/org.eclipse.tm.terminal.connector.telnet.feature/feature.properties
new file mode 100644
index 00000000000..f34e2b07a4b
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.connector.telnet.feature/feature.properties
@@ -0,0 +1,38 @@
+###############################################################################
+# Copyright (c) 2006, 2018 Wind River Systems, Inc. and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Martin Oberhuber (Wind River) - initial API and implementation
+###############################################################################
+# feature.properties
+# contains externalized strings for feature.xml
+# "%foo" in feature.xml corresponds to the key "foo" in this file
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file should be translated.
+
+# "featureName" property - name of the feature
+featureName=TM Terminal Telnet Connector Extensions
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse CDT
+
+# "updateSiteName" property - label for the update site
+updateSiteName=TM Terminal 4.3 Updates
+
+# "description" property - description of the feature
+description=A Telnet connector implementation for the Terminal.
+
+# "copyright" property - text of the "Feature Update Copyright"
+copyright=\
+Copyright (c) 2003, 2017 Wind River Systems, Inc. and others.\n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License 2.0\n\
+which accompanies this distribution, and is available at\n\
+https://www.eclipse.org/legal/epl-2.0/
+################ end of copyright property ####################################
diff --git a/terminal/features/org.eclipse.tm.terminal.connector.telnet.feature/feature.xml b/terminal/features/org.eclipse.tm.terminal.connector.telnet.feature/feature.xml
new file mode 100644
index 00000000000..03515101544
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.connector.telnet.feature/feature.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2007, 2021 Wind River Systems, Inc. and others.
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+
+ Contributors:
+ Wind River - initial API and implementation
+ Uwe Stieber (Wind River) - Bug 434937 - Releng: The Terminal Features have an incorrect license
+ -->
+<feature
+ id="org.eclipse.tm.terminal.connector.telnet.feature"
+ label="%featureName"
+ version="10.7.0.qualifier"
+ provider-name="%providerName"
+ license-feature="org.eclipse.license"
+ license-feature-version="0.0.0">
+
+ <description>
+ %description
+ </description>
+
+ <copyright>
+ %copyright
+ </copyright>
+
+ <license url="%licenseURL">
+ %license
+ </license>
+
+ <requires>
+ <import plugin="org.eclipse.tm.terminal.control"/>
+ <import feature="org.eclipse.tm.terminal.control.feature"/>
+ <import plugin="org.eclipse.core.expressions" version="3.4.400" match="greaterOrEqual"/>
+ <import plugin="org.eclipse.core.runtime" version="3.8.0" match="greaterOrEqual"/>
+ <import plugin="org.eclipse.equinox.security" version="1.1.100" match="greaterOrEqual"/>
+ <import plugin="org.eclipse.ui" version="3.8.0" match="greaterOrEqual"/>
+ </requires>
+
+ <plugin
+ id="org.eclipse.tm.terminal.connector.telnet"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+</feature>
diff --git a/terminal/features/org.eclipse.tm.terminal.control.feature/.project b/terminal/features/org.eclipse.tm.terminal.control.feature/.project
new file mode 100644
index 00000000000..2002b5a3f20
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.control.feature/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.tm.terminal.control.feature</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.pde.FeatureBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.FeatureNature</nature>
+ </natures>
+</projectDescription>
diff --git a/terminal/features/org.eclipse.tm.terminal.control.feature/.settings/org.eclipse.core.resources.prefs b/terminal/features/org.eclipse.tm.terminal.control.feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.control.feature/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/terminal/features/org.eclipse.tm.terminal.control.feature/build.properties b/terminal/features/org.eclipse.tm.terminal.control.feature/build.properties
new file mode 100644
index 00000000000..865a10c6790
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.control.feature/build.properties
@@ -0,0 +1,13 @@
+################################################################################
+# Copyright (c) 2006, 2018 Wind River Systems, Inc. and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# Contributors:
+# Michael Scharf (Wind River) - initial API and implementation
+# Uwe Stieber (Wind River) - Bug 434937 - Releng: The Terminal Features have an incorrect license
+################################################################################
+bin.includes = feature.xml,\
+ feature.properties
diff --git a/terminal/features/org.eclipse.tm.terminal.control.feature/feature.properties b/terminal/features/org.eclipse.tm.terminal.control.feature/feature.properties
new file mode 100644
index 00000000000..d01e6686068
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.control.feature/feature.properties
@@ -0,0 +1,39 @@
+###############################################################################
+# Copyright (c) 2006, 2018 Wind River Systems, Inc. and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Martin Oberhuber (Wind River) - initial API and implementation
+###############################################################################
+# feature.properties
+# contains externalized strings for feature.xml
+# "%foo" in feature.xml corresponds to the key "foo" in this file
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file should be translated.
+
+# "featureName" property - name of the feature
+featureName=TM Terminal Control
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse CDT
+
+# "updateSiteName" property - label for the update site
+updateSiteName=TM Terminal 4.4 Updates
+
+# "description" property - description of the feature
+description=An ANSI (vt102) compatible Terminal widget \
+with RCP-only dependencies.
+
+# "copyright" property - text of the "Feature Update Copyright"
+copyright=\
+Copyright (c) 2003, 2018 Wind River Systems, Inc. and others.\n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License 2.0\n\
+which accompanies this distribution, and is available at\n\
+https://www.eclipse.org/legal/epl-2.0/
+################ end of copyright property ####################################
diff --git a/terminal/features/org.eclipse.tm.terminal.control.feature/feature.xml b/terminal/features/org.eclipse.tm.terminal.control.feature/feature.xml
new file mode 100644
index 00000000000..4ba3d83f468
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.control.feature/feature.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2006, 2021 Wind River Systems, Inc. and others.
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+
+ Contributors:
+ Wind River - initial API and implementation
+ Uwe Stieber (Wind River) - [282996] [terminal][api] Add "hidden" attribute to terminal connector extension point
+ Uwe Stieber (Wind River) - Bug 434937 - Releng: The Terminal Features have an incorrect license
+ -->
+<feature
+ id="org.eclipse.tm.terminal.control.feature"
+ label="%featureName"
+ version="10.7.0.qualifier"
+ provider-name="%providerName"
+ plugin="org.eclipse.tm.terminal.control"
+ license-feature="org.eclipse.license"
+ license-feature-version="0.0.0">
+
+ <description>
+ %description
+ </description>
+
+ <copyright>
+ %copyright
+ </copyright>
+
+ <license url="%licenseURL">
+ %license
+ </license>
+
+ <requires>
+ <import plugin="org.eclipse.core.runtime"/>
+ <import plugin="org.eclipse.ui"/>
+ </requires>
+
+ <plugin
+ id="org.eclipse.tm.terminal.control"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+</feature>
diff --git a/terminal/features/org.eclipse.tm.terminal.feature/.project b/terminal/features/org.eclipse.tm.terminal.feature/.project
new file mode 100644
index 00000000000..a456794a2fa
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.feature/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.tm.terminal.feature</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.pde.FeatureBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.FeatureNature</nature>
+ </natures>
+ <filteredResources>
+ <filter>
+ <id>1311579318584</id>
+ <name></name>
+ <type>10</type>
+ <matcher>
+ <id>org.eclipse.ui.ide.multiFilter</id>
+ <arguments>1.0-name-matches-false-false-target</arguments>
+ </matcher>
+ </filter>
+ </filteredResources>
+</projectDescription>
diff --git a/terminal/features/org.eclipse.tm.terminal.feature/.settings/org.eclipse.core.resources.prefs b/terminal/features/org.eclipse.tm.terminal.feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.feature/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/terminal/features/org.eclipse.tm.terminal.feature/build.properties b/terminal/features/org.eclipse.tm.terminal.feature/build.properties
new file mode 100644
index 00000000000..b801dc44f40
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.feature/build.properties
@@ -0,0 +1,15 @@
+###############################################################################
+# Copyright (c) 2012, 2018 Wind River Systems, Inc. and others. All rights reserved.
+# This program and the accompanying materials are made available under the terms
+# of the Eclipse Public License 2.0 which accompanies this distribution, and is
+# available at https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Wind River Systems - initial API and implementation
+###############################################################################
+bin.includes = feature.xml,\
+ feature.properties,\
+ p2.inf
+src.includes = feature.properties
diff --git a/terminal/features/org.eclipse.tm.terminal.feature/feature.properties b/terminal/features/org.eclipse.tm.terminal.feature/feature.properties
new file mode 100644
index 00000000000..149a3b3ac7e
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.feature/feature.properties
@@ -0,0 +1,40 @@
+##################################################################################
+# Copyright (c) 2015, 2018 Wind River Systems, Inc. and others. All rights reserved.
+# This program and the accompanying materials are made available under the terms
+# of the Eclipse Public License 2.0 which accompanies this distribution, and is
+# available at https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Wind River Systems - initial API and implementation
+##################################################################################
+# feature.properties
+# contains externalized strings for feature.xml
+# "%foo" in feature.xml corresponds to the key "foo" in this file
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file should be translated.
+
+# "featureName" property - name of the feature
+featureName=TM Terminal
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse CDT
+
+# "updateSiteName" property - label for the update site
+updateSiteName=TM Terminal 4.4 Updates
+
+# "description" property - description of the feature
+description=An integrated Eclipse View for the local command prompt (console) or \
+ remote hosts (SSH, Telnet, Serial). Works on Windows, Linux, Mac and Solaris. \
+ Requires Eclipse 3.8.2 or newer and a Java 6 or newer JRE.
+
+# "copyright" property - text of the "Feature Update Copyright"
+copyright=\
+Copyright (c) 2011 - 2018 Wind River Systems, Inc. and others.\n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License 2.0\n\
+which accompanies this distribution, and is available at\n\
+https://www.eclipse.org/legal/epl-2.0/
+
+################ end of copyright property ####################################
diff --git a/terminal/features/org.eclipse.tm.terminal.feature/feature.xml b/terminal/features/org.eclipse.tm.terminal.feature/feature.xml
new file mode 100644
index 00000000000..42c18ea4354
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.feature/feature.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2018, 2021 Red Hat and others.
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+ -->
+<feature
+ id="org.eclipse.tm.terminal.feature"
+ label="%featureName"
+ version="10.7.0.qualifier"
+ provider-name="%providerName"
+ plugin="org.eclipse.tm.terminal.view.core"
+ license-feature="org.eclipse.license"
+ license-feature-version="0.0.0">
+
+ <description>
+ %description
+ </description>
+
+ <copyright>
+ %copyright
+ </copyright>
+
+ <license url="%licenseURL">
+ %license
+ </license>
+
+ <requires>
+ <import feature="org.eclipse.tm.terminal.connector.local.feature"/>
+ <import feature="org.eclipse.tm.terminal.connector.ssh.feature"/>
+ <import feature="org.eclipse.tm.terminal.connector.telnet.feature"/>
+ <import feature="org.eclipse.tm.terminal.control.feature"/>
+ <import feature="org.eclipse.tm.terminal.view.feature"/>
+ </requires>
+
+</feature>
diff --git a/terminal/features/org.eclipse.tm.terminal.feature/p2.inf b/terminal/features/org.eclipse.tm.terminal.feature/p2.inf
new file mode 100644
index 00000000000..a6c5ff197fb
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.feature/p2.inf
@@ -0,0 +1,5 @@
+update.id=org.eclipse.tcf.te.terminals.feature.feature.group
+update.range=(0,$version$)
+provides.99.namespace=org.eclipse.equinox.p2.iu
+provides.99.name=org.eclipse.tcf.te.terminals.feature.feature.group
+provides.99.version=$version$
diff --git a/terminal/features/org.eclipse.tm.terminal.view.feature/.project b/terminal/features/org.eclipse.tm.terminal.view.feature/.project
new file mode 100644
index 00000000000..1320e7a6255
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.view.feature/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.tm.terminal.view.feature</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.pde.FeatureBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.FeatureNature</nature>
+ </natures>
+ <filteredResources>
+ <filter>
+ <id>1311579318584</id>
+ <name></name>
+ <type>10</type>
+ <matcher>
+ <id>org.eclipse.ui.ide.multiFilter</id>
+ <arguments>1.0-name-matches-false-false-target</arguments>
+ </matcher>
+ </filter>
+ </filteredResources>
+</projectDescription>
diff --git a/terminal/features/org.eclipse.tm.terminal.view.feature/.settings/org.eclipse.core.resources.prefs b/terminal/features/org.eclipse.tm.terminal.view.feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.view.feature/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/terminal/features/org.eclipse.tm.terminal.view.feature/build.properties b/terminal/features/org.eclipse.tm.terminal.view.feature/build.properties
new file mode 100644
index 00000000000..9ac7f804cc8
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.view.feature/build.properties
@@ -0,0 +1,14 @@
+###############################################################################
+# Copyright (c) 2012, 2018 Wind River Systems, Inc. and others. All rights reserved.
+# This program and the accompanying materials are made available under the terms
+# of the Eclipse Public License 2.0 which accompanies this distribution, and is
+# available at https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Wind River Systems - initial API and implementation
+###############################################################################
+bin.includes = feature.xml,\
+ feature.properties
+src.includes = feature.properties
diff --git a/terminal/features/org.eclipse.tm.terminal.view.feature/feature.properties b/terminal/features/org.eclipse.tm.terminal.view.feature/feature.properties
new file mode 100644
index 00000000000..ee849d2cbc3
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.view.feature/feature.properties
@@ -0,0 +1,40 @@
+##################################################################################
+# Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved.
+# This program and the accompanying materials are made available under the terms
+# of the Eclipse Public License 2.0 which accompanies this distribution, and is
+# available at https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Wind River Systems - initial API and implementation
+##################################################################################
+# feature.properties
+# contains externalized strings for feature.xml
+# "%foo" in feature.xml corresponds to the key "foo" in this file
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file should be translated.
+
+# "featureName" property - name of the feature
+featureName=Terminal (Console) View
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse CDT
+
+# "updateSiteName" property - label for the update site
+updateSiteName=TM Terminal 4.3 Updates
+
+# "description" property - description of the feature
+description=An integrated Eclipse View for the local command prompt (console) or \
+ remote hosts (SSH, Telnet, Serial). Works on Windows, Linux, Mac and Solaris. \
+ Requires Eclipse 3.8.2 or newer and a Java 6 or newer JRE.
+
+# "copyright" property - text of the "Feature Update Copyright"
+copyright=\
+Copyright (c) 2011 - 2016 Wind River Systems, Inc. and others.\n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License 2.0\n\
+which accompanies this distribution, and is available at\n\
+https://www.eclipse.org/legal/epl-2.0/
+
+################ end of copyright property ####################################
diff --git a/terminal/features/org.eclipse.tm.terminal.view.feature/feature.xml b/terminal/features/org.eclipse.tm.terminal.view.feature/feature.xml
new file mode 100644
index 00000000000..8c94506cfb4
--- /dev/null
+++ b/terminal/features/org.eclipse.tm.terminal.view.feature/feature.xml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2018, 2021 Red Hat and others.
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+ -->
+<feature
+ id="org.eclipse.tm.terminal.view.feature"
+ label="%featureName"
+ version="10.7.0.qualifier"
+ provider-name="%providerName"
+ plugin="org.eclipse.tm.terminal.view.ui"
+ license-feature="org.eclipse.license"
+ license-feature-version="0.0.0">
+
+ <description>
+ %description
+ </description>
+
+ <copyright>
+ %copyright
+ </copyright>
+
+ <license url="%licenseURL">
+ %license
+ </license>
+
+ <requires>
+ <import plugin="org.eclipse.core.expressions" version="3.4.400" match="greaterOrEqual"/>
+ <import plugin="org.eclipse.core.runtime" version="3.8.0" match="greaterOrEqual"/>
+ <import plugin="org.eclipse.ui" version="3.8.0" match="greaterOrEqual"/>
+ <import plugin="org.eclipse.core.variables" version="3.2.600" match="greaterOrEqual"/>
+ <import plugin="org.eclipse.tm.terminal.view.core" version="4.8.0" match="compatible"/>
+ <import plugin="org.eclipse.tm.terminal.control" version="5.2.0" match="compatible"/>
+ </requires>
+
+ <plugin
+ id="org.eclipse.tm.terminal.view.core"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.tm.terminal.view.ui"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+</feature>
diff --git a/terminal/features/pom.xml b/terminal/features/pom.xml
new file mode 100644
index 00000000000..a293ab1a116
--- /dev/null
+++ b/terminal/features/pom.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2018, 2021 Red Hat and others.
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+ -->
+
+<project
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+ xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.cdt</groupId>
+ <artifactId>terminal-parent</artifactId>
+ <version>10.7.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>org.eclipse.tm.terminal.features</artifactId>
+
+ <packaging>pom</packaging>
+
+ <modules>
+ <module>org.eclipse.tm.terminal.control.feature</module>
+
+ <module>org.eclipse.tm.terminal.connector.local.feature</module>
+ <module>org.eclipse.tm.terminal.connector.remote.feature</module>
+ <module>org.eclipse.tm.terminal.connector.ssh.feature</module>
+ <module>org.eclipse.tm.terminal.connector.telnet.feature</module>
+ <module>org.eclipse.tm.terminal.connector.cdtserial.feature</module>
+
+ <module>org.eclipse.tm.terminal.view.feature</module>
+
+ <module>org.eclipse.tm.terminal.feature</module>
+
+ </modules>
+
+</project>
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/.classpath b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/.classpath
new file mode 100644
index 00000000000..e801ebfb468
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/.gitignore b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/.gitignore
new file mode 100644
index 00000000000..ae3c1726048
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/.options b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/.options
new file mode 100644
index 00000000000..7a6120d0244
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/.options
@@ -0,0 +1,2 @@
+org.eclipse.tm.terminal.connector.serial/debugmode = 0
+org.eclipse.tm.terminal.connector.serial/trace/serialLinePanel = false
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/.project b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/.project
new file mode 100644
index 00000000000..4a564b77c17
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.tm.terminal.connector.cdtserial</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+ </natures>
+</projectDescription>
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/.settings/org.eclipse.core.resources.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/.settings/org.eclipse.jdt.core.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..e3a8104f9ca
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/.settings/org.eclipse.jdt.launching.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 00000000000..f8a131b56e0
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_COMPILER_COMPLIANCE_DOES_NOT_MATCH_JRE=warning
+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=warning
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/.settings/org.eclipse.jdt.ui.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/.settings/org.eclipse.pde.api.tools.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 00000000000..ec9fbf321d0
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,184 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITH_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_FIELD=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERCLASS_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_CHANGED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENTS=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETERS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Error
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Warning
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+MISSING_EE_DESCRIPTIONS=Warning
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=false
+changed_execution_env=Error
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+incompatible_api_component_version_report_major_without_breaking_change=Warning
+incompatible_api_component_version_report_minor_without_api_change=Warning
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/.settings/org.eclipse.pde.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/.settings/org.eclipse.pde.prefs
new file mode 100644
index 00000000000..d2dc703ba9e
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,35 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=2
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=2
+compilers.p.missing-version-export-package=2
+compilers.p.missing-version-import-package=2
+compilers.p.missing-version-require-bundle=2
+compilers.p.no-required-att=0
+compilers.p.no.automatic.module=1
+compilers.p.not-externalized-att=1
+compilers.p.service.component.without.lazyactivation=1
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/META-INF/MANIFEST.MF b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..a98aae820d3
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/META-INF/MANIFEST.MF
@@ -0,0 +1,24 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.tm.terminal.connector.cdtserial;singleton:=true
+Bundle-Version: 4.7.200.qualifier
+Bundle-Activator: org.eclipse.tm.terminal.connector.cdtserial.activator.Activator
+Bundle-Vendor: %providerName
+Require-Bundle: org.eclipse.core.expressions;bundle-version="3.4.400",
+ org.eclipse.core.runtime;bundle-version="3.8.0",
+ org.eclipse.equinox.security;bundle-version="1.1.100",
+ org.eclipse.tm.terminal.view.core;bundle-version="4.5.0";resolution:=optional,
+ org.eclipse.tm.terminal.view.ui;bundle-version="4.5.0";resolution:=optional,
+ org.eclipse.tm.terminal.control;bundle-version="4.5.0",
+ org.eclipse.ui;bundle-version="3.8.0",
+ org.eclipse.cdt.native.serial;bundle-version="1.0.0"
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Bundle-ActivationPolicy: lazy
+Bundle-Localization: plugin
+Export-Package: org.eclipse.tm.terminal.connector.cdtserial.activator;x-internal:=true,
+ org.eclipse.tm.terminal.connector.cdtserial.connector,
+ org.eclipse.tm.terminal.connector.cdtserial.controls,
+ org.eclipse.tm.terminal.connector.cdtserial.launcher,
+ org.eclipse.tm.terminal.connector.cdtserial.nls;x-internal:=true
+Automatic-Module-Name: org.eclipse.tm.terminal.connector.cdtserial
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/about.html b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/build.properties b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/build.properties
new file mode 100644
index 00000000000..4a9d09e7c1c
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/build.properties
@@ -0,0 +1,19 @@
+###############################################################################
+# Copyright (c) 2012, 2018 Wind River Systems, Inc. and others. All rights reserved.
+# This program and the accompanying materials are made available under the terms
+# of the Eclipse Public License 2.0 which accompanies this distribution, and is
+# available at https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Wind River Systems - initial API and implementation
+###############################################################################
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.properties,\
+ plugin.xml,\
+ about.html
+src.includes = about.html
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/plugin.properties b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/plugin.properties
new file mode 100644
index 00000000000..c50780efcfe
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/plugin.properties
@@ -0,0 +1,22 @@
+##################################################################################
+# Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved.
+# This program and the accompanying materials are made available under the terms
+# of the Eclipse Public License 2.0 which accompanies this distribution, and is
+# available at https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Wind River Systems - initial API and implementation
+##################################################################################
+
+pluginName = Terminal Serial Connector
+providerName = Eclipse CDT
+
+# ----- Terminal Launcher Delegates -----
+
+SerialLauncherDelegate.label=Serial Terminal
+
+# ----- Terminal Connectors -----
+
+SerialConnector.label = Serial
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/plugin.xml b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/plugin.xml
new file mode 100644
index 00000000000..583c143166c
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/plugin.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<!--
+ Copyright (c) 2018 Red Hat and others.
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+ -->
+
+<plugin>
+
+<!-- Terminal connector contributions -->
+ <extension point="org.eclipse.tm.terminal.control.connectors">
+ <connector
+ name="%SerialConnector.label"
+ id="org.eclipse.tm.terminal.connector.cdtserial.SerialConnector"
+ class="org.eclipse.tm.terminal.connector.cdtserial.connector.SerialConnector"/>
+ </extension>
+
+<!-- Terminal launcher delegate contributions -->
+ <extension point="org.eclipse.tm.terminal.view.ui.launcherDelegates">
+ <delegate
+ class="org.eclipse.tm.terminal.connector.cdtserial.launcher.SerialLauncherDelegate"
+ id="org.eclipse.tm.terminal.connector.cdtserial.launcher.serial"
+ label="%SerialLauncherDelegate.label">
+ </delegate>
+ </extension>
+
+</plugin>
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/activator/Activator.java b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/activator/Activator.java
new file mode 100644
index 00000000000..fd41fbe57bf
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/activator/Activator.java
@@ -0,0 +1,122 @@
+/*******************************************************************************
+ * Copyright (c) 2017, 2018 QNX Software Systems and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.cdtserial.activator;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.resource.ImageRegistry;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.tm.terminal.view.core.tracing.TraceHandler;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+ // The shared instance
+ private static Activator plugin;
+ // The trace handler instance
+ private static volatile TraceHandler traceHandler;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+ /**
+ * Convenience method which returns the unique identifier of this plugin.
+ */
+ public static String getUniqueIdentifier() {
+ if (getDefault() != null && getDefault().getBundle() != null) {
+ return getDefault().getBundle().getSymbolicName();
+ }
+ return "org.eclipse.tm.terminal.connector.serial"; //$NON-NLS-1$
+ }
+
+ /**
+ * Returns the bundles trace handler.
+ *
+ * @return The bundles trace handler.
+ */
+ public static TraceHandler getTraceHandler() {
+ if (traceHandler == null) {
+ traceHandler = new TraceHandler(getUniqueIdentifier());
+ }
+ return traceHandler;
+ }
+
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ @Override
+ protected void initializeImageRegistry(ImageRegistry registry) {
+ }
+
+ /**
+ * Loads the image registered under the specified key from the image
+ * registry and returns the <code>Image</code> object instance.
+ *
+ * @param key The key the image is registered with.
+ * @return The <code>Image</code> object instance or <code>null</code>.
+ */
+ public static Image getImage(String key) {
+ return getDefault().getImageRegistry().get(key);
+ }
+
+ /**
+ * Loads the image registered under the specified key from the image
+ * registry and returns the <code>ImageDescriptor</code> object instance.
+ *
+ * @param key The key the image is registered with.
+ * @return The <code>ImageDescriptor</code> object instance or <code>null</code>.
+ */
+ public static ImageDescriptor getImageDescriptor(String key) {
+ return getDefault().getImageRegistry().getDescriptor(key);
+ }
+
+ public static void log(IStatus status) {
+ plugin.getLog().log(status);
+ }
+
+ public static void log(Exception exception) {
+ if (exception instanceof CoreException) {
+ log(((CoreException) exception).getStatus());
+ } else {
+ log(new Status(IStatus.ERROR, plugin.getBundle().getSymbolicName(), exception.getLocalizedMessage(),
+ exception));
+ }
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/connector/SerialConnector.java b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/connector/SerialConnector.java
new file mode 100644
index 00000000000..7d9abe5b54d
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/connector/SerialConnector.java
@@ -0,0 +1,130 @@
+/*******************************************************************************
+ * Copyright (c) 2017, 2018 QNX Software Systems and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.cdtserial.connector;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.eclipse.cdt.serial.SerialPort;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.tm.internal.terminal.provisional.api.ISettingsStore;
+import org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl;
+import org.eclipse.tm.internal.terminal.provisional.api.TerminalState;
+import org.eclipse.tm.internal.terminal.provisional.api.provider.TerminalConnectorImpl;
+import org.eclipse.tm.terminal.connector.cdtserial.activator.Activator;
+import org.eclipse.tm.terminal.connector.cdtserial.nls.Messages;
+
+public class SerialConnector extends TerminalConnectorImpl {
+
+ private SerialSettings settings = new SerialSettings();
+ SerialPort serialPort;
+
+ private static Set<String> openPorts = new HashSet<>();
+
+ public static boolean isOpen(String portName) {
+ return openPorts.contains(portName);
+ }
+
+ @Override
+ public OutputStream getTerminalToRemoteStream() {
+ return serialPort.getOutputStream();
+ }
+
+ public SerialSettings getSettings() {
+ return settings;
+ }
+
+ public SerialPort getSerialPort() {
+ return serialPort;
+ }
+
+ @Override
+ public String getSettingsSummary() {
+ return settings.getSummary();
+ }
+
+ @Override
+ public void load(ISettingsStore store) {
+ settings.load(store);
+ }
+
+ @Override
+ public void save(ISettingsStore store) {
+ settings.save(store);
+ }
+
+ @Override
+ public void connect(ITerminalControl control) {
+ super.connect(control);
+ control.setState(TerminalState.CONNECTING);
+
+ serialPort = new SerialPort(settings.getPortName());
+ try {
+ serialPort.setBaudRateValue(settings.getBaudRateValue());
+ serialPort.setByteSize(settings.getByteSize());
+ serialPort.setParity(settings.getParity());
+ serialPort.setStopBits(settings.getStopBits());
+ serialPort.open();
+ } catch (IOException e) {
+ Activator.log(e);
+ String error = NLS.bind(Messages.SerialConnector_FailedToOpen, settings.getPortName(),
+ e.getLocalizedMessage());
+ try {
+ control.getRemoteToTerminalOutputStream().write(error.getBytes());
+ } catch (IOException e1) {
+ Activator.log(e);
+ }
+ control.setState(TerminalState.CLOSED);
+ return;
+ }
+
+ openPorts.add(serialPort.getPortName());
+
+ new Thread() {
+ @Override
+ public void run() {
+ InputStream targetIn = serialPort.getInputStream();
+ byte[] buff = new byte[256];
+ int n;
+ try {
+ while ((n = targetIn.read(buff, 0, buff.length)) >= 0) {
+ if (n != 0) {
+ control.getRemoteToTerminalOutputStream().write(buff, 0, n);
+ }
+ }
+ disconnect();
+ } catch (IOException e) {
+ Activator.log(e);
+ }
+ }
+ }.start();
+ control.setState(TerminalState.CONNECTED);
+ }
+
+ @Override
+ protected void doDisconnect() {
+ if (serialPort != null && serialPort.isOpen()) {
+ openPorts.remove(serialPort.getPortName());
+ try {
+ serialPort.close();
+ } catch (IOException e) {
+ Activator.log(e);
+ }
+ }
+ serialPort = null;
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/connector/SerialSettings.java b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/connector/SerialSettings.java
new file mode 100644
index 00000000000..f0eddbaf885
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/connector/SerialSettings.java
@@ -0,0 +1,169 @@
+/*******************************************************************************
+ * Copyright (c) 2017, 2018 QNX Software Systems and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.cdtserial.connector;
+
+import org.eclipse.cdt.serial.BaudRate;
+import org.eclipse.cdt.serial.ByteSize;
+import org.eclipse.cdt.serial.Parity;
+import org.eclipse.cdt.serial.StandardBaudRates;
+import org.eclipse.cdt.serial.StopBits;
+import org.eclipse.tm.internal.terminal.provisional.api.ISettingsStore;
+
+public class SerialSettings {
+
+ public static final String PORT_NAME_ATTR = "cdtserial.portName"; //$NON-NLS-1$
+ public static final String BAUD_RATE_ATTR = "cdtserial.baudRate"; //$NON-NLS-1$
+ public static final String BYTE_SIZE_ATTR = "cdtserial.byteSize"; //$NON-NLS-1$
+ public static final String PARITY_ATTR = "cdtserial.parity"; //$NON-NLS-1$
+ public static final String STOP_BITS_ATTR = "cdtserial.stopBits"; //$NON-NLS-1$
+
+ private String portName;
+ private int baudRate;
+ private ByteSize byteSize;
+ private Parity parity;
+ private StopBits stopBits;
+
+ /**
+ * Load information into the RemoteSettings object.
+ */
+ public void load(ISettingsStore store) {
+ portName = store.get(PORT_NAME_ATTR, ""); //$NON-NLS-1$
+
+ String baudRateStr = store.get(BAUD_RATE_ATTR, ""); //$NON-NLS-1$
+ baudRate = 0;
+ try {
+ baudRate = Integer.parseInt(baudRateStr);
+ } catch (NumberFormatException e) {
+ }
+ if (baudRate <= 0) {
+ baudRate = StandardBaudRates.getDefault();
+ }
+
+ String byteSizeStr = store.get(BYTE_SIZE_ATTR, ""); //$NON-NLS-1$
+ if (byteSizeStr.isEmpty()) {
+ byteSize = ByteSize.getDefault();
+ } else {
+ String[] sizes = ByteSize.getStrings();
+ for (int i = 0; i < sizes.length; ++i) {
+ if (byteSizeStr.equals(sizes[i])) {
+ byteSize = ByteSize.fromStringIndex(i);
+ break;
+ }
+ }
+ }
+
+ String parityStr = store.get(PARITY_ATTR, ""); //$NON-NLS-1$
+ if (parityStr.isEmpty()) {
+ parity = Parity.getDefault();
+ } else {
+ String[] parities = Parity.getStrings();
+ for (int i = 0; i < parities.length; ++i) {
+ if (parityStr.equals(parities[i])) {
+ parity = Parity.fromStringIndex(i);
+ break;
+ }
+ }
+ }
+
+ String stopBitsStr = store.get(STOP_BITS_ATTR, ""); //$NON-NLS-1$
+ if (stopBitsStr.isEmpty()) {
+ stopBits = StopBits.getDefault();
+ } else {
+ String[] bits = StopBits.getStrings();
+ for (int i = 0; i < bits.length; ++i) {
+ if (stopBitsStr.equals(bits[i])) {
+ stopBits = StopBits.fromStringIndex(i);
+ break;
+ }
+ }
+ }
+ }
+
+ /**
+ * Extract information from the RemoteSettings object.
+ */
+ public void save(ISettingsStore store) {
+ store.put(PORT_NAME_ATTR, portName);
+ store.put(BAUD_RATE_ATTR, Integer.toString(baudRate));
+ store.put(BYTE_SIZE_ATTR, ByteSize.getStrings()[ByteSize.getStringIndex(byteSize)]);
+ store.put(PARITY_ATTR, Parity.getStrings()[Parity.getStringIndex(parity)]);
+ store.put(STOP_BITS_ATTR, StopBits.getStrings()[StopBits.getStringIndex(stopBits)]);
+ }
+
+ public String getPortName() {
+ return portName;
+ }
+
+ public void setPortName(String portName) {
+ this.portName = portName;
+ }
+
+ /**
+ * @deprecated Use {@link #getBaudRateValue()}
+ */
+ @Deprecated
+ public BaudRate getBaudRate() {
+ return BaudRate.getClosest(baudRate);
+ }
+
+ /**
+ * @since 4.7
+ */
+ public int getBaudRateValue() {
+ return baudRate;
+ }
+
+ /**
+ * @deprecated Use {@link #setBaudRate(int)}
+ */
+ @Deprecated
+ public void setBaudRate(BaudRate baudRate) {
+ this.baudRate = baudRate.getRate();
+ }
+
+ /**
+ * @since 4.7
+ */
+ public void setBaudRateValue(int baudRate) {
+ this.baudRate = baudRate;
+ }
+
+ public ByteSize getByteSize() {
+ return byteSize;
+ }
+
+ public void setByteSize(ByteSize byteSize) {
+ this.byteSize = byteSize;
+ }
+
+ public Parity getParity() {
+ return parity;
+ }
+
+ public void setParity(Parity parity) {
+ this.parity = parity;
+ }
+
+ public StopBits getStopBits() {
+ return stopBits;
+ }
+
+ public void setStopBits(StopBits stopBits) {
+ this.stopBits = stopBits;
+ }
+
+ public String getSummary() {
+ return portName;
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/controls/SerialConfigPanel.java b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/controls/SerialConfigPanel.java
new file mode 100644
index 00000000000..ff48f7787e6
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/controls/SerialConfigPanel.java
@@ -0,0 +1,112 @@
+/*******************************************************************************
+ * Copyright (c) 2017, 2018 QNX Software Systems and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.cdtserial.controls;
+
+import java.util.Map;
+
+import org.eclipse.cdt.serial.ByteSize;
+import org.eclipse.cdt.serial.Parity;
+import org.eclipse.cdt.serial.StopBits;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.tm.terminal.connector.cdtserial.connector.SerialConnector;
+import org.eclipse.tm.terminal.connector.cdtserial.connector.SerialSettings;
+import org.eclipse.tm.terminal.view.core.interfaces.constants.ITerminalsConnectorConstants;
+import org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanelContainer;
+import org.eclipse.tm.terminal.view.ui.panels.AbstractExtendedConfigurationPanel;
+
+public class SerialConfigPanel extends AbstractExtendedConfigurationPanel {
+
+ private SerialSettings settings;
+ private SerialSettingsPage page;
+
+ public SerialConfigPanel(IConfigurationPanelContainer container) {
+ super(container);
+ }
+
+ @Override
+ public void setupPanel(Composite parent) {
+ Composite panel = new Composite(parent, SWT.NONE);
+ panel.setLayout(new GridLayout());
+ GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);
+ panel.setLayoutData(data);
+
+ SerialConnector connector = new SerialConnector();
+ settings = connector.getSettings();
+ page = new SerialSettingsPage(settings, this);
+ page.createControl(panel);
+
+ createEncodingUI(panel, true);
+
+ setControl(panel);
+ }
+
+ @Override
+ public void extractData(Map<String, Object> data) {
+ if (data == null) {
+ return;
+ }
+
+ page.saveSettings();
+ data.put(SerialSettings.PORT_NAME_ATTR, settings.getPortName());
+ data.put(SerialSettings.BAUD_RATE_ATTR, settings.getBaudRateValue());
+ data.put(SerialSettings.BYTE_SIZE_ATTR, settings.getByteSize());
+ data.put(SerialSettings.PARITY_ATTR, settings.getParity());
+ data.put(SerialSettings.STOP_BITS_ATTR, settings.getStopBits());
+
+ if (getEncoding() != null) {
+ data.put(ITerminalsConnectorConstants.PROP_ENCODING, getEncoding());
+ }
+ }
+
+ @Override
+ public void setupData(Map<String, Object> data) {
+ if (data == null) {
+ return;
+ }
+
+ settings.setPortName((String) data.get(SerialSettings.PORT_NAME_ATTR));
+ Object object = data.get(SerialSettings.BAUD_RATE_ATTR);
+ if (object != null) {
+ settings.setBaudRateValue((int) object);
+ }
+ settings.setByteSize((ByteSize) data.get(SerialSettings.BYTE_SIZE_ATTR));
+ settings.setParity((Parity) data.get(SerialSettings.PARITY_ATTR));
+ settings.setStopBits((StopBits) data.get(SerialSettings.STOP_BITS_ATTR));
+
+ String encoding = (String) data.get(ITerminalsConnectorConstants.PROP_ENCODING);
+ if (encoding != null) {
+ setEncoding(encoding);
+ }
+ }
+
+ @Override
+ protected void saveSettingsForHost(boolean add) {
+ }
+
+ @Override
+ protected void fillSettingsForHost(String host) {
+ }
+
+ @Override
+ protected String getHostFromSettings() {
+ if (page != null) {
+ page.saveSettings();
+ return settings.getPortName();
+ }
+ return null;
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/controls/SerialSettingsPage.java b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/controls/SerialSettingsPage.java
new file mode 100644
index 00000000000..1e3972bb153
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/controls/SerialSettingsPage.java
@@ -0,0 +1,267 @@
+/*******************************************************************************
+ * Copyright (c) 2017, 2018 QNX Software Systems and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.cdtserial.controls;
+
+import java.io.IOException;
+
+import org.eclipse.cdt.serial.ByteSize;
+import org.eclipse.cdt.serial.Parity;
+import org.eclipse.cdt.serial.SerialPort;
+import org.eclipse.cdt.serial.StandardBaudRates;
+import org.eclipse.cdt.serial.StopBits;
+import org.eclipse.jface.dialogs.DialogSettings;
+import org.eclipse.jface.dialogs.IDialogSettings;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.tm.internal.terminal.provisional.api.AbstractSettingsPage;
+import org.eclipse.tm.terminal.connector.cdtserial.activator.Activator;
+import org.eclipse.tm.terminal.connector.cdtserial.connector.SerialConnector;
+import org.eclipse.tm.terminal.connector.cdtserial.connector.SerialSettings;
+import org.eclipse.tm.terminal.connector.cdtserial.nls.Messages;
+import org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanel;
+import org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanelContainer;
+
+public class SerialSettingsPage extends AbstractSettingsPage {
+
+ private final SerialSettings settings;
+ private final IConfigurationPanel panel;
+ private final IDialogSettings dialogSettings;
+
+ private Combo portCombo;
+ private Combo baudRateCombo;
+ private Combo byteSizeCombo;
+ private Combo parityCombo;
+ private Combo stopBitsCombo;
+
+ private String portName;
+ private int baudRate;
+ private ByteSize byteSize;
+ private Parity parity;
+ private StopBits stopBits;
+
+ public SerialSettingsPage(SerialSettings settings, IConfigurationPanel panel) {
+ this.settings = settings;
+ this.panel = panel;
+ setHasControlDecoration(true);
+
+ dialogSettings = DialogSettings.getOrCreateSection(Activator.getDefault().getDialogSettings(),
+ this.getClass().getSimpleName());
+ portName = dialogSettings.get(SerialSettings.PORT_NAME_ATTR);
+
+ String baudRateStr = dialogSettings.get(SerialSettings.BAUD_RATE_ATTR);
+ if (baudRateStr != null && !baudRateStr.isEmpty()) {
+ try {
+ baudRate = Integer.parseInt(baudRateStr);
+ } catch (NumberFormatException e) {
+ }
+ }
+ if (baudRate <= 0) {
+ baudRate = StandardBaudRates.getDefault();
+ }
+
+ String byteSizeStr = dialogSettings.get(SerialSettings.BYTE_SIZE_ATTR);
+ if (byteSizeStr == null || byteSizeStr.isEmpty()) {
+ byteSize = ByteSize.getDefault();
+ } else {
+ String[] sizes = ByteSize.getStrings();
+ for (int i = 0; i < sizes.length; ++i) {
+ if (byteSizeStr.equals(sizes[i])) {
+ byteSize = ByteSize.fromStringIndex(i);
+ break;
+ }
+ }
+ }
+
+ String parityStr = dialogSettings.get(SerialSettings.PARITY_ATTR);
+ if (parityStr == null || parityStr.isEmpty()) {
+ parity = Parity.getDefault();
+ } else {
+ String[] parities = Parity.getStrings();
+ for (int i = 0; i < parities.length; ++i) {
+ if (parityStr.equals(parities[i])) {
+ parity = Parity.fromStringIndex(i);
+ break;
+ }
+ }
+ }
+
+ String stopBitsStr = dialogSettings.get(SerialSettings.STOP_BITS_ATTR);
+ if (stopBitsStr == null || stopBitsStr.isEmpty()) {
+ stopBits = StopBits.getDefault();
+ } else {
+ String[] bits = StopBits.getStrings();
+ for (int i = 0; i < bits.length; ++i) {
+ if (stopBitsStr.equals(bits[i])) {
+ stopBits = StopBits.fromStringIndex(i);
+ break;
+ }
+ }
+ }
+ }
+
+ @Override
+ public void createControl(Composite parent) {
+ Composite comp = new Composite(parent, SWT.NONE);
+ GridLayout gridLayout = new GridLayout(2, false);
+ gridLayout.marginWidth = gridLayout.marginHeight = 0;
+ GridData gridData = new GridData(GridData.FILL_HORIZONTAL);
+ comp.setLayout(gridLayout);
+ comp.setLayoutData(gridData);
+
+ Label portLabel = new Label(comp, SWT.NONE);
+ portLabel.setText(Messages.SerialTerminalSettingsPage_SerialPort);
+
+ portCombo = new Combo(comp, SWT.NONE);
+ portCombo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ String[] portNames = new String[0];
+ try {
+ portNames = SerialPort.list();
+ } catch (IOException e) {
+ Activator.log(e);
+ }
+ for (String portName : portNames) {
+ if (!SerialConnector.isOpen(portName)) {
+ portCombo.add(portName);
+ }
+ }
+ portCombo.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ validate();
+ }
+ });
+
+ Label baudRateLabel = new Label(comp, SWT.NONE);
+ baudRateLabel.setText(Messages.SerialTerminalSettingsPage_BaudRate);
+
+ baudRateCombo = new Combo(comp, SWT.DROP_DOWN);
+ baudRateCombo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ baudRateCombo.setItems(StandardBaudRates.asStringArray());
+
+ Label byteSizeLabel = new Label(comp, SWT.NONE);
+ byteSizeLabel.setText(Messages.SerialTerminalSettingsPage_DataSize);
+
+ byteSizeCombo = new Combo(comp, SWT.READ_ONLY);
+ byteSizeCombo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ for (String byteSizeStr : ByteSize.getStrings()) {
+ byteSizeCombo.add(byteSizeStr);
+ }
+
+ Label parityLabel = new Label(comp, SWT.NONE);
+ parityLabel.setText(Messages.SerialTerminalSettingsPage_Parity);
+
+ parityCombo = new Combo(comp, SWT.READ_ONLY);
+ parityCombo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ for (String parityStr : Parity.getStrings()) {
+ parityCombo.add(parityStr);
+ }
+
+ Label stopBitsLabel = new Label(comp, SWT.NONE);
+ stopBitsLabel.setText(Messages.SerialTerminalSettingsPage_StopBits);
+
+ stopBitsCombo = new Combo(comp, SWT.READ_ONLY);
+ stopBitsCombo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ for (String stopBitsStr : StopBits.getStrings()) {
+ stopBitsCombo.add(stopBitsStr);
+ }
+
+ loadSettings();
+ }
+
+ void validate() {
+ IConfigurationPanelContainer container = panel.getContainer();
+ container.validate();
+ }
+
+ @Override
+ public void loadSettings() {
+ String portName = settings.getPortName();
+ if (portName == null || portName.isEmpty()) {
+ portName = this.portName;
+ }
+ if (portName != null && !portName.isEmpty() && !SerialConnector.isOpen(portName)) {
+ int i = 0;
+ for (String name : portCombo.getItems()) {
+ if (portName.equals(name)) {
+ portCombo.select(i);
+ break;
+ }
+ i++;
+ }
+ } else if (portCombo.getItemCount() > 0) {
+ portCombo.select(0);
+ }
+
+ int baudRate = settings.getBaudRateValue();
+ if (baudRate <= 0) {
+ baudRate = this.baudRate;
+ }
+ baudRateCombo.setText(Integer.toString(baudRate));
+
+ ByteSize byteSize = settings.getByteSize();
+ if (byteSize == null) {
+ byteSize = this.byteSize;
+ }
+ byteSizeCombo.select(ByteSize.getStringIndex(byteSize));
+
+ Parity parity = settings.getParity();
+ if (parity == null) {
+ parity = this.parity;
+ }
+ parityCombo.select(Parity.getStringIndex(parity));
+
+ StopBits stopBits = settings.getStopBits();
+ if (stopBits == null) {
+ stopBits = this.stopBits;
+ }
+ stopBitsCombo.select(StopBits.getStringIndex(stopBits));
+ }
+
+ @Override
+ public void saveSettings() {
+ settings.setPortName(portCombo.getText());
+ int baudRateValue = 0;
+ try {
+ baudRateValue = Integer.parseInt(baudRateCombo.getText());
+ } catch (NumberFormatException e) {
+ }
+ if (baudRateValue <= 0) {
+ baudRateValue = StandardBaudRates.getDefault();
+ }
+ settings.setBaudRateValue(baudRateValue);
+ settings.setByteSize(ByteSize.fromStringIndex(byteSizeCombo.getSelectionIndex()));
+ settings.setParity(Parity.fromStringIndex(parityCombo.getSelectionIndex()));
+ settings.setStopBits(StopBits.fromStringIndex(stopBitsCombo.getSelectionIndex()));
+
+ dialogSettings.put(SerialSettings.PORT_NAME_ATTR, portCombo.getText());
+ dialogSettings.put(SerialSettings.BAUD_RATE_ATTR, Integer.toString(baudRateValue));
+ dialogSettings.put(SerialSettings.BYTE_SIZE_ATTR, ByteSize.getStrings()[byteSizeCombo.getSelectionIndex()]);
+ dialogSettings.put(SerialSettings.PARITY_ATTR, Parity.getStrings()[parityCombo.getSelectionIndex()]);
+ dialogSettings.put(SerialSettings.STOP_BITS_ATTR, StopBits.getStrings()[stopBitsCombo.getSelectionIndex()]);
+ }
+
+ @Override
+ public boolean validateSettings() {
+ if (portCombo.getSelectionIndex() < 0 && portCombo.getText().isEmpty()) {
+ return false;
+ }
+ return true;
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/launcher/SerialLauncherDelegate.java b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/launcher/SerialLauncherDelegate.java
new file mode 100644
index 00000000000..de55a2711f9
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/launcher/SerialLauncherDelegate.java
@@ -0,0 +1,103 @@
+/*******************************************************************************
+ * Copyright (c) 2017, 2018 QNX Software Systems and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.cdtserial.launcher;
+
+import java.util.Map;
+
+import org.eclipse.cdt.serial.ByteSize;
+import org.eclipse.cdt.serial.Parity;
+import org.eclipse.cdt.serial.StopBits;
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.tm.internal.terminal.provisional.api.ISettingsStore;
+import org.eclipse.tm.internal.terminal.provisional.api.ITerminalConnector;
+import org.eclipse.tm.internal.terminal.provisional.api.TerminalConnectorExtension;
+import org.eclipse.tm.terminal.connector.cdtserial.connector.SerialSettings;
+import org.eclipse.tm.terminal.connector.cdtserial.controls.SerialConfigPanel;
+import org.eclipse.tm.terminal.view.core.TerminalServiceFactory;
+import org.eclipse.tm.terminal.view.core.interfaces.ITerminalService;
+import org.eclipse.tm.terminal.view.core.interfaces.ITerminalService.Done;
+import org.eclipse.tm.terminal.view.core.interfaces.constants.ITerminalsConnectorConstants;
+import org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanel;
+import org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanelContainer;
+import org.eclipse.tm.terminal.view.ui.internal.SettingsStore;
+import org.eclipse.tm.terminal.view.ui.launcher.AbstractLauncherDelegate;
+
+public class SerialLauncherDelegate extends AbstractLauncherDelegate {
+
+ @Override
+ public boolean needsUserConfiguration() {
+ return true;
+ }
+
+ @Override
+ public IConfigurationPanel getPanel(IConfigurationPanelContainer container) {
+ return new SerialConfigPanel(container);
+ }
+
+ @Override
+ public ITerminalConnector createTerminalConnector(Map<String, Object> properties) {
+ Assert.isNotNull(properties);
+
+ // Check for the terminal connector id
+ String connectorId = (String) properties.get(ITerminalsConnectorConstants.PROP_TERMINAL_CONNECTOR_ID);
+ if (connectorId == null) {
+ connectorId = "org.eclipse.tm.terminal.connector.cdtserial.SerialConnector"; //$NON-NLS-1$
+ }
+
+ // Extract the properties
+ SerialSettings settings = new SerialSettings();
+ settings.setPortName((String) properties.get(SerialSettings.PORT_NAME_ATTR));
+ settings.setBaudRateValue((Integer) properties.get(SerialSettings.BAUD_RATE_ATTR));
+ settings.setByteSize((ByteSize) properties.get(SerialSettings.BYTE_SIZE_ATTR));
+ settings.setParity((Parity) properties.get(SerialSettings.PARITY_ATTR));
+ settings.setStopBits((StopBits) properties.get(SerialSettings.STOP_BITS_ATTR));
+
+ // Construct the terminal settings store
+ ISettingsStore store = new SettingsStore();
+ settings.save(store);
+
+ // Construct the terminal connector instance
+ ITerminalConnector connector = TerminalConnectorExtension.makeTerminalConnector(connectorId);
+ if (connector != null) {
+ // Apply default settings
+ connector.setDefaultSettings();
+ // And load the real settings
+ connector.load(store);
+ }
+
+ return connector;
+ }
+
+ @Override
+ public void execute(Map<String, Object> properties, Done done) {
+ Assert.isNotNull(properties);
+
+ // Set the terminal tab title
+ String name = (String) properties.get(SerialSettings.PORT_NAME_ATTR);
+ properties.put(ITerminalsConnectorConstants.PROP_TITLE, name);
+
+ // Force a new terminal tab each time it is launched, if not set otherwise from outside
+ // TODO need a command shell service routing to get this
+ if (!properties.containsKey(ITerminalsConnectorConstants.PROP_FORCE_NEW)) {
+ properties.put(ITerminalsConnectorConstants.PROP_FORCE_NEW, Boolean.TRUE);
+ }
+
+ // Get the terminal service
+ ITerminalService terminal = TerminalServiceFactory.getService();
+ // If not available, we cannot fulfill this request
+ if (terminal != null) {
+ terminal.openConsole(properties, done);
+ }
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/nls/Messages.java b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/nls/Messages.java
new file mode 100644
index 00000000000..6d323f8f574
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/nls/Messages.java
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * Copyright (c) 2017, 2018 QNX Software Systems and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.cdtserial.nls;
+
+import org.eclipse.osgi.util.NLS;
+
+/**
+ * Externalized strings management.
+ */
+public class Messages extends NLS {
+
+ // The plug-in resource bundle name
+ private static final String BUNDLE_NAME = "org.eclipse.tm.terminal.connector.cdtserial.nls.Messages"; //$NON-NLS-1$
+
+ /**
+ * Static constructor.
+ */
+ static {
+ // Load message values from bundle file
+ NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+ }
+
+ // **** Declare externalized string id's down here *****
+
+ public static String SerialTerminalSettingsPage_BaudRate;
+ public static String SerialTerminalSettingsPage_DataSize;
+ public static String SerialTerminalSettingsPage_Parity;
+ public static String SerialTerminalSettingsPage_SerialPort;
+ public static String SerialTerminalSettingsPage_StopBits;
+ public static String SerialConnector_FailedToOpen;
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/nls/Messages.properties b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/nls/Messages.properties
new file mode 100644
index 00000000000..1ef847deafe
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/nls/Messages.properties
@@ -0,0 +1,19 @@
+###############################################################################
+# Copyright (c) 2017, 2018 QNX Software Systems and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# QNX Software Systems - Initial API and implementation
+###############################################################################
+
+SerialTerminalSettingsPage_BaudRate=Baud rate:
+SerialTerminalSettingsPage_DataSize=Data size:
+SerialTerminalSettingsPage_Parity=Parity:
+SerialTerminalSettingsPage_SerialPort=Serial port:
+SerialTerminalSettingsPage_StopBits=Stop bits:
+SerialConnector_FailedToOpen=Failed to open port {0} with selected settings.\r\nThe error from the serial driver:\r\n{1}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.local/.classpath b/terminal/plugins/org.eclipse.tm.terminal.connector.local/.classpath
new file mode 100644
index 00000000000..e801ebfb468
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.local/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.local/.gitignore b/terminal/plugins/org.eclipse.tm.terminal.connector.local/.gitignore
new file mode 100644
index 00000000000..ae3c1726048
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.local/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.local/.options b/terminal/plugins/org.eclipse.tm.terminal.connector.local/.options
new file mode 100644
index 00000000000..5cbcb6722b8
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.local/.options
@@ -0,0 +1 @@
+org.eclipse.tm.terminal.connector.local/debugmode = 0
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.local/.project b/terminal/plugins/org.eclipse.tm.terminal.connector.local/.project
new file mode 100644
index 00000000000..696a343153f
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.local/.project
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.tm.terminal.connector.local</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+ </natures>
+ <filteredResources>
+ <filter>
+ <id>0</id>
+ <name></name>
+ <type>10</type>
+ <matcher>
+ <id>org.eclipse.ui.ide.multiFilter</id>
+ <arguments>1.0-name-matches-false-false-target</arguments>
+ </matcher>
+ </filter>
+ </filteredResources>
+</projectDescription>
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.local/.settings/org.eclipse.core.resources.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.local/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.local/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.local/.settings/org.eclipse.jdt.core.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.local/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..e3a8104f9ca
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.local/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.local/.settings/org.eclipse.jdt.launching.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.local/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 00000000000..f8a131b56e0
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.local/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_COMPILER_COMPLIANCE_DOES_NOT_MATCH_JRE=warning
+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=warning
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.local/.settings/org.eclipse.jdt.ui.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.local/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.local/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.local/.settings/org.eclipse.pde.api.tools.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.local/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 00000000000..ec9fbf321d0
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.local/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,184 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITH_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_FIELD=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERCLASS_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_CHANGED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENTS=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETERS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Error
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Warning
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+MISSING_EE_DESCRIPTIONS=Warning
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=false
+changed_execution_env=Error
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+incompatible_api_component_version_report_major_without_breaking_change=Warning
+incompatible_api_component_version_report_minor_without_api_change=Warning
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.local/.settings/org.eclipse.pde.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.local/.settings/org.eclipse.pde.prefs
new file mode 100644
index 00000000000..d2dc703ba9e
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.local/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,35 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=2
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=2
+compilers.p.missing-version-export-package=2
+compilers.p.missing-version-import-package=2
+compilers.p.missing-version-require-bundle=2
+compilers.p.no-required-att=0
+compilers.p.no.automatic.module=1
+compilers.p.not-externalized-att=1
+compilers.p.service.component.without.lazyactivation=1
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.local/META-INF/MANIFEST.MF b/terminal/plugins/org.eclipse.tm.terminal.connector.local/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..fffb9ac33a9
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.local/META-INF/MANIFEST.MF
@@ -0,0 +1,25 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.tm.terminal.connector.local;singleton:=true
+Bundle-Version: 4.7.300.qualifier
+Bundle-Activator: org.eclipse.tm.terminal.connector.local.activator.UIPlugin
+Bundle-Vendor: %providerName
+Import-Package: org.eclipse.cdt.utils.pty;mandatory:=native
+Require-Bundle: org.eclipse.core.expressions;bundle-version="3.4.400",
+ org.eclipse.core.resources;bundle-version="3.8.1";resolution:=optional,
+ org.eclipse.core.runtime;bundle-version="3.8.0",
+ org.eclipse.core.variables;bundle-version="3.2.600",
+ org.eclipse.debug.ui;bundle-version="3.8.1";resolution:=optional,
+ org.eclipse.tm.terminal.view.core;bundle-version="4.5.0";resolution:=optional,
+ org.eclipse.tm.terminal.view.ui;bundle-version="4.5.0";resolution:=optional,
+ org.eclipse.tm.terminal.connector.process;bundle-version="4.5.0",
+ org.eclipse.tm.terminal.control;bundle-version="4.5.0",
+ org.eclipse.ui;bundle-version="3.8.0"
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Bundle-ActivationPolicy: lazy
+Bundle-Localization: plugin
+Export-Package: org.eclipse.tm.terminal.connector.local.activator;x-internal:=true,
+ org.eclipse.tm.terminal.connector.local.controls,
+ org.eclipse.tm.terminal.connector.local.launcher
+Automatic-Module-Name: org.eclipse.tm.terminal.connector.local
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.local/META-INF/p2.inf b/terminal/plugins/org.eclipse.tm.terminal.connector.local/META-INF/p2.inf
new file mode 100644
index 00000000000..432bbd191d2
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.local/META-INF/p2.inf
@@ -0,0 +1,87 @@
+###############################################################################
+# Copyright (c) 2014 Wind River Systems, Inc. and others. All rights reserved.
+# This program and the accompanying materials are made available under the terms
+# of the Eclipse Public License 2.0 which accompanies this distribution, and is
+# available at https://www.eclipse.org/legal/epl-2.0/
+#
+# Contributors:
+# Wind River Systems - initial API and implementation
+###############################################################################
+
+# Most of the dependencies exposed here are actually covered in the feature.xml
+# This file ensures that the current bundle has all it needs, even if installed
+# without the enclosing org.eclipse.tcf.te.terminals.feature .
+# See also https://bugs.eclipse.org/bugs/show_bug.cgi?id=435150 .
+
+# 1. Make the optional cdt.core dependency non-greedy: Use (or update to proper
+# version!) when installed, but do not install automatically since the newer
+# org.eclipse.cdt.core.native can satisfy the dependency better. We use this
+# trick since CDT 8.3 had no version on export-package yet but we do want
+# a version constraint.
+requires.0.namespace = org.eclipse.equinox.p2.iu
+requires.0.name = org.eclipse.cdt.core
+#requires.0.range = [5.6, 6.0)
+requires.0.greedy = false
+requires.0.optional = true
+
+#requires.1.namespace = org.eclipse.equinox.p2.iu
+#requires.1.name = org.eclipse.cdt.core.native
+#requires.1.range = [5.6, 6.0)
+#requires.1.greedy = true
+#requires.1.optional = true
+
+# 2. Add the required fragments for local terminal support with proper version.
+requires.2.namespace = org.eclipse.equinox.p2.iu
+requires.2.name = org.eclipse.cdt.core.aix
+#requires.2.range = [5.3, 6.0)
+requires.2.filter = (osgi.os=aix)
+
+requires.3.namespace = org.eclipse.equinox.p2.iu
+requires.3.name = org.eclipse.cdt.core.linux
+#requires.3.range = [5.2, 6.0)
+requires.3.filter = (osgi.os=linux)
+
+requires.4.namespace = org.eclipse.equinox.p2.iu
+requires.4.name = org.eclipse.cdt.core.linux.ppc64
+#requires.4.range = [5.1, 6.0)
+requires.4.filter = (&(osgi.os=linux)(osgi.arch=ppc64))
+
+#requires.5.namespace = org.eclipse.equinox.p2.iu
+#requires.5.name = org.eclipse.cdt.core.linux.x86
+#requires.5.range = [5.2, 6.0)
+#requires.5.filter = (&(osgi.os=linux)(osgi.arch=x86))
+
+requires.6.namespace = org.eclipse.equinox.p2.iu
+requires.6.name = org.eclipse.cdt.core.linux.x86_64
+#requires.6.range = [5.2, 6.0)
+requires.6.filter = (&(osgi.os=linux)(osgi.arch=x86_64))
+
+requires.7.namespace = org.eclipse.equinox.p2.iu
+requires.7.name = org.eclipse.cdt.core.macosx
+#requires.7.range = [5.2, 6.0)
+requires.7.filter = (osgi.os=macosx)
+
+requires.8.namespace = org.eclipse.equinox.p2.iu
+requires.8.name = org.eclipse.cdt.core.solaris
+#requires.8.range = [5.2, 6.0)
+requires.8.filter = (&(osgi.os=solaris)(osgi.arch=sparc))
+
+requires.9.namespace = org.eclipse.equinox.p2.iu
+requires.9.name = org.eclipse.cdt.core.win32
+#requires.9.range = [5.3, 6.0)
+requires.9.filter = (osgi.os=win32)
+
+#requires.10.namespace = org.eclipse.equinox.p2.iu
+#requires.10.name = org.eclipse.cdt.core.win32.x86
+#requires.10.range = [5.2, 6.0)
+#requires.10.filter = (&(osgi.os=win32)(osgi.arch=x86))
+
+requires.11.namespace = org.eclipse.equinox.p2.iu
+requires.11.name = org.eclipse.cdt.core.win32.x86_64
+#requires.11.range = [5.2, 6.0)
+requires.11.filter = (&(osgi.os=win32)(osgi.arch=x86_64))
+
+requires.12.namespace = org.eclipse.equinox.p2.iu
+requires.12.name = org.eclipse.cdt.core.linux.aarch64
+#requires.12.range = [5.2, 6.0)
+requires.12.filter = (&(osgi.os=linux)(osgi.arch=aarch64))
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.local/about.html b/terminal/plugins/org.eclipse.tm.terminal.connector.local/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.local/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.local/build.properties b/terminal/plugins/org.eclipse.tm.terminal.connector.local/build.properties
new file mode 100644
index 00000000000..57cf32c46f8
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.local/build.properties
@@ -0,0 +1,20 @@
+###############################################################################
+# Copyright (c) 2012, 2018 Wind River Systems, Inc. and others. All rights reserved.
+# This program and the accompanying materials are made available under the terms
+# of the Eclipse Public License 2.0 which accompanies this distribution, and is
+# available at https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Wind River Systems - initial API and implementation
+###############################################################################
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ plugin.properties,\
+ about.html,\
+ icons/
+src.includes = about.html
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.local/icons/eview16/terminal_view.gif b/terminal/plugins/org.eclipse.tm.terminal.connector.local/icons/eview16/terminal_view.gif
new file mode 100644
index 00000000000..bbb6a9e153e
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.local/icons/eview16/terminal_view.gif
Binary files differ
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.local/plugin.properties b/terminal/plugins/org.eclipse.tm.terminal.connector.local/plugin.properties
new file mode 100644
index 00000000000..b12990b4cf0
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.local/plugin.properties
@@ -0,0 +1,27 @@
+##################################################################################
+# Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved.
+# This program and the accompanying materials are made available under the terms
+# of the Eclipse Public License 2.0 which accompanies this distribution, and is
+# available at https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Wind River Systems - initial API and implementation
+##################################################################################
+
+pluginName = Terminal Local Connector
+providerName = Eclipse CDT
+
+# ----- Commands and Menu contributions -----
+LocalLauncherDelegate.label=Local Terminal
+
+command.launch.name=Open Local Terminal on Selection
+
+menu.showIn.localterminal.label = Terminal
+
+TerminalConnector.local=Local
+
+# ----- Preference Pages -----
+
+preference.page.name=Local Terminal
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.local/plugin.xml b/terminal/plugins/org.eclipse.tm.terminal.connector.local/plugin.xml
new file mode 100644
index 00000000000..a6c9f688610
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.local/plugin.xml
@@ -0,0 +1,200 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<!--
+ Copyright (c) 2018 Red Hat and others.
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+ -->
+
+<plugin>
+
+<!-- Terminal connector contributions -->
+<!-- uses process connector -->
+ <extension point="org.eclipse.tm.terminal.control.connectors">
+ <connector
+ class="org.eclipse.tm.terminal.connector.process.ProcessConnector"
+ hidden="true"
+ id="org.eclipse.tm.terminal.connector.local.LocalConnector"
+ name="%TerminalConnector.local"/>
+ </extension>
+
+<!-- Terminal launcher delegate contributions -->
+ <extension point="org.eclipse.tm.terminal.view.ui.launcherDelegates">
+ <delegate
+ class="org.eclipse.tm.terminal.connector.local.launcher.LocalLauncherDelegate"
+ id="org.eclipse.tm.terminal.connector.local.launcher.local"
+ label="%LocalLauncherDelegate.label">
+ </delegate>
+ </extension>
+
+<!-- Menu contributions -->
+ <extension point="org.eclipse.ui.menus">
+ <!-- Project Explorer "Show In" contribution -->
+ <menuContribution locationURI="popup:org.eclipse.tm.terminal.view.ui.ProjectExplorer.menu.showIn?after=additions">
+ <command
+ commandId="org.eclipse.tm.terminal.connector.local.command.launch"
+ id="org.eclipse.tm.terminal.connector.local.commands.showin.launch"
+ label="%menu.showIn.localterminal.label"
+ style="push">
+ <visibleWhen
+ checkEnabled="false">
+ <or>
+ <with variable="selection">
+ <iterate operator="and" ifEmpty="false">
+ <adapt type="org.eclipse.core.resources.IResource">
+ <not>
+ <!-- The JDT Project Explorer contributions are adding the "Navigate -> Show In" quick menu.
+ See o.e.jdt.internal.ui.navigator.JavaNavigatorActionProvider -->
+ <test property="org.eclipse.core.resources.projectNature" value="org.eclipse.jdt.core.javanature" />
+ </not>
+ </adapt>
+ </iterate>
+ </with>
+ <and>
+ <with variable="selection">
+ <iterate operator="and" ifEmpty="false">
+ <adapt type="org.eclipse.core.resources.IResource">
+ <!-- The JDT Project Explorer contributions are adding the "Navigate -> Show In" quick menu.
+ See o.e.jdt.internal.ui.navigator.JavaNavigatorActionProvider -->
+ <test property="org.eclipse.core.resources.projectNature" value="org.eclipse.jdt.core.javanature" />
+ </adapt>
+ </iterate>
+ </with>
+ <with
+ variable="org.eclipse.tm.terminal.external.executable.configured">
+ <equals
+ value="TRUE">
+ </equals>
+ </with>
+ </and>
+ </or>
+ </visibleWhen>
+ </command>
+ </menuContribution>
+
+ <!-- JDT Package Explorer "Show In" contribution -->
+ <menuContribution locationURI="popup:org.eclipse.tm.terminal.view.ui.PackageExplorer.menu.showIn?after=additions">
+ <command
+ commandId="org.eclipse.tm.terminal.connector.local.command.launch"
+ id="org.eclipse.tm.terminal.connector.local.commands.showin.launch"
+ label="%menu.showIn.localterminal.label"
+ style="push">
+ <visibleWhen
+ checkEnabled="false">
+ <or>
+ <with variable="selection">
+ <iterate operator="and" ifEmpty="false">
+ <adapt type="org.eclipse.core.resources.IResource">
+ <not>
+ <!-- The JDT Project Explorer contributions are adding the "Navigate -> Show In" quick menu.
+ See o.e.jdt.internal.ui.navigator.JavaNavigatorActionProvider -->
+ <test property="org.eclipse.core.resources.projectNature" value="org.eclipse.jdt.core.javanature" />
+ </not>
+ </adapt>
+ </iterate>
+ </with>
+ <and>
+ <with variable="selection">
+ <iterate operator="and" ifEmpty="false">
+ <adapt type="org.eclipse.core.resources.IResource">
+ <!-- The JDT Project Explorer contributions are adding the "Navigate -> Show In" quick menu.
+ See o.e.jdt.internal.ui.navigator.JavaNavigatorActionProvider -->
+ <test property="org.eclipse.core.resources.projectNature" value="org.eclipse.jdt.core.javanature" />
+ </adapt>
+ </iterate>
+ </with>
+ <with
+ variable="org.eclipse.tm.terminal.external.executable.configured">
+ <equals
+ value="TRUE">
+ </equals>
+ </with>
+ </and>
+ </or>
+ </visibleWhen>
+ </command>
+ </menuContribution>
+
+ <!-- Bndtools Explorer "Show In" contribution -->
+ <menuContribution locationURI="popup:org.eclipse.tm.terminal.view.ui.BndtoolsExplorer.menu.showIn?after=additions">
+ <command
+ commandId="org.eclipse.tm.terminal.connector.local.command.launch"
+ id="org.eclipse.tm.terminal.connector.local.commands.showin.launch"
+ label="%menu.showIn.localterminal.label"
+ style="push">
+ <visibleWhen
+ checkEnabled="false">
+ <or>
+ <with variable="selection">
+ <iterate operator="and" ifEmpty="false">
+ <adapt type="org.eclipse.core.resources.IResource">
+ <not>
+ <!-- The JDT Project Explorer contributions are adding the "Navigate -> Show In" quick menu.
+ See o.e.jdt.internal.ui.navigator.JavaNavigatorActionProvider -->
+ <test property="org.eclipse.core.resources.projectNature" value="org.eclipse.jdt.core.javanature" />
+ </not>
+ </adapt>
+ </iterate>
+ </with>
+ <and>
+ <with variable="selection">
+ <iterate operator="and" ifEmpty="false">
+ <adapt type="org.eclipse.core.resources.IResource">
+ <!-- The JDT Project Explorer contributions are adding the "Navigate -> Show In" quick menu.
+ See o.e.jdt.internal.ui.navigator.JavaNavigatorActionProvider -->
+ <test property="org.eclipse.core.resources.projectNature" value="org.eclipse.jdt.core.javanature" />
+ </adapt>
+ </iterate>
+ </with>
+ <with
+ variable="org.eclipse.tm.terminal.external.executable.configured">
+ <equals
+ value="TRUE">
+ </equals>
+ </with>
+ </and>
+ </or>
+ </visibleWhen>
+ </command>
+ </menuContribution>
+ </extension>
+
+<!-- Command contributions -->
+ <extension point="org.eclipse.ui.commands">
+ <command
+ categoryId="org.eclipse.tm.terminal.view.ui.commands.category"
+ helpContextId="org.eclipse.tm.terminal.connector.local.command_Launch"
+ id="org.eclipse.tm.terminal.connector.local.command.launch"
+ name="%command.launch.name">
+ </command>
+ </extension>
+
+ <extension point="org.eclipse.ui.commandImages">
+ <image
+ commandId="org.eclipse.tm.terminal.connector.local.command.launch"
+ icon="icons/eview16/terminal_view.gif">
+ </image>
+ </extension>
+
+<!-- Key bindings -->
+ <extension point="org.eclipse.ui.bindings">
+ <key
+ commandId="org.eclipse.tm.terminal.connector.local.command.launch"
+ contextId="org.eclipse.ui.contexts.window"
+ schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
+ sequence="CTRL+M3+T"/> <!-- Bug 435111: Don't use M1 since COMMAND+Option T already taken on Mac -->
+ </extension>
+
+<!-- Handler contributions -->
+ <extension point="org.eclipse.ui.handlers">
+ <handler
+ class="org.eclipse.tm.terminal.connector.local.launcher.LocalLauncherHandler"
+ commandId="org.eclipse.tm.terminal.connector.local.command.launch">
+ </handler>
+ </extension>
+
+</plugin>
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.local/src/org/eclipse/tm/terminal/connector/local/activator/UIPlugin.java b/terminal/plugins/org.eclipse.tm.terminal.connector.local/src/org/eclipse/tm/terminal/connector/local/activator/UIPlugin.java
new file mode 100644
index 00000000000..967c0652186
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.local/src/org/eclipse/tm/terminal/connector/local/activator/UIPlugin.java
@@ -0,0 +1,120 @@
+/*******************************************************************************
+ * Copyright (c) 2012 - 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.local.activator;
+
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.resource.ImageRegistry;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.tm.terminal.view.core.preferences.ScopedEclipsePreferences;
+import org.eclipse.tm.terminal.view.core.tracing.TraceHandler;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class UIPlugin extends AbstractUIPlugin {
+ // The shared instance
+ private static UIPlugin plugin;
+ // The scoped preferences instance
+ private static volatile ScopedEclipsePreferences scopedPreferences;
+ // The trace handler instance
+ private static volatile TraceHandler traceHandler;
+
+ /**
+ * The constructor
+ */
+ public UIPlugin() {
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static UIPlugin getDefault() {
+ return plugin;
+ }
+
+ /**
+ * Convenience method which returns the unique identifier of this plug-in.
+ */
+ public static String getUniqueIdentifier() {
+ if (getDefault() != null && getDefault().getBundle() != null) {
+ return getDefault().getBundle().getSymbolicName();
+ }
+ return "org.eclipse.tm.terminal.connector.local"; //$NON-NLS-1$
+ }
+
+ /**
+ * Return the scoped preferences for this plug-in.
+ */
+ public static ScopedEclipsePreferences getScopedPreferences() {
+ if (scopedPreferences == null) {
+ scopedPreferences = new ScopedEclipsePreferences(getUniqueIdentifier());
+ }
+ return scopedPreferences;
+ }
+
+ /**
+ * Returns the bundles trace handler.
+ *
+ * @return The bundles trace handler.
+ */
+ public static TraceHandler getTraceHandler() {
+ if (traceHandler == null) {
+ traceHandler = new TraceHandler(getUniqueIdentifier());
+ }
+ return traceHandler;
+ }
+
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ scopedPreferences = null;
+ traceHandler = null;
+ super.stop(context);
+ }
+
+ @Override
+ protected void initializeImageRegistry(ImageRegistry registry) {
+ super.initializeImageRegistry(registry);
+ }
+
+ /**
+ * Loads the image registered under the specified key from the image
+ * registry and returns the <code>Image</code> object instance.
+ *
+ * @param key The key the image is registered with.
+ * @return The <code>Image</code> object instance or <code>null</code>.
+ */
+ public static Image getImage(String key) {
+ return getDefault().getImageRegistry().get(key);
+ }
+
+ /**
+ * Loads the image registered under the specified key from the image
+ * registry and returns the <code>ImageDescriptor</code> object instance.
+ *
+ * @param key The key the image is registered with.
+ * @return The <code>ImageDescriptor</code> object instance or <code>null</code>.
+ */
+ public static ImageDescriptor getImageDescriptor(String key) {
+ return getDefault().getImageRegistry().getDescriptor(key);
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.local/src/org/eclipse/tm/terminal/connector/local/controls/LocalWizardConfigurationPanel.java b/terminal/plugins/org.eclipse.tm.terminal.connector.local/src/org/eclipse/tm/terminal/connector/local/controls/LocalWizardConfigurationPanel.java
new file mode 100644
index 00000000000..fd7d49911aa
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.local/src/org/eclipse/tm/terminal/connector/local/controls/LocalWizardConfigurationPanel.java
@@ -0,0 +1,187 @@
+/*******************************************************************************
+ * Copyright (c) 2012, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.local.controls;
+
+import java.util.Map;
+
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.jface.dialogs.IDialogSettings;
+import org.eclipse.jface.fieldassist.ControlDecoration;
+import org.eclipse.jface.fieldassist.FieldDecorationRegistry;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.tm.terminal.view.core.interfaces.constants.ITerminalsConnectorConstants;
+import org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanelContainer;
+import org.eclipse.tm.terminal.view.ui.panels.AbstractExtendedConfigurationPanel;
+import org.eclipse.ui.ISelectionService;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.WorkbenchEncoding;
+import org.osgi.framework.Bundle;
+
+/**
+ * Serial wizard configuration panel implementation.
+ */
+public class LocalWizardConfigurationPanel extends AbstractExtendedConfigurationPanel {
+
+ private Object resource;
+
+ /**
+ * Constructor.
+ *
+ * @param container The configuration panel container or <code>null</code>.
+ */
+ public LocalWizardConfigurationPanel(IConfigurationPanelContainer container) {
+ super(container);
+ }
+
+ @Override
+ public void setupPanel(Composite parent) {
+ Composite panel = new Composite(parent, SWT.NONE);
+ panel.setLayout(new GridLayout());
+ panel.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+
+ // Create the encoding selection combo
+ createEncodingUI(panel, false);
+
+ // Set the default encoding:
+ // Default UTF-8 on Mac or Windows for Local, Preferences:Platform encoding otherwise
+ if (Platform.OS_MACOSX.equals(Platform.getOS()) || Platform.OS_WIN32.equals(Platform.getOS())) {
+ setEncoding("UTF-8"); //$NON-NLS-1$
+ } else {
+ String encoding = WorkbenchEncoding.getWorkbenchDefaultEncoding();
+ if (encoding != null && !"".equals(encoding)) //$NON-NLS-1$
+ setEncoding(encoding);
+ }
+
+ // Fill the rest of the panel with a label to be able to
+ // set a height and width hint for the dialog
+ Label label = new Label(panel, SWT.HORIZONTAL);
+ GridData layoutData = new GridData(SWT.FILL, SWT.FILL, true, true);
+ layoutData.widthHint = 300;
+ layoutData.heightHint = 80;
+ label.setLayoutData(layoutData);
+
+ Bundle bundle = Platform.getBundle("org.eclipse.core.resources"); //$NON-NLS-1$
+ if (bundle != null && bundle.getState() != Bundle.UNINSTALLED && bundle.getState() != Bundle.STOPPING) {
+ resource = getSelectionResource();
+ }
+
+ setControl(panel);
+ }
+
+ @Override
+ protected void decorateEncoding(ControlDecoration encodingComboDecorator, String encoding) {
+ if ((Platform.OS_MACOSX.equals(Platform.getOS()) || Platform.OS_WIN32.equals(Platform.getOS()))
+ && !"UTF-8".equals(encoding)) { //$NON-NLS-1$
+ Image decorationImage = FieldDecorationRegistry.getDefault()
+ .getFieldDecoration(FieldDecorationRegistry.DEC_WARNING).getImage();
+ encodingComboDecorator.setImage(decorationImage);
+ encodingComboDecorator.setDescriptionText(Messages.LocalWizardConfigurationPanel_encoding_does_not_match);
+ encodingComboDecorator.show();
+ } else {
+ super.decorateEncoding(encodingComboDecorator, encoding);
+ }
+ }
+
+ @Override
+ public void setupData(Map<String, Object> data) {
+ if (data == null)
+ return;
+
+ String value = (String) data.get(ITerminalsConnectorConstants.PROP_ENCODING);
+ if (value != null)
+ setEncoding(value);
+ }
+
+ @Override
+ public void extractData(Map<String, Object> data) {
+ // set the terminal connector id for local terminal
+ data.put(ITerminalsConnectorConstants.PROP_TERMINAL_CONNECTOR_ID,
+ "org.eclipse.tm.terminal.connector.local.LocalConnector"); //$NON-NLS-1$
+
+ // Store the encoding
+ data.put(ITerminalsConnectorConstants.PROP_ENCODING, getEncoding());
+
+ Bundle bundle = Platform.getBundle("org.eclipse.core.resources"); //$NON-NLS-1$
+ if (bundle != null && bundle.getState() != Bundle.UNINSTALLED && bundle.getState() != Bundle.STOPPING) {
+ // if we have a IResource selection use the location for working directory
+ if (resource instanceof org.eclipse.core.resources.IResource) {
+ String dir = ((org.eclipse.core.resources.IResource) resource).getProject().getLocation().toString();
+ data.put(ITerminalsConnectorConstants.PROP_PROCESS_WORKING_DIR, dir);
+ }
+ }
+ }
+
+ @Override
+ protected void fillSettingsForHost(String host) {
+ }
+
+ @Override
+ protected void saveSettingsForHost(boolean add) {
+ }
+
+ @Override
+ public boolean isValid() {
+ return true;
+ }
+
+ @Override
+ public void doSaveWidgetValues(IDialogSettings settings, String idPrefix) {
+ // Save the encodings widget values
+ doSaveEncodingsWidgetValues(settings, idPrefix);
+ }
+
+ @Override
+ public void doRestoreWidgetValues(IDialogSettings settings, String idPrefix) {
+ // Restore the encodings widget values
+ doRestoreEncodingsWidgetValues(settings, idPrefix);
+ }
+
+ @Override
+ protected String getHostFromSettings() {
+ return null;
+ }
+
+ @Override
+ public boolean isWithHostList() {
+ return false;
+ }
+
+ /**
+ * Returns the IResource from the current selection
+ *
+ * @return the IResource, or <code>null</code>.
+ */
+ private org.eclipse.core.resources.IResource getSelectionResource() {
+ ISelectionService selectionService = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getSelectionService();
+ ISelection selection = selectionService != null ? selectionService.getSelection() : StructuredSelection.EMPTY;
+
+ if (selection instanceof IStructuredSelection && !selection.isEmpty()) {
+ Object element = ((IStructuredSelection) selection).getFirstElement();
+ if (element instanceof org.eclipse.core.resources.IResource) {
+ return ((org.eclipse.core.resources.IResource) element);
+ }
+ if (element instanceof IAdaptable) {
+ return ((IAdaptable) element).getAdapter(org.eclipse.core.resources.IResource.class);
+ }
+ }
+ return null;
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.local/src/org/eclipse/tm/terminal/connector/local/controls/Messages.java b/terminal/plugins/org.eclipse.tm.terminal.connector.local/src/org/eclipse/tm/terminal/connector/local/controls/Messages.java
new file mode 100644
index 00000000000..e579af85dd0
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.local/src/org/eclipse/tm/terminal/connector/local/controls/Messages.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2021 Kichwa Coders Canada Inc. and others.
+ *
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.local.controls;
+
+import org.eclipse.osgi.util.NLS;
+
+/**
+ * @noreference This class is not intended to be referenced by clients.
+ */
+public class Messages extends NLS {
+ private static final String BUNDLE_NAME = "org.eclipse.tm.terminal.connector.local.controls.Messages"; //$NON-NLS-1$
+ public static String LocalWizardConfigurationPanel_encoding_does_not_match;
+ static {
+ // initialize resource bundle
+ NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+ }
+
+ private Messages() {
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.local/src/org/eclipse/tm/terminal/connector/local/controls/Messages.properties b/terminal/plugins/org.eclipse.tm.terminal.connector.local/src/org/eclipse/tm/terminal/connector/local/controls/Messages.properties
new file mode 100644
index 00000000000..3b02208cad2
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.local/src/org/eclipse/tm/terminal/connector/local/controls/Messages.properties
@@ -0,0 +1,10 @@
+###############################################################################
+# Copyright (c) 2021 Kichwa Coders Canada Inc. and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+LocalWizardConfigurationPanel_encoding_does_not_match=The selected encoding does not match the terminal being connected to. Recommended encoding is UTF-8.
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.local/src/org/eclipse/tm/terminal/connector/local/launcher/LocalLauncherDelegate.java b/terminal/plugins/org.eclipse.tm.terminal.connector.local/src/org/eclipse/tm/terminal/connector/local/launcher/LocalLauncherDelegate.java
new file mode 100644
index 00000000000..a5c775b06b0
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.local/src/org/eclipse/tm/terminal/connector/local/launcher/LocalLauncherDelegate.java
@@ -0,0 +1,426 @@
+/*******************************************************************************
+ * Copyright (c) 2012, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ * Dirk Fauth <dirk.fauth@googlemail.com> - Bug 460496
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.local.launcher;
+
+import java.io.File;
+import java.net.InetAddress;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.UnknownHostException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.cdt.utils.pty.PTY;
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.URIUtil;
+import org.eclipse.core.variables.IStringVariableManager;
+import org.eclipse.core.variables.VariablesPlugin;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.tm.internal.terminal.provisional.api.ISettingsStore;
+import org.eclipse.tm.internal.terminal.provisional.api.ITerminalConnector;
+import org.eclipse.tm.internal.terminal.provisional.api.TerminalConnectorExtension;
+import org.eclipse.tm.terminal.connector.local.activator.UIPlugin;
+import org.eclipse.tm.terminal.connector.local.controls.LocalWizardConfigurationPanel;
+import org.eclipse.tm.terminal.connector.process.ProcessSettings;
+import org.eclipse.tm.terminal.view.core.TerminalServiceFactory;
+import org.eclipse.tm.terminal.view.core.interfaces.ITerminalService;
+import org.eclipse.tm.terminal.view.core.interfaces.ITerminalServiceOutputStreamMonitorListener;
+import org.eclipse.tm.terminal.view.core.interfaces.constants.ILineSeparatorConstants;
+import org.eclipse.tm.terminal.view.core.interfaces.constants.ITerminalsConnectorConstants;
+import org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanel;
+import org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanelContainer;
+import org.eclipse.tm.terminal.view.ui.interfaces.IMementoHandler;
+import org.eclipse.tm.terminal.view.ui.interfaces.IPreferenceKeys;
+import org.eclipse.tm.terminal.view.ui.internal.SettingsStore;
+import org.eclipse.tm.terminal.view.ui.launcher.AbstractLauncherDelegate;
+import org.eclipse.ui.ISelectionService;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.WorkbenchEncoding;
+import org.osgi.framework.Bundle;
+
+/**
+ * Serial launcher delegate implementation.
+ */
+@SuppressWarnings("restriction")
+public class LocalLauncherDelegate extends AbstractLauncherDelegate {
+
+ private final IMementoHandler mementoHandler = new LocalMementoHandler();
+
+ @Override
+ public boolean needsUserConfiguration() {
+ return false;
+ }
+
+ @Override
+ public IConfigurationPanel getPanel(IConfigurationPanelContainer container) {
+ return new LocalWizardConfigurationPanel(container);
+ }
+
+ @Override
+ public void execute(Map<String, Object> properties, ITerminalService.Done done) {
+ Assert.isNotNull(properties);
+
+ // Set the terminal tab title
+ String terminalTitle = getTerminalTitle(properties);
+ if (terminalTitle != null) {
+ properties.put(ITerminalsConnectorConstants.PROP_TITLE, terminalTitle);
+ }
+
+ // If not configured, set the default encodings for the local terminal
+ if (!properties.containsKey(ITerminalsConnectorConstants.PROP_ENCODING)) {
+ String encoding = null;
+ // Set the default encoding:
+ // Default UTF-8 on Mac or Windows for Local, Preferences:Platform encoding otherwise
+ if (Platform.OS_MACOSX.equals(Platform.getOS()) || Platform.OS_WIN32.equals(Platform.getOS())) {
+ encoding = "UTF-8"; //$NON-NLS-1$
+ } else {
+ encoding = WorkbenchEncoding.getWorkbenchDefaultEncoding();
+ }
+ if (encoding != null && !"".equals(encoding)) //$NON-NLS-1$
+ properties.put(ITerminalsConnectorConstants.PROP_ENCODING, encoding);
+ }
+
+ // For local terminals, force a new terminal tab each time it is launched,
+ // if not set otherwise from outside
+ if (!properties.containsKey(ITerminalsConnectorConstants.PROP_FORCE_NEW)) {
+ properties.put(ITerminalsConnectorConstants.PROP_FORCE_NEW, Boolean.TRUE);
+ }
+
+ // Initialize the local terminal working directory.
+ if (!properties.containsKey(ITerminalsConnectorConstants.PROP_PROCESS_WORKING_DIR)) {
+ // By default, start the local terminal in the users home directory
+ String initialCwd = org.eclipse.tm.terminal.view.ui.activator.UIPlugin.getScopedPreferences()
+ .getString(IPreferenceKeys.PREF_LOCAL_TERMINAL_INITIAL_CWD);
+ String cwd = null;
+ if (initialCwd == null || IPreferenceKeys.PREF_INITIAL_CWD_USER_HOME.equals(initialCwd)
+ || "".equals(initialCwd.trim())) { //$NON-NLS-1$
+ cwd = System.getProperty("user.home"); //$NON-NLS-1$
+ } else if (IPreferenceKeys.PREF_INITIAL_CWD_ECLIPSE_HOME.equals(initialCwd)) {
+ String eclipseHomeLocation = System.getProperty("eclipse.home.location"); //$NON-NLS-1$
+ if (eclipseHomeLocation != null) {
+ try {
+ URI uri = URIUtil.fromString(eclipseHomeLocation);
+ File f = URIUtil.toFile(uri);
+ cwd = f.getAbsolutePath();
+ } catch (URISyntaxException ex) {
+ /* ignored on purpose */ }
+ }
+ } else if (IPreferenceKeys.PREF_INITIAL_CWD_ECLIPSE_WS.equals(initialCwd)) {
+ Bundle bundle = Platform.getBundle("org.eclipse.core.resources"); //$NON-NLS-1$
+ if (bundle != null && bundle.getState() != Bundle.UNINSTALLED && bundle.getState() != Bundle.STOPPING) {
+ if (org.eclipse.core.resources.ResourcesPlugin.getWorkspace() != null
+ && org.eclipse.core.resources.ResourcesPlugin.getWorkspace().getRoot() != null
+ && org.eclipse.core.resources.ResourcesPlugin.getWorkspace().getRoot()
+ .getLocation() != null) {
+ cwd = org.eclipse.core.resources.ResourcesPlugin.getWorkspace().getRoot().getLocation()
+ .toOSString();
+ }
+ }
+ } else {
+ try {
+ // Resolve possible dynamic variables
+ IStringVariableManager vm = VariablesPlugin.getDefault().getStringVariableManager();
+ String resolved = vm.performStringSubstitution(initialCwd);
+
+ IPath p = new Path(resolved);
+ if (p.toFile().canRead() && p.toFile().isDirectory()) {
+ cwd = p.toOSString();
+ }
+ } catch (CoreException ex) {
+ if (Platform.inDebugMode()) {
+ UIPlugin.getDefault().getLog().log(ex.getStatus());
+ }
+ }
+ }
+
+ if (cwd != null && !"".equals(cwd)) { //$NON-NLS-1$
+ properties.put(ITerminalsConnectorConstants.PROP_PROCESS_WORKING_DIR, cwd);
+ }
+ }
+
+ // If the current selection resolved to an folder, default the working directory
+ // to that folder and update the terminal title
+ ISelectionService service = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getSelectionService();
+ if ((service != null && service.getSelection() != null)
+ || properties.containsKey(ITerminalsConnectorConstants.PROP_SELECTION)) {
+ ISelection selection = (ISelection) properties.get(ITerminalsConnectorConstants.PROP_SELECTION);
+ if (selection == null)
+ selection = service.getSelection();
+ if (selection instanceof IStructuredSelection && !selection.isEmpty()) {
+ String dir = null;
+ Iterator<?> iter = ((IStructuredSelection) selection).iterator();
+ while (iter.hasNext()) {
+ Object element = iter.next();
+
+ Bundle bundle = Platform.getBundle("org.eclipse.core.resources"); //$NON-NLS-1$
+ if (bundle != null && bundle.getState() != Bundle.UNINSTALLED
+ && bundle.getState() != Bundle.STOPPING) {
+ // If the element is not an IResource, try to adapt to IResource
+ if (!(element instanceof org.eclipse.core.resources.IResource)) {
+ Object adapted = element instanceof IAdaptable
+ ? ((IAdaptable) element).getAdapter(org.eclipse.core.resources.IResource.class)
+ : null;
+ if (adapted == null)
+ adapted = Platform.getAdapterManager().getAdapter(element,
+ org.eclipse.core.resources.IResource.class);
+ if (adapted != null)
+ element = adapted;
+ }
+
+ if (element instanceof org.eclipse.core.resources.IResource
+ && ((org.eclipse.core.resources.IResource) element).exists()) {
+ IPath location = ((org.eclipse.core.resources.IResource) element).getLocation();
+ if (location == null)
+ continue;
+ if (location.toFile().isFile())
+ location = location.removeLastSegments(1);
+ if (location.toFile().isDirectory() && location.toFile().canRead()) {
+ dir = location.toFile().getAbsolutePath();
+ break;
+ }
+ }
+
+ if (element instanceof IPath || element instanceof File) {
+ File f = element instanceof IPath ? ((IPath) element).toFile() : (File) element;
+ if (f.isDirectory() && f.canRead()) {
+ dir = f.getAbsolutePath();
+ break;
+ }
+ }
+ }
+ }
+ if (dir != null) {
+ properties.put(ITerminalsConnectorConstants.PROP_PROCESS_WORKING_DIR, dir);
+
+ String basename = new Path(dir).lastSegment();
+ properties.put(ITerminalsConnectorConstants.PROP_TITLE, basename + " (" + terminalTitle + ")"); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ }
+ }
+
+ // Get the terminal service
+ ITerminalService terminal = TerminalServiceFactory.getService();
+ // If not available, we cannot fulfill this request
+ if (terminal != null) {
+ terminal.openConsole(properties, done);
+ }
+ }
+
+ /**
+ * Returns the terminal title string.
+ * <p>
+ * The default implementation constructs a title like &quot;Serial &lt;port&gt; (Start time) &quot;.
+ *
+ * @return The terminal title string or <code>null</code>.
+ */
+ private String getTerminalTitle(Map<String, Object> properties) {
+ // Try to see if the user set a title explicitly via the properties map.
+ String title = getDefaultTerminalTitle(properties);
+ if (title != null)
+ return title;
+
+ try {
+ String hostname = InetAddress.getLocalHost().getHostName();
+ if (hostname != null && !"".equals(hostname.trim())) { //$NON-NLS-1$
+ return hostname;
+ }
+ } catch (UnknownHostException e) {
+ /* ignored on purpose */ }
+
+ return "Local"; //$NON-NLS-1$
+ }
+
+ @Override
+ public <T> T getAdapter(Class<T> adapter) {
+ if (IMementoHandler.class.equals(adapter)) {
+ return adapter.cast(mementoHandler);
+ }
+ return super.getAdapter(adapter);
+ }
+
+ /**
+ * Returns the default shell to launch. Looks at the environment
+ * variable "SHELL" first before assuming some default default values.
+ *
+ * @return The default shell to launch.
+ */
+ private final File defaultShell() {
+ String shell = null;
+ if (Platform.OS_WIN32.equals(Platform.getOS())) {
+ if (System.getenv("ComSpec") != null && !"".equals(System.getenv("ComSpec").trim())) { //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ shell = System.getenv("ComSpec").trim(); //$NON-NLS-1$
+ } else {
+ shell = "cmd.exe"; //$NON-NLS-1$
+ }
+ }
+ if (shell == null) {
+ shell = org.eclipse.tm.terminal.view.ui.activator.UIPlugin.getScopedPreferences()
+ .getString(IPreferenceKeys.PREF_LOCAL_TERMINAL_DEFAULT_SHELL_UNIX);
+ if (shell == null || "".equals(shell)) { //$NON-NLS-1$
+ if (System.getenv("SHELL") != null && !"".equals(System.getenv("SHELL").trim())) { //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ shell = System.getenv("SHELL").trim(); //$NON-NLS-1$
+ } else {
+ shell = "/bin/sh"; //$NON-NLS-1$
+ }
+ }
+ }
+
+ return new File(shell);
+ }
+
+ @Override
+ public ITerminalConnector createTerminalConnector(Map<String, Object> properties) {
+ Assert.isNotNull(properties);
+
+ // Check for the terminal connector id
+ String connectorId = (String) properties.get(ITerminalsConnectorConstants.PROP_TERMINAL_CONNECTOR_ID);
+ if (connectorId == null)
+ connectorId = "org.eclipse.tm.terminal.connector.local.LocalConnector"; //$NON-NLS-1$
+
+ // Extract the process properties using defaults
+ String image;
+ if (!properties.containsKey(ITerminalsConnectorConstants.PROP_PROCESS_PATH)
+ || properties.get(ITerminalsConnectorConstants.PROP_PROCESS_PATH) == null) {
+ File defaultShell = defaultShell();
+ image = defaultShell.isAbsolute() ? defaultShell.getAbsolutePath() : defaultShell.getPath();
+ } else {
+ image = (String) properties.get(ITerminalsConnectorConstants.PROP_PROCESS_PATH);
+ }
+
+ String arguments = (String) properties.get(ITerminalsConnectorConstants.PROP_PROCESS_ARGS);
+ if (arguments == null && !Platform.OS_WIN32.equals(Platform.getOS())) {
+ arguments = org.eclipse.tm.terminal.view.ui.activator.UIPlugin.getScopedPreferences()
+ .getString(IPreferenceKeys.PREF_LOCAL_TERMINAL_DEFAULT_SHELL_UNIX_ARGS);
+ }
+
+ // Determine if a PTY will be used
+ boolean isUsingPTY = (properties.get(ITerminalsConnectorConstants.PROP_PROCESS_OBJ) == null
+ && PTY.isSupported(PTY.Mode.TERMINAL))
+ || properties.get(ITerminalsConnectorConstants.PROP_PTY_OBJ) instanceof PTY;
+
+ boolean localEcho = false;
+ if (!properties.containsKey(ITerminalsConnectorConstants.PROP_LOCAL_ECHO)
+ || !(properties.get(ITerminalsConnectorConstants.PROP_LOCAL_ECHO) instanceof Boolean)) {
+ // On Windows, turn on local echo by default if no PTY is used (bug 433645)
+ if (Platform.OS_WIN32.equals(Platform.getOS())) {
+ localEcho = !isUsingPTY;
+ }
+ } else {
+ localEcho = ((Boolean) properties.get(ITerminalsConnectorConstants.PROP_LOCAL_ECHO)).booleanValue();
+ }
+
+ String lineSeparator = null;
+ if (!properties.containsKey(ITerminalsConnectorConstants.PROP_LINE_SEPARATOR)
+ || !(properties.get(ITerminalsConnectorConstants.PROP_LINE_SEPARATOR) instanceof String)) {
+ // No line separator will be set if a PTY is used
+ if (!isUsingPTY) {
+ lineSeparator = Platform.OS_WIN32.equals(Platform.getOS()) ? ILineSeparatorConstants.LINE_SEPARATOR_CRLF
+ : ILineSeparatorConstants.LINE_SEPARATOR_LF;
+ }
+ } else {
+ lineSeparator = (String) properties.get(ITerminalsConnectorConstants.PROP_LINE_SEPARATOR);
+ }
+
+ Process process = (Process) properties.get(ITerminalsConnectorConstants.PROP_PROCESS_OBJ);
+ PTY pty = (PTY) properties.get(ITerminalsConnectorConstants.PROP_PTY_OBJ);
+ ITerminalServiceOutputStreamMonitorListener[] stdoutListeners = (ITerminalServiceOutputStreamMonitorListener[]) properties
+ .get(ITerminalsConnectorConstants.PROP_STDOUT_LISTENERS);
+ ITerminalServiceOutputStreamMonitorListener[] stderrListeners = (ITerminalServiceOutputStreamMonitorListener[]) properties
+ .get(ITerminalsConnectorConstants.PROP_STDERR_LISTENERS);
+ String workingDir = (String) properties.get(ITerminalsConnectorConstants.PROP_PROCESS_WORKING_DIR);
+
+ String[] envp = null;
+ if (properties.containsKey(ITerminalsConnectorConstants.PROP_PROCESS_ENVIRONMENT)
+ && properties.get(ITerminalsConnectorConstants.PROP_PROCESS_ENVIRONMENT) != null
+ && properties.get(ITerminalsConnectorConstants.PROP_PROCESS_ENVIRONMENT) instanceof String[]) {
+ envp = (String[]) properties.get(ITerminalsConnectorConstants.PROP_PROCESS_ENVIRONMENT);
+ }
+
+ // Set the ECLIPSE_HOME and ECLIPSE_WORKSPACE environment variables
+ List<String> envpList = new ArrayList<>();
+ if (envp != null)
+ envpList.addAll(Arrays.asList(envp));
+
+ // ECLIPSE_HOME
+ String eclipseHomeLocation = System.getProperty("eclipse.home.location"); //$NON-NLS-1$
+ if (eclipseHomeLocation != null) {
+ try {
+ URI uri = URIUtil.fromString(eclipseHomeLocation);
+ File f = URIUtil.toFile(uri);
+ envpList.add("ECLIPSE_HOME=" + f.getAbsolutePath()); //$NON-NLS-1$
+ } catch (URISyntaxException e) {
+ /* ignored on purpose */ }
+ }
+
+ // ECLIPSE_WORKSPACE
+ Bundle bundle = Platform.getBundle("org.eclipse.core.resources"); //$NON-NLS-1$
+ if (bundle != null && bundle.getState() != Bundle.UNINSTALLED && bundle.getState() != Bundle.STOPPING) {
+ if (org.eclipse.core.resources.ResourcesPlugin.getWorkspace() != null
+ && org.eclipse.core.resources.ResourcesPlugin.getWorkspace().getRoot() != null
+ && org.eclipse.core.resources.ResourcesPlugin.getWorkspace().getRoot().getLocation() != null) {
+ envpList.add("ECLIPSE_WORKSPACE=" + org.eclipse.core.resources.ResourcesPlugin.getWorkspace().getRoot() //$NON-NLS-1$
+ .getLocation().toOSString());
+ }
+ }
+
+ // Convert back into a string array
+ envp = envpList.toArray(new String[envpList.size()]);
+
+ Assert.isTrue(image != null || process != null);
+
+ // Construct the terminal settings store
+ ISettingsStore store = new SettingsStore();
+
+ // Construct the process settings
+ ProcessSettings processSettings = new ProcessSettings();
+ processSettings.setImage(image);
+ processSettings.setArguments(arguments);
+ processSettings.setProcess(process);
+ processSettings.setPTY(pty);
+ processSettings.setLocalEcho(localEcho);
+ processSettings.setLineSeparator(lineSeparator);
+ processSettings.setStdOutListeners(stdoutListeners);
+ processSettings.setStdErrListeners(stderrListeners);
+ processSettings.setWorkingDir(workingDir);
+ processSettings.setEnvironment(envp);
+
+ if (properties.containsKey(ITerminalsConnectorConstants.PROP_PROCESS_MERGE_ENVIRONMENT)) {
+ Object value = properties.get(ITerminalsConnectorConstants.PROP_PROCESS_MERGE_ENVIRONMENT);
+ processSettings
+ .setMergeWithNativeEnvironment(value instanceof Boolean ? ((Boolean) value).booleanValue() : false);
+ }
+
+ // And save the settings to the store
+ processSettings.save(store);
+
+ // Construct the terminal connector instance
+ ITerminalConnector connector = TerminalConnectorExtension.makeTerminalConnector(connectorId);
+ if (connector != null) {
+ // Apply default settings
+ connector.setDefaultSettings();
+ // And load the real settings
+ connector.load(store);
+ }
+
+ return connector;
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.local/src/org/eclipse/tm/terminal/connector/local/launcher/LocalLauncherHandler.java b/terminal/plugins/org.eclipse.tm.terminal.connector.local/src/org/eclipse/tm/terminal/connector/local/launcher/LocalLauncherHandler.java
new file mode 100644
index 00000000000..18a1c9acb70
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.local/src/org/eclipse/tm/terminal/connector/local/launcher/LocalLauncherHandler.java
@@ -0,0 +1,79 @@
+/*******************************************************************************
+ * Copyright (c) 2014, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.local.launcher;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.tm.terminal.view.core.interfaces.constants.ITerminalsConnectorConstants;
+import org.eclipse.tm.terminal.view.ui.interfaces.ILauncherDelegate;
+import org.eclipse.tm.terminal.view.ui.launcher.LauncherDelegateManager;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IPathEditorInput;
+import org.eclipse.ui.handlers.HandlerUtil;
+
+/**
+ * Local terminal launcher handler implementation.
+ */
+public class LocalLauncherHandler extends AbstractHandler {
+
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ // Get the current selection
+ ISelection selection = HandlerUtil.getCurrentSelection(event);
+
+ // If the selection is not a structured selection, check if there is an active
+ // editor and get the path from the editor input
+ if (!(selection instanceof IStructuredSelection)) {
+ IEditorInput input = HandlerUtil.getActiveEditorInput(event);
+ if (input instanceof IPathEditorInput) {
+ IPath path = ((IPathEditorInput) input).getPath();
+ if (path != null) {
+ if (path.toFile().isFile())
+ path = path.removeLastSegments(1);
+ if (path.toFile().isDirectory() && path.toFile().canRead())
+ selection = new StructuredSelection(path);
+ }
+ }
+ }
+
+ // Get all applicable launcher delegates for the current selection
+ ILauncherDelegate[] delegates = LauncherDelegateManager.getInstance().getApplicableLauncherDelegates(selection);
+ // Find the local terminal launcher delegate
+ ILauncherDelegate delegate = null;
+ for (ILauncherDelegate candidate : delegates) {
+ if ("org.eclipse.tm.terminal.connector.local.launcher.local".equals(candidate.getId())) { //$NON-NLS-1$
+ delegate = candidate;
+ break;
+ }
+ }
+
+ // Launch the local terminal
+ if (delegate != null) {
+ Map<String, Object> properties = new HashMap<>();
+ properties.put(ITerminalsConnectorConstants.PROP_DELEGATE_ID, delegate.getId());
+ properties.put(ITerminalsConnectorConstants.PROP_SELECTION, selection);
+
+ delegate.execute(properties, null);
+ }
+
+ return null;
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.local/src/org/eclipse/tm/terminal/connector/local/launcher/LocalMementoHandler.java b/terminal/plugins/org.eclipse.tm.terminal.connector.local/src/org/eclipse/tm/terminal/connector/local/launcher/LocalMementoHandler.java
new file mode 100644
index 00000000000..393db3ff9aa
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.local/src/org/eclipse/tm/terminal/connector/local/launcher/LocalMementoHandler.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * Copyright (c) 2012, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.local.launcher;
+
+import java.util.Map;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.tm.terminal.view.core.interfaces.constants.ITerminalsConnectorConstants;
+import org.eclipse.tm.terminal.view.ui.interfaces.IMementoHandler;
+import org.eclipse.ui.IMemento;
+
+/**
+ * Local terminal connection memento handler implementation.
+ */
+public class LocalMementoHandler implements IMementoHandler {
+
+ @Override
+ public void saveState(IMemento memento, Map<String, Object> properties) {
+ Assert.isNotNull(memento);
+ Assert.isNotNull(properties);
+
+ if ((String) properties.get(ITerminalsConnectorConstants.PROP_PROCESS_PATH) != null) {
+ memento.putString(ITerminalsConnectorConstants.PROP_PROCESS_PATH,
+ (String) properties.get(ITerminalsConnectorConstants.PROP_PROCESS_PATH));
+ }
+ if ((String) properties.get(ITerminalsConnectorConstants.PROP_PROCESS_ARGS) != null) {
+ memento.putString(ITerminalsConnectorConstants.PROP_PROCESS_ARGS,
+ (String) properties.get(ITerminalsConnectorConstants.PROP_PROCESS_ARGS));
+ }
+ if ((Boolean) properties.get(ITerminalsConnectorConstants.PROP_TRANSLATE_BACKSLASHES_ON_PASTE) != null) {
+ memento.putBoolean(ITerminalsConnectorConstants.PROP_TRANSLATE_BACKSLASHES_ON_PASTE,
+ (Boolean) properties.get(ITerminalsConnectorConstants.PROP_TRANSLATE_BACKSLASHES_ON_PASTE));
+ }
+ }
+
+ @Override
+ public void restoreState(IMemento memento, Map<String, Object> properties) {
+ Assert.isNotNull(memento);
+ Assert.isNotNull(properties);
+
+ if (memento.getString(ITerminalsConnectorConstants.PROP_PROCESS_PATH) != null) {
+ properties.put(ITerminalsConnectorConstants.PROP_PROCESS_PATH,
+ memento.getString(ITerminalsConnectorConstants.PROP_PROCESS_PATH));
+ }
+ if (memento.getString(ITerminalsConnectorConstants.PROP_PROCESS_ARGS) != null) {
+ properties.put(ITerminalsConnectorConstants.PROP_PROCESS_ARGS,
+ memento.getString(ITerminalsConnectorConstants.PROP_PROCESS_ARGS));
+ }
+ if (memento.getBoolean(ITerminalsConnectorConstants.PROP_TRANSLATE_BACKSLASHES_ON_PASTE) != null) {
+ properties.put(ITerminalsConnectorConstants.PROP_TRANSLATE_BACKSLASHES_ON_PASTE,
+ memento.getBoolean(ITerminalsConnectorConstants.PROP_TRANSLATE_BACKSLASHES_ON_PASTE));
+ }
+
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.process/.classpath b/terminal/plugins/org.eclipse.tm.terminal.connector.process/.classpath
new file mode 100644
index 00000000000..e801ebfb468
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.process/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.process/.gitignore b/terminal/plugins/org.eclipse.tm.terminal.connector.process/.gitignore
new file mode 100644
index 00000000000..ae3c1726048
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.process/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.process/.options b/terminal/plugins/org.eclipse.tm.terminal.connector.process/.options
new file mode 100644
index 00000000000..7e3d5dfe7aa
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.process/.options
@@ -0,0 +1 @@
+org.eclipse.tm.terminal.connector.process/debugmode = 0
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.process/.project b/terminal/plugins/org.eclipse.tm.terminal.connector.process/.project
new file mode 100644
index 00000000000..92d9bc9fd90
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.process/.project
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.tm.terminal.connector.process</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+ </natures>
+ <filteredResources>
+ <filter>
+ <id>1329502082911</id>
+ <name></name>
+ <type>10</type>
+ <matcher>
+ <id>org.eclipse.ui.ide.multiFilter</id>
+ <arguments>1.0-name-matches-false-false-target</arguments>
+ </matcher>
+ </filter>
+ </filteredResources>
+</projectDescription>
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.process/.settings/org.eclipse.core.resources.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.process/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.process/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.process/.settings/org.eclipse.jdt.core.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.process/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..e3a8104f9ca
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.process/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.process/.settings/org.eclipse.jdt.launching.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.process/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 00000000000..f8a131b56e0
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.process/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_COMPILER_COMPLIANCE_DOES_NOT_MATCH_JRE=warning
+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=warning
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.process/.settings/org.eclipse.jdt.ui.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.process/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.process/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.process/.settings/org.eclipse.pde.api.tools.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.process/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 00000000000..ec9fbf321d0
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.process/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,184 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITH_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_FIELD=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERCLASS_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_CHANGED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENTS=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETERS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Error
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Warning
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+MISSING_EE_DESCRIPTIONS=Warning
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=false
+changed_execution_env=Error
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+incompatible_api_component_version_report_major_without_breaking_change=Warning
+incompatible_api_component_version_report_minor_without_api_change=Warning
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.process/.settings/org.eclipse.pde.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.process/.settings/org.eclipse.pde.prefs
new file mode 100644
index 00000000000..d2dc703ba9e
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.process/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,35 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=2
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=2
+compilers.p.missing-version-export-package=2
+compilers.p.missing-version-import-package=2
+compilers.p.missing-version-require-bundle=2
+compilers.p.no-required-att=0
+compilers.p.no.automatic.module=1
+compilers.p.not-externalized-att=1
+compilers.p.service.component.without.lazyactivation=1
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.process/META-INF/MANIFEST.MF b/terminal/plugins/org.eclipse.tm.terminal.connector.process/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..687383155c7
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.process/META-INF/MANIFEST.MF
@@ -0,0 +1,24 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.tm.terminal.connector.process;singleton:=true
+Bundle-Version: 4.8.100.qualifier
+Bundle-Activator: org.eclipse.tm.terminal.connector.process.activator.UIPlugin
+Bundle-Vendor: %providerName
+Import-Package: org.eclipse.cdt.utils.pty;mandatory:=native,
+ org.eclipse.cdt.utils.spawner;mandatory:=native
+Require-Bundle: org.eclipse.core.expressions;bundle-version="3.4.400",
+ org.eclipse.core.resources;bundle-version="3.8.1";resolution:=optional,
+ org.eclipse.core.runtime;bundle-version="3.8.0",
+ org.eclipse.tm.terminal.view.core;bundle-version="4.5.0";resolution:=optional,
+ org.eclipse.tm.terminal.view.ui;bundle-version="4.5.0";resolution:=optional,
+ org.eclipse.tm.terminal.control;bundle-version="4.5.0",
+ org.eclipse.ui;bundle-version="3.8.0"
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Bundle-ActivationPolicy: lazy
+Bundle-Localization: plugin
+Export-Package: org.eclipse.tm.terminal.connector.process,
+ org.eclipse.tm.terminal.connector.process.activator;x-internal:=true,
+ org.eclipse.tm.terminal.connector.process.help,
+ org.eclipse.tm.terminal.connector.process.nls;x-internal:=true
+Automatic-Module-Name: org.eclipse.tm.terminal.connector.process
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.process/META-INF/p2.inf b/terminal/plugins/org.eclipse.tm.terminal.connector.process/META-INF/p2.inf
new file mode 100644
index 00000000000..b5f1c6d45d7
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.process/META-INF/p2.inf
@@ -0,0 +1,87 @@
+###############################################################################
+# Copyright (c) 2014, 2015 Wind River Systems, Inc. and others. All rights reserved.
+# This program and the accompanying materials are made available under the terms
+# of the Eclipse Public License 2.0 which accompanies this distribution, and is
+# available at https://www.eclipse.org/legal/epl-2.0/
+#
+# Contributors:
+# Wind River Systems - initial API and implementation
+###############################################################################
+
+# Most of the dependencies exposed here are actually covered in the feature.xml
+# This file ensures that the current bundle has all it needs, even if installed
+# without the enclosing org.eclipse.tm.terminal.view.feature .
+# See also https://bugs.eclipse.org/bugs/show_bug.cgi?id=435150 .
+
+# 1. Make the optional cdt.core dependency non-greedy: Use (or update to proper
+# version!) when installed, but do not install automatically since the newer
+# org.eclipse.cdt.core.native can satisfy the dependency better. We use this
+# trick since CDT 8.3 had no version on export-package yet but we do want
+# a version constraint.
+requires.0.namespace = org.eclipse.equinox.p2.iu
+requires.0.name = org.eclipse.cdt.core
+#requires.0.range = [5.6, 6.0)
+requires.0.greedy = false
+requires.0.optional = true
+
+#requires.1.namespace = org.eclipse.equinox.p2.iu
+#requires.1.name = org.eclipse.cdt.core.native
+#requires.1.range = [5.6, 6.0)
+#requires.1.greedy = true
+#requires.1.optional = true
+
+# 2. Add the required fragments for local terminal support with proper version.
+requires.2.namespace = org.eclipse.equinox.p2.iu
+requires.2.name = org.eclipse.cdt.core.aix
+#requires.2.range = [5.3, 6.0)
+requires.2.filter = (osgi.os=aix)
+
+requires.3.namespace = org.eclipse.equinox.p2.iu
+requires.3.name = org.eclipse.cdt.core.linux
+#requires.3.range = [5.2, 6.0)
+requires.3.filter = (osgi.os=linux)
+
+requires.4.namespace = org.eclipse.equinox.p2.iu
+requires.4.name = org.eclipse.cdt.core.linux.ppc64
+#requires.4.range = [5.1, 6.0)
+requires.4.filter = (&(osgi.os=linux)(osgi.arch=ppc64))
+
+#requires.5.namespace = org.eclipse.equinox.p2.iu
+#requires.5.name = org.eclipse.cdt.core.linux.x86
+#requires.5.range = [5.2, 6.0)
+#requires.5.filter = (&(osgi.os=linux)(osgi.arch=x86))
+
+requires.6.namespace = org.eclipse.equinox.p2.iu
+requires.6.name = org.eclipse.cdt.core.linux.x86_64
+#requires.6.range = [5.2, 6.0)
+requires.6.filter = (&(osgi.os=linux)(osgi.arch=x86_64))
+
+requires.7.namespace = org.eclipse.equinox.p2.iu
+requires.7.name = org.eclipse.cdt.core.macosx
+#requires.7.range = [5.2, 6.0)
+requires.7.filter = (osgi.os=macosx)
+
+requires.8.namespace = org.eclipse.equinox.p2.iu
+requires.8.name = org.eclipse.cdt.core.solaris
+#requires.8.range = [5.2, 6.0)
+requires.8.filter = (&(osgi.os=solaris)(osgi.arch=sparc))
+
+requires.9.namespace = org.eclipse.equinox.p2.iu
+requires.9.name = org.eclipse.cdt.core.win32
+#requires.9.range = [5.3, 6.0)
+requires.9.filter = (osgi.os=win32)
+
+#requires.10.namespace = org.eclipse.equinox.p2.iu
+#requires.10.name = org.eclipse.cdt.core.win32.x86
+#requires.10.range = [5.2, 6.0)
+#requires.10.filter = (&(osgi.os=win32)(osgi.arch=x86))
+
+requires.11.namespace = org.eclipse.equinox.p2.iu
+requires.11.name = org.eclipse.cdt.core.win32.x86_64
+#requires.11.range = [5.2, 6.0)
+requires.11.filter = (&(osgi.os=win32)(osgi.arch=x86_64))
+
+requires.12.namespace = org.eclipse.equinox.p2.iu
+requires.12.name = org.eclipse.cdt.core.linux.aarch64
+#requires.12.range = [5.2, 6.0)
+requires.12.filter = (&(osgi.os=linux)(osgi.arch=aarch64))
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.process/about.html b/terminal/plugins/org.eclipse.tm.terminal.connector.process/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.process/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.process/build.properties b/terminal/plugins/org.eclipse.tm.terminal.connector.process/build.properties
new file mode 100644
index 00000000000..1f1e5365420
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.process/build.properties
@@ -0,0 +1,19 @@
+###############################################################################
+# Copyright (c) 2012, 2018 Wind River Systems, Inc. and others. All rights reserved.
+# This program and the accompanying materials are made available under the terms
+# of the Eclipse Public License 2.0 which accompanies this distribution, and is
+# available at https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Wind River Systems - initial API and implementation
+###############################################################################
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ plugin.properties,\
+ about.html
+src.includes = about.html
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.process/plugin.properties b/terminal/plugins/org.eclipse.tm.terminal.connector.process/plugin.properties
new file mode 100644
index 00000000000..20001e08799
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.process/plugin.properties
@@ -0,0 +1,24 @@
+##################################################################################
+# Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved.
+# This program and the accompanying materials are made available under the terms
+# of the Eclipse Public License 2.0 which accompanies this distribution, and is
+# available at https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Wind River Systems - initial API and implementation
+##################################################################################
+
+pluginName = Terminal Process Connector
+providerName = Eclipse CDT
+
+# ----- Terminal Connectors -----
+
+TerminalConnector.process=Process Connector (hidden)
+
+# ----- Terminal Launcher Delegates -----
+
+ProcessLauncherDelegate.label=Streams Terminal
+
+# ----- Commands and Menu contributions -----
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.process/plugin.xml b/terminal/plugins/org.eclipse.tm.terminal.connector.process/plugin.xml
new file mode 100644
index 00000000000..4b981ff8272
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.process/plugin.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<!--
+ Copyright (c) 2018 Red Hat and others.
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+ -->
+
+<plugin>
+
+<!-- Terminal connector contributions -->
+ <extension point="org.eclipse.tm.terminal.control.connectors">
+ <connector
+ class="org.eclipse.tm.terminal.connector.process.ProcessConnector"
+ hidden="true"
+ id="org.eclipse.tm.terminal.connector.process.ProcessConnector"
+ name="%TerminalConnector.process"/>
+ </extension>
+
+<!-- Terminal launcher delegate contributions -->
+ <extension point="org.eclipse.tm.terminal.view.ui.launcherDelegates">
+ <delegate
+ class="org.eclipse.tm.terminal.connector.process.ProcessLauncherDelegate"
+ hidden="true"
+ id="org.eclipse.tm.terminal.connector.process.launcher.process"
+ label="%ProcessLauncherDelegate.label">
+ </delegate>
+ </extension>
+
+</plugin>
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/ProcessConnector.java b/terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/ProcessConnector.java
new file mode 100644
index 00000000000..7b519189445
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/ProcessConnector.java
@@ -0,0 +1,327 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ * Kaloyan Raev - Bug 485658 - NPE prevents displaying the actual error
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.process;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.StreamTokenizer;
+import java.io.StringReader;
+import java.nio.file.FileSystems;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
+
+import org.eclipse.cdt.utils.pty.PTY;
+import org.eclipse.cdt.utils.spawner.ProcessFactory;
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.swt.custom.CTabItem;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.tm.internal.terminal.emulator.VT100Emulator;
+import org.eclipse.tm.internal.terminal.emulator.VT100TerminalControl;
+import org.eclipse.tm.internal.terminal.provisional.api.ISettingsStore;
+import org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl;
+import org.eclipse.tm.internal.terminal.provisional.api.NullSettingsStore;
+import org.eclipse.tm.internal.terminal.provisional.api.TerminalState;
+import org.eclipse.tm.terminal.connector.process.activator.UIPlugin;
+import org.eclipse.tm.terminal.connector.process.nls.Messages;
+import org.eclipse.tm.terminal.view.core.interfaces.constants.ILineSeparatorConstants;
+import org.eclipse.tm.terminal.view.core.utils.Env;
+import org.eclipse.tm.terminal.view.ui.manager.ConsoleManager;
+import org.eclipse.tm.terminal.view.ui.streams.AbstractStreamsConnector;
+
+/**
+ * Process connector implementation.
+ */
+@SuppressWarnings("restriction")
+public class ProcessConnector extends AbstractStreamsConnector {
+ // Reference to the process settings
+ private final ProcessSettings settings;
+
+ // Reference to the PTY instance.
+ private PTY pty;
+ // Reference to the launched process instance.
+ private Process process;
+ // Reference to the process monitor
+ private ProcessMonitor monitor;
+
+ // The terminal width and height. Initially unknown.
+ private int width = -1;
+ private int height = -1;
+
+ /**
+ * Constructor.
+ */
+ public ProcessConnector() {
+ this(new ProcessSettings());
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param settings The process settings. Must not be <code>null</code>
+ */
+ public ProcessConnector(ProcessSettings settings) {
+ super();
+
+ Assert.isNotNull(settings);
+ this.settings = settings;
+ }
+
+ /**
+ * Returns the process object or <code>null</code> if the
+ * connector is connector.
+ *
+ * @return The process object or <code>null</code>.
+ */
+ public Process getProcess() {
+ return process;
+ }
+
+ @Override
+ public void connect(ITerminalControl control) {
+ Assert.isNotNull(control);
+ super.connect(control);
+
+ pty = null;
+ width = -1;
+ height = -1;
+
+ try {
+ boolean isAnsiTerminal = false;
+
+ // Try to determine process and PTY instance from the process settings
+ process = settings.getProcess();
+ pty = settings.getPTY();
+
+ // No process -> create PTY on supported platforms and execute
+ // process image.
+ if (process == null) {
+ if (PTY.isSupported(PTY.Mode.TERMINAL)) {
+ try {
+ pty = new PTY(PTY.Mode.TERMINAL);
+
+ // Initialize the terminal size
+ VT100Emulator text = ((VT100TerminalControl) control).getTerminalText();
+ text.fontChanged();
+ } catch (IOException e) {
+ // PTY not supported
+ }
+ }
+
+ // Build up the command
+ StringBuilder command = new StringBuilder(settings.getImage());
+ String arguments = settings.getArguments();
+ if (arguments != null && !"".equals(arguments.trim())) { //$NON-NLS-1$
+ // Append to the command now
+ command.append(" "); //$NON-NLS-1$
+ command.append(arguments.trim());
+ }
+
+ File workingDir = null;
+ if (settings.getWorkingDir() != null) {
+ workingDir = new File(settings.getWorkingDir());
+ }
+
+ String[] envp = null;
+ if (settings.getEnvironment() != null) {
+ envp = settings.getEnvironment();
+ }
+
+ if (settings.isMergeWithNativeEnvironment()) {
+ envp = Env.getEnvironment(envp, true);
+ }
+
+ isAnsiTerminal = getTermVariable(envp).startsWith("ansi"); //$NON-NLS-1$
+
+ if (pty != null) {
+ // A PTY is available -> can use the ProcessFactory.
+
+ // Tokenize the command (ProcessFactory takes an array)
+ StreamTokenizer st = new StreamTokenizer(new StringReader(command.toString()));
+ st.resetSyntax();
+ st.whitespaceChars(0, 32);
+ st.whitespaceChars(0xa0, 0xa0);
+ st.wordChars(33, 255);
+ st.quoteChar('"');
+ st.quoteChar('\'');
+
+ List<String> argv = new ArrayList<>();
+ int ttype = st.nextToken();
+ while (ttype != StreamTokenizer.TT_EOF) {
+ argv.add(st.sval);
+ ttype = st.nextToken();
+ }
+
+ // Execute the process
+ process = ProcessFactory.getFactory().exec(argv.toArray(new String[argv.size()]), envp, workingDir,
+ pty);
+ } else {
+ // No PTY -> just execute via the standard Java Runtime implementation.
+ process = Runtime.getRuntime().exec(command.toString(), envp, workingDir);
+ }
+ }
+
+ String lineSeparator = settings.getLineSeparator();
+ if (lineSeparator == null && pty == null) {
+ lineSeparator = System.getProperty("line.separator"); //$NON-NLS-1$
+ if ("\r".equals(lineSeparator)) { //$NON-NLS-1$
+ lineSeparator = ILineSeparatorConstants.LINE_SEPARATOR_CR;
+ } else if ("\n".equals(lineSeparator)) { //$NON-NLS-1$
+ lineSeparator = ILineSeparatorConstants.LINE_SEPARATOR_LF;
+ } else {
+ lineSeparator = ILineSeparatorConstants.LINE_SEPARATOR_CRLF;
+ }
+ }
+
+ // Setup the listeners
+ setStdoutListeners(settings.getStdOutListeners());
+ setStderrListeners(settings.getStdErrListeners());
+
+ // Enable VT100 line wrapping if we are connected via pty
+ // And TERM is VT100 compatible
+ if (pty != null && !isAnsiTerminal)
+ control.setVT100LineWrapping(true);
+
+ // connect the streams
+ connectStreams(control, process.getOutputStream(), process.getInputStream(),
+ (pty == null ? process.getErrorStream() : null), settings.isLocalEcho(), lineSeparator);
+
+ // Set the terminal control state to CONNECTED
+ control.setState(TerminalState.CONNECTED);
+
+ // Create the process monitor
+ monitor = new ProcessMonitor(this);
+ monitor.startMonitoring();
+ } catch (IOException e) {
+ // Disconnect right away
+ disconnect();
+ // Save the shell so the error message can have somewhere to display
+ Shell shell = control.getShell();
+ // Lookup the tab item
+ CTabItem item = ConsoleManager.getInstance().findConsole(control);
+ if (item != null)
+ item.dispose();
+ // Get the error message from the exception
+ String msg = e.getLocalizedMessage() != null ? e.getLocalizedMessage() : ""; //$NON-NLS-1$
+ Assert.isNotNull(msg);
+ // Strip away "Exec_tty error:"
+ msg = msg.replace("Exec_tty error:", "").trim(); //$NON-NLS-1$ //$NON-NLS-2$
+ // Repackage into a more user friendly error
+ msg = NLS.bind(Messages.ProcessConnector_error_creatingProcess, settings.getImage(), msg);
+ // Open an error dialog
+ MessageDialog.openError(shell, Messages.ProcessConnector_error_title, msg);
+ }
+ }
+
+ private static String getTermVariable(String[] envp) {
+ if (envp != null && !Platform.OS_WIN32.equals(Platform.getOS()))
+ for (String var : envp)
+ if (var.startsWith("TERM=")) //$NON-NLS-1$
+ return var.substring(5);
+ return "xterm"; //$NON-NLS-1$
+ }
+
+ @Override
+ public boolean isLocalEcho() {
+ return settings.isLocalEcho();
+ }
+
+ @Override
+ public void doDisconnect() {
+ // Stop monitoring the process
+ if (monitor != null) {
+ monitor.dispose();
+ }
+
+ boolean isWindows = Platform.OS_WIN32.equals(Platform.getOS());
+
+ if (!isWindows) {
+ // Destroy the process first, except on windows (Bug 465674)
+ if (process != null) {
+ process.destroy();
+ process = null;
+ }
+ }
+
+ // Dispose the streams
+ super.doDisconnect();
+
+ if (isWindows) {
+ // On Windows destroy the process after closing streams
+ if (process != null) {
+ process.destroy();
+ process = null;
+ }
+ }
+
+ // Set the terminal control state to CLOSED.
+ fControl.setState(TerminalState.CLOSED);
+ }
+
+ @Override
+ public void setDefaultSettings() {
+ settings.load(new NullSettingsStore());
+ }
+
+ @Override
+ public String getSettingsSummary() {
+ return settings.getImage() != null ? settings.getImage() : ""; //$NON-NLS-1$
+ }
+
+ @Override
+ public void load(ISettingsStore store) {
+ settings.load(store);
+ }
+
+ @Override
+ public void save(ISettingsStore store) {
+ settings.save(store);
+ }
+
+ @Override
+ public void setTerminalSize(int newWidth, int newHeight) {
+ if (width != newWidth || height != newHeight) {
+ width = newWidth;
+ height = newHeight;
+ if (pty != null) {
+ pty.setTerminalSize(newWidth, newHeight);
+ }
+ }
+ }
+
+ /**
+ * @since 4.8
+ */
+ @Override
+ public Optional<String> getWorkingDirectory() {
+ try {
+ long pid = process.pid();
+ try {
+ if (Platform.getOS().equals(Platform.OS_LINUX)) {
+ Path procCwd = Files.readSymbolicLink(FileSystems.getDefault().getPath("/proc/" + pid + "/cwd")); //$NON-NLS-1$//$NON-NLS-2$
+ return Optional.of(procCwd.toAbsolutePath().toString());
+ }
+ } catch (Exception e) {
+ UIPlugin.log("Failed to obtain working directory of process id " + pid, e); //$NON-NLS-1$
+ }
+ } catch (Exception e) {
+ UIPlugin.log("Failed to obtain process id of terminal process", e); //$NON-NLS-1$
+ }
+ return Optional.empty();
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/ProcessLauncherDelegate.java b/terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/ProcessLauncherDelegate.java
new file mode 100644
index 00000000000..89c114365c6
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/ProcessLauncherDelegate.java
@@ -0,0 +1,127 @@
+/*******************************************************************************
+ * Copyright (c) 2015, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.process;
+
+import java.util.Map;
+
+import org.eclipse.cdt.utils.pty.PTY;
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.tm.internal.terminal.provisional.api.ISettingsStore;
+import org.eclipse.tm.internal.terminal.provisional.api.ITerminalConnector;
+import org.eclipse.tm.internal.terminal.provisional.api.TerminalConnectorExtension;
+import org.eclipse.tm.terminal.view.core.TerminalServiceFactory;
+import org.eclipse.tm.terminal.view.core.interfaces.ITerminalService;
+import org.eclipse.tm.terminal.view.core.interfaces.ITerminalServiceOutputStreamMonitorListener;
+import org.eclipse.tm.terminal.view.core.interfaces.constants.ITerminalsConnectorConstants;
+import org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanel;
+import org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanelContainer;
+import org.eclipse.tm.terminal.view.ui.internal.SettingsStore;
+import org.eclipse.tm.terminal.view.ui.launcher.AbstractLauncherDelegate;
+
+/**
+ * Process launcher delegate implementation.
+ */
+@SuppressWarnings("restriction")
+public class ProcessLauncherDelegate extends AbstractLauncherDelegate {
+
+ @Override
+ public boolean needsUserConfiguration() {
+ return false;
+ }
+
+ @Override
+ public IConfigurationPanel getPanel(IConfigurationPanelContainer container) {
+ return null;
+ }
+
+ @Override
+ public void execute(Map<String, Object> properties, ITerminalService.Done done) {
+ Assert.isNotNull(properties);
+
+ // Get the terminal service
+ ITerminalService terminal = TerminalServiceFactory.getService();
+ // If not available, we cannot fulfill this request
+ if (terminal != null) {
+ terminal.openConsole(properties, done);
+ }
+ }
+
+ @Override
+ public ITerminalConnector createTerminalConnector(Map<String, Object> properties) {
+ Assert.isNotNull(properties);
+
+ // Check for the terminal connector id
+ String connectorId = (String) properties.get(ITerminalsConnectorConstants.PROP_TERMINAL_CONNECTOR_ID);
+ if (connectorId == null)
+ connectorId = "org.eclipse.tm.terminal.connector.process.ProcessConnector"; //$NON-NLS-1$
+
+ // Extract the process properties
+ String image = (String) properties.get(ITerminalsConnectorConstants.PROP_PROCESS_PATH);
+ String arguments = (String) properties.get(ITerminalsConnectorConstants.PROP_PROCESS_ARGS);
+ Process process = (Process) properties.get(ITerminalsConnectorConstants.PROP_PROCESS_OBJ);
+ PTY pty = (PTY) properties.get(ITerminalsConnectorConstants.PROP_PTY_OBJ);
+ Object value = properties.get(ITerminalsConnectorConstants.PROP_LOCAL_ECHO);
+ boolean localEcho = value instanceof Boolean ? ((Boolean) value).booleanValue() : false;
+ String lineSeparator = (String) properties.get(ITerminalsConnectorConstants.PROP_LINE_SEPARATOR);
+ ITerminalServiceOutputStreamMonitorListener[] stdoutListeners = (ITerminalServiceOutputStreamMonitorListener[]) properties
+ .get(ITerminalsConnectorConstants.PROP_STDOUT_LISTENERS);
+ ITerminalServiceOutputStreamMonitorListener[] stderrListeners = (ITerminalServiceOutputStreamMonitorListener[]) properties
+ .get(ITerminalsConnectorConstants.PROP_STDERR_LISTENERS);
+ String workingDir = (String) properties.get(ITerminalsConnectorConstants.PROP_PROCESS_WORKING_DIR);
+
+ String[] envp = null;
+ if (properties.containsKey(ITerminalsConnectorConstants.PROP_PROCESS_ENVIRONMENT)
+ && properties.get(ITerminalsConnectorConstants.PROP_PROCESS_ENVIRONMENT) != null
+ && properties.get(ITerminalsConnectorConstants.PROP_PROCESS_ENVIRONMENT) instanceof String[]) {
+ envp = (String[]) properties.get(ITerminalsConnectorConstants.PROP_PROCESS_ENVIRONMENT);
+ }
+
+ Assert.isTrue(image != null || process != null);
+
+ // Construct the terminal settings store
+ ISettingsStore store = new SettingsStore();
+
+ // Construct the process settings
+ ProcessSettings processSettings = new ProcessSettings();
+ processSettings.setImage(image);
+ processSettings.setArguments(arguments);
+ processSettings.setProcess(process);
+ processSettings.setPTY(pty);
+ processSettings.setLocalEcho(localEcho);
+ processSettings.setLineSeparator(lineSeparator);
+ processSettings.setStdOutListeners(stdoutListeners);
+ processSettings.setStdErrListeners(stderrListeners);
+ processSettings.setWorkingDir(workingDir);
+ processSettings.setEnvironment(envp);
+
+ if (properties.containsKey(ITerminalsConnectorConstants.PROP_PROCESS_MERGE_ENVIRONMENT)) {
+ value = properties.get(ITerminalsConnectorConstants.PROP_PROCESS_MERGE_ENVIRONMENT);
+ processSettings
+ .setMergeWithNativeEnvironment(value instanceof Boolean ? ((Boolean) value).booleanValue() : false);
+ }
+
+ // And save the settings to the store
+ processSettings.save(store);
+
+ // Construct the terminal connector instance
+ ITerminalConnector connector = TerminalConnectorExtension.makeTerminalConnector(connectorId);
+ if (connector != null) {
+ // Apply default settings
+ connector.setDefaultSettings();
+ // And load the real settings
+ connector.load(store);
+ }
+
+ return connector;
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/ProcessMonitor.java b/terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/ProcessMonitor.java
new file mode 100644
index 00000000000..f40cca74fd0
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/ProcessMonitor.java
@@ -0,0 +1,104 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.process;
+
+import org.eclipse.core.runtime.Assert;
+
+/**
+ * Process monitor implementation.
+ */
+public class ProcessMonitor {
+ // Reference to the parent process connector
+ private final ProcessConnector processConnector;
+ // Reference to the monitored process
+ private final Process process;
+ // Reference to the monitor thread
+ private Thread thread;
+ // Flag to mark the monitor disposed
+ private boolean disposed;
+
+ /**
+ * Constructor.
+ *
+ * @param processConnector The parent process connector. Must not be <code>null</code>.
+ */
+ public ProcessMonitor(ProcessConnector processConnector) {
+ super();
+
+ Assert.isNotNull(processConnector);
+ this.processConnector = processConnector;
+
+ // Query the monitored process for easier access
+ this.process = processConnector.getProcess();
+ }
+
+ /**
+ * Dispose the process monitor.
+ */
+ public void dispose() {
+ // Set the disposed status
+ disposed = true;
+ // Not initialized -> return immediately
+ if (thread == null)
+ return;
+
+ // Copy the reference
+ final Thread oldThread = thread;
+ // Unlink the monitor from the thread
+ thread = null;
+ // And interrupt the writer thread
+ oldThread.interrupt();
+ }
+
+ /**
+ * Starts the terminal output stream monitor.
+ */
+ public void startMonitoring() {
+ // If already initialized -> return immediately
+ if (thread != null)
+ return;
+
+ // Create a new runnable which is constantly reading from the stream
+ Runnable runnable = () -> monitorProcess();
+
+ // Create the monitor thread
+ thread = new Thread(runnable, "Terminal Process Monitor Thread"); //$NON-NLS-1$
+
+ // Configure the monitor thread
+ thread.setDaemon(true);
+
+ // Start the processing
+ thread.start();
+ }
+
+ /**
+ * Monitors the associated system process, waiting for it to terminate,
+ * and notifies the associated process monitor's.
+ */
+ public void monitorProcess() {
+ // If already disposed -> return immediately
+ if (disposed)
+ return;
+
+ try {
+ // Wait for the monitored process to terminate
+ process.waitFor();
+ } catch (InterruptedException ie) {
+ // clear interrupted state
+ Thread.interrupted();
+ } finally {
+ // Dispose the parent process connector
+ if (!disposed)
+ processConnector.disconnect();
+ }
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/ProcessSettings.java b/terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/ProcessSettings.java
new file mode 100644
index 00000000000..48b55a0b4fc
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/ProcessSettings.java
@@ -0,0 +1,305 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.process;
+
+import org.eclipse.cdt.utils.pty.PTY;
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.tm.internal.terminal.provisional.api.ISettingsStore;
+import org.eclipse.tm.terminal.view.core.interfaces.ITerminalServiceOutputStreamMonitorListener;
+import org.eclipse.tm.terminal.view.ui.internal.SettingsStore;
+
+/**
+ * Process connector settings implementation.
+ */
+@SuppressWarnings("restriction")
+public class ProcessSettings {
+ // Reference to the process image
+ private String image;
+ // Reference to the process arguments (space separated string)
+ private String arguments;
+ // Reference to the process object
+ private Process process;
+ // Reference to the pseudo terminal object
+ private PTY pty;
+ // Flag to control the local echo (defaults to true if
+ // the PTY is not supported on the current host platform)
+ private boolean localEcho = !PTY.isSupported(PTY.Mode.CONSOLE);
+ // The line separator setting
+ private String lineSeparator = null;
+ // The list of stdout output listeners
+ private ITerminalServiceOutputStreamMonitorListener[] stdoutListeners = null;
+ // The list of stderr output listeners
+ private ITerminalServiceOutputStreamMonitorListener[] stderrListeners = null;
+ // working directory for process
+ private String workingDir;
+ // environment
+ private String[] environment;
+ // Flag to control if the provided environment is
+ // automatically merged with the native process environment.
+ // Defaults to "true".
+ private boolean mergeWithNativeEnvironment = true;
+
+ /**
+ * Sets the process image.
+ *
+ * @param image The process image or <code>null</code>.
+ */
+ public void setImage(String image) {
+ this.image = image;
+ }
+
+ /**
+ * Returns the process image.
+ *
+ * @return The process image or <code>null</code>.
+ */
+ public String getImage() {
+ return image;
+ }
+
+ /**
+ * Sets the process arguments.
+ * <p>
+ * The arguments are space separated. The caller is responsible for
+ * correct quoting.
+ *
+ * @param arguments The process arguments or <code>null</code>.
+ */
+ public void setArguments(String arguments) {
+ this.arguments = arguments;
+ }
+
+ /**
+ * Returns the process arguments.
+ *
+ * @return The process arguments as space separated list or <code>null</code>.
+ */
+ public String getArguments() {
+ return arguments;
+ }
+
+ /**
+ * Sets the process object.
+ *
+ * @param image The process object or <code>null</code>.
+ */
+ public void setProcess(Process process) {
+ this.process = process;
+ }
+
+ /**
+ * Returns the process object.
+ *
+ * @return The process object or <code>null</code>.
+ */
+ public Process getProcess() {
+ return process;
+ }
+
+ /**
+ * Sets the pseudo terminal object.
+ *
+ * @param pty The pseudo terminal or <code>null</code>.
+ */
+ public void setPTY(PTY pty) {
+ this.pty = pty;
+ // If the PTY is set to "null", the local echo will be set to "true"
+ if (pty == null)
+ setLocalEcho(true);
+ }
+
+ /**
+ * Returns the pseudo terminal object.
+ *
+ * @return The pseudo terminal or <code>null</code>.
+ */
+ public PTY getPTY() {
+ return pty;
+ }
+
+ /**
+ * Sets if the process requires a local echo from the
+ * terminal widget.
+ *
+ * @param value Specify <code>true</code> to enable the local echo, <code>false</code> otherwise.
+ */
+ public void setLocalEcho(boolean value) {
+ this.localEcho = value;
+ }
+
+ /**
+ * Returns <code>true</code> if the process requires a local echo
+ * from the terminal widget.
+ *
+ * @return <code>True</code> if local echo is enabled, <code>false</code> otherwise.
+ */
+ public boolean isLocalEcho() {
+ return localEcho;
+ }
+
+ /**
+ * Sets the process line separator.
+ *
+ * @param separator The process line separator <code>null</code>.
+ */
+ public void setLineSeparator(String separator) {
+ this.lineSeparator = separator;
+ }
+
+ /**
+ * Returns the process line separator.
+ *
+ * @return The process line separator or <code>null</code>.
+ */
+ public String getLineSeparator() {
+ return lineSeparator;
+ }
+
+ /**
+ * Sets the list of stdout listeners.
+ *
+ * @param listeners The list of stdout listeners or <code>null</code>.
+ */
+ public void setStdOutListeners(ITerminalServiceOutputStreamMonitorListener[] listeners) {
+ this.stdoutListeners = listeners;
+ }
+
+ /**
+ * Returns the list of stdout listeners.
+ *
+ * @return The list of stdout listeners or <code>null</code>.
+ */
+ public ITerminalServiceOutputStreamMonitorListener[] getStdOutListeners() {
+ return stdoutListeners;
+ }
+
+ /**
+ * Sets the list of stderr listeners.
+ *
+ * @param listeners The list of stderr listeners or <code>null</code>.
+ */
+ public void setStdErrListeners(ITerminalServiceOutputStreamMonitorListener[] listeners) {
+ this.stderrListeners = listeners;
+ }
+
+ /**
+ * Returns the list of stderr listeners.
+ *
+ * @return The list of stderr listeners or <code>null</code>.
+ */
+ public ITerminalServiceOutputStreamMonitorListener[] getStdErrListeners() {
+ return stderrListeners;
+ }
+
+ /**
+ * Returns the working directory
+ *
+ * @return
+ */
+ public String getWorkingDir() {
+ return this.workingDir;
+ }
+
+ /**
+ * Sets the working directory of the process
+ *
+ * @param workingDir the absolute path of the working directory
+ */
+ public void setWorkingDir(String workingDir) {
+ this.workingDir = workingDir;
+ }
+
+ /**
+ * Get the process environment
+ *
+ * @return
+ */
+ public String[] getEnvironment() {
+ return environment;
+ }
+
+ /**
+ * Sets the process environment
+ *
+ * @param environment - will be added to the "parent" environment of the process
+ */
+ public void setEnvironment(String[] environment) {
+ this.environment = environment;
+ }
+
+ /**
+ * Returns if or if not the provided environment is merged with
+ * the native process environment.
+ *
+ * @return <code>True</code> if the provided environment is merged with the native process environment, <code>false</code> otherwise.
+ */
+ public boolean isMergeWithNativeEnvironment() {
+ return mergeWithNativeEnvironment;
+ }
+
+ /**
+ * Sets if or if not the provided environment is merged with the
+ * native process environment.
+ *
+ * @param value <code>True</code> if the provided environment is merged with the native process environment, <code>false</code> otherwise.
+ */
+ public void setMergeWithNativeEnvironment(boolean value) {
+ this.mergeWithNativeEnvironment = value;
+ }
+
+ /**
+ * Loads the process settings from the given settings store.
+ *
+ * @param store The settings store. Must not be <code>null</code>.
+ */
+ public void load(ISettingsStore store) {
+ Assert.isNotNull(store);
+ image = store.get("Path", null);//$NON-NLS-1$
+ arguments = store.get("Arguments", null); //$NON-NLS-1$
+ localEcho = Boolean.parseBoolean(store.get("LocalEcho", Boolean.FALSE.toString())); //$NON-NLS-1$
+ mergeWithNativeEnvironment = Boolean
+ .parseBoolean(store.get("MergeWithNativeEnvironment", Boolean.FALSE.toString())); //$NON-NLS-1$
+ lineSeparator = store.get("LineSeparator", null); //$NON-NLS-1$
+ workingDir = store.get("WorkingDir", null); //$NON-NLS-1$
+ if (store instanceof SettingsStore) {
+ process = (Process) ((SettingsStore) store).getSettings().get("Process"); //$NON-NLS-1$
+ pty = (PTY) ((SettingsStore) store).getSettings().get("PTY"); //$NON-NLS-1$
+ stdoutListeners = (ITerminalServiceOutputStreamMonitorListener[]) ((SettingsStore) store).getSettings()
+ .get("StdOutListeners"); //$NON-NLS-1$
+ stderrListeners = (ITerminalServiceOutputStreamMonitorListener[]) ((SettingsStore) store).getSettings()
+ .get("StdErrListeners"); //$NON-NLS-1$
+ environment = (String[]) ((SettingsStore) store).getSettings().get("Environment"); //$NON-NLS-1$
+ }
+ }
+
+ /**
+ * Saves the process settings to the given settings store.
+ *
+ * @param store The settings store. Must not be <code>null</code>.
+ */
+ public void save(ISettingsStore store) {
+ Assert.isNotNull(store);
+ store.put("Path", image);//$NON-NLS-1$
+ store.put("Arguments", arguments); //$NON-NLS-1$
+ store.put("LocalEcho", Boolean.toString(localEcho)); //$NON-NLS-1$
+ store.put("MergeWithNativeEnvironment", Boolean.toString(mergeWithNativeEnvironment)); //$NON-NLS-1$
+ store.put("LineSeparator", lineSeparator); //$NON-NLS-1$
+ store.put("WorkingDir", workingDir); //$NON-NLS-1$
+ if (store instanceof SettingsStore) {
+ ((SettingsStore) store).getSettings().put("Process", process); //$NON-NLS-1$
+ ((SettingsStore) store).getSettings().put("PTY", pty); //$NON-NLS-1$
+ ((SettingsStore) store).getSettings().put("StdOutListeners", stdoutListeners); //$NON-NLS-1$
+ ((SettingsStore) store).getSettings().put("StdErrListeners", stderrListeners); //$NON-NLS-1$
+ ((SettingsStore) store).getSettings().put("Environment", environment); //$NON-NLS-1$
+ }
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/ProcessSettingsPage.java b/terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/ProcessSettingsPage.java
new file mode 100644
index 00000000000..3560c2021bc
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/ProcessSettingsPage.java
@@ -0,0 +1,191 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.process;
+
+import org.eclipse.cdt.utils.pty.PTY;
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.FileDialog;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.tm.internal.terminal.provisional.api.AbstractSettingsPage;
+import org.eclipse.tm.terminal.view.ui.nls.Messages;
+import org.eclipse.ui.PlatformUI;
+import org.osgi.framework.Bundle;
+
+/**
+ * Process connector settings page implementation.
+ */
+@SuppressWarnings("restriction")
+public class ProcessSettingsPage extends AbstractSettingsPage {
+ private Text processImageSelectorControl;
+ private Button processImageSelectorControlButton;
+ private Text processArgumentsControl;
+ private Button localEchoSelectorControl;
+ private Text processWorkingDirControl;
+
+ private final ProcessSettings settings;
+
+ /**
+ * Constructor.
+ *
+ * @param settings
+ */
+ public ProcessSettingsPage(ProcessSettings settings) {
+ super();
+
+ Assert.isNotNull(settings);
+ this.settings = settings;
+ }
+
+ @Override
+ public void createControl(Composite parent) {
+ Composite composite = new Composite(parent, SWT.NONE);
+ composite.setLayout(new GridLayout());
+ composite.setLayoutData(new GridData(GridData.FILL_BOTH));
+
+ // The entry fields shall be properly aligned
+ Composite panel = new Composite(composite, SWT.NONE);
+ GridLayout layout = new GridLayout(2, false);
+ layout.marginWidth = 0;
+ layout.marginHeight = 0;
+ panel.setLayout(layout);
+ panel.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+ // Create the process image selector control
+ Label label = new Label(panel, SWT.HORIZONTAL);
+ label.setText(Messages.ProcessSettingsPage_processImagePathSelectorControl_label);
+
+ // Text field and browse button are aligned it their own panel
+ Composite innerPanel = new Composite(panel, SWT.NONE);
+ layout = new GridLayout(2, false);
+ layout.marginWidth = 0;
+ layout.marginHeight = 0;
+ innerPanel.setLayout(layout);
+ innerPanel.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+ processImageSelectorControl = new Text(innerPanel, SWT.SINGLE | SWT.BORDER);
+ processImageSelectorControl.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+ processImageSelectorControlButton = new Button(innerPanel, SWT.PUSH);
+ processImageSelectorControlButton.setText(Messages.ProcessSettingsPage_processImagePathSelectorControl_button);
+ processImageSelectorControlButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ onBrowseButtonSelected(e);
+ }
+ });
+
+ // Create the process arguments control
+ label = new Label(panel, SWT.HORIZONTAL);
+ label.setText(Messages.ProcessSettingsPage_processArgumentsControl_label);
+
+ processArgumentsControl = new Text(panel, SWT.SINGLE | SWT.BORDER);
+ processArgumentsControl.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+ // Create the process arguments control
+ label = new Label(panel, SWT.HORIZONTAL);
+ label.setText(Messages.ProcessSettingsPage_processWorkingDirControl_label);
+
+ processWorkingDirControl = new Text(panel, SWT.SINGLE | SWT.BORDER);
+ processWorkingDirControl.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+ // Create the local echo check box
+ localEchoSelectorControl = new Button(composite, SWT.CHECK);
+ localEchoSelectorControl.setText(Messages.ProcessSettingsPage_localEchoSelectorControl_label);
+ localEchoSelectorControl.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ localEchoSelectorControl.setSelection(!PTY.isSupported(PTY.Mode.CONSOLE));
+
+ // Initialize the control content
+ loadSettings();
+ }
+
+ /**
+ * Called once the user pressed the browse button.
+ *
+ * @param e The selection event or <code>null</code>.
+ */
+ protected void onBrowseButtonSelected(SelectionEvent e) {
+ // Determine the shell
+ Shell shell = e != null ? e.widget.getDisplay().getActiveShell()
+ : PlatformUI.getWorkbench().getDisplay().getActiveShell();
+
+ // create a standard file dialog
+ FileDialog dialog = new FileDialog(shell, SWT.OPEN);
+ dialog.setText(Messages.ProcessSettingsPage_dialogTitle);
+
+ // the dialog should open within the directory of the currently selected
+ // file. If no file has been currently selected, it should open within the
+ // last browsed directory.
+ String selectedFile = processImageSelectorControl.getText();
+ if (selectedFile != null && selectedFile.trim().length() > 0) {
+ IPath filePath = new Path(selectedFile);
+ // If the selected file points to an directory, use the directory as is
+ IPath filterPath = filePath.toFile().isDirectory() ? filePath : filePath.removeLastSegments(1);
+ String filterFileName = filePath.toFile().isDirectory() || !filePath.toFile().exists() ? null
+ : filePath.lastSegment();
+
+ if (!filterPath.isEmpty()) {
+ dialog.setFilterPath(filterPath.toString());
+ }
+ if (filterFileName != null) {
+ dialog.setFileName(filterFileName);
+ }
+ } else {
+ Bundle bundle = Platform.getBundle("org.eclipse.core.resources"); //$NON-NLS-1$
+ if (bundle != null && bundle.getState() != Bundle.UNINSTALLED && bundle.getState() != Bundle.STOPPING) {
+ dialog.setFilterPath(
+ org.eclipse.core.resources.ResourcesPlugin.getWorkspace().getRoot().getLocation().toOSString());
+ }
+ }
+
+ // Open the dialog
+ selectedFile = dialog.open();
+ if (selectedFile != null) {
+ processImageSelectorControl.setText(selectedFile);
+ }
+ }
+
+ @Override
+ public void saveSettings() {
+ settings.setImage(processImageSelectorControl.getText());
+ settings.setArguments(processArgumentsControl.getText());
+ settings.setLocalEcho(localEchoSelectorControl.getSelection());
+ settings.setWorkingDir(processWorkingDirControl.getText());
+ settings.setProcess(null);
+ }
+
+ @Override
+ public void loadSettings() {
+ processImageSelectorControl.setText(settings.getImage());
+ processArgumentsControl.setText(settings.getArguments());
+ localEchoSelectorControl.setSelection(settings.isLocalEcho());
+ processWorkingDirControl.setText(settings.getWorkingDir());
+ }
+
+ @Override
+ public boolean validateSettings() {
+ // The settings are considered valid if the selected process image can be read.
+ String selectedFile = processImageSelectorControl.getText();
+ return selectedFile != null && !"".equals(selectedFile.trim()) && new Path(selectedFile).toFile().canRead(); //$NON-NLS-1$
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/activator/UIPlugin.java b/terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/activator/UIPlugin.java
new file mode 100644
index 00000000000..00a56ddb17e
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/activator/UIPlugin.java
@@ -0,0 +1,117 @@
+/*******************************************************************************
+ * Copyright (c) 2012, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.process.activator;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.resource.ImageRegistry;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.tm.terminal.view.core.tracing.TraceHandler;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class UIPlugin extends AbstractUIPlugin {
+ // The shared instance
+ private static UIPlugin plugin;
+
+ // The trace handler instance
+ private static volatile TraceHandler traceHandler;
+
+ /**
+ * The constructor
+ */
+ public UIPlugin() {
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static UIPlugin getDefault() {
+ return plugin;
+ }
+
+ /**
+ * Convenience method which returns the unique identifier of this plugin.
+ */
+ public static String getUniqueIdentifier() {
+ if (getDefault() != null && getDefault().getBundle() != null) {
+ return getDefault().getBundle().getSymbolicName();
+ }
+ return "org.eclipse.tm.terminal.connector.process"; //$NON-NLS-1$
+ }
+
+ /**
+ * Returns the bundles trace handler.
+ *
+ * @return The bundles trace handler.
+ */
+ public static TraceHandler getTraceHandler() {
+ if (traceHandler == null) {
+ traceHandler = new TraceHandler(getUniqueIdentifier());
+ }
+ return traceHandler;
+ }
+
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ @Override
+ protected void initializeImageRegistry(ImageRegistry registry) {
+ super.initializeImageRegistry(registry);
+ }
+
+ /**
+ * Loads the image registered under the specified key from the image
+ * registry and returns the <code>Image</code> object instance.
+ *
+ * @param key The key the image is registered with.
+ * @return The <code>Image</code> object instance or <code>null</code>.
+ */
+ public static Image getImage(String key) {
+ return getDefault().getImageRegistry().get(key);
+ }
+
+ /**
+ * Loads the image registered under the specified key from the image
+ * registry and returns the <code>ImageDescriptor</code> object instance.
+ *
+ * @param key The key the image is registered with.
+ * @return The <code>ImageDescriptor</code> object instance or <code>null</code>.
+ */
+ public static ImageDescriptor getImageDescriptor(String key) {
+ return getDefault().getImageRegistry().getDescriptor(key);
+ }
+
+ public static void log(String msg, Throwable e) {
+ log(new Status(IStatus.ERROR, getUniqueIdentifier(), IStatus.ERROR, msg, e));
+ }
+
+ public static void log(IStatus status) {
+ getDefault().getLog().log(status);
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/help/IContextHelpIds.java b/terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/help/IContextHelpIds.java
new file mode 100644
index 00000000000..7c6dcb752bf
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/help/IContextHelpIds.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2014, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.process.help;
+
+import org.eclipse.tm.terminal.connector.process.activator.UIPlugin;
+
+/**
+ * Context help id definitions.
+ */
+public interface IContextHelpIds {
+
+ /**
+ * UI plug-in common context help id prefix.
+ */
+ public final static String PREFIX = UIPlugin.getUniqueIdentifier() + "."; //$NON-NLS-1$
+
+ // ***** Message dialog boxes *****
+
+ /**
+ * Process connector: Create process failed
+ */
+ public final static String MESSAGE_CREATE_PROCESS_FAILED = PREFIX + ".status.messageCreateProcessFailed"; //$NON-NLS-1$
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/nls/Messages.java b/terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/nls/Messages.java
new file mode 100644
index 00000000000..9e53c53460b
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/nls/Messages.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2011 - 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.process.nls;
+
+import org.eclipse.osgi.util.NLS;
+
+/**
+ * Process terminal connector plug-in externalized strings management.
+ */
+public class Messages extends NLS {
+
+ // The plug-in resource bundle name
+ private static final String BUNDLE_NAME = "org.eclipse.tm.terminal.connector.process.nls.Messages"; //$NON-NLS-1$
+
+ /**
+ * Static constructor.
+ */
+ static {
+ // Load message values from bundle file
+ NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+ }
+
+ // **** Declare externalized string id's down here *****
+
+ public static String ProcessConnector_error_title;
+ public static String ProcessConnector_error_creatingProcess;
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/nls/Messages.properties b/terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/nls/Messages.properties
new file mode 100644
index 00000000000..21f4086135e
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/nls/Messages.properties
@@ -0,0 +1,14 @@
+###############################################################################
+# Copyright (c) 2012, 2018 Wind River Systems, Inc. and others. All rights reserved.
+# This program and the accompanying materials are made available under the terms
+# of the Eclipse Public License 2.0 which accompanies this distribution, and is
+# available at https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Wind River Systems - initial API and implementation
+###############################################################################
+
+ProcessConnector_error_title=Error
+ProcessConnector_error_creatingProcess=Failed to execute ''{0}''.\n\nPossibly caused by:\n{1}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.remote/.classpath b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/.classpath
new file mode 100644
index 00000000000..e801ebfb468
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.remote/.gitignore b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/.gitignore
new file mode 100644
index 00000000000..ae3c1726048
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.remote/.project b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/.project
new file mode 100644
index 00000000000..da3152ba6b3
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.tm.terminal.connector.remote</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+ </natures>
+</projectDescription>
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.remote/.settings/org.eclipse.core.resources.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.remote/.settings/org.eclipse.jdt.core.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..e3a8104f9ca
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.remote/.settings/org.eclipse.jdt.launching.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 00000000000..f8a131b56e0
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_COMPILER_COMPLIANCE_DOES_NOT_MATCH_JRE=warning
+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=warning
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.remote/.settings/org.eclipse.jdt.ui.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.remote/.settings/org.eclipse.pde.api.tools.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 00000000000..ec9fbf321d0
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,184 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITH_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_FIELD=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERCLASS_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_CHANGED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENTS=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETERS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Error
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Warning
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+MISSING_EE_DESCRIPTIONS=Warning
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=false
+changed_execution_env=Error
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+incompatible_api_component_version_report_major_without_breaking_change=Warning
+incompatible_api_component_version_report_minor_without_api_change=Warning
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.remote/.settings/org.eclipse.pde.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/.settings/org.eclipse.pde.prefs
new file mode 100644
index 00000000000..d2dc703ba9e
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,35 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=2
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=2
+compilers.p.missing-version-export-package=2
+compilers.p.missing-version-import-package=2
+compilers.p.missing-version-require-bundle=2
+compilers.p.no-required-att=0
+compilers.p.no.automatic.module=1
+compilers.p.not-externalized-att=1
+compilers.p.service.component.without.lazyactivation=1
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.remote/META-INF/MANIFEST.MF b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..129f241063d
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/META-INF/MANIFEST.MF
@@ -0,0 +1,31 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.tm.terminal.connector.remote;singleton:=true
+Bundle-Version: 4.7.200.qualifier
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.tm.terminal.control,
+ org.eclipse.remote.core,
+ org.eclipse.remote.ui,
+ org.eclipse.core.resources,
+ org.eclipse.swt,
+ org.eclipse.jface,
+ org.eclipse.tm.terminal.view.core;bundle-version="4.5.0";resolution:=optional,
+ org.eclipse.tm.terminal.view.ui;bundle-version="4.5.0";resolution:=optional,
+ org.eclipse.core.expressions
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Export-Package: org.eclipse.tm.terminal.connector.remote,
+ org.eclipse.tm.terminal.connector.remote.controls,
+ org.eclipse.tm.terminal.connector.remote.internal;x-internal:=true,
+ org.eclipse.tm.terminal.connector.remote.internal.preferences;x-internal:=true,
+ org.eclipse.tm.terminal.connector.remote.launcher,
+ org.eclipse.tm.terminal.connector.remote.nls;x-internal:=true
+Bundle-Activator: org.eclipse.tm.terminal.connector.remote.internal.Activator
+Bundle-ActivationPolicy: lazy
+Eclipse-LazyStart: true
+Import-Package: org.eclipse.core.resources,
+ org.eclipse.ui.ide
+Automatic-Module-Name: org.eclipse.tm.terminal.connector.remote
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.remote/about.html b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.remote/build.properties b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/build.properties
new file mode 100644
index 00000000000..81fd6e2833a
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/build.properties
@@ -0,0 +1,19 @@
+###############################################################################
+# Copyright (c) 2015, 2018 IBM Corporation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ plugin.properties,\
+ about.html
+
+src.includes = about.html,\
+ schema/
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.remote/plugin.properties b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/plugin.properties
new file mode 100644
index 00000000000..b67ba6fa200
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/plugin.properties
@@ -0,0 +1,13 @@
+###############################################################################
+# Copyright (c) 2015, 2018 IBM Corporation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+pluginName = Terminal via Remote API Connector
+providerName = Eclipse CDT
+connectionName = Remote Services
+RemoteTerminalPage.name = Remote Terminal
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.remote/plugin.xml b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/plugin.xml
new file mode 100644
index 00000000000..db974b30030
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/plugin.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<!--
+# Copyright (c) 2015, 2018 IBM Corporation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+-->
+<plugin>
+ <extension-point id="parsers" name="Terminal Parsers" schema="schema/parsers.exsd"/>
+
+<!-- Terminal connector contributions -->
+ <extension point="org.eclipse.tm.terminal.control.connectors">
+ <connector
+ name="%connectionName"
+ id="org.eclipse.tm.terminal.connector.remote.RemoteConnector"
+ class="org.eclipse.tm.terminal.connector.remote.internal.RemoteConnector"/>
+ </extension>
+
+<!-- Terminal launcher delegate contributions -->
+ <extension point="org.eclipse.tm.terminal.view.ui.launcherDelegates">
+ <delegate
+ class="org.eclipse.tm.terminal.connector.remote.launcher.RemoteLauncherDelegate"
+ id="org.eclipse.tm.terminal.connector.telnet.launcher.remote"
+ label="Remote Terminal">
+ </delegate>
+ </extension>
+
+<!-- Preference contributions -->
+ <extension point="org.eclipse.core.runtime.preferences">
+ <initializer
+ class="org.eclipse.tm.terminal.connector.remote.internal.preferences.RemoteTerminalPreferenceInitializer">
+ </initializer>
+ </extension>
+
+ <extension point="org.eclipse.ui.preferencePages">
+ <page
+ category="org.eclipse.tm.terminal.TerminalPreferencePage"
+ class="org.eclipse.tm.terminal.connector.remote.internal.preferences.RemoteTerminalPreferencePage"
+ id="org.eclipse.tm.terminal.remote.page"
+ name="%RemoteTerminalPage.name">
+ </page>
+ </extension>
+</plugin>
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.remote/schema/parsers.exsd b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/schema/parsers.exsd
new file mode 100644
index 00000000000..ec8f1d9f32e
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/schema/parsers.exsd
@@ -0,0 +1,119 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+ Copyright (c) 2018 Red Hat and others.
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+ -->
+
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.tm.terminal.connector.remote" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+ <appInfo>
+ <meta.schema plugin="org.eclipse.tm.terminal.connector.remote" id="parser" name="Terminal Parser"/>
+ </appInfo>
+ <documentation>
+ Extension point that allows a parser to be added to the terminal view. The parser is intended to process output generated by the remote shell and perform an action based on the content.
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <annotation>
+ <appInfo>
+ <meta.element />
+ </appInfo>
+ </annotation>
+ <complexType>
+ <sequence>
+ <element ref="parser"/>
+ </sequence>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute translatable="true"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="parser">
+ <complexType>
+ <attribute name="id" type="string" use="required">
+ <annotation>
+ <documentation>
+ Unique identifier for this parser
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="class" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute kind="java" basedOn=":org.eclipse.tm.terminal.remote.IRemoteTerminalParser"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="since"/>
+ </appInfo>
+ <documentation>
+ [Enter the first release in which this extension point appears.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="examples"/>
+ </appInfo>
+ <documentation>
+ [Enter extension point usage example here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="apiinfo"/>
+ </appInfo>
+ <documentation>
+ [Enter API information here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="implementation"/>
+ </appInfo>
+ <documentation>
+ [Enter information about supplied implementation of this extension point.]
+ </documentation>
+ </annotation>
+
+
+</schema>
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/IRemoteSettings.java b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/IRemoteSettings.java
new file mode 100644
index 00000000000..5e4d711372a
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/IRemoteSettings.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2015, 2018 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.remote;
+
+public interface IRemoteSettings {
+ public static final String CONNECTION_NAME = "ConnectionName"; //$NON-NLS-1$
+ public static final String CONNECTION_TYPE_ID = "ConnectionTypeId"; //$NON-NLS-1$
+
+ /**
+ * Get the connection type ID for the connection (e.g. local, ssh, etc.)
+ *
+ * @return connection type ID.
+ */
+ String getConnectionTypeId();
+
+ /**
+ * Get the connection name for the target system.
+ *
+ * @return connection name
+ */
+ String getConnectionName();
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/IRemoteTerminalConstants.java b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/IRemoteTerminalConstants.java
new file mode 100644
index 00000000000..b58bc867fa6
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/IRemoteTerminalConstants.java
@@ -0,0 +1,15 @@
+/*******************************************************************************
+ * Copyright (c) 2015, 2018 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.remote;
+
+public interface IRemoteTerminalConstants {
+ public static final String PREF_TERMINAL_SHELL_COMMAND = "TERMINAL_SHELL_COMMAND"; //$NON-NLS-1$
+ public static final String PREF_TERMINAL_TYPE = "TERMINAL_TYPE"; //$NON-NLS-1$
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/IRemoteTerminalParser.java b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/IRemoteTerminalParser.java
new file mode 100644
index 00000000000..3a91f1b5547
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/IRemoteTerminalParser.java
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ * Copyright (c) 2015, 2018 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.remote;
+
+import java.io.IOException;
+
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteProcess;
+
+public interface IRemoteTerminalParser {
+ /**
+ * Initialize the remote shell. This method will be called after the connection has been initialized. Implementors can assume
+ * that the connection is open when this is called.
+ *
+ * @param connection
+ * terminal shell connection
+ * @return IRemoteProcess a remote process corresponding to the remote shell
+ * @throws IOException
+ * if the remote shell fails to start for some reason
+ */
+ IRemoteProcess initialize(IRemoteConnection connection) throws IOException;
+
+ /**
+ * Parse the input stream. This method will be called with a buffer of characters read from the input stream. If the method
+ * returns true, the characters will be displayed in the terminal view, otherwise they will be ignored.
+ *
+ * @param buf
+ * buffer containing characters from the terminal input stream
+ * @return true if the characters should be displayed in the terminal
+ */
+ boolean parse(byte[] buf);
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/controls/RemoteWizardConfigurationPanel.java b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/controls/RemoteWizardConfigurationPanel.java
new file mode 100644
index 00000000000..f0cb639f2fc
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/controls/RemoteWizardConfigurationPanel.java
@@ -0,0 +1,192 @@
+/*******************************************************************************
+ * Copyright (c) 2015, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.remote.controls;
+
+import java.util.Map;
+
+import org.eclipse.jface.dialogs.IDialogSettings;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.tm.internal.terminal.provisional.api.AbstractSettingsPage;
+import org.eclipse.tm.internal.terminal.provisional.api.ISettingsPage;
+import org.eclipse.tm.terminal.connector.remote.IRemoteSettings;
+import org.eclipse.tm.terminal.connector.remote.internal.RemoteConnector;
+import org.eclipse.tm.terminal.connector.remote.internal.RemoteSettings;
+import org.eclipse.tm.terminal.connector.remote.internal.RemoteSettingsPage;
+import org.eclipse.tm.terminal.view.core.interfaces.constants.ITerminalsConnectorConstants;
+import org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanelContainer;
+import org.eclipse.tm.terminal.view.ui.panels.AbstractExtendedConfigurationPanel;
+
+/**
+ * Remote wizard configuration panel implementation.
+ */
+@SuppressWarnings("restriction")
+public class RemoteWizardConfigurationPanel extends AbstractExtendedConfigurationPanel {
+
+ private RemoteSettings remoteSettings;
+ private ISettingsPage remoteSettingsPage;
+
+ /**
+ * Constructor.
+ *
+ * @param container
+ * The configuration panel container or <code>null</code>.
+ */
+ public RemoteWizardConfigurationPanel(IConfigurationPanelContainer container) {
+ super(container);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanel#setupPanel(org.eclipse.swt.widgets.Composite)
+ */
+ @Override
+ public void setupPanel(Composite parent) {
+ Composite panel = new Composite(parent, SWT.NONE);
+ panel.setLayout(new GridLayout());
+ GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);
+ panel.setLayoutData(data);
+
+ RemoteConnector conn = new RemoteConnector();
+ remoteSettings = (RemoteSettings) conn.getRemoteSettings();
+
+ remoteSettingsPage = new RemoteSettingsPage(remoteSettings);
+ if (remoteSettingsPage instanceof AbstractSettingsPage) {
+ ((AbstractSettingsPage) remoteSettingsPage).setHasControlDecoration(true);
+ }
+ remoteSettingsPage.createControl(panel);
+
+ // Add the listener to the settings page
+ remoteSettingsPage.addListener(new ISettingsPage.Listener() {
+
+ @Override
+ public void onSettingsPageChanged(Control control) {
+ if (getContainer() != null) {
+ getContainer().validate();
+ }
+ }
+ });
+
+ // Create the encoding selection combo
+ createEncodingUI(panel, true);
+
+ setControl(panel);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.tm.terminal.view.ui.panels.AbstractConfigurationPanel#setupData(java.util.Map)
+ */
+ @Override
+ public void setupData(Map<String, Object> data) {
+ if (data == null || remoteSettings == null || remoteSettingsPage == null) {
+ return;
+ }
+
+ String value = (String) data.get(IRemoteSettings.CONNECTION_TYPE_ID);
+ if (value != null) {
+ remoteSettings.setConnectionTypeId(value);
+ }
+
+ value = (String) data.get(IRemoteSettings.CONNECTION_NAME);
+ if (value != null) {
+ remoteSettings.setConnectionName(value);
+ }
+
+ value = (String) data.get(ITerminalsConnectorConstants.PROP_ENCODING);
+ if (value != null) {
+ setEncoding(value);
+ }
+
+ remoteSettingsPage.loadSettings();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.tm.terminal.view.ui.panels.AbstractConfigurationPanel#extractData(java.util.Map)
+ */
+ @Override
+ public void extractData(Map<String, Object> data) {
+ if (data == null) {
+ return;
+ }
+
+ // set the terminal connector id for remote
+ data.put(ITerminalsConnectorConstants.PROP_TERMINAL_CONNECTOR_ID,
+ "org.eclipse.tm.terminal.connector.remote.RemoteConnector"); //$NON-NLS-1$
+
+ remoteSettingsPage.saveSettings();
+
+ data.put(IRemoteSettings.CONNECTION_TYPE_ID, remoteSettings.getConnectionTypeId());
+ data.put(IRemoteSettings.CONNECTION_NAME, remoteSettings.getConnectionName());
+ if (getEncoding() != null) {
+ data.put(ITerminalsConnectorConstants.PROP_ENCODING, getEncoding());
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.tm.terminal.view.ui.panels.AbstractConfigurationPanel#fillSettingsForHost(java.lang.String)
+ */
+ @Override
+ protected void fillSettingsForHost(String host) {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.tm.terminal.view.ui.panels.AbstractConfigurationPanel#saveSettingsForHost(boolean)
+ */
+ @Override
+ protected void saveSettingsForHost(boolean add) {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.tm.terminal.view.ui.panels.AbstractConfigurationPanel#isValid()
+ */
+ @Override
+ public boolean isValid() {
+ return isEncodingValid() && remoteSettingsPage.validateSettings();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.tm.terminal.view.ui.panels.AbstractConfigurationPanel#doSaveWidgetValues(org.eclipse.jface.dialogs.
+ * IDialogSettings, java.lang.String)
+ */
+ @Override
+ public void doSaveWidgetValues(IDialogSettings settings, String idPrefix) {
+ saveSettingsForHost(true);
+ super.doSaveWidgetValues(settings, idPrefix);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.tm.terminal.view.ui.panels.AbstractConfigurationPanel#getHostFromSettings()
+ */
+ @Override
+ protected String getHostFromSettings() {
+ remoteSettingsPage.saveSettings();
+ return null;
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/internal/Activator.java b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/internal/Activator.java
new file mode 100644
index 00000000000..1d7e63dfecc
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/internal/Activator.java
@@ -0,0 +1,125 @@
+/*******************************************************************************
+ * Copyright (c) 2015, 2018 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.remote.internal;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Plugin;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.tm.terminal.connector.remote.nls.Messages;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends Plugin {
+
+ public static final String PLUGIN_ID = "org.eclipse.tm.terminal.remote"; //$NON-NLS-1$
+ private static Activator plugin;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ super();
+ plugin = this;
+ }
+
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ }
+
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+ /**
+ * Returns an image descriptor for the image file at the given plug-in relative path.
+ *
+ * @param path
+ * the path
+ * @return the image descriptor
+ */
+ public static ImageDescriptor getImageDescriptor(String path) {
+ return AbstractUIPlugin.imageDescriptorFromPlugin(PLUGIN_ID, path);
+ }
+
+ /**
+ * Create log entry from an IStatus
+ *
+ * @param status
+ * status to log
+ */
+ public static void log(IStatus status) {
+ getDefault().getLog().log(status);
+ }
+
+ /**
+ * Create log entry from a string
+ *
+ * @param msg
+ * message to log
+ */
+ public static void log(String msg) {
+ log(new Status(IStatus.ERROR, getUniqueIdentifier(), IStatus.ERROR, msg, null));
+ }
+
+ /**
+ * Create log entry from a Throwable
+ *
+ * @param e
+ * throwable to log
+ */
+ public static void log(Throwable e) {
+ log(new Status(IStatus.ERROR, getUniqueIdentifier(), IStatus.ERROR, Messages.TERMINAL_EXCEPTION, e));
+ }
+
+ // Get rid of edu.lsu.cct tags
+
+ /**
+ * Generate a unique identifier
+ *
+ * @return unique identifier string
+ */
+ public static String getUniqueIdentifier() {
+ if (getDefault() == null) {
+ // If the default instance is not yet initialized,
+ // return a static identifier. This identifier must
+ // match the plugin id defined in plugin.xml
+ return PLUGIN_ID;
+ }
+ return getDefault().getBundle().getSymbolicName();
+ }
+
+ /**
+ * Return the OSGi service with the given service interface.
+ *
+ * @param service
+ * service interface
+ * @return the specified service or null if it's not registered
+ */
+ public static <T> T getService(Class<T> service) {
+ final BundleContext context = plugin.getBundle().getBundleContext();
+ final ServiceReference<T> ref = context.getServiceReference(service);
+ return ref != null ? context.getService(ref) : null;
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/internal/ArgumentParser.java b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/internal/ArgumentParser.java
new file mode 100644
index 00000000000..fd6236141b4
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/internal/ArgumentParser.java
@@ -0,0 +1,364 @@
+/*******************************************************************************
+ * Copyright (c) 2015, 2018 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.remote.internal;
+
+import java.text.CharacterIterator;
+import java.text.StringCharacterIterator;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * Utility class for managing command line arguments.
+ */
+public class ArgumentParser {
+ private final List<String> tokens;
+
+ /**
+ * Create a command line representation from the string with a shell command
+ * line. The command line is parsed and split on spaces. Quoted or escaped
+ * spaces are preserved..
+ */
+ public ArgumentParser(String commandline) {
+ this.tokens = parseCommandline(commandline);
+ }
+
+ /**
+ * Create a command line representation from an array of strings. The first
+ * element of the array is assumed to be the command, the remaining, the
+ * arguments. The elements are not parsed not (un)escaped., but taked as the
+ * are.
+ */
+ public ArgumentParser(String tokenArray[]) {
+ this(Arrays.asList(tokenArray));
+ }
+
+ /**
+ * Create a command line representation from an array of strings. The first
+ * element of the list is assumed to be the command, the remaining, the
+ * arguments. The elements are not parsed not (un)escaped., but taked as the
+ * are.
+ */
+ public ArgumentParser(List<String> tokenList) {
+ this.tokens = new ArrayList<>(tokenList);
+ }
+
+ /**
+ * Create a command line representation from the command and an array of
+ * parameters. The elements are not parsed not (un)escaped., but taked as
+ * the are.
+ */
+ public ArgumentParser(String command, String parameterArray[]) {
+ this(command, Arrays.asList(parameterArray));
+ }
+
+ /**
+ * Create a command line representation from the command and an list of
+ * parameters. The elements are not parsed not (un)escaped., but taked as
+ * the are.
+ */
+ public ArgumentParser(String command, List<String> parameterList) {
+ this.tokens = new ArrayList<>();
+ this.tokens.add(command);
+ this.tokens.addAll(parameterList);
+ }
+
+ private static List<String> parseCommandline(String commandline) {
+ ArrayList<String> result = new ArrayList<>();
+ StringCharacterIterator iterator = new StringCharacterIterator(commandline);
+
+ for (iterator.first(); iterator.current() != CharacterIterator.DONE; iterator.next()) {
+
+ // Restart to skip white space
+ if (Character.isWhitespace(iterator.current())) {
+ continue;
+ }
+
+ // Read token
+ StringBuffer buffer = new StringBuffer();
+ token_reader: for (; iterator.current() != CharacterIterator.DONE; iterator.next()) {
+ char tokenChar = iterator.current();
+
+ // A white space terminates the token
+ if (Character.isWhitespace(tokenChar)) {
+ break token_reader;
+ }
+
+ // Handle character that composes the token
+ switch (tokenChar) {
+ case '"': {
+ /*
+ * Read all text within double quotes or until end of
+ * string. Allows escaping.
+ */
+ iterator.next(); // Skip quote
+ quoted_reader: while ((iterator.current() != CharacterIterator.DONE)
+ && (iterator.current() != '"')) {
+ char innerChar = iterator.current();
+ switch (innerChar) {
+ case '\\':
+ char nextChar = iterator.next();
+ switch (nextChar) {
+ case CharacterIterator.DONE:
+ break quoted_reader;
+ case '"':
+ // Add the character, but remove the escape
+ buffer.append(nextChar);
+ iterator.next();
+ continue quoted_reader;
+ default:
+ // Add the character and keep escape
+ buffer.append(innerChar);
+ buffer.append(nextChar);
+ iterator.next();
+ continue quoted_reader;
+ }
+ default:
+ buffer.append(innerChar);
+ iterator.next();
+ continue quoted_reader;
+ }
+ }
+ continue token_reader;
+ }
+ case '\'': {
+ /*
+ * Read all text within single quotes or until end of
+ * string. No escaping.
+ */
+ iterator.next(); // Skip the quote
+ while ((iterator.current() != CharacterIterator.DONE) && (iterator.current() != '\'')) {
+ buffer.append(iterator.current());
+ iterator.next();
+ }
+ continue token_reader;
+ }
+ case '\\': {
+ /*
+ * Read escaped char.
+ */
+ char nextChar = iterator.next();
+ switch (nextChar) {
+ case CharacterIterator.DONE:
+ break token_reader;
+ case '\n':
+ // Ignore newline. Both lines are concatenated.
+ continue token_reader;
+ default:
+ // Add the character, but remove the escape
+ buffer.append(nextChar);
+ continue token_reader;
+ }
+ }
+ default:
+ /*
+ * Any other char, add to the buffer.
+ */
+ buffer.append(tokenChar);
+ continue token_reader;
+ }
+ }
+ result.add(buffer.toString());
+ }
+
+ return result;
+ }
+
+ /**
+ * Convert all tokens in a full command line that can be executed in a
+ * shell.
+ *
+ * @param fullEscape
+ * If every special character shall be escaped. If false, only
+ * white spaces are escaped and the shell will interpret the
+ * special chars. If true, then all special chars are quoted.
+ */
+ public String getCommandLine(boolean fullEscape) {
+ StringBuffer buffer = new StringBuffer();
+ Iterator<String> iterator = this.tokens.iterator();
+ boolean first = true;
+ while (iterator.hasNext()) {
+ String token = iterator.next();
+ if (!first) {
+ buffer.append(' ');
+ } else {
+ first = false;
+ }
+ buffer.append(escapeToken(token, fullEscape));
+ }
+ return buffer.toString();
+ }
+
+ private StringBuffer escapeToken(String token, boolean fullEscape) {
+ StringBuffer buffer = new StringBuffer();
+ StringCharacterIterator iter = new StringCharacterIterator(token);
+ for (char c = iter.first(); c != CharacterIterator.DONE; c = iter.next()) {
+ if (Character.isWhitespace(c)) {
+ buffer.append('\\');
+ buffer.append(c);
+ continue;
+ }
+ switch (c) {
+ case '(':
+ case ')':
+ case '[':
+ case ']':
+ case '{':
+ case '}':
+ case '|':
+ case '\\':
+ case '*':
+ case '&':
+ case '^':
+ case '%':
+ case '$':
+ case '#':
+ case '@':
+ case '!':
+ case '~':
+ case '`':
+ case '\'':
+ case '"':
+ case ':':
+ case ';':
+ case '?':
+ case '>':
+ case '<':
+ case '\n':
+ if (fullEscape) {
+ buffer.append('\\');
+ }
+ buffer.append(c);
+ continue;
+ case ' ':
+ buffer.append('\\');
+ buffer.append(c);
+ continue;
+ default:
+ buffer.append(c);
+ continue;
+ }
+ }
+ return buffer;
+ }
+
+ /**
+ * Returns a List of all entries of the command line.
+ *
+ * @return The Array
+ */
+ public String[] getTokenArray() {
+ return this.tokens.toArray(new String[this.tokens.size()]);
+ }
+
+ /**
+ * Returns a List of all entries of the command line.
+ *
+ * @return The List
+ */
+ public List<String> getTokenList() {
+ return new ArrayList<>(this.tokens);
+ }
+
+ /**
+ * Returns the command of the command line, assuming that the first entry is
+ * always the command.
+ *
+ * @return The command or null if the command lines has no command nor
+ * arguments.
+ */
+ public String getCommand() {
+ if (this.tokens.size() == 0) {
+ return null;
+ }
+ return this.tokens.get(0);
+ }
+
+ /**
+ * Returns the command of the command line, assuming that the first entry is
+ * always the command.
+ *
+ * @return The command or null if the command lines has no command nor
+ * arguments.
+ * @param fullEscape
+ * If every special character shall be escaped. If false, only
+ * white spaces are escaped and the shell will interpret the
+ * special chars. If true, then all special chars are quoted.
+ */
+ public String getEscapedCommand(boolean fullEscape) {
+ if (this.tokens.size() == 0) {
+ return null;
+ }
+ return escapeToken(this.tokens.get(0), fullEscape).toString();
+ }
+
+ /**
+ * Returns a list of all arguments, assuming that the first entry is the
+ * command name.
+ *
+ * @return The Array or null if the command lines has no command nor
+ * arguments.
+ */
+ public String[] getParameterArray() {
+ if (this.tokens.size() == 0) {
+ return null;
+ }
+ return this.tokens.subList(1, this.tokens.size()).toArray(new String[this.tokens.size() - 1]);
+ }
+
+ /**
+ * Returns a list of all arguments, assuming that the first entry is the
+ * command name.
+ *
+ * @return The List or null if the command lines has no command nor
+ * arguments.
+ */
+ public List<String> getParameterList() {
+ if (this.tokens.size() == 0) {
+ return null;
+ }
+ return new ArrayList<>(this.tokens.subList(1, this.tokens.size()));
+ }
+
+ /**
+ * Returns the total number of entries.
+ *
+ * @return the total number of entries
+ */
+ public int getSize() {
+ return this.tokens.size();
+ }
+
+ /**
+ * Returns a representation of the command line for debug purposes.
+ */
+ @Override
+ public String toString() {
+ StringBuffer buffer = new StringBuffer();
+ buffer.append("<"); //$NON-NLS-1$
+ Iterator<String> iterator = this.tokens.iterator();
+ boolean first = true;
+ while (iterator.hasNext()) {
+ String token = iterator.next();
+ if (!first) {
+ buffer.append('\n');
+ } else {
+ first = false;
+ }
+ buffer.append(token);
+ }
+ buffer.append(">"); //$NON-NLS-1$
+ return buffer.toString();
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/internal/RemoteConnectionManager.java b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/internal/RemoteConnectionManager.java
new file mode 100644
index 00000000000..a05278cf799
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/internal/RemoteConnectionManager.java
@@ -0,0 +1,202 @@
+/*******************************************************************************
+ * Copyright (c) 2015,2018 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.remote.internal;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtension;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.RegistryFactory;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences;
+import org.eclipse.core.runtime.preferences.InstanceScope;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.remote.core.IRemoteCommandShellService;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteConnectionType;
+import org.eclipse.remote.core.IRemoteProcess;
+import org.eclipse.remote.core.IRemoteProcessBuilder;
+import org.eclipse.remote.core.IRemoteProcessService;
+import org.eclipse.remote.core.IRemoteProcessTerminalService;
+import org.eclipse.remote.core.IRemoteServicesManager;
+import org.eclipse.remote.core.exception.RemoteConnectionException;
+import org.eclipse.tm.internal.terminal.emulator.VT100Emulator;
+import org.eclipse.tm.internal.terminal.emulator.VT100TerminalControl;
+import org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl;
+import org.eclipse.tm.internal.terminal.provisional.api.TerminalState;
+import org.eclipse.tm.terminal.connector.remote.IRemoteTerminalConstants;
+import org.eclipse.tm.terminal.connector.remote.IRemoteTerminalParser;
+import org.eclipse.tm.terminal.connector.remote.nls.Messages;
+
+@SuppressWarnings("restriction")
+public class RemoteConnectionManager extends Job {
+ private final static String PARSERS_EXTENSION_POINT = "parsers"; //$NON-NLS-1$
+ private final static String PARSER_ELEMENT = "parser"; //$NON-NLS-1$
+
+ private static int fgNo;
+
+ private final ITerminalControl control;
+ private final RemoteConnector connector;
+
+ private IRemoteTerminalParser parser;
+ private IRemoteProcess remoteProcess;
+
+ protected RemoteConnectionManager(RemoteConnector conn, ITerminalControl control) {
+ super("Remote Terminal-" + fgNo++); //$NON-NLS-1$
+ this.control = control;
+ this.connector = conn;
+ setSystem(true);
+ loadParserExtension();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.core.runtime.jobs.Job#run(org.eclipse.core.runtime.IProgressMonitor)
+ */
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ IRemoteConnection remoteConnection = null;
+
+ try {
+ IRemoteServicesManager svcMgr = Activator.getService(IRemoteServicesManager.class);
+ String connTypeId = connector.getRemoteSettings().getConnectionTypeId();
+ IRemoteConnectionType connType = svcMgr.getConnectionType(connTypeId);
+ if (connType != null) {
+ remoteConnection = connType.getConnection(connector.getRemoteSettings().getConnectionName());
+ }
+ if (remoteConnection == null) {
+ return new Status(IStatus.ERROR, Activator.getUniqueIdentifier(), NLS
+ .bind(Messages.RemoteConnectionManager_0, connector.getRemoteSettings().getConnectionName()));
+ }
+
+ if (!remoteConnection.isOpen()) {
+ remoteConnection.open(monitor);
+ if (!remoteConnection.isOpen()) {
+ return new Status(IStatus.ERROR, Activator.getUniqueIdentifier(), NLS.bind(
+ Messages.RemoteConnectionManager_1, connector.getRemoteSettings().getConnectionName()));
+ }
+ }
+
+ if (parser != null) {
+ remoteProcess = parser.initialize(remoteConnection);
+ }
+
+ if (remoteProcess == null) {
+ /*
+ * Check the terminal shell command preference. If the preference is empty and we support a command shell,
+ * just use that. Otherwise use the preference value if it is set, or fall back to a default if not.
+ */
+ IEclipsePreferences prefs = InstanceScope.INSTANCE.getNode(Activator.getUniqueIdentifier());
+ String terminalShellCommand = prefs.get(IRemoteTerminalConstants.PREF_TERMINAL_SHELL_COMMAND, ""); //$NON-NLS-1$
+ if ("".equals(terminalShellCommand) //$NON-NLS-1$
+ && remoteConnection.hasService(IRemoteCommandShellService.class)) {
+ IRemoteCommandShellService cmdShellSvc = remoteConnection
+ .getService(IRemoteCommandShellService.class);
+ synchronized (this) {
+ remoteProcess = cmdShellSvc.getCommandShell(IRemoteProcessBuilder.ALLOCATE_PTY);
+ }
+ } else if (remoteConnection.hasService(IRemoteProcessService.class)) {
+ if ("".equals(terminalShellCommand)) { //$NON-NLS-1$
+ terminalShellCommand = "/bin/bash -l"; //$NON-NLS-1$
+ }
+ IRemoteProcessService procSvc = remoteConnection.getService(IRemoteProcessService.class);
+ IRemoteProcessBuilder processBuilder = procSvc
+ .getProcessBuilder(new ArgumentParser(terminalShellCommand).getTokenList());
+ remoteProcess = processBuilder.start(IRemoteProcessBuilder.ALLOCATE_PTY);
+ } else {
+ return new Status(IStatus.ERROR, Activator.getUniqueIdentifier(),
+ Messages.RemoteConnectionManager_2);
+ }
+ }
+
+ control.setVT100LineWrapping(true);
+ connector.setInputStream(remoteProcess.getInputStream());
+ control.setState(TerminalState.CONNECTED);
+ control.setTerminalTitle(remoteConnection.getName());
+ connector.setOutputStream(remoteProcess.getOutputStream());
+ // Initialize terminal size
+ VT100Emulator text = ((VT100TerminalControl) control).getTerminalText();
+ text.fontChanged();
+
+ // read data until the connection gets terminated
+ readData(connector.getInputStream());
+ } catch (IOException e) {
+ return new Status(IStatus.ERROR, Activator.getUniqueIdentifier(), e.getMessage());
+ } catch (RemoteConnectionException e) {
+ return new Status(IStatus.ERROR, Activator.getUniqueIdentifier(), e.getMessage());
+ } finally {
+ // make sure the terminal is disconnected when the thread ends
+ connector.disconnect();
+ }
+ return Status.OK_STATUS;
+ }
+
+ @Override
+ protected void canceling() {
+ super.canceling();
+ synchronized (this) {
+ if (remoteProcess != null && !remoteProcess.isCompleted()) {
+ remoteProcess.destroy();
+ }
+ }
+ }
+
+ public void setTerminalSize(int cols, int rows, int width, int height) {
+ if (remoteProcess != null) {
+ IRemoteProcessTerminalService termSvc = remoteProcess.getService(IRemoteProcessTerminalService.class);
+ if (termSvc != null) {
+ termSvc.setTerminalSize(cols, rows, width, height);
+ }
+ }
+ }
+
+ /**
+ * Read the data from the connection and display it in the terminal.
+ *
+ * @param in
+ * @throws IOException
+ */
+ private void readData(InputStream in) throws IOException {
+ byte[] buf = new byte[32 * 1024];
+ int n;
+ while ((n = in.read(buf, 0, buf.length)) >= 0) {
+ if (n != 0 && (parser == null || parser.parse(buf))) {
+ control.getRemoteToTerminalOutputStream().write(buf, 0, n);
+ }
+ }
+ }
+
+ private void loadParserExtension() {
+ IExtensionPoint point = RegistryFactory.getRegistry().getExtensionPoint(Activator.getUniqueIdentifier(),
+ PARSERS_EXTENSION_POINT);
+ if (point != null) {
+ IExtension[] extensions = point.getExtensions();
+ for (IExtension extension : extensions) {
+ IConfigurationElement[] elements = extension.getConfigurationElements();
+ for (IConfigurationElement element : elements) {
+ if (PARSER_ELEMENT.equals(element.getName())) {
+ try {
+ parser = (IRemoteTerminalParser) element.createExecutableExtension("class"); //$NON-NLS-1$
+ } catch (CoreException e) {
+ Activator.log(e);
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/internal/RemoteConnector.java b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/internal/RemoteConnector.java
new file mode 100644
index 00000000000..5b79753f3c9
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/internal/RemoteConnector.java
@@ -0,0 +1,134 @@
+/*******************************************************************************
+ * Copyright (c) 2015, 2018 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.remote.internal;
+
+import java.io.InputStream;
+import java.io.OutputStream;
+
+import org.eclipse.tm.internal.terminal.provisional.api.ISettingsStore;
+import org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl;
+import org.eclipse.tm.internal.terminal.provisional.api.NullSettingsStore;
+import org.eclipse.tm.internal.terminal.provisional.api.TerminalState;
+import org.eclipse.tm.internal.terminal.provisional.api.provider.TerminalConnectorImpl;
+import org.eclipse.tm.terminal.connector.remote.IRemoteSettings;
+
+@SuppressWarnings("restriction")
+public class RemoteConnector extends TerminalConnectorImpl {
+ private OutputStream fOutputStream;
+ private InputStream fInputStream;
+ private RemoteConnectionManager fConnection;
+ private int fWidth;
+ private int fHeight;
+ private final RemoteSettings fSettings;
+
+ public RemoteConnector() {
+ this(new RemoteSettings());
+ }
+
+ public RemoteConnector(RemoteSettings settings) {
+ fSettings = settings;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.eclipse.tm.internal.terminal.provisional.api.provider.TerminalConnectorImpl#connect(org.eclipse.tm.internal.terminal.
+ * provisional.api.ITerminalControl)
+ */
+ @Override
+ public void connect(ITerminalControl control) {
+ super.connect(control);
+ fControl.setState(TerminalState.CONNECTING);
+ fConnection = new RemoteConnectionManager(this, control);
+ fConnection.schedule();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.tm.internal.terminal.provisional.api.provider.TerminalConnectorImpl#doDisconnect()
+ */
+ @Override
+ public synchronized void doDisconnect() {
+ fConnection.cancel();
+ }
+
+ public InputStream getInputStream() {
+ return fInputStream;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.tm.internal.terminal.provisional.api.provider.TerminalConnectorImpl#getSettingsSummary()
+ */
+ @Override
+ public String getSettingsSummary() {
+ return fSettings.getSummary();
+ }
+
+ /**
+ * Return the Remote Settings.
+ *
+ * @return the settings for a concrete connection.
+ */
+ public IRemoteSettings getRemoteSettings() {
+ return fSettings;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.tm.internal.terminal.provisional.api.provider.TerminalConnectorImpl#getTerminalToRemoteStream()
+ */
+ @Override
+ public OutputStream getTerminalToRemoteStream() {
+ return fOutputStream;
+ }
+
+ @Override
+ public void load(ISettingsStore store) {
+ fSettings.load(store);
+ }
+
+ @Override
+ public void setDefaultSettings() {
+ fSettings.load(new NullSettingsStore());
+ }
+
+ @Override
+ public void save(ISettingsStore store) {
+ fSettings.save(store);
+ }
+
+ public void setInputStream(InputStream inputStream) {
+ fInputStream = inputStream;
+ }
+
+ public void setOutputStream(OutputStream outputStream) {
+ fOutputStream = outputStream;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.tm.internal.terminal.provisional.api.provider.TerminalConnectorImpl#setTerminalSize(int, int)
+ */
+ @Override
+ public void setTerminalSize(int newWidth, int newHeight) {
+ if (fConnection != null && (newWidth != fWidth || newHeight != fHeight)) {
+ // avoid excessive communications due to change size requests by caching previous size
+ fConnection.setTerminalSize(newWidth, newHeight, 8 * newWidth, 8 * newHeight);
+ fWidth = newWidth;
+ fHeight = newHeight;
+ }
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/internal/RemoteSettings.java b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/internal/RemoteSettings.java
new file mode 100644
index 00000000000..1d880b1da0c
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/internal/RemoteSettings.java
@@ -0,0 +1,63 @@
+/*******************************************************************************
+ * Copyright (c) 2015, 2018 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.remote.internal;
+
+import org.eclipse.tm.internal.terminal.provisional.api.ISettingsStore;
+import org.eclipse.tm.terminal.connector.remote.IRemoteSettings;
+
+@SuppressWarnings("restriction")
+public class RemoteSettings implements IRemoteSettings {
+ protected String connectionTypeId;
+ protected String connectionName;
+
+ public RemoteSettings() {
+ }
+
+ @Override
+ public String getConnectionName() {
+ return connectionName;
+ }
+
+ @Override
+ public String getConnectionTypeId() {
+ return connectionTypeId;
+ }
+
+ public String getSummary() {
+ return "Remote:" + getConnectionTypeId() + '_' + getConnectionName(); //$NON-NLS-1$
+ }
+
+ @Override
+ public String toString() {
+ return getSummary();
+ }
+
+ /**
+ * Load information into the RemoteSettings object.
+ */
+ public void load(ISettingsStore store) {
+ connectionTypeId = store.get(CONNECTION_TYPE_ID, ""); //$NON-NLS-1$
+ connectionName = store.get(CONNECTION_NAME, ""); //$NON-NLS-1$
+ }
+
+ /**
+ * Extract information from the RemoteSettings object.
+ */
+ public void save(ISettingsStore store) {
+ store.put(CONNECTION_TYPE_ID, connectionTypeId);
+ store.put(CONNECTION_NAME, connectionName);
+ }
+
+ public void setConnectionName(String name) {
+ connectionName = name;
+ }
+
+ public void setConnectionTypeId(String id) {
+ connectionTypeId = id;
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/internal/RemoteSettingsPage.java b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/internal/RemoteSettingsPage.java
new file mode 100644
index 00000000000..dbd3a5b48b3
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/internal/RemoteSettingsPage.java
@@ -0,0 +1,99 @@
+/*******************************************************************************
+ * Copyright (c) 2015,2018 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.remote.internal;
+
+import java.util.List;
+
+import org.eclipse.remote.core.IRemoteCommandShellService;
+import org.eclipse.remote.core.IRemoteConnectionType;
+import org.eclipse.remote.core.IRemoteServicesManager;
+import org.eclipse.remote.ui.widgets.RemoteConnectionWidget;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.tm.internal.terminal.provisional.api.AbstractSettingsPage;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.FrameworkUtil;
+import org.osgi.framework.ServiceReference;
+
+@SuppressWarnings("restriction")
+public class RemoteSettingsPage extends AbstractSettingsPage {
+ private final RemoteSettings fTerminalSettings;
+ private RemoteConnectionWidget fRemoteConnectionWidget;
+
+ public RemoteSettingsPage(RemoteSettings settings) {
+ fTerminalSettings = settings;
+ }
+
+ @Override
+ public void saveSettings() {
+ if (fTerminalSettings != null && fRemoteConnectionWidget != null && !fRemoteConnectionWidget.isDisposed()) {
+ if (fRemoteConnectionWidget.getConnection() != null) {
+ if (fRemoteConnectionWidget.getConnection().getConnectionType() != null) {
+ fTerminalSettings
+ .setConnectionTypeId(fRemoteConnectionWidget.getConnection().getConnectionType().getId());
+ }
+ fTerminalSettings.setConnectionName(fRemoteConnectionWidget.getConnection().getName());
+ }
+ }
+ }
+
+ @Override
+ public void loadSettings() {
+ if (fTerminalSettings != null && fRemoteConnectionWidget != null && !fRemoteConnectionWidget.isDisposed()) {
+ fRemoteConnectionWidget.setConnection(fTerminalSettings.getConnectionTypeId(),
+ fTerminalSettings.getConnectionName());
+ }
+ }
+
+ String get(String value, String def) {
+ if (value == null || value.length() == 0) {
+ return def;
+ }
+ return value;
+ }
+
+ @Override
+ public boolean validateSettings() {
+ if (fRemoteConnectionWidget == null || fRemoteConnectionWidget.isDisposed()
+ || fRemoteConnectionWidget.getConnection() == null) {
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public void createControl(Composite parent) {
+ Composite composite = new Composite(parent, SWT.NONE);
+ GridLayout gridLayout = new GridLayout(2, false);
+ GridData gridData = new GridData(GridData.FILL_HORIZONTAL);
+
+ composite.setLayout(gridLayout);
+ composite.setLayoutData(gridData);
+
+ BundleContext context = FrameworkUtil.getBundle(this.getClass()).getBundleContext();
+ ServiceReference<IRemoteServicesManager> ref = context.getServiceReference(IRemoteServicesManager.class);
+ IRemoteServicesManager manager = context.getService(ref);
+ @SuppressWarnings("unchecked")
+ List<IRemoteConnectionType> types = manager.getConnectionTypesSupporting(IRemoteCommandShellService.class);
+
+ fRemoteConnectionWidget = new RemoteConnectionWidget(composite, SWT.NONE, null, 0, types);
+ fRemoteConnectionWidget.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ fireListeners(fRemoteConnectionWidget);
+ }
+ });
+ loadSettings();
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/internal/preferences/RemoteTerminalPreferenceInitializer.java b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/internal/preferences/RemoteTerminalPreferenceInitializer.java
new file mode 100644
index 00000000000..d8a159c8e47
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/internal/preferences/RemoteTerminalPreferenceInitializer.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2015, 2018 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.remote.internal.preferences;
+
+import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
+import org.eclipse.core.runtime.preferences.DefaultScope;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences;
+import org.eclipse.tm.terminal.connector.remote.IRemoteTerminalConstants;
+import org.eclipse.tm.terminal.connector.remote.internal.Activator;
+
+public class RemoteTerminalPreferenceInitializer extends AbstractPreferenceInitializer {
+
+ public RemoteTerminalPreferenceInitializer() {
+ }
+
+ @Override
+ public void initializeDefaultPreferences() {
+ IEclipsePreferences defaultPrefs = DefaultScope.INSTANCE.getNode(Activator.getUniqueIdentifier());
+ defaultPrefs.put(IRemoteTerminalConstants.PREF_TERMINAL_SHELL_COMMAND, ""); //$NON-NLS-1$
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/internal/preferences/RemoteTerminalPreferencePage.java b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/internal/preferences/RemoteTerminalPreferencePage.java
new file mode 100644
index 00000000000..615611aedfd
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/internal/preferences/RemoteTerminalPreferencePage.java
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * Copyright (c) 2015, 2018 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.remote.internal.preferences;
+
+import org.eclipse.core.runtime.preferences.InstanceScope;
+import org.eclipse.jface.preference.FieldEditorPreferencePage;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.preference.StringFieldEditor;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.tm.terminal.connector.remote.IRemoteTerminalConstants;
+import org.eclipse.tm.terminal.connector.remote.internal.Activator;
+import org.eclipse.tm.terminal.connector.remote.nls.Messages;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPreferencePage;
+import org.eclipse.ui.preferences.ScopedPreferenceStore;
+
+public class RemoteTerminalPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {
+ @Override
+ protected void createFieldEditors() {
+ Composite parent = getFieldEditorParent();
+ addField(new StringFieldEditor(IRemoteTerminalConstants.PREF_TERMINAL_TYPE, "Terminal Type", parent));
+ addField(new StringFieldEditor(IRemoteTerminalConstants.PREF_TERMINAL_SHELL_COMMAND,
+ Messages.RemoteTerminalPreferencePage_0, parent));
+ }
+
+ @Override
+ public IPreferenceStore doGetPreferenceStore() {
+ return new ScopedPreferenceStore(InstanceScope.INSTANCE, Activator.getUniqueIdentifier());
+ }
+
+ @Override
+ public void init(IWorkbench workbench) {
+ // Nothing
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/launcher/RemoteLauncherDelegate.java b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/launcher/RemoteLauncherDelegate.java
new file mode 100644
index 00000000000..32d77f4e0d7
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/launcher/RemoteLauncherDelegate.java
@@ -0,0 +1,180 @@
+/*******************************************************************************
+ * Copyright (c) 2015,2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.remote.launcher;
+
+import java.text.DateFormat;
+import java.util.Date;
+import java.util.Map;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteConnectionType;
+import org.eclipse.remote.core.IRemoteServicesManager;
+import org.eclipse.tm.internal.terminal.provisional.api.ISettingsStore;
+import org.eclipse.tm.internal.terminal.provisional.api.ITerminalConnector;
+import org.eclipse.tm.internal.terminal.provisional.api.TerminalConnectorExtension;
+import org.eclipse.tm.terminal.connector.remote.IRemoteSettings;
+import org.eclipse.tm.terminal.connector.remote.controls.RemoteWizardConfigurationPanel;
+import org.eclipse.tm.terminal.connector.remote.internal.Activator;
+import org.eclipse.tm.terminal.connector.remote.internal.RemoteSettings;
+import org.eclipse.tm.terminal.connector.remote.nls.Messages;
+import org.eclipse.tm.terminal.view.core.TerminalServiceFactory;
+import org.eclipse.tm.terminal.view.core.interfaces.ITerminalService;
+import org.eclipse.tm.terminal.view.core.interfaces.constants.ITerminalsConnectorConstants;
+import org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanel;
+import org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanelContainer;
+import org.eclipse.tm.terminal.view.ui.interfaces.IMementoHandler;
+import org.eclipse.tm.terminal.view.ui.internal.SettingsStore;
+import org.eclipse.tm.terminal.view.ui.launcher.AbstractLauncherDelegate;
+
+/**
+ * Remote launcher delegate implementation.
+ */
+@SuppressWarnings("restriction")
+public class RemoteLauncherDelegate extends AbstractLauncherDelegate {
+ // The Remote terminal connection memento handler
+ private final IMementoHandler mementoHandler = new RemoteMementoHandler();
+
+ /* (non-Javadoc)
+ * @see org.eclipse.tm.terminal.view.ui.interfaces.ILauncherDelegate#needsUserConfiguration()
+ */
+ @Override
+ public boolean needsUserConfiguration() {
+ return true;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.tm.terminal.view.ui.interfaces.ILauncherDelegate#getPanel(org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanelContainer)
+ */
+ @Override
+ public IConfigurationPanel getPanel(IConfigurationPanelContainer container) {
+ return new RemoteWizardConfigurationPanel(container);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.tm.terminal.view.ui.interfaces.ILauncherDelegate#execute(java.util.Map, org.eclipse.tm.terminal.view.core.interfaces.ITerminalService.Done)
+ */
+ @Override
+ public void execute(Map<String, Object> properties, ITerminalService.Done done) {
+ Assert.isNotNull(properties);
+
+ // Set the terminal tab title
+ String terminalTitle = getTerminalTitle(properties);
+ if (terminalTitle != null) {
+ properties.put(ITerminalsConnectorConstants.PROP_TITLE, terminalTitle);
+ }
+
+ // Force a new terminal tab each time it is launched, if not set otherwise from outside
+ // TODO need a command shell service routing to get this
+ if (!properties.containsKey(ITerminalsConnectorConstants.PROP_FORCE_NEW)) {
+ properties.put(ITerminalsConnectorConstants.PROP_FORCE_NEW, Boolean.TRUE);
+ }
+
+ // Get the terminal service
+ ITerminalService terminal = TerminalServiceFactory.getService();
+ // If not available, we cannot fulfill this request
+ if (terminal != null) {
+ terminal.openConsole(properties, done);
+ }
+ }
+
+ /**
+ * Returns the terminal title string.
+ * <p>
+ * The default implementation constructs a title like &quot;SSH @ host (Start time) &quot;.
+ *
+ * @return The terminal title string or <code>null</code>.
+ */
+ private String getTerminalTitle(Map<String, Object> properties) {
+ // Try to see if the user set a title explicitly via the properties map.
+ String title = getDefaultTerminalTitle(properties);
+ if (title != null)
+ return title;
+
+ String connection = (String) properties.get(IRemoteSettings.CONNECTION_NAME);
+
+ if (connection != null) {
+ DateFormat format = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT);
+ String date = format.format(new Date(System.currentTimeMillis()));
+ return NLS.bind(Messages.RemoteLauncherDelegate_terminalTitle, new String[] { connection, date });
+ }
+
+ return Messages.RemoteLauncherDelegate_terminalTitle_default;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.core.runtime.PlatformObject#getAdapter(java.lang.Class)
+ */
+ @SuppressWarnings({ "rawtypes", "unchecked" })
+ @Override
+ public Object getAdapter(Class adapter) {
+ if (IMementoHandler.class.equals(adapter)) {
+ return mementoHandler;
+ }
+ return super.getAdapter(adapter);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.tm.terminal.view.ui.interfaces.ILauncherDelegate#createTerminalConnector(java.util.Map)
+ */
+ @Override
+ public ITerminalConnector createTerminalConnector(Map<String, Object> properties) {
+ Assert.isNotNull(properties);
+
+ // Check for the terminal connector id
+ String connectorId = (String) properties.get(ITerminalsConnectorConstants.PROP_TERMINAL_CONNECTOR_ID);
+ if (connectorId == null) {
+ connectorId = "org.eclipse.tm.terminal.connector.remote.RemoteConnector"; //$NON-NLS-1$
+ }
+
+ // Extract the remote properties
+ String connTypeId = (String) properties.get(IRemoteSettings.CONNECTION_TYPE_ID);
+ String connName = (String) properties.get(IRemoteSettings.CONNECTION_NAME);
+
+ // Construct the terminal settings store
+ ISettingsStore store = new SettingsStore();
+
+ // Construct the remote settings
+ RemoteSettings remoteSettings = new RemoteSettings();
+ remoteSettings.setConnectionTypeId(connTypeId);
+ remoteSettings.setConnectionName(connName);
+ // And save the settings to the store
+ remoteSettings.save(store);
+
+ // Construct the terminal connector instance
+ ITerminalConnector connector = TerminalConnectorExtension.makeTerminalConnector(connectorId);
+ if (connector != null) {
+ // Apply default settings
+ connector.setDefaultSettings();
+ // And load the real settings
+ connector.load(store);
+ }
+
+ if (!properties.containsKey(ITerminalsConnectorConstants.PROP_ENCODING)) {
+ IRemoteServicesManager svcMgr = Activator.getService(IRemoteServicesManager.class);
+
+ IRemoteConnectionType connType = svcMgr.getConnectionType(connTypeId);
+ if (connType != null) {
+ IRemoteConnection remoteConnection = connType.getConnection(connName);
+ if (remoteConnection != null && remoteConnection.isOpen()) {
+ properties.put(ITerminalsConnectorConstants.PROP_ENCODING,
+ remoteConnection.getProperty(IRemoteConnection.LOCALE_CHARMAP_PROPERTY));
+ }
+ }
+ }
+
+ properties.put(ITerminalsConnectorConstants.PROP_PROCESS_WORKING_DIR, "/tmp"); //$NON-NLS-1$
+
+ return connector;
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/launcher/RemoteMementoHandler.java b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/launcher/RemoteMementoHandler.java
new file mode 100644
index 00000000000..1fcd847e784
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/launcher/RemoteMementoHandler.java
@@ -0,0 +1,62 @@
+/*******************************************************************************
+ * Copyright (c) 2012, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.remote.launcher;
+
+import java.util.Map;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.tm.terminal.connector.remote.IRemoteSettings;
+import org.eclipse.tm.terminal.view.core.interfaces.constants.ITerminalsConnectorConstants;
+import org.eclipse.tm.terminal.view.ui.interfaces.IMementoHandler;
+import org.eclipse.ui.IMemento;
+
+/**
+ * Telnet terminal connection memento handler implementation.
+ */
+public class RemoteMementoHandler implements IMementoHandler {
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.tm.terminal.view.ui.interfaces.IMementoHandler#saveState(org.eclipse.ui.IMemento, java.util.Map)
+ */
+ @Override
+ public void saveState(IMemento memento, Map<String, Object> properties) {
+ Assert.isNotNull(memento);
+ Assert.isNotNull(properties);
+
+ // Do not write the terminal title to the memento -> needs to
+ // be recreated at the time of restoration.
+ memento.putString(IRemoteSettings.CONNECTION_NAME, (String) properties.get(IRemoteSettings.CONNECTION_NAME));
+ memento.putString(IRemoteSettings.CONNECTION_TYPE_ID,
+ (String) properties.get(IRemoteSettings.CONNECTION_TYPE_ID));
+ memento.putString(ITerminalsConnectorConstants.PROP_ENCODING,
+ (String) properties.get(ITerminalsConnectorConstants.PROP_ENCODING));
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.tm.terminal.view.ui.interfaces.IMementoHandler#restoreState(org.eclipse.ui.IMemento, java.util.Map)
+ */
+ @Override
+ public void restoreState(IMemento memento, Map<String, Object> properties) {
+ Assert.isNotNull(memento);
+ Assert.isNotNull(properties);
+
+ // Restore the terminal properties from the memento
+ properties.put(IRemoteSettings.CONNECTION_NAME, memento.getString(IRemoteSettings.CONNECTION_NAME));
+ properties.put(IRemoteSettings.CONNECTION_TYPE_ID, memento.getString(IRemoteSettings.CONNECTION_TYPE_ID));
+ properties.put(ITerminalsConnectorConstants.PROP_ENCODING,
+ memento.getString(ITerminalsConnectorConstants.PROP_ENCODING));
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/nls/Messages.java b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/nls/Messages.java
new file mode 100644
index 00000000000..12862dc6601
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/nls/Messages.java
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ * Copyright (c) 2015, 2018 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.remote.nls;
+
+import org.eclipse.osgi.util.NLS;
+
+public class Messages extends NLS {
+ private static final String BUNDLE_NAME = "org.eclipse.tm.terminal.connector.remote.nls.Messages"; //$NON-NLS-1$
+
+ public static String RemoteConnectionManager_0;
+
+ public static String RemoteConnectionManager_1;
+
+ public static String RemoteConnectionManager_2;
+
+ public static String RemoteTerminalPreferencePage_0;
+
+ public static String TERMINAL_EXCEPTION;
+
+ public static String RemoteLauncherDelegate_terminalTitle;
+ public static String RemoteLauncherDelegate_terminalTitle_default;
+
+ static {
+ // initialize resource bundle
+ NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+ }
+
+ private Messages() {
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/nls/Messages.properties b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/nls/Messages.properties
new file mode 100644
index 00000000000..35df892f056
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/nls/Messages.properties
@@ -0,0 +1,19 @@
+###############################################################################
+# Copyright (c) 2015, 2018 Wind River Systems, Inc. and others. All rights reserved.
+# This program and the accompanying materials are made available under the terms
+# of the Eclipse Public License 2.0 which accompanies this distribution, and is
+# available at https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Wind River Systems - initial API and implementation
+###############################################################################
+RemoteConnectionManager_0=Unable to create connection: {0}
+RemoteConnectionManager_1=Unable to to open connection: {0}
+RemoteConnectionManager_2=Connection type does not support the required services
+RemoteTerminalPreferencePage_0=Initial Shell Command
+TERMINAL_EXCEPTION=Remote Terminal Exception
+
+RemoteLauncherDelegate_terminalTitle={0} ({1})
+RemoteLauncherDelegate_terminalTitle_default=Remote Terminal
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.classpath b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.classpath
new file mode 100644
index 00000000000..e801ebfb468
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.gitignore b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.gitignore
new file mode 100644
index 00000000000..ae3c1726048
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.options b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.options
new file mode 100644
index 00000000000..8ec18dafab2
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.options
@@ -0,0 +1 @@
+org.eclipse.tm.terminal.connector.ssh/debugmode = 0
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.project b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.project
new file mode 100644
index 00000000000..be963dbfb21
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.project
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.tm.terminal.connector.ssh</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+ </natures>
+ <filteredResources>
+ <filter>
+ <id>1329502091181</id>
+ <name></name>
+ <type>10</type>
+ <matcher>
+ <id>org.eclipse.ui.ide.multiFilter</id>
+ <arguments>1.0-name-matches-false-false-target</arguments>
+ </matcher>
+ </filter>
+ </filteredResources>
+</projectDescription>
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.settings/org.eclipse.core.resources.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.settings/org.eclipse.jdt.core.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..e3a8104f9ca
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.settings/org.eclipse.jdt.launching.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 00000000000..f8a131b56e0
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_COMPILER_COMPLIANCE_DOES_NOT_MATCH_JRE=warning
+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=warning
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.settings/org.eclipse.jdt.ui.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.settings/org.eclipse.pde.api.tools.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 00000000000..ec9fbf321d0
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,184 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITH_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_FIELD=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERCLASS_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_CHANGED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENTS=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETERS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Error
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Warning
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+MISSING_EE_DESCRIPTIONS=Warning
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=false
+changed_execution_env=Error
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+incompatible_api_component_version_report_major_without_breaking_change=Warning
+incompatible_api_component_version_report_minor_without_api_change=Warning
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.settings/org.eclipse.pde.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.settings/org.eclipse.pde.prefs
new file mode 100644
index 00000000000..d2dc703ba9e
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,35 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=2
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=2
+compilers.p.missing-version-export-package=2
+compilers.p.missing-version-import-package=2
+compilers.p.missing-version-require-bundle=2
+compilers.p.no-required-att=0
+compilers.p.no.automatic.module=1
+compilers.p.not-externalized-att=1
+compilers.p.service.component.without.lazyactivation=1
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/META-INF/MANIFEST.MF b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..a035b6e8a6e
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/META-INF/MANIFEST.MF
@@ -0,0 +1,25 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.tm.terminal.connector.ssh;singleton:=true
+Bundle-Version: 4.7.300.qualifier
+Bundle-Activator: org.eclipse.tm.terminal.connector.ssh.activator.UIPlugin
+Bundle-Vendor: %providerName
+Require-Bundle: org.eclipse.core.expressions;bundle-version="3.4.400",
+ org.eclipse.core.runtime;bundle-version="3.8.0",
+ org.eclipse.equinox.security;bundle-version="1.1.100",
+ org.eclipse.tm.terminal.view.core;bundle-version="4.5.0";resolution:=optional,
+ org.eclipse.tm.terminal.view.ui;bundle-version="4.5.0";resolution:=optional,
+ org.eclipse.tm.terminal.control;bundle-version="4.5.0",
+ org.eclipse.ui;bundle-version="3.8.0",
+ com.jcraft.jsch;bundle-version="[0.1.31,1.0.0)",
+ org.eclipse.jsch.core;bundle-version="[1.0.0,2.0.0)"
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Bundle-ActivationPolicy: lazy
+Bundle-Localization: plugin
+Export-Package: org.eclipse.tm.terminal.connector.ssh.activator;x-internal:=true,
+ org.eclipse.tm.terminal.connector.ssh.connector,
+ org.eclipse.tm.terminal.connector.ssh.controls,
+ org.eclipse.tm.terminal.connector.ssh.launcher,
+ org.eclipse.tm.terminal.connector.ssh.nls;x-internal:=true
+Automatic-Module-Name: org.eclipse.tm.terminal.connector.ssh
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/about.html b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/about.ini b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/about.ini
new file mode 100644
index 00000000000..e07a7bb377e
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/about.ini
@@ -0,0 +1,24 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%blurb
+
+# Property "windowImage" contains path to window icon (16x16)
+# needed for primary features only
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=cdt_logo_icon32.png
+
+# Property "aboutImage" contains path to product image (500x330 or 115x164)
+# needed for primary features only
+
+# Property "appName" contains name of the application (translated)
+# needed for primary features only
+
+# Property "welcomePerspective" contains the id of the perspective in which the
+# welcome page is to be opened.
+# optional
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/about.mappings b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/about.mappings
new file mode 100644
index 00000000000..936a8039c3e
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/about.mappings
@@ -0,0 +1,9 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+# The following should contain the build version.
+# e.g. "0=20200106-1728"
+# This value will be added automatically via the build scripts
+0=${buildId}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/about.properties b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/about.properties
new file mode 100644
index 00000000000..923e92b4e1c
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/about.properties
@@ -0,0 +1,32 @@
+###############################################################################
+# Copyright (c) 2018, 2022 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+# about.properties
+# contains externalized strings for about.ini
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# fill-ins are supplied by about.mappings
+# This file should be translated.
+# NOTE TO TRANSLATOR: Please do not translate the featureVersion variable.
+
+
+blurb=TM Terminal SSH Connector Extensions\n\
+\n\
+Version: {featureVersion}\n\
+Build id: {0}\n\
+\n\
+Copyright (c) 2018, 2022 Contributors to the Eclipse Foundation
+\n\
+See the NOTICE file(s) distributed with this work for additional\n\
+information regarding copyright ownership.\n\
+\n\
+Visit http://www.eclipse.org/cdt
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/build.properties b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/build.properties
new file mode 100644
index 00000000000..296f6c62d52
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/build.properties
@@ -0,0 +1,23 @@
+###############################################################################
+# Copyright (c) 2012, 2018 Wind River Systems, Inc. and others. All rights reserved.
+# This program and the accompanying materials are made available under the terms
+# of the Eclipse Public License 2.0 which accompanies this distribution, and is
+# available at https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Wind River Systems - initial API and implementation
+###############################################################################
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.properties,\
+ plugin.xml,\
+ about.html,\
+ about.ini,\
+ about.mappings,\
+ about.properties,\
+ cdt_logo_icon32.png
+src.includes = about.html
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/cdt_logo_icon32.png b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/cdt_logo_icon32.png
new file mode 100644
index 00000000000..470ca81b327
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/cdt_logo_icon32.png
Binary files differ
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/plugin.properties b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/plugin.properties
new file mode 100644
index 00000000000..cbbf5c4aa02
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/plugin.properties
@@ -0,0 +1,22 @@
+##################################################################################
+# Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved.
+# This program and the accompanying materials are made available under the terms
+# of the Eclipse Public License 2.0 which accompanies this distribution, and is
+# available at https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Wind River Systems - initial API and implementation
+##################################################################################
+
+pluginName = Terminal SSH Connector
+providerName = Eclipse CDT
+
+# ----- Terminal Connector -----
+
+SshConnector.label=SSH
+
+# ----- Terminal Launcher Delegates -----
+
+SshLauncherDelegate.label=SSH Terminal \ No newline at end of file
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/plugin.xml b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/plugin.xml
new file mode 100644
index 00000000000..5c9ea94f3c4
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/plugin.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<!--
+ Copyright (c) 2018 Red Hat and others.
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+ -->
+
+<plugin>
+
+<!-- Terminal connector contributions -->
+ <extension point="org.eclipse.tm.terminal.control.connectors">
+ <connector
+ name="%SshConnector.label"
+ id="org.eclipse.tm.terminal.connector.ssh.SshConnector"
+ class="org.eclipse.tm.terminal.connector.ssh.connector.SshConnector"/>
+ </extension>
+
+<!-- Terminal launcher delegate contributions -->
+ <extension point="org.eclipse.tm.terminal.view.ui.launcherDelegates">
+ <delegate
+ class="org.eclipse.tm.terminal.connector.ssh.launcher.SshLauncherDelegate"
+ id="org.eclipse.tm.terminal.connector.ssh.launcher.ssh"
+ label="%SshLauncherDelegate.label">
+ <enablement>
+ <with variable="selection">
+ <count value="1"/>
+ <iterate operator="and" ifEmpty="false">
+ <test
+ forcePluginActivation="true"
+ property="org.eclipse.tm.terminal.view.core.hasContextPropertiesProvider"
+ value="true"/>
+ </iterate>
+ </with>
+ </enablement>
+ </delegate>
+ </extension>
+</plugin>
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/activator/UIPlugin.java b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/activator/UIPlugin.java
new file mode 100644
index 00000000000..598f41ef17b
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/activator/UIPlugin.java
@@ -0,0 +1,145 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.ssh.activator;
+
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.resource.ImageRegistry;
+import org.eclipse.jsch.core.IJSchService;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.tm.terminal.connector.ssh.connector.SshConnection;
+import org.eclipse.tm.terminal.view.core.tracing.TraceHandler;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+import org.osgi.util.tracker.ServiceTracker;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class UIPlugin extends AbstractUIPlugin {
+ // The shared instance
+ private static UIPlugin plugin;
+ // The trace handler instance
+ private static volatile TraceHandler traceHandler;
+
+ // ServiceTracker for IJschService
+ private ServiceTracker tracker;
+
+ /**
+ * The constructor
+ */
+ public UIPlugin() {
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static UIPlugin getDefault() {
+ return plugin;
+ }
+
+ /**
+ * Convenience method which returns the unique identifier of this plugin.
+ */
+ public static String getUniqueIdentifier() {
+ if (getDefault() != null && getDefault().getBundle() != null) {
+ return getDefault().getBundle().getSymbolicName();
+ }
+ return "org.eclipse.tm.terminal.connector.ssh"; //$NON-NLS-1$
+ }
+
+ /**
+ * Returns the bundles trace handler.
+ *
+ * @return The bundles trace handler.
+ */
+ public static TraceHandler getTraceHandler() {
+ if (traceHandler == null) {
+ traceHandler = new TraceHandler(getUniqueIdentifier());
+ }
+ return traceHandler;
+ }
+
+ //---------------------------------------------------------------------------
+ //<copied code from org.eclipse.team.cvs.ssh2/CVSSSH2Plugin (Copyright IBM)>
+ //---------------------------------------------------------------------------
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+
+ tracker = new ServiceTracker(getBundle().getBundleContext(), IJSchService.class.getName(), null);
+ tracker.open();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+ */
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ try {
+ SshConnection.shutdown();
+ tracker.close();
+ } finally {
+ plugin = null;
+ super.stop(context);
+ }
+ }
+
+ /**
+ * Returns an instance of IJSchService from the OSGi Registry.
+ * @return An instance of IJSchService, or <code>null</code> if no
+ * IJschService service is available.
+ */
+ public IJSchService getJSchService() {
+ return (IJSchService) tracker.getService();
+ }
+
+ //---------------------------------------------------------------------------
+ //<copied code from org.eclipse.team.cvs.ssh2/CVSSSH2Plugin (Copyright IBM)>
+ //---------------------------------------------------------------------------
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#initializeImageRegistry(org.eclipse.jface.resource.ImageRegistry)
+ */
+ @Override
+ protected void initializeImageRegistry(ImageRegistry registry) {
+ }
+
+ /**
+ * Loads the image registered under the specified key from the image
+ * registry and returns the <code>Image</code> object instance.
+ *
+ * @param key The key the image is registered with.
+ * @return The <code>Image</code> object instance or <code>null</code>.
+ */
+ public static Image getImage(String key) {
+ return getDefault().getImageRegistry().get(key);
+ }
+
+ /**
+ * Loads the image registered under the specified key from the image
+ * registry and returns the <code>ImageDescriptor</code> object instance.
+ *
+ * @param key The key the image is registered with.
+ * @return The <code>ImageDescriptor</code> object instance or <code>null</code>.
+ */
+ public static ImageDescriptor getImageDescriptor(String key) {
+ return getDefault().getImageRegistry().getDescriptor(key);
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/ISshConstants.java b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/ISshConstants.java
new file mode 100644
index 00000000000..0d4bd371467
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/ISshConstants.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ * Martin Oberhuber (Wind River) - extracted from various team.cvs plugins
+ * Martin Oberhuber (Wind River) - [175686] Adapted to new IJSchService API
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.ssh.connector;
+
+/**
+ * Defines the constants used by the terminal.ssh Plugin
+ */
+public interface ISshConstants {
+
+ // These are from cvs.ui.IHelpContextIds
+ public static final String CVSUIPREFIX = "org.eclipse.team.cvs.ui."; //$NON-NLS-1$
+ public static final String HELP_USER_VALIDATION_DIALOG = CVSUIPREFIX + "user_validation_dialog_context"; //$NON-NLS-1$
+ public static final String HELP_KEYBOARD_INTERACTIVE_DIALOG = CVSUIPREFIX + "keyboard_interactive_dialog_context"; //$NON-NLS-1$
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/ISshSettings.java b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/ISshSettings.java
new file mode 100644
index 00000000000..65d2b0c69e4
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/ISshSettings.java
@@ -0,0 +1,81 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ * Martin Oberhuber (Wind River) - fixed copyright headers and beautified
+ * Johnson Ma (Wind River) - [218880] Add UI setting for ssh keepalives
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.ssh.connector;
+
+import org.eclipse.tm.internal.terminal.provisional.api.ISettingsStore;
+
+public interface ISshSettings {
+
+ public static int DEFAULT_SSH_PORT = 22;
+
+ /**
+ * Get the host name or IP address of remote system to connect.
+ * @return host name or IP address of the remote system.
+ */
+ String getHost();
+
+ /**
+ * Get the login name for connecting to the remote system.
+ * @return remote login name
+ */
+ String getUser();
+
+ /**
+ * Get the password for connecting to the remote system.
+ * May be empty if connecting via SSH public key authentication
+ * (with or without passphrase).
+ * @return password to use
+ */
+ String getPassword();
+
+ /**
+ * Get the timeout (in seconds) after which the SSH connection is assumed dead.
+ * @return timeout (in seconds) for the SSH connection.
+ */
+ int getTimeout();
+
+ /**
+ * Get the keepalive interval (in seconds).
+ * After this time of inactivity, the SSH connector will send a message to the
+ * remote system in order to avoid timeouts on the remote. A maximum of 6
+ * keepalive messages will be sent if enabled. When set to 0, the keepalive
+ * feature is disabled.
+ * @return interval (in seconds) for keepalive messages.
+ */
+ int getKeepalive();
+
+ /**
+ * Get the TCP/IP port on the remote system to use.
+ * @return TCP/IP port on the remote system to use.
+ */
+ int getPort();
+
+ /**
+ * Return a human-readable String summarizing all relevant connection data.
+ * This String can be displayed in the Terminal caption, for instance.
+ * @return a human-readable String summarizing relevant connection data.
+ */
+ String getSummary();
+
+ /**
+ * Load connection data from a settings store.
+ * @param store the settings store to access.
+ */
+ void load(ISettingsStore store);
+
+ /**
+ * Store connection data into a settings store.
+ * @param store the settings store to access.
+ */
+ void save(ISettingsStore store);
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/KeyboardInteractiveDialog.java b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/KeyboardInteractiveDialog.java
new file mode 100644
index 00000000000..8cbff227e79
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/KeyboardInteractiveDialog.java
@@ -0,0 +1,196 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Atsuhiko Yamanaka, JCraft,Inc. - initial API and implementation.
+ * IBM Corporation - ongoing maintenance
+ * Martin Oberhuber (Wind River) - copied and adapted from team.cvs.ui
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.ssh.connector;
+
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.dialogs.TrayDialog;
+import org.eclipse.jface.window.Window;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.PlatformUI;
+
+/**
+ * A dialog for keyboad-interactive authentication for the ssh2 connection.
+ */
+public class KeyboardInteractiveDialog extends TrayDialog {
+ // widgets
+ private Text[] texts;
+
+ protected String domain;
+ protected String destination;
+ protected String name;
+ protected String instruction;
+ protected String lang;
+ protected String[] prompt;
+ protected boolean[] echo;
+ private String message;
+ private String[] result;
+
+ /**
+ * Creates a nwe KeyboardInteractiveDialog.
+ *
+ * @param parentShell the parent shell
+ * @param connectionId an id for the connection
+ * @param destination the location
+ * @param name the name
+ * @param instruction the instruction
+ * @param prompt the titles for textfields
+ * @param echo '*' should be used or not
+ */
+ public KeyboardInteractiveDialog(Shell parentShell, String connectionId, String destination, String name,
+ String instruction, String[] prompt, boolean[] echo) {
+ super(parentShell);
+ this.domain = connectionId;
+ this.destination = destination;
+ this.name = name;
+ this.instruction = instruction;
+ this.prompt = prompt;
+ this.echo = echo;
+ this.message = NLS.bind(SshMessages.KeyboardInteractiveDialog_message,
+ new String[] { destination + (name != null && name.length() > 0 ? ": " + name : "") }); //NON-NLS-1$ //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * @see Window#configureShell
+ */
+ @Override
+ protected void configureShell(Shell newShell) {
+ super.configureShell(newShell);
+ newShell.setText(message);
+ }
+
+ /**
+ * @see Window#create
+ */
+ @Override
+ public void create() {
+ super.create();
+ if (texts.length > 0) {
+ texts[0].setFocus();
+ }
+ }
+
+ /**
+ * @see Dialog#createDialogArea
+ */
+ @Override
+ protected Control createDialogArea(Composite parent) {
+ Composite main = new Composite(parent, SWT.NONE);
+ GridLayout layout = new GridLayout();
+ layout.numColumns = 3;
+ main.setLayout(layout);
+ main.setLayoutData(new GridData(GridData.FILL_BOTH));
+
+ // set F1 help
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(main, ISshConstants.HELP_KEYBOARD_INTERACTIVE_DIALOG);
+
+ if (message != null) {
+ Label messageLabel = new Label(main, SWT.WRAP);
+ messageLabel.setText(message);
+ GridData data = new GridData(GridData.FILL_HORIZONTAL);
+ data.horizontalSpan = 3;
+ messageLabel.setLayoutData(data);
+ }
+ if (domain != null) {
+ Label label = new Label(main, SWT.WRAP);
+ label.setText(NLS.bind(SshMessages.KeyboardInteractiveDialog_labelConnection, new String[] { domain }));
+ GridData data = new GridData(GridData.FILL_HORIZONTAL);
+ data.horizontalSpan = 3;
+ label.setLayoutData(data);
+ }
+ if (instruction != null && instruction.length() > 0) {
+ Label messageLabel = new Label(main, SWT.WRAP);
+ messageLabel.setText(instruction);
+ GridData data = new GridData(GridData.FILL_HORIZONTAL);
+ data.horizontalSpan = 3;
+ messageLabel.setLayoutData(data);
+ }
+ createPasswordFields(main);
+ return main;
+ }
+
+ /**
+ * Creates the widgets that represent the entry area.
+ *
+ * @param parent the parent of the widgets
+ */
+ @SuppressWarnings("unused")
+ protected void createPasswordFields(Composite parent) {
+ texts = new Text[prompt.length];
+
+ for (int i = 0; i < prompt.length; i++) {
+ new Label(parent, SWT.NONE).setText(prompt[i]);
+ texts[i] = new Text(parent, SWT.BORDER);
+ GridData data = new GridData(GridData.FILL_HORIZONTAL);
+ data.widthHint = convertHorizontalDLUsToPixels(IDialogConstants.ENTRY_FIELD_WIDTH);
+ texts[i].setLayoutData(data);
+
+ if (!echo[i]) {
+ texts[i].setEchoChar('*');
+ }
+ new Label(parent, SWT.NONE);
+ }
+
+ }
+
+ /**
+ * Returns the entered values, or null
+ * if the user cancelled.
+ *
+ * @return the entered values
+ */
+ public String[] getResult() {
+ return result;
+ }
+
+ /**
+ * Notifies that the ok button of this dialog has been pressed.
+ * <p>
+ * The default implementation of this framework method sets
+ * this dialog's return code to <code>Window.OK</code>
+ * and closes the dialog. Subclasses may override.
+ * </p>
+ */
+ @Override
+ protected void okPressed() {
+ result = new String[prompt.length];
+ for (int i = 0; i < texts.length; i++) {
+ result[i] = texts[i].getText();
+ }
+ super.okPressed();
+ }
+
+ /**
+ * Notifies that the cancel button of this dialog has been pressed.
+ * <p>
+ * The default implementation of this framework method sets
+ * this dialog's return code to <code>Window.CANCEL</code>
+ * and closes the dialog. Subclasses may override.
+ * </p>
+ */
+ @Override
+ protected void cancelPressed() {
+ result = null;
+ super.cancelPressed();
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/SshConnection.java b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/SshConnection.java
new file mode 100644
index 00000000000..ee92426bfe1
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/SshConnection.java
@@ -0,0 +1,382 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2015 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ * Martin Oberhuber (Wind River) - fixed copyright headers and beautified
+ * Martin Oberhuber (Wind River) - [175686] Adapted to new IJSchService API
+ * - copied code from org.eclipse.team.cvs.ssh2/JSchSession (Copyright IBM)
+ * Martin Oberhuber (Wind River) - [198790] make SSH createSession() protected
+ * Mikhail Kalugin <fourdman@xored.com> - [201864] Fix Terminal SSH keyboard interactive authentication
+ * Martin Oberhuber (Wind River) - [155026] Add keepalives for SSH connection
+ * Johnson Ma (Wind River) - [218880] Add UI setting for ssh keepalives
+ * Martin Oberhuber (Wind River) - [225792] Rename SshConnector.getTelnetSettings() to getSshSettings()
+ * Martin Oberhuber (Wind River) - [168197] Replace JFace MessagDialog by SWT MessageBox
+ * Martin Oberhuber (Wind River) - [205674][ssh] Terminal remains "connecting" when authentication is cancelled
+ * Michael Scharf (Wind River) - 240420: [terminal][ssh]Channel is not closed when the connection is closed with the close button
+ * Martin Oberhuber (Wind River) - [206919] Improve SSH Terminal Error Reporting
+ * Andrei Sobolev (Xored) - [250456] Ssh banner message causes IllegalArgumentException popup
+ * Anton Leherbauer (Wind River) - [453393] Add support for copying wrapped lines without line break
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.ssh.connector;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InterruptedIOException;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.OperationCanceledException;
+import org.eclipse.jface.window.Window;
+import org.eclipse.jsch.core.IJSchService;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.MessageBox;
+import org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl;
+import org.eclipse.tm.internal.terminal.provisional.api.Logger;
+import org.eclipse.tm.internal.terminal.provisional.api.TerminalState;
+import org.eclipse.tm.terminal.connector.ssh.activator.UIPlugin;
+
+import com.jcraft.jsch.ChannelShell;
+import com.jcraft.jsch.JSchException;
+import com.jcraft.jsch.Session;
+import com.jcraft.jsch.UIKeyboardInteractive;
+import com.jcraft.jsch.UserInfo;
+
+public class SshConnection extends Thread {
+ private static int fgNo;
+ /* default */ final ITerminalControl fControl;
+ private final SshConnector fConn;
+ private Session fSession;
+ private boolean fDisconnectHasBeenCalled;
+
+ protected SshConnection(SshConnector conn, ITerminalControl control) {
+ super("SshConnection-" + fgNo++); //$NON-NLS-1$
+ fControl = control;
+ fConn = conn;
+ fControl.setState(TerminalState.CONNECTING);
+ }
+
+ //----------------------------------------------------------------------
+ // <copied code from org.eclipse.team.cvs.ssh2/JSchSession (Copyright IBM)>
+ //----------------------------------------------------------------------
+
+ /**
+ * Create a Jsch session.
+ * Subclasses can override in order to replace the UserInfo wrapper
+ * (for non-interactive usage, for instance), or in order to change
+ * the Jsch config (for instance, in order to switch off strict
+ * host key checking or in order to add specific ciphers).
+ */
+ protected Session createSession(String username, String password, String hostname, int port, UserInfo wrapperUI,
+ IProgressMonitor monitor) throws JSchException {
+ IJSchService service = UIPlugin.getDefault().getJSchService();
+ if (service == null)
+ return null;
+ Session session = service.createSession(hostname, port, username);
+ //session.setTimeout(getSshTimeoutInMillis());
+ session.setTimeout(0); //never time out on the session
+ session.setServerAliveCountMax(6); //give up after 6 tries (remote will be dead after 30 min)
+ if (password != null)
+ session.setPassword(password);
+ session.setUserInfo(wrapperUI);
+ return session;
+ }
+
+ public static void shutdown() {
+ //TODO: Store all Jsch sessions in a pool and disconnect them on shutdown
+ }
+
+ //----------------------------------------------------------------------
+ // </copied code from org.eclipse.team.cvs.ssh2/JSchSession (Copyright IBM)>
+ //----------------------------------------------------------------------
+
+ @Override
+ public void run() {
+ boolean connectSucceeded = false;
+ String host = ""; //$NON-NLS-1$
+ int port = ISshSettings.DEFAULT_SSH_PORT;
+ try {
+ int nTimeout = fConn.getSshSettings().getTimeout() * 1000;
+ int nKeepalive = fConn.getSshSettings().getKeepalive() * 1000;
+ host = fConn.getSshSettings().getHost();
+ String user = fConn.getSshSettings().getUser();
+ String password = fConn.getSshSettings().getPassword();
+ port = fConn.getSshSettings().getPort();
+
+ UserInfo ui = new MyUserInfo(null, user, password);
+
+ Session session = createSession(user, password, host, port, ui, new NullProgressMonitor());
+ synchronized (this) {
+ fSession = session;
+ }
+
+ //java.util.Hashtable config=new java.util.Hashtable();
+ //config.put("StrictHostKeyChecking", "no");
+ //session.setConfig(config);
+ //ui.aboutToConnect();
+ if (nKeepalive > 0) {
+ session.setServerAliveInterval(nKeepalive); //default is 5 minutes
+ }
+ // dont try to connect if disconnect has been requested already
+ synchronized (this) {
+ if (fDisconnectHasBeenCalled)
+ return;
+ }
+
+ session.connect(nTimeout); // making connection with timeout.
+ // if we got disconnected, do not continue
+ if (!isSessionConnected())
+ return;
+ ChannelShell channel = (ChannelShell) session.openChannel("shell"); //$NON-NLS-1$
+ channel.setPtyType("xterm"); //$NON-NLS-1$
+ // TERM=xterm implies VT100 line wrapping mode
+ fControl.setVT100LineWrapping(true);
+ channel.connect();
+
+ // maybe the terminal was disconnected while we were connecting
+ if (isSessionConnected() && channel.isConnected()) {
+ connectSucceeded = true;
+ fConn.setInputStream(channel.getInputStream());
+ fConn.setOutputStream(channel.getOutputStream());
+ fConn.setChannel(channel);
+ fControl.setState(TerminalState.CONNECTED);
+ try {
+ // read data until the connection gets terminated
+ readDataForever(fConn.getInputStream());
+ } catch (InterruptedIOException e) {
+ // we got interrupted: we are done...
+ }
+ }
+ } catch (Exception e) {
+ Throwable cause = e;
+ while (cause.getCause() != null) {
+ cause = cause.getCause();
+ }
+ String origMsg = cause.getMessage();
+ String msg = SshMessages.getMessageFor(cause);
+ if ((cause instanceof JSchException) && origMsg != null && origMsg.startsWith("Auth")) { //$NON-NLS-1$
+ if (origMsg.indexOf("cancel") >= 0) { //$NON-NLS-1$
+ msg = SshMessages.SSH_AUTH_CANCEL;
+ } else if (origMsg.indexOf("fail") >= 0) { //$NON-NLS-1$
+ msg = SshMessages.SSH_AUTH_FAIL;
+ }
+ }
+ if (!connectSucceeded) {
+ String hostPort = host;
+ if (port != ISshSettings.DEFAULT_SSH_PORT) {
+ hostPort = hostPort + ':' + port;
+ }
+ msg = NLS.bind(SshMessages.ERROR_CONNECTING, hostPort, msg);
+ }
+ connectFailed(msg, msg);
+ } finally {
+ // make sure the terminal is disconnected when the thread ends
+ try {
+ disconnect();
+ } finally {
+ // when reading is done, we set the state to closed
+ fControl.setState(TerminalState.CLOSED);
+ }
+ }
+ }
+
+ /* default */ synchronized boolean isSessionConnected() {
+ return !fDisconnectHasBeenCalled && fSession != null && fSession.isConnected();
+ }
+
+ /**
+ * disconnect the ssh session
+ */
+ void disconnect() {
+ interrupt();
+ synchronized (this) {
+ fDisconnectHasBeenCalled = true;
+ if (fSession != null) {
+ try {
+ fSession.disconnect();
+ } catch (Exception e) {
+ // Ignore NPE due to bug in JSch if disconnecting
+ // while not yet authenticated
+ }
+ fSession = null;
+ }
+ }
+ }
+
+ /**
+ * Read the data from the ssh connection and display it in the terminal.
+ * @param in
+ * @throws IOException
+ */
+ private void readDataForever(InputStream in) throws IOException {
+ // read the data
+ byte bytes[] = new byte[32 * 1024];
+ int n;
+ // read until the thread gets interrupted....
+ while ((n = in.read(bytes)) != -1) {
+ fControl.getRemoteToTerminalOutputStream().write(bytes, 0, n);
+ }
+ }
+
+ protected static Display getStandardDisplay() {
+ Display display = Display.getCurrent();
+ if (display == null) {
+ display = Display.getDefault();
+ }
+ return display;
+ }
+
+ private class MyUserInfo implements UserInfo, UIKeyboardInteractive {
+ /* default */ final String fConnectionId;
+ /* default */ final String fUser;
+ private String fPassword;
+ private String fPassphrase;
+ private int fAttemptCount;
+
+ public MyUserInfo(String connectionId, String user, String password) {
+ fConnectionId = connectionId;
+ fUser = user;
+ fPassword = password;
+ }
+
+ @Override
+ public String getPassword() {
+ return fPassword;
+ }
+
+ @Override
+ public boolean promptYesNo(final String str) {
+ //need to switch to UI thread for prompting
+ final boolean[] retval = new boolean[1];
+ Display.getDefault().syncExec(new Runnable() {
+ @Override
+ public void run() {
+ // [168197] Replace JFace MessagDialog by SWT MessageBox
+ //retval[0] = MessageDialog.openQuestion(null, SshMessages.WARNING, str);
+ if (isSessionConnected()) {
+ MessageBox mb = new MessageBox(fControl.getShell(), SWT.ICON_QUESTION | SWT.YES | SWT.NO);
+ mb.setText(SshMessages.WARNING);
+ mb.setMessage(str);
+ retval[0] = (mb.open() == SWT.YES);
+ } else {
+ retval[0] = false;
+ }
+ }
+ });
+ return retval[0];
+ }
+
+ private String promptSecret(final String message) {
+ final String[] retval = new String[1];
+ getStandardDisplay().syncExec(new Runnable() {
+ @Override
+ public void run() {
+ if (isSessionConnected()) {
+ UserValidationDialog uvd = new UserValidationDialog(null, fConnectionId, fUser, message);
+ uvd.setUsernameMutable(false);
+ if (uvd.open() == Window.OK) {
+ retval[0] = uvd.getPassword();
+ } else {
+ retval[0] = null;
+ }
+ } else {
+ retval[0] = null;
+ }
+ }
+ });
+ return retval[0];
+ }
+
+ @Override
+ public String getPassphrase() {
+ return fPassphrase;
+ }
+
+ @Override
+ public boolean promptPassphrase(String message) {
+ fPassphrase = promptSecret(message);
+ return (fPassphrase != null);
+ }
+
+ @Override
+ public boolean promptPassword(final String message) {
+ String _password = promptSecret(message);
+ if (_password != null) {
+ fPassword = _password;
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public void showMessage(final String message) {
+ Display.getDefault().syncExec(new Runnable() {
+ @Override
+ public void run() {
+ // [168197] Replace JFace MessagDialog by SWT MessageBox
+ // MessageDialog.openInformation(null, SshMessages.INFO, message);
+ if (isSessionConnected()) {
+ MessageBox mb = new MessageBox(fControl.getShell(), SWT.ICON_INFORMATION | SWT.OK);
+ mb.setText(SshMessages.INFO);
+ mb.setMessage(message);
+ mb.open();
+ }
+ }
+ });
+ }
+
+ @Override
+ public String[] promptKeyboardInteractive(final String destination, final String name, final String instruction,
+ final String[] prompt, final boolean[] echo) {
+ if (prompt.length == 0) {
+ // No need to prompt, just return an empty String array
+ return new String[0];
+ }
+ try {
+ if (fAttemptCount == 0 && fPassword != null && prompt.length == 1
+ && prompt[0].trim().equalsIgnoreCase("password:")) { //$NON-NLS-1$
+ // Return the provided password the first time but always prompt on subsequent tries
+ fAttemptCount++;
+ return new String[] { fPassword };
+ }
+ final String[][] finResult = new String[1][];
+ getStandardDisplay().syncExec(new Runnable() {
+ @Override
+ public void run() {
+ if (isSessionConnected()) {
+ KeyboardInteractiveDialog dialog = new KeyboardInteractiveDialog(null, fConnectionId,
+ destination, name, instruction, prompt, echo);
+ dialog.open();
+ finResult[0] = dialog.getResult();
+ } else {
+ finResult[0] = null; // indicate cancel to JSch
+ }
+ }
+ });
+ String[] result = finResult[0];
+ if (result == null)
+ return null; // cancelled
+ if (result.length == 1 && prompt.length == 1 && prompt[0].trim().equalsIgnoreCase("password:")) { //$NON-NLS-1$
+ fPassword = result[0];
+ }
+ fAttemptCount++;
+ return result;
+ } catch (OperationCanceledException e) {
+ return null;
+ }
+ }
+ }
+
+ private void connectFailed(String terminalText, String msg) {
+ Logger.log(terminalText);
+ fControl.displayTextInTerminal(terminalText);
+ // fControl.setMsg(msg);
+ }
+
+} \ No newline at end of file
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/SshConnector.java b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/SshConnector.java
new file mode 100644
index 00000000000..a402fdc8b70
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/SshConnector.java
@@ -0,0 +1,150 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ * Martin Oberhuber (Wind River) - fixed copyright headers and beautified
+ * Martin Oberhuber (Wind River) - [225792] Rename SshConnector.getTelnetSettings() to getSshSettings()
+ * Martin Oberhuber (Wind River) - [225853][api] Provide more default functionality in TerminalConnectorImpl
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.ssh.connector;
+
+import java.io.InputStream;
+import java.io.OutputStream;
+
+import org.eclipse.tm.internal.terminal.provisional.api.ISettingsStore;
+import org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl;
+import org.eclipse.tm.internal.terminal.provisional.api.Logger;
+import org.eclipse.tm.internal.terminal.provisional.api.NullSettingsStore;
+import org.eclipse.tm.internal.terminal.provisional.api.provider.TerminalConnectorImpl;
+
+import com.jcraft.jsch.ChannelShell;
+import com.jcraft.jsch.JSch;
+
+public class SshConnector extends TerminalConnectorImpl {
+ private OutputStream fOutputStream;
+ private InputStream fInputStream;
+ private JSch fJsch;
+ private ChannelShell fChannel;
+ private SshConnection fConnection;
+ private final SshSettings fSettings;
+ private int fWidth;
+ private int fHeight;
+
+ public SshConnector() {
+ this(new SshSettings());
+ }
+
+ public SshConnector(SshSettings settings) {
+ fSettings = settings;
+ }
+
+ @Override
+ public void initialize() throws Exception {
+ fJsch = new JSch();
+ }
+
+ @Override
+ public void connect(ITerminalControl control) {
+ super.connect(control);
+ fConnection = new SshConnection(this, control);
+ fConnection.start();
+ }
+
+ @Override
+ synchronized public void doDisconnect() {
+ fConnection.disconnect();
+ if (getInputStream() != null) {
+ try {
+ getInputStream().close();
+ } catch (Exception exception) {
+ Logger.logException(exception);
+ }
+ }
+
+ if (getTerminalToRemoteStream() != null) {
+ try {
+ getTerminalToRemoteStream().close();
+ } catch (Exception exception) {
+ Logger.logException(exception);
+ }
+ }
+ }
+
+ @Override
+ public void setTerminalSize(int newWidth, int newHeight) {
+ if (fChannel != null && (newWidth != fWidth || newHeight != fHeight)) {
+ //avoid excessive communications due to change size requests by caching previous size
+ fChannel.setPtySize(newWidth, newHeight, 8 * newWidth, 8 * newHeight);
+ fWidth = newWidth;
+ fHeight = newHeight;
+ }
+ }
+
+ public InputStream getInputStream() {
+ return fInputStream;
+ }
+
+ @Override
+ public OutputStream getTerminalToRemoteStream() {
+ return fOutputStream;
+ }
+
+ void setInputStream(InputStream inputStream) {
+ fInputStream = inputStream;
+ }
+
+ void setOutputStream(OutputStream outputStream) {
+ fOutputStream = outputStream;
+ }
+
+ /**
+ * Return the SSH Settings.
+ *
+ * @return the settings for a concrete connection.
+ * @since org.eclipse.tm.terminal.ssh 2.0 renamed from getTelnetSettings()
+ */
+ public ISshSettings getSshSettings() {
+ return fSettings;
+ }
+
+ @Override
+ public void setDefaultSettings() {
+ fSettings.load(new NullSettingsStore());
+ }
+
+ @Override
+ public String getSettingsSummary() {
+ return fSettings.getSummary();
+ }
+
+ @Override
+ public void load(ISettingsStore store) {
+ fSettings.load(store);
+ }
+
+ @Override
+ public void save(ISettingsStore store) {
+ fSettings.save(store);
+ }
+
+ protected JSch getJsch() {
+ return fJsch;
+ }
+
+ ChannelShell getChannel() {
+ return fChannel;
+ }
+
+ void setChannel(ChannelShell channel) {
+ fChannel = channel;
+ fWidth = -1;
+ fHeight = -1;
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/SshMessages.java b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/SshMessages.java
new file mode 100644
index 00000000000..3e8bf0cc648
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/SshMessages.java
@@ -0,0 +1,99 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ * Martin Oberhuber (Wind River) - fixed copyright headers and beautified
+ * Johnson Ma (Wind River) - [218880] Add UI setting for ssh keepalives
+ * Martin Oberhuber (Wind River) - [206919] Improve SSH Terminal Error Reporting (Adopting code from org.eclipse.team.cvs.core)
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.ssh.connector;
+
+import java.lang.reflect.Field;
+
+import org.eclipse.osgi.util.NLS;
+
+public class SshMessages extends NLS {
+ static {
+ NLS.initializeMessages(SshMessages.class.getName(), SshMessages.class);
+ }
+ public static String USER;
+ public static String HOST;
+ public static String PORT;
+ public static String PASSWORD;
+ public static String TIMEOUT;
+ public static String KEEPALIVE;
+ public static String KEEPALIVE_Tooltip;
+ public static String WARNING;
+ public static String INFO;
+
+ //These are from org.eclipse.team.cvs.ui.CVSUIMessages
+ public static String UserValidationDialog_required;
+ public static String UserValidationDialog_labelUser;
+ public static String UserValidationDialog_labelPassword;
+ public static String UserValidationDialog_password;
+ public static String UserValidationDialog_user;
+ public static String UserValidationDialog_5;
+ public static String UserValidationDialog_6;
+ public static String UserValidationDialog_7;
+
+ public static String KeyboardInteractiveDialog_message;
+ public static String KeyboardInteractiveDialog_labelConnection;
+
+ public static String ERROR_CONNECTING;
+ public static String TerminalCommunicationException_io;
+ public static String SSH_AUTH_CANCEL;
+ public static String SSH_AUTH_FAIL;
+ public static String com_jcraft_jsch_JSchException;
+ public static String java_io_IOException;
+ public static String java_io_EOFException;
+ public static String java_io_InterruptedIOException;
+ public static String java_net_UnknownHostException;
+ public static String java_net_ConnectException;
+ public static String java_net_SocketException;
+ public static String java_net_NoRouteToHostException;
+
+ // <Copied from org.eclipse.team.cvs.core / CVSCommunicationException (c) IBM 2000, 2007>
+
+ public static String getMessageFor(Throwable throwable) {
+ String message = getMessage(getMessageKey(throwable));
+ if (message == null) {
+ message = NLS.bind(SshMessages.TerminalCommunicationException_io, (new Object[] { throwable.toString() }));
+ } else {
+ message = NLS.bind(message, (new Object[] { throwable.getMessage() }));
+ }
+ return message;
+ }
+
+ private static String getMessageKey(Throwable t) {
+ String name = t.getClass().getName();
+ name = name.replace('.', '_');
+ return name;
+ }
+
+ // </Copied from org.eclipse.team.cvs.core / CVSCommunicationException>
+ // <Copied from org.eclipse.team.cvs.core / Policy (c) IBM 2000, 2005>
+
+ public static String getMessage(String key) {
+ try {
+ Field f = SshMessages.class.getDeclaredField(key);
+ Object o = f.get(null);
+ if (o instanceof String)
+ return (String) o;
+ } catch (SecurityException e) {
+ } catch (NoSuchFieldException e) {
+ } catch (IllegalArgumentException e) {
+ } catch (IllegalAccessException e) {
+ }
+ return null;
+ }
+
+ // </Copied from org.eclipse.team.cvs.core / Policy>
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/SshMessages.properties b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/SshMessages.properties
new file mode 100644
index 00000000000..70d31247c9e
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/SshMessages.properties
@@ -0,0 +1,55 @@
+###############################################################################
+# Copyright (c) 2000, 2018 Wind River Systems, Inc. and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Michael Scharf (Wind River) - initial API and implementation
+# Martin Oberhuber (Wind River) - fixed copyright headers and beautified
+# Johnson Ma (Wind River) - [218880] Add UI setting for ssh keepalives
+# Martin Oberhuber (Wind River) - [206919] Improve SSH Terminal Error Reporting (Adopting code from org.eclipse.team.cvs.core)
+###############################################################################
+
+# NLS_MESSAGEFORMAT_VAR
+
+HOST = Host
+USER = User
+PORT = Port
+PASSWORD = Password
+TIMEOUT = Timeout (sec)
+KEEPALIVE = KeepAlive (sec)
+KEEPALIVE_Tooltip=Interval for sending keepalive messages in case of inactivity. Enter 0 to disable keepalives.
+WARNING = Warning
+INFO = Info
+
+#These are from cvs.ui/messages.properties
+UserValidationDialog_required=Password Required
+UserValidationDialog_labelUser={0}
+UserValidationDialog_labelPassword={1}
+UserValidationDialog_password=&Password:
+UserValidationDialog_user=&User name:
+UserValidationDialog_5=Connection:
+UserValidationDialog_6=&Save password
+UserValidationDialog_7=Saved passwords are stored on your computer in a file that is difficult, but not impossible, for an intruder to read.
+
+KeyboardInteractiveDialog_message=Keyboard Interactive authentication for {0}
+KeyboardInteractiveDialog_labelConnection=Enter values for the following connection: {0}
+
+#<Copied> from org.eclipse.team.cvs.core/messages.properties (c) IBM 2000, 2007
+ERROR_CONNECTING=Error connecting {0} : {1}
+TerminalCommunicationException_io=Communication error: {0}
+SSH_AUTH_CANCEL=SSH Authentication cancelled.
+SSH_AUTH_FAIL=SSH Authentication failed.
+com_jcraft_jsch_JSchException=SSH client error: {0}
+java_io_IOException=I/O exception occurred: {0}
+java_io_EOFException=End of file encountered: {0}
+java_io_InterruptedIOException=I/O has been interrupted.
+java_net_UnknownHostException=Cannot locate host: {0}
+java_net_ConnectException=Cannot connect to host: {0}
+java_net_SocketException=Socket Exception: {0}
+java_net_NoRouteToHostException={0}
+#</Copied> from org.eclipse.team.cvs.core
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/SshSettings.java b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/SshSettings.java
new file mode 100644
index 00000000000..ea8ad058fbd
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/SshSettings.java
@@ -0,0 +1,140 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ * Martin Oberhuber (Wind River) - fixed copyright headers and beautified
+ * Mikhail Kalugin <fourdman@xored.com> - [201867] Improve Terminal SSH connection summary string
+ * Johnson Ma (Wind River) - [218880] Add UI setting for ssh keepalives
+ * Bryan Hunt - [313991] cannot programatically pass password to SshConnector
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.ssh.connector;
+
+import org.eclipse.tm.internal.terminal.provisional.api.ISettingsStore;
+
+public class SshSettings implements ISshSettings {
+ protected String fHost;
+ protected String fUser;
+ protected String fPassword;
+ protected String fPort;
+ protected String fTimeout;
+ protected String fKeepalive;
+
+ @Override
+ public String getHost() {
+ return fHost;
+ }
+
+ public void setHost(String strHost) {
+ fHost = strHost;
+ }
+
+ @Override
+ public String getSummary() {
+ String settings = getUser() + '@' + getHost();
+ if (getPort() != ISshSettings.DEFAULT_SSH_PORT) {
+ settings += ":" + getPort(); //$NON-NLS-1$
+ }
+ return settings;
+ }
+
+ @Override
+ public void load(ISettingsStore store) {
+ fHost = store.get("Host", "");//$NON-NLS-1$ //$NON-NLS-2$
+ fUser = store.get("User", "");//$NON-NLS-1$ //$NON-NLS-2$
+ // ISettingsStore providers have to make sure that
+ // the password is not saved in some as plain text
+ // on disk. [bug 313991]
+ fPassword = store.get("Password", "");//$NON-NLS-1$ //$NON-NLS-2$
+ fPort = store.get("Port", String.valueOf(ISshSettings.DEFAULT_SSH_PORT));//$NON-NLS-1$
+ fTimeout = store.get("Timeout", "0");//$NON-NLS-1$ //$NON-NLS-2$
+ fKeepalive = store.get("Keepalive", "300");//$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ @Override
+ public void save(ISettingsStore store) {
+ store.put("Host", fHost);//$NON-NLS-1$
+ store.put("User", fUser);//$NON-NLS-1$
+ store.put("Port", fPort);//$NON-NLS-1$
+ // We do *not* store the password in the settings because
+ // this can cause the password to be stored as plain text
+ // in some settings file
+ store.put("Timeout", fTimeout);//$NON-NLS-1$
+ store.put("Keepalive", fKeepalive);//$NON-NLS-1$
+ }
+
+ @Override
+ public int getTimeout() {
+ try {
+ return Integer.parseInt(fTimeout);
+ } catch (NumberFormatException numberFormatException) {
+ return 10;
+ }
+ }
+
+ public String getTimeoutString() {
+ return fTimeout;
+ }
+
+ public void setTimeout(String timeout) {
+ fTimeout = timeout;
+ }
+
+ @Override
+ public int getKeepalive() {
+ try {
+ return Integer.parseInt(fKeepalive);
+ } catch (NumberFormatException numberFormatException) {
+ return 300;
+ }
+ }
+
+ public String getKeepaliveString() {
+ return fKeepalive;
+ }
+
+ public void setKeepalive(String keepalive) {
+ fKeepalive = keepalive;
+ }
+
+ @Override
+ public String getUser() {
+ return fUser;
+ }
+
+ public void setUser(String user) {
+ fUser = user;
+ }
+
+ @Override
+ public int getPort() {
+ try {
+ return Integer.parseInt(fPort);
+ } catch (NumberFormatException numberFormatException) {
+ return ISshSettings.DEFAULT_SSH_PORT;
+ }
+ }
+
+ public String getPortString() {
+ return fPort;
+ }
+
+ public void setPort(String port) {
+ fPort = port;
+ }
+
+ @Override
+ public String getPassword() {
+ return fPassword;
+ }
+
+ public void setPassword(String password) {
+ fPassword = password;
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/SshSettingsPage.java b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/SshSettingsPage.java
new file mode 100644
index 00000000000..043ea44c959
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/SshSettingsPage.java
@@ -0,0 +1,198 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ * Martin Oberhuber (Wind River) - fixed copyright headers and beautified
+ * Johnson Ma (Wind River) - [218880] Add UI setting for ssh keepalives
+ * Martin Oberhuber (Wind River) - [206917] Add validation for Terminal Settings
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.ssh.connector;
+
+import org.eclipse.jface.dialogs.IMessageProvider;
+import org.eclipse.jface.fieldassist.FieldDecorationRegistry;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.tm.internal.terminal.provisional.api.AbstractSettingsPage;
+
+public class SshSettingsPage extends AbstractSettingsPage {
+ private Text fHostText;
+ private Text fUser;
+ private Text fTimeout;
+ private Text fKeepalive;
+ private final SshSettings fTerminalSettings;
+ private Text fPort;
+ private Text fPassword;
+
+ public SshSettingsPage(SshSettings settings) {
+ fTerminalSettings = settings;
+ }
+
+ @Override
+ public void saveSettings() {
+ fTerminalSettings.setHost(fHostText.getText());
+ fTerminalSettings.setUser(fUser.getText());
+ fTerminalSettings.setPassword(fPassword.getText());
+ fTerminalSettings.setPort(fPort.getText());
+ fTerminalSettings.setTimeout(fTimeout.getText());
+ fTerminalSettings.setKeepalive(fKeepalive.getText());
+ }
+
+ @Override
+ public void loadSettings() {
+ if (fTerminalSettings != null) {
+ fHostText.setText(get(fTerminalSettings.getHost(), ""));//$NON-NLS-1$
+ fTimeout.setText(get(fTerminalSettings.getTimeoutString(), "0"));//$NON-NLS-1$
+ fKeepalive.setText(get(fTerminalSettings.getKeepaliveString(), "300"));//$NON-NLS-1$
+ fUser.setText(get(fTerminalSettings.getUser(), ""));//$NON-NLS-1$
+ fPort.setText(get(fTerminalSettings.getPortString(), String.valueOf(ISshSettings.DEFAULT_SSH_PORT)));
+ fPassword.setText(get(fTerminalSettings.getPassword(), ""));//$NON-NLS-1$
+ }
+ }
+
+ String get(String value, String def) {
+ if (value == null || value.length() == 0)
+ return def;
+ return value;
+ }
+
+ @Override
+ public boolean validateSettings() {
+ String message = null;
+ int messageType = IMessageProvider.NONE;
+ boolean valid = true;
+
+ if (fHostText.getText().trim().length() == 0) {
+ String m = "Please enter a host IP or name."; //$NON-NLS-1$
+ int mt = IMessageProvider.INFORMATION;
+ updateControlDecoration(fHostText, m, mt);
+ if (mt > messageType) {
+ message = m;
+ messageType = mt;
+ }
+
+ valid = false;
+ } else {
+ updateControlDecoration(fHostText, null, IMessageProvider.NONE);
+ }
+ if (fUser.getText().trim().length() == 0) {
+ String m = "Please enter a username."; //$NON-NLS-1$
+ int mt = IMessageProvider.INFORMATION;
+ updateControlDecoration(fUser, m, mt);
+ if (mt > messageType) {
+ message = m;
+ messageType = mt;
+ }
+
+ valid = false;
+ } else {
+ updateControlDecoration(fUser, null, IMessageProvider.NONE);
+ }
+ try {
+ int p = Integer.parseInt(fPort.getText().trim());
+ if (p <= 0 || p > 65535) {
+ String m = "Invalid network port. Must be between 0 and 65535."; //$NON-NLS-1$
+ int mt = IMessageProvider.ERROR;
+ updateControlDecoration(fPort, m, mt);
+ if (mt > messageType) {
+ message = m;
+ messageType = mt;
+ }
+
+ valid = false;
+ } else {
+ updateControlDecoration(fPort, null, IMessageProvider.NONE);
+ }
+ p = Integer.parseInt(fTimeout.getText().trim());
+ if (p < 0) {
+ String m = "Invalid timeout. Must be greater than 0."; //$NON-NLS-1$
+ int mt = IMessageProvider.ERROR;
+ updateControlDecoration(fTimeout, m, mt);
+ if (mt > messageType) {
+ message = m;
+ messageType = mt;
+ }
+
+ valid = false;
+ } else {
+ updateControlDecoration(fTimeout, null, IMessageProvider.NONE);
+ }
+ p = Integer.parseInt(fKeepalive.getText().trim());
+ if (p < 0) {
+ String m = "Invalid keep alive. Must be greater than 0."; //$NON-NLS-1$
+ int mt = IMessageProvider.ERROR;
+ updateControlDecoration(fKeepalive, m, mt);
+ if (mt > messageType) {
+ message = m;
+ messageType = mt;
+ }
+
+ valid = false;
+ } else {
+ updateControlDecoration(fKeepalive, null, IMessageProvider.NONE);
+ }
+ } catch (Exception e) {
+ valid = false;
+ }
+
+ setMessage(message, messageType);
+ return valid;
+ }
+
+ @Override
+ public void createControl(Composite parent) {
+ Composite composite = new Composite(parent, SWT.NONE);
+ GridLayout gridLayout = new GridLayout(2, false);
+ GridData gridData = new GridData(GridData.FILL_HORIZONTAL);
+ gridData.horizontalIndent = FieldDecorationRegistry.getDefault().getMaximumDecorationWidth();
+
+ composite.setLayout(gridLayout);
+ composite.setLayoutData(gridData);
+
+ fHostText = createTextField(composite, SshMessages.HOST);
+ fUser = createTextField(composite, SshMessages.USER);
+ fPassword = createTextField(composite, SshMessages.PASSWORD, SWT.PASSWORD);
+ fTimeout = createTextField(composite, SshMessages.TIMEOUT);
+ fKeepalive = createTextField(composite, SshMessages.KEEPALIVE);
+ fKeepalive.setToolTipText(SshMessages.KEEPALIVE_Tooltip);
+ fPort = createTextField(composite, SshMessages.PORT);
+ loadSettings();
+ }
+
+ private Text createTextField(Composite composite, String labelTxt, int textOptions) {
+ GridData gridData;
+ // Add label
+ Label ctlLabel = new Label(composite, SWT.RIGHT);
+ ctlLabel.setText(labelTxt + ":"); //$NON-NLS-1$
+
+ // Add control
+ gridData = new GridData(GridData.FILL_HORIZONTAL);
+ final Text text = new Text(composite, SWT.BORDER | textOptions);
+ text.setLayoutData(gridData);
+ text.addModifyListener(new ModifyListener() {
+ @Override
+ public void modifyText(ModifyEvent e) {
+ fireListeners(text);
+ }
+ });
+ createControlDecoration(text);
+ return text;
+ }
+
+ private Text createTextField(Composite composite, String labelTxt) {
+ return createTextField(composite, labelTxt, 0);
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/UserValidationDialog.java b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/UserValidationDialog.java
new file mode 100644
index 00000000000..8047ac91579
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/UserValidationDialog.java
@@ -0,0 +1,291 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ * Martin Oberhuber (Wind River) - copied from org.eclipse.team.cvs.ui
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.ssh.connector;
+
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.dialogs.TrayDialog;
+import org.eclipse.jface.window.Window;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.PlatformUI;
+
+/**
+ * A dialog for prompting for a username and password
+ */
+public class UserValidationDialog extends TrayDialog {
+ // widgets
+ protected Text usernameField;
+ protected Text passwordField;
+ protected Button allowCachingButton;
+
+ protected String domain;
+ protected String defaultUsername;
+ protected String password = null;
+ protected boolean allowCaching = false;
+ protected Image keyLockImage;
+
+ // whether or not the username can be changed
+ protected boolean isUsernameMutable = true;
+ protected String username = null;
+ protected String message = null;
+
+ /**
+ * Creates a new UserValidationDialog.
+ *
+ * @param parentShell the parent shell
+ * @param location the location
+ * @param defaultName the default user name
+ * @param message a mesage to display to the user
+ */
+ public UserValidationDialog(Shell parentShell, String location, String defaultName, String message) {
+ super(parentShell);
+ setShellStyle(getShellStyle() | SWT.RESIZE);
+ this.defaultUsername = defaultName;
+ this.domain = location;
+ this.message = message;
+ }
+
+ /**
+ * @see Window#configureShell
+ */
+ @Override
+ protected void configureShell(Shell newShell) {
+ super.configureShell(newShell);
+ newShell.setText(SshMessages.UserValidationDialog_required);
+ // set F1 help
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(newShell, ISshConstants.HELP_USER_VALIDATION_DIALOG);
+ }
+
+ /**
+ * @see Window#create
+ */
+ @Override
+ public void create() {
+ super.create();
+ // add some default values
+ usernameField.setText(defaultUsername);
+
+ if (isUsernameMutable) {
+ // give focus to username field
+ usernameField.selectAll();
+ usernameField.setFocus();
+ } else {
+ usernameField.setEditable(false);
+ passwordField.setFocus();
+ }
+ }
+
+ /**
+ * @see Dialog#createDialogArea
+ */
+ @Override
+ protected Control createDialogArea(Composite parent) {
+ Composite top = new Composite(parent, SWT.NONE);
+ GridLayout layout = new GridLayout();
+ layout.numColumns = 2;
+
+ top.setLayout(layout);
+ top.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+ Composite imageComposite = new Composite(top, SWT.NONE);
+ layout = new GridLayout();
+ imageComposite.setLayout(layout);
+ imageComposite.setLayoutData(new GridData(GridData.FILL_VERTICAL));
+
+ Composite main = new Composite(top, SWT.NONE);
+ layout = new GridLayout();
+ layout.numColumns = 3;
+ main.setLayout(layout);
+ main.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+ Label imageLabel = new Label(imageComposite, SWT.NONE);
+ //keyLockImage = TeamImages.getImageDescriptor(ITeamUIImages.IMG_KEY_LOCK).createImage();
+ //imageLabel.setImage(keyLockImage);
+ GridData data = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL);
+ imageLabel.setLayoutData(data);
+
+ if (message != null) {
+ Label messageLabel = new Label(main, SWT.WRAP);
+ messageLabel.setText(message);
+ data = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL);
+ data.horizontalSpan = 3;
+ data.widthHint = 300;
+ messageLabel.setLayoutData(data);
+ }
+ if (domain != null) {
+ Label d = new Label(main, SWT.WRAP);
+ d.setText(SshMessages.UserValidationDialog_5);
+ data = new GridData();
+ d.setLayoutData(data);
+ Label label = new Label(main, SWT.WRAP);
+ if (isUsernameMutable) {
+ label.setText(NLS.bind(SshMessages.UserValidationDialog_labelUser, new String[] { domain }));
+ } else {
+ label.setText(NLS.bind(SshMessages.UserValidationDialog_labelPassword,
+ (new Object[] { defaultUsername, domain })));
+ }
+ data = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL);
+ data.horizontalSpan = 2;
+ data.widthHint = 300;
+ label.setLayoutData(data);
+ }
+ createUsernameFields(main);
+ createPasswordFields(main);
+
+ if (domain != null) {
+ allowCachingButton = new Button(main, SWT.CHECK);
+ allowCachingButton.setText(SshMessages.UserValidationDialog_6);
+ data = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL);
+ data.horizontalSpan = 3;
+ allowCachingButton.setLayoutData(data);
+ allowCachingButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ allowCaching = allowCachingButton.getSelection();
+ }
+ });
+ Composite warningComposite = new Composite(main, SWT.NONE);
+ layout = new GridLayout();
+ layout.numColumns = 2;
+ layout.marginHeight = 0;
+ layout.marginHeight = 0;
+ warningComposite.setLayout(layout);
+ data = new GridData(GridData.FILL_HORIZONTAL);
+ data.horizontalSpan = 3;
+ warningComposite.setLayoutData(data);
+ Label warningLabel = new Label(warningComposite, SWT.NONE);
+ warningLabel.setImage(getImage(DLG_IMG_MESSAGE_WARNING));
+ warningLabel.setLayoutData(
+ new GridData(GridData.VERTICAL_ALIGN_BEGINNING | GridData.HORIZONTAL_ALIGN_BEGINNING));
+ Label warningText = new Label(warningComposite, SWT.WRAP);
+ warningText.setText(SshMessages.UserValidationDialog_7);
+ data = new GridData(GridData.FILL_HORIZONTAL);
+ data.widthHint = 300;
+ warningText.setLayoutData(data);
+ }
+
+ Dialog.applyDialogFont(parent);
+
+ return main;
+ }
+
+ /**
+ * Creates the three widgets that represent the password entry area.
+ *
+ * @param parent the parent of the widgets
+ */
+ protected void createPasswordFields(Composite parent) {
+ new Label(parent, SWT.NONE).setText(SshMessages.UserValidationDialog_password);
+
+ passwordField = new Text(parent, SWT.BORDER | SWT.PASSWORD);
+ GridData data = new GridData(GridData.FILL_HORIZONTAL);
+ data.horizontalSpan = 2;
+ data.widthHint = convertHorizontalDLUsToPixels(IDialogConstants.ENTRY_FIELD_WIDTH);
+ passwordField.setLayoutData(data);
+ }
+
+ /**
+ * Creates the three widgets that represent the user name entry area.
+ *
+ * @param parent the parent of the widgets
+ */
+ protected void createUsernameFields(Composite parent) {
+ new Label(parent, SWT.NONE).setText(SshMessages.UserValidationDialog_user);
+
+ usernameField = new Text(parent, SWT.BORDER);
+ GridData data = new GridData(GridData.FILL_HORIZONTAL);
+ data.horizontalSpan = 2;
+ data.widthHint = convertHorizontalDLUsToPixels(IDialogConstants.ENTRY_FIELD_WIDTH);
+ usernameField.setLayoutData(data);
+ }
+
+ /**
+ * Returns the password entered by the user, or null
+ * if the user cancelled.
+ *
+ * @return the entered password
+ */
+ public String getPassword() {
+ return password;
+ }
+
+ /**
+ * Returns the username entered by the user, or null
+ * if the user cancelled.
+ *
+ * @return the entered username
+ */
+ public String getUsername() {
+ return username;
+ }
+
+ /**
+ * Returns <code>true</code> if the save password checkbox was selected.
+ * @return <code>true</code> if the save password checkbox was selected and <code>false</code>
+ * otherwise.
+ */
+ public boolean getAllowCaching() {
+ return allowCaching;
+ }
+
+ /**
+ * Notifies that the ok button of this dialog has been pressed.
+ * <p>
+ * The default implementation of this framework method sets
+ * this dialog's return code to <code>Window.OK</code>
+ * and closes the dialog. Subclasses may override.
+ * </p>
+ */
+ @Override
+ protected void okPressed() {
+ password = passwordField.getText();
+ username = usernameField.getText();
+
+ super.okPressed();
+ }
+
+ /**
+ * Sets whether or not the username field should be mutable.
+ * This method must be called before create(), otherwise it
+ * will be ignored.
+ *
+ * @param value whether the username is mutable
+ */
+ public void setUsernameMutable(boolean value) {
+ isUsernameMutable = value;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.dialogs.Dialog#close()
+ */
+ @Override
+ public boolean close() {
+ if (keyLockImage != null) {
+ keyLockImage.dispose();
+ }
+ return super.close();
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/controls/SshWizardConfigurationPanel.java b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/controls/SshWizardConfigurationPanel.java
new file mode 100644
index 00000000000..d8baa8f7289
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/controls/SshWizardConfigurationPanel.java
@@ -0,0 +1,440 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ * Max Weninger (Wind River) - [361352] [TERMINALS][SSH] Add SSH terminal support
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.ssh.controls;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.equinox.security.storage.ISecurePreferences;
+import org.eclipse.equinox.security.storage.SecurePreferencesFactory;
+import org.eclipse.equinox.security.storage.StorageException;
+import org.eclipse.jface.dialogs.IDialogSettings;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.tm.internal.terminal.provisional.api.AbstractSettingsPage;
+import org.eclipse.tm.internal.terminal.provisional.api.ISettingsPage;
+import org.eclipse.tm.terminal.connector.ssh.connector.SshConnector;
+import org.eclipse.tm.terminal.connector.ssh.connector.SshSettings;
+import org.eclipse.tm.terminal.connector.ssh.connector.SshSettingsPage;
+import org.eclipse.tm.terminal.connector.ssh.nls.Messages;
+import org.eclipse.tm.terminal.view.core.TerminalContextPropertiesProviderFactory;
+import org.eclipse.tm.terminal.view.core.interfaces.ITerminalContextPropertiesProvider;
+import org.eclipse.tm.terminal.view.core.interfaces.constants.IContextPropertiesConstants;
+import org.eclipse.tm.terminal.view.core.interfaces.constants.ITerminalsConnectorConstants;
+import org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanelContainer;
+import org.eclipse.tm.terminal.view.ui.panels.AbstractExtendedConfigurationPanel;
+
+/**
+ * SSH wizard configuration panel implementation.
+ */
+public class SshWizardConfigurationPanel extends AbstractExtendedConfigurationPanel {
+
+ private static final String SAVE_USER = "saveUser"; //$NON-NLS-1$
+ private static final String SAVE_PASSWORD = "savePassword"; //$NON-NLS-1$
+
+ private SshSettings sshSettings;
+ private ISettingsPage sshSettingsPage;
+ private Button userButton;
+ private Button passwordButton;
+
+ /**
+ * Constructor.
+ *
+ * @param container The configuration panel container or <code>null</code>.
+ */
+ public SshWizardConfigurationPanel(IConfigurationPanelContainer container) {
+ super(container);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanel#setupPanel(org.eclipse.swt.widgets.Composite)
+ */
+ @Override
+ public void setupPanel(Composite parent) {
+ Composite panel = new Composite(parent, SWT.NONE);
+ panel.setLayout(new GridLayout());
+ GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);
+ panel.setLayoutData(data);
+
+ // Create the host selection combo
+ if (isWithoutSelection())
+ createHostsUI(panel, true);
+
+ SshConnector conn = new SshConnector();
+ sshSettings = (SshSettings) conn.getSshSettings();
+ sshSettings.setHost(getSelectionHost());
+ sshSettings.setUser(getDefaultUser());
+
+ sshSettingsPage = new SshSettingsPage(sshSettings);
+ if (sshSettingsPage instanceof AbstractSettingsPage) {
+ ((AbstractSettingsPage) sshSettingsPage).setHasControlDecoration(true);
+ }
+ sshSettingsPage.createControl(panel);
+
+ // Add the listener to the settings page
+ sshSettingsPage.addListener(new ISettingsPage.Listener() {
+ @Override
+ public void onSettingsPageChanged(Control control) {
+ if (getContainer() != null)
+ getContainer().validate();
+ }
+ });
+
+ // Create the encoding selection combo
+ createEncodingUI(panel, true);
+
+ // if user and password for host should be saved or not
+ createSaveButtonsUI(panel, true);
+
+ setControl(panel);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.tm.terminal.view.ui.panels.AbstractConfigurationPanel#setupData(java.util.Map)
+ */
+ @Override
+ public void setupData(Map<String, Object> data) {
+ if (data == null || sshSettings == null || sshSettingsPage == null)
+ return;
+
+ String value = (String) data.get(ITerminalsConnectorConstants.PROP_IP_HOST);
+ if (value != null)
+ sshSettings.setHost(value);
+
+ Object v = data.get(ITerminalsConnectorConstants.PROP_IP_PORT);
+ value = v != null ? v.toString() : null;
+ if (value != null)
+ sshSettings.setPort(value);
+
+ v = data.get(ITerminalsConnectorConstants.PROP_TIMEOUT);
+ value = v != null ? v.toString() : null;
+ if (value != null)
+ sshSettings.setTimeout(value);
+
+ v = data.get(ITerminalsConnectorConstants.PROP_SSH_KEEP_ALIVE);
+ value = v != null ? v.toString() : null;
+ if (value != null)
+ sshSettings.setKeepalive(value);
+
+ value = (String) data.get(ITerminalsConnectorConstants.PROP_SSH_PASSWORD);
+ if (value != null)
+ sshSettings.setPassword(value);
+
+ value = (String) data.get(ITerminalsConnectorConstants.PROP_SSH_USER);
+ if (value != null)
+ sshSettings.setUser(value);
+
+ value = (String) data.get(ITerminalsConnectorConstants.PROP_ENCODING);
+ if (value != null)
+ setEncoding(value);
+
+ sshSettingsPage.loadSettings();
+ }
+
+ /**
+ * Returns the default user name.
+ *
+ * @return The default user name.
+ */
+ private String getDefaultUser() {
+ ISelection selection = getSelection();
+ if (selection instanceof IStructuredSelection && !selection.isEmpty()) {
+ Object element = ((IStructuredSelection) selection).getFirstElement();
+ ITerminalContextPropertiesProvider provider = TerminalContextPropertiesProviderFactory.getProvider(element);
+ if (provider != null) {
+ Object user = provider.getProperty(element, IContextPropertiesConstants.PROP_DEFAULT_USER);
+ if (user instanceof String)
+ return ((String) user).trim();
+ }
+ }
+
+ return System.getProperty("user.name"); //$NON-NLS-1$
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.tm.terminal.view.ui.panels.AbstractConfigurationPanel#extractData(java.util.Map)
+ */
+ @Override
+ public void extractData(Map<String, Object> data) {
+ if (data == null)
+ return;
+
+ // set the terminal connector id for ssh
+ data.put(ITerminalsConnectorConstants.PROP_TERMINAL_CONNECTOR_ID,
+ "org.eclipse.tm.terminal.connector.ssh.SshConnector"); //$NON-NLS-1$
+
+ sshSettingsPage.saveSettings();
+ data.put(ITerminalsConnectorConstants.PROP_IP_HOST, sshSettings.getHost());
+ data.put(ITerminalsConnectorConstants.PROP_IP_PORT, Integer.valueOf(sshSettings.getPort()));
+ data.put(ITerminalsConnectorConstants.PROP_TIMEOUT, Integer.valueOf(sshSettings.getTimeout()));
+ data.put(ITerminalsConnectorConstants.PROP_SSH_KEEP_ALIVE, Integer.valueOf(sshSettings.getKeepalive()));
+ data.put(ITerminalsConnectorConstants.PROP_SSH_PASSWORD, sshSettings.getPassword());
+ data.put(ITerminalsConnectorConstants.PROP_SSH_USER, sshSettings.getUser());
+ data.put(ITerminalsConnectorConstants.PROP_ENCODING, getEncoding());
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.tm.terminal.view.ui.panels.AbstractConfigurationPanel#fillSettingsForHost(java.lang.String)
+ */
+ @Override
+ protected void fillSettingsForHost(String host) {
+ boolean saveUser = true;
+ boolean savePassword = false;
+ if (host != null && host.length() != 0) {
+ if (hostSettingsMap.containsKey(host)) {
+ Map<String, String> hostSettings = hostSettingsMap.get(host);
+ if (hostSettings.get(ITerminalsConnectorConstants.PROP_IP_HOST) != null) {
+ sshSettings.setHost(hostSettings.get(ITerminalsConnectorConstants.PROP_IP_HOST));
+ }
+ if (hostSettings.get(ITerminalsConnectorConstants.PROP_IP_PORT) != null) {
+ sshSettings.setPort(hostSettings.get(ITerminalsConnectorConstants.PROP_IP_PORT));
+ }
+ if (hostSettings.get(ITerminalsConnectorConstants.PROP_TIMEOUT) != null) {
+ sshSettings.setTimeout(hostSettings.get(ITerminalsConnectorConstants.PROP_TIMEOUT));
+ }
+ if (hostSettings.get(ITerminalsConnectorConstants.PROP_SSH_KEEP_ALIVE) != null) {
+ sshSettings.setKeepalive(hostSettings.get(ITerminalsConnectorConstants.PROP_SSH_KEEP_ALIVE));
+ }
+ if (hostSettings.get(ITerminalsConnectorConstants.PROP_SSH_USER) != null) {
+ sshSettings.setUser(hostSettings.get(ITerminalsConnectorConstants.PROP_SSH_USER));
+ }
+ if (hostSettings.get(SAVE_PASSWORD) != null) {
+ savePassword = new Boolean(hostSettings.get(SAVE_PASSWORD)).booleanValue();
+ }
+ if (!savePassword) {
+ sshSettings.setPassword(""); //$NON-NLS-1$
+ } else {
+ String password = accessSecurePassword(sshSettings.getHost());
+ if (password != null) {
+ sshSettings.setPassword(password);
+ }
+ }
+
+ String encoding = hostSettings.get(ITerminalsConnectorConstants.PROP_ENCODING);
+ if (encoding == null || "null".equals(encoding)) { //$NON-NLS-1$
+ String defaultEncoding = getSelectionEncoding();
+ encoding = defaultEncoding != null && !"".equals(defaultEncoding.trim()) ? defaultEncoding.trim() //$NON-NLS-1$
+ : "ISO-8859-1"; //$NON-NLS-1$
+ }
+ setEncoding(encoding);
+ } else {
+ sshSettings.setHost(getSelectionHost());
+ sshSettings.setUser(getDefaultUser());
+ saveUser = true;
+ savePassword = false;
+ }
+ // set settings in page
+ sshSettingsPage.loadSettings();
+ userButton.setSelection(saveUser);
+ passwordButton.setSelection(savePassword);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.tm.terminal.view.ui.panels.AbstractExtendedConfigurationPanel#doSaveWidgetValues(org.eclipse.jface.dialogs.IDialogSettings, java.lang.String)
+ */
+ @Override
+ public void doSaveWidgetValues(IDialogSettings settings, String idPrefix) {
+ saveSettingsForHost(true);
+ super.doSaveWidgetValues(settings, idPrefix);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.tm.terminal.view.ui.panels.AbstractConfigurationPanel#saveSettingsForHost(boolean)
+ */
+ @Override
+ protected void saveSettingsForHost(boolean add) {
+ boolean saveUser = userButton.getSelection();
+ boolean savePassword = passwordButton.getSelection();
+ String host = getHostFromSettings();
+ if (host != null && host.length() != 0) {
+ if (hostSettingsMap.containsKey(host)) {
+ Map<String, String> hostSettings = hostSettingsMap.get(host);
+ hostSettings.put(ITerminalsConnectorConstants.PROP_IP_HOST, sshSettings.getHost());
+ hostSettings.put(ITerminalsConnectorConstants.PROP_IP_PORT, Integer.toString(sshSettings.getPort()));
+ hostSettings.put(ITerminalsConnectorConstants.PROP_TIMEOUT, Integer.toString(sshSettings.getTimeout()));
+ hostSettings.put(ITerminalsConnectorConstants.PROP_SSH_KEEP_ALIVE,
+ Integer.toString(sshSettings.getKeepalive()));
+ if (saveUser) {
+ if (sshSettings.getUser() != null) {
+ hostSettings.put(ITerminalsConnectorConstants.PROP_SSH_USER, sshSettings.getUser());
+ } else {
+ hostSettings.remove(ITerminalsConnectorConstants.PROP_SSH_USER);
+ }
+ } else {
+ hostSettings.remove(ITerminalsConnectorConstants.PROP_SSH_USER);
+ }
+
+ String encoding = getEncoding();
+ if (encoding != null) {
+ String defaultEncoding = getSelectionEncoding();
+ if (defaultEncoding != null && defaultEncoding.trim().equals(encoding)) {
+ encoding = null;
+ }
+ }
+ hostSettings.put(ITerminalsConnectorConstants.PROP_ENCODING, encoding);
+ hostSettings.put(SAVE_USER, Boolean.toString(saveUser));
+ hostSettings.put(SAVE_PASSWORD, Boolean.toString(savePassword));
+
+ if (savePassword && sshSettings.getPassword() != null && sshSettings.getPassword().length() != 0) {
+ saveSecurePassword(host, sshSettings.getPassword());
+ }
+
+ // maybe unchecked the password button - so try to remove a saved password - if any
+ if (!savePassword)
+ removeSecurePassword(host);
+ } else if (add) {
+ Map<String, String> hostSettings = new HashMap<>();
+ hostSettings.put(ITerminalsConnectorConstants.PROP_IP_HOST, sshSettings.getHost());
+ hostSettings.put(ITerminalsConnectorConstants.PROP_IP_PORT, Integer.toString(sshSettings.getPort()));
+ hostSettings.put(ITerminalsConnectorConstants.PROP_TIMEOUT, Integer.toString(sshSettings.getTimeout()));
+ hostSettings.put(ITerminalsConnectorConstants.PROP_SSH_KEEP_ALIVE,
+ Integer.toString(sshSettings.getKeepalive()));
+ if (saveUser) {
+ if (sshSettings.getUser() != null) {
+ hostSettings.put(ITerminalsConnectorConstants.PROP_SSH_USER, sshSettings.getUser());
+ }
+ }
+ hostSettings.put(ITerminalsConnectorConstants.PROP_ENCODING, getEncoding());
+ hostSettings.put(SAVE_USER, Boolean.toString(saveUser));
+ hostSettings.put(SAVE_PASSWORD, Boolean.toString(savePassword));
+ hostSettingsMap.put(host, hostSettings);
+
+ if (savePassword && sshSettings.getPassword() != null && sshSettings.getPassword().length() != 0) {
+ saveSecurePassword(host, sshSettings.getPassword());
+ }
+ }
+ }
+ }
+
+ /**
+ * Save the password to the secure storage.
+ *
+ * @param host The host. Must not be <code>null</code>.
+ * @param password The password. Must not be <code>null</code>.
+ */
+ private void saveSecurePassword(String host, String password) {
+ Assert.isNotNull(host);
+ Assert.isNotNull(password);
+
+ // To access the secure storage, we need the preference instance
+ ISecurePreferences preferences = SecurePreferencesFactory.getDefault();
+ if (preferences != null) {
+ // Construct the secure preferences node key
+ String nodeKey = "/Target Explorer SSH Password/" + host; //$NON-NLS-1$
+ ISecurePreferences node = preferences.node(nodeKey);
+ if (node != null) {
+ try {
+ node.put("password", password, true); //$NON-NLS-1$
+ } catch (StorageException ex) {
+ /* ignored on purpose */ }
+ }
+ }
+ }
+
+ /**
+ * Reads the password from the secure storage.
+ *
+ * @param host The host. Must not be <code>null</code>.
+ * @return The password or <code>null</code>.
+ */
+ private String accessSecurePassword(String host) {
+ Assert.isNotNull(host);
+
+ // To access the secure storage, we need the preference instance
+ ISecurePreferences preferences = SecurePreferencesFactory.getDefault();
+ if (preferences != null) {
+ // Construct the secure preferences node key
+ String nodeKey = "/Target Explorer SSH Password/" + host; //$NON-NLS-1$
+ ISecurePreferences node = preferences.node(nodeKey);
+ if (node != null) {
+ String password = null;
+ try {
+ password = node.get("password", null); //$NON-NLS-1$
+ } catch (StorageException ex) {
+ /* ignored on purpose */ }
+
+ return password;
+ }
+ }
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.tm.terminal.view.ui.panels.AbstractConfigurationPanel#removeSecurePassword(java.lang.String)
+ */
+ @Override
+ protected void removeSecurePassword(String host) {
+ Assert.isNotNull(host);
+
+ // To access the secure storage, we need the preference instance
+ ISecurePreferences preferences = SecurePreferencesFactory.getDefault();
+ if (preferences != null) {
+ // Construct the secure preferences node key
+ String nodeKey = "/Target Explorer SSH Password/" + host; //$NON-NLS-1$
+ ISecurePreferences node = preferences.node(nodeKey);
+ if (node != null) {
+ node.remove("password"); //$NON-NLS-1$
+ }
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.tm.terminal.view.ui.panels.AbstractConfigurationPanel#isValid()
+ */
+ @Override
+ public boolean isValid() {
+ return isEncodingValid() && sshSettingsPage.validateSettings();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.tm.terminal.view.ui.panels.AbstractConfigurationPanel#getHostFromSettings()
+ */
+ @Override
+ protected String getHostFromSettings() {
+ sshSettingsPage.saveSettings();
+ return sshSettings.getHost();
+ }
+
+ private void createSaveButtonsUI(final Composite parent, boolean separator) {
+ Assert.isNotNull(parent);
+
+ if (separator) {
+ Label sep = new Label(parent, SWT.SEPARATOR | SWT.HORIZONTAL);
+ sep.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
+ }
+
+ Composite panel = new Composite(parent, SWT.NONE);
+ GridLayout layout = new GridLayout(2, false);
+ layout.marginHeight = 0;
+ layout.marginWidth = 0;
+ panel.setLayout(layout);
+ panel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
+
+ userButton = new Button(panel, SWT.CHECK);
+ userButton.setLayoutData(new GridData(SWT.LEAD, SWT.CENTER, false, false));
+ userButton.setText(Messages.SshWizardConfigurationPanel_saveUser);
+
+ passwordButton = new Button(panel, SWT.CHECK);
+ passwordButton.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
+ passwordButton.setText(Messages.SshWizardConfigurationPanel_savePassword);
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/launcher/SshLauncherDelegate.java b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/launcher/SshLauncherDelegate.java
new file mode 100644
index 00000000000..6b43937b9c0
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/launcher/SshLauncherDelegate.java
@@ -0,0 +1,195 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ * Max Weninger (Wind River) - [361352] [TERMINALS][SSH] Add SSH terminal support
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.ssh.launcher;
+
+import java.text.DateFormat;
+import java.util.Date;
+import java.util.Map;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.tm.internal.terminal.provisional.api.ISettingsStore;
+import org.eclipse.tm.internal.terminal.provisional.api.ITerminalConnector;
+import org.eclipse.tm.internal.terminal.provisional.api.TerminalConnectorExtension;
+import org.eclipse.tm.terminal.connector.ssh.connector.ISshSettings;
+import org.eclipse.tm.terminal.connector.ssh.connector.SshSettings;
+import org.eclipse.tm.terminal.connector.ssh.controls.SshWizardConfigurationPanel;
+import org.eclipse.tm.terminal.connector.ssh.nls.Messages;
+import org.eclipse.tm.terminal.view.core.TerminalServiceFactory;
+import org.eclipse.tm.terminal.view.core.interfaces.ITerminalService;
+import org.eclipse.tm.terminal.view.core.interfaces.constants.ITerminalsConnectorConstants;
+import org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanel;
+import org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanelContainer;
+import org.eclipse.tm.terminal.view.ui.interfaces.IMementoHandler;
+import org.eclipse.tm.terminal.view.ui.internal.SettingsStore;
+import org.eclipse.tm.terminal.view.ui.launcher.AbstractLauncherDelegate;
+
+/**
+ * SSH launcher delegate implementation.
+ */
+@SuppressWarnings("restriction")
+public class SshLauncherDelegate extends AbstractLauncherDelegate {
+ // The SSH terminal connection memento handler
+ private final IMementoHandler mementoHandler = new SshMementoHandler();
+
+ /* (non-Javadoc)
+ * @see org.eclipse.tm.terminal.view.ui.interfaces.ILauncherDelegate#needsUserConfiguration()
+ */
+ @Override
+ public boolean needsUserConfiguration() {
+ return true;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.tm.terminal.view.ui.interfaces.ILauncherDelegate#getPanel(org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanelContainer)
+ */
+ @Override
+ public IConfigurationPanel getPanel(IConfigurationPanelContainer container) {
+ return new SshWizardConfigurationPanel(container);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.tm.terminal.view.ui.interfaces.ILauncherDelegate#execute(java.util.Map, org.eclipse.tm.terminal.view.core.interfaces.ITerminalService.Done)
+ */
+ @Override
+ public void execute(Map<String, Object> properties, ITerminalService.Done done) {
+ Assert.isNotNull(properties);
+
+ // Set the terminal tab title
+ String terminalTitle = getTerminalTitle(properties);
+ if (terminalTitle != null) {
+ properties.put(ITerminalsConnectorConstants.PROP_TITLE, terminalTitle);
+ }
+
+ // For SSH terminals, force a new terminal tab each time it is launched,
+ // if not set otherwise from outside
+ if (!properties.containsKey(ITerminalsConnectorConstants.PROP_FORCE_NEW)) {
+ properties.put(ITerminalsConnectorConstants.PROP_FORCE_NEW, Boolean.TRUE);
+ }
+
+ // Get the terminal service
+ ITerminalService terminal = TerminalServiceFactory.getService();
+ // If not available, we cannot fulfill this request
+ if (terminal != null) {
+ terminal.openConsole(properties, done);
+ }
+ }
+
+ /**
+ * Returns the terminal title string.
+ * <p>
+ * The default implementation constructs a title like &quot;SSH @ host (Start time) &quot;.
+ *
+ * @return The terminal title string or <code>null</code>.
+ */
+ private String getTerminalTitle(Map<String, Object> properties) {
+ // Try to see if the user set a title explicitly via the properties map.
+ String title = getDefaultTerminalTitle(properties);
+ if (title != null)
+ return title;
+
+ //No title,try to calculate the title
+ String host = (String) properties.get(ITerminalsConnectorConstants.PROP_IP_HOST);
+ String user = (String) properties.get(ITerminalsConnectorConstants.PROP_SSH_USER);
+ Object value = properties.get(ITerminalsConnectorConstants.PROP_IP_PORT);
+ String port = value != null ? value.toString() : null;
+
+ if (host != null && user != null) {
+ DateFormat format = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT);
+ String date = format.format(new Date(System.currentTimeMillis()));
+ if (port != null && Integer.valueOf(port).intValue() != ISshSettings.DEFAULT_SSH_PORT) {
+ return NLS.bind(Messages.SshLauncherDelegate_terminalTitle_port,
+ new String[] { user, host, port, date });
+ }
+ return NLS.bind(Messages.SshLauncherDelegate_terminalTitle, new String[] { user, host, date });
+ }
+
+ return Messages.SshLauncherDelegate_terminalTitle_default;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.core.runtime.PlatformObject#getAdapter(java.lang.Class)
+ */
+ @Override
+ public Object getAdapter(Class adapter) {
+ if (IMementoHandler.class.equals(adapter)) {
+ return mementoHandler;
+ }
+ return super.getAdapter(adapter);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.tm.terminal.view.ui.interfaces.ILauncherDelegate#createTerminalConnector(java.util.Map)
+ */
+ @Override
+ public ITerminalConnector createTerminalConnector(Map<String, Object> properties) {
+ Assert.isNotNull(properties);
+
+ // Check for the terminal connector id
+ String connectorId = (String) properties.get(ITerminalsConnectorConstants.PROP_TERMINAL_CONNECTOR_ID);
+ if (connectorId == null)
+ connectorId = "org.eclipse.tm.terminal.connector.ssh.SshConnector"; //$NON-NLS-1$
+
+ // Extract the ssh properties
+ String host = (String) properties.get(ITerminalsConnectorConstants.PROP_IP_HOST);
+ Object value = properties.get(ITerminalsConnectorConstants.PROP_IP_PORT);
+ String port = value != null ? value.toString() : null;
+ value = properties.get(ITerminalsConnectorConstants.PROP_TIMEOUT);
+ String timeout = value != null ? value.toString() : null;
+ value = properties.get(ITerminalsConnectorConstants.PROP_SSH_KEEP_ALIVE);
+ String keepAlive = value != null ? value.toString() : null;
+ String password = (String) properties.get(ITerminalsConnectorConstants.PROP_SSH_PASSWORD);
+ String user = (String) properties.get(ITerminalsConnectorConstants.PROP_SSH_USER);
+
+ int portOffset = 0;
+ if (properties.get(ITerminalsConnectorConstants.PROP_IP_PORT_OFFSET) instanceof Integer) {
+ portOffset = ((Integer) properties.get(ITerminalsConnectorConstants.PROP_IP_PORT_OFFSET)).intValue();
+ if (portOffset < 0)
+ portOffset = 0;
+ }
+
+ // The real port to connect to is port + portOffset
+ if (port != null) {
+ port = Integer.toString(Integer.decode(port).intValue() + portOffset);
+ }
+
+ // Construct the ssh settings store
+ ISettingsStore store = new SettingsStore();
+
+ // Construct the telnet settings
+ SshSettings sshSettings = new SshSettings();
+ sshSettings.setHost(host);
+ sshSettings.setPort(port);
+ sshSettings.setTimeout(timeout);
+ sshSettings.setKeepalive(keepAlive);
+ sshSettings.setPassword(password);
+ sshSettings.setUser(user);
+
+ // And save the settings to the store
+ sshSettings.save(store);
+
+ // MWE TODO make sure this is NOT passed outside as this is plain text
+ store.put("Password", password); //$NON-NLS-1$
+
+ // Construct the terminal connector instance
+ ITerminalConnector connector = TerminalConnectorExtension.makeTerminalConnector(connectorId);
+ if (connector != null) {
+ // Apply default settings
+ connector.setDefaultSettings();
+ // And load the real settings
+ connector.load(store);
+ }
+
+ return connector;
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/launcher/SshMementoHandler.java b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/launcher/SshMementoHandler.java
new file mode 100644
index 00000000000..b7b5f4b65f1
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/launcher/SshMementoHandler.java
@@ -0,0 +1,147 @@
+/*******************************************************************************
+ * Copyright (c) 2012, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.ssh.launcher;
+
+import java.util.Map;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.equinox.security.storage.ISecurePreferences;
+import org.eclipse.equinox.security.storage.SecurePreferencesFactory;
+import org.eclipse.equinox.security.storage.StorageException;
+import org.eclipse.tm.terminal.view.core.interfaces.constants.ITerminalsConnectorConstants;
+import org.eclipse.tm.terminal.view.ui.interfaces.IMementoHandler;
+import org.eclipse.ui.IMemento;
+
+/**
+ * SSH terminal connection memento handler implementation.
+ */
+public class SshMementoHandler implements IMementoHandler {
+
+ /* (non-Javadoc)
+ * @see org.eclipse.tm.terminal.view.ui.interfaces.IMementoHandler#saveState(org.eclipse.ui.IMemento, java.util.Map)
+ */
+ @Override
+ public void saveState(IMemento memento, Map<String, Object> properties) {
+ Assert.isNotNull(memento);
+ Assert.isNotNull(properties);
+
+ // Do not write the terminal title to the memento -> needs to
+ // be recreated at the time of restoration.
+ memento.putString(ITerminalsConnectorConstants.PROP_IP_HOST,
+ (String) properties.get(ITerminalsConnectorConstants.PROP_IP_HOST));
+ Object value = properties.get(ITerminalsConnectorConstants.PROP_IP_PORT);
+ memento.putInteger(ITerminalsConnectorConstants.PROP_IP_PORT,
+ value instanceof Integer ? ((Integer) value).intValue() : -1);
+ value = properties.get(ITerminalsConnectorConstants.PROP_TIMEOUT);
+ memento.putInteger(ITerminalsConnectorConstants.PROP_TIMEOUT,
+ value instanceof Integer ? ((Integer) value).intValue() : -1);
+ value = properties.get(ITerminalsConnectorConstants.PROP_SSH_KEEP_ALIVE);
+ memento.putInteger(ITerminalsConnectorConstants.PROP_SSH_KEEP_ALIVE,
+ value instanceof Integer ? ((Integer) value).intValue() : -1);
+ memento.putString(ITerminalsConnectorConstants.PROP_SSH_USER,
+ (String) properties.get(ITerminalsConnectorConstants.PROP_SSH_USER));
+ memento.putString(ITerminalsConnectorConstants.PROP_ENCODING,
+ (String) properties.get(ITerminalsConnectorConstants.PROP_ENCODING));
+
+ // The password is stored within the Eclipse secure preferences -> no need to store it to the memento
+ //
+ // If ever needed, this is an example on how to encrypt the password using 3DES. Do not remove!
+
+ /*
+ String password = properties.getStringProperty(ITerminalsConnectorConstants.PROP_SSH_PASSWORD);
+ if (password != null) {
+ try {
+ // Generate a temporary key. In practice, you would save this key.
+ // See also Encrypting with DES Using a Pass Phrase.
+ // SecretKey key = KeyGenerator.getInstance("DESede").generateKey();
+
+ SecretKeyFactory factory = SecretKeyFactory.getInstance("DESede"); //$NON-NLS-1$
+ SecretKey key = factory.generateSecret(new DESKeySpec((ITerminalsConnectorConstants.PROP_SSH_PASSWORD + ".SshMementoHandler").getBytes("UTF-8"))); //$NON-NLS-1$ //$NON-NLS-2$
+
+ Cipher cipher = Cipher.getInstance("DESede/CBC/PKCS5Padding"); //$NON-NLS-1$
+ cipher.init(Cipher.ENCRYPT_MODE, key);
+
+ String encrypedPwd = new String(Base64.encode(cipher.doFinal(password.getBytes("UTF-8")))); //$NON-NLS-1$
+ memento.putString(ITerminalsConnectorConstants.PROP_SSH_PASSWORD, encrypedPwd);
+ }
+ catch (Exception e) {
+ if (Platform.inDebugMode()) e.printStackTrace();
+ }
+ }
+ */
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.tm.terminal.view.ui.interfaces.IMementoHandler#restoreState(org.eclipse.ui.IMemento, java.util.Map)
+ */
+ @Override
+ public void restoreState(IMemento memento, Map<String, Object> properties) {
+ Assert.isNotNull(memento);
+ Assert.isNotNull(properties);
+
+ // Restore the terminal properties from the memento
+ properties.put(ITerminalsConnectorConstants.PROP_IP_HOST,
+ memento.getString(ITerminalsConnectorConstants.PROP_IP_HOST));
+ properties.put(ITerminalsConnectorConstants.PROP_IP_PORT,
+ memento.getInteger(ITerminalsConnectorConstants.PROP_IP_PORT));
+ properties.put(ITerminalsConnectorConstants.PROP_TIMEOUT,
+ memento.getInteger(ITerminalsConnectorConstants.PROP_TIMEOUT));
+ properties.put(ITerminalsConnectorConstants.PROP_SSH_KEEP_ALIVE,
+ memento.getInteger(ITerminalsConnectorConstants.PROP_SSH_KEEP_ALIVE));
+ properties.put(ITerminalsConnectorConstants.PROP_SSH_USER,
+ memento.getString(ITerminalsConnectorConstants.PROP_SSH_USER));
+ properties.put(ITerminalsConnectorConstants.PROP_ENCODING,
+ memento.getString(ITerminalsConnectorConstants.PROP_ENCODING));
+
+ // The password is stored within the Eclipse secure preferences -> restore it from there
+ // To access the secure storage, we need the preference instance
+ String password = null;
+ ISecurePreferences preferences = SecurePreferencesFactory.getDefault();
+ if (preferences != null && (String) properties.get(ITerminalsConnectorConstants.PROP_IP_HOST) != null) {
+ // Construct the secure preferences node key
+ String nodeKey = "/Target Explorer SSH Password/" //$NON-NLS-1$
+ + (String) properties.get(ITerminalsConnectorConstants.PROP_IP_HOST);
+ ISecurePreferences node = preferences.node(nodeKey);
+ if (node != null) {
+ try {
+ password = node.get("password", null); //$NON-NLS-1$
+ } catch (StorageException ex) {
+ /* ignored on purpose */ }
+ }
+ }
+
+ // Example of restoring the password from an 3DES encrypted string. Do not remove!
+ /*
+ String encrypedPwd = memento.getString(ITerminalsConnectorConstants.PROP_SSH_PASSWORD);
+ if (encrypedPwd != null) {
+ try {
+ SecretKeyFactory factory = SecretKeyFactory.getInstance("DESede"); //$NON-NLS-1$
+ SecretKey key = factory.generateSecret(new DESKeySpec((ITerminalsConnectorConstants.PROP_SSH_PASSWORD + ".SshMementoHandler").getBytes("UTF-8"))); //$NON-NLS-1$ //$NON-NLS-2$
+
+ Cipher cipher = Cipher.getInstance("DESede/CBC/PKCS5Padding"); //$NON-NLS-1$
+ cipher.init(Cipher.DECRYPT_MODE, key);
+
+ byte[] encBytes = Base64.decode(encrypedPwd.getBytes("UTF-8")); //$NON-NLS-1$
+ byte[] decBytes = cipher.doFinal(encBytes);
+
+ password = new String(decBytes);
+ }
+ catch (Exception e) {
+ if (Platform.inDebugMode()) e.printStackTrace();
+ }
+ }
+ */
+
+ properties.put(ITerminalsConnectorConstants.PROP_SSH_PASSWORD, password);
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/nls/Messages.java b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/nls/Messages.java
new file mode 100644
index 00000000000..61978ceb6df
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/nls/Messages.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2011 - 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ * Max Weninger (Wind River) - [361352] [TERMINALS][SSH] Add SSH terminal support
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.ssh.nls;
+
+import org.eclipse.osgi.util.NLS;
+
+/**
+ * Externalized strings management.
+ */
+public class Messages extends NLS {
+
+ // The plug-in resource bundle name
+ private static final String BUNDLE_NAME = "org.eclipse.tm.terminal.connector.ssh.nls.Messages"; //$NON-NLS-1$
+
+ /**
+ * Static constructor.
+ */
+ static {
+ // Load message values from bundle file
+ NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+ }
+
+ // **** Declare externalized string id's down here *****
+
+ public static String SshLauncherDelegate_terminalTitle;
+ public static String SshLauncherDelegate_terminalTitle_port;
+ public static String SshLauncherDelegate_terminalTitle_default;
+ public static String SshWizardConfigurationPanel_saveUser;
+ public static String SshWizardConfigurationPanel_savePassword;
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/nls/Messages.properties b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/nls/Messages.properties
new file mode 100644
index 00000000000..5a5b7efec5c
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/nls/Messages.properties
@@ -0,0 +1,17 @@
+###############################################################################
+# Copyright (c) 2012, 2018 Wind River Systems, Inc. and others. All rights reserved.
+# This program and the accompanying materials are made available under the terms
+# of the Eclipse Public License 2.0 which accompanies this distribution, and is
+# available at https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Wind River Systems - initial API and implementation
+###############################################################################
+
+SshLauncherDelegate_terminalTitle=SSH {0}@{1} ({2})
+SshLauncherDelegate_terminalTitle_port=SSH {0}@{1}:{2} ({3})
+SshLauncherDelegate_terminalTitle_default=SSH Terminal
+SshWizardConfigurationPanel_saveUser=Save user
+SshWizardConfigurationPanel_savePassword=Save password
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.classpath b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.classpath
new file mode 100644
index 00000000000..e801ebfb468
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.gitignore b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.gitignore
new file mode 100644
index 00000000000..ae3c1726048
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.options b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.options
new file mode 100644
index 00000000000..77c6a134ddd
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.options
@@ -0,0 +1 @@
+org.eclipse.tm.terminal.connector.telnet/debugmode = 0
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.project b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.project
new file mode 100644
index 00000000000..83045227a60
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.project
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.tm.terminal.connector.telnet</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+ </natures>
+ <filteredResources>
+ <filter>
+ <id>1329502098231</id>
+ <name></name>
+ <type>10</type>
+ <matcher>
+ <id>org.eclipse.ui.ide.multiFilter</id>
+ <arguments>1.0-name-matches-false-false-target</arguments>
+ </matcher>
+ </filter>
+ </filteredResources>
+</projectDescription>
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.settings/.api_filters b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.settings/.api_filters
new file mode 100644
index 00000000000..b44d5989d5e
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.settings/.api_filters
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<component id="org.eclipse.tm.terminal.connector.telnet" version="2">
+ <resource path="src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetSettings.java" type="org.eclipse.tm.terminal.connector.telnet.connector.TelnetSettings">
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
+ <message_arguments>
+ <message_argument value="ITelnetSettings"/>
+ <message_argument value="TelnetSettings"/>
+ </message_arguments>
+ </filter>
+ </resource>
+</component>
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.settings/org.eclipse.core.resources.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.settings/org.eclipse.jdt.core.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..e3a8104f9ca
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.settings/org.eclipse.jdt.launching.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 00000000000..f8a131b56e0
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_COMPILER_COMPLIANCE_DOES_NOT_MATCH_JRE=warning
+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=warning
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.settings/org.eclipse.jdt.ui.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.settings/org.eclipse.pde.api.tools.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 00000000000..ec9fbf321d0
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,184 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITH_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_FIELD=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERCLASS_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_CHANGED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENTS=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETERS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Error
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Warning
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+MISSING_EE_DESCRIPTIONS=Warning
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=false
+changed_execution_env=Error
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+incompatible_api_component_version_report_major_without_breaking_change=Warning
+incompatible_api_component_version_report_minor_without_api_change=Warning
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.settings/org.eclipse.pde.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.settings/org.eclipse.pde.prefs
new file mode 100644
index 00000000000..d2dc703ba9e
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,35 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=2
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=2
+compilers.p.missing-version-export-package=2
+compilers.p.missing-version-import-package=2
+compilers.p.missing-version-require-bundle=2
+compilers.p.no-required-att=0
+compilers.p.no.automatic.module=1
+compilers.p.not-externalized-att=1
+compilers.p.service.component.without.lazyactivation=1
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/META-INF/MANIFEST.MF b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..698726f282c
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/META-INF/MANIFEST.MF
@@ -0,0 +1,23 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.tm.terminal.connector.telnet;singleton:=true
+Bundle-Version: 4.7.200.qualifier
+Bundle-Activator: org.eclipse.tm.terminal.connector.telnet.activator.UIPlugin
+Bundle-Vendor: %providerName
+Require-Bundle: org.eclipse.core.expressions;bundle-version="3.4.400",
+ org.eclipse.core.runtime;bundle-version="3.8.0",
+ org.eclipse.equinox.security;bundle-version="1.1.100",
+ org.eclipse.tm.terminal.view.core;bundle-version="4.5.0";resolution:=optional,
+ org.eclipse.tm.terminal.view.ui;bundle-version="4.5.0";resolution:=optional,
+ org.eclipse.tm.terminal.control;bundle-version="4.5.0",
+ org.eclipse.ui;bundle-version="3.8.0"
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Bundle-ActivationPolicy: lazy
+Bundle-Localization: plugin
+Export-Package: org.eclipse.tm.terminal.connector.telnet.activator;x-internal:=true,
+ org.eclipse.tm.terminal.connector.telnet.connector,
+ org.eclipse.tm.terminal.connector.telnet.controls,
+ org.eclipse.tm.terminal.connector.telnet.launcher,
+ org.eclipse.tm.terminal.connector.telnet.nls;x-internal:=true
+Automatic-Module-Name: org.eclipse.tm.terminal.connector.telnet
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/about.html b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/build.properties b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/build.properties
new file mode 100644
index 00000000000..4a9d09e7c1c
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/build.properties
@@ -0,0 +1,19 @@
+###############################################################################
+# Copyright (c) 2012, 2018 Wind River Systems, Inc. and others. All rights reserved.
+# This program and the accompanying materials are made available under the terms
+# of the Eclipse Public License 2.0 which accompanies this distribution, and is
+# available at https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Wind River Systems - initial API and implementation
+###############################################################################
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.properties,\
+ plugin.xml,\
+ about.html
+src.includes = about.html
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/plugin.properties b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/plugin.properties
new file mode 100644
index 00000000000..2c151e75e3d
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/plugin.properties
@@ -0,0 +1,22 @@
+##################################################################################
+# Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved.
+# This program and the accompanying materials are made available under the terms
+# of the Eclipse Public License 2.0 which accompanies this distribution, and is
+# available at https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Wind River Systems - initial API and implementation
+##################################################################################
+
+pluginName = Terminal Telnet Connector
+providerName = Eclipse CDT
+
+# ----- Terminal Connector -----
+
+TelnetConnector.label=Telnet
+
+# ----- Terminal Launcher Delegates -----
+
+TelnetLauncherDelegate.label=Telnet Terminal
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/plugin.xml b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/plugin.xml
new file mode 100644
index 00000000000..dc9d728cb06
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/plugin.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<!--
+ Copyright (c) 2018 Red Hat and others.
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+ -->
+
+<plugin>
+
+<!-- Terminal connector contributions -->
+ <extension point="org.eclipse.tm.terminal.control.connectors">
+ <connector
+ name="%TelnetConnector.label"
+ id="org.eclipse.tm.terminal.connector.telnet.TelnetConnector"
+ class="org.eclipse.tm.terminal.connector.telnet.connector.TelnetConnector"/>
+ </extension>
+
+<!-- Terminal launcher delegate contributions -->
+ <extension point="org.eclipse.tm.terminal.view.ui.launcherDelegates">
+ <delegate
+ class="org.eclipse.tm.terminal.connector.telnet.launcher.TelnetLauncherDelegate"
+ id="org.eclipse.tm.terminal.connector.telnet.launcher.telnet"
+ label="%TelnetLauncherDelegate.label">
+ <enablement>
+ <with variable="selection">
+ <count value="1"/>
+ <iterate operator="and" ifEmpty="false">
+ <test
+ forcePluginActivation="true"
+ property="org.eclipse.tm.terminal.view.core.hasContextPropertiesProvider"
+ value="true"/>
+ </iterate>
+ </with>
+ </enablement>
+ </delegate>
+ </extension>
+</plugin>
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/activator/UIPlugin.java b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/activator/UIPlugin.java
new file mode 100644
index 00000000000..b85e25876b3
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/activator/UIPlugin.java
@@ -0,0 +1,105 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ * Max Weninger (Wind River) - [366374] [TERMINALS][TELNET] Add Telnet terminal support
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.telnet.activator;
+
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.resource.ImageRegistry;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.tm.terminal.view.core.tracing.TraceHandler;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class UIPlugin extends AbstractUIPlugin {
+ // The shared instance
+ private static UIPlugin plugin;
+ // The trace handler instance
+ private static volatile TraceHandler traceHandler;
+
+ /**
+ * The constructor
+ */
+ public UIPlugin() {
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static UIPlugin getDefault() {
+ return plugin;
+ }
+
+ /**
+ * Convenience method which returns the unique identifier of this plugin.
+ */
+ public static String getUniqueIdentifier() {
+ if (getDefault() != null && getDefault().getBundle() != null) {
+ return getDefault().getBundle().getSymbolicName();
+ }
+ return "org.eclipse.tm.terminal.connector.telnet"; //$NON-NLS-1$
+ }
+
+ /**
+ * Returns the bundles trace handler.
+ *
+ * @return The bundles trace handler.
+ */
+ public static TraceHandler getTraceHandler() {
+ if (traceHandler == null) {
+ traceHandler = new TraceHandler(getUniqueIdentifier());
+ }
+ return traceHandler;
+ }
+
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ @Override
+ protected void initializeImageRegistry(ImageRegistry registry) {
+ }
+
+ /**
+ * Loads the image registered under the specified key from the image
+ * registry and returns the <code>Image</code> object instance.
+ *
+ * @param key The key the image is registered with.
+ * @return The <code>Image</code> object instance or <code>null</code>.
+ */
+ public static Image getImage(String key) {
+ return getDefault().getImageRegistry().get(key);
+ }
+
+ /**
+ * Loads the image registered under the specified key from the image
+ * registry and returns the <code>ImageDescriptor</code> object instance.
+ *
+ * @param key The key the image is registered with.
+ * @return The <code>ImageDescriptor</code> object instance or <code>null</code>.
+ */
+ public static ImageDescriptor getImageDescriptor(String key) {
+ return getDefault().getImageRegistry().getDescriptor(key);
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/ITelnetSettings.java b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/ITelnetSettings.java
new file mode 100644
index 00000000000..b59413ca745
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/ITelnetSettings.java
@@ -0,0 +1,48 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ * Martin Oberhuber (Wind River) - fixed copyright headers and beautified
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.telnet.connector;
+
+import org.eclipse.tm.internal.terminal.provisional.api.ISettingsStore;
+
+/**
+ * @noimplement This interface is not intended to be implemented by clients.
+ * @noextend This interface is not intended to be extended by clients.
+ */
+public interface ITelnetSettings {
+ /**
+ * @since 4.2
+ */
+ static final String EOL_CRNUL = "CR+NUL"; //$NON-NLS-1$
+ /**
+ * @since 4.2
+ */
+ static final String EOL_CRLF = "CR+LF"; //$NON-NLS-1$
+
+ String getHost();
+
+ int getNetworkPort();
+
+ int getTimeout();
+
+ /**
+ * @since 4.2
+ */
+ String getEndOfLine();
+
+ String getSummary();
+
+ void load(ISettingsStore store);
+
+ void save(ISettingsStore store);
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/NetworkPortMap.java b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/NetworkPortMap.java
new file mode 100644
index 00000000000..5fb593acd18
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/NetworkPortMap.java
@@ -0,0 +1,62 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Initial Contributors:
+ * The following Wind River employees contributed to the Terminal component
+ * that contains this file: Chris Thew, Fran Litterio, Stephen Lamb,
+ * Helmut Haigermoser and Ted Williams.
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - extracted from TerminalNetworkPortMap
+ * Martin Oberhuber (Wind River) - fixed copyright headers and beautified
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.telnet.connector;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class NetworkPortMap {
+ public static final String PROP_NAMETGTCONS = "tgtcons"; //$NON-NLS-1$
+ public static final String PROP_NAMETELNET = "telnet"; //$NON-NLS-1$
+ public static final String PROP_VALUENET = "1233"; //$NON-NLS-1$
+ public static final String PROP_VALUETGTCONS = "1232"; //$NON-NLS-1$
+ public static final String PROP_VALUETELNET = "23"; //$NON-NLS-1$
+
+ String[][] fPortMap = new String[][] {
+ // portName, port
+ { PROP_NAMETGTCONS, PROP_VALUETGTCONS }, { PROP_NAMETELNET, PROP_VALUETELNET } };
+
+ public String getDefaultNetworkPort() {
+ return PROP_VALUETELNET;
+ }
+
+ public String findPortName(String strPort) {
+ for (int i = 0; i < fPortMap.length; i++) {
+ if (fPortMap[i][1].equals(strPort))
+ return fPortMap[i][0];
+ }
+ return null;
+ }
+
+ public String findPort(String strPortName) {
+ for (int i = 0; i < fPortMap.length; i++) {
+ if (fPortMap[i][0].equals(strPortName))
+ return fPortMap[i][1];
+ }
+ return null;
+ }
+
+ public List<String> getNameTable() {
+ List<String> names = new ArrayList<>();
+ for (int i = 0; i < fPortMap.length; i++) {
+ names.add(fPortMap[i][0]);
+ }
+ return names;
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetCodes.java b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetCodes.java
new file mode 100644
index 00000000000..21edea869da
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetCodes.java
@@ -0,0 +1,94 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Fran Litterio (Wind River) - initial API and implementation
+ * Helmut Haigermoser (Wind River) - repackaged
+ * Ted Williams (Wind River) - repackaged into org.eclipse namespace
+ * Michael Scharf (Wind River) - split into core, view and connector plugins
+ * Martin Oberhuber (Wind River) - fixed copyright headers and beautified
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.telnet.connector;
+
+/**
+ * This interface defines symbolic constants for numeric TELNET protocol command and
+ * option codes. Any class that needs to use these constants must implement this
+ * interface. The meanings of these constants are defined in the various TELNET RFCs
+ * (RFC 854 to RFC 861, and others).
+ */
+interface TelnetCodes {
+ /** Command code: Subnegotiation End. */
+ static final byte TELNET_SE = (byte) 240;
+
+ /** Command code: No-op. */
+ static final byte TELNET_NOP = (byte) 241;
+
+ /** Command code: Data Mark. */
+ static final byte TELNET_DM = (byte) 242;
+
+ /** Command code: Break. */
+ static final byte TELNET_BREAK = (byte) 243;
+
+ /** Command code: Interrupt Process. */
+ static final byte TELNET_IP = (byte) 244;
+
+ /** Command code: Abort Output. */
+ static final byte TELNET_AO = (byte) 245;
+
+ /** Command code: Are You There. */
+ static final byte TELNET_AYT = (byte) 246;
+
+ /** Command code: Erase Character. */
+ static final byte TELNET_EC = (byte) 247;
+
+ /** Command code: Erase Line. */
+ static final byte TELNET_EL = (byte) 248;
+
+ /** Command code: Go Ahead. */
+ static final byte TELNET_GA = (byte) 249;
+
+ /** Command code: Subnegotiation Begin. */
+ static final byte TELNET_SB = (byte) 250;
+
+ /** Command code: Will. */
+ static final byte TELNET_WILL = (byte) 251;
+
+ /** Command code: Won't. */
+ static final byte TELNET_WONT = (byte) 252;
+
+ /** Command code: Do. */
+ static final byte TELNET_DO = (byte) 253;
+
+ /** Command code: Don't. */
+ static final byte TELNET_DONT = (byte) 254;
+
+ /** Command code: Interpret As Command. */
+ static final byte TELNET_IAC = (byte) 255;
+
+ /** Command code: IS. */
+ static final byte TELNET_IS = 0;
+
+ /** Command code: SEND. */
+ static final byte TELNET_SEND = 1;
+
+ /** Option code: Transmit Binary option. */
+ static final byte TELNET_OPTION_TRANSMIT_BINARY = 0;
+
+ /** Option code: Echo option. */
+ static final byte TELNET_OPTION_ECHO = 1;
+
+ /** Option code: Suppress Go Ahead option. */
+ static final byte TELNET_OPTION_SUPPRESS_GA = 3;
+
+ /** Option code: Terminal Type */
+ static final byte TELNET_OPTION_TERMINAL_TYPE = 24;
+
+ /** Option code: Negotitate About Window Size (NAWS) */
+ static final byte TELNET_OPTION_NAWS = 31;
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetConnectWorker.java b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetConnectWorker.java
new file mode 100644
index 00000000000..d2ab614884a
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetConnectWorker.java
@@ -0,0 +1,131 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Initial Contributors:
+ * The following Wind River employees contributed to the Terminal component
+ * that contains this file: Chris Thew, Fran Litterio, Stephen Lamb,
+ * Helmut Haigermoser and Ted Williams.
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - extracted from TerminalControl
+ * Martin Oberhuber (Wind River) - fixed copyright headers and beautified
+ * Uwe Stieber (Wind River) - [287158][terminal][telnet] Connect worker is giving up to early
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.telnet.connector;
+
+import java.net.ConnectException;
+import java.net.InetSocketAddress;
+import java.net.Socket;
+import java.net.SocketTimeoutException;
+import java.net.UnknownHostException;
+
+import org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl;
+import org.eclipse.tm.internal.terminal.provisional.api.Logger;
+import org.eclipse.tm.internal.terminal.provisional.api.TerminalState;
+
+class TelnetConnectWorker extends Thread {
+ private final ITerminalControl fControl;
+ private final TelnetConnector fConn;
+
+ protected TelnetConnectWorker(TelnetConnector conn, ITerminalControl control) {
+ fControl = control;
+ fConn = conn;
+ fControl.setState(TerminalState.CONNECTING);
+ }
+
+ @Override
+ public void run() {
+ // Retry the connect with after a little pause in case the
+ // remote telnet server isn't ready. ConnectExceptions might
+ // happen if the telnet server process did not initialized itself.
+ // This is seen especially if the telnet server is a process
+ // providing it's input and output via a built in telnet server.
+ int remaining = 10;
+
+ while (remaining >= 0) {
+ // Pause before we re-try if the remaining tries are less than the initial value
+ if (remaining < 10)
+ try {
+ Thread.sleep(500);
+ } catch (InterruptedException e) {
+ /* ignored on purpose */ }
+
+ try {
+ int nTimeout = fConn.getTelnetSettings().getTimeout() * 1000;
+ String strHost = fConn.getTelnetSettings().getHost();
+ int nPort = fConn.getTelnetSettings().getNetworkPort();
+ InetSocketAddress address = new InetSocketAddress(strHost, nPort);
+ Socket socket = new Socket();
+
+ socket.connect(address, nTimeout);
+
+ // If we get to this point, the connect succeeded and we will
+ // force the remaining counter to be 0.
+ remaining = 0;
+
+ // This next call causes reads on the socket to see TCP urgent data
+ // inline with the rest of the non-urgent data. Without this call, TCP
+ // urgent data is silently dropped by Java. This is required for
+ // TELNET support, because when the TELNET server sends "IAC DM", the
+ // IAC byte is TCP urgent data. If urgent data is silently dropped, we
+ // only see the DM, which looks like an ISO Latin-1 '�' character.
+
+ socket.setOOBInline(true);
+
+ fConn.setSocket(socket);
+
+ TelnetConnection connection = new TelnetConnection(fConn, socket);
+ socket.setKeepAlive(true);
+ fConn.setTelnetConnection(connection);
+ connection.start();
+ fControl.setState(TerminalState.CONNECTED);
+
+ } catch (UnknownHostException ex) {
+ // No re-try in case of UnknownHostException, there is no indication that
+ // the DNS will fix itself
+ remaining = 0;
+ //Construct error message and signal failed
+ String txt = "Unknown host: " + ex.getMessage(); //$NON-NLS-1$
+ connectFailed(txt, "Unknown host: " + ex.getMessage() + "\n"); //$NON-NLS-1$ //$NON-NLS-2$
+ } catch (SocketTimeoutException socketTimeoutException) {
+ // Time out occurred. No re-try in this case either. Time out can
+ // be increased by the user. Multiplying the timeout with the remaining
+ // counter is not desired.
+ remaining = 0;
+ // Construct error message and signal failed
+ connectFailed(socketTimeoutException.getMessage(),
+ "Connection Error!\n" + socketTimeoutException.getMessage()); //$NON-NLS-1$
+ } catch (ConnectException connectException) {
+ // In case of a ConnectException, do a re-try. The server could have been
+ // simply not ready yet and the worker would give up to early. If the terminal
+ // control is already closed (disconnected), don't print "Connection refused" errors
+ if (remaining == 0 && TerminalState.CLOSED != fControl.getState()) {
+ connectFailed(connectException.getMessage(), "Connection refused!"); //$NON-NLS-1$
+ }
+ } catch (Exception exception) {
+ // Any other exception on connect. No re-try in this case either
+ remaining = 0;
+ // Log the exception
+ Logger.logException(exception);
+ // And signal failed
+ connectFailed(exception.getMessage(), ""); //$NON-NLS-1$
+ } finally {
+ remaining--;
+ }
+ }
+ }
+
+ private void connectFailed(String terminalText, String msg) {
+ Logger.log(terminalText);
+ fControl.displayTextInTerminal(terminalText);
+ fConn.cleanSocket();
+ fControl.setState(TerminalState.CLOSED);
+ fControl.setMsg(msg);
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetConnection.java b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetConnection.java
new file mode 100644
index 00000000000..63a1afd9a8b
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetConnection.java
@@ -0,0 +1,704 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Fran Litterio (Wind River) - initial API and implementation
+ * Helmut Haigermoser (Wind River) - repackaged
+ * Ted Williams (Wind River) - repackaged into org.eclipse namespace
+ * Michael Scharf (Wind River) - split into core, view and connector plugins
+ * Martin Oberhuber (Wind River) - fixed copyright headers and beautified
+ * Michael Scharf (Wind River) - [209665] Add ability to log byte streams from terminal
+ * Alex Panchenko (Xored) - [277061] TelnetConnection.isConnected() should check if socket was not closed
+ * Uwe Stieber (Wind River) - [281329] Telnet connection not handling "SocketException: Connection reset" correct
+ * Nils Hagge (Siemens AG) - [276023] close socket streams after connection is disconnected
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.telnet.connector;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.Socket;
+import java.net.SocketException;
+
+import org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl;
+import org.eclipse.tm.internal.terminal.provisional.api.Logger;
+import org.eclipse.tm.internal.terminal.provisional.api.TerminalState;
+
+/**
+ * This class encapsulates a TELNET connection to a remote server. It processes
+ * incoming TELNET protocol data and generates outbound TELNET protocol data. It
+ * also manages two sets of TelnetOption objects: one for the local endpoint and
+ * one for the remote endpoint.
+ * <p>
+ *
+ * IMPORTANT: Understanding this code requires understanding the TELNET protocol
+ * and TELNET option processing, as defined in the RFCs listed below.
+ * <p>
+ *
+ * @author Fran Litterio (francis.litterio@windriver.com)
+ *
+ * @see <a href="ftp://ftp.rfc-editor.org/in-notes/rfc854.txt">RFC 854</a>
+ * @see <a href="ftp://ftp.rfc-editor.org/in-notes/rfc855.txt">RFC 855</a>
+ * @see <a href="ftp://ftp.rfc-editor.org/in-notes/rfc856.txt">RFC 856</a>
+ * @see <a href="ftp://ftp.rfc-editor.org/in-notes/rfc857.txt">RFC 857</a>
+ * @see <a href="ftp://ftp.rfc-editor.org/in-notes/rfc858.txt">RFC 858</a>
+ * @see <a href="ftp://ftp.rfc-editor.org/in-notes/rfc859.txt">RFC 859</a>
+ * @see <a href="ftp://ftp.rfc-editor.org/in-notes/rfc860.txt">RFC 860</a>
+ * @see <a href="ftp://ftp.rfc-editor.org/in-notes/rfc861.txt">RFC 861</a>
+ * @see <a href="ftp://ftp.rfc-editor.org/in-notes/rfc1091.txt">RFC 1091</a>
+ * @see <a href="ftp://ftp.rfc-editor.org/in-notes/rfc1096.txt">RFC 1096</a>
+ * @see <a href="ftp://ftp.rfc-editor.org/in-notes/rfc1073.txt">RFC 1073</a>
+ * @see <a href="ftp://ftp.rfc-editor.org/in-notes/rfc1079.txt">RFC 1079</a>
+ * @see <a href="ftp://ftp.rfc-editor.org/in-notes/rfc1143.txt">RFC 1143</a>
+ * @see <a href="ftp://ftp.rfc-editor.org/in-notes/rfc1572.txt">RFC 1572</a>
+ */
+public class TelnetConnection extends Thread implements TelnetCodes {
+ /**
+ * TELNET connection state: Initial state.
+ */
+ protected static final int STATE_INITIAL = 0;
+
+ /**
+ * TELNET connection state: Last byte processed was IAC code. code.
+ */
+ protected static final int STATE_IAC_RECEIVED = 1;
+
+ /**
+ * TELNET connection state: Last byte processed was WILL code. code.
+ */
+ protected static final int STATE_WILL_RECEIVED = 2;
+
+ /**
+ * TELNET connection state: Last byte processed was WONT code.
+ */
+ protected static final int STATE_WONT_RECEIVED = 3;
+
+ /**
+ * TELNET connection state: Last byte processed was DO code.
+ */
+ protected static final int STATE_DO_RECEIVED = 4;
+
+ /**
+ * TELNET connection state: Last byte processed was DONT code.
+ */
+ protected static final int STATE_DONT_RECEIVED = 5;
+
+ /**
+ * TELNET connection state: Last byte processed was SB.
+ */
+ protected static final int STATE_SUBNEGOTIATION_STARTED = 6;
+
+ /**
+ * TELNET connection state: Currently receiving sub-negotiation data.
+ */
+ protected static final int STATE_RECEIVING_SUBNEGOTIATION = 7;
+
+ /**
+ * Size of buffer for processing data received from remote endpoint.
+ */
+ protected static final int BUFFER_SIZE = 2048;
+
+ /**
+ * Holds raw bytes received from the remote endpoint, prior to any TELNET
+ * protocol processing.
+ */
+ protected byte[] rawBytes = new byte[BUFFER_SIZE];
+
+ /**
+ * Holds incoming network data after the TELNET protocol bytes have been
+ * processed and removed.
+ */
+ protected byte[] processedBytes = new byte[BUFFER_SIZE];
+
+ /**
+ * This field holds a StringBuffer containing text recently received from
+ * the remote endpoint (after all TELNET protocol bytes have been processed
+ * and removed).
+ */
+ protected StringBuffer processedStringBuffer = new StringBuffer(BUFFER_SIZE);
+
+ /**
+ * Holds the current state of the TELNET protocol processor.
+ */
+ protected int telnetState = STATE_INITIAL;
+
+ /**
+ * This field is true if the remote endpoint is a TELNET server, false if
+ * not. We set this to true if and only if the remote endpoint sends
+ * recognizable TELNET protocol data. We do not assume that the remote
+ * endpoint is a TELNET server just because it is listening on port 23. This
+ * allows us to successfully connect to a TELNET server listening on a port
+ * other than 23.
+ * <p>
+ *
+ * When this field first changes from false to true, we send all WILL or DO
+ * commands to the remote endpoint.
+ * <p>
+ *
+ * @see #telnetServerDetected()
+ */
+ protected boolean remoteIsTelnetServer = false;
+
+ /**
+ * An array of TelnetOption objects representing the local endpoint's TELNET
+ * options. The array is indexed by the numeric TELNET option code.
+ */
+ protected TelnetOption[] localOptions = new TelnetOption[256];
+
+ /**
+ * An array of TelnetOption objects representing the remote endpoint's
+ * TELNET options. The array is indexed by the numeric TELNET option code.
+ */
+ protected TelnetOption[] remoteOptions = new TelnetOption[256];
+
+ /**
+ * An array of bytes that holds the TELNET subnegotiation command most
+ * recently received from the remote endpoint. This array does _not_ include
+ * the leading IAC SB bytes, nor does it include the trailing IAC SE bytes.
+ * The first byte of this array is always a TELNET option code.
+ */
+ protected byte[] receivedSubnegotiation = new byte[128];
+
+ /**
+ * This field holds the index into array {@link #receivedSubnegotiation} of
+ * the next unused byte. This is used by method
+ * {@link #processTelnetProtocol(int)} when the state machine is in states
+ * {@link #STATE_SUBNEGOTIATION_STARTED} and {@link
+ * #STATE_RECEIVING_SUBNEGOTIATION}.
+ */
+ protected int nextSubnegotiationByteIndex = 0;
+
+ /**
+ * This field is true if an error occurs while processing a subnegotiation
+ * command.
+ *
+ * @see #processTelnetProtocol(int)
+ */
+ protected boolean ignoreSubnegotiation = false;
+
+ /**
+ * This field holds the width of the Terminal screen in columns.
+ */
+ protected int width = 0;
+
+ /**
+ * This field holds the height of the Terminal screen in rows.
+ */
+ protected int height = 0;
+
+ /**
+ * This field holds a reference to the {@link ITerminalControl} singleton.
+ */
+ protected TelnetConnector terminalControl;
+
+ /**
+ * This method holds the Socket object for the TELNET connection.
+ */
+ protected Socket socket;
+
+ /**
+ * This field holds a reference to an {@link InputStream} object used to
+ * receive data from the remote endpoint.
+ */
+ protected InputStream inputStream;
+
+ /**
+ * This field holds a reference to an {@link OutputStream} object used to
+ * send data to the remote endpoint.
+ */
+ protected OutputStream outputStream;
+
+ /**
+ * UNDER CONSTRUCTION
+ */
+ protected boolean localEcho = true;
+
+ /**
+ * This constructor just initializes some internal object state from its
+ * arguments.
+ */
+ public TelnetConnection(TelnetConnector terminalControl, Socket socket) throws IOException {
+ super();
+
+ Logger.log("entered"); //$NON-NLS-1$
+
+ this.terminalControl = terminalControl;
+ this.socket = socket;
+
+ inputStream = socket.getInputStream();
+ outputStream = socket.getOutputStream();
+
+ initializeOptions();
+ }
+
+ /**
+ * Returns true if the TCP connection represented by this object is
+ * connected, false otherwise.
+ */
+ public boolean isConnected() {
+ return socket != null && socket.isConnected() && !socket.isClosed();
+ }
+
+ /**
+ * Returns true if the TCP connection represented by this object is
+ * connected and the remote endpoint is a TELNET server, false otherwise.
+ */
+ public boolean isRemoteTelnetServer() {
+ return remoteIsTelnetServer;
+ }
+
+ /**
+ * This method sets the terminal width and height to the supplied values. If
+ * either new value differs from the corresponding old value, we initiate a
+ * NAWS subnegotiation to inform the remote endpoint of the new terminal
+ * size.
+ */
+ public void setTerminalSize(int newWidth, int newHeight) {
+ Logger.log("Setting new size: width = " + newWidth + ", height = " + newHeight); //$NON-NLS-1$ //$NON-NLS-2$
+ if (!isConnected() || !isRemoteTelnetServer())
+ return;
+ boolean sizeChanged = false;
+
+ if (newWidth != width || newHeight != height)
+ sizeChanged = true;
+
+ width = newWidth;
+ height = newHeight;
+
+ if (sizeChanged && remoteIsTelnetServer && localOptions[TELNET_OPTION_NAWS].isEnabled()) {
+ Integer[] sizeData = { Integer.valueOf(width), Integer.valueOf(height) };
+
+ localOptions[TELNET_OPTION_NAWS].sendSubnegotiation(sizeData);
+ }
+ }
+
+ /**
+ * Returns true if local echoing is enabled for this TCP connection, false
+ * otherwise.
+ */
+ public boolean localEcho() {
+ return localEcho;
+ }
+
+ private void displayTextInTerminal(String string) {
+ terminalControl.displayTextInTerminal(string);
+ }
+
+ /**
+ * This method runs in its own thread. It reads raw bytes from the TELNET
+ * connection socket, processes any TELNET protocol bytes (and removes
+ * them), and passes the remaining bytes to a TerminalDisplay object for
+ * display.
+ */
+ @Override
+ public void run() {
+ Logger.log("Entered"); //$NON-NLS-1$
+
+ try {
+ while (socket.isConnected()) {
+ int nRawBytes = inputStream.read(rawBytes);
+
+ if (nRawBytes == -1) {
+ // End of input on inputStream.
+ Logger.log("End of input reading from socket!"); //$NON-NLS-1$
+
+ // Announce to the user that the remote endpoint has closed the
+ // connection.
+
+ displayTextInTerminal(TelnetMessages.CONNECTION_CLOSED_BY_FOREIGN_HOST);
+
+ // Tell the ITerminalControl object that the connection is
+ // closed.
+ terminalControl.setState(TerminalState.CLOSED);
+ break;
+ }
+
+ // Process any TELNET protocol data that we receive. Don't
+ // send any TELNET protocol data until we are sure the remote
+ // endpoint is a TELNET server.
+
+ int nProcessedBytes = processTelnetProtocol(nRawBytes);
+
+ if (nProcessedBytes > 0) {
+ terminalControl.getRemoteToTerminalOutputStream().write(processedBytes, 0, nProcessedBytes);
+ }
+ }
+ } catch (SocketException ex) {
+ String message = ex.getMessage();
+
+ // A "socket closed" exception is normal here. It's caused by the
+ // user clicking the disconnect button on the Terminal view toolbar.
+
+ if (message != null && !message.equalsIgnoreCase("Socket closed") //$NON-NLS-1$
+ && !message.equalsIgnoreCase("Connection reset")) //$NON-NLS-1$
+ {
+ Logger.logException(ex);
+ }
+
+ } catch (Exception ex) {
+ Logger.logException(ex);
+ } finally {
+ // Tell the ITerminalControl object that the connection is closed.
+ terminalControl.setState(TerminalState.CLOSED);
+ try {
+ inputStream.close();
+ } catch (IOException ioe) {
+ /*ignore*/ }
+ try {
+ outputStream.close();
+ } catch (IOException ioe) {
+ /*ignore*/ }
+ }
+ }
+
+ /**
+ * This method initializes the localOptions[] and remoteOptions[] arrays so
+ * that they contain references to TelnetOption objects representing our
+ * desired state for each option. The goal is to achieve server-side
+ * echoing, suppression of Go Aheads, and to send the local terminal type
+ * and size to the remote endpoint.
+ */
+ protected void initializeOptions() {
+ // First, create all the TelnetOption objects in the "undesired" state.
+
+ for (int i = 0; i < localOptions.length; ++i) {
+ localOptions[i] = new TelnetOption((byte) i, false, true, outputStream);
+ }
+
+ for (int i = 0; i < localOptions.length; ++i) {
+ remoteOptions[i] = new TelnetOption((byte) i, false, false, outputStream);
+ }
+
+ // Next, set some of the options to the "desired" state. The options we
+ // desire to be enabled are as follows:
+ //
+ // TELNET Option Desired for Desired for
+ // Name and Code Local Endpoint Remote Endpoint
+ // --------------------- -------------- ---------------
+ // Echo (1) No Yes
+ // Suppress Go Ahead (3) Yes Yes
+ // Terminal Type (24) Yes Yes
+ // NAWS (31) Yes Yes
+ //
+ // All other options remain in the "undesired" state, and thus will be
+ // disabled (since either endpoint can force any option to be disabled by simply
+ // answering WILL with DONT and DO with WONT).
+
+ localOptions[TELNET_OPTION_ECHO].setDesired(false);
+ remoteOptions[TELNET_OPTION_ECHO].setDesired(true);
+
+ localOptions[TELNET_OPTION_SUPPRESS_GA].setDesired(true);
+ remoteOptions[TELNET_OPTION_SUPPRESS_GA].setDesired(true);
+
+ localOptions[TELNET_OPTION_TERMINAL_TYPE].setDesired(true);
+ remoteOptions[TELNET_OPTION_TERMINAL_TYPE].setDesired(true);
+
+ localOptions[TELNET_OPTION_NAWS].setDesired(true);
+ remoteOptions[TELNET_OPTION_NAWS].setDesired(true);
+ }
+
+ /**
+ * Process TELNET protocol data contained in the first <i>count</i> bytes
+ * of <i>rawBytes</i>. This function preserves its state between calls,
+ * because a multi-byte TELNET command might be split between two (or more)
+ * calls to this function. The state is preserved in field <i>telnetState</i>.
+ * This function implements an FSA that recognizes TELNET option codes.
+ * TELNET option sub-negotiation is delegated to instances of TelnetOption.
+ *
+ * @return The number of bytes remaining in the buffer after removing all
+ * TELNET protocol bytes.
+ */
+ //TELNET option state is stored in instances of TelnetOption.
+ protected int processTelnetProtocol(int count) {
+ // This is too noisy to leave on all the time.
+ // Logger.log("Processing " + count + " bytes of data.");
+
+ int nextProcessedByte = 0;
+
+ for (int byteIndex = 0; byteIndex < count; ++byteIndex) {
+ // It is possible for control to flow through the below code such
+ // that nothing happens. This happens when array rawBytes[] contains no
+ // TELNET protocol data.
+
+ byte inputByte = rawBytes[byteIndex];
+ int ubyte = inputByte & 0xFF;
+
+ switch (telnetState) {
+ case STATE_INITIAL:
+ if (inputByte == TELNET_IAC) {
+ telnetState = STATE_IAC_RECEIVED;
+ } else {
+ // It's not an IAC code, so just append it to
+ // processedBytes.
+
+ processedBytes[nextProcessedByte++] = inputByte;
+ }
+ break;
+
+ case STATE_IAC_RECEIVED:
+ switch (inputByte) {
+ case TELNET_IAC:
+ // Two IAC bytes in a row are translated into one byte with
+ // the
+ // value 0xff.
+
+ processedBytes[nextProcessedByte++] = (byte) 0xff;
+ telnetState = STATE_INITIAL;
+ break;
+
+ case TELNET_WILL:
+ telnetState = STATE_WILL_RECEIVED;
+ break;
+
+ case TELNET_WONT:
+ telnetState = STATE_WONT_RECEIVED;
+ break;
+
+ case TELNET_DO:
+ telnetState = STATE_DO_RECEIVED;
+ break;
+
+ case TELNET_DONT:
+ telnetState = STATE_DONT_RECEIVED;
+ break;
+
+ case TELNET_SB:
+ telnetState = STATE_SUBNEGOTIATION_STARTED;
+ break;
+
+ // Commands to consume and ignore.
+
+ // Data Mark (DM). This is sent by a TELNET server following an
+ // IAC sent as TCP urgent data. It should cause the client to
+ // skip all not yet processed non-TELNET-protocol data preceding the
+ // DM byte. However, Java 1.4.x has no way to inform clients of
+ // class Socket that urgent data is available, so we simply ignore the
+ // "IAC DM" command. Since the IAC is sent as TCP urgent data,
+ // the Socket must be put into OOB-inline mode via a call to
+ // setOOBInline(true), otherwise the IAC is silently dropped by
+ // Java and only the DM arrives (leaving the user to see a
+ // spurious ISO Latin-1 character).
+ case TELNET_DM:
+
+ case TELNET_NOP: // No-op.
+ case TELNET_GA: // Go Ahead command. Meaningless on a full-duplex link.
+ case TELNET_IP: // Interupt Process command. Server should never send this.
+ case TELNET_AO: // Abort Output command. Server should never send this.
+ case TELNET_AYT: // Are You There command. Server should never send this.
+ case TELNET_EC: // Erase Character command. Server should never send this.
+ case TELNET_EL: // Erase Line command. Server should never send this.
+ telnetState = STATE_INITIAL;
+ break;
+
+ default:
+ // Unrecognized command! This should never happen.
+ Logger.log("processTelnetProtocol: UNRECOGNIZED TELNET PROTOCOL COMMAND: " + //$NON-NLS-1$
+ ubyte);
+ telnetState = STATE_INITIAL;
+ break;
+ }
+ break;
+
+ // For the next four cases, WILL and WONT commands affect the state
+ // of remote options, and DO and DONT commands affect the state of
+ // local options.
+
+ case STATE_WILL_RECEIVED:
+ Logger.log("Received WILL " + localOptions[ubyte].optionName() + "."); //$NON-NLS-1$ //$NON-NLS-2$
+ remoteOptions[ubyte].handleWill();
+ telnetState = STATE_INITIAL;
+ telnetServerDetected();
+ break;
+
+ case STATE_WONT_RECEIVED:
+ Logger.log("Received WONT " + localOptions[ubyte].optionName() + "."); //$NON-NLS-1$ //$NON-NLS-2$
+ remoteOptions[ubyte].handleWont();
+ telnetState = STATE_INITIAL;
+ telnetServerDetected();
+ break;
+
+ case STATE_DO_RECEIVED:
+ Logger.log("Received DO " + localOptions[ubyte].optionName() + "."); //$NON-NLS-1$ //$NON-NLS-2$
+ localOptions[ubyte].handleDo();
+ telnetState = STATE_INITIAL;
+ telnetServerDetected();
+ break;
+
+ case STATE_DONT_RECEIVED:
+ Logger.log("Received DONT " + localOptions[ubyte].optionName() + "."); //$NON-NLS-1$ //$NON-NLS-2$
+ localOptions[ubyte].handleDont();
+ telnetState = STATE_INITIAL;
+ telnetServerDetected();
+ break;
+
+ case STATE_SUBNEGOTIATION_STARTED:
+ Logger.log("Starting subnegotiation for option " + //$NON-NLS-1$
+ localOptions[ubyte].optionName() + "."); //$NON-NLS-1$
+
+ // First, zero out the array of received subnegotiation butes.
+
+ for (int i = 0; i < receivedSubnegotiation.length; ++i)
+ receivedSubnegotiation[i] = 0;
+
+ // Forget about any previous subnegotiation errors.
+
+ ignoreSubnegotiation = false;
+
+ // Then insert this input byte into the array and enter state
+ // STATE_RECEIVING_SUBNEGOTIATION, where we will gather the
+ // remaining subnegotiation bytes.
+
+ nextSubnegotiationByteIndex = 0;
+ receivedSubnegotiation[nextSubnegotiationByteIndex++] = inputByte;
+ telnetState = STATE_RECEIVING_SUBNEGOTIATION;
+ break;
+
+ case STATE_RECEIVING_SUBNEGOTIATION:
+ if (inputByte == TELNET_IAC) {
+ // Handle double IAC bytes. From RFC 855: "if parameters
+ // in an option 'subnegotiation' include a byte with a value
+ // of 255, it is necessary to double this byte in accordance
+ // the general TELNET rules."
+
+ if (nextSubnegotiationByteIndex > 0
+ && receivedSubnegotiation[nextSubnegotiationByteIndex - 1] == TELNET_IAC) {
+ // The last input byte we received in this
+ // subnegotiation was IAC, so this is a double IAC. Leave the previous IAC
+ // in the receivedSubnegotiation[] array and drop the current
+ // one (thus translating a double IAC into a single IAC).
+
+ Logger.log("Double IAC in subnegotiation translated into single IAC."); //$NON-NLS-1$
+ break;
+ }
+
+ // Append the IAC byte to receivedSubnegotiation[]. If there
+ // is no room for the IAC byte, it overwrites the last byte,
+ // because we need to know when the subnegotiation ends, and that is
+ // marked by an "IAC SE" command.
+
+ if (nextSubnegotiationByteIndex < receivedSubnegotiation.length) {
+ receivedSubnegotiation[nextSubnegotiationByteIndex++] = inputByte;
+ } else {
+ receivedSubnegotiation[receivedSubnegotiation.length - 1] = inputByte;
+ }
+ break;
+ }
+
+ // Handle an "IAC SE" command, which marks the end of the
+ // subnegotiation. An SE byte by itself might be a legitimate
+ // part of the subnegotiation data, so don't do anything unless the SE
+ // is immediately preceded by an IAC.
+
+ if (inputByte == TELNET_SE && receivedSubnegotiation[nextSubnegotiationByteIndex - 1] == TELNET_IAC) {
+ Logger.log("Found SE code marking end of subnegotiation."); //$NON-NLS-1$
+
+ // We are done receiving the subnegotiation command. Now
+ // process it. We always use the option object stored in array
+ // localOptions[] to process the received subnegotiation.
+ // This is an arbitrary decision, but it is sufficient for handling
+ // options TERMINAL-TYPE and NAWS, which are the only options that
+ // we subnegotiate (presently). If, in the future,subnegotiations
+ // need to be handled by option objects stored in both
+ // localOptions[] and remoteOptions[], then some mechanism
+ // to choose the correct option object must be implemented.
+ //
+ // Also, if ignoreSubnegotiation is true, there was an error
+ // while receiving the subnegotiation, so we must not process the
+ // command, and instead just return to the initial state.
+
+ if (!ignoreSubnegotiation) {
+ // Remove the trailing IAC byte from
+ // receivedSubnegotiation[].
+
+ receivedSubnegotiation[nextSubnegotiationByteIndex - 1] = 0;
+
+ int subnegotiatedOption = receivedSubnegotiation[0] & 0xFF;
+
+ localOptions[subnegotiatedOption].handleSubnegotiation(receivedSubnegotiation,
+ nextSubnegotiationByteIndex);
+ } else {
+ Logger.log("NOT CALLING handleSubnegotiation() BECAUSE OF ERRORS!"); //$NON-NLS-1$
+ }
+
+ // Return to the initial state.
+
+ telnetState = STATE_INITIAL;
+ }
+
+ // Check whether the receivedSubnegotiation[] array is full.
+
+ if (nextSubnegotiationByteIndex >= receivedSubnegotiation.length) {
+ // This should not happen. Array receivedSubnegotiation can
+ // hold 128 bytes, and no TELNET option that we perform
+ // subnegotiation for requires that many bytes in a subnegotiation command.
+ // In the interest of robustness, we handle this case by ignoring all
+ // remaining subnegotiation bytes until we receive the IAC SE
+ // command that ends the subnegotiation. Also, we set
+ // ignoreSubnegotiation to true to prevent a call to
+ // handleSubnegotiation() when the IAC SE command arrives.
+
+ Logger.log("SUBNEGOTIATION BUFFER FULL!"); //$NON-NLS-1$
+ ignoreSubnegotiation = true;
+ } else {
+ Logger.log("Recording subnegotiation byte " + ubyte); //$NON-NLS-1$
+
+ receivedSubnegotiation[nextSubnegotiationByteIndex++] = inputByte;
+ }
+ break;
+
+ default:
+ // This should _never_ happen! If it does, it means there is a
+ // bug in this FSA. For robustness, we return to the initial state.
+
+ Logger.log("INVALID TELNET STATE: " + telnetState); //$NON-NLS-1$
+ telnetState = STATE_INITIAL;
+ break;
+ }
+ }
+
+ // Return the number of bytes of processed data (i.e., number of bytes
+ // of raw data minus TELNET control bytes). This value can be zero.
+
+ return nextProcessedByte;
+ }
+
+ /**
+ * This method is called whenever we receive a valid TELNET protocol command
+ * from the remote endpoint. When it is called for the first time for this
+ * connection, we negotiate all options that we desire to be enabled.
+ * <p>
+ *
+ * This method does not negotiate options that we do not desire to be
+ * enabled, because all options are initially disabled.
+ * <p>
+ */
+ protected void telnetServerDetected() {
+ if (!remoteIsTelnetServer) {
+ // This block only executes once per TelnetConnection instance.
+
+ localEcho = false;
+
+ Logger.log("Detected TELNET server."); //$NON-NLS-1$
+
+ remoteIsTelnetServer = true;
+
+ for (int i = 0; i < localOptions.length; ++i) {
+ if (localOptions[i].isDesired()) {
+ localOptions[i].negotiate();
+ }
+ }
+
+ for (int i = 0; i < remoteOptions.length; ++i) {
+ if (remoteOptions[i].isDesired()) {
+ remoteOptions[i].negotiate();
+ }
+ }
+ }
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetConnector.java b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetConnector.java
new file mode 100644
index 00000000000..13c994db808
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetConnector.java
@@ -0,0 +1,222 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Initial Contributors:
+ * The following Wind River employees contributed to the Terminal component
+ * that contains this file: Chris Thew, Fran Litterio, Stephen Lamb,
+ * Helmut Haigermoser and Ted Williams.
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - extracted from TerminalControl
+ * Martin Oberhuber (Wind River) - fixed copyright headers and beautified
+ * Martin Oberhuber (Wind River) - [225853][api] Provide more default functionality in TerminalConnectorImpl
+ * Sean Adams (Cisco) - [231959][terminal][telnet] NPE in TelnetConnector.java
+ * David Sciamma (Anyware-Tech) - [288254][telnet] local echo is always disabled
+ * Anton Leherbauer (Wind River) - [453393] Add support for copying wrapped lines without line break
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.telnet.connector;
+
+import java.io.FilterOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.Socket;
+
+import org.eclipse.tm.internal.terminal.provisional.api.ISettingsStore;
+import org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl;
+import org.eclipse.tm.internal.terminal.provisional.api.Logger;
+import org.eclipse.tm.internal.terminal.provisional.api.NullSettingsStore;
+import org.eclipse.tm.internal.terminal.provisional.api.TerminalState;
+import org.eclipse.tm.internal.terminal.provisional.api.provider.TerminalConnectorImpl;
+
+public class TelnetConnector extends TerminalConnectorImpl {
+
+ static final class TelnetOutputStream extends FilterOutputStream {
+ final static byte CR = 13;
+ final static byte LF = 10;
+ final static byte NUL = 0;
+ final static byte[] CRNUL = { CR, NUL };
+ final static byte[] CRLF = { CR, LF };
+ final byte[] EOL;
+
+ public TelnetOutputStream(OutputStream outputStream, String endOfLine) {
+ super(outputStream);
+ if (ITelnetSettings.EOL_CRLF.equals(endOfLine))
+ EOL = CRLF;
+ else
+ EOL = CRNUL;
+ }
+
+ @Override
+ public void write(int b) throws IOException {
+ if (b == CR)
+ out.write(EOL);
+ else
+ out.write(b);
+ }
+ }
+
+ private OutputStream fOutputStream;
+ private InputStream fInputStream;
+ private Socket fSocket;
+ private TelnetConnection fTelnetConnection;
+ private final TelnetSettings fSettings;
+ private int fWidth = -1;
+ private int fHeight = -1;
+
+ public TelnetConnector() {
+ this(new TelnetSettings());
+ }
+
+ public TelnetConnector(TelnetSettings settings) {
+ fSettings = settings;
+ }
+
+ @Override
+ public void connect(ITerminalControl control) {
+ super.connect(control);
+ fWidth = -1;
+ fHeight = -1;
+ // TERM=xterm implies VT100 line wrapping mode
+ control.setVT100LineWrapping(true);
+ TelnetConnectWorker worker = new TelnetConnectWorker(this, control);
+ worker.start();
+ }
+
+ @Override
+ public void doDisconnect() {
+ if (getSocket() != null) {
+ try {
+ getSocket().close();
+ } catch (Exception exception) {
+ Logger.logException(exception);
+ }
+ }
+
+ if (getInputStream() != null) {
+ try {
+ getInputStream().close();
+ } catch (Exception exception) {
+ Logger.logException(exception);
+ }
+ }
+
+ if (getTerminalToRemoteStream() != null) {
+ try {
+ getTerminalToRemoteStream().close();
+ } catch (Exception exception) {
+ Logger.logException(exception);
+ }
+ }
+ cleanSocket();
+ }
+
+ @Override
+ public boolean isLocalEcho() {
+ if (fTelnetConnection == null)
+ return false;
+ return fTelnetConnection.localEcho();
+ }
+
+ @Override
+ public void setTerminalSize(int newWidth, int newHeight) {
+ if (fTelnetConnection != null && (newWidth != fWidth || newHeight != fHeight)) {
+ //avoid excessive communications due to change size requests by caching previous size
+ fTelnetConnection.setTerminalSize(newWidth, newHeight);
+ fWidth = newWidth;
+ fHeight = newHeight;
+ }
+ }
+
+ public InputStream getInputStream() {
+ return fInputStream;
+ }
+
+ @Override
+ public OutputStream getTerminalToRemoteStream() {
+ return fOutputStream;
+ }
+
+ private void setInputStream(InputStream inputStream) {
+ fInputStream = inputStream;
+ }
+
+ private void setOutputStream(OutputStream outputStream) {
+ if (outputStream == null) {
+ fOutputStream = null;
+ return;
+ }
+ // translate CR to telnet end-of-line sequence - RFC 854
+ fOutputStream = new TelnetOutputStream(outputStream, fSettings.getEndOfLine());
+ }
+
+ Socket getSocket() {
+ return fSocket;
+ }
+
+ /**
+ * sets the socket to null
+ */
+ void cleanSocket() {
+ fSocket = null;
+ setInputStream(null);
+ setOutputStream(null);
+ }
+
+ void setSocket(Socket socket) throws IOException {
+ if (socket == null) {
+ cleanSocket();
+ } else {
+ fSocket = socket;
+ setInputStream(socket.getInputStream());
+ setOutputStream(socket.getOutputStream());
+ }
+
+ }
+
+ public void setTelnetConnection(TelnetConnection connection) {
+ fTelnetConnection = connection;
+ }
+
+ public void displayTextInTerminal(String text) {
+ fControl.displayTextInTerminal(text);
+ }
+
+ public OutputStream getRemoteToTerminalOutputStream() {
+ return fControl.getRemoteToTerminalOutputStream();
+ }
+
+ public void setState(TerminalState state) {
+ fControl.setState(state);
+ }
+
+ public ITelnetSettings getTelnetSettings() {
+ return fSettings;
+ }
+
+ @Override
+ public void setDefaultSettings() {
+ fSettings.load(new NullSettingsStore());
+ }
+
+ @Override
+ public String getSettingsSummary() {
+ return fSettings.getSummary();
+ }
+
+ @Override
+ public void load(ISettingsStore store) {
+ fSettings.load(store);
+ }
+
+ @Override
+ public void save(ISettingsStore store) {
+ fSettings.save(store);
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetMessages.java b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetMessages.java
new file mode 100644
index 00000000000..b05c6f03e4e
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetMessages.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ * Martin Oberhuber (Wind River) - fixed copyright headers and beautified
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.telnet.connector;
+
+import org.eclipse.osgi.util.NLS;
+
+public class TelnetMessages extends NLS {
+ static {
+ NLS.initializeMessages(TelnetMessages.class.getName(), TelnetMessages.class);
+ }
+ public static String PORT;
+ public static String HOST;
+ public static String CONNECTION_CLOSED_BY_FOREIGN_HOST;
+ public static String TIMEOUT;
+ /**
+ * @since 4.2
+ */
+ public static String END_OF_LINE;
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetMessages.properties b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetMessages.properties
new file mode 100644
index 00000000000..561ee4237dc
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetMessages.properties
@@ -0,0 +1,23 @@
+###############################################################################
+# Copyright (c) 2005, 2018 Wind River Systems, Inc. and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Initial Contributors:
+# The following Wind River employees contributed to the Terminal component
+# that contains this file: Chris Thew, Fran Litterio, Stephen Lamb,
+# Helmut Haigermoser and Ted Williams.
+#
+# Contributors:
+# Michael Scharf (Wind River) - split into core, view and connector plugins
+# Martin Oberhuber (Wind River) - fixed copyright headers and beautified
+###############################################################################
+PORT = Port
+HOST = Host
+CONNECTION_CLOSED_BY_FOREIGN_HOST= Connection closed by foreign host.
+TIMEOUT = Timeout (sec)
+END_OF_LINE = End of Line \ No newline at end of file
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetOption.java b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetOption.java
new file mode 100644
index 00000000000..3889188dc38
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetOption.java
@@ -0,0 +1,686 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Initial Contributors:
+ * The following Wind River employees contributed to the Terminal component
+ * that contains this file: Chris Thew, Fran Litterio, Stephen Lamb,
+ * Helmut Haigermoser and Ted Williams.
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - split into core, view and connector plugins
+ * Martin Oberhuber (Wind River) - fixed copyright headers and beautified
+ * Martin Oberhuber (Wind River) - [267181] Fix telnet option negotiation loop
+ * Anton Leherbauer (Wind River) - [453393] Add support for copying wrapped lines without line break
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.telnet.connector;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.Date;
+
+import org.eclipse.tm.internal.terminal.provisional.api.Logger;
+
+/**
+ * This class represents a single TELNET protocol option at one endpoint of a TELNET
+ * connection. This class encapsulates the endpoint associated with the option (local
+ * or remote), the current state of the option (enabled or disabled), the desired state
+ * of the option, the current state of the negotiation, an OutputStream that allows
+ * communication with the remote endpoint, and the number of negotiations that have
+ * started within this connection. <p>
+ *
+ * In addition to encapsulating the above state, this class performs option negotiation
+ * to attempt to achieve the desired option state. For some options, this class also
+ * performs option sub-negotiation. <p>
+ *
+ * IMPORTANT: Understanding this code requires understanding the TELNET protocol and
+ * TELNET option processing. <p>
+ *
+ * @author Fran Litterio (francis.litterio@windriver.com)
+ */
+class TelnetOption implements TelnetCodes {
+ /**
+ * This array of Strings maps an integer TELNET option code value to the symbolic
+ * name of the option. Array elements of the form "?" represent unassigned option
+ * values.
+ */
+ protected static final String[] optionNames = { "BINARY", // 0 //$NON-NLS-1$
+ "ECHO", // 1 //$NON-NLS-1$
+ "RECONNECTION", // 2 //$NON-NLS-1$
+ "SUPPRESS GO AHEAD", // 3 //$NON-NLS-1$
+ "MSG SIZE NEGOTIATION", // 4 //$NON-NLS-1$
+ "STATUS", // 5 //$NON-NLS-1$
+ "TIMING MARK", // 6 //$NON-NLS-1$
+ "REMOTE CTRL TRANS+ECHO", // 7 //$NON-NLS-1$
+ "OUTPUT LINE WIDTH", // 8 //$NON-NLS-1$
+ "OUTPUT PAGE SIZE", // 9 //$NON-NLS-1$
+ "OUTPUT CR DISPOSITION", // 10 //$NON-NLS-1$
+ "OUTPUT HORIZ TABSTOPS", // 11 //$NON-NLS-1$
+ "OUTPUT HORIZ TAB DISPOSITION", // 12 //$NON-NLS-1$
+ "OUTPUT FORMFEED DISPOSITION", // 13 //$NON-NLS-1$
+ "OUTPUT VERTICAL TABSTOPS", // 14 //$NON-NLS-1$
+ "OUTPUT VT DISPOSITION", // 15 //$NON-NLS-1$
+ "OUTPUT LF DISPOSITION", // 16 //$NON-NLS-1$
+ "EXTENDED ASCII", // 17 //$NON-NLS-1$
+ "LOGOUT", // 18 //$NON-NLS-1$
+ "BYTE MACRO", // 19 //$NON-NLS-1$
+ "DATA ENTRY TERMINAL", // 20 //$NON-NLS-1$
+ "SUPDUP", // 21 //$NON-NLS-1$
+ "SUPDUP OUTPUT", // 22 //$NON-NLS-1$
+ "SEND LOCATION", // 23 //$NON-NLS-1$
+ "TERMINAL TYPE", // 24 //$NON-NLS-1$
+ "END OF RECORD", // 25 //$NON-NLS-1$
+ "TACACS USER IDENTIFICATION", // 26 //$NON-NLS-1$
+ "OUTPUT MARKING", // 27 //$NON-NLS-1$
+ "TERMINAL LOCATION NUMBER", // 28 //$NON-NLS-1$
+ "3270 REGIME", // 29 //$NON-NLS-1$
+ "X.3 PAD", // 30 //$NON-NLS-1$
+ "NEGOTIATE ABOUT WINDOW SIZE", // 31 //$NON-NLS-1$
+ "TERMINAL SPEED", // 32 //$NON-NLS-1$
+ "REMOTE FLOW CONTROL", // 33 //$NON-NLS-1$
+ "LINEMODE", // 34 //$NON-NLS-1$
+ "X DISPLAY LOCATION", // 35 //$NON-NLS-1$
+ "ENVIRONMENT OPTION", // 36 //$NON-NLS-1$
+ "AUTHENTICATION OPTION", // 37 //$NON-NLS-1$
+ "ENCRYPTION OPTION", // 38 //$NON-NLS-1$
+ "NEW ENVIRONMENT OPTION", // 39 //$NON-NLS-1$
+ "TN3270E", // 40 //$NON-NLS-1$
+ "XAUTH", // 41 //$NON-NLS-1$
+ "CHARSET", // 42 //$NON-NLS-1$
+ "REMOTE SERIAL PORT", // 43 //$NON-NLS-1$
+ "COM PORT CONTROL OPTION", // 44 //$NON-NLS-1$
+ "SUPPRESS LOCAL ECHO", // 45 //$NON-NLS-1$
+ "START TLS", // 46 //$NON-NLS-1$
+ "KERMIT", // 47 //$NON-NLS-1$
+ "SEND URL", // 48 //$NON-NLS-1$
+ "FORWARD X", // 49 //$NON-NLS-1$
+ "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", // 50 ... //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$
+ "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$
+ "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$
+ "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$
+ "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$
+ "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$
+ "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$
+ "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$
+ "?", "?", "?", "?", "?", "?", "?", // ... 137 //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$
+ "TELOPT PRAGMA LOGON", // 138 //$NON-NLS-1$
+ "TELOPT SSPI LOGON", // 139 //$NON-NLS-1$
+ "TELOPT PRAGMA HEARTBEAT", // 140 //$NON-NLS-1$
+ "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", // 141 ... //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$
+ "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$
+ "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$
+ "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$
+ "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$
+ "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$
+ "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$
+ "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$
+ "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$
+ "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$
+ "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$
+ "?", "?", "?", "?", // ... 254 //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+ "EXTENDED OPTIONS LIST" // 255 //$NON-NLS-1$
+ };
+
+ /**
+ * Negotiation state: Negotiation not yet started for this option. <p>
+ *
+ * This constant and the others having similar names represent the states of a
+ * finite state automaton (FSA) that tracks the negotiation state of this option.
+ * The initial state is NEGOTIATION_NOT_STARTED. The state machine is as follows
+ * (with transitions labeled with letters in parentheses): <p>
+ *
+ * <pre>
+ * NEGOTIATION_NOT_STARTED -----> {@link #NEGOTIATION_IN_PROGRESS}
+ * | (A) | ^
+ * (C)| (B)| |(D)
+ * | V |
+ * +--------> {@link #NEGOTIATION_DONE}
+ * </pre> <p>
+ *
+ * Once the FSA leaves state NEGOTIATION_NOT_STARTED, it never returns to that
+ * state. Transition A happens when the local endpoint sends an option command
+ * before receiving a command for the same option from the remote endpoint. <p>
+ *
+ * Transition B happens when the local endpoint receives a reply to an option
+ * command sent earlier by the local endpoint. Receipt of that reply terminates
+ * the negotiation. <p>
+ *
+ * Transition D happens after negotiation is done and "something changes" (see the
+ * RFCs for the definition of "something changes"). Either endpoint can
+ * re-negotiate an option after a previous negotiation, but only if some external
+ * influence (such as the user or the OS) causes it to do so. Re-negotiation must
+ * start more than {@link #NEGOTIATION_IGNORE_DURATION} milliseconds after the FSA
+ * enters state NEGOTIATION_DONE or it will be ignored. This is how this client
+ * prevents negotiation loops. <p>
+ *
+ * Transition C happens when the local endpoint receives an option command from the
+ * remote endpoint before sending a command for the same option. In that case, the
+ * local endpoint replies immediately with an option command and the negotiation
+ * terminates. <p>
+ *
+ * Some TELNET servers (e.g., the Solaris server), after sending WILL and receiving
+ * DONT, will reply with a superfluous WONT. Any such superfluous option command
+ * received from the remote endpoint while the option's FSA is in state
+ * {@link #NEGOTIATION_DONE} will be ignored by the local endpoint.
+ */
+ protected static final int NEGOTIATION_NOT_STARTED = 0;
+
+ /** Negotiation state: Negotiation is in progress for this option. */
+ protected static final int NEGOTIATION_IN_PROGRESS = 1;
+
+ /** Negotiation state: Negotiation has terminated for this option. */
+ protected static final int NEGOTIATION_DONE = 2;
+
+ /**
+ * The number of milliseconds following the end of negotiation of this option
+ * before which the remote endpoint can re-negotiate the option. Any option
+ * command received from the remote endpoint before this time passes is ignored.
+ * This is used to prevent option negotiation loops.
+ *
+ * @see #ignoreNegotiation()
+ * @see #negotiationCompletionTime
+ */
+ protected static final int NEGOTIATION_IGNORE_DURATION = 30000;
+
+ /**
+ * This field holds the current negotiation state for this option.
+ */
+ protected int negotiationState = NEGOTIATION_NOT_STARTED;
+
+ /**
+ * This field holds the time when negotiation of this option most recently
+ * terminated (i.e., entered state {@link #NEGOTIATION_DONE}). This is used to
+ * determine whether an option command received from the remote endpoint after
+ * negotiation has terminated for this option is to be ignored or interpreted as
+ * the start of a new negotiation.
+ *
+ * @see #NEGOTIATION_IGNORE_DURATION
+ */
+ protected Date negotiationCompletionTime = new Date(0);
+
+ /**
+ * Holds the total number of negotiations that have completed for this option.
+ */
+ protected int negotiationCount = 0;
+
+ /**
+ * Holds the integer code representing the option.
+ */
+ protected byte option = 0;
+
+ /**
+ * Holds the OutputStream object that allows data to be sent to the remote endpoint
+ * of the TELNET connection.
+ */
+ protected OutputStream outputStream;
+
+ /**
+ * True if this option is for the local endpoint, false for the remote endpoint.
+ */
+ protected boolean local = true;
+
+ /**
+ * This field is true if the option is enabled, false if it is disabled. All
+ * options are initially disabled until they are negotiated to be enabled. <p>
+ */
+ protected boolean enabled = false;
+
+ /**
+ * This field is true if the client desires the option to be enabled, false if the
+ * client desires the option to be disabled. This field does not represent the
+ * remote's endpoints desire (as expressed via WILL and WONT commands) -- it
+ * represnet the local endpoint's desire. <p>
+ *
+ * @see #setDesired(boolean)
+ */
+ protected boolean desired = false;
+
+ /**
+ * Constructor. <p>
+ *
+ * @param option The integer code of this option.
+ * @param desired Whether we desire this option to be enabled.
+ * @param local Whether this option is for the local or remote endpoint.
+ * @param outputStream A stream used to negotiate with the remote endpoint.
+ */
+ TelnetOption(byte option, boolean desired, boolean local, OutputStream outputStream) {
+ this.option = option;
+ this.desired = desired;
+ this.local = local;
+ this.outputStream = outputStream;
+ }
+
+ /**
+ * @return Returns a String containing the name of the TELNET option specified in
+ * parameter <i>option</i>.
+ */
+ public String optionName() {
+ return optionNames[option & 0xFF];
+ }
+
+ /**
+ * Returns true if this option is enabled, false if it is disabled. <p>
+ *
+ * @return Returns true if this option is enabled, false if it is disabled.
+ */
+ public boolean isEnabled() {
+ return enabled;
+ }
+
+ /**
+ * Enables this option if <i>newValue</i> is true, otherwise disables this
+ * option. <p>
+ *
+ * @param newValue True if this option is to be enabled, false otherwise.
+ */
+ public void setEnabled(boolean newValue) {
+ Logger.log("Enabling " + (local ? "local" : "remote") + " option " + //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+ optionName());
+ enabled = newValue;
+ }
+
+ /**
+ * Returns true if the local endpoint desires this option to be enabled, false if
+ * not. It is not an error for the value returned by this method to differ from
+ * the value returned by isEnabled(). The value returned by this method can change
+ * over time, reflecting the local endpoint's changing desire regarding the
+ * option. <p>
+ *
+ * NOTE: Even if this option represents a remote endpoint option, the return value
+ * of this method represents the local endpint's desire regarding the remote
+ * option. <p>
+ *
+ * @return Returns true if the local endpoint desires this option to be enabled,
+ * false if not.
+ */
+ public boolean isDesired() {
+ return desired;
+ }
+
+ /**
+ * Sets our desired value for this option. Note that the option can be desired
+ * when <i>enabled</i> is false, and the option can be undesired when
+ * <i>enabled</i> is true, though the latter state should not persist, since either
+ * endpoint can disable any option at any time. <p>
+ *
+ * @param newValue True if we desire this option to be enabled, false if
+ * we desire this option to be disabled.
+ */
+ public void setDesired(boolean newValue) {
+ if (newValue)
+ Logger.log("Setting " + (local ? "local" : "remote") + " option " + //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+ optionName() + " as desired."); //$NON-NLS-1$
+
+ desired = newValue;
+ }
+
+ /**
+ * Call this method to request that negotiation begin for this option. This method
+ * does nothing if negotiation for this option has already started or is already
+ * complete. If negotiation has not yet started for this option and the local
+ * endpoint desires this option to be enabled, then we send a WILL or DO command to
+ * the remote endpoint.
+ */
+ public void negotiate() {
+ if (negotiationState == NEGOTIATION_NOT_STARTED && desired) {
+ if (local) {
+ Logger.log("Starting negotiation for local option " + optionName()); //$NON-NLS-1$
+ sendWill();
+ } else {
+ Logger.log("Starting negotiation for remote option " + optionName()); //$NON-NLS-1$
+ sendDo();
+ }
+
+ negotiationState = NEGOTIATION_IN_PROGRESS;
+ }
+ }
+
+ /**
+ * This method is called whenever we receive a WILL command from the remote
+ * endpoint.
+ */
+ public void handleWill() {
+ if (negotiationState == NEGOTIATION_DONE && ignoreNegotiation()) {
+ Logger.log("Ignoring superfluous WILL command from remote endpoint."); //$NON-NLS-1$
+ return;
+ }
+
+ if (negotiationState == NEGOTIATION_IN_PROGRESS) {
+ if (desired) {
+ // We sent DO and server replied with WILL. Enable the option, and end
+ // this negotiation.
+
+ enabled = true;
+ Logger.log("Enabling remote option " + optionName() + "."); //$NON-NLS-1$ //$NON-NLS-2$
+ endNegotiation();
+ } else {
+ // This should never happen! We sent DONT and the server replied with
+ // WILL. Bad server. No soup for you. Disable the option, and end
+ // this negotiation.
+
+ Logger.log("Server answered DONT with WILL!"); //$NON-NLS-1$
+ enabled = false;
+ Logger.log("Disabling remote option " + optionName() + "."); //$NON-NLS-1$ //$NON-NLS-2$
+ endNegotiation();
+ }
+ } else {
+ if (desired) {
+ // Server sent WILL, so we reply with DO. Enable the option, and end
+ // this negotiation.
+
+ sendDo();
+ enabled = true;
+ Logger.log("Enabling remote option " + optionName() + "."); //$NON-NLS-1$ //$NON-NLS-2$
+ endNegotiation();
+ } else {
+ // Server sent WILL, so we reply with DONT. Disable the option, and
+ // end this negotiation.
+
+ sendDont();
+ enabled = false;
+ Logger.log("Disabling remote option " + optionName() + "."); //$NON-NLS-1$ //$NON-NLS-2$
+ endNegotiation();
+ }
+ }
+ }
+
+ /**
+ * Handles a WONT command sent by the remote endpoint for this option. The value
+ * of <i>desired</i> doesn't matter in this method, because the remote endpoint is
+ * forcing the option to be disabled.
+ */
+ public void handleWont() {
+ if (negotiationState == NEGOTIATION_DONE && ignoreNegotiation()) {
+ Logger.log("Ignoring superfluous WONT command from remote endpoint."); //$NON-NLS-1$
+ return;
+ }
+
+ if (negotiationState == NEGOTIATION_IN_PROGRESS) {
+ // We sent DO or DONT and server replied with WONT. Disable the
+ // option, and end this negotiation.
+
+ enabled = false;
+ Logger.log("Disabling remote option " + optionName() + "."); //$NON-NLS-1$ //$NON-NLS-2$
+ endNegotiation();
+ } else {
+ // Server sent WONT, so we reply with DONT. Disable the option, and
+ // end this negotiation.
+
+ sendDont();
+ enabled = false;
+ Logger.log("Disabling remote option " + optionName() + "."); //$NON-NLS-1$ //$NON-NLS-2$
+ endNegotiation();
+ }
+ }
+
+ /**
+ * Handles a DO command sent by the remote endpoint for this option.
+ */
+ public void handleDo() {
+ if (negotiationState == NEGOTIATION_DONE && ignoreNegotiation()) {
+ Logger.log("Ignoring superfluous DO command from remote endpoint."); //$NON-NLS-1$
+ return;
+ }
+
+ if (negotiationState == NEGOTIATION_IN_PROGRESS) {
+ if (desired) {
+ // We sent WILL and server replied with DO. Enable the option, and end
+ // this negotiation.
+
+ enabled = true;
+ Logger.log("Enabling local option " + optionName() + "."); //$NON-NLS-1$ //$NON-NLS-2$
+ endNegotiation();
+ } else {
+ // We sent WONT and server replied with DO. This should never happen!
+ // Bad server. No soup for you. Disable the option, and end this
+ // negotiation.
+
+ Logger.log("Server answered WONT with DO!"); //$NON-NLS-1$
+ enabled = false;
+ Logger.log("Disabling local option " + optionName() + "."); //$NON-NLS-1$ //$NON-NLS-2$
+ endNegotiation();
+ }
+ } else {
+ if (desired) {
+ // Server sent DO, so we reply with WILL. Enable the option, and end
+ // this negotiation.
+
+ sendWill();
+ enabled = true;
+ Logger.log("Enabling local option " + optionName() + "."); //$NON-NLS-1$ //$NON-NLS-2$
+ endNegotiation();
+ } else {
+ // Server sent DO, so we reply with WONT. Disable the option, and end
+ // this negotiation.
+
+ sendWont();
+ enabled = false;
+ Logger.log("Disabling local option " + optionName() + "."); //$NON-NLS-1$ //$NON-NLS-2$
+ endNegotiation();
+ }
+ }
+ }
+
+ /**
+ * Handles a DONT command sent by the remote endpoint for this option. The value
+ * of <i>desired</i> doesn't matter in this method, because the remote endpoint is
+ * forcing the option to be disabled.
+ */
+ public void handleDont() {
+ if (negotiationState == NEGOTIATION_DONE && ignoreNegotiation()) {
+ Logger.log("Ignoring superfluous DONT command from remote endpoint."); //$NON-NLS-1$
+ return;
+ }
+
+ if (negotiationState == NEGOTIATION_IN_PROGRESS) {
+ // We sent WILL or WONT and server replied with DONT. Disable the
+ // option, and end this negotiation.
+
+ enabled = false;
+ Logger.log("Disabling local option " + optionName() + "."); //$NON-NLS-1$ //$NON-NLS-2$
+ endNegotiation();
+ } else {
+ // Server sent DONT, so we reply with WONT. Disable the option, and end
+ // this negotiation.
+
+ sendWont();
+ enabled = false;
+ Logger.log("Disabling local option " + optionName() + "."); //$NON-NLS-1$ //$NON-NLS-2$
+ endNegotiation();
+ }
+ }
+
+ /**
+ * This method handles a subnegotiation command received from the remote endpoint.
+ * Currently, the only subnegotiation we handle is when the remote endpoint
+ * commands us to send our terminal type (which is "xterm").
+ *
+ * @param subnegotiationData An array of bytes containing a TELNET
+ * subnegotiation command received from the
+ * remote endpoint.
+ * @param count The number of bytes in array
+ * subnegotiationData to examine.
+ */
+ public void handleSubnegotiation(byte[] subnegotiationData, int count) {
+ switch (option) {
+ case TELNET_OPTION_TERMINAL_TYPE:
+ if (subnegotiationData[1] != TELNET_SEND) {
+ // This should never happen!
+ Logger.log("Invalid TERMINAL-TYPE subnegotiation command from remote endpoint: " + //$NON-NLS-1$
+ (subnegotiationData[1] & 0xff));
+ break;
+ }
+
+ // Tell the remote endpoint our terminal type is "xterm" using this sequence
+ // of TELNET protocol bytes:
+ //
+ // IAC SB TERMINAL-TYPE IS x t e r m IAC SE
+
+ byte[] terminalTypeData = { TELNET_IAC, TELNET_SB, TELNET_OPTION_TERMINAL_TYPE, TELNET_IS, (byte) 'x',
+ (byte) 't', (byte) 'e', (byte) 'r', (byte) 'm', TELNET_IAC, TELNET_SE };
+
+ try {
+ outputStream.write(terminalTypeData);
+ } catch (IOException ex) {
+ Logger.log("IOException sending TERMINAL-TYPE subnegotiation!"); //$NON-NLS-1$
+ Logger.logException(ex);
+ }
+ break;
+
+ default:
+ // This should never happen!
+ Logger.log("SHOULD NOT BE REACHED: Called for option " + optionName()); //$NON-NLS-1$
+ break;
+ }
+ }
+
+ /**
+ * This method sends a subnegotiation command to the remote endpoint.
+ *
+ * @param subnegotiationData An array of Objects holding data to be used
+ * when generating the outbound subnegotiation
+ * command.
+ */
+ public void sendSubnegotiation(Object[] subnegotiationData) {
+ switch (option) {
+ case TELNET_OPTION_NAWS:
+ // Get the width and height of the view and send it to the remote
+ // endpoint using this sequence of TELNET protocol bytes:
+ //
+ // IAC SB NAWS <width-highbyte> <width-lowbyte> <height-highbyte>
+ // <height-lowbyte> IAC SE
+
+ final byte[] NAWSData = { TELNET_IAC, TELNET_SB, TELNET_OPTION_NAWS, 0, 0, 0, 0, TELNET_IAC, TELNET_SE };
+ int width = ((Integer) subnegotiationData[0]).intValue();
+ int height = ((Integer) subnegotiationData[1]).intValue();
+
+ NAWSData[3] = (byte) ((width >>> 8) & 0xff); // High order byte of width.
+ NAWSData[4] = (byte) (width & 0xff); // Low order byte of width.
+ NAWSData[5] = (byte) ((height >>> 8) & 0xff); // High order byte of height.
+ NAWSData[6] = (byte) (height & 0xff); // Low order byte of height.
+
+ Logger.log("sending terminal size to remote endpoint: width = " + width + //$NON-NLS-1$
+ ", height = " + height + "."); //$NON-NLS-1$ //$NON-NLS-2$
+
+ // Send the NAWS data in a new thread. The current thread is the display
+ // thread, and calls to write() can block, but blocking the display thread
+ // is _bad_ (it hangs the GUI).
+
+ Thread t = new Thread() {
+ @Override
+ public void run() {
+ try {
+ outputStream.write(NAWSData);
+ } catch (IOException ex) {
+ Logger.log("IOException sending NAWS subnegotiation!"); //$NON-NLS-1$
+ Logger.logException(ex);
+ }
+ }
+ };
+ t.setDaemon(true);
+ t.start();
+ break;
+
+ default:
+ // This should never happen!
+ Logger.log("SHOULD NOT BE REACHED: Called for option " + optionName()); //$NON-NLS-1$
+ break;
+ }
+ }
+
+ /**
+ * This method returns true if there has not yet been any negotiation of this
+ * option.
+ *
+ * @return Returns true if there has not yet been any negotiation of this option.
+ */
+ protected boolean notYetNegotiated() {
+ return negotiationState == NEGOTIATION_NOT_STARTED;
+ }
+
+ /**
+ * This method terminates the current negotiation and records the time at which the
+ * negotiation terminated.
+ */
+ protected void endNegotiation() {
+ Logger.log("Ending negotiation #" + negotiationCount + " for " + //$NON-NLS-1$ //$NON-NLS-2$
+ (local ? "local" : "remote") + " option " + optionName()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ negotiationState = NEGOTIATION_DONE;
+ negotiationCompletionTime.setTime(System.currentTimeMillis());
+ ++negotiationCount;
+ }
+
+ /**
+ * This method determines whether or not to ignore what appears to be a new
+ * negotiation initiated by the remote endpoint. This is needed because some
+ * TELNET servers send superfluous option commands that a naive client might
+ * interpret as the start of a new negotiation. If the superfluous command is not
+ * ignored, an option negotiation loop can result (which is bad). For details
+ * about the superfluous commands sent by some servers, see the documentation for
+ * {@link #NEGOTIATION_NOT_STARTED}. <p>
+ *
+ * The current implementation of this method returns true if the new negotiation
+ * starts within NEGOTIATION_IGNORE_DURATION seconds of the end of the previous
+ * negotiation of this option. <p>
+ *
+ * @return Returns true if the new negotiation should be ignored, false if not.
+ */
+ protected boolean ignoreNegotiation() {
+ return (System.currentTimeMillis() - negotiationCompletionTime.getTime()) < NEGOTIATION_IGNORE_DURATION;
+ }
+
+ /**
+ * Sends a DO command to the remote endpoint for this option.
+ */
+ protected void sendDo() {
+ Logger.log("Sending DO " + optionName()); //$NON-NLS-1$
+ sendCommand(TELNET_DO);
+ }
+
+ /**
+ * Sends a DONT command to the remote endpoint for this option.
+ */
+ protected void sendDont() {
+ Logger.log("Sending DONT " + optionName()); //$NON-NLS-1$
+ sendCommand(TELNET_DONT);
+ }
+
+ /**
+ * Sends a WILL command to the remote endpoint for this option.
+ */
+ protected void sendWill() {
+ Logger.log("Sending WILL " + optionName()); //$NON-NLS-1$
+ sendCommand(TELNET_WILL);
+ }
+
+ /**
+ * Sends a WONT command to the remote endpoint for this option.
+ */
+ protected void sendWont() {
+ Logger.log("Sending WONT " + optionName()); //$NON-NLS-1$
+ sendCommand(TELNET_WONT);
+ }
+
+ /**
+ * This method sends a WILL/WONT/DO/DONT command to the remote endpoint for this
+ * option.
+ */
+ protected void sendCommand(byte command) {
+ byte[] data = { TELNET_IAC, 0, 0 };
+
+ data[1] = command;
+ data[2] = option;
+
+ try {
+ outputStream.write(data);
+ } catch (IOException ex) {
+ Logger.log("IOException sending command " + command); //$NON-NLS-1$
+ Logger.logException(ex);
+ }
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetProperties.java b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetProperties.java
new file mode 100644
index 00000000000..c96d7455845
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetProperties.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Initial Contributors:
+ * The following Wind River employees contributed to the Terminal component
+ * that contains this file: Chris Thew, Fran Litterio, Stephen Lamb,
+ * Helmut Haigermoser and Ted Williams.
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - extracted from TerminalProperties
+ * Martin Oberhuber (Wind River) - fixed copyright headers and beautified
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.telnet.connector;
+
+public class TelnetProperties {
+ private final NetworkPortMap fNetworkPortMap;
+ private final String fDefaultHost;
+ private final String fDefaultNetworkPort;
+
+ public TelnetProperties() {
+ fNetworkPortMap = new NetworkPortMap();
+ fDefaultNetworkPort = fNetworkPortMap.getDefaultNetworkPort();
+ fDefaultHost = ""; //$NON-NLS-1$
+ }
+
+ public String getDefaultHost() {
+ return fDefaultHost;
+ }
+
+ public String getDefaultNetworkPort() {
+ return fDefaultNetworkPort;
+ }
+
+ public NetworkPortMap getNetworkPortMap() {
+ // TODO Auto-generated method stub
+ return fNetworkPortMap;
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetSettings.java b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetSettings.java
new file mode 100644
index 00000000000..4ecf960ea5c
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetSettings.java
@@ -0,0 +1,109 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Initial Contributors:
+ * The following Wind River employees contributed to the Terminal component
+ * that contains this file: Chris Thew, Fran Litterio, Stephen Lamb,
+ * Helmut Haigermoser and Ted Williams.
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - extracted from TerminalSettings
+ * Martin Oberhuber (Wind River) - fixed copyright headers and beautified
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.telnet.connector;
+
+import org.eclipse.tm.internal.terminal.provisional.api.ISettingsStore;
+
+/**
+ * @noreference This class is not intended to be referenced by clients.
+ */
+public class TelnetSettings implements ITelnetSettings {
+ protected String fHost;
+ protected String fNetworkPort;
+ protected String fTimeout;
+ protected String fEndOfLine = EOL_CRNUL;
+ private final TelnetProperties fProperties = new TelnetProperties();
+
+ @Override
+ public String getHost() {
+ return fHost;
+ }
+
+ public void setHost(String strHost) {
+ fHost = strHost;
+ }
+
+ public String getNetworkPortString() {
+ return fNetworkPort;
+ }
+
+ @Override
+ public int getNetworkPort() {
+ try {
+ return Integer.parseInt(fNetworkPort);
+ } catch (NumberFormatException numberFormatException) {
+ return 1313;
+ }
+ }
+
+ public void setNetworkPort(String strNetworkPort) {
+ fNetworkPort = strNetworkPort;
+ }
+
+ @Override
+ public String getSummary() {
+ return getHost() + ":" + getNetworkPortString(); //$NON-NLS-1$
+ }
+
+ @Override
+ public void load(ISettingsStore store) {
+ fHost = store.get("Host", fProperties.getDefaultHost());//$NON-NLS-1$
+ fNetworkPort = store.get("NetworkPort", fProperties.getDefaultNetworkPort());//$NON-NLS-1$
+ fTimeout = store.get("Timeout", "10");//$NON-NLS-1$ //$NON-NLS-2$
+ fEndOfLine = store.get("EndOfLine", EOL_CRNUL);//$NON-NLS-1$
+ }
+
+ @Override
+ public void save(ISettingsStore store) {
+ store.put("Host", fHost);//$NON-NLS-1$
+ store.put("NetworkPort", fNetworkPort);//$NON-NLS-1$
+ store.put("Timeout", fTimeout);//$NON-NLS-1$
+ store.put("EndOfLine", fEndOfLine);//$NON-NLS-1$
+ }
+
+ public TelnetProperties getProperties() {
+ return fProperties;
+ }
+
+ @Override
+ public int getTimeout() {
+ try {
+ return Integer.parseInt(fTimeout);
+ } catch (NumberFormatException numberFormatException) {
+ return 10;
+ }
+ }
+
+ public String getTimeoutString() {
+ return fTimeout;
+ }
+
+ public void setTimeout(String timeout) {
+ fTimeout = timeout;
+ }
+
+ public void setEndOfLine(String eol) {
+ fEndOfLine = EOL_CRLF.equals(eol) ? EOL_CRLF : EOL_CRNUL;
+ }
+
+ @Override
+ public String getEndOfLine() {
+ return fEndOfLine;
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetSettingsPage.java b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetSettingsPage.java
new file mode 100644
index 00000000000..435a4f1296c
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetSettingsPage.java
@@ -0,0 +1,248 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Initial Contributors:
+ * The following Wind River employees contributed to the Terminal component
+ * that contains this file: Chris Thew, Fran Litterio, Stephen Lamb,
+ * Helmut Haigermoser and Ted Williams.
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - extracted from TerminalSettingsDlg
+ * Martin Oberhuber (Wind River) - fixed copyright headers and beautified
+ * Martin Oberhuber (Wind River) - [206917] Add validation for Terminal Settings
+ * Martin Oberhuber (Wind River) - [401476] Strip whitespace around Telnet Port
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.telnet.connector;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.jface.dialogs.IMessageProvider;
+import org.eclipse.jface.fieldassist.FieldDecorationRegistry;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.tm.internal.terminal.provisional.api.AbstractSettingsPage;
+
+public class TelnetSettingsPage extends AbstractSettingsPage {
+ /* default */ Text fHostText;
+ /* default */ Combo fNetworkPortCombo;
+ /* default */ Text fTimeout;
+ /* default */ Combo fEndOfLineCombo;
+ private final TelnetSettings fTerminalSettings;
+
+ public TelnetSettingsPage(TelnetSettings settings) {
+ fTerminalSettings = settings;
+ }
+
+ @Override
+ public void saveSettings() {
+ fTerminalSettings.setHost(fHostText.getText());
+ fTerminalSettings.setTimeout(fTimeout.getText());
+ fTerminalSettings.setNetworkPort(getNetworkPort());
+ fTerminalSettings.setEndOfLine(getEndOfLine());
+ }
+
+ @Override
+ public void loadSettings() {
+ if (fTerminalSettings != null) {
+ setHost(fTerminalSettings.getHost());
+ setTimeout(fTerminalSettings.getTimeoutString());
+ setNetworkPort(fTerminalSettings.getNetworkPortString());
+ setEndOfLine(fTerminalSettings.getEndOfLine());
+ }
+ }
+
+ private void setHost(String strHost) {
+ if (strHost == null)
+ strHost = ""; //$NON-NLS-1$
+ fHostText.setText(strHost);
+
+ }
+
+ private void setTimeout(String timeout) {
+ if (timeout == null || timeout.length() == 0)
+ timeout = "5"; //$NON-NLS-1$
+ fTimeout.setText(timeout);
+
+ }
+
+ private void setNetworkPort(String strNetworkPort) {
+ if (strNetworkPort != null) {
+ String strPortName = getNetworkPortMap().findPortName(strNetworkPort);
+ if (strPortName == null) {
+ strPortName = strNetworkPort; //fallback to verbatim port if not found
+ }
+ int nIndex = fNetworkPortCombo.indexOf(strPortName);
+
+ if (nIndex == -1) {
+ fNetworkPortCombo.setText(strNetworkPort);
+ } else {
+ fNetworkPortCombo.select(nIndex);
+ }
+ }
+ }
+
+ private String getNetworkPort() {
+ String portText = fNetworkPortCombo.getText().trim();
+ String mappedPort = getNetworkPortMap().findPort(portText);
+ return mappedPort != null ? mappedPort : portText;
+ }
+
+ private NetworkPortMap getNetworkPortMap() {
+ return fTerminalSettings.getProperties().getNetworkPortMap();
+ }
+
+ private void setEndOfLine(String eol) {
+ int idx = fEndOfLineCombo.indexOf(eol);
+ fEndOfLineCombo.select(idx >= 0 ? idx : 0);
+ }
+
+ private String getEndOfLine() {
+ return fEndOfLineCombo.getText();
+ }
+
+ @Override
+ public boolean validateSettings() {
+ String message = null;
+ int messageType = IMessageProvider.NONE;
+ boolean valid = true;
+
+ if (fHostText.getText().trim().length() == 0) {
+ String m = "Please enter a host IP or name."; //$NON-NLS-1$
+ int mt = IMessageProvider.INFORMATION;
+ updateControlDecoration(fHostText, m, mt);
+ if (mt > messageType) {
+ message = m;
+ messageType = mt;
+ }
+
+ valid = false;
+ } else {
+ updateControlDecoration(fHostText, null, IMessageProvider.NONE);
+ }
+
+ try {
+ int p = Integer.parseInt(getNetworkPort());
+ if (p <= 0 || p > 65535) {
+ String m = "Invalid network port. Must be between 0 and 65535."; //$NON-NLS-1$
+ int mt = IMessageProvider.ERROR;
+ updateControlDecoration(fNetworkPortCombo, m, mt);
+ if (mt > messageType) {
+ message = m;
+ messageType = mt;
+ }
+
+ valid = false;
+ } else {
+ updateControlDecoration(fNetworkPortCombo, null, IMessageProvider.NONE);
+ }
+
+ p = Integer.parseInt(fTimeout.getText().trim());
+ if (p < 0) {
+ String m = "Invalid timeout. Must be greater than 0."; //$NON-NLS-1$
+ int mt = IMessageProvider.ERROR;
+ updateControlDecoration(fTimeout, m, mt);
+ if (mt > messageType) {
+ message = m;
+ messageType = mt;
+ }
+
+ valid = false;
+ } else {
+ updateControlDecoration(fTimeout, null, IMessageProvider.NONE);
+ }
+
+ } catch (Exception e) {
+ valid = false;
+ }
+
+ setMessage(message, messageType);
+ return valid;
+ }
+
+ @Override
+ public void createControl(Composite parent) {
+ Composite composite = new Composite(parent, SWT.NONE);
+ GridLayout gridLayout = new GridLayout(2, false);
+ GridData gridData = new GridData(GridData.FILL_HORIZONTAL);
+ gridData.horizontalIndent = FieldDecorationRegistry.getDefault().getMaximumDecorationWidth();
+
+ composite.setLayout(gridLayout);
+ composite.setLayoutData(gridData);
+
+ // Add label
+ Label ctlLabel = new Label(composite, SWT.RIGHT);
+ ctlLabel.setText(TelnetMessages.HOST + ":"); //$NON-NLS-1$
+
+ // Add control
+ gridData = new GridData(GridData.FILL_HORIZONTAL);
+ fHostText = new Text(composite, SWT.BORDER);
+ fHostText.setLayoutData(gridData);
+ fHostText.addModifyListener(e -> fireListeners(fHostText));
+ createControlDecoration(fHostText);
+
+ // Add label
+ ctlLabel = new Label(composite, SWT.RIGHT);
+ ctlLabel.setText(TelnetMessages.PORT + ":"); //$NON-NLS-1$
+
+ // Add control
+ gridData = new GridData(GridData.FILL_HORIZONTAL);
+ fNetworkPortCombo = new Combo(composite, SWT.DROP_DOWN);
+ fNetworkPortCombo.setLayoutData(gridData);
+ fNetworkPortCombo.addModifyListener(e -> fireListeners(fNetworkPortCombo));
+ fNetworkPortCombo.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ fireListeners(fNetworkPortCombo);
+ }
+ });
+ createControlDecoration(fNetworkPortCombo);
+
+ List<String> table = getNetworkPortMap().getNameTable();
+ Collections.sort(table);
+ loadCombo(fNetworkPortCombo, table);
+
+ new Label(composite, SWT.RIGHT).setText(TelnetMessages.TIMEOUT + ":"); //$NON-NLS-1$
+ fTimeout = new Text(composite, SWT.BORDER);
+ fTimeout.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ fTimeout.addModifyListener(e -> fireListeners(fTimeout));
+ createControlDecoration(fTimeout);
+
+ new Label(composite, SWT.RIGHT).setText(TelnetMessages.END_OF_LINE + ":"); //$NON-NLS-1$
+ gridData = new GridData(GridData.FILL_HORIZONTAL);
+ fEndOfLineCombo = new Combo(composite, SWT.DROP_DOWN | SWT.READ_ONLY);
+ fEndOfLineCombo.setLayoutData(gridData);
+ fEndOfLineCombo.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ fireListeners(fEndOfLineCombo);
+ }
+ });
+ loadCombo(fEndOfLineCombo, Arrays.asList(ITelnetSettings.EOL_CRNUL, ITelnetSettings.EOL_CRLF));
+
+ loadSettings();
+ }
+
+ private void loadCombo(Combo ctlCombo, List<String> table) {
+ for (Iterator<String> iter = table.iterator(); iter.hasNext();) {
+ String label = iter.next();
+ ctlCombo.add(label);
+ }
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/controls/TelnetWizardConfigurationPanel.java b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/controls/TelnetWizardConfigurationPanel.java
new file mode 100644
index 00000000000..9a968fd1a4d
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/controls/TelnetWizardConfigurationPanel.java
@@ -0,0 +1,202 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ * Max Weninger (Wind River) - [366374] [TERMINALS][TELNET] Add Telnet terminal support
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.telnet.controls;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.jface.dialogs.IDialogSettings;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.tm.internal.terminal.provisional.api.AbstractSettingsPage;
+import org.eclipse.tm.internal.terminal.provisional.api.ISettingsPage;
+import org.eclipse.tm.terminal.connector.telnet.connector.NetworkPortMap;
+import org.eclipse.tm.terminal.connector.telnet.connector.TelnetConnector;
+import org.eclipse.tm.terminal.connector.telnet.connector.TelnetSettings;
+import org.eclipse.tm.terminal.connector.telnet.connector.TelnetSettingsPage;
+import org.eclipse.tm.terminal.view.core.interfaces.constants.ITerminalsConnectorConstants;
+import org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanelContainer;
+import org.eclipse.tm.terminal.view.ui.panels.AbstractExtendedConfigurationPanel;
+
+/**
+ * telnet wizard configuration panel implementation.
+ */
+public class TelnetWizardConfigurationPanel extends AbstractExtendedConfigurationPanel {
+
+ public TelnetSettings telnetSettings;
+ private ISettingsPage telnetSettingsPage;
+
+ /**
+ * Constructor.
+ *
+ * @param container The configuration panel container or <code>null</code>.
+ */
+ public TelnetWizardConfigurationPanel(IConfigurationPanelContainer container) {
+ super(container);
+ }
+
+ @Override
+ public void setupPanel(Composite parent) {
+ Composite panel = new Composite(parent, SWT.NONE);
+ panel.setLayout(new GridLayout());
+ GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);
+ panel.setLayoutData(data);
+
+ // Create the host selection combo
+ if (isWithoutSelection())
+ createHostsUI(panel, true);
+
+ TelnetConnector conn = new TelnetConnector();
+ telnetSettings = (TelnetSettings) conn.getTelnetSettings();
+ telnetSettings.setHost(getSelectionHost());
+ // MWE otherwise we don't get a valid default selection of the combo
+ telnetSettings.setNetworkPort(NetworkPortMap.PROP_VALUETELNET);
+
+ telnetSettingsPage = new TelnetSettingsPage(telnetSettings);
+ if (telnetSettingsPage instanceof AbstractSettingsPage) {
+ ((AbstractSettingsPage) telnetSettingsPage).setHasControlDecoration(true);
+ }
+ telnetSettingsPage.createControl(panel);
+
+ // Add the listener to the settings page
+ telnetSettingsPage.addListener(control -> {
+ if (getContainer() != null)
+ getContainer().validate();
+ });
+
+ // Create the encoding selection combo
+ createEncodingUI(panel, true);
+
+ setControl(panel);
+ }
+
+ @Override
+ public void setupData(Map<String, Object> data) {
+ if (data == null || telnetSettings == null || telnetSettingsPage == null)
+ return;
+
+ String value = (String) data.get(ITerminalsConnectorConstants.PROP_IP_HOST);
+ if (value != null)
+ telnetSettings.setHost(value);
+
+ Object v = data.get(ITerminalsConnectorConstants.PROP_IP_PORT);
+ value = v != null ? v.toString() : null;
+ if (value != null)
+ telnetSettings.setNetworkPort(value);
+
+ v = data.get(ITerminalsConnectorConstants.PROP_TIMEOUT);
+ value = v != null ? v.toString() : null;
+ if (value != null)
+ telnetSettings.setTimeout(value);
+
+ v = data.get(ITerminalsConnectorConstants.PROP_TELNET_EOL);
+ value = v != null ? v.toString() : null;
+ if (value != null)
+ telnetSettings.setEndOfLine(value);
+
+ value = (String) data.get(ITerminalsConnectorConstants.PROP_ENCODING);
+ if (value != null)
+ setEncoding(value);
+
+ telnetSettingsPage.loadSettings();
+ }
+
+ @Override
+ public void extractData(Map<String, Object> data) {
+ if (data == null)
+ return;
+
+ // set the terminal connector id for ssh
+ data.put(ITerminalsConnectorConstants.PROP_TERMINAL_CONNECTOR_ID,
+ "org.eclipse.tm.terminal.connector.telnet.TelnetConnector"); //$NON-NLS-1$
+
+ telnetSettingsPage.saveSettings();
+ data.put(ITerminalsConnectorConstants.PROP_IP_HOST, telnetSettings.getHost());
+ data.put(ITerminalsConnectorConstants.PROP_IP_PORT, Integer.valueOf(telnetSettings.getNetworkPort()));
+ data.put(ITerminalsConnectorConstants.PROP_TIMEOUT, Integer.valueOf(telnetSettings.getTimeout()));
+ data.put(ITerminalsConnectorConstants.PROP_TELNET_EOL, telnetSettings.getEndOfLine());
+ data.put(ITerminalsConnectorConstants.PROP_ENCODING, getEncoding());
+ }
+
+ @Override
+ protected void fillSettingsForHost(String host) {
+ if (host != null && host.length() != 0) {
+ if (hostSettingsMap.containsKey(host)) {
+ Map<String, String> hostSettings = hostSettingsMap.get(host);
+ if (hostSettings.get(ITerminalsConnectorConstants.PROP_IP_HOST) != null) {
+ telnetSettings.setHost(hostSettings.get(ITerminalsConnectorConstants.PROP_IP_HOST));
+ }
+ if (hostSettings.get(ITerminalsConnectorConstants.PROP_IP_PORT) != null) {
+ telnetSettings.setNetworkPort(hostSettings.get(ITerminalsConnectorConstants.PROP_IP_PORT));
+ }
+ if (hostSettings.get(ITerminalsConnectorConstants.PROP_TIMEOUT) != null) {
+ telnetSettings.setTimeout(hostSettings.get(ITerminalsConnectorConstants.PROP_TIMEOUT));
+ }
+ if (hostSettings.get(ITerminalsConnectorConstants.PROP_TELNET_EOL) != null) {
+ telnetSettings.setEndOfLine(hostSettings.get(ITerminalsConnectorConstants.PROP_TELNET_EOL));
+ }
+ if (hostSettings.get(ITerminalsConnectorConstants.PROP_ENCODING) != null) {
+ setEncoding(hostSettings.get(ITerminalsConnectorConstants.PROP_ENCODING));
+ }
+ } else {
+ telnetSettings.setHost(getSelectionHost());
+ // MWE otherwise we don't get a valid default selection of the combo
+ telnetSettings.setNetworkPort(NetworkPortMap.PROP_VALUETELNET);
+ }
+ // set settings in page
+ telnetSettingsPage.loadSettings();
+ }
+ }
+
+ @Override
+ protected void saveSettingsForHost(boolean add) {
+ String host = getHostFromSettings();
+ if (host != null && host.length() != 0) {
+ Map<String, String> hostSettings = hostSettingsMap.get(host);
+ if (hostSettings == null && add) {
+ hostSettings = new HashMap<>();
+ hostSettingsMap.put(host, hostSettings);
+ }
+ if (hostSettings != null) {
+ hostSettings.put(ITerminalsConnectorConstants.PROP_IP_HOST, telnetSettings.getHost());
+ hostSettings.put(ITerminalsConnectorConstants.PROP_IP_PORT,
+ Integer.toString(telnetSettings.getNetworkPort()));
+ hostSettings.put(ITerminalsConnectorConstants.PROP_TIMEOUT,
+ Integer.toString(telnetSettings.getTimeout()));
+ hostSettings.put(ITerminalsConnectorConstants.PROP_TELNET_EOL, telnetSettings.getEndOfLine());
+ if (getEncoding() != null) {
+ hostSettings.put(ITerminalsConnectorConstants.PROP_ENCODING, getEncoding());
+ }
+ }
+ }
+ }
+
+ @Override
+ public boolean isValid() {
+ return isEncodingValid() && telnetSettingsPage.validateSettings();
+ }
+
+ @Override
+ public void doSaveWidgetValues(IDialogSettings settings, String idPrefix) {
+ saveSettingsForHost(true);
+ super.doSaveWidgetValues(settings, idPrefix);
+ }
+
+ @Override
+ protected String getHostFromSettings() {
+ telnetSettingsPage.saveSettings();
+ return telnetSettings.getHost();
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/launcher/TelnetLauncherDelegate.java b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/launcher/TelnetLauncherDelegate.java
new file mode 100644
index 00000000000..5a16fc23415
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/launcher/TelnetLauncherDelegate.java
@@ -0,0 +1,165 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ * Max Weninger (Wind River) - [366374] [TERMINALS][TELNET] Add Telnet terminal support
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.telnet.launcher;
+
+import java.text.DateFormat;
+import java.util.Date;
+import java.util.Map;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.tm.internal.terminal.provisional.api.ISettingsStore;
+import org.eclipse.tm.internal.terminal.provisional.api.ITerminalConnector;
+import org.eclipse.tm.internal.terminal.provisional.api.TerminalConnectorExtension;
+import org.eclipse.tm.terminal.connector.telnet.connector.TelnetSettings;
+import org.eclipse.tm.terminal.connector.telnet.controls.TelnetWizardConfigurationPanel;
+import org.eclipse.tm.terminal.connector.telnet.nls.Messages;
+import org.eclipse.tm.terminal.view.core.TerminalServiceFactory;
+import org.eclipse.tm.terminal.view.core.interfaces.ITerminalService;
+import org.eclipse.tm.terminal.view.core.interfaces.constants.ITerminalsConnectorConstants;
+import org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanel;
+import org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanelContainer;
+import org.eclipse.tm.terminal.view.ui.interfaces.IMementoHandler;
+import org.eclipse.tm.terminal.view.ui.internal.SettingsStore;
+import org.eclipse.tm.terminal.view.ui.launcher.AbstractLauncherDelegate;
+
+/**
+ * Telnet launcher delegate implementation.
+ */
+@SuppressWarnings("restriction")
+public class TelnetLauncherDelegate extends AbstractLauncherDelegate {
+ // The Telnet terminal connection memento handler
+ private final IMementoHandler mementoHandler = new TelnetMementoHandler();
+
+ @Override
+ public boolean needsUserConfiguration() {
+ return true;
+ }
+
+ @Override
+ public IConfigurationPanel getPanel(IConfigurationPanelContainer container) {
+ return new TelnetWizardConfigurationPanel(container);
+ }
+
+ @Override
+ public void execute(Map<String, Object> properties, ITerminalService.Done done) {
+ Assert.isNotNull(properties);
+
+ // Set the terminal tab title
+ String terminalTitle = getTerminalTitle(properties);
+ if (terminalTitle != null) {
+ properties.put(ITerminalsConnectorConstants.PROP_TITLE, terminalTitle);
+ }
+
+ // For Telnet terminals, force a new terminal tab each time it is launched,
+ // if not set otherwise from outside
+ if (!properties.containsKey(ITerminalsConnectorConstants.PROP_FORCE_NEW)) {
+ properties.put(ITerminalsConnectorConstants.PROP_FORCE_NEW, Boolean.TRUE);
+ }
+
+ // Get the terminal service
+ ITerminalService terminal = TerminalServiceFactory.getService();
+ // If not available, we cannot fulfill this request
+ if (terminal != null) {
+ terminal.openConsole(properties, done);
+ }
+ }
+
+ /**
+ * Returns the terminal title string.
+ * <p>
+ * The default implementation constructs a title like &quot;Telnet @ host (Start time) &quot;.
+ *
+ * @return The terminal title string or <code>null</code>.
+ */
+ private String getTerminalTitle(Map<String, Object> properties) {
+ // Try to see if the user set a title explicitly via the properties map.
+ String title = getDefaultTerminalTitle(properties);
+ if (title != null)
+ return title;
+
+ //No title,try to calculate the title
+ String host = (String) properties.get(ITerminalsConnectorConstants.PROP_IP_HOST);
+
+ if (host != null) {
+ DateFormat format = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT);
+ String date = format.format(new Date(System.currentTimeMillis()));
+ return NLS.bind(Messages.TelnetLauncherDelegate_terminalTitle, new String[] { host, date });
+ }
+
+ return Messages.TelnetLauncherDelegate_terminalTitle_default;
+ }
+
+ @Override
+ public <T> T getAdapter(Class<T> adapter) {
+ if (IMementoHandler.class.equals(adapter)) {
+ return adapter.cast(mementoHandler);
+ }
+ return super.getAdapter(adapter);
+ }
+
+ @Override
+ public ITerminalConnector createTerminalConnector(Map<String, Object> properties) {
+ Assert.isNotNull(properties);
+
+ // Check for the terminal connector id
+ String connectorId = (String) properties.get(ITerminalsConnectorConstants.PROP_TERMINAL_CONNECTOR_ID);
+ if (connectorId == null)
+ connectorId = "org.eclipse.tm.terminal.connector.telnet.TelnetConnector"; //$NON-NLS-1$
+
+ // Extract the telnet properties
+ String host = (String) properties.get(ITerminalsConnectorConstants.PROP_IP_HOST);
+ Object value = properties.get(ITerminalsConnectorConstants.PROP_IP_PORT);
+ String port = value != null ? value.toString() : null;
+ value = properties.get(ITerminalsConnectorConstants.PROP_TIMEOUT);
+ String timeout = value != null ? value.toString() : null;
+ String endOfLine = (String) properties.get(ITerminalsConnectorConstants.PROP_TELNET_EOL);
+
+ int portOffset = 0;
+ if (properties.get(ITerminalsConnectorConstants.PROP_IP_PORT_OFFSET) instanceof Integer) {
+ portOffset = ((Integer) properties.get(ITerminalsConnectorConstants.PROP_IP_PORT_OFFSET)).intValue();
+ if (portOffset < 0)
+ portOffset = 0;
+ }
+
+ // The real port to connect to is port + portOffset
+ if (port != null) {
+ port = Integer.toString(Integer.decode(port).intValue() + portOffset);
+ }
+
+ // Construct the terminal settings store
+ ISettingsStore store = new SettingsStore();
+
+ // Construct the telnet settings
+ TelnetSettings telnetSettings = new TelnetSettings();
+ telnetSettings.setHost(host);
+ telnetSettings.setNetworkPort(port);
+ if (timeout != null) {
+ telnetSettings.setTimeout(timeout);
+ }
+ telnetSettings.setEndOfLine(endOfLine);
+ // And save the settings to the store
+ telnetSettings.save(store);
+
+ // Construct the terminal connector instance
+ ITerminalConnector connector = TerminalConnectorExtension.makeTerminalConnector(connectorId);
+ if (connector != null) {
+ // Apply default settings
+ connector.setDefaultSettings();
+ // And load the real settings
+ connector.load(store);
+ }
+
+ return connector;
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/launcher/TelnetMementoHandler.java b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/launcher/TelnetMementoHandler.java
new file mode 100644
index 00000000000..ae5d921041e
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/launcher/TelnetMementoHandler.java
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * Copyright (c) 2012, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.telnet.launcher;
+
+import java.util.Map;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.tm.terminal.view.core.interfaces.constants.ITerminalsConnectorConstants;
+import org.eclipse.tm.terminal.view.ui.interfaces.IMementoHandler;
+import org.eclipse.ui.IMemento;
+
+/**
+ * Telnet terminal connection memento handler implementation.
+ */
+public class TelnetMementoHandler implements IMementoHandler {
+
+ @Override
+ public void saveState(IMemento memento, Map<String, Object> properties) {
+ Assert.isNotNull(memento);
+ Assert.isNotNull(properties);
+
+ // Do not write the terminal title to the memento -> needs to
+ // be recreated at the time of restoration.
+ memento.putString(ITerminalsConnectorConstants.PROP_IP_HOST,
+ (String) properties.get(ITerminalsConnectorConstants.PROP_IP_HOST));
+ Object value = properties.get(ITerminalsConnectorConstants.PROP_IP_PORT);
+ memento.putInteger(ITerminalsConnectorConstants.PROP_IP_PORT,
+ value instanceof Integer ? ((Integer) value).intValue() : -1);
+ value = properties.get(ITerminalsConnectorConstants.PROP_TIMEOUT);
+ memento.putInteger(ITerminalsConnectorConstants.PROP_TIMEOUT,
+ value instanceof Integer ? ((Integer) value).intValue() : -1);
+ memento.putString(ITerminalsConnectorConstants.PROP_ENCODING,
+ (String) properties.get(ITerminalsConnectorConstants.PROP_ENCODING));
+ }
+
+ @Override
+ public void restoreState(IMemento memento, Map<String, Object> properties) {
+ Assert.isNotNull(memento);
+ Assert.isNotNull(properties);
+
+ // Restore the terminal properties from the memento
+ properties.put(ITerminalsConnectorConstants.PROP_IP_HOST,
+ memento.getString(ITerminalsConnectorConstants.PROP_IP_HOST));
+ properties.put(ITerminalsConnectorConstants.PROP_IP_PORT,
+ memento.getInteger(ITerminalsConnectorConstants.PROP_IP_PORT));
+ properties.put(ITerminalsConnectorConstants.PROP_TIMEOUT,
+ memento.getInteger(ITerminalsConnectorConstants.PROP_TIMEOUT));
+ properties.put(ITerminalsConnectorConstants.PROP_ENCODING,
+ memento.getString(ITerminalsConnectorConstants.PROP_ENCODING));
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/nls/Messages.java b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/nls/Messages.java
new file mode 100644
index 00000000000..d223e942a6c
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/nls/Messages.java
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ * Max Weninger (Wind River) - [366374] [TERMINALS][TELNET] Add Telnet terminal support
+ *******************************************************************************/
+package org.eclipse.tm.terminal.connector.telnet.nls;
+
+import org.eclipse.osgi.util.NLS;
+
+/**
+ * Externalized strings management.
+ */
+public class Messages extends NLS {
+
+ // The plug-in resource bundle name
+ private static final String BUNDLE_NAME = "org.eclipse.tm.terminal.connector.telnet.nls.Messages"; //$NON-NLS-1$
+
+ /**
+ * Static constructor.
+ */
+ static {
+ // Load message values from bundle file
+ NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+ }
+
+ // **** Declare externalized string id's down here *****
+
+ public static String TelnetLauncherDelegate_terminalTitle;
+ public static String TelnetLauncherDelegate_terminalTitle_default;
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/nls/Messages.properties b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/nls/Messages.properties
new file mode 100644
index 00000000000..7ed5b2ef78d
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/nls/Messages.properties
@@ -0,0 +1,14 @@
+###############################################################################
+# Copyright (c) 2012, 2018 Wind River Systems, Inc. and others. All rights reserved.
+# This program and the accompanying materials are made available under the terms
+# of the Eclipse Public License 2.0 which accompanies this distribution, and is
+# available at https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Wind River Systems - initial API and implementation
+###############################################################################
+
+TelnetLauncherDelegate_terminalTitle=Telnet {0} ({1})
+TelnetLauncherDelegate_terminalTitle_default=Telnet Terminal
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/.classpath b/terminal/plugins/org.eclipse.tm.terminal.control/.classpath
new file mode 100644
index 00000000000..edc8895124d
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src/"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/.gitignore b/terminal/plugins/org.eclipse.tm.terminal.control/.gitignore
new file mode 100644
index 00000000000..ae3c1726048
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/.options b/terminal/plugins/org.eclipse.tm.terminal.control/.options
new file mode 100644
index 00000000000..752c05f737c
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/.options
@@ -0,0 +1,4 @@
+org.eclipse.tm.terminal.control/debug/log = false
+org.eclipse.tm.terminal.control/debug/log/char = false
+org.eclipse.tm.terminal.control/debug/log/VT100Backend = false
+org.eclipse.tm.terminal.control/debug/log/hover = false
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/.project b/terminal/plugins/org.eclipse.tm.terminal.control/.project
new file mode 100644
index 00000000000..11e18c380e4
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.tm.terminal.control</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+ </natures>
+</projectDescription>
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/.settings/org.eclipse.core.resources.prefs b/terminal/plugins/org.eclipse.tm.terminal.control/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/.settings/org.eclipse.jdt.core.prefs b/terminal/plugins/org.eclipse.tm.terminal.control/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..e3a8104f9ca
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/.settings/org.eclipse.jdt.launching.prefs b/terminal/plugins/org.eclipse.tm.terminal.control/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 00000000000..f8a131b56e0
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_COMPILER_COMPLIANCE_DOES_NOT_MATCH_JRE=warning
+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=warning
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/.settings/org.eclipse.jdt.ui.prefs b/terminal/plugins/org.eclipse.tm.terminal.control/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/.settings/org.eclipse.pde.api.tools.prefs b/terminal/plugins/org.eclipse.tm.terminal.control/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 00000000000..ec9fbf321d0
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,184 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITH_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_FIELD=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERCLASS_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_CHANGED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENTS=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETERS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Error
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Warning
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+MISSING_EE_DESCRIPTIONS=Warning
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=false
+changed_execution_env=Error
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+incompatible_api_component_version_report_major_without_breaking_change=Warning
+incompatible_api_component_version_report_minor_without_api_change=Warning
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/.settings/org.eclipse.pde.prefs b/terminal/plugins/org.eclipse.tm.terminal.control/.settings/org.eclipse.pde.prefs
new file mode 100644
index 00000000000..d2dc703ba9e
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,35 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=2
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=2
+compilers.p.missing-version-export-package=2
+compilers.p.missing-version-import-package=2
+compilers.p.missing-version-require-bundle=2
+compilers.p.no-required-att=0
+compilers.p.no.automatic.module=1
+compilers.p.not-externalized-att=1
+compilers.p.service.component.without.lazyactivation=1
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/HelpContexts.xml b/terminal/plugins/org.eclipse.tm.terminal.control/HelpContexts.xml
new file mode 100644
index 00000000000..2bde74230c5
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/HelpContexts.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?NLS TYPE="org.eclipse.help.contexts"?>
+<!--
+Copyright (c) 2008, 2018 Wind River Systems, Inc.
+All rights reserved. This program and the accompanying materials
+are made available under the terms of the Eclipse Public License 2.0
+which accompanies this distribution, and is available at
+https://www.eclipse.org/legal/epl-2.0/
+
+Contributors:
+Martin Oberhuber (Wind River) - initial API and implementation
+-->
+<contexts>
+ <context id="terminal_view">
+ <description>The Terminal View supports direct connections to remote systems via serial or network connections.
+ </description>
+ </context>
+</contexts> \ No newline at end of file
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/META-INF/MANIFEST.MF b/terminal/plugins/org.eclipse.tm.terminal.control/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..3e9b1c5d695
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/META-INF/MANIFEST.MF
@@ -0,0 +1,26 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.tm.terminal.control; singleton:=true
+Bundle-Version: 5.3.200.qualifier
+Bundle-Activator: org.eclipse.tm.internal.terminal.control.impl.TerminalPlugin
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.ui
+Bundle-ActivationPolicy: lazy
+Eclipse-LazyStart: true
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Bundle-ClassPath: .
+Export-Package: org.eclipse.tm.internal.terminal.connector;x-internal:=true,
+ org.eclipse.tm.internal.terminal.control,
+ org.eclipse.tm.internal.terminal.control.actions,
+ org.eclipse.tm.internal.terminal.control.impl;x-internal:=true,
+ org.eclipse.tm.internal.terminal.emulator;x-internal:=true,
+ org.eclipse.tm.internal.terminal.model;x-internal:=true,
+ org.eclipse.tm.internal.terminal.preferences,
+ org.eclipse.tm.internal.terminal.provisional.api,
+ org.eclipse.tm.internal.terminal.provisional.api.provider,
+ org.eclipse.tm.internal.terminal.textcanvas;x-internal:=true,
+ org.eclipse.tm.terminal.model
+Automatic-Module-Name: org.eclipse.tm.terminal.control
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/README.txt b/terminal/plugins/org.eclipse.tm.terminal.control/README.txt
new file mode 100644
index 00000000000..c88bc696e29
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/README.txt
@@ -0,0 +1,18 @@
+Terminal README
+===============
+
+The Terminal is a UI-less model of a grid of characters,
+plus an SWT widget that's updated asynchronously for
+maximum performance. The widget can be hooked up to various
+ITerminalConnectors providing an InputStream, OutputStream,
+and a method for setting the Terminal Size.
+
+The widget processes ANSI control characters, including NUL,
+backspace, carriage return, linefeed, and a subset of ANSI
+escape sequences sufficient to allow use of screen-oriented
+applications, such as vi, Emacs, and any GNU readline-enabled
+application (Bash, bc, ncftp, etc.).
+
+This is not yet a fully compliant vt100 / vt102 terminal
+emulator!
+
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/about.html b/terminal/plugins/org.eclipse.tm.terminal.control/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/about.ini b/terminal/plugins/org.eclipse.tm.terminal.control/about.ini
new file mode 100644
index 00000000000..e07a7bb377e
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/about.ini
@@ -0,0 +1,24 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%blurb
+
+# Property "windowImage" contains path to window icon (16x16)
+# needed for primary features only
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=cdt_logo_icon32.png
+
+# Property "aboutImage" contains path to product image (500x330 or 115x164)
+# needed for primary features only
+
+# Property "appName" contains name of the application (translated)
+# needed for primary features only
+
+# Property "welcomePerspective" contains the id of the perspective in which the
+# welcome page is to be opened.
+# optional
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/about.mappings b/terminal/plugins/org.eclipse.tm.terminal.control/about.mappings
new file mode 100644
index 00000000000..936a8039c3e
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/about.mappings
@@ -0,0 +1,9 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+# The following should contain the build version.
+# e.g. "0=20200106-1728"
+# This value will be added automatically via the build scripts
+0=${buildId}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/about.properties b/terminal/plugins/org.eclipse.tm.terminal.control/about.properties
new file mode 100644
index 00000000000..39c4c3fbac2
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/about.properties
@@ -0,0 +1,32 @@
+###############################################################################
+# Copyright (c) 2018, 2022 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+# about.properties
+# contains externalized strings for about.ini
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# fill-ins are supplied by about.mappings
+# This file should be translated.
+# NOTE TO TRANSLATOR: Please do not translate the featureVersion variable.
+
+
+blurb=TM Terminal Control\n\
+\n\
+Version: {featureVersion}\n\
+Build id: {0}\n\
+\n\
+Copyright (c) 2018, 2022 Contributors to the Eclipse Foundation
+\n\
+See the NOTICE file(s) distributed with this work for additional\n\
+information regarding copyright ownership.\n\
+\n\
+Visit http://www.eclipse.org/cdt
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/build.properties b/terminal/plugins/org.eclipse.tm.terminal.control/build.properties
new file mode 100644
index 00000000000..eb7d53d07b5
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/build.properties
@@ -0,0 +1,38 @@
+###############################################################################
+# Copyright (c) 2003, 2018 Wind River Systems, Inc. and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Initial Contributors:
+# The following Wind River employees contributed to the Terminal component
+# that contains this file: Chris Thew, Fran Litterio, Stephen Lamb,
+# Helmut Haigermoser and Ted Williams.
+#
+# Contributors:
+# Michael Scharf (Wind River) - split into core, view and connector plugins
+# Martin Oberhuber (Wind River) - fixed copyright headers and beautified
+# Anna Dushistova (MontaVista) - added icons
+###############################################################################
+bin.includes = .,\
+ META-INF/,\
+ plugin.xml,\
+ plugin.properties,\
+ .options,\
+ README.txt,\
+ about.html,\
+ about.ini,\
+ about.properties,\
+ icons/,\
+ HelpContexts.xml,\
+ about.mappings,\
+ cdt_logo_icon32.png
+
+source.. = src/
+output.. = bin/
+src.includes = schema/,\
+ about.html
+
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/cdt_logo_icon32.png b/terminal/plugins/org.eclipse.tm.terminal.control/cdt_logo_icon32.png
new file mode 100644
index 00000000000..470ca81b327
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/cdt_logo_icon32.png
Binary files differ
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/icons/clcl16/clear_co.gif b/terminal/plugins/org.eclipse.tm.terminal.control/icons/clcl16/clear_co.gif
new file mode 100644
index 00000000000..af30a42f83d
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/icons/clcl16/clear_co.gif
Binary files differ
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/icons/dlcl16/clear_co.gif b/terminal/plugins/org.eclipse.tm.terminal.control/icons/dlcl16/clear_co.gif
new file mode 100644
index 00000000000..6775edfabb9
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/icons/dlcl16/clear_co.gif
Binary files differ
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/icons/elcl16/clear_co.gif b/terminal/plugins/org.eclipse.tm.terminal.control/icons/elcl16/clear_co.gif
new file mode 100644
index 00000000000..af30a42f83d
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/icons/elcl16/clear_co.gif
Binary files differ
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/plugin.properties b/terminal/plugins/org.eclipse.tm.terminal.control/plugin.properties
new file mode 100644
index 00000000000..e3c9236c3f2
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/plugin.properties
@@ -0,0 +1,49 @@
+###############################################################################
+# Copyright (c) 2003, 2020 Wind River Systems, Inc. and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Initial Contributors:
+# The following Wind River employees contributed to the Terminal component
+# that contains this file: Chris Thew, Fran Litterio, Stephen Lamb,
+# Helmut Haigermoser and Ted Williams.
+#
+# Contributors:
+# Michael Scharf (Wind River) - split into core, view and connector plugins
+# Martin Oberhuber (Wind River) - fixed copyright headers and beautified
+# Martin Oberhuber (Wind River) - [378691][api] push Preferences into the Widget
+###############################################################################
+
+# NLS_MESSAGEFORMAT_NONE
+
+pluginName = Terminal Control (Embeddable Widget)
+providerName = Eclipse CDT
+
+terminal.context.name.edit=Terminal Control in Focus
+terminal.context.description.edit=Show modified keyboard shortcuts in context menu
+
+terminal.context.name.terminal=Terminal Typing Connected
+terminal.context.description.terminal=Override ALT+x menu access keys while typing into the Terminal
+
+terminal.insertion.description=Terminal view insertion
+terminal.insertion.name=Terminal view insert
+terminal.insertion.category.name=Terminal view commands
+terminal.view.insertion.description = Terminal view commands
+
+terminal.command.copy.name=Copy
+terminal.command.paste.name=Paste
+terminal.command.maximize.name=Maximize Active View or Editor
+terminal.command.quickaccess.name=Quick Access
+
+terminal.preferences.name = Terminal
+terminal.font.description = The font for the terminal console. Please also see the Terminal Preference pages for changing colors.
+terminal.font.label = Terminal Console Font
+
+terminal.views.theme.category.label = Terminal
+terminal.views.theme.category.description = Fonts used in the Terminal View. Please also see the Terminal Preference pages for changing colors.
+
+terminal.connectors.name = Terminal Connector Extensions
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/plugin.xml b/terminal/plugins/org.eclipse.tm.terminal.control/plugin.xml
new file mode 100644
index 00000000000..ee9eaaf0a03
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/plugin.xml
@@ -0,0 +1,278 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+<!--
+# Copyright (c) 2006, 2018 Wind River Systems, Inc. and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Michael Scharf (Wind River) - initial API and implementation
+# Martin Oberhuber (Wind River) - fixed copyright headers and beautified
+# Michael Scharf (Wind River) - [237425] undefined tm.terminal command
+# Martin Oberhuber (Wind River) - [378691][api] push Preferences into the Widget
+# Martin Oberhuber (Wind River) - [434294] Add Mac bindings with COMMAND
+# Martin Oberhuber (Wind River) - [434487] Add key bindings for "maximize view" and "quick access"
+# Martin Oberhuber (Wind River) - [434939] Fix Keybinding conflicts with JEE Luna package
+-->
+<plugin>
+ <extension-point id="connectors" name="%terminal.connectors.name" schema="schema/connectors.exsd"/>
+
+ <extension point="org.eclipse.ui.contexts">
+ <context
+ name="%terminal.context.name.terminal"
+ description="%terminal.context.description.terminal"
+ parentId="org.eclipse.ui.contexts.window"
+ id="org.eclipse.tm.terminal.TerminalContext"
+ />
+ <context
+ name="%terminal.context.name.edit"
+ description="%terminal.context.description.edit"
+ parentId="org.eclipse.ui.contexts.window"
+ id="org.eclipse.tm.terminal.EditContext" />
+ </extension>
+
+ <extension point="org.eclipse.help.contexts">
+ <contexts file="HelpContexts.xml"/>
+ </extension>
+ <extension
+ point="org.eclipse.ui.commands">
+ <!-- Dummy commands for bindings, see below -->
+ <command
+ categoryId="org.eclipse.tm.terminal.category1"
+ id="org.eclipse.tm.terminal.command1"
+ name="%terminal.insertion.name"/>
+ <command
+ categoryId="org.eclipse.tm.terminal.category1"
+ id="org.eclipse.tm.terminal.copy"
+ name="%terminal.command.copy.name"/>
+ <command
+ categoryId="org.eclipse.tm.terminal.category1"
+ id="org.eclipse.tm.terminal.paste"
+ name="%terminal.command.paste.name"/>
+ <command
+ categoryId="org.eclipse.tm.terminal.category1"
+ id="org.eclipse.tm.terminal.maximize"
+ name="%terminal.command.maximize.name">
+ </command>
+ <command
+ categoryId="org.eclipse.tm.terminal.category1"
+ id="org.eclipse.tm.terminal.quickaccess"
+ name="%terminal.command.quickaccess.name"/>
+ <category
+ description="%terminal.view.insertion.description"
+ id="org.eclipse.tm.terminal.category1"
+ name="%terminal.insertion.category.name"/>
+ </extension>
+
+ <extension point="org.eclipse.help.contexts">
+ <contexts file="HelpContexts.xml"/>
+ </extension>
+
+ <extension
+ point="org.eclipse.ui.bindings">
+ <!--
+ These keybindings are needed to disable the menu-activation keys (e.g.,
+ Alt-F for the File menu, etc.). The code in method
+ TerminalControl.TerminalFocusListener.focusGained() disables the Eclipse key
+ binding service, but it doesn't disable the global menu-activation
+ keys.
+ -->
+ <key
+ commandId="org.eclipse.tm.terminal.command1"
+ contextId="org.eclipse.tm.terminal.TerminalContext"
+ schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
+ sequence="Alt+A"/> <!-- Search -->
+ <key
+ commandId="org.eclipse.tm.terminal.command1"
+ contextId="org.eclipse.tm.terminal.TerminalContext"
+ schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
+ sequence="Alt+B"/> <!-- Readline word-left: just to be safe -->
+ <key
+ commandId="org.eclipse.tm.terminal.command1"
+ contextId="org.eclipse.tm.terminal.TerminalContext"
+ schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
+ sequence="Alt+C"/> <!-- ClearCase, Extract Constant -->
+ <key
+ commandId="org.eclipse.tm.terminal.command1"
+ contextId="org.eclipse.tm.terminal.TerminalContext"
+ schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
+ sequence="Alt+D"/> <!-- Design, Diagram, Debug -->
+ <key
+ commandId="org.eclipse.tm.terminal.command1"
+ contextId="org.eclipse.tm.terminal.TerminalContext"
+ schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
+ sequence="Alt+E"/> <!-- Edit -->
+ <key
+ commandId="org.eclipse.tm.terminal.command1"
+ contextId="org.eclipse.tm.terminal.TerminalContext"
+ schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
+ sequence="Alt+F"/> <!-- File -->
+ <key
+ commandId="org.eclipse.tm.terminal.command1"
+ contextId="org.eclipse.tm.terminal.TerminalContext"
+ schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
+ sequence="Alt+G"/> <!-- Tar&get -->
+ <key
+ commandId="org.eclipse.tm.terminal.command1"
+ contextId="org.eclipse.tm.terminal.TerminalContext"
+ schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
+ sequence="Alt+H"/> <!-- Help -->
+ <key
+ commandId="org.eclipse.tm.terminal.command1"
+ contextId="org.eclipse.tm.terminal.TerminalContext"
+ schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
+ sequence="Alt+L"/> <!-- Ana&lyze -->
+ <key
+ commandId="org.eclipse.tm.terminal.command1"
+ contextId="org.eclipse.tm.terminal.TerminalContext"
+ schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
+ sequence="Alt+N"/> <!-- Navigate -->
+ <key
+ commandId="org.eclipse.tm.terminal.command1"
+ contextId="org.eclipse.tm.terminal.TerminalContext"
+ schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
+ sequence="Alt+P"/> <!-- Project, Papyrus, Ping -->
+ <key
+ commandId="org.eclipse.tm.terminal.command1"
+ contextId="org.eclipse.tm.terminal.TerminalContext"
+ schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
+ sequence="Alt+R"/> <!-- Run -->
+ <key
+ commandId="org.eclipse.tm.terminal.command1"
+ contextId="org.eclipse.tm.terminal.TerminalContext"
+ schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
+ sequence="Alt+S"/> <!-- Source -->
+ <key
+ commandId="org.eclipse.tm.terminal.command1"
+ contextId="org.eclipse.tm.terminal.TerminalContext"
+ schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
+ sequence="Alt+T"/> <!-- Refactor -->
+ <key
+ commandId="org.eclipse.tm.terminal.command1"
+ contextId="org.eclipse.tm.terminal.TerminalContext"
+ schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
+ sequence="Alt+V"/> <!-- CVS -->
+ <key
+ commandId="org.eclipse.tm.terminal.command1"
+ contextId="org.eclipse.tm.terminal.TerminalContext"
+ schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
+ sequence="Alt+W"/> <!-- Window -->
+ <key
+ commandId="org.eclipse.tm.terminal.command1"
+ contextId="org.eclipse.tm.terminal.TerminalContext"
+ schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
+ sequence="Alt+Y"/> <!-- S&ystem -->
+ <!--
+ For Copy and Paste, we need replacements since the default Ctrl+C / Ctrl+V
+ need to go to the terminal and thus are not available for local Copy and Paste.
+ This is not an issue on Mac, where COMMAND+C / COMMAND+V works fine.
+
+ We add both CTRL+INSERT and CTRL+SHIFT+C since on some keyboards, an INSERT key
+ may not be available. Note: we want the "least surprising" and "most available"
+ of all bindings to be shown in the context menu according to the algorithm in
+ IBindingService#getBestActiveBindingFor().
+ Therefore, we do not want these extra bindings to be shown on the Mac.
+
+ Unfortunately, there is no way in Bindings to say "NOT Platforms X,Y,Z"
+ We would really like one of the following here but it doesnt work with Eclipse 4.3:
+ platforms="!carbon,!cocoa"
+ platforms="win32,motif,gtk,photon,wpf"
+ Since Eclipse doesnt support this, we will redefine the original Mac bindings below,
+ just to make them show up in the context menu.
+ -->
+ <key
+ commandId="org.eclipse.tm.terminal.copy"
+ contextId="org.eclipse.tm.terminal.EditContext"
+ schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
+ sequence="M1+INSERT"/><!-- Ctrl+Insert -->
+ <key
+ commandId="org.eclipse.tm.terminal.copy"
+ contextId="org.eclipse.tm.terminal.EditContext"
+ schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
+ sequence="M1+M2+C"><!-- Ctrl+Shift+C -->
+ </key>
+ <key
+ commandId="org.eclipse.tm.terminal.paste"
+ contextId="org.eclipse.tm.terminal.EditContext"
+ schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
+ sequence="M2+INSERT"/><!-- Shift+Insert -->
+ <key
+ commandId="org.eclipse.tm.terminal.paste"
+ contextId="org.eclipse.tm.terminal.EditContext"
+ schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
+ sequence="M1+M2+V"/><!-- Ctrl+Shift+V -->
+ <!--
+ Mac shortcuts need to be redefined with Platform Filter, in order to make
+ them "better" than the bindings above and thus show up in the menu.
+ See the algorithm in IBindingService#getBestActiveBindingFor().
+ It looks like the "carbon" entry is also valid for "cocoa" automatically.
+ -->
+ <key
+ commandId="org.eclipse.tm.terminal.copy"
+ contextId="org.eclipse.tm.terminal.EditContext"
+ platform="carbon"
+ schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
+ sequence="M1+C">
+ </key>
+ <key
+ commandId="org.eclipse.tm.terminal.paste"
+ contextId="org.eclipse.tm.terminal.EditContext"
+ platform="carbon"
+ schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
+ sequence="M1+V"/>
+ <!--
+ Additional Bindings for Quick Access (Ctrl+3) and Maximize View (Ctrl+M)
+ since these are extremely valuable, but the original shortcut may need
+ to go to the Terminal.
+ -->
+ <!-- org.eclipse.ui.window.quickAccess -->
+ <key
+ commandId="org.eclipse.tm.terminal.quickaccess"
+ contextId="org.eclipse.tm.terminal.EditContext"
+ schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
+ sequence="M3+ARROW_RIGHT"/>
+ <!-- org.eclipse.ui.window.maximizePart -->
+ <key
+ commandId="org.eclipse.tm.terminal.maximize"
+ contextId="org.eclipse.tm.terminal.EditContext"
+ schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
+ sequence="M3+ARROW_UP"/>
+ </extension>
+
+ <extension point="org.eclipse.ui.preferencePages">
+ <page
+ name="%terminal.preferences.name"
+ class="org.eclipse.tm.internal.terminal.preferences.TerminalPreferencePage"
+ id="org.eclipse.tm.terminal.TerminalPreferencePage">
+ </page>
+ </extension>
+
+ <extension point="org.eclipse.core.runtime.preferences">
+ <initializer class="org.eclipse.tm.internal.terminal.preferences.TerminalPreferenceInitializer"/>
+ </extension>
+
+ <extension point="org.eclipse.ui.themes" id="terminal.font">
+ <fontDefinition
+ categoryId="terminal.views.theme.category"
+ defaultsTo="org.eclipse.jface.textfont"
+ id="terminal.views.view.font.definition"
+ label="%terminal.font.label">
+ <description>
+ %terminal.font.description
+ </description>
+ </fontDefinition>
+ <themeElementCategory
+ id="terminal.views.theme.category"
+ label="%terminal.views.theme.category.label">
+ <description>
+ %terminal.views.theme.category.description
+ </description>
+ </themeElementCategory>
+
+
+ </extension>
+</plugin>
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/schema/connectors.exsd b/terminal/plugins/org.eclipse.tm.terminal.control/schema/connectors.exsd
new file mode 100644
index 00000000000..8a0862cf413
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/schema/connectors.exsd
@@ -0,0 +1,111 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.tm.terminal.control" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+ <appInfo>
+ <meta.schema plugin="org.eclipse.tm.terminal.control" id="connectors" name="Terminal Connector Extensions"/>
+ </appInfo>
+ <documentation>
+
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <annotation>
+ <appInfo>
+ <meta.element />
+ </appInfo>
+ </annotation>
+ <complexType>
+ <sequence minOccurs="1" maxOccurs="unbounded">
+ <element ref="connector"/>
+ </sequence>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute translatable="true"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="connector">
+ <complexType>
+ <attribute name="class" type="string" use="required">
+ <annotation>
+ <documentation>
+ A class extending TerminalConnectorImpl
+ </documentation>
+ <appInfo>
+ <meta.attribute kind="java" basedOn="org.eclipse.tm.internal.terminal.provisional.api.provider.TerminalConnectorImpl:"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string" use="required">
+ <annotation>
+ <documentation>
+ Uniquely identify this connector for programmatic access. Clients will use this ID in order to find and instantiate it.
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+ The name of the connection (used in the UI)
+ </documentation>
+ <appInfo>
+ <meta.attribute translatable="true"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ <attribute name="hidden" type="boolean" use="default" value="false">
+ <annotation>
+ <documentation>
+ When set to &quot;true&quot;, the terminal connector will not be visible to the user in connector selections.
+ </documentation>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+
+
+
+
+ <annotation>
+ <appInfo>
+ <meta.section type="copyright"/>
+ </appInfo>
+ <documentation>
+ Copyright (c) 2006 - 2018 Wind River Systems, Inc. and others.
+All rights reserved. This program and the accompanying materials
+are made available under the terms of the Eclipse Public License 2.0
+which accompanies this distribution, and is available at
+https://www.eclipse.org/legal/epl-2.0/
+
+Contributors:
+Michael Scharf (Wind River) - initial API and implementation
+Martin Oberhuber (Wind River) - fixed copyright headers and beautified
+Uwe Stieber (Wind River) - [282996] [terminal][api] Add &quot;hidden&quot; attribute to terminal connector extension point
+ </documentation>
+ </annotation>
+
+</schema>
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/connector/TerminalConnector.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/connector/TerminalConnector.java
new file mode 100644
index 00000000000..3737a5cde3f
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/connector/TerminalConnector.java
@@ -0,0 +1,272 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ * Michael Scharf (Wind River) - [200541] Extract from TerminalConnectorExtension.TerminalConnectorProxy
+ * Martin Oberhuber (Wind River) - [225853][api] Provide more default functionality in TerminalConnectorImpl
+ * Uwe Stieber (Wind River) - [282996] [terminal][api] Add "hidden" attribute to terminal connector extension point
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.connector;
+
+import java.io.OutputStream;
+import java.util.Optional;
+
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.tm.internal.terminal.control.impl.TerminalMessages;
+import org.eclipse.tm.internal.terminal.provisional.api.ISettingsStore;
+import org.eclipse.tm.internal.terminal.provisional.api.ITerminalConnector;
+import org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl;
+import org.eclipse.tm.internal.terminal.provisional.api.Logger;
+import org.eclipse.tm.internal.terminal.provisional.api.TerminalConnectorExtension;
+import org.eclipse.tm.internal.terminal.provisional.api.TerminalState;
+import org.eclipse.tm.internal.terminal.provisional.api.provider.TerminalConnectorImpl;
+
+/**
+ * An {@link ITerminalConnector} instance, also known as terminal connection
+ * type, for maintaining a single terminal connection.
+ *
+ * It provides all terminal connector functions that can be provided by static
+ * markup without loading the actual implementation class. The actual
+ * {@link TerminalConnectorImpl} implementation class is lazily loaded by the
+ * provided {@link TerminalConnector.Factory} interface when needed. class, and
+ * delegates to the actual implementation when needed. The following methods can
+ * be called without initializing the contributed implementation class:
+ * {@link #getId()}, {@link #getName()}, {@link #getSettingsSummary()},{@link #load(ISettings)},
+ * {@link #setTerminalSize(int, int)}, {@link #save(ISettings)},
+ * {@link #getAdapter(Class)}
+ *
+ * @noextend This class is not intended to be subclassed by clients.
+ * @noinstantiate This class is not intended to be instantiated by clients.
+ * Clients can get terminal connector instances through the
+ * {@link TerminalConnectorExtension} class.
+ * @since org.eclipse.tm.terminal 2.0
+ */
+public class TerminalConnector implements ITerminalConnector {
+ /**
+ * Creates an instance of TerminalConnectorImpl. This is used to lazily load
+ * classed defined in extensions.
+ *
+ * @since org.eclipse.tm.terminal 2.0
+ */
+ public interface Factory {
+ /**
+ * Factory method to create the actual terminal connector implementation
+ * when needed.
+ *
+ * @return a Connector
+ * @throws Exception
+ */
+ TerminalConnectorImpl makeConnector() throws Exception;
+ }
+
+ /**
+ * The factory for creating impl instances.
+ */
+ private final TerminalConnector.Factory fTerminalConnectorFactory;
+ /**
+ * The (display) name of the TerminalConnector
+ */
+ private final String fName;
+ /**
+ * The unique id the connector
+ */
+ private final String fId;
+ /**
+ * Flag to mark the connector as hidden.
+ */
+ private final boolean fHidden;
+ /**
+ * The connector
+ */
+ private TerminalConnectorImpl fConnector;
+ /**
+ * If the initialization of the class specified in the extension fails,
+ * this variable contains the error
+ */
+ private Exception fException;
+ /**
+ * The store might be set before the real connector is initialized.
+ * This keeps the value until the connector is created.
+ */
+ private ISettingsStore fStore;
+
+ /**
+ * Constructor for the terminal connector.
+ *
+ * @param terminalConnectorFactory Factory for lazily instantiating the
+ * TerminalConnectorImpl when needed.
+ * @param id terminal connector ID. The connector is publicly known under
+ * this ID.
+ * @param name translatable name to display the connector in the UI.
+ */
+ public TerminalConnector(TerminalConnector.Factory terminalConnectorFactory, String id, String name,
+ boolean hidden) {
+ fTerminalConnectorFactory = terminalConnectorFactory;
+ fId = id;
+ fName = name;
+ fHidden = hidden;
+ }
+
+ @Override
+ public String getInitializationErrorMessage() {
+ getConnectorImpl();
+ if (fException != null)
+ return fException.getLocalizedMessage();
+ return null;
+ }
+
+ @Override
+ public String getId() {
+ return fId;
+ }
+
+ @Override
+ public String getName() {
+ return fName;
+ }
+
+ @Override
+ public boolean isHidden() {
+ return fHidden;
+ }
+
+ private TerminalConnectorImpl getConnectorImpl() {
+ if (!isInitialized()) {
+ try {
+ fConnector = fTerminalConnectorFactory.makeConnector();
+ fConnector.initialize();
+ } catch (Exception e) {
+ fException = e;
+ fConnector = new TerminalConnectorImpl() {
+ @Override
+ public void connect(ITerminalControl control) {
+ // super.connect(control);
+ control.setState(TerminalState.CLOSED);
+ control.setMsg(getInitializationErrorMessage());
+ }
+
+ @Override
+ public OutputStream getTerminalToRemoteStream() {
+ return null;
+ }
+
+ @Override
+ public String getSettingsSummary() {
+ return null;
+ }
+ };
+ // that's the place where we log the exception
+ Logger.logException(e);
+ }
+ if (fConnector != null && fStore != null)
+ fConnector.load(fStore);
+ }
+ return fConnector;
+ }
+
+ @Override
+ public boolean isInitialized() {
+ return fConnector != null || fException != null;
+ }
+
+ @Override
+ public void connect(ITerminalControl control) {
+ getConnectorImpl().connect(control);
+ }
+
+ @Override
+ public void disconnect() {
+ getConnectorImpl().disconnect();
+ }
+
+ @Override
+ public OutputStream getTerminalToRemoteStream() {
+ return getConnectorImpl().getTerminalToRemoteStream();
+ }
+
+ @Override
+ public String getSettingsSummary() {
+ if (fConnector != null)
+ return getConnectorImpl().getSettingsSummary();
+ else
+ return TerminalMessages.NotInitialized;
+ }
+
+ @Override
+ public boolean isLocalEcho() {
+ return getConnectorImpl().isLocalEcho();
+ }
+
+ @Override
+ public void load(ISettingsStore store) {
+ if (fConnector == null) {
+ fStore = store;
+ } else {
+ getConnectorImpl().load(store);
+ }
+ }
+
+ @Override
+ public void setDefaultSettings() {
+ getConnectorImpl().setDefaultSettings();
+ }
+
+ @Override
+ public void save(ISettingsStore store) {
+ // no need to save the settings: it cannot have changed
+ // because we are not initialized....
+ if (fConnector != null)
+ getConnectorImpl().save(store);
+ }
+
+ @Override
+ public void setTerminalSize(int newWidth, int newHeight) {
+ // we assume that setTerminalSize is called also after
+ // the terminal has been initialized. Else we would have to cache
+ // the values....
+ if (fConnector != null) {
+ fConnector.setTerminalSize(newWidth, newHeight);
+ }
+ }
+
+ @Override
+ public <T> T getAdapter(Class<T> adapter) {
+ TerminalConnectorImpl connector = null;
+ if (isInitialized())
+ connector = getConnectorImpl();
+ // if we cannot create the connector then we cannot adapt...
+ if (connector != null) {
+ // maybe the connector is adaptable
+ if (connector instanceof IAdaptable) {
+ Object result = ((IAdaptable) connector).getAdapter(adapter);
+ // Not sure if the next block is needed....
+ if (result == null)
+ //defer to the platform
+ result = Platform.getAdapterManager().getAdapter(connector, adapter);
+ if (result != null)
+ return adapter.cast(result);
+ }
+ // maybe the real adapter is what we need....
+ if (adapter.isInstance(connector))
+ return adapter.cast(connector);
+ }
+ // maybe we have to be adapted....
+ return Platform.getAdapterManager().getAdapter(this, adapter);
+ }
+
+ @Override
+ public Optional<String> getWorkingDirectory() {
+ if (fConnector != null) {
+ return fConnector.getWorkingDirectory();
+ }
+ return Optional.empty();
+ }
+} \ No newline at end of file
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/connector/TerminalToRemoteInjectionOutputStream.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/connector/TerminalToRemoteInjectionOutputStream.java
new file mode 100644
index 00000000000..ea4b24273a0
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/connector/TerminalToRemoteInjectionOutputStream.java
@@ -0,0 +1,208 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.connector;
+
+import java.io.ByteArrayOutputStream;
+import java.io.FilterOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+
+/**
+ * @noextend This class is not intended to be subclassed by clients.
+ * @noreference This class is not intended to be referenced by clients.
+ * @noinstantiate This class is not intended to be instantiated by clients.
+ * This class used to be package-protected. It is public only for access by the Unit Tests.
+ */
+public class TerminalToRemoteInjectionOutputStream extends FilterOutputStream {
+ /**
+ * This class handles bytes written to the {@link TerminalToRemoteInjectionOutputStream}.
+ */
+ static abstract public class Interceptor {
+ protected OutputStream fOriginal;
+
+ /**
+ * @param original the injection into the original stream begins
+ * @throws IOException
+ */
+ public void begin(OutputStream original) throws IOException {
+ fOriginal = original;
+ }
+
+ /**
+ * @param b a byte was written to the {@link TerminalToRemoteInjectionOutputStream}.
+ * @throws IOException
+ */
+ public void write(int b) throws IOException {
+ }
+
+ /**
+ * @param b bytes written to the {@link TerminalToRemoteInjectionOutputStream}.
+ * @param off the start offset in the data.
+ * @param len the number of bytes to write.
+ * @throws IOException
+ */
+ public void write(byte[] b, int off, int len) throws IOException {
+ }
+
+ /**
+ * The injection into the normal stream ends.
+ * @throws IOException
+ */
+ public void close() throws IOException {
+ }
+
+ public void flush() {
+ }
+ }
+
+ static public class BufferInterceptor extends Interceptor {
+ private final ByteArrayOutputStream fBuffer = new ByteArrayOutputStream();
+
+ @Override
+ public void close() throws IOException {
+ fOriginal.write(fBuffer.toByteArray());
+ }
+
+ @Override
+ public void write(byte[] b, int off, int len) throws IOException {
+ fBuffer.write(b, off, len);
+ }
+
+ @Override
+ public void write(int b) throws IOException {
+ fBuffer.write(b);
+ }
+ }
+
+ private class TerminalFilterOutputStream extends OutputStream {
+ final private Object fLock = TerminalToRemoteInjectionOutputStream.this;
+
+ @Override
+ public void close() throws IOException {
+ synchronized (fLock) {
+ if (fInjection == this) {
+ flush();
+ ungrabOutput();
+ }
+ }
+ }
+
+ @Override
+ public void write(byte[] b, int off, int len) throws IOException {
+ synchronized (fLock) {
+ checkStream();
+ out.write(b, off, len);
+ }
+ }
+
+ @Override
+ public void write(byte[] b) throws IOException {
+ synchronized (fLock) {
+ checkStream();
+ out.write(b);
+ }
+ }
+
+ @Override
+ public void flush() throws IOException {
+ synchronized (fLock) {
+ checkStream();
+ out.flush();
+ }
+ }
+
+ @Override
+ public void write(int b) throws IOException {
+ synchronized (fLock) {
+ checkStream();
+ out.write(b);
+ }
+ }
+
+ private void checkStream() throws IOException {
+ if (fInjection != this)
+ throw new IOException("Stream is closed"); //$NON-NLS-1$
+ }
+ }
+
+ private Interceptor fInterceptor;
+ private TerminalFilterOutputStream fInjection;
+
+ public TerminalToRemoteInjectionOutputStream(OutputStream out) {
+ super(out);
+ }
+
+ synchronized protected void ungrabOutput() throws IOException {
+ if (fInterceptor != null) {
+ fInterceptor.close();
+ fInterceptor = null;
+ fInjection = null;
+ }
+ }
+
+ /**
+ * There can only be one injection stream active at a time. You must call close on the
+ * returned output stream to end the injection.
+ * @param interceptor This is used handle bytes sent while the injection stream is active.
+ * @return a output stream that can be used to write to the decorated stream.
+ * @throws IOException
+ */
+ public synchronized OutputStream grabOutput(Interceptor interceptor) throws IOException {
+ if (fInjection != null) {
+ throw new IOException("Buffer in use"); //$NON-NLS-1$
+ }
+ fInterceptor = interceptor;
+ fInterceptor.begin(out);
+ fInjection = new TerminalFilterOutputStream();
+ return fInjection;
+ }
+
+ /** See {@link #grabOutput(TerminalToRemoteInjectionOutputStream.Interceptor)}.
+ * @return injection output stream
+ * @throws IOException
+ */
+ public synchronized OutputStream grabOutput() throws IOException {
+ return grabOutput(new BufferInterceptor());
+ }
+
+ @Override
+ synchronized public void close() throws IOException {
+ if (fInjection != null) {
+ fInjection.close();
+ }
+ super.close();
+ }
+
+ @Override
+ synchronized public void flush() throws IOException {
+ if (fInterceptor != null)
+ fInterceptor.flush();
+ out.flush();
+ }
+
+ @Override
+ synchronized public void write(byte[] b, int off, int len) throws IOException {
+ if (fInterceptor != null)
+ fInterceptor.write(b, off, len);
+ else
+ out.write(b, off, len);
+ }
+
+ @Override
+ synchronized public void write(int b) throws IOException {
+ if (fInterceptor != null)
+ fInterceptor.write(b);
+ else
+ out.write(b);
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/CommandInputFieldWithHistory.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/CommandInputFieldWithHistory.java
new file mode 100644
index 00000000000..bb9ca19a0e9
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/CommandInputFieldWithHistory.java
@@ -0,0 +1,341 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial implementation
+ * Michael Scharf (Wing River) - [211659] Add field assist to terminal input field
+ * Michael Scharf (Wing River) - [196447] The optional terminal input line should be resizeable
+ * Martin Oberhuber (Wind River) - [168197] Fix Terminal for CDC-1.1/Foundation-1.1
+ * Michael Scharf (Wing River) - [236458] Fix 168197 lost the last entry
+ * Anton Leherbauer (Wind River) - [220971] The optional terminal input line has redraw problems when resizing
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.control;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+import java.util.StringTokenizer;
+
+import org.eclipse.jface.fieldassist.IContentProposal;
+import org.eclipse.jface.fieldassist.IContentProposalProvider;
+import org.eclipse.jface.fieldassist.TextContentAdapter;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.KeyListener;
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Sash;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.fieldassist.ContentAssistCommandAdapter;
+
+/**
+ * Manages the Command History for the command line input
+ * of the terminal control.
+ * <li>
+ * <ul>Navigate with ARROW_UP,ARROW_DOWN,PAGE_UP,PAGE_DOWN
+ * <ul>ESC to cancel history editing
+ * <ul>History can be edited (by moving up and edit) but changes are
+ * not persistent (like in bash).
+ * <ul>If the same command is entered multiple times in a row,
+ * only one entry is kept in the history.
+ * </li>
+ *
+ */
+public class CommandInputFieldWithHistory implements ICommandInputField {
+ private class FieldAssist implements IContentProposalProvider {
+
+ @Override
+ public IContentProposal[] getProposals(String contents, int position) {
+ String prefix = contents.substring(0, position);
+ List<Proposal> result = new ArrayList<>();
+ // show an entry only once
+ Set<String> seen = new HashSet<>();
+ for (Iterator<String> iterator = fHistory.iterator(); iterator.hasNext();) {
+ String history = iterator.next();
+ if (history.startsWith(prefix) && !seen.contains(history)) {
+ // the content is the rest of the history item
+ String content = history.substring(prefix.length());
+ result.add(new Proposal(content, history));
+ // don't add this proposal again
+ seen.add(history);
+ }
+ }
+ return result.toArray(new IContentProposal[result.size()]);
+ }
+
+ }
+
+ private static class Proposal implements IContentProposal {
+
+ private final String fContent;
+ private final String fLabel;
+
+ Proposal(String content, String label) {
+ fContent = content;
+ fLabel = label;
+ }
+
+ @Override
+ public String getContent() {
+ return fContent;
+ }
+
+ @Override
+ public String getLabel() {
+ return fLabel;
+ }
+
+ @Override
+ public String getDescription() {
+ return null;
+ }
+
+ @Override
+ public int getCursorPosition() {
+ return fContent.length();
+ }
+ }
+
+ final List<String> fHistory = new ArrayList<>();
+ /**
+ * Keeps a modifiable history while in history editing mode
+ */
+ List<Object> fEditedHistory;
+ /**
+ * The current position in the edit history
+ */
+ private int fEditHistoryPos = 0;
+ /**
+ * The limit of the history.
+ */
+ private final int fMaxSize;
+ /**
+ * The input text field.
+ */
+ private Text fInputField;
+ private Sash fSash;
+ private Composite fPanel;
+
+ public CommandInputFieldWithHistory(int maxHistorySize) {
+ fMaxSize = maxHistorySize;
+ }
+
+ /**
+ * Add a line to the history.
+ * @param line The line to be added to the history.
+ */
+ protected void pushLine(String line) {
+ endHistoryMode();
+ // anything to remember?
+ if (line == null || line.trim().length() == 0)
+ return;
+ fHistory.add(0, line);
+ // ignore if the same as last
+ if (fHistory.size() > 1 && line.equals(fHistory.get(1)))
+ fHistory.remove(0);
+ // limit the history size.
+ if (fHistory.size() >= fMaxSize)
+ fHistory.remove(fHistory.size() - 1);
+ }
+
+ /**
+ * Sets the history
+ * @param history or null
+ */
+ public void setHistory(String history) {
+ endHistoryMode();
+ fHistory.clear();
+ if (history == null)
+ return;
+ // add history entries separated by '\n'
+ // fHistory.addAll(Arrays.asList(history.split("\n"))); //$NON-NLS-1$
+ //<J2ME CDC-1.1 Foundation-1.1 variant>
+ StringTokenizer tok = new StringTokenizer(history, "\n"); //$NON-NLS-1$
+ while (tok.hasMoreElements())
+ fHistory.add((String) tok.nextElement());
+ //</J2ME CDC-1.1 Foundation-1.1 variant>
+ }
+
+ /**
+ * @return the current content of the history buffer and new line separated list
+ */
+ public String getHistory() {
+ StringBuffer buff = new StringBuffer();
+ boolean sep = false;
+ for (Iterator<String> iterator = fHistory.iterator(); iterator.hasNext();) {
+ String line = iterator.next();
+ if (line.length() > 0) {
+ if (sep)
+ buff.append("\n"); //$NON-NLS-1$
+ else
+ sep = true;
+ buff.append(line);
+ }
+ }
+ return buff.toString();
+ }
+
+ /**
+ * @param currLine Line of text to be moved in history
+ * @param count (+1 or -1) for forward and backward movement. -1 goes back
+ * @return the new string to be displayed in the command line or null,
+ * if the limit is reached.
+ */
+ public String move(String currLine, int count) {
+ if (!inHistoryMode()) {
+ fEditedHistory = new ArrayList<>(fHistory.size() + 1);
+ fEditedHistory.add(currLine);
+ fEditedHistory.addAll(fHistory);
+ fEditHistoryPos = 0;
+ }
+ fEditedHistory.set(fEditHistoryPos, currLine);
+ if (fEditHistoryPos + count >= fEditedHistory.size())
+ return null;
+ if (fEditHistoryPos + count < 0)
+ return null;
+ fEditHistoryPos += count;
+ return (String) fEditedHistory.get(fEditHistoryPos);
+ }
+
+ private boolean inHistoryMode() {
+ return fEditedHistory != null;
+ }
+
+ /**
+ * Exit the history movements and go to position 0;
+ * @return the string to be shown in the command line
+ */
+ protected String escape() {
+ if (!inHistoryMode())
+ return null;
+ String line = (String) fEditedHistory.get(0);
+ endHistoryMode();
+ return line;
+ }
+
+ /**
+ * End history editing
+ */
+ private void endHistoryMode() {
+ fEditedHistory = null;
+ fEditHistoryPos = 0;
+ }
+
+ @Override
+ public void createControl(final Composite parent, final ITerminalViewControl terminal) {
+ // fSash = new Sash(parent,SWT.HORIZONTAL|SWT.SMOOTH);
+ fSash = new Sash(parent, SWT.HORIZONTAL);
+ final GridData gd_sash = new GridData(SWT.FILL, SWT.CENTER, true, false);
+ gd_sash.heightHint = 5;
+ fSash.setLayoutData(gd_sash);
+ fSash.addListener(SWT.Selection, e -> {
+ if (e.detail == SWT.DRAG) {
+ // don't redraw during drag, it causes paint errors - bug 220971
+ return;
+ }
+ // no idea why this is needed
+ GridData gdata = (GridData) fInputField.getLayoutData();
+ Rectangle sashRect = fSash.getBounds();
+ Rectangle containerRect = parent.getClientArea();
+
+ int h = fInputField.getLineHeight();
+ // make sure the input filed height is a multiple of the line height
+ gdata.heightHint = Math.max(((containerRect.height - e.y - sashRect.height) / h) * h, h);
+ // do not show less then one line
+ e.y = Math.min(e.y, containerRect.height - h);
+ fInputField.setLayoutData(gdata);
+ parent.layout();
+ // else the content assist icon will be replicated
+ parent.redraw();
+ });
+ fPanel = new Composite(parent, SWT.NONE);
+ GridLayout layout = new GridLayout();
+ layout.marginWidth = 0;
+ layout.marginHeight = 0;
+ layout.marginTop = 0;
+ layout.marginBottom = 2;
+ fPanel.setLayout(layout);
+ fPanel.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+ fInputField = new Text(fPanel, SWT.MULTI | SWT.BORDER | SWT.WRAP | SWT.V_SCROLL);
+ GridData data = new GridData(SWT.FILL, SWT.FILL, true, false);
+ boolean installDecoration = true;
+ if (installDecoration) {
+ // The ContentAssistCommandAdapter says: "The client is responsible for
+ // ensuring that adequate space is reserved for the decoration."
+ // TODO: what is the "adequate space"???
+ data.horizontalIndent = 6;
+ }
+ fInputField.setLayoutData(data);
+ fInputField.setFont(terminal.getFont());
+ // Register field assist *before* the key listener.
+ // Else the ENTER key is sent *first* to the input field
+ // and then to the field assist popup.
+ // (https://bugs.eclipse.org/bugs/show_bug.cgi?id=211659)
+ new ContentAssistCommandAdapter(fInputField, new TextContentAdapter(), new FieldAssist(), null, null,
+ installDecoration);
+ fInputField.addKeyListener(new KeyListener() {
+ @Override
+ public void keyPressed(KeyEvent e) {
+ // if the field assist has handled the key already then
+ // ignore it (https://bugs.eclipse.org/bugs/show_bug.cgi?id=211659)
+ if (!e.doit)
+ return;
+ if (e.character == SWT.CR || e.character == SWT.LF) {
+ e.doit = false;
+ String line = fInputField.getText();
+ if (!terminal.pasteString(line + '\r'))
+ return;
+ pushLine(line);
+ setCommand("");//$NON-NLS-1$
+ } else if (e.keyCode == SWT.ARROW_UP || e.keyCode == SWT.PAGE_UP) {
+ e.doit = false;
+ setCommand(move(fInputField.getText(), 1));
+ } else if (e.keyCode == SWT.ARROW_DOWN || e.keyCode == SWT.PAGE_DOWN) {
+ e.doit = false;
+ setCommand(move(fInputField.getText(), -1));
+ } else if (e.keyCode == SWT.ESC) {
+ e.doit = false;
+ setCommand(escape());
+ }
+ }
+
+ private void setCommand(String line) {
+ if (line == null)
+ return;
+ fInputField.setText(line);
+ fInputField.setSelection(fInputField.getCharCount());
+ }
+
+ @Override
+ public void keyReleased(KeyEvent e) {
+ }
+ });
+ }
+
+ @Override
+ public void setFont(Font font) {
+ fInputField.setFont(font);
+ fInputField.getParent().layout(true);
+ }
+
+ @Override
+ public void dispose() {
+ fSash.dispose();
+ fSash = null;
+ fPanel.dispose();
+ fPanel = null;
+ fInputField.dispose();
+ fInputField = null;
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/ICommandInputField.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/ICommandInputField.java
new file mode 100644
index 00000000000..8e314acd78b
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/ICommandInputField.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial implementation
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.control;
+
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * Interface to create a command input control.
+ *
+ */
+public interface ICommandInputField {
+ /**
+ * @param parent
+ * @param terminal
+ */
+ void createControl(Composite parent, ITerminalViewControl terminal);
+
+ void dispose();
+
+ /**
+ * Sets the font of a control created with {@link #createControl(Composite, ITerminalViewControl)}
+ * @param control
+ * @param font the new text font
+ */
+ void setFont(Font font);
+
+} \ No newline at end of file
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/ITerminalListener.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/ITerminalListener.java
new file mode 100644
index 00000000000..62d548c29a0
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/ITerminalListener.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ * Martin Oberhuber (Wind River) - fixed copyright headers and beautified
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.control;
+
+import org.eclipse.tm.internal.terminal.provisional.api.TerminalState;
+
+/**
+ * Provided by a view implementation.
+ * @author Michael Scharf
+ *
+ */
+public interface ITerminalListener {
+ /**
+ * Called when the state of the connection has changed.
+ * @param state
+ */
+ void setState(TerminalState state);
+
+ /**
+ * Set the title of the terminal.
+ * @param title
+ */
+ void setTerminalTitle(String title);
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/ITerminalListener2.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/ITerminalListener2.java
new file mode 100644
index 00000000000..30f22f82ba0
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/ITerminalListener2.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2015, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.control;
+
+/**
+ * Terminal listener allowing to listen to terminal selection changes.
+ *
+ * @since 4.1
+ */
+public interface ITerminalListener2 extends ITerminalListener {
+
+ /**
+ * selection has been changed internally e.g. select all
+ * clients might want to react on that
+ * NOTE: this does not include mouse selections
+ * those are handled in separate MouseListeners
+ * TODO should be unified
+ */
+ void setTerminalSelectionChanged();
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/ITerminalMouseListener.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/ITerminalMouseListener.java
new file mode 100644
index 00000000000..0de6ff105ae
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/ITerminalMouseListener.java
@@ -0,0 +1,48 @@
+/*******************************************************************************
+ * Copyright (c) 2015, 2018 CWI. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Davy Landman (CWI) - [475267][api] Initial definition of interface
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.control;
+
+import org.eclipse.tm.terminal.model.ITerminalTextDataReadOnly;
+
+/**
+ * Terminal specific version of {@link org.eclipse.swt.events.MouseListener}
+ * @since 4.1
+ * @see ITerminalMouseListener2
+ */
+public interface ITerminalMouseListener {
+ /**
+ * Invoked when a double-click has happend inside the terminal control.<br>
+ * <br>
+ * <strong>Important:</strong> the event fires for every click, even outside the text region.
+ * @param terminalText a read-only view of the current terminal text
+ * @param button see {@link org.eclipse.swt.events.MouseEvent#button} for the meaning of the button values
+ */
+ void mouseDoubleClick(ITerminalTextDataReadOnly terminalText, int line, int column, int button);
+
+ /**
+ * Invoked when a mouse button is pushed down inside the terminal control.<br>
+ * <br>
+ * <strong>Important:</strong> the event fires for every mouse down, even outside the text region.
+ * @param terminalText a read-only view of the current terminal text
+ * @param button see {@link org.eclipse.swt.events.MouseEvent#button} for the meaning of the button values
+ */
+ void mouseDown(ITerminalTextDataReadOnly terminalText, int line, int column, int button);
+
+ /**
+ * Invoked when a mouse button is released inside the terminal control.<br>
+ * <br>
+ * <strong>Important:</strong> the event fires for every mouse up, even outside the text region.
+ * @param terminalText a read-only view of the current terminal text
+ * @param button see {@link org.eclipse.swt.events.MouseEvent#button} for the meaning of the button values
+ */
+ void mouseUp(ITerminalTextDataReadOnly terminalText, int line, int column, int button);
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/ITerminalMouseListener2.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/ITerminalMouseListener2.java
new file mode 100644
index 00000000000..e33a663ab5a
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/ITerminalMouseListener2.java
@@ -0,0 +1,74 @@
+/*******************************************************************************
+ * Copyright (c) 2021 Kichwa Coders Canada Inc. and others.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.control;
+
+import org.eclipse.tm.terminal.model.ITerminalTextDataReadOnly;
+
+/**
+ * Extension of {@link ITerminalMouseListener} for consumers that need the stateMask for a button mouse action.
+ *
+ * If ITerminalMouseListener2 is used, the methods in ITerminalMouseListener will not be called.
+ *
+ * @since 5.2
+ * @see ITerminalMouseListener
+ */
+public interface ITerminalMouseListener2 extends ITerminalMouseListener {
+ /**
+ * Invoked when a double-click has happend inside the terminal control.<br>
+ * <br>
+ * <strong>Important:</strong> the event fires for every click, even outside the text region.
+ * @param terminalText a read-only view of the current terminal text
+ * @param button see {@link org.eclipse.swt.events.MouseEvent#button} for the meaning of the button values
+ * @param stateMask see {@link org.eclipse.swt.events.MouseEvent#stateMask} for the meaning of the values
+ */
+ default void mouseDoubleClick(ITerminalTextDataReadOnly terminalText, int line, int column, int button,
+ int stateMask) {
+ // do nothing by default so that implementors only need to implement methods they care about
+ }
+
+ @Override
+ default void mouseDoubleClick(ITerminalTextDataReadOnly terminalText, int line, int column, int button) {
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * Invoked when a mouse button is pushed down inside the terminal control.<br>
+ * <br>
+ * <strong>Important:</strong> the event fires for every mouse down, even outside the text region.
+ * @param terminalText a read-only view of the current terminal text
+ * @param button see {@link org.eclipse.swt.events.MouseEvent#button} for the meaning of the button values
+ * @param stateMask see {@link org.eclipse.swt.events.MouseEvent#stateMask} for the meaning of the values
+ */
+ default void mouseDown(ITerminalTextDataReadOnly terminalText, int line, int column, int button, int stateMask) {
+ // do nothing by default so that implementors only need to implement methods they care about
+ }
+
+ @Override
+ default void mouseDown(ITerminalTextDataReadOnly terminalText, int line, int column, int button) {
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * Invoked when a mouse button is released inside the terminal control.<br>
+ * <br>
+ * <strong>Important:</strong> the event fires for every mouse up, even outside the text region.
+ * @param terminalText a read-only view of the current terminal text
+ * @param button see {@link org.eclipse.swt.events.MouseEvent#button} for the meaning of the button values
+ * @param stateMask see {@link org.eclipse.swt.events.MouseEvent#stateMask} for the meaning of the values
+ */
+ default void mouseUp(ITerminalTextDataReadOnly terminalText, int line, int column, int button, int stateMask) {
+ // do nothing by default so that implementors only need to implement methods they care about
+ }
+
+ @Override
+ default void mouseUp(ITerminalTextDataReadOnly terminalText, int line, int column, int button) {
+ throw new UnsupportedOperationException();
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/ITerminalViewControl.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/ITerminalViewControl.java
new file mode 100644
index 00000000000..d08a36c5586
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/ITerminalViewControl.java
@@ -0,0 +1,202 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2021 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ * Martin Oberhuber (Wind River) - fixed copyright headers and beautified
+ * Martin Oberhuber (Wind River) - [204796] Terminal should allow setting the encoding to use
+ * Martin Oberhuber (Wind River) - [265352][api] Allow setting fonts programmatically
+ * Davy Landman (CWI) - [475267][api] Allow custom mouse listeners
+ ******************************************************************************/
+package org.eclipse.tm.internal.terminal.control;
+
+import java.io.UnsupportedEncodingException;
+import java.nio.charset.Charset;
+
+import org.eclipse.swt.dnd.Clipboard;
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.tm.internal.terminal.provisional.api.ITerminalConnector;
+import org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl;
+import org.eclipse.tm.internal.terminal.provisional.api.TerminalState;
+
+/**
+ * @author Michael Scharf
+ *
+ * @noextend This interface is not intended to be extended by clients.
+ * @noimplement This interface is not intended to be implemented by clients.
+ */
+public interface ITerminalViewControl {
+ /**
+ * Set the encoding that the Terminal uses to decode byte streams into
+ * characters.
+ *
+ * @see ITerminalControl#setEncoding(String)
+ * @since org.eclipse.tm.terminal 2.0
+ * @deprecated Use {@link #setCharset(Charset)} and do the error handling in the UI code.
+ */
+ @Deprecated
+ void setEncoding(String encoding) throws UnsupportedEncodingException;
+
+ /**
+ * Set the charset that the Terminal uses to decode byte streams into
+ * characters.
+ *
+ * @see ITerminalControl#setCharset(Charset)
+ * @since 5.3
+ */
+ void setCharset(Charset charset);
+
+ /**
+ * Get the Terminal's current encoding.
+ *
+ * @return the current Encoding of the Terminal.
+ * @see ITerminalControl#getEncoding()
+ * @since org.eclipse.tm.terminal 2.0
+ * @deprecated Use {@link #getCharset()} and call {@link Charset#name()} on the result
+ */
+ @Deprecated
+ String getEncoding();
+
+ /**
+ * @return the non-<code>null</code> current Charset of the Terminal.
+ * @see ITerminalControl#getCharset()
+ * @since 5.3
+ */
+ Charset getCharset();
+
+ boolean isEmpty();
+
+ /**
+ * Sets the Terminal font
+ * @deprecated use {@link #setFont(String)} in order to support bold and italic variants of the given font
+ * @param font
+ */
+ @Deprecated
+ void setFont(Font font);
+
+ /**
+ * Sets the font for the Terminal, using a JFace symbolic font name, such
+ * that bold and italic variants can be leveraged.
+ * @since 3.2
+ * @param fontName
+ */
+ void setFont(String fontName);
+
+ void setInvertedColors(boolean invert);
+
+ /**
+ * @since 5.1
+ */
+ boolean isInvertedColors();
+
+ Font getFont();
+
+ /**
+ * @return the text control
+ */
+ Control getControl();
+
+ /**
+ * @return the root of all controls
+ */
+ Control getRootControl();
+
+ boolean isDisposed();
+
+ void selectAll();
+
+ void clearTerminal();
+
+ void copy();
+
+ void paste();
+
+ String getSelection();
+
+ TerminalState getState();
+
+ Clipboard getClipboard();
+
+ void disconnectTerminal();
+
+ void disposeTerminal();
+
+ String getSettingsSummary();
+
+ ITerminalConnector[] getConnectors();
+
+ void setFocus();
+
+ ITerminalConnector getTerminalConnector();
+
+ void setConnector(ITerminalConnector connector);
+
+ void connectTerminal();
+
+ /**
+ * @param write a single character to terminal
+ */
+ void sendKey(char arg0);
+
+ /**
+ * @param string write string to terminal
+ */
+ public boolean pasteString(String string);
+
+ boolean isConnected();
+
+ /**
+ * @param inputField null means no input field is shown
+ */
+ void setCommandInputField(ICommandInputField inputField);
+
+ /**
+ * @return null or the current input field
+ */
+ ICommandInputField getCommandInputField();
+
+ /**
+ * @return the maximum number of lines to display
+ * in the terminal view. -1 means unlimited.
+ */
+ public int getBufferLineLimit();
+
+ /**
+ * @param bufferLineLimit the maximum number of lines to show
+ * in the terminal view. -1 means unlimited.
+ */
+ public void setBufferLineLimit(int bufferLineLimit);
+
+ boolean isScrollLock();
+
+ void setScrollLock(boolean on);
+
+ /**
+ * @since 4.1
+ * @param listener may be a {@link ITerminalMouseListener2} for extra callbacks
+ */
+ void addMouseListener(ITerminalMouseListener listener);
+
+ /**
+ * @since 4.1
+ * @param listener may be a {@link ITerminalMouseListener2} for extra callbacks
+ */
+ void removeMouseListener(ITerminalMouseListener listener);
+
+ /**
+ * @since 5.1
+ */
+ void setTerminalTitle(String newTitle);
+
+ /**
+ * @since 5.2
+ */
+ String getHoverSelection();
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/TerminalViewControlFactory.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/TerminalViewControlFactory.java
new file mode 100644
index 00000000000..b04fb597701
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/TerminalViewControlFactory.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ * Martin Oberhuber (Wind River) - fixed copyright headers and beautified
+ * Martin Oberhuber (Wind River) - [378691][api] push Preferences into the Widget
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.control;
+
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.tm.internal.terminal.emulator.VT100TerminalControl;
+import org.eclipse.tm.internal.terminal.provisional.api.ITerminalConnector;
+
+public class TerminalViewControlFactory {
+ /**
+ * Instantiate a Terminal widget.
+ * @param target Callback for notifying the owner of Terminal state changes.
+ * @param wndParent The Window parent to embed the Terminal in.
+ * @param connectors Provided connectors.
+ */
+ public static ITerminalViewControl makeControl(ITerminalListener target, Composite wndParent,
+ ITerminalConnector[] connectors) {
+ return makeControl(target, wndParent, connectors, false);
+ }
+
+ /**
+ * Instantiate a Terminal widget.
+ * @param target Callback for notifying the owner of Terminal state changes.
+ * @param wndParent The Window parent to embed the Terminal in.
+ * @param connectors Provided connectors.
+ * @param useCommonPrefs If <code>true</code>, the Terminal widget will pick up settings
+ * from the <code>org.eclipse.tm.terminal.TerminalPreferencePage</code> Preference page.
+ * Otherwise, clients need to maintain settings themselves.
+ * @since 3.2
+ */
+ public static ITerminalViewControl makeControl(ITerminalListener target, Composite wndParent,
+ ITerminalConnector[] connectors, boolean useCommonPrefs) {
+ return new VT100TerminalControl(target, wndParent, connectors, useCommonPrefs);
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/actions/AbstractTerminalAction.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/actions/AbstractTerminalAction.java
new file mode 100644
index 00000000000..776f8ede4c1
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/actions/AbstractTerminalAction.java
@@ -0,0 +1,95 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Initial Contributors:
+ * The following Wind River employees contributed to the Terminal component
+ * that contains this file: Chris Thew, Fran Litterio, Stephen Lamb,
+ * Helmut Haigermoser and Ted Williams.
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - split into core, view and connector plugins
+ * Martin Oberhuber (Wind River) - fixed copyright headers and beautified
+ * Anna Dushistova (MontaVista) - Adapted from TerminalAction
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.control.actions;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.resource.ImageRegistry;
+import org.eclipse.tm.internal.terminal.control.ITerminalViewControl;
+import org.eclipse.tm.internal.terminal.control.impl.TerminalPlugin;
+
+public abstract class AbstractTerminalAction extends Action {
+ private final ITerminalViewControl fTarget;
+
+ public AbstractTerminalAction(String strId) {
+ this(null, strId, 0);
+ }
+
+ public AbstractTerminalAction(ITerminalViewControl target, String strId) {
+ this(target, strId, 0);
+ }
+
+ public AbstractTerminalAction(ITerminalViewControl target, String strId, int style) {
+ super("", style); //$NON-NLS-1$
+
+ fTarget = target;
+
+ setId(strId);
+ }
+
+ @Override
+ abstract public void run();
+
+ protected void setupAction(String strText, String strToolTip, String strImage, String strEnabledImage,
+ String strDisabledImage, boolean bEnabled) {
+ setupAction(strText, strToolTip, strImage, strEnabledImage, strDisabledImage, bEnabled,
+ TerminalPlugin.getDefault().getImageRegistry());
+ }
+
+ protected void setupAction(String strText, String strToolTip, String strHoverImage, String strEnabledImage,
+ String strDisabledImage, boolean bEnabled, ImageRegistry imageRegistry) {
+ setupAction(strText, strToolTip, imageRegistry.getDescriptor(strHoverImage),
+ imageRegistry.getDescriptor(strEnabledImage), imageRegistry.getDescriptor(strDisabledImage), bEnabled);
+ }
+
+ protected void setupAction(String strText, String strToolTip, ImageDescriptor hoverImage,
+ ImageDescriptor enabledImage, ImageDescriptor disabledImage, boolean bEnabled) {
+ setText(strText);
+ setToolTipText(strToolTip);
+ setEnabled(bEnabled);
+ if (enabledImage != null) {
+ setImageDescriptor(enabledImage);
+ }
+ if (disabledImage != null) {
+ setDisabledImageDescriptor(disabledImage);
+ }
+ if (hoverImage != null) {
+ setHoverImageDescriptor(hoverImage);
+ }
+ }
+
+ /**
+ * Return the terminal instance on which the action should operate.
+ *
+ * @return the terminal instance on which the action should operate.
+ */
+ protected ITerminalViewControl getTarget() {
+ return fTarget;
+ }
+
+ /**
+ * Subclasses can update their action
+ *
+ * @param aboutToShow true before the menu is shown -- false when the menu
+ * gets hidden
+ */
+ public void updateAction(boolean aboutToShow) {
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/actions/ActionMessages.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/actions/ActionMessages.java
new file mode 100644
index 00000000000..b613258f390
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/actions/ActionMessages.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Initial Contributors:
+ * The following Wind River employees contributed to the Terminal component
+ * that contains this file: Chris Thew, Fran Litterio, Stephen Lamb,
+ * Helmut Haigermoser and Ted Williams.
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - split into core, view and connector plugins
+ * Martin Oberhuber (Wind River) - fixed copyright headers and beautified
+ * Anna Dushistova (MontaVista) - [227537] moved actions from terminal.view to terminal plugin
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.control.actions;
+
+import org.eclipse.osgi.util.NLS;
+
+public class ActionMessages extends NLS {
+ static {
+ NLS.initializeMessages(ActionMessages.class.getName(), ActionMessages.class);
+ }
+
+ public static String COPY;
+ public static String CUT;
+ public static String PASTE;
+ public static String SELECTALL;
+ public static String CLEARALL;
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/actions/ActionMessages.properties b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/actions/ActionMessages.properties
new file mode 100644
index 00000000000..e6302102f4d
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/actions/ActionMessages.properties
@@ -0,0 +1,27 @@
+###############################################################################
+# Copyright (c) 2003, 2018 Wind River Systems, Inc. and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Initial Contributors:
+# The following Wind River employees contributed to the Terminal component
+# that contains this file: Chris Thew, Fran Litterio, Stephen Lamb,
+# Helmut Haigermoser and Ted Williams.
+#
+# Contributors:
+# Michael Scharf (Wind River) - split into core, view and connector plugins
+# Martin Oberhuber (Wind River) - fixed copyright headers and beautified
+# Anna Dushistova (MontaVista) - [227537] moved actions from terminal.view to terminal plugin
+###############################################################################
+
+# NLS_MESSAGEFORMAT_NONE
+
+COPY = Copy
+CUT = Cut
+PASTE = Paste
+SELECTALL = Select All
+CLEARALL = Clear Terminal
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/actions/ImageConsts.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/actions/ImageConsts.java
new file mode 100644
index 00000000000..5d3852f41b7
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/actions/ImageConsts.java
@@ -0,0 +1,33 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Initial Contributors:
+ * The following Wind River employees contributed to the Terminal component
+ * that contains this file: Chris Thew, Fran Litterio, Stephen Lamb,
+ * Helmut Haigermoser and Ted Williams.
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - extracted from TerminalConsts
+ * Martin Oberhuber (Wind River) - fixed copyright headers and beautified
+ * Anna Dushistova (MontaVista) - [227537] moved actions from terminal.view to terminal plugin
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.control.actions;
+
+public interface ImageConsts {
+ public final static String IMAGE_DIR_ROOT = "icons/"; //$NON-NLS-1$
+ public final static String IMAGE_DIR_LOCALTOOL = IMAGE_DIR_ROOT + "clcl16/"; // basic colors - size 16x16 //$NON-NLS-1$
+ public final static String IMAGE_DIR_DLCL = IMAGE_DIR_ROOT + "dlcl16/"; // disabled - size 16x16 //$NON-NLS-1$
+ public final static String IMAGE_DIR_ELCL = IMAGE_DIR_ROOT + "elcl16/"; // enabled - size 16x16 //$NON-NLS-1$
+
+ public static final String IMAGE_CLCL_CLEAR_ALL = "ImageClclClearAll"; //$NON-NLS-1$
+
+ public static final String IMAGE_DLCL_CLEAR_ALL = "ImageDlclClearAll"; //$NON-NLS-1$
+
+ public static final String IMAGE_ELCL_CLEAR_ALL = "ImageElclClearAll"; //$NON-NLS-1$
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/actions/TerminalActionClearAll.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/actions/TerminalActionClearAll.java
new file mode 100644
index 00000000000..fb3e4a244de
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/actions/TerminalActionClearAll.java
@@ -0,0 +1,53 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Initial Contributors:
+ * The following Wind River employees contributed to the Terminal component
+ * that contains this file: Chris Thew, Fran Litterio, Stephen Lamb,
+ * Helmut Haigermoser and Ted Williams.
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - split into core, view and connector plugins
+ * Martin Oberhuber (Wind River) - fixed copyright headers and beautified
+ * Anna Dushistova (MontaVista) - [227537] moved actions from terminal.view to terminal plugin
+ * Uwe Stieber (Wind River) - [260372] [terminal] Certain terminal actions are enabled if no target terminal control is available
+ ********************************************************************************/
+package org.eclipse.tm.internal.terminal.control.actions;
+
+import org.eclipse.tm.internal.terminal.control.ITerminalViewControl;
+
+public class TerminalActionClearAll extends AbstractTerminalAction {
+ public TerminalActionClearAll() {
+ super(TerminalActionClearAll.class.getName());
+
+ setupAction(ActionMessages.CLEARALL, ActionMessages.CLEARALL, ImageConsts.IMAGE_CLCL_CLEAR_ALL,
+ ImageConsts.IMAGE_ELCL_CLEAR_ALL, ImageConsts.IMAGE_DLCL_CLEAR_ALL, false);
+ }
+
+ public TerminalActionClearAll(ITerminalViewControl target) {
+ super(target, TerminalActionClearAll.class.getName());
+
+ setupAction(ActionMessages.CLEARALL, ActionMessages.CLEARALL, ImageConsts.IMAGE_CLCL_CLEAR_ALL,
+ ImageConsts.IMAGE_ELCL_CLEAR_ALL, ImageConsts.IMAGE_DLCL_CLEAR_ALL, false);
+ }
+
+ @Override
+ public void run() {
+ ITerminalViewControl target = getTarget();
+ if (target != null) {
+ target.clearTerminal();
+ }
+ }
+
+ @Override
+ public void updateAction(boolean aboutToShow) {
+ ITerminalViewControl target = getTarget();
+ setEnabled(target != null && !target.isEmpty());
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/actions/TerminalActionCopy.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/actions/TerminalActionCopy.java
new file mode 100644
index 00000000000..d504de61786
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/actions/TerminalActionCopy.java
@@ -0,0 +1,69 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Initial Contributors:
+ * The following Wind River employees contributed to the Terminal component
+ * that contains this file: Chris Thew, Fran Litterio, Stephen Lamb,
+ * Helmut Haigermoser and Ted Williams.
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - split into core, view and connector plugins
+ * Martin Oberhuber (Wind River) - fixed copyright headers and beautified
+ * Anna Dushistova (MontaVista) - [227537] moved actions from terminal.view to terminal plugin
+ * Uwe Stieber (Wind River) - [260372] [terminal] Certain terminal actions are enabled if no target terminal control is available
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.control.actions;
+
+import org.eclipse.tm.internal.terminal.control.ITerminalViewControl;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.PlatformUI;
+
+public class TerminalActionCopy extends AbstractTerminalAction {
+ public TerminalActionCopy() {
+ super(TerminalActionCopy.class.getName());
+ setActionDefinitionId("org.eclipse.tm.terminal.copy"); //$NON-NLS-1$
+ ISharedImages si = PlatformUI.getWorkbench().getSharedImages();
+ setupAction(ActionMessages.COPY, ActionMessages.COPY, si.getImageDescriptor(ISharedImages.IMG_TOOL_COPY),
+ si.getImageDescriptor(ISharedImages.IMG_TOOL_COPY),
+ si.getImageDescriptor(ISharedImages.IMG_TOOL_COPY_DISABLED), true);
+ }
+
+ public TerminalActionCopy(ITerminalViewControl target) {
+ super(target, TerminalActionCopy.class.getName());
+ setActionDefinitionId("org.eclipse.tm.terminal.copy"); //$NON-NLS-1$
+ ISharedImages si = PlatformUI.getWorkbench().getSharedImages();
+ setupAction(ActionMessages.COPY, ActionMessages.COPY, si.getImageDescriptor(ISharedImages.IMG_TOOL_COPY),
+ si.getImageDescriptor(ISharedImages.IMG_TOOL_COPY),
+ si.getImageDescriptor(ISharedImages.IMG_TOOL_COPY_DISABLED), true);
+ }
+
+ @Override
+ public void run() {
+ ITerminalViewControl target = getTarget();
+ if (target != null) {
+ String selection = target.getSelection();
+
+ if (!selection.equals("")) {//$NON-NLS-1$
+ target.copy();
+ } else {
+ target.sendKey('\u0003');
+ }
+ }
+ }
+
+ @Override
+ public void updateAction(boolean aboutToShow) {
+ ITerminalViewControl target = getTarget();
+ if (aboutToShow && target != null) {
+ setEnabled(!target.getSelection().isEmpty());
+ } else {
+ setEnabled(false);
+ }
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/actions/TerminalActionCut.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/actions/TerminalActionCut.java
new file mode 100644
index 00000000000..172c5f3ac35
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/actions/TerminalActionCut.java
@@ -0,0 +1,56 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Initial Contributors:
+ * The following Wind River employees contributed to the Terminal component
+ * that contains this file: Chris Thew, Fran Litterio, Stephen Lamb,
+ * Helmut Haigermoser and Ted Williams.
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - split into core, view and connector plugins
+ * Martin Oberhuber (Wind River) - fixed copyright headers and beautified
+ * Uwe Stieber (Wind River) - [260372] [terminal] Certain terminal actions are enabled if no target terminal control is available
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.control.actions;
+
+import org.eclipse.tm.internal.terminal.control.ITerminalViewControl;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.PlatformUI;
+
+public class TerminalActionCut extends AbstractTerminalAction {
+ public TerminalActionCut() {
+ super(TerminalActionCut.class.getName());
+ ISharedImages si = PlatformUI.getWorkbench().getSharedImages();
+ setupAction(ActionMessages.CUT, ActionMessages.CUT, si.getImageDescriptor(ISharedImages.IMG_TOOL_CUT),
+ si.getImageDescriptor(ISharedImages.IMG_TOOL_CUT),
+ si.getImageDescriptor(ISharedImages.IMG_TOOL_CUT_DISABLED), true);
+ }
+
+ public TerminalActionCut(ITerminalViewControl target) {
+ super(target, TerminalActionCut.class.getName());
+ ISharedImages si = PlatformUI.getWorkbench().getSharedImages();
+ setupAction(ActionMessages.CUT, ActionMessages.CUT, si.getImageDescriptor(ISharedImages.IMG_TOOL_CUT),
+ si.getImageDescriptor(ISharedImages.IMG_TOOL_CUT),
+ si.getImageDescriptor(ISharedImages.IMG_TOOL_CUT_DISABLED), true);
+ }
+
+ @Override
+ public void run() {
+ ITerminalViewControl target = getTarget();
+ if (target != null) {
+ target.sendKey('\u0018');
+ }
+ }
+
+ @Override
+ public void updateAction(boolean aboutToShow) {
+ // Cut is always disabled
+ setEnabled(false);
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/actions/TerminalActionPaste.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/actions/TerminalActionPaste.java
new file mode 100644
index 00000000000..2003f8e9270
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/actions/TerminalActionPaste.java
@@ -0,0 +1,74 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Initial Contributors:
+ * The following Wind River employees contributed to the Terminal component
+ * that contains this file: Chris Thew, Fran Litterio, Stephen Lamb,
+ * Helmut Haigermoser and Ted Williams.
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - split into core, view and connector plugins
+ * Martin Oberhuber (Wind River) - fixed copyright headers and beautified
+ * Anna Dushistova (MontaVista) - [227537] moved actions from terminal.view to terminal plugin
+ * Uwe Stieber (Wind River) - [260372] [terminal] Certain terminal actions are enabled if no target terminal control is available
+ * Uwe Stieber (Wind River) - [294719] [terminal] SWT Widget disposed in TerminalActionPaste
+ * Martin Oberhuber (Wind River) - [296212] Cannot paste text into terminal on some Linux hosts
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.control.actions;
+
+import org.eclipse.swt.dnd.TextTransfer;
+import org.eclipse.tm.internal.terminal.control.ITerminalViewControl;
+import org.eclipse.tm.internal.terminal.provisional.api.TerminalState;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.PlatformUI;
+
+public class TerminalActionPaste extends AbstractTerminalAction {
+ public TerminalActionPaste() {
+ super(TerminalActionPaste.class.getName());
+ setActionDefinitionId("org.eclipse.tm.terminal.paste"); //$NON-NLS-1$
+ ISharedImages si = PlatformUI.getWorkbench().getSharedImages();
+ setupAction(ActionMessages.PASTE, ActionMessages.PASTE, si.getImageDescriptor(ISharedImages.IMG_TOOL_PASTE),
+ si.getImageDescriptor(ISharedImages.IMG_TOOL_PASTE),
+ si.getImageDescriptor(ISharedImages.IMG_TOOL_PASTE_DISABLED), false);
+ }
+
+ public TerminalActionPaste(ITerminalViewControl target) {
+ super(target, TerminalActionPaste.class.getName());
+ setActionDefinitionId("org.eclipse.tm.terminal.paste"); //$NON-NLS-1$
+ ISharedImages si = PlatformUI.getWorkbench().getSharedImages();
+ setupAction(ActionMessages.PASTE, ActionMessages.PASTE, si.getImageDescriptor(ISharedImages.IMG_TOOL_PASTE),
+ si.getImageDescriptor(ISharedImages.IMG_TOOL_PASTE),
+ si.getImageDescriptor(ISharedImages.IMG_TOOL_PASTE_DISABLED), false);
+ }
+
+ @Override
+ public void run() {
+ ITerminalViewControl target = getTarget();
+ if (target != null) {
+ target.paste();
+ }
+ }
+
+ @Override
+ public void updateAction(boolean aboutToShow) {
+ ITerminalViewControl target = getTarget();
+ boolean bEnabled = false;
+ if (target != null) {
+ if (target.getState() == TerminalState.CONNECTED) {
+ if (target.getClipboard() != null && !target.getClipboard().isDisposed()) {
+ String strText = (String) target.getClipboard().getContents(TextTransfer.getInstance());
+ if (strText != null && !strText.isEmpty()) {
+ bEnabled = true;
+ }
+ }
+ }
+ }
+ setEnabled(bEnabled);
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/actions/TerminalActionSelectAll.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/actions/TerminalActionSelectAll.java
new file mode 100644
index 00000000000..23a6ebaa4d1
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/actions/TerminalActionSelectAll.java
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Initial Contributors:
+ * The following Wind River employees contributed to the Terminal component
+ * that contains this file: Chris Thew, Fran Litterio, Stephen Lamb,
+ * Helmut Haigermoser and Ted Williams.
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - split into core, view and connector plugins
+ * Martin Oberhuber (Wind River) - fixed copyright headers and beautified
+ * Anna Dushistova (MontaVista) - [227537] moved actions from terminal.view to terminal plugin
+ * Uwe Stieber (Wind River) - [260372] [terminal] Certain terminal actions are enabled if no target terminal control is available
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.control.actions;
+
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.tm.internal.terminal.control.ITerminalViewControl;
+
+public class TerminalActionSelectAll extends AbstractTerminalAction {
+ public TerminalActionSelectAll() {
+ super(TerminalActionSelectAll.class.getName());
+
+ setupAction(ActionMessages.SELECTALL, ActionMessages.SELECTALL, (ImageDescriptor) null, null, null, false);
+ }
+
+ public TerminalActionSelectAll(ITerminalViewControl target) {
+ super(target, TerminalActionSelectAll.class.getName());
+
+ setupAction(ActionMessages.SELECTALL, ActionMessages.SELECTALL, (ImageDescriptor) null, null, null, false);
+ }
+
+ @Override
+ public void run() {
+ ITerminalViewControl target = getTarget();
+ if (target != null) {
+ target.selectAll();
+ }
+ }
+
+ @Override
+ public void updateAction(boolean aboutToShow) {
+ ITerminalViewControl target = getTarget();
+ setEnabled(target != null && !target.isEmpty());
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/impl/ITerminalControlForText.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/impl/ITerminalControlForText.java
new file mode 100644
index 00000000000..7fa736975e5
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/impl/ITerminalControlForText.java
@@ -0,0 +1,43 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ * Martin Oberhuber (Wind River) - fixed copyright headers and beautified
+ * Anton Leherbauer (Wind River) - [458398] Add support for normal/application cursor keys mode
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.control.impl;
+
+import java.io.OutputStream;
+
+import org.eclipse.tm.internal.terminal.provisional.api.ITerminalConnector;
+import org.eclipse.tm.internal.terminal.provisional.api.TerminalState;
+
+/**
+ * need a better name!
+ * @author Michael Scharf
+ *
+ */
+public interface ITerminalControlForText {
+
+ TerminalState getState();
+
+ void setState(TerminalState state);
+
+ void setTerminalTitle(String title);
+
+ ITerminalConnector getTerminalConnector();
+
+ OutputStream getOutputStream();
+
+ /**
+ * Enable/disable Application Cursor Keys mode (DECCKM)
+ * @param enable
+ */
+ void enableApplicationCursorKeys(boolean enable);
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/impl/TerminalMessages.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/impl/TerminalMessages.java
new file mode 100644
index 00000000000..2826d00fc31
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/impl/TerminalMessages.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ * Martin Oberhuber (Wind River) - fixed copyright headers and beautified
+ * Martin Oberhuber (Wind River) - [378691][api] push Preferences into the Widget
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.control.impl;
+
+import org.eclipse.osgi.util.NLS;
+
+public class TerminalMessages extends NLS {
+ static {
+ NLS.initializeMessages(TerminalMessages.class.getName(), TerminalMessages.class);
+ }
+
+ public static String TerminalColorPresets_EclipseDark;
+ public static String TerminalColorPresets_EclipseLight;
+ public static String TerminalColorPresets_TerminalDefaults;
+ public static String TerminalColorsFieldEditor_Background;
+ public static String TerminalColorsFieldEditor_Black;
+ public static String TerminalColorsFieldEditor_Blue;
+ public static String TerminalColorsFieldEditor_BrightBlack;
+ public static String TerminalColorsFieldEditor_BrightBlue;
+ public static String TerminalColorsFieldEditor_BrightCyan;
+ public static String TerminalColorsFieldEditor_BrightGreen;
+ public static String TerminalColorsFieldEditor_BrightMagenta;
+ public static String TerminalColorsFieldEditor_BrightRed;
+ public static String TerminalColorsFieldEditor_BrightWhite;
+ public static String TerminalColorsFieldEditor_BrightYellow;
+ public static String TerminalColorsFieldEditor_Cyan;
+ public static String TerminalColorsFieldEditor_GeneralColors;
+ public static String TerminalColorsFieldEditor_Green;
+ public static String TerminalColorsFieldEditor_LoadPresets;
+ public static String TerminalColorsFieldEditor_Magenta;
+ public static String TerminalColorsFieldEditor_PaletteColors;
+ public static String TerminalColorsFieldEditor_Presets;
+ public static String TerminalColorsFieldEditor_Red;
+ public static String TerminalColorsFieldEditor_SelectedText;
+ public static String TerminalColorsFieldEditor_Selection;
+ public static String TerminalColorsFieldEditor_TextColor;
+ public static String TerminalColorsFieldEditor_White;
+ public static String TerminalColorsFieldEditor_Yellow;
+ public static String TerminalError;
+ public static String SocketError;
+ public static String IOError;
+ public static String CannotConnectTo;
+ public static String NotInitialized;
+
+ //Preference Page
+ public static String INVERT_COLORS;
+ public static String BUFFERLINES;
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/impl/TerminalMessages.properties b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/impl/TerminalMessages.properties
new file mode 100644
index 00000000000..7d6366889ea
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/impl/TerminalMessages.properties
@@ -0,0 +1,56 @@
+###############################################################################
+# Copyright (c) 2003, 2020 Wind River Systems, Inc. and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Initial Contributors:
+# The following Wind River employees contributed to the Terminal component
+# that contains this file: Chris Thew, Fran Litterio, Stephen Lamb,
+# Helmut Haigermoser and Ted Williams.
+#
+# Contributors:
+# Michael Scharf (Wind River) - split into core, view and connector plugins
+# Martin Oberhuber (Wind River) - fixed copyright headers and beautified
+# Martin Oberhuber (Wind River) - [378691][api] push Preferences into the Widget
+###############################################################################
+
+# NLS_MESSAGEFORMAT_VAR
+TerminalColorPresets_EclipseLight=Eclipse Light
+TerminalColorPresets_TerminalDefaults=Terminal Defaults
+TerminalColorPresets_EclipseDark=Eclipse Dark
+TerminalColorsFieldEditor_Background=Background
+TerminalColorsFieldEditor_Black=Black
+TerminalColorsFieldEditor_Blue=Blue
+TerminalColorsFieldEditor_BrightBlack=Bright Black
+TerminalColorsFieldEditor_BrightBlue=Bright Blue
+TerminalColorsFieldEditor_BrightCyan=Bright Cyan
+TerminalColorsFieldEditor_BrightGreen=Bright Green
+TerminalColorsFieldEditor_BrightMagenta=Bright Magenta
+TerminalColorsFieldEditor_BrightRed=Bright Red
+TerminalColorsFieldEditor_BrightWhite=Bright White
+TerminalColorsFieldEditor_BrightYellow=Bright Yellow
+TerminalColorsFieldEditor_Cyan=Cyan
+TerminalColorsFieldEditor_GeneralColors=General colors
+TerminalColorsFieldEditor_Green=Green
+TerminalColorsFieldEditor_LoadPresets=Load Presets...
+TerminalColorsFieldEditor_Magenta=Magenta
+TerminalColorsFieldEditor_PaletteColors=Palette colors
+TerminalColorsFieldEditor_Presets=Presets
+TerminalColorsFieldEditor_Red=Red
+TerminalColorsFieldEditor_SelectedText=Selected text
+TerminalColorsFieldEditor_Selection=Selection
+TerminalColorsFieldEditor_TextColor=Text color
+TerminalColorsFieldEditor_White=White
+TerminalColorsFieldEditor_Yellow=Yellow
+TerminalError = Terminal Error
+SocketError = Socket Error
+IOError = IO Error
+CannotConnectTo = Cannot initialize {0}:\n{1}
+NotInitialized = Not Initialized
+
+INVERT_COLORS = Invert terminal colors
+BUFFERLINES = Terminal buffer lines:
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/impl/TerminalPlugin.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/impl/TerminalPlugin.java
new file mode 100644
index 00000000000..f8a46ccda47
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/impl/TerminalPlugin.java
@@ -0,0 +1,93 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Initial Contributors:
+ * The following Wind River employees contributed to the Terminal component
+ * that contains this file: Chris Thew, Fran Litterio, Stephen Lamb,
+ * Helmut Haigermoser and Ted Williams.
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - split into core, view and connector plugins
+ * Martin Oberhuber (Wind River) - fixed copyright headers and beautified
+ * Anna Dushistova (MontaVista) - [227537] moved actions from terminal.view to terminal plugin
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.control.impl;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.resource.ImageRegistry;
+import org.eclipse.tm.internal.terminal.control.actions.ImageConsts;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+public class TerminalPlugin extends AbstractUIPlugin {
+ private static TerminalPlugin plugin;
+ public static final String PLUGIN_ID = "org.eclipse.tm.terminal.control"; //$NON-NLS-1$
+ public static final String HELP_VIEW = PLUGIN_ID + ".terminal_view"; //$NON-NLS-1$
+
+ /**
+ * The constructor.
+ */
+ public TerminalPlugin() {
+ }
+
+ /**
+ * Returns the shared instance.
+ */
+ public static TerminalPlugin getDefault() {
+ return plugin;
+ }
+
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ public static boolean isOptionEnabled(String strOption) {
+ String strEnabled = Platform.getDebugOption(strOption);
+ if (strEnabled == null)
+ return false;
+
+ return Boolean.parseBoolean(strEnabled);
+ }
+
+ @Override
+ protected void initializeImageRegistry(ImageRegistry imageRegistry) {
+ try {
+ // Local toolbars
+ putImageInRegistry(imageRegistry, ImageConsts.IMAGE_CLCL_CLEAR_ALL,
+ ImageConsts.IMAGE_DIR_LOCALTOOL + "clear_co.gif"); //$NON-NLS-1$
+ // Enabled local toolbars
+ putImageInRegistry(imageRegistry, ImageConsts.IMAGE_ELCL_CLEAR_ALL,
+ ImageConsts.IMAGE_DIR_ELCL + "clear_co.gif"); //$NON-NLS-1$
+ // Disabled local toolbars
+ putImageInRegistry(imageRegistry, ImageConsts.IMAGE_DLCL_CLEAR_ALL,
+ ImageConsts.IMAGE_DIR_DLCL + "clear_co.gif"); //$NON-NLS-1$
+ } catch (MalformedURLException malformedURLException) {
+ malformedURLException.printStackTrace();
+ }
+ }
+
+ protected void putImageInRegistry(ImageRegistry imageRegistry, String strKey, String relativePath)
+ throws MalformedURLException {
+ URL url = TerminalPlugin.getDefault().getBundle().getEntry(relativePath);
+ ImageDescriptor imageDescriptor = ImageDescriptor.createFromURL(url);
+ imageRegistry.put(strKey, imageDescriptor);
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/emulator/EditActionAccelerators.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/emulator/EditActionAccelerators.java
new file mode 100644
index 00000000000..af825928674
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/emulator/EditActionAccelerators.java
@@ -0,0 +1,70 @@
+/*******************************************************************************
+ * Copyright (c) 2013, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.tm.internal.terminal.emulator;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.jface.bindings.TriggerSequence;
+import org.eclipse.jface.bindings.keys.KeySequence;
+import org.eclipse.jface.bindings.keys.KeyStroke;
+import org.eclipse.jface.bindings.keys.SWTKeySupport;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.keys.IBindingService;
+
+class EditActionAccelerators {
+ private static final String COPY_COMMAND_ID = "org.eclipse.tm.terminal.copy"; //$NON-NLS-1$
+ private static final String PASTE_COMMAND_ID = "org.eclipse.tm.terminal.paste"; //$NON-NLS-1$
+
+ private final Map<Integer, String> commandIdsByAccelerator = new HashMap<>();
+
+ private void load() {
+ addAccelerator(COPY_COMMAND_ID);
+ addAccelerator(PASTE_COMMAND_ID);
+ }
+
+ private void addAccelerator(String commandId) {
+ TriggerSequence[] bindings = bindingsFor(commandId);
+ for (int i = 0; i < bindings.length; ++i) {
+ if (bindings[i] instanceof KeySequence) {
+ KeyStroke[] keyStrokes = ((KeySequence) bindings[i]).getKeyStrokes();
+ if (keyStrokes.length != 0) {
+ int accelerator = SWTKeySupport.convertKeyStrokeToAccelerator(keyStrokes[0]);
+ commandIdsByAccelerator.put(Integer.valueOf(accelerator), commandId);
+ }
+ }
+ }
+ }
+
+ private static TriggerSequence[] bindingsFor(String commandId) {
+ IBindingService bindingService = bindingService();
+ return bindingService.getActiveBindingsFor(commandId);
+ }
+
+ private static IBindingService bindingService() {
+ return PlatformUI.getWorkbench().getAdapter(IBindingService.class);
+ }
+
+ boolean isCopyAction(int accelerator) {
+ return isMatchingAction(accelerator, COPY_COMMAND_ID);
+ }
+
+ boolean isPasteAction(int accelerator) {
+ return isMatchingAction(accelerator, PASTE_COMMAND_ID);
+ }
+
+ private boolean isMatchingAction(int accelerator, String commandId) {
+ if (commandIdsByAccelerator.isEmpty()) {
+ load();
+ }
+ return commandId.equals(commandIdsByAccelerator.get(Integer.valueOf(accelerator)));
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/emulator/IVT100EmulatorBackend.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/emulator/IVT100EmulatorBackend.java
new file mode 100644
index 00000000000..c835bb817c4
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/emulator/IVT100EmulatorBackend.java
@@ -0,0 +1,230 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ * Anton Leherbauer (Wind River) - [433751] Add option to enable VT100 line wrapping mode
+ * Anton Leherbauer (Wind River) - [458218] Add support for ANSI insert mode
+ * Anton Leherbauer (Wind River) - [458402] Add support for scroll up/down and scroll region
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.emulator;
+
+import org.eclipse.tm.terminal.model.TerminalStyle;
+
+/**
+ *
+ */
+public interface IVT100EmulatorBackend {
+
+ /**
+ * This method erases all text from the Terminal view. Including the history
+ */
+ void clearAll();
+
+ /**
+ * Sets the Dimensions of the addressable scroll space of the screen....
+ * Keeps the cursor position relative to the bottom of the screen!
+ * @param lines
+ * @param cols
+ */
+ void setDimensions(int lines, int cols);
+
+ /**
+ * This method makes room for N characters on the current line at the cursor
+ * position. Text under the cursor moves right without wrapping at the end
+ * of the line.
+ * 01234
+ * 0 123
+ */
+ void insertCharacters(int charactersToInsert);
+
+ /**
+ * Erases from cursor to end of screen, including cursor position. Cursor does not move.
+ */
+ void eraseToEndOfScreen();
+
+ /**
+ * Erases from beginning of screen to cursor, including cursor position. Cursor does not move.
+ */
+ void eraseToCursor();
+
+ /**
+ * Erases complete display. All lines are erased and changed to single-width. Cursor does not move.
+ */
+ void eraseAll();
+
+ /**
+ * Erases complete line.
+ */
+ void eraseLine();
+
+ /**
+ * Erases from cursor to end of line, including cursor position.
+ */
+ void eraseLineToEnd();
+
+ /**
+ * Erases from beginning of line to cursor, including cursor position.
+ */
+ void eraseLineToCursor();
+
+ /**
+ * Inserts n lines at line with cursor. Lines displayed below cursor move down.
+ * Lines moved past the bottom margin are lost. This sequence is ignored when
+ * cursor is outside scrolling region.
+ * @param n the number of lines to insert
+ */
+ void insertLines(int n);
+
+ /**
+ * Deletes n characters, starting with the character at cursor position.
+ * When a character is deleted, all characters to the right of cursor move
+ * left. This creates a space character at right margin. This character
+ * has same character attribute as the last character moved left.
+ * @param n
+ * 012345
+ * 0145xx
+ */
+ void deleteCharacters(int n);
+
+ /**
+ * Deletes n lines, starting at line with cursor. As lines are deleted,
+ * lines displayed below cursor move up. Lines added to bottom of screen
+ * have spaces with same character attributes as last line moved up. This
+ * sequence is ignored when cursor is outside scrolling region.
+ * @param n the number of lines to delete
+ */
+ void deleteLines(int n);
+
+ TerminalStyle getDefaultStyle();
+
+ void setDefaultStyle(TerminalStyle defaultStyle);
+
+ TerminalStyle getStyle();
+
+ /**
+ * Sets the style to be used from now on
+ * @param style
+ */
+ void setStyle(TerminalStyle style);
+
+ /**
+ * This method displays a subset of the newly-received text in the Terminal
+ * view, wrapping text at the right edge of the screen and overwriting text
+ * when the cursor is not at the very end of the screen's text.
+ * <p>
+ *
+ * There are never any ANSI control characters or escape sequences in the
+ * text being displayed by this method (this includes newlines, carriage
+ * returns, and tabs).
+ * <p>
+ */
+ void appendString(String buffer);
+
+ /**
+ * Process a newline (Control-J) character. A newline (NL) character just
+ * moves the cursor to the same column on the next line, creating new lines
+ * when the cursor reaches the bottom edge of the terminal. This is
+ * counter-intuitive, especially to UNIX programmers who are taught that
+ * writing a single NL to a terminal is sufficient to move the cursor to the
+ * first column of the next line, as if a carriage return (CR) and a NL were
+ * written.
+ * <p>
+ *
+ * UNIX terminals typically display a NL character as a CR followed by a NL
+ * because the terminal device typically has the ONLCR attribute bit set
+ * (see the termios(4) man page for details), which causes the terminal
+ * device driver to translate NL to CR + NL on output. The terminal itself
+ * (i.e., a hardware terminal or a terminal emulator, like xterm or this
+ * code) _always_ interprets a CR to mean "move the cursor to the beginning
+ * of the current line" and a NL to mean "move the cursor to the same column
+ * on the next line".
+ * <p>
+ */
+ void processNewline();
+
+ /**
+ * This method returns the relative line number of the line containing the
+ * cursor. The returned line number is relative to the topmost visible line,
+ * which has relative line number 0.
+ *
+ * @return The relative line number of the line containing the cursor.
+ */
+ int getCursorLine();
+
+ int getCursorColumn();
+
+ /**
+ * This method moves the cursor to the specified line and column. Parameter
+ * <i>targetLine</i> is the line number of a screen line, so it has a
+ * minimum value of 0 (the topmost screen line) and a maximum value of
+ * heightInLines - 1 (the bottommost screen line). A line does not have to
+ * contain any text to move the cursor to any column in that line.
+ */
+ void setCursor(int targetLine, int targetColumn);
+
+ void setCursorColumn(int targetColumn);
+
+ void setCursorLine(int targetLine);
+
+ int getLines();
+
+ int getColumns();
+
+ /**
+ * Enables VT100 line wrapping mode (default is off).
+ * This corresponds to the VT100 'eat_newline_glitch' terminal capability.
+ * If enabled, writing to the rightmost column does not cause
+ * an immediate wrap to the next line. Instead the line wrap occurs on the
+ * next output character.
+ *
+ * @param enable whether to enable or disable VT100 line wrapping mode
+ */
+ void setVT100LineWrapping(boolean enable);
+
+ /**
+ * @return whether VT100 line wrapping mode is enabled
+ */
+ boolean isVT100LineWrapping();
+
+ /**
+ * Enables/disables insert mode (IRM).
+ *
+ * @param enable whether to enable insert mode
+ */
+ void setInsertMode(boolean enable);
+
+ /**
+ * Set scrolling region. Negative values reset the scroll region.
+ *
+ * @param top top line of scroll region
+ * @param bottom bottom line of scroll region
+ */
+ void setScrollRegion(int top, int bottom);
+
+ /**
+ * Scroll text upwards.
+ *
+ * @param lines number of lines to scroll
+ */
+ void scrollUp(int lines);
+
+ /**
+ * Scroll text downwards.
+ *
+ * @param lines number of lines to scroll
+ */
+ void scrollDown(int lines);
+
+ /**
+ * Process a reverse line feed/reverse index.
+ *
+ * The content is scrolled down if the cursor is at the top of the
+ * scroll region.
+ */
+ void processReverseLineFeed();
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/emulator/LoggingOutputStream.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/emulator/LoggingOutputStream.java
new file mode 100644
index 00000000000..24c50555b26
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/emulator/LoggingOutputStream.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.emulator;
+
+import java.io.FilterOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+
+import org.eclipse.tm.internal.terminal.provisional.api.Logger;
+
+public class LoggingOutputStream extends FilterOutputStream {
+
+ public LoggingOutputStream(OutputStream out) {
+ super(out);
+ }
+
+ @Override
+ public void write(byte[] b, int off, int len) throws IOException {
+ if (Logger.isLogEnabled())
+ Logger.log("Received " + len + " bytes: '" + //$NON-NLS-1$ //$NON-NLS-2$
+ Logger.encode(new String(b, 0, len)) + "'"); //$NON-NLS-1$
+
+ // we cannot call super.write, because this would call our write
+ // which logs character by character.....
+ //super.write(b, off, len);
+ if ((off | len | (b.length - (len + off)) | (off + len)) < 0)
+ throw new IndexOutOfBoundsException();
+
+ for (int i = 0; i < len; i++) {
+ super.write(b[off + i]);
+ }
+ }
+
+ @Override
+ public void write(int b) throws IOException {
+ if (Logger.isLogEnabled())
+ Logger.log("Received " + 1 + " bytes: '" + //$NON-NLS-1$ //$NON-NLS-2$
+ Logger.encode(new String(new byte[] { (byte) b }, 0, 1)) + "'"); //$NON-NLS-1$
+ super.write(b);
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/emulator/VT100BackendTraceDecorator.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/emulator/VT100BackendTraceDecorator.java
new file mode 100644
index 00000000000..615a7d6f618
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/emulator/VT100BackendTraceDecorator.java
@@ -0,0 +1,214 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ * Anton Leherbauer (Wind River) - [433751] Add option to enable VT100 line wrapping mode
+ * Anton Leherbauer (Wind River) - [458218] Add support for ANSI insert mode
+ * Anton Leherbauer (Wind River) - [458402] Add support for scroll up/down and scroll region
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.emulator;
+
+import java.io.PrintStream;
+
+import org.eclipse.tm.terminal.model.TerminalStyle;
+
+public class VT100BackendTraceDecorator implements IVT100EmulatorBackend {
+ final IVT100EmulatorBackend fBackend;
+ final PrintStream fWriter;
+
+ public VT100BackendTraceDecorator(IVT100EmulatorBackend backend, PrintStream out) {
+ fBackend = backend;
+ fWriter = out;
+ }
+
+ @Override
+ public void appendString(String buffer) {
+ fWriter.println("appendString(\"" + buffer + "\")"); //$NON-NLS-1$ //$NON-NLS-2$
+ fBackend.appendString(buffer);
+ }
+
+ @Override
+ public void clearAll() {
+ fWriter.println("clearAll()"); //$NON-NLS-1$
+ fBackend.clearAll();
+ }
+
+ @Override
+ public void deleteCharacters(int n) {
+ fWriter.println("deleteCharacters(" + n + ")"); //$NON-NLS-1$ //$NON-NLS-2$
+ fBackend.deleteCharacters(n);
+ }
+
+ @Override
+ public void deleteLines(int n) {
+ fWriter.println("deleteLines(" + n + ")"); //$NON-NLS-1$ //$NON-NLS-2$
+ fBackend.deleteLines(n);
+ }
+
+ @Override
+ public void eraseAll() {
+ fWriter.println("eraseAll()"); //$NON-NLS-1$
+ fBackend.eraseAll();
+ }
+
+ @Override
+ public void eraseLine() {
+ fWriter.println("eraseLine()"); //$NON-NLS-1$
+ fBackend.eraseLine();
+ }
+
+ @Override
+ public void eraseLineToCursor() {
+ fWriter.println("eraseLineToCursor()"); //$NON-NLS-1$
+ fBackend.eraseLineToCursor();
+ }
+
+ @Override
+ public void eraseLineToEnd() {
+ fWriter.println("eraseLineToEnd()"); //$NON-NLS-1$
+ fBackend.eraseLineToEnd();
+ }
+
+ @Override
+ public void eraseToCursor() {
+ fWriter.println("eraseToCursor()"); //$NON-NLS-1$
+ fBackend.eraseToCursor();
+ }
+
+ @Override
+ public void eraseToEndOfScreen() {
+ fWriter.println("eraseToEndOfScreen()"); //$NON-NLS-1$
+ fBackend.eraseToEndOfScreen();
+ }
+
+ @Override
+ public int getColumns() {
+ return fBackend.getColumns();
+ }
+
+ @Override
+ public int getCursorColumn() {
+ return fBackend.getCursorColumn();
+ }
+
+ @Override
+ public int getCursorLine() {
+ return fBackend.getCursorLine();
+ }
+
+ @Override
+ public TerminalStyle getDefaultStyle() {
+ return fBackend.getDefaultStyle();
+ }
+
+ @Override
+ public int getLines() {
+ return fBackend.getLines();
+ }
+
+ @Override
+ public TerminalStyle getStyle() {
+ return fBackend.getStyle();
+ }
+
+ @Override
+ public void insertCharacters(int charactersToInsert) {
+ fWriter.println("insertCharacters(" + charactersToInsert + ")"); //$NON-NLS-1$ //$NON-NLS-2$
+ fBackend.insertCharacters(charactersToInsert);
+ }
+
+ @Override
+ public void insertLines(int n) {
+ fWriter.println("insertLines(" + n + ")"); //$NON-NLS-1$ //$NON-NLS-2$
+ fBackend.insertLines(n);
+ }
+
+ @Override
+ public void processNewline() {
+ fWriter.println("processNewline()"); //$NON-NLS-1$
+ fBackend.processNewline();
+ }
+
+ @Override
+ public void setCursor(int targetLine, int targetColumn) {
+ fWriter.println("setCursor(" + targetLine + ", " + targetColumn + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ fBackend.setCursor(targetLine, targetColumn);
+ }
+
+ @Override
+ public void setCursorColumn(int targetColumn) {
+ fWriter.println("setCursorColumn(" + targetColumn + ")"); //$NON-NLS-1$ //$NON-NLS-2$
+ fBackend.setCursorColumn(targetColumn);
+ }
+
+ @Override
+ public void setCursorLine(int targetLine) {
+ fWriter.println("setCursorLine(" + targetLine + ")"); //$NON-NLS-1$ //$NON-NLS-2$
+ fBackend.setCursorLine(targetLine);
+ }
+
+ @Override
+ public void setDefaultStyle(TerminalStyle defaultStyle) {
+ fWriter.println("setDefaultStyle(" + defaultStyle + ")"); //$NON-NLS-1$ //$NON-NLS-2$
+ fBackend.setDefaultStyle(defaultStyle);
+ }
+
+ @Override
+ public void setDimensions(int lines, int cols) {
+ fWriter.println("setDimensions(" + lines + "," + cols + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ fBackend.setDimensions(lines, cols);
+ }
+
+ @Override
+ public void setStyle(TerminalStyle style) {
+ fWriter.println("setStyle(" + style + ")"); //$NON-NLS-1$ //$NON-NLS-2$
+ fBackend.setStyle(style);
+ }
+
+ @Override
+ public void setVT100LineWrapping(boolean enable) {
+ fWriter.println("setVT100LineWrapping(" + enable + ")"); //$NON-NLS-1$ //$NON-NLS-2$
+ fBackend.setVT100LineWrapping(enable);
+ }
+
+ @Override
+ public boolean isVT100LineWrapping() {
+ return fBackend.isVT100LineWrapping();
+ }
+
+ @Override
+ public void setInsertMode(boolean enable) {
+ fWriter.println("setInsertMode(" + enable + ")"); //$NON-NLS-1$ //$NON-NLS-2$
+ fBackend.setInsertMode(enable);
+ }
+
+ @Override
+ public void setScrollRegion(int top, int bottom) {
+ fWriter.println("setScrollRegion(" + top + ',' + bottom + ")"); //$NON-NLS-1$ //$NON-NLS-2$
+ fBackend.setScrollRegion(top, bottom);
+ }
+
+ @Override
+ public void scrollUp(int lines) {
+ fWriter.println("scrollUp(" + lines + ")"); //$NON-NLS-1$ //$NON-NLS-2$
+ fBackend.scrollUp(lines);
+ }
+
+ @Override
+ public void scrollDown(int lines) {
+ fWriter.println("scrollDown(" + lines + ")"); //$NON-NLS-1$ //$NON-NLS-2$
+ fBackend.scrollDown(lines);
+ }
+
+ @Override
+ public void processReverseLineFeed() {
+ fWriter.println("processReverseLineFeed()"); //$NON-NLS-1$
+ fBackend.processReverseLineFeed();
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/emulator/VT100Emulator.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/emulator/VT100Emulator.java
new file mode 100644
index 00000000000..093fa472a9d
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/emulator/VT100Emulator.java
@@ -0,0 +1,1600 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2021 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Initial Contributors:
+ * The following Wind River employees contributed to the Terminal component
+ * that contains this file: Chris Thew, Fran Litterio, Stephen Lamb,
+ * Helmut Haigermoser and Ted Williams.
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - split into core, view and connector plugins
+ * Martin Oberhuber (Wind River) - fixed copyright headers and beautified
+ * Michael Scharf (Wind River) - [209746] There are cases where some colors not displayed correctly
+ * Martin Oberhuber (Wind River) - [168197] Fix Terminal for CDC-1.1/Foundation-1.1
+ * Michael Scharf (Wind River) - [262996] get rid of TerminalState.OPENED
+ * Martin Oberhuber (Wind River) - [334969] Fix multi-command SGR sequence
+ * Kris De Volder (VMWare) - [392107] Switched interpretation for ESC[0K and ESC[1K sequences
+ * Martin Oberhuber (Wind River) - [401386] Regression: No header on top due to incorrect ESC[K interpretation
+ * Martin Oberhuber (Wind River) - [401480] Handle ESC[39;49m and ESC[G
+ * Anton Leherbauer (Wind River) - [433751] Add option to enable VT100 line wrapping mode
+ * Anton Leherbauer (Wind River) - [458218] Add support for ANSI insert mode
+ * Anton Leherbauer (Wind River) - [458398] Add support for normal/application cursor keys mode
+ * Anton Leherbauer (Wind River) - [458402] Add support for scroll up/down and scroll region
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.emulator;
+
+import static org.eclipse.tm.terminal.model.TerminalColor.BLACK;
+import static org.eclipse.tm.terminal.model.TerminalColor.BLUE;
+import static org.eclipse.tm.terminal.model.TerminalColor.CYAN;
+import static org.eclipse.tm.terminal.model.TerminalColor.GREEN;
+import static org.eclipse.tm.terminal.model.TerminalColor.MAGENTA;
+import static org.eclipse.tm.terminal.model.TerminalColor.RED;
+import static org.eclipse.tm.terminal.model.TerminalColor.WHITE;
+import static org.eclipse.tm.terminal.model.TerminalColor.YELLOW;
+
+import java.io.IOException;
+import java.io.Reader;
+import java.util.Arrays;
+
+import org.eclipse.swt.events.ControlEvent;
+import org.eclipse.swt.events.ControlListener;
+import org.eclipse.swt.graphics.RGB;
+import org.eclipse.tm.internal.terminal.control.impl.ITerminalControlForText;
+import org.eclipse.tm.internal.terminal.control.impl.TerminalPlugin;
+import org.eclipse.tm.internal.terminal.provisional.api.ITerminalConnector;
+import org.eclipse.tm.internal.terminal.provisional.api.Logger;
+import org.eclipse.tm.terminal.model.ITerminalTextData;
+import org.eclipse.tm.terminal.model.TerminalStyle;
+
+/**
+ * This class processes character data received from the remote host and
+ * displays it to the user using the Terminal view's StyledText widget. This
+ * class processes ANSI control characters, including NUL, backspace, carriage
+ * return, linefeed, and a subset of ANSI escape sequences sufficient to allow
+ * use of screen-oriented applications, such as vi, Emacs, and any GNU
+ * readline-enabled application (Bash, bc, ncftp, etc.).
+ * <p>
+ *
+ * @author Fran Litterio <francis.litterio@windriver.com>
+ * @author Chris Thew <chris.thew@windriver.com>
+ */
+public class VT100Emulator implements ControlListener {
+ /** This is a character processing state: Initial state. */
+ private static final int ANSISTATE_INITIAL = 0;
+
+ /** This is a character processing state: We've seen an escape character. */
+ private static final int ANSISTATE_ESCAPE = 1;
+
+ /**
+ * This is a character processing state: We've seen a '[' after an escape
+ * character. Expecting a parameter character or a command character next.
+ */
+ private static final int ANSISTATE_EXPECTING_PARAMETER_OR_COMMAND = 2;
+
+ /**
+ * This is a character processing state: We've seen a ']' after an escape
+ * character. We are now expecting an operating system command that
+ * reprograms an intelligent terminal.
+ */
+ private static final int ANSISTATE_EXPECTING_OS_COMMAND = 3;
+
+ /**
+ * This is a character processing state: We've seen a '[?' after an escape
+ * character. Expecting a parameter character or a command character next.
+ */
+ private static final int ANSISTATE_EXPECTING_DEC_PRIVATE_COMMAND = 4;
+
+ /**
+ * This is a character processing state: We've seen one of ()*+-./ after an escape
+ * character. Expecting a character set designation character.
+ */
+ private static final int ANSISTATE_EXPECTING_CHARSET_DESIGNATION = 5;
+
+ /**
+ * This field holds the current state of the Finite TerminalState Automaton (FSA)
+ * that recognizes ANSI escape sequences.
+ *
+ * @see #processNewText()
+ */
+ private int ansiState = ANSISTATE_INITIAL;
+
+ /**
+ * This field holds a reference to the {@link TerminalControl} object that
+ * instantiates this class.
+ */
+ private final ITerminalControlForText terminal;
+
+ /**
+ * This field holds a reference to the StyledText widget that is used to
+ * display text to the user.
+ */
+ final private IVT100EmulatorBackend text;
+ /**
+ * This field hold the saved absolute line number of the cursor when
+ * processing the "ESC 7" and "ESC 8" command sequences.
+ */
+ private int savedCursorLine = 0;
+
+ /**
+ * This field hold the saved column number of the cursor when processing the
+ * "ESC 7" and "ESC 8" command sequences.
+ */
+ private int savedCursorColumn = 0;
+
+ /**
+ * This field holds an array of StringBuffer objects, each of which is one
+ * parameter from the current ANSI escape sequence. For example, when
+ * parsing the escape sequence "\e[20;10H", this array holds the strings
+ * "20" and "10".
+ */
+ private final StringBuffer[] ansiParameters = new StringBuffer[16];
+
+ /**
+ * This field holds the OS-specific command found in an escape sequence of
+ * the form "\e]...\u0007".
+ */
+ private final StringBuffer ansiOsCommand = new StringBuffer(128);
+
+ /**
+ * This field holds the index of the next unused element of the array stored
+ * in field {@link #ansiParameters}.
+ */
+ private int nextAnsiParameter = 0;
+
+ Reader fReader;
+
+ boolean fCrAfterNewLine;
+
+ /**
+ * The constructor.
+ */
+ public VT100Emulator(ITerminalTextData data, ITerminalControlForText terminal, Reader reader) {
+ super();
+
+ Logger.log("entered"); //$NON-NLS-1$
+
+ this.terminal = terminal;
+
+ for (int i = 0; i < ansiParameters.length; ++i) {
+ ansiParameters[i] = new StringBuffer();
+ }
+ setInputStreamReader(reader);
+ if (TerminalPlugin.isOptionEnabled(Logger.TRACE_DEBUG_LOG_VT100BACKEND))
+ text = new VT100BackendTraceDecorator(new VT100EmulatorBackend(data), System.out);
+ else
+ text = new VT100EmulatorBackend(data);
+
+ // text.setDimensions(24, 80);
+ TerminalStyle style = TerminalStyle.getDefaultStyle();
+ text.setDefaultStyle(style);
+ text.setStyle(style);
+ }
+
+ /**
+ * Set the reader that this Terminal gets its input from.
+ *
+ * The reader can be changed while the Terminal is running, but a change of
+ * the reader likely loses some characters which have not yet been fully
+ * read. Changing the reader can be done in order to change the selected
+ * Encoding, though. This is typically done when the Terminal is
+ * constructed, i.e. before it really starts operation; or, when the user
+ * manually selects a different encoding and thus doesn't care about losing
+ * old characters.
+ *
+ * @param reader the new Reader
+ */
+ public void setInputStreamReader(Reader reader) {
+ fReader = reader;
+ }
+
+ public void setDimensions(int lines, int cols) {
+ text.setDimensions(lines, cols);
+ ITerminalConnector telnetConnection = getConnector();
+ if (telnetConnection != null) {
+ telnetConnection.setTerminalSize(text.getColumns(), text.getLines());
+ }
+
+ }
+
+ /**
+ * This method performs clean up when this VT100Emulator object is no longer
+ * needed. After calling this method, no other method on this object should
+ * be called.
+ */
+ public void dispose() {
+ }
+
+ /**
+ * This method is required by interface ControlListener. It allows us to
+ * know when the StyledText widget is moved.
+ */
+ @Override
+ public void controlMoved(ControlEvent event) {
+ Logger.log("entered"); //$NON-NLS-1$
+ // Empty.
+ }
+
+ /**
+ * This method is required by interface ControlListener. It allows us to
+ * know when the StyledText widget is resized.
+ */
+ @Override
+ public void controlResized(ControlEvent event) {
+ Logger.log("entered"); //$NON-NLS-1$
+ adjustTerminalDimensions();
+ }
+
+ /**
+ * This method erases all text from the Terminal view.
+ */
+ public void clearTerminal() {
+ Logger.log("entered"); //$NON-NLS-1$
+ text.clearAll();
+ }
+
+ /**
+ * This method is called when the user changes the Terminal view's font. We
+ * attempt to recompute the pixel width of the new font's characters and fix
+ * the terminal's dimensions.
+ */
+ public void fontChanged() {
+ Logger.log("entered"); //$NON-NLS-1$
+
+ if (text != null)
+ adjustTerminalDimensions();
+ }
+
+ // /**
+ // * This method executes in the Display thread to process data received from
+ // * the remote host by class {@link org.eclipse.tm.internal.terminal.telnet.TelnetConnection} and
+ // * other implementors of {@link ITerminalConnector}, like the
+ // * SerialPortHandler.
+ // * <p>
+ // * These connectors write text to the terminal's buffer through
+ // * {@link TerminalControl#writeToTerminal(String)} and then have
+ // * this run method executed in the display thread. This method
+ // * must not execute at the same time as methods
+ // * {@link #setNewText(StringBuffer)} and {@link #clearTerminal()}.
+ // * <p>
+ // * IMPORTANT: This method must be called in strict alternation with method
+ // * {@link #setNewText(StringBuffer)}.
+ // * <p>
+ // */
+ public void processText() {
+ try {
+ // Find the width and height of the terminal, and resize it to display an
+ // integral number of lines and columns.
+
+ adjustTerminalDimensions();
+
+ // Restore the caret offset, process and display the new text, then save
+ // the caret offset. See the documentation for field caretOffset for
+ // details.
+
+ // ISSUE: Is this causing the scroll-to-bottom-on-output behavior?
+
+ try {
+ processNewText();
+ } catch (IOException e) {
+ Logger.logException(e);
+ }
+
+ } catch (Exception ex) {
+ Logger.logException(ex);
+ }
+ }
+
+ /**
+ * This method scans the newly received text, processing ANSI control
+ * characters and escape sequences and displaying normal text.
+ * @throws IOException
+ */
+ private void processNewText() throws IOException {
+ Logger.log("entered"); //$NON-NLS-1$
+
+ // Scan the newly received text.
+
+ while (hasNextChar()) {
+ char character = getNextChar();
+
+ switch (ansiState) {
+ case ANSISTATE_INITIAL:
+ switch (character) {
+ case '\u0000':
+ break; // NUL character. Ignore it.
+
+ case '\u0007':
+ processBEL(); // BEL (Control-G)
+ break;
+
+ case '\b':
+ processBackspace(); // Backspace
+ break;
+
+ case '\t':
+ processTab(); // Tab.
+ break;
+
+ case '\n':
+ processNewline(); // Newline (Control-J)
+ if (fCrAfterNewLine)
+ processCarriageReturn(); // Carriage Return (Control-M)
+ break;
+
+ case '\r':
+ processCarriageReturn(); // Carriage Return (Control-M)
+ break;
+
+ case '\u001b':
+ ansiState = ANSISTATE_ESCAPE; // Escape.
+ break;
+
+ default:
+ processNonControlCharacters(character);
+ break;
+ }
+ break;
+
+ case ANSISTATE_ESCAPE:
+ // We've seen an escape character. Here, we process the character
+ // immediately following the escape.
+
+ switch (character) {
+ case '[':
+ ansiState = ANSISTATE_EXPECTING_PARAMETER_OR_COMMAND;
+ nextAnsiParameter = 0;
+
+ // Erase the parameter strings in preparation for optional
+ // parameter characters.
+
+ for (int i = 0; i < ansiParameters.length; ++i) {
+ ansiParameters[i].delete(0, ansiParameters[i].length());
+ }
+ break;
+
+ case ']':
+ ansiState = ANSISTATE_EXPECTING_OS_COMMAND;
+ ansiOsCommand.delete(0, ansiOsCommand.length());
+ break;
+
+ case ')':
+ case '(':
+ case '*':
+ case '+':
+ case '-':
+ case '.':
+ case '/':
+ ansiState = ANSISTATE_EXPECTING_CHARSET_DESIGNATION;
+ break;
+
+ case '7':
+ // Save cursor position and character attributes
+
+ ansiState = ANSISTATE_INITIAL;
+ savedCursorLine = relativeCursorLine();
+ savedCursorColumn = getCursorColumn();
+ break;
+
+ case '8':
+ // Restore cursor and attributes to previously saved
+ // position
+
+ ansiState = ANSISTATE_INITIAL;
+ moveCursor(savedCursorLine, savedCursorColumn);
+ break;
+
+ case 'c':
+ // Reset the terminal
+ ansiState = ANSISTATE_INITIAL;
+ resetTerminal();
+ break;
+
+ case 'M':
+ // Reverse line feed
+ ansiState = ANSISTATE_INITIAL;
+ text.processReverseLineFeed();
+ break;
+
+ default:
+ Logger.log("Unsupported escape sequence: escape '" + character + "'"); //$NON-NLS-1$ //$NON-NLS-2$
+ ansiState = ANSISTATE_INITIAL;
+ break;
+ }
+ break;
+
+ case ANSISTATE_EXPECTING_PARAMETER_OR_COMMAND:
+ // characters `<=>?` mark private commands
+ if (character >= '\u003c' && character <= '\u003f') {
+ ansiState = ANSISTATE_EXPECTING_DEC_PRIVATE_COMMAND;
+ break;
+ }
+
+ // Parameters can appear after the '[' in an escape sequence, but they
+ // are optional.
+
+ if (character >= '\u0040' && character < '\u007f') {
+ ansiState = ANSISTATE_INITIAL;
+ processAnsiCommandCharacter(character);
+ } else {
+ processAnsiParameterCharacter(character);
+ }
+ break;
+
+ case ANSISTATE_EXPECTING_OS_COMMAND:
+ // A BEL (\u0007) character marks the end of the OSC sequence.
+
+ if (character == '\u0007') {
+ ansiState = ANSISTATE_INITIAL;
+ processAnsiOsCommand();
+ } else {
+ ansiOsCommand.append(character);
+ }
+ break;
+
+ case ANSISTATE_EXPECTING_DEC_PRIVATE_COMMAND:
+ // Parameters can appear after the '[?' in an escape sequence, but they
+ // are optional.
+
+ if (character >= '\u0040' && character < '\u007f') {
+ ansiState = ANSISTATE_INITIAL;
+ processDecPrivateCommandCharacter(character);
+ } else {
+ processAnsiParameterCharacter(character);
+ }
+ break;
+
+ case ANSISTATE_EXPECTING_CHARSET_DESIGNATION:
+ if (character != '%')
+ ansiState = ANSISTATE_INITIAL;
+ // Character set designation commands are ignored
+ break;
+
+ default:
+ // This should never happen! If it does happen, it means there is a
+ // bug in the FSA. For robustness, we return to the initial
+ // state.
+
+ Logger.log("INVALID ANSI FSA STATE: " + ansiState); //$NON-NLS-1$
+ ansiState = ANSISTATE_INITIAL;
+ break;
+ }
+ }
+ }
+
+ private void resetTerminal() {
+ text.eraseAll();
+ text.setCursor(0, 0);
+ text.setStyle(text.getDefaultStyle());
+ text.setScrollRegion(-1, -1);
+ text.setInsertMode(false);
+ terminal.enableApplicationCursorKeys(false);
+ }
+
+ /**
+ * This method is called when we have parsed an OS Command escape sequence.
+ * The only one we support is "\e]0;...\u0007", which sets the terminal
+ * title.
+ */
+ private void processAnsiOsCommand() {
+ if (ansiOsCommand.charAt(0) != '0' || ansiOsCommand.charAt(1) != ';') {
+ Logger.log("Ignoring unsupported ANSI OSC sequence: '" + ansiOsCommand + "'"); //$NON-NLS-1$ //$NON-NLS-2$
+ return;
+ }
+ terminal.setTerminalTitle(ansiOsCommand.substring(2));
+ }
+
+ /**
+ * This method dispatches control to various processing methods based on the
+ * command character found in the most recently received ANSI escape
+ * sequence. This method only handles command characters that follow the
+ * ANSI standard Control Sequence Introducer (CSI), which is "\e[...", where
+ * "..." is an optional ';'-separated sequence of numeric parameters.
+ * <p>
+ */
+ private void processAnsiCommandCharacter(char ansiCommandCharacter) {
+ // If the width or height of the terminal is ridiculously small (one line or
+ // column or less), don't even try to process the escape sequence. This avoids
+ // throwing an exception (SPR 107450). The display will be messed up, but what
+ // did you user expect by making the terminal so small?
+
+ switch (ansiCommandCharacter) {
+ case '@':
+ // Insert character(s).
+ processAnsiCommand_atsign();
+ break;
+
+ case 'A':
+ // Move cursor up N lines (default 1).
+ processAnsiCommand_A();
+ break;
+
+ case 'B':
+ // Move cursor down N lines (default 1).
+ processAnsiCommand_B();
+ break;
+
+ case 'C':
+ // Move cursor forward N columns (default 1).
+ processAnsiCommand_C();
+ break;
+
+ case 'D':
+ // Move cursor backward N columns (default 1).
+ processAnsiCommand_D();
+ break;
+
+ case 'd':
+ // Line Position Absolute [row] (default = [1,column]) (VPA).
+ processAnsiCommand_d();
+ break;
+
+ case 'E':
+ // Move cursor to first column of Nth next line (default 1).
+ processAnsiCommand_E();
+ break;
+
+ case 'F':
+ // Move cursor to first column of Nth previous line (default 1).
+ processAnsiCommand_F();
+ break;
+
+ case 'G':
+ // Move to column N of current line (default 1).
+ processAnsiCommand_G();
+ break;
+
+ case 'H':
+ // Set cursor Position.
+ processAnsiCommand_H();
+ break;
+
+ case 'h':
+ // Reset Mode.
+ processAnsiCommand_h();
+ break;
+
+ case 'J':
+ // Erase part or all of display. Cursor does not move.
+ processAnsiCommand_J();
+ break;
+
+ case 'K':
+ // Erase in line (cursor does not move).
+ processAnsiCommand_K();
+ break;
+
+ case 'L':
+ // Insert line(s) (current line moves down).
+ processAnsiCommand_L();
+ break;
+
+ case 'l':
+ // Set Mode.
+ processAnsiCommand_l();
+ break;
+
+ case 'M':
+ // Delete line(s).
+ processAnsiCommand_M();
+ break;
+
+ case 'm':
+ // Set Graphics Rendition (SGR).
+ processAnsiCommand_m();
+ break;
+
+ case 'n':
+ // Device Status Report (DSR).
+ processAnsiCommand_n();
+ break;
+
+ case 'P':
+ // Delete character(s).
+ processAnsiCommand_P();
+ break;
+
+ case 'r':
+ // Set Scrolling Region.
+ processAnsiCommand_r();
+ break;
+
+ case 'S':
+ // Scroll up.
+ processAnsiCommand_S();
+ break;
+
+ case 'T':
+ // Scroll down.
+ processAnsiCommand_T();
+ break;
+
+ case 'X':
+ // Erase character.
+ // Emacs, vi, and GNU readline don't seem to use this command, so we ignore
+ // it for now.
+ break;
+
+ case 'Z':
+ // Cursor back tab.
+ // Emacs, vi, and GNU readline don't seem to use this command, so we ignore
+ // it for now.
+ break;
+
+ default:
+ Logger.log("Ignoring unsupported ANSI command character: '" + //$NON-NLS-1$
+ ansiCommandCharacter + "'"); //$NON-NLS-1$
+ break;
+ }
+ }
+
+ /**
+ * This method dispatches control to various processing methods based on the
+ * command character found in the most recently received DEC private mode escape
+ * sequence. This method only handles command characters that follow the
+ * control sequence CSI ?
+ */
+ private void processDecPrivateCommandCharacter(char commandCharacter) {
+ switch (commandCharacter) {
+ case 'h':
+ // DEC Private Mode Set (DECSET)
+ processDecPrivateCommand_h();
+ break;
+
+ case 'l':
+ // DEC Private Mode Reset (DECRST)
+ processDecPrivateCommand_l();
+ break;
+
+ default:
+ Logger.log("Ignoring unsupported DEC private command character: '" + //$NON-NLS-1$
+ commandCharacter + "'"); //$NON-NLS-1$
+ break;
+ }
+ }
+
+ /**
+ * This method makes room for N characters on the current line at the cursor
+ * position. Text under the cursor moves right without wrapping at the end
+ * of the line.
+ */
+ private void processAnsiCommand_atsign() {
+ int charactersToInsert = getAnsiParameter(0);
+ text.insertCharacters(charactersToInsert);
+ }
+
+ /**
+ * This method moves the cursor up by the number of lines specified by the
+ * escape sequence parameter (default 1).
+ */
+ private void processAnsiCommand_A() {
+ moveCursorUp(getAnsiParameter(0));
+ }
+
+ /**
+ * This method moves the cursor down by the number of lines specified by the
+ * escape sequence parameter (default 1).
+ */
+ private void processAnsiCommand_B() {
+ moveCursorDown(getAnsiParameter(0));
+ }
+
+ /**
+ * This method moves the cursor forward by the number of columns specified
+ * by the escape sequence parameter (default 1).
+ */
+ private void processAnsiCommand_C() {
+ moveCursorForward(getAnsiParameter(0));
+ }
+
+ /**
+ * This method moves the cursor backward by the number of columns specified
+ * by the escape sequence parameter (default 1).
+ */
+ private void processAnsiCommand_D() {
+ moveCursorBackward(getAnsiParameter(0));
+ }
+
+ /**
+ * This method moves the cursor to a specific row.
+ */
+ private void processAnsiCommand_d() {
+ // Line Position Absolute [row] (default = [1,column]) (VPA).
+ text.setCursorLine(getAnsiParameter(0) - 1);
+ }
+
+ /**
+ * This method moves the cursor to the first column of the Nth next line,
+ * where N is specified by the ANSI parameter (default 1).
+ */
+ private void processAnsiCommand_E() {
+ int linesToMove = getAnsiParameter(0);
+
+ moveCursor(relativeCursorLine() + linesToMove, 0);
+ }
+
+ /**
+ * This method moves the cursor to the first column of the Nth previous
+ * line, where N is specified by the ANSI parameter (default 1).
+ */
+ private void processAnsiCommand_F() {
+ int linesToMove = getAnsiParameter(0);
+
+ moveCursor(relativeCursorLine() - linesToMove, 0);
+ }
+
+ /**
+ * This method moves the cursor within the current line to the column
+ * specified by the ANSI parameter (default is column 1).
+ */
+ private void processAnsiCommand_G() {
+ moveCursor(relativeCursorLine(), getAnsiParameter(0) - 1);
+ }
+
+ /**
+ * This method sets the cursor to a position specified by the escape
+ * sequence parameters (default is the upper left corner of the screen).
+ */
+ private void processAnsiCommand_H() {
+ moveCursor(getAnsiParameter(0) - 1, getAnsiParameter(1) - 1);
+ }
+
+ /**
+ * This method sets terminal modes.
+ */
+ private void processAnsiCommand_h() {
+ if (getAnsiParameter(0) == 4) {
+ // set insert mode
+ text.setInsertMode(true);
+ }
+ }
+
+ /**
+ * This method deletes some (or all) of the text on the screen without
+ * moving the cursor.
+ */
+ private void processAnsiCommand_J() {
+ int ansiParameter;
+
+ if (ansiParameters[0].length() == 0)
+ ansiParameter = 0;
+ else
+ ansiParameter = getAnsiParameter(0);
+
+ switch (ansiParameter) {
+ case 0:
+ text.eraseToEndOfScreen();
+ break;
+
+ case 1:
+ // Erase from beginning to current position (inclusive).
+ text.eraseToCursor();
+ break;
+
+ case 2:
+ // Erase entire display.
+
+ text.eraseAll();
+ break;
+
+ case 3:
+ // Erase display and clear scrollback (extended "E3" capability)
+ text.clearAll();
+ break;
+
+ default:
+ Logger.log("Unexpected J-command parameter: " + ansiParameter); //$NON-NLS-1$
+ break;
+ }
+ }
+
+ /**
+ * This method deletes some (or all) of the text in the current line without
+ * moving the cursor.
+ */
+ private void processAnsiCommand_K() {
+ //Bug 401386: missing parameter must be interpreted as 0, and not 1 like most other defaults.
+ int ansiParameter = 0;
+ if (ansiParameters[0].length() > 0)
+ ansiParameter = getAnsiParameter(0);
+
+ switch (ansiParameter) {
+ case 0:
+ // Erase from current position to end (inclusive).
+ text.eraseLineToEnd();
+ break;
+
+ case 1:
+ // Erase from beginning to current position (inclusive).
+ text.eraseLineToCursor();
+ break;
+
+ case 2:
+ // Erase entire line.
+ text.eraseLine();
+ break;
+
+ default:
+ Logger.log("Unexpected K-command parameter: " + ansiParameter); //$NON-NLS-1$
+ break;
+ }
+ }
+
+ /**
+ * Insert one or more blank lines. The current line of text moves down. Text
+ * that falls off the bottom of the screen is deleted.
+ */
+ private void processAnsiCommand_L() {
+ text.insertLines(getAnsiParameter(0));
+ }
+
+ /**
+ * This method resets terminal modes.
+ */
+ private void processAnsiCommand_l() {
+ if (getAnsiParameter(0) == 4) {
+ // reset insert mode
+ text.setInsertMode(false);
+ }
+ }
+
+ /**
+ * Delete one or more lines of text. Any lines below the deleted lines move
+ * up, which we implement by appending newlines to the end of the text.
+ */
+ private void processAnsiCommand_M() {
+ text.deleteLines(getAnsiParameter(0));
+ }
+
+ /**
+ * This method sets a new graphics rendition mode, such as
+ * foreground/background color, bold/normal text, and reverse video.
+ */
+ private void processAnsiCommand_m() {
+ if (ansiParameters[0].length() == 0) {
+ // This a special case: when no ANSI parameter is specified, act like a
+ // single parameter equal to 0 was specified.
+
+ ansiParameters[0].append('0');
+ }
+ TerminalStyle style = text.getStyle();
+ // There are a non-zero number of ANSI parameters. Process each one in
+ // order.
+
+ int totalParameters = ansiParameters.length;
+ int parameterIndex = 0;
+
+ while (parameterIndex < totalParameters && ansiParameters[parameterIndex].length() > 0) {
+ int ansiParameter = getAnsiParameter(parameterIndex);
+ if (ansiParameter == 1) {
+ String parameter = ansiParameters[parameterIndex].toString();
+ // Special case for ITU's T.416 foreground/background color specification
+ // which uses : to separate parameters instead of ;
+ if (parameter.startsWith("38:") || parameter.startsWith("48:")) { //$NON-NLS-1$ //$NON-NLS-2$
+ String[] split = parameter.split(":"); //$NON-NLS-1$
+ ProcessExtendedColorsReturn retval = processExtendedColors(split, style, true);
+ style = retval.style();
+ parameterIndex++;
+ continue;
+ }
+
+ }
+
+ switch (ansiParameter) {
+ case 0:
+ // Reset all graphics modes.
+ style = text.getDefaultStyle();
+ break;
+
+ case 1:
+ style = style.setBold(true);
+ break;
+
+ case 4:
+ style = style.setUnderline(true);
+ break;
+
+ case 5:
+ style = style.setBlink(true);
+ break;
+
+ case 7:
+ style = style.setReverse(true);
+ break;
+
+ case 10: // Set primary font. Ignored.
+ break;
+
+ case 21:
+ case 22:
+ style = style.setBold(false);
+ break;
+
+ case 24:
+ style = style.setUnderline(false);
+ break;
+
+ case 25:
+ style = style.setBlink(false);
+ break;
+
+ case 27:
+ style = style.setReverse(false);
+ break;
+
+ case 90:
+ style = style.setBold(true);
+ //$FALL-THROUGH$
+ case 30:
+ style = style.setForeground(BLACK);
+ break;
+
+ case 91:
+ style = style.setBold(true);
+ //$FALL-THROUGH$
+ case 31:
+ style = style.setForeground(RED);
+ break;
+
+ case 92:
+ style = style.setBold(true);
+ //$FALL-THROUGH$
+ case 32:
+ style = style.setForeground(GREEN);
+ break;
+
+ case 93:
+ style = style.setBold(true);
+ //$FALL-THROUGH$
+ case 33:
+ style = style.setForeground(YELLOW);
+ break;
+
+ case 94:
+ style = style.setBold(true);
+ //$FALL-THROUGH$
+ case 34:
+ style = style.setForeground(BLUE);
+ break;
+
+ case 95:
+ style = style.setBold(true);
+ //$FALL-THROUGH$
+ case 35:
+ style = style.setForeground(MAGENTA);
+ break;
+
+ case 96:
+ style = style.setBold(true);
+ //$FALL-THROUGH$
+ case 36:
+ style = style.setForeground(CYAN);
+ break;
+
+ case 97:
+ style = style.setBold(true);
+ //$FALL-THROUGH$
+ case 37:
+ style = style.setForeground(WHITE);
+ break;
+
+ case 39: //Foreground: Default
+ style = style.setForeground(text.getDefaultStyle());
+ break;
+
+ case 100:
+ style = style.setBold(true);
+ //$FALL-THROUGH$
+ case 40:
+ style = style.setBackground(BLACK);
+ break;
+
+ case 101:
+ style = style.setBold(true);
+ //$FALL-THROUGH$
+ case 41:
+ style = style.setBackground(RED);
+ break;
+
+ case 102:
+ style = style.setBold(true);
+ //$FALL-THROUGH$
+ case 42:
+ style = style.setBackground(GREEN);
+ break;
+
+ case 103:
+ style = style.setBold(true);
+ //$FALL-THROUGH$
+ case 43:
+ style = style.setBackground(YELLOW);
+ break;
+
+ case 104:
+ style = style.setBold(true);
+ //$FALL-THROUGH$
+ case 44:
+ style = style.setBackground(BLUE);
+ break;
+
+ case 105:
+ style = style.setBold(true);
+ //$FALL-THROUGH$
+ case 45:
+ style = style.setBackground(MAGENTA);
+ break;
+
+ case 106:
+ style = style.setBold(true);
+ //$FALL-THROUGH$
+ case 46:
+ style = style.setBackground(CYAN);
+ break;
+
+ case 107:
+ style = style.setBold(true);
+ //$FALL-THROUGH$
+ case 47:
+ style = style.setBackground(WHITE);
+ break;
+
+ case 49: //Background: Default
+ style = style.setBackground(text.getDefaultStyle());
+ break;
+
+ case 38: // Foreground color defined by sequence
+ case 48: // Background color defined by sequence
+ CharSequence[] params = Arrays.copyOfRange(ansiParameters, parameterIndex, ansiParameters.length);
+ ProcessExtendedColorsReturn retval = processExtendedColors(params, style, false);
+ parameterIndex += retval.consumed() - 1;
+ style = retval.style();
+ break;
+
+ default:
+ Logger.log("Unsupported graphics rendition parameter: " + ansiParameter); //$NON-NLS-1$
+ break;
+ }
+
+ ++parameterIndex;
+ }
+ text.setStyle(style);
+ }
+
+ private interface ProcessExtendedColorsReturn {
+ /**
+ * @return the new style
+ */
+ TerminalStyle style();
+
+ /**
+ * @return number of parameters consumed
+ */
+ int consumed();
+ }
+
+ /**
+ *
+ * @param params array of parameters, starting with 38 or 48 being the command
+ * @param colorspace if a colorspace may be included (ITU T.416 mode)
+ */
+ private ProcessExtendedColorsReturn processExtendedColors(CharSequence[] paramStrings, TerminalStyle style,
+ boolean colorspace) {
+ int params[] = new int[paramStrings.length];
+ for (int i = 0; i < params.length; i++) {
+ try {
+ int parseInt = Integer.parseInt(paramStrings[i].toString());
+ int inMagnitude = parseInt % 256;
+ int inRange = inMagnitude < 0 ? inMagnitude + 256 : inMagnitude;
+ params[i] = inRange;
+ } catch (NumberFormatException ex) {
+ params[i] = 0;
+ }
+ }
+
+ boolean foreground = params[0] == 38;
+ int consumed = 1;
+ if (params.length > 1) {
+ int colorDepth = params[1];
+ switch (colorDepth) {
+ case 2: // 24-bit RGB color
+ int r = 0, g = 0, b = 0;
+ if (colorspace) {
+ if (params.length < 6) {
+ Logger.log(
+ "Not enough parameters for 24-bit color depth, expected 5, one for color space and one for each of RGB"); //$NON-NLS-1$
+ }
+ } else {
+ if (params.length < 5) {
+ Logger.log("Not enough parameters for 24-bit color depth, expected 3, one for each of RGB"); //$NON-NLS-1$
+ }
+ }
+ int start = colorspace ? 3 : 2;
+ if (params.length > start + 0) {
+ r = params[start + 0];
+ }
+ if (params.length > start + 1) {
+ g = params[start + 1];
+ }
+ if (params.length > start + 2) {
+ b = params[start + 2];
+ }
+
+ RGB rgb = new RGB(r, g, b);
+ if (foreground) {
+ style = style.setForeground(rgb);
+ } else {
+ style = style.setBackground(rgb);
+ }
+ consumed = Math.min(6, params.length);
+ break;
+ case 5: // 8-bit color table lookup
+ int index = 0;
+ if (params.length < 3) {
+ Logger.log("Missing parameter for 8-bit color depth"); //$NON-NLS-1$
+ } else {
+ index = params[2];
+ }
+ if (foreground) {
+ style = style.setForeground(index);
+ } else {
+ style = style.setBackground(index);
+ }
+ consumed = Math.min(3, params.length);
+ break;
+ default:
+ Logger.log("Unsupported color depth " + colorDepth + " for: " + params[0]); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ } else {
+ Logger.log("Missing color depth for " + params[0]); //$NON-NLS-1$
+ }
+
+ TerminalStyle finalStyle = style;
+ int finalConsumed = consumed;
+ return new ProcessExtendedColorsReturn() {
+ @Override
+ public TerminalStyle style() {
+ return finalStyle;
+ }
+
+ @Override
+ public int consumed() {
+ return finalConsumed;
+ }
+ };
+ }
+
+ /**
+ * This method responds to an ANSI Device Status Report (DSR) command from
+ * the remote endpoint requesting the ready status or the cursor position.
+ * Requests for other kinds of status are ignored.
+ */
+ private void processAnsiCommand_n() {
+ String reply;
+
+ if (getAnsiParameter(0) == 5) {
+ // Report that the terminal is ready and has no malfunctions.
+ reply = "\u001b[0n"; //$NON-NLS-1$
+
+ } else if (getAnsiParameter(0) == 6) {
+ // Send the ANSI cursor position (which is 1-based) to the remote
+ // endpoint.
+ reply = "\u001b[" + (relativeCursorLine() + 1) + ";" + //$NON-NLS-1$ //$NON-NLS-2$
+ (getCursorColumn() + 1) + "R"; //$NON-NLS-1$
+
+ } else {
+ // Do nothing if the numeric parameter was not 5 or 6.
+ return;
+ }
+
+ try {
+ terminal.getOutputStream().write(reply.getBytes("ISO-8859-1")); //$NON-NLS-1$
+ terminal.getOutputStream().flush();
+ } catch (IOException ex) {
+ Logger.log("Caught IOException!"); //$NON-NLS-1$
+ }
+ }
+
+ /**
+ * Deletes one or more characters starting at the current cursor position.
+ * Characters on the same line and to the right of the deleted characters
+ * move left. If there are no characters on the current line at or to the
+ * right of the cursor column, no text is deleted.
+ */
+ private void processAnsiCommand_P() {
+ text.deleteCharacters(getAnsiParameter(0));
+ }
+
+ /**
+ * Set Scrolling Region [top;bottom] (default = full size of window) (DECSTBM).
+ */
+ private void processAnsiCommand_r() {
+ int top = 0;
+ int bottom = 0;
+ if (ansiParameters[0].length() > 0 && ansiParameters[1].length() > 0) {
+ top = getAnsiParameter(0);
+ bottom = getAnsiParameter(1);
+ }
+ text.setScrollRegion(top - 1, bottom - 1);
+ }
+
+ /**
+ * Scroll up n lines (default = 1 line).
+ */
+ private void processAnsiCommand_S() {
+ text.scrollUp(getAnsiParameter(0));
+ }
+
+ /**
+ * Scroll down n lines (default = 1 line).
+ */
+ private void processAnsiCommand_T() {
+ text.scrollDown(getAnsiParameter(0));
+ }
+
+ private void processDecPrivateCommand_h() {
+ int param = getAnsiParameter(0);
+ switch (param) {
+ case 1:
+ // Enable Application Cursor Keys (DECCKM)
+ terminal.enableApplicationCursorKeys(true);
+ break;
+ case 47:
+ case 1047:
+ case 1048:
+ case 1049:
+ // Use Alternate Screen Buffer (ignored).
+ break;
+ default:
+ Logger.log("Unsupported command parameter: CSI ?" + param + 'h'); //$NON-NLS-1$
+ break;
+ }
+ }
+
+ private void processDecPrivateCommand_l() {
+ int param = getAnsiParameter(0);
+ switch (param) {
+ case 1:
+ // Enable Normal Cursor Keys (DECCKM)
+ terminal.enableApplicationCursorKeys(false);
+ break;
+ case 47:
+ case 1047:
+ case 1048:
+ case 1049:
+ // Use Normal Screen Buffer (ignored, but reset scroll region).
+ text.setScrollRegion(-1, -1);
+ break;
+ default:
+ Logger.log("Unsupported command parameter: CSI ?" + param + 'l'); //$NON-NLS-1$
+ break;
+ }
+ }
+
+ /**
+ * This method returns one of the numeric ANSI parameters received in the
+ * most recent escape sequence.
+ *
+ * @return The <i>parameterIndex</i>th numeric ANSI parameter or -1 if the
+ * index is out of range or 1 if parse failed (1 is also a legitimate value)
+ */
+ private int getAnsiParameter(int parameterIndex) {
+ if (parameterIndex < 0 || parameterIndex >= ansiParameters.length) {
+ // This should never happen.
+ return -1;
+ }
+
+ String parameter = ansiParameters[parameterIndex].toString();
+
+ if (parameter.length() == 0)
+ return 1;
+
+ // return 1 on failed parseInt
+ int parameterValue = 1;
+
+ // Don't trust the remote endpoint to send well formed numeric
+ // parameters.
+
+ try {
+ parameterValue = Integer.parseInt(parameter);
+ } catch (NumberFormatException ex) {
+ parameterValue = 1;
+ }
+
+ return parameterValue;
+ }
+
+ /**
+ * This method processes a single parameter character in an ANSI escape
+ * sequence. Parameters are the (optional) characters between the leading
+ * "\e[" and the command character in an escape sequence (e.g., in the
+ * escape sequence "\e[20;10H", the parameter characters are "20;10").
+ * Parameters are integers separated by one or more ';'s.
+ */
+ private void processAnsiParameterCharacter(char ch) {
+ if (ch == ';') {
+ ++nextAnsiParameter;
+ } else {
+ if (nextAnsiParameter < ansiParameters.length)
+ ansiParameters[nextAnsiParameter].append(ch);
+ }
+ }
+
+ /**
+ * This method processes a contiguous sequence of non-control characters.
+ * This is a performance optimization, so that we don't have to insert or
+ * append each non-control character individually to the StyledText widget.
+ * A non-control character is any character that passes the condition in the
+ * below while loop.
+ * @throws IOException
+ */
+ private void processNonControlCharacters(char character) throws IOException {
+ StringBuffer buffer = new StringBuffer();
+ buffer.append(character);
+ // Identify a contiguous sequence of non-control characters, starting at
+ // firstNonControlCharacterIndex in newText.
+ while (hasNextChar()) {
+ character = getNextChar();
+ if (character == '\u0000' || character == '\b' || character == '\t' || character == '\u0007'
+ || character == '\n' || character == '\r' || character == '\u001b') {
+ pushBackChar(character);
+ break;
+ }
+ buffer.append(character);
+ }
+
+ // Now insert the sequence of non-control characters in the StyledText widget
+ // at the location of the cursor.
+
+ displayNewText(buffer.toString());
+ }
+
+ /**
+ * This method displays a subset of the newly-received text in the Terminal
+ * view, wrapping text at the right edge of the screen and overwriting text
+ * when the cursor is not at the very end of the screen's text.
+ * <p>
+ *
+ * There are never any ANSI control characters or escape sequences in the
+ * text being displayed by this method (this includes newlines, carriage
+ * returns, and tabs).
+ * <p>
+ */
+ private void displayNewText(String buffer) {
+ text.appendString(buffer);
+ }
+
+ /**
+ * Process a BEL (Control-G) character.
+ */
+ private void processBEL() {
+ // TODO
+ //Display.getDefault().beep();
+ }
+
+ /**
+ * Process a backspace (Control-H) character.
+ */
+ private void processBackspace() {
+ moveCursorBackward(1);
+ }
+
+ /**
+ * Process a tab (Control-I) character. We don't insert a tab character into
+ * the StyledText widget. Instead, we move the cursor forward to the next
+ * tab stop, without altering any of the text. Tab stops are every 8
+ * columns. The cursor will never move past the rightmost column.
+ */
+ private void processTab() {
+ moveCursorForward(8 - (getCursorColumn() % 8));
+ }
+
+ /**
+ * Process a newline (Control-J) character. A newline (NL) character just
+ * moves the cursor to the same column on the next line, creating new lines
+ * when the cursor reaches the bottom edge of the terminal. This is
+ * counter-intuitive, especially to UNIX programmers who are taught that
+ * writing a single NL to a terminal is sufficient to move the cursor to the
+ * first column of the next line, as if a carriage return (CR) and a NL were
+ * written.
+ * <p>
+ *
+ * UNIX terminals typically display a NL character as a CR followed by a NL
+ * because the terminal device typically has the ONLCR attribute bit set
+ * (see the termios(4) man page for details), which causes the terminal
+ * device driver to translate NL to CR + NL on output. The terminal itself
+ * (i.e., a hardware terminal or a terminal emulator, like xterm or this
+ * code) _always_ interprets a CR to mean "move the cursor to the beginning
+ * of the current line" and a NL to mean "move the cursor to the same column
+ * on the next line".
+ * <p>
+ */
+ private void processNewline() {
+ text.processNewline();
+ }
+
+ /**
+ * Process a Carriage Return (Control-M).
+ */
+ private void processCarriageReturn() {
+ text.setCursorColumn(0);
+ }
+
+ /**
+ * This method computes the width of the terminal in columns and its height
+ * in lines, then adjusts the width and height of the view's StyledText
+ * widget so that it displays an integral number of lines and columns of
+ * text. The adjustment is always to shrink the widget vertically or
+ * horizontally, because if the control were to grow, it would be clipped by
+ * the edges of the view window (i.e., the view window does not become
+ * larger to accommodate its contents becoming larger).
+ * <p>
+ *
+ * This method must be called immediately before each time text is written
+ * to the terminal so that we can properly line wrap text. Because it is
+ * called so frequently, it must be fast when there is no resizing to be
+ * done.
+ * <p>
+ */
+ private void adjustTerminalDimensions() {
+ // Compute how many pixels we need to shrink the StyledText control vertically
+ // to make it display an integral number of lines of text.
+
+ // TODO
+ // if(text.getColumns()!=80 && text.getLines()!=80)
+ // text.setDimensions(24, 80);
+ // If we are in a TELNET connection and we know the dimensions of the terminal,
+ // we give the size information to the TELNET connection object so it can
+ // communicate it to the TELNET server. If we are in a serial connection,
+ // there is nothing we can do to tell the remote host about the size of the
+ // terminal.
+ ITerminalConnector telnetConnection = getConnector();
+ // TODO MSA: send only if dimensions have really changed!
+ if (telnetConnection != null) {
+ telnetConnection.setTerminalSize(text.getColumns(), text.getLines());
+ }
+
+ }
+
+ private ITerminalConnector getConnector() {
+ if (terminal.getTerminalConnector() != null)
+ return terminal.getTerminalConnector();
+ return null;
+ }
+
+ /**
+ * This method returns the relative line number of the line containing the
+ * cursor. The returned line number is relative to the topmost visible line,
+ * which has relative line number 0.
+ *
+ * @return The relative line number of the line containing the cursor.
+ */
+ private int relativeCursorLine() {
+ return text.getCursorLine();
+ }
+
+ /**
+ * This method moves the cursor to the specified line and column. Parameter
+ * <i>targetLine</i> is the line number of a screen line, so it has a
+ * minimum value of 0 (the topmost screen line) and a maximum value of
+ * heightInLines - 1 (the bottommost screen line). A line does not have to
+ * contain any text to move the cursor to any column in that line.
+ */
+ private void moveCursor(int targetLine, int targetColumn) {
+ text.setCursor(targetLine, targetColumn);
+ }
+
+ /**
+ * This method moves the cursor down <i>lines</i> lines, but won't move the
+ * cursor past the bottom of the screen. This method does not cause any
+ * scrolling.
+ */
+ private void moveCursorDown(int lines) {
+ moveCursor(relativeCursorLine() + lines, getCursorColumn());
+ }
+
+ /**
+ * This method moves the cursor up <i>lines</i> lines, but won't move the
+ * cursor past the top of the screen. This method does not cause any
+ * scrolling.
+ */
+ private void moveCursorUp(int lines) {
+ moveCursor(relativeCursorLine() - lines, getCursorColumn());
+ }
+
+ /**
+ * This method moves the cursor forward <i>columns</i> columns, but won't
+ * move the cursor past the right edge of the screen, nor will it move the
+ * cursor onto the next line. This method does not cause any scrolling.
+ */
+ private void moveCursorForward(int columnsToMove) {
+ moveCursor(relativeCursorLine(), getCursorColumn() + columnsToMove);
+ }
+
+ /**
+ * This method moves the cursor backward <i>columnsToMove</i> columns, but
+ * won't move the cursor past the left edge of the screen, nor will it move
+ * the cursor onto the previous line. This method does not cause any
+ * scrolling.
+ */
+ private void moveCursorBackward(int columnsToMove) {
+ moveCursor(relativeCursorLine(), getCursorColumn() - columnsToMove);
+ }
+
+ /**
+ * Resets the state of the terminal text (foreground color, background color,
+ * font style and other internal state). It essentially makes it ready for new input.
+ */
+ public void resetState() {
+ ansiState = ANSISTATE_INITIAL;
+ text.setStyle(text.getDefaultStyle());
+ text.setScrollRegion(-1, -1);
+ text.setInsertMode(false);
+ }
+
+ // public OutputStream getOutputStream() {
+ // return fTerminalInputStream.getOutputStream();
+ // }
+
+ /**
+ * Buffer for {@link #pushBackChar(char)}.
+ */
+ private int fNextChar = -1;
+
+ private char getNextChar() throws IOException {
+ int c = -1;
+ if (fNextChar != -1) {
+ c = fNextChar;
+ fNextChar = -1;
+ } else {
+ c = fReader.read();
+ }
+ // TODO: better end of file handling
+ if (c == -1)
+ c = 0;
+ return (char) c;
+ }
+
+ private boolean hasNextChar() throws IOException {
+ if (fNextChar < 0 && fReader.ready()) {
+ fNextChar = fReader.read();
+ }
+ return fNextChar >= 0;
+ }
+
+ /**
+ * Put back one character to the stream. This method can push
+ * back exactly one character. The character is the next character
+ * returned by {@link #getNextChar}
+ * @param c the character to be pushed back.
+ */
+ void pushBackChar(char c) {
+ //assert fNextChar!=-1: "Already a character waiting:"+fNextChar; //$NON-NLS-1$
+ fNextChar = c;
+ }
+
+ private int getCursorColumn() {
+ return text.getCursorColumn();
+ }
+
+ public boolean isCrAfterNewLine() {
+ return fCrAfterNewLine;
+ }
+
+ public void setCrAfterNewLine(boolean crAfterNewLine) {
+ fCrAfterNewLine = crAfterNewLine;
+ }
+
+ void setVT100LineWrapping(boolean enable) {
+ text.setVT100LineWrapping(enable);
+ }
+
+ boolean isVT100LineWrapping() {
+ return text.isVT100LineWrapping();
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/emulator/VT100EmulatorBackend.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/emulator/VT100EmulatorBackend.java
new file mode 100644
index 00000000000..514ec7c6a0f
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/emulator/VT100EmulatorBackend.java
@@ -0,0 +1,493 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ * Anton Leherbauer (Wind River) - [206329] Changing terminal size right after connect does not scroll properly
+ * Anton Leherbauer (Wind River) - [433751] Add option to enable VT100 line wrapping mode
+ * Anton Leherbauer (Wind River) - [458218] Add support for ANSI insert mode
+ * Anton Leherbauer (Wind River) - [458402] Add support for scroll up/down and scroll region
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.emulator;
+
+import org.eclipse.tm.terminal.model.ITerminalTextData;
+import org.eclipse.tm.terminal.model.TerminalStyle;
+
+/**
+ * @noextend This class is not intended to be subclassed by clients.
+ * @noreference This class not intended to be referenced by clients.
+ * It used to be package protected, and it is public only for Unit Tests.
+ *
+ */
+public class VT100EmulatorBackend implements IVT100EmulatorBackend {
+
+ private static class ScrollRegion {
+ static final ScrollRegion FULL_WINDOW = new ScrollRegion(0, Integer.MAX_VALUE - 1);
+ private final int fTop;
+ private final int fBottom;
+
+ ScrollRegion(int top, int bottom) {
+ fTop = top;
+ fBottom = bottom;
+ }
+
+ boolean contains(int line) {
+ return line >= fTop && line <= fBottom;
+ }
+
+ int getTopLine() {
+ return fTop;
+ }
+
+ int getBottomLine() {
+ return fBottom;
+ }
+
+ int getHeight() {
+ return fBottom - fTop + 1;
+ }
+ }
+
+ /**
+ * This field holds the number of the column in which the cursor is
+ * logically positioned. The leftmost column on the screen is column 0, and
+ * column numbers increase to the right. The maximum value of this field is
+ * {@link #widthInColumns} - 1. We track the cursor column using this field
+ * to avoid having to recompute it repeatly using StyledText method calls.
+ * <p>
+ *
+ * The StyledText widget that displays text has a vertical bar (called the
+ * "caret") that appears _between_ character cells, but ANSI terminals have
+ * the concept of a cursor that appears _in_ a character cell, so we need a
+ * convention for which character cell the cursor logically occupies when
+ * the caret is physically between two cells. The convention used in this
+ * class is that the cursor is logically in column N when the caret is
+ * physically positioned immediately to the _left_ of column N.
+ * <p>
+ *
+ * When fCursorColumn is N, the next character output to the terminal appears
+ * in column N. When a character is output to the rightmost column on a
+ * given line (column widthInColumns - 1), the cursor moves to column 0 on
+ * the next line after the character is drawn (this is the default line wrapping
+ * mode). If VT100 line wrapping mode is enabled, the cursor does not move
+ * to the next line until the next character is printed (this is known as
+ * the VT100 'eat_newline_glitch').
+ * If the cursor is in the bottommost line when line wrapping
+ * occurs, the topmost visible line is scrolled off the top edge of the
+ * screen.
+ * <p>
+ */
+ private int fCursorColumn;
+ private int fCursorLine;
+ /* true if last output occurred on rightmost column
+ * and next output requires line wrap */
+ private boolean fWrapPending;
+ private boolean fInsertMode;
+ private TerminalStyle fDefaultStyle;
+ private TerminalStyle fStyle;
+ int fLines;
+ int fColumns;
+ final private ITerminalTextData fTerminal;
+ private boolean fVT100LineWrapping;
+ private ScrollRegion fScrollRegion = ScrollRegion.FULL_WINDOW;
+
+ public VT100EmulatorBackend(ITerminalTextData terminal) {
+ fTerminal = terminal;
+ }
+
+ @Override
+ public void clearAll() {
+ synchronized (fTerminal) {
+ // clear the history
+ int n = fTerminal.getHeight();
+ for (int line = 0; line < n; line++) {
+ fTerminal.cleanLine(line);
+ }
+ fTerminal.setDimensions(fLines, fTerminal.getWidth());
+ setStyle(getDefaultStyle());
+ setCursor(0, 0);
+ }
+ }
+
+ @Override
+ public void setDimensions(int lines, int cols) {
+ synchronized (fTerminal) {
+ if (lines == fLines && cols == fColumns)
+ return; // nothing to do
+ // relative cursor line
+ int cl = getCursorLine();
+ int cc = getCursorColumn();
+ int height = fTerminal.getHeight();
+ // absolute cursor line
+ int acl = cl + height - fLines;
+ int newLines = Math.max(lines, height);
+ if (lines < fLines) {
+ if (height == fLines) {
+ // if the terminal has no history, then resize by
+ // setting the size to the new size
+ // TODO We are assuming that cursor line points at end of text
+ newLines = Math.max(lines, cl + 1);
+ }
+ }
+ fLines = lines;
+ fColumns = cols;
+ // make the terminal at least as high as we need lines
+ fTerminal.setDimensions(newLines, fColumns);
+ // compute relative cursor line
+ cl = acl - (newLines - fLines);
+ setCursor(cl, cc);
+ }
+ }
+
+ /**
+ * @nooverride This method is not intended to be re-implemented or extended by clients.
+ * @noreference This method is not intended to be referenced by clients.
+ * It used to be package protected, and it is public only for Unit Tests.
+ */
+ public int toAbsoluteLine(int line) {
+ synchronized (fTerminal) {
+ return fTerminal.getHeight() - fLines + line;
+ }
+ }
+
+ @Override
+ public void insertCharacters(int charactersToInsert) {
+ synchronized (fTerminal) {
+ int line = toAbsoluteLine(fCursorLine);
+ int n = charactersToInsert;
+ for (int col = fColumns - 1; col >= fCursorColumn + n; col--) {
+ char c = fTerminal.getChar(line, col - n);
+ TerminalStyle style = fTerminal.getStyle(line, col - n);
+ fTerminal.setChar(line, col, c, style);
+ }
+ int last = Math.min(fCursorColumn + n, fColumns);
+ for (int col = fCursorColumn; col < last; col++) {
+ fTerminal.setChar(line, col, '\000', null);
+ }
+ }
+ }
+
+ @Override
+ public void eraseToEndOfScreen() {
+ synchronized (fTerminal) {
+ eraseLineToEnd();
+ for (int line = toAbsoluteLine(fCursorLine + 1); line < toAbsoluteLine(fLines); line++) {
+ fTerminal.cleanLine(line);
+ }
+ }
+
+ }
+
+ @Override
+ public void eraseToCursor() {
+ synchronized (fTerminal) {
+ for (int line = toAbsoluteLine(0); line < toAbsoluteLine(fCursorLine); line++) {
+ fTerminal.cleanLine(line);
+ }
+ eraseLineToCursor();
+ }
+ }
+
+ @Override
+ public void eraseAll() {
+ synchronized (fTerminal) {
+ for (int line = toAbsoluteLine(0); line < toAbsoluteLine(fLines); line++) {
+ fTerminal.cleanLine(line);
+ }
+ }
+ }
+
+ @Override
+ public void eraseLine() {
+ synchronized (fTerminal) {
+ fTerminal.cleanLine(toAbsoluteLine(fCursorLine));
+ }
+ }
+
+ @Override
+ public void eraseLineToEnd() {
+ synchronized (fTerminal) {
+ int line = toAbsoluteLine(fCursorLine);
+ for (int col = fCursorColumn; col < fColumns; col++) {
+ fTerminal.setChar(line, col, '\000', null);
+ }
+ }
+ }
+
+ @Override
+ public void eraseLineToCursor() {
+ synchronized (fTerminal) {
+ int line = toAbsoluteLine(fCursorLine);
+ for (int col = 0; col <= fCursorColumn; col++) {
+ fTerminal.setChar(line, col, '\000', null);
+ }
+ }
+ }
+
+ @Override
+ public void insertLines(int n) {
+ synchronized (fTerminal) {
+ if (!isCusorInScrollingRegion())
+ return;
+ assert n > 0;
+ int line = toAbsoluteLine(fCursorLine);
+ int nLines = Math.min(fTerminal.getHeight() - line, fScrollRegion.getBottomLine() - fCursorLine + 1);
+ fTerminal.scroll(line, nLines, n);
+ }
+ }
+
+ @Override
+ public void deleteCharacters(int n) {
+ synchronized (fTerminal) {
+ int line = toAbsoluteLine(fCursorLine);
+ for (int col = fCursorColumn + n; col < fColumns; col++) {
+ char c = fTerminal.getChar(line, col);
+ TerminalStyle style = fTerminal.getStyle(line, col);
+ fTerminal.setChar(line, col - n, c, style);
+ }
+ int first = Math.max(fCursorColumn, fColumns - n);
+ for (int col = first; col < fColumns; col++) {
+ fTerminal.setChar(line, col, '\000', null);
+ }
+ }
+ }
+
+ @Override
+ public void deleteLines(int n) {
+ synchronized (fTerminal) {
+ if (!isCusorInScrollingRegion())
+ return;
+ assert n > 0;
+ int line = toAbsoluteLine(fCursorLine);
+ int nLines = Math.min(fTerminal.getHeight() - line, fScrollRegion.getBottomLine() - fCursorLine + 1);
+ fTerminal.scroll(line, nLines, -n);
+ }
+ }
+
+ private boolean isCusorInScrollingRegion() {
+ return fScrollRegion.contains(fCursorLine);
+ }
+
+ @Override
+ public TerminalStyle getDefaultStyle() {
+ synchronized (fTerminal) {
+ return fDefaultStyle;
+ }
+ }
+
+ @Override
+ public void setDefaultStyle(TerminalStyle defaultStyle) {
+ synchronized (fTerminal) {
+ fDefaultStyle = defaultStyle;
+ }
+ }
+
+ @Override
+ public TerminalStyle getStyle() {
+ synchronized (fTerminal) {
+ if (fStyle == null)
+ return fDefaultStyle;
+ return fStyle;
+ }
+ }
+
+ @Override
+ public void setStyle(TerminalStyle style) {
+ synchronized (fTerminal) {
+ fStyle = style;
+ }
+ }
+
+ @Override
+ public void appendString(String buffer) {
+ synchronized (fTerminal) {
+ char[] chars = buffer.toCharArray();
+ if (fInsertMode)
+ insertCharacters(chars.length);
+ int line = toAbsoluteLine(fCursorLine);
+ int i = 0;
+ while (i < chars.length) {
+ if (fWrapPending) {
+ line = doLineWrap();
+ }
+ int n = Math.min(fColumns - fCursorColumn, chars.length - i);
+ fTerminal.setChars(line, fCursorColumn, chars, i, n, fStyle);
+ int col = fCursorColumn + n;
+ i += n;
+ // wrap needed?
+ if (col == fColumns) {
+ if (fVT100LineWrapping) {
+ // deferred line wrapping (eat_newline_glitch)
+ setCursorColumn(col - 1);
+ fWrapPending = true;
+ } else {
+ line = doLineWrap();
+ }
+ } else {
+ setCursorColumn(col);
+ }
+ }
+ }
+ }
+
+ private int doLineWrap() {
+ int line;
+ line = toAbsoluteLine(fCursorLine);
+ fTerminal.setWrappedLine(line);
+ doNewline();
+ line = toAbsoluteLine(fCursorLine);
+ setCursorColumn(0);
+ return line;
+ }
+
+ /**
+ * MUST be called from a synchronized block!
+ */
+ private void doNewline() {
+ if (fCursorLine == fScrollRegion.getBottomLine())
+ scrollUp(1);
+ else if (fCursorLine + 1 >= fLines) {
+ int h = fTerminal.getHeight();
+ fTerminal.addLine();
+ if (h != fTerminal.getHeight())
+ setCursorLine(fCursorLine + 1);
+ } else {
+ setCursorLine(fCursorLine + 1);
+ }
+ }
+
+ @Override
+ public void processNewline() {
+ synchronized (fTerminal) {
+ doNewline();
+ }
+ }
+
+ private void doReverseLineFeed() {
+ if (fCursorLine == fScrollRegion.getTopLine())
+ scrollDown(1);
+ else
+ setCursorLine(fCursorLine - 1);
+ }
+
+ @Override
+ public void processReverseLineFeed() {
+ synchronized (fTerminal) {
+ doReverseLineFeed();
+ }
+ }
+
+ @Override
+ public int getCursorLine() {
+ synchronized (fTerminal) {
+ return fCursorLine;
+ }
+ }
+
+ @Override
+ public int getCursorColumn() {
+ synchronized (fTerminal) {
+ return fCursorColumn;
+ }
+ }
+
+ @Override
+ public void setCursor(int targetLine, int targetColumn) {
+ synchronized (fTerminal) {
+ setCursorLine(targetLine);
+ setCursorColumn(targetColumn);
+ }
+ }
+
+ @Override
+ public void setCursorColumn(int targetColumn) {
+ synchronized (fTerminal) {
+ if (targetColumn < 0)
+ targetColumn = 0;
+ else if (targetColumn >= fColumns)
+ targetColumn = fColumns - 1;
+ fCursorColumn = targetColumn;
+ fWrapPending = false;
+ // We make the assumption that nobody is changing the
+ // terminal cursor except this class!
+ // This assumption gives a huge performance improvement
+ fTerminal.setCursorColumn(targetColumn);
+ }
+ }
+
+ @Override
+ public void setCursorLine(int targetLine) {
+ synchronized (fTerminal) {
+ if (targetLine < 0)
+ targetLine = 0;
+ else if (targetLine >= fLines)
+ targetLine = fLines - 1;
+ fCursorLine = targetLine;
+ // We make the assumption that nobody is changing the
+ // terminal cursor except this class!
+ // This assumption gives a huge performance improvement
+ fTerminal.setCursorLine(toAbsoluteLine(targetLine));
+ }
+ }
+
+ @Override
+ public int getLines() {
+ synchronized (fTerminal) {
+ return fLines;
+ }
+ }
+
+ @Override
+ public int getColumns() {
+ synchronized (fTerminal) {
+ return fColumns;
+ }
+ }
+
+ @Override
+ public void setVT100LineWrapping(boolean enable) {
+ fVT100LineWrapping = enable;
+ }
+
+ @Override
+ public boolean isVT100LineWrapping() {
+ return fVT100LineWrapping;
+ }
+
+ @Override
+ public void setInsertMode(boolean enable) {
+ fInsertMode = enable;
+ }
+
+ @Override
+ public void setScrollRegion(int top, int bottom) {
+ if (top < 0 || bottom < 0)
+ fScrollRegion = ScrollRegion.FULL_WINDOW;
+ else if (top < bottom)
+ fScrollRegion = new ScrollRegion(top, bottom);
+ }
+
+ @Override
+ public void scrollUp(int n) {
+ assert n > 0;
+ synchronized (fTerminal) {
+ int line = toAbsoluteLine(fScrollRegion.getTopLine());
+ int nLines = Math.min(fTerminal.getHeight() - line, fScrollRegion.getHeight());
+ fTerminal.scroll(line, nLines, -n);
+ }
+ }
+
+ @Override
+ public void scrollDown(int n) {
+ assert n > 0;
+ synchronized (fTerminal) {
+ int line = toAbsoluteLine(fScrollRegion.getTopLine());
+ int nLines = Math.min(fTerminal.getHeight() - line, fScrollRegion.getHeight());
+ fTerminal.scroll(line, nLines, n);
+ }
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/emulator/VT100TerminalControl.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/emulator/VT100TerminalControl.java
new file mode 100644
index 00000000000..759c16c750a
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/emulator/VT100TerminalControl.java
@@ -0,0 +1,1407 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2021 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Initial Contributors:
+ * The following Wind River employees contributed to the Terminal component
+ * that contains this file: Chris Thew, Fran Litterio, Stephen Lamb,
+ * Helmut Haigermoser and Ted Williams.
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - split into core, view and connector plugins
+ * Martin Oberhuber (Wind River) - fixed copyright headers and beautified
+ * Martin Oberhuber (Wind River) - [206892] State handling: Only allow connect when CLOSED
+ * Martin Oberhuber (Wind River) - [206883] Serial Terminal leaks Jobs
+ * Martin Oberhuber (Wind River) - [208145] Terminal prints garbage after quick disconnect/reconnect
+ * Martin Oberhuber (Wind River) - [207785] NPE when trying to send char while no longer connected
+ * Michael Scharf (Wind River) - [209665] Add ability to log byte streams from terminal
+ * Ruslan Sychev (Xored Software) - [217675] NPE or SWTException when closing Terminal View while connection establishing
+ * Michael Scharf (Wing River) - [196447] The optional terminal input line should be resizeable
+ * Martin Oberhuber (Wind River) - [168197] Replace JFace MessagDialog by SWT MessageBox
+ * Martin Oberhuber (Wind River) - [204796] Terminal should allow setting the encoding to use
+ * Michael Scharf (Wind River) - [237398] Terminal get Invalid Thread Access when the title is set
+ * Martin Oberhuber (Wind River) - [240745] Pressing Ctrl+F1 in the Terminal should bring up context help
+ * Michael Scharf (Wind River) - [240098] The cursor should not blink when the terminal is disconnected
+ * Anton Leherbauer (Wind River) - [335021] Middle mouse button copy/paste does not work with the terminal
+ * Max Stepanov (Appcelerator) - [339768] Fix ANSI code for PgUp / PgDn
+ * Pawel Piech (Wind River) - [333613] "Job found still running" after shutdown
+ * Martin Oberhuber (Wind River) - [348700] Terminal unusable after disconnect
+ * Simon Bernard (Sierra Wireless) - [351424] [terminal] Terminal does not support del and insert key
+ * Martin Oberhuber (Wind River) - [265352][api] Allow setting fonts programmatically
+ * Martin Oberhuber (Wind River) - [378691][api] push Preferences into the Widget
+ * Anton Leherbauer (Wind River) - [433751] Add option to enable VT100 line wrapping mode
+ * Anton Leherbauer (Wind River) - [434294] Incorrect handling of function keys with modifiers
+ * Martin Oberhuber (Wind River) - [434294] Add Mac bindings with COMMAND
+ * Anton Leherbauer (Wind River) - [434749] UnhandledEventLoopException when copying to clipboard while the selection is empty
+ * Martin Oberhuber (Wind River) - [436612] Restore Eclipse 3.4 compatibility by using Reflection
+ * Anton Leherbauer (Wind River) - [458398] Add support for normal/application cursor keys mode
+ * Anton Leherbauer (Wind River) - [420928] Terminal widget leaks memory
+ * Davy Landman (CWI) - [475267][api] Allow custom mouse listeners
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.emulator;
+
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.UnsupportedEncodingException;
+import java.lang.reflect.Field;
+import java.net.SocketException;
+import java.nio.charset.Charset;
+import java.util.EnumMap;
+import java.util.Map;
+
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.commands.ParameterizedCommand;
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jface.bindings.Binding;
+import org.eclipse.jface.bindings.keys.KeySequence;
+import org.eclipse.jface.bindings.keys.KeyStroke;
+import org.eclipse.jface.bindings.keys.SWTKeySupport;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.resource.DataFormatException;
+import org.eclipse.jface.resource.JFaceResources;
+import org.eclipse.jface.resource.StringConverter;
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.jface.util.PropertyChangeEvent;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.dnd.Clipboard;
+import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.TextTransfer;
+import org.eclipse.swt.dnd.Transfer;
+import org.eclipse.swt.events.FocusEvent;
+import org.eclipse.swt.events.FocusListener;
+import org.eclipse.swt.events.KeyAdapter;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.KeyListener;
+import org.eclipse.swt.events.MouseAdapter;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.graphics.RGB;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.MessageBox;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.tm.internal.terminal.control.ICommandInputField;
+import org.eclipse.tm.internal.terminal.control.ITerminalListener;
+import org.eclipse.tm.internal.terminal.control.ITerminalListener2;
+import org.eclipse.tm.internal.terminal.control.ITerminalMouseListener;
+import org.eclipse.tm.internal.terminal.control.ITerminalViewControl;
+import org.eclipse.tm.internal.terminal.control.impl.ITerminalControlForText;
+import org.eclipse.tm.internal.terminal.control.impl.TerminalMessages;
+import org.eclipse.tm.internal.terminal.control.impl.TerminalPlugin;
+import org.eclipse.tm.internal.terminal.preferences.ITerminalConstants;
+import org.eclipse.tm.internal.terminal.preferences.TerminalColorPresets;
+import org.eclipse.tm.internal.terminal.provisional.api.ITerminalConnector;
+import org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl;
+import org.eclipse.tm.internal.terminal.provisional.api.Logger;
+import org.eclipse.tm.internal.terminal.provisional.api.TerminalState;
+import org.eclipse.tm.internal.terminal.textcanvas.PipedInputStream;
+import org.eclipse.tm.internal.terminal.textcanvas.PollingTextCanvasModel;
+import org.eclipse.tm.internal.terminal.textcanvas.TextCanvas;
+import org.eclipse.tm.internal.terminal.textcanvas.TextLineRenderer;
+import org.eclipse.tm.terminal.model.ITerminalTextData;
+import org.eclipse.tm.terminal.model.ITerminalTextDataSnapshot;
+import org.eclipse.tm.terminal.model.TerminalColor;
+import org.eclipse.tm.terminal.model.TerminalTextDataFactory;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.contexts.IContextActivation;
+import org.eclipse.ui.contexts.IContextService;
+import org.eclipse.ui.handlers.IHandlerService;
+import org.eclipse.ui.keys.IBindingService;
+
+/**
+ *
+ * This class was originally written to use nested classes, which unfortunately makes
+ * this source file larger and more complex than it needs to be. In particular, the
+ * methods in the nested classes directly access the fields of the enclosing class.
+ * One day we should pull the nested classes out into their own source files (but still
+ * in this package).
+ *
+ * @author Chris Thew <chris.thew@windriver.com>
+ */
+public class VT100TerminalControl implements ITerminalControlForText, ITerminalControl, ITerminalViewControl {
+ protected final static String[] LINE_DELIMITERS = { "\n" }; //$NON-NLS-1$
+
+ /**
+ * This field holds a reference to a TerminalText object that performs all ANSI
+ * text processing on data received from the remote host and controls how text is
+ * displayed using the view's StyledText widget.
+ */
+ private final VT100Emulator fTerminalText;
+ private Display fDisplay;
+ private TextCanvas fCtlText;
+ private Composite fWndParent;
+ private Clipboard fClipboard;
+ private KeyListener fKeyHandler;
+ private final ITerminalListener fTerminalListener;
+ private String fMsg = ""; //$NON-NLS-1$
+ private TerminalFocusListener fFocusListener;
+ private ITerminalConnector fConnector;
+ private final ITerminalConnector[] fConnectors;
+ private final IPreferenceStore fPreferenceStore;
+ private boolean connectOnEnterIfClosed = true;
+
+ PipedInputStream fInputStream;
+ private Charset fCharset = Charset.defaultCharset();
+ private InputStreamReader fInputStreamReader;
+
+ private ICommandInputField fCommandInputField;
+
+ private volatile TerminalState fState;
+
+ private final ITerminalTextData fTerminalModel;
+
+ private final EditActionAccelerators editActionAccelerators = new EditActionAccelerators();
+
+ private boolean fApplicationCursorKeys;
+
+ /**
+ * Listens to changes in the preferences
+ */
+ private final IPropertyChangeListener fPreferenceListener = this::updatePreferences;
+ private final IPropertyChangeListener fFontListener = this::updateFont;
+
+ /**
+ * Is protected by synchronize on this
+ */
+ volatile private Job fJob;
+
+ private PollingTextCanvasModel fPollingTextCanvasModel;
+
+ /**
+ * Instantiate a Terminal widget.
+ * @param target Callback for notifying the owner of Terminal state changes.
+ * @param wndParent The Window parent to embed the Terminal in.
+ * @param connectors Provided connectors.
+ * @param preferenceStore If non-<code>null</code>, the Terminal widget will pick up settings
+ * from the given store.
+ * @since 3.2
+ */
+ public VT100TerminalControl(ITerminalListener target, Composite wndParent, ITerminalConnector[] connectors) {
+ this(target, wndParent, connectors, null);
+ }
+
+ /**
+ * Instantiate a Terminal widget using the <code>org.eclipse.tm.terminal.TerminalPreferencePage</code> Preference page's
+ * default preference store.
+ * @param target Callback for notifying the owner of Terminal state changes.
+ * @param wndParent The Window parent to embed the Terminal in.
+ * @param connectors Provided connectors.
+ * @param useCommonPrefs If <code>true</code>, the Terminal widget will pick up settings
+ * from the <code>org.eclipse.tm.terminal.TerminalPreferencePage</code> Preference page.
+ * Otherwise, clients need to maintain settings themselves.
+ * @since 3.2
+ */
+ public VT100TerminalControl(ITerminalListener target, Composite wndParent, ITerminalConnector[] connectors,
+ boolean useCommonPrefs) {
+ this(target, wndParent, connectors, useCommonPrefs ? TerminalPlugin.getDefault().getPreferenceStore() : null);
+ }
+
+ /**
+ * Instantiate a Terminal widget.
+ * @param target Callback for notifying the owner of Terminal state changes.
+ * @param wndParent The Window parent to embed the Terminal in.
+ * @param connectors Provided connectors.
+ * @param preferenceStore If non-<code>null</code>, the Terminal widget will pick up settings
+ * from the given store.
+ * @since 5.0
+ */
+ public VT100TerminalControl(ITerminalListener target, Composite wndParent, ITerminalConnector[] connectors,
+ IPreferenceStore preferenceStore) {
+ fConnectors = connectors;
+ fPreferenceStore = preferenceStore;
+ fTerminalListener = target;
+ fTerminalModel = TerminalTextDataFactory.makeTerminalTextData();
+ fTerminalModel.setMaxHeight(1000);
+ fInputStream = new PipedInputStream(8 * 1024);
+ fTerminalText = new VT100Emulator(fTerminalModel, this, null);
+ // Use Default Charset as start, until setCharset() is called
+ setCharset(Charset.defaultCharset());
+ setupTerminal(wndParent);
+ }
+
+ @Override
+ @Deprecated
+ public void setEncoding(String encoding) throws UnsupportedEncodingException {
+ Charset charset;
+ if (encoding == null) {
+ charset = Charset.defaultCharset();
+ } else {
+ charset = Charset.forName(encoding);
+ }
+ // remember encoding if above didn't throw an exception
+ setCharset(charset);
+ }
+
+ @Override
+ public void setCharset(Charset charset) {
+ if (charset == null) {
+ charset = Charset.defaultCharset();
+ }
+ fInputStreamReader = new InputStreamReader(fInputStream, charset);
+ fCharset = charset;
+ fTerminalText.setInputStreamReader(fInputStreamReader);
+ }
+
+ @Override
+ @Deprecated
+ public String getEncoding() {
+ return fCharset.name();
+ }
+
+ @Override
+ public Charset getCharset() {
+ return fCharset;
+ }
+
+ @Override
+ public ITerminalConnector[] getConnectors() {
+ return fConnectors;
+ }
+
+ @Override
+ public void copy() {
+ copy(DND.CLIPBOARD);
+ }
+
+ private void copy(int clipboardType) {
+ String selection = getSelection();
+ if (selection.length() > 0) {
+ Object[] data = new Object[] { selection };
+ Transfer[] types = new Transfer[] { TextTransfer.getInstance() };
+ fClipboard.setContents(data, types, clipboardType);
+ }
+ }
+
+ @Override
+ public void paste() {
+ paste(DND.CLIPBOARD);
+ // TODO paste in another thread.... to avoid blocking
+ // new Thread() {
+ // public void run() {
+ // for (int i = 0; i < strText.length(); i++) {
+ // sendChar(strText.charAt(i), false);
+ // }
+ //
+ // }
+ // }.start();
+ }
+
+ private void paste(int clipboardType) {
+ TextTransfer textTransfer = TextTransfer.getInstance();
+ String strText = (String) fClipboard.getContents(textTransfer, clipboardType);
+ pasteString(strText);
+ }
+
+ /**
+ * @param strText the text to paste
+ */
+ @Override
+ public boolean pasteString(String strText) {
+ if (!isConnected())
+ return false;
+ if (strText == null)
+ return false;
+ sendString(strText);
+ return true;
+ }
+
+ @Override
+ public void selectAll() {
+ getCtlText().selectAll();
+ if (fTerminalListener instanceof ITerminalListener2) {
+ ((ITerminalListener2) fTerminalListener).setTerminalSelectionChanged();
+ }
+ }
+
+ @Override
+ public void sendKey(char character) {
+ Event event;
+ KeyEvent keyEvent;
+
+ event = new Event();
+ event.widget = getCtlText();
+ event.character = character;
+ event.keyCode = 0;
+ event.stateMask = 0;
+ event.doit = true;
+ keyEvent = new KeyEvent(event);
+
+ fKeyHandler.keyPressed(keyEvent);
+ }
+
+ @Override
+ public void clearTerminal() {
+ // The TerminalText object does all text manipulation.
+ getTerminalText().clearTerminal();
+ getCtlText().clearSelection();
+ if (fTerminalListener instanceof ITerminalListener2) {
+ ((ITerminalListener2) fTerminalListener).setTerminalSelectionChanged();
+ }
+ }
+
+ @Override
+ public Clipboard getClipboard() {
+ return fClipboard;
+ }
+
+ /**
+ * @return non null selection
+ */
+ @Override
+ public String getSelection() {
+ String txt = fCtlText.getSelectionText();
+ if (txt == null)
+ txt = ""; //$NON-NLS-1$
+ return txt;
+ }
+
+ @Override
+ public void setFocus() {
+ getCtlText().setFocus();
+ }
+
+ @Override
+ public boolean isEmpty() {
+ return getCtlText().isEmpty();
+ }
+
+ @Override
+ public boolean isDisposed() {
+ return getCtlText().isDisposed();
+ }
+
+ @Override
+ public boolean isConnected() {
+ return fState == TerminalState.CONNECTED;
+ }
+
+ @Override
+ public void disposeTerminal() {
+ Logger.log("entered."); //$NON-NLS-1$
+ if (fPreferenceStore != null) {
+ fPreferenceStore.removePropertyChangeListener(fPreferenceListener);
+ }
+ JFaceResources.getFontRegistry().removeListener(fFontListener);
+ disconnectTerminal();
+ fClipboard.dispose();
+ getTerminalText().dispose();
+ }
+
+ @Override
+ public void connectTerminal() {
+ Logger.log("entered."); //$NON-NLS-1$
+ if (getTerminalConnector() == null)
+ return;
+ fTerminalText.resetState();
+ fApplicationCursorKeys = false;
+ if (fConnector.getInitializationErrorMessage() != null) {
+ showErrorMessage(NLS.bind(TerminalMessages.CannotConnectTo, fConnector.getName(),
+ fConnector.getInitializationErrorMessage()));
+ // we cannot connect because the connector was not initialized
+ return;
+ }
+ // clean the error message
+ setMsg(""); //$NON-NLS-1$
+ getTerminalConnector().connect(this);
+ waitForConnect();
+ }
+
+ @Override
+ public ITerminalConnector getTerminalConnector() {
+ return fConnector;
+ }
+
+ @Override
+ public void disconnectTerminal() {
+ Logger.log("entered."); //$NON-NLS-1$
+
+ //Disconnect the remote side first
+ if (getState() != TerminalState.CLOSED) {
+ if (getTerminalConnector() != null) {
+ getTerminalConnector().disconnect();
+ }
+ }
+
+ //Ensure that a new Job can be started; then clean up old Job.
+ Job job;
+ synchronized (this) {
+ job = fJob;
+ fJob = null;
+ }
+ if (job != null) {
+ job.cancel();
+ // Join job to avoid leaving job running after workbench shutdown (333613).
+ // Interrupt to be fast enough; cannot close fInputStream since it is re-used (bug 348700).
+ Thread t = job.getThread();
+ if (t != null)
+ t.interrupt();
+ try {
+ job.join();
+ } catch (InterruptedException e) {
+ }
+ }
+ fPollingTextCanvasModel.stopPolling();
+ }
+
+ private void waitForConnect() {
+ Logger.log("entered."); //$NON-NLS-1$
+
+ // TODO Eliminate the nested dispatch loop
+ do {
+ if (!fDisplay.readAndDispatch())
+ fDisplay.sleep();
+ } while (getState() == TerminalState.CONNECTING);
+
+ if (getCtlText().isDisposed()) {
+ disconnectTerminal();
+ return;
+ }
+ if (getMsg().length() > 0) {
+ showErrorMessage(getMsg());
+ disconnectTerminal();
+ return;
+ }
+ if (getCtlText().isFocusControl()) {
+ if (getState() == TerminalState.CONNECTED)
+ fFocusListener.captureKeyEvents(true);
+ }
+ fPollingTextCanvasModel.startPolling();
+ startReaderJob();
+ }
+
+ private synchronized void startReaderJob() {
+ if (fJob == null) {
+ fJob = new Job("Terminal data reader") { //$NON-NLS-1$
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ IStatus status = Status.OK_STATUS;
+ try {
+ while (true) {
+ while (fInputStream.available() == 0 && !monitor.isCanceled()) {
+ try {
+ fInputStream.waitForAvailable(500);
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ }
+ }
+ if (monitor.isCanceled()) {
+ //Do not disconnect terminal here because another reader job may already be running
+ status = Status.CANCEL_STATUS;
+ break;
+ }
+ try {
+ // TODO: should block when no text is available!
+ fTerminalText.processText();
+ } catch (Exception e) {
+ disconnectTerminal();
+ status = new Status(IStatus.ERROR, TerminalPlugin.PLUGIN_ID, e.getLocalizedMessage(),
+ e);
+ break;
+ }
+ }
+ } finally {
+ // clean the job: start a new one when the connection gets restarted
+ // Bug 208145: make sure we do not clean an other job that's already started (since it would become a Zombie)
+ synchronized (VT100TerminalControl.this) {
+ if (fJob == this) {
+ fJob = null;
+ }
+ }
+ }
+ return status;
+ }
+
+ };
+ fJob.setSystem(true);
+ fJob.schedule();
+ }
+ }
+
+ private void showErrorMessage(String message) {
+ String strTitle = TerminalMessages.TerminalError;
+ // [168197] Replace JFace MessagDialog by SWT MessageBox
+ //MessageDialog.openError( getShell(), strTitle, message);
+ MessageBox mb = new MessageBox(getShell(), SWT.ICON_ERROR | SWT.OK);
+ mb.setText(strTitle);
+ mb.setMessage(message);
+ mb.open();
+ }
+
+ protected void sendString(String string) {
+ Logger.log(string);
+ try {
+ // Send the string after converting it to an array of bytes using the
+ // platform's default character encoding.
+ //
+ // TODO: Find a way to force this to use the ISO Latin-1 encoding.
+ // TODO: handle Encoding Errors in a better way
+
+ getOutputStream().write(string.getBytes(fCharset));
+ getOutputStream().flush();
+ } catch (SocketException socketException) {
+ displayTextInTerminal(socketException.getMessage());
+
+ String strMsg = TerminalMessages.SocketError + "!\n" + socketException.getMessage(); //$NON-NLS-1$
+ showErrorMessage(strMsg);
+
+ Logger.logException(socketException);
+
+ disconnectTerminal();
+ } catch (IOException ioException) {
+ showErrorMessage(TerminalMessages.IOError + "!\n" + ioException.getMessage());//$NON-NLS-1$
+
+ Logger.logException(ioException);
+
+ disconnectTerminal();
+ }
+ }
+
+ @Override
+ public Shell getShell() {
+ return getCtlText().getShell();
+ }
+
+ protected void sendChar(char chKey, boolean altKeyPressed) {
+ try {
+ int byteToSend = chKey;
+ OutputStream os = getOutputStream();
+ if (os == null) {
+ // Bug 207785: NPE when trying to send char while no longer connected
+ Logger.log("NOT sending '" + byteToSend + "' because no longer connected"); //$NON-NLS-1$ //$NON-NLS-2$
+ } else {
+ if (altKeyPressed) {
+ // When the ALT key is pressed at the same time that a character is
+ // typed, translate it into an ESCAPE followed by the character. The
+ // alternative in this case is to set the high bit of the character
+ // being transmitted, but that will cause input such as ALT-f to be
+ // seen as the ISO Latin-1 character '�', which can be confusing to
+ // European users running Emacs, for whom Alt-f should move forward a
+ // word instead of inserting the '�' character.
+ //
+ // TODO: Make the ESCAPE-vs-highbit behavior user configurable.
+
+ byte[] bytesToSend = String.valueOf(chKey).getBytes(fCharset);
+ StringBuilder b = new StringBuilder("sending ESC"); //$NON-NLS-1$
+ for (int i = 0; i < bytesToSend.length; i++) {
+ if (i != 0)
+ b.append(" +"); //$NON-NLS-1$
+ b.append(" '" + bytesToSend[i] + "'"); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ Logger.log(b.toString());
+ os.write('\u001b');
+ os.write(bytesToSend);
+ } else {
+ byte[] bytesToSend = String.valueOf(chKey).getBytes(fCharset);
+ StringBuilder b = new StringBuilder("sending"); //$NON-NLS-1$
+ for (int i = 0; i < bytesToSend.length; i++) {
+ if (i != 0)
+ b.append(" +"); //$NON-NLS-1$
+ b.append(" '" + bytesToSend[i] + "'"); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ Logger.log(b.toString());
+ os.write(bytesToSend);
+ }
+ os.flush();
+ }
+ } catch (SocketException socketException) {
+ Logger.logException(socketException);
+
+ displayTextInTerminal(socketException.getMessage());
+
+ String strMsg = TerminalMessages.SocketError + "!\n" + socketException.getMessage(); //$NON-NLS-1$
+
+ showErrorMessage(strMsg);
+ Logger.logException(socketException);
+
+ disconnectTerminal();
+ } catch (IOException ioException) {
+ Logger.logException(ioException);
+
+ displayTextInTerminal(ioException.getMessage());
+
+ String strMsg = TerminalMessages.IOError + "!\n" + ioException.getMessage(); //$NON-NLS-1$
+
+ showErrorMessage(strMsg);
+ Logger.logException(ioException);
+
+ disconnectTerminal();
+ }
+ }
+
+ @Override
+ public void setupTerminal(Composite parent) {
+ Assert.isNotNull(parent);
+ boolean wasDisposed = true;
+ TerminalState oldState = fState;
+ fState = TerminalState.CLOSED;
+ if (fClipboard != null && !fClipboard.isDisposed()) {
+ // terminal was not disposed (DnD)
+ wasDisposed = false;
+ fClipboard.dispose();
+ fPollingTextCanvasModel.stopPolling();
+ }
+ if (fWndParent != null && !fWndParent.isDisposed()) {
+ // terminal widget gets a new parent (DnD)
+ fWndParent.dispose();
+ }
+ setupControls(parent);
+ setCommandInputField(fCommandInputField);
+ setupListeners();
+ if (fPreferenceStore != null && wasDisposed) {
+ updatePreferences(null);
+ fPreferenceStore.addPropertyChangeListener(fPreferenceListener);
+ }
+ JFaceResources.getFontRegistry().addListener(fFontListener);
+ setupHelp(fWndParent, TerminalPlugin.HELP_VIEW);
+
+ if (!wasDisposed) {
+ fState = oldState;
+ }
+ }
+
+ private void updatePreferences(PropertyChangeEvent unused) {
+ int bufferLineLimit = fPreferenceStore.getInt(ITerminalConstants.PREF_BUFFERLINES);
+ boolean invert = fPreferenceStore.getBoolean(ITerminalConstants.PREF_INVERT_COLORS);
+ setBufferLineLimit(bufferLineLimit);
+ setInvertedColors(invert);
+ onTerminalColorsChanged();
+ onTerminalFontChanged();
+ }
+
+ private void onTerminalColorsChanged() {
+ Map<TerminalColor, RGB> map = new EnumMap<>(TerminalColor.class);
+ TerminalColor[] values = TerminalColor.values();
+ for (TerminalColor terminalColor : values) {
+ RGB rgb = null;
+ if (fPreferenceStore != null) {
+ try {
+ rgb = StringConverter.asRGB(
+ fPreferenceStore.getString(ITerminalConstants.getPrefForTerminalColor(terminalColor)));
+ } catch (DataFormatException dfe) {
+ // bad color, use default preset value instead
+ }
+ }
+
+ if (rgb == null) {
+ rgb = TerminalColorPresets.INSTANCE.getDefaultPreset().getRGB(terminalColor);
+ }
+ map.put(terminalColor, rgb);
+ }
+ fCtlText.updateColors(map);
+ }
+
+ private String getFontDefinition() {
+ String definition;
+ if (fPreferenceStore != null) {
+ definition = fPreferenceStore.getString(ITerminalConstants.PREF_FONT_DEFINITION);
+ } else {
+ definition = ITerminalConstants.DEFAULT_FONT_DEFINITION;
+ }
+ if (definition == null || definition.isEmpty()) {
+ definition = "org.eclipse.jface.textfont"; //$NON-NLS-1$
+ }
+ return definition;
+ }
+
+ private void onTerminalFontChanged() {
+ setFont(getFontDefinition());
+ }
+
+ private void updateFont(PropertyChangeEvent event) {
+ if (event.getProperty().equals(getFontDefinition())) {
+ onTerminalFontChanged();
+ }
+ }
+
+ @Override
+ public void setFont(String fontName) {
+ Font font = JFaceResources.getFont(fontName);
+ getCtlText().setFont(font);
+ if (fCommandInputField != null) {
+ fCommandInputField.setFont(font);
+ }
+ // Tell the TerminalControl singleton that the font has changed.
+ fCtlText.updateFont(fontName);
+ getTerminalText().fontChanged();
+ }
+
+ @Override
+ @Deprecated
+ public void setFont(Font font) {
+ getCtlText().setFont(font);
+ if (fCommandInputField != null) {
+ fCommandInputField.setFont(font);
+ }
+
+ // Tell the TerminalControl singleton that the font has changed.
+ fCtlText.onFontChange();
+ getTerminalText().fontChanged();
+ }
+
+ @Override
+ public Font getFont() {
+ return getCtlText().getFont();
+ }
+
+ @Override
+ public Control getControl() {
+ return fCtlText;
+ }
+
+ @Override
+ public Control getRootControl() {
+ return fWndParent;
+ }
+
+ protected void setupControls(Composite parent) {
+ fWndParent = new Composite(parent, SWT.NONE);
+ GridLayout layout = new GridLayout();
+ layout.marginWidth = 0;
+ layout.marginHeight = 0;
+ layout.verticalSpacing = 0;
+ fWndParent.setLayout(layout);
+
+ ITerminalTextDataSnapshot snapshot = fTerminalModel.makeSnapshot();
+ // TODO how to get the initial size correctly!
+ snapshot.updateSnapshot(false);
+ fPollingTextCanvasModel = new PollingTextCanvasModel(snapshot);
+ fCtlText = new TextCanvas(fWndParent, fPollingTextCanvasModel, SWT.NONE,
+ new TextLineRenderer(fCtlText, fPollingTextCanvasModel));
+
+ fCtlText.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ fCtlText.addResizeHandler((lines, columns) -> fTerminalText.setDimensions(lines, columns));
+ fCtlText.addMouseListener(new MouseAdapter() {
+ @Override
+ public void mouseUp(MouseEvent e) {
+ // update selection used by middle mouse button paste
+ if (e.button == 1 && getSelection().length() > 0) {
+ copy(DND.SELECTION_CLIPBOARD);
+ }
+ }
+ });
+
+ fDisplay = getCtlText().getDisplay();
+ fClipboard = new Clipboard(fDisplay);
+ }
+
+ protected void setupListeners() {
+ fKeyHandler = new TerminalKeyHandler();
+ fFocusListener = new TerminalFocusListener();
+
+ getCtlText().addKeyListener(fKeyHandler);
+ getCtlText().addFocusListener(fFocusListener);
+
+ }
+
+ /**
+ * Setup all the help contexts for the controls.
+ */
+ protected void setupHelp(Composite parent, String id) {
+ Control[] children = parent.getChildren();
+
+ for (int nIndex = 0; nIndex < children.length; nIndex++) {
+ if (children[nIndex] instanceof Composite) {
+ setupHelp((Composite) children[nIndex], id);
+ }
+ }
+
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, id);
+ }
+
+ @Override
+ public void displayTextInTerminal(String text) {
+ writeToTerminal("\r\n" + text + "\r\n"); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ private void writeToTerminal(String text) {
+ try {
+ getRemoteToTerminalOutputStream().write(text.getBytes(fCharset));
+ } catch (IOException e) {
+ // should never happen!
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public OutputStream getRemoteToTerminalOutputStream() {
+ if (Logger.isLogEnabled()) {
+ return new LoggingOutputStream(fInputStream.getOutputStream());
+ } else {
+ return fInputStream.getOutputStream();
+ }
+ }
+
+ protected boolean isLogCharEnabled() {
+ return TerminalPlugin.isOptionEnabled(Logger.TRACE_DEBUG_LOG_CHAR);
+ }
+
+ @Override
+ public OutputStream getOutputStream() {
+ if (getTerminalConnector() != null)
+ return getTerminalConnector().getTerminalToRemoteStream();
+ return null;
+ }
+
+ @Override
+ public void setMsg(String msg) {
+ fMsg = msg;
+ }
+
+ public String getMsg() {
+ return fMsg;
+ }
+
+ protected TextCanvas getCtlText() {
+ return fCtlText;
+ }
+
+ public VT100Emulator getTerminalText() {
+ return fTerminalText;
+ }
+
+ protected class TerminalFocusListener implements FocusListener {
+ private IContextActivation terminalContextActivation = null;
+ private IContextActivation editContextActivation = null;
+
+ protected TerminalFocusListener() {
+ super();
+ }
+
+ @Override
+ public void focusGained(FocusEvent event) {
+ // Disable all keyboard accelerators (e.g., Control-B) so the Terminal view
+ // can see every keystroke. Without this, Emacs, vi, and Bash are unusable
+ // in the Terminal view.
+ if (getState() == TerminalState.CONNECTED)
+ captureKeyEvents(true);
+
+ IContextService contextService = PlatformUI.getWorkbench().getAdapter(IContextService.class);
+ editContextActivation = contextService.activateContext("org.eclipse.tm.terminal.EditContext"); //$NON-NLS-1$
+ }
+
+ @Override
+ public void focusLost(FocusEvent event) {
+ // Enable all keybindings.
+ captureKeyEvents(false);
+
+ // Restore the command context to its previous value.
+
+ IContextService contextService = PlatformUI.getWorkbench().getAdapter(IContextService.class);
+ contextService.deactivateContext(editContextActivation);
+ }
+
+ protected void captureKeyEvents(boolean capture) {
+ IBindingService bindingService = PlatformUI.getWorkbench().getAdapter(IBindingService.class);
+ IContextService contextService = PlatformUI.getWorkbench().getAdapter(IContextService.class);
+
+ boolean enableKeyFilter = !capture;
+ if (bindingService.isKeyFilterEnabled() != enableKeyFilter)
+ bindingService.setKeyFilterEnabled(enableKeyFilter);
+
+ if (capture && terminalContextActivation == null) {
+ // The above code fails to cause Eclipse to disable menu-activation
+ // accelerators (e.g., Alt-F for the File menu), so we set the command
+ // context to be the Terminal view's command context. This enables us to
+ // override menu-activation accelerators with no-op commands in our
+ // plugin.xml file, which enables the Terminal view to see absolutely _all_
+ // key-presses.
+ terminalContextActivation = contextService.activateContext("org.eclipse.tm.terminal.TerminalContext"); //$NON-NLS-1$
+
+ } else if (!capture && terminalContextActivation != null) {
+ contextService.deactivateContext(terminalContextActivation);
+ terminalContextActivation = null;
+ }
+ }
+ }
+
+ protected class TerminalKeyHandler extends KeyAdapter {
+ @Override
+ public void keyPressed(KeyEvent event) {
+ //TODO next 2 lines are probably obsolete now
+ if (getState() == TerminalState.CONNECTING)
+ return;
+
+ //TODO we should no longer handle copy & paste specially.
+ //Instead, we should have Ctrl+Shift always go to local since there is no escape sequence for this.
+ //On Mac, Command+Anything already goes always to local.
+ //Note that this decision means that Command will NOT be Meta in Emacs on a Remote.
+ int accelerator = SWTKeySupport.convertEventToUnmodifiedAccelerator(event);
+ if (editActionAccelerators.isCopyAction(accelerator)) {
+ copy();
+ return;
+ }
+ if (editActionAccelerators.isPasteAction(accelerator)) {
+ paste();
+ return;
+ }
+
+ // We set the event.doit to false to prevent any further processing of this
+ // key event. The only reason this is here is because I was seeing the F10
+ // key both send an escape sequence (due to this method) and switch focus
+ // to the Workbench File menu (forcing the user to click in the Terminal
+ // view again to continue entering text). This fixes that.
+
+ event.doit = false;
+
+ char character = event.character;
+ int modifierKeys = event.stateMask & SWT.MODIFIER_MASK;
+ boolean ctrlKeyPressed = (event.stateMask & SWT.CTRL) != 0;
+ boolean onlyCtrlKeyPressed = modifierKeys == SWT.CTRL;
+ boolean macCmdKeyPressed = (event.stateMask & SWT.COMMAND) != 0;
+
+ // To fix SPR 110341, we consider the Alt key to be pressed only when the
+ // Control key is _not_ also pressed. This works around a bug in SWT where,
+ // on European keyboards, the AltGr key being pressed appears to us as Control
+ // + Alt being pressed simultaneously.
+ boolean altKeyPressed = (event.stateMask & SWT.ALT) != 0 && !ctrlKeyPressed;
+
+ //if (!isConnected()) {
+ if (fState == TerminalState.CLOSED) {
+ // Pressing ENTER while not connected causes us to connect.
+ if (character == '\r' && isConnectOnEnterIfClosed()) {
+ connectTerminal();
+ return;
+ }
+
+ // Ignore all other keyboard input when not connected.
+ // Allow other key handlers (such as Ctrl+F1) do their work
+ event.doit = true;
+ return;
+ }
+
+ // Manage the Del key
+ if (event.keyCode == 0x000007f) {
+ sendString("\u001b[3~"); //$NON-NLS-1$
+ return;
+ }
+
+ // TODO Linux tty is usually expecting a DEL (^?) character
+ // but this causes issues with some telnet servers and
+ // serial connections. Workaround: stty erase ^H
+ //if (event.keyCode == SWT.BS) {
+ // sendChar(SWT.DEL, altKeyPressed);
+ // return;
+ //}
+
+ // If the event character is NUL ('\u0000'), then a special key was pressed
+ // (e.g., PageUp, PageDown, an arrow key, a function key, Shift, Alt,
+ // Control, etc.). The one exception is when the user presses Control-@,
+ // which sends a NUL character, in which case we must send the NUL to the
+ // remote endpoint. This is necessary so that Emacs will work correctly,
+ // because Control-@ (i.e., NUL) invokes Emacs' set-mark-command when Emacs
+ // is running on a terminal. When the user presses Control-@, the keyCode
+ // is 50.
+ // On a Mac, the Cmd key is always used for local commands.
+
+ if (macCmdKeyPressed || (character == '\u0000' && event.keyCode != 50)) {
+ // A special key was pressed. Figure out which one it was and send the
+ // appropriate ANSI escape sequence.
+ //
+ // IMPORTANT: Control will not enter this method for these special keys
+ // unless certain <keybinding> tags are present in the plugin.xml file
+ // for the Terminal view. Do not delete those tags.
+
+ String escSeq = null;
+ boolean anyModifierPressed = modifierKeys != 0;
+ boolean onlyMacCmdKeyPressed = modifierKeys == SWT.COMMAND;
+
+ switch (event.keyCode) {
+ case 0x1000001: // Up arrow.
+ if (!anyModifierPressed)
+ escSeq = fApplicationCursorKeys ? "\u001bOA" : "\u001b[A"; //$NON-NLS-1$ //$NON-NLS-2$
+ break;
+
+ case 0x1000002: // Down arrow.
+ if (!anyModifierPressed)
+ escSeq = fApplicationCursorKeys ? "\u001bOB" : "\u001b[B"; //$NON-NLS-1$ //$NON-NLS-2$
+ break;
+
+ case 0x1000003: // Left arrow.
+ if (onlyCtrlKeyPressed) {
+ escSeq = "\u001b[1;5D"; //$NON-NLS-1$
+ } else if (!anyModifierPressed) {
+ escSeq = fApplicationCursorKeys ? "\u001bOD" : "\u001b[D"; //$NON-NLS-1$ //$NON-NLS-2$
+ } else if (onlyMacCmdKeyPressed) {
+ // Cmd-Left is "Home" on the Mac
+ escSeq = fApplicationCursorKeys ? "\u001bOH" : "\u001b[H"; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ break;
+
+ case 0x1000004: // Right arrow.
+ if (onlyCtrlKeyPressed) {
+ escSeq = "\u001b[1;5C"; //$NON-NLS-1$
+ } else if (!anyModifierPressed) {
+ escSeq = fApplicationCursorKeys ? "\u001bOC" : "\u001b[C"; //$NON-NLS-1$ //$NON-NLS-2$
+ } else if (onlyMacCmdKeyPressed) {
+ // Cmd-Right is "End" on the Mac
+ escSeq = fApplicationCursorKeys ? "\u001bOF" : "\u001b[F"; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ break;
+
+ case 0x1000005: // PgUp key.
+ if (!anyModifierPressed)
+ escSeq = "\u001b[5~"; //$NON-NLS-1$
+ break;
+
+ case 0x1000006: // PgDn key.
+ if (!anyModifierPressed)
+ escSeq = "\u001b[6~"; //$NON-NLS-1$
+ break;
+
+ case 0x1000007: // Home key.
+ if (!anyModifierPressed)
+ escSeq = fApplicationCursorKeys ? "\u001bOH" : "\u001b[H"; //$NON-NLS-1$ //$NON-NLS-2$
+ break;
+
+ case 0x1000008: // End key.
+ if (!anyModifierPressed)
+ escSeq = fApplicationCursorKeys ? "\u001bOF" : "\u001b[F"; //$NON-NLS-1$ //$NON-NLS-2$
+ break;
+
+ case 0x1000009: // Insert.
+ if (!anyModifierPressed)
+ escSeq = "\u001b[2~"; //$NON-NLS-1$
+ break;
+
+ case 0x100000a: // F1 key.
+ if (!anyModifierPressed)
+ escSeq = "\u001bOP"; //$NON-NLS-1$
+ break;
+
+ case 0x100000b: // F2 key.
+ if (!anyModifierPressed)
+ escSeq = "\u001bOQ"; //$NON-NLS-1$
+ break;
+
+ case 0x100000c: // F3 key.
+ if (!anyModifierPressed)
+ escSeq = "\u001bOR"; //$NON-NLS-1$
+ break;
+
+ case 0x100000d: // F4 key.
+ if (!anyModifierPressed)
+ escSeq = "\u001bOS"; //$NON-NLS-1$
+ break;
+
+ case 0x100000e: // F5 key.
+ if (!anyModifierPressed)
+ escSeq = "\u001b[15~"; //$NON-NLS-1$
+ break;
+
+ case 0x100000f: // F6 key.
+ if (!anyModifierPressed)
+ escSeq = "\u001b[17~"; //$NON-NLS-1$
+ break;
+
+ case 0x1000010: // F7 key.
+ if (!anyModifierPressed)
+ escSeq = "\u001b[18~"; //$NON-NLS-1$
+ break;
+
+ case 0x1000011: // F8 key.
+ if (!anyModifierPressed)
+ escSeq = "\u001b[19~"; //$NON-NLS-1$
+ break;
+
+ case 0x1000012: // F9 key.
+ if (!anyModifierPressed)
+ escSeq = "\u001b[20~"; //$NON-NLS-1$
+ break;
+
+ case 0x1000013: // F10 key.
+ if (!anyModifierPressed)
+ escSeq = "\u001b[21~"; //$NON-NLS-1$
+ break;
+
+ case 0x1000014: // F11 key.
+ if (!anyModifierPressed)
+ escSeq = "\u001b[23~"; //$NON-NLS-1$
+ break;
+
+ case 0x1000015: // F12 key.
+ if (!anyModifierPressed)
+ escSeq = "\u001b[24~"; //$NON-NLS-1$
+ break;
+
+ default:
+ // Ignore other special keys. Control flows through this case when
+ // the user presses SHIFT, CONTROL, ALT, and any other key not
+ // handled by the above cases.
+ break;
+ }
+
+ if (escSeq == null) {
+ // Any unmapped key should be handled locally by Eclipse
+ event.doit = true;
+ processKeyBinding(event, accelerator);
+ } else
+ sendString(escSeq);
+
+ // It's ok to return here, because we never locally echo special keys.
+
+ return;
+ }
+
+ Logger.log("stateMask = " + event.stateMask); //$NON-NLS-1$
+
+ if (onlyCtrlKeyPressed) {
+ switch (character) {
+ case ' ':
+ // Send a NUL character -- many terminal emulators send NUL when
+ // Control-Space is pressed. This is used to set the mark in Emacs.
+ character = '\u0000';
+ break;
+ case '/':
+ // Ctrl+/ is undo in emacs
+ character = '\u001f';
+ break;
+ }
+ }
+
+ //TODO: At this point, Ctrl+M sends the same as Ctrl+Shift+M .
+ //This is undesired. Fixing this here might make the special Ctrl+Shift+C
+ //handling unnecessary further up.
+ sendChar(character, altKeyPressed);
+
+ // Now decide if we should locally echo the character we just sent. We do
+ // _not_ locally echo the character if any of these conditions are true:
+ //
+ // o This is a serial connection.
+ //
+ // o This is a TCP connection (i.e., m_telnetConnection is not null) and
+ // the remote endpoint is not a TELNET server.
+ //
+ // o The ALT (or META) key is pressed.
+ //
+ // o The character is any of the first 32 ISO Latin-1 characters except
+ // Control-I or Control-M.
+ //
+ // o The character is the DELETE character.
+
+ if (getTerminalConnector() == null || getTerminalConnector().isLocalEcho() == false || altKeyPressed
+ || (character >= '\u0001' && character < '\t') || (character > '\t' && character < '\r')
+ || (character > '\r' && character <= '\u001f') || character == '\u007f') {
+ // No local echoing.
+ return;
+ }
+
+ // Locally echo the character.
+
+ StringBuffer charBuffer = new StringBuffer();
+ charBuffer.append(character);
+
+ // If the character is a carriage return, we locally echo it as a CR + LF
+ // combination.
+
+ if (character == '\r')
+ charBuffer.append('\n');
+
+ writeToTerminal(charBuffer.toString());
+ }
+
+ /*
+ * Process given event as Eclipse key binding.
+ */
+ private void processKeyBinding(KeyEvent event, int accelerator) {
+ IBindingService bindingService = PlatformUI.getWorkbench().getAdapter(IBindingService.class);
+ KeyStroke keyStroke = SWTKeySupport.convertAcceleratorToKeyStroke(accelerator);
+ Binding binding = bindingService.getPerfectMatch(KeySequence.getInstance(keyStroke));
+ if (binding != null) {
+ ParameterizedCommand cmd = binding.getParameterizedCommand();
+ if (cmd != null) {
+ IHandlerService handlerService = PlatformUI.getWorkbench().getAdapter(IHandlerService.class);
+ Event cmdEvent = new Event();
+ cmdEvent.type = SWT.KeyDown;
+ cmdEvent.display = event.display;
+ cmdEvent.widget = event.widget;
+ cmdEvent.character = event.character;
+ cmdEvent.keyCode = event.keyCode;
+ ////Bug - KeyEvent.keyLocation was introduced in Eclipse 3.6
+ ////Use reflection for now to remain backward compatible down to Eclipse 3.4
+ //cmdEvent.keyLocation = event.keyLocation;
+ try {
+ Field f1 = event.getClass().getField("keyLocation"); //$NON-NLS-1$
+ Field f2 = cmdEvent.getClass().getField("keyLocation"); //$NON-NLS-1$
+ f2.set(cmdEvent, f1.get(event));
+ } catch (NoSuchFieldException nsfe) {
+ /* ignore, this is Eclipse 3.5 or earlier */
+ } catch (Throwable t) {
+ t.printStackTrace();
+ }
+ cmdEvent.stateMask = event.stateMask;
+ event.doit = false;
+ try {
+ handlerService.executeCommand(cmd, cmdEvent);
+ } catch (ExecutionException e) {
+ TerminalPlugin.getDefault().getLog()
+ .log(new Status(IStatus.ERROR, TerminalPlugin.PLUGIN_ID, e.getLocalizedMessage(), e));
+ } catch (Exception e) {
+ // ignore other exceptions from cmd execution
+ }
+ }
+ }
+ }
+
+ }
+
+ @Override
+ public void setTerminalTitle(String title) {
+ fTerminalListener.setTerminalTitle(title);
+ }
+
+ @Override
+ public TerminalState getState() {
+ return fState;
+ }
+
+ @Override
+ public void setState(TerminalState state) {
+ fState = state;
+ fTerminalListener.setState(state);
+ // enable the (blinking) cursor if the terminal is connected
+ runAsyncInDisplayThread(() -> {
+ if (fCtlText != null && !fCtlText.isDisposed()) {
+ if (isConnected()) {
+ fCtlText.setCursorEnabled(true);
+ } else {
+ fCtlText.setCursorEnabled(false);
+ // Stop capturing all key events
+ fFocusListener.captureKeyEvents(false);
+ }
+ }
+ });
+ }
+
+ /**
+ * @param runnable run in display thread
+ */
+ private void runAsyncInDisplayThread(Runnable runnable) {
+ if (Display.findDisplay(Thread.currentThread()) != null)
+ runnable.run();
+ else if (PlatformUI.isWorkbenchRunning() && PlatformUI.getWorkbench().getDisplay() != null
+ && !PlatformUI.getWorkbench().getDisplay().isDisposed())
+ PlatformUI.getWorkbench().getDisplay().asyncExec(runnable);
+ // else should not happen and we ignore it...
+ }
+
+ @Override
+ public String getSettingsSummary() {
+ if (getTerminalConnector() != null)
+ return getTerminalConnector().getSettingsSummary();
+ return ""; //$NON-NLS-1$
+ }
+
+ @Override
+ public void setConnector(ITerminalConnector connector) {
+ fConnector = connector;
+
+ }
+
+ @Override
+ public ICommandInputField getCommandInputField() {
+ return fCommandInputField;
+ }
+
+ @Override
+ public void setCommandInputField(ICommandInputField inputField) {
+ if (fCommandInputField != null)
+ fCommandInputField.dispose();
+ fCommandInputField = inputField;
+ if (fCommandInputField != null)
+ fCommandInputField.createControl(fWndParent, this);
+ if (fWndParent.isVisible())
+ fWndParent.layout(true);
+ }
+
+ @Override
+ public int getBufferLineLimit() {
+ return fTerminalModel.getMaxHeight();
+ }
+
+ @Override
+ public void setBufferLineLimit(int bufferLineLimit) {
+ if (bufferLineLimit <= 0)
+ return;
+ synchronized (fTerminalModel) {
+ if (fTerminalModel.getHeight() > bufferLineLimit)
+ fTerminalModel.setDimensions(bufferLineLimit, fTerminalModel.getWidth());
+ fTerminalModel.setMaxHeight(bufferLineLimit);
+ }
+ }
+
+ @Override
+ public boolean isScrollLock() {
+ return fCtlText.isScrollLock();
+ }
+
+ @Override
+ public void setScrollLock(boolean on) {
+ fCtlText.setScrollLock(on);
+ }
+
+ @Override
+ public void setInvertedColors(boolean invert) {
+ fCtlText.setInvertedColors(invert);
+ }
+
+ @Override
+ public boolean isInvertedColors() {
+ return fCtlText.isInvertedColors();
+ }
+
+ @Override
+ public final void setConnectOnEnterIfClosed(boolean on) {
+ connectOnEnterIfClosed = on;
+ }
+
+ @Override
+ public final boolean isConnectOnEnterIfClosed() {
+ return connectOnEnterIfClosed;
+ }
+
+ @Override
+ public void setVT100LineWrapping(boolean enable) {
+ getTerminalText().setVT100LineWrapping(enable);
+ }
+
+ @Override
+ public boolean isVT100LineWrapping() {
+ return getTerminalText().isVT100LineWrapping();
+ }
+
+ @Override
+ public void enableApplicationCursorKeys(boolean enable) {
+ fApplicationCursorKeys = enable;
+ }
+
+ @Override
+ public void addMouseListener(ITerminalMouseListener listener) {
+ getCtlText().addTerminalMouseListener(listener);
+ }
+
+ @Override
+ public void removeMouseListener(ITerminalMouseListener listener) {
+ getCtlText().removeTerminalMouseListener(listener);
+ }
+
+ @Override
+ public String getHoverSelection() {
+ return fCtlText.getHoverSelection();
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/model/ISnapshotChanges.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/model/ISnapshotChanges.java
new file mode 100644
index 00000000000..9f51f2150ac
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/model/ISnapshotChanges.java
@@ -0,0 +1,96 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.model;
+
+import org.eclipse.tm.terminal.model.ITerminalTextData;
+
+public interface ISnapshotChanges {
+
+ /**
+ * @param line might bigger than the number of lines....
+ */
+ void markLineChanged(int line);
+
+ /**
+ * Marks all lines in the range as changed
+ * @param line >=0
+ * @param n might be out of range
+ */
+ void markLinesChanged(int line, int n);
+
+ /**
+ * Marks all lines within the scrolling region
+ * changed and resets the scrolling information
+ */
+ void convertScrollingIntoChanges();
+
+ /**
+ * @return true if something has changed
+ */
+ boolean hasChanged();
+
+ /**
+ * @param startLine
+ * @param size
+ * @param shift
+ */
+ void scroll(int startLine, int size, int shift);
+
+ /**
+ * Mark all lines changed
+ * @param height if no window is set this is the number of
+ * lines that are marked as changed
+ */
+ void setAllChanged(int height);
+
+ int getFirstChangedLine();
+
+ int getLastChangedLine();
+
+ int getScrollWindowStartLine();
+
+ int getScrollWindowSize();
+
+ int getScrollWindowShift();
+
+ boolean hasLineChanged(int line);
+
+ void markDimensionsChanged();
+
+ boolean hasDimensionsChanged();
+
+ void markCursorChanged();
+
+ /**
+ * @return true if the terminal data has changed
+ */
+ boolean hasTerminalChanged();
+
+ /**
+ * mark the terminal as changed
+ */
+ void setTerminalChanged();
+
+ void copyChangedLines(ITerminalTextData dest, ITerminalTextData source);
+
+ /**
+ * @param startLine -1 means follow the end of the data
+ * @param size number of lines to follow
+ */
+ void setInterestWindow(int startLine, int size);
+
+ int getInterestWindowStartLine();
+
+ int getInterestWindowSize();
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/model/SnapshotChanges.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/model/SnapshotChanges.java
new file mode 100644
index 00000000000..c1b4638c5dc
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/model/SnapshotChanges.java
@@ -0,0 +1,421 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.model;
+
+import org.eclipse.tm.terminal.model.ITerminalTextData;
+
+/**
+ * Collects the changes of the {@link ITerminalTextData}
+ *
+ * @noextend This class is not intended to be subclassed by clients.
+ * @noreference This class is not intended to be referenced by clients.
+ * @noinstantiate This class is not intended to be instantiated by clients.
+ * This class used to be package-protected. It is public only for access by the Unit Tests.
+ */
+public class SnapshotChanges implements ISnapshotChanges {
+ /**
+ * The first line changed
+ */
+ private int fFirstChangedLine;
+ /**
+ * The last line changed
+ */
+ private int fLastChangedLine;
+ private int fScrollWindowStartLine;
+ private int fScrollWindowSize;
+ private int fScrollWindowShift;
+ /**
+ * true, if scrolling should not tracked anymore
+ */
+ private boolean fScrollDontTrack;
+ /**
+ * The lines that need to be copied
+ * into the snapshot (lines that have
+ * not changed don't have to be copied)
+ */
+ private boolean[] fChangedLines;
+
+ private int fInterestWindowSize;
+ private int fInterestWindowStartLine;
+ private boolean fDimensionsChanged;
+ private boolean fTerminalHasChanged;
+ private boolean fCursorHasChanged;
+
+ public SnapshotChanges(int nLines) {
+ setChangedLinesLength(nLines);
+ fFirstChangedLine = Integer.MAX_VALUE;
+ fLastChangedLine = -1;
+ }
+
+ public SnapshotChanges(int windowStart, int windowSize) {
+ setChangedLinesLength(windowStart + windowSize);
+ fFirstChangedLine = Integer.MAX_VALUE;
+ fLastChangedLine = -1;
+ fInterestWindowStartLine = windowStart;
+ fInterestWindowSize = windowSize;
+
+ }
+
+ /**
+ * This is used in asserts to throw an {@link RuntimeException}.
+ * This is useful for tests.
+ * @return never -- throws an exception
+ */
+ private boolean throwRuntimeException() {
+ throw new RuntimeException();
+ }
+
+ /**
+ * @param line
+ * @param size
+ * @return true if the range overlaps with the interest window
+ * @nooverride This method is not intended to be re-implemented or extended by clients.
+ * @noreference This method is not intended to be referenced by clients.
+ * It used to be package protected, and it is public only for Unit Tests.
+ */
+ public boolean isInInterestWindow(int line, int size) {
+ if (fInterestWindowSize <= 0)
+ return true;
+ if (line + size <= fInterestWindowStartLine || line >= fInterestWindowStartLine + fInterestWindowSize)
+ return false;
+ return true;
+ }
+
+ /**
+ * @param line
+ * @return true if the line is within the interest window
+ * @nooverride This method is not intended to be re-implemented or extended by clients.
+ * @noreference This method is not intended to be referenced by clients.
+ * It used to be package protected, and it is public only for Unit Tests.
+ */
+ public boolean isInInterestWindow(int line) {
+ if (fInterestWindowSize <= 0)
+ return true;
+ if (line < fInterestWindowStartLine || line >= fInterestWindowStartLine + fInterestWindowSize)
+ return false;
+ return true;
+ }
+
+ /**
+ * @param line
+ * @return the line within the window
+ * @nooverride This method is not intended to be re-implemented or extended by clients.
+ * @noreference This method is not intended to be referenced by clients.
+ * It used to be package protected, and it is public only for Unit Tests.
+ */
+ public int fitLineToWindow(int line) {
+ if (fInterestWindowSize <= 0)
+ return line;
+ if (line < fInterestWindowStartLine)
+ return fInterestWindowStartLine;
+ return line;
+ }
+
+ /**
+ * The result is only defined if {@link #isInInterestWindow(int, int)} returns true!
+ * @param line the line <b>before</b> {@link #fitLineToWindow(int)} has been called!
+ * @param size
+ * @return the adjusted size.
+ * @nooverride This method is not intended to be re-implemented or extended by clients.
+ * @noreference This method is not intended to be referenced by clients.
+ * It used to be package protected, and it is public only for Unit Tests.
+ *
+ * <p>Note:</p> {@link #fitLineToWindow(int)} has to be called on the line to
+ * move the window correctly!
+ */
+ public int fitSizeToWindow(int line, int size) {
+ if (fInterestWindowSize <= 0)
+ return size;
+ if (line < fInterestWindowStartLine) {
+ size -= fInterestWindowStartLine - line;
+ line = fInterestWindowStartLine;
+ }
+ if (line + size > fInterestWindowStartLine + fInterestWindowSize)
+ size = fInterestWindowStartLine + fInterestWindowSize - line;
+ return size;
+ }
+
+ @Override
+ public void markLineChanged(int line) {
+ if (!isInInterestWindow(line))
+ return;
+ line = fitLineToWindow(line);
+ if (line < fFirstChangedLine)
+ fFirstChangedLine = line;
+ if (line > fLastChangedLine)
+ fLastChangedLine = line;
+ // in case the terminal got resized we expand
+ // don't remember the changed line because
+ // there is nothing to copy
+ if (line < getChangedLineLength()) {
+ setChangedLine(line, true);
+ }
+ }
+
+ @Override
+ public void markLinesChanged(int line, int n) {
+ if (n <= 0 || !isInInterestWindow(line, n))
+ return;
+ // do not exceed the bounds of fChangedLines
+ // the terminal might have been resized and
+ // we can only keep changes for the size of the
+ // previous terminal
+ n = fitSizeToWindow(line, n);
+ line = fitLineToWindow(line);
+ int m = Math.min(line + n, getChangedLineLength());
+ for (int i = line; i < m; i++) {
+ setChangedLine(i, true);
+ }
+ // this sets fFirstChangedLine as well
+ markLineChanged(line);
+ // this sets fLastChangedLine as well
+ markLineChanged(line + n - 1);
+ }
+
+ @Override
+ public void markCursorChanged() {
+ fCursorHasChanged = true;
+ }
+
+ @Override
+ public void convertScrollingIntoChanges() {
+ markLinesChanged(fScrollWindowStartLine, fScrollWindowSize);
+ fScrollWindowStartLine = 0;
+ fScrollWindowSize = 0;
+ fScrollWindowShift = 0;
+ }
+
+ @Override
+ public boolean hasChanged() {
+ if (fFirstChangedLine != Integer.MAX_VALUE || fLastChangedLine > 0 || fScrollWindowShift != 0
+ || fDimensionsChanged || fCursorHasChanged)
+ return true;
+ return false;
+ }
+
+ @Override
+ public void markDimensionsChanged() {
+ fDimensionsChanged = true;
+ }
+
+ @Override
+ public boolean hasDimensionsChanged() {
+ return fDimensionsChanged;
+ }
+
+ @Override
+ public boolean hasTerminalChanged() {
+ return fTerminalHasChanged;
+ }
+
+ @Override
+ public void setTerminalChanged() {
+ fTerminalHasChanged = true;
+ }
+
+ @Override
+ public void scroll(int startLine, int size, int shift) {
+ size = fitSizeToWindow(startLine, size);
+ startLine = fitLineToWindow(startLine);
+ // let's track only negative shifts
+ if (fScrollDontTrack) {
+ // we are in a state where we cannot track scrolling
+ // so let's simply mark the scrolled lines as changed
+ markLinesChanged(startLine, size);
+ } else if (shift >= 0) {
+ // we cannot handle positive scroll
+ // forget about clever caching of scroll events
+ doNotTrackScrollingAnymore();
+ // mark all lines inside the scroll region as changed
+ markLinesChanged(startLine, size);
+ } else {
+ // we have already scrolled
+ if (fScrollWindowShift < 0) {
+ // we have already scrolled
+ if (fScrollWindowStartLine == startLine && fScrollWindowSize == size) {
+ // we are scrolling the same region again?
+ fScrollWindowShift += shift;
+ scrollChangesLinesWithNegativeShift(startLine, size, shift);
+ } else {
+ // mark all lines in the old scroll region as changed
+ doNotTrackScrollingAnymore();
+ // mark all lines changed, because
+ markLinesChanged(startLine, size);
+ }
+ } else {
+ // first scroll in this change -- we just notify it
+ fScrollWindowStartLine = startLine;
+ fScrollWindowSize = size;
+ fScrollWindowShift = shift;
+ scrollChangesLinesWithNegativeShift(startLine, size, shift);
+ }
+ }
+ }
+
+ /**
+ * Some incompatible scrolling occurred. We cannot do the
+ * scroll optimization anymore...
+ */
+ private void doNotTrackScrollingAnymore() {
+ if (fScrollWindowSize > 0) {
+ // convert the current scrolling into changes
+ markLinesChanged(fScrollWindowStartLine, fScrollWindowSize);
+ fScrollWindowStartLine = 0;
+ fScrollWindowSize = 0;
+ fScrollWindowShift = 0;
+ }
+ // don't be clever on scrolling anymore
+ fScrollDontTrack = true;
+ }
+
+ /**
+ * Scrolls the changed lines data
+ *
+ * @param line
+ * @param n
+ * @param shift must be negative!
+ */
+ private void scrollChangesLinesWithNegativeShift(int line, int n, int shift) {
+ assert shift < 0 || throwRuntimeException();
+ // scroll the region
+ // don't run out of bounds!
+ int m = Math.min(line + n + shift, getChangedLineLength() + shift);
+ for (int i = line; i < m; i++) {
+ setChangedLine(i, hasLineChanged(i - shift));
+ // move the first changed line up.
+ // We don't have to move the maximum down,
+ // because with a shift scroll, the max is moved
+ // my the next loop in this method
+ if (i < fFirstChangedLine && hasLineChanged(i)) {
+ fFirstChangedLine = i;
+ }
+ }
+ // mark the "opened" lines as changed
+ for (int i = Math.max(0, line + n + shift); i < line + n; i++) {
+ markLineChanged(i);
+ }
+ }
+
+ @Override
+ public void setAllChanged(int height) {
+ fScrollWindowStartLine = 0;
+ fScrollWindowSize = 0;
+ fScrollWindowShift = 0;
+ fFirstChangedLine = fitLineToWindow(0);
+ fLastChangedLine = fFirstChangedLine + fitSizeToWindow(0, height) - 1;
+ // no need to keep an array of changes anymore
+ setChangedLinesLength(0);
+ }
+
+ @Override
+ public int getFirstChangedLine() {
+ return fFirstChangedLine;
+ }
+
+ @Override
+ public int getLastChangedLine() {
+ return fLastChangedLine;
+ }
+
+ @Override
+ public int getScrollWindowStartLine() {
+ return fScrollWindowStartLine;
+ }
+
+ @Override
+ public int getScrollWindowSize() {
+ return fScrollWindowSize;
+ }
+
+ @Override
+ public int getScrollWindowShift() {
+ return fScrollWindowShift;
+ }
+
+ @Override
+ public void copyChangedLines(ITerminalTextData dest, ITerminalTextData source) {
+ int n = Math.min(fLastChangedLine + 1, source.getHeight());
+ for (int i = fFirstChangedLine; i < n; i++) {
+ if (hasLineChanged(i))
+ dest.copyLine(source, i, i);
+ }
+ }
+
+ @Override
+ public int getInterestWindowSize() {
+ return fInterestWindowSize;
+ }
+
+ @Override
+ public int getInterestWindowStartLine() {
+ return fInterestWindowStartLine;
+ }
+
+ @Override
+ public void setInterestWindow(int startLine, int size) {
+ int oldStartLine = fInterestWindowStartLine;
+ int oldSize = fInterestWindowSize;
+ fInterestWindowStartLine = startLine;
+ fInterestWindowSize = size;
+ if (oldSize > 0) {
+ int shift = oldStartLine - startLine;
+ if (shift == 0) {
+ if (size > oldSize) {
+ // add lines to the end
+ markLinesChanged(oldStartLine + oldSize, size - oldSize);
+ }
+ // else no lines within the window have changed
+
+ } else if (Math.abs(shift) < size) {
+ if (shift < 0) {
+ // we can scroll
+ scroll(startLine, oldSize, shift);
+ // mark the lines at the end as new
+ for (int i = oldStartLine + oldSize; i < startLine + size; i++) {
+ markLineChanged(i);
+ }
+ } else {
+ // we cannot shift positive -- mark all changed
+ markLinesChanged(startLine, size);
+ }
+ } else {
+ // no scrolling possible
+ markLinesChanged(startLine, size);
+ }
+
+ }
+ }
+
+ @Override
+ public boolean hasLineChanged(int line) {
+ if (line < fChangedLines.length)
+ return fChangedLines[line];
+ // since the height of the terminal could
+ // have changed but we have tracked only changes
+ // of the previous terminal height, any line outside
+ // the the range of the previous height has changed
+ return isInInterestWindow(line);
+ }
+
+ int getChangedLineLength() {
+ return fChangedLines.length;
+ }
+
+ void setChangedLine(int line, boolean changed) {
+ fChangedLines[line] = changed;
+ }
+
+ void setChangedLinesLength(int length) {
+ fChangedLines = new boolean[length];
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/model/SynchronizedTerminalTextData.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/model/SynchronizedTerminalTextData.java
new file mode 100644
index 00000000000..54f637a78ab
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/model/SynchronizedTerminalTextData.java
@@ -0,0 +1,160 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ * Anton Leherbauer (Wind River) - [453393] Add support for copying wrapped lines without line break
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.model;
+
+import org.eclipse.tm.terminal.model.ITerminalTextData;
+import org.eclipse.tm.terminal.model.ITerminalTextDataSnapshot;
+import org.eclipse.tm.terminal.model.LineSegment;
+import org.eclipse.tm.terminal.model.TerminalStyle;
+
+/**
+ * This is a decorator to make all access to
+ * ITerminalTextData synchronized
+ *
+ */
+public class SynchronizedTerminalTextData implements ITerminalTextData {
+ final ITerminalTextData fData;
+
+ public SynchronizedTerminalTextData(ITerminalTextData data) {
+ fData = data;
+ }
+
+ @Override
+ synchronized public void addLine() {
+ fData.addLine();
+ }
+
+ @Override
+ synchronized public void cleanLine(int line) {
+ fData.cleanLine(line);
+ }
+
+ @Override
+ synchronized public void copy(ITerminalTextData source) {
+ fData.copy(source);
+ }
+
+ @Override
+ synchronized public void copyLine(ITerminalTextData source, int sourceLine, int destLine) {
+ fData.copyLine(source, sourceLine, destLine);
+ }
+
+ @Override
+ synchronized public void copyRange(ITerminalTextData source, int sourceStartLine, int destStartLine, int length) {
+ fData.copyRange(source, sourceStartLine, destStartLine, length);
+ }
+
+ @Override
+ synchronized public char getChar(int line, int column) {
+ return fData.getChar(line, column);
+ }
+
+ @Override
+ synchronized public char[] getChars(int line) {
+ return fData.getChars(line);
+ }
+
+ @Override
+ synchronized public int getCursorColumn() {
+ return fData.getCursorColumn();
+ }
+
+ @Override
+ synchronized public int getCursorLine() {
+ return fData.getCursorLine();
+ }
+
+ @Override
+ synchronized public int getHeight() {
+ return fData.getHeight();
+ }
+
+ @Override
+ synchronized public LineSegment[] getLineSegments(int line, int startCol, int numberOfCols) {
+ return fData.getLineSegments(line, startCol, numberOfCols);
+ }
+
+ @Override
+ synchronized public int getMaxHeight() {
+ return fData.getMaxHeight();
+ }
+
+ @Override
+ synchronized public TerminalStyle getStyle(int line, int column) {
+ return fData.getStyle(line, column);
+ }
+
+ @Override
+ synchronized public TerminalStyle[] getStyles(int line) {
+ return fData.getStyles(line);
+ }
+
+ @Override
+ synchronized public int getWidth() {
+ return fData.getWidth();
+ }
+
+ @Override
+ synchronized public ITerminalTextDataSnapshot makeSnapshot() {
+ return fData.makeSnapshot();
+ }
+
+ @Override
+ synchronized public void scroll(int startLine, int size, int shift) {
+ fData.scroll(startLine, size, shift);
+ }
+
+ @Override
+ synchronized public void setChar(int line, int column, char c, TerminalStyle style) {
+ fData.setChar(line, column, c, style);
+ }
+
+ @Override
+ synchronized public void setChars(int line, int column, char[] chars, int start, int len, TerminalStyle style) {
+ fData.setChars(line, column, chars, start, len, style);
+ }
+
+ @Override
+ synchronized public void setChars(int line, int column, char[] chars, TerminalStyle style) {
+ fData.setChars(line, column, chars, style);
+ }
+
+ @Override
+ synchronized public void setCursorColumn(int column) {
+ fData.setCursorColumn(column);
+ }
+
+ @Override
+ synchronized public void setCursorLine(int line) {
+ fData.setCursorLine(line);
+ }
+
+ @Override
+ synchronized public void setDimensions(int height, int width) {
+ fData.setDimensions(height, width);
+ }
+
+ @Override
+ synchronized public void setMaxHeight(int height) {
+ fData.setMaxHeight(height);
+ }
+
+ @Override
+ synchronized public boolean isWrappedLine(int line) {
+ return fData.isWrappedLine(line);
+ }
+
+ @Override
+ synchronized public void setWrappedLine(int line) {
+ fData.setWrappedLine(line);
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/model/SystemDefaultColors.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/model/SystemDefaultColors.java
new file mode 100644
index 00000000000..930a97a1e73
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/model/SystemDefaultColors.java
@@ -0,0 +1,113 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Kichwa Coders Canada Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.model;
+
+import java.util.function.Supplier;
+
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.preferences.InstanceScope;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.preference.PreferenceConverter;
+import org.eclipse.swt.graphics.RGB;
+import org.eclipse.ui.preferences.ScopedPreferenceStore;
+import org.eclipse.ui.themes.ColorUtil;
+
+/**
+ * Wrapper class to get standard colors from Eclipse trying to match existing theme where possible
+ * by using standard editor colors.
+ *
+ * This class has an implied and optional dependency on org.eclipse.ui.editors bundle by reading
+ * that bundles preferences.
+ */
+public enum SystemDefaultColors implements Supplier<RGB> {
+
+ /**
+ * Standard text foreground. Typically black in Light theme.
+ */
+ FOREGROUND("Foreground", "COLOR_LIST_FOREGROUND", new RGB(0, 0, 0)), //$NON-NLS-1$ //$NON-NLS-2$
+
+ /**
+ * Standard text background. Typically white in Light theme.
+ */
+ BACKGROUND("Background", "COLOR_LIST_BACKGROUND", new RGB(255, 255, 255)), //$NON-NLS-1$ //$NON-NLS-2$
+
+ /**
+ * Selection foreground. Typically white in Light theme.
+ */
+ SELECTION_FOREGROUND("SelectionForeground", "COLOR_LIST_SELECTION_TEXT", //$NON-NLS-1$ //$NON-NLS-2$
+ new RGB(255, 255, 255)),
+
+ /**
+ * Selection background. Typically blue in Light theme.
+ */
+ SELECTION_BACKGROUND("SelectionBackground", "COLOR_LIST_SELECTION", new RGB(74, 144, 9)); //$NON-NLS-1$ //$NON-NLS-2$
+
+ private static final String EDITOR_SCOPE = "org.eclipse.ui.editors"; //$NON-NLS-1$
+ private static final String PREF_PREFIX = "AbstractTextEditor.Color."; //$NON-NLS-1$
+ private static final String PREF_SYSTEM_DEFAULT_SUFFIX = ".SystemDefault"; //$NON-NLS-1$
+
+ /**
+ * SWT Name of Color
+ *
+ * Values from SWT
+ */
+ private String swtColor;
+
+ /**
+ * Preference name for color.
+ *
+ * Values from org.eclipse.ui.texteditor.AbstractTextEditor....
+ */
+ private String editorColor;
+
+ /** If all else fails, use this standard color */
+ private RGB fallbackColor;
+
+ SystemDefaultColors(String editorColor, String swtColor, RGB rgb) {
+ this.editorColor = editorColor;
+ this.swtColor = swtColor;
+ this.fallbackColor = rgb;
+ }
+
+ /**
+ * Get the color for this enum value.
+ *
+ * @return the RGB color or a non-<code>null</code> color as a fallback.
+ */
+ @Override
+ public RGB get() {
+ IPreferenceStore store = new ScopedPreferenceStore(InstanceScope.INSTANCE, EDITOR_SCOPE);
+
+ RGB rgb = null;
+ String pref = PREF_PREFIX + editorColor;
+ String prefSystemDefault = pref + PREF_SYSTEM_DEFAULT_SUFFIX;
+ if (Platform.getPreferencesService() != null) {
+ if (!store.getBoolean(prefSystemDefault)) {
+ if (store.contains(pref)) {
+ if (store.isDefault(pref))
+ rgb = PreferenceConverter.getDefaultColor(store, pref);
+ else {
+ rgb = PreferenceConverter.getColor(store, pref);
+ }
+ }
+ }
+ }
+
+ if (rgb == null) {
+ rgb = ColorUtil.getColorValue(swtColor);
+ }
+
+ if (rgb == null) {
+ rgb = fallbackColor;
+ }
+
+ return rgb;
+ }
+} \ No newline at end of file
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/model/TerminalTextData.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/model/TerminalTextData.java
new file mode 100644
index 00000000000..675bfd66de2
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/model/TerminalTextData.java
@@ -0,0 +1,333 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ * Martin Oberhuber (Wind River) - [168197] Fix Terminal for CDC-1.1/Foundation-1.1
+ * Anton Leherbauer (Wind River) - [453393] Add support for copying wrapped lines without line break
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.model;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import org.eclipse.tm.terminal.model.ITerminalTextData;
+import org.eclipse.tm.terminal.model.ITerminalTextDataReadOnly;
+import org.eclipse.tm.terminal.model.ITerminalTextDataSnapshot;
+import org.eclipse.tm.terminal.model.LineSegment;
+import org.eclipse.tm.terminal.model.TerminalStyle;
+
+/**
+ * This class is thread safe.
+ *
+ */
+public class TerminalTextData implements ITerminalTextData {
+ final ITerminalTextData fData;
+ /**
+ * A list of active snapshots
+ */
+ public TerminalTextDataSnapshot[] fSnapshots = new TerminalTextDataSnapshot[0];
+ private int fCursorColumn;
+ private int fCursorLine;
+
+ /**
+ * Debug helper method -- use as "New Detail Formatter.." in the
+ * debugger variables view:
+ * <pre>TerminalTextData.toMultiLineText(this,0,200)</pre>
+ * @param term the terminal
+ * @param start start line to show
+ * @param len number of lines to show -- negative numbers means show all
+ * @return a string representation of the content
+ */
+ static public String toMultiLineText(ITerminalTextDataReadOnly term, int start, int len) {
+ if (len < 0)
+ len = term.getHeight();
+ StringBuffer buff = new StringBuffer();
+ int width = term.getWidth();
+ int n = Math.min(len, term.getHeight() - start);
+ for (int line = start; line < n; line++) {
+ if (line > 0)
+ buff.append("\n"); //$NON-NLS-1$
+ for (int column = 0; column < width; column++) {
+ buff.append(term.getChar(line, column));
+ }
+ }
+ // get rid of the empty space at the end of the lines
+ //return buff.toString().replaceAll("\000+", ""); //$NON-NLS-1$//$NON-NLS-2$
+ //<J2ME CDC-1.1 Foundation-1.1 variant>
+ int i = buff.length() - 1;
+ while (i >= 0 && buff.charAt(i) == '\000') {
+ i--;
+ }
+ buff.setLength(i + 1);
+ return buff.toString();
+ //</J2ME CDC-1.1 Foundation-1.1 variant>
+ }
+
+ /**
+ * Show the first 100 lines
+ * see {@link #toMultiLineText(ITerminalTextDataReadOnly, int, int)}
+ * @param term A read-only terminal model
+ * @return a string representation of the terminal
+ */
+ static public String toMultiLineText(ITerminalTextDataReadOnly term) {
+ return toMultiLineText(term, 0, 100);
+ }
+
+ public TerminalTextData() {
+ this(new TerminalTextDataFastScroll());
+
+ // this(new TerminalTextDataStore());
+ }
+
+ public TerminalTextData(ITerminalTextData data) {
+ fData = data;
+ }
+
+ @Override
+ public int getWidth() {
+ return fData.getWidth();
+ }
+
+ @Override
+ public int getHeight() {
+ // no need for an extra variable
+ return fData.getHeight();
+ }
+
+ @Override
+ public void setDimensions(int height, int width) {
+ int h = getHeight();
+ int w = getWidth();
+ if (w == width && h == height)
+ return;
+ fData.setDimensions(height, width);
+ sendDimensionsChanged(h, w, height, width);
+ }
+
+ private void sendDimensionsChanged(int oldHeight, int oldWidth, int newHeight, int newWidth) {
+ // determine what has changed
+ if (oldWidth == newWidth) {
+ if (oldHeight < newHeight)
+ sendLinesChangedToSnapshot(oldHeight, newHeight - oldHeight);
+ else
+ sendLinesChangedToSnapshot(newHeight, oldHeight - newHeight);
+ } else {
+ sendLinesChangedToSnapshot(0, oldHeight);
+ }
+ sendDimensionsChanged();
+ }
+
+ @Override
+ public LineSegment[] getLineSegments(int line, int column, int len) {
+ return fData.getLineSegments(line, column, len);
+ }
+
+ @Override
+ public char getChar(int line, int column) {
+ return fData.getChar(line, column);
+ }
+
+ @Override
+ public TerminalStyle getStyle(int line, int column) {
+ return fData.getStyle(line, column);
+ }
+
+ @Override
+ public void setChar(int line, int column, char c, TerminalStyle style) {
+ fData.setChar(line, column, c, style);
+ sendLineChangedToSnapshots(line);
+ }
+
+ @Override
+ public void setChars(int line, int column, char[] chars, TerminalStyle style) {
+ fData.setChars(line, column, chars, style);
+ sendLineChangedToSnapshots(line);
+ }
+
+ @Override
+ public void setChars(int line, int column, char[] chars, int start, int len, TerminalStyle style) {
+ fData.setChars(line, column, chars, start, len, style);
+ sendLineChangedToSnapshots(line);
+ }
+
+ @Override
+ public void scroll(int startLine, int size, int shift) {
+ fData.scroll(startLine, size, shift);
+ sendScrolledToSnapshots(startLine, size, shift);
+ }
+
+ @Override
+ public String toString() {
+ return fData.toString();
+ }
+
+ private void sendDimensionsChanged() {
+ for (int i = 0; i < fSnapshots.length; i++) {
+ fSnapshots[i].markDimensionsChanged();
+ }
+ }
+
+ /**
+ * @param line notifies snapshots that line line has changed
+ */
+ protected void sendLineChangedToSnapshots(int line) {
+ for (int i = 0; i < fSnapshots.length; i++) {
+ fSnapshots[i].markLineChanged(line);
+ }
+ }
+
+ /**
+ * Notify snapshots that multiple lines have changed
+ * @param line changed line
+ * @param n number of changed lines
+ */
+ protected void sendLinesChangedToSnapshot(int line, int n) {
+ for (int i = 0; i < fSnapshots.length; i++) {
+ fSnapshots[i].markLinesChanged(line, n);
+ }
+ }
+
+ /**
+ * Notify snapshot that a region was scrolled
+ * @param startLine first line of scrolled region
+ * @param size size of scrolled region (number of lines)
+ * @param shift delta by which the region is scrolled
+ */
+ protected void sendScrolledToSnapshots(int startLine, int size, int shift) {
+ for (int i = 0; i < fSnapshots.length; i++) {
+ fSnapshots[i].scroll(startLine, size, shift);
+ }
+ }
+
+ protected void sendCursorChanged() {
+ for (int i = 0; i < fSnapshots.length; i++) {
+ fSnapshots[i].markCursorChanged();
+ }
+ }
+
+ /**
+ * Removes the snapshot from the @observer@ list
+ * @param snapshot A snapshot of a terminal model
+ */
+ protected void removeSnapshot(TerminalTextDataSnapshot snapshot) {
+ // poor mans approach to modify the array
+ List<TerminalTextDataSnapshot> list = new ArrayList<>();
+ list.addAll(Arrays.asList(fSnapshots));
+ list.remove(snapshot);
+ fSnapshots = list.toArray(new TerminalTextDataSnapshot[list.size()]);
+ }
+
+ @Override
+ public ITerminalTextDataSnapshot makeSnapshot() {
+ // poor mans approach to modify the array
+ TerminalTextDataSnapshot snapshot = new TerminalTextDataSnapshot(this);
+ snapshot.markDimensionsChanged();
+ List<TerminalTextDataSnapshot> list = new ArrayList<>();
+ list.addAll(Arrays.asList(fSnapshots));
+ list.add(snapshot);
+ fSnapshots = list.toArray(new TerminalTextDataSnapshot[list.size()]);
+ return snapshot;
+ }
+
+ @Override
+ public void addLine() {
+ int oldHeight = getHeight();
+ fData.addLine();
+ // was is an append or a scroll?
+ int newHeight = getHeight();
+ if (newHeight > oldHeight) {
+ //the line was appended
+ sendLinesChangedToSnapshot(oldHeight, 1);
+ int width = getWidth();
+ sendDimensionsChanged(oldHeight, width, newHeight, width);
+
+ } else {
+ // the line was scrolled
+ sendScrolledToSnapshots(0, oldHeight, -1);
+ }
+
+ }
+
+ @Override
+ public void copy(ITerminalTextData source) {
+ fData.copy(source);
+ fCursorLine = source.getCursorLine();
+ fCursorColumn = source.getCursorColumn();
+ }
+
+ @Override
+ public void copyLine(ITerminalTextData source, int sourceLine, int destLine) {
+ fData.copyLine(source, sourceLine, destLine);
+ }
+
+ @Override
+ public void copyRange(ITerminalTextData source, int sourceStartLine, int destStartLine, int length) {
+ fData.copyRange(source, sourceStartLine, destStartLine, length);
+ }
+
+ @Override
+ public char[] getChars(int line) {
+ return fData.getChars(line);
+ }
+
+ @Override
+ public TerminalStyle[] getStyles(int line) {
+ return fData.getStyles(line);
+ }
+
+ @Override
+ public int getMaxHeight() {
+ return fData.getMaxHeight();
+ }
+
+ @Override
+ public void setMaxHeight(int height) {
+ fData.setMaxHeight(height);
+ }
+
+ @Override
+ public void cleanLine(int line) {
+ fData.cleanLine(line);
+ sendLineChangedToSnapshots(line);
+ }
+
+ @Override
+ public int getCursorColumn() {
+ return fCursorColumn;
+ }
+
+ @Override
+ public int getCursorLine() {
+ return fCursorLine;
+ }
+
+ @Override
+ public void setCursorColumn(int column) {
+ fCursorColumn = column;
+ sendCursorChanged();
+ }
+
+ @Override
+ public void setCursorLine(int line) {
+ fCursorLine = line;
+ sendCursorChanged();
+ }
+
+ @Override
+ public boolean isWrappedLine(int line) {
+ return fData.isWrappedLine(line);
+ }
+
+ @Override
+ public void setWrappedLine(int line) {
+ fData.setWrappedLine(line);
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataFastScroll.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataFastScroll.java
new file mode 100644
index 00000000000..519fad0a3e1
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataFastScroll.java
@@ -0,0 +1,302 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ * Anton Leherbauer (Wind River) - [453393] Add support for copying wrapped lines without line break
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.model;
+
+import org.eclipse.tm.terminal.model.ITerminalTextData;
+import org.eclipse.tm.terminal.model.ITerminalTextDataSnapshot;
+import org.eclipse.tm.terminal.model.LineSegment;
+import org.eclipse.tm.terminal.model.TerminalStyle;
+
+/**
+ * This class is optimized for scrolling the entire {@link #getHeight()}.
+ * The scrolling is done by moving an offset into the data and using
+ * the modulo operator.
+ *
+ */
+public class TerminalTextDataFastScroll implements ITerminalTextData {
+
+ final ITerminalTextData fData;
+ private int fHeight;
+ private int fMaxHeight;
+ /**
+ * The offset into the array.
+ */
+ int fOffset;
+
+ public TerminalTextDataFastScroll(ITerminalTextData data, int maxHeight) {
+ fMaxHeight = maxHeight;
+ fData = data;
+ fData.setDimensions(maxHeight, fData.getWidth());
+ if (maxHeight > 2)
+ assert shiftOffset(-2) || throwRuntimeException();
+ }
+
+ public TerminalTextDataFastScroll(int maxHeight) {
+ this(new TerminalTextDataStore(), maxHeight);
+ }
+
+ public TerminalTextDataFastScroll() {
+ this(new TerminalTextDataStore(), 1);
+ }
+
+ /**
+ * This is used in asserts to throw an {@link RuntimeException}.
+ * This is useful for tests.
+ * @return never -- throws an exception
+ */
+ private boolean throwRuntimeException() {
+ throw new RuntimeException();
+ }
+
+ /**
+ *
+ * @param line
+ * @return the actual line number in {@link #fData}
+ */
+ int getPositionOfLine(int line) {
+ return (line + fOffset) % fMaxHeight;
+ }
+
+ /**
+ * Moves offset by delta. This does <b>not</b> move the data!
+ * @param delta
+ */
+ void moveOffset(int delta) {
+ assert Math.abs(delta) < fMaxHeight || throwRuntimeException();
+ fOffset = (fMaxHeight + fOffset + delta) % fMaxHeight;
+
+ }
+
+ /**
+ * Test method to shift the offset for testing (if assert ==true)
+ * @param shift TODO
+ * @return true
+ */
+ private boolean shiftOffset(int shift) {
+ moveOffset(shift);
+ return true;
+ }
+
+ @Override
+ public void addLine() {
+ if (getHeight() < fMaxHeight) {
+ setDimensions(getHeight() + 1, getWidth());
+ } else {
+ scroll(0, getHeight(), -1);
+ }
+ }
+
+ @Override
+ public void cleanLine(int line) {
+ fData.cleanLine(getPositionOfLine(line));
+ }
+
+ @Override
+ public void copy(ITerminalTextData source) {
+ int n = source.getHeight();
+ setDimensions(source.getHeight(), source.getWidth());
+ for (int i = 0; i < n; i++) {
+ fData.copyLine(source, i, getPositionOfLine(i));
+ }
+ }
+
+ @Override
+ public void copyLine(ITerminalTextData source, int sourceLine, int destLine) {
+ fData.copyLine(source, sourceLine, getPositionOfLine(destLine));
+ }
+
+ @Override
+ public void copyRange(ITerminalTextData source, int sourceStartLine, int destStartLine, int length) {
+ assert (destStartLine >= 0 && destStartLine + length <= fHeight) || throwRuntimeException();
+ for (int i = 0; i < length; i++) {
+ fData.copyLine(source, i + sourceStartLine, getPositionOfLine(i + destStartLine));
+ }
+ }
+
+ @Override
+ public char getChar(int line, int column) {
+ assert (line >= 0 && line < fHeight) || throwRuntimeException();
+ return fData.getChar(getPositionOfLine(line), column);
+ }
+
+ @Override
+ public char[] getChars(int line) {
+ assert (line >= 0 && line < fHeight) || throwRuntimeException();
+ return fData.getChars(getPositionOfLine(line));
+ }
+
+ @Override
+ public int getHeight() {
+ return fHeight;
+ }
+
+ @Override
+ public LineSegment[] getLineSegments(int line, int startCol, int numberOfCols) {
+ assert (line >= 0 && line < fHeight) || throwRuntimeException();
+ return fData.getLineSegments(getPositionOfLine(line), startCol, numberOfCols);
+ }
+
+ @Override
+ public int getMaxHeight() {
+ return fMaxHeight;
+ }
+
+ @Override
+ public TerminalStyle getStyle(int line, int column) {
+ assert (line >= 0 && line < fHeight) || throwRuntimeException();
+ return fData.getStyle(getPositionOfLine(line), column);
+ }
+
+ @Override
+ public TerminalStyle[] getStyles(int line) {
+ assert (line >= 0 && line < fHeight) || throwRuntimeException();
+ return fData.getStyles(getPositionOfLine(line));
+ }
+
+ @Override
+ public int getWidth() {
+ return fData.getWidth();
+ }
+
+ @Override
+ public ITerminalTextDataSnapshot makeSnapshot() {
+ return fData.makeSnapshot();
+ }
+
+ private void cleanLines(int line, int len) {
+ for (int i = line; i < line + len; i++) {
+ fData.cleanLine(getPositionOfLine(i));
+ }
+ }
+
+ @Override
+ public void scroll(int startLine, int size, int shift) {
+ assert (startLine >= 0 && startLine + size <= fHeight) || throwRuntimeException();
+ if (shift >= fMaxHeight || -shift >= fMaxHeight) {
+ cleanLines(startLine, fMaxHeight - startLine);
+ return;
+ }
+ if (size == fHeight) {
+ // This is the case this class is optimized for!
+ moveOffset(-shift);
+ // we only have to clean the lines that appear by the move
+ if (shift < 0) {
+ cleanLines(Math.max(startLine, startLine + size + shift), Math.min(-shift, getHeight() - startLine));
+ } else {
+ cleanLines(startLine, Math.min(shift, getHeight() - startLine));
+ }
+ } else {
+ // we have to copy the lines.
+ if (shift < 0) {
+ // move the region up
+ // shift is negative!!
+ for (int i = startLine; i < startLine + size + shift; i++) {
+ fData.copyLine(fData, getPositionOfLine(i - shift), getPositionOfLine(i));
+ }
+ // then clean the opened lines
+ cleanLines(Math.max(0, startLine + size + shift), Math.min(-shift, getHeight() - startLine));
+ } else {
+ for (int i = startLine + size - 1; i >= startLine && i - shift >= 0; i--) {
+ fData.copyLine(fData, getPositionOfLine(i - shift), getPositionOfLine(i));
+ }
+ cleanLines(startLine, Math.min(shift, getHeight() - startLine));
+ }
+ }
+ }
+
+ @Override
+ public void setChar(int line, int column, char c, TerminalStyle style) {
+ assert (line >= 0 && line < fHeight) || throwRuntimeException();
+ fData.setChar(getPositionOfLine(line), column, c, style);
+ }
+
+ @Override
+ public void setChars(int line, int column, char[] chars, int start, int len, TerminalStyle style) {
+ assert (line >= 0 && line < fHeight) || throwRuntimeException();
+ fData.setChars(getPositionOfLine(line), column, chars, start, len, style);
+ }
+
+ @Override
+ public void setChars(int line, int column, char[] chars, TerminalStyle style) {
+ assert (line >= 0 && line < fHeight) || throwRuntimeException();
+ fData.setChars(getPositionOfLine(line), column, chars, style);
+ }
+
+ @Override
+ public void setDimensions(int height, int width) {
+ assert height >= 0 || throwRuntimeException();
+ assert width >= 0 || throwRuntimeException();
+ if (height > fMaxHeight)
+ setMaxHeight(height);
+ fHeight = height;
+ if (width != fData.getWidth())
+ fData.setDimensions(fMaxHeight, width);
+ }
+
+ @Override
+ public void setMaxHeight(int maxHeight) {
+ assert maxHeight >= fHeight || throwRuntimeException();
+ // move everything to offset0
+ int start = getPositionOfLine(0);
+ if (start != 0) {
+ // invent a more efficient algorithm....
+ ITerminalTextData buffer = new TerminalTextDataStore();
+ // create a buffer with the expected height
+ buffer.setDimensions(maxHeight, getWidth());
+ int n = Math.min(fMaxHeight - start, maxHeight);
+ // copy the first part
+ buffer.copyRange(fData, start, 0, n);
+ // copy the second part
+ if (n < maxHeight)
+ buffer.copyRange(fData, 0, n, Math.min(fMaxHeight - n, maxHeight - n));
+ // copy the buffer back to our data
+ fData.copy(buffer);
+ shiftOffset(-start);
+ } else {
+ fData.setDimensions(maxHeight, fData.getWidth());
+ }
+ fMaxHeight = maxHeight;
+ }
+
+ @Override
+ public int getCursorColumn() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public int getCursorLine() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void setCursorColumn(int column) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void setCursorLine(int line) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public boolean isWrappedLine(int line) {
+ assert (line >= 0 && line < fHeight) || throwRuntimeException();
+ return fData.isWrappedLine(getPositionOfLine(line));
+ }
+
+ @Override
+ public void setWrappedLine(int line) {
+ assert (line >= 0 && line < fHeight) || throwRuntimeException();
+ fData.setWrappedLine(getPositionOfLine(line));
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataSnapshot.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataSnapshot.java
new file mode 100644
index 00000000000..26a6982c871
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataSnapshot.java
@@ -0,0 +1,325 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ * Anton Leherbauer (Wind River) - [453393] Add support for copying wrapped lines without line break
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.model;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import org.eclipse.tm.terminal.model.ITerminalTextData;
+import org.eclipse.tm.terminal.model.ITerminalTextDataSnapshot;
+import org.eclipse.tm.terminal.model.LineSegment;
+import org.eclipse.tm.terminal.model.TerminalStyle;
+
+/**
+ * The public methods of this class have to be called from one thread!
+ *
+ * Threading considerations:
+ * This class is <b>not threadsafe</b>!
+ */
+class TerminalTextDataSnapshot implements ITerminalTextDataSnapshot {
+ /**
+ * The changes of the current snapshot relative to the
+ * previous snapshot
+ */
+ volatile ISnapshotChanges fCurrentChanges;
+ /**
+ * Keeps track of changes that happened since the current
+ * snapshot has been made.
+ */
+ ISnapshotChanges fFutureChanges;
+ /**
+ * Is used as lock and is the reference to the terminal we take snapshots from.
+ */
+ final TerminalTextData fTerminal;
+ /**
+ * A snapshot copy of of fTerminal
+ */
+ // snapshot does not need internal synchronisation
+ final TerminalTextDataWindow fSnapshot;
+ // this variable is synchronized on fTerminal!
+ private SnapshotOutOfDateListener[] fListener = new SnapshotOutOfDateListener[0];
+ // this variable is synchronized on fTerminal!
+ private boolean fListenersNeedNotify;
+ private int fInterestWindowSize;
+ private int fInterestWindowStartLine;
+
+ TerminalTextDataSnapshot(TerminalTextData terminal) {
+ fSnapshot = new TerminalTextDataWindow();
+ fTerminal = terminal;
+ fCurrentChanges = new SnapshotChanges(fTerminal.getHeight());
+ fCurrentChanges.setTerminalChanged();
+ fFutureChanges = new SnapshotChanges(fTerminal.getHeight());
+ fFutureChanges.markLinesChanged(0, fTerminal.getHeight());
+ fListenersNeedNotify = true;
+ fInterestWindowSize = -1;
+ }
+
+ /**
+ * This is used in asserts to throw an {@link RuntimeException}.
+ * This is useful for tests.
+ * @return never -- throws an exception
+ */
+ private boolean throwRuntimeException() {
+ throw new RuntimeException();
+ }
+
+ @Override
+ public void detach() {
+ fTerminal.removeSnapshot(this);
+ }
+
+ @Override
+ public boolean isOutOfDate() {
+ // this is called from fTerminal, therefore we lock on fTerminal
+ synchronized (fTerminal) {
+ return fFutureChanges.hasChanged();
+ }
+ }
+
+ @Override
+ public void updateSnapshot(boolean detectScrolling) {
+ // make sure terminal does not change while we make the snapshot
+ synchronized (fTerminal) {
+ // let's make the future changes current
+ fCurrentChanges = fFutureChanges;
+ fFutureChanges = new SnapshotChanges(fTerminal.getHeight());
+ fFutureChanges.setInterestWindow(fInterestWindowStartLine, fInterestWindowSize);
+ // and update the snapshot
+ if (fSnapshot.getHeight() != fTerminal.getHeight() || fSnapshot.getWidth() != fTerminal.getWidth()) {
+ if (fInterestWindowSize == -1)
+ fSnapshot.setWindow(0, fTerminal.getHeight());
+ // if the dimensions have changed, we need a full copy
+ fSnapshot.copy(fTerminal);
+ // and we mark all lines as changed
+ fCurrentChanges.setAllChanged(fTerminal.getHeight());
+ } else {
+ // first we do the scroll on the copy
+ int start = fCurrentChanges.getScrollWindowStartLine();
+ int lines = Math.min(fCurrentChanges.getScrollWindowSize(), fSnapshot.getHeight() - start);
+ fSnapshot.scroll(start, lines, fCurrentChanges.getScrollWindowShift());
+ // and then create the snapshot of the changed lines
+ fCurrentChanges.copyChangedLines(fSnapshot, fTerminal);
+ }
+ fListenersNeedNotify = true;
+ fSnapshot.setCursorLine(fTerminal.getCursorLine());
+ fSnapshot.setCursorColumn(fTerminal.getCursorColumn());
+ }
+ if (!detectScrolling) {
+ // let's pretend there was no scrolling and
+ // convert the scrolling into line changes
+ fCurrentChanges.convertScrollingIntoChanges();
+ }
+ }
+
+ @Override
+ public char getChar(int line, int column) {
+ return fSnapshot.getChar(line, column);
+ }
+
+ @Override
+ public int getHeight() {
+ return fSnapshot.getHeight();
+ }
+
+ @Override
+ public LineSegment[] getLineSegments(int line, int column, int len) {
+ return fSnapshot.getLineSegments(line, column, len);
+ }
+
+ @Override
+ public TerminalStyle getStyle(int line, int column) {
+ return fSnapshot.getStyle(line, column);
+ }
+
+ @Override
+ public int getWidth() {
+ return fSnapshot.getWidth();
+ }
+
+ @Override
+ public int getFirstChangedLine() {
+ return fCurrentChanges.getFirstChangedLine();
+ }
+
+ @Override
+ public int getLastChangedLine() {
+ return fCurrentChanges.getLastChangedLine();
+ }
+
+ @Override
+ public boolean hasLineChanged(int line) {
+ return fCurrentChanges.hasLineChanged(line);
+ }
+
+ @Override
+ public boolean hasDimensionsChanged() {
+ return fCurrentChanges.hasDimensionsChanged();
+ }
+
+ @Override
+ public boolean hasTerminalChanged() {
+ return fCurrentChanges.hasTerminalChanged();
+ }
+
+ @Override
+ public int getScrollWindowStartLine() {
+ return fCurrentChanges.getScrollWindowStartLine();
+ }
+
+ @Override
+ public int getScrollWindowSize() {
+ return fCurrentChanges.getScrollWindowSize();
+ }
+
+ @Override
+ public int getScrollWindowShift() {
+ return fCurrentChanges.getScrollWindowShift();
+ }
+
+ /**
+ * Announces a change in line line
+ * @param line
+ */
+ void markLineChanged(int line) {
+ // threading
+ fFutureChanges.markLineChanged(line);
+ fFutureChanges.setTerminalChanged();
+ notifyListers();
+ }
+
+ /**
+ * Announces a change of n lines beginning with line line
+ * @param line
+ * @param n
+ */
+ void markLinesChanged(int line, int n) {
+ fFutureChanges.markLinesChanged(line, n);
+ fFutureChanges.setTerminalChanged();
+ notifyListers();
+ }
+
+ void markDimensionsChanged() {
+ fFutureChanges.markDimensionsChanged();
+ fFutureChanges.setTerminalChanged();
+ notifyListers();
+ }
+
+ void markCursorChanged() {
+ fFutureChanges.markCursorChanged();
+ fFutureChanges.setTerminalChanged();
+ notifyListers();
+ }
+
+ /**
+ * @param startLine
+ * @param size
+ * @param shift
+ */
+ void scroll(int startLine, int size, int shift) {
+ fFutureChanges.scroll(startLine, size, shift);
+ fFutureChanges.setTerminalChanged();
+ notifyListers();
+ }
+
+ /**
+ * Notifies listeners about the change
+ */
+ private void notifyListers() {
+ // this code has to be called from a block synchronized on fTerminal
+ synchronized (fTerminal) {
+ if (fListenersNeedNotify) {
+ for (int i = 0; i < fListener.length; i++) {
+ fListener[i].snapshotOutOfDate(this);
+ }
+ fListenersNeedNotify = false;
+ }
+ }
+ }
+
+ @Override
+ public ITerminalTextDataSnapshot makeSnapshot() {
+ return fSnapshot.makeSnapshot();
+ }
+
+ @Override
+ synchronized public void addListener(SnapshotOutOfDateListener listener) {
+ List<SnapshotOutOfDateListener> list = new ArrayList<>();
+ list.addAll(Arrays.asList(fListener));
+ list.add(listener);
+ fListener = list.toArray(new SnapshotOutOfDateListener[list.size()]);
+ }
+
+ @Override
+ synchronized public void removeListener(SnapshotOutOfDateListener listener) {
+ List<SnapshotOutOfDateListener> list = new ArrayList<>();
+ list.addAll(Arrays.asList(fListener));
+ list.remove(listener);
+ fListener = list.toArray(new SnapshotOutOfDateListener[list.size()]);
+ }
+
+ @Override
+ public String toString() {
+ return fSnapshot.toString();
+ }
+
+ @Override
+ public int getInterestWindowSize() {
+ return fInterestWindowSize;
+ }
+
+ @Override
+ public int getInterestWindowStartLine() {
+ return fInterestWindowStartLine;
+ }
+
+ @Override
+ public void setInterestWindow(int startLine, int size) {
+ assert startLine >= 0 || throwRuntimeException();
+ assert size >= 0 || throwRuntimeException();
+ fInterestWindowStartLine = startLine;
+ fInterestWindowSize = size;
+ fSnapshot.setWindow(startLine, size);
+ fFutureChanges.setInterestWindow(startLine, size);
+ notifyListers();
+ }
+
+ @Override
+ public char[] getChars(int line) {
+ return fSnapshot.getChars(line);
+ }
+
+ @Override
+ public TerminalStyle[] getStyles(int line) {
+ return fSnapshot.getStyles(line);
+ }
+
+ @Override
+ public int getCursorColumn() {
+ return fSnapshot.getCursorColumn();
+ }
+
+ @Override
+ public int getCursorLine() {
+ return fSnapshot.getCursorLine();
+ }
+
+ @Override
+ public ITerminalTextData getTerminalTextData() {
+ return fTerminal;
+ }
+
+ @Override
+ public boolean isWrappedLine(int line) {
+ return fSnapshot.isWrappedLine(line);
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataStore.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataStore.java
new file mode 100644
index 00000000000..f0472aba928
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataStore.java
@@ -0,0 +1,355 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ * Anton Leherbauer (Wind River) - [453393] Add support for copying wrapped lines without line break
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.model;
+
+import java.lang.reflect.Array;
+import java.util.ArrayList;
+import java.util.BitSet;
+import java.util.List;
+
+import org.eclipse.tm.terminal.model.ITerminalTextData;
+import org.eclipse.tm.terminal.model.ITerminalTextDataSnapshot;
+import org.eclipse.tm.terminal.model.LineSegment;
+import org.eclipse.tm.terminal.model.TerminalStyle;
+
+/**
+ * This class is thread safe.
+ *
+ */
+public class TerminalTextDataStore implements ITerminalTextData {
+ private char[][] fChars;
+ private TerminalStyle[][] fStyle;
+ private int fWidth;
+ private int fHeight;
+ private int fMaxHeight;
+ private int fCursorColumn;
+ private int fCursorLine;
+ final private BitSet fWrappedLines = new BitSet();
+
+ public TerminalTextDataStore() {
+ fChars = new char[0][];
+ fStyle = new TerminalStyle[0][];
+ fWidth = 0;
+ }
+
+ /**
+ * This is used in asserts to throw an {@link RuntimeException}.
+ * This is useful for tests.
+ * @return never -- throws an exception
+ */
+ private boolean throwRuntimeException() {
+ throw new RuntimeException();
+ }
+
+ @Override
+ public int getWidth() {
+ return fWidth;
+ }
+
+ @Override
+ public int getHeight() {
+ return fHeight;
+ }
+
+ @Override
+ public void setDimensions(int height, int width) {
+ assert height >= 0 || throwRuntimeException();
+ assert width >= 0 || throwRuntimeException();
+ // just extend the region
+ if (height > fChars.length) {
+ int h = 4 * height / 3;
+ if (fMaxHeight > 0 && h > fMaxHeight)
+ h = fMaxHeight;
+ fStyle = (TerminalStyle[][]) resizeArray(fStyle, height);
+ fChars = (char[][]) resizeArray(fChars, height);
+ }
+ // clean the new lines
+ if (height > fHeight) {
+ for (int i = fHeight; i < height; i++) {
+ cleanLine(i);
+ }
+ }
+ // set dimensions after successful resize!
+ fWidth = width;
+ fHeight = height;
+ }
+
+ /**
+ * Reallocates an array with a new size, and copies the contents of the old
+ * array to the new array.
+ *
+ * @param origArray the old array, to be reallocated.
+ * @param newSize the new array size.
+ * @return A new array with the same contents (chopped off if needed or filled with 0 or null).
+ */
+ private Object resizeArray(Object origArray, int newSize) {
+ int oldSize = Array.getLength(origArray);
+ if (oldSize == newSize)
+ return origArray;
+ Class<?> elementType = origArray.getClass().getComponentType();
+ Object newArray = Array.newInstance(elementType, newSize);
+ int preserveLength = Math.min(oldSize, newSize);
+ if (preserveLength > 0)
+ System.arraycopy(origArray, 0, newArray, 0, preserveLength);
+ return newArray;
+ }
+
+ @Override
+ public LineSegment[] getLineSegments(int line, int column, int len) {
+ // get the styles and chars for this line
+ TerminalStyle[] styles = fStyle[line];
+ char[] chars = fChars[line];
+ int col = column;
+ int n = column + len;
+
+ // expand the line if needed....
+ if (styles == null)
+ styles = new TerminalStyle[n];
+ else if (styles.length < n)
+ styles = (TerminalStyle[]) resizeArray(styles, n);
+
+ if (chars == null)
+ chars = new char[n];
+ else if (chars.length < n)
+ chars = (char[]) resizeArray(chars, n);
+
+ // and create the line segments
+ TerminalStyle style = styles[column];
+ List<LineSegment> segments = new ArrayList<>();
+ for (int i = column; i < n; i++) {
+ if (styles[i] != style) {
+ segments.add(new LineSegment(col, new String(chars, col, i - col), style));
+ style = styles[i];
+ col = i;
+ }
+ }
+ if (col < n) {
+ segments.add(new LineSegment(col, new String(chars, col, n - col), style));
+ }
+ return segments.toArray(new LineSegment[segments.size()]);
+ }
+
+ @Override
+ public char getChar(int line, int column) {
+ assert column < fWidth || throwRuntimeException();
+ if (fChars[line] == null || column >= fChars[line].length)
+ return 0;
+ return fChars[line][column];
+ }
+
+ @Override
+ public TerminalStyle getStyle(int line, int column) {
+ assert column < fWidth || throwRuntimeException();
+ if (fStyle[line] == null || column >= fStyle[line].length)
+ return null;
+ return fStyle[line][column];
+ }
+
+ void ensureLineLength(int iLine, int length) {
+ if (length > fWidth)
+ throw new RuntimeException();
+ if (fChars[iLine] == null) {
+ fChars[iLine] = new char[length];
+ } else if (fChars[iLine].length < length) {
+ fChars[iLine] = (char[]) resizeArray(fChars[iLine], length);
+ }
+ if (fStyle[iLine] == null) {
+ fStyle[iLine] = new TerminalStyle[length];
+ } else if (fStyle[iLine].length < length) {
+ fStyle[iLine] = (TerminalStyle[]) resizeArray(fStyle[iLine], length);
+ }
+ }
+
+ @Override
+ public void setChar(int line, int column, char c, TerminalStyle style) {
+ ensureLineLength(line, column + 1);
+ fChars[line][column] = c;
+ fStyle[line][column] = style;
+ }
+
+ @Override
+ public void setChars(int line, int column, char[] chars, TerminalStyle style) {
+ setChars(line, column, chars, 0, chars.length, style);
+ }
+
+ @Override
+ public void setChars(int line, int column, char[] chars, int start, int len, TerminalStyle style) {
+ ensureLineLength(line, column + len);
+ for (int i = 0; i < len; i++) {
+ fChars[line][column + i] = chars[i + start];
+ fStyle[line][column + i] = style;
+ }
+ }
+
+ @Override
+ public void scroll(int startLine, int size, int shift) {
+ assert startLine + size <= getHeight() || throwRuntimeException();
+ if (shift < 0) {
+ // move the region up
+ // shift is negative!!
+ for (int i = startLine; i < startLine + size + shift; i++) {
+ fChars[i] = fChars[i - shift];
+ fStyle[i] = fStyle[i - shift];
+ fWrappedLines.set(i, fWrappedLines.get(i - shift));
+ }
+ // then clean the opened lines
+ cleanLines(Math.max(startLine, startLine + size + shift), Math.min(-shift, getHeight() - startLine));
+ // cleanLines(Math.max(0, startLine+size+shift),Math.min(-shift, getHeight()-startLine));
+ } else {
+ for (int i = startLine + size - 1; i >= startLine && i - shift >= 0; i--) {
+ fChars[i] = fChars[i - shift];
+ fStyle[i] = fStyle[i - shift];
+ fWrappedLines.set(i, fWrappedLines.get(i - shift));
+ }
+ cleanLines(startLine, Math.min(shift, getHeight() - startLine));
+ }
+ }
+
+ /**
+ * Replaces the lines with new empty data
+ * @param line
+ * @param len
+ */
+ private void cleanLines(int line, int len) {
+ for (int i = line; i < line + len; i++) {
+ cleanLine(i);
+ }
+ }
+
+ /*
+ * @return a text representation of the object.
+ * Lines are separated by '\n'. No style information is returned.
+ */
+ @Override
+ public String toString() {
+ StringBuffer buff = new StringBuffer();
+ for (int line = 0; line < getHeight(); line++) {
+ if (line > 0)
+ buff.append("\n"); //$NON-NLS-1$
+ for (int column = 0; column < fWidth; column++) {
+ buff.append(getChar(line, column));
+ }
+ }
+ return buff.toString();
+ }
+
+ @Override
+ public ITerminalTextDataSnapshot makeSnapshot() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void addLine() {
+ if (fMaxHeight > 0 && getHeight() < fMaxHeight) {
+ setDimensions(getHeight() + 1, getWidth());
+ } else {
+ scroll(0, getHeight(), -1);
+ }
+ }
+
+ @Override
+ public void copy(ITerminalTextData source) {
+ fWidth = source.getWidth();
+ int n = source.getHeight();
+ if (getHeight() != n) {
+ fChars = new char[n][];
+ fStyle = new TerminalStyle[n][];
+ }
+ for (int i = 0; i < n; i++) {
+ copyLine(source, i, i);
+ }
+ fHeight = n;
+ fCursorLine = source.getCursorLine();
+ fCursorColumn = source.getCursorColumn();
+ }
+
+ @Override
+ public void copyRange(ITerminalTextData source, int sourceStartLine, int destStartLine, int length) {
+ for (int i = 0; i < length; i++) {
+ copyLine(source, i + sourceStartLine, i + destStartLine);
+ }
+ }
+
+ @Override
+ public void copyLine(ITerminalTextData source, int sourceLine, int destLine) {
+ fChars[destLine] = source.getChars(sourceLine);
+ fStyle[destLine] = source.getStyles(sourceLine);
+ fWrappedLines.set(destLine, source.isWrappedLine(sourceLine));
+ }
+
+ @Override
+ public char[] getChars(int line) {
+ if (fChars[line] == null)
+ return null;
+ return fChars[line].clone();
+ }
+
+ @Override
+ public TerminalStyle[] getStyles(int line) {
+ if (fStyle[line] == null)
+ return null;
+ return fStyle[line].clone();
+ }
+
+ public void setLine(int line, char[] chars, TerminalStyle[] styles) {
+ fChars[line] = chars.clone();
+ fStyle[line] = styles.clone();
+ fWrappedLines.clear(line);
+ }
+
+ @Override
+ public void setMaxHeight(int height) {
+ fMaxHeight = height;
+ }
+
+ @Override
+ public int getMaxHeight() {
+ return fMaxHeight;
+ }
+
+ @Override
+ public void cleanLine(int line) {
+ fChars[line] = null;
+ fStyle[line] = null;
+ fWrappedLines.clear(line);
+ }
+
+ @Override
+ public int getCursorColumn() {
+ return fCursorColumn;
+ }
+
+ @Override
+ public int getCursorLine() {
+ return fCursorLine;
+ }
+
+ @Override
+ public void setCursorColumn(int column) {
+ fCursorColumn = column;
+ }
+
+ @Override
+ public void setCursorLine(int line) {
+ fCursorLine = line;
+ }
+
+ @Override
+ public boolean isWrappedLine(int line) {
+ return fWrappedLines.get(line);
+ }
+
+ @Override
+ public void setWrappedLine(int line) {
+ fWrappedLines.set(line);
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataWindow.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataWindow.java
new file mode 100644
index 00000000000..31e6d625901
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataWindow.java
@@ -0,0 +1,259 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ * Anton Leherbauer (Wind River) - [453393] Add support for copying wrapped lines without line break
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.model;
+
+import org.eclipse.tm.terminal.model.ITerminalTextData;
+import org.eclipse.tm.terminal.model.ITerminalTextDataSnapshot;
+import org.eclipse.tm.terminal.model.LineSegment;
+import org.eclipse.tm.terminal.model.TerminalStyle;
+
+/**
+ * This class stores the data only within a window {@link #setWindow(int, int)} and
+ * {@link #getWindowStartLine()} and {@link #getWindowSize()}. Everything outside
+ * the is <code>char=='\000'</code> and <code>style=null</code>.
+ *
+ */
+public class TerminalTextDataWindow implements ITerminalTextData {
+ final ITerminalTextData fData;
+ int fWindowStartLine;
+ int fWindowSize;
+ int fHeight;
+ int fMaxHeight;
+
+ public TerminalTextDataWindow(ITerminalTextData data) {
+ fData = data;
+ }
+
+ public TerminalTextDataWindow() {
+ this(new TerminalTextDataStore());
+ }
+
+ /**
+ * This is used in asserts to throw an {@link RuntimeException}.
+ * This is useful for tests.
+ * @return never -- throws an exception
+ */
+ private boolean throwRuntimeException() {
+ throw new RuntimeException();
+ }
+
+ /**
+ * @param line
+ * @return true if the line is within the window
+ */
+ boolean isInWindow(int line) {
+ return line >= fWindowStartLine && line < fWindowStartLine + fWindowSize;
+ }
+
+ @Override
+ public char getChar(int line, int column) {
+ if (!isInWindow(line))
+ return 0;
+ return fData.getChar(line - fWindowStartLine, column);
+ }
+
+ @Override
+ public char[] getChars(int line) {
+ if (!isInWindow(line))
+ return null;
+ return fData.getChars(line - fWindowStartLine);
+ }
+
+ @Override
+ public int getHeight() {
+ return fHeight;
+ }
+
+ @Override
+ public LineSegment[] getLineSegments(int line, int startCol, int numberOfCols) {
+ if (!isInWindow(line))
+ return new LineSegment[] { new LineSegment(startCol, new String(new char[numberOfCols]), null) };
+ return fData.getLineSegments(line - fWindowStartLine, startCol, numberOfCols);
+ }
+
+ @Override
+ public int getMaxHeight() {
+ return fMaxHeight;
+ }
+
+ @Override
+ public TerminalStyle getStyle(int line, int column) {
+ if (!isInWindow(line))
+ return null;
+ return fData.getStyle(line - fWindowStartLine, column);
+ }
+
+ @Override
+ public TerminalStyle[] getStyles(int line) {
+ if (!isInWindow(line))
+ return null;
+ return fData.getStyles(line - fWindowStartLine);
+ }
+
+ @Override
+ public int getWidth() {
+ return fData.getWidth();
+ }
+
+ @Override
+ public ITerminalTextDataSnapshot makeSnapshot() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void addLine() {
+ if (fMaxHeight > 0 && getHeight() < fMaxHeight) {
+ setDimensions(getHeight() + 1, getWidth());
+ } else {
+ scroll(0, getHeight(), -1);
+ }
+ }
+
+ @Override
+ public void copy(ITerminalTextData source) {
+ // we inherit the dimensions of the source
+ setDimensions(source.getHeight(), source.getWidth());
+ int n = Math.min(fWindowSize, source.getHeight() - fWindowStartLine);
+ if (n > 0)
+ fData.copyRange(source, fWindowStartLine, 0, n);
+ }
+
+ @Override
+ public void copyRange(ITerminalTextData source, int sourceStartLine, int destStartLine, int length) {
+ int n = length;
+ int dStart = destStartLine - fWindowStartLine;
+ int sStart = sourceStartLine;
+ // if start outside our range, cut the length to copy
+ if (dStart < 0) {
+ n += dStart;
+ sStart -= dStart;
+ dStart = 0;
+ }
+ // do not exceed the window size
+ n = Math.min(n, fWindowSize);
+ if (n > 0)
+ fData.copyRange(source, sStart, dStart, n);
+
+ }
+
+ @Override
+ public void copyLine(ITerminalTextData source, int sourceLine, int destLine) {
+ if (isInWindow(destLine))
+ fData.copyLine(source, sourceLine, destLine - fWindowStartLine);
+ }
+
+ @Override
+ public void scroll(int startLine, int size, int shift) {
+ assert (startLine >= 0 && startLine + size <= fHeight) || throwRuntimeException();
+ int n = size;
+ int start = startLine - fWindowStartLine;
+ // if start outside our range, cut the length to copy
+ if (start < 0) {
+ n += start;
+ start = 0;
+ }
+ n = Math.min(n, fWindowSize - start);
+ // do not exceed the window size
+ if (n > 0)
+ fData.scroll(start, n, shift);
+ }
+
+ @Override
+ public void setChar(int line, int column, char c, TerminalStyle style) {
+ if (!isInWindow(line))
+ return;
+ fData.setChar(line - fWindowStartLine, column, c, style);
+ }
+
+ @Override
+ public void setChars(int line, int column, char[] chars, int start, int len, TerminalStyle style) {
+ if (!isInWindow(line))
+ return;
+ fData.setChars(line - fWindowStartLine, column, chars, start, len, style);
+ }
+
+ @Override
+ public void setChars(int line, int column, char[] chars, TerminalStyle style) {
+ if (!isInWindow(line))
+ return;
+ fData.setChars(line - fWindowStartLine, column, chars, style);
+ }
+
+ @Override
+ public void setDimensions(int height, int width) {
+ assert height >= 0 || throwRuntimeException();
+ fData.setDimensions(fWindowSize, width);
+ fHeight = height;
+ }
+
+ @Override
+ public void setMaxHeight(int height) {
+ fMaxHeight = height;
+ }
+
+ public void setWindow(int startLine, int size) {
+ fWindowStartLine = startLine;
+ fWindowSize = size;
+ fData.setDimensions(fWindowSize, getWidth());
+ }
+
+ public int getWindowStartLine() {
+ return fWindowStartLine;
+ }
+
+ public int getWindowSize() {
+ return fWindowSize;
+ }
+
+ public void setHeight(int height) {
+ fHeight = height;
+ }
+
+ @Override
+ public void cleanLine(int line) {
+ if (isInWindow(line))
+ fData.cleanLine(line - fWindowStartLine);
+ }
+
+ @Override
+ public int getCursorColumn() {
+ return fData.getCursorColumn();
+ }
+
+ @Override
+ public int getCursorLine() {
+ return fData.getCursorLine();
+ }
+
+ @Override
+ public void setCursorColumn(int column) {
+ fData.setCursorColumn(column);
+ }
+
+ @Override
+ public void setCursorLine(int line) {
+ fData.setCursorLine(line);
+ }
+
+ @Override
+ public boolean isWrappedLine(int line) {
+ if (isInWindow(line))
+ return fData.isWrappedLine(line - fWindowStartLine);
+ return false;
+ }
+
+ @Override
+ public void setWrappedLine(int line) {
+ if (isInWindow(line))
+ fData.setWrappedLine(line - fWindowStartLine);
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/preferences/ITerminalConstants.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/preferences/ITerminalConstants.java
new file mode 100644
index 00000000000..9f87a310388
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/preferences/ITerminalConstants.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ * Martin Oberhuber (Wind River) - fixed copyright headers and beautified
+ * Martin Oberhuber (Wind River) - [378691][api] push Preferences into the Widget
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.preferences;
+
+import org.eclipse.tm.terminal.model.TerminalColor;
+
+/**
+ * Constants for Terminal Preferences.
+ *
+ * @noextend This interface is not intended to be extended by clients.
+ * @noimplement This interface is not intended to be implemented by clients.
+ */
+public interface ITerminalConstants {
+
+ public static final String FONT_DEFINITION = "terminal.views.view.font.definition"; //$NON-NLS-1$
+ public static final String PREF_HAS_MIGRATED = "TerminalPref.migrated"; //$NON-NLS-1$
+
+ public static final String PREF_BUFFERLINES = "TerminalPrefBufferLines"; //$NON-NLS-1$
+ public static final String PREF_INVERT_COLORS = "TerminalPrefInvertColors"; //$NON-NLS-1$
+ /**
+ * @since 5.0
+ */
+ public static final String PREF_FONT_DEFINITION = "TerminalFontDefinition"; //$NON-NLS-1$
+ public static final int DEFAULT_BUFFERLINES = 1000;
+ public static final boolean DEFAULT_INVERT_COLORS = false;
+ /**
+ * @since 5.0
+ */
+ public static final String DEFAULT_FONT_DEFINITION = FONT_DEFINITION;
+
+ /**
+ * @since 5.0
+ */
+ public static String getPrefForTerminalColor(TerminalColor tc) {
+ return tc.toString();
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/preferences/TerminalColorPresets.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/preferences/TerminalColorPresets.java
new file mode 100644
index 00000000000..108ac7de0c2
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/preferences/TerminalColorPresets.java
@@ -0,0 +1,134 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Kichwa Coders Canada Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.preferences;
+
+import static org.eclipse.tm.terminal.model.TerminalColor.BACKGROUND;
+import static org.eclipse.tm.terminal.model.TerminalColor.BLACK;
+import static org.eclipse.tm.terminal.model.TerminalColor.BLUE;
+import static org.eclipse.tm.terminal.model.TerminalColor.BRIGHT_BLACK;
+import static org.eclipse.tm.terminal.model.TerminalColor.BRIGHT_BLUE;
+import static org.eclipse.tm.terminal.model.TerminalColor.BRIGHT_CYAN;
+import static org.eclipse.tm.terminal.model.TerminalColor.BRIGHT_GREEN;
+import static org.eclipse.tm.terminal.model.TerminalColor.BRIGHT_MAGENTA;
+import static org.eclipse.tm.terminal.model.TerminalColor.BRIGHT_RED;
+import static org.eclipse.tm.terminal.model.TerminalColor.BRIGHT_WHITE;
+import static org.eclipse.tm.terminal.model.TerminalColor.BRIGHT_YELLOW;
+import static org.eclipse.tm.terminal.model.TerminalColor.CYAN;
+import static org.eclipse.tm.terminal.model.TerminalColor.FOREGROUND;
+import static org.eclipse.tm.terminal.model.TerminalColor.GREEN;
+import static org.eclipse.tm.terminal.model.TerminalColor.MAGENTA;
+import static org.eclipse.tm.terminal.model.TerminalColor.RED;
+import static org.eclipse.tm.terminal.model.TerminalColor.SELECTION_BACKGROUND;
+import static org.eclipse.tm.terminal.model.TerminalColor.SELECTION_FOREGROUND;
+import static org.eclipse.tm.terminal.model.TerminalColor.WHITE;
+import static org.eclipse.tm.terminal.model.TerminalColor.YELLOW;
+
+import java.util.ArrayList;
+import java.util.EnumMap;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Supplier;
+import java.util.stream.Collectors;
+
+import org.eclipse.swt.graphics.RGB;
+import org.eclipse.tm.internal.terminal.control.impl.TerminalMessages;
+import org.eclipse.tm.internal.terminal.model.SystemDefaultColors;
+import org.eclipse.tm.terminal.model.TerminalColor;
+
+/**
+ * @since 5.0
+ */
+public enum TerminalColorPresets {
+
+ INSTANCE;
+
+ private final List<Preset> presets = new ArrayList<>();
+
+ public List<String> getPresets() {
+ return presets.stream().map(Preset::getName).collect(Collectors.toList());
+ }
+
+ public Preset getPreset(int index) {
+ return presets.get(index);
+ }
+
+ public static class Preset {
+ private String name;
+ private Map<TerminalColor, Supplier<RGB>> map = new EnumMap<>(TerminalColor.class);
+
+ Preset(String name) {
+ this.name = name;
+ set(BLACK, 0, 0, 0);
+ set(RED, 205, 0, 0);
+ set(GREEN, 0, 205, 0);
+ set(YELLOW, 205, 205, 0);
+ set(BLUE, 0, 0, 238);
+ set(MAGENTA, 205, 0, 205);
+ set(CYAN, 0, 205, 205);
+ set(WHITE, 229, 229, 229);
+
+ set(BRIGHT_BLACK, 0, 0, 0);
+ set(BRIGHT_RED, 255, 0, 0);
+ set(BRIGHT_GREEN, 0, 255, 0);
+ set(BRIGHT_YELLOW, 255, 255, 0);
+ set(BRIGHT_BLUE, 92, 92, 255);
+ set(BRIGHT_MAGENTA, 255, 0, 255);
+ set(BRIGHT_CYAN, 0, 255, 255);
+ set(BRIGHT_WHITE, 255, 255, 255);
+
+ set(FOREGROUND, SystemDefaultColors.FOREGROUND);
+ set(BACKGROUND, SystemDefaultColors.BACKGROUND);
+ set(SELECTION_FOREGROUND, SystemDefaultColors.SELECTION_FOREGROUND);
+ set(SELECTION_BACKGROUND, SystemDefaultColors.SELECTION_BACKGROUND);
+ }
+
+ Preset set(TerminalColor color, RGB rgb) {
+ return set(color, () -> rgb);
+ }
+
+ Preset set(TerminalColor color, int r, int g, int b) {
+ return set(color, new RGB(r, g, b));
+ }
+
+ Preset set(TerminalColor color, Supplier<RGB> rgbSupplier) {
+ map.put(color, rgbSupplier);
+ return this;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * Returns the preset value for the given color. Will never return null
+ * because each color must be defined in the map.
+ *
+ * @param terminalColor to get RGB value for
+ * @return non-<code>null</code> color
+ */
+ public RGB getRGB(TerminalColor terminalColor) {
+ return map.getOrDefault(terminalColor, () -> new RGB(0, 0, 0)).get();
+ }
+ }
+
+ TerminalColorPresets() {
+ presets.add(new Preset(TerminalMessages.TerminalColorPresets_TerminalDefaults));
+ presets.add(new Preset(TerminalMessages.TerminalColorPresets_EclipseLight) //
+ .set(FOREGROUND, getDefaultPreset().getRGB(BLACK)) //
+ .set(BACKGROUND, getDefaultPreset().getRGB(WHITE)));
+ presets.add(new Preset(TerminalMessages.TerminalColorPresets_EclipseDark) //
+ .set(FOREGROUND, getDefaultPreset().getRGB(WHITE)) //
+ .set(BACKGROUND, getDefaultPreset().getRGB(BLACK)));
+ }
+
+ public Preset getDefaultPreset() {
+ return presets.get(0);
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/preferences/TerminalColorsFieldEditor.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/preferences/TerminalColorsFieldEditor.java
new file mode 100644
index 00000000000..1ea8983c5ac
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/preferences/TerminalColorsFieldEditor.java
@@ -0,0 +1,227 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Kichwa Coders Canada Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.preferences;
+
+import static org.eclipse.tm.terminal.model.TerminalColor.BACKGROUND;
+import static org.eclipse.tm.terminal.model.TerminalColor.BLACK;
+import static org.eclipse.tm.terminal.model.TerminalColor.BLUE;
+import static org.eclipse.tm.terminal.model.TerminalColor.BRIGHT_BLACK;
+import static org.eclipse.tm.terminal.model.TerminalColor.BRIGHT_BLUE;
+import static org.eclipse.tm.terminal.model.TerminalColor.BRIGHT_CYAN;
+import static org.eclipse.tm.terminal.model.TerminalColor.BRIGHT_GREEN;
+import static org.eclipse.tm.terminal.model.TerminalColor.BRIGHT_MAGENTA;
+import static org.eclipse.tm.terminal.model.TerminalColor.BRIGHT_RED;
+import static org.eclipse.tm.terminal.model.TerminalColor.BRIGHT_WHITE;
+import static org.eclipse.tm.terminal.model.TerminalColor.BRIGHT_YELLOW;
+import static org.eclipse.tm.terminal.model.TerminalColor.CYAN;
+import static org.eclipse.tm.terminal.model.TerminalColor.FOREGROUND;
+import static org.eclipse.tm.terminal.model.TerminalColor.GREEN;
+import static org.eclipse.tm.terminal.model.TerminalColor.MAGENTA;
+import static org.eclipse.tm.terminal.model.TerminalColor.RED;
+import static org.eclipse.tm.terminal.model.TerminalColor.SELECTION_BACKGROUND;
+import static org.eclipse.tm.terminal.model.TerminalColor.SELECTION_FOREGROUND;
+import static org.eclipse.tm.terminal.model.TerminalColor.WHITE;
+import static org.eclipse.tm.terminal.model.TerminalColor.YELLOW;
+
+import java.util.EnumMap;
+
+import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.jface.layout.GridLayoutFactory;
+import org.eclipse.jface.preference.ColorSelector;
+import org.eclipse.jface.preference.FieldEditor;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.preference.PreferenceConverter;
+import org.eclipse.jface.resource.FontDescriptor;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.tm.internal.terminal.control.impl.TerminalMessages;
+import org.eclipse.tm.terminal.model.TerminalColor;
+
+/**
+ * A field editor that can be used for editing terminal colors.
+ *
+ * @since 5.0
+ */
+public class TerminalColorsFieldEditor extends FieldEditor {
+
+ private EnumMap<TerminalColor, ColorSelector> colorSelectors;
+ private Composite controls;
+ private Font boldFont;
+
+ /**
+ * Creates a field editor for editing colors of {@link TerminalColor}.
+ * The preference names used are as they are returned from {@link TerminalColor#getPreferenceName()}
+ * @param labelText
+ * @param parent
+ */
+ public TerminalColorsFieldEditor(Composite parent) {
+ super("", "", parent); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ @Override
+ protected void adjustForNumColumns(int numColumns) {
+ GridData gd = (GridData) controls.getLayoutData();
+ gd.horizontalSpan = numColumns;
+ }
+
+ @Override
+ public int getNumberOfControls() {
+ return 1;
+ }
+
+ @Override
+ protected void doFillIntoGrid(Composite parent, int numColumns) {
+ colorSelectors = new EnumMap<>(TerminalColor.class);
+ controls = new Composite(parent, SWT.NONE);
+ GridDataFactory.fillDefaults().applyTo(controls);
+ GridLayoutFactory.fillDefaults().applyTo(controls);
+
+ FontDescriptor boldDescriptor = FontDescriptor.createFrom(parent.getFont()).setStyle(SWT.BOLD);
+ boldFont = boldDescriptor.createFont(parent.getDisplay());
+
+ Group general = new Group(controls, SWT.SHADOW_NONE);
+ general.setText(TerminalMessages.TerminalColorsFieldEditor_GeneralColors);
+ general.setFont(boldFont);
+ GridDataFactory.fillDefaults().applyTo(general);
+ GridLayoutFactory.swtDefaults().numColumns(4).applyTo(general);
+
+ createLabelledSelector(general, FOREGROUND, TerminalMessages.TerminalColorsFieldEditor_TextColor);
+ createLabelledSelector(general, BACKGROUND, TerminalMessages.TerminalColorsFieldEditor_Background);
+ createLabelledSelector(general, SELECTION_BACKGROUND, TerminalMessages.TerminalColorsFieldEditor_Selection);
+ createLabelledSelector(general, SELECTION_FOREGROUND, TerminalMessages.TerminalColorsFieldEditor_SelectedText);
+
+ Group palette = new Group(controls, SWT.SHADOW_NONE);
+ palette.setText(TerminalMessages.TerminalColorsFieldEditor_PaletteColors);
+ palette.setFont(boldFont);
+ GridDataFactory.fillDefaults().applyTo(palette);
+ GridLayoutFactory.swtDefaults().numColumns(8).applyTo(palette);
+
+ createSelector(palette, BLACK, TerminalMessages.TerminalColorsFieldEditor_Black);
+ createSelector(palette, RED, TerminalMessages.TerminalColorsFieldEditor_Red);
+ createSelector(palette, GREEN, TerminalMessages.TerminalColorsFieldEditor_Green);
+ createSelector(palette, YELLOW, TerminalMessages.TerminalColorsFieldEditor_Yellow);
+ createSelector(palette, BLUE, TerminalMessages.TerminalColorsFieldEditor_Blue);
+ createSelector(palette, MAGENTA, TerminalMessages.TerminalColorsFieldEditor_Magenta);
+ createSelector(palette, CYAN, TerminalMessages.TerminalColorsFieldEditor_Cyan);
+ createSelector(palette, WHITE, TerminalMessages.TerminalColorsFieldEditor_White);
+
+ createSelector(palette, BRIGHT_BLACK, TerminalMessages.TerminalColorsFieldEditor_BrightBlack);
+ createSelector(palette, BRIGHT_RED, TerminalMessages.TerminalColorsFieldEditor_BrightRed);
+ createSelector(palette, BRIGHT_GREEN, TerminalMessages.TerminalColorsFieldEditor_BrightGreen);
+ createSelector(palette, BRIGHT_YELLOW, TerminalMessages.TerminalColorsFieldEditor_BrightYellow);
+ createSelector(palette, BRIGHT_BLUE, TerminalMessages.TerminalColorsFieldEditor_BrightBlue);
+ createSelector(palette, BRIGHT_MAGENTA, TerminalMessages.TerminalColorsFieldEditor_BrightMagenta);
+ createSelector(palette, BRIGHT_CYAN, TerminalMessages.TerminalColorsFieldEditor_BrightCyan);
+ createSelector(palette, BRIGHT_WHITE, TerminalMessages.TerminalColorsFieldEditor_BrightWhite);
+
+ Group presets = new Group(controls, SWT.SHADOW_NONE);
+ presets.setText(TerminalMessages.TerminalColorsFieldEditor_Presets);
+ presets.setFont(boldFont);
+ GridDataFactory.fillDefaults().applyTo(presets);
+ GridLayoutFactory.swtDefaults().numColumns(2).applyTo(presets);
+ Combo presetsCombo = new Combo(presets, SWT.DROP_DOWN | SWT.READ_ONLY);
+ presetsCombo.add(TerminalMessages.TerminalColorsFieldEditor_LoadPresets);
+ TerminalColorPresets colorPresets = TerminalColorPresets.INSTANCE;
+ colorPresets.getPresets().forEach(presetsCombo::add);
+ presetsCombo.addListener(SWT.Selection, e -> {
+ int selectionIndex = presetsCombo.getSelectionIndex();
+ if (selectionIndex > 0) {
+ int selectedPresetIndex = selectionIndex - 1; // account for "Load Presets..." entry
+ colorSelectors.forEach((terminalColor, colorSelector) -> colorSelector
+ .setColorValue(colorPresets.getPreset(selectedPresetIndex).getRGB(terminalColor)));
+
+ }
+ });
+ presetsCombo.select(0);
+ }
+
+ @Override
+ public void dispose() {
+ if (boldFont != null) {
+ boldFont.dispose();
+ }
+ }
+
+ private void createLabelledSelector(Composite parent, TerminalColor color, String label) {
+ Label labelControl = new Label(parent, SWT.LEFT);
+ labelControl.setText(label);
+ GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).applyTo(labelControl);
+ createSelector(parent, color, label);
+ }
+
+ private void createSelector(Composite parent, TerminalColor color, String label) {
+ ColorSelector colorSelector = new ColorSelector(parent);
+ colorSelector.getButton().setToolTipText(label);
+ GridDataFactory.fillDefaults().applyTo(colorSelector.getButton());
+ colorSelectors.put(color, colorSelector);
+ }
+
+ @Override
+ protected void doLoad() {
+ IPreferenceStore store = getPreferenceStore();
+ colorSelectors.forEach((terminalColor, colorSelector) -> colorSelector.setColorValue(
+ PreferenceConverter.getColor(store, ITerminalConstants.getPrefForTerminalColor(terminalColor))));
+ }
+
+ @Override
+ protected void doLoadDefault() {
+ IPreferenceStore store = getPreferenceStore();
+ colorSelectors.forEach((terminalColor, colorSelector) -> colorSelector.setColorValue(
+ PreferenceConverter.getDefaultColor(store, ITerminalConstants.getPrefForTerminalColor(terminalColor))));
+ }
+
+ @Override
+ public void store() {
+ IPreferenceStore store = getPreferenceStore();
+ if (store == null) {
+ return;
+ }
+
+ if (presentsDefaultValue()) {
+ doStoreDefault(store);
+ } else {
+ doStore();
+ }
+ }
+
+ /**
+ * Stores the default preference value from this field editor into
+ * the preference store.
+ */
+ protected void doStoreDefault(IPreferenceStore store) {
+ colorSelectors.forEach((terminalColor, colorSelector) -> store
+ .setToDefault(ITerminalConstants.getPrefForTerminalColor(terminalColor)));
+ }
+
+ @Override
+ protected void doStore() {
+ IPreferenceStore store = getPreferenceStore();
+ colorSelectors.forEach((terminalColor, colorSelector) -> PreferenceConverter.setValue(store,
+ ITerminalConstants.getPrefForTerminalColor(terminalColor), colorSelector.getColorValue()));
+ }
+
+ @Override
+ public String getPreferenceName() {
+ throw new IllegalArgumentException(
+ "preference name should not be accessed as this class represent multiple preferences"); //$NON-NLS-1$
+ }
+
+ @Override
+ public String getLabelText() {
+ throw new IllegalArgumentException(
+ "label text should not be accessed as this class represent multiple preferences"); //$NON-NLS-1$
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/preferences/TerminalPreferenceInitializer.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/preferences/TerminalPreferenceInitializer.java
new file mode 100644
index 00000000000..d6d737459b4
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/preferences/TerminalPreferenceInitializer.java
@@ -0,0 +1,53 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ * Martin Oberhuber (Wind River) - fixed copyright headers and beautified
+ * Martin Oberhuber (Wind River) - [378691][api] push Preferences into the Widget
+ * Martin Oberhuber (Wind River) - [436612] Restore Eclipse 3.4 compatibility
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.preferences;
+
+import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
+import org.eclipse.core.runtime.preferences.DefaultScope;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences;
+import org.eclipse.jface.resource.StringConverter;
+import org.eclipse.tm.internal.terminal.control.impl.TerminalPlugin;
+import org.eclipse.tm.internal.terminal.preferences.TerminalColorPresets.Preset;
+import org.eclipse.tm.terminal.model.TerminalColor;
+
+/**
+ * Terminal Preference Initializer.
+ *
+ * @noextend This class is not intended to be subclassed by clients.
+ * @noinstantiate This class is not intended to be instantiated by clients.
+ * @noreference This class is not intended to be referenced by clients.
+ */
+public class TerminalPreferenceInitializer extends AbstractPreferenceInitializer {
+
+ public TerminalPreferenceInitializer() {
+ }
+
+ @Override
+ public void initializeDefaultPreferences() {
+ //DefaultScope.INSTANCE was added in Eclipse 3.7
+ IEclipsePreferences defaultPrefs = DefaultScope.INSTANCE.getNode(TerminalPlugin.PLUGIN_ID);
+ defaultPrefs.putBoolean(ITerminalConstants.PREF_INVERT_COLORS, ITerminalConstants.DEFAULT_INVERT_COLORS);
+ defaultPrefs.putInt(ITerminalConstants.PREF_BUFFERLINES, ITerminalConstants.DEFAULT_BUFFERLINES);
+ defaultPrefs.put(ITerminalConstants.PREF_FONT_DEFINITION, ITerminalConstants.DEFAULT_FONT_DEFINITION);
+
+ Preset defaultPresets = TerminalColorPresets.INSTANCE.getDefaultPreset();
+ TerminalColor[] colors = TerminalColor.values();
+ for (TerminalColor color : colors) {
+ defaultPrefs.put(ITerminalConstants.getPrefForTerminalColor(color),
+ StringConverter.asString(defaultPresets.getRGB(color)));
+ }
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/preferences/TerminalPreferencePage.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/preferences/TerminalPreferencePage.java
new file mode 100644
index 00000000000..27888302669
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/preferences/TerminalPreferencePage.java
@@ -0,0 +1,89 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Initial Contributors:
+ * The following Wind River employees contributed to the Terminal component
+ * that contains this file: Chris Thew, Fran Litterio, Stephen Lamb,
+ * Helmut Haigermoser and Ted Williams.
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - split into core, view and connector plugins
+ * Martin Oberhuber (Wind River) - fixed copyright headers and beautified
+ * Martin Oberhuber (Wind River) - [378691][api] push Preferences into the Widget
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.preferences;
+
+import org.eclipse.jface.preference.BooleanFieldEditor;
+import org.eclipse.jface.preference.FieldEditorPreferencePage;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.preference.IntegerFieldEditor;
+import org.eclipse.tm.internal.terminal.control.impl.TerminalMessages;
+import org.eclipse.tm.internal.terminal.control.impl.TerminalPlugin;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPreferencePage;
+
+/**
+ * Terminal Preference Page.
+ *
+ * @noextend This class is not intended to be subclassed by clients.
+ * @noinstantiate This class is not intended to be instantiated by clients.
+ * @noreference This class is not intended to be referenced by clients.
+ */
+public class TerminalPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {
+
+ private TerminalColorsFieldEditor terminalColorsFieldEditor;
+
+ public TerminalPreferencePage() {
+ super(GRID);
+ }
+
+ @Override
+ protected void createFieldEditors() {
+ setupPage();
+ }
+
+ @Override
+ public void init(IWorkbench workbench) {
+ // do nothing
+ }
+
+ protected void setupPage() {
+ setupData();
+ setupEditors();
+ }
+
+ protected void setupData() {
+ TerminalPlugin plugin;
+ IPreferenceStore preferenceStore;
+
+ plugin = TerminalPlugin.getDefault();
+ preferenceStore = plugin.getPreferenceStore();
+ setPreferenceStore(preferenceStore);
+ }
+
+ protected void setupEditors() {
+ addField(new BooleanFieldEditor(ITerminalConstants.PREF_INVERT_COLORS, TerminalMessages.INVERT_COLORS,
+ getFieldEditorParent()));
+
+ addField(new IntegerFieldEditor(ITerminalConstants.PREF_BUFFERLINES, TerminalMessages.BUFFERLINES,
+ getFieldEditorParent()));
+
+ terminalColorsFieldEditor = new TerminalColorsFieldEditor(getFieldEditorParent());
+ addField(terminalColorsFieldEditor);
+ }
+
+ @Override
+ public void dispose() {
+ if (terminalColorsFieldEditor != null) {
+ terminalColorsFieldEditor.dispose();
+ }
+
+ super.dispose();
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/provisional/api/AbstractSettingsPage.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/provisional/api/AbstractSettingsPage.java
new file mode 100644
index 00000000000..971e30e05f1
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/provisional/api/AbstractSettingsPage.java
@@ -0,0 +1,176 @@
+/*******************************************************************************
+ * Copyright (c) 2013, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.provisional.api;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.ListenerList;
+import org.eclipse.jface.dialogs.IMessageProvider;
+import org.eclipse.jface.fieldassist.ControlDecoration;
+import org.eclipse.jface.fieldassist.FieldDecoration;
+import org.eclipse.jface.fieldassist.FieldDecorationRegistry;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Control;
+
+/**
+ * Abstract settings page providing a common implementation of the listener handling.
+ */
+public abstract class AbstractSettingsPage implements ISettingsPage, IMessageProvider {
+ // A message associated with the control.
+ private String message = null;
+
+ // The message type of the associated message.
+ private int messageType = IMessageProvider.NONE;
+
+ // Reference to the listener
+ private final ListenerList<Listener> listeners = new ListenerList<>();
+
+ // Flag to control the control decorations
+ private boolean hasDecoration = false;
+
+ @Override
+ public void addListener(Listener listener) {
+ Assert.isNotNull(listener);
+ listeners.add(listener);
+ }
+
+ @Override
+ public void removeListener(Listener listener) {
+ Assert.isNotNull(listener);
+ listeners.remove(listener);
+ }
+
+ /**
+ * Fire the listeners for the given control.
+ *
+ * @param control The control or <code>null</code>.
+ */
+ public void fireListeners(Control control) {
+ Object[] list = listeners.getListeners();
+ for (int i = 0; i < list.length; i++) {
+ Object l = list[i];
+ if (!(l instanceof Listener))
+ continue;
+ ((Listener) l).onSettingsPageChanged(control);
+ }
+ }
+
+ @Override
+ public final String getMessage() {
+ return message;
+ }
+
+ @Override
+ public final int getMessageType() {
+ return messageType;
+ }
+
+ /**
+ * Set the message and the message type.
+ *
+ * @param message The message or <code>null</code>.
+ * @param messageType The type of the message (NONE, INFORMATION, WARNING, ERROR).
+ */
+ public final void setMessage(String message, int messageType) {
+ this.message = message;
+ this.messageType = messageType;
+ }
+
+ /**
+ * Sets if or if not the settings panel widgets will have control decorations
+ * or not. The method has effect only if called before {@link #createControl(org.eclipse.swt.widgets.Composite)}.
+ *
+ * @param value <code>True</code> if the panel widgets have control decorations, <code>false</code> otherwise.
+ */
+ public final void setHasControlDecoration(boolean value) {
+ this.hasDecoration = value;
+ }
+
+ /**
+ * Returns if or if not the settings panel widgets will have control
+ * decorations or not.
+ *
+ * @return <code>True</code> if the panel widgets have control decorations, <code>false</code> otherwise.
+ */
+ protected final boolean hasControlDecoration() {
+ return hasDecoration;
+ }
+
+ /**
+ * Creates a new instance of a {@link ControlDecoration} object associated with
+ * the given control. The method is called after the control has been created.
+ *
+ * @param control The control. Must not be <code>null</code>.
+ * @return The control decoration object instance.
+ */
+ protected final ControlDecoration createControlDecoration(Control control) {
+ Assert.isNotNull(control);
+ if (!hasDecoration)
+ return null;
+ ControlDecoration controlDecoration = new ControlDecoration(control, getControlDecorationPosition());
+ controlDecoration.setShowOnlyOnFocus(false);
+ control.setData("controlDecoration", controlDecoration); //$NON-NLS-1$
+ return controlDecoration;
+ }
+
+ /**
+ * Returns the control decoration position. The default is
+ * {@link SWT#TOP} | {@link SWT#LEFT}.
+ *
+ * @return The control position.
+ */
+ protected int getControlDecorationPosition() {
+ return SWT.TOP | SWT.LEFT;
+ }
+
+ /**
+ * Updates the control decoration of the given control to represent the given message
+ * and message type. If the message is <code>null</code> or the message type is
+ * {@link IMessageProvider#NONE} no decoration will be shown.
+ *
+ * @param control The control. Must not be <code>null</code>.
+ * @param message The message.
+ * @param messageType The message type.
+ */
+ protected final void updateControlDecoration(Control control, String message, int messageType) {
+ Assert.isNotNull(control);
+
+ ControlDecoration controlDecoration = (ControlDecoration) control.getData("controlDecoration"); //$NON-NLS-1$
+ if (controlDecoration != null) {
+ // The description is the same as the message
+ controlDecoration.setDescriptionText(message);
+
+ // The icon depends on the message type
+ FieldDecorationRegistry registry = FieldDecorationRegistry.getDefault();
+
+ // Determine the id of the decoration to show
+ String decorationId = FieldDecorationRegistry.DEC_INFORMATION;
+ if (messageType == IMessageProvider.ERROR) {
+ decorationId = FieldDecorationRegistry.DEC_ERROR;
+ } else if (messageType == IMessageProvider.WARNING) {
+ decorationId = FieldDecorationRegistry.DEC_WARNING;
+ }
+
+ // Get the field decoration
+ FieldDecoration fieldDeco = registry.getFieldDecoration(decorationId);
+ if (fieldDeco != null) {
+ controlDecoration.setImage(fieldDeco.getImage());
+ }
+
+ if (message == null || messageType == IMessageProvider.NONE) {
+ controlDecoration.hide();
+ } else {
+ controlDecoration.show();
+ }
+ }
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/provisional/api/ISettingsPage.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/provisional/api/ISettingsPage.java
new file mode 100644
index 00000000000..33e895a0578
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/provisional/api/ISettingsPage.java
@@ -0,0 +1,82 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ * Martin Oberhuber (Wind River) - fixed copyright headers and beautified
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.provisional.api;
+
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+
+/**
+ * @author Michael Scharf
+ *
+ * TODO: Michael Scharf: provide a long description of a wizard
+ * TODO: Michael Scharf: allow multiple pages to be generated
+ * <p>
+ * <strong>EXPERIMENTAL</strong>. This class or interface has been added as
+ * part of a work in progress. There is no guarantee that this API will
+ * work or that it will remain the same. Please do not use this API without
+ * consulting with the <a href="http://www.eclipse.org/tm/">Target Management</a> team.
+ * </p>
+ */
+public interface ISettingsPage {
+
+ public interface Listener {
+
+ /**
+ * Invoked by settings page controls to signal that the settings page
+ * changed and page container may update their state.
+ *
+ * @param control The control which triggered the event or <code>null</code>
+ */
+ public void onSettingsPageChanged(Control control);
+ }
+
+ /**
+ * Create a page to be shown in a dialog or wizard to setup the connection.
+ * @param parent
+ */
+ void createControl(Composite parent);
+
+ /**
+ * Called before the page is shown. Loads the state from the {@link ITerminalConnector}.
+ */
+ void loadSettings();
+
+ /**
+ * Called when the OK button is pressed.
+ */
+ void saveSettings();
+
+ /**
+ * @return true if the
+ */
+ boolean validateSettings();
+
+ /**
+ * Adds the given listener.
+ * <p>
+ * Has not effect if the same listener is already registered.
+ *
+ * @param listener The listener. Must not be <code>null</code>.
+ */
+ public void addListener(Listener listener);
+
+ /**
+ * Removes the given listener.
+ * <p>
+ * Has no effect if the same listener was not registered.
+ *
+ * @param listener The listener. Must not be <code>null</code>.
+ */
+ public void removeListener(Listener listener);
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/provisional/api/ISettingsStore.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/provisional/api/ISettingsStore.java
new file mode 100644
index 00000000000..71cfc58164b
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/provisional/api/ISettingsStore.java
@@ -0,0 +1,45 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ * Martin Oberhuber (Wind River) - fixed copyright headers and beautified
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.provisional.api;
+
+/**
+ * A simple interface to a store to persist the state of a connection.
+ *
+ * @author Michael Scharf
+ * <p>
+ * <strong>EXPERIMENTAL</strong>. This class or interface has been added as
+ * part of a work in progress. There is no guarantee that this API will
+ * work or that it will remain the same. Please do not use this API without
+ * consulting with the <a href="http://www.eclipse.org/tm/">Target Management</a> team.
+ * </p>
+ */
+public interface ISettingsStore {
+ /**
+ * @param key alpha numeric key, may contain dots (.)
+ * @return value
+ */
+ String get(String key);
+
+ /**
+ * @param key alpha numeric key, may contain dots (.)
+ * @param defaultValue
+ * @return the value or the default
+ */
+ String get(String key, String defaultValue);
+
+ /**
+ * Save a string value
+ * @param key alpha numeric key, may contain dots (.)
+ * @param value
+ */
+ void put(String key, String value);
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/provisional/api/ITerminalConnector.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/provisional/api/ITerminalConnector.java
new file mode 100644
index 00000000000..d1a5fe55f70
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/provisional/api/ITerminalConnector.java
@@ -0,0 +1,158 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ * Martin Oberhuber (Wind River) - fixed copyright headers and beautified
+ * Martin Oberhuber (Wind River) - [261486][api][cleanup] Mark @noimplement interfaces as @noextend
+ * Uwe Stieber (Wind River) - [282996] [terminal][api] Add "hidden" attribute to terminal connector extension point
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.provisional.api;
+
+import java.io.OutputStream;
+import java.util.Optional;
+
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.tm.internal.terminal.control.ITerminalViewControl;
+import org.eclipse.tm.internal.terminal.provisional.api.provider.TerminalConnectorImpl;
+
+/**
+ * A contributed connection type to manage a single connection.
+ *
+ * Implementations of this class are contributed through the
+ * <code>org.eclipse.tm.terminal.control.connectors</code> extension point. This
+ * class gives access to the static markup of a terminal connector extension as
+ * well as providing the lifecycle management for the dynamically loaded
+ * {@link TerminalConnectorImpl} instance, which performs the actual
+ * communications. This pattern allows for lazy initialization, bundle
+ * activation and class loading of the actual {@link TerminalConnectorImpl}
+ * instance.
+ *
+ * Clients can get terminal connector instances from the
+ * {@link TerminalConnectorExtension} class, or from
+ * {@link ITerminalViewControl#getTerminalConnector()} when running inside an
+ * active terminal widget.
+ *
+ * @noimplement This interface is not intended to be implemented by clients.
+ * @noextend This interface is not intended to be extended by clients.
+ *
+ * @author Michael Scharf
+ * <p>
+ * <strong>EXPERIMENTAL</strong>. This class or interface has been added
+ * as part of a work in progress. There is no guarantee that this API
+ * will work or that it will remain the same. Please do not use this API
+ * without consulting with the <a
+ * href="http://www.eclipse.org/tm/">Target Management</a> team.
+ * </p>
+ */
+public interface ITerminalConnector extends IAdaptable {
+ /**
+ * @return an ID of this connector. The id from the plugin.xml.
+ * @since org.eclipse.tm.terminal 2.0
+ */
+ String getId();
+
+ /**
+ * @return <code>null</code> the name (as specified in the plugin.xml)
+ * @since org.eclipse.tm.terminal 2.0
+ */
+ String getName();
+
+ /**
+ * @return <code>True</code> if the connector is not visible in user
+ * selections.
+ * @since org.eclipse.tm.terminal 3.0.1
+ */
+ boolean isHidden();
+
+ /**
+ * @return true if the {@link TerminalConnectorImpl} has been initialized.
+ * If there was an initialization error, {@link #getInitializationErrorMessage()}
+ * returns the error message.
+ * @since org.eclipse.tm.terminal 2.0
+ */
+ boolean isInitialized();
+
+ /**
+ * This method initializes the connector if it is not initialized!
+ * If the connector was initialized successfully, <code>null</code> is
+ * returned. Otherwise an error message describing the problem is returned.
+ * @return <code>null</code> or a localized error message.
+ * @since org.eclipse.tm.terminal 2.0
+ */
+ String getInitializationErrorMessage();
+
+ /**
+ * Connect using the current state of the settings.
+ * @param control Used to inform the UI about state changes and messages from the connection.
+ */
+ void connect(ITerminalControl control);
+
+ /**
+ * Disconnect if connected. Else do nothing.
+ */
+ void disconnect();
+
+ /**
+ * @return true if a local echo is needed.
+ * TODO:Michael Scharf: this should be handed within the connection....
+ */
+ boolean isLocalEcho();
+
+ /**
+ * Notify the remote site that the size of the terminal has changed.
+ * @param newWidth
+ * @param newHeight
+ */
+ void setTerminalSize(int newWidth, int newHeight);
+
+ /**
+ * @return the terminal to remote stream (bytes written to this stream will
+ * be sent to the remote site). For the stream in the other direction (remote to
+ * terminal see {@link ITerminalControl#getRemoteToTerminalOutputStream()}
+ * @since org.eclipse.tm.terminal 2.0
+ */
+ OutputStream getTerminalToRemoteStream();
+
+ /**
+ * Load the state of this connection. Is typically called before
+ * {@link #connect(ITerminalControl)}.
+ *
+ * @param store a string based data store. Short keys like "foo" can be used to
+ * store the state of the connection.
+ */
+ void load(ISettingsStore store);
+
+ /**
+ * When the view or dialog containing the terminal is closed,
+ * the state of the connection is saved into the settings store <code>store</code>
+ * @param store
+ */
+ void save(ISettingsStore store);
+
+ /**
+ * Set or reset the settings store to the default values.
+ */
+ void setDefaultSettings();
+
+ /**
+ * @return A string that represents the settings of the connection. This representation
+ * may be shown in the status line of the terminal view.
+ */
+ String getSettingsSummary();
+
+ /**
+ * @return An optional with the absolute path if available of the current working dir, empty otherwise.
+ * @since 5.2
+ */
+ default Optional<String> getWorkingDirectory() {
+ return Optional.empty();
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/provisional/api/ITerminalControl.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/provisional/api/ITerminalControl.java
new file mode 100644
index 00000000000..267f7ac5f11
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/provisional/api/ITerminalControl.java
@@ -0,0 +1,203 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ * Martin Oberhuber (Wind River) - fixed copyright headers and beautified
+ * Martin Oberhuber (Wind River) - [204796] Terminal should allow setting the encoding to use
+ * Martin Oberhuber (Wind River) - [261486][api][cleanup] Mark @noimplement interfaces as @noextend
+ * Anton Leherbauer (Wind River) - [433751] Add option to enable VT100 line wrapping mode
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.provisional.api;
+
+import java.io.OutputStream;
+import java.io.UnsupportedEncodingException;
+import java.nio.charset.Charset;
+
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Shell;
+
+/**
+ * Represents the terminal view as seen by a terminal connection.
+ * <p>
+ * <strong>EXPERIMENTAL</strong>. This class or interface has been added as part
+ * of a work in progress. There is no guarantee that this API will work or that
+ * it will remain the same. Please do not use this API without consulting with
+ * the <a href="http://www.eclipse.org/tm/">Target Management</a> team.
+ * </p>
+ *
+ * @author Michael Scharf
+ * @noimplement This interface is not intended to be implemented by clients.
+ * @noextend This interface is not intended to be extended by clients.
+ */
+public interface ITerminalControl {
+
+ /**
+ * @return the current state of the connection
+ */
+ TerminalState getState();
+
+ /**
+ * @param state
+ */
+ void setState(TerminalState state);
+
+ /**
+ * Setup the terminal control within the given parent composite.
+ *
+ * @param parent The parent composite. Must not be <code>null</code>.
+ */
+ void setupTerminal(Composite parent);
+
+ /**
+ * A shell to show dialogs.
+ * @return the shell in which the terminal is shown.
+ */
+ Shell getShell();
+
+ /**
+ * Set the encoding that the Terminal uses to decode bytes from the
+ * Terminal-to-remote-Stream into Unicode Characters used in Java; or, to
+ * encode Characters typed by the user into bytes sent over the wire to the
+ * remote.
+ *
+ * By default, the local Platform Default Encoding is used. Also note that
+ * the encoding must not be applied in case the terminal stream is processed
+ * by some data transfer protocol which requires binary data.
+ *
+ * Validity of the encoding set here is not checked. Since some encodings do
+ * not cover the entire range of Unicode characters, it can happen that a
+ * particular Unicode String typed in by the user can not be encoded into a
+ * byte Stream with the encoding specified. and UnsupportedEncodingException
+ * will be thrown in this case at the time the String is about to be
+ * processed.
+ *
+ * The concrete encoding to use can either be specified manually by a user,
+ * by means of a dialog, or a connector can try to obtain it automatically
+ * from the remote side e.g. by evaluating an environment variable such as
+ * LANG on UNIX systems.
+ *
+ * @since org.eclipse.tm.terminal 2.0
+ * @deprecated Use {@link #setCharset(Charset)} and do the error handling in the UI code.
+ */
+ @Deprecated
+ void setEncoding(String encoding) throws UnsupportedEncodingException;
+
+ /**
+ * Set the charset that the Terminal uses to decode bytes from the
+ * Terminal-to-remote-Stream into Unicode Characters used in Java; or, to
+ * encode Characters typed by the user into bytes sent over the wire to the
+ * remote.
+ *
+ * By default, the local Platform Default charset is used. Also note that
+ * the encoding must not be applied in case the terminal stream is processed
+ * by some data transfer protocol which requires binary data.
+ *
+ * Validity of the charset set here is not checked. Since some encodings do
+ * not cover the entire range of Unicode characters, it can happen that a
+ * particular Unicode String typed in by the user can not be encoded into a
+ * byte Stream with the encoding specified. and UnsupportedEncodingException
+ * will be thrown in this case at the time the String is about to be
+ * processed.
+ *
+ * The concrete encoding to use can either be specified manually by a user,
+ * by means of a dialog, or a connector can try to obtain it automatically
+ * from the remote side e.g. by evaluating an environment variable such as
+ * LANG on UNIX systems.
+ *
+ * @param charset Charset to use, or <code>null</code> for platform's default charset.
+ *
+ * @since 5.3
+ */
+ void setCharset(Charset charset);
+
+ /**
+ * Return the current encoding. That's interesting when the previous
+ * setEncoding() call failed and the fallback default encoding should be
+ * queried, such that e.g. a combobox with encodings to choose can be
+ * properly initialized.
+ *
+ * @return the current Encoding of the Terminal.
+ * @since org.eclipse.tm.terminal 2.0
+ * @deprecated Use {@link #getCharset()} and call {@link Charset#name()} on the result
+ */
+ @Deprecated
+ String getEncoding();
+
+ /**
+ * Return the current charset.
+ *
+ * @return the non-<code>null</code> current charset of the Terminal
+ * @since 5.3
+ */
+ Charset getCharset();
+
+ /**
+ * Show a text in the terminal. If puts newlines at the beginning and the
+ * end.
+ *
+ * @param text TODO: Michael Scharf: Is this really needed?
+ */
+ void displayTextInTerminal(String text);
+
+ /**
+ * @return a stream used to write to the terminal. Any bytes written to this
+ * stream appear in the terminal or are interpreted by the emulator as
+ * control sequences. The stream in the opposite direction, terminal
+ * to remote is in {@link ITerminalConnector#getTerminalToRemoteStream()}.
+ */
+ OutputStream getRemoteToTerminalOutputStream();
+
+ /**
+ * Set the title of the terminal view.
+ * @param title
+ */
+ void setTerminalTitle(String title);
+
+ /**
+ * Show an error message during connect.
+ * @param msg
+ * TODO: Michael Scharf: Should be replaced by a better error notification mechanism!
+ */
+ void setMsg(String msg);
+
+ /**
+ * Sets if or if not the terminal view control should try to reconnect
+ * the terminal connection if the user hits ENTER in a closed terminal.
+ * <p>
+ * Reconnect on ENTER if terminal is closed is enabled by default.
+ *
+ * @param on <code>True</code> to enable the reconnect, <code>false</code> to disable it.
+ */
+ void setConnectOnEnterIfClosed(boolean on);
+
+ /**
+ * Returns if or if not the terminal view control should try to reconnect
+ * the terminal connection if the user hits ENTER in a closed terminal.
+ *
+ * @return <code>True</code> the reconnect is enabled, <code>false</code> if disabled.
+ */
+ boolean isConnectOnEnterIfClosed();
+
+ /**
+ * Enables VT100 line wrapping mode (default is off).
+ * This corresponds to the VT100 'eat_newline_glitch' terminal capability.
+ * If enabled, writing to the rightmost column does not cause
+ * an immediate wrap to the next line. Instead the line wrap occurs on the
+ * next output character.
+ *
+ * @param enable whether to enable or disable VT100 line wrapping mode
+ */
+ void setVT100LineWrapping(boolean enable);
+
+ /**
+ * @return whether VT100 line wrapping mode is enabled
+ */
+ boolean isVT100LineWrapping();
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/provisional/api/Logger.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/provisional/api/Logger.java
new file mode 100644
index 00000000000..36096598ac4
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/provisional/api/Logger.java
@@ -0,0 +1,247 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Fran Litterio (Wind River) - initial API and implementation
+ * Ted Williams (Wind River) - refactored into org.eclipse namespace
+ * Michael Scharf (Wind River) - split into core, view and connector plugins
+ * Martin Oberhuber (Wind River) - fixed copyright headers and beautified
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.provisional.api;
+
+import java.io.FileOutputStream;
+import java.io.PrintStream;
+import java.lang.StackWalker.StackFrame;
+import java.util.Optional;
+
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.tm.internal.terminal.control.impl.TerminalPlugin;
+
+/**
+ * A simple logger class. Every method in this class is static, so they can be
+ * called from both class and instance methods. To use this class, write code
+ * like this:
+ * <p>
+ *
+ * <pre>
+ * Logger.log(&quot;something has happened&quot;);
+ * Logger.log(&quot;counter is &quot; + counter);
+ * </pre>
+ *
+ * @author Fran Litterio <francis.litterio@windriver.com>
+ * <p>
+ * <strong>EXPERIMENTAL</strong>. This class or interface has been added as
+ * part of a work in progress. There is no guarantee that this API will
+ * work or that it will remain the same. Please do not use this API without
+ * consulting with the <a href="http://www.eclipse.org/tm/">Target Management</a> team.
+ * </p>
+ */
+public final class Logger {
+ public static final String TRACE_DEBUG_LOG = "org.eclipse.tm.terminal.control/debug/log"; //$NON-NLS-1$
+ public static final String TRACE_DEBUG_LOG_CHAR = "org.eclipse.tm.terminal.control/debug/log/char"; //$NON-NLS-1$
+ public static final String TRACE_DEBUG_LOG_VT100BACKEND = "org.eclipse.tm.terminal.control/debug/log/VT100Backend"; //$NON-NLS-1$
+ /** @since 5.2 */
+ public static final String TRACE_DEBUG_LOG_HOVER = "org.eclipse.tm.terminal.control/debug/log/hover"; //$NON-NLS-1$
+
+ private static PrintStream logStream;
+ private static StackWalker walker = StackWalker.getInstance(StackWalker.Option.RETAIN_CLASS_REFERENCE);
+
+ private static boolean underTest = false;
+
+ /**
+ * When underTest we want exception that are deep inside the code to be surfaced to the test
+ * @noreference This method is not intended to be referenced by clients.
+ */
+ public static void setUnderTest(boolean underTest) {
+ Logger.underTest = underTest;
+ }
+
+ static {
+ // Any of the known debugging options turns on the creation of the log file
+ boolean createLogFile = TerminalPlugin.isOptionEnabled(TRACE_DEBUG_LOG)
+ || TerminalPlugin.isOptionEnabled(TRACE_DEBUG_LOG_CHAR)
+ || TerminalPlugin.isOptionEnabled(TRACE_DEBUG_LOG_VT100BACKEND)
+ || TerminalPlugin.isOptionEnabled(TRACE_DEBUG_LOG_HOVER);
+
+ // Log only if tracing is enabled
+ if (createLogFile && TerminalPlugin.getDefault() != null) {
+ IPath logFile = Platform.getStateLocation(TerminalPlugin.getDefault().getBundle());
+ if (logFile != null && logFile.toFile().isDirectory()) {
+ logFile = logFile.append("tmterminal.log"); //$NON-NLS-1$
+ try {
+ logStream = new PrintStream(new FileOutputStream(logFile.toFile(), true));
+ } catch (Exception ex) {
+ logStream = System.err;
+ logStream.println("Exception when opening log file -- logging to stderr!"); //$NON-NLS-1$
+ ex.printStackTrace(logStream);
+ }
+ }
+ }
+ }
+
+ /**
+ * Encodes a String such that non-printable control characters are
+ * converted into user-readable escape sequences for logging.
+ * @param message String to encode
+ * @return encoded String
+ */
+ public static final String encode(String message) {
+ boolean encoded = false;
+ StringBuffer buf = new StringBuffer(message.length() + 32);
+ for (int i = 0; i < message.length(); i++) {
+ char c = message.charAt(i);
+ switch (c) {
+ case '\\':
+ case '\'':
+ buf.append('\\');
+ buf.append(c);
+ encoded = true;
+ break;
+ case '\r':
+ buf.append('\\');
+ buf.append('r');
+ encoded = true;
+ break;
+ case '\n':
+ buf.append('\\');
+ buf.append('n');
+ encoded = true;
+ break;
+ case '\t':
+ buf.append('\\');
+ buf.append('t');
+ encoded = true;
+ break;
+ case '\f':
+ buf.append('\\');
+ buf.append('f');
+ encoded = true;
+ break;
+ case '\b':
+ buf.append('\\');
+ buf.append('b');
+ encoded = true;
+ break;
+ default:
+ if (c <= '\u000f') {
+ buf.append('\\');
+ buf.append('x');
+ buf.append('0');
+ buf.append(Integer.toHexString(c));
+ encoded = true;
+ } else if (c >= ' ' && c < '\u007f') {
+ buf.append(c);
+ } else if (c <= '\u00ff') {
+ buf.append('\\');
+ buf.append('x');
+ buf.append(Integer.toHexString(c));
+ encoded = true;
+ } else {
+ buf.append('\\');
+ buf.append('u');
+ if (c <= '\u0fff') {
+ buf.append('0');
+ }
+ buf.append(Integer.toHexString(c));
+ encoded = true;
+ }
+ }
+ }
+ if (encoded) {
+ return buf.toString();
+ }
+ return message;
+ }
+
+ /**
+ * Checks if logging is enabled.
+ * @return true if logging is enabled.
+ */
+ public static final boolean isLogEnabled() {
+ return (logStream != null);
+ }
+
+ /**
+ * Logs the specified message. Do not append a newline to parameter
+ * <i>message</i>. This method does that for you.
+ *
+ * Does not write to the message to the Eclipse log
+ *
+ * @param message A String containing the message to log.
+ */
+ public static final void log(String message) {
+ if (logStream != null) {
+ logStream.println(getCallSiteDescription() + ": " + message); //$NON-NLS-1$
+ logStream.flush();
+ }
+ }
+
+ /**
+ * Writes an error message to the Terminal log and the Eclipse log
+ * @since 5.2
+ */
+ public static final void logError(String message) {
+ logStatus(new Status(IStatus.ERROR, TerminalPlugin.PLUGIN_ID, IStatus.OK, message, null));
+ }
+
+ /**
+ * Writes an exception to the Terminal log and the Eclipse log
+ */
+ public static final void logException(Exception ex) {
+ if (underTest) {
+ throw new RuntimeException("Terminal Under Test - examine cause for real failure", ex); //$NON-NLS-1$
+ }
+ logStatus(new Status(IStatus.ERROR, TerminalPlugin.PLUGIN_ID, IStatus.OK, ex.getMessage(), ex));
+ }
+
+ /**
+ * Writes a Status to the Terminal log and the Eclipse log
+ * @since 5.2
+ */
+ public static final void logStatus(IStatus status) {
+ // log in eclipse error log
+ if (TerminalPlugin.getDefault() != null) {
+ TerminalPlugin.getDefault().getLog().log(status);
+ } else {
+ System.err.println(status);
+ if (status.getException() != null) {
+ status.getException().printStackTrace();
+ }
+ }
+ // Additional Tracing for debug purposes:
+ // Read my own stack to get the class name, method name, and line number
+ // of where this method was called
+ if (logStream != null) {
+ logStream.println(getCallSiteDescription() + ": " + //$NON-NLS-1$
+ status);
+ if (status.getException() != null) {
+ status.getException().printStackTrace(logStream);
+ }
+ }
+ }
+
+ /**
+ * Return a description string of the call site of this logging call for use in logged messages.
+ * This method will walk the stack to find the first method in the call stack not from the Logger
+ * class.
+ */
+ private static String getCallSiteDescription() {
+ Optional<StackFrame> stackFrame = walker
+ .walk(stream -> stream.filter(f -> f.getDeclaringClass() != Logger.class).findFirst());
+ int lineNumber = stackFrame.map(StackFrame::getLineNumber).orElse(0);
+ String className = stackFrame.map(StackFrame::getDeclaringClass).map(Class::getName)
+ .map(name -> name.substring(name.lastIndexOf('.') + 1)).orElse("UnknownClass"); //$NON-NLS-1$
+ String methodName = stackFrame.map(StackFrame::getMethodName).orElse("unknownMethod"); //$NON-NLS-1$
+ String locationString = className + "." + methodName + ":" + lineNumber; //$NON-NLS-1$//$NON-NLS-2$
+ return locationString;
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/provisional/api/NullSettingsStore.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/provisional/api/NullSettingsStore.java
new file mode 100644
index 00000000000..dc7d3b668ec
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/provisional/api/NullSettingsStore.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2015, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.provisional.api;
+
+/**
+ * A settings store implementation doing nothing.
+ */
+public class NullSettingsStore implements ISettingsStore {
+
+ @Override
+ public String get(String key) {
+ return null;
+ }
+
+ @Override
+ public String get(String key, String defaultValue) {
+ return defaultValue;
+ }
+
+ @Override
+ public void put(String key, String value) {
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/provisional/api/TerminalConnectorExtension.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/provisional/api/TerminalConnectorExtension.java
new file mode 100644
index 00000000000..1db1bbb54eb
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/provisional/api/TerminalConnectorExtension.java
@@ -0,0 +1,100 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ * Martin Oberhuber (Wind River) - fixed copyright headers and beautified
+ * Uwe Stieber (Wind River) - [282996] [terminal][api] Add "hidden" attribute to terminal connector extension point
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.provisional.api;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.RegistryFactory;
+import org.eclipse.tm.internal.terminal.connector.TerminalConnector;
+import org.eclipse.tm.internal.terminal.provisional.api.provider.TerminalConnectorImpl;
+
+/**
+ * A factory to get {@link ITerminalConnector} instances.
+ *
+ * @author Michael Scharf
+ *
+ * @noextend This class is not intended to be subclassed by clients.
+ * @noinstantiate This class is not intended to be instantiated by clients.
+ *
+ * <p>
+ * <strong>EXPERIMENTAL</strong>. This class or interface has been added as
+ * part of a work in progress. There is no guarantee that this API will work or
+ * that it will remain the same. Please do not use this API without consulting
+ * with the <a href="http://www.eclipse.org/tm/">Target Management</a>
+ * team.
+ * </p>
+ */
+public class TerminalConnectorExtension {
+ static private ITerminalConnector makeConnector(final IConfigurationElement config) {
+ String id = config.getAttribute("id"); //$NON-NLS-1$
+ if (id == null || id.length() == 0)
+ id = config.getAttribute("class"); //$NON-NLS-1$
+ String name = config.getAttribute("name"); //$NON-NLS-1$
+ if (name == null || name.length() == 0) {
+ name = id;
+ }
+ String hidden = config.getAttribute("hidden"); //$NON-NLS-1$
+ boolean isHidden = hidden != null ? Boolean.parseBoolean(hidden) : false;
+ TerminalConnector.Factory factory = () -> (TerminalConnectorImpl) config.createExecutableExtension("class"); //$NON-NLS-1$
+ return new TerminalConnector(factory, id, name, isHidden);
+ }
+
+ /**
+ * Return a specific terminal connector for a given connector id. The
+ * terminal connector is not yet instantiated to any real connection.
+ *
+ * @param id the id of the terminal connector in the
+ * <code>org.eclipse.tm.terminal.control.connectors</code>
+ * extension point
+ * @return a new ITerminalConnector with id or <code>null</code> if there
+ * is no extension with that id.
+ * @since org.eclipse.tm.terminal 2.0
+ */
+ public static ITerminalConnector makeTerminalConnector(String id) {
+ IConfigurationElement[] config = RegistryFactory.getRegistry()
+ .getConfigurationElementsFor("org.eclipse.tm.terminal.control.connectors"); //$NON-NLS-1$
+ for (int i = 0; i < config.length; i++) {
+ if (id.equals(config[i].getAttribute("id"))) { //$NON-NLS-1$
+ return makeConnector(config[i]);
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Return a list of available terminal connectors (connection types).
+ *
+ * The terminal connectors returned are not yet instantiated to any real
+ * connection. Each terminal connector can connect to one remote system at a
+ * time.
+ *
+ * @return a new list of {@link ITerminalConnector} instances defined in the
+ * <code>org.eclipse.tm.terminal.control.connectors</code>
+ * extension point
+ * @since org.eclipse.tm.terminal 2.0 return value is ITerminalConnector[]
+ */
+ public static ITerminalConnector[] makeTerminalConnectors() {
+ IConfigurationElement[] config = RegistryFactory.getRegistry()
+ .getConfigurationElementsFor("org.eclipse.tm.terminal.control.connectors"); //$NON-NLS-1$
+ List<ITerminalConnector> result = new ArrayList<>();
+ for (int i = 0; i < config.length; i++) {
+ result.add(makeConnector(config[i]));
+ }
+ return result.toArray(new ITerminalConnector[result.size()]);
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/provisional/api/TerminalState.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/provisional/api/TerminalState.java
new file mode 100644
index 00000000000..2304d0a6be1
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/provisional/api/TerminalState.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ * Martin Oberhuber (Wind River) - fixed copyright headers and beautified
+ * Michael Scharf (Wind River) - [262996] get rid of TerminalState.OPENED
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.provisional.api;
+
+/**
+ * Represent the sate of a terminal connection.
+ * In java 1.5 this would be an enum.
+ * @author Michael Scharf
+ *
+ * <p>
+ * <strong>EXPERIMENTAL</strong>. This class or interface has been added as
+ * part of a work in progress. There is no guarantee that this API will
+ * work or that it will remain the same. Please do not use this API without
+ * consulting with the <a href="http://www.eclipse.org/tm/">Target Management</a> team.
+ * </p>
+ */
+public class TerminalState {
+ /**
+ * The terminal is not connected.
+ */
+ public final static TerminalState CLOSED = new TerminalState("CLOSED"); //$NON-NLS-1$
+
+ /**
+ * The terminal is about to connect.
+ */
+ public final static TerminalState CONNECTING = new TerminalState("CONNECTING..."); //$NON-NLS-1$
+
+ /**
+ * The terminal is connected.
+ */
+ public final static TerminalState CONNECTED = new TerminalState("CONNECTED"); //$NON-NLS-1$
+
+ private final String fState;
+
+ public TerminalState(String state) {
+ fState = state;
+ }
+
+ @Override
+ public String toString() {
+ return fState;
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/provisional/api/provider/TerminalConnectorImpl.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/provisional/api/provider/TerminalConnectorImpl.java
new file mode 100644
index 00000000000..c19296bb725
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/provisional/api/provider/TerminalConnectorImpl.java
@@ -0,0 +1,163 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ * Martin Oberhuber (Wind River) - [225853][api] Provide more default functionality in TerminalConnectorImpl
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.provisional.api.provider;
+
+import java.io.OutputStream;
+import java.util.Optional;
+
+import org.eclipse.tm.internal.terminal.provisional.api.ISettingsStore;
+import org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl;
+import org.eclipse.tm.internal.terminal.provisional.api.Logger;
+import org.eclipse.tm.internal.terminal.provisional.api.TerminalState;
+
+/**
+ * Abstract base class for all terminal connector implementations to be
+ * registered via the <code>org.eclipse.tm.terminal.control.connectors</code>
+ * extension point.
+ *
+ * @since org.eclipse.tm.terminal 2.0
+ */
+public abstract class TerminalConnectorImpl {
+
+ /**
+ * The TerminalControl associated with this connector.
+ * Required for advertising state changes when needed.
+ */
+ protected ITerminalControl fControl;
+
+ /**
+ * Initialize this connector. This is called once after the constructor, in
+ * order to perform any required initializations such as loading required
+ * native libraries. Any work that may lead to runtime exceptions should be
+ * done in this method rather than in the constructor.
+ *
+ * @throws Exception when the connector fails to initialize (due to missing
+ * required libraries, for instance).
+ */
+ public void initialize() throws Exception {
+ }
+
+ /**
+ * Connect using the current state of the settings.
+ *
+ * This method is designed to be overridden by actual implementations, in
+ * order to open the streams required for communicating with the remote
+ * side. Extenders must call <code>super.connect(control)</code> as the
+ * first thing they are doing.
+ *
+ * @param control Used to inform the UI about state changes and messages
+ * from the connection.
+ */
+ public void connect(ITerminalControl control) {
+ Logger.log("entered."); //$NON-NLS-1$
+ fControl = control;
+ }
+
+ /**
+ * Disconnect if connected. Else do nothing. Has to set the state of the
+ * {@link ITerminalControl} when finished disconnecting.
+ */
+ public final void disconnect() {
+ Logger.log("entered."); //$NON-NLS-1$
+ doDisconnect();
+ fControl.setState(TerminalState.CLOSED);
+ }
+
+ /**
+ * Disconnect if connected. Else do nothing. Clients should override to
+ * perform any extra work needed for disconnecting.
+ */
+ protected void doDisconnect() {
+ // Do nothing by default
+ }
+
+ /**
+ * @return the terminal to remote stream (bytes written to this stream will
+ * be sent to the remote site). For the stream in the other direction (remote to
+ * terminal see {@link ITerminalControl#getRemoteToTerminalOutputStream()}
+ */
+ abstract public OutputStream getTerminalToRemoteStream();
+
+ /**
+ * @return A string that represents the settings of the connection. This representation
+ * may be shown in the status line of the terminal view.
+ */
+ abstract public String getSettingsSummary();
+
+ /**
+ * Test if local echo is needed. The default implementation returns
+ * <code>false</code>. Override to modify this behavior.
+ *
+ * @return true if a local echo is needed. TODO:Michael Scharf: this should
+ * be handed within the connection....
+ */
+ public boolean isLocalEcho() {
+ return false;
+ }
+
+ /**
+ * Set or reset the settings store to the default values.
+ */
+ public void setDefaultSettings() {
+ // do nothing by default
+ }
+
+ /**
+ * Load the state or settings of this connection. Is typically called before
+ * {@link #connect(ITerminalControl)}.
+ *
+ * Connectors that have nothing to configure do not need to implement this.
+ * Those terminals that do have configuration need to override this method
+ * to load settings.
+ *
+ * @param store a string based data store. Short keys like "foo" can be used
+ * to store the state of the connection.
+ */
+ public void load(ISettingsStore store) {
+ // do nothing by default
+ }
+
+ /**
+ * When the view or dialog containing the terminal is closed, the state of
+ * the connection is saved into the settings store <code>store</code>.
+ *
+ * Connectors that have no state or settings to persist do not need to
+ * override this. Others should override to persist their settings.
+ *
+ * @param store the store for persisting settings.
+ */
+ public void save(ISettingsStore store) {
+ // do nothing by default
+ }
+
+ /**
+ * Notify the remote site that the size of the terminal has changed.
+ *
+ * Concrete connectors should override this if they have the possibility to
+ * inform the remote about changed terminal size.
+ *
+ * @param newWidth the new width in characters.
+ * @param newHeight the new height in characters.
+ */
+ public void setTerminalSize(int newWidth, int newHeight) {
+ }
+
+ /**
+ * @since 5.2
+ */
+ public Optional<String> getWorkingDirectory() {
+ return Optional.empty();
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/textcanvas/AbstractTextCanvasModel.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/textcanvas/AbstractTextCanvasModel.java
new file mode 100644
index 00000000000..0d0e151a1a8
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/textcanvas/AbstractTextCanvasModel.java
@@ -0,0 +1,511 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ * Martin Oberhuber (Wind River) - [168197] Fix Terminal for CDC-1.1/Foundation-1.1
+ * Anton Leherbauer (Wind River) - [219589] Copy an entire line selection
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.textcanvas;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.tm.internal.terminal.control.impl.TerminalPlugin;
+import org.eclipse.tm.internal.terminal.provisional.api.Logger;
+import org.eclipse.tm.terminal.model.ITerminalTextDataReadOnly;
+import org.eclipse.tm.terminal.model.ITerminalTextDataSnapshot;
+import org.eclipse.tm.terminal.model.TextRange;
+
+abstract public class AbstractTextCanvasModel implements ITextCanvasModel {
+ private static final boolean DEBUG_HOVER = TerminalPlugin.isOptionEnabled(Logger.TRACE_DEBUG_LOG_HOVER);
+ protected List<ITextCanvasModelListener> fListeners = new ArrayList<>();
+ private int fCursorLine;
+ private int fCursorColumn;
+ private boolean fShowCursor;
+ private long fCursorTime;
+ private boolean fCursorIsEnabled;
+ private final ITerminalTextDataSnapshot fSnapshot;
+ private int fLines;
+
+ private int fSelectionStartLine = -1;
+ private int fSeletionEndLine;
+ private int fSelectionStartCoumn;
+ private int fSelectionEndColumn;
+ private ITerminalTextDataSnapshot fSelectionSnapshot;
+ private String fCurrentSelection = ""; //$NON-NLS-1$
+ private final Point fSelectionAnchor = new Point(0, 0);
+ /**
+ * do not update while update is running
+ */
+ boolean fInUpdate;
+ private int fCols;
+
+ private TextRange fHoverRange = TextRange.EMPTY;
+
+ public AbstractTextCanvasModel(ITerminalTextDataSnapshot snapshot) {
+ fSnapshot = snapshot;
+ fLines = fSnapshot.getHeight();
+ }
+
+ @Override
+ public void addCellCanvasModelListener(ITextCanvasModelListener listener) {
+ fListeners.add(listener);
+ }
+
+ @Override
+ public void removeCellCanvasModelListener(ITextCanvasModelListener listener) {
+ fListeners.remove(listener);
+ }
+
+ protected void fireCellRangeChanged(int x, int y, int width, int height) {
+ for (Iterator<ITextCanvasModelListener> iter = fListeners.iterator(); iter.hasNext();) {
+ ITextCanvasModelListener listener = iter.next();
+ listener.rangeChanged(x, y, width, height);
+ }
+ }
+
+ protected void fireDimensionsChanged(int width, int height) {
+ for (Iterator<ITextCanvasModelListener> iter = fListeners.iterator(); iter.hasNext();) {
+ ITextCanvasModelListener listener = iter.next();
+ listener.dimensionsChanged(width, height);
+ }
+
+ }
+
+ protected void fireTerminalDataChanged() {
+ for (Iterator<ITextCanvasModelListener> iter = fListeners.iterator(); iter.hasNext();) {
+ ITextCanvasModelListener listener = iter.next();
+ listener.terminalDataChanged();
+ }
+
+ }
+
+ @Override
+ public ITerminalTextDataReadOnly getTerminalText() {
+ return fSnapshot;
+ }
+
+ protected ITerminalTextDataSnapshot getSnapshot() {
+ return fSnapshot;
+ }
+
+ protected void updateSnapshot() {
+ if (!fInUpdate && fSnapshot.isOutOfDate()) {
+ fInUpdate = true;
+ try {
+ fSnapshot.updateSnapshot(false);
+ if (fSnapshot.hasTerminalChanged())
+ fireTerminalDataChanged();
+ // TODO why does hasDimensionsChanged not work??????
+ // if(fSnapshot.hasDimensionsChanged())
+ // fireDimensionsChanged();
+ if (fLines != fSnapshot.getHeight() || fCols != fSnapshot.getWidth()) {
+ fireDimensionsChanged(fSnapshot.getWidth(), fSnapshot.getHeight());
+ fLines = fSnapshot.getHeight();
+ fCols = fSnapshot.getWidth();
+ }
+ int y = fSnapshot.getFirstChangedLine();
+ // has any line changed?
+ if (y < Integer.MAX_VALUE) {
+ int height = fSnapshot.getLastChangedLine() - y + 1;
+ fireCellRangeChanged(0, y, fSnapshot.getWidth(), height);
+ }
+
+ } finally {
+ fInUpdate = false;
+ }
+ }
+ }
+
+ /**
+ * must be called from the UI thread
+ */
+ public void update() {
+ // do the poll....
+ updateSnapshot();
+ updateSelection();
+ updateCursor();
+ }
+
+ @Override
+ public int getCursorColumn() {
+ return fCursorColumn;
+ }
+
+ @Override
+ public int getCursorLine() {
+ return fCursorLine;
+ }
+
+ @Override
+ public boolean isCursorOn() {
+ return fShowCursor && fCursorIsEnabled;
+ }
+
+ /**
+ * should be called regularly to draw an update of the
+ * blinking cursor
+ */
+ protected void updateCursor() {
+ if (!fCursorIsEnabled)
+ return;
+ int cursorLine = getSnapshot().getCursorLine();
+ int cursorColumn = getSnapshot().getCursorColumn();
+ // if cursor at the end put it to the end of the
+ // last line...
+ if (cursorLine >= getSnapshot().getHeight()) {
+ cursorLine = getSnapshot().getHeight() - 1;
+ cursorColumn = getSnapshot().getWidth() - 1;
+ }
+ // has the cursor moved?
+ if (fCursorLine != cursorLine || fCursorColumn != cursorColumn) {
+ // hide the old cursor!
+ fShowCursor = false;
+ // clean the previous cursor
+ // bug 206363: paint also the char to the left and right of the cursor - see also below
+ int col = fCursorColumn;
+ int width = 2;
+ if (col > 0) {
+ col--;
+ width++;
+ }
+ fireCellRangeChanged(col, fCursorLine, width, 1);
+ // the cursor is shown when it moves!
+ fShowCursor = true;
+ fCursorTime = System.currentTimeMillis();
+ fCursorLine = cursorLine;
+ fCursorColumn = cursorColumn;
+ // and draw the new cursor
+ fireCellRangeChanged(fCursorColumn, fCursorLine, 1, 1);
+ } else {
+ long t = System.currentTimeMillis();
+ // TODO make the cursor blink time customisable
+ if (t - fCursorTime > 500) {
+ fShowCursor = !fShowCursor;
+ fCursorTime = t;
+ // on some windows machines, there is some left
+ // over when updating the cursor .
+ // https://bugs.eclipse.org/bugs/show_bug.cgi?id=206363
+ int col = fCursorColumn;
+ int width = 2;
+ if (col > 0) {
+ col--;
+ width++;
+ }
+ fireCellRangeChanged(col, fCursorLine, width, 1);
+ }
+ }
+ }
+
+ @Override
+ public void setVisibleRectangle(int startLine, int startCol, int height, int width) {
+ fSnapshot.setInterestWindow(Math.max(0, startLine), Math.max(1, height));
+ update();
+ }
+
+ protected void showCursor(boolean show) {
+ fShowCursor = true;
+ }
+
+ @Override
+ public void setCursorEnabled(boolean visible) {
+ fCursorTime = System.currentTimeMillis();
+ fShowCursor = visible;
+ fCursorIsEnabled = visible;
+ fireCellRangeChanged(fCursorColumn, fCursorLine, 1, 1);
+ }
+
+ @Override
+ public boolean isCursorEnabled() {
+ return fCursorIsEnabled;
+ }
+
+ @Override
+ public Point getSelectionEnd() {
+ if (fSelectionStartLine < 0)
+ return null;
+ else
+ return new Point(fSelectionEndColumn, fSeletionEndLine);
+ }
+
+ @Override
+ public Point getSelectionStart() {
+ if (fSelectionStartLine < 0)
+ return null;
+ else
+ return new Point(fSelectionStartCoumn, fSelectionStartLine);
+ }
+
+ @Override
+ public Point getSelectionAnchor() {
+ if (fSelectionStartLine < 0)
+ return null;
+ return new Point(fSelectionAnchor.x, fSelectionAnchor.y);
+ }
+
+ @Override
+ public void setSelectionAnchor(Point anchor) {
+ fSelectionAnchor.x = anchor.x;
+ fSelectionAnchor.y = anchor.y;
+ }
+
+ @Override
+ public void setSelection(int startLine, int endLine, int startColumn, int endColumn) {
+ // System.err.println(startLine+","+endLine+","+startColumn+","+endColumn);
+ doSetSelection(startLine, endLine, startColumn, endColumn);
+ fCurrentSelection = extractSelectedText();
+ }
+
+ private void doSetSelection(int startLine, int endLine, int startColumn, int endColumn) {
+ assert (startLine < 0 || startLine <= endLine);
+ if (startLine >= 0) {
+ if (fSelectionSnapshot == null) {
+ fSelectionSnapshot = fSnapshot.getTerminalTextData().makeSnapshot();
+ fSelectionSnapshot.updateSnapshot(true);
+ }
+ } else if (fSelectionSnapshot != null) {
+ fSelectionSnapshot.detach();
+ fSelectionSnapshot = null;
+ }
+ int oldStart = fSelectionStartLine;
+ int oldEnd = fSeletionEndLine;
+ fSelectionStartLine = startLine;
+ fSeletionEndLine = endLine;
+ fSelectionStartCoumn = startColumn;
+ fSelectionEndColumn = endColumn;
+ if (fSelectionSnapshot != null) {
+ fSelectionSnapshot.setInterestWindow(0, fSelectionSnapshot.getHeight());
+ }
+ int changedStart;
+ int changedEnd;
+ if (oldStart < 0) {
+ changedStart = fSelectionStartLine;
+ changedEnd = fSeletionEndLine;
+ } else if (fSelectionStartLine < 0) {
+ changedStart = oldStart;
+ changedEnd = oldEnd;
+ } else {
+ changedStart = Math.min(oldStart, fSelectionStartLine);
+ changedEnd = Math.max(oldEnd, fSeletionEndLine);
+ }
+ if (changedStart >= 0) {
+ fireCellRangeChanged(0, changedStart, fSnapshot.getWidth(), changedEnd - changedStart + 1);
+ }
+ }
+
+ @Override
+ public boolean hasLineSelection(int line) {
+ if (fSelectionStartLine < 0)
+ return false;
+ else
+ return line >= fSelectionStartLine && line <= fSeletionEndLine;
+ }
+
+ @Override
+ public String getSelectedText() {
+ return fCurrentSelection;
+ }
+
+ @Override
+ public boolean hasHoverSelection(int line) {
+ if (fHoverRange.isEmpty()) {
+ return false;
+ }
+ return fHoverRange.contains(line);
+ }
+
+ @Override
+ public Point getHoverSelectionStart() {
+ if (!fHoverRange.isEmpty()) {
+ return fHoverRange.getStart();
+ }
+ return null;
+ }
+
+ @Override
+ public Point getHoverSelectionEnd() {
+ // Note - to match behaviour of getSelectionEnd this method
+ // returns the inclusive end. As the fHoverRange is exclusive
+ // we need to decrement the end positions before returning them.
+ if (!fHoverRange.isEmpty()) {
+ Point end = fHoverRange.getEnd();
+ end.x--;
+ end.y--;
+ return end;
+ }
+ return null;
+ }
+
+ @Override
+ public void expandHoverSelectionAt(final int line, final int col) {
+ if (fHoverRange.contains(col, line)) {
+ // position is inside current hover range -> no change
+ return;
+ }
+ fHoverRange = TextRange.EMPTY;
+ if (line < 0 || line > fSnapshot.getHeight() || col < 0) {
+ return;
+ }
+ int row1 = line;
+ int row2 = line;
+ while (row1 > 0 && fSnapshot.isWrappedLine(row1 - 1))
+ row1--;
+ while (row2 < fSnapshot.getHeight() && fSnapshot.isWrappedLine(row2))
+ row2++;
+ row2++;
+ String lineText = ""; //$NON-NLS-1$
+ for (int l = row1; l < row2; l++) {
+ char[] chars = fSnapshot.getChars(l);
+ if (chars == null)
+ return;
+ lineText += String.valueOf(chars);
+ }
+ int width = fSnapshot.getWidth();
+ int col1 = col + (line - row1) * width;
+ if (lineText.length() <= col1 || isBoundaryChar(lineText.charAt(col1))) {
+ return;
+ }
+ int wordStart = 0;
+ int wordEnd = lineText.length();
+ for (int c = col1; c >= 1; c--) {
+ if (isBoundaryChar(lineText.charAt(c - 1))) {
+ wordStart = c;
+ break;
+ }
+ }
+ for (int c = col1; c < lineText.length(); c++) {
+ if (isBoundaryChar(lineText.charAt(c))) {
+ wordEnd = c;
+ break;
+ }
+ }
+ if (wordStart < wordEnd) {
+ fHoverRange = new TextRange(row1 + wordStart / width, row1 + (wordEnd - 1) / width + 1, (wordStart % width),
+ (wordEnd - 1) % width + 1, lineText.substring(wordStart, wordEnd));
+ if (DEBUG_HOVER) {
+ System.out.format("hover: %s <- [%s,%s][%s,%s]\n", //$NON-NLS-1$
+ fHoverRange, col, line, wordStart, wordEnd);
+ }
+ }
+ }
+
+ @Override
+ public String getHoverSelectionText() {
+ return fHoverRange.text;
+ }
+
+ private boolean isBoundaryChar(char c) {
+ return Character.isWhitespace(c) || (c < '\u0020') || c == '"' || c == '\'';
+ }
+
+ // helper to sanitize text copied out of a snapshot
+ private static String scrubLine(String text) {
+ // get rid of the empty space at the end of the lines
+ // text=text.replaceAll("\000+$",""); //$NON-NLS-1$//$NON-NLS-2$
+ // <J2ME-CDC-1.1 version>
+ int i = text.length() - 1;
+ while (i >= 0 && text.charAt(i) == '\000') {
+ i--;
+ }
+ text = text.substring(0, i + 1);
+ // </J2ME-CDC-1.1 version>
+ // null means space
+ return text.replace('\000', ' ');
+ }
+
+ /**
+ * Calculates the currently selected text
+ * @return the currently selected text
+ */
+ private String extractSelectedText() {
+ if (fSelectionStartLine < 0 || fSelectionStartCoumn < 0 || fSelectionSnapshot == null)
+ return ""; //$NON-NLS-1$
+ StringBuffer buffer = new StringBuffer();
+ for (int line = fSelectionStartLine; line <= fSeletionEndLine; line++) {
+ String text;
+ char[] chars = fSelectionSnapshot.getChars(line);
+ if (chars != null) {
+ text = new String(chars);
+ if (line == fSeletionEndLine && fSelectionEndColumn >= 0)
+ text = text.substring(0, Math.min(fSelectionEndColumn + 1, text.length()));
+ if (line == fSelectionStartLine)
+ text = text.substring(Math.min(fSelectionStartCoumn, text.length()));
+ text = scrubLine(text);
+ } else {
+ text = ""; //$NON-NLS-1$
+ }
+ buffer.append(text);
+ if (line < fSeletionEndLine && !fSelectionSnapshot.isWrappedLine(line))
+ buffer.append('\n');
+ }
+ return buffer.toString();
+ }
+
+ private void updateSelection() {
+ if (fSelectionSnapshot != null && fSelectionSnapshot.isOutOfDate()) {
+ fSelectionSnapshot.updateSnapshot(true);
+ // has the selection moved?
+ if (fSelectionSnapshot != null && fSelectionStartLine >= 0
+ && fSelectionSnapshot.getScrollWindowSize() > 0) {
+ int start = fSelectionStartLine + fSelectionSnapshot.getScrollWindowShift();
+ int end = fSeletionEndLine + fSelectionSnapshot.getScrollWindowShift();
+ if (start < 0)
+ if (end >= 0)
+ start = 0;
+ else
+ start = -1;
+ doSetSelection(start, end, fSelectionStartCoumn, fSelectionEndColumn);
+ }
+ // check if the content of the selection has changed. If the content has
+ // changed, clear the selection
+ if (fCurrentSelection.length() > 0 && fSelectionSnapshot != null
+ && fSelectionSnapshot.getFirstChangedLine() <= fSeletionEndLine
+ && fSelectionSnapshot.getLastChangedLine() >= fSelectionStartLine) {
+ // has the selected text changed?
+ if (!fCurrentSelection.equals(extractSelectedText())) {
+ setSelection(-1, -1, -1, -1);
+ }
+ }
+ // update the observed window...
+ if (fSelectionSnapshot != null)
+ // todo make -1 to work!
+ fSelectionSnapshot.setInterestWindow(0, fSelectionSnapshot.getHeight());
+ }
+ }
+
+ @Override
+ public String getAllText() {
+
+ // Make a snapshot of the whole text data
+ ITerminalTextDataSnapshot snapshot = fSnapshot.getTerminalTextData().makeSnapshot();
+ snapshot.updateSnapshot(true);
+ snapshot.detach();
+
+ // Extract the data
+ StringBuffer sb = new StringBuffer();
+ for (int line = 0; line < snapshot.getHeight(); line++) {
+ char[] chars = snapshot.getChars(line);
+ String text;
+ if (chars != null) {
+ text = scrubLine(new String(chars)); // take care of NULs
+ } else {
+ text = ""; //$NON-NLS-1$ null arrays represent empty lines
+ }
+ sb.append(text);
+ // terminate lines except (1) the last one and (2) wrapped lines
+ if ((line < snapshot.getHeight() - 1) && !snapshot.isWrappedLine(line)) {
+ sb.append('\n');
+ }
+ }
+ return sb.toString();
+ }
+} \ No newline at end of file
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/textcanvas/GridCanvas.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/textcanvas/GridCanvas.java
new file mode 100644
index 00000000000..c727d9910f4
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/textcanvas/GridCanvas.java
@@ -0,0 +1,233 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ * Anton Leherbauer (Wind River) - [294468] Fix scroller and text line rendering
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.textcanvas;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.ScrollBar;
+
+/**
+ * A Grid based Canvas. The canvas has rows and columns.
+ * CellPainting is done with the abstract method drawCell
+ */
+abstract public class GridCanvas extends VirtualCanvas {
+ /** width of a cell */
+ private int fCellWidth;
+ /** height of a cell */
+ private int fCellHeight;
+
+ public GridCanvas(Composite parent, int style) {
+ super(parent, style);
+ addListener(SWT.MouseWheel, event -> {
+ if (getVerticalBar().isVisible()) {
+ int delta = -fCellHeight * event.count;
+ scrollYDelta(delta);
+ }
+ event.doit = false;
+ });
+
+ }
+
+ /** template method paint.
+ * iterates over all cells in the clipping rectangle and paints them.
+ */
+ @Override
+ protected void paint(GC gc) {
+ Rectangle clipping = gc.getClipping();
+ if (clipping.width == 0 || clipping.height == 0)
+ return;
+ Rectangle clientArea = getScreenRectInVirtualSpace();
+ // Beginning coordinates
+ int xOffset = clientArea.x;
+ int yOffset = clientArea.y;
+ int colFirst = virtualXToCell(xOffset + clipping.x);
+ if (colFirst > getCols())
+ colFirst = getCols();
+ else if (colFirst < 0) {
+ colFirst = 0;
+ }
+ int rowFirst = virtualYToCell(yOffset + clipping.y);
+ // End coordinates
+ int colLast = virtualXToCell(xOffset + clipping.x + clipping.width + fCellWidth);
+ if (colLast > getCols())
+ colLast = getCols();
+ int rowLast = virtualYToCell(yOffset + clipping.y + clipping.height + fCellHeight);
+ if (rowLast > getRows())
+ rowLast = getRows();
+ // System.out.println(rowFirst+"->"+rowLast+" "+System.currentTimeMillis());
+ // draw the cells
+ for (int row = rowFirst; row <= rowLast; row++) {
+ int cx = colFirst * fCellWidth - xOffset;
+ int cy = row * fCellHeight - yOffset;
+ drawLine(gc, row, cx, cy, colFirst, colLast);
+ }
+ paintUnoccupiedSpace(gc, clipping);
+ }
+
+ /**
+ * @param gc
+ * @param row the line to draw
+ * @param x coordinate on screen
+ * @param y coordinate on screen
+ * @param colFirst first column to draw
+ * @param colLast last column to draw
+ */
+ abstract void drawLine(GC gc, int row, int x, int y, int colFirst, int colLast);
+
+ abstract protected int getRows();
+
+ abstract protected int getCols();
+
+ protected void setCellWidth(int cellWidth) {
+ fCellWidth = cellWidth;
+ getHorizontalBar().setIncrement(fCellWidth);
+ }
+
+ public int getCellWidth() {
+ return fCellWidth;
+ }
+
+ protected void setCellHeight(int cellHeight) {
+ fCellHeight = cellHeight;
+ getVerticalBar().setIncrement(fCellHeight);
+ }
+
+ public int getCellHeight() {
+ return fCellHeight;
+ }
+
+ int virtualXToCell(int x) {
+ return x / fCellWidth;
+ }
+
+ int virtualYToCell(int y) {
+ return y / fCellHeight;
+ }
+
+ protected Point screenPointToCell(int x, int y) {
+ x = screenXtoVirtual(x) / fCellWidth;
+ y = screenYtoVirtual(y) / fCellHeight;
+ return new Point(x, y);
+ }
+
+ Point screenPointToCell(Point point) {
+ return screenPointToCell(point.x, point.y);
+ }
+
+ protected Point cellToOriginOnScreen(int x, int y) {
+ x = virtualXtoScreen(fCellWidth * x);
+ y = virtualYtoScreen(fCellHeight * y);
+ return new Point(x, y);
+ }
+
+ Point cellToOriginOnScreen(Point cell) {
+ return cellToOriginOnScreen(cell.x, cell.y);
+ }
+
+ Rectangle getCellScreenRect(Point cell) {
+ return getCellScreenRect(cell.x, cell.y);
+ }
+
+ Rectangle getCellScreenRect(int x, int y) {
+ x = fCellWidth * virtualXtoScreen(x);
+ y = fCellHeight * virtualYtoScreen(y);
+ return new Rectangle(x, y, fCellWidth, fCellHeight);
+ }
+
+ protected Rectangle getCellVirtualRect(Point cell) {
+ return getCellVirtualRect(cell.x, cell.y);
+ }
+
+ Rectangle getCellVirtualRect(int x, int y) {
+ x = fCellWidth * x;
+ y = fCellHeight * y;
+ return new Rectangle(x, y, fCellWidth, fCellHeight);
+ }
+
+ @Override
+ protected void viewRectangleChanged(int x, int y, int width, int height) {
+ int cellX = virtualXToCell(x);
+ int cellY = virtualYToCell(y);
+ // End coordinates
+ int xE = virtualXToCell(x + width);
+ // if(xE>getCols())
+ // xE=getCols();
+ int yE = virtualYToCell(y + height);
+ // if(yE>getRows())
+ // yE=getRows();
+ visibleCellRectangleChanged(cellX, cellY, xE - cellX, yE - cellY);
+ }
+
+ /**
+ * Called when the viewed part has changed.
+ * Override when you need this information....
+ * Is only called if the values change (well, almost)
+ * @param x origin of visible cells
+ * @param y origin of visible cells
+ * @param width number of cells visible in x direction
+ * @param height number of cells visible in y direction
+ */
+ protected void visibleCellRectangleChanged(int x, int y, int width, int height) {
+ }
+
+ @Override
+ protected void setVirtualExtend(int width, int height) {
+ int cellHeight = getCellHeight();
+ if (cellHeight > 0) {
+ height -= height % cellHeight;
+ }
+ super.setVirtualExtend(width, height);
+ }
+
+ @Override
+ protected void setVirtualOrigin(int x, int y) {
+ int cellHeight = getCellHeight();
+ if (cellHeight > 0) {
+ int remainder = y % cellHeight;
+ if (remainder < 0) {
+ y -= (cellHeight + remainder);
+ } else {
+ y -= remainder;
+ }
+ }
+ super.setVirtualOrigin(x, y);
+ }
+
+ @Override
+ protected void scrollY(ScrollBar vBar) {
+ int vSelection = vBar.getSelection();
+ Rectangle bounds = getVirtualBounds();
+ int y = -vSelection;
+ int cellHeight = getCellHeight();
+ if (cellHeight > 0) {
+ int remainder = y % cellHeight;
+ if (remainder < 0) {
+ y -= (cellHeight + remainder);
+ } else {
+ y -= remainder;
+ }
+ }
+ int deltaY = y - bounds.y;
+ if (deltaY != 0) {
+ scrollSmart(0, deltaY);
+ setVirtualOrigin(bounds.x, bounds.y += deltaY);
+ }
+ if (-bounds.y + getRows() * getCellHeight() >= bounds.height) {
+ // scrolled to bottom - need to redraw bottom area
+ Rectangle clientRect = getClientArea();
+ redraw(0, clientRect.height - fCellHeight, clientRect.width, fCellHeight, false);
+ }
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/textcanvas/ILinelRenderer.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/textcanvas/ILinelRenderer.java
new file mode 100644
index 00000000000..a02b67fcfa9
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/textcanvas/ILinelRenderer.java
@@ -0,0 +1,63 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ * Anton Leherbauer (Wind River) - [294468] Fix scroller and text line rendering
+ * Martin Oberhuber (Wind River) - [265352][api] Allow setting fonts programmatically
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.textcanvas;
+
+import java.util.Map;
+
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.Device;
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.graphics.RGB;
+import org.eclipse.tm.terminal.model.TerminalColor;
+
+/**
+ *
+ */
+public interface ILinelRenderer {
+ int getCellWidth();
+
+ int getCellHeight();
+
+ void drawLine(ITextCanvasModel model, GC gc, int line, int x, int y, int colFirst, int colLast);
+
+ /**
+ * Update for a font change from the global JFace Registry.
+ * @deprecated Use {@link #updateFont(String)}
+ */
+ @Deprecated
+ void onFontChange();
+
+ /**
+ * Set a new font
+ * @param fontName Jface name of the new font
+ * @since 3.2
+ */
+ void updateFont(String fontName);
+
+ void updateColors(Map<TerminalColor, RGB> map);
+
+ void setInvertedColors(boolean invert);
+
+ boolean isInvertedColors();
+
+ /**
+ * @deprecated use {@link #getDefaultBackgroundColor(Device)}
+ */
+ @Deprecated
+ Color getDefaultBackgroundColor();
+
+ Color getDefaultBackgroundColor(Device device);
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/textcanvas/ITextCanvasModel.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/textcanvas/ITextCanvasModel.java
new file mode 100644
index 00000000000..01beac0789d
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/textcanvas/ITextCanvasModel.java
@@ -0,0 +1,143 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.textcanvas;
+
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.tm.terminal.model.ITerminalTextDataReadOnly;
+
+public interface ITextCanvasModel {
+ void addCellCanvasModelListener(ITextCanvasModelListener listener);
+
+ void removeCellCanvasModelListener(ITextCanvasModelListener listener);
+
+ ITerminalTextDataReadOnly getTerminalText();
+
+ /**
+ * This is is
+ * @param startLine
+ * @param startCol
+ * @param height
+ * @param width
+ */
+ void setVisibleRectangle(int startLine, int startCol, int height, int width);
+
+ /**
+ * @return true when the cursor is shown (used for blinking cursors)
+ */
+ boolean isCursorOn();
+
+ /**
+ * Show/Hide the cursor.
+ * @param visible
+ */
+ void setCursorEnabled(boolean visible);
+
+ /**
+ * @return true if the cursor is shown.
+ */
+ boolean isCursorEnabled();
+
+ /**
+ * @return the line of the cursor
+ */
+ int getCursorLine();
+
+ /**
+ * @return the column of the cursor
+ */
+ int getCursorColumn();
+
+ /**
+ * @return the start of the selection or null if nothing is selected
+ * {@link Point#x} is the column and {@link Point#y} is the line.
+ */
+ Point getSelectionStart();
+
+ /**
+ * @return the end of the selection or null if nothing is selected
+ * {@link Point#x} is the column and {@link Point#y} is the line.
+ */
+ Point getSelectionEnd();
+
+ Point getSelectionAnchor();
+
+ void setSelectionAnchor(Point anchor);
+
+ /**
+ * Sets the selection. A negative startLine clears the selection.
+ * @param startLine
+ * @param endLine
+ * @param startColumn
+ * @param endColumn
+ */
+ void setSelection(int startLine, int endLine, int startColumn, int endColumn);
+
+ /**
+ * @param line
+ * @return true if line is part of the selection
+ */
+ boolean hasLineSelection(int line);
+
+ String getSelectedText();
+
+ /**
+ * Expand the hover selection to the word at the given position.
+ *
+ * @param line line
+ * @param col column
+ */
+ void expandHoverSelectionAt(int line, int col);
+
+ /**
+ * @param line
+ * @return true if line is part of the hover selection
+ */
+ boolean hasHoverSelection(int line);
+
+ /**
+ * Get the text of the current hover selection.
+ *
+ * @return the hover selection text, never null.
+ */
+ String getHoverSelectionText();
+
+ /**
+ * Get the start of the hover selection.
+ *
+ * @return the start of the hover selection or null if nothing is selected
+ * {@link Point#x} is the column and {@link Point#y} is the line.
+ * Returns non-null if {@link #hasHoverSelection(int)} returns true
+ */
+ Point getHoverSelectionStart();
+
+ /**
+ * Get the end of the hover selection (inclusive).
+ *
+ * @return the end of the hover selection or null if nothing is selected
+ * {@link Point#x} is the column and {@link Point#y} is the line.
+ * Returns non-null if {@link #hasHoverSelection(int)} returns true
+ */
+ Point getHoverSelectionEnd();
+
+ /**
+ * Collect and return all text present in the model.
+ *
+ * <p>Individual lines of the returned text are separated by '\n'.
+ *
+ * <p>The method is primarily designed for test automation.
+ *
+ * @since 4.4
+ */
+ String getAllText();
+
+} \ No newline at end of file
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/textcanvas/ITextCanvasModelListener.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/textcanvas/ITextCanvasModelListener.java
new file mode 100644
index 00000000000..4d6251844ca
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/textcanvas/ITextCanvasModelListener.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.textcanvas;
+
+/**
+ */
+public interface ITextCanvasModelListener {
+ void rangeChanged(int col, int line, int width, int height);
+
+ void dimensionsChanged(int cols, int rows);
+
+ /**
+ * Called when any text change happened. Used to scroll to the
+ * end of text in auto scroll mode. This does not get fired
+ * when the window of interest has changed!
+ */
+ void terminalDataChanged();
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/textcanvas/PipedInputStream.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/textcanvas/PipedInputStream.java
new file mode 100644
index 00000000000..29c00356cbf
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/textcanvas/PipedInputStream.java
@@ -0,0 +1,335 @@
+/*******************************************************************************
+ * Copyright (c) 1996, 2011 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ * Douglas Lea (Addison Wesley) - [cq:1552] BoundedBufferWithStateTracking adapted to BoundedByteBuffer
+ * Martin Oberhuber (Wind River) - the waitForAvailable method
+ * Martin Oberhuber (Wind River) - [208166] Avoid unnecessary arraycopy in BoundedByteBuffer
+ * Pawel Piech (Wind River) - [333613] "Job found still running" after shutdown
+ *******************************************************************************/
+
+package org.eclipse.tm.internal.terminal.textcanvas;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+
+/**
+ * The main purpose of this class is to start a runnable in the
+ * display thread when data is available and to pretend no data
+ * is available after a given amount of time the runnable is running.
+ *
+ */
+public class PipedInputStream extends InputStream {
+ /**
+ * The output stream used by the terminal backend to write to the terminal
+ */
+ protected final OutputStream fOutputStream;
+ /**
+ * A blocking byte queue.
+ */
+ private final BoundedByteBuffer fQueue;
+
+ /**
+ * A byte bounded buffer used to synchronize the input and the output stream.
+ * <p>
+ * Adapted from BoundedBufferWithStateTracking
+ * http://gee.cs.oswego.edu/dl/cpj/allcode.java
+ * http://gee.cs.oswego.edu/dl/cpj/
+ * <p>
+ * BoundedBufferWithStateTracking is part of the examples for the book
+ * Concurrent Programming in Java: Design Principles and Patterns by
+ * Doug Lea (ISBN 0-201-31009-0). Second edition published by
+ * Addison-Wesley, November 1999. The code is
+ * Copyright(c) Douglas Lea 1996, 1999 and released to the public domain
+ * and may be used for any purposes whatsoever.
+ * <p>
+ * For some reasons a solution based on
+ * PipedOutputStream/PipedIntputStream
+ * does work *very* slowly:
+ * http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4404700
+ * <p>
+ *
+ */
+ private class BoundedByteBuffer {
+ protected final byte[] fBuffer; // the elements
+ protected int fPutPos = 0; // circular indices
+ protected int fTakePos = 0;
+ protected int fUsedSlots = 0; // the count
+ private boolean fClosed;
+
+ public BoundedByteBuffer(int capacity) throws IllegalArgumentException {
+ // make sure we don't deadlock on too small capacity
+ if (capacity <= 0)
+ throw new IllegalArgumentException();
+ fBuffer = new byte[capacity];
+ }
+
+ /**
+ * @return the bytes available for {@link #read()}
+ * Must be called with a lock on this!
+ */
+ public int available() {
+ return fUsedSlots;
+ }
+
+ /**
+ * Writes a single byte to the buffer. Blocks if the buffer is full.
+ * @param b byte to write to the buffer
+ * @throws InterruptedException when the thread is interrupted while waiting
+ * for the buffer to become ready
+ * Must be called with a lock on this!
+ */
+ public void write(byte b) throws InterruptedException {
+ while (fUsedSlots == fBuffer.length)
+ // wait until not full
+ wait();
+
+ fBuffer[fPutPos] = b;
+ fPutPos = (fPutPos + 1) % fBuffer.length; // cyclically increment
+
+ if (fUsedSlots++ == 0) // signal if was empty
+ notifyAll();
+ }
+
+ public int getFreeSlots() {
+ return fBuffer.length - fUsedSlots;
+ }
+
+ public void write(byte[] b, int off, int len) throws InterruptedException {
+ assert len <= getFreeSlots();
+ while (fUsedSlots == fBuffer.length)
+ // wait until not full
+ wait();
+ int n = Math.min(len, fBuffer.length - fPutPos);
+ System.arraycopy(b, off, fBuffer, fPutPos, n);
+ if (fPutPos + len > fBuffer.length)
+ System.arraycopy(b, off + n, fBuffer, 0, len - n);
+ fPutPos = (fPutPos + len) % fBuffer.length; // cyclically increment
+ boolean wasEmpty = fUsedSlots == 0;
+ fUsedSlots += len;
+ if (wasEmpty) // signal if was empty
+ notifyAll();
+ }
+
+ /**
+ * Read a single byte. Blocks until a byte is available.
+ * @return a byte from the buffer
+ * @throws InterruptedException when the thread is interrupted while waiting
+ * for the buffer to become ready
+ * Must be called with a lock on this!
+ */
+ public int read() throws InterruptedException {
+ while (fUsedSlots == 0) {
+ if (fClosed)
+ return -1;
+ // wait until not empty
+ wait();
+ }
+ byte b = fBuffer[fTakePos];
+ fTakePos = (fTakePos + 1) % fBuffer.length;
+
+ if (fUsedSlots-- == fBuffer.length) // signal if was full
+ notifyAll();
+ return b;
+ }
+
+ public int read(byte[] cbuf, int off, int len) throws InterruptedException {
+ assert len <= available();
+ while (fUsedSlots == 0) {
+ if (fClosed)
+ return 0;
+ // wait until not empty
+ wait();
+ }
+ int n = Math.min(len, fBuffer.length - fTakePos);
+ System.arraycopy(fBuffer, fTakePos, cbuf, off, n);
+ if (fTakePos + len > n)
+ System.arraycopy(fBuffer, 0, cbuf, off + n, len - n);
+ fTakePos = (fTakePos + len) % fBuffer.length;
+ boolean wasFull = fUsedSlots == fBuffer.length;
+ fUsedSlots -= len;
+ if (wasFull)
+ notifyAll();
+
+ return len;
+ }
+
+ public void close() {
+ fClosed = true;
+ notifyAll();
+ }
+
+ public boolean isClosed() {
+ return fClosed;
+ }
+ }
+
+ /**
+ * An output stream that calls {@link PipedInputStream#textAvailable}
+ * every time data is written to the stream. The data is written to
+ * {@link PipedInputStream#fQueue}.
+ *
+ */
+ class PipedOutputStream extends OutputStream {
+ @Override
+ public void write(byte[] b, int off, int len) throws IOException {
+ try {
+ synchronized (fQueue) {
+ if (fQueue.isClosed())
+ throw new IOException("Stream is closed!"); //$NON-NLS-1$
+ int written = 0;
+ while (written < len) {
+ if (fQueue.getFreeSlots() == 0) {
+ // if no slots available, write one byte and block
+ // until free slots are available
+ fQueue.write(b[off + written]);
+ written++;
+ } else {
+ // if slots are available, write as much as
+ // we can in one junk
+ int n = Math.min(fQueue.getFreeSlots(), len - written);
+ fQueue.write(b, off + written, n);
+ written += n;
+ }
+ }
+ }
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ }
+ }
+
+ @Override
+ public void write(int b) throws IOException {
+ try {
+ synchronized (fQueue) {
+ if (fQueue.isClosed())
+ throw new IOException("Stream is closed!"); //$NON-NLS-1$
+ fQueue.write((byte) b);
+ }
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ }
+ }
+
+ @Override
+ public void close() throws IOException {
+ synchronized (fQueue) {
+ fQueue.close();
+ }
+ }
+ }
+
+ /**
+ * @param bufferSize the size of the buffer of the output stream
+ */
+ public PipedInputStream(int bufferSize) {
+ fOutputStream = new PipedOutputStream();
+ fQueue = new BoundedByteBuffer(bufferSize);
+ }
+
+ /**
+ * @return the output stream used by the backend to write to the terminal.
+ */
+ public OutputStream getOutputStream() {
+ return fOutputStream;
+ }
+
+ /**
+ * Waits until data is available for reading.
+ * @param millis see {@link Object#wait(long)}
+ * @throws InterruptedException when the thread is interrupted while waiting
+ * for the buffer to become ready
+ */
+ public void waitForAvailable(long millis) throws InterruptedException {
+ synchronized (fQueue) {
+ if (fQueue.available() == 0 && !fQueue.fClosed)
+ fQueue.wait(millis);
+ }
+ }
+
+ /**
+ * Must be called in the Display Thread!
+ * @return number of characters available for reading.
+ */
+ @Override
+ public int available() {
+ synchronized (fQueue) {
+ return fQueue.available();
+ }
+ }
+
+ /**
+ * @return the next available byte. Check with {@link #available}
+ * if characters are available.
+ */
+ @Override
+ public int read() throws IOException {
+ try {
+ synchronized (fQueue) {
+ return fQueue.read();
+ }
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ return -1;
+ }
+ }
+
+ /**
+ * Closing a <tt>PipedInputStream</tt> is the same as closing the output stream.
+ * The stream will allow reading data that's still in the pipe after which it will
+ * throw an <tt>IOException</tt>.
+ */
+ @Override
+ public void close() throws IOException {
+ synchronized (fQueue) {
+ fQueue.close();
+ }
+ }
+
+ @Override
+ public int read(byte[] cbuf, int off, int len) throws IOException {
+ int n = 0;
+ if (len == 0)
+ return 0;
+ // read as much as we can using a single synchronized statement
+ try {
+ synchronized (fQueue) {
+ // if nothing available, block and read one byte
+ if (fQueue.available() == 0) {
+ // block now until at least one byte is available
+ int c = fQueue.read();
+ // are we at the end of stream
+ if (c == -1)
+ return -1;
+ cbuf[off] = (byte) c;
+ n++;
+ }
+ // is there more data available?
+ if (n < len && fQueue.available() > 0) {
+ // read at most available()
+ int nn = Math.min(fQueue.available(), len - n);
+ // are we at the end of the stream?
+ if (nn == 0 && fQueue.isClosed()) {
+ // if no byte was read, return -1 to indicate end of stream
+ // else return the bytes we read up to now
+ if (n == 0)
+ n = -1;
+ return n;
+ }
+ fQueue.read(cbuf, off + n, nn);
+ n += nn;
+ }
+
+ }
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ }
+ return n;
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/textcanvas/PollingTextCanvasModel.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/textcanvas/PollingTextCanvasModel.java
new file mode 100644
index 00000000000..d2fe910e5de
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/textcanvas/PollingTextCanvasModel.java
@@ -0,0 +1,54 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ * Anton Leherbauer (Wind River) - [420928] Terminal widget leaks memory
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.textcanvas;
+
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.tm.terminal.model.ITerminalTextDataSnapshot;
+
+/**
+ * @author Michael.Scharf@scharf-software.com
+ *
+ */
+public class PollingTextCanvasModel extends AbstractTextCanvasModel {
+ private static final int DEFAULT_POLL_INTERVAL = 50;
+ int fPollInterval = -1;
+
+ /**
+ *
+ */
+ public PollingTextCanvasModel(ITerminalTextDataSnapshot snapshot) {
+ super(snapshot);
+ startPolling();
+ }
+
+ public void setUpdateInterval(int t) {
+ fPollInterval = t;
+ }
+
+ public void stopPolling() {
+ // timerExec only dispatches if the delay is >=0
+ fPollInterval = -1;
+ }
+
+ public void startPolling() {
+ if (fPollInterval < 0) {
+ fPollInterval = DEFAULT_POLL_INTERVAL;
+ Display.getDefault().timerExec(fPollInterval, new Runnable() {
+ @Override
+ public void run() {
+ update();
+ Display.getDefault().timerExec(fPollInterval, this);
+ }
+ });
+ }
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/textcanvas/StyleMap.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/textcanvas/StyleMap.java
new file mode 100644
index 00000000000..330070cdafb
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/textcanvas/StyleMap.java
@@ -0,0 +1,278 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ * Michael Scharf (Wind River) - [205260] Terminal does not take the font from the preferences
+ * Michael Scharf (Wind River) - [209746] There are cases where some colors not displayed correctly
+ * Michael Scharf (Wind River) - [206328] Terminal does not draw correctly with proportional fonts
+ * Martin Oberhuber (Wind River) - [247700] Terminal uses ugly fonts in JEE package
+ * Martin Oberhuber (Wind River) - [335358] Fix Terminal color definition
+ * Martin Oberhuber (Wind River) - [265352][api] Allow setting fonts programmatically
+ * Martin Oberhuber (Wind River) - [475422] Fix display on MacOSX Retina
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.textcanvas;
+
+import java.util.EnumMap;
+import java.util.Map;
+
+import org.eclipse.jface.resource.JFaceResources;
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.graphics.RGB;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.tm.internal.terminal.preferences.ITerminalConstants;
+import org.eclipse.tm.internal.terminal.preferences.TerminalColorPresets;
+import org.eclipse.tm.terminal.model.TerminalColor;
+import org.eclipse.tm.terminal.model.TerminalStyle;
+
+/**
+ * The split between responsibilities of StyleMap and TerminalStyle are not always clear. Generally
+ * the style parts that are global for a terminal are here, where as in TerminalStyle is about
+ * a specific range.
+ */
+public class StyleMap {
+
+ String fFontName = ITerminalConstants.FONT_DEFINITION;
+ private Point fCharSize;
+ private final TerminalStyle fDefaultStyle;
+ private boolean fInvertColors;
+ private boolean fProportional;
+ private final int[] fOffsets = new int[256];
+ private final Map<TerminalColor, RGB> fColorMap = new EnumMap<>(TerminalColor.class);
+
+ public StyleMap() {
+ fDefaultStyle = TerminalStyle.getDefaultStyle();
+ initFont();
+ initColors();
+ }
+
+ private void initColors() {
+ Map<TerminalColor, RGB> map = new EnumMap<>(TerminalColor.class);
+ TerminalColor[] values = TerminalColor.values();
+ for (TerminalColor terminalColor : values) {
+ RGB rgb = TerminalColorPresets.INSTANCE.getDefaultPreset().getRGB(terminalColor);
+ map.put(terminalColor, rgb);
+ }
+ updateColors(map);
+ }
+
+ private void initFont() {
+ updateFont(ITerminalConstants.FONT_DEFINITION);
+ }
+
+ private RGB getRGB(TerminalColor color) {
+ return fColorMap.get(color);
+ }
+
+ public RGB getForegrondRGB(TerminalStyle style) {
+ style = defaultIfNull(style);
+ RGB foregroundRGB;
+ if (style.isReverse()) {
+ foregroundRGB = style.getBackgroundRGB();
+ } else {
+ foregroundRGB = style.getForegroundRGB();
+ }
+ if (foregroundRGB != null) {
+ return foregroundRGB;
+ }
+
+ TerminalColor color;
+ if (style.isReverse()) {
+ color = style.getBackgroundTerminalColor();
+ } else {
+ color = style.getForegroundTerminalColor();
+ }
+
+ if (color == null) {
+ color = TerminalColor.FOREGROUND;
+ }
+
+ color = color.convertColor(fInvertColors, style.isBold());
+ return getRGB(color);
+ }
+
+ public RGB getBackgroundRGB(TerminalStyle style) {
+ style = defaultIfNull(style);
+ RGB backgroundRGB;
+ if (style.isReverse()) {
+ backgroundRGB = style.getForegroundRGB();
+ } else {
+ backgroundRGB = style.getBackgroundRGB();
+ }
+ if (backgroundRGB != null) {
+ return backgroundRGB;
+ }
+
+ TerminalColor color;
+ if (style.isReverse()) {
+ color = style.getForegroundTerminalColor();
+ } else {
+ color = style.getBackgroundTerminalColor();
+ }
+
+ if (color == null) {
+ color = TerminalColor.BACKGROUND;
+ }
+
+ color = color.convertColor(fInvertColors, style.isBold());
+ return getRGB(color);
+ }
+
+ private TerminalStyle defaultIfNull(TerminalStyle style) {
+ if (style == null)
+ style = fDefaultStyle;
+ return style;
+ }
+
+ public void setInvertedColors(boolean invert) {
+ fInvertColors = invert;
+ }
+
+ public boolean isInvertedColors() {
+ return fInvertColors;
+ }
+
+ public Font getFont(TerminalStyle style) {
+ style = defaultIfNull(style);
+ if (style.isBold()) {
+ return JFaceResources.getFontRegistry().getBold(fFontName);
+ } else if (style.isUnderline()) {
+ return JFaceResources.getFontRegistry().getItalic(fFontName);
+
+ }
+ return JFaceResources.getFontRegistry().get(fFontName);
+ }
+
+ public Font getFont() {
+ return JFaceResources.getFontRegistry().get(fFontName);
+ }
+
+ public int getFontWidth() {
+ return fCharSize.x;
+ }
+
+ public int getFontHeight() {
+ return fCharSize.y;
+ }
+
+ /**
+ * @deprecated Use {@link #updateFont(String)}
+ */
+ @Deprecated
+ public void updateFont() {
+ updateFont(ITerminalConstants.FONT_DEFINITION);
+ }
+
+ /**
+ * Update the StyleMap for a new font name.
+ * The font name must be a valid name in the Jface font registry.
+ * @param fontName Jface name of the new font to use.
+ * @since 3.2
+ */
+ public void updateFont(String fontName) {
+ Display display = Display.getCurrent();
+ GC gc = new GC(display);
+ if (JFaceResources.getFontRegistry().hasValueFor(fontName)) {
+ fFontName = fontName;
+ } else {
+ //fall back to "basic jface text font"
+ fFontName = "org.eclipse.jface.textfont"; //$NON-NLS-1$
+ }
+ gc.setFont(getFont());
+ fCharSize = gc.textExtent("W"); //$NON-NLS-1$
+ fProportional = false;
+
+ for (char c = ' '; c <= '~'; c++) {
+ // consider only the first 128 chars for deciding if a font
+ // is proportional. Collect char width as a side-effect.
+ if (measureChar(gc, c, true))
+ fProportional = true;
+ }
+ if (fProportional) {
+ // Widest char minus the padding on the left and right:
+ // Looks much better for small fonts
+ fCharSize.x -= 2;
+ // Collect width of the upper characters (for offset calculation)
+ for (char c = '~' + 1; c < fOffsets.length; c++) {
+ measureChar(gc, c, false);
+ }
+ // Calculate offsets based on each character's width and the bounding box
+ for (int i = ' '; i < fOffsets.length; i++) {
+ fOffsets[i] = (fCharSize.x - fOffsets[i]) / 2;
+ }
+ } else {
+ // Non-Proportional: Reset all offsets (eg after font change)
+ for (int i = 0; i < fOffsets.length; i++) {
+ fOffsets[i] = 0;
+ }
+ String t = "The quick brown Fox jumps over the Lazy Dog."; //$NON-NLS-1$
+ Point ext = gc.textExtent(t);
+ if (ext.x != fCharSize.x * t.length()) {
+ //Bug 475422: On OSX with Retina display and due to scaling,
+ //a text many be shorter than the sum of its bounding boxes.
+ //Because even with fixed width font, bounding box size
+ //may not be an integer but a fraction eg 6.75 pixels.
+ //
+ //Painting in proportional mode ensures that each character
+ //is painted individually into its proper bounding box, rather
+ //than using an optimization where Strings would be drawn as
+ //a whole. This fixes the "fractional bounding box" problem.
+ fProportional = true;
+ }
+ //measure font in boldface, too, and if wider then treat like proportional
+ gc.setFont(getFont(fDefaultStyle.setBold(true)));
+ Point charSizeBold = gc.textExtent("W"); //$NON-NLS-1$
+ if (fCharSize.x != charSizeBold.x) {
+ fProportional = true;
+ }
+ }
+ gc.dispose();
+ }
+
+ /**
+ * @param gc
+ * @param c
+ * @param updateMax
+ * @return true if the the font is proportional
+ */
+ private boolean measureChar(GC gc, char c, boolean updateMax) {
+ boolean proportional = false;
+ Point ext = gc.textExtent(String.valueOf(c));
+ if (ext.x > 0 && ext.y > 0 && (fCharSize.x != ext.x || fCharSize.y != ext.y)) {
+ proportional = true;
+ if (updateMax) {
+ fCharSize.x = Math.max(fCharSize.x, ext.x);
+ fCharSize.y = Math.max(fCharSize.y, ext.y);
+ }
+ }
+ fOffsets[c] = ext.x;
+ return proportional;
+ }
+
+ public boolean isFontProportional() {
+ return fProportional;
+ }
+
+ /**
+ * Return the offset in pixels required to center a given character
+ * @param c the character to measure
+ * @return the offset in x direction to center this character
+ */
+ public int getCharOffset(char c) {
+ if (c >= fOffsets.length)
+ return 0;
+ return fOffsets[c];
+ }
+
+ public void updateColors(Map<TerminalColor, RGB> colorMap) {
+ fColorMap.putAll(colorMap);
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/textcanvas/TextCanvas.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/textcanvas/TextCanvas.java
new file mode 100644
index 00000000000..0d7e8bda732
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/textcanvas/TextCanvas.java
@@ -0,0 +1,572 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ * Michael Scharf (Wind River) - [240098] The cursor should not blink when the terminal is disconnected
+ * Uwe Stieber (Wind River) - [281328] The very first few characters might be missing in the terminal control if opened and connected programmatically
+ * Martin Oberhuber (Wind River) - [294327] After logging in, the remote prompt is hidden
+ * Anton Leherbauer (Wind River) - [294468] Fix scroller and text line rendering
+ * Uwe Stieber (Wind River) - [205486] Fix ScrollLock always moving to line 1
+ * Anton Leherbauer (Wind River) - [219589] Copy an entire line selection
+ * Anton Leherbauer (Wind River) - [196465] Resizing Terminal changes Scroller location
+ * Anton Leherbauer (Wind River) - [324608] Terminal has strange scrolling behaviour
+ * Martin Oberhuber (Wind River) - [265352][api] Allow setting fonts programmatically
+ * Anton Leherbauer (Wind River) - [434749] UnhandledEventLoopException when copying to clipboard while the selection is empty
+ * Davy Landman (CWI) - [475267][api] Allow custom mouse listeners
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.textcanvas;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.dnd.Clipboard;
+import org.eclipse.swt.dnd.TextTransfer;
+import org.eclipse.swt.dnd.Transfer;
+import org.eclipse.swt.events.FocusEvent;
+import org.eclipse.swt.events.FocusListener;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.events.MouseListener;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.Device;
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.graphics.RGB;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.tm.internal.terminal.control.ITerminalMouseListener;
+import org.eclipse.tm.internal.terminal.control.ITerminalMouseListener2;
+import org.eclipse.tm.terminal.model.TerminalColor;
+
+/**
+ * A cell oriented Canvas. Maintains a list of "cells".
+ * It can either be vertically or horizontally scrolled.
+ * The CellRenderer is responsible for painting the cell.
+ */
+public class TextCanvas extends GridCanvas {
+ protected final ITextCanvasModel fCellCanvasModel;
+ /** Renders the cells */
+ private final ILinelRenderer fCellRenderer;
+ private boolean fScrollLock;
+ private Point fDraggingStart;
+ private Point fDraggingEnd;
+ private boolean fHasSelection;
+ private ResizeListener fResizeListener;
+ private final List<ITerminalMouseListener> fMouseListeners;
+
+ // The minSize is meant to determine the minimum size of the backing store
+ // (grid) into which remote data is rendered. If the viewport is smaller
+ // than that minimum size, the backing store size remains at the minSize,
+ // and a scrollbar is shown instead. In reality, this has the following
+ // issues or effects today:
+ // (a) Bug 281328: For very early data coming in before the widget is
+ // realized, the minSize determines into what initial grid that is
+ // rendered. See also @link{#addResizeHandler(ResizeListener)}.
+ // (b) Bug 294468: Since we have redraw and size computation problems
+ // with horizontal scrollers, for now the minColumns must be small
+ // enough to avoid a horizontal scroller appearing in most cases.
+ // (b) Bug 294327: since we have problems with the vertical scroller
+ // showing the correct location, minLines must be small enough
+ // to avoid a vertical scroller or new data may be rendered off-screen.
+ // As a compromise, we have been working with a 20x4 since the Terminal
+ // inception, though many users would want a 80x24 minSize and backing
+ // store. Pros and cons of the small minsize:
+ // + consistent "remote size==viewport size", vi works as expected
+ // - dumb terminals which expect 80x24 render garbled on small viewport.
+ // If bug 294468 were resolved, an 80 wide minSize would be preferrable
+ // since it allows switching the terminal viewport small/large as needed,
+ // without destroying the backing store. For a complete solution,
+ // Bug 196462 tracks the request for a user-defined fixed-widow-size-mode.
+ private int fMinColumns = 80;
+ private int fMinLines = 4;
+ private boolean fCursorEnabled;
+ private boolean fResizing;
+
+ /**
+ * Create a new CellCanvas with the given SWT style bits.
+ * (SWT.H_SCROLL and SWT.V_SCROLL are automatically added).
+ */
+ public TextCanvas(Composite parent, ITextCanvasModel model, int style, ILinelRenderer cellRenderer) {
+ super(parent, style | SWT.H_SCROLL | SWT.V_SCROLL);
+ fCellRenderer = cellRenderer;
+ setCellWidth(fCellRenderer.getCellWidth());
+ setCellHeight(fCellRenderer.getCellHeight());
+ fCellCanvasModel = model;
+ fCellCanvasModel.addCellCanvasModelListener(new ITextCanvasModelListener() {
+ @Override
+ public void rangeChanged(int col, int line, int width, int height) {
+ if (isDisposed())
+ return;
+ repaintRange(col, line, width, height);
+ }
+
+ @Override
+ public void dimensionsChanged(int cols, int rows) {
+ if (isDisposed())
+ return;
+ calculateGrid();
+ }
+
+ @Override
+ public void terminalDataChanged() {
+ if (isDisposed())
+ return;
+
+ // scroll to end (unless scroll lock is active)
+ if (!fResizing) {
+ calculateGrid();
+ scrollToEnd();
+ }
+ }
+ });
+ // let the cursor blink if the text canvas gets the focus...
+ addFocusListener(new FocusListener() {
+ @Override
+ public void focusGained(FocusEvent e) {
+ fCellCanvasModel.setCursorEnabled(fCursorEnabled);
+ }
+
+ @Override
+ public void focusLost(FocusEvent e) {
+ fCellCanvasModel.setCursorEnabled(false);
+ }
+ });
+ fMouseListeners = new ArrayList<>();
+ addMouseListener(new MouseListener() {
+ @Override
+ public void mouseDoubleClick(MouseEvent e) {
+ if (fMouseListeners.size() > 0) {
+ Point pt = screenPointToCell(e.x, e.y);
+ if (pt != null) {
+ for (ITerminalMouseListener l : fMouseListeners) {
+ if (l instanceof ITerminalMouseListener2) {
+ ITerminalMouseListener2 l2 = (ITerminalMouseListener2) l;
+ l2.mouseDoubleClick(fCellCanvasModel.getTerminalText(), pt.y, pt.x, e.button,
+ e.stateMask);
+ } else {
+ l.mouseDoubleClick(fCellCanvasModel.getTerminalText(), pt.y, pt.x, e.button);
+ }
+ }
+ }
+ }
+ }
+
+ @Override
+ public void mouseDown(MouseEvent e) {
+ if (e.button == 1) { // left button
+ fDraggingStart = screenPointToCell(e.x, e.y);
+ fHasSelection = false;
+ if ((e.stateMask & SWT.SHIFT) != 0) {
+ Point anchor = fCellCanvasModel.getSelectionAnchor();
+ if (anchor != null)
+ fDraggingStart = anchor;
+ } else {
+ fCellCanvasModel.setSelectionAnchor(fDraggingStart);
+ }
+ fDraggingEnd = null;
+ }
+ if (fMouseListeners.size() > 0) {
+ Point pt = screenPointToCell(e.x, e.y);
+ if (pt != null) {
+ for (ITerminalMouseListener l : fMouseListeners) {
+ if (l instanceof ITerminalMouseListener2) {
+ ITerminalMouseListener2 l2 = (ITerminalMouseListener2) l;
+ l2.mouseDown(fCellCanvasModel.getTerminalText(), pt.y, pt.x, e.button, e.stateMask);
+ } else {
+ l.mouseDown(fCellCanvasModel.getTerminalText(), pt.y, pt.x, e.button);
+ }
+ }
+ }
+ }
+ }
+
+ @Override
+ public void mouseUp(MouseEvent e) {
+ if (e.button == 1) { // left button
+ updateHasSelection(e);
+ if (fHasSelection)
+ setSelection(screenPointToCell(e.x, e.y));
+ else
+ fCellCanvasModel.setSelection(-1, -1, -1, -1);
+ fDraggingStart = null;
+ }
+ if (fMouseListeners.size() > 0) {
+ Point pt = screenPointToCell(e.x, e.y);
+ if (pt != null) {
+ for (ITerminalMouseListener l : fMouseListeners) {
+ if (l instanceof ITerminalMouseListener2) {
+ ITerminalMouseListener2 l2 = (ITerminalMouseListener2) l;
+ l2.mouseUp(fCellCanvasModel.getTerminalText(), pt.y, pt.x, e.button, e.stateMask);
+ } else {
+ l.mouseUp(fCellCanvasModel.getTerminalText(), pt.y, pt.x, e.button);
+ }
+ }
+ }
+ }
+ }
+ });
+ addMouseMoveListener(e -> {
+ if (fDraggingStart != null) {
+ updateHasSelection(e);
+ setSelection(screenPointToCell(e.x, e.y));
+ fCellCanvasModel.expandHoverSelectionAt(-1, -1);
+ } else if ((e.stateMask & SWT.MODIFIER_MASK) == SWT.MOD1) {
+ // highlight (underline) word that would be used by MOD1 + mouse click
+ Point pt = screenPointToCell(e.x, e.y);
+ fCellCanvasModel.expandHoverSelectionAt(pt.y, pt.x);
+ } else {
+ fCellCanvasModel.expandHoverSelectionAt(-1, -1);
+ }
+ redraw();
+ });
+ serVerticalBarVisible(true);
+ setHorizontalBarVisible(false);
+ }
+
+ /**
+ * The user has to drag the mouse to at least one character to make a selection.
+ * Once this is done, even a one char selection is OK.
+ *
+ * @param e
+ */
+ private void updateHasSelection(MouseEvent e) {
+ if (fDraggingStart != null) {
+ Point p = screenPointToCell(e.x, e.y);
+ if (fDraggingStart.x != p.x || fDraggingStart.y != p.y)
+ fHasSelection = true;
+ }
+ }
+
+ void setSelection(Point p) {
+ if (fDraggingStart != null && !p.equals(fDraggingEnd)) {
+ fDraggingEnd = p;
+ if (compare(p, fDraggingStart) < 0) {
+ // bug 219589 - make sure selection start coordinates are non-negative
+ int startColumn = Math.max(0, p.x);
+ int startRow = Math.max(p.y, 0);
+ fCellCanvasModel.setSelection(startRow, fDraggingStart.y, startColumn, fDraggingStart.x);
+ } else {
+ fCellCanvasModel.setSelection(fDraggingStart.y, p.y, fDraggingStart.x, p.x);
+
+ }
+ }
+ }
+
+ int compare(Point p1, Point p2) {
+ if (p1.equals(p2))
+ return 0;
+ if (p1.y == p2.y) {
+ if (p1.x > p2.x)
+ return 1;
+ else
+ return -1;
+ }
+ if (p1.y > p2.y) {
+ return 1;
+ } else {
+ return -1;
+ }
+ }
+
+ public ILinelRenderer getCellRenderer() {
+ return fCellRenderer;
+ }
+
+ public int getMinColumns() {
+ return fMinColumns;
+ }
+
+ public void setMinColumns(int minColumns) {
+ fMinColumns = minColumns;
+ }
+
+ public int getMinLines() {
+ return fMinLines;
+ }
+
+ public void setMinLines(int minLines) {
+ fMinLines = minLines;
+ }
+
+ protected void onResize(boolean init) {
+ if (fResizeListener != null) {
+ Rectangle bonds = getClientArea();
+ int cellHeight = getCellHeight();
+ int cellWidth = getCellWidth();
+ int lines = bonds.height / cellHeight;
+ int columns = bonds.width / cellWidth;
+ // when the view is minimised, its size is set to 0
+ // we don't sent this to the terminal!
+ if ((lines > 0 && columns > 0) || init) {
+ if (columns < fMinColumns) {
+ if (!isHorizontalBarVisble()) {
+ setHorizontalBarVisible(true);
+ bonds = getClientArea();
+ lines = bonds.height / cellHeight;
+ }
+ columns = fMinColumns;
+ } else if (columns >= fMinColumns && isHorizontalBarVisble()) {
+ setHorizontalBarVisible(false);
+ bonds = getClientArea();
+ lines = bonds.height / cellHeight;
+ columns = bonds.width / cellWidth;
+ }
+ if (lines < fMinLines)
+ lines = fMinLines;
+ fResizeListener.sizeChanged(lines, columns);
+ }
+ }
+ super.onResize();
+ calculateGrid();
+ }
+
+ @Override
+ protected void onResize() {
+ fResizing = true;
+ try {
+ onResize(false);
+ } finally {
+ fResizing = false;
+ }
+ }
+
+ private void calculateGrid() {
+ Rectangle virtualBounds = getVirtualBounds();
+ setRedraw(false);
+ try {
+ setVirtualExtend(getCols() * getCellWidth(), getRows() * getCellHeight());
+ getParent().layout();
+ if (fResizing) {
+ // scroll to end if view port was near last line
+ Rectangle viewRect = getViewRectangle();
+ if (virtualBounds.height - (viewRect.y + viewRect.height) < getCellHeight() * 2)
+ scrollToEnd();
+ }
+ } finally {
+ setRedraw(true);
+ }
+ }
+
+ void scrollToEnd() {
+ if (!fScrollLock) {
+ int y = -(getRows() * getCellHeight() - getClientArea().height);
+ if (y > 0) {
+ y = 0;
+ }
+ Rectangle v = getViewRectangle();
+ if (v.y != -y) {
+ setVirtualOrigin(v.x, y);
+ }
+ // make sure the scroll area is correct:
+ scrollY(getVerticalBar());
+ scrollX(getHorizontalBar());
+ }
+ }
+
+ /**
+ *
+ * @return true if the cursor should be shown on output....
+ */
+ public boolean isScrollLock() {
+ return fScrollLock;
+ }
+
+ /**
+ * If set then if the size changes
+ */
+ public void setScrollLock(boolean scrollLock) {
+ fScrollLock = scrollLock;
+ }
+
+ protected void repaintRange(int col, int line, int width, int height) {
+ Point origin = cellToOriginOnScreen(col, line);
+ Rectangle r = new Rectangle(origin.x, origin.y, width * getCellWidth(), height * getCellHeight());
+ repaint(r);
+ }
+
+ @Override
+ protected void drawLine(GC gc, int line, int x, int y, int colFirst, int colLast) {
+ fCellRenderer.drawLine(fCellCanvasModel, gc, line, x, y, colFirst, colLast);
+ }
+
+ @Override
+ protected Color getTerminalBackgroundColor(Device device) {
+ return fCellRenderer.getDefaultBackgroundColor(device);
+ }
+
+ @Override
+ @Deprecated
+ protected Color getTerminalBackgroundColor() {
+ return fCellRenderer.getDefaultBackgroundColor();
+ }
+
+ @Override
+ protected void visibleCellRectangleChanged(int x, int y, int width, int height) {
+ fCellCanvasModel.setVisibleRectangle(y, x, height, width);
+ update();
+ }
+
+ @Override
+ protected int getCols() {
+ return fCellCanvasModel.getTerminalText().getWidth();
+ }
+
+ @Override
+ protected int getRows() {
+ return fCellCanvasModel.getTerminalText().getHeight();
+ }
+
+ public String getSelectionText() {
+ // TODO -- create a hasSelectionMethod!
+ return fCellCanvasModel.getSelectedText();
+ }
+
+ public void copy() {
+ String selectionText = getSelectionText();
+ if (selectionText != null && selectionText.length() > 0) {
+ Clipboard clipboard = new Clipboard(getDisplay());
+ clipboard.setContents(new Object[] { selectionText }, new Transfer[] { TextTransfer.getInstance() });
+ clipboard.dispose();
+ }
+ }
+
+ public void selectAll() {
+ fCellCanvasModel.setSelection(0, fCellCanvasModel.getTerminalText().getHeight(), 0,
+ fCellCanvasModel.getTerminalText().getWidth());
+ fCellCanvasModel.setSelectionAnchor(new Point(0, 0));
+ }
+
+ /**
+ * @since 4.1
+ */
+ public void clearSelection() {
+ fCellCanvasModel.setSelection(-1, -1, -1, -1);
+ }
+
+ /**
+ * Collect and return all text present in the widget.
+ *
+ * <p>Individual lines of the returned text are separated by '\n'.
+ *
+ * <p>The method is primarily designed for test automation. Tests need
+ * to check what happens in a terminal (e.g. if and how a CDT Debugger
+ * Console reacts in a GDB session) and this method allows to read the
+ * text present in the terminal.
+ *
+ * @since 4.4
+ */
+ public String getAllText() {
+ return fCellCanvasModel.getAllText();
+ }
+
+ public boolean isEmpty() {
+ return false;
+ }
+
+ /**
+ * Gets notified when the visible size of the terminal changes.
+ * This should update the model!
+ *
+ */
+ public interface ResizeListener {
+ void sizeChanged(int lines, int columns);
+ }
+
+ /**
+ * @param listener this listener gets notified, when the size of
+ * the widget changed. It should change the dimensions of the underlying
+ * terminaldata
+ */
+ public void addResizeHandler(ResizeListener listener) {
+ if (fResizeListener != null)
+ throw new IllegalArgumentException("There can be at most one listener at the moment!"); //$NON-NLS-1$
+ fResizeListener = listener;
+
+ // Bug 281328: [terminal] The very first few characters might be missing in
+ // the terminal control if opened and connected programmatically
+ //
+ // In case the terminal had not been visible yet or is too small (less than one
+ // line visible), the terminal should have a minimum size to avoid RuntimeExceptions.
+ Rectangle bonds = getClientArea();
+ if (bonds.height < getCellHeight() || bonds.width < getCellWidth()) {
+ //Widget not realized yet, or minimized to < 1 item:
+ //Just tell the listener our min size
+ fResizeListener.sizeChanged(getMinLines(), getMinColumns());
+ } else {
+ //Widget realized: compute actual size and force telling the listener
+ onResize(true);
+ }
+ }
+
+ /**
+ * Notify about a change of the global Font Preference.
+ * @deprecated Use {@link #updateFont(String)}
+ */
+ @Deprecated
+ public void onFontChange() {
+ fCellRenderer.onFontChange();
+ setCellWidth(fCellRenderer.getCellWidth());
+ setCellHeight(fCellRenderer.getCellHeight());
+ calculateGrid();
+ }
+
+ public void updateFont(String fontName) {
+ fCellRenderer.updateFont(fontName);
+ setCellWidth(fCellRenderer.getCellWidth());
+ setCellHeight(fCellRenderer.getCellHeight());
+ calculateGrid();
+ }
+
+ public void updateColors(Map<TerminalColor, RGB> map) {
+ fCellRenderer.updateColors(map);
+ redraw();
+ }
+
+ public void setInvertedColors(boolean invert) {
+ fCellRenderer.setInvertedColors(invert);
+ redraw();
+ }
+
+ public boolean isInvertedColors() {
+ return fCellRenderer.isInvertedColors();
+ }
+
+ /**
+ * @return true if the cursor is enabled (blinking). By default the cursor is not enabled.
+ */
+ public boolean isCursorEnabled() {
+ return fCursorEnabled;
+ }
+
+ /**
+ * @param enabled enabling means that the cursor blinks
+ */
+ public void setCursorEnabled(boolean enabled) {
+ if (enabled != fCursorEnabled) {
+ fCursorEnabled = enabled;
+ fCellCanvasModel.setCursorEnabled(fCursorEnabled);
+ }
+
+ }
+
+ public void addTerminalMouseListener(final ITerminalMouseListener listener) {
+ fMouseListeners.add(listener);
+ }
+
+ public void removeTerminalMouseListener(ITerminalMouseListener listener) {
+ fMouseListeners.remove(listener);
+ }
+
+ public String getHoverSelection() {
+ return fCellCanvasModel.getHoverSelectionText();
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/textcanvas/TextLineRenderer.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/textcanvas/TextLineRenderer.java
new file mode 100644
index 00000000000..845ee499581
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/textcanvas/TextLineRenderer.java
@@ -0,0 +1,248 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ * Michael Scharf (Wind River) - [205260] Terminal does not take the font from the preferences
+ * Michael Scharf (Wind River) - [206328] Terminal does not draw correctly with proportional fonts
+ * Anton Leherbauer (Wind River) - [294468] Fix scroller and text line rendering
+ * Martin Oberhuber (Wind River) - [265352][api] Allow setting fonts programmatically
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.textcanvas;
+
+import java.util.Map;
+
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.Device;
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.graphics.RGB;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.tm.internal.terminal.control.impl.TerminalPlugin;
+import org.eclipse.tm.internal.terminal.provisional.api.Logger;
+import org.eclipse.tm.terminal.model.ITerminalTextDataReadOnly;
+import org.eclipse.tm.terminal.model.LineSegment;
+import org.eclipse.tm.terminal.model.TerminalColor;
+import org.eclipse.tm.terminal.model.TerminalStyle;
+
+/**
+ *
+ */
+public class TextLineRenderer implements ILinelRenderer {
+ private static final boolean DEBUG_HOVER = TerminalPlugin.isOptionEnabled(Logger.TRACE_DEBUG_LOG_HOVER);
+ private final ITextCanvasModel fModel;
+ private final StyleMap fStyleMap;
+
+ public TextLineRenderer(TextCanvas c, ITextCanvasModel model) {
+ fModel = model;
+ fStyleMap = new StyleMap();
+ }
+
+ @Override
+ public int getCellWidth() {
+ return fStyleMap.getFontWidth();
+ }
+
+ @Override
+ public int getCellHeight() {
+ return fStyleMap.getFontHeight();
+ }
+
+ @Override
+ public void drawLine(ITextCanvasModel model, GC gc, int line, int x, int y, int colFirst, int colLast) {
+ int width = getCellWidth() * (colLast - colFirst);
+ int height = getCellHeight();
+ if (width <= 0 || height <= 0) {
+ return;
+ }
+ Image buffer = new Image(gc.getDevice(), width, height);
+ GC doubleBufferGC = new GC(buffer);
+ if (line < 0 || line >= getTerminalText().getHeight() || colFirst >= getTerminalText().getWidth()
+ || colFirst - colLast == 0) {
+ fillBackground(doubleBufferGC, 0, 0, width, height);
+ } else {
+ colLast = Math.min(colLast, getTerminalText().getWidth());
+ LineSegment[] segments = getTerminalText().getLineSegments(line, colFirst, colLast - colFirst);
+ for (int i = 0; i < segments.length; i++) {
+ LineSegment segment = segments[i];
+ TerminalStyle style = segment.getStyle();
+ setupGC(doubleBufferGC, style);
+ String text = segment.getText();
+ drawText(doubleBufferGC, 0, 0, colFirst, segment.getColumn(), text);
+ drawCursor(model, doubleBufferGC, line, 0, 0, colFirst);
+ }
+ if (fModel.hasHoverSelection(line)) {
+ if (DEBUG_HOVER) {
+ System.out.format("hover: %s contains hover selection\n", line); //$NON-NLS-1$
+ }
+ Point hsStart = fModel.getHoverSelectionStart();
+ Point hsEnd = fModel.getHoverSelectionEnd();
+ int colStart = line == hsStart.y ? hsStart.x : 0;
+ int colEnd = line == hsEnd.y ? hsEnd.x : getTerminalText().getWidth();
+ if (colStart < colEnd) {
+ RGB defaultFg = fStyleMap.getForegrondRGB(null);
+ doubleBufferGC.setForeground(new Color(doubleBufferGC.getDevice(), defaultFg));
+ drawUnderline(doubleBufferGC, colStart, colEnd);
+ }
+ }
+ if (fModel.hasLineSelection(line)) {
+ TerminalStyle style = TerminalStyle.getStyle(TerminalColor.SELECTION_FOREGROUND,
+ TerminalColor.SELECTION_BACKGROUND);
+ setupGC(doubleBufferGC, style);
+ Point start = model.getSelectionStart();
+ Point end = model.getSelectionEnd();
+ char[] chars = model.getTerminalText().getChars(line);
+ if (chars != null) {
+ int offset = 0;
+ if (start.y == line)
+ offset = start.x;
+ offset = Math.max(offset, colFirst);
+ int len;
+ if (end.y == line)
+ len = end.x - offset + 1;
+ else
+ len = chars.length - offset + 1;
+ len = Math.min(len, chars.length - offset);
+ if (len > 0) {
+ String text = new String(chars, offset, len);
+ drawText(doubleBufferGC, 0, 0, colFirst, offset, text);
+ }
+ }
+ }
+ }
+ gc.drawImage(buffer, x, y);
+ doubleBufferGC.dispose();
+ buffer.dispose();
+ }
+
+ private void fillBackground(GC gc, int x, int y, int width, int height) {
+ Color bg = gc.getBackground();
+ gc.setBackground(getDefaultBackgroundColor(gc.getDevice()));
+ gc.fillRectangle(x, y, width, height);
+ gc.setBackground(bg);
+
+ }
+
+ @Override
+ public Color getDefaultBackgroundColor() {
+ return getDefaultBackgroundColor(Display.getDefault());
+ }
+
+ @Override
+ public Color getDefaultBackgroundColor(Device device) {
+ // null == default style
+ RGB backgroundRGB = fStyleMap.getBackgroundRGB(null);
+ return new Color(device, backgroundRGB);
+ }
+
+ private void drawCursor(ITextCanvasModel model, GC gc, int row, int x, int y, int colFirst) {
+ if (!model.isCursorOn())
+ return;
+ int cursorLine = model.getCursorLine();
+
+ if (row == cursorLine) {
+ int cursorColumn = model.getCursorColumn();
+ if (cursorColumn < getTerminalText().getWidth()) {
+ TerminalStyle style = getTerminalText().getStyle(row, cursorColumn);
+ if (style == null) {
+ // TODO make the cursor color customizable
+ style = TerminalStyle.getStyle(TerminalColor.FOREGROUND, TerminalColor.BACKGROUND);
+ }
+ style = style.setReverse(!style.isReverse());
+ setupGC(gc, style);
+ String text = String.valueOf(getTerminalText().getChar(row, cursorColumn));
+ drawText(gc, x, y, colFirst, cursorColumn, text);
+ }
+ }
+ }
+
+ private void drawText(GC gc, int x, int y, int colFirst, int col, String text) {
+ int offset = (col - colFirst) * getCellWidth();
+ if (fStyleMap.isFontProportional()) {
+ // draw the background
+ // TODO why does this not work???????
+ // gc.fillRectangle(x,y,fStyleMap.getFontWidth()*text.length(),fStyleMap.getFontHeight());
+ for (int i = 0; i < text.length(); i++) {
+ char c = text.charAt(i);
+ int xx = x + offset + i * fStyleMap.getFontWidth();
+ // TODO why do I have to draw the background character by character??????
+ gc.fillRectangle(xx, y, fStyleMap.getFontWidth(), fStyleMap.getFontHeight());
+ if (c != ' ' && c != '\000') {
+ gc.drawString(String.valueOf(c), fStyleMap.getCharOffset(c) + xx, y, false);
+ }
+ }
+ } else {
+ text = text.replace('\000', ' ');
+ gc.drawString(text, x + offset, y, false);
+ }
+ }
+
+ /**
+ *
+ * @param gc
+ * @param colStart Starting text column to underline (inclusive)
+ * @param colEnd Ending text column to underline (inclusive)
+ */
+ private void drawUnderline(GC gc, int colStart, int colEnd) {
+ int y = getCellHeight() - 1;
+ int x = getCellWidth() * colStart;
+
+ // x2 is the right side of last column being underlined.
+ int x2 = (colEnd + 1) * getCellWidth() - 1;
+ gc.drawLine(x, y, x2, y);
+ }
+
+ private void setupGC(GC gc, TerminalStyle style) {
+ RGB foregrondColor = fStyleMap.getForegrondRGB(style);
+ gc.setForeground(new Color(gc.getDevice(), foregrondColor));
+ RGB backgroundColor = fStyleMap.getBackgroundRGB(style);
+ gc.setBackground(new Color(gc.getDevice(), backgroundColor));
+
+ Font f = fStyleMap.getFont(style);
+ if (f != gc.getFont()) {
+ gc.setFont(f);
+ }
+ }
+
+ ITerminalTextDataReadOnly getTerminalText() {
+ return fModel.getTerminalText();
+ }
+
+ /**
+ * @deprecated Use {@link #updateFont(String)}
+ */
+ @Deprecated
+ @Override
+ public void onFontChange() {
+ fStyleMap.updateFont();
+ }
+
+ @Override
+ public void updateFont(String fontName) {
+ fStyleMap.updateFont(fontName);
+ }
+
+ @Override
+ public void updateColors(Map<TerminalColor, RGB> map) {
+ fStyleMap.updateColors(map);
+ }
+
+ @Override
+ public void setInvertedColors(boolean invert) {
+ fStyleMap.setInvertedColors(invert);
+
+ }
+
+ @Override
+ public boolean isInvertedColors() {
+ return fStyleMap.isInvertedColors();
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/textcanvas/VirtualCanvas.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/textcanvas/VirtualCanvas.java
new file mode 100644
index 00000000000..2fc846e7dbc
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/textcanvas/VirtualCanvas.java
@@ -0,0 +1,357 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ * Anton Leherbauer (Wind River) - [294468] Fix scroller and text line rendering
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.textcanvas;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.Device;
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.widgets.Canvas;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.ScrollBar;
+import org.eclipse.tm.internal.terminal.control.impl.TerminalPlugin;
+
+/**
+ * A <code>Canvas</code> showing a virtual object.
+ * Virtual: the extent of the total canvas.
+ * Screen: the visible client area in the screen.
+ */
+public abstract class VirtualCanvas extends Canvas {
+
+ private final Rectangle fVirtualBounds = new Rectangle(0, 0, 0, 0);
+ private Rectangle fClientArea;
+ /**
+ * prevent infinite loop in {@link #updateScrollbars()}
+ */
+ private boolean fInUpdateScrollbars;
+ private static boolean fInUpdateScrollbarsLogged;
+
+ public VirtualCanvas(Composite parent, int style) {
+ super(parent, style | SWT.NO_BACKGROUND | SWT.NO_REDRAW_RESIZE);
+ fClientArea = getClientArea();
+ addListener(SWT.Paint, event -> paint(event.gc));
+ addListener(SWT.Resize, event -> {
+ fClientArea = getClientArea();
+ onResize();
+ });
+ getVerticalBar().addListener(SWT.Selection, e -> scrollY((ScrollBar) e.widget));
+ getHorizontalBar().addListener(SWT.Selection, e -> scrollX((ScrollBar) e.widget));
+ }
+
+ protected void onResize() {
+ updateViewRectangle();
+ }
+
+ protected void scrollX(ScrollBar hBar) {
+ int hSelection = hBar.getSelection();
+ int destX = -hSelection - fVirtualBounds.x;
+ fVirtualBounds.x = -hSelection;
+ scrollSmart(destX, 0);
+ updateViewRectangle();
+ }
+
+ protected void scrollXDelta(int delta) {
+ getHorizontalBar().setSelection(-fVirtualBounds.x + delta);
+ scrollX(getHorizontalBar());
+ }
+
+ protected void scrollY(ScrollBar vBar) {
+ int vSelection = vBar.getSelection();
+ int destY = -vSelection - fVirtualBounds.y;
+ if (destY != 0) {
+ fVirtualBounds.y = -vSelection;
+ scrollSmart(0, destY);
+ updateViewRectangle();
+ }
+
+ }
+
+ protected void scrollYDelta(int delta) {
+ getVerticalBar().setSelection(-fVirtualBounds.y + delta);
+ scrollY(getVerticalBar());
+ }
+
+ protected void scrollSmart(int deltaX, int deltaY) {
+ if (deltaX != 0 || deltaY != 0) {
+ Rectangle rect = getBounds();
+ scroll(deltaX, deltaY, 0, 0, rect.width, rect.height, false);
+ }
+ }
+
+ /**
+ * @param rect in virtual space
+ */
+ protected void revealRect(Rectangle rect) {
+ Rectangle visibleRect = getScreenRectInVirtualSpace();
+ // scroll the X part
+ int deltaX = 0;
+ if (rect.x < visibleRect.x) {
+ deltaX = rect.x - visibleRect.x;
+ } else if (visibleRect.x + visibleRect.width < rect.x + rect.width) {
+ deltaX = (rect.x + rect.width) - (visibleRect.x + visibleRect.width);
+ }
+ if (deltaX != 0) {
+ getHorizontalBar().setSelection(-fVirtualBounds.x + deltaX);
+ scrollX(getHorizontalBar());
+ }
+
+ // scroll the Y part
+ int deltaY = 0;
+ if (rect.y < visibleRect.y) {
+ deltaY = rect.y - visibleRect.y;
+ } else if (visibleRect.y + visibleRect.height < rect.y + rect.height) {
+ deltaY = (rect.y + rect.height) - (visibleRect.y + visibleRect.height);
+
+ }
+ if (deltaY != 0) {
+ getVerticalBar().setSelection(-fVirtualBounds.y + deltaY);
+ scrollY(getVerticalBar());
+ }
+ }
+
+ protected void repaint(Rectangle r) {
+ if (isDisposed())
+ return;
+ if (inClipping(r, fClientArea)) {
+ redraw(r.x, r.y, r.width, r.height, true);
+ update();
+ }
+ }
+
+ /**
+ * Paint the virtual canvas.
+ * Override to implement actual paint method.
+ * @param gc graphics context to paint in
+ */
+ abstract protected void paint(GC gc);
+
+ abstract protected Color getTerminalBackgroundColor(Device device);
+
+ /**
+ * @deprecated Use {@link #getTerminalBackgroundColor(Device)}
+ */
+ @Deprecated
+ protected Color getTerminalBackgroundColor() {
+ // return getDisplay().getSystemColor(SWT.COLOR_LIST_BACKGROUND);
+ return getDisplay().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND);
+ }
+
+ protected void paintUnoccupiedSpace(GC gc, Rectangle clipping) {
+ int width = fVirtualBounds.width + fVirtualBounds.x;
+ int height = fVirtualBounds.height + fVirtualBounds.y;
+ int marginWidth = (clipping.x + clipping.width) - width;
+ int marginHeight = (clipping.y + clipping.height) - height;
+ if (marginWidth > 0 || marginHeight > 0) {
+ Color bg = getBackground();
+ gc.setBackground(getTerminalBackgroundColor());
+ if (marginWidth > 0) {
+ gc.fillRectangle(width, clipping.y, marginWidth, clipping.height);
+ }
+ if (marginHeight > 0) {
+ gc.fillRectangle(clipping.x, height, clipping.width, marginHeight);
+ }
+ gc.setBackground(bg);
+ }
+ }
+
+ /**
+ * @private
+ */
+ protected boolean inClipping(Rectangle clipping, Rectangle r) {
+ // TODO check if this is OK in all cases (the <=!)
+ //
+ if (r.x + r.width <= clipping.x)
+ return false;
+ if (clipping.x + clipping.width <= r.x)
+ return false;
+ if (r.y + r.height <= clipping.y)
+ return false;
+ if (clipping.y + clipping.height <= r.y)
+ return false;
+
+ return true;
+ }
+
+ /**
+ * @return the screen rect in virtual space (starting with (0,0))
+ * of the visible screen. (x,y>=0)
+ */
+ protected Rectangle getScreenRectInVirtualSpace() {
+ Rectangle r = new Rectangle(fClientArea.x - fVirtualBounds.x, fClientArea.y - fVirtualBounds.y,
+ fClientArea.width, fClientArea.height);
+ return r;
+ }
+
+ /**
+ * @return the rect in virtual space (starting with (0,0))
+ * of the visible screen. (x,y>=0)
+ */
+ protected Rectangle getRectInVirtualSpace(Rectangle r) {
+ return new Rectangle(r.x - fVirtualBounds.x, r.y - fVirtualBounds.y, r.width, r.height);
+ }
+
+ /**
+ * Sets the extent of the virtual display area
+ * @param width width of the display area
+ * @param height height of the display area
+ */
+ protected void setVirtualExtend(int width, int height) {
+ fVirtualBounds.width = width;
+ fVirtualBounds.height = height;
+ updateScrollbars();
+ updateViewRectangle();
+ }
+
+ /**
+ * sets the scrolling origin. Also sets the scrollbars.
+ * Does NOT redraw!
+ * Use negative values (move the virtual origin to the top left
+ * to see something in the screen (which is located at (0,0))
+ * @param x
+ * @param y
+ */
+ protected void setVirtualOrigin(int x, int y) {
+ if (fVirtualBounds.x != x || fVirtualBounds.y != y) {
+ fVirtualBounds.x = x;
+ fVirtualBounds.y = y;
+ getHorizontalBar().setSelection(-x);
+ getVerticalBar().setSelection(-y);
+ updateViewRectangle();
+ }
+ }
+
+ protected Rectangle getVirtualBounds() {
+ return cloneRectangle(fVirtualBounds);
+ }
+
+ /**
+ * @param x
+ * @return the virtual coordinate in screen space
+ */
+ protected int virtualXtoScreen(int x) {
+ return x + fVirtualBounds.x;
+ }
+
+ protected int virtualYtoScreen(int y) {
+ return y + fVirtualBounds.y;
+ }
+
+ protected int screenXtoVirtual(int x) {
+ return x - fVirtualBounds.x;
+ }
+
+ protected int screenYtoVirtual(int y) {
+ return y - fVirtualBounds.y;
+ }
+
+ /** called when the viewed part is changing */
+ private final Rectangle fViewRectangle = new Rectangle(0, 0, 0, 0);
+
+ protected void updateViewRectangle() {
+ if (fViewRectangle.x == -fVirtualBounds.x && fViewRectangle.y == -fVirtualBounds.y
+ && fViewRectangle.width == fClientArea.width && fViewRectangle.height == fClientArea.height)
+ return;
+ fViewRectangle.x = -fVirtualBounds.x;
+ fViewRectangle.y = -fVirtualBounds.y;
+ fViewRectangle.width = fClientArea.width;
+ fViewRectangle.height = fClientArea.height;
+ viewRectangleChanged(fViewRectangle.x, fViewRectangle.y, fViewRectangle.width, fViewRectangle.height);
+ }
+
+ protected Rectangle getViewRectangle() {
+ return cloneRectangle(fViewRectangle);
+ }
+
+ private Rectangle cloneRectangle(Rectangle r) {
+ return new Rectangle(r.x, r.y, r.width, r.height);
+ }
+
+ /**
+ * Called when the viewed part has changed.
+ * Override when you need this information....
+ * Is only called if the values change!
+ * @param x visible in virtual space
+ * @param y visible in virtual space
+ * @param width
+ * @param height
+ */
+ protected void viewRectangleChanged(int x, int y, int width, int height) {
+ }
+
+ /**
+ * @private
+ */
+ private void updateScrollbars() {
+ // don't get into infinite loops....
+ if (!fInUpdateScrollbars) {
+ fInUpdateScrollbars = true;
+ try {
+ doUpdateScrollbar();
+ } finally {
+ fInUpdateScrollbars = false;
+ }
+ } else {
+ if (!fInUpdateScrollbarsLogged) {
+ fInUpdateScrollbarsLogged = true;
+ TerminalPlugin.getDefault().getLog()
+ .log(new Status(IStatus.WARNING, TerminalPlugin.PLUGIN_ID, IStatus.OK,
+ "Unexpected Recursion in terminal", //$NON-NLS-1$
+ new RuntimeException()));
+ }
+ }
+ }
+
+ private void doUpdateScrollbar() {
+ Rectangle clientArea = getClientArea();
+ ScrollBar horizontal = getHorizontalBar();
+ // even if setVisible was called on the scrollbar, isVisible
+ // returns false if its parent is not visible.
+ if (!isVisible() || horizontal.isVisible()) {
+ horizontal.setPageIncrement(clientArea.width - horizontal.getIncrement());
+ int max = fVirtualBounds.width;
+ horizontal.setMaximum(max);
+ horizontal.setThumb(clientArea.width);
+ }
+ ScrollBar vertical = getVerticalBar();
+ // even if setVisible was called on the scrollbar, isVisible
+ // returns false if its parent is not visible.
+ if (!isVisible() || vertical.isVisible()) {
+ vertical.setPageIncrement(clientArea.height - vertical.getIncrement());
+ int max = fVirtualBounds.height;
+ vertical.setMaximum(max);
+ vertical.setThumb(clientArea.height);
+ }
+ }
+
+ protected boolean isVertialBarVisible() {
+ return getVerticalBar().isVisible();
+ }
+
+ protected void serVerticalBarVisible(boolean showVScrollBar) {
+ ScrollBar vertical = getVerticalBar();
+ vertical.setVisible(showVScrollBar);
+ vertical.setSelection(0);
+ }
+
+ protected boolean isHorizontalBarVisble() {
+ return getHorizontalBar().isVisible();
+ }
+
+ protected void setHorizontalBarVisible(boolean showHScrollBar) {
+ ScrollBar horizontal = getHorizontalBar();
+ horizontal.setVisible(showHScrollBar);
+ horizontal.setSelection(0);
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/terminal/model/ITerminalTextData.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/terminal/model/ITerminalTextData.java
new file mode 100644
index 00000000000..37a563284b2
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/terminal/model/ITerminalTextData.java
@@ -0,0 +1,159 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ * Martin Oberhuber (Wind River) - [261486][api][cleanup] Mark @noimplement interfaces as @noextend
+ * Anton Leherbauer (Wind River) - [453393] Add support for copying wrapped lines without line break
+ *******************************************************************************/
+package org.eclipse.tm.terminal.model;
+
+/**
+ * A writable matrix of characters and {@link TerminalStyle}. This is intended to be the
+ * low level representation of the text of a Terminal. Higher layers are
+ * responsible to fill the text and styles into this representation.
+ * <p>
+ * <b>Note: </b> Implementations of this interface has to be thread safe.
+ * </p>
+ *
+ * @noimplement This interface is not intended to be implemented by clients.
+ * @noextend This interface is not intended to be extended by clients.
+ */
+public interface ITerminalTextData extends ITerminalTextDataReadOnly {
+
+ /**
+ * Sets the dimensions of the data. If the dimensions are smaller than the current
+ * dimensions, the lines will be chopped. If the dimensions are bigger, then
+ * the new elements will be filled with 0 chars and null Style.
+ * @param height
+ * @param width
+ */
+ void setDimensions(int height, int width);
+
+ void setMaxHeight(int height);
+
+ int getMaxHeight();
+
+ /**
+ * Set a single character and the associated {@link TerminalStyle}.
+ * @param line line must be >=0 and < height
+ * @param column column must be >=0 and < width
+ * @param c the new character at this position
+ * @param style the style or null
+ * @since 5.0
+ */
+ void setChar(int line, int column, char c, TerminalStyle style);
+
+ /**
+ * Set an array of characters showing in the same {@link TerminalStyle}.
+ * @param line line must be >=0 and < height
+ * @param column column must be >=0 and < width
+ * @param chars the new characters at this position
+ * @param style the style or null
+ * @since 5.0
+ */
+ void setChars(int line, int column, char[] chars, TerminalStyle style);
+
+ /**
+ * Set a subrange of an array of characters showing in the same {@link TerminalStyle}.
+ * @param line line must be >=0 and < height
+ * @param column column must be >=0 and < width
+ * @param chars the new characters at this position
+ * @param start the start index in the chars array
+ * @param len the number of characters to insert. Characters beyond width are not inserted.
+ * @param style the style or null
+ * @since 5.0
+ */
+ void setChars(int line, int column, char[] chars, int start, int len, TerminalStyle style);
+
+ /**
+ * Cleans the entire line.
+ * @param line
+ */
+ void cleanLine(int line);
+
+ /**
+ * Shifts some lines up or down. The "empty" space is filled with <code>'\000'</code> chars
+ * and <code>null</code> {@link TerminalStyle}
+ * <p>To illustrate shift, here is some sample data:
+ * <pre>
+ * 0 aaaa
+ * 1 bbbb
+ * 2 cccc
+ * 3 dddd
+ * 4 eeee
+ * </pre>
+ *
+ * Shift a region of 3 lines <b>up</b> by one line <code>shift(1,3,-1)</code>
+ * <pre>
+ * 0 aaaa
+ * 1 cccc
+ * 2 dddd
+ * 3
+ * 4 eeee
+ * </pre>
+ *
+ *
+ * Shift a region of 3 lines <b>down</b> by one line <code>shift(1,3,1)</code>
+ * <pre>
+ * 0 aaaa
+ * 1
+ * 2 bbbb
+ * 3 cccc
+ * 4 eeee
+ * </pre>
+ * @param startLine the start line of the shift
+ * @param size the number of lines to shift
+ * @param shift how much scrolling is done. New scrolled area is filled with <code>'\000</code>'.
+ * Negative number means scroll down, positive scroll up (see example above).
+ */
+ void scroll(int startLine, int size, int shift);
+
+ /**Adds a new line to the terminal. If maxHeigth is reached, the entire terminal
+ * will be scrolled. Else a line will be added.
+ */
+ void addLine();
+
+ /**
+ * Copies the entire source into this and changes the size accordingly
+ * @param source
+ */
+ void copy(ITerminalTextData source);
+
+ /**
+ * Copy a sourceLine from source to this at destLine.
+ * @param source
+ * @param sourceLine
+ * @param destLine
+ */
+ void copyLine(ITerminalTextData source, int sourceLine, int destLine);
+
+ /**
+ * Copy <code>length</code> lines from source starting at sourceLine into this starting at
+ * destLine.
+ * @param source
+ * @param sourceStartLine
+ * @param destStartLine
+ * @param length
+ */
+ void copyRange(ITerminalTextData source, int sourceStartLine, int destStartLine, int length);
+
+ void setCursorLine(int line);
+
+ void setCursorColumn(int column);
+
+ /**
+ * Makes this line a wrapped line which logically continues on next line.
+ *
+ * @param line
+ * @since 3.3
+ */
+ void setWrappedLine(int line);
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/terminal/model/ITerminalTextDataReadOnly.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/terminal/model/ITerminalTextDataReadOnly.java
new file mode 100644
index 00000000000..af30864e56f
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/terminal/model/ITerminalTextDataReadOnly.java
@@ -0,0 +1,93 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ * Martin Oberhuber (Wind River) - [261486][api][cleanup] Mark @noimplement interfaces as @noextend
+ * Anton Leherbauer (Wind River) - [453393] Add support for copying wrapped lines without line break
+ *******************************************************************************/
+package org.eclipse.tm.terminal.model;
+
+/**
+ * @noimplement This interface is not intended to be implemented by clients.
+ * @noextend This interface is not intended to be extended by clients.
+ */
+public interface ITerminalTextDataReadOnly {
+
+ /**
+ * @return the width of the terminal
+ */
+ int getWidth();
+
+ /**
+ * @return the height of the terminal
+ */
+ int getHeight();
+
+ /**
+ * @param line be >=0 and < height
+ * @param startCol must be >=0 and < width
+ * @param numberOfCols must be > 0
+ * @return a the line segments of the specified range
+ */
+ LineSegment[] getLineSegments(int line, int startCol, int numberOfCols);
+
+ /**
+ * @param line must be >=0 and < height
+ * @param column must be >=0 and < width
+ * @return the character at column,line
+ */
+ char getChar(int line, int column);
+
+ /**
+ * @param line must be >=0 and < height
+ * @param column must be >=0 and < width
+ * @return style at column,line or null
+ * @since 5.0
+ */
+ TerminalStyle getStyle(int line, int column);
+
+ /**
+ * Creates a new instance of {@link ITerminalTextDataSnapshot} that
+ * can be used to track changes. Make sure to call {@link ITerminalTextDataSnapshot#detach()}
+ * if you don't need the snapshots anymore.
+ * <p><b>Note: </b>A new snapshot is empty and needs a call to {@link ITerminalTextDataSnapshot#updateSnapshot(boolean)} to
+ * get its initial values. You might want to setup the snapshot to your needs by calling
+ * {@link ITerminalTextDataSnapshot#setInterestWindow(int, int)}.
+ * </p>
+ * @return a new instance of {@link ITerminalTextDataSnapshot} that "listens" to changes of
+ * <code>this</code>.
+ */
+ public ITerminalTextDataSnapshot makeSnapshot();
+
+ char[] getChars(int line);
+
+ /**
+ * @since 5.0
+ */
+ TerminalStyle[] getStyles(int line);
+
+ /**
+ * @return the line in which the cursor is at the moment
+ */
+ int getCursorLine();
+
+ /**
+ * @return the column at which the cursor is at the moment
+ */
+ int getCursorColumn();
+
+ /**
+ * @param line
+ * @return true if this line got wrapped, ie. logically continues on next line
+ * @since 3.3
+ */
+ boolean isWrappedLine(int line);
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/terminal/model/ITerminalTextDataSnapshot.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/terminal/model/ITerminalTextDataSnapshot.java
new file mode 100644
index 00000000000..24752f8fc32
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/terminal/model/ITerminalTextDataSnapshot.java
@@ -0,0 +1,234 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ * Martin Oberhuber (Wind River) - [261486][api][cleanup] Mark @noimplement interfaces as @noextend
+ *******************************************************************************/
+package org.eclipse.tm.terminal.model;
+
+/**
+ * This class maintains a snapshot of an instance of {@link ITerminalTextData}.
+ * While the {@link ITerminalTextData} continues changing, the snapshot remains
+ * unchanged until the next snapshot is taken by calling
+ * {@link #updateSnapshot(boolean)}. This is important, because the
+ * {@link ITerminalTextData} might get modified by another thread. Suppose you
+ * would want to draw the content of the {@link ITerminalTextData} using the
+ * following loop:
+ *
+ * <pre>
+ * for (int line = 0; line &lt; term.getHeight(); line++)
+ * for (int column = 0; column &lt; term.getWidth(); column++)
+ * drawCharacter(column, line, term.getChar(column, line), term.getStyle(column, line));
+ * </pre>
+ *
+ * This might fail because the background thread could change the dimensions of
+ * the {@link ITerminalTextData} while you iterate the loop. One solution would
+ * be to put a <code>synchronized(term){}</code> statement around the code. This
+ * has two problems: 1. you would have to know about the internals of the
+ * synchronisation of {@link ITerminalTextData}. 2. The other thread that
+ * changes {@link ITerminalTextData} is blocked while the potentially slow
+ * drawing is done.
+ * <p>
+ * <b>Solution:</b> Take a snapshot of the terminal and use the snapshot to draw
+ * the content. There is no danger that the data structure get changed while you
+ * draw. There are also methods to find out what has changed to minimize the
+ * number of lines that get redrawn.
+ * </p>
+ *
+ * <p>
+ * <b>Drawing optimization</b>: To optimize redrawing of changed lines, this
+ * class keeps track of lines that have changed since the previous snapshot.
+ * </p>
+ *
+ * <pre>
+ * // iterate over the potentially changed lines
+ * for (int line = snap.getFirstChangedLine(); line &lt;= snap.getLastChangedLine(); line++)
+ * // redraw only if the line has changed
+ * if (snap.hasLineChanged(line))
+ * for (int column = 0; column &lt; snap.getWidth(); column++)
+ * drawCharacter(column, line, snap.getChar(column, line), snap.getStyle(column, line));
+ * </pre>
+ *
+ * <p>
+ * <b>Scroll optimization:</b> Often new lines are appended at the bottom of the
+ * terminal and the rest of the lines are scrolled up. In this case all lines
+ * would be marked as changed. To optimize for this case,
+ * {@link #updateSnapshot(boolean)} can be called with <code>true</code> for the
+ * <code>detectScrolling</code> parameter. The object will keep track of
+ * scrolling. The UI must <b>first</b> handle the scrolling and then use the
+ * {@link #hasLineChanged(int)} method to determine scrolling:
+ *
+ * <pre>
+ * // scroll the visible region of the UI &lt;b&gt;before&lt;/b&gt; drawing the changed lines.
+ * doUIScrolling(snap.getScrollChangeY(), snap.getScrollChangeN(), snap.getScrollChangeShift());
+ * // iterate over the potentially changed lines
+ * for (int line = snap.getFirstChangedLine(); line &lt;= snap.getFirstChangedLine(); line++)
+ * // redraw only if the line has changed
+ * if (snap.hasLineChanged(line))
+ * for (int column = 0; column &lt; snap.getWidth(); column++)
+ * drawCharacter(column, line, snap.getChar(column, line), snap.getStyle(column, line));
+ * </pre>
+ *
+ * </p>
+ * <p>
+ * <b>Threading Note</b>: This class is not thread safe! All methods have to be
+ * called by the a same thread, that created the instance by calling
+ * {@link ITerminalTextDataReadOnly#makeSnapshot()}.
+ * </p>
+ *
+ * @noimplement This interface is not intended to be implemented by clients.
+ * @noextend This interface is not intended to be extended by clients.
+ */
+public interface ITerminalTextDataSnapshot extends ITerminalTextDataReadOnly {
+ /**
+ * This listener gets called when the current snapshot
+ * is out of date. Calling {@link ITerminalTextDataSnapshot#updateSnapshot(boolean)}
+ * will have an effect. Once the {@link #snapshotOutOfDate(ITerminalTextDataSnapshot)} method is called,
+ * it will not be called until {@link ITerminalTextDataSnapshot#updateSnapshot(boolean)}
+ * is called and a new snapshot needs to be updated again.
+ * <p>
+ * A typical terminal view would not update the snapshot immediately
+ * after the {@link #snapshotOutOfDate(ITerminalTextDataSnapshot)} has been called. It would introduce a
+ * delay to update the UI (and the snapshot} 10 or 20 times per second.
+ *
+ * <p>Make sure you don't spend too much time in this method.
+ */
+ interface SnapshotOutOfDateListener {
+ /**
+ * Gets called when the snapshot is out of date. To get the snapshot up to date,
+ * call {@link ITerminalTextDataSnapshot#updateSnapshot(boolean)}.
+ * @param snapshot The snapshot that is out of date
+ */
+ void snapshotOutOfDate(ITerminalTextDataSnapshot snapshot);
+ }
+
+ void addListener(SnapshotOutOfDateListener listener);
+
+ void removeListener(SnapshotOutOfDateListener listener);
+
+ /**
+ * Ends the listening to the {@link ITerminalTextData}. After this
+ * has been called no new snapshot data is collected.
+ */
+ void detach();
+
+ /**
+ * @return true if the data has changed since the previous snapshot.
+ */
+ boolean isOutOfDate();
+
+ /**
+ * The window of interest is the region the snapshot should track.
+ * Changes outside this region are ignored. The change takes effect after
+ * an update!
+ * @param startLine -1 means track the end of the data
+ * @param size number of lines to track. A size of -1 means track all.
+ */
+ void setInterestWindow(int startLine, int size);
+
+ int getInterestWindowStartLine();
+
+ int getInterestWindowSize();
+
+ /**
+ * Create a new snapshot of the {@link ITerminalTextData}. It will efficiently
+ * copy the data of the {@link ITerminalTextData} into an internal representation.
+ * The snapshot also keeps track of the changes since the previous snapshot.
+ * <p>With the methods {@link #getFirstChangedLine()}, {@link #getLastChangedLine()} and
+ * {@link #hasLineChanged(int)}
+ * you can find out what has changed in the current snapshot since the previous snapshot.
+ * @param detectScrolling if <code>true</code> the snapshot tries to identify scroll
+ * changes since the last snapshot. In this case the information about scrolling
+ * can be retrieved using the following methods:
+ * {@link #getScrollWindowStartLine()}, {@link #getScrollWindowSize()} and {@link #getScrollWindowShift()}
+ * <br><b>Note:</b> The method {@link #hasLineChanged(int)} returns changes <b>after</b> the
+ * scrolling has been applied.
+ */
+ void updateSnapshot(boolean detectScrolling);
+
+ /**
+ * @return The first line changed in this snapshot compared
+ * to the previous snapshot.
+ *
+ * <p><b>Note:</b> If no line has changed, this
+ * returns {@link Integer#MAX_VALUE}
+ *
+ * <p><b>Note:</b> if {@link #updateSnapshot(boolean)} has been called with <code>true</code>,
+ * then this does not include lines that only have been scrolled. This is the
+ * first line that has changed <b>after</b> the scroll has been applied.
+ */
+ int getFirstChangedLine();
+
+ /**
+ * @return The last line changed in this snapshot compared
+ * to the previous snapshot. If the height has changed since the
+ * last update of the snapshot, then the returned value is within
+ * the new dimensions.
+ *
+ * <p><b>Note:</b> If no line has changed, this returns <code>-1</code>
+ *
+ * <p><b>Note:</b> if {@link #updateSnapshot(boolean)} has been called with <code>true</code>,
+ * then this does not include lines that only have been scrolled. This is the
+ * last line that has changed <b>after</b> the scroll has been applied.
+ *
+ * <p>A typical for loop using this method would look like this (note the <code>&lt;=</code> in the for loop):
+ * <pre>
+ * for(int line=snap.{@link #getFirstChangedLine()}; line <b>&lt;=</b> snap.getLastChangedLine(); line++)
+ * if(snap.{@link #hasLineChanged(int) hasLineChanged(line)})
+ * doSomething(line);
+ * </pre>
+ */
+ int getLastChangedLine();
+
+ /**
+ * @param line
+ * @return true if the line has changed since the previous snapshot
+ */
+ boolean hasLineChanged(int line);
+
+ boolean hasDimensionsChanged();
+
+ /**
+ * @return true if the terminal has changed (and not just the
+ * window of interest)
+ */
+ boolean hasTerminalChanged();
+
+ /**
+ * If {@link #updateSnapshot(boolean)} was called with <code>true</code>, then this method
+ * returns the top of the scroll region.
+ * @return The first line scrolled in this snapshot compared
+ * to the previous snapshot. See also {@link ITerminalTextData#scroll(int, int, int)}.
+ */
+ int getScrollWindowStartLine();
+
+ /**
+ * If {@link #updateSnapshot(boolean)} was called with <code>true</code>, then this method
+ * returns the size of the scroll region.
+ * @return The number of lines scrolled in this snapshot compared
+ * to the previous snapshot. See also {@link ITerminalTextData#scroll(int, int, int)}
+ * If nothing has changed, 0 is returned.
+ */
+ int getScrollWindowSize();
+
+ /**
+ * If {@link #updateSnapshot(boolean)} was called with <code>true</code>, then this method
+ * returns number of lines moved by the scroll region.
+ * @return The the scroll shift of this snapshot compared
+ * to the previous snapshot. See also {@link ITerminalTextData#scroll(int, int, int)}
+ */
+ int getScrollWindowShift();
+
+ /**
+ * @return The {@link ITerminalTextData} on that this instance is observing.
+ */
+ ITerminalTextData getTerminalTextData();
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/terminal/model/LineSegment.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/terminal/model/LineSegment.java
new file mode 100644
index 00000000000..548dc705891
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/terminal/model/LineSegment.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.model;
+
+public class LineSegment {
+ private final String fText;
+ private final int fCol;
+ private final TerminalStyle fStyle;
+
+ /**
+ * @since 5.0
+ */
+ public LineSegment(int col, String text, TerminalStyle style) {
+ fCol = col;
+ fText = text;
+ fStyle = style;
+ }
+
+ /**
+ * @since 5.0
+ */
+ public TerminalStyle getStyle() {
+ return fStyle;
+ }
+
+ public String getText() {
+ return fText;
+ }
+
+ public int getColumn() {
+ return fCol;
+ }
+
+ @Override
+ public String toString() {
+ return "LineSegment(" + fCol + ", \"" + fText + "\"," + fStyle + ")"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+ }
+} \ No newline at end of file
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/terminal/model/TerminalColor.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/terminal/model/TerminalColor.java
new file mode 100644
index 00000000000..0bc12ebabdb
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/terminal/model/TerminalColor.java
@@ -0,0 +1,203 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Kichwa Coders Canada Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.tm.terminal.model;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.jface.resource.ColorDescriptor;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.RGB;
+import org.eclipse.swt.widgets.Display;
+
+/**
+ * Colors that can be used in the Terminal are represented by this class. The enum contains
+ * the colors with well known names defined by the ANSI Escape Sequences, plus other colors needed
+ * to render a display (such as Background color).
+ *
+ * Rather than name all the colors when using ANSI 8-bit indexed colors, the indexed colors
+ * can be accessed via the {@link #getIndexedRGBColor(int)} or {@link #getIndexedRGBColor(int)}
+ * (use {@link #isIndexedTerminalColor(int)} to determine which one is appropriate.
+ *
+ * The {@link TerminalStyle} supports any arbitrary color by using {@link RGB} defined colors.
+ * This class provides the connection between the names exposed to the user in preferences
+ * and their use in the terminal, along with how colors change when other attributes (such as
+ * bright and invertColors) are applied to them.
+ *
+ * @since 5.0
+ */
+public enum TerminalColor {
+ BLACK, //
+ RED, //
+ GREEN, //
+ YELLOW, //
+ BLUE, //
+ MAGENTA, //
+ CYAN, //
+ WHITE, //
+
+ BRIGHT_BLACK, //
+ BRIGHT_RED, //
+ BRIGHT_GREEN, //
+ BRIGHT_YELLOW, //
+ BRIGHT_BLUE, //
+ BRIGHT_MAGENTA, //
+ BRIGHT_CYAN, //
+ BRIGHT_WHITE, //
+
+ FOREGROUND, //
+ BACKGROUND, //
+ SELECTION_FOREGROUND, //
+ SELECTION_BACKGROUND;
+
+ /**
+ * The first 16-items in the 8-bit lookup table map to the user changeable colors
+ * above, so this array handles that mapping.
+ */
+ private final static TerminalColor table8bitIndexedTerminalColors[] = new TerminalColor[16];
+
+ /**
+ * The rest of the colors in the lookup table (240 colors) are pre-defined by
+ * the standard. The colors that fill this table were derived from
+ * https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit which was more
+ * digestible and accessible than the underlying ITU and ISO standards.
+ */
+ private final static RGB table8bitIndexedRGB[] = new RGB[256 - 16];
+
+ /**
+ * Color to use instead when inverted color is selected
+ */
+ private TerminalColor invertColor;
+
+ /**
+ * Color to use instead when bright color is selected
+ */
+ private TerminalColor brightColor;
+
+ /**
+ * Pre-calculate the lookup tables for 8-bit colors, inverses and equivalent brights.
+ */
+ static {
+ TerminalColor[] values = TerminalColor.values();
+
+ // 8-bit color lookup tables
+ {
+ int index = 0;
+ for (; index < 16; index++) {
+ TerminalColor c = values[index];
+ table8bitIndexedTerminalColors[index] = c;
+ }
+
+ int vals[] = { 0x00, 0x5f, 0x87, 0xaf, 0xd7, 0xff };
+ Assert.isTrue(index == 16);
+ for (int r = 0; r < 6; r++) {
+ for (int g = 0; g < 6; g++) {
+ for (int b = 0; b < 6; b++) {
+ table8bitIndexedRGB[index++ - 16] = new RGB(vals[r], vals[g], vals[b]);
+ }
+ }
+ }
+
+ int greys[] = { 0x08, 0x12, 0x1c, 0x26, 0x30, 0x3a, 0x44, 0x4e, 0x58, 0x62, 0x6c, 0x76, 0x80, 0x8a, 0x94,
+ 0x9e, 0xa8, 0xb2, 0xbc, 0xc6, 0xd0, 0xda, 0xe4, 0xee };
+
+ Assert.isTrue(index == 232);
+ for (int g : greys) {
+ table8bitIndexedRGB[index++ - 16] = new RGB(g, g, g);
+ }
+ Assert.isTrue(index == 256);
+ }
+
+ // bright equivalents
+ {
+ // The second set of 8 colors are the bright of the first 8.
+ for (int i = 0; i < 8; i++) {
+ values[i].brightColor = values[i + 8];
+ }
+ // The rest of the colors are not brightened
+ for (int i = 8; i < values.length; i++) {
+ values[i].brightColor = values[i];
+ }
+ }
+
+ // inverses
+ {
+ // by default make all colors invert of themself
+ for (int i = 0; i < values.length; i++) {
+ values[i].invertColor = values[i];
+ }
+ // and then mark the colors that are actual inverts
+ inverts(BLACK, WHITE);
+ inverts(BRIGHT_BLACK, BRIGHT_WHITE);
+ inverts(BACKGROUND, FOREGROUND);
+ }
+
+ }
+
+ private static void inverts(TerminalColor a, TerminalColor b) {
+ a.invertColor = b;
+ b.invertColor = a;
+ }
+
+ /**
+ * Return a new color for the given color with inversions or brightness attributes applied.
+ *
+ * @param invert For invertible colors, return the inverse (typically white &lt;-&gt; black)
+ * @param bright returns the brighter version of the color if one is available
+ * @return {@link ColorDescriptor} that a {@link Color} can be made from
+ * using {@link ColorDescriptor#createColor(org.eclipse.swt.graphics.Device)}
+ * @throws NullPointerException if there is no current {@link Display}
+ */
+ public TerminalColor convertColor(boolean invert, boolean bright) {
+ TerminalColor selected = this;
+ // it doesn't matter which order you apply bright and invert, you get to
+ // the same color when both are set
+ if (invert) {
+ selected = selected.invertColor;
+ }
+ if (bright) {
+ selected = selected.brightColor;
+ }
+ return selected;
+ }
+
+ /**
+ * Query for whether the 8-bit color index will return a named color, in which case
+ * {@link #getIndexedTerminalColor(int)} must be called to get the named color. Use
+ * {@link #convertColor(boolean, boolean)} if this method returns false.
+ *
+ * @param index 8-bit index.
+ * @return true for named colors, false for RGB colors
+ */
+ public static boolean isIndexedTerminalColor(int index) {
+ Assert.isLegal(index >= 0 && index < 256, "Invalid 8-bit table index out of range 0-255"); //$NON-NLS-1$
+ return index < table8bitIndexedTerminalColors.length && index >= 0;
+ }
+
+ /**
+ * Return the named color for the given 8-bit index.
+ *
+ * @param index 8-bit index in 0-15 range.
+ * @return named color
+ */
+ public static TerminalColor getIndexedTerminalColor(int index) {
+ Assert.isLegal(isIndexedTerminalColor(index), "Invalid table index used for ANSI Color"); //$NON-NLS-1$
+ return table8bitIndexedTerminalColors[index];
+ }
+
+ /**
+ * Return the RGB color for the given 8-bit index.
+ *
+ * @param index 8-bit index in 16-255 range.
+ * @return RGB color
+ */
+ public static RGB getIndexedRGBColor(int index) {
+ Assert.isLegal(index >= 16 && index < 256, "Invalid table index used for RGB Color"); //$NON-NLS-1$
+ return table8bitIndexedRGB[index - 16];
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/terminal/model/TerminalStyle.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/terminal/model/TerminalStyle.java
new file mode 100644
index 00000000000..d81d4b8466e
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/terminal/model/TerminalStyle.java
@@ -0,0 +1,285 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2020 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.model;
+
+import java.util.Collections;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.swt.graphics.RGB;
+import org.eclipse.tm.internal.terminal.control.impl.TerminalPlugin;
+import org.eclipse.tm.internal.terminal.provisional.api.Logger;
+
+/**
+ * @author scharf
+ * Flyweight
+ * Threadsafe.
+ * @since 5.0
+ *
+ */
+// TODO add an Object for user data, use weak map to keep track of styles with associated
+// user data
+public class TerminalStyle {
+ private final TerminalColor fForegroundTerminalColor;
+ private final TerminalColor fBackgroundTerminalColor;
+ private final RGB fForegroundRGB;
+ private final RGB fBackgroundRGB;
+ private final boolean fBold;
+ private final boolean fBlink;
+ private final boolean fUnderline;
+ private final boolean fReverse;
+ private final static Map<TerminalStyle, TerminalStyle> fgStyles = Collections
+ .synchronizedMap(new LinkedHashMap<TerminalStyle, TerminalStyle>() {
+ @Override
+ protected boolean removeEldestEntry(Map.Entry<TerminalStyle, TerminalStyle> eldest) {
+ int size = size();
+ boolean removeEldest = size >= 1000;
+ if (TerminalPlugin.isOptionEnabled(Logger.TRACE_DEBUG_LOG_VT100BACKEND)) {
+ if (removeEldest) {
+ Logger.log("Removing eldest Style from style cache, size = " + size); //$NON-NLS-1$
+ } else {
+ Logger.log("Leaving eldest Style in style cache, size = " + size); //$NON-NLS-1$
+ }
+ }
+ return removeEldest;
+ }
+ });
+
+ private TerminalStyle(TerminalColor foregroundTerminalColor, TerminalColor backgroundTerminalColor,
+ RGB foregroundRGB, RGB backgroundRGB, boolean bold, boolean blink, boolean underline, boolean reverse) {
+ Assert.isLegal(foregroundTerminalColor == null || foregroundRGB == null,
+ "Only one of ANSI or RGB colors can be specified as a foreground color"); //$NON-NLS-1$
+ Assert.isLegal(backgroundTerminalColor == null || backgroundRGB == null,
+ "Only one of ANSI or RGB colors can be specified as a background color"); //$NON-NLS-1$
+ fForegroundTerminalColor = foregroundTerminalColor;
+ fBackgroundTerminalColor = backgroundTerminalColor;
+ fForegroundRGB = foregroundRGB;
+ fBackgroundRGB = backgroundRGB;
+ fBold = bold;
+ fBlink = blink;
+ fUnderline = underline;
+ fReverse = reverse;
+ }
+
+ public static TerminalStyle getStyle(TerminalColor foregroundTerminalColor, TerminalColor backgroundTerminalColor,
+ RGB foregroundRGB, RGB backgroundRGB, boolean bold, boolean blink, boolean underline, boolean reverse) {
+ TerminalStyle style = new TerminalStyle(foregroundTerminalColor, backgroundTerminalColor, foregroundRGB,
+ backgroundRGB, bold, blink, underline, reverse);
+ // If set had a computeIfAbsent we would use a set, instead just store 1-2-1 mapping
+ return fgStyles.computeIfAbsent(style, (s) -> style);
+ }
+
+ public static TerminalStyle getStyle(TerminalColor foregroundTerminalColor, TerminalColor backgroundTerminalColor,
+ boolean bold, boolean blink, boolean underline, boolean reverse) {
+ return getStyle(foregroundTerminalColor, backgroundTerminalColor, null, null, bold, blink, underline, reverse);
+ }
+
+ public static TerminalStyle getStyle(RGB foregroundRGB, RGB backgroundRGB, boolean bold, boolean blink,
+ boolean underline, boolean reverse) {
+ return getStyle(null, null, foregroundRGB, backgroundRGB, bold, blink, underline, reverse);
+ }
+
+ public static TerminalStyle getDefaultStyle() {
+ return getStyle(TerminalColor.FOREGROUND, TerminalColor.BACKGROUND);
+ }
+
+ public static TerminalStyle getStyle(TerminalColor foregroundTerminalColor, TerminalColor backgroundTerminalColor) {
+ return getStyle(foregroundTerminalColor, backgroundTerminalColor, null, null, false, false, false, false);
+ }
+
+ public TerminalStyle setForeground(TerminalColor foregroundTerminalColor) {
+ return getStyle(foregroundTerminalColor, fBackgroundTerminalColor, null, fBackgroundRGB, fBold, fBlink,
+ fUnderline, fReverse);
+ }
+
+ public TerminalStyle setBackground(TerminalColor backgroundTerminalColor) {
+ return getStyle(fForegroundTerminalColor, backgroundTerminalColor, fForegroundRGB, null, fBold, fBlink,
+ fUnderline, fReverse);
+ }
+
+ public TerminalStyle setForeground(RGB foregroundRGB) {
+ return getStyle(null, fBackgroundTerminalColor, foregroundRGB, fBackgroundRGB, fBold, fBlink, fUnderline,
+ fReverse);
+ }
+
+ public TerminalStyle setBackground(RGB backgroundRGB) {
+ return getStyle(fForegroundTerminalColor, null, fForegroundRGB, backgroundRGB, fBold, fBlink, fUnderline,
+ fReverse);
+ }
+
+ public TerminalStyle setForeground(TerminalStyle other) {
+ return getStyle(other.fForegroundTerminalColor, fBackgroundTerminalColor, other.fForegroundRGB, fBackgroundRGB,
+ fBold, fBlink, fUnderline, fReverse);
+ }
+
+ public TerminalStyle setBackground(TerminalStyle other) {
+ return getStyle(fForegroundTerminalColor, other.fBackgroundTerminalColor, fForegroundRGB, other.fBackgroundRGB,
+ fBold, fBlink, fUnderline, fReverse);
+ }
+
+ public TerminalStyle setForeground(int eightBitindexedColor) {
+ boolean isIndexTerminalColor = TerminalColor.isIndexedTerminalColor(eightBitindexedColor);
+ if (isIndexTerminalColor) {
+ TerminalColor foregroundTerminalColor = TerminalColor.getIndexedTerminalColor(eightBitindexedColor);
+ return getStyle(foregroundTerminalColor, fBackgroundTerminalColor, null, fBackgroundRGB, fBold, fBlink,
+ fUnderline, fReverse);
+ } else {
+ RGB foregroundRGB = TerminalColor.getIndexedRGBColor(eightBitindexedColor);
+ return getStyle(null, fBackgroundTerminalColor, foregroundRGB, fBackgroundRGB, fBold, fBlink, fUnderline,
+ fReverse);
+ }
+ }
+
+ public TerminalStyle setBackground(int eightBitindexedColor) {
+ boolean isIndexTerminalColor = TerminalColor.isIndexedTerminalColor(eightBitindexedColor);
+ if (isIndexTerminalColor) {
+ TerminalColor backgroundTerminalColor = TerminalColor.getIndexedTerminalColor(eightBitindexedColor);
+ return getStyle(fForegroundTerminalColor, backgroundTerminalColor, fForegroundRGB, null, fBold, fBlink,
+ fUnderline, fReverse);
+ } else {
+ RGB backgroundRGB = TerminalColor.getIndexedRGBColor(eightBitindexedColor);
+ return getStyle(fForegroundTerminalColor, null, fForegroundRGB, backgroundRGB, fBold, fBlink, fUnderline,
+ fReverse);
+ }
+ }
+
+ public TerminalStyle setBold(boolean bold) {
+ return getStyle(fForegroundTerminalColor, fBackgroundTerminalColor, fForegroundRGB, fBackgroundRGB, bold,
+ fBlink, fUnderline, fReverse);
+ }
+
+ public TerminalStyle setBlink(boolean blink) {
+ return getStyle(fForegroundTerminalColor, fBackgroundTerminalColor, fForegroundRGB, fBackgroundRGB, fBold,
+ blink, fUnderline, fReverse);
+ }
+
+ public TerminalStyle setUnderline(boolean underline) {
+ return getStyle(fForegroundTerminalColor, fBackgroundTerminalColor, fForegroundRGB, fBackgroundRGB, fBold,
+ fBlink, underline, fReverse);
+ }
+
+ public TerminalStyle setReverse(boolean reverse) {
+ return getStyle(fForegroundTerminalColor, fBackgroundTerminalColor, fForegroundRGB, fBackgroundRGB, fBold,
+ fBlink, fUnderline, reverse);
+ }
+
+ public TerminalColor getForegroundTerminalColor() {
+ return fForegroundTerminalColor;
+ }
+
+ public TerminalColor getBackgroundTerminalColor() {
+ return fBackgroundTerminalColor;
+ }
+
+ public RGB getForegroundRGB() {
+ return fForegroundRGB;
+ }
+
+ public RGB getBackgroundRGB() {
+ return fBackgroundRGB;
+ }
+
+ public boolean isBlink() {
+ return fBlink;
+ }
+
+ public boolean isBold() {
+ return fBold;
+ }
+
+ public boolean isReverse() {
+ return fReverse;
+ }
+
+ public boolean isUnderline() {
+ return fUnderline;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((fBackgroundTerminalColor == null) ? 0 : fBackgroundTerminalColor.hashCode());
+ result = prime * result + ((fBackgroundRGB == null) ? 0 : fBackgroundRGB.hashCode());
+ result = prime * result + (fBlink ? 1231 : 1237);
+ result = prime * result + (fBold ? 1231 : 1237);
+ result = prime * result + ((fForegroundTerminalColor == null) ? 0 : fForegroundTerminalColor.hashCode());
+ result = prime * result + ((fForegroundRGB == null) ? 0 : fForegroundRGB.hashCode());
+ result = prime * result + (fReverse ? 1231 : 1237);
+ result = prime * result + (fUnderline ? 1231 : 1237);
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ TerminalStyle other = (TerminalStyle) obj;
+ if (fBackgroundTerminalColor != other.fBackgroundTerminalColor)
+ return false;
+ if (fBackgroundRGB == null) {
+ if (other.fBackgroundRGB != null)
+ return false;
+ } else if (!fBackgroundRGB.equals(other.fBackgroundRGB))
+ return false;
+ if (fBlink != other.fBlink)
+ return false;
+ if (fBold != other.fBold)
+ return false;
+ if (fForegroundTerminalColor != other.fForegroundTerminalColor)
+ return false;
+ if (fForegroundRGB == null) {
+ if (other.fForegroundRGB != null)
+ return false;
+ } else if (!fForegroundRGB.equals(other.fForegroundRGB))
+ return false;
+ if (fReverse != other.fReverse)
+ return false;
+ if (fUnderline != other.fUnderline)
+ return false;
+ return true;
+ }
+
+ @Override
+ public String toString() {
+ StringBuffer result = new StringBuffer();
+ result.append("Style(foreground="); //$NON-NLS-1$
+ if (fForegroundTerminalColor != null) {
+ result.append(fForegroundTerminalColor);
+ } else {
+ result.append(fForegroundRGB);
+ }
+ result.append(", background="); //$NON-NLS-1$
+ if (fForegroundTerminalColor != null) {
+ result.append(fBackgroundTerminalColor);
+ } else {
+ result.append(fBackgroundRGB);
+ }
+ if (fBlink)
+ result.append(", blink"); //$NON-NLS-1$
+ if (fBold)
+ result.append(", bold"); //$NON-NLS-1$
+ if (fBlink)
+ result.append(", blink"); //$NON-NLS-1$
+ if (fReverse)
+ result.append(", reverse"); //$NON-NLS-1$
+ if (fUnderline)
+ result.append(", underline"); //$NON-NLS-1$
+ result.append(")"); //$NON-NLS-1$
+ return result.toString();
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/terminal/model/TerminalTextDataFactory.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/terminal/model/TerminalTextDataFactory.java
new file mode 100644
index 00000000000..25729aa3426
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/terminal/model/TerminalTextDataFactory.java
@@ -0,0 +1,20 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.model;
+
+import org.eclipse.tm.internal.terminal.model.SynchronizedTerminalTextData;
+import org.eclipse.tm.internal.terminal.model.TerminalTextData;
+
+public class TerminalTextDataFactory {
+ static public ITerminalTextData makeTerminalTextData() {
+ return new SynchronizedTerminalTextData(new TerminalTextData());
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/terminal/model/TextRange.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/terminal/model/TextRange.java
new file mode 100644
index 00000000000..b73576f4c3c
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/terminal/model/TextRange.java
@@ -0,0 +1,96 @@
+/*******************************************************************************
+ * Copyright (c) 2021 Fabrizio Iannetti.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.tm.terminal.model;
+
+import org.eclipse.swt.graphics.Point;
+
+/**
+ * Represents a range of text in the terminal.
+ * <p>
+ * Used, for example, to store location of active hover
+ *
+ * @since 5.2
+ */
+public final class TextRange {
+ public final int colStart;
+ public final int colEnd;
+ public final int rowStart;
+ public final int rowEnd;
+ public final String text;
+
+ public static final TextRange EMPTY = new TextRange(0, 0, 0, 0, ""); //$NON-NLS-1$
+
+ /**
+ * Constructor.
+ *
+ * @param rowStart start row
+ * @param rowEnd end row
+ * @param colStart start column (exclusive)
+ * @param colEnd end column (exclusive)
+ * @param text text in the range
+ */
+ public TextRange(int rowStart, int rowEnd, int colStart, int colEnd, String text) {
+ super();
+ this.colStart = colStart;
+ this.colEnd = colEnd;
+ this.rowStart = rowStart;
+ this.rowEnd = rowEnd;
+ this.text = text;
+ }
+
+ public boolean contains(int col, int row) {
+ int colStartInrow = row == rowStart ? colStart : 0;
+ int colEndInRow = row == rowEnd - 1 ? colEnd : col + 1;
+ return col >= colStartInrow && col < colEndInRow && row >= rowStart && row < rowEnd;
+ }
+
+ public boolean contains(int line) {
+ return line >= rowStart && line < rowEnd;
+ }
+
+ /**
+ * Whether the range represents a non-empty (non-zero) amount of text
+ */
+ public boolean isEmpty() {
+ return !(colEnd > colStart || rowEnd > rowStart);
+ }
+
+ public Point getStart() {
+ return new Point(colStart, rowStart);
+ }
+
+ public Point getEnd() {
+ return new Point(colEnd, rowEnd);
+ }
+
+ public int getColStart() {
+ return colStart;
+ }
+
+ public int getColEnd() {
+ return colEnd;
+ }
+
+ public int getRowStart() {
+ return rowStart;
+ }
+
+ public int getRowEnd() {
+ return rowEnd;
+ }
+
+ @Override
+ public String toString() {
+ return String.format("TextRange (%s,%s)-(%s,%s)-'%s'", //$NON-NLS-1$
+ colStart, rowStart, colEnd, rowEnd, text);
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/.classpath b/terminal/plugins/org.eclipse.tm.terminal.test/.classpath
new file mode 100644
index 00000000000..95446aef44b
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/.classpath
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins">
+ <accessrules>
+ <accessrule kind="accessible" pattern="org/eclipse/tm/internal/terminal/**"/>
+ </accessrules>
+ </classpathentry>
+ <classpathentry kind="src" path="src">
+ <attributes>
+ <attribute name="test" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/.gitignore b/terminal/plugins/org.eclipse.tm.terminal.test/.gitignore
new file mode 100644
index 00000000000..ae3c1726048
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/.project b/terminal/plugins/org.eclipse.tm.terminal.test/.project
new file mode 100644
index 00000000000..492f603b4c0
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.tm.terminal.test</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/.settings/org.eclipse.core.resources.prefs b/terminal/plugins/org.eclipse.tm.terminal.test/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/.settings/org.eclipse.jdt.core.prefs b/terminal/plugins/org.eclipse.tm.terminal.test/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..5b1c443114d
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=ignore
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
+org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=ignore
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/.settings/org.eclipse.jdt.launching.prefs b/terminal/plugins/org.eclipse.tm.terminal.test/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 00000000000..f8a131b56e0
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_COMPILER_COMPLIANCE_DOES_NOT_MATCH_JRE=warning
+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=warning
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/.settings/org.eclipse.jdt.ui.prefs b/terminal/plugins/org.eclipse.tm.terminal.test/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/.settings/org.eclipse.pde.api.tools.prefs b/terminal/plugins/org.eclipse.tm.terminal.test/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 00000000000..ec9fbf321d0
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,184 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITH_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_FIELD=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERCLASS_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_CHANGED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENTS=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETERS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Error
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Warning
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+MISSING_EE_DESCRIPTIONS=Warning
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=false
+changed_execution_env=Error
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+incompatible_api_component_version_report_major_without_breaking_change=Warning
+incompatible_api_component_version_report_minor_without_api_change=Warning
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/.settings/org.eclipse.pde.prefs b/terminal/plugins/org.eclipse.tm.terminal.test/.settings/org.eclipse.pde.prefs
new file mode 100644
index 00000000000..51a63ec9988
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,35 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=2
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=2
+compilers.p.missing-version-export-package=2
+compilers.p.missing-version-import-package=2
+compilers.p.missing-version-require-bundle=2
+compilers.p.no-required-att=0
+compilers.p.no.automatic.module=1
+compilers.p.not-externalized-att=2
+compilers.p.service.component.without.lazyactivation=1
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/META-INF/MANIFEST.MF b/terminal/plugins/org.eclipse.tm.terminal.test/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..f7163566b19
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/META-INF/MANIFEST.MF
@@ -0,0 +1,24 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.tm.terminal.test;singleton:=true
+Bundle-Version: 4.6.0.qualifier
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Require-Bundle: org.junit,
+ org.eclipse.tm.terminal.control;bundle-version="4.5.0",
+ org.eclipse.core.runtime,
+ org.eclipse.ui,
+ org.junit.jupiter.api,
+ org.opentest4j
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Export-Package: org.eclipse.tm.internal.terminal.connector;x-internal:=true,
+ org.eclipse.tm.internal.terminal.emulator;x-internal:=true,
+ org.eclipse.tm.internal.terminal.model;x-internal:=true,
+ org.eclipse.tm.internal.terminal.speedtest;x-internal:=true,
+ org.eclipse.tm.internal.terminal.test.terminalcanvas;x-internal:=true,
+ org.eclipse.tm.internal.terminal.test.ui;x-internal:=true,
+ org.eclipse.tm.internal.terminal.textcanvas;x-internal:=true,
+ org.eclipse.tm.terminal.model,
+ org.eclipse.tm.terminal.test
+Automatic-Module-Name: org.eclipse.tm.terminal.test
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/about.html b/terminal/plugins/org.eclipse.tm.terminal.test/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/about.ini b/terminal/plugins/org.eclipse.tm.terminal.test/about.ini
new file mode 100644
index 00000000000..3adc27ab587
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/about.ini
@@ -0,0 +1,27 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%blurb
+
+# Property "windowImage" contains path to window icon (16x16)
+# needed for primary features only
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=tm32.png
+
+# Property "aboutImage" contains path to product image (500x330 or 115x164)
+# needed for primary features only
+
+# Property "appName" contains name of the application (not translated)
+# needed for primary features only
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+# optional
+
+# Property "welcomePerspective" contains the id of the perspective in which the
+# welcome page is to be opened.
+# optional \ No newline at end of file
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/about.properties b/terminal/plugins/org.eclipse.tm.terminal.test/about.properties
new file mode 100644
index 00000000000..bd810e7c32b
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/about.properties
@@ -0,0 +1,26 @@
+###############################################################################
+# Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# IBM Corporation - initial API and implementation
+###############################################################################
+# about.properties
+# contains externalized strings for about.ini
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# fill-ins are supplied by about.mappings
+# This file should be translated.
+#
+# Do not translate any values surrounded by {}
+
+blurb=TM Terminal Unit Tests\n\
+\n\
+Version: {featureVersion}\n\
+\n\
+(c) Copyright Wind River Systems, Inc. and others 2007, 2017. All rights reserved.\n\
+Visit http://www.eclipse.org/tm
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/build.properties b/terminal/plugins/org.eclipse.tm.terminal.test/build.properties
new file mode 100644
index 00000000000..0b897913118
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/build.properties
@@ -0,0 +1,23 @@
+###############################################################################
+# Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Michael Scharf (Wind River) - initial API and implementation
+###############################################################################
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.properties,\
+ plugin.xml,\
+ about.properties,\
+ about.ini,\
+ about.html
+src.includes = teamConfig/,\
+ about.html
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/plugin.properties b/terminal/plugins/org.eclipse.tm.terminal.test/plugin.properties
new file mode 100644
index 00000000000..0532f6a6263
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/plugin.properties
@@ -0,0 +1,19 @@
+###############################################################################
+# Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Initial Contributors:
+# The following Wind River employees contributed to the Terminal component
+# that contains this file: Chris Thew, Fran Litterio, Stephen Lamb,
+# Helmut Haigermoser and Ted Williams.
+#
+# Contributors:
+# Michael Scharf (Wind River) - initial API and implementation
+###############################################################################
+pluginName = Target Management Terminal Tests
+providerName = Eclipse CDT
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/plugin.xml b/terminal/plugins/org.eclipse.tm.terminal.test/plugin.xml
new file mode 100644
index 00000000000..def334de009
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/plugin.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<!--
+# Copyright (c) 2006- 2018 Wind River Systems, Inc. and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Michael Scharf (Wind River) - initial API and implementation
+# Martin Oberhuber (Wind River) - fixed copyright headers and beautified
+# Uwe Stieber (Wind River) - [282996] [terminal][api] Add "hidden" attribute to terminal connector extension point
+-->
+<plugin>
+ <extension point="org.eclipse.tm.terminal.control.connectors">
+ <connector
+ class="org.eclipse.tm.internal.terminal.speedtest.SpeedTestConnector"
+ id="org.eclipse.tm.internal.terminal.speedtest.SpeedTestConnector"
+ name="Speed Test"/>
+ </extension>
+</plugin>
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/connector/TerminalConnectorFactoryTest.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/connector/TerminalConnectorFactoryTest.java
new file mode 100644
index 00000000000..9cea03f28e6
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/connector/TerminalConnectorFactoryTest.java
@@ -0,0 +1,317 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ * Martin Oberhuber (Wind River) - [225853][api] Provide more default functionality in TerminalConnectorImpl
+ * Martin Oberhuber (Wind River) - [204796] Terminal should allow setting the encoding to use
+ * Uwe Stieber (Wind River) - [282996] [terminal][api] Add "hidden" attribute to terminal connector extension point
+ * Anton Leherbauer (Wind River) - [433751] Add option to enable VT100 line wrapping mode
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.connector;
+
+import java.io.OutputStream;
+import java.nio.charset.Charset;
+
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.tm.internal.terminal.provisional.api.ISettingsStore;
+import org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl;
+import org.eclipse.tm.internal.terminal.provisional.api.TerminalState;
+import org.eclipse.tm.internal.terminal.provisional.api.provider.TerminalConnectorImpl;
+
+import junit.framework.TestCase;
+
+public class TerminalConnectorFactoryTest extends TestCase {
+ public class SettingsMock implements ISettingsStore {
+
+ @Override
+ public String get(String key) {
+ return null;
+ }
+
+ @Override
+ public String get(String key, String defaultValue) {
+ return null;
+ }
+
+ @Override
+ public void put(String key, String value) {
+ }
+
+ }
+
+ public static class TerminalControlMock implements ITerminalControl {
+
+ @Override
+ public void setEncoding(String encoding) {
+ }
+
+ @Override
+ public void setCharset(Charset charset) {
+ }
+
+ @Override
+ public String getEncoding() {
+ return "ISO-8859-1"; //$NON-NLS-1$
+ }
+
+ @Override
+ public Charset getCharset() {
+ return Charset.defaultCharset();
+ }
+
+ @Override
+ public void displayTextInTerminal(String text) {
+ }
+
+ @Override
+ public OutputStream getRemoteToTerminalOutputStream() {
+ return null;
+ }
+
+ @Override
+ public Shell getShell() {
+ return null;
+ }
+
+ @Override
+ public TerminalState getState() {
+ return null;
+ }
+
+ @Override
+ public void setMsg(String msg) {
+ }
+
+ @Override
+ public void setState(TerminalState state) {
+ }
+
+ @Override
+ public void setTerminalTitle(String title) {
+ }
+
+ @Override
+ public void setupTerminal(Composite parent) {
+ }
+
+ @Override
+ public boolean isConnectOnEnterIfClosed() {
+ return false;
+ }
+
+ @Override
+ public void setConnectOnEnterIfClosed(boolean on) {
+ }
+
+ @Override
+ public void setVT100LineWrapping(boolean enable) {
+ }
+
+ @Override
+ public boolean isVT100LineWrapping() {
+ return false;
+ }
+ }
+
+ static class ConnectorMock extends TerminalConnectorImpl {
+
+ public boolean fEcho;
+ public int fWidth;
+ public int fHeight;
+ public ITerminalControl fTerminalControl;
+ public ISettingsStore fSaveStore;
+ public ISettingsStore fLoadStore;
+ public boolean fDisconnect;
+
+ @Override
+ public boolean isLocalEcho() {
+ return fEcho;
+ }
+
+ @Override
+ public void setTerminalSize(int newWidth, int newHeight) {
+ fWidth = newWidth;
+ fHeight = newHeight;
+ }
+
+ @Override
+ public void connect(ITerminalControl control) {
+ super.connect(control);
+ fTerminalControl = control;
+ }
+
+ @Override
+ public void doDisconnect() {
+ fDisconnect = true;
+ }
+
+ @Override
+ public OutputStream getTerminalToRemoteStream() {
+ return null;
+ }
+
+ @Override
+ public String getSettingsSummary() {
+ return "Summary";
+ }
+
+ @Override
+ public void load(ISettingsStore store) {
+ fLoadStore = store;
+ }
+
+ @Override
+ public void save(ISettingsStore store) {
+ fSaveStore = store;
+ }
+ }
+
+ protected TerminalConnector makeTerminalConnector() {
+ return makeTerminalConnector(new ConnectorMock());
+ }
+
+ protected TerminalConnector makeTerminalConnector(final TerminalConnectorImpl mock) {
+ TerminalConnector c = new TerminalConnector(() -> mock, "xID", "xName", false);
+ return c;
+ }
+
+ public void testGetInitializationErrorMessage() {
+ TerminalConnector c = makeTerminalConnector();
+ c.connect(new TerminalControlMock());
+ assertNull(c.getInitializationErrorMessage());
+
+ c = makeTerminalConnector(new ConnectorMock() {
+ @Override
+ public void initialize() throws Exception {
+ throw new Exception("FAILED");
+ }
+ });
+ c.connect(new TerminalControlMock());
+ assertEquals("FAILED", c.getInitializationErrorMessage());
+
+ }
+
+ public void testGetIdAndName() {
+ TerminalConnector c = makeTerminalConnector();
+ assertEquals("xID", c.getId());
+ assertEquals("xName", c.getName());
+ }
+
+ public void testIsInitialized() {
+ TerminalConnector c = makeTerminalConnector();
+ assertFalse(c.isInitialized());
+ c.getId();
+ assertFalse(c.isInitialized());
+ c.getName();
+ assertFalse(c.isInitialized());
+ c.getSettingsSummary();
+ assertFalse(c.isInitialized());
+ c.setTerminalSize(10, 10);
+ assertFalse(c.isInitialized());
+ c.load(null);
+ assertFalse(c.isInitialized());
+ c.save(null);
+ assertFalse(c.isInitialized());
+ if (!Platform.isRunning())
+ return;
+ c.getAdapter(ConnectorMock.class);
+ assertFalse(c.isInitialized());
+ }
+
+ public void testConnect() {
+ TerminalConnector c = makeTerminalConnector();
+ assertFalse(c.isInitialized());
+ c.connect(new TerminalControlMock());
+ assertTrue(c.isInitialized());
+
+ }
+
+ public void testDisconnect() {
+ ConnectorMock mock = new ConnectorMock();
+ TerminalConnector c = makeTerminalConnector(mock);
+ TerminalControlMock control = new TerminalControlMock();
+ c.connect(control);
+ c.disconnect();
+ assertTrue(mock.fDisconnect);
+ }
+
+ public void testGetTerminalToRemoteStream() {
+ ConnectorMock mock = new ConnectorMock();
+ TerminalConnector c = makeTerminalConnector(mock);
+ TerminalControlMock control = new TerminalControlMock();
+ c.connect(control);
+ assertSame(mock.fTerminalControl, control);
+ }
+
+ public void testGetSettingsSummary() {
+ TerminalConnector c = makeTerminalConnector();
+ assertEquals("Not Initialized", c.getSettingsSummary());
+ c.connect(new TerminalControlMock());
+ assertEquals("Summary", c.getSettingsSummary());
+ }
+
+ public void testIsLocalEcho() {
+ ConnectorMock mock = new ConnectorMock();
+ TerminalConnector c = makeTerminalConnector(mock);
+ assertFalse(c.isLocalEcho());
+ mock.fEcho = true;
+ assertTrue(c.isLocalEcho());
+ }
+
+ public void testLoad() {
+ ConnectorMock mock = new ConnectorMock();
+ TerminalConnector c = makeTerminalConnector(mock);
+ ISettingsStore s = new SettingsMock();
+ c.load(s);
+ // the load is called after the connect...
+ assertNull(mock.fLoadStore);
+ c.connect(new TerminalControlMock());
+ assertSame(s, mock.fLoadStore);
+ }
+
+ public void testSave() {
+ ConnectorMock mock = new ConnectorMock();
+ TerminalConnector c = makeTerminalConnector(mock);
+ ISettingsStore s = new SettingsMock();
+ c.save(s);
+ assertNull(mock.fSaveStore);
+ c.connect(new TerminalControlMock());
+ c.save(s);
+ assertSame(s, mock.fSaveStore);
+ }
+
+ public void testSetDefaultSettings() {
+ ConnectorMock mock = new ConnectorMock();
+ TerminalConnector c = makeTerminalConnector(mock);
+ c.setDefaultSettings();
+ }
+
+ public void testSetTerminalSize() {
+ ConnectorMock mock = new ConnectorMock();
+ TerminalConnector c = makeTerminalConnector(mock);
+ c.setTerminalSize(100, 200);
+
+ }
+
+ public void testGetAdapter() {
+ if (!Platform.isRunning())
+ return;
+ ConnectorMock mock = new ConnectorMock();
+ TerminalConnector c = makeTerminalConnector(mock);
+ assertNull(c.getAdapter(ConnectorMock.class));
+ // the load is called after the connect...
+ c.connect(new TerminalControlMock());
+
+ assertSame(mock, c.getAdapter(ConnectorMock.class));
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/connector/TerminalConnectorPluginTest.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/connector/TerminalConnectorPluginTest.java
new file mode 100644
index 00000000000..b5899dcd8e1
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/connector/TerminalConnectorPluginTest.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Martin Oberhuber (Wind River) - initial API and implementation
+ * Uwe Stieber (Wind River) - [282996] [terminal][api] Add "hidden" attribute to terminal connector extension point
+ *******************************************************************************/
+
+package org.eclipse.tm.internal.terminal.connector;
+
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.tm.internal.terminal.connector.TerminalConnectorTest.ConnectorMock;
+import org.eclipse.tm.internal.terminal.connector.TerminalConnectorTest.SimpleFactory;
+import org.eclipse.tm.internal.terminal.connector.TerminalConnectorTest.TerminalControlMock;
+
+import junit.framework.TestCase;
+
+/**
+ * Testcase for TerminalConnector that must run as a JUnit plug-in test.
+ */
+public class TerminalConnectorPluginTest extends TestCase {
+
+ public void testIsInitialized() {
+ if (!Platform.isRunning())
+ return;
+ TerminalConnector c = new TerminalConnector(new SimpleFactory(new ConnectorMock()), "xID", "xName", false);
+ assertFalse(c.isInitialized());
+ c.getId();
+ assertFalse(c.isInitialized());
+ c.getName();
+ assertFalse(c.isInitialized());
+ c.isHidden();
+ assertFalse(c.isInitialized());
+ c.getSettingsSummary();
+ assertFalse(c.isInitialized());
+ c.setTerminalSize(10, 10);
+ assertFalse(c.isInitialized());
+ c.load(null);
+ assertFalse(c.isInitialized());
+ c.save(null);
+ assertFalse(c.isInitialized());
+ c.getAdapter(ConnectorMock.class);
+ assertFalse(c.isInitialized());
+ }
+
+ public void testGetAdapter() {
+ if (!Platform.isRunning())
+ return;
+ ConnectorMock mock = new ConnectorMock();
+ TerminalConnector c = new TerminalConnector(new SimpleFactory(mock), "xID", "xName", false);
+ assertNull(c.getAdapter(ConnectorMock.class));
+ // the load is called after the connect...
+ c.connect(new TerminalControlMock());
+
+ assertSame(mock, c.getAdapter(ConnectorMock.class));
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/connector/TerminalConnectorTest.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/connector/TerminalConnectorTest.java
new file mode 100644
index 00000000000..98f7519af63
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/connector/TerminalConnectorTest.java
@@ -0,0 +1,289 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ * Martin Oberhuber (Wind River) - [225853][api] Provide more default functionality in TerminalConnectorImpl
+ * Martin Oberhuber (Wind River) - [204796] Terminal should allow setting the encoding to use
+ * Uwe Stieber (Wind River) - [282996] [terminal][api] Add "hidden" attribute to terminal connector extension point
+ * Anton Leherbauer (Wind River) - [433751] Add option to enable VT100 line wrapping mode
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.connector;
+
+import java.io.OutputStream;
+import java.nio.charset.Charset;
+
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.tm.internal.terminal.connector.TerminalConnector.Factory;
+import org.eclipse.tm.internal.terminal.provisional.api.ISettingsStore;
+import org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl;
+import org.eclipse.tm.internal.terminal.provisional.api.TerminalState;
+import org.eclipse.tm.internal.terminal.provisional.api.provider.TerminalConnectorImpl;
+
+import junit.framework.TestCase;
+
+public class TerminalConnectorTest extends TestCase {
+ public class SettingsMock implements ISettingsStore {
+
+ @Override
+ public String get(String key) {
+ return null;
+ }
+
+ @Override
+ public String get(String key, String defaultValue) {
+ return null;
+ }
+
+ @Override
+ public void put(String key, String value) {
+ }
+
+ }
+
+ public static class TerminalControlMock implements ITerminalControl {
+
+ @Override
+ public void setEncoding(String encoding) {
+ }
+
+ @Override
+ public void setCharset(Charset charset) {
+ }
+
+ @Override
+ public String getEncoding() {
+ return "ISO-8859-1"; //$NON-NLS-1$
+ }
+
+ @Override
+ public Charset getCharset() {
+ return Charset.defaultCharset();
+ }
+
+ @Override
+ public void displayTextInTerminal(String text) {
+ }
+
+ @Override
+ public OutputStream getRemoteToTerminalOutputStream() {
+ return null;
+ }
+
+ @Override
+ public Shell getShell() {
+ return null;
+ }
+
+ @Override
+ public TerminalState getState() {
+ return null;
+ }
+
+ @Override
+ public void setMsg(String msg) {
+ }
+
+ @Override
+ public void setState(TerminalState state) {
+ }
+
+ @Override
+ public void setTerminalTitle(String title) {
+ }
+
+ @Override
+ public void setupTerminal(Composite parent) {
+ }
+
+ @Override
+ public boolean isConnectOnEnterIfClosed() {
+ return false;
+ }
+
+ @Override
+ public void setConnectOnEnterIfClosed(boolean on) {
+ }
+
+ @Override
+ public void setVT100LineWrapping(boolean enable) {
+ }
+
+ @Override
+ public boolean isVT100LineWrapping() {
+ return false;
+ }
+ }
+
+ static class ConnectorMock extends TerminalConnectorImpl {
+
+ public boolean fEcho;
+ public int fWidth;
+ public int fHeight;
+ public ITerminalControl fTerminalControl;
+ public ISettingsStore fSaveStore;
+ public ISettingsStore fLoadStore;
+ public boolean fDisconnect;
+
+ @Override
+ public boolean isLocalEcho() {
+ return fEcho;
+ }
+
+ @Override
+ public void setTerminalSize(int newWidth, int newHeight) {
+ fWidth = newWidth;
+ fHeight = newHeight;
+ }
+
+ @Override
+ public void connect(ITerminalControl control) {
+ super.connect(control);
+ fTerminalControl = control;
+ }
+
+ @Override
+ public void doDisconnect() {
+ fDisconnect = true;
+ }
+
+ @Override
+ public OutputStream getTerminalToRemoteStream() {
+ return null;
+ }
+
+ @Override
+ public String getSettingsSummary() {
+ return "Summary";
+ }
+
+ @Override
+ public void load(ISettingsStore store) {
+ fLoadStore = store;
+ }
+
+ @Override
+ public void save(ISettingsStore store) {
+ fSaveStore = store;
+ }
+ }
+
+ static class SimpleFactory implements Factory {
+ final TerminalConnectorImpl fConnector;
+
+ public SimpleFactory(TerminalConnectorImpl connector) {
+ fConnector = connector;
+ }
+
+ @Override
+ public TerminalConnectorImpl makeConnector() throws Exception {
+ // TODO Auto-generated method stub
+ return fConnector;
+ }
+ }
+
+ public void testGetInitializationErrorMessage() {
+ TerminalConnector c = new TerminalConnector(new SimpleFactory(new ConnectorMock()), "xID", "xName", false);
+ c.connect(new TerminalControlMock());
+ assertNull(c.getInitializationErrorMessage());
+
+ c = new TerminalConnector(new SimpleFactory(new ConnectorMock() {
+ @Override
+ public void initialize() throws Exception {
+ throw new Exception("FAILED");
+ }
+ }), "xID", "xName", false);
+ c.connect(new TerminalControlMock());
+ assertEquals("FAILED", c.getInitializationErrorMessage());
+
+ }
+
+ public void testGetIdAndName() {
+ TerminalConnector c = new TerminalConnector(new SimpleFactory(new ConnectorMock()), "xID", "xName", false);
+ assertEquals("xID", c.getId());
+ assertEquals("xName", c.getName());
+ }
+
+ public void testConnect() {
+ TerminalConnector c = new TerminalConnector(new SimpleFactory(new ConnectorMock()), "xID", "xName", false);
+ assertFalse(c.isInitialized());
+ c.connect(new TerminalControlMock());
+ assertTrue(c.isInitialized());
+
+ }
+
+ public void testDisconnect() {
+ ConnectorMock mock = new ConnectorMock();
+ TerminalConnector c = new TerminalConnector(new SimpleFactory(mock), "xID", "xName", false);
+ TerminalControlMock control = new TerminalControlMock();
+ c.connect(control);
+ c.disconnect();
+ assertTrue(mock.fDisconnect);
+ }
+
+ public void testGetTerminalToRemoteStream() {
+ ConnectorMock mock = new ConnectorMock();
+ TerminalConnector c = new TerminalConnector(new SimpleFactory(mock), "xID", "xName", false);
+ TerminalControlMock control = new TerminalControlMock();
+ c.connect(control);
+ assertSame(mock.fTerminalControl, control);
+ }
+
+ public void testGetSettingsSummary() {
+ TerminalConnector c = new TerminalConnector(new SimpleFactory(new ConnectorMock()), "xID", "xName", false);
+ assertEquals("Not Initialized", c.getSettingsSummary());
+ c.connect(new TerminalControlMock());
+ assertEquals("Summary", c.getSettingsSummary());
+ }
+
+ public void testIsLocalEcho() {
+ ConnectorMock mock = new ConnectorMock();
+ TerminalConnector c = new TerminalConnector(new SimpleFactory(mock), "xID", "xName", false);
+ assertFalse(c.isLocalEcho());
+ mock.fEcho = true;
+ assertTrue(c.isLocalEcho());
+ }
+
+ public void testLoad() {
+ ConnectorMock mock = new ConnectorMock();
+ TerminalConnector c = new TerminalConnector(new SimpleFactory(mock), "xID", "xName", false);
+ ISettingsStore s = new SettingsMock();
+ c.load(s);
+ // the load is called after the connect...
+ assertNull(mock.fLoadStore);
+ c.connect(new TerminalControlMock());
+ assertSame(s, mock.fLoadStore);
+ }
+
+ public void testSave() {
+ ConnectorMock mock = new ConnectorMock();
+ TerminalConnector c = new TerminalConnector(new SimpleFactory(mock), "xID", "xName", false);
+ ISettingsStore s = new SettingsMock();
+ c.save(s);
+ assertNull(mock.fSaveStore);
+ c.connect(new TerminalControlMock());
+ c.save(s);
+ assertSame(s, mock.fSaveStore);
+ }
+
+ public void testSetDefaultSettings() {
+ ConnectorMock mock = new ConnectorMock();
+ TerminalConnector c = new TerminalConnector(new SimpleFactory(mock), "xID", "xName", false);
+ c.setDefaultSettings();
+ }
+
+ public void testSetTerminalSize() {
+ ConnectorMock mock = new ConnectorMock();
+ TerminalConnector c = new TerminalConnector(new SimpleFactory(mock), "xID", "xName", false);
+ c.setTerminalSize(100, 200);
+
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/connector/TerminalToRemoteInjectionOutputStreamTest.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/connector/TerminalToRemoteInjectionOutputStreamTest.java
new file mode 100644
index 00000000000..04e3a2769b8
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/connector/TerminalToRemoteInjectionOutputStreamTest.java
@@ -0,0 +1,191 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.connector;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
+
+import junit.framework.TestCase;
+
+public class TerminalToRemoteInjectionOutputStreamTest extends TestCase {
+ final static Charset ENCODING = StandardCharsets.UTF_8;
+
+ /**
+ * This class escapes strings coming on the original
+ * terminal..
+ *
+ */
+ class CleverInterceptor extends TerminalToRemoteInjectionOutputStream.Interceptor {
+
+ @Override
+ public void close() throws IOException {
+ }
+
+ @Override
+ public void write(int b) throws IOException {
+ fOriginal.write('[');
+ fOriginal.write(b);
+ fOriginal.write(']');
+ }
+
+ @Override
+ public void write(byte[] b, int off, int len) throws IOException {
+ fOriginal.write('[');
+ fOriginal.write(b, off, len);
+ fOriginal.write(']');
+ }
+
+ }
+
+ class NullInterceptor extends TerminalToRemoteInjectionOutputStream.Interceptor {
+ }
+
+ public void testClose() throws IOException {
+ ByteArrayOutputStream bs = new ByteArrayOutputStream();
+ try (TerminalToRemoteInjectionOutputStream s = new TerminalToRemoteInjectionOutputStream(bs)) {
+ s.write("begin:".getBytes(ENCODING));
+ assertEquals("begin:", new String(bs.toByteArray(), ENCODING));
+ OutputStream os1 = s.grabOutput();
+ os1.write('x');
+ s.write('A');
+ os1.write('y');
+ s.write('B');
+ os1.close();
+
+ s.write('-');
+ OutputStream os = s.grabOutput();
+ // make sure the closed output does not inject anything
+ try {
+ os1.write('k');
+ fail("...");
+ } catch (Exception e) {
+ }
+ os.write('X');
+ s.write('a');
+ os.write('Y');
+ // make sure the closed output does not inject anything
+ try {
+ os1.write('l');
+ fail("...");
+ } catch (Exception e) {
+ }
+ s.write('b');
+ os.close();
+ assertEquals("begin:xyAB-XYab", new String(bs.toByteArray(), ENCODING));
+ }
+ }
+
+ public void testFlush() {
+ }
+
+ public void testWriteInt() throws IOException {
+ ByteArrayOutputStream bs = new ByteArrayOutputStream();
+ TerminalToRemoteInjectionOutputStream s = new TerminalToRemoteInjectionOutputStream(bs);
+ s.write("begin:".getBytes(ENCODING));
+ assertEquals("begin:", new String(bs.toByteArray(), ENCODING));
+ OutputStream os = s.grabOutput();
+ os.write('x');
+ s.write('A');
+ os.write('y');
+ s.write('B');
+ s.close();
+ assertEquals("begin:xyAB", new String(bs.toByteArray(), ENCODING));
+
+ }
+
+ public void testWriteByteArray() {
+ }
+
+ public void testWriteByteArrayIntInt() {
+ }
+
+ public void testGrabOutput() throws IOException {
+ ByteArrayOutputStream bs = new ByteArrayOutputStream();
+ try (TerminalToRemoteInjectionOutputStream s = new TerminalToRemoteInjectionOutputStream(bs)) {
+ s.write("begin:".getBytes(ENCODING));
+ assertEquals("begin:", new String(bs.toByteArray(), ENCODING));
+ OutputStream os1 = s.grabOutput();
+ OutputStream os2;
+ try {
+ os2 = s.grabOutput();
+ fail("should fail until the foirst output is closed");
+ } catch (IOException e) {
+ }
+ os1.close();
+ os2 = s.grabOutput();
+ assertEquals("begin:", new String(bs.toByteArray(), ENCODING));
+ os2.write("Test".getBytes(ENCODING));
+ assertEquals("begin:Test", new String(bs.toByteArray(), ENCODING));
+ s.write(" west".getBytes(ENCODING));
+ assertEquals("begin:Test", new String(bs.toByteArray(), ENCODING));
+ os2.write(" the".getBytes(ENCODING));
+ assertEquals("begin:Test the", new String(bs.toByteArray(), ENCODING));
+ os2.close();
+ assertEquals("begin:Test the west", new String(bs.toByteArray(), ENCODING));
+ s.write('!');
+ assertEquals("begin:Test the west!", new String(bs.toByteArray(), ENCODING));
+ }
+ }
+
+ public void testGrabOutputWithCleverInterceptor() throws IOException {
+ ByteArrayOutputStream bs = new ByteArrayOutputStream();
+ try (TerminalToRemoteInjectionOutputStream s = new TerminalToRemoteInjectionOutputStream(bs)) {
+ s.write("begin:".getBytes(ENCODING));
+ assertEquals("begin:", new String(bs.toByteArray(), ENCODING));
+ // the injector escapes the output coming from the main stream
+ OutputStream os = s.grabOutput(new CleverInterceptor());
+ assertEquals("begin:", new String(bs.toByteArray(), ENCODING));
+ os.write("Test".getBytes(ENCODING));
+ assertEquals("begin:Test", new String(bs.toByteArray(), ENCODING));
+ s.write(" west".getBytes(ENCODING));
+ assertEquals("begin:Test[ west]", new String(bs.toByteArray(), ENCODING));
+ os.write(" the".getBytes(ENCODING));
+ assertEquals("begin:Test[ west] the", new String(bs.toByteArray(), ENCODING));
+ s.write('x');
+ assertEquals("begin:Test[ west] the[x]", new String(bs.toByteArray(), ENCODING));
+ os.close();
+ assertEquals("begin:Test[ west] the[x]", new String(bs.toByteArray(), ENCODING));
+ s.write('!');
+ assertEquals("begin:Test[ west] the[x]!", new String(bs.toByteArray(), ENCODING));
+ }
+ }
+
+ public void testGrabOutputWithNullInterceptor() throws IOException {
+ ByteArrayOutputStream bs = new ByteArrayOutputStream();
+ try (TerminalToRemoteInjectionOutputStream s = new TerminalToRemoteInjectionOutputStream(bs)) {
+ s.write("begin:".getBytes(ENCODING));
+ assertEquals("begin:", new String(bs.toByteArray(), ENCODING));
+ // bytes written to the main stream are ignored while the injector
+ // is active
+ OutputStream os = s.grabOutput(new NullInterceptor());
+ assertEquals("begin:", new String(bs.toByteArray(), ENCODING));
+ os.write("Test".getBytes(ENCODING));
+ assertEquals("begin:Test", new String(bs.toByteArray(), ENCODING));
+ s.write(" west".getBytes(ENCODING));
+ assertEquals("begin:Test", new String(bs.toByteArray(), ENCODING));
+ os.write(" the".getBytes(ENCODING));
+ assertEquals("begin:Test the", new String(bs.toByteArray(), ENCODING));
+ s.write('x');
+ assertEquals("begin:Test the", new String(bs.toByteArray(), ENCODING));
+ os.close();
+ assertEquals("begin:Test the", new String(bs.toByteArray(), ENCODING));
+ s.write('!');
+ assertEquals("begin:Test the!", new String(bs.toByteArray(), ENCODING));
+ }
+
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/emulator/AllTestSuite.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/emulator/AllTestSuite.java
new file mode 100644
index 00000000000..8a99236f846
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/emulator/AllTestSuite.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Martin Oberhuber (Wind River) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.emulator;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * Terminal emulator test cases.
+ * Runs in emulator package to allow access to default visible items.
+ */
+public class AllTestSuite extends TestCase {
+ public AllTestSuite() {
+ super(null);
+ }
+
+ public AllTestSuite(String name) {
+ super(name);
+ }
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(AllTestSuite.class.getName());
+ suite.addTestSuite(VT100EmulatorBackendTest.class);
+ return suite;
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/emulator/MockTerminalControlForText.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/emulator/MockTerminalControlForText.java
new file mode 100644
index 00000000000..229691c575b
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/emulator/MockTerminalControlForText.java
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * Copyright (c) 2021 Kichwa Coders Canada Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.emulator;
+
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.tm.internal.terminal.control.impl.ITerminalControlForText;
+import org.eclipse.tm.internal.terminal.provisional.api.ITerminalConnector;
+import org.eclipse.tm.internal.terminal.provisional.api.TerminalState;
+
+public class MockTerminalControlForText implements ITerminalControlForText {
+ private List<String> allTitles = new ArrayList<>();
+
+ @Override
+ public TerminalState getState() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void setState(TerminalState state) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void setTerminalTitle(String title) {
+ allTitles.add(title);
+ }
+
+ public List<String> getAllTitles() {
+ return Collections.unmodifiableList(allTitles);
+ }
+
+ @Override
+ public ITerminalConnector getTerminalConnector() {
+ return null;
+ }
+
+ @Override
+ public OutputStream getOutputStream() {
+ throw new UnsupportedOperationException();
+
+ }
+
+ @Override
+ public void enableApplicationCursorKeys(boolean enable) {
+ throw new UnsupportedOperationException();
+
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/emulator/VT100EmulatorBackendTest.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/emulator/VT100EmulatorBackendTest.java
new file mode 100644
index 00000000000..3be4b5209ca
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/emulator/VT100EmulatorBackendTest.java
@@ -0,0 +1,929 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ * Martin Oberhuber (Wind River) - [168197] Fix Terminal for CDC-1.1/Foundation-1.1
+ * Anton Leherbauer (Wind River) - [453393] Add support for copying wrapped lines without line break
+ * Anton Leherbauer (Wind River) - [458218] Add support for ANSI insert mode
+ * Anton Leherbauer (Wind River) - [458402] Add support for scroll up/down and scroll region
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.emulator;
+
+import static org.eclipse.tm.terminal.model.TerminalColor.BLACK;
+import static org.eclipse.tm.terminal.model.TerminalColor.WHITE;
+
+import org.eclipse.tm.internal.terminal.model.TerminalTextDataStore;
+import org.eclipse.tm.internal.terminal.model.TerminalTextTestHelper;
+import org.eclipse.tm.terminal.model.ITerminalTextData;
+import org.eclipse.tm.terminal.model.ITerminalTextDataReadOnly;
+import org.eclipse.tm.terminal.model.TerminalStyle;
+
+import junit.framework.TestCase;
+
+public class VT100EmulatorBackendTest extends TestCase {
+
+ protected IVT100EmulatorBackend makeBakend(ITerminalTextData term) {
+ return new VT100EmulatorBackend(term);
+ }
+
+ protected ITerminalTextData makeITerminalTextData() {
+ return new TerminalTextDataStore();
+ }
+
+ protected String toSimple(ITerminalTextData term) {
+ return TerminalTextTestHelper.toSimple(term);
+ }
+
+ protected String toMultiLineText(ITerminalTextDataReadOnly term) {
+ return TerminalTextTestHelper.toMultiLineText(term);
+ }
+
+ protected void fill(ITerminalTextData term, String s) {
+ TerminalTextTestHelper.fill(term, s);
+ }
+
+ protected void fillSimple(ITerminalTextData term, String s) {
+ TerminalTextTestHelper.fillSimple(term, s);
+ }
+
+ /**
+ * Used for multi line text
+ * @param expected
+ * @param actual
+ */
+ protected void assertEqualsTerm(String expected, String actual) {
+ assertEquals(expected.replace(' ', '.'), actual.replace('\000', '.'));
+ }
+
+ /**
+ * Used for simple text
+ * @param expected
+ * @param actual
+ */
+ protected void assertEqualsSimple(String expected, String actual) {
+ assertEquals(-1, actual.indexOf('\n'));
+ assertEquals(expected, actual);
+ }
+
+ public void testClearAll() {
+ ITerminalTextData term = makeITerminalTextData();
+ IVT100EmulatorBackend vt100 = makeBakend(term);
+ vt100.setDimensions(3, 4);
+ fill(term, "0000\n" + "1111\n" + "2222\n" + "3333\n" + "4444\n" + "5555");
+ vt100.clearAll();
+ assertEqualsTerm(" \n" + " \n" + " ", toMultiLineText(term));
+ }
+
+ public void testSetDimensions() {
+ ITerminalTextData term = makeITerminalTextData();
+ IVT100EmulatorBackend vt100 = makeBakend(term);
+ String s = "0000\n" + "1111\n" + "2222\n" + "3333\n" + "4444\n" + "5555";
+ fill(term, s);
+ vt100.setDimensions(3, 4);
+ assertEquals(3, vt100.getLines());
+ assertEquals(4, vt100.getColumns());
+ assertEqualsTerm(s, toMultiLineText(term));
+
+ vt100.setCursor(0, 2);
+ vt100.setDimensions(2, 4);
+ assertEquals(0, vt100.getCursorLine());
+ assertEquals(2, vt100.getCursorColumn());
+
+ vt100.setCursor(0, 2);
+ vt100.setDimensions(5, 4);
+ assertEquals(3, vt100.getCursorLine());
+ assertEquals(2, vt100.getCursorColumn());
+
+ assertEqualsTerm(s, toMultiLineText(term));
+
+ vt100.setCursor(0, 3);
+ vt100.setDimensions(5, 2);
+ assertEquals(0, vt100.getCursorLine());
+ assertEquals(1, vt100.getCursorColumn());
+ }
+
+ public void testToAbsoluteLine() {
+ ITerminalTextData term = makeITerminalTextData();
+ VT100EmulatorBackend vt100 = new VT100EmulatorBackend(term);
+ vt100.setDimensions(2, 3);
+ assertEquals(vt100.toAbsoluteLine(0), 0);
+ // TODO
+ term = makeITerminalTextData();
+ vt100 = new VT100EmulatorBackend(term);
+ vt100.setDimensions(1, 10);
+ assertEquals(vt100.toAbsoluteLine(0), 0);
+ }
+
+ public void testInsertCharacters() {
+ ITerminalTextData term = makeITerminalTextData();
+ IVT100EmulatorBackend vt100 = makeBakend(term);
+ vt100.setDimensions(3, 4);
+ String s = "aaaa\n" + "bbbb\n" + "cccc\n" + "dddd\n" + "eeee\n" + "ffff\n" + "1234\n" + "4567\n" + "9012";
+ fill(term, s);
+ vt100.setCursor(0, 0);
+ vt100.insertCharacters(1);
+ assertEqualsTerm("aaaa\n" + "bbbb\n" + "cccc\n" + "dddd\n" + "eeee\n" + "ffff\n" + " 123\n" + "4567\n" + "9012",
+ toMultiLineText(term));
+
+ fill(term, s);
+ vt100.setCursor(1, 1);
+ vt100.insertCharacters(1);
+ assertEqualsTerm("aaaa\n" + "bbbb\n" + "cccc\n" + "dddd\n" + "eeee\n" + "ffff\n" + "1234\n" + "4 56\n" + "9012",
+ toMultiLineText(term));
+
+ fill(term, s);
+ vt100.setCursor(1, 1);
+ vt100.insertCharacters(2);
+ assertEqualsTerm("aaaa\n" + "bbbb\n" + "cccc\n" + "dddd\n" + "eeee\n" + "ffff\n" + "1234\n" + "4 5\n" + "9012",
+ toMultiLineText(term));
+
+ vt100.setDimensions(1, 10);
+ fill(term, "0123456789");
+ vt100.setCursor(0, 0);
+ vt100.insertCharacters(10);
+ assertEqualsTerm(" ", toMultiLineText(term));
+
+ vt100.setDimensions(1, 10);
+ fill(term, "0123456789");
+ vt100.setCursor(0, 0);
+ vt100.insertCharacters(14);
+ assertEqualsTerm(" ", toMultiLineText(term));
+
+ vt100.setDimensions(1, 10);
+ fill(term, "0123456789");
+ vt100.setCursor(0, 3);
+ vt100.insertCharacters(14);
+ assertEqualsTerm("012 ", toMultiLineText(term));
+
+ vt100.setDimensions(1, 10);
+ fill(term, "0123456789");
+ vt100.setCursor(0, 3);
+ vt100.insertCharacters(0);
+ assertEqualsTerm("0123456789", toMultiLineText(term));
+
+ vt100.setDimensions(1, 10);
+ fill(term, "0123456789");
+ vt100.setCursor(0, 3);
+ vt100.insertCharacters(2);
+ assertEqualsTerm("012 34567", toMultiLineText(term));
+ }
+
+ public void testEraseToEndOfScreen() {
+ ITerminalTextData term = makeITerminalTextData();
+ IVT100EmulatorBackend vt100 = makeBakend(term);
+ vt100.setDimensions(3, 4);
+ String s = "aaaa\n" + "bbbb\n" + "cccc\n" + "dddd\n" + "eeee\n" + "ffff\n" + "0123\n" + "4567\n" + "8901";
+ fill(term, s);
+ vt100.setCursor(0, 0);
+ vt100.eraseToEndOfScreen();
+ assertEquals(0, vt100.getCursorLine());
+ assertEquals(0, vt100.getCursorColumn());
+ assertEqualsTerm("aaaa\n" + "bbbb\n" + "cccc\n" + "dddd\n" + "eeee\n" + "ffff\n" + " \n" + " \n" + " ",
+ toMultiLineText(term));
+
+ fill(term, s);
+ vt100.setCursor(1, 0);
+ vt100.eraseToEndOfScreen();
+ assertEquals(1, vt100.getCursorLine());
+ assertEquals(0, vt100.getCursorColumn());
+ assertEqualsTerm("aaaa\n" + "bbbb\n" + "cccc\n" + "dddd\n" + "eeee\n" + "ffff\n" + "0123\n" + " \n" + " ",
+ toMultiLineText(term));
+
+ fill(term, s);
+ vt100.setCursor(1, 1);
+ vt100.eraseToEndOfScreen();
+ assertEquals(1, vt100.getCursorLine());
+ assertEquals(1, vt100.getCursorColumn());
+ assertEqualsTerm("aaaa\n" + "bbbb\n" + "cccc\n" + "dddd\n" + "eeee\n" + "ffff\n" + "0123\n" + "4 \n" + " ",
+ toMultiLineText(term));
+
+ fill(term, s);
+ vt100.setCursor(1, 4);
+ assertEquals(1, vt100.getCursorLine());
+ assertEquals(3, vt100.getCursorColumn());
+ vt100.eraseToEndOfScreen();
+ assertEquals(1, vt100.getCursorLine());
+ assertEquals(3, vt100.getCursorColumn());
+ assertEqualsTerm("aaaa\n" + "bbbb\n" + "cccc\n" + "dddd\n" + "eeee\n" + "ffff\n" + "0123\n" + "456.\n" + " ",
+ toMultiLineText(term));
+
+ fill(term, s);
+ vt100.setCursor(1, 5);
+ vt100.eraseToEndOfScreen();
+ assertEquals(1, vt100.getCursorLine());
+ assertEquals(3, vt100.getCursorColumn());
+ assertEqualsTerm("aaaa\n" + "bbbb\n" + "cccc\n" + "dddd\n" + "eeee\n" + "ffff\n" + "0123\n" + "456.\n" + " ",
+ toMultiLineText(term));
+
+ fill(term, s);
+ vt100.setCursor(2, 3);
+ vt100.eraseToEndOfScreen();
+ assertEquals(2, vt100.getCursorLine());
+ assertEquals(3, vt100.getCursorColumn());
+ assertEqualsTerm("aaaa\n" + "bbbb\n" + "cccc\n" + "dddd\n" + "eeee\n" + "ffff\n" + "0123\n" + "4567\n" + "890 ",
+ toMultiLineText(term));
+
+ fill(term, s);
+ vt100.setCursor(2, 5);
+ vt100.eraseToEndOfScreen();
+ assertEquals(2, vt100.getCursorLine());
+ assertEquals(3, vt100.getCursorColumn());
+ assertEqualsTerm("aaaa\n" + "bbbb\n" + "cccc\n" + "dddd\n" + "eeee\n" + "ffff\n" + "0123\n" + "4567\n" + "890.",
+ toMultiLineText(term));
+ }
+
+ public void testEraseToCursor() {
+ ITerminalTextData term = makeITerminalTextData();
+ IVT100EmulatorBackend vt100 = makeBakend(term);
+ vt100.setDimensions(3, 4);
+ String s = "aaaa\n" + "bbbb\n" + "cccc\n" + "dddd\n" + "eeee\n" + "ffff\n" + "0123\n" + "4567\n" + "8901";
+ fill(term, s);
+ vt100.setCursor(0, 0);
+ vt100.eraseToCursor();
+ assertEquals(0, vt100.getCursorLine());
+ assertEquals(0, vt100.getCursorColumn());
+ assertEqualsTerm("aaaa\n" + "bbbb\n" + "cccc\n" + "dddd\n" + "eeee\n" + "ffff\n" + " 123\n" + "4567\n" + "8901",
+ toMultiLineText(term));
+
+ fill(term, s);
+ vt100.setCursor(1, 0);
+ vt100.eraseToCursor();
+ assertEquals(1, vt100.getCursorLine());
+ assertEquals(0, vt100.getCursorColumn());
+ assertEqualsTerm("aaaa\n" + "bbbb\n" + "cccc\n" + "dddd\n" + "eeee\n" + "ffff\n" + " \n" + " 567\n" + "8901",
+ toMultiLineText(term));
+
+ fill(term, s);
+ vt100.setCursor(1, 1);
+ vt100.eraseToCursor();
+ assertEquals(1, vt100.getCursorLine());
+ assertEquals(1, vt100.getCursorColumn());
+ assertEqualsTerm("aaaa\n" + "bbbb\n" + "cccc\n" + "dddd\n" + "eeee\n" + "ffff\n" + " \n" + " 67\n" + "8901",
+ toMultiLineText(term));
+
+ fill(term, s);
+ vt100.setCursor(1, 4);
+ vt100.eraseToCursor();
+ assertEquals(1, vt100.getCursorLine());
+ assertEquals(3, vt100.getCursorColumn());
+ assertEqualsTerm("aaaa\n" + "bbbb\n" + "cccc\n" + "dddd\n" + "eeee\n" + "ffff\n" + " \n" + " \n" + "8901",
+ toMultiLineText(term));
+
+ fill(term, s);
+ vt100.setCursor(1, 5);
+ vt100.eraseToCursor();
+ assertEquals(1, vt100.getCursorLine());
+ assertEquals(3, vt100.getCursorColumn());
+ assertEqualsTerm("aaaa\n" + "bbbb\n" + "cccc\n" + "dddd\n" + "eeee\n" + "ffff\n" + " \n" + " \n" + "8901",
+ toMultiLineText(term));
+
+ fill(term, s);
+ vt100.setCursor(2, 3);
+ vt100.eraseToCursor();
+ assertEquals(2, vt100.getCursorLine());
+ assertEquals(3, vt100.getCursorColumn());
+ assertEqualsTerm("aaaa\n" + "bbbb\n" + "cccc\n" + "dddd\n" + "eeee\n" + "ffff\n" + " \n" + " \n" + " ",
+ toMultiLineText(term));
+
+ fill(term, s);
+ vt100.setCursor(2, 5);
+ vt100.eraseToCursor();
+ assertEquals(2, vt100.getCursorLine());
+ assertEquals(3, vt100.getCursorColumn());
+ assertEqualsTerm("aaaa\n" + "bbbb\n" + "cccc\n" + "dddd\n" + "eeee\n" + "ffff\n" + " \n" + " \n" + " ",
+ toMultiLineText(term));
+ }
+
+ public void testEraseAll() {
+ ITerminalTextData term = makeITerminalTextData();
+ IVT100EmulatorBackend vt100 = makeBakend(term);
+ vt100.setDimensions(3, 4);
+ fill(term, "0000\n" + "1111\n" + "2222\n" + "3333\n" + "4444\n" + "5555");
+ vt100.eraseAll();
+ assertEqualsTerm("0000\n" + "1111\n" + "2222\n" + " \n" + " \n" + " ", toMultiLineText(term));
+ }
+
+ public void testEraseLine() {
+ String s = "abcde\n" + "fghij\n" + "klmno\n" + "pqrst\n" + "uvwxy\n" + "zABCD\n" + "EFGHI";
+
+ ITerminalTextData term = makeITerminalTextData();
+ IVT100EmulatorBackend vt100 = makeBakend(term);
+
+ vt100.setDimensions(3, 5);
+ fill(term, s);
+ vt100.setCursor(0, 3);
+ vt100.eraseLine();
+ assertEquals(0, vt100.getCursorLine());
+ assertEquals(3, vt100.getCursorColumn());
+ assertEqualsTerm("abcde\n" + "fghij\n" + "klmno\n" + "pqrst\n" + " \n" + "zABCD\n" + "EFGHI",
+ toMultiLineText(term));
+
+ vt100.setDimensions(3, 5);
+ fill(term, s);
+ vt100.setCursor(2, 3);
+ vt100.eraseLine();
+ assertEquals(2, vt100.getCursorLine());
+ assertEquals(3, vt100.getCursorColumn());
+ assertEqualsTerm("abcde\n" + "fghij\n" + "klmno\n" + "pqrst\n" + "uvwxy\n" + "zABCD\n" + " ",
+ toMultiLineText(term));
+ }
+
+ public void testEraseLineToEnd() {
+ String s = "abcde\n" + "fghij\n" + "klmno\n" + "pqrst\n" + "uvwxy\n" + "zABCD\n" + "EFGHI";
+
+ ITerminalTextData term = makeITerminalTextData();
+ IVT100EmulatorBackend vt100 = makeBakend(term);
+
+ vt100.setDimensions(3, 5);
+ fill(term, s);
+ vt100.setCursor(0, 3);
+ vt100.eraseLineToEnd();
+ assertEquals(0, vt100.getCursorLine());
+ assertEquals(3, vt100.getCursorColumn());
+ assertEqualsTerm("abcde\n" + "fghij\n" + "klmno\n" + "pqrst\n" + "uvw \n" + "zABCD\n" + "EFGHI",
+ toMultiLineText(term));
+
+ vt100.setDimensions(3, 5);
+ fill(term, s);
+ vt100.setCursor(0, 0);
+ vt100.eraseLineToEnd();
+ assertEquals(0, vt100.getCursorLine());
+ assertEquals(0, vt100.getCursorColumn());
+ assertEqualsTerm("abcde\n" + "fghij\n" + "klmno\n" + "pqrst\n" + " \n" + "zABCD\n" + "EFGHI",
+ toMultiLineText(term));
+
+ vt100.setDimensions(3, 5);
+ fill(term, s);
+ vt100.setCursor(2, 3);
+ vt100.eraseLineToEnd();
+ assertEquals(2, vt100.getCursorLine());
+ assertEquals(3, vt100.getCursorColumn());
+ assertEqualsTerm("abcde\n" + "fghij\n" + "klmno\n" + "pqrst\n" + "uvwxy\n" + "zABCD\n" + "EFG ",
+ toMultiLineText(term));
+ vt100.setDimensions(3, 5);
+ fill(term, s);
+
+ vt100.setCursor(2, 4);
+ vt100.eraseLineToEnd();
+ assertEquals(2, vt100.getCursorLine());
+ assertEquals(4, vt100.getCursorColumn());
+ assertEqualsTerm("abcde\n" + "fghij\n" + "klmno\n" + "pqrst\n" + "uvwxy\n" + "zABCD\n" + "EFGH ",
+ toMultiLineText(term));
+
+ vt100.setCursor(2, 5);
+ vt100.eraseLineToEnd();
+ assertEquals(2, vt100.getCursorLine());
+ assertEquals(4, vt100.getCursorColumn());
+ assertEqualsTerm("abcde\n" + "fghij\n" + "klmno\n" + "pqrst\n" + "uvwxy\n" + "zABCD\n" + "EFGH ",
+ toMultiLineText(term));
+
+ }
+
+ public void testEraseLineToCursor() {
+ String s = "abcde\n" + "fghij\n" + "klmno\n" + "pqrst\n" + "uvwxy\n" + "zABCD\n" + "EFGHI";
+
+ ITerminalTextData term = makeITerminalTextData();
+ IVT100EmulatorBackend vt100 = makeBakend(term);
+
+ vt100.setDimensions(3, 5);
+ fill(term, s);
+ vt100.setCursor(0, 3);
+ vt100.eraseLineToCursor();
+ assertEquals(0, vt100.getCursorLine());
+ assertEquals(3, vt100.getCursorColumn());
+ assertEqualsTerm("abcde\n" + "fghij\n" + "klmno\n" + "pqrst\n" + " y\n" + "zABCD\n" + "EFGHI",
+ toMultiLineText(term));
+
+ vt100.setDimensions(3, 5);
+ fill(term, s);
+ vt100.setCursor(0, 0);
+ vt100.eraseLineToCursor();
+ assertEquals(0, vt100.getCursorLine());
+ assertEquals(0, vt100.getCursorColumn());
+ assertEqualsTerm("abcde\n" + "fghij\n" + "klmno\n" + "pqrst\n" + " vwxy\n" + "zABCD\n" + "EFGHI",
+ toMultiLineText(term));
+
+ vt100.setDimensions(3, 5);
+ fill(term, s);
+ vt100.setCursor(2, 3);
+ vt100.eraseLineToCursor();
+ assertEquals(2, vt100.getCursorLine());
+ assertEquals(3, vt100.getCursorColumn());
+ assertEqualsTerm("abcde\n" + "fghij\n" + "klmno\n" + "pqrst\n" + "uvwxy\n" + "zABCD\n" + " I",
+ toMultiLineText(term));
+ vt100.setDimensions(3, 5);
+ fill(term, s);
+
+ vt100.setCursor(2, 4);
+ vt100.eraseLineToCursor();
+ assertEquals(2, vt100.getCursorLine());
+ assertEquals(4, vt100.getCursorColumn());
+ assertEqualsTerm("abcde\n" + "fghij\n" + "klmno\n" + "pqrst\n" + "uvwxy\n" + "zABCD\n" + " ",
+ toMultiLineText(term));
+
+ vt100.setCursor(2, 5);
+ vt100.eraseLineToCursor();
+ assertEquals(2, vt100.getCursorLine());
+ assertEquals(4, vt100.getCursorColumn());
+ assertEqualsTerm("abcde\n" + "fghij\n" + "klmno\n" + "pqrst\n" + "uvwxy\n" + "zABCD\n" + " ",
+ toMultiLineText(term));
+
+ }
+
+ public void testInsertLines() {
+ ITerminalTextData term = makeITerminalTextData();
+ IVT100EmulatorBackend vt100 = makeBakend(term);
+ String s = "0000\n" + "1111\n" + "2222\n" + "3333\n" + "4444\n" + "5555";
+ vt100.setDimensions(3, 4);
+ fill(term, s);
+ vt100.setCursor(0, 0);
+ vt100.insertLines(1);
+ assertEqualsTerm("0000\n" + "1111\n" + "2222\n" + " \n" + "3333\n" + "4444", toMultiLineText(term));
+
+ fill(term, s);
+ vt100.setCursor(1, 0);
+ vt100.insertLines(1);
+ assertEqualsTerm("0000\n" + "1111\n" + "2222\n" + "3333\n" + " \n" + "4444", toMultiLineText(term));
+
+ fill(term, s);
+ vt100.setCursor(1, 0);
+ vt100.insertLines(2);
+ assertEqualsTerm("0000\n" + "1111\n" + "2222\n" + "3333\n" + " \n" + " ", toMultiLineText(term));
+
+ fill(term, s);
+ vt100.setCursor(1, 3);
+ vt100.insertLines(2);
+ assertEqualsTerm("0000\n" + "1111\n" + "2222\n" + "3333\n" + " \n" + " ", toMultiLineText(term));
+
+ vt100.setDimensions(6, 4);
+ fill(term, s);
+ vt100.setCursor(1, 3);
+ vt100.insertLines(2);
+ assertEqualsTerm("0000\n" + " \n" + " \n" + "1111\n" + "2222\n" + "3333", toMultiLineText(term));
+
+ vt100.setDimensions(6, 4);
+ fill(term, s);
+ vt100.setCursor(1, 3);
+ vt100.insertLines(7);
+ assertEqualsTerm("0000\n" + " \n" + " \n" + " \n" + " \n" + " ", toMultiLineText(term));
+
+ vt100.setDimensions(6, 4);
+ fill(term, s);
+ vt100.setCursor(0, 0);
+ vt100.insertLines(7);
+ assertEqualsTerm(" \n" + " \n" + " \n" + " \n" + " \n" + " ", toMultiLineText(term));
+
+ vt100.setDimensions(6, 4);
+ fill(term, s);
+ vt100.setCursor(0, 0);
+ vt100.insertLines(5);
+ assertEqualsTerm(" \n" + " \n" + " \n" + " \n" + " \n" + "0000", toMultiLineText(term));
+ }
+
+ public void testDeleteCharacters() {
+ ITerminalTextData term = makeITerminalTextData();
+ IVT100EmulatorBackend vt100 = makeBakend(term);
+ vt100.setDimensions(3, 4);
+ String s = "aaaa\n" + "bbbb\n" + "cccc\n" + "dddd\n" + "eeee\n" + "ffff\n" + "1234\n" + "4567\n" + "9012";
+ fill(term, s);
+ vt100.setCursor(0, 0);
+ vt100.deleteCharacters(1);
+ assertEqualsTerm("aaaa\n" + "bbbb\n" + "cccc\n" + "dddd\n" + "eeee\n" + "ffff\n" + "234 \n" + "4567\n" + "9012",
+ toMultiLineText(term));
+
+ fill(term, s);
+ vt100.setCursor(1, 1);
+ vt100.deleteCharacters(1);
+ assertEqualsTerm("aaaa\n" + "bbbb\n" + "cccc\n" + "dddd\n" + "eeee\n" + "ffff\n" + "1234\n" + "467 \n" + "9012",
+ toMultiLineText(term));
+
+ fill(term, s);
+ vt100.setCursor(1, 1);
+ vt100.deleteCharacters(2);
+ assertEqualsTerm("aaaa\n" + "bbbb\n" + "cccc\n" + "dddd\n" + "eeee\n" + "ffff\n" + "1234\n" + "47 \n" + "9012",
+ toMultiLineText(term));
+
+ vt100.setDimensions(1, 10);
+ fill(term, "0123456789");
+ vt100.setCursor(0, 0);
+ vt100.deleteCharacters(10);
+ assertEqualsTerm(" ", toMultiLineText(term));
+
+ vt100.setDimensions(1, 10);
+ fill(term, "0123456789");
+ vt100.setCursor(0, 0);
+ vt100.deleteCharacters(14);
+ assertEqualsTerm(" ", toMultiLineText(term));
+
+ vt100.setDimensions(1, 10);
+ fill(term, "0123456789");
+ vt100.setCursor(0, 3);
+ vt100.deleteCharacters(0);
+ assertEqualsTerm("0123456789", toMultiLineText(term));
+
+ vt100.setDimensions(1, 10);
+ fill(term, "0123456789");
+ vt100.setCursor(0, 3);
+ vt100.deleteCharacters(2);
+ assertEqualsTerm("01256789 ", toMultiLineText(term));
+
+ vt100.setDimensions(1, 10);
+ fill(term, "0123456789");
+ vt100.setCursor(0, 3);
+ vt100.deleteCharacters(14);
+ assertEqualsTerm("012 ", toMultiLineText(term));
+
+ }
+
+ public void testDeleteLines() {
+ ITerminalTextData term = makeITerminalTextData();
+ IVT100EmulatorBackend vt100 = makeBakend(term);
+ String s = "0000\n" + "1111\n" + "2222\n" + "3333\n" + "4444\n" + "5555";
+ vt100.setDimensions(3, 4);
+ fill(term, s);
+ vt100.setCursor(0, 0);
+ vt100.deleteLines(1);
+ assertEqualsTerm("0000\n" + "1111\n" + "2222\n" + "4444\n" + "5555\n" + " ", toMultiLineText(term));
+
+ fill(term, s);
+ vt100.setCursor(1, 0);
+ vt100.deleteLines(1);
+ assertEqualsTerm("0000\n" + "1111\n" + "2222\n" + "3333\n" + "5555\n" + " ", toMultiLineText(term));
+
+ fill(term, s);
+ vt100.setCursor(1, 0);
+ vt100.deleteLines(2);
+ assertEqualsTerm("0000\n" + "1111\n" + "2222\n" + "3333\n" + " \n" + " ", toMultiLineText(term));
+
+ fill(term, s);
+ vt100.setCursor(1, 3);
+ vt100.deleteLines(2);
+ assertEqualsTerm("0000\n" + "1111\n" + "2222\n" + "3333\n" + " \n" + " ", toMultiLineText(term));
+
+ vt100.setDimensions(6, 4);
+ fill(term, s);
+ vt100.setCursor(1, 3);
+ vt100.deleteLines(2);
+ assertEqualsTerm("0000\n" + "3333\n" + "4444\n" + "5555\n" + " \n" + " ", toMultiLineText(term));
+
+ vt100.setDimensions(6, 4);
+ fill(term, s);
+ vt100.setCursor(1, 3);
+ vt100.deleteLines(7);
+ assertEqualsTerm("0000\n" + " \n" + " \n" + " \n" + " \n" + " ", toMultiLineText(term));
+
+ vt100.setDimensions(6, 4);
+ fill(term, s);
+ vt100.setCursor(0, 0);
+ vt100.deleteLines(7);
+ assertEqualsTerm(" \n" + " \n" + " \n" + " \n" + " \n" + " ", toMultiLineText(term));
+
+ vt100.setDimensions(6, 4);
+ fill(term, s);
+ vt100.setCursor(0, 0);
+ vt100.deleteLines(5);
+ assertEqualsTerm("5555\n" + " \n" + " \n" + " \n" + " \n" + " ", toMultiLineText(term));
+ }
+
+ public void testGetDefaultStyle() {
+ ITerminalTextData term = makeITerminalTextData();
+ IVT100EmulatorBackend vt100 = makeBakend(term);
+ TerminalStyle style = TerminalStyle.getStyle(WHITE, BLACK);
+ vt100.setDefaultStyle(style);
+ assertSame(style, vt100.getDefaultStyle());
+ TerminalStyle style2 = style.setBold(true);
+ vt100.setDefaultStyle(style2);
+ assertSame(style2, vt100.getDefaultStyle());
+ }
+
+ public void testGetStyle() {
+ ITerminalTextData term = makeITerminalTextData();
+ IVT100EmulatorBackend vt100 = makeBakend(term);
+ TerminalStyle style = TerminalStyle.getStyle(WHITE, BLACK);
+ vt100.setStyle(style);
+ assertSame(style, vt100.getStyle());
+ TerminalStyle style2 = style.setBold(true);
+ vt100.setStyle(style2);
+ assertSame(style2, vt100.getStyle());
+ }
+
+ public void testAppendString() {
+ ITerminalTextData term = makeITerminalTextData();
+ IVT100EmulatorBackend vt100 = makeBakend(term);
+ term.setMaxHeight(6);
+ vt100.setDimensions(3, 4);
+ vt100.setCursor(0, 0);
+ assertEqualsTerm(" \n" + " \n" + " ", toMultiLineText(term));
+ vt100.appendString("012");
+ assertEqualsTerm("012 \n" + " \n" + " ", toMultiLineText(term));
+ assertEquals(0, vt100.getCursorLine());
+ assertEquals(3, vt100.getCursorColumn());
+ vt100.appendString("3");
+ assertEqualsTerm("0123\n" + " \n" + " ", toMultiLineText(term));
+ assertEquals(1, vt100.getCursorLine());
+ assertEquals(0, vt100.getCursorColumn());
+
+ vt100.appendString("567890");
+ assertEqualsTerm("0123\n" + "5678\n" + "90 ", toMultiLineText(term));
+ assertEquals(2, vt100.getCursorLine());
+ assertEquals(2, vt100.getCursorColumn());
+
+ vt100.appendString("a");
+ assertEqualsTerm("0123\n" + "5678\n" + "90a ", toMultiLineText(term));
+ assertEquals(2, vt100.getCursorLine());
+ assertEquals(3, vt100.getCursorColumn());
+
+ vt100.appendString("b");
+ assertEqualsTerm("0123\n" + "5678\n" + "90ab\n" + " ", toMultiLineText(term));
+ assertEquals(2, vt100.getCursorLine());
+ assertEquals(0, vt100.getCursorColumn());
+
+ vt100.appendString("cd");
+ assertEqualsTerm("0123\n" + "5678\n" + "90ab\n" + "cd ", toMultiLineText(term));
+ assertEquals(2, vt100.getCursorLine());
+ assertEquals(2, vt100.getCursorColumn());
+
+ vt100.appendString("efgh");
+ assertEqualsTerm("0123\n" + "5678\n" + "90ab\n" + "cdef\n" + "gh ", toMultiLineText(term));
+ assertEquals(2, vt100.getCursorLine());
+ assertEquals(2, vt100.getCursorColumn());
+
+ vt100.appendString("ijklmnopqrstuvwx");
+ assertEqualsTerm("cdef\n" + "ghij\n" + "klmn\n" + "opqr\n" + "stuv\n" + "wx ", toMultiLineText(term));
+ assertEquals(2, vt100.getCursorLine());
+ assertEquals(2, vt100.getCursorColumn());
+
+ vt100.setCursor(1, 1);
+ vt100.appendString("123");
+ assertEqualsTerm("cdef\n" + "ghij\n" + "klmn\n" + "opqr\n" + "s123\n" + "wx ", toMultiLineText(term));
+ assertEquals(2, vt100.getCursorLine());
+ assertEquals(0, vt100.getCursorColumn());
+
+ vt100.setCursor(1, 1);
+ vt100.appendString("ABCDEFGHIJKL");
+ assertEqualsTerm("klmn\n" + "opqr\n" + "sABC\n" + "DEFG\n" + "HIJK\n" + "L ", toMultiLineText(term));
+ assertEquals(2, vt100.getCursorLine());
+ assertEquals(1, vt100.getCursorColumn());
+ }
+
+ public void testProcessNewline() {
+ ITerminalTextData term = makeITerminalTextData();
+ IVT100EmulatorBackend vt100 = makeBakend(term);
+ String s = "0000\n" + "1111\n" + "2222\n" + "3333\n" + "4444\n" + "5555";
+ term.setMaxHeight(6);
+ vt100.setDimensions(3, 4);
+ vt100.setCursor(0, 0);
+ fill(term, s);
+ assertEquals(0, vt100.getCursorLine());
+ assertEquals(0, vt100.getCursorColumn());
+ vt100.processNewline();
+ assertEqualsTerm(s, toMultiLineText(term));
+ assertEquals(1, vt100.getCursorLine());
+ assertEquals(0, vt100.getCursorColumn());
+ vt100.setCursorColumn(3);
+ vt100.processNewline();
+ assertEqualsTerm(s, toMultiLineText(term));
+ assertEquals(2, vt100.getCursorLine());
+ assertEquals(3, vt100.getCursorColumn());
+
+ vt100.processNewline();
+ assertEqualsTerm("1111\n" + "2222\n" + "3333\n" + "4444\n" + "5555\n" + " ", toMultiLineText(term));
+ assertEquals(2, vt100.getCursorLine());
+ assertEquals(3, vt100.getCursorColumn());
+
+ vt100.processNewline();
+ assertEqualsTerm("2222\n" + "3333\n" + "4444\n" + "5555\n" + " \n" + " ", toMultiLineText(term));
+ assertEquals(2, vt100.getCursorLine());
+ assertEquals(3, vt100.getCursorColumn());
+ }
+
+ public void testSetCursorLine() {
+ ITerminalTextData term = makeITerminalTextData();
+ IVT100EmulatorBackend vt100 = makeBakend(term);
+ term.setMaxHeight(6);
+ vt100.setDimensions(3, 4);
+ // the cursor still at the beginning....
+ assertEquals(0, vt100.getCursorLine());
+ assertEquals(0, vt100.getCursorColumn());
+ vt100.setCursor(0, 2);
+ vt100.setCursorLine(1);
+ assertEquals(1, vt100.getCursorLine());
+ assertEquals(2, vt100.getCursorColumn());
+ vt100.setCursor(0, -2);
+ vt100.setCursorLine(-1);
+ assertEquals(0, vt100.getCursorLine());
+ assertEquals(0, vt100.getCursorColumn());
+ vt100.setCursor(0, 10);
+ vt100.setCursorLine(10);
+ assertEquals(2, vt100.getCursorLine());
+ assertEquals(3, vt100.getCursorColumn());
+ }
+
+ public void testSetCursorAndSetDimensions() {
+ ITerminalTextData term = makeITerminalTextData();
+ IVT100EmulatorBackend vt100 = makeBakend(term);
+ term.setMaxHeight(10);
+ vt100.setDimensions(3, 4);
+ // the cursor still at the beginning....
+ assertEquals(0, vt100.getCursorLine());
+ assertEquals(0, vt100.getCursorColumn());
+ vt100.setDimensions(6, 4);
+ assertEquals(0, vt100.getCursorLine());
+ assertEquals(0, vt100.getCursorColumn());
+ vt100.setCursor(2, 3);
+ vt100.setDimensions(8, 4);
+ assertEquals(2, vt100.getCursorLine());
+ assertEquals(3, vt100.getCursorColumn());
+ }
+
+ public void testSetCursorColumn() {
+ ITerminalTextData term = makeITerminalTextData();
+ IVT100EmulatorBackend vt100 = makeBakend(term);
+ term.setMaxHeight(6);
+ vt100.setDimensions(3, 4);
+ assertEquals(0, vt100.getCursorLine());
+ assertEquals(0, vt100.getCursorColumn());
+ vt100.setCursor(1, 0);
+ vt100.setCursorColumn(2);
+ assertEquals(1, vt100.getCursorLine());
+ assertEquals(2, vt100.getCursorColumn());
+ vt100.setCursor(-1, -2);
+ vt100.setCursorColumn(-2);
+ assertEquals(0, vt100.getCursorLine());
+ assertEquals(0, vt100.getCursorColumn());
+ vt100.setCursor(10, 0);
+ vt100.setCursorColumn(10);
+ assertEquals(2, vt100.getCursorLine());
+ assertEquals(3, vt100.getCursorColumn());
+ }
+
+ public void testSetCursor() {
+ ITerminalTextData term = makeITerminalTextData();
+ IVT100EmulatorBackend vt100 = makeBakend(term);
+ term.setMaxHeight(6);
+ vt100.setDimensions(3, 4);
+ assertEquals(0, vt100.getCursorLine());
+ assertEquals(0, vt100.getCursorColumn());
+ vt100.setCursor(0, 0);
+ assertEquals(0, vt100.getCursorLine());
+ assertEquals(0, vt100.getCursorColumn());
+ vt100.setCursor(1, 2);
+ assertEquals(1, vt100.getCursorLine());
+ assertEquals(2, vt100.getCursorColumn());
+ vt100.setCursor(-1, -2);
+ assertEquals(0, vt100.getCursorLine());
+ assertEquals(0, vt100.getCursorColumn());
+ vt100.setCursor(10, 10);
+ assertEquals(2, vt100.getCursorLine());
+ assertEquals(3, vt100.getCursorColumn());
+ }
+
+ public void testVT100LineWrappingOn() {
+ ITerminalTextData term = makeITerminalTextData();
+ IVT100EmulatorBackend vt100 = makeBakend(term);
+ term.setMaxHeight(10);
+ vt100.setDimensions(6, 4);
+ vt100.setVT100LineWrapping(true);
+ vt100.appendString("abcd");
+ vt100.setCursorColumn(0);
+ vt100.processNewline();
+ vt100.appendString("1234");
+ vt100.setCursorColumn(0);
+ vt100.processNewline();
+ assertEquals(2, vt100.getCursorLine());
+ }
+
+ public void testVT100LineWrappingOff() {
+ ITerminalTextData term = makeITerminalTextData();
+ IVT100EmulatorBackend vt100 = makeBakend(term);
+ term.setMaxHeight(10);
+ vt100.setDimensions(6, 4);
+ vt100.setVT100LineWrapping(false);
+ vt100.appendString("abcd");
+ vt100.setCursorColumn(0);
+ vt100.processNewline();
+ vt100.appendString("1234");
+ vt100.setCursorColumn(0);
+ vt100.processNewline();
+ assertEquals(4, vt100.getCursorLine());
+ }
+
+ public void testWrappedLines() {
+ ITerminalTextData term = makeITerminalTextData();
+ IVT100EmulatorBackend vt100 = makeBakend(term);
+ term.setMaxHeight(10);
+ vt100.setDimensions(6, 4);
+ vt100.setVT100LineWrapping(true);
+ vt100.appendString("abcd123");
+ vt100.setCursorColumn(0);
+ vt100.processNewline();
+ vt100.appendString("abc");
+ vt100.setCursorColumn(0);
+ vt100.processNewline();
+ vt100.appendString("1234abcd");
+ assertEquals(4, vt100.getCursorLine());
+ assertTrue(term.isWrappedLine(0));
+ assertFalse(term.isWrappedLine(1));
+ assertFalse(term.isWrappedLine(2));
+ assertTrue(term.isWrappedLine(3));
+ }
+
+ public void testInsertMode() {
+ ITerminalTextData term = makeITerminalTextData();
+ IVT100EmulatorBackend vt100 = makeBakend(term);
+ term.setMaxHeight(10);
+ vt100.setDimensions(4, 6);
+ // replace mode
+ vt100.appendString("123");
+ vt100.setCursorColumn(0);
+ vt100.appendString("abc");
+ assertEquals("abc", new String(term.getChars(0)));
+ vt100.clearAll();
+ // insert mode
+ vt100.setCursorColumn(0);
+ vt100.appendString("123");
+ vt100.setCursorColumn(0);
+ vt100.setInsertMode(true);
+ vt100.appendString("abc");
+ vt100.setInsertMode(false);
+ assertEquals("abc123", new String(term.getChars(0)));
+ }
+
+ public void testScrollRegion() {
+ ITerminalTextData term = makeITerminalTextData();
+ IVT100EmulatorBackend vt100 = makeBakend(term);
+ term.setMaxHeight(10);
+ vt100.setDimensions(8, 6);
+ vt100.appendString("123");
+ vt100.setCursorColumn(0);
+ vt100.processNewline();
+ vt100.appendString("456");
+ vt100.setCursorColumn(0);
+ vt100.processNewline();
+ vt100.appendString("789");
+ vt100.setCursorColumn(0);
+ vt100.processNewline();
+ vt100.appendString("abc");
+ vt100.setCursorColumn(0);
+ vt100.processNewline();
+ vt100.appendString("def");
+ vt100.setCursorColumn(0);
+ vt100.processNewline();
+ vt100.appendString("ghi");
+
+ // test scroll within region
+ vt100.setCursorLine(1);
+ vt100.setScrollRegion(1, 4);
+ vt100.scrollUp(1);
+ assertEquals("123", new String(term.getChars(0)));
+ assertEquals("789", new String(term.getChars(1)));
+ assertEquals("abc", new String(term.getChars(2)));
+ assertEquals("def", new String(term.getChars(3)));
+ assertNull(term.getChars(4));
+ assertEquals("ghi", new String(term.getChars(5)));
+ vt100.scrollDown(1);
+ assertEquals("123", new String(term.getChars(0)));
+ assertNull(term.getChars(1));
+ assertEquals("789", new String(term.getChars(2)));
+ assertEquals("abc", new String(term.getChars(3)));
+ assertEquals("def", new String(term.getChars(4)));
+ assertEquals("ghi", new String(term.getChars(5)));
+
+ // test scroll without region
+ vt100.setScrollRegion(-1, -1);
+ vt100.scrollDown(1);
+ assertNull(term.getChars(0));
+ assertEquals("123", new String(term.getChars(1)));
+ assertNull(term.getChars(2));
+ assertEquals("789", new String(term.getChars(3)));
+ assertEquals("abc", new String(term.getChars(4)));
+ assertEquals("def", new String(term.getChars(5)));
+ assertEquals("ghi", new String(term.getChars(6)));
+ vt100.scrollUp(1);
+ assertEquals("123", new String(term.getChars(0)));
+ assertNull(term.getChars(1));
+ assertEquals("789", new String(term.getChars(2)));
+ assertEquals("abc", new String(term.getChars(3)));
+ assertEquals("def", new String(term.getChars(4)));
+ assertEquals("ghi", new String(term.getChars(5)));
+
+ // test scroll by newline
+ vt100.setScrollRegion(1, 4);
+ vt100.setCursorLine(4);
+ vt100.processNewline();
+ assertEquals("123", new String(term.getChars(0)));
+ assertEquals("789", new String(term.getChars(1)));
+ assertEquals("abc", new String(term.getChars(2)));
+ assertEquals("def", new String(term.getChars(3)));
+ assertNull(term.getChars(4));
+ assertEquals("ghi", new String(term.getChars(5)));
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/emulator/VT100EmulatorTest.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/emulator/VT100EmulatorTest.java
new file mode 100644
index 00000000000..b32128bf928
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/emulator/VT100EmulatorTest.java
@@ -0,0 +1,343 @@
+/*******************************************************************************
+ * Copyright (c) 2021 Kichwa Coders Canada Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.emulator;
+
+import static org.junit.jupiter.api.Assertions.assertAll;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import java.io.IOException;
+import java.io.Reader;
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.StringJoiner;
+
+import org.eclipse.tm.internal.terminal.provisional.api.Logger;
+import org.eclipse.tm.terminal.model.ITerminalTextData;
+import org.eclipse.tm.terminal.model.TerminalTextDataFactory;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+public class VT100EmulatorTest {
+
+ private static final int WINDOW_COLUMNS = 80;
+ private static final int WINDOW_LINES = 24;
+ private static final String CLEAR_CURSOR_TO_EOL = "\033[K";
+ private static final String CURSOR_POSITION_TOP_LEFT = "\033[H";
+ private static final String CLEAR_ENTIRE_SCREEN_AND_SCROLLBACK = "\033[3J";
+ private static final String CLEAR_ENTIRE_SCREEN = "\033[2J";
+ private static final String SCROLL_REVERSE = "\033M";
+
+ private static String TITLE(String title) {
+ return "\033]0;" + title + "\007";
+ }
+
+ private static String SCROLL_REGION(int startRow, int endRow) {
+ return "\033[" + startRow + ";" + endRow + "r";
+ }
+
+ /**
+ * Set the cursor position to line/column. Note that this is the logical
+ * line and column, so 1, 1 is the top left.
+ */
+ private static String CURSOR_POSITION(int line, int column) {
+ return "\033[" + line + ";" + column + "H";
+ }
+
+ @BeforeAll
+ public static void beforeAll() {
+ Logger.setUnderTest(true);
+ }
+
+ @AfterAll
+ public static void afterAll() {
+ Logger.setUnderTest(false);
+ }
+
+ private ITerminalTextData data;
+
+ private MockTerminalControlForText control = new MockTerminalControlForText();
+
+ private VT100Emulator emulator;
+
+ @BeforeEach
+ public void before() {
+ data = TerminalTextDataFactory.makeTerminalTextData();
+ emulator = new VT100Emulator(data, control, null);
+ emulator.resetState();
+ emulator.setDimensions(WINDOW_LINES, WINDOW_COLUMNS);
+ }
+
+ private Reader input(String... input) {
+ StringReader reader = new StringReader(String.join("", input));
+ emulator.setInputStreamReader(reader);
+ return reader;
+ }
+
+ private void run(String... input) {
+ Reader reader = input(input);
+ emulator.processText();
+ try {
+ assertEquals(-1, reader.read());
+ } catch (IOException e) {
+ throw new RuntimeException("Wrap exception so that run can be called in functions", e);
+ }
+ }
+
+ /**
+ * Convert the data's char arrays into a string that can be compared with
+ * an expected array of lines. Each line in the data has its \0 characters
+ * changed to spaces and then stripTrailing is run.
+ *
+ * @param expectedArray lines that are joined with \n before testing against actual
+ */
+ private void assertTextEquals(String... expectedArray) {
+ int height = data.getHeight();
+ StringJoiner sj = new StringJoiner("\n");
+ for (int i = 0; i < height; i++) {
+ char[] chars = data.getChars(i);
+ String line = chars == null ? "" : new String(chars);
+ String lineCleanedup = line.replace('\0', ' ');
+ String stripTrailing = lineCleanedup.stripTrailing();
+ sj.add(stripTrailing);
+ }
+ String expected = String.join("\n", expectedArray).stripTrailing();
+ String actual = sj.toString().stripTrailing();
+ assertEquals(expected, actual);
+ }
+
+ private void assertTextEquals(List<String> expected) {
+ assertTextEquals(expected.toArray(String[]::new));
+ }
+
+ private void assertCursorLocation(int line, int column) {
+ assertAll(() -> assertEquals(line, data.getCursorLine(), "cursor line"),
+ () -> assertEquals(column, data.getCursorColumn(), "cursor column"));
+ }
+
+ /**
+ * This tests the test harness ({@link #assertTextEquals(String...)} as much as the code.
+ */
+ @Test
+ public void testBasicOperaiion() {
+ assertAll(() -> assertCursorLocation(0, 0), () -> assertTextEquals(""));
+ run("Hello");
+ assertAll(() -> assertCursorLocation(0, 5), () -> assertTextEquals("Hello"));
+ emulator.clearTerminal();
+ assertAll(() -> assertCursorLocation(0, 0), () -> assertTextEquals(""));
+
+ // test multiline
+ emulator.clearTerminal();
+ run("Hello 1\r\nHello 2");
+ // test both ways of asserting multiple lines
+ assertAll(() -> assertCursorLocation(1, 7), //
+ () -> assertTextEquals("Hello 1\nHello 2"), //
+ () -> assertTextEquals("Hello 1", "Hello 2"));
+
+ // test with no carriage return
+ emulator.clearTerminal();
+ run("Hello 1\nHello 2");
+ assertTextEquals("Hello 1", " Hello 2");
+
+ // test \b backspace
+ emulator.clearTerminal();
+ run("Hello 1");
+ assertAll(() -> assertCursorLocation(0, 7), () -> assertTextEquals("Hello 1"));
+ run("\b\b");
+ assertAll(() -> assertCursorLocation(0, 5), () -> assertTextEquals("Hello 1"));
+ run(CLEAR_CURSOR_TO_EOL);
+ assertAll(() -> assertCursorLocation(0, 5), () -> assertTextEquals("Hello"));
+ }
+
+ @Test
+ public void testMultiline() {
+ List<String> expected = new ArrayList<>();
+ for (int i = 0; i < data.getHeight(); i++) {
+ String line = "Hello " + i;
+ expected.add(line);
+ run(line);
+ if (i != data.getHeight() - 1) {
+ run("\r\n");
+ }
+ }
+ assertTextEquals(expected);
+
+ // add the final newline and check that the first line has been scrolled away
+ run("\r\n");
+ expected.remove(0);
+ assertTextEquals(expected);
+ }
+
+ @Test
+ public void testScrollBack() {
+ data.setMaxHeight(1000);
+ List<String> expected = new ArrayList<>();
+ for (int i = 0; i < 1000; i++) {
+ String line = "Hello " + i;
+ run(line + "\r\n");
+ expected.add(line);
+ }
+ expected.remove(0);
+ assertTextEquals(expected);
+ }
+
+ @Test
+ public void testCursorPosition() {
+ run(CURSOR_POSITION_TOP_LEFT);
+ assertAll(() -> assertCursorLocation(0, 0), () -> assertTextEquals(""));
+ run("Hello");
+ assertAll(() -> assertCursorLocation(0, 5), () -> assertTextEquals("Hello"));
+ run(CURSOR_POSITION_TOP_LEFT);
+ assertAll(() -> assertCursorLocation(0, 0), () -> assertTextEquals("Hello"));
+ run(CURSOR_POSITION(2, 2));
+ assertAll(() -> assertCursorLocation(1, 1), () -> assertTextEquals("Hello"));
+ emulator.clearTerminal();
+
+ data.setMaxHeight(1000);
+ List<String> expected = new ArrayList<>();
+ for (int i = 0; i < WINDOW_LINES; i++) {
+ String line = "Hello " + i;
+ run(line + "\r\n");
+ expected.add(line);
+ }
+ assertAll(() -> assertCursorLocation(WINDOW_LINES, 0), () -> assertTextEquals(expected));
+ run(CURSOR_POSITION_TOP_LEFT);
+ // because we added WINDOW_LINES number of lines, and ended it with a \r\n the first
+ // line we added is now in the scrollback, so the cursor is at line 1
+ assertAll(() -> assertCursorLocation(1, 0), () -> assertTextEquals(expected));
+ run("Bye \r\n");
+ expected.set(1, "Bye");
+ assertAll(() -> assertCursorLocation(2, 0), () -> assertTextEquals(expected));
+ run(CURSOR_POSITION_TOP_LEFT);
+ assertAll(() -> assertCursorLocation(1, 0), () -> assertTextEquals(expected));
+ run(CURSOR_POSITION(2, 2));
+ assertAll(() -> assertCursorLocation(2, 1), () -> assertTextEquals(expected));
+ }
+
+ @Test
+ public void testTitle() {
+ run( //
+ TITLE("TITLE1"), //
+ "HELLO", //
+ TITLE("TITLE2"));
+ assertAll(() -> assertTextEquals("HELLO"),
+ () -> assertEquals(List.of("TITLE1", "TITLE2"), control.getAllTitles()));
+ }
+
+ @Test
+ public void testE3ClearScreenAndScrollback() {
+ data.setMaxHeight(1000);
+ List<String> expected = new ArrayList<>();
+ for (int i = 0; i < 1000; i++) {
+ String line = "Hello " + i;
+ run(line + "\r\n");
+ expected.add(line);
+ }
+ expected.remove(0);
+ assertAll(() -> assertCursorLocation(999, 0), () -> assertTextEquals(expected));
+ run(CLEAR_ENTIRE_SCREEN_AND_SCROLLBACK);
+ assertAll(() -> assertTextEquals(""));
+ }
+
+ /**
+ * Runs what "clear" command does on modern Linux installs, including E3 extension
+ */
+ @Test
+ public void testClear() {
+ data.setMaxHeight(1000);
+ List<String> expected = new ArrayList<>();
+ for (int i = 0; i < 1000; i++) {
+ String line = "Hello " + i;
+ run(line + "\r\n");
+ expected.add(line);
+ }
+ expected.remove(0);
+ assertAll(() -> assertCursorLocation(999, 0), () -> assertTextEquals(expected));
+ run(CURSOR_POSITION_TOP_LEFT + CLEAR_ENTIRE_SCREEN + CLEAR_ENTIRE_SCREEN_AND_SCROLLBACK);
+ assertAll(() -> assertCursorLocation(0, 0), () -> assertTextEquals(""));
+ }
+
+ /**
+ * Runs what "up arrow" would send back to terminal in less/man/etc.
+ */
+ @Test
+ public void testScrollReverseNoScrollback() {
+ List<String> expected = new ArrayList<>();
+ for (int i = 0; i < WINDOW_LINES; i++) {
+ String line = "Hello " + i;
+ run(line);
+ expected.add(line);
+ if (i != data.getHeight() - 1) {
+ run("\r\n");
+ }
+ }
+ assertAll(() -> assertCursorLocation(WINDOW_LINES - 1, expected.get(expected.size() - 1).length()),
+ () -> assertTextEquals(expected));
+ run(CURSOR_POSITION_TOP_LEFT);
+ assertAll(() -> assertCursorLocation(0, 0), () -> assertTextEquals(expected));
+ run(SCROLL_REVERSE);
+ expected.add(0, "");
+ expected.remove(expected.size() - 1);
+ assertAll(() -> assertCursorLocation(0, 0), () -> assertTextEquals(expected));
+ }
+
+ /**
+ * Runs what "up arrow" would send back to terminal in less/man/etc.
+ */
+ @Test
+ public void testScrollReverse() {
+ data.setMaxHeight(1000);
+ List<String> expected = new ArrayList<>();
+ for (int i = 0; i < WINDOW_LINES; i++) {
+ String line = "Hello " + i;
+ run(line);
+ expected.add(line);
+ run("\r\n");
+ }
+ assertAll(() -> assertCursorLocation(WINDOW_LINES, 0), () -> assertTextEquals(expected));
+ run(CURSOR_POSITION_TOP_LEFT);
+ assertAll(() -> assertCursorLocation(1, 0), () -> assertTextEquals(expected));
+ run(SCROLL_REVERSE);
+ expected.add(1, "");
+ assertAll(() -> assertCursorLocation(1, 0), () -> assertTextEquals(expected));
+ run("New text on top line following scroll reverse");
+ expected.set(1, "New text on top line following scroll reverse");
+ assertAll(() -> assertCursorLocation(1, expected.get(1).length()), () -> assertTextEquals(expected));
+ }
+
+ /**
+ * Runs what "up arrow" would send back to terminal in less/man/etc.
+ * but with a scrolling region set
+ */
+ @Test
+ public void testScrollReverseScrollingRegion() {
+ data.setMaxHeight(1000);
+ List<String> expected = new ArrayList<>();
+ for (int i = 0; i < WINDOW_LINES; i++) {
+ String line = "Hello " + i;
+ run(line);
+ expected.add(line);
+ run("\r\n");
+ }
+ assertAll(() -> assertCursorLocation(WINDOW_LINES, 0), () -> assertTextEquals(expected));
+ run(CURSOR_POSITION_TOP_LEFT + "\n");
+ assertAll(() -> assertCursorLocation(2, 0), () -> assertTextEquals(expected));
+ run(SCROLL_REGION(2, WINDOW_LINES));
+ run(SCROLL_REVERSE);
+ expected.add(2, "");
+ assertAll(() -> assertCursorLocation(2, 0), () -> assertTextEquals(expected));
+ run("New text on top line following scroll reverse");
+ expected.set(2, "New text on top line following scroll reverse");
+ assertAll(() -> assertCursorLocation(2, expected.get(2).length()), () -> assertTextEquals(expected));
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/AbstractITerminalTextDataTest.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/AbstractITerminalTextDataTest.java
new file mode 100644
index 00000000000..ac7399229d3
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/AbstractITerminalTextDataTest.java
@@ -0,0 +1,713 @@
+/*******************************************************************************
+ * Copyright (c) 2007-2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ * Anton Leherbauer (Wind River) - [453393] Add support for copying wrapped lines without line break
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.model;
+
+import org.eclipse.tm.terminal.model.ITerminalTextData;
+import org.eclipse.tm.terminal.model.ITerminalTextDataReadOnly;
+import org.eclipse.tm.terminal.model.LineSegment;
+import org.eclipse.tm.terminal.model.TerminalStyle;
+
+import junit.framework.TestCase;
+
+abstract public class AbstractITerminalTextDataTest extends TestCase {
+ abstract protected ITerminalTextData makeITerminalTextData();
+
+ @Override
+ protected void setUp() throws Exception {
+ try {
+ assert false;
+ throw new Error("No Assertions! Run this code with assertions enabled! (vmargs: -ea)");
+ } catch (AssertionError e) {
+ // OK, assertions are enabled!
+ }
+ super.setUp();
+ }
+
+ protected String toSimple(ITerminalTextData term) {
+ return TerminalTextTestHelper.toSimple(term);
+ }
+
+ protected String toMultiLineText(ITerminalTextDataReadOnly term) {
+ return TerminalTextTestHelper.toMultiLineText(term);
+ }
+
+ protected void fill(ITerminalTextData term, String s) {
+ TerminalTextTestHelper.fill(term, s);
+ }
+
+ protected void fill(ITerminalTextData term, int i, int j, String s) {
+ TerminalTextTestHelper.fill(term, i, j, s);
+ }
+
+ protected void fillSimple(ITerminalTextData term, String s) {
+ TerminalTextTestHelper.fillSimple(term, s);
+ }
+
+ /**
+ * Used for multi line text
+ * @param expected
+ * @param actual
+ */
+ protected void assertEqualsTerm(String expected, String actual) {
+ assertEquals(expected, actual);
+ }
+
+ /**
+ * Used for simple text
+ * @param expected
+ * @param actual
+ */
+ protected void assertEqualsSimple(String expected, String actual) {
+ assertEquals(-1, actual.indexOf('\n'));
+ assertEquals(expected, actual);
+ }
+
+ public void testGetWidth() {
+ ITerminalTextData term = makeITerminalTextData();
+ assertEquals(0, term.getWidth());
+ term.setDimensions(term.getHeight(), 10);
+ assertEquals(10, term.getWidth());
+ term.setDimensions(term.getHeight(), 0);
+ assertEquals(0, term.getWidth());
+ }
+
+ public void testAddLine() {
+ String s = "111\n" + "222\n" + "333\n" + "444\n" + "555";
+ ITerminalTextData term = makeITerminalTextData();
+ fill(term, s);
+ term.setMaxHeight(5);
+ term.addLine();
+ assertEqualsTerm("222\n" + "333\n" + "444\n" + "555\n" + "\000\000\000", toMultiLineText(term));
+ }
+
+ public void testCleanLine() {
+ String s = "111\n" + "222\n" + "333\n" + "444\n" + "555";
+ ITerminalTextData term = makeITerminalTextData();
+ fill(term, s);
+ term.cleanLine(0);
+ assertEqualsTerm("\000\000\000\n" + "222\n" + "333\n" + "444\n" + "555", toMultiLineText(term));
+
+ fill(term, s);
+ term.cleanLine(4);
+ assertEqualsTerm("111\n" + "222\n" + "333\n" + "444\n" + "\000\000\000", toMultiLineText(term));
+ }
+
+ public void testMaxSize() {
+ String s = "111\n" + "222\n" + "333\n" + "444\n" + "555";
+ ITerminalTextData term = makeITerminalTextData();
+ term.setMaxHeight(8);
+ fill(term, s);
+ assertEquals(5, term.getHeight());
+ assertEquals(8, term.getMaxHeight());
+ term.addLine();
+ assertEquals(6, term.getHeight());
+ assertEqualsTerm("111\n" + "222\n" + "333\n" + "444\n" + "555\n" + "\000\000\000", toMultiLineText(term));
+ term.addLine();
+ assertEquals(7, term.getHeight());
+ assertEqualsTerm("111\n" + "222\n" + "333\n" + "444\n" + "555\n" + "\000\000\000\n" + "\000\000\000",
+ toMultiLineText(term));
+ term.addLine();
+ assertEquals(8, term.getHeight());
+ assertEqualsTerm(
+ "111\n" + "222\n" + "333\n" + "444\n" + "555\n" + "\000\000\000\n" + "\000\000\000\n" + "\000\000\000",
+ toMultiLineText(term));
+ term.addLine();
+ assertEquals(8, term.getHeight());
+ assertEqualsTerm("222\n" + "333\n" + "444\n" + "555\n" + "\000\000\000\n" + "\000\000\000\n" + "\000\000\000\n"
+ + "\000\000\000", toMultiLineText(term));
+ term.addLine();
+ assertEquals(8, term.getHeight());
+ assertEqualsTerm("333\n" + "444\n" + "555\n" + "\000\000\000\n" + "\000\000\000\n" + "\000\000\000\n"
+ + "\000\000\000\n" + "\000\000\000", toMultiLineText(term));
+ }
+
+ public void testGetHeight() {
+ ITerminalTextData term = makeITerminalTextData();
+ assertEquals(0, term.getHeight());
+ term.setDimensions(10, term.getWidth());
+ assertEquals(10, term.getHeight());
+ term.setDimensions(0, term.getWidth());
+ assertEquals(0, term.getHeight());
+ }
+
+ public void testSetDimensions() {
+ ITerminalTextData term = makeITerminalTextData();
+ assertEquals(0, term.getHeight());
+ term.setDimensions(10, 5);
+ assertEquals(5, term.getWidth());
+ assertEquals(10, term.getHeight());
+ term.setDimensions(5, 10);
+ assertEquals(10, term.getWidth());
+ assertEquals(5, term.getHeight());
+ term.setDimensions(15, 0);
+ assertEquals(0, term.getWidth());
+ assertEquals(15, term.getHeight());
+ term.setDimensions(0, 12);
+ assertEquals(12, term.getWidth());
+ assertEquals(0, term.getHeight());
+ term.setDimensions(0, 0);
+ assertEquals(0, term.getWidth());
+ assertEquals(0, term.getHeight());
+ }
+
+ public void testResize() {
+ ITerminalTextData term = makeITerminalTextData();
+ term.setDimensions(3, 5);
+ String s = "12345\n" + "abcde\n" + "ABCDE";
+ fill(term, 0, 0, s);
+ assertEqualsTerm(s, toMultiLineText(term));
+ term.setDimensions(3, 4);
+ assertEqualsTerm("1234\n" + "abcd\n" + "ABCD", toMultiLineText(term));
+ // the columns should be restored
+ term.setDimensions(3, 5);
+ assertEqualsTerm("12345\n" + "abcde\n" + "ABCDE", toMultiLineText(term));
+ term.setDimensions(3, 6);
+ assertEqualsTerm("12345\000\n" + "abcde\000\n" + "ABCDE\000", toMultiLineText(term));
+ term.setChar(0, 5, 'x', null);
+ term.setChar(1, 5, 'y', null);
+ term.setChar(2, 5, 'z', null);
+ assertEqualsTerm("12345x\n" + "abcdey\n" + "ABCDEz", toMultiLineText(term));
+ term.setDimensions(2, 4);
+ assertEqualsTerm("1234\n" + "abcd", toMultiLineText(term));
+ }
+
+ public void testResizeFailure() {
+ ITerminalTextData term = makeITerminalTextData();
+ term.setDimensions(3, 5);
+ String s = "12345\n" + "abcde\n" + "ABCDE";
+ fill(term, 0, 0, s);
+ assertEqualsTerm(s, toMultiLineText(term));
+ try {
+ term.setDimensions(-3, 4);
+ fail();
+ } catch (RuntimeException e) {
+ // OK
+ }
+ // assertEquals(5, term.getWidth());
+ // assertEquals(3, term.getHeight());
+ // assertEquals(s, toSimpleText(term));
+ }
+
+ public void testGetLineSegments() {
+ TerminalStyle s1 = getDefaultStyle();
+ TerminalStyle s2 = s1.setBold(true);
+ TerminalStyle s3 = s1.setUnderline(true);
+ ITerminalTextData term = makeITerminalTextData();
+ term.setDimensions(8, 8);
+ LineSegment[] segments;
+
+ term.setChars(0, 0, "0123".toCharArray(), s1);
+ term.setChars(0, 4, "abcd".toCharArray(), null);
+ segments = term.getLineSegments(0, 0, term.getWidth());
+ assertEquals(2, segments.length);
+ assertSegment(0, "0123", s1, segments[0]);
+ assertSegment(4, "abcd", null, segments[1]);
+
+ segments = term.getLineSegments(0, 4, term.getWidth() - 4);
+ assertEquals(1, segments.length);
+ assertSegment(4, "abcd", null, segments[0]);
+
+ segments = term.getLineSegments(0, 3, 2);
+ assertEquals(2, segments.length);
+ assertSegment(3, "3", s1, segments[0]);
+ assertSegment(4, "a", null, segments[1]);
+
+ segments = term.getLineSegments(0, 7, 1);
+ assertEquals(1, segments.length);
+ assertSegment(7, "d", null, segments[0]);
+
+ segments = term.getLineSegments(0, 0, 1);
+ assertEquals(1, segments.length);
+ assertSegment(0, "0", s1, segments[0]);
+
+ // line 1
+ term.setChars(1, 0, "x".toCharArray(), s1);
+ term.setChars(1, 1, "y".toCharArray(), s2);
+ term.setChars(1, 2, "z".toCharArray(), s3);
+
+ segments = term.getLineSegments(1, 0, term.getWidth());
+ assertEquals(4, segments.length);
+ assertSegment(0, "x", s1, segments[0]);
+ assertSegment(1, "y", s2, segments[1]);
+ assertSegment(2, "z", s3, segments[2]);
+ assertSegment(3, "\000\000\000\000\000", null, segments[3]);
+
+ // line 2
+ term.setChars(2, 4, "klm".toCharArray(), s1);
+ segments = term.getLineSegments(2, 0, term.getWidth());
+ assertEquals(3, segments.length);
+ assertSegment(0, "\000\000\000\000", null, segments[0]);
+ assertSegment(4, "klm", s1, segments[1]);
+ assertSegment(7, "\000", null, segments[2]);
+
+ // line 3
+ segments = term.getLineSegments(3, 0, term.getWidth());
+ assertEquals(1, segments.length);
+ assertSegment(0, "\000\000\000\000\000\000\000\000", null, segments[0]);
+
+ }
+
+ public void testGetLineSegmentsNull() {
+ ITerminalTextData term = makeITerminalTextData();
+ term.setDimensions(8, 8);
+ LineSegment[] segments = term.getLineSegments(0, 0, term.getWidth());
+ assertEquals(1, segments.length);
+ }
+
+ public void testGetLineSegmentsOutOfBounds() {
+ ITerminalTextData term = makeITerminalTextData();
+ term.setDimensions(1, 8);
+ term.setChars(0, 0, "xx".toCharArray(), null);
+ LineSegment[] segments = term.getLineSegments(0, 5, 2);
+ assertEquals(1, segments.length);
+
+ }
+
+ void assertSegment(int col, String text, TerminalStyle style, LineSegment segment) {
+ assertEquals(col, segment.getColumn());
+ assertEqualsTerm(text, segment.getText());
+ assertEquals(style, segment.getStyle());
+
+ }
+
+ public void testGetChar() {
+ String s = "12345\n" + "abcde\n" + "ABCDE";
+ ITerminalTextData term = makeITerminalTextData();
+ fill(term, s);
+ assertEquals('1', term.getChar(0, 0));
+ assertEquals('2', term.getChar(0, 1));
+ assertEquals('3', term.getChar(0, 2));
+ assertEquals('4', term.getChar(0, 3));
+ assertEquals('5', term.getChar(0, 4));
+ assertEquals('a', term.getChar(1, 0));
+ assertEquals('b', term.getChar(1, 1));
+ assertEquals('c', term.getChar(1, 2));
+ assertEquals('d', term.getChar(1, 3));
+ assertEquals('e', term.getChar(1, 4));
+ assertEquals('A', term.getChar(2, 0));
+ assertEquals('B', term.getChar(2, 1));
+ assertEquals('C', term.getChar(2, 2));
+ assertEquals('D', term.getChar(2, 3));
+ assertEquals('E', term.getChar(2, 4));
+ try {
+ term.getChar(0, -1);
+ fail();
+ } catch (RuntimeException e) {
+ }
+ try {
+ term.getChar(-1, -1);
+ fail();
+ } catch (RuntimeException e) {
+ }
+ try {
+ term.getChar(-1, 0);
+ fail();
+ } catch (RuntimeException e) {
+ }
+ try {
+ term.getChar(0, 5);
+ fail();
+ } catch (RuntimeException e) {
+ }
+ try {
+ term.getChar(3, 5);
+ fail();
+ } catch (RuntimeException e) {
+ }
+ try {
+ term.getChar(3, 0);
+ fail();
+ } catch (RuntimeException e) {
+ }
+ }
+
+ public void testGetStyle() {
+ ITerminalTextData term = makeITerminalTextData();
+ TerminalStyle style = getDefaultStyle();
+ term.setDimensions(6, 3);
+ for (int line = 0; line < term.getHeight(); line++) {
+ for (int column = 0; column < term.getWidth(); column++) {
+ char c = (char) ('a' + column + line);
+ term.setChar(line, column, c, style.setForeground(c));
+ }
+ }
+ for (int line = 0; line < term.getHeight(); line++) {
+ for (int column = 0; column < term.getWidth(); column++) {
+ char c = (char) ('a' + column + line);
+ assertSame(style.setForeground(c), term.getStyle(line, column));
+ }
+ }
+
+ }
+
+ protected TerminalStyle getDefaultStyle() {
+ return TerminalStyle.getDefaultStyle();
+ }
+
+ public void testSetChar() {
+ ITerminalTextData term = makeITerminalTextData();
+ term.setDimensions(6, 3);
+ for (int line = 0; line < term.getHeight(); line++) {
+ for (int column = 0; column < term.getWidth(); column++) {
+ term.setChar(line, column, (char) ('a' + column + line), null);
+ }
+ }
+ for (int line = 0; line < term.getHeight(); line++) {
+ for (int column = 0; column < term.getWidth(); column++) {
+ char c = (char) ('a' + column + line);
+ assertEquals(c, term.getChar(line, column));
+ }
+ }
+ assertEqualsTerm("abc\n" + "bcd\n" + "cde\n" + "def\n" + "efg\n" + "fgh", toMultiLineText(term));
+ }
+
+ public void testSetChars() {
+ ITerminalTextData term = makeITerminalTextData();
+ term.setDimensions(6, 3);
+ for (int line = 0; line < term.getHeight(); line++) {
+ char[] chars = new char[term.getWidth()];
+ for (int column = 0; column < term.getWidth(); column++) {
+ chars[column] = (char) ('a' + column + line);
+ }
+ term.setChars(line, 0, chars, null);
+ }
+ for (int line = 0; line < term.getHeight(); line++) {
+ for (int column = 0; column < term.getWidth(); column++) {
+ char c = (char) ('a' + column + line);
+ assertEquals(c, term.getChar(line, column));
+ }
+ }
+ assertEqualsTerm("abc\n" + "bcd\n" + "cde\n" + "def\n" + "efg\n" + "fgh", toMultiLineText(term));
+
+ term.setChars(3, 1, new char[] { '1', '2' }, null);
+ assertEqualsTerm("abc\n" + "bcd\n" + "cde\n" + "d12\n" + "efg\n" + "fgh", toMultiLineText(term));
+ try {
+ // check if we cannot exceed the range
+ term.setChars(4, 1, new char[] { '1', '2', '3', '4', '5' }, null);
+ fail();
+ } catch (RuntimeException e) {
+ }
+
+ }
+
+ public void testSetCharsLen() {
+ ITerminalTextData term = makeITerminalTextData();
+ String s = "ZYXWVU\n" + "abcdef\n" + "ABCDEF";
+ fill(term, s);
+ char[] chars = new char[] { '1', '2', '3', '4', '5', '6', '7', '8' };
+ term.setChars(1, 0, chars, 0, 6, null);
+ assertEqualsTerm("ZYXWVU\n" + "123456\n" + "ABCDEF", toMultiLineText(term));
+
+ fill(term, s);
+ term.setChars(1, 0, chars, 0, 5, null);
+ assertEqualsTerm("ZYXWVU\n" + "12345f\n" + "ABCDEF", toMultiLineText(term));
+
+ fill(term, s);
+ term.setChars(1, 0, chars, 1, 5, null);
+ assertEqualsTerm("ZYXWVU\n" + "23456f\n" + "ABCDEF", toMultiLineText(term));
+
+ fill(term, s);
+ term.setChars(1, 1, chars, 1, 4, null);
+ assertEqualsTerm("ZYXWVU\n" + "a2345f\n" + "ABCDEF", toMultiLineText(term));
+
+ fill(term, s);
+ term.setChars(1, 2, chars, 3, 4, null);
+ assertEqualsTerm("ZYXWVU\n" + "ab4567\n" + "ABCDEF", toMultiLineText(term));
+
+ fill(term, s);
+ try {
+ term.setChars(1, 0, chars, 7, 10, null);
+ fail();
+ } catch (RuntimeException e) {
+ }
+ fill(term, s);
+ try {
+ term.setChars(1, -1, chars, 0, 2, null);
+ fail();
+ } catch (RuntimeException e) {
+ }
+ try {
+ term.setChars(-1, 1, chars, 0, 2, null);
+ fail();
+ } catch (RuntimeException e) {
+ }
+ try {
+ term.setChars(1, 10, chars, 0, 2, null);
+ fail();
+ } catch (RuntimeException e) {
+ }
+ try {
+ term.setChars(10, 1, chars, 0, 2, null);
+ fail();
+ } catch (RuntimeException e) {
+ }
+ // assertEquals(s, toSimpleText(term));
+ }
+
+ public void testSetCopyInto() {
+ ITerminalTextData term = makeITerminalTextData();
+ term.setDimensions(3, 5);
+ String s = "12345\n" + "abcde\n" + "ABCDE";
+ fill(term, 0, 0, s);
+ ITerminalTextData termCopy = makeITerminalTextData();
+ termCopy.copy(term);
+ assertEqualsTerm(s, toMultiLineText(termCopy));
+ assertEqualsTerm(s, toMultiLineText(term));
+
+ termCopy.setChar(1, 1, 'X', null);
+ assertEqualsTerm(s, toMultiLineText(term));
+ term.setDimensions(2, 4);
+ assertEquals(5, termCopy.getWidth());
+ assertEquals(3, termCopy.getHeight());
+
+ assertEqualsTerm("12345\n" + "aXcde\n" + "ABCDE", toMultiLineText(termCopy));
+
+ assertEquals(4, term.getWidth());
+ assertEquals(2, term.getHeight());
+ }
+
+ public void testSetCopyLines() {
+ ITerminalTextData term = makeITerminalTextData();
+ String s = "012345";
+ fillSimple(term, s);
+ ITerminalTextData termCopy = makeITerminalTextData();
+ String sCopy = "abcde";
+ fillSimple(termCopy, sCopy);
+ termCopy.copyRange(term, 0, 0, 0);
+ assertEqualsSimple(s, toSimple(term));
+ assertEqualsSimple(sCopy, toSimple(termCopy));
+
+ fillSimple(termCopy, sCopy);
+ termCopy.copyRange(term, 0, 0, 5);
+ assertEqualsSimple(s, toSimple(term));
+ assertEqualsSimple("01234", toSimple(termCopy));
+
+ fillSimple(termCopy, sCopy);
+ termCopy.copyRange(term, 0, 0, 2);
+ assertEqualsSimple(s, toSimple(term));
+ assertEqualsSimple("01cde", toSimple(termCopy));
+
+ fillSimple(termCopy, sCopy);
+ termCopy.copyRange(term, 0, 1, 2);
+ assertEqualsSimple(s, toSimple(term));
+ assertEqualsSimple("a01de", toSimple(termCopy));
+
+ fillSimple(termCopy, sCopy);
+ termCopy.copyRange(term, 1, 1, 2);
+ assertEqualsSimple(s, toSimple(term));
+ assertEqualsSimple("a12de", toSimple(termCopy));
+
+ fillSimple(termCopy, sCopy);
+ termCopy.copyRange(term, 1, 1, 4);
+ assertEqualsSimple(s, toSimple(term));
+ assertEqualsSimple("a1234", toSimple(termCopy));
+
+ fillSimple(termCopy, sCopy);
+ termCopy.copyRange(term, 2, 1, 4);
+ assertEqualsSimple(s, toSimple(term));
+ assertEqualsSimple("a2345", toSimple(termCopy));
+
+ try {
+ fillSimple(termCopy, sCopy);
+ termCopy.copyRange(term, 1, 1, 5);
+ fail();
+ } catch (RuntimeException e) {
+ }
+ try {
+ fillSimple(termCopy, sCopy);
+ termCopy.copyRange(term, 0, 0, 6);
+ fail();
+ } catch (RuntimeException e) {
+ }
+ try {
+ fillSimple(termCopy, sCopy);
+ termCopy.copyRange(term, 7, 0, 1);
+ fail();
+ } catch (RuntimeException e) {
+ }
+ try {
+ fillSimple(termCopy, sCopy);
+ termCopy.copyRange(term, 0, 7, 1);
+ fail();
+ } catch (RuntimeException e) {
+ }
+ }
+
+ public void testCopyLine() {
+ ITerminalTextData term = makeITerminalTextData();
+ String s = "111\n" + "222\n" + "333\n" + "444\n" + "555";
+ fill(term, s);
+ ITerminalTextData dest = makeITerminalTextData();
+ String sCopy = "aaa\n" + "bbb\n" + "ccc\n" + "ddd\n" + "eee";
+ fill(dest, sCopy);
+ copySelective(dest, term, 0, 0, new boolean[] { true, true, false, false, true });
+ assertEqualsTerm(s, toMultiLineText(term));
+ assertEqualsTerm("111\n" + "222\n" + "ccc\n" + "ddd\n" + "555", toMultiLineText(dest));
+
+ fill(dest, sCopy);
+ copySelective(dest, term, 0, 0, new boolean[] { true, true, true, true, true });
+ assertEqualsTerm(s, toMultiLineText(term));
+ assertEqualsTerm(s, toMultiLineText(dest));
+
+ fill(dest, sCopy);
+ copySelective(dest, term, 0, 0, new boolean[] { false, false, false, false, false });
+ assertEqualsTerm(s, toMultiLineText(term));
+ assertEqualsTerm(sCopy, toMultiLineText(dest));
+ }
+
+ protected void copySelective(ITerminalTextData dest, ITerminalTextData source, int sourceStartLine,
+ int destStartLine, boolean[] linesToCopy) {
+ for (int i = 0; i < linesToCopy.length; i++) {
+ if (linesToCopy[i]) {
+ dest.copyLine(source, i + sourceStartLine, i + destStartLine);
+ }
+ }
+ }
+
+ public void testCopyLineWithOffset() {
+ ITerminalTextData term = makeITerminalTextData();
+ String s = "111\n" + "222\n" + "333\n" + "444\n" + "555";
+ fill(term, s);
+ ITerminalTextData dest = makeITerminalTextData();
+ String sCopy = "aaa\n" + "bbb\n" + "ccc\n" + "ddd\n" + "eee";
+ fill(dest, sCopy);
+ copySelective(dest, term, 1, 0, new boolean[] { true, false, false, true });
+ assertEqualsTerm(s, toMultiLineText(term));
+ assertEqualsTerm("222\n" + "bbb\n" + "ccc\n" + "555\n" + "eee", toMultiLineText(dest));
+
+ fill(dest, sCopy);
+ copySelective(dest, term, 2, 0, new boolean[] { true, true });
+ assertEqualsTerm(s, toMultiLineText(term));
+ assertEqualsTerm("333\n" + "444\n" + "ccc\n" + "ddd\n" + "eee", toMultiLineText(dest));
+
+ fill(dest, sCopy);
+ copySelective(dest, term, 0, 0, new boolean[] { true, true, true, true, true });
+ assertEqualsTerm(s, toMultiLineText(term));
+ assertEqualsTerm(s, toMultiLineText(dest));
+
+ fill(dest, sCopy);
+ copySelective(dest, term, 0, 0, new boolean[] { false, false, false, false, false });
+ assertEqualsTerm(s, toMultiLineText(term));
+ assertEqualsTerm(sCopy, toMultiLineText(dest));
+ }
+
+ public void testScrollNoop() {
+ scrollTest(0, 0, 0, "012345", "012345");
+ scrollTest(0, 1, 0, "012345", "012345");
+ scrollTest(0, 6, 0, "012345", "012345");
+ }
+
+ public void testScrollAll() {
+ scrollTest(0, 6, 1, "012345", " 01234");
+ scrollTest(0, 6, -1, "012345", "12345 ");
+ scrollTest(0, 6, 2, "012345", " 0123");
+ scrollTest(0, 6, -2, "012345", "2345 ");
+ }
+
+ public void testScrollNegative() {
+ scrollTest(0, 2, -1, "012345", "1 2345");
+ scrollTest(0, 1, -1, "012345", " 12345");
+ scrollTest(0, 6, -1, "012345", "12345 ");
+ scrollTest(0, 6, -6, "012345", " ");
+ scrollTest(0, 6, -7, "012345", " ");
+ scrollTest(0, 6, -8, "012345", " ");
+ scrollTest(0, 6, -2, "012345", "2345 ");
+ scrollTest(1, 1, -1, "012345", "0 2345");
+ scrollTest(1, 1, -1, "012345", "0 2345");
+ scrollTest(1, 2, -1, "012345", "02 345");
+ scrollTest(5, 1, -1, "012345", "01234 ");
+ scrollTest(5, 1, -1, "012345", "01234 ");
+ }
+
+ public void testScrollNegative2() {
+ scrollTest(0, 2, -1, " 23 ", " 23 ");
+ scrollTest(0, 1, -1, " 23 ", " 23 ");
+ scrollTest(0, 6, -1, " 23 ", " 23 ");
+ scrollTest(0, 6, -6, " 23 ", " ");
+ scrollTest(0, 6, -7, " 23 ", " ");
+ scrollTest(0, 6, -8, " 23 ", " ");
+ scrollTest(0, 6, -2, " 23 ", "23 ");
+ scrollTest(1, 1, -1, " 23 ", " 23 ");
+ scrollTest(1, 2, -1, " 23 ", " 2 3 ");
+ scrollTest(5, 1, -1, " 23 ", " 23 ");
+ scrollTest(5, 1, -1, " 23 ", " 23 ");
+ }
+
+ public void testScrollNegative3() {
+ scrollTest(1, 5, -7, "012345", "0 ");
+ }
+
+ public void testScrollPositive2() {
+ scrollTest(2, 8, 20, "0123456789", "01 ");
+ }
+
+ public void testScrollPositive() {
+ scrollTest(0, 2, 1, "012345", " 02345");
+ scrollTest(0, 2, 2, "012345", " 2345");
+ scrollTest(2, 4, 2, "012345", "01 23");
+ scrollTest(2, 4, 2, "0123456", "01 236");
+ scrollTest(0, 7, 6, "0123456", " 0");
+ scrollTest(0, 7, 8, "0123456", " ");
+ scrollTest(0, 7, 9, "0123456", " ");
+ scrollTest(2, 4, 2, "0123456", "01 236");
+ scrollTest(2, 5, 3, "0123456789", "01 23789");
+ scrollTest(2, 7, 3, "0123456789", "01 23459");
+ scrollTest(2, 8, 3, "0123456789", "01 23456");
+ scrollTest(2, 8, 5, "0123456789", "01 234");
+ scrollTest(2, 8, 9, "0123456789", "01 ");
+ scrollTest(0, 10, 9, "0123456789", " 0");
+ scrollTest(0, 6, 6, "012345", " ");
+ }
+
+ public void testScrollFail() {
+ try {
+ scrollTest(5, 2, -1, "012345", "012345");
+ fail();
+ } catch (RuntimeException e) {
+ }
+ try {
+ scrollTest(0, 7, 1, "012345", " ");
+ fail();
+ } catch (RuntimeException e) {
+ }
+ }
+
+ /**
+ * Makes a simple shift test
+ * @param line scroll start
+ * @param n number of lines to be scrolled
+ * @param shift amount of lines to be shifted
+ * @param start the original data
+ * @param result the expected result
+ */
+ void scrollTest(int line, int n, int shift, String start, String result) {
+ ITerminalTextData term = makeITerminalTextData();
+ fillSimple(term, start);
+ term.scroll(line, n, shift);
+ assertEqualsSimple(result, toSimple(term));
+ }
+
+ public void testWrappedLines() {
+ ITerminalTextData term = makeITerminalTextData();
+ term.setDimensions(4, 4);
+ for (int i = 0; i < term.getHeight(); ++i)
+ assertFalse(term.isWrappedLine(i));
+ term.setWrappedLine(0);
+ term.setWrappedLine(3);
+ assertTrue(term.isWrappedLine(0));
+ assertFalse(term.isWrappedLine(1));
+ assertFalse(term.isWrappedLine(2));
+ assertTrue(term.isWrappedLine(3));
+ term.cleanLine(0);
+ assertFalse(term.isWrappedLine(0));
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/AllTestSuite.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/AllTestSuite.java
new file mode 100644
index 00000000000..123de062d5e
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/AllTestSuite.java
@@ -0,0 +1,47 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Martin Oberhuber (Wind River) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.model;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * Internal Terminal Model test cases.
+ * Runs in internal model package to allow access to default visible items.
+ */
+public class AllTestSuite extends TestCase {
+ public AllTestSuite() {
+ super(null);
+ }
+
+ public AllTestSuite(String name) {
+ super(name);
+ }
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(AllTestSuite.class.getName());
+ suite.addTestSuite(SnapshotChangesTest.class);
+ suite.addTestSuite(SynchronizedTerminalTextDataTest.class);
+ suite.addTestSuite(TerminalTextDataFastScrollTest.class);
+ suite.addTestSuite(TerminalTextDataFastScrollMaxHeightTest.class);
+ suite.addTestSuite(TerminalTextDataPerformanceTest.class);
+ suite.addTestSuite(TerminalTextDataSnapshotTest.class);
+ suite.addTestSuite(TerminalTextDataSnapshotWindowTest.class);
+ suite.addTestSuite(TerminalTextDataStoreTest.class);
+ suite.addTestSuite(TerminalTextDataTest.class);
+ suite.addTestSuite(TerminalTextDataWindowTest.class);
+ return suite;
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/SnapshotChangesTest.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/SnapshotChangesTest.java
new file mode 100644
index 00000000000..9a95ba2f8e8
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/SnapshotChangesTest.java
@@ -0,0 +1,692 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.model;
+
+import org.eclipse.tm.terminal.model.ITerminalTextData;
+
+import junit.framework.TestCase;
+
+public class SnapshotChangesTest extends TestCase {
+ /**
+ * @param change
+ * @param expected a string of 0 and 1 (1 means changed)
+ */
+ void assertChangedLines(ISnapshotChanges change, String expected) {
+ StringBuffer buffer = new StringBuffer();
+ for (int line = 0; line < expected.length(); line++) {
+ if (change.hasLineChanged(line))
+ buffer.append('1');
+ else
+ buffer.append('0');
+ }
+ assertEquals(expected, buffer.toString());
+ }
+
+ public void testSnapshotChanges() {
+ SnapshotChanges changes = new SnapshotChanges(1);
+ assertEquals(0, changes.getInterestWindowStartLine());
+ assertEquals(0, changes.getInterestWindowSize());
+ }
+
+ public void testSnapshotChangesWithWindow() {
+ SnapshotChanges changes = new SnapshotChanges(2, 5);
+ assertEquals(2, changes.getInterestWindowStartLine());
+ assertEquals(5, changes.getInterestWindowSize());
+ }
+
+ public void testIsInInterestWindowIntInt() {
+ SnapshotChanges changes = new SnapshotChanges(2, 5);
+ assertFalse(changes.isInInterestWindow(0, 1));
+ assertFalse(changes.isInInterestWindow(0, 2));
+ assertTrue(changes.isInInterestWindow(0, 3));
+ assertTrue(changes.isInInterestWindow(0, 4));
+ assertTrue(changes.isInInterestWindow(0, 5));
+ assertTrue(changes.isInInterestWindow(0, 6));
+ assertTrue(changes.isInInterestWindow(0, 10));
+ assertTrue(changes.isInInterestWindow(2, 5));
+ assertTrue(changes.isInInterestWindow(6, 0));
+ assertTrue(changes.isInInterestWindow(6, 1));
+ assertTrue(changes.isInInterestWindow(6, 10));
+ assertFalse(changes.isInInterestWindow(7, 0));
+ assertFalse(changes.isInInterestWindow(7, 1));
+ assertFalse(changes.isInInterestWindow(8, 10));
+ }
+
+ public void testIsInInterestWindowIntIntNoWindow() {
+ SnapshotChanges changes = new SnapshotChanges(3);
+ for (int i = 0; i < 5; i++) {
+ for (int j = 0; j < 5; j++) {
+ assertTrue(changes.isInInterestWindow(i, j));
+ }
+ }
+ }
+
+ public void testIsInInterestWindowInt() {
+ SnapshotChanges changes = new SnapshotChanges(3, 1);
+ assertFalse(changes.isInInterestWindow(0));
+ assertFalse(changes.isInInterestWindow(1));
+ assertFalse(changes.isInInterestWindow(2));
+ assertTrue(changes.isInInterestWindow(3));
+ assertFalse(changes.isInInterestWindow(4));
+ assertFalse(changes.isInInterestWindow(5));
+ }
+
+ public void testIsInInterestWindowIntNoWindow() {
+ SnapshotChanges changes = new SnapshotChanges(3);
+ for (int i = 0; i < 10; i++) {
+ assertTrue(changes.isInInterestWindow(i));
+ }
+ }
+
+ public void testFitLineToWindow() {
+ SnapshotChanges changes = new SnapshotChanges(2, 5);
+ assertEquals(2, changes.fitLineToWindow(0));
+ assertEquals(2, changes.fitLineToWindow(1));
+ assertEquals(2, changes.fitLineToWindow(2));
+ assertEquals(3, changes.fitLineToWindow(3));
+
+ assertTrue(changes.isInInterestWindow(4));
+ assertEquals(4, changes.fitLineToWindow(4));
+
+ assertTrue(changes.isInInterestWindow(5));
+ assertEquals(5, changes.fitLineToWindow(5));
+
+ assertTrue(changes.isInInterestWindow(6));
+ assertEquals(6, changes.fitLineToWindow(6));
+
+ assertFalse(changes.isInInterestWindow(7));
+ // value undefined!
+ assertEquals(7, changes.fitLineToWindow(7));
+
+ assertFalse(changes.isInInterestWindow(8));
+ // value undefined!
+ assertEquals(8, changes.fitLineToWindow(8));
+ }
+
+ public void testFitLineToWindowNoWindow() {
+ SnapshotChanges changes = new SnapshotChanges(5);
+ assertEquals(0, changes.fitLineToWindow(0));
+ assertEquals(1, changes.fitLineToWindow(1));
+ assertEquals(2, changes.fitLineToWindow(2));
+ assertEquals(3, changes.fitLineToWindow(3));
+ assertEquals(4, changes.fitLineToWindow(4));
+ assertEquals(5, changes.fitLineToWindow(5));
+ assertEquals(6, changes.fitLineToWindow(6));
+ assertEquals(7, changes.fitLineToWindow(7));
+ }
+
+ public void testFitSizeToWindow() {
+ SnapshotChanges changes = new SnapshotChanges(2, 3);
+ assertFalse(changes.isInInterestWindow(0, 1));
+ assertFalse(changes.isInInterestWindow(0, 2));
+ assertTrue(changes.isInInterestWindow(0, 3));
+ assertEquals(1, changes.fitSizeToWindow(0, 3));
+ assertEquals(2, changes.fitSizeToWindow(0, 4));
+ assertEquals(3, changes.fitSizeToWindow(0, 5));
+ assertEquals(3, changes.fitSizeToWindow(0, 6));
+ assertEquals(3, changes.fitSizeToWindow(0, 7));
+ assertEquals(3, changes.fitSizeToWindow(0, 8));
+ assertEquals(3, changes.fitSizeToWindow(0, 9));
+ assertEquals(3, changes.fitSizeToWindow(1, 9));
+ assertEquals(3, changes.fitSizeToWindow(2, 9));
+ assertEquals(3, changes.fitSizeToWindow(2, 3));
+ assertEquals(2, changes.fitSizeToWindow(2, 2));
+ assertEquals(1, changes.fitSizeToWindow(2, 1));
+ assertEquals(2, changes.fitSizeToWindow(3, 9));
+ assertEquals(2, changes.fitSizeToWindow(3, 2));
+ assertEquals(1, changes.fitSizeToWindow(3, 1));
+ assertEquals(2, changes.fitSizeToWindow(3, 2));
+ assertEquals(2, changes.fitSizeToWindow(3, 3));
+ assertEquals(1, changes.fitSizeToWindow(4, 1));
+ assertEquals(1, changes.fitSizeToWindow(4, 2));
+ assertFalse(changes.isInInterestWindow(5, 1));
+
+ }
+
+ public void testFitSizeToWindowNoWindow() {
+ SnapshotChanges changes = new SnapshotChanges(3);
+ assertEquals(1, changes.fitSizeToWindow(0, 1));
+ assertEquals(2, changes.fitSizeToWindow(0, 2));
+ assertEquals(3, changes.fitSizeToWindow(0, 3));
+ assertEquals(4, changes.fitSizeToWindow(0, 4));
+ assertEquals(5, changes.fitSizeToWindow(0, 5));
+
+ assertEquals(5, changes.fitSizeToWindow(1, 5));
+ assertEquals(3, changes.fitSizeToWindow(2, 3));
+ assertEquals(2, changes.fitSizeToWindow(1, 2));
+ assertEquals(10, changes.fitSizeToWindow(5, 10));
+ }
+
+ public void testMarkLineChanged() {
+ SnapshotChanges changes = new SnapshotChanges(2, 3);
+ assertFalse(changes.hasChanged());
+ changes.markLineChanged(0);
+ assertFalse(changes.hasChanged());
+ changes.markLineChanged(1);
+ assertFalse(changes.hasChanged());
+ changes.markLineChanged(2);
+ assertTrue(changes.hasChanged());
+
+ changes = new SnapshotChanges(2, 3);
+ assertFalse(changes.hasChanged());
+ changes.markLineChanged(3);
+ assertTrue(changes.hasChanged());
+
+ assertLineChange(false, 2, 3, 0);
+ assertLineChange(false, 2, 3, 1);
+ assertLineChange(true, 2, 3, 2);
+ assertLineChange(true, 2, 3, 3);
+ assertLineChange(true, 2, 3, 4);
+ assertLineChange(false, 2, 3, 5);
+ assertLineChange(false, 2, 3, 6);
+
+ assertLineChange(true, 2, 4, 5);
+ }
+
+ void assertLineChange(boolean expected, int windowStart, int windowSize, int changedLine) {
+ SnapshotChanges changes = new SnapshotChanges(windowStart, windowSize);
+ assertFalse(changes.hasChanged());
+ changes.markLineChanged(changedLine);
+ if (expected) {
+ assertEquals(changedLine, changes.getFirstChangedLine());
+ assertEquals(changedLine, changes.getLastChangedLine());
+ } else {
+ assertEquals(Integer.MAX_VALUE, changes.getFirstChangedLine());
+ assertEquals(-1, changes.getLastChangedLine());
+
+ }
+ assertEquals(expected, changes.hasChanged());
+ for (int i = 0; i < windowStart + windowSize + 5; i++) {
+ boolean e = i == changedLine && i >= windowStart && i < windowStart + windowSize;
+ assertEquals(e, changes.hasLineChanged(i));
+ }
+
+ }
+
+ public void testMarkLinesChanged() {
+ SnapshotChanges changes = new SnapshotChanges(2, 3);
+ assertFalse(changes.hasChanged());
+ assertEquals(Integer.MAX_VALUE, changes.getFirstChangedLine());
+ assertEquals(-1, changes.getLastChangedLine());
+ changes.markLinesChanged(0, 1);
+ assertChangedLines(changes, "00000000000");
+ assertFalse(changes.hasChanged());
+ assertEquals(Integer.MAX_VALUE, changes.getFirstChangedLine());
+ assertEquals(-1, changes.getLastChangedLine());
+ changes.markLinesChanged(0, 2);
+ assertChangedLines(changes, "00000000000");
+ assertFalse(changes.hasChanged());
+ assertEquals(Integer.MAX_VALUE, changes.getFirstChangedLine());
+ assertEquals(-1, changes.getLastChangedLine());
+ changes.markLinesChanged(0, 3);
+ assertEquals(2, changes.getFirstChangedLine());
+ assertEquals(2, changes.getLastChangedLine());
+ assertTrue(changes.hasChanged());
+ assertChangedLines(changes, "00100000000");
+
+ changes = new SnapshotChanges(2, 3);
+ changes.markLinesChanged(1, 3);
+ assertTrue(changes.hasChanged());
+ assertEquals(2, changes.getFirstChangedLine());
+ assertEquals(3, changes.getLastChangedLine());
+ assertChangedLines(changes, "00110000000");
+
+ changes = new SnapshotChanges(2, 3);
+ changes.markLinesChanged(1, 4);
+ assertEquals(2, changes.getFirstChangedLine());
+ assertEquals(4, changes.getLastChangedLine());
+ assertTrue(changes.hasChanged());
+ assertChangedLines(changes, "00111000000");
+
+ changes = new SnapshotChanges(2, 3);
+ changes.markLinesChanged(1, 4);
+ assertEquals(2, changes.getFirstChangedLine());
+ assertEquals(4, changes.getLastChangedLine());
+ assertTrue(changes.hasChanged());
+ assertChangedLines(changes, "00111000000");
+
+ changes = new SnapshotChanges(2, 3);
+ changes.markLinesChanged(2, 4);
+ assertEquals(2, changes.getFirstChangedLine());
+ assertEquals(4, changes.getLastChangedLine());
+ assertTrue(changes.hasChanged());
+ assertChangedLines(changes, "00111000000");
+
+ changes = new SnapshotChanges(2, 3);
+ changes.markLinesChanged(3, 4);
+ assertEquals(3, changes.getFirstChangedLine());
+ assertEquals(4, changes.getLastChangedLine());
+ assertTrue(changes.hasChanged());
+ assertChangedLines(changes, "00011000000");
+
+ changes = new SnapshotChanges(2, 3);
+ changes.markLinesChanged(3, 1);
+ assertEquals(3, changes.getFirstChangedLine());
+ assertEquals(3, changes.getLastChangedLine());
+ assertTrue(changes.hasChanged());
+ assertChangedLines(changes, "00010000000");
+
+ changes = new SnapshotChanges(2, 3);
+ changes.markLinesChanged(4, 1);
+ assertEquals(4, changes.getFirstChangedLine());
+ assertEquals(4, changes.getLastChangedLine());
+ assertTrue(changes.hasChanged());
+ assertChangedLines(changes, "00001000000");
+
+ changes = new SnapshotChanges(2, 3);
+ changes.markLinesChanged(5, 1);
+ assertEquals(Integer.MAX_VALUE, changes.getFirstChangedLine());
+ assertEquals(-1, changes.getLastChangedLine());
+ assertFalse(changes.hasChanged());
+ assertChangedLines(changes, "00000000000");
+ }
+
+ public void testMarkLinesChangedNoWindow() {
+ SnapshotChanges changes = new SnapshotChanges(10);
+ assertFalse(changes.hasChanged());
+ assertEquals(Integer.MAX_VALUE, changes.getFirstChangedLine());
+ assertEquals(-1, changes.getLastChangedLine());
+
+ changes.markLinesChanged(0, 1);
+ assertTrue(changes.hasChanged());
+ assertEquals(0, changes.getFirstChangedLine());
+ assertEquals(0, changes.getLastChangedLine());
+ assertChangedLines(changes, "1000000000");
+
+ changes = new SnapshotChanges(10);
+ changes.markLinesChanged(0, 5);
+ assertTrue(changes.hasChanged());
+ assertEquals(0, changes.getFirstChangedLine());
+ assertEquals(4, changes.getLastChangedLine());
+ assertChangedLines(changes, "1111100000");
+
+ changes = new SnapshotChanges(3);
+ changes.markLinesChanged(1, 6);
+ assertTrue(changes.hasChanged());
+ assertEquals(1, changes.getFirstChangedLine());
+ assertEquals(6, changes.getLastChangedLine());
+ assertChangedLines(changes, "011");
+
+ changes = new SnapshotChanges(10);
+ changes.markLinesChanged(5, 6);
+ assertTrue(changes.hasChanged());
+ assertEquals(5, changes.getFirstChangedLine());
+ assertEquals(10, changes.getLastChangedLine());
+ assertChangedLines(changes, "0000011111");
+
+ }
+
+ public void testHasChanged() {
+ SnapshotChanges changes = new SnapshotChanges(0);
+ assertFalse(changes.hasChanged());
+ changes = new SnapshotChanges(1);
+ assertFalse(changes.hasChanged());
+ changes = new SnapshotChanges(1, 9);
+ assertFalse(changes.hasChanged());
+ }
+
+ public void testSetAllChanged() {
+ SnapshotChanges changes;
+ changes = new SnapshotChanges(2, 3);
+ changes.setAllChanged(10);
+ assertEquals(2, changes.getFirstChangedLine());
+ assertEquals(4, changes.getLastChangedLine());
+ assertTrue(changes.hasChanged());
+ assertChangedLines(changes, "00111000000");
+
+ changes = new SnapshotChanges(2, 3);
+ changes.setAllChanged(3);
+ assertEquals(2, changes.getFirstChangedLine());
+ assertEquals(2, changes.getLastChangedLine());
+ assertTrue(changes.hasChanged());
+ assertChangedLines(changes, "00111000000");
+
+ changes = new SnapshotChanges(2, 3);
+ changes.setAllChanged(4);
+ assertEquals(2, changes.getFirstChangedLine());
+ assertEquals(3, changes.getLastChangedLine());
+ assertTrue(changes.hasChanged());
+ assertChangedLines(changes, "00111000000");
+
+ changes = new SnapshotChanges(2, 3);
+ changes.setAllChanged(5);
+ assertEquals(2, changes.getFirstChangedLine());
+ assertEquals(4, changes.getLastChangedLine());
+ assertTrue(changes.hasChanged());
+ assertChangedLines(changes, "00111000000");
+
+ changes = new SnapshotChanges(2, 3);
+ changes.setAllChanged(6);
+ assertEquals(2, changes.getFirstChangedLine());
+ assertEquals(4, changes.getLastChangedLine());
+ assertTrue(changes.hasChanged());
+ assertChangedLines(changes, "00111000000");
+ }
+
+ public void testSetAllChangedNoWindow() {
+ SnapshotChanges changes;
+ changes = new SnapshotChanges(5);
+ changes.setAllChanged(10);
+ assertEquals(0, changes.getFirstChangedLine());
+ assertEquals(9, changes.getLastChangedLine());
+ assertTrue(changes.hasChanged());
+ assertChangedLines(changes, "1111111111");
+
+ changes = new SnapshotChanges(5);
+ changes.setAllChanged(3);
+ assertEquals(0, changes.getFirstChangedLine());
+ assertEquals(2, changes.getLastChangedLine());
+ assertTrue(changes.hasChanged());
+ assertChangedLines(changes, "1111111111");
+
+ }
+
+ public void testConvertScrollingIntoChanges() {
+ SnapshotChanges changes;
+ changes = new SnapshotChanges(2, 3);
+ changes.scroll(0, 4, -1);
+ assertTrue(changes.hasChanged());
+ assertChangedLines(changes, "000100");
+ changes.convertScrollingIntoChanges();
+ assertEquals(2, changes.getFirstChangedLine());
+ assertEquals(3, changes.getLastChangedLine());
+ assertEquals(0, changes.getScrollWindowStartLine());
+ assertEquals(0, changes.getScrollWindowSize());
+ assertEquals(0, changes.getScrollWindowShift());
+ assertChangedLines(changes, "001100");
+ }
+
+ public void testConvertScrollingIntoChangesNoWindow() {
+ SnapshotChanges changes;
+ changes = new SnapshotChanges(7);
+ changes.scroll(0, 4, -1);
+ assertTrue(changes.hasChanged());
+ assertChangedLines(changes, "000100");
+ changes.convertScrollingIntoChanges();
+ assertEquals(0, changes.getFirstChangedLine());
+ assertEquals(3, changes.getLastChangedLine());
+ assertEquals(0, changes.getScrollWindowStartLine());
+ assertEquals(0, changes.getScrollWindowSize());
+ assertEquals(0, changes.getScrollWindowShift());
+ assertChangedLines(changes, "111100");
+ }
+
+ public void testScrollNoWindow() {
+ SnapshotChanges changes;
+ changes = new SnapshotChanges(7);
+ changes.scroll(0, 3, -2);
+ assertEquals(1, changes.getFirstChangedLine());
+ assertEquals(2, changes.getLastChangedLine());
+ assertEquals(0, changes.getScrollWindowStartLine());
+ assertEquals(3, changes.getScrollWindowSize());
+ assertEquals(-2, changes.getScrollWindowShift());
+ assertTrue(changes.hasChanged());
+ assertChangedLines(changes, "0110000");
+
+ changes = new SnapshotChanges(7);
+ changes.scroll(0, 3, -1);
+ changes.scroll(0, 3, -1);
+ assertEquals(1, changes.getFirstChangedLine());
+ assertEquals(2, changes.getLastChangedLine());
+ assertEquals(0, changes.getScrollWindowStartLine());
+ assertEquals(3, changes.getScrollWindowSize());
+ assertEquals(-2, changes.getScrollWindowShift());
+ assertTrue(changes.hasChanged());
+ assertChangedLines(changes, "0110000");
+
+ changes = new SnapshotChanges(7);
+ changes.scroll(0, 7, -1);
+ changes.scroll(0, 7, -1);
+ assertEquals(5, changes.getFirstChangedLine());
+ assertEquals(6, changes.getLastChangedLine());
+ assertEquals(0, changes.getScrollWindowStartLine());
+ assertEquals(7, changes.getScrollWindowSize());
+ assertEquals(-2, changes.getScrollWindowShift());
+ assertTrue(changes.hasChanged());
+ assertChangedLines(changes, "0000011");
+
+ // positive scrolls cannot be optimized at the moment
+ changes = new SnapshotChanges(7);
+ changes.scroll(0, 7, 1);
+ changes.scroll(0, 7, 1);
+ assertEquals(0, changes.getFirstChangedLine());
+ assertEquals(6, changes.getLastChangedLine());
+ assertEquals(0, changes.getScrollWindowStartLine());
+ assertEquals(0, changes.getScrollWindowSize());
+ assertEquals(0, changes.getScrollWindowShift());
+ assertTrue(changes.hasChanged());
+ assertChangedLines(changes, "1111111");
+
+ }
+
+ public void testScroll() {
+ SnapshotChanges changes;
+ changes = new SnapshotChanges(2, 3);
+ changes.scroll(0, 7, -1);
+ assertEquals(4, changes.getFirstChangedLine());
+ assertEquals(4, changes.getLastChangedLine());
+ assertEquals(2, changes.getScrollWindowStartLine());
+ assertEquals(3, changes.getScrollWindowSize());
+ assertEquals(-1, changes.getScrollWindowShift());
+ assertTrue(changes.hasChanged());
+ assertChangedLines(changes, "0000100000");
+
+ changes = new SnapshotChanges(2, 3);
+ changes.scroll(0, 7, -2);
+ assertEquals(3, changes.getFirstChangedLine());
+ assertEquals(4, changes.getLastChangedLine());
+ assertEquals(2, changes.getScrollWindowStartLine());
+ assertEquals(3, changes.getScrollWindowSize());
+ assertEquals(-2, changes.getScrollWindowShift());
+ assertTrue(changes.hasChanged());
+ assertChangedLines(changes, "0001100000");
+ }
+
+ public void testScrollNergative() {
+ SnapshotChanges changes;
+ changes = new SnapshotChanges(2, 3);
+ changes.scroll(0, 7, -1);
+ changes.scroll(0, 7, -1);
+ assertEquals(3, changes.getFirstChangedLine());
+ assertEquals(4, changes.getLastChangedLine());
+ assertEquals(2, changes.getScrollWindowStartLine());
+ assertEquals(3, changes.getScrollWindowSize());
+ assertEquals(-2, changes.getScrollWindowShift());
+ assertTrue(changes.hasChanged());
+ assertChangedLines(changes, "0001100000");
+
+ }
+
+ public void testScrollPositive() {
+ SnapshotChanges changes;
+ changes = new SnapshotChanges(2, 3);
+ changes.scroll(0, 7, 1);
+ changes.scroll(0, 7, 1);
+ assertEquals(2, changes.getFirstChangedLine());
+ assertEquals(4, changes.getLastChangedLine());
+ assertEquals(0, changes.getScrollWindowStartLine());
+ assertEquals(0, changes.getScrollWindowSize());
+ assertEquals(0, changes.getScrollWindowShift());
+ assertTrue(changes.hasChanged());
+ assertChangedLines(changes, "0011100000");
+
+ changes = new SnapshotChanges(2, 3);
+ changes.scroll(0, 3, 1);
+ changes.scroll(0, 3, 1);
+ assertEquals(2, changes.getFirstChangedLine());
+ assertEquals(2, changes.getLastChangedLine());
+ assertEquals(0, changes.getScrollWindowStartLine());
+ assertEquals(0, changes.getScrollWindowSize());
+ assertEquals(0, changes.getScrollWindowShift());
+ assertTrue(changes.hasChanged());
+ assertChangedLines(changes, "0010000000");
+
+ changes = new SnapshotChanges(2, 3);
+ changes.scroll(0, 4, 1);
+ changes.scroll(0, 4, 1);
+ assertEquals(2, changes.getFirstChangedLine());
+ assertEquals(3, changes.getLastChangedLine());
+ assertEquals(0, changes.getScrollWindowStartLine());
+ assertEquals(0, changes.getScrollWindowSize());
+ assertEquals(0, changes.getScrollWindowShift());
+ assertTrue(changes.hasChanged());
+ assertChangedLines(changes, "0011000000");
+
+ changes = new SnapshotChanges(2, 3);
+ changes.scroll(0, 5, 1);
+ changes.scroll(0, 5, 1);
+ assertEquals(2, changes.getFirstChangedLine());
+ assertEquals(4, changes.getLastChangedLine());
+ assertEquals(0, changes.getScrollWindowStartLine());
+ assertEquals(0, changes.getScrollWindowSize());
+ assertEquals(0, changes.getScrollWindowShift());
+ assertTrue(changes.hasChanged());
+ assertChangedLines(changes, "0011100000");
+
+ changes = new SnapshotChanges(2, 3);
+ changes.scroll(3, 5, 1);
+ changes.scroll(3, 5, 1);
+ assertEquals(3, changes.getFirstChangedLine());
+ assertEquals(4, changes.getLastChangedLine());
+ assertEquals(0, changes.getScrollWindowStartLine());
+ assertEquals(0, changes.getScrollWindowSize());
+ assertEquals(0, changes.getScrollWindowShift());
+ assertTrue(changes.hasChanged());
+ assertChangedLines(changes, "0001100000");
+ }
+
+ public void testCopyChangedLines() {
+ SnapshotChanges changes;
+ changes = new SnapshotChanges(2, 3);
+ changes.markLineChanged(3);
+ ITerminalTextData source = new TerminalTextDataStore();
+ TerminalTextTestHelper.fillSimple(source, "01234567890");
+ ITerminalTextData dest = new TerminalTextDataStore();
+ TerminalTextTestHelper.fillSimple(dest, "abcdefghijk");
+
+ changes.copyChangedLines(dest, source);
+ assertEquals("abc3efghijk", TerminalTextTestHelper.toSimple(dest));
+
+ changes = new SnapshotChanges(2, 3);
+ changes.setAllChanged(7);
+ source = new TerminalTextDataStore();
+ TerminalTextTestHelper.fillSimple(source, "01234567890");
+ dest = new TerminalTextDataStore();
+ TerminalTextTestHelper.fillSimple(dest, "abcdefghijk");
+
+ changes.copyChangedLines(dest, source);
+ assertEquals("ab234fghijk", TerminalTextTestHelper.toSimple(dest));
+
+ changes = new SnapshotChanges(2, 3);
+ changes.scroll(0, 7, -1);
+ source = new TerminalTextDataStore();
+ TerminalTextTestHelper.fillSimple(source, "01234567890");
+ dest = new TerminalTextDataStore();
+ TerminalTextTestHelper.fillSimple(dest, "abcdefghijk");
+ // only one line has changed! The other lines are scrolled!
+ assertChangedLines(changes, "00001000");
+ changes.copyChangedLines(dest, source);
+ assertEquals("abcd4fghijk", TerminalTextTestHelper.toSimple(dest));
+ }
+
+ public void testCopyChangedLinesWithSmallSource() {
+ SnapshotChanges changes;
+ changes = new SnapshotChanges(2, 3);
+ changes.markLineChanged(3);
+ ITerminalTextData source = new TerminalTextDataStore();
+ source.setDimensions(2, 2);
+ TerminalTextDataWindow dest = new TerminalTextDataWindow();
+ dest.setWindow(2, 2);
+ changes.copyChangedLines(dest, source);
+ }
+
+ public void testCopyChangedLinesWithSmallSource1() {
+ SnapshotChanges changes;
+ changes = new SnapshotChanges(2, 3);
+ changes.markLineChanged(3);
+ ITerminalTextData source = new TerminalTextDataStore();
+ TerminalTextTestHelper.fillSimple(source, "01");
+ ITerminalTextData dest = new TerminalTextDataStore();
+ changes.copyChangedLines(dest, source);
+ }
+
+ public void testSetInterestWindowSize() {
+ SnapshotChanges changes;
+ changes = new SnapshotChanges(2, 3);
+ // move the window
+ changes.setInterestWindow(3, 3);
+ // only one line has changed! The other lines are scrolled!
+ assertEquals(3, changes.getScrollWindowStartLine());
+ assertEquals(3, changes.getScrollWindowSize());
+ assertEquals(-1, changes.getScrollWindowShift());
+
+ assertChangedLines(changes, "0000010");
+ changes.convertScrollingIntoChanges();
+ assertChangedLines(changes, "0001110");
+
+ changes = new SnapshotChanges(2, 3);
+ // move the window
+ changes.setInterestWindow(3, 4);
+ // only one line has changed! The other lines are scrolled!
+ assertEquals(3, changes.getScrollWindowStartLine());
+ assertEquals(3, changes.getScrollWindowSize());
+ assertEquals(-1, changes.getScrollWindowShift());
+
+ assertChangedLines(changes, "0000011");
+ changes.convertScrollingIntoChanges();
+ assertChangedLines(changes, "0001111");
+
+ changes = new SnapshotChanges(2, 3);
+ // move the window
+ changes.setInterestWindow(6, 3);
+ // cannot scroll
+ assertEquals(0, changes.getScrollWindowStartLine());
+ assertEquals(0, changes.getScrollWindowSize());
+ assertEquals(0, changes.getScrollWindowShift());
+ assertChangedLines(changes, "000000111000");
+
+ changes = new SnapshotChanges(2, 3);
+ // expand the window
+ changes.setInterestWindow(2, 5);
+ // cannot scroll
+ assertEquals(0, changes.getScrollWindowStartLine());
+ assertEquals(0, changes.getScrollWindowSize());
+ assertEquals(0, changes.getScrollWindowShift());
+
+ assertChangedLines(changes, "0000011000");
+ }
+
+ public void testSetInterestWindowSize2() {
+ SnapshotChanges changes;
+ changes = new SnapshotChanges(2, 3);
+ // move the window
+ changes.setInterestWindow(1, 3);
+ assertChangedLines(changes, "0111000");
+
+ changes = new SnapshotChanges(2, 3);
+ // move the window
+ changes.setInterestWindow(1, 4);
+ assertChangedLines(changes, "01111000");
+
+ changes = new SnapshotChanges(2, 3);
+ // expand the window
+ changes.setInterestWindow(6, 3);
+ assertChangedLines(changes, "000000111000");
+
+ changes = new SnapshotChanges(2, 3);
+ // expand the window
+ changes.setInterestWindow(1, 2);
+ assertChangedLines(changes, "0110000");
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/SynchronizedTerminalTextDataTest.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/SynchronizedTerminalTextDataTest.java
new file mode 100644
index 00000000000..cca7990c9fc
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/SynchronizedTerminalTextDataTest.java
@@ -0,0 +1,21 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.model;
+
+import org.eclipse.tm.terminal.model.ITerminalTextData;
+
+public class SynchronizedTerminalTextDataTest extends AbstractITerminalTextDataTest {
+ @Override
+ protected ITerminalTextData makeITerminalTextData() {
+ return new SynchronizedTerminalTextData(new TerminalTextData());
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataFastScrollMaxHeightTest.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataFastScrollMaxHeightTest.java
new file mode 100644
index 00000000000..c21c2d55c6d
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataFastScrollMaxHeightTest.java
@@ -0,0 +1,21 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.model;
+
+import org.eclipse.tm.terminal.model.ITerminalTextData;
+
+public class TerminalTextDataFastScrollMaxHeightTest extends AbstractITerminalTextDataTest {
+ @Override
+ protected ITerminalTextData makeITerminalTextData() {
+ return new TerminalTextDataFastScroll(1);
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataFastScrollTest.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataFastScrollTest.java
new file mode 100644
index 00000000000..5a0bb80a773
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataFastScrollTest.java
@@ -0,0 +1,21 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.model;
+
+import org.eclipse.tm.terminal.model.ITerminalTextData;
+
+public class TerminalTextDataFastScrollTest extends AbstractITerminalTextDataTest {
+ @Override
+ protected ITerminalTextData makeITerminalTextData() {
+ return new TerminalTextDataFastScroll(3);
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataPerformanceTest.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataPerformanceTest.java
new file mode 100644
index 00000000000..6bfbb44237c
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataPerformanceTest.java
@@ -0,0 +1,230 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.model;
+
+import org.eclipse.tm.terminal.model.ITerminalTextData;
+import org.eclipse.tm.terminal.model.ITerminalTextDataSnapshot;
+import org.eclipse.tm.terminal.model.TerminalStyle;
+
+import junit.framework.TestCase;
+
+public class TerminalTextDataPerformanceTest extends TestCase {
+ long TIME = 100;
+
+ private void initPerformance(ITerminalTextData term) {
+ term.setDimensions(300, 200);
+ }
+
+ public void testPerformance0() {
+ ITerminalTextData term = new TerminalTextData();
+ method0(term, "0 ");
+ }
+
+ public void testPerformance0a() {
+ ITerminalTextData term = new TerminalTextData();
+ ITerminalTextDataSnapshot snapshot = term.makeSnapshot();
+ method0(term, "0a");
+ snapshot.updateSnapshot(true);
+ }
+
+ public void testPerformance0b() {
+ ITerminalTextData term = new TerminalTextData();
+ ITerminalTextDataSnapshot snapshot = term.makeSnapshot();
+ N = 0;
+ snapshot.addListener(snapshot1 -> N++);
+ method0(term, "0b");
+ snapshot.updateSnapshot(true);
+ }
+
+ private void method0(ITerminalTextData term, String label) {
+ TerminalStyle style = TerminalStyle.getDefaultStyle();
+ initPerformance(term);
+ String s = "This is a test string";
+ long n = 0;
+ long t0 = System.currentTimeMillis();
+ for (int i = 0; i < 10000000; i++) {
+ char c = s.charAt(i % s.length());
+ for (int line = 0; line < term.getHeight(); line++) {
+ for (int column = 0; column < term.getWidth(); column++) {
+ term.setChar(line, column, c, style);
+ n++;
+ }
+ }
+ if (System.currentTimeMillis() - t0 > TIME) {
+ System.out
+ .println(label + " " + (n * 1000) / (System.currentTimeMillis() - t0) + " setChar()/sec " + N);
+ break;
+ }
+ }
+ }
+
+ public void testPerformance1() {
+ ITerminalTextData term = new TerminalTextData();
+ method1(term, "1 ");
+ }
+
+ public void testPerformance1a() {
+ ITerminalTextData term = new TerminalTextData();
+ ITerminalTextDataSnapshot snapshot = term.makeSnapshot();
+ method1(term, "1a");
+ snapshot.updateSnapshot(true);
+ }
+
+ public void testPerformance1b() {
+ ITerminalTextData term = new TerminalTextData();
+ ITerminalTextDataSnapshot snapshot = term.makeSnapshot();
+ N = 0;
+ snapshot.addListener(snapshot1 -> N++);
+ method1(term, "1b");
+ snapshot.updateSnapshot(true);
+ }
+
+ private void method1(ITerminalTextData term, String label) {
+ TerminalStyle style = TerminalStyle.getDefaultStyle();
+ initPerformance(term);
+ String s = "This is a test string";
+ long n = 0;
+ long t0 = System.currentTimeMillis();
+ char[] chars = new char[term.getWidth()];
+ for (int i = 0; i < 10000000; i++) {
+ for (int j = 0; j < chars.length; j++) {
+ chars[j] = s.charAt((i + j) % s.length());
+ }
+ for (int line = 0; line < term.getHeight(); line++) {
+ term.setChars(line, 0, chars, style);
+ n += chars.length;
+ }
+ if (System.currentTimeMillis() - t0 > TIME) {
+ System.out
+ .println(label + " " + (n * 1000) / (System.currentTimeMillis() - t0) + " setChars()/sec " + N);
+ break;
+ }
+ }
+ }
+
+ public void testPerformance2() {
+ TerminalTextData term = new TerminalTextData();
+ TerminalStyle style = TerminalStyle.getDefaultStyle();
+ initPerformance(term);
+ TerminalTextData copy = new TerminalTextData();
+ copy.copy(term);
+
+ String s = "This is a test string";
+ long n = 0;
+ long t0 = System.currentTimeMillis();
+ char[] chars = new char[term.getWidth()];
+ for (int i = 0; i < 10000000; i++) {
+ for (int j = 0; j < chars.length; j++) {
+ chars[j] = s.charAt((i + j) % s.length());
+ }
+ for (int line = 0; line < term.getHeight(); line++) {
+ term.setChars(line, 0, chars, 0, 1, style);
+ copy.copy(term);
+ n += 1;
+ if (System.currentTimeMillis() - t0 > TIME) {
+ System.out.println((n * 1000) / (System.currentTimeMillis() - t0) + " copy()/sec");
+ return;
+ }
+ }
+ }
+ }
+
+ public void testPerformance2a() {
+ TerminalTextData term = new TerminalTextData();
+ ITerminalTextDataSnapshot snapshot = term.makeSnapshot();
+ TerminalStyle style = TerminalStyle.getDefaultStyle();
+ initPerformance(term);
+ TerminalTextData copy = new TerminalTextData();
+ copy.copy(term);
+
+ String s = "This is a test string";
+ long n = 0;
+ long t0 = System.currentTimeMillis();
+ char[] chars = new char[term.getWidth()];
+ for (int i = 0; i < 10000000; i++) {
+ for (int j = 0; j < chars.length; j++) {
+ chars[j] = s.charAt((i + j) % s.length());
+ }
+ for (int line = 0; line < term.getHeight(); line++) {
+ term.setChars(line, 0, chars, 0, 1, style);
+ copy.copy(term);
+ n += 1;
+ if (System.currentTimeMillis() - t0 > TIME) {
+ System.out.println((n * 1000) / (System.currentTimeMillis() - t0) + " copy()/sec");
+ return;
+ }
+ }
+ }
+ snapshot.updateSnapshot(true);
+ }
+
+ int N = 0;
+
+ public void testPerformance2b() {
+ TerminalTextData term = new TerminalTextData();
+ ITerminalTextDataSnapshot snapshot = term.makeSnapshot();
+ N = 0;
+ snapshot.addListener(snapshot1 -> N++);
+ TerminalStyle style = TerminalStyle.getDefaultStyle();
+ initPerformance(term);
+ TerminalTextData copy = new TerminalTextData();
+ copy.copy(term);
+
+ String s = "This is a test string";
+ long n = 0;
+ long t0 = System.currentTimeMillis();
+ char[] chars = new char[term.getWidth()];
+ for (int i = 0; i < 10000000; i++) {
+ for (int j = 0; j < chars.length; j++) {
+ chars[j] = s.charAt((i + j) % s.length());
+ }
+ for (int line = 0; line < term.getHeight(); line++) {
+ term.setChars(line, 0, chars, 0, 1, style);
+ copy.copy(term);
+ n += 1;
+ if (System.currentTimeMillis() - t0 > TIME) {
+ System.out.println((n * 1000) / (System.currentTimeMillis() - t0) + " copy()/sec " + n);
+ return;
+ }
+ }
+ }
+ snapshot.updateSnapshot(true);
+ }
+
+ public void testPerformance3() {
+ TerminalTextData term = new TerminalTextData();
+ TerminalStyle style = TerminalStyle.getDefaultStyle();
+ initPerformance(term);
+ TerminalTextData copy = new TerminalTextData();
+ copy.copy(term);
+ String s = "This is a test string";
+ long n = 0;
+ long t0 = System.currentTimeMillis();
+ char[] chars = new char[term.getWidth()];
+ for (int i = 0; i < 10000000; i++) {
+ boolean[] linesToCopy = new boolean[term.getHeight()];
+ for (int j = 0; j < chars.length; j++) {
+ chars[j] = s.charAt((i + j) % s.length());
+ }
+ for (int line = 0; line < term.getHeight(); line++) {
+ term.setChars(line, 0, chars, 0, 1, style);
+ linesToCopy[line] = true;
+ copy.copyLine(term, 0, 0);
+ linesToCopy[line] = false;
+ n += 1;
+ if (System.currentTimeMillis() - t0 > TIME) {
+ System.out.println((n * 1000) / (System.currentTimeMillis() - t0) + " copy()/sec");
+ return;
+ }
+ }
+ }
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataSnapshotTest.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataSnapshotTest.java
new file mode 100644
index 00000000000..56b9b145b42
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataSnapshotTest.java
@@ -0,0 +1,1234 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.model;
+
+import org.eclipse.tm.terminal.model.ITerminalTextData;
+import org.eclipse.tm.terminal.model.ITerminalTextDataReadOnly;
+import org.eclipse.tm.terminal.model.ITerminalTextDataSnapshot;
+import org.eclipse.tm.terminal.model.TerminalStyle;
+
+import junit.framework.TestCase;
+
+public class TerminalTextDataSnapshotTest extends TestCase {
+ String toMultiLineText(ITerminalTextDataReadOnly term) {
+ return TerminalTextTestHelper.toMultiLineText(term);
+ }
+
+ protected ITerminalTextData makeITerminalTextData() {
+ return new TerminalTextData();
+ }
+
+ public void testTerminalTextDataSnapshot() {
+ ITerminalTextData term = makeITerminalTextData();
+ String s = "12345\n" + "abcde\n" + "ABCDE\n" + "vwxzy\n" + "VWXYZ";
+ TerminalTextTestHelper.fill(term, s);
+
+ ITerminalTextDataSnapshot snapshot = term.makeSnapshot();
+ snapshot.updateSnapshot(false);
+
+ assertEquals(toMultiLineText(term), toMultiLineText(snapshot));
+
+ // new snapshots are fully changed
+ assertEquals(0, snapshot.getFirstChangedLine());
+ assertEquals(term.getHeight() - 1, snapshot.getLastChangedLine());
+ for (int line = 0; line <= snapshot.getLastChangedLine(); line++) {
+ assertTrue(snapshot.hasLineChanged(line));
+ }
+ // nothing has scrolled
+ assertEquals(0, snapshot.getScrollWindowSize());
+ }
+
+ public void testDetach() {
+ ITerminalTextData term = makeITerminalTextData();
+ String s = "12345\n" + "abcde\n" + "ABCDE\n" + "vwxzy\n" + "VWXYZ";
+ TerminalTextTestHelper.fill(term, s);
+
+ ITerminalTextDataSnapshot snapshot = term.makeSnapshot();
+ snapshot.updateSnapshot(false);
+
+ assertEquals(toMultiLineText(term), toMultiLineText(snapshot));
+ snapshot.detach();
+ // after detach changes to the term has no effect
+ term.setChar(0, 0, '?', null);
+ assertEquals(s, toMultiLineText(snapshot));
+ term.setDimensions(2, 2);
+ assertEquals(s, toMultiLineText(snapshot));
+ }
+
+ public void testIsOutOfDate() {
+ ITerminalTextData term = makeITerminalTextData();
+ String s = "12345\n" + "abcde\n" + "ABCDE\n" + "vwxzy\n" + "VWXYZ";
+ TerminalTextTestHelper.fill(term, s);
+
+ ITerminalTextDataSnapshot snapshot = term.makeSnapshot();
+ assertTrue(snapshot.isOutOfDate());
+ snapshot.updateSnapshot(false);
+
+ assertFalse(snapshot.isOutOfDate());
+
+ // make a change and expect it to be changed
+ term.setChar(0, 0, '?', null);
+ assertTrue(snapshot.isOutOfDate());
+
+ snapshot.updateSnapshot(false);
+ assertFalse(snapshot.isOutOfDate());
+
+ // make a change and expect it to be changed
+ term.setChars(1, 1, new char[] { '?', '!', '.' }, null);
+ assertTrue(snapshot.isOutOfDate());
+
+ snapshot.updateSnapshot(false);
+ assertFalse(snapshot.isOutOfDate());
+
+ // scroll
+ term.scroll(1, 2, -1);
+ assertTrue(snapshot.isOutOfDate());
+
+ snapshot.updateSnapshot(false);
+ assertFalse(snapshot.isOutOfDate());
+
+ // scroll
+ term.scroll(1, 2, 1);
+ assertTrue(snapshot.isOutOfDate());
+
+ snapshot.updateSnapshot(false);
+ assertFalse(snapshot.isOutOfDate());
+
+ // scroll
+ term.scroll(1, 2, -1);
+ assertTrue(snapshot.isOutOfDate());
+
+ snapshot.updateSnapshot(true);
+ assertFalse(snapshot.isOutOfDate());
+
+ // scroll
+ term.scroll(1, 2, 1);
+ assertTrue(snapshot.isOutOfDate());
+
+ snapshot.updateSnapshot(true);
+ assertFalse(snapshot.isOutOfDate());
+
+ // setDimensions
+ term.setDimensions(2, 2);
+ assertTrue(snapshot.isOutOfDate());
+
+ snapshot.updateSnapshot(false);
+ assertFalse(snapshot.isOutOfDate());
+
+ // setDimensions
+ term.setDimensions(20, 20);
+ assertTrue(snapshot.isOutOfDate());
+
+ snapshot.updateSnapshot(false);
+ assertFalse(snapshot.isOutOfDate());
+
+ }
+
+ ITerminalTextDataSnapshot snapshot(String text, ITerminalTextData term) {
+ TerminalTextTestHelper.fill(term, text);
+ ITerminalTextDataSnapshot snapshot = term.makeSnapshot();
+ snapshot.updateSnapshot(false);
+
+ return snapshot;
+
+ }
+
+ public void testUpdateSnapshot() {
+ ITerminalTextData term = makeITerminalTextData();
+ String s = "12345\n" + "abcde\n" + "ABCDE\n" + "vwxzy\n" + "VWXYZ";
+ TerminalTextTestHelper.fill(term, s);
+ String termString = toMultiLineText(term);
+ ITerminalTextDataSnapshot snapshot = term.makeSnapshot();
+ snapshot.updateSnapshot(false);
+
+ assertEquals(termString, toMultiLineText(snapshot));
+
+ // make changes and assert that the snapshot has not changed
+ // then update the snapshot and expect it to be the
+ // same as the changed terminal
+
+ // make a change
+ term.setChar(0, 0, '?', null);
+ assertEquals(termString, toMultiLineText(snapshot));
+
+ snapshot.updateSnapshot(false);
+ termString = toMultiLineText(term);
+ assertEquals(termString, toMultiLineText(snapshot));
+
+ // make a change
+ term.setChars(1, 1, new char[] { '?', '!', '.' }, null);
+ assertEquals(termString, toMultiLineText(snapshot));
+
+ snapshot.updateSnapshot(false);
+ termString = toMultiLineText(term);
+ assertEquals(termString, toMultiLineText(snapshot));
+
+ // scroll
+ term.scroll(1, 2, -1);
+ assertEquals(termString, toMultiLineText(snapshot));
+
+ snapshot.updateSnapshot(false);
+ termString = toMultiLineText(term);
+ assertEquals(termString, toMultiLineText(snapshot));
+
+ // scroll
+ term.scroll(1, 2, 1);
+ assertEquals(termString, toMultiLineText(snapshot));
+
+ snapshot.updateSnapshot(false);
+ termString = toMultiLineText(term);
+ assertEquals(termString, toMultiLineText(snapshot));
+
+ // scroll
+ term.scroll(1, 2, -1);
+ assertEquals(termString, toMultiLineText(snapshot));
+
+ snapshot.updateSnapshot(true);
+ termString = toMultiLineText(term);
+ assertEquals(termString, toMultiLineText(snapshot));
+
+ // scroll
+ term.scroll(1, 2, 1);
+ assertEquals(termString, toMultiLineText(snapshot));
+
+ snapshot.updateSnapshot(true);
+ termString = toMultiLineText(term);
+ assertEquals(termString, toMultiLineText(snapshot));
+
+ // set dimensions
+ term.setDimensions(2, 2);
+ assertEquals(termString, toMultiLineText(snapshot));
+
+ snapshot.updateSnapshot(false);
+ termString = toMultiLineText(term);
+ assertEquals(termString, toMultiLineText(snapshot));
+
+ // set dimensions
+ term.setDimensions(20, 20);
+ assertEquals(termString, toMultiLineText(snapshot));
+
+ snapshot.updateSnapshot(false);
+ termString = toMultiLineText(term);
+ assertEquals(termString, toMultiLineText(snapshot));
+ }
+
+ public void testMaxSize() {
+ String s = "111\n" + "222\n" + "333\n" + "444\n" + "555";
+ ITerminalTextData term = makeITerminalTextData();
+ term.setMaxHeight(8);
+ TerminalTextTestHelper.fill(term, s);
+ ITerminalTextDataSnapshot snapshot = term.makeSnapshot();
+ snapshot.updateSnapshot(false);
+
+ term.addLine();
+ assertTrue(snapshot.isOutOfDate());
+ snapshot.updateSnapshot(false);
+ assertEquals(toMultiLineText(term), toMultiLineText(snapshot));
+
+ term.addLine();
+ assertTrue(snapshot.isOutOfDate());
+ snapshot.updateSnapshot(false);
+ assertEquals(toMultiLineText(term), toMultiLineText(snapshot));
+
+ term.addLine();
+ assertTrue(snapshot.isOutOfDate());
+ snapshot.updateSnapshot(false);
+ assertEquals(toMultiLineText(term), toMultiLineText(snapshot));
+
+ term.addLine();
+ assertTrue(snapshot.isOutOfDate());
+ snapshot.updateSnapshot(false);
+ assertEquals(toMultiLineText(term), toMultiLineText(snapshot));
+
+ term.addLine();
+ assertTrue(snapshot.isOutOfDate());
+ snapshot.updateSnapshot(false);
+ assertEquals(toMultiLineText(term), toMultiLineText(snapshot));
+
+ }
+
+ public void testGetChar() {
+ ITerminalTextData term = makeITerminalTextData();
+ String s = "12345\n" + "abcde\n" + "ABCDE\n" + "vwxzy\n" + "VWXYZ";
+ TerminalTextTestHelper.fill(term, s);
+ ITerminalTextData termUnchanged = makeITerminalTextData();
+ TerminalTextTestHelper.fill(termUnchanged, s);
+
+ ITerminalTextDataSnapshot snapshot = term.makeSnapshot();
+ snapshot.updateSnapshot(false);
+
+ for (int line = 0; line < snapshot.getHeight(); line++) {
+ for (int column = 0; column < snapshot.getWidth(); column++) {
+ assertEquals(term.getChar(line, column), snapshot.getChar(line, column));
+ }
+ }
+ // make a change
+ term.setChar(0, 0, '?', null);
+ // check against unchanged data
+ for (int line = 0; line < snapshot.getHeight(); line++) {
+ for (int column = 0; column < snapshot.getWidth(); column++) {
+ assertEquals(termUnchanged.getChar(line, column), snapshot.getChar(line, column));
+ }
+ }
+ // update and compare against the terminal
+ snapshot.updateSnapshot(true);
+ for (int line = 0; line < snapshot.getHeight(); line++) {
+ for (int column = 0; column < snapshot.getWidth(); column++) {
+ assertEquals(term.getChar(line, column), snapshot.getChar(line, column));
+ }
+ }
+
+ }
+
+ public void testGetHeight() {
+ ITerminalTextData term = makeITerminalTextData();
+ String s = "12345\n" + "abcde\n" + "ABCDE\n" + "vwxzy\n" + "VWXYZ";
+ TerminalTextTestHelper.fill(term, s);
+
+ ITerminalTextDataSnapshot snapshot = term.makeSnapshot();
+ snapshot.updateSnapshot(false);
+
+ int expectedHeight = term.getHeight();
+ assertEquals(expectedHeight, snapshot.getHeight());
+ term.setDimensions(term.getHeight() - 1, term.getWidth());
+ assertEquals(expectedHeight, snapshot.getHeight());
+
+ //
+ snapshot.updateSnapshot(false);
+ expectedHeight = term.getHeight();
+ assertEquals(expectedHeight, snapshot.getHeight());
+ term.setDimensions(term.getHeight() - 1, term.getWidth());
+ assertEquals(expectedHeight, snapshot.getHeight());
+ }
+
+ //
+ // public void testGetLineSegments() {
+ // fail("Not yet implemented");
+ // }
+ //
+ public void testGetStyle() {
+ ITerminalTextData term = makeITerminalTextData();
+ TerminalStyle style = TerminalStyle.getDefaultStyle();
+ term.setDimensions(6, 3);
+ for (int line = 0; line < term.getHeight(); line++) {
+ for (int column = 0; column < term.getWidth(); column++) {
+ char c = (char) ('a' + column + line);
+ term.setChar(line, column, c, style.setForeground(c));
+ }
+ }
+ ITerminalTextDataSnapshot snapshot = term.makeSnapshot();
+ snapshot.updateSnapshot(false);
+
+ for (int line = 0; line < term.getHeight(); line++) {
+ for (int column = 0; column < term.getWidth(); column++) {
+ char c = (char) ('a' + column + line);
+ assertSame(style.setForeground(c), snapshot.getStyle(line, column));
+ }
+ }
+
+ }
+
+ public void testGetWidth() {
+ ITerminalTextData term = makeITerminalTextData();
+ String s = "12345\n" + "abcde\n" + "ABCDE\n" + "vwxzy\n" + "VWXYZ";
+ TerminalTextTestHelper.fill(term, s);
+
+ ITerminalTextDataSnapshot snapshot = term.makeSnapshot();
+ snapshot.updateSnapshot(false);
+
+ int expectedWidth = term.getWidth();
+ assertEquals(expectedWidth, snapshot.getWidth());
+ term.setDimensions(term.getHeight(), term.getWidth() - 1);
+ assertEquals(expectedWidth, snapshot.getWidth());
+
+ //
+ snapshot.updateSnapshot(false);
+ expectedWidth = term.getWidth();
+ assertEquals(expectedWidth, snapshot.getWidth());
+ term.setDimensions(term.getHeight(), term.getWidth() - 1);
+ assertEquals(expectedWidth, snapshot.getWidth());
+ }
+
+ public void testGetFirstChangedLine() {
+ ITerminalTextData term = makeITerminalTextData();
+ String s = "12345\n" + "abcde\n" + "ABCDE\n" + "vwxzy\n" + "VWXYZ";
+ ITerminalTextDataSnapshot snapshot = snapshot(s, term);
+
+ assertEquals(0, snapshot.getFirstChangedLine());
+
+ // if nothing has changed the first changed line i height
+ snapshot.updateSnapshot(false);
+ assertEquals(Integer.MAX_VALUE, snapshot.getFirstChangedLine());
+
+ snapshot = snapshot(s, term);
+ term.setChar(0, 0, 'x', null);
+ snapshot.updateSnapshot(false);
+ assertEquals(0, snapshot.getFirstChangedLine());
+
+ snapshot = snapshot(s, term);
+ term.setChar(3, 0, 'x', null);
+ term.setChar(4, 0, 'x', null);
+ snapshot.updateSnapshot(false);
+ assertEquals(3, snapshot.getFirstChangedLine());
+
+ snapshot = snapshot(s, term);
+ term.scroll(0, 1, -1);
+ snapshot.updateSnapshot(false);
+ assertEquals(0, snapshot.getFirstChangedLine());
+
+ snapshot = snapshot(s, term);
+ term.scroll(2, 2, -1);
+ snapshot.updateSnapshot(false);
+ assertEquals(2, snapshot.getFirstChangedLine());
+
+ // when scrolling the end of the region 'has changed'
+ snapshot = snapshot(s, term);
+ term.scroll(2, 2, -1);
+ snapshot.updateSnapshot(true);
+ assertEquals(3, snapshot.getFirstChangedLine());
+
+ // when scrolling the end of the region 'has changed'
+ snapshot = snapshot(s, term);
+ term.scroll(2, 2, -1);
+ term.setChar(1, 0, 'x', null);
+ snapshot.updateSnapshot(true);
+ assertEquals(1, snapshot.getFirstChangedLine());
+
+ }
+
+ public void testGetLastChangedLine() {
+ ITerminalTextData term = makeITerminalTextData();
+ String s = "12345\n" + "abcde\n" + "ABCDE\n" + "vwxzy\n" + "VWXYZ";
+ ITerminalTextDataSnapshot snapshot = snapshot(s, term);
+
+ assertEquals(4, snapshot.getLastChangedLine());
+
+ // if nothing has changed the first changed line i height
+ snapshot.updateSnapshot(false);
+ assertEquals(-1, snapshot.getLastChangedLine());
+
+ snapshot = snapshot(s, term);
+ term.setChar(0, 0, 'x', null);
+ snapshot.updateSnapshot(false);
+ assertEquals(0, snapshot.getLastChangedLine());
+
+ snapshot = snapshot(s, term);
+ term.cleanLine(1);
+ snapshot.updateSnapshot(false);
+ assertEquals(1, snapshot.getLastChangedLine());
+
+ snapshot = snapshot(s, term);
+ term.setChar(3, 0, 'x', null);
+ term.setChar(4, 0, 'x', null);
+ snapshot.updateSnapshot(false);
+ assertEquals(4, snapshot.getLastChangedLine());
+
+ snapshot = snapshot(s, term);
+ term.scroll(0, 1, -1);
+ snapshot.updateSnapshot(false);
+ assertEquals(0, snapshot.getLastChangedLine());
+
+ snapshot = snapshot(s, term);
+ term.scroll(2, 2, -1);
+ snapshot.updateSnapshot(false);
+ assertEquals(3, snapshot.getLastChangedLine());
+
+ // when scrolling the end of the region 'has changed'
+ snapshot = snapshot(s, term);
+ term.scroll(2, 2, -1);
+ snapshot.updateSnapshot(true);
+ assertEquals(3, snapshot.getLastChangedLine());
+
+ // when scrolling the end of the region 'has changed'
+ snapshot = snapshot(s, term);
+ term.scroll(2, 2, -1);
+ term.setChar(1, 0, 'x', null);
+ snapshot.updateSnapshot(true);
+ assertEquals(3, snapshot.getLastChangedLine());
+
+ }
+
+ /**
+ * @param snapshot
+ * @param expected a string of 0 and 1 (1 means changed)
+ */
+ void assertChangedLines(ITerminalTextDataSnapshot snapshot, String expected) {
+ assertEquals(expected.length(), snapshot.getHeight());
+ StringBuffer buffer = new StringBuffer();
+ for (int line = 0; line < expected.length(); line++) {
+ if (snapshot.hasLineChanged(line))
+ buffer.append('1');
+ else
+ buffer.append('0');
+ }
+ assertEquals(expected, buffer.toString());
+ }
+
+ public void testHasLineChangedScroll() {
+ ITerminalTextData term = makeITerminalTextData();
+ String s = "00\n" + "11\n" + "22\n" + "33\n" + "44\n" + "55\n" + "66\n" + "77\n" + "88\n" + "99";
+ ITerminalTextDataSnapshot snapshot = snapshot(s, term);
+
+ term.scroll(2, 3, -1);
+ snapshot.updateSnapshot(true);
+ assertChangedLines(snapshot, "0000100000");
+
+ snapshot = snapshot(s, term);
+ term.scroll(2, 3, -2);
+ snapshot.updateSnapshot(true);
+ assertChangedLines(snapshot, "0001100000");
+
+ snapshot = snapshot(s, term);
+ term.scroll(2, 4, -1);
+ term.scroll(2, 4, -1);
+ snapshot.updateSnapshot(true);
+ assertChangedLines(snapshot, "0000110000");
+
+ term.scroll(2, 3, 1);
+ snapshot.updateSnapshot(true);
+ assertChangedLines(snapshot, "0011100000");
+
+ snapshot = snapshot(s, term);
+ term.scroll(2, 3, 2);
+ snapshot.updateSnapshot(true);
+ assertChangedLines(snapshot, "0011100000");
+
+ snapshot = snapshot(s, term);
+ term.scroll(2, 4, 1);
+ term.scroll(2, 4, 1);
+ snapshot.updateSnapshot(true);
+ assertChangedLines(snapshot, "0011110000");
+
+ snapshot = snapshot(s, term);
+ term.scroll(2, 3, -1);
+ snapshot.updateSnapshot(false);
+ assertChangedLines(snapshot, "0011100000");
+
+ snapshot = snapshot(s, term);
+ term.scroll(2, 3, -2);
+ snapshot.updateSnapshot(false);
+ assertChangedLines(snapshot, "0011100000");
+
+ snapshot = snapshot(s, term);
+ term.scroll(2, 4, -1);
+ term.scroll(2, 4, -1);
+ snapshot.updateSnapshot(false);
+ assertChangedLines(snapshot, "0011110000");
+ }
+
+ public void testMultiScrollWithDifferentSizes() {
+ ITerminalTextData term = makeITerminalTextData();
+ String s = "00\n" + "11\n" + "22\n" + "33\n" + "44\n" + "55\n" + "66\n" + "77\n" + "88\n" + "99";
+ ITerminalTextDataSnapshot snapshot;
+
+ snapshot = snapshot(s, term);
+ term.scroll(2, 6, -1);
+ term.scroll(2, 5, -1);
+ snapshot.updateSnapshot(false);
+ assertChangedLines(snapshot, "0011111100");
+ assertEquals(2, snapshot.getFirstChangedLine());
+ assertEquals(7, snapshot.getLastChangedLine());
+ assertEquals(0, snapshot.getScrollWindowSize());
+ assertEquals(0, snapshot.getScrollWindowStartLine());
+ assertEquals(0, snapshot.getScrollWindowShift());
+
+ // scrolls with different ranges cause no scroll
+ // optimization
+ snapshot = snapshot(s, term);
+ term.scroll(2, 6, -1);
+ term.scroll(2, 5, -1);
+ snapshot.updateSnapshot(true);
+ assertChangedLines(snapshot, "0011111100");
+ assertEquals(2, snapshot.getFirstChangedLine());
+ assertEquals(7, snapshot.getLastChangedLine());
+ assertEquals(0, snapshot.getScrollWindowShift());
+ assertEquals(0, snapshot.getScrollWindowSize());
+ assertEquals(0, snapshot.getScrollWindowStartLine());
+ }
+
+ public void testHasLineChanged() {
+ ITerminalTextData term = makeITerminalTextData();
+ String s = "000000\n" + "111111\n" + "222222\n" + "333333\n" + "444444\n" + "555555\n" + "666666\n" + "777777\n"
+ + "888888\n" + "999999";
+ ITerminalTextDataSnapshot snapshot;
+
+ snapshot = snapshot(s, term);
+ term.scroll(2, 3, -1);
+ term.setChar(7, 0, '.', null);
+ snapshot.updateSnapshot(true);
+ assertChangedLines(snapshot, "0000100100");
+
+ snapshot = snapshot(s, term);
+ term.scroll(2, 3, -2);
+ term.setChar(9, 0, '.', null);
+ term.setChars(0, 0, new char[] { '.', '!' }, null);
+ snapshot.updateSnapshot(true);
+ assertChangedLines(snapshot, "1001100001");
+
+ snapshot = snapshot(s, term);
+ term.scroll(2, 4, -1);
+ term.scroll(2, 4, -1);
+ term.setChars(2, 2, new char[] { '.', '!', '*' }, 1, 1, null);
+ snapshot.updateSnapshot(true);
+ assertChangedLines(snapshot, "0010110000");
+
+ snapshot = snapshot(s, term);
+ term.scroll(2, 7, -1);
+ term.setChar(5, 2, '.', null);
+ term.scroll(2, 7, -2);
+ snapshot.updateSnapshot(true);
+ assertChangedLines(snapshot, "0001001110");
+
+ snapshot = snapshot(s, term);
+ term.scroll(2, 7, -1);
+ term.setChar(5, 2, '.', null);
+ term.scroll(2, 7, -2);
+ snapshot.updateSnapshot(false);
+ assertChangedLines(snapshot, "0011111110");
+
+ }
+
+ public void testScroll() {
+ ITerminalTextData term = makeITerminalTextData();
+ String s = "00\n" + "11\n" + "22\n" + "33\n" + "44\n" + "55\n" + "66\n" + "77\n" + "88\n" + "99";
+ ITerminalTextDataSnapshot snapshot = snapshot(s, term);
+
+ term.scroll(2, 3, -1);
+ snapshot.updateSnapshot(true);
+ assertEquals(2, snapshot.getScrollWindowStartLine());
+ assertEquals(3, snapshot.getScrollWindowSize());
+ assertEquals(-1, snapshot.getScrollWindowShift());
+ assertEquals(4, snapshot.getFirstChangedLine());
+ assertEquals(4, snapshot.getLastChangedLine());
+
+ term.scroll(2, 3, -2);
+ snapshot.updateSnapshot(true);
+ assertEquals(2, snapshot.getScrollWindowStartLine());
+ assertEquals(3, snapshot.getScrollWindowSize());
+ assertEquals(-2, snapshot.getScrollWindowShift());
+ assertEquals(3, snapshot.getFirstChangedLine());
+ assertEquals(4, snapshot.getLastChangedLine());
+
+ term.scroll(2, 4, -1);
+ term.scroll(2, 4, -1);
+ snapshot.updateSnapshot(true);
+ assertEquals(2, snapshot.getScrollWindowStartLine());
+ assertEquals(4, snapshot.getScrollWindowSize());
+ assertEquals(-2, snapshot.getScrollWindowShift());
+ assertEquals(4, snapshot.getFirstChangedLine());
+ assertEquals(5, snapshot.getLastChangedLine());
+
+ snapshot = snapshot(s, term);
+ term.scroll(2, 3, -1);
+ snapshot.updateSnapshot(false);
+ assertEquals(0, snapshot.getScrollWindowStartLine());
+ assertEquals(0, snapshot.getScrollWindowSize());
+ assertEquals(0, snapshot.getScrollWindowShift());
+ assertEquals(2, snapshot.getFirstChangedLine());
+ assertEquals(4, snapshot.getLastChangedLine());
+
+ }
+
+ public void testDisjointScroll() {
+ ITerminalTextData term = makeITerminalTextData();
+ String s = "000000\n" + "111111\n" + "222222\n" + "333333\n" + "444444\n" + "555555\n" + "666666\n" + "777777\n"
+ + "888888\n" + "999999";
+ ITerminalTextDataSnapshot snapshot;
+
+ snapshot = snapshot(s, term);
+ term.scroll(0, 2, -1);
+ term.scroll(4, 2, -1);
+ snapshot.updateSnapshot(true);
+ assertChangedLines(snapshot, "1100110000");
+ assertEquals(0, snapshot.getScrollWindowStartLine());
+ assertEquals(0, snapshot.getScrollWindowSize());
+ assertEquals(0, snapshot.getScrollWindowShift());
+
+ snapshot = snapshot(s, term);
+ term.scroll(0, 3, -1);
+ term.scroll(2, 2, -2);
+ snapshot.updateSnapshot(true);
+ assertChangedLines(snapshot, "1111000000");
+ assertEquals(0, snapshot.getScrollWindowStartLine());
+ assertEquals(0, snapshot.getScrollWindowSize());
+ assertEquals(0, snapshot.getScrollWindowShift());
+
+ snapshot = snapshot(s, term);
+ term.scroll(0, 3, -1);
+ term.scroll(2, 2, -2);
+ term.scroll(0, 3, -1);
+ snapshot.updateSnapshot(true);
+ assertChangedLines(snapshot, "1111000000");
+ assertEquals(0, snapshot.getScrollWindowStartLine());
+ assertEquals(0, snapshot.getScrollWindowSize());
+ assertEquals(0, snapshot.getScrollWindowShift());
+
+ snapshot = snapshot(s, term);
+ term.scroll(0, 3, -1);
+ term.scroll(2, 2, -2);
+ term.scroll(0, 3, -10);
+ snapshot.updateSnapshot(true);
+ assertChangedLines(snapshot, "1111000000");
+ assertEquals(0, snapshot.getScrollWindowStartLine());
+ assertEquals(0, snapshot.getScrollWindowSize());
+ assertEquals(0, snapshot.getScrollWindowShift());
+
+ snapshot = snapshot(s, term);
+ term.scroll(1, 3, -1);
+ term.scroll(1, 3, 1);
+ snapshot.updateSnapshot(true);
+ assertChangedLines(snapshot, "0111000000");
+ assertEquals(0, snapshot.getScrollWindowStartLine());
+ assertEquals(0, snapshot.getScrollWindowSize());
+ assertEquals(0, snapshot.getScrollWindowShift());
+ }
+
+ public void testResize() {
+ ITerminalTextData term = makeITerminalTextData();
+ String s = "000000\n" + "111111\n" + "222222\n" + "333333";
+ ITerminalTextDataSnapshot snapshot;
+
+ snapshot = snapshot(s, term);
+ term.setDimensions(term.getHeight(), term.getWidth() + 1);
+ snapshot.updateSnapshot(true);
+ assertChangedLines(snapshot, "1111");
+ assertEquals(0, snapshot.getFirstChangedLine());
+ assertEquals(3, snapshot.getLastChangedLine());
+ assertEquals(0, snapshot.getScrollWindowStartLine());
+ assertEquals(0, snapshot.getScrollWindowSize());
+ assertEquals(0, snapshot.getScrollWindowShift());
+
+ snapshot = snapshot(s, term);
+ term.setDimensions(term.getHeight() + 1, term.getWidth());
+ snapshot.updateSnapshot(true);
+ assertChangedLines(snapshot, "11111");
+ assertEquals(0, snapshot.getFirstChangedLine());
+ assertEquals(4, snapshot.getLastChangedLine());
+ assertEquals(0, snapshot.getScrollWindowStartLine());
+ assertEquals(0, snapshot.getScrollWindowSize());
+ assertEquals(0, snapshot.getScrollWindowShift());
+
+ snapshot = snapshot(s, term);
+ term.setDimensions(term.getHeight() - 1, term.getWidth());
+ snapshot.updateSnapshot(true);
+ assertChangedLines(snapshot, "111");
+ assertEquals(0, snapshot.getFirstChangedLine());
+ assertEquals(2, snapshot.getLastChangedLine());
+ assertEquals(0, snapshot.getScrollWindowStartLine());
+ assertEquals(0, snapshot.getScrollWindowSize());
+ assertEquals(0, snapshot.getScrollWindowShift());
+
+ snapshot = snapshot(s, term);
+ term.setDimensions(0, 0);
+ snapshot.updateSnapshot(true);
+ assertChangedLines(snapshot, "");
+ assertEquals(0, snapshot.getFirstChangedLine());
+ assertEquals(-1, snapshot.getLastChangedLine());
+ assertEquals(0, snapshot.getScrollWindowStartLine());
+ assertEquals(0, snapshot.getScrollWindowSize());
+ assertEquals(0, snapshot.getScrollWindowShift());
+
+ }
+
+ public void testResizeAfterScroll() {
+ ITerminalTextData term = makeITerminalTextData();
+ String s = "000000\n" + "111111\n" + "222222\n" + "333333\n" + "444444\n" + "555555\n" + "666666\n" + "777777\n"
+ + "888888\n" + "999999";
+ ITerminalTextDataSnapshot snapshot;
+
+ snapshot = snapshot(s, term);
+ term.scroll(1, 2, -1);
+ term.setDimensions(5, 4);
+ snapshot.updateSnapshot(true);
+ assertChangedLines(snapshot, "11111");
+ assertEquals(0, snapshot.getScrollWindowStartLine());
+ assertEquals(0, snapshot.getScrollWindowSize());
+ assertEquals(0, snapshot.getScrollWindowShift());
+
+ snapshot = snapshot(s, term);
+ term.scroll(1, 2, -1);
+ term.setDimensions(7, 2);
+ term.scroll(4, 2, -1);
+ snapshot.updateSnapshot(true);
+ assertChangedLines(snapshot, "1111111");
+ assertEquals(0, snapshot.getScrollWindowStartLine());
+ assertEquals(0, snapshot.getScrollWindowSize());
+ assertEquals(0, snapshot.getScrollWindowShift());
+ snapshot = snapshot(s, term);
+
+ term.scroll(1, 2, -1);
+ term.setDimensions(term.getHeight(), term.getWidth() + 1);
+ snapshot.updateSnapshot(true);
+ assertChangedLines(snapshot, "1111111111");
+ assertEquals(0, snapshot.getScrollWindowStartLine());
+ assertEquals(0, snapshot.getScrollWindowSize());
+ assertEquals(0, snapshot.getScrollWindowShift());
+ }
+
+ public void testScrollAfterResize() {
+ ITerminalTextData term = makeITerminalTextData();
+ String s = "000000\n" + "111111\n" + "222222\n" + "333333\n" + "444444\n" + "555555\n" + "666666\n" + "777777\n"
+ + "888888\n" + "999999";
+ ITerminalTextDataSnapshot snapshot;
+
+ snapshot = snapshot(s, term);
+ term.setDimensions(14, 6);
+ term.scroll(0, 14, -1);
+ snapshot.updateSnapshot(true);
+ assertChangedLines(snapshot, "11111111111111");
+ assertEquals(0, snapshot.getScrollWindowStartLine());
+ assertEquals(0, snapshot.getScrollWindowSize());
+ assertEquals(0, snapshot.getScrollWindowShift());
+ }
+
+ private final class SnapshotListener implements ITerminalTextDataSnapshot.SnapshotOutOfDateListener {
+ int N;
+
+ @Override
+ public void snapshotOutOfDate(ITerminalTextDataSnapshot snapshot) {
+ N++;
+ }
+
+ public void reset() {
+ N = 0;
+ }
+ }
+
+ public void testAddListener() {
+ ITerminalTextData term = makeITerminalTextData();
+ String s = "12345\n" + "abcde\n" + "ABCDE\n" + "vwxzy\n" + "VWXYZ";
+ TerminalTextTestHelper.fill(term, s);
+
+ ITerminalTextDataSnapshot snapshot = term.makeSnapshot();
+ snapshot.updateSnapshot(false);
+
+ SnapshotListener listener = new SnapshotListener();
+ snapshot.addListener(listener);
+ assertEquals(0, listener.N);
+
+ // make a change and expect it to be changed
+ term.setChar(0, 0, '?', null);
+ assertEquals(1, listener.N);
+ term.setChar(1, 1, '?', null);
+ assertEquals(1, listener.N);
+
+ snapshot.updateSnapshot(false);
+ assertEquals(1, listener.N);
+ listener.reset();
+
+ // make a change and expect it to be changed
+ term.setChars(1, 1, new char[] { '?', '!', '.' }, null);
+ assertEquals(1, listener.N);
+ term.setChars(2, 1, new char[] { '?', '!', '.' }, null);
+ assertEquals(1, listener.N);
+
+ snapshot.updateSnapshot(false);
+ assertEquals(1, listener.N);
+ listener.reset();
+
+ // scroll
+ term.scroll(1, 2, -1);
+ assertEquals(1, listener.N);
+ term.scroll(1, 2, -1);
+ assertEquals(1, listener.N);
+
+ snapshot.updateSnapshot(false);
+ assertEquals(1, listener.N);
+ listener.reset();
+
+ // scroll
+ term.scroll(1, 2, 1);
+ assertEquals(1, listener.N);
+ term.scroll(1, 2, 1);
+ assertEquals(1, listener.N);
+
+ snapshot.updateSnapshot(false);
+ assertEquals(1, listener.N);
+ listener.reset();
+
+ // scroll
+ term.scroll(1, 2, -1);
+ assertEquals(1, listener.N);
+ term.scroll(1, 2, -1);
+ assertEquals(1, listener.N);
+
+ snapshot.updateSnapshot(false);
+ assertEquals(1, listener.N);
+ listener.reset();
+
+ // scroll
+ term.scroll(1, 2, 1);
+ assertEquals(1, listener.N);
+
+ snapshot.updateSnapshot(false);
+ assertEquals(1, listener.N);
+ listener.reset();
+
+ // setDimensions
+ term.setDimensions(2, 2);
+ assertEquals(1, listener.N);
+
+ snapshot.updateSnapshot(false);
+ assertEquals(1, listener.N);
+ listener.reset();
+
+ // setDimensions
+ term.setDimensions(20, 20);
+ assertEquals(1, listener.N);
+
+ snapshot.updateSnapshot(false);
+ assertFalse(snapshot.isOutOfDate());
+ }
+
+ public void testRemoveListener() {
+ ITerminalTextData term = makeITerminalTextData();
+ String s = "12345\n" + "abcde\n" + "ABCDE\n" + "vwxzy\n" + "VWXYZ";
+ TerminalTextTestHelper.fill(term, s);
+
+ ITerminalTextDataSnapshot snapshot = term.makeSnapshot();
+ snapshot.updateSnapshot(false);
+
+ SnapshotListener listener1 = new SnapshotListener();
+ SnapshotListener listener2 = new SnapshotListener();
+ SnapshotListener listener3 = new SnapshotListener();
+ snapshot.addListener(listener1);
+ snapshot.addListener(listener2);
+ snapshot.addListener(listener3);
+ assertEquals(0, listener1.N);
+
+ // make a change and expect it to be changed
+ term.setChar(0, 0, '?', null);
+ assertEquals(1, listener1.N);
+ assertEquals(1, listener2.N);
+ assertEquals(1, listener3.N);
+ term.setChar(1, 1, '?', null);
+ assertEquals(1, listener1.N);
+ assertEquals(1, listener2.N);
+ assertEquals(1, listener3.N);
+
+ snapshot.updateSnapshot(false);
+ assertEquals(1, listener1.N);
+ assertEquals(1, listener2.N);
+ assertEquals(1, listener3.N);
+ listener1.reset();
+ listener2.reset();
+ listener3.reset();
+
+ // make a change and expect it to be changed
+ term.setChars(1, 1, new char[] { '?', '!', '.' }, null);
+ assertEquals(1, listener1.N);
+ assertEquals(1, listener2.N);
+ assertEquals(1, listener3.N);
+ term.setChars(2, 1, new char[] { '?', '!', '.' }, null);
+ assertEquals(1, listener1.N);
+ assertEquals(1, listener2.N);
+ assertEquals(1, listener3.N);
+
+ snapshot.updateSnapshot(false);
+ assertEquals(1, listener1.N);
+ assertEquals(1, listener2.N);
+ assertEquals(1, listener3.N);
+
+ listener1.reset();
+ listener2.reset();
+ listener3.reset();
+
+ snapshot.removeListener(listener2);
+
+ // scroll
+ term.scroll(1, 2, -1);
+ assertEquals(1, listener1.N);
+ assertEquals(0, listener2.N);
+ assertEquals(1, listener3.N);
+
+ term.scroll(1, 2, -1);
+ assertEquals(1, listener1.N);
+ assertEquals(0, listener2.N);
+ assertEquals(1, listener3.N);
+
+ snapshot.updateSnapshot(false);
+ assertEquals(1, listener1.N);
+ assertEquals(0, listener2.N);
+ assertEquals(1, listener3.N);
+
+ snapshot.addListener(listener2);
+ listener1.reset();
+ listener2.reset();
+ listener3.reset();
+
+ snapshot.removeListener(listener3);
+ // scroll
+ term.scroll(1, 2, 1);
+ assertEquals(1, listener1.N);
+ assertEquals(1, listener2.N);
+ assertEquals(0, listener3.N);
+
+ term.scroll(1, 2, 1);
+ assertEquals(1, listener1.N);
+ assertEquals(1, listener2.N);
+ assertEquals(0, listener3.N);
+
+ snapshot.updateSnapshot(false);
+ assertEquals(1, listener1.N);
+ assertEquals(1, listener2.N);
+ assertEquals(0, listener3.N);
+
+ snapshot.addListener(listener3);
+ listener1.reset();
+ listener2.reset();
+ listener3.reset();
+
+ // add listener multiple times
+ snapshot.addListener(listener3);
+
+ // scroll
+ term.scroll(1, 2, -1);
+ assertEquals(1, listener1.N);
+ assertEquals(1, listener2.N);
+ assertEquals(2, listener3.N);
+
+ term.scroll(1, 2, -1);
+ assertEquals(1, listener1.N);
+ assertEquals(1, listener2.N);
+ assertEquals(2, listener3.N);
+
+ snapshot.updateSnapshot(false);
+ assertEquals(1, listener1.N);
+ assertEquals(1, listener2.N);
+ assertEquals(2, listener3.N);
+
+ listener1.reset();
+ listener2.reset();
+ listener3.reset();
+ // remove the duplicate listener
+ snapshot.removeListener(listener3);
+
+ // scroll
+ term.scroll(1, 2, 1);
+ assertEquals(1, listener1.N);
+ assertEquals(1, listener2.N);
+ assertEquals(1, listener3.N);
+
+ snapshot.updateSnapshot(false);
+ assertEquals(1, listener1.N);
+ assertEquals(1, listener2.N);
+ assertEquals(1, listener3.N);
+
+ listener1.reset();
+ listener2.reset();
+ listener3.reset();
+
+ // setDimensions
+ term.setDimensions(2, 2);
+ assertEquals(1, listener1.N);
+ assertEquals(1, listener2.N);
+ assertEquals(1, listener3.N);
+
+ snapshot.updateSnapshot(false);
+ assertEquals(1, listener1.N);
+ assertEquals(1, listener2.N);
+ assertEquals(1, listener3.N);
+
+ listener1.reset();
+ listener2.reset();
+ listener3.reset();
+
+ // setDimensions
+ term.setDimensions(20, 20);
+ assertEquals(1, listener1.N);
+ assertEquals(1, listener2.N);
+ assertEquals(1, listener3.N);
+
+ snapshot.updateSnapshot(false);
+ assertFalse(snapshot.isOutOfDate());
+ }
+
+ public void testWindowOfInterest() {
+ ITerminalTextData term = makeITerminalTextData();
+ TerminalTextTestHelper.fillSimple(term, "0123456789");
+ ITerminalTextDataSnapshot snapshot = term.makeSnapshot();
+ snapshot.updateSnapshot(false);
+ snapshot.setInterestWindow(7, 4);
+ snapshot.setInterestWindow(9, 4);
+ snapshot.updateSnapshot(false);
+ }
+
+ public void testWindowOfInterest2() {
+ ITerminalTextData term = makeITerminalTextData();
+ TerminalTextTestHelper.fillSimple(term, "0123456789");
+ ITerminalTextDataSnapshot snapshot = term.makeSnapshot();
+ snapshot.updateSnapshot(false);
+ term.scroll(7, 3, -1);
+ snapshot.setInterestWindow(9, 4);
+ snapshot.updateSnapshot(false);
+ }
+
+ public void testAddLine() {
+ ITerminalTextData term = makeITerminalTextData();
+ TerminalTextTestHelper.fillSimple(term, "0123456789");
+ ITerminalTextDataSnapshot snapshot = term.makeSnapshot();
+ term.setMaxHeight(20);
+ snapshot.updateSnapshot(false);
+ assertEquals(10, term.getHeight());
+ assertEquals(20, term.getMaxHeight());
+ assertFalse(snapshot.isOutOfDate());
+ term.addLine();
+ assertTrue(snapshot.isOutOfDate());
+ assertEquals(11, term.getHeight());
+ assertEquals(10, snapshot.getHeight());
+ snapshot.updateSnapshot(false);
+ assertEquals(11, term.getHeight());
+ assertEquals(11, snapshot.getHeight());
+ assertEquals(20, term.getMaxHeight());
+
+ term.addLine();
+ term.addLine();
+ assertEquals(11, snapshot.getHeight());
+ assertEquals(13, term.getHeight());
+ assertTrue(snapshot.isOutOfDate());
+ snapshot.updateSnapshot(false);
+ assertEquals(13, snapshot.getHeight());
+ assertEquals(13, term.getHeight());
+ assertEquals(20, term.getMaxHeight());
+ }
+
+ public void testHasDimensionsChanged() {
+ ITerminalTextData term = makeITerminalTextData();
+ TerminalTextTestHelper.fillSimple(term, "0123456789");
+ ITerminalTextDataSnapshot snapshot = term.makeSnapshot();
+ term.setMaxHeight(20);
+ snapshot.setInterestWindow(3, 4);
+ snapshot.updateSnapshot(false);
+ assertEquals(10, term.getHeight());
+ assertEquals(20, term.getMaxHeight());
+ assertFalse(snapshot.isOutOfDate());
+ term.addLine();
+ assertTrue(snapshot.isOutOfDate());
+ assertEquals(11, term.getHeight());
+ assertEquals(10, snapshot.getHeight());
+ snapshot.updateSnapshot(false);
+ assertTrue(snapshot.hasDimensionsChanged());
+ assertEquals(11, term.getHeight());
+ assertEquals(11, snapshot.getHeight());
+ assertEquals(20, term.getMaxHeight());
+
+ term.addLine();
+ term.addLine();
+ assertEquals(11, snapshot.getHeight());
+ assertEquals(13, term.getHeight());
+ assertTrue(snapshot.isOutOfDate());
+ snapshot.updateSnapshot(false);
+ assertTrue(snapshot.hasDimensionsChanged());
+ assertEquals(13, snapshot.getHeight());
+ assertEquals(13, term.getHeight());
+ assertEquals(20, term.getMaxHeight());
+ }
+
+ public void testCursor() {
+ ITerminalTextData term = makeITerminalTextData();
+ TerminalTextTestHelper.fillSimple(term, "0123456789");
+ ITerminalTextDataSnapshot snapshot = term.makeSnapshot();
+ term.setMaxHeight(20);
+ snapshot.setInterestWindow(3, 4);
+ snapshot.updateSnapshot(false);
+ term.setCursorLine(2);
+ term.setCursorColumn(1);
+ snapshot.updateSnapshot(false);
+ assertEquals(2, snapshot.getCursorLine());
+ assertEquals(1, snapshot.getCursorColumn());
+ term.setCursorLine(3);
+ term.setCursorColumn(2);
+ snapshot.updateSnapshot(false);
+ assertEquals(3, snapshot.getCursorLine());
+ assertEquals(2, snapshot.getCursorColumn());
+ }
+
+ public void testCursor2() {
+ ITerminalTextData term = makeITerminalTextData();
+ TerminalTextTestHelper.fillSimple(term, "0123456789");
+ ITerminalTextDataSnapshot snapshot = term.makeSnapshot();
+ term.setMaxHeight(20);
+ snapshot.setInterestWindow(3, 4);
+ snapshot.updateSnapshot(false);
+ term.setCursorLine(2);
+ assertTrue(snapshot.isOutOfDate());
+ snapshot.updateSnapshot(false);
+ term.setCursorColumn(1);
+ assertTrue(snapshot.isOutOfDate());
+ }
+
+ public void testHasTerminalChanged() {
+ ITerminalTextData term = makeITerminalTextData();
+ String s = "12345\n" + "abcde\n" + "ABCDE\n" + "vwxzy\n" + "VWXYZ";
+ TerminalTextTestHelper.fill(term, s);
+
+ ITerminalTextDataSnapshot snapshot = term.makeSnapshot();
+ assertTrue(snapshot.hasTerminalChanged());
+ snapshot.updateSnapshot(false);
+
+ assertTrue(snapshot.hasTerminalChanged());
+
+ // make a change and expect it to be changed
+ term.setChar(0, 0, '?', null);
+ snapshot.updateSnapshot(false);
+ assertTrue(snapshot.hasTerminalChanged());
+
+ // make a change and expect it to be changed
+ term.setChars(1, 1, new char[] { '?', '!', '.' }, null);
+ snapshot.updateSnapshot(false);
+ assertTrue(snapshot.hasTerminalChanged());
+
+ // scroll
+ term.scroll(1, 2, -1);
+ snapshot.updateSnapshot(false);
+ assertTrue(snapshot.hasTerminalChanged());
+
+ // scroll
+ term.scroll(1, 2, 1);
+ snapshot.updateSnapshot(false);
+ assertTrue(snapshot.hasTerminalChanged());
+
+ // scroll
+ term.scroll(1, 2, -1);
+ snapshot.updateSnapshot(true);
+ assertTrue(snapshot.hasTerminalChanged());
+
+ // scroll
+ term.scroll(1, 2, 1);
+ snapshot.updateSnapshot(true);
+ assertTrue(snapshot.hasTerminalChanged());
+
+ // setDimensions
+ term.setDimensions(2, 2);
+ snapshot.updateSnapshot(false);
+ assertTrue(snapshot.hasTerminalChanged());
+
+ // setDimensions
+ term.setDimensions(20, 20);
+ snapshot.updateSnapshot(false);
+ assertTrue(snapshot.hasTerminalChanged());
+
+ snapshot.updateSnapshot(false);
+ assertFalse(snapshot.hasTerminalChanged());
+
+ // window of interest changes should NOT set hasTerminalChanged
+ snapshot.updateSnapshot(false);
+ snapshot.setInterestWindow(7, 4);
+
+ assertFalse(snapshot.hasTerminalChanged());
+ }
+
+ public void testGetTerminalTextData() {
+ ITerminalTextData term = makeITerminalTextData();
+ ITerminalTextDataSnapshot snapshot = term.makeSnapshot();
+ assertSame(term, snapshot.getTerminalTextData());
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataSnapshotWindowTest.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataSnapshotWindowTest.java
new file mode 100644
index 00000000000..c0988c78369
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataSnapshotWindowTest.java
@@ -0,0 +1,196 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.model;
+
+import org.eclipse.tm.terminal.model.ITerminalTextData;
+import org.eclipse.tm.terminal.model.ITerminalTextDataReadOnly;
+import org.eclipse.tm.terminal.model.ITerminalTextDataSnapshot;
+
+import junit.framework.TestCase;
+
+public class TerminalTextDataSnapshotWindowTest extends TestCase {
+ String toMultiLineText(ITerminalTextDataReadOnly term) {
+ return TerminalTextTestHelper.toMultiLineText(term);
+ }
+
+ String toSimpleText(ITerminalTextDataReadOnly term) {
+ return TerminalTextTestHelper.toSimple(term);
+ }
+
+ protected ITerminalTextData makeITerminalTextData() {
+ return new TerminalTextData();
+ }
+
+ ITerminalTextDataSnapshot snapshotSimple(String text, ITerminalTextData term) {
+ TerminalTextTestHelper.fillSimple(term, text);
+ ITerminalTextDataSnapshot snapshot = term.makeSnapshot();
+ return snapshot;
+
+ }
+
+ /**
+ * @param snapshot
+ * @param expected a string of 0 and 1 (1 means changed)
+ */
+ void assertChangedLines(ITerminalTextDataSnapshot snapshot, String expected) {
+ assertEquals(expected.length(), snapshot.getHeight());
+ StringBuffer buffer = new StringBuffer();
+ for (int line = 0; line < expected.length(); line++) {
+ if (snapshot.hasLineChanged(line))
+ buffer.append('1');
+ else
+ buffer.append('0');
+ }
+ assertEquals(expected, buffer.toString());
+ }
+
+ public void testSetInterestWindow() {
+ ITerminalTextData term = makeITerminalTextData();
+ ITerminalTextDataSnapshot snapshot = snapshotSimple("0123456789", term);
+ assertEquals(0, snapshot.getInterestWindowStartLine());
+ assertEquals(-1, snapshot.getInterestWindowSize());
+ snapshot.setInterestWindow(2, 3);
+ assertEquals(2, snapshot.getInterestWindowStartLine());
+ assertEquals(3, snapshot.getInterestWindowSize());
+ snapshot.updateSnapshot(false);
+ assertChangedLines(snapshot, "0011100000");
+ }
+
+ public void testSetChar() {
+ ITerminalTextData term = makeITerminalTextData();
+ ITerminalTextDataSnapshot snapshot = snapshotSimple("0123456789", term);
+ snapshot.setInterestWindow(2, 3);
+ snapshot.updateSnapshot(false);
+ assertEquals(" 234 ", toSimpleText(snapshot));
+
+ term.setChar(0, 0, 'x', null);
+ assertFalse(snapshot.isOutOfDate());
+ snapshot.updateSnapshot(false);
+ assertChangedLines(snapshot, "0000000000");
+
+ term.setChar(1, 0, 'x', null);
+ assertFalse(snapshot.isOutOfDate());
+
+ term.setChar(2, 0, 'x', null);
+ assertTrue(snapshot.isOutOfDate());
+ snapshot.updateSnapshot(false);
+ assertChangedLines(snapshot, "0010000000");
+
+ term.setChar(3, 0, 'x', null);
+ assertTrue(snapshot.isOutOfDate());
+ snapshot.updateSnapshot(false);
+ assertChangedLines(snapshot, "0001000000");
+
+ term.setChar(4, 0, 'x', null);
+ assertTrue(snapshot.isOutOfDate());
+ snapshot.updateSnapshot(false);
+ assertChangedLines(snapshot, "0000100000");
+
+ term.setChar(5, 0, 'x', null);
+ assertFalse(snapshot.isOutOfDate());
+
+ term.setChar(6, 0, 'x', null);
+ assertFalse(snapshot.isOutOfDate());
+
+ for (int i = 0; i < 9; i++) {
+ term.setChar(i, 0, (char) ('a' + i), null);
+ }
+ assertTrue(snapshot.isOutOfDate());
+ snapshot.updateSnapshot(false);
+ assertChangedLines(snapshot, "0011100000");
+ }
+
+ public void testSetChars() {
+ ITerminalTextData term = makeITerminalTextData();
+ ITerminalTextDataSnapshot snapshot = snapshotSimple("0123456789", term);
+ snapshot.setInterestWindow(2, 3);
+ snapshot.updateSnapshot(false);
+ assertEquals(" 234 ", toSimpleText(snapshot));
+
+ term.setChars(0, 0, "x".toCharArray(), null);
+ assertFalse(snapshot.isOutOfDate());
+ snapshot.updateSnapshot(false);
+ assertChangedLines(snapshot, "0000000000");
+
+ term.setChars(1, 0, "x".toCharArray(), null);
+ assertFalse(snapshot.isOutOfDate());
+
+ term.setChars(2, 0, "x".toCharArray(), null);
+ assertTrue(snapshot.isOutOfDate());
+ snapshot.updateSnapshot(false);
+ assertChangedLines(snapshot, "0010000000");
+
+ term.setChars(3, 0, "x".toCharArray(), null);
+ assertTrue(snapshot.isOutOfDate());
+ snapshot.updateSnapshot(false);
+ assertChangedLines(snapshot, "0001000000");
+
+ term.setChars(4, 0, "x".toCharArray(), null);
+ assertTrue(snapshot.isOutOfDate());
+ snapshot.updateSnapshot(false);
+ assertChangedLines(snapshot, "0000100000");
+
+ term.setChars(5, 0, "x".toCharArray(), null);
+ assertFalse(snapshot.isOutOfDate());
+
+ term.setChars(6, 0, "x".toCharArray(), null);
+ assertFalse(snapshot.isOutOfDate());
+ for (int i = 0; i < 9; i++) {
+ term.setChars(i, 0, (i + "").toCharArray(), null);
+ }
+ assertTrue(snapshot.isOutOfDate());
+ snapshot.updateSnapshot(false);
+ assertChangedLines(snapshot, "0011100000");
+ }
+
+ public void testSetChars2() {
+ ITerminalTextData term = makeITerminalTextData();
+ ITerminalTextDataSnapshot snapshot = snapshotSimple("0123456789", term);
+ snapshot.setInterestWindow(2, 3);
+ snapshot.updateSnapshot(false);
+ assertEquals(" 234 ", toSimpleText(snapshot));
+
+ term.setChars(0, 0, "abcdef".toCharArray(), 2, 1, null);
+ assertFalse(snapshot.isOutOfDate());
+ snapshot.updateSnapshot(false);
+ assertChangedLines(snapshot, "0000000000");
+
+ term.setChars(1, 0, "abcdef".toCharArray(), 2, 1, null);
+ assertFalse(snapshot.isOutOfDate());
+
+ term.setChars(2, 0, "abcdef".toCharArray(), 2, 1, null);
+ assertTrue(snapshot.isOutOfDate());
+ snapshot.updateSnapshot(false);
+ assertChangedLines(snapshot, "0010000000");
+
+ term.setChars(3, 0, "abcdef".toCharArray(), 2, 1, null);
+ assertTrue(snapshot.isOutOfDate());
+ snapshot.updateSnapshot(false);
+ assertChangedLines(snapshot, "0001000000");
+
+ term.setChars(4, 0, "abcdef".toCharArray(), 2, 1, null);
+ assertTrue(snapshot.isOutOfDate());
+ snapshot.updateSnapshot(false);
+ assertChangedLines(snapshot, "0000100000");
+
+ term.setChars(5, 0, "abcdef".toCharArray(), 2, 1, null);
+ assertFalse(snapshot.isOutOfDate());
+
+ term.setChars(6, 0, "abcdef".toCharArray(), 2, 1, null);
+ assertFalse(snapshot.isOutOfDate());
+ for (int i = 0; i < 9; i++) {
+ term.setChars(i, 0, ("ab" + i + "def").toCharArray(), 2, 1, null);
+ }
+ assertTrue(snapshot.isOutOfDate());
+ snapshot.updateSnapshot(false);
+ assertChangedLines(snapshot, "0011100000");
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataStoreTest.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataStoreTest.java
new file mode 100644
index 00000000000..29e7ef4c0c0
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataStoreTest.java
@@ -0,0 +1,21 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.model;
+
+import org.eclipse.tm.terminal.model.ITerminalTextData;
+
+public class TerminalTextDataStoreTest extends AbstractITerminalTextDataTest {
+ @Override
+ protected ITerminalTextData makeITerminalTextData() {
+ return new TerminalTextDataStore();
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataTest.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataTest.java
new file mode 100644
index 00000000000..ade4d22d761
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataTest.java
@@ -0,0 +1,21 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.model;
+
+import org.eclipse.tm.terminal.model.ITerminalTextData;
+
+public class TerminalTextDataTest extends AbstractITerminalTextDataTest {
+ @Override
+ protected ITerminalTextData makeITerminalTextData() {
+ return new TerminalTextData();
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataWindowTest.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataWindowTest.java
new file mode 100644
index 00000000000..d681687a7ef
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataWindowTest.java
@@ -0,0 +1,425 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ * Martin Oberhuber (Wind River) - [168197] Fix Terminal for CDC-1.1/Foundation-1.1
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.model;
+
+import java.util.ArrayList;
+
+import org.eclipse.tm.terminal.model.ITerminalTextData;
+import org.eclipse.tm.terminal.model.LineSegment;
+import org.eclipse.tm.terminal.model.TerminalStyle;
+
+public class TerminalTextDataWindowTest extends AbstractITerminalTextDataTest {
+ int fOffset;
+ int fSize;
+
+ public TerminalTextDataWindowTest() {
+ fOffset = 2;
+ fSize = 2;
+ }
+
+ @Override
+ protected ITerminalTextData makeITerminalTextData() {
+ TerminalTextDataWindow term = new TerminalTextDataWindow();
+ term.setWindow(fOffset, fSize);
+ return term;
+ }
+
+ /**
+ * Used for multi line text
+ * @param expected
+ * @param actual
+ */
+ @Override
+ protected void assertEqualsTerm(String expected, String actual) {
+ assertEquals(stripMultiLine(expected), stripMultiLine(actual));
+ }
+
+ private String stripMultiLine(String s) {
+ StringBuffer b = new StringBuffer();
+ // String[] lines=s.split("\n");
+ // <J2ME CDC-1.1 Foundation-1.1 variant>
+ ArrayList<String> l = new ArrayList<>();
+ int j = 0;
+ for (int k = 0; k < s.length(); k++) {
+ if (s.charAt(k) == '\n') {
+ l.add(s.substring(j, k));
+ j = k;
+ }
+ }
+ j = l.size() - 1;
+ while (j >= 0 && "".equals(l.get(j))) {
+ j--;
+ }
+ String[] lines = new String[j + 1];
+ while (j >= 0) {
+ lines[j] = l.get(j);
+ j--;
+ }
+ // </J2ME CDC-1.1 Foundation-1.1 variant>
+ for (int i = 0; i < lines.length; i++) {
+ if (i > 0)
+ b.append("\n"); //$NON-NLS-1$
+ if (i >= fOffset && i < fOffset + fSize)
+ b.append(lines[i]);
+ else
+ b.append(new String(new char[lines[i].length()]));
+ }
+ return b.toString();
+ }
+
+ /**
+ * Used for simple text
+ * @param expected
+ * @param actual
+ */
+ @Override
+ protected void assertEqualsSimple(String expected, String actual) {
+ assertEquals(stripSimple(expected), stripSimple(actual));
+ }
+
+ String stripSimple(String s) {
+ StringBuffer b = new StringBuffer();
+ for (int i = 0; i < s.length(); i++) {
+ if (i >= fOffset && i < fOffset + fSize)
+ b.append(s.charAt(i));
+ else
+ b.append(' ');
+ }
+ return b.toString();
+ }
+
+ @Override
+ public void testAddLine() {
+ String s = "111\n" + "222\n" + "333\n" + "444\n" + "555";
+ ITerminalTextData term = makeITerminalTextData();
+ fill(term, s);
+ term.addLine();
+ assertEqualsTerm("222\n" + "333\n" + "444\n" + "\0\0\0\n" + "\000\000\000", toMultiLineText(term));
+ }
+
+ @Override
+ public void testMaxSize() {
+ String s = "111\n" + "222\n" + "333\n" + "444\n" + "555";
+ ITerminalTextData term = makeITerminalTextData();
+ term.setMaxHeight(8);
+ fill(term, s);
+ assertEquals(5, term.getHeight());
+ assertEquals(8, term.getMaxHeight());
+ term.addLine();
+ assertEquals(6, term.getHeight());
+ assertEqualsTerm("111\n" + "222\n" + "333\n" + "444\n" + "555\n" + "\000\000\000", toMultiLineText(term));
+ term.addLine();
+ assertEquals(7, term.getHeight());
+ assertEqualsTerm("111\n" + "222\n" + "333\n" + "444\n" + "555\n" + "\000\000\000\n" + "\000\000\000",
+ toMultiLineText(term));
+ term.addLine();
+ assertEquals(8, term.getHeight());
+ assertEqualsTerm(
+ "111\n" + "222\n" + "333\n" + "444\n" + "555\n" + "\000\000\000\n" + "\000\000\000\n" + "\000\000\000",
+ toMultiLineText(term));
+ term.addLine();
+ assertEquals(8, term.getHeight());
+ assertEqualsTerm("222\n" + "333\n" + "444\n" + "\000\000\000\n" + "\000\000\000\n" + "\000\000\000\n"
+ + "\000\000\000\n" + "\000\000\000", toMultiLineText(term));
+ }
+
+ @Override
+ public void testGetLineSegments() {
+ TerminalStyle s1 = getDefaultStyle();
+ TerminalStyle s2 = s1.setBold(true);
+ TerminalStyle s3 = s1.setUnderline(true);
+ ITerminalTextData term = makeITerminalTextData();
+ term.setDimensions(8, 8);
+ LineSegment[] segments;
+
+ term.setChars(2, 0, "0123".toCharArray(), s1);
+ term.setChars(2, 4, "abcd".toCharArray(), null);
+ segments = term.getLineSegments(2, 0, term.getWidth());
+ assertEquals(2, segments.length);
+ assertSegment(0, "0123", s1, segments[0]);
+ assertSegment(4, "abcd", null, segments[1]);
+
+ segments = term.getLineSegments(2, 4, term.getWidth() - 4);
+ assertEquals(1, segments.length);
+ assertSegment(4, "abcd", null, segments[0]);
+
+ segments = term.getLineSegments(2, 3, 2);
+ assertEquals(2, segments.length);
+ assertSegment(3, "3", s1, segments[0]);
+ assertSegment(4, "a", null, segments[1]);
+
+ segments = term.getLineSegments(2, 7, 1);
+ assertEquals(1, segments.length);
+ assertSegment(7, "d", null, segments[0]);
+
+ segments = term.getLineSegments(2, 0, 1);
+ assertEquals(1, segments.length);
+ assertSegment(0, "0", s1, segments[0]);
+
+ // line 1
+ term.setChars(1, 0, "x".toCharArray(), s1);
+ term.setChars(1, 1, "y".toCharArray(), s2);
+ term.setChars(1, 2, "z".toCharArray(), s3);
+
+ segments = term.getLineSegments(1, 0, term.getWidth());
+ assertEquals(1, segments.length);
+ assertSegment(0, "\000\000\000\000\000\000\000\000", null, segments[0]);
+
+ // line 3
+ segments = term.getLineSegments(3, 0, term.getWidth());
+ assertEquals(1, segments.length);
+ assertSegment(0, "\000\000\000\000\000\000\000\000", null, segments[0]);
+
+ }
+
+ @Override
+ public void testGetChar() {
+ String s = "12345\n" + "abcde\n" + "ABCDE";
+ ITerminalTextData term = makeITerminalTextData();
+ fill(term, s);
+ assertEquals('\000', term.getChar(0, 0));
+ assertEquals('\000', term.getChar(0, 1));
+ assertEquals('\000', term.getChar(0, 2));
+ assertEquals('\000', term.getChar(0, 3));
+ assertEquals('\000', term.getChar(0, 4));
+ assertEquals('\000', term.getChar(1, 0));
+ assertEquals('\000', term.getChar(1, 1));
+ assertEquals('\000', term.getChar(1, 2));
+ assertEquals('\000', term.getChar(1, 3));
+ assertEquals('\000', term.getChar(1, 4));
+ assertEquals('A', term.getChar(2, 0));
+ assertEquals('B', term.getChar(2, 1));
+ assertEquals('C', term.getChar(2, 2));
+ assertEquals('D', term.getChar(2, 3));
+ assertEquals('E', term.getChar(2, 4));
+ }
+
+ @Override
+ public void testGetStyle() {
+ ITerminalTextData term = makeITerminalTextData();
+ TerminalStyle style = getDefaultStyle();
+ term.setDimensions(6, 3);
+ for (int line = 0; line < term.getHeight(); line++) {
+ for (int column = 0; column < term.getWidth(); column++) {
+ char c = (char) ('a' + column + line);
+ term.setChar(line, column, c, style.setForeground(c));
+ }
+ }
+ for (int line = 0; line < term.getHeight(); line++) {
+ for (int column = 0; column < term.getWidth(); column++) {
+ char c = (char) ('a' + column + line);
+ TerminalStyle s = null;
+ if (line >= fOffset && line < fOffset + fSize)
+ s = style.setForeground(c);
+ assertSame(s, term.getStyle(line, column));
+ }
+ }
+
+ }
+
+ @Override
+ public void testSetChar() {
+ ITerminalTextData term = makeITerminalTextData();
+ term.setDimensions(6, 3);
+ for (int line = 0; line < term.getHeight(); line++) {
+ for (int column = 0; column < term.getWidth(); column++) {
+ term.setChar(line, column, (char) ('a' + column + line), null);
+ }
+ }
+ for (int line = 0; line < term.getHeight(); line++) {
+ for (int column = 0; column < term.getWidth(); column++) {
+ char c = 0;
+ if (line >= fOffset && line < fOffset + fSize)
+ c = (char) ('a' + column + line);
+ assertEquals(c, term.getChar(line, column));
+ }
+ }
+ assertEqualsTerm("abc\n" + "bcd\n" + "cde\n" + "def\n" + "efg\n" + "fgh", toMultiLineText(term));
+ }
+
+ @Override
+ public void testSetChars() {
+ ITerminalTextData term = makeITerminalTextData();
+ term.setDimensions(6, 3);
+ for (int line = 0; line < term.getHeight(); line++) {
+ char[] chars = new char[term.getWidth()];
+ for (int column = 0; column < term.getWidth(); column++) {
+ chars[column] = (char) ('a' + column + line);
+ }
+ term.setChars(line, 0, chars, null);
+ }
+ for (int line = 0; line < term.getHeight(); line++) {
+ for (int column = 0; column < term.getWidth(); column++) {
+ char c = 0;
+ if (line >= fOffset && line < fOffset + fSize)
+ c = (char) ('a' + column + line);
+ assertEquals(c, term.getChar(line, column));
+ }
+ }
+ assertEqualsTerm("abc\n" + "bcd\n" + "cde\n" + "def\n" + "efg\n" + "fgh", toMultiLineText(term));
+
+ term.setChars(3, 1, new char[] { '1', '2' }, null);
+ assertEqualsTerm("abc\n" + "bcd\n" + "cde\n" + "d12\n" + "efg\n" + "fgh", toMultiLineText(term));
+ // check if chars are correctly chopped
+ term.setChars(4, 1, new char[] { '1', '2', '3', '4', '5' }, null);
+ assertEqualsTerm("abc\n" + "bcd\n" + "cde\n" + "d12\n" + "e12\n" + "fgh", toMultiLineText(term));
+
+ }
+
+ @Override
+ public void testSetCharsLen() {
+ ITerminalTextData term = makeITerminalTextData();
+ String s = "ZYXWVU\n" + "abcdef\n" + "ABCDEF";
+ fill(term, s);
+ char[] chars = new char[] { '1', '2', '3', '4', '5', '6', '7', '8' };
+ term.setChars(1, 0, chars, 0, 6, null);
+ assertEqualsTerm("ZYXWVU\n" + "123456\n" + "ABCDEF", toMultiLineText(term));
+
+ fill(term, s);
+ term.setChars(1, 0, chars, 0, 5, null);
+ assertEqualsTerm("ZYXWVU\n" + "12345f\n" + "ABCDEF", toMultiLineText(term));
+
+ fill(term, s);
+ term.setChars(1, 0, chars, 1, 5, null);
+ assertEqualsTerm("ZYXWVU\n" + "23456f\n" + "ABCDEF", toMultiLineText(term));
+
+ fill(term, s);
+ term.setChars(1, 1, chars, 1, 4, null);
+ assertEqualsTerm("ZYXWVU\n" + "a2345f\n" + "ABCDEF", toMultiLineText(term));
+
+ fill(term, s);
+ term.setChars(1, 2, chars, 3, 4, null);
+ assertEqualsTerm("ZYXWVU\n" + "ab4567\n" + "ABCDEF", toMultiLineText(term));
+
+ fill(term, s);
+ }
+
+ @Override
+ public void testSetCopyLines() {
+ ITerminalTextData term = new TerminalTextDataStore();
+ String s = "012345";
+ fillSimple(term, s);
+ ITerminalTextData termCopy = makeITerminalTextData();
+ String sCopy = "abcde";
+ fillSimple(termCopy, sCopy);
+ termCopy.copyRange(term, 0, 0, 0);
+ assertEqualsSimple(s, toSimple(term));
+ assertEqualsSimple(sCopy, toSimple(termCopy));
+
+ fillSimple(termCopy, sCopy);
+ termCopy.copyRange(term, 0, 0, 5);
+ assertEqualsSimple(s, toSimple(term));
+ assertEqualsSimple("01234", toSimple(termCopy));
+
+ fillSimple(termCopy, sCopy);
+ termCopy.copyRange(term, 0, 0, 2);
+ assertEqualsSimple(s, toSimple(term));
+ assertEqualsSimple("01cde", toSimple(termCopy));
+
+ fillSimple(termCopy, sCopy);
+ termCopy.copyRange(term, 0, 1, 2);
+ assertEqualsSimple(s, toSimple(term));
+ assertEqualsSimple("a01de", toSimple(termCopy));
+
+ fillSimple(termCopy, sCopy);
+ termCopy.copyRange(term, 1, 1, 2);
+ assertEqualsSimple(s, toSimple(term));
+ assertEqualsSimple("a12de", toSimple(termCopy));
+
+ fillSimple(termCopy, sCopy);
+ termCopy.copyRange(term, 1, 1, 4);
+ assertEqualsSimple(s, toSimple(term));
+ assertEqualsSimple("a1234", toSimple(termCopy));
+
+ fillSimple(termCopy, sCopy);
+ termCopy.copyRange(term, 2, 1, 4);
+ assertEqualsSimple(s, toSimple(term));
+ assertEqualsSimple("a2345", toSimple(termCopy));
+ }
+
+ @Override
+ public void testScrollNegative() {
+ scrollTest(0, 2, -1, " 23 ", " 23 ");
+ scrollTest(0, 1, -1, " 23 ", " 23 ");
+ scrollTest(0, 6, -1, " 23 ", " 3 ");
+ scrollTest(0, 6, -6, " 23 ", " ");
+ scrollTest(0, 6, -7, " 23 ", " ");
+ scrollTest(0, 6, -8, " 23 ", " ");
+ scrollTest(0, 6, -2, " 23 ", " ");
+ scrollTest(1, 1, -1, " 23 ", " 23 ");
+ scrollTest(1, 2, -1, " 23 ", " 3 ");
+ scrollTest(5, 1, -1, " 23 ", " 23 ");
+ scrollTest(5, 1, -1, " 23 ", " 23 ");
+ }
+
+ @Override
+ public void testScrollAll() {
+ scrollTest(0, 6, 1, " 2345", " 2 ");
+ scrollTest(0, 6, -1, " 2345", " 3 ");
+ scrollTest(0, 6, 2, " 2345", " ");
+ scrollTest(0, 6, -2, " 2345", " ");
+ }
+
+ @Override
+ public void testCopyLineWithOffset() {
+ ITerminalTextData term = makeITerminalTextData();
+ String s = "111\n" + "222\n" + "333\n" + "444\n" + "555";
+ fill(term, s);
+ ITerminalTextData dest = makeITerminalTextData();
+ String sCopy = "aaa\n" + "bbb\n" + "ccc\n" + "ddd\n" + "eee";
+ fill(dest, sCopy);
+ copySelective(dest, term, 1, 0, new boolean[] { true, false, false, true });
+ assertEqualsTerm(s, toMultiLineText(term));
+ assertEqualsTerm("222\n" + "bbb\n" + "ccc\n" + "\00\00\00\n" + "eee", toMultiLineText(dest));
+
+ fill(dest, sCopy);
+ copySelective(dest, term, 2, 0, new boolean[] { true, true });
+ assertEqualsTerm(s, toMultiLineText(term));
+ assertEqualsTerm("333\n" + "444\n" + "ccc\n" + "ddd\n" + "eee", toMultiLineText(dest));
+
+ fill(dest, sCopy);
+ copySelective(dest, term, 0, 0, new boolean[] { true, true, true, true, true });
+ assertEqualsTerm(s, toMultiLineText(term));
+ assertEqualsTerm(s, toMultiLineText(dest));
+
+ fill(dest, sCopy);
+ copySelective(dest, term, 0, 0, new boolean[] { false, false, false, false, false });
+ assertEqualsTerm(s, toMultiLineText(term));
+ assertEqualsTerm(sCopy, toMultiLineText(dest));
+ }
+
+ public void testCopy() {
+ ITerminalTextData term = makeITerminalTextData();
+ term.setDimensions(3, 1);
+ ITerminalTextData data = new TerminalTextData();
+ fillSimple(data, "abcd");
+ term.copy(data);
+ }
+
+ @Override
+ public void testWrappedLines() {
+ ITerminalTextData term = makeITerminalTextData();
+ term.setDimensions(4, 4);
+ for (int i = 0; i < term.getHeight(); ++i)
+ assertFalse(term.isWrappedLine(i));
+ term.setWrappedLine(0); // outside window
+ term.setWrappedLine(3);
+ assertFalse(term.isWrappedLine(0));
+ assertFalse(term.isWrappedLine(1));
+ assertFalse(term.isWrappedLine(2));
+ assertTrue(term.isWrappedLine(3));
+ term.cleanLine(3);
+ assertFalse(term.isWrappedLine(3));
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextTestHelper.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextTestHelper.java
new file mode 100644
index 00000000000..205d304614f
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextTestHelper.java
@@ -0,0 +1,113 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ * Martin Oberhuber (Wind River) - [168197] Fix Terminal for CDC-1.1/Foundation-1.1
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.model;
+
+import org.eclipse.tm.terminal.model.ITerminalTextData;
+import org.eclipse.tm.terminal.model.ITerminalTextDataReadOnly;
+import org.eclipse.tm.terminal.model.TerminalStyle;
+
+public class TerminalTextTestHelper {
+ static public String toSimple(ITerminalTextDataReadOnly term) {
+ return toSimple(toMultiLineText(term));
+ }
+
+ static public String toMultiLineText(ITerminalTextDataReadOnly term) {
+ StringBuffer buff = new StringBuffer();
+ int width = term.getWidth();
+ for (int line = 0; line < term.getHeight(); line++) {
+ if (line > 0)
+ buff.append("\n"); //$NON-NLS-1$
+ for (int column = 0; column < width; column++) {
+ buff.append(term.getChar(line, column));
+ }
+ }
+ return buff.toString();
+ }
+
+ static public String toSimple(String str) {
+ //return str.replaceAll("\000", " ").replaceAll("\n", "");
+ // <J2ME CDC-1.1 Foundation-1.1 variant>
+ StringBuffer buf = new StringBuffer(str.length());
+ for (int i = 0; i < str.length(); i++) {
+ char c = str.charAt(i);
+ switch (c) {
+ case '\000':
+ buf.append(' ');
+ break;
+ case '\n':
+ break;
+ default:
+ buf.append(c);
+ break;
+ }
+ }
+ return buf.toString();
+ // </J2ME CDC-1.1 Foundation-1.1 variant>
+ }
+
+ /**
+ * @param term
+ * @param s each character is one line
+ */
+ static public void fillSimple(ITerminalTextData term, String s) {
+ TerminalStyle style = TerminalStyle.getDefaultStyle();
+ term.setDimensions(s.length(), 1);
+ for (int i = 0; i < s.length(); i++) {
+ char c = s.charAt(i);
+ term.setChar(i, 0, c, style.setForeground(c));
+ }
+ }
+
+ /**
+ * @param term
+ * @param s lines separated by \n. The terminal will automatically
+ * resized to fit the text.
+ */
+ static public void fill(ITerminalTextData term, String s) {
+ int width = 0;
+ int len = 0;
+ int height = 0;
+ for (int i = 0; i < s.length(); i++) {
+ char c = s.charAt(i);
+ if (c == '\n') {
+ width = Math.max(width, len);
+ len = 0;
+ } else {
+ if (len == 0)
+ height++;
+ len++;
+ }
+ }
+ width = Math.max(width, len);
+ term.setDimensions(height, width);
+ fill(term, 0, 0, s);
+ }
+
+ static public void fill(ITerminalTextData term, int column, int line, String s) {
+ int xx = column;
+ int yy = line;
+ TerminalStyle style = TerminalStyle.getDefaultStyle();
+ for (int i = 0; i < s.length(); i++) {
+ char c = s.charAt(i);
+ if (c == '\n') {
+ yy++;
+ xx = column;
+ } else {
+ term.setChar(yy, xx, c, style.setForeground(c));
+ xx++;
+ }
+ }
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/speedtest/SpeedTestConnection.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/speedtest/SpeedTestConnection.java
new file mode 100644
index 00000000000..27f00fc404e
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/speedtest/SpeedTestConnection.java
@@ -0,0 +1,120 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.speedtest;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl;
+import org.eclipse.tm.internal.terminal.provisional.api.Logger;
+import org.eclipse.tm.internal.terminal.provisional.api.TerminalState;
+
+public class SpeedTestConnection extends Thread {
+ private static int fgNo;
+ private final ITerminalControl fControl;
+ private final InputStream fInputStream;
+ private final SpeedTestSettings fSettings;
+
+ protected SpeedTestConnection(InputStream inputStream, SpeedTestSettings settings, ITerminalControl control) {
+ super("SpeedTestConnection-" + fgNo++);
+ fControl = control;
+ fInputStream = inputStream;
+ fSettings = settings;
+ }
+
+ @Override
+ public void run() {
+ fControl.setState(TerminalState.CONNECTED);
+
+ try {
+ readDataForever(fInputStream, fControl.getRemoteToTerminalOutputStream());
+ } catch (IOException e) {
+ connectFailed(e.getMessage(), e.getMessage());
+ }
+ // when reading is done, we set the state to closed
+ fControl.setState(TerminalState.CLOSED);
+ }
+
+ private void connectFailed(String terminalText, String msg) {
+ Logger.log(terminalText);
+ fControl.displayTextInTerminal(terminalText);
+ fControl.setState(TerminalState.CLOSED);
+ fControl.setMsg(msg);
+ }
+
+ /**
+ * Read the data from the input file and display it in the terminal.
+ * @param in
+ * @throws IOException
+ */
+ private void readDataForever(InputStream in, OutputStream os) throws IOException {
+ long N = 0;
+ long T = 0;
+ long tDisplay = 0;
+ int NCalls = 0;
+ int bufferSize = fSettings.getBufferSize();
+ int throttle = fSettings.getThrottle();
+ // read the data
+ BufferedReader reader = new BufferedReader(new InputStreamReader(in));
+ // read until the thread gets interrupted....
+ String info = "";
+ int n = 0;
+ byte[] crnl = "\r\n".getBytes("UTF-8");
+ long t0 = System.currentTimeMillis();
+ String line = null;
+ do {
+ line = reader.readLine();
+
+ // read some bytes
+ if (line != null) {
+ os.write(line.getBytes("UTF-8"));
+ os.write(crnl);
+ n += line.length();
+ }
+ // process at least this number of characters to update the UI
+ if (line == null || n > bufferSize) {
+ if (throttle > 0)
+ sleep(throttle);
+ // we assume we get ASCII UTF8 bytes
+ long t = System.currentTimeMillis();
+ T += t - t0;
+ N += n;
+ NCalls++;
+ if (t - tDisplay > 1000 && T > 0) {
+ long rate = (1000 * N) / T;
+ info = rate + " byte/s = " + rate * 8 + " baud " + "bytes/call=" + N / NCalls;
+ info = rate + " byte/s with buffer size " + fSettings.getBufferSize();
+ setTitle(info);
+ tDisplay = System.currentTimeMillis();
+ }
+ n = 0;
+ t0 = System.currentTimeMillis();
+ }
+ } while (line != null);
+ }
+
+ private void sleep(int ms) {
+ try {
+ Thread.sleep(ms);
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ }
+ }
+
+ private void setTitle(final String title) {
+ Display.getDefault().asyncExec(() -> fControl.setTerminalTitle(title));
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/speedtest/SpeedTestConnector.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/speedtest/SpeedTestConnector.java
new file mode 100644
index 00000000000..f27da80a7ee
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/speedtest/SpeedTestConnector.java
@@ -0,0 +1,113 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ * Martin Oberhuber (Wind River) - [225853][api] Provide more default functionality in TerminalConnectorImpl
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.speedtest;
+
+import java.io.BufferedInputStream;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.InputStream;
+import java.io.OutputStream;
+
+import org.eclipse.tm.internal.terminal.provisional.api.ISettingsStore;
+import org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl;
+import org.eclipse.tm.internal.terminal.provisional.api.Logger;
+import org.eclipse.tm.internal.terminal.provisional.api.NullSettingsStore;
+import org.eclipse.tm.internal.terminal.provisional.api.TerminalState;
+import org.eclipse.tm.internal.terminal.provisional.api.provider.TerminalConnectorImpl;
+
+public class SpeedTestConnector extends TerminalConnectorImpl {
+ final SpeedTestSettings fSettings = new SpeedTestSettings();
+ InputStream fInputStream;
+ OutputStream fOutputStream;
+ SpeedTestConnection fConnection;
+
+ public SpeedTestConnector() {
+ }
+
+ @Override
+ synchronized public void connect(ITerminalControl control) {
+ super.connect(control);
+ fControl.setState(TerminalState.CONNECTING);
+ String file = fSettings.getInputFile();
+ try {
+ fInputStream = new BufferedInputStream(new FileInputStream(file));
+ } catch (FileNotFoundException e) {
+ disconnect();
+ fControl.setMsg(file + ": " + e.getLocalizedMessage());
+ return;
+ }
+ fOutputStream = System.out;
+ fControl.setTerminalTitle(fSettings.getInputFile());
+ fConnection = new SpeedTestConnection(fInputStream, fSettings, fControl);
+ fConnection.start();
+ }
+
+ @Override
+ synchronized public void doDisconnect() {
+ if (fConnection != null) {
+ fConnection.interrupt();
+ fConnection = null;
+ }
+ if (fInputStream != null) {
+ try {
+ fInputStream.close();
+ } catch (Exception exception) {
+ Logger.logException(exception);
+ }
+ }
+ fInputStream = null;
+ if (fOutputStream != null) {
+ try {
+ fOutputStream.close();
+ } catch (Exception exception) {
+ Logger.logException(exception);
+ }
+ }
+ fOutputStream = null;
+ }
+
+ synchronized public InputStream getInputStream() {
+ return fInputStream;
+ }
+
+ @Override
+ synchronized public OutputStream getTerminalToRemoteStream() {
+ return fOutputStream;
+ }
+
+ @Override
+ public String getSettingsSummary() {
+ return fSettings.getInputFile();
+ }
+
+ @Override
+ public void setDefaultSettings() {
+ fSettings.load(new NullSettingsStore());
+ }
+
+ @Override
+ public void load(ISettingsStore store) {
+ fSettings.load(store);
+ }
+
+ @Override
+ public void save(ISettingsStore store) {
+ fSettings.save(store);
+ }
+
+ @Override
+ public void setTerminalSize(int newWidth, int newHeight) {
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/speedtest/SpeedTestSettings.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/speedtest/SpeedTestSettings.java
new file mode 100644
index 00000000000..8283cf4a927
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/speedtest/SpeedTestSettings.java
@@ -0,0 +1,71 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.speedtest;
+
+import org.eclipse.tm.internal.terminal.provisional.api.ISettingsStore;
+
+public class SpeedTestSettings {
+ String fInputFile = "";
+ String fBufferSize = "";
+ String fThrottle;
+
+ String getInputFile() {
+ return fInputFile;
+ }
+
+ public String getBufferSizeString() {
+ return getBufferSize() + "";
+ }
+
+ public void setBufferSizeString(String bufferSize) {
+ fBufferSize = bufferSize;
+ }
+
+ public int getBufferSize() {
+ try {
+ return Integer.parseInt(fBufferSize);
+ } catch (RuntimeException e) {
+ return 1024;
+ }
+ }
+
+ void setInputFile(String testFile) {
+ fInputFile = testFile;
+ }
+
+ public void load(ISettingsStore store) {
+ fInputFile = store.get("inputFile", "");
+ fBufferSize = store.get("bufferSize", "");
+ fThrottle = store.get("throttle", "0");
+ }
+
+ public void save(ISettingsStore store) {
+ store.put("inputFile", fInputFile);
+ store.put("bufferSize", fBufferSize);
+ store.put("throttle", fThrottle);
+ }
+
+ public String getThrottleString() {
+ return fThrottle;
+ }
+
+ public int getThrottle() {
+ try {
+ return Integer.parseInt(fThrottle);
+ } catch (RuntimeException e) {
+ return 0;
+ }
+ }
+
+ public void setThrottleString(String throttle) {
+ fThrottle = throttle;
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/terminalcanvas/Main.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/terminalcanvas/Main.java
new file mode 100644
index 00000000000..fd1061db108
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/terminalcanvas/Main.java
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.test.terminalcanvas;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
+
+public class Main {
+
+ /**
+ * @param args
+ */
+ public static void main(String[] args) {
+ Display display = new Display();
+ Shell shell = new Shell(display);
+ shell.setLayout(new FillLayout());
+ new TerminalTextCanvas(shell, SWT.NONE);
+ shell.setSize(200, 150);
+ shell.open();
+ while (!shell.isDisposed()) {
+ if (!display.readAndDispatch())
+ display.sleep();
+ }
+ display.dispose();
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/terminalcanvas/Snippet48.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/terminalcanvas/Snippet48.java
new file mode 100644
index 00000000000..5bd030dc582
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/terminalcanvas/Snippet48.java
@@ -0,0 +1,112 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.test.terminalcanvas;
+
+/*
+ * Canvas example snippet: scroll an image (flicker free, no double buffering)
+ *
+ * For a list of all SWT example snippets see
+ * http://www.eclipse.org/swt/snippets/
+ */
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.widgets.Canvas;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.FileDialog;
+import org.eclipse.swt.widgets.ScrollBar;
+import org.eclipse.swt.widgets.Shell;
+
+public class Snippet48 {
+
+ public static void main(String[] args) {
+ Display display = new Display();
+ Shell shell = new Shell(display);
+ shell.setLayout(new FillLayout());
+ Image originalImage = null;
+ FileDialog dialog = new FileDialog(shell, SWT.OPEN);
+ dialog.setText("Open an image file or cancel");
+ String string = dialog.open();
+ if (string != null) {
+ originalImage = new Image(display, string);
+ }
+ final Image image = originalImage;
+ final Point origin = new Point(0, 0);
+ final Canvas canvas = new Canvas(shell, SWT.NO_BACKGROUND | SWT.NO_REDRAW_RESIZE | SWT.V_SCROLL | SWT.H_SCROLL);
+ final ScrollBar hBar = canvas.getHorizontalBar();
+ hBar.addListener(SWT.Selection, e -> {
+ int hSelection = hBar.getSelection();
+ int destX = -hSelection - origin.x;
+ Rectangle rect = image.getBounds();
+ canvas.scroll(destX, 0, 0, 0, rect.width, rect.height, false);
+ origin.x = -hSelection;
+ });
+ final ScrollBar vBar = canvas.getVerticalBar();
+ vBar.addListener(SWT.Selection, e -> {
+ int vSelection = vBar.getSelection();
+ int destY = -vSelection - origin.y;
+ Rectangle rect = image.getBounds();
+ canvas.scroll(0, destY, 0, 0, rect.width, rect.height, false);
+ origin.y = -vSelection;
+ });
+ canvas.addListener(SWT.Resize, e -> {
+ Rectangle rect = image.getBounds();
+ Rectangle client = canvas.getClientArea();
+ hBar.setMaximum(rect.width);
+ vBar.setMaximum(rect.height);
+ hBar.setThumb(Math.min(rect.width, client.width));
+ vBar.setThumb(Math.min(rect.height, client.height));
+ int hPage = rect.width - client.width;
+ int vPage = rect.height - client.height;
+ int hSelection = hBar.getSelection();
+ int vSelection = vBar.getSelection();
+ if (hSelection >= hPage) {
+ if (hPage <= 0)
+ hSelection = 0;
+ origin.x = -hSelection;
+ }
+ if (vSelection >= vPage) {
+ if (vPage <= 0)
+ vSelection = 0;
+ origin.y = -vSelection;
+ }
+ canvas.redraw();
+ });
+ canvas.addListener(SWT.Paint, e -> {
+ GC gc = e.gc;
+ gc.drawImage(image, origin.x, origin.y);
+ Rectangle rect = image.getBounds();
+ Rectangle client = canvas.getClientArea();
+ int marginWidth = client.width - rect.width;
+ if (marginWidth > 0) {
+ gc.fillRectangle(rect.width, 0, marginWidth, client.height);
+ }
+ int marginHeight = client.height - rect.height;
+ if (marginHeight > 0) {
+ gc.fillRectangle(0, rect.height, client.width, marginHeight);
+ }
+ });
+ shell.setSize(200, 150);
+ shell.open();
+ while (!shell.isDisposed()) {
+ if (!display.readAndDispatch())
+ display.sleep();
+ }
+ originalImage.dispose();
+ display.dispose();
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/terminalcanvas/TerminalTextCanvas.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/terminalcanvas/TerminalTextCanvas.java
new file mode 100644
index 00000000000..13f6dd07678
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/terminalcanvas/TerminalTextCanvas.java
@@ -0,0 +1,96 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.test.terminalcanvas;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.widgets.Canvas;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.FileDialog;
+import org.eclipse.swt.widgets.ScrollBar;
+
+public class TerminalTextCanvas extends Canvas {
+ Image image;
+ Point origin = new Point(0, 0);
+
+ public TerminalTextCanvas(Composite parent, int style) {
+ super(parent, SWT.NO_BACKGROUND | SWT.NO_REDRAW_RESIZE | SWT.V_SCROLL | SWT.H_SCROLL | style);
+ loadImage(parent);
+
+ final ScrollBar hBar = getHorizontalBar();
+ hBar.addListener(SWT.Selection, e -> {
+ int hSelection = hBar.getSelection();
+ int destX = -hSelection - origin.x;
+ Rectangle rect = image.getBounds();
+ scroll(destX, 0, 0, 0, rect.width, rect.height, false);
+ origin.x = -hSelection;
+ });
+ final ScrollBar vBar = getVerticalBar();
+ vBar.addListener(SWT.Selection, e -> {
+ int vSelection = vBar.getSelection();
+ int destY = -vSelection - origin.y;
+ Rectangle rect = image.getBounds();
+ scroll(0, destY, 0, 0, rect.width, rect.height, false);
+ origin.y = -vSelection;
+ });
+ addListener(SWT.Resize, e -> {
+ Rectangle rect = image.getBounds();
+ Rectangle client = getClientArea();
+ hBar.setMaximum(rect.width);
+ vBar.setMaximum(rect.height);
+ hBar.setThumb(Math.min(rect.width, client.width));
+ vBar.setThumb(Math.min(rect.height, client.height));
+ int hPage = rect.width - client.width;
+ int vPage = rect.height - client.height;
+ int hSelection = hBar.getSelection();
+ int vSelection = vBar.getSelection();
+ if (hSelection >= hPage) {
+ if (hPage <= 0)
+ hSelection = 0;
+ origin.x = -hSelection;
+ }
+ if (vSelection >= vPage) {
+ if (vPage <= 0)
+ vSelection = 0;
+ origin.y = -vSelection;
+ }
+ redraw();
+ });
+ addListener(SWT.Paint, e -> {
+ GC gc = e.gc;
+ System.out.println(gc.getClipping() + " " + origin);
+ gc.drawImage(image, origin.x, origin.y);
+ Rectangle rect = image.getBounds();
+ Rectangle client = getClientArea();
+ int marginWidth = client.width - rect.width;
+ if (marginWidth > 0) {
+ gc.fillRectangle(rect.width, 0, marginWidth, client.height);
+ }
+ int marginHeight = client.height - rect.height;
+ if (marginHeight > 0) {
+ gc.fillRectangle(0, rect.height, client.width, marginHeight);
+ }
+ });
+ }
+
+ private void loadImage(Composite parent) {
+ FileDialog dialog = new FileDialog(parent.getShell(), SWT.OPEN);
+ dialog.setText("Open an image file or cancel");
+ String string = dialog.open();
+ if (string != null) {
+ image = new Image(getDisplay(), string);
+ }
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/terminalcanvas/VirtualCanvas.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/terminalcanvas/VirtualCanvas.java
new file mode 100644
index 00000000000..ed610faa10a
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/terminalcanvas/VirtualCanvas.java
@@ -0,0 +1,330 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.test.terminalcanvas;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.widgets.Canvas;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.ScrollBar;
+
+/**
+ * A <code>Canvas</code> showing a virtual object.
+ * Virtual: the extent of the total canvas.
+ * Screen: the visible client area in the screen.
+ */
+public abstract class VirtualCanvas extends Canvas {
+
+ private final Rectangle fVirtualBounds = new Rectangle(0, 0, 0, 0);
+ private Rectangle fClientArea;
+ private GC fPaintGC = null;
+
+ public VirtualCanvas(Composite parent, int style) {
+ super(parent, style | SWT.NO_BACKGROUND | SWT.NO_REDRAW_RESIZE);
+ fPaintGC = new GC(this);
+ addListener(SWT.Paint, event -> paint(event.gc));
+ addListener(SWT.Resize, event -> {
+ fClientArea = getClientArea();
+ updateViewRectangle();
+ });
+ getVerticalBar().addListener(SWT.Selection, e -> {
+ scrollY((ScrollBar) e.widget);
+ postScrollEventHandling(e);
+
+ });
+ getHorizontalBar().addListener(SWT.Selection, e -> {
+ scrollX((ScrollBar) e.widget);
+ postScrollEventHandling(e);
+
+ });
+ addDisposeListener(e -> {
+ if (fPaintGC != null) {
+ fPaintGC.dispose();
+ fPaintGC = null;
+ }
+ });
+ }
+
+ public void setAutoSelect(boolean on) {
+ }
+
+ public boolean hasAutoSelect() {
+ return false;
+ }
+
+ public void doAutoSelect() {
+ }
+
+ /** HACK: run an event loop if the scrollbar is dragged...*/
+ private void postScrollEventHandling(Event e) {
+ if (true && e.detail == SWT.DRAG) {
+ // TODO check if this is always ok???
+ // used to process runnables while scrolling
+ // This fixes the update problems when scrolling!
+ // see: https://bugs.eclipse.org/bugs/show_bug.cgi?id=47582#5
+ // TODO investigate:
+ // The alternative is to call redraw on the new visible area
+ // redraw(expose.x, expose.y, expose.width, expose.height, true);
+
+ while (!getDisplay().isDisposed() && getDisplay().readAndDispatch()) {
+ // do nothing here...
+ }
+ }
+ }
+
+ protected void scrollX(ScrollBar hBar) {
+ int hSelection = hBar.getSelection();
+ int destX = -hSelection - fVirtualBounds.x;
+ fVirtualBounds.x = -hSelection;
+ scrollSmart(destX, 0);
+ updateViewRectangle();
+ }
+
+ protected void scrollXDelta(int delta) {
+ getHorizontalBar().setSelection(-fVirtualBounds.x + delta);
+ scrollX(getHorizontalBar());
+ }
+
+ protected void scrollY(ScrollBar vBar) {
+ int vSelection = vBar.getSelection();
+ int destY = -vSelection - fVirtualBounds.y;
+ fVirtualBounds.y = -vSelection;
+ scrollSmart(0, destY);
+ updateViewRectangle();
+
+ }
+
+ protected void scrollYDelta(int delta) {
+ getVerticalBar().setSelection(-fVirtualBounds.y + delta);
+ scrollY(getVerticalBar());
+ }
+
+ private void scrollSmart(int deltaX, int deltaY) {
+ Rectangle rect = getBounds();
+ scroll(deltaX, deltaY, 0, 0, rect.width, rect.height, false);
+ }
+
+ protected void revealRect(Rectangle rect) {
+ Rectangle visibleRect = getScreenRectInVirtualSpace();
+ // scroll the X part
+ int deltaX = 0;
+ if (rect.x < visibleRect.x) {
+ deltaX = rect.x - visibleRect.x;
+ } else if (visibleRect.x + visibleRect.width < rect.x + rect.width) {
+ deltaX = (rect.x + rect.width) - (visibleRect.x + visibleRect.width);
+ }
+ if (deltaX != 0) {
+ getHorizontalBar().setSelection(-fVirtualBounds.x + deltaX);
+ scrollX(getHorizontalBar());
+ }
+
+ // scroll the Y part
+ int deltaY = 0;
+ if (rect.y < visibleRect.y) {
+ deltaY = rect.y - visibleRect.y;
+ } else if (visibleRect.y + visibleRect.height < rect.y + rect.height) {
+ deltaY = (rect.y + rect.height) - (visibleRect.y + visibleRect.height);
+
+ }
+ if (deltaY != 0) {
+ getVerticalBar().setSelection(-fVirtualBounds.y + deltaY);
+ scrollY(getVerticalBar());
+ }
+ }
+
+ protected void repaint(Rectangle r) {
+ if (fPaintGC != null) {
+ if (inClipping(r, fClientArea)) {
+ fPaintGC.setClipping(r);
+ paint(fPaintGC);
+ }
+ }
+ }
+
+ /**
+ * @param gc
+ */
+ abstract protected void paint(GC gc);
+
+ protected Color getBackgroundCanvasColor() {
+ return getDisplay().getSystemColor(SWT.COLOR_LIST_BACKGROUND);
+ }
+
+ protected void paintUnoccupiedSpace(GC gc, Rectangle clipping) {
+ int width = fVirtualBounds.width;
+ int height = fVirtualBounds.height;
+ int marginWidth = (clipping.x + clipping.width) - width;
+ int marginHeight = (clipping.y + clipping.height) - height;
+ if (marginWidth > 0 || marginHeight > 0) {
+ Color bg = getBackground();
+ gc.setBackground(getBackgroundCanvasColor());
+ if (marginWidth > 0) {
+ gc.fillRectangle(width, clipping.y, marginWidth, clipping.height);
+ }
+ if (marginHeight > 0) {
+ gc.fillRectangle(clipping.x, height, clipping.width, marginHeight);
+ }
+ gc.setBackground(bg);
+ }
+ }
+
+ /**
+ * @private
+ */
+ protected boolean inClipping(Rectangle clipping, Rectangle r) {
+ // TODO check if this is OK in all cases (the <=!)
+ //
+ if (r.x + r.width <= clipping.x)
+ return false;
+ if (clipping.x + clipping.width <= r.x)
+ return false;
+ if (r.y + r.height <= clipping.y)
+ return false;
+ if (clipping.y + clipping.height <= r.y)
+ return false;
+
+ return true;
+ }
+
+ /**
+ * @return the screen rect in virtual space (starting with (0,0))
+ * of the visible screen. (x,y>=0)
+ */
+ protected Rectangle getScreenRectInVirtualSpace() {
+ return new Rectangle(fClientArea.x - fVirtualBounds.x, fClientArea.y - fVirtualBounds.y, fClientArea.width,
+ fClientArea.height);
+ }
+
+ /**
+ * @return the rect in virtual space (starting with (0,0))
+ * of the visible screen. (x,y>=0)
+ */
+ protected Rectangle getRectInVirtualSpace(Rectangle r) {
+ return new Rectangle(r.x - fVirtualBounds.x, r.y - fVirtualBounds.y, r.width, r.height);
+ }
+
+ /**
+ * Sets the extend of the virtual dieplay ares
+ * @param width
+ * @param height
+ */
+ protected void setVirtualExtend(int width, int height) {
+ fVirtualBounds.width = width;
+ fVirtualBounds.height = height;
+ updateScrollbars();
+ updateViewRectangle();
+ }
+
+ /**
+ * sets the scrolling origin. Also sets the scrollbars.
+ * Does NOT redraw!
+ * Use negative values (move the virtual origin to the top left
+ * to see something in the screen (which is located at (0,0))
+ * @param x
+ * @param y
+ */
+ protected void setVirtualOrigin(int x, int y) {
+ fVirtualBounds.x = x;
+ fVirtualBounds.y = y;
+ getHorizontalBar().setSelection(x);
+ getVerticalBar().setSelection(y);
+ updateViewRectangle();
+ }
+
+ /**
+ * @param x
+ * @return the virtual coordinate in scree space
+ */
+ protected int virtualXtoScreen(int x) {
+ return x + fVirtualBounds.x;
+ }
+
+ protected int virtualYtoScreen(int y) {
+ return y + fVirtualBounds.y;
+ }
+
+ protected int screenXtoVirtual(int x) {
+ return x - fVirtualBounds.x;
+ }
+
+ protected int screenYtoVirtual(int y) {
+ return y - fVirtualBounds.y;
+ }
+
+ /** called when the viewed part is changing */
+ private final Rectangle fViewRectangle = new Rectangle(0, 0, 0, 0);
+
+ void updateViewRectangle() {
+ if (fViewRectangle.x == -fVirtualBounds.x && fViewRectangle.y == -fVirtualBounds.y
+ && fViewRectangle.width == fClientArea.width && fViewRectangle.height == fClientArea.height)
+ return;
+ fViewRectangle.x = -fVirtualBounds.x;
+ fViewRectangle.y = -fVirtualBounds.y;
+ fViewRectangle.width = fClientArea.width;
+ fViewRectangle.height = fClientArea.height;
+ viewRectangleChanged(fViewRectangle.x, fViewRectangle.y, fViewRectangle.width, fViewRectangle.height);
+ }
+
+ protected Rectangle getViewRectangle() {
+ return fViewRectangle;
+ }
+
+ /**
+ * Called when the viewed part has changed.
+ * Override when you need this information....
+ * Is only called if the values change!
+ * @param x visible in virtual space
+ * @param y visible in virtual space
+ * @param width
+ * @param height
+ */
+ protected void viewRectangleChanged(int x, int y, int width, int height) {
+ // System.out.println(x+" "+y+" "+width+" "+height);
+ }
+
+ /**
+ * @private
+ */
+ private void updateScrollbars() {
+ Point size = getSize();
+ Rectangle clientArea = getClientArea();
+
+ ScrollBar horizontal = getHorizontalBar();
+ if (fVirtualBounds.width <= clientArea.width) {
+ // TODO IMPORTANT in ScrollBar.setVisible comment out the line
+ // that checks 'isvisible' and returns (at the beginning)
+ horizontal.setVisible(false);
+ horizontal.setSelection(0);
+ } else {
+ horizontal.setPageIncrement(clientArea.width - horizontal.getIncrement());
+ int max = fVirtualBounds.width + (size.x - clientArea.width);
+ horizontal.setMaximum(max);
+ horizontal.setThumb(size.x > max ? max : size.x);
+ horizontal.setVisible(true);
+ }
+
+ ScrollBar vertical = getVerticalBar();
+ if (fVirtualBounds.height <= clientArea.height) {
+ vertical.setVisible(false);
+ vertical.setSelection(0);
+ } else {
+ vertical.setPageIncrement(clientArea.height - vertical.getIncrement());
+ int max = fVirtualBounds.height + (size.y - clientArea.height);
+ vertical.setMaximum(max);
+ vertical.setThumb(size.y > max ? max : size.y);
+ vertical.setVisible(true);
+ }
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/AbstractLineOrientedDataSource.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/AbstractLineOrientedDataSource.java
new file mode 100644
index 00000000000..923b7f8387c
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/AbstractLineOrientedDataSource.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.test.ui;
+
+import org.eclipse.tm.terminal.model.ITerminalTextData;
+import org.eclipse.tm.terminal.model.TerminalStyle;
+
+/**
+ * Adds line by line
+ *
+ */
+abstract class AbstractLineOrientedDataSource implements IDataSource {
+ abstract public char[] dataSource();
+
+ abstract public TerminalStyle getStyle();
+
+ abstract public void next();
+
+ @Override
+ public int step(ITerminalTextData terminal) {
+ next();
+ char[] chars = dataSource();
+ TerminalStyle style = getStyle();
+ int len;
+ // keep the synchronized block short!
+ synchronized (terminal) {
+ terminal.addLine();
+ len = Math.min(terminal.getWidth(), chars.length);
+ int line = terminal.getHeight() - 1;
+ terminal.setChars(line, 0, chars, 0, len, style);
+ terminal.setCursorLine(line);
+ terminal.setCursorColumn(len - 1);
+ }
+ return len;
+ }
+} \ No newline at end of file
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/DataReader.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/DataReader.java
new file mode 100644
index 00000000000..f40ea9c4875
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/DataReader.java
@@ -0,0 +1,99 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.test.ui;
+
+import org.eclipse.tm.terminal.model.ITerminalTextData;
+
+class DataReader implements Runnable {
+ final Thread fThread;
+ final IDataSource fDataSource;
+ final ITerminalTextData fTerminal;
+ volatile boolean fStart;
+ volatile boolean fStop;
+ volatile int fThrottleTime;
+ final IStatus fStatus;
+ final String fName;
+
+ DataReader(String name, ITerminalTextData terminal, IDataSource dataSource, IStatus status) {
+ fStatus = status;
+ fName = name;
+ fTerminal = terminal;
+ fDataSource = dataSource;
+ fThread = new Thread(this, name);
+ fThread.setDaemon(true);
+ fThread.start();
+ }
+
+ @Override
+ public void run() {
+ long t0 = System.currentTimeMillis() - 1;
+ long c = 0;
+ int lines = 0;
+ while (!Thread.interrupted()) {
+ while (!fStart || fStop) {
+ sleep(1);
+ }
+ if (fThrottleTime > 0)
+ sleep(fThrottleTime);
+ // synchronize because we have to be sure the size does not change while
+ // we add lines
+ int len = fDataSource.step(fTerminal);
+ // keep the synchronized block short!
+ c += len;
+ lines++;
+ if ((fThrottleTime > 0 || (lines % 100 == 0)) && (System.currentTimeMillis() - t0) > 1000) {
+ long t = System.currentTimeMillis() - t0;
+ final String s = (c * 1000) / (t * 1024) + "kb/s " + (lines * 1000) / t + "lines/sec "
+ + (c * 1000 * 8) / t + " bits/s ";
+ fStatus.setStatus(s);
+ lines = 0;
+ t0 = System.currentTimeMillis();
+ c = 0;
+ }
+ }
+ }
+
+ public int getThrottleTime() {
+ return fThrottleTime;
+ }
+
+ public void setThrottleTime(int throttleTime) {
+ fThrottleTime = throttleTime;
+ }
+
+ private void sleep(int ms) {
+ try {
+ Thread.sleep(ms);
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ }
+ }
+
+ public boolean isStart() {
+ return fStart;
+ }
+
+ public void setStart(boolean start) {
+ fStart = start;
+ }
+
+ public String getName() {
+ return fName;
+ }
+
+ public boolean isStop() {
+ return fStop;
+ }
+
+ public void setStop(boolean stop) {
+ fStop = stop;
+ }
+} \ No newline at end of file
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/FastDataSource.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/FastDataSource.java
new file mode 100644
index 00000000000..a2b38d1e0ab
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/FastDataSource.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.test.ui;
+
+import org.eclipse.tm.terminal.model.TerminalStyle;
+
+final class FastDataSource extends AbstractLineOrientedDataSource {
+ char lines[][] = new char[][] {
+ "123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 ".toCharArray(),
+ "abcdefghi abcdefghi abcdefghi abcdefghi abcdefghi abcdefghi abcdefghi abcdefghi ".toCharArray(), };
+
+ int pos;
+
+ @Override
+ public char[] dataSource() {
+ return lines[pos % lines.length];
+ }
+
+ @Override
+ public TerminalStyle getStyle() {
+ return null;
+ }
+
+ @Override
+ public void next() {
+ pos++;
+ }
+} \ No newline at end of file
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/FileDataSource.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/FileDataSource.java
new file mode 100644
index 00000000000..669fe792c4e
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/FileDataSource.java
@@ -0,0 +1,74 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.test.ui;
+
+import java.io.BufferedReader;
+import java.io.FileReader;
+import java.io.IOException;
+
+import org.eclipse.tm.terminal.model.TerminalStyle;
+
+/**
+ * Reads the file in an infinite loop.
+ * Makes lines containing 'x' bold.
+ *
+ */
+final class FileDataSource extends AbstractLineOrientedDataSource {
+ private final String fFile;
+
+ BufferedReader reader;
+
+ String line;
+
+ TerminalStyle style;
+
+ TerminalStyle styleNormal = TerminalStyle.getDefaultStyle();
+
+ TerminalStyle styleBold = styleNormal.setBold(true);
+
+ FileDataSource(String file) {
+ fFile = file;
+ }
+
+ @Override
+ public char[] dataSource() {
+ return line.toCharArray();
+ }
+
+ @Override
+ public TerminalStyle getStyle() {
+ return style;
+ }
+
+ @Override
+ public void next() {
+ try {
+ if (reader == null)
+ reader = new BufferedReader(new FileReader(fFile));
+ line = reader.readLine();
+ if (line == null) {
+ reader.close();
+ reader = null;
+ // reopen the file
+ next();
+ return;
+ }
+ if (line.lastIndexOf('x') > 0)
+ style = styleBold;
+ else
+ style = styleNormal;
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ }
+} \ No newline at end of file
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/IDataSource.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/IDataSource.java
new file mode 100644
index 00000000000..93f25146100
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/IDataSource.java
@@ -0,0 +1,21 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.test.ui;
+
+import org.eclipse.tm.terminal.model.ITerminalTextData;
+
+interface IDataSource {
+ /**
+ * @param terminal
+ * @return number of characters changed
+ */
+ int step(ITerminalTextData terminal);
+} \ No newline at end of file
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/IStatus.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/IStatus.java
new file mode 100644
index 00000000000..02f8319878f
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/IStatus.java
@@ -0,0 +1,15 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.test.ui;
+
+public interface IStatus {
+ void setStatus(String message);
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/LineCountingDataSource.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/LineCountingDataSource.java
new file mode 100644
index 00000000000..5baef90f258
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/LineCountingDataSource.java
@@ -0,0 +1,45 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.test.ui;
+
+import static org.eclipse.tm.terminal.model.TerminalColor.BLACK;
+import static org.eclipse.tm.terminal.model.TerminalColor.BLUE;
+import static org.eclipse.tm.terminal.model.TerminalColor.RED;
+import static org.eclipse.tm.terminal.model.TerminalColor.YELLOW;
+
+import org.eclipse.tm.terminal.model.TerminalStyle;
+
+final class LineCountingDataSource extends AbstractLineOrientedDataSource {
+ TerminalStyle styleNormal = TerminalStyle.getStyle(BLACK, RED);
+
+ TerminalStyle styles[] = new TerminalStyle[] { styleNormal, styleNormal.setBold(true),
+ styleNormal.setForeground(BLUE), styleNormal.setForeground(YELLOW),
+ styleNormal.setBold(true).setUnderline(true), styleNormal.setReverse(true),
+ styleNormal.setReverse(true).setBold(true), styleNormal.setReverse(true).setUnderline(true) };
+
+ int pos;
+
+ @Override
+ public char[] dataSource() {
+ return (pos + " 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789")
+ .toCharArray();
+ }
+
+ @Override
+ public TerminalStyle getStyle() {
+ return styles[pos % styles.length];
+ }
+
+ @Override
+ public void next() {
+ pos++;
+ }
+} \ No newline at end of file
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/RandomDataSource.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/RandomDataSource.java
new file mode 100644
index 00000000000..a13bf7c3101
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/RandomDataSource.java
@@ -0,0 +1,48 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.test.ui;
+
+import static org.eclipse.tm.terminal.model.TerminalColor.BLACK;
+import static org.eclipse.tm.terminal.model.TerminalColor.GREEN;
+import static org.eclipse.tm.terminal.model.TerminalColor.RED;
+import static org.eclipse.tm.terminal.model.TerminalColor.YELLOW;
+
+import java.util.Random;
+
+import org.eclipse.tm.terminal.model.ITerminalTextData;
+import org.eclipse.tm.terminal.model.TerminalStyle;
+
+public class RandomDataSource implements IDataSource {
+ Random fRandom = new Random();
+ TerminalStyle styleNormal = TerminalStyle.getStyle(BLACK, GREEN);
+ TerminalStyle styles[] = new TerminalStyle[] { styleNormal, styleNormal.setBold(true),
+ styleNormal.setForeground(RED), styleNormal.setForeground(YELLOW),
+ styleNormal.setBold(true).setUnderline(true), styleNormal.setReverse(true),
+ styleNormal.setReverse(true).setBold(true), styleNormal.setReverse(true).setUnderline(true) };
+
+ @Override
+ public int step(ITerminalTextData terminal) {
+ int N = fRandom.nextInt(1000);
+ int h = terminal.getHeight();
+ int w = terminal.getWidth();
+ synchronized (terminal) {
+ for (int i = 0; i < N; i++) {
+ int line = fRandom.nextInt(h);
+ int col = fRandom.nextInt(w);
+ char c = (char) ('A' + fRandom.nextInt('z' - 'A'));
+ TerminalStyle style = styles[fRandom.nextInt(styles.length)];
+ terminal.setChar(line, col, c, style);
+ }
+ }
+ return N;
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/TerminalTextUITest.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/TerminalTextUITest.java
new file mode 100644
index 00000000000..483a1feaaee
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/TerminalTextUITest.java
@@ -0,0 +1,263 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.test.ui;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.layout.RowData;
+import org.eclipse.swt.layout.RowLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.tm.internal.terminal.textcanvas.ITextCanvasModel;
+import org.eclipse.tm.internal.terminal.textcanvas.PollingTextCanvasModel;
+import org.eclipse.tm.internal.terminal.textcanvas.TextCanvas;
+import org.eclipse.tm.internal.terminal.textcanvas.TextLineRenderer;
+import org.eclipse.tm.terminal.model.ITerminalTextData;
+import org.eclipse.tm.terminal.model.ITerminalTextDataSnapshot;
+import org.eclipse.tm.terminal.model.TerminalTextDataFactory;
+
+/**
+ * adjust columns when table gets resized....
+ *
+ */
+public class TerminalTextUITest {
+ static TextCanvas fgTextCanvas;
+ static ITextCanvasModel fgModel;
+ static ITerminalTextData fTerminalModel;
+ static Label fStatusLabel;
+ static volatile int fHeight;
+ static volatile int fWidth;
+ static DataReader fDataReader;
+ static List fDataReaders = new ArrayList();
+ private static Text heightText;
+
+ static class Status implements IStatus {
+ @Override
+ public void setStatus(final String s) {
+ if (!fStatusLabel.isDisposed())
+ Display.getDefault().asyncExec(() -> {
+ if (!fStatusLabel.isDisposed())
+ fStatusLabel.setText(s);
+ });
+ }
+
+ }
+
+ public static void main(String[] args) {
+ Display display = new Display();
+ Shell shell = new Shell(display);
+ shell.setLayout(new GridLayout());
+ Composite composite = new Composite(shell, SWT.NONE);
+ composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ RowLayout layout = new RowLayout(SWT.HORIZONTAL);
+ layout.wrap = true;
+ layout.fill = false;
+ fTerminalModel = TerminalTextDataFactory.makeTerminalTextData();
+ fHeight = 24;
+ fWidth = 80;
+ fTerminalModel.setDimensions(fHeight, fWidth);
+ fTerminalModel.setMaxHeight(fHeight);
+ ITerminalTextDataSnapshot snapshot = fTerminalModel.makeSnapshot();
+ // TODO how to get the initial size correctly!
+ snapshot.updateSnapshot(false);
+ fgModel = new PollingTextCanvasModel(snapshot);
+ fgTextCanvas = new TextCanvas(shell, fgModel, SWT.NONE, new TextLineRenderer(fgTextCanvas, fgModel));
+ fgTextCanvas.setLayoutData(new GridData(GridData.FILL_BOTH));
+
+ composite.setLayout(layout);
+ addAutorevealCursorButton(composite);
+ Text maxHeightText = addMaxHeightInput(composite);
+ addHeightInput(composite, maxHeightText);
+ addWidthText(composite);
+ Text throttleText = addThrottleText(composite);
+
+ IStatus status = new Status();
+ DataReader reader = new DataReader("Line Count", fTerminalModel, new LineCountingDataSource(), status);
+ addDataReader(composite, reader);
+ reader = new DataReader("Fast", fTerminalModel, new FastDataSource(), status);
+ addDataReader(composite, reader);
+ reader = new DataReader("Colors", fTerminalModel, new VT100DataSource(), status);
+ addDataReader(composite, reader);
+ reader = new DataReader("Random", fTerminalModel, new RandomDataSource(), status);
+ addDataReader(composite, reader);
+ for (int i = 0; i < args.length; i++) {
+ File file = new File(args[i]);
+ reader = new DataReader(file.getName(), fTerminalModel, new VT100DataSource(args[i]), status);
+ addDataReader(composite, reader);
+ }
+ addStopAllButton(composite, reader);
+
+ fStatusLabel = new Label(shell, SWT.NONE);
+ fStatusLabel.setLayoutData(new GridData(250, 15));
+ throttleText.setText("100");
+ setThrottleForAll(100);
+
+ if (args.length == 0)
+ addLabel(composite, "[Files can be added via commandline]");
+ shell.setSize(600, 300);
+ shell.open();
+ while (!shell.isDisposed()) {
+ if (!display.readAndDispatch())
+ display.sleep();
+ }
+ display.dispose();
+ }
+
+ private static Text addMaxHeightInput(Composite composite) {
+ addLabel(composite, "maxHeight:");
+ final Text maxHeightText = new Text(composite, SWT.BORDER);
+ setLayoutData(maxHeightText, 30);
+ maxHeightText.addModifyListener(e -> {
+ synchronized (fTerminalModel) {
+ int height = textToInt(maxHeightText);
+ if (height < 1)
+ return;
+ if (fTerminalModel.getHeight() > height) {
+ fTerminalModel.scroll(0, fTerminalModel.getHeight(), height - fTerminalModel.getHeight());
+ fTerminalModel.setDimensions(height, fTerminalModel.getWidth());
+ heightText.setText(height + "");
+ }
+ fTerminalModel.setMaxHeight(height);
+ }
+ });
+ maxHeightText.setText(fHeight + "");
+ return maxHeightText;
+ }
+
+ private static void addHeightInput(Composite composite, final Text maxHeightText) {
+ addLabel(composite, "heigth:");
+ heightText = new Text(composite, SWT.BORDER);
+ setLayoutData(heightText, 30);
+ heightText.addModifyListener(e -> {
+ synchronized (fTerminalModel) {
+ int height = textToInt(heightText);
+ if (height < 1)
+ return;
+ maxHeightText.setText("" + height);
+ fTerminalModel.setDimensions(height, fTerminalModel.getWidth());
+ fTerminalModel.setMaxHeight(height);
+ }
+ });
+ heightText.setText(fHeight + "");
+ }
+
+ private static Text addWidthText(Composite composite) {
+ addLabel(composite, "width:");
+ final Text widthText = new Text(composite, SWT.BORDER);
+ setLayoutData(widthText, 30);
+ widthText.addModifyListener(e -> {
+ synchronized (fTerminalModel) {
+ int width = textToInt(widthText);
+ if (width > 1)
+ fTerminalModel.setDimensions(fTerminalModel.getHeight(), width);
+ }
+ });
+ widthText.setText(fWidth + "");
+ return widthText;
+ }
+
+ private static Text addThrottleText(Composite composite) {
+ addLabel(composite, "throttle:");
+ final Text throttleText = new Text(composite, SWT.BORDER);
+ setLayoutData(throttleText, 30);
+ throttleText.addModifyListener(e -> {
+ synchronized (fTerminalModel) {
+ int throttle = textToInt(throttleText);
+ setThrottleForAll(throttle);
+ }
+ });
+ return throttleText;
+ }
+
+ private static void addStopAllButton(Composite composite, DataReader reader) {
+ final Button stopAllButton = new Button(composite, SWT.CHECK);
+ stopAllButton.setText("Stop ALL");
+ stopAllButton.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ boolean stop = stopAllButton.getSelection();
+ for (Iterator iterator = fDataReaders.iterator(); iterator.hasNext();) {
+ DataReader reader = (DataReader) iterator.next();
+ reader.setStop(stop);
+
+ }
+ }
+ });
+ stopAllButton.setSelection(reader.isStart());
+ }
+
+ private static void addAutorevealCursorButton(Composite composite) {
+ final Button button = new Button(composite, SWT.CHECK);
+ button.setText("ScrollLock");
+ button.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ boolean scrollLock = button.getSelection();
+ fgTextCanvas.setScrollLock(scrollLock);
+ }
+ });
+ button.setSelection(fgTextCanvas.isScrollLock());
+ }
+
+ private static void addLabel(Composite composite, String message) {
+ Label label;
+ label = new Label(composite, SWT.NONE);
+ label.setText(message);
+ }
+
+ private static void addDataReader(Composite composite, final DataReader reader) {
+ fDataReaders.add(reader);
+ final Button button = new Button(composite, SWT.CHECK);
+ button.setText(reader.getName());
+ button.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ reader.setStart(button.getSelection());
+ }
+ });
+ button.setSelection(reader.isStart());
+
+ }
+
+ static private void setThrottleForAll(int throttle) {
+ for (Iterator iterator = fDataReaders.iterator(); iterator.hasNext();) {
+ DataReader reader = (DataReader) iterator.next();
+ reader.setThrottleTime(throttle);
+ }
+ }
+
+ static void setLayoutData(Control c, int width) {
+ c.setLayoutData(new RowData(width, -1));
+ }
+
+ static int textToInt(Text text) {
+ try {
+ return Integer.valueOf(text.getText()).intValue();
+ } catch (Exception ex) {
+ return 0;
+ }
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/VT100DataSource.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/VT100DataSource.java
new file mode 100644
index 00000000000..e42d99c39f3
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/VT100DataSource.java
@@ -0,0 +1,239 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ * Martin Oberhuber (Wind River) - [204796] Terminal should allow setting the encoding to use
+ * Anton Leherbauer (Wind River) - [458398] Add support for normal/application cursor keys mode
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.test.ui;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.Reader;
+import java.nio.charset.StandardCharsets;
+
+import org.eclipse.tm.internal.terminal.control.impl.ITerminalControlForText;
+import org.eclipse.tm.internal.terminal.emulator.VT100Emulator;
+import org.eclipse.tm.internal.terminal.provisional.api.ITerminalConnector;
+import org.eclipse.tm.internal.terminal.provisional.api.TerminalState;
+import org.eclipse.tm.terminal.model.ITerminalTextData;
+
+/**
+ * Reads the file in an infinite loop.
+ * Makes lines containing 'x' bold.
+ *
+ */
+final class VT100DataSource implements IDataSource {
+ VT100Emulator fEmulator;
+ volatile int fAvailable;
+ volatile int fRead;
+ private final String fFile;
+ private final String fANSIEscapeColors;
+
+ VT100DataSource(String file) {
+ fFile = file;
+ fANSIEscapeColors = null;
+ }
+
+ VT100DataSource() {
+ fFile = null;
+ StringBuffer input = new StringBuffer();
+ input.append(" 8-bit ");
+ for (int i = 0; i < 255; i++) {
+ input.append("\033[38:5:");
+ input.append(i);
+ input.append("m");
+ input.append(String.format(" %3s ", i));
+ input.append("\033[0m");
+ if ((i + 1) % 6 == 4) {
+ input.append("\n");
+ }
+ }
+ input.append("\n");
+ input.append(" 8-bit ");
+ for (int i = 0; i < 255; i++) {
+ input.append("\033[48:5:");
+ input.append(i);
+ input.append("m");
+ input.append(String.format(" %3s ", i));
+ input.append("\033[0m");
+ if ((i + 1) % 6 == 4) {
+ input.append("\n");
+ }
+ }
+ input.append("\n");
+
+ input.append("\n");
+ input.append(" 24-bit (RGB incremented by 15)");
+ int count = 0;
+ for (int r = 0; r < 255; r += 15) {
+ for (int g = 0; g < 255; g += 15) {
+ count = 0;
+ for (int b = 0; b < 255; b += 15) {
+ if (count++ % 5 == 0) {
+ input.append("\n");
+ }
+ input.append("\033[38:2:3:");
+ input.append(r);
+ input.append(":");
+ input.append(g);
+ input.append(":");
+ input.append(b);
+ input.append(":");
+ input.append("m");
+ input.append(String.format(" (%02x%02x%02x) ", r, g, b));
+ input.append("\033[0m");
+
+ }
+ }
+ }
+ input.append("\n");
+ input.append(" 24-bit (RGB incremented by 15)");
+ count = 0;
+ for (int r = 0; r < 255; r += 15) {
+ for (int g = 0; g < 255; g += 15) {
+ count = 0;
+ for (int b = 0; b < 255; b += 15) {
+ if (count++ % 5 == 0) {
+ input.append("\n");
+ }
+ input.append("\033[48:2:3:");
+ input.append(r);
+ input.append(":");
+ input.append(g);
+ input.append(":");
+ input.append(b);
+ input.append(":");
+ input.append("m");
+ input.append(String.format(" (%02x%02x%02x) ", r, g, b));
+ input.append("\033[0m");
+
+ }
+ }
+ }
+
+ input.append("\n");
+
+ fANSIEscapeColors = input.toString();
+ }
+
+ class InfiniteFileInputStream extends InputStream {
+ public InfiniteFileInputStream() {
+ startInputStream();
+
+ }
+
+ private void startInputStream() {
+ if (fFile == null) {
+ fInputStream = new ByteArrayInputStream(fANSIEscapeColors.getBytes(StandardCharsets.ISO_8859_1));
+ } else {
+ try {
+ fInputStream = new FileInputStream(fFile);
+ } catch (FileNotFoundException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+ }
+
+ @Override
+ public int available() throws IOException {
+ return fAvailable;
+ }
+
+ private InputStream fInputStream;
+
+ @Override
+ public int read() throws IOException {
+ throw new IOException();
+ }
+
+ @Override
+ public int read(byte[] b, int off, int len) throws IOException {
+ while (fAvailable == 0) {
+ try {
+ Thread.sleep(1);
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ }
+ }
+ len = fAvailable;
+ int n = fInputStream.read(b, off, len);
+ if (n <= 0) {
+ fInputStream.close();
+ startInputStream();
+ n = fInputStream.read(b, off, len);
+ }
+ fAvailable -= n;
+ return n;
+ }
+
+ }
+
+ void init(ITerminalTextData terminal) {
+ final Reader reader = new InputStreamReader(new InfiniteFileInputStream(), StandardCharsets.ISO_8859_1);
+ fEmulator = new VT100Emulator(terminal, new ITerminalControlForText() {
+
+ public void disconnectTerminal() {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public OutputStream getOutputStream() {
+ return new ByteArrayOutputStream();
+ }
+
+ @Override
+ public TerminalState getState() {
+ return TerminalState.CONNECTED;
+ }
+
+ @Override
+ public ITerminalConnector getTerminalConnector() {
+ return null;
+ }
+
+ @Override
+ public void setState(TerminalState state) {
+ }
+
+ @Override
+ public void setTerminalTitle(String title) {
+ }
+
+ @Override
+ public void enableApplicationCursorKeys(boolean enable) {
+ }
+ }, reader);
+ }
+
+ @Override
+ public int step(ITerminalTextData terminal) {
+ synchronized (terminal) {
+ if (fEmulator == null) {
+ init(terminal);
+ // fEmulator.setDimensions(48, 132);
+ fEmulator.setDimensions(24, 80);
+ fEmulator.setCrAfterNewLine(true);
+
+ }
+ fAvailable = 80;
+ fEmulator.processText();
+ }
+ return 80;
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/textcanvas/PipedInputStreamPerformanceTest.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/textcanvas/PipedInputStreamPerformanceTest.java
new file mode 100644
index 00000000000..2b6a82d59ac
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/textcanvas/PipedInputStreamPerformanceTest.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.textcanvas;
+
+import java.io.OutputStream;
+
+public class PipedInputStreamPerformanceTest {
+
+ /**
+ * @param args
+ * @throws InterruptedException
+ */
+ public static void main(String[] args) throws InterruptedException {
+ runPerformanceTest();
+ runPerformanceTest();
+ }
+
+ private static void runPerformanceTest() throws InterruptedException {
+ PipedInputStream in = new PipedInputStream(1024);
+ OutputStream out = in.getOutputStream();
+ PipedStreamTest.runPipe("", in, out, 100);
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/textcanvas/PipedStreamTest.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/textcanvas/PipedStreamTest.java
new file mode 100644
index 00000000000..c18fdfd3e4e
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/textcanvas/PipedStreamTest.java
@@ -0,0 +1,134 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.internal.terminal.textcanvas;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+
+class PipedStreamTest {
+ static class ReadThread extends Thread {
+
+ InputStream pi = null;
+
+ OutputStream po = null;
+
+ ReadThread(String process, InputStream pi, OutputStream po) {
+ this.pi = pi;
+ this.po = po;
+ setDaemon(true);
+ }
+
+ @Override
+ public void run() {
+ byte[] buffer = new byte[2048];
+ int bytes_read;
+ try {
+ for (;;) {
+ bytes_read = pi.read(buffer);
+ if (bytes_read == -1) {
+ po.close();
+ pi.close();
+ return;
+ }
+ po.write(buffer, 0, bytes_read);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ }
+
+ static class FakeInputStream extends InputStream {
+ int N;
+
+ FakeInputStream(int n) {
+ N = n;
+ }
+
+ @Override
+ public int read(byte[] b, int off, int len) throws IOException {
+ if (N == 0)
+ return -1;
+ int n = Math.min(len, N);
+ for (int i = off; i < off + n; i++) {
+ b[i] = 'x';
+ }
+ N -= n;
+ return n;
+ }
+
+ @Override
+ public int read() throws IOException {
+ throw new UnsupportedOperationException();
+ }
+
+ /*
+ * available has to be implemented!
+ */
+ @Override
+ public int available() throws IOException {
+ return N;
+ }
+ }
+
+ static class FakeOutputStream extends OutputStream {
+ long N;
+
+ @Override
+ public void write(int b) throws IOException {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void write(byte[] b, int off, int len) throws IOException {
+ N += len;
+ }
+ }
+
+ public static void main(String[] args) throws IOException, InterruptedException {
+ while (true) {
+ runSunTest();
+ runMyTest();
+ }
+ }
+
+ private static void runSunTest() throws IOException, InterruptedException {
+ java.io.PipedInputStream in = new java.io.PipedInputStream();
+ OutputStream out = new java.io.PipedOutputStream(in);
+ runPipe("Sun ", in, out, 10);
+ }
+
+ private static void runMyTest() throws IOException, InterruptedException {
+ PipedInputStream in = new PipedInputStream(4 * 1024);
+ OutputStream out = in.getOutputStream();
+ runPipe("My ", in, out, 99);
+ }
+
+ public static void runPipe(String what, InputStream writeIn, OutputStream readOut, int N)
+ throws InterruptedException {
+ FakeInputStream in = new FakeInputStream(N * 1000 * 1000);
+ FakeOutputStream out = new FakeOutputStream();
+ ReadThread rt = new ReadThread("reader", in, readOut);
+ ReadThread wt = new ReadThread("writer", writeIn, out);
+ long t0 = System.currentTimeMillis();
+ rt.start();
+ wt.start();
+ wt.join();
+ long t = System.currentTimeMillis();
+ long n = out.N;
+ System.out.println(
+ what + n + " byte in " + (t - t0) + " ms -> " + (1000 * n) / ((t - t0 + 1) * 1024) + " kb/sec");
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/terminal/model/AllTestSuite.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/terminal/model/AllTestSuite.java
new file mode 100644
index 00000000000..4a665936a4b
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/terminal/model/AllTestSuite.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Martin Oberhuber (Wind River) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.model;
+
+import junit.framework.JUnit4TestAdapter;
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * Public Terminal Model test cases.
+ * Runs in internal model package to allow access to default visible items.
+ */
+public class AllTestSuite extends TestCase {
+ public AllTestSuite() {
+ super(null);
+ }
+
+ public AllTestSuite(String name) {
+ super(name);
+ }
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(AllTestSuite.class.getName());
+ suite.addTest(new JUnit4TestAdapter(TerminalColorUITest.class));
+ suite.addTestSuite(StyleTest.class);
+ return suite;
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/terminal/model/StyleTest.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/terminal/model/StyleTest.java
new file mode 100644
index 00000000000..cdc11a8ac13
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/terminal/model/StyleTest.java
@@ -0,0 +1,116 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * Contributors:
+ * Michael Scharf (Wind River) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.model;
+
+import junit.framework.TestCase;
+
+public class StyleTest extends TestCase {
+ final TerminalColor c1 = TerminalColor.getIndexedTerminalColor(1);
+ final TerminalColor c2 = TerminalColor.getIndexedTerminalColor(2);
+ final TerminalColor c3 = TerminalColor.getIndexedTerminalColor(3);
+
+ public void testGetStyle() {
+ TerminalStyle s1 = TerminalStyle.getStyle(c1, c2, true, false, true, false);
+ TerminalStyle s2 = TerminalStyle.getStyle(c1, c2, true, false, true, false);
+ assertEquals(s1, s2);
+ assertSame(s1, s2);
+ s1 = s1.setBlink(!s1.isBlink());
+ assertNotSame(s1, s2);
+ assertFalse(s1.equals(s2));
+ s1 = s1.setBlink(!s1.isBlink());
+ assertSame(s1, s2);
+ }
+
+ public void testSetForeground() {
+ TerminalStyle s1 = TerminalStyle.getStyle(c1, c2, true, false, true, false);
+ TerminalStyle s2 = s1;
+ s2 = s1.setForeground(c3);
+ assertNotSame(s1, s2);
+ assertFalse(s1.equals(s2));
+ assertSame(s2.getForegroundTerminalColor(), c3);
+ assertSame(s1.getForegroundTerminalColor(), c1);
+ assertSame(s1.getBackgroundTerminalColor(), c2);
+ assertSame(s2.getBackgroundTerminalColor(), c2);
+ s2 = s2.setForeground(c1);
+ assertSame(s1, s2);
+ }
+
+ public void testSetBackground() {
+ TerminalStyle s1 = TerminalStyle.getStyle(c1, c2, true, false, true, false);
+ TerminalStyle s2 = s1;
+ s2 = s1.setBackground(c3);
+ assertNotSame(s1, s2);
+ assertFalse(s1.equals(s2));
+ assertSame(s2.getForegroundTerminalColor(), c1);
+ assertSame(s1.getForegroundTerminalColor(), c1);
+ assertSame(s1.getBackgroundTerminalColor(), c2);
+ assertSame(s2.getBackgroundTerminalColor(), c3);
+ s2 = s2.setBackground(c2);
+ assertSame(s1, s2);
+ }
+
+ public void testSetBold() {
+ TerminalStyle s1 = getDefaultStyle();
+ TerminalStyle s2 = s1;
+ assertSame(s1, s2);
+ assertFalse(s2.isBold());
+ s2 = s2.setBold(true);
+ assertNotSame(s1, s2);
+ assertTrue(s2.isBold());
+ s2 = s2.setBold(false);
+ assertSame(s1, s2);
+ assertFalse(s2.isBold());
+ }
+
+ public void testSetBlink() {
+ TerminalStyle s1 = getDefaultStyle();
+ TerminalStyle s2 = s1;
+ assertSame(s1, s2);
+ assertFalse(s2.isBlink());
+ s2 = s2.setBlink(true);
+ assertNotSame(s1, s2);
+ assertTrue(s2.isBlink());
+ s2 = s2.setBlink(false);
+ assertSame(s1, s2);
+ assertFalse(s2.isBlink());
+ }
+
+ public void testSetUnderline() {
+ TerminalStyle s1 = getDefaultStyle();
+ TerminalStyle s2 = s1;
+ assertSame(s1, s2);
+ assertFalse(s2.isUnderline());
+ s2 = s2.setUnderline(true);
+ assertNotSame(s1, s2);
+ assertTrue(s2.isUnderline());
+ s2 = s2.setUnderline(false);
+ assertSame(s1, s2);
+ assertFalse(s2.isUnderline());
+ }
+
+ public void testSetReverse() {
+ TerminalStyle s1 = getDefaultStyle();
+ TerminalStyle s2 = s1;
+ assertSame(s1, s2);
+ assertFalse(s2.isReverse());
+ s2 = s2.setReverse(true);
+ assertNotSame(s1, s2);
+ assertTrue(s2.isReverse());
+ s2 = s2.setReverse(false);
+ assertSame(s1, s2);
+ assertFalse(s2.isReverse());
+ }
+
+ private TerminalStyle getDefaultStyle() {
+ return TerminalStyle.getStyle(c1, c2, false, false, false, false);
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/terminal/model/TerminalColorUITest.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/terminal/model/TerminalColorUITest.java
new file mode 100644
index 00000000000..cf0bf3781ce
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/terminal/model/TerminalColorUITest.java
@@ -0,0 +1,154 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Kichwa Coders Canada Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *******************************************************************************/
+package org.eclipse.tm.terminal.model;
+
+import static org.eclipse.tm.terminal.model.TerminalColor.BLACK;
+import static org.eclipse.tm.terminal.model.TerminalColor.BLUE;
+import static org.eclipse.tm.terminal.model.TerminalColor.CYAN;
+import static org.eclipse.tm.terminal.model.TerminalColor.GREEN;
+import static org.eclipse.tm.terminal.model.TerminalColor.MAGENTA;
+import static org.eclipse.tm.terminal.model.TerminalColor.RED;
+import static org.eclipse.tm.terminal.model.TerminalColor.WHITE;
+import static org.eclipse.tm.terminal.model.TerminalColor.YELLOW;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertNotNull;
+
+import org.eclipse.swt.widgets.Display;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+/**
+ * This is a UI test because {@link TerminalColor#convertColor(boolean, boolean)
+ * requires a Display to operate the ColorRegistry.
+ */
+public class TerminalColorUITest {
+
+ private static Display display = null;
+
+ @BeforeClass
+ public static void createDisplay() {
+ Display current = Display.getCurrent();
+ if (current == null) {
+ display = new Display();
+ }
+ }
+
+ @AfterClass
+ public static void disposeDisplay() {
+ if (display != null) {
+ display.dispose();
+ }
+ }
+
+ @Test
+ public void testInversionsStandard() {
+
+ assertEquals(BLACK.convertColor(false, false), WHITE.convertColor(true, false));
+ assertNotEquals(BLACK.convertColor(false, false), WHITE.convertColor(false, false));
+
+ assertEquals(RED.convertColor(false, false), RED.convertColor(true, false));
+ assertEquals(GREEN.convertColor(false, false), GREEN.convertColor(true, false));
+ assertEquals(YELLOW.convertColor(false, false), YELLOW.convertColor(true, false));
+ assertEquals(BLUE.convertColor(false, false), BLUE.convertColor(true, false));
+ assertEquals(MAGENTA.convertColor(false, false), MAGENTA.convertColor(true, false));
+ assertEquals(CYAN.convertColor(false, false), CYAN.convertColor(true, false));
+
+ assertEquals(WHITE.convertColor(false, false), BLACK.convertColor(true, false));
+ assertNotEquals(WHITE.convertColor(false, false), BLACK.convertColor(false, false));
+
+ }
+
+ @Test
+ public void testInversionsBright() {
+ assertEquals(BLACK.convertColor(false, true), WHITE.convertColor(true, true));
+ assertNotEquals(BLACK.convertColor(false, true), WHITE.convertColor(false, true));
+
+ assertEquals(RED.convertColor(false, true), RED.convertColor(true, true));
+ assertEquals(GREEN.convertColor(false, true), GREEN.convertColor(true, true));
+ assertEquals(YELLOW.convertColor(false, true), YELLOW.convertColor(true, true));
+ assertEquals(BLUE.convertColor(false, true), BLUE.convertColor(true, true));
+ assertEquals(MAGENTA.convertColor(false, true), MAGENTA.convertColor(true, true));
+ assertEquals(CYAN.convertColor(false, true), CYAN.convertColor(true, true));
+
+ assertEquals(WHITE.convertColor(false, true), BLACK.convertColor(true, true));
+ assertNotEquals(WHITE.convertColor(false, true), BLACK.convertColor(false, true));
+ }
+
+ @Test
+ public void testIndexesResolveToStandardColors() {
+ // check explicit colors
+ assertEquals(TerminalColor.BLACK.convertColor(false, false),
+ TerminalColor.getIndexedTerminalColor(0).convertColor(false, false));
+ assertEquals(TerminalColor.RED.convertColor(false, false),
+ TerminalColor.getIndexedTerminalColor(1).convertColor(false, false));
+
+ // Now check all colors
+ for (int i = 0; i < 8; i++) {
+ assertEquals(TerminalColor.values()[i].convertColor(false, false),
+ TerminalColor.getIndexedTerminalColor(i).convertColor(false, false));
+ }
+ }
+
+ @Test
+ public void testIndexesResolveToBrightColors() {
+ // check explicit colors
+ assertEquals(TerminalColor.BLACK.convertColor(false, true),
+ TerminalColor.getIndexedTerminalColor(8).convertColor(false, false));
+ assertEquals(TerminalColor.RED.convertColor(false, true),
+ TerminalColor.getIndexedTerminalColor(9).convertColor(false, false));
+
+ // Now check all colors
+ for (int i = 0; i < 8; i++) {
+ assertEquals(TerminalColor.values()[i].convertColor(false, true),
+ TerminalColor.getIndexedTerminalColor(i + 8).convertColor(false, false));
+ }
+ }
+
+ @Test
+ public void testIndexesInRange() {
+ for (int i = 0; i < 16; i++) {
+ assertNotNull(TerminalColor.getIndexedTerminalColor(i));
+ }
+ for (int i = 16; i < 256; i++) {
+ assertNotNull(TerminalColor.getIndexedRGBColor(i));
+ }
+ }
+
+ @Test(expected = IllegalArgumentException.class)
+ public void testIndexesOutOfRange_m1TerminalColor() {
+ assertNotNull(TerminalColor.getIndexedTerminalColor(-1));
+ }
+
+ @Test(expected = IllegalArgumentException.class)
+ public void testIndexesOutOfRange_m1RGBColor() {
+ assertNotNull(TerminalColor.getIndexedRGBColor(-1));
+ }
+
+ @Test(expected = IllegalArgumentException.class)
+ public void testIndexesOutOfRange_16() {
+ assertNotNull(TerminalColor.getIndexedTerminalColor(16));
+ }
+
+ @Test(expected = IllegalArgumentException.class)
+ public void testIndexesOutOfRange_15() {
+ assertNotNull(TerminalColor.getIndexedRGBColor(15));
+ }
+
+ @Test(expected = IllegalArgumentException.class)
+ public void testIndexesOutOfRange_256TerminalColor() {
+ assertNotNull(TerminalColor.getIndexedTerminalColor(256));
+ }
+
+ @Test(expected = IllegalArgumentException.class)
+ public void testIndexesOutOfRange_256RGBColor() {
+ assertNotNull(TerminalColor.getIndexedRGBColor(256));
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/terminal/test/AutomatedIntegrationSuite.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/terminal/test/AutomatedIntegrationSuite.java
new file mode 100644
index 00000000000..62d717b80f5
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/terminal/test/AutomatedIntegrationSuite.java
@@ -0,0 +1,20 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Kichwa Coders Canada and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.tm.terminal.test;
+
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+
+@RunWith(Suite.class)
+@Suite.SuiteClasses({ AutomatedPluginTestSuite.class, AutomatedTestSuite.class })
+public class AutomatedIntegrationSuite {
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/terminal/test/AutomatedPluginTestSuite.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/terminal/test/AutomatedPluginTestSuite.java
new file mode 100644
index 00000000000..e6504581091
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/terminal/test/AutomatedPluginTestSuite.java
@@ -0,0 +1,39 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Martin Oberhuber (Wind River) - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.tm.terminal.test;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * Master Test Suite to run all Terminal plug-in tests.
+ */
+public class AutomatedPluginTestSuite extends TestCase {
+ /**
+ * Call each AllTestSuite class from each of the test packages.
+ */
+ public static Test suite() {
+ TestSuite suite = new TestSuite(AutomatedPluginTestSuite.class.getName());
+ //These tests require Eclipse Platform to be up
+ suite.addTestSuite(org.eclipse.tm.internal.terminal.connector.TerminalConnectorPluginTest.class);
+ suite.addTestSuite(org.eclipse.tm.internal.terminal.connector.TerminalConnectorFactoryTest.class);
+
+ //These tests must run as plain JUnit because they require access
+ //to "package" protected methods
+ //suite.addTest(AutomatedTestSuite.suite());
+ return suite;
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/terminal/test/AutomatedTestSuite.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/terminal/test/AutomatedTestSuite.java
new file mode 100644
index 00000000000..2383462921a
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/terminal/test/AutomatedTestSuite.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2018 Wind River Systems, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Martin Oberhuber (Wind River) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.test;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * Master test suite to run all terminal unit tests.
+ */
+public class AutomatedTestSuite extends TestCase {
+
+ public static final String PI_TERMINAL_TESTS = "org.eclipse.tm.terminal.test"; //$NON-NLS-1$
+
+ public AutomatedTestSuite() {
+ super(null);
+ }
+
+ public AutomatedTestSuite(String name) {
+ super(name);
+ }
+
+ /**
+ * Call each AllTestSuite class from each of the test packages.
+ */
+ public static Test suite() {
+ TestSuite suite = new TestSuite(AutomatedTestSuite.class.getName());
+ suite.addTest(org.eclipse.tm.internal.terminal.emulator.AllTestSuite.suite());
+ suite.addTest(org.eclipse.tm.internal.terminal.model.AllTestSuite.suite());
+ suite.addTest(org.eclipse.tm.terminal.model.AllTestSuite.suite());
+ suite.addTestSuite(org.eclipse.tm.internal.terminal.connector.TerminalConnectorTest.class);
+ suite.addTestSuite(org.eclipse.tm.internal.terminal.connector.TerminalToRemoteInjectionOutputStreamTest.class);
+ return suite;
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/teamConfig/Terminal All Unit Tests.launch b/terminal/plugins/org.eclipse.tm.terminal.test/teamConfig/Terminal All Unit Tests.launch
new file mode 100644
index 00000000000..fd2e3ebb9d4
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/teamConfig/Terminal All Unit Tests.launch
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.jdt.junit.launchconfig">
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.eclipse.tm.terminal.test/src"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="2"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value="=org.eclipse.tm.terminal.test/src"/>
+<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
+<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
+<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit3"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value=""/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.tm.terminal.test"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-ea"/>
+</launchConfiguration>
diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/teamConfig/Terminal AutomatedTests.launch b/terminal/plugins/org.eclipse.tm.terminal.test/teamConfig/Terminal AutomatedTests.launch
new file mode 100644
index 00000000000..a8d7a4e206d
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.test/teamConfig/Terminal AutomatedTests.launch
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.jdt.junit.launchconfig">
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.eclipse.tm.terminal.test/src/org/eclipse/tm/terminal/test/AutomatedTests.java"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
+<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
+<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
+<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit3"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.tm.terminal.test.AutomatedTests"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.tm.terminal.test"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-ea"/>
+</launchConfiguration>
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/.classpath b/terminal/plugins/org.eclipse.tm.terminal.view.core/.classpath
new file mode 100644
index 00000000000..e801ebfb468
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.core/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/.gitignore b/terminal/plugins/org.eclipse.tm.terminal.view.core/.gitignore
new file mode 100644
index 00000000000..ae3c1726048
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.core/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/.options b/terminal/plugins/org.eclipse.tm.terminal.view.core/.options
new file mode 100644
index 00000000000..a0a2c87a3c7
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.core/.options
@@ -0,0 +1 @@
+org.eclipse.tm.terminal.view.core/debugmode = 0
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/.project b/terminal/plugins/org.eclipse.tm.terminal.view.core/.project
new file mode 100644
index 00000000000..f6e4e7e96a0
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.core/.project
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.tm.terminal.view.core</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+ </natures>
+ <filteredResources>
+ <filter>
+ <id>1329501981620</id>
+ <name></name>
+ <type>10</type>
+ <matcher>
+ <id>org.eclipse.ui.ide.multiFilter</id>
+ <arguments>1.0-name-matches-false-false-target</arguments>
+ </matcher>
+ </filter>
+ </filteredResources>
+</projectDescription>
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/.settings/org.eclipse.core.resources.prefs b/terminal/plugins/org.eclipse.tm.terminal.view.core/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.core/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/.settings/org.eclipse.jdt.core.prefs b/terminal/plugins/org.eclipse.tm.terminal.view.core/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..e3a8104f9ca
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.core/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/.settings/org.eclipse.jdt.launching.prefs b/terminal/plugins/org.eclipse.tm.terminal.view.core/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 00000000000..f8a131b56e0
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.core/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_COMPILER_COMPLIANCE_DOES_NOT_MATCH_JRE=warning
+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=warning
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/.settings/org.eclipse.jdt.ui.prefs b/terminal/plugins/org.eclipse.tm.terminal.view.core/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.core/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/.settings/org.eclipse.pde.api.tools.prefs b/terminal/plugins/org.eclipse.tm.terminal.view.core/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 00000000000..ec9fbf321d0
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.core/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,184 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITH_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_FIELD=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERCLASS_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_CHANGED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENTS=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETERS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Error
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Warning
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+MISSING_EE_DESCRIPTIONS=Warning
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=false
+changed_execution_env=Error
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+incompatible_api_component_version_report_major_without_breaking_change=Warning
+incompatible_api_component_version_report_minor_without_api_change=Warning
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/.settings/org.eclipse.pde.prefs b/terminal/plugins/org.eclipse.tm.terminal.view.core/.settings/org.eclipse.pde.prefs
new file mode 100644
index 00000000000..d2dc703ba9e
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.core/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,35 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=2
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=2
+compilers.p.missing-version-export-package=2
+compilers.p.missing-version-import-package=2
+compilers.p.missing-version-require-bundle=2
+compilers.p.no-required-att=0
+compilers.p.no.automatic.module=1
+compilers.p.not-externalized-att=1
+compilers.p.service.component.without.lazyactivation=1
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/META-INF/MANIFEST.MF b/terminal/plugins/org.eclipse.tm.terminal.view.core/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..26b0f608f09
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.core/META-INF/MANIFEST.MF
@@ -0,0 +1,22 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.tm.terminal.view.core;singleton:=true
+Bundle-Version: 4.8.300.qualifier
+Bundle-Activator: org.eclipse.tm.terminal.view.core.activator.CoreBundleActivator
+Bundle-Vendor: %providerName
+Require-Bundle: org.eclipse.core.expressions;bundle-version="3.4.400",
+ org.eclipse.core.runtime;bundle-version="3.8.0"
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Bundle-ActivationPolicy: lazy
+Bundle-Localization: plugin
+Export-Package: org.eclipse.tm.terminal.view.core,
+ org.eclipse.tm.terminal.view.core.activator;x-internal:=true,
+ org.eclipse.tm.terminal.view.core.interfaces,
+ org.eclipse.tm.terminal.view.core.interfaces.constants,
+ org.eclipse.tm.terminal.view.core.internal;x-internal:=true,
+ org.eclipse.tm.terminal.view.core.nls;x-internal:=true,
+ org.eclipse.tm.terminal.view.core.preferences,
+ org.eclipse.tm.terminal.view.core.tracing,
+ org.eclipse.tm.terminal.view.core.utils
+Automatic-Module-Name: org.eclipse.tm.terminal.view.core
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/about.html b/terminal/plugins/org.eclipse.tm.terminal.view.core/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.core/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/about.ini b/terminal/plugins/org.eclipse.tm.terminal.view.core/about.ini
new file mode 100644
index 00000000000..e07a7bb377e
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.core/about.ini
@@ -0,0 +1,24 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%blurb
+
+# Property "windowImage" contains path to window icon (16x16)
+# needed for primary features only
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=cdt_logo_icon32.png
+
+# Property "aboutImage" contains path to product image (500x330 or 115x164)
+# needed for primary features only
+
+# Property "appName" contains name of the application (translated)
+# needed for primary features only
+
+# Property "welcomePerspective" contains the id of the perspective in which the
+# welcome page is to be opened.
+# optional
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/about.mappings b/terminal/plugins/org.eclipse.tm.terminal.view.core/about.mappings
new file mode 100644
index 00000000000..936a8039c3e
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.core/about.mappings
@@ -0,0 +1,9 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+# The following should contain the build version.
+# e.g. "0=20200106-1728"
+# This value will be added automatically via the build scripts
+0=${buildId}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/about.properties b/terminal/plugins/org.eclipse.tm.terminal.view.core/about.properties
new file mode 100644
index 00000000000..ec4a24d7cc7
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.core/about.properties
@@ -0,0 +1,32 @@
+###############################################################################
+# Copyright (c) 2018, 2022 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+# about.properties
+# contains externalized strings for about.ini
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# fill-ins are supplied by about.mappings
+# This file should be translated.
+# NOTE TO TRANSLATOR: Please do not translate the featureVersion variable.
+
+
+blurb=TM Terminal\n\
+\n\
+Version: {featureVersion}\n\
+Build id: {0}\n\
+\n\
+Copyright (c) 2018, 2022 Contributors to the Eclipse Foundation
+\n\
+See the NOTICE file(s) distributed with this work for additional\n\
+information regarding copyright ownership.\n\
+\n\
+Visit http://www.eclipse.org/cdt
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/build.properties b/terminal/plugins/org.eclipse.tm.terminal.view.core/build.properties
new file mode 100644
index 00000000000..23a7377b39e
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.core/build.properties
@@ -0,0 +1,24 @@
+###############################################################################
+# Copyright (c) 2012, 2018 Wind River Systems, Inc. and others. All rights reserved.
+# This program and the accompanying materials are made available under the terms
+# of the Eclipse Public License 2.0 which accompanies this distribution, and is
+# available at https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Wind River Systems - initial API and implementation
+###############################################################################
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.properties,\
+ about.html,\
+ plugin.xml,\
+ about.ini,\
+ about.mappings,\
+ about.properties,\
+ cdt_logo_icon32.png
+src.includes = about.html,\
+ schema/
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/cdt_logo_icon32.png b/terminal/plugins/org.eclipse.tm.terminal.view.core/cdt_logo_icon32.png
new file mode 100644
index 00000000000..470ca81b327
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.core/cdt_logo_icon32.png
Binary files differ
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/plugin.properties b/terminal/plugins/org.eclipse.tm.terminal.view.core/plugin.properties
new file mode 100644
index 00000000000..58f7d91fb3a
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.core/plugin.properties
@@ -0,0 +1,16 @@
+##################################################################################
+# Copyright (c) 2015, 2018 Wind River Systems, Inc. and others. All rights reserved.
+# This program and the accompanying materials are made available under the terms
+# of the Eclipse Public License 2.0 which accompanies this distribution, and is
+# available at https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Wind River Systems - initial API and implementation
+##################################################################################
+
+pluginName = Terminal View Core
+providerName = Eclipse CDT
+
+ExtensionPoint.contextPropertiesProviders = Terminal Context Properties Providers
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/plugin.xml b/terminal/plugins/org.eclipse.tm.terminal.view.core/plugin.xml
new file mode 100644
index 00000000000..b60ca296396
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.core/plugin.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<!--
+ Copyright (c) 2018 Red Hat and others.
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+ -->
+
+<plugin>
+ <extension-point id="contextPropertiesProviders" name="%ExtensionPoint.contextPropertiesProviders" schema="schema/contextPropertiesProviders.exsd"/>
+
+<!-- Property tester contributions -->
+ <extension point="org.eclipse.core.expressions.propertyTesters">
+ <propertyTester
+ class="org.eclipse.tm.terminal.view.core.internal.PropertyTester"
+ id="org.eclipse.tm.terminal.view.core.PropertyTester"
+ namespace="org.eclipse.tm.terminal.view.core"
+ properties="hasContextPropertiesProvider"
+ type="java.lang.Object">
+ </propertyTester>
+ </extension>
+
+</plugin>
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/schema/contextPropertiesProviders.exsd b/terminal/plugins/org.eclipse.tm.terminal.view.core/schema/contextPropertiesProviders.exsd
new file mode 100644
index 00000000000..3a9b909701d
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.core/schema/contextPropertiesProviders.exsd
@@ -0,0 +1,130 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.tm.terminal.view.core" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+ <appinfo>
+ <meta.schema plugin="org.eclipse.tm.terminal.view.core" id="contextPropertiesProviders" name="Terminal Context Properties Providers"/>
+ </appinfo>
+ <documentation>
+ This extension point is used to contribute terminal context properties providers. The context properties provider allows querying desired properties for a given context.
+&lt;p&gt;
+The terminal context is passed in as default variable to the enablement expression evaluation. The terminal context is not expected to be iteratable or countable.
+ </documentation>
+ </annotation>
+
+ <include schemaLocation="schema://org.eclipse.core.expressions/schema/expressionLanguage.exsd"/>
+
+ <element name="extension">
+ <annotation>
+ <appinfo>
+ <meta.element />
+ </appinfo>
+ </annotation>
+ <complexType>
+ <sequence>
+ <element ref="contextPropertiesProvider" minOccurs="1" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute translatable="true"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="contextPropertiesProvider">
+ <annotation>
+ <documentation>
+ Declares a terminal context properties provider contribution.
+ </documentation>
+ </annotation>
+ <complexType>
+ <sequence>
+ <element ref="enablement"/>
+ </sequence>
+ <attribute name="class" type="string">
+ <annotation>
+ <documentation>
+ The class that implements &lt;code&gt;org.eclipse.tm.terminal.view.core.interfaces.ITerminalContextPropertiesProvider&lt;/code&gt;.
+ </documentation>
+ <appinfo>
+ <meta.attribute kind="java" basedOn=":org.eclipse.tm.terminal.view.core.interfaces.ITerminalContextPropertiesProvider"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="since"/>
+ </appinfo>
+ <documentation>
+ TM Terminal 4.0.0
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="examples"/>
+ </appinfo>
+ <documentation>
+ This is an example of the extension point usage:
+&lt;p&gt;
+&lt;pre&gt;&lt;code&gt;
+ &lt;extension point=&quot;org.eclipse.tm.terminal.view.core.contextPropertiesProviders&quot;&gt;
+ &lt;contextPropertiesProvider
+ class=&quot;com.my.contribution.MyContextPropertiesProviderImpl&quot;&gt;
+ &lt;/contextPropertiesProvider&gt;
+ &lt;/extension&gt;
+&lt;/code&gt;&lt;/pre&gt;
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="apiinfo"/>
+ </appinfo>
+ <documentation>
+ The provider of a terminal context properties provider must implement &lt;samp&gt;org.eclipse.tm.terminal.view.core.interfaces.ITerminalContextPropertiesProvider&lt;/samp&gt;.
+ </documentation>
+ </annotation>
+
+
+ <annotation>
+ <appinfo>
+ <meta.section type="copyright"/>
+ </appinfo>
+ <documentation>
+ Copyright (c) 2015, 2018 Wind River Systems, Inc. and others.
+
+All rights reserved.
+
+This program and the accompanying materials are made available under the terms
+of the Eclipse Public License 2.0 which accompanies this distribution, and is
+available at https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+ </documentation>
+ </annotation>
+
+</schema>
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/TerminalContextPropertiesProviderFactory.java b/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/TerminalContextPropertiesProviderFactory.java
new file mode 100644
index 00000000000..633c0a8cb12
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/TerminalContextPropertiesProviderFactory.java
@@ -0,0 +1,230 @@
+/*******************************************************************************
+ * Copyright (c) 2015, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.core;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.expressions.EvaluationContext;
+import org.eclipse.core.expressions.EvaluationResult;
+import org.eclipse.core.expressions.Expression;
+import org.eclipse.core.expressions.ExpressionConverter;
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExecutableExtension;
+import org.eclipse.core.runtime.IExtension;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.tm.terminal.view.core.activator.CoreBundleActivator;
+import org.eclipse.tm.terminal.view.core.interfaces.ITerminalContextPropertiesProvider;
+import org.eclipse.tm.terminal.view.core.nls.Messages;
+
+/**
+ * Terminal context properties provider factory.
+ */
+public final class TerminalContextPropertiesProviderFactory {
+ // Flag to remember if the contributions got loaded
+ private static boolean contributionsLoaded = false;
+
+ // The list of all loaded contributions
+ private static final List<Proxy> contributions = new ArrayList<>();
+
+ // The proxy used to achieve lazy class loading and plug-in activation
+ private static class Proxy implements IExecutableExtension {
+ // Reference to the configuration element
+ private IConfigurationElement configElement = null;
+ // The class implementing the provider
+ public String clazz;
+ // The context properties provider instance
+ private ITerminalContextPropertiesProvider provider = null;
+ // The converted expression
+ private Expression expression;
+
+ /**
+ * Constructor.
+ */
+ protected Proxy() {
+ }
+
+ @Override
+ public void setInitializationData(IConfigurationElement config, String propertyName, Object data)
+ throws CoreException {
+ Assert.isNotNull(config);
+ this.configElement = config;
+
+ // Read the class attribute.
+ // Throws an exception if the attribute value is empty or null.
+ clazz = config.getAttribute("class"); //$NON-NLS-1$
+ if (clazz == null || "".equals(clazz.trim())) { //$NON-NLS-1$
+ throw new CoreException(new Status(IStatus.ERROR, CoreBundleActivator.getUniqueIdentifier(),
+ NLS.bind(Messages.Extension_error_missingRequiredAttribute, "class", //$NON-NLS-1$
+ config.getContributor().getName())));
+ }
+
+ // Read the "enablement" sub element of the extension
+ IConfigurationElement[] children = configElement.getChildren("enablement"); //$NON-NLS-1$
+ if (children == null || children.length == 0) {
+ throw new CoreException(new Status(IStatus.ERROR, CoreBundleActivator.getUniqueIdentifier(),
+ NLS.bind(Messages.Extension_error_missingRequiredAttribute, "enablement", //$NON-NLS-1$
+ config.getContributor().getName())));
+ }
+ // Only one "enablement" element is expected
+ expression = ExpressionConverter.getDefault().perform(children[0]);
+ }
+
+ /**
+ * Return the real terminal context properties provider instance for this proxy.
+ */
+ protected ITerminalContextPropertiesProvider getProvider() {
+ if (provider == null && configElement != null) {
+ try {
+ // Create the service class instance via the configuration element
+ Object provider = configElement.createExecutableExtension("class"); //$NON-NLS-1$
+ if (provider instanceof ITerminalContextPropertiesProvider) {
+ this.provider = (ITerminalContextPropertiesProvider) provider;
+ } else {
+ IStatus status = new Status(IStatus.ERROR, CoreBundleActivator.getUniqueIdentifier(),
+ "Terminal context properties provider '" + provider.getClass().getName() //$NON-NLS-1$
+ + "' not of type ITerminalContextPropertiesProvider."); //$NON-NLS-1$
+ Platform.getLog(CoreBundleActivator.getContext().getBundle()).log(status);
+ }
+ } catch (CoreException e) {
+ IStatus status = new Status(IStatus.ERROR, CoreBundleActivator.getUniqueIdentifier(),
+ "Cannot create terminal context properties provider '" + clazz + "'.", e); //$NON-NLS-1$ //$NON-NLS-2$
+ Platform.getLog(CoreBundleActivator.getContext().getBundle()).log(status);
+ }
+ }
+ return provider;
+ }
+
+ /**
+ * Returns if or if not the context properties provider contribution is enabled for
+ * the given terminal context.
+ *
+ * @param context The terminal context or <code>null</code>.
+ * @return <code>True</code> if the context properties provider contribution is enabled
+ * for the given terminal context, <code>false</code> otherwise.
+ */
+ protected boolean isEnabled(Object context) {
+ if (context == null) {
+ return getEnablement() == null;
+ }
+
+ Expression enablement = getEnablement();
+
+ // The service contribution is enabled by default if no expression is specified.
+ boolean enabled = enablement == null;
+
+ if (enablement != null) {
+ // Set the default variable to the service context.
+ EvaluationContext evalContext = new EvaluationContext(null, context);
+ // Allow plug-in activation
+ evalContext.setAllowPluginActivation(true);
+ // Evaluate the expression
+ try {
+ enabled = enablement.evaluate(evalContext).equals(EvaluationResult.TRUE);
+ } catch (CoreException e) {
+ IStatus status = new Status(IStatus.ERROR, CoreBundleActivator.getUniqueIdentifier(),
+ e.getLocalizedMessage(), e);
+ Platform.getLog(CoreBundleActivator.getContext().getBundle()).log(status);
+ }
+ }
+
+ return enabled;
+ }
+
+ /**
+ * Returns the enablement expression.
+ *
+ * @return The enablement expression or <code>null</code>.
+ */
+ protected Expression getEnablement() {
+ return expression;
+ }
+ }
+
+ /**
+ * Creates a new terminal context properties provider proxy instance and initialize it.
+ *
+ * @param config The configuration element. Must not be <code>null</code>.
+ * @return The new terminal context properties provider proxy instance.
+ */
+ private static Proxy getProxy(IConfigurationElement config) {
+ Assert.isNotNull(config);
+ Proxy proxy = new Proxy();
+ try {
+ proxy.setInitializationData(config, null, null);
+ } catch (CoreException e) {
+ if (Platform.inDebugMode()) {
+ Platform.getLog(CoreBundleActivator.getContext().getBundle()).log(e.getStatus());
+ }
+ }
+ return proxy;
+ }
+
+ /**
+ * Load the terminal context properties provider contributions.
+ */
+ private static void loadContributions() {
+ IExtensionPoint ep = Platform.getExtensionRegistry()
+ .getExtensionPoint("org.eclipse.tm.terminal.view.core.contextPropertiesProviders"); //$NON-NLS-1$
+ if (ep != null) {
+ IExtension[] extensions = ep.getExtensions();
+ if (extensions != null) {
+ for (IExtension extension : extensions) {
+ IConfigurationElement[] configElements = extension.getConfigurationElements();
+ if (configElements != null) {
+ for (IConfigurationElement configElement : configElements) {
+ if ("contextPropertiesProvider".equals(configElement.getName())) { //$NON-NLS-1$
+ Proxy proxy = getProxy(configElement);
+ contributions.add(proxy);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Get the terminal context properties provider for the given context. The first terminal
+ * context properties provider which is enabled is returned.
+ *
+ * @param context The terminal context. Must not be <code>null</code>.
+ *
+ * @return The service or <code>null</code>.
+ */
+ public static ITerminalContextPropertiesProvider getProvider(Object context) {
+ Assert.isNotNull(context);
+
+ // Load the contributions if not yet loaded
+ synchronized (contributions) {
+ if (!contributionsLoaded) {
+ loadContributions();
+ contributionsLoaded = true;
+ }
+ }
+
+ for (Proxy proxy : contributions) {
+ if (proxy.isEnabled(context)) {
+ return proxy.getProvider();
+ }
+ }
+
+ return null;
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/TerminalServiceFactory.java b/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/TerminalServiceFactory.java
new file mode 100644
index 00000000000..595046ffdb8
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/TerminalServiceFactory.java
@@ -0,0 +1,53 @@
+/*******************************************************************************
+ * Copyright (c) 2015, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.core;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.tm.terminal.view.core.activator.CoreBundleActivator;
+import org.eclipse.tm.terminal.view.core.interfaces.ITerminalService;
+import org.eclipse.tm.terminal.view.core.nls.Messages;
+import org.osgi.framework.Bundle;
+
+/**
+ * Terminal service factory implementation.
+ * <p>
+ * Provides access to the terminal service instance.
+ */
+public final class TerminalServiceFactory {
+ private static ITerminalService instance = null;
+
+ static {
+ // Tries to instantiate the terminal service implementation
+ // from the o.e.tm.terminal.view.ui bundle
+ Bundle bundle = Platform.getBundle("org.eclipse.tm.terminal.view.ui"); //$NON-NLS-1$
+ if (bundle != null && bundle.getState() != Bundle.UNINSTALLED && bundle.getState() != Bundle.STOPPING) {
+ try {
+ Class<?> clazz = bundle.loadClass("org.eclipse.tm.terminal.view.ui.services.TerminalService"); //$NON-NLS-1$
+ instance = (ITerminalService) clazz.getDeclaredConstructor().newInstance();
+ } catch (Exception e) {
+ if (Platform.inDebugMode()) {
+ Platform.getLog(bundle).log(new Status(IStatus.ERROR, CoreBundleActivator.getUniqueIdentifier(),
+ Messages.TerminalServiceFactory_error_serviceImplLoadFailed, e));
+ }
+ }
+ }
+ }
+
+ /**
+ * Returns the terminal service instance.
+ */
+ public static ITerminalService getService() {
+ return instance;
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/activator/CoreBundleActivator.java b/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/activator/CoreBundleActivator.java
new file mode 100644
index 00000000000..4184e1b9438
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/activator/CoreBundleActivator.java
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ * Copyright (c) 2015, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.core.activator;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class CoreBundleActivator implements BundleActivator {
+ // The bundle context
+ private static BundleContext context;
+
+ /**
+ * Returns the bundle context
+ *
+ * @return the bundle context
+ */
+ public static BundleContext getContext() {
+ return context;
+ }
+
+ /**
+ * Convenience method which returns the unique identifier of this plug-in.
+ */
+ public static String getUniqueIdentifier() {
+ if (getContext() != null && getContext().getBundle() != null) {
+ return getContext().getBundle().getSymbolicName();
+ }
+ return "org.eclipse.tm.terminal.view.core"; //$NON-NLS-1$
+ }
+
+ @Override
+ public void start(BundleContext bundleContext) throws Exception {
+ CoreBundleActivator.context = bundleContext;
+ }
+
+ @Override
+ public void stop(BundleContext bundleContext) throws Exception {
+ CoreBundleActivator.context = null;
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/interfaces/ITerminalContextPropertiesProvider.java b/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/interfaces/ITerminalContextPropertiesProvider.java
new file mode 100644
index 00000000000..eefca07d8fd
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/interfaces/ITerminalContextPropertiesProvider.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 2015, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.core.interfaces;
+
+import java.util.Map;
+
+/**
+ * Terminal context properties provider.
+ * <p>
+ * The context properties provider allows querying desired properties
+ * for a given context. The context is typically an element from a selection
+ * and the inner structure of the element is unknown to the terminal.
+ */
+public interface ITerminalContextPropertiesProvider {
+
+ /**
+ * Returns a unmodifiable map containing the target address and port for the given context,
+ * if it can be determined.
+ * <p>
+ * A context may return multiple target addresses and ports if the context can be reached using
+ * different connection methods.
+ * <p>
+ * <b>Note:</b>
+ * <ul>
+ * <li>See the constants defined in the context provider constants interface for default
+ * address and port types.</li>
+ * <li>The target address returned must <b>not</b> necessarily be an IP address.</li>
+ * <li>The values of the address or port properties might be <code>null</code>.</li>
+ * </ul>
+ *
+ * @param context The context to get the target addresses and ports from. Must not be <code>null</code>.
+ * @return The unmodifiable map containing the target addresses and ports, or <code>null</code>.
+ */
+ public Map<String, String> getTargetAddress(Object context);
+
+ /**
+ * Returns the property value stored under the given property key. If the property does not
+ * exist, <code>null</code> is returned.
+ *
+ * @param context The context to get the property from. Must not be <code>null</code>.
+ * @param key The property key. Must not be <code>null</code>.
+ *
+ * @return The stored property value or <code>null</code>.
+ */
+ public Object getProperty(Object context, String key);
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/interfaces/ITerminalService.java b/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/interfaces/ITerminalService.java
new file mode 100644
index 00000000000..e28f1b42298
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/interfaces/ITerminalService.java
@@ -0,0 +1,75 @@
+/*******************************************************************************
+ * Copyright (c) 2011 - 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.core.interfaces;
+
+import java.util.Map;
+
+import org.eclipse.core.runtime.IStatus;
+
+/**
+ * Terminal service.
+ */
+public interface ITerminalService {
+
+ /**
+ * Client call back interface.
+ */
+ public interface Done {
+ /**
+ * Called when the terminal service operation is done.
+ *
+ * @param status The status of the terminal service operation.
+ */
+ public void done(IStatus status);
+ }
+
+ /**
+ * Opens a terminal asynchronously and invokes the given callback if done.
+ *
+ * @param properties The terminal properties. Must not be <code>null</code>.
+ * @param done The callback to invoke if finished or <code>null</code>.
+ */
+ public void openConsole(Map<String, Object> properties, Done done);
+
+ /**
+ * Close the terminal asynchronously and invokes the given callback if done.
+ *
+ * @param properties The terminal properties. Must not be <code>null</code>.
+ * @param done The callback to invoke if finished or <code>null</code>.
+ */
+ public void closeConsole(Map<String, Object> properties, Done done);
+
+ /**
+ * Terminate (disconnect) the terminal asynchronously and invokes the given callback if done.
+ *
+ * @param properties The terminal properties. Must not be <code>null</code>.
+ * @param done The callback to invoke if finished or <code>null</code>.
+ */
+ public void terminateConsole(Map<String, Object> properties, Done done);
+
+ /**
+ * Register the given listener to receive notifications about terminal events.
+ * Calling this method multiple times with the same listener has no effect.
+
+ * @param listener The terminal tab listener. Must not be <code>null</code>.
+ */
+ public void addTerminalTabListener(ITerminalTabListener listener);
+
+ /**
+ * Unregister the given listener from receiving notifications about terminal
+ * events. Calling this method multiple times with the same listener
+ * has no effect.
+ *
+ * @param listener The terminal tab listener. Must not be <code>null</code>.
+ */
+ public void removeTerminalTabListener(ITerminalTabListener listener);
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/interfaces/ITerminalServiceOutputStreamMonitorListener.java b/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/interfaces/ITerminalServiceOutputStreamMonitorListener.java
new file mode 100644
index 00000000000..b48a1113adf
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/interfaces/ITerminalServiceOutputStreamMonitorListener.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2014 - 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.core.interfaces;
+
+/**
+ * An interface to be implemented by listeners who want to listen
+ * to the streams data without interfering with the original data receiver.
+ * <p>
+ * Listeners are invoked within the monitor processing thread.
+ */
+public interface ITerminalServiceOutputStreamMonitorListener {
+
+ /**
+ * Signals that some content has been read from the monitored stream.
+ *
+ * @param byteBuffer The byte stream. Must not be <code>null</code>.
+ * @param bytesRead The number of bytes that were read into the read buffer.
+ */
+ public void onContentReadFromStream(byte[] byteBuffer, int bytesRead);
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/interfaces/ITerminalTabListener.java b/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/interfaces/ITerminalTabListener.java
new file mode 100644
index 00000000000..bd3a034680b
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/interfaces/ITerminalTabListener.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2015, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.core.interfaces;
+
+/**
+ * Listener to implement and to register to get notified about
+ * terminal tabs events, like the disposal of a terminal tab.
+ */
+public interface ITerminalTabListener {
+
+ /**
+ * Invoked once a terminal tab got disposed. The source object is
+ * the disposed tab item and data is the custom data object associated
+ * with the disposed tab item.
+ *
+ * @param source The disposed tab item. Must not be <code>null</code>.
+ * @param data The custom data object associated with the disposed tab item or <code>null</code>.
+ */
+ public void terminalTabDisposed(Object source, Object data);
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/interfaces/constants/IContextPropertiesConstants.java b/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/interfaces/constants/IContextPropertiesConstants.java
new file mode 100644
index 00000000000..55daaeecbc7
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/interfaces/constants/IContextPropertiesConstants.java
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ * Copyright (c) 2015, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.core.interfaces.constants;
+
+/**
+ * Defines the terminal context properties constants.
+ */
+public interface IContextPropertiesConstants {
+
+ /**
+ * Target name.
+ * <p>
+ * The target name is not meant to be identical with the targets network name. It can
+ * be the targets network name, but it can be any other string identifying the target
+ * to the user as well. The name is for display only, it is not meant to be used for
+ * communicating with the target.
+ */
+ public static String PROP_NAME = "name"; //$NON-NLS-1$
+
+ /**
+ * Target agent address.
+ * <p>
+ * <i>The value is typically the address an agent running at the target.</i>
+ */
+ public static String PROP_ADDRESS = "address"; //$NON-NLS-1$
+
+ /**
+ * Target agent port.
+ * <p>
+ * <i>The value is typically the port an agent running at the target.</i>
+ */
+ public static String PROP_PORT = "port"; //$NON-NLS-1$
+
+ /**
+ * The default user name to use to log into the target.
+ */
+ public static String PROP_DEFAULT_USER = "defaultUser"; //$NON-NLS-1$
+
+ /**
+ * The default encoding to use.
+ */
+ public static String PROP_DEFAULT_ENCODING = "defaultEncoding"; //$NON-NLS-1$
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/interfaces/constants/ILineSeparatorConstants.java b/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/interfaces/constants/ILineSeparatorConstants.java
new file mode 100644
index 00000000000..f6888a22629
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/interfaces/constants/ILineSeparatorConstants.java
@@ -0,0 +1,34 @@
+/*******************************************************************************
+ * Copyright (c) 2011 - 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.core.interfaces.constants;
+
+/**
+ * Line separator constants.
+ */
+public interface ILineSeparatorConstants {
+
+ /**
+ * The line separator setting CR (carriage return only; for example, used by Mac OS 9).
+ */
+ public final static String LINE_SEPARATOR_CR = "\\r"; //$NON-NLS-1$
+
+ /**
+ * The line separator setting CRLF (carriage return and line feed; for example, used by
+ * Windows).
+ */
+ public final static String LINE_SEPARATOR_CRLF = "\\r\\n"; //$NON-NLS-1$
+
+ /**
+ * The line separator setting LF (line feed only; used by all UNIX-based systems).
+ */
+ public final static String LINE_SEPARATOR_LF = "\\n"; //$NON-NLS-1$
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/interfaces/constants/ITerminalsConnectorConstants.java b/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/interfaces/constants/ITerminalsConnectorConstants.java
new file mode 100644
index 00000000000..8adb3b37f64
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/interfaces/constants/ITerminalsConnectorConstants.java
@@ -0,0 +1,365 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ * Max Weninger (Wind River) - [361352] [TERMINALS][SSH] Add SSH terminal support
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.core.interfaces.constants;
+
+import java.io.InputStream;
+import java.io.OutputStream;
+
+import org.eclipse.tm.terminal.view.core.interfaces.ITerminalServiceOutputStreamMonitorListener;
+
+/**
+ * Defines the terminals connector constants.
+ *
+ * @noextend This interface is not intended to be extended by clients.
+ * @noimplement This interface is not intended to be implemented by clients.
+ */
+public interface ITerminalsConnectorConstants {
+
+ /**
+ * Property: The unique id of the terminals view to open.
+ * <p>
+ * Property Type: {@link String}
+ */
+ public static final String PROP_ID = "id"; //$NON-NLS-1$
+
+ /**
+ * Property: The unique secondary id of the terminals view to open.
+ * <p>
+ * Special values:
+ * <ul>
+ * <li>
+ * not present in properties table or {@link #LAST_ACTIVE_SECONDARY_ID} means open on most recent terminal view
+ * </li>
+ * <li>
+ * {@link #ANY_ACTIVE_SECONDARY_ID} means open on any terminal view
+ * </li>
+ * <li>
+ * <code>null</code> means open on the first primary terminal (the one with no secondary id)
+ * </li>
+ * <ul>
+ * <p>
+ * Property Type: {@link String}
+ */
+ public static final String PROP_SECONDARY_ID = "secondaryId"; //$NON-NLS-1$
+
+ /**
+ * Special value for {@link #PROP_SECONDARY_ID} to indicate reuse of the most recent terminal view
+ * @since 4.8
+ */
+ public static final String LAST_ACTIVE_SECONDARY_ID = "last"; //$NON-NLS-1$
+
+ /**
+ * Special value for {@link #PROP_SECONDARY_ID} to indicate reuse of any terminal view
+ * @since 4.8
+ */
+ public static final String ANY_ACTIVE_SECONDARY_ID = "*"; //$NON-NLS-1$
+
+ /**
+ * Property: The title of the terminal tab to open.
+ * <p>
+ * Property Type: {@link String}
+ */
+ public static final String PROP_TITLE = "title"; //$NON-NLS-1$
+
+ /**
+ * Property: The encoding of the terminal tab to open.
+ * <p>
+ * Property Type: {@link String}
+ */
+ public static final String PROP_ENCODING = "encoding"; //$NON-NLS-1$
+
+ /**
+ * Property: Custom data object to associate with the terminal tab.
+ * <p>
+ * Property Type: {@link Object}
+ */
+ public static final String PROP_DATA = "data"; //$NON-NLS-1$
+
+ /**
+ * Property: External selection to associate with the terminal tab.
+ * <p>
+ * Property Type: {@link org.eclipse.jface.viewers.ISelection}
+ */
+ public static final String PROP_SELECTION = "selection"; //$NON-NLS-1$
+
+ /**
+ * Property: Flag to force a new terminal tab.
+ * <p>
+ * Property Type: {@link Boolean}
+ */
+ public static final String PROP_FORCE_NEW = "terminal.forceNew"; //$NON-NLS-1$
+
+ /**
+ * Property: Terminal launcher delegate id.
+ * <p>
+ * Property Type: {@link String}
+ */
+ public static final String PROP_DELEGATE_ID = "delegateId"; //$NON-NLS-1$
+
+ /**
+ * Property: Specific terminal connector type id. Allows clients to
+ * override the specifically used terminal connector
+ * implementation for a given type.
+ * <p>
+ * Property Type: {@link String}
+ */
+ public static final String PROP_TERMINAL_CONNECTOR_ID = "tm.terminal.connector.id"; //$NON-NLS-1$
+
+ // ***** Generic terminals connector properties *****
+
+ /**
+ * Property: Timeout to be passed to the terminal connector. The specific terminal
+ * connector implementation may interpret this value differently. If not
+ * set, the terminal connector may use a default value.
+ * <p>
+ * Property Type: {@link Integer}
+ */
+ public static final String PROP_TIMEOUT = "timeout"; //$NON-NLS-1$
+
+ /**
+ * Property: Flag to control if a local echo is needed from the terminal widget.
+ * <p>Typical for process and streams terminals.
+ * <p>
+ * Property Type: {@link Boolean}
+ */
+ public static final String PROP_LOCAL_ECHO = "localEcho"; //$NON-NLS-1$
+
+ /**
+ * Property: Data flag to tell the terminal to not reconnect when hitting enter
+ * in a disconnected terminal.
+ * <p>
+ * Property Type: {@link Boolean}
+ */
+ public static final String PROP_DATA_NO_RECONNECT = "data.noReconnect"; //$NON-NLS-1$
+
+ /**
+ * Property: The line separator expected by the remote terminal on input streams and
+ * send by the remote terminal on output streams.
+ * <p>Typical for process and streams terminals.
+ * <p>
+ * Property Type: {@link String}
+ */
+ public static final String PROP_LINE_SEPARATOR = "lineSeparator"; //$NON-NLS-1$
+
+ /**
+ * Property: The list of stdout listeners to attach to the corresponding stream monitor.
+ * <p>Typical for process and streams terminals.
+ * <p>
+ * Property Type: {@link ITerminalServiceOutputStreamMonitorListener} array
+ */
+ public static final String PROP_STDOUT_LISTENERS = "stdoutListeners"; //$NON-NLS-1$
+
+ /**
+ * Property: The list of stderr listeners to attach to the corresponding stream monitor.
+ * <p>Typical for process and streams terminals.
+ * <p>
+ * Property Type: {@link ITerminalServiceOutputStreamMonitorListener} array
+ */
+ public static final String PROP_STDERR_LISTENERS = "stderrListeners"; //$NON-NLS-1$
+
+ /**
+ * Property: If set to <code>true</code>, backslashes are translated to
+ * slashes before pasting the text to the terminal widget.
+ * <p>
+ * Property Type: {@link Boolean}
+ */
+ public static final String PROP_TRANSLATE_BACKSLASHES_ON_PASTE = "translateBackslashesOnPaste"; //$NON-NLS-1$
+
+ // ***** IP based terminals connector properties *****
+
+ /**
+ * Property: Host name or IP address the terminal server is running.
+ * <p>Typical for telnet or ssh terminals.
+ * <p>
+ * Property Type: {@link String}
+ */
+ public static final String PROP_IP_HOST = "ip.host"; //$NON-NLS-1$
+
+ /**
+ * Property: Port at which the terminal server is providing the console input and output.
+ * <p>Typical for telnet or ssh terminals.
+ * <p>
+ * Property Type: {@link Integer}
+ */
+ public static final String PROP_IP_PORT = "ip.port"; //$NON-NLS-1$
+
+ /**
+ * Property: An offset to add to the specified port number.
+ * <p>Typical for telnet or ssh terminals.
+ * <p>
+ * Property Type: {@link Integer}
+ */
+ public static final String PROP_IP_PORT_OFFSET = "ip.port.offset"; //$NON-NLS-1$
+
+ // ***** Process based terminals connector properties *****
+
+ /**
+ * Property: Process image path.
+ * <p>Typical for process terminals.
+ * <p>
+ * Property Type: {@link String}
+ */
+ public static final String PROP_PROCESS_PATH = "process.path"; //$NON-NLS-1$
+
+ /**
+ * Property: Process arguments.
+ * <p>Typical for process terminals.
+ * <p>
+ * Property Type: {@link String}
+ */
+ public static final String PROP_PROCESS_ARGS = "process.args"; //$NON-NLS-1$
+
+ /**
+ * Property: Process arguments.
+ * <p>Typical for process terminals.
+ * <p>
+ * Property Type: {@link String}
+ */
+ public static final String PROP_PROCESS_WORKING_DIR = "process.working_dir"; //$NON-NLS-1$
+
+ /**
+ * Property: Process environment.
+ * <p>Typical for process terminals.
+ * <p>
+ * Property Type: {@link String} array
+ */
+ public static final String PROP_PROCESS_ENVIRONMENT = "process.environment"; //$NON-NLS-1$
+
+ /**
+ * Property: Flag to merge process environment with native environment.
+ * <p>Typical for process terminals.
+ * <p>
+ * Property Type: {@link Boolean}
+ */
+ public static final String PROP_PROCESS_MERGE_ENVIRONMENT = "process.environment.merge"; //$NON-NLS-1$
+
+ /**
+ * Property: Runtime process instance.
+ * <p>Typical for process terminals.
+ * <p>
+ * Property Type: {@link Process}
+ */
+ public static final String PROP_PROCESS_OBJ = "process"; //$NON-NLS-1$
+
+ /**
+ * Property: Runtime process PTY instance.
+ * <p>Typical for process terminals.
+ * <p>
+ * Property Type: {@link org.eclipse.cdt.utils.pty.PTY}
+ */
+ public static final String PROP_PTY_OBJ = "pty"; //$NON-NLS-1$
+
+ // ***** Streams based terminals connector properties *****
+
+ /**
+ * Property: Stdin streams instance.
+ * <p>Typical for streams terminals.
+ * <p>
+ * Property Type: {@link OutputStream}
+ */
+ public static final String PROP_STREAMS_STDIN = "streams.stdin"; //$NON-NLS-1$
+
+ /**
+ * Property: Stdout streams instance.
+ * <p>Typical for streams terminals.
+ * <p>
+ * Property Type: {@link InputStream}
+ */
+ public static final String PROP_STREAMS_STDOUT = "streams.stdout"; //$NON-NLS-1$
+
+ /**
+ * Property: Stderr streams instance.
+ * <p>Typical for streams terminals.
+ * <p>
+ * Property Type: {@link InputStream}
+ */
+ public static final String PROP_STREAMS_STDERR = "streams.stderr"; //$NON-NLS-1$
+
+ // ***** Ssh specific properties *****
+
+ /**
+ * Property: ssh keep alive value.
+ * <p>
+ * Property Type: {@link Integer}
+ */
+ public static final String PROP_SSH_KEEP_ALIVE = "ssh.keep_alive"; //$NON-NLS-1$
+
+ /**
+ * Property: Ssh password.
+ * <p>
+ * Property Type: {@link String}
+ */
+ public static final String PROP_SSH_PASSWORD = "ssh.password"; //$NON-NLS-1$
+
+ /**
+ * Property: Ssh user.
+ * <p>
+ * Property Type: {@link String}
+ */
+ public static final String PROP_SSH_USER = "ssh.user"; //$NON-NLS-1$
+
+ // ***** Serial specific properties *****
+
+ /**
+ * The serial device name.
+ * <p>
+ * Property Type: {@link String}
+ */
+ public static final String PROP_SERIAL_DEVICE = "serial.device"; //$NON-NLS-1$
+
+ /**
+ * The baud rate.
+ * <p>
+ * Property Type: {@link String}
+ */
+ public static final String PROP_SERIAL_BAUD_RATE = "serial.baudrate"; //$NON-NLS-1$
+
+ /**
+ * The data bits
+ * <p>
+ * Property Type: {@link String}
+ */
+ public static final String PROP_SERIAL_DATA_BITS = "serial.databits"; //$NON-NLS-1$
+
+ /**
+ * The parity
+ * <p>
+ * Property Type: {@link String}
+ */
+ public static final String PROP_SERIAL_PARITY = "serial.parity"; //$NON-NLS-1$
+
+ /**
+ * The stop bits
+ * <p>
+ * Property Type: {@link String}
+ */
+ public static final String PROP_SERIAL_STOP_BITS = "serial.stopbits"; //$NON-NLS-1$
+
+ /**
+ * The flow control
+ * <p>
+ * Property Type: {@link String}
+ */
+ public static final String PROP_SERIAL_FLOW_CONTROL = "serial.flowcontrol"; //$NON-NLS-1$
+
+ // ***** Telnet specific properties *****
+
+ /**
+ * The end-of-line sequence to be sent to the server on "Enter".
+ * <p>
+ * Property Type: {@link String}
+ * @since 4.2
+ */
+ public static final String PROP_TELNET_EOL = "telnet.eol"; //$NON-NLS-1$
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/internal/PropertyTester.java b/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/internal/PropertyTester.java
new file mode 100644
index 00000000000..7e0f46ce6db
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/internal/PropertyTester.java
@@ -0,0 +1,34 @@
+/*******************************************************************************
+ * Copyright (c) 2011 - 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.core.internal;
+
+import org.eclipse.tm.terminal.view.core.TerminalContextPropertiesProviderFactory;
+
+/**
+ * Property tester implementation.
+ */
+public class PropertyTester extends org.eclipse.core.expressions.PropertyTester {
+
+ @Override
+ public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
+
+ // "hasContextPropertiesProvider": Checks if a context properties provider is available for the given receiver.
+ if ("hasContextPropertiesProvider".equals(property)) { //$NON-NLS-1$
+ boolean hasProvider = TerminalContextPropertiesProviderFactory.getProvider(receiver) != null;
+ return expectedValue instanceof Boolean ? ((Boolean) expectedValue).equals(Boolean.valueOf(hasProvider))
+ : hasProvider;
+ }
+
+ return false;
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/nls/Messages.java b/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/nls/Messages.java
new file mode 100644
index 00000000000..2d778f3b126
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/nls/Messages.java
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ * Copyright (c) 2015, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.core.nls;
+
+import org.eclipse.osgi.util.NLS;
+
+/**
+ * Externalized strings management.
+ */
+public class Messages extends NLS {
+
+ // The plug-in resource bundle name
+ private static final String BUNDLE_NAME = "org.eclipse.tm.terminal.view.core.nls.Messages"; //$NON-NLS-1$
+
+ /**
+ * Static constructor.
+ */
+ static {
+ // Load message values from bundle file
+ NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+ }
+
+ // **** Declare externalized string id's down here *****
+
+ public static String TerminalServiceFactory_error_serviceImplLoadFailed;
+
+ public static String Extension_error_missingRequiredAttribute;
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/nls/Messages.properties b/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/nls/Messages.properties
new file mode 100644
index 00000000000..647a26ff699
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/nls/Messages.properties
@@ -0,0 +1,16 @@
+###############################################################################
+# Copyright (c) 2015, 2018 Wind River Systems, Inc. and others. All rights reserved.
+# This program and the accompanying materials are made available under the terms
+# of the Eclipse Public License 2.0 which accompanies this distribution, and is
+# available at https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Wind River Systems - initial API and implementation
+###############################################################################
+
+TerminalServiceFactory_error_serviceImplLoadFailed=Failed to load terminal service implementation.
+
+Extension_error_missingRequiredAttribute=Required attribute "{0}" missing for extension "{1}"!
+
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/preferences/ScopedEclipsePreferences.java b/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/preferences/ScopedEclipsePreferences.java
new file mode 100644
index 00000000000..b660a387c73
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/preferences/ScopedEclipsePreferences.java
@@ -0,0 +1,453 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.core.preferences;
+
+import java.io.OutputStream;
+import java.util.Map;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.ISafeRunnable;
+import org.eclipse.core.runtime.ListenerList;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.SafeRunner;
+import org.eclipse.core.runtime.preferences.DefaultScope;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences.IPreferenceChangeListener;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences.PreferenceChangeEvent;
+import org.eclipse.core.runtime.preferences.IPreferenceFilter;
+import org.eclipse.core.runtime.preferences.IScopeContext;
+import org.eclipse.core.runtime.preferences.InstanceScope;
+import org.eclipse.core.runtime.preferences.PreferenceFilterEntry;
+import org.osgi.service.prefs.BackingStoreException;
+
+/**
+ * Helper class to handle scoped Eclipse preferences for plug-in's. Scoped
+ * preferences means a given preference context plus the default preferences
+ * scope.
+ * <p>
+ * On changes a {@link PreferenceChangeEvent} is sent to inform all listeners of the change.
+ *
+ * @see IEclipsePreferences
+ * @see IEclipsePreferences.PreferenceChangeEvent
+ * @see IEclipsePreferences.IPreferenceChangeListener
+ */
+public class ScopedEclipsePreferences {
+ /**
+ * The preferences scope qualifier.
+ */
+ private final String qualifier;
+
+ /**
+ * The default scope preference node.
+ */
+ protected final IEclipsePreferences defaultPrefs;
+
+ /**
+ * The context scope preference node.
+ */
+ protected final IEclipsePreferences contextScopePrefs;
+
+ /**
+ * The registered preference change listeners.
+ */
+ private final ListenerList<IPreferenceChangeListener> listeners = new ListenerList<>();
+
+ /**
+ * Constructor.
+ * <p>
+ * Initialize the scoped preferences with a new instance scope for the given qualifier. The default
+ * scope is determined by calling <code>DefaultScope().getNode(qualifier)</code>.
+ *
+ * @param qualifier The qualifier for the preferences (in example the unique identifier of a plugin). Must not be <code>null</code>.
+ */
+ public ScopedEclipsePreferences(String qualifier) {
+ this(InstanceScope.INSTANCE, qualifier);
+ }
+
+ /**
+ * Constructor.
+ * <p>
+ * Initialize the scoped preferences with the given scope. The default scope
+ * is determined by calling <code>DefaultScope().getNode(qualifier)</code>.
+ *
+ * @param context The preference scope context. Must not be <code>null</code>.
+ * @param qualifier The qualifier for the preferences (in example the unique identifier of a plugin). Must not be <code>null</code>.
+ */
+ public ScopedEclipsePreferences(IScopeContext context, String qualifier) {
+ Assert.isNotNull(context);
+ Assert.isNotNull(qualifier);
+ this.qualifier = qualifier;
+ defaultPrefs = DefaultScope.INSTANCE.getNode(getQualifier());
+ contextScopePrefs = context.getNode(getQualifier());
+ }
+
+ /**
+ * Returns the qualifier that is used to get the preferences.
+ * For plugin preferences, this is the unique identifier of the plugin.
+ */
+ protected final String getQualifier() {
+ return qualifier;
+ }
+
+ /**
+ * Exports the preferences to the stream.
+ * <p>
+ * <b>Note:</b> The stream will be closed after the export.
+ *
+ * @param stream The stream to where preferences and defaults should be exported.
+ */
+ public void exportPreferences(OutputStream stream) {
+ Assert.isNotNull(stream);
+ try {
+ IPreferenceFilter filter = new IPreferenceFilter() {
+ @Override
+ public String[] getScopes() {
+ return new String[] { InstanceScope.SCOPE };
+ }
+
+ @Override
+ public Map<String, PreferenceFilterEntry[]> getMapping(String scope) {
+ return null;
+ }
+ };
+
+ Platform.getPreferencesService().exportPreferences(contextScopePrefs, new IPreferenceFilter[] { filter },
+ stream);
+ stream.close();
+ } catch (Exception e) {
+ }
+ }
+
+ /**
+ * Check whether a key is set or not.
+ *
+ * @param key The key to check.
+ * @return <code>null</code> if the key does not exist.
+ */
+ public boolean containsKey(String key) {
+ return Platform.getPreferencesService().getString(getQualifier(), key, null, null) != null;
+ }
+
+ /**
+ * Get a String preference value.
+ *
+ * @param key The preference key.
+ * @return The value of the preference key or the default value if not set.
+ */
+ public final String getString(String key) {
+ return Platform.getPreferencesService().getString(getQualifier(), key, null, null);
+ }
+
+ /**
+ * Get a boolean preference value.
+ *
+ * @param key The preference key.
+ * @return The value of the preference key or the default value if not set.
+ */
+ public final boolean getBoolean(String key) {
+ return Platform.getPreferencesService().getBoolean(getQualifier(), key, false, null);
+ }
+
+ /**
+ * Get an int preference value.
+ *
+ * @param key The preference key.
+ * @return The value of the preference key or the default value if not set.
+ */
+ public final int getInt(String key) {
+ return Platform.getPreferencesService().getInt(getQualifier(), key, 0, null);
+ }
+
+ /**
+ * Get a long preference value.
+ *
+ * @param key The preference key.
+ * @return The value of the preference key or the default value if not set.
+ */
+ public final long getLong(String key) {
+ return Platform.getPreferencesService().getLong(getQualifier(), key, 0, null);
+ }
+
+ /**
+ * Get a default String preference value.
+ *
+ * @param key The preference key.
+ * @return The default value of the preference key or <code>null</code>.
+ */
+ public final String getDefaultString(String key) {
+ return defaultPrefs.get(key, null);
+ }
+
+ /**
+ * Get a default boolean preference value.
+ *
+ * @param key The preference key.
+ * @return The default value of the preference key or <code>null</code>.
+ */
+ public final boolean getDefaultBoolean(String key) {
+ return defaultPrefs.getBoolean(key, false);
+ }
+
+ /**
+ * Get a default int preference value.
+ *
+ * @param key The preference key.
+ * @return The default value of the preference key or <code>null</code>.
+ */
+ public final int getDefaultInt(String key) {
+ return defaultPrefs.getInt(key, 0);
+ }
+
+ /**
+ * Get a default long preference value.
+ *
+ * @param key The preference key.
+ * @return The default value of the preference key or <code>null</code>.
+ */
+ public final long getDefaultLong(String key) {
+ return defaultPrefs.getLong(key, 0);
+ }
+
+ /**
+ * Set a String preference value. If the value is <code>null</code> or is equal to
+ * the default value, the entry will be removed.
+ * <p>
+ * A {@link PreferenceChangeEvent} is fired, if the value has changed.
+ *
+ * @param key The preference key.
+ * @return The value of the preference key.
+ */
+ public void putString(String key, String value) {
+ String defValue = defaultPrefs.get(key, null);
+ String instValue = getString(key);
+ if (value == null || value.equals(defValue)) {
+ contextScopePrefs.remove(key);
+ flushAndNotify(contextScopePrefs, key, instValue, defValue);
+ } else if (!value.equals(instValue)) {
+ contextScopePrefs.put(key, value);
+ flushAndNotify(contextScopePrefs, key, instValue, value);
+ }
+ }
+
+ /**
+ * Set a boolean preference value. If the value is equal the default value,
+ * the entry will be removed.
+ * <p>
+ * A {@link PreferenceChangeEvent} is fired, if the value has changed.
+ *
+ * @param key The preference key.
+ * @return The value of the preference key.
+ */
+ public void putBoolean(String key, boolean value) {
+ boolean defValue = defaultPrefs.getBoolean(key, false);
+ boolean instValue = getBoolean(key);
+ if (value == defValue) {
+ contextScopePrefs.remove(key);
+ flushAndNotify(contextScopePrefs, key, Boolean.toString(instValue), Boolean.toString(defValue));
+ } else if (value != instValue) {
+ contextScopePrefs.putBoolean(key, value);
+ flushAndNotify(contextScopePrefs, key, Boolean.toString(instValue), Boolean.toString(value));
+ }
+ }
+
+ /**
+ * Set an int preference value. If the value is equal to the default value,
+ * the entry will be removed.
+ * <p>
+ * A {@link PreferenceChangeEvent} is fired, if the value has changed. The old
+ * and new values are string representation in base 10.
+ *
+ * @param key The preference key.
+ * @return The value of the preference key.
+ */
+ public void putInt(String key, int value) {
+ int defValue = defaultPrefs.getInt(key, 0);
+ int instValue = getInt(key);
+ if (value == defValue) {
+ contextScopePrefs.remove(key);
+ flushAndNotify(contextScopePrefs, key, Integer.toString(instValue), Integer.toString(defValue));
+ } else if (value != instValue) {
+ contextScopePrefs.putInt(key, value);
+ flushAndNotify(contextScopePrefs, key, Integer.toString(instValue), Integer.toString(value));
+ }
+ }
+
+ /**
+ * Set a long preference value. If the given value is equal to the default
+ * value, the entry will be removed.
+ * <p>
+ * A {@link PreferenceChangeEvent} is fired, if the value has changed. The old
+ * and new values are string representation in base 10.
+ *
+ * @param key The preference key.
+ * @return The value of the preference key.
+ */
+ public void putLong(String key, long value) {
+ long defValue = defaultPrefs.getLong(key, 0);
+ long instValue = getLong(key);
+ if (value == defValue) {
+ contextScopePrefs.remove(key);
+ flushAndNotify(contextScopePrefs, key, Long.toString(instValue), Long.toString(defValue));
+ } else if (value != instValue) {
+ contextScopePrefs.putLong(key, value);
+ flushAndNotify(contextScopePrefs, key, Long.toString(instValue), Long.toString(value));
+ }
+ }
+
+ /**
+ * Set a default String preference value. If the given value is <code>null</code>,
+ * the entry will be removed.
+ * <p>
+ * A {@link PreferenceChangeEvent} is fired, if the value has changed.
+ *
+ * @param key The preference key.
+ * @return The default value of the preference key.
+ */
+ public void putDefaultString(String key, String value) {
+ String defValue = defaultPrefs.get(key, null);
+ if (value == null) {
+ defaultPrefs.remove(key);
+ flushAndNotify(defaultPrefs, key, defValue, null);
+ } else if (!value.equals(defValue)) {
+ defaultPrefs.put(key, value);
+ flushAndNotify(defaultPrefs, key, defValue, value);
+ }
+ }
+
+ /**
+ * Set a default boolean preference value.
+ * <p>
+ * A {@link PreferenceChangeEvent} is fired, if the value has changed.
+ *
+ * @param key The preference key.
+ * @return The default value of the preference key.
+ */
+ public void putDefaultBoolean(String key, boolean value) {
+ boolean defValue = defaultPrefs.getBoolean(key, false);
+ if (value != defValue) {
+ defaultPrefs.putBoolean(key, value);
+ flushAndNotify(defaultPrefs, key, Boolean.toString(defValue), Boolean.toString(value));
+ }
+ }
+
+ /**
+ * Set a default int preference value.
+ * <p>
+ * A {@link PreferenceChangeEvent} is fired, if the value has changed. The old
+ * and new values are string representation in base 10.
+ *
+ * @param key The preference key.
+ * @return The default value of the preference key.
+ */
+ public void putDefaultInt(String key, int value) {
+ int defValue = defaultPrefs.getInt(key, 0);
+ if (value != defValue) {
+ defaultPrefs.putInt(key, value);
+ flushAndNotify(defaultPrefs, key, Integer.toString(defValue), Integer.toString(value));
+ }
+ }
+
+ /**
+ * Set a default long preference value.
+ * <p>
+ * A {@link PreferenceChangeEvent} is fired, if the value has changed. The old
+ * and new values are string representation in base 10.
+ *
+ * @param key The preference key.
+ * @return The default value of the preference key.
+ */
+ public void putDefaultLong(String key, long value) {
+ long defValue = defaultPrefs.getLong(key, 0);
+ if (value != defValue) {
+ defaultPrefs.putLong(key, value);
+ flushAndNotify(defaultPrefs, key, Long.toString(defValue), Long.toString(value));
+ }
+ }
+
+ /**
+ * Write back the changes to the store and notify all listeners about the changed key.
+ *
+ * @param node The preference node which has changed. Must not be <code>null</code>.
+ * @param key The key of the changed preference. Must not be <code>null</code>.
+ * @param oldValue The old value as a {@link String}, or <code>null</code>.
+ * @param newValue The new value as a {@link String}, or <code>null</code>.
+ */
+ protected final void flushAndNotify(IEclipsePreferences node, String key, String oldValue, String newValue) {
+ // Flush the preferences to the persistence store
+ try {
+ node.flush();
+ } catch (BackingStoreException e) {
+ /* Ignored on purpose */ }
+
+ // Notify the listeners
+ firePreferenceEvent(node, key, oldValue, newValue);
+ }
+
+ /**
+ * Register the given listener to receive notifications of preference changes to this node.
+ * Calling this method multiple times with the same listener has no effect. The given listener
+ * argument must not be <code>null</code>.
+ *
+ * @param listener The preference change listener. Must not be <code>null</code>.
+ */
+ public void addPreferenceChangeListener(IPreferenceChangeListener listener) {
+ Assert.isNotNull(listener);
+ listeners.add(listener);
+ }
+
+ /**
+ * De-register the given listener from receiving notifications of preference changes
+ * to this node. Calling this method multiple times with the same listener has no
+ * effect. The given listener argument must not be <code>null</code>.
+ *
+ * @param listener The preference change listener. Must not be <code>null</code>.
+ */
+ public void removePreferenceChangeListener(IPreferenceChangeListener listener) {
+ Assert.isNotNull(listener);
+ listeners.remove(listener);
+ }
+
+ /**
+ * Convenience method for notifying the registered preference change listeners.
+ *
+ * @param node The preference node which has changed. Must not be <code>null</code>.
+ * @param key The key of the changed preference. Must not be <code>null</code>.
+ * @param oldValue The old value as a {@link String}, or <code>null</code>.
+ * @param newValue The new value as a {@link String}, or <code>null</code>.
+ */
+ protected void firePreferenceEvent(IEclipsePreferences node, String key, String oldValue, String newValue) {
+ Assert.isNotNull(node);
+ Assert.isNotNull(key);
+
+ // If no listener is registered, we are done here
+ if (listeners.isEmpty())
+ return;
+
+ // Create the preference change event
+ final PreferenceChangeEvent event = new PreferenceChangeEvent(node, key, oldValue, newValue);
+ for (IPreferenceChangeListener listener : listeners) {
+ ISafeRunnable job = new ISafeRunnable() {
+ @Override
+ public void handleException(Throwable exception) {
+ // already logged in Platform#run()
+ }
+
+ @Override
+ public void run() throws Exception {
+ listener.preferenceChange(event);
+ }
+ };
+ SafeRunner.run(job);
+ }
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/tracing/TraceHandler.java b/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/tracing/TraceHandler.java
new file mode 100644
index 00000000000..98945b613c2
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/tracing/TraceHandler.java
@@ -0,0 +1,300 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.core.tracing;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.tm.terminal.view.core.activator.CoreBundleActivator;
+
+/**
+ * Helper class to handle tracing using the platforms debug capabilities.
+ */
+public class TraceHandler {
+ /**
+ * The bundle identifier.
+ */
+ private final String identifier;
+
+ /**
+ * The tracer instance.
+ */
+ private Tracer tracer = null;
+
+ /**
+ * The tracer is responsible for writing the trace message to the desired
+ * output media.
+ */
+ protected static class Tracer {
+
+ /**
+ * The bundle identifier.
+ */
+ private final String fIdentifier;
+
+ /**
+ * The qualifier for the default &quot;&lt;bundle identifier&gt;/debugmode&quot;
+ * tracing slot.
+ */
+ private final String fDebugModeQualifier;
+
+ /**
+ * Constructor.
+ *
+ * @param identifier The bundle identifier. Must not be <code>null</code>.
+ */
+ public Tracer(String identifier) {
+ Assert.isNotNull(identifier);
+ fIdentifier = identifier;
+
+ // Initialize the debug mode qualifier
+ fDebugModeQualifier = fIdentifier + "/debugmode"; //$NON-NLS-1$
+ }
+
+ /**
+ * Returns the value of the debug mode tracing slot.
+ * <p>
+ * If not set, or the value is not an {@link Integer}, the method returns <code>0</code>.
+ *
+ * @return The debug mode value.
+ */
+ protected int getDebugMode() {
+ try {
+ String mode = Platform.getDebugOption(fDebugModeQualifier);
+ if (mode != null && Integer.decode(mode).intValue() > 0) {
+ return Integer.decode(mode).intValue();
+ }
+ } catch (NumberFormatException e) {
+ /* ignored on purpose */ }
+
+ return 0;
+ }
+
+ /**
+ * Check if the specified trace slot is enabled.
+ *
+ * @param slotId The name of the slot.
+ * @return <code>true</code> if the slot is defined and enabled, <code>false</code> otherwise.
+ */
+ protected boolean isSlotEnabled(String slotId) {
+ return fIdentifier != null ? Boolean.parseBoolean(Platform.getDebugOption(fIdentifier + "/" + slotId)) //$NON-NLS-1$
+ : false;
+ }
+
+ /**
+ * Check if tracing is enabled for given mode and slot.
+ *
+ * @param debugMode The debug mode for the current debug.
+ * @param slotId The name of the slot.
+ *
+ * @return <code>true</code> if the debug should be written, <code>false</code> otherwise.
+ */
+ protected final boolean isEnabled(int debugMode, String slotId) {
+ return getDebugMode() < 0 || (debugMode <= getDebugMode()
+ && (slotId == null || slotId.trim().length() == 0 || isSlotEnabled(slotId)));
+ }
+
+ /**
+ * Format the trace message.
+ *
+ * @param message The trace message.
+ * @param debugMode The debug mode.
+ * @param slotId The name of the slot.
+ * @param severity The severity. See {@link IStatus} for valid severity values.
+ * @param clazz The class that calls this tracer.
+ *
+ * @see IStatus
+ */
+ protected String getFormattedDebugMessage(String message, int debugMode, String slotId, int severity,
+ Object clazz) {
+ StringBuffer debug = new StringBuffer();
+ if (slotId != null || clazz != null) {
+ if (clazz != null) {
+ String name = clazz instanceof Class<?> ? ((Class<?>) clazz).getSimpleName()
+ : clazz.getClass().getSimpleName();
+ debug.append(name.trim().length() > 0 ? name.trim()
+ : clazz instanceof Class<?> ? ((Class<?>) clazz).getName() : clazz.getClass().getName());
+ }
+ if (slotId != null) {
+ debug.append(" at "); //$NON-NLS-1$
+ debug.append(slotId);
+ }
+ if (debugMode >= 0) {
+ debug.append(" (Mode "); //$NON-NLS-1$
+ debug.append(debugMode);
+ debug.append(')');
+ }
+ debug.append('\n');
+ debug.append('\t');
+ }
+ debug.append(message);
+
+ return debug.toString();
+ }
+
+ /**
+ * Write the trace message.
+ *
+ * @param message The trace message.
+ * @param debugMode The debug mode.
+ * @param slotId The name of the slot.
+ * @param severity The severity. See {@link IStatus} for valid severity values.
+ * @param clazz The class that calls this tracer.
+ *
+ * @see IStatus
+ */
+ protected void write(String message, int debugMode, String slotId, int severity, Object clazz) {
+ String formattedMessage = getFormattedDebugMessage(message, debugMode, slotId, severity, clazz);
+ if (severity == IStatus.ERROR || severity == IStatus.WARNING) {
+ System.err.println(formattedMessage);
+ } else {
+ System.out.println(formattedMessage);
+ }
+ }
+
+ /**
+ * Trace the given message with the given debug mode and slot.
+ *
+ * @param message The trace message.
+ * @param debugMode The debug mode.
+ * @param slotId The name of the slot.
+ * @param severity The severity. See {@link IStatus} for valid severity values.
+ * @param clazz The class that calls this tracer.
+ *
+ * @see IStatus
+ */
+ public final void trace(String message, int debugMode, String slotId, int severity, Object clazz) {
+ if (isEnabled(debugMode, slotId)) {
+ write(message, debugMode, slotId, severity, clazz);
+ }
+ }
+ }
+
+ /**
+ * Constructor.
+ * <p>
+ * Initializes the tracing handler with the given bundle identifier.
+ *
+ * @param identifier The bundle identifier or <code>null</code>.
+ */
+ public TraceHandler(String identifier) {
+ this.identifier = identifier != null ? identifier : CoreBundleActivator.getUniqueIdentifier();
+ Assert.isNotNull(this.identifier);
+ }
+
+ /**
+ * Returns the identifier.
+ */
+ protected final String getIdentifier() {
+ return identifier;
+ }
+
+ /**
+ * Returns the tracer instance. Create a new tracer instance
+ * on first invocation.
+ *
+ * @return The tracer instance.
+ */
+ protected Tracer getTracer() {
+ if (tracer == null) {
+ tracer = new Tracer(identifier);
+ }
+ return tracer;
+ }
+
+ /**
+ * Return the current debug mode.
+ */
+ public final int getDebugMode() {
+ return getTracer().getDebugMode();
+ }
+
+ /**
+ * Check whether a trace slot is enabled. The debug mode defaults
+ * to 0.
+ *
+ * @param slotId The name of the slot.
+ *
+ * @return <code>true</code> if the slot is enabled, <code>false</code> otherwise.
+ */
+ public final boolean isSlotEnabled(String slotId) {
+ return isSlotEnabled(0, slotId);
+ }
+
+ /**
+ * Check whether a trace slot is enabled with the given debug mode.
+ *
+ * @param debugMode The debug mode
+ * @param slotId The name of the slot.
+ *
+ * @return <code>true</code> if the slot is enabled, <code>false</code> otherwise.
+ */
+ public final boolean isSlotEnabled(int debugMode, String slotId) {
+ return getTracer().isEnabled(debugMode, slotId);
+ }
+
+ /**
+ * Trace the given message.
+ * <p>
+ * The message severity will be {@link IStatus#INFO} and the message will be
+ * traced unconditionally.
+ *
+ * @param message The message.
+ * @param clazz The class that calls this tracer or <code>null</code>.
+ */
+ public final void trace(String message, Object clazz) {
+ getTracer().trace(message, 0, null, IStatus.INFO, clazz);
+ }
+
+ /**
+ * Trace the given message.
+ * <p>
+ * The message severity will be {@link IStatus#INFO}.
+ *
+ * @param message The message.
+ * @param debugMode The minimum debug mode that has to be set to write out the message.
+ * @param clazz The class that calls this tracer or <code>null</code>.
+ */
+ public final void trace(String message, int debugMode, Object clazz) {
+ getTracer().trace(message, debugMode, null, IStatus.INFO, clazz);
+ }
+
+ /**
+ * Trace the given message.
+ * <p>
+ * The message severity will be {@link IStatus#INFO} and the debug mode
+ * will default to <code>0</code>.
+ *
+ * @param message The message.
+ * @param slotId The slot that has to be enabled to write out the message.
+ * @param clazz The class that calls this tracer or <code>null</code>.
+ */
+ public final void trace(String message, String slotId, Object clazz) {
+ getTracer().trace(message, 0, slotId, IStatus.INFO, clazz);
+ }
+
+ /**
+ * Trace the given message.
+ *
+ * @param message The message.
+ * @param debugMode The minimum debug mode that has to be set to write out the message.
+ * @param slotId The slot that has to be enabled to write out the message.
+ * @param severity The severity. See {@link IStatus} for valid severity values.
+ * @param clazz The class that calls this tracer or <code>null</code>.
+ *
+ * @see IStatus
+ */
+ public final void trace(String message, int debugMode, String slotId, int severity, Object clazz) {
+ getTracer().trace(message, debugMode, slotId, severity, clazz);
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/utils/Env.java b/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/utils/Env.java
new file mode 100644
index 00000000000..4b081c81e8a
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/utils/Env.java
@@ -0,0 +1,111 @@
+/*******************************************************************************
+ * Copyright (c) 2013, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.core.utils;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
+import org.eclipse.core.runtime.Platform;
+
+/**
+ * Environment handling utility methods.
+ */
+public class Env {
+
+ /**
+ * Returns the merged environment of the native environment and the passed
+ * in environment. Passed in variables will overwrite the native environment
+ * if the same variables are set there.
+ * <p>
+ * For use with terminals, the parameter <code>terminal</code> should be set to
+ * <code>true</code>. In this case, the method will assure that the <code>TERM</code>
+ * environment variable is always set to <code>ANSI</code> and is not overwritten
+ * by the passed in environment.
+ *
+ * @param envp The environment to set on top of the native environment or <code>null</code>.
+ * @param terminal <code>True</code> if used with an terminal, <code>false</code> otherwise.
+ *
+ * @return The merged environment.
+ */
+ public static String[] getEnvironment(String[] envp, boolean terminal) {
+ // Get a copy of the native environment variables
+ Properties environmentVariables = getEnvVars();
+
+ // If a "local" environment is provided, merge it with the native
+ // environment.
+ if (envp != null) {
+ for (String keyValue : envp) {
+ // keyValue is the full provided variable in form "name=value"
+ String[] parts = keyValue.split("=", 2); //$NON-NLS-1$
+ if (parts.length == 2) {
+ String name = parts[0];
+ String value = parts[1];
+
+ if ("<unset>".equals(value)) { //$NON-NLS-1$
+ environmentVariables.remove(name);
+ } else {
+ environmentVariables.put(name, value);
+ }
+ }
+ }
+ }
+ // Set the TERM environment variable if in terminal mode
+ if (terminal)
+ environmentVariables.put("TERM", "xterm");//$NON-NLS-1$ //$NON-NLS-2$
+
+ // Convert into an array of strings
+ List<String> keys = new ArrayList<>(environmentVariables.stringPropertyNames());
+ // On Windows hosts, sort the environment keys
+ if (Platform.OS_WIN32.equals(Platform.getOS()))
+ Collections.sort(keys);
+ List<String> strings = new ArrayList<>(keys.size());
+ for (String key : keys) {
+ String value = environmentVariables.getProperty(key);
+ strings.add(key + "=" + value); //$NON-NLS-1$
+ }
+
+ return strings.toArray(new String[strings.size()]);
+ }
+
+ //WARNING
+ //Below is a copy of org.eclipse.cdt.utils.spawner.EnvironmentReader to make the terminal independent from CDT
+ //This is supposed to be a straight copy (no modifications)
+ //except for making getEnvVars private to avoid errors/warnings
+ private static Properties envVars;
+ @SuppressWarnings("nls")
+ private static List<String> toUppercaseEnvironmentVars = Arrays.asList("PATH", "CYGWIN_HOME", "LANG");
+
+ static {
+ boolean isWindows = Platform.OS_WIN32.equals(Platform.getOS());
+ envVars = new Properties();
+ Map<String, String> envMap = System.getenv();
+ for (Map.Entry<String, String> curEnvVar : envMap.entrySet()) {
+ String key = curEnvVar.getKey();
+ String value = curEnvVar.getValue();
+ if (isWindows && toUppercaseEnvironmentVars.contains(key.toUpperCase())) {
+ key = key.toUpperCase();
+ }
+ envVars.setProperty(key, value);
+ }
+ }
+
+ /**
+ * @return a clone of the list of environment variables.
+ */
+ private static Properties getEnvVars() {
+ return (Properties) envVars.clone();
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/.classpath b/terminal/plugins/org.eclipse.tm.terminal.view.ui/.classpath
new file mode 100644
index 00000000000..e801ebfb468
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/.gitignore b/terminal/plugins/org.eclipse.tm.terminal.view.ui/.gitignore
new file mode 100644
index 00000000000..ae3c1726048
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/.options b/terminal/plugins/org.eclipse.tm.terminal.view.ui/.options
new file mode 100644
index 00000000000..2b37de4fb78
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/.options
@@ -0,0 +1,3 @@
+org.eclipse.tm.terminal.view.ui/debugmode = 0
+org.eclipse.tm.terminal.view.ui/trace/outputStreamMonitor = false
+org.eclipse.tm.terminal.view.ui/trace/launchTerminalCommandHandler = false
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/.project b/terminal/plugins/org.eclipse.tm.terminal.view.ui/.project
new file mode 100644
index 00000000000..3686758258d
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/.project
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.tm.terminal.view.ui</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+ </natures>
+ <filteredResources>
+ <filter>
+ <id>1329502074611</id>
+ <name></name>
+ <type>10</type>
+ <matcher>
+ <id>org.eclipse.ui.ide.multiFilter</id>
+ <arguments>1.0-name-matches-false-false-target</arguments>
+ </matcher>
+ </filter>
+ </filteredResources>
+</projectDescription>
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/.settings/.api_filters b/terminal/plugins/org.eclipse.tm.terminal.view.ui/.settings/.api_filters
new file mode 100644
index 00000000000..3d478ee8e78
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/.settings/.api_filters
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<component id="org.eclipse.tm.terminal.view.ui" version="2">
+ <resource path="src/org/eclipse/tm/terminal/view/ui/controls/ConfigurationPanelControl.java" type="org.eclipse.tm.terminal.view.ui.controls.ConfigurationPanelControl">
+ <filter id="576725006">
+ <message_arguments>
+ <message_argument value="IConfigurationPanelContainer"/>
+ <message_argument value="ConfigurationPanelControl"/>
+ </message_arguments>
+ </filter>
+ </resource>
+ <resource path="src/org/eclipse/tm/terminal/view/ui/launcher/AbstractLauncherDelegate.java" type="org.eclipse.tm.terminal.view.ui.launcher.AbstractLauncherDelegate">
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
+ <message_arguments>
+ <message_argument value="ILauncherDelegate"/>
+ <message_argument value="AbstractLauncherDelegate"/>
+ </message_arguments>
+ </filter>
+ </resource>
+ <resource path="src/org/eclipse/tm/terminal/view/ui/panels/AbstractConfigurationPanel.java" type="org.eclipse.tm.terminal.view.ui.panels.AbstractConfigurationPanel">
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
+ <message_arguments>
+ <message_argument value="IConfigurationPanel"/>
+ <message_argument value="AbstractConfigurationPanel"/>
+ </message_arguments>
+ </filter>
+ </resource>
+ <resource path="src/org/eclipse/tm/terminal/view/ui/view/TerminalsView.java" type="org.eclipse.tm.terminal.view.ui.view.TerminalsView">
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
+ <message_arguments>
+ <message_argument value="ITerminalsView"/>
+ <message_argument value="TerminalsView"/>
+ </message_arguments>
+ </filter>
+ </resource>
+</component>
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/.settings/org.eclipse.core.resources.prefs b/terminal/plugins/org.eclipse.tm.terminal.view.ui/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/.settings/org.eclipse.jdt.core.prefs b/terminal/plugins/org.eclipse.tm.terminal.view.ui/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..e3a8104f9ca
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/.settings/org.eclipse.jdt.launching.prefs b/terminal/plugins/org.eclipse.tm.terminal.view.ui/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 00000000000..f8a131b56e0
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_COMPILER_COMPLIANCE_DOES_NOT_MATCH_JRE=warning
+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=warning
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/.settings/org.eclipse.jdt.ui.prefs b/terminal/plugins/org.eclipse.tm.terminal.view.ui/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/.settings/org.eclipse.pde.api.tools.prefs b/terminal/plugins/org.eclipse.tm.terminal.view.ui/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 00000000000..ec9fbf321d0
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,184 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITH_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_FIELD=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERCLASS_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_CHANGED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENTS=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETERS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Error
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Warning
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+MISSING_EE_DESCRIPTIONS=Warning
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=false
+changed_execution_env=Error
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+incompatible_api_component_version_report_major_without_breaking_change=Warning
+incompatible_api_component_version_report_minor_without_api_change=Warning
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/.settings/org.eclipse.pde.prefs b/terminal/plugins/org.eclipse.tm.terminal.view.ui/.settings/org.eclipse.pde.prefs
new file mode 100644
index 00000000000..d2dc703ba9e
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,35 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=2
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=2
+compilers.p.missing-version-export-package=2
+compilers.p.missing-version-import-package=2
+compilers.p.missing-version-require-bundle=2
+compilers.p.no-required-att=0
+compilers.p.no.automatic.module=1
+compilers.p.not-externalized-att=1
+compilers.p.service.component.without.lazyactivation=1
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/META-INF/MANIFEST.MF b/terminal/plugins/org.eclipse.tm.terminal.view.ui/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..6ebb93c8ac7
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,45 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.tm.terminal.view.ui;singleton:=true
+Bundle-Version: 4.10.300.qualifier
+Bundle-Activator: org.eclipse.tm.terminal.view.ui.activator.UIPlugin
+Bundle-Vendor: %providerName
+Require-Bundle: org.eclipse.core.expressions;bundle-version="3.4.400",
+ org.eclipse.core.runtime;bundle-version="3.8.0",
+ org.eclipse.core.resources;bundle-version="3.8.1";resolution:=optional,
+ org.eclipse.core.variables;bundle-version="3.2.600",
+ org.eclipse.debug.ui;bundle-version="3.8.1";resolution:=optional,
+ org.eclipse.egit.ui;bundle-version="2.0.0";resolution:=optional,
+ org.eclipse.tm.terminal.view.core;bundle-version="[4.8.0,5.0.0)",
+ org.eclipse.tm.terminal.control;bundle-version="[5.2.0,6.0.0)",
+ org.eclipse.ui;bundle-version="3.8.0",
+ org.eclipse.ui.ide;bundle-version="3.18.0";resolution:=optional,
+ org.eclipse.ui.editors;bundle-version="3.14.0";resolution:=optional,
+ org.eclipse.text;bundle-version="3.11.0";resolution:=optional
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Bundle-ActivationPolicy: lazy
+Bundle-Localization: plugin
+Export-Package: org.eclipse.tm.terminal.view.ui.actions,
+ org.eclipse.tm.terminal.view.ui.activator;x-internal:=true,
+ org.eclipse.tm.terminal.view.ui.controls,
+ org.eclipse.tm.terminal.view.ui.help,
+ org.eclipse.tm.terminal.view.ui.interfaces,
+ org.eclipse.tm.terminal.view.ui.interfaces.tracing;x-internal:=true,
+ org.eclipse.tm.terminal.view.ui.internal;x-internal:=true,
+ org.eclipse.tm.terminal.view.ui.internal.dialogs;x-internal:=true,
+ org.eclipse.tm.terminal.view.ui.internal.handler;x-internal:=true,
+ org.eclipse.tm.terminal.view.ui.launcher,
+ org.eclipse.tm.terminal.view.ui.listeners,
+ org.eclipse.tm.terminal.view.ui.local.showin;x-internal:=true,
+ org.eclipse.tm.terminal.view.ui.local.showin.detectors;x-internal:=true,
+ org.eclipse.tm.terminal.view.ui.manager,
+ org.eclipse.tm.terminal.view.ui.nls;x-internal:=true,
+ org.eclipse.tm.terminal.view.ui.panels,
+ org.eclipse.tm.terminal.view.ui.preferences;x-internal:=true,
+ org.eclipse.tm.terminal.view.ui.services,
+ org.eclipse.tm.terminal.view.ui.streams,
+ org.eclipse.tm.terminal.view.ui.tabs,
+ org.eclipse.tm.terminal.view.ui.view,
+ org.eclipse.tm.terminal.view.ui.view.showin;x-internal:=true
+Automatic-Module-Name: org.eclipse.tm.terminal.view.ui
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/about.html b/terminal/plugins/org.eclipse.tm.terminal.view.ui/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/about.ini b/terminal/plugins/org.eclipse.tm.terminal.view.ui/about.ini
new file mode 100644
index 00000000000..e07a7bb377e
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/about.ini
@@ -0,0 +1,24 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%blurb
+
+# Property "windowImage" contains path to window icon (16x16)
+# needed for primary features only
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=cdt_logo_icon32.png
+
+# Property "aboutImage" contains path to product image (500x330 or 115x164)
+# needed for primary features only
+
+# Property "appName" contains name of the application (translated)
+# needed for primary features only
+
+# Property "welcomePerspective" contains the id of the perspective in which the
+# welcome page is to be opened.
+# optional
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/about.mappings b/terminal/plugins/org.eclipse.tm.terminal.view.ui/about.mappings
new file mode 100644
index 00000000000..936a8039c3e
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/about.mappings
@@ -0,0 +1,9 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+# The following should contain the build version.
+# e.g. "0=20200106-1728"
+# This value will be added automatically via the build scripts
+0=${buildId}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/about.properties b/terminal/plugins/org.eclipse.tm.terminal.view.ui/about.properties
new file mode 100644
index 00000000000..86faacf8e50
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/about.properties
@@ -0,0 +1,32 @@
+###############################################################################
+# Copyright (c) 2018, 2022 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+# about.properties
+# contains externalized strings for about.ini
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# fill-ins are supplied by about.mappings
+# This file should be translated.
+# NOTE TO TRANSLATOR: Please do not translate the featureVersion variable.
+
+
+blurb=Terminal (Console) View\n\
+\n\
+Version: {featureVersion}\n\
+Build id: {0}\n\
+\n\
+Copyright (c) 2018, 2022 Contributors to the Eclipse Foundation
+\n\
+See the NOTICE file(s) distributed with this work for additional\n\
+information regarding copyright ownership.\n\
+\n\
+Visit http://www.eclipse.org/cdt
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/build.properties b/terminal/plugins/org.eclipse.tm.terminal.view.ui/build.properties
new file mode 100644
index 00000000000..8a51227f4f2
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/build.properties
@@ -0,0 +1,26 @@
+###############################################################################
+# Copyright (c) 2012, 2018 Wind River Systems, Inc. and others. All rights reserved.
+# This program and the accompanying materials are made available under the terms
+# of the Eclipse Public License 2.0 which accompanies this distribution, and is
+# available at https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Wind River Systems - initial API and implementation
+###############################################################################
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.properties,\
+ plugin.xml,\
+ about.html,\
+ icons/,\
+ contexts.xml,\
+ about.ini,\
+ about.mappings,\
+ about.properties,\
+ cdt_logo_icon32.png
+src.includes = schema/,\
+ about.html
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/cdt_logo_icon32.png b/terminal/plugins/org.eclipse.tm.terminal.view.ui/cdt_logo_icon32.png
new file mode 100644
index 00000000000..470ca81b327
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/cdt_logo_icon32.png
Binary files differ
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/contexts.xml b/terminal/plugins/org.eclipse.tm.terminal.view.ui/contexts.xml
new file mode 100644
index 00000000000..7a0390e6408
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/contexts.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2018 Red Hat and others.
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+ -->
+
+<contexts>
+ <context id="LaunchTerminalSettingsDialog">
+ <description>Select the terminal type and specify the connections settings to connect a new terminal.</description>
+ </context>
+ <context id="EncodingSelectionDialog">
+ <description>Select the new encoding for the active terminal.</description>
+ </context>
+ <context id="ExternalExecutablesDialog">
+ <description>Add or modify an external executable added to the 'Show in Local Terminal' context menu.</description>
+ </context>
+</contexts>
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/clcl16/command_input_field.gif b/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/clcl16/command_input_field.gif
new file mode 100644
index 00000000000..9e3a547c145
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/clcl16/command_input_field.gif
Binary files differ
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/clcl16/lock_co.png b/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/clcl16/lock_co.png
new file mode 100644
index 00000000000..df111d48fb3
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/clcl16/lock_co.png
Binary files differ
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/clcl16/lock_co@2x.png b/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/clcl16/lock_co@2x.png
new file mode 100644
index 00000000000..df6d4317702
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/clcl16/lock_co@2x.png
Binary files differ
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/clcl16/new_terminal_view.gif b/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/clcl16/new_terminal_view.gif
new file mode 100644
index 00000000000..00896268424
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/clcl16/new_terminal_view.gif
Binary files differ
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/dlcl16/command_input_field.gif b/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/dlcl16/command_input_field.gif
new file mode 100644
index 00000000000..f538ca707fc
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/dlcl16/command_input_field.gif
Binary files differ
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/dlcl16/disconnect.gif b/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/dlcl16/disconnect.gif
new file mode 100644
index 00000000000..1ca9213a43c
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/dlcl16/disconnect.gif
Binary files differ
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/dlcl16/lock_co.png b/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/dlcl16/lock_co.png
new file mode 100644
index 00000000000..6f061961726
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/dlcl16/lock_co.png
Binary files differ
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/dlcl16/lock_co@2x.png b/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/dlcl16/lock_co@2x.png
new file mode 100644
index 00000000000..692fa10d326
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/dlcl16/lock_co@2x.png
Binary files differ
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/dlcl16/new_terminal_view.gif b/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/dlcl16/new_terminal_view.gif
new file mode 100644
index 00000000000..25adc24b2a6
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/dlcl16/new_terminal_view.gif
Binary files differ
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/elcl16/command_input_field.gif b/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/elcl16/command_input_field.gif
new file mode 100644
index 00000000000..f538ca707fc
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/elcl16/command_input_field.gif
Binary files differ
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/elcl16/disconnect.gif b/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/elcl16/disconnect.gif
new file mode 100644
index 00000000000..d61dd776e39
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/elcl16/disconnect.gif
Binary files differ
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/elcl16/lock_co.png b/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/elcl16/lock_co.png
new file mode 100644
index 00000000000..df111d48fb3
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/elcl16/lock_co.png
Binary files differ
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/elcl16/lock_co@2x.png b/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/elcl16/lock_co@2x.png
new file mode 100644
index 00000000000..df6d4317702
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/elcl16/lock_co@2x.png
Binary files differ
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/elcl16/new_terminal_view.gif b/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/elcl16/new_terminal_view.gif
new file mode 100644
index 00000000000..b81882b503d
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/elcl16/new_terminal_view.gif
Binary files differ
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/eview16/console_view.png b/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/eview16/console_view.png
new file mode 100644
index 00000000000..ca77aee5bca
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/eview16/console_view.png
Binary files differ
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/eview16/console_view@2x.png b/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/eview16/console_view@2x.png
new file mode 100644
index 00000000000..54ecae20f3f
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/eview16/console_view@2x.png
Binary files differ
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/eview16/terminal_view.gif b/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/eview16/terminal_view.gif
new file mode 100644
index 00000000000..bbb6a9e153e
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/eview16/terminal_view.gif
Binary files differ
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/plugin.properties b/terminal/plugins/org.eclipse.tm.terminal.view.ui/plugin.properties
new file mode 100644
index 00000000000..dd968a731d3
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/plugin.properties
@@ -0,0 +1,78 @@
+##################################################################################
+# Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved.
+# This program and the accompanying materials are made available under the terms
+# of the Eclipse Public License 2.0 which accompanies this distribution, and is
+# available at https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Wind River Systems - initial API and implementation
+##################################################################################
+
+pluginName = Terminal View
+providerName = Eclipse CDT
+
+# ----- Terminal View -----
+
+ViewCategory.name=Terminal
+
+TerminalsView.name=Terminal
+TerminalsView.name.old=Terminals (Old)
+TerminalsView.context.name=In Terminal View
+TerminalsView.context.description=Show modified keyboard shortcuts in context menu
+
+# ----- Terminal Connectors -----
+
+TerminalConnector.streams=Streams Connector (hidden)
+
+# ----- Terminal Launcher Delegates -----
+
+StreamsLauncherDelegate.label=Streams Terminal
+
+# ----- Commands and Menu contributions -----
+command.category.name=Terminal Commands
+
+toolbar.terminal.label=Terminal
+
+command.launch.selection.name=Open Terminal on Selection
+command.launch.name=Open Terminal
+command.launch.label=Open Terminal...
+command.launch.tooltip=Open a Terminal
+
+command.disconnect.name=Disconnect Terminal
+command.disconnect.label=Disconnect
+command.disconnect.tooltip=Disconnect Terminal Connection
+
+command.newview.name=New Terminal View
+
+menu.showIn.label = Show in Local Terminal
+menu.showIn.mnemonic=I
+
+LocalLauncherDelegate.label=Local Terminal
+
+command.launch.name=Open Local Terminal on Selection
+
+menu.showIn.localterminal.label = Terminal
+
+TerminalConnector.local=Local
+
+# ----- Extension Points -----
+
+ExtensionPoint.launcherDelegates.name=Terminal Launcher Delegates
+
+# ----- Activity contributions -----
+
+activities.category.terminals.name=Terminal
+activities.category.terminals.description=Use the terminal to connect to remote hosts via telnet, ssh and others.
+
+activities.activity.terminals.views.name=Terminal Views
+activities.activity.terminals.views.description=Terminal related views.
+
+activities.activity.terminals.maintoolbar.name=Terminal Main Toolbar
+activities.activity.terminals.maintoolbar.description=Terminal main toolbar buttons.
+
+# ----- Preference Pages -----
+
+preference.page.name=Local Terminal
+
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/plugin.xml b/terminal/plugins/org.eclipse.tm.terminal.view.ui/plugin.xml
new file mode 100644
index 00000000000..fcaa0db55bf
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/plugin.xml
@@ -0,0 +1,554 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<!--
+ Copyright (c) 2018 Red Hat and others.
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+ -->
+
+<plugin>
+
+<!-- Extension points -->
+ <extension-point id="launcherDelegates" name="%ExtensionPoint.launcherDelegates.name" schema="schema/launcherDelegates.exsd"/>
+
+<!-- View contributions -->
+ <extension point="org.eclipse.ui.views">
+ <category
+ id="org.eclipse.tm.terminal.view.ui.views.category"
+ name="%ViewCategory.name">
+ </category>
+
+ <view
+ allowMultiple="true"
+ category="org.eclipse.tm.terminal.view.ui.views.category"
+ class="org.eclipse.tm.terminal.view.ui.view.TerminalsView"
+ icon="icons/eview16/terminal_view.gif"
+ id="org.eclipse.tm.terminal.view.ui.TerminalsView"
+ name="%TerminalsView.name">
+ </view>
+
+ <!-- Bug 466644: Contribute another view with the old (TCF) ID to handle the ID change -->
+ <!-- The sole purpose of this view is to close itself when it's in an old workspace/persepctive -->
+ <view
+ allowMultiple="true"
+ class="org.eclipse.tm.terminal.view.ui.view.OldTerminalsViewHandler"
+ icon="icons/eview16/terminal_view.gif"
+ id="org.eclipse.tcf.te.ui.terminals.TerminalsView"
+ name="%TerminalsView.name.old">
+ </view>
+ </extension>
+
+<!-- Perspective extension contributions -->
+ <extension point="org.eclipse.ui.perspectiveExtensions">
+ <perspectiveExtension targetID="org.eclipse.tcf.te.ui.perspective">
+ <!-- Register the view shortcuts -->
+ <viewShortcut id="org.eclipse.tm.terminal.view.ui.TerminalsView"/>
+ <!-- Place the Terminal view relative to the Task List view -->
+ <view
+ id="org.eclipse.tm.terminal.view.ui.TerminalsView"
+ minimized="false"
+ relationship="stack"
+ relative="org.eclipse.ui.views.TaskList"
+ visible="false">
+ </view>
+ </perspectiveExtension>
+
+ <perspectiveExtension targetID="org.eclipse.ui.resourcePerspective">
+ <!-- Register the view shortcuts -->
+ <viewShortcut id="org.eclipse.tm.terminal.view.ui.TerminalsView"/>
+ <!-- Place the Terminal view relative to the Task List view -->
+ <view
+ id="org.eclipse.tm.terminal.view.ui.TerminalsView"
+ minimized="false"
+ relationship="stack"
+ relative="org.eclipse.ui.views.TaskList"
+ visible="false">
+ </view>
+ </perspectiveExtension>
+
+ <perspectiveExtension targetID="org.eclipse.debug.ui.DebugPerspective">
+ <!-- Register the view shortcuts -->
+ <viewShortcut id="org.eclipse.tm.terminal.view.ui.TerminalsView"/>
+ <!-- Place the Terminal view relative to the Task List view -->
+ <view
+ id="org.eclipse.tm.terminal.view.ui.TerminalsView"
+ minimized="false"
+ relationship="stack"
+ relative="org.eclipse.ui.console.ConsoleView"
+ visible="false">
+ </view>
+ </perspectiveExtension>
+
+ <perspectiveExtension targetID="org.eclipse.cdt.ui.CPerspective">
+ <!-- Register the view shortcuts -->
+ <viewShortcut id="org.eclipse.tm.terminal.view.ui.TerminalsView"/>
+ <!-- Place the Terminal view relative to the Task List view -->
+ <view
+ id="org.eclipse.tm.terminal.view.ui.TerminalsView"
+ minimized="false"
+ relationship="stack"
+ relative="org.eclipse.ui.views.TaskList"
+ visible="false">
+ </view>
+ </perspectiveExtension>
+
+ <perspectiveExtension targetID="org.eclipse.jdt.ui.JavaPerspective">
+ <!-- Register the view shortcuts -->
+ <viewShortcut id="org.eclipse.tm.terminal.view.ui.TerminalsView"/>
+ <!-- Place the Terminal view relative to the Task List view -->
+ <view
+ id="org.eclipse.tm.terminal.view.ui.TerminalsView"
+ minimized="false"
+ relationship="stack"
+ relative="org.eclipse.ui.views.ProblemView"
+ visible="false">
+ </view>
+ </perspectiveExtension>
+
+ <perspectiveExtension targetID="org.eclipse.pde.ui.PDEPerspective">
+ <!-- Register the view shortcuts -->
+ <viewShortcut id="org.eclipse.tm.terminal.view.ui.TerminalsView"/>
+ <!-- Place the Terminal view relative to the Task List view -->
+ <view
+ id="org.eclipse.tm.terminal.view.ui.TerminalsView"
+ minimized="false"
+ relationship="stack"
+ relative="org.eclipse.ui.views.ProblemView"
+ visible="false">
+ </view>
+ </perspectiveExtension>
+
+ <perspectiveExtension targetID="*">
+ <!-- Show In shortcut -->
+ <showInPart id="org.eclipse.tm.terminal.view.ui.TerminalsView"/>
+ </perspectiveExtension>
+ </extension>
+
+<!-- Terminal connector contributions -->
+ <extension point="org.eclipse.tm.terminal.control.connectors">
+ <connector
+ name="%TerminalConnector.streams"
+ id="org.eclipse.tm.terminal.connector.streams.StreamsConnector"
+ hidden="true"
+ class="org.eclipse.tm.terminal.view.ui.streams.StreamsConnector"/>
+ </extension>
+
+<!-- Preferences contributions -->
+ <extension point="org.eclipse.core.expressions.propertyTesters">
+ <propertyTester
+ class="org.eclipse.tm.terminal.view.ui.internal.PropertyTester"
+ id="org.eclipse.tm.terminal.view.ui.PropertyTester"
+ namespace="org.eclipse.tm.terminal.view.ui"
+ properties="hasApplicableLauncherDelegates,canDisconnect"
+ type="java.lang.Object">
+ </propertyTester>
+ </extension>
+ <extension point="org.eclipse.tm.terminal.view.ui.launcherDelegates">
+ <delegate
+ class="org.eclipse.tm.terminal.view.ui.streams.StreamsLauncherDelegate"
+ hidden="true"
+ id="org.eclipse.tm.terminal.connector.streams.launcher.streams"
+ label="%StreamsLauncherDelegate.label">
+ </delegate>
+ </extension>
+ <extension point="org.eclipse.ui.menus">
+ <menuContribution locationURI="toolbar:org.eclipse.ui.main.toolbar?after=additions">
+ <toolbar
+ id="org.eclipse.tm.terminal.view.ui.toolbar"
+ label="%toolbar.terminal.label">
+ <command
+ commandId="org.eclipse.tm.terminal.view.ui.command.launchToolbar"
+ icon="icons/eview16/console_view.png"
+ id="org.eclipse.tm.terminal.view.ui.commands.launchToolbar"
+ label="%command.launch.label"
+ style="push"
+ tooltip="%command.launch.tooltip">
+ </command>
+ </toolbar>
+ </menuContribution>
+ <menuContribution locationURI="toolbar:org.eclipse.tm.terminal.view.ui.TerminalsView">
+ <command
+ commandId="org.eclipse.tm.terminal.view.ui.command.launchToolbar"
+ icon="icons/eview16/console_view.png"
+ id="org.eclipse.tm.terminal.view.ui.commands.launchToolbarTerminalsView"
+ label="%command.launch.label"
+ style="push"
+ tooltip="%command.launch.tooltip">
+ </command>
+ <command
+ commandId="org.eclipse.tm.terminal.view.ui.command.disconnect"
+ icon="icons/elcl16/disconnect.gif"
+ id="org.eclipse.tm.terminal.view.ui.commands.disconnect"
+ label="%command.disconnect.label"
+ style="push"
+ tooltip="%command.disconnect.tooltip">
+ </command>
+ </menuContribution>
+ <menuContribution locationURI="popup:org.eclipse.tm.terminal.view.ui.TerminalsView?after=additions">
+ <command
+ commandId="org.eclipse.tm.terminal.maximize"
+ id="org.eclipse.tm.terminal.view.ui.commands.maximizePart"
+ label="Maximize View"
+ style="push">
+ </command>
+ <command
+ commandId="org.eclipse.tm.terminal.quickaccess"
+ id="org.eclipse.tm.terminal.view.ui.commands.quickAccess"
+ label="Quick Access"
+ style="push">
+ </command>
+ </menuContribution>
+
+ <!-- Project Explorer "Show In" contribution -->
+ <menuContribution locationURI="popup:org.eclipse.ui.navigator.ProjectExplorer#PopupMenu?before=group.edit">
+ <menu
+ id="org.eclipse.tm.terminal.view.ui.ProjectExplorer.menu.showIn"
+ label="%menu.showIn.label"
+ mnemonic="%menu.showIn.mnemonic">
+ <separator name="additions" visible="false"/>
+ <dynamic
+ class="org.eclipse.tm.terminal.view.ui.local.showin.DynamicContributionItems"
+ id="org.eclipse.tm.terminal.connector.local.LocalLauncherDynamicContributionItems">
+ <visibleWhen
+ checkEnabled="false">
+ <or>
+ <with variable="selection">
+ <iterate operator="and" ifEmpty="false">
+ <adapt type="org.eclipse.core.resources.IResource">
+ <not>
+ <!-- The JDT Project Explorer contributions are adding the "Navigate -> Show In" quick menu.
+ See o.e.jdt.internal.ui.navigator.JavaNavigatorActionProvider -->
+ <test property="org.eclipse.core.resources.projectNature" value="org.eclipse.jdt.core.javanature" />
+ </not>
+ </adapt>
+ </iterate>
+ </with>
+ <and>
+ <with variable="selection">
+ <iterate operator="and" ifEmpty="false">
+ <adapt type="org.eclipse.core.resources.IResource">
+ <!-- The JDT Project Explorer contributions are adding the "Navigate -> Show In" quick menu.
+ See o.e.jdt.internal.ui.navigator.JavaNavigatorActionProvider -->
+ <test property="org.eclipse.core.resources.projectNature" value="org.eclipse.jdt.core.javanature" />
+ </adapt>
+ </iterate>
+ </with>
+ <with
+ variable="org.eclipse.tm.terminal.external.executable.configured">
+ <equals
+ value="TRUE">
+ </equals>
+ </with>
+ </and>
+ </or>
+ </visibleWhen>
+ </dynamic>
+ </menu>
+ </menuContribution>
+
+ <!-- JDT Package Explorer "Show In" contribution -->
+ <menuContribution locationURI="popup:org.eclipse.jdt.ui.PackageExplorer?before=group.edit">
+ <menu
+ id="org.eclipse.tm.terminal.view.ui.PackageExplorer.menu.showIn"
+ label="%menu.showIn.label"
+ mnemonic="%menu.showIn.mnemonic">
+ <separator name="additions" visible="false"/>
+ <dynamic
+ class="org.eclipse.tm.terminal.view.ui.local.showin.DynamicContributionItems"
+ id="org.eclipse.tm.terminal.connector.local.LocalLauncherDynamicContributionItems">
+ <visibleWhen
+ checkEnabled="false">
+ <or>
+ <with variable="selection">
+ <iterate operator="and" ifEmpty="false">
+ <adapt type="org.eclipse.core.resources.IResource">
+ <not>
+ <!-- The JDT Project Explorer contributions are adding the "Navigate -> Show In" quick menu.
+ See o.e.jdt.internal.ui.navigator.JavaNavigatorActionProvider -->
+ <test property="org.eclipse.core.resources.projectNature" value="org.eclipse.jdt.core.javanature" />
+ </not>
+ </adapt>
+ </iterate>
+ </with>
+ <and>
+ <with variable="selection">
+ <iterate operator="and" ifEmpty="false">
+ <adapt type="org.eclipse.core.resources.IResource">
+ <!-- The JDT Project Explorer contributions are adding the "Navigate -> Show In" quick menu.
+ See o.e.jdt.internal.ui.navigator.JavaNavigatorActionProvider -->
+ <test property="org.eclipse.core.resources.projectNature" value="org.eclipse.jdt.core.javanature" />
+ </adapt>
+ </iterate>
+ </with>
+ <with
+ variable="org.eclipse.tm.terminal.external.executable.configured">
+ <equals
+ value="TRUE">
+ </equals>
+ </with>
+ </and>
+ </or>
+ </visibleWhen>
+ </dynamic>
+ </menu>
+ </menuContribution>
+
+ <!-- Bndtools Explorer "Show In" contribution -->
+ <menuContribution locationURI="popup:bndtools.PackageExplorer?before=group.edit">
+ <menu
+ id="org.eclipse.tm.terminal.view.ui.BndtoolsExplorer.menu.showIn"
+ label="%menu.showIn.label"
+ mnemonic="%menu.showIn.mnemonic">
+ <separator name="additions" visible="false"/>
+ <dynamic
+ class="org.eclipse.tm.terminal.view.ui.local.showin.DynamicContributionItems"
+ id="org.eclipse.tm.terminal.connector.local.LocalLauncherDynamicContributionItems">
+ <visibleWhen
+ checkEnabled="false">
+ <or>
+ <with variable="selection">
+ <iterate operator="and" ifEmpty="false">
+ <adapt type="org.eclipse.core.resources.IResource">
+ <not>
+ <!-- The JDT Project Explorer contributions are adding the "Navigate -> Show In" quick menu.
+ See o.e.jdt.internal.ui.navigator.JavaNavigatorActionProvider -->
+ <test property="org.eclipse.core.resources.projectNature" value="org.eclipse.jdt.core.javanature" />
+ </not>
+ </adapt>
+ </iterate>
+ </with>
+ <and>
+ <with variable="selection">
+ <iterate operator="and" ifEmpty="false">
+ <adapt type="org.eclipse.core.resources.IResource">
+ <!-- The JDT Project Explorer contributions are adding the "Navigate -> Show In" quick menu.
+ See o.e.jdt.internal.ui.navigator.JavaNavigatorActionProvider -->
+ <test property="org.eclipse.core.resources.projectNature" value="org.eclipse.jdt.core.javanature" />
+ </adapt>
+ </iterate>
+ </with>
+ <with
+ variable="org.eclipse.tm.terminal.external.executable.configured">
+ <equals
+ value="TRUE">
+ </equals>
+ </with>
+ </and>
+ </or>
+ </visibleWhen>
+ </dynamic>
+ </menu>
+ </menuContribution>
+
+ </extension>
+ <extension point="org.eclipse.ui.commands">
+ <category
+ id="org.eclipse.tm.terminal.view.ui.commands.category"
+ name="%command.category.name">
+ </category>
+
+ <command
+ categoryId="org.eclipse.tm.terminal.view.ui.commands.category"
+ helpContextId="org.eclipse.tm.terminal.view.ui.command_Launch"
+ id="org.eclipse.tm.terminal.view.ui.command.launch"
+ name="%command.launch.selection.name">
+ </command>
+ <command
+ categoryId="org.eclipse.tm.terminal.view.ui.commands.category"
+ helpContextId="org.eclipse.tm.terminal.view.ui.command_Launch"
+ id="org.eclipse.tm.terminal.view.ui.command.launchToolbar"
+ name="%command.launch.name">
+ </command>
+ <command
+ categoryId="org.eclipse.tm.terminal.view.ui.commands.category"
+ helpContextId="org.eclipse.tm.terminal.view.ui.command_Disconnect"
+ id="org.eclipse.tm.terminal.view.ui.command.disconnect"
+ name="%command.disconnect.name">
+ </command>
+ <command
+ categoryId="org.eclipse.tm.terminal.view.ui.commands.category"
+ helpContextId="org.eclipse.tm.terminal.view.ui.command_NewView"
+ id="org.eclipse.tm.terminal.view.ui.command.newview"
+ name="%command.newview.name">
+ </command>
+ </extension>
+ <extension point="org.eclipse.ui.bindings">
+ <key
+ commandId="org.eclipse.tm.terminal.view.ui.command.launchToolbar"
+ contextId="org.eclipse.ui.contexts.window"
+ schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
+ sequence="CTRL+SHIFT+M3+T"/> <!-- Bug 435111: Don't use M1 since COMMAND+Option T already taken on Mac -->
+ </extension>
+ <extension point="org.eclipse.ui.handlers">
+ <handler
+ class="org.eclipse.tm.terminal.view.ui.internal.handler.LaunchTerminalCommandHandler"
+ commandId="org.eclipse.tm.terminal.view.ui.command.launch">
+ </handler>
+ <handler
+ class="org.eclipse.tm.terminal.view.ui.internal.handler.LaunchTerminalCommandHandler"
+ commandId="org.eclipse.tm.terminal.view.ui.command.launchToolbar">
+ </handler>
+ <handler
+ class="org.eclipse.tm.terminal.view.ui.internal.handler.DisconnectTerminalCommandHandler"
+ commandId="org.eclipse.tm.terminal.view.ui.command.disconnect">
+ <enabledWhen>
+ <with variable="activePart">
+ <instanceof value="org.eclipse.tm.terminal.view.ui.interfaces.ITerminalsView"/>
+ <test property="org.eclipse.tm.terminal.view.ui.canDisconnect" value="true"/>
+ </with>
+ </enabledWhen>
+ </handler>
+
+ <handler
+ class="org.eclipse.tm.terminal.view.ui.internal.handler.MaximizeViewHandler"
+ commandId="org.eclipse.tm.terminal.maximize">
+ <activeWhen>
+ <with variable="activePartId">
+ <equals value="org.eclipse.tm.terminal.view.ui.TerminalsView"/>
+ </with>
+ </activeWhen>
+ </handler>
+
+ <handler
+ class="org.eclipse.tm.terminal.view.ui.internal.handler.QuickAccessHandler"
+ commandId="org.eclipse.tm.terminal.quickaccess">
+ <activeWhen>
+ <with variable="activePartId">
+ <equals value="org.eclipse.tm.terminal.view.ui.TerminalsView"/>
+ </with>
+ </activeWhen>
+ </handler>
+
+ <handler
+ class="org.eclipse.tm.terminal.view.ui.internal.handler.NewTerminalViewHandler"
+ commandId="org.eclipse.tm.terminal.view.ui.command.newview">
+ <activeWhen>
+ <with variable="activePartId">
+ <equals value="org.eclipse.tm.terminal.view.ui.TerminalsView"/>
+ </with>
+ </activeWhen>
+ </handler>
+ </extension>
+ <extension point="org.eclipse.help.contexts">
+ <contexts
+ file="contexts.xml">
+ </contexts>
+ </extension>
+ <extension point="org.eclipse.ui.activities">
+ <category
+ description="%activities.category.terminals.description"
+ id="org.eclipse.tm.terminal.view.ui.category"
+ name="%activities.category.terminals.name">
+ </category>
+
+ <activity
+ description="%activities.activity.terminals.views.description"
+ id="org.eclipse.tm.terminal.view.ui.activity.views"
+ name="%activities.activity.terminals.views.name">
+ </activity>
+
+ <activityPatternBinding
+ activityId="org.eclipse.tm.terminal.view.ui.activity.views"
+ pattern="org\.eclipse\.tm\.terminal\.view\.ui/org\.eclipse\.tm\.terminal\.view\.ui\.TerminalsView">
+ </activityPatternBinding>
+ <activityPatternBinding
+ activityId="org.eclipse.tm.terminal.view.ui.activity.views"
+ pattern="org\.eclipse\.tm\.terminal\.view\.ui/org\.eclipse\.tm\.terminal\.view\.ui\.commands\.^(?!org\.eclipse\.tm\.terminal\.view\.ui\.commands\.launchToolbar).*">
+ </activityPatternBinding>
+
+ <categoryActivityBinding
+ activityId="org.eclipse.tm.terminal.view.ui.activity.views"
+ categoryId="org.eclipse.tm.terminal.view.ui.category">
+ </categoryActivityBinding>
+
+ <defaultEnablement
+ id="org.eclipse.tm.terminal.view.ui.activity.views">
+ </defaultEnablement>
+
+ <!-- Hide the old TCF Terminals (Migration Only) View from the View Shortcuts Menu -->
+ <activity
+ id="org.eclipse.tm.terminal.view.ui.activity.oldview"
+ name="Terminal Views (Old)">
+ </activity>
+
+ <activityPatternBinding
+ activityId="org.eclipse.tm.terminal.view.ui.activity.oldview"
+ pattern=".*/org\.eclipse\.tcf\.te\.ui\.terminals\.TerminalsView">
+ </activityPatternBinding>
+
+ <!-- TBD Remove this category binding to hide the Migration Capability from the Preferences -->
+ <!--
+ <categoryActivityBinding
+ activityId="org.eclipse.tm.terminal.view.ui.activity.oldview"
+ categoryId="org.eclipse.tm.terminal.view.ui.category">
+ </categoryActivityBinding>
+ -->
+ </extension>
+ <extension point="org.eclipse.ui.activities">
+ <category
+ description="%activities.category.terminals.description"
+ id="org.eclipse.tm.terminal.view.ui.category"
+ name="%activities.category.terminals.name">
+ </category>
+
+ <activity
+ description="%activities.activity.terminals.maintoolbar.description"
+ id="org.eclipse.tm.terminal.view.ui.activity.maintoolbar"
+ name="%activities.activity.terminals.maintoolbar.name">
+ </activity>
+
+ <activityPatternBinding
+ activityId="org.eclipse.tm.terminal.view.ui.activity.maintoolbar"
+ pattern="org\.eclipse\.tm\.terminal\.view\.ui/org\.eclipse\.tm\.terminal\.view\.ui\.toolbar">
+ </activityPatternBinding>
+ <activityPatternBinding
+ activityId="org.eclipse.tm.terminal.view.ui.activity.maintoolbar"
+ pattern="org\.eclipse\.tm\.terminal\.view\.ui/org\.eclipse\.tm\.terminal\.view\.ui\.commands\.launchToolbar">
+ </activityPatternBinding>
+
+ <categoryActivityBinding
+ activityId="org.eclipse.tm.terminal.view.ui.activity.maintoolbar"
+ categoryId="org.eclipse.tm.terminal.view.ui.category">
+ </categoryActivityBinding>
+
+ <defaultEnablement
+ id="org.eclipse.tm.terminal.view.ui.activity.maintoolbar">
+ </defaultEnablement>
+ </extension>
+
+ <extension point="org.eclipse.ui.contexts">
+ <context
+ id="org.eclipse.tm.terminal.view.ui.TerminalsView"
+ name="%TerminalsView.context.name"
+ description="%TerminalsView.context.description"
+ parentId="org.eclipse.ui.contexts.window">
+ </context>
+ </extension>
+ <extension
+ point="org.eclipse.ui.preferencePages">
+ <page
+ category="org.eclipse.tm.terminal.TerminalPreferencePage"
+ class="org.eclipse.tm.terminal.view.ui.preferences.PreferencePage"
+ id="org.eclipse.tm.terminal.view.ui.preferences"
+ name="%preference.page.name">
+ </page>
+ </extension>
+ <extension point="org.eclipse.core.runtime.preferences">
+ <initializer class="org.eclipse.tm.terminal.view.ui.preferences.PreferencesInitializer"/>
+ </extension>
+
+ <extension
+ point="org.eclipse.ui.services">
+ <sourceProvider
+ provider="org.eclipse.tm.terminal.view.ui.internal.ExternalExecutablesState">
+ <variable
+ name="org.eclipse.tm.terminal.external.executable.configured"
+ priorityLevel="workbench">
+ </variable>
+ </sourceProvider>
+ </extension>
+</plugin>
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/schema/launcherDelegates.exsd b/terminal/plugins/org.eclipse.tm.terminal.view.ui/schema/launcherDelegates.exsd
new file mode 100644
index 00000000000..4e011a1e3a3
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/schema/launcherDelegates.exsd
@@ -0,0 +1,217 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.tcf.te.ui.terminals" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+ <appinfo>
+ <meta.schema plugin="org.eclipse.tcf.te.ui.terminals" id="launcherDelegates" name="Terminal Launcher Delegates"/>
+ </appinfo>
+ <documentation>
+ This extension point is used to contribute terminal launcher delegates.
+&lt;p&gt;
+Terminal launcher delegates contributes terminal settings widget to the &lt;code&gt;LaunchTerminalSettingsDialog&lt;/code&gt; required to open a remote terminal through a specific communication channel, like TCF or SSH.
+ </documentation>
+ </annotation>
+
+ <include schemaLocation="schema://org.eclipse.core.expressions/schema/expressionLanguage.exsd"/>
+
+ <element name="extension">
+ <annotation>
+ <appinfo>
+ <meta.element />
+ </appinfo>
+ </annotation>
+ <complexType>
+ <sequence>
+ <element ref="delegate" minOccurs="1" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute translatable="true"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="delegate">
+ <annotation>
+ <documentation>
+ Declares a terminal launcher delegate contribution.
+ </documentation>
+ </annotation>
+ <complexType>
+ <sequence>
+ <element ref="class" minOccurs="0" maxOccurs="1"/>
+ <element ref="description" minOccurs="0" maxOccurs="1"/>
+ <element ref="enablement" minOccurs="0" maxOccurs="1"/>
+ </sequence>
+ <attribute name="id" type="string" use="required">
+ <annotation>
+ <documentation>
+ The unique id of the terminal launcher delegate contribution.
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="label" type="string">
+ <annotation>
+ <documentation>
+ The label representing the terminal launcher delegate within the UI.
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="class" type="string">
+ <annotation>
+ <documentation>
+ The class that implements &lt;code&gt;org.eclipse.tcf.te.ui.terminals.interfaces.ILauncherDelegate&lt;/code&gt; or extends &lt;code&gt;org.eclipse.tcf.te.ui.terminals.launcher.AbstractLauncherDelegate&lt;/code&gt;.
+&lt;p&gt;
+The terminal launcher delegate implementation class must be specified either by the class attribute or the class child element!
+ </documentation>
+ <appinfo>
+ <meta.attribute kind="java" basedOn="org.eclipse.tm.terminal.view.ui.launcher.AbstractLauncherDelegate:org.eclipse.tm.terminal.view.ui.interfaces.ILauncherDelegate"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ <attribute name="hidden" type="boolean">
+ <annotation>
+ <documentation>
+ If &lt;code&gt;true&lt;/code&gt;, than the terminal launcher delegate is not visible in the UI, even if a possible &lt;code&gt;enablement&lt;/code&gt; will evaluate to &lt;code&gt;true&lt;/code&gt;.
+ </documentation>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="description" type="string">
+ <annotation>
+ <documentation>
+ A short description of the terminal connector type to be presented in the UI.
+ </documentation>
+ </annotation>
+ </element>
+
+ <element name="class">
+ <annotation>
+ <documentation>
+ Used when creating an &lt;code&gt;IExecutableExtension&lt;/code&gt; with a named parameter, or more than one.
+ </documentation>
+ </annotation>
+ <complexType>
+ <sequence>
+ <element ref="parameter" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="class" type="string">
+ <annotation>
+ <documentation>
+ The class that implements &lt;code&gt;org.eclipse.tcf.te.ui.terminals.interfaces.ILauncherDelegate&lt;/code&gt; or extends &lt;code&gt;org.eclipse.tcf.te.ui.terminals.launcher.AbstractLauncherDelegate&lt;/code&gt;.
+&lt;p&gt;
+The terminal launcher delegate implementation class must be specified either by the class attribute or the class child element!
+ </documentation>
+ <appinfo>
+ <meta.attribute kind="java" basedOn="org.eclipse.tm.terminal.view.ui.launcher.AbstractLauncherDelegate:org.eclipse.tm.terminal.view.ui.interfaces.ILauncherDelegate"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="parameter">
+ <annotation>
+ <documentation>
+ A parameter for an &lt;code&gt;IExecutableExtension&lt;/code&gt;.
+ </documentation>
+ </annotation>
+ <complexType>
+ <attribute name="name" type="string" use="required">
+ <annotation>
+ <documentation>
+ &lt;p&gt;The parameter name.&lt;/p&gt;
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="value" type="string" use="required">
+ <annotation>
+ <documentation>
+ &lt;p&gt;The parameter value.&lt;/p&gt;
+ </documentation>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="since"/>
+ </appinfo>
+ <documentation>
+ Target Explorer 1.0.0
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="examples"/>
+ </appinfo>
+ <documentation>
+ This is an example of the extension point usage:
+&lt;p&gt;
+&lt;pre&gt;&lt;code&gt;
+ &lt;extension point=&quot;org.eclipse.tcf.te.ui.terminals.launcherDelegates&quot;&gt;
+ &lt;delegate
+ id=&quot;org.eclipse.tcf.te.ui.terminals.launcher.tcf&quot;
+ class=&quot;org.eclipse.tcf.te.tcf.terminals.ui.internal.TerminalLauncherDelegate&quot;
+ label=&quot;TCF Terminal&quot;&gt;
+ &lt;enablement&gt;
+ ...
+ &lt;/enablement&gt;
+ &lt;/delegate&gt;
+ &lt;/extension&gt;
+&lt;/code&gt;&lt;/pre&gt;
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="apiinfo"/>
+ </appinfo>
+ <documentation>
+ The provider of a launcher delegate must implement &lt;samp&gt;org.eclipse.tcf.te.ui.terminals.interfaces.ILauncherDelegate&lt;/samp&gt;.
+ </documentation>
+ </annotation>
+
+
+ <annotation>
+ <appinfo>
+ <meta.section type="copyright"/>
+ </appinfo>
+ <documentation>
+ Copyright (c) 2011, 2018 Wind River Systems, Inc. and others.
+
+All rights reserved.
+
+This program and the accompanying materials are made available under the terms
+of the Eclipse Public License 2.0 which accompanies this distribution, and is
+available at https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+ </documentation>
+ </annotation>
+
+</schema>
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/actions/AbstractAction.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/actions/AbstractAction.java
new file mode 100644
index 00000000000..31967001c57
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/actions/AbstractAction.java
@@ -0,0 +1,183 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.actions;
+
+import org.eclipse.core.commands.Command;
+import org.eclipse.core.commands.ParameterizedCommand;
+import org.eclipse.core.expressions.EvaluationContext;
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.swt.custom.CTabItem;
+import org.eclipse.tm.internal.terminal.control.ITerminalViewControl;
+import org.eclipse.tm.internal.terminal.control.actions.AbstractTerminalAction;
+import org.eclipse.tm.terminal.view.ui.activator.UIPlugin;
+import org.eclipse.tm.terminal.view.ui.nls.Messages;
+import org.eclipse.tm.terminal.view.ui.tabs.TabFolderManager;
+import org.eclipse.tm.terminal.view.ui.tabs.TabFolderToolbarHandler;
+import org.eclipse.ui.ISources;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.commands.ICommandService;
+import org.eclipse.ui.handlers.IHandlerService;
+
+/**
+ * Abstract terminal action wrapper implementation.
+ */
+public abstract class AbstractAction extends AbstractTerminalAction {
+ // Reference to the parent toolbar handler
+ private final TabFolderToolbarHandler parent;
+
+ /**
+ * Constructor.
+ *
+ * @param parent
+ * The parent toolbar handler instance. Must not be
+ * <code>null</code>.
+ * @param id
+ * The terminal action id. Must not be <code>null</code>.
+ */
+ public AbstractAction(TabFolderToolbarHandler parent, String id) {
+ super(id);
+
+ Assert.isNotNull(parent);
+ this.parent = parent;
+ }
+
+ /**
+ * Returns the parent toolbar handler.
+ *
+ * @return The parent toolbar handler.
+ */
+ protected final TabFolderToolbarHandler getParent() {
+ return parent;
+ }
+
+ @Override
+ protected ITerminalViewControl getTarget() {
+ return getParent().getActiveTerminalViewControl();
+ }
+
+ @Override
+ public void run() {
+ // Get the active tab item from the tab folder manager
+ TabFolderManager manager = getParent().getAdapter(TabFolderManager.class);
+ if (manager != null) {
+ // If we have the active tab item, we can get the active terminal control
+ CTabItem activeTabItem = manager.getActiveTabItem();
+ if (activeTabItem != null) {
+ // And execute the command
+ executeCommand(activeTabItem.getData("customData")); //$NON-NLS-1$
+ }
+ }
+ }
+
+ /**
+ * Executes the command for the given data node as current and active menu selection.
+ * <p>
+ * <b>Node:</b> If the provided data node is <code>null</code>, the method will trigger
+ * the command with an empty selection.
+ *
+ * @param data The terminal custom data node or <code>null</code>.
+ */
+ protected void executeCommand(Object data) {
+ // Get the command service from the workbench
+ ICommandService service = PlatformUI.getWorkbench().getAdapter(ICommandService.class);
+ if (service != null && getCommandId() != null) {
+ // Get the command
+ final Command command = service.getCommand(getCommandId());
+ if (command != null && command.isDefined()) {
+ IHandlerService handlerSvc = PlatformUI.getWorkbench().getService(IHandlerService.class);
+ Assert.isNotNull(handlerSvc);
+
+ // Construct a selection element
+ IStructuredSelection selection = data != null ? new StructuredSelection(data)
+ : new StructuredSelection();
+ // Construct the application context
+ EvaluationContext context = new EvaluationContext(handlerSvc.getCurrentState(), selection);
+ // Apply the selection to the "activeMenuSelection" and "selection" variable too
+ context.addVariable(ISources.ACTIVE_CURRENT_SELECTION_NAME, selection);
+ context.addVariable(ISources.ACTIVE_MENU_SELECTION_NAME, selection);
+ // Allow plug-in activation
+ context.setAllowPluginActivation(true);
+ // And execute the event
+ try {
+ ParameterizedCommand pCmd = ParameterizedCommand.generateCommand(command, null);
+ Assert.isNotNull(pCmd);
+
+ handlerSvc.executeCommandInContext(pCmd, null, context);
+ } catch (Exception e) {
+ IStatus status = new Status(IStatus.ERROR, UIPlugin.getUniqueIdentifier(),
+ NLS.bind(Messages.AbstractAction_error_commandExecutionFailed, getCommandId(),
+ e.getLocalizedMessage()),
+ e);
+ UIPlugin.getDefault().getLog().log(status);
+ }
+ }
+ }
+ }
+
+ /**
+ * Returns the command id of the command to execute.
+ *
+ * @return The command id. Must be never <code>null</code>.
+ */
+ protected abstract String getCommandId();
+
+ @Override
+ public void updateAction(boolean aboutToShow) {
+ // Ignore the flag given from outside. We have to decide ourself
+ // what the enabled state of the action is
+ boolean enabled = getTarget() != null;
+
+ // If a target terminal control is available, we need to find the corresponding
+ // VLM target object which we need to trigger the handler
+ if (enabled) {
+ // The action will be enabled if we can determine the VLM target object
+ enabled = false;
+ // Get the active tab item from the tab folder manager
+ TabFolderManager manager = getParent().getAdapter(TabFolderManager.class);
+ if (manager != null) {
+ // If we have the active tab item, we can get the active terminal control
+ CTabItem activeTabItem = manager.getActiveTabItem();
+ if (activeTabItem != null) {
+ enabled = checkEnableAction(activeTabItem.getData("customData")); //$NON-NLS-1$
+ }
+ }
+ }
+
+ setEnabled(enabled);
+ }
+
+ /**
+ * Checks if the action should be enabled based on the given terminal data object.
+ *
+ * @param data The terminal data node or <code>null</code>.
+ * @return <code>True</code> to enable the action, <code>false</code> otherwise.
+ */
+ protected boolean checkEnableAction(Object data) {
+ return data != null;
+ }
+
+ /**
+ * Returns if the action is a separator. Returning <code>true</code> here
+ * means that an additional separator toolbar element is added right or
+ * above of the action.
+ *
+ * @return <code>True</code> if the action is separating the parent contribution manager, <code>false</code> otherwise.
+ */
+ public boolean isSeparator() {
+ return false;
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/actions/InvertColorsAction.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/actions/InvertColorsAction.java
new file mode 100644
index 00000000000..2ea1e97337f
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/actions/InvertColorsAction.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 2021 Fabrizio Iannetti.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.tm.terminal.view.ui.actions;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.tm.internal.terminal.control.ITerminalViewControl;
+import org.eclipse.tm.internal.terminal.control.actions.AbstractTerminalAction;
+import org.eclipse.tm.internal.terminal.provisional.api.TerminalState;
+import org.eclipse.tm.terminal.view.ui.nls.Messages;
+import org.eclipse.tm.terminal.view.ui.tabs.TabFolderManager;
+
+/**
+ * @since 4.8
+ */
+public class InvertColorsAction extends AbstractTerminalAction {
+
+ /**
+ * Constructor.
+ *
+ * @param tabFolderManager The parent tab folder manager. Must not be <code>null</code>.
+ */
+ public InvertColorsAction(TabFolderManager tabFolderManager) {
+ super(null, InvertColorsAction.class.getName(), IAction.AS_CHECK_BOX);
+
+ Assert.isNotNull(tabFolderManager);
+ setupAction(Messages.InvertColorsAction_menu, Messages.InvertColorsAction_tooltip, (ImageDescriptor) null,
+ (ImageDescriptor) null, (ImageDescriptor) null, true);
+ }
+
+ @Override
+ public void run() {
+ ITerminalViewControl target = getTarget();
+ if (target == null)
+ return;
+ target.setInvertedColors(!target.isInvertedColors());
+ }
+
+ @Override
+ public void updateAction(boolean aboutToShow) {
+ setEnabled(aboutToShow && getTarget() != null && getTarget().getState() == TerminalState.CONNECTED);
+ setChecked(aboutToShow && getTarget() != null && getTarget().isInvertedColors());
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/actions/NewTerminalViewAction.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/actions/NewTerminalViewAction.java
new file mode 100644
index 00000000000..7d61839b9e7
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/actions/NewTerminalViewAction.java
@@ -0,0 +1,76 @@
+/*******************************************************************************
+ * Copyright (c) 2015, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.actions;
+
+import org.eclipse.core.commands.Command;
+import org.eclipse.core.commands.ParameterizedCommand;
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.tm.internal.terminal.control.actions.AbstractTerminalAction;
+import org.eclipse.tm.terminal.view.ui.activator.UIPlugin;
+import org.eclipse.tm.terminal.view.ui.interfaces.ITerminalsView;
+import org.eclipse.tm.terminal.view.ui.interfaces.ImageConsts;
+import org.eclipse.tm.terminal.view.ui.nls.Messages;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.commands.ICommandService;
+import org.eclipse.ui.handlers.IHandlerService;
+
+/**
+ * Opens a new terminal view with a new secondary view ID.
+ *
+ * @since 4.1
+ */
+public class NewTerminalViewAction extends AbstractTerminalAction {
+
+ //private ITerminalsView view = null;
+
+ /**
+ * Constructor.
+ */
+ public NewTerminalViewAction(ITerminalsView view) {
+ super(null, NewTerminalViewAction.class.getName(), IAction.AS_PUSH_BUTTON);
+
+ //this.view = view;
+ setupAction(Messages.NewTerminalViewAction_menu, Messages.NewTerminalViewAction_tooltip,
+ UIPlugin.getImageDescriptor(ImageConsts.ACTION_NewTerminalView_Hover),
+ UIPlugin.getImageDescriptor(ImageConsts.ACTION_NewTerminalView_Enabled),
+ UIPlugin.getImageDescriptor(ImageConsts.ACTION_NewTerminalView_Disabled), true);
+ setEnabled(true);
+ }
+
+ @Override
+ public void run() {
+ ICommandService service = PlatformUI.getWorkbench().getService(ICommandService.class);
+ Command command = service != null ? service.getCommand("org.eclipse.tm.terminal.view.ui.command.newview") //$NON-NLS-1$
+ : null;
+ if (command != null && command.isDefined() && command.isEnabled()) {
+ try {
+ ParameterizedCommand pCmd = ParameterizedCommand.generateCommand(command, null);
+ Assert.isNotNull(pCmd);
+ IHandlerService handlerSvc = PlatformUI.getWorkbench().getService(IHandlerService.class);
+ Assert.isNotNull(handlerSvc);
+ handlerSvc.executeCommandInContext(pCmd, null, handlerSvc.getCurrentState());
+ } catch (Exception e) {
+ // If the platform is in debug mode, we print the exception to the log view
+ if (Platform.inDebugMode()) {
+ IStatus status = new Status(IStatus.ERROR, UIPlugin.getUniqueIdentifier(),
+ Messages.AbstractTriggerCommandHandler_error_executionFailed, e);
+ UIPlugin.getDefault().getLog().log(status);
+ }
+ }
+ }
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/actions/RenameTerminalAction.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/actions/RenameTerminalAction.java
new file mode 100644
index 00000000000..a9cf9a673e8
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/actions/RenameTerminalAction.java
@@ -0,0 +1,65 @@
+/*******************************************************************************
+ * Copyright (c) 2021 Kichwa Coders Canada Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+package org.eclipse.tm.terminal.view.ui.actions;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.jface.dialogs.InputDialog;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.window.Window;
+import org.eclipse.tm.internal.terminal.control.ITerminalViewControl;
+import org.eclipse.tm.internal.terminal.control.actions.AbstractTerminalAction;
+import org.eclipse.tm.terminal.view.ui.nls.Messages;
+import org.eclipse.tm.terminal.view.ui.tabs.TabFolderManager;
+
+/**
+ * @since 4.8
+ */
+public class RenameTerminalAction extends AbstractTerminalAction {
+
+ /**
+ * Constructor.
+ *
+ * @param tabFolderManager The parent tab folder manager. Must not be <code>null</code>.
+ */
+ public RenameTerminalAction(TabFolderManager tabFolderManager) {
+ super(RenameTerminalAction.class.getName());
+
+ Assert.isNotNull(tabFolderManager);
+ setupAction(Messages.RenameTerminalAction_menu, Messages.RenameTerminalAction_tooltip, (ImageDescriptor) null,
+ (ImageDescriptor) null, (ImageDescriptor) null, true);
+ }
+
+ @Override
+ public void run() {
+ ITerminalViewControl target = getTarget();
+ if (target == null)
+ return;
+ InputDialog inputDialog = new InputDialog(target.getControl().getShell(), //
+ Messages.RenameTerminalAction_inputdialog_title, //
+ Messages.RenameTerminalAction_inputdialog_prompt, //
+ Messages.RenameTerminalAction_inputdialog_defaulttext, //
+ null);
+ if (inputDialog.open() == Window.OK) {
+ String value = inputDialog.getValue();
+ if (value != null) {
+ target.setTerminalTitle(value);
+ }
+ }
+
+ }
+
+ @Override
+ public void updateAction(boolean aboutToShow) {
+ setEnabled(aboutToShow && getTarget() != null);
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/actions/SelectEncodingAction.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/actions/SelectEncodingAction.java
new file mode 100644
index 00000000000..8b7177a2d32
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/actions/SelectEncodingAction.java
@@ -0,0 +1,66 @@
+/*******************************************************************************
+ * Copyright (c) 2012, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.actions;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.window.Window;
+import org.eclipse.tm.internal.terminal.control.ITerminalViewControl;
+import org.eclipse.tm.internal.terminal.control.actions.AbstractTerminalAction;
+import org.eclipse.tm.internal.terminal.provisional.api.TerminalState;
+import org.eclipse.tm.terminal.view.ui.internal.dialogs.EncodingSelectionDialog;
+import org.eclipse.tm.terminal.view.ui.nls.Messages;
+import org.eclipse.tm.terminal.view.ui.tabs.TabFolderManager;
+
+/**
+ * Terminal control select encoding action implementation.
+ */
+public class SelectEncodingAction extends AbstractTerminalAction {
+ // Reference to the parent tab folder manager
+ private final TabFolderManager tabFolderManager;
+
+ /**
+ * Constructor.
+ *
+ * @param tabFolderManager The parent tab folder manager. Must not be <code>null</code>.
+ */
+ public SelectEncodingAction(TabFolderManager tabFolderManager) {
+ super(null, SelectEncodingAction.class.getName(), IAction.AS_PUSH_BUTTON);
+
+ Assert.isNotNull(tabFolderManager);
+ this.tabFolderManager = tabFolderManager;
+
+ setupAction(Messages.SelectEncodingAction_menu, Messages.SelectEncodingAction_tooltip, (ImageDescriptor) null,
+ (ImageDescriptor) null, (ImageDescriptor) null, true);
+ }
+
+ @Override
+ public void run() {
+ ITerminalViewControl target = getTarget();
+ if (target == null)
+ return;
+
+ EncodingSelectionDialog dialog = new EncodingSelectionDialog(null);
+ dialog.setCharset(target.getCharset());
+ if (dialog.open() == Window.OK) {
+ target.setCharset(dialog.getCharset());
+ tabFolderManager.updateStatusLine();
+ }
+ }
+
+ @Override
+ public void updateAction(boolean aboutToShow) {
+ setEnabled(aboutToShow && getTarget() != null && getTarget().getState() == TerminalState.CONNECTED);
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/actions/TabScrollLockAction.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/actions/TabScrollLockAction.java
new file mode 100644
index 00000000000..25e1b3352ca
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/actions/TabScrollLockAction.java
@@ -0,0 +1,54 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.actions;
+
+import org.eclipse.jface.action.IAction;
+import org.eclipse.tm.internal.terminal.control.ITerminalViewControl;
+import org.eclipse.tm.internal.terminal.control.actions.AbstractTerminalAction;
+import org.eclipse.tm.internal.terminal.provisional.api.TerminalState;
+import org.eclipse.tm.terminal.view.ui.activator.UIPlugin;
+import org.eclipse.tm.terminal.view.ui.interfaces.ImageConsts;
+import org.eclipse.tm.terminal.view.ui.nls.Messages;
+
+/**
+ * Terminal console tab scroll lock action.
+ */
+public class TabScrollLockAction extends AbstractTerminalAction {
+
+ /**
+ * Constructor.
+ */
+ public TabScrollLockAction() {
+ super(null, TabScrollLockAction.class.getName(), IAction.AS_RADIO_BUTTON);
+
+ setupAction(Messages.TabScrollLockAction_text, Messages.TabScrollLockAction_tooltip,
+ UIPlugin.getImageDescriptor(ImageConsts.ACTION_ScrollLock_Hover),
+ UIPlugin.getImageDescriptor(ImageConsts.ACTION_ScrollLock_Enabled),
+ UIPlugin.getImageDescriptor(ImageConsts.ACTION_ScrollLock_Disabled), true);
+ }
+
+ @Override
+ public void run() {
+ ITerminalViewControl target = getTarget();
+ if (target != null) {
+ target.setScrollLock(!target.isScrollLock());
+ setChecked(target.isScrollLock());
+ }
+ }
+
+ @Override
+ public void updateAction(boolean aboutToShow) {
+ setEnabled(aboutToShow && getTarget() != null && getTarget().getState() == TerminalState.CONNECTED);
+ setChecked(getTarget() != null && getTarget().isScrollLock());
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/actions/ToggleCommandFieldAction.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/actions/ToggleCommandFieldAction.java
new file mode 100644
index 00000000000..13efde8f3b9
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/actions/ToggleCommandFieldAction.java
@@ -0,0 +1,83 @@
+/*******************************************************************************
+ * Copyright (c) 2012, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.actions;
+
+import org.eclipse.jface.action.IAction;
+import org.eclipse.swt.custom.CTabItem;
+import org.eclipse.tm.internal.terminal.control.ITerminalViewControl;
+import org.eclipse.tm.internal.terminal.control.actions.AbstractTerminalAction;
+import org.eclipse.tm.internal.terminal.provisional.api.TerminalState;
+import org.eclipse.tm.terminal.view.ui.activator.UIPlugin;
+import org.eclipse.tm.terminal.view.ui.interfaces.ITerminalsView;
+import org.eclipse.tm.terminal.view.ui.interfaces.ImageConsts;
+import org.eclipse.tm.terminal.view.ui.nls.Messages;
+import org.eclipse.tm.terminal.view.ui.tabs.TabCommandFieldHandler;
+import org.eclipse.tm.terminal.view.ui.tabs.TabFolderManager;
+
+/**
+ * Toggle command input field.
+ */
+public class ToggleCommandFieldAction extends AbstractTerminalAction {
+ private ITerminalsView view = null;
+
+ /**
+ * Constructor.
+ */
+ public ToggleCommandFieldAction(ITerminalsView view) {
+ super(null, ToggleCommandFieldAction.class.getName(), IAction.AS_CHECK_BOX);
+
+ this.view = view;
+ setupAction(Messages.ToggleCommandFieldAction_menu, Messages.ToggleCommandFieldAction_toolTip,
+ UIPlugin.getImageDescriptor(ImageConsts.ACTION_ToggleCommandField_Hover),
+ UIPlugin.getImageDescriptor(ImageConsts.ACTION_ToggleCommandField_Enabled),
+ UIPlugin.getImageDescriptor(ImageConsts.ACTION_ToggleCommandField_Disabled), true);
+
+ TabCommandFieldHandler handler = getCommandFieldHandler();
+ setChecked(handler != null && handler.hasCommandInputField());
+ }
+
+ @Override
+ public void run() {
+ TabCommandFieldHandler handler = getCommandFieldHandler();
+ if (handler != null) {
+ handler.setCommandInputField(!handler.hasCommandInputField());
+ }
+ setChecked(handler != null && handler.hasCommandInputField());
+ }
+
+ @Override
+ public void updateAction(boolean aboutToShow) {
+ TabCommandFieldHandler handler = getCommandFieldHandler();
+ ITerminalViewControl target = getTarget();
+ setEnabled(aboutToShow && handler != null && target != null && target.getState() == TerminalState.CONNECTED);
+ setChecked(handler != null && handler.hasCommandInputField());
+ }
+
+ /**
+ * Returns the command input field handler for the active tab.
+ *
+ * @return The command input field handler or <code>null</code>.
+ */
+ protected TabCommandFieldHandler getCommandFieldHandler() {
+ TabCommandFieldHandler handler = null;
+ // Get the active tab item from the tab folder manager
+ TabFolderManager manager = view.getAdapter(TabFolderManager.class);
+ if (manager != null) {
+ // If we have the active tab item, we can get the active terminal control
+ CTabItem activeTabItem = manager.getActiveTabItem();
+ if (activeTabItem != null && !activeTabItem.isDisposed()) {
+ handler = manager.getTabCommandFieldHandler(activeTabItem);
+ }
+ }
+ return handler;
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/activator/UIPlugin.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/activator/UIPlugin.java
new file mode 100644
index 00000000000..0fb148e3a6a
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/activator/UIPlugin.java
@@ -0,0 +1,276 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ * Max Weninger (Wind River) - [361363] [TERMINALS] Implement "Pin&Clone" for the "Terminals" view
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.activator;
+
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.resource.ImageRegistry;
+import org.eclipse.swt.custom.CTabFolder;
+import org.eclipse.swt.custom.CTabItem;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.tm.internal.terminal.control.ITerminalViewControl;
+import org.eclipse.tm.internal.terminal.provisional.api.TerminalState;
+import org.eclipse.tm.terminal.view.core.preferences.ScopedEclipsePreferences;
+import org.eclipse.tm.terminal.view.core.tracing.TraceHandler;
+import org.eclipse.tm.terminal.view.ui.interfaces.ImageConsts;
+import org.eclipse.tm.terminal.view.ui.listeners.WorkbenchWindowListener;
+import org.eclipse.tm.terminal.view.ui.view.TerminalsView;
+import org.eclipse.tm.terminal.view.ui.view.TerminalsViewMementoHandler;
+import org.eclipse.ui.IViewPart;
+import org.eclipse.ui.IViewReference;
+import org.eclipse.ui.IWindowListener;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchListener;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class UIPlugin extends AbstractUIPlugin {
+ // The shared instance
+ private static UIPlugin plugin;
+ // The scoped preferences instance
+ private static volatile ScopedEclipsePreferences scopedPreferences;
+ // The trace handler instance
+ private static volatile TraceHandler traceHandler;
+ // The workbench listener instance
+ private IWorkbenchListener listener;
+ // The global window listener instance
+ private IWindowListener windowListener;
+
+ /**
+ * The constructor
+ */
+ public UIPlugin() {
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static UIPlugin getDefault() {
+ return plugin;
+ }
+
+ /**
+ * Convenience method which returns the unique identifier of this plug-in.
+ */
+ public static String getUniqueIdentifier() {
+ if (getDefault() != null && getDefault().getBundle() != null) {
+ return getDefault().getBundle().getSymbolicName();
+ }
+ return "org.eclipse.tm.terminal.view.ui"; //$NON-NLS-1$
+ }
+
+ /**
+ * Return the scoped preferences for this plug-in.
+ */
+ public static ScopedEclipsePreferences getScopedPreferences() {
+ if (scopedPreferences == null) {
+ scopedPreferences = new ScopedEclipsePreferences(getUniqueIdentifier());
+ }
+ return scopedPreferences;
+ }
+
+ /**
+ * Returns the bundles trace handler.
+ *
+ * @return The bundles trace handler.
+ */
+ public static TraceHandler getTraceHandler() {
+ if (traceHandler == null) {
+ traceHandler = new TraceHandler(getUniqueIdentifier());
+ }
+ return traceHandler;
+ }
+
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+
+ // Create and register the workbench listener instance
+ listener = new IWorkbenchListener() {
+
+ @Override
+ public boolean preShutdown(IWorkbench workbench, boolean forced) {
+ if (workbench != null && workbench.getActiveWorkbenchWindow() != null
+ && workbench.getActiveWorkbenchWindow().getActivePage() != null) {
+ // Find all "Terminal" views
+ IViewReference[] refs = workbench.getActiveWorkbenchWindow().getActivePage().getViewReferences();
+ for (IViewReference ref : refs) {
+ IViewPart part = ref.getView(false);
+ if (part instanceof TerminalsView) {
+ /*
+ * The terminal tabs to save to the views memento on shutdown can
+ * be determined only _before_ the saveState(memento) method of the
+ * view is called. Within saveState, it is already to late and the
+ * terminals might be in CLOSED state already. This depends on the
+ * terminal type and the corresponding connector implementation.
+ *
+ * To be safe, we determine the still opened terminals on shutdown
+ * separately here in the preShutdown.
+ */
+ final List<CTabItem> saveables = new ArrayList<>();
+
+ // Get the tab folder
+ CTabFolder tabFolder = ((TerminalsView) part).getAdapter(CTabFolder.class);
+ if (tabFolder != null && !tabFolder.isDisposed()) {
+ // Get the list of tab items
+ CTabItem[] items = tabFolder.getItems();
+ // Loop the tab items and find the still connected ones
+ for (CTabItem item : items) {
+ // Ignore disposed items
+ if (item.isDisposed())
+ continue;
+ // Get the terminal view control
+ ITerminalViewControl terminal = (ITerminalViewControl) item.getData();
+ if (terminal == null || terminal.getState() != TerminalState.CONNECTED) {
+ continue;
+ }
+ // Still connected -> Add to the list
+ saveables.add(item);
+ }
+ }
+
+ // Push the determined saveable items to the memento handler
+ TerminalsViewMementoHandler mementoHandler = ((TerminalsView) part)
+ .getAdapter(TerminalsViewMementoHandler.class);
+ if (mementoHandler != null)
+ mementoHandler.setSaveables(saveables);
+ }
+ }
+ }
+
+ return true;
+ }
+
+ @Override
+ public void postShutdown(IWorkbench workbench) {
+ }
+ };
+ PlatformUI.getWorkbench().addWorkbenchListener(listener);
+
+ if (windowListener == null && PlatformUI.getWorkbench() != null) {
+ windowListener = new WorkbenchWindowListener();
+ PlatformUI.getWorkbench().addWindowListener(windowListener);
+ activateContexts();
+ }
+ }
+
+ void activateContexts() {
+ if (Display.getCurrent() != null) {
+ IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
+ if (window != null && windowListener != null)
+ windowListener.windowOpened(window);
+ } else {
+ PlatformUI.getWorkbench().getDisplay().asyncExec(() -> activateContexts());
+ }
+ }
+
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ if (windowListener != null && PlatformUI.getWorkbench() != null) {
+ PlatformUI.getWorkbench().removeWindowListener(windowListener);
+ windowListener = null;
+ }
+
+ plugin = null;
+ scopedPreferences = null;
+ traceHandler = null;
+ if (listener != null) {
+ PlatformUI.getWorkbench().removeWorkbenchListener(listener);
+ listener = null;
+ }
+ super.stop(context);
+ }
+
+ @Override
+ protected void initializeImageRegistry(ImageRegistry registry) {
+ Bundle bundle = getBundle();
+ URL url = bundle.getEntry(ImageConsts.IMAGE_DIR_ROOT + ImageConsts.IMAGE_DIR_EVIEW + "console_view.png"); //$NON-NLS-1$
+ registry.put(ImageConsts.VIEW_Terminals, ImageDescriptor.createFromURL(url));
+
+ url = bundle.getEntry(ImageConsts.IMAGE_DIR_ROOT + ImageConsts.IMAGE_DIR_CLCL + "lock_co.png"); //$NON-NLS-1$
+ registry.put(ImageConsts.ACTION_ScrollLock_Hover, ImageDescriptor.createFromURL(url));
+ url = bundle.getEntry(ImageConsts.IMAGE_DIR_ROOT + ImageConsts.IMAGE_DIR_ELCL + "lock_co.png"); //$NON-NLS-1$
+ registry.put(ImageConsts.ACTION_ScrollLock_Enabled, ImageDescriptor.createFromURL(url));
+ url = bundle.getEntry(ImageConsts.IMAGE_DIR_ROOT + ImageConsts.IMAGE_DIR_DLCL + "lock_co.png"); //$NON-NLS-1$
+ registry.put(ImageConsts.ACTION_ScrollLock_Disabled, ImageDescriptor.createFromURL(url));
+
+ url = bundle.getEntry(ImageConsts.IMAGE_DIR_ROOT + ImageConsts.IMAGE_DIR_CLCL + "command_input_field.gif"); //$NON-NLS-1$
+ registry.put(ImageConsts.ACTION_ToggleCommandField_Hover, ImageDescriptor.createFromURL(url));
+ url = bundle.getEntry(ImageConsts.IMAGE_DIR_ROOT + ImageConsts.IMAGE_DIR_ELCL + "command_input_field.gif"); //$NON-NLS-1$
+ registry.put(ImageConsts.ACTION_ToggleCommandField_Enabled, ImageDescriptor.createFromURL(url));
+ url = bundle.getEntry(ImageConsts.IMAGE_DIR_ROOT + ImageConsts.IMAGE_DIR_DLCL + "command_input_field.gif"); //$NON-NLS-1$
+ registry.put(ImageConsts.ACTION_ToggleCommandField_Disabled, ImageDescriptor.createFromURL(url));
+
+ url = bundle.getEntry(ImageConsts.IMAGE_DIR_ROOT + ImageConsts.IMAGE_DIR_CLCL + "new_terminal_view.gif"); //$NON-NLS-1$
+ registry.put(ImageConsts.ACTION_NewTerminalView_Hover, ImageDescriptor.createFromURL(url));
+ url = bundle.getEntry(ImageConsts.IMAGE_DIR_ROOT + ImageConsts.IMAGE_DIR_ELCL + "new_terminal_view.gif"); //$NON-NLS-1$
+ registry.put(ImageConsts.ACTION_NewTerminalView_Enabled, ImageDescriptor.createFromURL(url));
+ url = bundle.getEntry(ImageConsts.IMAGE_DIR_ROOT + ImageConsts.IMAGE_DIR_DLCL + "new_terminal_view.gif"); //$NON-NLS-1$
+ registry.put(ImageConsts.ACTION_NewTerminalView_Disabled, ImageDescriptor.createFromURL(url));
+ }
+
+ /**
+ * Loads the image registered under the specified key from the image
+ * registry and returns the <code>Image</code> object instance.
+ *
+ * @param key The key the image is registered with.
+ * @return The <code>Image</code> object instance or <code>null</code>.
+ */
+ public static Image getImage(String key) {
+ return getDefault().getImageRegistry().get(key);
+ }
+
+ /**
+ * Loads the image registered under the specified key from the image
+ * registry and returns the <code>ImageDescriptor</code> object instance.
+ *
+ * @param key The key the image is registered with.
+ * @return The <code>ImageDescriptor</code> object instance or <code>null</code>.
+ */
+ public static ImageDescriptor getImageDescriptor(String key) {
+ return getDefault().getImageRegistry().getDescriptor(key);
+ }
+
+ public static void log(String msg, Throwable e) {
+ log(new Status(IStatus.ERROR, getUniqueIdentifier(), IStatus.ERROR, msg, e));
+ }
+
+ public static void log(IStatus status) {
+ getDefault().getLog().log(status);
+ }
+
+ public static boolean isOptionEnabled(String strOption) {
+ String strEnabled = Platform.getDebugOption(strOption);
+ if (strEnabled == null)
+ return false;
+
+ return Boolean.parseBoolean(strEnabled);
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/controls/ConfigurationPanelControl.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/controls/ConfigurationPanelControl.java
new file mode 100644
index 00000000000..e95b8dc05ba
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/controls/ConfigurationPanelControl.java
@@ -0,0 +1,413 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.controls;
+
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.Map;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.jface.dialogs.IDialogSettings;
+import org.eclipse.jface.dialogs.IMessageProvider;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.StackLayout;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanel;
+import org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanelContainer;
+import org.eclipse.tm.terminal.view.ui.panels.AbstractConfigurationPanel;
+
+/**
+ * Base control to deal with wizard or property page controls
+ * which should share the same UI space.
+ */
+public class ConfigurationPanelControl implements IConfigurationPanelContainer, IMessageProvider {
+ private final Map<String, IConfigurationPanel> configurationPanels = new Hashtable<>();
+
+ private String message = null;
+ private int messageType = IMessageProvider.NONE;
+
+ private boolean isGroup;
+
+ private Composite panel;
+ private StackLayout panelLayout;
+
+ private String activeConfigurationPanelKey = null;
+ private IConfigurationPanel activeConfigurationPanel = null;
+
+ private final AbstractConfigurationPanel EMPTY_PANEL;
+
+ /**
+ * An empty configuration panel implementation.
+ */
+ private static final class EmptySettingsPanel extends AbstractConfigurationPanel {
+
+ /**
+ * Constructor.
+ *
+ * @param container The configuration panel container or <code>null</code>.
+ */
+ public EmptySettingsPanel(IConfigurationPanelContainer container) {
+ super(container);
+ }
+
+ @Override
+ public void setupPanel(Composite parent) {
+ Composite panel = new Composite(parent, SWT.NONE);
+ panel.setLayout(new GridLayout());
+ panel.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+
+ panel.setBackground(parent.getBackground());
+
+ setControl(panel);
+ }
+
+ @Override
+ public boolean isValid() {
+ return false;
+ }
+ }
+
+ /**
+ * Cleanup all resources the control might have been created.
+ */
+ public void dispose() {
+ EMPTY_PANEL.dispose();
+ }
+
+ /**
+ * Constructor.
+ */
+ public ConfigurationPanelControl() {
+ EMPTY_PANEL = new EmptySettingsPanel(this);
+ clear();
+ setPanelIsGroup(false);
+ }
+
+ /**
+ * Sets if or if not the controls panel is a <code>Group</code>.
+ *
+ * @param isGroup <code>True</code> if the controls panel is a group, <code>false</code> otherwise.
+ */
+ public void setPanelIsGroup(boolean isGroup) {
+ this.isGroup = isGroup;
+ }
+
+ /**
+ * Returns if or if not the controls panel is a <code>Group</code>.
+ *
+ * @return <code>True</code> if the controls panel is a group, <code>false</code> otherwise.
+ */
+ public boolean isPanelIsGroup() {
+ return isGroup;
+ }
+
+ /**
+ * Returns the controls panel.
+ *
+ * @return The controls panel or <code>null</code>.
+ */
+ public Composite getPanel() {
+ return panel;
+ }
+
+ /**
+ * Returns the label text to set for the group (if the panel is a group).
+ *
+ * @return The label text to apply or <code>null</code>.
+ */
+ public String getGroupLabel() {
+ return null;
+ }
+
+ @Override
+ public void validate() {
+ }
+
+ /**
+ * To be called from the embedding control to setup the controls UI elements.
+ *
+ * @param parent The parent control. Must not be <code>null</code>!
+ */
+ public void setupPanel(Composite parent, String[] configurationPanelKeys) {
+ Assert.isNotNull(parent);
+
+ if (isPanelIsGroup()) {
+ panel = new Group(parent, SWT.NONE);
+ if (getGroupLabel() != null)
+ ((Group) panel).setText(getGroupLabel());
+ } else {
+ panel = new Composite(parent, SWT.NONE);
+ }
+ Assert.isNotNull(panel);
+ panel.setFont(parent.getFont());
+ panel.setBackground(parent.getBackground());
+
+ panelLayout = new StackLayout();
+ panel.setLayout(panelLayout);
+
+ setupConfigurationPanels(panel, configurationPanelKeys);
+ EMPTY_PANEL.setupPanel(panel);
+ }
+
+ /**
+ * Removes all configuration panels.
+ */
+ public void clear() {
+ configurationPanels.clear();
+ }
+
+ /**
+ * Returns a unsorted list of all registered configuration panel id's.
+ *
+ * @return A list of registered configuration panel id's.
+ */
+ public String[] getConfigurationPanelIds() {
+ return configurationPanels.keySet().toArray(new String[configurationPanels.keySet().size()]);
+ }
+
+ /**
+ * Returns the configuration panel instance registered for the given configuration panel key.
+ *
+ * @param key The key to get the configuration panel for. Must not be <code>null</code>!
+ * @return The configuration panel instance or an empty configuration panel if the key is unknown.
+ */
+ public IConfigurationPanel getConfigurationPanel(String key) {
+ IConfigurationPanel panel = key != null ? configurationPanels.get(key) : null;
+ return panel != null ? panel : EMPTY_PANEL;
+ }
+
+ /**
+ * Returns if or if not the given configuration panel is equal to the
+ * empty configuration panel.
+ *
+ * @param panel The configuration panel or <code>null</code>.
+ * @return <code>True</code> if the configuration panel is equal to the empty configuration panel.
+ */
+ public final boolean isEmptyConfigurationPanel(IConfigurationPanel panel) {
+ return EMPTY_PANEL == panel;
+ }
+
+ /**
+ * Adds the given configuration panel under the given configuration panel key to the
+ * list of known panels. If the given configuration panel is <code>null</code>, any
+ * configuration panel stored under the given key is removed from the list of known panels.
+ *
+ * @param key The key to get the configuration panel for. Must not be <code>null</code>!
+ * @param panel The configuration panel instance or <code>null</code>.
+ */
+ public void addConfigurationPanel(String key, IConfigurationPanel panel) {
+ if (key == null)
+ return;
+ if (panel != null) {
+ configurationPanels.put(key, panel);
+ } else {
+ configurationPanels.remove(key);
+ }
+ }
+
+ /**
+ * Setup the configuration panels for being presented to the user. This method is called by the
+ * controls <code>doSetupPanel(...)</code> and initialize all possible configuration panels to show.
+ * The default implementation iterates over the given list of configuration panel keys and calls
+ * <code>setupPanel(...)</code> for each of them.
+ *
+ * @param parent The parent composite to use for the configuration panels. Must not be <code>null</code>!
+ * @param configurationPanelKeys The list of configuration panels to initialize. Might be <code>null</code> or empty!
+ */
+ public void setupConfigurationPanels(Composite parent, String[] configurationPanelKeys) {
+ Assert.isNotNull(parent);
+
+ if (configurationPanelKeys != null) {
+ for (String configurationPanelKey : configurationPanelKeys) {
+ IConfigurationPanel configPanel = getConfigurationPanel(configurationPanelKey);
+ Assert.isNotNull(configPanel);
+ configPanel.setupPanel(parent);
+ }
+ }
+ }
+
+ /**
+ * Make the wizard configuration panel registered under the given configuration panel key the
+ * most top configuration panel. If no configuration panel is registered under the given key,
+ * nothing will happen.
+ *
+ * @param key The key to get the wizard configuration panel for. Must not be <code>null</code>!
+ */
+ public void showConfigurationPanel(String key) {
+ String activeKey = getActiveConfigurationPanelKey();
+ if (key != null && key.equals(activeKey) && activeConfigurationPanel != null) {
+ return;
+ }
+ IConfigurationPanel configPanel = getActiveConfigurationPanel();
+ Map<String, Object> data = new HashMap<>();
+ if (configPanel != null)
+ configPanel.extractData(data);
+ configPanel = getConfigurationPanel(key);
+ Assert.isNotNull(configPanel);
+ if (configPanel.getControl() != null) {
+ activeConfigurationPanel = configPanel;
+ activeConfigurationPanelKey = key;
+ panelLayout.topControl = configPanel.getControl();
+ panel.layout();
+ if (!data.isEmpty())
+ configPanel.updateData(data);
+ configPanel.activate();
+ } else {
+ activeConfigurationPanelKey = key;
+ }
+ }
+
+ /**
+ * Returns the currently active configuration panel.
+ *
+ * @return The active configuration panel or <code>null</code>.
+ */
+ public IConfigurationPanel getActiveConfigurationPanel() {
+ return activeConfigurationPanel;
+ }
+
+ /**
+ * Returns the currently active configuration panel key.
+ *
+ * @return The active configuration panel key or <code>null</code>.
+ */
+ public String getActiveConfigurationPanelKey() {
+ return activeConfigurationPanelKey;
+ }
+
+ /**
+ * Returns the dialog settings to use to save and restore control specific
+ * widget values.
+ *
+ * @param settings The parent dialog settings. Must not be <code>null</code>.
+ * @return The dialog settings to use.
+ */
+ public final IDialogSettings getDialogSettings(IDialogSettings settings) {
+ Assert.isNotNull(settings);
+
+ // Store the settings of the control within it's own section.
+ String sectionName = this.getClass().getSimpleName();
+ Assert.isNotNull(sectionName);
+
+ IDialogSettings section = settings.getSection(sectionName);
+ if (section == null) {
+ section = settings.addNewSection(sectionName);
+ }
+
+ return section;
+ }
+
+ /**
+ * Restore the widget values from the dialog settings store to recreate the control history.
+ * <p>
+ * <b>Note:</b>
+ * The control is saving the widget values into a section equal to the class name {@link Class#getName()}.
+ * After the sections has been created, the method calls <code>doRestoreWidgetValues</code> for restoring
+ * the single properties from the dialog settings. Subclasses may override <code>doRestoreWidgetValues</code>
+ * only to deal with the single properties only or <code>restoreWidgetValues</code> when to override the
+ * creation of the subsections.
+ *
+ * @param settings The dialog settings object instance to restore the widget values from. Must not be <code>null</code>!
+ * @param idPrefix The prefix to use for every dialog settings slot keys. If <code>null</code>, the dialog settings slot keys are not to prefix.
+ */
+ public final void restoreWidgetValues(IDialogSettings settings, String idPrefix) {
+ Assert.isNotNull(settings);
+
+ // now, call the hook for actually reading the single properties from the dialog settings.
+ doRestoreWidgetValues(getDialogSettings(settings), idPrefix);
+ }
+
+ /**
+ * Hook to restore the widget values finally plain from the given dialog settings. This method should
+ * not fragment the given dialog settings any further.
+ *
+ * @param settings The dialog settings to restore the widget values from. Must not be <code>null</code>!
+ * @param idPrefix The prefix to use for every dialog settings slot keys. If <code>null</code>, the dialog settings slot keys are not to prefix.
+ */
+ public void doRestoreWidgetValues(IDialogSettings settings, String idPrefix) {
+ Assert.isNotNull(settings);
+
+ for (String panelKey : configurationPanels.keySet()) {
+ IConfigurationPanel configPanel = getConfigurationPanel(panelKey);
+ if (configPanel != null && !isEmptyConfigurationPanel(configPanel)) {
+ IDialogSettings configPanelSettings = settings.getSection(panelKey);
+ if (configPanelSettings == null)
+ configPanelSettings = settings.addNewSection(panelKey);
+ configPanel.doRestoreWidgetValues(configPanelSettings, idPrefix);
+ }
+ }
+ }
+
+ /**
+ * Saves the widget values to the dialog settings store for remembering the history. The control might
+ * be embedded within multiple pages multiple times handling different properties. Because the single
+ * controls should not mix up the history, we create subsections within the given dialog settings if
+ * they do not already exist. After the sections has been created, the method calls <code>doSaveWidgetValues</code>
+ * for saving the single properties to the dialog settings. Subclasses may override <code>doSaveWidgetValues</code>
+ * only to deal with the single properties only or <code>saveWidgetValues</code> when to override the
+ * creation of the subsections.
+ *
+ * @param settings The dialog settings object instance to save the widget values to. Must not be <code>null</code>!
+ * @param idPrefix The prefix to use for every dialog settings slot keys. If <code>null</code>, the dialog settings slot keys are not to prefix.
+ */
+ public final void saveWidgetValues(IDialogSettings settings, String idPrefix) {
+ Assert.isNotNull(settings);
+
+ // now, call the hook for actually writing the single properties to the dialog settings.
+ doSaveWidgetValues(getDialogSettings(settings), idPrefix);
+ }
+
+ /**
+ * Hook to save the widget values finally plain to the given dialog settings. This method should
+ * not fragment the given dialog settings any further.
+ *
+ * @param settings The dialog settings to save the widget values to. Must not be <code>null</code>!
+ * @param idPrefix The prefix to use for every dialog settings slot keys. If <code>null</code>, the dialog settings slot keys are not to prefix.
+ */
+ public void doSaveWidgetValues(IDialogSettings settings, String idPrefix) {
+ Assert.isNotNull(settings);
+
+ IConfigurationPanel configPanel = getActiveConfigurationPanel();
+ if (configPanel != null && !isEmptyConfigurationPanel(configPanel)) {
+ String key = getActiveConfigurationPanelKey();
+ IDialogSettings configPanelSettings = settings.getSection(key);
+ if (configPanelSettings == null)
+ configPanelSettings = settings.addNewSection(key);
+ configPanel.doSaveWidgetValues(configPanelSettings, idPrefix);
+ }
+ }
+
+ @Override
+ public final String getMessage() {
+ return message;
+ }
+
+ @Override
+ public final int getMessageType() {
+ return messageType;
+ }
+
+ /**
+ * Set the message and the message type to display.
+ *
+ * @param message The message or <code>null</code>.
+ * @param messageType The message type or <code>IMessageProvider.NONE</code>.
+ */
+ @Override
+ public final void setMessage(String message, int messageType) {
+ this.message = message;
+ this.messageType = messageType;
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/controls/NoteCompositeHelper.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/controls/NoteCompositeHelper.java
new file mode 100644
index 00000000000..d66ffe8e44b
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/controls/NoteCompositeHelper.java
@@ -0,0 +1,164 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.controls;
+
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.resource.JFaceResources;
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.tm.terminal.view.ui.nls.Messages;
+
+/**
+ * A helper class to create a composite with a highlighted note
+ * entry and a message text.
+ */
+public class NoteCompositeHelper {
+
+ /**
+ * The common label text to show on a note. Defaults to &quot;Note:&quot;.
+ */
+ public static final String NOTE_LABEL = Messages.NoteCompositeHelper_note_label;
+
+ private static class NoteComposite extends Composite {
+
+ public NoteComposite(Composite parent, int style) {
+ super(parent, style);
+ }
+
+ @Override
+ public void setEnabled(boolean enabled) {
+ super.setEnabled(enabled);
+ for (Control child : getChildren()) {
+ child.setEnabled(enabled);
+ }
+ }
+ }
+
+ /**
+ * Creates a composite with a highlighted Note entry and a message text.
+ * This is designed to take up the full width of the page.
+ *
+ * @see PreferencePage#createNoteComposite, this is a plain copy of that!
+ * @param font
+ * the font to use
+ * @param composite
+ * the parent composite
+ * @param title
+ * the title of the note
+ * @param message
+ * the message for the note
+ *
+ * @return the composite for the note
+ */
+ public static Composite createNoteComposite(Font font, Composite composite, String title, String message) {
+ return createNoteComposite(font, composite, title, message, SWT.DEFAULT);
+ }
+
+ /**
+ * Creates a composite with a highlighted Note entry and a message text.
+ * This is designed to take up the full width of the page.
+ *
+ * @see PreferencePage#createNoteComposite, this is a plain copy of that!
+ * @param font
+ * the font to use
+ * @param composite
+ * the parent composite
+ * @param title
+ * the title of the note
+ * @param message
+ * the message for the note
+ * @param minCharsPerLine
+ * the minimum number of characters per line. Defaults to '65' if less than '20'.
+ *
+ * @return the composite for the note
+ */
+ public static Composite createNoteComposite(Font font, Composite composite, String title, String message,
+ int minCharsPerLine) {
+ final GC gc = new GC(composite);
+ gc.setFont(font);
+
+ Composite messageComposite = new NoteComposite(composite, SWT.NONE);
+
+ GridLayout messageLayout = new GridLayout();
+ messageLayout.numColumns = 2;
+ messageLayout.marginWidth = 0;
+ messageLayout.marginHeight = 0;
+ messageComposite.setLayout(messageLayout);
+
+ GridData layoutData = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
+ if (composite.getLayout() instanceof GridLayout) {
+ layoutData.horizontalSpan = ((GridLayout) composite.getLayout()).numColumns;
+ }
+ messageComposite.setLayoutData(layoutData);
+ messageComposite.setFont(font);
+
+ final Label noteLabel = new Label(messageComposite, SWT.BOLD);
+ noteLabel.setText(title);
+ noteLabel.setFont(JFaceResources.getFontRegistry().getBold(JFaceResources.DEFAULT_FONT));
+ noteLabel.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));
+
+ final IPropertyChangeListener fontListener = event -> {
+ // Note: This is actually wrong but the same as in platforms
+ // PreferencePage
+ if (JFaceResources.BANNER_FONT.equals(event.getProperty())) {
+ noteLabel.setFont(JFaceResources.getFont(JFaceResources.BANNER_FONT));
+ }
+ };
+ JFaceResources.getFontRegistry().addListener(fontListener);
+ noteLabel.addDisposeListener(event -> JFaceResources.getFontRegistry().removeListener(fontListener));
+
+ Label messageLabel = new Label(messageComposite, SWT.WRAP);
+ messageLabel.setText(message);
+ messageLabel.setFont(font);
+
+ /**
+ * Set the controls style to FILL_HORIZONTAL making it multi-line if
+ * needed
+ */
+ layoutData = new GridData(GridData.FILL_HORIZONTAL);
+ layoutData.widthHint = Dialog.convertWidthInCharsToPixels(gc.getFontMetrics(),
+ minCharsPerLine >= 20 ? minCharsPerLine : 65);
+ messageLabel.setLayoutData(layoutData);
+
+ gc.dispose();
+
+ return messageComposite;
+ }
+
+ /**
+ * change the text of the second label
+ *
+ * @param messageComposite
+ * the NoteComposite that gets returned from createNoteComposite
+ * @param msg
+ * the new text
+ */
+ public static void setMessage(Composite messageComposite, String msg) {
+ if (messageComposite instanceof NoteComposite) {
+ Control[] children = messageComposite.getChildren();
+ if (children.length == 2) {
+ Control c = children[1];
+ if (c instanceof Label) {
+ ((Label) c).setText(msg);
+ messageComposite.pack();
+ }
+ }
+ }
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/help/IContextHelpIds.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/help/IContextHelpIds.java
new file mode 100644
index 00000000000..0fb521ca456
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/help/IContextHelpIds.java
@@ -0,0 +1,45 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ * Dirk Fauth <dirk.fauth@googlemail.com> - Bug 460496
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.help;
+
+import org.eclipse.tm.terminal.view.ui.activator.UIPlugin;
+
+/**
+ * UI Context help id definitions.
+ *
+ * @noextend This interface is not intended to be extended by clients.
+ * @noimplement This interface is not intended to be implemented by clients.
+ */
+public interface IContextHelpIds {
+
+ /**
+ * UI plug-in common context help id prefix.
+ */
+ public final static String PREFIX = UIPlugin.getUniqueIdentifier() + "."; //$NON-NLS-1$
+
+ /**
+ * Launch terminal settings dialog.
+ */
+ public final static String LAUNCH_TERMINAL_SETTINGS_DIALOG = PREFIX + "LaunchTerminalSettingsDialog"; //$NON-NLS-1$
+
+ /**
+ * Terminal control encoding selection dialog.
+ */
+ public final static String ENCODING_SELECTION_DIALOG = PREFIX + "EncodingSelectionDialog"; //$NON-NLS-1$
+
+ /**
+ * External executables dialog.
+ * @since 4.1
+ */
+ public final static String EXTERNAL_EXECUTABLES_DIALOG = PREFIX + "ExternalExecutablesDialog"; //$NON-NLS-1$
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/IConfigurationPanel.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/IConfigurationPanel.java
new file mode 100644
index 00000000000..23859039434
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/IConfigurationPanel.java
@@ -0,0 +1,146 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.interfaces;
+
+import java.util.Map;
+
+import org.eclipse.jface.dialogs.IDialogSettings;
+import org.eclipse.jface.dialogs.IMessageProvider;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.tm.terminal.view.ui.panels.AbstractConfigurationPanel;
+
+/**
+ * Terminal launcher configuration panel.
+ *
+ * @noextend This interface is not intended to be extended by clients.
+ * @noimplement This interface is not intended to be implemented by clients.
+ * Clients should extend {@link AbstractConfigurationPanel} instead.
+ */
+public interface IConfigurationPanel extends IMessageProvider {
+
+ /**
+ * Returns the configuration panel container.
+ *
+ * @return The configuration panel container or <code>null</code>.
+ */
+ public IConfigurationPanelContainer getContainer();
+
+ /**
+ * Creates the terminal launcher configuration panel UI elements within the
+ * given parent composite. Terminal launcher configuration panels should always
+ * create another composite within the given composite, which is the panel top
+ * control. The top control is queried later from the stack layout to show the
+ * different panels if the selected terminal launcher changed.
+ *
+ * @param parent The parent composite to create the UI elements in. Must not be <code>null</code>.
+ */
+ public void setupPanel(Composite parent);
+
+ /**
+ * Cleanup all resources the wizard configuration panel might have been created.
+ */
+ public void dispose();
+
+ /**
+ * Returns the terminal launcher configuration panels top control, typically a
+ * composite control. This control is requested every time the stack layout is
+ * required to set a new top control because the selected terminal launcher changed.
+ *
+ * @return The top control or <code>null</code> if the configuration panel has been not setup yet.
+ */
+ public Composite getControl();
+
+ /**
+ * Validates the control and sets the message text and type so the parent
+ * page or control is able to display validation result informations.
+ * The default implementation of this method does nothing.
+ *
+ * @return Result of validation.
+ */
+ public boolean isValid();
+
+ /**
+ * Restore the widget values plain from the given dialog settings. This method should
+ * not fragment the given dialog settings any further.
+ *
+ * @param settings The dialog settings to restore the widget values from. Must not be <code>null</code>!
+ * @param idPrefix The prefix to use for every dialog settings slot keys. If <code>null</code>, the dialog settings slot keys are not to prefix.
+ */
+ public void doRestoreWidgetValues(IDialogSettings settings, String idPrefix);
+
+ /**
+ * Save the widget values plain to the given dialog settings. This method should
+ * not fragment the given dialog settings any further.
+ *
+ * @param settings The dialog settings to save the widget values to. Must not be <code>null</code>!
+ * @param idPrefix The prefix to use for every dialog settings slot keys. If <code>null</code>, the dialog settings slot keys are not to prefix.
+ */
+ public void doSaveWidgetValues(IDialogSettings settings, String idPrefix);
+
+ /**
+ * Enables or disables all UI elements belonging to the wizard configuration panel.
+ *
+ * @param enabled <code>True</code> to enable the UI elements, <code>false</code> otherwise.
+ */
+ public void setEnabled(boolean enabled);
+
+ /**
+ * Called when the panel gets the active panel.
+ */
+ public void activate();
+
+ /**
+ * Initialize the widgets based of the data from the given map.
+ * <p>
+ * This method may called multiple times during the lifetime of the panel and the given
+ * map might be even <code>null</code>.
+ *
+ * @param data The map or <code>null</code>.
+ */
+ public void setupData(Map<String, Object> data);
+
+ /**
+ * Extract the data from the widgets and write it back to the given map.
+ * <p>
+ * This method may called multiple times during the lifetime of the panel and the given
+ * map might be even <code>null</code>.
+ *
+ * @param data The map or <code>null</code>.
+ */
+ public void extractData(Map<String, Object> data);
+
+ /**
+ * Update the data from the given properties container which contains the current
+ * working data.
+ * <p>
+ * This method may called multiple times during the lifetime of the panel and the given
+ * map might be even <code>null</code>.
+ *
+ * @param data The map or <code>null</code>.
+ */
+ public void updateData(Map<String, Object> data);
+
+ /**
+ * Set the selection to the terminal launcher configuration panel.
+ *
+ * @param selection The selection or <code>null</code>.
+ */
+ public void setSelection(ISelection selection);
+
+ /**
+ * Returns the selection associated with the terminal launcher configuration panel.
+ *
+ * @return The selection or <code>null</code>.
+ */
+ public ISelection getSelection();
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/IConfigurationPanelContainer.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/IConfigurationPanelContainer.java
new file mode 100644
index 00000000000..c6f4e13319f
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/IConfigurationPanelContainer.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * Copyright (c) 2015, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.interfaces;
+
+/**
+ * A container to deal with configuration panels.
+ *
+ * @noextend This interface is not intended to be extended by clients.
+ * @noimplement This interface is not intended to be implemented by clients.
+ */
+public interface IConfigurationPanelContainer {
+
+ /**
+ * Validates the container status.
+ * <p>
+ * If necessary, set the corresponding messages and message types to signal when some sub
+ * elements of the container needs user attention.
+ */
+ public void validate();
+
+ /**
+ * Set the message and the message type to display.
+ *
+ * @param message The message or <code>null</code>.
+ * @param messageType The message type or <code>IMessageProvider.NONE</code>.
+ */
+ public void setMessage(String message, int messageType);
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/IExternalExecutablesProperties.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/IExternalExecutablesProperties.java
new file mode 100644
index 00000000000..3b4507e7469
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/IExternalExecutablesProperties.java
@@ -0,0 +1,47 @@
+/*******************************************************************************
+ * Copyright (c) 2014, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ * Dirk Fauth - [460496] Moved from o.e.tm.t.connector.local.showin.interfaces
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.interfaces;
+
+/**
+ * External executables data property names.
+ * @noextend This interface is not intended to be extended by clients.
+ * @noimplement This interface is not intended to be implemented by clients.
+ * @since 4.1
+ */
+public interface IExternalExecutablesProperties {
+
+ /**
+ * The name/label of the external executable.
+ */
+ public final String PROP_NAME = "Name"; //$NON-NLS-1$
+
+ /**
+ * The absolute path of the external executable.
+ */
+ public final String PROP_PATH = "Path"; //$NON-NLS-1$
+
+ /**
+ * The arguments to pass to the external executable.
+ */
+ public final String PROP_ARGS = "Args"; //$NON-NLS-1$
+
+ /**
+ * The absolute path to the icon representing the external executable.
+ */
+ public final String PROP_ICON = "Icon"; //$NON-NLS-1$
+
+ /**
+ * If set, backslashes are translated to forward slashes on paste.
+ */
+ public final String PROP_TRANSLATE = "Translate"; //$NON-NLS-1$
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/ILauncherDelegate.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/ILauncherDelegate.java
new file mode 100644
index 00000000000..f6d23cc366e
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/ILauncherDelegate.java
@@ -0,0 +1,99 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.interfaces;
+
+import java.util.Map;
+
+import org.eclipse.core.expressions.Expression;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IExecutableExtension;
+import org.eclipse.tm.internal.terminal.provisional.api.ITerminalConnector;
+import org.eclipse.tm.terminal.view.core.interfaces.ITerminalService;
+import org.eclipse.tm.terminal.view.ui.launcher.AbstractLauncherDelegate;
+
+/**
+ * Terminal launcher delegate.
+ *
+ * @noextend This interface is not intended to be extended by clients.
+ * @noimplement This interface is not intended to be implemented by clients.
+ * Clients should extend {@link AbstractLauncherDelegate} instead.
+ */
+public interface ILauncherDelegate extends IExecutableExtension, IAdaptable {
+
+ /**
+ * Returns the unique id of the launcher delegate. The returned
+ * id must be never <code>null</code> or an empty string.
+ *
+ * @return The unique id.
+ */
+ public String getId();
+
+ /**
+ * Returns the label or UI name of the launcher delegate.
+ *
+ * @return The label or UI name. An empty string if not set.
+ */
+ public String getLabel();
+
+ /**
+ * Returns if or if not the launcher delegate is hidden for the user.
+ *
+ * @return <code>True</code> if the launcher delegate is hidden, <code>false</code> otherwise.
+ */
+ public boolean isHidden();
+
+ /**
+ * Returns the enablement expression.
+ *
+ * @return The enablement expression or <code>null</code>.
+ */
+ public Expression getEnablement();
+
+ /**
+ * Returns if or if not the user needs to set configuration details for this launcher to work.
+ * The settings to configure are provided to the user through the configuration panel returned
+ * by {@link #getPanel(BaseDialogPageControl)}.
+ *
+ * @return <code>True</code> if a user configuration is required, <code>false</code> otherwise.
+ */
+ public boolean needsUserConfiguration();
+
+ /**
+ * Returns the configuration panel instance to present to the user. The instance must be always
+ * the same on subsequent calls until disposed.
+ * <p>
+ * The method may return <code>null</code> if the launcher does not provide any user
+ * configurable settings. In this case, {@link #needsUserConfiguration()} should return
+ * <code>false</code>.
+ *
+ * @param container The configuration panel container or <code>null</code>.
+ * @return The configuration panel instance or <code>null</code>
+ */
+ public IConfigurationPanel getPanel(IConfigurationPanelContainer container);
+
+ /**
+ * Execute the terminal launch.
+ *
+ * @param properties The properties. Must not be <code>null</code>.
+ * @param done The callback or <code>null</code>.
+ */
+ public void execute(Map<String, Object> properties, ITerminalService.Done done);
+
+ /**
+ * Creates the terminal connector for this launcher delegate based on
+ * the given properties.
+ *
+ * @param properties The terminal properties. Must not be <code>null</code>.
+ * @return The terminal connector or <code>null</code>.
+ */
+ public ITerminalConnector createTerminalConnector(Map<String, Object> properties);
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/IMementoHandler.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/IMementoHandler.java
new file mode 100644
index 00000000000..c1f5e9bf26d
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/IMementoHandler.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * Copyright (c) 2012, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.interfaces;
+
+import java.util.Map;
+
+import org.eclipse.ui.IMemento;
+
+/**
+ * Terminal properties memento handler.
+ */
+public interface IMementoHandler {
+
+ /**
+ * Saves the terminal properties in the given memento.
+ *
+ * @param memento The memento. Must not be <code>null</code>.
+ * @param properties The map containing the terminal properties to save. Must not be <code>null</code>.
+ */
+ public void saveState(IMemento memento, Map<String, Object> properties);
+
+ /**
+ * Restore the terminal properties from the given memento.
+ *
+ * @param memento The memento. Must not be <code>null</code>.
+ * @param properties The map receiving the restored terminal properties. Must not be <code>null</code>.
+ */
+ public void restoreState(IMemento memento, Map<String, Object> properties);
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/IPreferenceKeys.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/IPreferenceKeys.java
new file mode 100644
index 00000000000..b37439f813f
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/IPreferenceKeys.java
@@ -0,0 +1,70 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ * Dirk Fauth <dirk.fauth@googlemail.com> - Bug 460496
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.interfaces;
+
+/**
+ * Terminal plug-in preference key definitions.
+ *
+ * @noextend This interface is not intended to be extended by clients.
+ * @noimplement This interface is not intended to be implemented by clients.
+ */
+public interface IPreferenceKeys {
+ /**
+ * Preference keys family prefix.
+ */
+ public final String PREF_TERMINAL = "terminals"; //$NON-NLS-1$
+
+ /**
+ * Preference key: Remove terminated terminals when a new terminal is created.
+ */
+ public final String PREF_REMOVE_TERMINATED_TERMINALS = PREF_TERMINAL + ".removeTerminatedTerminals"; //$NON-NLS-1$
+
+ // showin preferences
+
+ /**
+ * Preference key: Local terminal initial working directory.
+ * @since 4.1
+ */
+ public final String PREF_LOCAL_TERMINAL_INITIAL_CWD = PREF_TERMINAL + ".localTerminalInitialCwd"; //$NON-NLS-1$
+
+ /**
+ * Preference value: Local terminal initial working directory is "User home"
+ * @since 4.1
+ */
+ public final String PREF_INITIAL_CWD_USER_HOME = "userhome"; //$NON-NLS-1$
+
+ /**
+ * Preference value: Local terminal initial working directory is "Eclipse home"
+ * @since 4.1
+ */
+ public final String PREF_INITIAL_CWD_ECLIPSE_HOME = "eclipsehome"; //$NON-NLS-1$
+
+ /**
+ * Preference value: Local terminal initial working directory is "Eclipse workspace"
+ * @since 4.1
+ */
+ public final String PREF_INITIAL_CWD_ECLIPSE_WS = "eclipsews"; //$NON-NLS-1$
+
+ /**
+ * Preference key: Local terminal default shell command on Unix hosts.
+ * @since 4.1
+ */
+ public final String PREF_LOCAL_TERMINAL_DEFAULT_SHELL_UNIX = PREF_TERMINAL + ".localTerminalDefaultShellUnix"; //$NON-NLS-1$
+
+ /**
+ * Preference key: Local terminal default shell command arguments on Unix hosts.
+ * @since 4.1
+ */
+ public final String PREF_LOCAL_TERMINAL_DEFAULT_SHELL_UNIX_ARGS = PREF_TERMINAL
+ + ".localTerminalDefaultShellUnixArgs"; //$NON-NLS-1$
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/ITerminalsView.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/ITerminalsView.java
new file mode 100644
index 00000000000..4d6f6750490
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/ITerminalsView.java
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ * Max Weninger (Wind River) - [361363] [TERMINALS] Implement "Pin&Clone" for the "Terminals" view
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.interfaces;
+
+import org.eclipse.ui.IViewPart;
+
+/**
+ * Terminal view public interface.
+ *
+ * @noextend This interface is not intended to be extended by clients.
+ * @noimplement This interface is not intended to be implemented by clients.
+ */
+public interface ITerminalsView extends IViewPart {
+
+ /**
+ * Switch to the empty page control.
+ */
+ public void switchToEmptyPageControl();
+
+ /**
+ * Switch to the tab folder control.
+ */
+ public void switchToTabFolderControl();
+
+ /**
+ * Returns the context help id associated with the terminal
+ * console view instance.
+ *
+ * @return The context help id or <code>null</code> if none is associated.
+ */
+ public String getContextHelpId();
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/IUIConstants.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/IUIConstants.java
new file mode 100644
index 00000000000..e18dcbef38a
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/IUIConstants.java
@@ -0,0 +1,26 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.interfaces;
+
+/**
+ * Terminal common UI constants.
+ *
+ * @noextend This interface is not intended to be extended by clients.
+ * @noimplement This interface is not intended to be implemented by clients.
+ */
+public interface IUIConstants {
+ /**
+ * The view id of the terminals view.
+ */
+ public static final String ID = "org.eclipse.tm.terminal.view.ui.TerminalsView"; //$NON-NLS-1$
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/ImageConsts.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/ImageConsts.java
new file mode 100644
index 00000000000..352228af88b
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/ImageConsts.java
@@ -0,0 +1,104 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ * Max Weninger (Wind River) - [361363] [TERMINALS] Implement "Pin&Clone" for the "Terminals" view
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.interfaces;
+
+/**
+ * Image registry constants.
+ *
+ * @noextend This interface is not intended to be extended by clients.
+ * @noimplement This interface is not intended to be implemented by clients.
+ */
+public interface ImageConsts {
+ /**
+ * The root directory where to load the images from, relative to
+ * the bundle directory.
+ */
+ public final static String IMAGE_DIR_ROOT = "icons/"; //$NON-NLS-1$
+
+ /**
+ * The directory where to load colored local toolbar images from,
+ * relative to the image root directory.
+ */
+ public final static String IMAGE_DIR_CLCL = "clcl16/"; //$NON-NLS-1$
+
+ /**
+ * The directory where to load disabled local toolbar images from,
+ * relative to the image root directory.
+ */
+ public final static String IMAGE_DIR_DLCL = "dlcl16/"; //$NON-NLS-1$
+
+ /**
+ * The directory where to load enabled local toolbar images from,
+ * relative to the image root directory.
+ */
+ public final static String IMAGE_DIR_ELCL = "elcl16/"; //$NON-NLS-1$
+
+ /**
+ * The directory where to load view related images from, relative to
+ * the image root directory.
+ */
+ public final static String IMAGE_DIR_EVIEW = "eview16/"; //$NON-NLS-1$
+
+ /**
+ * The key to access the terminals console view image.
+ */
+ public static final String VIEW_Terminals = "TerminalsView"; //$NON-NLS-1$
+
+ /**
+ * The key to access the scroll lock action image (enabled).
+ */
+ public static final String ACTION_ScrollLock_Enabled = "ScrollLockAction_enabled"; //$NON-NLS-1$
+
+ /**
+ * The key to access the scroll lock action image (disabled).
+ */
+ public static final String ACTION_ScrollLock_Disabled = "ScrollLockAction_disabled"; //$NON-NLS-1$
+
+ /**
+ * The key to access the scroll lock action image (hover).
+ */
+ public static final String ACTION_ScrollLock_Hover = "ScrollLockAction_hover"; //$NON-NLS-1$
+
+ /**
+ * The key to access the new terminal view action image (enabled).
+ * @since 4.1
+ */
+ public static final String ACTION_NewTerminalView_Enabled = "NewTerminalViewAction_enabled"; //$NON-NLS-1$
+
+ /**
+ * The key to access the new terminal view action image (disabled).
+ * @since 4.1
+ */
+ public static final String ACTION_NewTerminalView_Disabled = "NewTerminalViewAction_disabled"; //$NON-NLS-1$
+
+ /**
+ * The key to access the new terminal view action image (hover).
+ * @since 4.1
+ */
+ public static final String ACTION_NewTerminalView_Hover = "NewTerminalViewAction_hover"; //$NON-NLS-1$
+
+ /**
+ * The key to access the toggle command field action image (enabled).
+ */
+ public static final String ACTION_ToggleCommandField_Enabled = "ToggleCommandField_enabled"; //$NON-NLS-1$
+
+ /**
+ * The key to access the toggle command field action image (disabled).
+ */
+ public static final String ACTION_ToggleCommandField_Disabled = "ToggleCommandField_disabled"; //$NON-NLS-1$
+
+ /**
+ * The key to access the toggle command field action image (hover).
+ */
+ public static final String ACTION_ToggleCommandField_Hover = "ToggleCommandField_hover"; //$NON-NLS-1$
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/tracing/ITraceIds.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/tracing/ITraceIds.java
new file mode 100644
index 00000000000..d4062007595
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/tracing/ITraceIds.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.interfaces.tracing;
+
+/**
+ * Core plug-in trace slot identifiers.
+ *
+ * @noextend This interface is not intended to be extended by clients.
+ * @noimplement This interface is not intended to be implemented by clients.
+ */
+public interface ITraceIds {
+
+ /**
+ * If activated, tracing information about the terminals output stream monitor is printed out.
+ */
+ public static final String TRACE_OUTPUT_STREAM_MONITOR = "trace/outputStreamMonitor"; //$NON-NLS-1$
+
+ /**
+ * If activated, tracing information about the launch terminal command handler is printed out.
+ */
+ public static final String TRACE_LAUNCH_TERMINAL_COMMAND_HANDLER = "trace/launchTerminalCommandHandler"; //$NON-NLS-1$
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/ExternalExecutablesState.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/ExternalExecutablesState.java
new file mode 100644
index 00000000000..3cec5ce117f
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/ExternalExecutablesState.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 2016, 2018 Dirk Fauth and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Dirk Fauth <dirk.fauth@googlemail.com> - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.internal;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.tm.terminal.view.ui.local.showin.ExternalExecutablesManager;
+import org.eclipse.ui.AbstractSourceProvider;
+import org.eclipse.ui.ISources;
+
+/**
+ * SourceProvider that provides a state to determine whether external executables are configured or not.
+ */
+public class ExternalExecutablesState extends AbstractSourceProvider {
+ public final static String CONFIGURED_STATE = "org.eclipse.tm.terminal.external.executable.configured"; //$NON-NLS-1$
+ private boolean enabled;
+
+ public ExternalExecutablesState() {
+ this.enabled = ExternalExecutablesManager.hasEntries();
+ }
+
+ @Override
+ public String[] getProvidedSourceNames() {
+ return new String[] { CONFIGURED_STATE };
+ }
+
+ @Override
+ public Map<String, String> getCurrentState() {
+ Map<String, String> map = new HashMap<>(1);
+ map.put(CONFIGURED_STATE, Boolean.valueOf(enabled).toString().toUpperCase());
+ return map;
+ }
+
+ public void enable() {
+ fireSourceChanged(ISources.WORKBENCH, CONFIGURED_STATE, "TRUE"); //$NON-NLS-1$
+ }
+
+ public void disable() {
+ fireSourceChanged(ISources.WORKBENCH, CONFIGURED_STATE, "FALSE"); //$NON-NLS-1$
+ }
+
+ @Override
+ public void dispose() {
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/PropertyTester.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/PropertyTester.java
new file mode 100644
index 00000000000..0b5052bccda
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/PropertyTester.java
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.internal;
+
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.swt.custom.CTabItem;
+import org.eclipse.tm.internal.terminal.control.ITerminalViewControl;
+import org.eclipse.tm.internal.terminal.provisional.api.TerminalState;
+import org.eclipse.tm.terminal.view.ui.interfaces.ITerminalsView;
+import org.eclipse.tm.terminal.view.ui.launcher.LauncherDelegateManager;
+import org.eclipse.tm.terminal.view.ui.tabs.TabFolderManager;
+
+/**
+ * Terminal property tester implementation.
+ */
+public class PropertyTester extends org.eclipse.core.expressions.PropertyTester {
+
+ @Override
+ public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
+
+ if ("hasApplicableLauncherDelegates".equals(property)) { //$NON-NLS-1$
+ ISelection selection = receiver instanceof ISelection ? (ISelection) receiver
+ : new StructuredSelection(receiver);
+ return expectedValue.equals(Boolean.valueOf(
+ LauncherDelegateManager.getInstance().getApplicableLauncherDelegates(selection).length > 0));
+ }
+
+ if ("canDisconnect".equals(property) && receiver instanceof ITerminalsView) { //$NON-NLS-1$
+ CTabItem tabItem = null;
+
+ TabFolderManager manager = ((ITerminalsView) receiver).getAdapter(TabFolderManager.class);
+ if (manager != null) {
+ tabItem = manager.getActiveTabItem();
+ }
+
+ if (tabItem != null && !tabItem.isDisposed() && tabItem.getData() instanceof ITerminalViewControl) {
+ ITerminalViewControl terminal = (ITerminalViewControl) tabItem.getData();
+ TerminalState state = terminal.getState();
+ return expectedValue.equals(Boolean.valueOf(state != TerminalState.CLOSED));
+ }
+ return false;
+ }
+
+ return false;
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/SettingsStore.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/SettingsStore.java
new file mode 100644
index 00000000000..116e1dd4dd5
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/SettingsStore.java
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.internal;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.tm.internal.terminal.provisional.api.ISettingsStore;
+
+/**
+ * Simple default Terminal settings store implementation keeping the settings
+ * within memory.
+ */
+public class SettingsStore implements ISettingsStore {
+ private final Map<String, Object> settings = new HashMap<>();
+
+ public SettingsStore() {
+ }
+
+ /**
+ * Returns the map containing the settings.
+ *
+ * @return The map containing the settings.
+ */
+ public final Map<String, Object> getSettings() {
+ return settings;
+ }
+
+ @Override
+ public final String get(String key, String defaultValue) {
+ Assert.isNotNull(key);
+ String value = settings.get(key) instanceof String ? (String) settings.get(key) : null;
+ return value != null ? value : defaultValue;
+ }
+
+ @Override
+ public final String get(String key) {
+ Assert.isNotNull(key);
+ return settings.get(key) instanceof String ? (String) settings.get(key) : null;
+ }
+
+ @Override
+ public final void put(String key, String value) {
+ Assert.isNotNull(key);
+ if (value == null)
+ settings.remove(key);
+ else
+ settings.put(key, value);
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/dialogs/EncodingSelectionDialog.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/dialogs/EncodingSelectionDialog.java
new file mode 100644
index 00000000000..96b9c9016df
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/dialogs/EncodingSelectionDialog.java
@@ -0,0 +1,221 @@
+/*******************************************************************************
+ * Copyright (c) 2012, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.internal.dialogs;
+
+import java.nio.charset.Charset;
+import java.nio.charset.UnsupportedCharsetException;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.jface.dialogs.TrayDialog;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.ScrolledComposite;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.tm.terminal.view.ui.help.IContextHelpIds;
+import org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanelContainer;
+import org.eclipse.tm.terminal.view.ui.nls.Messages;
+import org.eclipse.tm.terminal.view.ui.panels.AbstractExtendedConfigurationPanel;
+import org.eclipse.ui.PlatformUI;
+
+/**
+ * Encoding selection dialog implementation.
+ */
+public class EncodingSelectionDialog extends TrayDialog {
+ private String contextHelpId = null;
+
+ // The selected encoding or null
+ private String encoding;
+
+ // Reference to the encodings panel
+ private EncodingPanel encodingPanel = null;
+
+ /**
+ * Encodings panel implementation
+ */
+ protected class EncodingPanel extends AbstractExtendedConfigurationPanel {
+
+ /**
+ * Constructor
+ *
+ * @param container The configuration panel container or <code>null</code>.
+ */
+ public EncodingPanel(IConfigurationPanelContainer container) {
+ super(container);
+ }
+
+ @Override
+ public void setupPanel(Composite parent) {
+ Composite panel = new Composite(parent, SWT.NONE);
+ panel.setLayout(new GridLayout());
+ GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);
+ panel.setLayoutData(data);
+
+ // Create the encoding selection combo
+ createEncodingUI(panel, false);
+ if (EncodingSelectionDialog.this.encoding != null) {
+ setEncoding(EncodingSelectionDialog.this.encoding);
+ }
+
+ setControl(panel);
+ }
+
+ @Override
+ protected void saveSettingsForHost(boolean add) {
+ }
+
+ @Override
+ protected void fillSettingsForHost(String host) {
+ }
+
+ @Override
+ protected String getHostFromSettings() {
+ return null;
+ }
+
+ @Override
+ public String getEncoding() {
+ return super.getEncoding();
+ }
+
+ @Override
+ public void setEncoding(String encoding) {
+ super.setEncoding(encoding);
+ }
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param shell The parent shell or <code>null</code>.
+ */
+ public EncodingSelectionDialog(Shell shell) {
+ super(shell);
+
+ this.contextHelpId = IContextHelpIds.ENCODING_SELECTION_DIALOG;
+ setHelpAvailable(true);
+ }
+
+ @Override
+ protected final Control createDialogArea(Composite parent) {
+ if (contextHelpId != null) {
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, contextHelpId);
+ }
+
+ // Let the super implementation create the dialog area control
+ Control control = super.createDialogArea(parent);
+ // Setup the inner panel as scrollable composite
+ if (control instanceof Composite) {
+ ScrolledComposite sc = new ScrolledComposite((Composite) control, SWT.V_SCROLL);
+
+ GridLayout layout = new GridLayout(1, true);
+ layout.marginHeight = 0;
+ layout.marginWidth = 0;
+ layout.verticalSpacing = 0;
+ layout.horizontalSpacing = 0;
+
+ sc.setLayout(layout);
+ sc.setLayoutData(new GridData(GridData.FILL_BOTH | GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL));
+
+ sc.setExpandHorizontal(true);
+ sc.setExpandVertical(true);
+
+ Composite composite = new Composite(sc, SWT.NONE);
+ composite.setLayout(new GridLayout());
+
+ // Setup the dialog area content
+ createDialogAreaContent(composite);
+
+ sc.setContent(composite);
+ sc.setMinSize(composite.computeSize(SWT.DEFAULT, SWT.DEFAULT));
+
+ // Return the scrolled composite as new dialog area control
+ control = sc;
+ }
+
+ return control;
+ }
+
+ /**
+ * Creates the dialog area content.
+ *
+ * @param parent The parent composite. Must not be <code>null</code>.
+ */
+ protected void createDialogAreaContent(Composite parent) {
+ Assert.isNotNull(parent);
+
+ setDialogTitle(Messages.EncodingSelectionDialog_title);
+
+ Composite panel = new Composite(parent, SWT.NONE);
+ GridLayout layout = new GridLayout(2, false);
+ layout.marginHeight = 0;
+ layout.marginWidth = 0;
+ panel.setLayout(layout);
+ panel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, true));
+
+ encodingPanel = new EncodingPanel(null);
+ encodingPanel.setupPanel(panel);
+
+ applyDialogFont(panel);
+ }
+
+ /**
+ * Sets the title for this dialog.
+ *
+ * @param title The title.
+ */
+ public void setDialogTitle(String title) {
+ if (getShell() != null && !getShell().isDisposed()) {
+ getShell().setText(title);
+ }
+ }
+
+ @Override
+ protected void okPressed() {
+ // Save the selected encoding
+ if (encodingPanel != null)
+ encoding = encodingPanel.getEncoding();
+ super.okPressed();
+ }
+
+ @Override
+ protected void cancelPressed() {
+ // Reset the encoding
+ encoding = null;
+ super.cancelPressed();
+ }
+
+ /**
+ * Set the charset to default to on creating the dialog.
+ */
+
+ public void setCharset(Charset charset) {
+ this.encoding = charset == null ? null : charset.name();
+ }
+
+ /**
+ * Returns the selected charset or <code>null</code>.
+ */
+ public final Charset getCharset() {
+ if (encoding == null) {
+ return null;
+ }
+ try {
+ return Charset.forName(encoding);
+ } catch (UnsupportedCharsetException e) {
+ return null;
+ }
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/dialogs/ErrorSettingsPanel.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/dialogs/ErrorSettingsPanel.java
new file mode 100644
index 00000000000..4b09e67c9eb
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/dialogs/ErrorSettingsPanel.java
@@ -0,0 +1,56 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Kichwa Coders Canada Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.internal.dialogs;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanelContainer;
+import org.eclipse.tm.terminal.view.ui.panels.AbstractConfigurationPanel;
+
+/**
+ * An empty configuration panel implementation.
+ */
+public class ErrorSettingsPanel extends AbstractConfigurationPanel {
+
+ private String errorMessage;
+
+ /**
+ * Constructor.
+ *
+ * @param container The configuration panel container or <code>null</code>.
+ */
+ public ErrorSettingsPanel(IConfigurationPanelContainer container, String errorMessage) {
+ super(container);
+ this.errorMessage = errorMessage;
+ }
+
+ @Override
+ public void setupPanel(Composite parent) {
+ Composite panel = new Composite(parent, SWT.NONE);
+ panel.setLayout(new GridLayout());
+ panel.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+
+ panel.setBackground(parent.getBackground());
+
+ if (errorMessage != null) {
+ Label label = new Label(panel, SWT.NONE);
+ label.setText(errorMessage);
+ }
+
+ setControl(panel);
+ }
+
+ @Override
+ public boolean isValid() {
+ return false;
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/dialogs/LaunchTerminalSettingsDialog.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/dialogs/LaunchTerminalSettingsDialog.java
new file mode 100644
index 00000000000..98ce9cc86c5
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/dialogs/LaunchTerminalSettingsDialog.java
@@ -0,0 +1,696 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ * Max Weninger (Wind River) - [361352] [TERMINALS][SSH] Add SSH terminal support
+ * Dirk Fauth <dirk.fauth@googlemail.com> - Bug 460496
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.internal.dialogs;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.dialogs.IDialogSettings;
+import org.eclipse.jface.dialogs.TrayDialog;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.ScrolledComposite;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.MessageBox;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.tm.internal.terminal.provisional.api.ITerminalConnector;
+import org.eclipse.tm.terminal.view.core.interfaces.ITerminalService.Done;
+import org.eclipse.tm.terminal.view.core.interfaces.constants.ITerminalsConnectorConstants;
+import org.eclipse.tm.terminal.view.ui.activator.UIPlugin;
+import org.eclipse.tm.terminal.view.ui.controls.ConfigurationPanelControl;
+import org.eclipse.tm.terminal.view.ui.help.IContextHelpIds;
+import org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanel;
+import org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanelContainer;
+import org.eclipse.tm.terminal.view.ui.interfaces.IExternalExecutablesProperties;
+import org.eclipse.tm.terminal.view.ui.interfaces.ILauncherDelegate;
+import org.eclipse.tm.terminal.view.ui.interfaces.tracing.ITraceIds;
+import org.eclipse.tm.terminal.view.ui.launcher.AbstractLauncherDelegate;
+import org.eclipse.tm.terminal.view.ui.launcher.LauncherDelegateManager;
+import org.eclipse.tm.terminal.view.ui.local.showin.ExternalExecutablesManager;
+import org.eclipse.tm.terminal.view.ui.nls.Messages;
+import org.eclipse.ui.ISelectionService;
+import org.eclipse.ui.PlatformUI;
+
+/**
+ * Launch terminal settings dialog implementation.
+ */
+public class LaunchTerminalSettingsDialog extends TrayDialog {
+ /**
+ * Special label for terminal (not shown to user) when there are no terminal
+ * connectors installed.
+ */
+ private static final String NO_CONNECTORS_LABEL = "none"; //$NON-NLS-1$
+
+ private String contextHelpId = null;
+
+ // The parent selection
+ private ISelection selection = null;
+
+ // The sub controls
+ /* default */ Combo terminals;
+ /* default */ SettingsPanelControl settings;
+
+ // Map the label added to the combo box to the corresponding launcher delegate.
+ /* default */ final Map<String, ILauncherDelegate> label2delegate = new HashMap<>();
+
+ // Map the label added to the combo box to the corresponding launcher properties for external executables.
+ /* default */ final Map<String, Map<String, Object>> label2properties = new HashMap<>();
+
+ // The data object containing the currently selected settings
+ private Map<String, Object> data = null;
+
+ // The dialog settings storage
+ private IDialogSettings dialogSettings;
+
+ // In case of a single available terminal launcher delegate, the label of that delegate
+ private String singleDelegateLabel = null;
+
+ /**
+ * The control managing the terminal setting panels.
+ */
+ protected class SettingsPanelControl extends ConfigurationPanelControl {
+
+ public SettingsPanelControl() {
+ setPanelIsGroup(true);
+ }
+
+ @Override
+ public String getGroupLabel() {
+ return Messages.LaunchTerminalSettingsDialog_group_label;
+ }
+
+ @Override
+ public void showConfigurationPanel(String key) {
+ // Check if we have to create the panel first
+ IConfigurationPanel configPanel = getConfigurationPanel(key);
+ if (isEmptyConfigurationPanel(configPanel)) {
+ // Get the corresponding delegate
+ ILauncherDelegate delegate = label2delegate.get(key);
+ Assert.isNotNull(delegate);
+ // Create the wizard configuration panel instance
+ configPanel = delegate.getPanel(this);
+ if (configPanel != null) {
+ // Add it to the settings panel control
+ settings.addConfigurationPanel(key, configPanel);
+ // Push the selection to the configuration panel
+ configPanel.setSelection(getSelection());
+ // Create the panel controls
+ configPanel.setupPanel(getPanel());
+ // Restore widget values
+ IDialogSettings dialogSettings = LaunchTerminalSettingsDialog.this.settings
+ .getDialogSettings(LaunchTerminalSettingsDialog.this.getDialogSettings());
+ IDialogSettings configPanelSettings = dialogSettings != null ? dialogSettings.getSection(key)
+ : null;
+ if (configPanelSettings != null)
+ configPanel.doRestoreWidgetValues(configPanelSettings, null);
+ }
+ }
+
+ super.showConfigurationPanel(key);
+ }
+
+ @Override
+ public void validate() {
+ LaunchTerminalSettingsDialog.this.validate();
+ }
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param shell The parent shell or <code>null</code>.
+ */
+ public LaunchTerminalSettingsDialog(Shell shell) {
+ this(shell, 0);
+ }
+
+ private long start = 0;
+
+ /**
+ * Constructor.
+ *
+ * @param shell The parent shell or <code>null</code>.
+ */
+ public LaunchTerminalSettingsDialog(Shell shell, long start) {
+ super(shell);
+ this.start = start;
+
+ initializeDialogSettings();
+
+ this.contextHelpId = IContextHelpIds.LAUNCH_TERMINAL_SETTINGS_DIALOG;
+ setHelpAvailable(true);
+ }
+
+ /**
+ * Sets the parent selection.
+ *
+ * @param selection The parent selection or <code>null</code>.
+ */
+ public void setSelection(ISelection selection) {
+ this.selection = selection;
+ }
+
+ /**
+ * Returns the parent selection.
+ *
+ * @return The parent selection or <code>null</code>.
+ */
+ public ISelection getSelection() {
+ return selection;
+ }
+
+ @Override
+ public boolean close() {
+ dispose();
+ return super.close();
+ }
+
+ /**
+ * Dispose the dialog resources.
+ */
+ protected void dispose() {
+ if (settings != null) {
+ settings.dispose();
+ settings = null;
+ }
+ dialogSettings = null;
+ }
+
+ @Override
+ protected boolean isResizable() {
+ return true;
+ }
+
+ @Override
+ protected Control createContents(Composite parent) {
+ Control composite = super.createContents(parent);
+
+ // Validate the dialog after having created all the content
+ validate();
+
+ return composite;
+ }
+
+ @Override
+ protected final Control createDialogArea(Composite parent) {
+ if (contextHelpId != null) {
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, contextHelpId);
+ }
+
+ // Let the super implementation create the dialog area control
+ Control control = super.createDialogArea(parent);
+ // Setup the inner panel as scrollable composite
+ if (control instanceof Composite) {
+ ScrolledComposite sc = new ScrolledComposite((Composite) control, SWT.V_SCROLL);
+
+ GridLayout layout = new GridLayout(1, true);
+ layout.marginHeight = 0;
+ layout.marginWidth = 0;
+ layout.verticalSpacing = 0;
+ layout.horizontalSpacing = 0;
+
+ sc.setLayout(layout);
+ sc.setLayoutData(new GridData(GridData.FILL_BOTH | GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL));
+
+ sc.setExpandHorizontal(true);
+ sc.setExpandVertical(true);
+
+ Composite composite = new Composite(sc, SWT.NONE);
+ composite.setLayout(new GridLayout());
+
+ // Setup the dialog area content
+ createDialogAreaContent(composite);
+
+ sc.setContent(composite);
+ sc.setMinSize(composite.computeSize(SWT.DEFAULT, SWT.DEFAULT));
+
+ // Return the scrolled composite as new dialog area control
+ control = sc;
+ }
+
+ return control;
+ }
+
+ /**
+ * Sets the title for this dialog.
+ *
+ * @param title The title.
+ */
+ public void setDialogTitle(String title) {
+ if (getShell() != null && !getShell().isDisposed()) {
+ getShell().setText(title);
+ }
+ }
+
+ /**
+ * Creates the dialog area content.
+ *
+ * @param parent The parent composite. Must not be <code>null</code>.
+ */
+ protected void createDialogAreaContent(Composite parent) {
+ Assert.isNotNull(parent);
+
+ if (UIPlugin.getTraceHandler().isSlotEnabled(0, ITraceIds.TRACE_LAUNCH_TERMINAL_COMMAND_HANDLER)) {
+ UIPlugin.getTraceHandler().trace(
+ "Creating dialog area after " + (System.currentTimeMillis() - start) + " ms.", //$NON-NLS-1$ //$NON-NLS-2$
+ ITraceIds.TRACE_LAUNCH_TERMINAL_COMMAND_HANDLER, LaunchTerminalSettingsDialog.this);
+ }
+
+ setDialogTitle(Messages.LaunchTerminalSettingsDialog_title);
+
+ final List<String> items = getTerminals();
+
+ Composite panel = new Composite(parent, SWT.NONE);
+ GridLayout layout = new GridLayout(2, false);
+ layout.marginHeight = 0;
+ layout.marginWidth = 0;
+ panel.setLayout(layout);
+ panel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, true));
+
+ if (items.size() != 1) {
+ Label label = new Label(panel, SWT.HORIZONTAL);
+ label.setText(Messages.LaunchTerminalSettingsDialog_combo_label);
+
+ terminals = new Combo(panel, SWT.READ_ONLY);
+ terminals.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
+ terminals.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ // Get the old panel
+ IConfigurationPanel oldPanel = settings.getActiveConfigurationPanel();
+ // Extract the current settings in an special properties container
+ Map<String, Object> data = new HashMap<>();
+ if (oldPanel != null)
+ oldPanel.extractData(data);
+ // Clean out settings which are never passed between the panels
+ data.remove(ITerminalsConnectorConstants.PROP_IP_PORT);
+ data.remove(ITerminalsConnectorConstants.PROP_TIMEOUT);
+ data.remove(ITerminalsConnectorConstants.PROP_TERMINAL_CONNECTOR_ID);
+ data.remove(ITerminalsConnectorConstants.PROP_ENCODING);
+ // Switch to the new panel
+ settings.showConfigurationPanel(terminals.getText());
+ // Get the new panel
+ IConfigurationPanel newPanel = settings.getActiveConfigurationPanel();
+ // Re-setup the relevant data
+ if (newPanel != null)
+ newPanel.setupData(data);
+
+ // resize the dialog if needed to show the complete panel
+ getShell().pack();
+ // validate the settings dialog
+ validate();
+ }
+ });
+
+ // fill the combo with content
+ fillCombo(terminals, items);
+ } else {
+ Assert.isTrue(items.size() == 1);
+ singleDelegateLabel = items.get(0);
+ }
+
+ // Create the settings panel control
+ settings = new SettingsPanelControl();
+
+ // Create, initialize and add the first visible panel. All
+ // other panels are created on demand only.
+ String terminalLabel = terminals != null ? terminals.getItem(0) : singleDelegateLabel;
+ if (terminalLabel != null) {
+ // Get the corresponding delegate
+ ILauncherDelegate delegate = label2delegate.get(terminalLabel);
+ Assert.isNotNull(delegate);
+ // Create the wizard configuration panel instance
+ IConfigurationPanel configPanel = delegate.getPanel(settings);
+ if (configPanel != null) {
+ // Add it to the settings panel control
+ settings.addConfigurationPanel(terminalLabel, configPanel);
+ // Push the selection to the configuration panel
+ configPanel.setSelection(getSelection());
+ }
+ }
+
+ // Setup the panel control
+ settings.setupPanel(panel, terminals != null ? terminals.getItems() : new String[] { singleDelegateLabel });
+ GridData layoutData = new GridData(SWT.FILL, SWT.FILL, true, true);
+ layoutData.horizontalSpan = 2;
+ settings.getPanel().setLayoutData(layoutData);
+
+ // Preselect the first terminal launcher
+ if (terminals != null) {
+ terminals.select(0);
+ settings.showConfigurationPanel(terminals.getText());
+
+ terminals.setEnabled(terminals.getItemCount() > 1);
+ } else {
+ settings.showConfigurationPanel(singleDelegateLabel);
+ }
+
+ restoreWidgetValues();
+
+ applyDialogFont(panel);
+
+ if (UIPlugin.getTraceHandler().isSlotEnabled(0, ITraceIds.TRACE_LAUNCH_TERMINAL_COMMAND_HANDLER)) {
+ UIPlugin.getTraceHandler().trace(
+ "Created dialog area after " + (System.currentTimeMillis() - start) + " ms.", //$NON-NLS-1$ //$NON-NLS-2$
+ ITraceIds.TRACE_LAUNCH_TERMINAL_COMMAND_HANDLER, LaunchTerminalSettingsDialog.this);
+ }
+ }
+
+ /**
+ * Fill the given combo with the given list of terminal launcher delegate labels.
+ *
+ * @param combo The combo. Must not be <code>null</code>.
+ * @param items The list of terminal launcher delegates. Must not be <code>null</code>.
+ */
+ protected void fillCombo(Combo combo, List<String> items) {
+ Assert.isNotNull(combo);
+ Assert.isNotNull(items);
+
+ if (UIPlugin.getTraceHandler().isSlotEnabled(0, ITraceIds.TRACE_LAUNCH_TERMINAL_COMMAND_HANDLER)) {
+ UIPlugin.getTraceHandler().trace("Filling combo after " + (System.currentTimeMillis() - start) + " ms.", //$NON-NLS-1$ //$NON-NLS-2$
+ ITraceIds.TRACE_LAUNCH_TERMINAL_COMMAND_HANDLER, LaunchTerminalSettingsDialog.this);
+ }
+
+ Collections.sort(items);
+ combo.setItems(items.toArray(new String[items.size()]));
+ }
+
+ /**
+ * Returns the list of terminal launcher delegate labels. The method queries the
+ * terminal launcher delegates and initialize the <code>label2delegate</code> map.
+ *
+ * @return The list of terminal launcher delegate labels or an empty list.
+ */
+ protected List<String> getTerminals() {
+ List<String> items = new ArrayList<>();
+
+ ILauncherDelegate localLauncher = null;
+
+ if (selection == null || selection.isEmpty()) {
+ if (UIPlugin.getTraceHandler().isSlotEnabled(0, ITraceIds.TRACE_LAUNCH_TERMINAL_COMMAND_HANDLER)) {
+ UIPlugin.getTraceHandler().trace(
+ "Getting launcher delegates after " + (System.currentTimeMillis() - start) + " ms.", //$NON-NLS-1$ //$NON-NLS-2$
+ ITraceIds.TRACE_LAUNCH_TERMINAL_COMMAND_HANDLER, LaunchTerminalSettingsDialog.this);
+ }
+
+ ILauncherDelegate[] delegates = LauncherDelegateManager.getInstance().getLauncherDelegates(false);
+
+ if (UIPlugin.getTraceHandler().isSlotEnabled(0, ITraceIds.TRACE_LAUNCH_TERMINAL_COMMAND_HANDLER)) {
+ UIPlugin.getTraceHandler().trace(
+ "Got launcher delegates after " + (System.currentTimeMillis() - start) + " ms.", //$NON-NLS-1$ //$NON-NLS-2$
+ ITraceIds.TRACE_LAUNCH_TERMINAL_COMMAND_HANDLER, LaunchTerminalSettingsDialog.this);
+ }
+
+ for (ILauncherDelegate delegate : delegates) {
+ if (delegate.isHidden() || isFiltered(selection, delegate))
+ continue;
+ String label = delegate.getLabel();
+ if (label == null || "".equals(label.trim()) || label2delegate.containsKey(label)) //$NON-NLS-1$
+ label = delegate.getId();
+ label2delegate.put(label, delegate);
+ items.add(label);
+
+ if ("org.eclipse.tm.terminal.connector.local.launcher.local".equals(delegate.getId())) { //$NON-NLS-1$
+ localLauncher = delegate;
+ }
+ }
+ } else {
+ if (UIPlugin.getTraceHandler().isSlotEnabled(0, ITraceIds.TRACE_LAUNCH_TERMINAL_COMMAND_HANDLER)) {
+ UIPlugin.getTraceHandler().trace(
+ "Getting applicable launcher delegates after " + (System.currentTimeMillis() - start) + " ms.", //$NON-NLS-1$ //$NON-NLS-2$
+ ITraceIds.TRACE_LAUNCH_TERMINAL_COMMAND_HANDLER, LaunchTerminalSettingsDialog.this);
+ }
+
+ ILauncherDelegate[] delegates = LauncherDelegateManager.getInstance()
+ .getApplicableLauncherDelegates(selection);
+
+ if (UIPlugin.getTraceHandler().isSlotEnabled(0, ITraceIds.TRACE_LAUNCH_TERMINAL_COMMAND_HANDLER)) {
+ UIPlugin.getTraceHandler().trace(
+ "Got applicable launcher delegates after " + (System.currentTimeMillis() - start) + " ms.", //$NON-NLS-1$ //$NON-NLS-2$
+ ITraceIds.TRACE_LAUNCH_TERMINAL_COMMAND_HANDLER, LaunchTerminalSettingsDialog.this);
+ }
+
+ for (ILauncherDelegate delegate : delegates) {
+ if (delegate.isHidden() || isFiltered(selection, delegate))
+ continue;
+ String label = delegate.getLabel();
+ if (label == null || "".equals(label.trim())) //$NON-NLS-1$
+ label = delegate.getId();
+ label2delegate.put(label, delegate);
+ items.add(label);
+
+ if ("org.eclipse.tm.terminal.connector.local.launcher.local".equals(delegate.getId())) { //$NON-NLS-1$
+ localLauncher = delegate;
+ }
+ }
+ }
+
+ // if the local launcher was found, check for configured external executables
+ if (localLauncher != null) {
+ List<Map<String, String>> l = ExternalExecutablesManager.load();
+ if (l != null && !l.isEmpty()) {
+ for (Map<String, String> executableData : l) {
+ String name = executableData.get(IExternalExecutablesProperties.PROP_NAME);
+ String path = executableData.get(IExternalExecutablesProperties.PROP_PATH);
+ String args = executableData.get(IExternalExecutablesProperties.PROP_ARGS);
+
+ String strTranslate = executableData.get(IExternalExecutablesProperties.PROP_TRANSLATE);
+ boolean translate = strTranslate != null ? Boolean.parseBoolean(strTranslate) : false;
+
+ if (name != null && !"".equals(name) && path != null && !"".equals(path)) { //$NON-NLS-1$ //$NON-NLS-2$
+ ISelectionService service = PlatformUI.getWorkbench().getActiveWorkbenchWindow()
+ .getSelectionService();
+ ISelection selection = service != null ? service.getSelection() : null;
+ if (selection != null && selection.isEmpty())
+ selection = null;
+
+ Map<String, Object> properties = new HashMap<>();
+ properties.put(ITerminalsConnectorConstants.PROP_PROCESS_PATH, path);
+ properties.put(ITerminalsConnectorConstants.PROP_PROCESS_ARGS, args);
+ properties.put(ITerminalsConnectorConstants.PROP_TRANSLATE_BACKSLASHES_ON_PASTE,
+ Boolean.valueOf(translate));
+
+ // store external executable and properties
+ label2delegate.put(name, localLauncher);
+ label2properties.put(name, properties);
+ items.add(name);
+ }
+ }
+ }
+
+ }
+
+ if (items.isEmpty()) {
+ // No connectors at all installed - display warning to user.
+ ILauncherDelegate noDelegate = new AbstractLauncherDelegate() {
+
+ @Override
+ public boolean needsUserConfiguration() {
+ return false;
+ }
+
+ @Override
+ public IConfigurationPanel getPanel(IConfigurationPanelContainer container) {
+ return new ErrorSettingsPanel(container,
+ Messages.LaunchTerminalSettingsDialog_error_no_terminal_connectors);
+ }
+
+ @Override
+ public void execute(Map<String, Object> properties, Done done) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public ITerminalConnector createTerminalConnector(Map<String, Object> properties) {
+ throw new UnsupportedOperationException();
+ }
+
+ };
+
+ label2delegate.put(NO_CONNECTORS_LABEL, noDelegate);
+ items.add(NO_CONNECTORS_LABEL);
+ }
+
+ return items;
+ }
+
+ /**
+ * Hook to allow additional filtering of the applicable launcher delegates.
+ * <p>
+ * <b>Note:</b> The default implementation always returns <code>false</code>.
+ *
+ * @param selection The selection or <code>null</code>.
+ * @param delegate The launcher delegate. Must not be <code>null</code>.
+ *
+ * @return <code>True</code> if the launcher delegate is filtered based on the given selection, <code>false</code> otherwise.
+ */
+ protected boolean isFiltered(ISelection selection, ILauncherDelegate delegate) {
+ return false;
+ }
+
+ /**
+ * Validate the dialog.
+ */
+ public void validate() {
+ IConfigurationPanel panel = this.settings.getActiveConfigurationPanel();
+ Button okButton = getButton(IDialogConstants.OK_ID);
+ if (okButton != null)
+ okButton.setEnabled(panel.isValid());
+ }
+
+ /**
+ * Set the given message and message type.
+ *
+ * @param message The message or <code>null</code>.
+ * @param messageType The message type or <code>IMessageProvider.NONE</code>.
+ */
+ public void setMessage(String message, int messageType) {
+ if (settings != null) {
+ settings.setMessage(message, messageType);
+ }
+ }
+
+ /**
+ * Save the dialog's widget values.
+ */
+ protected void saveWidgetValues() {
+ IDialogSettings settings = getDialogSettings();
+ if (settings != null) {
+ if (terminals != null) {
+ settings.put("terminalLabel", terminals.getText()); //$NON-NLS-1$
+ }
+ this.settings.saveWidgetValues(settings, null);
+ }
+ }
+
+ /**
+ * Restore the dialog's widget values.
+ */
+ protected void restoreWidgetValues() {
+ IDialogSettings settings = getDialogSettings();
+ if (settings != null) {
+ String terminalLabel = settings.get("terminalLabel"); //$NON-NLS-1$
+ int index = terminalLabel != null && terminals != null
+ ? Arrays.asList(terminals.getItems()).indexOf(terminalLabel)
+ : -1;
+ if (index != -1) {
+ terminals.select(index);
+ this.settings.showConfigurationPanel(terminals.getText());
+ }
+
+ this.settings.restoreWidgetValues(settings, null);
+ }
+ }
+
+ @Override
+ protected void okPressed() {
+ IConfigurationPanel panel = this.settings.getActiveConfigurationPanel();
+ Assert.isNotNull(panel);
+
+ if (!panel.isValid()) {
+ MessageBox mb = new MessageBox(getShell(), SWT.ICON_ERROR | SWT.OK);
+ mb.setText(Messages.LaunchTerminalSettingsDialog_error_title);
+ mb.setMessage(NLS.bind(Messages.LaunchTerminalSettingsDialog_error_invalidSettings,
+ panel.getMessage() != null ? panel.getMessage()
+ : Messages.LaunchTerminalSettingsDialog_error_unknownReason));
+ mb.open();
+ return;
+ }
+ data = new HashMap<>();
+
+ // Store the id of the selected delegate
+ String terminalLabel = terminals != null ? terminals.getText() : singleDelegateLabel;
+ String delegateId = terminalLabel != null ? label2delegate.get(terminalLabel).getId() : null;
+ if (delegateId != null)
+ data.put(ITerminalsConnectorConstants.PROP_DELEGATE_ID, delegateId);
+ // Store the selection
+ data.put(ITerminalsConnectorConstants.PROP_SELECTION, selection);
+
+ // Add the properties for external executables if there are any
+ if (label2properties.containsKey(terminalLabel)) {
+ data.putAll(label2properties.get(terminalLabel));
+ }
+
+ // Store the delegate specific settings
+ panel.extractData(data);
+
+ // Save the current widget values
+ saveWidgetValues();
+
+ super.okPressed();
+ }
+
+ /**
+ * Returns the configured terminal launcher settings.
+ * <p>
+ * The settings are extracted from the UI widgets once
+ * OK got pressed.
+ *
+ * @return The configured terminal launcher settings or <code>null</code>.
+ */
+ public Map<String, Object> getSettings() {
+ return data;
+ }
+
+ /**
+ * Initialize the dialog settings storage.
+ */
+ protected void initializeDialogSettings() {
+ IDialogSettings settings = UIPlugin.getDefault().getDialogSettings();
+ Assert.isNotNull(settings);
+ IDialogSettings section = settings.getSection(getClass().getSimpleName());
+ if (section == null) {
+ section = settings.addNewSection(getClass().getSimpleName());
+ }
+ setDialogSettings(section);
+ }
+
+ /**
+ * Returns the associated dialog settings storage.
+ *
+ * @return The dialog settings storage.
+ */
+ public IDialogSettings getDialogSettings() {
+ // The dialog settings may not been initialized here. Initialize first in this case
+ // to be sure that we do have always the correct dialog settings.
+ if (dialogSettings == null) {
+ initializeDialogSettings();
+ }
+ return dialogSettings;
+ }
+
+ /**
+ * Sets the associated dialog settings storage.
+ *
+ * @return The dialog settings storage.
+ */
+ public void setDialogSettings(IDialogSettings dialogSettings) {
+ this.dialogSettings = dialogSettings;
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/handler/AbstractTriggerCommandHandler.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/handler/AbstractTriggerCommandHandler.java
new file mode 100644
index 00000000000..c85f3871a63
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/handler/AbstractTriggerCommandHandler.java
@@ -0,0 +1,70 @@
+/*******************************************************************************
+ * Copyright (c) 2015, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.internal.handler;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.Command;
+import org.eclipse.core.commands.ParameterizedCommand;
+import org.eclipse.core.expressions.EvaluationContext;
+import org.eclipse.core.expressions.IEvaluationContext;
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.tm.terminal.view.ui.activator.UIPlugin;
+import org.eclipse.tm.terminal.view.ui.nls.Messages;
+import org.eclipse.ui.ISources;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.commands.ICommandService;
+import org.eclipse.ui.handlers.IHandlerService;
+
+/**
+ * Abstract command handler triggering a command to be executed.
+ */
+public abstract class AbstractTriggerCommandHandler extends AbstractHandler {
+
+ /**
+ * Trigger a command to be executed.
+ *
+ * @param commandId The command id. Must not be <code>null</code>.
+ * @param selection The selection to pass on to the command or <code>null</code>.
+ */
+ @SuppressWarnings("cast")
+ protected void triggerCommand(String commandId, ISelection selection) {
+ Assert.isNotNull(commandId);
+
+ ICommandService service = PlatformUI.getWorkbench().getService(ICommandService.class);
+ Command command = service != null ? service.getCommand(commandId) : null;
+ if (command != null && command.isDefined() && command.isEnabled()) {
+ try {
+ ParameterizedCommand pCmd = ParameterizedCommand.generateCommand(command, null);
+ Assert.isNotNull(pCmd);
+ IHandlerService handlerSvc = PlatformUI.getWorkbench().getService(IHandlerService.class);
+ Assert.isNotNull(handlerSvc);
+ IEvaluationContext ctx = handlerSvc.getCurrentState();
+ if (selection != null) {
+ ctx = new EvaluationContext(ctx, selection);
+ ctx.addVariable(ISources.ACTIVE_CURRENT_SELECTION_NAME, selection);
+ }
+ handlerSvc.executeCommandInContext(pCmd, null, ctx);
+ } catch (Exception e) {
+ // If the platform is in debug mode, we print the exception to the log view
+ if (Platform.inDebugMode()) {
+ IStatus status = new Status(IStatus.ERROR, UIPlugin.getUniqueIdentifier(),
+ Messages.AbstractTriggerCommandHandler_error_executionFailed, e);
+ UIPlugin.getDefault().getLog().log(status);
+ }
+ }
+ }
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/handler/DisconnectTerminalCommandHandler.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/handler/DisconnectTerminalCommandHandler.java
new file mode 100644
index 00000000000..d895f88a364
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/handler/DisconnectTerminalCommandHandler.java
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * Copyright (c) 2014, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.internal.handler;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.swt.custom.CTabItem;
+import org.eclipse.tm.internal.terminal.control.ITerminalViewControl;
+import org.eclipse.tm.terminal.view.ui.interfaces.ITerminalsView;
+import org.eclipse.tm.terminal.view.ui.tabs.TabFolderManager;
+import org.eclipse.ui.handlers.HandlerUtil;
+
+/**
+ * Disconnect terminal connection command handler implementation.
+ */
+public class DisconnectTerminalCommandHandler extends AbstractHandler {
+
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ CTabItem item = null;
+
+ ISelection selection = HandlerUtil.getCurrentSelection(event);
+ if (selection instanceof IStructuredSelection && !selection.isEmpty()) {
+ Object element = ((IStructuredSelection) selection).getFirstElement();
+ if (element instanceof CTabItem && ((CTabItem) element).getData() instanceof ITerminalViewControl) {
+ item = (CTabItem) element;
+ }
+ }
+
+ if (item == null && HandlerUtil.getActivePart(event) instanceof ITerminalsView) {
+ ITerminalsView view = (ITerminalsView) HandlerUtil.getActivePart(event);
+ TabFolderManager mgr = view.getAdapter(TabFolderManager.class);
+ if (mgr != null && mgr.getActiveTabItem() != null) {
+ item = mgr.getActiveTabItem();
+ }
+ }
+
+ if (item != null && item.getData() instanceof ITerminalViewControl) {
+ ITerminalViewControl terminal = (ITerminalViewControl) item.getData();
+ if (terminal != null && !terminal.isDisposed()) {
+ terminal.disconnectTerminal();
+ }
+ }
+
+ return null;
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/handler/LaunchTerminalCommandHandler.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/handler/LaunchTerminalCommandHandler.java
new file mode 100644
index 00000000000..e13afc44f5c
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/handler/LaunchTerminalCommandHandler.java
@@ -0,0 +1,160 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.internal.handler;
+
+import java.text.DateFormat;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.window.Window;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.tm.terminal.view.core.TerminalContextPropertiesProviderFactory;
+import org.eclipse.tm.terminal.view.core.interfaces.ITerminalContextPropertiesProvider;
+import org.eclipse.tm.terminal.view.core.interfaces.constants.IContextPropertiesConstants;
+import org.eclipse.tm.terminal.view.core.interfaces.constants.ITerminalsConnectorConstants;
+import org.eclipse.tm.terminal.view.ui.activator.UIPlugin;
+import org.eclipse.tm.terminal.view.ui.interfaces.ILauncherDelegate;
+import org.eclipse.tm.terminal.view.ui.interfaces.tracing.ITraceIds;
+import org.eclipse.tm.terminal.view.ui.internal.dialogs.LaunchTerminalSettingsDialog;
+import org.eclipse.tm.terminal.view.ui.launcher.LauncherDelegateManager;
+import org.eclipse.ui.handlers.HandlerUtil;
+
+/**
+ * Launch terminal command handler implementation.
+ */
+public class LaunchTerminalCommandHandler extends AbstractHandler {
+
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ String commandId = event.getCommand().getId();
+ // "org.eclipse.tm.terminal.view.ui.command.launchToolbar"
+ // "org.eclipse.tm.terminal.view.ui.command.launch"
+
+ long start = System.currentTimeMillis();
+
+ if (UIPlugin.getTraceHandler().isSlotEnabled(0, ITraceIds.TRACE_LAUNCH_TERMINAL_COMMAND_HANDLER)) {
+ DateFormat format = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT);
+ String date = format.format(new Date(start));
+
+ UIPlugin.getTraceHandler().trace("Started at " + date + " (" + start + ")", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ITraceIds.TRACE_LAUNCH_TERMINAL_COMMAND_HANDLER, LaunchTerminalCommandHandler.this);
+ }
+
+ // Get the active shell
+ Shell shell = HandlerUtil.getActiveShell(event);
+ // Get the current selection
+ ISelection selection = HandlerUtil.getCurrentSelection(event);
+
+ if (commandId.equals("org.eclipse.tm.terminal.view.ui.command.launchToolbar")) { //$NON-NLS-1$
+ if (UIPlugin.getTraceHandler().isSlotEnabled(0, ITraceIds.TRACE_LAUNCH_TERMINAL_COMMAND_HANDLER)) {
+ UIPlugin.getTraceHandler().trace("(a) Attempt to open launch terminal settings dialog after " //$NON-NLS-1$
+ + (System.currentTimeMillis() - start) + " ms.", //$NON-NLS-1$
+ ITraceIds.TRACE_LAUNCH_TERMINAL_COMMAND_HANDLER, LaunchTerminalCommandHandler.this);
+ }
+
+ LaunchTerminalSettingsDialog dialog = new LaunchTerminalSettingsDialog(shell, start);
+
+ if (isValidSelection(selection)) {
+ dialog.setSelection(selection);
+ }
+ if (dialog.open() == Window.OK) {
+ // Get the terminal settings from the dialog
+ Map<String, Object> properties = dialog.getSettings();
+ if (properties != null) {
+ String delegateId = (String) properties.get(ITerminalsConnectorConstants.PROP_DELEGATE_ID);
+ Assert.isNotNull(delegateId);
+ ILauncherDelegate delegate = LauncherDelegateManager.getInstance().getLauncherDelegate(delegateId,
+ false);
+ Assert.isNotNull(delegateId);
+ delegate.execute(properties, null);
+ }
+ }
+ } else {
+ if (UIPlugin.getTraceHandler().isSlotEnabled(0, ITraceIds.TRACE_LAUNCH_TERMINAL_COMMAND_HANDLER)) {
+ UIPlugin.getTraceHandler().trace(
+ "Getting applicable launcher delegates after " + (System.currentTimeMillis() - start) + " ms.", //$NON-NLS-1$ //$NON-NLS-2$
+ ITraceIds.TRACE_LAUNCH_TERMINAL_COMMAND_HANDLER, LaunchTerminalCommandHandler.this);
+ }
+
+ // Check if the dialog needs to be shown at all
+ ILauncherDelegate[] delegates = LauncherDelegateManager.getInstance()
+ .getApplicableLauncherDelegates(selection);
+
+ if (UIPlugin.getTraceHandler().isSlotEnabled(0, ITraceIds.TRACE_LAUNCH_TERMINAL_COMMAND_HANDLER)) {
+ UIPlugin.getTraceHandler().trace(
+ "Got applicable launcher delegates after " + (System.currentTimeMillis() - start) + " ms.", //$NON-NLS-1$ //$NON-NLS-2$
+ ITraceIds.TRACE_LAUNCH_TERMINAL_COMMAND_HANDLER, LaunchTerminalCommandHandler.this);
+ }
+
+ if (delegates.length > 1 || (delegates.length == 1 && delegates[0].needsUserConfiguration())) {
+ if (UIPlugin.getTraceHandler().isSlotEnabled(0, ITraceIds.TRACE_LAUNCH_TERMINAL_COMMAND_HANDLER)) {
+ UIPlugin.getTraceHandler().trace("(b) Attempt to open launch terminal settings dialog after " //$NON-NLS-1$
+ + (System.currentTimeMillis() - start) + " ms.", //$NON-NLS-1$
+ ITraceIds.TRACE_LAUNCH_TERMINAL_COMMAND_HANDLER, LaunchTerminalCommandHandler.this);
+ }
+
+ // Create the launch terminal settings dialog
+ LaunchTerminalSettingsDialog dialog = new LaunchTerminalSettingsDialog(shell, start);
+ if (isValidSelection(selection)) {
+ dialog.setSelection(selection);
+ }
+ if (dialog.open() == Window.OK) {
+ // Get the terminal settings from the dialog
+ Map<String, Object> properties = dialog.getSettings();
+ if (properties != null) {
+ String delegateId = (String) properties.get(ITerminalsConnectorConstants.PROP_DELEGATE_ID);
+ Assert.isNotNull(delegateId);
+ ILauncherDelegate delegate = LauncherDelegateManager.getInstance()
+ .getLauncherDelegate(delegateId, false);
+ Assert.isNotNull(delegateId);
+ delegate.execute(properties, null);
+ }
+ }
+ } else if (delegates.length == 1) {
+ ILauncherDelegate delegate = delegates[0];
+ Map<String, Object> properties = new HashMap<>();
+
+ // Store the id of the selected delegate
+ properties.put(ITerminalsConnectorConstants.PROP_DELEGATE_ID, delegate.getId());
+ // Store the selection
+ properties.put(ITerminalsConnectorConstants.PROP_SELECTION, selection);
+
+ // Execute
+ delegate.execute(properties, null);
+ }
+ }
+
+ return null;
+ }
+
+ private boolean isValidSelection(ISelection selection) {
+ if (selection instanceof IStructuredSelection && !selection.isEmpty()) {
+ Object element = ((IStructuredSelection) selection).getFirstElement();
+ ITerminalContextPropertiesProvider provider = TerminalContextPropertiesProviderFactory.getProvider(element);
+ if (provider != null) {
+ Map<String, String> props = provider.getTargetAddress(element);
+ if (props != null && props.containsKey(IContextPropertiesConstants.PROP_ADDRESS)) {
+ return true;
+ }
+ }
+ }
+
+ return false;
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/handler/MaximizeViewHandler.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/handler/MaximizeViewHandler.java
new file mode 100644
index 00000000000..f9230a597bd
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/handler/MaximizeViewHandler.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2014, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.internal.handler;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+
+/**
+ * Maximize view handler implementation.
+ */
+public class MaximizeViewHandler extends AbstractTriggerCommandHandler {
+
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ triggerCommand("org.eclipse.ui.window.maximizePart", null); //$NON-NLS-1$
+ return null;
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/handler/NewTerminalViewHandler.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/handler/NewTerminalViewHandler.java
new file mode 100644
index 00000000000..d73e6a386aa
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/handler/NewTerminalViewHandler.java
@@ -0,0 +1,34 @@
+/*******************************************************************************
+ * Copyright (c) 2015, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.internal.handler;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.tm.terminal.view.ui.interfaces.IUIConstants;
+import org.eclipse.tm.terminal.view.ui.manager.ConsoleManager;
+
+/**
+ * New Terminal View handler implementation
+ */
+public class NewTerminalViewHandler extends AbstractTriggerCommandHandler {
+
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ String secondaryId = ConsoleManager.getInstance().getNextTerminalSecondaryId(IUIConstants.ID);
+ ConsoleManager.getInstance().showConsoleView(IUIConstants.ID, secondaryId);
+
+ triggerCommand("org.eclipse.tm.terminal.view.ui.command.launchToolbar", null); //$NON-NLS-1$
+
+ return null;
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/handler/QuickAccessHandler.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/handler/QuickAccessHandler.java
new file mode 100644
index 00000000000..48658dc8e95
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/handler/QuickAccessHandler.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2014, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.internal.handler;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+
+/**
+ * Quick access handler implementation.
+ */
+public class QuickAccessHandler extends AbstractTriggerCommandHandler {
+
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ triggerCommand("org.eclipse.ui.window.quickAccess", null); //$NON-NLS-1$
+ return null;
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/launcher/AbstractLauncherDelegate.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/launcher/AbstractLauncherDelegate.java
new file mode 100644
index 00000000000..a1e608e5cee
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/launcher/AbstractLauncherDelegate.java
@@ -0,0 +1,139 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.launcher;
+
+import java.util.Map;
+
+import org.eclipse.core.expressions.Expression;
+import org.eclipse.core.expressions.ExpressionConverter;
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.PlatformObject;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.tm.terminal.view.core.interfaces.constants.ITerminalsConnectorConstants;
+import org.eclipse.tm.terminal.view.ui.activator.UIPlugin;
+import org.eclipse.tm.terminal.view.ui.interfaces.ILauncherDelegate;
+import org.eclipse.tm.terminal.view.ui.nls.Messages;
+
+/**
+ * Abstract launcher delegate implementation.
+ */
+public abstract class AbstractLauncherDelegate extends PlatformObject implements ILauncherDelegate {
+ // The mandatory id of the extension
+ private String id = null;
+ // The label of the extension
+ private String label = null;
+ // The converted expression
+ private Expression expression;
+ // The hidden attribute
+ private boolean hidden;
+
+ @Override
+ public void setInitializationData(IConfigurationElement config, String propertyName, Object data)
+ throws CoreException {
+ if (config == null)
+ return;
+
+ // Initialize the id field by reading the <id> extension attribute.
+ // Throws an exception if the id is empty or null.
+ id = config.getAttribute("id"); //$NON-NLS-1$
+ if (id == null || "".equals(id.trim())) { //$NON-NLS-1$
+ throw createMissingMandatoryAttributeException("id", config.getContributor().getName()); //$NON-NLS-1$
+ }
+
+ // Try the "label" attribute first
+ label = config.getAttribute("label"); //$NON-NLS-1$
+ // If "label" is not found or empty, try the "name" attribute as fallback
+ if (label == null || "".equals(label.trim())) { //$NON-NLS-1$
+ label = config.getAttribute("name"); //$NON-NLS-1$
+ }
+
+ // Read the sub elements of the extension
+ IConfigurationElement[] children = config.getChildren();
+ // The "enablement" element is the only expected one
+ if (children != null && children.length > 0) {
+ expression = ExpressionConverter.getDefault().perform(children[0]);
+ }
+
+ // Read "hidden" attribute
+ String value = config.getAttribute("hidden"); //$NON-NLS-1$
+ if (value != null && !"".equals(value.trim())) { //$NON-NLS-1$
+ hidden = Boolean.parseBoolean(value);
+ }
+ }
+
+ /**
+ * Creates a new {@link CoreException} to be thrown if a mandatory extension attribute
+ * is missing.
+ *
+ * @param attributeName The attribute name. Must not be <code>null</code>.
+ * @param extensionId The extension id. Must not be <code>null</code>.
+ *
+ * @return The {@link CoreException} instance.
+ */
+ protected CoreException createMissingMandatoryAttributeException(String attributeName, String extensionId) {
+ Assert.isNotNull(attributeName);
+ Assert.isNotNull(extensionId);
+
+ return new CoreException(new Status(IStatus.ERROR, UIPlugin.getUniqueIdentifier(), 0,
+ NLS.bind(Messages.Extension_error_missingRequiredAttribute, attributeName, extensionId), null));
+ }
+
+ @Override
+ public String getId() {
+ return id;
+ }
+
+ @Override
+ public String getLabel() {
+ return label != null ? label.trim() : ""; //$NON-NLS-1$
+ }
+
+ @Override
+ public Expression getEnablement() {
+ return expression;
+ }
+
+ @Override
+ public boolean isHidden() {
+ return hidden;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof AbstractLauncherDelegate) {
+ return id.equals(((AbstractLauncherDelegate) obj).id);
+ }
+ return super.equals(obj);
+ }
+
+ @Override
+ public int hashCode() {
+ return id.hashCode();
+ }
+
+ /**
+ * Get the title from the settings, and use it as the default title.
+ *
+ * @param properties the setting properties map.
+ * @return the value retrieved via the @see {@link ITerminalsConnectorConstants#PROP_TITLE}, or null if the key hasn't been set.
+ *
+ * @since 4.1
+ */
+ protected String getDefaultTerminalTitle(Map<String, Object> properties) {
+ String title = (String) properties.get(ITerminalsConnectorConstants.PROP_TITLE);
+ return title != null ? title : null;
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/launcher/LauncherDelegateManager.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/launcher/LauncherDelegateManager.java
new file mode 100644
index 00000000000..c84517baa69
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/launcher/LauncherDelegateManager.java
@@ -0,0 +1,425 @@
+/*******************************************************************************
+ * Copyright (c) 2011 - 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.launcher;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.expressions.EvaluationContext;
+import org.eclipse.core.expressions.EvaluationResult;
+import org.eclipse.core.expressions.Expression;
+import org.eclipse.core.expressions.IEvaluationContext;
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtension;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.IExtensionRegistry;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.tm.terminal.view.ui.activator.UIPlugin;
+import org.eclipse.tm.terminal.view.ui.interfaces.ILauncherDelegate;
+import org.eclipse.tm.terminal.view.ui.nls.Messages;
+import org.eclipse.ui.ISources;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.handlers.IHandlerService;
+
+/**
+ * Terminal launcher delegate manager implementation.
+ */
+public class LauncherDelegateManager {
+ // Flag to mark the extension point manager initialized (extensions loaded).
+ private boolean initialized = false;
+
+ // The map containing all loaded contributions
+ private final Map<String, Proxy> extensionsMap = new HashMap<>();
+
+ // The extension point comparator
+ private ExtensionPointComparator comparator = null;
+
+ /**
+ * Executable extension proxy implementation.
+ */
+ /* default */ static class Proxy {
+ // The extension instance. Created on first access
+ private ILauncherDelegate instance;
+ // The configuration element
+ private final IConfigurationElement element;
+ // The unique id of the extension.
+ private String id;
+
+ /**
+ * Constructor.
+ *
+ * @param element The configuration element. Must not be <code>null</code>.
+ * @throws CoreException In case the configuration element attribute <i>id</i> is <code>null</code> or empty.
+ */
+ public Proxy(IConfigurationElement element) throws CoreException {
+ Assert.isNotNull(element);
+ this.element = element;
+
+ // Extract the extension attributes
+ id = element.getAttribute("id"); //$NON-NLS-1$
+ if (id == null || id.trim().length() == 0) {
+ throw new CoreException(new Status(IStatus.ERROR, UIPlugin.getUniqueIdentifier(), 0,
+ NLS.bind(Messages.Extension_error_missingRequiredAttribute, "id", //$NON-NLS-1$
+ element.getContributor().getName()),
+ null));
+ }
+
+ instance = null;
+ }
+
+ /**
+ * Returns the extensions unique id.
+ *
+ * @return The unique id.
+ */
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * Returns the configuration element for this extension.
+ *
+ * @return The configuration element.
+ */
+ public IConfigurationElement getConfigurationElement() {
+ return element;
+ }
+
+ /**
+ * Returns the extension class instance. The contributing
+ * plug-in will be activated if not yet activated anyway.
+ *
+ * @return The extension class instance or <code>null</code> if the instantiation fails.
+ */
+ public ILauncherDelegate getInstance() {
+ if (instance == null)
+ instance = newInstance();
+ return instance;
+ }
+
+ /**
+ * Returns always a new extension class instance which is different
+ * to what {@link #getInstance()} would return.
+ *
+ * @return A new extension class instance or <code>null</code> if the instantiation fails.
+ */
+ public ILauncherDelegate newInstance() {
+ IConfigurationElement element = getConfigurationElement();
+ Assert.isNotNull(element);
+
+ // The "class" to load can be specified either as attribute or as child element
+ if (element.getAttribute("class") != null || element.getChildren("class").length > 0) { //$NON-NLS-1$ //$NON-NLS-2$
+ try {
+ return (ILauncherDelegate) element.createExecutableExtension("class"); //$NON-NLS-1$
+ } catch (Exception e) {
+ // Possible exceptions: CoreException, ClassCastException.
+ Platform.getLog(UIPlugin.getDefault().getBundle())
+ .log(new Status(IStatus.ERROR, UIPlugin.getUniqueIdentifier(),
+ NLS.bind(Messages.Extension_error_invalidExtensionPoint,
+ element.getDeclaringExtension().getUniqueIdentifier()),
+ e));
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ // Proxies are equal if they have encapsulate an element
+ // with the same unique id
+ if (obj instanceof Proxy) {
+ return getId().equals(((Proxy) obj).getId());
+ }
+ return super.equals(obj);
+ }
+
+ @Override
+ public int hashCode() {
+ // The hash code of a proxy is the one from the id
+ return getId().hashCode();
+ }
+ }
+
+ /**
+ * Extension point comparator implementation.
+ * <p>
+ * The comparator assure that extension are read in a predictable order.
+ * <p>
+ * The order of the extensions is defined as following:<br>
+ * <ul><li>Extensions contributed by our own plug-ins (<code>org.eclipse.tm.terminal.*</code>)
+ * in ascending alphabetic order and</li>
+ * <li>Extensions contributed by any other plug-in in ascending alphabetic order.</li>
+ * <li>Extensions contributed by the same plug-in in ascending alphabetic order by the
+ * extensions unique id</li>
+ */
+ /* default */ static class ExtensionPointComparator implements Comparator<IExtension> {
+ private final static String OWN_PLUGINS_PATTERN = "org.eclipse.tm.terminal."; //$NON-NLS-1$
+
+ @Override
+ public int compare(IExtension o1, IExtension o2) {
+ // We ignore any comparisation with null and
+ if (o1 == null || o2 == null)
+ return 0;
+ // Check if it is the exact same element
+ if (o1 == o2)
+ return 0;
+
+ // The extensions are compared by the unique id of the contributing plug-in first
+ String contributor1 = o1.getContributor().getName();
+ String contributor2 = o2.getContributor().getName();
+
+ // Contributions from our own plug-ins comes before 3rdParty plug-ins
+ if (contributor1.startsWith(OWN_PLUGINS_PATTERN) && !contributor2.startsWith(OWN_PLUGINS_PATTERN))
+ return -1;
+ if (!contributor1.startsWith(OWN_PLUGINS_PATTERN) && contributor2.startsWith(OWN_PLUGINS_PATTERN))
+ return 1;
+ if (contributor1.startsWith(OWN_PLUGINS_PATTERN) && contributor2.startsWith(OWN_PLUGINS_PATTERN)) {
+ int value = contributor1.compareTo(contributor2);
+ // Within the same plug-in, the extension are sorted by their unique id (if available)
+ if (value == 0 && o1.getUniqueIdentifier() != null && o2.getUniqueIdentifier() != null)
+ return o1.getUniqueIdentifier().compareTo(o2.getUniqueIdentifier());
+ // Otherwise, just return the comparisation result from the contributors
+ return value;
+ }
+
+ // Contributions from all other plug-ins are sorted alphabetical
+ int value = contributor1.compareTo(contributor2);
+ // Within the same plug-in, the extension are sorted by their unique id (if available)
+ if (value == 0 && o1.getUniqueIdentifier() != null && o2.getUniqueIdentifier() != null)
+ return o1.getUniqueIdentifier().compareTo(o2.getUniqueIdentifier());
+ // Otherwise, just return the comparisation result from the contributors
+ return value;
+ }
+
+ }
+
+ /*
+ * Thread save singleton instance creation.
+ */
+ private static class LazyInstanceHolder {
+ public static LauncherDelegateManager instance = new LauncherDelegateManager();
+ }
+
+ /**
+ * Returns the singleton instance.
+ */
+ public static LauncherDelegateManager getInstance() {
+ return LazyInstanceHolder.instance;
+ }
+
+ /**
+ * Constructor.
+ */
+ LauncherDelegateManager() {
+ super();
+ }
+
+ /**
+ * Returns the list of all contributed terminal launcher delegates.
+ *
+ * @param unique If <code>true</code>, the method returns new instances for each
+ * contributed terminal launcher delegate.
+ *
+ * @return The list of contributed terminal launcher delegates, or an empty array.
+ */
+ public ILauncherDelegate[] getLauncherDelegates(boolean unique) {
+ List<ILauncherDelegate> contributions = new ArrayList<>();
+ for (Proxy launcherDelegate : getExtensions().values()) {
+ ILauncherDelegate instance = unique ? launcherDelegate.newInstance() : launcherDelegate.getInstance();
+ if (instance != null && !contributions.contains(instance)) {
+ contributions.add(instance);
+ }
+ }
+
+ return contributions.toArray(new ILauncherDelegate[contributions.size()]);
+ }
+
+ /**
+ * Returns the terminal launcher delegate identified by its unique id. If no terminal
+ * launcher delegate with the specified id is registered, <code>null</code> is returned.
+ *
+ * @param id The unique id of the terminal launcher delegate or <code>null</code>
+ * @param unique If <code>true</code>, the method returns new instances of the terminal launcher delegate contribution.
+ *
+ * @return The terminal launcher delegate instance or <code>null</code>.
+ */
+ public ILauncherDelegate getLauncherDelegate(String id, boolean unique) {
+ ILauncherDelegate contribution = null;
+ Map<String, Proxy> extensions = getExtensions();
+ if (extensions.containsKey(id)) {
+ Proxy proxy = extensions.get(id);
+ // Get the extension instance
+ contribution = unique ? proxy.newInstance() : proxy.getInstance();
+ }
+
+ return contribution;
+ }
+
+ /**
+ * Returns the applicable terminal launcher delegates for the given selection.
+ *
+ * @param selection The selection or <code>null</code>.
+ * @return The list of applicable terminal launcher delegates or an empty array.
+ */
+ public ILauncherDelegate[] getApplicableLauncherDelegates(ISelection selection) {
+ List<ILauncherDelegate> applicable = new ArrayList<>();
+
+ for (ILauncherDelegate delegate : getLauncherDelegates(false)) {
+ Expression enablement = delegate.getEnablement();
+
+ // The launcher delegate is applicable by default if
+ // no expression is specified.
+ boolean isApplicable = enablement == null;
+
+ if (enablement != null) {
+ if (selection != null) {
+ // Set the default variable to selection.
+ IEvaluationContext currentState = PlatformUI.getWorkbench().getService(IHandlerService.class)
+ .getCurrentState();
+ EvaluationContext context = new EvaluationContext(currentState, selection);
+ // Set the "selection" variable to the selection.
+ context.addVariable(ISources.ACTIVE_CURRENT_SELECTION_NAME, selection);
+ // Allow plug-in activation
+ context.setAllowPluginActivation(true);
+ // Evaluate the expression
+ try {
+ isApplicable = enablement.evaluate(context).equals(EvaluationResult.TRUE);
+ } catch (CoreException e) {
+ IStatus status = new Status(IStatus.ERROR, UIPlugin.getUniqueIdentifier(),
+ e.getLocalizedMessage(), e);
+ UIPlugin.getDefault().getLog().log(status);
+ }
+ } else {
+ // The enablement is false by definition if
+ // there is no selection.
+ isApplicable = false;
+ }
+ }
+
+ // Add the page if applicable
+ if (isApplicable)
+ applicable.add(delegate);
+ }
+
+ return applicable.toArray(new ILauncherDelegate[applicable.size()]);
+ }
+
+ /**
+ * Returns the map of managed extensions. If not loaded before,
+ * this methods trigger the loading of the extensions to the managed
+ * extension point.
+ *
+ * @return The map of extensions.
+ */
+ protected Map<String, Proxy> getExtensions() {
+ // Load and store the extensions thread-safe!
+ synchronized (extensionsMap) {
+ if (!initialized) {
+ loadExtensions();
+ initialized = true;
+ }
+ }
+ return extensionsMap;
+ }
+
+ /**
+ * Returns the extension point comparator instance. If not available,
+ * {@link #doCreateExtensionPointComparator()} is called to create a new instance.
+ *
+ * @return The extension point comparator or <code>null</code> if the instance creation fails.
+ */
+ protected final ExtensionPointComparator getExtensionPointComparator() {
+ if (comparator == null) {
+ comparator = new ExtensionPointComparator();
+ }
+ return comparator;
+ }
+
+ /**
+ * Returns the extensions of the specified extension point sorted.
+ * <p>
+ * For the order of the extensions, see {@link ExtensionPointComparator}.
+ *
+ * @param point The extension point. Must not be <code>null</code>.
+ * @return The extensions in sorted order or an empty array if the extension point has no extensions.
+ */
+ protected IExtension[] getExtensionsSorted(IExtensionPoint point) {
+ Assert.isNotNull(point);
+
+ List<IExtension> extensions = new ArrayList<>(Arrays.asList(point.getExtensions()));
+ if (extensions.size() > 0) {
+ Collections.sort(extensions, getExtensionPointComparator());
+ }
+
+ return extensions.toArray(new IExtension[extensions.size()]);
+ }
+
+ /**
+ * Loads the extensions for the managed extension point.
+ */
+ protected void loadExtensions() {
+ // If already initialized, this method will do nothing.
+ if (initialized)
+ return;
+
+ IExtensionRegistry registry = Platform.getExtensionRegistry();
+ IExtensionPoint point = registry.getExtensionPoint("org.eclipse.tm.terminal.view.ui.launcherDelegates"); //$NON-NLS-1$
+ if (point != null) {
+ IExtension[] extensions = getExtensionsSorted(point);
+ for (IExtension extension : extensions) {
+ IConfigurationElement[] elements = extension.getConfigurationElements();
+ for (IConfigurationElement element : elements) {
+ if ("delegate".equals(element.getName())) { //$NON-NLS-1$
+ try {
+ Proxy candidate = new Proxy(element);
+ if (candidate.getId() != null) {
+ // If no extension with this id had been registered before, register now.
+ if (!extensionsMap.containsKey(candidate.getId())) {
+ extensionsMap.put(candidate.getId(), candidate);
+ } else {
+ throw new CoreException(
+ new Status(IStatus.ERROR, UIPlugin.getUniqueIdentifier(), 0,
+ NLS.bind(Messages.Extension_error_duplicateExtension,
+ candidate.getId(), element.getContributor().getName()),
+ null));
+ }
+ } else {
+ throw new CoreException(new Status(IStatus.ERROR, UIPlugin.getUniqueIdentifier(), 0,
+ NLS.bind(Messages.Extension_error_missingRequiredAttribute, "id", //$NON-NLS-1$
+ element.getAttribute("label")), //$NON-NLS-1$
+ null));
+ }
+ } catch (CoreException e) {
+ Platform.getLog(UIPlugin.getDefault().getBundle())
+ .log(new Status(IStatus.ERROR, UIPlugin.getUniqueIdentifier(),
+ NLS.bind(Messages.Extension_error_invalidExtensionPoint,
+ element.getDeclaringExtension().getUniqueIdentifier()),
+ e));
+ }
+ }
+ }
+ }
+ }
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/listeners/AbstractWindowListener.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/listeners/AbstractWindowListener.java
new file mode 100644
index 00000000000..827ef1cd2bd
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/listeners/AbstractWindowListener.java
@@ -0,0 +1,123 @@
+/*******************************************************************************
+ * Copyright (c) 2013, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.listeners;
+
+import org.eclipse.ui.IPartListener2;
+import org.eclipse.ui.IPartService;
+import org.eclipse.ui.IPerspectiveListener;
+import org.eclipse.ui.IWindowListener;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPartReference;
+import org.eclipse.ui.IWorkbenchWindow;
+
+/**
+ * Abstract window listener implementation.
+ */
+public abstract class AbstractWindowListener implements IWindowListener {
+ // The part listener instance
+ protected final IPartListener2 partListener;
+ // The perspective listener instance
+ protected final IPerspectiveListener perspectiveListener;
+
+ // Flag to remember if the initialization is done or not
+ private boolean initialized = false;
+
+ /**
+ * Constructor
+ */
+ public AbstractWindowListener() {
+ // Create the part listener instance
+ partListener = createPartListener();
+ // Create the perspective listener instance
+ perspectiveListener = createPerspectiveListener();
+ }
+
+ /**
+ * Creates a new part listener instance.
+ * <p>
+ * <b>Note:</b> The default implementation returns <code>null</code>.
+ *
+ * @return The part listener instance or <code>null</code>.
+ */
+ protected IPartListener2 createPartListener() {
+ return null;
+ }
+
+ /**
+ * Creates a new perspective listener instance.
+ * <p>
+ * <b>Note:</b> The default implementation returns <code>null</code>.
+ *
+ * @return The perspective listener instance or <code>null</code>.
+ */
+ protected IPerspectiveListener createPerspectiveListener() {
+ return null;
+ }
+
+ @Override
+ public void windowActivated(IWorkbenchWindow window) {
+ if (!initialized && window != null) {
+ windowOpened(window);
+ }
+ }
+
+ @Override
+ public void windowDeactivated(IWorkbenchWindow window) {
+ }
+
+ @Override
+ public void windowClosed(IWorkbenchWindow window) {
+ // On close, remove the listeners from the window
+ if (window != null) {
+ if (window.getPartService() != null && partListener != null) {
+ window.getPartService().removePartListener(partListener);
+ }
+
+ if (perspectiveListener != null)
+ window.removePerspectiveListener(perspectiveListener);
+ }
+ }
+
+ @Override
+ public void windowOpened(IWorkbenchWindow window) {
+ if (window != null) {
+ // On open, register the part listener to the window
+ if (window.getPartService() != null && partListener != null) {
+ // Get the part service
+ IPartService service = window.getPartService();
+ // Unregister the part listener, just in case
+ service.removePartListener(partListener);
+ // Register the part listener
+ service.addPartListener(partListener);
+ // Signal the active part to the part listener after registration
+ IWorkbenchPage page = window.getActivePage();
+ if (page != null) {
+ IWorkbenchPartReference partRef = page.getActivePartReference();
+ if (partRef != null)
+ partListener.partActivated(partRef);
+ }
+ }
+
+ // Register the perspective listener
+ if (perspectiveListener != null) {
+ window.addPerspectiveListener(perspectiveListener);
+ // Signal the active perspective to the perspective listener after registration
+ if (window.getActivePage() != null) {
+ perspectiveListener.perspectiveActivated(window.getActivePage(),
+ window.getActivePage().getPerspective());
+ }
+ }
+
+ initialized = true;
+ }
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/listeners/WorkbenchPartListener.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/listeners/WorkbenchPartListener.java
new file mode 100644
index 00000000000..b8dff58b0fe
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/listeners/WorkbenchPartListener.java
@@ -0,0 +1,90 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.listeners;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.ui.IPartListener2;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchPartReference;
+import org.eclipse.ui.contexts.IContextActivation;
+import org.eclipse.ui.contexts.IContextService;
+
+/**
+ * The part listener implementation. Takes care of
+ * activation and deactivation of key binding contexts.
+ */
+public class WorkbenchPartListener implements IPartListener2 {
+
+ // The context activations per workbench part reference
+ private final Map<IWorkbenchPartReference, IContextActivation> activations = new HashMap<>();
+
+ @Override
+ public void partBroughtToTop(IWorkbenchPartReference partRef) {
+ }
+
+ @Override
+ public void partOpened(IWorkbenchPartReference partRef) {
+ }
+
+ @Override
+ public void partClosed(IWorkbenchPartReference partRef) {
+ }
+
+ @Override
+ public void partVisible(IWorkbenchPartReference partRef) {
+ }
+
+ @Override
+ public void partHidden(IWorkbenchPartReference partRef) {
+ }
+
+ @Override
+ public void partActivated(IWorkbenchPartReference partRef) {
+ if ("org.eclipse.tm.terminal.view.ui.TerminalsView".equals(partRef.getId())) { //$NON-NLS-1$
+ IWorkbenchPart part = partRef.getPart(false);
+ if (part != null && part.getSite() != null) {
+ IContextService service = part.getSite().getService(IContextService.class);
+ if (service != null) {
+ IContextActivation activation = service.activateContext(partRef.getId());
+ if (activation != null) {
+ activations.put(partRef, activation);
+ } else {
+ activations.remove(partRef);
+ }
+ }
+ }
+ }
+ }
+
+ @Override
+ public void partDeactivated(IWorkbenchPartReference partRef) {
+ if ("org.eclipse.tm.terminal.view.ui.TerminalsView".equals(partRef.getId())) { //$NON-NLS-1$
+ IWorkbenchPart part = partRef.getPart(false);
+ if (part != null && part.getSite() != null) {
+ IContextService service = part.getSite().getService(IContextService.class);
+ if (service != null) {
+ IContextActivation activation = activations.remove(partRef);
+ if (activation != null) {
+ service.deactivateContext(activation);
+ }
+ }
+ }
+ }
+ }
+
+ @Override
+ public void partInputChanged(IWorkbenchPartReference partRef) {
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/listeners/WorkbenchWindowListener.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/listeners/WorkbenchWindowListener.java
new file mode 100644
index 00000000000..dd7bd71ac6f
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/listeners/WorkbenchWindowListener.java
@@ -0,0 +1,26 @@
+/*******************************************************************************
+ * Copyright (c) 2014, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.listeners;
+
+import org.eclipse.ui.IPartListener2;
+
+/**
+ * The window listener implementation. Takes care of the
+ * management of the global listeners per workbench window.
+ */
+public class WorkbenchWindowListener extends AbstractWindowListener {
+
+ @Override
+ protected IPartListener2 createPartListener() {
+ return new WorkbenchPartListener();
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/local/showin/DynamicContributionItems.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/local/showin/DynamicContributionItems.java
new file mode 100644
index 00000000000..9182ffb27aa
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/local/showin/DynamicContributionItems.java
@@ -0,0 +1,131 @@
+/*******************************************************************************
+ * Copyright (c) 2014, 2021 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.local.showin;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.ActionContributionItem;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.swt.graphics.ImageData;
+import org.eclipse.tm.terminal.view.core.interfaces.constants.ITerminalsConnectorConstants;
+import org.eclipse.tm.terminal.view.ui.interfaces.IExternalExecutablesProperties;
+import org.eclipse.tm.terminal.view.ui.interfaces.ILauncherDelegate;
+import org.eclipse.tm.terminal.view.ui.launcher.LauncherDelegateManager;
+import org.eclipse.ui.ISelectionService;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.actions.CompoundContributionItem;
+import org.eclipse.ui.menus.IWorkbenchContribution;
+import org.eclipse.ui.services.IServiceLocator;
+
+/**
+ * Dynamic "Show In" contribution items implementation.
+ */
+public class DynamicContributionItems extends CompoundContributionItem implements IWorkbenchContribution {
+ // Service locator to located the handler service.
+ protected IServiceLocator serviceLocator;
+ // Reference to the local terminal launcher delegate
+ /* default */ ILauncherDelegate delegate;
+
+ @Override
+ public void initialize(IServiceLocator serviceLocator) {
+ this.serviceLocator = serviceLocator;
+
+ // Get the local terminal launcher delegate
+ delegate = LauncherDelegateManager.getInstance()
+ .getLauncherDelegate("org.eclipse.tm.terminal.connector.local.launcher.local", false); //$NON-NLS-1$
+ }
+
+ @Override
+ protected IContributionItem[] getContributionItems() {
+ List<IContributionItem> items = new ArrayList<>();
+
+ if (delegate != null) {
+ List<Map<String, String>> l = ExternalExecutablesManager.load();
+ if (l != null && !l.isEmpty()) {
+ for (Map<String, String> executableData : l) {
+ String name = executableData.get(IExternalExecutablesProperties.PROP_NAME);
+ String path = executableData.get(IExternalExecutablesProperties.PROP_PATH);
+ String args = executableData.get(IExternalExecutablesProperties.PROP_ARGS);
+ String icon = executableData.get(IExternalExecutablesProperties.PROP_ICON);
+
+ String strTranslate = executableData.get(IExternalExecutablesProperties.PROP_TRANSLATE);
+ boolean translate = strTranslate != null ? Boolean.parseBoolean(strTranslate) : false;
+
+ if (name != null && !"".equals(name) && path != null && !"".equals(path)) { //$NON-NLS-1$ //$NON-NLS-2$
+ IAction action = createAction(name, path, args, translate);
+
+ ImageData id = icon != null ? ExternalExecutablesUtils.loadImage(icon) : null;
+ if (id != null) {
+ ImageDescriptor desc = ImageDescriptor.createFromImageData(id);
+ if (desc != null)
+ action.setImageDescriptor(desc);
+ }
+
+ IContributionItem item = new ActionContributionItem(action);
+ items.add(item);
+ }
+ }
+ }
+ }
+
+ return items.toArray(new IContributionItem[items.size()]);
+ }
+
+ /**
+ * Creates the action to execute.
+ *
+ * @param label The label. Must not be <code>null</code>.
+ * @param path The executable path. Must not be <code>null</code>.
+ * @param args The executable arguments or <code>null</code>.
+ * @param translate Translate backslashes.
+ *
+ * @return The action to execute.
+ */
+ protected IAction createAction(final String label, final String path, final String args, final boolean translate) {
+ Assert.isNotNull(label);
+ Assert.isNotNull(path);
+
+ IAction action = new Action(label) {
+ @Override
+ public void run() {
+ Assert.isNotNull(delegate);
+
+ ISelectionService service = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getSelectionService();
+ ISelection selection = service != null ? service.getSelection() : null;
+ if (selection != null && selection.isEmpty())
+ selection = null;
+
+ Map<String, Object> properties = new HashMap<>();
+ properties.put(ITerminalsConnectorConstants.PROP_DELEGATE_ID, delegate.getId());
+ if (selection != null)
+ properties.put(ITerminalsConnectorConstants.PROP_SELECTION, selection);
+ properties.put(ITerminalsConnectorConstants.PROP_PROCESS_PATH, path);
+ if (args != null)
+ properties.put(ITerminalsConnectorConstants.PROP_PROCESS_ARGS, args);
+ properties.put(ITerminalsConnectorConstants.PROP_TRANSLATE_BACKSLASHES_ON_PASTE,
+ Boolean.valueOf(translate));
+
+ delegate.execute(properties, null);
+ }
+ };
+
+ return action;
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/local/showin/ExternalExecutablesDialog.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/local/showin/ExternalExecutablesDialog.java
new file mode 100644
index 00000000000..81f03e6a5e8
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/local/showin/ExternalExecutablesDialog.java
@@ -0,0 +1,446 @@
+/*******************************************************************************
+ * Copyright (c) 2014, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.local.showin;
+
+import java.io.File;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.dialogs.TrayDialog;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.ScrolledComposite;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.FileDialog;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.tm.terminal.view.ui.help.IContextHelpIds;
+import org.eclipse.tm.terminal.view.ui.interfaces.IExternalExecutablesProperties;
+import org.eclipse.tm.terminal.view.ui.nls.Messages;
+import org.eclipse.ui.PlatformUI;
+import org.osgi.framework.Bundle;
+
+/**
+ * External executables dialog implementation.
+ */
+public class ExternalExecutablesDialog extends TrayDialog {
+ private String contextHelpId = null;
+ private final boolean edit;
+
+ private Text name;
+ /* default */ Text path;
+ private Text args;
+ /* default */ Text icon;
+ private Button translate;
+
+ /* default */ String last_filter_path = null;
+ /* default */ String last_filter_icon = null;
+
+ private Map<String, String> executableData;
+
+ /**
+ * Constructor.
+ *
+ * @param shell The parent shell or <code>null</code>.
+ */
+ public ExternalExecutablesDialog(Shell shell, boolean edit) {
+ super(shell);
+ this.edit = edit;
+
+ this.contextHelpId = IContextHelpIds.EXTERNAL_EXECUTABLES_DIALOG;
+ setHelpAvailable(true);
+ }
+
+ @Override
+ protected final Control createDialogArea(Composite parent) {
+ if (contextHelpId != null) {
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, contextHelpId);
+ }
+
+ // Let the super implementation create the dialog area control
+ Control control = super.createDialogArea(parent);
+ // Setup the inner panel as scrollable composite
+ if (control instanceof Composite) {
+ ScrolledComposite sc = new ScrolledComposite((Composite) control, SWT.V_SCROLL);
+
+ GridLayout layout = new GridLayout(1, true);
+ layout.marginHeight = 0;
+ layout.marginWidth = 0;
+ layout.verticalSpacing = 0;
+ layout.horizontalSpacing = 0;
+
+ sc.setLayout(layout);
+ sc.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true));
+
+ sc.setExpandHorizontal(true);
+ sc.setExpandVertical(true);
+
+ Composite composite = new Composite(sc, SWT.NONE);
+ composite.setLayout(new GridLayout());
+
+ // Setup the dialog area content
+ createDialogAreaContent(composite);
+
+ sc.setContent(composite);
+ sc.setMinSize(composite.computeSize(SWT.DEFAULT, SWT.DEFAULT));
+
+ // Return the scrolled composite as new dialog area control
+ control = sc;
+ }
+
+ return control;
+ }
+
+ /**
+ * Creates the dialog area content.
+ *
+ * @param parent The parent composite. Must not be <code>null</code>.
+ */
+ protected void createDialogAreaContent(Composite parent) {
+ Assert.isNotNull(parent);
+
+ setDialogTitle(
+ edit ? Messages.ExternalExecutablesDialog_title_edit : Messages.ExternalExecutablesDialog_title_add);
+
+ Composite panel = new Composite(parent, SWT.NONE);
+ GridLayout layout = new GridLayout(2, false);
+ layout.marginHeight = 0;
+ layout.marginWidth = 0;
+ panel.setLayout(layout);
+ GridData layoutData = new GridData(SWT.FILL, SWT.CENTER, true, true);
+ layoutData.widthHint = convertWidthInCharsToPixels(50);
+ panel.setLayoutData(layoutData);
+
+ Label label = new Label(panel, SWT.HORIZONTAL);
+ label.setText(Messages.ExternalExecutablesDialog_field_name);
+ layoutData = new GridData(SWT.BEGINNING, SWT.CENTER, false, false);
+ label.setLayoutData(layoutData);
+
+ name = new Text(panel, SWT.HORIZONTAL | SWT.SINGLE | SWT.BORDER);
+ layoutData = new GridData(SWT.FILL, SWT.CENTER, true, false);
+ layoutData.widthHint = convertWidthInCharsToPixels(30);
+ name.setLayoutData(layoutData);
+ name.addModifyListener(e -> validate());
+
+ label = new Label(panel, SWT.HORIZONTAL);
+ label.setText(Messages.ExternalExecutablesDialog_field_path);
+ layoutData = new GridData(SWT.BEGINNING, SWT.CENTER, false, false);
+ label.setLayoutData(layoutData);
+
+ Composite panel2 = new Composite(panel, SWT.NONE);
+ layout = new GridLayout(2, false);
+ layout.marginHeight = 0;
+ layout.marginWidth = 0;
+ panel2.setLayout(layout);
+ layoutData = new GridData(SWT.FILL, SWT.CENTER, true, false);
+ panel2.setLayoutData(layoutData);
+
+ path = new Text(panel2, SWT.HORIZONTAL | SWT.SINGLE | SWT.BORDER);
+ layoutData = new GridData(SWT.FILL, SWT.CENTER, true, false);
+ layoutData.widthHint = convertWidthInCharsToPixels(30);
+ path.setLayoutData(layoutData);
+ path.addModifyListener(e -> validate());
+
+ Button button = new Button(panel2, SWT.PUSH);
+ button.setText(Messages.ExternalExecutablesDialog_button_browse);
+ layoutData = new GridData(SWT.BEGINNING, SWT.CENTER, false, false);
+ layoutData.widthHint = convertWidthInCharsToPixels(10);
+ button.setLayoutData(layoutData);
+ button.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ FileDialog dialog = new FileDialog(getShell(), SWT.OPEN);
+
+ String selectedFile = path.getText();
+ if (selectedFile != null && selectedFile.trim().length() > 0) {
+ IPath filePath = new Path(selectedFile);
+ // If the selected file points to an directory, use the directory as is
+ IPath filterPath = filePath.toFile().isDirectory() ? filePath : filePath.removeLastSegments(1);
+ while (filterPath != null && filterPath.segmentCount() > 1 && !filterPath.toFile().exists()) {
+ filterPath = filterPath.removeLastSegments(1);
+ }
+ String filterFileName = filePath.toFile().isDirectory() || !filePath.toFile().exists() ? null
+ : filePath.lastSegment();
+
+ if (filterPath != null && !filterPath.isEmpty())
+ dialog.setFilterPath(filterPath.toString());
+ if (filterFileName != null)
+ dialog.setFileName(filterFileName);
+ } else {
+ String workspace = null;
+ Bundle bundle = Platform.getBundle("org.eclipse.core.resources"); //$NON-NLS-1$
+ if (bundle != null && bundle.getState() != Bundle.UNINSTALLED
+ && bundle.getState() != Bundle.STOPPING) {
+ workspace = org.eclipse.core.resources.ResourcesPlugin.getWorkspace().getRoot().getLocation()
+ .toOSString();
+ }
+
+ String filterPath = last_filter_path != null ? last_filter_path : workspace;
+ dialog.setFilterPath(filterPath);
+ }
+
+ selectedFile = dialog.open();
+ if (selectedFile != null) {
+ last_filter_path = dialog.getFilterPath();
+ path.setText(selectedFile);
+ }
+ }
+ });
+
+ label = new Label(panel, SWT.HORIZONTAL);
+ label.setText(Messages.ExternalExecutablesDialog_field_args);
+ layoutData = new GridData(SWT.BEGINNING, SWT.CENTER, false, false);
+ label.setLayoutData(layoutData);
+
+ args = new Text(panel, SWT.HORIZONTAL | SWT.SINGLE | SWT.BORDER);
+ layoutData = new GridData(SWT.FILL, SWT.CENTER, true, false);
+ layoutData.widthHint = convertWidthInCharsToPixels(30);
+ args.setLayoutData(layoutData);
+ args.addModifyListener(e -> validate());
+
+ label = new Label(panel, SWT.HORIZONTAL);
+ label.setText(Messages.ExternalExecutablesDialog_field_icon);
+ layoutData = new GridData(SWT.BEGINNING, SWT.CENTER, false, false);
+ label.setLayoutData(layoutData);
+
+ panel2 = new Composite(panel, SWT.NONE);
+ layout = new GridLayout(2, false);
+ layout.marginHeight = 0;
+ layout.marginWidth = 0;
+ panel2.setLayout(layout);
+ layoutData = new GridData(SWT.FILL, SWT.CENTER, true, false);
+ panel2.setLayoutData(layoutData);
+
+ icon = new Text(panel2, SWT.HORIZONTAL | SWT.SINGLE | SWT.BORDER);
+ layoutData = new GridData(SWT.FILL, SWT.CENTER, true, false);
+ layoutData.widthHint = convertWidthInCharsToPixels(30);
+ icon.setLayoutData(layoutData);
+ icon.addModifyListener(e -> validate());
+
+ button = new Button(panel2, SWT.PUSH);
+ button.setText(Messages.ExternalExecutablesDialog_button_browse);
+ layoutData = new GridData(SWT.BEGINNING, SWT.CENTER, false, false);
+ layoutData.widthHint = convertWidthInCharsToPixels(10);
+ button.setLayoutData(layoutData);
+ button.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ FileDialog dialog = new FileDialog(getShell(), SWT.OPEN);
+
+ String selectedFile = icon.getText();
+ if (selectedFile != null && selectedFile.trim().length() > 0) {
+ IPath filePath = new Path(selectedFile);
+ // If the selected file points to an directory, use the directory as is
+ IPath filterPath = filePath.toFile().isDirectory() ? filePath : filePath.removeLastSegments(1);
+ while (filterPath != null && filterPath.segmentCount() > 1 && !filterPath.toFile().exists()) {
+ filterPath = filterPath.removeLastSegments(1);
+ }
+ String filterFileName = filePath.toFile().isDirectory() || !filePath.toFile().exists() ? null
+ : filePath.lastSegment();
+
+ if (filterPath != null && !filterPath.isEmpty())
+ dialog.setFilterPath(filterPath.toString());
+ if (filterFileName != null)
+ dialog.setFileName(filterFileName);
+ } else {
+ String workspace = null;
+ Bundle bundle = Platform.getBundle("org.eclipse.core.resources"); //$NON-NLS-1$
+ if (bundle != null && bundle.getState() != Bundle.UNINSTALLED
+ && bundle.getState() != Bundle.STOPPING) {
+ workspace = org.eclipse.core.resources.ResourcesPlugin.getWorkspace().getRoot().getLocation()
+ .toOSString();
+ }
+
+ String filterPath = last_filter_icon != null ? last_filter_icon : workspace;
+ dialog.setFilterPath(filterPath);
+ }
+
+ selectedFile = dialog.open();
+ if (selectedFile != null) {
+ last_filter_icon = dialog.getFilterPath();
+ icon.setText(selectedFile);
+ }
+ }
+ });
+
+ translate = new Button(panel, SWT.CHECK);
+ translate.setText(Messages.ExternalExecutablesDialog_field_translate);
+ layoutData = new GridData(SWT.FILL, SWT.TOP, true, false);
+ layoutData.horizontalSpan = 2;
+ translate.setLayoutData(layoutData);
+ translate.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ validate();
+ }
+ });
+
+ if (executableData != null) {
+ String value = executableData.get(IExternalExecutablesProperties.PROP_NAME);
+ name.setText(value != null && !"".equals(value.trim()) ? value : ""); //$NON-NLS-1$ //$NON-NLS-2$
+ value = executableData.get(IExternalExecutablesProperties.PROP_PATH);
+ path.setText(value != null && !"".equals(value.trim()) ? value : ""); //$NON-NLS-1$ //$NON-NLS-2$
+ value = executableData.get(IExternalExecutablesProperties.PROP_ARGS);
+ args.setText(value != null && !"".equals(value.trim()) ? value : ""); //$NON-NLS-1$ //$NON-NLS-2$
+ value = executableData.get(IExternalExecutablesProperties.PROP_ICON);
+ icon.setText(value != null && !"".equals(value.trim()) ? value : ""); //$NON-NLS-1$ //$NON-NLS-2$
+ value = executableData.get(IExternalExecutablesProperties.PROP_TRANSLATE);
+ translate.setSelection(value != null ? Boolean.parseBoolean(value) : false);
+ }
+ }
+
+ @Override
+ protected Control createButtonBar(Composite parent) {
+ Control control = super.createButtonBar(parent);
+ validate();
+ return control;
+ }
+
+ @Override
+ protected Button createButton(Composite parent, int id, String label, boolean defaultButton) {
+ if (IDialogConstants.OK_ID == id && !edit) {
+ label = Messages.ExternalExecutablesDialog_button_add;
+ }
+ return super.createButton(parent, id, label, defaultButton);
+ }
+
+ @Override
+ protected void okPressed() {
+ if (name != null && path != null) {
+ // Extract the executable properties
+ if (executableData == null)
+ executableData = new HashMap<>();
+
+ String value = name.getText();
+ if (value != null && !"".equals(value.trim())) { //$NON-NLS-1$
+ executableData.put(IExternalExecutablesProperties.PROP_NAME, value);
+ } else {
+ executableData.remove(IExternalExecutablesProperties.PROP_NAME);
+ }
+
+ value = path.getText();
+ if (value != null && !"".equals(value.trim())) { //$NON-NLS-1$
+ executableData.put(IExternalExecutablesProperties.PROP_PATH, value);
+ } else {
+ executableData.remove(IExternalExecutablesProperties.PROP_PATH);
+ }
+
+ value = args.getText();
+ if (value != null && !"".equals(value.trim())) { //$NON-NLS-1$
+ executableData.put(IExternalExecutablesProperties.PROP_ARGS, value);
+ } else {
+ executableData.remove(IExternalExecutablesProperties.PROP_ARGS);
+ }
+
+ value = icon.getText();
+ if (value != null && !"".equals(value.trim())) { //$NON-NLS-1$
+ executableData.put(IExternalExecutablesProperties.PROP_ICON, value);
+ } else {
+ executableData.remove(IExternalExecutablesProperties.PROP_ICON);
+ }
+
+ if (translate.getSelection()) {
+ executableData.put(IExternalExecutablesProperties.PROP_TRANSLATE, Boolean.TRUE.toString());
+ } else {
+ executableData.remove(IExternalExecutablesProperties.PROP_TRANSLATE);
+ }
+ } else {
+ executableData = null;
+ }
+ super.okPressed();
+ }
+
+ @Override
+ protected void cancelPressed() {
+ // If the user pressed cancel, the dialog needs to return null
+ executableData = null;
+ super.cancelPressed();
+ }
+
+ /**
+ * Returns the executable properties the user entered.
+ *
+ * @return The executable properties or <code>null</code>.
+ */
+ public Map<String, String> getExecutableData() {
+ return executableData;
+ }
+
+ /**
+ * Set or reset the executable properties. This method has effect
+ * only if called before opening the dialog.
+ *
+ * @param data The executable properties or <code>null</code>.
+ */
+ public void setExecutableData(Map<String, String> data) {
+ if (data == null) {
+ executableData = null;
+ } else {
+ executableData = new HashMap<>(data);
+ }
+ }
+
+ /**
+ * Validate the dialog.
+ */
+ public void validate() {
+ boolean valid = true;
+
+ if (name != null && !name.isDisposed()) {
+ valid = !"".equals(name.getText()); //$NON-NLS-1$
+ }
+
+ if (path != null && !path.isDisposed()) {
+ String value = path.getText();
+ if (!"".equals(value)) { //$NON-NLS-1$
+ File f = new File(value);
+ valid |= f.isAbsolute() && f.canRead();
+ } else {
+ valid = false;
+ }
+ }
+
+ if (icon != null && !icon.isDisposed()) {
+ String value = icon.getText();
+ if (!"".equals(value)) { //$NON-NLS-1$
+ File f = new File(value);
+ valid |= f.isAbsolute() && f.canRead();
+ }
+ }
+
+ Button okButton = getButton(IDialogConstants.OK_ID);
+ if (okButton != null)
+ okButton.setEnabled(valid);
+ }
+
+ /**
+ * Sets the title for this dialog.
+ *
+ * @param title The title.
+ */
+ public void setDialogTitle(String title) {
+ if (getShell() != null && !getShell().isDisposed()) {
+ getShell().setText(title);
+ }
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/local/showin/ExternalExecutablesManager.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/local/showin/ExternalExecutablesManager.java
new file mode 100644
index 00000000000..ca5c403a086
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/local/showin/ExternalExecutablesManager.java
@@ -0,0 +1,216 @@
+/*******************************************************************************
+ * Copyright (c) 2014, 2021 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ * Dirk Fauth <dirk.fauth@googlemail.com> - Bug 460496
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.local.showin;
+
+import java.io.File;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Properties;
+import java.util.stream.Collectors;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.tm.terminal.view.ui.activator.UIPlugin;
+import org.eclipse.tm.terminal.view.ui.internal.ExternalExecutablesState;
+import org.eclipse.tm.terminal.view.ui.local.showin.detectors.DetectGitBash;
+import org.eclipse.tm.terminal.view.ui.local.showin.detectors.DetectWSL;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.services.ISourceProviderService;
+
+/**
+ * External executables manager implementation.
+ */
+public class ExternalExecutablesManager {
+ // XXX: This may make a useful extension point?
+ private static List<IDetectExternalExecutable> detectors = List.of(new DetectGitBash(), new DetectWSL());
+
+ public static boolean hasEntries() {
+ IPath stateLocation = UIPlugin.getDefault().getStateLocation();
+ if (stateLocation != null) {
+ File f = stateLocation.append(".executables/data.properties").toFile(); //$NON-NLS-1$
+ if (f.canRead()) {
+
+ try (FileReader r = new FileReader(f)) {
+ Properties data = new Properties();
+ data.load(r);
+ if (!data.isEmpty()) {
+ return true;
+ }
+ } catch (IOException e) {
+ if (Platform.inDebugMode()) {
+ e.printStackTrace();
+ }
+ }
+ }
+ }
+
+ // There are not any saved entries - run the detectors and if any of them
+ // have entries, then we can stop.
+ for (IDetectExternalExecutable iDetectExternalExecutable : detectors) {
+ if (iDetectExternalExecutable.hasEntries()) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Loads the list of all saved external executables.
+ *
+ * @return The list of all saved external executables or <code>null</code>.
+ */
+ public static List<Map<String, String>> load() {
+ List<Map<String, String>> externalExecutables = new ArrayList<>();
+
+ IPath stateLocation = UIPlugin.getDefault().getStateLocation();
+ if (stateLocation != null) {
+ File f = stateLocation.append(".executables/data.properties").toFile(); //$NON-NLS-1$
+ if (f.canRead()) {
+ FileReader r = null;
+
+ try {
+ Properties data = new Properties();
+ r = new FileReader(f);
+ data.load(r);
+
+ Map<Integer, Map<String, String>> c = new HashMap<>();
+ for (String name : data.stringPropertyNames()) {
+ if (name == null || name.indexOf('.') == -1)
+ continue;
+ int ix = name.indexOf('.');
+ String n = name.substring(0, ix);
+ String k = (ix + 1) < name.length() ? name.substring(ix + 1) : null;
+ if (n == null || k == null)
+ continue;
+
+ Integer i = null;
+ try {
+ i = Integer.decode(n);
+ } catch (NumberFormatException e) {
+ /* ignored on purpose */ }
+ if (i == null)
+ continue;
+
+ Map<String, String> m = c.get(i);
+ if (m == null) {
+ m = new HashMap<>();
+ c.put(i, m);
+ }
+ Assert.isNotNull(m);
+
+ m.put(k, data.getProperty(name));
+ }
+
+ List<Integer> k = new ArrayList<>(c.keySet());
+ Collections.sort(k);
+ for (Integer i : k) {
+ Map<String, String> m = c.get(i);
+ if (m != null && !m.isEmpty())
+ externalExecutables.add(m);
+ }
+ } catch (Exception e) {
+ if (Platform.inDebugMode()) {
+ e.printStackTrace();
+ }
+ } finally {
+ if (r != null)
+ try {
+ r.close();
+ } catch (IOException e) {
+ /* ignored on purpose */
+ }
+ }
+ }
+ }
+
+ var readOnly = Collections.unmodifiableList(externalExecutables);
+ var detected = detectors.stream().flatMap(detector -> detector.getEntries(readOnly).stream())
+ .collect(Collectors.toList());
+ if (!detected.isEmpty()) {
+ externalExecutables.addAll(detected);
+ save(externalExecutables);
+ }
+
+ return externalExecutables;
+ }
+
+ /**
+ * Saves the list of external executables.
+ *
+ * @param externalExecutables The list of external executables or <code>null</code>.
+ */
+ public static void save(List<Map<String, String>> externalExecutables) {
+ ISourceProviderService sourceProviderService = PlatformUI.getWorkbench()
+ .getService(ISourceProviderService.class);
+ ExternalExecutablesState stateService = (ExternalExecutablesState) sourceProviderService
+ .getSourceProvider(ExternalExecutablesState.CONFIGURED_STATE);
+
+ IPath stateLocation = UIPlugin.getDefault().getStateLocation();
+ if (stateLocation != null) {
+ File f = stateLocation.append(".executables/data.properties").toFile(); //$NON-NLS-1$
+ if (f.isFile() && (externalExecutables == null || externalExecutables.isEmpty())) {
+ @SuppressWarnings("unused")
+ boolean s = f.delete();
+
+ if (stateService != null)
+ stateService.disable();
+ } else {
+ FileWriter w = null;
+
+ try {
+ Properties data = new Properties();
+ for (int i = 0; i < externalExecutables.size(); i++) {
+ Map<String, String> m = externalExecutables.get(i);
+ for (Entry<String, String> e : m.entrySet()) {
+ String key = Integer.toString(i) + "." + e.getKey(); //$NON-NLS-1$
+ data.setProperty(key, e.getValue());
+ }
+ }
+
+ if (!f.exists()) {
+ @SuppressWarnings("unused")
+ boolean s = f.getParentFile().mkdirs();
+ s = f.createNewFile();
+ }
+ w = new FileWriter(f);
+ data.store(w, null);
+
+ if (stateService != null)
+ stateService.enable();
+ } catch (Exception e) {
+ if (Platform.inDebugMode()) {
+ e.printStackTrace();
+ }
+ } finally {
+ if (w != null) {
+ try {
+ w.flush();
+ w.close();
+ } catch (IOException e) {
+ /* ignored on purpose */
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/local/showin/ExternalExecutablesUtils.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/local/showin/ExternalExecutablesUtils.java
new file mode 100644
index 00000000000..a62211cae62
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/local/showin/ExternalExecutablesUtils.java
@@ -0,0 +1,85 @@
+/*******************************************************************************
+ * Copyright (c) 2021 Kichwa Coders Canada Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.local.showin;
+
+import java.io.File;
+import java.util.Optional;
+import java.util.StringTokenizer;
+import java.util.function.Function;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.swt.graphics.ImageData;
+import org.eclipse.swt.graphics.ImageLoader;
+
+public class ExternalExecutablesUtils {
+
+ /**
+ * Loads the image data suitable for showing an icon in a menu
+ * (16 x 16, 8bit depth) from the given file.
+ *
+ * @param path The image file path. Must not be <code>null</code>.
+ * @return The image data or <code>null</code>.
+ */
+ public static ImageData loadImage(String path) {
+ Assert.isNotNull(path);
+
+ ImageData id = null;
+ ImageData biggest = null;
+
+ ImageLoader loader = new ImageLoader();
+ ImageData[] data = loader.load(path);
+
+ if (data != null) {
+ for (ImageData d : data) {
+ if (d.height == 16 && d.width == 16) {
+ if (id == null || id.height != 16 && id.width != 16) {
+ id = d;
+ } else if (d.depth < id.depth && d.depth >= 8) {
+ id = d;
+ }
+ } else {
+ if (id == null) {
+ id = d;
+ biggest = d;
+ } else if (id.height != 16 && d.height < id.height && id.width != 16 && d.width < id.width) {
+ id = d;
+ } else if (biggest == null || d.height > biggest.height && d.width > biggest.width) {
+ biggest = d;
+ }
+ }
+ }
+ }
+
+ // if the icon is still too big -> downscale the biggest
+ if (id != null && id.height > 16 && id.width > 16 && biggest != null) {
+ id = biggest.scaledTo(16, 16);
+ }
+
+ return id;
+ }
+
+ public static <T> Optional<T> visitPATH(Function<String, Optional<T>> r) {
+ String path = System.getenv("PATH"); //$NON-NLS-1$
+ if (path != null) {
+ StringTokenizer tokenizer = new StringTokenizer(path, File.pathSeparator);
+ while (tokenizer.hasMoreTokens()) {
+ String token = tokenizer.nextToken();
+
+ Optional<T> apply = r.apply(token);
+ if (apply.isPresent()) {
+ return apply;
+ }
+ }
+ }
+ return Optional.empty();
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/local/showin/IDetectExternalExecutable.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/local/showin/IDetectExternalExecutable.java
new file mode 100644
index 00000000000..4fd8083ed7a
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/local/showin/IDetectExternalExecutable.java
@@ -0,0 +1,41 @@
+/*******************************************************************************
+ * Copyright (c) 2021 Kichwa Coders Canada Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.local.showin;
+
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.tm.terminal.view.ui.interfaces.IExternalExecutablesProperties;
+
+public interface IDetectExternalExecutable {
+ /**
+ * Detect if {@link #getEntries(List)} will return a non-empty list of entries, assuming externalEntries is an empty
+ * list. This method is used during critical UI times (such as startup) and should be very fast.
+ */
+ boolean hasEntries();
+
+ /**
+ * Detect any additional external executables that can be added to the Show In list.
+ *
+ * This method is sometimes called in the UI thread when displaying context menus, so should
+ * either be very fast, or it should use a flag to not re-run multiple times after the initial detection.
+ *
+ * The same instance of the {@link IDetectExternalExecutable} will be used on each invocation of this method.
+ *
+ * @param externalExecutables is the list of executables already present that can be used to prevent duplicate
+ * entries. This list should not be modified.
+ * @return a list of additional items to add to the external executables list. Each map entry should have keys
+ * that match {@link IExternalExecutablesProperties}. Must not return <code>null</code>, return
+ * an empty list instead.
+ */
+ List<Map<String, String>> getEntries(List<Map<String, String>> externalExecutables);
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/local/showin/detectors/DetectGitBash.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/local/showin/detectors/DetectGitBash.java
new file mode 100644
index 00000000000..4d056b449c9
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/local/showin/detectors/DetectGitBash.java
@@ -0,0 +1,126 @@
+/*******************************************************************************
+ * Copyright (c) 2021 Kichwa Coders Canada Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.local.showin.detectors;
+
+import java.io.File;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.function.Predicate;
+
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.tm.terminal.view.ui.interfaces.IExternalExecutablesProperties;
+import org.eclipse.tm.terminal.view.ui.local.showin.ExternalExecutablesUtils;
+import org.eclipse.tm.terminal.view.ui.local.showin.IDetectExternalExecutable;
+
+public class DetectGitBash implements IDetectExternalExecutable {
+
+ private static final String GIT_BASH = "Git Bash"; //$NON-NLS-1$
+ private static boolean gitBashSearchDone = false;
+
+ @Override
+ public boolean hasEntries() {
+ if (Platform.OS_WIN32.equals(Platform.getOS())) {
+ // the order of operations here is different than getEntries because we just
+ // want to know if anything can match. We avoid iterating over the whole PATH
+ // if the user has git installed in the default location. This gets us the
+ // correct answer to hasEntries quickly without having to iterate over the whole
+ // PATH (especially if PATH is long!).
+ return getGitInstallDirectory().or(this::getGitInstallDirectoryFromPATH).isPresent();
+ }
+ return false;
+ }
+
+ @Override
+ public List<Map<String, String>> getEntries(List<Map<String, String>> externalExecutables) {
+ // Lookup git bash (Windows Hosts only)
+ if (!gitBashSearchDone && Platform.OS_WIN32.equals(Platform.getOS())) {
+ // Do not search again for git bash while the session is running
+ gitBashSearchDone = true;
+
+ // Check the existing entries first
+ // Find a entry labeled "Git Bash"
+ if (externalExecutables.stream().map(m -> m.get(IExternalExecutablesProperties.PROP_NAME))
+ .anyMatch(Predicate.isEqual(GIT_BASH))) {
+ return Collections.emptyList();
+ }
+
+ // If not found in the existing entries, check the path, then
+ // if it is not found in the PATH, check the default install locations
+ Optional<File> result = getGitInstallDirectoryFromPATH().or(this::getGitInstallDirectory);
+ Optional<String> gitPath = result.map(f -> new File(f, "bin/sh.exe").getAbsolutePath()); //$NON-NLS-1$
+ Optional<String> iconPath = result.flatMap(f -> getGitIconPath(f));
+
+ return gitPath.map(path -> {
+ Map<String, String> m = new HashMap<>();
+ m.put(IExternalExecutablesProperties.PROP_NAME, GIT_BASH);
+ m.put(IExternalExecutablesProperties.PROP_PATH, path);
+ m.put(IExternalExecutablesProperties.PROP_ARGS, "--login -i"); //$NON-NLS-1$
+ iconPath.ifPresent(icon -> m.put(IExternalExecutablesProperties.PROP_ICON, icon));
+ m.put(IExternalExecutablesProperties.PROP_TRANSLATE, Boolean.TRUE.toString());
+
+ return List.of(m);
+ }).orElse(Collections.emptyList());
+
+ }
+ return Collections.emptyList();
+ }
+
+ private Optional<File> getGitInstallDirectoryFromPATH() {
+ return ExternalExecutablesUtils.visitPATH(entry -> {
+ File f = new File(entry, "git.exe"); //$NON-NLS-1$
+ if (f.canRead()) {
+ File check = f.getParentFile().getParentFile();
+ if (new File(check, "bin/sh.exe").canExecute()) { //$NON-NLS-1$
+ return Optional.of(check);
+ }
+ }
+ return Optional.empty();
+ });
+ }
+
+ private Optional<File> getGitInstallDirectory() {
+ // If 32-bit and 64-bit are both present, prefer the 64-bit one
+ // as it is probably newer and more likely to be present
+ // for the fast check required by hasEntries
+ File f = new File("C:/Program Files/Git/bin/sh.exe"); //$NON-NLS-1$
+ if (!f.exists()) {
+ f = new File("C:/Program Files (x86)/Git/bin/sh.exe"); //$NON-NLS-1$
+ }
+ if (f.exists() && f.canExecute()) {
+ return Optional.of(f.getParentFile().getParentFile());
+ }
+ return Optional.empty();
+ }
+
+ private static Optional<String> getGitIconPath(File parent) {
+ File f = new File(parent, "etc/git.ico"); //$NON-NLS-1$
+ if (f.canRead()) {
+ return Optional.of(f.getAbsolutePath());
+ }
+
+ // check for icon in newer versions of Git for Windows 32 bit
+ f = new File(parent, "mingw32/share/git/git-for-windows.ico"); //$NON-NLS-1$
+ if (f.canRead()) {
+ return Optional.of(f.getAbsolutePath());
+ }
+
+ // check for icon in newer versions of Git for Windows 64 bit
+ f = new File(parent, "mingw64/share/git/git-for-windows.ico"); //$NON-NLS-1$
+ if (f.canRead()) {
+ return Optional.of(f.getAbsolutePath());
+ }
+
+ return Optional.empty();
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/local/showin/detectors/DetectWSL.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/local/showin/detectors/DetectWSL.java
new file mode 100644
index 00000000000..8d98d53f786
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/local/showin/detectors/DetectWSL.java
@@ -0,0 +1,167 @@
+/*******************************************************************************
+ * Copyright (c) 2021 Kichwa Coders Canada Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.local.showin.detectors;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Predicate;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.OperationCanceledException;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.tm.terminal.view.ui.interfaces.IExternalExecutablesProperties;
+import org.eclipse.tm.terminal.view.ui.local.showin.IDetectExternalExecutable;
+
+public class DetectWSL implements IDetectExternalExecutable {
+
+ private List<Map<String, String>> result = null;
+ private WslDetectJob detectJob = null;
+
+ public DetectWSL() {
+ if (!Platform.OS_WIN32.equals(Platform.getOS())) {
+ result = Collections.emptyList();
+ }
+ }
+
+ @Override
+ public boolean hasEntries() {
+ return !getEntries().isEmpty();
+ }
+
+ @Override
+ public List<Map<String, String>> getEntries(List<Map<String, String>> externalExecutables) {
+ List<Map<String, String>> newEntries = new ArrayList<>();
+ var entries = getEntries();
+ for (var map : entries) {
+ String name = map.get(IExternalExecutablesProperties.PROP_NAME);
+ if (externalExecutables.stream().map(m -> m.get(IExternalExecutablesProperties.PROP_NAME))
+ .noneMatch(Predicate.isEqual(name))) {
+ newEntries.add(map);
+ }
+ }
+ return newEntries;
+ }
+
+ private synchronized List<Map<String, String>> getEntries() {
+ // getEntries can be called in many contexts, even from within
+ // menu creation (see Bug 574519). Therefore we spawn a job to
+ // get the real entries, which means until the job is done, this
+ // method will return no entries.
+ if (result != null) {
+ return result;
+ }
+ if (detectJob == null) {
+ detectJob = new WslDetectJob();
+ detectJob.schedule();
+ }
+ try {
+ if (detectJob.join(10, null) && detectJob.result != null) { // Suspended jobs return early from join()
+ result = detectJob.result;
+ detectJob = null;
+ } else {
+ return Collections.emptyList();
+ }
+ } catch (OperationCanceledException | InterruptedException e) {
+ result = Collections.emptyList();
+ detectJob = null;
+ }
+ return result;
+ }
+
+ private static class WslDetectJob extends Job {
+ private List<Map<String, String>> result = null;
+
+ public WslDetectJob() {
+ super("Detect WSL Instances"); //$NON-NLS-1$
+ setSystem(true);
+ }
+
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ if (result == null) {
+ result = Collections.emptyList();
+ String windir = System.getenv("windir"); //$NON-NLS-1$
+ if (windir == null) {
+ return Status.OK_STATUS;
+ }
+ String wsl = windir + "\\System32\\wsl.exe"; //$NON-NLS-1$
+ if (!Files.isExecutable(Paths.get(wsl))) {
+ return Status.OK_STATUS;
+ }
+
+ ProcessBuilder pb = new ProcessBuilder(wsl, "--list", "--quiet"); //$NON-NLS-1$ //$NON-NLS-2$
+ try {
+ Process process = pb.start();
+ try (InputStream is = process.getErrorStream()) {
+ // drain the error stream
+ if (is.readAllBytes().length != 0) {
+ return Status.OK_STATUS;
+ }
+ }
+
+ try (BufferedReader reader = new BufferedReader(
+ new InputStreamReader(process.getInputStream(), StandardCharsets.UTF_16LE))) {
+ result = new ArrayList<>();
+ String line = null;
+ while ((line = reader.readLine()) != null) {
+ String distribution = line.trim();
+ if (distribution.isBlank()) {
+ continue;
+ }
+ // docker-desktop entries are not "real" so shouldn't be shown in UI
+ if (distribution.startsWith("docker-desktop")) { //$NON-NLS-1$
+ continue;
+ }
+
+ String name = distribution + " (WSL)"; //$NON-NLS-1$
+ Map<String, String> m = new HashMap<>();
+ m.put(IExternalExecutablesProperties.PROP_NAME, name);
+ m.put(IExternalExecutablesProperties.PROP_PATH, wsl);
+ m.put(IExternalExecutablesProperties.PROP_ARGS, "--distribution " + distribution); //$NON-NLS-1$
+ m.put(IExternalExecutablesProperties.PROP_TRANSLATE, Boolean.TRUE.toString());
+ result.add(m);
+ }
+ }
+
+ try {
+ // lets get the return code to make sure that the process did not produce anything unexpected. As the streams
+ // are closed, the waitFor shouldn't block.
+ if (process.waitFor() != 0) {
+ // WSL can send errors to stdout, so discard results if the exit value ends up being non-zero
+ result.clear();
+ }
+ } catch (InterruptedException e) {
+ // we've been interrupted, give up on the output we have (probably unreachable in practice)
+ result.clear();
+ }
+
+ } catch (IOException e) {
+ }
+ }
+ return Status.OK_STATUS;
+ }
+
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/manager/ConsoleManager.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/manager/ConsoleManager.java
new file mode 100644
index 00000000000..8dec9dc5528
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/manager/ConsoleManager.java
@@ -0,0 +1,664 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ * Max Weninger (Wind River) - [361363] [TERMINALS] Implement "Pin&Clone" for the "Terminals" view
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.manager;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.swt.custom.CTabFolder;
+import org.eclipse.swt.custom.CTabItem;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.tm.internal.terminal.control.ITerminalViewControl;
+import org.eclipse.tm.internal.terminal.provisional.api.ITerminalConnector;
+import org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl;
+import org.eclipse.tm.terminal.view.core.interfaces.constants.ITerminalsConnectorConstants;
+import org.eclipse.tm.terminal.view.ui.activator.UIPlugin;
+import org.eclipse.tm.terminal.view.ui.interfaces.IPreferenceKeys;
+import org.eclipse.tm.terminal.view.ui.interfaces.ITerminalsView;
+import org.eclipse.tm.terminal.view.ui.interfaces.IUIConstants;
+import org.eclipse.tm.terminal.view.ui.tabs.TabFolderManager;
+import org.eclipse.tm.terminal.view.ui.view.TerminalsView;
+import org.eclipse.ui.IPartListener2;
+import org.eclipse.ui.IPartService;
+import org.eclipse.ui.IPerspectiveDescriptor;
+import org.eclipse.ui.IPerspectiveListener;
+import org.eclipse.ui.IViewPart;
+import org.eclipse.ui.IViewReference;
+import org.eclipse.ui.IViewSite;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchPartReference;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PerspectiveAdapter;
+import org.eclipse.ui.PlatformUI;
+
+/**
+ * Terminal console manager.
+ */
+public class ConsoleManager {
+
+ // Reference to the perspective listener instance
+ private final IPerspectiveListener perspectiveListener;
+
+ // Internal perspective listener implementation
+ static class ConsoleManagerPerspectiveListener extends PerspectiveAdapter {
+ private final List<IViewReference> references = new ArrayList<>();
+
+ @Override
+ public void perspectiveActivated(IWorkbenchPage page, IPerspectiveDescriptor perspective) {
+ // If the old references list is empty, just return
+ if (references.isEmpty())
+ return;
+ // Create a copy of the old view references list
+ List<IViewReference> oldReferences = new ArrayList<>(references);
+
+ // Get the current list of view references
+ List<IViewReference> references = new ArrayList<>(Arrays.asList(page.getViewReferences()));
+ for (IViewReference reference : oldReferences) {
+ if (references.contains(reference))
+ continue;
+ // Previous visible terminals console view reference, make visible again
+ try {
+ page.showView(reference.getId(), reference.getSecondaryId(), IWorkbenchPage.VIEW_VISIBLE);
+ } catch (PartInitException e) {
+ /* Failure on part instantiation is ignored */ }
+ }
+
+ }
+
+ @Override
+ public void perspectivePreDeactivate(IWorkbenchPage page, IPerspectiveDescriptor perspective) {
+ references.clear();
+ for (IViewReference reference : page.getViewReferences()) {
+ IViewPart part = reference.getView(false);
+ if (part instanceof TerminalsView && !references.contains(reference)) {
+ references.add(reference);
+ }
+ }
+ }
+ }
+
+ // Reference to the part listener instance
+ private final IPartListener2 partListener;
+
+ // The ids of the last activated terminals view
+ /* default */ String lastActiveViewId = null;
+ /* default */ String lastActiveSecondaryViewId = null;
+
+ // Internal part listener implementation
+ class ConsoleManagerPartListener implements IPartListener2 {
+
+ @Override
+ public void partActivated(IWorkbenchPartReference partRef) {
+ IWorkbenchPart part = partRef.getPart(false);
+ if (part instanceof ITerminalsView) {
+ lastActiveViewId = ((ITerminalsView) part).getViewSite().getId();
+ lastActiveSecondaryViewId = ((ITerminalsView) part).getViewSite().getSecondaryId();
+ //System.out.println("Terminals view activated: id = " + lastActiveViewId + ", secondary id = " + lastActiveSecondaryViewId); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ }
+
+ @Override
+ public void partBroughtToTop(IWorkbenchPartReference partRef) {
+ }
+
+ @Override
+ public void partClosed(IWorkbenchPartReference partRef) {
+ }
+
+ @Override
+ public void partDeactivated(IWorkbenchPartReference partRef) {
+ }
+
+ @Override
+ public void partOpened(IWorkbenchPartReference partRef) {
+ }
+
+ @Override
+ public void partHidden(IWorkbenchPartReference partRef) {
+ }
+
+ @Override
+ public void partVisible(IWorkbenchPartReference partRef) {
+ }
+
+ @Override
+ public void partInputChanged(IWorkbenchPartReference partRef) {
+ }
+ }
+
+ /*
+ * Thread save singleton instance creation.
+ */
+ private static class LazyInstanceHolder {
+ public static ConsoleManager fInstance = new ConsoleManager();
+ }
+
+ /**
+ * Returns the singleton instance for the console manager.
+ */
+ public static ConsoleManager getInstance() {
+ return LazyInstanceHolder.fInstance;
+ }
+
+ /**
+ * Constructor.
+ */
+ ConsoleManager() {
+ super();
+
+ perspectiveListener = new ConsoleManagerPerspectiveListener();
+ partListener = new ConsoleManagerPartListener();
+
+ if (PlatformUI.isWorkbenchRunning() && PlatformUI.getWorkbench() != null
+ && PlatformUI.getWorkbench().getActiveWorkbenchWindow() != null) {
+ PlatformUI.getWorkbench().getActiveWorkbenchWindow().addPerspectiveListener(perspectiveListener);
+
+ IPartService service = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getPartService();
+ service.addPartListener(partListener);
+ }
+ }
+
+ /**
+ * Returns the active workbench window page if the workbench is still running.
+ *
+ * @return The active workbench window page or <code>null</code>
+ */
+ private final IWorkbenchPage getActiveWorkbenchPage() {
+ // To lookup the console view, the workbench must be still running
+ if (PlatformUI.isWorkbenchRunning() && PlatformUI.getWorkbench() != null
+ && PlatformUI.getWorkbench().getActiveWorkbenchWindow() != null) {
+ return PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
+ }
+ return null;
+ }
+
+ /**
+ * Returns the console view if available within the active workbench window page.
+ * <p>
+ * <b>Note:</b> The method must be called within the UI thread.
+ *
+ * @param id The terminals console view id or <code>null</code> to show the default terminals console view.
+ * @param secondaryId The terminal console secondary id, which may be <code>null</code> which is the secondary id of
+ * the first terminal view opened. To specify reuse of most recent terminal view use special value of
+ * {@link ITerminalsConnectorConstants#LAST_ACTIVE_SECONDARY_ID}.
+ *
+ * @return The console view instance if available or <code>null</code> otherwise.
+ */
+ public ITerminalsView findConsoleView(String id, String secondaryId) {
+ Assert.isNotNull(Display.findDisplay(Thread.currentThread()));
+
+ ITerminalsView view = null;
+
+ // Get the active workbench page
+ IWorkbenchPage page = getActiveWorkbenchPage();
+ if (page != null) {
+ // Look for the view
+ IViewPart part = getTerminalsViewWithSecondaryId(id != null ? id : IUIConstants.ID, secondaryId, true);
+ // Check the interface
+ if (part instanceof ITerminalsView) {
+ view = (ITerminalsView) part;
+ }
+ }
+
+ return view;
+ }
+
+ /**
+ * Search and return a terminal view with a specific secondary id
+ *
+ * @param id The terminals console view id. Must not be <code>null</code>.
+ * @param secondaryId The terminal console secondary id, which may be <code>null</code> which is the secondary id of
+ * the first terminal view opened. To specify reuse of any active terminal view use special value of
+ * {@link ITerminalsConnectorConstants#ANY_ACTIVE_SECONDARY_ID}.
+ * @param restore <code>True</code> if to try to restore the view, <code>false</code> otherwise.
+ *
+ * @return The terminals console view instance or <code>null</code> if not found.
+ */
+ private IViewPart getTerminalsViewWithSecondaryId(String id, String secondaryId, boolean restore) {
+ Assert.isNotNull(id);
+
+ for (IViewReference ref : getActiveWorkbenchPage().getViewReferences()) {
+ if (ref.getId().equals(id)) {
+ String refSecondaryId = ref.getSecondaryId();
+ if (ITerminalsConnectorConstants.ANY_ACTIVE_SECONDARY_ID.equals(secondaryId)
+ || Objects.equals(secondaryId, refSecondaryId)) {
+ return ref.getView(restore);
+ }
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Search and return the active terminals view.
+ *
+ * @param id The terminals console view id. Must not be <code>null</code>.
+ * @param secondaryId The terminal console secondary id, which may be <code>null</code> which is the secondary id of
+ * the first terminal view opened. To specify reuse of most recent terminal view use special value of
+ * {@link ITerminalsConnectorConstants#LAST_ACTIVE_SECONDARY_ID}.
+ * @return The terminals console view instance or <code>null</code> if not found.
+ */
+ private IViewPart getActiveTerminalsView(String id, String secondaryId) {
+ Assert.isNotNull(id);
+
+ IViewPart part = null;
+
+ if (id.equals(lastActiveViewId)) {
+ if (ITerminalsConnectorConstants.LAST_ACTIVE_SECONDARY_ID.equals(secondaryId)
+ || Objects.equals(secondaryId, lastActiveSecondaryViewId)) {
+ part = getTerminalsViewWithSecondaryId(lastActiveViewId, lastActiveSecondaryViewId, false);
+ }
+ }
+
+ if (part == null) {
+ String finalSecondaryId;
+ if (ITerminalsConnectorConstants.LAST_ACTIVE_SECONDARY_ID.equals(secondaryId)) {
+ // There is no last available, so get any available instead
+ finalSecondaryId = ITerminalsConnectorConstants.ANY_ACTIVE_SECONDARY_ID;
+ } else {
+ finalSecondaryId = secondaryId;
+ }
+ part = getTerminalsViewWithSecondaryId(id, finalSecondaryId, true);
+ if (part != null) {
+ lastActiveViewId = part.getViewSite().getId();
+ lastActiveSecondaryViewId = part.getViewSite().getSecondaryId();
+ }
+ }
+
+ return part;
+ }
+
+ /**
+ * Return a new secondary id to use, based on the number of open terminal views.
+ *
+ * @param id The terminals console view id. Must not be <code>null</code>.
+ * @return The next secondary id, or <code>null</code> if it is the first one
+ * @since 4.1
+ */
+ public String getNextTerminalSecondaryId(String id) {
+ Assert.isNotNull(id);
+
+ Map<String, IViewReference> terminalViews = new HashMap<>();
+
+ int maxNumber = 0;
+ for (IViewReference ref : getActiveWorkbenchPage().getViewReferences()) {
+ if (ref.getId().equals(id)) {
+ if (ref.getSecondaryId() != null) {
+ terminalViews.put(ref.getSecondaryId(), ref);
+ int scondaryIdInt = Integer.parseInt(ref.getSecondaryId());
+ if (scondaryIdInt > maxNumber) {
+ maxNumber = scondaryIdInt;
+ }
+ } else {
+ // add the one with secondaryId == null with 0 by default
+ terminalViews.put(Integer.toString(0), ref);
+ }
+ }
+ }
+ if (terminalViews.size() == 0) {
+ return null;
+ }
+
+ int i = 0;
+ for (; i < maxNumber; i++) {
+ String secondaryIdStr = Integer.toString(i);
+ if (!terminalViews.keySet().contains(secondaryIdStr)) {
+ // found a free slot
+ if (i == 0)
+ return null;
+ return Integer.toString(i);
+ }
+ }
+ // add a new one
+ return Integer.toString(i + 1);
+ }
+
+ /**
+ * Show the terminals console view specified by the given id.
+ * <p>
+ * <b>Note:</b> The method must be called within the UI thread.
+ *
+ * @param id The terminals console view id or <code>null</code> to show the default terminals console view.
+ */
+ public IViewPart showConsoleView(String id, String secondaryId) {
+ Assert.isNotNull(Display.findDisplay(Thread.currentThread()));
+
+ // Get the active workbench page
+ IWorkbenchPage page = getActiveWorkbenchPage();
+ if (page != null) {
+ try {
+ // show the view
+ IViewPart part = getActiveTerminalsView(id != null ? id : IUIConstants.ID, secondaryId);
+ if (part == null) {
+ String finalSecondaryId;
+ if (ITerminalsConnectorConstants.LAST_ACTIVE_SECONDARY_ID.equals(secondaryId)
+ || ITerminalsConnectorConstants.ANY_ACTIVE_SECONDARY_ID.equals(secondaryId)) {
+ // We have already checked all open views, so since none of the special flags work
+ // we are opening the first view, which means no secondary id.
+ finalSecondaryId = null;
+ } else {
+ finalSecondaryId = secondaryId;
+ }
+ part = page.showView(id != null ? id : IUIConstants.ID, finalSecondaryId,
+ IWorkbenchPage.VIEW_ACTIVATE);
+ }
+ // and force the view to the foreground
+ page.bringToTop(part);
+ return part;
+ } catch (PartInitException e) {
+ IStatus status = new Status(IStatus.ERROR, UIPlugin.getUniqueIdentifier(), e.getLocalizedMessage(), e);
+ UIPlugin.getDefault().getLog().log(status);
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Bring the terminals console view, specified by the given id, to the top of the view stack.
+ *
+ * @param id The terminals console view id or <code>null</code> to show the default terminals console view.
+ * @param secondaryId The terminals console view secondary id or <code>null</code>.
+ * @param activate If <code>true</code> activate the console view.
+ */
+ private IViewPart bringToTop(String id, String secondaryId, boolean activate) {
+ // Get the active workbench page
+ IWorkbenchPage page = getActiveWorkbenchPage();
+ if (page != null) {
+ // get (last) active terminal view
+ IViewPart activePart = getActiveTerminalsView(id != null ? id : IUIConstants.ID, secondaryId);
+ if (activePart == null) {
+ // Create a new one
+ IViewPart newPart = showConsoleView(id != null ? id : IUIConstants.ID,
+ getNextTerminalSecondaryId(IUIConstants.ID));
+ return newPart;
+ }
+
+ if (activate)
+ page.activate(activePart);
+ else
+ page.bringToTop(activePart);
+
+ return activePart;
+ }
+ return null;
+ }
+
+ /**
+ * Opens the console with the given title and connector.
+ * <p>
+ * <b>Note:</b> The method must be called within the UI thread.
+ *
+ * @param id The terminals console view id or <code>null</code> to show the default terminals console view.
+ * @param title The console title. Must not be <code>null</code>.
+ * @param encoding The terminal encoding or <code>null</code>.
+ * @param connector The terminal connector. Must not be <code>null</code>.
+ * @param data The custom terminal data node or <code>null</code>.
+ * @param flags The flags controlling how the console is opened or <code>null</code> to use defaults.
+ * @deprecated Use {@link #openConsole(String, String, String, String, ITerminalConnector, Object, Map)}
+ * and explicitly specify an ID {@link ITerminalsConnectorConstants#LAST_ACTIVE_SECONDARY_ID}
+ */
+ @Deprecated
+ public CTabItem openConsole(String id, String title, String encoding, ITerminalConnector connector, Object data,
+ Map<String, Boolean> flags) {
+ return openConsole(id, ITerminalsConnectorConstants.LAST_ACTIVE_SECONDARY_ID, title, encoding, connector, data,
+ flags);
+ }
+
+ /**
+ * Opens the console with the given title and connector.
+ * <p>
+ * <b>Note:</b> The method must be called within the UI thread.
+ *
+ * @param id The terminals console view id or <code>null</code> to show the default terminals console view.
+ * @param secondaryId The terminal console secondary id, which may be <code>null</code> which is the secondary id of
+ * the first terminal view opened. To specify reuse of most recent terminal view use special value of
+ * {@link ITerminalsConnectorConstants#LAST_ACTIVE_SECONDARY_ID}.
+ * @param title The console title. Must not be <code>null</code>.
+ * @param encoding The terminal encoding or <code>null</code>.
+ * @param connector The terminal connector. Must not be <code>null</code>.
+ * @param data The custom terminal data node or <code>null</code>.
+ * @param flags The flags controlling how the console is opened or <code>null</code> to use defaults.
+ */
+ public CTabItem openConsole(String id, String secondaryId, String title, String encoding,
+ ITerminalConnector connector, Object data, Map<String, Boolean> flags) {
+ Assert.isNotNull(title);
+ Assert.isNotNull(connector);
+ Assert.isNotNull(Display.findDisplay(Thread.currentThread()));
+
+ // Get the flags handled by the openConsole method itself
+ boolean activate = flags != null && flags.containsKey("activate") ? flags.get("activate").booleanValue() //$NON-NLS-1$//$NON-NLS-2$
+ : false;
+ boolean forceNew = flags != null && flags.containsKey(ITerminalsConnectorConstants.PROP_FORCE_NEW)
+ ? flags.get(ITerminalsConnectorConstants.PROP_FORCE_NEW).booleanValue()
+ : false;
+
+ // Make the consoles view visible
+ IViewPart part = bringToTop(id, secondaryId, activate);
+ if (!(part instanceof ITerminalsView))
+ return null;
+ // Cast to the correct type
+ ITerminalsView view = (ITerminalsView) part;
+
+ // Get the tab folder manager associated with the view
+ TabFolderManager manager = view.getAdapter(TabFolderManager.class);
+ if (manager == null)
+ return null;
+
+ // Lookup an existing console first
+ String secId = ((IViewSite) part.getSite()).getSecondaryId();
+ CTabItem item = findConsole(id, secId, title, connector, data);
+
+ // Switch to the tab folder page _before_ calling TabFolderManager#createItem(...).
+ // The createItem(...) method invokes the corresponding connect and this may take
+ // a while if connecting to a remote host. To allow a "Connecting..." decoration,
+ // the tab folder page needs to be visible.
+ view.switchToTabFolderControl();
+
+ // If no existing console exist or forced -> Create the tab item
+ if (item == null || forceNew) {
+ // If configured, check all existing tab items if they are associated
+ // with terminated consoles
+ if (UIPlugin.getScopedPreferences().getBoolean(IPreferenceKeys.PREF_REMOVE_TERMINATED_TERMINALS)) {
+ // Remote all terminated tab items. This will invoke the
+ // tab's dispose listener.
+ manager.removeTerminatedItems();
+ // Switch back to the tab folder control as removeTerminatedItems()
+ // may have triggered the switch to the empty space control.
+ view.switchToTabFolderControl();
+ }
+
+ // Create a new tab item
+ item = manager.createTabItem(title, encoding, connector, data, flags);
+ }
+ // If still null, something went wrong
+ if (item == null)
+ return null;
+
+ // Make the item the active console
+ manager.bringToTop(item);
+
+ // Make sure the terminals view has the focus after opening a new terminal
+ view.setFocus();
+
+ // Return the tab item of the opened console
+ return item;
+ }
+
+ /**
+ * Lookup a console with the given title and the given terminal connector.
+ * <p>
+ * <b>Note:</b> The method must be called within the UI thread.
+ * <b>Note:</b> The method will handle unified console titles itself.
+ *
+ * @param id The terminals console view id or <code>null</code> to show the default terminals console view.
+ * @param secondaryId The terminals console view secondary id or <code>null</code>.
+ * @param title The console title. Must not be <code>null</code>.
+ * @param connector The terminal connector. Must not be <code>null</code>.
+ * @param data The custom terminal data node or <code>null</code>.
+ *
+ * @return The corresponding console tab item or <code>null</code>.
+ */
+ public CTabItem findConsole(String id, String secondaryId, String title, ITerminalConnector connector,
+ Object data) {
+ Assert.isNotNull(title);
+ Assert.isNotNull(connector);
+ Assert.isNotNull(Display.findDisplay(Thread.currentThread()));
+
+ // Get the console view
+ ITerminalsView view = findConsoleView(id, secondaryId);
+ if (view == null)
+ return null;
+
+ // Get the tab folder manager associated with the view
+ TabFolderManager manager = view.getAdapter(TabFolderManager.class);
+ if (manager == null)
+ return null;
+
+ return manager.findTabItem(title, connector, data);
+ }
+
+ /**
+ * Lookup a console which is assigned with the given terminal control.
+ * <p>
+ * <b>Note:</b> The method must be called within the UI thread.
+ *
+ * @param control The terminal control. Must not be <code>null</code>.
+ * @return The corresponding console tab item or <code>null</code>.
+ */
+ public CTabItem findConsole(ITerminalControl control) {
+ Assert.isNotNull(control);
+
+ CTabItem item = null;
+
+ IWorkbenchPage page = getActiveWorkbenchPage();
+ if (page != null) {
+ for (IViewReference ref : page.getViewReferences()) {
+ IViewPart part = ref != null ? ref.getView(false) : null;
+ if (part instanceof ITerminalsView) {
+ CTabFolder tabFolder = part.getAdapter(CTabFolder.class);
+ if (tabFolder == null)
+ continue;
+ CTabItem[] candidates = tabFolder.getItems();
+ for (CTabItem candidate : candidates) {
+ Object data = candidate.getData();
+ if (data instanceof ITerminalControl && control.equals(data)) {
+ item = candidate;
+ break;
+ }
+ }
+ }
+ if (item != null)
+ break;
+ }
+ }
+
+ return item;
+ }
+
+ /**
+ * Search all console views for the one that contains a specific connector.
+ * <p>
+ * <b>Note:</b> The method will handle unified console titles itself.
+ *
+ * @param id The terminals console view id or <code>null</code> to show the default terminals console view.
+ * @param title The console title. Must not be <code>null</code>.
+ * @param connector The terminal connector. Must not be <code>null</code>.
+ * @param data The custom terminal data node or <code>null</code>.
+ *
+ * @return The corresponding console tab item or <code>null</code>.
+ */
+ private CTabItem findConsoleForTerminalConnector(String id, String title, ITerminalConnector connector,
+ Object data) {
+ Assert.isNotNull(title);
+ Assert.isNotNull(connector);
+
+ IWorkbenchPage page = getActiveWorkbenchPage();
+ if (page != null) {
+ IViewReference[] refs = page.getViewReferences();
+ for (IViewReference ref : refs) {
+ if (ref.getId().equals(id)) {
+ IViewPart part = ref.getView(true);
+ if (part instanceof ITerminalsView) {
+ // Get the tab folder manager associated with the view
+ TabFolderManager manager = part.getAdapter(TabFolderManager.class);
+ if (manager == null) {
+ continue;
+ }
+ CTabItem item = manager.findTabItem(title, connector, data);
+ if (item != null) {
+ return item;
+ }
+ }
+ }
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Close the console with the given title and the given terminal connector.
+ * <p>
+ * <b>Note:</b> The method must be called within the UI thread.
+ * <b>Note:</b> The method will handle unified console titles itself.
+ *
+ * @param title The console title. Must not be <code>null</code>.
+ * @param connector The terminal connector. Must not be <code>null</code>.
+ * @param data The custom terminal data node or <code>null</code>.
+ */
+ public void closeConsole(String id, String title, ITerminalConnector connector, Object data) {
+ Assert.isNotNull(title);
+ Assert.isNotNull(connector);
+ Assert.isNotNull(Display.findDisplay(Thread.currentThread()));
+
+ // Lookup the console with this connector
+ CTabItem console = findConsoleForTerminalConnector(id, title, connector, data);
+ // If found, dispose the console
+ if (console != null) {
+ console.dispose();
+ }
+ }
+
+ /**
+ * Terminate (disconnect) the console with the given title and the given terminal connector.
+ * <p>
+ * <b>Note:</b> The method must be called within the UI thread.
+ * <b>Note:</b> The method will handle unified console titles itself.
+ *
+ * @param title The console title. Must not be <code>null</code>.
+ * @param connector The terminal connector. Must not be <code>null</code>.
+ * @param data The custom terminal data node or <code>null</code>.
+ */
+ public void terminateConsole(String id, String title, ITerminalConnector connector, Object data) {
+ Assert.isNotNull(title);
+ Assert.isNotNull(connector);
+ Assert.isNotNull(Display.findDisplay(Thread.currentThread()));
+
+ // Lookup the console
+ CTabItem console = findConsoleForTerminalConnector(id, title, connector, data);
+ // If found, disconnect the console
+ if (console != null && !console.isDisposed()) {
+ ITerminalViewControl terminal = (ITerminalViewControl) console.getData();
+ if (terminal != null && !terminal.isDisposed()) {
+ terminal.disconnectTerminal();
+ }
+ }
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/nls/Messages.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/nls/Messages.java
new file mode 100644
index 00000000000..6f96f5d05da
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/nls/Messages.java
@@ -0,0 +1,166 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2021 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ * Max Weninger (Wind River) - [361363] [TERMINALS] Implement "Pin&Clone" for the "Terminals" view
+ * Dirk Fauth <dirk.fauth@googlemail.com> - Bug 460496
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.nls;
+
+import java.lang.reflect.Field;
+
+import org.eclipse.osgi.util.NLS;
+
+/**
+ * Terminal plug-in externalized strings management.
+ */
+public class Messages extends NLS {
+
+ // The plug-in resource bundle name
+ private static final String BUNDLE_NAME = "org.eclipse.tm.terminal.view.ui.nls.Messages"; //$NON-NLS-1$
+
+ /**
+ * Static constructor.
+ */
+ static {
+ // Load message values from bundle file
+ NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+ }
+
+ /**
+ * Returns the corresponding string for the given externalized strings
+ * key or <code>null</code> if the key does not exist.
+ *
+ * @param key The externalized strings key or <code>null</code>.
+ * @return The corresponding string or <code>null</code>.
+ */
+ public static String getString(String key) {
+ if (key != null) {
+ try {
+ Field field = Messages.class.getDeclaredField(key);
+ return (String) field.get(null);
+ } catch (Exception e) {
+ /* ignored on purpose */ }
+ }
+
+ return null;
+ }
+
+ // **** Declare externalized string id's down here *****
+
+ public static String Extension_error_missingRequiredAttribute;
+ public static String Extension_error_duplicateExtension;
+ public static String Extension_error_invalidExtensionPoint;
+
+ public static String AbstractTriggerCommandHandler_error_executionFailed;
+
+ public static String AbstractAction_error_commandExecutionFailed;
+
+ public static String AbstractConfigurationPanel_delete;
+ public static String AbstractConfigurationPanel_deleteButtonTooltip;
+ public static String AbstractConfigurationPanel_hosts;
+ public static String AbstractConfigurationPanel_encoding;
+ public static String AbstractConfigurationPanel_encoding_custom;
+ public static String AbstractConfigurationPanel_encoding_custom_title;
+ public static String AbstractConfigurationPanel_encoding_custom_message;
+ public static String AbstractConfigurationPanel_encoding_custom_error;
+
+ public static String TabTerminalListener_consoleClosed;
+ public static String TabTerminalListener_consoleConnecting;
+
+ public static String NewTerminalViewAction_menu;
+ public static String NewTerminalViewAction_tooltip;
+
+ public static String ToggleCommandFieldAction_menu;
+ public static String ToggleCommandFieldAction_toolTip;
+
+ public static String SelectEncodingAction_menu;
+ public static String SelectEncodingAction_tooltip;
+
+ public static String InvertColorsAction_menu;
+ public static String InvertColorsAction_tooltip;
+
+ public static String ProcessSettingsPage_dialogTitle;
+ public static String ProcessSettingsPage_processImagePathSelectorControl_label;
+ public static String ProcessSettingsPage_processImagePathSelectorControl_button;
+ public static String ProcessSettingsPage_processArgumentsControl_label;
+ public static String ProcessSettingsPage_processWorkingDirControl_label;
+ public static String ProcessSettingsPage_localEchoSelectorControl_label;
+
+ public static String OutputStreamMonitor_error_readingFromStream;
+
+ public static String InputStreamMonitor_error_writingToStream;
+
+ public static String TerminalService_error_cannotCreateConnector;
+ public static String TerminalService_defaultTitle;
+
+ public static String LaunchTerminalSettingsDialog_title;
+ public static String LaunchTerminalSettingsDialog_combo_label;
+ public static String LaunchTerminalSettingsDialog_group_label;
+
+ public static String TabScrollLockAction_text;
+ public static String TabScrollLockAction_tooltip;
+
+ public static String LaunchTerminalSettingsDialog_error_title;
+ public static String LaunchTerminalSettingsDialog_error_invalidSettings;
+ public static String LaunchTerminalSettingsDialog_error_no_terminal_connectors;
+ public static String LaunchTerminalSettingsDialog_error_unknownReason;
+
+ public static String EncodingSelectionDialog_title;
+
+ public static String TabFolderManager_encoding;
+ public static String TabFolderManager_state_connected;
+ public static String TabFolderManager_state_connecting;
+ public static String TabFolderManager_state_closed;
+
+ public static String NoteCompositeHelper_note_label;
+
+ // showin messages
+
+ public static String ProcessConnector_error_creatingProcess;
+
+ public static String PreferencePage_label;
+ public static String PreferencePage_executables_label;
+ public static String PreferencePage_executables_column_name_label;
+ public static String PreferencePage_executables_column_path_label;
+ public static String PreferencePage_executables_button_add_label;
+ public static String PreferencePage_executables_button_edit_label;
+ public static String PreferencePage_executables_button_remove_label;
+ public static String PreferencePage_workingDir_label;
+ public static String PreferencePage_workingDir_userhome_label;
+ public static String PreferencePage_workingDir_eclipsehome_label;
+ public static String PreferencePage_workingDir_eclipsews_label;
+ public static String PreferencePage_workingDir_button_browse;
+ public static String PreferencePage_workingDir_note_label;
+ public static String PreferencePage_workingDir_note_text;
+ public static String PreferencePage_workingDir_button_variables;
+ public static String PreferencePage_workingDir_invalid;
+ public static String PreferencePage_command_label;
+ public static String PreferencePage_command_button_browse;
+ public static String PreferencePage_command_invalid;
+ public static String PreferencePage_command_note_label;
+ public static String PreferencePage_command_note_text;
+ public static String PreferencePage_command_arguments_label;
+
+ public static String ExternalExecutablesDialog_title_add;
+ public static String ExternalExecutablesDialog_title_edit;
+ public static String ExternalExecutablesDialog_button_add;
+ public static String ExternalExecutablesDialog_button_browse;
+ public static String ExternalExecutablesDialog_field_path;
+ public static String ExternalExecutablesDialog_field_name;
+ public static String ExternalExecutablesDialog_field_args;
+ public static String ExternalExecutablesDialog_field_icon;
+ public static String ExternalExecutablesDialog_field_translate;
+
+ public static String RenameTerminalAction_inputdialog_defaulttext;
+ public static String RenameTerminalAction_inputdialog_prompt;
+ public static String RenameTerminalAction_inputdialog_title;
+ public static String RenameTerminalAction_tooltip;
+ public static String RenameTerminalAction_menu;
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/nls/Messages.properties b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/nls/Messages.properties
new file mode 100644
index 00000000000..f3fc1d0e9fa
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/nls/Messages.properties
@@ -0,0 +1,125 @@
+###############################################################################
+# Copyright (c) 2012, 2021 Wind River Systems, Inc. and others. All rights reserved.
+# This program and the accompanying materials are made available under the terms
+# of the Eclipse Public License 2.0 which accompanies this distribution, and is
+# available at https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Wind River Systems - initial API and implementation
+###############################################################################
+
+Extension_error_missingRequiredAttribute=Required attribute "{0}" missing for extension "{1}"!
+Extension_error_duplicateExtension=Duplicate extension with id ''{0}''. Ignoring duplicated contribution from contributor ''{1}''!
+Extension_error_invalidExtensionPoint=Failed to instantiate the executable extension from extension point ''{0}''.
+
+AbstractTriggerCommandHandler_error_executionFailed=Failed to execute command {0}.
+
+AbstractAction_error_commandExecutionFailed="Failed to execute command (id = {0}). Possibly caused by: {1}
+
+AbstractConfigurationPanel_delete=Delete
+AbstractConfigurationPanel_deleteButtonTooltip=Delete terminal settings for host
+AbstractConfigurationPanel_hosts=Hosts:
+AbstractConfigurationPanel_encoding=Encoding:
+AbstractConfigurationPanel_encoding_custom=Other...
+AbstractConfigurationPanel_encoding_custom_title=Other...
+AbstractConfigurationPanel_encoding_custom_message=Please enter the name of the encoding to use for the terminal.
+AbstractConfigurationPanel_encoding_custom_error=Unsupported encoding. Please enter the name of a supported encoding.
+
+TabTerminalListener_consoleClosed=<{1}> {0}
+TabTerminalListener_consoleConnecting={0} : {1}...
+
+NewTerminalViewAction_menu=New Terminal View
+NewTerminalViewAction_tooltip=Open a new Terminal View
+
+ToggleCommandFieldAction_menu=Toggle Command Input Field
+ToggleCommandFieldAction_toolTip=Toggle Command Input Field
+
+SelectEncodingAction_menu=Switch Encoding...
+SelectEncodingAction_tooltip=Switch the Encoding of the active Terminal
+
+InvertColorsAction_menu=Inverted colors
+InvertColorsAction_tooltip=Invert the colors of the active Terminal
+
+RenameTerminalAction_inputdialog_defaulttext=
+RenameTerminalAction_inputdialog_prompt=Please enter a new name for the terminal
+RenameTerminalAction_inputdialog_title=New name for terminal
+RenameTerminalAction_menu=Rename Terminal
+RenameTerminalAction_tooltip=Update the display name of this terminal
+
+ProcessSettingsPage_dialogTitle=Select Process Image
+ProcessSettingsPage_processImagePathSelectorControl_label=Image Path:
+ProcessSettingsPage_processImagePathSelectorControl_button=Browse
+ProcessSettingsPage_processArgumentsControl_label=Arguments:
+ProcessSettingsPage_processWorkingDirControl_label=Working Dir:
+ProcessSettingsPage_localEchoSelectorControl_label=Local Echo
+
+OutputStreamMonitor_error_readingFromStream=Exception when reading from stream. Possibly caused by: {0}
+
+InputStreamMonitor_error_writingToStream=Exception when writing to stream. Possibly caused by: {0}
+
+TerminalService_error_cannotCreateConnector=Cannot create a valid terminal connector instance from the provided terminal properties.
+TerminalService_defaultTitle=Console
+
+LaunchTerminalSettingsDialog_title=Launch Terminal
+LaunchTerminalSettingsDialog_combo_label=Choose terminal:
+LaunchTerminalSettingsDialog_group_label=Settings
+
+TabScrollLockAction_text=Scroll &Lock
+TabScrollLockAction_tooltip=Scroll Lock
+
+LaunchTerminalSettingsDialog_error_title=Terminal Settings
+LaunchTerminalSettingsDialog_error_invalidSettings=The specified settings are invalid\n\n\
+{0}\n\n\
+Please review and specify valid settings. Or cancel the settings dialog to abort.
+LaunchTerminalSettingsDialog_error_no_terminal_connectors=There are no types of terminals installed. Please install a terminal connector
+LaunchTerminalSettingsDialog_error_unknownReason=Cannot determine specifically which setting is invalid.
+
+EncodingSelectionDialog_title=Encoding
+
+TabFolderManager_encoding=Encoding: {0}
+TabFolderManager_state_connected=Connected
+TabFolderManager_state_connecting=Connecting
+TabFolderManager_state_closed=Closed
+
+NoteCompositeHelper_note_label=Note:
+
+# ----- showin
+
+ProcessConnector_error_creatingProcess=Exception when creating process. Possibly caused by: {0}
+
+ExternalExecutablesDialog_title_add=Add External Executable
+ExternalExecutablesDialog_title_edit=Edit External Executable
+ExternalExecutablesDialog_button_add=Add
+ExternalExecutablesDialog_button_browse=Browse...
+ExternalExecutablesDialog_field_path=Path:
+ExternalExecutablesDialog_field_name=Name:
+ExternalExecutablesDialog_field_args=Arguments:
+ExternalExecutablesDialog_field_icon=Icon:
+ExternalExecutablesDialog_field_translate=Translate Backslashes on Paste
+
+# ----- Preference Pages -----
+
+PreferencePage_label=Local Terminal Settings:
+PreferencePage_executables_label="Show In ..." Custom Entries
+PreferencePage_executables_column_name_label=Name
+PreferencePage_executables_column_path_label=Path
+PreferencePage_executables_button_add_label=Add...
+PreferencePage_executables_button_edit_label=Edit...
+PreferencePage_executables_button_remove_label=Remove
+PreferencePage_workingDir_label=Initial Working Directory
+PreferencePage_workingDir_userhome_label=User home
+PreferencePage_workingDir_eclipsehome_label=Eclipse home
+PreferencePage_workingDir_eclipsews_label=Eclipse workspace
+PreferencePage_workingDir_button_browse=&Browse...
+PreferencePage_workingDir_note_label=Note:
+PreferencePage_workingDir_note_text=The chosen initial working directory might be overwritten by the current selection of the active view.
+PreferencePage_workingDir_button_variables=&Variables...
+PreferencePage_workingDir_invalid=Selected initial working directory is not a directory or is not readable.
+PreferencePage_command_label=Shell Command
+PreferencePage_command_button_browse=&Browse...
+PreferencePage_command_invalid=Selected shell command is not a file or is not readable or executable.
+PreferencePage_command_note_label=Note:
+PreferencePage_command_note_text=Leave the shell command empty to fallback to the SHELL environment variable or if not set, to /bin/sh.
+PreferencePage_command_arguments_label=Arguments:
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/panels/AbstractConfigurationPanel.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/panels/AbstractConfigurationPanel.java
new file mode 100644
index 00000000000..0e619ff1c38
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/panels/AbstractConfigurationPanel.java
@@ -0,0 +1,159 @@
+/*******************************************************************************
+ * Copyright (c) 2015, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.panels;
+
+import java.util.Map;
+
+import org.eclipse.jface.dialogs.IDialogSettings;
+import org.eclipse.jface.dialogs.IMessageProvider;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanel;
+import org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanelContainer;
+
+/**
+ * Abstract terminal launcher configuration panel implementation.
+ */
+public abstract class AbstractConfigurationPanel implements IConfigurationPanel {
+ private final IConfigurationPanelContainer container;
+
+ private Composite topControl = null;
+
+ // The selection
+ private ISelection selection;
+
+ private String message = null;
+ private int messageType = IMessageProvider.NONE;
+
+ private boolean enabled = true;
+
+ /**
+ * Constructor.
+ *
+ * @param container The configuration panel container or <code>null</code>.
+ */
+ public AbstractConfigurationPanel(IConfigurationPanelContainer container) {
+ super();
+ this.container = container;
+ }
+
+ @Override
+ public IConfigurationPanelContainer getContainer() {
+ return container;
+ }
+
+ @Override
+ public final String getMessage() {
+ return message;
+ }
+
+ @Override
+ public final int getMessageType() {
+ return messageType;
+ }
+
+ /**
+ * Set the message and the message type to display.
+ *
+ * @param message The message or <code>null</code>.
+ * @param messageType The message type or <code>IMessageProvider.NONE</code>.
+ */
+ protected final void setMessage(String message, int messageType) {
+ this.message = message;
+ this.messageType = messageType;
+ }
+
+ @Override
+ public void dispose() {
+ }
+
+ /**
+ * Sets the top control.
+ *
+ * @param topControl The top control or <code>null</code>.
+ */
+ protected void setControl(Composite topControl) {
+ this.topControl = topControl;
+ }
+
+ @Override
+ public Composite getControl() {
+ return topControl;
+ }
+
+ @Override
+ public void setSelection(ISelection selection) {
+ this.selection = selection;
+ }
+
+ @Override
+ public ISelection getSelection() {
+ return selection;
+ }
+
+ @Override
+ public void doRestoreWidgetValues(IDialogSettings settings, String idPrefix) {
+ }
+
+ @Override
+ public void doSaveWidgetValues(IDialogSettings settings, String idPrefix) {
+ }
+
+ /**
+ * Returns the correctly prefixed dialog settings slot id. In case the given id
+ * suffix is <code>null</code> or empty, <code>id</code> is returned as is.
+ *
+ * @param settingsSlotId The dialog settings slot id to prefix.
+ * @param prefix The prefix.
+ * @return The correctly prefixed dialog settings slot id.
+ */
+ public final String prefixDialogSettingsSlotId(String settingsSlotId, String prefix) {
+ if (settingsSlotId != null && prefix != null && prefix.trim().length() > 0) {
+ settingsSlotId = prefix + "." + settingsSlotId; //$NON-NLS-1$
+ }
+ return settingsSlotId;
+ }
+
+ @Override
+ public void setEnabled(boolean enabled) {
+ this.enabled = enabled;
+ }
+
+ /**
+ * @return Returns the enabled state.
+ */
+ public boolean isEnabled() {
+ return enabled;
+ }
+
+ @Override
+ public boolean isValid() {
+ setMessage(null, NONE);
+ return true;
+ }
+
+ @Override
+ public void activate() {
+ }
+
+ @Override
+ public void extractData(Map<String, Object> data) {
+ }
+
+ @Override
+ public void setupData(Map<String, Object> data) {
+ }
+
+ @Override
+ public void updateData(Map<String, Object> data) {
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/panels/AbstractExtendedConfigurationPanel.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/panels/AbstractExtendedConfigurationPanel.java
new file mode 100644
index 00000000000..f372a47314f
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/panels/AbstractExtendedConfigurationPanel.java
@@ -0,0 +1,645 @@
+/*******************************************************************************
+ * Copyright (c) 2014, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.panels;
+
+import java.nio.charset.Charset;
+import java.nio.charset.IllegalCharsetNameException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.jface.dialogs.IDialogSettings;
+import org.eclipse.jface.dialogs.InputDialog;
+import org.eclipse.jface.fieldassist.ControlDecoration;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.window.Window;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.tm.terminal.view.core.TerminalContextPropertiesProviderFactory;
+import org.eclipse.tm.terminal.view.core.interfaces.ITerminalContextPropertiesProvider;
+import org.eclipse.tm.terminal.view.core.interfaces.constants.IContextPropertiesConstants;
+import org.eclipse.tm.terminal.view.core.interfaces.constants.ITerminalsConnectorConstants;
+import org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanelContainer;
+import org.eclipse.tm.terminal.view.ui.nls.Messages;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.WorkbenchEncoding;
+import org.osgi.framework.Bundle;
+
+/**
+ * Abstract terminal configuration panel implementation.
+ */
+public abstract class AbstractExtendedConfigurationPanel extends AbstractConfigurationPanel {
+ private static final String LAST_HOST_TAG = "lastHost";//$NON-NLS-1$
+ private static final String HOSTS_TAG = "hosts";//$NON-NLS-1$
+ private static final String ENCODINGS_TAG = "encodings"; //$NON-NLS-1$
+
+ // The sub-controls
+ /* default */ Combo hostCombo;
+ private Button deleteHostButton;
+ /* default */ Combo encodingCombo;
+
+ // The last selected encoding
+ /* default */ String lastSelectedEncoding;
+ // The last entered custom encodings
+ /* default */ final List<String> encodingHistory = new ArrayList<>();
+
+ // A map containing the settings per host
+ protected final Map<String, Map<String, String>> hostSettingsMap = new HashMap<>();
+
+ /**
+ * Constructor.
+ *
+ * @param container The configuration panel container or <code>null</code>.
+ */
+ public AbstractExtendedConfigurationPanel(IConfigurationPanelContainer container) {
+ super(container);
+ }
+
+ /**
+ * Returns the host name or IP from the current selection.
+ *
+ * @return The host name or IP, or <code>null</code>.
+ */
+ public String getSelectionHost() {
+ ISelection selection = getSelection();
+ if (selection instanceof IStructuredSelection && !selection.isEmpty()) {
+ Object element = ((IStructuredSelection) selection).getFirstElement();
+ ITerminalContextPropertiesProvider provider = TerminalContextPropertiesProviderFactory.getProvider(element);
+ if (provider != null) {
+ Map<String, String> props = provider.getTargetAddress(element);
+ if (props != null && props.containsKey(IContextPropertiesConstants.PROP_ADDRESS)) {
+ return props.get(IContextPropertiesConstants.PROP_ADDRESS);
+ }
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * Returns the default encoding based on the current selection.
+ *
+ * @return The default encoding or <code>null</code>.
+ */
+ public String getSelectionEncoding() {
+ ISelection selection = getSelection();
+ if (selection instanceof IStructuredSelection && !selection.isEmpty()) {
+ Object element = ((IStructuredSelection) selection).getFirstElement();
+ ITerminalContextPropertiesProvider provider = TerminalContextPropertiesProviderFactory.getProvider(element);
+ if (provider != null) {
+ Object encoding = provider.getProperty(element, IContextPropertiesConstants.PROP_DEFAULT_ENCODING);
+ if (encoding instanceof String)
+ return ((String) encoding).trim();
+ }
+ }
+
+ return null;
+ }
+
+ @Override
+ public void doRestoreWidgetValues(IDialogSettings settings, String idPrefix) {
+ Assert.isNotNull(settings);
+
+ String[] hosts = settings.getArray(HOSTS_TAG);
+ if (hosts != null) {
+ for (String hostEntry : hosts) {
+ String[] hostString = hostEntry.split("\\|");//$NON-NLS-1$
+ String hostName = hostString[0];
+ if (hostString.length == 2) {
+ HashMap<String, String> attr = deSerialize(hostString[1]);
+ hostSettingsMap.put(hostName, attr);
+ } else {
+ hostSettingsMap.put(hostName, new HashMap<String, String>());
+ }
+ }
+ }
+
+ if (!isWithoutSelection()) {
+ String host = getSelectionHost();
+ if (host != null) {
+ fillSettingsForHost(host);
+ }
+ } else {
+ if (hostCombo != null) {
+ fillHostCombo();
+ String lastHost = settings.get(LAST_HOST_TAG);
+ if (lastHost != null) {
+ int index = hostCombo.indexOf(lastHost);
+ if (index != -1) {
+ hostCombo.select(index);
+ } else {
+ hostCombo.select(0);
+ }
+ } else {
+ hostCombo.select(0);
+ }
+ fillSettingsForHost(hostCombo.getText());
+ }
+ }
+
+ encodingHistory.clear();
+ String[] encodings = settings.getArray(ENCODINGS_TAG);
+ if (encodings != null && encodings.length > 0) {
+ encodingHistory.addAll(Arrays.asList(encodings));
+ for (String encoding : encodingHistory) {
+ encodingCombo.add(encoding, encodingCombo.getItemCount() - 1);
+ }
+ }
+ }
+
+ /**
+ * Restore the encodings widget values.
+ *
+ * @param settings The dialog settings. Must not be <code>null</code>.
+ * @param idPrefix The prefix or <code>null</code>.
+ */
+ protected void doRestoreEncodingsWidgetValues(IDialogSettings settings, String idPrefix) {
+ Assert.isNotNull(settings);
+
+ String encoding = settings
+ .get(prefixDialogSettingsSlotId(ITerminalsConnectorConstants.PROP_ENCODING, idPrefix));
+ if (encoding != null && encoding.trim().length() > 0) {
+ setEncoding(encoding);
+ }
+ }
+
+ /**
+ * Decode the host settings from the given string.
+ *
+ * @param hostString The encoded host settings. Must not be <code>null</code>.
+ * @return The decoded host settings.
+ */
+ private HashMap<String, String> deSerialize(String hostString) {
+ Assert.isNotNull(hostString);
+ HashMap<String, String> attr = new HashMap<>();
+
+ if (hostString.length() != 0) {
+ String[] hostAttrs = hostString.split("\\:");//$NON-NLS-1$
+ for (int j = 0; j < hostAttrs.length - 1; j = j + 2) {
+ String key = hostAttrs[j];
+ String value = hostAttrs[j + 1];
+ attr.put(key, value);
+ }
+ }
+ return attr;
+ }
+
+ /**
+ * Encode the host settings to a string.
+ *
+ * @param hostEntry The host settings. Must not be <code>null</code>.
+ * @param hostString The host string to encode to. Must not be <code>null</code>.
+ */
+ private void serialize(Map<String, String> hostEntry, StringBuilder hostString) {
+ Assert.isNotNull(hostEntry);
+ Assert.isNotNull(hostString);
+
+ if (hostEntry.keySet().size() != 0) {
+ Iterator<Entry<String, String>> nextHostAttr = hostEntry.entrySet().iterator();
+ while (nextHostAttr.hasNext()) {
+ Entry<String, String> entry = nextHostAttr.next();
+ String attrKey = entry.getKey();
+ String attrValue = entry.getValue();
+ hostString.append(attrKey + ":" + attrValue + ":");//$NON-NLS-1$ //$NON-NLS-2$
+ }
+ hostString.deleteCharAt(hostString.length() - 1);
+ }
+ }
+
+ @Override
+ public void doSaveWidgetValues(IDialogSettings settings, String idPrefix) {
+ Iterator<String> nextHost = hostSettingsMap.keySet().iterator();
+ String[] hosts = new String[hostSettingsMap.keySet().size()];
+ int i = 0;
+ while (nextHost.hasNext()) {
+ StringBuilder hostString = new StringBuilder();
+ String host = nextHost.next();
+ hostString.append(host + "|");//$NON-NLS-1$
+ Map<String, String> hostEntry = hostSettingsMap.get(host);
+ serialize(hostEntry, hostString);
+ hosts[i] = hostString.toString();
+ i = i + 1;
+ }
+ settings.put(HOSTS_TAG, hosts);
+ if (isWithoutSelection()) {
+ if (hostCombo != null) {
+ String host = getHostFromSettings();
+ if (host != null)
+ settings.put(LAST_HOST_TAG, host);
+ }
+ }
+
+ if (!encodingHistory.isEmpty()) {
+ settings.put(ENCODINGS_TAG, encodingHistory.toArray(new String[encodingHistory.size()]));
+ }
+ }
+
+ /**
+ * Save the encodings widget values.
+ *
+ * @param settings The dialog settings. Must not be <code>null</code>.
+ * @param idPrefix The prefix or <code>null</code>.
+ */
+ protected void doSaveEncodingsWidgetValues(IDialogSettings settings, String idPrefix) {
+ Assert.isNotNull(settings);
+
+ String encoding = getEncoding();
+ if (encoding != null) {
+ settings.put(prefixDialogSettingsSlotId(ITerminalsConnectorConstants.PROP_ENCODING, idPrefix), encoding);
+ }
+ }
+
+ protected abstract void saveSettingsForHost(boolean add);
+
+ protected abstract void fillSettingsForHost(String host);
+
+ protected abstract String getHostFromSettings();
+
+ protected void removeSecurePassword(String host) {
+ // noop by default
+ }
+
+ /**
+ * Returns the selected host from the hosts combo widget.
+ *
+ * @return The selected host or <code>null</code>.
+ */
+ protected final String getHostFromCombo() {
+ return hostCombo != null && !hostCombo.isDisposed() ? hostCombo.getText() : null;
+ }
+
+ protected void removeSettingsForHost(String host) {
+ if (hostSettingsMap.containsKey(host)) {
+ hostSettingsMap.remove(host);
+ }
+ }
+
+ /**
+ * Returns the list of host names of the persisted hosts.
+ *
+ * @return The list of host names.
+ */
+ private List<String> getHostList() {
+ List<String> hostList = new ArrayList<>();
+ hostList.addAll(hostSettingsMap.keySet());
+ return hostList;
+ }
+
+ /**
+ * Fill the host combo with the stored per host setting names.
+ */
+ protected void fillHostCombo() {
+ if (hostCombo != null) {
+ hostCombo.removeAll();
+ List<String> hostList = getHostList();
+ Collections.sort(hostList);
+ Iterator<String> nextHost = hostList.iterator();
+ while (nextHost.hasNext()) {
+ String host = nextHost.next();
+ hostCombo.add(host);
+ }
+ if (hostList.size() <= 1) {
+ hostCombo.setEnabled(false);
+ } else {
+ hostCombo.setEnabled(true);
+
+ }
+ if (deleteHostButton != null) {
+ if (hostList.size() == 0) {
+ deleteHostButton.setEnabled(false);
+ } else {
+ deleteHostButton.setEnabled(true);
+ }
+ }
+ }
+ }
+
+ public boolean isWithoutSelection() {
+ ISelection selection = getSelection();
+ if (selection == null) {
+ return true;
+ }
+ if (selection instanceof IStructuredSelection && selection.isEmpty()) {
+ return true;
+ }
+ return false;
+ }
+
+ public boolean isWithHostList() {
+ return true;
+ }
+
+ /**
+ * Create the host selection combo.
+ *
+ * @param parent The parent composite. Must not be <code>null</code>.
+ * @param separator If <code>true</code>, a separator will be added after the controls.
+ */
+ protected void createHostsUI(Composite parent, boolean separator) {
+ Assert.isNotNull(parent);
+
+ if (isWithoutSelection() && isWithHostList()) {
+ Composite comboComposite = new Composite(parent, SWT.NONE);
+ GridLayout layout = new GridLayout(3, false);
+ layout.marginHeight = 0;
+ layout.marginWidth = 0;
+ comboComposite.setLayout(layout);
+ comboComposite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
+
+ Label label = new Label(comboComposite, SWT.HORIZONTAL);
+ label.setText(Messages.AbstractConfigurationPanel_hosts);
+
+ hostCombo = new Combo(comboComposite, SWT.READ_ONLY);
+ hostCombo.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
+ hostCombo.addSelectionListener(new SelectionListener() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ String host = hostCombo.getText();
+ fillSettingsForHost(host);
+ }
+
+ @Override
+ public void widgetDefaultSelected(SelectionEvent e) {
+ widgetSelected(e);
+ }
+ });
+
+ deleteHostButton = new Button(comboComposite, SWT.NONE);
+ // deleteHostButton.setText(Messages.AbstractConfigurationPanel_delete);
+
+ ISharedImages workbenchImages = PlatformUI.getWorkbench().getSharedImages();
+ deleteHostButton.setImage(workbenchImages.getImageDescriptor(ISharedImages.IMG_TOOL_DELETE).createImage());
+
+ deleteHostButton.setToolTipText(Messages.AbstractConfigurationPanel_deleteButtonTooltip);
+ deleteHostButton.addSelectionListener(new SelectionListener() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ String host = getHostFromCombo();
+ if (host != null && host.length() != 0) {
+ removeSettingsForHost(host);
+ removeSecurePassword(host);
+ fillHostCombo();
+ hostCombo.select(0);
+ host = getHostFromCombo();
+ if (host != null && host.length() != 0) {
+ fillSettingsForHost(host);
+ }
+ }
+ }
+
+ @Override
+ public void widgetDefaultSelected(SelectionEvent e) {
+ widgetSelected(e);
+ }
+ });
+
+ if (separator) {
+ Label sep = new Label(parent, SWT.SEPARATOR | SWT.HORIZONTAL);
+ sep.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
+ }
+ }
+ }
+
+ /**
+ * Create the encoding selection combo.
+ *
+ * @param parent The parent composite. Must not be <code>null</code>.
+ * @param separator If <code>true</code>, a separator will be added before the controls.
+ */
+ protected void createEncodingUI(final Composite parent, boolean separator) {
+ Assert.isNotNull(parent);
+
+ if (separator) {
+ Label sep = new Label(parent, SWT.SEPARATOR | SWT.HORIZONTAL);
+ sep.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
+ }
+
+ Composite panel = new Composite(parent, SWT.NONE);
+ GridLayout layout = new GridLayout(2, false);
+ layout.marginHeight = 0;
+ layout.marginWidth = 0;
+ panel.setLayout(layout);
+ panel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
+
+ Label label = new Label(panel, SWT.HORIZONTAL);
+ label.setText(Messages.AbstractConfigurationPanel_encoding);
+
+ encodingCombo = new Combo(panel, SWT.READ_ONLY);
+ ControlDecoration encodingComboDecorator = new ControlDecoration(encodingCombo, SWT.TOP | SWT.LEFT);
+ encodingCombo.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
+ encodingCombo.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ if (Messages.AbstractConfigurationPanel_encoding_custom.equals(encodingCombo.getText())) {
+ InputDialog dialog = new InputDialog(parent.getShell(),
+ Messages.AbstractConfigurationPanel_encoding_custom_title,
+ Messages.AbstractConfigurationPanel_encoding_custom_message, null, newText -> {
+ boolean valid = false;
+ try {
+ if (newText != null && !"".equals(newText)) { //$NON-NLS-1$
+ valid = Charset.isSupported(newText);
+ }
+ } catch (IllegalCharsetNameException e1) {
+ /* ignored on purpose */ }
+
+ if (!valid) {
+ return newText != null && !"".equals(newText) //$NON-NLS-1$
+ ? Messages.AbstractConfigurationPanel_encoding_custom_error
+ : ""; //$NON-NLS-1$
+ }
+ return null;
+ });
+ if (dialog.open() == Window.OK) {
+ String encoding = dialog.getValue();
+ encodingCombo.add(encoding, encodingCombo.getItemCount() - 1);
+ encodingCombo.select(encodingCombo.indexOf(encoding));
+ lastSelectedEncoding = encodingCombo.getText();
+
+ // Remember the last 5 custom encodings entered
+ if (!encodingHistory.contains(encoding)) {
+ if (encodingHistory.size() == 5)
+ encodingHistory.remove(4);
+ encodingHistory.add(encoding);
+ }
+
+ } else {
+ encodingCombo.select(encodingCombo.indexOf(lastSelectedEncoding));
+ }
+ }
+
+ decorateEncoding(encodingComboDecorator, encodingCombo.getText());
+ }
+ });
+
+ fillEncodingCombo();
+
+ // Apply any default encoding derived from the current selection
+ String defaultEncoding = getSelectionEncoding();
+ if (defaultEncoding != null && !"".equals(defaultEncoding)) { //$NON-NLS-1$
+ setEncoding(defaultEncoding);
+ }
+ }
+
+ /**
+ * Allow the encoding combo box to be decorated with a warning or similar in case user selects
+ * inappropriate encoding.
+ *
+ * @param encodingComboDecorator control decoration on the encoding combo box
+ * @param encoding the encoding the user has selected
+ * @since 4.10
+ */
+ protected void decorateEncoding(ControlDecoration encodingComboDecorator, String encoding) {
+ // by default don't warn users
+ encodingComboDecorator.hide();
+ encodingComboDecorator.hideHover();
+ }
+
+ /**
+ * Fill the encoding combo.
+ */
+ protected void fillEncodingCombo() {
+ if (encodingCombo != null) {
+ List<String> encodings = new ArrayList<>();
+
+ // Default encoding
+ encodings.add("Default (ISO-8859-1)"); //$NON-NLS-1$
+
+ // The currently selected IDE encoding from the preferences
+ String ideEncoding = getResourceEncoding();
+
+ // The default Eclipse Workbench encoding (configured in the preferences)
+ String eclipseEncoding = WorkbenchEncoding.getWorkbenchDefaultEncoding();
+
+ // The default host (Java VM) encoding
+ String hostEncoding = Charset.defaultCharset().name();
+
+ addEncodings(encodings, "UTF-8", ideEncoding, eclipseEncoding, hostEncoding); //$NON-NLS-1$
+
+ // The "Other..." encoding
+ encodings.add(Messages.AbstractConfigurationPanel_encoding_custom);
+
+ encodingCombo.setItems(encodings.toArray(new String[encodings.size()]));
+ encodingCombo.select(0);
+
+ lastSelectedEncoding = encodingCombo.getText();
+ }
+ }
+
+ /**
+ * Add given encoding names to the list. Duplicates are filtered out by comparing aliases.
+ */
+ private void addEncodings(List<String> encodings, String... toadd) {
+ Set<String> aliases = new HashSet<>();
+ for (String name : toadd) {
+ if (name == null)
+ continue;
+ try {
+ Charset cs = Charset.forName(name);
+ if (aliases.containsAll(cs.aliases()))
+ continue;
+ if (aliases.contains(name.toLowerCase()))
+ continue;
+ aliases.addAll(cs.aliases());
+ aliases.add(name.toLowerCase());
+ encodings.add(name);
+ } catch (Exception e) {
+ // skip
+ }
+ }
+ }
+
+ /**
+ * Get the current value of the encoding preference. If the value is not set
+ * return <code>null</code>.
+ * <p>
+ * <b>Note:</b> Copied from <code>org.eclipse.ui.ide.IDEEncoding</code>.
+ *
+ * @return String
+ */
+ @SuppressWarnings("deprecation")
+ private String getResourceEncoding() {
+ String preference = null;
+ Bundle bundle = Platform.getBundle("org.eclipse.core.resources"); //$NON-NLS-1$
+ if (bundle != null && bundle.getState() != Bundle.UNINSTALLED && bundle.getState() != Bundle.STOPPING) {
+ preference = org.eclipse.core.resources.ResourcesPlugin.getPlugin().getPluginPreferences()
+ .getString(org.eclipse.core.resources.ResourcesPlugin.PREF_ENCODING);
+ }
+
+ return preference != null && preference.length() > 0 ? preference : null;
+ }
+
+ /**
+ * Select the encoding.
+ *
+ * @param encoding The encoding. Must not be <code>null</code>.
+ */
+ protected void setEncoding(String encoding) {
+ Assert.isNotNull(encoding);
+
+ if (encodingCombo != null && !encodingCombo.isDisposed()) {
+ int index = encodingCombo.indexOf("ISO-8859-1".equals(encoding) ? "Default (ISO-8859-1)" : encoding); //$NON-NLS-1$ //$NON-NLS-2$
+ if (index != -1)
+ encodingCombo.select(index);
+ else {
+ encodingCombo.add(encoding, encodingCombo.getItemCount() - 1);
+ encodingCombo.select(encodingCombo.indexOf(encoding));
+ }
+
+ lastSelectedEncoding = encodingCombo.getText();
+ }
+ }
+
+ /**
+ * Returns the selected encoding.
+ *
+ * @return The selected encoding or <code>null</code>.
+ */
+ protected String getEncoding() {
+ String encoding = encodingCombo != null && !encodingCombo.isDisposed() ? encodingCombo.getText() : null;
+ return encoding != null && encoding.startsWith("Default") ? null : encoding; //$NON-NLS-1$
+ }
+
+ /**
+ * Returns if or if not the selected encoding is supported.
+ *
+ * @return <code>True</code> if the selected encoding is supported.
+ */
+ protected boolean isEncodingValid() {
+ try {
+ String encoding = getEncoding();
+ return Charset.isSupported(encoding != null ? encoding : "ISO-8859-1"); //$NON-NLS-1$
+ } catch (IllegalCharsetNameException e) {
+ return false;
+ }
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/preferences/PreferencePage.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/preferences/PreferencePage.java
new file mode 100644
index 00000000000..ff85cec8e72
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/preferences/PreferencePage.java
@@ -0,0 +1,683 @@
+/*******************************************************************************
+ * Copyright (c) 2014, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.preferences;
+
+import java.io.File;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.URIUtil;
+import org.eclipse.core.variables.IStringVariableManager;
+import org.eclipse.core.variables.VariablesPlugin;
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.resource.JFaceResources;
+import org.eclipse.jface.viewers.ColumnViewerToolTipSupport;
+import org.eclipse.jface.viewers.ColumnWeightData;
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.TableLayout;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.window.Window;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.ImageData;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.DirectoryDialog;
+import org.eclipse.swt.widgets.FileDialog;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.tm.terminal.view.ui.activator.UIPlugin;
+import org.eclipse.tm.terminal.view.ui.controls.NoteCompositeHelper;
+import org.eclipse.tm.terminal.view.ui.interfaces.IExternalExecutablesProperties;
+import org.eclipse.tm.terminal.view.ui.interfaces.IPreferenceKeys;
+import org.eclipse.tm.terminal.view.ui.local.showin.ExternalExecutablesDialog;
+import org.eclipse.tm.terminal.view.ui.local.showin.ExternalExecutablesManager;
+import org.eclipse.tm.terminal.view.ui.local.showin.ExternalExecutablesUtils;
+import org.eclipse.tm.terminal.view.ui.nls.Messages;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPreferencePage;
+import org.osgi.framework.Bundle;
+
+/**
+ * Terminal top preference page implementation.
+ */
+public class PreferencePage extends org.eclipse.jface.preference.PreferencePage implements IWorkbenchPreferencePage {
+ /* default */ TableViewer viewer;
+ private Button addButton;
+ private Button editButton;
+ private Button removeButton;
+ /* default */ Combo workingDir;
+ private Button browseButton;
+
+ private Button variablesButton;
+ private boolean hasVariablesButton = false;
+
+ /* default */ Text command;
+ private Button commandBrowseButton;
+ private Text arguments;
+
+ /* default */ final List<Map<String, String>> executables = new ArrayList<>();
+ /* default */ final Map<String, Image> images = new HashMap<>();
+
+ /* default */ static final Object[] NO_ELEMENTS = new Object[0];
+
+ @Override
+ public void init(IWorkbench workbench) {
+ Bundle bundle = Platform.getBundle("org.eclipse.debug.ui"); //$NON-NLS-1$
+ if (bundle != null && bundle.getState() != Bundle.UNINSTALLED && bundle.getState() != Bundle.STOPPING) {
+ hasVariablesButton = true;
+ }
+ }
+
+ @Override
+ protected Control createContents(final Composite parent) {
+ final GC gc = new GC(parent);
+ gc.setFont(JFaceResources.getDialogFont());
+
+ Composite panel = new Composite(parent, SWT.NONE);
+ panel.setLayout(new GridLayout());
+ GridData layoutData = new GridData(SWT.FILL, SWT.BEGINNING, true, false);
+ panel.setLayoutData(layoutData);
+
+ Label label = new Label(panel, SWT.HORIZONTAL);
+ label.setText(Messages.PreferencePage_label);
+ label.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
+
+ if (!Platform.OS_WIN32.equals(Platform.getOS())) {
+ Group group = new Group(panel, SWT.NONE);
+ group.setText(Messages.PreferencePage_command_label);
+ group.setLayout(new GridLayout(2, false));
+ group.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false));
+
+ command = new Text(group, SWT.SINGLE | SWT.BORDER);
+ command.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
+ command.addModifyListener(e -> {
+ boolean valid = true;
+ String message = null;
+
+ String text = command.getText();
+ if (text != null && !"".equals(text.trim())) { //$NON-NLS-1$
+ IPath p = new Path(text.trim());
+ valid = p.toFile().isFile() && p.toFile().canRead() && p.toFile().canExecute();
+ if (!valid)
+ message = Messages.PreferencePage_command_invalid;
+ }
+
+ setValid(valid);
+ setErrorMessage(message);
+ });
+
+ commandBrowseButton = new Button(group, SWT.PUSH);
+ commandBrowseButton.setText(Messages.PreferencePage_command_button_browse);
+ layoutData = new GridData(SWT.FILL, SWT.CENTER, false, false);
+ layoutData.widthHint = Dialog.convertWidthInCharsToPixels(gc.getFontMetrics(), 14);
+ commandBrowseButton.setLayoutData(layoutData);
+ commandBrowseButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ FileDialog dialog = new FileDialog(parent.getShell(), SWT.OPEN);
+
+ String text = command.getText();
+ if (text != null && !"".equals(text.trim())) { //$NON-NLS-1$
+ IPath p = new Path(text);
+
+ if (p.toFile().isFile() || !p.toFile().exists()) {
+ dialog.setFilterPath(p.removeLastSegments(1).toOSString());
+ dialog.setFileName(p.lastSegment());
+ } else if (p.toFile().isDirectory()) {
+ dialog.setFilterPath(p.toOSString());
+ }
+ }
+
+ String selected = dialog.open();
+ if (selected != null) {
+ IPath sp = new Path(selected);
+ command.setText(sp.toOSString());
+ }
+ }
+ });
+
+ String cmd = UIPlugin.getScopedPreferences()
+ .getString(IPreferenceKeys.PREF_LOCAL_TERMINAL_DEFAULT_SHELL_UNIX);
+ if (cmd != null && !"".equals(cmd)) { //$NON-NLS-1$
+ command.setText(new Path(cmd).toOSString());
+ }
+
+ Composite argsPanel = new Composite(group, SWT.NONE);
+ GridLayout layout = new GridLayout(2, false);
+ layout.marginHeight = 0;
+ layout.marginWidth = 0;
+ argsPanel.setLayout(layout);
+ layoutData = new GridData(SWT.FILL, SWT.BEGINNING, true, false);
+ layoutData.horizontalSpan = 2;
+ argsPanel.setLayoutData(layoutData);
+
+ label = new Label(argsPanel, SWT.NONE);
+ label.setText(Messages.PreferencePage_command_arguments_label);
+
+ arguments = new Text(argsPanel, SWT.SINGLE | SWT.BORDER);
+ arguments.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
+
+ String args = UIPlugin.getScopedPreferences()
+ .getString(IPreferenceKeys.PREF_LOCAL_TERMINAL_DEFAULT_SHELL_UNIX_ARGS);
+ if (args != null && !"".equals(args)) { //$NON-NLS-1$
+ arguments.setText(args);
+ }
+
+ NoteCompositeHelper.createNoteComposite(group.getFont(), group, Messages.PreferencePage_command_note_label,
+ Messages.PreferencePage_command_note_text);
+ }
+
+ Group group = new Group(panel, SWT.NONE);
+ group.setText(Messages.PreferencePage_workingDir_label);
+ group.setLayout(new GridLayout(hasVariablesButton ? 3 : 2, false));
+ group.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false));
+
+ workingDir = new Combo(group, SWT.DROP_DOWN);
+ Bundle bundle = Platform.getBundle("org.eclipse.core.resources"); //$NON-NLS-1$
+ if (bundle != null && bundle.getState() != Bundle.UNINSTALLED && bundle.getState() != Bundle.STOPPING) {
+ workingDir.setItems(new String[] { Messages.PreferencePage_workingDir_userhome_label,
+ Messages.PreferencePage_workingDir_eclipsehome_label,
+ Messages.PreferencePage_workingDir_eclipsews_label });
+ } else {
+ workingDir.setItems(new String[] { Messages.PreferencePage_workingDir_userhome_label,
+ Messages.PreferencePage_workingDir_eclipsehome_label });
+ }
+ workingDir.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
+ workingDir.select(0);
+ workingDir.addModifyListener(e -> {
+ boolean valid = true;
+ String message = null;
+
+ String text = workingDir.getText();
+ if (text != null && !"".equals(text.trim()) //$NON-NLS-1$
+ && !Messages.PreferencePage_workingDir_userhome_label.equals(text)
+ && !Messages.PreferencePage_workingDir_eclipsehome_label.equals(text)
+ && !Messages.PreferencePage_workingDir_eclipsews_label.equals(text)) {
+ try {
+ // Resolve possible dynamic variables
+ IStringVariableManager vm = VariablesPlugin.getDefault().getStringVariableManager();
+ String resolved = vm.performStringSubstitution(text.trim());
+
+ IPath p = new Path(resolved);
+ valid = p.toFile().canRead() && p.toFile().isDirectory();
+ if (!valid)
+ message = Messages.PreferencePage_workingDir_invalid;
+ } catch (CoreException ex) {
+ valid = false;
+ message = ex.getLocalizedMessage();
+ }
+ }
+
+ setValid(valid);
+ setErrorMessage(message);
+ });
+
+ browseButton = new Button(group, SWT.PUSH);
+ browseButton.setText(Messages.PreferencePage_workingDir_button_browse);
+ layoutData = new GridData(SWT.FILL, SWT.CENTER, false, false);
+ layoutData.widthHint = Dialog.convertWidthInCharsToPixels(gc.getFontMetrics(), 14);
+ browseButton.setLayoutData(layoutData);
+ browseButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ IPath uh = null;
+ IPath eh = null;
+ IPath ew = null;
+
+ // HOME
+ String home = System.getProperty("user.home"); //$NON-NLS-1$
+ if (home != null && !"".equals(home)) //$NON-NLS-1$
+ uh = new Path(home);
+
+ // ECLIPSE_HOME
+ String eclipseHomeLocation = System.getProperty("eclipse.home.location"); //$NON-NLS-1$
+ if (eclipseHomeLocation != null) {
+ try {
+ URI uri = URIUtil.fromString(eclipseHomeLocation);
+ File f = URIUtil.toFile(uri);
+ eh = new Path(f.getAbsolutePath());
+ } catch (URISyntaxException ex) {
+ /* ignored on purpose */ }
+ }
+
+ // ECLIPSE_WORKSPACE
+ Bundle bundle = Platform.getBundle("org.eclipse.core.resources"); //$NON-NLS-1$
+ if (bundle != null && bundle.getState() != Bundle.UNINSTALLED && bundle.getState() != Bundle.STOPPING) {
+ if (org.eclipse.core.resources.ResourcesPlugin.getWorkspace() != null
+ && org.eclipse.core.resources.ResourcesPlugin.getWorkspace().getRoot() != null
+ && org.eclipse.core.resources.ResourcesPlugin.getWorkspace().getRoot()
+ .getLocation() != null) {
+ ew = org.eclipse.core.resources.ResourcesPlugin.getWorkspace().getRoot().getLocation();
+ }
+ }
+
+ DirectoryDialog dialog = new DirectoryDialog(parent.getShell(), SWT.OPEN);
+
+ // Determine the filter path
+ String text = workingDir.getText();
+ if (Messages.PreferencePage_workingDir_userhome_label.equals(text)) {
+ dialog.setFilterPath(uh.toOSString());
+ } else if (Messages.PreferencePage_workingDir_eclipsehome_label.equals(text)) {
+ dialog.setFilterPath(eh.toOSString());
+ } else if (Messages.PreferencePage_workingDir_eclipsews_label.equals(text)) {
+ dialog.setFilterPath(ew.toOSString());
+ } else if (text != null && !"".equals(text.trim())) { //$NON-NLS-1$
+ try {
+ // Resolve possible dynamic variables
+ IStringVariableManager vm = VariablesPlugin.getDefault().getStringVariableManager();
+ String resolved = vm.performStringSubstitution(text.trim());
+ dialog.setFilterPath(resolved);
+ } catch (CoreException ex) {
+ if (Platform.inDebugMode()) {
+ UIPlugin.getDefault().getLog().log(ex.getStatus());
+ }
+ }
+ }
+
+ String selected = dialog.open();
+ if (selected != null) {
+ IPath sp = new Path(selected);
+
+ if (uh.equals(sp)) {
+ workingDir.select(0);
+ } else if (eh.equals(sp)) {
+ workingDir.select(1);
+ } else if (ew.equals(sp)) {
+ workingDir.select(2);
+ } else {
+ workingDir.setText(sp.toOSString());
+ }
+ }
+ }
+ });
+
+ if (hasVariablesButton) {
+ variablesButton = new Button(group, SWT.PUSH);
+ variablesButton.setText(Messages.PreferencePage_workingDir_button_variables);
+ layoutData = new GridData(SWT.FILL, SWT.CENTER, false, false);
+ layoutData.widthHint = Dialog.convertWidthInCharsToPixels(gc.getFontMetrics(), 14);
+ variablesButton.setLayoutData(layoutData);
+ variablesButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ org.eclipse.debug.ui.StringVariableSelectionDialog dialog = new org.eclipse.debug.ui.StringVariableSelectionDialog(
+ getShell());
+ dialog.open();
+ String expression = dialog.getVariableExpression();
+ if (expression != null) {
+ if ("${eclipse_home}".equals(expression)) { //$NON-NLS-1$
+ workingDir.select(1);
+ } else if ("${workspace_loc}".equals(expression)) { //$NON-NLS-1$
+ workingDir.select(2);
+ } else {
+ workingDir.setText(expression);
+ }
+ }
+ }
+ });
+ }
+
+ String initialCwd = UIPlugin.getScopedPreferences().getString(IPreferenceKeys.PREF_LOCAL_TERMINAL_INITIAL_CWD);
+ if (initialCwd == null || IPreferenceKeys.PREF_INITIAL_CWD_USER_HOME.equals(initialCwd)
+ || "".equals(initialCwd.trim())) { //$NON-NLS-1$
+ workingDir.select(0);
+ } else if (IPreferenceKeys.PREF_INITIAL_CWD_ECLIPSE_HOME.equals(initialCwd)
+ || "${eclipse_home}".equals(initialCwd)) { //$NON-NLS-1$
+ workingDir.select(1);
+ } else if (IPreferenceKeys.PREF_INITIAL_CWD_ECLIPSE_WS.equals(initialCwd)
+ || "${workspace_loc}".equals(initialCwd)) { //$NON-NLS-1$
+ workingDir.select(2);
+ } else {
+ workingDir.setText(new Path(initialCwd).toOSString());
+ }
+
+ NoteCompositeHelper.createNoteComposite(group.getFont(), group, Messages.PreferencePage_workingDir_note_label,
+ Messages.PreferencePage_workingDir_note_text);
+
+ group = new Group(panel, SWT.NONE);
+ group.setText(Messages.PreferencePage_executables_label);
+ group.setLayout(new GridLayout(2, false));
+ group.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false));
+
+ viewer = new TableViewer(group, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER | SWT.FULL_SELECTION);
+
+ Table table = viewer.getTable();
+ table.setHeaderVisible(true);
+ table.setLinesVisible(true);
+
+ TableColumn column = new TableColumn(table, SWT.LEFT);
+ column.setText(Messages.PreferencePage_executables_column_name_label);
+ column = new TableColumn(table, SWT.LEFT);
+ column.setText(Messages.PreferencePage_executables_column_path_label);
+
+ ColumnViewerToolTipSupport.enableFor(viewer);
+
+ TableLayout tableLayout = new TableLayout();
+ tableLayout.addColumnData(new ColumnWeightData(35));
+ tableLayout.addColumnData(new ColumnWeightData(65));
+ table.setLayout(tableLayout);
+
+ layoutData = new GridData(SWT.FILL, SWT.FILL, true, true);
+ layoutData.heightHint = Dialog.convertHeightInCharsToPixels(gc.getFontMetrics(), 10);
+ table.setLayoutData(layoutData);
+
+ Composite buttonsPanel = new Composite(group, SWT.NONE);
+ GridLayout layout = new GridLayout();
+ layout.marginHeight = 0;
+ layout.marginWidth = 0;
+ buttonsPanel.setLayout(layout);
+ buttonsPanel.setLayoutData(new GridData(SWT.LEAD, SWT.BEGINNING, false, false));
+
+ addButton = new Button(buttonsPanel, SWT.PUSH);
+ addButton.setText(Messages.PreferencePage_executables_button_add_label);
+ layoutData = new GridData(SWT.FILL, SWT.CENTER, false, false);
+ layoutData.widthHint = Dialog.convertWidthInCharsToPixels(gc.getFontMetrics(), 10);
+ addButton.setLayoutData(layoutData);
+ addButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ ExternalExecutablesDialog dialog = new ExternalExecutablesDialog(PreferencePage.this.getShell(), false);
+ if (dialog.open() == Window.OK) {
+ // Get the executable properties and add it to the the list
+ Map<String, String> executableData = dialog.getExecutableData();
+ if (executableData != null && !executables.contains(executableData)) {
+ executables.add(executableData);
+ viewer.refresh();
+ }
+ }
+ }
+ });
+
+ editButton = new Button(buttonsPanel, SWT.PUSH);
+ editButton.setText(Messages.PreferencePage_executables_button_edit_label);
+ layoutData = new GridData(SWT.FILL, SWT.CENTER, true, false);
+ layoutData.widthHint = Dialog.convertWidthInCharsToPixels(gc.getFontMetrics(), 10);
+ editButton.setLayoutData(layoutData);
+ editButton.addSelectionListener(new SelectionAdapter() {
+ @SuppressWarnings("unchecked")
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ ISelection s = viewer.getSelection();
+ if (s instanceof IStructuredSelection && !s.isEmpty()) {
+ Object element = ((IStructuredSelection) s).getFirstElement();
+ if (element instanceof Map) {
+ final Map<String, String> m = (Map<String, String>) element;
+ ExternalExecutablesDialog dialog = new ExternalExecutablesDialog(PreferencePage.this.getShell(),
+ true);
+ dialog.setExecutableData(m);
+ if (dialog.open() == Window.OK) {
+ Map<String, String> executableData = dialog.getExecutableData();
+ if (executableData != null) {
+ m.clear();
+ m.putAll(executableData);
+ viewer.refresh();
+ }
+ }
+ }
+ }
+ }
+ });
+
+ removeButton = new Button(buttonsPanel, SWT.PUSH);
+ removeButton.setText(Messages.PreferencePage_executables_button_remove_label);
+ layoutData = new GridData(SWT.FILL, SWT.CENTER, true, false);
+ layoutData.widthHint = Dialog.convertWidthInCharsToPixels(gc.getFontMetrics(), 10);
+ removeButton.setLayoutData(layoutData);
+ removeButton.addSelectionListener(new SelectionAdapter() {
+ @SuppressWarnings("unchecked")
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ ISelection s = viewer.getSelection();
+ if (s instanceof IStructuredSelection && !s.isEmpty()) {
+ Iterator<?> iterator = ((IStructuredSelection) s).iterator();
+ while (iterator.hasNext()) {
+ Object element = iterator.next();
+ if (element instanceof Map) {
+ Map<String, Object> m = (Map<String, Object>) element;
+ executables.remove(m);
+ }
+ viewer.refresh();
+ }
+ }
+ }
+ });
+
+ viewer.setContentProvider(new IStructuredContentProvider() {
+ @Override
+ public Object[] getElements(Object inputElement) {
+ if (inputElement instanceof List && !((List<?>) inputElement).isEmpty()) {
+ return ((List<?>) inputElement).toArray();
+ }
+ return NO_ELEMENTS;
+ }
+
+ @Override
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ }
+
+ @Override
+ public void dispose() {
+ }
+ });
+
+ viewer.setLabelProvider(new ITableLabelProvider() {
+ @SuppressWarnings("unchecked")
+ @Override
+ public String getColumnText(Object element, int columnIndex) {
+ if (element instanceof Map) {
+ Map<String, Object> m = (Map<String, Object>) element;
+
+ switch (columnIndex) {
+ case 0:
+ return (String) m.get(IExternalExecutablesProperties.PROP_NAME);
+ case 1:
+ return (String) m.get(IExternalExecutablesProperties.PROP_PATH);
+ }
+ }
+ return null;
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public Image getColumnImage(Object element, int columnIndex) {
+ Image i = null;
+
+ if (element instanceof Map) {
+ switch (columnIndex) {
+ case 0:
+ Map<String, Object> m = (Map<String, Object>) element;
+ String icon = (String) m.get(IExternalExecutablesProperties.PROP_ICON);
+ if (icon != null) {
+ i = images.get(icon);
+ if (i == null) {
+ ImageData id = ExternalExecutablesUtils.loadImage(icon);
+ if (id != null) {
+ ImageDescriptor d = ImageDescriptor.createFromImageData(id);
+ if (d != null)
+ i = d.createImage();
+ if (i != null)
+ images.put(icon, i);
+ }
+ }
+ }
+ break;
+ case 1:
+ break;
+ }
+ }
+
+ return i;
+ }
+
+ @Override
+ public void removeListener(ILabelProviderListener listener) {
+ }
+
+ @Override
+ public boolean isLabelProperty(Object element, String property) {
+ return false;
+ }
+
+ @Override
+ public void dispose() {
+ }
+
+ @Override
+ public void addListener(ILabelProviderListener listener) {
+ }
+ });
+
+ List<Map<String, String>> l = ExternalExecutablesManager.load();
+ if (l != null)
+ executables.addAll(l);
+
+ viewer.setInput(executables);
+
+ viewer.addPostSelectionChangedListener(event -> updateButtons());
+
+ updateButtons();
+
+ gc.dispose();
+
+ return panel;
+ }
+
+ /**
+ * Updates the button states.
+ */
+ protected void updateButtons() {
+ if (viewer != null) {
+ addButton.setEnabled(true);
+
+ ISelection selection = viewer.getSelection();
+
+ boolean hasSelection = selection != null && !selection.isEmpty();
+ int count = selection instanceof IStructuredSelection ? ((IStructuredSelection) selection).size() : 0;
+
+ editButton.setEnabled(hasSelection && count == 1);
+ removeButton.setEnabled(hasSelection && count > 0);
+ } else {
+ addButton.setEnabled(false);
+ editButton.setEnabled(false);
+ removeButton.setEnabled(false);
+ }
+ }
+
+ @Override
+ protected void performDefaults() {
+ if (!Platform.OS_WIN32.equals(Platform.getOS())) {
+ command.setText(""); //$NON-NLS-1$
+ arguments.setText(""); //$NON-NLS-1$
+ }
+
+ String initialCwd = UIPlugin.getScopedPreferences()
+ .getDefaultString(IPreferenceKeys.PREF_LOCAL_TERMINAL_INITIAL_CWD);
+ if (initialCwd == null || IPreferenceKeys.PREF_INITIAL_CWD_USER_HOME.equals(initialCwd)
+ || "".equals(initialCwd.trim())) { //$NON-NLS-1$
+ workingDir.select(0);
+ } else if (IPreferenceKeys.PREF_INITIAL_CWD_ECLIPSE_HOME.equals(initialCwd)
+ || "${eclipse_home}".equals(initialCwd)) { //$NON-NLS-1$
+ workingDir.select(1);
+ } else if (IPreferenceKeys.PREF_INITIAL_CWD_ECLIPSE_WS.equals(initialCwd)
+ || "${workspace_loc}".equals(initialCwd)) { //$NON-NLS-1$
+ workingDir.select(2);
+ } else {
+ workingDir.setText(new Path(initialCwd).toOSString());
+ }
+
+ executables.clear();
+ List<Map<String, String>> l = ExternalExecutablesManager.load();
+ if (l != null)
+ executables.addAll(l);
+ viewer.refresh();
+
+ super.performDefaults();
+ }
+
+ @Override
+ public boolean performOk() {
+ if (!Platform.OS_WIN32.equals(Platform.getOS())) {
+ String text = command.getText();
+ IPath p = new Path(text.trim());
+ UIPlugin.getScopedPreferences().putString(IPreferenceKeys.PREF_LOCAL_TERMINAL_DEFAULT_SHELL_UNIX,
+ p.toFile().isFile() && p.toFile().canRead() && p.toFile().canExecute() ? p.toOSString() : null);
+
+ text = arguments.getText();
+ UIPlugin.getScopedPreferences().putString(IPreferenceKeys.PREF_LOCAL_TERMINAL_DEFAULT_SHELL_UNIX_ARGS,
+ !"".equals(text.trim()) ? text.trim() : null); //$NON-NLS-1$
+ }
+
+ String text = workingDir.getText();
+ if (text == null || Messages.PreferencePage_workingDir_userhome_label.equals(text) || "".equals(text.trim())) { //$NON-NLS-1$
+ UIPlugin.getScopedPreferences().putString(IPreferenceKeys.PREF_LOCAL_TERMINAL_INITIAL_CWD, null);
+ } else if (Messages.PreferencePage_workingDir_eclipsehome_label.equals(text)) {
+ UIPlugin.getScopedPreferences().putString(IPreferenceKeys.PREF_LOCAL_TERMINAL_INITIAL_CWD,
+ IPreferenceKeys.PREF_INITIAL_CWD_ECLIPSE_HOME);
+ } else if (Messages.PreferencePage_workingDir_eclipsews_label.equals(text)) {
+ UIPlugin.getScopedPreferences().putString(IPreferenceKeys.PREF_LOCAL_TERMINAL_INITIAL_CWD,
+ IPreferenceKeys.PREF_INITIAL_CWD_ECLIPSE_WS);
+ } else {
+ try {
+ // Resolve possible dynamic variables
+ IStringVariableManager vm = VariablesPlugin.getDefault().getStringVariableManager();
+ String resolved = vm.performStringSubstitution(text.trim());
+
+ IPath p = new Path(resolved);
+ UIPlugin.getScopedPreferences().putString(IPreferenceKeys.PREF_LOCAL_TERMINAL_INITIAL_CWD,
+ p.toFile().canRead() && p.toFile().isDirectory() ? text.trim() : null);
+ } catch (CoreException e) {
+ if (Platform.inDebugMode()) {
+ UIPlugin.getDefault().getLog().log(e.getStatus());
+ }
+ }
+ }
+
+ ExternalExecutablesManager.save(executables);
+
+ return super.performOk();
+ }
+
+ @Override
+ public void dispose() {
+ for (Image i : images.values()) {
+ i.dispose();
+ }
+ images.clear();
+ super.dispose();
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/preferences/PreferencesInitializer.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/preferences/PreferencesInitializer.java
new file mode 100644
index 00000000000..60580e93617
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/preferences/PreferencesInitializer.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ * Dirk Fauth <dirk.fauth@googlemail.com> - Bug 460496
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.preferences;
+
+import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
+import org.eclipse.tm.terminal.view.core.preferences.ScopedEclipsePreferences;
+import org.eclipse.tm.terminal.view.ui.activator.UIPlugin;
+import org.eclipse.tm.terminal.view.ui.interfaces.IPreferenceKeys;
+
+/**
+ * Terminal default preferences initializer.
+ */
+public class PreferencesInitializer extends AbstractPreferenceInitializer {
+
+ public PreferencesInitializer() {
+ }
+
+ @Override
+ public void initializeDefaultPreferences() {
+ ScopedEclipsePreferences prefs = UIPlugin.getScopedPreferences();
+
+ prefs.putDefaultBoolean(IPreferenceKeys.PREF_REMOVE_TERMINATED_TERMINALS, true);
+
+ prefs.putDefaultString(IPreferenceKeys.PREF_LOCAL_TERMINAL_INITIAL_CWD,
+ IPreferenceKeys.PREF_INITIAL_CWD_USER_HOME);
+ prefs.putDefaultString(IPreferenceKeys.PREF_LOCAL_TERMINAL_DEFAULT_SHELL_UNIX, null);
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/services/TerminalService.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/services/TerminalService.java
new file mode 100644
index 00000000000..c5b8bf263b5
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/services/TerminalService.java
@@ -0,0 +1,345 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.services;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.ISafeRunnable;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.ListenerList;
+import org.eclipse.core.runtime.SafeRunner;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.swt.custom.CTabItem;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.tm.internal.terminal.provisional.api.ITerminalConnector;
+import org.eclipse.tm.terminal.view.core.activator.CoreBundleActivator;
+import org.eclipse.tm.terminal.view.core.interfaces.ITerminalService;
+import org.eclipse.tm.terminal.view.core.interfaces.ITerminalTabListener;
+import org.eclipse.tm.terminal.view.core.interfaces.constants.ITerminalsConnectorConstants;
+import org.eclipse.tm.terminal.view.ui.interfaces.ILauncherDelegate;
+import org.eclipse.tm.terminal.view.ui.interfaces.IUIConstants;
+import org.eclipse.tm.terminal.view.ui.launcher.LauncherDelegateManager;
+import org.eclipse.tm.terminal.view.ui.manager.ConsoleManager;
+import org.eclipse.tm.terminal.view.ui.nls.Messages;
+import org.eclipse.ui.PlatformUI;
+
+/**
+ * Terminal service implementation.
+ */
+@SuppressWarnings("restriction")
+public class TerminalService implements ITerminalService {
+ /**
+ * The registered terminal tab dispose listeners.
+ */
+ private final ListenerList<ITerminalTabListener> terminalTabListeners = new ListenerList<>();
+
+ // Flag to remember if the terminal view has been restored or not.
+ private boolean fRestoringView;
+
+ // Terminal tab events
+
+ /**
+ * A terminal tab got disposed.
+ */
+ public static final int TAB_DISPOSED = 1;
+
+ /**
+ * Common terminal service runnable implementation.
+ */
+ protected static abstract class TerminalServiceRunnable {
+
+ /**
+ * Invoked to execute the terminal service runnable.
+ *
+ * @param id The terminals view id or <code>null</code>.
+ * @param secondaryId The terminals view secondary id or <code>null</code>.
+ * @param title The terminal tab title. Must not be <code>null</code>.
+ * @param connector The terminal connector. Must not be <code>null</code>.
+ * @param data The custom terminal data node or <code>null</code>.
+ * @param done The callback to invoke if the operation finished or <code>null</code>.
+ */
+ public abstract void run(String id, String secondaryId, String title, ITerminalConnector connector, Object data,
+ Done done);
+
+ /**
+ * Returns if or if not to execute the runnable asynchronously.
+ * <p>
+ * The method returns per default <code>true</code>. Overwrite to
+ * modify the behavior.
+ *
+ * @return <code>True</code> to execute the runnable asynchronously, <code>false</code> otherwise.
+ */
+ public boolean isExecuteAsync() {
+ return true;
+ }
+ }
+
+ public TerminalService() {
+ }
+
+ @Override
+ public final void addTerminalTabListener(ITerminalTabListener listener) {
+ Assert.isNotNull(listener);
+ terminalTabListeners.add(listener);
+ }
+
+ @Override
+ public final void removeTerminalTabListener(ITerminalTabListener listener) {
+ Assert.isNotNull(listener);
+ terminalTabListeners.remove(listener);
+ }
+
+ /**
+ * Convenience method for notifying the registered terminal tab listeners.
+ *
+ * @param event The terminal tab event.
+ * @param source The disposed tab item. Must not be <code>null</code>.
+ * @param data The custom data object associated with the disposed tab item or <code>null</code>.
+ */
+ public final void fireTerminalTabEvent(final int event, final Object source, final Object data) {
+ Assert.isNotNull(source);
+
+ // If no listener is registered, we are done here
+ if (terminalTabListeners.isEmpty())
+ return;
+
+ // Get the list or currently registered listeners
+ // Loop the registered terminal tab listeners and invoke the proper method
+ for (final ITerminalTabListener listener : terminalTabListeners) {
+ ISafeRunnable job = new ISafeRunnable() {
+ @Override
+ public void handleException(Throwable exception) {
+ // already logged in Platform#run()
+ }
+
+ @Override
+ public void run() throws Exception {
+ switch (event) {
+ case TAB_DISPOSED:
+ listener.terminalTabDisposed(source, data);
+ break;
+ default:
+ }
+ }
+ };
+ SafeRunner.run(job);
+ }
+ }
+
+ /**
+ * Executes the given runnable operation and invokes the given callback, if any,
+ * after the operation finished.
+ *
+ * @param properties The terminal properties. Must not be <code>null</code>.
+ * @param runnable The terminal service runnable. Must not be <code>null</code>.
+ * @param done The callback to invoke if the operation has been finished or <code>null</code>.
+ */
+ protected final void executeServiceOperation(final Map<String, Object> properties,
+ final TerminalServiceRunnable runnable, final Done done) {
+ Assert.isNotNull(properties);
+ Assert.isNotNull(runnable);
+
+ // Extract the properties
+ String id = (String) properties.get(ITerminalsConnectorConstants.PROP_ID);
+ String secondaryId = (String) properties.get(ITerminalsConnectorConstants.PROP_SECONDARY_ID);
+ if (!properties.containsKey(ITerminalsConnectorConstants.PROP_SECONDARY_ID)) {
+ secondaryId = ITerminalsConnectorConstants.LAST_ACTIVE_SECONDARY_ID;
+ }
+ String title = (String) properties.get(ITerminalsConnectorConstants.PROP_TITLE);
+ Object data = properties.get(ITerminalsConnectorConstants.PROP_DATA);
+
+ // Normalize the terminals console view id
+ id = normalizeId(id, data);
+ // Normalize the terminal console tab title
+ title = normalizeTitle(title, data);
+
+ // Create the terminal connector instance
+ final ITerminalConnector connector = createTerminalConnector(properties);
+ if (connector == null) {
+ // Properties contain invalid connector arguments
+ if (done != null) {
+ Exception e = new IllegalArgumentException(Messages.TerminalService_error_cannotCreateConnector);
+ done.done(new Status(IStatus.ERROR, CoreBundleActivator.getUniqueIdentifier(), e.getLocalizedMessage(),
+ e));
+ }
+ return;
+ }
+
+ // Finalize the used variables
+ final String finId = id;
+ final String finSecondaryId = secondaryId;
+ final String finTitle = title;
+ final Object finData = data;
+
+ // Execute the operation
+ if (!runnable.isExecuteAsync()) {
+ runnable.run(finId, finSecondaryId, finTitle, connector, finData, done);
+ } else {
+ try {
+ Display display = PlatformUI.getWorkbench().getDisplay();
+ display.asyncExec(() -> runnable.run(finId, finSecondaryId, finTitle, connector, finData, done));
+ } catch (Exception e) {
+ // if display is disposed, silently ignore.
+ }
+ }
+ }
+
+ /**
+ * Normalize the terminals view id.
+ *
+ * @param id The terminals view id or <code>null</code>.
+ * @param data The custom data object or <code>null</code>.
+ *
+ * @return The normalized terminals console view id.
+ */
+ protected String normalizeId(String id, Object data) {
+ return id != null ? id : IUIConstants.ID;
+ }
+
+ /**
+ * Normalize the terminal tab title.
+ *
+ * @param title The terminal tab title or <code>null</code>.
+ * @param data The custom data object or <code>null</code>.
+ *
+ * @return The normalized terminal tab title.
+ */
+ protected String normalizeTitle(String title, Object data) {
+ // If the title is explicitly specified, return as is
+ if (title != null)
+ return title;
+
+ // Return the default console title in all other cases
+ return Messages.TerminalService_defaultTitle;
+ }
+
+ /**
+ * Creates the terminal connector configured within the given properties.
+ *
+ * @param properties The terminal console properties. Must not be <code>null</code>.
+ * @return The terminal connector or <code>null</code>.
+ */
+ protected ITerminalConnector createTerminalConnector(Map<String, Object> properties) {
+ Assert.isNotNull(properties);
+
+ // The terminal connector result object
+ ITerminalConnector connector = null;
+
+ // Get the launcher delegate id from the properties
+ String delegateId = (String) properties.get(ITerminalsConnectorConstants.PROP_DELEGATE_ID);
+ if (delegateId != null) {
+ // Get the launcher delegate
+ ILauncherDelegate delegate = LauncherDelegateManager.getInstance().getLauncherDelegate(delegateId, false);
+ if (delegate != null) {
+ // Create the terminal connector
+ connector = delegate.createTerminalConnector(properties);
+ }
+ }
+
+ return connector;
+ }
+
+ @Override
+ public void openConsole(final Map<String, Object> properties, final Done done) {
+ Assert.isNotNull(properties);
+ final boolean restoringView = fRestoringView;
+
+ executeServiceOperation(properties, new TerminalServiceRunnable() {
+ @Override
+ @SuppressWarnings("synthetic-access")
+ public void run(final String id, final String secondaryId, final String title,
+ final ITerminalConnector connector, final Object data, final Done done) {
+ if (restoringView) {
+ doRun(id, secondaryId, title, connector, data, done);
+ } else {
+ // First, restore the view. This opens consoles from the memento
+ fRestoringView = true;
+ ConsoleManager.getInstance().showConsoleView(id, secondaryId);
+ fRestoringView = false;
+
+ // After that schedule opening the requested console
+ try {
+ Display display = PlatformUI.getWorkbench().getDisplay();
+ display.asyncExec(() -> doRun(id, secondaryId, title, connector, data, done));
+ } catch (Exception e) {
+ // if display is disposed, silently ignore.
+ }
+ }
+ }
+
+ public void doRun(String id, String secondaryId, String title, ITerminalConnector connector, Object data,
+ Done done) {
+ // Determine the terminal encoding
+ String encoding = (String) properties.get(ITerminalsConnectorConstants.PROP_ENCODING);
+ // Create the flags to pass on to openConsole
+ Map<String, Boolean> flags = new HashMap<>();
+ flags.put("activate", Boolean.TRUE); //$NON-NLS-1$
+ if (properties.get(ITerminalsConnectorConstants.PROP_FORCE_NEW) instanceof Boolean) {
+ flags.put(ITerminalsConnectorConstants.PROP_FORCE_NEW,
+ (Boolean) properties.get(ITerminalsConnectorConstants.PROP_FORCE_NEW));
+ }
+ if (properties.get(ITerminalsConnectorConstants.PROP_DATA_NO_RECONNECT) instanceof Boolean) {
+ flags.put(ITerminalsConnectorConstants.PROP_DATA_NO_RECONNECT,
+ (Boolean) properties.get(ITerminalsConnectorConstants.PROP_DATA_NO_RECONNECT));
+ }
+ // Open the new console
+ CTabItem item;
+ item = ConsoleManager.getInstance().openConsole(id, secondaryId, title, encoding, connector, data,
+ flags);
+ // Associate the original terminal properties with the tab item.
+ // This makes it easier to persist the connection data within the memento handler
+ if (item != null && !item.isDisposed())
+ item.setData("properties", properties); //$NON-NLS-1$
+
+ // Invoke the callback
+ if (done != null)
+ done.done(Status.OK_STATUS);
+ }
+ }, done);
+ }
+
+ @Override
+ public void closeConsole(final Map<String, Object> properties, final Done done) {
+ Assert.isNotNull(properties);
+
+ executeServiceOperation(properties, new TerminalServiceRunnable() {
+ @Override
+ public void run(String id, String secondaryId, String title, ITerminalConnector connector, Object data,
+ Done done) {
+ // Close the console
+ ConsoleManager.getInstance().closeConsole(id, title, connector, data);
+ // Invoke the callback
+ if (done != null)
+ done.done(Status.OK_STATUS);
+ }
+ }, done);
+ }
+
+ @Override
+ public void terminateConsole(Map<String, Object> properties, Done done) {
+ Assert.isNotNull(properties);
+
+ executeServiceOperation(properties, new TerminalServiceRunnable() {
+ @Override
+ public void run(String id, String secondaryId, String title, ITerminalConnector connector, Object data,
+ Done done) {
+ // Close the console
+ ConsoleManager.getInstance().terminateConsole(id, title, connector, data);
+ // Invoke the callback
+ if (done != null)
+ done.done(Status.OK_STATUS);
+ }
+ }, done);
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/streams/AbstractStreamsConnector.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/streams/AbstractStreamsConnector.java
new file mode 100644
index 00000000000..686c7065713
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/streams/AbstractStreamsConnector.java
@@ -0,0 +1,198 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.streams;
+
+import java.io.InputStream;
+import java.io.OutputStream;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl;
+import org.eclipse.tm.internal.terminal.provisional.api.provider.TerminalConnectorImpl;
+import org.eclipse.tm.terminal.view.core.interfaces.ITerminalServiceOutputStreamMonitorListener;
+import org.eclipse.ui.services.IDisposable;
+
+/**
+ * Streams connector implementation.
+ */
+public abstract class AbstractStreamsConnector extends TerminalConnectorImpl {
+ // Reference to the stdin monitor
+ private InputStreamMonitor stdInMonitor;
+ // Reference to the stdout monitor
+ private OutputStreamMonitor stdOutMonitor;
+ // Reference to the stderr monitor
+ private OutputStreamMonitor stdErrMonitor;
+
+ // Reference to the list of stdout output listeners
+ private ITerminalServiceOutputStreamMonitorListener[] stdoutListeners = null;
+ // Reference to the list of stderr output listeners
+ private ITerminalServiceOutputStreamMonitorListener[] stderrListeners = null;
+
+ /**
+ * Set the list of stdout listeners.
+ *
+ * @param listeners The list of stdout listeners or <code>null</code>.
+ */
+ protected final void setStdoutListeners(ITerminalServiceOutputStreamMonitorListener[] listeners) {
+ this.stdoutListeners = listeners;
+ }
+
+ /**
+ * Set the list of stderr listeners.
+ *
+ * @param listeners The list of stderr listeners or <code>null</code>.
+ */
+ protected final void setStderrListeners(ITerminalServiceOutputStreamMonitorListener[] listeners) {
+ this.stderrListeners = listeners;
+ }
+
+ /**
+ * Connect the given streams. The streams connector will wrap each stream
+ * with a corresponding terminal stream monitor.
+ *
+ * @param terminalControl The terminal control. Must not be <code>null</code>.
+ * @param stdin The stdin stream or <code>null</code>.
+ * @param stdout The stdout stream or <code>null</code>.
+ * @param stderr The stderr stream or <code>null</code>.
+ * @param localEcho Local echo on or off.
+ * @param lineSeparator The line separator used by the stream.
+ */
+ protected void connectStreams(ITerminalControl terminalControl, OutputStream stdin, InputStream stdout,
+ InputStream stderr, boolean localEcho, String lineSeparator) {
+ Assert.isNotNull(terminalControl);
+
+ // Create the input stream monitor
+ if (stdin != null) {
+ stdInMonitor = createStdInMonitor(terminalControl, stdin, localEcho, lineSeparator);
+ // Register the connector if it implements IDisposable and stdout/stderr are not monitored
+ if (stdout == null && stderr == null && this instanceof IDisposable)
+ stdInMonitor.addDisposable((IDisposable) this);
+ // Start the monitoring
+ stdInMonitor.startMonitoring();
+ }
+
+ // Create the output stream monitor
+ if (stdout != null) {
+ stdOutMonitor = createStdOutMonitor(terminalControl, stdout, lineSeparator);
+ // Register the connector if it implements IDisposable
+ if (this instanceof IDisposable)
+ stdOutMonitor.addDisposable((IDisposable) this);
+ // Register the listeners
+ if (stdoutListeners != null) {
+ for (ITerminalServiceOutputStreamMonitorListener l : stdoutListeners) {
+ stdOutMonitor.addListener(l);
+ }
+ }
+ // Start the monitoring
+ stdOutMonitor.startMonitoring();
+ }
+
+ // Create the error stream monitor
+ if (stderr != null) {
+ stdErrMonitor = createStdErrMonitor(terminalControl, stderr, lineSeparator);
+ // Register the connector if it implements IDisposable and stdout is not monitored
+ if (stdout == null && this instanceof IDisposable)
+ stdErrMonitor.addDisposable((IDisposable) this);
+ // Register the listeners
+ if (stderrListeners != null) {
+ for (ITerminalServiceOutputStreamMonitorListener l : stderrListeners) {
+ stdErrMonitor.addListener(l);
+ }
+ }
+ // Start the monitoring
+ stdErrMonitor.startMonitoring();
+ }
+ }
+
+ /**
+ * Creates an stdin monitor for the given terminal control and stdin stream.
+ * Subclasses may override to create a specialized stream monitor.
+ *
+ * @param terminalControl The terminal control. Must not be <code>null</code>.
+ * @param stdin The stdin stream or <code>null</code>.
+ * @param localEcho Local echo on or off.
+ * @param lineSeparator The line separator used by the stream.
+ *
+ * @return input stream monitor
+ */
+ protected InputStreamMonitor createStdInMonitor(ITerminalControl terminalControl, OutputStream stdin,
+ boolean localEcho, String lineSeparator) {
+ return new InputStreamMonitor(terminalControl, stdin, localEcho, lineSeparator);
+ }
+
+ /**
+ * Creates an stdout monitor for the given terminal control and stdout stream.
+ * Subclasses may override to create a specialized stream monitor.
+ *
+ * @param terminalControl The terminal control. Must not be <code>null</code>.
+ * @param stdout The stdout stream or <code>null</code>.
+ * @param lineSeparator The line separator used by the stream.
+ *
+ * @return output stream monitor
+ */
+ protected OutputStreamMonitor createStdOutMonitor(ITerminalControl terminalControl, InputStream stdout,
+ String lineSeparator) {
+ return new OutputStreamMonitor(terminalControl, stdout, lineSeparator);
+ }
+
+ /**
+ * Creates an stderr monitor for the given terminal control and stderr stream.
+ * Subclasses may override to create a specialized stream monitor.
+ *
+ * @param terminalControl The terminal control. Must not be <code>null</code>.
+ * @param stderr The stderr stream or <code>null</code>.
+ * @param lineSeparator The line separator used by the stream.
+ *
+ * @return output stream monitor
+ */
+ protected OutputStreamMonitor createStdErrMonitor(ITerminalControl terminalControl, InputStream stderr,
+ String lineSeparator) {
+ return new OutputStreamMonitor(terminalControl, stderr, lineSeparator);
+ }
+
+ @Override
+ protected void doDisconnect() {
+ // First let all the monitors know they are about to be closed, this allows them
+ // to suppress errors if closing one stream causes other streams to all close
+ // as a side effect.
+ if (stdInMonitor != null) {
+ stdInMonitor.disposalComing();
+ }
+ if (stdOutMonitor != null) {
+ stdOutMonitor.disposalComing();
+ }
+ if (stdErrMonitor != null) {
+ stdErrMonitor.disposalComing();
+ }
+
+ // Dispose the streams
+ if (stdInMonitor != null) {
+ stdInMonitor.dispose();
+ stdInMonitor = null;
+ }
+ if (stdOutMonitor != null) {
+ stdOutMonitor.dispose();
+ stdOutMonitor = null;
+ }
+ if (stdErrMonitor != null) {
+ stdErrMonitor.dispose();
+ stdErrMonitor = null;
+ }
+
+ super.doDisconnect();
+ }
+
+ @Override
+ public OutputStream getTerminalToRemoteStream() {
+ return stdInMonitor;
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/streams/InputStreamMonitor.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/streams/InputStreamMonitor.java
new file mode 100644
index 00000000000..4ec791360bb
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/streams/InputStreamMonitor.java
@@ -0,0 +1,371 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.streams;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Queue;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl;
+import org.eclipse.tm.terminal.view.core.interfaces.constants.ILineSeparatorConstants;
+import org.eclipse.tm.terminal.view.ui.activator.UIPlugin;
+import org.eclipse.tm.terminal.view.ui.nls.Messages;
+import org.eclipse.ui.services.IDisposable;
+
+/**
+ * Input stream monitor implementation.
+ * <p>
+ * <b>Note:</b> The input is coming <i>from</i> the terminal. Therefore, the input
+ * stream monitor is attached to the stdin stream of the monitored (remote) process.
+ */
+public class InputStreamMonitor extends OutputStream implements IDisposable {
+ // Reference to the parent terminal control
+ private final ITerminalControl terminalControl;
+
+ // Reference to the monitored (output) stream
+ private final OutputStream stream;
+
+ // Reference to the thread writing the stream
+ private volatile Thread thread;
+
+ // Flag to mark the monitor disposed. When disposed,
+ // no further data is written from the monitored stream.
+ private volatile boolean disposed;
+
+ // A list of object to dispose if this monitor is disposed
+ private final List<IDisposable> disposables = new ArrayList<>();
+
+ // Queue to buffer the data to write to the output stream
+ private final Queue<byte[]> queue = new LinkedList<>();
+
+ // ***** Line separator replacement logic *****
+
+ private final static int TERMINAL_SENDS_CR = 0;
+ private final static int TERMINAL_SENDS_CRLF = 1;
+ private final static int PROGRAM_EXPECTS_LF = 0;
+ private final static int PROGRAM_EXPECTS_CRLF = 1;
+ private final static int PROGRAM_EXPECTS_CR = 2;
+ private final static int NO_CHANGE = 0;
+ private final static int CHANGE_CR_TO_LF = 1;
+ private final static int INSERT_LF_AFTER_CR = 2;
+ private final static int REMOVE_CR = 3;
+ private final static int REMOVE_LF = 4;
+
+ // CRLF conversion table:
+ //
+ // Expected line separator --> | LF | CRLF | CR |
+ // ------------------------------------+-----------------+--------------------+----------------+
+ // Local echo off - control sends CR | change CR to LF | insert LF after CR | no change |
+ // ------------------------------------+-----------------+--------------------+----------------+
+ // Local echo on - control sends CRLF | remove CR | no change | remove LF |
+ //
+ private final static int[][] CRLF_REPLACEMENT = {
+
+ { CHANGE_CR_TO_LF, INSERT_LF_AFTER_CR, NO_CHANGE }, { REMOVE_CR, NO_CHANGE, REMOVE_LF } };
+
+ private int replacement;
+
+ /**
+ * @see #disposalComing()
+ */
+ private boolean disposalComing;
+
+ /**
+ * Constructor.
+ *
+ * @param terminalControl The parent terminal control. Must not be <code>null</code>.
+ * @param stream The stream. Must not be <code>null</code>.
+ * @param localEcho Local echo on or off.
+ * @param lineSeparator The line separator used by the stream.
+ */
+ public InputStreamMonitor(ITerminalControl terminalControl, OutputStream stream, boolean localEcho,
+ String lineSeparator) {
+ super();
+
+ Assert.isNotNull(terminalControl);
+ this.terminalControl = terminalControl;
+ Assert.isNotNull(stream);
+ this.stream = stream;
+
+ // Determine the line separator replacement setting
+ int terminalSends = localEcho ? TERMINAL_SENDS_CRLF : TERMINAL_SENDS_CR;
+ if (lineSeparator == null) {
+ replacement = NO_CHANGE;
+ } else {
+ int programExpects;
+ if (lineSeparator.equals(ILineSeparatorConstants.LINE_SEPARATOR_LF)) {
+ programExpects = PROGRAM_EXPECTS_LF;
+ } else if (lineSeparator.equals(ILineSeparatorConstants.LINE_SEPARATOR_CR)) {
+ programExpects = PROGRAM_EXPECTS_CR;
+ } else {
+ programExpects = PROGRAM_EXPECTS_CRLF;
+ }
+ replacement = CRLF_REPLACEMENT[terminalSends][programExpects];
+ }
+
+ }
+
+ /**
+ * Returns the associated terminal control.
+ *
+ * @return The associated terminal control.
+ */
+ protected final ITerminalControl getTerminalControl() {
+ return terminalControl;
+ }
+
+ /**
+ * Adds the given disposable object to the list. The method will do nothing
+ * if either the disposable object is already part of the list or the monitor
+ * is disposed.
+ *
+ * @param disposable The disposable object. Must not be <code>null</code>.
+ */
+ public final void addDisposable(IDisposable disposable) {
+ Assert.isNotNull(disposable);
+ if (!disposed && !disposables.contains(disposable))
+ disposables.add(disposable);
+ }
+
+ /**
+ * Removes the disposable object from the list.
+ *
+ * @param disposable The disposable object. Must not be <code>null</code>.
+ */
+ public final void removeDisposable(IDisposable disposable) {
+ Assert.isNotNull(disposable);
+ disposables.remove(disposable);
+ }
+
+ @Override
+ public void dispose() {
+ // If already disposed --> return immediately
+ if (disposed)
+ return;
+
+ disposalComing();
+
+ // Mark the monitor disposed
+ disposed = true;
+
+ // Close the stream (ignore exceptions on close)
+ try {
+ stream.close();
+ } catch (IOException e) {
+ /* ignored on purpose */ }
+ // And interrupt the thread
+ close();
+
+ // Dispose all registered disposable objects
+ for (IDisposable disposable : disposables)
+ disposable.dispose();
+ // Clear the list
+ disposables.clear();
+ }
+
+ /**
+ * Close the terminal input stream monitor.
+ */
+ @Override
+ public void close() {
+ // Not initialized -> return immediately
+ if (thread == null)
+ return;
+
+ // Copy the reference
+ final Thread oldThread = thread;
+ // Unlink the monitor from the thread
+ thread = null;
+ // And interrupt the writer thread
+ oldThread.interrupt();
+ }
+
+ /**
+ * Starts the terminal output stream monitor.
+ */
+ public void startMonitoring() {
+ // If already initialized -> return immediately
+ if (thread != null)
+ return;
+
+ // Create a new runnable which is constantly reading from the stream
+ Runnable runnable = () -> writeStream();
+
+ // Create the writer thread
+ thread = new Thread(runnable, "Terminal Input Stream Monitor Thread"); //$NON-NLS-1$
+
+ // Configure the writer thread
+ thread.setDaemon(true);
+
+ // Start the processing
+ thread.start();
+ }
+
+ /**
+ * Reads from the queue and writes the read content to the stream.
+ */
+ protected void writeStream() {
+ // Read from the queue and write to the stream until disposed
+ outer: while (thread != null && !disposed) {
+ byte[] data;
+ // If the queue is empty, wait until notified
+ synchronized (queue) {
+ while (queue.isEmpty()) {
+ if (disposed)
+ break outer;
+ try {
+ queue.wait();
+ } catch (InterruptedException e) {
+ break outer;
+ }
+ }
+ // Retrieves the queue head (is null if queue is empty (should never happen))
+ data = queue.poll();
+ }
+ if (data != null) {
+ try {
+ // Break up writes into max 1000 byte junks to avoid console input buffer overflows on Windows
+ int written = 0;
+ byte[] buf = new byte[1000];
+ while (written < data.length) {
+ int len = Math.min(buf.length, data.length - written);
+ System.arraycopy(data, written, buf, 0, len);
+ // Write the data to the stream
+ stream.write(buf, 0, len);
+ written += len;
+ // Flush the stream immediately
+ stream.flush();
+ // Wait a little between writes to allow input being processed
+ if (written < data.length)
+ Thread.sleep(100);
+ }
+ } catch (IOException e) {
+ // IOException received. If this is happening when already disposed -> ignore
+ if (!disposed && !disposalComing) {
+ IStatus status = new Status(IStatus.ERROR, UIPlugin.getUniqueIdentifier(),
+ NLS.bind(Messages.InputStreamMonitor_error_writingToStream, e.getLocalizedMessage()),
+ e);
+ UIPlugin.getDefault().getLog().log(status);
+ }
+ } catch (InterruptedException e) {
+ break;
+ }
+ }
+ }
+
+ // Dispose the stream
+ dispose();
+ }
+
+ @Override
+ public void write(int b) throws IOException {
+ synchronized (queue) {
+ queue.add(new byte[] { (byte) b });
+ queue.notifyAll();
+ }
+ }
+
+ @Override
+ public void write(byte[] b, int off, int len) throws IOException {
+ // Write the whole block to the queue to avoid synchronization
+ // to happen for every byte. To do so, we have to avoid calling
+ // the super method. Therefore we have to do the same checking
+ // here as the base class does.
+
+ // Null check. See the implementation in OutputStream.
+ if (b == null)
+ throw new NullPointerException();
+
+ // Boundary check. See the implementation in OutputStream.
+ if ((off < 0) || (off > b.length) || (len < 0) || ((off + len) > b.length) || ((off + len) < 0)) {
+ throw new IndexOutOfBoundsException();
+ } else if (len == 0) {
+ return;
+ }
+
+ // Make sure that the written block is not interlaced with other input.
+ synchronized (queue) {
+ // Preprocess the block to be written
+ byte[] processedBytes = onWriteContentToStream(b, off, len);
+ // If the returned array is not the original one, adjust offset and length
+ if (processedBytes != b) {
+ off = 0;
+ len = processedBytes.length;
+ b = processedBytes;
+ }
+
+ // Get the content from the byte buffer specified by offset and length
+ byte[] bytes = new byte[len];
+ int j = 0;
+ for (int i = 0; i < len; i++) {
+ bytes[j++] = b[off + i];
+ }
+
+ queue.add(bytes);
+ queue.notifyAll();
+ }
+ }
+
+ /**
+ * Allow for processing of data from byte stream from the terminal before
+ * it is written to the output stream. If the returned byte array is different
+ * than the one that was passed in with the bytes argument, then the
+ * length value will be adapted.
+ *
+ * @param bytes The byte stream. Must not be <code>null</code>.
+ * @param off The offset.
+ * @param len the length.
+ *
+ * @return The processed byte stream.
+ *
+ */
+ protected byte[] onWriteContentToStream(byte[] bytes, int off, int len) {
+ Assert.isNotNull(bytes);
+
+ if (replacement != NO_CHANGE && len > 0) {
+ String origText = new String(bytes, off, len, terminalControl.getCharset());
+ String text = null;
+
+ if (replacement == CHANGE_CR_TO_LF) {
+ text = origText.replace('\r', '\n');
+ } else if (replacement == INSERT_LF_AFTER_CR) {
+ text = origText.replaceAll("\r\n|\r", "\r\n"); //$NON-NLS-1$ //$NON-NLS-2$
+ } else if (replacement == REMOVE_CR) {
+ text = origText.replaceAll(ILineSeparatorConstants.LINE_SEPARATOR_CR, ""); //$NON-NLS-1$
+ } else if (replacement == REMOVE_LF) {
+ text = origText.replaceAll(ILineSeparatorConstants.LINE_SEPARATOR_LF, ""); //$NON-NLS-1$
+ }
+
+ if (text != null && !origText.equals(text)) {
+ bytes = text.getBytes(terminalControl.getCharset());
+ }
+ }
+
+ return bytes;
+ }
+
+ /**
+ * Notify the receiver that the stream is about to be closed. This allows the stream to suppress error messages
+ * that are side effects of the asynchronous nature of the stream closing.
+ * @since 4.9
+ */
+ public void disposalComing() {
+ disposalComing = true;
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/streams/OutputStreamMonitor.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/streams/OutputStreamMonitor.java
new file mode 100644
index 00000000000..36848d49620
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/streams/OutputStreamMonitor.java
@@ -0,0 +1,336 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.streams;
+
+import java.io.BufferedInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.ListenerList;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl;
+import org.eclipse.tm.terminal.view.core.interfaces.ITerminalServiceOutputStreamMonitorListener;
+import org.eclipse.tm.terminal.view.core.interfaces.constants.ILineSeparatorConstants;
+import org.eclipse.tm.terminal.view.ui.activator.UIPlugin;
+import org.eclipse.tm.terminal.view.ui.interfaces.tracing.ITraceIds;
+import org.eclipse.tm.terminal.view.ui.nls.Messages;
+import org.eclipse.ui.services.IDisposable;
+
+/**
+ * Output stream monitor implementation.
+ * <p>
+ * <b>Note:</b> The output is going <i>to</i> the terminal. Therefore, the output
+ * stream monitor is attached to the stdout and/or stderr stream of the monitored
+ * (remote) process.
+ */
+public class OutputStreamMonitor implements IDisposable {
+ // The default buffer size to use
+ private static final int BUFFER_SIZE = 8192;
+
+ // Reference to the parent terminal control
+ private final ITerminalControl terminalControl;
+
+ // Reference to the monitored (input) stream
+ private final InputStream stream;
+
+ // The line separator used by the monitored (input) stream
+ private final String lineSeparator;
+
+ // Reference to the thread reading the stream
+ private Thread thread;
+
+ // Flag to mark the monitor disposed. When disposed,
+ // no further data is read from the monitored stream.
+ private boolean disposed;
+
+ // A list of object to dispose if this monitor is disposed
+ private final List<IDisposable> disposables = new ArrayList<>();
+
+ // The list of registered listener
+ private final ListenerList<ITerminalServiceOutputStreamMonitorListener> listeners;
+
+ /**
+ * @see #disposalComing()
+ */
+ private boolean disposalComing;
+
+ /**
+ * Constructor.
+ *
+ * @param terminalControl The parent terminal control. Must not be <code>null</code>.
+ * @param stream The stream. Must not be <code>null</code>.
+ * @param lineSeparator The line separator used by the stream.
+ */
+ public OutputStreamMonitor(ITerminalControl terminalControl, InputStream stream, String lineSeparator) {
+ super();
+
+ Assert.isNotNull(terminalControl);
+ this.terminalControl = terminalControl;
+ Assert.isNotNull(stream);
+ this.stream = new BufferedInputStream(stream, BUFFER_SIZE);
+
+ this.lineSeparator = lineSeparator;
+
+ this.listeners = new ListenerList<>();
+ }
+
+ /**
+ * Register a streams data receiver listener.
+ *
+ * @param listener The listener. Must not be <code>null</code>.
+ */
+ public final void addListener(ITerminalServiceOutputStreamMonitorListener listener) {
+ Assert.isNotNull(listener);
+ listeners.add(listener);
+ }
+
+ /**
+ * Unregister a streams data receiver listener.
+ *
+ * @param listener The listener. Must not be <code>null</code>.
+ */
+ public final void removeListener(ITerminalServiceOutputStreamMonitorListener listener) {
+ Assert.isNotNull(listener);
+ listeners.remove(listener);
+ }
+
+ /**
+ * Adds the given disposable object to the list. The method will do nothing
+ * if either the disposable object is already part of the list or the monitor
+ * is disposed.
+ *
+ * @param disposable The disposable object. Must not be <code>null</code>.
+ */
+ public final void addDisposable(IDisposable disposable) {
+ Assert.isNotNull(disposable);
+ if (!disposed && !disposables.contains(disposable))
+ disposables.add(disposable);
+ }
+
+ /**
+ * Removes the disposable object from the list.
+ *
+ * @param disposable The disposable object. Must not be <code>null</code>.
+ */
+ public final void removeDisposable(IDisposable disposable) {
+ Assert.isNotNull(disposable);
+ disposables.remove(disposable);
+ }
+
+ @Override
+ public void dispose() {
+ // If already disposed --> return immediately
+ if (disposed)
+ return;
+
+ disposalComing();
+
+ // Mark the monitor disposed
+ disposed = true;
+
+ // Close the stream (ignore exceptions on close)
+ try {
+ stream.close();
+ } catch (IOException e) {
+ /* ignored on purpose */ }
+
+ // Dispose all registered disposable objects
+ for (IDisposable disposable : disposables)
+ disposable.dispose();
+ // Clear the list
+ disposables.clear();
+ }
+
+ /**
+ * Starts the terminal output stream monitor.
+ */
+ protected void startMonitoring() {
+ // If already initialized -> return immediately
+ if (thread != null)
+ return;
+
+ // Create a new runnable which is constantly reading from the stream
+ Runnable runnable = () -> readStream();
+
+ // Create the reader thread
+ thread = new Thread(runnable, "Terminal Output Stream Monitor Thread"); //$NON-NLS-1$
+
+ // Configure the reader thread
+ thread.setDaemon(true);
+ thread.setPriority(Thread.MIN_PRIORITY);
+
+ // Start the processing
+ thread.start();
+ }
+
+ /**
+ * Returns the terminal control that this stream monitor is associated with.
+ */
+ protected ITerminalControl getTerminalControl() {
+ return terminalControl;
+ }
+
+ /**
+ * Reads from the output stream and write the read content
+ * to the terminal control output stream.
+ */
+ void readStream() {
+ // Creates the read buffer
+ byte[] readBuffer = new byte[BUFFER_SIZE];
+
+ // We need to maintain UI responsiveness but still stream the content
+ // to the terminal control fast. Put the thread to a short sleep each second.
+ long sleepMarker = System.currentTimeMillis();
+
+ // Read from the stream until EOS is reached or the
+ // monitor is marked disposed.
+ int read = 0;
+ while (read >= 0 && !disposed) {
+ try {
+ // Read from the stream
+ read = stream.read(readBuffer);
+ // If some data has been read, append to the terminal
+ // control output stream
+ if (read > 0) {
+ // Allow for post processing the read content before appending
+ byte[] processedReadBuffer = onContentReadFromStream(readBuffer, read);
+ if (processedReadBuffer != readBuffer) {
+ read = processedReadBuffer.length;
+ }
+ terminalControl.getRemoteToTerminalOutputStream().write(processedReadBuffer, 0, read);
+ }
+ } catch (IOException e) {
+ // IOException received. If this is happening when already disposed -> ignore
+ if (!disposed && !disposalComing) {
+ IStatus status = new Status(IStatus.ERROR, UIPlugin.getUniqueIdentifier(),
+ NLS.bind(Messages.OutputStreamMonitor_error_readingFromStream, e.getLocalizedMessage()), e);
+ UIPlugin.getDefault().getLog().log(status);
+ }
+ break;
+ } catch (NullPointerException e) {
+ // killing the stream monitor while reading can cause an NPE
+ // when reading from the stream
+ if (!disposed && thread != null && !disposalComing) {
+ IStatus status = new Status(IStatus.ERROR, UIPlugin.getUniqueIdentifier(),
+ NLS.bind(Messages.OutputStreamMonitor_error_readingFromStream, e.getLocalizedMessage()), e);
+ UIPlugin.getDefault().getLog().log(status);
+ }
+ break;
+ }
+
+ // See above -> Thread will go to sleep each second
+ if (System.currentTimeMillis() - sleepMarker > 1000) {
+ sleepMarker = System.currentTimeMillis();
+ try {
+ Thread.sleep(1);
+ } catch (InterruptedException e) {
+ /* ignored on purpose */ }
+ }
+ }
+
+ // Dispose ourself
+ dispose();
+ }
+
+ /**
+ * Allow for processing of data from byte stream after it is read from
+ * client but before it is appended to the terminal. If the returned byte
+ * array is different than the one that was passed in with the byteBuffer
+ * argument, then the bytesRead value will be ignored and the full
+ * returned array will be written out.
+ *
+ * @param byteBuffer The byte stream. Must not be <code>null</code>.
+ * @param bytesRead The number of bytes that were read into the read buffer.
+ * @return The processed byte stream.
+ *
+ */
+ protected byte[] onContentReadFromStream(byte[] byteBuffer, int bytesRead) {
+ Assert.isNotNull(byteBuffer);
+
+ // If tracing is enabled, print out the decimal byte values read
+ if (UIPlugin.getTraceHandler().isSlotEnabled(0, ITraceIds.TRACE_OUTPUT_STREAM_MONITOR)) {
+ StringBuilder debug = new StringBuilder("byteBuffer [decimal, " + bytesRead + " bytes] : "); //$NON-NLS-1$ //$NON-NLS-2$
+ for (int i = 0; i < bytesRead; i++) {
+ debug.append(Byte.valueOf(byteBuffer[i]).intValue());
+ debug.append(' ');
+ }
+ System.out.println(debug.toString());
+ }
+
+ // Remember if the text got changed.
+ boolean changed = false;
+
+ String text = new String(byteBuffer, 0, bytesRead, terminalControl.getCharset());
+
+ // Shift-In (14) and Shift-Out(15) confuses the terminal widget
+ if (text.indexOf(14) != -1 || text.indexOf(15) != -1) {
+ text = text.replaceAll("\\x0e", "").replaceAll("\\x0f", ""); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+ changed = true;
+ }
+
+ // Check on the line separator setting
+ if (lineSeparator != null && !ILineSeparatorConstants.LINE_SEPARATOR_CRLF.equals(lineSeparator)) {
+ String separator = ILineSeparatorConstants.LINE_SEPARATOR_LF.equals(lineSeparator) ? "\n" : "\r"; //$NON-NLS-1$ //$NON-NLS-2$
+ String separator2 = ILineSeparatorConstants.LINE_SEPARATOR_LF.equals(lineSeparator) ? "\r" : "\n"; //$NON-NLS-1$ //$NON-NLS-2$
+
+ if (text.indexOf(separator) != -1) {
+ String[] fragments = text.split(separator);
+ StringBuilder b = new StringBuilder();
+ for (int i = 0; i < fragments.length; i++) {
+ String fragment = fragments[i];
+ String nextFragment = i + 1 < fragments.length ? fragments[i + 1] : null;
+ b.append(fragment);
+ if (fragment.endsWith(separator2)
+ || (nextFragment != null && nextFragment.startsWith(separator2))) {
+ // Both separators are found, just add the original separator
+ b.append(separator);
+ } else {
+ b.append("\n\r"); //$NON-NLS-1$
+ }
+ }
+ if (!text.equals(b.toString())) {
+ text = b.toString();
+ changed = true;
+ }
+ }
+ }
+
+ // If changed, get the new bytes array
+ if (changed) {
+ byteBuffer = text.getBytes(terminalControl.getCharset());
+ bytesRead = byteBuffer.length;
+ }
+
+ // If listeners are registered, invoke the listeners now.
+ if (listeners.size() > 0) {
+ for (ITerminalServiceOutputStreamMonitorListener candidate : listeners) {
+ candidate.onContentReadFromStream(byteBuffer, bytesRead);
+ }
+ }
+
+ return byteBuffer;
+ }
+
+ /**
+ * Notify the receiver that the stream is about to be closed. This allows the stream to suppress error messages
+ * that are side effects of the asynchronous nature of the stream closing.
+ * @since 4.9
+ */
+ public void disposalComing() {
+ disposalComing = true;
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/streams/StreamsConnector.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/streams/StreamsConnector.java
new file mode 100644
index 00000000000..58176078a33
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/streams/StreamsConnector.java
@@ -0,0 +1,99 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.streams;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.tm.internal.terminal.provisional.api.ISettingsStore;
+import org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl;
+import org.eclipse.tm.internal.terminal.provisional.api.NullSettingsStore;
+import org.eclipse.tm.internal.terminal.provisional.api.TerminalState;
+import org.eclipse.ui.services.IDisposable;
+
+/**
+ * Streams connector implementation.
+ */
+public class StreamsConnector extends AbstractStreamsConnector implements IDisposable {
+ // Reference to the streams settings
+ private final StreamsSettings settings;
+
+ public StreamsConnector() {
+ this(new StreamsSettings());
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param settings The streams settings. Must not be <code>null</code>
+ */
+ public StreamsConnector(StreamsSettings settings) {
+ super();
+
+ Assert.isNotNull(settings);
+ this.settings = settings;
+ }
+
+ @Override
+ public void connect(ITerminalControl control) {
+ Assert.isNotNull(control);
+ super.connect(control);
+
+ // Setup the listeners
+ setStdoutListeners(settings.getStdOutListeners());
+ setStderrListeners(settings.getStdErrListeners());
+
+ // connect the streams
+ connectStreams(control, settings.getStdinStream(), settings.getStdoutStream(), settings.getStderrStream(),
+ settings.isLocalEcho(), settings.getLineSeparator());
+
+ // Set the terminal control state to CONNECTED
+ control.setState(TerminalState.CONNECTED);
+ }
+
+ @Override
+ public boolean isLocalEcho() {
+ return settings.isLocalEcho();
+ }
+
+ @Override
+ public void dispose() {
+ disconnect();
+ }
+
+ @Override
+ public void doDisconnect() {
+ // Dispose the streams
+ super.doDisconnect();
+
+ // Set the terminal control state to CLOSED.
+ fControl.setState(TerminalState.CLOSED);
+ }
+
+ @Override
+ public String getSettingsSummary() {
+ return ""; //$NON-NLS-1$
+ }
+
+ @Override
+ public void setDefaultSettings() {
+ settings.load(new NullSettingsStore());
+ }
+
+ @Override
+ public void load(ISettingsStore store) {
+ settings.load(store);
+ }
+
+ @Override
+ public void save(ISettingsStore store) {
+ settings.save(store);
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/streams/StreamsLauncherDelegate.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/streams/StreamsLauncherDelegate.java
new file mode 100644
index 00000000000..6e61ed4dd14
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/streams/StreamsLauncherDelegate.java
@@ -0,0 +1,106 @@
+/*******************************************************************************
+ * Copyright (c) 2015, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.streams;
+
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.Map;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.tm.internal.terminal.provisional.api.ISettingsStore;
+import org.eclipse.tm.internal.terminal.provisional.api.ITerminalConnector;
+import org.eclipse.tm.internal.terminal.provisional.api.TerminalConnectorExtension;
+import org.eclipse.tm.terminal.view.core.TerminalServiceFactory;
+import org.eclipse.tm.terminal.view.core.interfaces.ITerminalService;
+import org.eclipse.tm.terminal.view.core.interfaces.ITerminalServiceOutputStreamMonitorListener;
+import org.eclipse.tm.terminal.view.core.interfaces.constants.ITerminalsConnectorConstants;
+import org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanel;
+import org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanelContainer;
+import org.eclipse.tm.terminal.view.ui.internal.SettingsStore;
+import org.eclipse.tm.terminal.view.ui.launcher.AbstractLauncherDelegate;
+
+/**
+ * Streams launcher delegate implementation.
+ */
+public class StreamsLauncherDelegate extends AbstractLauncherDelegate {
+
+ @Override
+ public boolean needsUserConfiguration() {
+ return false;
+ }
+
+ @Override
+ public IConfigurationPanel getPanel(IConfigurationPanelContainer container) {
+ return null;
+ }
+
+ @Override
+ public void execute(Map<String, Object> properties, ITerminalService.Done done) {
+ Assert.isNotNull(properties);
+
+ // Get the terminal service
+ ITerminalService terminal = TerminalServiceFactory.getService();
+ // If not available, we cannot fulfill this request
+ if (terminal != null) {
+ terminal.openConsole(properties, done);
+ }
+ }
+
+ @Override
+ public ITerminalConnector createTerminalConnector(Map<String, Object> properties) {
+ Assert.isNotNull(properties);
+
+ // Check for the terminal connector id
+ String connectorId = (String) properties.get(ITerminalsConnectorConstants.PROP_TERMINAL_CONNECTOR_ID);
+ if (connectorId == null)
+ connectorId = "org.eclipse.tm.terminal.connector.streams.StreamsConnector"; //$NON-NLS-1$
+
+ // Extract the streams properties
+ OutputStream stdin = (OutputStream) properties.get(ITerminalsConnectorConstants.PROP_STREAMS_STDIN);
+ InputStream stdout = (InputStream) properties.get(ITerminalsConnectorConstants.PROP_STREAMS_STDOUT);
+ InputStream stderr = (InputStream) properties.get(ITerminalsConnectorConstants.PROP_STREAMS_STDERR);
+ Object value = properties.get(ITerminalsConnectorConstants.PROP_LOCAL_ECHO);
+ boolean localEcho = value instanceof Boolean ? ((Boolean) value).booleanValue() : false;
+ String lineSeparator = (String) properties.get(ITerminalsConnectorConstants.PROP_LINE_SEPARATOR);
+ ITerminalServiceOutputStreamMonitorListener[] stdoutListeners = (ITerminalServiceOutputStreamMonitorListener[]) properties
+ .get(ITerminalsConnectorConstants.PROP_STDOUT_LISTENERS);
+ ITerminalServiceOutputStreamMonitorListener[] stderrListeners = (ITerminalServiceOutputStreamMonitorListener[]) properties
+ .get(ITerminalsConnectorConstants.PROP_STDERR_LISTENERS);
+
+ // Construct the terminal settings store
+ ISettingsStore store = new SettingsStore();
+
+ // Construct the streams settings
+ StreamsSettings streamsSettings = new StreamsSettings();
+ streamsSettings.setStdinStream(stdin);
+ streamsSettings.setStdoutStream(stdout);
+ streamsSettings.setStderrStream(stderr);
+ streamsSettings.setLocalEcho(localEcho);
+ streamsSettings.setLineSeparator(lineSeparator);
+ streamsSettings.setStdOutListeners(stdoutListeners);
+ streamsSettings.setStdErrListeners(stderrListeners);
+ // And save the settings to the store
+ streamsSettings.save(store);
+
+ // Construct the terminal connector instance
+ ITerminalConnector connector = TerminalConnectorExtension.makeTerminalConnector(connectorId);
+ if (connector != null) {
+ // Apply default settings
+ connector.setDefaultSettings();
+ // And load the real settings
+ connector.load(store);
+ }
+
+ return connector;
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/streams/StreamsSettings.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/streams/StreamsSettings.java
new file mode 100644
index 00000000000..09aecaa893a
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/streams/StreamsSettings.java
@@ -0,0 +1,205 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.streams;
+
+import java.io.InputStream;
+import java.io.OutputStream;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.tm.internal.terminal.provisional.api.ISettingsStore;
+import org.eclipse.tm.terminal.view.core.interfaces.ITerminalServiceOutputStreamMonitorListener;
+import org.eclipse.tm.terminal.view.ui.internal.SettingsStore;
+
+/**
+ * Streams connector settings implementation.
+ */
+public class StreamsSettings {
+ // Reference to the stdin stream
+ private OutputStream stdin;
+ // Reference to the stdout stream
+ private InputStream stdout;
+ // Reference to the stderr stream
+ private InputStream stderr;
+ // Flag to control the local echo
+ private boolean localEcho = true;
+ // The line separator setting
+ private String lineSeparator = null;
+ // The list of stdout output listeners
+ private ITerminalServiceOutputStreamMonitorListener[] stdoutListeners = null;
+ // The list of stderr output listeners
+ private ITerminalServiceOutputStreamMonitorListener[] stderrListeners = null;
+
+ /**
+ * Sets the stdin stream instance.
+ *
+ * @param stdin The stream instance or <code>null</code>.
+ */
+ public void setStdinStream(OutputStream stdin) {
+ this.stdin = stdin;
+ }
+
+ /**
+ * Returns the stdin stream instance.
+ *
+ * @return The stream instance or <code>null</code>.
+ */
+ public OutputStream getStdinStream() {
+ return stdin;
+ }
+
+ /**
+ * Sets the stdout stream instance.
+ *
+ * @param stdout The stream instance or <code>null</code>.
+ */
+ public void setStdoutStream(InputStream stdout) {
+ this.stdout = stdout;
+ }
+
+ /**
+ * Returns the stdout stream instance.
+ *
+ * @return The stream instance or <code>null</code>.
+ */
+ public InputStream getStdoutStream() {
+ return stdout;
+ }
+
+ /**
+ * Sets the stderr stream instance.
+ *
+ * @param stderr The stream instance or <code>null</code>.
+ */
+ public void setStderrStream(InputStream stderr) {
+ this.stderr = stderr;
+ }
+
+ /**
+ * Returns the stderr stream instance.
+ *
+ * @return The stream instance or <code>null</code>.
+ */
+ public InputStream getStderrStream() {
+ return stderr;
+ }
+
+ /**
+ * Sets if the process requires a local echo from the terminal widget.
+ *
+ * @param value Specify <code>true</code> to enable the local echo, <code>false</code> otherwise.
+ */
+ public void setLocalEcho(boolean value) {
+ this.localEcho = value;
+ }
+
+ /**
+ * Returns <code>true</code> if the process requires a local echo
+ * from the terminal widget.
+ *
+ * @return <code>True</code> if local echo is enabled, <code>false</code> otherwise.
+ */
+ public boolean isLocalEcho() {
+ return localEcho;
+ }
+
+ /**
+ * Sets the stream line separator.
+ *
+ * @param separator The stream line separator <code>null</code>.
+ */
+ public void setLineSeparator(String separator) {
+ this.lineSeparator = separator;
+ }
+
+ /**
+ * Returns the stream line separator.
+ *
+ * @return The stream line separator or <code>null</code>.
+ */
+ public String getLineSeparator() {
+ return lineSeparator;
+ }
+
+ /**
+ * Sets the list of stdout listeners.
+ *
+ * @param listeners The list of stdout listeners or <code>null</code>.
+ */
+ public void setStdOutListeners(ITerminalServiceOutputStreamMonitorListener[] listeners) {
+ this.stdoutListeners = listeners;
+ }
+
+ /**
+ * Returns the list of stdout listeners.
+ *
+ * @return The list of stdout listeners or <code>null</code>.
+ */
+ public ITerminalServiceOutputStreamMonitorListener[] getStdOutListeners() {
+ return stdoutListeners;
+ }
+
+ /**
+ * Sets the list of stderr listeners.
+ *
+ * @param listeners The list of stderr listeners or <code>null</code>.
+ */
+ public void setStdErrListeners(ITerminalServiceOutputStreamMonitorListener[] listeners) {
+ this.stderrListeners = listeners;
+ }
+
+ /**
+ * Returns the list of stderr listeners.
+ *
+ * @return The list of stderr listeners or <code>null</code>.
+ */
+ public ITerminalServiceOutputStreamMonitorListener[] getStdErrListeners() {
+ return stderrListeners;
+ }
+
+ /**
+ * Loads the streams settings from the given settings store.
+ *
+ * @param store The settings store. Must not be <code>null</code>.
+ */
+ public void load(ISettingsStore store) {
+ Assert.isNotNull(store);
+ localEcho = Boolean.parseBoolean(store.get("LocalEcho", Boolean.FALSE.toString())); //$NON-NLS-1$
+ lineSeparator = store.get("LineSeparator", null); //$NON-NLS-1$
+ if (store instanceof SettingsStore) {
+ stdin = (OutputStream) ((SettingsStore) store).getSettings().get("stdin"); //$NON-NLS-1$
+ stdout = (InputStream) ((SettingsStore) store).getSettings().get("stdout"); //$NON-NLS-1$
+ stderr = (InputStream) ((SettingsStore) store).getSettings().get("stderr"); //$NON-NLS-1$
+ stdoutListeners = (ITerminalServiceOutputStreamMonitorListener[]) ((SettingsStore) store).getSettings()
+ .get("StdOutListeners"); //$NON-NLS-1$
+ stderrListeners = (ITerminalServiceOutputStreamMonitorListener[]) ((SettingsStore) store).getSettings()
+ .get("StdErrListeners"); //$NON-NLS-1$
+ }
+ }
+
+ /**
+ * Saves the process settings to the given settings store.
+ *
+ * @param store The settings store. Must not be <code>null</code>.
+ */
+ public void save(ISettingsStore store) {
+ Assert.isNotNull(store);
+ store.put("LocalEcho", Boolean.toString(localEcho)); //$NON-NLS-1$
+ store.put("LineSeparator", lineSeparator); //$NON-NLS-1$
+ if (store instanceof SettingsStore) {
+ ((SettingsStore) store).getSettings().put("stdin", stdin); //$NON-NLS-1$
+ ((SettingsStore) store).getSettings().put("stdout", stdout); //$NON-NLS-1$
+ ((SettingsStore) store).getSettings().put("stderr", stderr); //$NON-NLS-1$
+ ((SettingsStore) store).getSettings().put("StdOutListeners", stdoutListeners); //$NON-NLS-1$
+ ((SettingsStore) store).getSettings().put("StdErrListeners", stderrListeners); //$NON-NLS-1$
+ }
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/tabs/OpenFileMouseHandler.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/tabs/OpenFileMouseHandler.java
new file mode 100644
index 00000000000..c4ca8c8bd87
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/tabs/OpenFileMouseHandler.java
@@ -0,0 +1,271 @@
+/*******************************************************************************
+ * Copyright (c) 2021 Fabrizio Iannetti.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.tabs;
+
+import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.Adapters;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.jface.text.BadLocationException;
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.window.Window;
+import org.eclipse.swt.SWT;
+import org.eclipse.tm.internal.terminal.control.ITerminalMouseListener2;
+import org.eclipse.tm.internal.terminal.control.ITerminalViewControl;
+import org.eclipse.tm.internal.terminal.provisional.api.Logger;
+import org.eclipse.tm.terminal.model.ITerminalTextDataReadOnly;
+import org.eclipse.tm.terminal.view.ui.activator.UIPlugin;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPartSite;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.ide.IDE;
+import org.eclipse.ui.internal.ide.dialogs.OpenResourceDialog;
+import org.eclipse.ui.texteditor.IDocumentProvider;
+import org.eclipse.ui.texteditor.ITextEditor;
+import org.osgi.framework.Bundle;
+
+/**
+ * @noreference This class is not intended to be referenced by clients.
+ */
+public class OpenFileMouseHandler implements ITerminalMouseListener2 {
+ private static final boolean DEBUG_HOVER = UIPlugin.isOptionEnabled(Logger.TRACE_DEBUG_LOG_HOVER);
+ private static final List<String> NEEDED_BUNDLES = //
+ List.of("org.eclipse.core.resources", //$NON-NLS-1$
+ "org.eclipse.ui.ide", //$NON-NLS-1$
+ "org.eclipse.ui.editors", //$NON-NLS-1$
+ "org.eclipse.text"); //$NON-NLS-1$
+
+ private final ITerminalViewControl terminal;
+ private Pattern regex = Pattern.compile("(\\d*)(:(\\d*))?.*"); //$NON-NLS-1$
+ private IWorkbenchPartSite site;
+
+ /**
+ * Check if we have the bundles needed.
+ */
+ private boolean neededBundlesAvailable;
+
+ OpenFileMouseHandler(IWorkbenchPartSite site, ITerminalViewControl terminal) {
+ this.site = site;
+ this.terminal = terminal;
+ neededBundlesAvailable = true;
+ for (String bundleName : NEEDED_BUNDLES) {
+ if (!bundleAvailable(bundleName)) {
+ this.neededBundlesAvailable = false;
+ if (DEBUG_HOVER) {
+ System.out.format(
+ "hover: the %s bundle is not present, therefore full ctrl-click functionality is not available\n", //$NON-NLS-1$
+ bundleName);
+ }
+ }
+ }
+ if (neededBundlesAvailable && DEBUG_HOVER) {
+ System.out.format("hover: the bundles needed for full ctrl-click functionality are available\n"); //$NON-NLS-1$
+ }
+ }
+
+ @Override
+ public void mouseUp(ITerminalTextDataReadOnly terminalText, int line, int column, int button, int stateMask) {
+ if ((stateMask & SWT.MODIFIER_MASK) != SWT.MOD1) {
+ // Only handle Ctrl-click
+ return;
+ }
+ String textToOpen = terminal.getHoverSelection();
+ String lineAndCol = null;
+ if (textToOpen.length() > 0) {
+ try {
+ // if the selection looks like a web URL, open using the browser
+ if (textToOpen.startsWith("http://") || textToOpen.startsWith("https://")) { //$NON-NLS-1$//$NON-NLS-2$
+ try {
+ PlatformUI.getWorkbench().getBrowserSupport().createBrowser(null).openURL(new URL(textToOpen));
+ return;
+ } catch (MalformedURLException e) {
+ // not a valid URL, continue
+ }
+ }
+
+ // After this we need Eclipse IDE features. If we don't have them then we stop here.
+ if (!neededBundlesAvailable) {
+ return;
+ }
+
+ // extract the path from file:// URLs
+ if (textToOpen.startsWith("file://")) { //$NON-NLS-1$
+ textToOpen = textToOpen.substring(7);
+ }
+ // remove optional position info name:[row[:col]]
+ {
+ int startOfRowCol = textToOpen.indexOf(':');
+ if (startOfRowCol == 1 && textToOpen.length() > 2) {
+ // assume this is the device separator on Windows
+ startOfRowCol = textToOpen.indexOf(':', startOfRowCol + 1);
+ }
+ if (startOfRowCol >= 0) {
+ lineAndCol = textToOpen.substring(startOfRowCol + 1);
+ textToOpen = textToOpen.substring(0, startOfRowCol);
+ }
+ }
+ Optional<String> fullPath = Optional.empty();
+ if (!textToOpen.startsWith("/")) { //$NON-NLS-1$
+ // relative path: try to append to the working directory
+ Optional<String> workingDirectory = terminal.getTerminalConnector().getWorkingDirectory();
+ if (workingDirectory.isPresent()) {
+ fullPath = Optional.of(workingDirectory.get() + "/" + textToOpen);
+ }
+ }
+ // if the selection is a file location that maps to a resource
+ // open the resource
+ IFile fileForLocation = ResourcesPlugin.getWorkspace().getRoot()
+ .getFileForLocation(new Path(fullPath.orElse(textToOpen)));
+ if (fileForLocation != null && fileForLocation.exists()) {
+ IEditorPart editor = IDE.openEditor(
+ PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(), fileForLocation,
+ true);
+ goToLine(lineAndCol, editor);
+ return;
+ }
+ // try an external file, if it exists
+ File file = new File(fullPath.orElse(textToOpen));
+ if (file.exists() && !file.isDirectory()) {
+ try {
+ IEditorPart editor = IDE.openEditor(site.getPage(), file.toURI(),
+ IDE.getEditorDescriptor(file.getName(), true, true).getId(), true);
+ goToLine(lineAndCol, editor);
+ return;
+ } catch (Exception e) {
+ // continue
+ }
+ }
+ OpenResourceDialog openResourceDialog = new OpenResourceDialog(site.getShell(),
+ ResourcesPlugin.getPlugin().getWorkspace().getRoot(), IResource.FILE);
+ openResourceDialog.setInitialPattern(textToOpen);
+ if (openResourceDialog.open() != Window.OK)
+ return;
+ Object[] results = openResourceDialog.getResult();
+ List<IFile> files = new ArrayList<>();
+ for (Object result : results) {
+ if (result instanceof IFile) {
+ files.add((IFile) result);
+ }
+ }
+ if (files.size() > 0) {
+
+ final IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
+ if (window == null) {
+ throw new ExecutionException("no active workbench window"); //$NON-NLS-1$
+ }
+
+ final IWorkbenchPage page = window.getActivePage();
+ if (page == null) {
+ throw new ExecutionException("no active workbench page"); //$NON-NLS-1$
+ }
+
+ try {
+ for (IFile iFile : files) {
+ IEditorPart editor = IDE.openEditor(page, iFile, true);
+ goToLine(lineAndCol, editor);
+ }
+ } catch (final PartInitException e) {
+ throw new ExecutionException("error opening file in editor", e); //$NON-NLS-1$
+ }
+ }
+ } catch (IllegalArgumentException | NullPointerException | ExecutionException | PartInitException e) {
+ UIPlugin.log("Failed to activate OpenResourceDialog", e); //$NON-NLS-1$
+ }
+
+ }
+
+ }
+
+ private boolean bundleAvailable(String symbolicName) {
+ Bundle bundle = Platform.getBundle(symbolicName);
+ boolean available = bundle != null && bundle.getState() != Bundle.UNINSTALLED
+ && bundle.getState() != Bundle.STOPPING;
+ return available;
+ }
+
+ private void goToLine(String lineAndCol, IEditorPart editor) {
+ ITextEditor textEditor = Adapters.adapt(editor, ITextEditor.class);
+ if (textEditor != null) {
+ Optional<Integer> optionalOffset = getRegionFromLineAndCol(textEditor, lineAndCol);
+ optionalOffset.ifPresent(offset -> textEditor.selectAndReveal(offset, 0));
+ }
+ }
+
+ /**
+ * Returns the line information for the given line in the given editor
+ */
+ private Optional<Integer> getRegionFromLineAndCol(ITextEditor editor, String lineAndCol) {
+ if (lineAndCol == null) {
+ return Optional.empty();
+ }
+ Matcher matcher = regex.matcher(lineAndCol);
+ if (!matcher.matches()) {
+ return Optional.empty();
+ }
+ String lineStr = matcher.group(1);
+ String colStr = matcher.group(3);
+ int line;
+ int col = 0;
+ try {
+ line = Integer.parseInt(lineStr);
+ } catch (NumberFormatException e1) {
+ return Optional.empty();
+ }
+ try {
+ col = Integer.parseInt(colStr);
+ } catch (NumberFormatException e1) {
+ // if we can't get a column, go to the line alone
+ }
+ IDocumentProvider provider = editor.getDocumentProvider();
+ IEditorInput input = editor.getEditorInput();
+ try {
+ provider.connect(input);
+ } catch (CoreException e) {
+ return null;
+ }
+ try {
+ IDocument document = provider.getDocument(input);
+ if (document != null && line > 0) {
+ // document's lines are 0-offset
+ line = line - 1;
+ int lineOffset = document.getLineOffset(line);
+ if (col > 0) {
+ int lineLength = document.getLineLength(line);
+ if (col < lineLength) {
+ lineOffset += col;
+ }
+ }
+ return Optional.of(lineOffset);
+ }
+ } catch (BadLocationException e) {
+ } finally {
+ provider.disconnect(input);
+ }
+ return Optional.empty();
+ }
+} \ No newline at end of file
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/tabs/TabCommandFieldHandler.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/tabs/TabCommandFieldHandler.java
new file mode 100644
index 00000000000..87dc00ac1fd
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/tabs/TabCommandFieldHandler.java
@@ -0,0 +1,98 @@
+/*******************************************************************************
+ * Copyright (c) 2012, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.tabs;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.swt.custom.CTabItem;
+import org.eclipse.tm.internal.terminal.control.CommandInputFieldWithHistory;
+import org.eclipse.tm.internal.terminal.control.ITerminalViewControl;
+import org.eclipse.ui.services.IDisposable;
+
+/**
+ * Tab command input field handler implementation.
+ */
+public class TabCommandFieldHandler implements IDisposable, IAdaptable {
+ // Reference to the parent tab folder manager
+ private final TabFolderManager tabFolderManager;
+ // Reference to the associated tab
+ private final CTabItem item;
+
+ // Reference to the command input field
+ private CommandInputFieldWithHistory field;
+ // The command field history
+ private String history;
+
+ /**
+ * Constructor.
+ *
+ * @param tabFolderManager The parent tab folder manager. Must not be <code>null</code>
+ * @param item The associated tab item. Must not be <code>null</code>.
+ */
+ public TabCommandFieldHandler(TabFolderManager tabFolderManager, CTabItem item) {
+ Assert.isNotNull(tabFolderManager);
+ this.tabFolderManager = tabFolderManager;
+ Assert.isNotNull(item);
+ this.item = item;
+ }
+
+ @Override
+ public void dispose() {
+ field = null;
+ history = null;
+ }
+
+ @Override
+ public <T> T getAdapter(Class<T> adapter) {
+ if (TabFolderManager.class.equals(adapter)) {
+ return adapter.cast(tabFolderManager);
+ }
+ if (CTabItem.class.equals(adapter)) {
+ return adapter.cast(item);
+ }
+ return null;
+ }
+
+ /**
+ * Returns if or if not the associated tab item has the command input field enabled.
+ *
+ * @return <code>True</code> if the command input field is enabled, <code>false</code> otherwise.
+ */
+ public boolean hasCommandInputField() {
+ return field != null;
+ }
+
+ /**
+ * Set the command input field on or off.
+ *
+ * @param on <code>True</code> for on, <code>false</code> for off.
+ */
+ public void setCommandInputField(boolean on) {
+ // save the old history
+ if (field != null) {
+ history = field.getHistory();
+ field = null;
+ }
+
+ if (on) {
+ field = new CommandInputFieldWithHistory(100);
+ field.setHistory(history);
+ }
+
+ // Apply to the terminal control
+ Assert.isTrue(!item.isDisposed());
+ ITerminalViewControl terminal = (ITerminalViewControl) item.getData();
+ if (terminal != null)
+ terminal.setCommandInputField(field);
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/tabs/TabDisposeListener.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/tabs/TabDisposeListener.java
new file mode 100644
index 00000000000..9cd937e46ba
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/tabs/TabDisposeListener.java
@@ -0,0 +1,83 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.tabs;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.swt.custom.CTabItem;
+import org.eclipse.swt.events.DisposeEvent;
+import org.eclipse.swt.events.DisposeListener;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.tm.internal.terminal.control.ITerminalViewControl;
+import org.eclipse.tm.terminal.view.core.TerminalServiceFactory;
+import org.eclipse.tm.terminal.view.core.interfaces.ITerminalService;
+import org.eclipse.tm.terminal.view.ui.services.TerminalService;
+
+/**
+ * Terminal tab default dispose listener implementation.
+ */
+public class TabDisposeListener implements DisposeListener {
+ private final TabFolderManager parentTabFolderManager;
+
+ /**
+ * Constructor.
+ *
+ * @param parentTabFolderManager The parent tab folder manager. Must not be <code>null</code>
+ */
+ public TabDisposeListener(TabFolderManager parentTabFolderManager) {
+ Assert.isNotNull(parentTabFolderManager);
+ this.parentTabFolderManager = parentTabFolderManager;
+ }
+
+ /**
+ * Returns the parent terminal console tab folder manager instance.
+ *
+ * @return The parent terminal console tab folder manager instance.
+ */
+ protected final TabFolderManager getParentTabFolderManager() {
+ return parentTabFolderManager;
+ }
+
+ @Override
+ public void widgetDisposed(DisposeEvent e) {
+ // If a tab item gets disposed, we have to dispose the terminal as well
+ if (e.getSource() instanceof CTabItem) {
+ // Get the terminal control (if any) from the tab item
+ Object candidate = ((CTabItem) e.getSource()).getData();
+ if (candidate instanceof ITerminalViewControl) {
+ ITerminalViewControl terminal = (ITerminalViewControl) candidate;
+ // Keep the context menu from being disposed
+ terminal.getControl().setMenu(null);
+ terminal.disposeTerminal();
+ }
+ // Dispose the command input field handler
+ parentTabFolderManager.disposeTabCommandFieldHandler((CTabItem) e.getSource());
+ // Dispose the tab item control
+ Control control = ((CTabItem) e.getSource()).getControl();
+ if (control != null)
+ control.dispose();
+
+ // If all items got removed, we have to switch back to the empty page control
+ if (parentTabFolderManager.getTabFolder() != null
+ && parentTabFolderManager.getTabFolder().getItemCount() == 0) {
+ parentTabFolderManager.getParentView().switchToEmptyPageControl();
+ }
+ // Fire selection changed event
+ parentTabFolderManager.fireSelectionChanged();
+ // Fire the terminal console disposed event
+ ITerminalService service = TerminalServiceFactory.getService();
+ if (service instanceof TerminalService) {
+ ((TerminalService) service).fireTerminalTabEvent(TerminalService.TAB_DISPOSED, e.getSource(),
+ ((CTabItem) e.getSource()).getData("customData")); //$NON-NLS-1$
+ }
+ }
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/tabs/TabFolderManager.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/tabs/TabFolderManager.java
new file mode 100644
index 00000000000..955b782e37e
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/tabs/TabFolderManager.java
@@ -0,0 +1,878 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.tabs;
+
+import java.nio.charset.Charset;
+import java.nio.charset.UnsupportedCharsetException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.PlatformObject;
+import org.eclipse.jface.action.IStatusLineManager;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CTabFolder;
+import org.eclipse.swt.custom.CTabItem;
+import org.eclipse.swt.dnd.Clipboard;
+import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.TextTransfer;
+import org.eclipse.swt.events.DisposeEvent;
+import org.eclipse.swt.events.DisposeListener;
+import org.eclipse.swt.events.MouseAdapter;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.events.MouseListener;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.tm.internal.terminal.control.ITerminalListener;
+import org.eclipse.tm.internal.terminal.control.ITerminalViewControl;
+import org.eclipse.tm.internal.terminal.control.TerminalViewControlFactory;
+import org.eclipse.tm.internal.terminal.provisional.api.ITerminalConnector;
+import org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl;
+import org.eclipse.tm.internal.terminal.provisional.api.TerminalState;
+import org.eclipse.tm.terminal.view.core.interfaces.constants.ITerminalsConnectorConstants;
+import org.eclipse.tm.terminal.view.ui.activator.UIPlugin;
+import org.eclipse.tm.terminal.view.ui.interfaces.ITerminalsView;
+import org.eclipse.tm.terminal.view.ui.interfaces.ImageConsts;
+import org.eclipse.tm.terminal.view.ui.nls.Messages;
+import org.eclipse.ui.PlatformUI;
+
+/**
+ * Terminal tab folder manager.
+ */
+public class TabFolderManager extends PlatformObject implements ISelectionProvider {
+ // Reference to the parent terminal consoles view
+ private final ITerminalsView parentView;
+ // Reference to the selection listener instance
+ private final SelectionListener selectionListener;
+
+ /**
+ * List of selection changed listeners.
+ */
+ private final List<ISelectionChangedListener> selectionChangedListeners = new ArrayList<>();
+
+ /**
+ * Map of tab command input field handler per tab item
+ */
+ private final Map<CTabItem, TabCommandFieldHandler> commandFieldHandler = new HashMap<>();
+
+ /**
+ * The terminal control selection listener implementation.
+ */
+ private class TerminalControlSelectionListener implements DisposeListener, MouseListener {
+ private final ITerminalViewControl terminal;
+ private boolean selectMode;
+
+ /**
+ * Constructor.
+ *
+ * @param terminal The terminal control. Must not be <code>null</code>.
+ */
+ public TerminalControlSelectionListener(ITerminalViewControl terminal) {
+ Assert.isNotNull(terminal);
+ this.terminal = terminal;
+
+ // Register ourself as the required listener
+ terminal.getControl().addDisposeListener(this);
+ terminal.getControl().addMouseListener(this);
+ }
+
+ /**
+ * Returns the associated terminal view control.
+ *
+ * @return The terminal view control.
+ */
+ protected final ITerminalViewControl getTerminal() {
+ return terminal;
+ }
+
+ @Override
+ public void widgetDisposed(DisposeEvent e) {
+ // Widget got disposed, check if it is ours
+ // If a tab item gets disposed, we have to dispose the terminal as well
+ if (e.getSource().equals(terminal.getControl())) {
+ // Remove as listener
+ getTerminal().getControl().removeDisposeListener(this);
+ getTerminal().getControl().removeMouseListener(this);
+ }
+ }
+
+ @Override
+ public void mouseDown(MouseEvent e) {
+ // Left button down -> select mode starts
+ if (e.button == 1)
+ selectMode = true;
+ }
+
+ @Override
+ public void mouseUp(MouseEvent e) {
+ if (e.button == 1 && selectMode) {
+ selectMode = false;
+ // Fire a selection changed event with the terminal controls selection
+ try {
+ Display display = PlatformUI.getWorkbench().getDisplay();
+ display.asyncExec(
+ () -> fireSelectionChanged(new StructuredSelection(getTerminal().getSelection())));
+ } catch (Exception ex) {
+ // if display is disposed, silently ignore.
+ }
+ }
+ }
+
+ @Override
+ public void mouseDoubleClick(MouseEvent e) {
+ }
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param parentView The parent terminals console view. Must not be <code>null</code>.
+ */
+ public TabFolderManager(ITerminalsView parentView) {
+ super();
+ Assert.isNotNull(parentView);
+ this.parentView = parentView;
+
+ // Attach a selection listener to the tab folder
+ selectionListener = doCreateTabFolderSelectionListener(this);
+ if (getTabFolder() != null)
+ getTabFolder().addSelectionListener(selectionListener);
+ }
+
+ /**
+ * Creates the terminal console tab folder selection listener instance.
+ *
+ * @param parent The parent terminal console tab folder manager. Must not be <code>null</code>.
+ * @return The selection listener instance.
+ */
+ protected TabFolderSelectionListener doCreateTabFolderSelectionListener(TabFolderManager parent) {
+ Assert.isNotNull(parent);
+ return new TabFolderSelectionListener(parent);
+ }
+
+ /**
+ * Returns the parent terminal consoles view.
+ *
+ * @return The terminal consoles view instance.
+ */
+ protected final ITerminalsView getParentView() {
+ return parentView;
+ }
+
+ /**
+ * Returns the tab folder associated with the parent view.
+ *
+ * @return The tab folder or <code>null</code>.
+ */
+ protected final CTabFolder getTabFolder() {
+ return getParentView().getAdapter(CTabFolder.class);
+ }
+
+ /**
+ * Returns the selection changed listeners currently registered.
+ *
+ * @return The registered selection changed listeners or an empty array.
+ */
+ protected final ISelectionChangedListener[] getSelectionChangedListeners() {
+ return selectionChangedListeners.toArray(new ISelectionChangedListener[selectionChangedListeners.size()]);
+ }
+
+ /**
+ * Dispose the tab folder manager instance.
+ */
+ public void dispose() {
+ // Dispose the selection listener
+ if (getTabFolder() != null && !getTabFolder().isDisposed())
+ getTabFolder().removeSelectionListener(selectionListener);
+ // Dispose the tab command field handler
+ for (TabCommandFieldHandler handler : commandFieldHandler.values()) {
+ handler.dispose();
+ }
+ commandFieldHandler.clear();
+ }
+
+ /**
+ * Creates a new tab item with the given title and connector.
+ *
+ * @param title The tab title. Must not be <code>null</code>.
+ * @param encoding The terminal encoding or <code>null</code>.
+ * @param connector The terminal connector. Must not be <code>null</code>.
+ * @param data The custom terminal data node or <code>null</code>.
+ * @param flags The flags controlling how the console is opened or <code>null</code> to use defaults.
+ *
+ * @return The created tab item or <code>null</code> if failed.
+ */
+ @SuppressWarnings({ "unused" })
+ public CTabItem createTabItem(String title, String encoding, ITerminalConnector connector, Object data,
+ Map<String, Boolean> flags) {
+ Assert.isNotNull(title);
+ Assert.isNotNull(connector);
+
+ // The result tab item
+ CTabItem item = null;
+
+ // Get the tab folder from the parent viewer
+ CTabFolder tabFolder = getTabFolder();
+ if (tabFolder != null) {
+ // Generate a unique title string for the new tab item (must be called before creating the item itself)
+ title = makeUniqueTitle(title, tabFolder);
+ // Create the tab item
+ item = new CTabItem(tabFolder, SWT.CLOSE);
+ // Set the tab item title
+ item.setText(title);
+ // Set the tab icon
+ Image image = getTabItemImage(connector, data);
+ if (image != null)
+ item.setImage(image);
+
+ // Setup the tab item listeners
+ setupTerminalTabListeners(item);
+
+ // Create the composite to create the terminal control within
+ Composite composite = new Composite(tabFolder, SWT.NONE);
+ composite.setLayout(new FillLayout());
+ // Associate the composite with the tab item
+ item.setControl(composite);
+
+ // Refresh the layout
+ tabFolder.getParent().layout(true);
+
+ // Create the terminal control
+ ITerminalViewControl terminal = TerminalViewControlFactory.makeControl(
+ doCreateTerminalTabTerminalListener(this, item), composite, new ITerminalConnector[] { connector },
+ true);
+ if (terminal instanceof ITerminalControl) {
+ Object value = flags != null ? flags.get(ITerminalsConnectorConstants.PROP_DATA_NO_RECONNECT) : null;
+ boolean noReconnect = value instanceof Boolean ? ((Boolean) value).booleanValue() : false;
+ ((ITerminalControl) terminal).setConnectOnEnterIfClosed(!noReconnect);
+ }
+
+ // Add middle mouse button paste support
+ addMiddleMouseButtonPasteSupport(terminal);
+
+ // add support to open resource on ctrl/meta + mouse click
+ addOpenResourceSupport(terminal);
+
+ // Add the "selection" listener to the terminal control
+ new TerminalControlSelectionListener(terminal);
+ // Configure the terminal encoding
+ try {
+ Charset charset = null;
+ if (encoding != null) {
+ charset = Charset.forName(encoding);
+ }
+ terminal.setCharset(charset);
+ } catch (UnsupportedCharsetException e) {
+ /* ignored on purpose */
+ }
+ // Associated the terminal with the tab item
+ item.setData(terminal);
+ // Associated the custom data node with the tab item (if any)
+ if (data != null)
+ item.setData("customData", data); //$NON-NLS-1$
+
+ // Overwrite the text canvas help id
+ String contextHelpId = getParentView().getContextHelpId();
+ if (contextHelpId != null) {
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(terminal.getControl(), contextHelpId);
+ }
+
+ // Set the context menu
+ TabFolderMenuHandler menuHandler = getParentView().getAdapter(TabFolderMenuHandler.class);
+ if (menuHandler != null) {
+ Menu menu = menuHandler.getAdapter(Menu.class);
+ if (menu != null) {
+ // One weird occurrence of IllegalArgumentException: Widget has wrong parent.
+ // Inspecting the code, this seem extremely unlikely. The terminal is created
+ // from a composite parent, the composite parent from the tab folder and the menu
+ // from the tab folder. Means, at the end all should have the same menu shell, shouldn't they?
+ try {
+ terminal.getControl().setMenu(menu);
+ } catch (IllegalArgumentException e) {
+ // Log exception only if debug mode is set to 1.
+ if (UIPlugin.getTraceHandler().isSlotEnabled(1, null)) {
+ e.printStackTrace();
+ }
+ }
+ }
+ }
+
+ // Select the created item within the tab folder
+ tabFolder.setSelection(item);
+
+ // Set the connector
+ terminal.setConnector(connector);
+
+ // And connect the terminal
+ terminal.connectTerminal();
+
+ // Fire selection changed event
+ fireSelectionChanged();
+ }
+
+ // Return the create tab item finally.
+ return item;
+ }
+
+ private void addOpenResourceSupport(ITerminalViewControl terminal) {
+ terminal.addMouseListener(new OpenFileMouseHandler(getParentView().getSite(), terminal));
+ }
+
+ /**
+ * Used for DnD of terminal tab items between terminal views
+ * <p>
+ * Create a new tab item in the "dropped" terminal view using the
+ * information stored in the given item.
+ *
+ * @param oldItem The old dragged tab item. Must not be <code>null</code>.
+ * @return The new dropped tab item.
+ */
+ @SuppressWarnings({ "unchecked" })
+ public CTabItem cloneTabItemAfterDrop(CTabItem oldItem) {
+ Assert.isNotNull(oldItem);
+
+ ITerminalViewControl terminal = (ITerminalViewControl) oldItem.getData();
+ ITerminalConnector connector = terminal.getTerminalConnector();
+ Object data = oldItem.getData("customData"); //$NON-NLS-1$
+ Map<String, Object> properties = (Map<String, Object>) oldItem.getData("properties"); //$NON-NLS-1$
+ String title = oldItem.getText();
+
+ // The result tab item
+ CTabItem item = null;
+
+ // Get the tab folder from the parent viewer
+ CTabFolder tabFolder = getTabFolder();
+ if (tabFolder != null) {
+ // Generate a unique title string for the new tab item (must be called before creating the item itself)
+ title = makeUniqueTitle(title, tabFolder);
+ // Create the tab item
+ item = new CTabItem(tabFolder, SWT.CLOSE);
+ // Set the tab item title
+ item.setText(title);
+ // Set the tab icon
+ Image image = getTabItemImage(connector, data);
+ if (image != null)
+ item.setImage(image);
+
+ // Setup the tab item listeners
+ setupTerminalTabListeners(item);
+ // Move the terminal listener to the new item
+ TabTerminalListener.move(oldItem, item);
+
+ // Create the composite to create the terminal control within
+ Composite composite = new Composite(tabFolder, SWT.NONE);
+ composite.setLayout(new FillLayout());
+ // Associate the composite with the tab item
+ item.setControl(composite);
+
+ // Refresh the layout
+ tabFolder.getParent().layout(true);
+
+ // Remember terminal state
+ TerminalState oldState = terminal.getState();
+
+ // Keep the context menu from being disposed
+ terminal.getControl().setMenu(null);
+
+ // change the "parent".
+ Assert.isTrue(terminal instanceof ITerminalControl);
+ ((ITerminalControl) terminal).setupTerminal(composite);
+
+ // Add middle mouse button paste support
+ addMiddleMouseButtonPasteSupport(terminal);
+
+ item.setData(terminal);
+
+ // Associate the custom data node with the tab item (if any)
+ if (data != null)
+ item.setData("customData", data); //$NON-NLS-1$
+ // Associate the properties with the tab item (if any)
+ if (properties != null)
+ item.setData("properties", properties); //$NON-NLS-1$
+
+ // Overwrite the text canvas help id
+ String contextHelpId = getParentView().getContextHelpId();
+ if (contextHelpId != null) {
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(terminal.getControl(), contextHelpId);
+ }
+
+ // Set the context menu
+ TabFolderMenuHandler menuHandler = getParentView().getAdapter(TabFolderMenuHandler.class);
+ if (menuHandler != null) {
+ Menu menu = menuHandler.getAdapter(Menu.class);
+ if (menu != null) {
+ // One weird occurrence of IllegalArgumentException: Widget has wrong parent.
+ // Inspecting the code, this seem extremely unlikely. The terminal is created
+ // from a composite parent, the composite parent from the tab folder and the menu
+ // from the tab folder. Means, at the end all should have the same menu shell, shouldn't they?
+ try {
+ terminal.getControl().setMenu(menu);
+ } catch (IllegalArgumentException e) {
+ // Log exception only if debug mode is set to 1.
+ if (UIPlugin.getTraceHandler().isSlotEnabled(1, null)) {
+ e.printStackTrace();
+ }
+ }
+ }
+ }
+
+ // Select the created item within the tab folder
+ tabFolder.setSelection(item);
+
+ // Set the connector
+ terminal.setConnector(connector);
+
+ // needed to get the focus and cursor
+ Assert.isTrue(terminal instanceof ITerminalControl);
+ ((ITerminalControl) terminal).setState(oldState);
+
+ // Fire selection changed event
+ fireSelectionChanged();
+ }
+
+ // Return the create tab item finally.
+ return item;
+ }
+
+ protected void addMiddleMouseButtonPasteSupport(final ITerminalViewControl terminal) {
+ terminal.getControl().addMouseListener(new MouseAdapter() {
+ @Override
+ public void mouseDown(MouseEvent e) {
+ // paste when the middle button is clicked
+ if (e.button == 2) {
+ Clipboard clipboard = terminal.getClipboard();
+ if (clipboard.isDisposed())
+ return;
+ int clipboardType = DND.SELECTION_CLIPBOARD;
+ if (clipboard.getAvailableTypes(clipboardType).length == 0)
+ // use normal clipboard if selection clipboard is not available
+ clipboardType = DND.CLIPBOARD;
+ String text = (String) clipboard.getContents(TextTransfer.getInstance(), clipboardType);
+ if (text != null && text.length() > 0)
+ terminal.pasteString(text);
+ }
+ }
+ });
+ }
+
+ /**
+ * Generate a unique title string based on the given proposal.
+ *
+ * @param proposal The proposal. Must not be <code>null</code>.
+ * @return The unique title string.
+ */
+ protected String makeUniqueTitle(String proposal, CTabFolder tabFolder) {
+ Assert.isNotNull(proposal);
+ Assert.isNotNull(tabFolder);
+
+ String title = proposal;
+ int index = 0;
+
+ // Loop all existing tab items and check the titles. We have to remember
+ // all found titles as modifying the proposal might in turn conflict again
+ // with the title of a tab already checked.
+ List<String> titles = new ArrayList<>();
+ for (CTabItem item : tabFolder.getItems()) {
+ // Get the tab item title
+ titles.add(item.getText());
+ }
+ // Make the proposal unique be appending (<n>) against all known titles.
+ while (titles.contains(title))
+ title = proposal + " (" + ++index + ")"; //$NON-NLS-1$ //$NON-NLS-2$
+
+ return title;
+ }
+
+ /**
+ * Setup the terminal console tab item listeners.
+ *
+ * @param item The tab item. Must not be <code>null</code>.
+ */
+ protected void setupTerminalTabListeners(final CTabItem item) {
+ Assert.isNotNull(item);
+
+ // Create and associate the disposal listener
+ DisposeListener disposeListener = doCreateTerminalTabDisposeListener(this);
+
+ // store the listener to make access easier e.g. needed in DnD
+ item.setData("disposeListener", disposeListener); //$NON-NLS-1$
+ item.addDisposeListener(disposeListener);
+ }
+
+ /**
+ * Creates a new terminal console tab terminal listener instance.
+ *
+ * @param tabFolderManager The tab folder manager. Must not be <code>null</code>.
+ * @param item The tab item. Must not be <code>null</code>.
+ *
+ * @return The terminal listener instance.
+ */
+ protected ITerminalListener doCreateTerminalTabTerminalListener(TabFolderManager tabFolderManager, CTabItem item) {
+ Assert.isNotNull(item);
+ return new TabTerminalListener(tabFolderManager, item);
+ }
+
+ /**
+ * Creates a new terminal console tab dispose listener instance.
+ *
+ * @param parent The parent terminal console tab folder manager. Must not be <code>null</code>.
+ * @return The dispose listener instance.
+ */
+ protected DisposeListener doCreateTerminalTabDisposeListener(TabFolderManager parent) {
+ Assert.isNotNull(parent);
+ return new TabDisposeListener(parent);
+ }
+
+ /**
+ * Returns the tab item image.
+ *
+ * @param connector The terminal connector. Must not be <code>null</code>.
+ * @param data The custom terminal data node or <code>null</code>.
+ *
+ * @return The tab item image or <code>null</code>.
+ */
+ protected Image getTabItemImage(ITerminalConnector connector, Object data) {
+ Assert.isNotNull(connector);
+ return UIPlugin.getImage(ImageConsts.VIEW_Terminals);
+ }
+
+ /**
+ * Lookup a tab item with the given title and the given terminal connector.
+ * <p>
+ * <b>Note:</b> The method will handle unified tab item titles itself.
+ *
+ * @param title The tab item title. Must not be <code>null</code>.
+ * @param connector The terminal connector. Must not be <code>null</code>.
+ * @param data The custom terminal data node or <code>null</code>.
+ *
+ * @return The corresponding tab item or <code>null</code>.
+ */
+ public CTabItem findTabItem(String title, ITerminalConnector connector, Object data) {
+ Assert.isNotNull(title);
+ Assert.isNotNull(connector);
+
+ // Get the tab folder
+ CTabFolder tabFolder = getTabFolder();
+ if (tabFolder == null)
+ return null;
+
+ // Loop all existing tab items and try to find a matching title
+ for (CTabItem item : tabFolder.getItems()) {
+ // Disposed items cannot be matched
+ if (item.isDisposed())
+ continue;
+ // Get the title from the current tab item
+ String itemTitle = item.getText();
+ // The terminal console state might be signaled to the user via the
+ // terminal console tab title. Filter out any prefix "<.*>\s*".
+ itemTitle = itemTitle.replaceFirst("^<.*>\\s*", ""); //$NON-NLS-1$ //$NON-NLS-2$
+ if (itemTitle.startsWith(title)) {
+ // The title string matches -> double check with the terminal connector
+ ITerminalViewControl terminal = (ITerminalViewControl) item.getData();
+ ITerminalConnector connector2 = terminal.getTerminalConnector();
+ // If the connector id and name matches -> check on the settings
+ if (connector.getId().equals(connector2.getId()) && connector.getName().equals(connector2.getName())) {
+ if (!connector.isInitialized()) {
+ // an uninitialized connector does not yield a sensible summary
+ return item;
+ }
+ String summary = connector.getSettingsSummary();
+ String summary2 = connector2.getSettingsSummary();
+ // If we have matching settings -> we've found the matching item
+ if (summary.equals(summary2))
+ return item;
+ }
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * Make the given tab item the active tab and bring the tab to the top.
+ *
+ * @param item The tab item. Must not be <code>null</code>.
+ */
+ public void bringToTop(CTabItem item) {
+ Assert.isNotNull(item);
+
+ // Get the tab folder
+ CTabFolder tabFolder = getTabFolder();
+ if (tabFolder == null)
+ return;
+
+ // Set the given tab item as selection to the tab folder
+ tabFolder.setSelection(item);
+ // Fire selection changed event
+ fireSelectionChanged();
+ }
+
+ /**
+ * Returns the currently active tab.
+ *
+ * @return The active tab item or <code>null</code> if none.
+ */
+ public CTabItem getActiveTabItem() {
+ // Get the tab folder
+ CTabFolder tabFolder = getTabFolder();
+ if (tabFolder == null)
+ return null;
+
+ return tabFolder.getSelection();
+ }
+
+ /**
+ * Remove all terminated tab items.
+ */
+ public void removeTerminatedItems() {
+ // Get the tab folder
+ CTabFolder tabFolder = getTabFolder();
+ if (tabFolder == null)
+ return;
+
+ // Loop the items and check for terminated status
+ for (CTabItem item : tabFolder.getItems()) {
+ // Disposed items cannot be matched
+ if (item.isDisposed())
+ continue;
+ // Check if the item is terminated
+ if (isTerminatedTabItem(item)) {
+ // item is terminated -> dispose
+ item.dispose();
+ }
+ }
+ }
+
+ /**
+ * Checks if the given tab item represents a terminated console. Subclasses may
+ * overwrite this method to extend the definition of terminated.
+ *
+ * @param item The tab item or <code>null</code>.
+ * @return <code>True</code> if the tab item represents a terminated console, <code>false</code> otherwise.
+ */
+ protected boolean isTerminatedTabItem(CTabItem item) {
+ // Null items or disposed items cannot be matched
+ if (item == null || item.isDisposed())
+ return false;
+
+ // First, match the item title. If it contains "<terminated>", the item can be removed
+ String itemTitle = item.getText();
+ if (itemTitle != null && itemTitle.contains("<terminated>")) { //$NON-NLS-1$
+ return true;
+ }
+ // Second, check if the associated terminal control is closed
+ // The title string matches -> double check with the terminal connector
+ ITerminalViewControl terminal = (ITerminalViewControl) item.getData();
+ if (terminal != null && terminal.getState() == TerminalState.CLOSED) {
+ return true;
+ }
+
+ return false;
+ }
+
+ /**
+ * Returns the command input field handler for the given tab item.
+ *
+ * @param item The tab item or <code>null</code>.
+ * @return The command input field handler or <code>null</code>.
+ */
+ public final TabCommandFieldHandler getTabCommandFieldHandler(CTabItem item) {
+ // Null items or disposed items cannot be matched
+ if (item == null || item.isDisposed())
+ return null;
+
+ TabCommandFieldHandler handler = commandFieldHandler.get(item);
+ if (handler == null) {
+ handler = createTabCommandFieldHandler(this, item);
+ Assert.isNotNull(handler);
+ commandFieldHandler.put(item, handler);
+ }
+ return handler;
+ }
+
+ /**
+ * Create the command input field handler for the given tab item.
+ *
+ * @param tabFolderManager The parent tab folder manager. Must not be <code>null</code>
+ * @param item The associated tab item. Must not be <code>null</code>.
+ *
+ * @return The command input field handler. Must not be <code>null</code>.
+ *
+ * @since 4.1
+ */
+ protected TabCommandFieldHandler createTabCommandFieldHandler(TabFolderManager tabFolderManager, CTabItem item) {
+ return new TabCommandFieldHandler(tabFolderManager, item);
+ }
+
+ /**
+ * Dispose the command input field handler for the given tab item.
+ *
+ * @param item The tab item or <code>null</code>.
+ */
+ protected void disposeTabCommandFieldHandler(CTabItem item) {
+ // Null items or disposed items cannot be matched
+ if (item == null || item.isDisposed())
+ return;
+
+ TabCommandFieldHandler handler = commandFieldHandler.remove(item);
+ if (handler != null)
+ handler.dispose();
+ }
+
+ @Override
+ public void addSelectionChangedListener(ISelectionChangedListener listener) {
+ if (listener != null && !selectionChangedListeners.contains(listener))
+ selectionChangedListeners.add(listener);
+ }
+
+ @Override
+ public void removeSelectionChangedListener(ISelectionChangedListener listener) {
+ if (listener != null)
+ selectionChangedListeners.remove(listener);
+ }
+
+ @Override
+ public ISelection getSelection() {
+ CTabItem activeTabItem = getActiveTabItem();
+ return activeTabItem != null ? new StructuredSelection(activeTabItem) : new StructuredSelection();
+ }
+
+ @Override
+ public void setSelection(ISelection selection) {
+ if (selection instanceof IStructuredSelection && !selection.isEmpty()) {
+ // The first selection element which is a CTabItem will become the active item
+ Iterator<?> iterator = ((IStructuredSelection) selection).iterator();
+ while (iterator.hasNext()) {
+ Object candidate = iterator.next();
+ if (candidate instanceof CTabItem) {
+ bringToTop((CTabItem) candidate);
+ return;
+ }
+ }
+ }
+ // fire a changed event in any case
+ fireSelectionChanged(selection);
+ }
+
+ /**
+ * Fire the selection changed event to the registered listeners.
+ */
+ protected void fireSelectionChanged() {
+ updateStatusLine();
+ fireSelectionChanged(getSelection());
+ }
+
+ /**
+ * Fire the selection changed event with the terminal text!
+ * to the registered listeners.
+ * see also TerminalControlSelectionListener- mouseUp
+ *
+ * @since 4.1
+ */
+ protected void fireTerminalSelectionChanged() {
+ updateStatusLine();
+ CTabItem item = getActiveTabItem();
+ if (item != null && !item.isDisposed()) {
+ ITerminalViewControl terminal = (ITerminalViewControl) item.getData();
+ if (terminal != null && !terminal.isDisposed()) {
+ fireSelectionChanged(new StructuredSelection(terminal.getSelection()));
+ }
+ }
+ }
+
+ /**
+ * Fire the selection changed event to the registered listeners.
+ */
+ protected final void fireSelectionChanged(ISelection selection) {
+ // Create the selection changed event
+ SelectionChangedEvent event = new SelectionChangedEvent(TabFolderManager.this, selection);
+
+ // First, invoke the registered listeners and let them do their job
+ for (ISelectionChangedListener listener : selectionChangedListeners) {
+ listener.selectionChanged(event);
+ }
+ }
+
+ /**
+ * Update the parent view status line.
+ */
+ public final void updateStatusLine() {
+ String message = null;
+ IStatusLineManager manager = parentView.getViewSite().getActionBars().getStatusLineManager();
+
+ CTabItem item = getActiveTabItem();
+ if (item != null && !item.isDisposed()) {
+ ITerminalViewControl terminal = (ITerminalViewControl) item.getData();
+ if (terminal != null && !terminal.isDisposed()) {
+ StringBuilder buffer = new StringBuilder();
+
+ buffer.append(state2msg(item, terminal.getState()));
+ buffer.append(" - "); //$NON-NLS-1$
+
+ String encoding = terminal.getEncoding();
+ if (encoding == null || "ISO-8859-1".equals(encoding)) { //$NON-NLS-1$
+ encoding = "Default (ISO-8859-1)"; //$NON-NLS-1$
+ }
+ buffer.append(NLS.bind(Messages.TabFolderManager_encoding, encoding));
+
+ message = buffer.toString();
+ }
+ }
+
+ manager.setMessage(message);
+ }
+
+ /**
+ * Returns the string representation of the given terminal state.
+ *
+ * @param item The tab folder item. Must not be <code>null</code>.
+ * @param state The terminal state. Must not be <code>null</code>.
+ *
+ * @return The string representation.
+ */
+ @SuppressWarnings("unchecked")
+ protected String state2msg(CTabItem item, TerminalState state) {
+ Assert.isNotNull(item);
+ Assert.isNotNull(state);
+
+ // Determine the terminal properties of the tab folder
+ Map<String, Object> properties = (Map<String, Object>) item.getData("properties"); //$NON-NLS-1$
+
+ // Get he current terminal state as string
+ String stateStr = state.toString();
+ // Lookup a matching text representation of the state
+ String key = "TabFolderManager_state_" + stateStr.replaceAll("\\.", " ").trim().toLowerCase(); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ String stateMsg = null;
+ if (properties != null)
+ stateMsg = properties.get(key) instanceof String ? (String) properties.get(key) : null;
+ if (stateMsg == null)
+ stateMsg = Messages.getString(key);
+ if (stateMsg == null)
+ stateMsg = stateStr;
+
+ return stateMsg;
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/tabs/TabFolderMenuHandler.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/tabs/TabFolderMenuHandler.java
new file mode 100644
index 00000000000..dac6e73ecda
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/tabs/TabFolderMenuHandler.java
@@ -0,0 +1,397 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2021 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.tabs;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.PlatformObject;
+import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.jface.action.IMenuListener2;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.swt.custom.CTabFolder;
+import org.eclipse.swt.custom.CTabItem;
+import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.TextTransfer;
+import org.eclipse.swt.dnd.Transfer;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.tm.internal.terminal.control.ITerminalViewControl;
+import org.eclipse.tm.internal.terminal.control.actions.AbstractTerminalAction;
+import org.eclipse.tm.internal.terminal.control.actions.TerminalActionClearAll;
+import org.eclipse.tm.internal.terminal.control.actions.TerminalActionCopy;
+import org.eclipse.tm.internal.terminal.control.actions.TerminalActionPaste;
+import org.eclipse.tm.internal.terminal.control.actions.TerminalActionSelectAll;
+import org.eclipse.tm.internal.terminal.provisional.api.TerminalState;
+import org.eclipse.tm.terminal.view.core.interfaces.constants.ITerminalsConnectorConstants;
+import org.eclipse.tm.terminal.view.ui.actions.InvertColorsAction;
+import org.eclipse.tm.terminal.view.ui.actions.RenameTerminalAction;
+import org.eclipse.tm.terminal.view.ui.actions.SelectEncodingAction;
+import org.eclipse.tm.terminal.view.ui.interfaces.ITerminalsView;
+import org.eclipse.ui.IWorkbenchActionConstants;
+
+/**
+ * Terminal tab folder menu handler.
+ */
+public class TabFolderMenuHandler extends PlatformObject {
+ // Reference to the parent terminals console view
+ private final ITerminalsView parentView;
+ // Reference to the tab folder context menu manager
+ private MenuManager contextMenuManager;
+ // Reference to the tab folder context menu
+ private Menu contextMenu;
+ // The list of actions available within the context menu
+ private final List<AbstractTerminalAction> contextMenuActions = new ArrayList<>();
+
+ // The list of invalid context menu contributions "startsWith" expressions
+ /* default */ static final String[] INVALID_CONTRIBUTIONS_STARTS_WITH = { "org.eclipse.cdt", "org.eclipse.ui.edit" //$NON-NLS-1$ //$NON-NLS-2$
+ };
+
+ /**
+ * Default menu listener implementation.
+ */
+ protected class MenuListener implements IMenuListener2 {
+
+ @Override
+ public void menuAboutToHide(IMenuManager manager) {
+ // CQ:WIND00192293 and CQ:WIND194204 - don't update actions on menuAboutToHide
+ // See also http://bugs.eclipse.org/296212
+ // updateMenuItems(false);
+ }
+
+ @Override
+ public void menuAboutToShow(IMenuManager manager) {
+ removeInvalidContributions(manager);
+ updateMenuItems(true);
+ }
+
+ /**
+ * Bug 392249: Remove contributions that appear in the context in Eclipse 4.x which are
+ * not visible in Eclipse 3.8.x. Re-evaluate from time to time!
+ *
+ * @param manager The menu manager or <code>null</code>
+ */
+ private void removeInvalidContributions(IMenuManager manager) {
+ if (manager == null)
+ return;
+
+ IContributionItem[] items = manager.getItems();
+ for (IContributionItem item : items) {
+ String id = item.getId();
+ if (id != null) {
+ for (String prefix : INVALID_CONTRIBUTIONS_STARTS_WITH) {
+ if (id.startsWith(prefix)) {
+ manager.remove(item);
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param parentView The parent terminals console view. Must not be <code>null</code>.
+ */
+ public TabFolderMenuHandler(ITerminalsView parentView) {
+ super();
+ Assert.isNotNull(parentView);
+ this.parentView = parentView;
+ }
+
+ /**
+ * Returns the parent terminals console view.
+ *
+ * @return The parent terminals console view instance.
+ */
+ protected final ITerminalsView getParentView() {
+ return parentView;
+ }
+
+ /**
+ * Returns the tab folder associated with the parent view.
+ *
+ * @return The tab folder or <code>null</code>.
+ */
+ protected final CTabFolder getTabFolder() {
+ return getParentView().getAdapter(CTabFolder.class);
+ }
+
+ /**
+ * Dispose the tab folder menu handler instance.
+ */
+ public void dispose() {
+ // Dispose the context menu
+ if (contextMenu != null) {
+ contextMenu.dispose();
+ contextMenu = null;
+ }
+ // Dispose the context menu manager
+ if (contextMenuManager != null) {
+ contextMenuManager.dispose();
+ contextMenuManager = null;
+ }
+ // Clear all actions
+ contextMenuActions.clear();
+ }
+
+ /**
+ * Setup the context menu for the tab folder. The method will return
+ * immediately if the menu handler had been initialized before.
+ *
+ * @param tabFolder The tab folder control. Must not be <code>null</code>.
+ */
+ public void initialize() {
+ // Return immediately if the menu manager and menu got initialized already
+ if (contextMenuManager != null && contextMenu != null) {
+ return;
+ }
+
+ // Get the tab folder
+ CTabFolder tabFolder = getTabFolder();
+ if (tabFolder == null) {
+ return;
+ }
+
+ // Create the menu manager if not done before
+ contextMenuManager = new MenuManager("#PopupMenu"); //$NON-NLS-1$
+
+ // Bug 392249: Register our menu listener after registering the context menu
+ // for contributions. That way we can use our menu listener to get
+ // rid of unwanted/misguided contributions. At least until this is
+ // fixed in the Eclipse 4.x platform.
+
+ // Create the context menu
+ contextMenu = contextMenuManager.createContextMenu(tabFolder);
+ // Temporarily set the menu on the tab folder to avoid the case
+ // where the menu has a different parent shell than the control.
+ // This can be the case if the tab folder is re-parented to the
+ // "PartRenderingEngine's limbo".
+ tabFolder.setMenu(contextMenu);
+
+ // Create the context menu action instances
+ doCreateContextMenuActions();
+
+ // Fill the context menu
+ doFillContextMenu(contextMenuManager);
+
+ // Register to the view site to open the menu for contributions
+ getParentView().getSite().registerContextMenu(contextMenuManager,
+ getParentView().getSite().getSelectionProvider());
+
+ // Create and associated the menu listener
+ contextMenuManager.addMenuListener(new MenuListener());
+ }
+
+ /**
+ * Adds the given action to the context menu actions list.
+ *
+ * @param action The action instance. Must not be <code>null</code>.
+ */
+ protected final void add(AbstractTerminalAction action) {
+ Assert.isNotNull(action);
+ contextMenuActions.add(action);
+ }
+
+ /**
+ * Create the context menu actions.
+ */
+ protected void doCreateContextMenuActions() {
+ // Create and add the copy action
+ add(new TerminalActionCopy() {
+ @Override
+ protected ITerminalViewControl getTarget() {
+ return getActiveTerminalViewControl();
+ }
+ });
+
+ // Create and add the paste action
+ add(new TerminalActionPaste() {
+ @SuppressWarnings({ "unchecked" })
+ @Override
+ public void run() {
+ // Determine if pasting to the active tab require backslash translation
+ boolean needsTranslation = false;
+
+ TabFolderManager manager = getParentView().getAdapter(TabFolderManager.class);
+ if (manager != null) {
+ // If we have the active tab item, we can get the active terminal control
+ CTabItem activeTabItem = manager.getActiveTabItem();
+ if (activeTabItem != null) {
+ Map<String, Object> properties = (Map<String, Object>) activeTabItem.getData("properties"); //$NON-NLS-1$
+ if (properties != null && properties
+ .containsKey(ITerminalsConnectorConstants.PROP_TRANSLATE_BACKSLASHES_ON_PASTE)) {
+ Object value = properties
+ .get(ITerminalsConnectorConstants.PROP_TRANSLATE_BACKSLASHES_ON_PASTE);
+ needsTranslation = value instanceof Boolean ? ((Boolean) value).booleanValue() : false;
+ }
+ }
+ }
+
+ if (needsTranslation) {
+ ITerminalViewControl target = getTarget();
+ if (target != null && target.getClipboard() != null && !target.getClipboard().isDisposed()) {
+ String text = (String) target.getClipboard().getContents(TextTransfer.getInstance());
+ if (text != null) {
+ text = text.replace('\\', '/');
+
+ Object[] data = new Object[] { text };
+ Transfer[] types = new Transfer[] { TextTransfer.getInstance() };
+ target.getClipboard().setContents(data, types, DND.CLIPBOARD);
+ }
+ }
+ }
+
+ super.run();
+ }
+
+ @Override
+ protected ITerminalViewControl getTarget() {
+ return getActiveTerminalViewControl();
+ }
+ });
+
+ // Create and add the clear all action
+ add(new TerminalActionClearAll() {
+ @Override
+ protected ITerminalViewControl getTarget() {
+ return getActiveTerminalViewControl();
+ }
+
+ @Override
+ public void updateAction(boolean aboutToShow) {
+ super.updateAction(aboutToShow);
+ if (getTarget() != null && getTarget().getState() != TerminalState.CONNECTED) {
+ setEnabled(false);
+ }
+ }
+ });
+
+ // Create and add the select all action
+ add(new TerminalActionSelectAll() {
+ @Override
+ protected ITerminalViewControl getTarget() {
+ return getActiveTerminalViewControl();
+ }
+ });
+
+ // Create and add the select encoding action
+ add(new SelectEncodingAction(getParentView().getAdapter(TabFolderManager.class)) {
+ @Override
+ protected ITerminalViewControl getTarget() {
+ return getActiveTerminalViewControl();
+ }
+ });
+
+ // Create and add the invert colors action
+ add(new InvertColorsAction(getParentView().getAdapter(TabFolderManager.class)) {
+ @Override
+ protected ITerminalViewControl getTarget() {
+ return getActiveTerminalViewControl();
+ }
+ });
+
+ // change the name of the terminal
+ add(new RenameTerminalAction(getParentView().getAdapter(TabFolderManager.class)) {
+ @Override
+ protected ITerminalViewControl getTarget() {
+ return getActiveTerminalViewControl();
+ }
+ });
+ }
+
+ /**
+ * Returns the currently active terminal control.
+ *
+ * @return The currently active terminal control or <code>null</code>.
+ */
+ protected ITerminalViewControl getActiveTerminalViewControl() {
+ ITerminalViewControl terminal = null;
+
+ // Get the active tab item from the tab folder manager
+ TabFolderManager manager = getParentView().getAdapter(TabFolderManager.class);
+ if (manager != null) {
+ // If we have the active tab item, we can get the active terminal control
+ CTabItem activeTabItem = manager.getActiveTabItem();
+ if (activeTabItem != null) {
+ terminal = (ITerminalViewControl) activeTabItem.getData();
+ }
+ }
+
+ return terminal;
+ }
+
+ /**
+ * Fill in the context menu content within the given manager.
+ *
+ * @param manager The menu manager. Must not be <code>null</code>.
+ */
+ protected void doFillContextMenu(MenuManager manager) {
+ Assert.isNotNull(manager);
+
+ // Loop all actions and add them to the menu manager
+ for (AbstractTerminalAction action : contextMenuActions) {
+ manager.add(action);
+ // Add a separator after the paste action
+ if (action instanceof TerminalActionPaste) {
+ manager.add(new Separator());
+ }
+ // Add a separator after the select all action
+ if (action instanceof TerminalActionSelectAll) {
+ manager.add(new Separator());
+ }
+ }
+
+ // Menu contributions will end up here
+ manager.add(new Separator());
+ manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
+ }
+
+ /**
+ * Update the context menu items on showing or hiding the context menu.
+ *
+ * @param aboutToShow <code>True</code> if the menu is about to show, <code>false</code> otherwise.
+ */
+ protected void updateMenuItems(boolean aboutToShow) {
+ // Loop all actions and update the status
+ for (AbstractTerminalAction action : contextMenuActions) {
+ action.updateAction(aboutToShow);
+ }
+ }
+
+ @Override
+ public <T> T getAdapter(Class<T> adapter) {
+ if (MenuManager.class.isAssignableFrom(adapter)) {
+ return adapter.cast(contextMenuManager);
+ } else if (Menu.class.isAssignableFrom(adapter)) {
+ if (contextMenu == null || contextMenu.isDisposed()) {
+ contextMenu = contextMenuManager.createContextMenu(getTabFolder());
+ }
+ // Clear the menu from the tab folder now - see initialize()
+ getTabFolder().setMenu(null);
+ return adapter.cast(contextMenu);
+ }
+
+ // Try the parent view
+ T adapted = getParentView().getAdapter(adapter);
+ if (adapted != null) {
+ return adapted;
+ }
+
+ return super.getAdapter(adapter);
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/tabs/TabFolderSelectionListener.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/tabs/TabFolderSelectionListener.java
new file mode 100644
index 00000000000..ec893f04a60
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/tabs/TabFolderSelectionListener.java
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.tabs;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+
+/**
+ * Terminal tab folder default selection listener implementation.
+ */
+public class TabFolderSelectionListener implements SelectionListener {
+ private final TabFolderManager parentTabFolderManager;
+
+ /**
+ * Constructor.
+ *
+ * @param parentTabFolderManager The parent tab folder manager. Must not be <code>null</code>
+ */
+ public TabFolderSelectionListener(TabFolderManager parentTabFolderManager) {
+ Assert.isNotNull(parentTabFolderManager);
+ this.parentTabFolderManager = parentTabFolderManager;
+ }
+
+ /**
+ * Returns the parent terminal console tab folder manager instance.
+ *
+ * @return The parent terminal console tab folder manager instance.
+ */
+ protected final TabFolderManager getParentTabFolderManager() {
+ return parentTabFolderManager;
+ }
+
+ @Override
+ public void widgetDefaultSelected(SelectionEvent e) {
+ }
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ parentTabFolderManager.fireSelectionChanged();
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/tabs/TabFolderToolbarHandler.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/tabs/TabFolderToolbarHandler.java
new file mode 100644
index 00000000000..ac54b5dc24b
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/tabs/TabFolderToolbarHandler.java
@@ -0,0 +1,343 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ * Max Weninger (Wind River) - [361363] [TERMINALS] Implement "Pin&Clone" for the "Terminals" view
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.tabs;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.PlatformObject;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.swt.custom.CTabFolder;
+import org.eclipse.swt.custom.CTabItem;
+import org.eclipse.tm.internal.terminal.control.ITerminalViewControl;
+import org.eclipse.tm.internal.terminal.control.actions.AbstractTerminalAction;
+import org.eclipse.tm.internal.terminal.control.actions.TerminalActionClearAll;
+import org.eclipse.tm.internal.terminal.control.actions.TerminalActionCopy;
+import org.eclipse.tm.internal.terminal.control.actions.TerminalActionPaste;
+import org.eclipse.tm.internal.terminal.provisional.api.TerminalState;
+import org.eclipse.tm.terminal.view.ui.actions.AbstractAction;
+import org.eclipse.tm.terminal.view.ui.actions.NewTerminalViewAction;
+import org.eclipse.tm.terminal.view.ui.actions.TabScrollLockAction;
+import org.eclipse.tm.terminal.view.ui.actions.ToggleCommandFieldAction;
+import org.eclipse.tm.terminal.view.ui.interfaces.ITerminalsView;
+import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.IWorkbenchActionConstants;
+
+/**
+ * Terminal tab folder toolbar handler.
+ */
+public class TabFolderToolbarHandler extends PlatformObject {
+ // Reference to the parent terminals console view
+ private final ITerminalsView parentView;
+ // Reference to the toolbar manager
+ private IToolBarManager toolbarManager;
+ // Reference to the selection listener
+ private ToolbarSelectionChangedListener selectionChangedListener;
+ // The list of actions available within the toolbar
+ private final List<AbstractTerminalAction> toolbarActions = new ArrayList<>();
+
+ /**
+ * Default selection listener implementation.
+ */
+ protected class ToolbarSelectionChangedListener implements ISelectionChangedListener {
+
+ @Override
+ public void selectionChanged(SelectionChangedEvent event) {
+ boolean enable = event != null;
+
+ // The VlmConsoleTabFolderManager is listening to the selection changes of the
+ // TabFolder and fires selection changed events.
+ if (enable && event.getSource() instanceof TabFolderManager) {
+ enable = event.getSelection() instanceof StructuredSelection && !event.getSelection().isEmpty()
+ && (((StructuredSelection) event.getSelection()).getFirstElement() instanceof CTabItem
+ || ((StructuredSelection) event.getSelection()).getFirstElement() instanceof String);
+ }
+
+ updateToolbarItems(enable);
+ }
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param parentView The parent terminals console view. Must not be <code>null</code>.
+ */
+ public TabFolderToolbarHandler(ITerminalsView parentView) {
+ super();
+ Assert.isNotNull(parentView);
+ this.parentView = parentView;
+ }
+
+ /**
+ * Returns the parent terminals console view.
+ *
+ * @return The terminals console view instance.
+ */
+ protected final ITerminalsView getParentView() {
+ return parentView;
+ }
+
+ /**
+ * Returns the tab folder associated with the parent view.
+ *
+ * @return The tab folder or <code>null</code>.
+ */
+ protected final CTabFolder getTabFolder() {
+ return getParentView().getAdapter(CTabFolder.class);
+ }
+
+ /**
+ * Returns the currently active terminal control.
+ *
+ * @return The currently active terminal control or <code>null</code>.
+ */
+ public ITerminalViewControl getActiveTerminalViewControl() {
+ ITerminalViewControl terminal = null;
+
+ // Get the active tab item from the tab folder manager
+ TabFolderManager manager = getParentView().getAdapter(TabFolderManager.class);
+ if (manager != null) {
+ // If we have the active tab item, we can get the active terminal control
+ CTabItem activeTabItem = manager.getActiveTabItem();
+ if (activeTabItem != null && !activeTabItem.isDisposed()) {
+ terminal = (ITerminalViewControl) activeTabItem.getData();
+ }
+ }
+
+ return terminal;
+ }
+
+ /**
+ * Dispose the tab folder menu handler instance.
+ */
+ public void dispose() {
+ // Dispose the selection changed listener
+ if (selectionChangedListener != null) {
+ getParentView().getViewSite().getSelectionProvider()
+ .removeSelectionChangedListener(selectionChangedListener);
+ selectionChangedListener = null;
+ }
+
+ // Clear all actions
+ toolbarActions.clear();
+ }
+
+ /**
+ * Setup the context menu for the tab folder. The method will return
+ * immediately if the toolbar handler had been initialized before.
+ *
+ * @param tabFolder The tab folder control. Must not be <code>null</code>.
+ */
+ public void initialize() {
+ // Return immediately if the toolbar manager got initialized already
+ if (toolbarManager != null) {
+ return;
+ }
+
+ // Register ourself as selection listener to the tab folder
+ selectionChangedListener = doCreateSelectionChangedListener();
+ Assert.isNotNull(selectionChangedListener);
+ getParentView().getViewSite().getSelectionProvider().addSelectionChangedListener(selectionChangedListener);
+
+ // Get the parent view action bars
+ IActionBars bars = getParentView().getViewSite().getActionBars();
+
+ // From the action bars, get the toolbar manager
+ toolbarManager = bars.getToolBarManager();
+
+ // Create the toolbar action instances
+ doCreateToolbarActions();
+
+ // Fill the toolbar
+ doFillToolbar(toolbarManager);
+
+ // Update actions
+ updateToolbarItems(false);
+ }
+
+ /**
+ * Creates a new selection changed listener instance.
+ *
+ * @return The new selection changed listener instance.
+ */
+ protected ToolbarSelectionChangedListener doCreateSelectionChangedListener() {
+ return new ToolbarSelectionChangedListener();
+ }
+
+ /**
+ * Adds the given action to the toolbar actions list.
+ *
+ * @param action The action instance. Must not be <code>null</code>.
+ */
+ protected final void add(AbstractTerminalAction action) {
+ Assert.isNotNull(action);
+ toolbarActions.add(action);
+ }
+
+ /**
+ * Removes the given action from the toolbar actions list.
+ *
+ * @param action The action instance. Must not be <code>null</code>.
+ */
+ protected final void remove(AbstractTerminalAction action) {
+ Assert.isNotNull(action);
+ toolbarActions.remove(action);
+ }
+
+ /**
+ * Create the toolbar actions.
+ */
+ protected void doCreateToolbarActions() {
+ // Create and add the paste action
+ add(new TerminalActionPaste() {
+ @Override
+ protected ITerminalViewControl getTarget() {
+ return getActiveTerminalViewControl();
+ }
+ });
+
+ // Create and add the copy action
+ add(new TerminalActionCopy() {
+ @Override
+ protected ITerminalViewControl getTarget() {
+ return getActiveTerminalViewControl();
+ }
+ });
+
+ // Create and add the scroll lock action
+ add(new TabScrollLockAction() {
+ @Override
+ protected ITerminalViewControl getTarget() {
+ return getActiveTerminalViewControl();
+ }
+ });
+
+ // Create and add the clear all action
+ add(new TerminalActionClearAll() {
+ @Override
+ protected ITerminalViewControl getTarget() {
+ return getActiveTerminalViewControl();
+ }
+
+ @Override
+ public void updateAction(boolean aboutToShow) {
+ super.updateAction(aboutToShow);
+ if (getTarget() != null && getTarget().getState() != TerminalState.CONNECTED) {
+ setEnabled(false);
+ }
+ }
+ });
+
+ // Create and add the toggle command input field action
+ add(new ToggleCommandFieldAction(getParentView()) {
+ @Override
+ protected ITerminalViewControl getTarget() {
+ return getActiveTerminalViewControl();
+ }
+ });
+
+ // Create and add the new terminal view action
+ add(new NewTerminalViewAction(getParentView()) {
+ @Override
+ protected ITerminalViewControl getTarget() {
+ return getActiveTerminalViewControl();
+ }
+ });
+ }
+
+ /**
+ * Fill in the context menu content within the given manager.
+ *
+ * @param manager The menu manager. Must not be <code>null</code>.
+ */
+ protected void doFillToolbar(IToolBarManager manager) {
+ Assert.isNotNull(manager);
+
+ // Note: For the toolbar, the actions are added from left to right!
+ // So we start with the additions marker here which is the most
+ // left contribution item.
+ manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
+ manager.add(new Separator("anchor")); //$NON-NLS-1$
+
+ // we want that at the end
+ NewTerminalViewAction newTerminalAction = null;
+
+ // Loop all actions and add them to the menu manager
+ for (AbstractTerminalAction action : toolbarActions) {
+ // Add a separator before the clear all action or if the action is a separator
+ if (action instanceof TabScrollLockAction
+ || (action instanceof AbstractAction && ((AbstractAction) action).isSeparator())) {
+ manager.insertAfter("anchor", new Separator()); //$NON-NLS-1$
+ }
+ // skip new terminal view action for now
+ if (action instanceof NewTerminalViewAction) {
+ newTerminalAction = (NewTerminalViewAction) action;
+ continue;
+ }
+ // Add the action itself
+ manager.insertAfter("anchor", action); //$NON-NLS-1$
+ }
+ // now add to the end
+ if (newTerminalAction != null) {
+ manager.add(newTerminalAction);
+ }
+ }
+
+ /**
+ * Update the toolbar items.
+ *
+ * @param enabled <code>True</code> if the items shall be enabled, <code>false</code> otherwise.
+ */
+ protected void updateToolbarItems(boolean enabled) {
+ // Determine the currently active terminal control
+ ITerminalViewControl control = getActiveTerminalViewControl();
+ // Loop all actions and update the status
+ for (AbstractTerminalAction action : toolbarActions) {
+ // If the terminal control is not available, the updateAction
+ // method of certain actions enable the action (bugzilla #260372).
+ // Workaround by forcing the action to get disabled with setEnabled.
+ if (control == null && !(action instanceof NewTerminalViewAction)) {
+ action.setEnabled(false);
+ } else {
+ action.updateAction(enabled);
+ }
+ }
+ }
+
+ @Override
+ public <T> T getAdapter(Class<T> adapter) {
+ if (IToolBarManager.class.isAssignableFrom(adapter)) {
+ return adapter.cast(toolbarManager);
+ }
+
+ // Try the toolbar actions
+ for (AbstractTerminalAction action : toolbarActions) {
+ if (adapter.isAssignableFrom(action.getClass())) {
+ return adapter.cast(action);
+ }
+ }
+
+ // Try the parent view
+ T adapted = getParentView().getAdapter(adapter);
+ if (adapted != null) {
+ return adapted;
+ }
+
+ return super.getAdapter(adapter);
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/tabs/TabTerminalListener.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/tabs/TabTerminalListener.java
new file mode 100644
index 00000000000..6df377aa2b3
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/tabs/TabTerminalListener.java
@@ -0,0 +1,178 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.tabs;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.swt.custom.CTabItem;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.tm.internal.terminal.control.ITerminalListener2;
+import org.eclipse.tm.internal.terminal.provisional.api.TerminalState;
+import org.eclipse.tm.terminal.view.ui.nls.Messages;
+
+/**
+ * Terminal tab default terminal listener implementation.
+ */
+public class TabTerminalListener implements ITerminalListener2 {
+ private static final String TAB_TERMINAL_LISTENER = "TabTerminalListener"; //$NON-NLS-1$
+ /* default */ final TabFolderManager tabFolderManager;
+ private CTabItem tabItem;
+ private String tabItemTitle;
+ private TerminalState state;
+
+ /**
+ * Move a TabTerminalListener instance to another item (for DnD).
+ *
+ * @param fromItem item to detach the listener from
+ * @param toItem item to attach listener to
+ */
+ static void move(CTabItem fromItem, CTabItem toItem) {
+ TabTerminalListener listener = (TabTerminalListener) fromItem.getData(TAB_TERMINAL_LISTENER);
+ if (listener != null) {
+ listener.attachTo(toItem);
+ }
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param tabFolderManager The parent tab folder manager. Must not be <code>null</code>.
+ * @param tabItem The parent tab item. Must not be <code>null</code>.
+ */
+ public TabTerminalListener(TabFolderManager tabFolderManager, CTabItem tabItem) {
+ super();
+ Assert.isNotNull(tabFolderManager);
+ Assert.isNotNull(tabItem);
+ this.tabFolderManager = tabFolderManager;
+ // Remember the tab item title
+ tabItemTitle = tabItem.getText();
+
+ attachTo(tabItem);
+ }
+
+ private void attachTo(CTabItem item) {
+ if (tabItem != null)
+ tabItem.setData(TAB_TERMINAL_LISTENER, null);
+ item.setData(TAB_TERMINAL_LISTENER, this);
+ tabItem = item;
+ }
+
+ /**
+ * Returns the associated parent tab item.
+ *
+ * @return The parent tab item.
+ */
+ protected final CTabItem getTabItem() {
+ return tabItem;
+ }
+
+ @Override
+ public void setState(final TerminalState state) {
+ this.state = state;
+ updateTitle();
+
+ // The tab item must have been not yet disposed
+ final CTabItem item = getTabItem();
+ if (item == null || item.isDisposed())
+ return;
+
+ // Run asynchronously in the display thread
+ item.getDisplay().asyncExec(() -> {
+ // Turn off the command field (if necessary)
+ TabCommandFieldHandler handler = tabFolderManager.getTabCommandFieldHandler(item);
+ if (TerminalState.CLOSED.equals(state) && handler != null && handler.hasCommandInputField()) {
+ handler.setCommandInputField(false);
+ // Trigger a selection changed event to update the action enablements
+ // and the status line
+ ISelectionProvider provider = tabFolderManager.getParentView().getViewSite().getSelectionProvider();
+ Assert.isNotNull(provider);
+ provider.setSelection(provider.getSelection());
+ } else {
+ // Update the status line
+ tabFolderManager.updateStatusLine();
+ }
+ });
+ }
+
+ private void updateTitle() {
+ if (state == null) {
+ // first setState hasn't happened yet, it will
+ // soon and the title will be update then.
+ return;
+ }
+ final CTabItem item = getTabItem();
+ if (item == null || item.isDisposed()) {
+ return;
+ }
+
+ // Run asynchronously in the display thread
+ item.getDisplay().asyncExec(() -> {
+ // Update the tab item title
+ String newTitle = getTerminalConsoleTabTitle(state);
+ if (newTitle != null)
+ item.setText(newTitle);
+ });
+ }
+
+ /**
+ * Returns the title to set to the terminal console tab for the given state.
+ * <p>
+ * <b>Note:</b> This method is called from {@link #setState(TerminalState)} and
+ * is expected to by called within the UI thread.
+ *
+ * @param state The terminal state. Must not be <code>null</code>.
+ * @return The terminal console tab title to set or <code>null</code> to leave the title unchanged.
+ */
+ protected String getTerminalConsoleTabTitle(TerminalState state) {
+ Assert.isNotNull(state);
+ Assert.isNotNull(Display.findDisplay(Thread.currentThread()));
+
+ // The tab item must have been not yet disposed
+ CTabItem item = getTabItem();
+ if (item == null || item.isDisposed())
+ return null;
+
+ // Get the current tab title
+ String oldTitle = item.getText();
+
+ // Construct the new title
+ String newTitle = null;
+
+ if (TerminalState.CLOSED.equals(state)) {
+ newTitle = NLS.bind(Messages.TabTerminalListener_consoleClosed, tabItemTitle,
+ tabFolderManager.state2msg(item, state));
+ } else if (TerminalState.CONNECTING.equals(state)) {
+ newTitle = NLS.bind(Messages.TabTerminalListener_consoleConnecting, tabItemTitle,
+ tabFolderManager.state2msg(item, state));
+ } else if (TerminalState.CONNECTED.equals(state)) {
+ newTitle = tabItemTitle;
+ }
+
+ return newTitle != null && !newTitle.equals(oldTitle) ? newTitle : null;
+ }
+
+ @Override
+ public void setTerminalTitle(String title) {
+ tabItemTitle = title;
+ updateTitle();
+ }
+
+ /**
+ * @see org.eclipse.tm.internal.terminal.control.ITerminalListener2#setTerminalSelectionChanged()
+ * @since 4.1
+ */
+ @Override
+ public void setTerminalSelectionChanged() {
+ tabFolderManager.fireTerminalSelectionChanged();
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/view/OldTerminalsViewHandler.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/view/OldTerminalsViewHandler.java
new file mode 100644
index 00000000000..4a940ab6ba8
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/view/OldTerminalsViewHandler.java
@@ -0,0 +1,124 @@
+/*******************************************************************************
+ * Copyright (c) 2015, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.view;
+
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.tm.terminal.view.ui.interfaces.IUIConstants;
+import org.eclipse.ui.IPartListener2;
+import org.eclipse.ui.IViewSite;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchPartReference;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.part.ViewPart;
+
+/**
+ * Old terminals view handler implementation.
+ * <p>
+ * If invoked, the view implementation opens the new terminals view and
+ * closes itself afterwards.
+ */
+public class OldTerminalsViewHandler extends ViewPart {
+
+ boolean fReplaced;
+ IPartListener2 fPartlistener;
+
+ /**
+ * Constructor.
+ */
+ public OldTerminalsViewHandler() {
+ super();
+ }
+
+ @Override
+ public void createPartControl(Composite parent) {
+ replaceWithTerminalsView();
+ }
+
+ protected void replaceWithTerminalsView() {
+ if (fReplaced)
+ return;
+ IViewSite site = getViewSite();
+ final IWorkbenchPage page = site.getPage();
+
+ site.getShell().getDisplay().asyncExec(() -> {
+ if (fReplaced)
+ return;
+ if (!page.isPageZoomed() || page.getActivePart() instanceof TerminalsView) {
+ fReplaced = true;
+ // Show the new view
+ try {
+ page.showView(IUIConstants.ID, null, IWorkbenchPage.VIEW_CREATE);
+ } catch (PartInitException e) {
+ /* ignored on purpose */ }
+
+ // Hide ourself in the current perspective
+ page.hideView(OldTerminalsViewHandler.this);
+ } else if (fPartlistener == null) {
+ final IWorkbenchPart maximizedPart = page.getActivePart();
+ page.addPartListener(fPartlistener = new IPartListener2() {
+ @Override
+ public void partVisible(IWorkbenchPartReference partRef) {
+ if (partRef.getPart(false) == OldTerminalsViewHandler.this) {
+ page.removePartListener(this);
+ fPartlistener = null;
+ replaceWithTerminalsView();
+ }
+ }
+
+ @Override
+ public void partOpened(IWorkbenchPartReference partRef) {
+ }
+
+ @Override
+ public void partInputChanged(IWorkbenchPartReference partRef) {
+ }
+
+ @Override
+ public void partHidden(IWorkbenchPartReference partRef) {
+ }
+
+ @Override
+ public void partDeactivated(IWorkbenchPartReference partRef) {
+ }
+
+ @Override
+ public void partClosed(IWorkbenchPartReference partRef) {
+ if (partRef.getPart(false) == OldTerminalsViewHandler.this) {
+ page.removePartListener(this);
+ fPartlistener = null;
+ } else if (partRef.getPart(false) == maximizedPart) {
+ page.removePartListener(this);
+ fPartlistener = null;
+ replaceWithTerminalsView();
+ }
+ }
+
+ @Override
+ public void partBroughtToTop(IWorkbenchPartReference partRef) {
+ }
+
+ @Override
+ public void partActivated(IWorkbenchPartReference partRef) {
+ }
+ });
+ }
+ });
+ }
+
+ @Override
+ public void setFocus() {
+ // should not happen, but just in case - replace on focus
+ replaceWithTerminalsView();
+ }
+
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/view/TerminalsView.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/view/TerminalsView.java
new file mode 100644
index 00000000000..99623e40fb6
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/view/TerminalsView.java
@@ -0,0 +1,759 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ * Max Weninger (Wind River) - [361363] [TERMINALS] Implement "Pin&Clone" for the "Terminals" view
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.view;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.UUID;
+
+import org.eclipse.core.commands.Command;
+import org.eclipse.core.commands.ParameterizedCommand;
+import org.eclipse.core.expressions.EvaluationContext;
+import org.eclipse.core.expressions.IEvaluationContext;
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.resource.JFaceResources;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CTabFolder;
+import org.eclipse.swt.custom.CTabItem;
+import org.eclipse.swt.dnd.ByteArrayTransfer;
+import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.DragSource;
+import org.eclipse.swt.dnd.DragSourceEvent;
+import org.eclipse.swt.dnd.DragSourceListener;
+import org.eclipse.swt.dnd.DropTarget;
+import org.eclipse.swt.dnd.DropTargetEvent;
+import org.eclipse.swt.dnd.DropTargetListener;
+import org.eclipse.swt.dnd.Transfer;
+import org.eclipse.swt.dnd.TransferData;
+import org.eclipse.swt.events.DisposeListener;
+import org.eclipse.swt.events.MouseAdapter;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.tm.terminal.view.ui.activator.UIPlugin;
+import org.eclipse.tm.terminal.view.ui.interfaces.ITerminalsView;
+import org.eclipse.tm.terminal.view.ui.nls.Messages;
+import org.eclipse.tm.terminal.view.ui.tabs.TabFolderManager;
+import org.eclipse.tm.terminal.view.ui.tabs.TabFolderMenuHandler;
+import org.eclipse.tm.terminal.view.ui.tabs.TabFolderToolbarHandler;
+import org.eclipse.tm.terminal.view.ui.view.showin.GitShowInContextHandler;
+import org.eclipse.ui.IMemento;
+import org.eclipse.ui.ISources;
+import org.eclipse.ui.IViewSite;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.commands.ICommandService;
+import org.eclipse.ui.handlers.IHandlerService;
+import org.eclipse.ui.part.IShowInTarget;
+import org.eclipse.ui.part.PageBook;
+import org.eclipse.ui.part.ShowInContext;
+import org.eclipse.ui.part.ViewPart;
+import org.osgi.framework.Bundle;
+
+/**
+ * Terminal view.
+ */
+public class TerminalsView extends ViewPart implements ITerminalsView, IShowInTarget {
+
+ // Reference to the main page book control
+ private PageBook pageBookControl;
+ // Reference to the tab folder maintaining the consoles
+ /* default */ CTabFolder tabFolderControl;
+ // Reference to the tab folder manager
+ /* default */ TabFolderManager tabFolderManager;
+ // Reference to the tab folder menu handler
+ private TabFolderMenuHandler tabFolderMenuHandler;
+ // Reference to the tab folder toolbar handler
+ private TabFolderToolbarHandler tabFolderToolbarHandler;
+ // Reference to the empty page control (to be show if no console is open)
+ private Control emptyPageControl;
+ // The view's memento handler
+ private final TerminalsViewMementoHandler mementoHandler = new TerminalsViewMementoHandler();
+
+ /**
+ * "dummy" transfer just to store the information needed for the DnD
+ *
+ */
+ private static class TerminalTransfer extends ByteArrayTransfer {
+ // The static terminal transfer type name. Unique per terminals view instance.
+ private static final String TYPE_NAME = "terminal-transfer-format:" + UUID.randomUUID().toString(); //$NON-NLS-1$
+ // Register the type name and remember the associated unique type id.
+ private static final int TYPEID = registerType(TYPE_NAME);
+
+ private CTabItem draggedFolderItem;
+ private TabFolderManager draggedTabFolderManager;
+
+ /*
+ * Thread save singleton instance creation.
+ */
+ private static class LazyInstanceHolder {
+ public static TerminalTransfer instance = new TerminalTransfer();
+ }
+
+ /**
+ * Constructor.
+ */
+ TerminalTransfer() {
+ }
+
+ /**
+ * Returns the singleton terminal transfer instance.
+ * @return
+ */
+ public static TerminalTransfer getInstance() {
+ return LazyInstanceHolder.instance;
+ }
+
+ /**
+ * Sets the dragged folder item.
+ *
+ * @param tabFolderItem The dragged folder item or <code>null</code>.
+ */
+ public void setDraggedFolderItem(CTabItem tabFolderItem) {
+ draggedFolderItem = tabFolderItem;
+ }
+
+ /**
+ * Returns the dragged folder item.
+ *
+ * @return The dragged folder item or <code>null</code>.
+ */
+ public CTabItem getDraggedFolderItem() {
+ return draggedFolderItem;
+ }
+
+ /**
+ * Sets the tab folder manager the associated folder item is dragged from.
+ *
+ * @param tabFolderManager The tab folder manager or <code>null</code>.
+ */
+ public void setTabFolderManager(TabFolderManager tabFolderManager) {
+ draggedTabFolderManager = tabFolderManager;
+ }
+
+ /**
+ * Returns the tab folder manager the associated folder item is dragged from.
+ *
+ * @return The tab folder manager or <code>null</code>.
+ */
+ public TabFolderManager getTabFolderManager() {
+ return draggedTabFolderManager;
+ }
+
+ @Override
+ protected int[] getTypeIds() {
+ return new int[] { TYPEID };
+ }
+
+ @Override
+ protected String[] getTypeNames() {
+ return new String[] { TYPE_NAME };
+ }
+
+ @Override
+ public void javaToNative(Object data, TransferData transferData) {
+ }
+
+ @Override
+ public Object nativeToJava(TransferData transferData) {
+ return null;
+ }
+ }
+
+ /**
+ * Constructor.
+ */
+ public TerminalsView() {
+ super();
+ }
+
+ /**
+ * Initialize the drag support.
+ */
+ private void addDragSupport() {
+ // The event listener is registered as filter. It will receive events from all widgets.
+ PlatformUI.getWorkbench().getDisplay().addFilter(SWT.DragDetect, event -> {
+ // Only handle events where a CTabFolder is the source
+ if (!(event.widget instanceof CTabFolder))
+ return;
+ // TabFolderManager must be created
+ if (tabFolderManager == null)
+ return;
+
+ // only for own tab folders
+ if (event.widget != tabFolderControl)
+ return;
+
+ // Skip drag if DnD is still ongoing (bug 443787)
+ if (tabFolderControl.getData(DND.DRAG_SOURCE_KEY) != null)
+ return;
+
+ final CTabFolder draggedFolder = (CTabFolder) event.widget;
+
+ int operations = DND.DROP_MOVE | DND.DROP_DEFAULT;
+ final DragSource dragSource = new DragSource(draggedFolder, operations);
+
+ // Initialize the terminal transfer type data
+ TerminalTransfer.getInstance().setDraggedFolderItem(tabFolderManager.getActiveTabItem());
+ TerminalTransfer.getInstance().setTabFolderManager(tabFolderManager);
+
+ Transfer[] transferTypes = new Transfer[] { TerminalTransfer.getInstance() };
+ dragSource.setTransfer(transferTypes);
+
+ // Add a drag source listener to cleanup after the drag operation finished
+ dragSource.addDragListener(new DragSourceListener() {
+ @Override
+ public void dragStart(DragSourceEvent event) {
+ }
+
+ @Override
+ public void dragSetData(DragSourceEvent event) {
+ }
+
+ @Override
+ public void dragFinished(DragSourceEvent event) {
+ // dispose this drag-source-listener by disposing its drag-source
+ dragSource.dispose();
+
+ // Inhibit the action of CTabFolder's default DragDetect-listeners,
+ // fire a mouse-click event on the widget that was dragged.
+ draggedFolder.notifyListeners(SWT.MouseUp, null);
+ }
+ });
+ });
+ }
+
+ /**
+ * Initialize the drop support on the terminals page book control.
+ */
+ private void addDropSupport() {
+ int operations = DND.DROP_MOVE | DND.DROP_DEFAULT;
+ final DropTarget target = new DropTarget(pageBookControl, operations);
+
+ Transfer[] transferTypes = new Transfer[] { TerminalTransfer.getInstance() };
+ target.setTransfer(transferTypes);
+
+ target.addDropListener(new DropTargetListener() {
+ @Override
+ public void dragEnter(DropTargetEvent event) {
+ // only if the drop target is different then the drag source
+ if (TerminalTransfer.getInstance().getTabFolderManager() == tabFolderManager) {
+ event.detail = DND.DROP_NONE;
+ } else {
+ event.detail = DND.DROP_MOVE;
+ }
+ }
+
+ @Override
+ public void dragOver(DropTargetEvent event) {
+ }
+
+ @Override
+ public void dragOperationChanged(DropTargetEvent event) {
+ }
+
+ @Override
+ public void dragLeave(DropTargetEvent event) {
+ }
+
+ @Override
+ public void dropAccept(DropTargetEvent event) {
+ }
+
+ @Override
+ public void drop(DropTargetEvent event) {
+ if (TerminalTransfer.getInstance().getDraggedFolderItem() != null && tabFolderManager != null) {
+ CTabItem draggedItem = TerminalTransfer.getInstance().getDraggedFolderItem();
+
+ CTabItem item = tabFolderManager.cloneTabItemAfterDrop(draggedItem);
+ tabFolderManager.bringToTop(item);
+ switchToTabFolderControl();
+
+ // dispose tab item control
+ final Control control = draggedItem.getControl();
+ draggedItem.setControl(null);
+ if (control != null)
+ control.dispose();
+
+ // need to remove the dispose listener first
+ DisposeListener disposeListener = (DisposeListener) draggedItem.getData("disposeListener"); //$NON-NLS-1$
+ draggedItem.removeDisposeListener(disposeListener);
+ draggedItem.dispose();
+
+ // make sure the "new" terminals view has the focus after dragging a terminal
+ setFocus();
+ }
+ }
+ });
+ }
+
+ @Override
+ public void dispose() {
+ // Dispose the tab folder manager
+ if (tabFolderManager != null) {
+ tabFolderManager.dispose();
+ tabFolderManager = null;
+ }
+ // Dispose the tab folder menu handler
+ if (tabFolderMenuHandler != null) {
+ tabFolderMenuHandler.dispose();
+ tabFolderMenuHandler = null;
+ }
+ // Dispose the tab folder toolbar handler
+ if (tabFolderToolbarHandler != null) {
+ tabFolderToolbarHandler.dispose();
+ tabFolderToolbarHandler = null;
+ }
+
+ super.dispose();
+ }
+
+ @Override
+ public void init(IViewSite site, IMemento memento) throws PartInitException {
+ super.init(site, memento);
+ restoreState(memento);
+ }
+
+ @Override
+ public void createPartControl(Composite parent) {
+ // Create the page book control
+ pageBookControl = doCreatePageBookControl(parent);
+ Assert.isNotNull(pageBookControl);
+ // Configure the page book control
+ doConfigurePageBookControl(pageBookControl);
+
+ // Create the empty page control
+ emptyPageControl = doCreateEmptyPageControl(pageBookControl);
+ Assert.isNotNull(emptyPageControl);
+ // Configure the empty page control
+ doConfigureEmptyPageControl(emptyPageControl);
+
+ // Create the tab folder control (empty)
+ tabFolderControl = doCreateTabFolderControl(pageBookControl);
+ Assert.isNotNull(tabFolderControl);
+ // Configure the tab folder control
+ doConfigureTabFolderControl(tabFolderControl);
+
+ // Create the tab folder manager
+ tabFolderManager = doCreateTabFolderManager(this);
+ Assert.isNotNull(tabFolderManager);
+ // Set the tab folder manager as the selection provider
+ getSite().setSelectionProvider(tabFolderManager);
+
+ // Setup the tab folder menu handler
+ tabFolderMenuHandler = doCreateTabFolderMenuHandler(this);
+ Assert.isNotNull(tabFolderMenuHandler);
+ doConfigureTabFolderMenuHandler(tabFolderMenuHandler);
+
+ // Setup the tab folder toolbar handler
+ tabFolderToolbarHandler = doCreateTabFolderToolbarHandler(this);
+ Assert.isNotNull(tabFolderToolbarHandler);
+ doConfigureTabFolderToolbarHandler(tabFolderToolbarHandler);
+
+ // Show the empty page control by default
+ switchToEmptyPageControl();
+
+ String secondaryId = ((IViewSite) getSite()).getSecondaryId();
+ if (secondaryId != null) {
+ String defaultTitle = getPartName();
+ // set title
+ setPartName(defaultTitle + " " + secondaryId); //$NON-NLS-1$
+ }
+
+ // Initialize DnD support
+ addDragSupport();
+ addDropSupport();
+ }
+
+ /**
+ * Creates the {@link PageBook} instance.
+ *
+ * @param parent The parent composite. Must not be <code>null</code>.
+ * @return The page book instance. Must never be <code>null</code>.
+ */
+ protected PageBook doCreatePageBookControl(Composite parent) {
+ return new PageBook(parent, SWT.NONE);
+ }
+
+ /**
+ * Configure the given page book control.
+ *
+ * @param pagebook The page book control. Must not be <code>null</code>.
+ */
+ protected void doConfigurePageBookControl(PageBook pagebook) {
+ Assert.isNotNull(pagebook);
+
+ if (getContextHelpId() != null)
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(pagebook, getContextHelpId());
+ }
+
+ /**
+ * Returns the context help id associated with the terminals console view instance.
+ * <p>
+ * <b>Note:</b> The default implementation returns the view id as context help id.
+ *
+ * @return The context help id or <code>null</code> if none is associated.
+ */
+ @Override
+ public String getContextHelpId() {
+ return getViewSite().getId();
+ }
+
+ /**
+ * Creates the empty page control instance.
+ *
+ * @param parent The parent composite. Must not be <code>null</code>.
+ * @return The empty page control instance. Must never be <code>null</code>.
+ */
+ protected Control doCreateEmptyPageControl(Composite parent) {
+ Composite composite = new Composite(parent, SWT.NONE);
+ composite.setLayout(new GridLayout());
+ composite.setLayoutData(new GridData(GridData.FILL_BOTH));
+ return composite;
+ }
+
+ /**
+ * Configures the empty page control.
+ *
+ * @param control The empty page control. Must not be <code>null</code>.
+ */
+ protected void doConfigureEmptyPageControl(Control control) {
+ Assert.isNotNull(control);
+ }
+
+ /**
+ * Creates the tab folder control instance.
+ *
+ * @param parent The parent composite. Must not be <code>null</code>.
+ * @return The tab folder control instance. Must never be <code>null</code>.
+ */
+ protected CTabFolder doCreateTabFolderControl(Composite parent) {
+ return new CTabFolder(parent, SWT.NO_REDRAW_RESIZE | SWT.NO_TRIM | SWT.FLAT | SWT.BORDER);
+ }
+
+ /**
+ * Configures the tab folder control.
+ *
+ * @param tabFolder The tab folder control. Must not be <code>null</code>.
+ */
+ protected void doConfigureTabFolderControl(final CTabFolder tabFolder) {
+ Assert.isNotNull(tabFolder);
+
+ // Set the layout data
+ tabFolder.setLayoutData(new GridData(GridData.FILL_BOTH));
+
+ // Set the tab gradient coloring from the global preferences
+ if (useGradientTabBackgroundColor()) {
+ tabFolder.setSelectionBackground(
+ new Color[] { JFaceResources.getColorRegistry().get("org.eclipse.ui.workbench.ACTIVE_TAB_BG_START"), //$NON-NLS-1$
+ JFaceResources.getColorRegistry().get("org.eclipse.ui.workbench.ACTIVE_TAB_BG_END") //$NON-NLS-1$
+ }, new int[] { 100 }, true);
+ }
+ // Apply the tab folder selection foreground color
+ tabFolder.setSelectionForeground(
+ JFaceResources.getColorRegistry().get("org.eclipse.ui.workbench.ACTIVE_TAB_TEXT_COLOR")); //$NON-NLS-1$
+
+ // Attach the mouse listener
+ tabFolder.addMouseListener(new MouseAdapter() {
+ @Override
+ public void mouseDown(MouseEvent e) {
+ if (e.button == 2) {
+ // middle mouse button click - close tab
+ CTabItem item = tabFolder.getItem(new Point(e.x, e.y));
+ if (item != null)
+ item.dispose();
+ }
+ }
+ });
+ }
+
+ /**
+ * If <code>True</code> is returned, the inner tabs are colored with gradient coloring set in
+ * the Eclipse workbench color settings.
+ *
+ * @return <code>True</code> to use gradient tab colors, <code>false</code> otherwise.
+ */
+ protected boolean useGradientTabBackgroundColor() {
+ return false;
+ }
+
+ /**
+ * Creates the tab folder manager.
+ *
+ * @param parentView The parent view instance. Must not be <code>null</code>.
+ * @return The tab folder manager. Must never be <code>null</code>.
+ */
+ protected TabFolderManager doCreateTabFolderManager(ITerminalsView parentView) {
+ Assert.isNotNull(parentView);
+ return new TabFolderManager(parentView);
+ }
+
+ /**
+ * Creates the tab folder menu handler.
+ *
+ * @param parentView The parent view instance. Must not be <code>null</code>.
+ * @return The tab folder menu handler. Must never be <code>null</code>.
+ */
+ protected TabFolderMenuHandler doCreateTabFolderMenuHandler(ITerminalsView parentView) {
+ Assert.isNotNull(parentView);
+ return new TabFolderMenuHandler(parentView);
+ }
+
+ /**
+ * Configure the tab folder menu handler
+ *
+ * @param menuHandler The tab folder menu handler. Must not be <code>null</code>.
+ */
+ protected void doConfigureTabFolderMenuHandler(TabFolderMenuHandler menuHandler) {
+ Assert.isNotNull(menuHandler);
+ menuHandler.initialize();
+ }
+
+ /**
+ * Creates the tab folder toolbar handler.
+ *
+ * @param parentView The parent view instance. Must not be <code>null</code>.
+ * @return The tab folder toolbar handler. Must never be <code>null</code>.
+ */
+ protected TabFolderToolbarHandler doCreateTabFolderToolbarHandler(ITerminalsView parentView) {
+ Assert.isNotNull(parentView);
+ return new TabFolderToolbarHandler(parentView);
+ }
+
+ /**
+ * Configure the tab folder toolbar handler
+ *
+ * @param toolbarHandler The tab folder toolbar handler. Must not be <code>null</code>.
+ */
+ protected void doConfigureTabFolderToolbarHandler(TabFolderToolbarHandler toolbarHandler) {
+ Assert.isNotNull(toolbarHandler);
+ toolbarHandler.initialize();
+ }
+
+ @Override
+ public void setFocus() {
+ if (pageBookControl != null)
+ pageBookControl.setFocus();
+ }
+
+ @Override
+ public void switchToEmptyPageControl() {
+ if (pageBookControl != null && !pageBookControl.isDisposed() && emptyPageControl != null
+ && !emptyPageControl.isDisposed()) {
+ pageBookControl.showPage(emptyPageControl);
+ }
+ }
+
+ @Override
+ public void switchToTabFolderControl() {
+ if (pageBookControl != null && !pageBookControl.isDisposed() && tabFolderControl != null
+ && !tabFolderControl.isDisposed()) {
+ pageBookControl.showPage(tabFolderControl);
+ }
+ }
+
+ @Override
+ public <T> T getAdapter(Class<T> adapter) {
+ if (CTabFolder.class.isAssignableFrom(adapter)) {
+ return adapter.cast(tabFolderControl);
+ }
+ if (TabFolderManager.class.isAssignableFrom(adapter)) {
+ return adapter.cast(tabFolderManager);
+ }
+ if (TabFolderMenuHandler.class.isAssignableFrom(adapter)) {
+ return adapter.cast(tabFolderMenuHandler);
+ }
+ if (TabFolderToolbarHandler.class.isAssignableFrom(adapter)) {
+ return adapter.cast(tabFolderToolbarHandler);
+ }
+ if (TerminalsViewMementoHandler.class.isAssignableFrom(adapter)) {
+ return adapter.cast(mementoHandler);
+ }
+
+ return super.getAdapter(adapter);
+ }
+
+ @Override
+ public void saveState(IMemento memento) {
+ super.saveState(memento);
+ if (memento == null)
+ return;
+ mementoHandler.saveState(this, memento);
+ }
+
+ /**
+ * Restore the view state from the given memento.
+ *
+ * @param memento The memento or <code>null</code>.
+ */
+ public void restoreState(IMemento memento) {
+ if (memento == null)
+ return;
+ mementoHandler.restoreState(this, memento);
+ }
+
+ @Override
+ public boolean show(ShowInContext context) {
+ if (context != null) {
+ // Get the selection from the context
+ ISelection selection = context.getSelection();
+
+ // If the selection is not set or empty, look at the input element of
+ // the show in context.
+ if (!(selection instanceof IStructuredSelection) || selection.isEmpty()) {
+ Object input = context.getInput();
+ // If coming from the EGit repository viewer, the input element is
+ // org.eclipse.egit.ui.internal.history.HistoryPageInput
+ if ("org.eclipse.egit.ui.internal.history.HistoryPageInput".equals(input.getClass().getName())) { //$NON-NLS-1$
+ Bundle bundle = Platform.getBundle("org.eclipse.egit.ui"); //$NON-NLS-1$
+ if (bundle != null && bundle.getState() != Bundle.UNINSTALLED
+ && bundle.getState() != Bundle.STOPPING) {
+ selection = GitShowInContextHandler.getSelection(input);
+ }
+ }
+ }
+
+ // The selection must contain elements that can be adapted to IResource, File or IPath
+ if (selection instanceof IStructuredSelection && !selection.isEmpty()) {
+ boolean isValid = true;
+
+ // Build a new structured selection with the adapted elements
+ List<Object> elements = new ArrayList<>();
+
+ Iterator<?> iterator = ((IStructuredSelection) selection).iterator();
+ while (iterator.hasNext() && isValid) {
+ Object element = iterator.next();
+ Object adapted = null;
+
+ if (element instanceof File) {
+ if (!elements.contains(element))
+ elements.add(element);
+ continue;
+ }
+ adapted = element instanceof IAdaptable ? ((IAdaptable) element).getAdapter(File.class) : null;
+ if (adapted == null)
+ adapted = Platform.getAdapterManager().getAdapter(element, File.class);
+ if (adapted == null)
+ adapted = Platform.getAdapterManager().loadAdapter(element, File.class.getName());
+ if (adapted != null) {
+ if (!elements.contains(adapted))
+ elements.add(adapted);
+ continue;
+ }
+
+ if (element instanceof IPath) {
+ if (!elements.contains(element))
+ elements.add(element);
+ continue;
+ }
+ adapted = element instanceof IAdaptable ? ((IAdaptable) element).getAdapter(IPath.class) : null;
+ if (adapted == null)
+ adapted = Platform.getAdapterManager().getAdapter(element, IPath.class);
+ if (adapted == null)
+ adapted = Platform.getAdapterManager().loadAdapter(element, IPath.class.getName());
+ if (adapted != null) {
+ if (!elements.contains(adapted))
+ elements.add(adapted);
+ continue;
+ }
+
+ Bundle bundle = Platform.getBundle("org.eclipse.core.resources"); //$NON-NLS-1$
+ if (bundle != null && bundle.getState() != Bundle.UNINSTALLED
+ && bundle.getState() != Bundle.STOPPING) {
+ if (element instanceof org.eclipse.core.resources.IResource) {
+ if (!elements.contains(element))
+ elements.add(element);
+ continue;
+ }
+
+ adapted = element instanceof IAdaptable
+ ? ((IAdaptable) element).getAdapter(org.eclipse.core.resources.IResource.class)
+ : null;
+ if (adapted == null)
+ adapted = Platform.getAdapterManager().getAdapter(element,
+ org.eclipse.core.resources.IResource.class);
+ if (adapted == null)
+ adapted = Platform.getAdapterManager().loadAdapter(element,
+ org.eclipse.core.resources.IResource.class.getName());
+ }
+ if (adapted != null) {
+ if (!elements.contains(adapted))
+ elements.add(adapted);
+ continue;
+ }
+
+ // The EGit repository view can also set a RepositoryTreeNode (and subclasses)
+ // "org.eclipse.egit.ui.internal.repository.tree...."
+ if (element.getClass().getName().startsWith("org.eclipse.egit.ui.internal.repository.tree")) { //$NON-NLS-1$
+ bundle = Platform.getBundle("org.eclipse.egit.ui"); //$NON-NLS-1$
+ if (bundle != null && bundle.getState() != Bundle.UNINSTALLED
+ && bundle.getState() != Bundle.STOPPING) {
+ adapted = GitShowInContextHandler.getPath(element);
+ }
+ }
+ if (adapted != null) {
+ if (!elements.contains(adapted))
+ elements.add(adapted);
+ continue;
+ }
+
+ isValid = false;
+ }
+
+ // If the selection is valid, fire the command to open the local terminal
+ if (isValid) {
+ selection = new StructuredSelection(elements);
+ ICommandService service = PlatformUI.getWorkbench().getService(ICommandService.class);
+ Command command = service != null
+ ? service.getCommand("org.eclipse.tm.terminal.connector.local.command.launch") //$NON-NLS-1$
+ : null;
+ if (command != null && command.isDefined() && command.isEnabled()) {
+ try {
+ ParameterizedCommand pCmd = ParameterizedCommand.generateCommand(command, null);
+ Assert.isNotNull(pCmd);
+ IHandlerService handlerSvc = PlatformUI.getWorkbench().getService(IHandlerService.class);
+ Assert.isNotNull(handlerSvc);
+ IEvaluationContext ctx = handlerSvc.getCurrentState();
+ ctx = new EvaluationContext(ctx, selection);
+ ctx.addVariable(ISources.ACTIVE_CURRENT_SELECTION_NAME, selection);
+ handlerSvc.executeCommandInContext(pCmd, null, ctx);
+ } catch (Exception e) {
+ // If the platform is in debug mode, we print the exception to the log view
+ if (Platform.inDebugMode()) {
+ IStatus status = new Status(IStatus.ERROR, UIPlugin.getUniqueIdentifier(),
+ Messages.AbstractTriggerCommandHandler_error_executionFailed, e);
+ UIPlugin.getDefault().getLog().log(status);
+ }
+ }
+ }
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/view/TerminalsViewMementoHandler.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/view/TerminalsViewMementoHandler.java
new file mode 100644
index 00000000000..88e0ff99e4a
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/view/TerminalsViewMementoHandler.java
@@ -0,0 +1,218 @@
+/*******************************************************************************
+ * Copyright (c) 2012, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.view;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.swt.custom.CTabItem;
+import org.eclipse.tm.internal.terminal.control.ITerminalViewControl;
+import org.eclipse.tm.terminal.view.core.interfaces.constants.ITerminalsConnectorConstants;
+import org.eclipse.tm.terminal.view.ui.interfaces.ILauncherDelegate;
+import org.eclipse.tm.terminal.view.ui.interfaces.IMementoHandler;
+import org.eclipse.tm.terminal.view.ui.launcher.LauncherDelegateManager;
+import org.eclipse.ui.IMemento;
+import org.eclipse.ui.PlatformUI;
+
+/**
+ * Take care of the persisted state handling of the "Terminal" view.
+ */
+public class TerminalsViewMementoHandler {
+ // The list of items to save. See the workbench listener implementation
+ // in o.e.tm.terminal.view.ui.activator.UIPlugin.
+ private final List<CTabItem> saveables = new ArrayList<>();
+
+ /**
+ * Sets the list of saveable items.
+ *
+ * @param saveables The list of saveable items. Must not be <code>null</code>.
+ */
+ public void setSaveables(List<CTabItem> saveables) {
+ Assert.isNotNull(saveables);
+ this.saveables.clear();
+ this.saveables.addAll(saveables);
+ }
+
+ /**
+ * Saves the view state in the given memento.
+ *
+ * @param view The terminals view. Must not be <code>null</code>.
+ * @param memento The memento. Must not be <code>null</code>.
+ */
+ @SuppressWarnings("unchecked")
+ public void saveState(TerminalsView view, IMemento memento) {
+ Assert.isNotNull(view);
+ Assert.isNotNull(memento);
+
+ // Create a child element within the memento holding the
+ // connection info of the open, non-terminated tab items
+ memento = memento.createChild("terminalConnections"); //$NON-NLS-1$
+ Assert.isNotNull(memento);
+
+ // Write the view id and secondary id
+ memento.putString("id", view.getViewSite().getId()); //$NON-NLS-1$
+ memento.putString("secondaryId", view.getViewSite().getSecondaryId()); //$NON-NLS-1$
+
+ // Loop the saveable items and store the connection data of each
+ // item to the memento
+ for (CTabItem item : saveables) {
+ // Ignore disposed items
+ if (item.isDisposed())
+ continue;
+
+ // Get the original terminal properties associated with the tab item
+ Map<String, Object> properties = (Map<String, Object>) item.getData("properties"); //$NON-NLS-1$
+ if (properties == null)
+ continue;
+
+ // Get the terminal launcher delegate
+ String delegateId = (String) properties.get(ITerminalsConnectorConstants.PROP_DELEGATE_ID);
+ ILauncherDelegate delegate = delegateId != null
+ ? LauncherDelegateManager.getInstance().getLauncherDelegate(delegateId, false)
+ : null;
+ IMementoHandler mementoHandler = delegate != null
+ ? (IMementoHandler) delegate.getAdapter(IMementoHandler.class)
+ : null;
+ if (mementoHandler != null) {
+ // Create terminal connection child memento
+ IMemento connectionMemento = memento.createChild("connection"); //$NON-NLS-1$
+ Assert.isNotNull(connectionMemento);
+ // Store the common attributes
+ connectionMemento.putString(ITerminalsConnectorConstants.PROP_DELEGATE_ID, delegateId);
+
+ String terminalConnectorId = (String) properties
+ .get(ITerminalsConnectorConstants.PROP_TERMINAL_CONNECTOR_ID);
+ if (terminalConnectorId != null) {
+ connectionMemento.putString(ITerminalsConnectorConstants.PROP_TERMINAL_CONNECTOR_ID,
+ terminalConnectorId);
+ }
+
+ if (properties.get(ITerminalsConnectorConstants.PROP_FORCE_NEW) instanceof Boolean) {
+ connectionMemento.putBoolean(ITerminalsConnectorConstants.PROP_FORCE_NEW,
+ ((Boolean) properties.get(ITerminalsConnectorConstants.PROP_FORCE_NEW)).booleanValue());
+ }
+
+ // Store the current encoding
+ ITerminalViewControl terminal = (ITerminalViewControl) item.getData();
+ String encoding = terminal != null ? terminal.getEncoding() : null;
+ if (encoding == null || "".equals(encoding)) //$NON-NLS-1$
+ encoding = (String) properties.get(ITerminalsConnectorConstants.PROP_ENCODING);
+ if (encoding != null && !"".equals(encoding)) { //$NON-NLS-1$
+ connectionMemento.putString(ITerminalsConnectorConstants.PROP_ENCODING, encoding);
+ }
+
+ // Store the current working directory, or if not available, the initial working directory
+ if (terminal != null) {
+ encoding = terminal.getEncoding();
+ Optional<String> workingDirectory = terminal.getTerminalConnector().getWorkingDirectory();
+ String cwd = workingDirectory
+ .orElse((String) properties.get(ITerminalsConnectorConstants.PROP_PROCESS_WORKING_DIR));
+ if (cwd != null) {
+ connectionMemento.putString(ITerminalsConnectorConstants.PROP_PROCESS_WORKING_DIR, cwd);
+ }
+ }
+
+ // Pass on to the memento handler
+ mementoHandler.saveState(connectionMemento, properties);
+ }
+ }
+ }
+
+ /**
+ * Restore the view state from the given memento.
+ *
+ * @param view The terminals view. Must not be <code>null</code>.
+ * @param memento The memento. Must not be <code>null</code>.
+ */
+ protected void restoreState(final TerminalsView view, IMemento memento) {
+ Assert.isNotNull(view);
+ Assert.isNotNull(memento);
+
+ // Get the "terminalConnections" memento
+ memento = memento.getChild("terminalConnections"); //$NON-NLS-1$
+ if (memento != null) {
+ // Read view id and secondary id
+ String id = memento.getString("id"); //$NON-NLS-1$
+ String secondaryId = memento.getString("secondaryId"); //$NON-NLS-1$
+ if ("null".equals(secondaryId)) //$NON-NLS-1$
+ secondaryId = null;
+
+ // Get all the "connection" memento's.
+ IMemento[] connections = memento.getChildren("connection"); //$NON-NLS-1$
+ for (IMemento connection : connections) {
+ // Create the properties container that holds the terminal properties
+ Map<String, Object> properties = new HashMap<>();
+
+ // Set the view id attributes
+ properties.put(ITerminalsConnectorConstants.PROP_ID, id);
+ properties.put(ITerminalsConnectorConstants.PROP_SECONDARY_ID, secondaryId);
+
+ // Restore the common attributes
+ properties.put(ITerminalsConnectorConstants.PROP_DELEGATE_ID,
+ connection.getString(ITerminalsConnectorConstants.PROP_DELEGATE_ID));
+ properties.put(ITerminalsConnectorConstants.PROP_TERMINAL_CONNECTOR_ID,
+ connection.getString(ITerminalsConnectorConstants.PROP_TERMINAL_CONNECTOR_ID));
+ if (connection.getBoolean(ITerminalsConnectorConstants.PROP_FORCE_NEW) != null) {
+ properties.put(ITerminalsConnectorConstants.PROP_FORCE_NEW,
+ connection.getBoolean(ITerminalsConnectorConstants.PROP_FORCE_NEW));
+ }
+
+ // Restore the encoding
+ if (connection.getString(ITerminalsConnectorConstants.PROP_ENCODING) != null) {
+ properties.put(ITerminalsConnectorConstants.PROP_ENCODING,
+ connection.getString(ITerminalsConnectorConstants.PROP_ENCODING));
+ }
+
+ // Restore the working directory
+ if (connection.getString(ITerminalsConnectorConstants.PROP_PROCESS_WORKING_DIR) != null) {
+ properties.put(ITerminalsConnectorConstants.PROP_PROCESS_WORKING_DIR,
+ connection.getString(ITerminalsConnectorConstants.PROP_PROCESS_WORKING_DIR));
+ }
+
+ // Get the terminal launcher delegate
+ String delegateId = (String) properties.get(ITerminalsConnectorConstants.PROP_DELEGATE_ID);
+ ILauncherDelegate delegate = delegateId != null
+ ? LauncherDelegateManager.getInstance().getLauncherDelegate(delegateId, false)
+ : null;
+ IMementoHandler mementoHandler = delegate != null
+ ? (IMementoHandler) delegate.getAdapter(IMementoHandler.class)
+ : null;
+ if (mementoHandler != null) {
+ // Pass on to the memento handler
+ mementoHandler.restoreState(connection, properties);
+ }
+
+ // Restore the terminal connection
+ if (delegate != null && !properties.isEmpty()) {
+ delegate.execute(properties, null);
+ }
+ }
+ }
+ }
+
+ /**
+ * Executes the given runnable asynchronously in the display thread.
+ *
+ * @param runnable The runnable. Must not be <code>null</code>.
+ */
+ /* default */ void asyncExec(Runnable runnable) {
+ Assert.isNotNull(runnable);
+ if (PlatformUI.getWorkbench() != null && PlatformUI.getWorkbench().getDisplay() != null
+ && !PlatformUI.getWorkbench().getDisplay().isDisposed()) {
+ PlatformUI.getWorkbench().getDisplay().asyncExec(runnable);
+ }
+ }
+}
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/view/showin/GitShowInContextHandler.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/view/showin/GitShowInContextHandler.java
new file mode 100644
index 00000000000..9d453bbe750
--- /dev/null
+++ b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/view/showin/GitShowInContextHandler.java
@@ -0,0 +1,87 @@
+/*******************************************************************************
+ * Copyright (c) 2015, 2018 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License 2.0 which accompanies this distribution, and is
+ * available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.terminal.view.ui.view.showin;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+
+/**
+ * Git show in context handler implementation.
+ */
+@SuppressWarnings("restriction")
+public class GitShowInContextHandler {
+
+ /**
+ * Converts the data from the input object into a selection.
+ *
+ * @param input The input element. Must not be <code>null</code>.
+ * @return The selection or <code>null</code>.
+ */
+ public static ISelection getSelection(Object input) {
+ Assert.isNotNull(input);
+
+ List<Object> elements = new ArrayList<>();
+
+ if (input instanceof org.eclipse.egit.ui.internal.history.HistoryPageInput) {
+ org.eclipse.egit.ui.internal.history.HistoryPageInput inp = (org.eclipse.egit.ui.internal.history.HistoryPageInput) input;
+
+ if (inp.isSingleFile()) {
+ elements.add(inp.getSingleFile());
+ } else {
+ File[] fl = inp.getFileList();
+ if (fl != null && fl.length > 0) {
+ for (File f : fl) {
+ if (f.canRead() && !elements.contains(f)) {
+ elements.add(f);
+ }
+ }
+ }
+
+ IResource[] rl = inp.getItems();
+ if (rl != null && rl.length > 0) {
+ for (IResource r : rl) {
+ if (r.isAccessible() && !elements.contains(r)) {
+ elements.add(r);
+ }
+ }
+ }
+ }
+ }
+
+ return elements.isEmpty() ? null : new StructuredSelection(elements);
+ }
+
+ /**
+ * Returns the path of the given element.
+ *
+ * @param element The element. Must not be <code>null</code>.
+ * @return The path or <code>null</code>.
+ */
+ public static IPath getPath(Object element) {
+ Assert.isNotNull(element);
+
+ IPath path = null;
+
+ if (element instanceof org.eclipse.egit.ui.internal.repository.tree.RepositoryTreeNode) {
+ path = ((org.eclipse.egit.ui.internal.repository.tree.RepositoryTreeNode<?>) element).getPath();
+ }
+
+ return path;
+ }
+}
diff --git a/terminal/plugins/pom.xml b/terminal/plugins/pom.xml
new file mode 100644
index 00000000000..bdca9cac743
--- /dev/null
+++ b/terminal/plugins/pom.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2018, 2021 Red Hat and others.
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+ -->
+
+<project
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+ xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.cdt</groupId>
+ <artifactId>terminal-parent</artifactId>
+ <version>10.7.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>org.eclipse.tm.terminal.plugins</artifactId>
+
+ <packaging>pom</packaging>
+
+ <modules>
+ <module>org.eclipse.tm.terminal.control</module>
+
+ <module>org.eclipse.tm.terminal.connector.local</module>
+ <module>org.eclipse.tm.terminal.connector.process</module>
+ <module>org.eclipse.tm.terminal.connector.remote</module>
+ <module>org.eclipse.tm.terminal.connector.ssh</module>
+ <module>org.eclipse.tm.terminal.connector.telnet</module>
+ <module>org.eclipse.tm.terminal.connector.cdtserial</module>
+
+ <module>org.eclipse.tm.terminal.view.core</module>
+ <module>org.eclipse.tm.terminal.view.ui</module>
+
+ <module>org.eclipse.tm.terminal.test</module>
+ </modules>
+</project>
diff --git a/terminal/pom.xml b/terminal/pom.xml
new file mode 100644
index 00000000000..3ed710df676
--- /dev/null
+++ b/terminal/pom.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2018, 2021 Red Hat and others.
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+ -->
+
+<project
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+ xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.cdt</groupId>
+ <artifactId>cdt-parent</artifactId>
+ <version>10.7.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>terminal-parent</artifactId>
+ <packaging>pom</packaging>
+ <name>TM Terminal, Maven Master</name>
+
+ <modules>
+ <module>plugins</module>
+ <module>features</module>
+ </modules>
+ <profiles>
+ <profile>
+ <!-- This is a special profile that allows you to build only the terminal and its CDT hosted dependencies -->
+ <id>only-terminal</id>
+ <modules>
+ <module>repo</module>
+ <module>../releng/org.eclipse.cdt.target</module>
+ <module>../core/org.eclipse.cdt.core.linux</module>
+ <module>../core/org.eclipse.cdt.core.linux.aarch64</module>
+ <module>../core/org.eclipse.cdt.core.linux.ppc64le</module>
+ <module>../core/org.eclipse.cdt.core.linux.x86_64</module>
+ <module>../core/org.eclipse.cdt.core.macosx</module>
+ <module>../core/org.eclipse.cdt.core.native</module>
+ <module>../core/org.eclipse.cdt.core.win32</module>
+ <module>../core/org.eclipse.cdt.core.win32.x86_64</module>
+ <module>../native/org.eclipse.cdt.native.serial</module>
+ <module>../remote/org.eclipse.remote.core</module>
+ <module>../remote/org.eclipse.remote.ui</module>
+ <module>../releng/org.eclipse.cdt.native-feature</module>
+ </modules>
+ </profile>
+ </profiles>
+</project> \ No newline at end of file
diff --git a/terminal/repo/.project b/terminal/repo/.project
new file mode 100644
index 00000000000..6196b7e80b2
--- /dev/null
+++ b/terminal/repo/.project
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.cdt.terminal.repo</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ </buildSpec>
+ <natures>
+ </natures>
+</projectDescription>
diff --git a/terminal/repo/.settings/org.eclipse.core.resources.prefs b/terminal/repo/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/terminal/repo/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/terminal/repo/README.md b/terminal/repo/README.md
new file mode 100644
index 00000000000..d3d6e393f77
--- /dev/null
+++ b/terminal/repo/README.md
@@ -0,0 +1 @@
+The repo is only used when the "only-terminal" profile is activated. See root [README.md](../README.md) for more details. \ No newline at end of file
diff --git a/terminal/repo/category.xml b/terminal/repo/category.xml
new file mode 100644
index 00000000000..4cfc77e9f40
--- /dev/null
+++ b/terminal/repo/category.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<site>
+ <feature id="org.eclipse.cdt.native">
+ <category name="terminal_main"/>
+ </feature>
+ <feature id="org.eclipse.cdt.native.source">
+ <category name="terminal_sdk"/>
+ </feature>
+ <feature id="org.eclipse.tm.terminal.control.feature">
+ <category name="terminal_main"/>
+ </feature>
+ <feature id="org.eclipse.tm.terminal.control.feature.source">
+ <category name="terminal_sdk"/>
+ </feature>
+ <feature id="org.eclipse.tm.terminal.connector.local.feature">
+ <category name="terminal_main"/>
+ </feature>
+ <feature id="org.eclipse.tm.terminal.connector.local.feature.source">
+ <category name="terminal_sdk"/>
+ </feature>
+ <feature id="org.eclipse.tm.terminal.connector.cdtserial.feature">
+ <category name="terminal_main"/>
+ </feature>
+ <feature id="org.eclipse.tm.terminal.connector.cdtserial.feature.source">
+ <category name="terminal_sdk"/>
+ </feature>
+ <feature id="org.eclipse.tm.terminal.connector.ssh.feature">
+ <category name="terminal_main"/>
+ </feature>
+ <feature id="org.eclipse.tm.terminal.connector.ssh.feature.source">
+ <category name="terminal_sdk"/>
+ </feature>
+ <feature id="org.eclipse.tm.terminal.connector.telnet.feature">
+ <category name="terminal_main"/>
+ </feature>
+ <feature id="org.eclipse.tm.terminal.connector.telnet.feature.source">
+ <category name="terminal_sdk"/>
+ </feature>
+ <feature id="org.eclipse.tm.terminal.connector.remote.feature">
+ <category name="terminal_main"/>
+ </feature>
+ <feature id="org.eclipse.tm.terminal.connector.remote.feature.source">
+ <category name="terminal_sdk"/>
+ </feature>
+ <feature id="org.eclipse.tm.terminal.view.feature">
+ <category name="terminal_main"/>
+ </feature>
+ <feature id="org.eclipse.tm.terminal.view.feature.source">
+ <category name="terminal_sdk"/>
+ </feature>
+ <feature id="org.eclipse.tm.terminal.feature">
+ <category name="terminal_main"/>
+ </feature>
+ <feature id="org.eclipse.tm.terminal.feature.source">
+ <category name="terminal_sdk"/>
+ </feature>
+ <category-def name="terminal_main" label="Terminal Features">
+ <description>
+ TM Terminal Features
+ </description>
+ </category-def>
+ <category-def name="terminal_sdk" label="Terminal SDK Features">
+ <description>
+ TM Terminal SDK Features
+ </description>
+ </category-def>
+</site>
diff --git a/terminal/repo/pom.xml b/terminal/repo/pom.xml
new file mode 100644
index 00000000000..a786bb80bb2
--- /dev/null
+++ b/terminal/repo/pom.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2011, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
+<project
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+ xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.cdt</groupId>
+ <artifactId>cdt-parent</artifactId>
+ <version>10.7.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent>
+
+ <version>8.2.0-SNAPSHOT</version>
+ <artifactId>org.eclipse.cdt.terminal.repo</artifactId>
+ <packaging>eclipse-repository</packaging>
+
+ <build>
+ <finalName>${project.artifactId}</finalName>
+ </build>
+</project>
diff --git a/testsrunner/org.eclipse.cdt.testsrunner.boost/.classpath b/testsrunner/org.eclipse.cdt.testsrunner.boost/.classpath
index 01836c4842f..e801ebfb468 100644
--- a/testsrunner/org.eclipse.cdt.testsrunner.boost/.classpath
+++ b/testsrunner/org.eclipse.cdt.testsrunner.boost/.classpath
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/testsrunner/org.eclipse.cdt.testsrunner.boost/.settings/org.eclipse.core.resources.prefs b/testsrunner/org.eclipse.cdt.testsrunner.boost/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/testsrunner/org.eclipse.cdt.testsrunner.boost/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/testsrunner/org.eclipse.cdt.testsrunner.boost/.settings/org.eclipse.jdt.core.prefs b/testsrunner/org.eclipse.cdt.testsrunner.boost/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/testsrunner/org.eclipse.cdt.testsrunner.boost/.settings/org.eclipse.jdt.core.prefs
+++ b/testsrunner/org.eclipse.cdt.testsrunner.boost/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/testsrunner/org.eclipse.cdt.testsrunner.boost/.settings/org.eclipse.jdt.ui.prefs b/testsrunner/org.eclipse.cdt.testsrunner.boost/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/testsrunner/org.eclipse.cdt.testsrunner.boost/.settings/org.eclipse.jdt.ui.prefs
+++ b/testsrunner/org.eclipse.cdt.testsrunner.boost/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/testsrunner/org.eclipse.cdt.testsrunner.boost/META-INF/MANIFEST.MF b/testsrunner/org.eclipse.cdt.testsrunner.boost/META-INF/MANIFEST.MF
index 0ca7b33ab78..d0ed32634b0 100644
--- a/testsrunner/org.eclipse.cdt.testsrunner.boost/META-INF/MANIFEST.MF
+++ b/testsrunner/org.eclipse.cdt.testsrunner.boost/META-INF/MANIFEST.MF
@@ -2,12 +2,12 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.testsrunner.boost;singleton:=true
-Bundle-Version: 7.0.1.qualifier
+Bundle-Version: 7.1.100.qualifier
Bundle-Activator: org.eclipse.cdt.testsrunner.internal.boost.BoostTestsRunnerPlugin
Bundle-Vendor: %providerName
Bundle-Localization: plugin
Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Require-Bundle: org.eclipse.core.runtime;bundle-version="3.5.0",
org.eclipse.cdt.testsrunner;bundle-version="3.5.0"
Export-Package: org.eclipse.cdt.testsrunner.internal.boost;x-friends:="org.eclipse.cdt.testsrunner.tests"
diff --git a/testsrunner/org.eclipse.cdt.testsrunner.boost/about.html b/testsrunner/org.eclipse.cdt.testsrunner.boost/about.html
index 164f781a8fd..b3134865230 100644
--- a/testsrunner/org.eclipse.cdt.testsrunner.boost/about.html
+++ b/testsrunner/org.eclipse.cdt.testsrunner.boost/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/testsrunner/org.eclipse.cdt.testsrunner.feature/.settings/org.eclipse.core.resources.prefs b/testsrunner/org.eclipse.cdt.testsrunner.feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/testsrunner/org.eclipse.cdt.testsrunner.feature/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/testsrunner/org.eclipse.cdt.testsrunner.feature/feature.xml b/testsrunner/org.eclipse.cdt.testsrunner.feature/feature.xml
index 86d73e7b53c..ba394a5c4a9 100644
--- a/testsrunner/org.eclipse.cdt.testsrunner.feature/feature.xml
+++ b/testsrunner/org.eclipse.cdt.testsrunner.feature/feature.xml
@@ -1,9 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2012, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<feature
id="org.eclipse.cdt.testsrunner.feature"
label="%featureName"
- version="9.10.0.qualifier"
+ version="10.7.0.qualifier"
provider-name="%providerName"
+ plugin="org.eclipse.cdt.testsrunner"
license-feature="org.eclipse.license"
license-feature-version="0.0.0">
diff --git a/testsrunner/org.eclipse.cdt.testsrunner.gtest/.classpath b/testsrunner/org.eclipse.cdt.testsrunner.gtest/.classpath
index 01836c4842f..e801ebfb468 100644
--- a/testsrunner/org.eclipse.cdt.testsrunner.gtest/.classpath
+++ b/testsrunner/org.eclipse.cdt.testsrunner.gtest/.classpath
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/testsrunner/org.eclipse.cdt.testsrunner.gtest/.settings/org.eclipse.core.resources.prefs b/testsrunner/org.eclipse.cdt.testsrunner.gtest/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/testsrunner/org.eclipse.cdt.testsrunner.gtest/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/testsrunner/org.eclipse.cdt.testsrunner.gtest/.settings/org.eclipse.jdt.core.prefs b/testsrunner/org.eclipse.cdt.testsrunner.gtest/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/testsrunner/org.eclipse.cdt.testsrunner.gtest/.settings/org.eclipse.jdt.core.prefs
+++ b/testsrunner/org.eclipse.cdt.testsrunner.gtest/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/testsrunner/org.eclipse.cdt.testsrunner.gtest/.settings/org.eclipse.jdt.ui.prefs b/testsrunner/org.eclipse.cdt.testsrunner.gtest/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/testsrunner/org.eclipse.cdt.testsrunner.gtest/.settings/org.eclipse.jdt.ui.prefs
+++ b/testsrunner/org.eclipse.cdt.testsrunner.gtest/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/testsrunner/org.eclipse.cdt.testsrunner.gtest/META-INF/MANIFEST.MF b/testsrunner/org.eclipse.cdt.testsrunner.gtest/META-INF/MANIFEST.MF
index 130954fbc0e..a0b1727a554 100644
--- a/testsrunner/org.eclipse.cdt.testsrunner.gtest/META-INF/MANIFEST.MF
+++ b/testsrunner/org.eclipse.cdt.testsrunner.gtest/META-INF/MANIFEST.MF
@@ -2,12 +2,12 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.testsrunner.gtest;singleton:=true
-Bundle-Version: 7.0.1.qualifier
+Bundle-Version: 7.1.100.qualifier
Bundle-Activator: org.eclipse.cdt.testsrunner.internal.gtest.GoogleTestsRunnerPlugin
Bundle-Vendor: %providerName
Bundle-Localization: plugin
Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Require-Bundle: org.eclipse.core.runtime;bundle-version="3.5.0",
org.eclipse.cdt.testsrunner;bundle-version="3.5.0"
Export-Package: org.eclipse.cdt.testsrunner.internal.gtest;x-friends:="org.eclipse.cdt.testsrunner.tests"
diff --git a/testsrunner/org.eclipse.cdt.testsrunner.gtest/about.html b/testsrunner/org.eclipse.cdt.testsrunner.gtest/about.html
index 164f781a8fd..b3134865230 100644
--- a/testsrunner/org.eclipse.cdt.testsrunner.gtest/about.html
+++ b/testsrunner/org.eclipse.cdt.testsrunner.gtest/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/testsrunner/org.eclipse.cdt.testsrunner.qttest/.classpath b/testsrunner/org.eclipse.cdt.testsrunner.qttest/.classpath
index 01836c4842f..e801ebfb468 100644
--- a/testsrunner/org.eclipse.cdt.testsrunner.qttest/.classpath
+++ b/testsrunner/org.eclipse.cdt.testsrunner.qttest/.classpath
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/testsrunner/org.eclipse.cdt.testsrunner.qttest/.settings/org.eclipse.core.resources.prefs b/testsrunner/org.eclipse.cdt.testsrunner.qttest/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/testsrunner/org.eclipse.cdt.testsrunner.qttest/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/testsrunner/org.eclipse.cdt.testsrunner.qttest/.settings/org.eclipse.jdt.core.prefs b/testsrunner/org.eclipse.cdt.testsrunner.qttest/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/testsrunner/org.eclipse.cdt.testsrunner.qttest/.settings/org.eclipse.jdt.core.prefs
+++ b/testsrunner/org.eclipse.cdt.testsrunner.qttest/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/testsrunner/org.eclipse.cdt.testsrunner.qttest/.settings/org.eclipse.jdt.ui.prefs b/testsrunner/org.eclipse.cdt.testsrunner.qttest/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/testsrunner/org.eclipse.cdt.testsrunner.qttest/.settings/org.eclipse.jdt.ui.prefs
+++ b/testsrunner/org.eclipse.cdt.testsrunner.qttest/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/testsrunner/org.eclipse.cdt.testsrunner.qttest/META-INF/MANIFEST.MF b/testsrunner/org.eclipse.cdt.testsrunner.qttest/META-INF/MANIFEST.MF
index a6265969666..1a93bad82dd 100644
--- a/testsrunner/org.eclipse.cdt.testsrunner.qttest/META-INF/MANIFEST.MF
+++ b/testsrunner/org.eclipse.cdt.testsrunner.qttest/META-INF/MANIFEST.MF
@@ -2,12 +2,12 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.testsrunner.qttest;singleton:=true
-Bundle-Version: 7.0.1.qualifier
+Bundle-Version: 7.1.100.qualifier
Bundle-Activator: org.eclipse.cdt.testsrunner.internal.qttest.QtTestsRunnerPlugin
Bundle-Vendor: %providerName
Bundle-Localization: plugin
Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Require-Bundle: org.eclipse.core.runtime;bundle-version="3.5.0",
org.eclipse.cdt.testsrunner;bundle-version="3.5.0"
Export-Package: org.eclipse.cdt.testsrunner.internal.qttest;x-friends:="org.eclipse.cdt.testsrunner.tests"
diff --git a/testsrunner/org.eclipse.cdt.testsrunner.qttest/about.html b/testsrunner/org.eclipse.cdt.testsrunner.qttest/about.html
index 164f781a8fd..b3134865230 100644
--- a/testsrunner/org.eclipse.cdt.testsrunner.qttest/about.html
+++ b/testsrunner/org.eclipse.cdt.testsrunner.qttest/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/testsrunner/org.eclipse.cdt.testsrunner.tap/.classpath b/testsrunner/org.eclipse.cdt.testsrunner.tap/.classpath
index 01836c4842f..e801ebfb468 100644
--- a/testsrunner/org.eclipse.cdt.testsrunner.tap/.classpath
+++ b/testsrunner/org.eclipse.cdt.testsrunner.tap/.classpath
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/testsrunner/org.eclipse.cdt.testsrunner.tap/.settings/org.eclipse.core.resources.prefs b/testsrunner/org.eclipse.cdt.testsrunner.tap/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/testsrunner/org.eclipse.cdt.testsrunner.tap/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/testsrunner/org.eclipse.cdt.testsrunner.tap/.settings/org.eclipse.jdt.core.prefs b/testsrunner/org.eclipse.cdt.testsrunner.tap/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/testsrunner/org.eclipse.cdt.testsrunner.tap/.settings/org.eclipse.jdt.core.prefs
+++ b/testsrunner/org.eclipse.cdt.testsrunner.tap/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/testsrunner/org.eclipse.cdt.testsrunner.tap/.settings/org.eclipse.jdt.ui.prefs b/testsrunner/org.eclipse.cdt.testsrunner.tap/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/testsrunner/org.eclipse.cdt.testsrunner.tap/.settings/org.eclipse.jdt.ui.prefs
+++ b/testsrunner/org.eclipse.cdt.testsrunner.tap/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/testsrunner/org.eclipse.cdt.testsrunner.tap/META-INF/MANIFEST.MF b/testsrunner/org.eclipse.cdt.testsrunner.tap/META-INF/MANIFEST.MF
index b02c2398cd2..ab0da7a1aa8 100644
--- a/testsrunner/org.eclipse.cdt.testsrunner.tap/META-INF/MANIFEST.MF
+++ b/testsrunner/org.eclipse.cdt.testsrunner.tap/META-INF/MANIFEST.MF
@@ -2,12 +2,12 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.testsrunner.tap;singleton:=true
-Bundle-Version: 1.0.1.qualifier
+Bundle-Version: 1.1.100.qualifier
Bundle-Activator: org.eclipse.cdt.testsrunner.internal.tap.TAPTestsRunnerPlugin
Bundle-Vendor: %providerName
Bundle-Localization: plugin
Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Require-Bundle: org.eclipse.core.runtime;bundle-version="3.5.0",
org.eclipse.cdt.testsrunner;bundle-version="3.5.0"
Export-Package: org.eclipse.cdt.testsrunner.internal.tap;x-friends:="org.eclipse.cdt.testsrunner.tests"
diff --git a/testsrunner/org.eclipse.cdt.testsrunner.tap/about.html b/testsrunner/org.eclipse.cdt.testsrunner.tap/about.html
index 164f781a8fd..b3134865230 100644
--- a/testsrunner/org.eclipse.cdt.testsrunner.tap/about.html
+++ b/testsrunner/org.eclipse.cdt.testsrunner.tap/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/testsrunner/org.eclipse.cdt.testsrunner.tests/.classpath b/testsrunner/org.eclipse.cdt.testsrunner.tests/.classpath
index eca7bdba8f0..a42a828e04a 100644
--- a/testsrunner/org.eclipse.cdt.testsrunner.tests/.classpath
+++ b/testsrunner/org.eclipse.cdt.testsrunner.tests/.classpath
@@ -1,7 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="src" path="src"/>
+ <classpathentry kind="src" path="src">
+ <attributes>
+ <attribute name="test" value="true"/>
+ </attributes>
+ </classpathentry>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/testsrunner/org.eclipse.cdt.testsrunner.tests/.settings/org.eclipse.core.resources.prefs b/testsrunner/org.eclipse.cdt.testsrunner.tests/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/testsrunner/org.eclipse.cdt.testsrunner.tests/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/testsrunner/org.eclipse.cdt.testsrunner.tests/.settings/org.eclipse.jdt.core.prefs b/testsrunner/org.eclipse.cdt.testsrunner.tests/.settings/org.eclipse.jdt.core.prefs
index ad05599159f..5b1c443114d 100644
--- a/testsrunner/org.eclipse.cdt.testsrunner.tests/.settings/org.eclipse.jdt.core.prefs
+++ b/testsrunner/org.eclipse.cdt.testsrunner.tests/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/testsrunner/org.eclipse.cdt.testsrunner.tests/.settings/org.eclipse.jdt.ui.prefs b/testsrunner/org.eclipse.cdt.testsrunner.tests/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/testsrunner/org.eclipse.cdt.testsrunner.tests/.settings/org.eclipse.jdt.ui.prefs
+++ b/testsrunner/org.eclipse.cdt.testsrunner.tests/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/testsrunner/org.eclipse.cdt.testsrunner.tests/META-INF/MANIFEST.MF b/testsrunner/org.eclipse.cdt.testsrunner.tests/META-INF/MANIFEST.MF
index 75f548d90a2..eff14a0593c 100644
--- a/testsrunner/org.eclipse.cdt.testsrunner.tests/META-INF/MANIFEST.MF
+++ b/testsrunner/org.eclipse.cdt.testsrunner.tests/META-INF/MANIFEST.MF
@@ -13,7 +13,7 @@ Require-Bundle: org.junit,
org.eclipse.cdt.testsrunner.gtest;bundle-version="7.0.0",
org.eclipse.cdt.testsrunner.tap;bundle-version="1.0.0"
Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-Vendor: %Bundle-Vendor
Export-Package: org.eclipse.cdt.testsrunner.core,
org.eclipse.cdt.testsrunner.test,
diff --git a/testsrunner/org.eclipse.cdt.testsrunner.tests/about.html b/testsrunner/org.eclipse.cdt.testsrunner.tests/about.html
index 164f781a8fd..b3134865230 100644
--- a/testsrunner/org.eclipse.cdt.testsrunner.tests/about.html
+++ b/testsrunner/org.eclipse.cdt.testsrunner.tests/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/testsrunner/org.eclipse.cdt.testsrunner/.classpath b/testsrunner/org.eclipse.cdt.testsrunner/.classpath
index 01836c4842f..e801ebfb468 100644
--- a/testsrunner/org.eclipse.cdt.testsrunner/.classpath
+++ b/testsrunner/org.eclipse.cdt.testsrunner/.classpath
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/testsrunner/org.eclipse.cdt.testsrunner/.settings/.api_filters b/testsrunner/org.eclipse.cdt.testsrunner/.settings/.api_filters
new file mode 100644
index 00000000000..75201181b35
--- /dev/null
+++ b/testsrunner/org.eclipse.cdt.testsrunner/.settings/.api_filters
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<component id="org.eclipse.cdt.testsrunner" version="2">
+ <resource path="src/org/eclipse/cdt/testsrunner/internal/launcher/TestsRunnerProviderInfo.java" type="org.eclipse.cdt.testsrunner.internal.launcher.TestsRunnerProviderInfo">
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
+ <message_arguments>
+ <message_argument value="ITestsRunnerProviderInfo"/>
+ <message_argument value="TestsRunnerProviderInfo"/>
+ </message_arguments>
+ </filter>
+ </resource>
+ <resource path="src/org/eclipse/cdt/testsrunner/internal/model/TestCase.java" type="org.eclipse.cdt.testsrunner.internal.model.TestCase">
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
+ <message_arguments>
+ <message_argument value="ITestCase"/>
+ <message_argument value="TestCase"/>
+ </message_arguments>
+ </filter>
+ </resource>
+ <resource path="src/org/eclipse/cdt/testsrunner/internal/model/TestItem.java" type="org.eclipse.cdt.testsrunner.internal.model.TestItem">
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
+ <message_arguments>
+ <message_argument value="ITestItem"/>
+ <message_argument value="TestItem"/>
+ </message_arguments>
+ </filter>
+ </resource>
+ <resource path="src/org/eclipse/cdt/testsrunner/internal/model/TestLocation.java" type="org.eclipse.cdt.testsrunner.internal.model.TestLocation">
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
+ <message_arguments>
+ <message_argument value="ITestLocation"/>
+ <message_argument value="TestLocation"/>
+ </message_arguments>
+ </filter>
+ </resource>
+ <resource path="src/org/eclipse/cdt/testsrunner/internal/model/TestMessage.java" type="org.eclipse.cdt.testsrunner.internal.model.TestMessage">
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
+ <message_arguments>
+ <message_argument value="ITestMessage"/>
+ <message_argument value="TestMessage"/>
+ </message_arguments>
+ </filter>
+ </resource>
+ <resource path="src/org/eclipse/cdt/testsrunner/internal/model/TestModelManager.java" type="org.eclipse.cdt.testsrunner.internal.model.TestModelManager">
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
+ <message_arguments>
+ <message_argument value="ITestModelAccessor"/>
+ <message_argument value="TestModelManager"/>
+ </message_arguments>
+ </filter>
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
+ <message_arguments>
+ <message_argument value="ITestModelUpdater"/>
+ <message_argument value="TestModelManager"/>
+ </message_arguments>
+ </filter>
+ </resource>
+ <resource path="src/org/eclipse/cdt/testsrunner/internal/model/TestSuite.java" type="org.eclipse.cdt.testsrunner.internal.model.TestSuite">
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
+ <message_arguments>
+ <message_argument value="ITestSuite"/>
+ <message_argument value="TestSuite"/>
+ </message_arguments>
+ </filter>
+ </resource>
+ <resource path="src/org/eclipse/cdt/testsrunner/internal/model/TestingSession.java" type="org.eclipse.cdt.testsrunner.internal.model.TestingSession">
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
+ <message_arguments>
+ <message_argument value="ITestingSession"/>
+ <message_argument value="TestingSession"/>
+ </message_arguments>
+ </filter>
+ </resource>
+ <resource path="src/org/eclipse/cdt/testsrunner/internal/ui/view/DummyUISession.java" type="org.eclipse.cdt.testsrunner.internal.ui.view.DummyUISession">
+ <filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
+ <message_arguments>
+ <message_argument value="ITestingSession"/>
+ <message_argument value="DummyUISession"/>
+ </message_arguments>
+ </filter>
+ </resource>
+</component>
diff --git a/testsrunner/org.eclipse.cdt.testsrunner/.settings/org.eclipse.core.resources.prefs b/testsrunner/org.eclipse.cdt.testsrunner/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/testsrunner/org.eclipse.cdt.testsrunner/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/testsrunner/org.eclipse.cdt.testsrunner/.settings/org.eclipse.jdt.core.prefs b/testsrunner/org.eclipse.cdt.testsrunner/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/testsrunner/org.eclipse.cdt.testsrunner/.settings/org.eclipse.jdt.core.prefs
+++ b/testsrunner/org.eclipse.cdt.testsrunner/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/testsrunner/org.eclipse.cdt.testsrunner/.settings/org.eclipse.jdt.ui.prefs b/testsrunner/org.eclipse.cdt.testsrunner/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/testsrunner/org.eclipse.cdt.testsrunner/.settings/org.eclipse.jdt.ui.prefs
+++ b/testsrunner/org.eclipse.cdt.testsrunner/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/testsrunner/org.eclipse.cdt.testsrunner/META-INF/MANIFEST.MF b/testsrunner/org.eclipse.cdt.testsrunner/META-INF/MANIFEST.MF
index 423350bb841..f730dd24a98 100644
--- a/testsrunner/org.eclipse.cdt.testsrunner/META-INF/MANIFEST.MF
+++ b/testsrunner/org.eclipse.cdt.testsrunner/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.testsrunner;singleton:=true
-Bundle-Version: 8.1.200.qualifier
+Bundle-Version: 8.2.400.qualifier
Bundle-Activator: org.eclipse.cdt.testsrunner.internal.TestsRunnerPlugin
Bundle-Vendor: %providerName
Bundle-Localization: plugin
@@ -17,7 +17,7 @@ Require-Bundle: org.eclipse.ui,
org.eclipse.cdt.dsf.gdb.ui,
org.eclipse.cdt.dsf.gdb
Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Import-Package: org.eclipse.cdt.dsf.gdb.launching,
org.eclipse.cdt.internal.ui.viewsupport,
org.eclipse.cdt.launch,
diff --git a/testsrunner/org.eclipse.cdt.testsrunner/about.html b/testsrunner/org.eclipse.cdt.testsrunner/about.html
index 164f781a8fd..b3134865230 100644
--- a/testsrunner/org.eclipse.cdt.testsrunner/about.html
+++ b/testsrunner/org.eclipse.cdt.testsrunner/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/testsrunner/org.eclipse.cdt.testsrunner/about.ini b/testsrunner/org.eclipse.cdt.testsrunner/about.ini
new file mode 100644
index 00000000000..e07a7bb377e
--- /dev/null
+++ b/testsrunner/org.eclipse.cdt.testsrunner/about.ini
@@ -0,0 +1,24 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%blurb
+
+# Property "windowImage" contains path to window icon (16x16)
+# needed for primary features only
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=cdt_logo_icon32.png
+
+# Property "aboutImage" contains path to product image (500x330 or 115x164)
+# needed for primary features only
+
+# Property "appName" contains name of the application (translated)
+# needed for primary features only
+
+# Property "welcomePerspective" contains the id of the perspective in which the
+# welcome page is to be opened.
+# optional
diff --git a/testsrunner/org.eclipse.cdt.testsrunner/about.mappings b/testsrunner/org.eclipse.cdt.testsrunner/about.mappings
new file mode 100644
index 00000000000..936a8039c3e
--- /dev/null
+++ b/testsrunner/org.eclipse.cdt.testsrunner/about.mappings
@@ -0,0 +1,9 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+# The following should contain the build version.
+# e.g. "0=20200106-1728"
+# This value will be added automatically via the build scripts
+0=${buildId}
diff --git a/testsrunner/org.eclipse.cdt.testsrunner/about.properties b/testsrunner/org.eclipse.cdt.testsrunner/about.properties
new file mode 100644
index 00000000000..af77b792db9
--- /dev/null
+++ b/testsrunner/org.eclipse.cdt.testsrunner/about.properties
@@ -0,0 +1,32 @@
+###############################################################################
+# Copyright (c) 2012, 2022 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+# about.properties
+# contains externalized strings for about.ini
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# fill-ins are supplied by about.mappings
+# This file should be translated.
+# NOTE TO TRANSLATOR: Please do not translate the featureVersion variable.
+
+
+blurb=C/C++ Unit Testing Support\n\
+\n\
+Version: {featureVersion}\n\
+Build id: {0}\n\
+\n\
+Copyright (c) 2012, 2022 Contributors to the Eclipse Foundation
+\n\
+See the NOTICE file(s) distributed with this work for additional\n\
+information regarding copyright ownership.\n\
+\n\
+Visit http://www.eclipse.org/cdt
diff --git a/testsrunner/org.eclipse.cdt.testsrunner/build.properties b/testsrunner/org.eclipse.cdt.testsrunner/build.properties
index bd6bc530ff5..49ff3cedb3f 100644
--- a/testsrunner/org.eclipse.cdt.testsrunner/build.properties
+++ b/testsrunner/org.eclipse.cdt.testsrunner/build.properties
@@ -17,7 +17,11 @@ bin.includes = plugin.xml,\
icons/,\
about.html,\
.,\
- META-INF/
+ META-INF/,\
+ about.ini,\
+ about.mappings,\
+ about.properties,\
+ cdt_logo_icon32.png
javadoc.packages = org.eclipse.cdt.launch.ui.*,\
org.eclipse.cdt.launch.sourcelookup*,\
org.eclipse.cdt.launch.*
diff --git a/testsrunner/org.eclipse.cdt.testsrunner/cdt_logo_icon32.png b/testsrunner/org.eclipse.cdt.testsrunner/cdt_logo_icon32.png
new file mode 100644
index 00000000000..470ca81b327
--- /dev/null
+++ b/testsrunner/org.eclipse.cdt.testsrunner/cdt_logo_icon32.png
Binary files differ
diff --git a/testsrunner/org.eclipse.cdt.testsrunner/src/org/eclipse/cdt/testsrunner/internal/ui/view/ResultsView.java b/testsrunner/org.eclipse.cdt.testsrunner/src/org/eclipse/cdt/testsrunner/internal/ui/view/ResultsView.java
index 03bb3134084..5b86ae620c3 100644
--- a/testsrunner/org.eclipse.cdt.testsrunner/src/org/eclipse/cdt/testsrunner/internal/ui/view/ResultsView.java
+++ b/testsrunner/org.eclipse.cdt.testsrunner/src/org/eclipse/cdt/testsrunner/internal/ui/view/ResultsView.java
@@ -43,6 +43,7 @@ import org.eclipse.ui.IMemento;
import org.eclipse.ui.IViewSite;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.actions.ActionFactory;
import org.eclipse.ui.part.ViewPart;
@@ -121,7 +122,7 @@ public class ResultsView extends ViewPart {
@Override
public void createPartControl(Composite parent) {
sessionsManager = TestsRunnerPlugin.getDefault().getTestingSessionsManager();
- IWorkbench workbench = TestsRunnerPlugin.getDefault().getWorkbench();
+ IWorkbench workbench = PlatformUI.getWorkbench();
Clipboard clipboard = new Clipboard(parent.getDisplay());
this.parent = parent;
diff --git a/testsrunner/org.eclipse.cdt.testsrunner/src/org/eclipse/cdt/testsrunner/internal/ui/view/actions/HistoryDropDownAction.java b/testsrunner/org.eclipse.cdt.testsrunner/src/org/eclipse/cdt/testsrunner/internal/ui/view/actions/HistoryDropDownAction.java
index 393ce9e367a..a8bf6788a80 100644
--- a/testsrunner/org.eclipse.cdt.testsrunner/src/org/eclipse/cdt/testsrunner/internal/ui/view/actions/HistoryDropDownAction.java
+++ b/testsrunner/org.eclipse.cdt.testsrunner/src/org/eclipse/cdt/testsrunner/internal/ui/view/actions/HistoryDropDownAction.java
@@ -103,7 +103,7 @@ public class HistoryDropDownAction extends Action {
* Fills the testing sessions history list.
*/
private void createHistoryList() {
- IListAdapter<ITestingSession> adapter = new IListAdapter<ITestingSession>() {
+ IListAdapter<ITestingSession> adapter = new IListAdapter<>() {
@Override
public void customButtonPressed(ListDialogField<ITestingSession> field, int index) {
doCustomButtonPressed(index);
diff --git a/testsrunner/org.eclipse.cdt.testsrunner/src/org/eclipse/cdt/testsrunner/launcher/BaseTestsLaunchDelegate.java b/testsrunner/org.eclipse.cdt.testsrunner/src/org/eclipse/cdt/testsrunner/launcher/BaseTestsLaunchDelegate.java
index 3da86e1c9e3..72aa6076124 100644
--- a/testsrunner/org.eclipse.cdt.testsrunner/src/org/eclipse/cdt/testsrunner/launcher/BaseTestsLaunchDelegate.java
+++ b/testsrunner/org.eclipse.cdt.testsrunner/src/org/eclipse/cdt/testsrunner/launcher/BaseTestsLaunchDelegate.java
@@ -43,6 +43,7 @@ import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
/**
* Launch delegate implementation that redirects its queries to the preferred
@@ -239,11 +240,10 @@ public abstract class BaseTestsLaunchDelegate extends LaunchConfigurationDelegat
private void activateTestingView() {
Display.getDefault().syncExec(() -> {
try {
- IWorkbenchWindow activeWindow = TestsRunnerPlugin.getDefault().getWorkbench()
- .getActiveWorkbenchWindow();
+ IWorkbenchWindow activeWindow = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
IViewPart view = activeWindow.getActivePage()
.showView(ITestsRunnerConstants.TESTS_RUNNER_RESULTS_VIEW_ID);
- TestsRunnerPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getActivePage().activate(view);
+ PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().activate(view);
} catch (PartInitException e) {
TestsRunnerPlugin.log(e);
}
diff --git a/testsrunner/pom.xml b/testsrunner/pom.xml
index 20328818483..29696158ef6 100644
--- a/testsrunner/pom.xml
+++ b/testsrunner/pom.xml
@@ -1,4 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2011, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
@@ -7,7 +17,7 @@
<parent>
<groupId>org.eclipse.cdt</groupId>
<artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
+ <version>10.7.0-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.cdt.testsrunner-parent</artifactId>
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino-feature/.project b/toolchains/arduino/org.eclipse.cdt.arduino-feature/.project
deleted file mode 100644
index 6e3a64802ea..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino-feature/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.cdt.arduino-feature</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.pde.FeatureBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.pde.FeatureNature</nature>
- </natures>
-</projectDescription>
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino-feature/feature.properties b/toolchains/arduino/org.eclipse.cdt.arduino-feature/feature.properties
deleted file mode 100644
index 61426790cad..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino-feature/feature.properties
+++ /dev/null
@@ -1,35 +0,0 @@
-###############################################################################
-# Copyright (c) 2015 QNX Software Systems and others
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# QNX Software Systems - initial API and implementation
-###############################################################################
-# features.properties
-# contains externalized strings for feature.xml
-# "%foo" in feature.xml corresponds to the key "foo" in this file
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# This file should be translated.
-
-# "featureName" property - name of the feature
-featureName=Arduino C++ Tools
-
-# "providerName" property - name of the company that provides the feature
-providerName=Eclipse CDT
-
-# "description" property - description of the feature
-description=Extensions to support Arduino C++ projects in Eclipse
-
-# copyright
-copyright=\
-Copyright (c) 2015 QNX Software Systems and others.\n\
-This program and the accompanying materials\n\
-are made available under the terms of the Eclipse Public License 2.0\n\
-which accompanies this distribution, and is available at\n\
-https://www.eclipse.org/legal/epl-2.0/
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino-feature/feature.xml b/toolchains/arduino/org.eclipse.cdt.arduino-feature/feature.xml
deleted file mode 100644
index 09cca3645f9..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino-feature/feature.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
- id="org.eclipse.cdt.arduino"
- label="%featureName"
- version="9.10.0.qualifier"
- provider-name="%providerName"
- plugin="org.eclipse.cdt.arduino.ui"
- license-feature="org.eclipse.license"
- license-feature-version="0.0.0">
-
- <description>
- %description
- </description>
-
- <copyright>
- %copyright
- </copyright>
-
- <license url="%licenseURL">
- %license
- </license>
-
- <requires>
- <import feature="org.eclipse.launchbar" version="1.0.0"/>
- <import feature="org.eclipse.remote.serial" version="1.0.0"/>
- <import feature="org.eclipse.remote" version="2.0.0"/>
- <import feature="org.eclipse.remote.console" version="2.0.0"/>
- <import feature="org.eclipse.cdt" version="9.10.0"/>
- <import feature="org.eclipse.launchbar.remote" version="1.0.0"/>
- </requires>
-
- <plugin
- id="org.eclipse.cdt.arduino.core"
- download-size="0"
- install-size="0"
- version="0.0.0"
- unpack="false"/>
-
- <plugin
- id="org.eclipse.cdt.arduino.ui"
- download-size="0"
- install-size="0"
- version="0.0.0"
- unpack="false"/>
-
- <plugin
- id="org.eclipse.tools.templates.freemarker.java11"
- download-size="0"
- install-size="0"
- version="0.0.0"
- fragment="true"
- unpack="false"/>
-
-</feature>
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino-feature/p2.inf b/toolchains/arduino/org.eclipse.cdt.arduino-feature/p2.inf
deleted file mode 100644
index fee4c603ea7..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino-feature/p2.inf
+++ /dev/null
@@ -1,3 +0,0 @@
-instructions.configure=\
-org.eclipse.equinox.p2.touchpoint.eclipse.addRepository(location:http${#58}//download.eclipse.org/tools/cdt/arduino/neon/,type:0,name:Arduino Neon,enabled:true); \
-org.eclipse.equinox.p2.touchpoint.eclipse.addRepository(location:http${#58}//download.eclipse.org/tools/cdt/arduino/neon/,type:1,name:Arduino Neon,enabled:true);
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core.tests/.classpath b/toolchains/arduino/org.eclipse.cdt.arduino.core.tests/.classpath
deleted file mode 100644
index eca7bdba8f0..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core.tests/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
- <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core.tests/.project b/toolchains/arduino/org.eclipse.cdt.arduino.core.tests/.project
deleted file mode 100644
index c1028c61db7..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core.tests/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.cdt.arduino.core.tests</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.ManifestBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.SchemaBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.pde.PluginNature</nature>
- <nature>org.eclipse.jdt.core.javanature</nature>
- </natures>
-</projectDescription>
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core.tests/.settings/org.eclipse.jdt.core.prefs b/toolchains/arduino/org.eclipse.cdt.arduino.core.tests/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index ad05599159f..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core.tests/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,464 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
-org.eclipse.jdt.core.codeComplete.argumentPrefixes=
-org.eclipse.jdt.core.codeComplete.argumentSuffixes=
-org.eclipse.jdt.core.codeComplete.fieldPrefixes=
-org.eclipse.jdt.core.codeComplete.fieldSuffixes=
-org.eclipse.jdt.core.codeComplete.localPrefixes=
-org.eclipse.jdt.core.codeComplete.localSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
-org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
-org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
-org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
-org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
-org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
-org.eclipse.jdt.core.compiler.problem.APILeak=warning
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=ignore
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
-org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
-org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
-org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
-org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
-org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
-org.eclipse.jdt.core.compiler.problem.nullReference=error
-org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
-org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
-org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
-org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
-org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
-org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
-org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=ignore
-org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore
-org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
-org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
-org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
-org.eclipse.jdt.core.formatter.align_with_spaces=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
-org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
-org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
-org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
-org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=0
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
-org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
-org.eclipse.jdt.core.formatter.comment.format_block_comments=false
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
-org.eclipse.jdt.core.formatter.comment.format_line_comments=false
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
-org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
-org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
-org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.join_lines_in_comments=true
-org.eclipse.jdt.core.formatter.join_wrapped_lines=true
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=120
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_on_off_tags=true
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
-org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
-org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core.tests/.settings/org.eclipse.jdt.ui.prefs b/toolchains/arduino/org.eclipse.cdt.arduino.core.tests/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index e44576346c4..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core.tests/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,133 +0,0 @@
-cleanup.add_default_serial_version_id=true
-cleanup.add_generated_serial_version_id=false
-cleanup.add_missing_annotations=true
-cleanup.add_missing_deprecated_annotations=true
-cleanup.add_missing_methods=false
-cleanup.add_missing_nls_tags=false
-cleanup.add_missing_override_annotations=true
-cleanup.add_missing_override_annotations_interface_methods=true
-cleanup.add_serial_version_id=false
-cleanup.always_use_blocks=true
-cleanup.always_use_parentheses_in_expressions=false
-cleanup.always_use_this_for_non_static_field_access=false
-cleanup.always_use_this_for_non_static_method_access=false
-cleanup.convert_functional_interfaces=false
-cleanup.convert_to_enhanced_for_loop=false
-cleanup.correct_indentation=false
-cleanup.format_source_code=true
-cleanup.format_source_code_changes_only=false
-cleanup.insert_inferred_type_arguments=false
-cleanup.make_local_variable_final=true
-cleanup.make_parameters_final=false
-cleanup.make_private_fields_final=true
-cleanup.make_type_abstract_if_missing_method=false
-cleanup.make_variable_declarations_final=false
-cleanup.never_use_blocks=false
-cleanup.never_use_parentheses_in_expressions=true
-cleanup.organize_imports=true
-cleanup.qualify_static_field_accesses_with_declaring_class=false
-cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-cleanup.qualify_static_member_accesses_with_declaring_class=false
-cleanup.qualify_static_method_accesses_with_declaring_class=false
-cleanup.remove_private_constructors=true
-cleanup.remove_redundant_modifiers=false
-cleanup.remove_redundant_semicolons=true
-cleanup.remove_redundant_type_arguments=true
-cleanup.remove_trailing_whitespaces=true
-cleanup.remove_trailing_whitespaces_all=true
-cleanup.remove_trailing_whitespaces_ignore_empty=false
-cleanup.remove_unnecessary_casts=true
-cleanup.remove_unnecessary_nls_tags=false
-cleanup.remove_unused_imports=true
-cleanup.remove_unused_local_variables=false
-cleanup.remove_unused_private_fields=true
-cleanup.remove_unused_private_members=false
-cleanup.remove_unused_private_methods=true
-cleanup.remove_unused_private_types=true
-cleanup.sort_members=false
-cleanup.sort_members_all=false
-cleanup.use_anonymous_class_creation=false
-cleanup.use_blocks=false
-cleanup.use_blocks_only_for_return_and_throw=false
-cleanup.use_lambda=true
-cleanup.use_parentheses_in_expressions=false
-cleanup.use_this_for_non_static_field_access=false
-cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-cleanup.use_this_for_non_static_method_access=false
-cleanup.use_this_for_non_static_method_access_only_if_necessary=true
-cleanup_profile=_CDT
-cleanup_settings_version=2
-eclipse.preferences.version=1
-editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=_CDT
-formatter_settings_version=14
-internal.default.compliance=user
-org.eclipse.jdt.ui.exception.name=e
-org.eclipse.jdt.ui.gettersetter.use.is=true
-org.eclipse.jdt.ui.ignorelowercasenames=true
-org.eclipse.jdt.ui.importorder=java;javax;org;com;
-org.eclipse.jdt.ui.keywordthis=false
-org.eclipse.jdt.ui.ondemandthreshold=1000
-org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.staticondemandthreshold=1000
-org.eclipse.jdt.ui.text.custom_code_templates=
-sp_cleanup.add_default_serial_version_id=true
-sp_cleanup.add_generated_serial_version_id=false
-sp_cleanup.add_missing_annotations=true
-sp_cleanup.add_missing_deprecated_annotations=true
-sp_cleanup.add_missing_methods=false
-sp_cleanup.add_missing_nls_tags=false
-sp_cleanup.add_missing_override_annotations=true
-sp_cleanup.add_missing_override_annotations_interface_methods=true
-sp_cleanup.add_serial_version_id=false
-sp_cleanup.always_use_blocks=true
-sp_cleanup.always_use_parentheses_in_expressions=false
-sp_cleanup.always_use_this_for_non_static_field_access=false
-sp_cleanup.always_use_this_for_non_static_method_access=false
-sp_cleanup.convert_functional_interfaces=false
-sp_cleanup.convert_to_enhanced_for_loop=false
-sp_cleanup.correct_indentation=false
-sp_cleanup.format_source_code=true
-sp_cleanup.format_source_code_changes_only=false
-sp_cleanup.insert_inferred_type_arguments=false
-sp_cleanup.make_local_variable_final=true
-sp_cleanup.make_parameters_final=false
-sp_cleanup.make_private_fields_final=true
-sp_cleanup.make_type_abstract_if_missing_method=false
-sp_cleanup.make_variable_declarations_final=false
-sp_cleanup.never_use_blocks=false
-sp_cleanup.never_use_parentheses_in_expressions=true
-sp_cleanup.on_save_use_additional_actions=true
-sp_cleanup.organize_imports=true
-sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
-sp_cleanup.remove_private_constructors=true
-sp_cleanup.remove_redundant_modifiers=false
-sp_cleanup.remove_redundant_semicolons=true
-sp_cleanup.remove_redundant_type_arguments=true
-sp_cleanup.remove_trailing_whitespaces=true
-sp_cleanup.remove_trailing_whitespaces_all=true
-sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
-sp_cleanup.remove_unnecessary_casts=true
-sp_cleanup.remove_unnecessary_nls_tags=false
-sp_cleanup.remove_unused_imports=true
-sp_cleanup.remove_unused_local_variables=false
-sp_cleanup.remove_unused_private_fields=true
-sp_cleanup.remove_unused_private_members=false
-sp_cleanup.remove_unused_private_methods=true
-sp_cleanup.remove_unused_private_types=true
-sp_cleanup.sort_members=false
-sp_cleanup.sort_members_all=false
-sp_cleanup.use_anonymous_class_creation=false
-sp_cleanup.use_blocks=false
-sp_cleanup.use_blocks_only_for_return_and_throw=false
-sp_cleanup.use_lambda=true
-sp_cleanup.use_parentheses_in_expressions=false
-sp_cleanup.use_this_for_non_static_field_access=false
-sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-sp_cleanup.use_this_for_non_static_method_access=false
-sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core.tests/META-INF/MANIFEST.MF b/toolchains/arduino/org.eclipse.cdt.arduino.core.tests/META-INF/MANIFEST.MF
deleted file mode 100644
index a81f9539799..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core.tests/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,10 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Tests
-Bundle-SymbolicName: org.eclipse.cdt.arduino.core.tests
-Bundle-Vendor: Eclipse CDT
-Bundle-Version: 1.0.0.qualifier
-Fragment-Host: org.eclipse.cdt.arduino.core;bundle-version="1.0.0"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Require-Bundle: org.junit;bundle-version="4.12.0"
-Automatic-Module-Name: org.eclipse.cdt.arduino.core.tests
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core.tests/about.html b/toolchains/arduino/org.eclipse.cdt.arduino.core.tests/about.html
deleted file mode 100644
index 164f781a8fd..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core.tests/about.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
-</head>
-<body lang="EN-US">
- <h2>About This Content</h2>
-
- <p>November 30, 2017</p>
- <h3>License</h3>
-
- <p>
- The Eclipse Foundation makes available all content in this plug-in
- (&quot;Content&quot;). Unless otherwise indicated below, the Content
- is provided to you under the terms and conditions of the Eclipse
- Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
- For purposes of the EPL, &quot;Program&quot; will mean the Content.
- </p>
-
- <p>
- If you did not receive this Content directly from the Eclipse
- Foundation, the Content is being redistributed by another party
- (&quot;Redistributor&quot;) and different terms and conditions may
- apply to your use of any object code in the Content. Check the
- Redistributor's license that was provided with the Content. If no such
- license exists, contact the Redistributor. Unless otherwise indicated
- below, the terms and conditions of the EPL still apply to any source
- code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
- </p>
-
-</body>
-</html> \ No newline at end of file
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core.tests/build.properties b/toolchains/arduino/org.eclipse.cdt.arduino.core.tests/build.properties
deleted file mode 100644
index 9cbab3c135e..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core.tests/build.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
- .,\
- about.html
-src.includes = about.html
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core.tests/src/org/eclipse/cdt/arduino/core/tests/BoardManagerTests.java b/toolchains/arduino/org.eclipse.cdt.arduino.core.tests/src/org/eclipse/cdt/arduino/core/tests/BoardManagerTests.java
deleted file mode 100644
index 40ea9f08b84..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core.tests/src/org/eclipse/cdt/arduino/core/tests/BoardManagerTests.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.cdt.arduino.core.tests;
-
-import static org.junit.Assert.assertNotEquals;
-
-import org.eclipse.cdt.arduino.core.internal.Activator;
-import org.eclipse.cdt.arduino.core.internal.board.ArduinoManager;
-import org.junit.Test;
-
-public class BoardManagerTests {
-
- @Test
- public void loadPackagesTest() throws Exception {
- assertNotEquals(0, Activator.getService(ArduinoManager.class).getInstalledPlatforms().size());
- }
-
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core.tests/src/org/eclipse/cdt/arduino/core/tests/FullIntegration.java b/toolchains/arduino/org.eclipse.cdt.arduino.core.tests/src/org/eclipse/cdt/arduino/core/tests/FullIntegration.java
deleted file mode 100644
index b6c3283d982..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core.tests/src/org/eclipse/cdt/arduino/core/tests/FullIntegration.java
+++ /dev/null
@@ -1,215 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015, 2016 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.cdt.arduino.core.tests;
-
-import java.net.URL;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Set;
-
-import org.eclipse.cdt.arduino.core.internal.Activator;
-import org.eclipse.cdt.arduino.core.internal.ArduinoPreferences;
-import org.eclipse.cdt.arduino.core.internal.ArduinoProjectGenerator;
-import org.eclipse.cdt.arduino.core.internal.board.ArduinoBoard;
-import org.eclipse.cdt.arduino.core.internal.board.ArduinoManager;
-import org.eclipse.cdt.arduino.core.internal.board.ArduinoPlatform;
-import org.eclipse.cdt.arduino.core.internal.build.ArduinoBuildConfiguration;
-import org.eclipse.cdt.arduino.core.internal.build.ArduinoBuildConfigurationProvider;
-import org.eclipse.cdt.arduino.core.internal.remote.ArduinoRemoteConnection;
-import org.eclipse.cdt.core.build.ICBuildConfigurationManager;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IWorkspaceRoot;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.remote.core.IRemoteConnection;
-import org.eclipse.remote.core.IRemoteConnectionType;
-import org.eclipse.remote.core.IRemoteConnectionWorkingCopy;
-import org.eclipse.remote.core.IRemoteServicesManager;
-import org.junit.Test;
-
-@SuppressWarnings("nls")
-public class FullIntegration {
-
- private static final ArduinoManager arduinoManager = Activator.getService(ArduinoManager.class);
- private static final IRemoteServicesManager remoteManager = Activator.getService(IRemoteServicesManager.class);
- private static final ICBuildConfigurationManager buildConfigManager = Activator
- .getService(ICBuildConfigurationManager.class);
-
- private void setBoardUrls() throws Exception {
- URL[] urls = new URL[] { new URL("http://downloads.arduino.cc/packages/package_index.json"),
- new URL("https://adafruit.github.io/arduino-board-index/package_adafruit_index.json") };
- ArduinoPreferences.setBoardUrlList(urls);
- }
-
- private Set<ArduinoBoard> getSkipBuild() throws Exception {
- Set<ArduinoBoard> boards = new HashSet<>();
-
- // Fails in arduino too
- boards.add(arduinoManager.getBoard("arduino", "avr", "robotControl"));
- boards.add(arduinoManager.getBoard("arduino", "avr", "robotMotor"));
- boards.add(arduinoManager.getBoard("adafruit", "avr", "adafruit32u4"));
-
- // What is Microsoft doing?
- boards.add(arduinoManager.getBoard("Microsoft", "win10", "w10iotcore"));
-
- // TODO Need to add support for menu specific build properties
- boards.add(arduinoManager.getBoard("arduino", "avr", "mini"));
- boards.add(arduinoManager.getBoard("arduino", "avr", "lilypad"));
- boards.add(arduinoManager.getBoard("arduino", "avr", "diecimila"));
- boards.add(arduinoManager.getBoard("arduino", "avr", "pro"));
- boards.add(arduinoManager.getBoard("arduino", "avr", "atmegang"));
- boards.add(arduinoManager.getBoard("arduino", "avr", "bt"));
- boards.add(arduinoManager.getBoard("arduino", "avr", "mega"));
- boards.add(arduinoManager.getBoard("arduino", "avr", "nano"));
- boards.add(arduinoManager.getBoard("TeeOnArdu", "avr", "CirPlayTeensyCore"));
- boards.add(arduinoManager.getBoard("TeeOnArdu", "avr", "FloraTeensyCore"));
- boards.add(arduinoManager.getBoard("TeeOnArdu", "avr", "TeeOnArdu"));
-
- if (Platform.getOS().equals(Platform.OS_WIN32)) {
- // tool chain incorrect?
- boards.add(arduinoManager.getBoard("Intel", "i586", "izmir_fd"));
- boards.add(arduinoManager.getBoard("Intel", "i586", "izmir_fg"));
- boards.add(arduinoManager.getBoard("Intel", "i686", "izmir_ec"));
- }
-
- if (Platform.getOS().equals(Platform.OS_LINUX)) {
- // i586/pokysdk missing
- boards.add(arduinoManager.getBoard("Intel", "i586", "izmir_fd"));
- boards.add(arduinoManager.getBoard("Intel", "i586", "izmir_fg"));
- boards.add(arduinoManager.getBoard("Intel", "i686", "izmir_ec"));
- }
-
- return boards;
- }
-
- private Set<ArduinoBoard> getSkipUpload() throws Exception {
- Set<ArduinoBoard> boards = new HashSet<>();
-
- // missing upload.protocol
- boards.add(arduinoManager.getBoard("arduino", "avr", "gemma"));
- boards.add(arduinoManager.getBoard("adafruit", "avr", "gemma"));
- boards.add(arduinoManager.getBoard("adafruit", "avr", "trinket5"));
- boards.add(arduinoManager.getBoard("adafruit", "avr", "trinket3"));
-
- // usbtiny missing
- boards.add(arduinoManager.getBoard("adafruit", "avr", "protrinket3"));
- boards.add(arduinoManager.getBoard("adafruit", "avr", "protrinket5"));
-
- return boards;
- }
-
- @Test
- public void runTest() throws Exception {
- IProgressMonitor monitor = new SysoutProgressMonitor();
-
- setArduinoHome();
- setBoardUrls();
- loadPlatforms(monitor);
-
- Set<ArduinoBoard> skipBuild = getSkipBuild();
- Set<ArduinoBoard> skipUpload = getSkipUpload();
- IProject project = createProject(monitor);
- for (ArduinoBoard board : arduinoManager.getInstalledBoards()) {
- if (!skipBuild.contains(board)) {
- buildBoard(project, board, !skipUpload.contains(board), monitor);
- }
- }
- }
-
- private void setArduinoHome() throws Exception {
- Path workspace = Paths.get(ResourcesPlugin.getWorkspace().getRoot().getLocationURI());
- ArduinoPreferences.setArduinoHome(workspace.resolve(".arduinocdt"));
- }
-
- private void loadPlatforms(IProgressMonitor monitor) throws Exception {
- Collection<ArduinoPlatform> plats = arduinoManager.getAvailablePlatforms(monitor);
- arduinoManager.installPlatforms(plats, monitor);
- }
-
- private IProject createProject(IProgressMonitor monitor) throws Exception {
- IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
- String projectName = "ArduinoTest";
- ArduinoProjectGenerator generator = new ArduinoProjectGenerator("templates/cppsketch/manifest.xml"); //$NON-NLS-1$
-
- Job job = new Job("Create") {
- @Override
- protected IStatus run(IProgressMonitor monitor) {
- try {
- IProject project = root.getProject(projectName);
- if (project.exists()) {
- project.delete(true, monitor);
- }
-
- generator.setProjectName(projectName);
- generator.generate(new HashMap<String, Object>(), monitor);
- return Status.OK_STATUS;
- } catch (CoreException e) {
- return e.getStatus();
- }
- }
- };
- job.setRule(root);
- job.schedule();
- job.join();
-
- return generator.getProject();
- }
-
- private void buildBoard(IProject project, ArduinoBoard board, boolean upload, IProgressMonitor monitor)
- throws Exception {
- ArduinoRemoteConnection arduinoTarget = createTarget(board);
- ArduinoBuildConfigurationProvider provider = (ArduinoBuildConfigurationProvider) buildConfigManager
- .getProvider(ArduinoBuildConfigurationProvider.ID);
- ArduinoBuildConfiguration config = provider.getConfiguration(project, arduinoTarget, "run", monitor);
-
- System.out.println(String.format("Building board: %s\n %s - %s", board.getName(), board.getId(),
- board.getPlatform().getInstallPath()));
-
- config.generateMakeFile(monitor);
- ProcessBuilder processBuilder = new ProcessBuilder().command(config.getBuildCommand())
- .directory(config.getBuildDirectory().toFile()).inheritIO();
- config.setBuildEnvironment(processBuilder.environment());
- Process process = processBuilder.start();
- int rc = process.waitFor();
- if (rc != 0) {
- throw new Exception("Build failed");
- }
-
- // Test to make sure we can get the upload command cleanly
- if (upload) {
- System.out.println(String.join(" ", config.getUploadCommand("port1")));
- }
- }
-
- private ArduinoRemoteConnection createTarget(ArduinoBoard board) throws Exception {
- IRemoteConnectionType type = remoteManager.getConnectionType(ArduinoRemoteConnection.TYPE_ID);
- IRemoteConnection connection = type.getConnection(board.getName());
- if (connection != null) {
- type.removeConnection(connection);
- }
-
- IRemoteConnectionWorkingCopy workingCopy = type.newConnection(board.getName());
- ArduinoRemoteConnection.setBoardId(workingCopy, board);
- ArduinoRemoteConnection.setPortName(workingCopy, "port1");
- connection = workingCopy.save();
-
- return connection.getService(ArduinoRemoteConnection.class);
- }
-
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core.tests/src/org/eclipse/cdt/arduino/core/tests/SysoutProgressMonitor.java b/toolchains/arduino/org.eclipse.cdt.arduino.core.tests/src/org/eclipse/cdt/arduino/core/tests/SysoutProgressMonitor.java
deleted file mode 100644
index ca7dbc29fef..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core.tests/src/org/eclipse/cdt/arduino/core/tests/SysoutProgressMonitor.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015, 2016 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.cdt.arduino.core.tests;
-
-import org.eclipse.core.runtime.NullProgressMonitor;
-
-public class SysoutProgressMonitor extends NullProgressMonitor {
-
- @Override
- public void beginTask(String name, int totalWork) {
- if (name.length() > 0) {
- System.out.println(name);
- System.out.flush();
- }
- }
-
- @Override
- public void subTask(String name) {
- if (name.length() > 0) {
- System.out.println(name);
- System.out.flush();
- }
- }
-
- @Override
- public void setTaskName(String name) {
- if (name.length() > 0) {
- System.out.println(name);
- System.out.flush();
- }
- }
-
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/.classpath b/toolchains/arduino/org.eclipse.cdt.arduino.core/.classpath
deleted file mode 100644
index cf36b561195..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
- <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="src" path="src/"/>
- <classpathentry kind="output" path="target/classes"/>
-</classpath>
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/.gitignore b/toolchains/arduino/org.eclipse.cdt.arduino.core/.gitignore
deleted file mode 100644
index 09e3bc9b241..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-/bin/
-/target/
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/.project b/toolchains/arduino/org.eclipse.cdt.arduino.core/.project
deleted file mode 100644
index fb27c5ce294..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.cdt.arduino.core</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.ManifestBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.SchemaBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.pde.PluginNature</nature>
- <nature>org.eclipse.jdt.core.javanature</nature>
- </natures>
-</projectDescription>
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/.settings/org.eclipse.jdt.core.prefs b/toolchains/arduino/org.eclipse.cdt.arduino.core/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 2b6ecff8a01..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,464 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
-org.eclipse.jdt.core.codeComplete.argumentPrefixes=
-org.eclipse.jdt.core.codeComplete.argumentSuffixes=
-org.eclipse.jdt.core.codeComplete.fieldPrefixes=
-org.eclipse.jdt.core.codeComplete.fieldSuffixes=
-org.eclipse.jdt.core.codeComplete.localPrefixes=
-org.eclipse.jdt.core.codeComplete.localSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
-org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
-org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
-org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
-org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
-org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
-org.eclipse.jdt.core.compiler.problem.APILeak=warning
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
-org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
-org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
-org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
-org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
-org.eclipse.jdt.core.compiler.problem.nullReference=error
-org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
-org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
-org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
-org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
-org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
-org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
-org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
-org.eclipse.jdt.core.formatter.align_with_spaces=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
-org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
-org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
-org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
-org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=0
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
-org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
-org.eclipse.jdt.core.formatter.comment.format_block_comments=false
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
-org.eclipse.jdt.core.formatter.comment.format_line_comments=false
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
-org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
-org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
-org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.join_lines_in_comments=true
-org.eclipse.jdt.core.formatter.join_wrapped_lines=true
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=120
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_on_off_tags=true
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
-org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
-org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/.settings/org.eclipse.jdt.ui.prefs b/toolchains/arduino/org.eclipse.cdt.arduino.core/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index e44576346c4..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,133 +0,0 @@
-cleanup.add_default_serial_version_id=true
-cleanup.add_generated_serial_version_id=false
-cleanup.add_missing_annotations=true
-cleanup.add_missing_deprecated_annotations=true
-cleanup.add_missing_methods=false
-cleanup.add_missing_nls_tags=false
-cleanup.add_missing_override_annotations=true
-cleanup.add_missing_override_annotations_interface_methods=true
-cleanup.add_serial_version_id=false
-cleanup.always_use_blocks=true
-cleanup.always_use_parentheses_in_expressions=false
-cleanup.always_use_this_for_non_static_field_access=false
-cleanup.always_use_this_for_non_static_method_access=false
-cleanup.convert_functional_interfaces=false
-cleanup.convert_to_enhanced_for_loop=false
-cleanup.correct_indentation=false
-cleanup.format_source_code=true
-cleanup.format_source_code_changes_only=false
-cleanup.insert_inferred_type_arguments=false
-cleanup.make_local_variable_final=true
-cleanup.make_parameters_final=false
-cleanup.make_private_fields_final=true
-cleanup.make_type_abstract_if_missing_method=false
-cleanup.make_variable_declarations_final=false
-cleanup.never_use_blocks=false
-cleanup.never_use_parentheses_in_expressions=true
-cleanup.organize_imports=true
-cleanup.qualify_static_field_accesses_with_declaring_class=false
-cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-cleanup.qualify_static_member_accesses_with_declaring_class=false
-cleanup.qualify_static_method_accesses_with_declaring_class=false
-cleanup.remove_private_constructors=true
-cleanup.remove_redundant_modifiers=false
-cleanup.remove_redundant_semicolons=true
-cleanup.remove_redundant_type_arguments=true
-cleanup.remove_trailing_whitespaces=true
-cleanup.remove_trailing_whitespaces_all=true
-cleanup.remove_trailing_whitespaces_ignore_empty=false
-cleanup.remove_unnecessary_casts=true
-cleanup.remove_unnecessary_nls_tags=false
-cleanup.remove_unused_imports=true
-cleanup.remove_unused_local_variables=false
-cleanup.remove_unused_private_fields=true
-cleanup.remove_unused_private_members=false
-cleanup.remove_unused_private_methods=true
-cleanup.remove_unused_private_types=true
-cleanup.sort_members=false
-cleanup.sort_members_all=false
-cleanup.use_anonymous_class_creation=false
-cleanup.use_blocks=false
-cleanup.use_blocks_only_for_return_and_throw=false
-cleanup.use_lambda=true
-cleanup.use_parentheses_in_expressions=false
-cleanup.use_this_for_non_static_field_access=false
-cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-cleanup.use_this_for_non_static_method_access=false
-cleanup.use_this_for_non_static_method_access_only_if_necessary=true
-cleanup_profile=_CDT
-cleanup_settings_version=2
-eclipse.preferences.version=1
-editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=_CDT
-formatter_settings_version=14
-internal.default.compliance=user
-org.eclipse.jdt.ui.exception.name=e
-org.eclipse.jdt.ui.gettersetter.use.is=true
-org.eclipse.jdt.ui.ignorelowercasenames=true
-org.eclipse.jdt.ui.importorder=java;javax;org;com;
-org.eclipse.jdt.ui.keywordthis=false
-org.eclipse.jdt.ui.ondemandthreshold=1000
-org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.staticondemandthreshold=1000
-org.eclipse.jdt.ui.text.custom_code_templates=
-sp_cleanup.add_default_serial_version_id=true
-sp_cleanup.add_generated_serial_version_id=false
-sp_cleanup.add_missing_annotations=true
-sp_cleanup.add_missing_deprecated_annotations=true
-sp_cleanup.add_missing_methods=false
-sp_cleanup.add_missing_nls_tags=false
-sp_cleanup.add_missing_override_annotations=true
-sp_cleanup.add_missing_override_annotations_interface_methods=true
-sp_cleanup.add_serial_version_id=false
-sp_cleanup.always_use_blocks=true
-sp_cleanup.always_use_parentheses_in_expressions=false
-sp_cleanup.always_use_this_for_non_static_field_access=false
-sp_cleanup.always_use_this_for_non_static_method_access=false
-sp_cleanup.convert_functional_interfaces=false
-sp_cleanup.convert_to_enhanced_for_loop=false
-sp_cleanup.correct_indentation=false
-sp_cleanup.format_source_code=true
-sp_cleanup.format_source_code_changes_only=false
-sp_cleanup.insert_inferred_type_arguments=false
-sp_cleanup.make_local_variable_final=true
-sp_cleanup.make_parameters_final=false
-sp_cleanup.make_private_fields_final=true
-sp_cleanup.make_type_abstract_if_missing_method=false
-sp_cleanup.make_variable_declarations_final=false
-sp_cleanup.never_use_blocks=false
-sp_cleanup.never_use_parentheses_in_expressions=true
-sp_cleanup.on_save_use_additional_actions=true
-sp_cleanup.organize_imports=true
-sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
-sp_cleanup.remove_private_constructors=true
-sp_cleanup.remove_redundant_modifiers=false
-sp_cleanup.remove_redundant_semicolons=true
-sp_cleanup.remove_redundant_type_arguments=true
-sp_cleanup.remove_trailing_whitespaces=true
-sp_cleanup.remove_trailing_whitespaces_all=true
-sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
-sp_cleanup.remove_unnecessary_casts=true
-sp_cleanup.remove_unnecessary_nls_tags=false
-sp_cleanup.remove_unused_imports=true
-sp_cleanup.remove_unused_local_variables=false
-sp_cleanup.remove_unused_private_fields=true
-sp_cleanup.remove_unused_private_members=false
-sp_cleanup.remove_unused_private_methods=true
-sp_cleanup.remove_unused_private_types=true
-sp_cleanup.sort_members=false
-sp_cleanup.sort_members_all=false
-sp_cleanup.use_anonymous_class_creation=false
-sp_cleanup.use_blocks=false
-sp_cleanup.use_blocks_only_for_return_and_throw=false
-sp_cleanup.use_lambda=true
-sp_cleanup.use_parentheses_in_expressions=false
-sp_cleanup.use_this_for_non_static_field_access=false
-sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-sp_cleanup.use_this_for_non_static_method_access=false
-sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/META-INF/MANIFEST.MF b/toolchains/arduino/org.eclipse.cdt.arduino.core/META-INF/MANIFEST.MF
deleted file mode 100644
index 4bc90f8a651..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,29 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-SymbolicName: org.eclipse.cdt.arduino.core;singleton:=true
-Bundle-Version: 2.1.200.qualifier
-Bundle-Activator: org.eclipse.cdt.arduino.core.internal.Activator
-Bundle-Vendor: %providerName
-Require-Bundle: org.eclipse.core.runtime,
- org.eclipse.core.resources,
- org.eclipse.debug.core,
- org.eclipse.cdt.core,
- org.eclipse.launchbar.core,
- org.eclipse.remote.core;bundle-version="2.0.0",
- org.eclipse.cdt.native.serial;bundle-version="1.0.0",
- org.eclipse.remote.serial.core;bundle-version="1.0.0",
- com.google.gson;bundle-version="2.2.4",
- org.apache.commons.compress;bundle-version="1.6.0",
- org.eclipse.launchbar.remote.core;bundle-version="1.0.0",
- org.eclipse.tools.templates.freemarker;bundle-version="1.0.0";visibility:=reexport,
- org.eclipse.cdt.build.gcc.core;bundle-version="1.0.0"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Bundle-ActivationPolicy: lazy
-Bundle-ClassPath: .
-Export-Package: org.eclipse.cdt.arduino.core.internal;x-friends:="org.eclipse.cdt.arduino.ui",
- org.eclipse.cdt.arduino.core.internal.board;x-friends:="org.eclipse.cdt.arduino.ui",
- org.eclipse.cdt.arduino.core.internal.build;x-friends:="org.eclipse.cdt.arduino.ui",
- org.eclipse.cdt.arduino.core.internal.remote;x-friends:="org.eclipse.cdt.arduino.ui"
-Bundle-Localization: plugin
-Automatic-Module-Name: org.eclipse.cdt.arduino.core
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/about.html b/toolchains/arduino/org.eclipse.cdt.arduino.core/about.html
deleted file mode 100644
index 164f781a8fd..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core/about.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
-</head>
-<body lang="EN-US">
- <h2>About This Content</h2>
-
- <p>November 30, 2017</p>
- <h3>License</h3>
-
- <p>
- The Eclipse Foundation makes available all content in this plug-in
- (&quot;Content&quot;). Unless otherwise indicated below, the Content
- is provided to you under the terms and conditions of the Eclipse
- Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
- For purposes of the EPL, &quot;Program&quot; will mean the Content.
- </p>
-
- <p>
- If you did not receive this Content directly from the Eclipse
- Foundation, the Content is being redistributed by another party
- (&quot;Redistributor&quot;) and different terms and conditions may
- apply to your use of any object code in the Content. Check the
- Redistributor's license that was provided with the Content. If no such
- license exists, contact the Redistributor. Unless otherwise indicated
- below, the terms and conditions of the EPL still apply to any source
- code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
- </p>
-
-</body>
-</html> \ No newline at end of file
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/build.properties b/toolchains/arduino/org.eclipse.cdt.arduino.core/build.properties
deleted file mode 100644
index 3b6cc63ded6..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core/build.properties
+++ /dev/null
@@ -1,8 +0,0 @@
-source.. = src/
-bin.includes = META-INF/,\
- .,\
- plugin.xml,\
- templates/,\
- about.html,\
- plugin.properties
-src.includes = about.html
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/plugin.properties b/toolchains/arduino/org.eclipse.cdt.arduino.core/plugin.properties
deleted file mode 100644
index 62d0048f6f0..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core/plugin.properties
+++ /dev/null
@@ -1,16 +0,0 @@
-###############################################################################
-# Copyright (c) 2015 QNX Software Systems and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# QNX Software Systems - initial API and implementation
-###############################################################################
-pluginName=Arduino C++ Core
-providerName=Eclipse CDT
-ArduinoBuilder.name=Arduino Builder
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/plugin.xml b/toolchains/arduino/org.eclipse.cdt.arduino.core/plugin.xml
deleted file mode 100644
index 39649eca09f..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core/plugin.xml
+++ /dev/null
@@ -1,109 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.4"?>
-<plugin>
- <extension
- point="org.eclipse.debug.core.launchConfigurationTypes">
- <launchConfigurationType
- delegate="org.eclipse.cdt.arduino.core.internal.launch.ArduinoLaunchConfigurationDelegate"
- id="org.eclipse.cdt.arduino.core.launchConfigurationType"
- modes="run"
- name="Arduino"
- public="false">
- </launchConfigurationType>
- </extension>
- <extension
- point="org.eclipse.remote.core.remoteServices">
- <connectionType
- id="org.eclipse.cdt.arduino.core.connectionType"
- name="Arduino">
- </connectionType>
- <connectionService
- connectionTypeId="org.eclipse.cdt.arduino.core.connectionType"
- factory="org.eclipse.cdt.arduino.core.internal.remote.ArduinoRemoteConnection$Factory"
- service="org.eclipse.cdt.arduino.core.internal.remote.ArduinoRemoteConnection">
- </connectionService>
- <connectionService
- connectionTypeId="org.eclipse.cdt.arduino.core.connectionType"
- factory="org.eclipse.cdt.arduino.core.internal.remote.ArduinoRemoteConnection$Factory"
- service="org.eclipse.remote.core.IRemoteCommandShellService">
- </connectionService>
- <connectionService
- connectionTypeId="org.eclipse.cdt.arduino.core.connectionType"
- factory="org.eclipse.cdt.arduino.core.internal.remote.ArduinoRemoteConnection$Factory"
- service="org.eclipse.remote.core.IRemoteConnectionPropertyService">
- </connectionService>
- </extension>
- <extension
- point="org.eclipse.launchbar.core.launchBarContributions">
- <descriptorType
- class="org.eclipse.cdt.arduino.core.internal.launch.ArduinoLaunchDescriptorType"
- id="org.eclipse.cdt.arduino.core.descriptorType"
- priority="20">
- <enablement>
- <instanceof
- value="org.eclipse.core.resources.IProject">
- </instanceof>
- <test
- forcePluginActivation="true"
- property="org.eclipse.core.resources.projectNature"
- value="org.eclipse.cdt.arduino.core.arduinoNature">
- </test>
- </enablement>
- </descriptorType>
- <configProvider
- class="org.eclipse.cdt.arduino.core.internal.launch.ArduinoLaunchConfigurationProvider"
- descriptorType="org.eclipse.cdt.arduino.core.descriptorType"
- priority="5">
- <enablement>
- </enablement>
- </configProvider>
- </extension>
- <extension
- point="org.eclipse.core.contenttype.contentTypes">
- <content-type
- base-type="org.eclipse.cdt.core.binaryFile"
- file-extensions="hex"
- id="org.eclipse.cdt.arduino.core.contentType.hex"
- name="Arduino Hex download file"
- priority="normal">
- </content-type>
- </extension>
- <extension
- id="arduinoNature"
- point="org.eclipse.core.resources.natures">
- <runtime>
- <run
- class="org.eclipse.cdt.arduino.core.internal.ArduinoProjectNature">
- </run>
- </runtime>
- <builder
- id="com.qnx.tools.ide.qde.core.cbuilder">
- </builder>
- </extension>
- <extension
- point="org.eclipse.launchbar.core.launchTargetTypes">
- <launchTargetType
- id="org.eclipse.cdt.arduino.core.connectionType"
- provider="org.eclipse.cdt.arduino.core.internal.remote.ArduinoLaunchTargetProvider">
- </launchTargetType>
- </extension>
- <extension
- point="org.eclipse.cdt.core.buildConfigProvider">
- <provider
- class="org.eclipse.cdt.arduino.core.internal.build.ArduinoBuildConfigurationProvider"
- id="org.eclipse.cdt.arduino.core.provider"
- natureId="org.eclipse.cdt.arduino.core.arduinoNature">
- </provider>
- </extension>
- <extension
- point="org.eclipse.cdt.core.toolChainProvider">
- <provider
- class="org.eclipse.cdt.arduino.core.internal.build.ArduinoToolChainProvider"
- id="org.eclipse.cdt.arduino.core.toolChainProvider">
- </provider>
- <type
- id="org.eclipse.cdt.arduino"
- name="Arduino">
- </type>
- </extension>
-</plugin>
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/Activator.java b/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/Activator.java
deleted file mode 100644
index e6f1f4c1a25..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/Activator.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.arduino.core.internal;
-
-import org.eclipse.cdt.arduino.core.internal.board.ArduinoManager;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Plugin;
-import org.eclipse.core.runtime.Status;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.ServiceReference;
-
-public class Activator extends Plugin {
-
- private static Plugin plugin;
-
- public static BundleContext getContext() {
- return plugin.getBundle().getBundleContext();
- }
-
- public static Plugin getPlugin() {
- return plugin;
- }
-
- public static String getId() {
- return plugin.getBundle().getSymbolicName();
- }
-
- public static void log(Exception e) {
- if (e instanceof CoreException) {
- plugin.getLog().log(((CoreException) e).getStatus());
- } else {
- plugin.getLog().log(new Status(IStatus.ERROR, Activator.getId(), e.getLocalizedMessage(), e));
- }
- }
-
- @Override
- public void start(BundleContext bundleContext) throws Exception {
- plugin = this;
- bundleContext.registerService(ArduinoManager.class, new ArduinoManager(), null);
- }
-
- @Override
- public void stop(BundleContext bundleContext) throws Exception {
- plugin = null;
- }
-
- public static <T> T getService(Class<T> service) {
- BundleContext context = plugin.getBundle().getBundleContext();
- ServiceReference<T> ref = context.getServiceReference(service);
- return ref != null ? context.getService(ref) : null;
- }
-
- public static CoreException coreException(Throwable e) {
- if (e instanceof RuntimeException && e.getCause() instanceof CoreException) {
- return (CoreException) e.getCause();
- } else if (e instanceof CoreException) {
- return (CoreException) e;
- }
- return new CoreException(new Status(IStatus.ERROR, getId(), e.getLocalizedMessage(), e));
- }
-
- public static CoreException coreException(String message, Throwable e) {
- return new CoreException(new Status(IStatus.ERROR, getId(), message, e));
- }
-
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/ArduinoPreferences.java b/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/ArduinoPreferences.java
deleted file mode 100644
index 8a73a866911..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/ArduinoPreferences.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.cdt.arduino.core.internal;
-
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.preferences.IEclipsePreferences;
-import org.eclipse.core.runtime.preferences.InstanceScope;
-import org.osgi.service.prefs.BackingStoreException;
-
-public class ArduinoPreferences {
-
- private static final String ARDUINO_HOME = "arduinoHome"; //$NON-NLS-1$
- private static final String BOARD_URLS = "boardUrls"; //$NON-NLS-1$
-
- private static final String defaultHome = Paths.get(System.getProperty("user.home"), ".arduinocdt").toString(); //$NON-NLS-1$ //$NON-NLS-2$
- private static final String defaultBoardUrls = "http://downloads.arduino.cc/packages/package_index.json" //$NON-NLS-1$
- + "\nhttps://adafruit.github.io/arduino-board-index/package_adafruit_index.json"; //$NON-NLS-1$
-
- private static IEclipsePreferences getPrefs() {
- return InstanceScope.INSTANCE.getNode(Activator.getId());
- }
-
- public static Path getArduinoHome() {
- return Paths.get(getPrefs().get(ARDUINO_HOME, defaultHome));
- }
-
- public static void setArduinoHome(Path home) {
- IEclipsePreferences prefs = getPrefs();
- prefs.put(ARDUINO_HOME, home.toString());
- try {
- prefs.flush();
- } catch (BackingStoreException e) {
- Activator.log(e);
- }
- }
-
- public static String getBoardUrls() {
- return getPrefs().get(BOARD_URLS, defaultBoardUrls);
- }
-
- public static URL[] getBoardUrlList() throws CoreException {
- List<URL> urlList = new ArrayList<>();
- for (String url : getBoardUrls().split("\n")) { //$NON-NLS-1$
- try {
- urlList.add(new URL(url.trim()));
- } catch (MalformedURLException e) {
- throw Activator.coreException(e);
- }
- }
- return urlList.toArray(new URL[urlList.size()]);
- }
-
- public static void setBoardUrls(String boardUrls) {
- IEclipsePreferences prefs = getPrefs();
- prefs.put(BOARD_URLS, boardUrls);
- try {
- prefs.flush();
- } catch (BackingStoreException e) {
- Activator.log(e);
- }
- }
-
- public static void setBoardUrlList(URL[] urls) {
- StringBuilder str = new StringBuilder();
- for (int i = 0; i < urls.length - 1; ++i) {
- str.append(urls[i].toString());
- str.append('\n');
- }
- if (urls.length > 0) {
- str.append(urls[urls.length - 1].toString());
- }
- setBoardUrls(str.toString());
- }
-
- public static String getDefaultArduinoHome() {
- return defaultHome;
- }
-
- public static String getDefaultBoardUrls() {
- return defaultBoardUrls;
- }
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/ArduinoProjectGenerator.java b/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/ArduinoProjectGenerator.java
deleted file mode 100644
index 4030789d2e8..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/ArduinoProjectGenerator.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015, 2016 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.cdt.arduino.core.internal;
-
-import java.util.Map;
-
-import org.eclipse.cdt.core.CCProjectNature;
-import org.eclipse.cdt.core.CProjectNature;
-import org.eclipse.cdt.core.build.CBuilder;
-import org.eclipse.cdt.core.model.CoreModel;
-import org.eclipse.cdt.core.model.IPathEntry;
-import org.eclipse.core.resources.ICommand;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IProjectDescription;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.tools.templates.freemarker.FMProjectGenerator;
-import org.osgi.framework.Bundle;
-
-public class ArduinoProjectGenerator extends FMProjectGenerator {
-
- public ArduinoProjectGenerator(String manifestFile) {
- super(manifestFile);
- }
-
- @Override
- protected void initProjectDescription(IProjectDescription description) {
- description.setNatureIds(
- new String[] { CProjectNature.C_NATURE_ID, CCProjectNature.CC_NATURE_ID, ArduinoProjectNature.ID });
- ICommand command = description.newCommand();
- CBuilder.setupBuilder(command);
- description.setBuildSpec(new ICommand[] { command });
- }
-
- @Override
- public Bundle getSourceBundle() {
- return Activator.getPlugin().getBundle();
- }
-
- @Override
- public void generate(Map<String, Object> model, IProgressMonitor monitor) throws CoreException {
- super.generate(model, monitor);
- IProject project = getProject();
- CoreModel.getDefault().create(project)
- .setRawPathEntries(new IPathEntry[] { CoreModel.newSourceEntry(project.getFullPath()) }, monitor);
- }
-
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/ArduinoProjectNature.java b/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/ArduinoProjectNature.java
deleted file mode 100644
index 6de51d361b8..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/ArduinoProjectNature.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.arduino.core.internal;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IProjectDescription;
-import org.eclipse.core.resources.IProjectNature;
-import org.eclipse.core.runtime.CoreException;
-
-public class ArduinoProjectNature implements IProjectNature {
-
- private IProject project;
- public static final String ID = Activator.getId() + ".arduinoNature"; //$NON-NLS-1$
-
- @Override
- public IProject getProject() {
- return project;
- }
-
- @Override
- public void setProject(IProject project) {
- this.project = project;
- }
-
- public static boolean hasNature(IProject project) throws CoreException {
- IProjectDescription projDesc = project.getDescription();
- for (String id : projDesc.getNatureIds()) {
- if (id.equals(ID))
- return true;
- }
- return false;
- }
-
- @Override
- public void configure() throws CoreException {
- }
-
- @Override
- public void deconfigure() throws CoreException {
- }
-
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/HierarchicalProperties.java b/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/HierarchicalProperties.java
deleted file mode 100644
index 565d8405958..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/HierarchicalProperties.java
+++ /dev/null
@@ -1,194 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.cdt.arduino.core.internal;
-
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-
-import org.eclipse.core.runtime.Platform;
-
-public class HierarchicalProperties {
-
- private String value;
- private Map<String, HierarchicalProperties> children;
- private String platName;
-
- public HierarchicalProperties() {
- switch (Platform.getOS()) {
- case Platform.OS_WIN32:
- platName = "windows"; //$NON-NLS-1$
- break;
- case Platform.OS_MACOSX:
- platName = "macosx"; //$NON-NLS-1$
- break;
- case Platform.OS_LINUX:
- platName = "linux"; //$NON-NLS-1$
- break;
- }
- }
-
- public HierarchicalProperties(LinkedProperties properties) {
- this();
- for (Object keyObj : properties.orderedKeys()) {
- String key = (String) keyObj;
- String value = (String) properties.get(key);
- putProperty(key, value);
- }
- }
-
- public String getProperty(String qualifiedKey) {
- if (children == null) {
- return null;
- }
-
- int i = qualifiedKey.indexOf('.');
- if (i < 0) {
- HierarchicalProperties child = children.get(qualifiedKey);
- return child != null ? child.getValue() : null;
- } else {
- String key = qualifiedKey.substring(0, i);
- HierarchicalProperties child = children.get(key);
- if (child != null) {
- String childKey = qualifiedKey.substring(i + 1);
- return child.getProperty(childKey);
- } else {
- return null;
- }
- }
- }
-
- public void putProperty(String qualifiedKey, String value) {
- if (children == null) {
- children = new LinkedHashMap<>();
- }
-
- int i = qualifiedKey.indexOf('.');
- if (i < 0) {
- HierarchicalProperties child = children.get(qualifiedKey);
- if (child == null) {
- child = new HierarchicalProperties();
- children.put(qualifiedKey, child);
- }
- child.setValue(value);
- } else {
- String key = qualifiedKey.substring(0, i);
- HierarchicalProperties child = children.get(key);
- if (child == null) {
- child = new HierarchicalProperties();
- children.put(key, child);
- }
- String childKey = qualifiedKey.substring(i + 1);
- child.putProperty(childKey, value);
- }
- }
-
- public String getValue() {
- // Try a platform child
- if (platName != null && hasChild(platName)) {
- HierarchicalProperties child = getChild(platName);
-
- // return the child's value if
- // - it has a property
- // - it has no more children. In that case the value could even be null (specifically overridden)
- if ((null != child.getValue()) || (!child.hasChildren())) {
- return child.getValue();
- }
- }
- return value;
- }
-
- public void setValue(String value) {
- this.value = value;
- }
-
- public Map<String, HierarchicalProperties> getChildren() {
- return children;
- }
-
- private boolean hasChildren() {
- return (children != null && children.size() > 0);
- }
-
- private boolean hasChild(String key) {
- return (children != null && children.containsKey(key));
- }
-
- public HierarchicalProperties getChild(String key) {
- return children != null ? children.get(key) : null;
- }
-
- public void putChild(String key, HierarchicalProperties node) {
- if (children == null) {
- children = new LinkedHashMap<>();
- }
- children.put(key, node);
- }
-
- public List<HierarchicalProperties> listChildren() {
- int size = 0;
- for (Map.Entry<String, HierarchicalProperties> entry : children.entrySet()) {
- try {
- int i = Integer.parseInt(entry.getKey());
- if (i + 1 > size) {
- size = i + 1;
- }
- } catch (NumberFormatException e) {
- // ignore
- }
- }
-
- ArrayList<HierarchicalProperties> list = new ArrayList<>(size);
- for (Map.Entry<String, HierarchicalProperties> entry : children.entrySet()) {
- try {
- int i = Integer.parseInt(entry.getKey());
- list.set(i, entry.getValue());
- } catch (NumberFormatException e) {
- // ignore
- }
- }
- return list;
- }
-
- public void setChildren(List<HierarchicalProperties> list) {
- children.clear();
- for (int i = 0; i < list.size(); i++) {
- HierarchicalProperties node = list.get(i);
- if (node != null) {
- children.put(Integer.toString(i), node);
- }
- }
- }
-
- public Properties flatten() {
- Properties properties = new Properties();
- flatten(null, this, properties);
- return properties;
- }
-
- private static void flatten(String prefix, HierarchicalProperties tree, Properties props) {
- if (tree.getValue() != null && prefix != null) {
- props.put(prefix, tree.getValue());
- }
-
- if (tree.getChildren() != null) {
- for (Map.Entry<String, HierarchicalProperties> entry : tree.getChildren().entrySet()) {
- String childPrefix = entry.getKey();
- if (prefix != null) {
- childPrefix = prefix + "." + childPrefix; //$NON-NLS-1$
- }
- flatten(childPrefix, entry.getValue(), props);
- }
- }
- }
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/LinkedProperties.java b/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/LinkedProperties.java
deleted file mode 100644
index 9b9bfc02f61..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/LinkedProperties.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.cdt.arduino.core.internal;
-
-import java.util.Collections;
-import java.util.Enumeration;
-import java.util.HashSet;
-import java.util.LinkedHashSet;
-import java.util.Properties;
-
-public class LinkedProperties extends Properties {
-
- private static final long serialVersionUID = 1L;
-
- private final HashSet<Object> keys = new LinkedHashSet<>();
-
- public Iterable<Object> orderedKeys() {
- return Collections.list(keys());
- }
-
- @Override
- public Enumeration<Object> keys() {
- return Collections.<Object>enumeration(keys);
- }
-
- @Override
- public Object put(Object key, Object value) {
- keys.add(key);
- return super.put(key, value);
- }
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/Messages.java b/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/Messages.java
deleted file mode 100644
index 43952f7f108..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/Messages.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.arduino.core.internal;
-
-import org.eclipse.osgi.util.NLS;
-
-public class Messages extends NLS {
- private static final String BUNDLE_NAME = "org.eclipse.cdt.arduino.core.internal.messages"; //$NON-NLS-1$
- public static String ArduinoBoardManager_0;
- public static String ArduinoBoardManager_1;
- public static String ArduinoBuildConfigurationProvider_UnknownConnection;
- public static String ArduinoLaunchConfigurationDelegate_0;
- public static String ArduinoLaunchConfigurationDelegate_1;
- public static String ArduinoLaunchConfigurationDelegate_2;
- public static String ArduinoManager_0;
- public static String ArduinoManager_1;
- public static String ArduinoManager_2;
- public static String ArduinoPlatform_0;
- public static String ArduinoPlatform_1;
- public static String ArduinoProjectGenerator_0;
-
- static {
- // initialize resource bundle
- NLS.initializeMessages(BUNDLE_NAME, Messages.class);
- }
-
- private Messages() {
- }
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/board/ArduinoBoard.java b/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/board/ArduinoBoard.java
deleted file mode 100644
index 1d9e61a764b..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/board/ArduinoBoard.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.cdt.arduino.core.internal.board;
-
-import java.util.Properties;
-
-import org.eclipse.cdt.arduino.core.internal.HierarchicalProperties;
-
-public class ArduinoBoard {
-
- private String name;
-
- private String id;
-
- private ArduinoPlatform platform;
- private HierarchicalProperties properties;
-
- public ArduinoBoard() {
- }
-
- public ArduinoBoard(String id, HierarchicalProperties properties) {
- this.properties = properties;
- this.id = id;
- this.name = this.properties.getChild("name").getValue(); //$NON-NLS-1$
- }
-
- public String getName() {
- return name;
- }
-
- public String getId() {
- return id;
- }
-
- public ArduinoPlatform getPlatform() {
- return platform;
- }
-
- ArduinoBoard setOwners(ArduinoPlatform platform) {
- this.platform = platform;
- return this;
- }
-
- public String getProperty(String key) {
- return properties.getProperty(key);
- }
-
- public HierarchicalProperties getMenus() {
- return properties.getChild("menu"); //$NON-NLS-1$
- }
-
- public Properties getBoardProperties() {
- return properties.flatten();
- }
-
- public Properties getMenuProperties(String id, String value) {
- return getMenus().getChild(id).getChild(value).flatten();
- }
-
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((name == null) ? 0 : name.hashCode());
- result = prime * result + ((platform == null) ? 0 : platform.hashCode());
- return result;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (getClass() != obj.getClass())
- return false;
- ArduinoBoard other = (ArduinoBoard) obj;
- if (name == null) {
- if (other.name != null)
- return false;
- } else if (!name.equals(other.name))
- return false;
- if (platform == null) {
- if (other.platform != null)
- return false;
- } else if (!platform.equals(other.platform))
- return false;
- return true;
- }
-
- @Override
- public String toString() {
- String arch = getPlatform().getArchitecture();
- String pkg = getPlatform().getPackage().getName();
- return pkg + ',' + arch + ',' + id + ',' + name;
- }
-
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/board/ArduinoHelp.java b/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/board/ArduinoHelp.java
deleted file mode 100644
index 3191ba11f70..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/board/ArduinoHelp.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.cdt.arduino.core.internal.board;
-
-public class ArduinoHelp {
-
- private String online;
-
- public String getOnline() {
- return online;
- }
-
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/board/ArduinoLibrary.java b/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/board/ArduinoLibrary.java
deleted file mode 100644
index 105b4de8a27..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/board/ArduinoLibrary.java
+++ /dev/null
@@ -1,335 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.cdt.arduino.core.internal.board;
-
-import java.io.File;
-import java.io.FileReader;
-import java.io.IOException;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Properties;
-
-import org.eclipse.cdt.arduino.core.internal.Activator;
-import org.eclipse.cdt.arduino.core.internal.ArduinoPreferences;
-import org.eclipse.cdt.arduino.core.internal.build.ArduinoBuildConfiguration;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-
-public class ArduinoLibrary {
-
- // JSON fields
- private String name;
- private String version;
- private String author;
- private String maintainer;
- private String sentence;
- private String paragraph;
- private String website;
- private String category;
- private List<String> architectures;
- private List<String> types;
- private String url;
- private String archiveFileName;
- private int size;
- private String checksum;
- // end JSON fields
-
- private Path installPath;
- private ArduinoPlatform platform;
-
- public ArduinoLibrary() {
- }
-
- public ArduinoLibrary(Path propertiesFile) throws CoreException {
- installPath = propertiesFile.getParent();
-
- Properties props = new Properties();
- try (FileReader reader = new FileReader(propertiesFile.toFile())) {
- props.load(reader);
- } catch (IOException e) {
- throw Activator.coreException(e);
- }
-
- name = props.getProperty("name"); //$NON-NLS-1$
- version = props.getProperty("version"); //$NON-NLS-1$
- author = props.getProperty("author"); //$NON-NLS-1$
- maintainer = props.getProperty("maintainer"); //$NON-NLS-1$
- sentence = props.getProperty("sentence"); //$NON-NLS-1$
- paragraph = props.getProperty("paragraph"); //$NON-NLS-1$
- category = props.getProperty("category"); //$NON-NLS-1$
- architectures = Arrays.asList(props.getProperty("architectures").split(",")); //$NON-NLS-1$ //$NON-NLS-2$
- }
-
- public ArduinoLibrary(Path propertiesFile, ArduinoPlatform platform) throws CoreException {
- this(propertiesFile);
- this.platform = platform;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getVersion() {
- return version;
- }
-
- public void setVersion(String version) {
- this.version = version;
- }
-
- public String getAuthor() {
- return author;
- }
-
- public void setAuthor(String author) {
- this.author = author;
- }
-
- public String getMaintainer() {
- return maintainer;
- }
-
- public void setMaintainer(String maintainer) {
- this.maintainer = maintainer;
- }
-
- public String getSentence() {
- return sentence;
- }
-
- public void setSentence(String sentence) {
- this.sentence = sentence;
- }
-
- public String getParagraph() {
- return paragraph;
- }
-
- public void setParagraph(String paragraph) {
- this.paragraph = paragraph;
- }
-
- public String getWebsite() {
- return website;
- }
-
- public void setWebsite(String website) {
- this.website = website;
- }
-
- public String getCategory() {
- return category;
- }
-
- public void setCategory(String category) {
- this.category = category;
- }
-
- public List<String> getArchitectures() {
- return architectures;
- }
-
- public void setArchitectures(List<String> architectures) {
- this.architectures = architectures;
- }
-
- public List<String> getTypes() {
- return types;
- }
-
- public void setTypes(List<String> types) {
- this.types = types;
- }
-
- public String getUrl() {
- return url;
- }
-
- public void setUrl(String url) {
- this.url = url;
- }
-
- public String getArchiveFileName() {
- return archiveFileName;
- }
-
- public void setArchiveFileName(String archiveFileName) {
- this.archiveFileName = archiveFileName;
- }
-
- public int getSize() {
- return size;
- }
-
- public void setSize(int size) {
- this.size = size;
- }
-
- public String getChecksum() {
- return checksum;
- }
-
- public void setChecksum(String checksum) {
- this.checksum = checksum;
- }
-
- public Path getInstallPath() {
- return installPath == null
- ? ArduinoPreferences.getArduinoHome().resolve("libraries").resolve(name.replaceAll("[ ()]", "_")) //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- .resolve(version)
- : installPath;
- }
-
- public ArduinoPlatform getPlatform() {
- return platform;
- }
-
- public void install(IProgressMonitor monitor) throws CoreException {
- if (Files.exists(getInstallPath())) {
- uninstall(monitor);
- }
-
- try {
- ArduinoManager.downloadAndInstall(url, archiveFileName, getInstallPath(), monitor);
- } catch (IOException e) {
- throw Activator.coreException(e);
- }
- }
-
- public void uninstall(IProgressMonitor monitor) throws CoreException {
- try {
- ArduinoManager.recursiveDelete(getInstallPath());
- } catch (IOException e) {
- throw Activator.coreException(e);
- }
- }
-
- public Collection<Path> getIncludePath() {
- Path installPath = getInstallPath();
- Path srcPath = installPath.resolve("src"); //$NON-NLS-1$
- if (srcPath.toFile().isDirectory()) {
- return Collections.singletonList(srcPath);
- } else {
- Path utilityPath = installPath.resolve("utility"); //$NON-NLS-1$
- if (utilityPath.toFile().isDirectory()) {
- return Arrays.asList(installPath, utilityPath);
- } else {
- return Collections.singletonList(installPath);
- }
- }
- }
-
- private void getSources(Collection<String> sources, Path dir, boolean recurse) {
- for (File file : dir.toFile().listFiles()) {
- if (file.isDirectory()) {
- if (recurse) {
- getSources(sources, file.toPath(), recurse);
- }
- } else {
- if (ArduinoBuildConfiguration.isSource(file.getName())) {
- sources.add(ArduinoBuildConfiguration.pathString(file.toPath()));
- }
- }
- }
- }
-
- public Collection<String> getSources() {
- List<String> sources = new ArrayList<>();
- Path installPath = getInstallPath();
- Path srcPath = installPath.resolve("src"); //$NON-NLS-1$
- if (srcPath.toFile().isDirectory()) {
- getSources(sources, srcPath, true);
- } else {
- getSources(sources, installPath, false);
- Path utilityPath = installPath.resolve("utility"); //$NON-NLS-1$
- if (utilityPath.toFile().isDirectory()) {
- getSources(sources, utilityPath, false);
- }
- }
- return sources;
- }
-
- @Override
- public String toString() {
- return getName();
- }
-
- private String fixText(String text) {
- String fixed = text.replaceAll("&", "&amp;"); //$NON-NLS-1$ //$NON-NLS-2$
- fixed = fixed.replaceAll("<", "&lt;"); //$NON-NLS-1$ //$NON-NLS-2$
- return fixed;
- }
-
- public String toFormText() {
- StringBuilder text = new StringBuilder();
-
- text.append("<form>"); //$NON-NLS-1$
- text.append(String.format("<p><b>%s: %s</b></p>", "Library", fixText(getName()))); //$NON-NLS-1$
-
- if (getMaintainer() != null) {
- text.append(String.format("<p>%s: %s</p>", "Maintainer", fixText(getMaintainer()))); //$NON-NLS-1$
- }
-
- if (getWebsite() != null) {
- text.append(String.format("<p><a href=\"%s\">%s</a></p>", getWebsite(), "Online help")); //$NON-NLS-1$
- }
-
- text.append(String.format("<p>%s</p>", getSentence()));
- if (getParagraph() != null && !getParagraph().equals(getSentence())) {
- text.append(String.format("<p>%s</p>", getParagraph()));
- }
-
- text.append("</form>");
-
- return text.toString();
- }
-
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((name == null) ? 0 : name.hashCode());
- result = prime * result + ((platform == null) ? 0 : platform.hashCode());
- return result;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (getClass() != obj.getClass())
- return false;
- ArduinoLibrary other = (ArduinoLibrary) obj;
- if (name == null) {
- if (other.name != null)
- return false;
- } else if (!name.equals(other.name))
- return false;
- if (platform == null) {
- if (other.platform != null)
- return false;
- } else if (!platform.equals(other.platform))
- return false;
- return true;
- }
-
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/board/ArduinoManager.java b/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/board/ArduinoManager.java
deleted file mode 100644
index 6ff9424f114..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/board/ArduinoManager.java
+++ /dev/null
@@ -1,782 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.arduino.core.internal.board;
-
-import java.io.BufferedInputStream;
-import java.io.FileInputStream;
-import java.io.FileReader;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.Reader;
-import java.net.URL;
-import java.net.URLConnection;
-import java.nio.file.FileVisitResult;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.nio.file.SimpleFileVisitor;
-import java.nio.file.StandardCopyOption;
-import java.nio.file.attribute.BasicFileAttributes;
-import java.nio.file.attribute.PosixFilePermission;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.Properties;
-import java.util.Set;
-
-import org.apache.commons.compress.archivers.ArchiveEntry;
-import org.apache.commons.compress.archivers.ArchiveException;
-import org.apache.commons.compress.archivers.ArchiveInputStream;
-import org.apache.commons.compress.archivers.ArchiveStreamFactory;
-import org.apache.commons.compress.archivers.tar.TarArchiveEntry;
-import org.apache.commons.compress.compressors.CompressorException;
-import org.apache.commons.compress.compressors.CompressorStreamFactory;
-import org.eclipse.cdt.arduino.core.internal.Activator;
-import org.eclipse.cdt.arduino.core.internal.ArduinoPreferences;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.ProjectScope;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.SubMonitor;
-import org.eclipse.core.runtime.preferences.IEclipsePreferences;
-import org.osgi.service.prefs.BackingStoreException;
-
-import com.google.gson.Gson;
-import com.google.gson.JsonArray;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonObject;
-import com.google.gson.JsonParser;
-import com.google.gson.JsonPrimitive;
-
-public class ArduinoManager {
-
- // Build tool ids
- public static final String BOARD_OPTION_ID = "org.eclipse.cdt.arduino.option.board"; //$NON-NLS-1$
- public static final String PLATFORM_OPTION_ID = "org.eclipse.cdt.arduino.option.platform"; //$NON-NLS-1$
- public static final String PACKAGE_OPTION_ID = "org.eclipse.cdt.arduino.option.package"; //$NON-NLS-1$
- public static final String AVR_TOOLCHAIN_ID = "org.eclipse.cdt.arduino.toolChain.avr"; //$NON-NLS-1$
-
- public static final String LIBRARIES_URL = "http://downloads.arduino.cc/libraries/library_index.json"; //$NON-NLS-1$
- public static final String LIBRARIES_FILE = "library_index.json"; //$NON-NLS-1$
-
- private static final String LIBRARIES = "libraries"; //$NON-NLS-1$
-
- // arduinocdt install properties
- private static final String VERSION_KEY = "version"; //$NON-NLS-1$
- private static final String ACCEPTED_KEY = "accepted"; //$NON-NLS-1$
- private static final String VERSION = "2"; //$NON-NLS-1$
-
- private Properties props;
-
- private Path arduinoHome = ArduinoPreferences.getArduinoHome();
- private Map<String, ArduinoPackage> packages;
- private Map<String, ArduinoLibrary> installedLibraries;
-
- private Path getVersionFile() {
- return ArduinoPreferences.getArduinoHome().resolve(".version"); //$NON-NLS-1$
- }
-
- private synchronized void init() throws CoreException {
- if (!arduinoHome.equals(ArduinoPreferences.getArduinoHome())) {
- // Arduino Home changed, reset.
- props = null;
- packages = null;
- installedLibraries = null;
- arduinoHome = ArduinoPreferences.getArduinoHome();
- }
-
- if (props == null) {
- if (!Files.exists(ArduinoPreferences.getArduinoHome())) {
- try {
- Files.createDirectories(ArduinoPreferences.getArduinoHome());
- } catch (IOException e) {
- throw Activator.coreException(e);
- }
- }
-
- props = new Properties();
- Path propsFile = getVersionFile();
- if (Files.exists(propsFile)) {
- try (FileReader reader = new FileReader(propsFile.toFile())) {
- props.load(reader);
- } catch (IOException e) {
- throw Activator.coreException(e);
- }
- }
-
- // See if we need a conversion
- int version = Integer.parseInt(props.getProperty(VERSION_KEY, "1")); //$NON-NLS-1$
- if (version < Integer.parseInt(VERSION)) {
- props.setProperty(VERSION_KEY, VERSION);
- try (FileWriter writer = new FileWriter(getVersionFile().toFile())) {
- props.store(writer, ""); //$NON-NLS-1$
- } catch (IOException e) {
- throw Activator.coreException(e);
- }
- }
- }
- }
-
- public void convertLibrariesDir() throws CoreException {
- Path librariesDir = ArduinoPreferences.getArduinoHome().resolve("libraries"); //$NON-NLS-1$
- if (!Files.isDirectory(librariesDir)) {
- return;
- }
-
- try {
- Path tmpDir = Files.createTempDirectory("alib"); //$NON-NLS-1$
- Path tmpLibDir = tmpDir.resolve("libraries"); //$NON-NLS-1$
- Files.move(librariesDir, tmpLibDir);
- Files.list(tmpLibDir).forEach(path -> {
- try {
- Optional<Path> latest = Files.list(path)
- .reduce((path1, path2) -> compareVersions(path1.getFileName().toString(),
- path2.getFileName().toString()) > 0 ? path1 : path2);
- if (latest.isPresent()) {
- Files.move(latest.get(), librariesDir.resolve(path.getFileName()));
- }
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- });
- recursiveDelete(tmpDir);
- } catch (RuntimeException | IOException e) {
- throw Activator.coreException(e);
- }
-
- }
-
- public boolean licenseAccepted() throws CoreException {
- init();
- return Boolean.getBoolean(props.getProperty(ACCEPTED_KEY, Boolean.FALSE.toString()));
- }
-
- public void acceptLicense() throws CoreException {
- init();
- props.setProperty(ACCEPTED_KEY, Boolean.TRUE.toString());
- try (FileWriter writer = new FileWriter(getVersionFile().toFile())) {
- props.store(writer, ""); //$NON-NLS-1$
- } catch (IOException e) {
- throw Activator.coreException(e);
- }
- }
-
- public Collection<ArduinoPlatform> getInstalledPlatforms() throws CoreException {
- List<ArduinoPlatform> platforms = new ArrayList<>();
- for (ArduinoPackage pkg : getPackages()) {
- platforms.addAll(pkg.getInstalledPlatforms());
- }
- return platforms;
- }
-
- public ArduinoPlatform getInstalledPlatform(String packageName, String architecture) throws CoreException {
- ArduinoPackage pkg = getPackage(packageName);
- return pkg != null ? pkg.getInstalledPlatform(architecture) : null;
- }
-
- public synchronized Collection<ArduinoPlatform> getAvailablePlatforms(IProgressMonitor monitor)
- throws CoreException {
- List<ArduinoPlatform> platforms = new ArrayList<>();
- URL[] urls = ArduinoPreferences.getBoardUrlList();
- SubMonitor sub = SubMonitor.convert(monitor, urls.length + 1);
-
- sub.beginTask("Downloading package descriptions", urls.length); //$NON-NLS-1$
- for (URL url : urls) {
- Path packagePath = ArduinoPreferences.getArduinoHome().resolve(Paths.get(url.getPath()).getFileName());
- try {
- Files.createDirectories(ArduinoPreferences.getArduinoHome());
- URLConnection connection = url.openConnection();
- connection.setRequestProperty("User-Agent", //$NON-NLS-1$
- "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2"); //$NON-NLS-1$
- try (InputStream in = connection.getInputStream()) {
- Files.copy(in, packagePath, StandardCopyOption.REPLACE_EXISTING);
- }
- } catch (IOException e) {
- // Log and continue, URLs sometimes come and go
- Activator.log(e);
- }
- sub.worked(1);
- }
-
- sub.beginTask("Loading available packages", 1); //$NON-NLS-1$
- resetPackages();
- for (ArduinoPackage pkg : getPackages()) {
- platforms.addAll(pkg.getAvailablePlatforms());
- }
- sub.done();
-
- return platforms;
- }
-
- public synchronized Collection<ArduinoPlatform> getPlatformUpdates(IProgressMonitor monitor) throws CoreException {
- List<ArduinoPlatform> platforms = new ArrayList<>();
- URL[] urls = ArduinoPreferences.getBoardUrlList();
- SubMonitor sub = SubMonitor.convert(monitor, urls.length + 1);
-
- sub.beginTask("Downloading package descriptions", urls.length); //$NON-NLS-1$
- for (URL url : urls) {
- Path packagePath = ArduinoPreferences.getArduinoHome().resolve(Paths.get(url.getPath()).getFileName());
- try {
- Files.createDirectories(ArduinoPreferences.getArduinoHome());
- try (InputStream in = url.openStream()) {
- Files.copy(in, packagePath, StandardCopyOption.REPLACE_EXISTING);
- }
- } catch (IOException e) {
- throw Activator.coreException(String.format("Error loading %s", url.toString()), e); //$NON-NLS-1$
- }
- sub.worked(1);
- }
-
- sub.beginTask("Loading available package updates", 1); //$NON-NLS-1$
- resetPackages();
- for (ArduinoPackage pkg : getPackages()) {
- platforms.addAll(pkg.getPlatformUpdates());
- }
- sub.done();
-
- return platforms;
- }
-
- public void installPlatforms(Collection<ArduinoPlatform> platforms, IProgressMonitor monitor) throws CoreException {
- SubMonitor sub = SubMonitor.convert(monitor, platforms.size());
- for (ArduinoPlatform platform : platforms) {
- sub.setTaskName(String.format("Installing %s %s", platform.getName(), platform.getVersion())); //$NON-NLS-1$
- platform.install(sub);
- sub.worked(1);
- }
- sub.done();
- }
-
- public void uninstallPlatforms(Collection<ArduinoPlatform> platforms, IProgressMonitor monitor) {
- SubMonitor sub = SubMonitor.convert(monitor, platforms.size());
- for (ArduinoPlatform platform : platforms) {
- sub.setTaskName(String.format("Uninstalling %s", platform.getName())); //$NON-NLS-1$
- platform.uninstall(sub);
- sub.worked(1);
- }
- sub.done();
- }
-
- public static List<ArduinoPlatform> getSortedPlatforms(Collection<ArduinoPlatform> platforms) {
- List<ArduinoPlatform> result = new ArrayList<>(platforms);
- Collections.sort(result, (plat1, plat2) -> {
- int c1;
- String p1 = plat1.getPackage().getName();
- String p2 = plat2.getPackage().getName();
- if (p1.equals(p2)) {
- c1 = 0;
- } else if (p1.equals("arduino")) {
- c1 = -1;
- } else if (p2.equals("arduino")) {
- c1 = 1;
- } else {
- c1 = plat1.getPackage().getName().compareToIgnoreCase(plat2.getPackage().getName());
- }
-
- if (c1 > 0) {
- return 1;
- } else if (c1 < 0) {
- return -1;
- } else {
- return plat1.getArchitecture().compareToIgnoreCase(plat2.getArchitecture());
- }
- });
- return result;
- }
-
- public static List<ArduinoLibrary> getSortedLibraries(Collection<ArduinoLibrary> libraries) {
- List<ArduinoLibrary> result = new ArrayList<>(libraries);
- Collections.sort(result, (lib1, lib2) -> {
- return lib1.getName().compareToIgnoreCase(lib2.getName());
- });
- return result;
- }
-
- private synchronized void initPackages() throws CoreException {
- init();
- if (packages == null) {
- packages = new HashMap<>();
-
- try {
- Files.list(ArduinoPreferences.getArduinoHome())
- .filter(path -> path.getFileName().toString().startsWith("package_")) //$NON-NLS-1$
- .forEach(path -> {
- try (Reader reader = new FileReader(path.toFile())) {
- PackageIndex index = new Gson().fromJson(reader, PackageIndex.class);
- for (ArduinoPackage pkg : index.getPackages()) {
- ArduinoPackage p = packages.get(pkg.getName());
- if (p == null) {
- pkg.init();
- packages.put(pkg.getName(), pkg);
- } else {
- p.merge(pkg);
- }
- }
- } catch (IOException e) {
- Activator.log(e);
- }
- });
- } catch (IOException e) {
- throw Activator.coreException(e);
- }
- }
- }
-
- private Collection<ArduinoPackage> getPackages() throws CoreException {
- initPackages();
- return packages.values();
- }
-
- public void resetPackages() {
- packages = null;
- }
-
- public ArduinoPackage getPackage(String packageName) throws CoreException {
- if (packageName == null) {
- return null;
- } else {
- initPackages();
- return packages.get(packageName);
- }
- }
-
- public Collection<ArduinoBoard> getInstalledBoards() throws CoreException {
- List<ArduinoBoard> boards = new ArrayList<>();
- for (ArduinoPlatform platform : getInstalledPlatforms()) {
- boards.addAll(platform.getBoards());
- }
- return boards;
- }
-
- public ArduinoBoard getBoard(String packageName, String architecture, String boardId) throws CoreException {
- for (ArduinoPlatform platform : getInstalledPlatforms()) {
- if (platform.getPackage().getName().equals(packageName)
- && platform.getArchitecture().equals(architecture)) {
- return platform.getBoard(boardId);
- }
- }
-
- // For backwards compat, check platform name
- for (ArduinoPlatform platform : getInstalledPlatforms()) {
- if (platform.getPackage().getName().equals(packageName) && platform.getName().equals(architecture)) {
- return platform.getBoardByName(boardId);
- }
- }
-
- return null;
- }
-
- public ArduinoTool getTool(String packageName, String toolName, String version) {
- ArduinoPackage pkg = packages.get(packageName);
- return pkg != null ? pkg.getTool(toolName, version) : null;
- }
-
- private void initInstalledLibraries() throws CoreException {
- init();
- if (installedLibraries == null) {
- installedLibraries = new HashMap<>();
-
- Path librariesDir = ArduinoPreferences.getArduinoHome().resolve("libraries"); //$NON-NLS-1$
- if (Files.isDirectory(librariesDir)) {
- try {
- Files.find(librariesDir, 3,
- (path, attrs) -> path.getFileName().toString().equals("library.properties")) //$NON-NLS-1$
- .forEach(path -> {
- try {
- ArduinoLibrary library = new ArduinoLibrary(path);
- installedLibraries.put(library.getName(), library);
- } catch (CoreException e) {
- throw new RuntimeException(e);
- }
- });
- } catch (IOException e) {
- throw Activator.coreException(e);
- }
- }
- }
- }
-
- public Collection<ArduinoLibrary> getInstalledLibraries() throws CoreException {
- initInstalledLibraries();
- return installedLibraries.values();
- }
-
- public ArduinoLibrary getInstalledLibrary(String name) throws CoreException {
- initInstalledLibraries();
- return installedLibraries.get(name);
- }
-
- public Collection<ArduinoLibrary> getAvailableLibraries(IProgressMonitor monitor) throws CoreException {
- try {
- initInstalledLibraries();
- Map<String, ArduinoLibrary> libs = new HashMap<>();
-
- SubMonitor sub = SubMonitor.convert(monitor, "Downloading library index", 2);
- Path librariesPath = ArduinoPreferences.getArduinoHome().resolve(LIBRARIES_FILE);
- URL librariesUrl = new URL(LIBRARIES_URL);
- Files.createDirectories(ArduinoPreferences.getArduinoHome());
- Files.copy(librariesUrl.openStream(), librariesPath, StandardCopyOption.REPLACE_EXISTING);
- sub.worked(1);
-
- try (Reader reader = new FileReader(librariesPath.toFile())) {
- sub.setTaskName("Calculating available libraries");
- LibraryIndex libraryIndex = new Gson().fromJson(reader, LibraryIndex.class);
- for (ArduinoLibrary library : libraryIndex.getLibraries()) {
- String libraryName = library.getName();
- if (!installedLibraries.containsKey(libraryName)) {
- ArduinoLibrary current = libs.get(libraryName);
- if (current == null || compareVersions(library.getVersion(), current.getVersion()) > 0) {
- libs.put(libraryName, library);
- }
- }
- }
- }
- sub.done();
- return libs.values();
- } catch (IOException e) {
- throw Activator.coreException(e);
- }
- }
-
- public Collection<ArduinoLibrary> getLibraryUpdates(IProgressMonitor monitor) throws CoreException {
- try {
- initInstalledLibraries();
- Map<String, ArduinoLibrary> libs = new HashMap<>();
-
- SubMonitor sub = SubMonitor.convert(monitor, "Downloading library index", 2);
- Path librariesPath = ArduinoPreferences.getArduinoHome().resolve(LIBRARIES_FILE);
- URL librariesUrl = new URL(LIBRARIES_URL);
- Files.createDirectories(ArduinoPreferences.getArduinoHome());
- Files.copy(librariesUrl.openStream(), librariesPath, StandardCopyOption.REPLACE_EXISTING);
- sub.worked(1);
-
- try (Reader reader = new FileReader(librariesPath.toFile())) {
- sub.setTaskName("Calculating library updates");
- LibraryIndex libraryIndex = new Gson().fromJson(reader, LibraryIndex.class);
- for (ArduinoLibrary library : libraryIndex.getLibraries()) {
- String libraryName = library.getName();
- ArduinoLibrary installed = installedLibraries.get(libraryName);
- if (installed != null && compareVersions(library.getVersion(), installed.getVersion()) > 0) {
- ArduinoLibrary current = libs.get(libraryName);
- if (current == null || compareVersions(library.getVersion(), current.getVersion()) > 0) {
- libs.put(libraryName, library);
- }
- }
- }
- }
- sub.done();
- return libs.values();
- } catch (IOException e) {
- throw Activator.coreException(e);
- }
- }
-
- public void installLibraries(Collection<ArduinoLibrary> libraries, IProgressMonitor monitor) throws CoreException {
- SubMonitor sub = SubMonitor.convert(monitor, libraries.size());
- for (ArduinoLibrary library : libraries) {
- sub.setTaskName(String.format("Installing %s", library.getName())); //$NON-NLS-1$
- library.install(sub);
- try {
- ArduinoLibrary newLibrary = new ArduinoLibrary(library.getInstallPath().resolve("library.properties")); //$NON-NLS-1$
- installedLibraries.put(newLibrary.getName(), newLibrary);
- } catch (CoreException e) {
- throw new RuntimeException(e);
- }
- sub.worked(1);
- }
- sub.done();
- }
-
- public void uninstallLibraries(Collection<ArduinoLibrary> libraries, IProgressMonitor monitor)
- throws CoreException {
- SubMonitor sub = SubMonitor.convert(monitor, libraries.size());
- for (ArduinoLibrary library : libraries) {
- sub.setTaskName(String.format("Installing %s", library.getName())); //$NON-NLS-1$
- library.uninstall(sub);
- installedLibraries.remove(library.getName());
- sub.worked(1);
- }
- sub.done();
- }
-
- public Collection<ArduinoLibrary> getLibraries(IProject project) throws CoreException {
- initInstalledLibraries();
- IEclipsePreferences settings = getSettings(project);
- String librarySetting = settings.get(LIBRARIES, "[]"); //$NON-NLS-1$
- JsonArray libArray = new JsonParser().parse(librarySetting).getAsJsonArray();
-
- List<ArduinoLibrary> libraries = new ArrayList<>(libArray.size());
- for (JsonElement libElement : libArray) {
- if (libElement.isJsonPrimitive()) {
- String libName = libElement.getAsString();
- ArduinoLibrary lib = installedLibraries.get(libName);
- if (lib != null) {
- libraries.add(lib);
- }
- } else {
- JsonObject libObj = libElement.getAsJsonObject();
- String packageName = libObj.get("package").getAsString(); //$NON-NLS-1$
- String platformName = libObj.get("platform").getAsString(); //$NON-NLS-1$
- String libName = libObj.get("library").getAsString(); //$NON-NLS-1$
- ArduinoPackage pkg = getPackage(packageName);
- if (pkg != null) {
- ArduinoPlatform platform = pkg.getInstalledPlatform(platformName);
- if (platform != null) {
- ArduinoLibrary lib = platform.getLibrary(libName);
- if (lib != null) {
- libraries.add(lib);
- }
- }
- }
- }
- }
- return libraries;
- }
-
- public void setLibraries(final IProject project, final Collection<ArduinoLibrary> libraries) throws CoreException {
- JsonArray elements = new JsonArray();
- for (ArduinoLibrary library : libraries) {
- ArduinoPlatform platform = library.getPlatform();
- if (platform != null) {
- JsonObject libObj = new JsonObject();
- libObj.addProperty("package", platform.getPackage().getName()); //$NON-NLS-1$
- libObj.addProperty("platform", platform.getArchitecture()); //$NON-NLS-1$
- libObj.addProperty("library", library.getName()); //$NON-NLS-1$
- elements.add(libObj);
- } else {
- elements.add(new JsonPrimitive(library.getName()));
- }
- }
- IEclipsePreferences settings = getSettings(project);
- settings.put(LIBRARIES, new Gson().toJson(elements));
- try {
- settings.flush();
- } catch (BackingStoreException e) {
- throw Activator.coreException(e);
- }
- }
-
- private IEclipsePreferences getSettings(IProject project) {
- return new ProjectScope(project).getNode(Activator.getId());
- }
-
- public static void downloadAndInstall(String url, String archiveFileName, Path installPath,
- IProgressMonitor monitor) throws IOException {
- Exception error = null;
- for (int retries = 3; retries > 0 && !monitor.isCanceled(); --retries) {
- try {
- URL dl = new URL(url);
- Path dlDir = ArduinoPreferences.getArduinoHome().resolve("downloads"); //$NON-NLS-1$
- Files.createDirectories(dlDir);
- Path archivePath = dlDir.resolve(archiveFileName);
- URLConnection conn = dl.openConnection();
- conn.setConnectTimeout(10000);
- conn.setReadTimeout(10000);
- Files.copy(conn.getInputStream(), archivePath, StandardCopyOption.REPLACE_EXISTING);
-
- boolean isWin = Platform.getOS().equals(Platform.OS_WIN32);
-
- // extract
- ArchiveInputStream archiveIn = null;
- try {
- String compressor = null;
- String archiver = null;
- if (archiveFileName.endsWith("tar.bz2")) { //$NON-NLS-1$
- compressor = CompressorStreamFactory.BZIP2;
- archiver = ArchiveStreamFactory.TAR;
- } else if (archiveFileName.endsWith(".tar.gz") || archiveFileName.endsWith(".tgz")) { //$NON-NLS-1$ //$NON-NLS-2$
- compressor = CompressorStreamFactory.GZIP;
- archiver = ArchiveStreamFactory.TAR;
- } else if (archiveFileName.endsWith(".tar.xz")) { //$NON-NLS-1$
- compressor = CompressorStreamFactory.XZ;
- archiver = ArchiveStreamFactory.TAR;
- } else if (archiveFileName.endsWith(".zip")) { //$NON-NLS-1$
- archiver = ArchiveStreamFactory.ZIP;
- }
-
- InputStream in = new BufferedInputStream(new FileInputStream(archivePath.toFile()));
- if (compressor != null) {
- in = new CompressorStreamFactory().createCompressorInputStream(compressor, in);
- }
- archiveIn = new ArchiveStreamFactory().createArchiveInputStream(archiver, in);
-
- for (ArchiveEntry entry = archiveIn.getNextEntry(); entry != null; entry = archiveIn
- .getNextEntry()) {
- if (entry.isDirectory()) {
- continue;
- }
-
- // Magic file for git tarballs
- Path path = Paths.get(entry.getName());
- if (path.endsWith("pax_global_header")) { //$NON-NLS-1$
- continue;
- }
-
- // Strip the first directory of the path
- Path entryPath;
- switch (path.getName(0).toString()) {
- case "i586":
- case "i686":
- // Cheat for Intel
- entryPath = installPath.resolve(path);
- break;
- default:
- entryPath = installPath.resolve(path.subpath(1, path.getNameCount()));
- }
-
- Files.createDirectories(entryPath.getParent());
-
- if (entry instanceof TarArchiveEntry) {
- TarArchiveEntry tarEntry = (TarArchiveEntry) entry;
- if (tarEntry.isLink()) {
- Path linkPath = Paths.get(tarEntry.getLinkName());
- linkPath = installPath.resolve(linkPath.subpath(1, linkPath.getNameCount()));
- Files.deleteIfExists(entryPath);
- Files.createSymbolicLink(entryPath, entryPath.getParent().relativize(linkPath));
- } else if (tarEntry.isSymbolicLink()) {
- Path linkPath = Paths.get(tarEntry.getLinkName());
- Files.deleteIfExists(entryPath);
- Files.createSymbolicLink(entryPath, linkPath);
- } else {
- Files.copy(archiveIn, entryPath, StandardCopyOption.REPLACE_EXISTING);
- }
- if (!isWin && !tarEntry.isSymbolicLink()) {
- int mode = tarEntry.getMode();
- Files.setPosixFilePermissions(entryPath, toPerms(mode));
- }
- } else {
- Files.copy(archiveIn, entryPath, StandardCopyOption.REPLACE_EXISTING);
- }
- }
- } finally {
- if (archiveIn != null) {
- archiveIn.close();
- }
- }
- return;
- } catch (IOException | CompressorException | ArchiveException e) {
- error = e;
- // retry
- }
- }
-
- // out of retries
- if (error instanceof IOException) {
- throw (IOException) error;
- } else {
- throw new IOException(error);
- }
- }
-
- public static int compareVersions(String version1, String version2) {
- if (version1 == null) {
- return version2 == null ? 0 : -1;
- }
-
- if (version2 == null) {
- return 1;
- }
-
- String[] v1 = version1.split("\\."); //$NON-NLS-1$
- String[] v2 = version2.split("\\."); //$NON-NLS-1$
- for (int i = 0; i < Math.max(v1.length, v2.length); ++i) {
- if (v1.length <= i) {
- return v2.length < i ? 0 : -1;
- }
-
- if (v2.length <= i) {
- return 1;
- }
-
- try {
- int vi1 = Integer.parseInt(v1[i]);
- int vi2 = Integer.parseInt(v2[i]);
- if (vi1 < vi2) {
- return -1;
- }
-
- if (vi1 > vi2) {
- return 1;
- }
- } catch (NumberFormatException e) {
- // not numbers, do string compares
- int c = v1[i].compareTo(v2[i]);
- if (c < 0) {
- return -1;
- }
- if (c > 0) {
- return 1;
- }
- }
- }
-
- return 0;
- }
-
- private static Set<PosixFilePermission> toPerms(int mode) {
- Set<PosixFilePermission> perms = new HashSet<>();
- if ((mode & 0400) != 0) {
- perms.add(PosixFilePermission.OWNER_READ);
- }
- if ((mode & 0200) != 0) {
- perms.add(PosixFilePermission.OWNER_WRITE);
- }
- if ((mode & 0100) != 0) {
- perms.add(PosixFilePermission.OWNER_EXECUTE);
- }
- if ((mode & 0040) != 0) {
- perms.add(PosixFilePermission.GROUP_READ);
- }
- if ((mode & 0020) != 0) {
- perms.add(PosixFilePermission.GROUP_WRITE);
- }
- if ((mode & 0010) != 0) {
- perms.add(PosixFilePermission.GROUP_EXECUTE);
- }
- if ((mode & 0004) != 0) {
- perms.add(PosixFilePermission.OTHERS_READ);
- }
- if ((mode & 0002) != 0) {
- perms.add(PosixFilePermission.OTHERS_WRITE);
- }
- if ((mode & 0001) != 0) {
- perms.add(PosixFilePermission.OTHERS_EXECUTE);
- }
- return perms;
- }
-
- public static void recursiveDelete(Path directory) throws IOException {
- Files.walkFileTree(directory, new SimpleFileVisitor<Path>() {
- @Override
- public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
- Files.delete(file);
- return FileVisitResult.CONTINUE;
- }
-
- @Override
- public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {
- Files.delete(dir);
- return FileVisitResult.CONTINUE;
- }
-
- });
- }
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/board/ArduinoPackage.java b/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/board/ArduinoPackage.java
deleted file mode 100644
index c609cbe7de2..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/board/ArduinoPackage.java
+++ /dev/null
@@ -1,239 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.cdt.arduino.core.internal.board;
-
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.cdt.arduino.core.internal.ArduinoPreferences;
-import org.eclipse.core.runtime.CoreException;
-
-public class ArduinoPackage {
-
- // JSON fields
- private String name;
- private String maintainer;
- private String websiteURL;
- private String email;
- private ArduinoHelp help;
- private List<ArduinoPlatform> platforms;
- private List<ArduinoTool> tools;
- // end JSON fields
-
- private Map<String, ArduinoPlatform> installedPlatforms;
- private Map<String, ArduinoTool> latestTools;
-
- public String getName() {
- return name;
- }
-
- public String getMaintainer() {
- return maintainer;
- }
-
- public String getWebsiteURL() {
- return websiteURL;
- }
-
- public String getEmail() {
- return email;
- }
-
- public ArduinoHelp getHelp() {
- return help;
- }
-
- public Collection<ArduinoPlatform> getPlatforms() {
- return Collections.unmodifiableCollection(platforms);
- }
-
- void init() {
- for (ArduinoPlatform platform : platforms) {
- platform.init(this);
- }
- for (ArduinoTool tool : tools) {
- tool.init(this);
- }
- }
-
- void merge(ArduinoPackage other) {
- // Redo calculated fields
- installedPlatforms = null;
- latestTools = null;
-
- if (other.platforms != null) {
- if (platforms != null) {
- platforms.addAll(other.platforms);
- } else {
- platforms = other.platforms;
- }
- for (ArduinoPlatform platform : other.platforms) {
- platform.init(this);
- }
- }
-
- if (other.tools != null) {
- if (tools != null) {
- tools.addAll(other.tools);
- } else {
- tools = other.tools;
- }
- for (ArduinoTool tool : other.tools) {
- tool.init(this);
- }
- }
- }
-
- public ArduinoPlatform getPlatform(String architecture, String version) {
- if (platforms != null) {
- for (ArduinoPlatform plat : platforms) {
- if (plat.getArchitecture().equals(architecture) && plat.getVersion().equals(version)) {
- return plat;
- }
- }
- }
- return null;
- }
-
- public Path getInstallPath() {
- return ArduinoPreferences.getArduinoHome().resolve("packages").resolve(getName()); //$NON-NLS-1$
- }
-
- private synchronized void initInstalledPlatforms() throws CoreException {
- if (installedPlatforms == null) {
- installedPlatforms = new HashMap<>();
-
- Path hardware = getInstallPath().resolve("hardware"); //$NON-NLS-1$
- if (Files.isDirectory(hardware)) {
- for (ArduinoPlatform platform : platforms) {
- String arch = platform.getArchitecture();
- String version = platform.getVersion();
-
- Path platPath = hardware.resolve(arch).resolve(version);
- if (Files.exists(platPath)) {
- ArduinoPlatform current = installedPlatforms.get(arch);
- if (current == null || ArduinoManager.compareVersions(version, current.getVersion()) > 0) {
- installedPlatforms.put(arch, platform);
- }
- }
- }
- }
- }
- }
-
- public Collection<ArduinoPlatform> getInstalledPlatforms() throws CoreException {
- initInstalledPlatforms();
- return installedPlatforms.values();
- }
-
- public ArduinoPlatform getInstalledPlatform(String architecture) throws CoreException {
- if (architecture == null) {
- return null;
- } else {
- initInstalledPlatforms();
- return installedPlatforms.get(architecture);
- }
- }
-
- void platformInstalled(ArduinoPlatform platform) {
- installedPlatforms.put(platform.getArchitecture(), platform);
- }
-
- void platformUninstalled(ArduinoPlatform platform) {
- installedPlatforms.remove(platform.getArchitecture());
- }
-
- public Collection<ArduinoPlatform> getAvailablePlatforms() throws CoreException {
- initInstalledPlatforms();
- Map<String, ArduinoPlatform> platformMap = new HashMap<>();
- for (ArduinoPlatform platform : platforms) {
- if (!installedPlatforms.containsKey(platform.getArchitecture())) {
- ArduinoPlatform p = platformMap.get(platform.getArchitecture());
- if (p == null || ArduinoManager.compareVersions(platform.getVersion(), p.getVersion()) > 0) {
- platformMap.put(platform.getArchitecture(), platform);
- }
- }
- }
- return platformMap.values();
- }
-
- public Collection<ArduinoPlatform> getPlatformUpdates() throws CoreException {
- initInstalledPlatforms();
- Map<String, ArduinoPlatform> platformMap = new HashMap<>();
- for (ArduinoPlatform platform : platforms) {
- ArduinoPlatform installed = installedPlatforms.get(platform.getArchitecture());
- if (installed != null
- && ArduinoManager.compareVersions(platform.getVersion(), installed.getVersion()) > 0) {
- ArduinoPlatform current = platformMap.get(platform.getArchitecture());
- if (current == null
- || ArduinoManager.compareVersions(platform.getVersion(), current.getVersion()) > 0) {
- platformMap.put(platform.getArchitecture(), platform);
- }
- }
- }
- return platformMap.values();
- }
-
- public List<ArduinoTool> getTools() {
- return tools;
- }
-
- public ArduinoTool getTool(String toolName, String version) {
- for (ArduinoTool tool : tools) {
- if (tool.getName().equals(toolName) && tool.getVersion().equals(version)) {
- return tool;
- }
- }
- return null;
- }
-
- private void initLatestTools() {
- if (latestTools == null) {
- latestTools = new HashMap<>();
-
- for (ArduinoTool tool : tools) {
- ArduinoTool current = latestTools.get(tool.getName());
- if (current == null || ArduinoManager.compareVersions(tool.getVersion(), current.getVersion()) > 0) {
- latestTools.put(tool.getName(), tool);
- }
- }
- }
- }
-
- public ArduinoTool getLatestTool(String toolName) {
- initLatestTools();
- return latestTools.get(toolName);
- }
-
- public Collection<ArduinoTool> getLatestTools() {
- initLatestTools();
- return latestTools.values();
- }
-
- @Override
- public boolean equals(Object obj) {
- if (obj instanceof ArduinoPackage) {
- return ((ArduinoPackage) obj).getName().equals(getName());
- }
- return super.equals(obj);
- }
-
- @Override
- public int hashCode() {
- return getName().hashCode();
- }
-
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/board/ArduinoPlatform.java b/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/board/ArduinoPlatform.java
deleted file mode 100644
index c0a5bccc966..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/board/ArduinoPlatform.java
+++ /dev/null
@@ -1,421 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015, 2016 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.cdt.arduino.core.internal.board;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.Reader;
-import java.io.StringReader;
-import java.net.URL;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.cdt.arduino.core.internal.Activator;
-import org.eclipse.cdt.arduino.core.internal.ArduinoPreferences;
-import org.eclipse.cdt.arduino.core.internal.HierarchicalProperties;
-import org.eclipse.cdt.arduino.core.internal.LinkedProperties;
-import org.eclipse.cdt.arduino.core.internal.Messages;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.SubMonitor;
-
-public class ArduinoPlatform {
-
- // JSON fields
- private String name;
- private String architecture;
- private String version;
- private String category;
- private String url;
- private String archiveFileName;
- private String checksum;
- private String size;
- private List<ArduinoBoard> boards;
- private List<ToolDependency> toolsDependencies;
- // end JSON fields
-
- private Path installPath;
- private ArduinoPackage pkg;
- private HierarchicalProperties boardsProperties;
- private HierarchicalProperties platformProperties;
- private HierarchicalProperties programmerProperties;
- private Map<String, String> menus = new HashMap<>();
- private Map<String, ArduinoLibrary> libraries;
-
- void init(ArduinoPackage pkg) {
- this.pkg = pkg;
-
- for (ArduinoBoard board : boards) {
- if (board != null) {
- board.setOwners(this);
- }
- }
- }
-
- public ArduinoPackage getPackage() {
- return pkg;
- }
-
- public String getName() {
- return name;
- }
-
- public String getArchitecture() {
- return architecture;
- }
-
- public String getVersion() {
- return version.replace('+', '_');
- }
-
- public String getCategory() {
- return category;
- }
-
- public String getUrl() {
- return url;
- }
-
- public String getArchiveFileName() {
- return archiveFileName;
- }
-
- public String getChecksum() {
- return checksum;
- }
-
- public String getSize() {
- return size;
- }
-
- public void setPlatformProperties(HierarchicalProperties platformProperties) {
- this.platformProperties = platformProperties;
- }
-
- public List<ArduinoBoard> getBoards() {
- if (boardsProperties == null) {
- LinkedProperties boardProps = new LinkedProperties();
-
- if (Files.exists(getInstallPath())) {
- try (InputStream is = new FileInputStream(getInstallPath().resolve("boards.txt").toFile()); //$NON-NLS-1$
- Reader reader = new InputStreamReader(is, "UTF-8")) { //$NON-NLS-1$
- boardProps.load(reader);
- } catch (IOException e) {
- Activator.log(e);
- }
-
- boardsProperties = new HierarchicalProperties(boardProps);
-
- // Replace the boards with a real ones
- boards = new ArrayList<>();
- for (Map.Entry<String, HierarchicalProperties> entry : boardsProperties.getChildren().entrySet()) {
- if (entry.getValue().getChild("name") != null) { //$NON-NLS-1$
- // assume things with names are boards
- boards.add(new ArduinoBoard(entry.getKey(), entry.getValue()).setOwners(this));
- }
- }
-
- // Build the menu
- HierarchicalProperties menuProp = boardsProperties.getChild("menu"); //$NON-NLS-1$
- if (menuProp != null) {
- for (Map.Entry<String, HierarchicalProperties> entry : menuProp.getChildren().entrySet()) {
- menus.put(entry.getKey(), entry.getValue().getValue());
- }
- }
- }
- }
- return boards;
- }
-
- public HierarchicalProperties getBoardsProperties() {
- return boardsProperties;
- }
-
- public ArduinoBoard getBoard(String id) throws CoreException {
- for (ArduinoBoard board : getBoards()) {
- if (id.equals(board.getId())) {
- return board;
- }
- }
- return null;
- }
-
- public ArduinoBoard getBoardByName(String name) throws CoreException {
- for (ArduinoBoard board : getBoards()) {
- if (name.equals(board.getName())) {
- return board;
- }
- }
- return null;
- }
-
- public String getMenuText(String id) {
- return menus.get(id);
- }
-
- public List<ToolDependency> getToolsDependencies() {
- return toolsDependencies;
- }
-
- public ArduinoTool getTool(String name) throws CoreException {
- for (ToolDependency toolDep : toolsDependencies) {
- if (toolDep.getName().equals(name)) {
- return toolDep.getTool();
- }
- }
- return null;
- }
-
- public HierarchicalProperties getPlatformProperties() throws CoreException {
- if (platformProperties == null) {
- LinkedProperties rawPlatformProps = new LinkedProperties();
- try (BufferedReader reader = new BufferedReader(
- new FileReader(getInstallPath().resolve("platform.txt").toFile()))) { //$NON-NLS-1$
- // There are regex's here and need to preserve the \'s
- StringBuilder buffer = new StringBuilder();
- for (String line = reader.readLine(); line != null; line = reader.readLine()) {
- buffer.append(line.replace("\\", "\\\\")); //$NON-NLS-1$ //$NON-NLS-2$
- buffer.append('\n');
- }
- try (Reader reader1 = new StringReader(buffer.toString())) {
- rawPlatformProps.load(reader1);
- }
- } catch (IOException e) {
- throw Activator.coreException(e);
- }
- platformProperties = new HierarchicalProperties(rawPlatformProps);
- }
- return platformProperties;
- }
-
- public HierarchicalProperties getProgrammers() throws CoreException {
- if (programmerProperties == null) {
- LinkedProperties props = new LinkedProperties();
- Path programmersTxt = getInstallPath().resolve("programmers.txt"); //$NON-NLS-1$
- if (Files.exists(programmersTxt)) {
- try (FileInputStream in = new FileInputStream(programmersTxt.toFile())) {
- props.load(in);
- programmerProperties = new HierarchicalProperties(props);
- } catch (IOException e) {
- throw Activator.coreException(e);
- }
- } else {
- // TODO for now, grab the one from the arduino package
- ArduinoManager manager = Activator.getService(ArduinoManager.class);
- ArduinoPackage arduinoPkg = manager.getPackage("arduino"); //$NON-NLS-1$
- if (arduinoPkg != null) {
- ArduinoPlatform arduinoPlat = arduinoPkg.getInstalledPlatform(getArchitecture());
- if (arduinoPlat != null) {
- programmerProperties = arduinoPlat.getProgrammers();
- }
- }
- }
- }
- return programmerProperties;
- }
-
- public Path getInstallPath() {
- if (installPath == null) {
- Path oldPath = getPackage().getInstallPath().resolve("hardware").resolve(getPackage().getName()) //$NON-NLS-1$
- .resolve(getArchitecture()).resolve(getVersion());
- if (Files.exists(oldPath)) {
- installPath = oldPath;
- } else {
- installPath = getPackage().getInstallPath().resolve("hardware").resolve(getArchitecture()) //$NON-NLS-1$
- .resolve(getVersion());
- }
- }
- return installPath;
- }
-
- private void initLibraries() throws CoreException {
- if (libraries == null) {
- libraries = new HashMap<>();
- if (Files.exists(getInstallPath())) {
- File[] libraryDirs = getInstallPath().resolve("libraries").toFile().listFiles(); //$NON-NLS-1$
- if (libraryDirs != null) {
- for (File libraryDir : libraryDirs) {
- Path propsPath = libraryDir.toPath().resolve("library.properties"); //$NON-NLS-1$
- if (propsPath.toFile().exists()) {
- ArduinoLibrary lib = new ArduinoLibrary(propsPath, this);
- libraries.put(lib.getName(), lib);
- }
- }
- }
- }
- }
- }
-
- public synchronized Collection<ArduinoLibrary> getLibraries() throws CoreException {
- initLibraries();
- return libraries.values();
- }
-
- public synchronized ArduinoLibrary getLibrary(String name) throws CoreException {
- initLibraries();
- return libraries != null ? libraries.get(name) : null;
- }
-
- public void install(IProgressMonitor monitor) throws CoreException {
- int work = 1 + toolsDependencies.size();
-
- boolean exists = Files.exists(getInstallPath());
- if (exists)
- work++;
-
- Path makePath = ArduinoPreferences.getArduinoHome().resolve("make.exe"); //$NON-NLS-1$
- boolean needMake = Platform.getOS().equals(Platform.OS_WIN32) && !Files.exists(makePath);
- if (needMake)
- work++;
-
- SubMonitor sub = SubMonitor.convert(monitor, work);
-
- // Check if we're installed already
- if (exists) {
- try {
- sub.setTaskName(String.format("Removing old package %s", getName()));
- ArduinoManager.recursiveDelete(getInstallPath());
- sub.worked(1);
- } catch (IOException e) {
- // just log it, shouldn't break the install
- Activator.log(e);
- }
- }
-
- // Install the tools
- for (ToolDependency toolDep : toolsDependencies) {
- sub.setTaskName(String.format("Installing tool %s", toolDep.getName()));
- toolDep.install(monitor);
- sub.worked(1);
- }
-
- // On Windows install make from bintray
- if (needMake) {
- try {
- sub.setTaskName("Installing make");
- Files.createDirectories(makePath.getParent());
- URL makeUrl = new URL("https://bintray.com/artifact/download/cdtdoug/tools/make.exe"); //$NON-NLS-1$
- Files.copy(makeUrl.openStream(), makePath);
- makePath.toFile().setExecutable(true, false);
- sub.worked(1);
- } catch (IOException e) {
- throw Activator.coreException(e);
- }
- }
-
- // Download platform archive
- sub.setTaskName(String.format("Downloading and installing %s", getName()));
- try {
- ArduinoManager.downloadAndInstall(url, archiveFileName, getInstallPath(), monitor);
- } catch (IOException e) {
- throw Activator.coreException(e);
- }
- sub.done();
-
- pkg.platformInstalled(this);
- }
-
- public IStatus uninstall(IProgressMonitor monitor) {
- try {
- ArduinoManager.recursiveDelete(getInstallPath());
- pkg.platformUninstalled(this);
- // TODO delete tools that aren't needed any more
- return Status.OK_STATUS;
- } catch (IOException e) {
- return new Status(IStatus.ERROR, Activator.getId(), Messages.ArduinoPlatform_1, e);
- }
- }
-
- @Override
- public String toString() {
- return name;
- }
-
- private String fixText(String text) {
- String fixed = text.replaceAll("&", "&amp;"); //$NON-NLS-1$ //$NON-NLS-2$
- fixed = fixed.replaceAll("<", "&gt;"); //$NON-NLS-1$ //$NON-NLS-2$
- fixed = fixed.replaceAll("<", "&lt;"); //$NON-NLS-1$ //$NON-NLS-2$
- return fixed;
- }
-
- public String toFormText() {
- StringBuilder text = new StringBuilder();
-
- text.append("<form>"); //$NON-NLS-1$
- text.append(String.format("<p><b>%s: %s</b></p>", "Package", getName())); //$NON-NLS-1$
- text.append(String.format("<p>%s: %s</p>", "Maintainer", fixText(getPackage().getMaintainer()))); //$NON-NLS-1$
-
- ArduinoHelp help = getPackage().getHelp();
- if (help != null && help.getOnline() != null) {
- text.append(String.format("<p><a href=\"%s\">%s</a></p>", help.getOnline(), "Online help")); //$NON-NLS-1$
- }
-
- text.append(String.format("<p>%s:</p>", "Supported boards")); //$NON-NLS-1$
- for (ArduinoBoard board : getBoards()) {
- text.append(String.format("<li>%s</li>", fixText(board.getName()))); //$NON-NLS-1$
- }
-
- text.append("</form>"); //$NON-NLS-1$
-
- return text.toString();
- }
-
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((name == null) ? 0 : name.hashCode());
- result = prime * result + ((pkg == null) ? 0 : pkg.hashCode());
- result = prime * result + ((version == null) ? 0 : version.hashCode());
- return result;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (getClass() != obj.getClass())
- return false;
- ArduinoPlatform other = (ArduinoPlatform) obj;
- if (name == null) {
- if (other.name != null)
- return false;
- } else if (!name.equals(other.name))
- return false;
- if (pkg == null) {
- if (other.pkg != null)
- return false;
- } else if (!pkg.equals(other.pkg))
- return false;
- if (version == null) {
- if (other.version != null)
- return false;
- } else if (!version.equals(other.version))
- return false;
- return true;
- }
-
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/board/ArduinoTool.java b/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/board/ArduinoTool.java
deleted file mode 100644
index 143c8b02f1b..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/board/ArduinoTool.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015, 2016 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.cdt.arduino.core.internal.board;
-
-import java.nio.file.Path;
-import java.util.List;
-import java.util.Properties;
-
-import org.eclipse.cdt.arduino.core.internal.Activator;
-import org.eclipse.cdt.arduino.core.internal.build.ArduinoBuildConfiguration;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-
-public class ArduinoTool {
-
- private String name;
- private String version;
- private List<ArduinoToolSystem> systems;
-
- private transient ArduinoPackage pkg;
-
- public ArduinoPackage getPackage() {
- return pkg;
- }
-
- public String getName() {
- return name;
- }
-
- public String getVersion() {
- return version.replace('+', '_');
- }
-
- public List<ArduinoToolSystem> getSystems() {
- return systems;
- }
-
- void init(ArduinoPackage pkg) {
- this.pkg = pkg;
- for (ArduinoToolSystem system : systems) {
- system.setOwner(this);
- }
- }
-
- public Path getInstallPath() {
- return getPackage().getInstallPath().resolve("tools").resolve(getName()).resolve(getVersion()); //$NON-NLS-1$
- }
-
- public boolean isInstalled() {
- return getInstallPath().toFile().exists();
- }
-
- public void install(IProgressMonitor monitor) throws CoreException {
- if (isInstalled()) {
- return;
- }
-
- for (ArduinoToolSystem system : systems) {
- if (system.isApplicable()) {
- system.install(monitor);
- return;
- }
- }
-
- // No valid system
- throw new CoreException(
- new Status(IStatus.ERROR, Activator.getId(), String.format("No valid system found for %s", name))); //$NON-NLS-1$
- }
-
- public Properties getToolProperties() {
- Properties properties = new Properties();
- properties.put("runtime.tools." + name + ".path", ArduinoBuildConfiguration.pathString(getInstallPath())); //$NON-NLS-1$//$NON-NLS-2$
- properties.put("runtime.tools." + name + '-' + version + ".path", //$NON-NLS-1$//$NON-NLS-2$
- ArduinoBuildConfiguration.pathString(getInstallPath())); //$NON-NLS-1$
- return properties;
- }
-
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/board/ArduinoToolSystem.java b/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/board/ArduinoToolSystem.java
deleted file mode 100644
index 0eb3e89f496..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/board/ArduinoToolSystem.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.cdt.arduino.core.internal.board;
-
-import java.io.IOException;
-
-import org.eclipse.cdt.arduino.core.internal.Activator;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.Platform;
-
-public class ArduinoToolSystem {
-
- private String host;
- private String archiveFileName;
- private String url;
- private String checksum;
- private String size;
-
- private transient ArduinoTool tool;
-
- public void setOwner(ArduinoTool tool) {
- this.tool = tool;
- }
-
- public String getHost() {
- return host;
- }
-
- public String getArchiveFileName() {
- return archiveFileName;
- }
-
- public String getUrl() {
- return url;
- }
-
- public String getChecksum() {
- return checksum;
- }
-
- public String getSize() {
- return size;
- }
-
- public boolean isApplicable() {
- switch (Platform.getOS()) {
- case Platform.OS_WIN32:
- return "i686-mingw32".equals(host); //$NON-NLS-1$
- case Platform.OS_MACOSX:
- switch (host) {
- case "i386-apple-darwin11": //$NON-NLS-1$
- case "i386-apple-darwin": //$NON-NLS-1$
- case "x86_64-apple-darwin": //$NON-NLS-1$
- return true;
- default:
- return false;
- }
- case Platform.OS_LINUX:
- switch (Platform.getOSArch()) {
- case Platform.ARCH_X86_64:
- switch (host) {
- case "x86_64-pc-linux-gnu": //$NON-NLS-1$
- case "x86_64-linux-gnu": //$NON-NLS-1$
- return true;
- default:
- return false;
- }
- case Platform.ARCH_X86:
- switch (host) {
- case "i686-pc-linux-gnu": //$NON-NLS-1$
- case "i686-linux-gnu": //$NON-NLS-1$
- return true;
- default:
- return false;
- }
- default:
- return false;
- }
- default:
- return false;
- }
- }
-
- public void install(IProgressMonitor monitor) throws CoreException {
- try {
- ArduinoManager.downloadAndInstall(url, archiveFileName, tool.getInstallPath(), monitor);
- } catch (IOException e) {
- throw Activator.coreException(e);
- }
- }
-
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/board/LibraryIndex.java b/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/board/LibraryIndex.java
deleted file mode 100644
index 9fdfa5ff596..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/board/LibraryIndex.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.cdt.arduino.core.internal.board;
-
-import java.util.List;
-
-public class LibraryIndex {
-
- private List<ArduinoLibrary> libraries;
-
- public List<ArduinoLibrary> getLibraries() {
- return libraries;
- }
-
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/board/PackageIndex.java b/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/board/PackageIndex.java
deleted file mode 100644
index 9a99640964e..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/board/PackageIndex.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.cdt.arduino.core.internal.board;
-
-import java.util.Collection;
-import java.util.List;
-
-public class PackageIndex {
-
- private List<ArduinoPackage> packages;
-
- public Collection<ArduinoPackage> getPackages() {
- return packages;
- }
-
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/board/ToolDependency.java b/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/board/ToolDependency.java
deleted file mode 100644
index 37f1b0b5d0c..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/board/ToolDependency.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.cdt.arduino.core.internal.board;
-
-import org.eclipse.cdt.arduino.core.internal.Activator;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-
-public class ToolDependency {
-
- private String packager;
- private String name;
- private String version;
-
- public String getPackager() {
- return packager;
- }
-
- public String getName() {
- return name;
- }
-
- public String getVersion() {
- return version.replace('+', '_');
- }
-
- public ArduinoTool getTool() throws CoreException {
- return Activator.getService(ArduinoManager.class).getTool(getPackager(), getName(), getVersion());
- }
-
- public void install(IProgressMonitor monitor) throws CoreException {
- ArduinoTool tool = getTool();
- if (tool == null) {
- throw new CoreException(new Status(IStatus.ERROR, Activator.getId(),
- String.format("Tool not found %s %s", getName(), getVersion())));
- }
- getTool().install(monitor);
- }
-
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/build/ArduinoBuildConfiguration.java b/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/build/ArduinoBuildConfiguration.java
deleted file mode 100644
index 62d0ccaa47e..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/build/ArduinoBuildConfiguration.java
+++ /dev/null
@@ -1,876 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.cdt.arduino.core.internal.build;
-
-import java.io.BufferedReader;
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.Reader;
-import java.io.StringWriter;
-import java.net.URISyntaxException;
-import java.net.URL;
-import java.nio.charset.StandardCharsets;
-import java.nio.file.Path;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Properties;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import java.util.stream.Collectors;
-
-import org.eclipse.cdt.arduino.core.internal.Activator;
-import org.eclipse.cdt.arduino.core.internal.ArduinoPreferences;
-import org.eclipse.cdt.arduino.core.internal.HierarchicalProperties;
-import org.eclipse.cdt.arduino.core.internal.board.ArduinoBoard;
-import org.eclipse.cdt.arduino.core.internal.board.ArduinoLibrary;
-import org.eclipse.cdt.arduino.core.internal.board.ArduinoManager;
-import org.eclipse.cdt.arduino.core.internal.board.ArduinoPackage;
-import org.eclipse.cdt.arduino.core.internal.board.ArduinoPlatform;
-import org.eclipse.cdt.arduino.core.internal.board.ArduinoTool;
-import org.eclipse.cdt.arduino.core.internal.board.ToolDependency;
-import org.eclipse.cdt.arduino.core.internal.remote.ArduinoRemoteConnection;
-import org.eclipse.cdt.core.CCorePlugin;
-import org.eclipse.cdt.core.ConsoleOutputStream;
-import org.eclipse.cdt.core.ErrorParserManager;
-import org.eclipse.cdt.core.IConsoleParser;
-import org.eclipse.cdt.core.build.CBuildConfiguration;
-import org.eclipse.cdt.core.build.IToolChain;
-import org.eclipse.cdt.core.model.ICModelMarker;
-import org.eclipse.cdt.core.model.ISourceRoot;
-import org.eclipse.cdt.core.parser.ExtendedScannerInfo;
-import org.eclipse.cdt.core.parser.IScannerInfo;
-import org.eclipse.cdt.core.resources.IConsole;
-import org.eclipse.core.resources.IBuildConfiguration;
-import org.eclipse.core.resources.IContainer;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IFolder;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IResourceProxy;
-import org.eclipse.core.resources.IResourceProxyVisitor;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.FileLocator;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.content.IContentType;
-import org.eclipse.remote.core.IRemoteConnectionChangeListener;
-import org.eclipse.remote.core.IRemoteServicesManager;
-import org.eclipse.remote.core.RemoteConnectionChangeEvent;
-
-import freemarker.cache.TemplateLoader;
-import freemarker.template.Configuration;
-import freemarker.template.Template;
-import freemarker.template.TemplateException;
-
-public class ArduinoBuildConfiguration extends CBuildConfiguration
- implements TemplateLoader, IRemoteConnectionChangeListener {
-
- private static final ArduinoManager manager = Activator.getService(ArduinoManager.class);
- private static final boolean isWindows = Platform.getOS().equals(Platform.OS_WIN32);
-
- private final ArduinoRemoteConnection target;
- private final String launchMode;
- private ArduinoBoard defaultBoard;
- private Properties boardProperties;
-
- // for Makefile generation
- private Configuration templateConfig;
-
- /**
- * Default configuration.
- *
- * @param config
- */
- ArduinoBuildConfiguration(IBuildConfiguration config, String name, String launchMode, ArduinoBoard defaultBoard,
- IToolChain toolChain) throws CoreException {
- super(config, ".default", toolChain); //$NON-NLS-1$
- this.target = null;
- this.launchMode = launchMode;
- this.defaultBoard = defaultBoard;
- }
-
- ArduinoBuildConfiguration(IBuildConfiguration config, String name, String launchMode,
- ArduinoRemoteConnection target, IToolChain toolChain) throws CoreException {
- super(config, name, toolChain);
- this.target = target;
- this.launchMode = launchMode;
- IRemoteServicesManager remoteManager = Activator.getService(IRemoteServicesManager.class);
- remoteManager.addRemoteConnectionChangeListener(this);
- }
-
- @Override
- public synchronized void connectionChanged(RemoteConnectionChangeEvent event) {
- if (event.getConnection().equals(target.getRemoteConnection())) {
- boardProperties = null;
- }
- }
-
- @SuppressWarnings("unchecked")
- @Override
- public <T> T getAdapter(Class<T> adapter) {
- if (adapter.equals(ArduinoBuildConfiguration.class)) {
- return (T) this;
- }
- return super.getAdapter(adapter);
- }
-
- @Override
- public String getLaunchMode() {
- return launchMode;
- }
-
- public ArduinoRemoteConnection getTarget() {
- return target;
- }
-
- public ArduinoBoard getBoard() throws CoreException {
- if (target != null) {
- return target.getBoard();
- } else {
- return defaultBoard;
- }
- }
-
- private synchronized Properties getBoardProperties() throws CoreException {
- if (boardProperties == null) {
- ArduinoBoard board = getBoard();
- ArduinoPlatform platform = board.getPlatform();
-
- // IDE generated properties
- boardProperties = new Properties();
- boardProperties.put("runtime.platform.path", platform.getInstallPath().toString()); //$NON-NLS-1$
- boardProperties.put("runtime.ide.version", "10608"); //$NON-NLS-1$ //$NON-NLS-2$
- boardProperties.put("software", "ARDUINO"); //$NON-NLS-1$ //$NON-NLS-2$
- boardProperties.put("build.arch", platform.getArchitecture().toUpperCase()); //$NON-NLS-1$
- boardProperties.put("build.path", "."); //$NON-NLS-1$ //$NON-NLS-2$
- boardProperties.put("build.core.path", //$NON-NLS-1$
- platform.getInstallPath().resolve("cores").resolve("{build.core}").toString()); //$NON-NLS-1$ //$NON-NLS-2$
- boardProperties.put("build.system.path", platform.getInstallPath().resolve("system").toString()); //$NON-NLS-1$ //$NON-NLS-2$
- boardProperties.put("build.variant.path", //$NON-NLS-1$
- platform.getInstallPath().resolve("variants").resolve("{build.variant}").toString()); //$NON-NLS-1$ //$NON-NLS-2$
-
- // Everyone seems to want to use arduino package tools
- ArduinoPackage arduinoPackage = manager.getPackage("arduino"); //$NON-NLS-1$
- if (arduinoPackage != null) {
- for (ArduinoTool tool : arduinoPackage.getLatestTools()) {
- boardProperties.put("runtime.tools." + tool.getName() + ".path", tool.getInstallPath().toString()); //$NON-NLS-1$ //$NON-NLS-2$
- }
- for (ArduinoTool tool : arduinoPackage.getTools()) {
- boardProperties.put("runtime.tools." + tool.getName() + '-' + tool.getVersion() + ".path", //$NON-NLS-1$ //$NON-NLS-2$
- tool.getInstallPath().toString());
- }
- }
-
- // Super Platform
- String core = board.getBoardProperties().getProperty("build.core"); //$NON-NLS-1$
- if (core.contains(":")) { //$NON-NLS-1$
- String[] segments = core.split(":"); //$NON-NLS-1$
- if (segments.length == 2) {
- ArduinoPlatform superPlatform = manager.getInstalledPlatform(segments[0],
- platform.getArchitecture());
- if (superPlatform != null) {
- boardProperties.putAll(superPlatform.getPlatformProperties().flatten());
- }
- }
- }
-
- // Platform
- boardProperties.putAll(platform.getPlatformProperties().flatten());
-
- // Tools
- for (ToolDependency toolDep : platform.getToolsDependencies()) {
- boardProperties.putAll(toolDep.getTool().getToolProperties());
- }
-
- // Board
- boardProperties.putAll(board.getBoardProperties());
-
- // Menus
- HierarchicalProperties menus = board.getMenus();
- if (menus != null && target != null) {
- for (Entry<String, HierarchicalProperties> menuEntry : menus.getChildren().entrySet()) {
- String key = menuEntry.getKey();
- String value = target.getMenuValue(key);
- if (value == null || value.isEmpty()) {
- Iterator<HierarchicalProperties> i = menuEntry.getValue().getChildren().values().iterator();
- if (i.hasNext()) {
- HierarchicalProperties first = i.next();
- value = first.getValue();
- }
- }
- if (value != null && !value.isEmpty()) {
- boardProperties.putAll(board.getMenuProperties(key, value));
- }
- }
- }
- }
-
- // always do this in case the project changes names
- boardProperties.put("build.project_name", getProject().getName()); //$NON-NLS-1$
- return boardProperties;
- }
-
- public Map<String, Object> getBuildModel() throws CoreException {
- IProject project = getProject();
- ArduinoBoard board = getBoard();
- ArduinoPlatform platform = board.getPlatform();
-
- Properties properties = new Properties();
- Map<String, Object> buildModel = new HashMap<>();
- buildModel.put("boardId", board.getId()); //$NON-NLS-1$
- properties.put("object_file", "$@"); //$NON-NLS-1$ //$NON-NLS-2$
- properties.put("source_file", "$<"); //$NON-NLS-1$ //$NON-NLS-2$
-
- // The list of source files in the project
- final Path projectPath = new File(project.getLocationURI()).toPath();
- final List<String> sourceFiles = new ArrayList<>();
- for (ISourceRoot sourceRoot : CCorePlugin.getDefault().getCoreModel().create(project).getSourceRoots()) {
- sourceRoot.getResource().accept(new IResourceProxyVisitor() {
- @Override
- public boolean visit(IResourceProxy proxy) throws CoreException {
- if (proxy.getType() == IResource.FILE) {
- if (isSource(proxy.getName())) {
- Path sourcePath = new File(proxy.requestResource().getLocationURI()).toPath();
- sourceFiles.add(pathString(projectPath.relativize(sourcePath)));
- }
- }
- return true;
- }
- }, 0);
- }
- buildModel.put("project_srcs", sourceFiles); //$NON-NLS-1$
-
- // The list of library sources
- List<String> librarySources = new ArrayList<>();
- for (ArduinoLibrary lib : manager.getLibraries(project)) {
- librarySources.addAll(lib.getSources());
- }
- buildModel.put("libraries_srcs", librarySources); //$NON-NLS-1$
- buildModel.put("libraries_path", pathString(ArduinoPreferences.getArduinoHome().resolve("libraries"))); //$NON-NLS-1$ //$NON-NLS-2$
-
- // the recipes
- properties.putAll(getBoardProperties());
- buildModel.put("build_path", properties.get("build.path")); //$NON-NLS-1$ //$NON-NLS-2$
- buildModel.put("project_name", project.getName()); //$NON-NLS-1$
-
- String includes = null;
- for (Path include : getIncludePath(platform, properties)) {
- if (includes == null) {
- includes = "-I"; //$NON-NLS-1$
- } else {
- includes += " -I"; //$NON-NLS-1$
- }
- includes += '"' + pathString(include) + '"';
- }
-
- for (ArduinoLibrary lib : manager.getLibraries(project)) {
- for (Path include : lib.getIncludePath()) {
- includes += " -I\"" + pathString(include) + '"'; //$NON-NLS-1$
- }
- }
-
- // Magic recipes for platform builds with platform includes
- properties.put("includes", includes); //$NON-NLS-1$
- buildModel.put("recipe_cpp_o_pattern_plat", resolveProperty("recipe.cpp.o.pattern", properties)); //$NON-NLS-1$ //$NON-NLS-2$
- buildModel.put("recipe_c_o_pattern_plat", resolveProperty("recipe.c.o.pattern", properties)); //$NON-NLS-1$ //$NON-NLS-2$
- buildModel.put("recipe_S_o_pattern_plat", resolveProperty("recipe.S.o.pattern", properties)); //$NON-NLS-1$ //$NON-NLS-2$
-
- ArduinoPlatform corePlatform = platform;
- String core = properties.getProperty("build.core"); //$NON-NLS-1$
- if (core.contains(":")) { //$NON-NLS-1$
- String[] segments = core.split(":"); //$NON-NLS-1$
- if (segments.length == 2) {
- corePlatform = manager.getInstalledPlatform(segments[0], platform.getArchitecture());
- core = segments[1];
- }
- }
- buildModel.put("platform_path", pathString(corePlatform.getInstallPath())); //$NON-NLS-1$
- Path corePath = corePlatform.getInstallPath().resolve("cores").resolve(core); //$NON-NLS-1$
- buildModel.put("platform_core_path", pathString(corePath)); //$NON-NLS-1$
- List<String> coreSources = new ArrayList<>();
- getSources(coreSources, corePath, true);
- buildModel.put("platform_core_srcs", coreSources); //$NON-NLS-1$
-
- List<String> variantSources = new ArrayList<>();
- String variant = properties.getProperty("build.variant"); //$NON-NLS-1$
- if (variant != null) {
- ArduinoPlatform variantPlatform = platform;
- if (variant.contains(":")) { //$NON-NLS-1$
- String[] segments = variant.split(":"); //$NON-NLS-1$
- if (segments.length == 2) {
- variantPlatform = manager.getInstalledPlatform(segments[0], platform.getArchitecture());
- variant = segments[1];
- }
- }
- Path variantPath = variantPlatform.getInstallPath().resolve("variants").resolve(variant); //$NON-NLS-1$
- buildModel.put("platform_variant_path", pathString(variantPath)); //$NON-NLS-1$
- getSources(variantSources, variantPath, true);
- }
- buildModel.put("platform_variant_srcs", variantSources); //$NON-NLS-1$
-
- properties.put("archive_file", "core.a"); //$NON-NLS-1$ //$NON-NLS-2$
- properties.put("archive_file_path", "{build.path}/{archive_file}"); //$NON-NLS-1$ //$NON-NLS-2$
- properties.put("object_files", "$(PROJECT_OBJS) $(LIBRARIES_OBJS)"); //$NON-NLS-1$ //$NON-NLS-2$
-
- buildModel.put("recipe_cpp_o_pattern", resolveProperty("recipe.cpp.o.pattern", properties)); //$NON-NLS-1$ //$NON-NLS-2$
- buildModel.put("recipe_c_o_pattern", resolveProperty("recipe.c.o.pattern", properties)); //$NON-NLS-1$ //$NON-NLS-2$
- buildModel.put("recipe_S_o_pattern", resolveProperty("recipe.S.o.pattern", properties)); //$NON-NLS-1$ //$NON-NLS-2$
- buildModel.put("recipe_ar_pattern", resolveProperty("recipe.ar.pattern", properties)); //$NON-NLS-1$ //$NON-NLS-2$
- buildModel.put("recipe_c_combine_pattern", resolveProperty("recipe.c.combine.pattern", properties)); //$NON-NLS-1$ //$NON-NLS-2$
- buildModel.put("recipe_objcopy_eep_pattern", resolveProperty("recipe.objcopy.eep.pattern", properties)); //$NON-NLS-1$ //$NON-NLS-2$
- buildModel.put("recipe_objcopy_hex_pattern", resolveProperty("recipe.objcopy.hex.pattern", properties)); //$NON-NLS-1$ //$NON-NLS-2$
- buildModel.put("recipe_objcopy_bin_pattern", resolveProperty("recipe.objcopy.bin.pattern", properties)); //$NON-NLS-1$ //$NON-NLS-2$
- buildModel.put("recipe_size_pattern", resolveProperty("recipe.size.pattern", properties)); //$NON-NLS-1$ //$NON-NLS-2$
-
- return buildModel;
- }
-
- private static void getSources(Collection<String> sources, Path dir, boolean recurse) {
- for (File file : dir.toFile().listFiles()) {
- if (file.isDirectory()) {
- if (recurse) {
- getSources(sources, file.toPath(), recurse);
- }
- } else {
- if (ArduinoBuildConfiguration.isSource(file.getName())) {
- sources.add(ArduinoBuildConfiguration.pathString(file.toPath()));
- }
- }
- }
- }
-
- public IFile generateMakeFile(IProgressMonitor monitor) throws CoreException {
- IFolder buildFolder = (IFolder) getBuildContainer();
- if (!buildFolder.exists()) {
- buildFolder.create(true, true, monitor);
- }
-
- IFile makefile = buildFolder.getFile("Makefile"); //$NON-NLS-1$
-
- Map<String, Object> buildModel = getBuildModel();
-
- // Generate the Makefile
- try (StringWriter writer = new StringWriter()) {
- if (templateConfig == null) {
- templateConfig = new Configuration(Configuration.VERSION_2_3_22);
- templateConfig.setTemplateLoader(this);
- }
-
- Template template = templateConfig.getTemplate("templates/Makefile"); //$NON-NLS-1$
- template.process(buildModel, writer);
- try (ByteArrayInputStream in = new ByteArrayInputStream(
- writer.getBuffer().toString().getBytes(StandardCharsets.UTF_8))) {
- createParent(makefile, monitor);
- if (makefile.exists()) {
- makefile.setContents(in, true, true, monitor);
- } else {
- makefile.create(in, true, monitor);
- }
- }
- } catch (IOException | TemplateException e) {
- throw new CoreException(new Status(IStatus.ERROR, Activator.getId(), "Error generating makefile", e));
- }
-
- return makefile;
- }
-
- protected static void createParent(IResource child, IProgressMonitor monitor) throws CoreException {
- if (child == null)
- return;
-
- IContainer container = child.getParent();
- if (container.exists()) {
- return;
- }
-
- IFolder parent = container.getAdapter(IFolder.class);
- createParent(parent, monitor);
- parent.create(true, true, monitor);
- }
-
- public static boolean isSource(String filename) {
- int i = filename.lastIndexOf('.');
- String ext = filename.substring(i + 1);
- switch (ext) {
- case "cpp": //$NON-NLS-1$
- case "c": //$NON-NLS-1$
- case "S": //$NON-NLS-1$
- return true;
- default:
- return false;
- }
- }
-
- private String resolvePropertyValue(String value, Properties dict) throws CoreException {
- String last;
- do {
- last = value;
- for (int i = value.indexOf('{'); i >= 0; i = value.indexOf('{', i)) {
- i++;
- if (value.charAt(i) == '{') {
- i++;
- continue;
- }
-
- int n = value.indexOf('}', i);
- if (n >= 0) {
- String p2 = value.substring(i, n);
- String r2 = dict.getProperty(p2);
- if (r2 != null) {
- value = value.replace('{' + p2 + '}', r2);
- } else {
- throw Activator.coreException(String.format("Undefined key %s", p2), null);
- }
- }
- i = n;
- }
- } while (!value.equals(last));
-
- return value.replace("}}", "}").replace("{{", "{"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
- }
-
- private String resolveProperty(String property, Properties dict) throws CoreException {
- String value = dict.getProperty(property);
- return value != null ? resolvePropertyValue(value, dict) : null;
- }
-
- public String getMakeCommand() {
- return isWindows ? ArduinoPreferences.getArduinoHome().resolve("make").toString() : "make"; //$NON-NLS-1$ //$NON-NLS-2$
- }
-
- public String[] getBuildCommand() throws CoreException {
- return new String[] { getMakeCommand() };
- }
-
- public String[] getCleanCommand() throws CoreException {
- return new String[] { getMakeCommand(), "clean" }; //$NON-NLS-1$
- }
-
- public String[] getSizeCommand() throws CoreException {
- // TODO this shouldn't be in the makefile
- // should be like the upload command
- return new String[] { getMakeCommand(), "size" }; //$NON-NLS-1$
- }
-
- public String getCodeSizeRegex() throws CoreException {
- return getBoard().getPlatform().getPlatformProperties().getProperty("recipe.size.regex"); //$NON-NLS-1$
- }
-
- public int getMaxCodeSize() throws CoreException {
- String sizeStr = getBoardProperties().getProperty("upload.maximum_size"); //$NON-NLS-1$
- return sizeStr != null ? Integer.parseInt(sizeStr) : -1;
- }
-
- public String getDataSizeRegex() throws CoreException {
- return getBoard().getPlatform().getPlatformProperties().getProperty("recipe.size.regex.data"); //$NON-NLS-1$
- }
-
- public int getMaxDataSize() throws CoreException {
- String sizeStr = getBoardProperties().getProperty("upload.maximum_data_size"); //$NON-NLS-1$
- return sizeStr != null ? Integer.parseInt(sizeStr) : -1;
- }
-
- public String[] getUploadCommand(String serialPort) throws CoreException {
- Properties properties = new Properties();
- properties.putAll(getBoardProperties());
-
- String toolName = properties.getProperty("upload.tool"); //$NON-NLS-1$
- ArduinoPlatform platform = getBoard().getPlatform();
- if (toolName.contains(":")) { //$NON-NLS-1$
- String[] segments = toolName.split(":"); //$NON-NLS-1$
- if (segments.length == 2) {
- platform = manager.getInstalledPlatform(segments[0], platform.getArchitecture());
- toolName = segments[1];
- }
- }
-
- ArduinoTool uploadTool = platform.getTool(toolName);
- if (uploadTool != null) {
- properties.putAll(uploadTool.getToolProperties());
- }
-
- properties.put("serial.port", serialPort); //$NON-NLS-1$
- // Little bit of weirdness needed for the bossac tool
- if (serialPort.startsWith("/dev/")) { //$NON-NLS-1$
- properties.put("serial.port.file", serialPort.substring(5)); //$NON-NLS-1$
- } else {
- properties.put("serial.port.file", serialPort); //$NON-NLS-1$
- }
- // to make up for some cheating in the platform.txt file
- properties.put("path", "{tools." + toolName + ".path}"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- properties.put("cmd.path", "{tools." + toolName + ".cmd.path}"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- properties.put("config.path", "{tools." + toolName + ".config.path}"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-
- // properties for the tool flattened
- HierarchicalProperties toolsProps = platform.getPlatformProperties().getChild("tools"); //$NON-NLS-1$
- if (toolsProps != null) {
- HierarchicalProperties toolProps = toolsProps.getChild(toolName);
- if (toolProps != null) {
- properties.putAll(toolProps.flatten());
- }
- }
-
- String command;
- if (properties.get("upload.protocol") != null) { //$NON-NLS-1$
- // TODO make this a preference
- properties.put("upload.verbose", properties.getProperty("upload.params.verbose", "")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- properties.put("upload.verify", properties.getProperty("upload.params.verify", "")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-
- command = resolveProperty("upload.pattern", properties); //$NON-NLS-1$
- } else {
- // use the bootloader
- String programmer = target.getProgrammer();
- if (programmer != null) {
- HierarchicalProperties programmers = getBoard().getPlatform().getProgrammers();
- if (programmers != null) {
- HierarchicalProperties programmerProps = programmers.getChild(programmer);
- if (programmerProps != null) {
- properties.putAll(programmerProps.flatten());
- }
- }
- }
-
- // TODO preference
- properties.put("program.verbose", properties.getProperty("program.params.verbose", "")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- properties.put("program.verify", properties.getProperty("program.params.verify", "")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-
- command = resolveProperty("program.pattern", properties); //$NON-NLS-1$
- }
-
- if (command == null) {
- throw Activator.coreException("Upload command not specified", null);
- }
- if (isWindows) {
- List<String> args = splitCommand(command);
- return args.toArray(new String[args.size()]);
- } else {
- return new String[] { "sh", "-c", command }; //$NON-NLS-1$ //$NON-NLS-2$
- }
- }
-
- private Collection<Path> getIncludePath(ArduinoPlatform platform, Properties properties) throws CoreException {
- ArduinoPlatform corePlatform = platform;
- String core = properties.getProperty("build.core"); //$NON-NLS-1$
- if (core.contains(":")) { //$NON-NLS-1$
- String[] segments = core.split(":"); //$NON-NLS-1$
- if (segments.length == 2) {
- corePlatform = manager.getInstalledPlatform(segments[0], platform.getArchitecture());
- core = segments[1];
- }
- }
-
- ArduinoPlatform variantPlatform = platform;
- String variant = properties.getProperty("build.variant"); //$NON-NLS-1$
- if (variant != null) {
- if (variant.contains(":")) { //$NON-NLS-1$
- String[] segments = variant.split(":"); //$NON-NLS-1$
- if (segments.length == 2) {
- variantPlatform = manager.getInstalledPlatform(segments[0], platform.getArchitecture());
- variant = segments[1];
- }
- }
- } else {
- return Arrays.asList(corePlatform.getInstallPath().resolve("cores").resolve(core)); //$NON-NLS-1$
- }
-
- return Arrays.asList(corePlatform.getInstallPath().resolve("cores").resolve(core), //$NON-NLS-1$
- variantPlatform.getInstallPath().resolve("variants").resolve(variant)); //$NON-NLS-1$
- }
-
- // Scanner Info Cache
- private String[] cachedIncludePath;
- private String cachedInfoCommand;
- private IScannerInfo cachedScannerInfo;
-
- @Override
- public IScannerInfo getScannerInformation(IResource resource) {
- try {
- IContentType contentType = CCorePlugin.getContentType(resource.getProject(), resource.getName());
- String recipe;
- if (contentType != null && (contentType.getId() == CCorePlugin.CONTENT_TYPE_CSOURCE
- || contentType.getId() == CCorePlugin.CONTENT_TYPE_CSOURCE)) {
- recipe = "recipe.c.o.pattern"; //$NON-NLS-1$
- } else {
- recipe = "recipe.cpp.o.pattern"; //$NON-NLS-1$
- }
-
- ArduinoPlatform platform = getBoard().getPlatform();
- Properties properties = new Properties();
- properties.putAll(getBoardProperties());
-
- // Overrides for scanner discovery
- properties.put("source_file", ""); //$NON-NLS-1$ //$NON-NLS-2$
- properties.put("object_file", "-"); //$NON-NLS-1$ //$NON-NLS-2$
- // the base scanner info does includes
- properties.put("includes", ""); //$NON-NLS-1$ //$NON-NLS-2$
- String commandString = resolveProperty(recipe, properties);
-
- List<Path> includePath = new ArrayList<>();
- includePath.addAll(getIncludePath(platform, properties));
- Collection<ArduinoLibrary> libs = manager.getLibraries(getProject());
- for (ArduinoLibrary lib : libs) {
- includePath.addAll(lib.getIncludePath());
- }
- String[] includes = null;
- try {
- includes = includePath.stream().map(path -> {
- try {
- return resolvePropertyValue(path.toString(), properties);
- } catch (CoreException e) {
- throw new RuntimeException(e);
- }
- }).collect(Collectors.toList()).toArray(new String[includePath.size()]);
- } catch (RuntimeException e) {
- if (e.getCause() != null && e.getCause() instanceof CoreException) {
- throw (CoreException) e.getCause();
- } else {
- throw e;
- }
- }
-
- // Use cache if we can
- if (cachedScannerInfo != null && cachedInfoCommand.equals(commandString)
- && cachedIncludePath.length == includes.length) {
- boolean matches = true;
- for (int i = 0; i < includes.length; ++i) {
- if (!includes[i].equals(cachedIncludePath[i])) {
- matches = false;
- break;
- }
- }
-
- if (matches) {
- return cachedScannerInfo;
- }
- }
-
- ExtendedScannerInfo baseInfo = new ExtendedScannerInfo(null, includes);
- List<String> command = splitCommand(commandString);
- IScannerInfo info = getToolChain().getScannerInfo(getBuildConfiguration(), command, baseInfo, resource,
- getBuildDirectoryURI());
-
- // cache the results
- cachedScannerInfo = info;
- cachedInfoCommand = commandString;
- cachedIncludePath = includes;
-
- return info;
- } catch (CoreException e) {
- Activator.log(e);
- return null;
- }
- }
-
- public static String pathString(Path path) {
- String str = path.toString();
- if (isWindows) {
- str = str.replaceAll("\\\\", "/"); //$NON-NLS-1$ //$NON-NLS-2$
- }
- return str;
- }
-
- private List<String> splitCommand(String command) {
- boolean inQuotes = false;
- boolean inDouble = false;
-
- List<String> args = new ArrayList<>();
- StringBuilder builder = new StringBuilder();
- for (int i = 0; i < command.length(); i++) {
- char c = command.charAt(i);
- switch (c) {
- case ' ':
- if (inQuotes || inDouble) {
- builder.append(c);
- } else if (builder.length() > 0) {
- args.add(builder.toString());
- builder = new StringBuilder();
- }
- break;
- case '\'':
- if (inDouble) {
- builder.append(c);
- } else {
- inQuotes = !inQuotes;
- }
- break;
- case '"':
- if (inQuotes) {
- builder.append(c);
- } else {
- inDouble = !inDouble;
- }
- break;
- default:
- builder.append(c);
- }
- }
-
- if (builder.length() > 0) {
- args.add(builder.toString());
- }
-
- return args;
- }
-
- @Override
- public IProject[] build(int kind, Map<String, String> args, IConsole console, IProgressMonitor monitor)
- throws CoreException {
- IProject project = getProject();
- try {
- project.deleteMarkers(ICModelMarker.C_MODEL_PROBLEM_MARKER, true, IResource.DEPTH_INFINITE);
-
- ConsoleOutputStream consoleOut = console.getOutputStream();
- consoleOut.write(String.format("\nBuilding %s\n", project.getName()));
-
- generateMakeFile(monitor);
-
- try (ErrorParserManager epm = new ErrorParserManager(project, getBuildDirectoryURI(), this,
- getToolChain().getErrorParserIds())) {
- epm.setOutputStream(console.getOutputStream());
- ProcessBuilder processBuilder = new ProcessBuilder().command(getBuildCommand())
- .directory(getBuildDirectory().toFile());
- setBuildEnvironment(processBuilder.environment());
- Process process = processBuilder.start();
- if (watchProcess(process, new IConsoleParser[] { epm }) == 0) {
- showSizes(console);
- }
- }
-
- getBuildContainer().refreshLocal(IResource.DEPTH_INFINITE, monitor);
- } catch (IOException e) {
- throw new CoreException(new Status(IStatus.ERROR, Activator.getId(), "Build error", e));
- }
-
- // TODO if there are references we want to watch, return them here
- return new IProject[] { project };
- }
-
- @Override
- public void clean(IConsole console, IProgressMonitor monitor) throws CoreException {
- try {
- IProject project = getProject();
- project.deleteMarkers(ICModelMarker.C_MODEL_PROBLEM_MARKER, true, IResource.DEPTH_INFINITE);
-
- ConsoleOutputStream consoleOut = console.getOutputStream();
- consoleOut.write(String.format("\nCleaning %s\n", project.getName()));
-
- ProcessBuilder processBuilder = new ProcessBuilder().command(getCleanCommand())
- .directory(getBuildDirectory().toFile());
- setBuildEnvironment(processBuilder.environment());
- Process process = processBuilder.start();
-
- watchProcess(process, console);
-
- getBuildContainer().refreshLocal(IResource.DEPTH_INFINITE, monitor);
- } catch (IOException e) {
- throw new CoreException(new Status(IStatus.ERROR, Activator.getId(), "Build error", e));
- }
- }
-
- private void showSizes(IConsole console) throws CoreException {
- try {
- int codeSize = -1;
- int dataSize = -1;
-
- String codeSizeRegex = getCodeSizeRegex();
- Pattern codeSizePattern = codeSizeRegex != null ? Pattern.compile(codeSizeRegex) : null;
- String dataSizeRegex = getDataSizeRegex();
- Pattern dataSizePattern = dataSizeRegex != null ? Pattern.compile(dataSizeRegex) : null;
-
- if (codeSizePattern == null && dataSizePattern == null) {
- return;
- }
-
- int maxCodeSize = getMaxCodeSize();
- int maxDataSize = getMaxDataSize();
-
- ProcessBuilder processBuilder = new ProcessBuilder().command(getSizeCommand())
- .directory(getBuildDirectory().toFile()).redirectErrorStream(true);
- setBuildEnvironment(processBuilder.environment());
- Process process = processBuilder.start();
- try (BufferedReader processOut = new BufferedReader(new InputStreamReader(process.getInputStream()))) {
- for (String line = processOut.readLine(); line != null; line = processOut.readLine()) {
- if (codeSizePattern != null) {
- Matcher matcher = codeSizePattern.matcher(line);
- if (matcher.matches()) {
- codeSize += Integer.parseInt(matcher.group(1));
- }
- }
- if (dataSizePattern != null) {
- Matcher matcher = dataSizePattern.matcher(line);
- if (matcher.matches()) {
- dataSize += Integer.parseInt(matcher.group(1));
- }
- }
- }
- }
-
- ConsoleOutputStream consoleOut = console.getOutputStream();
- consoleOut.write("Program store usage: " + codeSize);
- if (maxCodeSize > 0) {
- consoleOut.write(" of maximum " + maxCodeSize);
- }
- consoleOut.write(" bytes\n");
-
- if (maxDataSize >= 0) {
- consoleOut.write("Initial RAM usage: " + dataSize);
- if (maxCodeSize > 0) {
- consoleOut.write(" of maximum " + maxDataSize);
- }
- consoleOut.write(" bytes\n");
- }
- } catch (IOException e) {
- throw new CoreException(new Status(IStatus.ERROR, Activator.getId(), "Checking sizes", e));
- }
- }
-
- @Override
- public Object findTemplateSource(String name) throws IOException {
- return FileLocator.find(Activator.getPlugin().getBundle(), new org.eclipse.core.runtime.Path(name), null);
- }
-
- @Override
- public long getLastModified(Object source) {
- try {
- URL url = (URL) source;
- if (url.getProtocol().equals("file")) { //$NON-NLS-1$
- File file = new File(url.toURI());
- return file.lastModified();
- } else {
- return 0;
- }
- } catch (URISyntaxException e) {
- return 0;
- }
- }
-
- @Override
- public Reader getReader(Object source, String encoding) throws IOException {
- URL url = (URL) source;
- return new InputStreamReader(url.openStream(), encoding);
- }
-
- @Override
- public void closeTemplateSource(Object arg0) throws IOException {
- // Nothing
- }
-
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/build/ArduinoBuildConfigurationProvider.java b/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/build/ArduinoBuildConfigurationProvider.java
deleted file mode 100644
index f221040c4a7..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/build/ArduinoBuildConfigurationProvider.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.cdt.arduino.core.internal.build;
-
-import java.util.Collection;
-
-import org.eclipse.cdt.arduino.core.internal.Activator;
-import org.eclipse.cdt.arduino.core.internal.Messages;
-import org.eclipse.cdt.arduino.core.internal.board.ArduinoBoard;
-import org.eclipse.cdt.arduino.core.internal.board.ArduinoManager;
-import org.eclipse.cdt.arduino.core.internal.remote.ArduinoRemoteConnection;
-import org.eclipse.cdt.core.build.ICBuildConfiguration;
-import org.eclipse.cdt.core.build.ICBuildConfigurationManager;
-import org.eclipse.cdt.core.build.ICBuildConfigurationProvider;
-import org.eclipse.cdt.core.build.IToolChain;
-import org.eclipse.cdt.core.build.IToolChainManager;
-import org.eclipse.cdt.core.build.IToolChainProvider;
-import org.eclipse.core.resources.IBuildConfiguration;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.remote.core.IRemoteConnection;
-import org.eclipse.remote.core.IRemoteConnectionType;
-import org.eclipse.remote.core.IRemoteServicesManager;
-
-public class ArduinoBuildConfigurationProvider implements ICBuildConfigurationProvider {
-
- public static final String ID = "org.eclipse.cdt.arduino.core.provider"; //$NON-NLS-1$
-
- private static final ICBuildConfigurationManager configManager = Activator
- .getService(ICBuildConfigurationManager.class);
- private static final ArduinoManager arduinoManager = Activator.getService(ArduinoManager.class);
-
- @Override
- public String getId() {
- return ID;
- }
-
- @Override
- public ICBuildConfiguration getCBuildConfiguration(IBuildConfiguration config, String name) throws CoreException {
- if (config.getName().equals(IBuildConfiguration.DEFAULT_CONFIG_NAME)) {
- // Use the good ol' Uno as the default
- ArduinoBoard board = arduinoManager.getBoard("arduino", "avr", "uno"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- if (board == null) {
- Collection<ArduinoBoard> boards = arduinoManager.getInstalledBoards();
- if (!boards.isEmpty()) {
- board = boards.iterator().next();
- }
- }
- if (board != null) {
- IToolChain toolChain = createToolChain("default"); //$NON-NLS-1$
- return new ArduinoBuildConfiguration(config, name, "run", board, toolChain); //$NON-NLS-1$
- }
- } else {
- IRemoteServicesManager remoteManager = Activator.getService(IRemoteServicesManager.class);
- IRemoteConnectionType connectionType = remoteManager.getConnectionType(ArduinoRemoteConnection.TYPE_ID);
- IRemoteConnection connection = connectionType.getConnection(name);
- if (connection == null) {
- throw Activator.coreException(
- String.format(Messages.ArduinoBuildConfigurationProvider_UnknownConnection, name), null);
- }
-
- ArduinoRemoteConnection target = connection.getService(ArduinoRemoteConnection.class);
- if (target != null) {
- IToolChain toolChain = createToolChain(connection.getName());
- return new ArduinoBuildConfiguration(config, name, "run", target, toolChain); //$NON-NLS-1$
- }
- }
- return null;
- }
-
- public ArduinoBuildConfiguration getConfiguration(IProject project, ArduinoRemoteConnection target,
- String launchMode, IProgressMonitor monitor) throws CoreException {
- for (IBuildConfiguration config : project.getBuildConfigs()) {
- ICBuildConfiguration cconfig = config.getAdapter(ICBuildConfiguration.class);
- if (cconfig != null) {
- ArduinoBuildConfiguration arduinoConfig = cconfig.getAdapter(ArduinoBuildConfiguration.class);
- if (arduinoConfig != null && target.equals(arduinoConfig.getTarget())
- && arduinoConfig.getLaunchMode().equals(launchMode)) {
- return arduinoConfig;
- }
- }
- }
-
- // Make a new one
- String configName = target.getRemoteConnection().getName();
- IBuildConfiguration config = configManager.createBuildConfiguration(this, project, configName, monitor);
- IToolChain toolChain = createToolChain(configName);
- ArduinoBuildConfiguration arduinoConfig = new ArduinoBuildConfiguration(config, configName, "run", target, //$NON-NLS-1$
- toolChain);
- configManager.addBuildConfiguration(config, arduinoConfig);
- return arduinoConfig;
- }
-
- private IToolChain createToolChain(String id) throws CoreException {
- IToolChainManager toolChainManager = Activator.getService(IToolChainManager.class);
- IToolChain toolChain = toolChainManager.getToolChain(ArduinoToolChain.TYPE_ID, id);
- if (toolChain != null) {
- return toolChain;
- }
-
- IToolChainProvider provider = toolChainManager.getProvider(ArduinoToolChainProvider.ID);
- toolChain = new ArduinoToolChain(provider, id);
- toolChainManager.addToolChain(toolChain);
- return toolChain;
- }
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/build/ArduinoToolChain.java b/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/build/ArduinoToolChain.java
deleted file mode 100644
index 05bcfaad125..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/build/ArduinoToolChain.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package org.eclipse.cdt.arduino.core.internal.build;
-
-import java.nio.file.Path;
-
-import org.eclipse.cdt.build.gcc.core.GCCToolChain;
-import org.eclipse.cdt.core.build.IToolChain;
-import org.eclipse.cdt.core.build.IToolChainProvider;
-
-public class ArduinoToolChain extends GCCToolChain {
-
- public static final String TYPE_ID = "org.eclipse.cdt.arduino"; //$NON-NLS-1$
- private final String id;
-
- public ArduinoToolChain(IToolChainProvider provider, String id) {
- super(provider, (Path) null, "arduino", null); //$NON-NLS-1$
- this.id = id;
- }
-
- @Override
- public String getTypeId() {
- return TYPE_ID;
- }
-
- @Override
- public String getId() {
- return id;
- }
-
- @Override
- public String getName() {
- return id;
- }
-
- @Override
- public String getProperty(String key) {
- // TODO architecture if I need it
- if (key.equals(IToolChain.ATTR_OS)) {
- return "arduino"; //$NON-NLS-1$
- } else {
- return super.getProperty(key);
- }
- }
-
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/build/ArduinoToolChainProvider.java b/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/build/ArduinoToolChainProvider.java
deleted file mode 100644
index a8d51bce60c..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/build/ArduinoToolChainProvider.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package org.eclipse.cdt.arduino.core.internal.build;
-
-import org.eclipse.cdt.core.build.IToolChainProvider;
-
-public class ArduinoToolChainProvider implements IToolChainProvider {
-
- public static final String ID = "org.eclipse.cdt.arduino.core.toolChainProvider"; //$NON-NLS-1$
-
- @Override
- public String getId() {
- return ID;
- }
-
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/launch/ArduinoLaunch.java b/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/launch/ArduinoLaunch.java
deleted file mode 100644
index 57740ebcec6..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/launch/ArduinoLaunch.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.cdt.arduino.core.internal.launch;
-
-import java.io.IOException;
-
-import org.eclipse.cdt.arduino.core.internal.Activator;
-import org.eclipse.cdt.arduino.core.internal.remote.ArduinoRemoteConnection;
-import org.eclipse.cdt.serial.SerialPort;
-import org.eclipse.debug.core.DebugEvent;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.ILaunchConfiguration;
-import org.eclipse.debug.core.model.ISourceLocator;
-import org.eclipse.launchbar.core.target.ILaunchTarget;
-import org.eclipse.launchbar.core.target.launch.TargetedLaunch;
-import org.eclipse.remote.core.IRemoteConnection;
-
-public class ArduinoLaunch extends TargetedLaunch {
-
- private final ArduinoRemoteConnection remote;
- private boolean wasOpen;
-
- public ArduinoLaunch(ILaunchConfiguration launchConfiguration, String mode, ISourceLocator locator,
- ILaunchTarget target) {
- super(launchConfiguration, mode, target, locator);
- IRemoteConnection connection = target.getAdapter(IRemoteConnection.class);
- this.remote = connection.getService(ArduinoRemoteConnection.class);
-
- DebugPlugin.getDefault().addDebugEventListener(this);
- }
-
- public void start() {
- this.wasOpen = remote.getRemoteConnection().isOpen();
- if (wasOpen) {
- SerialPort port = SerialPort.get(remote.getPortName());
- if (port != null) {
- try {
- port.pause();
- } catch (IOException e) {
- Activator.log(e);
- }
- }
- }
- }
-
- @Override
- public void handleDebugEvents(DebugEvent[] events) {
- super.handleDebugEvents(events);
- if (isTerminated() && wasOpen) {
- SerialPort port = SerialPort.get(remote.getPortName());
- if (port != null) {
- try {
- port.resume();
- } catch (IOException e) {
- Activator.log(e);
- }
- }
- wasOpen = false;
- }
- }
-
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/launch/ArduinoLaunchConfigurationDelegate.java b/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/launch/ArduinoLaunchConfigurationDelegate.java
deleted file mode 100644
index b73a459cbda..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/launch/ArduinoLaunchConfigurationDelegate.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015, 2016 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.arduino.core.internal.launch;
-
-import java.io.IOException;
-
-import org.eclipse.cdt.arduino.core.internal.Activator;
-import org.eclipse.cdt.arduino.core.internal.Messages;
-import org.eclipse.cdt.arduino.core.internal.build.ArduinoBuildConfiguration;
-import org.eclipse.cdt.arduino.core.internal.build.ArduinoBuildConfigurationProvider;
-import org.eclipse.cdt.arduino.core.internal.remote.ArduinoRemoteConnection;
-import org.eclipse.cdt.core.build.ICBuildConfigurationManager;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.ILaunch;
-import org.eclipse.debug.core.ILaunchConfiguration;
-import org.eclipse.launchbar.core.target.ILaunchTarget;
-import org.eclipse.launchbar.core.target.launch.ITargetedLaunch;
-import org.eclipse.launchbar.core.target.launch.LaunchConfigurationTargetedDelegate;
-import org.eclipse.remote.core.IRemoteConnection;
-
-public class ArduinoLaunchConfigurationDelegate extends LaunchConfigurationTargetedDelegate {
-
- public static final String TYPE_ID = "org.eclipse.cdt.arduino.core.launchConfigurationType"; //$NON-NLS-1$
- public static final String CONNECTION_NAME = Activator.getId() + ".connectionName"; //$NON-NLS-1$
-
- private static final ICBuildConfigurationManager buildConfigManager = Activator
- .getService(ICBuildConfigurationManager.class);
-
- @Override
- public ITargetedLaunch getLaunch(ILaunchConfiguration configuration, String mode, ILaunchTarget target)
- throws CoreException {
- return new ArduinoLaunch(configuration, mode, null, target);
- }
-
- @Override
- public boolean buildForLaunch(ILaunchConfiguration configuration, String mode, ILaunchTarget target,
- IProgressMonitor monitor) throws CoreException {
- IRemoteConnection connection = target.getAdapter(IRemoteConnection.class);
- if (target != null) {
- ArduinoRemoteConnection arduinoTarget = connection.getService(ArduinoRemoteConnection.class);
-
- // 1. make sure proper build config is set active
- IProject project = configuration.getMappedResources()[0].getProject();
- ArduinoBuildConfiguration arduinoConfig = getArduinoConfiguration(project, mode, arduinoTarget, monitor);
- arduinoConfig.setActive(monitor);
- }
-
- // 2. Run the build
- return super.buildForLaunch(configuration, mode, target, monitor);
- }
-
- @Override
- protected IProject[] getBuildOrder(ILaunchConfiguration configuration, String mode) throws CoreException {
- // 1. Extract project from configuration
- IProject project = configuration.getMappedResources()[0].getProject();
- return new IProject[] { project };
- }
-
- @Override
- public void launch(final ILaunchConfiguration configuration, String mode, final ILaunch launch,
- IProgressMonitor monitor) throws CoreException {
- try {
- ILaunchTarget target = ((ITargetedLaunch) launch).getLaunchTarget();
- IRemoteConnection connection = target.getAdapter(IRemoteConnection.class);
- if (connection == null) {
- throw new CoreException(
- new Status(IStatus.ERROR, Activator.getId(), Messages.ArduinoLaunchConfigurationDelegate_2));
- }
- ArduinoRemoteConnection arduinoTarget = connection.getService(ArduinoRemoteConnection.class);
-
- // The project
- IProject project = (IProject) configuration.getMappedResources()[0];
-
- // The build config
- ArduinoBuildConfiguration arduinoConfig = getArduinoConfiguration(project, mode, arduinoTarget, monitor);
- String[] uploadCmd = arduinoConfig.getUploadCommand(arduinoTarget.getPortName());
-
- StringBuilder cmdStr = new StringBuilder(uploadCmd[0]);
- for (int i = 1; i < uploadCmd.length; ++i) {
- cmdStr.append(' ');
- cmdStr.append(uploadCmd[i]);
- }
- // Start the launch
- ((ArduinoLaunch) launch).start();
-
- // Run the process and capture the results in the console
- ProcessBuilder processBuilder = new ProcessBuilder(uploadCmd)
- .directory(arduinoConfig.getBuildDirectory().toFile());
- arduinoConfig.setBuildEnvironment(processBuilder.environment());
- Process process = processBuilder.start();
- DebugPlugin.newProcess(launch, process, cmdStr.toString());
- } catch (IOException e) {
- throw new CoreException(new Status(IStatus.ERROR, Activator.getId(), e.getLocalizedMessage(), e));
- }
-
- }
-
- public ArduinoBuildConfiguration getArduinoConfiguration(IProject project, String launchMode,
- ArduinoRemoteConnection arduinoTarget, IProgressMonitor monitor) throws CoreException {
- ArduinoBuildConfigurationProvider provider = (ArduinoBuildConfigurationProvider) buildConfigManager
- .getProvider(ArduinoBuildConfigurationProvider.ID);
- return provider.getConfiguration(project, arduinoTarget, launchMode, monitor);
- }
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/launch/ArduinoLaunchConfigurationProvider.java b/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/launch/ArduinoLaunchConfigurationProvider.java
deleted file mode 100644
index f7d0695b238..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/launch/ArduinoLaunchConfigurationProvider.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.arduino.core.internal.launch;
-
-import org.eclipse.cdt.arduino.core.internal.remote.ArduinoRemoteConnection;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.ILaunchConfigurationType;
-import org.eclipse.launchbar.core.ILaunchDescriptor;
-import org.eclipse.launchbar.core.ProjectLaunchConfigProvider;
-import org.eclipse.launchbar.core.target.ILaunchTarget;
-import org.eclipse.remote.core.IRemoteConnection;
-
-public class ArduinoLaunchConfigurationProvider extends ProjectLaunchConfigProvider {
-
- @Override
- public boolean supports(ILaunchDescriptor descriptor, ILaunchTarget target) throws CoreException {
- if (target != null) {
- IRemoteConnection connection = target.getAdapter(IRemoteConnection.class);
- if (connection != null) {
- return connection.getConnectionType().getId().equals(ArduinoRemoteConnection.TYPE_ID);
- }
- }
- return false;
- }
-
- @Override
- public ILaunchConfigurationType getLaunchConfigurationType(ILaunchDescriptor descriptor, ILaunchTarget target)
- throws CoreException {
- return DebugPlugin.getDefault().getLaunchManager()
- .getLaunchConfigurationType(ArduinoLaunchConfigurationDelegate.TYPE_ID);
- }
-
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/launch/ArduinoLaunchDescriptorType.java b/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/launch/ArduinoLaunchDescriptorType.java
deleted file mode 100644
index 806ed511590..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/launch/ArduinoLaunchDescriptorType.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.arduino.core.internal.launch;
-
-import org.eclipse.cdt.arduino.core.internal.ArduinoProjectNature;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.launchbar.core.ILaunchDescriptor;
-import org.eclipse.launchbar.core.ILaunchDescriptorType;
-import org.eclipse.launchbar.core.ProjectLaunchDescriptor;
-
-public class ArduinoLaunchDescriptorType implements ILaunchDescriptorType {
-
- @Override
- public ILaunchDescriptor getDescriptor(Object launchObject) throws CoreException {
- if (launchObject instanceof IProject && ArduinoProjectNature.hasNature((IProject) launchObject)) {
- return new ProjectLaunchDescriptor(this, (IProject) launchObject);
- }
-
- return null;
- }
-
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/messages.properties b/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/messages.properties
deleted file mode 100644
index 5ab8e55ed10..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/messages.properties
+++ /dev/null
@@ -1,22 +0,0 @@
-################################################################################
-# Copyright (c) 2015 QNX Software Systems and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-################################################################################
-ArduinoBoardManager_0=Fetching package index
-ArduinoBoardManager_1=Package index missing from response
-ArduinoBuildConfigurationProvider_UnknownConnection=Unknown connection: %s
-ArduinoLaunchConfigurationDelegate_1=No active Arduino remote connection.
-ArduinoLaunchConfigurationDelegate_0=Arduino Launch
-ArduinoLaunchConfigurationDelegate_2=Target has not been selected for Launch Configuration
-ArduinoManager_0=Install libraries
-ArduinoManager_1=Installing libraries
-ArduinoManager_2=Download failed, please try again.
-ArduinoPlatform_0=Download failed, please try again.
-ArduinoPlatform_1=Uninstall failed.
-ArduinoProjectGenerator_0=Write Arduino project file
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/remote/ArduinoLaunchTargetProvider.java b/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/remote/ArduinoLaunchTargetProvider.java
deleted file mode 100644
index 1ebcc7ca3dc..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/remote/ArduinoLaunchTargetProvider.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.cdt.arduino.core.internal.remote;
-
-import org.eclipse.launchbar.remote.core.RemoteLaunchTargetProvider;
-
-public class ArduinoLaunchTargetProvider extends RemoteLaunchTargetProvider {
-
- @Override
- protected String getTypeId() {
- return ArduinoRemoteConnection.TYPE_ID;
- }
-
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/remote/ArduinoRemoteConnection.java b/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/remote/ArduinoRemoteConnection.java
deleted file mode 100644
index 977e1488b93..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/remote/ArduinoRemoteConnection.java
+++ /dev/null
@@ -1,205 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.arduino.core.internal.remote;
-
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.cdt.arduino.core.internal.Activator;
-import org.eclipse.cdt.arduino.core.internal.board.ArduinoBoard;
-import org.eclipse.cdt.arduino.core.internal.board.ArduinoManager;
-import org.eclipse.cdt.arduino.core.internal.board.ArduinoPackage;
-import org.eclipse.cdt.arduino.core.internal.board.ArduinoPlatform;
-import org.eclipse.cdt.serial.SerialPort;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.remote.core.IRemoteCommandShellService;
-import org.eclipse.remote.core.IRemoteConnection;
-import org.eclipse.remote.core.IRemoteConnectionChangeListener;
-import org.eclipse.remote.core.IRemoteConnectionPropertyService;
-import org.eclipse.remote.core.IRemoteConnectionWorkingCopy;
-import org.eclipse.remote.core.IRemoteProcess;
-import org.eclipse.remote.core.RemoteConnectionChangeEvent;
-import org.eclipse.remote.serial.core.SerialPortCommandShell;
-
-public class ArduinoRemoteConnection
- implements IRemoteConnectionPropertyService, IRemoteCommandShellService, IRemoteConnectionChangeListener {
-
- public static final String TYPE_ID = "org.eclipse.cdt.arduino.core.connectionType"; //$NON-NLS-1$
-
- private static final String PORT_NAME = "arduinoPortName"; //$NON-NLS-1$
- private static final String PACKAGE_NAME = "arduinoPackageName"; //$NON-NLS-1$
- private static final String PLATFORM_NAME = "arduinoPlatformName"; //$NON-NLS-1$
- private static final String BOARD_NAME = "arduinoBoardName"; //$NON-NLS-1$
- private static final String MENU_QUALIFIER = "menu_"; //$NON-NLS-1$
- private static final String PROGRAMMER = "programmer"; //$NON-NLS-1$
-
- private final IRemoteConnection remoteConnection;
- private SerialPort serialPort;
- private SerialPortCommandShell commandShell;
- private ArduinoBoard board;
-
- private static final Map<IRemoteConnection, ArduinoRemoteConnection> connectionMap = new HashMap<>();
-
- public ArduinoRemoteConnection(IRemoteConnection remoteConnection) {
- this.remoteConnection = remoteConnection;
- remoteConnection.addConnectionChangeListener(this);
- }
-
- public static void setBoardId(IRemoteConnectionWorkingCopy workingCopy, ArduinoBoard board) {
- workingCopy.setAttribute(BOARD_NAME, board.getId());
-
- ArduinoPlatform platform = board.getPlatform();
- workingCopy.setAttribute(PLATFORM_NAME, platform.getArchitecture());
-
- ArduinoPackage pkg = platform.getPackage();
- workingCopy.setAttribute(PACKAGE_NAME, pkg.getName());
- }
-
- public static void setPortName(IRemoteConnectionWorkingCopy workingCopy, String portName) {
- workingCopy.setAttribute(PORT_NAME, portName);
- }
-
- public static void setMenuValue(IRemoteConnectionWorkingCopy workingCopy, String key, String value) {
- workingCopy.setAttribute(MENU_QUALIFIER + key, value);
- }
-
- public static void setProgrammer(IRemoteConnectionWorkingCopy workingCopy, String programmer) {
- workingCopy.setAttribute(PROGRAMMER, programmer);
- }
-
- public String getMenuValue(String key) {
- return remoteConnection.getAttribute(MENU_QUALIFIER + key);
- }
-
- public String getProgrammer() {
- return remoteConnection.getAttribute(PROGRAMMER);
- }
-
- @Override
- public void connectionChanged(RemoteConnectionChangeEvent event) {
- if (event.getType() == RemoteConnectionChangeEvent.CONNECTION_REMOVED) {
- synchronized (connectionMap) {
- connectionMap.remove(event.getConnection());
- }
- }
- }
-
- public static class Factory implements IRemoteConnection.Service.Factory {
- @SuppressWarnings("unchecked")
- @Override
- public <T extends IRemoteConnection.Service> T getService(IRemoteConnection remoteConnection,
- Class<T> service) {
- if (ArduinoRemoteConnection.class.equals(service)) {
- synchronized (connectionMap) {
- ArduinoRemoteConnection connection = connectionMap.get(remoteConnection);
- if (connection == null) {
- connection = new ArduinoRemoteConnection(remoteConnection);
- connectionMap.put(remoteConnection, connection);
- }
- return (T) connection;
- }
- } else if (IRemoteConnectionPropertyService.class.equals(service)
- || IRemoteCommandShellService.class.equals(service)) {
- return (T) remoteConnection.getService(ArduinoRemoteConnection.class);
- }
- return null;
- }
- }
-
- @Override
- public IRemoteConnection getRemoteConnection() {
- return remoteConnection;
- }
-
- @Override
- public String getProperty(String key) {
- if (IRemoteConnection.OS_NAME_PROPERTY.equals(key)) {
- return "arduino"; //$NON-NLS-1$
- } else if (IRemoteConnection.OS_ARCH_PROPERTY.equals(key)) {
- return "avr"; // TODO handle arm //$NON-NLS-1$
- } else {
- return null;
- }
- }
-
- public ArduinoBoard getBoard() throws CoreException {
- if (board == null) {
- String pkgName = remoteConnection.getAttribute(PACKAGE_NAME);
- String platName = remoteConnection.getAttribute(PLATFORM_NAME);
- String boardName = remoteConnection.getAttribute(BOARD_NAME);
- ArduinoManager manager = Activator.getService(ArduinoManager.class);
- board = manager.getBoard(pkgName, platName, boardName);
-
- if (board == null) {
- // Old style board attributes?
- ArduinoPackage pkg = manager.getPackage(pkgName);
- if (pkg != null) {
- for (ArduinoPlatform plat : pkg.getAvailablePlatforms()) {
- if (plat.getName().equals(platName)) {
- platName = plat.getArchitecture();
- for (ArduinoBoard b : plat.getBoards()) {
- if (b.getName().equals(boardName)) {
- board = b;
- return board;
- }
- }
- }
- }
- }
- }
- }
-
- return board;
- }
-
- public String getPortName() {
- return remoteConnection.getAttribute(PORT_NAME);
- }
-
- @Override
- public IRemoteProcess getCommandShell(int flags) throws IOException {
- if (serialPort != null && serialPort.isOpen()) {
- // can only have one open at a time
- return null;
- }
-
- serialPort = new SerialPort(getPortName());
- commandShell = new SerialPortCommandShell(remoteConnection, serialPort);
- return commandShell;
- }
-
- public void pause() {
- if (serialPort != null) {
- try {
- if (serialPort.isOpen())
- serialPort.pause();
- } catch (IOException e) {
- Activator.log(e);
- }
- }
- }
-
- public void resume() {
- if (serialPort != null) {
- try {
- if (serialPort.isOpen())
- serialPort.resume();
- } catch (IOException e) {
- Activator.log(e);
- }
- }
- }
-
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/templates/Makefile b/toolchains/arduino/org.eclipse.cdt.arduino.core/templates/Makefile
deleted file mode 100644
index b0acb0be33e..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core/templates/Makefile
+++ /dev/null
@@ -1,240 +0,0 @@
-ifeq ($(OS),Windows_NT)
-SHELL = cmd
-RMDIR = rmdir /s /q
-RM = del /q
-mymkdir = if not exist "$1" mkdir "$1"
-else
-RMDIR = rm -fr
-RM = rm -f
-mymkdir = mkdir -p $1
-endif
-
-PROJECT_OBJS = \
-<#list project_srcs as file>
-<#assign cpp = file?matches("(.*)\\.cpp")>
-<#if cpp>
- project/${cpp?groups[1]}.cpp.o \
-</#if>
-</#list>
-
-PLATFORM_CORE_OBJS = \
-<#list platform_core_srcs as file>
-<#assign cpp = file?matches("${platform_core_path}/(.*)\\.cpp")>
-<#if cpp>
- core/${cpp?groups[1]}.cpp.o \
-</#if>
-<#assign c = file?matches("${platform_core_path}/(.*)\\.c")>
-<#if c>
- core/${c?groups[1]}.c.o \
-</#if>
-<#assign S = file?matches("${platform_core_path}/(.*)\\.S")>
-<#if S>
- core/${S?groups[1]}.S.o \
-</#if>
-</#list>
-
-PLATFORM_VARIANT_OBJS = \
-<#list platform_variant_srcs as file>
-<#assign cpp = file?matches("${platform_variant_path}/(.*)\\.cpp")>
-<#if cpp>
- variant/${cpp?groups[1]}.cpp.o \
-</#if>
-<#assign c = file?matches("${platform_variant_path}/(.*)\\.c")>
-<#if c>
- variant/${c?groups[1]}.c.o \
-</#if>
-<#assign S = file?matches("${platform_variant_path}/(.*)\\.S")>
-<#if S>
- variant/${S?groups[1]}.S.o \
-</#if>
-</#list>
-
-LIBRARIES_OBJS = \
-<#list libraries_srcs as file>
-<#assign cpp = file?matches("${libraries_path}/(.*?)/(.*)\\.cpp")>
-<#if !cpp>
-<#assign cpp = file?matches("${platform_path}/libraries/(.*?)/(.*)\\.cpp")>
-</#if>
-<#if cpp>
- libraries/${cpp?groups[1]}/${cpp?groups[2]}.cpp.o \
-</#if>
-<#assign c = file?matches("${libraries_path}/(.*?)/(.*)\\.c")>
-<#if !c>
-<#assign c = file?matches("${platform_path}/libraries/(.*?)/(.*)\\.c")>
-</#if>
-<#if c>
- libraries/${c?groups[1]}/${c?groups[2]}.c.o \
-</#if>
-<#assign S = file?matches("${libraries_path}/(.*?)/(.*)\\.S")>
-<#if !S>
-<#assign S = file?matches("${platform_path}/libraries/(.*?)/(.*)\\.S")>
-</#if>
-<#if S>
- libraries/${S?groups[1]}/${S?groups[2]}.S.o \
-</#if>
-</#list>
-
-TARGETS = \
-<#if recipe_objcopy_hex_pattern??>
- ${project_name}.hex \
-</#if>
-<#if recipe_objcopy_eep_pattern??>
- ${project_name}.eep \
-</#if>
-<#if recipe_objcopy_bin_pattern??>
- ${project_name}.bin \
-</#if>
-
-all: $(TARGETS)
-
-<#if recipe_objcopy_hex_pattern??>
-${project_name}.hex: ${project_name}.elf
- ${recipe_objcopy_hex_pattern}
-
-</#if>
-<#if recipe_objcopy_eep_pattern??>
-${project_name}.eep: ${project_name}.elf
- ${recipe_objcopy_eep_pattern}
-
-</#if>
-<#if recipe_objcopy_bin_pattern??>
-${project_name}.bin: ${project_name}.elf
- ${recipe_objcopy_bin_pattern}
-
-</#if>
-${project_name}.elf: $(PROJECT_OBJS) $(LIBRARIES_OBJS) core.a
- ${recipe_c_combine_pattern}
-
-core.a: $(PLATFORM_CORE_OBJS) $(PLATFORM_VARIANT_OBJS)
-
-clean:
- -$(RMDIR) project core variant libraries
- -$(RM) *.hex *.eep *.bin *.elf *.a *.ar *.d
-
-size:
- ${recipe_size_pattern}
-
-<#list project_srcs as file>
-<#assign cpp = file?matches("(.*)\\.cpp")>
-<#if cpp>
-project/${cpp?groups[1]}.cpp.o: ../../${file} project/${cpp?groups[1]}.cpp.d
- @$(call mymkdir,$(dir $@))
- ${recipe_cpp_o_pattern}
-
-project/${cpp?groups[1]}.cpp.d: ;
-
--include project/${cpp?groups[1]}.cpp.d
-
-</#if>
-</#list>
-
-<#list platform_core_srcs as file>
-<#assign cpp = file?matches("${platform_core_path}/(.*)\\.cpp")>
-<#if cpp>
-core/${cpp?groups[1]}.cpp.o: ${file} core/${cpp?groups[1]}.cpp.d
- @$(call mymkdir,$(dir $@))
- ${recipe_cpp_o_pattern_plat}
- ${recipe_ar_pattern}
-
-core/${cpp?groups[1]}.cpp.d: ;
-
--include core/${cpp?groups[1]}.cpp.d
-
-</#if>
-<#assign c = file?matches("${platform_core_path}/(.*)\\.c")>
-<#if c>
-core/${c?groups[1]}.c.o: ${file} core/${c?groups[1]}.c.d
- @$(call mymkdir,$(dir $@))
- ${recipe_c_o_pattern_plat}
- ${recipe_ar_pattern}
-
-core/${c?groups[1]}.c.d: ;
-
--include core/${c?groups[1]}.c.d
-
-</#if>
-<#assign S = file?matches("${platform_core_path}/(.*)\\.S")>
-<#if S>
-core/${S?groups[1]}.S.o: ${file}
- @$(call mymkdir,$(dir $@))
- ${recipe_S_o_pattern_plat}
- ${recipe_ar_pattern}
-
-</#if>
-</#list>
-
-<#list platform_variant_srcs as file>
-<#assign cpp = file?matches("${platform_variant_path}/(.*)\\.cpp")>
-<#if cpp>
-variant/${cpp?groups[1]}.cpp.o: ${file} variant/${cpp?groups[1]}.cpp.d
- @$(call mymkdir,$(dir $@))
- ${recipe_cpp_o_pattern_plat}
- ${recipe_ar_pattern}
-
-variant/${cpp?groups[1]}.cpp.d: ;
-
--include variant/${cpp?groups[1]}.cpp.d
-
-</#if>
-<#assign c = file?matches("${platform_variant_path}/(.*)\\.c")>
-<#if c>
-variant/${c?groups[1]}.c.o: ${file} variant/${c?groups[1]}.c.d
- @$(call mymkdir,$(dir $@))
- ${recipe_c_o_pattern_plat}
- ${recipe_ar_pattern}
-
-variant/${c?groups[1]}.c.d: ;
-
--include variant/${c?groups[1]}.c.d
-
-</#if>
-<#assign S = file?matches("${platform_variant_path}/(.*)\\.S")>
-<#if S>
-variant/${S?groups[1]}.S.o: ${file}
- @$(call mymkdir,$(dir $@))
- ${recipe_S_o_pattern_plat}
- ${recipe_ar_pattern}
-
-</#if>
-</#list>
-
-<#list libraries_srcs as file>
-<#assign cpp = file?matches("${libraries_path}/(.*?)/(.*)\\.cpp")>
-<#if !cpp>
-<#assign cpp = file?matches("${platform_path}/libraries/(.*?)/(.*)\\.cpp")>
-</#if>
-<#if cpp>
-libraries/${cpp?groups[1]}/${cpp?groups[2]}.cpp.o: ${file} libraries/${cpp?groups[1]}/${cpp?groups[2]}.cpp.d
- @$(call mymkdir,$(dir $@))
- ${recipe_cpp_o_pattern}
-
-libraries/${cpp?groups[1]}/${cpp?groups[2]}.cpp.d: ;
-
--include libraries/${cpp?groups[1]}/${cpp?groups[2]}.cpp.d
-
-</#if>
-<#assign c = file?matches("${libraries_path}/(.*?)/(.*)\\.c")>
-<#if !c>
-<#assign c = file?matches("${platform_path}/libraries/(.*?)/(.*)\\.c")>
-</#if>
-<#if c>
-libraries/${c?groups[1]}/${c?groups[2]}.c.o: ${file} libraries/${c?groups[1]}/${c?groups[2]}.c.d
- @$(call mymkdir,$(dir $@))
- ${recipe_c_o_pattern}
-
-libraries/${c?groups[1]}/${c?groups[2]}.c.d: ;
-
--include libraries/${c?groups[1]}/${c?groups[2]}.c.d
-
-</#if>
-<#assign S = file?matches("${libraries_path}/(.*?)/(.*)\\.S")>
-<#if !S>
-<#assign S = file?matches("${platform_path}/libraries/(.*?)/(.*)\\.S")>
-</#if>
-<#if S>
-libraries/${S?groups[1]}/${S?groups[2]}.S.o: ${file}
- @$(call mymkdir,$(dir $@))
- ${recipe_S_o_pattern}
-
-</#if>
-</#list> \ No newline at end of file
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/templates/cppsketch/arduino.cpp b/toolchains/arduino/org.eclipse.cdt.arduino.core/templates/cppsketch/arduino.cpp
deleted file mode 100644
index ddfe4da79b6..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core/templates/cppsketch/arduino.cpp
+++ /dev/null
@@ -1,9 +0,0 @@
-#include <Arduino.h>
-
-void setup() {
-
-}
-
-void loop() {
-
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/templates/cppsketch/manifest.xml b/toolchains/arduino/org.eclipse.cdt.arduino.core/templates/cppsketch/manifest.xml
deleted file mode 100644
index 2b8b3f07fca..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.core/templates/cppsketch/manifest.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<templateManifest>
- <file open="true"
- src="/templates/cppsketch/arduino.cpp"
- dest="/${projectName}/${projectName}.cpp"/>
-</templateManifest> \ No newline at end of file
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.ui/.classpath b/toolchains/arduino/org.eclipse.cdt.arduino.ui/.classpath
deleted file mode 100644
index 43b986286a9..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.ui/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
- <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="output" path="target/classes"/>
-</classpath>
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.ui/.project b/toolchains/arduino/org.eclipse.cdt.arduino.ui/.project
deleted file mode 100644
index 2687b71dfa0..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.ui/.project
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.cdt.arduino.ui</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.ManifestBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.SchemaBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.ds.core.builder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.pde.PluginNature</nature>
- <nature>org.eclipse.jdt.core.javanature</nature>
- </natures>
-</projectDescription>
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.ui/.settings/org.eclipse.jdt.core.prefs b/toolchains/arduino/org.eclipse.cdt.arduino.ui/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 2b6ecff8a01..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.ui/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,464 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
-org.eclipse.jdt.core.codeComplete.argumentPrefixes=
-org.eclipse.jdt.core.codeComplete.argumentSuffixes=
-org.eclipse.jdt.core.codeComplete.fieldPrefixes=
-org.eclipse.jdt.core.codeComplete.fieldSuffixes=
-org.eclipse.jdt.core.codeComplete.localPrefixes=
-org.eclipse.jdt.core.codeComplete.localSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
-org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
-org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
-org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
-org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
-org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
-org.eclipse.jdt.core.compiler.problem.APILeak=warning
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
-org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
-org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
-org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
-org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
-org.eclipse.jdt.core.compiler.problem.nullReference=error
-org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
-org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
-org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
-org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
-org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
-org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
-org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
-org.eclipse.jdt.core.formatter.align_with_spaces=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
-org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
-org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
-org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
-org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=0
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
-org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
-org.eclipse.jdt.core.formatter.comment.format_block_comments=false
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
-org.eclipse.jdt.core.formatter.comment.format_line_comments=false
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
-org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
-org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
-org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.join_lines_in_comments=true
-org.eclipse.jdt.core.formatter.join_wrapped_lines=true
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=120
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_on_off_tags=true
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
-org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
-org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.ui/.settings/org.eclipse.jdt.ui.prefs b/toolchains/arduino/org.eclipse.cdt.arduino.ui/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index e44576346c4..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.ui/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,133 +0,0 @@
-cleanup.add_default_serial_version_id=true
-cleanup.add_generated_serial_version_id=false
-cleanup.add_missing_annotations=true
-cleanup.add_missing_deprecated_annotations=true
-cleanup.add_missing_methods=false
-cleanup.add_missing_nls_tags=false
-cleanup.add_missing_override_annotations=true
-cleanup.add_missing_override_annotations_interface_methods=true
-cleanup.add_serial_version_id=false
-cleanup.always_use_blocks=true
-cleanup.always_use_parentheses_in_expressions=false
-cleanup.always_use_this_for_non_static_field_access=false
-cleanup.always_use_this_for_non_static_method_access=false
-cleanup.convert_functional_interfaces=false
-cleanup.convert_to_enhanced_for_loop=false
-cleanup.correct_indentation=false
-cleanup.format_source_code=true
-cleanup.format_source_code_changes_only=false
-cleanup.insert_inferred_type_arguments=false
-cleanup.make_local_variable_final=true
-cleanup.make_parameters_final=false
-cleanup.make_private_fields_final=true
-cleanup.make_type_abstract_if_missing_method=false
-cleanup.make_variable_declarations_final=false
-cleanup.never_use_blocks=false
-cleanup.never_use_parentheses_in_expressions=true
-cleanup.organize_imports=true
-cleanup.qualify_static_field_accesses_with_declaring_class=false
-cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-cleanup.qualify_static_member_accesses_with_declaring_class=false
-cleanup.qualify_static_method_accesses_with_declaring_class=false
-cleanup.remove_private_constructors=true
-cleanup.remove_redundant_modifiers=false
-cleanup.remove_redundant_semicolons=true
-cleanup.remove_redundant_type_arguments=true
-cleanup.remove_trailing_whitespaces=true
-cleanup.remove_trailing_whitespaces_all=true
-cleanup.remove_trailing_whitespaces_ignore_empty=false
-cleanup.remove_unnecessary_casts=true
-cleanup.remove_unnecessary_nls_tags=false
-cleanup.remove_unused_imports=true
-cleanup.remove_unused_local_variables=false
-cleanup.remove_unused_private_fields=true
-cleanup.remove_unused_private_members=false
-cleanup.remove_unused_private_methods=true
-cleanup.remove_unused_private_types=true
-cleanup.sort_members=false
-cleanup.sort_members_all=false
-cleanup.use_anonymous_class_creation=false
-cleanup.use_blocks=false
-cleanup.use_blocks_only_for_return_and_throw=false
-cleanup.use_lambda=true
-cleanup.use_parentheses_in_expressions=false
-cleanup.use_this_for_non_static_field_access=false
-cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-cleanup.use_this_for_non_static_method_access=false
-cleanup.use_this_for_non_static_method_access_only_if_necessary=true
-cleanup_profile=_CDT
-cleanup_settings_version=2
-eclipse.preferences.version=1
-editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=_CDT
-formatter_settings_version=14
-internal.default.compliance=user
-org.eclipse.jdt.ui.exception.name=e
-org.eclipse.jdt.ui.gettersetter.use.is=true
-org.eclipse.jdt.ui.ignorelowercasenames=true
-org.eclipse.jdt.ui.importorder=java;javax;org;com;
-org.eclipse.jdt.ui.keywordthis=false
-org.eclipse.jdt.ui.ondemandthreshold=1000
-org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.staticondemandthreshold=1000
-org.eclipse.jdt.ui.text.custom_code_templates=
-sp_cleanup.add_default_serial_version_id=true
-sp_cleanup.add_generated_serial_version_id=false
-sp_cleanup.add_missing_annotations=true
-sp_cleanup.add_missing_deprecated_annotations=true
-sp_cleanup.add_missing_methods=false
-sp_cleanup.add_missing_nls_tags=false
-sp_cleanup.add_missing_override_annotations=true
-sp_cleanup.add_missing_override_annotations_interface_methods=true
-sp_cleanup.add_serial_version_id=false
-sp_cleanup.always_use_blocks=true
-sp_cleanup.always_use_parentheses_in_expressions=false
-sp_cleanup.always_use_this_for_non_static_field_access=false
-sp_cleanup.always_use_this_for_non_static_method_access=false
-sp_cleanup.convert_functional_interfaces=false
-sp_cleanup.convert_to_enhanced_for_loop=false
-sp_cleanup.correct_indentation=false
-sp_cleanup.format_source_code=true
-sp_cleanup.format_source_code_changes_only=false
-sp_cleanup.insert_inferred_type_arguments=false
-sp_cleanup.make_local_variable_final=true
-sp_cleanup.make_parameters_final=false
-sp_cleanup.make_private_fields_final=true
-sp_cleanup.make_type_abstract_if_missing_method=false
-sp_cleanup.make_variable_declarations_final=false
-sp_cleanup.never_use_blocks=false
-sp_cleanup.never_use_parentheses_in_expressions=true
-sp_cleanup.on_save_use_additional_actions=true
-sp_cleanup.organize_imports=true
-sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
-sp_cleanup.remove_private_constructors=true
-sp_cleanup.remove_redundant_modifiers=false
-sp_cleanup.remove_redundant_semicolons=true
-sp_cleanup.remove_redundant_type_arguments=true
-sp_cleanup.remove_trailing_whitespaces=true
-sp_cleanup.remove_trailing_whitespaces_all=true
-sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
-sp_cleanup.remove_unnecessary_casts=true
-sp_cleanup.remove_unnecessary_nls_tags=false
-sp_cleanup.remove_unused_imports=true
-sp_cleanup.remove_unused_local_variables=false
-sp_cleanup.remove_unused_private_fields=true
-sp_cleanup.remove_unused_private_members=false
-sp_cleanup.remove_unused_private_methods=true
-sp_cleanup.remove_unused_private_types=true
-sp_cleanup.sort_members=false
-sp_cleanup.sort_members_all=false
-sp_cleanup.use_anonymous_class_creation=false
-sp_cleanup.use_blocks=false
-sp_cleanup.use_blocks_only_for_return_and_throw=false
-sp_cleanup.use_lambda=true
-sp_cleanup.use_parentheses_in_expressions=false
-sp_cleanup.use_this_for_non_static_field_access=false
-sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-sp_cleanup.use_this_for_non_static_method_access=false
-sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.ui/META-INF/MANIFEST.MF b/toolchains/arduino/org.eclipse.cdt.arduino.ui/META-INF/MANIFEST.MF
deleted file mode 100644
index 0b8d8958dfe..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.ui/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,29 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-SymbolicName: org.eclipse.cdt.arduino.ui;singleton:=true
-Bundle-Version: 2.1.400.qualifier
-Bundle-Activator: org.eclipse.cdt.arduino.ui.internal.Activator
-Require-Bundle: org.eclipse.core.runtime,
- org.eclipse.core.expressions,
- org.eclipse.jface.text,
- org.eclipse.ui,
- org.eclipse.ui.ide,
- org.eclipse.ui.forms,
- org.eclipse.debug.ui,
- org.eclipse.launchbar.core,
- org.eclipse.cdt.arduino.core,
- org.eclipse.remote.core;bundle-version="2.0.0",
- org.eclipse.remote.ui;bundle-version="2.0.0",
- org.eclipse.cdt.native.serial;bundle-version="1.0.0",
- org.eclipse.tools.templates.ui;bundle-version="1.0.0",
- org.eclipse.launchbar.remote.ui;bundle-version="1.0.0",
- org.eclipse.tm.terminal.connector.cdtserial;bundle-version="4.3.0",
- org.eclipse.tm.terminal.view.ui;bundle-version="4.2.100",
- org.eclipse.tm.terminal.view.core;bundle-version="4.2.0",
- org.eclipse.tm.terminal.control;bundle-version="4.2.0"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Bundle-ActivationPolicy: lazy
-Bundle-Vendor: %providerName
-Bundle-Localization: plugin
-Automatic-Module-Name: org.eclipse.cdt.arduino.ui
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.ui/about.html b/toolchains/arduino/org.eclipse.cdt.arduino.ui/about.html
deleted file mode 100644
index 164f781a8fd..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.ui/about.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
-</head>
-<body lang="EN-US">
- <h2>About This Content</h2>
-
- <p>November 30, 2017</p>
- <h3>License</h3>
-
- <p>
- The Eclipse Foundation makes available all content in this plug-in
- (&quot;Content&quot;). Unless otherwise indicated below, the Content
- is provided to you under the terms and conditions of the Eclipse
- Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
- For purposes of the EPL, &quot;Program&quot; will mean the Content.
- </p>
-
- <p>
- If you did not receive this Content directly from the Eclipse
- Foundation, the Content is being redistributed by another party
- (&quot;Redistributor&quot;) and different terms and conditions may
- apply to your use of any object code in the Content. Check the
- Redistributor's license that was provided with the Content. If no such
- license exists, contact the Redistributor. Unless otherwise indicated
- below, the terms and conditions of the EPL still apply to any source
- code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
- </p>
-
-</body>
-</html> \ No newline at end of file
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.ui/build.properties b/toolchains/arduino/org.eclipse.cdt.arduino.ui/build.properties
deleted file mode 100644
index 1bf1db9f601..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.ui/build.properties
+++ /dev/null
@@ -1,8 +0,0 @@
-bin.includes = META-INF/,\
- .,\
- plugin.xml,\
- icons/,\
- about.html,\
- plugin.properties
-source.. = src/
-src.includes = about.html
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.ui/icons/arduino.png b/toolchains/arduino/org.eclipse.cdt.arduino.ui/icons/arduino.png
deleted file mode 100644
index 2c45ddc2c1a..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.ui/icons/arduino.png
+++ /dev/null
Binary files differ
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.ui/icons/arduino48.png b/toolchains/arduino/org.eclipse.cdt.arduino.ui/icons/arduino48.png
deleted file mode 100644
index 1fa5d248086..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.ui/icons/arduino48.png
+++ /dev/null
Binary files differ
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.ui/icons/cprojects.gif b/toolchains/arduino/org.eclipse.cdt.arduino.ui/icons/cprojects.gif
deleted file mode 100644
index fcc08ad89c6..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.ui/icons/cprojects.gif
+++ /dev/null
Binary files differ
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.ui/icons/list-add.gif b/toolchains/arduino/org.eclipse.cdt.arduino.ui/icons/list-add.gif
deleted file mode 100644
index 5ee82b45c22..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.ui/icons/list-add.gif
+++ /dev/null
Binary files differ
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.ui/icons/list-delete.gif b/toolchains/arduino/org.eclipse.cdt.arduino.ui/icons/list-delete.gif
deleted file mode 100644
index 5fd7e2d44e3..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.ui/icons/list-delete.gif
+++ /dev/null
Binary files differ
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.ui/icons/newcc_app.gif b/toolchains/arduino/org.eclipse.cdt.arduino.ui/icons/newcc_app.gif
deleted file mode 100644
index 4b39411daf5..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.ui/icons/newcc_app.gif
+++ /dev/null
Binary files differ
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.ui/plugin.properties b/toolchains/arduino/org.eclipse.cdt.arduino.ui/plugin.properties
deleted file mode 100644
index 9a391e73fb5..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.ui/plugin.properties
+++ /dev/null
@@ -1,20 +0,0 @@
-###############################################################################
-# Copyright (c) 2015 QNX Software Systems and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# QNX Software Systems - initial API and implementation
-###############################################################################
-pluginName=Arduino C++ UI
-providerName=Eclipse CDT
-preferencePage.name=Arduino
-
-arduinoDownloadsManager=Arduino Downloads Manager
-arduinoTerminalConnector=Arduino Serial Monitor
-arduinoTerminalLauncher=Arduino Serial Monitor
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.ui/plugin.xml b/toolchains/arduino/org.eclipse.cdt.arduino.ui/plugin.xml
deleted file mode 100644
index 373b91006bc..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.ui/plugin.xml
+++ /dev/null
@@ -1,187 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.4"?>
-<plugin>
- <extension
- point="org.eclipse.debug.ui.launchConfigurationTypeImages">
- <launchConfigurationTypeImage
- configTypeID="org.eclipse.cdt.arduino.core.launchConfigurationType"
- icon="icons/arduino.png"
- id="org.eclipse.cdt.arduino.ui.launchConfigurationTypeImage1">
- </launchConfigurationTypeImage>
- </extension>
- <extension
- point="org.eclipse.ui.newWizards">
- <wizard
- canFinishEarly="false"
- category="org.eclipse.cdt.arduino.ui.newCategory"
- class="org.eclipse.cdt.arduino.ui.internal.remote.NewArduinoTargetWizard"
- hasPages="true"
- icon="icons/arduino.png"
- id="org.eclipse.cdt.arduino.ui.newTargetWizard"
- name="Android Target"
- project="false">
- </wizard>
- <wizard
- category="org.eclipse.cdt.ui.newCWizards"
- class="org.eclipse.cdt.arduino.ui.internal.project.NewArduinoProjectWizard"
- icon="icons/newcc_app.gif"
- id="org.eclipse.cdt.arduino.ui.newProjectWizard"
- name="Arduino Project"
- project="true">
- <description>
- Create a new Arduino Project
- </description>
- </wizard>
- </extension>
- <extension
- point="org.eclipse.ui.propertyPages">
- <page
- class="org.eclipse.cdt.arduino.ui.internal.remote.ArduinoTargetPropertyPage"
- id="org.eclipse.cdt.arduino.ui.targetPropertyPage"
- name="Arduino"
- selectionFilter="single">
- <enabledWhen>
- <adapt type="org.eclipse.remote.core.IRemoteConnection">
- <test
- forcePluginActivation="false"
- property="org.eclipse.remote.core.isConnectionType"
- value="org.eclipse.cdt.arduino.core.connectionType">
- </test>
- </adapt>
- </enabledWhen>
- </page>
- <page
- class="org.eclipse.cdt.arduino.ui.internal.project.LibrariesPropertyPage"
- id="org.eclipse.cdt.arduino.ui.librariesPropertyPage"
- name="Libraries">
- <enabledWhen>
- <and>
- <instanceof
- value="org.eclipse.core.resources.IProject">
- </instanceof>
- <test
- property="org.eclipse.core.resources.projectNature"
- value="org.eclipse.cdt.arduino.core.arduinoNature">
- </test>
- </and>
- </enabledWhen>
- </page>
- </extension>
- <extension
- point="org.eclipse.launchbar.ui.launchBarUIContributions">
- <descriptorUI
- descriptorTypeId="org.eclipse.cdt.arduino.core.descriptorType"
- labelProvider="org.eclipse.cdt.arduino.ui.internal.launch.ArduinoDescriptorLabelProvider">
- </descriptorUI>
- </extension>
- <extension
- point="org.eclipse.remote.core.remoteServices">
- <connectionTypeService
- connectionTypeId="org.eclipse.cdt.arduino.core.connectionType"
- factory="org.eclipse.cdt.arduino.ui.internal.remote.ArduinoRemoteServicesUI$Factory"
- service="org.eclipse.remote.ui.IRemoteUIConnectionService">
- </connectionTypeService>
- </extension>
- <extension
- point="org.eclipse.ui.preferencePages">
- <page
- category="org.eclipse.cdt.ui.preferences.CPluginPreferencePage"
- class="org.eclipse.cdt.arduino.ui.internal.preferences.ArduinoPreferencePage"
- id="org.eclipse.cdt.arduino.preference.page"
- name="%preferencePage.name">
- </page>
- </extension>
- <extension
- point="org.eclipse.ui.perspectiveExtensions">
- <perspectiveExtension
- targetID="org.eclipse.cdt.ui.CPerspective">
- <view
- id="org.eclipse.remote.ui.view.connections"
- minimized="false"
- relationship="stack"
- relative="org.eclipse.ui.navigator.ProjectExplorer">
- </view>
- </perspectiveExtension>
- </extension>
- <extension
- point="org.eclipse.core.expressions.propertyTesters">
- <propertyTester
- class="org.eclipse.cdt.arduino.ui.internal.project.ArduinoPropertyTester"
- id="temporaryRemoteTester"
- namespace="org.eclipse.cdt.arduino.ui"
- properties="isArduinoRemote"
- type="org.eclipse.remote.core.IRemoteConnection">
- </propertyTester>
- </extension>
- <extension
- point="org.eclipse.debug.ui.launchConfigurationTabGroups">
- <launchConfigurationTabGroup
- class="org.eclipse.cdt.arduino.ui.internal.launch.ArduinoLaunchConfigurationTabGroup"
- id="org.eclipse.cdt.arduino.ui.launchConfigurationTabGroup"
- type="org.eclipse.cdt.arduino.core.launchConfigurationType">
- </launchConfigurationTabGroup>
- </extension>
- <extension
- point="org.eclipse.launchbar.ui.launchTargetTypeUI">
- <launchTargetTypeUI
- id="org.eclipse.cdt.arduino.core.connectionType"
- labelProvider="org.eclipse.launchbar.remote.ui.RemoteLaunchTargetLabelProvider">
- </launchTargetTypeUI>
- <wizard
- class="org.eclipse.cdt.arduino.ui.internal.remote.NewArduinoTargetWizard"
- icon="icons/arduino.png"
- id="org.eclipse.cdt.arduino.ui.launchTargetWizard"
- name="Arduino">
- </wizard>
- </extension>
- <extension
- point="org.eclipse.tools.templates.ui.templates">
- <tag
- id="org.eclipse.cdt.arduino.ui.tag"
- label="Arduino">
- </tag>
- <template
- icon="icons/arduino48.png"
- id="org.eclipse.cdt.arduino.ui.template.sketch"
- label="Arduino C++ Sketch"
- wizard="org.eclipse.cdt.arduino.ui.internal.project.NewArduinoCPPSketchWizard">
- <description>
- A single C++ file with empty setup() and loop() functions.
- </description>
- <tagReference
- id="org.eclipse.cdt.arduino.ui.tag">
- </tagReference>
- <tagReference
- id="org.eclipse.cdt.ui.cdtTag">
- </tagReference>
- </template>
- </extension>
- <extension
- point="org.eclipse.ui.menus">
- <menuContribution
- allPopups="false"
- locationURI="menu:help">
- <command
- commandId="org.eclipse.cdt.arduino.ui.openManager"
- icon="icons/arduino.png"
- label="%arduinoDownloadsManager"
- style="push">
- </command>
- </menuContribution>
- </extension>
- <extension
- point="org.eclipse.ui.commands">
- <command
- defaultHandler="org.eclipse.cdt.arduino.ui.internal.downloads.OpenDownloadsManager"
- id="org.eclipse.cdt.arduino.ui.openManager"
- name="%arduinoDownloadsManager">
- </command>
- </extension>
- <extension point="org.eclipse.tm.terminal.view.ui.launcherDelegates">
- <delegate
- class="org.eclipse.cdt.arduino.ui.internal.terminal.ArduinoTerminalLauncher"
- id="org.eclipse.cdt.arduino.terminalLauncher"
- label="%arduinoTerminalLauncher">
- </delegate>
- </extension>
-</plugin>
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/Activator.java b/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/Activator.java
deleted file mode 100644
index 805e136a6a2..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/Activator.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015, 2016 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.cdt.arduino.ui.internal;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.resource.ImageRegistry;
-import org.eclipse.jface.resource.ResourceLocator;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.ServiceReference;
-
-/**
- * The activator class controls the plug-in life cycle
- */
-public class Activator extends AbstractUIPlugin {
-
- // The plug-in ID
- public static final String PLUGIN_ID = "org.eclipse.cdt.arduino.ui"; //$NON-NLS-1$
-
- public static final String IMG_ARDUINO = PLUGIN_ID + ".arduino"; //$NON-NLS-1$
- public static final String IMG_CONNECTION_TYPE = PLUGIN_ID + ".connectionType"; //$NON-NLS-1$
- public static final String IMG_ADD = PLUGIN_ID + ".add"; //$NON-NLS-1$
- public static final String IMG_DELETE = PLUGIN_ID + ".delete"; //$NON-NLS-1$
-
- // The shared instance
- private static Activator plugin;
-
- @Override
- public void start(BundleContext context) throws Exception {
- super.start(context);
- plugin = this;
- }
-
- @Override
- public void stop(BundleContext context) throws Exception {
- plugin = null;
- super.stop(context);
- }
-
- @Override
- protected ImageRegistry createImageRegistry() {
- ImageRegistry registry = super.createImageRegistry();
- registry.put(IMG_ARDUINO, ResourceLocator.imageDescriptorFromBundle(PLUGIN_ID, "icons/cprojects.gif").get()); //$NON-NLS-1$
- registry.put(IMG_CONNECTION_TYPE,
- ResourceLocator.imageDescriptorFromBundle(PLUGIN_ID, "icons/arduino.png").get()); //$NON-NLS-1$
- registry.put(IMG_ADD, ResourceLocator.imageDescriptorFromBundle(PLUGIN_ID, "icons/list-add.gif").get()); //$NON-NLS-1$
- registry.put(IMG_DELETE, ResourceLocator.imageDescriptorFromBundle(PLUGIN_ID, "icons/list-delete.gif").get()); //$NON-NLS-1$
- return registry;
- }
-
- /**
- * Returns the shared instance
- *
- * @return the shared instance
- */
- public static Activator getDefault() {
- return plugin;
- }
-
- public static BundleContext getContext() {
- return plugin.getBundle().getBundleContext();
- }
-
- public static String getId() {
- return plugin.getBundle().getSymbolicName();
- }
-
- public static void log(Exception e) {
- if (e instanceof CoreException) {
- plugin.getLog().log(((CoreException) e).getStatus());
- } else {
- plugin.getLog().log(new Status(IStatus.ERROR, PLUGIN_ID, e.getLocalizedMessage(), e));
- }
- }
-
- public static <T> T getService(Class<T> service) {
- BundleContext context = plugin.getBundle().getBundleContext();
- ServiceReference<T> ref = context.getServiceReference(service);
- return ref != null ? context.getService(ref) : null;
- }
-
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/FormTextHoverManager.java b/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/FormTextHoverManager.java
deleted file mode 100644
index 2380dfa5fe7..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/FormTextHoverManager.java
+++ /dev/null
@@ -1,365 +0,0 @@
-/**
- * Copyright (c) 2012,2016 Eclipse contributors and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- */
-package org.eclipse.cdt.arduino.ui.internal;
-
-import java.net.MalformedURLException;
-import java.net.URL;
-
-import org.eclipse.jface.internal.text.InformationControlReplacer;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.text.AbstractHoverInformationControlManager;
-import org.eclipse.jface.text.AbstractInformationControl;
-import org.eclipse.jface.text.AbstractReusableInformationControlCreator;
-import org.eclipse.jface.text.IInformationControl;
-import org.eclipse.jface.text.IInformationControlCreator;
-import org.eclipse.jface.text.IInformationControlExtension3;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.ScrolledComposite;
-import org.eclipse.swt.events.ControlEvent;
-import org.eclipse.swt.events.ControlListener;
-import org.eclipse.swt.events.FocusEvent;
-import org.eclipse.swt.events.FocusListener;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.KeyListener;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.events.MouseListener;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.FontData;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.forms.events.HyperlinkAdapter;
-import org.eclipse.ui.forms.events.HyperlinkEvent;
-import org.eclipse.ui.forms.widgets.FormText;
-
-/**
- * A utility class for showing rich JDT-style HTML content in tool tip hovers. This class is final
- * to avoid long term API commitments. If you feel the need to specialize it, please open a bugzilla
- * to explain what your use case and requirements.
- */
-@SuppressWarnings("restriction")
-public abstract class FormTextHoverManager extends AbstractHoverInformationControlManager {
-
- private static class FormTextInformationControl extends AbstractInformationControl {
- private ScrolledComposite comp;
- private FormText formText;
- private String text;
-
- public FormTextInformationControl(Shell parentShell, boolean inFocus) {
- super(parentShell, true);
-
- // Need to do our own status bar if not in focus
- if (!inFocus) {
- Shell shell = getShell();
- Composite statusComposite = new Composite(shell, SWT.NONE);
- GridData gridData = new GridData(SWT.FILL, SWT.BOTTOM, true, false);
- statusComposite.setLayoutData(gridData);
- GridLayout statusLayout = new GridLayout(1, false);
- statusLayout.marginHeight = 0;
- statusLayout.marginWidth = 0;
- statusLayout.verticalSpacing = 1;
- statusComposite.setLayout(statusLayout);
-
- Label separator = new Label(statusComposite, SWT.SEPARATOR | SWT.HORIZONTAL);
- separator.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
- Label statusLabel = new Label(statusComposite, SWT.RIGHT);
- statusLabel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
- statusLabel.setText("Press F2 for focus");
-
- FontData[] fontDatas = JFaceResources.getDialogFont().getFontData();
- for (int i = 0; i < fontDatas.length; i++) {
- fontDatas[i].setHeight(fontDatas[i].getHeight() * 9 / 10);
- }
- Font statusLabelFont = new Font(statusLabel.getDisplay(), fontDatas);
- statusLabel.setFont(statusLabelFont);
- }
-
- create();
- }
-
- @Override
- public boolean hasContents() {
- return text != null;
- }
-
- @Override
- public void setInformation(String information) {
- this.text = information;
- if (text != null) {
- formText.setText(text, true, true);
- comp.setMinSize(formText.computeSize(SWT.DEFAULT, SWT.DEFAULT));
- }
- }
-
- @Override
- protected void createContent(Composite parent) {
- comp = new ScrolledComposite(parent, SWT.V_SCROLL | SWT.H_SCROLL);
- comp.setExpandHorizontal(true);
- comp.setExpandVertical(true);
-
- formText = new FormText(comp, SWT.NONE);
- comp.setContent(formText);
- formText.addHyperlinkListener(new HyperlinkAdapter() {
- @Override
- public void linkActivated(HyperlinkEvent event) {
- try {
- PlatformUI.getWorkbench().getBrowserSupport().getExternalBrowser()
- .openURL(new URL((String) event.getHref()));
- } catch (MalformedURLException | PartInitException e) {
- Activator.log(e);
- }
- }
- });
- }
-
- @Override
- public IInformationControlCreator getInformationPresenterControlCreator() {
- return parent -> new FormTextInformationControl(parent, true);
- }
-
- public Control getControl() {
- return getShell();
- }
- }
-
- protected IInformationControlCloser closer;
-
- public FormTextHoverManager() {
- super(new AbstractReusableInformationControlCreator() {
- @Override
- protected IInformationControl doCreateInformationControl(Shell parent) {
- return new FormTextInformationControl(parent, false);
- }
- });
-
- getInternalAccessor().setInformationControlReplacer(
- new InformationControlReplacer(new AbstractReusableInformationControlCreator() {
- @Override
- protected IInformationControl doCreateInformationControl(Shell parent) {
- return new FormTextInformationControl(parent, true);
- }
- }) {
- {
- this.setCloser(new Closer());
- }
-
- class Closer implements IInformationControlCloser, ControlListener, MouseListener, KeyListener,
- FocusListener, Listener {
- protected boolean isActive;
- protected Display display;
- protected Control subjectControl;
- protected IInformationControl informationControl;
-
- @Override
- public void setSubjectControl(Control control) {
- subjectControl = control;
- }
-
- @Override
- public void setInformationControl(IInformationControl control) {
- this.informationControl = control;
- }
-
- @Override
- public void start(Rectangle informationArea) {
- if (!isActive) {
- isActive = true;
-
- if (subjectControl != null && !subjectControl.isDisposed()) {
- subjectControl.addControlListener(this);
- subjectControl.addMouseListener(this);
- subjectControl.addKeyListener(this);
- }
-
- if (informationControl != null) {
- informationControl.addFocusListener(this);
- }
-
- display = subjectControl.getDisplay();
- if (!display.isDisposed()) {
- display.addFilter(SWT.MouseMove, this);
- display.addFilter(SWT.FocusOut, this);
- }
- }
- }
-
- @Override
- public void stop() {
- if (isActive) {
- isActive = false;
-
- if (subjectControl != null && !subjectControl.isDisposed()) {
- subjectControl.removeControlListener(this);
- subjectControl.removeMouseListener(this);
- subjectControl.removeKeyListener(this);
- }
-
- if (informationControl != null) {
- informationControl.removeFocusListener(this);
- }
-
- if (display != null && !display.isDisposed()) {
- display.removeFilter(SWT.MouseMove, this);
- display.removeFilter(SWT.FocusOut, this);
- }
- display = null;
- }
- }
-
- @Override
- public void controlResized(ControlEvent event) {
- hideInformationControl();
- }
-
- @Override
- public void controlMoved(ControlEvent event) {
- hideInformationControl();
- }
-
- @Override
- public void mouseDown(MouseEvent event) {
- hideInformationControl();
- }
-
- @Override
- public void mouseUp(MouseEvent event) {
- // Ignore.
- }
-
- @Override
- public void mouseDoubleClick(MouseEvent event) {
- hideInformationControl();
- }
-
- @Override
- public void keyPressed(KeyEvent event) {
- hideInformationControl();
- }
-
- @Override
- public void keyReleased(KeyEvent event) {
- // Ignore.
- }
-
- @Override
- public void focusGained(FocusEvent event) {
- // Ignore.
- }
-
- @Override
- public void focusLost(FocusEvent event) {
- if (display != null && !display.isDisposed()) {
- display.asyncExec(() -> hideInformationControl());
- }
- }
-
- @Override
- public void handleEvent(Event event) {
- if (event.type == SWT.MouseMove) {
- if (event.widget instanceof Control && event.widget.isDisposed()) {
- if (informationControl != null && !informationControl.isFocusControl()
- && informationControl instanceof IInformationControlExtension3) {
- Rectangle controlBounds = ((IInformationControlExtension3) informationControl)
- .getBounds();
- if (controlBounds != null) {
- Point mouseLocation = event.display.map((Control) event.widget, null,
- event.x, event.y);
- if (!controlBounds.contains(mouseLocation)) {
- hideInformationControl();
- }
- }
- } else {
- if (display != null && !display.isDisposed()) {
- display.removeFilter(SWT.MouseMove, this);
- }
- }
- }
- } else if (event.type == SWT.FocusOut) {
- if (informationControl != null && !informationControl.isFocusControl()) {
- hideInformationControl();
- }
- }
- }
- }
- });
- }
-
- @Override
- protected void setCloser(IInformationControlCloser closer) {
- this.closer = closer;
- super.setCloser(closer);
- }
-
- @Override
- protected boolean canClearDataOnHide() {
- return false;
- }
-
- protected KeyListener keyListener = new KeyListener() {
- @Override
- public void keyReleased(KeyEvent event) {
- if (event.keyCode == SWT.F2) {
- IInformationControl informationControl = getInformationControl();
- if (informationControl instanceof FormTextInformationControl) {
- Control myControl = ((FormTextInformationControl) informationControl).getControl();
- Event mouseEvent = new Event();
- mouseEvent.display = myControl.getDisplay();
- mouseEvent.widget = myControl;
- mouseEvent.type = SWT.MouseUp;
- ((Listener) closer).handleEvent(mouseEvent);
- event.doit = false;
- }
- }
- }
-
- @Override
- public void keyPressed(KeyEvent event) {
- // Ignore.
- }
- };
-
- @Override
- public void install(Control subjectControl) {
- Control oldSubjectControl = getSubjectControl();
-
- if (oldSubjectControl != null && !oldSubjectControl.isDisposed()) {
- oldSubjectControl.removeKeyListener(keyListener);
- }
-
- if (subjectControl != null) {
- subjectControl.addKeyListener(keyListener);
- }
-
- super.install(subjectControl);
- getInternalAccessor().getInformationControlReplacer().install(subjectControl);
- }
-
- @Override
- public void dispose() {
- Control subjectControl = getSubjectControl();
- if (subjectControl != null && !subjectControl.isDisposed()) {
- subjectControl.removeKeyListener(keyListener);
- }
- super.dispose();
- }
-
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/LibraryTree.java b/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/LibraryTree.java
deleted file mode 100644
index fa679a47b14..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/LibraryTree.java
+++ /dev/null
@@ -1,303 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.cdt.arduino.ui.internal;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.cdt.arduino.core.internal.board.ArduinoLibrary;
-import org.eclipse.cdt.arduino.core.internal.board.ArduinoManager;
-import org.eclipse.cdt.arduino.core.internal.board.ArduinoPlatform;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jface.viewers.BaseLabelProvider;
-import org.eclipse.jface.viewers.CheckStateChangedEvent;
-import org.eclipse.jface.viewers.CheckboxTreeViewer;
-import org.eclipse.jface.viewers.ICheckStateListener;
-import org.eclipse.jface.viewers.ICheckStateProvider;
-import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Tree;
-import org.eclipse.swt.widgets.TreeColumn;
-import org.eclipse.ui.dialogs.FilteredTree;
-import org.eclipse.ui.dialogs.PatternFilter;
-
-public class LibraryTree extends FilteredTree {
-
- private static final String PLATFORMS = "Platform Libraries";
- private static final String UNCATEGORIZED = "Others";
-
- private boolean includePlatforms;
- private Set<ArduinoLibrary> checkedLibs = new HashSet<>();
- private ArduinoManager manager = Activator.getService(ArduinoManager.class);
-
- private static class LibPatternFilter extends PatternFilter {
- @Override
- protected boolean isLeafMatch(Viewer viewer, Object element) {
- if (element instanceof String) {
- return wordMatches((String) element);
- } else if (element instanceof ArduinoLibrary) {
- ArduinoLibrary lib = (ArduinoLibrary) element;
- return wordMatches(lib.getName()) || wordMatches(lib.getSentence()) || wordMatches(lib.getParagraph());
- } else {
- return false;
- }
- }
- }
-
- public class ContentProvider implements ITreeContentProvider {
- public Map<String, List<ArduinoLibrary>> categories = new HashMap<>();
- public List<ArduinoLibrary> uncategorized;
-
- @Override
- public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
- if (newInput == null) {
- return;
- }
-
- @SuppressWarnings("unchecked")
- Collection<ArduinoLibrary> libraries = (Collection<ArduinoLibrary>) newInput;
- for (ArduinoLibrary library : libraries) {
- if (library.getPlatform() == null) {
- String category = library.getCategory();
- if (category != null) {
- List<ArduinoLibrary> libs = categories.get(category);
- if (libs == null) {
- libs = new ArrayList<>();
- categories.put(category, libs);
- }
- libs.add(library);
- } else {
- if (uncategorized == null) {
- uncategorized = new ArrayList<>();
- }
- uncategorized.add(library);
- }
- }
- }
- }
-
- @Override
- public Object[] getElements(Object inputElement) {
- List<String> elements = new ArrayList<>(categories.keySet());
- Collections.sort(elements, (o1, o2) -> o1.compareToIgnoreCase(o2));
- if (uncategorized != null) {
- elements.add(UNCATEGORIZED);
- }
- if (includePlatforms) {
- elements.add(PLATFORMS);
- }
- return elements.toArray();
- }
-
- @Override
- public Object[] getChildren(Object parentElement) {
- if (parentElement instanceof String) {
- if (parentElement == UNCATEGORIZED) {
- return uncategorized.toArray();
- } else if (parentElement == PLATFORMS) {
- List<ArduinoPlatform> platforms = new ArrayList<>();
- try {
- for (ArduinoPlatform platform : manager.getInstalledPlatforms()) {
- if (!platform.getLibraries().isEmpty()) {
- platforms.add(platform);
- }
- }
- } catch (CoreException e) {
- Activator.log(e);
- }
- Collections.sort(platforms, (o1, o2) -> o1.getName().compareToIgnoreCase(o2.getName()));
- return platforms.toArray();
- } else {
- String category = (String) parentElement;
- List<ArduinoLibrary> libs = categories.get(category);
- Collections.sort(libs, (o1, o2) -> o1.getName().compareToIgnoreCase(o2.getName()));
- return libs.toArray();
- }
- } else if (parentElement instanceof ArduinoPlatform) {
- try {
- List<ArduinoLibrary> libs = new ArrayList<>(((ArduinoPlatform) parentElement).getLibraries());
- Collections.sort(libs, (o1, o2) -> o1.getName().compareToIgnoreCase(o2.getName()));
- return libs.toArray();
- } catch (CoreException e) {
- Activator.log(e);
- }
- }
- return null;
- }
-
- @Override
- public Object getParent(Object element) {
- if (element instanceof ArduinoLibrary) {
- ArduinoLibrary library = (ArduinoLibrary) element;
- ArduinoPlatform platform = library.getPlatform();
- if (platform != null) {
- return platform;
- }
-
- String category = library.getCategory();
- return category != null ? category : UNCATEGORIZED;
- } else if (element instanceof ArduinoPlatform) {
- return ((ArduinoPlatform) element).getName();
- }
- return null;
- }
-
- @Override
- public boolean hasChildren(Object element) {
- return element instanceof String || element instanceof ArduinoPlatform;
- }
- }
-
- private static class LabelProvider extends BaseLabelProvider implements ITableLabelProvider {
- @Override
- public Image getColumnImage(Object element, int columnIndex) {
- return null;
- }
-
- @Override
- public String getColumnText(Object element, int columnIndex) {
- if (element instanceof String) {
- return columnIndex == 0 ? (String) element : null;
- } else if (element instanceof ArduinoPlatform) {
- return columnIndex == 0 ? ((ArduinoPlatform) element).getName() : null;
- } else if (element instanceof ArduinoLibrary) {
- ArduinoLibrary library = (ArduinoLibrary) element;
- switch (columnIndex) {
- case 0:
- return library.getName();
- case 1:
- return library.getVersion();
- case 2:
- return library.getSentence();
- default:
- return null;
- }
- } else {
- return null;
- }
- }
-
- }
-
- public LibraryTree(Composite parent) {
- super(parent, SWT.CHECK | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL, new LibPatternFilter(), true);
-
- TreeViewer viewer = getViewer();
- viewer.setContentProvider(new ContentProvider());
- viewer.setLabelProvider(new LabelProvider());
-
- Tree tree = viewer.getTree();
- tree.setHeaderVisible(true);
- TreeColumn column1 = new TreeColumn(tree, SWT.LEFT);
- column1.setText("Library");
- column1.setWidth(200);
- TreeColumn column2 = new TreeColumn(tree, SWT.LEFT);
- column2.setText("Version");
- column2.setWidth(100);
- TreeColumn column3 = new TreeColumn(tree, SWT.LEFT);
- column3.setText("Description");
- column3.setWidth(300);
- }
-
- public void setIncludePlatforms(boolean includePlatforms) {
- this.includePlatforms = includePlatforms;
- }
-
- public void setChecked(Collection<ArduinoLibrary> checkedLibs) {
- this.checkedLibs = new HashSet<>(checkedLibs);
- }
-
- public Collection<ArduinoLibrary> getChecked() {
- return checkedLibs;
- }
-
- @Override
- protected TreeViewer doCreateTreeViewer(Composite parent, int style) {
- CheckboxTreeViewer viewer = new CheckboxTreeViewer(parent, style);
- viewer.setCheckStateProvider(new ICheckStateProvider() {
- @Override
- public boolean isGrayed(Object element) {
- if (element instanceof String) {
- String category = (String) element;
- if (category == PLATFORMS) {
- for (ArduinoLibrary lib : checkedLibs) {
- if (lib.getPlatform() != null) {
- return true;
- }
- }
- } else if (category == UNCATEGORIZED) {
- for (ArduinoLibrary lib : checkedLibs) {
- if (lib.getPlatform() == null && lib.getCategory() == null) {
- return true;
- }
- }
- } else {
- for (ArduinoLibrary lib : checkedLibs) {
- if (element.equals(lib.getCategory())) {
- return true;
- }
- }
- }
- } else if (element instanceof ArduinoPlatform) {
- for (ArduinoLibrary lib : checkedLibs) {
- if (element == lib.getPlatform()) {
- return true;
- }
- }
- }
- return false;
- }
-
- @Override
- public boolean isChecked(Object element) {
- if (element instanceof ArduinoLibrary) {
- return checkedLibs.contains(element);
- } else {
- return isGrayed(element);
- }
- }
- });
-
- viewer.addCheckStateListener(new ICheckStateListener() {
- @Override
- public void checkStateChanged(CheckStateChangedEvent event) {
- Object element = event.getElement();
- if (element instanceof ArduinoLibrary) {
- if (event.getChecked()) {
- checkedLibs.add((ArduinoLibrary) element);
- } else {
- checkedLibs.remove(element);
- }
- } else if (element instanceof String) {
- if (!event.getChecked()) {
- for (ArduinoLibrary lib : new ArrayList<>(checkedLibs)) {
- if (element.equals(lib.getCategory())) {
- checkedLibs.remove(lib);
- }
- }
- }
- }
- }
- });
- return viewer;
- }
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/Messages.java b/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/Messages.java
deleted file mode 100644
index 57306c0ec5c..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/Messages.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.cdt.arduino.ui.internal;
-
-import org.eclipse.osgi.util.NLS;
-
-public class Messages extends NLS {
- private static final String BUNDLE_NAME = "org.eclipse.cdt.arduino.ui.internal.messages"; //$NON-NLS-1$
- public static String ArduinoLaunchConsole_0;
- public static String ArduinoLaunchConsole_1;
- public static String ArduinoLaunchConsole_2;
- public static String ArduinoTargetPropertyPage_0;
- public static String ArduinoTargetPropertyPage_1;
- public static String ArduinoTargetPropertyPage_2;
- public static String NewArduinoProjectWizard_0;
- public static String NewArduinoTargetWizardPage_0;
- public static String NewArduinoTargetWizardPage_1;
- public static String NewArduinoTargetWizardPage_2;
- public static String NewArduinoTargetWizardPage_3;
- public static String NewArduinoTargetWizardPage_4;
- public static String NewArduinoTargetWizardPage_5;
- public static String LibrariesPropertyPage_0;
- public static String LibrariesPropertyPage_1;
- public static String LibrariesPropertyPage_desc;
- public static String ArduinoPreferencePage_desc;
- public static String PlatformDetailsDialog_0;
- public static String PlatformDetailsDialog_1;
- public static String ArduinoTerminalSettingsPage_BoardName;
- public static String ArduinoTerminalSettingsPage_SerialPort;
- public static String ArduinoTerminalSettingsPage_BaudRate;
- public static String ArduinoTerminalSettingsPage_DataSize;
- public static String ArduinoTerminalSettingsPage_Parity;
- public static String ArduinoTerminalSettingsPage_StopBits;
- public static String ArduinoTerminalSettingsPage_UnknownPort;
-
- static {
- // initialize resource bundle
- NLS.initializeMessages(BUNDLE_NAME, Messages.class);
- }
-
- private Messages() {
- }
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/downloads/ArduinoDownloadsManager.java b/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/downloads/ArduinoDownloadsManager.java
deleted file mode 100644
index acb70f4c95e..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/downloads/ArduinoDownloadsManager.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.cdt.arduino.ui.internal.downloads;
-
-import java.io.File;
-import java.io.IOException;
-
-import org.eclipse.cdt.arduino.core.internal.ArduinoPreferences;
-import org.eclipse.cdt.arduino.ui.internal.Activator;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.jface.wizard.WizardPage;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CTabFolder;
-import org.eclipse.swt.custom.CTabItem;
-import org.eclipse.swt.events.FocusAdapter;
-import org.eclipse.swt.events.FocusEvent;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Shell;
-
-public class ArduinoDownloadsManager extends WizardDialog {
-
- public ArduinoDownloadsManager() {
- super(null, new Wizard() {
- {
- setNeedsProgressMonitor(true);
- }
-
- @Override
- public void addPages() {
- addPage(new WizardPage(ArduinoDownloadsManager.class.getName()) {
- {
- setTitle("Arduino Download Manager");
- setDescription("Manage installed Platforms and Libraries.");
- }
-
- @Override
- public void createControl(Composite parent) {
- final CTabFolder tabFolder = new CTabFolder(parent, SWT.BORDER);
- tabFolder.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- tabFolder.getSelection().getControl().setFocus();
- }
- });
- tabFolder.addFocusListener(new FocusAdapter() {
- @Override
- public void focusGained(FocusEvent e) {
- tabFolder.getSelection().getControl().setFocus();
- }
- });
-
- CTabItem platformsTab = new CTabItem(tabFolder, SWT.NONE);
- platformsTab.setText("Platforms");
- platformsTab.setImage(Activator.getDefault().getImageRegistry().get(Activator.IMG_ARDUINO));
- PlatformsTabControl platformsControl = new PlatformsTabControl(tabFolder, SWT.NONE);
- platformsControl.setContainer(getContainer());
- platformsTab.setControl(platformsControl);
-
- CTabItem librariesTab = new CTabItem(tabFolder, SWT.NONE);
- librariesTab.setText("Libraries");
- librariesTab.setImage(Activator.getDefault().getImageRegistry().get(Activator.IMG_ARDUINO));
- LibrariesTabControl librariesControl = new LibrariesTabControl(tabFolder, SWT.NONE);
- librariesControl.setContainer(getContainer());
- librariesTab.setControl(librariesControl);
-
- applyDialogFont(tabFolder);
- setControl(tabFolder);
- }
- });
- }
-
- @Override
- public boolean performFinish() {
- return true;
- }
- });
- }
-
- @Override
- protected void createButtonsForButtonBar(Composite parent) {
- super.createButtonsForButtonBar(parent);
- getButton(IDialogConstants.CANCEL_ID).setVisible(false);
- Button finishButton = getButton(IDialogConstants.FINISH_ID);
- finishButton.setText("Done");
- // make sure it's far right
- finishButton.moveBelow(null);
- }
-
- static boolean checkLicense(Shell shell) {
- File acceptedFile = ArduinoPreferences.getArduinoHome().resolve(".accepted").toFile(); //$NON-NLS-1$
- if (!acceptedFile.exists()) {
- String message = "Do you accept the licenses for the platforms and libraries you are downloading?";
- MessageDialog dialog = new MessageDialog(shell, "Arduino Licensing", null, message, MessageDialog.QUESTION,
- new String[] { "Yes", "No" }, 0);
- int rc = dialog.open();
- if (rc == 0) {
- try {
- acceptedFile.createNewFile();
- } catch (IOException e) {
- Activator.log(e);
- }
- return true;
- } else {
- return false;
- }
- } else {
- return true;
- }
- }
-
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/downloads/LibrariesTabControl.java b/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/downloads/LibrariesTabControl.java
deleted file mode 100644
index 153aeca97a6..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/downloads/LibrariesTabControl.java
+++ /dev/null
@@ -1,287 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.cdt.arduino.ui.internal.downloads;
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-
-import org.eclipse.cdt.arduino.core.internal.board.ArduinoLibrary;
-import org.eclipse.cdt.arduino.core.internal.board.ArduinoManager;
-import org.eclipse.cdt.arduino.ui.internal.Activator;
-import org.eclipse.cdt.arduino.ui.internal.FormTextHoverManager;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jface.dialogs.ErrorDialog;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.layout.TableColumnLayout;
-import org.eclipse.jface.viewers.ColumnWeightData;
-import org.eclipse.jface.window.Window;
-import org.eclipse.jface.wizard.IWizardContainer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.swt.widgets.Text;
-
-public class LibrariesTabControl extends Composite {
-
- private ArduinoManager manager = Activator.getService(ArduinoManager.class);
- private Table table;
- private IWizardContainer container;
- private Collection<ArduinoLibrary> availableLibraries;
-
- public LibrariesTabControl(Composite parent, int style) {
- super(parent, style);
- setLayout(new GridLayout());
-
- Text desc = new Text(this, SWT.READ_ONLY | SWT.WRAP);
- GridData layoutData = new GridData(SWT.FILL, SWT.FILL, true, false);
- layoutData.widthHint = 500;
- desc.setLayoutData(layoutData);
- desc.setBackground(parent.getBackground());
- desc.setText("Installed Platforms. Details available in their tooltips");
-
- Composite comp = new Composite(this, SWT.NONE);
- GridLayout layout = new GridLayout(2, false);
- layout.marginWidth = 0;
- comp.setLayout(layout);
- comp.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-
- Composite tableComp = new Composite(comp, SWT.NONE);
- tableComp.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-
- table = new Table(tableComp, SWT.MULTI | SWT.BORDER | SWT.V_SCROLL | SWT.FULL_SELECTION);
- table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
- table.setHeaderVisible(true);
- table.setLinesVisible(true);
-
- TableColumnLayout tableLayout = new TableColumnLayout();
-
- TableColumn packageColumn = new TableColumn(table, SWT.LEAD);
- packageColumn.setText("Library");
- tableLayout.setColumnData(packageColumn, new ColumnWeightData(5, 150, true));
-
- TableColumn platformColumn = new TableColumn(table, SWT.LEAD);
- platformColumn.setText("Version");
- tableLayout.setColumnData(platformColumn, new ColumnWeightData(2, 75, true));
-
- TableColumn versionColumn = new TableColumn(table, SWT.LEAD);
- versionColumn.setText("Description");
- tableLayout.setColumnData(versionColumn, new ColumnWeightData(5, 150, true));
-
- tableComp.setLayout(tableLayout);
-
- Composite buttonComp = new Composite(comp, SWT.NONE);
- buttonComp.setLayout(new GridLayout());
- buttonComp.setLayoutData(new GridData(SWT.BEGINNING, SWT.BEGINNING, false, false));
-
- final Button uninstallButton = new Button(buttonComp, SWT.PUSH);
- uninstallButton.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false));
- uninstallButton.setText("Uninstall");
- uninstallButton.setEnabled(false);
- uninstallButton.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- uninstall();
- }
- });
-
- Button updatesButton = new Button(buttonComp, SWT.PUSH);
- updatesButton.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false));
- updatesButton.setText("Updates");
- updatesButton.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- checkForUpdates();
- }
- });
-
- Button addButton = new Button(buttonComp, SWT.PUSH);
- addButton.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false));
- addButton.setText("Add");
- addButton.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- addLibraries();
- }
- });
-
- populateTable();
-
- table.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- TableItem[] selection = table.getSelection();
- uninstallButton.setEnabled(selection.length > 0);
- }
- });
-
- FormTextHoverManager hoverManager = new FormTextHoverManager() {
- @Override
- protected void computeInformation() {
- TableItem item = table.getItem(getHoverEventLocation());
- if (item != null) {
- ArduinoLibrary library = (ArduinoLibrary) item.getData();
- setInformation(library.toFormText(), item.getBounds());
- } else {
- setInformation(null, null);
- }
- }
- };
- hoverManager.install(table);
-
- }
-
- public void setContainer(IWizardContainer container) {
- this.container = container;
- }
-
- private void populateTable() {
- table.removeAll();
- try {
- List<ArduinoLibrary> libraries = new ArrayList<>(manager.getInstalledLibraries());
- Collections.sort(libraries, new Comparator<ArduinoLibrary>() {
- @Override
- public int compare(ArduinoLibrary o1, ArduinoLibrary o2) {
- return o1.getName().compareTo(o2.getName());
- }
- });
-
- for (ArduinoLibrary library : libraries) {
- TableItem item = new TableItem(table, SWT.NONE);
- item.setData(library);
- item.setText(0, library.getName());
- item.setText(1, library.getVersion());
- item.setText(2, library.getSentence());
- }
-
- } catch (CoreException e) {
- Activator.log(e);
- }
- }
-
- private void uninstall() {
- List<ArduinoLibrary> selectedLibraries = new ArrayList<>(table.getSelectionCount());
- for (TableItem item : table.getSelection()) {
- selectedLibraries.add((ArduinoLibrary) item.getData());
- }
- try {
- container.run(true, true, monitor -> {
- try {
- manager.uninstallLibraries(selectedLibraries, monitor);
- } catch (CoreException e) {
- Activator.log(e);
- }
- });
- } catch (InterruptedException | InvocationTargetException e) {
- Activator.log(e);
- return;
- }
- populateTable();
- }
-
- private void checkForUpdates() {
- Collection<ArduinoLibrary> updates = new ArrayList<>();
- try {
- container.run(true, true, monitor -> {
- try {
- for (ArduinoLibrary available : manager.getLibraryUpdates(monitor)) {
- ArduinoLibrary installed = manager.getInstalledLibrary(available.getName());
- if (installed != null) {
- if (ArduinoManager.compareVersions(available.getVersion(), installed.getVersion()) > 0) {
- updates.add(available);
- }
- }
- }
- } catch (CoreException e) {
- getDisplay().syncExec(() -> ErrorDialog.openError(getShell(), null, null, e.getStatus()));
- Activator.log(e);
- }
- });
-
- if (updates.isEmpty()) {
- MessageDialog.openInformation(getShell(), "Library Updates", "All libraries are up to date");
- return;
- }
- } catch (InvocationTargetException | InterruptedException e) {
- Activator.log(e);
- return;
- }
-
- if (updates.isEmpty()) {
- MessageDialog.openInformation(getShell(), "Platform Updates", "All platforms are up to date");
- return;
- } else {
- UpdateLibrariesDialog updateDialog = new UpdateLibrariesDialog(getShell(), updates);
- if (updateDialog.open() == Window.OK) {
- Collection<ArduinoLibrary> toUpdate = updateDialog.getSelectedLibraries();
- if (!toUpdate.isEmpty()) {
- try {
- container.run(true, true, monitor -> {
- try {
- manager.installLibraries(toUpdate, monitor);
- } catch (CoreException e) {
- getDisplay()
- .syncExec(() -> ErrorDialog.openError(getShell(), null, null, e.getStatus()));
- Activator.log(e);
- }
- });
- } catch (InvocationTargetException | InterruptedException e) {
- Activator.log(e);
- }
- populateTable();
- }
- }
- }
- }
-
- private void addLibraries() {
- try {
- container.run(true, true, monitor -> {
- try {
- availableLibraries = manager.getAvailableLibraries(monitor);
- } catch (CoreException e) {
- getDisplay().syncExec(() -> ErrorDialog.openError(getShell(), null, null, e.getStatus()));
- Activator.log(e);
- }
- });
-
- SelectLibrariesDialog selectDialog = new SelectLibrariesDialog(getShell());
- selectDialog.setLibraries(availableLibraries);
- if (selectDialog.open() == Window.OK) {
- if (ArduinoDownloadsManager.checkLicense(getShell())) {
- Collection<ArduinoLibrary> selectedLibraries = selectDialog.getChecked();
- container.run(true, true, monitor -> {
- try {
- manager.installLibraries(selectedLibraries, monitor);
- } catch (CoreException e) {
- Activator.log(e);
- }
- });
- }
- }
- populateTable();
- } catch (InterruptedException | InvocationTargetException e) {
- Activator.log(e);
- return;
- }
- }
-
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/downloads/OpenDownloadsManager.java b/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/downloads/OpenDownloadsManager.java
deleted file mode 100644
index 34b4bcb3843..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/downloads/OpenDownloadsManager.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.cdt.arduino.ui.internal.downloads;
-
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.runtime.Status;
-
-public class OpenDownloadsManager extends AbstractHandler {
-
- @Override
- public Object execute(ExecutionEvent event) throws ExecutionException {
- new ArduinoDownloadsManager().open();
- return Status.OK_STATUS;
- }
-
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/downloads/PlatformsTabControl.java b/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/downloads/PlatformsTabControl.java
deleted file mode 100644
index 75b741add76..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/downloads/PlatformsTabControl.java
+++ /dev/null
@@ -1,281 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.cdt.arduino.ui.internal.downloads;
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-
-import org.eclipse.cdt.arduino.core.internal.board.ArduinoManager;
-import org.eclipse.cdt.arduino.core.internal.board.ArduinoPlatform;
-import org.eclipse.cdt.arduino.ui.internal.Activator;
-import org.eclipse.cdt.arduino.ui.internal.FormTextHoverManager;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jface.dialogs.ErrorDialog;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.layout.TableColumnLayout;
-import org.eclipse.jface.viewers.ColumnWeightData;
-import org.eclipse.jface.window.Window;
-import org.eclipse.jface.wizard.IWizardContainer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.swt.widgets.Text;
-
-public class PlatformsTabControl extends Composite {
-
- private ArduinoManager manager = Activator.getService(ArduinoManager.class);
- private Table table;
- private IWizardContainer container;
- private Collection<ArduinoPlatform> availablePlatforms;
-
- public PlatformsTabControl(Composite parent, int style) {
- super(parent, style);
- setLayout(new GridLayout());
-
- Text desc = new Text(this, SWT.READ_ONLY | SWT.WRAP);
- GridData layoutData = new GridData(SWT.FILL, SWT.FILL, true, false);
- layoutData.widthHint = 500;
- desc.setLayoutData(layoutData);
- desc.setBackground(parent.getBackground());
- desc.setText("Installed Platforms. Details available in their tooltips");
-
- Composite comp = new Composite(this, SWT.NONE);
- GridLayout layout = new GridLayout(2, false);
- layout.marginWidth = 0;
- comp.setLayout(layout);
- comp.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-
- Composite tableComp = new Composite(comp, SWT.NONE);
- tableComp.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-
- table = new Table(tableComp, SWT.MULTI | SWT.BORDER | SWT.V_SCROLL | SWT.FULL_SELECTION);
- table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
- table.setHeaderVisible(true);
- table.setLinesVisible(true);
-
- TableColumnLayout tableLayout = new TableColumnLayout();
-
- TableColumn packageColumn = new TableColumn(table, SWT.LEAD);
- packageColumn.setText("Package");
- tableLayout.setColumnData(packageColumn, new ColumnWeightData(2, 75, true));
-
- TableColumn platformColumn = new TableColumn(table, SWT.LEAD);
- platformColumn.setText("Platform");
- tableLayout.setColumnData(platformColumn, new ColumnWeightData(5, 150, true));
-
- TableColumn versionColumn = new TableColumn(table, SWT.LEAD);
- versionColumn.setText("Version");
- tableLayout.setColumnData(versionColumn, new ColumnWeightData(2, 75, true));
-
- tableComp.setLayout(tableLayout);
-
- Composite buttonComp = new Composite(comp, SWT.NONE);
- buttonComp.setLayout(new GridLayout());
- buttonComp.setLayoutData(new GridData(SWT.BEGINNING, SWT.BEGINNING, false, false));
-
- final Button uninstallButton = new Button(buttonComp, SWT.PUSH);
- uninstallButton.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false));
- uninstallButton.setText("Uninstall");
- uninstallButton.setEnabled(false);
- uninstallButton.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- uninstall();
- }
- });
-
- Button updatesButton = new Button(buttonComp, SWT.PUSH);
- updatesButton.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false));
- updatesButton.setText("Updates");
- updatesButton.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- checkForUpdates();
- }
- });
-
- Button addButton = new Button(buttonComp, SWT.PUSH);
- addButton.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false));
- addButton.setText("Add");
- addButton.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- addPlatforms();
- }
- });
-
- populateTable();
-
- table.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- TableItem[] selection = table.getSelection();
- uninstallButton.setEnabled(selection.length > 0);
- }
- });
-
- FormTextHoverManager hoverManager = new FormTextHoverManager() {
- @Override
- protected void computeInformation() {
- TableItem item = table.getItem(getHoverEventLocation());
- if (item != null) {
- ArduinoPlatform platform = (ArduinoPlatform) item.getData();
- setInformation(platform.toFormText(), item.getBounds());
- } else {
- setInformation(null, null);
- }
- }
- };
- hoverManager.install(table);
- }
-
- @Override
- public boolean setFocus() {
- return table.setFocus();
- }
-
- public void setContainer(IWizardContainer container) {
- this.container = container;
- }
-
- private void populateTable() {
- table.removeAll();
- try {
- List<ArduinoPlatform> platforms = new ArrayList<>(manager.getInstalledPlatforms());
- Collections.sort(platforms, new Comparator<ArduinoPlatform>() {
- @Override
- public int compare(ArduinoPlatform o1, ArduinoPlatform o2) {
- return o1.getName().compareTo(o2.getName());
- }
- });
-
- for (ArduinoPlatform platform : platforms) {
- TableItem item = new TableItem(table, SWT.NONE);
- item.setData(platform);
- item.setText(0, platform.getPackage().getName());
- item.setText(1, platform.getName());
- item.setText(2, platform.getVersion());
- }
-
- } catch (CoreException e) {
- Activator.log(e);
- }
- }
-
- private void uninstall() {
- List<ArduinoPlatform> selectedPlatforms = new ArrayList<>(table.getSelectionCount());
- for (TableItem item : table.getSelection()) {
- selectedPlatforms.add((ArduinoPlatform) item.getData());
- }
- try {
- container.run(true, true, monitor -> manager.uninstallPlatforms(selectedPlatforms, monitor));
- } catch (InterruptedException | InvocationTargetException e) {
- Activator.log(e);
- return;
- }
- populateTable();
- }
-
- private void checkForUpdates() {
- Collection<ArduinoPlatform> updates = new ArrayList<>();
- try {
- container.run(true, true, monitor -> {
- try {
- for (ArduinoPlatform available : manager.getPlatformUpdates(monitor)) {
- ArduinoPlatform installed = manager.getInstalledPlatform(available.getPackage().getName(),
- available.getArchitecture());
- if (installed != null) {
- if (ArduinoManager.compareVersions(available.getVersion(), installed.getVersion()) > 0) {
- updates.add(available);
- }
- }
- }
- } catch (CoreException e) {
- getDisplay().syncExec(() -> ErrorDialog.openError(getShell(), null, null, e.getStatus()));
- Activator.log(e);
- }
- });
- } catch (InvocationTargetException | InterruptedException e) {
- Activator.log(e);
- return;
- }
-
- if (updates.isEmpty()) {
- MessageDialog.openInformation(getShell(), "Platform Updates", "All platforms are up to date");
- return;
- } else {
- UpdatePlatformsDialog updateDialog = new UpdatePlatformsDialog(getShell(), updates);
- if (updateDialog.open() == Window.OK) {
- Collection<ArduinoPlatform> toUpdate = updateDialog.getSelectedPlatforms();
- if (!toUpdate.isEmpty()) {
- try {
- container.run(true, true, monitor -> {
- try {
- manager.installPlatforms(toUpdate, monitor);
- } catch (CoreException e) {
- getDisplay()
- .syncExec(() -> ErrorDialog.openError(getShell(), null, null, e.getStatus()));
- Activator.log(e);
- }
- });
- } catch (InvocationTargetException | InterruptedException e) {
- Activator.log(e);
- }
- populateTable();
- }
- }
- }
- }
-
- private void addPlatforms() {
- try {
- container.run(true, true, monitor -> {
- try {
- availablePlatforms = manager.getAvailablePlatforms(monitor);
- } catch (CoreException e) {
- getDisplay().syncExec(() -> ErrorDialog.openError(getShell(), null, null, e.getStatus()));
- Activator.log(e);
- }
- });
-
- SelectPlatformsDialog selectDialog = new SelectPlatformsDialog(getShell());
- selectDialog.setPlatforms(availablePlatforms);
- if (selectDialog.open() == Window.OK) {
- if (ArduinoDownloadsManager.checkLicense(getShell())) {
- Collection<ArduinoPlatform> selectedPlatforms = selectDialog.getSelectedPlatforms();
- container.run(true, true, monitor -> {
- try {
- manager.installPlatforms(selectedPlatforms, monitor);
- } catch (CoreException e) {
- Activator.log(e);
- }
- });
- }
- }
- populateTable();
- } catch (InterruptedException | InvocationTargetException e) {
- Activator.log(e);
- return;
- }
- }
-
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/downloads/SelectLibrariesDialog.java b/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/downloads/SelectLibrariesDialog.java
deleted file mode 100644
index cc7fef2c3f6..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/downloads/SelectLibrariesDialog.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.cdt.arduino.ui.internal.downloads;
-
-import java.util.Collection;
-
-import org.eclipse.cdt.arduino.core.internal.board.ArduinoLibrary;
-import org.eclipse.cdt.arduino.ui.internal.FormTextHoverManager;
-import org.eclipse.cdt.arduino.ui.internal.LibraryTree;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Tree;
-import org.eclipse.swt.widgets.TreeItem;
-
-public class SelectLibrariesDialog extends Dialog {
-
- private Collection<ArduinoLibrary> libraries;
- private Collection<ArduinoLibrary> checkedLibraries;
- private LibraryTree libraryTree;
-
- public SelectLibrariesDialog(Shell parentShell) {
- super(parentShell);
- }
-
- @Override
- protected boolean isResizable() {
- return true;
- }
-
- @Override
- protected Point getInitialSize() {
- Point size = super.getInitialSize();
- if (size.x < 600 || size.y < 400) {
- return new Point(600, 400);
- } else {
- return size;
- }
- }
-
- public void setLibraries(Collection<ArduinoLibrary> libraries) {
- this.libraries = libraries;
- }
-
- public Collection<ArduinoLibrary> getChecked() {
- return checkedLibraries;
- }
-
- @Override
- protected Control createDialogArea(Composite parent) {
- Composite comp = new Composite(parent, SWT.NONE);
- comp.setLayoutData(new GridData(GridData.FILL_BOTH));
- comp.setLayout(new GridLayout());
-
- libraryTree = new LibraryTree(comp);
- libraryTree.setLayoutData(new GridData(GridData.FILL_BOTH));
- libraryTree.setIncludePlatforms(false);
- libraryTree.getViewer().setInput(libraries);
-
- FormTextHoverManager hoverManager = new FormTextHoverManager() {
- @Override
- protected void computeInformation() {
- TreeViewer viewer = libraryTree.getViewer();
- Tree tree = viewer.getTree();
- TreeItem item = tree.getItem(getHoverEventLocation());
- if (item != null) {
- Object data = item.getData();
- if (data instanceof ArduinoLibrary) {
- ArduinoLibrary library = (ArduinoLibrary) data;
- setInformation(library.toFormText(), item.getBounds());
- }
- } else {
- setInformation(null, null);
- }
- }
- };
- hoverManager.install(libraryTree.getViewer().getTree());
-
- applyDialogFont(comp);
- return comp;
- }
-
- @Override
- protected void okPressed() {
- checkedLibraries = libraryTree.getChecked();
- super.okPressed();
- }
-
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/downloads/SelectPlatformsDialog.java b/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/downloads/SelectPlatformsDialog.java
deleted file mode 100644
index b00732e3171..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/downloads/SelectPlatformsDialog.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.cdt.arduino.ui.internal.downloads;
-
-import java.util.ArrayList;
-import java.util.Collection;
-
-import org.eclipse.cdt.arduino.core.internal.board.ArduinoManager;
-import org.eclipse.cdt.arduino.core.internal.board.ArduinoPlatform;
-import org.eclipse.cdt.arduino.ui.internal.FormTextHoverManager;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.layout.TableColumnLayout;
-import org.eclipse.jface.viewers.ColumnWeightData;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.swt.widgets.TableItem;
-
-public class SelectPlatformsDialog extends Dialog {
-
- private Collection<ArduinoPlatform> platforms;
- private Collection<ArduinoPlatform> selectedPlatforms;
- private Table table;
-
- protected SelectPlatformsDialog(Shell parentShell) {
- super(parentShell);
- }
-
- @Override
- protected boolean isResizable() {
- return true;
- }
-
- @Override
- protected Point getInitialSize() {
- Point size = super.getInitialSize();
- if (size.x < 500 || size.y < 300) {
- return new Point(500, 300);
- } else {
- return size;
- }
- }
-
- public void setPlatforms(Collection<ArduinoPlatform> platforms) {
- this.platforms = platforms;
- }
-
- @Override
- protected Control createDialogArea(Composite parent) {
- Composite comp = new Composite(parent, SWT.NONE);
- comp.setLayoutData(new GridData(GridData.FILL_BOTH));
-
- table = new Table(comp, SWT.CHECK | SWT.BORDER | SWT.V_SCROLL | SWT.FULL_SELECTION);
- table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
- table.setHeaderVisible(true);
- table.setLinesVisible(true);
-
- TableColumnLayout tableLayout = new TableColumnLayout();
-
- TableColumn packageColumn = new TableColumn(table, SWT.LEAD);
- packageColumn.setText("Package");
- tableLayout.setColumnData(packageColumn, new ColumnWeightData(2, 75, true));
-
- TableColumn platformColumn = new TableColumn(table, SWT.LEAD);
- platformColumn.setText("Platform");
- tableLayout.setColumnData(platformColumn, new ColumnWeightData(5, 150, true));
-
- TableColumn versionColumn = new TableColumn(table, SWT.LEAD);
- versionColumn.setText("Version");
- tableLayout.setColumnData(versionColumn, new ColumnWeightData(2, 75, true));
-
- comp.setLayout(tableLayout);
-
- for (ArduinoPlatform platform : ArduinoManager.getSortedPlatforms(platforms)) {
- TableItem item = new TableItem(table, SWT.NONE);
- item.setData(platform);
- item.setText(0, platform.getPackage().getName());
- item.setText(1, platform.getName());
- item.setText(2, platform.getVersion());
- }
-
- FormTextHoverManager hoverManager = new FormTextHoverManager() {
- @Override
- protected void computeInformation() {
- TableItem item = table.getItem(getHoverEventLocation());
- if (item != null) {
- ArduinoPlatform platform = (ArduinoPlatform) item.getData();
- setInformation(platform.toFormText(), item.getBounds());
- } else {
- setInformation(null, null);
- }
- }
- };
- hoverManager.install(table);
-
- applyDialogFont(comp);
- return comp;
- }
-
- @Override
- protected void okPressed() {
- selectedPlatforms = new ArrayList<>();
- for (TableItem item : table.getItems()) {
- if (item.getChecked()) {
- selectedPlatforms.add((ArduinoPlatform) item.getData());
- }
- }
-
- super.okPressed();
- }
-
- public Collection<ArduinoPlatform> getSelectedPlatforms() {
- return selectedPlatforms;
- }
-
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/downloads/UpdateLibrariesDialog.java b/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/downloads/UpdateLibrariesDialog.java
deleted file mode 100644
index 12cb0689c25..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/downloads/UpdateLibrariesDialog.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.cdt.arduino.ui.internal.downloads;
-
-import java.util.ArrayList;
-import java.util.Collection;
-
-import org.eclipse.cdt.arduino.core.internal.board.ArduinoLibrary;
-import org.eclipse.cdt.arduino.core.internal.board.ArduinoManager;
-import org.eclipse.cdt.arduino.ui.internal.Activator;
-import org.eclipse.cdt.arduino.ui.internal.FormTextHoverManager;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.layout.TableColumnLayout;
-import org.eclipse.jface.viewers.ColumnWeightData;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.swt.widgets.TableItem;
-
-public class UpdateLibrariesDialog extends Dialog {
-
- private final Collection<ArduinoLibrary> libraries;
- private Collection<ArduinoLibrary> selectedLibraries;
- private Table table;
-
- protected UpdateLibrariesDialog(Shell parentShell, Collection<ArduinoLibrary> libraries) {
- super(parentShell);
- this.libraries = libraries;
- }
-
- @Override
- protected boolean isResizable() {
- return true;
- }
-
- @Override
- protected Point getInitialSize() {
- Point size = super.getInitialSize();
- if (size.x < 500 || size.y < 300) {
- return new Point(500, 300);
- } else {
- return size;
- }
- }
-
- @Override
- protected Control createDialogArea(Composite parent) {
- Composite comp = new Composite(parent, SWT.NONE);
- comp.setLayoutData(new GridData(GridData.FILL_BOTH));
-
- table = new Table(comp, SWT.CHECK | SWT.BORDER | SWT.V_SCROLL | SWT.FULL_SELECTION);
- table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
- table.setHeaderVisible(true);
- table.setLinesVisible(true);
-
- TableColumnLayout tableLayout = new TableColumnLayout();
-
- TableColumn platformColumn = new TableColumn(table, SWT.LEAD);
- platformColumn.setText("Library");
- tableLayout.setColumnData(platformColumn, new ColumnWeightData(5, 150, true));
-
- TableColumn versionColumn = new TableColumn(table, SWT.LEAD);
- versionColumn.setText("Current");
- tableLayout.setColumnData(versionColumn, new ColumnWeightData(2, 75, true));
-
- TableColumn updateColumn = new TableColumn(table, SWT.LEAD);
- updateColumn.setText("Available");
- tableLayout.setColumnData(updateColumn, new ColumnWeightData(2, 75, true));
-
- comp.setLayout(tableLayout);
-
- ArduinoManager manager = Activator.getService(ArduinoManager.class);
- for (ArduinoLibrary library : ArduinoManager.getSortedLibraries(libraries)) {
- try {
- ArduinoLibrary installed = manager.getInstalledLibrary(library.getName());
- TableItem item = new TableItem(table, SWT.NONE);
- item.setData(library);
- item.setText(0, library.getName());
- item.setText(1, installed.getVersion());
- item.setText(2, library.getVersion());
- } catch (CoreException e) {
- Activator.log(e);
- }
- }
-
- FormTextHoverManager hoverManager = new FormTextHoverManager() {
- @Override
- protected void computeInformation() {
- TableItem item = table.getItem(getHoverEventLocation());
- if (item != null) {
- ArduinoLibrary library = (ArduinoLibrary) item.getData();
- setInformation(library.toFormText(), item.getBounds());
- } else {
- setInformation(null, null);
- }
- }
- };
- hoverManager.install(table);
-
- applyDialogFont(comp);
- return comp;
- }
-
- @Override
- protected void okPressed() {
- selectedLibraries = new ArrayList<>();
- for (TableItem item : table.getItems()) {
- if (item.getChecked()) {
- selectedLibraries.add((ArduinoLibrary) item.getData());
- }
- }
-
- super.okPressed();
- }
-
- public Collection<ArduinoLibrary> getSelectedLibraries() {
- return selectedLibraries;
- }
-
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/downloads/UpdatePlatformsDialog.java b/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/downloads/UpdatePlatformsDialog.java
deleted file mode 100644
index e31c5145f38..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/downloads/UpdatePlatformsDialog.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.cdt.arduino.ui.internal.downloads;
-
-import java.util.ArrayList;
-import java.util.Collection;
-
-import org.eclipse.cdt.arduino.core.internal.board.ArduinoManager;
-import org.eclipse.cdt.arduino.core.internal.board.ArduinoPlatform;
-import org.eclipse.cdt.arduino.ui.internal.Activator;
-import org.eclipse.cdt.arduino.ui.internal.FormTextHoverManager;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.layout.TableColumnLayout;
-import org.eclipse.jface.viewers.ColumnWeightData;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.swt.widgets.TableItem;
-
-public class UpdatePlatformsDialog extends Dialog {
-
- private final Collection<ArduinoPlatform> platforms;
- private Collection<ArduinoPlatform> selectedPlatforms;
- private Table table;
-
- protected UpdatePlatformsDialog(Shell parentShell, Collection<ArduinoPlatform> platforms) {
- super(parentShell);
- this.platforms = platforms;
- }
-
- @Override
- protected boolean isResizable() {
- return true;
- }
-
- @Override
- protected Point getInitialSize() {
- Point size = super.getInitialSize();
- if (size.x < 500 || size.y < 300) {
- return new Point(500, 300);
- } else {
- return size;
- }
- }
-
- @Override
- protected Control createDialogArea(Composite parent) {
- Composite comp = new Composite(parent, SWT.NONE);
- comp.setLayoutData(new GridData(GridData.FILL_BOTH));
-
- table = new Table(comp, SWT.CHECK | SWT.BORDER | SWT.V_SCROLL | SWT.FULL_SELECTION);
- table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
- table.setHeaderVisible(true);
- table.setLinesVisible(true);
-
- TableColumnLayout tableLayout = new TableColumnLayout();
-
- TableColumn packageColumn = new TableColumn(table, SWT.LEAD);
- packageColumn.setText("Package");
- tableLayout.setColumnData(packageColumn, new ColumnWeightData(2, 75, true));
-
- TableColumn platformColumn = new TableColumn(table, SWT.LEAD);
- platformColumn.setText("Platform");
- tableLayout.setColumnData(platformColumn, new ColumnWeightData(5, 150, true));
-
- TableColumn versionColumn = new TableColumn(table, SWT.LEAD);
- versionColumn.setText("Current");
- tableLayout.setColumnData(versionColumn, new ColumnWeightData(2, 75, true));
-
- TableColumn updateColumn = new TableColumn(table, SWT.LEAD);
- updateColumn.setText("Available");
- tableLayout.setColumnData(updateColumn, new ColumnWeightData(2, 75, true));
-
- comp.setLayout(tableLayout);
-
- ArduinoManager manager = Activator.getService(ArduinoManager.class);
- for (ArduinoPlatform platform : ArduinoManager.getSortedPlatforms(platforms)) {
- try {
- ArduinoPlatform installed = manager.getInstalledPlatform(platform.getPackage().getName(),
- platform.getArchitecture());
- TableItem item = new TableItem(table, SWT.NONE);
- item.setData(platform);
- item.setText(0, platform.getPackage().getName());
- item.setText(1, platform.getName());
- item.setText(2, installed.getVersion());
- item.setText(3, platform.getVersion());
- } catch (CoreException e) {
- Activator.log(e);
- }
- }
-
- FormTextHoverManager hoverManager = new FormTextHoverManager() {
- @Override
- protected void computeInformation() {
- TableItem item = table.getItem(getHoverEventLocation());
- if (item != null) {
- ArduinoPlatform platform = (ArduinoPlatform) item.getData();
- setInformation(platform.toFormText(), item.getBounds());
- } else {
- setInformation(null, null);
- }
- }
- };
- hoverManager.install(table);
-
- applyDialogFont(comp);
- return comp;
- }
-
- @Override
- protected void okPressed() {
- selectedPlatforms = new ArrayList<>();
- for (TableItem item : table.getItems()) {
- if (item.getChecked()) {
- selectedPlatforms.add((ArduinoPlatform) item.getData());
- }
- }
-
- super.okPressed();
- }
-
- public Collection<ArduinoPlatform> getSelectedPlatforms() {
- return selectedPlatforms;
- }
-
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/launch/ArduinoDescriptorLabelProvider.java b/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/launch/ArduinoDescriptorLabelProvider.java
deleted file mode 100644
index 87f9d782bb1..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/launch/ArduinoDescriptorLabelProvider.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.arduino.ui.internal.launch;
-
-import org.eclipse.cdt.arduino.ui.internal.Activator;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.launchbar.core.ILaunchDescriptor;
-import org.eclipse.swt.graphics.Image;
-
-public class ArduinoDescriptorLabelProvider extends LabelProvider {
-
- @Override
- public Image getImage(Object element) {
- return Activator.getDefault().getImageRegistry().get(Activator.IMG_ARDUINO);
- }
-
- @Override
- public String getText(Object element) {
- if (element instanceof ILaunchDescriptor)
- return ((ILaunchDescriptor) element).getName();
- return super.getText(element);
- }
-
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/launch/ArduinoLaunchConfigurationTabGroup.java b/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/launch/ArduinoLaunchConfigurationTabGroup.java
deleted file mode 100644
index e63f188cd6d..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/launch/ArduinoLaunchConfigurationTabGroup.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.arduino.ui.internal.launch;
-
-import org.eclipse.debug.ui.AbstractLaunchConfigurationTabGroup;
-import org.eclipse.debug.ui.ILaunchConfigurationDialog;
-import org.eclipse.debug.ui.ILaunchConfigurationTab;
-
-public class ArduinoLaunchConfigurationTabGroup extends AbstractLaunchConfigurationTabGroup {
-
- @Override
- public void createTabs(ILaunchConfigurationDialog dialog, String mode) {
- setTabs(new ILaunchConfigurationTab[0]);
- }
-
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/messages.properties b/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/messages.properties
deleted file mode 100644
index d0b3823dcb3..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/messages.properties
+++ /dev/null
@@ -1,38 +0,0 @@
-#******************************************************************************
-# Copyright (c) 2015 QNX Software Systems and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#******************************************************************************
-ArduinoLaunchConsole_0=Arduino
-ArduinoLaunchConsole_1=Start Arduino Console
-ArduinoLaunchConsole_2=Arduino Console Output
-ArduinoTargetPropertyPage_0=Serial Port:
-ArduinoTargetPropertyPage_1=No serial ports
-ArduinoTargetPropertyPage_2=Board type:
-NewArduinoProjectWizard_0=Creating Arduino Project
-NewArduinoTargetWizardPage_0=New Arduino Target settings
-NewArduinoTargetWizardPage_1=New Arduino Target
-NewArduinoTargetWizardPage_2=Target name:
-NewArduinoTargetWizardPage_3=
-NewArduinoTargetWizardPage_4=Serial port:
-NewArduinoTargetWizardPage_5=Board type:
-LibrariesPropertyPage_0=Name
-LibrariesPropertyPage_1=Description
-LibrariesPropertyPage_desc=Select libraries to use in your project and click OK or Apply. \
-If necessary the library will be installed. By adding libraries you agree to the licenses of those \
-libraries. For more information, see http://arduino.cc
-ArduinoPreferencePage_desc=Enter URLs for package_index.json files one per line.
-PlatformDetailsDialog_0=Platform:\u0020
-PlatformDetailsDialog_1=Supports boards:\n
-ArduinoTerminalSettingsPage_BoardName=Board Name:
-ArduinoTerminalSettingsPage_SerialPort=Serial Port:
-ArduinoTerminalSettingsPage_BaudRate=Baud Rate:
-ArduinoTerminalSettingsPage_DataSize=Data Size:
-ArduinoTerminalSettingsPage_Parity=Parity:
-ArduinoTerminalSettingsPage_StopBits=Stop Bits:
-ArduinoTerminalSettingsPage_UnknownPort=Unknown port
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/preferences/ArduinoPreferencePage.java b/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/preferences/ArduinoPreferencePage.java
deleted file mode 100644
index 1144c91cbec..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/preferences/ArduinoPreferencePage.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.arduino.ui.internal.preferences;
-
-import java.nio.file.Paths;
-
-import org.eclipse.cdt.arduino.core.internal.ArduinoPreferences;
-import org.eclipse.cdt.arduino.ui.internal.Messages;
-import org.eclipse.jface.preference.PreferencePage;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.DirectoryDialog;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferencePage;
-
-public class ArduinoPreferencePage extends PreferencePage implements IWorkbenchPreferencePage {
-
- private Text urlsText;
- private Text homeText;
-
- @Override
- public void init(IWorkbench workbench) {
- }
-
- @Override
- protected Control createContents(Composite parent) {
- Composite control = new Composite(parent, SWT.NONE);
- control.setLayout(new GridLayout());
-
- Composite homeComp = new Composite(control, SWT.NONE);
- homeComp.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
- homeComp.setLayout(new GridLayout(3, false));
-
- Label label = new Label(homeComp, SWT.NONE);
- label.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false));
- label.setText("Arduino home:");
-
- homeText = new Text(homeComp, SWT.BORDER);
- homeText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
- homeText.setText(ArduinoPreferences.getArduinoHome().toString());
-
- Button browse = new Button(homeComp, SWT.NONE);
- browse.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false));
- browse.setText("Browse...");
- browse.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- DirectoryDialog dialog = new DirectoryDialog(getShell());
- dialog.setMessage("Select directory for the Arduino SDKs and toolchains.");
- String dir = dialog.open();
- if (dir != null) {
- homeText.setText(dir);
- }
- }
- });
-
- Text desc = new Text(control, SWT.READ_ONLY | SWT.WRAP);
- GridData layoutData = new GridData(SWT.FILL, SWT.FILL, true, false);
- layoutData.widthHint = 500;
- desc.setLayoutData(layoutData);
- desc.setBackground(parent.getBackground());
- desc.setText(Messages.ArduinoPreferencePage_desc);
-
- urlsText = new Text(control, SWT.BORDER | SWT.MULTI);
- urlsText.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
- urlsText.setText(ArduinoPreferences.getBoardUrls());
-
- return control;
- }
-
- @Override
- public boolean performOk() {
- ArduinoPreferences.setBoardUrls(urlsText.getText());
- ArduinoPreferences.setArduinoHome(Paths.get(homeText.getText()));
- return true;
- }
-
- @Override
- protected void performDefaults() {
- String defaultHome = ArduinoPreferences.getDefaultArduinoHome();
- homeText.setText(defaultHome);
- ArduinoPreferences.setArduinoHome(Paths.get(defaultHome));
-
- String defaultBoardUrl = ArduinoPreferences.getDefaultBoardUrls();
- urlsText.setText(defaultBoardUrl);
- ArduinoPreferences.setBoardUrls(defaultBoardUrl);
-
- super.performDefaults();
- }
-
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/project/ArduinoPropertyTester.java b/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/project/ArduinoPropertyTester.java
deleted file mode 100644
index a6628eef2ad..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/project/ArduinoPropertyTester.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.cdt.arduino.ui.internal.project;
-
-import org.eclipse.cdt.arduino.core.internal.remote.ArduinoRemoteConnection;
-import org.eclipse.core.expressions.PropertyTester;
-import org.eclipse.remote.core.IRemoteConnection;
-
-public class ArduinoPropertyTester extends PropertyTester {
-
- @Override
- public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
- if (receiver instanceof IRemoteConnection) {
- IRemoteConnection remote = (IRemoteConnection) receiver;
- return remote.hasService(ArduinoRemoteConnection.class);
- } else {
- return false;
- }
- }
-
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/project/LibrariesPropertyPage.java b/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/project/LibrariesPropertyPage.java
deleted file mode 100644
index 6ffdb2ada2b..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/project/LibrariesPropertyPage.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015, 2016 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.cdt.arduino.ui.internal.project;
-
-import org.eclipse.cdt.arduino.core.internal.board.ArduinoManager;
-import org.eclipse.cdt.arduino.ui.internal.Activator;
-import org.eclipse.cdt.arduino.ui.internal.LibraryTree;
-import org.eclipse.cdt.arduino.ui.internal.Messages;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.dialogs.PropertyPage;
-
-public class LibrariesPropertyPage extends PropertyPage {
-
- private static ArduinoManager manager = Activator.getService(ArduinoManager.class);
-
- private LibraryTree libraryTree;
-
- @Override
- protected Control createContents(Composite parent) {
- Composite comp = new Composite(parent, SWT.NULL);
- comp.setLayout(new GridLayout());
-
- Text desc = new Text(comp, SWT.READ_ONLY | SWT.WRAP);
- GridData layoutData = new GridData(SWT.LEFT, SWT.FILL, true, false);
- layoutData.widthHint = 500;
- desc.setLayoutData(layoutData);
- desc.setBackground(parent.getBackground());
- desc.setText(Messages.LibrariesPropertyPage_desc);
-
- libraryTree = new LibraryTree(comp);
- libraryTree.setLayoutData(new GridData(GridData.FILL_BOTH));
-
- try {
- IProject project = getElement().getAdapter(IProject.class);
- libraryTree.setIncludePlatforms(true);
- libraryTree.setChecked(manager.getLibraries(project));
- libraryTree.getViewer().setInput(manager.getInstalledLibraries());
- } catch (CoreException e) {
- Activator.log(e);
- }
-
- return comp;
- }
-
- private IProject getProject() {
- return getElement().getAdapter(IProject.class);
- }
-
- @Override
- public boolean performOk() {
- try {
- manager.setLibraries(getProject(), libraryTree.getChecked());
- } catch (CoreException e) {
- Activator.log(e);
- }
- return true;
- }
-
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/project/NewArduinoCPPSketchWizard.java b/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/project/NewArduinoCPPSketchWizard.java
deleted file mode 100644
index 909e5d4f0c4..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/project/NewArduinoCPPSketchWizard.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.cdt.arduino.ui.internal.project;
-
-import org.eclipse.cdt.arduino.core.internal.ArduinoProjectGenerator;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.tools.templates.core.IGenerator;
-import org.eclipse.tools.templates.ui.TemplateWizard;
-import org.eclipse.ui.dialogs.WizardNewProjectCreationPage;
-
-public class NewArduinoCPPSketchWizard extends TemplateWizard {
-
- private WizardNewProjectCreationPage mainPage;
-
- @Override
- public void addPages() {
- mainPage = new WizardNewProjectCreationPage("basicNewProjectPage") { //$NON-NLS-1$
- @Override
- public void createControl(Composite parent) {
- super.createControl(parent);
- createWorkingSetGroup((Composite) getControl(), getSelection(),
- new String[] { "org.eclipse.ui.resourceWorkingSetPage" }); //$NON-NLS-1$
- Dialog.applyDialogFont(getControl());
- }
- };
- mainPage.setTitle("New Arduino Project"); //$NON-NLS-1$
- mainPage.setDescription("Specify properties of new Arduino project."); //$NON-NLS-1$
- this.addPage(mainPage);
- }
-
- @Override
- protected IGenerator getGenerator() {
- ArduinoProjectGenerator generator = new ArduinoProjectGenerator("templates/cppsketch/manifest.xml"); //$NON-NLS-1$
- generator.setProjectName(mainPage.getProjectName());
- if (!mainPage.useDefaults()) {
- generator.setLocationURI(mainPage.getLocationURI());
- }
- return generator;
- }
-
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/project/NewArduinoProjectWizard.java b/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/project/NewArduinoProjectWizard.java
deleted file mode 100644
index b0d8995cc33..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/project/NewArduinoProjectWizard.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.cdt.arduino.ui.internal.project;
-
-import org.eclipse.tools.templates.ui.NewWizard;
-
-public class NewArduinoProjectWizard extends NewWizard {
-
- private static final String ARDUINO_TAG_ID = "org.eclipse.cdt.arduino.ui.tag"; //$NON-NLS-1$
-
- public NewArduinoProjectWizard() {
- super(ARDUINO_TAG_ID);
- setWindowTitle("New Arduino C++ Project");
- setTemplateSelectionPageTitle("Templates for New Arduino C++ Project");
- }
-
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/remote/ArduinoRemoteServicesUI.java b/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/remote/ArduinoRemoteServicesUI.java
deleted file mode 100644
index 561e4d70742..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/remote/ArduinoRemoteServicesUI.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.cdt.arduino.ui.internal.remote;
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.cdt.arduino.ui.internal.Activator;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.operation.IRunnableContext;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.remote.core.IRemoteConnection;
-import org.eclipse.remote.core.IRemoteConnectionType;
-import org.eclipse.remote.core.IRemoteConnectionType.Service;
-import org.eclipse.remote.core.exception.RemoteConnectionException;
-import org.eclipse.remote.ui.AbstractRemoteUIConnectionService;
-import org.eclipse.remote.ui.IRemoteUIConnectionService;
-import org.eclipse.remote.ui.IRemoteUIConnectionWizard;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Shell;
-
-public class ArduinoRemoteServicesUI extends AbstractRemoteUIConnectionService {
-
- private final IRemoteConnectionType connectionType;
-
- public ArduinoRemoteServicesUI(IRemoteConnectionType connectionType) {
- this.connectionType = connectionType;
- }
-
- @Override
- public void openConnectionWithProgress(Shell shell, IRunnableContext context, final IRemoteConnection connection) {
- try {
- context.run(false, true, new IRunnableWithProgress() {
- @Override
- public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- try {
- connection.open(monitor);
- } catch (RemoteConnectionException e) {
- Activator.getDefault().getLog().log(e.getStatus());
- }
- }
- });
- } catch (InvocationTargetException | InterruptedException e) {
- Activator.getDefault().getLog()
- .log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, e.getLocalizedMessage(), e));
- }
- }
-
- @Override
- public IRemoteConnectionType getConnectionType() {
- return connectionType;
- }
-
- @Override
- public IRemoteUIConnectionWizard getConnectionWizard(Shell shell) {
- return new NewArduinoTargetWizard(shell, connectionType);
- }
-
- @Override
- public ILabelProvider getLabelProvider() {
- return new DefaultLabelProvider() {
- @Override
- public Image getImage(Object element) {
- return Activator.getDefault().getImageRegistry().get(Activator.IMG_CONNECTION_TYPE);
- }
- };
- }
-
- public static class Factory implements IRemoteConnectionType.Service.Factory {
- @SuppressWarnings("unchecked")
- @Override
- public <T extends Service> T getService(IRemoteConnectionType connectionType, Class<T> service) {
- if (IRemoteUIConnectionService.class.equals(service)) {
- return (T) new ArduinoRemoteServicesUI(connectionType);
- }
- return null;
- }
- }
-
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/remote/ArduinoTargetPropertyPage.java b/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/remote/ArduinoTargetPropertyPage.java
deleted file mode 100644
index 06be66eb8cf..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/remote/ArduinoTargetPropertyPage.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.cdt.arduino.ui.internal.remote;
-
-import java.io.IOException;
-import java.util.Collection;
-
-import org.eclipse.cdt.arduino.core.internal.board.ArduinoBoard;
-import org.eclipse.cdt.arduino.core.internal.board.ArduinoManager;
-import org.eclipse.cdt.arduino.core.internal.remote.ArduinoRemoteConnection;
-import org.eclipse.cdt.arduino.ui.internal.Activator;
-import org.eclipse.cdt.arduino.ui.internal.Messages;
-import org.eclipse.cdt.serial.SerialPort;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.remote.core.IRemoteConnection;
-import org.eclipse.remote.core.IRemoteConnectionWorkingCopy;
-import org.eclipse.remote.core.exception.RemoteConnectionException;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Combo;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.ui.dialogs.PropertyPage;
-
-public class ArduinoTargetPropertyPage extends PropertyPage {
-
- private Combo portSelector;
- private Combo boardSelector;
-
- private ArduinoBoard[] boards;
-
- @Override
- protected Control createContents(Composite parent) {
- Composite comp = new Composite(parent, SWT.NONE);
- comp.setLayout(new GridLayout(2, false));
-
- IRemoteConnection remoteConnection = getElement().getAdapter(IRemoteConnection.class);
- ArduinoRemoteConnection arduinoRemote = remoteConnection.getService(ArduinoRemoteConnection.class);
-
- Label portLabel = new Label(comp, SWT.NONE);
- portLabel.setText(Messages.ArduinoTargetPropertyPage_0);
-
- portSelector = new Combo(comp, SWT.NONE);
- portSelector.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
- String currentPort = arduinoRemote.getPortName();
- try {
- int i = 0;
- int portIdx = -1;
- String[] ports = SerialPort.list();
- for (String port : ports) {
- portSelector.add(port);
- if (port.equals(currentPort))
- portIdx = i;
- ++i;
- }
- if (portIdx >= 0)
- portSelector.select(portIdx);
- if (ports.length == 0)
- portSelector.setText(Messages.ArduinoTargetPropertyPage_1);
- } catch (IOException e) {
- Activator.log(e);
- }
-
- Label boardLabel = new Label(comp, SWT.NONE);
- boardLabel.setText(Messages.ArduinoTargetPropertyPage_2);
-
- boardSelector = new Combo(comp, SWT.READ_ONLY);
- boardSelector.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
- try {
- ArduinoBoard currentBoard = arduinoRemote.getBoard();
- Collection<ArduinoBoard> boardList = Activator.getService(ArduinoManager.class).getInstalledBoards();
- boards = new ArduinoBoard[boardList.size()];
- int i = 0;
- int boardSel = 0;
- for (ArduinoBoard board : boardList) {
- boards[i] = board;
- boardSelector.add(board.getName());
- if (board.equals(currentBoard)) {
- boardSel = i;
- }
- i++;
- }
- boardSelector.select(boardSel);
- } catch (CoreException e) {
- Activator.log(e);
- }
-
- return comp;
- }
-
- @Override
- public boolean performOk() {
- IRemoteConnection remoteConnection = getElement().getAdapter(IRemoteConnection.class);
- IRemoteConnectionWorkingCopy workingCopy = remoteConnection.getWorkingCopy();
-
- ArduinoBoard board = boards[boardSelector.getSelectionIndex()];
- ArduinoRemoteConnection.setBoardId(workingCopy, board);
-
- int idx = portSelector.getSelectionIndex();
- if (idx >= 0) {
- ArduinoRemoteConnection.setPortName(workingCopy, portSelector.getItem(idx));
- }
-
- try {
- workingCopy.save();
- } catch (RemoteConnectionException e) {
- Activator.getDefault().getLog().log(e.getStatus());
- }
- return true;
- }
-
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/remote/BoardPropertyControl.java b/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/remote/BoardPropertyControl.java
deleted file mode 100644
index a8953940510..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/remote/BoardPropertyControl.java
+++ /dev/null
@@ -1,286 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.cdt.arduino.ui.internal.remote;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Map.Entry;
-
-import org.eclipse.cdt.arduino.core.internal.HierarchicalProperties;
-import org.eclipse.cdt.arduino.core.internal.board.ArduinoBoard;
-import org.eclipse.cdt.arduino.core.internal.board.ArduinoManager;
-import org.eclipse.cdt.arduino.core.internal.remote.ArduinoRemoteConnection;
-import org.eclipse.cdt.arduino.ui.internal.Activator;
-import org.eclipse.cdt.arduino.ui.internal.Messages;
-import org.eclipse.cdt.serial.SerialPort;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.remote.core.IRemoteConnectionWorkingCopy;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Combo;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Label;
-
-public class BoardPropertyControl extends Composite {
-
- private Combo portCombo;
- private String[] portNames;
- private String portName;
-
- private Combo boardCombo;
- private ArduinoBoard[] boards;
- private ArduinoBoard board;
-
- private List<SelectionListener> listeners = Collections.synchronizedList(new ArrayList<SelectionListener>());
- private List<Control> menuControls = new ArrayList<>();
-
- private Label programmerLabel;
- private Combo programmerCombo;
-
- public BoardPropertyControl(Composite parent, int style) {
- super(parent, style);
- setLayout(new GridLayout(2, false));
-
- Label portLabel = new Label(this, SWT.NONE);
- portLabel.setText(Messages.NewArduinoTargetWizardPage_4);
-
- portCombo = new Combo(this, SWT.NONE);
- portCombo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- try {
- portNames = SerialPort.list();
- } catch (IOException e) {
- portNames = new String[0];
- Activator.log(e);
- }
- for (String portName : portNames) {
- portCombo.add(portName);
- }
- if (portNames.length > 0) {
- portCombo.select(0);
- portName = portNames[0];
- } else {
- portName = ""; //$NON-NLS-1$
- }
- portCombo.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- portName = portCombo.getText();
- fireSelection();
- }
- });
-
- Label boardLabel = new Label(this, SWT.NONE);
- boardLabel.setText(Messages.ArduinoTargetPropertyPage_2);
-
- boardCombo = new Combo(this, SWT.READ_ONLY);
- boardCombo.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
- try {
- List<ArduinoBoard> boardList = new ArrayList<>(
- Activator.getService(ArduinoManager.class).getInstalledBoards());
- Collections.sort(boardList, new Comparator<ArduinoBoard>() {
- @Override
- public int compare(ArduinoBoard o1, ArduinoBoard o2) {
- return o1.getName().compareTo(o2.getName());
- }
- });
- boards = boardList.toArray(new ArduinoBoard[boardList.size()]);
-
- for (ArduinoBoard board : boards) {
- boardCombo.add(board.getName());
- }
-
- boardCombo.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- boardChanged();
- fireSelection();
- }
- });
-
- if (boards.length > 0) {
- // TODO use preference to remember the last selected board
- boardCombo.select(0);
- board = boards[0];
- updateBoardMenu();
- }
- } catch (CoreException e) {
- Activator.log(e);
- }
- }
-
- public String getPortName() {
- return portName;
- }
-
- public ArduinoBoard getSelectedBoard() {
- return board;
- }
-
- public void addSelectionListener(SelectionListener listener) {
- listeners.add(listener);
- }
-
- private void updateBoardMenu() {
- HierarchicalProperties menus = board.getMenus();
- if (menus != null) {
- for (Entry<String, HierarchicalProperties> menuEntry : menus.getChildren().entrySet()) {
- Label label = new Label(this, SWT.NONE);
- label.setText(board.getPlatform().getMenuText(menuEntry.getKey()) + ':');
- label.setData(menuEntry.getKey());
- menuControls.add(label);
-
- Combo combo = new Combo(this, SWT.READ_ONLY);
- combo.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
- menuControls.add(combo);
-
- List<String> ids = new ArrayList<>();
- for (Entry<String, HierarchicalProperties> valueEntry : menuEntry.getValue().getChildren().entrySet()) {
- String value = valueEntry.getValue().getValue();
- if (value != null) {
- combo.add(value);
- ids.add(valueEntry.getKey());
- }
- }
- combo.setData(ids);
- combo.select(0);
- }
- }
-
- try {
- HierarchicalProperties programmers = board.getPlatform().getProgrammers();
- if (programmers != null && programmers.getChildren() != null) {
- programmerLabel = new Label(this, SWT.NONE);
- programmerLabel.setText("Programmer:"); //$NON-NLS-1$
-
- programmerCombo = new Combo(this, SWT.READ_ONLY);
- programmerCombo.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
-
- List<String> ids = new ArrayList<>();
- for (Entry<String, HierarchicalProperties> programmer : programmers.getChildren().entrySet()) {
- ids.add(programmer.getKey());
- String name = programmer.getValue().getChild("name").getValue(); //$NON-NLS-1$
- programmerCombo.add(name);
- }
- programmerCombo.setData(ids);
- programmerCombo.select(0);
- }
- } catch (CoreException e) {
- Activator.log(e);
- }
- }
-
- private void boardChanged() {
- int index = boardCombo.getSelectionIndex();
- ArduinoBoard newBoard = index < 0 ? null : boards[index];
- if (newBoard != board) {
- // Clear out old menus
- for (Control control : menuControls) {
- control.dispose();
- }
- menuControls.clear();
- if (programmerLabel != null) {
- programmerLabel.dispose();
- programmerCombo.dispose();
- }
-
- board = newBoard;
- updateBoardMenu();
-
- layout();
- getShell().pack();
- redraw();
- }
- }
-
- private void fireSelection() {
- for (SelectionListener listener : listeners) {
- Event event = new Event();
- event.widget = this;
- listener.widgetSelected(new SelectionEvent(event));
- }
- }
-
- public void apply(IRemoteConnectionWorkingCopy workingCopy) {
- ArduinoRemoteConnection.setBoardId(workingCopy, board);
- ArduinoRemoteConnection.setPortName(workingCopy, portName);
-
- String key = null;
- for (Control control : menuControls) {
- if (control instanceof Label) {
- key = (String) control.getData();
- } else if (control instanceof Combo) {
- Combo combo = (Combo) control;
- @SuppressWarnings("unchecked")
- String value = ((List<String>) combo.getData()).get(combo.getSelectionIndex());
-
- if (key != null) {
- ArduinoRemoteConnection.setMenuValue(workingCopy, key, value);
- }
- }
- }
-
- if (programmerCombo != null && !programmerCombo.isDisposed()) {
- @SuppressWarnings("unchecked")
- String programmer = ((List<String>) programmerCombo.getData()).get(programmerCombo.getSelectionIndex());
- ArduinoRemoteConnection.setProgrammer(workingCopy, programmer);
- }
- }
-
- public void updateFromOriginal(ArduinoRemoteConnection arduinoService) throws CoreException {
- // Set and select the portname
- portCombo.setText(arduinoService.getPortName());
- portName = arduinoService.getPortName();
-
- // Set and select the board
- boardCombo.setText(arduinoService.getBoard().getName());
- boardChanged();
-
- // Lock changing of board
- boardCombo.setEnabled(false);
-
- // Set the programmer
- if (!arduinoService.getProgrammer().isEmpty() && programmerCombo != null && !programmerCombo.isDisposed()) {
- programmerCombo.setText(board.getPlatform().getProgrammers().getChild(arduinoService.getProgrammer())
- .getChild("name").getValue()); //$NON-NLS-1$
- }
-
- // Set all properties based on the displayed Controls.
- String key = null;
- // Loop over all controls. Labels and corresponding combos are saved in order
- for (Control control : menuControls) {
- if (control instanceof Label) {
- // the label is the key
- key = (String) control.getData();
- } else if (control instanceof Combo) {
- if (key != null && !arduinoService.getMenuValue(key).isEmpty()) {
- String selectableValue = board.getMenus().getChild(key).getChild(arduinoService.getMenuValue(key))
- .getValue();
- ((Combo) control).setText(selectableValue);
- }
- // reset key
- key = null;
- } else {
- // unexpected order - reset key
- key = null;
- }
- }
- }
-
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/remote/NewArduinoTargetWizard.java b/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/remote/NewArduinoTargetWizard.java
deleted file mode 100644
index 94f252fa944..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/remote/NewArduinoTargetWizard.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.cdt.arduino.ui.internal.remote;
-
-import java.util.Set;
-
-import org.eclipse.cdt.arduino.core.internal.remote.ArduinoRemoteConnection;
-import org.eclipse.cdt.arduino.ui.internal.Activator;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.remote.core.IRemoteConnectionType;
-import org.eclipse.remote.core.IRemoteConnectionWorkingCopy;
-import org.eclipse.remote.core.IRemoteServicesManager;
-import org.eclipse.remote.core.exception.RemoteConnectionException;
-import org.eclipse.remote.ui.IRemoteUIConnectionWizard;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.INewWizard;
-import org.eclipse.ui.IWorkbench;
-
-public class NewArduinoTargetWizard extends Wizard implements IRemoteUIConnectionWizard, INewWizard {
-
- private NewArduinoTargetWizardPage page;
- private IRemoteConnectionWorkingCopy workingCopy;
- private boolean isNewWizard;
- private Shell shell;
- private IRemoteConnectionType connectionType;
-
- public NewArduinoTargetWizard(Shell shell, IRemoteConnectionType connectionType) {
- this.shell = shell;
- this.connectionType = connectionType;
- }
-
- public NewArduinoTargetWizard() {
- this.connectionType = Activator.getService(IRemoteServicesManager.class)
- .getConnectionType(ArduinoRemoteConnection.TYPE_ID);
- }
-
- @Override
- public void init(IWorkbench workbench, IStructuredSelection selection) {
- isNewWizard = true;
- }
-
- @Override
- public void addPages() {
- page = new NewArduinoTargetWizardPage();
- // Editing an existing Connection
- if (workingCopy != null) {
- page.setWorkingCopy(workingCopy);
- }
- addPage(page);
- }
-
- @Override
- public boolean performFinish() {
- if (getConnection() == null) {
- return false;
- }
-
- page.performFinish(workingCopy);
-
- if (isNewWizard) {
- // if called as a new wizard, we need to do the save
- try {
- workingCopy.save();
- } catch (RemoteConnectionException e) {
- Activator.log(e);
- return false;
- }
- }
- return true;
- }
-
- @Override
- public IRemoteConnectionWorkingCopy open() {
- WizardDialog dialog = new WizardDialog(shell, this);
- dialog.setBlockOnOpen(true);
- if (dialog.open() == WizardDialog.OK) {
- return getConnection();
- }
- return null;
- }
-
- @Override
- public IRemoteConnectionWorkingCopy getConnection() {
- if (workingCopy == null) {
- try {
- workingCopy = connectionType.newConnection(page.getConnectionName());
- } catch (RemoteConnectionException e) {
- Activator.getDefault().getLog().log(e.getStatus());
- return null;
- }
- }
-
- return workingCopy;
- }
-
- @Override
- public void setConnection(IRemoteConnectionWorkingCopy connection) {
- workingCopy = connection;
- }
-
- @Override
- public void setConnectionName(String name) {
- // TODO Auto-generated method stub
- }
-
- @Override
- public void setInvalidConnectionNames(Set<String> names) {
- // TODO Auto-generated method stub
- }
-
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/remote/NewArduinoTargetWizardPage.java b/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/remote/NewArduinoTargetWizardPage.java
deleted file mode 100644
index 3491449ae7e..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/remote/NewArduinoTargetWizardPage.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.cdt.arduino.ui.internal.remote;
-
-import org.eclipse.cdt.arduino.core.internal.remote.ArduinoRemoteConnection;
-import org.eclipse.cdt.arduino.ui.internal.Activator;
-import org.eclipse.cdt.arduino.ui.internal.Messages;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jface.wizard.WizardPage;
-import org.eclipse.remote.core.IRemoteConnectionWorkingCopy;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.KeyListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Text;
-
-public class NewArduinoTargetWizardPage extends WizardPage {
-
- private String connectionName;
- private Text nameText;
- private IRemoteConnectionWorkingCopy workingCopy;
-
- BoardPropertyControl boardControl;
-
- public NewArduinoTargetWizardPage() {
- super("NewArduinoTargetPage"); //$NON-NLS-1$
- setDescription(Messages.NewArduinoTargetWizardPage_0);
- setTitle(Messages.NewArduinoTargetWizardPage_1);
- }
-
- @Override
- public void createControl(Composite parent) {
- Composite comp = new Composite(parent, SWT.NONE);
- comp.setLayout(new GridLayout());
-
- Composite nameComp = new Composite(comp, SWT.NONE);
- nameComp.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
- nameComp.setLayout(new GridLayout(2, false));
-
- Label nameLabel = new Label(nameComp, SWT.NONE);
- nameLabel.setText(Messages.NewArduinoTargetWizardPage_2);
-
- nameText = new Text(nameComp, SWT.BORDER | SWT.SINGLE);
- nameText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- nameText.setText(Messages.NewArduinoTargetWizardPage_3);
- nameText.addKeyListener(new KeyListener() {
- @Override
- public void keyReleased(KeyEvent e) {
- connectionName = nameText.getText();
- updateStatus();
- }
-
- @Override
- public void keyPressed(KeyEvent e) {
- }
- });
-
- boardControl = new BoardPropertyControl(comp, SWT.NONE);
- boardControl.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
- boardControl.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- updateStatus();
- }
- });
-
- try {
- updateFromWorkingCopy();
- } catch (CoreException e) {
- Activator.log(e);
- }
-
- setControl(comp);
- updateStatus();
- }
-
- private void updateStatus() {
- setPageComplete(connectionName != null && !connectionName.isEmpty() && boardControl.getPortName() != null
- && boardControl.getSelectedBoard() != null);
- }
-
- public void performFinish(IRemoteConnectionWorkingCopy workingCopy) {
- boardControl.apply(workingCopy);
- }
-
- public String getConnectionName() {
- return connectionName;
- }
-
- public void setWorkingCopy(IRemoteConnectionWorkingCopy workingCopy) {
- this.workingCopy = workingCopy;
- }
-
- private void updateFromWorkingCopy() throws CoreException {
- if (null == workingCopy || null == workingCopy.getOriginal())
- return;
-
- ArduinoRemoteConnection arduinoService = workingCopy.getService(ArduinoRemoteConnection.class);
-
- if (null == arduinoService)
- return;
-
- // Set the originalName and lock control for it
- nameText.setText(workingCopy.getOriginal().getName());
- nameText.setEnabled(false);
- connectionName = workingCopy.getOriginal().getName();
-
- // Set all other fields with existing data
- boardControl.updateFromOriginal(arduinoService);
- }
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/terminal/ArduinoTerminalConfigPanel.java b/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/terminal/ArduinoTerminalConfigPanel.java
deleted file mode 100644
index 2e894fc37d4..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/terminal/ArduinoTerminalConfigPanel.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.cdt.arduino.ui.internal.terminal;
-
-import java.util.Map;
-
-import org.eclipse.cdt.serial.BaudRate;
-import org.eclipse.cdt.serial.ByteSize;
-import org.eclipse.cdt.serial.Parity;
-import org.eclipse.cdt.serial.StopBits;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.tm.terminal.connector.cdtserial.connector.SerialSettings;
-import org.eclipse.tm.terminal.view.core.interfaces.constants.ITerminalsConnectorConstants;
-import org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanelContainer;
-import org.eclipse.tm.terminal.view.ui.panels.AbstractExtendedConfigurationPanel;
-
-public class ArduinoTerminalConfigPanel extends AbstractExtendedConfigurationPanel {
-
- private ArduinoTerminalSettings settings;
- private ArduinoTerminalSettingsPage page;
-
- public ArduinoTerminalConfigPanel(IConfigurationPanelContainer container) {
- super(container);
- }
-
- @Override
- public void setupPanel(Composite parent) {
- Composite panel = new Composite(parent, SWT.NONE);
- panel.setLayout(new GridLayout());
- GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);
- panel.setLayoutData(data);
-
- settings = new ArduinoTerminalSettings();
- page = new ArduinoTerminalSettingsPage(settings, this);
- page.createControl(panel);
-
- createEncodingUI(panel, true);
-
- setControl(panel);
- }
-
- @Override
- public void extractData(Map<String, Object> data) {
- if (data == null) {
- return;
- }
-
- page.saveSettings();
- data.put(ArduinoTerminalSettings.BOARD_ATTR, settings.getBoardName());
- data.put(SerialSettings.PORT_NAME_ATTR, settings.getPortName());
- data.put(SerialSettings.BAUD_RATE_ATTR, settings.getBaudRate());
- data.put(SerialSettings.BYTE_SIZE_ATTR, settings.getByteSize());
- data.put(SerialSettings.PARITY_ATTR, settings.getParity());
- data.put(SerialSettings.STOP_BITS_ATTR, settings.getStopBits());
-
- if (getEncoding() != null) {
- data.put(ITerminalsConnectorConstants.PROP_ENCODING, getEncoding());
- }
- }
-
- @Override
- public void setupData(Map<String, Object> data) {
- if (data == null) {
- return;
- }
-
- settings.setBoardName((String) data.get(ArduinoTerminalSettings.BOARD_ATTR));
- settings.setPortName((String) data.get(SerialSettings.PORT_NAME_ATTR));
- settings.setBaudRate((BaudRate) data.get(SerialSettings.BAUD_RATE_ATTR));
- settings.setByteSize((ByteSize) data.get(SerialSettings.BYTE_SIZE_ATTR));
- settings.setParity((Parity) data.get(SerialSettings.PARITY_ATTR));
- settings.setStopBits((StopBits) data.get(SerialSettings.STOP_BITS_ATTR));
-
- String encoding = (String) data.get(ITerminalsConnectorConstants.PROP_ENCODING);
- if (encoding != null) {
- setEncoding(encoding);
- }
- }
-
- @Override
- protected void saveSettingsForHost(boolean add) {
- }
-
- @Override
- protected void fillSettingsForHost(String host) {
- }
-
- @Override
- protected String getHostFromSettings() {
- if (page != null) {
- page.saveSettings();
- return settings.getPortName();
- }
- return null;
- }
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/terminal/ArduinoTerminalLauncher.java b/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/terminal/ArduinoTerminalLauncher.java
deleted file mode 100644
index e3d60923e47..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/terminal/ArduinoTerminalLauncher.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.cdt.arduino.ui.internal.terminal;
-
-import org.eclipse.tm.terminal.connector.cdtserial.launcher.SerialLauncherDelegate;
-import org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanel;
-import org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanelContainer;
-
-public class ArduinoTerminalLauncher extends SerialLauncherDelegate {
-
- @Override
- public IConfigurationPanel getPanel(IConfigurationPanelContainer container) {
- return new ArduinoTerminalConfigPanel(container);
- }
-
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/terminal/ArduinoTerminalSettings.java b/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/terminal/ArduinoTerminalSettings.java
deleted file mode 100644
index 556016f2d58..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/terminal/ArduinoTerminalSettings.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package org.eclipse.cdt.arduino.ui.internal.terminal;
-
-import org.eclipse.tm.internal.terminal.provisional.api.ISettingsStore;
-import org.eclipse.tm.terminal.connector.cdtserial.connector.SerialSettings;
-
-public class ArduinoTerminalSettings extends SerialSettings {
-
- public static final String BOARD_ATTR = "arduino.board"; //$NON-NLS-1$
-
- private String boardName;
-
- @Override
- public void load(ISettingsStore store) {
- super.load(store);
-
- boardName = store.get(BOARD_ATTR);
- }
-
- @Override
- public void save(ISettingsStore store) {
- super.save(store);
-
- store.put(BOARD_ATTR, boardName);
- }
-
- public String getBoardName() {
- return boardName;
- }
-
- public void setBoardName(String boardName) {
- this.boardName = boardName;
- }
-
-}
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/terminal/ArduinoTerminalSettingsPage.java b/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/terminal/ArduinoTerminalSettingsPage.java
deleted file mode 100644
index fe745de4602..00000000000
--- a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/terminal/ArduinoTerminalSettingsPage.java
+++ /dev/null
@@ -1,293 +0,0 @@
-package org.eclipse.cdt.arduino.ui.internal.terminal;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import org.eclipse.cdt.arduino.core.internal.remote.ArduinoRemoteConnection;
-import org.eclipse.cdt.arduino.ui.internal.Activator;
-import org.eclipse.cdt.arduino.ui.internal.Messages;
-import org.eclipse.cdt.serial.BaudRate;
-import org.eclipse.cdt.serial.ByteSize;
-import org.eclipse.cdt.serial.Parity;
-import org.eclipse.cdt.serial.StopBits;
-import org.eclipse.jface.dialogs.DialogSettings;
-import org.eclipse.jface.dialogs.IDialogSettings;
-import org.eclipse.remote.core.IRemoteConnection;
-import org.eclipse.remote.core.IRemoteConnectionType;
-import org.eclipse.remote.core.IRemoteServicesManager;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Combo;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.tm.internal.terminal.provisional.api.AbstractSettingsPage;
-import org.eclipse.tm.terminal.connector.cdtserial.connector.SerialSettings;
-import org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanel;
-import org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanelContainer;
-
-public class ArduinoTerminalSettingsPage extends AbstractSettingsPage {
-
- private final ArduinoTerminalSettings settings;
- private final IConfigurationPanel panel;
- private final IDialogSettings dialogSettings;
-
- private Combo boardCombo;
- private Label portNameLabel;
- private Combo baudRateCombo;
- private Combo byteSizeCombo;
- private Combo parityCombo;
- private Combo stopBitsCombo;
-
- private String boardName;
- private String portName;
- private BaudRate baudRate;
- private ByteSize byteSize;
- private Parity parity;
- private StopBits stopBits;
-
- private IRemoteConnectionType arduinoType;
-
- public ArduinoTerminalSettingsPage(ArduinoTerminalSettings settings, IConfigurationPanel panel) {
- this.settings = settings;
- this.panel = panel;
- setHasControlDecoration(true);
-
- dialogSettings = DialogSettings.getOrCreateSection(Activator.getDefault().getDialogSettings(),
- this.getClass().getSimpleName());
-
- boardName = dialogSettings.get(ArduinoTerminalSettings.BOARD_ATTR);
- portName = dialogSettings.get(SerialSettings.PORT_NAME_ATTR);
-
- String baudRateStr = dialogSettings.get(SerialSettings.BAUD_RATE_ATTR);
- if (baudRateStr == null || baudRateStr.isEmpty()) {
- baudRate = BaudRate.getDefault();
- } else {
- String[] rates = BaudRate.getStrings();
- for (int i = 0; i < rates.length; ++i) {
- if (baudRateStr.equals(rates[i])) {
- baudRate = BaudRate.fromStringIndex(i);
- break;
- }
- }
- }
-
- String byteSizeStr = dialogSettings.get(SerialSettings.BYTE_SIZE_ATTR);
- if (byteSizeStr == null || byteSizeStr.isEmpty()) {
- byteSize = ByteSize.getDefault();
- } else {
- String[] sizes = ByteSize.getStrings();
- for (int i = 0; i < sizes.length; ++i) {
- if (byteSizeStr.equals(sizes[i])) {
- byteSize = ByteSize.fromStringIndex(i);
- break;
- }
- }
- }
-
- String parityStr = dialogSettings.get(SerialSettings.PARITY_ATTR);
- if (parityStr == null || parityStr.isEmpty()) {
- parity = Parity.getDefault();
- } else {
- String[] parities = Parity.getStrings();
- for (int i = 0; i < parities.length; ++i) {
- if (parityStr.equals(parities[i])) {
- parity = Parity.fromStringIndex(i);
- break;
- }
- }
- }
-
- String stopBitsStr = dialogSettings.get(SerialSettings.STOP_BITS_ATTR);
- if (stopBitsStr == null || stopBitsStr.isEmpty()) {
- stopBits = StopBits.getDefault();
- } else {
- String[] bits = StopBits.getStrings();
- for (int i = 0; i < bits.length; ++i) {
- if (stopBitsStr.equals(bits[i])) {
- stopBits = StopBits.fromStringIndex(i);
- break;
- }
- }
- }
-
- }
-
- @Override
- public void createControl(Composite parent) {
- Composite comp = new Composite(parent, SWT.NONE);
- GridLayout gridLayout = new GridLayout(2, false);
- gridLayout.marginWidth = gridLayout.marginHeight = 0;
- GridData gridData = new GridData(GridData.FILL_HORIZONTAL);
- comp.setLayout(gridLayout);
- comp.setLayoutData(gridData);
-
- Label boardLabel = new Label(comp, SWT.NONE);
- boardLabel.setText(Messages.ArduinoTerminalSettingsPage_BoardName);
-
- boardCombo = new Combo(comp, SWT.READ_ONLY);
- boardCombo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
- IRemoteServicesManager manager = Activator.getService(IRemoteServicesManager.class);
- arduinoType = manager.getConnectionType(ArduinoRemoteConnection.TYPE_ID);
- List<IRemoteConnection> connections = new ArrayList<>(arduinoType.getConnections());
- Collections.sort(connections, (o1, o2) -> {
- return o1.getName().compareToIgnoreCase(o2.getName());
- });
- for (IRemoteConnection connection : connections) {
- boardCombo.add(connection.getName());
- }
- boardCombo.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- validate();
- updatePortLabel();
- }
- });
-
- Label portLabel = new Label(comp, SWT.NONE);
- portLabel.setText(Messages.ArduinoTerminalSettingsPage_SerialPort);
-
- portNameLabel = new Label(comp, SWT.NONE);
- portNameLabel.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
- Label baudRateLabel = new Label(comp, SWT.NONE);
- baudRateLabel.setText(Messages.ArduinoTerminalSettingsPage_BaudRate);
-
- baudRateCombo = new Combo(comp, SWT.READ_ONLY);
- baudRateCombo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- for (String baudRateStr : BaudRate.getStrings()) {
- baudRateCombo.add(baudRateStr);
- }
-
- Label byteSizeLabel = new Label(comp, SWT.NONE);
- byteSizeLabel.setText(Messages.ArduinoTerminalSettingsPage_DataSize);
-
- byteSizeCombo = new Combo(comp, SWT.READ_ONLY);
- byteSizeCombo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- for (String byteSizeStr : ByteSize.getStrings()) {
- byteSizeCombo.add(byteSizeStr);
- }
-
- Label parityLabel = new Label(comp, SWT.NONE);
- parityLabel.setText(Messages.ArduinoTerminalSettingsPage_Parity);
-
- parityCombo = new Combo(comp, SWT.READ_ONLY);
- parityCombo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- for (String parityStr : Parity.getStrings()) {
- parityCombo.add(parityStr);
- }
-
- Label stopBitsLabel = new Label(comp, SWT.NONE);
- stopBitsLabel.setText(Messages.ArduinoTerminalSettingsPage_StopBits);
-
- stopBitsCombo = new Combo(comp, SWT.READ_ONLY);
- stopBitsCombo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- for (String stopBitsStr : StopBits.getStrings()) {
- stopBitsCombo.add(stopBitsStr);
- }
-
- loadSettings();
- }
-
- void validate() {
- IConfigurationPanelContainer container = panel.getContainer();
- container.validate();
- }
-
- void updatePortLabel() {
- if (boardCombo.getSelectionIndex() < 0) {
- return;
- }
-
- String boardName = boardCombo.getItem(boardCombo.getSelectionIndex());
- IRemoteConnection connection = arduinoType.getConnection(boardName);
- if (connection != null) {
- ArduinoRemoteConnection board = connection.getService(ArduinoRemoteConnection.class);
- portName = board.getPortName();
- portNameLabel.setText(portName);
- } else {
- portName = null;
- portNameLabel.setText(Messages.ArduinoTerminalSettingsPage_UnknownPort);
- }
- }
-
- @Override
- public void loadSettings() {
- String boardName = settings.getBoardName();
- if (boardName == null || boardName.isEmpty()) {
- boardName = this.boardName;
- }
- if (boardName != null && !boardName.isEmpty()) {
- int i = 0;
- for (String name : boardCombo.getItems()) {
- if (boardName.equals(name)) {
- boardCombo.select(i);
- break;
- }
- i++;
- }
- } else if (boardCombo.getItemCount() > 0) {
- boardCombo.select(0);
- }
-
- updatePortLabel();
-
- BaudRate baudRate = settings.getBaudRate();
- if (baudRate == null) {
- baudRate = this.baudRate;
- }
- baudRateCombo.select(BaudRate.getStringIndex(baudRate));
-
- ByteSize byteSize = settings.getByteSize();
- if (byteSize == null) {
- byteSize = this.byteSize;
- }
- byteSizeCombo.select(ByteSize.getStringIndex(byteSize));
-
- Parity parity = settings.getParity();
- if (parity == null) {
- parity = this.parity;
- }
- parityCombo.select(Parity.getStringIndex(parity));
-
- StopBits stopBits = settings.getStopBits();
- if (stopBits == null) {
- stopBits = this.stopBits;
- }
- stopBitsCombo.select(StopBits.getStringIndex(stopBits));
- }
-
- @Override
- public void saveSettings() {
- if (boardCombo.getSelectionIndex() < 0) {
- return;
- }
-
- settings.setBoardName(boardCombo.getItem(boardCombo.getSelectionIndex()));
- settings.setPortName(portNameLabel.getText());
- settings.setBaudRate(BaudRate.fromStringIndex(baudRateCombo.getSelectionIndex()));
- settings.setByteSize(ByteSize.fromStringIndex(byteSizeCombo.getSelectionIndex()));
- settings.setParity(Parity.fromStringIndex(parityCombo.getSelectionIndex()));
- settings.setStopBits(StopBits.fromStringIndex(stopBitsCombo.getSelectionIndex()));
-
- dialogSettings.put(ArduinoTerminalSettings.BOARD_ATTR, boardCombo.getItem(boardCombo.getSelectionIndex()));
- dialogSettings.put(SerialSettings.PORT_NAME_ATTR, portNameLabel.getText());
- dialogSettings.put(SerialSettings.BAUD_RATE_ATTR, BaudRate.getStrings()[baudRateCombo.getSelectionIndex()]);
- dialogSettings.put(SerialSettings.BYTE_SIZE_ATTR, ByteSize.getStrings()[byteSizeCombo.getSelectionIndex()]);
- dialogSettings.put(SerialSettings.PARITY_ATTR, Parity.getStrings()[parityCombo.getSelectionIndex()]);
- dialogSettings.put(SerialSettings.STOP_BITS_ATTR, StopBits.getStrings()[stopBitsCombo.getSelectionIndex()]);
- }
-
- @Override
- public boolean validateSettings() {
- if (boardCombo.getSelectionIndex() < 0 && boardCombo.getText().isEmpty()) {
- return false;
- }
- return true;
- }
-
-}
diff --git a/toolchains/arduino/pom.xml b/toolchains/arduino/pom.xml
deleted file mode 100644
index f08c3902a1c..00000000000
--- a/toolchains/arduino/pom.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
- xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <groupId>org.eclipse.cdt</groupId>
- <artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
- <relativePath>../../pom.xml</relativePath>
- </parent>
-
- <artifactId>org.eclipse.cdt.arduino-parent</artifactId>
- <packaging>pom</packaging>
-</project>
diff --git a/tools.templates/org.eclipse.tools.templates.core/.classpath b/tools.templates/org.eclipse.tools.templates.core/.classpath
new file mode 100644
index 00000000000..e801ebfb468
--- /dev/null
+++ b/tools.templates/org.eclipse.tools.templates.core/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/tools.templates/org.eclipse.tools.templates.core/.project b/tools.templates/org.eclipse.tools.templates.core/.project
new file mode 100644
index 00000000000..a54f42b5667
--- /dev/null
+++ b/tools.templates/org.eclipse.tools.templates.core/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.tools.templates.core</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+ </natures>
+</projectDescription>
diff --git a/tools.templates/org.eclipse.tools.templates.core/.settings/org.eclipse.core.resources.prefs b/tools.templates/org.eclipse.tools.templates.core/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/tools.templates/org.eclipse.tools.templates.core/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/tools.templates/org.eclipse.tools.templates.core/.settings/org.eclipse.jdt.core.prefs b/tools.templates/org.eclipse.tools.templates.core/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..e3a8104f9ca
--- /dev/null
+++ b/tools.templates/org.eclipse.tools.templates.core/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/tools.templates/org.eclipse.tools.templates.core/.settings/org.eclipse.jdt.launching.prefs b/tools.templates/org.eclipse.tools.templates.core/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 00000000000..f8a131b56e0
--- /dev/null
+++ b/tools.templates/org.eclipse.tools.templates.core/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_COMPILER_COMPLIANCE_DOES_NOT_MATCH_JRE=warning
+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=warning
diff --git a/tools.templates/org.eclipse.tools.templates.core/.settings/org.eclipse.jdt.ui.prefs b/tools.templates/org.eclipse.tools.templates.core/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/tools.templates/org.eclipse.tools.templates.core/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/tools.templates/org.eclipse.tools.templates.core/.settings/org.eclipse.pde.api.tools.prefs b/tools.templates/org.eclipse.tools.templates.core/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 00000000000..ec9fbf321d0
--- /dev/null
+++ b/tools.templates/org.eclipse.tools.templates.core/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,184 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITH_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_FIELD=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERCLASS_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_CHANGED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENTS=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETERS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Error
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Warning
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+MISSING_EE_DESCRIPTIONS=Warning
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=false
+changed_execution_env=Error
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+incompatible_api_component_version_report_major_without_breaking_change=Warning
+incompatible_api_component_version_report_minor_without_api_change=Warning
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/tools.templates/org.eclipse.tools.templates.core/.settings/org.eclipse.pde.prefs b/tools.templates/org.eclipse.tools.templates.core/.settings/org.eclipse.pde.prefs
new file mode 100644
index 00000000000..d2dc703ba9e
--- /dev/null
+++ b/tools.templates/org.eclipse.tools.templates.core/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,35 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=2
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=2
+compilers.p.missing-version-export-package=2
+compilers.p.missing-version-import-package=2
+compilers.p.missing-version-require-bundle=2
+compilers.p.no-required-att=0
+compilers.p.no.automatic.module=1
+compilers.p.not-externalized-att=1
+compilers.p.service.component.without.lazyactivation=1
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/tools.templates/org.eclipse.tools.templates.core/META-INF/MANIFEST.MF b/tools.templates/org.eclipse.tools.templates.core/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..397f9bde286
--- /dev/null
+++ b/tools.templates/org.eclipse.tools.templates.core/META-INF/MANIFEST.MF
@@ -0,0 +1,13 @@
+Manifest-Version: 1.0
+Automatic-Module-Name: org.eclipse.tools.templates.core
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.tools.templates.core
+Bundle-Version: 1.2.100.qualifier
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.core.resources
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.tools.templates.core
+Bundle-Localization: plugin
+Bundle-Vendor: %providerName
diff --git a/tools.templates/org.eclipse.tools.templates.core/about.html b/tools.templates/org.eclipse.tools.templates.core/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/tools.templates/org.eclipse.tools.templates.core/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/tools.templates/org.eclipse.tools.templates.core/build.properties b/tools.templates/org.eclipse.tools.templates.core/build.properties
new file mode 100644
index 00000000000..cdd2db7f1f5
--- /dev/null
+++ b/tools.templates/org.eclipse.tools.templates.core/build.properties
@@ -0,0 +1,7 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ about.html,\
+ plugin.properties
+src.includes = about.html
diff --git a/tools.templates/org.eclipse.tools.templates.core/plugin.properties b/tools.templates/org.eclipse.tools.templates.core/plugin.properties
new file mode 100644
index 00000000000..7787fbfb3d5
--- /dev/null
+++ b/tools.templates/org.eclipse.tools.templates.core/plugin.properties
@@ -0,0 +1,13 @@
+#################################################################################
+# Copyright (c) 2017 QNX Software Systems and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#################################################################################
+
+pluginName=Template Engine Core
+providerName=Eclipse CDT
diff --git a/tools.templates/org.eclipse.tools.templates.core/src/org/eclipse/tools/templates/core/IGenerator.java b/tools.templates/org.eclipse.tools.templates.core/src/org/eclipse/tools/templates/core/IGenerator.java
new file mode 100644
index 00000000000..2e7478db90d
--- /dev/null
+++ b/tools.templates/org.eclipse.tools.templates.core/src/org/eclipse/tools/templates/core/IGenerator.java
@@ -0,0 +1,58 @@
+/*******************************************************************************
+ * Copyright (c) 2016 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.tools.templates.core;
+
+import java.util.Map;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+
+/**
+ * Interface used by the Template Wizard to call on the generator to generate. Also provides other
+ * utility methods as necessary, but that should be limited.
+ */
+public interface IGenerator {
+
+ /**
+ * Generate.
+ *
+ * @param model
+ * @param monitor
+ * @throws CoreException
+ * @deprecated The generator should manage it's own model.
+ */
+ @Deprecated
+ default void generate(Map<String, Object> model, IProgressMonitor monitor) throws CoreException {
+ if (model.isEmpty()) {
+ generate(monitor);
+ }
+ }
+
+ /**
+ * Generate.
+ *
+ * @param monitor
+ * @throws CoreException
+ */
+ default void generate(IProgressMonitor monitor) throws CoreException {
+ }
+
+ /**
+ * Return which files should be opened in the workbench when the generation is complete.
+ *
+ * @return files to open
+ */
+ default IFile[] getFilesToOpen() {
+ return new IFile[0];
+ }
+
+}
diff --git a/tools.templates/org.eclipse.tools.templates.freemarker/.classpath b/tools.templates/org.eclipse.tools.templates.freemarker/.classpath
new file mode 100644
index 00000000000..e801ebfb468
--- /dev/null
+++ b/tools.templates/org.eclipse.tools.templates.freemarker/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/tools.templates/org.eclipse.tools.templates.freemarker/.project b/tools.templates/org.eclipse.tools.templates.freemarker/.project
new file mode 100644
index 00000000000..07a834aacfd
--- /dev/null
+++ b/tools.templates/org.eclipse.tools.templates.freemarker/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.tools.templates.freemarker</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+ </natures>
+</projectDescription>
diff --git a/tools.templates/org.eclipse.tools.templates.freemarker/.settings/org.eclipse.core.resources.prefs b/tools.templates/org.eclipse.tools.templates.freemarker/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/tools.templates/org.eclipse.tools.templates.freemarker/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/tools.templates/org.eclipse.tools.templates.freemarker/.settings/org.eclipse.jdt.core.prefs b/tools.templates/org.eclipse.tools.templates.freemarker/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..e3a8104f9ca
--- /dev/null
+++ b/tools.templates/org.eclipse.tools.templates.freemarker/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/tools.templates/org.eclipse.tools.templates.freemarker/.settings/org.eclipse.jdt.launching.prefs b/tools.templates/org.eclipse.tools.templates.freemarker/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 00000000000..f8a131b56e0
--- /dev/null
+++ b/tools.templates/org.eclipse.tools.templates.freemarker/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_COMPILER_COMPLIANCE_DOES_NOT_MATCH_JRE=warning
+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=warning
diff --git a/tools.templates/org.eclipse.tools.templates.freemarker/.settings/org.eclipse.jdt.ui.prefs b/tools.templates/org.eclipse.tools.templates.freemarker/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/tools.templates/org.eclipse.tools.templates.freemarker/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/tools.templates/org.eclipse.tools.templates.freemarker/.settings/org.eclipse.pde.api.tools.prefs b/tools.templates/org.eclipse.tools.templates.freemarker/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 00000000000..ec9fbf321d0
--- /dev/null
+++ b/tools.templates/org.eclipse.tools.templates.freemarker/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,184 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITH_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_FIELD=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERCLASS_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_CHANGED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENTS=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETERS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Error
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Warning
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+MISSING_EE_DESCRIPTIONS=Warning
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=false
+changed_execution_env=Error
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+incompatible_api_component_version_report_major_without_breaking_change=Warning
+incompatible_api_component_version_report_minor_without_api_change=Warning
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/tools.templates/org.eclipse.tools.templates.freemarker/.settings/org.eclipse.pde.prefs b/tools.templates/org.eclipse.tools.templates.freemarker/.settings/org.eclipse.pde.prefs
new file mode 100644
index 00000000000..d2dc703ba9e
--- /dev/null
+++ b/tools.templates/org.eclipse.tools.templates.freemarker/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,35 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=2
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=2
+compilers.p.missing-version-export-package=2
+compilers.p.missing-version-import-package=2
+compilers.p.missing-version-require-bundle=2
+compilers.p.no-required-att=0
+compilers.p.no.automatic.module=1
+compilers.p.not-externalized-att=1
+compilers.p.service.component.without.lazyactivation=1
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/tools.templates/org.eclipse.tools.templates.freemarker/META-INF/MANIFEST.MF b/tools.templates/org.eclipse.tools.templates.freemarker/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..7755cb45d76
--- /dev/null
+++ b/tools.templates/org.eclipse.tools.templates.freemarker/META-INF/MANIFEST.MF
@@ -0,0 +1,18 @@
+Manifest-Version: 1.0
+Automatic-Module-Name: org.eclipse.tools.templates.freemarker
+Bundle-ManifestVersion: 2
+Bundle-SymbolicName: org.eclipse.tools.templates.freemarker
+Bundle-Version: 1.2.300.qualifier
+Bundle-Name: %pluginName
+Bundle-Vendor: %providerName
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.core.resources,
+ org.freemarker;visibility:=reexport,
+ org.eclipse.tools.templates.core;bundle-version="1.1.2";visibility:=reexport,
+ com.sun.xml.bind;bundle-version="[2.3.3,3.0.0)"
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.tools.templates.freemarker
+Bundle-Localization: plugin
+Import-Package: javax.xml.bind;version="[2.3.3,3.0.0)",
+ javax.xml.bind.annotation;version="[2.3.3,3.0.0)"
diff --git a/tools.templates/org.eclipse.tools.templates.freemarker/about.html b/tools.templates/org.eclipse.tools.templates.freemarker/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/tools.templates/org.eclipse.tools.templates.freemarker/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/tools.templates/org.eclipse.tools.templates.freemarker/build.properties b/tools.templates/org.eclipse.tools.templates.freemarker/build.properties
new file mode 100644
index 00000000000..cdd2db7f1f5
--- /dev/null
+++ b/tools.templates/org.eclipse.tools.templates.freemarker/build.properties
@@ -0,0 +1,7 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ about.html,\
+ plugin.properties
+src.includes = about.html
diff --git a/tools.templates/org.eclipse.tools.templates.freemarker/plugin.properties b/tools.templates/org.eclipse.tools.templates.freemarker/plugin.properties
new file mode 100644
index 00000000000..10f951e80d6
--- /dev/null
+++ b/tools.templates/org.eclipse.tools.templates.freemarker/plugin.properties
@@ -0,0 +1,13 @@
+#################################################################################
+# Copyright (c) 2017 QNX Software Systems and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#################################################################################
+
+pluginName=Template Engine Freemarker Support
+providerName=Eclipse CDT
diff --git a/tools.templates/org.eclipse.tools.templates.freemarker/src/org/eclipse/tools/templates/freemarker/FMGenerator.java b/tools.templates/org.eclipse.tools.templates.freemarker/src/org/eclipse/tools/templates/freemarker/FMGenerator.java
new file mode 100644
index 00000000000..0641c5bf2a4
--- /dev/null
+++ b/tools.templates/org.eclipse.tools.templates.freemarker/src/org/eclipse/tools/templates/freemarker/FMGenerator.java
@@ -0,0 +1,243 @@
+/*******************************************************************************
+ * Copyright (c) 2016, 2020 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.tools.templates.freemarker;
+
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.io.StringReader;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Unmarshaller;
+
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IWorkspaceRoot;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.tools.templates.core.IGenerator;
+import org.eclipse.tools.templates.freemarker.internal.Messages;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.FrameworkUtil;
+
+import com.sun.xml.bind.v2.ContextFactory;
+
+import freemarker.cache.TemplateLoader;
+import freemarker.template.Configuration;
+import freemarker.template.Template;
+import freemarker.template.TemplateException;
+
+public abstract class FMGenerator implements IGenerator, TemplateLoader {
+
+ private final Configuration templateConfig;
+ private final String manifestPath;
+ private TemplateManifest manifest;
+ private List<IFile> filesToOpen = new ArrayList<>();
+ private final String pluginId;
+
+ protected FMGenerator(String manifestPath) {
+ templateConfig = new Configuration(Configuration.VERSION_2_3_22);
+ templateConfig.setTemplateLoader(this);
+ this.manifestPath = manifestPath;
+ this.pluginId = Optional.ofNullable(FrameworkUtil.getBundle(FMGenerator.class))//
+ .map(b -> b.getSymbolicName())//
+ .orElse(FMGenerator.class.getName());
+ }
+
+ protected abstract Bundle getSourceBundle();
+
+ protected Class<? extends TemplateManifest> getManifestClass() {
+ return TemplateManifest.class;
+ }
+
+ protected TemplateManifest getManifest() {
+ return manifest;
+ }
+
+ protected void populateModel(Map<String, Object> model) {
+ // default nothing
+ }
+
+ @Override
+ public void generate(IProgressMonitor monitor) throws CoreException {
+ generate(new HashMap<>(), monitor);
+ }
+
+ @Override
+ public void generate(Map<String, Object> model, IProgressMonitor monitor) throws CoreException {
+ populateModel(model);
+
+ // If no manifest, just return
+ if (manifestPath == null) {
+ return;
+ }
+
+ // load manifest file
+ manifest = null;
+ try {
+ StringWriter writer = new StringWriter();
+ loadFile(manifestPath, model, writer); // $NON-NLS-1$
+ JAXBContext xmlContext = ContextFactory.createContext(new Class[] { getManifestClass() }, null);
+ Unmarshaller unmarshaller = xmlContext.createUnmarshaller();
+ manifest = (TemplateManifest) unmarshaller.unmarshal(new StringReader(writer.toString()));
+ } catch (JAXBException e) {
+ throwCoreException(Messages.FMGenerator_0, e);
+ }
+
+ // generate files
+ if (manifest != null) {
+ IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
+ IFile fileToShow = null;
+ for (FileTemplate fileTemplate : manifest.getFiles()) {
+ IPath destPath = new Path(fileTemplate.getDest());
+ IProject project = root.getProject(destPath.segment(0));
+ IFile file = project.getFile(destPath.removeFirstSegments(1));
+ if (!fileTemplate.isCopy()) {
+ generateFile(fileTemplate.getSrc(), model, file, monitor);
+ } else {
+ try {
+ URL url = FileLocator.find(getSourceBundle(), new Path(fileTemplate.getSrc()), null);
+ try (InputStream in = url.openStream()) {
+ createParent(file, monitor);
+ if (file.exists()) {
+ file.setContents(in, true, true, monitor);
+ } else {
+ file.create(in, true, monitor);
+ }
+ }
+ } catch (IOException e) {
+ throwCoreException(String.format(Messages.FMGenerator_1, fileTemplate.getSrc()), e);
+ }
+ }
+
+ if (fileTemplate.isOpen()) {
+ if (fileTemplate.isShow()) {
+ if (fileToShow != null) {
+ filesToOpen.add(fileToShow);
+ }
+ fileToShow = file;
+ } else {
+ filesToOpen.add(file);
+ }
+ }
+ }
+
+ if (fileToShow != null) {
+ filesToOpen.add(fileToShow);
+ }
+ }
+ }
+
+ protected void loadFile(String templateFile, Map<String, Object> model, Writer out) throws CoreException {
+ try {
+ Template template = templateConfig.getTemplate(templateFile);
+ template.process(model, out);
+ } catch (IOException | TemplateException e) {
+ throwCoreException(String.format(Messages.FMGenerator_2, templateFile), e);
+ }
+ }
+
+ public void generateFile(String templateFile, Map<String, Object> model, final IFile outputFile,
+ IProgressMonitor monitor) throws CoreException {
+ try (StringWriter writer = new StringWriter()) {
+ loadFile(templateFile, model, writer);
+ try (ByteArrayInputStream in = new ByteArrayInputStream(
+ writer.getBuffer().toString().getBytes(StandardCharsets.UTF_8))) {
+ createParent(outputFile, monitor);
+ if (outputFile.exists()) {
+ outputFile.setContents(in, true, true, monitor);
+ } else {
+ outputFile.create(in, true, monitor);
+ }
+ }
+ } catch (IOException e) {
+ throwCoreException(String.format(Messages.FMGenerator_3, templateFile), e);
+ }
+ }
+
+ protected static void createParent(IResource child, IProgressMonitor monitor) throws CoreException {
+ if (child == null)
+ return;
+
+ IContainer container = child.getParent();
+ if (container.exists()) {
+ return;
+ }
+
+ IFolder parent = container.getAdapter(IFolder.class);
+ createParent(parent, monitor);
+ parent.create(true, true, monitor);
+ }
+
+ @Override
+ public IFile[] getFilesToOpen() {
+ return filesToOpen.toArray(new IFile[filesToOpen.size()]);
+ }
+
+ @Override
+ public Object findTemplateSource(String name) throws IOException {
+ return FileLocator.find(getSourceBundle(), new Path(name), null);
+ }
+
+ @Override
+ public long getLastModified(Object source) {
+ try {
+ URL url = (URL) source;
+ if (url.getProtocol().equals("file")) { //$NON-NLS-1$
+ File file = new File(url.toURI());
+ return file.lastModified();
+ } else {
+ return 0;
+ }
+ } catch (URISyntaxException e) {
+ return 0;
+ }
+ }
+
+ @Override
+ public Reader getReader(Object source, String encoding) throws IOException {
+ URL url = (URL) source;
+ return new InputStreamReader(url.openStream(), encoding);
+ }
+
+ @Override
+ public void closeTemplateSource(Object arg0) throws IOException {
+ // Nothing
+ }
+
+ private void throwCoreException(String message, Throwable e) throws CoreException {
+ throw new CoreException(new Status(IStatus.ERROR, pluginId, message, e));
+ }
+
+}
diff --git a/tools.templates/org.eclipse.tools.templates.freemarker/src/org/eclipse/tools/templates/freemarker/FMProjectGenerator.java b/tools.templates/org.eclipse.tools.templates.freemarker/src/org/eclipse/tools/templates/freemarker/FMProjectGenerator.java
new file mode 100644
index 00000000000..cc0de554c85
--- /dev/null
+++ b/tools.templates/org.eclipse.tools.templates.freemarker/src/org/eclipse/tools/templates/freemarker/FMProjectGenerator.java
@@ -0,0 +1,98 @@
+/*******************************************************************************
+ * Copyright (c) 2021 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.tools.templates.freemarker;
+
+import java.net.URI;
+import java.util.Map;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IProjectDescription;
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.SubMonitor;
+
+public abstract class FMProjectGenerator extends FMGenerator {
+
+ private String projectName;
+ private URI locationURI;
+ private IProject[] referencedProjects;
+
+ private IProject project;
+
+ public FMProjectGenerator(String manifestPath) {
+ super(manifestPath);
+ }
+
+ protected abstract void initProjectDescription(IProjectDescription description) throws CoreException;
+
+ public void setProjectName(String projectName) {
+ this.projectName = projectName;
+ }
+
+ public void setLocationURI(URI locationURI) {
+ this.locationURI = locationURI;
+ }
+
+ public void setReferencedProjects(IProject[] referencedProjects) {
+ this.referencedProjects = referencedProjects;
+ }
+
+ public IProject getProject() {
+ return project;
+ }
+
+ @Override
+ protected void populateModel(Map<String, Object> model) {
+ super.populateModel(model);
+
+ // Make sure project name is in model
+ model.put("projectName", projectName); //$NON-NLS-1$
+ }
+
+ @Override
+ public void generate(Map<String, Object> model, IProgressMonitor monitor) throws CoreException {
+ // Create the project
+ createProject(monitor);
+
+ // Generate the files
+ super.generate(model, monitor);
+ }
+
+ protected IProject createProject(IProgressMonitor monitor) throws CoreException {
+ SubMonitor sub = SubMonitor.convert(monitor, "Creating project", 1);
+ IWorkspace workspace = ResourcesPlugin.getWorkspace();
+
+ project = workspace.getRoot().getProject(projectName);
+ if (!project.exists()) {
+ // Create project from scratch
+ IProjectDescription description = workspace.newProjectDescription(projectName);
+ description.setLocationURI(locationURI);
+ if (referencedProjects != null) {
+ description.setReferencedProjects(referencedProjects);
+ }
+ initProjectDescription(description);
+ project.create(description, sub);
+ project.open(sub);
+ } else {
+ // Project is already created by smart import, so just configure the description
+ IProjectDescription description = project.getDescription();
+ initProjectDescription(description);
+ project.setDescription(description, sub);
+ project.open(sub);
+ }
+
+ sub.worked(1);
+ return project;
+ }
+
+}
diff --git a/tools.templates/org.eclipse.tools.templates.freemarker/src/org/eclipse/tools/templates/freemarker/FileTemplate.java b/tools.templates/org.eclipse.tools.templates.freemarker/src/org/eclipse/tools/templates/freemarker/FileTemplate.java
new file mode 100644
index 00000000000..e9e20304e43
--- /dev/null
+++ b/tools.templates/org.eclipse.tools.templates.freemarker/src/org/eclipse/tools/templates/freemarker/FileTemplate.java
@@ -0,0 +1,67 @@
+/*******************************************************************************
+ * Copyright (c) 2016 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.tools.templates.freemarker;
+
+import javax.xml.bind.annotation.XmlAttribute;
+
+public class FileTemplate {
+ private String src;
+ private String dest;
+ private boolean open;
+ private boolean show;
+ private boolean copy;
+
+ @XmlAttribute(name = "src")
+ public String getSrc() {
+ return src;
+ }
+
+ public void setSrc(String src) {
+ this.src = src;
+ }
+
+ @XmlAttribute(name = "dest")
+ public String getDest() {
+ return dest;
+ }
+
+ public void setDest(String dest) {
+ this.dest = dest;
+ }
+
+ @XmlAttribute(name = "open")
+ public boolean isOpen() {
+ return open;
+ }
+
+ public void setOpen(boolean open) {
+ this.open = open;
+ }
+
+ @XmlAttribute(name = "show")
+ public boolean isShow() {
+ return show;
+ }
+
+ public void setShow(boolean show) {
+ this.show = show;
+ }
+
+ @XmlAttribute(name = "copy")
+ public boolean isCopy() {
+ return copy;
+ }
+
+ public void setCopy(boolean copy) {
+ this.copy = copy;
+ }
+
+}
diff --git a/tools.templates/org.eclipse.tools.templates.freemarker/src/org/eclipse/tools/templates/freemarker/SourceRoot.java b/tools.templates/org.eclipse.tools.templates.freemarker/src/org/eclipse/tools/templates/freemarker/SourceRoot.java
new file mode 100644
index 00000000000..7cb7242c531
--- /dev/null
+++ b/tools.templates/org.eclipse.tools.templates.freemarker/src/org/eclipse/tools/templates/freemarker/SourceRoot.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2016 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.tools.templates.freemarker;
+
+import javax.xml.bind.annotation.XmlAttribute;
+
+public class SourceRoot {
+
+ private String dir;
+
+ @XmlAttribute(name = "dir")
+ public String getDir() {
+ return dir;
+ }
+
+ public void setDir(String dir) {
+ this.dir = dir;
+ }
+
+}
diff --git a/tools.templates/org.eclipse.tools.templates.freemarker/src/org/eclipse/tools/templates/freemarker/TemplateManifest.java b/tools.templates/org.eclipse.tools.templates.freemarker/src/org/eclipse/tools/templates/freemarker/TemplateManifest.java
new file mode 100644
index 00000000000..fb75c72a5b7
--- /dev/null
+++ b/tools.templates/org.eclipse.tools.templates.freemarker/src/org/eclipse/tools/templates/freemarker/TemplateManifest.java
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * Copyright (c) 2016 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.tools.templates.freemarker;
+
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
+@XmlRootElement
+public class TemplateManifest {
+
+ private List<FileTemplate> files;
+ private List<SourceRoot> srcRoots;
+
+ @XmlElement(name = "file")
+ public List<FileTemplate> getFiles() {
+ return files;
+ }
+
+ public void setFiles(List<FileTemplate> files) {
+ this.files = files;
+ }
+
+ @XmlElement(name = "srcRoot")
+ public List<SourceRoot> getSrcRoots() {
+ return srcRoots;
+ }
+
+ public void setSrcRoots(List<SourceRoot> srcRoots) {
+ this.srcRoots = srcRoots;
+ }
+
+}
diff --git a/tools.templates/org.eclipse.tools.templates.freemarker/src/org/eclipse/tools/templates/freemarker/internal/Messages.java b/tools.templates/org.eclipse.tools.templates.freemarker/src/org/eclipse/tools/templates/freemarker/internal/Messages.java
new file mode 100644
index 00000000000..17c0f5b01aa
--- /dev/null
+++ b/tools.templates/org.eclipse.tools.templates.freemarker/src/org/eclipse/tools/templates/freemarker/internal/Messages.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2016 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.tools.templates.freemarker.internal;
+
+import org.eclipse.osgi.util.NLS;
+
+public class Messages extends NLS {
+ private static final String BUNDLE_NAME = "org.eclipse.tools.templates.freemarker.internal.messages"; //$NON-NLS-1$
+ public static String FMGenerator_0;
+ public static String FMGenerator_1;
+ public static String FMGenerator_2;
+ public static String FMGenerator_3;
+ static {
+ // initialize resource bundle
+ NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+ }
+
+ private Messages() {
+ }
+}
diff --git a/tools.templates/org.eclipse.tools.templates.freemarker/src/org/eclipse/tools/templates/freemarker/internal/messages.properties b/tools.templates/org.eclipse.tools.templates.freemarker/src/org/eclipse/tools/templates/freemarker/internal/messages.properties
new file mode 100644
index 00000000000..6618fb961f9
--- /dev/null
+++ b/tools.templates/org.eclipse.tools.templates.freemarker/src/org/eclipse/tools/templates/freemarker/internal/messages.properties
@@ -0,0 +1,4 @@
+FMGenerator_0=Loading template manifest
+FMGenerator_1=Reading file %s
+FMGenerator_2=Processing template %s
+FMGenerator_3=Generating file %s
diff --git a/tools.templates/org.eclipse.tools.templates.ui/.classpath b/tools.templates/org.eclipse.tools.templates.ui/.classpath
new file mode 100644
index 00000000000..e801ebfb468
--- /dev/null
+++ b/tools.templates/org.eclipse.tools.templates.ui/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/tools.templates/org.eclipse.tools.templates.ui/.project b/tools.templates/org.eclipse.tools.templates.ui/.project
new file mode 100644
index 00000000000..2d2d4be1930
--- /dev/null
+++ b/tools.templates/org.eclipse.tools.templates.ui/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.tools.templates.ui</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+ </natures>
+</projectDescription>
diff --git a/tools.templates/org.eclipse.tools.templates.ui/.settings/org.eclipse.core.resources.prefs b/tools.templates/org.eclipse.tools.templates.ui/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/tools.templates/org.eclipse.tools.templates.ui/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/tools.templates/org.eclipse.tools.templates.ui/.settings/org.eclipse.jdt.core.prefs b/tools.templates/org.eclipse.tools.templates.ui/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..e3a8104f9ca
--- /dev/null
+++ b/tools.templates/org.eclipse.tools.templates.ui/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/tools.templates/org.eclipse.tools.templates.ui/.settings/org.eclipse.jdt.launching.prefs b/tools.templates/org.eclipse.tools.templates.ui/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 00000000000..f8a131b56e0
--- /dev/null
+++ b/tools.templates/org.eclipse.tools.templates.ui/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_COMPILER_COMPLIANCE_DOES_NOT_MATCH_JRE=warning
+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=warning
diff --git a/tools.templates/org.eclipse.tools.templates.ui/.settings/org.eclipse.jdt.ui.prefs b/tools.templates/org.eclipse.tools.templates.ui/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/tools.templates/org.eclipse.tools.templates.ui/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/tools.templates/org.eclipse.tools.templates.ui/.settings/org.eclipse.pde.api.tools.prefs b/tools.templates/org.eclipse.tools.templates.ui/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 00000000000..ec9fbf321d0
--- /dev/null
+++ b/tools.templates/org.eclipse.tools.templates.ui/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,184 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITH_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_FIELD=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERCLASS_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_CHANGED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENTS=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETERS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Error
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Warning
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+MISSING_EE_DESCRIPTIONS=Warning
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=false
+changed_execution_env=Error
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+incompatible_api_component_version_report_major_without_breaking_change=Warning
+incompatible_api_component_version_report_minor_without_api_change=Warning
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/tools.templates/org.eclipse.tools.templates.ui/.settings/org.eclipse.pde.prefs b/tools.templates/org.eclipse.tools.templates.ui/.settings/org.eclipse.pde.prefs
new file mode 100644
index 00000000000..d2dc703ba9e
--- /dev/null
+++ b/tools.templates/org.eclipse.tools.templates.ui/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,35 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=2
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=2
+compilers.p.missing-version-export-package=2
+compilers.p.missing-version-import-package=2
+compilers.p.missing-version-require-bundle=2
+compilers.p.no-required-att=0
+compilers.p.no.automatic.module=1
+compilers.p.not-externalized-att=1
+compilers.p.service.component.without.lazyactivation=1
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/tools.templates/org.eclipse.tools.templates.ui/META-INF/MANIFEST.MF b/tools.templates/org.eclipse.tools.templates.ui/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..0647e2c09e8
--- /dev/null
+++ b/tools.templates/org.eclipse.tools.templates.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,18 @@
+Manifest-Version: 1.0
+Automatic-Module-Name: org.eclipse.tools.templates.ui
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.tools.templates.ui;singleton:=true
+Bundle-Version: 1.3.100.qualifier
+Bundle-Activator: org.eclipse.tools.templates.ui.internal.Activator
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.ui.ide,
+ org.eclipse.core.resources,
+ org.eclipse.tools.templates.core;bundle-version="1.0.0";visibility:=reexport
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.tools.templates.ui,
+ org.eclipse.tools.templates.ui.internal;x-internal:=true
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
diff --git a/tools.templates/org.eclipse.tools.templates.ui/about.html b/tools.templates/org.eclipse.tools.templates.ui/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/tools.templates/org.eclipse.tools.templates.ui/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/tools.templates/org.eclipse.tools.templates.ui/build.properties b/tools.templates/org.eclipse.tools.templates.ui/build.properties
new file mode 100644
index 00000000000..0aaaa03210b
--- /dev/null
+++ b/tools.templates/org.eclipse.tools.templates.ui/build.properties
@@ -0,0 +1,9 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ about.html,\
+ plugin.xml,\
+ schema/,\
+ plugin.properties
+src.includes = about.html
diff --git a/tools.templates/org.eclipse.tools.templates.ui/plugin.properties b/tools.templates/org.eclipse.tools.templates.ui/plugin.properties
new file mode 100644
index 00000000000..fa61ce3fb08
--- /dev/null
+++ b/tools.templates/org.eclipse.tools.templates.ui/plugin.properties
@@ -0,0 +1,13 @@
+#################################################################################
+# Copyright (c) 2017 QNX Software Systems and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#################################################################################
+
+pluginName=Template Engine UI
+providerName=Eclipse CDT
diff --git a/tools.templates/org.eclipse.tools.templates.ui/plugin.xml b/tools.templates/org.eclipse.tools.templates.ui/plugin.xml
new file mode 100644
index 00000000000..009fdc7a36b
--- /dev/null
+++ b/tools.templates/org.eclipse.tools.templates.ui/plugin.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension-point id="templates" name="New Element Templates" schema="schema/templates.exsd"/>
+
+</plugin>
diff --git a/tools.templates/org.eclipse.tools.templates.ui/schema/templates.exsd b/tools.templates/org.eclipse.tools.templates.ui/schema/templates.exsd
new file mode 100644
index 00000000000..52cdbd5c71b
--- /dev/null
+++ b/tools.templates/org.eclipse.tools.templates.ui/schema/templates.exsd
@@ -0,0 +1,187 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.tools.templates.ui" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+ <appinfo>
+ <meta.schema plugin="org.eclipse.tools.templates.ui" id="templates" name="Templates"/>
+ </appinfo>
+ <documentation>
+ [Enter description of this extension point.]
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <annotation>
+ <appinfo>
+ <meta.element />
+ </appinfo>
+ </annotation>
+ <complexType>
+ <sequence>
+ <element ref="tag" minOccurs="0" maxOccurs="unbounded"/>
+ <element ref="template" minOccurs="0" maxOccurs="unbounded"/>
+ <element ref="templateExtension" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute translatable="true"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="template">
+ <complexType>
+ <sequence>
+ <element ref="tagReference" minOccurs="1" maxOccurs="unbounded"/>
+ <element ref="description"/>
+ </sequence>
+ <attribute name="id" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="label" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="icon" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute kind="resource"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ <attribute name="wizard" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute kind="java" basedOn="org.eclipse.tools.templates.ui.TemplateWizard:"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="description" type="string">
+ </element>
+
+ <element name="tag">
+ <complexType>
+ <attribute name="id" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="label" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="tagReference">
+ <complexType>
+ <attribute name="id" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute kind="identifier" basedOn="org.eclipse.tools.templates.ui.templates/tag/@id"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="templateExtension">
+ <complexType>
+ <sequence>
+ <element ref="tagReference" minOccurs="1" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="templateId" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute kind="identifier" basedOn="org.eclipse.tools.templates.ui.templates/template/@id"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="since"/>
+ </appinfo>
+ <documentation>
+ [Enter the first release in which this extension point appears.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="examples"/>
+ </appinfo>
+ <documentation>
+ [Enter extension point usage example here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="apiinfo"/>
+ </appinfo>
+ <documentation>
+ [Enter API information here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="implementation"/>
+ </appinfo>
+ <documentation>
+ [Enter information about supplied implementation of this extension point.]
+ </documentation>
+ </annotation>
+
+
+</schema>
diff --git a/tools.templates/org.eclipse.tools.templates.ui/src/org/eclipse/tools/templates/ui/Messages.java b/tools.templates/org.eclipse.tools.templates.ui/src/org/eclipse/tools/templates/ui/Messages.java
new file mode 100644
index 00000000000..52c52c9422e
--- /dev/null
+++ b/tools.templates/org.eclipse.tools.templates.ui/src/org/eclipse/tools/templates/ui/Messages.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * Copyright (c) 2021 Mat Booth and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.tools.templates.ui;
+
+import org.eclipse.osgi.util.NLS;
+
+class Messages extends NLS {
+
+ public static String ProjectImportConfigurator_Checking;
+
+ public static String TemplateWizard_CannotBeCreated;
+ public static String TemplateWizard_ErrorCreating;
+ public static String TemplateWizard_FailedToOpen;
+ public static String TemplateWizard_Generating;
+ public static String TemplateWizard_InternalError;
+
+ static {
+ NLS.initializeMessages(Messages.class.getPackageName() + ".messages", Messages.class); //$NON-NLS-1$
+ }
+
+ private Messages() {
+ }
+}
diff --git a/tools.templates/org.eclipse.tools.templates.ui/src/org/eclipse/tools/templates/ui/NewWizard.java b/tools.templates/org.eclipse.tools.templates.ui/src/org/eclipse/tools/templates/ui/NewWizard.java
new file mode 100644
index 00000000000..209d7c4db1b
--- /dev/null
+++ b/tools.templates/org.eclipse.tools.templates.ui/src/org/eclipse/tools/templates/ui/NewWizard.java
@@ -0,0 +1,83 @@
+package org.eclipse.tools.templates.ui;
+
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.ui.INewWizard;
+import org.eclipse.ui.IWorkbench;
+
+/**
+ * Wizard to be used to launch the template selection page.
+ */
+public class NewWizard extends Wizard implements INewWizard {
+
+ private final String[] tags;
+
+ private String templateSelectionPageTitle;
+ private String templateSelectionPageDescription;
+ private IWorkbench workbench;
+ private IStructuredSelection selection;
+ private TemplateSelectionPage templateSelectionPage;
+
+ protected NewWizard(String... tags) {
+ this.tags = tags;
+ setForcePreviousAndNextButtons(true);
+ setNeedsProgressMonitor(true);
+ }
+
+ protected void setTemplateSelectionPageTitle(String title) {
+ this.templateSelectionPageTitle = title;
+ if (templateSelectionPage != null) {
+ templateSelectionPage.setTitle(title);
+ }
+ }
+
+ protected void setTemplateSelectionPageDescription(String description) {
+ this.templateSelectionPageDescription = description;
+ if (templateSelectionPage != null) {
+ templateSelectionPage.setDescription(description);
+ }
+ }
+
+ @Override
+ public void addPages() {
+ templateSelectionPage = new TemplateSelectionPage("templateSelection", tags); //$NON-NLS-1$
+ templateSelectionPage.setTitle(templateSelectionPageTitle);
+ templateSelectionPage.setDescription(templateSelectionPageDescription);
+ this.addPage(templateSelectionPage);
+ }
+
+ @Override
+ public void init(IWorkbench workbench, IStructuredSelection selection) {
+ this.workbench = workbench;
+ this.selection = selection;
+ }
+
+ /**
+ * Initialize the template wizard that comes next.
+ *
+ * @param nextWizard
+ * the next wizard to show
+ */
+ public void initialize(INewWizard nextWizard) {
+ nextWizard.init(workbench, selection);
+ }
+
+ public void selectTemplate(String id) {
+ if (templateSelectionPage != null) {
+ templateSelectionPage.selectTemplate(id);
+ }
+ }
+
+ @Override
+ public boolean canFinish() {
+ // Need to check with the template wizard
+ return false;
+ }
+
+ @Override
+ public boolean performFinish() {
+ // The template wizard will do the real finish.
+ return true;
+ }
+
+}
diff --git a/tools.templates/org.eclipse.tools.templates.ui/src/org/eclipse/tools/templates/ui/ProjectImportConfigurator.java b/tools.templates/org.eclipse.tools.templates.ui/src/org/eclipse/tools/templates/ui/ProjectImportConfigurator.java
new file mode 100644
index 00000000000..1873d5cac1c
--- /dev/null
+++ b/tools.templates/org.eclipse.tools.templates.ui/src/org/eclipse/tools/templates/ui/ProjectImportConfigurator.java
@@ -0,0 +1,173 @@
+/*******************************************************************************
+ * Copyright (c) 2021 Mat Booth and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.tools.templates.ui;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.FileSystems;
+import java.nio.file.FileVisitResult;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.PathMatcher;
+import java.nio.file.SimpleFileVisitor;
+import java.nio.file.attribute.BasicFileAttributes;
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.tools.templates.core.IGenerator;
+import org.eclipse.ui.statushandlers.StatusManager;
+import org.eclipse.ui.wizards.datatransfer.ProjectConfigurator;
+import org.osgi.framework.FrameworkUtil;
+
+/**
+ * Smart-import strategy for importing pre-existing projects that are not yet
+ * Eclipse projects.
+ *
+ * Project types that have a {@link IGenerator} may extend this to offer smart
+ * import functionality by registering their implementation using the <code>
+ * org.eclipse.ui.ide.projectConfigurator</code> extension point.
+ *
+ * It is important that implementations of this class should be stateless. See
+ * {@link ProjectConfigurator} for more details.
+ *
+ * @since 1.3
+ */
+public abstract class ProjectImportConfigurator implements ProjectConfigurator {
+
+ private static class Collector extends SimpleFileVisitor<Path> {
+ private IProgressMonitor monitor;
+ private List<PathMatcher> matchers;
+
+ // LinkedHashSet preserves insertion order so it looks nice in the UI
+ private Set<File> locations = new LinkedHashSet<>();
+
+ private Collector(List<PathMatcher> matchers, IProgressMonitor monitor) {
+ this.monitor = monitor;
+ this.matchers = matchers;
+ }
+
+ @Override
+ public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {
+ // Could be a long operation, so offer opportunity to cancel
+ if (monitor.isCanceled()) {
+ return FileVisitResult.TERMINATE;
+ }
+ monitor.subTask(MessageFormat.format(Messages.ProjectImportConfigurator_Checking, dir));
+ return FileVisitResult.CONTINUE;
+ }
+
+ @Override
+ public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
+ // If file matches any of our patterns, save the location
+ Path name = file.getFileName();
+ boolean match = matchers.stream().anyMatch(p -> p.matches(name));
+ if (match) {
+ locations.add(file.getParent().toFile());
+ }
+ return FileVisitResult.CONTINUE;
+ }
+
+ public Set<File> getCollected() {
+ return locations;
+ }
+ }
+
+ /**
+ * The presence of any of these files indicates a directory contains a project
+ * of your type. Whole filenames or glob patterns are acceptable, e.g.
+ * ("build.foo", "foo.*")
+ *
+ * @return a list of filenames and/or glob patterns
+ */
+ protected abstract List<String> getProjectFileNames();
+
+ /**
+ * Returns the project generator implementation to be used to configure your project
+ * type. The base Eclipse project will be created for you, the generator just needs to
+ * know how to configure it. The generator will be run during the smart import batch job.
+ *
+ * @param project the project to be configured
+ * @return a project generator
+ */
+ protected abstract IGenerator getGenerator(IProject project);
+
+ /**
+ * Utility to create path matchers from glob patterns.
+ */
+ private List<PathMatcher> createPathMatchers(List<String> globs) {
+ final List<PathMatcher> matchers = new ArrayList<>();
+ for (String glob : globs) {
+ matchers.add(FileSystems.getDefault().getPathMatcher("glob:" + glob)); //$NON-NLS-1$
+ }
+ return matchers;
+ }
+
+ @Override
+ public Set<File> findConfigurableLocations(File root, IProgressMonitor monitor) {
+ List<PathMatcher> matchers = createPathMatchers(getProjectFileNames());
+ Collector c = new Collector(matchers, monitor);
+ try {
+ Files.walkFileTree(root.toPath(), c);
+ } catch (IOException e) {
+ StatusManager.getManager().handle(new Status(IStatus.ERROR,
+ FrameworkUtil.getBundle(getClass()).getSymbolicName(), e.getMessage(), e));
+ }
+ return c.getCollected();
+ }
+
+ @Override
+ public boolean shouldBeAnEclipseProject(IContainer container, IProgressMonitor monitor) {
+ List<PathMatcher> matchers = createPathMatchers(getProjectFileNames());
+
+ // Only if the location contains a file that matches the one of the given patterns
+ File location = container.getLocation().toFile();
+ for (File f : location.listFiles()) {
+ if (f.isFile() && matchers.stream().anyMatch(p -> p.matches(f.toPath().getFileName()))) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public Set<IFolder> getFoldersToIgnore(IProject project, IProgressMonitor monitor) {
+ // Default to ignoring nothing
+ return Set.of();
+ }
+
+ @Override
+ public boolean canConfigure(IProject project, Set<IPath> ignoredPaths, IProgressMonitor monitor) {
+ return shouldBeAnEclipseProject(project, monitor);
+ }
+
+ @Override
+ public void configure(IProject project, Set<IPath> ignoredPaths, IProgressMonitor monitor) {
+ try {
+ IGenerator generator = getGenerator(project);
+ generator.generate(monitor);
+ } catch (CoreException e) {
+ Status status = new Status(e.getStatus().getSeverity(),
+ FrameworkUtil.getBundle(getClass()).getSymbolicName(), e.getLocalizedMessage(), e);
+ StatusManager.getManager().handle(status, StatusManager.SHOW | StatusManager.LOG);
+ }
+ }
+}
diff --git a/tools.templates/org.eclipse.tools.templates.ui/src/org/eclipse/tools/templates/ui/TemplateSelectionPage.java b/tools.templates/org.eclipse.tools.templates.ui/src/org/eclipse/tools/templates/ui/TemplateSelectionPage.java
new file mode 100644
index 00000000000..0c9ca9e2f7a
--- /dev/null
+++ b/tools.templates/org.eclipse.tools.templates.ui/src/org/eclipse/tools/templates/ui/TemplateSelectionPage.java
@@ -0,0 +1,168 @@
+/*******************************************************************************
+ * Copyright (c) 2016, 2021 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.tools.templates.ui;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.wizard.IWizardPage;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.SashForm;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.tools.templates.ui.internal.Activator;
+import org.eclipse.tools.templates.ui.internal.Tag;
+import org.eclipse.tools.templates.ui.internal.TagListViewer;
+import org.eclipse.tools.templates.ui.internal.Template;
+import org.eclipse.tools.templates.ui.internal.TemplateExtension;
+import org.eclipse.tools.templates.ui.internal.TemplateTable;
+
+public class TemplateSelectionPage extends WizardPage {
+
+ private final String[] requestedTags;
+ private final List<Template> templates;
+
+ private TagListViewer tagList;
+ private TemplateTable templateTable;
+
+ public TemplateSelectionPage(String pageName, String... tags) {
+ super(pageName);
+ this.requestedTags = tags;
+ TemplateExtension templateExtension = Activator.getTemplateExtension();
+ templates = new ArrayList<>();
+ for (Template template : templateExtension.getTemplates()) {
+ for (String requestedTag : requestedTags) {
+ if (template.hasTag(requestedTag)) {
+ templates.add(template);
+ break;
+ }
+ }
+ }
+ }
+
+ @Override
+ public void createControl(Composite parent) {
+ SashForm form = new SashForm(parent, SWT.HORIZONTAL);
+ setControl(form);
+
+ tagList = new TagListViewer(form, SWT.BORDER);
+ tagList.addSelectionChangedListener(new ISelectionChangedListener() {
+ @Override
+ public void selectionChanged(SelectionChangedEvent event) {
+ Collection<Tag> selectedTags = tagList.getSelectedTags();
+ List<Template> selectedTemplates = new ArrayList<>();
+ for (Template template : templates) {
+ for (Tag tag : selectedTags) {
+ if (template.hasTag(tag.getId())) {
+ selectedTemplates.add(template);
+ break;
+ }
+ }
+ }
+
+ Template selected = templateTable.getSelectedTemplate();
+ templateTable.setTemplates(selectedTemplates);
+ templateTable.selectTemplate(selected);
+
+ updateButtons();
+ }
+ });
+
+ templateTable = new TemplateTable(form, SWT.V_SCROLL | SWT.SINGLE | SWT.BORDER);
+ templateTable.getTable().addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ updateButtons();
+ }
+
+ @Override
+ public void widgetDefaultSelected(SelectionEvent e) {
+ widgetSelected(e);
+ getContainer().showPage(getNextPage());
+ }
+ });
+
+ Set<Tag> tags = new HashSet<>();
+ for (Template template : templates) {
+ tags.addAll(template.getTags());
+ }
+
+ if (requestedTags.length == 1) {
+ // Implies that the requested tag is actually the same as All.
+ // We can safely remove it.
+ for (Tag tag : tags) {
+ if (tag.getId().equals(requestedTags[0])) {
+ tags.remove(tag);
+ break;
+ }
+ }
+ }
+
+ templateTable.setTemplates(templates);
+ tagList.setInput(tags);
+ tagList.getList().select(0); // All
+
+ form.setWeights(new int[] { 20, 80 });
+ }
+
+ public void selectTemplate(String id) {
+ if (templateTable != null) {
+ for (Template template : templates) {
+ if (template.getId().equals(id)) {
+ templateTable.selectTemplate(template);
+ updateButtons();
+ break;
+ }
+ }
+ }
+ }
+
+ private void updateButtons() {
+ setPageComplete(templateTable.getSelectedTemplate() != null);
+ getContainer().updateButtons();
+ }
+
+ @Override
+ public IWizardPage getNextPage() {
+ Template template = templateTable.getSelectedTemplate();
+ if (template != null) {
+ try {
+ NewWizard oldWizard = (NewWizard) getWizard();
+ TemplateWizard nextWizard = (TemplateWizard) template.getWizard();
+ oldWizard.initialize(nextWizard);
+ nextWizard.addPages();
+ return nextWizard.getPages()[0];
+ } catch (CoreException e) {
+ Platform.getLog(getClass()).log(e.getStatus());
+ }
+ }
+ return super.getNextPage();
+ }
+
+ @Override
+ public void dispose() {
+ if (templateTable != null) {
+ templateTable.dispose();
+ templateTable = null;
+ }
+ super.dispose();
+ }
+
+}
diff --git a/tools.templates/org.eclipse.tools.templates.ui/src/org/eclipse/tools/templates/ui/TemplateWizard.java b/tools.templates/org.eclipse.tools.templates.ui/src/org/eclipse/tools/templates/ui/TemplateWizard.java
new file mode 100644
index 00000000000..b2ff1c8b5a5
--- /dev/null
+++ b/tools.templates/org.eclipse.tools.templates.ui/src/org/eclipse/tools/templates/ui/TemplateWizard.java
@@ -0,0 +1,135 @@
+/*******************************************************************************
+ * Copyright (c) 2016, 2021 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.tools.templates.ui;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.ILog;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.SubMonitor;
+import org.eclipse.core.runtime.jobs.ISchedulingRule;
+import org.eclipse.jface.dialogs.ErrorDialog;
+import org.eclipse.tools.templates.core.IGenerator;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+import org.eclipse.ui.ide.IDE;
+import org.eclipse.ui.wizards.newresource.BasicNewResourceWizard;
+import org.osgi.framework.FrameworkUtil;
+
+/**
+ * The wizard component of a template. Takes over when the template is selected in the from the
+ * Template Selection Page in the parent wizard.
+ */
+public abstract class TemplateWizard extends BasicNewResourceWizard {
+
+ public TemplateWizard() {
+ setNeedsProgressMonitor(true);
+ }
+
+ /**
+ * The generator to be called when the wizard is finished.
+ *
+ * @return generator
+ */
+ protected abstract IGenerator getGenerator();
+
+ /**
+ * Populate the model.
+ *
+ * @param model
+ * @deprecated The subclass should initialize the generator with information in the
+ * getGenerator() method.
+ */
+ @Deprecated
+ protected void populateModel(Map<String, Object> model) {
+ // nothing by default
+ }
+
+ /**
+ * Perform additional UI actions after the generation is complete.
+ *
+ * @param generator
+ */
+ protected void postProcess(IGenerator generator) {
+ try {
+ IWorkbenchPage activePage = getWorkbench().getActiveWorkbenchWindow().getActivePage();
+ for (IFile file : generator.getFilesToOpen()) {
+ IDE.openEditor(activePage, file);
+ }
+ } catch (PartInitException e) {
+ log(Messages.TemplateWizard_FailedToOpen, e);
+ }
+ }
+
+ @Override
+ public boolean performFinish() {
+ IGenerator generator = getGenerator();
+ // TODO remove the model in 2.0. The getGenerator method should have
+ // initialized this.
+ Map<String, Object> model = new HashMap<>();
+ populateModel(model);
+
+ try {
+ getContainer().run(true, true, new WorkspaceModifyOperation() {
+ @Override
+ protected void execute(IProgressMonitor monitor)
+ throws CoreException, InvocationTargetException, InterruptedException {
+ SubMonitor sub = SubMonitor.convert(monitor, Messages.TemplateWizard_Generating, 1);
+ generator.generate(model, sub);
+ getWorkbench().getDisplay().asyncExec(new Runnable() {
+ @Override
+ public void run() {
+ postProcess(generator);
+ }
+ });
+ sub.done();
+ }
+
+ @Override
+ public ISchedulingRule getRule() {
+ return ResourcesPlugin.getWorkspace().getRoot();
+ }
+ });
+ } catch (InterruptedException e) {
+ handle(e);
+ } catch (InvocationTargetException e) {
+ handle(e.getTargetException());
+ }
+ return true;
+ }
+
+ private void handle(Throwable target) {
+ String message = Messages.TemplateWizard_CannotBeCreated;
+ log(message, target);
+ IStatus status;
+ if (target instanceof CoreException) {
+ status = ((CoreException) target).getStatus();
+ } else {
+ status = new Status(IStatus.ERROR, FrameworkUtil.getBundle(getClass()).getSymbolicName(),
+ Messages.TemplateWizard_InternalError, target);
+ }
+ ErrorDialog.openError(getShell(), Messages.TemplateWizard_ErrorCreating, message, status);
+ }
+
+ private void log(String message, Throwable e) {
+ ILog log = Platform.getLog(getClass());
+ log.log(new Status(IStatus.ERROR, log.getBundle().getSymbolicName(), message, e));
+ }
+}
diff --git a/tools.templates/org.eclipse.tools.templates.ui/src/org/eclipse/tools/templates/ui/internal/Activator.java b/tools.templates/org.eclipse.tools.templates.ui/src/org/eclipse/tools/templates/ui/internal/Activator.java
new file mode 100644
index 00000000000..47ac3111dbf
--- /dev/null
+++ b/tools.templates/org.eclipse.tools.templates.ui/src/org/eclipse/tools/templates/ui/internal/Activator.java
@@ -0,0 +1,41 @@
+/*******************************************************************************
+ * Copyright (c) 2016 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.tools.templates.ui.internal;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator implements BundleActivator {
+ public static final String PLUGIN_ID = "org.eclipse.tools.templates.ui"; //$NON-NLS-1$
+
+ private static Activator plugin;
+
+ private TemplateExtension templateExtension;
+
+ @Override
+ public void start(BundleContext context) throws Exception {
+ plugin = this;
+ templateExtension = new TemplateExtension();
+ }
+
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ }
+
+ public static TemplateExtension getTemplateExtension() {
+ return plugin.templateExtension;
+ }
+
+}
diff --git a/tools.templates/org.eclipse.tools.templates.ui/src/org/eclipse/tools/templates/ui/internal/Tag.java b/tools.templates/org.eclipse.tools.templates.ui/src/org/eclipse/tools/templates/ui/internal/Tag.java
new file mode 100644
index 00000000000..1844511122a
--- /dev/null
+++ b/tools.templates/org.eclipse.tools.templates.ui/src/org/eclipse/tools/templates/ui/internal/Tag.java
@@ -0,0 +1,54 @@
+/*******************************************************************************
+ * Copyright (c) 2016 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.tools.templates.ui.internal;
+
+import org.eclipse.core.runtime.IConfigurationElement;
+
+public class Tag {
+
+ public static final String ALL_ID = "all"; //$NON-NLS-1$
+
+ public String id;
+ public String label;
+
+ public Tag(IConfigurationElement element) {
+ id = element.getAttribute("id"); //$NON-NLS-1$
+ label = element.getAttribute("label"); //$NON-NLS-1$
+ }
+
+ public Tag(String id, String label) {
+ this.id = id;
+ this.label = label;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public String getLabel() {
+ return label;
+ }
+
+ @Override
+ public int hashCode() {
+ return id.hashCode();
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof Tag) {
+ return id.equals(((Tag) obj).id);
+ } else {
+ return false;
+ }
+ }
+
+}
diff --git a/tools.templates/org.eclipse.tools.templates.ui/src/org/eclipse/tools/templates/ui/internal/TagListViewer.java b/tools.templates/org.eclipse.tools.templates.ui/src/org/eclipse/tools/templates/ui/internal/TagListViewer.java
new file mode 100644
index 00000000000..fca9ca5ad64
--- /dev/null
+++ b/tools.templates/org.eclipse.tools.templates.ui/src/org/eclipse/tools/templates/ui/internal/TagListViewer.java
@@ -0,0 +1,89 @@
+/*******************************************************************************
+ * Copyright (c) 2016 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.tools.templates.ui.internal;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Comparator;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.ListViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.widgets.Composite;
+
+public class TagListViewer extends ListViewer {
+
+ private Tag[] tags;
+
+ public TagListViewer(Composite parent, int style) {
+ super(parent, style);
+
+ setLabelProvider(new LabelProvider() {
+ @Override
+ public String getText(Object element) {
+ if (element instanceof Tag) {
+ return ((Tag) element).getLabel();
+ } else {
+ return super.getText(element);
+ }
+ }
+ });
+
+ setContentProvider(new IStructuredContentProvider() {
+ @Override
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ if (newInput != null) {
+ @SuppressWarnings("unchecked")
+ Collection<Tag> tagsList = (Collection<Tag>) newInput;
+ tags = tagsList.toArray(new Tag[tagsList.size()]);
+ Arrays.sort(tags, new Comparator<Tag>() {
+ @Override
+ public int compare(Tag o1, Tag o2) {
+ // Keep all at the top
+ if (o1.getId().equals(Tag.ALL_ID)) {
+ return -1;
+ }
+ if (o2.getId().equals(Tag.ALL_ID)) {
+ return 1;
+ }
+ return o1.getLabel().compareTo(o2.getLabel());
+ }
+ });
+ }
+ }
+
+ @Override
+ public void dispose() {
+ }
+
+ @Override
+ public Object[] getElements(Object inputElement) {
+ return tags;
+ }
+ });
+ }
+
+ public Collection<Tag> getSelectedTags() {
+ List<Tag> selectedTags = new ArrayList<>();
+ Iterator<Object> i = getStructuredSelection().iterator();
+ while (i.hasNext()) {
+ Tag tag = (Tag) i.next();
+ selectedTags.add(tag);
+ }
+
+ return selectedTags;
+ }
+
+}
diff --git a/tools.templates/org.eclipse.tools.templates.ui/src/org/eclipse/tools/templates/ui/internal/Template.java b/tools.templates/org.eclipse.tools.templates.ui/src/org/eclipse/tools/templates/ui/internal/Template.java
new file mode 100644
index 00000000000..4503d96a4c8
--- /dev/null
+++ b/tools.templates/org.eclipse.tools.templates.ui/src/org/eclipse/tools/templates/ui/internal/Template.java
@@ -0,0 +1,93 @@
+/*******************************************************************************
+ * Copyright (c) 2016 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.tools.templates.ui.internal;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.ui.IWorkbenchWizard;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+
+public class Template {
+
+ private final TemplateExtension parent;
+ private final IConfigurationElement element;
+ private Map<String, Tag> tags;
+
+ public Template(TemplateExtension parent, IConfigurationElement element) {
+ this.parent = parent;
+ this.element = element;
+ }
+
+ public String getId() {
+ return element.getAttribute("id"); //$NON-NLS-1$
+ }
+
+ public String getLabel() {
+ return element.getAttribute("label"); //$NON-NLS-1$
+ }
+
+ public String getDescription() {
+ IConfigurationElement[] descs = element.getChildren("description"); //$NON-NLS-1$
+ return descs.length > 0 ? descs[0].getValue() : null;
+ }
+
+ public ImageDescriptor getIcon() {
+ String iconPath = element.getAttribute("icon"); //$NON-NLS-1$
+
+ if (iconPath == null) {
+ return null;
+ }
+
+ return AbstractUIPlugin.imageDescriptorFromPlugin(element.getNamespaceIdentifier(), iconPath);
+ }
+
+ private void initTags() {
+ if (tags == null) {
+ tags = new HashMap<>();
+ for (IConfigurationElement ref : element.getChildren("tagReference")) { //$NON-NLS-1$
+ String id = ref.getAttribute("id"); //$NON-NLS-1$
+ Tag tag = parent.getTag(id);
+ if (tag != null) {
+ tags.put(tag.getId(), tag);
+ }
+ }
+ }
+ }
+
+ public void addTag(Tag tag) {
+ initTags();
+ tags.put(tag.getId(), tag);
+ }
+
+ public boolean hasTag(String tagId) {
+ if (tagId.equals(Tag.ALL_ID)) {
+ // All means all
+ return true;
+ }
+
+ initTags();
+ return tags.containsKey(tagId);
+ }
+
+ public Collection<Tag> getTags() {
+ return tags.values();
+ }
+
+ public IWorkbenchWizard getWizard() throws CoreException {
+ return (IWorkbenchWizard) element.createExecutableExtension("wizard"); //$NON-NLS-1$
+ }
+
+}
diff --git a/tools.templates/org.eclipse.tools.templates.ui/src/org/eclipse/tools/templates/ui/internal/TemplateExtension.java b/tools.templates/org.eclipse.tools.templates.ui/src/org/eclipse/tools/templates/ui/internal/TemplateExtension.java
new file mode 100644
index 00000000000..e30692706ea
--- /dev/null
+++ b/tools.templates/org.eclipse.tools.templates.ui/src/org/eclipse/tools/templates/ui/internal/TemplateExtension.java
@@ -0,0 +1,88 @@
+/*******************************************************************************
+ * Copyright (c) 2016 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.tools.templates.ui.internal;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.IExtensionRegistry;
+import org.eclipse.core.runtime.Platform;
+import org.osgi.framework.FrameworkUtil;
+
+//FIXME: AF: reimplement as a service
+public class TemplateExtension {
+
+ private Map<String, Template> templates;
+ private Map<String, Tag> tags;
+
+ private void init() {
+ if (templates != null)
+ return;
+
+ templates = new HashMap<>();
+ tags = new HashMap<>();
+
+ IExtensionRegistry registry = Platform.getExtensionRegistry();
+ IExtensionPoint point = registry.getExtensionPoint(FrameworkUtil.getBundle(getClass()).getSymbolicName(),
+ "templates"); //$NON-NLS-1$
+
+ // tags
+ Tag allTag = new Tag(Tag.ALL_ID, "All");
+ tags.put(allTag.getId(), allTag);
+
+ for (IConfigurationElement element : point.getConfigurationElements()) {
+ if (element.getName().equals("tag")) { //$NON-NLS-1$
+ Tag tag = new Tag(element);
+ tags.put(tag.getId(), tag);
+ }
+ }
+
+ // templates
+ for (IConfigurationElement element : point.getConfigurationElements()) {
+ if (element.getName().equals("template")) { //$NON-NLS-1$
+ Template template = new Template(this, element);
+ templates.put(template.getId(), template);
+ template.addTag(allTag);
+ }
+ }
+
+ // template extensions
+ for (IConfigurationElement element : point.getConfigurationElements()) {
+ if (element.getName().equals("templateExtension")) { //$NON-NLS-1$
+ String templateId = element.getAttribute("templateId"); //$NON-NLS-1$
+ Template template = templates.get(templateId);
+ if (template != null) {
+ for (IConfigurationElement tagRef : element.getChildren("tagReference")) { //$NON-NLS-1$
+ String tagId = tagRef.getAttribute("id"); //$NON-NLS-1$
+ Tag tag = tags.get(tagId);
+ if (tag != null) {
+ template.addTag(tag);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ public Collection<Template> getTemplates() {
+ init();
+ return templates.values();
+ }
+
+ public Tag getTag(String id) {
+ init();
+ return tags.get(id);
+ }
+
+}
diff --git a/tools.templates/org.eclipse.tools.templates.ui/src/org/eclipse/tools/templates/ui/internal/TemplateTable.java b/tools.templates/org.eclipse.tools.templates.ui/src/org/eclipse/tools/templates/ui/internal/TemplateTable.java
new file mode 100644
index 00000000000..ace73e6bbe9
--- /dev/null
+++ b/tools.templates/org.eclipse.tools.templates.ui/src/org/eclipse/tools/templates/ui/internal/TemplateTable.java
@@ -0,0 +1,204 @@
+/*******************************************************************************
+ * Copyright (c) 2016, 2021 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.tools.templates.ui.internal;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.graphics.FontData;
+import org.eclipse.swt.graphics.FontMetrics;
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableItem;
+import org.eclipse.swt.widgets.Widget;
+
+public class TemplateTable implements Listener {
+
+ private final Table table;
+ private Font fontBold;
+ private Font fontDefault;
+ private Map<ImageDescriptor, Image> images = new HashMap<>();
+
+ public TemplateTable(Composite parent, int style) {
+ table = new Table(parent, style);
+ table.addListener(SWT.MeasureItem, this);
+ table.addListener(SWT.EraseItem, this);
+ table.addListener(SWT.PaintItem, this);
+ table.addListener(SWT.Dispose, this);
+ }
+
+ public Table getTable() {
+ return table;
+ }
+
+ public void setTemplates(Collection<Template> templates) {
+ table.removeAll();
+ List<Template> sorted = new ArrayList<>(templates);
+ Collections.sort(sorted, new Comparator<Template>() {
+ @Override
+ public int compare(Template o1, Template o2) {
+ return o1.getLabel().compareToIgnoreCase(o2.getLabel());
+ }
+ });
+ for (Template template : sorted) {
+ TableItem item = new TableItem(table, SWT.NONE);
+ item.setData(template);
+ // Since we have nothing to help SWTBot find items, store the label
+ item.setData("org.eclipse.swtbot.widget.key", template.getLabel()); //$NON-NLS-1$
+ }
+ }
+
+ public Template getSelectedTemplate() {
+ TableItem[] items = table.getSelection();
+ if (items.length > 0) {
+ return (Template) items[0].getData();
+ } else {
+ return null;
+ }
+ }
+
+ public void selectTemplate(Template template) {
+ if (template == null) {
+ return;
+ }
+
+ int i = 0;
+ for (TableItem item : table.getItems()) {
+ if (template.equals(item.getData())) {
+ table.select(i);
+ break;
+ }
+ i++;
+ }
+ }
+
+ @Override
+ public void handleEvent(Event event) {
+ switch (event.type) {
+ case SWT.MeasureItem:
+ computeItemArea(event);
+ break;
+ case SWT.PaintItem:
+ paintItem(event);
+ break;
+ case SWT.EraseItem:
+ computeItemArea(event);
+ break;
+ case SWT.Dispose:
+ for (Image image : images.values()) {
+ image.dispose();
+ }
+ break;
+ }
+ }
+
+ private void initFonts(GC gc) {
+ if (fontDefault == null) {
+ Font font = gc.getFont();
+ FontData[] data = font.getFontData();
+ if (data.length > 0) {
+ Display display = table.getDisplay();
+ FontData d = data[0];
+ FontData normal = new FontData(d.getName(), d.getHeight(), d.getStyle() | SWT.ITALIC);
+ fontDefault = new Font(display, normal);
+ FontData bold = new FontData(d.getName(), Math.round(d.getHeight() * 1.15F), d.getStyle() | SWT.BOLD);
+ fontBold = new Font(display, bold);
+ }
+ }
+ }
+
+ private void computeItemArea(Event event) {
+ GC gc = event.gc;
+ FontMetrics metrics = gc.getFontMetrics();
+ int height = (int) (metrics.getHeight() * 3.15);
+
+ event.width = table.getClientArea().width - event.x;
+ event.height = Math.max(48, height) + 8; // 48 for icon/text, 8 margin
+ }
+
+ private void paintItem(Event event) {
+ Widget w = event.item;
+ GC gc = event.gc;
+ initFonts(gc);
+ if (w instanceof TableItem) {
+ TableItem item = (TableItem) w;
+ Template template = (Template) item.getData();
+
+ // image
+ ImageDescriptor imageDesc = template.getIcon();
+ Image image = images.get(imageDesc);
+ if (image == null && imageDesc != null) {
+ image = imageDesc.createImage();
+ images.put(imageDesc, image);
+ }
+ if (image != null) {
+ gc.drawImage(image, event.x, event.y + Math.max(0, (event.height - 48) / 2));
+ }
+
+ int imageWidth = 48 + 6; // icon plus margin
+
+ // name in bold
+ gc.setFont(fontBold);
+ String name = template.getLabel();
+ Point nameExtent = gc.textExtent(name, SWT.DRAW_TRANSPARENT);
+ gc.drawText(name, event.x + imageWidth, event.y, SWT.DRAW_TRANSPARENT);
+
+ // description in one or two lines
+ String description = template.getDescription();
+ if (description != null) {
+ gc.setFont(fontDefault);
+ int flags = SWT.DRAW_TRANSPARENT | SWT.DRAW_DELIMITER;
+ int width = table.getClientArea().width;
+ Point descExt = gc.textExtent(description, flags);
+ int descWidth = width - imageWidth;
+ if (descExt.x > descWidth) {
+ FontMetrics fm = gc.getFontMetrics();
+ int averageCharWidth = fm.getAverageCharWidth();
+ int charsMaxNumberInRow = descWidth / averageCharWidth;
+ if (description.length() > charsMaxNumberInRow) {
+ String firstLine = description.substring(0, charsMaxNumberInRow);
+ int lastWS = firstLine.lastIndexOf(' ');
+ int endIndex = lastWS + 1 + charsMaxNumberInRow;
+ description = firstLine.substring(0, lastWS) + '\n'
+ + description.substring(lastWS + 1, Math.min(endIndex, description.length()));
+ }
+ }
+ gc.drawText(description, event.x + imageWidth, event.y + nameExtent.y, flags);
+ }
+ }
+ }
+
+ public void dispose() {
+ if (fontDefault != null) {
+ fontDefault.dispose();
+ fontDefault = null;
+ }
+ if (fontBold != null) {
+ fontBold.dispose();
+ fontBold = null;
+ }
+ }
+
+}
diff --git a/tools.templates/org.eclipse.tools.templates.ui/src/org/eclipse/tools/templates/ui/messages.properties b/tools.templates/org.eclipse.tools.templates.ui/src/org/eclipse/tools/templates/ui/messages.properties
new file mode 100644
index 00000000000..20316146107
--- /dev/null
+++ b/tools.templates/org.eclipse.tools.templates.ui/src/org/eclipse/tools/templates/ui/messages.properties
@@ -0,0 +1,6 @@
+ProjectImportConfigurator_Checking=Checking: {0}
+TemplateWizard_CannotBeCreated=Project cannot be created
+TemplateWizard_ErrorCreating=Error Creating Project
+TemplateWizard_FailedToOpen=Failed to open editor
+TemplateWizard_Generating=Generating
+TemplateWizard_InternalError=Internal Error:
diff --git a/tools.templates/pom.xml b/tools.templates/pom.xml
new file mode 100644
index 00000000000..96deb2aface
--- /dev/null
+++ b/tools.templates/pom.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2017, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
+<project
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+ xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.cdt</groupId>
+ <artifactId>cdt-parent</artifactId>
+ <version>10.7.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>org.eclipse.cdt.tools.template-parent</artifactId>
+ <packaging>pom</packaging>
+</project>
diff --git a/unittest/org.eclipse.cdt.unittest.feature/.project b/unittest/org.eclipse.cdt.unittest.feature/.project
new file mode 100644
index 00000000000..afaaf22cddb
--- /dev/null
+++ b/unittest/org.eclipse.cdt.unittest.feature/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.cdt.unittest.feature</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.pde.FeatureBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.FeatureNature</nature>
+ </natures>
+</projectDescription>
diff --git a/unittest/org.eclipse.cdt.unittest.feature/.settings/org.eclipse.core.resources.prefs b/unittest/org.eclipse.cdt.unittest.feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/unittest/org.eclipse.cdt.unittest.feature/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/unittest/org.eclipse.cdt.unittest.feature/.settings/org.eclipse.core.runtime.prefs b/unittest/org.eclipse.cdt.unittest.feature/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 00000000000..5a0ad22d2a7
--- /dev/null
+++ b/unittest/org.eclipse.cdt.unittest.feature/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/unittest/org.eclipse.cdt.unittest.feature/about.html b/unittest/org.eclipse.cdt.unittest.feature/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/unittest/org.eclipse.cdt.unittest.feature/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/unittest/org.eclipse.cdt.unittest.feature/about.ini b/unittest/org.eclipse.cdt.unittest.feature/about.ini
new file mode 100644
index 00000000000..e07a7bb377e
--- /dev/null
+++ b/unittest/org.eclipse.cdt.unittest.feature/about.ini
@@ -0,0 +1,24 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%blurb
+
+# Property "windowImage" contains path to window icon (16x16)
+# needed for primary features only
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=cdt_logo_icon32.png
+
+# Property "aboutImage" contains path to product image (500x330 or 115x164)
+# needed for primary features only
+
+# Property "appName" contains name of the application (translated)
+# needed for primary features only
+
+# Property "welcomePerspective" contains the id of the perspective in which the
+# welcome page is to be opened.
+# optional
diff --git a/unittest/org.eclipse.cdt.unittest.feature/about.mappings b/unittest/org.eclipse.cdt.unittest.feature/about.mappings
new file mode 100644
index 00000000000..936a8039c3e
--- /dev/null
+++ b/unittest/org.eclipse.cdt.unittest.feature/about.mappings
@@ -0,0 +1,9 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+# The following should contain the build version.
+# e.g. "0=20200106-1728"
+# This value will be added automatically via the build scripts
+0=${buildId}
diff --git a/unittest/org.eclipse.cdt.unittest.feature/about.properties b/unittest/org.eclipse.cdt.unittest.feature/about.properties
new file mode 100644
index 00000000000..5e2d1282313
--- /dev/null
+++ b/unittest/org.eclipse.cdt.unittest.feature/about.properties
@@ -0,0 +1,32 @@
+###############################################################################
+# Copyright (c) 2020, 2022 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+# about.properties
+# contains externalized strings for about.ini
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# fill-ins are supplied by about.mappings
+# This file should be translated.
+# NOTE TO TRANSLATOR: Please do not translate the featureVersion variable.
+
+
+blurb=C/C++ Test runner client for UnitTest View\n\
+\n\
+Version: {featureVersion}\n\
+Build id: {0}\n\
+\n\
+Copyright (c) 2020, 2022 Contributors to the Eclipse Foundation
+\n\
+See the NOTICE file(s) distributed with this work for additional\n\
+information regarding copyright ownership.\n\
+\n\
+Visit http://www.eclipse.org/cdt
diff --git a/unittest/org.eclipse.cdt.unittest.feature/build.properties b/unittest/org.eclipse.cdt.unittest.feature/build.properties
new file mode 100644
index 00000000000..2aed40631e7
--- /dev/null
+++ b/unittest/org.eclipse.cdt.unittest.feature/build.properties
@@ -0,0 +1,23 @@
+###############################################################################
+# Copyright (c) 2020 Red Hat, Inc.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Red Hat Inc. - initial API and implementation
+###############################################################################
+bin.includes = feature.xml,\
+ feature.properties,\
+ about.html,\
+ about.ini,\
+ about.mappings,\
+ about.properties,\
+ cdt_logo_icon32.png
+src.includes = feature.xml,\
+ feature.properties,\
+ about.html \ No newline at end of file
diff --git a/unittest/org.eclipse.cdt.unittest.feature/cdt_logo_icon32.png b/unittest/org.eclipse.cdt.unittest.feature/cdt_logo_icon32.png
new file mode 100644
index 00000000000..470ca81b327
--- /dev/null
+++ b/unittest/org.eclipse.cdt.unittest.feature/cdt_logo_icon32.png
Binary files differ
diff --git a/unittest/org.eclipse.cdt.unittest.feature/feature.properties b/unittest/org.eclipse.cdt.unittest.feature/feature.properties
new file mode 100644
index 00000000000..0730fa2d6b7
--- /dev/null
+++ b/unittest/org.eclipse.cdt.unittest.feature/feature.properties
@@ -0,0 +1,22 @@
+#################################################################################
+# Copyright (c) 2020 Red Hat, Inc.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Red Hat Inc. - initial API and implementation
+#################################################################################
+featureName=C/C++ Test runner client for UnitTest View
+description=Support for running C/C++ unit tests using UnitTest View
+providerName=Eclipse CDT
+copyright=\
+Copyright (c) 2020 Red Hat, Inc. and others.\n\
+This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License 2.0\n\
+which accompanies this distribution, and is available at\n\
+https://www.eclipse.org/legal/epl-2.0/
diff --git a/unittest/org.eclipse.cdt.unittest.feature/feature.xml b/unittest/org.eclipse.cdt.unittest.feature/feature.xml
new file mode 100644
index 00000000000..acc26dcd675
--- /dev/null
+++ b/unittest/org.eclipse.cdt.unittest.feature/feature.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2020, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
+<feature
+ id="org.eclipse.cdt.unittest.feature"
+ label="%featureName"
+ version="10.7.0.qualifier"
+ provider-name="%providerName"
+ license-feature="org.eclipse.license"
+ license-feature-version="0.0.0">
+
+ <description>
+ %description
+ </description>
+
+ <copyright>
+ %copyright
+ </copyright>
+
+ <license url="%licenseURL">
+ %license
+ </license>
+
+ <requires>
+ <import plugin="org.eclipse.unittest.ui"/>
+ <import plugin="org.eclipse.cdt.testsrunner"/>
+ <import plugin="org.eclipse.cdt.debug.core"/>
+ <import plugin="org.eclipse.cdt.debug.ui"/>
+ <import plugin="org.eclipse.cdt.managedbuilder.core"/>
+ <import plugin="org.eclipse.cdt.launch"/>
+ <import plugin="org.eclipse.cdt.dsf.gdb"/>
+ <import plugin="org.eclipse.cdt.dsf.gdb.ui"/>
+ <import plugin="org.eclipse.cdt.core"/>
+ <import plugin="org.eclipse.cdt.ui"/>
+ <import plugin="org.eclipse.search"/>
+ <import plugin="org.eclipse.jface.text"/>
+ <import plugin="org.eclipse.ui.workbench.texteditor"/>
+ <import plugin="org.eclipse.ui"/>
+ <import plugin="org.eclipse.core.runtime"/>
+ <import plugin="org.eclipse.debug.core"/>
+ <import plugin="org.eclipse.debug.ui"/>
+ <import plugin="org.eclipse.core.filesystem"/>
+ <import plugin="org.eclipse.ui.ide"/>
+ </requires>
+
+ <plugin
+ id="org.eclipse.cdt.unittest"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+</feature>
diff --git a/unittest/org.eclipse.cdt.unittest/.classpath b/unittest/org.eclipse.cdt.unittest/.classpath
new file mode 100644
index 00000000000..4a00becd81d
--- /dev/null
+++ b/unittest/org.eclipse.cdt.unittest/.classpath
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11">
+ <attributes>
+ <attribute name="module" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/unittest/org.eclipse.cdt.unittest/.project b/unittest/org.eclipse.cdt.unittest/.project
new file mode 100644
index 00000000000..846548d65f9
--- /dev/null
+++ b/unittest/org.eclipse.cdt.unittest/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.cdt.unittest</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+ </natures>
+</projectDescription>
diff --git a/unittest/org.eclipse.cdt.unittest/.settings/org.eclipse.core.resources.prefs b/unittest/org.eclipse.cdt.unittest/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/unittest/org.eclipse.cdt.unittest/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/unittest/org.eclipse.cdt.unittest/.settings/org.eclipse.core.runtime.prefs b/unittest/org.eclipse.cdt.unittest/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 00000000000..5a0ad22d2a7
--- /dev/null
+++ b/unittest/org.eclipse.cdt.unittest/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/unittest/org.eclipse.cdt.unittest/.settings/org.eclipse.jdt.core.prefs b/unittest/org.eclipse.cdt.unittest/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..e3a8104f9ca
--- /dev/null
+++ b/unittest/org.eclipse.cdt.unittest/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,486 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/unittest/org.eclipse.cdt.unittest/.settings/org.eclipse.jdt.launching.prefs b/unittest/org.eclipse.cdt.unittest/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 00000000000..f8a131b56e0
--- /dev/null
+++ b/unittest/org.eclipse.cdt.unittest/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_COMPILER_COMPLIANCE_DOES_NOT_MATCH_JRE=warning
+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=warning
diff --git a/unittest/org.eclipse.cdt.unittest/.settings/org.eclipse.jdt.ui.prefs b/unittest/org.eclipse.cdt.unittest/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..d35ba9b5231
--- /dev/null
+++ b/unittest/org.eclipse.cdt.unittest/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,213 @@
+cleanup.add_all=false
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
+cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
+cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
+cleanup_profile=_CDT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CDT
+formatter_settings_version=14
+internal.default.compliance=user
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=1000
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=1000
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/unittest/org.eclipse.cdt.unittest/.settings/org.eclipse.pde.api.tools.prefs b/unittest/org.eclipse.cdt.unittest/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 00000000000..ec9fbf321d0
--- /dev/null
+++ b/unittest/org.eclipse.cdt.unittest/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,184 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITH_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_FIELD=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERCLASS_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_CHANGED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+CLASS_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+ENUM_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENTS=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETERS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_CLASS=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TO_ENUM=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Error
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Warning
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error
+MISSING_EE_DESCRIPTIONS=Warning
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=false
+changed_execution_env=Error
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+incompatible_api_component_version_report_major_without_breaking_change=Warning
+incompatible_api_component_version_report_minor_without_api_change=Warning
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/unittest/org.eclipse.cdt.unittest/.settings/org.eclipse.pde.prefs b/unittest/org.eclipse.cdt.unittest/.settings/org.eclipse.pde.prefs
new file mode 100644
index 00000000000..d2dc703ba9e
--- /dev/null
+++ b/unittest/org.eclipse.cdt.unittest/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,35 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=2
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=2
+compilers.p.missing-version-export-package=2
+compilers.p.missing-version-import-package=2
+compilers.p.missing-version-require-bundle=2
+compilers.p.no-required-att=0
+compilers.p.no.automatic.module=1
+compilers.p.not-externalized-att=1
+compilers.p.service.component.without.lazyactivation=1
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/unittest/org.eclipse.cdt.unittest/META-INF/MANIFEST.MF b/unittest/org.eclipse.cdt.unittest/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..cfefc478a05
--- /dev/null
+++ b/unittest/org.eclipse.cdt.unittest/META-INF/MANIFEST.MF
@@ -0,0 +1,30 @@
+Manifest-Version: 1.0
+Automatic-Module-Name: org.eclipse.cdt.unittest
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.cdt.unittest;singleton:=true
+Bundle-Version: 1.0.100.qualifier
+Bundle-Activator: org.eclipse.cdt.unittest.CDTUnitTestPlugin
+Bundle-ActivationPolicy: lazy
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.unittest.ui,
+ org.eclipse.cdt.testsrunner,
+ org.eclipse.cdt.debug.core,
+ org.eclipse.cdt.debug.ui,
+ org.eclipse.cdt.managedbuilder.core,
+ org.eclipse.cdt.launch,
+ org.eclipse.cdt.dsf.gdb,
+ org.eclipse.cdt.dsf.gdb.ui,
+ org.eclipse.cdt.core,
+ org.eclipse.cdt.ui,
+ org.eclipse.search,
+ org.eclipse.core.runtime;bundle-version="[3.11.0,4.0.0)",
+ org.eclipse.ui;bundle-version="[3.5.0,4.0.0)",
+ org.eclipse.debug.core;bundle-version="[3.5.0,4.0.0)",
+ org.eclipse.debug.ui;bundle-version="[3.5.0,4.0.0)",
+ org.eclipse.jface.text;bundle-version="[3.5.0,4.0.0)",
+ org.eclipse.ui.workbench.texteditor;bundle-version="[3.5.0,4.0.0)",
+ org.eclipse.core.filesystem,
+ org.eclipse.ui.ide;bundle-version="[3.5.0,4.0.0)"
+Bundle-RequiredExecutionEnvironment: JavaSE-11
diff --git a/unittest/org.eclipse.cdt.unittest/about.html b/unittest/org.eclipse.cdt.unittest/about.html
new file mode 100644
index 00000000000..b3134865230
--- /dev/null
+++ b/unittest/org.eclipse.cdt.unittest/about.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
+</head>
+
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ (&quot;Content&quot;). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
+ </p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/unittest/org.eclipse.cdt.unittest/about.ini b/unittest/org.eclipse.cdt.unittest/about.ini
new file mode 100644
index 00000000000..e07a7bb377e
--- /dev/null
+++ b/unittest/org.eclipse.cdt.unittest/about.ini
@@ -0,0 +1,24 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%blurb
+
+# Property "windowImage" contains path to window icon (16x16)
+# needed for primary features only
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=cdt_logo_icon32.png
+
+# Property "aboutImage" contains path to product image (500x330 or 115x164)
+# needed for primary features only
+
+# Property "appName" contains name of the application (translated)
+# needed for primary features only
+
+# Property "welcomePerspective" contains the id of the perspective in which the
+# welcome page is to be opened.
+# optional
diff --git a/unittest/org.eclipse.cdt.unittest/about.mappings b/unittest/org.eclipse.cdt.unittest/about.mappings
new file mode 100644
index 00000000000..936a8039c3e
--- /dev/null
+++ b/unittest/org.eclipse.cdt.unittest/about.mappings
@@ -0,0 +1,9 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+# The following should contain the build version.
+# e.g. "0=20200106-1728"
+# This value will be added automatically via the build scripts
+0=${buildId}
diff --git a/unittest/org.eclipse.cdt.unittest/about.properties b/unittest/org.eclipse.cdt.unittest/about.properties
new file mode 100644
index 00000000000..c03bbd2c411
--- /dev/null
+++ b/unittest/org.eclipse.cdt.unittest/about.properties
@@ -0,0 +1,32 @@
+###############################################################################
+# Copyright (c) 2020 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+# about.properties
+# contains externalized strings for about.ini
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# fill-ins are supplied by about.mappings
+# This file should be translated.
+# NOTE TO TRANSLATOR: Please do not translate the featureVersion variable.
+
+
+blurb=C/C++ Test runner client for UnitTest View\n\
+\n\
+Version: {featureVersion}\n\
+Build id: {0}\n\
+\n\
+Copyright (c) 2012, 2020 Contributors to the Eclipse Foundation
+\n\
+See the NOTICE file(s) distributed with this work for additional\n\
+information regarding copyright ownership.\n\
+\n\
+Visit http://www.eclipse.org/cdt
diff --git a/unittest/org.eclipse.cdt.unittest/build.properties b/unittest/org.eclipse.cdt.unittest/build.properties
new file mode 100644
index 00000000000..d4235413cbb
--- /dev/null
+++ b/unittest/org.eclipse.cdt.unittest/build.properties
@@ -0,0 +1,29 @@
+###############################################################################
+# Copyright (c) 2020 IBM Corporation and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# IBM Corporation - initial API and implementation
+###############################################################################
+bin.includes = plugin.xml,\
+ about.html,\
+ icons/,\
+ plugin.properties,\
+ .,\
+ META-INF/
+ about.ini,\
+ about.mappings,\
+ about.properties,\
+ cdt_logo_icon32.png
+
+source.. = src/
+
+src.includes = about.html
+
+javacWarnings..=-unavoidableGenericProblems \ No newline at end of file
diff --git a/unittest/org.eclipse.cdt.unittest/cdt_logo_icon32.png b/unittest/org.eclipse.cdt.unittest/cdt_logo_icon32.png
new file mode 100644
index 00000000000..470ca81b327
--- /dev/null
+++ b/unittest/org.eclipse.cdt.unittest/cdt_logo_icon32.png
Binary files differ
diff --git a/unittest/org.eclipse.cdt.unittest/icons/eview16/cppunit.gif b/unittest/org.eclipse.cdt.unittest/icons/eview16/cppunit.gif
new file mode 100644
index 00000000000..883170d6d3d
--- /dev/null
+++ b/unittest/org.eclipse.cdt.unittest/icons/eview16/cppunit.gif
Binary files differ
diff --git a/unittest/org.eclipse.cdt.unittest/icons/obj16/test_notrun.gif b/unittest/org.eclipse.cdt.unittest/icons/obj16/test_notrun.gif
new file mode 100644
index 00000000000..8f73ccb15ba
--- /dev/null
+++ b/unittest/org.eclipse.cdt.unittest/icons/obj16/test_notrun.gif
Binary files differ
diff --git a/unittest/org.eclipse.cdt.unittest/plugin.properties b/unittest/org.eclipse.cdt.unittest/plugin.properties
new file mode 100644
index 00000000000..9a7bd96fd95
--- /dev/null
+++ b/unittest/org.eclipse.cdt.unittest/plugin.properties
@@ -0,0 +1,31 @@
+###############################################################################
+ # Copyright (c) 2020 Red Hat Inc. and others.
+ #
+ # This program and the accompanying materials
+ # are made available under the terms of the Eclipse Public License 2.0
+ # which accompanies this distribution, and is available at
+ # https://www.eclipse.org/legal/epl-2.0/
+ #
+ # SPDX-License-Identifier: EPL-2.0
+ #
+ # Contributors:
+ # Red Hat Inc. - initial API and implementation
+ ###############################################################################
+
+pluginName=C/C++ Test runner client for UnitTest View
+providerName=Eclipse.org
+
+CPPUnitLaunchConfigurationType.name=C/C++ Unit Test (generic Test view)
+
+CPPUnitLaunch.name=Run C/C++ Unit Test Launcher
+CPPUnitLaunch.description=Run C/C++ tests.
+CPPUnitLaunchDSF.name=GDB (DSF) C/C++ Unit Test Launcher
+CPPUnitLaunchDSF.description=Run C/C++ Tests under control of GDB debugger integrated using the Debugger Services Framework (DSF).
+
+MainLaunchTab.name=Main
+ArgumentsLaunchTab.name=Arguments
+CTestingLaunchTab.name=C/C++ Testing
+EnvironmentLaunchTab.name=Environment
+DebuggerLaunchTab.name=Debugger
+SourceLookupLaunchTab.name=Source
+CommonLaunchTab.name=Common
diff --git a/unittest/org.eclipse.cdt.unittest/plugin.xml b/unittest/org.eclipse.cdt.unittest/plugin.xml
new file mode 100644
index 00000000000..b2e5534d7fd
--- /dev/null
+++ b/unittest/org.eclipse.cdt.unittest/plugin.xml
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+<plugin>
+
+ <extension
+ point="org.eclipse.debug.core.launchConfigurationTypes">
+ <launchConfigurationType
+ id="org.eclipse.cdt.unittest.testsrunner.launch.CTestsRunner"
+ name="%CPPUnitLaunchConfigurationType.name"
+ modes="run, debug"
+ public="true">
+ </launchConfigurationType>
+ </extension>
+
+ <extension
+ point="org.eclipse.unittest.ui.unittestViewSupport">
+ <viewSupport
+ id="org.eclipse.cdt.unittest.loader"
+ class="org.eclipse.cdt.unittest.launcher.CDTTestViewSupport">
+ </viewSupport>
+ </extension>
+
+ <extension
+ point="org.eclipse.debug.ui.launchConfigurationTabGroups">
+ <launchConfigurationTabGroup
+ class="org.eclipse.cdt.unittest.internal.launcher.EmptyConfigurationTabGroup"
+ id="org.eclipse.cdt.unittest.testsrunner.launch.runTestsTabGroup"
+ type="org.eclipse.cdt.unittest.testsrunner.launch.CTestsRunner">
+ <launchMode mode="run"/>
+ </launchConfigurationTabGroup>
+ <launchConfigurationTabGroup
+ class="org.eclipse.cdt.unittest.internal.launcher.EmptyConfigurationTabGroup"
+ id="org.eclipse.cdt.unittest.testsrunner.launch.debugTestsLaunchTabGroup"
+ type="org.eclipse.cdt.unittest.testsrunner.launch.CTestsRunner">
+ <launchMode mode="debug"/>
+ </launchConfigurationTabGroup>
+ </extension>
+ <extension
+ point="org.eclipse.debug.ui.launchConfigurationTypeImages">
+ <launchConfigurationTypeImage
+ configTypeID="org.eclipse.cdt.unittest.testsrunner.launch.CTestsRunner"
+ icon="$nl$/icons/eview16/cppunit.gif"
+ id="org.eclipse.cdt.testsrunner.launch.CTestsRunner.image">
+ </launchConfigurationTypeImage>
+ </extension>
+
+ <extension
+ point="org.eclipse.debug.core.launchDelegates">
+ <launchDelegate
+ id="org.eclipse.cdt.unittest.testsrunner.launch.runTests"
+ type="org.eclipse.cdt.unittest.testsrunner.launch.CTestsRunner"
+ delegate="org.eclipse.cdt.unittest.internal.launcher.RunTestsLaunchDelegate"
+ modes="run"
+ name="%CPPUnitLaunch.name"
+ delegateDescription="%CPPUnitLaunch.description"
+ sourceLocatorId="org.eclipse.cdt.debug.core.sourceLocator"
+ sourcePathComputerId="org.eclipse.cdt.debug.core.sourcePathComputer">
+ </launchDelegate>
+ <launchDelegate
+ id="org.eclipse.cdt.unittest.testsrunner.launch.dsf.runTests"
+ type="org.eclipse.cdt.unittest.testsrunner.launch.CTestsRunner"
+ delegate="org.eclipse.cdt.unittest.internal.launcher.DsfGdbRunTestsLaunchDelegate"
+ modes="debug"
+ name="%CPPUnitLaunchDSF.name"
+ delegateDescription="%CPPUnitLaunchDSF.description"
+ sourceLocatorId="org.eclipse.cdt.debug.core.sourceLocator"
+ sourcePathComputerId="org.eclipse.cdt.debug.core.sourcePathComputer">
+ </launchDelegate>
+ </extension>
+
+ <extension
+ point="org.eclipse.debug.ui.launchConfigurationTabs">
+ <!-- Tests run tabs-->
+ <tab
+ id="org.eclipse.cdt.unittest.testsrunner.launch.mainTab"
+ group="org.eclipse.cdt.unittest.testsrunner.launch.runTestsTabGroup"
+ name="%MainLaunchTab.name"
+ class="org.eclipse.cdt.launch.ui.CMainTab2">
+ <associatedDelegate delegate="org.eclipse.cdt.unittest.testsrunner.launch.runTests"/>
+ </tab>
+ <tab
+ id="org.eclipse.cdt.unittest.testsrunner.launch.argumentsTab"
+ group="org.eclipse.cdt.unittest.testsrunner.launch.runTestsTabGroup"
+ name="%ArgumentsLaunchTab.name"
+ class="org.eclipse.cdt.launch.ui.CArgumentsTab">
+ <associatedDelegate delegate="org.eclipse.cdt.unittest.testsrunner.launch.runTests"/>
+ <placement after="org.unittest.eclipse.cdt.cdi.launch.mainTab"/>
+ </tab>
+ <tab
+ id="org.eclipse.cdt.unittest.testsrunner.launch.testingTab"
+ group="org.eclipse.cdt.unittest.testsrunner.launch.runTestsTabGroup"
+ name="%CTestingLaunchTab.name"
+ class="org.eclipse.cdt.unittest.internal.launcher.CTestingTab">
+ <associatedDelegate delegate="org.eclipse.cdt.unittest.testsrunner.launch.runTests"/>
+ <placement after="org.unittest.eclipse.cdt.cdi.launch.argumentsTab"/>
+ </tab>
+ <tab
+ id="org.eclipse.cdt.unittest.testsrunner.launch.environmentTab"
+ group="org.eclipse.cdt.unittest.testsrunner.launch.runTestsTabGroup"
+ name="%EnvironmentLaunchTab.name"
+ class="org.eclipse.debug.ui.EnvironmentTab">
+ <associatedDelegate delegate="org.eclipse.cdt.unittest.testsrunner.launch.runTests"/>
+ <placement after="org.unittest.eclipse.cdt.testsrunner.testingTab"/>
+ </tab>
+ <tab
+ id="org.eclipse.cdt.unittest.testsrunner.launch.commonTab"
+ group="org.eclipse.cdt.unittest.testsrunner.launch.runTestsTabGroup"
+ name="%CommonLaunchTab.name"
+ class="org.eclipse.debug.ui.CommonTab">
+ <associatedDelegate delegate="org.eclipse.cdt.unittest.testsrunner.launch.runTests"/>
+ <placement after="org.eclipse.cdt.unittest.cdi.launch.environmentTab"/>
+ </tab>
+
+ <!-- Tests debug (DSF) tabs-->
+ <tab
+ id="org.eclipse.cdt.unittest.testsrunner.launch.dsf.gdb.mainTab"
+ group="org.eclipse.cdt.unittest.testsrunner.launch.debugTestsLaunchTabGroup"
+ name="%MainLaunchTab.name"
+ class="org.eclipse.cdt.dsf.gdb.internal.ui.launching.CMainTab">
+ <associatedDelegate delegate="org.eclipse.cdt.unittest.testsrunner.launch.dsf.runTests"/>
+ </tab>
+ <tab
+ id="org.eclipse.cdt.unittest.testsrunner.launch.dsf.gdb.argumentsTab"
+ group="org.eclipse.cdt.unittest.testsrunner.launch.debugTestsLaunchTabGroup"
+ name="%ArgumentsLaunchTab.name"
+ class="org.eclipse.cdt.dsf.gdb.internal.ui.launching.CArgumentsTab">
+ <associatedDelegate delegate="org.eclipse.cdt.unittest.testsrunner.launch.dsf.runTests"/>
+ <placement after="org.eclipse.cdt.unittest.testsrunner.launch.dsf.gdb.mainTab"/>
+ </tab>
+ <tab
+ id="org.eclipse.cdt.unittest.testsrunner.launch.dsf.gdb.testingTab"
+ group="org.eclipse.cdt.unittest.testsrunner.launch.debugTestsLaunchTabGroup"
+ name="%CTestingLaunchTab.name"
+ class="org.eclipse.cdt.unittest.internal.launcher.CTestingTab">
+ <associatedDelegate delegate="org.eclipse.cdt.unittest.testsrunner.launch.dsf.runTests"/>
+ <placement after="org.eclipse.cdt.unittest.testsrunner.launch.dsf.gdb.argumentsTab"/>
+ </tab>
+ <tab
+ id="org.eclipse.cdt.unittest.testsrunner.launch.dsf.gdb.environmentTab"
+ group="org.eclipse.cdt.unittest.testsrunner.launch.debugTestsLaunchTabGroup"
+ name="%EnvironmentLaunchTab.name"
+ class="org.eclipse.debug.ui.EnvironmentTab">
+ <associatedDelegate delegate="org.eclipse.cdt.unittest.testsrunner.launch.dsf.runTests"/>
+ <placement after="org.eclipse.cdt.unittest.testsrunner.launch.dsf.gdb.testingTab"/>
+ </tab>
+ <tab
+ id="org.eclipse.cdt.unittest.testsrunner.launch.dsf.gdb.debuggerTab"
+ group="org.eclipse.cdt.unittest.testsrunner.launch.debugTestsLaunchTabGroup"
+ name="%DebuggerLaunchTab.name"
+ class="org.eclipse.cdt.dsf.gdb.internal.ui.launching.LocalApplicationCDebuggerTab">
+ <associatedDelegate delegate="org.eclipse.cdt.unittest.testsrunner.launch.dsf.runTests"/>
+ <placement after="org.eclipse.cdt.unittest.testsrunner.launch.dsf.gdb.environmentTab"/>
+ </tab>
+ <tab
+ id="org.eclipse.cdt.unittest.testsrunner.launch.dsf.gdb.sourceLookupTab"
+ group="org.eclipse.cdt.unittest.testsrunner.launch.debugTestsLaunchTabGroup"
+ name="%SourceLookupLaunchTab.name"
+ class="org.eclipse.debug.ui.sourcelookup.SourceLookupTab">
+ <associatedDelegate delegate="org.eclipse.cdt.unittest.testsrunner.launch.dsf.runTests"/>
+ <placement after="org.eclipse.cdt.unittest.testsrunner.launch.dsf.gdb.debuggerTab"/>
+ </tab>
+ <tab
+ id="org.eclipse.cdt.unittest.testsrunner.launch.dsf.gdb.commonTab"
+ group="org.eclipse.cdt.unittest.testsrunner.launch.debugTestsLaunchTabGroup"
+ name="%CommonLaunchTab.name"
+ class="org.eclipse.debug.ui.CommonTab">
+ <associatedDelegate delegate="org.eclipse.cdt.unittest.testsrunner.launch.dsf.runTests"/>
+ <placement after="org.eclipse.cdt.unittest.testsrunner.launch.dsf.gdb.sourceLookupTab"/>
+ </tab>
+
+ </extension>
+
+ <extension
+ point="org.eclipse.debug.core.processFactories">
+ <processFactory
+ class="org.eclipse.cdt.unittest.internal.launcher.TestingProcessFactory"
+ id="org.eclipse.cdt.unittest.testsrunner.TestingProcessFactory">
+ </processFactory>
+ </extension>
+
+</plugin>
diff --git a/unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/CDTUnitTestPlugin.java b/unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/CDTUnitTestPlugin.java
new file mode 100644
index 00000000000..fe6901dd548
--- /dev/null
+++ b/unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/CDTUnitTestPlugin.java
@@ -0,0 +1,89 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Red Hat Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Red Hat Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.unittest;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Plugin;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.preferences.InstanceScope;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+
+/**
+ * The plug-in runtime class for the JUnit core plug-in.
+ */
+public class CDTUnitTestPlugin extends Plugin {
+
+ /**
+ * The single instance of this plug-in runtime class.
+ */
+ private static CDTUnitTestPlugin fgPlugin = null;
+
+ public static final String UNITTEST_PLUGIN_ID = "org.eclipse.unittest.ui"; //$NON-NLS-1$
+ public static final String PLUGIN_ID = "org.eclipse.cdt.unittest"; //$NON-NLS-1$
+
+ public static final String CDT_TEST_VIEW_SUPPORT_ID = "org.eclipse.cdt.unittest.loader"; //$NON-NLS-1$
+ public static final String CDT_DSF_DBG_TEST_VIEW_SUPPORT_ID = "org.eclipse.cdt.unittest.loader"; //$NON-NLS-1$
+
+ private BundleContext fBundleContext;
+
+ public CDTUnitTestPlugin() {
+ fgPlugin = this;
+ }
+
+ public static CDTUnitTestPlugin getDefault() {
+ return fgPlugin;
+ }
+
+ public static String getPluginId() {
+ return PLUGIN_ID;
+ }
+
+ public static void log(Throwable e) {
+ log(new Status(IStatus.ERROR, getPluginId(), IStatus.ERROR, "Error", e)); //$NON-NLS-1$
+ }
+
+ public static void log(IStatus status) {
+ getDefault().getLog().log(status);
+ }
+
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ fBundleContext = context;
+ }
+
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ try {
+ InstanceScope.INSTANCE.getNode(CDTUnitTestPlugin.UNITTEST_PLUGIN_ID).flush();
+ } finally {
+ super.stop(context);
+ }
+ fBundleContext = null;
+ }
+
+ /**
+ * Returns a service with the specified name or <code>null</code> if none.
+ *
+ * @param serviceName name of service
+ * @return service object or <code>null</code> if none
+ */
+ public Object getService(String serviceName) {
+ ServiceReference<?> reference = fBundleContext.getServiceReference(serviceName);
+ if (reference == null)
+ return null;
+ return fBundleContext.getService(reference);
+ }
+}
diff --git a/unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/internal/launcher/CTestingTab.java b/unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/internal/launcher/CTestingTab.java
new file mode 100644
index 00000000000..1395cb05a66
--- /dev/null
+++ b/unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/internal/launcher/CTestingTab.java
@@ -0,0 +1,205 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2020 Anton Gorenkov
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Anton Gorenkov - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.unittest.internal.launcher;
+
+import org.eclipse.cdt.launch.ui.CLaunchConfigurationTab;
+import org.eclipse.cdt.testsrunner.internal.TestsRunnerPlugin;
+import org.eclipse.cdt.testsrunner.internal.launcher.ITestsLaunchConfigurationConstants;
+import org.eclipse.cdt.testsrunner.internal.launcher.TestsRunnerProviderInfo;
+import org.eclipse.cdt.testsrunner.launcher.ITestsRunnerProviderInfo;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.debug.core.DebugPlugin;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+
+/**
+ * A launch configuration tab that displays and edits different testing options
+ * (e.g. Tests Runner provider plug-in).
+ * <p>
+ * This class may be instantiated. This class is not intended to be subclassed.
+ * </p>
+ *
+ * @noextend This class is not intended to be subclassed by clients.
+ */
+public class CTestingTab extends CLaunchConfigurationTab {
+
+ /**
+ * Tab identifier used for ordering of tabs added using the
+ * <code>org.eclipse.debug.ui.launchConfigurationTabs</code>
+ * extension point.
+ */
+ private static final String TAB_ID = "org.eclipse.cdt.testsrunner.testingTab"; //$NON-NLS-1$
+
+ private static final String TESTING_PROCESS_FACTORY_ID = "org.eclipse.cdt.unittest.testsrunner.TestingProcessFactory"; //$NON-NLS-1$
+
+ /** Shows the list of available Tests Runner provider plug-ins. */
+ private Combo testsRunnerProviderCombo;
+
+ /** Shows the description for the currently selected Tests Runner provider plug-in. */
+ private Label testsRunnerProviderDescriptionLabel;
+
+ @Override
+ public void createControl(Composite parent) {
+ Composite pageComposite = new Composite(parent, SWT.NONE);
+ GridLayout pageCompositeLayout = new GridLayout(2, false);
+ pageCompositeLayout.horizontalSpacing = 40;
+ pageComposite.setLayout(pageCompositeLayout);
+
+ // Create a tests runner selector
+ new Label(pageComposite, SWT.NONE).setText(LauncherMessages.CTestingTab_tests_runner_label);
+ testsRunnerProviderCombo = new Combo(pageComposite, SWT.READ_ONLY | SWT.DROP_DOWN);
+ testsRunnerProviderCombo.add(LauncherMessages.CTestingTab_tests_runner_is_not_set);
+ testsRunnerProviderCombo.setData("0", null); //$NON-NLS-1$
+
+ // Add all the tests runners
+ for (TestsRunnerProviderInfo testsRunnerProviderInfo : TestsRunnerPlugin.getDefault()
+ .getTestsRunnerProvidersManager().getTestsRunnersProviderInfo()) {
+ testsRunnerProviderCombo.setData(Integer.toString(testsRunnerProviderCombo.getItemCount()),
+ testsRunnerProviderInfo);
+ testsRunnerProviderCombo.add(testsRunnerProviderInfo.getName());
+ }
+
+ testsRunnerProviderCombo.addModifyListener(new ModifyListener() {
+
+ @Override
+ public void modifyText(ModifyEvent e) {
+ testsRunnerProviderDescriptionLabel.setText(getCurrentTestsRunnerDescription());
+ updateLaunchConfigurationDialog();
+ }
+ });
+
+ // Create a tests runner description label
+ testsRunnerProviderDescriptionLabel = new Label(pageComposite, SWT.WRAP);
+ GridData testsRunnerProviderLabelGD = new GridData(GridData.FILL_BOTH);
+ testsRunnerProviderLabelGD.horizontalSpan = 2;
+ testsRunnerProviderLabelGD.horizontalAlignment = GridData.FILL;
+ testsRunnerProviderDescriptionLabel.setLayoutData(testsRunnerProviderLabelGD);
+
+ GridData pageCompositeGD = new GridData(GridData.FILL_BOTH);
+ pageCompositeGD.horizontalAlignment = GridData.FILL;
+ pageCompositeGD.grabExcessHorizontalSpace = true;
+ pageComposite.setLayoutData(pageCompositeGD);
+ setControl(pageComposite);
+ }
+
+ /**
+ * Returns the information for the currently selected Tests Runner provider
+ * plug-in.
+ *
+ * @return Tests Runner provide plug-in information
+ */
+ private ITestsRunnerProviderInfo getCurrentTestsRunnerProviderInfo() {
+ return getTestsRunnerProviderInfo(testsRunnerProviderCombo.getSelectionIndex());
+ }
+
+ /**
+ * Returns the information for the Tests Runner provide plug-in specified by
+ * index.
+ *
+ * @param comboIndex index in combo widget
+ * @return Tests Runner provide plug-in information
+ */
+ private ITestsRunnerProviderInfo getTestsRunnerProviderInfo(int comboIndex) {
+ return (ITestsRunnerProviderInfo) testsRunnerProviderCombo.getData(Integer.toString(comboIndex));
+ }
+
+ /**
+ * Returns the description for the currently selected Tests Runner provide
+ * plug-in.
+ *
+ * @return the description
+ */
+ private String getCurrentTestsRunnerDescription() {
+ ITestsRunnerProviderInfo testsRunnerProvider = getCurrentTestsRunnerProviderInfo();
+ if (testsRunnerProvider != null) {
+ return testsRunnerProvider.getDescription();
+ } else {
+ return LauncherMessages.CTestingTab_no_tests_runner_label;
+ }
+ }
+
+ @Override
+ public boolean isValid(ILaunchConfiguration config) {
+ return getCurrentTestsRunnerProviderInfo() != null;
+ }
+
+ @Override
+ public void setDefaults(ILaunchConfigurationWorkingCopy config) {
+ config.setAttribute(ITestsLaunchConfigurationConstants.ATTR_TESTS_RUNNER, (String) null);
+ config.setAttribute(DebugPlugin.ATTR_PROCESS_FACTORY_ID, TESTING_PROCESS_FACTORY_ID);
+ }
+
+ @Override
+ public void initializeFrom(ILaunchConfiguration configuration) {
+ try {
+ String testsRunnerId = configuration.getAttribute(ITestsLaunchConfigurationConstants.ATTR_TESTS_RUNNER,
+ (String) null);
+ int comboIndex = 0;
+ for (int i = 1; i < testsRunnerProviderCombo.getItemCount(); i++) {
+ if (getTestsRunnerProviderInfo(i).getId().equals(testsRunnerId)) {
+ comboIndex = i;
+ break;
+ }
+ }
+ testsRunnerProviderCombo.select(comboIndex);
+
+ } catch (CoreException e) {
+ TestsRunnerPlugin.log(e);
+ }
+ }
+
+ @Override
+ public void performApply(ILaunchConfigurationWorkingCopy configuration) {
+ ITestsRunnerProviderInfo testsRunnerProvider = getCurrentTestsRunnerProviderInfo();
+ String testsRunnerProviderId = testsRunnerProvider != null ? testsRunnerProvider.getId() : null;
+ configuration.setAttribute(ITestsLaunchConfigurationConstants.ATTR_TESTS_RUNNER, testsRunnerProviderId);
+ configuration.setAttribute(DebugPlugin.ATTR_PROCESS_FACTORY_ID, TESTING_PROCESS_FACTORY_ID);
+ }
+
+ @Override
+ public String getId() {
+ return TAB_ID;
+ }
+
+ @Override
+ public String getName() {
+ return LauncherMessages.CTestingTab_tab_name;
+ }
+
+ @Override
+ public String getErrorMessage() {
+ String m = super.getErrorMessage();
+ if (m == null) {
+ if (getCurrentTestsRunnerProviderInfo() == null) {
+ return LauncherMessages.CTestingTab_no_tests_runner_error;
+ }
+ }
+ return m;
+ }
+
+ @Override
+ public Image getImage() {
+ return TestsRunnerPlugin.createAutoImage("obj16/test_notrun.gif"); //$NON-NLS-1$
+ }
+
+}
diff --git a/unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/internal/launcher/DsfGdbRunTestsLaunchDelegate.java b/unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/internal/launcher/DsfGdbRunTestsLaunchDelegate.java
new file mode 100644
index 00000000000..6d319b34fff
--- /dev/null
+++ b/unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/internal/launcher/DsfGdbRunTestsLaunchDelegate.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2020 Anton Gorenkov.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Anton Gorenkov - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.unittest.internal.launcher;
+
+import org.eclipse.cdt.debug.core.ICDTLaunchConfigurationConstants;
+import org.eclipse.cdt.unittest.CDTUnitTestPlugin;
+import org.eclipse.cdt.unittest.launcher.BaseTestsLaunchDelegate;
+
+/**
+ * Launch delegate implementation that redirects its queries to DSF.
+ */
+public class DsfGdbRunTestsLaunchDelegate extends BaseTestsLaunchDelegate {
+
+ @Override
+ public String getPreferredDelegateId() {
+ return ICDTLaunchConfigurationConstants.PREFERRED_DEBUG_LOCAL_LAUNCH_DELEGATE;
+ }
+
+ @Override
+ public String getUnitTestViewSupportID() {
+ return CDTUnitTestPlugin.CDT_TEST_VIEW_SUPPORT_ID;
+ }
+
+}
diff --git a/unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/internal/launcher/EmptyConfigurationTabGroup.java b/unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/internal/launcher/EmptyConfigurationTabGroup.java
new file mode 100644
index 00000000000..80d6c37c65a
--- /dev/null
+++ b/unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/internal/launcher/EmptyConfigurationTabGroup.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2020 Anton Gorenkov
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Anton Gorenkov - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.unittest.internal.launcher;
+
+import org.eclipse.debug.ui.AbstractLaunchConfigurationTabGroup;
+import org.eclipse.debug.ui.ILaunchConfigurationDialog;
+import org.eclipse.debug.ui.ILaunchConfigurationTab;
+
+/**
+ * Represents an empty tab group. Actual tabs are added via the
+ * <code>org.eclipse.debug.ui.launchConfigurationTabs</code> extension point.
+ */
+public class EmptyConfigurationTabGroup extends AbstractLaunchConfigurationTabGroup {
+
+ @Override
+ public void createTabs(ILaunchConfigurationDialog dialog, String mode) {
+ setTabs(new ILaunchConfigurationTab[0]);
+ }
+
+}
diff --git a/unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/internal/launcher/LauncherMessages.java b/unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/internal/launcher/LauncherMessages.java
new file mode 100644
index 00000000000..3ba3213c767
--- /dev/null
+++ b/unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/internal/launcher/LauncherMessages.java
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2020 Anton Gorenkov.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Anton Gorenkov - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.unittest.internal.launcher;
+
+import org.eclipse.osgi.util.NLS;
+
+public class LauncherMessages extends NLS {
+ private static final String BUNDLE_NAME = "org.eclipse.cdt.unittest.internal.launcher.LauncherMessages"; //$NON-NLS-1$
+
+ public static String BaseTestsLaunchDelegate_invalid_tests_runner;
+ public static String BaseTestsLaunchDelegate_tests_runner_load_failed;
+
+ public static String CTestingTab_no_tests_runner_error;
+ public static String CTestingTab_no_tests_runner_label;
+ public static String CTestingTab_tab_name;
+ public static String CTestingTab_tests_runner_is_not_set;
+ public static String CTestingTab_tests_runner_label;
+
+ static {
+ // initialize resource bundle
+ NLS.initializeMessages(BUNDLE_NAME, LauncherMessages.class);
+ }
+
+ private LauncherMessages() {
+ }
+}
diff --git a/unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/internal/launcher/LauncherMessages.properties b/unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/internal/launcher/LauncherMessages.properties
new file mode 100644
index 00000000000..ff7808b3f0b
--- /dev/null
+++ b/unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/internal/launcher/LauncherMessages.properties
@@ -0,0 +1,21 @@
+###############################################################################
+# Copyright (c) 2011, 2020 Anton Gorenkov
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Anton Gorenkov - Initial implementation
+###############################################################################
+BaseTestsLaunchDelegate_invalid_tests_runner=Tests Runner is not specified or invalid
+BaseTestsLaunchDelegate_tests_runner_load_failed=Tests Runner cannot be instantiated
+
+CTestingTab_no_tests_runner_error=Tests runner is not selected
+CTestingTab_no_tests_runner_label=Select a tests runner...
+CTestingTab_tab_name=C/C++ Testing
+CTestingTab_tests_runner_is_not_set=<not set>
+CTestingTab_tests_runner_label=Tests Runner \ No newline at end of file
diff --git a/unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/internal/launcher/RunTestsLaunchDelegate.java b/unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/internal/launcher/RunTestsLaunchDelegate.java
new file mode 100644
index 00000000000..0ef05fcd0e6
--- /dev/null
+++ b/unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/internal/launcher/RunTestsLaunchDelegate.java
@@ -0,0 +1,34 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2020 Anton Gorenkov.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Anton Gorenkov - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.unittest.internal.launcher;
+
+import org.eclipse.cdt.debug.core.ICDTLaunchConfigurationConstants;
+import org.eclipse.cdt.unittest.CDTUnitTestPlugin;
+import org.eclipse.cdt.unittest.launcher.BaseTestsLaunchDelegate;
+
+/**
+ * Launch delegate implementation that is used for Run mode.
+ */
+public class RunTestsLaunchDelegate extends BaseTestsLaunchDelegate {
+
+ @Override
+ public String getPreferredDelegateId() {
+ return ICDTLaunchConfigurationConstants.PREFERRED_RUN_LAUNCH_DELEGATE;
+ }
+
+ @Override
+ public String getUnitTestViewSupportID() {
+ return CDTUnitTestPlugin.CDT_TEST_VIEW_SUPPORT_ID;
+ }
+}
diff --git a/unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/internal/launcher/TestingProcessFactory.java b/unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/internal/launcher/TestingProcessFactory.java
new file mode 100644
index 00000000000..5a7a312d296
--- /dev/null
+++ b/unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/internal/launcher/TestingProcessFactory.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2020 Anton Gorenkov, and others
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Anton Gorenkov - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.unittest.internal.launcher;
+
+import java.util.Collections;
+import java.util.Map;
+
+import org.eclipse.cdt.dsf.gdb.IGdbDebugConstants;
+import org.eclipse.cdt.dsf.gdb.launching.GDBProcess;
+import org.eclipse.cdt.dsf.gdb.launching.InferiorRuntimeProcess;
+import org.eclipse.debug.core.ILaunch;
+import org.eclipse.debug.core.IProcessFactory;
+import org.eclipse.debug.core.model.IProcess;
+import org.eclipse.debug.core.model.RuntimeProcess;
+
+/**
+ * Custom testing process factory allows to handle the output stream of the
+ * testing process and prevent it from output to Console.
+ */
+public class TestingProcessFactory implements IProcessFactory {
+
+ @Override
+ public IProcess newProcess(ILaunch launch, Process process, String label, Map<String, String> attributes) {
+ // Mimic the behavior of DSF GDBProcessFactory.
+ if (attributes != null) {
+ Object processTypeCreationAttrValue = attributes.get(IGdbDebugConstants.PROCESS_TYPE_CREATION_ATTR);
+ if (IGdbDebugConstants.GDB_PROCESS_CREATION_VALUE.equals(processTypeCreationAttrValue)) {
+ return new GDBProcess(launch, process, label, attributes);
+ }
+
+ if (IGdbDebugConstants.INFERIOR_PROCESS_CREATION_VALUE.equals(processTypeCreationAttrValue)) {
+ return new InferiorRuntimeProcess(launch, process, label, attributes);
+ }
+ // Probably, it is CDI creating a new inferior process
+ }
+ return new RuntimeProcess(launch, process, label, Collections.emptyMap());
+ }
+
+}
diff --git a/unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/launcher/BaseTestsLaunchDelegate.java b/unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/launcher/BaseTestsLaunchDelegate.java
new file mode 100644
index 00000000000..49a8c8b41ac
--- /dev/null
+++ b/unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/launcher/BaseTestsLaunchDelegate.java
@@ -0,0 +1,273 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2020 Anton Gorenkov.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Anton Gorenkov - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.unittest.launcher;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.cdt.debug.core.ICDTLaunchConfigurationConstants;
+import org.eclipse.cdt.testsrunner.internal.TestsRunnerPlugin;
+import org.eclipse.cdt.testsrunner.internal.launcher.ITestsLaunchConfigurationConstants;
+import org.eclipse.cdt.testsrunner.internal.launcher.TestsRunnerProviderInfo;
+import org.eclipse.cdt.testsrunner.internal.ui.view.TestPathUtils;
+import org.eclipse.cdt.testsrunner.launcher.ITestsRunnerProvider;
+import org.eclipse.cdt.testsrunner.model.TestingException;
+import org.eclipse.cdt.unittest.CDTUnitTestPlugin;
+import org.eclipse.cdt.unittest.internal.launcher.LauncherMessages;
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.debug.core.DebugPlugin;
+import org.eclipse.debug.core.ILaunch;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.ILaunchConfigurationType;
+import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
+import org.eclipse.debug.core.ILaunchDelegate;
+import org.eclipse.debug.core.ILaunchManager;
+import org.eclipse.debug.core.model.ILaunchConfigurationDelegate2;
+import org.eclipse.debug.core.model.LaunchConfigurationDelegate;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IViewPart;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.unittest.ui.ConfigureViewerSupport;
+
+/**
+ * Launch delegate implementation that redirects its queries to the preferred
+ * launch delegate, correcting the arguments attribute (to take into account
+ * auto generated test module parameters) and setting up the custom process
+ * factory (to handle testing process IO streams).
+ */
+public abstract class BaseTestsLaunchDelegate extends LaunchConfigurationDelegate {
+
+ /** Stores the changes made to the launch configuration. */
+ private Map<String, String> changesToLaunchConfiguration = new HashMap<>();
+
+ @Override
+ public ILaunch getLaunch(ILaunchConfiguration config, String mode) throws CoreException {
+ activateTestResultView();
+ return getPreferredDelegate(config, mode).getLaunch(config, mode);
+ }
+
+ @Override
+ public boolean buildForLaunch(ILaunchConfiguration config, String mode, IProgressMonitor monitor)
+ throws CoreException {
+ return getPreferredDelegate(config, mode).buildForLaunch(config, mode, monitor);
+ }
+
+ @Override
+ public boolean finalLaunchCheck(ILaunchConfiguration config, String mode, IProgressMonitor monitor)
+ throws CoreException {
+ return getPreferredDelegate(config, mode).finalLaunchCheck(config, mode, monitor);
+ }
+
+ @Override
+ public boolean preLaunchCheck(ILaunchConfiguration config, String mode, IProgressMonitor monitor)
+ throws CoreException {
+ return getPreferredDelegate(config, mode).preLaunchCheck(config, mode, monitor);
+ }
+
+ @Override
+ public void launch(ILaunchConfiguration config, String mode, ILaunch launch, IProgressMonitor monitor)
+ throws CoreException {
+
+ if (mode.equals(ILaunchManager.RUN_MODE) || mode.equals(ILaunchManager.DEBUG_MODE)) {
+
+ // NOTE: The modified working copy of launch configuration cannot be passed directly
+ // to the preferred delegate because in this case the LaunchHistory will not work
+ // properly (and the rerun last launched configuration action will fail). So we
+ // just modify the existing configuration and revert all the changes back after
+ // the launch is done.
+
+ try {
+ // Changes launch configuration a bit and redirect it to the preferred C/C++ Application Launch delegate
+ updatedLaunchConfiguration(config);
+ getPreferredDelegate(config, mode).launch(config, mode, launch, monitor);
+ } finally {
+ revertChangedToLaunchConfiguration(config);
+ }
+ // activateTestingView();
+ }
+ }
+
+ /**
+ * Revert the changes to launch configuration previously made with
+ * <code>updatedLaunchConfigurationAttribute()</code>.
+ *
+ * @param config launch configuration to revert
+ * @throws CoreException in case of error
+ */
+ private void revertChangedToLaunchConfiguration(ILaunchConfiguration config) throws CoreException {
+ ILaunchConfigurationWorkingCopy configWC = config.getWorkingCopy();
+ for (Map.Entry<String, String> changeEntry : changesToLaunchConfiguration.entrySet()) {
+ configWC.setAttribute(changeEntry.getKey(), changeEntry.getValue());
+ }
+ configWC.doSave();
+ changesToLaunchConfiguration.clear();
+ }
+
+ /**
+ * Saves the current value of the specified attribute (to be reverted later)
+ * and update its value in launch configuration.
+ *
+ * @param config launch configuration which attribute should be updated
+ * @param attributeName attribute name
+ * @param value new value of the specified attribute
+ * @throws CoreException in case of error
+ */
+ private void updatedLaunchConfigurationAttribute(ILaunchConfigurationWorkingCopy config, String attributeName,
+ String value) throws CoreException {
+ changesToLaunchConfiguration.put(attributeName, config.getAttribute(attributeName, "")); //$NON-NLS-1$
+ config.setAttribute(attributeName, value);
+ }
+
+ /**
+ * Makes the necessary changes to the launch configuration before passing it
+ * to the underlying delegate. Currently, updates the program arguments with
+ * the value that was obtained from Tests Runner provider plug-in.
+ *
+ * @param config launch configuration
+ * @throws CoreException in case of error
+ */
+ private void updatedLaunchConfiguration(ILaunchConfiguration config) throws CoreException {
+ changesToLaunchConfiguration.clear();
+ ILaunchConfigurationWorkingCopy configWC = config.getWorkingCopy();
+ new ConfigureViewerSupport(getUnitTestViewSupportID()).apply(configWC);
+ setProgramArguments(configWC);
+ configWC.doSave();
+ }
+
+ /**
+ * Updates the program arguments with the value that was obtained from Tests
+ * Runner provider plug-in.
+ *
+ * @param config launch configuration
+ * @throws CoreException in case of error
+ */
+ private void setProgramArguments(ILaunchConfigurationWorkingCopy config) throws CoreException {
+ List<String> packedTestsFilter = config.getAttribute(ITestsLaunchConfigurationConstants.ATTR_TESTS_FILTER,
+ Collections.emptyList());
+ String[][] testsFilter = TestPathUtils
+ .unpackTestPaths(packedTestsFilter.toArray(new String[packedTestsFilter.size()]));
+
+ // Configure test module run parameters with a Tests Runner
+ String[] params = null;
+ try {
+ params = getTestsRunner(config).getAdditionalLaunchParameters(testsFilter);
+
+ } catch (TestingException e) {
+ throw new CoreException(
+ new Status(IStatus.ERROR, TestsRunnerPlugin.getUniqueIdentifier(), e.getLocalizedMessage(), null));
+ }
+
+ // Rewrite ATTR_PROGRAM_ARGUMENTS attribute of launch configuration
+ if (params != null && params.length >= 1) {
+ StringBuilder sb = new StringBuilder();
+ sb.append(config.getAttribute(ICDTLaunchConfigurationConstants.ATTR_PROGRAM_ARGUMENTS, "")); //$NON-NLS-1$
+ for (String param : params) {
+ sb.append(' ');
+ sb.append(param);
+ }
+ updatedLaunchConfigurationAttribute(config, ICDTLaunchConfigurationConstants.ATTR_PROGRAM_ARGUMENTS,
+ sb.toString());
+ }
+ }
+
+ /**
+ * Resolves Tests Runner provider plug-in interface by the value written in
+ * launch configuration.
+ *
+ * @param config launch configuration
+ * @return an {@link ITestsRunnerProvider} instance
+ * @throws CoreException in case of error
+ */
+ public static ITestsRunnerProvider getTestsRunner(ILaunchConfiguration config) throws CoreException {
+ TestsRunnerProviderInfo testsRunnerProviderInfo = TestsRunnerPlugin.getDefault()
+ .getTestsRunnerProvidersManager().getTestsRunnerProviderInfo(config);
+ if (testsRunnerProviderInfo == null) {
+ throw new CoreException(new Status(IStatus.ERROR, TestsRunnerPlugin.getUniqueIdentifier(),
+ LauncherMessages.BaseTestsLaunchDelegate_invalid_tests_runner, null));
+ }
+ ITestsRunnerProvider testsRunnerProvider = testsRunnerProviderInfo.instantiateTestsRunnerProvider();
+ if (testsRunnerProvider == null) {
+ throw new CoreException(new Status(IStatus.ERROR, TestsRunnerPlugin.getUniqueIdentifier(),
+ LauncherMessages.BaseTestsLaunchDelegate_tests_runner_load_failed, null));
+ }
+ return testsRunnerProvider;
+ }
+
+ /**
+ * Resolves the preferred launch delegate for the specified configuration to
+ * launch C/C++ Local Application in the specified mode. The preferred
+ * launch delegate ID is taken from <code>getPreferredDelegateId()</code>.
+ *
+ * @param config launch configuration
+ * @param mode mode
+ * @return launch delegate
+ * @throws CoreException in case of error
+ */
+ private ILaunchConfigurationDelegate2 getPreferredDelegate(ILaunchConfiguration config, String mode)
+ throws CoreException {
+ ILaunchManager launchMgr = DebugPlugin.getDefault().getLaunchManager();
+ ILaunchConfigurationType localCfg = launchMgr
+ .getLaunchConfigurationType(ICDTLaunchConfigurationConstants.ID_LAUNCH_C_APP);
+ Set<String> modes = config.getModes();
+ modes.add(mode);
+ String preferredDelegateId = getPreferredDelegateId();
+ for (ILaunchDelegate delegate : localCfg.getDelegates(modes)) {
+ if (preferredDelegateId.equals(delegate.getId())) {
+ return (ILaunchConfigurationDelegate2) delegate.getDelegate();
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the launch delegate id which should be used to redirect the
+ * launch.
+ *
+ * @return launch delegate ID
+ */
+ public abstract String getPreferredDelegateId();
+
+ /**
+ * Returns the default test View Support identifier
+ *
+ * @return default test View Support identifier
+ */
+ public abstract String getUnitTestViewSupportID();
+
+ /**
+ * Activates the view showing testing results.
+ */
+ private void activateTestResultView() {
+ Assert.isNotNull(Platform.getBundle("org.eclipse.unittest.ui")); //$NON-NLS-1$
+ Display.getDefault().syncExec(() -> {
+ try {
+ IWorkbenchWindow activeWindow = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
+ IViewPart view = activeWindow.getActivePage().showView("org.eclipse.unittest.ui.ResultView"); //$NON-NLS-1$
+ PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().activate(view);
+ } catch (PartInitException e) {
+ CDTUnitTestPlugin.log(e);
+ }
+ });
+ }
+}
diff --git a/unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/launcher/CDTMessages.java b/unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/launcher/CDTMessages.java
new file mode 100644
index 00000000000..b6b82112abd
--- /dev/null
+++ b/unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/launcher/CDTMessages.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Red Hat Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Red Hat Inc. - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.cdt.unittest.launcher;
+
+import org.eclipse.osgi.util.NLS;
+
+public class CDTMessages extends NLS {
+ private static final String BUNDLE_NAME = "org.eclipse.cdt.unittest.launcher.CDTMessages"; //$NON-NLS-1$
+ public static String TestingSession_finished_status;
+ public static String TestingSession_name_format;
+ public static String TestingSession_starting_status;
+ public static String TestingSession_stopped_status;
+ static {
+ // initialize resource bundle
+ NLS.initializeMessages(BUNDLE_NAME, CDTMessages.class);
+ }
+
+ private CDTMessages() {
+ }
+}
diff --git a/unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/launcher/CDTMessages.properties b/unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/launcher/CDTMessages.properties
new file mode 100644
index 00000000000..dd9bee2bc6b
--- /dev/null
+++ b/unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/launcher/CDTMessages.properties
@@ -0,0 +1,19 @@
+###############################################################################
+ # Copyright (c) 2020 Red Hat Inc. and others.
+ #
+ # This program and the accompanying materials
+ # are made available under the terms of the Eclipse Public License 2.0
+ # which accompanies this distribution, and is available at
+ # https://www.eclipse.org/legal/epl-2.0/
+ #
+ # SPDX-License-Identifier: EPL-2.0
+ #
+ # Contributors:
+ # Red Hat Inc. - initial API and implementation
+ ###############################################################################
+
+# From CDT Model
+TestingSession_name_format={0} ({1})
+TestingSession_finished_status=Finished after {0}
+TestingSession_starting_status=Starting...
+TestingSession_stopped_status=Testing was stopped by user
diff --git a/unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/launcher/CDTTestRunnerClient.java b/unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/launcher/CDTTestRunnerClient.java
new file mode 100644
index 00000000000..6005ca06989
--- /dev/null
+++ b/unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/launcher/CDTTestRunnerClient.java
@@ -0,0 +1,408 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Red Hat Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Red Hat Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.unittest.launcher;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Deque;
+import java.util.LinkedList;
+import java.util.List;
+
+import org.eclipse.cdt.dsf.gdb.launching.InferiorRuntimeProcess;
+import org.eclipse.cdt.testsrunner.internal.launcher.TestsRunnerProvidersManager;
+import org.eclipse.cdt.testsrunner.internal.model.TestCase;
+import org.eclipse.cdt.testsrunner.internal.model.TestSuite;
+import org.eclipse.cdt.testsrunner.launcher.ITestsRunnerProvider;
+import org.eclipse.cdt.testsrunner.model.ITestCase;
+import org.eclipse.cdt.testsrunner.model.ITestItem;
+import org.eclipse.cdt.testsrunner.model.ITestItem.Status;
+import org.eclipse.cdt.testsrunner.model.ITestMessage.Level;
+import org.eclipse.cdt.testsrunner.model.ITestModelUpdater;
+import org.eclipse.cdt.testsrunner.model.ITestSuite;
+import org.eclipse.cdt.testsrunner.model.TestingException;
+import org.eclipse.cdt.unittest.CDTUnitTestPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.ICoreRunnable;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.debug.core.DebugPlugin;
+import org.eclipse.debug.core.ILaunch;
+import org.eclipse.debug.core.ILaunchListener;
+import org.eclipse.debug.core.model.IProcess;
+import org.eclipse.debug.core.model.IStreamMonitor;
+import org.eclipse.unittest.launcher.ITestRunnerClient;
+import org.eclipse.unittest.model.ITestCaseElement;
+import org.eclipse.unittest.model.ITestElement;
+import org.eclipse.unittest.model.ITestElement.FailureTrace;
+import org.eclipse.unittest.model.ITestRunSession;
+import org.eclipse.unittest.model.ITestSuiteElement;
+
+public class CDTTestRunnerClient implements ITestRunnerClient {
+ static private final String NL = System.lineSeparator();
+
+ class TestModelUpdaterAdapter implements ITestModelUpdater {
+ class TestElementReference {
+ String parentId;
+ String id;
+ String name;
+ boolean isSuite;
+ private long startTime;
+ private long testingTime;
+
+ public TestElementReference(String parentId, String id, String name, boolean isSuite) {
+ this.parentId = parentId;
+ this.id = id;
+ this.name = name;
+ this.isSuite = isSuite;
+ this.startTime = System.currentTimeMillis();
+ }
+
+ @Override
+ public String toString() {
+ return new StringBuilder().append("TestElementReference: ") //$NON-NLS-1$
+ .append("parentId = ").append(parentId).append(NL) //$NON-NLS-1$
+ .append("id = ").append(id).append(NL) //$NON-NLS-1$
+ .append("name = ").append(name).append(NL) //$NON-NLS-1$
+ .append("isSuite = ").append(isSuite).append(NL) //$NON-NLS-1$
+ .append("startTime = ").append(startTime).append(NL) //$NON-NLS-1$
+ .append("testingTime = ").append(testingTime).append(NL) //$NON-NLS-1$
+ .toString();
+ }
+ }
+
+ Deque<TestElementReference> testElementRefs = new LinkedList<>();
+
+ String fCurrentTestCase;
+ String fCurrentTestSuite;
+ int fTestId = 0;
+ /**
+ * The failed trace that is currently reported from the RemoteTestRunner
+ */
+ final StringBuilder fFailedTrace = new StringBuilder();
+
+ @Override
+ public void enterTestSuite(String name) {
+ if (fDebug) {
+ System.out.println("TestModelUpdaterAdapter.enterTestSuite: name = " + name); //$NON-NLS-1$
+ }
+ TestElementReference pRef = testElementRefs.isEmpty() ? null : testElementRefs.peek();
+
+ TestElementReference cRef = new TestElementReference(pRef == null ? String.valueOf("-1") : pRef.id, //$NON-NLS-1$
+ String.valueOf(fTestId++), name, true);
+ testElementRefs.push(cRef);
+
+ this.fCurrentTestSuite = cRef.id;
+
+ fTestRunSession.newTestSuite(cRef.id, cRef.name, null, getTestSuite(cRef.parentId), cRef.name, null);
+ }
+
+ @Override
+ public void exitTestSuite() {
+ if (fDebug) {
+ System.out.println("TestModelUpdaterAdapter.exitTestSuite"); //$NON-NLS-1$
+ }
+ TestElementReference cRef = testElementRefs.pop();
+ while (cRef != null && !cRef.isSuite) {
+ logUnexpectedTest(cRef.id, cRef);
+ cRef = testElementRefs.pop();
+ }
+ }
+
+ @Override
+ public void enterTestCase(String name) {
+ if (fDebug) {
+ System.out.println("TestModelUpdaterAdapter.enterTestCase: name = " + name); //$NON-NLS-1$
+ }
+
+ TestElementReference pRef = testElementRefs.isEmpty() ? null : testElementRefs.peek();
+
+ String parentId = String.valueOf("-1"); //$NON-NLS-1$
+ if (pRef != null) {
+ parentId = pRef.isSuite ? pRef.id : pRef.parentId;
+ }
+
+ TestElementReference cRef = new TestElementReference(parentId, String.valueOf(fTestId++), name, false);
+ testElementRefs.push(cRef);
+
+ this.fCurrentTestCase = cRef.id;
+ fFailedTrace.setLength(0);
+
+ ITestElement test = fTestRunSession.newTestCase(cRef.id, cRef.name, getTestSuite(cRef.parentId), cRef.name,
+ null);
+ fTestRunSession.notifyTestStarted(test);
+ }
+
+ private ITestSuiteElement getTestSuite(String parentId) {
+ ITestElement parent = fTestRunSession.getTestElement(parentId);
+ if (parent instanceof ITestSuiteElement) {
+ return (ITestSuiteElement) parent;
+ }
+ return null;
+ }
+
+ @Override
+ public void setTestStatus(Status status) {
+ if (fDebug) {
+ System.out.println("TestModelUpdaterAdapter.setTestStatus: status = " + status.toString()); //$NON-NLS-1$
+ }
+
+ if (status.isError()) {
+ TestElementReference cRef = testElementRefs.isEmpty() ? null : testElementRefs.peek();
+ if (cRef != null) {
+ ITestElement test = fTestRunSession.getTestElement(cRef.id);
+ if (test != null) {
+ fTestRunSession.notifyTestFailed(test,
+ status == Status.Aborted ? ITestElement.Result.ERROR : ITestElement.Result.FAILURE,
+ false, new FailureTrace(fFailedTrace.toString(), "", "")); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ } else {
+ logUnexpectedTest(fCurrentTestCase, null);
+ }
+ }
+ }
+
+ @Override
+ public void setTestingTime(int testingTime) {
+ if (fDebug) {
+ System.out.println("TestModelUpdaterAdapter.setTestingTime: testingTime = " + testingTime); //$NON-NLS-1$
+ }
+
+ TestElementReference cRef = testElementRefs.isEmpty() ? null : testElementRefs.peek();
+ if (cRef != null) {
+ cRef.testingTime = testingTime;
+ } else {
+ logUnexpectedTest(fCurrentTestCase, null);
+ }
+ }
+
+ @Override
+ public void exitTestCase() {
+ if (fDebug) {
+ System.out.println("TestModelUpdaterAdapter.exitTestCase"); //$NON-NLS-1$
+ }
+
+ TestElementReference cRef = testElementRefs.isEmpty() ? null : testElementRefs.peek();
+
+ if (cRef != null && !cRef.isSuite) {
+ testElementRefs.pop(); // Renove test case ref
+ ITestElement testElement = fTestRunSession.getTestElement(cRef.id);
+ fTestRunSession.notifyTestEnded(testElement, false);
+ } else {
+ logUnexpectedTest(cRef == null ? "null" : cRef.id, cRef); //$NON-NLS-1$
+ }
+
+ }
+
+ @Override
+ public void addTestMessage(String file, int line, Level level, String text) {
+ if (fDebug) {
+ System.out.println("TestModelUpdaterAdapter.addTestMessage: file = " + file + //$NON-NLS-1$
+ ", line = " + line + //$NON-NLS-1$
+ ", level = " + level.toString() + //$NON-NLS-1$
+ ", text = " + text); //$NON-NLS-1$
+ }
+
+ fFailedTrace.append(level.toString()).append(": ").append(text).append("\r\n") //$NON-NLS-1$ //$NON-NLS-2$
+ .append(CDTTestViewSupport.FRAME_PREFIX).append(file).append(':').append(line).append("\r\n"); //$NON-NLS-1$
+ }
+
+ @Override
+ public ITestSuite currentTestSuite() {
+ if (fDebug) {
+ System.out.println("TestModelUpdaterAdapter.currentTestSuite"); //$NON-NLS-1$
+ }
+
+ ITestElement testElement = fTestRunSession.getTestElement(fCurrentTestSuite);
+ if (testElement instanceof ITestSuiteElement) {
+ return convertFromTestSuiteElement((ITestSuiteElement) testElement);
+ } else {
+ return convertFromTestSuiteElement(testElement.getParent());
+ }
+ }
+
+ @Override
+ public ITestCase currentTestCase() {
+ if (fDebug) {
+ System.out.println("TestModelUpdaterAdapter.currentTestCase"); //$NON-NLS-1$
+ }
+
+ ITestElement testElement = fTestRunSession.getTestElement(fCurrentTestCase);
+ if (testElement instanceof ITestCaseElement) {
+ return convertFromTestCaseElement((ITestCaseElement) testElement);
+ }
+ return null;
+ }
+
+ private void logUnexpectedTest(String testId, TestElementReference testElement) {
+ CDTUnitTestPlugin
+ .log(new Exception("Unexpected TestElement type for testId '" + testId + "': " + testElement)); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ }
+
+ private final ITestRunSession fTestRunSession;
+ private ITestsRunnerProvider fTestsRunnerProvider;
+ private IProcess process;
+ private ILaunchListener fFindProcessListener;
+ protected boolean fDebug = false;
+ private InputStream fStream;
+
+ public CDTTestRunnerClient(ITestRunSession session) {
+ this.fTestRunSession = session;
+ }
+
+ @Override
+ public void startMonitoring() {
+ ILaunch launch = this.fTestRunSession.getLaunch();
+ fFindProcessListener = new ILaunchListener() {
+ @Override
+ public void launchRemoved(@SuppressWarnings("hiding") ILaunch launch) {
+ // Nothing to do
+ }
+
+ @Override
+ public void launchChanged(ILaunch aLaunch) {
+ if (aLaunch.equals(launch) && process == null) {
+ process = connectProcess(launch);
+ }
+ }
+
+ @Override
+ public void launchAdded(@SuppressWarnings("hiding") ILaunch launch) {
+ // Nothing to do
+ }
+ };
+ DebugPlugin.getDefault().getLaunchManager().addLaunchListener(fFindProcessListener);
+ try {
+ fTestsRunnerProvider = new TestsRunnerProvidersManager()
+ .getTestsRunnerProviderInfo(launch.getLaunchConfiguration()).instantiateTestsRunnerProvider();
+ process = connectProcess(launch);
+ } catch (CoreException e) {
+ CDTUnitTestPlugin.log(e);
+ }
+ }
+
+ private IProcess connectProcess(ILaunch launch) {
+ if (this.process != null) {
+ return this.process;
+ }
+ this.process = Arrays.stream(launch.getProcesses()).filter(InferiorRuntimeProcess.class::isInstance).findAny()
+ .orElse(null);
+ if (this.process != null) {
+ DebugPlugin.getDefault().getLaunchManager().removeLaunchListener(fFindProcessListener);
+ fStream = toInputStream(process);
+ Job.createSystem("Monitor test process", (ICoreRunnable) monitor -> run(fStream)).schedule(); //$NON-NLS-1$
+ }
+ return this.process;
+ }
+
+ private static InputStream toInputStream(IProcess process) {
+ IStreamMonitor monitor = process.getStreamsProxy().getOutputStreamMonitor();
+ if (monitor == null) {
+ return null;
+ }
+ List<Integer> content = Collections.synchronizedList(new LinkedList<>());
+ monitor.addListener((text, progresMonitor) -> text.chars().forEach(content::add));
+ byte[] initialContent = monitor.getContents().getBytes();
+ for (int i = initialContent.length - 1; i >= 0; i--) {
+ content.add(0, Integer.valueOf(initialContent[i]));
+ }
+ return new InputStream() {
+ @Override
+ public int read() throws IOException {
+ while (!process.isTerminated() || !content.isEmpty()) {
+ if (!content.isEmpty()) {
+ return content.remove(0).intValue();
+ }
+ try {
+ Thread.sleep(20, 0);
+ } catch (InterruptedException e) {
+ return -1;
+ }
+ }
+ return -1;
+ }
+
+ @Override
+ public int read(byte[] b, int off, int len) throws IOException {
+ if (process.isTerminated() && available() == 0) {
+ return -1;
+ }
+ if (len == 0) {
+ return 0;
+ }
+ int i = 0;
+ do {
+ b[off + i] = (byte) read();
+ i++;
+ } while (available() > 0 && i < len && off + i < b.length);
+ return i;
+ }
+
+ @Override
+ public int available() throws IOException {
+ return content.size();
+ }
+ };
+ }
+
+ public void run(InputStream iStream) {
+ if (iStream == null) {
+ return;
+ }
+ fTestRunSession.notifyTestSessionStarted(null);
+ try {
+ fTestsRunnerProvider.run(new TestModelUpdaterAdapter(), iStream);
+ fTestRunSession.notifyTestSessionCompleted(fTestRunSession.getDuration());
+ } catch (TestingException e) {
+ fTestRunSession.notifyTestSessionAborted(null, e);
+ }
+ }
+
+ @Override
+ public void stopTest() {
+ stopMonitoring();
+ }
+
+ ITestItem convertFromTestElement(final ITestElement element) {
+ if (element instanceof ITestSuiteElement) {
+ return convertFromTestSuiteElement(((ITestSuiteElement) element));
+ }
+ if (element instanceof ITestCaseElement) {
+ return convertFromTestCaseElement((ITestCaseElement) element);
+ }
+ return null;
+ }
+
+ ITestCase convertFromTestCaseElement(final ITestCaseElement element) {
+ if (element == null) {
+ return null;
+ }
+ return new TestCase(element.getTestName(), (TestSuite) convertFromTestSuiteElement(element.getParent()));
+ }
+
+ ITestSuite convertFromTestSuiteElement(ITestSuiteElement testSuiteElement) {
+ if (testSuiteElement == null) {
+ return null;
+ }
+ return new TestSuite(testSuiteElement.getTestName(),
+ (TestSuite) convertFromTestSuiteElement(testSuiteElement.getParent()));
+ }
+
+ @Override
+ public void stopMonitoring() {
+ DebugPlugin.getDefault().getLaunchManager().removeLaunchListener(fFindProcessListener);
+ }
+
+}
diff --git a/unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/launcher/CDTTestViewSupport.java b/unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/launcher/CDTTestViewSupport.java
new file mode 100644
index 00000000000..f511720bf06
--- /dev/null
+++ b/unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/launcher/CDTTestViewSupport.java
@@ -0,0 +1,148 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Red Hat Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Red Hat Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.unittest.launcher;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import org.eclipse.cdt.testsrunner.internal.launcher.ITestsLaunchConfigurationConstants;
+import org.eclipse.cdt.unittest.CDTUnitTestPlugin;
+import org.eclipse.cdt.unittest.ui.OpenEditorAtLineAction;
+import org.eclipse.cdt.unittest.ui.OpenTestAction;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.text.StringMatcher;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.unittest.launcher.ITestRunnerClient;
+import org.eclipse.unittest.model.ITestCaseElement;
+import org.eclipse.unittest.model.ITestElement;
+import org.eclipse.unittest.model.ITestRunSession;
+import org.eclipse.unittest.model.ITestSuiteElement;
+import org.eclipse.unittest.ui.ITestViewSupport;
+
+public class CDTTestViewSupport implements ITestViewSupport {
+ /**
+ * The delimiter between parts of serialized test path. Should not be met in
+ * test paths names.
+ */
+ private static final String TEST_PATH_PART_DELIMITER = "\n"; //$NON-NLS-1$
+ public static final String FRAME_PREFIX = " at "; //$NON-NLS-1$
+
+ @Override
+ public Collection<StringMatcher> getTraceExclusionFilterPatterns() {
+ return Collections.emptySet();
+ }
+
+ @Override
+ public IAction getOpenTestAction(Shell shell, ITestCaseElement testCase) {
+ return new OpenTestAction(shell, testCase.getParent(), testCase);
+ }
+
+ @Override
+ public IAction getOpenTestAction(Shell shell, ITestSuiteElement testSuite) {
+ return new OpenTestAction(shell, testSuite);
+ }
+
+ @Override
+ public IAction createOpenEditorAction(Shell shell, ITestElement failure, String traceLine) {
+ try {
+ String testName = traceLine;
+ int indexOfFramePrefix = testName.indexOf(FRAME_PREFIX);
+ if (indexOfFramePrefix == -1) {
+ return null;
+ }
+ testName = testName.substring(indexOfFramePrefix);
+ testName = testName.substring(FRAME_PREFIX.length(), testName.lastIndexOf(':')).trim();
+
+ String lineNumber = traceLine;
+ lineNumber = lineNumber.substring(lineNumber.indexOf(':') + 1);
+ int line = Integer.parseInt(lineNumber);
+ return new OpenEditorAtLineAction(shell, testName, failure.getTestRunSession(), line);
+ } catch (NumberFormatException | IndexOutOfBoundsException e) {
+ CDTUnitTestPlugin.log(e);
+ }
+ return null;
+ }
+
+ @Override
+ public Runnable createShowStackTraceInConsoleViewActionDelegate(ITestElement failedTest) {
+ return null;
+ }
+
+ @Override
+ public ILaunchConfiguration getRerunLaunchConfiguration(List<ITestElement> tests) {
+ if (tests.isEmpty()) {
+ return null;
+ }
+ ILaunchConfiguration origin = tests.get(0).getTestRunSession().getLaunch().getLaunchConfiguration();
+ ILaunchConfigurationWorkingCopy res;
+ try {
+ res = origin.copy(origin.getName() + "\uD83D\uDD03"); //$NON-NLS-1$
+ res.setAttribute(ITestsLaunchConfigurationConstants.ATTR_TESTS_FILTER,
+ tests.stream().map(CDTTestViewSupport::packTestPaths).collect(Collectors.toList()));
+ return res;
+ } catch (CoreException e) {
+ CDTUnitTestPlugin.log(e);
+ return null;
+ }
+ }
+
+ /**
+ * Pack the paths to specified test items to string list.
+ * @param testElement test element to pack
+ *
+ * @return string list
+ */
+ private static String packTestPaths(ITestElement testElement) {
+ List<String> testPath = new ArrayList<>();
+
+ // Collect test path parts (in reverse order)
+ testPath.clear();
+ ITestElement element = testElement;
+ while (element != null && !(element instanceof ITestRunSession)) {
+ // Exclude root test suite
+ if (element.getParent() != null) {
+ testPath.add(element.getTestName());
+ }
+ element = element.getParent();
+ }
+ // Join path parts into the only string
+ StringBuilder sb = new StringBuilder();
+ boolean needDelimiter = false;
+ for (int pathPartIdx = testPath.size() - 1; pathPartIdx >= 0; pathPartIdx--) {
+ if (needDelimiter) {
+ sb.append(TEST_PATH_PART_DELIMITER);
+ } else {
+ needDelimiter = true;
+ }
+ sb.append(testPath.get(pathPartIdx));
+ }
+ return sb.toString();
+ }
+
+ @Override
+ public String getDisplayName() {
+ return "C/C++ Unit Tests"; //$NON-NLS-1$
+ }
+
+ @Override
+ public ITestRunnerClient newTestRunnerClient(ITestRunSession session) {
+ return new CDTTestRunnerClient(session);
+ }
+}
diff --git a/unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/ui/ActionsMessages.java b/unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/ui/ActionsMessages.java
new file mode 100644
index 00000000000..21e773c7344
--- /dev/null
+++ b/unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/ui/ActionsMessages.java
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Red Hat Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Red Hat Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.unittest.ui;
+
+import org.eclipse.osgi.util.NLS;
+
+public class ActionsMessages extends NLS {
+ private static final String BUNDLE_NAME = "org.eclipse.cdt.unittest.ui.ActionsMessages"; //$NON-NLS-1$
+
+ public static String OpenInEditorAction_text;
+ public static String OpenInEditorAction_tooltip;
+ public static String OpenEditorAction_action_label;
+ public static String OpenEditorAction_error_cannotopen_title;
+ public static String OpenEditorAction_error_cannotopen_message;
+ public static String OpenEditorAction_errorOpenEditor;
+ public static String OpenEditorAction_UpdateElementsJob_name;
+ public static String OpenEditorAction_UpdateElementsJob_inProgress;
+
+ static {
+ // initialize resource bundle
+ NLS.initializeMessages(BUNDLE_NAME, ActionsMessages.class);
+ }
+
+ private ActionsMessages() {
+ }
+}
diff --git a/unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/ui/ActionsMessages.properties b/unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/ui/ActionsMessages.properties
new file mode 100644
index 00000000000..9e68aa1b0a2
--- /dev/null
+++ b/unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/ui/ActionsMessages.properties
@@ -0,0 +1,23 @@
+###############################################################################
+ # Copyright (c) 2020 Red Hat Inc. and others.
+ #
+ # This program and the accompanying materials
+ # are made available under the terms of the Eclipse Public License 2.0
+ # which accompanies this distribution, and is available at
+ # https://www.eclipse.org/legal/epl-2.0/
+ #
+ # SPDX-License-Identifier: EPL-2.0
+ #
+ # Contributors:
+ # Red Hat Inc. - initial API and implementation
+ ###############################################################################
+
+OpenInEditorAction_text=&Go to File
+OpenInEditorAction_tooltip=Show File Referred By the Message
+
+OpenEditorAction_action_label=&Go to File
+OpenEditorAction_error_cannotopen_title=Cannot Open Editor
+OpenEditorAction_error_cannotopen_message=Test class not found in selected project
+OpenEditorAction_errorOpenEditor=Error opening editor for file \"{0}\"
+OpenEditorAction_UpdateElementsJob_name=Updating element list
+OpenEditorAction_UpdateElementsJob_inProgress=Updating element list...
diff --git a/unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/ui/OpenEditorAtLineAction.java b/unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/ui/OpenEditorAtLineAction.java
new file mode 100644
index 00000000000..1e885a2f376
--- /dev/null
+++ b/unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/ui/OpenEditorAtLineAction.java
@@ -0,0 +1,176 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Red Hat Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Red Hat Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.unittest.ui;
+
+import java.net.URI;
+
+import org.eclipse.cdt.debug.core.CDebugCorePlugin;
+import org.eclipse.cdt.debug.ui.CDebugUIPlugin;
+import org.eclipse.cdt.unittest.CDTUnitTestPlugin;
+import org.eclipse.core.filesystem.URIUtil;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IWorkspaceRoot;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.debug.core.DebugPlugin;
+import org.eclipse.debug.core.ILaunch;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.model.IPersistableSourceLocator;
+import org.eclipse.debug.core.model.ISourceLocator;
+import org.eclipse.debug.core.sourcelookup.AbstractSourceLookupDirector;
+import org.eclipse.debug.core.sourcelookup.ISourceLookupParticipant;
+import org.eclipse.debug.core.sourcelookup.containers.LocalFileStorage;
+import org.eclipse.debug.ui.DebugUITools;
+import org.eclipse.debug.ui.IDebugModelPresentation;
+import org.eclipse.debug.ui.sourcelookup.ISourceLookupResult;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.text.BadLocationException;
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.IRegion;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.ide.IDE;
+import org.eclipse.ui.texteditor.IDocumentProvider;
+import org.eclipse.ui.texteditor.ITextEditor;
+import org.eclipse.unittest.model.ITestRunSession;
+
+/**
+ * Opens the editor in place where the currently selected message is pointed to.
+ */
+public class OpenEditorAtLineAction extends Action {
+ @SuppressWarnings("unused")
+ private Shell shell;
+ private String fileName;
+ private int line;
+ private ITestRunSession fTestRunSession;
+
+ public OpenEditorAtLineAction(Shell shell, String fileName, ITestRunSession testRunSession, int line) {
+ super(ActionsMessages.OpenInEditorAction_text);
+ this.shell = shell;
+ this.fileName = fileName;
+ this.fTestRunSession = testRunSession;
+ this.line = line;
+ setToolTipText(ActionsMessages.OpenInEditorAction_tooltip);
+ }
+
+ @Override
+ public void run() {
+ ILaunch launch = fTestRunSession != null ? fTestRunSession.getLaunch() : null;
+ if (launch == null)
+ return;
+ lookupSource(fileName, line, launch);
+ }
+
+ // NOTE: This method is copied from Linux Tools Project (http://www.eclipse.org/linuxtools).
+ // Valgrind Support Plugin is implementing similar functionality so it is just reused.
+ // See also org.eclipse.linuxtools.valgrind.ui/src/org/eclipse/linuxtools/internal/valgrind/ui/CoreMessagesViewer.java
+ private void lookupSource(String file, int lineNumber, ILaunch launch) {
+ ISourceLocator locator = launch.getSourceLocator();
+ if (locator instanceof AbstractSourceLookupDirector) {
+ AbstractSourceLookupDirector director = (AbstractSourceLookupDirector) locator;
+ ISourceLookupParticipant[] participants = director.getParticipants();
+ if (participants.length == 0) {
+ // source locator likely disposed, try recreating it
+ IPersistableSourceLocator sourceLocator;
+ ILaunchConfiguration config = launch.getLaunchConfiguration();
+ if (config != null) {
+ try {
+ String id = config.getAttribute(ILaunchConfiguration.ATTR_SOURCE_LOCATOR_ID, (String) null);
+ if (id == null) {
+ sourceLocator = CDebugUIPlugin.createDefaultSourceLocator();
+ sourceLocator.initializeDefaults(config);
+ } else {
+ sourceLocator = DebugPlugin.getDefault().getLaunchManager().newSourceLocator(id);
+ String memento = config.getAttribute(ILaunchConfiguration.ATTR_SOURCE_LOCATOR_MEMENTO,
+ (String) null);
+ if (memento == null) {
+ sourceLocator.initializeDefaults(config);
+ } else {
+ sourceLocator.initializeFromMemento(memento);
+ }
+ }
+
+ // replace old source locator
+ locator = sourceLocator;
+ launch.setSourceLocator(sourceLocator);
+ } catch (CoreException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ }
+ ISourceLookupResult result = DebugUITools.lookupSource(file, locator);
+ try {
+ openEditorAndSelect(result, lineNumber);
+ } catch (PartInitException | BadLocationException e) {
+ CDTUnitTestPlugin.log(e);
+ }
+ }
+
+ // NOTE: This method is copied from Linux Tools Project (http://www.eclipse.org/linuxtools).
+ // Valgrind Support Plugin is implementing similar functionality so it is just reused.
+ // See also org.eclipse.linuxtools.valgrind.ui/src/org/eclipse/linuxtools/internal/valgrind/ui/CoreMessagesViewer.java
+ private void openEditorAndSelect(ISourceLookupResult result, int lineNumber)
+ throws PartInitException, BadLocationException {
+ IEditorInput input = result.getEditorInput();
+ String editorID = result.getEditorId();
+
+ if (input == null || editorID == null) {
+ // Consult the CDT DebugModelPresentation
+ Object sourceElement = result.getSourceElement();
+ if (sourceElement != null) {
+ // Resolve IResource in case we get a LocalFileStorage object
+ if (sourceElement instanceof LocalFileStorage) {
+ IPath filePath = ((LocalFileStorage) sourceElement).getFullPath();
+ URI fileURI = URIUtil.toURI(filePath);
+ IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
+ IFile[] files = root.findFilesForLocationURI(fileURI);
+ if (files.length > 0) {
+ // Take the first match
+ sourceElement = files[0];
+ }
+ }
+
+ IDebugModelPresentation pres = DebugUITools
+ .newDebugModelPresentation(CDebugCorePlugin.getUniqueIdentifier());
+ input = pres.getEditorInput(sourceElement);
+ editorID = pres.getEditorId(input, sourceElement);
+ pres.dispose();
+ }
+ }
+ if (input != null && editorID != null) {
+ // Open the editor
+ IWorkbenchPage activePage = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
+
+ IEditorPart editor = IDE.openEditor(activePage, input, editorID);
+ // Select the line
+ if (editor instanceof ITextEditor) {
+ ITextEditor textEditor = (ITextEditor) editor;
+
+ if (lineNumber > 0) {
+ IDocumentProvider provider = textEditor.getDocumentProvider();
+ IDocument document = provider.getDocument(textEditor.getEditorInput());
+
+ IRegion lineRegion = document.getLineInformation(lineNumber - 1); //zero-indexed
+ textEditor.selectAndReveal(lineRegion.getOffset(), lineRegion.getLength());
+ }
+ }
+ }
+ }
+}
diff --git a/unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/ui/OpenTestAction.java b/unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/ui/OpenTestAction.java
new file mode 100644
index 00000000000..e2d25171762
--- /dev/null
+++ b/unittest/org.eclipse.cdt.unittest/src/org/eclipse/cdt/unittest/ui/OpenTestAction.java
@@ -0,0 +1,324 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Red Hat Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Red Hat Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.unittest.ui;
+
+import java.util.HashSet;
+
+import org.eclipse.cdt.core.CCorePlugin;
+import org.eclipse.cdt.core.browser.ITypeInfo;
+import org.eclipse.cdt.core.browser.ITypeReference;
+import org.eclipse.cdt.core.browser.IndexTypeInfo;
+import org.eclipse.cdt.core.browser.QualifiedTypeName;
+import org.eclipse.cdt.core.dom.ast.IBinding;
+import org.eclipse.cdt.core.index.IIndex;
+import org.eclipse.cdt.core.index.IIndexBinding;
+import org.eclipse.cdt.core.index.IIndexMacro;
+import org.eclipse.cdt.core.index.IIndexManager;
+import org.eclipse.cdt.core.index.IndexFilter;
+import org.eclipse.cdt.core.model.CModelException;
+import org.eclipse.cdt.core.model.CoreModel;
+import org.eclipse.cdt.core.model.ICElement;
+import org.eclipse.cdt.core.model.ITranslationUnit;
+import org.eclipse.cdt.internal.core.browser.IndexModelUtil;
+import org.eclipse.cdt.internal.ui.search.CSearchUtil;
+import org.eclipse.cdt.internal.ui.util.EditorUtility;
+import org.eclipse.cdt.unittest.CDTUnitTestPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.text.BadLocationException;
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.texteditor.ITextEditor;
+import org.eclipse.unittest.model.ITestCaseElement;
+import org.eclipse.unittest.model.ITestElement;
+import org.eclipse.unittest.model.ITestSuiteElement;
+
+public class OpenTestAction extends Action {
+ protected String fClassName;
+ protected String fMethodName;
+ protected Shell shell;
+ private String fSearchPrefix;
+
+ /**
+ * Job to update the element list in the background.
+ */
+ private class UpdateElementsJob extends Job {
+ /**
+ * The last used prefix to query the index. <code>null</code> means
+ * the query result should be empty.
+ */
+ private volatile char[] fCurrentPrefix;
+ private Object[] result;
+
+ public UpdateElementsJob(String name) {
+ super(name);
+ setSystem(true);
+ setUser(false);
+ setPriority(Job.LONG);
+ }
+
+ public Object[] runQuery(String prefix) {
+ fCurrentPrefix = toPrefixChars(prefix);
+ result = null;
+ schedule();
+ try {
+ join();
+ } catch (InterruptedException e) {
+ return null;
+ }
+ return result;
+ }
+
+ @Override
+ public IStatus run(final IProgressMonitor monitor) {
+ monitor.beginTask(ActionsMessages.OpenEditorAction_UpdateElementsJob_inProgress, IProgressMonitor.UNKNOWN);
+ final ITypeInfo[] elements = getElementsByPrefix(fCurrentPrefix, monitor);
+ if (elements != null && !monitor.isCanceled()) {
+ result = elements;
+ monitor.done();
+ return Status.OK_STATUS;
+ }
+ return Status.CANCEL_STATUS;
+ }
+
+ private char[] toPrefixChars(String filterPrefix) {
+ filterPrefix = CSearchUtil.adjustSearchStringForOperators(filterPrefix);
+ return toPrefix(filterPrefix);
+ }
+
+ private char[] toPrefix(String userFilter) {
+ QualifiedTypeName qualifiedName = new QualifiedTypeName(userFilter);
+ if (qualifiedName.segmentCount() > 1) {
+ userFilter = qualifiedName.lastSegment();
+ }
+ if (userFilter.endsWith("<")) { //$NON-NLS-1$
+ userFilter = userFilter.substring(0, userFilter.length() - 1);
+ }
+ int asterisk = userFilter.indexOf("*"); //$NON-NLS-1$
+ int questionMark = userFilter.indexOf("?"); //$NON-NLS-1$
+ int prefixEnd = asterisk < 0 ? questionMark
+ : questionMark < 0 ? asterisk : Math.min(asterisk, questionMark);
+ return (prefixEnd == -1 ? userFilter : userFilter.substring(0, prefixEnd)).toCharArray();
+ }
+
+ /**
+ * Queries the elements for the given prefix.
+ * @param prefix a prefix
+ * @param monitor a progress monitor
+ * @return an array of {@link ITypeInfo}s
+ */
+ protected ITypeInfo[] getElementsByPrefix(char[] prefix, IProgressMonitor monitor) {
+ if (monitor.isCanceled()) {
+ return null;
+ }
+ HashSet<IndexTypeInfo> types = new HashSet<>();
+ if (prefix != null) {
+ final IndexFilter filter = new IndexFilter() {
+ @Override
+ public boolean acceptBinding(IBinding binding) throws CoreException {
+ if (isVisibleType(IndexModelUtil.getElementType(binding))) {
+ return IndexFilter.ALL_DECLARED.acceptBinding(binding);
+ }
+ return false;
+ }
+ };
+ try {
+ IIndex index = CCorePlugin.getIndexManager().getIndex(
+ CoreModel.getDefault().getCModel().getCProjects(),
+ IIndexManager.ADD_EXTENSION_FRAGMENTS_NAVIGATION);
+ index.acquireReadLock();
+ try {
+ IIndexBinding[] bindings = index.findBindingsForPrefix(prefix, false, filter, monitor);
+ for (int i = 0; i < bindings.length; i++) {
+ if (i % 0x1000 == 0 && monitor.isCanceled()) {
+ return null;
+ }
+ final IndexTypeInfo typeinfo = IndexTypeInfo.create(index, bindings[i]);
+ types.add(typeinfo);
+ }
+
+ if (isVisibleType(ICElement.C_MACRO)) {
+ IIndexMacro[] macros = index.findMacrosForPrefix(prefix, IndexFilter.ALL_DECLARED, monitor);
+ for (int i = 0; i < macros.length; i++) {
+ if (i % 0x1000 == 0 && monitor.isCanceled()) {
+ return null;
+ }
+ final IndexTypeInfo typeinfo = IndexTypeInfo.create(index, macros[i]);
+ types.add(typeinfo);
+ }
+ }
+ } finally {
+ index.releaseReadLock();
+ }
+ } catch (CoreException | InterruptedException e) {
+ CDTUnitTestPlugin.log(e);
+ }
+ }
+ return types.toArray(new ITypeInfo[types.size()]);
+ }
+
+ /**
+ * Answer whether the given type is a class or a struct.
+ *
+ * @param type the type constant, see {@link ICElement}
+ * @return <code>true</code> if the given type is visible,
+ * <code>false</code> otherwise
+ */
+ protected boolean isVisibleType(int type) {
+ return ICElement.C_CLASS == type || ICElement.C_STRUCT == type;
+ }
+ }
+
+ public OpenTestAction(Shell shell, ITestSuiteElement testSuite) {
+ this(shell, testSuite, null);
+ }
+
+ public OpenTestAction(Shell shell, ITestSuiteElement testSuite, ITestCaseElement testCase) {
+ super(ActionsMessages.OpenEditorAction_action_label);
+ this.shell = shell;
+ this.fClassName = getClassName(testSuite);
+ this.fMethodName = testCase != null ? getTestMethodName(testCase) : "*"; //$NON-NLS-1$
+ this.fSearchPrefix = new StringBuilder(fClassName).append('_').append(fMethodName).append("_Test").toString(); //$NON-NLS-1$
+ }
+
+ /*
+ * @see IAction#run()
+ */
+ @Override
+ public void run() {
+ UpdateElementsJob searchJob = new UpdateElementsJob(ActionsMessages.OpenEditorAction_UpdateElementsJob_name);
+ Object[] result = searchJob.runQuery(fSearchPrefix);
+
+ Object infoObject = result != null && result.length > 0 ? result[0] : null;
+ ITypeInfo info = infoObject instanceof ITypeInfo ? (ITypeInfo) infoObject : null;
+ ITypeReference location = info != null ? info.getResolvedReference() : null;
+
+ if (location == null) {
+ MessageDialog.openError(getShell(), ActionsMessages.OpenEditorAction_error_cannotopen_title,
+ ActionsMessages.OpenEditorAction_error_cannotopen_message);
+ } else if (!openTypeInEditor(location)) {
+ // Error opening editor.
+ String title = ActionsMessages.OpenEditorAction_error_cannotopen_title;
+ String message = NLS.bind(ActionsMessages.OpenEditorAction_errorOpenEditor, location.getPath().toString());
+ MessageDialog.openError(getShell(), title, message);
+ }
+ }
+
+ protected Shell getShell() {
+ return shell;
+ }
+
+ /**
+ * Opens an editor and displays the selected type.
+ *
+ * @param location a location reference
+ * @return true if successfully displayed.
+ */
+ private boolean openTypeInEditor(ITypeReference location) {
+ ICElement[] cElements = location.getCElements();
+ try {
+ if (cElements != null && cElements.length > 0) {
+ IEditorPart editor = EditorUtility.openInEditor(cElements[0]);
+ EditorUtility.revealInEditor(editor, cElements[0]);
+ return true;
+ }
+ ITranslationUnit unit = location.getTranslationUnit();
+ IEditorPart editorPart = null;
+
+ if (unit != null)
+ editorPart = EditorUtility.openInEditor(unit);
+ if (editorPart == null) {
+ // Open as external file.
+ editorPart = EditorUtility.openInEditor(location.getLocation(), null);
+ }
+
+ // Highlight the type in the editor.
+ if (editorPart != null && editorPart instanceof ITextEditor) {
+ ITextEditor editor = (ITextEditor) editorPart;
+ if (location.isLineNumber()) {
+ IDocument document = editor.getDocumentProvider().getDocument(editor.getEditorInput());
+ try {
+ int startOffset = document.getLineOffset(location.getOffset() - 1);
+ int length = document.getLineLength(location.getOffset() - 1);
+ editor.selectAndReveal(startOffset, length);
+ return true;
+ } catch (BadLocationException ble) {
+ return false;
+ }
+ }
+ editor.selectAndReveal(location.getOffset(), location.getLength());
+ return true;
+ }
+ } catch (CModelException ex) {
+ CDTUnitTestPlugin.log(ex);
+ return false;
+ } catch (PartInitException ex) {
+ CDTUnitTestPlugin.log(ex);
+ return false;
+ }
+
+ return false;
+ }
+
+ public String getClassName(ITestElement test) {
+ return extractClassName(test.getTestName());
+ }
+
+ private static String extractClassName(String testNameString) {
+ testNameString = extractRawClassName(testNameString);
+ testNameString = testNameString.replace('$', '.'); // see bug 178503
+ return testNameString;
+ }
+
+ /**
+ * Extracts and returns a raw class name from a test element name
+ *
+ * @param testNameString a test element name
+ *
+ * @return an extracted raw class name
+ */
+ public static String extractRawClassName(String testNameString) {
+ if (testNameString.startsWith("[") && testNameString.endsWith("]")) { //$NON-NLS-1$ //$NON-NLS-2$
+ // a group of parameterized tests, see
+ // https://bugs.eclipse.org/bugs/show_bug.cgi?id=102512
+ return testNameString;
+ }
+ int index = testNameString.lastIndexOf('(');
+ if (index < 0)
+ return testNameString;
+ int end = testNameString.lastIndexOf(')');
+ testNameString = testNameString.substring(index + 1, end > index ? end : testNameString.length());
+ return testNameString;
+ }
+
+ private String getTestMethodName(ITestElement test) {
+ String testName = test.getTestName();
+ int index = testName.lastIndexOf('(');
+ if (index > 0)
+ return testName.substring(0, index);
+ index = testName.indexOf('@');
+ if (index > 0)
+ return testName.substring(0, index);
+ return testName;
+ }
+
+}
diff --git a/unittest/pom.xml b/unittest/pom.xml
new file mode 100644
index 00000000000..2f38cc89806
--- /dev/null
+++ b/unittest/pom.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2017, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
+<project
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+ xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.cdt</groupId>
+ <artifactId>cdt-parent</artifactId>
+ <version>10.7.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>org.eclipse.cdt.unittest-parent</artifactId>
+ <packaging>pom</packaging>
+</project>
diff --git a/upc/org.eclipse.cdt.bupc-feature/.project b/upc/org.eclipse.cdt.bupc-feature/.project
deleted file mode 100644
index 36362f86a9c..00000000000
--- a/upc/org.eclipse.cdt.bupc-feature/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.cdt.bupc-feature</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.pde.FeatureBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.pde.FeatureNature</nature>
- </natures>
-</projectDescription>
diff --git a/upc/org.eclipse.cdt.bupc-feature/build.properties b/upc/org.eclipse.cdt.bupc-feature/build.properties
deleted file mode 100644
index d9627780a20..00000000000
--- a/upc/org.eclipse.cdt.bupc-feature/build.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-###############################################################################
-# Copyright (c) 2010 IBM Corporation and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-bin.includes = feature.xml,\
- feature.properties
diff --git a/upc/org.eclipse.cdt.bupc-feature/feature.properties b/upc/org.eclipse.cdt.bupc-feature/feature.properties
deleted file mode 100644
index becda7dcfd5..00000000000
--- a/upc/org.eclipse.cdt.bupc-feature/feature.properties
+++ /dev/null
@@ -1,36 +0,0 @@
-###############################################################################
-# Copyright (c) 2010 IBM Corporation and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-# features.properties
-# contains externalized strings for feature.xml
-# "%foo" in feature.xml corresponds to the key "foo" in this file
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# This file should be translated.
-
-# "featureName" property - name of the feature
-featureName=C/C++ Berkeley UPC (Unified Parallel C) Toolchain Support
-
-# "providerName" property - name of the company that provides the feature
-providerName=Eclipse CDT
-
-# "description" property - description of the feature
-description=Support for Berkeley Unified Parallel C (UPC) toolchain.
-
-# copyright
-copyright=\
-Copyright (c) 2010, 2011 University of Florida and others.\n\
-This program and the accompanying materials\n\
-are made available under the terms of the Eclipse Public License 2.0\n\
-which accompanies this distribution, and is available at\n\
-https://www.eclipse.org/legal/epl-2.0/
-
diff --git a/upc/org.eclipse.cdt.bupc-feature/feature.xml b/upc/org.eclipse.cdt.bupc-feature/feature.xml
deleted file mode 100644
index eea0f87dc46..00000000000
--- a/upc/org.eclipse.cdt.bupc-feature/feature.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
- id="org.eclipse.cdt.bupc"
- label="%featureName"
- version="9.10.0.qualifier"
- provider-name="%providerName"
- plugin="org.eclipse.cdt.managedbuilder.bupc.ui"
- license-feature="org.eclipse.license"
- license-feature-version="0.0.0">
-
- <description>
- %description
- </description>
-
- <copyright>
- %copyright
- </copyright>
-
- <license url="%licenseURL">
- %license
- </license>
-
- <plugin
- id="org.eclipse.cdt.managedbuilder.bupc.ui"
- download-size="0"
- install-size="0"
- version="0.0.0"/>
-
-</feature>
diff --git a/upc/org.eclipse.cdt.core.parser.upc.feature/.project b/upc/org.eclipse.cdt.core.parser.upc.feature/.project
deleted file mode 100644
index 0884172c6e0..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc.feature/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.cdt.core.parser.upc.feature</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.pde.FeatureBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.pde.FeatureNature</nature>
- </natures>
-</projectDescription>
diff --git a/upc/org.eclipse.cdt.core.parser.upc.feature/build.properties b/upc/org.eclipse.cdt.core.parser.upc.feature/build.properties
deleted file mode 100644
index 4229bb6f7a3..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc.feature/build.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 IBM Corporation and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-bin.includes = feature.xml,\
- feature.properties
diff --git a/upc/org.eclipse.cdt.core.parser.upc.feature/feature.properties b/upc/org.eclipse.cdt.core.parser.upc.feature/feature.properties
deleted file mode 100644
index ce3cde03404..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc.feature/feature.properties
+++ /dev/null
@@ -1,36 +0,0 @@
-###############################################################################
-# Copyright (c) 2007, 2010 IBM Corporation and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-# feature.properties
-# contains externalized strings for feature.xml
-# "%foo" in feature.xml corresponds to the key "foo" in this file
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# This file should be translated.
-
-# "featureName" property - name of the feature
-featureName=C/C++ UPC (Unified Parallel C) Support
-
-# "providerName" property - name of the company that provides the feature
-providerName=Eclipse CDT
-
-# "description" property - description of the feature
-description=Support for the Unified Parallel C variant of the C programming language.
-
-# copyright
-copyright=\
-Copyright (c) 2007, 2011 IBM Corporation and others.\n\
-This program and the accompanying materials\n\
-are made available under the terms of the Eclipse Public License 2.0\n\
-which accompanies this distribution, and is available at\n\
-https://www.eclipse.org/legal/epl-2.0/
-
diff --git a/upc/org.eclipse.cdt.core.parser.upc.feature/feature.xml b/upc/org.eclipse.cdt.core.parser.upc.feature/feature.xml
deleted file mode 100644
index fde15ab932e..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc.feature/feature.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
- id="org.eclipse.cdt.core.parser.upc.feature"
- label="%featureName"
- version="9.10.0.qualifier"
- provider-name="%providerName"
- plugin="org.eclipse.cdt.core.parser.upc"
- license-feature="org.eclipse.license"
- license-feature-version="0.0.0">
-
- <description>
- %description
- </description>
-
- <copyright>
- %copyright
- </copyright>
-
- <license url="%licenseURL">
- %license
- </license>
-
- <includes
- id="org.eclipse.cdt.core.lrparser.feature"
- version="0.0.0"/>
-
- <plugin
- id="org.eclipse.cdt.core.parser.upc"
- download-size="0"
- install-size="0"
- version="0.0.0"
- unpack="false"/>
-
-</feature>
diff --git a/upc/org.eclipse.cdt.core.parser.upc.feature/sourceTemplateFeature/p2.inf b/upc/org.eclipse.cdt.core.parser.upc.feature/sourceTemplateFeature/p2.inf
deleted file mode 100644
index 91b75dae077..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc.feature/sourceTemplateFeature/p2.inf
+++ /dev/null
@@ -1 +0,0 @@
-update.matchExp=providedCapabilities.exists(pc | pc.namespace == 'org.eclipse.equinox.p2.iu' && (pc.name == 'org.eclipse.cdt.core.parser.upc.source.feature.group' || pc.name == 'org.eclipse.cdt.core.parser.upc.feature.source.feature.group'))
diff --git a/upc/org.eclipse.cdt.core.parser.upc.sdk.feature/.project b/upc/org.eclipse.cdt.core.parser.upc.sdk.feature/.project
deleted file mode 100644
index 446bd43d03d..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc.sdk.feature/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.cdt.core.parser.upc.sdk.feature</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.pde.FeatureBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.pde.FeatureNature</nature>
- </natures>
-</projectDescription>
diff --git a/upc/org.eclipse.cdt.core.parser.upc.sdk.feature/build.properties b/upc/org.eclipse.cdt.core.parser.upc.sdk.feature/build.properties
deleted file mode 100644
index e160cdb1253..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc.sdk.feature/build.properties
+++ /dev/null
@@ -1,16 +0,0 @@
-###############################################################################
-# Copyright (c) 2009 IBM Corporation and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-bin.includes = feature.xml,\
- feature.properties
-generate.feature@org.eclipse.cdt.core.parser.upc.source = org.eclipse.cdt.core.parser.upc.feature
diff --git a/upc/org.eclipse.cdt.core.parser.upc.sdk.feature/feature-no-source.properties b/upc/org.eclipse.cdt.core.parser.upc.sdk.feature/feature-no-source.properties
deleted file mode 100644
index 8c2b2f70c57..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc.sdk.feature/feature-no-source.properties
+++ /dev/null
@@ -1 +0,0 @@
-# This file tells the Maven build to not generate sources for this feature
diff --git a/upc/org.eclipse.cdt.core.parser.upc.sdk.feature/feature.properties b/upc/org.eclipse.cdt.core.parser.upc.sdk.feature/feature.properties
deleted file mode 100644
index a865b3f99d6..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc.sdk.feature/feature.properties
+++ /dev/null
@@ -1,36 +0,0 @@
-###############################################################################
-# Copyright (c) 2009, 2010 IBM Corporation and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-# feature.properties
-# contains externalized strings for feature.xml
-# "%foo" in feature.xml corresponds to the key "foo" in this file
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# This file should be translated.
-
-# "featureName" property - name of the feature
-featureName=C/C++ UPC (Unified Parallel C) Support SDK
-
-# "providerName" property - name of the company that provides the feature
-providerName=Eclipse CDT
-
-# "description" property - description of the feature
-description=Support for the Unified Parallel C variant of the C programming language. Software development kit including source code and developer documentation.
-
-# copyright
-copyright=\
-Copyright (c) 2006, 2011 IBM Corporation and others.\n\
-This program and the accompanying materials\n\
-are made available under the terms of the Eclipse Public License 2.0\n\
-which accompanies this distribution, and is available at\n\
-https://www.eclipse.org/legal/epl-2.0/
-
diff --git a/upc/org.eclipse.cdt.core.parser.upc.sdk.feature/feature.xml b/upc/org.eclipse.cdt.core.parser.upc.sdk.feature/feature.xml
deleted file mode 100644
index 8e36725862c..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc.sdk.feature/feature.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
- id="org.eclipse.cdt.core.parser.upc.sdk"
- label="%featureName"
- version="9.10.0.qualifier"
- provider-name="%providerName"
- plugin="org.eclipse.cdt.core.parser.upc.source"
- license-feature="org.eclipse.license"
- license-feature-version="0.0.0">
-
- <description>
- %description
- </description>
-
- <copyright>
- %copyright
- </copyright>
-
- <license url="%licenseURL">
- %license
- </license>
-
- <includes
- id="org.eclipse.cdt.core.parser.upc.feature.source"
- version="0.0.0"/>
-
- <includes
- id="org.eclipse.cdt.core.parser.upc.feature"
- version="0.0.0"/>
-
-</feature>
diff --git a/upc/org.eclipse.cdt.core.parser.upc.tests/.classpath b/upc/org.eclipse.cdt.core.parser.upc.tests/.classpath
deleted file mode 100644
index eca7bdba8f0..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc.tests/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
- <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/upc/org.eclipse.cdt.core.parser.upc.tests/.project b/upc/org.eclipse.cdt.core.parser.upc.tests/.project
deleted file mode 100644
index 5ccd5d6305e..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc.tests/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.cdt.core.parser.upc.tests</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.ManifestBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.SchemaBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.pde.PluginNature</nature>
- <nature>org.eclipse.jdt.core.javanature</nature>
- </natures>
-</projectDescription>
diff --git a/upc/org.eclipse.cdt.core.parser.upc.tests/.settings/org.eclipse.jdt.core.prefs b/upc/org.eclipse.cdt.core.parser.upc.tests/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index ad05599159f..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc.tests/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,464 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
-org.eclipse.jdt.core.codeComplete.argumentPrefixes=
-org.eclipse.jdt.core.codeComplete.argumentSuffixes=
-org.eclipse.jdt.core.codeComplete.fieldPrefixes=
-org.eclipse.jdt.core.codeComplete.fieldSuffixes=
-org.eclipse.jdt.core.codeComplete.localPrefixes=
-org.eclipse.jdt.core.codeComplete.localSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
-org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
-org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
-org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
-org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
-org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
-org.eclipse.jdt.core.compiler.problem.APILeak=warning
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=ignore
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
-org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
-org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
-org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
-org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
-org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
-org.eclipse.jdt.core.compiler.problem.nullReference=error
-org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
-org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
-org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
-org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
-org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
-org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
-org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=ignore
-org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore
-org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
-org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
-org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
-org.eclipse.jdt.core.formatter.align_with_spaces=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
-org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
-org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
-org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
-org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=0
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
-org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
-org.eclipse.jdt.core.formatter.comment.format_block_comments=false
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
-org.eclipse.jdt.core.formatter.comment.format_line_comments=false
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
-org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
-org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
-org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.join_lines_in_comments=true
-org.eclipse.jdt.core.formatter.join_wrapped_lines=true
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=120
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_on_off_tags=true
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
-org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
-org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/upc/org.eclipse.cdt.core.parser.upc.tests/.settings/org.eclipse.jdt.ui.prefs b/upc/org.eclipse.cdt.core.parser.upc.tests/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index e44576346c4..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc.tests/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,133 +0,0 @@
-cleanup.add_default_serial_version_id=true
-cleanup.add_generated_serial_version_id=false
-cleanup.add_missing_annotations=true
-cleanup.add_missing_deprecated_annotations=true
-cleanup.add_missing_methods=false
-cleanup.add_missing_nls_tags=false
-cleanup.add_missing_override_annotations=true
-cleanup.add_missing_override_annotations_interface_methods=true
-cleanup.add_serial_version_id=false
-cleanup.always_use_blocks=true
-cleanup.always_use_parentheses_in_expressions=false
-cleanup.always_use_this_for_non_static_field_access=false
-cleanup.always_use_this_for_non_static_method_access=false
-cleanup.convert_functional_interfaces=false
-cleanup.convert_to_enhanced_for_loop=false
-cleanup.correct_indentation=false
-cleanup.format_source_code=true
-cleanup.format_source_code_changes_only=false
-cleanup.insert_inferred_type_arguments=false
-cleanup.make_local_variable_final=true
-cleanup.make_parameters_final=false
-cleanup.make_private_fields_final=true
-cleanup.make_type_abstract_if_missing_method=false
-cleanup.make_variable_declarations_final=false
-cleanup.never_use_blocks=false
-cleanup.never_use_parentheses_in_expressions=true
-cleanup.organize_imports=true
-cleanup.qualify_static_field_accesses_with_declaring_class=false
-cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-cleanup.qualify_static_member_accesses_with_declaring_class=false
-cleanup.qualify_static_method_accesses_with_declaring_class=false
-cleanup.remove_private_constructors=true
-cleanup.remove_redundant_modifiers=false
-cleanup.remove_redundant_semicolons=true
-cleanup.remove_redundant_type_arguments=true
-cleanup.remove_trailing_whitespaces=true
-cleanup.remove_trailing_whitespaces_all=true
-cleanup.remove_trailing_whitespaces_ignore_empty=false
-cleanup.remove_unnecessary_casts=true
-cleanup.remove_unnecessary_nls_tags=false
-cleanup.remove_unused_imports=true
-cleanup.remove_unused_local_variables=false
-cleanup.remove_unused_private_fields=true
-cleanup.remove_unused_private_members=false
-cleanup.remove_unused_private_methods=true
-cleanup.remove_unused_private_types=true
-cleanup.sort_members=false
-cleanup.sort_members_all=false
-cleanup.use_anonymous_class_creation=false
-cleanup.use_blocks=false
-cleanup.use_blocks_only_for_return_and_throw=false
-cleanup.use_lambda=true
-cleanup.use_parentheses_in_expressions=false
-cleanup.use_this_for_non_static_field_access=false
-cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-cleanup.use_this_for_non_static_method_access=false
-cleanup.use_this_for_non_static_method_access_only_if_necessary=true
-cleanup_profile=_CDT
-cleanup_settings_version=2
-eclipse.preferences.version=1
-editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=_CDT
-formatter_settings_version=14
-internal.default.compliance=user
-org.eclipse.jdt.ui.exception.name=e
-org.eclipse.jdt.ui.gettersetter.use.is=true
-org.eclipse.jdt.ui.ignorelowercasenames=true
-org.eclipse.jdt.ui.importorder=java;javax;org;com;
-org.eclipse.jdt.ui.keywordthis=false
-org.eclipse.jdt.ui.ondemandthreshold=1000
-org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.staticondemandthreshold=1000
-org.eclipse.jdt.ui.text.custom_code_templates=
-sp_cleanup.add_default_serial_version_id=true
-sp_cleanup.add_generated_serial_version_id=false
-sp_cleanup.add_missing_annotations=true
-sp_cleanup.add_missing_deprecated_annotations=true
-sp_cleanup.add_missing_methods=false
-sp_cleanup.add_missing_nls_tags=false
-sp_cleanup.add_missing_override_annotations=true
-sp_cleanup.add_missing_override_annotations_interface_methods=true
-sp_cleanup.add_serial_version_id=false
-sp_cleanup.always_use_blocks=true
-sp_cleanup.always_use_parentheses_in_expressions=false
-sp_cleanup.always_use_this_for_non_static_field_access=false
-sp_cleanup.always_use_this_for_non_static_method_access=false
-sp_cleanup.convert_functional_interfaces=false
-sp_cleanup.convert_to_enhanced_for_loop=false
-sp_cleanup.correct_indentation=false
-sp_cleanup.format_source_code=true
-sp_cleanup.format_source_code_changes_only=false
-sp_cleanup.insert_inferred_type_arguments=false
-sp_cleanup.make_local_variable_final=true
-sp_cleanup.make_parameters_final=false
-sp_cleanup.make_private_fields_final=true
-sp_cleanup.make_type_abstract_if_missing_method=false
-sp_cleanup.make_variable_declarations_final=false
-sp_cleanup.never_use_blocks=false
-sp_cleanup.never_use_parentheses_in_expressions=true
-sp_cleanup.on_save_use_additional_actions=true
-sp_cleanup.organize_imports=true
-sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
-sp_cleanup.remove_private_constructors=true
-sp_cleanup.remove_redundant_modifiers=false
-sp_cleanup.remove_redundant_semicolons=true
-sp_cleanup.remove_redundant_type_arguments=true
-sp_cleanup.remove_trailing_whitespaces=true
-sp_cleanup.remove_trailing_whitespaces_all=true
-sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
-sp_cleanup.remove_unnecessary_casts=true
-sp_cleanup.remove_unnecessary_nls_tags=false
-sp_cleanup.remove_unused_imports=true
-sp_cleanup.remove_unused_local_variables=false
-sp_cleanup.remove_unused_private_fields=true
-sp_cleanup.remove_unused_private_members=false
-sp_cleanup.remove_unused_private_methods=true
-sp_cleanup.remove_unused_private_types=true
-sp_cleanup.sort_members=false
-sp_cleanup.sort_members_all=false
-sp_cleanup.use_anonymous_class_creation=false
-sp_cleanup.use_blocks=false
-sp_cleanup.use_blocks_only_for_return_and_throw=false
-sp_cleanup.use_lambda=true
-sp_cleanup.use_parentheses_in_expressions=false
-sp_cleanup.use_this_for_non_static_field_access=false
-sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-sp_cleanup.use_this_for_non_static_method_access=false
-sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/upc/org.eclipse.cdt.core.parser.upc.tests/META-INF/MANIFEST.MF b/upc/org.eclipse.cdt.core.parser.upc.tests/META-INF/MANIFEST.MF
deleted file mode 100644
index 8309716f5e0..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc.tests/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,18 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %Bundle-Name.0
-Bundle-SymbolicName: org.eclipse.cdt.core.parser.upc.tests
-Bundle-Version: 5.1.0.qualifier
-Require-Bundle: org.eclipse.core.runtime,
- org.junit,
- org.eclipse.cdt.core.tests,
- org.eclipse.cdt.core,
- org.eclipse.core.resources,
- org.eclipse.cdt.core.parser.upc,
- org.eclipse.cdt.core.lrparser;bundle-version="4.0.1",
- org.eclipse.cdt.core.lrparser.tests;bundle-version="4.0.0"
-Bundle-Vendor: %Bundle-Vendor.0
-Bundle-Localization: plugin
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Export-Package: org.eclipse.cdt.core.parser.upc.tests
-Automatic-Module-Name: org.eclipse.cdt.core.parser.upc.tests
diff --git a/upc/org.eclipse.cdt.core.parser.upc.tests/about.html b/upc/org.eclipse.cdt.core.parser.upc.tests/about.html
deleted file mode 100644
index 164f781a8fd..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc.tests/about.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
-</head>
-<body lang="EN-US">
- <h2>About This Content</h2>
-
- <p>November 30, 2017</p>
- <h3>License</h3>
-
- <p>
- The Eclipse Foundation makes available all content in this plug-in
- (&quot;Content&quot;). Unless otherwise indicated below, the Content
- is provided to you under the terms and conditions of the Eclipse
- Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
- For purposes of the EPL, &quot;Program&quot; will mean the Content.
- </p>
-
- <p>
- If you did not receive this Content directly from the Eclipse
- Foundation, the Content is being redistributed by another party
- (&quot;Redistributor&quot;) and different terms and conditions may
- apply to your use of any object code in the Content. Check the
- Redistributor's license that was provided with the Content. If no such
- license exists, contact the Redistributor. Unless otherwise indicated
- below, the terms and conditions of the EPL still apply to any source
- code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
- </p>
-
-</body>
-</html> \ No newline at end of file
diff --git a/upc/org.eclipse.cdt.core.parser.upc.tests/build.properties b/upc/org.eclipse.cdt.core.parser.upc.tests/build.properties
deleted file mode 100644
index 2efd6977db3..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc.tests/build.properties
+++ /dev/null
@@ -1,20 +0,0 @@
-###############################################################################
-# Copyright (c) 2007, 2009 IBM Corporation and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
- .,\
- about.html,\
- plugin.properties
-src.includes = about.html
diff --git a/upc/org.eclipse.cdt.core.parser.upc.tests/plugin.properties b/upc/org.eclipse.cdt.core.parser.upc.tests/plugin.properties
deleted file mode 100644
index d2af05f91ce..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc.tests/plugin.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-###############################################################################
-# Copyright (c) 2007, 2009 IBM Corporation and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-# properties file for org.eclipse.cdt.core.parser.c99.tests
-Bundle-Vendor.0 = Eclipse CDT
-Bundle-Name.0 = C99 Parser Tests Plug-in
-
-upcSourceName=UPC Source File \ No newline at end of file
diff --git a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/AutomatedIntegrationSuite.java b/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/AutomatedIntegrationSuite.java
deleted file mode 100644
index 242fc53512c..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/AutomatedIntegrationSuite.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.parser.upc.tests;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-public class AutomatedIntegrationSuite extends TestSuite {
-
- public static Test suite() {
- return new TestSuite() {
- {
- addTestSuite(UPCCommentTests.class);
- addTestSuite(UPCCompletionBasicTest.class);
- addTestSuite(UPCCompletionParseTest.class);
- addTestSuite(UPCDOMLocationMacroTests.class);
- addTestSuite(UPCDOMLocationTests.class);
- addTestSuite(UPCDOMPreprocessorInformationTest.class);
- addTestSuite(UPCKnRTests.class);
- addTestSuite(UPCSelectionParseTest.class);
- addTestSuite(UPCCSpecTests.class);
- addTestSuite(UPCTests.class);
- addTestSuite(UPCLanguageExtensionTests.class);
- addTestSuite(UPCDigraphTrigraphTests.class);
- addTestSuite(UPCGCCTests.class);
- addTestSuite(UPCUtilOldTests.class);
- addTestSuite(UPCUtilTests.class);
- addTestSuite(UPCCompleteParser2Tests.class);
- addTestSuite(UPCTaskParserTest.class);
- }
- };
- }
-}
diff --git a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCCSpecTests.java b/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCCSpecTests.java
deleted file mode 100644
index ada3384103a..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCCSpecTests.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.parser.upc.tests;
-
-import org.eclipse.cdt.core.dom.upc.UPCLanguage;
-import org.eclipse.cdt.core.lrparser.tests.LRCSpecTests;
-import org.eclipse.cdt.core.model.ILanguage;
-
-public class UPCCSpecTests extends LRCSpecTests {
-
- public UPCCSpecTests() {
- }
-
- public UPCCSpecTests(String name) {
- super(name);
- }
-
- @Override
- protected ILanguage getCLanguage() {
- return UPCLanguage.getDefault();
- }
-
-}
diff --git a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCCommentTests.java b/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCCommentTests.java
deleted file mode 100644
index db778db4d33..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCCommentTests.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.parser.upc.tests;
-
-import org.eclipse.cdt.core.dom.upc.UPCLanguage;
-import org.eclipse.cdt.core.lrparser.tests.LRCommentTests;
-import org.eclipse.cdt.core.model.ILanguage;
-
-public class UPCCommentTests extends LRCommentTests {
-
- @Override
- protected ILanguage getCLanguage() {
- return UPCLanguage.getDefault();
- }
-}
diff --git a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCCompleteParser2Tests.java b/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCCompleteParser2Tests.java
deleted file mode 100644
index 4654e2f8b55..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCCompleteParser2Tests.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2010 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.parser.upc.tests;
-
-import org.eclipse.cdt.core.dom.upc.UPCLanguage;
-import org.eclipse.cdt.core.lrparser.tests.LRCompleteParser2Tests;
-import org.eclipse.cdt.core.model.ILanguage;
-
-public class UPCCompleteParser2Tests extends LRCompleteParser2Tests {
-
- @Override
- public void testGNUASMExtension() throws Exception {
- }
-
- @Override
- public void testBug39551B() throws Exception {
- }
-
- @Override
- public void testBug39676_tough() throws Exception {
- }
-
- @Override
- public void testBug102376() throws Exception {
- }
-
- @Override
- protected ILanguage getCLanguage() {
- return UPCLanguage.getDefault();
- }
-
-}
diff --git a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCCompletionBasicTest.java b/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCCompletionBasicTest.java
deleted file mode 100644
index 01e76a63d06..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCCompletionBasicTest.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.parser.upc.tests;
-
-import org.eclipse.cdt.core.dom.lrparser.c99.C99Language;
-import org.eclipse.cdt.core.lrparser.tests.LRCompletionBasicTest;
-import org.eclipse.cdt.core.model.ILanguage;
-
-public class UPCCompletionBasicTest extends LRCompletionBasicTest {
-
- public UPCCompletionBasicTest() {
- }
-
- @Override
- protected ILanguage getCLanguage() {
- return C99Language.getDefault();
- }
-
-} \ No newline at end of file
diff --git a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCCompletionParseTest.java b/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCCompletionParseTest.java
deleted file mode 100644
index 043edeea963..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCCompletionParseTest.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.parser.upc.tests;
-
-import org.eclipse.cdt.core.dom.upc.UPCLanguage;
-import org.eclipse.cdt.core.lrparser.tests.LRCompletionParseTest;
-import org.eclipse.cdt.core.model.ILanguage;
-
-public class UPCCompletionParseTest extends LRCompletionParseTest {
-
- public UPCCompletionParseTest() {
- }
-
- public UPCCompletionParseTest(String name) {
- super(name);
- }
-
- @Override
- protected ILanguage getCLanguage() {
- return UPCLanguage.getDefault();
- }
-}
diff --git a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCDOMLocationMacroTests.java b/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCDOMLocationMacroTests.java
deleted file mode 100644
index 0f7ae36a34e..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCDOMLocationMacroTests.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2010 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.parser.upc.tests;
-
-import org.eclipse.cdt.core.dom.upc.UPCLanguage;
-import org.eclipse.cdt.core.lrparser.tests.LRDOMLocationMacroTests;
-import org.eclipse.cdt.core.model.ILanguage;
-import org.eclipse.cdt.internal.core.parser.ParserException;
-
-public class UPCDOMLocationMacroTests extends LRDOMLocationMacroTests {
-
- public UPCDOMLocationMacroTests() {
- }
-
- //TODO ??? overwrite some failed test cases
- @Override
- public void testStdioBug() throws ParserException {
- }
-
- @Override
- protected ILanguage getCLanguage() {
- return UPCLanguage.getDefault();
- }
-}
diff --git a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCDOMLocationTests.java b/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCDOMLocationTests.java
deleted file mode 100644
index a1ad7ad9c93..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCDOMLocationTests.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.parser.upc.tests;
-
-import org.eclipse.cdt.core.dom.upc.UPCLanguage;
-import org.eclipse.cdt.core.lrparser.tests.LRDOMLocationTests;
-import org.eclipse.cdt.core.model.ILanguage;
-
-public class UPCDOMLocationTests extends LRDOMLocationTests {
-
- public UPCDOMLocationTests() {
- }
-
- public UPCDOMLocationTests(String name) {
- super(name);
- }
-
- @Override
- protected ILanguage getCLanguage() {
- return UPCLanguage.getDefault();
- }
-}
diff --git a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCDOMPreprocessorInformationTest.java b/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCDOMPreprocessorInformationTest.java
deleted file mode 100644
index af758dbffb7..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCDOMPreprocessorInformationTest.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.parser.upc.tests;
-
-import org.eclipse.cdt.core.dom.upc.UPCLanguage;
-import org.eclipse.cdt.core.lrparser.tests.LRDOMPreprocessorInformationTest;
-import org.eclipse.cdt.core.model.ILanguage;
-
-public class UPCDOMPreprocessorInformationTest extends LRDOMPreprocessorInformationTest {
-
- @Override
- protected ILanguage getCLanguage() {
- return UPCLanguage.getDefault();
- }
-
-}
diff --git a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCDigraphTrigraphTests.java b/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCDigraphTrigraphTests.java
deleted file mode 100644
index febb6c26127..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCDigraphTrigraphTests.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.parser.upc.tests;
-
-import org.eclipse.cdt.core.dom.upc.UPCLanguage;
-import org.eclipse.cdt.core.lrparser.tests.LRDigraphTrigraphTests;
-import org.eclipse.cdt.core.model.ILanguage;
-
-public class UPCDigraphTrigraphTests extends LRDigraphTrigraphTests {
-
- public UPCDigraphTrigraphTests() {
- }
-
- public UPCDigraphTrigraphTests(String name) {
- super(name);
- }
-
- @Override
- protected ILanguage getCLanguage() {
- return UPCLanguage.getDefault();
- }
-}
diff --git a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCGCCTests.java b/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCGCCTests.java
deleted file mode 100644
index 0f3b6c3f6e1..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCGCCTests.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.parser.upc.tests;
-
-import org.eclipse.cdt.core.dom.upc.UPCLanguage;
-import org.eclipse.cdt.core.lrparser.tests.LRGCCTests;
-import org.eclipse.cdt.core.model.ILanguage;
-
-public class UPCGCCTests extends LRGCCTests {
-
- public UPCGCCTests() {
- }
-
- public UPCGCCTests(String message) {
- super(message);
- }
-
- @Override
- protected ILanguage getCLanguage() {
- return UPCLanguage.getDefault();
- }
-
-}
diff --git a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCKnRTests.java b/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCKnRTests.java
deleted file mode 100644
index 702a21dc207..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCKnRTests.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.parser.upc.tests;
-
-import org.eclipse.cdt.core.dom.upc.UPCLanguage;
-import org.eclipse.cdt.core.lrparser.tests.LRKnRTests;
-import org.eclipse.cdt.core.model.ILanguage;
-
-public class UPCKnRTests extends LRKnRTests {
-
- public UPCKnRTests() {
- }
-
- @Override
- protected ILanguage getCLanguage() {
- return UPCLanguage.getDefault();
- }
-
-}
diff --git a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCLanguageExtensionTests.java b/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCLanguageExtensionTests.java
deleted file mode 100644
index 23a8757095d..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCLanguageExtensionTests.java
+++ /dev/null
@@ -1,506 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.parser.upc.tests;
-
-import org.eclipse.cdt.core.dom.ast.IASTArrayDeclarator;
-import org.eclipse.cdt.core.dom.ast.IASTArrayModifier;
-import org.eclipse.cdt.core.dom.ast.IASTArraySubscriptExpression;
-import org.eclipse.cdt.core.dom.ast.IASTBinaryExpression;
-import org.eclipse.cdt.core.dom.ast.IASTCompoundStatement;
-import org.eclipse.cdt.core.dom.ast.IASTDeclaration;
-import org.eclipse.cdt.core.dom.ast.IASTDeclarationStatement;
-import org.eclipse.cdt.core.dom.ast.IASTDeclarator;
-import org.eclipse.cdt.core.dom.ast.IASTExpressionStatement;
-import org.eclipse.cdt.core.dom.ast.IASTFunctionDefinition;
-import org.eclipse.cdt.core.dom.ast.IASTIdExpression;
-import org.eclipse.cdt.core.dom.ast.IASTLiteralExpression;
-import org.eclipse.cdt.core.dom.ast.IASTName;
-import org.eclipse.cdt.core.dom.ast.IASTSimpleDeclSpecifier;
-import org.eclipse.cdt.core.dom.ast.IASTSimpleDeclaration;
-import org.eclipse.cdt.core.dom.ast.IASTStatement;
-import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
-import org.eclipse.cdt.core.dom.ast.IASTTypeIdExpression;
-import org.eclipse.cdt.core.dom.ast.IASTUnaryExpression;
-import org.eclipse.cdt.core.dom.ast.IScope;
-import org.eclipse.cdt.core.dom.ast.IVariable;
-import org.eclipse.cdt.core.dom.lrparser.BaseExtensibleLanguage;
-import org.eclipse.cdt.core.dom.upc.UPCLanguage;
-import org.eclipse.cdt.core.dom.upc.ast.IUPCASTDeclSpecifier;
-import org.eclipse.cdt.core.dom.upc.ast.IUPCASTForallStatement;
-import org.eclipse.cdt.core.dom.upc.ast.IUPCASTKeywordExpression;
-import org.eclipse.cdt.core.dom.upc.ast.IUPCASTSimpleDeclSpecifier;
-import org.eclipse.cdt.core.dom.upc.ast.IUPCASTSynchronizationStatement;
-import org.eclipse.cdt.core.dom.upc.ast.IUPCASTTypeIdSizeofExpression;
-import org.eclipse.cdt.core.dom.upc.ast.IUPCASTUnarySizeofExpression;
-import org.eclipse.cdt.core.lrparser.tests.ParseHelper;
-
-import junit.framework.TestCase;
-
-@SuppressWarnings("nls")
-public class UPCLanguageExtensionTests extends TestCase {
-
- public UPCLanguageExtensionTests() {
- }
-
- public UPCLanguageExtensionTests(String name) {
- super(name);
- }
-
- protected BaseExtensibleLanguage getLanguage() {
- return UPCLanguage.getDefault();
- }
-
- // test problem-free parsing of UPC constructs (maily declarations)
- // test the AST is correct
- // test that binding resolution works
-
- private IASTTranslationUnit parseAndCheckBindings(String code) {
- ParseHelper.Options options = new ParseHelper.Options();
- options.setCheckSyntaxProblems(true);
- options.setCheckPreprocessorProblems(true);
- options.setCheckBindings(true);
- return ParseHelper.parse(code, getLanguage(), options);
- }
-
- private IASTTranslationUnit parse(String code) {
- ParseHelper.Options options = new ParseHelper.Options();
- options.setCheckSyntaxProblems(true);
- options.setCheckPreprocessorProblems(true);
- options.setCheckBindings(false);
- return ParseHelper.parse(code, getLanguage(), options);
- }
-
- public void testUPCSharedDeclarations1() throws Exception {
- String code = "shared int a [100+THREADS];\n" + "shared [] int b [THREADS];\n" + "shared [90] int c [10];\n"
- + "shared [*] int d [];\n" + "relaxed int x;" + "strict int y;";
-
- IASTTranslationUnit tu = parseAndCheckBindings(code);
- IScope globalScope = tu.getScope();
- assertNotNull(globalScope);
-
- IASTDeclaration[] declarations = tu.getDeclarations();
- assertNotNull(declarations);
- assertEquals(6, declarations.length);
-
- // shared int a [100+THREADS];
- IASTSimpleDeclaration decl_a = (IASTSimpleDeclaration) declarations[0];
- IUPCASTSimpleDeclSpecifier declspec_a = (IUPCASTSimpleDeclSpecifier) decl_a.getDeclSpecifier();
- assertEquals(IUPCASTDeclSpecifier.rt_unspecified, declspec_a.getReferenceType());
- assertEquals(IUPCASTDeclSpecifier.sh_shared_default_block_size, declspec_a.getSharedQualifier());
- assertEquals(IASTSimpleDeclSpecifier.t_int, declspec_a.getType());
- assertNull(declspec_a.getBlockSizeExpression());
- IASTDeclarator[] declarators = decl_a.getDeclarators();
- assertNotNull(declarators);
- assertEquals(1, declarators.length);
- IASTArrayDeclarator declarator_a = (IASTArrayDeclarator) declarators[0];
- IASTName name_a = declarator_a.getName();
- assertEquals("a", name_a.toString());
- IASTArrayModifier[] array_modifiers = declarator_a.getArrayModifiers();
- assertNotNull(array_modifiers);
- assertEquals(1, array_modifiers.length);
- IASTBinaryExpression expr = (IASTBinaryExpression) array_modifiers[0].getConstantExpression();
- IUPCASTKeywordExpression threads = (IUPCASTKeywordExpression) expr.getOperand2();
- assertEquals(IUPCASTKeywordExpression.kw_threads, threads.getKeywordKind());
-
- // shared [] int b [THREADS];
- IASTSimpleDeclaration decl_b = (IASTSimpleDeclaration) declarations[1];
- IUPCASTSimpleDeclSpecifier declspec_b = (IUPCASTSimpleDeclSpecifier) decl_b.getDeclSpecifier();
- assertEquals(IUPCASTDeclSpecifier.rt_unspecified, declspec_b.getReferenceType());
- assertEquals(IUPCASTDeclSpecifier.sh_shared_indefinite_allocation, declspec_b.getSharedQualifier());
- assertEquals(IASTSimpleDeclSpecifier.t_int, declspec_b.getType());
- assertNull(declspec_b.getBlockSizeExpression());
- declarators = decl_b.getDeclarators();
- assertNotNull(declarators);
- assertEquals(1, declarators.length);
- IASTArrayDeclarator declarator_b = (IASTArrayDeclarator) declarators[0];
- IASTName name_b = declarator_b.getName();
- assertEquals("b", name_b.toString());
- array_modifiers = declarator_b.getArrayModifiers();
- assertNotNull(array_modifiers);
- assertEquals(1, array_modifiers.length);
- threads = (IUPCASTKeywordExpression) array_modifiers[0].getConstantExpression();
- assertEquals(IUPCASTKeywordExpression.kw_threads, threads.getKeywordKind());
-
- // shared [90] int c [10];
- IASTSimpleDeclaration decl_c = (IASTSimpleDeclaration) declarations[2];
- IUPCASTSimpleDeclSpecifier declspec_c = (IUPCASTSimpleDeclSpecifier) decl_c.getDeclSpecifier();
- assertEquals(IUPCASTDeclSpecifier.rt_unspecified, declspec_c.getReferenceType());
- assertEquals(IUPCASTDeclSpecifier.sh_shared_constant_expression, declspec_c.getSharedQualifier());
- assertEquals(IASTSimpleDeclSpecifier.t_int, declspec_c.getType());
- @SuppressWarnings("unused")
- IASTLiteralExpression literalExpr = (IASTLiteralExpression) declspec_c.getBlockSizeExpression();
- declarators = decl_c.getDeclarators();
- assertNotNull(declarators);
- assertEquals(1, declarators.length);
- IASTArrayDeclarator declarator_c = (IASTArrayDeclarator) declarators[0];
- IASTName name_c = declarator_c.getName();
- assertEquals("c", name_c.toString());
- array_modifiers = declarator_c.getArrayModifiers();
- assertNotNull(array_modifiers);
- assertEquals(1, array_modifiers.length);
- assertNotNull(array_modifiers[0].getConstantExpression());
-
- // shared [*] int d [];
- IASTSimpleDeclaration decl_d = (IASTSimpleDeclaration) declarations[3];
- IUPCASTSimpleDeclSpecifier declspec_d = (IUPCASTSimpleDeclSpecifier) decl_d.getDeclSpecifier();
- assertEquals(IUPCASTDeclSpecifier.rt_unspecified, declspec_d.getReferenceType());
- assertEquals(IUPCASTDeclSpecifier.sh_shared_pure_allocation, declspec_d.getSharedQualifier());
- assertEquals(IASTSimpleDeclSpecifier.t_int, declspec_d.getType());
- assertNull(declspec_d.getBlockSizeExpression());
- declarators = decl_d.getDeclarators();
- assertNotNull(declarators);
- assertEquals(1, declarators.length);
- IASTArrayDeclarator declarator_d = (IASTArrayDeclarator) declarators[0];
- IASTName name_d = declarator_d.getName();
- assertEquals("d", name_d.toString());
- array_modifiers = declarator_d.getArrayModifiers();
- assertNotNull(array_modifiers);
- assertEquals(1, array_modifiers.length);
- assertNull(array_modifiers[0].getConstantExpression());
-
- IASTSimpleDeclaration decl_x = (IASTSimpleDeclaration) declarations[4];
- IUPCASTSimpleDeclSpecifier declspec_x = (IUPCASTSimpleDeclSpecifier) decl_x.getDeclSpecifier();
- assertEquals(IUPCASTDeclSpecifier.rt_relaxed, declspec_x.getReferenceType());
-
- IASTSimpleDeclaration decl_y = (IASTSimpleDeclaration) declarations[5];
- IUPCASTSimpleDeclSpecifier declspec_y = (IUPCASTSimpleDeclSpecifier) decl_y.getDeclSpecifier();
- assertEquals(IUPCASTDeclSpecifier.rt_strict, declspec_y.getReferenceType());
-
- IVariable binding_a = (IVariable) name_a.resolveBinding();
- assertNotNull(binding_a);
- assertEquals(globalScope, binding_a.getScope());
-
- IVariable binding_b = (IVariable) name_a.resolveBinding();
- assertNotNull(binding_b);
- assertEquals(globalScope, binding_b.getScope());
-
- IVariable binding_c = (IVariable) name_a.resolveBinding();
- assertNotNull(binding_c);
- assertEquals(globalScope, binding_c.getScope());
-
- IVariable binding_d = (IVariable) name_a.resolveBinding();
- assertNotNull(binding_d);
- assertEquals(globalScope, binding_d.getScope());
-
- }
-
- public void testUPCSharedDeclarations2() throws Exception {
- String code = "int x = 10;" + "shared [x] int a [];\n";
-
- IASTTranslationUnit tu = parseAndCheckBindings(code);
- IScope globalScope = tu.getScope();
- assertNotNull(globalScope);
-
- IASTDeclaration[] declarations = tu.getDeclarations();
- assertNotNull(declarations);
- assertEquals(2, declarations.length);
-
- IASTSimpleDeclaration decl_x = (IASTSimpleDeclaration) declarations[0];
-
- // shared [x] int a [];
- IASTSimpleDeclaration decl_a = (IASTSimpleDeclaration) declarations[1];
- IUPCASTSimpleDeclSpecifier declspec_a = (IUPCASTSimpleDeclSpecifier) decl_a.getDeclSpecifier();
- assertEquals(IUPCASTDeclSpecifier.rt_unspecified, declspec_a.getReferenceType());
- assertEquals(IUPCASTDeclSpecifier.sh_shared_constant_expression, declspec_a.getSharedQualifier());
- assertEquals(IASTSimpleDeclSpecifier.t_int, declspec_a.getType());
- IASTIdExpression expr_x = (IASTIdExpression) declspec_a.getBlockSizeExpression();
-
- IASTName name_x = expr_x.getName();
- IVariable binding_x = (IVariable) name_x.resolveBinding();
- assertNotNull(binding_x);
- assertEquals(decl_x.getDeclarators()[0].getName().resolveBinding(), binding_x);
- }
-
- public void testUPCForall1() throws Exception {
- String code = "int main() {\n" + " int i;\n" + " shared float *a;\n"
- + " upc_forall(i=0; i<N; i++; &a[i]) { \n" + " a[i] = 99; \n" + " } \n" + "}\n";
-
- IASTTranslationUnit tu = parse(code);
-
- IScope globalScope = tu.getScope();
- assertNotNull(globalScope);
-
- IASTDeclaration[] declarations = tu.getDeclarations();
- assertNotNull(declarations);
- assertEquals(1, declarations.length);
-
- IASTFunctionDefinition main = (IASTFunctionDefinition) declarations[0];
- IASTStatement[] body = ((IASTCompoundStatement) main.getBody()).getStatements();
- assertEquals(3, body.length);
-
- IASTSimpleDeclaration decl_i = (IASTSimpleDeclaration) ((IASTDeclarationStatement) body[0]).getDeclaration();
- IVariable binding_i = (IVariable) decl_i.getDeclarators()[0].getName().resolveBinding();
-
- IASTSimpleDeclaration decl_a = (IASTSimpleDeclaration) ((IASTDeclarationStatement) body[1]).getDeclaration();
- IVariable binding_a = (IVariable) decl_a.getDeclarators()[0].getName().resolveBinding();
-
- IUPCASTForallStatement forall = (IUPCASTForallStatement) body[2];
-
- IASTBinaryExpression expr1 = (IASTBinaryExpression) ((IASTExpressionStatement) forall.getInitializerStatement())
- .getExpression();
- IASTName name_i_1 = ((IASTIdExpression) expr1.getOperand1()).getName();
-
- IASTBinaryExpression expr2 = (IASTBinaryExpression) forall.getConditionExpression();
- IASTName name_i_2 = ((IASTIdExpression) expr2.getOperand1()).getName();
-
- IASTUnaryExpression expr3 = (IASTUnaryExpression) forall.getIterationExpression();
- IASTName name_i_3 = ((IASTIdExpression) expr3.getOperand()).getName();
-
- IASTUnaryExpression expr4 = (IASTUnaryExpression) forall.getAffinityExpresiion();
- IASTName name_i_4 = ((IASTIdExpression) ((IASTArraySubscriptExpression) expr4.getOperand())
- .getSubscriptExpression()).getName();
- IASTName name_a_1 = ((IASTIdExpression) ((IASTArraySubscriptExpression) expr4.getOperand())
- .getArrayExpression()).getName();
-
- IASTBinaryExpression expr5 = (IASTBinaryExpression) ((IASTExpressionStatement) ((IASTCompoundStatement) forall
- .getBody()).getStatements()[0]).getExpression();
- IASTName name_i_5 = ((IASTIdExpression) ((IASTArraySubscriptExpression) expr5.getOperand1())
- .getSubscriptExpression()).getName();
- IASTName name_a_2 = ((IASTIdExpression) ((IASTArraySubscriptExpression) expr5.getOperand1())
- .getArrayExpression()).getName();
-
- // test binding resolution
- IVariable binding_i_1 = (IVariable) name_i_1.resolveBinding();
- assertNotNull(binding_i_1);
- assertEquals(binding_i, binding_i_1);
-
- IVariable binding_i_2 = (IVariable) name_i_2.resolveBinding();
- assertNotNull(binding_i_2);
- assertEquals(binding_i, binding_i_2);
-
- IVariable binding_i_3 = (IVariable) name_i_3.resolveBinding();
- assertNotNull(binding_i_3);
- assertEquals(binding_i, binding_i_3);
-
- IVariable binding_i_4 = (IVariable) name_i_4.resolveBinding();
- assertNotNull(binding_i_4);
- assertEquals(binding_i, binding_i_4);
-
- IVariable binding_i_5 = (IVariable) name_i_5.resolveBinding();
- assertNotNull(binding_i_5);
- assertEquals(binding_i, binding_i_5);
-
- IVariable binding_a_1 = (IVariable) name_a_1.resolveBinding();
- assertNotNull(binding_a_1);
- assertEquals(binding_a, binding_a_1);
-
- IVariable binding_a_2 = (IVariable) name_a_2.resolveBinding();
- assertNotNull(binding_a_2);
- assertEquals(binding_a, binding_a_2);
- }
-
- /**
- * Test a declaration inside a upc_forall definition.
- */
- public void testUPCForall2() throws Exception {
- String code = "int main() {\n" + " shared float *a;\n" + " upc_forall(int i=0; i<N; i++; &a[i]) { \n"
- + " a[i] = 99; \n" + " } \n" + "}\n";
-
- IASTTranslationUnit tu = parse(code);
-
- IScope globalScope = tu.getScope();
- assertNotNull(globalScope);
-
- IASTDeclaration[] declarations = tu.getDeclarations();
- assertNotNull(declarations);
- assertEquals(1, declarations.length);
-
- IASTFunctionDefinition main = (IASTFunctionDefinition) declarations[0];
- IASTStatement[] body = ((IASTCompoundStatement) main.getBody()).getStatements();
- assertEquals(2, body.length);
-
- IASTSimpleDeclaration decl_a = (IASTSimpleDeclaration) ((IASTDeclarationStatement) body[0]).getDeclaration();
- IVariable binding_a = (IVariable) decl_a.getDeclarators()[0].getName().resolveBinding();
-
- IUPCASTForallStatement forall = (IUPCASTForallStatement) body[1];
-
- IASTSimpleDeclaration decl_i = (IASTSimpleDeclaration) ((IASTDeclarationStatement) forall
- .getInitializerStatement()).getDeclaration();
- IVariable binding_i = (IVariable) decl_i.getDeclarators()[0].getName().resolveBinding();
-
- IASTBinaryExpression expr2 = (IASTBinaryExpression) forall.getConditionExpression();
- IASTName name_i_2 = ((IASTIdExpression) expr2.getOperand1()).getName();
-
- IASTUnaryExpression expr3 = (IASTUnaryExpression) forall.getIterationExpression();
- IASTName name_i_3 = ((IASTIdExpression) expr3.getOperand()).getName();
-
- IASTUnaryExpression expr4 = (IASTUnaryExpression) forall.getAffinityExpresiion();
- IASTName name_i_4 = ((IASTIdExpression) ((IASTArraySubscriptExpression) expr4.getOperand())
- .getSubscriptExpression()).getName();
- IASTName name_a_1 = ((IASTIdExpression) ((IASTArraySubscriptExpression) expr4.getOperand())
- .getArrayExpression()).getName();
-
- IASTBinaryExpression expr5 = (IASTBinaryExpression) ((IASTExpressionStatement) ((IASTCompoundStatement) forall
- .getBody()).getStatements()[0]).getExpression();
- IASTName name_i_5 = ((IASTIdExpression) ((IASTArraySubscriptExpression) expr5.getOperand1())
- .getSubscriptExpression()).getName();
- IASTName name_a_2 = ((IASTIdExpression) ((IASTArraySubscriptExpression) expr5.getOperand1())
- .getArrayExpression()).getName();
-
- // test binding resolution
- IVariable binding_i_2 = (IVariable) name_i_2.resolveBinding();
- assertNotNull(binding_i_2);
- assertEquals(binding_i, binding_i_2);
-
- IVariable binding_i_3 = (IVariable) name_i_3.resolveBinding();
- assertNotNull(binding_i_3);
- assertEquals(binding_i, binding_i_3);
-
- IVariable binding_i_4 = (IVariable) name_i_4.resolveBinding();
- assertNotNull(binding_i_4);
- assertEquals(binding_i, binding_i_4);
-
- IVariable binding_i_5 = (IVariable) name_i_5.resolveBinding();
- assertNotNull(binding_i_5);
- assertEquals(binding_i, binding_i_5);
-
- IVariable binding_a_1 = (IVariable) name_a_1.resolveBinding();
- assertNotNull(binding_a_1);
- assertEquals(binding_a, binding_a_1);
-
- IVariable binding_a_2 = (IVariable) name_a_2.resolveBinding();
- assertNotNull(binding_a_2);
- assertEquals(binding_a, binding_a_2);
- }
-
- /**
- * Test 'continue' inside upc_forall
- */
- public void testUPCForall3() throws Exception {
- String code = "int main() {\n" + " upc_forall(int i=0; i<N; i++; continue) { \n" + " } \n" + "}\n";
-
- IASTTranslationUnit tu = parse(code);
-
- IASTDeclaration[] declarations = tu.getDeclarations();
- assertNotNull(declarations);
- assertEquals(1, declarations.length);
-
- IASTFunctionDefinition main = (IASTFunctionDefinition) declarations[0];
- IASTStatement[] body = ((IASTCompoundStatement) main.getBody()).getStatements();
- assertEquals(1, body.length);
-
- IUPCASTForallStatement forall = (IUPCASTForallStatement) body[0];
-
- assertTrue(forall.isAffinityContinue());
- assertNull(forall.getAffinityExpresiion());
- }
-
- public void testUPCSynchronizationStatment() throws Exception {
- String code = "int main() {\n" + " upc_notify 1;\n" + " upc_notify;\n" + " upc_wait 1;\n"
- + " upc_wait;\n" + " upc_barrier 1;\n" + " upc_barrier;\n" + " upc_fence;\n" + "}\n";
-
- IASTTranslationUnit tu = parse(code);
-
- IASTDeclaration[] declarations = tu.getDeclarations();
- assertNotNull(declarations);
- assertEquals(1, declarations.length);
-
- IASTFunctionDefinition main = (IASTFunctionDefinition) declarations[0];
- IASTStatement[] body = ((IASTCompoundStatement) main.getBody()).getStatements();
- assertEquals(7, body.length);
-
- IUPCASTSynchronizationStatement stat;
-
- stat = (IUPCASTSynchronizationStatement) body[0];
- assertEquals(stat.getStatementKind(), IUPCASTSynchronizationStatement.st_upc_notify);
- assertNotNull(stat.getBarrierExpression());
-
- stat = (IUPCASTSynchronizationStatement) body[1];
- assertEquals(stat.getStatementKind(), IUPCASTSynchronizationStatement.st_upc_notify);
- assertNull(stat.getBarrierExpression());
-
- stat = (IUPCASTSynchronizationStatement) body[2];
- assertEquals(stat.getStatementKind(), IUPCASTSynchronizationStatement.st_upc_wait);
- assertNotNull(stat.getBarrierExpression());
-
- stat = (IUPCASTSynchronizationStatement) body[3];
- assertEquals(stat.getStatementKind(), IUPCASTSynchronizationStatement.st_upc_wait);
- assertNull(stat.getBarrierExpression());
-
- stat = (IUPCASTSynchronizationStatement) body[4];
- assertEquals(stat.getStatementKind(), IUPCASTSynchronizationStatement.st_upc_barrier);
- assertNotNull(stat.getBarrierExpression());
-
- stat = (IUPCASTSynchronizationStatement) body[5];
- assertEquals(stat.getStatementKind(), IUPCASTSynchronizationStatement.st_upc_barrier);
- assertNull(stat.getBarrierExpression());
-
- stat = (IUPCASTSynchronizationStatement) body[6];
- assertEquals(stat.getStatementKind(), IUPCASTSynchronizationStatement.st_upc_fence);
- assertNull(stat.getBarrierExpression());
- }
-
- public void testUPCSizeofExpressions() throws Exception {
- String code = "int main() {\n" + " sizeof(int); \n" + " sizeof x; \n" + " upc_localsizeof(int); \n"
- + " upc_localsizeof x; \n" + " upc_blocksizeof(int); \n" + " upc_blocksizeof x; \n"
- + " upc_elemsizeof(int); \n" + " upc_elemsizeof x; \n" + "}\n";
-
- IASTTranslationUnit tu = parse(code);
-
- IASTDeclaration[] declarations = tu.getDeclarations();
- assertNotNull(declarations);
- assertEquals(1, declarations.length);
-
- IASTFunctionDefinition main = (IASTFunctionDefinition) declarations[0];
- IASTStatement[] body = ((IASTCompoundStatement) main.getBody()).getStatements();
- assertEquals(8, body.length);
-
- @SuppressWarnings("unused")
- IASTTypeIdExpression cidexpr = (IASTTypeIdExpression) ((IASTExpressionStatement) body[0]).getExpression();
-
- IASTUnaryExpression cexpr = (IASTUnaryExpression) ((IASTExpressionStatement) body[1]).getExpression();
- assertEquals(IASTUnaryExpression.op_sizeof, cexpr.getOperator());
-
- IUPCASTUnarySizeofExpression expr;
- IUPCASTTypeIdSizeofExpression idexpr;
-
- idexpr = (IUPCASTTypeIdSizeofExpression) ((IASTExpressionStatement) body[2]).getExpression();
- assertEquals(IASTTypeIdExpression.op_sizeof, idexpr.getOperator());
- assertEquals(IUPCASTTypeIdSizeofExpression.upc_localsizeof, idexpr.getUPCSizeofOperator());
-
- expr = (IUPCASTUnarySizeofExpression) ((IASTExpressionStatement) body[3]).getExpression();
- assertEquals(IASTUnaryExpression.op_sizeof, expr.getOperator());
- assertEquals(IUPCASTUnarySizeofExpression.upc_localsizeof, expr.getUPCSizeofOperator());
-
- idexpr = (IUPCASTTypeIdSizeofExpression) ((IASTExpressionStatement) body[4]).getExpression();
- assertEquals(IASTTypeIdExpression.op_sizeof, idexpr.getOperator());
- assertEquals(IUPCASTTypeIdSizeofExpression.upc_blocksizeof, idexpr.getUPCSizeofOperator());
-
- expr = (IUPCASTUnarySizeofExpression) ((IASTExpressionStatement) body[5]).getExpression();
- assertEquals(IASTUnaryExpression.op_sizeof, expr.getOperator());
- assertEquals(IUPCASTUnarySizeofExpression.upc_blocksizeof, expr.getUPCSizeofOperator());
-
- idexpr = (IUPCASTTypeIdSizeofExpression) ((IASTExpressionStatement) body[6]).getExpression();
- assertEquals(IASTTypeIdExpression.op_sizeof, idexpr.getOperator());
- assertEquals(IUPCASTTypeIdSizeofExpression.upc_elemsizeof, idexpr.getUPCSizeofOperator());
-
- expr = (IUPCASTUnarySizeofExpression) ((IASTExpressionStatement) body[7]).getExpression();
- assertEquals(IASTUnaryExpression.op_sizeof, expr.getOperator());
- assertEquals(IUPCASTUnarySizeofExpression.upc_elemsizeof, expr.getUPCSizeofOperator());
- }
-
- public void testUPCSizeofExpressionsDisambiguate() throws Exception {
- String code = "int foo() {" + " typedef int t;" + " int x;" + " upc_blocksizeof(t);"
- + " upc_blocksizeof(x);" + "}";
-
- IASTTranslationUnit tu = parse(code);
-
- IASTDeclaration[] declarations = tu.getDeclarations();
- IASTFunctionDefinition main = (IASTFunctionDefinition) declarations[0];
- IASTStatement[] body = ((IASTCompoundStatement) main.getBody()).getStatements();
-
- assertTrue(((IASTExpressionStatement) body[2]).getExpression() instanceof IUPCASTTypeIdSizeofExpression);
- assertTrue(((IASTExpressionStatement) body[3]).getExpression() instanceof IUPCASTUnarySizeofExpression);
- }
-}
diff --git a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCSelectionParseTest.java b/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCSelectionParseTest.java
deleted file mode 100644
index 401e3114b57..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCSelectionParseTest.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.parser.upc.tests;
-
-import org.eclipse.cdt.core.dom.upc.UPCLanguage;
-import org.eclipse.cdt.core.lrparser.tests.LRSelectionParseTest;
-import org.eclipse.cdt.core.model.ILanguage;
-
-public class UPCSelectionParseTest extends LRSelectionParseTest {
-
- public UPCSelectionParseTest() {
- }
-
- public UPCSelectionParseTest(String name) {
- super(name);
- }
-
- @Override
- protected ILanguage getCLanguage() {
- return UPCLanguage.getDefault();
- }
-}
diff --git a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCTaskParserTest.java b/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCTaskParserTest.java
deleted file mode 100644
index 74e3d44b6ce..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCTaskParserTest.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.parser.upc.tests;
-
-import org.eclipse.cdt.core.dom.upc.UPCLanguage;
-import org.eclipse.cdt.core.lrparser.tests.LRTaskParserTest;
-import org.eclipse.cdt.core.model.ILanguage;
-
-public class UPCTaskParserTest extends LRTaskParserTest {
-
- @Override
- protected ILanguage getCLanguage() {
- return UPCLanguage.getDefault();
- }
-
-}
diff --git a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCTests.java b/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCTests.java
deleted file mode 100644
index 0921699f043..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCTests.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.parser.upc.tests;
-
-import org.eclipse.cdt.core.dom.upc.UPCLanguage;
-import org.eclipse.cdt.core.lrparser.tests.LRTests;
-import org.eclipse.cdt.core.model.ILanguage;
-
-import junit.framework.TestSuite;
-
-/**
- * Run the C99 tests against the UPC parser
- *
- */
-public class UPCTests extends LRTests {
-
- public static TestSuite suite() {
- return suite(UPCTests.class);
- }
-
- public UPCTests(String name) {
- super(name);
- }
-
- //TODO ??? overwrite some failed test cases
- //some test cases which are not applicable to UPC are bypassed here.
- //UPC extends from C99, which doesn't include some GNU extending features such as "typeof".
- @Override
- public void testCompositeTypes() throws Exception {
- }
-
- @Override
- public void testBug93980() throws Exception {
- }
-
- @Override
- public void testBug95866() throws Exception {
- }
-
- @Override
- public void testBug191450_attributesInBetweenPointers() throws Exception {
- }
-
- @Override
- public void testOmittedPositiveExpression_212905() throws Exception {
- }
-
- @Override
- public void testRedefinedGCCKeywords_226112() throws Exception {
- }
-
- @Override
- public void testASMLabels_226121() throws Exception {
- }
-
- @Override
- public void testCompoundStatementExpression_226274() throws Exception {
- }
-
- @Override
- public void testTypeofUnaryExpression_226492() throws Exception {
- }
-
- @Override
- public void testTypeofExpression_226492() throws Exception {
- }
-
- @Override
- public void testTypeofExpressionWithAttribute_226492() throws Exception {
- }
-
- @Override
- public void testAttributeInElaboratedTypeSpecifier_227085() throws Exception {
- }
-
- @Override
- public void testRedefinePtrdiff_230895() throws Exception {
- }
-
- @Override
- public void testDeclspecInEnumSpecifier_241203() throws Exception {
- }
-
- @Override
- public void testBuiltinTypesCompatible_241570() throws Exception {
- }
-
- @Override
- public void testThreadLocalVariables_260387() throws Exception {
- }
-
- @Override
- public void testVaArgWithFunctionPtr_311030() throws Exception {
- }
-
- @Override
- public void testRecursiveFunctionType_321856() throws Exception {
- }
-
- @Override
- public void testPtrDiffRecursion_317004() throws Exception {
- }
-
- @Override
- protected ILanguage getCLanguage() {
- return UPCLanguage.getDefault();
- }
-}
diff --git a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCUtilOldTests.java b/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCUtilOldTests.java
deleted file mode 100644
index 6c0fcb98543..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCUtilOldTests.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.parser.upc.tests;
-
-import org.eclipse.cdt.core.dom.upc.UPCLanguage;
-import org.eclipse.cdt.core.lrparser.tests.LRUtilOldTests;
-import org.eclipse.cdt.core.model.ILanguage;
-
-public class UPCUtilOldTests extends LRUtilOldTests {
-
- @Override
- protected ILanguage getCLanguage() {
- return UPCLanguage.getDefault();
- }
-
-}
diff --git a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCUtilTests.java b/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCUtilTests.java
deleted file mode 100644
index 3a0f84de12a..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCUtilTests.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.parser.upc.tests;
-
-import org.eclipse.cdt.core.dom.upc.UPCLanguage;
-import org.eclipse.cdt.core.lrparser.tests.LRUtilTests;
-import org.eclipse.cdt.core.model.ILanguage;
-
-public class UPCUtilTests extends LRUtilTests {
-
- @Override
- protected ILanguage getCLanguage() {
- return UPCLanguage.getDefault();
- }
-
-}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/.classpath b/upc/org.eclipse.cdt.core.parser.upc/.classpath
deleted file mode 100644
index eca7bdba8f0..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
- <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/upc/org.eclipse.cdt.core.parser.upc/.project b/upc/org.eclipse.cdt.core.parser.upc/.project
deleted file mode 100644
index 0697e2bcbf5..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/.project
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.cdt.core.parser.upc</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.ManifestBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.SchemaBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>net.sourceforge.metrics.builder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.pde.PluginNature</nature>
- <nature>org.eclipse.jdt.core.javanature</nature>
- <nature>net.sourceforge.metrics.nature</nature>
- </natures>
-</projectDescription>
diff --git a/upc/org.eclipse.cdt.core.parser.upc/.settings/org.eclipse.jdt.core.prefs b/upc/org.eclipse.cdt.core.parser.upc/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 2b6ecff8a01..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,464 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
-org.eclipse.jdt.core.codeComplete.argumentPrefixes=
-org.eclipse.jdt.core.codeComplete.argumentSuffixes=
-org.eclipse.jdt.core.codeComplete.fieldPrefixes=
-org.eclipse.jdt.core.codeComplete.fieldSuffixes=
-org.eclipse.jdt.core.codeComplete.localPrefixes=
-org.eclipse.jdt.core.codeComplete.localSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
-org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
-org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
-org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
-org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
-org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
-org.eclipse.jdt.core.compiler.problem.APILeak=warning
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
-org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
-org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
-org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
-org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
-org.eclipse.jdt.core.compiler.problem.nullReference=error
-org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
-org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
-org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
-org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
-org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
-org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
-org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
-org.eclipse.jdt.core.formatter.align_with_spaces=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
-org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
-org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
-org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
-org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=0
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
-org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
-org.eclipse.jdt.core.formatter.comment.format_block_comments=false
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
-org.eclipse.jdt.core.formatter.comment.format_line_comments=false
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
-org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
-org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
-org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.join_lines_in_comments=true
-org.eclipse.jdt.core.formatter.join_wrapped_lines=true
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=120
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_on_off_tags=true
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
-org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
-org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/upc/org.eclipse.cdt.core.parser.upc/.settings/org.eclipse.jdt.ui.prefs b/upc/org.eclipse.cdt.core.parser.upc/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index e44576346c4..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,133 +0,0 @@
-cleanup.add_default_serial_version_id=true
-cleanup.add_generated_serial_version_id=false
-cleanup.add_missing_annotations=true
-cleanup.add_missing_deprecated_annotations=true
-cleanup.add_missing_methods=false
-cleanup.add_missing_nls_tags=false
-cleanup.add_missing_override_annotations=true
-cleanup.add_missing_override_annotations_interface_methods=true
-cleanup.add_serial_version_id=false
-cleanup.always_use_blocks=true
-cleanup.always_use_parentheses_in_expressions=false
-cleanup.always_use_this_for_non_static_field_access=false
-cleanup.always_use_this_for_non_static_method_access=false
-cleanup.convert_functional_interfaces=false
-cleanup.convert_to_enhanced_for_loop=false
-cleanup.correct_indentation=false
-cleanup.format_source_code=true
-cleanup.format_source_code_changes_only=false
-cleanup.insert_inferred_type_arguments=false
-cleanup.make_local_variable_final=true
-cleanup.make_parameters_final=false
-cleanup.make_private_fields_final=true
-cleanup.make_type_abstract_if_missing_method=false
-cleanup.make_variable_declarations_final=false
-cleanup.never_use_blocks=false
-cleanup.never_use_parentheses_in_expressions=true
-cleanup.organize_imports=true
-cleanup.qualify_static_field_accesses_with_declaring_class=false
-cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-cleanup.qualify_static_member_accesses_with_declaring_class=false
-cleanup.qualify_static_method_accesses_with_declaring_class=false
-cleanup.remove_private_constructors=true
-cleanup.remove_redundant_modifiers=false
-cleanup.remove_redundant_semicolons=true
-cleanup.remove_redundant_type_arguments=true
-cleanup.remove_trailing_whitespaces=true
-cleanup.remove_trailing_whitespaces_all=true
-cleanup.remove_trailing_whitespaces_ignore_empty=false
-cleanup.remove_unnecessary_casts=true
-cleanup.remove_unnecessary_nls_tags=false
-cleanup.remove_unused_imports=true
-cleanup.remove_unused_local_variables=false
-cleanup.remove_unused_private_fields=true
-cleanup.remove_unused_private_members=false
-cleanup.remove_unused_private_methods=true
-cleanup.remove_unused_private_types=true
-cleanup.sort_members=false
-cleanup.sort_members_all=false
-cleanup.use_anonymous_class_creation=false
-cleanup.use_blocks=false
-cleanup.use_blocks_only_for_return_and_throw=false
-cleanup.use_lambda=true
-cleanup.use_parentheses_in_expressions=false
-cleanup.use_this_for_non_static_field_access=false
-cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-cleanup.use_this_for_non_static_method_access=false
-cleanup.use_this_for_non_static_method_access_only_if_necessary=true
-cleanup_profile=_CDT
-cleanup_settings_version=2
-eclipse.preferences.version=1
-editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=_CDT
-formatter_settings_version=14
-internal.default.compliance=user
-org.eclipse.jdt.ui.exception.name=e
-org.eclipse.jdt.ui.gettersetter.use.is=true
-org.eclipse.jdt.ui.ignorelowercasenames=true
-org.eclipse.jdt.ui.importorder=java;javax;org;com;
-org.eclipse.jdt.ui.keywordthis=false
-org.eclipse.jdt.ui.ondemandthreshold=1000
-org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.staticondemandthreshold=1000
-org.eclipse.jdt.ui.text.custom_code_templates=
-sp_cleanup.add_default_serial_version_id=true
-sp_cleanup.add_generated_serial_version_id=false
-sp_cleanup.add_missing_annotations=true
-sp_cleanup.add_missing_deprecated_annotations=true
-sp_cleanup.add_missing_methods=false
-sp_cleanup.add_missing_nls_tags=false
-sp_cleanup.add_missing_override_annotations=true
-sp_cleanup.add_missing_override_annotations_interface_methods=true
-sp_cleanup.add_serial_version_id=false
-sp_cleanup.always_use_blocks=true
-sp_cleanup.always_use_parentheses_in_expressions=false
-sp_cleanup.always_use_this_for_non_static_field_access=false
-sp_cleanup.always_use_this_for_non_static_method_access=false
-sp_cleanup.convert_functional_interfaces=false
-sp_cleanup.convert_to_enhanced_for_loop=false
-sp_cleanup.correct_indentation=false
-sp_cleanup.format_source_code=true
-sp_cleanup.format_source_code_changes_only=false
-sp_cleanup.insert_inferred_type_arguments=false
-sp_cleanup.make_local_variable_final=true
-sp_cleanup.make_parameters_final=false
-sp_cleanup.make_private_fields_final=true
-sp_cleanup.make_type_abstract_if_missing_method=false
-sp_cleanup.make_variable_declarations_final=false
-sp_cleanup.never_use_blocks=false
-sp_cleanup.never_use_parentheses_in_expressions=true
-sp_cleanup.on_save_use_additional_actions=true
-sp_cleanup.organize_imports=true
-sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
-sp_cleanup.remove_private_constructors=true
-sp_cleanup.remove_redundant_modifiers=false
-sp_cleanup.remove_redundant_semicolons=true
-sp_cleanup.remove_redundant_type_arguments=true
-sp_cleanup.remove_trailing_whitespaces=true
-sp_cleanup.remove_trailing_whitespaces_all=true
-sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
-sp_cleanup.remove_unnecessary_casts=true
-sp_cleanup.remove_unnecessary_nls_tags=false
-sp_cleanup.remove_unused_imports=true
-sp_cleanup.remove_unused_local_variables=false
-sp_cleanup.remove_unused_private_fields=true
-sp_cleanup.remove_unused_private_members=false
-sp_cleanup.remove_unused_private_methods=true
-sp_cleanup.remove_unused_private_types=true
-sp_cleanup.sort_members=false
-sp_cleanup.sort_members_all=false
-sp_cleanup.use_anonymous_class_creation=false
-sp_cleanup.use_blocks=false
-sp_cleanup.use_blocks_only_for_return_and_throw=false
-sp_cleanup.use_lambda=true
-sp_cleanup.use_parentheses_in_expressions=false
-sp_cleanup.use_this_for_non_static_field_access=false
-sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-sp_cleanup.use_this_for_non_static_method_access=false
-sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/upc/org.eclipse.cdt.core.parser.upc/META-INF/MANIFEST.MF b/upc/org.eclipse.cdt.core.parser.upc/META-INF/MANIFEST.MF
deleted file mode 100644
index 76047e79bba..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,18 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %Bundle-Name.1
-Bundle-SymbolicName: org.eclipse.cdt.core.parser.upc;singleton:=true
-Bundle-Version: 5.1.200.qualifier
-Bundle-ClassPath: .
-Require-Bundle: org.eclipse.cdt.core,
- net.sourceforge.lpg.lpgjavaruntime;bundle-version="1.1.0";visibility:=reexport,
- org.eclipse.core.runtime,
- org.eclipse.cdt.core.lrparser;bundle-version="5.0.0"
-Export-Package: org.eclipse.cdt.core.dom.upc,
- org.eclipse.cdt.core.dom.upc.ast,
- org.eclipse.cdt.internal.core.dom.parser.upc;x-internal:=true,
- org.eclipse.cdt.internal.core.dom.parser.upc.ast;x-internal:=true
-Bundle-Localization: plugin
-Bundle-Vendor: %Bundle-Vendor.0
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Automatic-Module-Name: org.eclipse.cdt.core.parser.upc
diff --git a/upc/org.eclipse.cdt.core.parser.upc/about.html b/upc/org.eclipse.cdt.core.parser.upc/about.html
deleted file mode 100644
index 164f781a8fd..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/about.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
-</head>
-<body lang="EN-US">
- <h2>About This Content</h2>
-
- <p>November 30, 2017</p>
- <h3>License</h3>
-
- <p>
- The Eclipse Foundation makes available all content in this plug-in
- (&quot;Content&quot;). Unless otherwise indicated below, the Content
- is provided to you under the terms and conditions of the Eclipse
- Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
- For purposes of the EPL, &quot;Program&quot; will mean the Content.
- </p>
-
- <p>
- If you did not receive this Content directly from the Eclipse
- Foundation, the Content is being redistributed by another party
- (&quot;Redistributor&quot;) and different terms and conditions may
- apply to your use of any object code in the Content. Check the
- Redistributor's license that was provided with the Content. If no such
- license exists, contact the Redistributor. Unless otherwise indicated
- below, the terms and conditions of the EPL still apply to any source
- code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
- </p>
-
-</body>
-</html> \ No newline at end of file
diff --git a/upc/org.eclipse.cdt.core.parser.upc/about.mappings b/upc/org.eclipse.cdt.core.parser.upc/about.mappings
deleted file mode 100644
index 0824105e69d..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/about.mappings
+++ /dev/null
@@ -1,9 +0,0 @@
-# about.mappings
-# contains fill-ins for about.properties
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# This file does not need to be translated.
-
-# The following should contain the build version.
-# e.g. "0=20020612"
-# This value will be added automaticaly via the build scripts
-0=@build@ \ No newline at end of file
diff --git a/upc/org.eclipse.cdt.core.parser.upc/about.properties b/upc/org.eclipse.cdt.core.parser.upc/about.properties
deleted file mode 100644
index 036e98486b1..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/about.properties
+++ /dev/null
@@ -1,28 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 IBM Corporation and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-# about.properties
-# contains externalized strings for about.ini
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# fill-ins are supplied by about.mappings
-# This file should be translated.
-# NOTE TO TRANSLATOR: Please do not translate the featureVersion variable.
-
-
-blurb=CDT Unified Parallel C Parser Support\n\
-\n\
-Version: {featureVersion}\n\
-Build id: {0}\n\
-\n\
-(c) Copyright Eclipse contributors and others, 2007, 2010.\n\
-Visit http://www.eclipse.org/cdt
diff --git a/upc/org.eclipse.cdt.core.parser.upc/build.properties b/upc/org.eclipse.cdt.core.parser.upc/build.properties
deleted file mode 100644
index 25089d690a3..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/build.properties
+++ /dev/null
@@ -1,26 +0,0 @@
-###############################################################################
-# Copyright (c) 2007, 2009 IBM Corporation and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
- .,\
- about.html,\
- plugin.properties,\
- plugin.xml,\
- about.ini,\
- about.mappings,\
- about.properties,\
- templates/,\
- cdt_logo_icon32.png
-src.includes = about.html
diff --git a/upc/org.eclipse.cdt.core.parser.upc/grammar/build.xml b/upc/org.eclipse.cdt.core.parser.upc/grammar/build.xml
deleted file mode 100644
index b97eb6b1517..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/grammar/build.xml
+++ /dev/null
@@ -1,60 +0,0 @@
-<!--
- Copyright (c) 2006, 2010 IBM Corporation and others.
- This program and the accompanying materials
- are made available under the terms of the Eclipse Public License 2.0
- which accompanies this distribution, and is available at
- https://www.eclipse.org/legal/epl-2.0/
-
- SPDX-License-Identifier: EPL-2.0
-
- Contributors:
- IBM Corporation - initial API and implementation
--->
-
-<project name="UPC Parser" default="upc" basedir=".">
- <description>Generates the UPC parser from LPG grammar files</description>
-
- <import file="../../org.eclipse.cdt.core.lrparser/grammar/generate.xml" />
-
- <property name="upc_location" value="../src/org/eclipse/cdt/internal/core/dom/parser/upc" />
-
- <target name="upc">
- <description>Generate the UPC parser</description>
- <!-- Generate main parser -->
- <antcall target="generate_upc">
- <param name="grammar_name" value="UPCParser" />
- </antcall>
- <!-- Generate parser for disambiguating declarations vs expression statements -->
- <antcall target="generate_upc">
- <param name="grammar_name" value="UPCExpressionParser" />
- </antcall>
- <!-- Generate parser for disambiguating cast expressions vs binary expressions-->
- <antcall target="generate_upc">
- <param name="grammar_name" value="UPCNoCastExpressionParser" />
- </antcall>
- <!-- Generate parser for disambiguating sizeof expressions -->
- <antcall target="generate_upc">
- <param name="grammar_name" value="UPCSizeofExpressionParser" />
- </antcall>
- </target>
-
-
- <target name="generate_upc">
- <property name="lpg_include" value="${lpg_include_loc}/c99" />
- <antcall target="generate">
- <param name="grammar_dir" value="upc" />
- <param name="output_dir" value="${upc_location}" />
- <param name="grammar_name" value="${grammar_name}" />
- </antcall>
- </target>
-
- <target name="clean_l_files">
- <delete>
-
- <fileset dir="${upc_location}" includes="**/*.l" />
-
-
- </delete>
- </target>
-
-</project> \ No newline at end of file
diff --git a/upc/org.eclipse.cdt.core.parser.upc/grammar/parserBuild.properties b/upc/org.eclipse.cdt.core.parser.upc/grammar/parserBuild.properties
deleted file mode 100644
index ad47d0cf5df..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/grammar/parserBuild.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-###############################################################################
-# Copyright (c) 2010 IBM Corporation and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-
-
-lpg_exe=D:/lpg/lpgdistribution/lpgexe/lpg.exe
-lpg_template=D:/newWorkspace/cdt_70_ies/org.eclipse.cdt.core.lrparser/grammar/template
-lpg_include_loc=D:/newWorkspace/cdt_70_ies/org.eclipse.cdt.core.lrparser/grammar
diff --git a/upc/org.eclipse.cdt.core.parser.upc/grammar/upc/UPCExpressionParser.g b/upc/org.eclipse.cdt.core.parser.upc/grammar/upc/UPCExpressionParser.g
deleted file mode 100644
index ee708cf409e..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/grammar/upc/UPCExpressionParser.g
+++ /dev/null
@@ -1,25 +0,0 @@
------------------------------------------------------------------------------------
--- Copyright (c) 2006, 2008 IBM Corporation and others.
--- This program and the accompanying materials
--- are made available under the terms of the Eclipse Public License 2.0
--- which accompanies this distribution, and is available at
--- https://www.eclipse.org/legal/epl-2.0/
---
--- SPDX-License-Identifier: EPL-2.0
---
--- Contributors:
--- IBM Corporation - initial API and implementation
------------------------------------------------------------------------------------
-
-%options la=2
-%options package=org.eclipse.cdt.internal.core.dom.parser.upc
-%options template=LRSecondaryParserTemplate.g
-
-
-$Import
- C99ExpressionParser.g
-$End
-
-$Import
- UPCGrammarExtensions.g
-$End
diff --git a/upc/org.eclipse.cdt.core.parser.upc/grammar/upc/UPCGrammarExtensions.g b/upc/org.eclipse.cdt.core.parser.upc/grammar/upc/UPCGrammarExtensions.g
deleted file mode 100644
index 0794fb657d3..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/grammar/upc/UPCGrammarExtensions.g
+++ /dev/null
@@ -1,223 +0,0 @@
------------------------------------------------------------------------------------
--- Copyright (c) 2006, 2009 IBM Corporation and others.
--- This program and the accompanying materials
--- are made available under the terms of the Eclipse Public License 2.0
--- which accompanies this distribution, and is available at
--- https://www.eclipse.org/legal/epl-2.0/
---
--- SPDX-License-Identifier: EPL-2.0
---
--- Contributors:
--- IBM Corporation - initial API and implementation
------------------------------------------------------------------------------------
-
-
-$Define
- $build_action_class /. UPCParserAction ./
- $node_factory_create_expression /. new UPCASTNodeFactory() ./
- $parser_factory_create_expression /. UPCSecondaryParserFactory.getDefault() ./
-$End
-
-
-$Globals
-/.
-import org.eclipse.cdt.core.dom.parser.upc.UPCASTNodeFactory;
-import org.eclipse.cdt.core.dom.parser.upc.UPCSecondaryParserFactory;
-import org.eclipse.cdt.core.dom.parser.upc.UPCParserAction;
-import org.eclipse.cdt.core.dom.upc.ast.IUPCASTKeywordExpression;
-import org.eclipse.cdt.core.dom.upc.ast.IUPCASTSynchronizationStatement;
-import org.eclipse.cdt.core.dom.upc.ast.IUPCASTUnarySizeofExpression;
-import org.eclipse.cdt.core.dom.lrparser.lpgextensions.FixedBacktrackingParser;
-./
-$End
-
-
-$Terminals -- Additional keywords defined by UPC
- MYTHREAD
- THREADS
- UPC_MAX_BLOCKSIZE
- relaxed
- shared
- strict
- upc_barrier
- upc_localsizeof
- upc_blocksizeof
- upc_elemsizeof
- upc_notify
- upc_fence
- upc_wait
- upc_forall
-$End
-
-
-
-$Rules -- UPC grammar extensions to C99
-
------------------------------------------------------------------------------------
--- Expressions
------------------------------------------------------------------------------------
-
-
-literal
- ::= 'MYTHREAD'
- /. $Build consumeKeywordExpression(IUPCASTKeywordExpression.kw_mythread); $EndBuild ./
- | 'THREADS'
- /. $Build consumeKeywordExpression(IUPCASTKeywordExpression.kw_threads); $EndBuild ./
- | 'UPC_MAX_BLOCKSIZE'
- /. $Build consumeKeywordExpression(IUPCASTKeywordExpression.kw_upc_max_block_size); $EndBuild ./
-
-
--- causes ambiguities because of no type information, solution is SGLR
-unary_expression
- ::= 'upc_localsizeof' unary_expression
- /. $Build consumeExpressionUnarySizeofOperator(IUPCASTUnarySizeofExpression.upc_localsizeof); $EndBuild ./
- | 'upc_localsizeof' '(' type_id ')'
- /. $Build consumeExpressionSizeofTypeId(IUPCASTUnarySizeofExpression.upc_localsizeof); $EndBuild ./
- | 'upc_blocksizeof' unary_expression
- /. $Build consumeExpressionUnarySizeofOperator(IUPCASTUnarySizeofExpression.upc_blocksizeof); $EndBuild ./
- | 'upc_blocksizeof' '(' type_id ')'
- /. $Build consumeExpressionSizeofTypeId(IUPCASTUnarySizeofExpression.upc_blocksizeof); $EndBuild ./
- | 'upc_elemsizeof' unary_expression
- /. $Build consumeExpressionUnarySizeofOperator(IUPCASTUnarySizeofExpression.upc_elemsizeof); $EndBuild ./
- | 'upc_elemsizeof' '(' type_id ')'
- /. $Build consumeExpressionSizeofTypeId(IUPCASTUnarySizeofExpression.upc_elemsizeof); $EndBuild ./
-
-
------------------------------------------------------------------------------------
--- Declarations
------------------------------------------------------------------------------------
-
-
-type_qualifier
- ::= shared_type_qualifier
- | reference_type_qualifier
-
--- causes ambiguities in parameter declarations, inherant in grammar
--- for example: int foo(int shared []);
--- does the [] bind to shared or is it shared with infinite block size array?
--- TODO: probably just resolved in the same way as dangling else
-
-shared_type_qualifier
- ::= 'shared' layout_qualifier -- don't consume anything, the presense of the
- -- layout_qualifier will determine that 'shared' token was encountered
- | 'shared' /. $Build consumeToken(); $EndBuild ./
-
-reference_type_qualifier
- ::= 'relaxed' /. $Build consumeToken(); $EndBuild ./
- | 'strict' /. $Build consumeToken(); $EndBuild ./
-
-layout_qualifier
- ::= '[' constant_expression ']'
- /. $Build consumeLayoutQualifier(true, false); $EndBuild ./
- | '[' '*' ']'
- /. $Build consumeLayoutQualifier(false, true); $EndBuild ./
- | '[' ']'
- /. $Build consumeLayoutQualifier(false, false); $EndBuild ./
-
-
-
------------------------------------------------------------------------------------
--- Statements
------------------------------------------------------------------------------------
-
-statement
- ::= synchronization_statement
-
-synchronization_statement
- ::= 'upc_notify' expression ';'
- /. $Build consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_notify, true); $EndBuild ./
- | 'upc_notify' ';'
- /. $Build consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_notify, false); $EndBuild ./
- | 'upc_wait' expression ';'
- /. $Build consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_wait, true); $EndBuild ./
- | 'upc_wait' ';'
- /. $Build consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_wait, false); $EndBuild ./
- | 'upc_barrier' expression ';'
- /. $Build consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_barrier, true); $EndBuild ./
- | 'upc_barrier' ';'
- /. $Build consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_barrier, false); $EndBuild ./
- | 'upc_fence' ';'
- /. $Build consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_fence, false); $EndBuild ./
-
-
-iteration_statement
- ::= 'upc_forall' '(' expression ';' expression ';' expression ';' affinity ')' statement
- /. $Build consumeStatementUPCForallLoop(true, true, true, true); $EndBuild ./
-
- | 'upc_forall' '(' expression ';' expression ';' expression ';' ')' statement
- /. $Build consumeStatementUPCForallLoop(true, true, true, false); $EndBuild ./
-
- | 'upc_forall' '(' expression ';' expression ';' ';' affinity ')' statement
- /. $Build consumeStatementUPCForallLoop(true, true, false, true); $EndBuild ./
-
- | 'upc_forall' '(' expression ';' expression ';' ';' ')' statement
- /. $Build consumeStatementUPCForallLoop(true, true, false, false); $EndBuild ./
-
- | 'upc_forall' '(' expression ';' ';' expression ';' affinity ')' statement
- /. $Build consumeStatementUPCForallLoop(true, false, true, true); $EndBuild ./
-
- | 'upc_forall' '(' expression ';' ';' expression ';' ')' statement
- /. $Build consumeStatementUPCForallLoop(true, false, true, false); $EndBuild ./
-
- | 'upc_forall' '(' expression ';' ';' ';' affinity ')' statement
- /. $Build consumeStatementUPCForallLoop(true, false, false, true); $EndBuild ./
-
- | 'upc_forall' '(' expression ';' ';' ';' ')' statement
- /. $Build consumeStatementUPCForallLoop(true, false, false, false); $EndBuild ./
-
- | 'upc_forall' '(' ';' expression ';' expression ';' affinity ')' statement
- /. $Build consumeStatementUPCForallLoop(false, true, true, true); $EndBuild ./
-
- | 'upc_forall' '(' ';' expression ';' expression ';' ')' statement
- /. $Build consumeStatementUPCForallLoop(false, true, true, false); $EndBuild ./
-
- | 'upc_forall' '(' ';' expression ';' ';' affinity ')' statement
- /. $Build consumeStatementUPCForallLoop(false, true, false, true); $EndBuild ./
-
- | 'upc_forall' '(' ';' expression ';' ';' ')' statement
- /. $Build consumeStatementUPCForallLoop(false, true, false, false); $EndBuild ./
-
- | 'upc_forall' '(' ';' ';' expression ';' affinity ')' statement
- /. $Build consumeStatementUPCForallLoop(false, false, true, true); $EndBuild ./
-
- | 'upc_forall' '(' ';' ';' expression ';' ')' statement
- /. $Build consumeStatementUPCForallLoop(false, false, true, false); $EndBuild ./
-
- | 'upc_forall' '(' ';' ';' ';' affinity ')' statement
- /. $Build consumeStatementUPCForallLoop(false, false, false, true); $EndBuild ./
-
- | 'upc_forall' '(' ';' ';' ';' ')' statement
- /. $Build consumeStatementUPCForallLoop(false, false, false, false); $EndBuild ./
-
- | 'upc_forall' '(' declaration expression ';' expression ';' affinity ')' statement
- /. $Build consumeStatementUPCForallLoop(true, true, true, true); $EndBuild ./
-
- | 'upc_forall' '(' declaration expression ';' expression ';' ')' statement
- /. $Build consumeStatementUPCForallLoop(true, true, true, false); $EndBuild ./
-
- | 'upc_forall' '(' declaration expression ';' ';' affinity ')' statement
- /. $Build consumeStatementUPCForallLoop(true, true, false, true); $EndBuild ./
-
- | 'upc_forall' '(' declaration expression ';' ';' ')' statement
- /. $Build consumeStatementUPCForallLoop(true, true, false, false); $EndBuild ./
-
- | 'upc_forall' '(' declaration ';' expression ';' affinity ')' statement
- /. $Build consumeStatementUPCForallLoop(true, false, true, true); $EndBuild ./
-
- | 'upc_forall' '(' declaration ';' expression ';' ')' statement
- /. $Build consumeStatementUPCForallLoop(true, false, true, false); $EndBuild ./
-
- | 'upc_forall' '(' declaration ';' ';' affinity ')' statement
- /. $Build consumeStatementUPCForallLoop(true, false, false, true); $EndBuild ./
-
- | 'upc_forall' '(' declaration ';' ';' ')' statement
- /. $Build consumeStatementUPCForallLoop(true, false, false, false); $EndBuild ./
-
-affinity
- ::= expression
- | 'continue'
- /. $Build consumeToken(); $EndBuild ./
-
-$End
-
-
diff --git a/upc/org.eclipse.cdt.core.parser.upc/grammar/upc/UPCNoCastExpressionParser.g b/upc/org.eclipse.cdt.core.parser.upc/grammar/upc/UPCNoCastExpressionParser.g
deleted file mode 100644
index d8a51bc3eba..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/grammar/upc/UPCNoCastExpressionParser.g
+++ /dev/null
@@ -1,25 +0,0 @@
------------------------------------------------------------------------------------
--- Copyright (c) 2006, 2008 IBM Corporation and others.
--- This program and the accompanying materials
--- are made available under the terms of the Eclipse Public License 2.0
--- which accompanies this distribution, and is available at
--- https://www.eclipse.org/legal/epl-2.0/
---
--- SPDX-License-Identifier: EPL-2.0
---
--- Contributors:
--- IBM Corporation - initial API and implementation
------------------------------------------------------------------------------------
-
-%options la=2
-%options package=org.eclipse.cdt.internal.core.dom.parser.upc
-%options template=LRSecondaryParserTemplate.g
-
-
-$Import
- C99NoCastExpressionParser.g
-$End
-
-$Import
- UPCGrammarExtensions.g
-$End \ No newline at end of file
diff --git a/upc/org.eclipse.cdt.core.parser.upc/grammar/upc/UPCParser.g b/upc/org.eclipse.cdt.core.parser.upc/grammar/upc/UPCParser.g
deleted file mode 100644
index 926b6ebd0ce..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/grammar/upc/UPCParser.g
+++ /dev/null
@@ -1,26 +0,0 @@
------------------------------------------------------------------------------------
--- Copyright (c) 2006, 2008 IBM Corporation and others.
--- This program and the accompanying materials
--- are made available under the terms of the Eclipse Public License 2.0
--- which accompanies this distribution, and is available at
--- https://www.eclipse.org/legal/epl-2.0/
---
--- SPDX-License-Identifier: EPL-2.0
---
--- Contributors:
--- IBM Corporation - initial API and implementation
------------------------------------------------------------------------------------
-
-%options la=2
-%options package=org.eclipse.cdt.internal.core.dom.parser.upc
-%options template=LRParserTemplate.g
-
-
-$Import
- C99Parser.g
-$End
-
-$Import
- UPCGrammarExtensions.g
-$End
-
diff --git a/upc/org.eclipse.cdt.core.parser.upc/grammar/upc/UPCSizeofExpressionParser.g b/upc/org.eclipse.cdt.core.parser.upc/grammar/upc/UPCSizeofExpressionParser.g
deleted file mode 100644
index 20f8aca9a89..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/grammar/upc/UPCSizeofExpressionParser.g
+++ /dev/null
@@ -1,32 +0,0 @@
------------------------------------------------------------------------------------
--- Copyright (c) 2006, 2009 IBM Corporation and others.
--- This program and the accompanying materials
--- are made available under the terms of the Eclipse Public License 2.0
--- which accompanies this distribution, and is available at
--- https://www.eclipse.org/legal/epl-2.0/
---
--- SPDX-License-Identifier: EPL-2.0
---
--- Contributors:
--- IBM Corporation - initial API and implementation
------------------------------------------------------------------------------------
-
-%options la=2
-%options package=org.eclipse.cdt.internal.core.dom.parser.upc
-%options template=LRSecondaryParserTemplate.g
-
-
-$Import
- C99SizeofExpressionParser.g
-$End
-
-$Import
- UPCGrammarExtensions.g
-$DropRules
-
-unary_expression
- ::= 'upc_localsizeof' '(' type_id ')'
- | 'upc_blocksizeof' '(' type_id ')'
- | 'upc_elemsizeof' '(' type_id ')'
-
-$End \ No newline at end of file
diff --git a/upc/org.eclipse.cdt.core.parser.upc/plugin.properties b/upc/org.eclipse.cdt.core.parser.upc/plugin.properties
deleted file mode 100644
index 245c61d5d18..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/plugin.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-###############################################################################
-# Copyright (c) 2007, 2009 IBM Corporation and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-# properties file for org.eclipse.cdt.core.parser.upc
-Bundle-Name.0 = UPC Parser Plug-in
-Bundle-Vendor.0 = Eclipse CDT
-Bundle-Name.1 = UPC Parser Plug-in
-upcSourceName = UPC Source File \ No newline at end of file
diff --git a/upc/org.eclipse.cdt.core.parser.upc/plugin.xml b/upc/org.eclipse.cdt.core.parser.upc/plugin.xml
deleted file mode 100644
index c1469b3df4b..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/plugin.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.2"?>
-<plugin>
-
-
- <extension point="org.eclipse.core.runtime.contentTypes">
- <content-type id="upcSource" name="%upcSourceName"
- base-type="org.eclipse.cdt.core.cSource"
- file-extensions="upc"
- priority="high"/>
- </extension>
-
- <extension point="org.eclipse.cdt.core.language">
- <language
- class="org.eclipse.cdt.core.dom.upc.UPCLanguage"
- id="upc"
- name="UPC">
- <contentType id="org.eclipse.cdt.core.parser.upc.upcSource"/>
- </language>
- </extension>
-
- <extension point="org.eclipse.ui.editors.templates">
- <include
- file="templates/default-templates.xml"
- translations="$nl$/templates/default-templates.properties">
- </include>
- </extension>
-
-</plugin>
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/parser/upc/DOMToUPCTokenMap.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/parser/upc/DOMToUPCTokenMap.java
deleted file mode 100644
index c84ca241dc9..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/parser/upc/DOMToUPCTokenMap.java
+++ /dev/null
@@ -1,441 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2011 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.dom.parser.upc;
-
-import static org.eclipse.cdt.core.parser.IToken.tAMPER;
-import static org.eclipse.cdt.core.parser.IToken.tAMPERASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tAND;
-import static org.eclipse.cdt.core.parser.IToken.tARROW;
-import static org.eclipse.cdt.core.parser.IToken.tASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tBITCOMPLEMENT;
-import static org.eclipse.cdt.core.parser.IToken.tBITOR;
-import static org.eclipse.cdt.core.parser.IToken.tBITORASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tCHAR;
-import static org.eclipse.cdt.core.parser.IToken.tCOLON;
-import static org.eclipse.cdt.core.parser.IToken.tCOMMA;
-import static org.eclipse.cdt.core.parser.IToken.tCOMPLETION;
-import static org.eclipse.cdt.core.parser.IToken.tDECR;
-import static org.eclipse.cdt.core.parser.IToken.tDIV;
-import static org.eclipse.cdt.core.parser.IToken.tDIVASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tDOT;
-import static org.eclipse.cdt.core.parser.IToken.tELLIPSIS;
-import static org.eclipse.cdt.core.parser.IToken.tEND_OF_INPUT;
-import static org.eclipse.cdt.core.parser.IToken.tEOC;
-import static org.eclipse.cdt.core.parser.IToken.tEQUAL;
-import static org.eclipse.cdt.core.parser.IToken.tFLOATINGPT;
-import static org.eclipse.cdt.core.parser.IToken.tGT;
-import static org.eclipse.cdt.core.parser.IToken.tGTEQUAL;
-import static org.eclipse.cdt.core.parser.IToken.tIDENTIFIER;
-import static org.eclipse.cdt.core.parser.IToken.tINCR;
-import static org.eclipse.cdt.core.parser.IToken.tINTEGER;
-import static org.eclipse.cdt.core.parser.IToken.tLBRACE;
-import static org.eclipse.cdt.core.parser.IToken.tLBRACKET;
-import static org.eclipse.cdt.core.parser.IToken.tLCHAR;
-import static org.eclipse.cdt.core.parser.IToken.tLPAREN;
-import static org.eclipse.cdt.core.parser.IToken.tLSTRING;
-import static org.eclipse.cdt.core.parser.IToken.tLT;
-import static org.eclipse.cdt.core.parser.IToken.tLTEQUAL;
-import static org.eclipse.cdt.core.parser.IToken.tMINUS;
-import static org.eclipse.cdt.core.parser.IToken.tMINUSASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tMOD;
-import static org.eclipse.cdt.core.parser.IToken.tMODASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tNOT;
-import static org.eclipse.cdt.core.parser.IToken.tNOTEQUAL;
-import static org.eclipse.cdt.core.parser.IToken.tOR;
-import static org.eclipse.cdt.core.parser.IToken.tPLUS;
-import static org.eclipse.cdt.core.parser.IToken.tPLUSASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tQUESTION;
-import static org.eclipse.cdt.core.parser.IToken.tRBRACE;
-import static org.eclipse.cdt.core.parser.IToken.tRBRACKET;
-import static org.eclipse.cdt.core.parser.IToken.tRPAREN;
-import static org.eclipse.cdt.core.parser.IToken.tSEMI;
-import static org.eclipse.cdt.core.parser.IToken.tSHIFTL;
-import static org.eclipse.cdt.core.parser.IToken.tSHIFTLASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tSHIFTR;
-import static org.eclipse.cdt.core.parser.IToken.tSHIFTRASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tSTAR;
-import static org.eclipse.cdt.core.parser.IToken.tSTARASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tSTRING;
-import static org.eclipse.cdt.core.parser.IToken.tUNKNOWN_CHAR;
-import static org.eclipse.cdt.core.parser.IToken.tUTF16CHAR;
-import static org.eclipse.cdt.core.parser.IToken.tUTF16STRING;
-import static org.eclipse.cdt.core.parser.IToken.tUTF32CHAR;
-import static org.eclipse.cdt.core.parser.IToken.tUTF32STRING;
-import static org.eclipse.cdt.core.parser.IToken.tXOR;
-import static org.eclipse.cdt.core.parser.IToken.tXORASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.t__Bool;
-import static org.eclipse.cdt.core.parser.IToken.t__Complex;
-import static org.eclipse.cdt.core.parser.IToken.t__Imaginary;
-import static org.eclipse.cdt.core.parser.IToken.t_auto;
-import static org.eclipse.cdt.core.parser.IToken.t_break;
-import static org.eclipse.cdt.core.parser.IToken.t_case;
-import static org.eclipse.cdt.core.parser.IToken.t_char;
-import static org.eclipse.cdt.core.parser.IToken.t_const;
-import static org.eclipse.cdt.core.parser.IToken.t_continue;
-import static org.eclipse.cdt.core.parser.IToken.t_default;
-import static org.eclipse.cdt.core.parser.IToken.t_do;
-import static org.eclipse.cdt.core.parser.IToken.t_double;
-import static org.eclipse.cdt.core.parser.IToken.t_else;
-import static org.eclipse.cdt.core.parser.IToken.t_enum;
-import static org.eclipse.cdt.core.parser.IToken.t_extern;
-import static org.eclipse.cdt.core.parser.IToken.t_float;
-import static org.eclipse.cdt.core.parser.IToken.t_for;
-import static org.eclipse.cdt.core.parser.IToken.t_goto;
-import static org.eclipse.cdt.core.parser.IToken.t_if;
-import static org.eclipse.cdt.core.parser.IToken.t_inline;
-import static org.eclipse.cdt.core.parser.IToken.t_int;
-import static org.eclipse.cdt.core.parser.IToken.t_long;
-import static org.eclipse.cdt.core.parser.IToken.t_register;
-import static org.eclipse.cdt.core.parser.IToken.t_restrict;
-import static org.eclipse.cdt.core.parser.IToken.t_return;
-import static org.eclipse.cdt.core.parser.IToken.t_short;
-import static org.eclipse.cdt.core.parser.IToken.t_signed;
-import static org.eclipse.cdt.core.parser.IToken.t_sizeof;
-import static org.eclipse.cdt.core.parser.IToken.t_static;
-import static org.eclipse.cdt.core.parser.IToken.t_struct;
-import static org.eclipse.cdt.core.parser.IToken.t_switch;
-import static org.eclipse.cdt.core.parser.IToken.t_typedef;
-import static org.eclipse.cdt.core.parser.IToken.t_union;
-import static org.eclipse.cdt.core.parser.IToken.t_unsigned;
-import static org.eclipse.cdt.core.parser.IToken.t_void;
-import static org.eclipse.cdt.core.parser.IToken.t_volatile;
-import static org.eclipse.cdt.core.parser.IToken.t_while;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_And;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_AndAnd;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_AndAssign;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_Arrow;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_Assign;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_Bang;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_Caret;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_CaretAssign;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_Colon;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_Comma;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_Completion;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_Dot;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_DotDotDot;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_EOF_TOKEN;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_EQ;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_EndOfCompletion;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_GE;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_GT;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_Invalid;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_LE;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_LT;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_LeftBrace;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_LeftBracket;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_LeftParen;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_LeftShift;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_LeftShiftAssign;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_Minus;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_MinusAssign;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_MinusMinus;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_NE;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_Or;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_OrAssign;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_OrOr;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_Percent;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_PercentAssign;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_Plus;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_PlusAssign;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_PlusPlus;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_Question;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_RightBrace;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_RightBracket;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_RightParen;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_RightShift;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_RightShiftAssign;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_SemiColon;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_Slash;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_SlashAssign;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_Star;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_StarAssign;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_Tilde;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK__Bool;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK__Complex;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK__Imaginary;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_auto;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_break;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_case;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_char;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_charconst;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_const;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_continue;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_default;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_do;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_double;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_else;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_enum;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_extern;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_float;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_floating;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_for;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_goto;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_identifier;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_if;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_inline;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_int;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_integer;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_long;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_register;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_restrict;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_return;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_short;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_signed;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_sizeof;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_static;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_stringlit;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_struct;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_switch;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_typedef;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_union;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_unsigned;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_void;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_volatile;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_while;
-
-import org.eclipse.cdt.core.dom.lrparser.IDOMTokenMap;
-import org.eclipse.cdt.core.parser.IToken;
-
-/**
- * Maps token kinds from CPreprocessor to the tokens kinds
- * created by LPG.
- *
- * TODO UPC keywords need to be syntax highlighted
- *
- * @author Mike Kucera
- */
-@SuppressWarnings("nls")
-public class DOMToUPCTokenMap implements IDOMTokenMap {
-
- @Override
- public int getEOFTokenKind() {
- return TK_EOF_TOKEN;
- }
-
- @Override
- public int getEOCTokenKind() {
- return TK_EndOfCompletion;
- }
-
- @Override
- public int mapKind(IToken token) {
-
- switch (token.getType()) {
- case tIDENTIFIER:
- Integer keywordKind = UPCKeyword.getTokenKind(token.getCharImage());
- return keywordKind == null ? TK_identifier : keywordKind;
-
- case tINTEGER:
- return TK_integer;
- case tCOLON:
- return TK_Colon;
- case tSEMI:
- return TK_SemiColon;
- case tCOMMA:
- return TK_Comma;
- case tQUESTION:
- return TK_Question;
- case tLPAREN:
- return TK_LeftParen;
- case tRPAREN:
- return TK_RightParen;
- case tLBRACKET:
- return TK_LeftBracket;
- case tRBRACKET:
- return TK_RightBracket;
- case tLBRACE:
- return TK_LeftBrace;
- case tRBRACE:
- return TK_RightBrace;
- case tPLUSASSIGN:
- return TK_PlusAssign;
- case tINCR:
- return TK_PlusPlus;
- case tPLUS:
- return TK_Plus;
- case tMINUSASSIGN:
- return TK_MinusAssign;
- case tDECR:
- return TK_MinusMinus;
- case tARROW:
- return TK_Arrow;
- case tMINUS:
- return TK_Minus;
- case tSTARASSIGN:
- return TK_StarAssign;
- case tSTAR:
- return TK_Star;
- case tMODASSIGN:
- return TK_PercentAssign;
- case tMOD:
- return TK_Percent;
- case tXORASSIGN:
- return TK_CaretAssign;
- case tXOR:
- return TK_Caret;
- case tAMPERASSIGN:
- return TK_AndAssign;
- case tAND:
- return TK_AndAnd;
- case tAMPER:
- return TK_And;
- case tBITORASSIGN:
- return TK_OrAssign;
- case tOR:
- return TK_OrOr;
- case tBITOR:
- return TK_Or;
- case tBITCOMPLEMENT:
- return TK_Tilde;
- case tNOTEQUAL:
- return TK_NE;
- case tNOT:
- return TK_Bang;
- case tEQUAL:
- return TK_EQ;
- case tASSIGN:
- return TK_Assign;
- case tUNKNOWN_CHAR:
- return TK_Invalid;
- case tSHIFTL:
- return TK_LeftShift;
- case tLTEQUAL:
- return TK_LE;
- case tLT:
- return TK_LT;
- case tSHIFTRASSIGN:
- return TK_RightShiftAssign;
- case tSHIFTR:
- return TK_RightShift;
- case tGTEQUAL:
- return TK_GE;
- case tGT:
- return TK_GT;
- case tSHIFTLASSIGN:
- return TK_LeftShiftAssign;
- case tELLIPSIS:
- return TK_DotDotDot;
- case tDOT:
- return TK_Dot;
- case tDIVASSIGN:
- return TK_SlashAssign;
- case tDIV:
- return TK_Slash;
-
- case t_auto:
- return TK_auto;
- case t_break:
- return TK_break;
- case t_case:
- return TK_case;
- case t_char:
- return TK_char;
- case t_const:
- return TK_const;
- case t_continue:
- return TK_continue;
- case t_default:
- return TK_default;
- case t_do:
- return TK_do;
- case t_double:
- return TK_double;
- case t_else:
- return TK_else;
- case t_enum:
- return TK_enum;
- case t_extern:
- return TK_extern;
- case t_float:
- return TK_float;
- case t_for:
- return TK_for;
- case t_goto:
- return TK_goto;
- case t_if:
- return TK_if;
- case t_inline:
- return TK_inline;
- case t_int:
- return TK_int;
- case t_long:
- return TK_long;
- case t_register:
- return TK_register;
- case t_return:
- return TK_return;
- case t_short:
- return TK_short;
- case t_sizeof:
- return TK_sizeof;
- case t_static:
- return TK_static;
- case t_signed:
- return TK_signed;
- case t_struct:
- return TK_struct;
- case t_switch:
- return TK_switch;
- case t_typedef:
- return TK_typedef;
- case t_union:
- return TK_union;
- case t_unsigned:
- return TK_unsigned;
- case t_void:
- return TK_void;
- case t_volatile:
- return TK_volatile;
- case t_while:
- return TK_while;
- case tFLOATINGPT:
- return TK_floating;
- case tSTRING:
- return TK_stringlit;
- case tLSTRING:
- return TK_stringlit;
- case tUTF16STRING:
- return TK_stringlit;
- case tUTF32STRING:
- return TK_stringlit;
- case tCHAR:
- return TK_charconst;
- case tLCHAR:
- return TK_charconst;
- case tUTF16CHAR:
- return TK_charconst;
- case tUTF32CHAR:
- return TK_charconst;
- case t__Bool:
- return TK__Bool;
- case t__Complex:
- return TK__Complex;
- case t__Imaginary:
- return TK__Imaginary;
- case t_restrict:
- return TK_restrict;
- case tCOMPLETION:
- return TK_Completion;
- case tEOC:
- return TK_EndOfCompletion;
- case tEND_OF_INPUT:
- return TK_EOF_TOKEN;
-
- default:
- assert false : "token not recognized by the UPC parser: " + token.getType();
- return TK_Invalid;
- }
- }
-
-}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/parser/upc/IUPCNodeFactory.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/parser/upc/IUPCNodeFactory.java
deleted file mode 100644
index f96bcff5f1d..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/parser/upc/IUPCNodeFactory.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2011 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.dom.parser.upc;
-
-import org.eclipse.cdt.core.dom.ast.IASTExpression;
-import org.eclipse.cdt.core.dom.ast.IASTName;
-import org.eclipse.cdt.core.dom.ast.IASTStatement;
-import org.eclipse.cdt.core.dom.ast.c.ICNodeFactory;
-import org.eclipse.cdt.core.dom.upc.ast.IUPCASTCompositeTypeSpecifier;
-import org.eclipse.cdt.core.dom.upc.ast.IUPCASTElaboratedTypeSpecifier;
-import org.eclipse.cdt.core.dom.upc.ast.IUPCASTEnumerationSpecifier;
-import org.eclipse.cdt.core.dom.upc.ast.IUPCASTForallStatement;
-import org.eclipse.cdt.core.dom.upc.ast.IUPCASTKeywordExpression;
-import org.eclipse.cdt.core.dom.upc.ast.IUPCASTSimpleDeclSpecifier;
-import org.eclipse.cdt.core.dom.upc.ast.IUPCASTSynchronizationStatement;
-import org.eclipse.cdt.core.dom.upc.ast.IUPCASTTypedefNameSpecifier;
-
-public interface IUPCNodeFactory extends ICNodeFactory {
-
- public void setUseUPCSizeofExpressions(int op);
-
- public void setUseC99SizeofExpressions();
-
- public IUPCASTKeywordExpression newKeywordExpression(int keywordKind);
-
- public IUPCASTSynchronizationStatement newSyncronizationStatment(IASTExpression barrierExpression,
- int statmentKind);
-
- public IUPCASTForallStatement newForallStatement(IASTStatement init, IASTExpression condition,
- IASTExpression iterationExpression, IASTStatement body, IASTExpression affinity);
-
- @Override
- public IUPCASTSimpleDeclSpecifier newSimpleDeclSpecifier();
-
- @Override
- public IUPCASTCompositeTypeSpecifier newCompositeTypeSpecifier(int key, IASTName name);
-
- @Override
- public IUPCASTElaboratedTypeSpecifier newElaboratedTypeSpecifier(int kind, IASTName name);
-
- @Override
- public IUPCASTEnumerationSpecifier newEnumerationSpecifier(IASTName name);
-
- @Override
- public IUPCASTTypedefNameSpecifier newTypedefNameSpecifier(IASTName name);
-
-} \ No newline at end of file
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/parser/upc/UPCASTNodeFactory.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/parser/upc/UPCASTNodeFactory.java
deleted file mode 100644
index 3484859427a..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/parser/upc/UPCASTNodeFactory.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2011 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.dom.parser.upc;
-
-import org.eclipse.cdt.core.dom.ast.IASTExpression;
-import org.eclipse.cdt.core.dom.ast.IASTName;
-import org.eclipse.cdt.core.dom.ast.IASTStatement;
-import org.eclipse.cdt.core.dom.ast.IASTTypeId;
-import org.eclipse.cdt.core.dom.ast.IASTTypeIdExpression;
-import org.eclipse.cdt.core.dom.ast.IASTUnaryExpression;
-import org.eclipse.cdt.core.dom.upc.ast.IUPCASTCompositeTypeSpecifier;
-import org.eclipse.cdt.core.dom.upc.ast.IUPCASTElaboratedTypeSpecifier;
-import org.eclipse.cdt.core.dom.upc.ast.IUPCASTEnumerationSpecifier;
-import org.eclipse.cdt.core.dom.upc.ast.IUPCASTForallStatement;
-import org.eclipse.cdt.core.dom.upc.ast.IUPCASTKeywordExpression;
-import org.eclipse.cdt.core.dom.upc.ast.IUPCASTSimpleDeclSpecifier;
-import org.eclipse.cdt.core.dom.upc.ast.IUPCASTSynchronizationStatement;
-import org.eclipse.cdt.core.dom.upc.ast.IUPCASTTypedefNameSpecifier;
-import org.eclipse.cdt.internal.core.dom.parser.c.CNodeFactory;
-import org.eclipse.cdt.internal.core.dom.parser.upc.ast.UPCASTCompositeTypeSpecifier;
-import org.eclipse.cdt.internal.core.dom.parser.upc.ast.UPCASTElaboratedTypeSpecifier;
-import org.eclipse.cdt.internal.core.dom.parser.upc.ast.UPCASTEnumerationSpecifier;
-import org.eclipse.cdt.internal.core.dom.parser.upc.ast.UPCASTForallStatement;
-import org.eclipse.cdt.internal.core.dom.parser.upc.ast.UPCASTKeywordExpression;
-import org.eclipse.cdt.internal.core.dom.parser.upc.ast.UPCASTSimpleDeclSpecifier;
-import org.eclipse.cdt.internal.core.dom.parser.upc.ast.UPCASTSynchronizationStatement;
-import org.eclipse.cdt.internal.core.dom.parser.upc.ast.UPCASTTypeIdSizeofExpression;
-import org.eclipse.cdt.internal.core.dom.parser.upc.ast.UPCASTTypedefNameSpecifier;
-import org.eclipse.cdt.internal.core.dom.parser.upc.ast.UPCASTUnarySizeofExpression;
-
-/**
- * Creates AST nodes that are specific to the UPC parser.
- *
- * The methods in ASTNodeFactory that build nodes for declaration
- * specifiers are overridden here to replace those nodes with the UPC nodes for
- * declaration specifiers. These UPC specific nodes add support
- * for 'strict', 'relaxed' and 'shared'.
- */
-@SuppressWarnings("restriction")
-public class UPCASTNodeFactory extends CNodeFactory implements IUPCNodeFactory {
-
- private boolean useUPCSizeofExpressions = false;
- private int currentUPCSizofExpressionOperator = 0;
-
- @Override
- public void setUseUPCSizeofExpressions(int op) {
- useUPCSizeofExpressions = true;
- currentUPCSizofExpressionOperator = op;
- }
-
- @Override
- public void setUseC99SizeofExpressions() {
- useUPCSizeofExpressions = false;
- }
-
- @Override
- public IASTTypeIdExpression newTypeIdExpression(int operator, IASTTypeId typeId) {
- if (useUPCSizeofExpressions) {
- assert operator == IASTTypeIdExpression.op_sizeof;
- return new UPCASTTypeIdSizeofExpression(currentUPCSizofExpressionOperator, typeId);
- }
-
- return super.newTypeIdExpression(operator, typeId);
- }
-
- @Override
- public IASTUnaryExpression newUnaryExpression(int operator, IASTExpression operand) {
- if (useUPCSizeofExpressions) {
- assert operator == IASTUnaryExpression.op_sizeof;
- return new UPCASTUnarySizeofExpression(currentUPCSizofExpressionOperator, operand);
- }
-
- return super.newUnaryExpression(operator, operand);
- }
-
- @Override
- public IUPCASTKeywordExpression newKeywordExpression(int keywordKind) {
- return new UPCASTKeywordExpression(keywordKind);
- }
-
- @Override
- public IUPCASTSynchronizationStatement newSyncronizationStatment(IASTExpression barrierExpression,
- int statmentKind) {
- return new UPCASTSynchronizationStatement(barrierExpression, statmentKind);
- }
-
- @Override
- public IUPCASTForallStatement newForallStatement(IASTStatement init, IASTExpression condition,
- IASTExpression iterationExpression, IASTStatement body, IASTExpression affinity) {
- return new UPCASTForallStatement(init, condition, iterationExpression, body, affinity);
- }
-
- @Override
- public IUPCASTSimpleDeclSpecifier newSimpleDeclSpecifier() {
- return new UPCASTSimpleDeclSpecifier();
- }
-
- @Override
- public IUPCASTCompositeTypeSpecifier newCompositeTypeSpecifier(int key, IASTName name) {
- return new UPCASTCompositeTypeSpecifier(key, name);
- }
-
- @Override
- public IUPCASTElaboratedTypeSpecifier newElaboratedTypeSpecifier(int kind, IASTName name) {
- return new UPCASTElaboratedTypeSpecifier(kind, name);
- }
-
- @Override
- public IUPCASTEnumerationSpecifier newEnumerationSpecifier(IASTName name) {
- return new UPCASTEnumerationSpecifier(name);
- }
-
- @Override
- public IUPCASTTypedefNameSpecifier newTypedefNameSpecifier(IASTName name) {
- return new UPCASTTypedefNameSpecifier(name);
- }
-
-}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/parser/upc/UPCKeyword.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/parser/upc/UPCKeyword.java
deleted file mode 100644
index 0b03b24a9df..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/parser/upc/UPCKeyword.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.dom.parser.upc;
-
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_MYTHREAD;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_THREADS;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_UPC_MAX_BLOCKSIZE;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_relaxed;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_shared;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_strict;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_upc_barrier;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_upc_blocksizeof;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_upc_elemsizeof;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_upc_fence;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_upc_forall;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_upc_localsizeof;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_upc_notify;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_upc_wait;
-
-import org.eclipse.cdt.core.dom.lrparser.c99.C99Language;
-import org.eclipse.cdt.core.model.ICLanguageKeywords;
-import org.eclipse.cdt.core.parser.util.CharArrayMap;
-
-/**
- * Enumeration of keywords that UPC adds to C99.
- *
- * @author Mike Kucera
- */
-public enum UPCKeyword {
-
- MYTHREAD(TK_MYTHREAD), THREADS(TK_THREADS), UPC_MAX_BLOCKSIZE(TK_UPC_MAX_BLOCKSIZE), relaxed(TK_relaxed),
- shared(TK_shared), strict(TK_strict), upc_barrier(TK_upc_barrier), upc_localsizeof(TK_upc_localsizeof),
- upc_blocksizeof(TK_upc_blocksizeof), upc_elemsizeof(TK_upc_elemsizeof), upc_notify(TK_upc_notify),
- upc_fence(TK_upc_fence), upc_wait(TK_upc_wait), upc_forall(TK_upc_forall);
-
- private final int tokenKind;
-
- private static final CharArrayMap<Integer> tokenMap = new CharArrayMap<>();
- private static final String[] upcKeywords;
- private static final String[] allKeywords;
-
- UPCKeyword(int tokenKind) {
- this.tokenKind = tokenKind;
- }
-
- static {
- UPCKeyword[] keywords = values();
- upcKeywords = new String[keywords.length];
- for (int i = 0; i < keywords.length; i++) {
- UPCKeyword keyword = keywords[i];
- String name = keyword.name();
- upcKeywords[i] = name;
- tokenMap.put(name.toCharArray(), keyword.tokenKind);
- }
-
- // TODO change to GCC language when gcc support is added
- ICLanguageKeywords c99Keywords = (ICLanguageKeywords) C99Language.getDefault()
- .getAdapter(ICLanguageKeywords.class);
- String[] c99ks = c99Keywords.getKeywords();
- allKeywords = new String[upcKeywords.length + c99ks.length];
- System.arraycopy(c99ks, 0, allKeywords, 0, c99ks.length);
- System.arraycopy(upcKeywords, 0, allKeywords, c99ks.length, upcKeywords.length);
- }
-
- public int getTokenKind() {
- return tokenKind;
- }
-
- public static String[] getUPCOnlyKeywords() {
- return upcKeywords;
- }
-
- public static String[] getAllKeywords() {
- return allKeywords;
- }
-
- public static Integer getTokenKind(char[] image) {
- if (image == null)
- return null;
- return tokenMap.get(image);
- }
-}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/parser/upc/UPCLanguageKeywords.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/parser/upc/UPCLanguageKeywords.java
deleted file mode 100644
index 82ec27a2622..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/parser/upc/UPCLanguageKeywords.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.dom.parser.upc;
-
-import org.eclipse.cdt.core.dom.parser.CLanguageKeywords;
-import org.eclipse.cdt.core.dom.parser.IScannerExtensionConfiguration;
-import org.eclipse.cdt.core.parser.ParserLanguage;
-
-public class UPCLanguageKeywords extends CLanguageKeywords {
-
- public UPCLanguageKeywords(IScannerExtensionConfiguration config) {
- super(ParserLanguage.C, config);
- }
-
- private static String[] upcKeywords = UPCKeyword.getAllKeywords();
-
- @Override
- public String[] getKeywords() {
- return upcKeywords;
- }
-}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/parser/upc/UPCParserAction.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/parser/upc/UPCParserAction.java
deleted file mode 100644
index 74b3f8dbfae..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/parser/upc/UPCParserAction.java
+++ /dev/null
@@ -1,216 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.dom.parser.upc;
-
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_Completion;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_relaxed;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_shared;
-import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.TK_strict;
-
-import org.eclipse.cdt.core.dom.ast.IASTDeclaration;
-import org.eclipse.cdt.core.dom.ast.IASTExpression;
-import org.eclipse.cdt.core.dom.ast.IASTStatement;
-import org.eclipse.cdt.core.dom.ast.IASTTypeIdExpression;
-import org.eclipse.cdt.core.dom.ast.IASTUnaryExpression;
-import org.eclipse.cdt.core.dom.ast.c.ICASTDeclSpecifier;
-import org.eclipse.cdt.core.dom.lrparser.action.ISecondaryParserFactory;
-import org.eclipse.cdt.core.dom.lrparser.action.ITokenStream;
-import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack;
-import org.eclipse.cdt.core.dom.lrparser.action.c99.C99BuildASTParserAction;
-import org.eclipse.cdt.core.dom.upc.ast.IUPCASTDeclSpecifier;
-import org.eclipse.cdt.core.dom.upc.ast.IUPCASTForallStatement;
-import org.eclipse.cdt.core.dom.upc.ast.IUPCASTKeywordExpression;
-import org.eclipse.cdt.core.dom.upc.ast.IUPCASTSynchronizationStatement;
-
-import lpg.lpgjavaruntime.IToken;
-
-/**
- * Extension to the C99ParserAction that adds support fot building
- * an AST with UPC specific nodes.
- */
-public class UPCParserAction extends C99BuildASTParserAction {
-
- private IUPCNodeFactory nodeFactory;
-
- /**
- * TODO why is the nodeFactory passed as an argument
- * @param nodeFactory
- * @param parser
- * @param tu
- */
- public UPCParserAction(ITokenStream parser, ScopedStack<Object> astStack, IUPCNodeFactory nodeFactory,
- ISecondaryParserFactory parserFactory) {
- super(parser, astStack, nodeFactory, parserFactory);
- this.nodeFactory = nodeFactory;
- nodeFactory.setUseC99SizeofExpressions();
- }
-
- @Override
- protected boolean isCompletionToken(IToken token) {
- return token.getKind() == TK_Completion;
- }
-
- /**************************************************************************************
- * Semantic actions
- **************************************************************************************/
-
- public void consumeExpressionUnarySizeofOperator(int upcOp) {
- nodeFactory.setUseUPCSizeofExpressions(upcOp);
- super.consumeExpressionUnaryOperator(IASTUnaryExpression.op_sizeof);
- nodeFactory.setUseC99SizeofExpressions();
- }
-
- public void consumeExpressionSizeofTypeId(int upcOp) {
- nodeFactory.setUseUPCSizeofExpressions(upcOp);
- super.consumeExpressionTypeId(IASTTypeIdExpression.op_sizeof);
- nodeFactory.setUseC99SizeofExpressions();
- }
-
- /**
- * constant ::= 'MYTHREAD' | 'THREADS' | 'UPC_MAX_BLOCKSIZE'
- */
- public void consumeKeywordExpression(int keywordKind) {
- IUPCASTKeywordExpression expr = nodeFactory.newKeywordExpression(keywordKind);
- setOffsetAndLength(expr);
- astStack.push(expr);
- }
-
- /**
- * synchronization_statement ::= 'upc_notify' expression ';'
- * | 'upc_notify' ';'
- * | 'upc_wait' expression ';'
- * | 'upc_wait' ';'
- * | 'upc_barrier' expression ';'
- * | 'upc_barrier' ';'
- * | 'upc_fence' ';'
- */
- public void consumeStatementSynchronizationStatement(int statementKind, boolean hasBarrierExpr) {
- IASTExpression barrierExpression = hasBarrierExpr ? (IASTExpression) astStack.pop() : null;
- IUPCASTSynchronizationStatement statement = nodeFactory.newSyncronizationStatment(barrierExpression,
- statementKind);
- setOffsetAndLength(statement);
- astStack.push(statement);
- }
-
- /**
- * iteration_statement
- * ::= 'upc_forall' '(' expression ';' expression ';' expression ';' affinity ')' statement
- * | 'upc_forall' '(' declaration expression ';' expression ';' affinity ')' statement
- */
- public void consumeStatementUPCForallLoop(boolean hasExpr1, boolean hasExpr2, boolean hasExpr3,
- boolean hasAffinity) {
- IASTStatement body = (IASTStatement) astStack.pop();
-
- boolean affinityContinue = false;
- IASTExpression affinity = null;
- if (hasAffinity) {
- Object o = astStack.pop();
- if (o instanceof IASTExpression)
- affinity = (IASTExpression) o;
- else if (o instanceof IToken)
- affinityContinue = true;
- }
-
- IASTExpression expr3 = hasExpr3 ? (IASTExpression) astStack.pop() : null;
- IASTExpression expr2 = hasExpr2 ? (IASTExpression) astStack.pop() : null;
-
- IASTStatement initializer = nodeFactory.newNullStatement();
- if (hasExpr1) { // may be an expression or a declaration
- Object node = astStack.pop();
- if (node instanceof IASTExpression)
- initializer = nodeFactory.newExpressionStatement((IASTExpression) node);
- else if (node instanceof IASTDeclaration)
- initializer = nodeFactory.newDeclarationStatement((IASTDeclaration) node);
- }
-
- IUPCASTForallStatement forStat = nodeFactory.newForallStatement(initializer, expr2, expr3, body, affinity);
- forStat.setAffinityContinue(affinityContinue);
- setOffsetAndLength(forStat);
- astStack.push(forStat);
- }
-
- /**
- * Temporary object used during the parsing of UPC declaration specifiers.
- * Stored temporarily on the astStack, but does not become part of the AST.
- * Makes parsing of layout qualifiers easier.
- *
- * @author Mike
- */
- private static class UPCParserActionLayoutQualifier {
- public boolean hasStar = false;
- public IASTExpression expression = null;
- }
-
- /**
- * layout_qualifier ::= '[' constant_expression ']'
- * | '[' '*' ']'
- * | '[' ']'
- */
- public void consumeLayoutQualifier(boolean hasExpression, boolean hasStar) {
- UPCParserActionLayoutQualifier layoutQualifier = new UPCParserActionLayoutQualifier();
- layoutQualifier.hasStar = hasStar;
- if (hasExpression) {
- layoutQualifier.expression = (IASTExpression) astStack.pop();
- }
- astStack.push(layoutQualifier);
- }
-
- /**
- * Overrides setSpecifier to add support for temporary layout qualifier nodes.
- */
- @Override
- public void setSpecifier(ICASTDeclSpecifier declSpec, Object specifier) {
- if (specifier instanceof IToken)
- setTokenSpecifier((IUPCASTDeclSpecifier) declSpec, (IToken) specifier);
- else
- setLayoutQualifier((IUPCASTDeclSpecifier) declSpec, (UPCParserActionLayoutQualifier) specifier);
- }
-
- /**
- * Support for new declaration specifier keywords.
- *
- * 'shared' without [] is handled here
- * 'shared' with [] is handled in setLayoutQualifier().
- */
- protected void setTokenSpecifier(IUPCASTDeclSpecifier node, IToken token) {
- switch (token.getKind()) {
- case TK_relaxed:
- node.setReferenceType(IUPCASTDeclSpecifier.rt_relaxed);
- break;
- case TK_strict:
- node.setReferenceType(IUPCASTDeclSpecifier.rt_strict);
- break;
- case TK_shared:
- node.setSharedQualifier(IUPCASTDeclSpecifier.sh_shared_default_block_size);
- break;
- default:
- super.setSpecifier(node, token);
- }
- }
-
- /**
- * Handles layout qualifiers with block size specified.
- */
- protected void setLayoutQualifier(IUPCASTDeclSpecifier node, UPCParserActionLayoutQualifier layoutQualifier) {
- if (layoutQualifier.hasStar) {
- node.setSharedQualifier(IUPCASTDeclSpecifier.sh_shared_pure_allocation);
- } else if (layoutQualifier.expression != null) {
- node.setSharedQualifier(IUPCASTDeclSpecifier.sh_shared_constant_expression);
- node.setBlockSizeExpression(layoutQualifier.expression);
- } else {
- node.setSharedQualifier(IUPCASTDeclSpecifier.sh_shared_indefinite_allocation);
- }
- }
-
-}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/parser/upc/UPCSecondaryParserFactory.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/parser/upc/UPCSecondaryParserFactory.java
deleted file mode 100644
index a0d722dce38..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/parser/upc/UPCSecondaryParserFactory.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2011 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.cdt.core.dom.parser.upc;
-
-import java.util.Map;
-
-import org.eclipse.cdt.core.dom.ast.IASTExpression;
-import org.eclipse.cdt.core.dom.lrparser.ISecondaryParser;
-import org.eclipse.cdt.core.dom.lrparser.action.ISecondaryParserFactory;
-import org.eclipse.cdt.core.dom.lrparser.action.ITokenStream;
-import org.eclipse.cdt.internal.core.dom.parser.upc.UPCExpressionParser;
-import org.eclipse.cdt.internal.core.dom.parser.upc.UPCNoCastExpressionParser;
-import org.eclipse.cdt.internal.core.dom.parser.upc.UPCSizeofExpressionParser;
-
-public class UPCSecondaryParserFactory implements ISecondaryParserFactory {
-
- private static final UPCSecondaryParserFactory DEFAULT_INSTANCE = new UPCSecondaryParserFactory();
-
- public static UPCSecondaryParserFactory getDefault() {
- return DEFAULT_INSTANCE;
- }
-
- @Override
- public ISecondaryParser<IASTExpression> getExpressionParser(ITokenStream stream, Map<String, String> properties) {
- return new UPCExpressionParser(stream, properties);
- }
-
- @Override
- public ISecondaryParser<IASTExpression> getNoCastExpressionParser(ITokenStream stream,
- Map<String, String> properties) {
- return new UPCNoCastExpressionParser(stream, properties);
- }
-
- @Override
- public ISecondaryParser<IASTExpression> getSizeofExpressionParser(ITokenStream stream,
- Map<String, String> properties) {
- return new UPCSizeofExpressionParser(stream, properties);
- }
-
-}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/UPCLanguage.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/UPCLanguage.java
deleted file mode 100644
index ef608a6f632..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/UPCLanguage.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2015 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.dom.upc;
-
-import java.util.Map;
-
-import org.eclipse.cdt.core.dom.ILinkage;
-import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
-import org.eclipse.cdt.core.dom.lrparser.BaseExtensibleLanguage;
-import org.eclipse.cdt.core.dom.lrparser.IParser;
-import org.eclipse.cdt.core.dom.lrparser.ScannerExtensionConfiguration;
-import org.eclipse.cdt.core.dom.parser.IBuiltinBindingsProvider;
-import org.eclipse.cdt.core.dom.parser.IScannerExtensionConfiguration;
-import org.eclipse.cdt.core.dom.parser.c.ANSICParserExtensionConfiguration;
-import org.eclipse.cdt.core.dom.parser.upc.DOMToUPCTokenMap;
-import org.eclipse.cdt.core.dom.parser.upc.UPCLanguageKeywords;
-import org.eclipse.cdt.core.index.IIndex;
-import org.eclipse.cdt.core.model.ICLanguageKeywords;
-import org.eclipse.cdt.core.parser.IScanner;
-import org.eclipse.cdt.core.parser.ParserLanguage;
-import org.eclipse.cdt.internal.core.dom.parser.upc.UPCParser;
-
-/**
- * Implementation of the ILanguage extension point, adds UPC as a language to CDT.
- *
- * @author Mike Kucera
- */
-public class UPCLanguage extends BaseExtensibleLanguage {
-
- public static final String ID = "org.eclipse.cdt.core.parser.upc.upc"; //$NON-NLS-1$
-
- public static final String UPC_CONTENT_TYPE_ID = "org.eclipse.cdt.core.parser.upc.upcSource"; //$NON-NLS-1$
-
- private static final UPCLanguage myDefault = new UPCLanguage();
-
- public static UPCLanguage getDefault() {
- return myDefault;
- }
-
- @Override
- protected IParser<IASTTranslationUnit> getParser(IScanner scanner, IIndex index, Map<String, String> properties) {
- return new UPCParser(scanner, new DOMToUPCTokenMap(), getBuiltinBindingsProvider(), index, properties);
- }
-
- @Override
- public String getId() {
- return ID;
- }
-
- @Override
- public int getLinkageID() {
- return ILinkage.C_LINKAGE_ID;
- }
-
- private static final ICLanguageKeywords upcKeywords = new UPCLanguageKeywords(
- ScannerExtensionConfiguration.createC());
-
- @Override
- public <T> T getAdapter(Class<T> adapter) {
- if (ICLanguageKeywords.class.equals(adapter))
- return adapter.cast(upcKeywords);
-
- return super.getAdapter(adapter);
- }
-
- @Override
- protected ParserLanguage getParserLanguage() {
- return ParserLanguage.C;
- }
-
- @Override
- protected IScannerExtensionConfiguration getScannerExtensionConfiguration() {
- return ScannerExtensionConfiguration.createC();
- }
-
- protected IBuiltinBindingsProvider getBuiltinBindingsProvider() {
- return new ANSICParserExtensionConfiguration().getBuiltinBindingsProvider();
- }
-}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTCompositeTypeSpecifier.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTCompositeTypeSpecifier.java
deleted file mode 100644
index 0e7bce3d57e..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTCompositeTypeSpecifier.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2011 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.dom.upc.ast;
-
-import org.eclipse.cdt.core.dom.ast.c.ICASTCompositeTypeSpecifier;
-
-public interface IUPCASTCompositeTypeSpecifier extends IUPCASTDeclSpecifier, ICASTCompositeTypeSpecifier {
-
- @Override
- public IUPCASTCompositeTypeSpecifier copy();
-}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTDeclSpecifier.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTDeclSpecifier.java
deleted file mode 100644
index 4a54bc07f85..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTDeclSpecifier.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2011 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.dom.upc.ast;
-
-import org.eclipse.cdt.core.dom.ast.ASTNodeProperty;
-import org.eclipse.cdt.core.dom.ast.IASTExpression;
-import org.eclipse.cdt.core.dom.ast.c.ICASTDeclSpecifier;
-
-public interface IUPCASTDeclSpecifier extends ICASTDeclSpecifier {
-
- public static final ASTNodeProperty BLOCK_SIZE_EXPRESSION = new ASTNodeProperty(
- "IUPCASTDeclSpecifier.BLOCK_SIZE_EXPRESSION - IUPCASTDeclSpecifier block size expression"); //$NON-NLS-1$
-
- public static final int rt_unspecified = 0;
-
- public static final int rt_strict = 1;
-
- public static final int rt_relaxed = 2;
-
- public static final int sh_not_shared = 0;
-
- public static final int sh_shared_default_block_size = 1;
-
- public static final int sh_shared_pure_allocation = 2;
-
- public static final int sh_shared_indefinite_allocation = 3;
-
- public static final int sh_shared_constant_expression = 4;
-
- public int getReferenceType();
-
- public void setReferenceType(int referenceType);
-
- public int getSharedQualifier();
-
- public void setSharedQualifier(int shared);
-
- public IASTExpression getBlockSizeExpression();
-
- public void setBlockSizeExpression(IASTExpression expr);
-
- @Override
- public IUPCASTDeclSpecifier copy();
-}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTElaboratedTypeSpecifier.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTElaboratedTypeSpecifier.java
deleted file mode 100644
index 3db445c48ed..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTElaboratedTypeSpecifier.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2011 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.dom.upc.ast;
-
-import org.eclipse.cdt.core.dom.ast.c.ICASTElaboratedTypeSpecifier;
-
-public interface IUPCASTElaboratedTypeSpecifier extends IUPCASTDeclSpecifier, ICASTElaboratedTypeSpecifier {
-
- @Override
- public IUPCASTElaboratedTypeSpecifier copy();
-}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTEnumerationSpecifier.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTEnumerationSpecifier.java
deleted file mode 100644
index 7e4c580f946..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTEnumerationSpecifier.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2011 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.dom.upc.ast;
-
-import org.eclipse.cdt.core.dom.ast.c.ICASTEnumerationSpecifier;
-
-public interface IUPCASTEnumerationSpecifier extends IUPCASTDeclSpecifier, ICASTEnumerationSpecifier {
-
- @Override
- public IUPCASTEnumerationSpecifier copy();
-}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTForallStatement.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTForallStatement.java
deleted file mode 100644
index eb94ba43aa3..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTForallStatement.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2011 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.dom.upc.ast;
-
-import org.eclipse.cdt.core.dom.ast.ASTNodeProperty;
-import org.eclipse.cdt.core.dom.ast.IASTExpression;
-import org.eclipse.cdt.core.dom.ast.IASTForStatement;
-import org.eclipse.cdt.core.dom.ast.IASTStatement;
-
-public interface IUPCASTForallStatement extends IASTForStatement {
-
- public static final ASTNodeProperty AFFINITY = new ASTNodeProperty(
- "IUPCASTForallStatement.AFFINITY - IASTExpression affinity for IUPCASTForallStatement"); //$NON-NLS-1$
-
- @Override
- public IASTStatement getInitializerStatement();
-
- @Override
- public void setInitializerStatement(IASTStatement statement);
-
- @Override
- public IASTExpression getConditionExpression();
-
- @Override
- public void setConditionExpression(IASTExpression condition);
-
- @Override
- public IASTExpression getIterationExpression();
-
- @Override
- public void setIterationExpression(IASTExpression iterator);
-
- public IASTExpression getAffinityExpresiion();
-
- public void setAffinityExpression(IASTExpression affinity);
-
- public boolean isAffinityContinue();
-
- public void setAffinityContinue(boolean affinityContinue);
-
- @Override
- public IASTStatement getBody();
-
- @Override
- public void setBody(IASTStatement statement);
-
- @Override
- public IUPCASTForallStatement copy();
-}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTKeywordExpression.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTKeywordExpression.java
deleted file mode 100644
index 31fe55b5624..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTKeywordExpression.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2011 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.dom.upc.ast;
-
-import org.eclipse.cdt.core.dom.ast.IASTExpression;
-
-public interface IUPCASTKeywordExpression extends IASTExpression {
-
- public static final int kw_threads = 1;
-
- public static final int kw_mythread = 2;
-
- public static final int kw_upc_max_block_size = 3;
-
- public int getKeywordKind();
-
- public void setKeywordKind(int kind);
-
- @Override
- public IUPCASTKeywordExpression copy();
-}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTLayoutQualifier.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTLayoutQualifier.java
deleted file mode 100644
index 80d0f127e38..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTLayoutQualifier.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.dom.upc.ast;
-
-import org.eclipse.cdt.core.dom.ast.IASTExpression;
-
-public interface IUPCASTLayoutQualifier {
-
- public boolean isIndefiniteBlockAllocation();
-
- public void setIndefiniteBlockAllocation(boolean allocation);
-
- public boolean isPureBlockAllocation();
-
- public void setPureBlockAllocation(boolean allocation);
-
- public IASTExpression getBlockSizeExpression();
-
- public void setBlockSizeExpression(IASTExpression expr);
-
- public IUPCASTLayoutQualifier copy();
-}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTSimpleDeclSpecifier.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTSimpleDeclSpecifier.java
deleted file mode 100644
index 74c0719029d..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTSimpleDeclSpecifier.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2011 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.dom.upc.ast;
-
-import org.eclipse.cdt.core.dom.ast.c.ICASTSimpleDeclSpecifier;
-
-public interface IUPCASTSimpleDeclSpecifier extends IUPCASTDeclSpecifier, ICASTSimpleDeclSpecifier {
-
- @Override
- public IUPCASTSimpleDeclSpecifier copy();
-}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTSynchronizationStatement.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTSynchronizationStatement.java
deleted file mode 100644
index 7c49de0ea36..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTSynchronizationStatement.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2011 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.dom.upc.ast;
-
-import org.eclipse.cdt.core.dom.ast.ASTNodeProperty;
-import org.eclipse.cdt.core.dom.ast.IASTExpression;
-import org.eclipse.cdt.core.dom.ast.IASTStatement;
-
-public interface IUPCASTSynchronizationStatement extends IASTStatement {
-
- public static final ASTNodeProperty BARRIER_EXPRESSION = new ASTNodeProperty(
- "IUPCASTSynchronizationStatement.BARRIER_EXPRESSION - IASTExpression barrier for IUPCASTSynchronizationStatement"); //$NON-NLS-1$
-
- public final int st_upc_notify = 1;
-
- public final int st_upc_wait = 2;
-
- public final int st_upc_barrier = 3;
-
- public final int st_upc_fence = 4;
-
- public IASTExpression getBarrierExpression();
-
- public void setBarrierExpression(IASTExpression expr);
-
- public int getStatementKind();
-
- public void setStatementKind(int kind);
-
- @Override
- public IUPCASTSynchronizationStatement copy();
-}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTTypeIdSizeofExpression.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTTypeIdSizeofExpression.java
deleted file mode 100644
index 9453f5c564a..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTTypeIdSizeofExpression.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2011 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.dom.upc.ast;
-
-import org.eclipse.cdt.core.dom.ast.IASTTypeIdExpression;
-
-public interface IUPCASTTypeIdSizeofExpression extends IASTTypeIdExpression {
-
- public final int upc_localsizeof = 1;
-
- public final int upc_blocksizeof = 2;
-
- public final int upc_elemsizeof = 3;
-
- public int getUPCSizeofOperator();
-
- public void setUPCSizeofOperator(int upcSizeofOperator);
-
- @Override
- public IUPCASTTypeIdSizeofExpression copy();
-}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTTypedefNameSpecifier.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTTypedefNameSpecifier.java
deleted file mode 100644
index 4a925d9fde1..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTTypedefNameSpecifier.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2011 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.dom.upc.ast;
-
-import org.eclipse.cdt.core.dom.ast.c.ICASTTypedefNameSpecifier;
-
-public interface IUPCASTTypedefNameSpecifier extends IUPCASTDeclSpecifier, ICASTTypedefNameSpecifier {
-
- @Override
- public IUPCASTTypedefNameSpecifier copy();
-
-}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTUnarySizeofExpression.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTUnarySizeofExpression.java
deleted file mode 100644
index 7046087077a..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTUnarySizeofExpression.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2011 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.dom.upc.ast;
-
-import org.eclipse.cdt.core.dom.ast.IASTUnaryExpression;
-
-public interface IUPCASTUnarySizeofExpression extends IASTUnaryExpression {
-
- public final int upc_localsizeof = 1;
-
- public final int upc_blocksizeof = 2;
-
- public final int upc_elemsizeof = 3;
-
- public int getUPCSizeofOperator();
-
- public void setUPCSizeofOperator(int upcSizeofOperator);
-
- @Override
- public IUPCASTUnarySizeofExpression copy();
-} \ No newline at end of file
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCExpressionParser.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCExpressionParser.java
deleted file mode 100644
index e32ac3c7a85..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCExpressionParser.java
+++ /dev/null
@@ -1,2060 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2011 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.dom.parser.upc;
-
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.cdt.core.dom.ast.IASTBinaryExpression;
-import org.eclipse.cdt.core.dom.ast.IASTCastExpression;
-import org.eclipse.cdt.core.dom.ast.IASTCompletionNode;
-import org.eclipse.cdt.core.dom.ast.IASTCompositeTypeSpecifier;
-import org.eclipse.cdt.core.dom.ast.IASTElaboratedTypeSpecifier;
-import org.eclipse.cdt.core.dom.ast.IASTExpression;
-import org.eclipse.cdt.core.dom.ast.IASTLiteralExpression;
-import org.eclipse.cdt.core.dom.ast.IASTTypeIdExpression;
-import org.eclipse.cdt.core.dom.ast.IASTUnaryExpression;
-import org.eclipse.cdt.core.dom.lrparser.CPreprocessorAdapter;
-import org.eclipse.cdt.core.dom.lrparser.IDOMTokenMap;
-import org.eclipse.cdt.core.dom.lrparser.ISecondaryParser;
-import org.eclipse.cdt.core.dom.lrparser.ITokenCollector;
-import org.eclipse.cdt.core.dom.lrparser.action.ITokenMap;
-import org.eclipse.cdt.core.dom.lrparser.action.ITokenStream;
-import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack;
-import org.eclipse.cdt.core.dom.lrparser.action.TokenMap;
-import org.eclipse.cdt.core.dom.lrparser.lpgextensions.FixedBacktrackingParser;
-import org.eclipse.cdt.core.dom.parser.IBuiltinBindingsProvider;
-import org.eclipse.cdt.core.dom.parser.upc.UPCASTNodeFactory;
-import org.eclipse.cdt.core.dom.parser.upc.UPCParserAction;
-import org.eclipse.cdt.core.dom.parser.upc.UPCSecondaryParserFactory;
-import org.eclipse.cdt.core.dom.upc.ast.IUPCASTKeywordExpression;
-import org.eclipse.cdt.core.dom.upc.ast.IUPCASTSynchronizationStatement;
-import org.eclipse.cdt.core.dom.upc.ast.IUPCASTUnarySizeofExpression;
-import org.eclipse.cdt.core.index.IIndex;
-import org.eclipse.cdt.core.parser.IScanner;
-
-import lpg.lpgjavaruntime.BadParseException;
-import lpg.lpgjavaruntime.BadParseSymFileException;
-import lpg.lpgjavaruntime.DiagnoseParser;
-import lpg.lpgjavaruntime.ErrorToken;
-import lpg.lpgjavaruntime.IToken;
-import lpg.lpgjavaruntime.LexStream;
-import lpg.lpgjavaruntime.Monitor;
-import lpg.lpgjavaruntime.NotBacktrackParseTableException;
-import lpg.lpgjavaruntime.NullExportedSymbolsException;
-import lpg.lpgjavaruntime.NullTerminalSymbolsException;
-import lpg.lpgjavaruntime.ParseErrorCodes;
-import lpg.lpgjavaruntime.ParseTable;
-import lpg.lpgjavaruntime.PrsStream;
-import lpg.lpgjavaruntime.RuleAction;
-import lpg.lpgjavaruntime.Token;
-import lpg.lpgjavaruntime.UndefinedEofSymbolException;
-import lpg.lpgjavaruntime.UnimplementedTerminalsException;
-
-public class UPCExpressionParser extends PrsStream
- implements RuleAction, ITokenStream, ITokenCollector, ISecondaryParser<IASTExpression> {
- private static ParseTable prs = new UPCExpressionParserprs();
- private FixedBacktrackingParser btParser;
-
- public FixedBacktrackingParser getParser() {
- return btParser;
- }
-
- private void setResult(Object object) {
- btParser.setSym1(object);
- }
-
- public Object getRhsSym(int i) {
- return btParser.getSym(i);
- }
-
- public int getRhsTokenIndex(int i) {
- return btParser.getToken(i);
- }
-
- public IToken getRhsIToken(int i) {
- return super.getIToken(getRhsTokenIndex(i));
- }
-
- public int getRhsFirstTokenIndex(int i) {
- return btParser.getFirstToken(i);
- }
-
- public IToken getRhsFirstIToken(int i) {
- return super.getIToken(getRhsFirstTokenIndex(i));
- }
-
- public int getRhsLastTokenIndex(int i) {
- return btParser.getLastToken(i);
- }
-
- public IToken getRhsLastIToken(int i) {
- return super.getIToken(getRhsLastTokenIndex(i));
- }
-
- public int getLeftSpan() {
- return btParser.getFirstToken();
- }
-
- @Override
- public IToken getLeftIToken() {
- return super.getIToken(getLeftSpan());
- }
-
- public int getRightSpan() {
- return btParser.getLastToken();
- }
-
- @Override
- public IToken getRightIToken() {
- return super.getIToken(getRightSpan());
- }
-
- public int getRhsErrorTokenIndex(int i) {
- int index = btParser.getToken(i);
- IToken err = super.getIToken(index);
- return (err instanceof ErrorToken ? index : 0);
- }
-
- public ErrorToken getRhsErrorIToken(int i) {
- int index = btParser.getToken(i);
- IToken err = super.getIToken(index);
- return (ErrorToken) (err instanceof ErrorToken ? err : null);
- }
-
- public UPCExpressionParser(LexStream lexStream) {
- super(lexStream);
-
- try {
- super.remapTerminalSymbols(orderedTerminalSymbols(), UPCExpressionParserprs.EOFT_SYMBOL);
- } catch (NullExportedSymbolsException e) {
- } catch (NullTerminalSymbolsException e) {
- } catch (UnimplementedTerminalsException e) {
- java.util.ArrayList unimplemented_symbols = e.getSymbols();
- System.out.println("The Lexer will not scan the following token(s):");
- for (int i = 0; i < unimplemented_symbols.size(); i++) {
- Integer id = (Integer) unimplemented_symbols.get(i);
- System.out.println(" " + UPCExpressionParsersym.orderedTerminalSymbols[id.intValue()]);
- }
- System.out.println();
- } catch (UndefinedEofSymbolException e) {
- throw new Error(new UndefinedEofSymbolException("The Lexer does not implement the Eof symbol "
- + UPCExpressionParsersym.orderedTerminalSymbols[UPCExpressionParserprs.EOFT_SYMBOL]));
- }
- }
-
- @Override
- public String[] orderedTerminalSymbols() {
- return UPCExpressionParsersym.orderedTerminalSymbols;
- }
-
- public String getTokenKindName(int kind) {
- return UPCExpressionParsersym.orderedTerminalSymbols[kind];
- }
-
- public int getEOFTokenKind() {
- return UPCExpressionParserprs.EOFT_SYMBOL;
- }
-
- public PrsStream getParseStream() {
- return this;
- }
-
- //
- // Report error message for given error_token.
- //
- public final void reportErrorTokenMessage(int error_token, String msg) {
- int firsttok = super.getFirstErrorToken(error_token), lasttok = super.getLastErrorToken(error_token);
- String location = super.getFileName() + ':'
- + (firsttok > lasttok ? (super.getEndLine(lasttok) + ":" + super.getEndColumn(lasttok))
- : (super.getLine(error_token) + ":" + super.getColumn(error_token) + ":"
- + super.getEndLine(error_token) + ":" + super.getEndColumn(error_token)))
- + ": ";
- super.reportError((firsttok > lasttok ? ParseErrorCodes.INSERTION_CODE : ParseErrorCodes.SUBSTITUTION_CODE),
- location, msg);
- }
-
- public void parser() {
- parser(null, 0);
- }
-
- public void parser(Monitor monitor) {
- parser(monitor, 0);
- }
-
- public void parser(int error_repair_count) {
- parser(null, error_repair_count);
- }
-
- public void parser(Monitor monitor, int error_repair_count) {
- try {
- btParser = new FixedBacktrackingParser(monitor, this, prs, this);
- } catch (NotBacktrackParseTableException e) {
- throw new Error(new NotBacktrackParseTableException(
- "Regenerate UPCExpressionParserprs.java with -BACKTRACK option"));
- } catch (BadParseSymFileException e) {
- throw new Error(new BadParseSymFileException("Bad Parser Symbol File -- UPCExpressionParsersym.java"));
- }
-
- try {
- btParser.parse(error_repair_count);
- } catch (BadParseException e) {
- reset(e.error_token); // point to error token
- DiagnoseParser diagnoseParser = new DiagnoseParser(this, prs);
- diagnoseParser.diagnose(e.error_token);
- }
- }
-
- private UPCParserAction action;
- private IASTCompletionNode compNode;
-
- public UPCExpressionParser(IScanner scanner, IDOMTokenMap tokenMap,
- IBuiltinBindingsProvider builtinBindingsProvider, IIndex index, Map<String, String> properties) {
- initActions(properties);
- action.initializeTranslationUnit(scanner, builtinBindingsProvider, index);
- CPreprocessorAdapter.runCPreprocessor(scanner, this, tokenMap);
- }
-
- private void initActions(Map<String, String> properties) {
- ScopedStack<Object> astStack = new ScopedStack<>();
-
- action = new UPCParserAction(this, astStack, new UPCASTNodeFactory(), UPCSecondaryParserFactory.getDefault());
- action.setParserProperties(properties);
-
- }
-
- @Override
- public void addToken(IToken token) {
- token.setKind(mapKind(token.getKind())); // TODO does mapKind need to be called?
- super.addToken(token);
- }
-
- @Override
- public IASTExpression parse() {
- // this has to be done, or... kaboom!
- setStreamLength(getSize());
-
- final int errorRepairCount = -1; // -1 means full error handling
- parser(null, errorRepairCount); // do the actual parse
- super.resetTokenStream(); // allow tokens to be garbage collected
-
- compNode = action.getASTCompletionNode(); // the completion node may be null
- return (IASTExpression) action.getParseResult();
- }
-
- @Override
- public IASTCompletionNode getCompletionNode() {
- return compNode;
- }
-
- // uncomment this method to use with backtracking parser
- @Override
- public List<IToken> getRuleTokens() {
- return getTokens().subList(getLeftSpan(), getRightSpan() + 1);
- }
-
- @Override
- public String[] getOrderedTerminalSymbols() {
- return UPCExpressionParsersym.orderedTerminalSymbols;
- }
-
- @Override
- @SuppressWarnings("nls")
- public String getName() {
- return "UPCExpressionParser";
- }
-
- private ITokenMap tokenMap = null;
-
- @Override
- public void setTokens(List<IToken> tokens) {
- resetTokenStream();
- addToken(new Token(null, 0, 0, 0)); // dummy token
- for (IToken token : tokens) {
- token.setKind(tokenMap.mapKind(token.getKind()));
- addToken(token);
- }
- addToken(new Token(null, 0, 0, UPCExpressionParsersym.TK_EOF_TOKEN));
- }
-
- public UPCExpressionParser(ITokenStream stream, Map<String, String> properties) { // constructor for creating secondary parser
- initActions(properties);
- tokenMap = new TokenMap(UPCExpressionParsersym.orderedTerminalSymbols, stream.getOrderedTerminalSymbols());
- }
-
- @Override
- public void ruleAction(int ruleNumber) {
- switch (ruleNumber) {
-
- //
- // Rule 1: <openscope-ast> ::= $Empty
- //
- case 1: {
- action.openASTScope();
- break;
- }
-
- //
- // Rule 2: <empty> ::= $Empty
- //
- case 2: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 13: literal ::= integer
- //
- case 13: {
- action.consumeExpressionLiteral(IASTLiteralExpression.lk_integer_constant);
- break;
- }
-
- //
- // Rule 14: literal ::= floating
- //
- case 14: {
- action.consumeExpressionLiteral(IASTLiteralExpression.lk_float_constant);
- break;
- }
-
- //
- // Rule 15: literal ::= charconst
- //
- case 15: {
- action.consumeExpressionLiteral(IASTLiteralExpression.lk_char_constant);
- break;
- }
-
- //
- // Rule 16: literal ::= stringlit
- //
- case 16: {
- action.consumeExpressionLiteral(IASTLiteralExpression.lk_string_literal);
- break;
- }
-
- //
- // Rule 18: primary_expression ::= primary_expression_id
- //
- case 18: {
- action.consumeExpressionID();
- break;
- }
-
- //
- // Rule 19: primary_expression ::= ( expression )
- //
- case 19: {
- action.consumeExpressionBracketed();
- break;
- }
-
- //
- // Rule 22: postfix_expression ::= postfix_expression [ expression ]
- //
- case 22: {
- action.consumeExpressionArraySubscript();
- break;
- }
-
- //
- // Rule 23: postfix_expression ::= postfix_expression ( expression_list_opt )
- //
- case 23: {
- action.consumeExpressionFunctionCall();
- break;
- }
-
- //
- // Rule 24: postfix_expression ::= postfix_expression . member_name
- //
- case 24: {
- action.consumeExpressionFieldReference(false);
- break;
- }
-
- //
- // Rule 25: postfix_expression ::= postfix_expression -> member_name
- //
- case 25: {
- action.consumeExpressionFieldReference(true);
- break;
- }
-
- //
- // Rule 26: postfix_expression ::= postfix_expression ++
- //
- case 26: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixIncr);
- break;
- }
-
- //
- // Rule 27: postfix_expression ::= postfix_expression --
- //
- case 27: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixDecr);
- break;
- }
-
- //
- // Rule 28: postfix_expression ::= ( type_id ) initializer_list
- //
- case 28: {
- action.consumeExpressionTypeIdInitializer();
- break;
- }
-
- //
- // Rule 33: unary_expression ::= ++ unary_expression
- //
- case 33: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixIncr);
- break;
- }
-
- //
- // Rule 34: unary_expression ::= -- unary_expression
- //
- case 34: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixDecr);
- break;
- }
-
- //
- // Rule 35: unary_expression ::= & cast_expression
- //
- case 35: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_amper);
- break;
- }
-
- //
- // Rule 36: unary_expression ::= * cast_expression
- //
- case 36: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_star);
- break;
- }
-
- //
- // Rule 37: unary_expression ::= + cast_expression
- //
- case 37: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_plus);
- break;
- }
-
- //
- // Rule 38: unary_expression ::= - cast_expression
- //
- case 38: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_minus);
- break;
- }
-
- //
- // Rule 39: unary_expression ::= ~ cast_expression
- //
- case 39: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_tilde);
- break;
- }
-
- //
- // Rule 40: unary_expression ::= ! cast_expression
- //
- case 40: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_not);
- break;
- }
-
- //
- // Rule 41: unary_expression ::= sizeof unary_expression
- //
- case 41: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_sizeof);
- break;
- }
-
- //
- // Rule 42: unary_expression ::= sizeof ( type_id )
- //
- case 42: {
- action.consumeExpressionTypeId(IASTTypeIdExpression.op_sizeof);
- break;
- }
-
- //
- // Rule 44: cast_expression ::= ( type_id ) cast_expression
- //
- case 44: {
- action.consumeExpressionCast(IASTCastExpression.op_cast);
- break;
- }
-
- //
- // Rule 46: multiplicative_expression ::= multiplicative_expression * cast_expression
- //
- case 46: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_multiply);
- break;
- }
-
- //
- // Rule 47: multiplicative_expression ::= multiplicative_expression / cast_expression
- //
- case 47: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_divide);
- break;
- }
-
- //
- // Rule 48: multiplicative_expression ::= multiplicative_expression % cast_expression
- //
- case 48: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_modulo);
- break;
- }
-
- //
- // Rule 50: additive_expression ::= additive_expression + multiplicative_expression
- //
- case 50: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_plus);
- break;
- }
-
- //
- // Rule 51: additive_expression ::= additive_expression - multiplicative_expression
- //
- case 51: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_minus);
- break;
- }
-
- //
- // Rule 53: shift_expression ::= shift_expression << additive_expression
- //
- case 53: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftLeft);
- break;
- }
-
- //
- // Rule 54: shift_expression ::= shift_expression >> additive_expression
- //
- case 54: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftRight);
- break;
- }
-
- //
- // Rule 56: relational_expression ::= relational_expression < shift_expression
- //
- case 56: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_lessThan);
- break;
- }
-
- //
- // Rule 57: relational_expression ::= relational_expression > shift_expression
- //
- case 57: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_greaterThan);
- break;
- }
-
- //
- // Rule 58: relational_expression ::= relational_expression <= shift_expression
- //
- case 58: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_lessEqual);
- break;
- }
-
- //
- // Rule 59: relational_expression ::= relational_expression >= shift_expression
- //
- case 59: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_greaterEqual);
- break;
- }
-
- //
- // Rule 61: equality_expression ::= equality_expression == relational_expression
- //
- case 61: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_equals);
- break;
- }
-
- //
- // Rule 62: equality_expression ::= equality_expression != relational_expression
- //
- case 62: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_notequals);
- break;
- }
-
- //
- // Rule 64: and_expression ::= and_expression & equality_expression
- //
- case 64: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryAnd);
- break;
- }
-
- //
- // Rule 66: exclusive_or_expression ::= exclusive_or_expression ^ and_expression
- //
- case 66: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryXor);
- break;
- }
-
- //
- // Rule 68: inclusive_or_expression ::= inclusive_or_expression | exclusive_or_expression
- //
- case 68: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryOr);
- break;
- }
-
- //
- // Rule 70: logical_and_expression ::= logical_and_expression && inclusive_or_expression
- //
- case 70: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_logicalAnd);
- break;
- }
-
- //
- // Rule 72: logical_or_expression ::= logical_or_expression || logical_and_expression
- //
- case 72: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_logicalOr);
- break;
- }
-
- //
- // Rule 74: conditional_expression ::= logical_or_expression ? expression : assignment_expression
- //
- case 74: {
- action.consumeExpressionConditional();
- break;
- }
-
- //
- // Rule 76: assignment_expression ::= unary_expression = assignment_expression
- //
- case 76: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_assign);
- break;
- }
-
- //
- // Rule 77: assignment_expression ::= unary_expression *= assignment_expression
- //
- case 77: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_multiplyAssign);
- break;
- }
-
- //
- // Rule 78: assignment_expression ::= unary_expression /= assignment_expression
- //
- case 78: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_divideAssign);
- break;
- }
-
- //
- // Rule 79: assignment_expression ::= unary_expression %= assignment_expression
- //
- case 79: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_moduloAssign);
- break;
- }
-
- //
- // Rule 80: assignment_expression ::= unary_expression += assignment_expression
- //
- case 80: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_plusAssign);
- break;
- }
-
- //
- // Rule 81: assignment_expression ::= unary_expression -= assignment_expression
- //
- case 81: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_minusAssign);
- break;
- }
-
- //
- // Rule 82: assignment_expression ::= unary_expression <<= assignment_expression
- //
- case 82: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftLeftAssign);
- break;
- }
-
- //
- // Rule 83: assignment_expression ::= unary_expression >>= assignment_expression
- //
- case 83: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftRightAssign);
- break;
- }
-
- //
- // Rule 84: assignment_expression ::= unary_expression &= assignment_expression
- //
- case 84: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryAndAssign);
- break;
- }
-
- //
- // Rule 85: assignment_expression ::= unary_expression ^= assignment_expression
- //
- case 85: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryXorAssign);
- break;
- }
-
- //
- // Rule 86: assignment_expression ::= unary_expression |= assignment_expression
- //
- case 86: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryOrAssign);
- break;
- }
-
- //
- // Rule 89: expression_list ::= <openscope-ast> expression_list_actual
- //
- case 89: {
- action.consumeExpressionList();
- break;
- }
-
- //
- // Rule 91: expression_list_opt ::= $Empty
- //
- case 91: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 101: statement ::= ERROR_TOKEN
- //
- case 101: {
- action.consumeStatementProblem();
- break;
- }
-
- //
- // Rule 102: labeled_statement ::= identifier_token : statement
- //
- case 102: {
- action.consumeStatementLabeled();
- break;
- }
-
- //
- // Rule 103: labeled_statement ::= case constant_expression : statement
- //
- case 103: {
- action.consumeStatementCase();
- break;
- }
-
- //
- // Rule 104: labeled_statement ::= default : statement
- //
- case 104: {
- action.consumeStatementDefault();
- break;
- }
-
- //
- // Rule 105: compound_statement ::= { }
- //
- case 105: {
- action.consumeStatementCompoundStatement(false);
- break;
- }
-
- //
- // Rule 106: compound_statement ::= { <openscope-ast> block_item_list }
- //
- case 106: {
- action.consumeStatementCompoundStatement(true);
- break;
- }
-
- //
- // Rule 110: block_item ::= declaration
- //
- case 110: {
- action.consumeStatementDeclarationWithDisambiguation();
- break;
- }
-
- //
- // Rule 111: expression_statement ::= ;
- //
- case 111: {
- action.consumeStatementNull();
- break;
- }
-
- //
- // Rule 112: expression_statement ::= expression_in_statement ;
- //
- case 112: {
- action.consumeStatementExpression();
- break;
- }
-
- //
- // Rule 113: selection_statement ::= if ( expression ) statement
- //
- case 113: {
- action.consumeStatementIf(false);
- break;
- }
-
- //
- // Rule 114: selection_statement ::= if ( expression ) statement else statement
- //
- case 114: {
- action.consumeStatementIf(true);
- break;
- }
-
- //
- // Rule 115: selection_statement ::= switch ( expression ) statement
- //
- case 115: {
- action.consumeStatementSwitch();
- break;
- }
-
- //
- // Rule 117: expression_opt ::= $Empty
- //
- case 117: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 118: iteration_statement ::= do statement while ( expression ) ;
- //
- case 118: {
- action.consumeStatementDoLoop(true);
- break;
- }
-
- //
- // Rule 119: iteration_statement ::= do statement
- //
- case 119: {
- action.consumeStatementDoLoop(false);
- break;
- }
-
- //
- // Rule 120: iteration_statement ::= while ( expression ) statement
- //
- case 120: {
- action.consumeStatementWhileLoop();
- break;
- }
-
- //
- // Rule 121: iteration_statement ::= for ( expression_opt ; expression_opt ; expression_opt ) statement
- //
- case 121: {
- action.consumeStatementForLoop();
- break;
- }
-
- //
- // Rule 122: iteration_statement ::= for ( declaration expression_opt ; expression_opt ) statement
- //
- case 122: {
- action.consumeStatementForLoop();
- break;
- }
-
- //
- // Rule 123: jump_statement ::= goto identifier_token ;
- //
- case 123: {
- action.consumeStatementGoto();
- break;
- }
-
- //
- // Rule 124: jump_statement ::= continue ;
- //
- case 124: {
- action.consumeStatementContinue();
- break;
- }
-
- //
- // Rule 125: jump_statement ::= break ;
- //
- case 125: {
- action.consumeStatementBreak();
- break;
- }
-
- //
- // Rule 126: jump_statement ::= return ;
- //
- case 126: {
- action.consumeStatementReturn(false);
- break;
- }
-
- //
- // Rule 127: jump_statement ::= return expression ;
- //
- case 127: {
- action.consumeStatementReturn(true);
- break;
- }
-
- //
- // Rule 128: declaration ::= declaration_specifiers ;
- //
- case 128: {
- action.consumeDeclarationSimple(false);
- break;
- }
-
- //
- // Rule 129: declaration ::= declaration_specifiers <openscope-ast> init_declarator_list ;
- //
- case 129: {
- action.consumeDeclarationSimple(true);
- break;
- }
-
- //
- // Rule 130: declaration_specifiers ::= <openscope-ast> simple_declaration_specifiers
- //
- case 130: {
- action.consumeDeclarationSpecifiersSimple();
- break;
- }
-
- //
- // Rule 131: declaration_specifiers ::= <openscope-ast> struct_or_union_declaration_specifiers
- //
- case 131: {
- action.consumeDeclarationSpecifiersStructUnionEnum();
- break;
- }
-
- //
- // Rule 132: declaration_specifiers ::= <openscope-ast> elaborated_declaration_specifiers
- //
- case 132: {
- action.consumeDeclarationSpecifiersStructUnionEnum();
- break;
- }
-
- //
- // Rule 133: declaration_specifiers ::= <openscope-ast> enum_declaration_specifiers
- //
- case 133: {
- action.consumeDeclarationSpecifiersStructUnionEnum();
- break;
- }
-
- //
- // Rule 134: declaration_specifiers ::= <openscope-ast> typdef_name_declaration_specifiers
- //
- case 134: {
- action.consumeDeclarationSpecifiersTypedefName();
- break;
- }
-
- //
- // Rule 159: init_declarator ::= complete_declarator = initializer
- //
- case 159: {
- action.consumeDeclaratorWithInitializer(true);
- break;
- }
-
- //
- // Rule 161: storage_class_specifier ::= storage_class_specifier_token
- //
- case 161: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 167: simple_type_specifier ::= simple_type_specifier_token
- //
- case 167: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 180: type_name_specifier ::= identifier_token
- //
- case 180: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 181: struct_or_union_specifier ::= struct_or_union struct_or_union_specifier_hook { <openscope-ast> struct_declaration_list_opt }
- //
- case 181: {
- action.consumeTypeSpecifierComposite(false);
- break;
- }
-
- //
- // Rule 182: struct_or_union_specifier ::= struct_or_union struct_or_union_specifier_hook identifier_token struct_or_union_specifier_suffix_hook { <openscope-ast> struct_declaration_list_opt }
- //
- case 182: {
- action.consumeTypeSpecifierComposite(true);
- break;
- }
-
- //
- // Rule 187: elaborated_specifier ::= struct elaborated_specifier_hook identifier_token
- //
- case 187: {
- action.consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_struct);
- break;
- }
-
- //
- // Rule 188: elaborated_specifier ::= union elaborated_specifier_hook identifier_token
- //
- case 188: {
- action.consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_union);
- break;
- }
-
- //
- // Rule 189: elaborated_specifier ::= enum elaborated_specifier_hook identifier_token
- //
- case 189: {
- action.consumeTypeSpecifierElaborated(IASTElaboratedTypeSpecifier.k_enum);
- break;
- }
-
- //
- // Rule 195: struct_declaration ::= specifier_qualifier_list <openscope-ast> struct_declarator_list ;
- //
- case 195: {
- action.consumeStructDeclaration(true);
- break;
- }
-
- //
- // Rule 196: struct_declaration ::= specifier_qualifier_list ;
- //
- case 196: {
- action.consumeStructDeclaration(false);
- break;
- }
-
- //
- // Rule 197: struct_declaration ::= ERROR_TOKEN
- //
- case 197: {
- action.consumeDeclarationProblem();
- break;
- }
-
- //
- // Rule 203: struct_declarator ::= : constant_expression
- //
- case 203: {
- action.consumeBitField(false);
- break;
- }
-
- //
- // Rule 204: struct_declarator ::= declarator : constant_expression
- //
- case 204: {
- action.consumeBitField(true);
- break;
- }
-
- //
- // Rule 205: enum_specifier ::= enum enum_specifier_hook { <openscope-ast> enumerator_list_opt comma_opt }
- //
- case 205: {
- action.consumeTypeSpecifierEnumeration(false);
- break;
- }
-
- //
- // Rule 206: enum_specifier ::= enum enum_specifier_hook identifier_token { <openscope-ast> enumerator_list_opt comma_opt }
- //
- case 206: {
- action.consumeTypeSpecifierEnumeration(true);
- break;
- }
-
- //
- // Rule 212: enumerator ::= identifier_token
- //
- case 212: {
- action.consumeEnumerator(false);
- break;
- }
-
- //
- // Rule 213: enumerator ::= identifier_token = constant_expression
- //
- case 213: {
- action.consumeEnumerator(true);
- break;
- }
-
- //
- // Rule 214: type_qualifier ::= type_qualifier_token
- //
- case 214: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 218: function_specifier ::= inline
- //
- case 218: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 220: declarator ::= <openscope-ast> pointer_seq direct_declarator
- //
- case 220: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 225: basic_direct_declarator ::= declarator_id_name
- //
- case 225: {
- action.consumeDirectDeclaratorIdentifier();
- break;
- }
-
- //
- // Rule 226: basic_direct_declarator ::= ( declarator )
- //
- case 226: {
- action.consumeDirectDeclaratorBracketed();
- break;
- }
-
- //
- // Rule 227: declarator_id_name ::= identifier
- //
- case 227: {
- action.consumeIdentifierName();
- break;
- }
-
- //
- // Rule 228: array_direct_declarator ::= basic_direct_declarator array_modifier
- //
- case 228: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 229: array_direct_declarator ::= array_direct_declarator array_modifier
- //
- case 229: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 231: function_direct_declarator ::= basic_direct_declarator ( <openscope-ast> parameter_type_list )
- //
- case 231: {
- action.consumeDirectDeclaratorFunctionDeclarator(true, true);
- break;
- }
-
- //
- // Rule 232: function_direct_declarator ::= basic_direct_declarator ( )
- //
- case 232: {
- action.consumeDirectDeclaratorFunctionDeclarator(true, false);
- break;
- }
-
- //
- // Rule 234: function_declarator ::= <openscope-ast> pointer_seq function_direct_declarator
- //
- case 234: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 235: knr_direct_declarator ::= basic_direct_declarator ( <openscope-ast> identifier_list )
- //
- case 235: {
- action.consumeDirectDeclaratorFunctionDeclaratorKnR();
- break;
- }
-
- //
- // Rule 237: knr_function_declarator ::= <openscope-ast> pointer_seq knr_direct_declarator
- //
- case 237: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 238: identifier_list ::= identifier
- //
- case 238: {
- action.consumeIdentifierKnR();
- break;
- }
-
- //
- // Rule 239: identifier_list ::= identifier_list , identifier
- //
- case 239: {
- action.consumeIdentifierKnR();
- break;
- }
-
- //
- // Rule 240: array_modifier ::= [ ]
- //
- case 240: {
- action.consumeDirectDeclaratorArrayModifier(false);
- break;
- }
-
- //
- // Rule 241: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers ]
- //
- case 241: {
- action.consumeDirectDeclaratorModifiedArrayModifier(false, false, true, false);
- break;
- }
-
- //
- // Rule 242: array_modifier ::= [ assignment_expression ]
- //
- case 242: {
- action.consumeDirectDeclaratorArrayModifier(true);
- break;
- }
-
- //
- // Rule 243: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers assignment_expression ]
- //
- case 243: {
- action.consumeDirectDeclaratorModifiedArrayModifier(false, false, true, true);
- break;
- }
-
- //
- // Rule 244: array_modifier ::= [ static assignment_expression ]
- //
- case 244: {
- action.consumeDirectDeclaratorModifiedArrayModifier(true, false, false, true);
- break;
- }
-
- //
- // Rule 245: array_modifier ::= [ static <openscope-ast> array_modifier_type_qualifiers assignment_expression ]
- //
- case 245: {
- action.consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true);
- break;
- }
-
- //
- // Rule 246: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers static assignment_expression ]
- //
- case 246: {
- action.consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true);
- break;
- }
-
- //
- // Rule 247: array_modifier ::= [ * ]
- //
- case 247: {
- action.consumeDirectDeclaratorModifiedArrayModifier(false, true, false, false);
- break;
- }
-
- //
- // Rule 248: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers * ]
- //
- case 248: {
- action.consumeDirectDeclaratorModifiedArrayModifier(false, true, true, false);
- break;
- }
-
- //
- // Rule 250: pointer_seq ::= pointer_hook * pointer_hook
- //
- case 250: {
- action.consumePointer();
- break;
- }
-
- //
- // Rule 251: pointer_seq ::= pointer_seq pointer_hook * pointer_hook
- //
- case 251: {
- action.consumePointer();
- break;
- }
-
- //
- // Rule 252: pointer_seq ::= pointer_hook * pointer_hook <openscope-ast> type_qualifier_list
- //
- case 252: {
- action.consumePointerTypeQualifierList();
- break;
- }
-
- //
- // Rule 253: pointer_seq ::= pointer_seq pointer_hook * pointer_hook <openscope-ast> type_qualifier_list
- //
- case 253: {
- action.consumePointerTypeQualifierList();
- break;
- }
-
- //
- // Rule 257: parameter_type_list ::= parameter_list
- //
- case 257: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 258: parameter_type_list ::= parameter_list , ...
- //
- case 258: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 259: parameter_type_list ::= ...
- //
- case 259: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 262: parameter_declaration ::= declaration_specifiers complete_parameter_declarator
- //
- case 262: {
- action.consumeParameterDeclaration();
- break;
- }
-
- //
- // Rule 263: parameter_declaration ::= declaration_specifiers
- //
- case 263: {
- action.consumeParameterDeclarationWithoutDeclarator();
- break;
- }
-
- //
- // Rule 266: type_id ::= specifier_qualifier_list
- //
- case 266: {
- action.consumeTypeId(false);
- break;
- }
-
- //
- // Rule 267: type_id ::= specifier_qualifier_list abstract_declarator
- //
- case 267: {
- action.consumeTypeId(true);
- break;
- }
-
- //
- // Rule 269: abstract_declarator ::= <openscope-ast> pointer_seq
- //
- case 269: {
- action.consumeDeclaratorWithPointer(false);
- break;
- }
-
- //
- // Rule 270: abstract_declarator ::= <openscope-ast> pointer_seq direct_abstract_declarator
- //
- case 270: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 274: basic_direct_abstract_declarator ::= ( abstract_declarator )
- //
- case 274: {
- action.consumeDirectDeclaratorBracketed();
- break;
- }
-
- //
- // Rule 275: array_direct_abstract_declarator ::= array_modifier
- //
- case 275: {
- action.consumeDirectDeclaratorArrayDeclarator(false);
- break;
- }
-
- //
- // Rule 276: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier
- //
- case 276: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 277: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier
- //
- case 277: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 278: function_direct_abstract_declarator ::= ( )
- //
- case 278: {
- action.consumeDirectDeclaratorFunctionDeclarator(false, false);
- break;
- }
-
- //
- // Rule 279: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( )
- //
- case 279: {
- action.consumeDirectDeclaratorFunctionDeclarator(true, false);
- break;
- }
-
- //
- // Rule 280: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_type_list )
- //
- case 280: {
- action.consumeDirectDeclaratorFunctionDeclarator(false, true);
- break;
- }
-
- //
- // Rule 281: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( <openscope-ast> parameter_type_list )
- //
- case 281: {
- action.consumeDirectDeclaratorFunctionDeclarator(true, true);
- break;
- }
-
- //
- // Rule 282: initializer ::= assignment_expression
- //
- case 282: {
- action.consumeInitializer();
- break;
- }
-
- //
- // Rule 283: initializer ::= initializer_list
- //
- case 283: {
- action.consumeInitializer();
- break;
- }
-
- //
- // Rule 284: initializer_list ::= start_initializer_list { <openscope-ast> initializer_seq comma_opt } end_initializer_list
- //
- case 284: {
- action.consumeInitializerList();
- break;
- }
-
- //
- // Rule 285: initializer_list ::= { <openscope-ast> }
- //
- case 285: {
- action.consumeInitializerList();
- break;
- }
-
- //
- // Rule 286: start_initializer_list ::= $Empty
- //
- case 286: {
- action.initializerListStart();
- break;
- }
-
- //
- // Rule 287: end_initializer_list ::= $Empty
- //
- case 287: {
- action.initializerListEnd();
- break;
- }
-
- //
- // Rule 292: designated_initializer ::= <openscope-ast> designation = initializer
- //
- case 292: {
- action.consumeInitializerDesignated();
- break;
- }
-
- //
- // Rule 296: designator_base ::= [ constant_expression ]
- //
- case 296: {
- action.consumeDesignatorArray();
- break;
- }
-
- //
- // Rule 297: designator_base ::= . identifier_token
- //
- case 297: {
- action.consumeDesignatorField();
- break;
- }
-
- //
- // Rule 298: designator ::= [ constant_expression ]
- //
- case 298: {
- action.consumeDesignatorArray();
- break;
- }
-
- //
- // Rule 299: designator ::= . identifier_token
- //
- case 299: {
- action.consumeDesignatorField();
- break;
- }
-
- //
- // Rule 300: translation_unit ::= external_declaration_list
- //
- case 300: {
- action.consumeTranslationUnit();
- break;
- }
-
- //
- // Rule 301: translation_unit ::= $Empty
- //
- case 301: {
- action.consumeTranslationUnit();
- break;
- }
-
- //
- // Rule 306: external_declaration ::= ;
- //
- case 306: {
- action.consumeDeclarationEmpty();
- break;
- }
-
- //
- // Rule 307: external_declaration ::= ERROR_TOKEN
- //
- case 307: {
- action.consumeDeclarationProblem();
- break;
- }
-
- //
- // Rule 311: function_definition ::= <openscope-ast> function_declarator function_body
- //
- case 311: {
- action.consumeFunctionDefinition(false);
- break;
- }
-
- //
- // Rule 312: function_definition ::= declaration_specifiers <openscope-ast> knr_function_declarator <openscope-ast> declaration_list compound_statement
- //
- case 312: {
- action.consumeFunctionDefinitionKnR();
- break;
- }
-
- //
- // Rule 313: normal_function_definition ::= declaration_specifiers <openscope-ast> function_declarator function_body
- //
- case 313: {
- action.consumeFunctionDefinition(true);
- break;
- }
-
- //
- // Rule 314: function_body ::= { }
- //
- case 314: {
- action.consumeStatementCompoundStatement(false);
- break;
- }
-
- //
- // Rule 315: function_body ::= { <openscope-ast> block_item_list }
- //
- case 315: {
- action.consumeStatementCompoundStatement(true);
- break;
- }
-
- //
- // Rule 317: expression_parser_start ::= ERROR_TOKEN
- //
- case 317: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 318: literal ::= MYTHREAD
- //
- case 318: {
- action.consumeKeywordExpression(IUPCASTKeywordExpression.kw_mythread);
- break;
- }
-
- //
- // Rule 319: literal ::= THREADS
- //
- case 319: {
- action.consumeKeywordExpression(IUPCASTKeywordExpression.kw_threads);
- break;
- }
-
- //
- // Rule 320: literal ::= UPC_MAX_BLOCKSIZE
- //
- case 320: {
- action.consumeKeywordExpression(IUPCASTKeywordExpression.kw_upc_max_block_size);
- break;
- }
-
- //
- // Rule 321: unary_expression ::= upc_localsizeof unary_expression
- //
- case 321: {
- action.consumeExpressionUnarySizeofOperator(IUPCASTUnarySizeofExpression.upc_localsizeof);
- break;
- }
-
- //
- // Rule 322: unary_expression ::= upc_localsizeof ( type_id )
- //
- case 322: {
- action.consumeExpressionSizeofTypeId(IUPCASTUnarySizeofExpression.upc_localsizeof);
- break;
- }
-
- //
- // Rule 323: unary_expression ::= upc_blocksizeof unary_expression
- //
- case 323: {
- action.consumeExpressionUnarySizeofOperator(IUPCASTUnarySizeofExpression.upc_blocksizeof);
- break;
- }
-
- //
- // Rule 324: unary_expression ::= upc_blocksizeof ( type_id )
- //
- case 324: {
- action.consumeExpressionSizeofTypeId(IUPCASTUnarySizeofExpression.upc_blocksizeof);
- break;
- }
-
- //
- // Rule 325: unary_expression ::= upc_elemsizeof unary_expression
- //
- case 325: {
- action.consumeExpressionUnarySizeofOperator(IUPCASTUnarySizeofExpression.upc_elemsizeof);
- break;
- }
-
- //
- // Rule 326: unary_expression ::= upc_elemsizeof ( type_id )
- //
- case 326: {
- action.consumeExpressionSizeofTypeId(IUPCASTUnarySizeofExpression.upc_elemsizeof);
- break;
- }
-
- //
- // Rule 330: shared_type_qualifier ::= shared
- //
- case 330: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 331: reference_type_qualifier ::= relaxed
- //
- case 331: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 332: reference_type_qualifier ::= strict
- //
- case 332: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 333: layout_qualifier ::= [ constant_expression ]
- //
- case 333: {
- action.consumeLayoutQualifier(true, false);
- break;
- }
-
- //
- // Rule 334: layout_qualifier ::= [ * ]
- //
- case 334: {
- action.consumeLayoutQualifier(false, true);
- break;
- }
-
- //
- // Rule 335: layout_qualifier ::= [ ]
- //
- case 335: {
- action.consumeLayoutQualifier(false, false);
- break;
- }
-
- //
- // Rule 337: synchronization_statement ::= upc_notify expression ;
- //
- case 337: {
- action.consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_notify, true);
- break;
- }
-
- //
- // Rule 338: synchronization_statement ::= upc_notify ;
- //
- case 338: {
- action.consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_notify, false);
- break;
- }
-
- //
- // Rule 339: synchronization_statement ::= upc_wait expression ;
- //
- case 339: {
- action.consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_wait, true);
- break;
- }
-
- //
- // Rule 340: synchronization_statement ::= upc_wait ;
- //
- case 340: {
- action.consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_wait, false);
- break;
- }
-
- //
- // Rule 341: synchronization_statement ::= upc_barrier expression ;
- //
- case 341: {
- action.consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_barrier, true);
- break;
- }
-
- //
- // Rule 342: synchronization_statement ::= upc_barrier ;
- //
- case 342: {
- action.consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_barrier, false);
- break;
- }
-
- //
- // Rule 343: synchronization_statement ::= upc_fence ;
- //
- case 343: {
- action.consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_fence, false);
- break;
- }
-
- //
- // Rule 344: iteration_statement ::= upc_forall ( expression ; expression ; expression ; affinity ) statement
- //
- case 344: {
- action.consumeStatementUPCForallLoop(true, true, true, true);
- break;
- }
-
- //
- // Rule 345: iteration_statement ::= upc_forall ( expression ; expression ; expression ; ) statement
- //
- case 345: {
- action.consumeStatementUPCForallLoop(true, true, true, false);
- break;
- }
-
- //
- // Rule 346: iteration_statement ::= upc_forall ( expression ; expression ; ; affinity ) statement
- //
- case 346: {
- action.consumeStatementUPCForallLoop(true, true, false, true);
- break;
- }
-
- //
- // Rule 347: iteration_statement ::= upc_forall ( expression ; expression ; ; ) statement
- //
- case 347: {
- action.consumeStatementUPCForallLoop(true, true, false, false);
- break;
- }
-
- //
- // Rule 348: iteration_statement ::= upc_forall ( expression ; ; expression ; affinity ) statement
- //
- case 348: {
- action.consumeStatementUPCForallLoop(true, false, true, true);
- break;
- }
-
- //
- // Rule 349: iteration_statement ::= upc_forall ( expression ; ; expression ; ) statement
- //
- case 349: {
- action.consumeStatementUPCForallLoop(true, false, true, false);
- break;
- }
-
- //
- // Rule 350: iteration_statement ::= upc_forall ( expression ; ; ; affinity ) statement
- //
- case 350: {
- action.consumeStatementUPCForallLoop(true, false, false, true);
- break;
- }
-
- //
- // Rule 351: iteration_statement ::= upc_forall ( expression ; ; ; ) statement
- //
- case 351: {
- action.consumeStatementUPCForallLoop(true, false, false, false);
- break;
- }
-
- //
- // Rule 352: iteration_statement ::= upc_forall ( ; expression ; expression ; affinity ) statement
- //
- case 352: {
- action.consumeStatementUPCForallLoop(false, true, true, true);
- break;
- }
-
- //
- // Rule 353: iteration_statement ::= upc_forall ( ; expression ; expression ; ) statement
- //
- case 353: {
- action.consumeStatementUPCForallLoop(false, true, true, false);
- break;
- }
-
- //
- // Rule 354: iteration_statement ::= upc_forall ( ; expression ; ; affinity ) statement
- //
- case 354: {
- action.consumeStatementUPCForallLoop(false, true, false, true);
- break;
- }
-
- //
- // Rule 355: iteration_statement ::= upc_forall ( ; expression ; ; ) statement
- //
- case 355: {
- action.consumeStatementUPCForallLoop(false, true, false, false);
- break;
- }
-
- //
- // Rule 356: iteration_statement ::= upc_forall ( ; ; expression ; affinity ) statement
- //
- case 356: {
- action.consumeStatementUPCForallLoop(false, false, true, true);
- break;
- }
-
- //
- // Rule 357: iteration_statement ::= upc_forall ( ; ; expression ; ) statement
- //
- case 357: {
- action.consumeStatementUPCForallLoop(false, false, true, false);
- break;
- }
-
- //
- // Rule 358: iteration_statement ::= upc_forall ( ; ; ; affinity ) statement
- //
- case 358: {
- action.consumeStatementUPCForallLoop(false, false, false, true);
- break;
- }
-
- //
- // Rule 359: iteration_statement ::= upc_forall ( ; ; ; ) statement
- //
- case 359: {
- action.consumeStatementUPCForallLoop(false, false, false, false);
- break;
- }
-
- //
- // Rule 360: iteration_statement ::= upc_forall ( declaration expression ; expression ; affinity ) statement
- //
- case 360: {
- action.consumeStatementUPCForallLoop(true, true, true, true);
- break;
- }
-
- //
- // Rule 361: iteration_statement ::= upc_forall ( declaration expression ; expression ; ) statement
- //
- case 361: {
- action.consumeStatementUPCForallLoop(true, true, true, false);
- break;
- }
-
- //
- // Rule 362: iteration_statement ::= upc_forall ( declaration expression ; ; affinity ) statement
- //
- case 362: {
- action.consumeStatementUPCForallLoop(true, true, false, true);
- break;
- }
-
- //
- // Rule 363: iteration_statement ::= upc_forall ( declaration expression ; ; ) statement
- //
- case 363: {
- action.consumeStatementUPCForallLoop(true, true, false, false);
- break;
- }
-
- //
- // Rule 364: iteration_statement ::= upc_forall ( declaration ; expression ; affinity ) statement
- //
- case 364: {
- action.consumeStatementUPCForallLoop(true, false, true, true);
- break;
- }
-
- //
- // Rule 365: iteration_statement ::= upc_forall ( declaration ; expression ; ) statement
- //
- case 365: {
- action.consumeStatementUPCForallLoop(true, false, true, false);
- break;
- }
-
- //
- // Rule 366: iteration_statement ::= upc_forall ( declaration ; ; affinity ) statement
- //
- case 366: {
- action.consumeStatementUPCForallLoop(true, false, false, true);
- break;
- }
-
- //
- // Rule 367: iteration_statement ::= upc_forall ( declaration ; ; ) statement
- //
- case 367: {
- action.consumeStatementUPCForallLoop(true, false, false, false);
- break;
- }
-
- //
- // Rule 369: affinity ::= continue
- //
- case 369: {
- action.consumeToken();
- break;
- }
-
- default:
- break;
- }
- return;
- }
-}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCExpressionParserprs.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCExpressionParserprs.java
deleted file mode 100644
index cf182b9df9e..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCExpressionParserprs.java
+++ /dev/null
@@ -1,764 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2011 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.dom.parser.upc;
-
-public class UPCExpressionParserprs implements lpg.lpgjavaruntime.ParseTable, UPCExpressionParsersym {
-
- public interface IsKeyword {
- public final static byte isKeyword[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static byte isKeyword[] = IsKeyword.isKeyword;
-
- public final boolean isKeyword(int index) {
- return isKeyword[index] != 0;
- }
-
- public interface BaseCheck {
- public final static short baseCheck[] = { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 4,
- 4, 3, 3, 2, 2, 4, 1, 0, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 1, 4, 1, 3, 3, 3, 1, 3, 3, 1, 3, 3, 1, 3, 3,
- 3, 3, 1, 3, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 5, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 2, 1, 0, 1,
- 3, 1, 1, 1, 1, 1, 1, 1, 1, 3, 4, 3, 2, 4, 1, 2, 1, 1, 1, 2, 5, 7, 5, 1, 0, 7, 2, 5, 9, 8, 3, 2, 2, 2, 3,
- 2, 4, 2, 2, 2, 2, 2, 1, 1, 1, 1, 2, 1, 2, 2, 2, 1, 2, 2, 1, 2, 2, 1, 2, 2, 1, 2, 2, 1, 3, 1, 3, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 8, 0, 0, 1, 1, 3, 3, 3, 0, 1, 0, 1, 2, 4, 2, 1,
- 1, 1, 3, 1, 1, 2, 3, 7, 8, 0, 1, 0, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 3, 1, 2, 2, 1, 5, 3,
- 1, 3, 5, 1, 3, 1, 3, 2, 4, 3, 5, 4, 6, 6, 3, 5, 1, 3, 4, 5, 6, 0, 1, 2, 1, 3, 1, 1, 3, 2, 1, 1, 1, 1, 2,
- 1, 2, 3, 1, 1, 1, 3, 1, 2, 2, 2, 3, 4, 5, 1, 1, 7, 3, 0, 0, 1, 1, 3, 3, 4, 1, 1, 2, 3, 2, 3, 2, 1, 0, 1,
- 2, 1, 1, 1, 1, 1, 2, 1, 3, 6, 4, 2, 4, 1, 1, 1, 1, 1, 2, 4, 2, 4, 2, 4, 1, 1, 2, 1, 1, 1, 3, 3, 2, 1, 3,
- 2, 3, 2, 3, 2, 2, 11, 10, 10, 9, 10, 9, 9, 8, 10, 9, 9, 8, 9, 8, 8, 7, 10, 9, 9, 8, 9, 8, 8, 7, 1, 1,
- -43, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -132, 0, 0, 0, 0, 0, -81, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, 0, 0, -40, 0, 0, 0, 0, 0, 0, 0, 0, -175, 0, -153, 0,
- -120, 0, 0, 0, 0, -88, 0, -90, 0, -4, 0, -17, 0, 0, 0, 0, 0, 0, 0, -157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -224, -44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -207, 0, -19, -193, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -148, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -82,
- -20, 0, -145, 0, 0, 0, 0, 0, 0, 0, 0, -115, -116, -85, 0, 0, 0, 0, -21, 0, 0, 0, 0, -117, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -22, 0, -141, 0, 0, 0, 0, 0,
- 0, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -80, 0, -45, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -131, 0, 0, 0, 0, 0, 0, 0, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -133, 0, 0, -9, 0, 0, 0, 0, 0, 0, 0, -23, 0, 0, 0, 0, 0, -125, -144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -30, 0, 0, 0, 0, 0, 0, 0, 0, 0, -41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -137, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -161, 0, 0, 0, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -226, 0, 0, 0, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, -25, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -134, 0, -211, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -10, 0, 0, 0, 0, 0, 0, 0, 0, -11, 0, 0, 0, 0, 0, 0, 0, -27, -225, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -61, 0, 0, 0, 0, 0, 0, 0, 0, 0, -28, 0, 0, 0, 0, 0, 0, 0, -97, 0, -12, 0, 0, 0, 0, 0,
- 0, 0, 0, -50, 0, 0, 0, 0, 0, 0, 0, 0, 0, -95, 0, 0, 0, 0, 0, -174, -118, -86, -147, -29, -36, 0, -98, 0,
- 0, 0, 0, -99, 0, -59, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0,
- -164, 0, 0, 0, 0, 0, 0, 0, 0, -92, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, -119, -135, 0,
- 0, -13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, -183, -37, 0, 0, 0, 0,
- 0, 0, -58, 0, 0, 0, 0, 0, 0, 0, 0, 0, -139, 0, 0, 0, 0, 0, 0, -102, -206, 0, 0, 0, 0, -103, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -89, -146, 0, 0, 0, 0, -55, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 0, 0, 0,
- -136, 0, 0, 0, 0, 0, 0, 0, -197, 0, 0, -195, 0, -158, -105, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, -87, 0, -52, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -186, 0, -14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -127, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -93, -91, -210, 0, 0, -106, 0, 0, -54, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -219, -130, -169, -182, -154, -84, 0, 0, 0, 0, 0, 0, -94, 0, 0, 0, 0, -189, 0, 0, 0, 0, 0, 0, 0,
- -107, 0, -7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -96, 0, 0, 0, 0, 0, -143, 0, 0, 0, 0,
- 0, -152, 0, 0, 0, 0, 0, 0, 0, 0, -42, -156, 0, 0, 0, 0, -151, 0, -108, -165, 0, 0, 0, 0, 0, 0, 0, 0,
- -163, 0, 0, 0, 0, 0, 0, 0, -109, -110, 0, 0, -46, 0, 0, 0, 0, 0, 0, 0, 0, -111, 0, -47, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -48, 0, 0, 0, 0, 0, 0, 0, 0, -129, -168, -187, -159, -162, -39, -138, -181, -173, 0,
- 0, 0, 0, 0, -112, 0, -113, 0, -8, 0, 0, 0, 0, 0, 0, -114, 0, 0, 0, 0, 0, -121, -123, 0, 0, 0, 0, 0, -15,
- 0, 0, 0, 0, 0, 0, -16, 0, 0, 0, 0, 0, 0, 0, -18, 0, 0, 0, -140, 0, -60, 0, 0, 0, 0, -31, 0, -185, 0,
- -38, 0, -149, -167, 0, -172, 0, -32, -166, -220, 0, 0, 0, 0, -155, 0, 0, 0, 0, 0, -33, -170, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -34, 0, 0, 0, 0, -122, 0, 0, 0, 0, 0, -35, 0, 0, -200, -190, 0, 0, -203, -171, 0, 0, 0,
- 0, 0, -126, 0, 0, 0, 0, -176, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 0, 0, -184, 0, -192, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -178, -201, -179, -150, -216, 0, -188, 0, 0, -204, 0, 0, -180, 0, -213,
- -177, 0, -191, -215, -221, 0, -209, 0, -214, 0, 0, -198, 0, 0, -194, 0, -222, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -218, 0, 0, 0, -223, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static short baseCheck[] = BaseCheck.baseCheck;
-
- @Override
- public final int baseCheck(int index) {
- return baseCheck[index];
- }
-
- public final static short rhs[] = baseCheck;
-
- @Override
- public final int rhs(int index) {
- return rhs[index];
- }
-
- public interface BaseAction {
- public final static char baseAction[] = { 89, 10, 105, 22, 22, 21, 21, 46, 46, 72, 72, 1, 1, 2, 2, 2, 2, 3, 3,
- 3, 4, 5, 5, 5, 5, 5, 5, 5, 5, 62, 62, 73, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9,
- 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 20,
- 20, 20, 20, 20, 20, 20, 20, 20, 20, 106, 31, 28, 90, 90, 74, 74, 48, 107, 107, 107, 107, 107, 107, 107,
- 108, 108, 108, 109, 109, 114, 114, 115, 115, 110, 110, 111, 111, 111, 117, 117, 112, 112, 112, 112, 112,
- 113, 113, 113, 113, 113, 116, 116, 27, 27, 27, 27, 27, 35, 35, 35, 80, 80, 75, 75, 75, 75, 76, 76, 76,
- 77, 77, 77, 78, 78, 78, 79, 79, 79, 118, 118, 119, 119, 120, 36, 38, 38, 38, 38, 38, 56, 57, 57, 57, 57,
- 57, 57, 57, 57, 57, 57, 57, 57, 66, 63, 63, 91, 92, 68, 68, 64, 64, 64, 69, 81, 81, 82, 82, 70, 70, 70,
- 33, 93, 93, 83, 84, 84, 84, 65, 65, 94, 85, 85, 86, 86, 71, 71, 23, 24, 24, 24, 37, 53, 53, 39, 39, 39,
- 39, 42, 42, 44, 40, 40, 41, 45, 45, 121, 121, 43, 122, 122, 95, 95, 29, 29, 29, 29, 29, 29, 29, 29, 29,
- 87, 54, 54, 54, 54, 30, 59, 59, 58, 58, 58, 60, 60, 55, 55, 96, 96, 47, 47, 61, 61, 61, 49, 49, 49, 50,
- 51, 51, 51, 52, 52, 52, 52, 67, 67, 32, 32, 34, 98, 97, 97, 97, 97, 88, 99, 100, 100, 101, 101, 102,
- 102, 123, 123, 124, 124, 125, 125, 125, 125, 127, 127, 126, 126, 126, 128, 129, 129, 89, 89, 2, 2, 2, 6,
- 6, 6, 6, 6, 6, 23, 23, 25, 25, 26, 26, 103, 103, 103, 107, 130, 130, 130, 130, 130, 130, 130, 112, 112,
- 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
- 112, 131, 131, 1, 1263, 17, 21, 18, 443, 1260, 45, 524, 486, 295, 578, 542, 1064, 730, 1163, 1105, 1221,
- 1190, 75, 92, 76, 430, 136, 214, 327, 328, 525, 20, 17, 21, 18, 443, 43, 44, 138, 135, 137, 161, 618,
- 20, 17, 21, 18, 443, 43, 45, 524, 486, 838, 578, 542, 1064, 730, 1163, 1695, 140, 167, 551, 28, 123,
- 1701, 6, 144, 147, 150, 153, 277, 439, 39, 397, 40, 1676, 65, 441, 1473, 1397, 1524, 1553, 1587, 1229,
- 556, 20, 17, 21, 18, 443, 1260, 45, 524, 486, 428, 578, 542, 1064, 730, 1163, 1105, 1221, 1190, 75, 282,
- 232, 618, 20, 17, 21, 18, 443, 43, 45, 1268, 1747, 283, 132, 1701, 66, 347, 20, 17, 21, 18, 443, 1260,
- 45, 524, 486, 428, 578, 542, 1064, 730, 1163, 1105, 1221, 1190, 75, 282, 225, 180, 492, 219, 1617, 222,
- 1746, 224, 225, 230, 288, 283, 657, 1701, 1759, 32, 59, 1875, 830, 1862, 1425, 294, 391, 136, 214, 327,
- 328, 133, 768, 151, 88, 289, 329, 316, 64, 138, 135, 137, 161, 799, 1256, 256, 214, 327, 328, 1702, 290,
- 200, 201, 649, 20, 17, 21, 18, 443, 325, 140, 167, 276, 28, 28, 1701, 1701, 144, 147, 150, 153, 291,
- 439, 1774, 142, 28, 32, 1701, 284, 1473, 1397, 1524, 1553, 1587, 1229, 587, 20, 17, 21, 18, 443, 1260,
- 45, 524, 486, 380, 578, 542, 1064, 730, 1163, 1105, 1221, 1190, 75, 282, 1673, 618, 20, 17, 21, 18, 443,
- 43, 45, 524, 486, 283, 1307, 1701, 281, 20, 17, 21, 18, 443, 1260, 45, 524, 486, 1794, 578, 542, 1064,
- 730, 1163, 1105, 1221, 1190, 75, 736, 235, 240, 618, 20, 17, 21, 18, 443, 43, 45, 1280, 292, 618, 20,
- 17, 21, 18, 443, 1260, 45, 524, 486, 22, 578, 542, 1064, 730, 1163, 1105, 1221, 1190, 75, 92, 804, 20,
- 17, 21, 18, 443, 1260, 45, 524, 486, 1806, 578, 542, 1064, 730, 1163, 1105, 1221, 1190, 75, 1593, 461,
- 20, 17, 21, 18, 443, 43, 45, 524, 486, 982, 578, 542, 1064, 730, 1163, 1105, 1221, 1190, 94, 243, 188,
- 335, 618, 20, 17, 21, 18, 443, 43, 40, 53, 441, 256, 214, 327, 328, 235, 314, 20, 17, 21, 18, 443, 1260,
- 45, 524, 486, 1614, 578, 542, 1064, 730, 1163, 1105, 1221, 1190, 75, 1674, 242, 241, 618, 20, 17, 21,
- 18, 443, 1260, 45, 524, 486, 838, 578, 542, 1064, 730, 1163, 1105, 1221, 1190, 75, 93, 618, 20, 17, 21,
- 18, 443, 1260, 45, 524, 486, 19, 578, 542, 1064, 730, 1163, 1105, 1221, 1190, 75, 86, 618, 20, 17, 21,
- 18, 443, 1260, 45, 524, 486, 838, 578, 542, 1064, 730, 1163, 1105, 1221, 1190, 75, 85, 618, 20, 17, 21,
- 18, 443, 1260, 45, 524, 486, 535, 578, 542, 1064, 730, 1163, 1105, 1221, 1190, 75, 84, 618, 20, 17, 21,
- 18, 443, 1260, 45, 524, 486, 838, 578, 542, 1064, 730, 1163, 1105, 1221, 1190, 75, 83, 618, 20, 17, 21,
- 18, 443, 1260, 45, 524, 486, 536, 578, 542, 1064, 730, 1163, 1105, 1221, 1190, 75, 82, 618, 20, 17, 21,
- 18, 443, 1260, 45, 524, 486, 838, 578, 542, 1064, 730, 1163, 1105, 1221, 1190, 75, 81, 618, 20, 17, 21,
- 18, 443, 1260, 45, 524, 486, 547, 578, 542, 1064, 730, 1163, 1105, 1221, 1190, 75, 80, 618, 20, 17, 21,
- 18, 443, 1260, 45, 524, 486, 838, 578, 542, 1064, 730, 1163, 1105, 1221, 1190, 75, 79, 618, 20, 17, 21,
- 18, 443, 1260, 45, 524, 486, 1257, 578, 542, 1064, 730, 1163, 1105, 1221, 1190, 75, 78, 618, 20, 17, 21,
- 18, 443, 1260, 45, 524, 486, 838, 578, 542, 1064, 730, 1163, 1105, 1221, 1190, 75, 77, 618, 20, 17, 21,
- 18, 443, 1260, 45, 524, 486, 1322, 578, 542, 1064, 730, 1163, 1105, 1221, 1190, 75, 76, 618, 20, 17, 21,
- 18, 443, 1260, 45, 524, 486, 838, 578, 542, 1064, 730, 1163, 1105, 1221, 1190, 75, 74, 618, 20, 17, 21,
- 18, 443, 1260, 45, 524, 486, 23, 578, 542, 1064, 730, 1163, 1105, 1221, 1190, 75, 1833, 618, 20, 17, 21,
- 18, 443, 1260, 45, 524, 486, 171, 578, 542, 1064, 730, 1163, 1105, 1221, 1190, 75, 1835, 618, 20, 17,
- 21, 18, 443, 43, 45, 524, 486, 736, 578, 542, 1064, 730, 1163, 1105, 1221, 1190, 94, 618, 20, 17, 21,
- 18, 443, 43, 45, 524, 486, 333, 578, 542, 1064, 730, 1163, 1105, 1221, 1190, 94, 1727, 680, 20, 17, 21,
- 18, 443, 323, 1854, 220, 1617, 222, 1746, 224, 225, 230, 243, 187, 618, 20, 17, 21, 18, 443, 43, 45,
- 524, 486, 213, 578, 542, 1064, 730, 1163, 1105, 1221, 1190, 94, 618, 20, 17, 21, 18, 443, 43, 45, 524,
- 486, 613, 578, 542, 1064, 730, 1163, 1105, 1221, 1190, 94, 618, 20, 17, 21, 18, 443, 43, 39, 1864, 618,
- 20, 17, 21, 18, 443, 43, 38, 176, 618, 20, 17, 21, 18, 443, 43, 45, 524, 486, 203, 578, 542, 1064, 730,
- 1163, 1105, 1221, 1190, 94, 618, 20, 17, 21, 18, 443, 43, 45, 524, 486, 238, 578, 542, 1064, 730, 1163,
- 1105, 1686, 225, 180, 618, 20, 17, 21, 18, 443, 43, 37, 204, 618, 20, 17, 21, 18, 443, 43, 45, 524, 486,
- 380, 1375, 136, 214, 327, 328, 654, 854, 385, 1019, 885, 243, 31, 835, 139, 135, 137, 161, 81, 1741,
- 618, 20, 17, 21, 18, 443, 43, 45, 524, 486, 115, 578, 542, 1064, 1647, 141, 167, 277, 275, 28, 1002,
- 1701, 145, 148, 151, 154, 979, 439, 219, 1617, 222, 1746, 224, 225, 230, 325, 1677, 341, 268, 1258, 537,
- 273, 264, 256, 214, 327, 328, 278, 1814, 1417, 265, 838, 886, 188, 1752, 275, 618, 20, 17, 21, 18, 443,
- 43, 36, 25, 219, 1617, 222, 1746, 224, 225, 230, 274, 232, 1323, 268, 1258, 537, 273, 1845, 1030, 243,
- 31, 1747, 28, 262, 1701, 1321, 618, 20, 17, 21, 18, 443, 43, 45, 524, 486, 6, 578, 542, 1064, 730, 1635,
- 719, 400, 243, 1784, 451, 275, 1727, 480, 219, 1617, 222, 1746, 224, 225, 230, 220, 1617, 222, 1746,
- 224, 225, 230, 1875, 864, 838, 270, 1258, 537, 273, 618, 20, 17, 21, 18, 443, 43, 45, 524, 486, 511,
- 578, 542, 1566, 243, 189, 280, 136, 214, 327, 328, 24, 583, 199, 201, 243, 297, 32, 80, 146, 135, 137,
- 161, 1837, 618, 20, 17, 21, 18, 443, 43, 45, 524, 486, 211, 578, 1616, 618, 20, 17, 21, 18, 443, 43, 45,
- 524, 486, 1799, 578, 1634, 618, 20, 17, 21, 18, 443, 43, 45, 524, 486, 378, 1381, 618, 20, 17, 21, 18,
- 443, 43, 45, 524, 486, 632, 1413, 618, 20, 17, 21, 18, 443, 43, 35, 1343, 136, 214, 327, 328, 430, 20,
- 17, 21, 18, 443, 43, 36, 143, 135, 137, 161, 618, 20, 17, 21, 18, 443, 43, 45, 524, 1431, 247, 358, 881,
- 243, 299, 295, 249, 142, 167, 618, 20, 17, 21, 18, 443, 43, 45, 524, 1528, 674, 883, 838, 883, 6, 848,
- 136, 214, 327, 328, 1747, 1836, 909, 1783, 1788, 1670, 196, 661, 149, 135, 137, 161, 279, 281, 232, 193,
- 278, 711, 20, 17, 21, 18, 443, 321, 275, 136, 214, 327, 328, 219, 1617, 222, 1746, 224, 225, 230, 926,
- 152, 135, 137, 161, 1131, 235, 1845, 268, 1258, 537, 273, 430, 20, 17, 21, 18, 443, 43, 36, 1321, 880,
- 6, 136, 214, 327, 328, 235, 244, 70, 599, 523, 1678, 1842, 334, 155, 135, 137, 161, 430, 20, 17, 21, 18,
- 443, 43, 36, 120, 706, 333, 275, 618, 20, 17, 21, 18, 443, 43, 48, 229, 200, 248, 618, 20, 17, 21, 18,
- 443, 43, 47, 268, 1258, 537, 273, 618, 20, 17, 21, 18, 443, 43, 46, 267, 924, 601, 113, 974, 235, 6,
- 518, 924, 441, 1784, 508, 508, 508, 1848, 20, 657, 487, 508, 742, 20, 17, 21, 18, 443, 41, 550, 243,
- 1259, 1259, 198, 1702, 912, 175, 88, 1259, 1485, 645, 1702, 773, 20, 17, 21, 18, 443, 34, 773, 20, 17,
- 21, 18, 443, 33, 285, 6, 1774, 260, 261, 391, 1398, 6, 1740, 1350, 260, 370, 6, 1398, 518, 1740, 340,
- 657, 486, 32, 194, 6, 370, 6, 386, 32, 657, 210, 198, 88, 930, 1839, 770, 370, 1608, 88, 6, 957, 1684,
- 198, 88, 1558, 1850, 770, 90, 1608, 370, 6, 419, 1702, 198, 88, 925, 228, 770, 1702, 1608, 370, 6, 812,
- 181, 247, 716, 198, 88, 661, 57, 770, 370, 1608, 854, 508, 382, 1350, 198, 88, 508, 978, 770, 1085,
- 1608, 275, 1727, 896, 382, 198, 88, 1859, 1259, 770, 6, 1608, 518, 198, 938, 255, 214, 327, 328, 1485,
- 1834, 270, 1258, 537, 273, 980, 1022, 255, 214, 327, 328, 235, 169, 235, 539, 1006, 260, 441, 1784,
- 1847, 518, 1740, 508, 838, 508, 838, 382, 1852, 723, 518, 518, 526, 235, 245, 192, 246, 193, 382, 484,
- 198, 747, 1259, 235, 526, 226, 1485, 231, 1736, 1672, 255, 214, 327, 328, 449, 296, 235, 1856, 373,
- 1940, 737, 255, 214, 327, 328, 298, 1940, 205, 1940, 1940, 260, 1940, 1033, 1543, 1940, 1740, 182, 206,
- 1940, 1940, 1940, 1940, 1940, 193, 1940, 1940, 709, 1940, 195, 210, 1940, 1940, 1940, 1940, 1851, 1672,
- 1940, 1290, 1940, 1940, 1940, 1940, 1940, 1787, 1850, 1940, 0, 330, 699, 0, 20, 180, 0, 1, 2167, 0, 1,
- 2178, 0 };
- }
-
- public final static char baseAction[] = BaseAction.baseAction;
-
- @Override
- public final int baseAction(int index) {
- return baseAction[index];
- }
-
- public final static char lhs[] = baseAction;
-
- @Override
- public final int lhs(int index) {
- return lhs[index];
- }
-
- public interface TermCheck {
- public final static byte termCheck[] = { 0, 0, 1, 2, 3, 4, 0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 0,
- 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 0, 32, 33, 34, 35, 36, 37, 0, 0, 40, 41, 42, 43, 44, 45, 46,
- 47, 48, 49, 50, 51, 0, 53, 54, 55, 0, 1, 0, 3, 8, 5, 4, 0, 0, 0, 2, 11, 12, 0, 14, 6, 7, 9, 10, 0, 1,
- 38, 3, 0, 0, 25, 26, 27, 4, 6, 7, 68, 32, 33, 34, 35, 36, 37, 19, 31, 40, 41, 42, 43, 44, 45, 46, 47,
- 48, 49, 50, 51, 52, 53, 54, 55, 0, 1, 0, 3, 60, 5, 4, 0, 62, 63, 0, 11, 12, 61, 14, 64, 65, 66, 67, 0,
- 0, 64, 65, 66, 67, 25, 26, 27, 76, 0, 62, 63, 32, 33, 34, 35, 36, 37, 0, 19, 40, 41, 42, 43, 44, 45, 46,
- 47, 48, 49, 50, 51, 52, 53, 54, 55, 0, 1, 0, 3, 60, 5, 0, 0, 62, 63, 4, 11, 12, 31, 14, 64, 65, 66, 67,
- 0, 1, 0, 3, 0, 0, 25, 26, 27, 5, 56, 57, 0, 32, 33, 34, 35, 36, 37, 19, 8, 40, 41, 42, 43, 44, 45, 46,
- 47, 48, 49, 50, 51, 52, 53, 54, 55, 0, 1, 0, 3, 60, 38, 39, 0, 1, 2, 0, 11, 12, 0, 14, 5, 70, 71, 0, 1,
- 0, 3, 0, 1, 0, 25, 26, 27, 77, 78, 6, 7, 32, 33, 34, 35, 36, 37, 70, 71, 40, 41, 42, 43, 44, 45, 46, 47,
- 48, 49, 50, 51, 0, 53, 54, 55, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0, 58, 13, 0, 15, 16, 17, 18, 68, 20,
- 21, 22, 23, 24, 59, 0, 31, 28, 29, 30, 74, 32, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0, 1, 13, 3, 15, 16,
- 17, 18, 0, 20, 21, 22, 23, 24, 58, 0, 0, 28, 29, 30, 5, 32, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0, 1, 13,
- 3, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 58, 0, 1, 28, 29, 30, 0, 39, 0, 1, 0, 3, 89, 0, 0, 2, 2, 11,
- 12, 0, 14, 11, 12, 4, 14, 56, 57, 52, 0, 0, 0, 25, 26, 27, 73, 25, 26, 27, 32, 33, 34, 35, 36, 37, 31,
- 31, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0, 1, 13, 3, 15,
- 16, 17, 18, 0, 20, 21, 22, 23, 24, 0, 56, 57, 28, 29, 30, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0, 1, 13, 3,
- 15, 16, 17, 18, 0, 20, 21, 22, 23, 24, 0, 0, 58, 28, 29, 30, 0, 1, 2, 3, 4, 0, 6, 7, 8, 9, 10, 0, 0, 13,
- 0, 15, 16, 17, 18, 0, 20, 21, 22, 23, 24, 68, 0, 58, 28, 29, 30, 5, 38, 0, 1, 2, 3, 4, 0, 6, 7, 8, 9,
- 10, 56, 57, 13, 0, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 0, 60, 28, 29, 30, 0, 1, 2, 3, 4, 74, 6,
- 7, 8, 9, 10, 56, 57, 13, 52, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 31, 0, 28, 29, 30, 0, 1, 2, 3,
- 4, 0, 6, 7, 8, 9, 10, 59, 0, 13, 0, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 61, 0, 31, 28, 29, 30, 0, 1,
- 2, 3, 4, 73, 6, 7, 8, 9, 10, 0, 31, 13, 0, 15, 16, 17, 18, 5, 20, 21, 22, 23, 24, 0, 61, 0, 28, 29, 30,
- 0, 1, 2, 3, 4, 0, 6, 7, 8, 9, 10, 59, 0, 13, 0, 15, 16, 17, 18, 0, 20, 21, 22, 23, 24, 0, 1, 2, 28, 29,
- 30, 0, 1, 2, 3, 4, 72, 6, 7, 8, 9, 10, 0, 38, 13, 0, 15, 16, 17, 18, 38, 20, 21, 22, 23, 24, 0, 0, 75,
- 28, 29, 30, 0, 1, 2, 3, 4, 0, 6, 7, 8, 9, 10, 0, 0, 13, 0, 15, 16, 17, 18, 0, 20, 21, 22, 23, 24, 0, 1,
- 2, 28, 29, 30, 0, 1, 2, 3, 4, 0, 6, 7, 8, 9, 10, 0, 0, 13, 0, 15, 16, 17, 18, 38, 20, 21, 22, 23, 24, 0,
- 0, 0, 28, 29, 30, 0, 1, 2, 3, 4, 72, 6, 7, 8, 9, 10, 0, 69, 13, 19, 15, 16, 17, 18, 0, 20, 21, 22, 23,
- 24, 0, 0, 0, 28, 29, 30, 0, 1, 2, 3, 4, 0, 6, 7, 8, 9, 10, 0, 69, 13, 19, 15, 16, 17, 18, 0, 20, 21, 22,
- 23, 24, 0, 0, 0, 28, 29, 30, 0, 0, 2, 0, 4, 5, 11, 12, 5, 14, 0, 11, 12, 0, 14, 2, 0, 0, 5, 0, 25, 26,
- 27, 0, 0, 25, 26, 27, 5, 0, 0, 31, 32, 33, 34, 35, 36, 37, 19, 39, 11, 12, 39, 14, 31, 0, 0, 2, 0, 4, 0,
- 0, 39, 5, 25, 26, 27, 11, 12, 0, 14, 32, 33, 34, 35, 36, 37, 0, 0, 0, 19, 25, 26, 27, 0, 52, 31, 0, 32,
- 33, 34, 35, 36, 37, 0, 11, 12, 39, 14, 0, 0, 0, 2, 4, 4, 0, 19, 0, 0, 25, 26, 27, 11, 12, 0, 14, 32, 33,
- 34, 35, 36, 37, 0, 0, 19, 0, 25, 26, 27, 69, 0, 31, 0, 32, 33, 34, 35, 36, 37, 79, 80, 81, 82, 83, 84,
- 85, 86, 87, 88, 0, 0, 19, 0, 0, 0, 1, 2, 0, 59, 5, 11, 12, 0, 14, 11, 12, 0, 14, 11, 12, 0, 14, 0, 0,
- 25, 26, 27, 0, 25, 26, 27, 0, 25, 26, 27, 31, 5, 0, 11, 12, 0, 14, 19, 39, 0, 1, 2, 0, 4, 0, 0, 0, 25,
- 26, 27, 0, 1, 2, 0, 4, 0, 0, 0, 0, 0, 0, 19, 0, 19, 38, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static byte termCheck[] = TermCheck.termCheck;
-
- @Override
- public final int termCheck(int index) {
- return termCheck[index];
- }
-
- public interface TermAction {
- public final static char termAction[] = { 0, 1940, 1951, 1723, 1952, 1326, 1, 1231, 1182, 1487, 1715, 1708,
- 2155, 2156, 1688, 2157, 1953, 1954, 1955, 1956, 1940, 1173, 722, 2258, 2259, 2260, 2271, 437, 2272,
- 1568, 1116, 557, 254, 2104, 2105, 2103, 2158, 2106, 2102, 183, 89, 2109, 2114, 2113, 2111, 2112, 2110,
- 2115, 2116, 2108, 2117, 2118, 2119, 65, 1250, 1523, 1305, 1940, 1, 49, 1, 1403, 192, 1661, 60, 32, 52,
- 1738, 1, 1, 62, 1, 647, 473, 1966, 1967, 1940, 1951, 760, 1952, 54, 51, 1, 1, 1, 1661, 647, 473, 1012,
- 1, 1, 1, 1, 1, 1, 1545, 1675, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 192, 1, 1, 1, 1940, 1, 50, 1, 2137,
- 191, 1661, 61, 1649, 1638, 184, 1, 1, 1351, 1, 1475, 1463, 1240, 611, 287, 326, 1475, 1463, 1240, 611,
- 1, 1, 1, 1261, 55, 1649, 1638, 1, 1, 1, 1, 1, 1, 272, 3167, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 191, 1,
- 1, 1, 1940, 1, 63, 1, 2137, 192, 1940, 73, 1649, 1638, 580, 1, 1, 624, 1, 1475, 1463, 1240, 611, 1940,
- 1951, 1940, 1952, 1940, 64, 1, 1, 1, 1946, 1512, 1531, 66, 1, 1, 1, 1, 1, 1, 1609, 1403, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 192, 1, 1, 1, 1940, 1951, 1940, 1952, 2137, 1879, 1945, 1, 2167, 1541, 1940, 2155,
- 2156, 71, 2157, 1944, 1450, 1437, 1940, 1951, 1940, 1952, 1, 1937, 53, 2271, 437, 2272, 1211, 1729, 647,
- 473, 2104, 2105, 2103, 2158, 2106, 2102, 1450, 1437, 2109, 2114, 2113, 2111, 2112, 2110, 2115, 2116,
- 2108, 2117, 2118, 2119, 330, 1250, 1523, 1305, 1, 1951, 1723, 1952, 1500, 1944, 1231, 1182, 1487, 1715,
- 1708, 1940, 1943, 1688, 1940, 1953, 1954, 1955, 1956, 1153, 1173, 722, 2258, 2259, 2260, 2199, 1940,
- 1928, 1568, 1116, 557, 409, 678, 1940, 1951, 1723, 1952, 1626, 1944, 1231, 1182, 1487, 1715, 1708, 186,
- 3307, 1688, 3307, 1953, 1954, 1955, 1956, 69, 1173, 722, 2258, 2259, 2260, 1943, 1, 59, 1568, 1116, 557,
- 91, 1054, 1, 1951, 1723, 1952, 1326, 29, 1231, 1182, 1487, 1715, 1708, 185, 3331, 1688, 3331, 1953,
- 1954, 1955, 1956, 3167, 1173, 722, 2258, 2259, 2260, 1943, 1940, 2179, 1568, 1116, 557, 130, 91, 207,
- 3333, 1940, 3333, 1927, 271, 223, 1542, 1544, 2155, 2156, 1940, 2157, 2155, 2156, 1430, 2157, 1512,
- 1531, 29, 58, 1940, 1940, 2271, 437, 2272, 1358, 2271, 437, 2272, 2104, 2105, 2103, 2158, 2106, 2102,
- 624, 624, 2109, 2114, 2113, 2111, 2112, 2110, 2115, 2116, 2108, 2117, 2118, 2119, 1940, 1951, 1723,
- 1952, 1326, 1944, 1231, 1182, 1487, 1715, 1708, 209, 1951, 1688, 1952, 1953, 1954, 1955, 1956, 202,
- 1173, 722, 2258, 2259, 2260, 1940, 1512, 1531, 1568, 1116, 557, 1940, 1951, 1723, 1952, 1599, 1944,
- 1231, 1182, 1487, 1715, 1708, 208, 1376, 1688, 1376, 1953, 1954, 1955, 1956, 57, 1173, 722, 2258, 2259,
- 2260, 257, 72, 1943, 1568, 1116, 557, 1940, 1, 1, 1, 1, 1940, 1, 1, 1, 1, 1, 1940, 1940, 1, 1940, 1, 1,
- 1, 1, 56, 1, 1, 1, 1, 1, 1191, 1940, 1943, 1, 1, 1, 1948, 1671, 1940, 1951, 1723, 1952, 1326, 1940,
- 1231, 1182, 1487, 1715, 1708, 1512, 1531, 1688, 1, 1953, 1954, 1955, 1956, 3167, 1173, 722, 2258, 2259,
- 2260, 70, 1940, 2257, 1568, 1116, 557, 1, 1951, 1723, 1952, 1326, 409, 1231, 1182, 1487, 1715, 1708,
- 1512, 1531, 1688, 1947, 1953, 1954, 1955, 1956, 3167, 1173, 722, 2258, 2259, 2260, 1940, 1075, 293,
- 1568, 1116, 557, 1940, 1951, 1723, 1952, 1326, 1940, 1231, 1182, 1487, 1715, 1708, 2199, 221, 1688, 1,
- 1953, 1954, 1955, 1956, 3167, 1173, 722, 2258, 2259, 2260, 1428, 67, 1133, 1568, 1116, 557, 1940, 1951,
- 1723, 1952, 1326, 1358, 1231, 1182, 1487, 1715, 1708, 1940, 624, 1688, 1, 1953, 1954, 1955, 1956, 1950,
- 1173, 722, 2258, 2259, 2260, 1940, 1525, 1940, 1568, 1116, 557, 1940, 1951, 1734, 1952, 1326, 30, 1231,
- 1182, 1487, 1715, 1708, 2198, 30, 1688, 1940, 1953, 1954, 1955, 1956, 1940, 1173, 722, 2258, 2259, 2260,
- 1, 2167, 1541, 1568, 1116, 557, 1940, 1951, 1745, 1952, 1326, 1270, 1231, 1182, 1487, 1715, 1708, 1940,
- 487, 1688, 1940, 1953, 1954, 1955, 1956, 1969, 1173, 722, 2258, 2259, 2260, 1940, 68, 1949, 1568, 1116,
- 557, 1940, 1951, 1758, 1952, 1326, 212, 1231, 1182, 1487, 1715, 1708, 1940, 208, 1688, 1940, 1953, 1954,
- 1955, 1956, 1940, 1173, 722, 2258, 2259, 2260, 254, 2167, 1541, 1568, 1116, 557, 1940, 1951, 1769, 1952,
- 1326, 1940, 1231, 1182, 1487, 1715, 1708, 1940, 1940, 1688, 1940, 1953, 1954, 1955, 1956, 2781, 1173,
- 722, 2258, 2259, 2260, 1940, 324, 1940, 1568, 1116, 557, 1940, 1951, 1780, 1952, 1326, 1270, 1231, 1182,
- 1487, 1715, 1708, 1940, 1095, 1688, 3167, 1953, 1954, 1955, 1956, 1940, 1173, 722, 2258, 2259, 2260,
- 1940, 322, 1940, 1568, 1116, 557, 1, 1951, 1723, 1952, 1326, 1940, 1231, 1182, 1487, 1715, 1708, 1940,
- 589, 1688, 3167, 1953, 1954, 1955, 1956, 1940, 1173, 722, 2258, 2259, 2260, 1940, 249, 1940, 1568, 1116,
- 557, 20, 1940, 1931, 1940, 1931, 1931, 2155, 2156, 1946, 2157, 1940, 180, 180, 1, 180, 1546, 1940, 1940,
- 1946, 42, 2271, 437, 2272, 286, 1940, 180, 180, 180, 432, 131, 1940, 1931, 180, 180, 180, 180, 180, 180,
- 3167, 1931, 2155, 2156, 1945, 2157, 624, 266, 132, 1546, 1, 1, 43, 1940, 1945, 1946, 2271, 437, 2272,
- 2155, 2156, 1940, 2157, 2104, 2105, 2103, 2158, 2106, 2102, 1940, 1940, 1940, 3167, 2271, 437, 2272,
- 133, 432, 624, 1940, 2104, 2105, 2103, 2158, 2106, 2102, 1940, 2155, 2156, 1945, 2157, 1, 269, 134,
- 1546, 254, 254, 1940, 1368, 1940, 1940, 2271, 437, 2272, 2155, 2156, 1940, 2157, 2104, 2105, 2103, 2158,
- 2106, 2102, 1940, 1940, 1743, 1940, 2271, 437, 2272, 991, 1940, 624, 1940, 2104, 2105, 2103, 2158, 2106,
- 2102, 970, 949, 928, 907, 886, 844, 865, 823, 802, 781, 250, 1940, 1812, 1940, 251, 1, 1934, 1296, 252,
- 2199, 1946, 1, 1, 1940, 1, 1, 1, 1940, 1, 2155, 2156, 1940, 2157, 1940, 190, 1, 1, 1, 253, 1, 1, 1,
- 1940, 2271, 437, 2272, 624, 1950, 1940, 2155, 2156, 1940, 2157, 186, 1945, 263, 2167, 1296, 190, 1, 190,
- 1940, 1940, 2271, 437, 2272, 269, 2167, 1296, 1940, 254, 1940, 1940, 1940, 1940, 1940, 1940, 185, 1940,
- 207, 472, 1940, 1940, 1940, 1940, 1940, 624, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940,
- 624, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940,
- 1940, 1940, 1940, 1949 };
- }
-
- public final static char termAction[] = TermAction.termAction;
-
- @Override
- public final int termAction(int index) {
- return termAction[index];
- }
-
- public interface Asb {
- public final static char asb[] = { 0, 133, 1, 206, 98, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 60, 10, 80, 77, 84, 82, 90, 88, 92, 91, 94, 93, 66, 206, 10, 10, 10, 10, 10, 418, 418, 459, 206,
- 304, 304, 339, 10, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 304, 304, 304, 304, 304, 304, 102, 109,
- 343, 197, 385, 302, 301, 311, 3, 323, 129, 323, 129, 129, 323, 129, 323, 30, 255, 77, 77, 82, 82, 82,
- 82, 80, 80, 88, 84, 84, 91, 90, 490, 93, 92, 157, 157, 157, 157, 131, 382, 131, 339, 343, 200, 102, 53,
- 230, 304, 427, 388, 230, 129, 418, 418, 129, 418, 206, 382, 107, 343, 331, 53, 102, 229, 197, 304, 337,
- 30, 303, 390, 102, 230, 131, 352, 131, 421, 107, 331, 331, 206, 206, 102, 230, 385, 485, 484, 343, 390,
- 304, 131, 352, 421, 421, 423, 308, 331, 53, 102, 102, 304, 427, 388, 337, 352, 382, 345, 352, 421, 423,
- 492, 423, 382, 105, 495, 418, 206, 307, 53, 331, 390, 352, 347, 423, 382, 206, 418, 60, 109, 102, 418,
- 206, 331, 304, 303, 382, 193, 206, 192, 225, 343, 382, 102, 419, 347, 206, 225 };
- }
-
- public final static char asb[] = Asb.asb;
-
- @Override
- public final int asb(int index) {
- return asb[index];
- }
-
- public interface Asr {
- public final static byte asr[] = { 0, 89, 0, 5, 68, 38, 58, 39, 75, 31, 13, 15, 16, 17, 18, 2, 9, 10, 8, 4, 6,
- 7, 20, 21, 22, 23, 24, 28, 29, 30, 1, 3, 53, 54, 55, 48, 40, 45, 43, 44, 42, 41, 46, 47, 49, 50, 51, 37,
- 34, 32, 33, 36, 35, 11, 12, 14, 26, 25, 27, 0, 31, 2, 61, 76, 9, 10, 69, 79, 80, 81, 82, 83, 85, 84, 86,
- 87, 88, 4, 62, 63, 6, 7, 57, 56, 64, 65, 66, 67, 70, 71, 8, 72, 73, 74, 52, 75, 77, 78, 68, 39, 89, 38,
- 58, 5, 0, 5, 52, 31, 61, 9, 10, 8, 4, 6, 7, 20, 21, 13, 28, 29, 30, 2, 15, 16, 17, 18, 22, 23, 24, 1, 3,
- 19, 0, 13, 15, 16, 17, 18, 1, 3, 2, 9, 10, 8, 4, 6, 7, 20, 21, 22, 23, 24, 28, 29, 30, 60, 0, 8, 4, 6,
- 7, 62, 63, 56, 57, 64, 65, 66, 67, 70, 71, 72, 73, 74, 77, 78, 69, 79, 80, 81, 82, 83, 84, 85, 86, 87,
- 88, 58, 39, 52, 89, 19, 68, 75, 5, 38, 0, 58, 5, 32, 11, 12, 14, 25, 26, 27, 15, 16, 17, 18, 22, 23, 24,
- 3, 9, 10, 8, 6, 7, 20, 21, 13, 28, 29, 30, 4, 2, 1, 0, 32, 58, 5, 9, 10, 8, 4, 6, 7, 20, 21, 13, 28, 29,
- 30, 2, 1, 3, 15, 16, 17, 18, 22, 23, 24, 0, 12, 32, 37, 14, 36, 35, 34, 11, 33, 25, 26, 27, 61, 76, 9,
- 10, 8, 6, 7, 62, 63, 56, 57, 64, 65, 66, 67, 70, 71, 72, 73, 74, 77, 78, 69, 79, 80, 81, 82, 83, 84, 85,
- 86, 87, 88, 4, 2, 31, 38, 39, 5, 0, 69, 31, 61, 0, 48, 40, 45, 43, 44, 42, 41, 46, 47, 49, 50, 51, 68,
- 75, 37, 34, 32, 33, 36, 35, 11, 12, 14, 25, 26, 27, 38, 1, 5, 39, 2, 31, 4, 0, 75, 5, 4, 1, 2, 68, 0,
- 33, 40, 11, 41, 53, 34, 42, 35, 43, 44, 36, 12, 45, 46, 32, 54, 37, 55, 47, 48, 14, 49, 50, 51, 1, 3,
- 25, 26, 27, 60, 5, 52, 0, 4, 2, 31, 39, 5, 33, 40, 11, 41, 53, 34, 42, 35, 43, 44, 36, 12, 45, 46, 32,
- 54, 37, 55, 47, 48, 14, 49, 50, 51, 25, 26, 27, 59, 3, 1, 0, 1, 3, 5, 52, 38, 0, 4, 33, 40, 11, 41, 53,
- 34, 42, 35, 43, 44, 36, 12, 45, 46, 32, 54, 37, 55, 47, 48, 14, 49, 50, 51, 1, 3, 25, 26, 27, 59, 0, 5,
- 39, 13, 15, 16, 17, 18, 1, 3, 2, 9, 10, 8, 4, 6, 7, 20, 21, 22, 23, 24, 28, 29, 30, 0, 2, 5, 38, 39, 75,
- 31, 68, 0, 5, 38, 52, 69, 0 };
- }
-
- public final static byte asr[] = Asr.asr;
-
- @Override
- public final int asr(int index) {
- return asr[index];
- }
-
- public interface Nasb {
- public final static byte nasb[] = { 0, 36, 35, 26, 35, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 35, 105,
- 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 26, 105, 105, 105, 105, 105, 66, 66, 109, 106, 87, 87, 90,
- 1, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 106, 26, 26, 26, 26, 26, 26, 26, 26,
- 26, 26, 26, 26, 26, 87, 87, 87, 87, 87, 87, 48, 9, 39, 46, 89, 44, 44, 58, 17, 59, 19, 59, 62, 62, 59,
- 61, 59, 53, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 10, 10, 10, 10, 10, 73,
- 35, 112, 35, 50, 48, 124, 47, 87, 94, 86, 47, 7, 7, 7, 7, 7, 26, 103, 73, 35, 79, 124, 48, 47, 42, 87,
- 69, 28, 35, 96, 48, 47, 15, 73, 35, 73, 24, 79, 73, 26, 26, 48, 47, 68, 44, 44, 39, 96, 87, 35, 120, 73,
- 7, 64, 13, 73, 124, 48, 48, 87, 94, 86, 75, 73, 103, 83, 99, 7, 64, 35, 35, 103, 23, 35, 7, 26, 81, 124,
- 42, 116, 120, 71, 64, 103, 26, 7, 21, 25, 48, 7, 26, 42, 87, 87, 103, 84, 26, 35, 71, 39, 103, 48, 35,
- 71, 26, 77 };
- }
-
- public final static byte nasb[] = Nasb.nasb;
-
- @Override
- public final int nasb(int index) {
- return nasb[index];
- }
-
- public interface Nasr {
- public final static char nasr[] = { 0, 80, 78, 77, 68, 76, 75, 1, 0, 5, 34, 32, 0, 100, 0, 92, 0, 103, 0, 91, 0,
- 98, 0, 88, 10, 34, 5, 0, 80, 79, 78, 77, 68, 76, 75, 0, 10, 89, 0, 30, 54, 0, 23, 0, 29, 0, 10, 5, 22,
- 0, 5, 10, 0, 68, 63, 64, 65, 66, 56, 35, 0, 94, 69, 0, 62, 0, 73, 0, 21, 51, 50, 42, 40, 10, 0, 51, 50,
- 42, 40, 30, 0, 102, 0, 10, 72, 0, 10, 21, 0, 21, 50, 51, 10, 0, 30, 54, 10, 27, 0, 10, 33, 70, 0, 46, 0,
- 33, 10, 31, 0, 10, 90, 0, 51, 50, 30, 0, 95, 10, 27, 0, 82, 10, 33, 0, 59, 0 };
- }
-
- public final static char nasr[] = Nasr.nasr;
-
- @Override
- public final int nasr(int index) {
- return nasr[index];
- }
-
- public interface TerminalIndex {
- public final static char terminalIndex[] = { 0, 85, 2, 86, 9, 87, 10, 11, 8, 6, 7, 48, 64, 68, 76, 81, 82, 83,
- 84, 3, 12, 13, 93, 94, 95, 96, 97, 98, 100, 101, 102, 1, 69, 44, 55, 60, 63, 72, 42, 90, 47, 52, 56, 61,
- 62, 66, 67, 74, 75, 78, 79, 80, 91, 54, 70, 73, 16, 17, 89, 30, 107, 4, 14, 15, 18, 19, 20, 21, 29, 31,
- 22, 23, 24, 25, 26, 92, 5, 27, 28, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 108, 45, 46, 49, 50, 51, 53,
- 57, 58, 59, 65, 71, 77, 88, 99, 103, 104, 105, 106 };
- }
-
- public final static char terminalIndex[] = TerminalIndex.terminalIndex;
-
- @Override
- public final int terminalIndex(int index) {
- return terminalIndex[index];
- }
-
- public interface NonterminalIndex {
- public final static char nonterminalIndex[] = { 0, 114, 0, 0, 0, 116, 120, 121, 122, 123, 0, 124, 125, 126, 127,
- 128, 129, 130, 131, 0, 132, 111, 110, 142, 0, 0, 0, 135, 0, 163, 0, 115, 119, 154, 0, 141, 0, 0, 0, 159,
- 161, 0, 162, 0, 0, 0, 112, 118, 134, 172, 173, 174, 0, 150, 160, 169, 144, 0, 164, 167, 168, 171, 0,
- 145, 146, 147, 148, 149, 151, 0, 153, 158, 113, 117, 133, 136, 137, 138, 139, 140, 143, 0, 152, 156, 0,
- 0, 157, 166, 176, 109, 0, 0, 0, 155, 0, 165, 170, 175, 0, 177, 178, 0, 179, 180, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static char nonterminalIndex[] = NonterminalIndex.nonterminalIndex;
-
- @Override
- public final int nonterminalIndex(int index) {
- return nonterminalIndex[index];
- }
-
- public interface ScopePrefix {
- public final static char scopePrefix[] = { 120, 151, 130, 59, 69, 159, 26, 186, 35, 87, 105, 75, 6, 12, 16, 40,
- 83, 52, 141, 208, 215, 219, 52, 52, 195, 52, 1, 1, 1, 44, 47, 92, 115, 47, 223, 20, 145, 202, 202, 177,
- 137, 165, 165, 165, 165, 165, 95, 95, 95 };
- }
-
- public final static char scopePrefix[] = ScopePrefix.scopePrefix;
-
- @Override
- public final int scopePrefix(int index) {
- return scopePrefix[index];
- }
-
- public interface ScopeSuffix {
- public final static char scopeSuffix[] = { 128, 128, 128, 4, 4, 128, 32, 192, 10, 4, 10, 80, 10, 10, 10, 10, 4,
- 4, 139, 10, 10, 4, 56, 80, 199, 65, 4, 4, 4, 10, 50, 4, 10, 118, 10, 23, 148, 205, 212, 180, 139, 167,
- 169, 171, 173, 175, 102, 97, 110 };
- }
-
- public final static char scopeSuffix[] = ScopeSuffix.scopeSuffix;
-
- @Override
- public final int scopeSuffix(int index) {
- return scopeSuffix[index];
- }
-
- public interface ScopeLhs {
- public final static char scopeLhs[] = { 65, 63, 65, 29, 29, 63, 32, 111, 52, 29, 45, 29, 6, 6, 6, 52, 29, 29,
- 70, 6, 5, 5, 29, 29, 19, 29, 103, 102, 101, 50, 61, 29, 42, 53, 3, 88, 70, 7, 5, 112, 70, 79, 78, 77,
- 76, 75, 45, 43, 45 };
- }
-
- public final static char scopeLhs[] = ScopeLhs.scopeLhs;
-
- @Override
- public final int scopeLhs(int index) {
- return scopeLhs[index];
- }
-
- public interface ScopeLa {
- public final static byte scopeLa[] = { 52, 52, 52, 58, 58, 52, 52, 95, 39, 58, 39, 15, 39, 39, 39, 39, 58, 58,
- 75, 39, 39, 58, 4, 15, 68, 32, 58, 58, 58, 39, 2, 58, 39, 1, 39, 69, 1, 39, 39, 101, 75, 1, 53, 54, 54,
- 48, 2, 2, 2 };
- }
-
- public final static byte scopeLa[] = ScopeLa.scopeLa;
-
- @Override
- public final int scopeLa(int index) {
- return scopeLa[index];
- }
-
- public interface ScopeStateSet {
- public final static byte scopeStateSet[] = { 29, 29, 29, 33, 33, 29, 19, -1, 37, 33, 9, 33, 44, 44, 44, 37, 33,
- 33, 5, 44, 44, 44, 33, 33, 78, 33, 17, 1, 3, 37, 39, 33, 9, 11, 44, 105, 5, 50, 44, -1, 5, 30, 30, 30,
- 30, 30, 9, 9, 9 };
- }
-
- public final static byte scopeStateSet[] = ScopeStateSet.scopeStateSet;
-
- @Override
- public final int scopeStateSet(int index) {
- return scopeStateSet[index];
- }
-
- public interface ScopeRhs {
- public final static char scopeRhs[] = { 0, 155, 31, 0, 110, 0, 154, 2, 30, 0, 111, 0, 154, 2, 29, 0, 154, 2, 28,
- 0, 206, 117, 0, 31, 149, 0, 169, 204, 117, 19, 141, 0, 112, 0, 0, 165, 117, 2, 157, 0, 165, 117, 2, 0,
- 168, 2, 0, 161, 117, 0, 172, 0, 194, 117, 31, 0, 9, 110, 0, 127, 32, 194, 117, 31, 0, 69, 132, 110, 0,
- 127, 194, 117, 32, 31, 0, 194, 117, 32, 31, 0, 132, 110, 0, 127, 32, 31, 0, 127, 194, 117, 31, 0, 127,
- 31, 0, 149, 0, 2, 0, 165, 111, 0, 2, 111, 0, 165, 117, 2, 149, 0, 2, 0, 164, 111, 0, 160, 2, 0, 159, 0,
- 169, 192, 117, 19, 108, 201, 53, 0, 112, 0, 169, 192, 117, 19, 201, 53, 0, 140, 0, 113, 0, 200, 117,
- 140, 0, 117, 140, 0, 155, 113, 0, 188, 117, 19, 199, 108, 198, 175, 0, 188, 117, 19, 198, 175, 0, 187,
- 0, 148, 0, 147, 0, 146, 0, 145, 0, 144, 0, 214, 94, 0, 77, 2, 115, 111, 113, 0, 214, 128, 138, 2, 98, 0,
- 53, 0, 0, 138, 78, 125, 0, 29, 132, 0, 154, 2, 0, 111, 121, 0, 154, 2, 13, 0, 111, 119, 0, 197, 2, 112,
- 0, 138, 31, 112, 0, 138, 2, 0 };
- }
-
- public final static char scopeRhs[] = ScopeRhs.scopeRhs;
-
- @Override
- public final int scopeRhs(int index) {
- return scopeRhs[index];
- }
-
- public interface ScopeState {
- public final static char scopeState[] = { 0, 1425, 0, 428, 0, 1834, 1672, 1788, 0, 1085, 1350, 472, 1541, 1343,
- 1296, 1259, 0, 437, 0, 589, 487, 451, 1322, 1257, 547, 536, 535, 397, 0, 1229, 508, 370, 0, 1746, 1617,
- 1258, 537, 1350, 1774, 1296, 1259, 1546, 1608, 0, 1715, 1708, 1688, 1568, 1116, 557, 1626, 1599, 1500,
- 397, 409, 1211, 1270, 1358, 1450, 1437, 1403, 1531, 1512, 1475, 1463, 1240, 611, 1661, 1649, 1638, 647,
- 473, 1487, 1326, 1231, 1182, 1173, 722, 1191, 1153, 1133, 589, 1095, 1075, 1054, 1033, 737, 1012, 699,
- 678, 624, 991, 970, 949, 928, 907, 886, 865, 844, 823, 802, 781, 370, 760, 657, 487, 451, 0 };
- }
-
- public final static char scopeState[] = ScopeState.scopeState;
-
- @Override
- public final int scopeState(int index) {
- return scopeState[index];
- }
-
- public interface InSymb {
- public final static char inSymb[] = { 0, 0, 196, 117, 181, 30, 29, 28, 13, 21, 20, 7, 6, 4, 8, 10, 9, 112, 2,
- 116, 115, 119, 118, 121, 120, 123, 122, 125, 124, 113, 38, 2, 2, 2, 2, 2, 76, 61, 2, 31, 154, 138, 140,
- 117, 7, 6, 63, 62, 4, 67, 66, 65, 64, 56, 57, 8, 71, 70, 73, 72, 78, 77, 74, 88, 87, 86, 84, 85, 83, 82,
- 81, 80, 79, 69, 154, 154, 154, 154, 154, 197, 138, 128, 117, 31, 2, 158, 157, 182, 26, 183, 175, 184,
- 55, 54, 185, 53, 186, 187, 108, 115, 115, 118, 118, 118, 118, 116, 116, 120, 119, 119, 122, 121, 138,
- 124, 123, 128, 128, 128, 128, 128, 19, 141, 161, 137, 32, 127, 117, 4, 168, 117, 2, 31, 198, 176, 176,
- 201, 176, 68, 117, 19, 137, 4, 117, 127, 194, 166, 165, 134, 117, 167, 117, 155, 4, 108, 19, 108, 19,
- 117, 4, 137, 194, 32, 127, 4, 2, 147, 149, 117, 38, 165, 199, 117, 19, 117, 204, 117, 137, 117, 127,
- 127, 160, 117, 2, 161, 19, 188, 140, 189, 117, 192, 108, 193, 169, 38, 206, 61, 31, 207, 117, 166, 117,
- 117, 117, 192, 169, 69, 38, 153, 69, 155, 61, 31, 166, 165, 202, 188, 200, 68, 160, 2, 117, 169, 155,
- 38, 38, 68, 161 };
- }
-
- public final static char inSymb[] = InSymb.inSymb;
-
- @Override
- public final int inSymb(int index) {
- return inSymb[index];
- }
-
- public interface Name {
- public final static String name[] = { "", "[", "(", "{", ".", "->", "++", "--", "&", "*", "+", "-", "~", "!",
- "/", "%", ">>", "<<", "<", ">", "<=", ">=", "==", "!=", "^", "|", "&&", "||", "?", ":", "...", "=",
- "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", ",", "$empty", "auto", "break", "case",
- "char", "const", "continue", "default", "do", "double", "else", "enum", "extern", "float", "for",
- "goto", "if", "inline", "int", "long", "register", "restrict", "return", "short", "signed", "sizeof",
- "static", "struct", "switch", "typedef", "union", "unsigned", "void", "volatile", "while", "_Bool",
- "_Complex", "_Imaginary", "integer", "floating", "charconst", "stringlit", "identifier", "Completion",
- "EndOfCompletion", "Invalid", "RightBracket", "RightParen", "RightBrace", "SemiColon", "MYTHREAD",
- "THREADS", "UPC_MAX_BLOCKSIZE", "relaxed", "shared", "strict", "upc_barrier", "upc_localsizeof",
- "upc_blocksizeof", "upc_elemsizeof", "upc_notify", "upc_fence", "upc_wait", "upc_forall", "ERROR_TOKEN",
- "EOF_TOKEN", "expression_parser_start", "]", ")", "}", ";", "identifier_token", "expression",
- "postfix_expression", "member_name", "type_id", "initializer_list", "unary_expression",
- "cast_expression", "multiplicative_expression", "additive_expression", "shift_expression",
- "relational_expression", "equality_expression", "and_expression", "exclusive_or_expression",
- "inclusive_or_expression", "logical_and_expression", "logical_or_expression", "assignment_expression",
- "expression_list_actual", "constant_expression", "declaration_specifiers",
- "simple_declaration_specifiers", "struct_or_union_declaration_sp" + "ecifiers",
- "elaborated_declaration_specifi" + "ers", "enum_declaration_specifiers",
- "typdef_name_declaration_specif" + "iers", "no_type_declaration_specifier", "type_qualifier",
- "no_type_declaration_specifiers", "simple_type_specifier", "struct_or_union_specifier",
- "elaborated_specifier", "enum_specifier", "type_name_specifier", "initializer", "declarator",
- "struct_or_union", "struct_declaration_list", "struct_declaration", "specifier_qualifier_list",
- "struct_declarator_list", "complete_struct_declarator", "enumerator_list", "enumerator",
- "direct_declarator", "pointer_seq", "array_direct_declarator", "basic_direct_declarator",
- "array_modifier", "parameter_type_list", "identifier_list", "array_modifier_type_qualifiers",
- "type_qualifier_list", "parameter_list", "parameter_declaration", "complete_parameter_declarator",
- "abstract_declarator", "direct_abstract_declarator", "basic_direct_abstract_declarat" + "or",
- "array_direct_abstract_declarat" + "or", "initializer_seq", "designated_initializer", "designation",
- "designator_list", "designator", "layout_qualifier" };
- }
-
- public final static String name[] = Name.name;
-
- @Override
- public final String name(int index) {
- return name[index];
- }
-
- public final static int ERROR_SYMBOL = 60, SCOPE_UBOUND = 48, SCOPE_SIZE = 49, MAX_NAME_LENGTH = 38;
-
- @Override
- public final int getErrorSymbol() {
- return ERROR_SYMBOL;
- }
-
- @Override
- public final int getScopeUbound() {
- return SCOPE_UBOUND;
- }
-
- @Override
- public final int getScopeSize() {
- return SCOPE_SIZE;
- }
-
- @Override
- public final int getMaxNameLength() {
- return MAX_NAME_LENGTH;
- }
-
- public final static int NUM_STATES = 226, NT_OFFSET = 107, LA_STATE_OFFSET = 2309, MAX_LA = 2, NUM_RULES = 369,
- NUM_NONTERMINALS = 131, NUM_SYMBOLS = 238, SEGMENT_SIZE = 8192, START_STATE = 510, IDENTIFIER_SYMBOL = 0,
- EOFT_SYMBOL = 89, EOLT_SYMBOL = 89, ACCEPT_ACTION = 1927, ERROR_ACTION = 1940;
-
- public final static boolean BACKTRACK = true;
-
- @Override
- public final int getNumStates() {
- return NUM_STATES;
- }
-
- @Override
- public final int getNtOffset() {
- return NT_OFFSET;
- }
-
- @Override
- public final int getLaStateOffset() {
- return LA_STATE_OFFSET;
- }
-
- @Override
- public final int getMaxLa() {
- return MAX_LA;
- }
-
- @Override
- public final int getNumRules() {
- return NUM_RULES;
- }
-
- @Override
- public final int getNumNonterminals() {
- return NUM_NONTERMINALS;
- }
-
- @Override
- public final int getNumSymbols() {
- return NUM_SYMBOLS;
- }
-
- @Override
- public final int getSegmentSize() {
- return SEGMENT_SIZE;
- }
-
- @Override
- public final int getStartState() {
- return START_STATE;
- }
-
- @Override
- public final int getStartSymbol() {
- return lhs[0];
- }
-
- public final int getIdentifierSymbol() {
- return IDENTIFIER_SYMBOL;
- }
-
- @Override
- public final int getEoftSymbol() {
- return EOFT_SYMBOL;
- }
-
- @Override
- public final int getEoltSymbol() {
- return EOLT_SYMBOL;
- }
-
- @Override
- public final int getAcceptAction() {
- return ACCEPT_ACTION;
- }
-
- @Override
- public final int getErrorAction() {
- return ERROR_ACTION;
- }
-
- @Override
- public final boolean isValidForParser() {
- return isValidForParser;
- }
-
- @Override
- public final boolean getBacktrack() {
- return BACKTRACK;
- }
-
- @Override
- public final int originalState(int state) {
- return -baseCheck[state];
- }
-
- @Override
- public final int asi(int state) {
- return asb[originalState(state)];
- }
-
- @Override
- public final int nasi(int state) {
- return nasb[originalState(state)];
- }
-
- @Override
- public final int inSymbol(int state) {
- return inSymb[originalState(state)];
- }
-
- @Override
- public final int ntAction(int state, int sym) {
- return baseAction[state + sym];
- }
-
- @Override
- public final int tAction(int state, int sym) {
- int i = baseAction[state], k = i + sym;
- return termAction[termCheck[k] == sym ? k : i];
- }
-
- @Override
- public final int lookAhead(int la_state, int sym) {
- int k = la_state + sym;
- return termAction[termCheck[k] == sym ? k : la_state];
- }
-}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCExpressionParsersym.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCExpressionParsersym.java
deleted file mode 100644
index 0cb5a646528..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCExpressionParsersym.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2010 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.dom.parser.upc;
-
-public interface UPCExpressionParsersym {
- public final static int TK_auto = 33, TK_break = 90, TK_case = 91, TK_char = 40, TK_const = 11, TK_continue = 92,
- TK_default = 93, TK_do = 94, TK_double = 41, TK_else = 95, TK_enum = 53, TK_extern = 34, TK_float = 42,
- TK_for = 96, TK_goto = 97, TK_if = 98, TK_inline = 35, TK_int = 43, TK_long = 44, TK_register = 36,
- TK_restrict = 12, TK_return = 99, TK_short = 45, TK_signed = 46, TK_sizeof = 13, TK_static = 32,
- TK_struct = 54, TK_switch = 100, TK_typedef = 37, TK_union = 55, TK_unsigned = 47, TK_void = 48,
- TK_volatile = 14, TK_while = 101, TK__Bool = 49, TK__Complex = 50, TK__Imaginary = 51, TK_integer = 15,
- TK_floating = 16, TK_charconst = 17, TK_stringlit = 18, TK_identifier = 1, TK_Completion = 3,
- TK_EndOfCompletion = 5, TK_Invalid = 102, TK_LeftBracket = 31, TK_LeftParen = 2, TK_LeftBrace = 19,
- TK_Dot = 61, TK_Arrow = 76, TK_PlusPlus = 9, TK_MinusMinus = 10, TK_And = 8, TK_Star = 4, TK_Plus = 6,
- TK_Minus = 7, TK_Tilde = 20, TK_Bang = 21, TK_Slash = 62, TK_Percent = 63, TK_RightShift = 56,
- TK_LeftShift = 57, TK_LT = 64, TK_GT = 65, TK_LE = 66, TK_GE = 67, TK_EQ = 70, TK_NE = 71, TK_Caret = 72,
- TK_Or = 73, TK_AndAnd = 74, TK_OrOr = 77, TK_Question = 78, TK_Colon = 68, TK_DotDotDot = 59,
- TK_Assign = 69, TK_StarAssign = 79, TK_SlashAssign = 80, TK_PercentAssign = 81, TK_PlusAssign = 82,
- TK_MinusAssign = 83, TK_RightShiftAssign = 84, TK_LeftShiftAssign = 85, TK_AndAssign = 86,
- TK_CaretAssign = 87, TK_OrAssign = 88, TK_Comma = 38, TK_RightBracket = 58, TK_RightParen = 39,
- TK_RightBrace = 52, TK_SemiColon = 75, TK_MYTHREAD = 22, TK_THREADS = 23, TK_UPC_MAX_BLOCKSIZE = 24,
- TK_relaxed = 25, TK_shared = 26, TK_strict = 27, TK_upc_barrier = 103, TK_upc_localsizeof = 28,
- TK_upc_blocksizeof = 29, TK_upc_elemsizeof = 30, TK_upc_notify = 104, TK_upc_fence = 105, TK_upc_wait = 106,
- TK_upc_forall = 107, TK_ERROR_TOKEN = 60, TK_EOF_TOKEN = 89;
-
- public final static String orderedTerminalSymbols[] = { "", "identifier", "LeftParen", "Completion", "Star",
- "EndOfCompletion", "Plus", "Minus", "And", "PlusPlus", "MinusMinus", "const", "restrict", "sizeof",
- "volatile", "integer", "floating", "charconst", "stringlit", "LeftBrace", "Tilde", "Bang", "MYTHREAD",
- "THREADS", "UPC_MAX_BLOCKSIZE", "relaxed", "shared", "strict", "upc_localsizeof", "upc_blocksizeof",
- "upc_elemsizeof", "LeftBracket", "static", "auto", "extern", "inline", "register", "typedef", "Comma",
- "RightParen", "char", "double", "float", "int", "long", "short", "signed", "unsigned", "void", "_Bool",
- "_Complex", "_Imaginary", "RightBrace", "enum", "struct", "union", "RightShift", "LeftShift",
- "RightBracket", "DotDotDot", "ERROR_TOKEN", "Dot", "Slash", "Percent", "LT", "GT", "LE", "GE", "Colon",
- "Assign", "EQ", "NE", "Caret", "Or", "AndAnd", "SemiColon", "Arrow", "OrOr", "Question", "StarAssign",
- "SlashAssign", "PercentAssign", "PlusAssign", "MinusAssign", "RightShiftAssign", "LeftShiftAssign",
- "AndAssign", "CaretAssign", "OrAssign", "EOF_TOKEN", "break", "case", "continue", "default", "do", "else",
- "for", "goto", "if", "return", "switch", "while", "Invalid", "upc_barrier", "upc_notify", "upc_fence",
- "upc_wait", "upc_forall" };
-
- public final static boolean isValidForParser = true;
-}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCNoCastExpressionParser.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCNoCastExpressionParser.java
deleted file mode 100644
index deadf0d623a..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCNoCastExpressionParser.java
+++ /dev/null
@@ -1,2053 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2011 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.dom.parser.upc;
-
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.cdt.core.dom.ast.IASTBinaryExpression;
-import org.eclipse.cdt.core.dom.ast.IASTCompletionNode;
-import org.eclipse.cdt.core.dom.ast.IASTCompositeTypeSpecifier;
-import org.eclipse.cdt.core.dom.ast.IASTElaboratedTypeSpecifier;
-import org.eclipse.cdt.core.dom.ast.IASTExpression;
-import org.eclipse.cdt.core.dom.ast.IASTLiteralExpression;
-import org.eclipse.cdt.core.dom.ast.IASTTypeIdExpression;
-import org.eclipse.cdt.core.dom.ast.IASTUnaryExpression;
-import org.eclipse.cdt.core.dom.lrparser.CPreprocessorAdapter;
-import org.eclipse.cdt.core.dom.lrparser.IDOMTokenMap;
-import org.eclipse.cdt.core.dom.lrparser.ISecondaryParser;
-import org.eclipse.cdt.core.dom.lrparser.ITokenCollector;
-import org.eclipse.cdt.core.dom.lrparser.action.ITokenMap;
-import org.eclipse.cdt.core.dom.lrparser.action.ITokenStream;
-import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack;
-import org.eclipse.cdt.core.dom.lrparser.action.TokenMap;
-import org.eclipse.cdt.core.dom.lrparser.lpgextensions.FixedBacktrackingParser;
-import org.eclipse.cdt.core.dom.parser.IBuiltinBindingsProvider;
-import org.eclipse.cdt.core.dom.parser.upc.UPCASTNodeFactory;
-import org.eclipse.cdt.core.dom.parser.upc.UPCParserAction;
-import org.eclipse.cdt.core.dom.parser.upc.UPCSecondaryParserFactory;
-import org.eclipse.cdt.core.dom.upc.ast.IUPCASTKeywordExpression;
-import org.eclipse.cdt.core.dom.upc.ast.IUPCASTSynchronizationStatement;
-import org.eclipse.cdt.core.dom.upc.ast.IUPCASTUnarySizeofExpression;
-import org.eclipse.cdt.core.index.IIndex;
-import org.eclipse.cdt.core.parser.IScanner;
-
-import lpg.lpgjavaruntime.BadParseException;
-import lpg.lpgjavaruntime.BadParseSymFileException;
-import lpg.lpgjavaruntime.DiagnoseParser;
-import lpg.lpgjavaruntime.ErrorToken;
-import lpg.lpgjavaruntime.IToken;
-import lpg.lpgjavaruntime.LexStream;
-import lpg.lpgjavaruntime.Monitor;
-import lpg.lpgjavaruntime.NotBacktrackParseTableException;
-import lpg.lpgjavaruntime.NullExportedSymbolsException;
-import lpg.lpgjavaruntime.NullTerminalSymbolsException;
-import lpg.lpgjavaruntime.ParseErrorCodes;
-import lpg.lpgjavaruntime.ParseTable;
-import lpg.lpgjavaruntime.PrsStream;
-import lpg.lpgjavaruntime.RuleAction;
-import lpg.lpgjavaruntime.Token;
-import lpg.lpgjavaruntime.UndefinedEofSymbolException;
-import lpg.lpgjavaruntime.UnimplementedTerminalsException;
-
-public class UPCNoCastExpressionParser extends PrsStream
- implements RuleAction, ITokenStream, ITokenCollector, ISecondaryParser<IASTExpression> {
- private static ParseTable prs = new UPCNoCastExpressionParserprs();
- private FixedBacktrackingParser btParser;
-
- public FixedBacktrackingParser getParser() {
- return btParser;
- }
-
- private void setResult(Object object) {
- btParser.setSym1(object);
- }
-
- public Object getRhsSym(int i) {
- return btParser.getSym(i);
- }
-
- public int getRhsTokenIndex(int i) {
- return btParser.getToken(i);
- }
-
- public IToken getRhsIToken(int i) {
- return super.getIToken(getRhsTokenIndex(i));
- }
-
- public int getRhsFirstTokenIndex(int i) {
- return btParser.getFirstToken(i);
- }
-
- public IToken getRhsFirstIToken(int i) {
- return super.getIToken(getRhsFirstTokenIndex(i));
- }
-
- public int getRhsLastTokenIndex(int i) {
- return btParser.getLastToken(i);
- }
-
- public IToken getRhsLastIToken(int i) {
- return super.getIToken(getRhsLastTokenIndex(i));
- }
-
- public int getLeftSpan() {
- return btParser.getFirstToken();
- }
-
- @Override
- public IToken getLeftIToken() {
- return super.getIToken(getLeftSpan());
- }
-
- public int getRightSpan() {
- return btParser.getLastToken();
- }
-
- @Override
- public IToken getRightIToken() {
- return super.getIToken(getRightSpan());
- }
-
- public int getRhsErrorTokenIndex(int i) {
- int index = btParser.getToken(i);
- IToken err = super.getIToken(index);
- return (err instanceof ErrorToken ? index : 0);
- }
-
- public ErrorToken getRhsErrorIToken(int i) {
- int index = btParser.getToken(i);
- IToken err = super.getIToken(index);
- return (ErrorToken) (err instanceof ErrorToken ? err : null);
- }
-
- public UPCNoCastExpressionParser(LexStream lexStream) {
- super(lexStream);
-
- try {
- super.remapTerminalSymbols(orderedTerminalSymbols(), UPCNoCastExpressionParserprs.EOFT_SYMBOL);
- } catch (NullExportedSymbolsException e) {
- } catch (NullTerminalSymbolsException e) {
- } catch (UnimplementedTerminalsException e) {
- java.util.ArrayList unimplemented_symbols = e.getSymbols();
- System.out.println("The Lexer will not scan the following token(s):");
- for (int i = 0; i < unimplemented_symbols.size(); i++) {
- Integer id = (Integer) unimplemented_symbols.get(i);
- System.out.println(" " + UPCNoCastExpressionParsersym.orderedTerminalSymbols[id.intValue()]);
- }
- System.out.println();
- } catch (UndefinedEofSymbolException e) {
- throw new Error(new UndefinedEofSymbolException("The Lexer does not implement the Eof symbol "
- + UPCNoCastExpressionParsersym.orderedTerminalSymbols[UPCNoCastExpressionParserprs.EOFT_SYMBOL]));
- }
- }
-
- @Override
- public String[] orderedTerminalSymbols() {
- return UPCNoCastExpressionParsersym.orderedTerminalSymbols;
- }
-
- public String getTokenKindName(int kind) {
- return UPCNoCastExpressionParsersym.orderedTerminalSymbols[kind];
- }
-
- public int getEOFTokenKind() {
- return UPCNoCastExpressionParserprs.EOFT_SYMBOL;
- }
-
- public PrsStream getParseStream() {
- return this;
- }
-
- //
- // Report error message for given error_token.
- //
- public final void reportErrorTokenMessage(int error_token, String msg) {
- int firsttok = super.getFirstErrorToken(error_token), lasttok = super.getLastErrorToken(error_token);
- String location = super.getFileName() + ':'
- + (firsttok > lasttok ? (super.getEndLine(lasttok) + ":" + super.getEndColumn(lasttok))
- : (super.getLine(error_token) + ":" + super.getColumn(error_token) + ":"
- + super.getEndLine(error_token) + ":" + super.getEndColumn(error_token)))
- + ": ";
- super.reportError((firsttok > lasttok ? ParseErrorCodes.INSERTION_CODE : ParseErrorCodes.SUBSTITUTION_CODE),
- location, msg);
- }
-
- public void parser() {
- parser(null, 0);
- }
-
- public void parser(Monitor monitor) {
- parser(monitor, 0);
- }
-
- public void parser(int error_repair_count) {
- parser(null, error_repair_count);
- }
-
- public void parser(Monitor monitor, int error_repair_count) {
- try {
- btParser = new FixedBacktrackingParser(monitor, this, prs, this);
- } catch (NotBacktrackParseTableException e) {
- throw new Error(new NotBacktrackParseTableException(
- "Regenerate UPCNoCastExpressionParserprs.java with -BACKTRACK option"));
- } catch (BadParseSymFileException e) {
- throw new Error(
- new BadParseSymFileException("Bad Parser Symbol File -- UPCNoCastExpressionParsersym.java"));
- }
-
- try {
- btParser.parse(error_repair_count);
- } catch (BadParseException e) {
- reset(e.error_token); // point to error token
- DiagnoseParser diagnoseParser = new DiagnoseParser(this, prs);
- diagnoseParser.diagnose(e.error_token);
- }
- }
-
- private UPCParserAction action;
- private IASTCompletionNode compNode;
-
- public UPCNoCastExpressionParser(IScanner scanner, IDOMTokenMap tokenMap,
- IBuiltinBindingsProvider builtinBindingsProvider, IIndex index, Map<String, String> properties) {
- initActions(properties);
- action.initializeTranslationUnit(scanner, builtinBindingsProvider, index);
- CPreprocessorAdapter.runCPreprocessor(scanner, this, tokenMap);
- }
-
- private void initActions(Map<String, String> properties) {
- ScopedStack<Object> astStack = new ScopedStack<>();
-
- action = new UPCParserAction(this, astStack, new UPCASTNodeFactory(), UPCSecondaryParserFactory.getDefault());
- action.setParserProperties(properties);
-
- }
-
- @Override
- public void addToken(IToken token) {
- token.setKind(mapKind(token.getKind())); // TODO does mapKind need to be called?
- super.addToken(token);
- }
-
- @Override
- public IASTExpression parse() {
- // this has to be done, or... kaboom!
- setStreamLength(getSize());
-
- final int errorRepairCount = -1; // -1 means full error handling
- parser(null, errorRepairCount); // do the actual parse
- super.resetTokenStream(); // allow tokens to be garbage collected
-
- compNode = action.getASTCompletionNode(); // the completion node may be null
- return (IASTExpression) action.getParseResult();
- }
-
- @Override
- public IASTCompletionNode getCompletionNode() {
- return compNode;
- }
-
- // uncomment this method to use with backtracking parser
- @Override
- public List<IToken> getRuleTokens() {
- return getTokens().subList(getLeftSpan(), getRightSpan() + 1);
- }
-
- @Override
- public String[] getOrderedTerminalSymbols() {
- return UPCNoCastExpressionParsersym.orderedTerminalSymbols;
- }
-
- @Override
- @SuppressWarnings("nls")
- public String getName() {
- return "UPCNoCastExpressionParser";
- }
-
- private ITokenMap tokenMap = null;
-
- @Override
- public void setTokens(List<IToken> tokens) {
- resetTokenStream();
- addToken(new Token(null, 0, 0, 0)); // dummy token
- for (IToken token : tokens) {
- token.setKind(tokenMap.mapKind(token.getKind()));
- addToken(token);
- }
- addToken(new Token(null, 0, 0, UPCNoCastExpressionParsersym.TK_EOF_TOKEN));
- }
-
- public UPCNoCastExpressionParser(ITokenStream stream, Map<String, String> properties) { // constructor for creating secondary parser
- initActions(properties);
- tokenMap = new TokenMap(UPCNoCastExpressionParsersym.orderedTerminalSymbols,
- stream.getOrderedTerminalSymbols());
- }
-
- @Override
- public void ruleAction(int ruleNumber) {
- switch (ruleNumber) {
-
- //
- // Rule 1: <openscope-ast> ::= $Empty
- //
- case 1: {
- action.openASTScope();
- break;
- }
-
- //
- // Rule 2: <empty> ::= $Empty
- //
- case 2: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 13: literal ::= integer
- //
- case 13: {
- action.consumeExpressionLiteral(IASTLiteralExpression.lk_integer_constant);
- break;
- }
-
- //
- // Rule 14: literal ::= floating
- //
- case 14: {
- action.consumeExpressionLiteral(IASTLiteralExpression.lk_float_constant);
- break;
- }
-
- //
- // Rule 15: literal ::= charconst
- //
- case 15: {
- action.consumeExpressionLiteral(IASTLiteralExpression.lk_char_constant);
- break;
- }
-
- //
- // Rule 16: literal ::= stringlit
- //
- case 16: {
- action.consumeExpressionLiteral(IASTLiteralExpression.lk_string_literal);
- break;
- }
-
- //
- // Rule 18: primary_expression ::= primary_expression_id
- //
- case 18: {
- action.consumeExpressionID();
- break;
- }
-
- //
- // Rule 19: primary_expression ::= ( expression )
- //
- case 19: {
- action.consumeExpressionBracketed();
- break;
- }
-
- //
- // Rule 22: postfix_expression ::= postfix_expression [ expression ]
- //
- case 22: {
- action.consumeExpressionArraySubscript();
- break;
- }
-
- //
- // Rule 23: postfix_expression ::= postfix_expression ( expression_list_opt )
- //
- case 23: {
- action.consumeExpressionFunctionCall();
- break;
- }
-
- //
- // Rule 24: postfix_expression ::= postfix_expression . member_name
- //
- case 24: {
- action.consumeExpressionFieldReference(false);
- break;
- }
-
- //
- // Rule 25: postfix_expression ::= postfix_expression -> member_name
- //
- case 25: {
- action.consumeExpressionFieldReference(true);
- break;
- }
-
- //
- // Rule 26: postfix_expression ::= postfix_expression ++
- //
- case 26: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixIncr);
- break;
- }
-
- //
- // Rule 27: postfix_expression ::= postfix_expression --
- //
- case 27: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixDecr);
- break;
- }
-
- //
- // Rule 28: postfix_expression ::= ( type_id ) initializer_list
- //
- case 28: {
- action.consumeExpressionTypeIdInitializer();
- break;
- }
-
- //
- // Rule 33: unary_expression ::= ++ unary_expression
- //
- case 33: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixIncr);
- break;
- }
-
- //
- // Rule 34: unary_expression ::= -- unary_expression
- //
- case 34: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixDecr);
- break;
- }
-
- //
- // Rule 35: unary_expression ::= & cast_expression
- //
- case 35: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_amper);
- break;
- }
-
- //
- // Rule 36: unary_expression ::= * cast_expression
- //
- case 36: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_star);
- break;
- }
-
- //
- // Rule 37: unary_expression ::= + cast_expression
- //
- case 37: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_plus);
- break;
- }
-
- //
- // Rule 38: unary_expression ::= - cast_expression
- //
- case 38: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_minus);
- break;
- }
-
- //
- // Rule 39: unary_expression ::= ~ cast_expression
- //
- case 39: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_tilde);
- break;
- }
-
- //
- // Rule 40: unary_expression ::= ! cast_expression
- //
- case 40: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_not);
- break;
- }
-
- //
- // Rule 41: unary_expression ::= sizeof unary_expression
- //
- case 41: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_sizeof);
- break;
- }
-
- //
- // Rule 42: unary_expression ::= sizeof ( type_id )
- //
- case 42: {
- action.consumeExpressionTypeId(IASTTypeIdExpression.op_sizeof);
- break;
- }
-
- //
- // Rule 45: multiplicative_expression ::= multiplicative_expression * cast_expression
- //
- case 45: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_multiply);
- break;
- }
-
- //
- // Rule 46: multiplicative_expression ::= multiplicative_expression / cast_expression
- //
- case 46: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_divide);
- break;
- }
-
- //
- // Rule 47: multiplicative_expression ::= multiplicative_expression % cast_expression
- //
- case 47: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_modulo);
- break;
- }
-
- //
- // Rule 49: additive_expression ::= additive_expression + multiplicative_expression
- //
- case 49: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_plus);
- break;
- }
-
- //
- // Rule 50: additive_expression ::= additive_expression - multiplicative_expression
- //
- case 50: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_minus);
- break;
- }
-
- //
- // Rule 52: shift_expression ::= shift_expression << additive_expression
- //
- case 52: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftLeft);
- break;
- }
-
- //
- // Rule 53: shift_expression ::= shift_expression >> additive_expression
- //
- case 53: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftRight);
- break;
- }
-
- //
- // Rule 55: relational_expression ::= relational_expression < shift_expression
- //
- case 55: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_lessThan);
- break;
- }
-
- //
- // Rule 56: relational_expression ::= relational_expression > shift_expression
- //
- case 56: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_greaterThan);
- break;
- }
-
- //
- // Rule 57: relational_expression ::= relational_expression <= shift_expression
- //
- case 57: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_lessEqual);
- break;
- }
-
- //
- // Rule 58: relational_expression ::= relational_expression >= shift_expression
- //
- case 58: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_greaterEqual);
- break;
- }
-
- //
- // Rule 60: equality_expression ::= equality_expression == relational_expression
- //
- case 60: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_equals);
- break;
- }
-
- //
- // Rule 61: equality_expression ::= equality_expression != relational_expression
- //
- case 61: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_notequals);
- break;
- }
-
- //
- // Rule 63: and_expression ::= and_expression & equality_expression
- //
- case 63: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryAnd);
- break;
- }
-
- //
- // Rule 65: exclusive_or_expression ::= exclusive_or_expression ^ and_expression
- //
- case 65: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryXor);
- break;
- }
-
- //
- // Rule 67: inclusive_or_expression ::= inclusive_or_expression | exclusive_or_expression
- //
- case 67: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryOr);
- break;
- }
-
- //
- // Rule 69: logical_and_expression ::= logical_and_expression && inclusive_or_expression
- //
- case 69: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_logicalAnd);
- break;
- }
-
- //
- // Rule 71: logical_or_expression ::= logical_or_expression || logical_and_expression
- //
- case 71: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_logicalOr);
- break;
- }
-
- //
- // Rule 73: conditional_expression ::= logical_or_expression ? expression : assignment_expression
- //
- case 73: {
- action.consumeExpressionConditional();
- break;
- }
-
- //
- // Rule 75: assignment_expression ::= unary_expression = assignment_expression
- //
- case 75: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_assign);
- break;
- }
-
- //
- // Rule 76: assignment_expression ::= unary_expression *= assignment_expression
- //
- case 76: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_multiplyAssign);
- break;
- }
-
- //
- // Rule 77: assignment_expression ::= unary_expression /= assignment_expression
- //
- case 77: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_divideAssign);
- break;
- }
-
- //
- // Rule 78: assignment_expression ::= unary_expression %= assignment_expression
- //
- case 78: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_moduloAssign);
- break;
- }
-
- //
- // Rule 79: assignment_expression ::= unary_expression += assignment_expression
- //
- case 79: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_plusAssign);
- break;
- }
-
- //
- // Rule 80: assignment_expression ::= unary_expression -= assignment_expression
- //
- case 80: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_minusAssign);
- break;
- }
-
- //
- // Rule 81: assignment_expression ::= unary_expression <<= assignment_expression
- //
- case 81: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftLeftAssign);
- break;
- }
-
- //
- // Rule 82: assignment_expression ::= unary_expression >>= assignment_expression
- //
- case 82: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftRightAssign);
- break;
- }
-
- //
- // Rule 83: assignment_expression ::= unary_expression &= assignment_expression
- //
- case 83: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryAndAssign);
- break;
- }
-
- //
- // Rule 84: assignment_expression ::= unary_expression ^= assignment_expression
- //
- case 84: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryXorAssign);
- break;
- }
-
- //
- // Rule 85: assignment_expression ::= unary_expression |= assignment_expression
- //
- case 85: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryOrAssign);
- break;
- }
-
- //
- // Rule 88: expression_list ::= <openscope-ast> expression_list_actual
- //
- case 88: {
- action.consumeExpressionList();
- break;
- }
-
- //
- // Rule 90: expression_list_opt ::= $Empty
- //
- case 90: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 100: statement ::= ERROR_TOKEN
- //
- case 100: {
- action.consumeStatementProblem();
- break;
- }
-
- //
- // Rule 101: labeled_statement ::= identifier_token : statement
- //
- case 101: {
- action.consumeStatementLabeled();
- break;
- }
-
- //
- // Rule 102: labeled_statement ::= case constant_expression : statement
- //
- case 102: {
- action.consumeStatementCase();
- break;
- }
-
- //
- // Rule 103: labeled_statement ::= default : statement
- //
- case 103: {
- action.consumeStatementDefault();
- break;
- }
-
- //
- // Rule 104: compound_statement ::= { }
- //
- case 104: {
- action.consumeStatementCompoundStatement(false);
- break;
- }
-
- //
- // Rule 105: compound_statement ::= { <openscope-ast> block_item_list }
- //
- case 105: {
- action.consumeStatementCompoundStatement(true);
- break;
- }
-
- //
- // Rule 109: block_item ::= declaration
- //
- case 109: {
- action.consumeStatementDeclarationWithDisambiguation();
- break;
- }
-
- //
- // Rule 110: expression_statement ::= ;
- //
- case 110: {
- action.consumeStatementNull();
- break;
- }
-
- //
- // Rule 111: expression_statement ::= expression_in_statement ;
- //
- case 111: {
- action.consumeStatementExpression();
- break;
- }
-
- //
- // Rule 112: selection_statement ::= if ( expression ) statement
- //
- case 112: {
- action.consumeStatementIf(false);
- break;
- }
-
- //
- // Rule 113: selection_statement ::= if ( expression ) statement else statement
- //
- case 113: {
- action.consumeStatementIf(true);
- break;
- }
-
- //
- // Rule 114: selection_statement ::= switch ( expression ) statement
- //
- case 114: {
- action.consumeStatementSwitch();
- break;
- }
-
- //
- // Rule 116: expression_opt ::= $Empty
- //
- case 116: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 117: iteration_statement ::= do statement while ( expression ) ;
- //
- case 117: {
- action.consumeStatementDoLoop(true);
- break;
- }
-
- //
- // Rule 118: iteration_statement ::= do statement
- //
- case 118: {
- action.consumeStatementDoLoop(false);
- break;
- }
-
- //
- // Rule 119: iteration_statement ::= while ( expression ) statement
- //
- case 119: {
- action.consumeStatementWhileLoop();
- break;
- }
-
- //
- // Rule 120: iteration_statement ::= for ( expression_opt ; expression_opt ; expression_opt ) statement
- //
- case 120: {
- action.consumeStatementForLoop();
- break;
- }
-
- //
- // Rule 121: iteration_statement ::= for ( declaration expression_opt ; expression_opt ) statement
- //
- case 121: {
- action.consumeStatementForLoop();
- break;
- }
-
- //
- // Rule 122: jump_statement ::= goto identifier_token ;
- //
- case 122: {
- action.consumeStatementGoto();
- break;
- }
-
- //
- // Rule 123: jump_statement ::= continue ;
- //
- case 123: {
- action.consumeStatementContinue();
- break;
- }
-
- //
- // Rule 124: jump_statement ::= break ;
- //
- case 124: {
- action.consumeStatementBreak();
- break;
- }
-
- //
- // Rule 125: jump_statement ::= return ;
- //
- case 125: {
- action.consumeStatementReturn(false);
- break;
- }
-
- //
- // Rule 126: jump_statement ::= return expression ;
- //
- case 126: {
- action.consumeStatementReturn(true);
- break;
- }
-
- //
- // Rule 127: declaration ::= declaration_specifiers ;
- //
- case 127: {
- action.consumeDeclarationSimple(false);
- break;
- }
-
- //
- // Rule 128: declaration ::= declaration_specifiers <openscope-ast> init_declarator_list ;
- //
- case 128: {
- action.consumeDeclarationSimple(true);
- break;
- }
-
- //
- // Rule 129: declaration_specifiers ::= <openscope-ast> simple_declaration_specifiers
- //
- case 129: {
- action.consumeDeclarationSpecifiersSimple();
- break;
- }
-
- //
- // Rule 130: declaration_specifiers ::= <openscope-ast> struct_or_union_declaration_specifiers
- //
- case 130: {
- action.consumeDeclarationSpecifiersStructUnionEnum();
- break;
- }
-
- //
- // Rule 131: declaration_specifiers ::= <openscope-ast> elaborated_declaration_specifiers
- //
- case 131: {
- action.consumeDeclarationSpecifiersStructUnionEnum();
- break;
- }
-
- //
- // Rule 132: declaration_specifiers ::= <openscope-ast> enum_declaration_specifiers
- //
- case 132: {
- action.consumeDeclarationSpecifiersStructUnionEnum();
- break;
- }
-
- //
- // Rule 133: declaration_specifiers ::= <openscope-ast> typdef_name_declaration_specifiers
- //
- case 133: {
- action.consumeDeclarationSpecifiersTypedefName();
- break;
- }
-
- //
- // Rule 158: init_declarator ::= complete_declarator = initializer
- //
- case 158: {
- action.consumeDeclaratorWithInitializer(true);
- break;
- }
-
- //
- // Rule 160: storage_class_specifier ::= storage_class_specifier_token
- //
- case 160: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 166: simple_type_specifier ::= simple_type_specifier_token
- //
- case 166: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 179: type_name_specifier ::= identifier_token
- //
- case 179: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 180: struct_or_union_specifier ::= struct_or_union struct_or_union_specifier_hook { <openscope-ast> struct_declaration_list_opt }
- //
- case 180: {
- action.consumeTypeSpecifierComposite(false);
- break;
- }
-
- //
- // Rule 181: struct_or_union_specifier ::= struct_or_union struct_or_union_specifier_hook identifier_token struct_or_union_specifier_suffix_hook { <openscope-ast> struct_declaration_list_opt }
- //
- case 181: {
- action.consumeTypeSpecifierComposite(true);
- break;
- }
-
- //
- // Rule 186: elaborated_specifier ::= struct elaborated_specifier_hook identifier_token
- //
- case 186: {
- action.consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_struct);
- break;
- }
-
- //
- // Rule 187: elaborated_specifier ::= union elaborated_specifier_hook identifier_token
- //
- case 187: {
- action.consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_union);
- break;
- }
-
- //
- // Rule 188: elaborated_specifier ::= enum elaborated_specifier_hook identifier_token
- //
- case 188: {
- action.consumeTypeSpecifierElaborated(IASTElaboratedTypeSpecifier.k_enum);
- break;
- }
-
- //
- // Rule 194: struct_declaration ::= specifier_qualifier_list <openscope-ast> struct_declarator_list ;
- //
- case 194: {
- action.consumeStructDeclaration(true);
- break;
- }
-
- //
- // Rule 195: struct_declaration ::= specifier_qualifier_list ;
- //
- case 195: {
- action.consumeStructDeclaration(false);
- break;
- }
-
- //
- // Rule 196: struct_declaration ::= ERROR_TOKEN
- //
- case 196: {
- action.consumeDeclarationProblem();
- break;
- }
-
- //
- // Rule 202: struct_declarator ::= : constant_expression
- //
- case 202: {
- action.consumeBitField(false);
- break;
- }
-
- //
- // Rule 203: struct_declarator ::= declarator : constant_expression
- //
- case 203: {
- action.consumeBitField(true);
- break;
- }
-
- //
- // Rule 204: enum_specifier ::= enum enum_specifier_hook { <openscope-ast> enumerator_list_opt comma_opt }
- //
- case 204: {
- action.consumeTypeSpecifierEnumeration(false);
- break;
- }
-
- //
- // Rule 205: enum_specifier ::= enum enum_specifier_hook identifier_token { <openscope-ast> enumerator_list_opt comma_opt }
- //
- case 205: {
- action.consumeTypeSpecifierEnumeration(true);
- break;
- }
-
- //
- // Rule 211: enumerator ::= identifier_token
- //
- case 211: {
- action.consumeEnumerator(false);
- break;
- }
-
- //
- // Rule 212: enumerator ::= identifier_token = constant_expression
- //
- case 212: {
- action.consumeEnumerator(true);
- break;
- }
-
- //
- // Rule 213: type_qualifier ::= type_qualifier_token
- //
- case 213: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 217: function_specifier ::= inline
- //
- case 217: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 219: declarator ::= <openscope-ast> pointer_seq direct_declarator
- //
- case 219: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 224: basic_direct_declarator ::= declarator_id_name
- //
- case 224: {
- action.consumeDirectDeclaratorIdentifier();
- break;
- }
-
- //
- // Rule 225: basic_direct_declarator ::= ( declarator )
- //
- case 225: {
- action.consumeDirectDeclaratorBracketed();
- break;
- }
-
- //
- // Rule 226: declarator_id_name ::= identifier
- //
- case 226: {
- action.consumeIdentifierName();
- break;
- }
-
- //
- // Rule 227: array_direct_declarator ::= basic_direct_declarator array_modifier
- //
- case 227: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 228: array_direct_declarator ::= array_direct_declarator array_modifier
- //
- case 228: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 230: function_direct_declarator ::= basic_direct_declarator ( <openscope-ast> parameter_type_list )
- //
- case 230: {
- action.consumeDirectDeclaratorFunctionDeclarator(true, true);
- break;
- }
-
- //
- // Rule 231: function_direct_declarator ::= basic_direct_declarator ( )
- //
- case 231: {
- action.consumeDirectDeclaratorFunctionDeclarator(true, false);
- break;
- }
-
- //
- // Rule 233: function_declarator ::= <openscope-ast> pointer_seq function_direct_declarator
- //
- case 233: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 234: knr_direct_declarator ::= basic_direct_declarator ( <openscope-ast> identifier_list )
- //
- case 234: {
- action.consumeDirectDeclaratorFunctionDeclaratorKnR();
- break;
- }
-
- //
- // Rule 236: knr_function_declarator ::= <openscope-ast> pointer_seq knr_direct_declarator
- //
- case 236: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 237: identifier_list ::= identifier
- //
- case 237: {
- action.consumeIdentifierKnR();
- break;
- }
-
- //
- // Rule 238: identifier_list ::= identifier_list , identifier
- //
- case 238: {
- action.consumeIdentifierKnR();
- break;
- }
-
- //
- // Rule 239: array_modifier ::= [ ]
- //
- case 239: {
- action.consumeDirectDeclaratorArrayModifier(false);
- break;
- }
-
- //
- // Rule 240: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers ]
- //
- case 240: {
- action.consumeDirectDeclaratorModifiedArrayModifier(false, false, true, false);
- break;
- }
-
- //
- // Rule 241: array_modifier ::= [ assignment_expression ]
- //
- case 241: {
- action.consumeDirectDeclaratorArrayModifier(true);
- break;
- }
-
- //
- // Rule 242: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers assignment_expression ]
- //
- case 242: {
- action.consumeDirectDeclaratorModifiedArrayModifier(false, false, true, true);
- break;
- }
-
- //
- // Rule 243: array_modifier ::= [ static assignment_expression ]
- //
- case 243: {
- action.consumeDirectDeclaratorModifiedArrayModifier(true, false, false, true);
- break;
- }
-
- //
- // Rule 244: array_modifier ::= [ static <openscope-ast> array_modifier_type_qualifiers assignment_expression ]
- //
- case 244: {
- action.consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true);
- break;
- }
-
- //
- // Rule 245: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers static assignment_expression ]
- //
- case 245: {
- action.consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true);
- break;
- }
-
- //
- // Rule 246: array_modifier ::= [ * ]
- //
- case 246: {
- action.consumeDirectDeclaratorModifiedArrayModifier(false, true, false, false);
- break;
- }
-
- //
- // Rule 247: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers * ]
- //
- case 247: {
- action.consumeDirectDeclaratorModifiedArrayModifier(false, true, true, false);
- break;
- }
-
- //
- // Rule 249: pointer_seq ::= pointer_hook * pointer_hook
- //
- case 249: {
- action.consumePointer();
- break;
- }
-
- //
- // Rule 250: pointer_seq ::= pointer_seq pointer_hook * pointer_hook
- //
- case 250: {
- action.consumePointer();
- break;
- }
-
- //
- // Rule 251: pointer_seq ::= pointer_hook * pointer_hook <openscope-ast> type_qualifier_list
- //
- case 251: {
- action.consumePointerTypeQualifierList();
- break;
- }
-
- //
- // Rule 252: pointer_seq ::= pointer_seq pointer_hook * pointer_hook <openscope-ast> type_qualifier_list
- //
- case 252: {
- action.consumePointerTypeQualifierList();
- break;
- }
-
- //
- // Rule 256: parameter_type_list ::= parameter_list
- //
- case 256: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 257: parameter_type_list ::= parameter_list , ...
- //
- case 257: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 258: parameter_type_list ::= ...
- //
- case 258: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 261: parameter_declaration ::= declaration_specifiers complete_parameter_declarator
- //
- case 261: {
- action.consumeParameterDeclaration();
- break;
- }
-
- //
- // Rule 262: parameter_declaration ::= declaration_specifiers
- //
- case 262: {
- action.consumeParameterDeclarationWithoutDeclarator();
- break;
- }
-
- //
- // Rule 265: type_id ::= specifier_qualifier_list
- //
- case 265: {
- action.consumeTypeId(false);
- break;
- }
-
- //
- // Rule 266: type_id ::= specifier_qualifier_list abstract_declarator
- //
- case 266: {
- action.consumeTypeId(true);
- break;
- }
-
- //
- // Rule 268: abstract_declarator ::= <openscope-ast> pointer_seq
- //
- case 268: {
- action.consumeDeclaratorWithPointer(false);
- break;
- }
-
- //
- // Rule 269: abstract_declarator ::= <openscope-ast> pointer_seq direct_abstract_declarator
- //
- case 269: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 273: basic_direct_abstract_declarator ::= ( abstract_declarator )
- //
- case 273: {
- action.consumeDirectDeclaratorBracketed();
- break;
- }
-
- //
- // Rule 274: array_direct_abstract_declarator ::= array_modifier
- //
- case 274: {
- action.consumeDirectDeclaratorArrayDeclarator(false);
- break;
- }
-
- //
- // Rule 275: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier
- //
- case 275: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 276: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier
- //
- case 276: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 277: function_direct_abstract_declarator ::= ( )
- //
- case 277: {
- action.consumeDirectDeclaratorFunctionDeclarator(false, false);
- break;
- }
-
- //
- // Rule 278: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( )
- //
- case 278: {
- action.consumeDirectDeclaratorFunctionDeclarator(true, false);
- break;
- }
-
- //
- // Rule 279: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_type_list )
- //
- case 279: {
- action.consumeDirectDeclaratorFunctionDeclarator(false, true);
- break;
- }
-
- //
- // Rule 280: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( <openscope-ast> parameter_type_list )
- //
- case 280: {
- action.consumeDirectDeclaratorFunctionDeclarator(true, true);
- break;
- }
-
- //
- // Rule 281: initializer ::= assignment_expression
- //
- case 281: {
- action.consumeInitializer();
- break;
- }
-
- //
- // Rule 282: initializer ::= initializer_list
- //
- case 282: {
- action.consumeInitializer();
- break;
- }
-
- //
- // Rule 283: initializer_list ::= start_initializer_list { <openscope-ast> initializer_seq comma_opt } end_initializer_list
- //
- case 283: {
- action.consumeInitializerList();
- break;
- }
-
- //
- // Rule 284: initializer_list ::= { <openscope-ast> }
- //
- case 284: {
- action.consumeInitializerList();
- break;
- }
-
- //
- // Rule 285: start_initializer_list ::= $Empty
- //
- case 285: {
- action.initializerListStart();
- break;
- }
-
- //
- // Rule 286: end_initializer_list ::= $Empty
- //
- case 286: {
- action.initializerListEnd();
- break;
- }
-
- //
- // Rule 291: designated_initializer ::= <openscope-ast> designation = initializer
- //
- case 291: {
- action.consumeInitializerDesignated();
- break;
- }
-
- //
- // Rule 295: designator_base ::= [ constant_expression ]
- //
- case 295: {
- action.consumeDesignatorArray();
- break;
- }
-
- //
- // Rule 296: designator_base ::= . identifier_token
- //
- case 296: {
- action.consumeDesignatorField();
- break;
- }
-
- //
- // Rule 297: designator ::= [ constant_expression ]
- //
- case 297: {
- action.consumeDesignatorArray();
- break;
- }
-
- //
- // Rule 298: designator ::= . identifier_token
- //
- case 298: {
- action.consumeDesignatorField();
- break;
- }
-
- //
- // Rule 299: translation_unit ::= external_declaration_list
- //
- case 299: {
- action.consumeTranslationUnit();
- break;
- }
-
- //
- // Rule 300: translation_unit ::= $Empty
- //
- case 300: {
- action.consumeTranslationUnit();
- break;
- }
-
- //
- // Rule 305: external_declaration ::= ;
- //
- case 305: {
- action.consumeDeclarationEmpty();
- break;
- }
-
- //
- // Rule 306: external_declaration ::= ERROR_TOKEN
- //
- case 306: {
- action.consumeDeclarationProblem();
- break;
- }
-
- //
- // Rule 310: function_definition ::= <openscope-ast> function_declarator function_body
- //
- case 310: {
- action.consumeFunctionDefinition(false);
- break;
- }
-
- //
- // Rule 311: function_definition ::= declaration_specifiers <openscope-ast> knr_function_declarator <openscope-ast> declaration_list compound_statement
- //
- case 311: {
- action.consumeFunctionDefinitionKnR();
- break;
- }
-
- //
- // Rule 312: normal_function_definition ::= declaration_specifiers <openscope-ast> function_declarator function_body
- //
- case 312: {
- action.consumeFunctionDefinition(true);
- break;
- }
-
- //
- // Rule 313: function_body ::= { }
- //
- case 313: {
- action.consumeStatementCompoundStatement(false);
- break;
- }
-
- //
- // Rule 314: function_body ::= { <openscope-ast> block_item_list }
- //
- case 314: {
- action.consumeStatementCompoundStatement(true);
- break;
- }
-
- //
- // Rule 316: no_cast_start ::= ERROR_TOKEN
- //
- case 316: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 317: literal ::= MYTHREAD
- //
- case 317: {
- action.consumeKeywordExpression(IUPCASTKeywordExpression.kw_mythread);
- break;
- }
-
- //
- // Rule 318: literal ::= THREADS
- //
- case 318: {
- action.consumeKeywordExpression(IUPCASTKeywordExpression.kw_threads);
- break;
- }
-
- //
- // Rule 319: literal ::= UPC_MAX_BLOCKSIZE
- //
- case 319: {
- action.consumeKeywordExpression(IUPCASTKeywordExpression.kw_upc_max_block_size);
- break;
- }
-
- //
- // Rule 320: unary_expression ::= upc_localsizeof unary_expression
- //
- case 320: {
- action.consumeExpressionUnarySizeofOperator(IUPCASTUnarySizeofExpression.upc_localsizeof);
- break;
- }
-
- //
- // Rule 321: unary_expression ::= upc_localsizeof ( type_id )
- //
- case 321: {
- action.consumeExpressionSizeofTypeId(IUPCASTUnarySizeofExpression.upc_localsizeof);
- break;
- }
-
- //
- // Rule 322: unary_expression ::= upc_blocksizeof unary_expression
- //
- case 322: {
- action.consumeExpressionUnarySizeofOperator(IUPCASTUnarySizeofExpression.upc_blocksizeof);
- break;
- }
-
- //
- // Rule 323: unary_expression ::= upc_blocksizeof ( type_id )
- //
- case 323: {
- action.consumeExpressionSizeofTypeId(IUPCASTUnarySizeofExpression.upc_blocksizeof);
- break;
- }
-
- //
- // Rule 324: unary_expression ::= upc_elemsizeof unary_expression
- //
- case 324: {
- action.consumeExpressionUnarySizeofOperator(IUPCASTUnarySizeofExpression.upc_elemsizeof);
- break;
- }
-
- //
- // Rule 325: unary_expression ::= upc_elemsizeof ( type_id )
- //
- case 325: {
- action.consumeExpressionSizeofTypeId(IUPCASTUnarySizeofExpression.upc_elemsizeof);
- break;
- }
-
- //
- // Rule 329: shared_type_qualifier ::= shared
- //
- case 329: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 330: reference_type_qualifier ::= relaxed
- //
- case 330: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 331: reference_type_qualifier ::= strict
- //
- case 331: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 332: layout_qualifier ::= [ constant_expression ]
- //
- case 332: {
- action.consumeLayoutQualifier(true, false);
- break;
- }
-
- //
- // Rule 333: layout_qualifier ::= [ * ]
- //
- case 333: {
- action.consumeLayoutQualifier(false, true);
- break;
- }
-
- //
- // Rule 334: layout_qualifier ::= [ ]
- //
- case 334: {
- action.consumeLayoutQualifier(false, false);
- break;
- }
-
- //
- // Rule 336: synchronization_statement ::= upc_notify expression ;
- //
- case 336: {
- action.consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_notify, true);
- break;
- }
-
- //
- // Rule 337: synchronization_statement ::= upc_notify ;
- //
- case 337: {
- action.consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_notify, false);
- break;
- }
-
- //
- // Rule 338: synchronization_statement ::= upc_wait expression ;
- //
- case 338: {
- action.consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_wait, true);
- break;
- }
-
- //
- // Rule 339: synchronization_statement ::= upc_wait ;
- //
- case 339: {
- action.consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_wait, false);
- break;
- }
-
- //
- // Rule 340: synchronization_statement ::= upc_barrier expression ;
- //
- case 340: {
- action.consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_barrier, true);
- break;
- }
-
- //
- // Rule 341: synchronization_statement ::= upc_barrier ;
- //
- case 341: {
- action.consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_barrier, false);
- break;
- }
-
- //
- // Rule 342: synchronization_statement ::= upc_fence ;
- //
- case 342: {
- action.consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_fence, false);
- break;
- }
-
- //
- // Rule 343: iteration_statement ::= upc_forall ( expression ; expression ; expression ; affinity ) statement
- //
- case 343: {
- action.consumeStatementUPCForallLoop(true, true, true, true);
- break;
- }
-
- //
- // Rule 344: iteration_statement ::= upc_forall ( expression ; expression ; expression ; ) statement
- //
- case 344: {
- action.consumeStatementUPCForallLoop(true, true, true, false);
- break;
- }
-
- //
- // Rule 345: iteration_statement ::= upc_forall ( expression ; expression ; ; affinity ) statement
- //
- case 345: {
- action.consumeStatementUPCForallLoop(true, true, false, true);
- break;
- }
-
- //
- // Rule 346: iteration_statement ::= upc_forall ( expression ; expression ; ; ) statement
- //
- case 346: {
- action.consumeStatementUPCForallLoop(true, true, false, false);
- break;
- }
-
- //
- // Rule 347: iteration_statement ::= upc_forall ( expression ; ; expression ; affinity ) statement
- //
- case 347: {
- action.consumeStatementUPCForallLoop(true, false, true, true);
- break;
- }
-
- //
- // Rule 348: iteration_statement ::= upc_forall ( expression ; ; expression ; ) statement
- //
- case 348: {
- action.consumeStatementUPCForallLoop(true, false, true, false);
- break;
- }
-
- //
- // Rule 349: iteration_statement ::= upc_forall ( expression ; ; ; affinity ) statement
- //
- case 349: {
- action.consumeStatementUPCForallLoop(true, false, false, true);
- break;
- }
-
- //
- // Rule 350: iteration_statement ::= upc_forall ( expression ; ; ; ) statement
- //
- case 350: {
- action.consumeStatementUPCForallLoop(true, false, false, false);
- break;
- }
-
- //
- // Rule 351: iteration_statement ::= upc_forall ( ; expression ; expression ; affinity ) statement
- //
- case 351: {
- action.consumeStatementUPCForallLoop(false, true, true, true);
- break;
- }
-
- //
- // Rule 352: iteration_statement ::= upc_forall ( ; expression ; expression ; ) statement
- //
- case 352: {
- action.consumeStatementUPCForallLoop(false, true, true, false);
- break;
- }
-
- //
- // Rule 353: iteration_statement ::= upc_forall ( ; expression ; ; affinity ) statement
- //
- case 353: {
- action.consumeStatementUPCForallLoop(false, true, false, true);
- break;
- }
-
- //
- // Rule 354: iteration_statement ::= upc_forall ( ; expression ; ; ) statement
- //
- case 354: {
- action.consumeStatementUPCForallLoop(false, true, false, false);
- break;
- }
-
- //
- // Rule 355: iteration_statement ::= upc_forall ( ; ; expression ; affinity ) statement
- //
- case 355: {
- action.consumeStatementUPCForallLoop(false, false, true, true);
- break;
- }
-
- //
- // Rule 356: iteration_statement ::= upc_forall ( ; ; expression ; ) statement
- //
- case 356: {
- action.consumeStatementUPCForallLoop(false, false, true, false);
- break;
- }
-
- //
- // Rule 357: iteration_statement ::= upc_forall ( ; ; ; affinity ) statement
- //
- case 357: {
- action.consumeStatementUPCForallLoop(false, false, false, true);
- break;
- }
-
- //
- // Rule 358: iteration_statement ::= upc_forall ( ; ; ; ) statement
- //
- case 358: {
- action.consumeStatementUPCForallLoop(false, false, false, false);
- break;
- }
-
- //
- // Rule 359: iteration_statement ::= upc_forall ( declaration expression ; expression ; affinity ) statement
- //
- case 359: {
- action.consumeStatementUPCForallLoop(true, true, true, true);
- break;
- }
-
- //
- // Rule 360: iteration_statement ::= upc_forall ( declaration expression ; expression ; ) statement
- //
- case 360: {
- action.consumeStatementUPCForallLoop(true, true, true, false);
- break;
- }
-
- //
- // Rule 361: iteration_statement ::= upc_forall ( declaration expression ; ; affinity ) statement
- //
- case 361: {
- action.consumeStatementUPCForallLoop(true, true, false, true);
- break;
- }
-
- //
- // Rule 362: iteration_statement ::= upc_forall ( declaration expression ; ; ) statement
- //
- case 362: {
- action.consumeStatementUPCForallLoop(true, true, false, false);
- break;
- }
-
- //
- // Rule 363: iteration_statement ::= upc_forall ( declaration ; expression ; affinity ) statement
- //
- case 363: {
- action.consumeStatementUPCForallLoop(true, false, true, true);
- break;
- }
-
- //
- // Rule 364: iteration_statement ::= upc_forall ( declaration ; expression ; ) statement
- //
- case 364: {
- action.consumeStatementUPCForallLoop(true, false, true, false);
- break;
- }
-
- //
- // Rule 365: iteration_statement ::= upc_forall ( declaration ; ; affinity ) statement
- //
- case 365: {
- action.consumeStatementUPCForallLoop(true, false, false, true);
- break;
- }
-
- //
- // Rule 366: iteration_statement ::= upc_forall ( declaration ; ; ) statement
- //
- case 366: {
- action.consumeStatementUPCForallLoop(true, false, false, false);
- break;
- }
-
- //
- // Rule 368: affinity ::= continue
- //
- case 368: {
- action.consumeToken();
- break;
- }
-
- default:
- break;
- }
- return;
- }
-}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCNoCastExpressionParserprs.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCNoCastExpressionParserprs.java
deleted file mode 100644
index 0f4d098f517..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCNoCastExpressionParserprs.java
+++ /dev/null
@@ -1,752 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2011 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.dom.parser.upc;
-
-public class UPCNoCastExpressionParserprs implements lpg.lpgjavaruntime.ParseTable, UPCNoCastExpressionParsersym {
-
- public interface IsKeyword {
- public final static byte isKeyword[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static byte isKeyword[] = IsKeyword.isKeyword;
-
- public final boolean isKeyword(int index) {
- return isKeyword[index] != 0;
- }
-
- public interface BaseCheck {
- public final static short baseCheck[] = { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 4,
- 4, 3, 3, 2, 2, 4, 1, 0, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 1, 1, 3, 3, 3, 1, 3, 3, 1, 3, 3, 1, 3, 3, 3,
- 3, 1, 3, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 5, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 2, 1, 0, 1, 3,
- 1, 1, 1, 1, 1, 1, 1, 1, 3, 4, 3, 2, 4, 1, 2, 1, 1, 1, 2, 5, 7, 5, 1, 0, 7, 2, 5, 9, 8, 3, 2, 2, 2, 3, 2,
- 4, 2, 2, 2, 2, 2, 1, 1, 1, 1, 2, 1, 2, 2, 2, 1, 2, 2, 1, 2, 2, 1, 2, 2, 1, 2, 2, 1, 3, 1, 3, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 8, 0, 0, 1, 1, 3, 3, 3, 0, 1, 0, 1, 2, 4, 2, 1, 1,
- 1, 3, 1, 1, 2, 3, 7, 8, 0, 1, 0, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 3, 1, 2, 2, 1, 5, 3, 1,
- 3, 5, 1, 3, 1, 3, 2, 4, 3, 5, 4, 6, 6, 3, 5, 1, 3, 4, 5, 6, 0, 1, 2, 1, 3, 1, 1, 3, 2, 1, 1, 1, 1, 2, 1,
- 2, 3, 1, 1, 1, 3, 1, 2, 2, 2, 3, 4, 5, 1, 1, 7, 3, 0, 0, 1, 1, 3, 3, 4, 1, 1, 2, 3, 2, 3, 2, 1, 0, 1, 2,
- 1, 1, 1, 1, 1, 2, 1, 3, 6, 4, 2, 4, 1, 1, 1, 1, 1, 2, 4, 2, 4, 2, 4, 1, 1, 2, 1, 1, 1, 3, 3, 2, 1, 3, 2,
- 3, 2, 3, 2, 2, 11, 10, 10, 9, 10, 9, 9, 8, 10, 9, 9, 8, 9, 8, 8, 7, 10, 9, 9, 8, 9, 8, 8, 7, 1, 1, -38,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -127, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, -129, 0, -77, -81,
- -138, 0, 0, 0, 0, 0, -60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -179, 0, 0, 0, 0, 0, 0, -172, 0, 0, 0, 0, 0, 0,
- -86, 0, 0, 0, 0, 0, 0, 0, -39, 0, -40, 0, 0, 0, 0, 0, 0, 0, 0, -154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -145, 0, 0, -4, 0, -88, -142, 0, -18, -117, -180, 0, 0, 0, 0,
- 0, -135, 0, -196, -35, 0, -203, 0, 0, 0, 0, 0, -36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -194, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -82, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -89, -19, -84, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -20, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -96, 0, 0, 0, 0,
- 0, 0, 0, 0, -21, 0, 0, -43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -130, 0, -141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -95, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -125, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -143, 0, 0, 0, 0, 0, 0, 0, 0, 0, -157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -22, 0, 0,
- 0, 0, 0, 0, 0, 0, -5, 0, 0, 0, 0, 0, 0, 0, -9, 0, 0, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -23, 0, 0, 0, 0, 0, 0, 0, 0, -6, 0, 0, 0,
- 0, 0, 0, 0, -131, 0, -132, 0, -78, -93, 0, -24, -222, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -165, 0, -150, -144, -133, 0, 0, 0, 0, 0, -122, 0, -25, -184, 0, -10, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -26, 0, 0, -177, 0, 0, 0, 0, -113, -83, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -161, -85, -155, 0, 0, -28, 0, 0, 0, 0, 0, 0, -44, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -29, 0, 0, 0, 0, 0, 0, 0, 0, -94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, 0, 0, 0, 0, 0, -210,
- 0, -7, 0, 0, 0, 0, 0, 0, 0, -58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -54, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -199, 0, 0, -11, 0, 0, 0, 0, 0, 0, 0, 0, -55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -91, 0, -56, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -221, 0, -136, 0, 0, 0, 0, 0, 0, 0, -97, 0, -98, 0, -114, -207, 0, 0, -48, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, -100, -101, 0,
- 0, -162, -102, 0, 0, -49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -223, 0, 0,
- 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -53, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, -80, -87, 0, -8, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -103, -151, 0, -153, -104, 0, 0, 0, 0, 0, -182, -90, 0, -163, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -92, -156, -126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -105, 0, 0, -183, 0, 0,
- 0, 0, -171, 0, 0, 0, 0, -106, 0, 0, 0, 0, -140, 0, 0, 0, 0, -124, 0, 0, 0, 0, 0, 0, 0, -149, 0, 0, 0, 0,
- 0, 0, 0, -169, 0, -1, 0, 0, -107, 0, 0, -108, 0, -109, 0, -148, 0, 0, -160, 0, 0, 0, 0, 0, 0, 0, -12, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 0, 0, -13, 0, 0, 0, 0, 0, 0, 0, -14, 0, 0, 0, 0, 0, 0, 0, -37, -45,
- 0, 0, 0, 0, 0, 0, 0, -186, -164, 0, -46, 0, 0, 0, 0, 0, 0, 0, -47, 0, 0, 0, 0, 0, 0, 0, 0, -178, -15, 0,
- 0, 0, 0, 0, 0, 0, -159, 0, 0, -16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, -111, -173, -17, 0, -112, 0,
- -181, 0, 0, -118, -31, 0, 0, 0, -189, -32, -200, 0, 0, -120, -137, 0, 0, 0, 0, 0, 0, -170, 0, 0, 0, 0,
- 0, 0, 0, -119, 0, 0, -33, 0, 0, 0, 0, -146, -152, 0, 0, 0, -123, 0, -34, -204, 0, -167, 0, -168, -185,
- 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -139, 0, 0, 0, 0, 0, -187, 0, 0, -115, 0, 0, 0, 0, 0, 0, 0, 0,
- -197, -198, 0, -188, 0, 0, 0, 0, 0, -195, 0, 0, 0, -116, 0, -147, -212, 0, -175, 0, -41, -176, -206, 0,
- 0, 0, 0, 0, 0, 0, -217, 0, 0, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, -42, 0, 0, 0, 0, 0, -218, 0, 0,
- 0, -59, 0, 0, 0, 0, 0, 0, -215, -211, -220, -219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static short baseCheck[] = BaseCheck.baseCheck;
-
- @Override
- public final int baseCheck(int index) {
- return baseCheck[index];
- }
-
- public final static short rhs[] = baseCheck;
-
- @Override
- public final int rhs(int index) {
- return rhs[index];
- }
-
- public interface BaseAction {
- public final static char baseAction[] = { 89, 11, 105, 22, 22, 21, 21, 46, 46, 72, 72, 1, 1, 2, 2, 2, 2, 3, 3,
- 3, 4, 5, 5, 5, 5, 5, 5, 5, 5, 62, 62, 73, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 8, 8, 8, 8, 9, 9, 9, 10,
- 10, 10, 12, 12, 12, 12, 12, 13, 13, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 20, 20,
- 20, 20, 20, 20, 20, 20, 20, 20, 106, 31, 30, 90, 90, 74, 74, 47, 107, 107, 107, 107, 107, 107, 107, 108,
- 108, 108, 109, 109, 114, 114, 115, 115, 110, 110, 111, 111, 111, 117, 117, 112, 112, 112, 112, 112, 113,
- 113, 113, 113, 113, 116, 116, 27, 27, 27, 27, 27, 33, 33, 33, 80, 80, 75, 75, 75, 75, 76, 76, 76, 77,
- 77, 77, 78, 78, 78, 79, 79, 79, 118, 118, 119, 119, 120, 34, 36, 36, 36, 36, 36, 56, 57, 57, 57, 57, 57,
- 57, 57, 57, 57, 57, 57, 57, 66, 63, 63, 91, 92, 68, 68, 64, 64, 64, 69, 81, 81, 82, 82, 70, 70, 70, 37,
- 93, 93, 83, 84, 84, 84, 65, 65, 94, 85, 85, 86, 86, 71, 71, 23, 24, 24, 24, 35, 53, 53, 39, 39, 39, 39,
- 42, 42, 44, 40, 40, 41, 45, 45, 121, 121, 43, 122, 122, 95, 95, 28, 28, 28, 28, 28, 28, 28, 28, 28, 87,
- 54, 54, 54, 54, 29, 59, 59, 58, 58, 58, 60, 60, 55, 55, 96, 96, 52, 52, 61, 61, 61, 48, 48, 48, 49, 50,
- 50, 50, 51, 51, 51, 51, 67, 67, 32, 32, 38, 98, 97, 97, 97, 97, 88, 99, 100, 100, 101, 101, 102, 102,
- 123, 123, 124, 124, 125, 125, 125, 125, 127, 127, 126, 126, 126, 128, 129, 129, 89, 89, 2, 2, 2, 6, 6,
- 6, 6, 6, 6, 23, 23, 25, 25, 26, 26, 103, 103, 103, 107, 130, 130, 130, 130, 130, 130, 130, 112, 112,
- 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
- 112, 131, 131, 1, 1304, 17, 21, 18, 518, 1295, 44, 670, 654, 1106, 675, 721, 1186, 1162, 1236, 1223,
- 1277, 1246, 74, 91, 450, 1811, 135, 213, 326, 327, 80, 1213, 582, 588, 88, 278, 137, 134, 136, 160, 606,
- 20, 17, 21, 18, 518, 43, 44, 670, 654, 1106, 675, 721, 1186, 1162, 1236, 1223, 1708, 175, 139, 166, 275,
- 1796, 1549, 28, 119, 143, 146, 149, 152, 1717, 431, 231, 191, 31, 191, 31, 513, 1245, 1273, 1504, 1533,
- 1548, 1184, 542, 20, 17, 21, 18, 518, 1295, 44, 670, 654, 1106, 424, 721, 1186, 1162, 1236, 1223, 1277,
- 1246, 74, 281, 606, 20, 17, 21, 18, 518, 43, 44, 670, 654, 1106, 282, 721, 1186, 1162, 1236, 1712, 1717,
- 351, 20, 17, 21, 18, 518, 1295, 44, 670, 654, 1106, 424, 721, 1186, 1162, 1236, 1223, 1277, 1246, 74,
- 281, 225, 179, 25, 277, 24, 583, 176, 287, 59, 53, 815, 282, 396, 1832, 555, 293, 63, 1717, 915, 443,
- 526, 191, 1784, 135, 213, 326, 327, 443, 288, 255, 213, 326, 327, 137, 134, 136, 160, 1570, 274, 1728,
- 398, 255, 213, 326, 327, 914, 289, 926, 19, 219, 1450, 221, 1535, 223, 224, 229, 139, 166, 269, 628,
- 399, 272, 284, 143, 146, 149, 152, 290, 431, 326, 255, 213, 326, 327, 735, 1245, 1273, 1504, 1533, 1548,
- 1184, 574, 20, 17, 21, 18, 518, 1295, 44, 670, 654, 1106, 210, 721, 1186, 1162, 1236, 1223, 1277, 1246,
- 74, 281, 606, 20, 17, 21, 18, 518, 43, 44, 670, 654, 1106, 282, 721, 1186, 1162, 1609, 776, 1717, 281,
- 20, 17, 21, 18, 518, 1295, 44, 670, 654, 1106, 1756, 721, 1186, 1162, 1236, 1223, 1277, 1246, 74, 1221,
- 194, 239, 615, 78, 661, 276, 294, 291, 606, 20, 17, 21, 18, 518, 1295, 44, 670, 654, 1106, 193, 721,
- 1186, 1162, 1236, 1223, 1277, 1246, 74, 91, 766, 20, 17, 21, 18, 518, 1295, 44, 670, 654, 1106, 1778,
- 721, 1186, 1162, 1236, 1223, 1277, 1246, 74, 1580, 470, 20, 17, 21, 18, 518, 43, 44, 670, 654, 1106,
- 743, 721, 1186, 1162, 1236, 1223, 1277, 1246, 93, 64, 1179, 334, 606, 20, 17, 21, 18, 518, 43, 44, 1406,
- 513, 22, 191, 187, 316, 20, 17, 21, 18, 518, 1295, 44, 670, 654, 1106, 1613, 721, 1186, 1162, 1236,
- 1223, 1277, 1246, 74, 1693, 328, 240, 606, 20, 17, 21, 18, 518, 1295, 44, 670, 654, 1106, 443, 721,
- 1186, 1162, 1236, 1223, 1277, 1246, 74, 92, 606, 20, 17, 21, 18, 518, 1295, 44, 670, 654, 1106, 1244,
- 721, 1186, 1162, 1236, 1223, 1277, 1246, 74, 85, 606, 20, 17, 21, 18, 518, 1295, 44, 670, 654, 1106,
- 443, 721, 1186, 1162, 1236, 1223, 1277, 1246, 74, 84, 606, 20, 17, 21, 18, 518, 1295, 44, 670, 654,
- 1106, 1410, 721, 1186, 1162, 1236, 1223, 1277, 1246, 74, 83, 606, 20, 17, 21, 18, 518, 1295, 44, 670,
- 654, 1106, 443, 721, 1186, 1162, 1236, 1223, 1277, 1246, 74, 82, 606, 20, 17, 21, 18, 518, 1295, 44,
- 670, 654, 1106, 1787, 721, 1186, 1162, 1236, 1223, 1277, 1246, 74, 81, 606, 20, 17, 21, 18, 518, 1295,
- 44, 670, 654, 1106, 443, 721, 1186, 1162, 1236, 1223, 1277, 1246, 74, 80, 606, 20, 17, 21, 18, 518,
- 1295, 44, 670, 654, 1106, 1809, 721, 1186, 1162, 1236, 1223, 1277, 1246, 74, 79, 606, 20, 17, 21, 18,
- 518, 1295, 44, 670, 654, 1106, 443, 721, 1186, 1162, 1236, 1223, 1277, 1246, 74, 78, 606, 20, 17, 21,
- 18, 518, 1295, 44, 670, 654, 1106, 23, 721, 1186, 1162, 1236, 1223, 1277, 1246, 74, 77, 606, 20, 17, 21,
- 18, 518, 1295, 44, 670, 654, 1106, 443, 721, 1186, 1162, 1236, 1223, 1277, 1246, 74, 76, 606, 20, 17,
- 21, 18, 518, 1295, 44, 670, 654, 1106, 273, 721, 1186, 1162, 1236, 1223, 1277, 1246, 74, 75, 606, 20,
- 17, 21, 18, 518, 1295, 44, 670, 654, 1106, 443, 721, 1186, 1162, 1236, 1223, 1277, 1246, 74, 73, 606,
- 20, 17, 21, 18, 518, 1295, 44, 670, 654, 1106, 279, 721, 1186, 1162, 1236, 1223, 1277, 1246, 74, 1814,
- 606, 20, 17, 21, 18, 518, 1295, 44, 670, 654, 1106, 443, 721, 1186, 1162, 1236, 1223, 1277, 1246, 74,
- 1817, 606, 20, 17, 21, 18, 518, 43, 44, 670, 654, 1106, 280, 721, 1186, 1162, 1236, 1223, 1277, 1246,
- 93, 606, 20, 17, 21, 18, 518, 43, 44, 670, 654, 1106, 139, 721, 1186, 1162, 1236, 1223, 1277, 1246, 93,
- 638, 20, 17, 21, 18, 518, 324, 1818, 606, 20, 17, 21, 18, 518, 43, 40, 606, 20, 17, 21, 18, 518, 43, 44,
- 670, 654, 1106, 212, 721, 1186, 1162, 1236, 1223, 1277, 1246, 93, 606, 20, 17, 21, 18, 518, 43, 44, 670,
- 654, 1106, 349, 721, 1186, 1162, 1236, 1223, 1277, 1246, 93, 670, 20, 17, 21, 18, 518, 322, 1862, 191,
- 186, 537, 1752, 88, 225, 179, 16, 606, 20, 17, 21, 18, 518, 43, 44, 670, 654, 1106, 202, 721, 1186,
- 1162, 1236, 1223, 1277, 1246, 93, 135, 213, 326, 327, 712, 1727, 152, 398, 191, 188, 138, 134, 136, 160,
- 743, 510, 6, 113, 1665, 606, 20, 17, 21, 18, 518, 43, 39, 203, 510, 24, 1743, 1214, 443, 140, 166, 274,
- 241, 678, 383, 171, 144, 147, 150, 153, 197, 431, 218, 1450, 221, 1535, 223, 224, 229, 225, 1565, 267,
- 628, 399, 272, 260, 263, 135, 213, 326, 327, 941, 814, 88, 264, 28, 230, 142, 134, 136, 160, 1717, 1684,
- 606, 20, 17, 21, 18, 518, 43, 44, 1408, 277, 193, 325, 135, 213, 326, 327, 274, 141, 166, 1709, 798,
- 1761, 145, 134, 136, 160, 261, 218, 1450, 221, 1535, 223, 224, 229, 191, 296, 267, 628, 399, 272, 443,
- 1239, 702, 20, 17, 21, 18, 518, 320, 981, 606, 20, 17, 21, 18, 518, 43, 44, 670, 654, 1106, 230, 721,
- 1186, 1611, 606, 20, 17, 21, 18, 518, 43, 44, 670, 654, 1106, 72, 721, 1562, 606, 20, 17, 21, 18, 518,
- 43, 38, 1826, 606, 20, 17, 21, 18, 518, 43, 44, 670, 654, 1106, 647, 1575, 606, 20, 17, 21, 18, 518, 43,
- 44, 670, 654, 1106, 72, 1606, 53, 218, 1450, 221, 1535, 223, 224, 229, 227, 1826, 324, 450, 742, 191,
- 298, 1859, 606, 20, 17, 21, 18, 518, 43, 44, 670, 654, 1445, 606, 20, 17, 21, 18, 518, 43, 44, 670,
- 1522, 218, 1450, 221, 1535, 223, 224, 229, 28, 198, 200, 151, 458, 804, 1717, 1859, 813, 818, 1215, 579,
- 606, 20, 17, 21, 18, 518, 43, 44, 670, 654, 1446, 606, 20, 17, 21, 18, 518, 43, 44, 670, 654, 1447, 554,
- 1181, 228, 199, 200, 606, 20, 17, 21, 18, 518, 43, 44, 670, 654, 1451, 606, 20, 17, 21, 18, 518, 43, 44,
- 670, 1526, 502, 291, 844, 1728, 734, 20, 17, 21, 18, 518, 41, 1826, 1550, 219, 1450, 221, 1535, 223,
- 224, 229, 614, 53, 277, 53, 646, 135, 213, 326, 327, 274, 63, 855, 1763, 839, 1735, 148, 134, 136, 160,
- 218, 1450, 221, 1535, 223, 224, 229, 885, 232, 385, 267, 628, 399, 272, 1239, 135, 213, 326, 327, 1707,
- 510, 710, 227, 981, 902, 151, 134, 136, 160, 679, 135, 213, 326, 327, 77, 1360, 1214, 180, 1727, 743,
- 154, 134, 136, 160, 435, 20, 17, 21, 18, 518, 43, 36, 435, 20, 17, 21, 18, 518, 43, 36, 53, 243, 505,
- 1743, 259, 187, 246, 1023, 350, 1751, 467, 1764, 743, 659, 333, 435, 20, 17, 21, 18, 518, 43, 36, 606,
- 20, 17, 21, 18, 518, 43, 37, 1722, 87, 315, 332, 483, 195, 247, 606, 20, 17, 21, 18, 518, 43, 36, 606,
- 20, 17, 21, 18, 518, 43, 35, 361, 606, 20, 17, 21, 18, 518, 43, 47, 805, 88, 1183, 606, 20, 17, 21, 18,
- 518, 43, 46, 606, 20, 17, 21, 18, 518, 43, 45, 274, 385, 606, 20, 17, 21, 18, 518, 34, 390, 743, 1727,
- 510, 606, 20, 17, 21, 18, 518, 33, 267, 628, 399, 272, 124, 513, 896, 53, 1214, 809, 1727, 53, 242, 266,
- 930, 53, 520, 1805, 369, 63, 53, 805, 1797, 1767, 243, 707, 369, 254, 213, 326, 327, 369, 682, 1784,
- 197, 520, 259, 87, 537, 1023, 445, 1751, 197, 53, 1655, 87, 537, 197, 541, 932, 87, 537, 1655, 124, 369,
- 53, 180, 1655, 933, 529, 57, 682, 1784, 528, 63, 1759, 369, 771, 274, 1728, 197, 510, 813, 87, 537, 124,
- 254, 213, 326, 327, 1655, 550, 197, 1848, 871, 87, 537, 197, 269, 628, 399, 272, 1655, 715, 169, 855,
- 845, 1565, 254, 213, 326, 327, 124, 209, 510, 510, 901, 897, 329, 63, 204, 743, 516, 480, 743, 743, 28,
- 1664, 1799, 510, 1214, 197, 1717, 88, 659, 254, 213, 326, 327, 842, 192, 1565, 209, 244, 516, 1214, 245,
- 295, 28, 53, 737, 1532, 1224, 89, 1717, 63, 1724, 1799, 259, 53, 659, 1324, 1727, 1751, 283, 181, 884,
- 479, 39, 743, 659, 557, 1033, 259, 192, 1921, 1065, 1921, 1751, 87, 712, 1921, 1921, 1921, 1921, 1812,
- 1224, 1476, 234, 87, 1636, 297, 1921, 1921, 1921, 1921, 1921, 1921, 1860, 1921, 1921, 205, 1921, 1921,
- 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 939, 1921, 0, 329, 701, 0, 20, 179, 0, 1, 2147, 0,
- 1, 2158, 0 };
- }
-
- public final static char baseAction[] = BaseAction.baseAction;
-
- @Override
- public final int baseAction(int index) {
- return baseAction[index];
- }
-
- public final static char lhs[] = baseAction;
-
- @Override
- public final int lhs(int index) {
- return lhs[index];
- }
-
- public interface TermCheck {
- public final static byte termCheck[] = { 0, 0, 1, 2, 3, 4, 0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 0, 16, 17, 18, 19,
- 20, 21, 22, 0, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 0, 1, 40, 41, 42, 43, 44, 45, 46,
- 47, 48, 49, 50, 51, 0, 53, 54, 55, 0, 1, 0, 3, 2, 5, 0, 0, 8, 9, 10, 5, 12, 13, 14, 0, 1, 2, 16, 17, 0,
- 0, 73, 0, 1, 23, 3, 6, 7, 70, 71, 0, 32, 33, 34, 35, 36, 37, 15, 72, 40, 41, 42, 43, 44, 45, 46, 47, 48,
- 49, 50, 51, 52, 53, 54, 55, 0, 1, 52, 3, 60, 5, 0, 61, 8, 9, 10, 0, 12, 13, 14, 64, 65, 66, 67, 8, 9,
- 10, 76, 12, 13, 14, 0, 68, 64, 65, 66, 67, 32, 33, 34, 35, 36, 37, 0, 0, 40, 41, 42, 43, 44, 45, 46, 47,
- 48, 49, 50, 51, 52, 53, 54, 55, 0, 1, 0, 3, 60, 5, 0, 0, 8, 9, 10, 0, 12, 13, 14, 8, 9, 10, 0, 12, 13,
- 14, 0, 1, 0, 3, 56, 57, 4, 23, 0, 0, 32, 33, 34, 35, 36, 37, 56, 57, 40, 41, 42, 43, 44, 45, 46, 47, 48,
- 49, 50, 51, 52, 53, 54, 55, 0, 1, 0, 3, 60, 0, 4, 0, 8, 9, 10, 61, 12, 13, 14, 8, 9, 10, 0, 12, 13, 14,
- 4, 77, 78, 0, 64, 65, 66, 67, 62, 63, 32, 33, 34, 35, 36, 37, 0, 0, 40, 41, 42, 43, 44, 45, 46, 47, 48,
- 49, 50, 51, 0, 53, 54, 55, 0, 1, 2, 3, 4, 5, 6, 7, 62, 63, 0, 11, 2, 0, 0, 5, 16, 17, 18, 19, 20, 21,
- 22, 74, 24, 25, 26, 27, 28, 29, 30, 31, 32, 23, 38, 0, 1, 2, 3, 4, 5, 6, 7, 0, 0, 0, 11, 4, 0, 39, 5,
- 16, 17, 18, 19, 20, 21, 22, 58, 24, 25, 26, 27, 28, 29, 30, 31, 32, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 0, 11,
- 0, 11, 2, 38, 4, 15, 16, 17, 18, 19, 20, 21, 22, 58, 24, 25, 26, 27, 28, 29, 30, 31, 0, 23, 0, 62, 63,
- 59, 4, 0, 8, 9, 10, 69, 12, 13, 14, 0, 1, 2, 75, 4, 52, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 0, 32,
- 33, 34, 35, 36, 37, 23, 72, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 0, 1, 2, 3, 4, 5, 6, 7, 0,
- 59, 0, 11, 2, 5, 4, 0, 16, 17, 18, 19, 20, 21, 22, 0, 24, 25, 26, 27, 28, 29, 30, 31, 0, 23, 0, 0, 1, 2,
- 3, 4, 5, 6, 7, 11, 0, 0, 11, 39, 0, 5, 5, 16, 17, 18, 19, 20, 21, 22, 58, 24, 25, 26, 27, 28, 29, 30,
- 31, 0, 1, 2, 0, 1, 2, 3, 4, 0, 6, 7, 0, 56, 57, 11, 38, 39, 39, 0, 16, 17, 18, 19, 20, 21, 22, 58, 24,
- 25, 26, 27, 28, 29, 30, 31, 0, 1, 89, 3, 0, 0, 1, 2, 3, 4, 0, 6, 7, 0, 68, 15, 11, 0, 1, 2, 15, 16, 17,
- 18, 19, 20, 21, 22, 60, 24, 25, 26, 27, 28, 29, 30, 31, 0, 1, 2, 3, 4, 38, 6, 7, 0, 0, 1, 11, 3, 74, 0,
- 15, 16, 17, 18, 19, 20, 21, 22, 15, 24, 25, 26, 27, 28, 29, 30, 31, 0, 1, 2, 3, 4, 23, 6, 7, 0, 0, 1,
- 11, 3, 69, 6, 7, 16, 17, 18, 19, 20, 21, 22, 0, 24, 25, 26, 27, 28, 29, 30, 31, 0, 1, 2, 3, 4, 0, 6, 7,
- 0, 0, 1, 11, 3, 0, 6, 7, 16, 17, 18, 19, 20, 21, 22, 0, 24, 25, 26, 27, 28, 29, 30, 31, 0, 1, 2, 3, 4,
- 0, 6, 7, 0, 0, 5, 11, 0, 1, 23, 3, 16, 17, 18, 19, 20, 21, 22, 15, 24, 25, 26, 27, 28, 29, 30, 31, 0, 1,
- 2, 3, 4, 0, 6, 7, 0, 4, 0, 11, 39, 0, 1, 38, 16, 17, 18, 19, 20, 21, 22, 0, 24, 25, 26, 27, 28, 29, 30,
- 31, 0, 1, 2, 3, 4, 0, 6, 7, 0, 0, 0, 11, 0, 1, 5, 3, 16, 17, 18, 19, 20, 21, 22, 15, 24, 25, 26, 27, 28,
- 29, 30, 31, 0, 1, 2, 3, 4, 59, 6, 7, 59, 0, 0, 11, 2, 0, 70, 71, 16, 17, 18, 19, 20, 21, 22, 0, 24, 25,
- 26, 27, 28, 29, 30, 31, 0, 23, 2, 58, 4, 5, 0, 0, 8, 9, 10, 0, 12, 13, 14, 0, 0, 0, 1, 2, 0, 4, 0, 23,
- 8, 9, 10, 5, 12, 13, 14, 0, 32, 33, 34, 35, 36, 37, 23, 39, 23, 0, 0, 2, 0, 38, 0, 0, 32, 33, 34, 35,
- 36, 37, 8, 9, 10, 0, 12, 13, 14, 0, 56, 57, 23, 8, 9, 10, 0, 12, 13, 14, 0, 0, 52, 0, 56, 57, 32, 33,
- 34, 35, 36, 37, 73, 38, 0, 0, 15, 32, 33, 34, 35, 36, 37, 8, 9, 10, 0, 12, 13, 14, 0, 0, 0, 0, 8, 9, 10,
- 5, 12, 13, 14, 69, 0, 0, 0, 0, 15, 32, 33, 34, 35, 36, 37, 8, 9, 10, 0, 12, 13, 14, 0, 0, 0, 0, 8, 9,
- 10, 23, 12, 13, 14, 0, 1, 2, 0, 15, 5, 15, 15, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 23, 15,
- 15, 0, 0, 0, 0, 0, 0, 0, 0, 61, 0, 75, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static byte termCheck[] = TermCheck.termCheck;
-
- @Override
- public final int termCheck(int index) {
- return termCheck[index];
- }
-
- public interface TermAction {
- public final static char termAction[] = { 0, 1921, 1932, 1710, 1933, 1639, 68, 1624, 1363, 2135, 2136, 2137,
- 1647, 2251, 655, 2252, 62, 1696, 1685, 1506, 1934, 1935, 1936, 1937, 66, 1226, 1123, 2238, 2239, 2240,
- 1326, 1171, 1115, 2084, 2085, 2083, 2138, 2086, 2082, 1921, 2159, 2089, 2094, 2093, 2091, 2092, 2090,
- 2095, 2096, 2088, 2097, 2098, 2099, 1, 1383, 653, 515, 1921, 1, 32, 1, 1816, 191, 1921, 59, 1, 1, 1,
- 1929, 1, 1, 1, 1, 2147, 1502, 1947, 1948, 61, 51, 612, 1921, 1932, 1842, 1933, 1284, 724, 1385, 1372,
- 253, 1, 1, 1, 1, 1, 1, 1523, 1334, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 191, 1, 1, 1, 1921, 1, 1928, 1,
- 2117, 190, 182, 441, 1, 1, 1, 1921, 1, 1, 1, 1481, 1465, 1454, 1414, 2135, 2136, 2137, 439, 2251, 655,
- 2252, 54, 1151, 1481, 1465, 1454, 1414, 1, 1, 1, 1, 1, 1, 58, 183, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 190, 1, 1, 1, 1921, 1, 72, 1, 2117, 191, 1921, 248, 1, 1, 1, 286, 1, 1, 1, 2135, 2136, 2137, 60, 2251,
- 655, 2252, 1921, 1932, 48, 1933, 1425, 1492, 1675, 1075, 1921, 1921, 1, 1, 1, 1, 1, 1, 1425, 1492, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 191, 1, 1, 1, 1921, 1932, 50, 1933, 2117, 70, 1675, 249, 2135, 2136, 2137,
- 1318, 2251, 655, 2252, 1, 1, 1, 1921, 1, 1, 1, 400, 406, 1852, 1921, 1481, 1465, 1454, 1414, 1667, 1656,
- 2084, 2085, 2083, 2138, 2086, 2082, 1921, 1921, 2089, 2094, 2093, 2091, 2092, 2090, 2095, 2096, 2088,
- 2097, 2098, 2099, 88, 1383, 653, 515, 1, 1932, 1710, 1933, 1585, 1925, 1624, 1363, 1667, 1656, 1, 1647,
- 1503, 1921, 1921, 1927, 1696, 1685, 1506, 1934, 1935, 1936, 1937, 471, 1226, 1123, 2238, 2239, 2240,
- 1326, 1171, 1115, 680, 630, 760, 1921, 1932, 1710, 1933, 1616, 1925, 1624, 1363, 49, 43, 1921, 1647,
- 1675, 1, 1926, 1931, 1696, 1685, 1506, 1934, 1935, 1936, 1937, 1924, 1226, 1123, 2238, 2239, 2240, 1326,
- 1171, 1115, 1054, 64, 67, 1, 1932, 1710, 1933, 1639, 29, 1624, 1363, 1921, 1349, 265, 1647, 1503, 1396,
- 1, 3109, 1696, 1685, 1506, 1934, 1935, 1936, 1937, 1924, 1226, 1123, 2238, 2239, 2240, 1326, 1171, 1115,
- 129, 630, 1, 1667, 1656, 2179, 253, 1921, 2135, 2136, 2137, 991, 2251, 655, 2252, 262, 2147, 1272, 1930,
- 1, 29, 970, 949, 928, 907, 886, 844, 865, 823, 802, 781, 1921, 2084, 2085, 2083, 2138, 2086, 2082, 630,
- 1334, 2089, 2094, 2093, 2091, 2092, 2090, 2095, 2096, 2088, 2097, 2098, 2099, 1921, 1932, 1710, 1933,
- 1639, 1925, 1624, 1363, 1921, 2179, 268, 1647, 1503, 1927, 253, 1921, 1696, 1685, 1506, 1934, 1935,
- 1936, 1937, 57, 1226, 1123, 2238, 2239, 2240, 1326, 1171, 1115, 65, 630, 1921, 1921, 1932, 1710, 1933,
- 1593, 1925, 1624, 1363, 1349, 1921, 1, 1647, 1926, 1921, 1927, 90, 1696, 1685, 1506, 1934, 1935, 1936,
- 1937, 1924, 1226, 1123, 2238, 2239, 2240, 1326, 1171, 1115, 1, 2147, 1502, 1921, 1, 1, 1, 1, 1921, 1, 1,
- 71, 1425, 1492, 1, 1861, 1926, 90, 1921, 1, 1, 1, 1, 1, 1, 1, 1924, 1, 1, 1, 1, 1, 1, 1, 1, 1921, 1932,
- 1908, 1933, 256, 1, 1932, 1710, 1933, 1639, 1921, 1624, 1363, 211, 1012, 1525, 1647, 253, 2147, 1502,
- 3109, 1696, 1685, 1506, 1934, 1935, 1936, 1937, 2237, 1226, 1123, 2238, 2239, 2240, 1326, 1171, 1115,
- 1921, 1932, 1710, 1933, 1639, 1211, 1624, 1363, 1921, 185, 3233, 1647, 3233, 471, 271, 3109, 1696, 1685,
- 1506, 1934, 1935, 1936, 1937, 3109, 1226, 1123, 2238, 2239, 2240, 1326, 1171, 1115, 1921, 1932, 1710,
- 1933, 1639, 630, 1624, 1363, 53, 184, 3239, 1647, 3239, 1095, 1284, 724, 1696, 1685, 1506, 1934, 1935,
- 1936, 1937, 1921, 1226, 1123, 2238, 2239, 2240, 1326, 1171, 1115, 1921, 1932, 1718, 1933, 1639, 1921,
- 1624, 1363, 52, 206, 3240, 1647, 3240, 1921, 1284, 724, 1696, 1685, 1506, 1934, 1935, 1936, 1937, 329,
- 1226, 1123, 2238, 2239, 2240, 1326, 1171, 1115, 1921, 1932, 1723, 1933, 1639, 1, 1624, 1363, 325, 30,
- 1927, 1647, 208, 1932, 1909, 1933, 1696, 1685, 1506, 1934, 1935, 1936, 1937, 3109, 1226, 1123, 2238,
- 2239, 2240, 1326, 1171, 1115, 1921, 1932, 1746, 1933, 1639, 1921, 1624, 1363, 63, 1274, 1, 1647, 1926,
- 1, 1918, 489, 1696, 1685, 1506, 1934, 1935, 1936, 1937, 1921, 1226, 1123, 2238, 2239, 2240, 1326, 1171,
- 1115, 1921, 1932, 1758, 1933, 1639, 1921, 1624, 1363, 323, 1921, 1921, 1647, 207, 531, 1925, 531, 1696,
- 1685, 1506, 1934, 1935, 1936, 1937, 3109, 1226, 1123, 2238, 2239, 2240, 1326, 1171, 1115, 1, 1932, 1710,
- 1933, 1639, 2178, 1624, 1363, 2179, 1921, 270, 1647, 380, 1921, 1385, 1372, 1696, 1685, 1506, 1934,
- 1935, 1936, 1937, 1921, 1226, 1123, 2238, 2239, 2240, 1326, 1171, 1115, 20, 630, 1912, 1924, 1912, 1912,
- 56, 30, 179, 179, 179, 69, 179, 179, 179, 220, 130, 268, 2147, 1272, 55, 253, 285, 1912, 2135, 2136,
- 2137, 519, 2251, 655, 2252, 1921, 179, 179, 179, 179, 179, 179, 630, 1912, 630, 222, 1921, 417, 1921,
- 1950, 131, 207, 2084, 2085, 2083, 2138, 2086, 2082, 2135, 2136, 2137, 132, 2251, 655, 2252, 1921, 1425,
- 1492, 630, 2135, 2136, 2137, 1921, 2251, 655, 2252, 1921, 321, 519, 1921, 1425, 1492, 2084, 2085, 2083,
- 2138, 2086, 2082, 612, 3035, 201, 133, 3109, 2084, 2085, 2083, 2138, 2086, 2082, 2135, 2136, 2137, 250,
- 2251, 655, 2252, 1921, 42, 1, 1921, 1, 1, 1, 1931, 1, 1, 1, 591, 1921, 1921, 292, 251, 3109, 2084, 2085,
- 2083, 2138, 2086, 2082, 2135, 2136, 2137, 252, 2251, 655, 2252, 1921, 1921, 1921, 1921, 2135, 2136,
- 2137, 1131, 2251, 655, 2252, 1, 1915, 1272, 189, 1398, 1927, 1601, 1714, 1921, 189, 189, 1187, 1921,
- 1921, 1921, 1921, 1921, 1921, 185, 1921, 1921, 1921, 1921, 630, 184, 206, 1921, 1921, 1921, 1921, 1921,
- 1921, 1921, 1921, 1411, 1921, 1930, 1921, 1921, 1926 };
- }
-
- public final static char termAction[] = TermAction.termAction;
-
- @Override
- public final int termAction(int index) {
- return termAction[index];
- }
-
- public interface Asb {
- public final static char asb[] = { 0, 443, 1, 89, 69, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 119, 31,
- 51, 48, 55, 53, 61, 59, 63, 62, 65, 64, 37, 89, 119, 119, 119, 119, 318, 318, 263, 119, 354, 354, 472,
- 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
- 89, 89, 89, 89, 89, 318, 318, 318, 318, 29, 267, 80, 321, 316, 315, 235, 112, 247, 27, 247, 27, 27, 247,
- 27, 247, 139, 269, 318, 73, 48, 48, 53, 53, 53, 53, 51, 51, 59, 55, 55, 62, 61, 402, 64, 63, 195, 195,
- 195, 195, 387, 29, 263, 267, 83, 73, 162, 170, 318, 404, 324, 170, 27, 354, 354, 27, 354, 89, 387, 5,
- 267, 255, 162, 73, 169, 80, 318, 261, 139, 317, 326, 73, 170, 29, 357, 29, 390, 5, 255, 255, 89, 89, 73,
- 170, 321, 397, 396, 267, 326, 318, 29, 357, 390, 390, 392, 77, 255, 162, 73, 73, 318, 404, 324, 261,
- 357, 387, 436, 357, 390, 392, 467, 392, 387, 3, 470, 354, 89, 76, 162, 255, 326, 357, 438, 392, 387, 89,
- 354, 31, 7, 73, 354, 89, 255, 318, 317, 387, 231, 89, 230, 108, 267, 387, 73, 355, 438, 89, 108 };
- }
-
- public final static char asb[] = Asb.asb;
-
- @Override
- public final int asb(int index) {
- return asb[index];
- }
-
- public interface Asr {
- public final static byte asr[] = { 0, 89, 0, 5, 52, 23, 61, 16, 17, 11, 4, 6, 7, 24, 25, 18, 29, 30, 31, 2, 19,
- 20, 21, 22, 26, 27, 28, 1, 3, 15, 0, 23, 2, 61, 76, 16, 17, 69, 79, 80, 81, 82, 83, 85, 84, 86, 87, 88,
- 4, 62, 63, 6, 7, 57, 56, 64, 65, 66, 67, 70, 71, 11, 72, 73, 74, 52, 75, 77, 78, 68, 39, 89, 38, 58, 5,
- 0, 69, 23, 61, 0, 58, 5, 32, 8, 9, 10, 12, 13, 14, 19, 20, 21, 22, 26, 27, 28, 3, 16, 17, 11, 6, 7, 24,
- 25, 18, 29, 30, 31, 4, 2, 1, 0, 5, 68, 38, 58, 39, 75, 23, 18, 19, 20, 21, 22, 2, 16, 17, 11, 4, 6, 7,
- 24, 25, 26, 27, 28, 29, 30, 31, 1, 3, 53, 54, 55, 48, 40, 45, 43, 44, 42, 41, 46, 47, 49, 50, 51, 37,
- 34, 32, 33, 36, 35, 8, 9, 10, 13, 12, 14, 0, 32, 58, 5, 16, 17, 11, 4, 6, 7, 24, 25, 18, 29, 30, 31, 2,
- 1, 3, 19, 20, 21, 22, 26, 27, 28, 0, 11, 4, 6, 7, 62, 63, 56, 57, 64, 65, 66, 67, 70, 71, 72, 73, 74,
- 77, 78, 69, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 58, 39, 52, 89, 15, 68, 75, 5, 38, 0, 48, 40, 45,
- 43, 44, 42, 41, 46, 47, 49, 50, 51, 68, 75, 37, 34, 32, 33, 36, 35, 8, 9, 10, 12, 13, 14, 38, 1, 5, 39,
- 2, 23, 4, 0, 9, 32, 37, 10, 36, 35, 34, 8, 33, 12, 13, 14, 61, 76, 16, 17, 11, 6, 7, 62, 63, 56, 57, 64,
- 65, 66, 67, 70, 71, 72, 73, 74, 77, 78, 69, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 4, 2, 23, 38, 39, 5,
- 0, 4, 2, 23, 39, 5, 33, 40, 8, 41, 53, 34, 42, 35, 43, 44, 36, 9, 45, 46, 32, 54, 37, 55, 47, 48, 10,
- 49, 50, 51, 12, 13, 14, 59, 3, 1, 0, 33, 40, 8, 41, 53, 34, 42, 35, 43, 44, 36, 9, 45, 46, 32, 54, 37,
- 55, 47, 48, 10, 49, 50, 51, 1, 3, 12, 13, 14, 60, 5, 52, 0, 1, 3, 5, 52, 38, 0, 2, 5, 38, 39, 75, 23,
- 68, 0, 4, 33, 40, 8, 41, 53, 34, 42, 35, 43, 44, 36, 9, 45, 46, 32, 54, 37, 55, 47, 48, 10, 49, 50, 51,
- 1, 3, 12, 13, 14, 59, 0, 75, 5, 4, 1, 2, 68, 0, 18, 19, 20, 21, 22, 1, 3, 2, 16, 17, 11, 4, 6, 7, 24,
- 25, 26, 27, 28, 29, 30, 31, 60, 0, 5, 38, 52, 69, 0, 5, 39, 18, 19, 20, 21, 22, 1, 3, 2, 16, 17, 11, 4,
- 6, 7, 24, 25, 26, 27, 28, 29, 30, 31, 0 };
- }
-
- public final static byte asr[] = Asr.asr;
-
- @Override
- public final int asr(int index) {
- return asr[index];
- }
-
- public interface Nasb {
- public final static byte nasb[] = { 0, 99, 35, 26, 35, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 102, 35,
- 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 26, 102, 102, 102, 102, 10, 10, 85, 1, 21, 21, 122, 103, 26,
- 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 103, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
- 26, 26, 26, 10, 10, 10, 10, 12, 57, 48, 84, 15, 15, 65, 52, 66, 19, 66, 82, 82, 66, 81, 66, 60, 35, 10,
- 50, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 12, 12, 12, 12, 79, 35, 106, 35, 54,
- 50, 110, 49, 10, 89, 9, 49, 7, 7, 7, 7, 7, 26, 44, 79, 35, 42, 110, 50, 49, 36, 10, 75, 28, 35, 91, 50,
- 49, 68, 79, 35, 79, 24, 42, 79, 26, 26, 50, 49, 74, 15, 15, 57, 91, 10, 35, 114, 79, 7, 97, 17, 79, 110,
- 50, 50, 10, 89, 9, 38, 79, 44, 94, 70, 7, 97, 35, 35, 44, 23, 35, 7, 26, 46, 110, 36, 118, 114, 77, 97,
- 44, 26, 7, 112, 25, 50, 7, 26, 36, 10, 10, 44, 95, 26, 35, 77, 57, 44, 50, 35, 77, 26, 40 };
- }
-
- public final static byte nasb[] = Nasb.nasb;
-
- @Override
- public final int nasb(int index) {
- return nasb[index];
- }
-
- public interface Nasr {
- public final static char nasr[] = { 0, 80, 78, 77, 68, 76, 75, 1, 0, 11, 21, 0, 38, 32, 0, 28, 0, 100, 0, 91, 0,
- 73, 0, 88, 11, 38, 5, 0, 80, 79, 78, 77, 68, 76, 75, 0, 23, 0, 50, 49, 42, 40, 29, 0, 46, 0, 102, 0, 11,
- 5, 22, 0, 103, 0, 5, 11, 0, 29, 54, 0, 68, 63, 64, 65, 66, 56, 33, 0, 92, 0, 11, 37, 70, 0, 21, 50, 49,
- 42, 40, 11, 0, 94, 69, 0, 21, 49, 50, 11, 0, 29, 54, 11, 27, 0, 11, 72, 0, 62, 0, 11, 89, 0, 37, 11, 31,
- 0, 50, 49, 29, 0, 59, 0, 98, 0, 82, 11, 37, 0, 95, 11, 27, 0, 11, 90, 0 };
- }
-
- public final static char nasr[] = Nasr.nasr;
-
- @Override
- public final int nasr(int index) {
- return nasr[index];
- }
-
- public interface TerminalIndex {
- public final static char terminalIndex[] = { 0, 85, 2, 86, 9, 87, 10, 11, 48, 64, 76, 8, 96, 97, 98, 3, 6, 7,
- 68, 81, 82, 83, 84, 1, 12, 13, 93, 94, 95, 100, 101, 102, 69, 44, 55, 60, 63, 72, 42, 90, 47, 52, 56,
- 61, 62, 66, 67, 74, 75, 78, 79, 80, 91, 54, 70, 73, 16, 17, 89, 30, 107, 4, 14, 15, 18, 19, 20, 21, 29,
- 31, 22, 23, 24, 25, 26, 92, 5, 27, 28, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 108, 45, 46, 49, 50, 51,
- 53, 57, 58, 59, 65, 71, 77, 88, 99, 103, 104, 105, 106 };
- }
-
- public final static char terminalIndex[] = TerminalIndex.terminalIndex;
-
- @Override
- public final int terminalIndex(int index) {
- return terminalIndex[index];
- }
-
- public interface NonterminalIndex {
- public final static char nonterminalIndex[] = { 0, 114, 0, 0, 0, 116, 120, 121, 122, 123, 124, 0, 125, 126, 127,
- 128, 129, 130, 131, 0, 132, 111, 110, 142, 0, 0, 0, 135, 163, 0, 0, 115, 119, 141, 0, 0, 0, 154, 0, 159,
- 161, 0, 162, 0, 0, 0, 112, 134, 172, 173, 174, 0, 118, 150, 160, 169, 144, 0, 164, 167, 168, 171, 0,
- 145, 146, 147, 148, 149, 151, 0, 153, 158, 113, 117, 133, 136, 137, 138, 139, 140, 143, 0, 152, 156, 0,
- 0, 157, 166, 176, 109, 0, 0, 0, 155, 0, 165, 170, 175, 0, 177, 178, 0, 179, 180, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static char nonterminalIndex[] = NonterminalIndex.nonterminalIndex;
-
- @Override
- public final int nonterminalIndex(int index) {
- return nonterminalIndex[index];
- }
-
- public interface ScopePrefix {
- public final static char scopePrefix[] = { 120, 151, 130, 59, 69, 159, 26, 186, 35, 87, 105, 75, 6, 12, 16, 40,
- 83, 52, 141, 202, 212, 216, 52, 52, 195, 52, 1, 1, 1, 44, 47, 92, 115, 47, 220, 20, 145, 206, 177, 137,
- 165, 165, 165, 165, 165, 95, 95, 95 };
- }
-
- public final static char scopePrefix[] = ScopePrefix.scopePrefix;
-
- @Override
- public final int scopePrefix(int index) {
- return scopePrefix[index];
- }
-
- public interface ScopeSuffix {
- public final static char scopeSuffix[] = { 128, 128, 128, 4, 4, 128, 32, 192, 10, 4, 10, 80, 10, 10, 10, 10, 4,
- 4, 139, 10, 10, 4, 56, 80, 199, 65, 4, 4, 4, 10, 50, 4, 10, 118, 10, 23, 148, 209, 180, 139, 167, 169,
- 171, 173, 175, 102, 97, 110 };
- }
-
- public final static char scopeSuffix[] = ScopeSuffix.scopeSuffix;
-
- @Override
- public final int scopeSuffix(int index) {
- return scopeSuffix[index];
- }
-
- public interface ScopeLhs {
- public final static char scopeLhs[] = { 65, 63, 65, 28, 28, 63, 32, 111, 51, 28, 45, 28, 6, 6, 6, 51, 28, 28,
- 70, 6, 5, 5, 28, 28, 19, 28, 103, 102, 101, 49, 61, 28, 42, 53, 3, 88, 70, 5, 112, 70, 79, 78, 77, 76,
- 75, 45, 43, 45 };
- }
-
- public final static char scopeLhs[] = ScopeLhs.scopeLhs;
-
- @Override
- public final int scopeLhs(int index) {
- return scopeLhs[index];
- }
-
- public interface ScopeLa {
- public final static byte scopeLa[] = { 52, 52, 52, 58, 58, 52, 52, 95, 39, 58, 39, 19, 39, 39, 39, 39, 58, 58,
- 75, 39, 39, 58, 4, 19, 68, 32, 58, 58, 58, 39, 2, 58, 39, 1, 39, 69, 1, 39, 101, 75, 1, 53, 54, 54, 48,
- 2, 2, 2 };
- }
-
- public final static byte scopeLa[] = ScopeLa.scopeLa;
-
- @Override
- public final int scopeLa(int index) {
- return scopeLa[index];
- }
-
- public interface ScopeStateSet {
- public final static byte scopeStateSet[] = { 28, 28, 28, 32, 32, 28, 19, -1, 36, 32, 9, 32, 43, 43, 43, 36, 32,
- 32, 5, 43, 43, 43, 32, 32, 76, 32, 17, 1, 3, 36, 38, 32, 9, 11, 43, 103, 5, 43, -1, 5, 29, 29, 29, 29,
- 29, 9, 9, 9 };
- }
-
- public final static byte scopeStateSet[] = ScopeStateSet.scopeStateSet;
-
- @Override
- public final int scopeStateSet(int index) {
- return scopeStateSet[index];
- }
-
- public interface ScopeRhs {
- public final static char scopeRhs[] = { 0, 154, 23, 0, 110, 0, 159, 2, 31, 0, 111, 0, 159, 2, 30, 0, 159, 2, 29,
- 0, 206, 118, 0, 31, 149, 0, 169, 204, 118, 15, 145, 0, 112, 0, 0, 165, 118, 2, 156, 0, 165, 118, 2, 0,
- 168, 2, 0, 161, 118, 0, 172, 0, 194, 118, 23, 0, 9, 110, 0, 127, 32, 194, 118, 23, 0, 69, 132, 110, 0,
- 127, 194, 118, 32, 23, 0, 194, 118, 32, 23, 0, 132, 110, 0, 127, 32, 23, 0, 127, 194, 118, 23, 0, 127,
- 23, 0, 149, 0, 2, 0, 165, 111, 0, 2, 111, 0, 165, 118, 2, 149, 0, 2, 0, 164, 111, 0, 160, 2, 0, 159, 0,
- 169, 192, 118, 15, 108, 201, 53, 0, 112, 0, 169, 192, 118, 15, 201, 53, 0, 144, 0, 113, 0, 200, 118,
- 144, 0, 118, 144, 0, 155, 113, 0, 188, 118, 15, 199, 108, 198, 175, 0, 188, 118, 15, 198, 175, 0, 187,
- 0, 148, 0, 147, 0, 146, 0, 145, 0, 144, 0, 214, 94, 0, 77, 2, 115, 111, 113, 0, 214, 128, 138, 2, 98, 0,
- 53, 0, 0, 138, 78, 125, 0, 29, 132, 0, 159, 2, 18, 0, 159, 2, 0, 111, 119, 0, 197, 2, 112, 0, 138, 23,
- 112, 0, 138, 2, 0 };
- }
-
- public final static char scopeRhs[] = ScopeRhs.scopeRhs;
-
- @Override
- public final int scopeRhs(int index) {
- return scopeRhs[index];
- }
-
- public interface ScopeState {
- public final static char scopeState[] = { 0, 555, 0, 424, 0, 1797, 1224, 1763, 0, 1476, 520, 1396, 1502, 1360,
- 1272, 1214, 0, 655, 0, 591, 489, 450, 1809, 1787, 1410, 1244, 398, 0, 1184, 510, 369, 0, 1535, 1450,
- 628, 399, 520, 1743, 1272, 1214, 1503, 1655, 0, 1616, 1593, 1585, 471, 406, 1334, 612, 1385, 1372, 1349,
- 1492, 1425, 1481, 1465, 1454, 1414, 1675, 1667, 1656, 1284, 724, 1696, 1685, 1647, 1639, 1624, 1363,
- 1226, 1123, 1506, 1326, 1171, 1115, 1187, 1151, 1131, 591, 1095, 1075, 1054, 1033, 737, 1012, 701, 680,
- 630, 991, 970, 949, 928, 907, 886, 865, 844, 823, 802, 781, 369, 760, 659, 489, 450, 0 };
- }
-
- public final static char scopeState[] = ScopeState.scopeState;
-
- @Override
- public final int scopeState(int index) {
- return scopeState[index];
- }
-
- public interface InSymb {
- public final static char inSymb[] = { 0, 0, 196, 118, 181, 31, 30, 29, 18, 25, 24, 7, 6, 4, 11, 17, 16, 2, 112,
- 116, 115, 119, 117, 121, 120, 123, 122, 125, 124, 113, 38, 2, 2, 2, 2, 159, 138, 144, 118, 76, 61, 2,
- 23, 7, 6, 63, 62, 4, 67, 66, 65, 64, 56, 57, 11, 71, 70, 73, 72, 78, 77, 74, 88, 87, 86, 84, 85, 83, 82,
- 81, 80, 79, 69, 159, 159, 159, 159, 128, 118, 23, 2, 157, 156, 182, 13, 183, 175, 184, 55, 54, 185, 53,
- 186, 187, 108, 197, 138, 115, 115, 117, 117, 117, 117, 116, 116, 120, 119, 119, 122, 121, 138, 124, 123,
- 128, 128, 128, 128, 15, 145, 161, 136, 32, 127, 118, 4, 168, 118, 2, 23, 198, 176, 176, 201, 176, 68,
- 118, 15, 136, 4, 118, 127, 194, 166, 165, 134, 118, 167, 118, 154, 4, 108, 15, 108, 15, 118, 4, 136,
- 194, 32, 127, 4, 2, 147, 149, 118, 38, 165, 199, 118, 15, 118, 204, 118, 136, 118, 127, 127, 160, 118,
- 2, 161, 15, 188, 144, 189, 118, 192, 108, 193, 169, 38, 206, 61, 23, 207, 118, 166, 118, 118, 118, 192,
- 169, 69, 38, 153, 69, 154, 61, 23, 166, 165, 202, 188, 200, 68, 160, 2, 118, 169, 154, 38, 38, 68,
- 161 };
- }
-
- public final static char inSymb[] = InSymb.inSymb;
-
- @Override
- public final int inSymb(int index) {
- return inSymb[index];
- }
-
- public interface Name {
- public final static String name[] = { "", "[", "(", "{", ".", "->", "++", "--", "&", "*", "+", "-", "~", "!",
- "/", "%", ">>", "<<", "<", ">", "<=", ">=", "==", "!=", "^", "|", "&&", "||", "?", ":", "...", "=",
- "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", ",", "$empty", "auto", "break", "case",
- "char", "const", "continue", "default", "do", "double", "else", "enum", "extern", "float", "for",
- "goto", "if", "inline", "int", "long", "register", "restrict", "return", "short", "signed", "sizeof",
- "static", "struct", "switch", "typedef", "union", "unsigned", "void", "volatile", "while", "_Bool",
- "_Complex", "_Imaginary", "integer", "floating", "charconst", "stringlit", "identifier", "Completion",
- "EndOfCompletion", "Invalid", "RightBracket", "RightParen", "RightBrace", "SemiColon", "MYTHREAD",
- "THREADS", "UPC_MAX_BLOCKSIZE", "relaxed", "shared", "strict", "upc_barrier", "upc_localsizeof",
- "upc_blocksizeof", "upc_elemsizeof", "upc_notify", "upc_fence", "upc_wait", "upc_forall", "ERROR_TOKEN",
- "EOF_TOKEN", "no_cast_start", "]", ")", "}", ";", "identifier_token", "expression",
- "postfix_expression", "member_name", "type_id", "initializer_list", "unary_expression",
- "cast_expression", "multiplicative_expression", "additive_expression", "shift_expression",
- "relational_expression", "equality_expression", "and_expression", "exclusive_or_expression",
- "inclusive_or_expression", "logical_and_expression", "logical_or_expression", "assignment_expression",
- "expression_list_actual", "constant_expression", "declaration_specifiers",
- "simple_declaration_specifiers", "struct_or_union_declaration_sp" + "ecifiers",
- "elaborated_declaration_specifi" + "ers", "enum_declaration_specifiers",
- "typdef_name_declaration_specif" + "iers", "no_type_declaration_specifier", "type_qualifier",
- "no_type_declaration_specifiers", "simple_type_specifier", "struct_or_union_specifier",
- "elaborated_specifier", "enum_specifier", "type_name_specifier", "initializer", "declarator",
- "struct_or_union", "struct_declaration_list", "struct_declaration", "specifier_qualifier_list",
- "struct_declarator_list", "complete_struct_declarator", "enumerator_list", "enumerator",
- "direct_declarator", "pointer_seq", "array_direct_declarator", "basic_direct_declarator",
- "array_modifier", "parameter_type_list", "identifier_list", "array_modifier_type_qualifiers",
- "type_qualifier_list", "parameter_list", "parameter_declaration", "complete_parameter_declarator",
- "abstract_declarator", "direct_abstract_declarator", "basic_direct_abstract_declarat" + "or",
- "array_direct_abstract_declarat" + "or", "initializer_seq", "designated_initializer", "designation",
- "designator_list", "designator", "layout_qualifier" };
- }
-
- public final static String name[] = Name.name;
-
- @Override
- public final String name(int index) {
- return name[index];
- }
-
- public final static int ERROR_SYMBOL = 60, SCOPE_UBOUND = 47, SCOPE_SIZE = 48, MAX_NAME_LENGTH = 38;
-
- @Override
- public final int getErrorSymbol() {
- return ERROR_SYMBOL;
- }
-
- @Override
- public final int getScopeUbound() {
- return SCOPE_UBOUND;
- }
-
- @Override
- public final int getScopeSize() {
- return SCOPE_SIZE;
- }
-
- @Override
- public final int getMaxNameLength() {
- return MAX_NAME_LENGTH;
- }
-
- public final static int NUM_STATES = 223, NT_OFFSET = 107, LA_STATE_OFFSET = 2289, MAX_LA = 2, NUM_RULES = 368,
- NUM_NONTERMINALS = 131, NUM_SYMBOLS = 238, SEGMENT_SIZE = 8192, START_STATE = 1603, IDENTIFIER_SYMBOL = 0,
- EOFT_SYMBOL = 89, EOLT_SYMBOL = 89, ACCEPT_ACTION = 1908, ERROR_ACTION = 1921;
-
- public final static boolean BACKTRACK = true;
-
- @Override
- public final int getNumStates() {
- return NUM_STATES;
- }
-
- @Override
- public final int getNtOffset() {
- return NT_OFFSET;
- }
-
- @Override
- public final int getLaStateOffset() {
- return LA_STATE_OFFSET;
- }
-
- @Override
- public final int getMaxLa() {
- return MAX_LA;
- }
-
- @Override
- public final int getNumRules() {
- return NUM_RULES;
- }
-
- @Override
- public final int getNumNonterminals() {
- return NUM_NONTERMINALS;
- }
-
- @Override
- public final int getNumSymbols() {
- return NUM_SYMBOLS;
- }
-
- @Override
- public final int getSegmentSize() {
- return SEGMENT_SIZE;
- }
-
- @Override
- public final int getStartState() {
- return START_STATE;
- }
-
- @Override
- public final int getStartSymbol() {
- return lhs[0];
- }
-
- public final int getIdentifierSymbol() {
- return IDENTIFIER_SYMBOL;
- }
-
- @Override
- public final int getEoftSymbol() {
- return EOFT_SYMBOL;
- }
-
- @Override
- public final int getEoltSymbol() {
- return EOLT_SYMBOL;
- }
-
- @Override
- public final int getAcceptAction() {
- return ACCEPT_ACTION;
- }
-
- @Override
- public final int getErrorAction() {
- return ERROR_ACTION;
- }
-
- @Override
- public final boolean isValidForParser() {
- return isValidForParser;
- }
-
- @Override
- public final boolean getBacktrack() {
- return BACKTRACK;
- }
-
- @Override
- public final int originalState(int state) {
- return -baseCheck[state];
- }
-
- @Override
- public final int asi(int state) {
- return asb[originalState(state)];
- }
-
- @Override
- public final int nasi(int state) {
- return nasb[originalState(state)];
- }
-
- @Override
- public final int inSymbol(int state) {
- return inSymb[originalState(state)];
- }
-
- @Override
- public final int ntAction(int state, int sym) {
- return baseAction[state + sym];
- }
-
- @Override
- public final int tAction(int state, int sym) {
- int i = baseAction[state], k = i + sym;
- return termAction[termCheck[k] == sym ? k : i];
- }
-
- @Override
- public final int lookAhead(int la_state, int sym) {
- int k = la_state + sym;
- return termAction[termCheck[k] == sym ? k : la_state];
- }
-}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCNoCastExpressionParsersym.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCNoCastExpressionParsersym.java
deleted file mode 100644
index 716b8fa1e2c..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCNoCastExpressionParsersym.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2010 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.dom.parser.upc;
-
-public interface UPCNoCastExpressionParsersym {
- public final static int TK_auto = 33, TK_break = 90, TK_case = 91, TK_char = 40, TK_const = 8, TK_continue = 92,
- TK_default = 93, TK_do = 94, TK_double = 41, TK_else = 95, TK_enum = 53, TK_extern = 34, TK_float = 42,
- TK_for = 96, TK_goto = 97, TK_if = 98, TK_inline = 35, TK_int = 43, TK_long = 44, TK_register = 36,
- TK_restrict = 9, TK_return = 99, TK_short = 45, TK_signed = 46, TK_sizeof = 18, TK_static = 32,
- TK_struct = 54, TK_switch = 100, TK_typedef = 37, TK_union = 55, TK_unsigned = 47, TK_void = 48,
- TK_volatile = 10, TK_while = 101, TK__Bool = 49, TK__Complex = 50, TK__Imaginary = 51, TK_integer = 19,
- TK_floating = 20, TK_charconst = 21, TK_stringlit = 22, TK_identifier = 1, TK_Completion = 3,
- TK_EndOfCompletion = 5, TK_Invalid = 102, TK_LeftBracket = 23, TK_LeftParen = 2, TK_LeftBrace = 15,
- TK_Dot = 61, TK_Arrow = 76, TK_PlusPlus = 16, TK_MinusMinus = 17, TK_And = 11, TK_Star = 4, TK_Plus = 6,
- TK_Minus = 7, TK_Tilde = 24, TK_Bang = 25, TK_Slash = 62, TK_Percent = 63, TK_RightShift = 56,
- TK_LeftShift = 57, TK_LT = 64, TK_GT = 65, TK_LE = 66, TK_GE = 67, TK_EQ = 70, TK_NE = 71, TK_Caret = 72,
- TK_Or = 73, TK_AndAnd = 74, TK_OrOr = 77, TK_Question = 78, TK_Colon = 68, TK_DotDotDot = 59,
- TK_Assign = 69, TK_StarAssign = 79, TK_SlashAssign = 80, TK_PercentAssign = 81, TK_PlusAssign = 82,
- TK_MinusAssign = 83, TK_RightShiftAssign = 84, TK_LeftShiftAssign = 85, TK_AndAssign = 86,
- TK_CaretAssign = 87, TK_OrAssign = 88, TK_Comma = 38, TK_RightBracket = 58, TK_RightParen = 39,
- TK_RightBrace = 52, TK_SemiColon = 75, TK_MYTHREAD = 26, TK_THREADS = 27, TK_UPC_MAX_BLOCKSIZE = 28,
- TK_relaxed = 12, TK_shared = 13, TK_strict = 14, TK_upc_barrier = 103, TK_upc_localsizeof = 29,
- TK_upc_blocksizeof = 30, TK_upc_elemsizeof = 31, TK_upc_notify = 104, TK_upc_fence = 105, TK_upc_wait = 106,
- TK_upc_forall = 107, TK_ERROR_TOKEN = 60, TK_EOF_TOKEN = 89;
-
- public final static String orderedTerminalSymbols[] = { "", "identifier", "LeftParen", "Completion", "Star",
- "EndOfCompletion", "Plus", "Minus", "const", "restrict", "volatile", "And", "relaxed", "shared", "strict",
- "LeftBrace", "PlusPlus", "MinusMinus", "sizeof", "integer", "floating", "charconst", "stringlit",
- "LeftBracket", "Tilde", "Bang", "MYTHREAD", "THREADS", "UPC_MAX_BLOCKSIZE", "upc_localsizeof",
- "upc_blocksizeof", "upc_elemsizeof", "static", "auto", "extern", "inline", "register", "typedef", "Comma",
- "RightParen", "char", "double", "float", "int", "long", "short", "signed", "unsigned", "void", "_Bool",
- "_Complex", "_Imaginary", "RightBrace", "enum", "struct", "union", "RightShift", "LeftShift",
- "RightBracket", "DotDotDot", "ERROR_TOKEN", "Dot", "Slash", "Percent", "LT", "GT", "LE", "GE", "Colon",
- "Assign", "EQ", "NE", "Caret", "Or", "AndAnd", "SemiColon", "Arrow", "OrOr", "Question", "StarAssign",
- "SlashAssign", "PercentAssign", "PlusAssign", "MinusAssign", "RightShiftAssign", "LeftShiftAssign",
- "AndAssign", "CaretAssign", "OrAssign", "EOF_TOKEN", "break", "case", "continue", "default", "do", "else",
- "for", "goto", "if", "return", "switch", "while", "Invalid", "upc_barrier", "upc_notify", "upc_fence",
- "upc_wait", "upc_forall" };
-
- public final static boolean isValidForParser = true;
-}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCParser.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCParser.java
deleted file mode 100644
index f180117b510..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCParser.java
+++ /dev/null
@@ -1,2032 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2011 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.dom.parser.upc;
-
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.cdt.core.dom.ast.IASTBinaryExpression;
-import org.eclipse.cdt.core.dom.ast.IASTCastExpression;
-import org.eclipse.cdt.core.dom.ast.IASTCompletionNode;
-import org.eclipse.cdt.core.dom.ast.IASTCompositeTypeSpecifier;
-import org.eclipse.cdt.core.dom.ast.IASTElaboratedTypeSpecifier;
-import org.eclipse.cdt.core.dom.ast.IASTLiteralExpression;
-import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
-import org.eclipse.cdt.core.dom.ast.IASTTypeIdExpression;
-import org.eclipse.cdt.core.dom.ast.IASTUnaryExpression;
-import org.eclipse.cdt.core.dom.lrparser.CPreprocessorAdapter;
-import org.eclipse.cdt.core.dom.lrparser.IDOMTokenMap;
-import org.eclipse.cdt.core.dom.lrparser.IParser;
-import org.eclipse.cdt.core.dom.lrparser.ITokenCollector;
-import org.eclipse.cdt.core.dom.lrparser.action.ITokenStream;
-import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack;
-import org.eclipse.cdt.core.dom.lrparser.lpgextensions.FixedBacktrackingParser;
-import org.eclipse.cdt.core.dom.parser.IBuiltinBindingsProvider;
-import org.eclipse.cdt.core.dom.parser.upc.UPCASTNodeFactory;
-import org.eclipse.cdt.core.dom.parser.upc.UPCParserAction;
-import org.eclipse.cdt.core.dom.parser.upc.UPCSecondaryParserFactory;
-import org.eclipse.cdt.core.dom.upc.ast.IUPCASTKeywordExpression;
-import org.eclipse.cdt.core.dom.upc.ast.IUPCASTSynchronizationStatement;
-import org.eclipse.cdt.core.dom.upc.ast.IUPCASTUnarySizeofExpression;
-import org.eclipse.cdt.core.index.IIndex;
-import org.eclipse.cdt.core.parser.IScanner;
-
-import lpg.lpgjavaruntime.BadParseException;
-import lpg.lpgjavaruntime.BadParseSymFileException;
-import lpg.lpgjavaruntime.DiagnoseParser;
-import lpg.lpgjavaruntime.ErrorToken;
-import lpg.lpgjavaruntime.IToken;
-import lpg.lpgjavaruntime.LexStream;
-import lpg.lpgjavaruntime.Monitor;
-import lpg.lpgjavaruntime.NotBacktrackParseTableException;
-import lpg.lpgjavaruntime.NullExportedSymbolsException;
-import lpg.lpgjavaruntime.NullTerminalSymbolsException;
-import lpg.lpgjavaruntime.ParseErrorCodes;
-import lpg.lpgjavaruntime.ParseTable;
-import lpg.lpgjavaruntime.PrsStream;
-import lpg.lpgjavaruntime.RuleAction;
-import lpg.lpgjavaruntime.UndefinedEofSymbolException;
-import lpg.lpgjavaruntime.UnimplementedTerminalsException;
-
-public class UPCParser extends PrsStream
- implements RuleAction, ITokenStream, ITokenCollector, IParser<IASTTranslationUnit>
-
-{
- private static ParseTable prs = new UPCParserprs();
- private FixedBacktrackingParser btParser;
-
- public FixedBacktrackingParser getParser() {
- return btParser;
- }
-
- private void setResult(Object object) {
- btParser.setSym1(object);
- }
-
- public Object getRhsSym(int i) {
- return btParser.getSym(i);
- }
-
- public int getRhsTokenIndex(int i) {
- return btParser.getToken(i);
- }
-
- public IToken getRhsIToken(int i) {
- return super.getIToken(getRhsTokenIndex(i));
- }
-
- public int getRhsFirstTokenIndex(int i) {
- return btParser.getFirstToken(i);
- }
-
- public IToken getRhsFirstIToken(int i) {
- return super.getIToken(getRhsFirstTokenIndex(i));
- }
-
- public int getRhsLastTokenIndex(int i) {
- return btParser.getLastToken(i);
- }
-
- public IToken getRhsLastIToken(int i) {
- return super.getIToken(getRhsLastTokenIndex(i));
- }
-
- public int getLeftSpan() {
- return btParser.getFirstToken();
- }
-
- @Override
- public IToken getLeftIToken() {
- return super.getIToken(getLeftSpan());
- }
-
- public int getRightSpan() {
- return btParser.getLastToken();
- }
-
- @Override
- public IToken getRightIToken() {
- return super.getIToken(getRightSpan());
- }
-
- public int getRhsErrorTokenIndex(int i) {
- int index = btParser.getToken(i);
- IToken err = super.getIToken(index);
- return (err instanceof ErrorToken ? index : 0);
- }
-
- public ErrorToken getRhsErrorIToken(int i) {
- int index = btParser.getToken(i);
- IToken err = super.getIToken(index);
- return (ErrorToken) (err instanceof ErrorToken ? err : null);
- }
-
- public UPCParser(LexStream lexStream) {
- super(lexStream);
-
- try {
- super.remapTerminalSymbols(orderedTerminalSymbols(), UPCParserprs.EOFT_SYMBOL);
- } catch (NullExportedSymbolsException e) {
- } catch (NullTerminalSymbolsException e) {
- } catch (UnimplementedTerminalsException e) {
- java.util.ArrayList unimplemented_symbols = e.getSymbols();
- System.out.println("The Lexer will not scan the following token(s):");
- for (int i = 0; i < unimplemented_symbols.size(); i++) {
- Integer id = (Integer) unimplemented_symbols.get(i);
- System.out.println(" " + UPCParsersym.orderedTerminalSymbols[id.intValue()]);
- }
- System.out.println();
- } catch (UndefinedEofSymbolException e) {
- throw new Error(new UndefinedEofSymbolException("The Lexer does not implement the Eof symbol "
- + UPCParsersym.orderedTerminalSymbols[UPCParserprs.EOFT_SYMBOL]));
- }
- }
-
- @Override
- public String[] orderedTerminalSymbols() {
- return UPCParsersym.orderedTerminalSymbols;
- }
-
- public String getTokenKindName(int kind) {
- return UPCParsersym.orderedTerminalSymbols[kind];
- }
-
- public int getEOFTokenKind() {
- return UPCParserprs.EOFT_SYMBOL;
- }
-
- public PrsStream getParseStream() {
- return this;
- }
-
- //
- // Report error message for given error_token.
- //
- public final void reportErrorTokenMessage(int error_token, String msg) {
- int firsttok = super.getFirstErrorToken(error_token), lasttok = super.getLastErrorToken(error_token);
- String location = super.getFileName() + ':'
- + (firsttok > lasttok ? (super.getEndLine(lasttok) + ":" + super.getEndColumn(lasttok))
- : (super.getLine(error_token) + ":" + super.getColumn(error_token) + ":"
- + super.getEndLine(error_token) + ":" + super.getEndColumn(error_token)))
- + ": ";
- super.reportError((firsttok > lasttok ? ParseErrorCodes.INSERTION_CODE : ParseErrorCodes.SUBSTITUTION_CODE),
- location, msg);
- }
-
- public void parser() {
- parser(null, 0);
- }
-
- public void parser(Monitor monitor) {
- parser(monitor, 0);
- }
-
- public void parser(int error_repair_count) {
- parser(null, error_repair_count);
- }
-
- public void parser(Monitor monitor, int error_repair_count) {
- try {
- btParser = new FixedBacktrackingParser(monitor, this, prs, this);
- } catch (NotBacktrackParseTableException e) {
- throw new Error(new NotBacktrackParseTableException("Regenerate UPCParserprs.java with -BACKTRACK option"));
- } catch (BadParseSymFileException e) {
- throw new Error(new BadParseSymFileException("Bad Parser Symbol File -- UPCParsersym.java"));
- }
-
- try {
- btParser.parse(error_repair_count);
- } catch (BadParseException e) {
- reset(e.error_token); // point to error token
- DiagnoseParser diagnoseParser = new DiagnoseParser(this, prs);
- diagnoseParser.diagnose(e.error_token);
- }
- }
-
- private UPCParserAction action;
- private IASTCompletionNode compNode;
-
- public UPCParser(IScanner scanner, IDOMTokenMap tokenMap, IBuiltinBindingsProvider builtinBindingsProvider,
- IIndex index, Map<String, String> properties) {
- initActions(properties);
- action.initializeTranslationUnit(scanner, builtinBindingsProvider, index);
- CPreprocessorAdapter.runCPreprocessor(scanner, this, tokenMap);
- }
-
- private void initActions(Map<String, String> properties) {
- ScopedStack<Object> astStack = new ScopedStack<>();
-
- action = new UPCParserAction(this, astStack, new UPCASTNodeFactory(), UPCSecondaryParserFactory.getDefault());
- action.setParserProperties(properties);
-
- }
-
- @Override
- public void addToken(IToken token) {
- token.setKind(mapKind(token.getKind())); // TODO does mapKind need to be called?
- super.addToken(token);
- }
-
- @Override
- public IASTTranslationUnit parse() {
- // this has to be done, or... kaboom!
- setStreamLength(getSize());
-
- final int errorRepairCount = -1; // -1 means full error handling
- parser(null, errorRepairCount); // do the actual parse
- super.resetTokenStream(); // allow tokens to be garbage collected
-
- compNode = action.getASTCompletionNode(); // the completion node may be null
- return (IASTTranslationUnit) action.getParseResult();
- }
-
- @Override
- public IASTCompletionNode getCompletionNode() {
- return compNode;
- }
-
- // uncomment this method to use with backtracking parser
- @Override
- public List<IToken> getRuleTokens() {
- return getTokens().subList(getLeftSpan(), getRightSpan() + 1);
- }
-
- @Override
- public String[] getOrderedTerminalSymbols() {
- return UPCParsersym.orderedTerminalSymbols;
- }
-
- @Override
- @SuppressWarnings("nls")
- public String getName() {
- return "UPCParser";
- }
-
- @Override
- public void ruleAction(int ruleNumber) {
- switch (ruleNumber) {
-
- //
- // Rule 1: <openscope-ast> ::= $Empty
- //
- case 1: {
- action.openASTScope();
- break;
- }
-
- //
- // Rule 2: <empty> ::= $Empty
- //
- case 2: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 13: literal ::= integer
- //
- case 13: {
- action.consumeExpressionLiteral(IASTLiteralExpression.lk_integer_constant);
- break;
- }
-
- //
- // Rule 14: literal ::= floating
- //
- case 14: {
- action.consumeExpressionLiteral(IASTLiteralExpression.lk_float_constant);
- break;
- }
-
- //
- // Rule 15: literal ::= charconst
- //
- case 15: {
- action.consumeExpressionLiteral(IASTLiteralExpression.lk_char_constant);
- break;
- }
-
- //
- // Rule 16: literal ::= stringlit
- //
- case 16: {
- action.consumeExpressionLiteral(IASTLiteralExpression.lk_string_literal);
- break;
- }
-
- //
- // Rule 18: primary_expression ::= primary_expression_id
- //
- case 18: {
- action.consumeExpressionID();
- break;
- }
-
- //
- // Rule 19: primary_expression ::= ( expression )
- //
- case 19: {
- action.consumeExpressionBracketed();
- break;
- }
-
- //
- // Rule 22: postfix_expression ::= postfix_expression [ expression ]
- //
- case 22: {
- action.consumeExpressionArraySubscript();
- break;
- }
-
- //
- // Rule 23: postfix_expression ::= postfix_expression ( expression_list_opt )
- //
- case 23: {
- action.consumeExpressionFunctionCall();
- break;
- }
-
- //
- // Rule 24: postfix_expression ::= postfix_expression . member_name
- //
- case 24: {
- action.consumeExpressionFieldReference(false);
- break;
- }
-
- //
- // Rule 25: postfix_expression ::= postfix_expression -> member_name
- //
- case 25: {
- action.consumeExpressionFieldReference(true);
- break;
- }
-
- //
- // Rule 26: postfix_expression ::= postfix_expression ++
- //
- case 26: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixIncr);
- break;
- }
-
- //
- // Rule 27: postfix_expression ::= postfix_expression --
- //
- case 27: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixDecr);
- break;
- }
-
- //
- // Rule 28: postfix_expression ::= ( type_id ) initializer_list
- //
- case 28: {
- action.consumeExpressionTypeIdInitializer();
- break;
- }
-
- //
- // Rule 33: unary_expression ::= ++ unary_expression
- //
- case 33: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixIncr);
- break;
- }
-
- //
- // Rule 34: unary_expression ::= -- unary_expression
- //
- case 34: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixDecr);
- break;
- }
-
- //
- // Rule 35: unary_expression ::= & cast_expression
- //
- case 35: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_amper);
- break;
- }
-
- //
- // Rule 36: unary_expression ::= * cast_expression
- //
- case 36: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_star);
- break;
- }
-
- //
- // Rule 37: unary_expression ::= + cast_expression
- //
- case 37: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_plus);
- break;
- }
-
- //
- // Rule 38: unary_expression ::= - cast_expression
- //
- case 38: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_minus);
- break;
- }
-
- //
- // Rule 39: unary_expression ::= ~ cast_expression
- //
- case 39: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_tilde);
- break;
- }
-
- //
- // Rule 40: unary_expression ::= ! cast_expression
- //
- case 40: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_not);
- break;
- }
-
- //
- // Rule 41: unary_expression ::= sizeof unary_expression
- //
- case 41: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_sizeof);
- break;
- }
-
- //
- // Rule 42: unary_expression ::= sizeof ( type_id )
- //
- case 42: {
- action.consumeExpressionTypeId(IASTTypeIdExpression.op_sizeof);
- break;
- }
-
- //
- // Rule 44: cast_expression ::= ( type_id ) cast_expression
- //
- case 44: {
- action.consumeExpressionCast(IASTCastExpression.op_cast);
- break;
- }
-
- //
- // Rule 46: multiplicative_expression ::= multiplicative_expression * cast_expression
- //
- case 46: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_multiply);
- break;
- }
-
- //
- // Rule 47: multiplicative_expression ::= multiplicative_expression / cast_expression
- //
- case 47: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_divide);
- break;
- }
-
- //
- // Rule 48: multiplicative_expression ::= multiplicative_expression % cast_expression
- //
- case 48: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_modulo);
- break;
- }
-
- //
- // Rule 50: additive_expression ::= additive_expression + multiplicative_expression
- //
- case 50: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_plus);
- break;
- }
-
- //
- // Rule 51: additive_expression ::= additive_expression - multiplicative_expression
- //
- case 51: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_minus);
- break;
- }
-
- //
- // Rule 53: shift_expression ::= shift_expression << additive_expression
- //
- case 53: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftLeft);
- break;
- }
-
- //
- // Rule 54: shift_expression ::= shift_expression >> additive_expression
- //
- case 54: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftRight);
- break;
- }
-
- //
- // Rule 56: relational_expression ::= relational_expression < shift_expression
- //
- case 56: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_lessThan);
- break;
- }
-
- //
- // Rule 57: relational_expression ::= relational_expression > shift_expression
- //
- case 57: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_greaterThan);
- break;
- }
-
- //
- // Rule 58: relational_expression ::= relational_expression <= shift_expression
- //
- case 58: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_lessEqual);
- break;
- }
-
- //
- // Rule 59: relational_expression ::= relational_expression >= shift_expression
- //
- case 59: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_greaterEqual);
- break;
- }
-
- //
- // Rule 61: equality_expression ::= equality_expression == relational_expression
- //
- case 61: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_equals);
- break;
- }
-
- //
- // Rule 62: equality_expression ::= equality_expression != relational_expression
- //
- case 62: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_notequals);
- break;
- }
-
- //
- // Rule 64: and_expression ::= and_expression & equality_expression
- //
- case 64: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryAnd);
- break;
- }
-
- //
- // Rule 66: exclusive_or_expression ::= exclusive_or_expression ^ and_expression
- //
- case 66: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryXor);
- break;
- }
-
- //
- // Rule 68: inclusive_or_expression ::= inclusive_or_expression | exclusive_or_expression
- //
- case 68: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryOr);
- break;
- }
-
- //
- // Rule 70: logical_and_expression ::= logical_and_expression && inclusive_or_expression
- //
- case 70: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_logicalAnd);
- break;
- }
-
- //
- // Rule 72: logical_or_expression ::= logical_or_expression || logical_and_expression
- //
- case 72: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_logicalOr);
- break;
- }
-
- //
- // Rule 74: conditional_expression ::= logical_or_expression ? expression : assignment_expression
- //
- case 74: {
- action.consumeExpressionConditional();
- break;
- }
-
- //
- // Rule 76: assignment_expression ::= unary_expression = assignment_expression
- //
- case 76: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_assign);
- break;
- }
-
- //
- // Rule 77: assignment_expression ::= unary_expression *= assignment_expression
- //
- case 77: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_multiplyAssign);
- break;
- }
-
- //
- // Rule 78: assignment_expression ::= unary_expression /= assignment_expression
- //
- case 78: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_divideAssign);
- break;
- }
-
- //
- // Rule 79: assignment_expression ::= unary_expression %= assignment_expression
- //
- case 79: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_moduloAssign);
- break;
- }
-
- //
- // Rule 80: assignment_expression ::= unary_expression += assignment_expression
- //
- case 80: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_plusAssign);
- break;
- }
-
- //
- // Rule 81: assignment_expression ::= unary_expression -= assignment_expression
- //
- case 81: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_minusAssign);
- break;
- }
-
- //
- // Rule 82: assignment_expression ::= unary_expression <<= assignment_expression
- //
- case 82: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftLeftAssign);
- break;
- }
-
- //
- // Rule 83: assignment_expression ::= unary_expression >>= assignment_expression
- //
- case 83: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftRightAssign);
- break;
- }
-
- //
- // Rule 84: assignment_expression ::= unary_expression &= assignment_expression
- //
- case 84: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryAndAssign);
- break;
- }
-
- //
- // Rule 85: assignment_expression ::= unary_expression ^= assignment_expression
- //
- case 85: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryXorAssign);
- break;
- }
-
- //
- // Rule 86: assignment_expression ::= unary_expression |= assignment_expression
- //
- case 86: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryOrAssign);
- break;
- }
-
- //
- // Rule 89: expression_list ::= <openscope-ast> expression_list_actual
- //
- case 89: {
- action.consumeExpressionList();
- break;
- }
-
- //
- // Rule 91: expression_list_opt ::= $Empty
- //
- case 91: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 101: statement ::= ERROR_TOKEN
- //
- case 101: {
- action.consumeStatementProblem();
- break;
- }
-
- //
- // Rule 102: labeled_statement ::= identifier_token : statement
- //
- case 102: {
- action.consumeStatementLabeled();
- break;
- }
-
- //
- // Rule 103: labeled_statement ::= case constant_expression : statement
- //
- case 103: {
- action.consumeStatementCase();
- break;
- }
-
- //
- // Rule 104: labeled_statement ::= default : statement
- //
- case 104: {
- action.consumeStatementDefault();
- break;
- }
-
- //
- // Rule 105: compound_statement ::= { }
- //
- case 105: {
- action.consumeStatementCompoundStatement(false);
- break;
- }
-
- //
- // Rule 106: compound_statement ::= { <openscope-ast> block_item_list }
- //
- case 106: {
- action.consumeStatementCompoundStatement(true);
- break;
- }
-
- //
- // Rule 110: block_item ::= declaration
- //
- case 110: {
- action.consumeStatementDeclarationWithDisambiguation();
- break;
- }
-
- //
- // Rule 111: expression_statement ::= ;
- //
- case 111: {
- action.consumeStatementNull();
- break;
- }
-
- //
- // Rule 112: expression_statement ::= expression_in_statement ;
- //
- case 112: {
- action.consumeStatementExpression();
- break;
- }
-
- //
- // Rule 113: selection_statement ::= if ( expression ) statement
- //
- case 113: {
- action.consumeStatementIf(false);
- break;
- }
-
- //
- // Rule 114: selection_statement ::= if ( expression ) statement else statement
- //
- case 114: {
- action.consumeStatementIf(true);
- break;
- }
-
- //
- // Rule 115: selection_statement ::= switch ( expression ) statement
- //
- case 115: {
- action.consumeStatementSwitch();
- break;
- }
-
- //
- // Rule 117: expression_opt ::= $Empty
- //
- case 117: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 118: iteration_statement ::= do statement while ( expression ) ;
- //
- case 118: {
- action.consumeStatementDoLoop(true);
- break;
- }
-
- //
- // Rule 119: iteration_statement ::= do statement
- //
- case 119: {
- action.consumeStatementDoLoop(false);
- break;
- }
-
- //
- // Rule 120: iteration_statement ::= while ( expression ) statement
- //
- case 120: {
- action.consumeStatementWhileLoop();
- break;
- }
-
- //
- // Rule 121: iteration_statement ::= for ( expression_opt ; expression_opt ; expression_opt ) statement
- //
- case 121: {
- action.consumeStatementForLoop();
- break;
- }
-
- //
- // Rule 122: iteration_statement ::= for ( declaration expression_opt ; expression_opt ) statement
- //
- case 122: {
- action.consumeStatementForLoop();
- break;
- }
-
- //
- // Rule 123: jump_statement ::= goto identifier_token ;
- //
- case 123: {
- action.consumeStatementGoto();
- break;
- }
-
- //
- // Rule 124: jump_statement ::= continue ;
- //
- case 124: {
- action.consumeStatementContinue();
- break;
- }
-
- //
- // Rule 125: jump_statement ::= break ;
- //
- case 125: {
- action.consumeStatementBreak();
- break;
- }
-
- //
- // Rule 126: jump_statement ::= return ;
- //
- case 126: {
- action.consumeStatementReturn(false);
- break;
- }
-
- //
- // Rule 127: jump_statement ::= return expression ;
- //
- case 127: {
- action.consumeStatementReturn(true);
- break;
- }
-
- //
- // Rule 128: declaration ::= declaration_specifiers ;
- //
- case 128: {
- action.consumeDeclarationSimple(false);
- break;
- }
-
- //
- // Rule 129: declaration ::= declaration_specifiers <openscope-ast> init_declarator_list ;
- //
- case 129: {
- action.consumeDeclarationSimple(true);
- break;
- }
-
- //
- // Rule 130: declaration_specifiers ::= <openscope-ast> simple_declaration_specifiers
- //
- case 130: {
- action.consumeDeclarationSpecifiersSimple();
- break;
- }
-
- //
- // Rule 131: declaration_specifiers ::= <openscope-ast> struct_or_union_declaration_specifiers
- //
- case 131: {
- action.consumeDeclarationSpecifiersStructUnionEnum();
- break;
- }
-
- //
- // Rule 132: declaration_specifiers ::= <openscope-ast> elaborated_declaration_specifiers
- //
- case 132: {
- action.consumeDeclarationSpecifiersStructUnionEnum();
- break;
- }
-
- //
- // Rule 133: declaration_specifiers ::= <openscope-ast> enum_declaration_specifiers
- //
- case 133: {
- action.consumeDeclarationSpecifiersStructUnionEnum();
- break;
- }
-
- //
- // Rule 134: declaration_specifiers ::= <openscope-ast> typdef_name_declaration_specifiers
- //
- case 134: {
- action.consumeDeclarationSpecifiersTypedefName();
- break;
- }
-
- //
- // Rule 159: init_declarator ::= complete_declarator = initializer
- //
- case 159: {
- action.consumeDeclaratorWithInitializer(true);
- break;
- }
-
- //
- // Rule 161: storage_class_specifier ::= storage_class_specifier_token
- //
- case 161: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 167: simple_type_specifier ::= simple_type_specifier_token
- //
- case 167: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 180: type_name_specifier ::= identifier_token
- //
- case 180: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 181: struct_or_union_specifier ::= struct_or_union struct_or_union_specifier_hook { <openscope-ast> struct_declaration_list_opt }
- //
- case 181: {
- action.consumeTypeSpecifierComposite(false);
- break;
- }
-
- //
- // Rule 182: struct_or_union_specifier ::= struct_or_union struct_or_union_specifier_hook identifier_token struct_or_union_specifier_suffix_hook { <openscope-ast> struct_declaration_list_opt }
- //
- case 182: {
- action.consumeTypeSpecifierComposite(true);
- break;
- }
-
- //
- // Rule 187: elaborated_specifier ::= struct elaborated_specifier_hook identifier_token
- //
- case 187: {
- action.consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_struct);
- break;
- }
-
- //
- // Rule 188: elaborated_specifier ::= union elaborated_specifier_hook identifier_token
- //
- case 188: {
- action.consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_union);
- break;
- }
-
- //
- // Rule 189: elaborated_specifier ::= enum elaborated_specifier_hook identifier_token
- //
- case 189: {
- action.consumeTypeSpecifierElaborated(IASTElaboratedTypeSpecifier.k_enum);
- break;
- }
-
- //
- // Rule 195: struct_declaration ::= specifier_qualifier_list <openscope-ast> struct_declarator_list ;
- //
- case 195: {
- action.consumeStructDeclaration(true);
- break;
- }
-
- //
- // Rule 196: struct_declaration ::= specifier_qualifier_list ;
- //
- case 196: {
- action.consumeStructDeclaration(false);
- break;
- }
-
- //
- // Rule 197: struct_declaration ::= ERROR_TOKEN
- //
- case 197: {
- action.consumeDeclarationProblem();
- break;
- }
-
- //
- // Rule 203: struct_declarator ::= : constant_expression
- //
- case 203: {
- action.consumeBitField(false);
- break;
- }
-
- //
- // Rule 204: struct_declarator ::= declarator : constant_expression
- //
- case 204: {
- action.consumeBitField(true);
- break;
- }
-
- //
- // Rule 205: enum_specifier ::= enum enum_specifier_hook { <openscope-ast> enumerator_list_opt comma_opt }
- //
- case 205: {
- action.consumeTypeSpecifierEnumeration(false);
- break;
- }
-
- //
- // Rule 206: enum_specifier ::= enum enum_specifier_hook identifier_token { <openscope-ast> enumerator_list_opt comma_opt }
- //
- case 206: {
- action.consumeTypeSpecifierEnumeration(true);
- break;
- }
-
- //
- // Rule 212: enumerator ::= identifier_token
- //
- case 212: {
- action.consumeEnumerator(false);
- break;
- }
-
- //
- // Rule 213: enumerator ::= identifier_token = constant_expression
- //
- case 213: {
- action.consumeEnumerator(true);
- break;
- }
-
- //
- // Rule 214: type_qualifier ::= type_qualifier_token
- //
- case 214: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 218: function_specifier ::= inline
- //
- case 218: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 220: declarator ::= <openscope-ast> pointer_seq direct_declarator
- //
- case 220: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 225: basic_direct_declarator ::= declarator_id_name
- //
- case 225: {
- action.consumeDirectDeclaratorIdentifier();
- break;
- }
-
- //
- // Rule 226: basic_direct_declarator ::= ( declarator )
- //
- case 226: {
- action.consumeDirectDeclaratorBracketed();
- break;
- }
-
- //
- // Rule 227: declarator_id_name ::= identifier
- //
- case 227: {
- action.consumeIdentifierName();
- break;
- }
-
- //
- // Rule 228: array_direct_declarator ::= basic_direct_declarator array_modifier
- //
- case 228: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 229: array_direct_declarator ::= array_direct_declarator array_modifier
- //
- case 229: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 231: function_direct_declarator ::= basic_direct_declarator ( <openscope-ast> parameter_type_list )
- //
- case 231: {
- action.consumeDirectDeclaratorFunctionDeclarator(true, true);
- break;
- }
-
- //
- // Rule 232: function_direct_declarator ::= basic_direct_declarator ( )
- //
- case 232: {
- action.consumeDirectDeclaratorFunctionDeclarator(true, false);
- break;
- }
-
- //
- // Rule 234: function_declarator ::= <openscope-ast> pointer_seq function_direct_declarator
- //
- case 234: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 235: knr_direct_declarator ::= basic_direct_declarator ( <openscope-ast> identifier_list )
- //
- case 235: {
- action.consumeDirectDeclaratorFunctionDeclaratorKnR();
- break;
- }
-
- //
- // Rule 237: knr_function_declarator ::= <openscope-ast> pointer_seq knr_direct_declarator
- //
- case 237: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 238: identifier_list ::= identifier
- //
- case 238: {
- action.consumeIdentifierKnR();
- break;
- }
-
- //
- // Rule 239: identifier_list ::= identifier_list , identifier
- //
- case 239: {
- action.consumeIdentifierKnR();
- break;
- }
-
- //
- // Rule 240: array_modifier ::= [ ]
- //
- case 240: {
- action.consumeDirectDeclaratorArrayModifier(false);
- break;
- }
-
- //
- // Rule 241: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers ]
- //
- case 241: {
- action.consumeDirectDeclaratorModifiedArrayModifier(false, false, true, false);
- break;
- }
-
- //
- // Rule 242: array_modifier ::= [ assignment_expression ]
- //
- case 242: {
- action.consumeDirectDeclaratorArrayModifier(true);
- break;
- }
-
- //
- // Rule 243: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers assignment_expression ]
- //
- case 243: {
- action.consumeDirectDeclaratorModifiedArrayModifier(false, false, true, true);
- break;
- }
-
- //
- // Rule 244: array_modifier ::= [ static assignment_expression ]
- //
- case 244: {
- action.consumeDirectDeclaratorModifiedArrayModifier(true, false, false, true);
- break;
- }
-
- //
- // Rule 245: array_modifier ::= [ static <openscope-ast> array_modifier_type_qualifiers assignment_expression ]
- //
- case 245: {
- action.consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true);
- break;
- }
-
- //
- // Rule 246: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers static assignment_expression ]
- //
- case 246: {
- action.consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true);
- break;
- }
-
- //
- // Rule 247: array_modifier ::= [ * ]
- //
- case 247: {
- action.consumeDirectDeclaratorModifiedArrayModifier(false, true, false, false);
- break;
- }
-
- //
- // Rule 248: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers * ]
- //
- case 248: {
- action.consumeDirectDeclaratorModifiedArrayModifier(false, true, true, false);
- break;
- }
-
- //
- // Rule 250: pointer_seq ::= pointer_hook * pointer_hook
- //
- case 250: {
- action.consumePointer();
- break;
- }
-
- //
- // Rule 251: pointer_seq ::= pointer_seq pointer_hook * pointer_hook
- //
- case 251: {
- action.consumePointer();
- break;
- }
-
- //
- // Rule 252: pointer_seq ::= pointer_hook * pointer_hook <openscope-ast> type_qualifier_list
- //
- case 252: {
- action.consumePointerTypeQualifierList();
- break;
- }
-
- //
- // Rule 253: pointer_seq ::= pointer_seq pointer_hook * pointer_hook <openscope-ast> type_qualifier_list
- //
- case 253: {
- action.consumePointerTypeQualifierList();
- break;
- }
-
- //
- // Rule 257: parameter_type_list ::= parameter_list
- //
- case 257: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 258: parameter_type_list ::= parameter_list , ...
- //
- case 258: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 259: parameter_type_list ::= ...
- //
- case 259: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 262: parameter_declaration ::= declaration_specifiers complete_parameter_declarator
- //
- case 262: {
- action.consumeParameterDeclaration();
- break;
- }
-
- //
- // Rule 263: parameter_declaration ::= declaration_specifiers
- //
- case 263: {
- action.consumeParameterDeclarationWithoutDeclarator();
- break;
- }
-
- //
- // Rule 266: type_id ::= specifier_qualifier_list
- //
- case 266: {
- action.consumeTypeId(false);
- break;
- }
-
- //
- // Rule 267: type_id ::= specifier_qualifier_list abstract_declarator
- //
- case 267: {
- action.consumeTypeId(true);
- break;
- }
-
- //
- // Rule 269: abstract_declarator ::= <openscope-ast> pointer_seq
- //
- case 269: {
- action.consumeDeclaratorWithPointer(false);
- break;
- }
-
- //
- // Rule 270: abstract_declarator ::= <openscope-ast> pointer_seq direct_abstract_declarator
- //
- case 270: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 274: basic_direct_abstract_declarator ::= ( abstract_declarator )
- //
- case 274: {
- action.consumeDirectDeclaratorBracketed();
- break;
- }
-
- //
- // Rule 275: array_direct_abstract_declarator ::= array_modifier
- //
- case 275: {
- action.consumeDirectDeclaratorArrayDeclarator(false);
- break;
- }
-
- //
- // Rule 276: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier
- //
- case 276: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 277: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier
- //
- case 277: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 278: function_direct_abstract_declarator ::= ( )
- //
- case 278: {
- action.consumeDirectDeclaratorFunctionDeclarator(false, false);
- break;
- }
-
- //
- // Rule 279: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( )
- //
- case 279: {
- action.consumeDirectDeclaratorFunctionDeclarator(true, false);
- break;
- }
-
- //
- // Rule 280: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_type_list )
- //
- case 280: {
- action.consumeDirectDeclaratorFunctionDeclarator(false, true);
- break;
- }
-
- //
- // Rule 281: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( <openscope-ast> parameter_type_list )
- //
- case 281: {
- action.consumeDirectDeclaratorFunctionDeclarator(true, true);
- break;
- }
-
- //
- // Rule 282: initializer ::= assignment_expression
- //
- case 282: {
- action.consumeInitializer();
- break;
- }
-
- //
- // Rule 283: initializer ::= initializer_list
- //
- case 283: {
- action.consumeInitializer();
- break;
- }
-
- //
- // Rule 284: initializer_list ::= start_initializer_list { <openscope-ast> initializer_seq comma_opt } end_initializer_list
- //
- case 284: {
- action.consumeInitializerList();
- break;
- }
-
- //
- // Rule 285: initializer_list ::= { <openscope-ast> }
- //
- case 285: {
- action.consumeInitializerList();
- break;
- }
-
- //
- // Rule 286: start_initializer_list ::= $Empty
- //
- case 286: {
- action.initializerListStart();
- break;
- }
-
- //
- // Rule 287: end_initializer_list ::= $Empty
- //
- case 287: {
- action.initializerListEnd();
- break;
- }
-
- //
- // Rule 292: designated_initializer ::= <openscope-ast> designation = initializer
- //
- case 292: {
- action.consumeInitializerDesignated();
- break;
- }
-
- //
- // Rule 296: designator_base ::= [ constant_expression ]
- //
- case 296: {
- action.consumeDesignatorArray();
- break;
- }
-
- //
- // Rule 297: designator_base ::= . identifier_token
- //
- case 297: {
- action.consumeDesignatorField();
- break;
- }
-
- //
- // Rule 298: designator ::= [ constant_expression ]
- //
- case 298: {
- action.consumeDesignatorArray();
- break;
- }
-
- //
- // Rule 299: designator ::= . identifier_token
- //
- case 299: {
- action.consumeDesignatorField();
- break;
- }
-
- //
- // Rule 300: translation_unit ::= external_declaration_list
- //
- case 300: {
- action.consumeTranslationUnit();
- break;
- }
-
- //
- // Rule 301: translation_unit ::= $Empty
- //
- case 301: {
- action.consumeTranslationUnit();
- break;
- }
-
- //
- // Rule 306: external_declaration ::= ;
- //
- case 306: {
- action.consumeDeclarationEmpty();
- break;
- }
-
- //
- // Rule 307: external_declaration ::= ERROR_TOKEN
- //
- case 307: {
- action.consumeDeclarationProblem();
- break;
- }
-
- //
- // Rule 311: function_definition ::= <openscope-ast> function_declarator function_body
- //
- case 311: {
- action.consumeFunctionDefinition(false);
- break;
- }
-
- //
- // Rule 312: function_definition ::= declaration_specifiers <openscope-ast> knr_function_declarator <openscope-ast> declaration_list compound_statement
- //
- case 312: {
- action.consumeFunctionDefinitionKnR();
- break;
- }
-
- //
- // Rule 313: normal_function_definition ::= declaration_specifiers <openscope-ast> function_declarator function_body
- //
- case 313: {
- action.consumeFunctionDefinition(true);
- break;
- }
-
- //
- // Rule 314: function_body ::= { }
- //
- case 314: {
- action.consumeStatementCompoundStatement(false);
- break;
- }
-
- //
- // Rule 315: function_body ::= { <openscope-ast> block_item_list }
- //
- case 315: {
- action.consumeStatementCompoundStatement(true);
- break;
- }
-
- //
- // Rule 316: literal ::= MYTHREAD
- //
- case 316: {
- action.consumeKeywordExpression(IUPCASTKeywordExpression.kw_mythread);
- break;
- }
-
- //
- // Rule 317: literal ::= THREADS
- //
- case 317: {
- action.consumeKeywordExpression(IUPCASTKeywordExpression.kw_threads);
- break;
- }
-
- //
- // Rule 318: literal ::= UPC_MAX_BLOCKSIZE
- //
- case 318: {
- action.consumeKeywordExpression(IUPCASTKeywordExpression.kw_upc_max_block_size);
- break;
- }
-
- //
- // Rule 319: unary_expression ::= upc_localsizeof unary_expression
- //
- case 319: {
- action.consumeExpressionUnarySizeofOperator(IUPCASTUnarySizeofExpression.upc_localsizeof);
- break;
- }
-
- //
- // Rule 320: unary_expression ::= upc_localsizeof ( type_id )
- //
- case 320: {
- action.consumeExpressionSizeofTypeId(IUPCASTUnarySizeofExpression.upc_localsizeof);
- break;
- }
-
- //
- // Rule 321: unary_expression ::= upc_blocksizeof unary_expression
- //
- case 321: {
- action.consumeExpressionUnarySizeofOperator(IUPCASTUnarySizeofExpression.upc_blocksizeof);
- break;
- }
-
- //
- // Rule 322: unary_expression ::= upc_blocksizeof ( type_id )
- //
- case 322: {
- action.consumeExpressionSizeofTypeId(IUPCASTUnarySizeofExpression.upc_blocksizeof);
- break;
- }
-
- //
- // Rule 323: unary_expression ::= upc_elemsizeof unary_expression
- //
- case 323: {
- action.consumeExpressionUnarySizeofOperator(IUPCASTUnarySizeofExpression.upc_elemsizeof);
- break;
- }
-
- //
- // Rule 324: unary_expression ::= upc_elemsizeof ( type_id )
- //
- case 324: {
- action.consumeExpressionSizeofTypeId(IUPCASTUnarySizeofExpression.upc_elemsizeof);
- break;
- }
-
- //
- // Rule 328: shared_type_qualifier ::= shared
- //
- case 328: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 329: reference_type_qualifier ::= relaxed
- //
- case 329: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 330: reference_type_qualifier ::= strict
- //
- case 330: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 331: layout_qualifier ::= [ constant_expression ]
- //
- case 331: {
- action.consumeLayoutQualifier(true, false);
- break;
- }
-
- //
- // Rule 332: layout_qualifier ::= [ * ]
- //
- case 332: {
- action.consumeLayoutQualifier(false, true);
- break;
- }
-
- //
- // Rule 333: layout_qualifier ::= [ ]
- //
- case 333: {
- action.consumeLayoutQualifier(false, false);
- break;
- }
-
- //
- // Rule 335: synchronization_statement ::= upc_notify expression ;
- //
- case 335: {
- action.consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_notify, true);
- break;
- }
-
- //
- // Rule 336: synchronization_statement ::= upc_notify ;
- //
- case 336: {
- action.consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_notify, false);
- break;
- }
-
- //
- // Rule 337: synchronization_statement ::= upc_wait expression ;
- //
- case 337: {
- action.consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_wait, true);
- break;
- }
-
- //
- // Rule 338: synchronization_statement ::= upc_wait ;
- //
- case 338: {
- action.consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_wait, false);
- break;
- }
-
- //
- // Rule 339: synchronization_statement ::= upc_barrier expression ;
- //
- case 339: {
- action.consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_barrier, true);
- break;
- }
-
- //
- // Rule 340: synchronization_statement ::= upc_barrier ;
- //
- case 340: {
- action.consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_barrier, false);
- break;
- }
-
- //
- // Rule 341: synchronization_statement ::= upc_fence ;
- //
- case 341: {
- action.consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_fence, false);
- break;
- }
-
- //
- // Rule 342: iteration_statement ::= upc_forall ( expression ; expression ; expression ; affinity ) statement
- //
- case 342: {
- action.consumeStatementUPCForallLoop(true, true, true, true);
- break;
- }
-
- //
- // Rule 343: iteration_statement ::= upc_forall ( expression ; expression ; expression ; ) statement
- //
- case 343: {
- action.consumeStatementUPCForallLoop(true, true, true, false);
- break;
- }
-
- //
- // Rule 344: iteration_statement ::= upc_forall ( expression ; expression ; ; affinity ) statement
- //
- case 344: {
- action.consumeStatementUPCForallLoop(true, true, false, true);
- break;
- }
-
- //
- // Rule 345: iteration_statement ::= upc_forall ( expression ; expression ; ; ) statement
- //
- case 345: {
- action.consumeStatementUPCForallLoop(true, true, false, false);
- break;
- }
-
- //
- // Rule 346: iteration_statement ::= upc_forall ( expression ; ; expression ; affinity ) statement
- //
- case 346: {
- action.consumeStatementUPCForallLoop(true, false, true, true);
- break;
- }
-
- //
- // Rule 347: iteration_statement ::= upc_forall ( expression ; ; expression ; ) statement
- //
- case 347: {
- action.consumeStatementUPCForallLoop(true, false, true, false);
- break;
- }
-
- //
- // Rule 348: iteration_statement ::= upc_forall ( expression ; ; ; affinity ) statement
- //
- case 348: {
- action.consumeStatementUPCForallLoop(true, false, false, true);
- break;
- }
-
- //
- // Rule 349: iteration_statement ::= upc_forall ( expression ; ; ; ) statement
- //
- case 349: {
- action.consumeStatementUPCForallLoop(true, false, false, false);
- break;
- }
-
- //
- // Rule 350: iteration_statement ::= upc_forall ( ; expression ; expression ; affinity ) statement
- //
- case 350: {
- action.consumeStatementUPCForallLoop(false, true, true, true);
- break;
- }
-
- //
- // Rule 351: iteration_statement ::= upc_forall ( ; expression ; expression ; ) statement
- //
- case 351: {
- action.consumeStatementUPCForallLoop(false, true, true, false);
- break;
- }
-
- //
- // Rule 352: iteration_statement ::= upc_forall ( ; expression ; ; affinity ) statement
- //
- case 352: {
- action.consumeStatementUPCForallLoop(false, true, false, true);
- break;
- }
-
- //
- // Rule 353: iteration_statement ::= upc_forall ( ; expression ; ; ) statement
- //
- case 353: {
- action.consumeStatementUPCForallLoop(false, true, false, false);
- break;
- }
-
- //
- // Rule 354: iteration_statement ::= upc_forall ( ; ; expression ; affinity ) statement
- //
- case 354: {
- action.consumeStatementUPCForallLoop(false, false, true, true);
- break;
- }
-
- //
- // Rule 355: iteration_statement ::= upc_forall ( ; ; expression ; ) statement
- //
- case 355: {
- action.consumeStatementUPCForallLoop(false, false, true, false);
- break;
- }
-
- //
- // Rule 356: iteration_statement ::= upc_forall ( ; ; ; affinity ) statement
- //
- case 356: {
- action.consumeStatementUPCForallLoop(false, false, false, true);
- break;
- }
-
- //
- // Rule 357: iteration_statement ::= upc_forall ( ; ; ; ) statement
- //
- case 357: {
- action.consumeStatementUPCForallLoop(false, false, false, false);
- break;
- }
-
- //
- // Rule 358: iteration_statement ::= upc_forall ( declaration expression ; expression ; affinity ) statement
- //
- case 358: {
- action.consumeStatementUPCForallLoop(true, true, true, true);
- break;
- }
-
- //
- // Rule 359: iteration_statement ::= upc_forall ( declaration expression ; expression ; ) statement
- //
- case 359: {
- action.consumeStatementUPCForallLoop(true, true, true, false);
- break;
- }
-
- //
- // Rule 360: iteration_statement ::= upc_forall ( declaration expression ; ; affinity ) statement
- //
- case 360: {
- action.consumeStatementUPCForallLoop(true, true, false, true);
- break;
- }
-
- //
- // Rule 361: iteration_statement ::= upc_forall ( declaration expression ; ; ) statement
- //
- case 361: {
- action.consumeStatementUPCForallLoop(true, true, false, false);
- break;
- }
-
- //
- // Rule 362: iteration_statement ::= upc_forall ( declaration ; expression ; affinity ) statement
- //
- case 362: {
- action.consumeStatementUPCForallLoop(true, false, true, true);
- break;
- }
-
- //
- // Rule 363: iteration_statement ::= upc_forall ( declaration ; expression ; ) statement
- //
- case 363: {
- action.consumeStatementUPCForallLoop(true, false, true, false);
- break;
- }
-
- //
- // Rule 364: iteration_statement ::= upc_forall ( declaration ; ; affinity ) statement
- //
- case 364: {
- action.consumeStatementUPCForallLoop(true, false, false, true);
- break;
- }
-
- //
- // Rule 365: iteration_statement ::= upc_forall ( declaration ; ; ) statement
- //
- case 365: {
- action.consumeStatementUPCForallLoop(true, false, false, false);
- break;
- }
-
- //
- // Rule 367: affinity ::= continue
- //
- case 367: {
- action.consumeToken();
- break;
- }
-
- default:
- break;
- }
- return;
- }
-}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCParserprs.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCParserprs.java
deleted file mode 100644
index 93384714537..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCParserprs.java
+++ /dev/null
@@ -1,1064 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2011 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.dom.parser.upc;
-
-public class UPCParserprs implements lpg.lpgjavaruntime.ParseTable, UPCParsersym {
-
- public interface IsKeyword {
- public final static byte isKeyword[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static byte isKeyword[] = IsKeyword.isKeyword;
-
- public final boolean isKeyword(int index) {
- return isKeyword[index] != 0;
- }
-
- public interface BaseCheck {
- public final static short baseCheck[] = { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 4,
- 4, 3, 3, 2, 2, 4, 1, 0, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 1, 4, 1, 3, 3, 3, 1, 3, 3, 1, 3, 3, 1, 3, 3,
- 3, 3, 1, 3, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 5, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 2, 1, 0, 1,
- 3, 1, 1, 1, 1, 1, 1, 1, 1, 3, 4, 3, 2, 4, 1, 2, 1, 1, 1, 2, 5, 7, 5, 1, 0, 7, 2, 5, 9, 8, 3, 2, 2, 2, 3,
- 2, 4, 2, 2, 2, 2, 2, 1, 1, 1, 1, 2, 1, 2, 2, 2, 1, 2, 2, 1, 2, 2, 1, 2, 2, 1, 2, 2, 1, 3, 1, 3, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 8, 0, 0, 1, 1, 3, 3, 3, 0, 1, 0, 1, 2, 4, 2, 1,
- 1, 1, 3, 1, 1, 2, 3, 7, 8, 0, 1, 0, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 3, 1, 2, 2, 1, 5, 3,
- 1, 3, 5, 1, 3, 1, 3, 2, 4, 3, 5, 4, 6, 6, 3, 5, 1, 3, 4, 5, 6, 0, 1, 2, 1, 3, 1, 1, 3, 2, 1, 1, 1, 1, 2,
- 1, 2, 3, 1, 1, 1, 3, 1, 2, 2, 2, 3, 4, 5, 1, 1, 7, 3, 0, 0, 1, 1, 3, 3, 4, 1, 1, 2, 3, 2, 3, 2, 1, 0, 1,
- 2, 1, 1, 1, 1, 1, 2, 1, 3, 6, 4, 2, 4, 1, 1, 1, 2, 4, 2, 4, 2, 4, 1, 1, 2, 1, 1, 1, 3, 3, 2, 1, 3, 2, 3,
- 2, 3, 2, 2, 11, 10, 10, 9, 10, 9, 9, 8, 10, 9, 9, 8, 9, 8, 8, 7, 10, 9, 9, 8, 9, 8, 8, 7, 1, 1, -118,
- -275, 0, -16, -304, 0, 0, 0, 0, 0, 0, -19, 0, 0, -57, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, -21, 0, 0, 0, 0, 0,
- 0, 0, -7, 0, 0, 0, 0, 0, -43, 0, 0, 0, 0, 0, -23, 0, 0, 0, 0, 0, 0, -22, 0, 0, 0, 0, 0, -11, -13, -81,
- -4, 0, 0, -279, 0, 0, 0, 0, 0, 0, -34, 0, 0, 0, 0, 0, 0, -28, 0, -45, 0, -9, 0, 0, 0, 0, 0, 0, -110, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -30, 0, 0, 0, 0, -29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -31, 0, 0, 0,
- -26, 0, 0, 0, 0, 0, 0, 0, -39, -24, 0, 0, 0, 0, 0, 0, 0, 0, -40, 0, 0, 0, 0, 0, 0, 0, 0, -243, 0, 0,
- -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0,
- 0, 0, -51, -300, 0, 0, -32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -53, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -25, 0, -134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -68, 0, 0, -61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, -129, 0, 0, -48, 0, 0, -47, 0, 0, 0, 0,
- 0, 0, 0, -70, 0, 0, 0, 0, -35, 0, 0, -85, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -36, 0, 0, -259, 0,
- -20, 0, -71, -14, -192, 0, 0, 0, 0, 0, -86, 0, 0, 0, -320, 0, 0, 0, 0, 0, 0, -41, 0, 0, 0, 0, 0, 0, 0,
- 0, -185, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0, 0, 0, -237, 0, 0, 0, 0, 0, 0,
- 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, -321, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, 0, 0, 0, -42, -98,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -88, 0, 0, -161, 0, 0, 0, 0, 0, 0, 0, 0, -37, 0, 0, -227, 0, 0,
- 0, 0, 0, -46, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -33, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, -91, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0,
- -76, 0, 0, 0, 0, 0, 0, 0, -114, 0, -87, 0, 0, -80, 0, 0, 0, 0, 0, 0, 0, -90, 0, 0, -241, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -162, 0, 0, -93, 0, 0, 0, 0, 0, 0, 0, -198, 0, 0, 0, 0, -54, 0,
- 0, -154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -94, 0, -180, -271, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 0,
- 0, 0, 0, 0, 0, -5, 0, -127, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -96, 0, 0, -58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -176, 0, 0, 0, 0, 0, 0, 0, -97, -130, 0, 0, -164, 0, 0,
- -84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -38, 0, 0, 0, -105, 0, -106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, 0, -302, 0, 0, 0, 0, 0, 0, -120, 0, 0, 0, 0, 0,
- 0, 0, -166, 0, 0, 0, -107, 0, 0, 0, 0, 0, 0, -108, 0, 0, -59, 0, 0, 0, -109, 0, 0, 0, 0, 0, 0, -200, 0,
- 0, 0, 0, 0, 0, 0, -167, 0, 0, -152, 0, 0, 0, 0, 0, 0, 0, -111, 0, 0, -60, 0, 0, 0, -201, 0, 0, 0, 0, 0,
- 0, -112, 0, 0, 0, 0, 0, 0, 0, -168, 0, 0, -155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, -115, 0, 0,
- 0, 0, 0, 0, -156, 0, 0, 0, 0, 0, 0, 0, -169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, 0, 0, -95, 0, 0, 0,
- -150, 0, 0, 0, 0, 0, 0, -175, 0, 0, 0, 0, 0, 0, 0, -170, 0, 0, 0, -158, 0, 0, 0, 0, 0, 0, -178, 0, 0,
- -131, 0, 0, 0, -188, 0, 0, 0, 0, 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, -171, 0, 0, -177, 0, 0, 0, 0, 0, 0, 0,
- -195, 0, 0, -132, 0, 0, 0, -196, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, -172, 0, 0, 0, -209, 0, 0,
- 0, 0, 0, 0, -210, 0, 0, -133, 0, 0, 0, -208, 0, 0, 0, 0, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, -173, 0, 0, 0,
- -211, 0, 0, 0, 0, 0, 0, -212, 0, 0, -55, 0, 0, 0, -240, 0, 0, 0, 0, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0,
- -174, 0, 0, 0, -213, 0, 0, 0, 0, 0, 0, -214, 0, 0, -56, 0, 0, 0, -276, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0,
- 0, 0, 0, 0, -238, 0, 0, 0, -215, 0, 0, 0, 0, 0, 0, -216, 0, 0, -63, 0, 0, 0, -277, 0, 0, 0, 0, 0, 0,
- -206, 0, 0, 0, 0, 0, 0, 0, -239, 0, 0, 0, -217, 0, 0, 0, 0, 0, 0, -218, 0, 0, -64, 0, 0, 0, -163, 0, 0,
- 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, -255, 0, 0, 0, -219, 0, 0, 0, 0, 0, 0, -179, 0, 0, 0, 0, -220, 0,
- -230, -89, 0, 0, 0, 0, -225, 0, 0, 0, 0, 0, 0, 0, 0, -265, 0, 0, -221, -226, 0, 0, 0, 0, 0, 0, -181, 0,
- 0, 0, 0, -323, 0, 0, -260, -273, 0, 0, 0, 0, -222, 0, 0, 0, 0, 0, 0, 0, -270, 0, 0, -261, -262, 0, 0, 0,
- 0, 0, 0, -182, 0, 0, 0, 0, -322, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -295, 0, 0,
- -263, 0, 0, 0, 0, 0, 0, 0, -183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -268, 0, 0, 0, 0, 0, 0, 0, 0, -184,
- 0, -303, 0, 0, -233, 0, 0, 0, 0, 0, 0, 0, -246, 0, 0, 0, 0, -223, 0, 0, -101, 0, 0, 0, 0, -224, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -153, -319, 0, 0, -231, -232, 0, 0, 0, 0, 0, 0, -248, 0, 0, 0, 0, -278, 0, -121, 0, 0,
- 0, 0, -249, 0, 0, 0, 0, 0, 0, 0, 0, 0, -242, 0, -324, 0, 0, -251, 0, 0, 0, 0, 0, 0, 0, -250, 0, 0, 0, 0,
- -269, 0, -50, 0, 0, 0, 0, -296, -301, 0, 0, 0, 0, 0, 0, 0, 0, -316, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10,
- 0, 0, 0, 0, 0, 0, 0, -191, 0, 0, 0, 0, 0, -281, -283, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -293, 0, 0, 0, 0, -44, 0, 0, -253, 0, 0, 0, 0, 0, 0, 0, -229, -18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -49, 0, 0, -252, 0, -194, 0, 0, 0, 0, 0, 0, 0, -236, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -157, 0, 0, 0, 0, 0,
- 0, -149, 0, 0, -342, 0, 0, 0, 0, 0, 0, 0, -234, 0, 0, 0, 0, 0, 0, -148, 0, -235, 0, 0, 0, 0, -264, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -258, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -257, 0, -160, 0, 0, 0, -291, 0, 0, -6, 0, 0, 0, 0, 0, 0, 0, 0, -297,
- -146, 0, 0, 0, -298, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -315, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -285, -299, -144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -294, 0, 0, 0, 0, 0, 0,
- 0, -103, 0, -306, 0, 0, 0, -309, 0, 0, 0, -312, 0, 0, 0, 0, 0, 0, -254, 0, 0, 0, 0, -314, 0, 0, 0, 0, 0,
- -329, 0, 0, 0, -317, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -287, 0, 0, 0, 0, -334, -326, -272, 0, 0, -289,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -290, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -325, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -330, 0, 0, 0, 0,
- -336, -331, 0, 0, 0, -341, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -343, 0, 0, 0, 0, -340, -338, 0, 0, 0, -344, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -346, 0, 0, 0, 0, -359, -345, 0, 0, 0, -349, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -350, 0, 0, 0, 0, 0, -347, 0, 0, 0, -352, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -355, 0, 0, 0, 0, 0, -351, 0, 0, 0, -360, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -362, 0, 0, 0, 0, 0, -353, 0, 0, 0, -363, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -364, 0, 0, 0, 0, 0, -356, 0, 0, 0,
- -366, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -367, 0, 0, 0, 0, 0,
- -361, 0, 0, 0, -368, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -370, 0,
- 0, 0, 0, 0, -365, 0, 0, 0, -371, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -373, 0, 0, 0, 0, 0, -369, 0, 0, 0, -376, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -377, 0, 0, 0, 0, 0, -372, 0, 0, 0, -378, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -379, 0, 0, 0, 0, 0, -374, 0, 0, 0, -380, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -381, 0, 0, 0, 0, 0, -382, 0, 0, 0, -383, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -145, 0, 0, -159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -267, 0, 0, 0, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -247, 0, -318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 0, 0, -139, -12, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -143, 0, 0, 0, -15, 0, 0, 0, 0, 0, 0, -17, 0, 0, -135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -82,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -136, 0, 0, -274, 0, 0, 0, 0, 0, 0, 0, -137, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -92, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -122, 0, 0, 0, 0, -123, 0, -124, 0, 0, 0, 0, -151, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -125, 0, 0, 0, 0, -126,
- 0, 0, -256, 0, 0, 0, -266, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -83, 0, -292, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -305, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -308, 0, -228, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -327, 0, 0, 0, 0, 0, 0, 0, -328, 0, 0, 0, 0, 0, 0, 0, -332, 0, 0, 0, 0, 0, 0,
- 0, 0, -333, 0, 0, 0, 0, 0, -335, 0, 0, 0, 0, 0, -348, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -354,
- 0, 0, 0, 0, 0, 0, 0, 0, -357, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -358, 0, 0, 0, 0, 0, -375, 0,
- 0, 0, 0, 0, -244, 0, 0, 0, 0, 0, 0, 0, 0, -245, 0, 0, 0, 0, 0, 0, 0, -280, 0, 0, 0, 0, 0, 0, 0, -282, 0,
- 0, 0, 0, 0, 0, 0, -284, 0, 0, 0, 0, 0, 0, -286, 0, -307, 0, 0, 0, 0, 0, -310, 0, 0, 0, 0, 0, 0, 0, 0,
- -311, 0, 0, 0, 0, 0, -313, 0, -337, 0, 0, 0, 0, 0, 0, -339, 0, -187, 0, 0, 0, 0, 0, -189, 0, 0, 0, 0, 0,
- 0, 0, 0, -190, 0, -288, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static short baseCheck[] = BaseCheck.baseCheck;
-
- @Override
- public final int baseCheck(int index) {
- return baseCheck[index];
- }
-
- public final static short rhs[] = baseCheck;
-
- @Override
- public final int rhs(int index) {
- return rhs[index];
- }
-
- public interface BaseAction {
- public final static char baseAction[] = { 111, 1, 130, 39, 39, 11, 11, 49, 49, 3, 3, 2, 2, 5, 5, 5, 5, 6, 6, 6,
- 7, 8, 8, 8, 8, 8, 8, 8, 8, 82, 82, 94, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 12, 12, 12, 12, 13, 13,
- 13, 15, 15, 15, 17, 17, 17, 17, 17, 26, 26, 26, 27, 27, 28, 28, 29, 29, 30, 30, 31, 31, 32, 32, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 18, 14, 4, 112, 112, 95, 95, 60, 19, 19, 19, 19, 19, 19, 19, 20,
- 20, 20, 16, 16, 96, 96, 73, 73, 21, 21, 22, 22, 22, 68, 68, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 51,
- 51, 33, 33, 33, 33, 33, 54, 54, 54, 88, 88, 83, 83, 83, 83, 84, 84, 84, 85, 85, 85, 86, 86, 86, 87, 87,
- 87, 97, 97, 89, 89, 90, 55, 57, 57, 57, 57, 57, 69, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 77,
- 74, 74, 113, 114, 79, 79, 75, 75, 75, 91, 98, 98, 99, 99, 92, 92, 92, 58, 115, 115, 100, 101, 101, 101,
- 76, 76, 116, 102, 102, 103, 103, 93, 93, 35, 36, 36, 36, 56, 59, 59, 45, 45, 45, 45, 41, 41, 42, 46, 46,
- 47, 43, 43, 104, 104, 48, 118, 118, 117, 117, 52, 52, 52, 52, 52, 52, 52, 52, 52, 105, 61, 61, 61, 61,
- 40, 80, 80, 71, 71, 71, 72, 72, 63, 63, 119, 119, 62, 62, 81, 81, 81, 64, 64, 64, 65, 66, 66, 66, 67,
- 67, 67, 67, 78, 78, 50, 50, 53, 121, 120, 120, 120, 120, 106, 122, 123, 123, 124, 124, 125, 125, 111,
- 111, 126, 126, 107, 107, 107, 107, 127, 127, 108, 108, 108, 109, 110, 110, 5, 5, 5, 9, 9, 9, 9, 9, 9,
- 35, 35, 37, 37, 38, 38, 128, 128, 128, 19, 25, 25, 25, 25, 25, 25, 25, 23, 23, 23, 23, 23, 23, 23, 23,
- 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 44, 44, 362, 2858, 1259, 2059, 2895, 17,
- 21, 18, 522, 883, 45, 72, 535, 618, 2751, 577, 20, 651, 2078, 17, 21, 18, 522, 43, 40, 2045, 632, 717,
- 680, 838, 805, 848, 75, 1922, 92, 136, 214, 325, 326, 2558, 2916, 875, 552, 225, 230, 1922, 220, 492,
- 222, 224, 232, 510, 2077, 275, 138, 135, 137, 161, 56, 2043, 72, 2213, 379, 180, 2883, 270, 1127, 1101,
- 273, 140, 167, 1901, 500, 862, 144, 147, 150, 153, 2137, 426, 401, 766, 2151, 2627, 1689, 2631, 2742,
- 2749, 1740, 433, 940, 1186, 111, 87, 1024, 1252, 136, 214, 325, 326, 1145, 72, 420, 225, 233, 96, 1910,
- 1059, 1226, 95, 97, 98, 99, 100, 334, 138, 135, 137, 161, 793, 2055, 552, 225, 230, 2509, 219, 492, 222,
- 224, 295, 140, 167, 1912, 129, 1728, 144, 147, 150, 153, 160, 426, 510, 2181, 311, 2627, 1689, 2631,
- 2742, 2749, 1740, 656, 2601, 432, 20, 2832, 313, 17, 21, 18, 522, 883, 45, 1760, 535, 618, 401, 577,
- 2108, 651, 157, 446, 439, 875, 420, 225, 234, 229, 632, 717, 680, 838, 805, 848, 75, 2150, 282, 1669,
- 372, 294, 2317, 2412, 432, 20, 2318, 1663, 17, 21, 18, 522, 883, 45, 283, 535, 618, 938, 577, 2651, 651,
- 20, 1903, 327, 17, 21, 18, 522, 323, 632, 717, 680, 838, 805, 848, 75, 2861, 282, 2751, 129, 20, 331,
- 288, 17, 21, 18, 522, 43, 45, 228, 535, 1278, 2751, 283, 20, 314, 938, 17, 21, 18, 522, 43, 45, 2466,
- 535, 618, 2503, 577, 20, 651, 289, 17, 21, 18, 522, 43, 36, 2135, 632, 717, 1497, 290, 2850, 940, 1626,
- 2528, 90, 20, 2558, 2850, 17, 21, 18, 522, 883, 45, 2048, 535, 618, 232, 577, 2217, 651, 188, 2284, 332,
- 180, 2839, 1898, 291, 128, 632, 717, 680, 838, 805, 848, 75, 2217, 282, 187, 2558, 2918, 401, 766, 2268,
- 2049, 476, 940, 1186, 111, 87, 279, 2839, 2560, 283, 128, 202, 938, 136, 214, 325, 326, 96, 2320, 1059,
- 104, 95, 97, 98, 99, 100, 334, 2839, 368, 226, 3101, 88, 138, 135, 137, 161, 2210, 159, 552, 225, 230,
- 1586, 219, 492, 222, 224, 2917, 140, 167, 341, 2918, 659, 144, 147, 150, 153, 699, 426, 129, 2879, 688,
- 2627, 1689, 2631, 2742, 2749, 1740, 2626, 1431, 20, 129, 1609, 17, 21, 18, 522, 883, 45, 3092, 535, 618,
- 2320, 577, 1811, 651, 72, 1, 368, 1186, 111, 87, 673, 2766, 632, 717, 680, 838, 805, 848, 75, 2317, 282,
- 96, 2317, 1059, 109, 95, 97, 98, 99, 100, 334, 1905, 261, 855, 2839, 2575, 283, 196, 688, 938, 2290,
- 1458, 20, 275, 510, 17, 21, 18, 522, 883, 45, 284, 535, 618, 315, 577, 110, 651, 242, 2839, 940, 244,
- 340, 88, 292, 2767, 632, 717, 680, 838, 805, 848, 75, 1450, 781, 2478, 2117, 20, 108, 240, 17, 21, 18,
- 522, 43, 45, 2296, 535, 618, 2503, 577, 20, 651, 2562, 17, 21, 18, 522, 43, 36, 145, 632, 717, 680, 838,
- 805, 848, 94, 2318, 1697, 2801, 1891, 20, 2221, 333, 17, 21, 18, 522, 883, 45, 2041, 535, 618, 2503,
- 577, 20, 651, 247, 17, 21, 18, 522, 43, 36, 557, 632, 717, 680, 838, 805, 848, 75, 2362, 784, 20, 129,
- 998, 17, 21, 18, 522, 883, 45, 72, 535, 618, 105, 577, 2676, 651, 20, 72, 248, 17, 21, 18, 522, 321,
- 632, 717, 680, 838, 805, 848, 75, 2569, 1325, 2751, 2217, 20, 1613, 241, 17, 21, 18, 522, 883, 45, 2917,
- 535, 618, 125, 577, 510, 651, 1966, 429, 2217, 306, 31, 2217, 1578, 31, 632, 717, 680, 838, 805, 848,
- 75, 2751, 92, 20, 1193, 2898, 17, 21, 18, 522, 43, 45, 1983, 535, 618, 2751, 577, 20, 651, 662, 17, 21,
- 18, 522, 43, 39, 2924, 632, 717, 680, 838, 805, 848, 94, 2829, 129, 940, 305, 2751, 88, 20, 2567, 659,
- 17, 21, 18, 522, 883, 45, 1292, 535, 618, 2217, 577, 189, 651, 2917, 312, 2217, 124, 1573, 1233, 211,
- 1252, 632, 717, 680, 838, 805, 848, 75, 2751, 86, 20, 688, 285, 17, 21, 18, 522, 883, 45, 25, 535, 618,
- 24, 577, 2917, 651, 2217, 112, 297, 309, 303, 304, 310, 2320, 632, 717, 680, 838, 805, 848, 75, 2751,
- 85, 20, 19, 2324, 17, 21, 18, 522, 883, 45, 2407, 535, 618, 2751, 577, 20, 651, 2570, 17, 21, 18, 522,
- 43, 38, 2897, 632, 717, 680, 838, 805, 848, 75, 2751, 84, 20, 129, 1739, 17, 21, 18, 522, 883, 45, 2836,
- 535, 618, 2751, 577, 20, 651, 2882, 17, 21, 18, 522, 43, 37, 2847, 632, 717, 680, 838, 805, 848, 75,
- 2751, 83, 20, 2148, 1829, 17, 21, 18, 522, 883, 45, 276, 535, 618, 2751, 577, 20, 651, 2657, 17, 21, 18,
- 522, 43, 35, 2320, 632, 717, 680, 838, 805, 848, 75, 2751, 82, 20, 231, 277, 17, 21, 18, 522, 883, 45,
- 2682, 535, 618, 2751, 577, 20, 651, 2840, 17, 21, 18, 522, 43, 36, 2316, 632, 717, 680, 838, 805, 848,
- 75, 2751, 81, 20, 235, 2782, 17, 21, 18, 522, 883, 45, 74, 535, 618, 2751, 577, 20, 651, 2837, 17, 21,
- 18, 522, 43, 48, 2707, 632, 717, 680, 838, 805, 848, 75, 2751, 80, 20, 129, 519, 17, 21, 18, 522, 883,
- 45, 2885, 535, 618, 2751, 577, 20, 651, 2826, 17, 21, 18, 522, 43, 47, 2320, 632, 717, 680, 838, 805,
- 848, 75, 2751, 79, 20, 1491, 2468, 17, 21, 18, 522, 883, 45, 2553, 535, 618, 2751, 577, 20, 651, 2317,
- 17, 21, 18, 522, 43, 46, 2320, 632, 717, 680, 838, 805, 848, 75, 2751, 78, 20, 1508, 2207, 17, 21, 18,
- 522, 883, 45, 2315, 535, 618, 2701, 577, 20, 651, 2317, 17, 21, 18, 522, 319, 22, 2320, 632, 717, 680,
- 838, 805, 848, 75, 2751, 77, 20, 1509, 2114, 17, 21, 18, 522, 883, 45, 2118, 535, 618, 2726, 577, 20,
- 651, 2317, 17, 21, 18, 522, 41, 243, 2320, 632, 717, 680, 838, 805, 848, 75, 2751, 76, 20, 1543, 1930,
- 17, 21, 18, 522, 883, 45, 2394, 535, 618, 2776, 577, 20, 651, 2317, 17, 21, 18, 522, 34, 245, 2320, 632,
- 717, 680, 838, 805, 848, 75, 2751, 1358, 20, 1843, 2854, 17, 21, 18, 522, 883, 45, 2868, 535, 618, 2776,
- 577, 20, 651, 2356, 17, 21, 18, 522, 33, 246, 2320, 632, 717, 680, 838, 805, 848, 75, 2751, 1391, 20,
- 23, 2925, 17, 21, 18, 522, 883, 45, 2917, 535, 618, 339, 577, 2477, 651, 2935, 1929, 256, 214, 325, 326,
- 129, 2902, 632, 717, 680, 838, 805, 848, 75, 2751, 93, 20, 2856, 2924, 17, 21, 18, 522, 883, 45, 2917,
- 535, 618, 337, 577, 2217, 651, 299, 2951, 2857, 255, 214, 325, 326, 2469, 632, 717, 680, 838, 805, 848,
- 75, 2751, 74, 20, 2954, 2955, 17, 21, 18, 522, 43, 45, 2917, 535, 618, 335, 577, 2317, 651, 1895, 429,
- 181, 306, 256, 214, 325, 326, 632, 717, 680, 838, 805, 848, 94, 1424, 1661, 2751, 28, 20, 2958, 938, 17,
- 21, 18, 522, 43, 45, 2917, 535, 618, 127, 577, 662, 651, 28, 28, 296, 938, 938, 905, 2935, 213, 632,
- 717, 680, 838, 805, 848, 94, 2917, 305, 2751, 123, 20, 2845, 2024, 17, 21, 18, 522, 43, 45, 2917, 535,
- 618, 3125, 577, 2732, 651, 28, 2839, 940, 938, 338, 88, 2867, 203, 632, 717, 680, 838, 805, 848, 94,
- 1483, 2405, 2751, 1613, 20, 2606, 2936, 17, 21, 18, 522, 43, 45, 2917, 535, 618, 3132, 577, 2941, 651,
- 2355, 916, 302, 304, 310, 2320, 386, 1521, 632, 717, 680, 838, 805, 848, 94, 387, 2017, 2751, 1907, 20,
- 2320, 958, 17, 21, 18, 522, 43, 45, 2946, 535, 618, 2027, 577, 2924, 651, 220, 368, 1186, 111, 87, 2953,
- 2965, 204, 632, 717, 680, 838, 805, 848, 94, 2056, 96, 275, 1059, 109, 95, 97, 98, 99, 100, 334, 346,
- 3262, 3262, 268, 1127, 1101, 273, 688, 291, 368, 1186, 111, 87, 210, 2917, 2917, 1821, 3134, 3140, 1952,
- 267, 205, 1457, 1614, 96, 110, 1059, 109, 95, 97, 98, 99, 100, 334, 2924, 136, 214, 325, 326, 129, 659,
- 688, 147, 368, 1186, 111, 87, 107, 3262, 3262, 2405, 2284, 1613, 180, 146, 135, 137, 161, 96, 110, 1059,
- 109, 95, 97, 98, 99, 100, 334, 3262, 3262, 767, 1912, 688, 3262, 2320, 688, 519, 940, 1186, 111, 87,
- 107, 3262, 182, 72, 2053, 136, 214, 325, 326, 308, 106, 96, 110, 1059, 102, 95, 97, 98, 99, 100, 334,
- 3262, 3262, 1731, 139, 135, 137, 161, 3262, 3262, 875, 552, 225, 1006, 108, 220, 492, 222, 984, 141,
- 167, 1923, 1773, 510, 145, 148, 151, 154, 2751, 426, 20, 2317, 3262, 17, 21, 18, 522, 43, 45, 1929, 535,
- 618, 210, 577, 369, 651, 129, 940, 1932, 2821, 88, 1564, 1614, 2962, 632, 717, 680, 838, 1599, 278,
- 1591, 3262, 552, 225, 230, 1013, 219, 492, 222, 224, 298, 2848, 659, 275, 255, 214, 325, 326, 2839, 940,
- 264, 336, 88, 3262, 3262, 268, 1127, 1101, 273, 552, 225, 230, 1516, 219, 492, 222, 224, 3262, 3262,
- 2320, 275, 1929, 265, 28, 1811, 2320, 938, 699, 401, 469, 274, 510, 268, 1127, 1101, 273, 280, 2924,
- 2751, 1492, 20, 3262, 2863, 17, 21, 18, 522, 43, 45, 1889, 535, 618, 2898, 577, 260, 651, 255, 214, 325,
- 326, 262, 2320, 1895, 1212, 632, 717, 680, 1475, 3262, 552, 225, 488, 2130, 219, 492, 222, 474, 256,
- 214, 325, 326, 2917, 2924, 2751, 3155, 20, 206, 160, 17, 21, 18, 522, 43, 45, 2915, 535, 618, 195, 577,
- 3262, 651, 1424, 2839, 940, 2917, 126, 88, 3002, 2917, 632, 1443, 3018, 2917, 3262, 3262, 3157, 1551,
- 156, 446, 562, 940, 1186, 111, 87, 2917, 591, 1373, 3164, 3262, 3262, 2917, 692, 413, 3039, 2320, 96,
- 3262, 1059, 103, 95, 97, 98, 99, 100, 334, 281, 501, 605, 940, 1186, 111, 87, 2917, 2320, 1929, 3055,
- 3262, 648, 940, 1186, 111, 87, 3262, 96, 2125, 1059, 120, 95, 97, 98, 99, 100, 334, 96, 3262, 1059, 115,
- 95, 97, 98, 99, 100, 334, 691, 940, 1186, 111, 87, 3262, 255, 214, 325, 326, 734, 940, 1186, 111, 87,
- 3262, 96, 3262, 1059, 1678, 95, 97, 98, 99, 100, 334, 96, 3262, 1059, 365, 95, 97, 98, 99, 100, 334,
- 777, 940, 1186, 111, 87, 2917, 2320, 3262, 3064, 3262, 820, 940, 1186, 111, 87, 1912, 96, 2171, 1059,
- 357, 95, 97, 98, 99, 100, 334, 96, 3262, 1059, 114, 95, 97, 98, 99, 100, 334, 863, 940, 1186, 111, 87,
- 2917, 2320, 3262, 118, 3262, 906, 940, 1186, 111, 87, 3262, 96, 2243, 1059, 364, 95, 97, 98, 99, 100,
- 334, 96, 3262, 1059, 363, 95, 97, 98, 99, 100, 334, 949, 940, 1186, 111, 87, 2917, 2320, 3262, 3086,
- 3262, 992, 940, 1186, 111, 87, 3262, 96, 2269, 1059, 361, 95, 97, 98, 99, 100, 334, 96, 3262, 1059, 356,
- 95, 97, 98, 99, 100, 334, 1035, 940, 1186, 111, 87, 3262, 2320, 3262, 3262, 3262, 1078, 940, 1186, 111,
- 87, 3262, 96, 2279, 1059, 355, 95, 97, 98, 99, 100, 334, 96, 3262, 1059, 353, 95, 97, 98, 99, 100, 334,
- 1121, 940, 1186, 111, 87, 3262, 2320, 3262, 3262, 3262, 1164, 940, 1186, 111, 87, 3262, 96, 2315, 1059,
- 349, 95, 97, 98, 99, 100, 334, 96, 3262, 1059, 122, 95, 97, 98, 99, 100, 334, 1207, 940, 1186, 111, 87,
- 3262, 2320, 3262, 3262, 3262, 1250, 940, 1186, 111, 87, 3262, 96, 2341, 1059, 362, 95, 97, 98, 99, 100,
- 334, 96, 3262, 1059, 360, 95, 97, 98, 99, 100, 334, 1293, 940, 1186, 111, 87, 3262, 2320, 3262, 3262,
- 3262, 1336, 940, 1186, 111, 87, 3262, 96, 2377, 1059, 359, 95, 97, 98, 99, 100, 334, 96, 3262, 1059,
- 354, 95, 97, 98, 99, 100, 334, 1379, 940, 1186, 111, 87, 3262, 2320, 3262, 3262, 3262, 1422, 940, 1186,
- 111, 87, 3262, 96, 2423, 1059, 352, 95, 97, 98, 99, 100, 334, 96, 3262, 1059, 351, 95, 97, 98, 99, 100,
- 334, 1465, 940, 1186, 111, 87, 3262, 2320, 3262, 3262, 3262, 1508, 940, 1186, 111, 87, 3262, 96, 2449,
- 1059, 348, 95, 97, 98, 99, 100, 334, 96, 3262, 1059, 347, 95, 97, 98, 99, 100, 334, 1551, 940, 1186,
- 111, 87, 3262, 2320, 3262, 3262, 3262, 1594, 940, 1186, 111, 87, 3262, 96, 2459, 1059, 345, 95, 97, 98,
- 99, 100, 334, 96, 3262, 1059, 121, 95, 97, 98, 99, 100, 334, 1637, 940, 1186, 111, 87, 3262, 2320, 3262,
- 3262, 3262, 1680, 940, 1186, 111, 87, 3262, 96, 2485, 1059, 358, 95, 97, 98, 99, 100, 334, 96, 3262,
- 1059, 350, 95, 97, 98, 99, 100, 334, 1723, 940, 1186, 111, 87, 3262, 2320, 3262, 3262, 3262, 1766, 940,
- 1186, 111, 87, 3262, 96, 2495, 1059, 346, 95, 97, 98, 99, 100, 334, 96, 3262, 1059, 344, 95, 97, 98, 99,
- 100, 334, 1809, 940, 1186, 111, 87, 3262, 2320, 3262, 3262, 3262, 1852, 940, 1186, 111, 87, 3262, 96,
- 2531, 1059, 343, 95, 97, 98, 99, 100, 334, 96, 3262, 1059, 342, 95, 97, 98, 99, 100, 334, 2751, 3262,
- 20, 401, 766, 17, 21, 18, 522, 43, 45, 3262, 535, 618, 3262, 577, 3262, 651, 1916, 766, 3262, 3262,
- 2751, 3262, 20, 3262, 1455, 17, 21, 18, 522, 43, 45, 3262, 535, 618, 3262, 577, 3262, 1344, 3262, 3262,
- 3262, 3262, 552, 225, 230, 3262, 219, 492, 222, 224, 3262, 3262, 2914, 940, 1916, 766, 88, 552, 225,
- 230, 160, 219, 492, 222, 224, 3262, 116, 3262, 2398, 3262, 3262, 2751, 1950, 20, 3262, 1668, 17, 21, 18,
- 522, 43, 45, 3262, 535, 618, 3262, 577, 3262, 1351, 3262, 156, 446, 3262, 3262, 3262, 552, 225, 230,
- 591, 219, 492, 222, 224, 136, 214, 325, 326, 136, 214, 325, 326, 3262, 3262, 1668, 3262, 3262, 199, 201,
- 3262, 3262, 1951, 3262, 143, 135, 137, 161, 149, 135, 137, 161, 3262, 1964, 3262, 3262, 2751, 3262, 20,
- 142, 167, 17, 21, 18, 522, 43, 45, 3262, 535, 618, 3262, 1377, 3262, 2751, 3262, 20, 200, 201, 17, 21,
- 18, 522, 43, 45, 3262, 535, 618, 2751, 1384, 20, 3262, 3262, 17, 21, 18, 522, 43, 45, 3262, 535, 618,
- 2751, 1410, 20, 3262, 2021, 17, 21, 18, 522, 43, 45, 2076, 535, 618, 2751, 1417, 20, 3262, 3262, 17, 21,
- 18, 522, 43, 45, 3262, 535, 1285, 2576, 1912, 20, 3262, 3262, 17, 21, 18, 522, 43, 44, 136, 214, 325,
- 326, 1984, 1861, 3262, 136, 214, 325, 326, 3262, 3262, 3262, 3262, 278, 3262, 3262, 3262, 152, 135, 137,
- 161, 3262, 3262, 3262, 155, 135, 137, 161, 875, 552, 225, 230, 3262, 220, 492, 222, 224, 28, 3262, 2751,
- 938, 20, 2848, 659, 17, 21, 18, 522, 43, 45, 2751, 1311, 20, 3262, 275, 17, 21, 18, 522, 43, 45, 3262,
- 1318, 3262, 3262, 3262, 268, 1127, 1101, 273, 3262, 2360, 659, 129, 368, 1811, 3262, 88, 3262, 3262,
- 3262, 3262, 510, 1889, 3262, 3262, 3262, 1068, 129, 368, 3262, 3262, 88, 129, 368, 129, 368, 88, 3262,
- 88, 2037, 659, 1068, 369, 1811, 260, 198, 1068, 3262, 1068, 3262, 129, 368, 1895, 1212, 88, 129, 368,
- 3262, 2894, 88, 198, 3262, 2183, 659, 1068, 198, 3262, 198, 3262, 1068, 1628, 3262, 198, 260, 762, 3262,
- 2388, 659, 2388, 659, 3262, 1167, 1212, 198, 3262, 1628, 3262, 3262, 198, 1266, 1628, 3262, 1628, 3262,
- 1299, 198, 1332, 796, 875, 3262, 2914, 368, 3262, 3262, 88, 3262, 3262, 3262, 1628, 1811, 275, 1811,
- 1365, 1628, 116, 2916, 940, 1398, 3262, 88, 796, 3262, 270, 1127, 1101, 273, 2063, 1200, 3262, 366,
- 3262, 193, 3262, 688, 3262, 3262, 3262, 1476, 2984, 260, 3262, 260, 2916, 940, 2110, 659, 88, 1167,
- 1212, 2004, 1212, 2611, 3262, 2089, 193, 3262, 366, 3262, 3262, 2023, 1723, 2984, 2916, 940, 3262, 3262,
- 88, 3262, 1621, 3262, 2916, 940, 3262, 2135, 88, 3262, 366, 198, 2916, 940, 3262, 2161, 88, 3262, 366,
- 3262, 2095, 2916, 940, 2197, 3262, 88, 366, 2916, 940, 3262, 3262, 88, 2207, 2916, 940, 366, 796, 88,
- 2233, 3262, 2167, 366, 3262, 3262, 2305, 3262, 3262, 366, 2203, 2916, 940, 3262, 3262, 88, 3262, 3262,
- 2239, 3262, 2916, 940, 2351, 3262, 88, 366, 3262, 2275, 3262, 3262, 3262, 2387, 194, 2311, 366, 3262,
- 2916, 940, 3262, 2383, 88, 3262, 2916, 940, 3262, 3262, 88, 2413, 2839, 940, 366, 3109, 88, 2521, 3262,
- 2419, 366, 2839, 940, 3262, 3117, 88, 1703, 3262, 2455, 2839, 940, 3262, 2955, 88, 3262, 1704, 3262,
- 2839, 940, 3262, 2982, 88, 3262, 1974, 2491, 2839, 940, 3262, 3149, 88, 2527, 1978, 2914, 940, 2839,
- 940, 88, 3010, 88, 1982, 2839, 940, 3262, 3027, 88, 3262, 116, 3262, 2000, 2839, 940, 3262, 3033, 88,
- 2022, 2914, 940, 2839, 940, 88, 3080, 88, 3262, 2094, 2914, 940, 129, 940, 88, 116, 88, 2166, 129, 940,
- 3262, 3262, 88, 3262, 116, 3262, 1633, 129, 940, 129, 940, 88, 1648, 88, 3262, 3262, 3262, 3262, 3262,
- 3262, 3262, 1763, 3262, 1931, 3262, 3262, 1994, 3262, 3262, 3262, 3262, 3262, 3262, 3262, 3262, 3262,
- 3262, 3262, 3262, 3262, 3262, 3262, 3262, 3262, 3262, 3262, 3262, 3262, 3262, 2131, 3262, 3262, 3262,
- 3262, 3262, 3262, 3262, 3262, 2347, 3262, 0, 328, 837, 0, 11, 227, 0, 3270, 1, 0, 1, 3500, 0, 8, 10, 0,
- 1656, 119, 0, 180, 20, 0, 1, 3489, 0, 113, 2099, 0 };
- }
-
- public final static char baseAction[] = BaseAction.baseAction;
-
- @Override
- public final int baseAction(int index) {
- return baseAction[index];
- }
-
- public final static char lhs[] = baseAction;
-
- @Override
- public final int lhs(int index) {
- return lhs[index];
- }
-
- public interface TermCheck {
- public final static byte termCheck[] = { 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 0, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
- 0, 72, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
- 53, 54, 0, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 0, 72, 0, 1, 2, 3, 4, 5, 6, 7, 8,
- 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
- 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 0, 56, 57, 58, 59, 60,
- 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 0, 72, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
- 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 0, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
- 69, 70, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
- 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
- 52, 53, 54, 0, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 0, 1, 2, 3, 4, 92, 0, 7, 8,
- 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 1, 43, 44, 45, 46, 47, 48, 49, 50, 51,
- 52, 53, 54, 0, 1, 2, 0, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 0, 56, 57, 58, 59, 60, 61, 62,
- 63, 64, 65, 66, 67, 68, 69, 70, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
- 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 0, 1, 2, 3,
- 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
- 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
- 42, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
- 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
- 38, 39, 40, 41, 42, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
- 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 0, 1, 2, 3, 4, 5, 6, 7,
- 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
- 34, 35, 36, 37, 38, 39, 40, 41, 42, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 0, 1, 2,
- 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
- 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
- 42, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
- 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
- 38, 39, 40, 41, 42, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
- 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 0, 1, 2, 3, 4, 5, 6, 7,
- 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
- 34, 35, 36, 37, 38, 39, 40, 41, 42, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 0, 1, 2,
- 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
- 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
- 42, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
- 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
- 38, 39, 40, 41, 42, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
- 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 0, 1, 2, 3, 4, 5, 6, 7,
- 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
- 34, 35, 36, 37, 38, 39, 40, 41, 42, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 0, 1, 2,
- 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
- 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
- 42, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
- 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
- 38, 39, 40, 41, 42, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
- 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 0, 1, 2, 3, 4, 5, 6, 7,
- 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
- 34, 35, 36, 37, 38, 39, 40, 41, 42, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 0, 1, 2,
- 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
- 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
- 42, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
- 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
- 38, 39, 40, 41, 42, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
- 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 0, 1, 2, 3, 4, 5, 0, 1,
- 0, 3, 0, 1, 6, 3, 0, 0, 6, 0, 1, 2, 5, 0, 1, 2, 0, 25, 26, 0, 0, 1, 2, 0, 4, 6, 0, 0, 0, 0, 1, 2, 25, 0,
- 5, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 0, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
- 68, 69, 70, 0, 1, 2, 3, 4, 5, 43, 44, 45, 46, 47, 48, 55, 76, 77, 71, 87, 0, 0, 75, 2, 55, 5, 5, 74, 25,
- 26, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 73, 76, 77, 25, 43, 44, 45, 46, 47, 48, 49, 50, 51,
- 52, 53, 54, 0, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 0, 1, 55, 3, 0, 5, 0, 1, 0,
- 3, 2, 0, 0, 1, 0, 3, 87, 71, 0, 0, 73, 75, 0, 1, 6, 3, 26, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
- 54, 0, 0, 0, 2, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 0, 56, 57, 58, 59, 60, 61, 62, 63, 64,
- 65, 66, 67, 68, 69, 70, 0, 72, 0, 1, 4, 3, 0, 5, 75, 0, 0, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
- 54, 83, 84, 85, 86, 0, 26, 0, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 0, 93, 0, 0, 2, 43, 44, 45,
- 46, 47, 48, 49, 50, 51, 52, 53, 54, 87, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 0,
- 72, 0, 1, 4, 3, 0, 5, 81, 82, 43, 44, 45, 46, 47, 48, 83, 84, 85, 86, 83, 84, 85, 86, 55, 55, 0, 91, 26,
- 0, 4, 75, 0, 1, 2, 3, 0, 1, 9, 3, 0, 0, 88, 89, 4, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 0,
- 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 0, 72, 43, 44, 45, 46, 47, 48, 49, 50, 51,
- 52, 53, 54, 0, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 0, 1, 0, 3, 81, 82, 0, 1, 2,
- 3, 4, 5, 0, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 0, 0, 0, 4, 0, 5, 5,
- 5, 0, 5, 2, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 49, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
- 66, 67, 68, 69, 70, 0, 0, 2, 90, 4, 0, 1, 0, 1, 2, 3, 4, 5, 78, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
- 18, 19, 20, 21, 22, 23, 24, 71, 0, 73, 72, 95, 96, 73, 0, 78, 81, 82, 0, 43, 44, 45, 46, 47, 48, 0, 1,
- 0, 3, 2, 55, 49, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
- 24, 0, 0, 79, 78, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 0, 56, 57, 58, 59, 60, 61, 62, 63, 64,
- 65, 66, 67, 0, 79, 0, 0, 76, 77, 0, 7, 8, 7, 8, 0, 0, 1, 2, 3, 4, 5, 72, 7, 8, 9, 10, 11, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 1, 2, 3, 4, 5, 0, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
- 18, 19, 20, 21, 22, 23, 24, 0, 1, 2, 3, 4, 0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
- 21, 22, 23, 24, 0, 0, 1, 78, 3, 0, 90, 7, 8, 0, 5, 55, 88, 89, 0, 6, 0, 0, 0, 2, 6, 0, 6, 0, 1, 2, 3, 4,
- 78, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 1, 2, 3, 4, 0, 6, 7, 8,
- 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 1, 2, 3, 4, 73, 6, 7, 8, 9, 10, 11,
- 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 1, 2, 3, 4, 0, 0, 7, 8, 9, 10, 11, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 1, 2, 3, 4, 75, 0, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
- 18, 19, 20, 21, 22, 23, 24, 0, 1, 2, 3, 4, 0, 0, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
- 21, 22, 23, 24, 0, 1, 2, 3, 4, 74, 0, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
- 24, 0, 1, 2, 3, 4, 74, 0, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 1, 2,
- 3, 4, 74, 0, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 1, 2, 3, 4, 74, 0,
- 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 1, 2, 0, 4, 5, 0, 0, 2, 6, 0, 0,
- 2, 0, 0, 0, 10, 11, 5, 0, 6, 0, 0, 2, 0, 25, 4, 71, 0, 5, 0, 0, 0, 1, 2, 0, 4, 0, 25, 28, 5, 0, 0, 43,
- 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 0, 0, 2, 0, 25, 55, 43, 44, 45, 46, 47, 48, 0, 0, 2, 0,
- 4, 73, 43, 44, 45, 46, 47, 48, 43, 44, 45, 46, 47, 48, 80, 55, 0, 0, 0, 0, 0, 5, 5, 5, 5, 73, 0, 0, 94,
- 79, 0, 5, 76, 77, 71, 5, 9, 0, 0, 55, 55, 25, 25, 0, 25, 27, 76, 77, 0, 91, 2, 55, 55, 0, 55, 0, 0, 0,
- 71, 6, 0, 92, 6, 6, 0, 80, 6, 0, 0, 0, 6, 0, 0, 0, 6, 6, 0, 80, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 73, 0,
- 73, 0, 0, 0, 0, 0, 0, 72, 79, 0, 0, 72, 0, 0, 0, 0, 0, 71, 71, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 74, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static byte termCheck[] = TermCheck.termCheck;
-
- @Override
- public final int termCheck(int index) {
- return termCheck[index];
- }
-
- public interface TermAction {
- public final static char termAction[] = { 0, 3262, 6600, 1, 6598, 1, 1219, 870, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 3271, 3363, 1028, 1094, 951, 973, 1160, 457, 1087, 1030, 1134, 1972, 1120, 821,
- 1868, 727, 1594, 1080, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 183, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 254, 3269, 8, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247,
- 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247,
- 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247,
- 3247, 3247, 3247, 3247, 3247, 3247, 1, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247,
- 3247, 3247, 3247, 3247, 184, 3247, 3262, 6600, 1, 6598, 1, 1219, 870, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 3271, 3363, 1028, 1094, 951, 973, 1160, 457, 1087, 1030, 1134, 1972, 1120, 821,
- 1868, 727, 1594, 1080, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 287, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 3262, 3269, 3262, 6600, 1, 6598, 1, 3272, 870, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 3271, 3363, 1028, 1094, 951, 973, 1160, 457, 1087, 1030, 1134, 1972, 1120, 821, 1868, 727, 1594,
- 1080, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 71, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3262, 6600,
- 1, 6598, 1, 3272, 870, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3271, 3363, 1028, 1094,
- 951, 973, 1160, 457, 1087, 1030, 1134, 1972, 1120, 821, 1868, 727, 1594, 1080, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 131, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3262, 3273, 2852, 3274, 1189, 1908, 3262,
- 1123, 1090, 1156, 1420, 1387, 1354, 3275, 3276, 3277, 3278, 987, 382, 3578, 3579, 3580, 1321, 921, 574,
- 3262, 3501, 3477, 3478, 3479, 3591, 450, 3592, 3426, 3427, 3425, 3480, 3428, 3424, 1, 3489, 678, 3262,
- 3477, 3478, 3479, 3591, 450, 3592, 3426, 3427, 3425, 3480, 3428, 3424, 3262, 3431, 3436, 3435, 3433,
- 3434, 3432, 3437, 3438, 3430, 3439, 3440, 3441, 371, 681, 427, 3262, 6600, 1, 6598, 1, 3272, 870, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3271, 3363, 1028, 1094, 951, 973, 1160, 457, 1087, 1030,
- 1134, 1972, 1120, 821, 1868, 727, 1594, 1080, 3262, 6600, 1, 6598, 1, 3272, 870, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3271, 3363, 1028, 1094, 951, 973, 1160, 457, 1087, 1030, 1134, 1972, 1120,
- 821, 1868, 727, 1594, 1080, 3262, 6600, 1, 6598, 1, 3272, 870, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 3271, 3363, 1028, 1094, 951, 973, 1160, 457, 1087, 1030, 1134, 1972, 1120, 821, 1868, 727,
- 1594, 1080, 3262, 6600, 1, 6598, 1, 3272, 870, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 3271, 3363, 1028, 1094, 951, 973, 1160, 457, 1087, 1030, 1134, 1972, 1120, 821, 1868, 727, 1594, 1080,
- 3262, 6600, 1, 6598, 1, 3272, 870, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3271, 3363,
- 1028, 1094, 951, 973, 1160, 457, 1087, 1030, 1134, 1972, 1120, 821, 1868, 727, 1594, 1080, 3262, 6600,
- 1, 6598, 1, 3272, 870, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3271, 3363, 1028, 1094,
- 951, 973, 1160, 457, 1087, 1030, 1134, 1972, 1120, 821, 1868, 727, 1594, 1080, 3262, 6600, 1, 6598, 1,
- 3272, 870, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3271, 3363, 1028, 1094, 951, 973, 1160,
- 457, 1087, 1030, 1134, 1972, 1120, 821, 1868, 727, 1594, 1080, 3262, 6600, 1, 6598, 1, 3272, 870, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3271, 3363, 1028, 1094, 951, 973, 1160, 457, 1087, 1030,
- 1134, 1972, 1120, 821, 1868, 727, 1594, 1080, 3262, 6600, 1, 6598, 1, 3272, 870, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3271, 3363, 1028, 1094, 951, 973, 1160, 457, 1087, 1030, 1134, 1972, 1120,
- 821, 1868, 727, 1594, 1080, 3262, 6600, 1, 6598, 1, 3272, 870, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 3271, 3363, 1028, 1094, 951, 973, 1160, 457, 1087, 1030, 1134, 1972, 1120, 821, 1868, 727,
- 1594, 1080, 3262, 6600, 1, 6598, 1, 3272, 870, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 3271, 3363, 1028, 1094, 951, 973, 1160, 457, 1087, 1030, 1134, 1972, 1120, 821, 1868, 727, 1594, 1080,
- 3262, 6600, 1, 6598, 1, 3272, 870, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3271, 3363,
- 1028, 1094, 951, 973, 1160, 457, 1087, 1030, 1134, 1972, 1120, 821, 1868, 727, 1594, 1080, 3262, 6600,
- 1, 6598, 1, 3272, 870, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3271, 3363, 1028, 1094,
- 951, 973, 1160, 457, 1087, 1030, 1134, 1972, 1120, 821, 1868, 727, 1594, 1080, 3262, 6600, 1, 6598, 1,
- 3272, 870, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3271, 3363, 1028, 1094, 951, 973, 1160,
- 457, 1087, 1030, 1134, 1972, 1120, 821, 1868, 727, 1594, 1080, 3262, 6600, 1, 6598, 1, 3272, 870, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3271, 3363, 1028, 1094, 951, 973, 1160, 457, 1087, 1030,
- 1134, 1972, 1120, 821, 1868, 727, 1594, 1080, 3262, 6600, 1, 6598, 1, 3272, 870, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3271, 3363, 1028, 1094, 951, 973, 1160, 457, 1087, 1030, 1134, 1972, 1120,
- 821, 1868, 727, 1594, 1080, 3262, 6600, 1, 6598, 1, 3272, 870, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 3271, 3363, 1028, 1094, 951, 973, 1160, 457, 1087, 1030, 1134, 1972, 1120, 821, 1868, 727,
- 1594, 1080, 3262, 6600, 1, 6598, 1, 3272, 870, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 3271, 3363, 1028, 1094, 951, 973, 1160, 457, 1087, 1030, 1134, 1972, 1120, 821, 1868, 727, 1594, 1080,
- 3262, 6600, 1, 6598, 1, 3272, 870, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3271, 3363,
- 1028, 1094, 951, 973, 1160, 457, 1087, 1030, 1134, 1972, 1120, 821, 1868, 727, 1594, 1080, 3262, 6600,
- 1, 6598, 1, 3272, 870, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3271, 3363, 1028, 1094,
- 951, 973, 1160, 457, 1087, 1030, 1134, 1972, 1120, 821, 1868, 727, 1594, 1080, 3262, 6600, 1, 6598, 1,
- 3272, 870, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3271, 3363, 1028, 1094, 951, 973, 1160,
- 457, 1087, 1030, 1134, 1972, 1120, 821, 1868, 727, 1594, 1080, 3262, 6600, 1, 6598, 1, 3272, 870, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3271, 3363, 1028, 1094, 951, 973, 1160, 457, 1087, 1030,
- 1134, 1972, 1120, 821, 1868, 727, 1594, 1080, 3262, 6600, 1, 6598, 1, 3272, 870, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3271, 3363, 1028, 1094, 951, 973, 1160, 457, 1087, 1030, 1134, 1972, 1120,
- 821, 1868, 727, 1594, 1080, 3262, 6600, 1, 6598, 1, 3272, 870, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 3271, 3363, 1028, 1094, 951, 973, 1160, 457, 1087, 1030, 1134, 1972, 1120, 821, 1868, 727,
- 1594, 1080, 3262, 6600, 1, 6598, 1, 3272, 870, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 3271, 3363, 1028, 1094, 951, 973, 1160, 457, 1087, 1030, 1134, 1972, 1120, 821, 1868, 727, 1594, 1080,
- 3262, 6600, 1, 6598, 1, 3272, 870, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3271, 3363,
- 1028, 1094, 951, 973, 1160, 457, 1087, 1030, 1134, 1972, 1120, 821, 1868, 727, 1594, 1080, 3262, 6600,
- 1, 6598, 1, 3272, 870, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3271, 3363, 1028, 1094,
- 951, 973, 1160, 457, 1087, 1030, 1134, 1972, 1120, 821, 1868, 727, 1594, 1080, 3262, 6600, 1, 6598, 1,
- 3272, 870, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3271, 3363, 1028, 1094, 951, 973, 1160,
- 457, 1087, 1030, 1134, 1972, 1120, 821, 1868, 727, 1594, 1080, 3262, 6600, 1, 6598, 1, 3272, 870, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3271, 3363, 1028, 1094, 951, 973, 1160, 457, 1087, 1030,
- 1134, 1972, 1120, 821, 1868, 727, 1594, 1080, 3262, 6600, 1, 6598, 1, 3272, 870, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3271, 3363, 1028, 1094, 951, 973, 1160, 457, 1087, 1030, 1134, 1972, 1120,
- 821, 1868, 727, 1594, 1080, 3262, 6600, 1, 6598, 1, 3272, 870, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 3271, 3363, 1028, 1094, 951, 973, 1160, 457, 1087, 1030, 1134, 1972, 1120, 821, 1868, 727,
- 1594, 1080, 3262, 6600, 1, 6598, 1, 3272, 870, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 3271, 3363, 1028, 1094, 951, 973, 1160, 457, 1087, 1030, 1134, 1972, 1120, 821, 1868, 727, 1594, 1080,
- 3262, 6600, 1, 6598, 1, 3272, 870, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3271, 3363,
- 1028, 1094, 951, 973, 1160, 457, 1087, 1030, 1134, 1972, 1120, 821, 1868, 727, 1594, 1080, 3262, 6600,
- 1, 6598, 1, 3272, 870, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3271, 3363, 1028, 1094,
- 951, 973, 1160, 457, 1087, 1030, 1134, 1972, 1120, 821, 1868, 727, 1594, 1080, 3262, 1, 1, 1, 1, 3272,
- 3262, 3273, 55, 3274, 3262, 3273, 739, 3274, 3262, 236, 751, 254, 3489, 678, 224, 1, 3489, 678, 3262,
- 3271, 3569, 3262, 263, 3489, 1838, 3262, 1, 561, 3262, 59, 3262, 1, 3256, 1838, 224, 3262, 3268, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 132, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3262, 1, 1, 1, 1, 3272,
- 3477, 3478, 3479, 3591, 450, 3592, 802, 593, 2752, 224, 301, 237, 1, 224, 2781, 802, 224, 3268, 1540,
- 3271, 3569, 3477, 3478, 3479, 3591, 450, 3592, 3426, 3427, 3425, 3480, 3428, 3424, 3267, 593, 2752, 224,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 133, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3262, 1, 802, 1,
- 43, 192, 186, 6595, 11, 6595, 3238, 60, 185, 6596, 3262, 6596, 300, 224, 230, 113, 3267, 224, 207, 6599,
- 233, 6599, 3459, 3477, 3478, 3479, 3591, 450, 3592, 3426, 3427, 3425, 3480, 3428, 3424, 134, 3262, 3262,
- 407, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3262, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 49, 192,
- 3262, 1, 1288, 1, 62, 191, 1340, 69, 61, 3477, 3478, 3479, 3591, 450, 3592, 3426, 3427, 3425, 3480,
- 3428, 3424, 2738, 2724, 2710, 2693, 63, 3459, 158, 1307, 1274, 1241, 1208, 1175, 1109, 1142, 1076, 1043,
- 1010, 250, 3259, 223, 328, 643, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3234, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 3262, 191, 3262, 1, 428, 1, 3262, 192, 1255, 1222, 1, 1, 1, 1, 1, 1, 2738, 2724, 2710,
- 2693, 2738, 2724, 2710, 2693, 802, 3235, 51, 607, 3459, 65, 1288, 640, 1, 393, 678, 3274, 3262, 3273,
- 2557, 3274, 3262, 3262, 2630, 2579, 924, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3262, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 3262, 192, 3477, 3478, 3479, 3591, 450, 3592, 3426, 3427, 3425, 3480, 3428,
- 3424, 67, 3431, 3436, 3435, 3433, 3434, 3432, 3437, 3438, 3430, 3439, 3440, 3441, 371, 681, 427, 3262,
- 3273, 3262, 3274, 1255, 1222, 1, 3273, 2852, 3274, 851, 3266, 73, 1123, 1090, 1156, 1420, 1387, 1354,
- 3275, 3276, 3277, 3278, 987, 382, 3578, 3579, 3580, 1321, 921, 574, 50, 3262, 3262, 1, 1288, 3262, 3268,
- 3266, 3241, 3262, 3268, 708, 3477, 3478, 3479, 3591, 450, 3592, 3426, 3427, 3425, 3480, 3428, 3424, 872,
- 3431, 3436, 3435, 3433, 3434, 3432, 3437, 3438, 3430, 3439, 3440, 3441, 371, 681, 427, 266, 249, 2781,
- 1953, 1, 1, 3244, 3262, 3273, 2852, 3274, 886, 3266, 3265, 1123, 1090, 1156, 1420, 1387, 1354, 3275,
- 3276, 3277, 3278, 987, 382, 3578, 3579, 3580, 1321, 921, 574, 1643, 1, 3267, 3269, 1818, 1836, 3267, 58,
- 3265, 1255, 1222, 130, 3477, 3478, 3479, 3591, 450, 3592, 209, 3273, 3262, 3274, 2940, 802, 1406, 1,
- 3273, 2852, 3274, 1189, 29, 6557, 1123, 1090, 1156, 1420, 1387, 1354, 3275, 3276, 3277, 3278, 987, 382,
- 3578, 3579, 3580, 1321, 921, 574, 3262, 3262, 3521, 3265, 3477, 3478, 3479, 3591, 450, 3592, 3426, 3427,
- 3425, 3480, 3428, 3424, 3262, 3431, 3436, 3435, 3433, 3434, 3432, 3437, 3438, 3430, 3439, 3440, 3441,
- 52, 3521, 54, 68, 593, 2752, 3262, 2829, 2818, 2829, 2818, 64, 3262, 3273, 2852, 3274, 621, 3266, 29,
- 1123, 1090, 1156, 1420, 1387, 1354, 3275, 3276, 3277, 3278, 987, 382, 3578, 3579, 3580, 1321, 921, 574,
- 3262, 3273, 2852, 3274, 1189, 3266, 221, 1123, 1090, 1156, 1420, 1387, 1354, 3275, 3276, 3277, 3278,
- 987, 382, 3578, 3579, 3580, 1321, 921, 574, 3262, 3273, 2852, 3274, 1189, 3262, 6557, 1123, 1090, 1156,
- 1420, 1387, 1354, 3275, 3276, 3277, 3278, 987, 382, 3578, 3579, 3580, 1321, 921, 574, 53, 208, 941,
- 3265, 941, 1, 1953, 2829, 2818, 3262, 3268, 802, 2630, 2579, 1, 1112, 3262, 3262, 3262, 3166, 870, 3262,
- 1244, 3262, 3273, 2852, 3274, 1189, 3265, 6557, 1123, 1090, 1156, 1420, 1387, 1354, 3275, 3276, 3277,
- 3278, 987, 382, 3578, 3579, 3580, 1321, 921, 574, 1, 3273, 2852, 3274, 1189, 212, 6557, 1123, 1090,
- 1156, 1420, 1387, 1354, 3275, 3276, 3277, 3278, 987, 382, 3578, 3579, 3580, 1321, 921, 574, 3262, 3273,
- 2852, 3274, 1189, 3267, 6557, 1123, 1090, 1156, 1420, 1387, 1354, 3275, 3276, 3277, 3278, 987, 382,
- 3578, 3579, 3580, 1321, 921, 574, 3262, 3273, 2867, 3274, 1189, 3262, 3262, 1123, 1090, 1156, 1420,
- 1387, 1354, 3275, 3276, 3277, 3278, 987, 382, 3578, 3579, 3580, 1321, 921, 574, 3262, 3273, 2872, 3274,
- 1189, 1505, 3262, 1123, 1090, 1156, 1420, 1387, 1354, 3275, 3276, 3277, 3278, 987, 382, 3578, 3579,
- 3580, 1321, 921, 574, 3262, 3273, 2874, 3274, 1189, 3262, 3262, 1123, 1090, 1156, 1420, 1387, 1354,
- 3275, 3276, 3277, 3278, 987, 382, 3578, 3579, 3580, 1321, 921, 574, 3262, 3273, 2890, 3274, 1189, 682,
- 3262, 1123, 1090, 1156, 1420, 1387, 1354, 3275, 3276, 3277, 3278, 987, 382, 3578, 3579, 3580, 1321, 921,
- 574, 3262, 3273, 2852, 3274, 1189, 1765, 3262, 1123, 1090, 1156, 1420, 1387, 1354, 3275, 3276, 3277,
- 3278, 987, 382, 3578, 3579, 3580, 1321, 921, 574, 3262, 3273, 2895, 3274, 1189, 1989, 257, 1123, 1090,
- 1156, 1420, 1387, 1354, 3275, 3276, 3277, 3278, 987, 382, 3578, 3579, 3580, 1321, 921, 574, 1, 3273,
- 2852, 3274, 1189, 1472, 3262, 1123, 1090, 1156, 1420, 1387, 1354, 3275, 3276, 3277, 3278, 987, 382,
- 3578, 3579, 3580, 1321, 921, 574, 20, 180, 3253, 230, 3253, 3253, 32, 3262, 637, 234, 3262, 119, 3172,
- 1, 3262, 3262, 3288, 3289, 3272, 251, 1463, 3262, 1, 3181, 1, 3253, 254, 731, 57, 91, 70, 252, 269,
- 3489, 1838, 3262, 254, 253, 3271, 3250, 3272, 72, 56, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180,
- 180, 180, 3253, 271, 3262, 676, 89, 3271, 1007, 1, 1, 1, 1, 1, 1, 269, 293, 2781, 272, 254, 3253, 3477,
- 3478, 3479, 3591, 450, 3592, 3477, 3478, 3479, 3591, 450, 3592, 963, 802, 1, 3262, 1, 3262, 1, 117,
- 3272, 3268, 3272, 91, 3262, 66, 960, 3521, 286, 3270, 593, 2752, 448, 908, 2557, 30, 208, 802, 1575,
- 117, 3271, 30, 3271, 3629, 593, 2752, 3262, 607, 3183, 802, 1645, 324, 802, 202, 322, 320, 1439, 6557,
- 42, 1908, 6557, 6557, 3262, 1061, 6557, 3262, 190, 190, 6557, 1, 190, 1, 186, 185, 3262, 1488, 207,
- 3262, 3262, 3262, 3262, 3262, 3262, 3262, 3262, 3262, 2613, 117, 3262, 3267, 3262, 3262, 3262, 3262,
- 3262, 3262, 3269, 3520, 3262, 3262, 908, 3262, 3262, 3262, 3262, 3262, 3291, 6183, 3262, 3262, 3262,
- 3262, 558, 3262, 3262, 3262, 3262, 3262, 3262, 3262, 3262, 3262, 3262, 3262, 3262, 3262, 3262, 1610,
- 3262, 3262, 3262, 3262, 3262, 3262, 3262, 3262, 3262, 3262, 3262, 3262, 748, 3262, 3262, 3274, 3262,
- 3273 };
- }
-
- public final static char termAction[] = TermAction.termAction;
-
- @Override
- public final int termAction(int index) {
- return termAction[index];
- }
-
- public interface Asb {
- public final static char asb[] = { 0, 523, 5, 58, 398, 523, 60, 355, 30, 7, 42, 353, 42, 353, 353, 42, 353, 42,
- 400, 600, 60, 46, 557, 355, 400, 181, 186, 185, 518, 107, 600, 517, 359, 301, 353, 104, 104, 353, 104,
- 60, 600, 481, 600, 605, 400, 60, 268, 605, 198, 60, 360, 323, 380, 84, 84, 84, 84, 84, 84, 84, 84, 301,
- 84, 84, 84, 141, 158, 163, 161, 169, 165, 172, 171, 174, 173, 175, 355, 222, 355, 255, 600, 470, 60,
- 607, 326, 400, 58, 271, 323, 423, 147, 301, 607, 252, 355, 84, 107, 517, 359, 182, 82, 82, 82, 82, 182,
- 182, 104, 557, 557, 557, 64, 557, 557, 182, 359, 192, 84, 192, 380, 481, 481, 564, 380, 380, 380, 380,
- 380, 104, 104, 639, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 355,
- 222, 255, 255, 470, 470, 481, 476, 480, 60, 423, 323, 300, 268, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
- 84, 480, 252, 196, 357, 182, 84, 182, 182, 182, 182, 378, 378, 84, 358, 84, 84, 360, 64, 192, 64, 178,
- 430, 198, 600, 602, 479, 478, 481, 481, 481, 481, 481, 481, 323, 161, 161, 158, 158, 165, 165, 163, 163,
- 163, 163, 171, 169, 173, 172, 192, 174, 222, 252, 261, 222, 255, 257, 559, 257, 470, 423, 602, 600, 607,
- 84, 84, 323, 301, 62, 196, 82, 82, 182, 82, 182, 481, 557, 481, 481, 359, 64, 84, 564, 481, 570, 605,
- 484, 484, 484, 484, 355, 84, 222, 263, 257, 252, 84, 104, 423, 470, 570, 476, 323, 323, 257, 2, 82, 182,
- 82, 182, 82, 182, 82, 64, 84, 64, 64, 481, 607, 252, 181, 84, 180, 252, 470, 252, 194, 521, 104, 84, 1,
- 638, 182, 82, 638, 182, 82, 82, 182, 639, 182, 481, 358, 481, 263, 84, 141, 198, 323, 104, 84, 64, 481,
- 638, 638, 182, 64, 481, 638, 638, 182, 638, 182, 82, 481, 639, 182, 64, 323, 64, 64, 481, 64, 481, 638,
- 64, 64, 481, 64, 481, 638, 64, 481, 638, 638, 182, 64, 481, 64, 64, 64, 481, 64, 64, 64, 481, 64, 64,
- 481, 64, 481, 638, 64, 64, 64, 64, 64, 64, 481, 64 };
- }
-
- public final static char asb[] = Asb.asb;
-
- @Override
- public final int asb(int index) {
- return asb[index];
- }
-
- public interface Asr {
- public final static byte asr[] = { 0, 75, 55, 80, 0, 87, 0, 68, 12, 69, 70, 13, 14, 15, 16, 3, 10, 11, 9, 7, 8,
- 17, 18, 78, 19, 20, 21, 22, 23, 24, 64, 56, 61, 59, 60, 58, 57, 62, 63, 65, 66, 67, 55, 74, 71, 73, 50,
- 43, 51, 52, 53, 44, 49, 54, 45, 46, 47, 48, 25, 5, 4, 2, 1, 0, 30, 31, 6, 35, 37, 32, 28, 33, 42, 34,
- 27, 29, 36, 39, 41, 38, 40, 26, 25, 5, 2, 13, 14, 15, 16, 19, 20, 21, 10, 11, 9, 4, 7, 8, 17, 18, 12,
- 22, 23, 24, 1, 3, 0, 50, 56, 43, 57, 68, 51, 58, 52, 59, 60, 53, 44, 61, 62, 49, 69, 54, 70, 63, 64, 45,
- 65, 66, 67, 1, 3, 46, 47, 48, 5, 75, 71, 25, 0, 55, 2, 80, 94, 10, 11, 75, 97, 98, 99, 100, 101, 103,
- 102, 104, 105, 106, 4, 81, 82, 7, 8, 77, 76, 83, 84, 85, 86, 88, 89, 9, 90, 91, 92, 72, 95, 96, 78, 73,
- 74, 71, 25, 5, 0, 2, 5, 75, 71, 73, 25, 55, 74, 0, 5, 72, 55, 80, 2, 13, 14, 15, 16, 19, 20, 21, 1, 3,
- 10, 11, 9, 4, 7, 8, 17, 18, 12, 22, 23, 24, 6, 0, 50, 56, 43, 57, 68, 51, 58, 52, 59, 60, 53, 44, 61,
- 62, 49, 69, 54, 70, 63, 64, 45, 65, 66, 67, 1, 3, 46, 47, 48, 26, 5, 72, 0, 1, 3, 5, 72, 71, 0, 25, 5,
- 4, 1, 2, 74, 0, 78, 5, 49, 43, 44, 45, 46, 47, 48, 10, 11, 9, 4, 7, 8, 17, 18, 12, 22, 23, 24, 2, 1, 3,
- 13, 14, 15, 16, 19, 20, 21, 0, 49, 10, 11, 9, 4, 7, 8, 17, 18, 12, 22, 23, 24, 2, 1, 3, 13, 14, 15, 16,
- 19, 20, 21, 78, 5, 0, 50, 56, 43, 57, 68, 51, 58, 52, 59, 60, 53, 44, 61, 62, 49, 69, 54, 70, 63, 64,
- 45, 65, 66, 67, 46, 47, 48, 1, 3, 6, 0, 87, 93, 72, 30, 31, 6, 35, 37, 32, 28, 33, 42, 34, 27, 29, 36,
- 39, 41, 38, 40, 26, 25, 5, 12, 13, 14, 15, 16, 10, 11, 9, 7, 8, 17, 18, 19, 20, 21, 22, 23, 24, 4, 2, 1,
- 3, 68, 69, 70, 64, 56, 61, 59, 60, 58, 57, 62, 63, 65, 66, 67, 54, 51, 49, 50, 53, 52, 43, 44, 45, 47,
- 46, 48, 0, 49, 54, 53, 52, 51, 50, 80, 94, 10, 11, 9, 7, 8, 81, 82, 76, 77, 83, 84, 85, 86, 88, 89, 90,
- 91, 92, 95, 96, 75, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 25, 43, 44, 45, 46, 47, 48, 4, 1, 2,
- 55, 71, 73, 5, 0, 9, 4, 7, 8, 81, 82, 76, 77, 83, 84, 85, 86, 88, 89, 90, 91, 92, 95, 96, 74, 97, 98,
- 99, 100, 101, 102, 103, 104, 105, 106, 78, 73, 72, 6, 5, 71, 25, 75, 0, 87, 50, 56, 43, 57, 68, 51, 58,
- 52, 59, 60, 53, 44, 61, 62, 49, 69, 54, 70, 63, 64, 45, 65, 66, 67, 1, 3, 4, 46, 47, 48, 25, 5, 26, 2,
- 0, 5, 71, 72, 75, 0, 5, 73, 4, 2, 55, 0, 50, 56, 43, 57, 68, 51, 58, 52, 59, 60, 53, 44, 61, 62, 49, 69,
- 54, 70, 63, 64, 45, 65, 66, 67, 1, 3, 46, 47, 48, 79, 4, 0, 4, 2, 55, 73, 5, 50, 56, 43, 57, 68, 51, 58,
- 52, 59, 60, 53, 44, 61, 62, 49, 69, 54, 70, 63, 64, 45, 65, 66, 67, 1, 3, 46, 47, 48, 79, 0, 27, 5, 73,
- 12, 13, 14, 15, 16, 1, 3, 2, 10, 11, 9, 4, 7, 8, 17, 18, 19, 20, 21, 22, 23, 24, 0 };
- }
-
- public final static byte asr[] = Asr.asr;
-
- @Override
- public final int asr(int index) {
- return asr[index];
- }
-
- public interface Nasb {
- public final static char nasb[] = { 0, 105, 34, 64, 24, 88, 145, 20, 124, 37, 125, 22, 125, 16, 16, 125, 15,
- 125, 119, 142, 147, 34, 34, 20, 138, 65, 44, 44, 34, 34, 142, 34, 55, 83, 7, 7, 7, 7, 7, 46, 34, 158,
- 142, 157, 115, 147, 82, 157, 61, 127, 109, 84, 164, 53, 53, 53, 53, 53, 53, 53, 53, 83, 53, 53, 53, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 86, 138, 34, 138, 34, 13, 129, 79, 94, 27, 64, 52, 84, 103, 34,
- 83, 160, 138, 34, 53, 34, 34, 75, 65, 71, 71, 71, 71, 65, 65, 7, 34, 34, 34, 39, 34, 34, 65, 55, 34, 53,
- 34, 1, 158, 158, 136, 164, 164, 164, 164, 164, 92, 92, 58, 72, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53,
- 53, 53, 53, 53, 53, 53, 53, 72, 53, 34, 168, 138, 7, 13, 138, 158, 134, 34, 147, 103, 84, 83, 99, 53,
- 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 158, 56, 138, 34, 65, 53, 65, 65, 65, 65, 69, 172, 72, 34, 72,
- 72, 109, 39, 34, 39, 34, 34, 151, 142, 155, 44, 44, 158, 158, 158, 158, 158, 158, 84, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 138, 56, 64, 181, 7, 101, 34, 34, 138, 103, 133, 142,
- 79, 53, 53, 84, 83, 34, 51, 71, 71, 65, 174, 65, 158, 34, 158, 158, 75, 39, 53, 11, 158, 140, 157, 152,
- 152, 152, 152, 152, 53, 168, 147, 101, 56, 53, 7, 103, 99, 140, 9, 84, 84, 101, 35, 71, 65, 71, 65, 71,
- 65, 174, 39, 72, 39, 39, 158, 79, 56, 65, 53, 34, 56, 99, 56, 50, 34, 7, 53, 18, 177, 65, 71, 177, 65,
- 71, 71, 65, 174, 65, 158, 34, 158, 147, 53, 67, 61, 84, 7, 53, 39, 158, 177, 177, 65, 39, 158, 177, 177,
- 65, 177, 65, 71, 158, 174, 65, 39, 84, 39, 39, 158, 39, 158, 177, 39, 39, 158, 39, 158, 177, 39, 158,
- 177, 177, 65, 39, 158, 39, 39, 39, 158, 39, 39, 39, 158, 39, 39, 158, 39, 158, 177, 39, 39, 39, 39, 39,
- 39, 158, 39 };
- }
-
- public final static char nasb[] = Nasb.nasb;
-
- @Override
- public final int nasb(int index) {
- return nasb[index];
- }
-
- public interface Nasr {
- public final static char nasr[] = { 0, 88, 86, 85, 79, 84, 83, 2, 0, 41, 46, 66, 65, 40, 0, 116, 91, 0, 125, 0,
- 110, 0, 113, 0, 41, 1, 104, 88, 87, 86, 85, 79, 84, 83, 0, 123, 0, 128, 0, 2, 18, 1, 19, 0, 52, 0, 41,
- 43, 40, 0, 106, 53, 1, 8, 0, 1, 49, 0, 1, 112, 0, 8, 53, 0, 1, 3, 0, 121, 0, 33, 51, 3, 1, 14, 0, 18, 2,
- 73, 49, 1, 33, 0, 1, 8, 39, 0, 114, 0, 1, 33, 107, 0, 94, 0, 1, 33, 51, 16, 0, 35, 0, 82, 0, 80, 0, 126,
- 1, 33, 0, 1, 33, 2, 18, 96, 0, 33, 1, 127, 0, 79, 74, 75, 76, 77, 69, 54, 0, 43, 48, 41, 46, 40, 0, 11,
- 41, 46, 65, 66, 1, 0, 1, 33, 40, 61, 0, 43, 48, 46, 41, 1, 0, 8, 53, 50, 0, 65, 66, 1, 11, 0, 117, 1,
- 33, 0, 1, 58, 14, 0, 99, 1, 58, 0, 33, 51, 1, 68, 0, 1, 44, 11, 0, 1, 58, 92, 0 };
- }
-
- public final static char nasr[] = Nasr.nasr;
-
- @Override
- public final int nasr(int index) {
- return nasr[index];
- }
-
- public interface TerminalIndex {
- public final static char terminalIndex[] = { 0, 85, 2, 86, 9, 87, 3, 10, 11, 8, 6, 7, 68, 81, 82, 83, 84, 12,
- 13, 93, 94, 95, 100, 101, 102, 92, 107, 49, 77, 45, 46, 50, 51, 57, 58, 59, 65, 71, 99, 103, 104, 105,
- 106, 48, 64, 76, 96, 97, 98, 69, 44, 55, 60, 63, 72, 1, 47, 52, 56, 61, 62, 66, 67, 74, 75, 78, 79, 80,
- 54, 70, 73, 42, 91, 90, 29, 31, 16, 17, 89, 30, 4, 14, 15, 18, 19, 20, 21, 108, 22, 23, 24, 25, 26, 53,
- 5, 27, 28, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 88 };
- }
-
- public final static char terminalIndex[] = TerminalIndex.terminalIndex;
-
- @Override
- public final int terminalIndex(int index) {
- return terminalIndex[index];
- }
-
- public interface NonterminalIndex {
- public final static char nonterminalIndex[] = { 0, 0, 113, 112, 0, 0, 0, 0, 115, 119, 120, 110, 121, 122, 114,
- 123, 136, 124, 132, 135, 0, 0, 0, 0, 0, 0, 125, 126, 127, 128, 129, 130, 0, 140, 131, 148, 0, 0, 0, 109,
- 0, 170, 0, 173, 197, 167, 169, 0, 171, 111, 118, 139, 172, 0, 147, 0, 0, 0, 162, 158, 134, 168, 117,
- 181, 184, 185, 186, 0, 0, 150, 0, 174, 180, 138, 151, 152, 153, 154, 157, 159, 179, 183, 0, 142, 143,
- 144, 145, 146, 149, 155, 156, 0, 161, 166, 116, 133, 137, 141, 0, 160, 164, 0, 0, 165, 175, 178, 188,
- 193, 0, 0, 195, 0, 0, 0, 0, 163, 0, 176, 177, 182, 187, 0, 189, 190, 0, 191, 192, 194, 196, 0, 0 };
- }
-
- public final static char nonterminalIndex[] = NonterminalIndex.nonterminalIndex;
-
- @Override
- public final int nonterminalIndex(int index) {
- return nonterminalIndex[index];
- }
-
- public interface ScopePrefix {
- public final static char scopePrefix[] = { 120, 151, 130, 59, 69, 159, 26, 186, 35, 87, 105, 75, 6, 12, 16, 40,
- 83, 52, 141, 195, 212, 219, 223, 52, 52, 199, 52, 1, 1, 1, 44, 47, 92, 115, 47, 227, 20, 145, 206, 206,
- 177, 137, 165, 165, 165, 165, 165, 95, 95, 95 };
- }
-
- public final static char scopePrefix[] = ScopePrefix.scopePrefix;
-
- @Override
- public final int scopePrefix(int index) {
- return scopePrefix[index];
- }
-
- public interface ScopeSuffix {
- public final static char scopeSuffix[] = { 128, 128, 128, 4, 4, 128, 32, 192, 10, 4, 10, 80, 10, 10, 10, 10, 4,
- 4, 139, 128, 10, 10, 4, 56, 80, 203, 65, 4, 4, 4, 10, 50, 4, 10, 118, 10, 23, 148, 209, 216, 180, 139,
- 167, 169, 171, 173, 175, 102, 97, 110 };
- }
-
- public final static char scopeSuffix[] = ScopeSuffix.scopeSuffix;
-
- @Override
- public final int scopeSuffix(int index) {
- return scopeSuffix[index];
- }
-
- public interface ScopeLhs {
- public final static char scopeLhs[] = { 76, 74, 76, 52, 52, 74, 50, 22, 67, 52, 43, 52, 9, 9, 9, 67, 52, 52, 92,
- 16, 9, 8, 8, 52, 52, 32, 52, 128, 125, 124, 65, 81, 52, 41, 59, 6, 106, 92, 10, 8, 23, 92, 87, 86, 85,
- 84, 83, 43, 48, 43 };
- }
-
- public final static char scopeLhs[] = ScopeLhs.scopeLhs;
-
- @Override
- public final int scopeLhs(int index) {
- return scopeLhs[index];
- }
-
- public interface ScopeLa {
- public final static byte scopeLa[] = { 72, 72, 72, 78, 78, 72, 72, 93, 73, 78, 73, 13, 73, 73, 73, 73, 78, 78,
- 25, 72, 73, 73, 78, 4, 13, 74, 49, 78, 78, 78, 73, 2, 78, 73, 1, 73, 75, 1, 73, 73, 28, 25, 1, 68, 69,
- 69, 64, 2, 2, 2 };
- }
-
- public final static byte scopeLa[] = ScopeLa.scopeLa;
-
- @Override
- public final int scopeLa(int index) {
- return scopeLa[index];
- }
-
- public interface ScopeStateSet {
- public final static char scopeStateSet[] = { 153, 153, 153, 126, 126, 153, 49, 10, 130, 126, 139, 126, 60, 60,
- 60, 130, 126, 126, 5, 9, 60, 60, 60, 126, 126, 94, 126, 137, 1, 3, 130, 132, 126, 139, 144, 60, 123, 5,
- 66, 60, 10, 5, 154, 154, 154, 154, 154, 139, 141, 139 };
- }
-
- public final static char scopeStateSet[] = ScopeStateSet.scopeStateSet;
-
- @Override
- public final int scopeStateSet(int index) {
- return scopeStateSet[index];
- }
-
- public interface ScopeRhs {
- public final static char scopeRhs[] = { 0, 167, 55, 0, 109, 0, 169, 2, 24, 0, 110, 0, 169, 2, 23, 0, 169, 2, 22,
- 0, 229, 108, 0, 31, 157, 0, 189, 227, 108, 6, 160, 0, 111, 0, 0, 178, 108, 2, 172, 0, 178, 108, 2, 0,
- 188, 2, 0, 168, 108, 0, 184, 0, 212, 108, 55, 0, 9, 109, 0, 141, 49, 212, 108, 55, 0, 69, 131, 109, 0,
- 141, 212, 108, 49, 55, 0, 212, 108, 49, 55, 0, 131, 109, 0, 141, 49, 55, 0, 141, 212, 108, 55, 0, 141,
- 55, 0, 148, 0, 2, 0, 176, 110, 0, 2, 110, 0, 178, 108, 2, 148, 0, 2, 0, 174, 110, 0, 166, 2, 0, 167, 0,
- 189, 209, 108, 6, 109, 223, 68, 0, 111, 0, 189, 209, 108, 6, 223, 68, 0, 165, 0, 112, 0, 222, 108, 165,
- 0, 108, 165, 0, 163, 112, 0, 205, 108, 6, 221, 109, 220, 186, 0, 205, 108, 6, 220, 186, 0, 195, 0, 154,
- 0, 153, 0, 152, 0, 151, 0, 150, 0, 126, 32, 0, 77, 2, 114, 110, 112, 0, 126, 118, 121, 2, 35, 0, 53,
- 135, 0, 203, 108, 6, 0, 121, 96, 138, 0, 29, 131, 0, 169, 2, 0, 110, 120, 0, 169, 2, 12, 0, 110, 118, 0,
- 219, 2, 115, 0, 121, 55, 115, 0, 121, 2, 0 };
- }
-
- public final static char scopeRhs[] = ScopeRhs.scopeRhs;
-
- @Override
- public final int scopeRhs(int index) {
- return scopeRhs[index];
- }
-
- public interface ScopeState {
- public final static char scopeState[] = { 0, 372, 0, 432, 0, 2902, 2984, 2879, 0, 1013, 2531, 2521, 2495, 2485,
- 2459, 2449, 2423, 2413, 2387, 2377, 2351, 2341, 2315, 2305, 2279, 2269, 2243, 2233, 2207, 2197, 2171,
- 2161, 2135, 2125, 2099, 2089, 2063, 2053, 2027, 2017, 1989, 1731, 1765, 682, 1697, 457, 767, 1663, 0,
- 748, 558, 1843, 1543, 1509, 1508, 1491, 519, 2766, 640, 0, 1420, 1387, 1354, 1321, 921, 574, 886, 2766,
- 1818, 607, 1908, 2557, 1953, 2738, 2724, 2710, 2693, 2630, 2579, 2829, 2818, 2752, 593, 1288, 1255,
- 1222, 1189, 851, 1156, 621, 1123, 1090, 987, 382, 1645, 748, 1610, 1575, 1540, 1505, 1472, 1439, 1406,
- 1373, 940, 1340, 1307, 1274, 1241, 1208, 1175, 1142, 1109, 1076, 1043, 1010, 905, 368, 973, 872, 640,
- 802, 837, 558, 519, 0, 1127, 1101, 552, 492, 369, 2898, 1838, 2781, 1811, 1628, 0, 450, 0, 500, 429,
- 369, 2767, 1760, 2613, 2575, 1838, 2560, 1811, 448, 678, 1898, 0, 1740, 368, 659, 429, 0 };
- }
-
- public final static char scopeState[] = ScopeState.scopeState;
-
- @Override
- public final int scopeState(int index) {
- return scopeState[index];
- }
-
- public interface InSymb {
- public final static char inSymb[] = { 0, 0, 218, 140, 108, 233, 108, 211, 190, 47, 191, 186, 192, 70, 69, 193,
- 68, 194, 195, 108, 2, 1, 148, 211, 225, 204, 153, 148, 197, 155, 108, 150, 6, 55, 220, 198, 198, 223,
- 198, 168, 147, 166, 108, 2, 108, 71, 55, 2, 75, 168, 108, 167, 2, 24, 23, 22, 12, 18, 17, 8, 7, 4, 9,
- 11, 10, 115, 119, 122, 120, 133, 124, 135, 134, 137, 136, 138, 109, 6, 109, 6, 147, 4, 168, 108, 234,
- 108, 140, 49, 141, 108, 116, 4, 108, 6, 160, 4, 155, 150, 203, 40, 38, 41, 39, 36, 29, 27, 34, 42, 33,
- 28, 32, 37, 35, 125, 6, 31, 30, 109, 108, 169, 121, 165, 2, 2, 2, 2, 2, 94, 80, 2, 55, 82, 81, 4, 76,
- 77, 8, 7, 89, 88, 86, 85, 84, 83, 90, 9, 92, 91, 96, 95, 221, 108, 6, 108, 4, 147, 178, 140, 179, 108,
- 108, 141, 212, 187, 106, 105, 104, 102, 103, 101, 100, 99, 98, 97, 75, 224, 108, 6, 5, 121, 108, 121,
- 121, 121, 109, 2, 2, 2, 126, 2, 2, 108, 74, 167, 74, 202, 109, 118, 108, 2, 173, 172, 169, 169, 169,
- 169, 169, 219, 121, 120, 120, 119, 119, 124, 124, 122, 122, 122, 122, 134, 133, 136, 135, 121, 137, 6,
- 205, 165, 206, 108, 209, 109, 210, 147, 108, 2, 108, 71, 212, 49, 141, 4, 71, 108, 158, 110, 121, 158,
- 175, 121, 28, 121, 121, 203, 74, 71, 168, 188, 108, 2, 118, 118, 118, 118, 118, 74, 108, 108, 209, 189,
- 75, 71, 108, 187, 108, 168, 141, 141, 227, 108, 110, 121, 110, 121, 110, 175, 110, 118, 2, 118, 118,
- 178, 108, 205, 222, 74, 166, 189, 187, 189, 71, 229, 80, 55, 230, 110, 121, 110, 110, 121, 110, 110,
- 121, 110, 175, 121, 126, 178, 71, 74, 156, 75, 167, 80, 55, 118, 151, 110, 110, 121, 118, 151, 110, 110,
- 121, 110, 121, 110, 175, 110, 118, 93, 167, 118, 118, 151, 118, 151, 110, 118, 118, 151, 118, 151, 110,
- 118, 151, 110, 110, 121, 118, 175, 118, 118, 118, 151, 118, 118, 118, 151, 118, 118, 151, 118, 151, 110,
- 118, 118, 118, 118, 118, 118, 151, 118 };
- }
-
- public final static char inSymb[] = InSymb.inSymb;
-
- @Override
- public final int inSymb(int index) {
- return inSymb[index];
- }
-
- public interface Name {
- public final static String name[] = { "", "[", "(", "{", ".", "->", "++", "--", "&", "*", "+", "-", "~", "!",
- "/", "%", ">>", "<<", "<", ">", "<=", ">=", "==", "!=", "^", "|", "&&", "||", "?", ":", "...", "=",
- "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", ",", "$empty", "auto", "break", "case",
- "char", "const", "continue", "default", "do", "double", "else", "enum", "extern", "float", "for",
- "goto", "if", "inline", "int", "long", "register", "restrict", "return", "short", "signed", "sizeof",
- "static", "struct", "switch", "typedef", "union", "unsigned", "void", "volatile", "while", "_Bool",
- "_Complex", "_Imaginary", "integer", "floating", "charconst", "stringlit", "identifier", "Completion",
- "EndOfCompletion", "Invalid", "RightBracket", "RightParen", "RightBrace", "SemiColon", "MYTHREAD",
- "THREADS", "UPC_MAX_BLOCKSIZE", "relaxed", "shared", "strict", "upc_barrier", "upc_localsizeof",
- "upc_blocksizeof", "upc_elemsizeof", "upc_notify", "upc_fence", "upc_wait", "upc_forall", "ERROR_TOKEN",
- "EOF_TOKEN", "]", ")", "}", ";", "identifier_token", "expression", "postfix_expression", "member_name",
- "type_id", "initializer_list", "unary_expression", "cast_expression", "multiplicative_expression",
- "additive_expression", "shift_expression", "relational_expression", "equality_expression",
- "and_expression", "exclusive_or_expression", "inclusive_or_expression", "logical_and_expression",
- "logical_or_expression", "assignment_expression", "expression_in_statement", "expression_list_actual",
- "constant_expression", "statement", "compound_statement", "block_item_list", "block_item",
- "declaration", "declaration_specifiers", "init_declarator_list", "simple_declaration_specifiers",
- "struct_or_union_declaration_sp" + "ecifiers", "elaborated_declaration_specifi" + "ers",
- "enum_declaration_specifiers", "typdef_name_declaration_specif" + "iers",
- "no_type_declaration_specifier", "type_qualifier", "no_type_declaration_specifiers",
- "simple_type_specifier", "struct_or_union_specifier", "elaborated_specifier", "enum_specifier",
- "type_name_specifier", "init_declarator", "complete_declarator", "initializer", "declarator",
- "struct_or_union", "struct_declaration_list", "struct_declaration", "specifier_qualifier_list",
- "struct_declarator_list", "complete_struct_declarator", "enumerator_list", "enumerator",
- "direct_declarator", "pointer_seq", "array_direct_declarator", "basic_direct_declarator",
- "knr_direct_declarator", "array_modifier", "function_direct_declarator", "parameter_type_list",
- "function_declarator", "identifier_list", "knr_function_declarator", "array_modifier_type_qualifiers",
- "type_qualifier_list", "parameter_list", "parameter_declaration", "complete_parameter_declarator",
- "abstract_declarator", "direct_abstract_declarator", "basic_direct_abstract_declarat" + "or",
- "array_direct_abstract_declarat" + "or", "initializer_seq", "designated_initializer", "designation",
- "designator_list", "designator", "external_declaration_list", "external_declaration",
- "declaration_list", "function_body", "layout_qualifier", "affinity" };
- }
-
- public final static String name[] = Name.name;
-
- @Override
- public final String name(int index) {
- return name[index];
- }
-
- public final static int ERROR_SYMBOL = 26, SCOPE_UBOUND = 49, SCOPE_SIZE = 50, MAX_NAME_LENGTH = 38;
-
- @Override
- public final int getErrorSymbol() {
- return ERROR_SYMBOL;
- }
-
- @Override
- public final int getScopeUbound() {
- return SCOPE_UBOUND;
- }
-
- @Override
- public final int getScopeSize() {
- return SCOPE_SIZE;
- }
-
- @Override
- public final int getMaxNameLength() {
- return MAX_NAME_LENGTH;
- }
-
- public final static int NUM_STATES = 383, NT_OFFSET = 107, LA_STATE_OFFSET = 3629, MAX_LA = 2147483647,
- NUM_RULES = 367, NUM_NONTERMINALS = 130, NUM_SYMBOLS = 237, SEGMENT_SIZE = 8192, START_STATE = 1523,
- IDENTIFIER_SYMBOL = 0, EOFT_SYMBOL = 87, EOLT_SYMBOL = 87, ACCEPT_ACTION = 3234, ERROR_ACTION = 3262;
-
- public final static boolean BACKTRACK = true;
-
- @Override
- public final int getNumStates() {
- return NUM_STATES;
- }
-
- @Override
- public final int getNtOffset() {
- return NT_OFFSET;
- }
-
- @Override
- public final int getLaStateOffset() {
- return LA_STATE_OFFSET;
- }
-
- @Override
- public final int getMaxLa() {
- return MAX_LA;
- }
-
- @Override
- public final int getNumRules() {
- return NUM_RULES;
- }
-
- @Override
- public final int getNumNonterminals() {
- return NUM_NONTERMINALS;
- }
-
- @Override
- public final int getNumSymbols() {
- return NUM_SYMBOLS;
- }
-
- @Override
- public final int getSegmentSize() {
- return SEGMENT_SIZE;
- }
-
- @Override
- public final int getStartState() {
- return START_STATE;
- }
-
- @Override
- public final int getStartSymbol() {
- return lhs[0];
- }
-
- public final int getIdentifierSymbol() {
- return IDENTIFIER_SYMBOL;
- }
-
- @Override
- public final int getEoftSymbol() {
- return EOFT_SYMBOL;
- }
-
- @Override
- public final int getEoltSymbol() {
- return EOLT_SYMBOL;
- }
-
- @Override
- public final int getAcceptAction() {
- return ACCEPT_ACTION;
- }
-
- @Override
- public final int getErrorAction() {
- return ERROR_ACTION;
- }
-
- @Override
- public final boolean isValidForParser() {
- return isValidForParser;
- }
-
- @Override
- public final boolean getBacktrack() {
- return BACKTRACK;
- }
-
- @Override
- public final int originalState(int state) {
- return -baseCheck[state];
- }
-
- @Override
- public final int asi(int state) {
- return asb[originalState(state)];
- }
-
- @Override
- public final int nasi(int state) {
- return nasb[originalState(state)];
- }
-
- @Override
- public final int inSymbol(int state) {
- return inSymb[originalState(state)];
- }
-
- @Override
- public final int ntAction(int state, int sym) {
- return baseAction[state + sym];
- }
-
- @Override
- public final int tAction(int state, int sym) {
- int i = baseAction[state], k = i + sym;
- return termAction[termCheck[k] == sym ? k : i];
- }
-
- @Override
- public final int lookAhead(int la_state, int sym) {
- int k = la_state + sym;
- return termAction[termCheck[k] == sym ? k : la_state];
- }
-}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCParsersym.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCParsersym.java
deleted file mode 100644
index d63ed9d500b..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCParsersym.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2010 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.dom.parser.upc;
-
-public interface UPCParsersym {
- public final static int TK_auto = 50, TK_break = 29, TK_case = 30, TK_char = 56, TK_const = 43, TK_continue = 27,
- TK_default = 31, TK_do = 32, TK_double = 57, TK_else = 93, TK_enum = 68, TK_extern = 51, TK_float = 58,
- TK_for = 33, TK_goto = 34, TK_if = 35, TK_inline = 52, TK_int = 59, TK_long = 60, TK_register = 53,
- TK_restrict = 44, TK_return = 36, TK_short = 61, TK_signed = 62, TK_sizeof = 12, TK_static = 49,
- TK_struct = 69, TK_switch = 37, TK_typedef = 54, TK_union = 70, TK_unsigned = 63, TK_void = 64,
- TK_volatile = 45, TK_while = 28, TK__Bool = 65, TK__Complex = 66, TK__Imaginary = 67, TK_integer = 13,
- TK_floating = 14, TK_charconst = 15, TK_stringlit = 16, TK_identifier = 1, TK_Completion = 3,
- TK_EndOfCompletion = 5, TK_Invalid = 107, TK_LeftBracket = 55, TK_LeftParen = 2, TK_LeftBrace = 6,
- TK_Dot = 80, TK_Arrow = 94, TK_PlusPlus = 10, TK_MinusMinus = 11, TK_And = 9, TK_Star = 4, TK_Plus = 7,
- TK_Minus = 8, TK_Tilde = 17, TK_Bang = 18, TK_Slash = 81, TK_Percent = 82, TK_RightShift = 76,
- TK_LeftShift = 77, TK_LT = 83, TK_GT = 84, TK_LE = 85, TK_GE = 86, TK_EQ = 88, TK_NE = 89, TK_Caret = 90,
- TK_Or = 91, TK_AndAnd = 92, TK_OrOr = 95, TK_Question = 96, TK_Colon = 74, TK_DotDotDot = 79,
- TK_Assign = 75, TK_StarAssign = 97, TK_SlashAssign = 98, TK_PercentAssign = 99, TK_PlusAssign = 100,
- TK_MinusAssign = 101, TK_RightShiftAssign = 102, TK_LeftShiftAssign = 103, TK_AndAssign = 104,
- TK_CaretAssign = 105, TK_OrAssign = 106, TK_Comma = 71, TK_RightBracket = 78, TK_RightParen = 73,
- TK_RightBrace = 72, TK_SemiColon = 25, TK_MYTHREAD = 19, TK_THREADS = 20, TK_UPC_MAX_BLOCKSIZE = 21,
- TK_relaxed = 46, TK_shared = 47, TK_strict = 48, TK_upc_barrier = 38, TK_upc_localsizeof = 22,
- TK_upc_blocksizeof = 23, TK_upc_elemsizeof = 24, TK_upc_notify = 39, TK_upc_fence = 40, TK_upc_wait = 41,
- TK_upc_forall = 42, TK_ERROR_TOKEN = 26, TK_EOF_TOKEN = 87;
-
- public final static String orderedTerminalSymbols[] = { "", "identifier", "LeftParen", "Completion", "Star",
- "EndOfCompletion", "LeftBrace", "Plus", "Minus", "And", "PlusPlus", "MinusMinus", "sizeof", "integer",
- "floating", "charconst", "stringlit", "Tilde", "Bang", "MYTHREAD", "THREADS", "UPC_MAX_BLOCKSIZE",
- "upc_localsizeof", "upc_blocksizeof", "upc_elemsizeof", "SemiColon", "ERROR_TOKEN", "continue", "while",
- "break", "case", "default", "do", "for", "goto", "if", "return", "switch", "upc_barrier", "upc_notify",
- "upc_fence", "upc_wait", "upc_forall", "const", "restrict", "volatile", "relaxed", "shared", "strict",
- "static", "auto", "extern", "inline", "register", "typedef", "LeftBracket", "char", "double", "float",
- "int", "long", "short", "signed", "unsigned", "void", "_Bool", "_Complex", "_Imaginary", "enum", "struct",
- "union", "Comma", "RightBrace", "RightParen", "Colon", "Assign", "RightShift", "LeftShift", "RightBracket",
- "DotDotDot", "Dot", "Slash", "Percent", "LT", "GT", "LE", "GE", "EOF_TOKEN", "EQ", "NE", "Caret", "Or",
- "AndAnd", "else", "Arrow", "OrOr", "Question", "StarAssign", "SlashAssign", "PercentAssign", "PlusAssign",
- "MinusAssign", "RightShiftAssign", "LeftShiftAssign", "AndAssign", "CaretAssign", "OrAssign", "Invalid" };
-
- public final static boolean isValidForParser = true;
-}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCSizeofExpressionParser.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCSizeofExpressionParser.java
deleted file mode 100644
index 4a33ca69ac1..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCSizeofExpressionParser.java
+++ /dev/null
@@ -1,2029 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2011 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.dom.parser.upc;
-
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.cdt.core.dom.ast.IASTBinaryExpression;
-import org.eclipse.cdt.core.dom.ast.IASTCastExpression;
-import org.eclipse.cdt.core.dom.ast.IASTCompletionNode;
-import org.eclipse.cdt.core.dom.ast.IASTCompositeTypeSpecifier;
-import org.eclipse.cdt.core.dom.ast.IASTElaboratedTypeSpecifier;
-import org.eclipse.cdt.core.dom.ast.IASTExpression;
-import org.eclipse.cdt.core.dom.ast.IASTLiteralExpression;
-import org.eclipse.cdt.core.dom.ast.IASTUnaryExpression;
-import org.eclipse.cdt.core.dom.lrparser.CPreprocessorAdapter;
-import org.eclipse.cdt.core.dom.lrparser.IDOMTokenMap;
-import org.eclipse.cdt.core.dom.lrparser.ISecondaryParser;
-import org.eclipse.cdt.core.dom.lrparser.ITokenCollector;
-import org.eclipse.cdt.core.dom.lrparser.action.ITokenMap;
-import org.eclipse.cdt.core.dom.lrparser.action.ITokenStream;
-import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack;
-import org.eclipse.cdt.core.dom.lrparser.action.TokenMap;
-import org.eclipse.cdt.core.dom.lrparser.lpgextensions.FixedBacktrackingParser;
-import org.eclipse.cdt.core.dom.parser.IBuiltinBindingsProvider;
-import org.eclipse.cdt.core.dom.parser.upc.UPCASTNodeFactory;
-import org.eclipse.cdt.core.dom.parser.upc.UPCParserAction;
-import org.eclipse.cdt.core.dom.parser.upc.UPCSecondaryParserFactory;
-import org.eclipse.cdt.core.dom.upc.ast.IUPCASTKeywordExpression;
-import org.eclipse.cdt.core.dom.upc.ast.IUPCASTSynchronizationStatement;
-import org.eclipse.cdt.core.dom.upc.ast.IUPCASTUnarySizeofExpression;
-import org.eclipse.cdt.core.index.IIndex;
-import org.eclipse.cdt.core.parser.IScanner;
-
-import lpg.lpgjavaruntime.BadParseException;
-import lpg.lpgjavaruntime.BadParseSymFileException;
-import lpg.lpgjavaruntime.DiagnoseParser;
-import lpg.lpgjavaruntime.ErrorToken;
-import lpg.lpgjavaruntime.IToken;
-import lpg.lpgjavaruntime.LexStream;
-import lpg.lpgjavaruntime.Monitor;
-import lpg.lpgjavaruntime.NotBacktrackParseTableException;
-import lpg.lpgjavaruntime.NullExportedSymbolsException;
-import lpg.lpgjavaruntime.NullTerminalSymbolsException;
-import lpg.lpgjavaruntime.ParseErrorCodes;
-import lpg.lpgjavaruntime.ParseTable;
-import lpg.lpgjavaruntime.PrsStream;
-import lpg.lpgjavaruntime.RuleAction;
-import lpg.lpgjavaruntime.Token;
-import lpg.lpgjavaruntime.UndefinedEofSymbolException;
-import lpg.lpgjavaruntime.UnimplementedTerminalsException;
-
-public class UPCSizeofExpressionParser extends PrsStream
- implements RuleAction, ITokenStream, ITokenCollector, ISecondaryParser<IASTExpression> {
- private static ParseTable prs = new UPCSizeofExpressionParserprs();
- private FixedBacktrackingParser btParser;
-
- public FixedBacktrackingParser getParser() {
- return btParser;
- }
-
- private void setResult(Object object) {
- btParser.setSym1(object);
- }
-
- public Object getRhsSym(int i) {
- return btParser.getSym(i);
- }
-
- public int getRhsTokenIndex(int i) {
- return btParser.getToken(i);
- }
-
- public IToken getRhsIToken(int i) {
- return super.getIToken(getRhsTokenIndex(i));
- }
-
- public int getRhsFirstTokenIndex(int i) {
- return btParser.getFirstToken(i);
- }
-
- public IToken getRhsFirstIToken(int i) {
- return super.getIToken(getRhsFirstTokenIndex(i));
- }
-
- public int getRhsLastTokenIndex(int i) {
- return btParser.getLastToken(i);
- }
-
- public IToken getRhsLastIToken(int i) {
- return super.getIToken(getRhsLastTokenIndex(i));
- }
-
- public int getLeftSpan() {
- return btParser.getFirstToken();
- }
-
- @Override
- public IToken getLeftIToken() {
- return super.getIToken(getLeftSpan());
- }
-
- public int getRightSpan() {
- return btParser.getLastToken();
- }
-
- @Override
- public IToken getRightIToken() {
- return super.getIToken(getRightSpan());
- }
-
- public int getRhsErrorTokenIndex(int i) {
- int index = btParser.getToken(i);
- IToken err = super.getIToken(index);
- return (err instanceof ErrorToken ? index : 0);
- }
-
- public ErrorToken getRhsErrorIToken(int i) {
- int index = btParser.getToken(i);
- IToken err = super.getIToken(index);
- return (ErrorToken) (err instanceof ErrorToken ? err : null);
- }
-
- public UPCSizeofExpressionParser(LexStream lexStream) {
- super(lexStream);
-
- try {
- super.remapTerminalSymbols(orderedTerminalSymbols(), UPCSizeofExpressionParserprs.EOFT_SYMBOL);
- } catch (NullExportedSymbolsException e) {
- } catch (NullTerminalSymbolsException e) {
- } catch (UnimplementedTerminalsException e) {
- java.util.ArrayList unimplemented_symbols = e.getSymbols();
- System.out.println("The Lexer will not scan the following token(s):");
- for (int i = 0; i < unimplemented_symbols.size(); i++) {
- Integer id = (Integer) unimplemented_symbols.get(i);
- System.out.println(" " + UPCSizeofExpressionParsersym.orderedTerminalSymbols[id.intValue()]);
- }
- System.out.println();
- } catch (UndefinedEofSymbolException e) {
- throw new Error(new UndefinedEofSymbolException("The Lexer does not implement the Eof symbol "
- + UPCSizeofExpressionParsersym.orderedTerminalSymbols[UPCSizeofExpressionParserprs.EOFT_SYMBOL]));
- }
- }
-
- @Override
- public String[] orderedTerminalSymbols() {
- return UPCSizeofExpressionParsersym.orderedTerminalSymbols;
- }
-
- public String getTokenKindName(int kind) {
- return UPCSizeofExpressionParsersym.orderedTerminalSymbols[kind];
- }
-
- public int getEOFTokenKind() {
- return UPCSizeofExpressionParserprs.EOFT_SYMBOL;
- }
-
- public PrsStream getParseStream() {
- return this;
- }
-
- //
- // Report error message for given error_token.
- //
- public final void reportErrorTokenMessage(int error_token, String msg) {
- int firsttok = super.getFirstErrorToken(error_token), lasttok = super.getLastErrorToken(error_token);
- String location = super.getFileName() + ':'
- + (firsttok > lasttok ? (super.getEndLine(lasttok) + ":" + super.getEndColumn(lasttok))
- : (super.getLine(error_token) + ":" + super.getColumn(error_token) + ":"
- + super.getEndLine(error_token) + ":" + super.getEndColumn(error_token)))
- + ": ";
- super.reportError((firsttok > lasttok ? ParseErrorCodes.INSERTION_CODE : ParseErrorCodes.SUBSTITUTION_CODE),
- location, msg);
- }
-
- public void parser() {
- parser(null, 0);
- }
-
- public void parser(Monitor monitor) {
- parser(monitor, 0);
- }
-
- public void parser(int error_repair_count) {
- parser(null, error_repair_count);
- }
-
- public void parser(Monitor monitor, int error_repair_count) {
- try {
- btParser = new FixedBacktrackingParser(monitor, this, prs, this);
- } catch (NotBacktrackParseTableException e) {
- throw new Error(new NotBacktrackParseTableException(
- "Regenerate UPCSizeofExpressionParserprs.java with -BACKTRACK option"));
- } catch (BadParseSymFileException e) {
- throw new Error(
- new BadParseSymFileException("Bad Parser Symbol File -- UPCSizeofExpressionParsersym.java"));
- }
-
- try {
- btParser.parse(error_repair_count);
- } catch (BadParseException e) {
- reset(e.error_token); // point to error token
- DiagnoseParser diagnoseParser = new DiagnoseParser(this, prs);
- diagnoseParser.diagnose(e.error_token);
- }
- }
-
- private UPCParserAction action;
- private IASTCompletionNode compNode;
-
- public UPCSizeofExpressionParser(IScanner scanner, IDOMTokenMap tokenMap,
- IBuiltinBindingsProvider builtinBindingsProvider, IIndex index, Map<String, String> properties) {
- initActions(properties);
- action.initializeTranslationUnit(scanner, builtinBindingsProvider, index);
- CPreprocessorAdapter.runCPreprocessor(scanner, this, tokenMap);
- }
-
- private void initActions(Map<String, String> properties) {
- ScopedStack<Object> astStack = new ScopedStack<>();
-
- action = new UPCParserAction(this, astStack, new UPCASTNodeFactory(), UPCSecondaryParserFactory.getDefault());
- action.setParserProperties(properties);
-
- }
-
- @Override
- public void addToken(IToken token) {
- token.setKind(mapKind(token.getKind())); // TODO does mapKind need to be called?
- super.addToken(token);
- }
-
- @Override
- public IASTExpression parse() {
- // this has to be done, or... kaboom!
- setStreamLength(getSize());
-
- final int errorRepairCount = -1; // -1 means full error handling
- parser(null, errorRepairCount); // do the actual parse
- super.resetTokenStream(); // allow tokens to be garbage collected
-
- compNode = action.getASTCompletionNode(); // the completion node may be null
- return (IASTExpression) action.getParseResult();
- }
-
- @Override
- public IASTCompletionNode getCompletionNode() {
- return compNode;
- }
-
- // uncomment this method to use with backtracking parser
- @Override
- public List<IToken> getRuleTokens() {
- return getTokens().subList(getLeftSpan(), getRightSpan() + 1);
- }
-
- @Override
- public String[] getOrderedTerminalSymbols() {
- return UPCSizeofExpressionParsersym.orderedTerminalSymbols;
- }
-
- @Override
- @SuppressWarnings("nls")
- public String getName() {
- return "UPCSizeofExpressionParser";
- }
-
- private ITokenMap tokenMap = null;
-
- @Override
- public void setTokens(List<IToken> tokens) {
- resetTokenStream();
- addToken(new Token(null, 0, 0, 0)); // dummy token
- for (IToken token : tokens) {
- token.setKind(tokenMap.mapKind(token.getKind()));
- addToken(token);
- }
- addToken(new Token(null, 0, 0, UPCSizeofExpressionParsersym.TK_EOF_TOKEN));
- }
-
- public UPCSizeofExpressionParser(ITokenStream stream, Map<String, String> properties) { // constructor for creating secondary parser
- initActions(properties);
- tokenMap = new TokenMap(UPCSizeofExpressionParsersym.orderedTerminalSymbols,
- stream.getOrderedTerminalSymbols());
- }
-
- @Override
- public void ruleAction(int ruleNumber) {
- switch (ruleNumber) {
-
- //
- // Rule 1: <openscope-ast> ::= $Empty
- //
- case 1: {
- action.openASTScope();
- break;
- }
-
- //
- // Rule 2: <empty> ::= $Empty
- //
- case 2: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 13: literal ::= integer
- //
- case 13: {
- action.consumeExpressionLiteral(IASTLiteralExpression.lk_integer_constant);
- break;
- }
-
- //
- // Rule 14: literal ::= floating
- //
- case 14: {
- action.consumeExpressionLiteral(IASTLiteralExpression.lk_float_constant);
- break;
- }
-
- //
- // Rule 15: literal ::= charconst
- //
- case 15: {
- action.consumeExpressionLiteral(IASTLiteralExpression.lk_char_constant);
- break;
- }
-
- //
- // Rule 16: literal ::= stringlit
- //
- case 16: {
- action.consumeExpressionLiteral(IASTLiteralExpression.lk_string_literal);
- break;
- }
-
- //
- // Rule 18: primary_expression ::= primary_expression_id
- //
- case 18: {
- action.consumeExpressionID();
- break;
- }
-
- //
- // Rule 19: primary_expression ::= ( expression )
- //
- case 19: {
- action.consumeExpressionBracketed();
- break;
- }
-
- //
- // Rule 22: postfix_expression ::= postfix_expression [ expression ]
- //
- case 22: {
- action.consumeExpressionArraySubscript();
- break;
- }
-
- //
- // Rule 23: postfix_expression ::= postfix_expression ( expression_list_opt )
- //
- case 23: {
- action.consumeExpressionFunctionCall();
- break;
- }
-
- //
- // Rule 24: postfix_expression ::= postfix_expression . member_name
- //
- case 24: {
- action.consumeExpressionFieldReference(false);
- break;
- }
-
- //
- // Rule 25: postfix_expression ::= postfix_expression -> member_name
- //
- case 25: {
- action.consumeExpressionFieldReference(true);
- break;
- }
-
- //
- // Rule 26: postfix_expression ::= postfix_expression ++
- //
- case 26: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixIncr);
- break;
- }
-
- //
- // Rule 27: postfix_expression ::= postfix_expression --
- //
- case 27: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixDecr);
- break;
- }
-
- //
- // Rule 28: postfix_expression ::= ( type_id ) initializer_list
- //
- case 28: {
- action.consumeExpressionTypeIdInitializer();
- break;
- }
-
- //
- // Rule 33: unary_expression ::= ++ unary_expression
- //
- case 33: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixIncr);
- break;
- }
-
- //
- // Rule 34: unary_expression ::= -- unary_expression
- //
- case 34: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixDecr);
- break;
- }
-
- //
- // Rule 35: unary_expression ::= & cast_expression
- //
- case 35: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_amper);
- break;
- }
-
- //
- // Rule 36: unary_expression ::= * cast_expression
- //
- case 36: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_star);
- break;
- }
-
- //
- // Rule 37: unary_expression ::= + cast_expression
- //
- case 37: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_plus);
- break;
- }
-
- //
- // Rule 38: unary_expression ::= - cast_expression
- //
- case 38: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_minus);
- break;
- }
-
- //
- // Rule 39: unary_expression ::= ~ cast_expression
- //
- case 39: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_tilde);
- break;
- }
-
- //
- // Rule 40: unary_expression ::= ! cast_expression
- //
- case 40: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_not);
- break;
- }
-
- //
- // Rule 41: unary_expression ::= sizeof unary_expression
- //
- case 41: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_sizeof);
- break;
- }
-
- //
- // Rule 43: cast_expression ::= ( type_id ) cast_expression
- //
- case 43: {
- action.consumeExpressionCast(IASTCastExpression.op_cast);
- break;
- }
-
- //
- // Rule 45: multiplicative_expression ::= multiplicative_expression * cast_expression
- //
- case 45: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_multiply);
- break;
- }
-
- //
- // Rule 46: multiplicative_expression ::= multiplicative_expression / cast_expression
- //
- case 46: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_divide);
- break;
- }
-
- //
- // Rule 47: multiplicative_expression ::= multiplicative_expression % cast_expression
- //
- case 47: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_modulo);
- break;
- }
-
- //
- // Rule 49: additive_expression ::= additive_expression + multiplicative_expression
- //
- case 49: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_plus);
- break;
- }
-
- //
- // Rule 50: additive_expression ::= additive_expression - multiplicative_expression
- //
- case 50: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_minus);
- break;
- }
-
- //
- // Rule 52: shift_expression ::= shift_expression << additive_expression
- //
- case 52: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftLeft);
- break;
- }
-
- //
- // Rule 53: shift_expression ::= shift_expression >> additive_expression
- //
- case 53: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftRight);
- break;
- }
-
- //
- // Rule 55: relational_expression ::= relational_expression < shift_expression
- //
- case 55: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_lessThan);
- break;
- }
-
- //
- // Rule 56: relational_expression ::= relational_expression > shift_expression
- //
- case 56: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_greaterThan);
- break;
- }
-
- //
- // Rule 57: relational_expression ::= relational_expression <= shift_expression
- //
- case 57: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_lessEqual);
- break;
- }
-
- //
- // Rule 58: relational_expression ::= relational_expression >= shift_expression
- //
- case 58: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_greaterEqual);
- break;
- }
-
- //
- // Rule 60: equality_expression ::= equality_expression == relational_expression
- //
- case 60: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_equals);
- break;
- }
-
- //
- // Rule 61: equality_expression ::= equality_expression != relational_expression
- //
- case 61: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_notequals);
- break;
- }
-
- //
- // Rule 63: and_expression ::= and_expression & equality_expression
- //
- case 63: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryAnd);
- break;
- }
-
- //
- // Rule 65: exclusive_or_expression ::= exclusive_or_expression ^ and_expression
- //
- case 65: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryXor);
- break;
- }
-
- //
- // Rule 67: inclusive_or_expression ::= inclusive_or_expression | exclusive_or_expression
- //
- case 67: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryOr);
- break;
- }
-
- //
- // Rule 69: logical_and_expression ::= logical_and_expression && inclusive_or_expression
- //
- case 69: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_logicalAnd);
- break;
- }
-
- //
- // Rule 71: logical_or_expression ::= logical_or_expression || logical_and_expression
- //
- case 71: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_logicalOr);
- break;
- }
-
- //
- // Rule 73: conditional_expression ::= logical_or_expression ? expression : assignment_expression
- //
- case 73: {
- action.consumeExpressionConditional();
- break;
- }
-
- //
- // Rule 75: assignment_expression ::= unary_expression = assignment_expression
- //
- case 75: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_assign);
- break;
- }
-
- //
- // Rule 76: assignment_expression ::= unary_expression *= assignment_expression
- //
- case 76: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_multiplyAssign);
- break;
- }
-
- //
- // Rule 77: assignment_expression ::= unary_expression /= assignment_expression
- //
- case 77: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_divideAssign);
- break;
- }
-
- //
- // Rule 78: assignment_expression ::= unary_expression %= assignment_expression
- //
- case 78: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_moduloAssign);
- break;
- }
-
- //
- // Rule 79: assignment_expression ::= unary_expression += assignment_expression
- //
- case 79: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_plusAssign);
- break;
- }
-
- //
- // Rule 80: assignment_expression ::= unary_expression -= assignment_expression
- //
- case 80: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_minusAssign);
- break;
- }
-
- //
- // Rule 81: assignment_expression ::= unary_expression <<= assignment_expression
- //
- case 81: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftLeftAssign);
- break;
- }
-
- //
- // Rule 82: assignment_expression ::= unary_expression >>= assignment_expression
- //
- case 82: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftRightAssign);
- break;
- }
-
- //
- // Rule 83: assignment_expression ::= unary_expression &= assignment_expression
- //
- case 83: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryAndAssign);
- break;
- }
-
- //
- // Rule 84: assignment_expression ::= unary_expression ^= assignment_expression
- //
- case 84: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryXorAssign);
- break;
- }
-
- //
- // Rule 85: assignment_expression ::= unary_expression |= assignment_expression
- //
- case 85: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryOrAssign);
- break;
- }
-
- //
- // Rule 88: expression_list ::= <openscope-ast> expression_list_actual
- //
- case 88: {
- action.consumeExpressionList();
- break;
- }
-
- //
- // Rule 90: expression_list_opt ::= $Empty
- //
- case 90: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 100: statement ::= ERROR_TOKEN
- //
- case 100: {
- action.consumeStatementProblem();
- break;
- }
-
- //
- // Rule 101: labeled_statement ::= identifier_token : statement
- //
- case 101: {
- action.consumeStatementLabeled();
- break;
- }
-
- //
- // Rule 102: labeled_statement ::= case constant_expression : statement
- //
- case 102: {
- action.consumeStatementCase();
- break;
- }
-
- //
- // Rule 103: labeled_statement ::= default : statement
- //
- case 103: {
- action.consumeStatementDefault();
- break;
- }
-
- //
- // Rule 104: compound_statement ::= { }
- //
- case 104: {
- action.consumeStatementCompoundStatement(false);
- break;
- }
-
- //
- // Rule 105: compound_statement ::= { <openscope-ast> block_item_list }
- //
- case 105: {
- action.consumeStatementCompoundStatement(true);
- break;
- }
-
- //
- // Rule 109: block_item ::= declaration
- //
- case 109: {
- action.consumeStatementDeclarationWithDisambiguation();
- break;
- }
-
- //
- // Rule 110: expression_statement ::= ;
- //
- case 110: {
- action.consumeStatementNull();
- break;
- }
-
- //
- // Rule 111: expression_statement ::= expression_in_statement ;
- //
- case 111: {
- action.consumeStatementExpression();
- break;
- }
-
- //
- // Rule 112: selection_statement ::= if ( expression ) statement
- //
- case 112: {
- action.consumeStatementIf(false);
- break;
- }
-
- //
- // Rule 113: selection_statement ::= if ( expression ) statement else statement
- //
- case 113: {
- action.consumeStatementIf(true);
- break;
- }
-
- //
- // Rule 114: selection_statement ::= switch ( expression ) statement
- //
- case 114: {
- action.consumeStatementSwitch();
- break;
- }
-
- //
- // Rule 116: expression_opt ::= $Empty
- //
- case 116: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 117: iteration_statement ::= do statement while ( expression ) ;
- //
- case 117: {
- action.consumeStatementDoLoop(true);
- break;
- }
-
- //
- // Rule 118: iteration_statement ::= do statement
- //
- case 118: {
- action.consumeStatementDoLoop(false);
- break;
- }
-
- //
- // Rule 119: iteration_statement ::= while ( expression ) statement
- //
- case 119: {
- action.consumeStatementWhileLoop();
- break;
- }
-
- //
- // Rule 120: iteration_statement ::= for ( expression_opt ; expression_opt ; expression_opt ) statement
- //
- case 120: {
- action.consumeStatementForLoop();
- break;
- }
-
- //
- // Rule 121: iteration_statement ::= for ( declaration expression_opt ; expression_opt ) statement
- //
- case 121: {
- action.consumeStatementForLoop();
- break;
- }
-
- //
- // Rule 122: jump_statement ::= goto identifier_token ;
- //
- case 122: {
- action.consumeStatementGoto();
- break;
- }
-
- //
- // Rule 123: jump_statement ::= continue ;
- //
- case 123: {
- action.consumeStatementContinue();
- break;
- }
-
- //
- // Rule 124: jump_statement ::= break ;
- //
- case 124: {
- action.consumeStatementBreak();
- break;
- }
-
- //
- // Rule 125: jump_statement ::= return ;
- //
- case 125: {
- action.consumeStatementReturn(false);
- break;
- }
-
- //
- // Rule 126: jump_statement ::= return expression ;
- //
- case 126: {
- action.consumeStatementReturn(true);
- break;
- }
-
- //
- // Rule 127: declaration ::= declaration_specifiers ;
- //
- case 127: {
- action.consumeDeclarationSimple(false);
- break;
- }
-
- //
- // Rule 128: declaration ::= declaration_specifiers <openscope-ast> init_declarator_list ;
- //
- case 128: {
- action.consumeDeclarationSimple(true);
- break;
- }
-
- //
- // Rule 129: declaration_specifiers ::= <openscope-ast> simple_declaration_specifiers
- //
- case 129: {
- action.consumeDeclarationSpecifiersSimple();
- break;
- }
-
- //
- // Rule 130: declaration_specifiers ::= <openscope-ast> struct_or_union_declaration_specifiers
- //
- case 130: {
- action.consumeDeclarationSpecifiersStructUnionEnum();
- break;
- }
-
- //
- // Rule 131: declaration_specifiers ::= <openscope-ast> elaborated_declaration_specifiers
- //
- case 131: {
- action.consumeDeclarationSpecifiersStructUnionEnum();
- break;
- }
-
- //
- // Rule 132: declaration_specifiers ::= <openscope-ast> enum_declaration_specifiers
- //
- case 132: {
- action.consumeDeclarationSpecifiersStructUnionEnum();
- break;
- }
-
- //
- // Rule 133: declaration_specifiers ::= <openscope-ast> typdef_name_declaration_specifiers
- //
- case 133: {
- action.consumeDeclarationSpecifiersTypedefName();
- break;
- }
-
- //
- // Rule 158: init_declarator ::= complete_declarator = initializer
- //
- case 158: {
- action.consumeDeclaratorWithInitializer(true);
- break;
- }
-
- //
- // Rule 160: storage_class_specifier ::= storage_class_specifier_token
- //
- case 160: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 166: simple_type_specifier ::= simple_type_specifier_token
- //
- case 166: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 179: type_name_specifier ::= identifier_token
- //
- case 179: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 180: struct_or_union_specifier ::= struct_or_union struct_or_union_specifier_hook { <openscope-ast> struct_declaration_list_opt }
- //
- case 180: {
- action.consumeTypeSpecifierComposite(false);
- break;
- }
-
- //
- // Rule 181: struct_or_union_specifier ::= struct_or_union struct_or_union_specifier_hook identifier_token struct_or_union_specifier_suffix_hook { <openscope-ast> struct_declaration_list_opt }
- //
- case 181: {
- action.consumeTypeSpecifierComposite(true);
- break;
- }
-
- //
- // Rule 186: elaborated_specifier ::= struct elaborated_specifier_hook identifier_token
- //
- case 186: {
- action.consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_struct);
- break;
- }
-
- //
- // Rule 187: elaborated_specifier ::= union elaborated_specifier_hook identifier_token
- //
- case 187: {
- action.consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_union);
- break;
- }
-
- //
- // Rule 188: elaborated_specifier ::= enum elaborated_specifier_hook identifier_token
- //
- case 188: {
- action.consumeTypeSpecifierElaborated(IASTElaboratedTypeSpecifier.k_enum);
- break;
- }
-
- //
- // Rule 194: struct_declaration ::= specifier_qualifier_list <openscope-ast> struct_declarator_list ;
- //
- case 194: {
- action.consumeStructDeclaration(true);
- break;
- }
-
- //
- // Rule 195: struct_declaration ::= specifier_qualifier_list ;
- //
- case 195: {
- action.consumeStructDeclaration(false);
- break;
- }
-
- //
- // Rule 196: struct_declaration ::= ERROR_TOKEN
- //
- case 196: {
- action.consumeDeclarationProblem();
- break;
- }
-
- //
- // Rule 202: struct_declarator ::= : constant_expression
- //
- case 202: {
- action.consumeBitField(false);
- break;
- }
-
- //
- // Rule 203: struct_declarator ::= declarator : constant_expression
- //
- case 203: {
- action.consumeBitField(true);
- break;
- }
-
- //
- // Rule 204: enum_specifier ::= enum enum_specifier_hook { <openscope-ast> enumerator_list_opt comma_opt }
- //
- case 204: {
- action.consumeTypeSpecifierEnumeration(false);
- break;
- }
-
- //
- // Rule 205: enum_specifier ::= enum enum_specifier_hook identifier_token { <openscope-ast> enumerator_list_opt comma_opt }
- //
- case 205: {
- action.consumeTypeSpecifierEnumeration(true);
- break;
- }
-
- //
- // Rule 211: enumerator ::= identifier_token
- //
- case 211: {
- action.consumeEnumerator(false);
- break;
- }
-
- //
- // Rule 212: enumerator ::= identifier_token = constant_expression
- //
- case 212: {
- action.consumeEnumerator(true);
- break;
- }
-
- //
- // Rule 213: type_qualifier ::= type_qualifier_token
- //
- case 213: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 217: function_specifier ::= inline
- //
- case 217: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 219: declarator ::= <openscope-ast> pointer_seq direct_declarator
- //
- case 219: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 224: basic_direct_declarator ::= declarator_id_name
- //
- case 224: {
- action.consumeDirectDeclaratorIdentifier();
- break;
- }
-
- //
- // Rule 225: basic_direct_declarator ::= ( declarator )
- //
- case 225: {
- action.consumeDirectDeclaratorBracketed();
- break;
- }
-
- //
- // Rule 226: declarator_id_name ::= identifier
- //
- case 226: {
- action.consumeIdentifierName();
- break;
- }
-
- //
- // Rule 227: array_direct_declarator ::= basic_direct_declarator array_modifier
- //
- case 227: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 228: array_direct_declarator ::= array_direct_declarator array_modifier
- //
- case 228: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 230: function_direct_declarator ::= basic_direct_declarator ( <openscope-ast> parameter_type_list )
- //
- case 230: {
- action.consumeDirectDeclaratorFunctionDeclarator(true, true);
- break;
- }
-
- //
- // Rule 231: function_direct_declarator ::= basic_direct_declarator ( )
- //
- case 231: {
- action.consumeDirectDeclaratorFunctionDeclarator(true, false);
- break;
- }
-
- //
- // Rule 233: function_declarator ::= <openscope-ast> pointer_seq function_direct_declarator
- //
- case 233: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 234: knr_direct_declarator ::= basic_direct_declarator ( <openscope-ast> identifier_list )
- //
- case 234: {
- action.consumeDirectDeclaratorFunctionDeclaratorKnR();
- break;
- }
-
- //
- // Rule 236: knr_function_declarator ::= <openscope-ast> pointer_seq knr_direct_declarator
- //
- case 236: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 237: identifier_list ::= identifier
- //
- case 237: {
- action.consumeIdentifierKnR();
- break;
- }
-
- //
- // Rule 238: identifier_list ::= identifier_list , identifier
- //
- case 238: {
- action.consumeIdentifierKnR();
- break;
- }
-
- //
- // Rule 239: array_modifier ::= [ ]
- //
- case 239: {
- action.consumeDirectDeclaratorArrayModifier(false);
- break;
- }
-
- //
- // Rule 240: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers ]
- //
- case 240: {
- action.consumeDirectDeclaratorModifiedArrayModifier(false, false, true, false);
- break;
- }
-
- //
- // Rule 241: array_modifier ::= [ assignment_expression ]
- //
- case 241: {
- action.consumeDirectDeclaratorArrayModifier(true);
- break;
- }
-
- //
- // Rule 242: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers assignment_expression ]
- //
- case 242: {
- action.consumeDirectDeclaratorModifiedArrayModifier(false, false, true, true);
- break;
- }
-
- //
- // Rule 243: array_modifier ::= [ static assignment_expression ]
- //
- case 243: {
- action.consumeDirectDeclaratorModifiedArrayModifier(true, false, false, true);
- break;
- }
-
- //
- // Rule 244: array_modifier ::= [ static <openscope-ast> array_modifier_type_qualifiers assignment_expression ]
- //
- case 244: {
- action.consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true);
- break;
- }
-
- //
- // Rule 245: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers static assignment_expression ]
- //
- case 245: {
- action.consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true);
- break;
- }
-
- //
- // Rule 246: array_modifier ::= [ * ]
- //
- case 246: {
- action.consumeDirectDeclaratorModifiedArrayModifier(false, true, false, false);
- break;
- }
-
- //
- // Rule 247: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers * ]
- //
- case 247: {
- action.consumeDirectDeclaratorModifiedArrayModifier(false, true, true, false);
- break;
- }
-
- //
- // Rule 249: pointer_seq ::= pointer_hook * pointer_hook
- //
- case 249: {
- action.consumePointer();
- break;
- }
-
- //
- // Rule 250: pointer_seq ::= pointer_seq pointer_hook * pointer_hook
- //
- case 250: {
- action.consumePointer();
- break;
- }
-
- //
- // Rule 251: pointer_seq ::= pointer_hook * pointer_hook <openscope-ast> type_qualifier_list
- //
- case 251: {
- action.consumePointerTypeQualifierList();
- break;
- }
-
- //
- // Rule 252: pointer_seq ::= pointer_seq pointer_hook * pointer_hook <openscope-ast> type_qualifier_list
- //
- case 252: {
- action.consumePointerTypeQualifierList();
- break;
- }
-
- //
- // Rule 256: parameter_type_list ::= parameter_list
- //
- case 256: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 257: parameter_type_list ::= parameter_list , ...
- //
- case 257: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 258: parameter_type_list ::= ...
- //
- case 258: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 261: parameter_declaration ::= declaration_specifiers complete_parameter_declarator
- //
- case 261: {
- action.consumeParameterDeclaration();
- break;
- }
-
- //
- // Rule 262: parameter_declaration ::= declaration_specifiers
- //
- case 262: {
- action.consumeParameterDeclarationWithoutDeclarator();
- break;
- }
-
- //
- // Rule 265: type_id ::= specifier_qualifier_list
- //
- case 265: {
- action.consumeTypeId(false);
- break;
- }
-
- //
- // Rule 266: type_id ::= specifier_qualifier_list abstract_declarator
- //
- case 266: {
- action.consumeTypeId(true);
- break;
- }
-
- //
- // Rule 268: abstract_declarator ::= <openscope-ast> pointer_seq
- //
- case 268: {
- action.consumeDeclaratorWithPointer(false);
- break;
- }
-
- //
- // Rule 269: abstract_declarator ::= <openscope-ast> pointer_seq direct_abstract_declarator
- //
- case 269: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 273: basic_direct_abstract_declarator ::= ( abstract_declarator )
- //
- case 273: {
- action.consumeDirectDeclaratorBracketed();
- break;
- }
-
- //
- // Rule 274: array_direct_abstract_declarator ::= array_modifier
- //
- case 274: {
- action.consumeDirectDeclaratorArrayDeclarator(false);
- break;
- }
-
- //
- // Rule 275: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier
- //
- case 275: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 276: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier
- //
- case 276: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 277: function_direct_abstract_declarator ::= ( )
- //
- case 277: {
- action.consumeDirectDeclaratorFunctionDeclarator(false, false);
- break;
- }
-
- //
- // Rule 278: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( )
- //
- case 278: {
- action.consumeDirectDeclaratorFunctionDeclarator(true, false);
- break;
- }
-
- //
- // Rule 279: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_type_list )
- //
- case 279: {
- action.consumeDirectDeclaratorFunctionDeclarator(false, true);
- break;
- }
-
- //
- // Rule 280: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( <openscope-ast> parameter_type_list )
- //
- case 280: {
- action.consumeDirectDeclaratorFunctionDeclarator(true, true);
- break;
- }
-
- //
- // Rule 281: initializer ::= assignment_expression
- //
- case 281: {
- action.consumeInitializer();
- break;
- }
-
- //
- // Rule 282: initializer ::= initializer_list
- //
- case 282: {
- action.consumeInitializer();
- break;
- }
-
- //
- // Rule 283: initializer_list ::= start_initializer_list { <openscope-ast> initializer_seq comma_opt } end_initializer_list
- //
- case 283: {
- action.consumeInitializerList();
- break;
- }
-
- //
- // Rule 284: initializer_list ::= { <openscope-ast> }
- //
- case 284: {
- action.consumeInitializerList();
- break;
- }
-
- //
- // Rule 285: start_initializer_list ::= $Empty
- //
- case 285: {
- action.initializerListStart();
- break;
- }
-
- //
- // Rule 286: end_initializer_list ::= $Empty
- //
- case 286: {
- action.initializerListEnd();
- break;
- }
-
- //
- // Rule 291: designated_initializer ::= <openscope-ast> designation = initializer
- //
- case 291: {
- action.consumeInitializerDesignated();
- break;
- }
-
- //
- // Rule 295: designator_base ::= [ constant_expression ]
- //
- case 295: {
- action.consumeDesignatorArray();
- break;
- }
-
- //
- // Rule 296: designator_base ::= . identifier_token
- //
- case 296: {
- action.consumeDesignatorField();
- break;
- }
-
- //
- // Rule 297: designator ::= [ constant_expression ]
- //
- case 297: {
- action.consumeDesignatorArray();
- break;
- }
-
- //
- // Rule 298: designator ::= . identifier_token
- //
- case 298: {
- action.consumeDesignatorField();
- break;
- }
-
- //
- // Rule 299: translation_unit ::= external_declaration_list
- //
- case 299: {
- action.consumeTranslationUnit();
- break;
- }
-
- //
- // Rule 300: translation_unit ::= $Empty
- //
- case 300: {
- action.consumeTranslationUnit();
- break;
- }
-
- //
- // Rule 305: external_declaration ::= ;
- //
- case 305: {
- action.consumeDeclarationEmpty();
- break;
- }
-
- //
- // Rule 306: external_declaration ::= ERROR_TOKEN
- //
- case 306: {
- action.consumeDeclarationProblem();
- break;
- }
-
- //
- // Rule 310: function_definition ::= <openscope-ast> function_declarator function_body
- //
- case 310: {
- action.consumeFunctionDefinition(false);
- break;
- }
-
- //
- // Rule 311: function_definition ::= declaration_specifiers <openscope-ast> knr_function_declarator <openscope-ast> declaration_list compound_statement
- //
- case 311: {
- action.consumeFunctionDefinitionKnR();
- break;
- }
-
- //
- // Rule 312: normal_function_definition ::= declaration_specifiers <openscope-ast> function_declarator function_body
- //
- case 312: {
- action.consumeFunctionDefinition(true);
- break;
- }
-
- //
- // Rule 313: function_body ::= { }
- //
- case 313: {
- action.consumeStatementCompoundStatement(false);
- break;
- }
-
- //
- // Rule 314: function_body ::= { <openscope-ast> block_item_list }
- //
- case 314: {
- action.consumeStatementCompoundStatement(true);
- break;
- }
-
- //
- // Rule 316: no_sizeof_type_id_start ::= ERROR_TOKEN
- //
- case 316: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 317: literal ::= MYTHREAD
- //
- case 317: {
- action.consumeKeywordExpression(IUPCASTKeywordExpression.kw_mythread);
- break;
- }
-
- //
- // Rule 318: literal ::= THREADS
- //
- case 318: {
- action.consumeKeywordExpression(IUPCASTKeywordExpression.kw_threads);
- break;
- }
-
- //
- // Rule 319: literal ::= UPC_MAX_BLOCKSIZE
- //
- case 319: {
- action.consumeKeywordExpression(IUPCASTKeywordExpression.kw_upc_max_block_size);
- break;
- }
-
- //
- // Rule 320: unary_expression ::= upc_localsizeof unary_expression
- //
- case 320: {
- action.consumeExpressionUnarySizeofOperator(IUPCASTUnarySizeofExpression.upc_localsizeof);
- break;
- }
-
- //
- // Rule 321: unary_expression ::= upc_blocksizeof unary_expression
- //
- case 321: {
- action.consumeExpressionUnarySizeofOperator(IUPCASTUnarySizeofExpression.upc_blocksizeof);
- break;
- }
-
- //
- // Rule 322: unary_expression ::= upc_elemsizeof unary_expression
- //
- case 322: {
- action.consumeExpressionUnarySizeofOperator(IUPCASTUnarySizeofExpression.upc_elemsizeof);
- break;
- }
-
- //
- // Rule 326: shared_type_qualifier ::= shared
- //
- case 326: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 327: reference_type_qualifier ::= relaxed
- //
- case 327: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 328: reference_type_qualifier ::= strict
- //
- case 328: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 329: layout_qualifier ::= [ constant_expression ]
- //
- case 329: {
- action.consumeLayoutQualifier(true, false);
- break;
- }
-
- //
- // Rule 330: layout_qualifier ::= [ * ]
- //
- case 330: {
- action.consumeLayoutQualifier(false, true);
- break;
- }
-
- //
- // Rule 331: layout_qualifier ::= [ ]
- //
- case 331: {
- action.consumeLayoutQualifier(false, false);
- break;
- }
-
- //
- // Rule 333: synchronization_statement ::= upc_notify expression ;
- //
- case 333: {
- action.consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_notify, true);
- break;
- }
-
- //
- // Rule 334: synchronization_statement ::= upc_notify ;
- //
- case 334: {
- action.consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_notify, false);
- break;
- }
-
- //
- // Rule 335: synchronization_statement ::= upc_wait expression ;
- //
- case 335: {
- action.consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_wait, true);
- break;
- }
-
- //
- // Rule 336: synchronization_statement ::= upc_wait ;
- //
- case 336: {
- action.consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_wait, false);
- break;
- }
-
- //
- // Rule 337: synchronization_statement ::= upc_barrier expression ;
- //
- case 337: {
- action.consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_barrier, true);
- break;
- }
-
- //
- // Rule 338: synchronization_statement ::= upc_barrier ;
- //
- case 338: {
- action.consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_barrier, false);
- break;
- }
-
- //
- // Rule 339: synchronization_statement ::= upc_fence ;
- //
- case 339: {
- action.consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_fence, false);
- break;
- }
-
- //
- // Rule 340: iteration_statement ::= upc_forall ( expression ; expression ; expression ; affinity ) statement
- //
- case 340: {
- action.consumeStatementUPCForallLoop(true, true, true, true);
- break;
- }
-
- //
- // Rule 341: iteration_statement ::= upc_forall ( expression ; expression ; expression ; ) statement
- //
- case 341: {
- action.consumeStatementUPCForallLoop(true, true, true, false);
- break;
- }
-
- //
- // Rule 342: iteration_statement ::= upc_forall ( expression ; expression ; ; affinity ) statement
- //
- case 342: {
- action.consumeStatementUPCForallLoop(true, true, false, true);
- break;
- }
-
- //
- // Rule 343: iteration_statement ::= upc_forall ( expression ; expression ; ; ) statement
- //
- case 343: {
- action.consumeStatementUPCForallLoop(true, true, false, false);
- break;
- }
-
- //
- // Rule 344: iteration_statement ::= upc_forall ( expression ; ; expression ; affinity ) statement
- //
- case 344: {
- action.consumeStatementUPCForallLoop(true, false, true, true);
- break;
- }
-
- //
- // Rule 345: iteration_statement ::= upc_forall ( expression ; ; expression ; ) statement
- //
- case 345: {
- action.consumeStatementUPCForallLoop(true, false, true, false);
- break;
- }
-
- //
- // Rule 346: iteration_statement ::= upc_forall ( expression ; ; ; affinity ) statement
- //
- case 346: {
- action.consumeStatementUPCForallLoop(true, false, false, true);
- break;
- }
-
- //
- // Rule 347: iteration_statement ::= upc_forall ( expression ; ; ; ) statement
- //
- case 347: {
- action.consumeStatementUPCForallLoop(true, false, false, false);
- break;
- }
-
- //
- // Rule 348: iteration_statement ::= upc_forall ( ; expression ; expression ; affinity ) statement
- //
- case 348: {
- action.consumeStatementUPCForallLoop(false, true, true, true);
- break;
- }
-
- //
- // Rule 349: iteration_statement ::= upc_forall ( ; expression ; expression ; ) statement
- //
- case 349: {
- action.consumeStatementUPCForallLoop(false, true, true, false);
- break;
- }
-
- //
- // Rule 350: iteration_statement ::= upc_forall ( ; expression ; ; affinity ) statement
- //
- case 350: {
- action.consumeStatementUPCForallLoop(false, true, false, true);
- break;
- }
-
- //
- // Rule 351: iteration_statement ::= upc_forall ( ; expression ; ; ) statement
- //
- case 351: {
- action.consumeStatementUPCForallLoop(false, true, false, false);
- break;
- }
-
- //
- // Rule 352: iteration_statement ::= upc_forall ( ; ; expression ; affinity ) statement
- //
- case 352: {
- action.consumeStatementUPCForallLoop(false, false, true, true);
- break;
- }
-
- //
- // Rule 353: iteration_statement ::= upc_forall ( ; ; expression ; ) statement
- //
- case 353: {
- action.consumeStatementUPCForallLoop(false, false, true, false);
- break;
- }
-
- //
- // Rule 354: iteration_statement ::= upc_forall ( ; ; ; affinity ) statement
- //
- case 354: {
- action.consumeStatementUPCForallLoop(false, false, false, true);
- break;
- }
-
- //
- // Rule 355: iteration_statement ::= upc_forall ( ; ; ; ) statement
- //
- case 355: {
- action.consumeStatementUPCForallLoop(false, false, false, false);
- break;
- }
-
- //
- // Rule 356: iteration_statement ::= upc_forall ( declaration expression ; expression ; affinity ) statement
- //
- case 356: {
- action.consumeStatementUPCForallLoop(true, true, true, true);
- break;
- }
-
- //
- // Rule 357: iteration_statement ::= upc_forall ( declaration expression ; expression ; ) statement
- //
- case 357: {
- action.consumeStatementUPCForallLoop(true, true, true, false);
- break;
- }
-
- //
- // Rule 358: iteration_statement ::= upc_forall ( declaration expression ; ; affinity ) statement
- //
- case 358: {
- action.consumeStatementUPCForallLoop(true, true, false, true);
- break;
- }
-
- //
- // Rule 359: iteration_statement ::= upc_forall ( declaration expression ; ; ) statement
- //
- case 359: {
- action.consumeStatementUPCForallLoop(true, true, false, false);
- break;
- }
-
- //
- // Rule 360: iteration_statement ::= upc_forall ( declaration ; expression ; affinity ) statement
- //
- case 360: {
- action.consumeStatementUPCForallLoop(true, false, true, true);
- break;
- }
-
- //
- // Rule 361: iteration_statement ::= upc_forall ( declaration ; expression ; ) statement
- //
- case 361: {
- action.consumeStatementUPCForallLoop(true, false, true, false);
- break;
- }
-
- //
- // Rule 362: iteration_statement ::= upc_forall ( declaration ; ; affinity ) statement
- //
- case 362: {
- action.consumeStatementUPCForallLoop(true, false, false, true);
- break;
- }
-
- //
- // Rule 363: iteration_statement ::= upc_forall ( declaration ; ; ) statement
- //
- case 363: {
- action.consumeStatementUPCForallLoop(true, false, false, false);
- break;
- }
-
- //
- // Rule 365: affinity ::= continue
- //
- case 365: {
- action.consumeToken();
- break;
- }
-
- default:
- break;
- }
- return;
- }
-}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCSizeofExpressionParserprs.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCSizeofExpressionParserprs.java
deleted file mode 100644
index f1183fcb399..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCSizeofExpressionParserprs.java
+++ /dev/null
@@ -1,741 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2011 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.dom.parser.upc;
-
-public class UPCSizeofExpressionParserprs implements lpg.lpgjavaruntime.ParseTable, UPCSizeofExpressionParsersym {
-
- public interface IsKeyword {
- public final static byte isKeyword[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static byte isKeyword[] = IsKeyword.isKeyword;
-
- public final boolean isKeyword(int index) {
- return isKeyword[index] != 0;
- }
-
- public interface BaseCheck {
- public final static short baseCheck[] = { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 4,
- 4, 3, 3, 2, 2, 4, 1, 0, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 4, 1, 3, 3, 3, 1, 3, 3, 1, 3, 3, 1, 3, 3, 3,
- 3, 1, 3, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 5, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 2, 1, 0, 1, 3,
- 1, 1, 1, 1, 1, 1, 1, 1, 3, 4, 3, 2, 4, 1, 2, 1, 1, 1, 2, 5, 7, 5, 1, 0, 7, 2, 5, 9, 8, 3, 2, 2, 2, 3, 2,
- 4, 2, 2, 2, 2, 2, 1, 1, 1, 1, 2, 1, 2, 2, 2, 1, 2, 2, 1, 2, 2, 1, 2, 2, 1, 2, 2, 1, 3, 1, 3, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 8, 0, 0, 1, 1, 3, 3, 3, 0, 1, 0, 1, 2, 4, 2, 1, 1,
- 1, 3, 1, 1, 2, 3, 7, 8, 0, 1, 0, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 3, 1, 2, 2, 1, 5, 3, 1,
- 3, 5, 1, 3, 1, 3, 2, 4, 3, 5, 4, 6, 6, 3, 5, 1, 3, 4, 5, 6, 0, 1, 2, 1, 3, 1, 1, 3, 2, 1, 1, 1, 1, 2, 1,
- 2, 3, 1, 1, 1, 3, 1, 2, 2, 2, 3, 4, 5, 1, 1, 7, 3, 0, 0, 1, 1, 3, 3, 4, 1, 1, 2, 3, 2, 3, 2, 1, 0, 1, 2,
- 1, 1, 1, 1, 1, 2, 1, 3, 6, 4, 2, 4, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 2, 1, 1, 1, 3, 3, 2, 1, 3, 2, 3, 2, 3,
- 2, 2, 11, 10, 10, 9, 10, 9, 9, 8, 10, 9, 9, 8, 9, 8, 8, 7, 10, 9, 9, 8, 9, 8, 8, 7, 1, 1, -39, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -80, 0, 0, 0, 0, -163, -120, 0, -74, 0, 0, 0, 0,
- -145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, 0, -108, -36, -37, 0, 0,
- 0, 0, -82, 0, 0, -4, 0, -32, 0, -17, 0, 0, 0, 0, 0, 0, 0, 0, -126, 0, -33, 0, 0, 0, 0, -45, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -136, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0,
- 0, 0, 0, -141, -70, -121, 0, 0, -54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, 0, -19, 0,
- 0, 0, 0, 0, 0, -71, 0, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -122, 0, 0,
- 0, -123, 0, 0, -124, 0, -183, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -20, 0, 0, 0, 0, 0, 0, 0, 0, -21, 0, -49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -30, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, -59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -131, 0, 0, 0, 0, 0, 0, 0, 0, 0, -61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -139, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -150, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -149, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -23, 0, 0, 0, 0, 0, 0, 0, 0, 0, -184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -129, 0, 0, 0, 0, 0, 0, 0, 0,
- -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -84, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, 0, 0, -73, 0, 0, 0, 0, 0, 0,
- 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -127, 0, 0, 0, 0, 0, 0, 0, 0, -107, 0, 0, 0, -173, -180, 0, 0, -77, -78, -89, 0, -213, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -81, -85, 0, 0, 0, 0, -24, 0, 0, -142, -135, 0,
- -25, -155, -146, -144, 0, 0, -161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -152, -35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -147, 0, 0, 0, 0, 0, -26, 0, -160, -27, -28, 0, 0, 0, -87,
- 0, 0, 0, -164, 0, -153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -40, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -29, 0, 0, -90, 0, -58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -171, 0, 0, 0, 0, 0, -55, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -6, 0, 0, 0, 0, 0, 0, 0, 0, -190, -172, -91, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -92, -93, 0, 0, 0, 0, 0, 0, 0, -41, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -134, 0, -53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, 0,
- -94, -154, -118, -185, -157, -95, 0, 0, -96, 0, -97, 0, -98, 0, -176, 0, 0, -46, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -162, 0, 0, 0, 0, 0, 0, 0, -9, 0, 0, 0, 0, 0, 0, 0, -99, 0, -47, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, -207, -10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -177, -100,
- -76, -168, -101, -102, -110, 0, 0, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -192, -56, -83, 0, 0, -103, 0, -203, -204, -104, 0, 0, 0, -195, -86, 0, 0, 0, 0, 0, 0, 0, 0, -105, 0, 0,
- 0, 0, -88, -156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -106, -201, 0,
- -210, 0, 0, 0, 0, -115, 0, 0, 0, 0, 0, 0, 0, -140, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, -7, 0, 0,
- 0, 0, 0, 0, 0, -151, 0, 0, 0, 0, 0, 0, 0, -11, 0, 0, 0, 0, 0, 0, 0, -109, 0, -111, 0, -128, 0, 0, 0, 0,
- 0, 0, 0, 0, -12, 0, 0, 0, 0, 0, 0, 0, -13, 0, 0, 0, 0, 0, 0, 0, -14, 0, 0, 0, 0, 0, 0, 0, -38, -42, 0,
- 0, 0, 0, 0, 0, 0, -137, -143, 0, -43, 0, 0, 0, 0, 0, 0, 0, -44, 0, 0, 0, 0, 0, 0, 0, 0, -117, -1, -170,
- -169, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -15, 0, 0, 0, 0, 0, 0, -158, 0, 0, 0, 0, 0, 0, -16,
- 0, 0, 0, 0, 0, 0, -18, -114, -209, 0, -178, -179, -130, -31, -182, 0, -159, 0, 0, 0, -202, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, -189, 0, -175, -211, 0, 0, 0, 0, -188, 0, 0, 0, -34, 0,
- -165, 0, 0, 0, 0, 0, -133, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -186, 0, 0, 0, -187, 0, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static short baseCheck[] = BaseCheck.baseCheck;
-
- @Override
- public final int baseCheck(int index) {
- return baseCheck[index];
- }
-
- public final static short rhs[] = baseCheck;
-
- @Override
- public final int rhs(int index) {
- return rhs[index];
- }
-
- public interface BaseAction {
- public final static char baseAction[] = { 89, 11, 105, 21, 21, 26, 26, 41, 41, 71, 71, 1, 1, 2, 2, 2, 2, 3, 3,
- 3, 4, 5, 5, 5, 5, 5, 5, 5, 5, 61, 61, 72, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 10,
- 10, 10, 12, 12, 12, 12, 12, 13, 13, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 20, 20,
- 20, 20, 20, 20, 20, 20, 20, 20, 106, 48, 42, 90, 90, 74, 74, 43, 107, 107, 107, 107, 107, 107, 107, 108,
- 108, 108, 109, 109, 114, 114, 115, 115, 110, 110, 111, 111, 111, 117, 117, 112, 112, 112, 112, 112, 113,
- 113, 113, 113, 113, 116, 116, 27, 27, 27, 27, 27, 30, 30, 30, 80, 80, 75, 75, 75, 75, 76, 76, 76, 77,
- 77, 77, 78, 78, 78, 79, 79, 79, 118, 118, 119, 119, 120, 31, 33, 33, 33, 33, 33, 55, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 56, 65, 62, 62, 91, 92, 67, 67, 63, 63, 63, 68, 81, 81, 82, 82, 69, 69, 69, 51,
- 93, 93, 83, 84, 84, 84, 64, 64, 94, 85, 85, 86, 86, 70, 70, 22, 23, 23, 23, 32, 50, 50, 34, 34, 34, 34,
- 37, 37, 39, 35, 35, 36, 40, 40, 121, 121, 38, 122, 122, 95, 95, 28, 28, 28, 28, 28, 28, 28, 28, 28, 87,
- 52, 52, 52, 52, 29, 58, 58, 57, 57, 57, 59, 59, 53, 53, 96, 96, 73, 73, 60, 60, 60, 44, 44, 44, 45, 46,
- 46, 46, 47, 47, 47, 47, 66, 66, 49, 49, 54, 98, 97, 97, 97, 97, 88, 99, 100, 100, 101, 101, 102, 102,
- 123, 123, 124, 124, 125, 125, 125, 125, 127, 127, 126, 126, 126, 128, 129, 129, 89, 89, 2, 2, 2, 6, 6,
- 6, 22, 22, 24, 24, 25, 25, 103, 103, 103, 107, 130, 130, 130, 130, 130, 130, 130, 112, 112, 112, 112,
- 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 131,
- 131, 1, 1289, 17, 21, 18, 439, 1286, 44, 684, 554, 728, 760, 693, 1190, 1044, 1243, 1196, 1247, 1246,
- 74, 91, 866, 135, 213, 323, 324, 227, 184, 529, 25, 137, 134, 136, 160, 582, 20, 17, 21, 18, 439, 1286,
- 44, 684, 554, 728, 392, 693, 1190, 1044, 1243, 1196, 1247, 1246, 74, 281, 139, 166, 690, 1635, 6, 324,
- 324, 143, 146, 149, 152, 53, 432, 1332, 40, 448, 125, 31, 69, 435, 1480, 1184, 1527, 1539, 1553, 1156,
- 1500, 541, 282, 125, 31, 1098, 19, 1633, 648, 20, 17, 21, 18, 439, 42, 44, 684, 554, 1365, 287, 354, 20,
- 17, 21, 18, 439, 1286, 44, 684, 554, 728, 392, 693, 1190, 1044, 1243, 1196, 1247, 1246, 74, 281, 288,
- 284, 325, 1747, 1412, 293, 195, 225, 179, 1440, 648, 20, 17, 21, 18, 439, 42, 44, 684, 554, 728, 25,
- 693, 1190, 1044, 1243, 1196, 1548, 282, 135, 213, 323, 324, 1633, 24, 393, 237, 137, 134, 136, 160, 59,
- 324, 125, 187, 289, 648, 20, 17, 21, 18, 439, 42, 44, 684, 554, 728, 22, 693, 1190, 1044, 1499, 139,
- 166, 125, 1743, 392, 290, 1146, 143, 146, 149, 152, 324, 432, 681, 20, 17, 21, 18, 439, 322, 1480, 1184,
- 1527, 1539, 1553, 1156, 615, 20, 17, 21, 18, 439, 1286, 44, 684, 554, 728, 23, 693, 1190, 1044, 1243,
- 1196, 1247, 1246, 74, 281, 281, 20, 17, 21, 18, 439, 1286, 44, 684, 554, 728, 1740, 693, 1190, 1044,
- 1243, 1196, 1247, 1246, 74, 750, 239, 125, 186, 1725, 210, 769, 1680, 282, 125, 188, 125, 296, 1633,
- 648, 20, 17, 21, 18, 439, 1286, 44, 684, 554, 728, 291, 693, 1190, 1044, 1243, 1196, 1247, 1246, 74, 91,
- 714, 20, 17, 21, 18, 439, 1286, 44, 684, 554, 728, 1745, 693, 1190, 1044, 1243, 1196, 1247, 1246, 74,
- 792, 474, 20, 17, 21, 18, 439, 42, 44, 684, 554, 728, 364, 693, 1190, 1044, 1243, 1196, 1247, 1246, 93,
- 15, 331, 648, 20, 17, 21, 18, 439, 42, 44, 684, 1419, 435, 648, 20, 17, 21, 18, 439, 42, 44, 684, 1421,
- 834, 315, 20, 17, 21, 18, 439, 1286, 44, 684, 554, 728, 39, 693, 1190, 1044, 1243, 1196, 1247, 1246, 74,
- 876, 240, 648, 20, 17, 21, 18, 439, 1286, 44, 684, 554, 728, 237, 693, 1190, 1044, 1243, 1196, 1247,
- 1246, 74, 92, 648, 20, 17, 21, 18, 439, 1286, 44, 684, 554, 728, 241, 693, 1190, 1044, 1243, 1196, 1247,
- 1246, 74, 85, 648, 20, 17, 21, 18, 439, 1286, 44, 684, 554, 728, 237, 693, 1190, 1044, 1243, 1196, 1247,
- 1246, 74, 84, 648, 20, 17, 21, 18, 439, 1286, 44, 684, 554, 728, 243, 693, 1190, 1044, 1243, 1196, 1247,
- 1246, 74, 83, 648, 20, 17, 21, 18, 439, 1286, 44, 684, 554, 728, 237, 693, 1190, 1044, 1243, 1196, 1247,
- 1246, 74, 82, 648, 20, 17, 21, 18, 439, 1286, 44, 684, 554, 728, 329, 693, 1190, 1044, 1243, 1196, 1247,
- 1246, 74, 81, 648, 20, 17, 21, 18, 439, 1286, 44, 684, 554, 728, 237, 693, 1190, 1044, 1243, 1196, 1247,
- 1246, 74, 80, 648, 20, 17, 21, 18, 439, 1286, 44, 684, 554, 728, 242, 693, 1190, 1044, 1243, 1196, 1247,
- 1246, 74, 79, 648, 20, 17, 21, 18, 439, 1286, 44, 684, 554, 728, 237, 693, 1190, 1044, 1243, 1196, 1247,
- 1246, 74, 78, 648, 20, 17, 21, 18, 439, 1286, 44, 684, 554, 728, 244, 693, 1190, 1044, 1243, 1196, 1247,
- 1246, 74, 77, 648, 20, 17, 21, 18, 439, 1286, 44, 684, 554, 728, 237, 693, 1190, 1044, 1243, 1196, 1247,
- 1246, 74, 76, 648, 20, 17, 21, 18, 439, 1286, 44, 684, 554, 728, 245, 693, 1190, 1044, 1243, 1196, 1247,
- 1246, 74, 75, 648, 20, 17, 21, 18, 439, 1286, 44, 684, 554, 728, 237, 693, 1190, 1044, 1243, 1196, 1247,
- 1246, 74, 73, 648, 20, 17, 21, 18, 439, 1286, 44, 684, 554, 728, 295, 693, 1190, 1044, 1243, 1196, 1247,
- 1246, 74, 918, 648, 20, 17, 21, 18, 439, 1286, 44, 684, 554, 728, 401, 693, 1190, 1044, 1243, 1196,
- 1247, 1246, 74, 960, 648, 20, 17, 21, 18, 439, 42, 44, 684, 554, 728, 25, 693, 1190, 1044, 1243, 1196,
- 1247, 1246, 93, 648, 20, 17, 21, 18, 439, 42, 44, 684, 554, 728, 322, 693, 1190, 1044, 1243, 1196, 1247,
- 1246, 93, 1237, 125, 298, 1002, 549, 20, 17, 21, 18, 439, 42, 43, 648, 20, 17, 21, 18, 439, 42, 44, 684,
- 554, 728, 212, 693, 1190, 1044, 1243, 1196, 1247, 1246, 93, 648, 20, 17, 21, 18, 439, 42, 44, 684, 554,
- 728, 6, 693, 1190, 1044, 1243, 1196, 1247, 1246, 93, 767, 28, 400, 1582, 541, 541, 1633, 531, 792, 686,
- 225, 179, 648, 20, 17, 21, 18, 439, 42, 44, 684, 554, 728, 202, 693, 1190, 1044, 1243, 1196, 1247, 1246,
- 93, 135, 213, 323, 324, 275, 276, 768, 414, 138, 134, 136, 160, 73, 180, 1538, 6, 389, 28, 400, 25, 25,
- 6, 1633, 203, 482, 1743, 1749, 1197, 135, 213, 323, 324, 1202, 140, 166, 25, 145, 134, 136, 160, 144,
- 147, 150, 153, 274, 432, 348, 6, 1635, 1255, 218, 1257, 221, 1410, 223, 224, 229, 1702, 631, 239, 267,
- 1155, 1154, 272, 1635, 450, 263, 6, 186, 77, 1786, 1302, 277, 446, 274, 619, 264, 402, 1423, 871, 218,
- 1257, 221, 1410, 223, 224, 229, 1605, 1834, 87, 267, 1155, 1154, 272, 209, 524, 1497, 648, 20, 17, 21,
- 18, 439, 42, 44, 1334, 1335, 228, 771, 1494, 1744, 747, 261, 648, 20, 17, 21, 18, 439, 42, 44, 684, 554,
- 728, 587, 693, 1190, 1044, 1243, 1579, 648, 20, 17, 21, 18, 439, 42, 44, 684, 554, 728, 626, 693, 1190,
- 1530, 681, 20, 17, 21, 18, 439, 321, 274, 1637, 253, 6, 480, 324, 219, 1257, 221, 1410, 223, 224, 229,
- 1213, 1772, 623, 269, 1155, 1154, 272, 648, 20, 17, 21, 18, 439, 42, 44, 684, 554, 728, 273, 693, 1456,
- 592, 488, 218, 1257, 221, 1410, 223, 224, 229, 648, 20, 17, 21, 18, 439, 42, 44, 1364, 1771, 648, 20,
- 17, 21, 18, 439, 42, 44, 684, 554, 728, 324, 1495, 648, 20, 17, 21, 18, 439, 42, 44, 684, 554, 728, 253,
- 1498, 667, 846, 454, 291, 324, 733, 198, 200, 773, 1213, 750, 279, 800, 1793, 482, 1743, 1533, 648, 20,
- 17, 21, 18, 439, 42, 44, 684, 554, 1409, 278, 227, 280, 874, 218, 1257, 221, 1410, 223, 224, 229, 648,
- 20, 17, 21, 18, 439, 42, 40, 129, 1771, 648, 20, 17, 21, 18, 439, 42, 44, 684, 554, 1414, 648, 20, 17,
- 21, 18, 439, 42, 44, 684, 554, 1417, 388, 87, 648, 20, 17, 21, 18, 439, 42, 39, 199, 200, 1213, 209,
- 875, 75, 238, 324, 131, 590, 620, 1151, 135, 213, 323, 324, 875, 1699, 1506, 1744, 142, 134, 136, 160,
- 294, 218, 1257, 221, 1410, 223, 224, 229, 277, 225, 274, 541, 6, 788, 274, 1637, 672, 1497, 541, 653,
- 351, 141, 166, 631, 61, 808, 267, 1155, 1154, 272, 269, 1155, 1154, 272, 547, 135, 213, 323, 324, 828,
- 689, 1525, 1335, 148, 134, 136, 160, 135, 213, 323, 324, 495, 204, 1741, 87, 151, 134, 136, 160, 181,
- 1534, 135, 213, 323, 324, 820, 324, 1194, 237, 154, 134, 136, 160, 440, 20, 17, 21, 18, 439, 42, 36,
- 440, 20, 17, 21, 18, 439, 42, 36, 297, 194, 719, 230, 260, 246, 681, 20, 17, 21, 18, 439, 320, 330, 440,
- 20, 17, 21, 18, 439, 42, 36, 648, 20, 17, 21, 18, 439, 42, 38, 867, 1637, 625, 283, 869, 247, 219, 1257,
- 221, 1410, 223, 224, 229, 648, 20, 17, 21, 18, 439, 42, 37, 648, 20, 17, 21, 18, 439, 42, 36, 648, 20,
- 17, 21, 18, 439, 42, 35, 70, 648, 20, 17, 21, 18, 439, 42, 47, 481, 870, 395, 648, 20, 17, 21, 18, 439,
- 42, 46, 648, 20, 17, 21, 18, 439, 42, 45, 274, 361, 508, 454, 361, 681, 20, 17, 21, 18, 439, 41, 495,
- 631, 1780, 495, 267, 1155, 1154, 272, 681, 20, 17, 21, 18, 439, 34, 872, 1194, 231, 1635, 1194, 266,
- 1635, 681, 20, 17, 21, 18, 439, 33, 6, 127, 541, 87, 623, 876, 127, 6, 826, 315, 57, 366, 1500, 259,
- 251, 1302, 259, 1394, 366, 1679, 1394, 495, 1679, 254, 213, 323, 324, 197, 254, 213, 323, 324, 831, 169,
- 197, 113, 181, 197, 1907, 1907, 234, 809, 87, 205, 495, 287, 495, 127, 427, 87, 377, 1670, 495, 183,
- 171, 427, 631, 1907, 1670, 1792, 197, 423, 197, 1907, 1792, 495, 1907, 1907, 1194, 254, 213, 323, 324,
- 426, 1907, 255, 213, 323, 324, 192, 530, 1194, 1907, 1907, 423, 1907, 423, 89, 717, 1907, 1907, 1150,
- 1774, 1012, 259, 127, 1907, 1907, 1580, 507, 1679, 1907, 192, 548, 193, 1838, 1907, 259, 1907, 1907,
- 1907, 1413, 1907, 1679, 1532, 1774, 1907, 254, 213, 323, 324, 255, 213, 323, 324, 255, 213, 323, 324,
- 1907, 1907, 1907, 1907, 1907, 1907, 561, 1753, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907,
- 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1842, 1907, 0, 326, 673, 0, 20, 179, 0, 1, 2133, 0, 1, 2144,
- 0 };
- }
-
- public final static char baseAction[] = BaseAction.baseAction;
-
- @Override
- public final int baseAction(int index) {
- return baseAction[index];
- }
-
- public final static char lhs[] = baseAction;
-
- @Override
- public final int lhs(int index) {
- return lhs[index];
- }
-
- public interface TermCheck {
- public final static byte termCheck[] = { 0, 0, 1, 2, 3, 4, 0, 6, 7, 8, 9, 10, 11, 12, 13, 0, 15, 16, 17, 18, 19,
- 20, 21, 22, 23, 0, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 0, 0, 40, 41, 42, 43, 44, 45, 46,
- 47, 48, 49, 50, 51, 0, 53, 54, 55, 0, 1, 0, 3, 0, 5, 6, 7, 8, 9, 10, 11, 0, 0, 2, 2, 0, 4, 0, 19, 0, 38,
- 64, 65, 66, 67, 14, 14, 16, 17, 0, 1, 2, 33, 34, 35, 36, 37, 56, 57, 40, 41, 42, 43, 44, 45, 46, 47, 48,
- 49, 50, 51, 52, 53, 54, 55, 0, 1, 0, 3, 60, 5, 6, 7, 8, 9, 10, 11, 0, 1, 0, 3, 0, 61, 0, 19, 6, 7, 8, 9,
- 10, 11, 64, 65, 66, 67, 70, 71, 76, 33, 34, 35, 36, 37, 74, 0, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
- 50, 51, 52, 53, 54, 55, 0, 1, 0, 3, 60, 5, 6, 7, 8, 9, 10, 11, 0, 1, 0, 0, 1, 0, 3, 19, 6, 7, 8, 9, 10,
- 11, 64, 65, 66, 67, 70, 71, 0, 33, 34, 35, 36, 37, 0, 24, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
- 51, 52, 53, 54, 55, 0, 1, 0, 3, 60, 59, 6, 7, 8, 9, 10, 11, 0, 0, 0, 2, 14, 5, 5, 19, 6, 7, 8, 9, 10,
- 11, 0, 14, 0, 1, 2, 5, 0, 33, 34, 35, 36, 37, 77, 78, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
- 39, 53, 54, 55, 0, 1, 2, 3, 4, 5, 0, 61, 38, 39, 0, 5, 12, 13, 58, 15, 16, 17, 18, 19, 20, 21, 22, 23,
- 14, 25, 26, 27, 28, 29, 30, 31, 32, 0, 0, 1, 2, 3, 4, 5, 68, 0, 1, 0, 3, 39, 12, 13, 5, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 58, 25, 26, 27, 28, 29, 30, 31, 32, 0, 1, 2, 0, 61, 5, 0, 1, 2, 3, 4, 5, 0, 0, 14,
- 39, 0, 4, 12, 13, 4, 15, 16, 17, 18, 58, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 39, 0, 0,
- 1, 2, 0, 4, 6, 7, 8, 9, 10, 11, 0, 0, 0, 14, 12, 13, 52, 19, 6, 7, 8, 9, 10, 11, 0, 1, 15, 3, 0, 68, 59,
- 33, 34, 35, 36, 37, 62, 63, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 0, 1, 2, 3, 4, 5, 0, 1, 0,
- 3, 0, 0, 12, 13, 0, 15, 16, 17, 18, 5, 20, 21, 22, 23, 0, 25, 26, 27, 28, 29, 30, 31, 32, 73, 0, 1, 2,
- 3, 4, 5, 0, 0, 0, 1, 4, 3, 12, 13, 0, 15, 16, 17, 18, 39, 20, 21, 22, 23, 58, 25, 26, 27, 28, 29, 30,
- 31, 32, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 38, 12, 13, 72, 15, 16, 17, 18, 0, 20, 21, 22, 23, 58, 25,
- 26, 27, 28, 29, 30, 31, 32, 0, 62, 63, 56, 57, 5, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 0, 12, 13, 0,
- 15, 16, 17, 18, 60, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 0, 1, 2, 3, 4, 0, 1, 2, 0, 4, 0,
- 52, 12, 13, 4, 15, 16, 17, 18, 14, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 0, 1, 2, 3, 4, 0,
- 74, 2, 0, 4, 0, 0, 12, 13, 4, 15, 16, 17, 18, 14, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 0,
- 1, 2, 3, 4, 0, 62, 63, 0, 1, 5, 3, 12, 13, 72, 15, 16, 17, 18, 0, 20, 21, 22, 23, 0, 25, 26, 27, 28, 29,
- 30, 31, 32, 0, 1, 2, 3, 4, 0, 15, 2, 0, 0, 38, 69, 12, 13, 5, 15, 16, 17, 18, 14, 20, 21, 22, 23, 0, 25,
- 26, 27, 28, 29, 30, 31, 32, 0, 1, 2, 3, 4, 0, 1, 2, 0, 56, 57, 0, 12, 13, 75, 15, 16, 17, 18, 0, 20, 21,
- 22, 23, 0, 25, 26, 27, 28, 29, 30, 31, 32, 0, 59, 2, 0, 4, 5, 6, 7, 8, 9, 10, 11, 0, 0, 14, 12, 13, 5,
- 75, 19, 0, 0, 0, 1, 0, 3, 0, 6, 7, 8, 9, 10, 11, 33, 34, 35, 36, 37, 0, 39, 19, 0, 56, 57, 24, 0, 24, 6,
- 7, 8, 9, 10, 11, 0, 33, 34, 35, 36, 37, 14, 19, 0, 0, 1, 52, 12, 13, 6, 7, 8, 9, 10, 11, 0, 33, 34, 35,
- 36, 37, 0, 19, 0, 56, 57, 0, 0, 0, 6, 7, 8, 9, 10, 11, 69, 33, 34, 35, 36, 37, 0, 19, 2, 89, 79, 80, 81,
- 82, 83, 84, 85, 86, 87, 88, 14, 33, 34, 35, 36, 37, 0, 0, 59, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 14, 0, 0,
- 0, 0, 14, 0, 0, 0, 0, 0, 24, 0, 73, 24, 69, 24, 0, 0, 68, 0, 24, 24, 24, 0, 0, 0, 0, 0, 0, 0, 0, 38, 38,
- 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0 };
- }
-
- public final static byte termCheck[] = TermCheck.termCheck;
-
- @Override
- public final int termCheck(int index) {
- return termCheck[index];
- }
-
- public interface TermAction {
- public final static char termAction[] = { 0, 1907, 1918, 1739, 1919, 1654, 1, 2121, 2122, 2123, 2234, 387, 2235,
- 1646, 1625, 59, 1662, 1732, 1718, 1703, 2070, 1920, 1921, 1922, 1923, 253, 1482, 1448, 2224, 2225, 2226,
- 1609, 1323, 563, 2071, 2069, 2124, 2072, 2068, 54, 88, 2075, 2080, 2079, 2077, 2078, 2076, 2081, 2082,
- 2074, 2083, 2084, 2085, 182, 1251, 1185, 1085, 1907, 1, 183, 1, 286, 191, 1, 1, 1, 1, 1, 1, 32, 265,
- 1784, 1496, 62, 1, 61, 1, 70, 739, 1469, 1458, 1426, 455, 1225, 597, 1933, 1934, 1, 2133, 1481, 1, 1, 1,
- 1, 1, 695, 706, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 191, 1, 1, 1, 1907, 1, 1907, 1, 2103, 190, 1, 1, 1,
- 1, 1, 1, 1907, 1918, 1907, 1919, 63, 450, 60, 1, 2121, 2122, 2123, 2234, 387, 2235, 1469, 1458, 1426,
- 455, 1396, 1383, 437, 1, 1, 1, 1, 1, 1291, 1907, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 190, 1, 1, 1, 1907,
- 1, 1, 1, 2103, 191, 1, 1, 1, 1, 1, 1, 1907, 2145, 248, 1907, 1918, 72, 1919, 1, 2121, 2122, 2123, 2234,
- 387, 2235, 1469, 1458, 1426, 455, 1396, 1383, 1907, 1, 1, 1, 1, 1, 1907, 1193, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 191, 1, 1, 1, 1907, 1918, 1907, 1919, 2103, 2165, 2121, 2122, 2123, 2234, 387, 2235, 1907,
- 1, 249, 1496, 1054, 1911, 1913, 2070, 1, 1, 1, 1, 1, 1, 1907, 597, 1, 2133, 1481, 1913, 1907, 2071,
- 2069, 2124, 2072, 2068, 498, 1526, 2075, 2080, 2079, 2077, 2078, 2076, 2081, 2082, 2074, 2083, 2084,
- 2085, 1912, 1251, 1185, 1085, 1, 1918, 1739, 1919, 1587, 1911, 1, 628, 1775, 1912, 292, 90, 1646, 1625,
- 1910, 1662, 1732, 1718, 1703, 652, 1920, 1921, 1922, 1923, 1106, 1482, 1448, 2224, 2225, 2226, 1609,
- 1323, 563, 1907, 1907, 1918, 1739, 1919, 1617, 1911, 1126, 185, 3149, 1907, 3149, 90, 1646, 1625, 1913,
- 1662, 1732, 1718, 1703, 1033, 1920, 1921, 1922, 1923, 1910, 1482, 1448, 2224, 2225, 2226, 1609, 1323,
- 563, 1, 1901, 1224, 1907, 1095, 1913, 1, 1918, 1739, 1919, 1654, 29, 1907, 1, 597, 1912, 48, 253, 1646,
- 1625, 1690, 1662, 1732, 1718, 1703, 1910, 1920, 1921, 1922, 1923, 3031, 1482, 1448, 2224, 2225, 2226,
- 1609, 1323, 563, 1912, 129, 262, 2133, 1224, 51, 1, 2121, 2122, 2123, 2234, 387, 2235, 68, 64, 250, 597,
- 1373, 1275, 29, 2070, 1, 1, 1, 1, 1, 1, 184, 3150, 1350, 3150, 1907, 991, 2165, 2071, 2069, 2124, 2072,
- 2068, 1682, 1671, 2075, 2080, 2079, 2077, 2078, 2076, 2081, 2082, 2074, 2083, 2084, 2085, 1907, 1918,
- 1739, 1919, 1654, 1911, 206, 3151, 1907, 3151, 66, 1907, 1646, 1625, 1, 1662, 1732, 1718, 1703, 1913,
- 1920, 1921, 1922, 1923, 1907, 1482, 1448, 2224, 2225, 2226, 1609, 1323, 563, 534, 1907, 1918, 1739,
- 1919, 1595, 1911, 50, 256, 208, 1918, 1690, 1919, 1646, 1625, 58, 1662, 1732, 1718, 1703, 1912, 1920,
- 1921, 1922, 1923, 1910, 1482, 1448, 2224, 2225, 2226, 1609, 1323, 563, 251, 1907, 1, 1, 1, 1, 2121,
- 2122, 2123, 2234, 387, 2235, 1554, 1, 1, 1308, 1, 1, 1, 1, 1907, 1, 1, 1, 1, 1910, 1, 1, 1, 1, 1, 1, 1,
- 1, 1907, 1682, 1671, 695, 706, 1915, 71, 252, 1907, 1918, 1739, 1919, 1654, 2121, 2122, 2123, 2234, 387,
- 2235, 1907, 1646, 1625, 1907, 1662, 1732, 1718, 1703, 2223, 1920, 1921, 1922, 1923, 3031, 1482, 1448,
- 2224, 2225, 2226, 1609, 1323, 563, 1, 1918, 1739, 1919, 1654, 268, 2133, 1224, 67, 253, 49, 1914, 1646,
- 1625, 1690, 1662, 1732, 1718, 1703, 597, 1920, 1921, 1922, 1923, 3031, 1482, 1448, 2224, 2225, 2226,
- 1609, 1323, 563, 1907, 1918, 1739, 1919, 1654, 268, 1291, 1496, 211, 253, 1907, 1907, 1646, 1625, 1065,
- 1662, 1732, 1718, 1703, 597, 1920, 1921, 1922, 1923, 3031, 1482, 1448, 2224, 2225, 2226, 1609, 1323,
- 563, 1907, 1918, 1739, 1919, 1654, 1907, 1682, 1671, 207, 552, 1917, 552, 1646, 1625, 1308, 1662, 1732,
- 1718, 1703, 57, 1920, 1921, 1922, 1923, 65, 1482, 1448, 2224, 2225, 2226, 1609, 1323, 563, 1907, 1918,
- 1746, 1919, 1654, 270, 1350, 1411, 1, 1, 1407, 1074, 1646, 1625, 1917, 1662, 1732, 1718, 1703, 597,
- 1920, 1921, 1922, 1923, 1907, 1482, 1448, 2224, 2225, 2226, 1609, 1323, 563, 1, 1918, 1739, 1919, 1654,
- 253, 2133, 1481, 1907, 695, 706, 1907, 1646, 1625, 1916, 1662, 1732, 1718, 1703, 56, 1920, 1921, 1922,
- 1923, 1907, 1482, 1448, 2224, 2225, 2226, 1609, 1323, 563, 20, 2164, 1898, 53, 1898, 1898, 179, 179,
- 179, 179, 179, 179, 285, 1907, 1898, 1373, 1275, 425, 1916, 179, 1907, 130, 1907, 1918, 42, 1919, 55,
- 2121, 2122, 2123, 2234, 387, 2235, 179, 179, 179, 179, 179, 1907, 1898, 2070, 131, 695, 706, 3031, 271,
- 1199, 2121, 2122, 2123, 2234, 387, 2235, 52, 2071, 2069, 2124, 2072, 2068, 597, 2070, 132, 1, 1904, 425,
- 1373, 1275, 2121, 2122, 2123, 2234, 387, 2235, 69, 2071, 2069, 2124, 2072, 2068, 1907, 2070, 133, 695,
- 706, 201, 1907, 1907, 2121, 2122, 2123, 2234, 387, 2235, 970, 2071, 2069, 2124, 2072, 2068, 222, 2070,
- 1701, 1894, 949, 928, 907, 886, 865, 823, 844, 802, 781, 760, 597, 2071, 2069, 2124, 2072, 2068, 326,
- 1907, 2165, 1907, 1907, 220, 1907, 1198, 30, 30, 207, 189, 189, 189, 1895, 1907, 1907, 1907, 1907, 597,
- 1907, 1907, 1907, 1907, 1907, 1137, 1907, 534, 1245, 576, 1333, 1907, 1907, 1158, 1907, 185, 184, 206,
- 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 467, 1936, 2928 };
- }
-
- public final static char termAction[] = TermAction.termAction;
-
- @Override
- public final int termAction(int index) {
- return termAction[index];
- }
-
- public interface Asb {
- public final static char asb[] = { 0, 403, 1, 149, 105, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
- 149, 67, 10, 87, 84, 91, 89, 97, 95, 99, 98, 101, 100, 73, 149, 10, 368, 368, 432, 149, 286, 286, 329,
- 10, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
- 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 286, 286, 109, 116, 333, 140, 335, 284, 283, 301, 3,
- 313, 136, 313, 136, 136, 313, 136, 313, 30, 237, 84, 84, 89, 89, 89, 89, 87, 87, 95, 91, 91, 98, 97, 65,
- 100, 99, 138, 228, 138, 329, 333, 143, 109, 53, 173, 286, 371, 338, 173, 136, 368, 368, 136, 368, 149,
- 228, 114, 333, 321, 53, 109, 172, 140, 286, 327, 30, 285, 340, 109, 173, 138, 198, 138, 231, 114, 321,
- 321, 149, 149, 109, 173, 335, 290, 289, 333, 340, 286, 138, 198, 231, 231, 233, 298, 321, 53, 109, 109,
- 286, 371, 338, 327, 198, 228, 60, 198, 231, 233, 427, 233, 228, 112, 430, 368, 149, 297, 53, 321, 340,
- 198, 62, 233, 228, 149, 368, 67, 116, 109, 368, 149, 321, 286, 285, 228, 293, 149, 292, 168, 333, 228,
- 109, 369, 62, 149, 168 };
- }
-
- public final static char asb[] = Asb.asb;
-
- @Override
- public final int asb(int index) {
- return asb[index];
- }
-
- public interface Asr {
- public final static byte asr[] = { 0, 89, 0, 5, 68, 38, 58, 39, 75, 14, 18, 20, 21, 22, 23, 2, 16, 17, 15, 4,
- 12, 13, 25, 26, 27, 28, 29, 30, 31, 32, 1, 3, 53, 54, 55, 48, 40, 45, 43, 44, 42, 41, 46, 47, 49, 50,
- 51, 37, 34, 19, 33, 36, 35, 6, 7, 8, 10, 9, 11, 0, 75, 5, 4, 1, 2, 68, 0, 14, 2, 61, 76, 16, 17, 69, 79,
- 80, 81, 82, 83, 85, 84, 86, 87, 88, 4, 62, 63, 12, 13, 57, 56, 64, 65, 66, 67, 70, 71, 15, 72, 73, 74,
- 52, 75, 77, 78, 68, 39, 89, 38, 58, 5, 0, 5, 52, 14, 61, 16, 17, 15, 4, 12, 13, 25, 26, 18, 30, 31, 32,
- 2, 20, 21, 22, 23, 27, 28, 29, 1, 3, 24, 0, 58, 5, 19, 6, 7, 8, 9, 10, 11, 20, 21, 22, 23, 27, 28, 29,
- 3, 16, 17, 15, 12, 13, 25, 26, 18, 30, 31, 32, 4, 2, 1, 0, 19, 58, 5, 16, 17, 15, 4, 12, 13, 25, 26, 18,
- 30, 31, 32, 2, 1, 3, 20, 21, 22, 23, 27, 28, 29, 0, 33, 40, 6, 41, 53, 34, 42, 35, 43, 44, 36, 7, 45,
- 46, 19, 54, 37, 55, 47, 48, 8, 49, 50, 51, 1, 3, 9, 10, 11, 60, 5, 52, 0, 1, 3, 5, 52, 38, 0, 7, 19, 37,
- 8, 36, 35, 34, 6, 33, 9, 10, 11, 61, 76, 16, 17, 15, 12, 13, 62, 63, 56, 57, 64, 65, 66, 67, 70, 71, 72,
- 73, 74, 77, 78, 69, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 4, 2, 14, 38, 39, 5, 0, 2, 39, 14, 68, 75,
- 5, 38, 0, 69, 14, 61, 0, 48, 40, 45, 43, 44, 42, 41, 46, 47, 49, 50, 51, 68, 75, 37, 34, 19, 33, 36, 35,
- 6, 7, 8, 9, 10, 11, 38, 1, 5, 39, 2, 14, 4, 0, 4, 2, 14, 39, 5, 33, 40, 6, 41, 53, 34, 42, 35, 43, 44,
- 36, 7, 45, 46, 19, 54, 37, 55, 47, 48, 8, 49, 50, 51, 9, 10, 11, 59, 3, 1, 0, 4, 33, 40, 6, 41, 53, 34,
- 42, 35, 43, 44, 36, 7, 45, 46, 19, 54, 37, 55, 47, 48, 8, 49, 50, 51, 1, 3, 9, 10, 11, 59, 0, 18, 20,
- 21, 22, 23, 1, 3, 2, 16, 17, 15, 4, 12, 13, 25, 26, 27, 28, 29, 30, 31, 32, 60, 0, 5, 38, 52, 69, 0, 5,
- 39, 18, 20, 21, 22, 23, 1, 3, 2, 16, 17, 15, 4, 12, 13, 25, 26, 27, 28, 29, 30, 31, 32, 0 };
- }
-
- public final static byte asr[] = Asr.asr;
-
- @Override
- public final int asr(int index) {
- return asr[index];
- }
-
- public interface Nasb {
- public final static byte nasb[] = { 0, 100, 37, 28, 37, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 37, 103,
- 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 28, 103, 21, 21, 121, 104, 78, 78, 85, 1, 28, 28, 28, 28,
- 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 104, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
- 78, 78, 42, 47, 13, 40, 84, 51, 51, 58, 9, 59, 19, 59, 69, 69, 59, 68, 59, 53, 37, 37, 37, 37, 37, 37,
- 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 48, 66, 37, 89, 37, 44, 42, 107, 41, 78, 95, 77, 41, 7, 7,
- 7, 7, 7, 28, 23, 66, 37, 75, 107, 42, 41, 124, 78, 62, 30, 37, 97, 42, 41, 38, 66, 37, 66, 26, 75, 66,
- 28, 28, 42, 41, 61, 51, 51, 13, 97, 78, 37, 109, 66, 7, 82, 11, 66, 107, 42, 42, 78, 95, 77, 71, 66, 23,
- 16, 113, 7, 82, 37, 37, 23, 25, 37, 7, 28, 80, 107, 124, 117, 109, 64, 82, 23, 28, 7, 93, 27, 42, 7, 28,
- 124, 78, 78, 23, 17, 28, 37, 64, 13, 23, 42, 37, 64, 28, 73 };
- }
-
- public final static byte nasb[] = Nasb.nasb;
-
- @Override
- public final int nasb(int index) {
- return nasb[index];
- }
-
- public interface Nasr {
- public final static char nasr[] = { 0, 80, 78, 77, 67, 76, 75, 1, 0, 103, 0, 100, 0, 29, 52, 0, 11, 71, 0, 91,
- 0, 72, 0, 41, 0, 88, 11, 54, 5, 0, 80, 79, 78, 77, 67, 76, 75, 0, 92, 0, 11, 5, 21, 0, 5, 11, 0, 5, 54,
- 49, 0, 28, 0, 67, 62, 63, 64, 65, 55, 30, 0, 26, 46, 45, 37, 35, 11, 0, 94, 68, 0, 46, 45, 37, 35, 29,
- 0, 11, 26, 0, 102, 0, 61, 0, 26, 45, 46, 11, 0, 46, 45, 29, 0, 98, 0, 29, 52, 11, 27, 0, 11, 89, 0, 51,
- 11, 48, 0, 58, 0, 82, 11, 51, 0, 11, 51, 69, 0, 95, 11, 27, 0, 11, 90, 0, 22, 0 };
- }
-
- public final static char nasr[] = Nasr.nasr;
-
- @Override
- public final int nasr(int index) {
- return nasr[index];
- }
-
- public interface TerminalIndex {
- public final static char terminalIndex[] = { 0, 85, 2, 86, 9, 87, 48, 64, 76, 96, 97, 98, 10, 11, 1, 8, 6, 7,
- 68, 69, 81, 82, 83, 84, 3, 12, 13, 93, 94, 95, 100, 101, 102, 44, 55, 60, 63, 72, 42, 90, 47, 52, 56,
- 61, 62, 66, 67, 74, 75, 78, 79, 80, 91, 54, 70, 73, 16, 17, 89, 30, 107, 4, 14, 15, 18, 19, 20, 21, 29,
- 31, 22, 23, 24, 25, 26, 92, 5, 27, 28, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 108, 45, 46, 49, 50, 51,
- 53, 57, 58, 59, 65, 71, 77, 88, 99, 103, 104, 105, 106 };
- }
-
- public final static char terminalIndex[] = TerminalIndex.terminalIndex;
-
- @Override
- public final int terminalIndex(int index) {
- return terminalIndex[index];
- }
-
- public interface NonterminalIndex {
- public final static char nonterminalIndex[] = { 0, 114, 0, 0, 0, 116, 120, 121, 122, 123, 124, 0, 125, 126, 127,
- 128, 129, 130, 131, 0, 132, 110, 142, 0, 0, 0, 111, 135, 163, 0, 141, 0, 0, 0, 159, 161, 0, 162, 0, 0,
- 0, 112, 0, 134, 172, 173, 174, 0, 115, 119, 150, 154, 160, 169, 0, 144, 0, 164, 167, 168, 171, 0, 145,
- 146, 147, 148, 149, 151, 0, 153, 158, 113, 117, 118, 133, 136, 137, 138, 139, 140, 143, 0, 152, 156, 0,
- 0, 157, 166, 176, 109, 0, 0, 0, 155, 0, 165, 170, 175, 0, 177, 178, 0, 179, 180, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static char nonterminalIndex[] = NonterminalIndex.nonterminalIndex;
-
- @Override
- public final int nonterminalIndex(int index) {
- return nonterminalIndex[index];
- }
-
- public interface ScopePrefix {
- public final static char scopePrefix[] = { 108, 139, 118, 47, 57, 147, 12, 174, 21, 75, 93, 63, 28, 71, 40, 129,
- 199, 203, 40, 40, 183, 40, 1, 1, 1, 32, 35, 80, 103, 35, 207, 6, 133, 190, 190, 165, 125, 153, 153, 153,
- 153, 153, 83, 83, 83 };
- }
-
- public final static char scopePrefix[] = ScopePrefix.scopePrefix;
-
- @Override
- public final int scopePrefix(int index) {
- return scopePrefix[index];
- }
-
- public interface ScopeSuffix {
- public final static char scopeSuffix[] = { 116, 116, 116, 4, 4, 116, 18, 180, 26, 4, 26, 68, 26, 4, 4, 127, 26,
- 4, 44, 68, 187, 53, 4, 4, 4, 26, 38, 4, 26, 106, 26, 9, 136, 193, 196, 168, 127, 155, 157, 159, 161,
- 163, 90, 85, 98 };
- }
-
- public final static char scopeSuffix[] = ScopeSuffix.scopeSuffix;
-
- @Override
- public final int scopeSuffix(int index) {
- return scopeSuffix[index];
- }
-
- public interface ScopeLhs {
- public final static char scopeLhs[] = { 64, 62, 64, 28, 28, 62, 49, 111, 47, 28, 40, 28, 47, 28, 28, 69, 5, 5,
- 28, 28, 19, 28, 103, 102, 101, 45, 60, 28, 37, 50, 3, 88, 69, 7, 5, 112, 69, 79, 78, 77, 76, 75, 40, 38,
- 40 };
- }
-
- public final static char scopeLhs[] = ScopeLhs.scopeLhs;
-
- @Override
- public final int scopeLhs(int index) {
- return scopeLhs[index];
- }
-
- public interface ScopeLa {
- public final static byte scopeLa[] = { 52, 52, 52, 58, 58, 52, 52, 95, 39, 58, 39, 20, 39, 58, 58, 75, 39, 58,
- 4, 20, 68, 19, 58, 58, 58, 39, 2, 58, 39, 1, 39, 69, 1, 39, 39, 101, 75, 1, 53, 54, 54, 48, 2, 2, 2 };
- }
-
- public final static byte scopeLa[] = ScopeLa.scopeLa;
-
- @Override
- public final int scopeLa(int index) {
- return scopeLa[index];
- }
-
- public interface ScopeStateSet {
- public final static byte scopeStateSet[] = { 25, 25, 25, 29, 29, 25, 19, -1, 33, 29, 9, 29, 33, 29, 29, 5, 40,
- 40, 29, 29, 74, 29, 17, 1, 3, 33, 35, 29, 9, 11, 40, 101, 5, 46, 40, -1, 5, 26, 26, 26, 26, 26, 9, 9,
- 9 };
- }
-
- public final static byte scopeStateSet[] = ScopeStateSet.scopeStateSet;
-
- @Override
- public final int scopeStateSet(int index) {
- return scopeStateSet[index];
- }
-
- public interface ScopeRhs {
- public final static char scopeRhs[] = { 0, 150, 14, 0, 110, 0, 206, 118, 0, 31, 149, 0, 168, 204, 118, 24, 161,
- 0, 112, 0, 0, 164, 118, 2, 152, 0, 111, 0, 164, 118, 2, 0, 167, 2, 0, 159, 118, 0, 172, 0, 194, 118, 14,
- 0, 9, 110, 0, 127, 19, 194, 118, 14, 0, 69, 132, 110, 0, 127, 194, 118, 19, 14, 0, 194, 118, 19, 14, 0,
- 132, 110, 0, 127, 19, 14, 0, 127, 194, 118, 14, 0, 127, 14, 0, 144, 0, 2, 0, 165, 111, 0, 2, 111, 0,
- 164, 118, 2, 144, 0, 2, 0, 164, 111, 0, 157, 2, 0, 159, 0, 168, 192, 118, 24, 108, 201, 53, 0, 112, 0,
- 168, 192, 118, 24, 201, 53, 0, 158, 0, 113, 0, 200, 118, 158, 0, 118, 158, 0, 155, 113, 0, 188, 118, 24,
- 199, 108, 198, 174, 0, 188, 118, 24, 198, 174, 0, 187, 0, 148, 0, 147, 0, 146, 0, 145, 0, 144, 0, 214,
- 94, 0, 77, 2, 115, 111, 113, 0, 214, 133, 155, 2, 98, 0, 53, 0, 0, 155, 78, 125, 0, 29, 132, 0, 180, 2,
- 0, 111, 121, 0, 111, 119, 0, 197, 2, 112, 0, 155, 14, 112, 0, 155, 2, 0 };
- }
-
- public final static char scopeRhs[] = ScopeRhs.scopeRhs;
-
- @Override
- public final int scopeRhs(int index) {
- return scopeRhs[index];
- }
-
- public interface ScopeState {
- public final static char scopeState[] = { 0, 1412, 0, 392, 0, 1772, 1774, 1749, 0, 1605, 1302, 1407, 1481, 1332,
- 1224, 1194, 0, 387, 0, 576, 467, 400, 1146, 1098, 0, 1156, 495, 366, 0, 1410, 1257, 1155, 1154, 1302,
- 1500, 1224, 1194, 1496, 1670, 0, 1732, 1718, 1703, 1609, 1323, 563, 1617, 1595, 1587, 1098, 1291, 498,
- 1308, 534, 1396, 1383, 1350, 706, 695, 1469, 1458, 1426, 455, 1690, 1682, 1671, 1373, 1275, 1662, 1654,
- 1646, 1625, 1482, 1448, 1158, 1126, 1106, 576, 1074, 1054, 1033, 1012, 717, 991, 673, 652, 597, 970,
- 949, 928, 907, 886, 865, 844, 823, 802, 781, 760, 366, 739, 631, 467, 400, 0 };
- }
-
- public final static char scopeState[] = ScopeState.scopeState;
-
- @Override
- public final int scopeState(int index) {
- return scopeState[index];
- }
-
- public interface InSymb {
- public final static char inSymb[] = { 0, 0, 196, 118, 181, 32, 31, 30, 18, 26, 25, 13, 12, 4, 15, 17, 16, 112,
- 2, 116, 115, 119, 117, 121, 120, 123, 122, 125, 124, 113, 38, 2, 76, 61, 2, 14, 180, 155, 158, 118, 13,
- 12, 63, 62, 4, 67, 66, 65, 64, 56, 57, 15, 71, 70, 73, 72, 78, 77, 74, 88, 87, 86, 84, 85, 83, 82, 81,
- 80, 79, 69, 180, 197, 155, 133, 118, 14, 2, 153, 152, 182, 10, 183, 174, 184, 55, 54, 185, 53, 186, 187,
- 108, 115, 115, 117, 117, 117, 117, 116, 116, 120, 119, 119, 122, 121, 155, 124, 123, 133, 24, 161, 159,
- 136, 19, 127, 118, 4, 167, 118, 2, 14, 198, 175, 175, 201, 175, 68, 118, 24, 136, 4, 118, 127, 194, 165,
- 164, 134, 118, 166, 118, 150, 4, 108, 24, 108, 24, 118, 4, 136, 194, 19, 127, 4, 2, 142, 144, 118, 38,
- 164, 199, 118, 24, 118, 204, 118, 136, 118, 127, 127, 157, 118, 2, 159, 24, 188, 158, 189, 118, 192,
- 108, 193, 168, 38, 206, 61, 14, 207, 118, 165, 118, 118, 118, 192, 168, 69, 38, 148, 69, 150, 61, 14,
- 165, 164, 202, 188, 200, 68, 157, 2, 118, 168, 150, 38, 38, 68, 159 };
- }
-
- public final static char inSymb[] = InSymb.inSymb;
-
- @Override
- public final int inSymb(int index) {
- return inSymb[index];
- }
-
- public interface Name {
- public final static String name[] = { "", "[", "(", "{", ".", "->", "++", "--", "&", "*", "+", "-", "~", "!",
- "/", "%", ">>", "<<", "<", ">", "<=", ">=", "==", "!=", "^", "|", "&&", "||", "?", ":", "...", "=",
- "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", ",", "$empty", "auto", "break", "case",
- "char", "const", "continue", "default", "do", "double", "else", "enum", "extern", "float", "for",
- "goto", "if", "inline", "int", "long", "register", "restrict", "return", "short", "signed", "sizeof",
- "static", "struct", "switch", "typedef", "union", "unsigned", "void", "volatile", "while", "_Bool",
- "_Complex", "_Imaginary", "integer", "floating", "charconst", "stringlit", "identifier", "Completion",
- "EndOfCompletion", "Invalid", "RightBracket", "RightParen", "RightBrace", "SemiColon", "MYTHREAD",
- "THREADS", "UPC_MAX_BLOCKSIZE", "relaxed", "shared", "strict", "upc_barrier", "upc_localsizeof",
- "upc_blocksizeof", "upc_elemsizeof", "upc_notify", "upc_fence", "upc_wait", "upc_forall", "ERROR_TOKEN",
- "EOF_TOKEN", "no_sizeof_type_id_start", "]", ")", "}", ";", "identifier_token", "expression",
- "postfix_expression", "member_name", "type_id", "initializer_list", "unary_expression",
- "cast_expression", "multiplicative_expression", "additive_expression", "shift_expression",
- "relational_expression", "equality_expression", "and_expression", "exclusive_or_expression",
- "inclusive_or_expression", "logical_and_expression", "logical_or_expression", "assignment_expression",
- "expression_list_actual", "constant_expression", "declaration_specifiers",
- "simple_declaration_specifiers", "struct_or_union_declaration_sp" + "ecifiers",
- "elaborated_declaration_specifi" + "ers", "enum_declaration_specifiers",
- "typdef_name_declaration_specif" + "iers", "no_type_declaration_specifier", "type_qualifier",
- "no_type_declaration_specifiers", "simple_type_specifier", "struct_or_union_specifier",
- "elaborated_specifier", "enum_specifier", "type_name_specifier", "initializer", "declarator",
- "struct_or_union", "struct_declaration_list", "struct_declaration", "specifier_qualifier_list",
- "struct_declarator_list", "complete_struct_declarator", "enumerator_list", "enumerator",
- "direct_declarator", "pointer_seq", "array_direct_declarator", "basic_direct_declarator",
- "array_modifier", "parameter_type_list", "identifier_list", "array_modifier_type_qualifiers",
- "type_qualifier_list", "parameter_list", "parameter_declaration", "complete_parameter_declarator",
- "abstract_declarator", "direct_abstract_declarator", "basic_direct_abstract_declarat" + "or",
- "array_direct_abstract_declarat" + "or", "initializer_seq", "designated_initializer", "designation",
- "designator_list", "designator", "layout_qualifier" };
- }
-
- public final static String name[] = Name.name;
-
- @Override
- public final String name(int index) {
- return name[index];
- }
-
- public final static int ERROR_SYMBOL = 60, SCOPE_UBOUND = 44, SCOPE_SIZE = 45, MAX_NAME_LENGTH = 38;
-
- @Override
- public final int getErrorSymbol() {
- return ERROR_SYMBOL;
- }
-
- @Override
- public final int getScopeUbound() {
- return SCOPE_UBOUND;
- }
-
- @Override
- public final int getScopeSize() {
- return SCOPE_SIZE;
- }
-
- @Override
- public final int getMaxNameLength() {
- return MAX_NAME_LENGTH;
- }
-
- public final static int NUM_STATES = 214, NT_OFFSET = 107, LA_STATE_OFFSET = 2272, MAX_LA = 2, NUM_RULES = 365,
- NUM_NONTERMINALS = 131, NUM_SYMBOLS = 238, SEGMENT_SIZE = 8192, START_STATE = 1700, IDENTIFIER_SYMBOL = 0,
- EOFT_SYMBOL = 89, EOLT_SYMBOL = 89, ACCEPT_ACTION = 1894, ERROR_ACTION = 1907;
-
- public final static boolean BACKTRACK = true;
-
- @Override
- public final int getNumStates() {
- return NUM_STATES;
- }
-
- @Override
- public final int getNtOffset() {
- return NT_OFFSET;
- }
-
- @Override
- public final int getLaStateOffset() {
- return LA_STATE_OFFSET;
- }
-
- @Override
- public final int getMaxLa() {
- return MAX_LA;
- }
-
- @Override
- public final int getNumRules() {
- return NUM_RULES;
- }
-
- @Override
- public final int getNumNonterminals() {
- return NUM_NONTERMINALS;
- }
-
- @Override
- public final int getNumSymbols() {
- return NUM_SYMBOLS;
- }
-
- @Override
- public final int getSegmentSize() {
- return SEGMENT_SIZE;
- }
-
- @Override
- public final int getStartState() {
- return START_STATE;
- }
-
- @Override
- public final int getStartSymbol() {
- return lhs[0];
- }
-
- public final int getIdentifierSymbol() {
- return IDENTIFIER_SYMBOL;
- }
-
- @Override
- public final int getEoftSymbol() {
- return EOFT_SYMBOL;
- }
-
- @Override
- public final int getEoltSymbol() {
- return EOLT_SYMBOL;
- }
-
- @Override
- public final int getAcceptAction() {
- return ACCEPT_ACTION;
- }
-
- @Override
- public final int getErrorAction() {
- return ERROR_ACTION;
- }
-
- @Override
- public final boolean isValidForParser() {
- return isValidForParser;
- }
-
- @Override
- public final boolean getBacktrack() {
- return BACKTRACK;
- }
-
- @Override
- public final int originalState(int state) {
- return -baseCheck[state];
- }
-
- @Override
- public final int asi(int state) {
- return asb[originalState(state)];
- }
-
- @Override
- public final int nasi(int state) {
- return nasb[originalState(state)];
- }
-
- @Override
- public final int inSymbol(int state) {
- return inSymb[originalState(state)];
- }
-
- @Override
- public final int ntAction(int state, int sym) {
- return baseAction[state + sym];
- }
-
- @Override
- public final int tAction(int state, int sym) {
- int i = baseAction[state], k = i + sym;
- return termAction[termCheck[k] == sym ? k : i];
- }
-
- @Override
- public final int lookAhead(int la_state, int sym) {
- int k = la_state + sym;
- return termAction[termCheck[k] == sym ? k : la_state];
- }
-}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCSizeofExpressionParsersym.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCSizeofExpressionParsersym.java
deleted file mode 100644
index 49e0551fcea..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCSizeofExpressionParsersym.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2010 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.dom.parser.upc;
-
-public interface UPCSizeofExpressionParsersym {
- public final static int TK_auto = 33, TK_break = 90, TK_case = 91, TK_char = 40, TK_const = 6, TK_continue = 92,
- TK_default = 93, TK_do = 94, TK_double = 41, TK_else = 95, TK_enum = 53, TK_extern = 34, TK_float = 42,
- TK_for = 96, TK_goto = 97, TK_if = 98, TK_inline = 35, TK_int = 43, TK_long = 44, TK_register = 36,
- TK_restrict = 7, TK_return = 99, TK_short = 45, TK_signed = 46, TK_sizeof = 18, TK_static = 19,
- TK_struct = 54, TK_switch = 100, TK_typedef = 37, TK_union = 55, TK_unsigned = 47, TK_void = 48,
- TK_volatile = 8, TK_while = 101, TK__Bool = 49, TK__Complex = 50, TK__Imaginary = 51, TK_integer = 20,
- TK_floating = 21, TK_charconst = 22, TK_stringlit = 23, TK_identifier = 1, TK_Completion = 3,
- TK_EndOfCompletion = 5, TK_Invalid = 102, TK_LeftBracket = 14, TK_LeftParen = 2, TK_LeftBrace = 24,
- TK_Dot = 61, TK_Arrow = 76, TK_PlusPlus = 16, TK_MinusMinus = 17, TK_And = 15, TK_Star = 4, TK_Plus = 12,
- TK_Minus = 13, TK_Tilde = 25, TK_Bang = 26, TK_Slash = 62, TK_Percent = 63, TK_RightShift = 56,
- TK_LeftShift = 57, TK_LT = 64, TK_GT = 65, TK_LE = 66, TK_GE = 67, TK_EQ = 70, TK_NE = 71, TK_Caret = 72,
- TK_Or = 73, TK_AndAnd = 74, TK_OrOr = 77, TK_Question = 78, TK_Colon = 68, TK_DotDotDot = 59,
- TK_Assign = 69, TK_StarAssign = 79, TK_SlashAssign = 80, TK_PercentAssign = 81, TK_PlusAssign = 82,
- TK_MinusAssign = 83, TK_RightShiftAssign = 84, TK_LeftShiftAssign = 85, TK_AndAssign = 86,
- TK_CaretAssign = 87, TK_OrAssign = 88, TK_Comma = 38, TK_RightBracket = 58, TK_RightParen = 39,
- TK_RightBrace = 52, TK_SemiColon = 75, TK_MYTHREAD = 27, TK_THREADS = 28, TK_UPC_MAX_BLOCKSIZE = 29,
- TK_relaxed = 9, TK_shared = 10, TK_strict = 11, TK_upc_barrier = 103, TK_upc_localsizeof = 30,
- TK_upc_blocksizeof = 31, TK_upc_elemsizeof = 32, TK_upc_notify = 104, TK_upc_fence = 105, TK_upc_wait = 106,
- TK_upc_forall = 107, TK_ERROR_TOKEN = 60, TK_EOF_TOKEN = 89;
-
- public final static String orderedTerminalSymbols[] = { "", "identifier", "LeftParen", "Completion", "Star",
- "EndOfCompletion", "const", "restrict", "volatile", "relaxed", "shared", "strict", "Plus", "Minus",
- "LeftBracket", "And", "PlusPlus", "MinusMinus", "sizeof", "static", "integer", "floating", "charconst",
- "stringlit", "LeftBrace", "Tilde", "Bang", "MYTHREAD", "THREADS", "UPC_MAX_BLOCKSIZE", "upc_localsizeof",
- "upc_blocksizeof", "upc_elemsizeof", "auto", "extern", "inline", "register", "typedef", "Comma",
- "RightParen", "char", "double", "float", "int", "long", "short", "signed", "unsigned", "void", "_Bool",
- "_Complex", "_Imaginary", "RightBrace", "enum", "struct", "union", "RightShift", "LeftShift",
- "RightBracket", "DotDotDot", "ERROR_TOKEN", "Dot", "Slash", "Percent", "LT", "GT", "LE", "GE", "Colon",
- "Assign", "EQ", "NE", "Caret", "Or", "AndAnd", "SemiColon", "Arrow", "OrOr", "Question", "StarAssign",
- "SlashAssign", "PercentAssign", "PlusAssign", "MinusAssign", "RightShiftAssign", "LeftShiftAssign",
- "AndAssign", "CaretAssign", "OrAssign", "EOF_TOKEN", "break", "case", "continue", "default", "do", "else",
- "for", "goto", "if", "return", "switch", "while", "Invalid", "upc_barrier", "upc_notify", "upc_fence",
- "upc_wait", "upc_forall" };
-
- public final static boolean isValidForParser = true;
-}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTCompositeTypeSpecifier.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTCompositeTypeSpecifier.java
deleted file mode 100644
index 354feaa8f81..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTCompositeTypeSpecifier.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2013 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.internal.core.dom.parser.upc.ast;
-
-import org.eclipse.cdt.core.dom.ast.ASTVisitor;
-import org.eclipse.cdt.core.dom.ast.IASTDeclaration;
-import org.eclipse.cdt.core.dom.ast.IASTExpression;
-import org.eclipse.cdt.core.dom.ast.IASTName;
-import org.eclipse.cdt.core.dom.upc.ast.IUPCASTCompositeTypeSpecifier;
-import org.eclipse.cdt.internal.core.dom.parser.c.CASTCompositeTypeSpecifier;
-
-@SuppressWarnings("restriction")
-public class UPCASTCompositeTypeSpecifier extends CASTCompositeTypeSpecifier implements IUPCASTCompositeTypeSpecifier {
-
- private int referenceType;
- private int sharedQualifier;
- private IASTExpression blockSizeExpression;
-
- public UPCASTCompositeTypeSpecifier() {
- }
-
- public UPCASTCompositeTypeSpecifier(int key, IASTName name) {
- super(key, name);
- }
-
- public UPCASTCompositeTypeSpecifier(int key, IASTName name, IASTExpression blockSizeExpression) {
- super(key, name);
- setBlockSizeExpression(blockSizeExpression);
- }
-
- @Override
- public UPCASTCompositeTypeSpecifier copy() {
- return copy(CopyStyle.withoutLocations);
- }
-
- @Override
- public UPCASTCompositeTypeSpecifier copy(CopyStyle style) {
- UPCASTCompositeTypeSpecifier copy = new UPCASTCompositeTypeSpecifier();
- copy.referenceType = referenceType;
- copy.sharedQualifier = sharedQualifier;
- copy.setBlockSizeExpression(blockSizeExpression == null ? null : blockSizeExpression.copy(style));
- return copy(copy, style);
- }
-
- @Override
- public IASTExpression getBlockSizeExpression() {
- return blockSizeExpression;
- }
-
- @Override
- public int getReferenceType() {
- return referenceType;
- }
-
- @Override
- public int getSharedQualifier() {
- return sharedQualifier;
- }
-
- @Override
- public void setBlockSizeExpression(IASTExpression expr) {
- this.blockSizeExpression = expr;
- if (expr != null) {
- expr.setParent(this);
- expr.setPropertyInParent(BLOCK_SIZE_EXPRESSION);
- }
-
- }
-
- @Override
- public void setReferenceType(int referenceType) {
- this.referenceType = referenceType;
- }
-
- @Override
- public void setSharedQualifier(int shared) {
- this.sharedQualifier = shared;
- }
-
- @Override
- public boolean accept(ASTVisitor action) {
- if (action.shouldVisitDeclSpecifiers) {
- switch (action.visit(this)) {
- case ASTVisitor.PROCESS_ABORT:
- return false;
- case ASTVisitor.PROCESS_SKIP:
- return true;
- default:
- break;
- }
- }
- if (getName() != null)
- if (!getName().accept(action))
- return false;
- if (blockSizeExpression != null)
- if (!blockSizeExpression.accept(action))
- return false;
-
- IASTDeclaration[] decls = getMembers();
- for (int i = 0; i < decls.length; i++)
- if (!decls[i].accept(action))
- return false;
-
- if (action.shouldVisitDeclSpecifiers) {
- switch (action.leave(this)) {
- case ASTVisitor.PROCESS_ABORT:
- return false;
- case ASTVisitor.PROCESS_SKIP:
- return true;
- default:
- break;
- }
- }
- return true;
- }
-}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTElaboratedTypeSpecifier.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTElaboratedTypeSpecifier.java
deleted file mode 100644
index 73fba20ddfc..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTElaboratedTypeSpecifier.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2013 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.internal.core.dom.parser.upc.ast;
-
-import org.eclipse.cdt.core.dom.ast.ASTVisitor;
-import org.eclipse.cdt.core.dom.ast.IASTExpression;
-import org.eclipse.cdt.core.dom.ast.IASTName;
-import org.eclipse.cdt.core.dom.upc.ast.IUPCASTElaboratedTypeSpecifier;
-import org.eclipse.cdt.internal.core.dom.parser.c.CASTElaboratedTypeSpecifier;
-
-@SuppressWarnings("restriction")
-public class UPCASTElaboratedTypeSpecifier extends CASTElaboratedTypeSpecifier
- implements IUPCASTElaboratedTypeSpecifier {
-
- private int referenceType;
- private int sharedQualifier;
- private IASTExpression blockSizeExpression;
-
- public UPCASTElaboratedTypeSpecifier() {
- }
-
- public UPCASTElaboratedTypeSpecifier(int kind, IASTName name) {
- super(kind, name);
- }
-
- public UPCASTElaboratedTypeSpecifier(int kind, IASTName name, IASTExpression blockSizeExpression) {
- super(kind, name);
- setBlockSizeExpression(blockSizeExpression);
- }
-
- @Override
- public UPCASTElaboratedTypeSpecifier copy() {
- return copy(CopyStyle.withoutLocations);
- }
-
- @Override
- public UPCASTElaboratedTypeSpecifier copy(CopyStyle style) {
- IASTName name = getName();
- UPCASTElaboratedTypeSpecifier copy = new UPCASTElaboratedTypeSpecifier(getKind(),
- name == null ? null : name.copy(style));
- copy.referenceType = referenceType;
- copy.sharedQualifier = sharedQualifier;
- copy.setBlockSizeExpression(blockSizeExpression == null ? null : blockSizeExpression.copy(style));
- return copy(copy, style);
- }
-
- @Override
- public IASTExpression getBlockSizeExpression() {
- return blockSizeExpression;
- }
-
- @Override
- public int getReferenceType() {
- return referenceType;
- }
-
- @Override
- public int getSharedQualifier() {
- return sharedQualifier;
- }
-
- @Override
- public void setBlockSizeExpression(IASTExpression expr) {
- this.blockSizeExpression = expr;
- if (expr != null) {
- expr.setParent(this);
- expr.setPropertyInParent(BLOCK_SIZE_EXPRESSION);
- }
- }
-
- @Override
- public void setReferenceType(int referenceType) {
- this.referenceType = referenceType;
- }
-
- @Override
- public void setSharedQualifier(int shared) {
- this.sharedQualifier = shared;
- }
-
- @Override
- public boolean accept(ASTVisitor action) {
- if (action.shouldVisitDeclSpecifiers) {
- switch (action.visit(this)) {
- case ASTVisitor.PROCESS_ABORT:
- return false;
- case ASTVisitor.PROCESS_SKIP:
- return true;
- default:
- break;
- }
- }
- if (getName() != null)
- if (!getName().accept(action))
- return false;
- if (blockSizeExpression != null)
- if (!blockSizeExpression.accept(action))
- return false;
-
- if (action.shouldVisitDeclSpecifiers) {
- switch (action.leave(this)) {
- case ASTVisitor.PROCESS_ABORT:
- return false;
- case ASTVisitor.PROCESS_SKIP:
- return true;
- default:
- break;
- }
- }
- return true;
- }
-
-}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTEnumerationSpecifier.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTEnumerationSpecifier.java
deleted file mode 100644
index 6a29d094b2a..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTEnumerationSpecifier.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2013 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.internal.core.dom.parser.upc.ast;
-
-import org.eclipse.cdt.core.dom.ast.ASTVisitor;
-import org.eclipse.cdt.core.dom.ast.IASTExpression;
-import org.eclipse.cdt.core.dom.ast.IASTName;
-import org.eclipse.cdt.core.dom.upc.ast.IUPCASTEnumerationSpecifier;
-import org.eclipse.cdt.internal.core.dom.parser.c.CASTEnumerationSpecifier;
-
-@SuppressWarnings("restriction")
-public class UPCASTEnumerationSpecifier extends CASTEnumerationSpecifier implements IUPCASTEnumerationSpecifier {
-
- private int referenceType;
- private int sharedQualifier;
- private IASTExpression blockSizeExpression;
-
- public UPCASTEnumerationSpecifier() {
- }
-
- public UPCASTEnumerationSpecifier(IASTName name) {
- super(name);
- }
-
- public UPCASTEnumerationSpecifier(IASTName name, IASTExpression blockSizeExpression) {
- super(name);
- setBlockSizeExpression(blockSizeExpression);
- }
-
- @Override
- public UPCASTEnumerationSpecifier copy() {
- return copy(CopyStyle.withoutLocations);
- }
-
- @Override
- public UPCASTEnumerationSpecifier copy(CopyStyle style) {
- UPCASTEnumerationSpecifier copy = new UPCASTEnumerationSpecifier();
- copy.referenceType = referenceType;
- copy.sharedQualifier = sharedQualifier;
- copy.setBlockSizeExpression(blockSizeExpression == null ? null : blockSizeExpression.copy(style));
- return copy(copy, style);
- }
-
- @Override
- public IASTExpression getBlockSizeExpression() {
- return blockSizeExpression;
- }
-
- @Override
- public int getReferenceType() {
- return referenceType;
- }
-
- @Override
- public int getSharedQualifier() {
- return sharedQualifier;
- }
-
- @Override
- public void setBlockSizeExpression(IASTExpression expr) {
- this.blockSizeExpression = expr;
- if (expr != null) {
- expr.setParent(this);
- expr.setPropertyInParent(BLOCK_SIZE_EXPRESSION);
- }
- }
-
- @Override
- public void setReferenceType(int referenceType) {
- this.referenceType = referenceType;
- }
-
- @Override
- public void setSharedQualifier(int shared) {
- this.sharedQualifier = shared;
- }
-
- @Override
- public boolean accept(ASTVisitor action) {
- if (action.shouldVisitDeclSpecifiers) {
- switch (action.visit(this)) {
- case ASTVisitor.PROCESS_ABORT:
- return false;
- case ASTVisitor.PROCESS_SKIP:
- return true;
- default:
- break;
- }
- }
- if (getName() != null)
- if (!getName().accept(action))
- return false;
- if (blockSizeExpression != null)
- if (!blockSizeExpression.accept(action))
- return false;
-
- IASTEnumerator[] etors = getEnumerators();
- for (int i = 0; i < etors.length; i++) {
- if (!etors[i].accept(action))
- return false;
- }
- if (action.shouldVisitDeclSpecifiers) {
- switch (action.leave(this)) {
- case ASTVisitor.PROCESS_ABORT:
- return false;
- case ASTVisitor.PROCESS_SKIP:
- return true;
- default:
- break;
- }
- }
- return true;
- }
-
-}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTForallStatement.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTForallStatement.java
deleted file mode 100644
index 6471b7e663c..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTForallStatement.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2014 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- * Sergey Prigogin (Google)
- *******************************************************************************/
-package org.eclipse.cdt.internal.core.dom.parser.upc.ast;
-
-import org.eclipse.cdt.core.dom.ast.ASTVisitor;
-import org.eclipse.cdt.core.dom.ast.IASTExpression;
-import org.eclipse.cdt.core.dom.ast.IASTStatement;
-import org.eclipse.cdt.core.dom.upc.ast.IUPCASTForallStatement;
-import org.eclipse.cdt.internal.core.dom.parser.c.CASTForStatement;
-
-@SuppressWarnings("restriction")
-public class UPCASTForallStatement extends CASTForStatement implements IUPCASTForallStatement {
- private IASTExpression affinity;
- private boolean affinityContinue;
-
- public UPCASTForallStatement() {
- }
-
- public UPCASTForallStatement(IASTStatement init, IASTExpression condition, IASTExpression iterationExpression,
- IASTStatement body, IASTExpression affinity) {
- super(init, condition, iterationExpression, body);
- setAffinityExpression(affinity);
- }
-
- @Override
- public UPCASTForallStatement copy() {
- return copy(CopyStyle.withoutLocations);
- }
-
- @Override
- public UPCASTForallStatement copy(CopyStyle style) {
- UPCASTForallStatement copy = new UPCASTForallStatement();
- copy.setAffinityExpression(affinity == null ? null : affinity.copy(style));
- return copy(copy, style);
- }
-
- @Override
- public boolean isAffinityContinue() {
- return affinityContinue;
- }
-
- @Override
- public IASTExpression getAffinityExpresiion() {
- return affinity;
- }
-
- @Override
- public void setAffinityExpression(IASTExpression affinity) {
- if (affinity != null)
- this.affinityContinue = false;
- this.affinity = affinity;
- if (affinity != null) {
- affinity.setParent(this);
- affinity.setPropertyInParent(AFFINITY);
- }
- }
-
- @Override
- public void setAffinityContinue(boolean affinityContinue) {
- if (affinityContinue)
- this.affinity = null;
- this.affinityContinue = affinityContinue;
- }
-
- @Override
- public boolean accept(ASTVisitor visitor) {
- if (visitor.shouldVisitStatements) {
- switch (visitor.visit(this)) {
- case ASTVisitor.PROCESS_ABORT:
- return false;
- case ASTVisitor.PROCESS_SKIP:
- return true;
- }
- }
-
- if (!acceptByAttributeSpecifiers(visitor))
- return false;
-
- IASTStatement initializer = super.getInitializerStatement();
- if (initializer != null && !initializer.accept(visitor))
- return false;
-
- IASTExpression condition = super.getConditionExpression();
- if (condition != null && !condition.accept(visitor))
- return false;
-
- IASTExpression iteration = super.getIterationExpression();
- if (iteration != null && !iteration.accept(visitor))
- return false;
-
- if (affinity != null && !affinity.accept(visitor))
- return false;
-
- IASTStatement body = super.getBody();
- if (body != null && !body.accept(visitor))
- return false;
-
- if (visitor.shouldVisitStatements) {
- switch (visitor.leave(this)) {
- case ASTVisitor.PROCESS_ABORT:
- return false;
- case ASTVisitor.PROCESS_SKIP:
- return true;
- }
- }
- return true;
- }
-}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTKeywordExpression.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTKeywordExpression.java
deleted file mode 100644
index fe0d6768098..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTKeywordExpression.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2013 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.internal.core.dom.parser.upc.ast;
-
-import org.eclipse.cdt.core.dom.ast.ASTVisitor;
-import org.eclipse.cdt.core.dom.ast.IBasicType.Kind;
-import org.eclipse.cdt.core.dom.ast.IType;
-import org.eclipse.cdt.core.dom.upc.ast.IUPCASTKeywordExpression;
-import org.eclipse.cdt.internal.core.dom.parser.ASTNode;
-import org.eclipse.cdt.internal.core.dom.parser.c.CBasicType;
-
-@SuppressWarnings("restriction")
-public class UPCASTKeywordExpression extends ASTNode implements IUPCASTKeywordExpression {
-
- private int keywordKind;
-
- public UPCASTKeywordExpression() {
- }
-
- public UPCASTKeywordExpression(int keywordKind) {
- this.keywordKind = keywordKind;
- }
-
- @Override
- public UPCASTKeywordExpression copy() {
- return copy(CopyStyle.withoutLocations);
- }
-
- @Override
- public UPCASTKeywordExpression copy(CopyStyle style) {
- UPCASTKeywordExpression copy = new UPCASTKeywordExpression(keywordKind);
- return copy(copy, style);
- }
-
- @Override
- public int getKeywordKind() {
- return keywordKind;
- }
-
- @Override
- public void setKeywordKind(int kind) {
- this.keywordKind = kind;
-
- }
-
- @Override
- public IType getExpressionType() {
- return new CBasicType(Kind.eInt, 0, this);
- }
-
- @Override
- public boolean isLValue() {
- return false;
- }
-
- @Override
- public ValueCategory getValueCategory() {
- return ValueCategory.PRVALUE;
- }
-
- @Override
- public boolean accept(ASTVisitor visitor) {
- if (visitor.shouldVisitExpressions) {
- switch (visitor.visit(this)) {
- case ASTVisitor.PROCESS_ABORT:
- return false;
- case ASTVisitor.PROCESS_SKIP:
- return true;
- }
- }
- if (visitor.shouldVisitExpressions) {
- switch (visitor.leave(this)) {
- case ASTVisitor.PROCESS_ABORT:
- return false;
- case ASTVisitor.PROCESS_SKIP:
- return true;
- }
- }
- return true;
- }
-
-}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTLayoutQualifier.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTLayoutQualifier.java
deleted file mode 100644
index 78c1968d24a..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTLayoutQualifier.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2013 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.internal.core.dom.parser.upc.ast;
-
-import org.eclipse.cdt.core.dom.ast.IASTExpression;
-import org.eclipse.cdt.core.dom.upc.ast.IUPCASTLayoutQualifier;
-import org.eclipse.cdt.internal.core.dom.parser.ASTNode;
-
-@SuppressWarnings("restriction")
-public class UPCASTLayoutQualifier extends ASTNode implements IUPCASTLayoutQualifier {
-
- private boolean isPure;
- private boolean isIndefinite;
- private IASTExpression blockSizeExpression;
-
- @Override
- public UPCASTLayoutQualifier copy() {
- return copy(CopyStyle.withoutLocations);
- }
-
- @Override
- public UPCASTLayoutQualifier copy(CopyStyle style) {
- UPCASTLayoutQualifier copy = new UPCASTLayoutQualifier();
- copy.isPure = isPure;
- copy.isIndefinite = isIndefinite;
- copy.setBlockSizeExpression(blockSizeExpression == null ? null : blockSizeExpression.copy(style));
- return copy(copy, style);
- }
-
- @Override
- public IASTExpression getBlockSizeExpression() {
- return blockSizeExpression;
- }
-
- @Override
- public boolean isIndefiniteBlockAllocation() {
- return isIndefinite;
- }
-
- @Override
- public boolean isPureBlockAllocation() {
- return isPure;
- }
-
- @Override
- public void setBlockSizeExpression(IASTExpression expr) {
- this.blockSizeExpression = expr;
- }
-
- @Override
- public void setIndefiniteBlockAllocation(boolean allocation) {
- this.isIndefinite = allocation;
- }
-
- @Override
- public void setPureBlockAllocation(boolean allocation) {
- this.isPure = allocation;
- }
-}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTSimpleDeclSpecifier.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTSimpleDeclSpecifier.java
deleted file mode 100644
index 90c934a9e77..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTSimpleDeclSpecifier.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2013 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.internal.core.dom.parser.upc.ast;
-
-import org.eclipse.cdt.core.dom.ast.ASTVisitor;
-import org.eclipse.cdt.core.dom.ast.IASTExpression;
-import org.eclipse.cdt.core.dom.upc.ast.IUPCASTSimpleDeclSpecifier;
-import org.eclipse.cdt.internal.core.dom.parser.c.CASTSimpleDeclSpecifier;
-
-@SuppressWarnings("restriction")
-public class UPCASTSimpleDeclSpecifier extends CASTSimpleDeclSpecifier implements IUPCASTSimpleDeclSpecifier {
-
- private int referenceType;
- private int sharedQualifier;
- private IASTExpression blockSizeExpression;
-
- public UPCASTSimpleDeclSpecifier() {
- }
-
- public UPCASTSimpleDeclSpecifier(IASTExpression blockSizeExpression) {
- setBlockSizeExpression(blockSizeExpression);
- }
-
- @Override
- public UPCASTSimpleDeclSpecifier copy() {
- return copy(CopyStyle.withoutLocations);
- }
-
- @Override
- public UPCASTSimpleDeclSpecifier copy(CopyStyle style) {
- UPCASTSimpleDeclSpecifier copy = new UPCASTSimpleDeclSpecifier();
- copy.referenceType = referenceType;
- copy.sharedQualifier = sharedQualifier;
- copy.setBlockSizeExpression(blockSizeExpression == null ? null : blockSizeExpression.copy(style));
- return copy(copy, style);
- }
-
- @Override
- public IASTExpression getBlockSizeExpression() {
- return blockSizeExpression;
- }
-
- @Override
- public int getReferenceType() {
- return referenceType;
- }
-
- @Override
- public int getSharedQualifier() {
- return sharedQualifier;
- }
-
- @Override
- public void setBlockSizeExpression(IASTExpression expr) {
- this.blockSizeExpression = expr;
- if (expr != null) {
- expr.setParent(this);
- expr.setPropertyInParent(BLOCK_SIZE_EXPRESSION);
- }
- }
-
- @Override
- public void setReferenceType(int referenceType) {
- this.referenceType = referenceType;
- }
-
- @Override
- public void setSharedQualifier(int shared) {
- this.sharedQualifier = shared;
- }
-
- @Override
- public boolean accept(ASTVisitor action) {
- if (action.shouldVisitDeclSpecifiers) {
- switch (action.visit(this)) {
- case ASTVisitor.PROCESS_ABORT:
- return false;
- case ASTVisitor.PROCESS_SKIP:
- return true;
- default:
- break;
- }
- }
- if (blockSizeExpression != null)
- if (!blockSizeExpression.accept(action))
- return false;
-
- if (action.shouldVisitDeclSpecifiers) {
- switch (action.leave(this)) {
- case ASTVisitor.PROCESS_ABORT:
- return false;
- case ASTVisitor.PROCESS_SKIP:
- return true;
- default:
- break;
- }
- }
- return true;
- }
-
-}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTSynchronizationStatement.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTSynchronizationStatement.java
deleted file mode 100644
index b97fc33ce1a..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTSynchronizationStatement.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2014 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- * Sergey Prigogin (Google)
- *******************************************************************************/
-package org.eclipse.cdt.internal.core.dom.parser.upc.ast;
-
-import org.eclipse.cdt.core.dom.ast.ASTVisitor;
-import org.eclipse.cdt.core.dom.ast.IASTExpression;
-import org.eclipse.cdt.core.dom.upc.ast.IUPCASTSynchronizationStatement;
-import org.eclipse.cdt.internal.core.dom.parser.ASTAttributeOwner;
-
-@SuppressWarnings("restriction")
-public class UPCASTSynchronizationStatement extends ASTAttributeOwner implements IUPCASTSynchronizationStatement {
- private int statmentKind;
- private IASTExpression barrierExpression;
-
- public UPCASTSynchronizationStatement() {
- }
-
- public UPCASTSynchronizationStatement(IASTExpression barrierExpression, int statmentKind) {
- setBarrierExpression(barrierExpression);
- this.statmentKind = statmentKind;
- }
-
- @Override
- public UPCASTSynchronizationStatement copy() {
- return copy(CopyStyle.withoutLocations);
- }
-
- @Override
- public UPCASTSynchronizationStatement copy(CopyStyle style) {
- UPCASTSynchronizationStatement copy = new UPCASTSynchronizationStatement();
- copy.statmentKind = statmentKind;
- copy.setBarrierExpression(barrierExpression == null ? null : barrierExpression.copy(style));
- return copy(copy, style);
- }
-
- @Override
- public IASTExpression getBarrierExpression() {
- return barrierExpression;
- }
-
- @Override
- public int getStatementKind() {
- return statmentKind;
- }
-
- @Override
- public void setBarrierExpression(IASTExpression expr) {
- this.barrierExpression = expr;
- if (expr != null) {
- expr.setParent(this);
- expr.setPropertyInParent(BARRIER_EXPRESSION);
- }
- }
-
- @Override
- public void setStatementKind(int kind) {
- this.statmentKind = kind;
- }
-
- @Override
- public boolean accept(ASTVisitor visitor) {
- if (visitor.shouldVisitStatements) {
- switch (visitor.visit(this)) {
- case ASTVisitor.PROCESS_ABORT:
- return false;
- case ASTVisitor.PROCESS_SKIP:
- return true;
- }
- }
-
- if (!acceptByAttributeSpecifiers(visitor))
- return false;
- if (barrierExpression != null && !barrierExpression.accept(visitor))
- return false;
-
- if (visitor.shouldVisitStatements) {
- switch (visitor.leave(this)) {
- case ASTVisitor.PROCESS_ABORT:
- return false;
- case ASTVisitor.PROCESS_SKIP:
- return true;
- }
- }
- return true;
- }
-} \ No newline at end of file
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTTypeIdSizeofExpression.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTTypeIdSizeofExpression.java
deleted file mode 100644
index 70f523bb0c6..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTTypeIdSizeofExpression.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2013 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.internal.core.dom.parser.upc.ast;
-
-import org.eclipse.cdt.core.dom.ast.IASTTypeId;
-import org.eclipse.cdt.core.dom.ast.IASTTypeIdExpression;
-import org.eclipse.cdt.core.dom.upc.ast.IUPCASTTypeIdSizeofExpression;
-import org.eclipse.cdt.internal.core.dom.parser.c.CASTTypeIdExpression;
-
-@SuppressWarnings("restriction")
-public class UPCASTTypeIdSizeofExpression extends CASTTypeIdExpression implements IUPCASTTypeIdSizeofExpression {
- private int upcSizeofOperator;
-
- public UPCASTTypeIdSizeofExpression() {
- this(null);
- }
-
- public UPCASTTypeIdSizeofExpression(IASTTypeId typeId) {
- super(IASTTypeIdExpression.op_sizeof, typeId);
- }
-
- public UPCASTTypeIdSizeofExpression(int upcSizeofOperator, IASTTypeId typeId) {
- super(IASTTypeIdExpression.op_sizeof, typeId);
- this.upcSizeofOperator = upcSizeofOperator;
- }
-
- @Override
- public UPCASTTypeIdSizeofExpression copy() {
- return copy(CopyStyle.withoutLocations);
- }
-
- @Override
- public UPCASTTypeIdSizeofExpression copy(CopyStyle style) {
- UPCASTTypeIdSizeofExpression copy = new UPCASTTypeIdSizeofExpression();
- copy.setUPCSizeofOperator(upcSizeofOperator);
- IASTTypeId typeId = getTypeId();
- copy.setTypeId(typeId == null ? null : typeId.copy(style));
- return copy(copy, style);
- }
-
- @Override
- public int getUPCSizeofOperator() {
- return upcSizeofOperator;
- }
-
- @Override
- public void setUPCSizeofOperator(int upcSizeofOperator) {
- this.upcSizeofOperator = upcSizeofOperator;
- }
-}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTTypedefNameSpecifier.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTTypedefNameSpecifier.java
deleted file mode 100644
index 00063b0d064..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTTypedefNameSpecifier.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2013 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.internal.core.dom.parser.upc.ast;
-
-import org.eclipse.cdt.core.dom.ast.ASTVisitor;
-import org.eclipse.cdt.core.dom.ast.IASTExpression;
-import org.eclipse.cdt.core.dom.ast.IASTName;
-import org.eclipse.cdt.core.dom.upc.ast.IUPCASTTypedefNameSpecifier;
-import org.eclipse.cdt.internal.core.dom.parser.c.CASTTypedefNameSpecifier;
-
-@SuppressWarnings("restriction")
-public class UPCASTTypedefNameSpecifier extends CASTTypedefNameSpecifier implements IUPCASTTypedefNameSpecifier {
-
- private int referenceType;
- private int sharedQualifier;
- private IASTExpression blockSizeExpression;
-
- public UPCASTTypedefNameSpecifier() {
- }
-
- public UPCASTTypedefNameSpecifier(IASTName name) {
- super(name);
- }
-
- public UPCASTTypedefNameSpecifier(IASTName name, IASTExpression blockSizeExpression) {
- super(name);
- setBlockSizeExpression(blockSizeExpression);
- }
-
- @Override
- public UPCASTTypedefNameSpecifier copy() {
- return copy(CopyStyle.withoutLocations);
- }
-
- @Override
- public UPCASTTypedefNameSpecifier copy(CopyStyle style) {
- IASTName name = getName();
- UPCASTTypedefNameSpecifier copy = new UPCASTTypedefNameSpecifier(name == null ? null : name.copy(style));
- copy.referenceType = referenceType;
- copy.sharedQualifier = sharedQualifier;
- copy.setBlockSizeExpression(blockSizeExpression == null ? null : blockSizeExpression.copy(style));
- return copy(copy, style);
- }
-
- @Override
- public IASTExpression getBlockSizeExpression() {
- return blockSizeExpression;
- }
-
- @Override
- public int getReferenceType() {
- return referenceType;
- }
-
- @Override
- public int getSharedQualifier() {
- return sharedQualifier;
- }
-
- @Override
- public void setBlockSizeExpression(IASTExpression expr) {
- this.blockSizeExpression = expr;
- if (expr != null) {
- expr.setParent(this);
- expr.setPropertyInParent(BLOCK_SIZE_EXPRESSION);
- }
- }
-
- @Override
- public void setReferenceType(int referenceType) {
- this.referenceType = referenceType;
- }
-
- @Override
- public void setSharedQualifier(int shared) {
- this.sharedQualifier = shared;
- }
-
- @Override
- public boolean accept(ASTVisitor action) {
- if (action.shouldVisitDeclSpecifiers) {
- switch (action.visit(this)) {
- case ASTVisitor.PROCESS_ABORT:
- return false;
- case ASTVisitor.PROCESS_SKIP:
- return true;
- default:
- break;
- }
- }
- if (getName() != null)
- if (!getName().accept(action))
- return false;
- if (blockSizeExpression != null)
- if (!blockSizeExpression.accept(action))
- return false;
-
- if (action.shouldVisitDeclSpecifiers) {
- switch (action.leave(this)) {
- case ASTVisitor.PROCESS_ABORT:
- return false;
- case ASTVisitor.PROCESS_SKIP:
- return true;
- default:
- break;
- }
- }
- return true;
- }
-
-}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTUnarySizeofExpression.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTUnarySizeofExpression.java
deleted file mode 100644
index 6d84b973adb..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTUnarySizeofExpression.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2013 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.internal.core.dom.parser.upc.ast;
-
-import org.eclipse.cdt.core.dom.ast.IASTExpression;
-import org.eclipse.cdt.core.dom.ast.IASTUnaryExpression;
-import org.eclipse.cdt.core.dom.upc.ast.IUPCASTUnarySizeofExpression;
-import org.eclipse.cdt.internal.core.dom.parser.c.CASTUnaryExpression;
-
-@SuppressWarnings("restriction")
-public class UPCASTUnarySizeofExpression extends CASTUnaryExpression implements IUPCASTUnarySizeofExpression {
-
- private int upcSizeofOperator;
-
- public UPCASTUnarySizeofExpression() {
- this(null);
- }
-
- public UPCASTUnarySizeofExpression(IASTExpression operand) {
- super(IASTUnaryExpression.op_sizeof, operand);
- }
-
- public UPCASTUnarySizeofExpression(int upcSizeofOperator, IASTExpression operand) {
- super(IASTUnaryExpression.op_sizeof, operand);
- this.upcSizeofOperator = upcSizeofOperator;
- }
-
- @Override
- public UPCASTUnarySizeofExpression copy() {
- return copy(CopyStyle.withoutLocations);
- }
-
- @Override
- public UPCASTUnarySizeofExpression copy(CopyStyle style) {
- UPCASTUnarySizeofExpression copy = new UPCASTUnarySizeofExpression();
- copy.setUPCSizeofOperator(upcSizeofOperator);
- IASTExpression operand = getOperand();
- copy.setOperand(operand == null ? null : operand.copy(style));
- return copy(copy, style);
- }
-
- @Override
- public int getUPCSizeofOperator() {
- return upcSizeofOperator;
- }
-
- @Override
- public void setUPCSizeofOperator(int upcSizeofOperator) {
- this.upcSizeofOperator = upcSizeofOperator;
- }
-}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/templates/default-templates.properties b/upc/org.eclipse.cdt.core.parser.upc/templates/default-templates.properties
deleted file mode 100644
index c82ff2b8fed..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/templates/default-templates.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 IBM Corporation and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-
-
-forallLoop = upc_forall loop
-upcMaxBlocksize = UPC_MAX_BLOCKSIZE keyword
diff --git a/upc/org.eclipse.cdt.core.parser.upc/templates/default-templates.xml b/upc/org.eclipse.cdt.core.parser.upc/templates/default-templates.xml
deleted file mode 100644
index 3fae38dd7c4..00000000000
--- a/upc/org.eclipse.cdt.core.parser.upc/templates/default-templates.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-
-###############################################################################
-# Copyright (c) 2007 IBM Corporation and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-
--->
-
-<!-- NOTE TO TRANSLATOR:
-* This file should remain English as it produces compilable code.
--->
-
-<templates>
-
-<template
- name="upc_forall"
- description="%forallLoop"
- context="org.eclipse.cdt.ui.text.templates.c"
- id="org.eclipse.cdt.ui.text.templates.c.upc_forall"
- enabled="true">upc_forall (${var} = 0; ${var} &lt; THREADS; ${var}++; ${var}) {
- ${line_selection}${cursor}
-}</template>
-
-<template
- name="upc_max_blocksize"
- description="%upcMaxBlocksize"
- context="org.eclipse.cdt.ui.text.templates.c"
- id="org.eclipse.cdt.ui.text.templates.c.upc_max_blocksize"
- enabled="true">UPC_MAX_BLOCKSIZE</template>
-
-</templates>
-
- \ No newline at end of file
diff --git a/upc/org.eclipse.cdt.managedbuilder.bupc.ui/.classpath b/upc/org.eclipse.cdt.managedbuilder.bupc.ui/.classpath
deleted file mode 100644
index c4a519dc515..00000000000
--- a/upc/org.eclipse.cdt.managedbuilder.bupc.ui/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
- <classpathentry exported="true" kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/upc/org.eclipse.cdt.managedbuilder.bupc.ui/.project b/upc/org.eclipse.cdt.managedbuilder.bupc.ui/.project
deleted file mode 100644
index f2fdffda5cc..00000000000
--- a/upc/org.eclipse.cdt.managedbuilder.bupc.ui/.project
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.cdt.managedbuilder.bupc.ui</name>
- <comment></comment>
- <projects>
- <project>org.eclipse.ptp.pldt.upc_mine</project>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.ManifestBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.SchemaBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.pde.PluginNature</nature>
- <nature>org.eclipse.jdt.core.javanature</nature>
- </natures>
-</projectDescription>
diff --git a/upc/org.eclipse.cdt.managedbuilder.bupc.ui/.settings/org.eclipse.jdt.core.prefs b/upc/org.eclipse.cdt.managedbuilder.bupc.ui/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 2b6ecff8a01..00000000000
--- a/upc/org.eclipse.cdt.managedbuilder.bupc.ui/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,464 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
-org.eclipse.jdt.core.codeComplete.argumentPrefixes=
-org.eclipse.jdt.core.codeComplete.argumentSuffixes=
-org.eclipse.jdt.core.codeComplete.fieldPrefixes=
-org.eclipse.jdt.core.codeComplete.fieldSuffixes=
-org.eclipse.jdt.core.codeComplete.localPrefixes=
-org.eclipse.jdt.core.codeComplete.localSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
-org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
-org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
-org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
-org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
-org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
-org.eclipse.jdt.core.compiler.problem.APILeak=warning
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
-org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
-org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
-org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
-org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
-org.eclipse.jdt.core.compiler.problem.nullReference=error
-org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
-org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
-org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
-org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
-org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
-org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
-org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
-org.eclipse.jdt.core.formatter.align_with_spaces=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
-org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
-org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
-org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
-org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=0
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
-org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
-org.eclipse.jdt.core.formatter.comment.format_block_comments=false
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
-org.eclipse.jdt.core.formatter.comment.format_line_comments=false
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
-org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
-org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
-org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.join_lines_in_comments=true
-org.eclipse.jdt.core.formatter.join_wrapped_lines=true
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=120
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_on_off_tags=true
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
-org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
-org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/upc/org.eclipse.cdt.managedbuilder.bupc.ui/.settings/org.eclipse.jdt.ui.prefs b/upc/org.eclipse.cdt.managedbuilder.bupc.ui/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index e44576346c4..00000000000
--- a/upc/org.eclipse.cdt.managedbuilder.bupc.ui/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,133 +0,0 @@
-cleanup.add_default_serial_version_id=true
-cleanup.add_generated_serial_version_id=false
-cleanup.add_missing_annotations=true
-cleanup.add_missing_deprecated_annotations=true
-cleanup.add_missing_methods=false
-cleanup.add_missing_nls_tags=false
-cleanup.add_missing_override_annotations=true
-cleanup.add_missing_override_annotations_interface_methods=true
-cleanup.add_serial_version_id=false
-cleanup.always_use_blocks=true
-cleanup.always_use_parentheses_in_expressions=false
-cleanup.always_use_this_for_non_static_field_access=false
-cleanup.always_use_this_for_non_static_method_access=false
-cleanup.convert_functional_interfaces=false
-cleanup.convert_to_enhanced_for_loop=false
-cleanup.correct_indentation=false
-cleanup.format_source_code=true
-cleanup.format_source_code_changes_only=false
-cleanup.insert_inferred_type_arguments=false
-cleanup.make_local_variable_final=true
-cleanup.make_parameters_final=false
-cleanup.make_private_fields_final=true
-cleanup.make_type_abstract_if_missing_method=false
-cleanup.make_variable_declarations_final=false
-cleanup.never_use_blocks=false
-cleanup.never_use_parentheses_in_expressions=true
-cleanup.organize_imports=true
-cleanup.qualify_static_field_accesses_with_declaring_class=false
-cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-cleanup.qualify_static_member_accesses_with_declaring_class=false
-cleanup.qualify_static_method_accesses_with_declaring_class=false
-cleanup.remove_private_constructors=true
-cleanup.remove_redundant_modifiers=false
-cleanup.remove_redundant_semicolons=true
-cleanup.remove_redundant_type_arguments=true
-cleanup.remove_trailing_whitespaces=true
-cleanup.remove_trailing_whitespaces_all=true
-cleanup.remove_trailing_whitespaces_ignore_empty=false
-cleanup.remove_unnecessary_casts=true
-cleanup.remove_unnecessary_nls_tags=false
-cleanup.remove_unused_imports=true
-cleanup.remove_unused_local_variables=false
-cleanup.remove_unused_private_fields=true
-cleanup.remove_unused_private_members=false
-cleanup.remove_unused_private_methods=true
-cleanup.remove_unused_private_types=true
-cleanup.sort_members=false
-cleanup.sort_members_all=false
-cleanup.use_anonymous_class_creation=false
-cleanup.use_blocks=false
-cleanup.use_blocks_only_for_return_and_throw=false
-cleanup.use_lambda=true
-cleanup.use_parentheses_in_expressions=false
-cleanup.use_this_for_non_static_field_access=false
-cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-cleanup.use_this_for_non_static_method_access=false
-cleanup.use_this_for_non_static_method_access_only_if_necessary=true
-cleanup_profile=_CDT
-cleanup_settings_version=2
-eclipse.preferences.version=1
-editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=_CDT
-formatter_settings_version=14
-internal.default.compliance=user
-org.eclipse.jdt.ui.exception.name=e
-org.eclipse.jdt.ui.gettersetter.use.is=true
-org.eclipse.jdt.ui.ignorelowercasenames=true
-org.eclipse.jdt.ui.importorder=java;javax;org;com;
-org.eclipse.jdt.ui.keywordthis=false
-org.eclipse.jdt.ui.ondemandthreshold=1000
-org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.staticondemandthreshold=1000
-org.eclipse.jdt.ui.text.custom_code_templates=
-sp_cleanup.add_default_serial_version_id=true
-sp_cleanup.add_generated_serial_version_id=false
-sp_cleanup.add_missing_annotations=true
-sp_cleanup.add_missing_deprecated_annotations=true
-sp_cleanup.add_missing_methods=false
-sp_cleanup.add_missing_nls_tags=false
-sp_cleanup.add_missing_override_annotations=true
-sp_cleanup.add_missing_override_annotations_interface_methods=true
-sp_cleanup.add_serial_version_id=false
-sp_cleanup.always_use_blocks=true
-sp_cleanup.always_use_parentheses_in_expressions=false
-sp_cleanup.always_use_this_for_non_static_field_access=false
-sp_cleanup.always_use_this_for_non_static_method_access=false
-sp_cleanup.convert_functional_interfaces=false
-sp_cleanup.convert_to_enhanced_for_loop=false
-sp_cleanup.correct_indentation=false
-sp_cleanup.format_source_code=true
-sp_cleanup.format_source_code_changes_only=false
-sp_cleanup.insert_inferred_type_arguments=false
-sp_cleanup.make_local_variable_final=true
-sp_cleanup.make_parameters_final=false
-sp_cleanup.make_private_fields_final=true
-sp_cleanup.make_type_abstract_if_missing_method=false
-sp_cleanup.make_variable_declarations_final=false
-sp_cleanup.never_use_blocks=false
-sp_cleanup.never_use_parentheses_in_expressions=true
-sp_cleanup.on_save_use_additional_actions=true
-sp_cleanup.organize_imports=true
-sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
-sp_cleanup.remove_private_constructors=true
-sp_cleanup.remove_redundant_modifiers=false
-sp_cleanup.remove_redundant_semicolons=true
-sp_cleanup.remove_redundant_type_arguments=true
-sp_cleanup.remove_trailing_whitespaces=true
-sp_cleanup.remove_trailing_whitespaces_all=true
-sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
-sp_cleanup.remove_unnecessary_casts=true
-sp_cleanup.remove_unnecessary_nls_tags=false
-sp_cleanup.remove_unused_imports=true
-sp_cleanup.remove_unused_local_variables=false
-sp_cleanup.remove_unused_private_fields=true
-sp_cleanup.remove_unused_private_members=false
-sp_cleanup.remove_unused_private_methods=true
-sp_cleanup.remove_unused_private_types=true
-sp_cleanup.sort_members=false
-sp_cleanup.sort_members_all=false
-sp_cleanup.use_anonymous_class_creation=false
-sp_cleanup.use_blocks=false
-sp_cleanup.use_blocks_only_for_return_and_throw=false
-sp_cleanup.use_lambda=true
-sp_cleanup.use_parentheses_in_expressions=false
-sp_cleanup.use_this_for_non_static_field_access=false
-sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-sp_cleanup.use_this_for_non_static_method_access=false
-sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/upc/org.eclipse.cdt.managedbuilder.bupc.ui/.settings/org.eclipse.ltk.core.refactoring.prefs b/upc/org.eclipse.cdt.managedbuilder.bupc.ui/.settings/org.eclipse.ltk.core.refactoring.prefs
deleted file mode 100644
index 4594a5466d7..00000000000
--- a/upc/org.eclipse.cdt.managedbuilder.bupc.ui/.settings/org.eclipse.ltk.core.refactoring.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Tue May 26 16:43:18 EDT 2009
-eclipse.preferences.version=1
-org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false
diff --git a/upc/org.eclipse.cdt.managedbuilder.bupc.ui/META-INF/MANIFEST.MF b/upc/org.eclipse.cdt.managedbuilder.bupc.ui/META-INF/MANIFEST.MF
deleted file mode 100644
index df3112252bd..00000000000
--- a/upc/org.eclipse.cdt.managedbuilder.bupc.ui/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,22 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %Bundle-Name
-Bundle-SymbolicName: org.eclipse.cdt.managedbuilder.bupc.ui;singleton:=true
-Bundle-Version: 1.0.100.qualifier
-Bundle-ClassPath: org.eclipse.cdt.managedbuilder.bupc.ui
-Bundle-Activator: org.eclipse.cdt.managedbuilder.bupc.ui.UPCWizardsPlugin
-Require-Bundle: org.eclipse.cdt.ui,
- org.eclipse.cdt.core,
- org.eclipse.cdt.managedbuilder.core,
- org.eclipse.cdt.core.parser.upc,
- org.eclipse.ui,
- org.eclipse.core.runtime,
- org.eclipse.ui.editors,
- org.eclipse.core.resources
-Import-Package: org.eclipse.cdt.ui.wizards,
- org.eclipse.ui.wizards.newresource
-Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Bundle-Vendor: %Bundle-Vendor
-Bundle-Localization: plugin
-Automatic-Module-Name: org.eclipse.cdt.managedbuilder.bupc.ui
diff --git a/upc/org.eclipse.cdt.managedbuilder.bupc.ui/about.html b/upc/org.eclipse.cdt.managedbuilder.bupc.ui/about.html
deleted file mode 100644
index 164f781a8fd..00000000000
--- a/upc/org.eclipse.cdt.managedbuilder.bupc.ui/about.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
-</head>
-<body lang="EN-US">
- <h2>About This Content</h2>
-
- <p>November 30, 2017</p>
- <h3>License</h3>
-
- <p>
- The Eclipse Foundation makes available all content in this plug-in
- (&quot;Content&quot;). Unless otherwise indicated below, the Content
- is provided to you under the terms and conditions of the Eclipse
- Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
- For purposes of the EPL, &quot;Program&quot; will mean the Content.
- </p>
-
- <p>
- If you did not receive this Content directly from the Eclipse
- Foundation, the Content is being redistributed by another party
- (&quot;Redistributor&quot;) and different terms and conditions may
- apply to your use of any object code in the Content. Check the
- Redistributor's license that was provided with the Content. If no such
- license exists, contact the Redistributor. Unless otherwise indicated
- below, the terms and conditions of the EPL still apply to any source
- code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
- </p>
-
-</body>
-</html> \ No newline at end of file
diff --git a/upc/org.eclipse.cdt.managedbuilder.bupc.ui/about.mappings b/upc/org.eclipse.cdt.managedbuilder.bupc.ui/about.mappings
deleted file mode 100644
index 0824105e69d..00000000000
--- a/upc/org.eclipse.cdt.managedbuilder.bupc.ui/about.mappings
+++ /dev/null
@@ -1,9 +0,0 @@
-# about.mappings
-# contains fill-ins for about.properties
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# This file does not need to be translated.
-
-# The following should contain the build version.
-# e.g. "0=20020612"
-# This value will be added automaticaly via the build scripts
-0=@build@ \ No newline at end of file
diff --git a/upc/org.eclipse.cdt.managedbuilder.bupc.ui/about.properties b/upc/org.eclipse.cdt.managedbuilder.bupc.ui/about.properties
deleted file mode 100644
index fa61d9c5e02..00000000000
--- a/upc/org.eclipse.cdt.managedbuilder.bupc.ui/about.properties
+++ /dev/null
@@ -1,28 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 IBM Corporation and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-# about.properties
-# contains externalized strings for about.ini
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# fill-ins are supplied by about.mappings
-# This file should be translated.
-# NOTE TO TRANSLATOR: Please do not translate the featureVersion variable.
-
-
-blurb=Berkeley UPC Tool Chain\n\
-\n\
-Version: {featureVersion}\n\
-Build id: {0}\n\
-\n\
-(c) Copyright Eclipse contributors and others, 2007, 2010.\n\
-Visit http://www.eclipse.org/cdt
diff --git a/upc/org.eclipse.cdt.managedbuilder.bupc.ui/build.properties b/upc/org.eclipse.cdt.managedbuilder.bupc.ui/build.properties
deleted file mode 100644
index 386b370c500..00000000000
--- a/upc/org.eclipse.cdt.managedbuilder.bupc.ui/build.properties
+++ /dev/null
@@ -1,14 +0,0 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
- .,\
- plugin.xml,\
- templates/,\
- build.properties,\
- about.html,\
- plugin.properties,\
- cdt_logo_icon32.png,\
- about.ini,\
- about.mappings,\
- about.properties
-src.includes = about.html
diff --git a/upc/org.eclipse.cdt.managedbuilder.bupc.ui/plugin.properties b/upc/org.eclipse.cdt.managedbuilder.bupc.ui/plugin.properties
deleted file mode 100644
index 451b1fd453f..00000000000
--- a/upc/org.eclipse.cdt.managedbuilder.bupc.ui/plugin.properties
+++ /dev/null
@@ -1,79 +0,0 @@
-#Properties file for org.eclipse.cdt.managedbuilder.bupc.ui
-extension.name = UPC toolchain
-tool.compiler = Berkeley UPC Compiler
-
-optionCategory.compiler.general = General
-
-option.compiler.preprocess = Preprocess only (-E)
-option.compiler.debug = Debug
-option.compiler.opt = Generate optimized objects
-option.compiler.opt.exp = Enable experimental UPC translator optimizations
-
-optionCategory.compiler.upc = UPC options
-option.compiler.network = Network API
-enumeratedOptionValue.default = Default
-enumeratedOptionValue.mpi = MPI
-enumeratedOptionValue.udp = UDP
-enumeratedOptionValue.elan = ELAN
-enumeratedOptionValue.lapi = IBM LAPI
-enumeratedOptionValue.gm = Myrinet GM
-enumeratedOptionValue.smp = SMP
-enumeratedOptionValue.vapi = VAPI
-enumeratedOptionValue.ibv = OpenIB
-enumeratedOptionValue.sci = Dolphin SCI
-enumeratedOptionValue.shmem = SHMEM
-enumeratedOptionValue.portals = Cray XT Portals
-enumeratedOptionValue.dcmf = BlueGene/P DCMF
-option.compiler.sharedheap = -shared-heap=
-option.compiler.fixedthreads = -T=
-
-optionCategory.compiler.symbols = Symbols
-option.compiler.defsymbols = Defined symbols (-D)
-option.compiler.undefsymbols = Undefined symbols (-U)
-
-optionCategory.compiler.dirs = Directories
-option.compiler.incpath = Include paths (-I)
-
-optionCategory.compiler.advanced = Advanced options
-option.compiler.pthreads = -pthreads=
-
-optionCategory.compiler.misc = Miscellaneous
-option.compiler.other = Other options
-option.compiler.verbose = Verbose (-v)
-option.compiler.extraverbose = Extra verbose (-vv)
-
-inputType.upc = UPC sources
-outputType.obj = Object Files
-
-tool.linker = Berkeley UPC Linker
-
-optionCategory.linker.general = General
-option.linker.debug = Debug
-option.linker.strip = Strip the symbolic information from the final executable
-
-optionCategory.linker.upc = UPC options
-option.linker.network = Network API
-
-option.linker.sharedheap = -shared-heap=
-option.linker.fixedthreads = -T=
-
-optionCategory.linker.libs = Libraries
-option.linker.libs = Libraries (-l)
-option.linker.libpaths = Library search path (-L)
-
-optionCategory.linker.advanced = Advanced options
-option.linker.pthreads = -pthreads=
-option.linker.other = Other options
-
-outputType.exe = Executables
-toolChain.linux.name = Linux Berkeley UPC
-toolChain.macosx.name = MacOSX Berkeley UPC
-targetPlatform.name = Debug Platform
-
-configuration.debug.desc = Debug configuration
-configuration.debug.name = Debug
-configuration.release.desc = Release configuration
-configuration.release.name = Release
-
-Bundle-Vendor = Eclipse CDT
-Bundle-Name = Berkeley UPC Tool Chain \ No newline at end of file
diff --git a/upc/org.eclipse.cdt.managedbuilder.bupc.ui/plugin.xml b/upc/org.eclipse.cdt.managedbuilder.bupc.ui/plugin.xml
deleted file mode 100644
index 0c2510e5735..00000000000
--- a/upc/org.eclipse.cdt.managedbuilder.bupc.ui/plugin.xml
+++ /dev/null
@@ -1,742 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
-<plugin>
-<extension point="org.eclipse.cdt.core.templates">
-<template filterPattern=".*"
- id="org.eclipse.cdt.core.templates.HelloWorldUPCProject"
- location="templates/template.xml"
- projectType="org.eclipse.cdt.build.core.buildArtefactType.exe">
- </template>
-</extension>
-
-<extension
- id="org.eclipse.cdt.managedbuilder.bupc.ui.upcBuildDefinitions"
- name="%extension.name"
- point="org.eclipse.cdt.managedbuilder.core.buildDefinitions">
-
- <tool
- command="upcc"
- id = "org.eclipse.cdt.managedbuild.tool.bupc.compiler"
- isAbstract="false"
- name = "%tool.compiler"
- natureFilter = "both"
- outputFlag = "-o">
- <supportedProperties>
- <property id="org.eclipse.cdt.build.core.buildType">
- <value id="org.eclipse.cdt.build.core.buildType.debug"/>
- <value id="org.eclipse.cdt.build.core.buildType.release"/>
- </property>
- </supportedProperties>
- <optionCategory
- owner="org.eclipse.cdt.managedbuild.tool.bupc.compiler"
- id = "bupc.ui.optionCategory.compiler.gen"
- name = "%optionCategory.compiler.general"/>
- <option
- category="bupc.ui.optionCategory.compiler.gen"
- command="-E"
- id="bupc.ui.compiler.general.preprocess"
- isAbstract="false"
- name = "%option.compiler.preprocess"
- resourceFilter="project"
- valueType="boolean"
- defaultValue="false"/>
- <option
- category="bupc.ui.optionCategory.compiler.gen"
- command="-g"
- id="bupc.ui.compiler.general.debug"
- isAbstract="false"
- name = "%option.compiler.debug"
- resourceFilter="project"
- valueType="boolean"
- defaultValue="false">
- <enablement
- type="CONTAINER_ATTRIBUTE"
- attribute="defaultValue"
- value="true"
- extensionAdjustment="false">
- <checkBuildProperty
- property="org.eclipse.cdt.build.core.buildType"
- value="org.eclipse.cdt.build.core.buildType.debug"/>
- </enablement>
- </option>
- <option
- category="bupc.ui.optionCategory.compiler.gen"
- command="-O"
- id="bupc.ui.compiler.general.opt"
- isAbstract="false"
- name = "%option.compiler.opt"
- resourceFilter="project"
- valueType="boolean"
- defaultValue="false"/>
- <option
- category="bupc.ui.optionCategory.compiler.gen"
- command="-opt"
- id="bupc.ui.compiler.general.opt.exp"
- isAbstract="false"
- name = "%option.compiler.opt.exp"
- resourceFilter="project"
- valueType="boolean"
- defaultValue="false"/>
-
- <optionCategory
- owner="org.eclipse.cdt.managedbuild.tool.bupc.compiler"
- name="%optionCategory.compiler.upc"
- id="bupc.ui.optionCategory.compiler.upc">
- </optionCategory>
-
- <option
- name="%option.compiler.network"
- category="bupc.ui.optionCategory.compiler.upc"
- id="bupc.ui.compiler.network"
- valueType="enumerated">
-
- <enumeratedOptionValue
- name="%enumeratedOptionValue.default"
- isDefault="true"
- command=""
- id="bupc.ui.compiler.network.default">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%enumeratedOptionValue.mpi"
- isDefault="false"
- command="-network=mpi"
- id="bupc.ui.compiler.network.mpi">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%enumeratedOptionValue.udp"
- command="-network=udp"
- id="bupc.ui.compiler.network.udp">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%enumeratedOptionValue.elan"
- command="-network=elan"
- id="bupc.ui.compiler.network.elan">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%enumeratedOptionValue.lapi"
- command="-network=lapi"
- id="bupc.ui.compiler.network.lapi">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%enumeratedOptionValue.gm"
- command="-network=gm"
- id="bupc.ui.compiler.network.gm">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%enumeratedOptionValue.smp"
- command="-network=smp"
- id="bupc.ui.compiler.network.smp">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%enumeratedOptionValue.vapi"
- command="-network=vapi"
- id="bupc.ui.compiler.network.vapi">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%enumeratedOptionValue.ibv"
- command="-network=ibv"
- id="bupc.ui.compiler.network.ibv">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%enumeratedOptionValue.sci"
- command="-network=sci"
- id="bupc.ui.compiler.network.sci">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%enumeratedOptionValue.shmem"
- command="-network=shmem"
- id="bupc.ui.compiler.network.shmem">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%enumeratedOptionValue.portals"
- command="-network=portals"
- id="bupc.ui.compiler.network.portals">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%enumeratedOptionValue.dcmf"
- command="-network=dcmf"
- id="bupc.ui.compiler.network.dcmf">
- </enumeratedOptionValue>
- </option>
- <option
- category="bupc.ui.optionCategory.compiler.upc"
- command="-shared-heap="
- id="bupc.ui.compiler.upc.sharedheap"
- isAbstract="false"
- name="%option.compiler.sharedheap"
- resourceFilter="project"
- valueType="string"/>
- <option
- category="bupc.ui.optionCategory.compiler.upc"
- command="-T="
- id="bupc.ui.compiler.upc.fixedthreads"
- isAbstract="false"
- name="%option.compiler.fixedthreads"
- resourceFilter="project"
- valueType="string"/>
-
- <optionCategory
- owner="org.eclipse.cdt.managedbuild.tool.bupc.compiler"
- name="%optionCategory.compiler.symbols"
- id="bupc.ui.optionCategory.compiler.symbols">
- </optionCategory>
- <option
- name="%option.compiler.defsymbols"
- category="bupc.ui.optionCategory.compiler.symbols"
- command="-D"
- id="bupc.ui.compiler.def.symbol"
- valueType="definedSymbols">
- </option>
- <option
- name="%option.compiler.undefsymbols"
- category="bupc.ui.optionCategory.compiler.symbols"
- command="-U"
- id="bupc.ui.compiler.undef.symbol"
- valueType="undefDefinedSymbols">
- </option>
- <optionCategory
- owner="org.eclipse.cdt.managedbuild.tool.bupc.compiler"
- name="%optionCategory.compiler.dirs"
- id="bupc.ui.optionCategory.compiler.dirs">
- </optionCategory>
- <option
- name="%option.compiler.incpath"
- category="bupc.ui.optionCategory.compiler.dirs"
- command="-I"
- id="bupc.ui.compiler.general.incpath"
- valueType="includePath"
- browseType="directory">
- </option>
- <optionCategory
- owner="org.eclipse.cdt.managedbuild.tool.bupc.compiler"
- id = "bupc.ui.optionCategory.compiler.advOptions"
- name = "%optionCategory.compiler.advanced"/>
- <option
- category="bupc.ui.optionCategory.compiler.advOptions"
- command="-pthreads="
- id="bupc.ui.compiler.advOptions.pthread"
- isAbstract="false"
- name="%option.compiler.pthreads"
- resourceFilter="project"
- valueType="string"/>
- <optionCategory
- owner="org.eclipse.cdt.managedbuild.tool.bupc.compiler"
- id = "bupc.ui.optionCategory.compiler.miscOptions"
- name = "%optionCategory.compiler.misc"/>
- <option
- defaultValue="-c"
- category="bupc.ui.optionCategory.compiler.miscOptions"
- command=""
- id="bupc.ui.compiler.miscOptions.other"
- isAbstract="false"
- name="%option.compiler.other"
- resourceFilter="project"
- valueType="string"/>
- <option
- defaultValue="false"
- name="%option.compiler.verbose"
- category="bupc.ui.optionCategory.compiler.miscOptions"
- command="-v"
- id="bupc.ui.compiler.miscOptions.verbose"
- valueType="boolean"/>
- <option
- defaultValue="false"
- name="%option.compiler.extraverbose"
- category="bupc.ui.optionCategory.compiler.miscOptions"
- command="-vv"
- id="bupc.ui.compiler.miscOptions.extraVerbose"
- valueType="boolean"/>
- <inputType
- id="cdt.managedbuild.tool.bupc.compiler.input"
- multipleOfType ="false"
- dependencyContentType="org.eclipse.cdt.core.cHeader"
- dependencyExtensions="h"
- name = "%inputType.upc"
- primaryInput = "true"
- languageId="org.eclipse.cdt.core.parser.upc.upc"
- superClass="org.eclipse.cdt.build.core.settings.holder.inType"
- sources = "upc,c">
- </inputType>
- <outputType
- id="cdt.managedbuild.tool.bupc.compiler.output"
- name="%outputType.obj"
- outputs="o"
- buildVariable="OBJS"
- primaryInputType="cdt.managedbuild.tool.bupc.compiler.input"
- primaryOutput="true"/>
-
- </tool>
-
- <tool
- command="upcc"
- id = "org.eclipse.cdt.managedbuild.tool.bupc.linker"
- isAbstract="false"
- name = "%tool.linker"
- natureFilter = "both"
- outputFlag = "-o">
- <supportedProperties>
- <property id="org.eclipse.cdt.build.core.buildType">
- <value id="org.eclipse.cdt.build.core.buildType.debug"/>
- <value id="org.eclipse.cdt.build.core.buildType.release"/>
- </property>
- </supportedProperties>
- <optionCategory
- id = "bupc.ui.optionCategory.linker.gen"
- name = "%optionCategory.linker.general"/>
- <option
- category="bupc.ui.optionCategory.linker.gen"
- command="-g"
- id="bupc.ui.linker.general.debug"
- isAbstract="false"
- name = "%option.linker.debug"
- resourceFilter="project"
- valueType="boolean"
- defaultValue="false">
- <enablement
- type="CONTAINER_ATTRIBUTE"
- attribute="defaultValue"
- value="true"
- extensionAdjustment="false">
- <checkBuildProperty
- property="org.eclipse.cdt.build.core.buildType"
- value="org.eclipse.cdt.build.core.buildType.debug"/>
- </enablement>
- </option>
- <option
- category = "bupc.ui.optionCategory.linker.gen"
- id = "bupc.ui.linker.general.strip"
- command = "-s"
- isAbstract = "false"
- name = "%option.linker.strip"
- resourceFilter = "project"
- valueType = "boolean"
- defaultValue="false"/>
-
- <optionCategory
- owner="org.eclipse.cdt.managedbuild.tool.bupc.linker"
- name="%optionCategory.linker.upc"
- id="bupc.ui.optionCategory.linker.upc">
- </optionCategory>
-
- <option
- name="%option.linker.network"
- category="bupc.ui.optionCategory.linker.upc"
- id="bupc.ui.linker.upc.network"
- valueType="enumerated">
-
- <enumeratedOptionValue
- name="%enumeratedOptionValue.default"
- isDefault="true"
- command=""
- id="bupc.ui.linker.upc.network.default">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%enumeratedOptionValue.mpi"
- isDefault="false"
- command="-network=mpi"
- id="bupc.ui.linker.upc.network.mpi">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%enumeratedOptionValue.udp"
- command="-network=udp"
- id="bupc.ui.linker.upc.network.udp">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%enumeratedOptionValue.elan"
- command="-network=elan"
- id="bupc.ui.linker.upc.network.elan">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%enumeratedOptionValue.lapi"
- command="-network=lapi"
- id="bupc.ui.linker.upc.network.lapi">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%enumeratedOptionValue.gm"
- command="-network=gm"
- id="bupc.ui.linker.upc.network.gm">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%enumeratedOptionValue.smp"
- command="-network=smp"
- id="bupc.ui.linker.upc.network.smp">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%enumeratedOptionValue.vapi"
- command="-network=vapi"
- id="bupc.ui.linker.upc.network.vapi">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%enumeratedOptionValue.ibv"
- command="-network=ibv"
- id="bupc.ui.linker.upc.network.ibv">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%enumeratedOptionValue.sci"
- command="-network=sci"
- id="bupc.ui.linker.upc.network.sci">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%enumeratedOptionValue.shmem"
- command="-network=shmem"
- id="bupc.ui.linker.upc.network.shmem">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%enumeratedOptionValue.portals"
- command="-network=portals"
- id="bupc.ui.linker.upc.network.portals">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%enumeratedOptionValue.dcmf"
- command="-network=dcmf"
- id="bupc.ui.linker.upc.network.dcmf">
- </enumeratedOptionValue>
- </option>
- <option
- category="bupc.ui.optionCategory.linker.upc"
- command="-shared-heap="
- id="bupc.ui.linker.upc.sharedheap"
- isAbstract="false"
- name="%option.linker.sharedheap"
- resourceFilter="project"
- valueType="string"/>
- <option
- category="bupc.ui.optionCategory.linker.upc"
- command="-T="
- id="bupc.ui.linker.upc.fixedthreads"
- isAbstract="false"
- name="%option.linker.fixedthreads"
- resourceFilter="project"
- valueType="string"/>
-
- <optionCategory
- owner="org.eclipse.cdt.managedbuild.tool.bupc.linker"
- name="%optionCategory.linker.libs"
- id="bupc.ui.optionCategory.linker.libs">
- </optionCategory>
- <option
- name="%option.linker.libs"
- category="bupc.ui.optionCategory.linker.libs"
- command="-l"
- id="bupc.ui.linker.libs"
- browseType="none"
- valueType="libs">
- </option>
- <option
- name="%option.linker.libpaths"
- category="bupc.ui.optionCategory.linker.libs"
- command="-L"
- id="bupc.ui.linker.paths"
- browseType="directory"
- valueType="libPaths">
- </option>
-
- <optionCategory
- id = "bupc.ui.optionCategory.linker.advOptions"
- name = "%optionCategory.linker.advanced"/>
- <option
- category="bupc.ui.optionCategory.linker.advOptions"
- command="-pthreads="
- id="bupc.ui.linker.advOptions.pthread"
- isAbstract="false"
- name="%option.linker.pthreads"
- resourceFilter="project"
- valueType="string"/>
- <option
- category="bupc.ui.optionCategory.linker.advOptions"
- command=""
- id="bupc.ui.linker.advOptions.other"
- isAbstract="false"
- name="%option.linker.other"
- resourceFilter="project"
- valueType="string"/>
-
- <inputType
- id="cdt.managedbuild.tool.bupc.linker.input"
- multipleOfType ="true"
- dependencyCalculator="org.eclipse.cdt.managedbuilder.makegen.internal.DefaultNoDependencyCalculator"
- primaryInput = "true"
- languageId="org.eclipse.cdt.core.parser.upc.upc"
- sourceContentType="org.eclipse.cdt.managedbuilder.core.compiledObjectFile"
- sources = "o"
- buildVariable="OBJS">
-
- </inputType>
-
- <outputType
- id="cdt.managedbuild.tool.bupc.linker.output"
- name="%outputType.exe"
- outputs=""
- buildVariable="EXECUTABLES"
- primaryInputType="cdt.managedbuild.tool.bupc.linker.input"
- primaryOutput="true"/>
-
- </tool>
-
- <toolChain
- archList="all"
- osList="linux,hpux,aix,qnx,solaris"
- name="%toolChain.linux.name"
- targetTool="org.eclipse.cdt.managedbuild.tool.bupc.linker"
- id="cdt.managedbuild.toolchain.bupc.exe.base">
- <targetPlatform
- id="cdt.managedbuild.target.bupc.platform.base"
- name="%targetPlatform.name"
- binaryParser="org.eclipse.cdt.core.ELF"
- osList="linux,hpux,aix,qnx,solaris"
- archList="all">
- </targetPlatform>
-
- <builder
- id="org.eclipse.cdt.managedbuilder.bupc.builder.base"
- isAbstract="false"
- isVariableCaseSensitive="false"
- superClass="org.eclipse.cdt.build.core.internal.builder">
- </builder>
-
- <tool
- id="org.eclipse.cdt.managedbuild.tool.bupc.compiler.base"
- superClass="org.eclipse.cdt.managedbuild.tool.bupc.compiler"/>
- <tool
- id="org.eclipse.cdt.managedbuild.tool.bupc.linker.base"
- superClass="org.eclipse.cdt.managedbuild.tool.bupc.linker"/>
- </toolChain>
-
- <toolChain
- archList="all"
- osList="macosx"
- name="%toolChain.macosx.name"
- targetTool="org.eclipse.cdt.managedbuild.tool.bupc.linker"
- id="cdt.managedbuild.toolchain.bupc.macosx.exe.base">
- <targetPlatform
- id="cdt.managedbuild.target.bupc.platform.macosx.base"
- name="%targetPlatform.name"
- osList="macosx"
- archList="all"
- binaryParser="org.eclipse.cdt.core.MachO64">
- </targetPlatform>
-
- <builder
- id="org.eclipse.cdt.managedbuilder.bupc.builder.macosx.base"
- isAbstract="false"
- isVariableCaseSensitive="false"
- superClass="org.eclipse.cdt.build.core.internal.builder">
- </builder>
-
- <tool
- id="org.eclipse.cdt.managedbuild.tool.bupc.compiler.macosx.base"
- superClass="org.eclipse.cdt.managedbuild.tool.bupc.compiler"/>
- <tool
- id="org.eclipse.cdt.managedbuild.tool.bupc.linker.macosx.base"
- superClass="org.eclipse.cdt.managedbuild.tool.bupc.linker"/>
- </toolChain>
-
- <projectType
- id = "cdt.managedbuild.target.bupc.exe"
- buildArtefactType = "org.eclipse.cdt.build.core.buildArtefactType.exe"
- isAbstract="false"
- isTest="false">
- <configuration
- cleanCommand = "rm -rf"
- description = "%configuration.debug.desc"
- id = "cdt.managedbuild.config.bupc.exe.debug"
- buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug"
- name = "%configuration.debug.name">
- <toolChain
- superClass="cdt.managedbuild.toolchain.bupc.exe.base"
- id = "cdt.managedbuild.toolchain.bupc.exe.debug">
- <targetPlatform
- superClass="cdt.managedbuild.target.bupc.platform.base"
- id="cdt.managedbuild.target.bupc.platform.exe.debug">
- </targetPlatform>
- <builder
- superClass="org.eclipse.cdt.managedbuilder.bupc.builder.base"
- id="org.eclipse.cdt.managedbuilder.bupc.builder.exe.debug">
- </builder>
- <tool
- id="org.eclipse.cdt.managedbuild.tool.bupc.compiler.exe.debug"
- superClass="org.eclipse.cdt.managedbuild.tool.bupc.compiler.base">
-
- <!--
- <option
- id="gnu.cpp.compiler.exe.debug.option.optimization.level"
- superClass="gnu.cpp.compiler.option.optimization.level">
- </option>
- -->
- <option
- id="bupc.ui.compiler.exe.debug.option.debug"
- superClass="bupc.ui.compiler.general.debug">
- </option>
- </tool>
- <tool
- id="org.eclipse.cdt.managedbuild.tool.bupc.linker.exe.debug"
- superClass="org.eclipse.cdt.managedbuild.tool.bupc.linker.base">
- <!--
- <option
- id="gnu.c.compiler.exe.debug.option.optimization.level"
- superClass="gnu.c.compiler.option.optimization.level">
- </option>
- -->
- <option
- id="bupc.ui.linker.exe.debug.option.debug"
- superClass="bupc.ui.linker.general.debug">
- </option>
- </tool>
- </toolChain>
- </configuration>
- <configuration
- cleanCommand = "rm -rf"
- description = "%configuration.release.desc"
- id = "cdt.managedbuild.config.bupc.exe.release"
- buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release"
- name = "%configuration.release.name">
- <toolChain
- superClass="cdt.managedbuild.toolchain.bupc.exe.base"
- id = "cdt.managedbuild.toolchain.bupc.exe.release">
- <targetPlatform
- superClass="cdt.managedbuild.target.bupc.platform.base"
- id="cdt.managedbuild.target.bupc.platform.exe.release">
- </targetPlatform>
- <builder
- superClass="org.eclipse.cdt.managedbuilder.bupc.builder.base"
- id="org.eclipse.cdt.managedbuilder.bupc.builder.exe.release">
- </builder>
- <tool
- id="org.eclipse.cdt.managedbuild.tool.bupc.compiler.exe.release"
- superClass="org.eclipse.cdt.managedbuild.tool.bupc.compiler.base">
-
- <!--
- <option
- id="gnu.cpp.compiler.exe.debug.option.optimization.level"
- superClass="gnu.cpp.compiler.option.optimization.level">
- </option>
- -->
- <option
- id="bupc.ui.compiler.exe.release.option.debug"
- superClass="bupc.ui.compiler.general.debug">
- </option>
- </tool>
- <tool
- id="org.eclipse.cdt.managedbuild.tool.bupc.linker.exe.release"
- superClass="org.eclipse.cdt.managedbuild.tool.bupc.linker.base">
- <!--
- <option
- id="gnu.c.compiler.exe.debug.option.optimization.level"
- superClass="gnu.c.compiler.option.optimization.level">
- </option>
- -->
- <option
- id="bupc.ui.linker.exe.release.option.debug"
- superClass="bupc.ui.linker.general.debug">
- </option>
- </tool>
- </toolChain>
- </configuration>
- </projectType>
-
- <!-- =================== -->
-
- <projectType
- id = "cdt.managedbuild.target.bupc.macosx.exe"
- buildArtefactType = "org.eclipse.cdt.build.core.buildArtefactType.exe"
- isAbstract="false"
- isTest="false">
- <configuration
- cleanCommand = "rm -rf"
- description = "%configuration.debug.desc"
- id = "cdt.managedbuild.config.bupc.exe.macosx.debug"
- buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug"
- name = "%configuration.debug.name">
- <toolChain
- superClass="cdt.managedbuild.toolchain.bupc.macosx.exe.base"
- id = "cdt.managedbuild.toolchain.bupc.exe.macosx.debug">
- <targetPlatform
- superClass="cdt.managedbuild.target.bupc.platform.macosx.base"
- id="cdt.managedbuild.target.bupc.platform.exe.macosx.debug">
- </targetPlatform>
- <builder
- superClass="org.eclipse.cdt.managedbuilder.bupc.builder.macosx.base"
- id="org.eclipse.cdt.managedbuilder.bupc.builder.exe.macosx.debug">
- </builder>
- <tool
- id="org.eclipse.cdt.managedbuild.tool.bupc.compiler.exe.macosx.debug"
- superClass="org.eclipse.cdt.managedbuild.tool.bupc.compiler.macosx.base">
- <!--
- <option
- id="gnu.cpp.compiler.exe.debug.option.optimization.level"
- superClass="gnu.cpp.compiler.option.optimization.level">
- </option>
- -->
- <option
- id="bupc.ui.compiler.exe.macosx.debug.option.debug"
- superClass="bupc.ui.compiler.general.debug">
- </option>
- </tool>
- <tool
- id="org.eclipse.cdt.managedbuild.tool.bupc.linker.exe.macosx.debug"
- superClass="org.eclipse.cdt.managedbuild.tool.bupc.linker.macosx.base">
- <!--
- <option
- id="gnu.c.compiler.exe.debug.option.optimization.level"
- superClass="gnu.c.compiler.option.optimization.level">
- </option>
- -->
- <option
- id="bupc.ui.linker.exe.macosx.debug.option.debug"
- superClass="bupc.ui.linker.general.debug">
- </option>
- </tool>
- </toolChain>
- </configuration>
- <configuration
- cleanCommand = "rm -rf"
- description = "%configuration.release.desc"
- id = "cdt.managedbuild.config.bupc.exe.macosx.release"
- buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release"
- name = "%configuration.release.name">
- <toolChain
- superClass="cdt.managedbuild.toolchain.bupc.macosx.exe.base"
- id = "cdt.managedbuild.toolchain.bupc.exe.macosx.release">
- <targetPlatform
- superClass="cdt.managedbuild.target.bupc.platform.macosx.base"
- id="cdt.managedbuild.target.bupc.platform.exe.macosx.release">
- </targetPlatform>
- <builder
- superClass="org.eclipse.cdt.managedbuilder.bupc.builder.base"
- id="org.eclipse.cdt.managedbuilder.bupc.builder.exe.macosx.release">
- </builder>
- <tool
- id="org.eclipse.cdt.managedbuild.tool.bupc.compiler.exe.macosx.release"
- superClass="org.eclipse.cdt.managedbuild.tool.bupc.compiler.macosx.base">
-
- <!--
- <option
- id="gnu.cpp.compiler.exe.debug.option.optimization.level"
- superClass="gnu.cpp.compiler.option.optimization.level">
- </option>
- -->
- <option
- id="bupc.ui.compiler.exe.macosx.release.option.debug"
- superClass="bupc.ui.compiler.general.debug">
- </option>
- </tool>
- <tool
- id="org.eclipse.cdt.managedbuild.tool.bupc.linker.exe.macosx.release"
- superClass="org.eclipse.cdt.managedbuild.tool.bupc.linker.macosx.base">
- <!--
- <option
- id="gnu.c.compiler.exe.debug.option.optimization.level"
- superClass="gnu.c.compiler.option.optimization.level">
- </option>
- -->
- <option
- id="bupc.ui.linker.exe.macosx.release.option.debug"
- superClass="bupc.ui.linker.general.debug">
- </option>
- </tool>
- </toolChain>
- </configuration>
- </projectType>
-
-</extension>
-</plugin>
diff --git a/upc/org.eclipse.cdt.managedbuilder.bupc.ui/src/org/eclipse/cdt/managedbuilder/bupc/ui/UPCWizardsPlugin.java b/upc/org.eclipse.cdt.managedbuilder.bupc.ui/src/org/eclipse/cdt/managedbuilder/bupc/ui/UPCWizardsPlugin.java
deleted file mode 100644
index 4b658de93dd..00000000000
--- a/upc/org.eclipse.cdt.managedbuilder.bupc.ui/src/org/eclipse/cdt/managedbuilder/bupc/ui/UPCWizardsPlugin.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/****************************************************************************
- * Copyright (c) 2010, University of Florida and others.
- *
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Max Billingsley III - initial API and implementation
- ****************************************************************************/
-package org.eclipse.cdt.managedbuilder.bupc.ui;
-
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-import org.osgi.framework.BundleContext;
-
-/**
- * Based on plugin class for PLDT Wizards (MPI & OpenMP)
- */
-public class UPCWizardsPlugin extends AbstractUIPlugin {
- //The shared instance.
- private static UPCWizardsPlugin plugin;
- //Resource bundle.
- private ResourceBundle resourceBundle;
-
- /**
- * The constructor.
- */
- public UPCWizardsPlugin() {
- super();
- plugin = this;
- }
-
- /**
- * This method is called upon plug-in activation
- */
- @Override
- public void start(BundleContext context) throws Exception {
- super.start(context);
- }
-
- /**
- * This method is called when the plug-in is stopped
- */
- @Override
- public void stop(BundleContext context) throws Exception {
- super.stop(context);
- plugin = null;
- resourceBundle = null;
- }
-
- /**
- * Returns the shared instance.
- */
- public static UPCWizardsPlugin getDefault() {
- return plugin;
- }
-
- /**
- * Returns the string from the plugin's resource bundle,
- * or 'key' if not found.
- */
- public static String getResourceString(String key) {
- ResourceBundle bundle = UPCWizardsPlugin.getDefault().getResourceBundle();
- try {
- return (bundle != null) ? bundle.getString(key) : key;
- } catch (MissingResourceException e) {
- return key;
- }
- }
-
- /**
- * Returns the plugin's resource bundle,
- */
- public ResourceBundle getResourceBundle() {
- try {
- if (resourceBundle == null)
- resourceBundle = ResourceBundle
- .getBundle("org.eclipse.cdt.managedbuilder.ui.tests.TestsPluginResources"); //$NON-NLS-1$
- } catch (MissingResourceException x) {
- resourceBundle = null;
- }
- return resourceBundle;
- }
-
- /**
- * Returns an image descriptor for the image file at the given
- * plug-in relative path.
- *
- * @param path the path
- * @return the image descriptor
- */
- public static ImageDescriptor getImageDescriptor(String path) {
- return AbstractUIPlugin.imageDescriptorFromPlugin("org.eclipse.cdt.managedbuilder.ui.tests", path); //$NON-NLS-1$
- }
-
- public static String getPluginId() {
- return "org.eclipse.ptp.pldt.upc.wizard"; //$NON-NLS-1$
- }
-}
diff --git a/upc/org.eclipse.cdt.managedbuilder.bupc.ui/templates/src/Basename.upc b/upc/org.eclipse.cdt.managedbuilder.bupc.ui/templates/src/Basename.upc
deleted file mode 100644
index e60a304291f..00000000000
--- a/upc/org.eclipse.cdt.managedbuilder.bupc.ui/templates/src/Basename.upc
+++ /dev/null
@@ -1,15 +0,0 @@
-/*
- ============================================================================
- Name : $(baseName).upc
- Author : $(author)
- Version :
- Copyright : $(copyright)
- Description : UPC Hello world program
- ============================================================================
-*/
-#include <upc.h>
-
-int main(int argc, char *argv[]) {
- printf("Hello, I am %d of %d.\n", MYTHREAD, THREADS);
- return 0;
-}
diff --git a/upc/org.eclipse.cdt.managedbuilder.bupc.ui/templates/template.properties b/upc/org.eclipse.cdt.managedbuilder.bupc.ui/templates/template.properties
deleted file mode 100644
index 772f31f9a80..00000000000
--- a/upc/org.eclipse.cdt.managedbuilder.bupc.ui/templates/template.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-HelloWorld.upcAnsitemplate.label=Hello World UPC Project
-HelloWorld.CAnsitemplate.description=A skeletal Managed C Hello World project. Creates a folder for sources and another for include.
-HelloWorld.basics.label=Basic Settings
-HelloWorld.basics.description=Basic properties of a project
-HelloWorld.author.label=Author
-HelloWorld.author.description=Name of the author
-HelloWorld.copyright.label=Copyright notice
-HelloWorld.copyright.description=Your copyright notice
-HelloWorld.copyright.default=Your copyright notice
-HelloWorld.message.default=Hello UPC World
-HelloWorld.message.description=Your hello world greeting message
-HelloWorld.message.label=Hello world greeting
-HelloWorld.sourceDir.label=Source
-HelloWorld.sourceDir.description=Directory for hello world project source files
-HelloWorld.sourceDir.default=src
diff --git a/upc/org.eclipse.cdt.managedbuilder.bupc.ui/templates/template.xml b/upc/org.eclipse.cdt.managedbuilder.bupc.ui/templates/template.xml
deleted file mode 100644
index ed7f5cc94f5..00000000000
--- a/upc/org.eclipse.cdt.managedbuilder.bupc.ui/templates/template.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<template type="ProjTempl" version="1.0" supplier="ppw@hcs.ufl.edu"
- revision="1.0" author="PPW group, HCS lab, University of Florida"
- copyright="Copyright (c) 2010, University of Florida"
- id="HelloWorldUPCProject" label="%HelloWorld.upcAnsitemplate.label"
- description="%HelloWorld.CAnsitemplate.description"
- help="help.html">
-
- <property-group id="basics" label="%HelloWorld.basics.label"
- description="%HelloWorld.basics.description"
- type="PAGES-ONLY" help="help.html">
- <property id="author"
- label="%HelloWorld.author.label"
- description="%HelloWorld.author.description"
- type="input"
- pattern=".*"
- default=""
- hidden="false"
- persist="true"/>
- <property id="copyright"
- label="%HelloWorld.copyright.label"
- description="%HelloWorld.copyright.description"
- type="input"
- pattern=".*"
- default="%HelloWorld.copyright.default"
- hidden="false"
- persist="true"/>
- <property id="message"
- label="%HelloWorld.message.label"
- description="%HelloWorld.message.description"
- type="input"
- pattern=".*"
- default="%HelloWorld.message.default"
- hidden="false"
- persist="true"/>
- <property id="sourceDir"
- label="%HelloWorld.sourceDir.label"
- description="%HelloWorld.sourceDir.description"
- type="input"
- default="%HelloWorld.sourceDir.default"
- pattern="[a-zA-Z0-9]+"
- mandatory="false"
- persist="true"/>
- </property-group>
-
- <process type="org.eclipse.cdt.managedbuilder.core.NewManagedProject">
- <simple name="name" value="$(projectName)" />
- <simple name="artifactExtension" value="exe" />
- <simple name="isCProject" value="true" />
- </process>
-
- <process type="org.eclipse.cdt.core.CreateSourceFolder">
- <simple name="projectName" value="$(projectName)"/>
- <simple name="path" value="$(sourceDir)"/>
- </process>
-
- <process type = "org.eclipse.cdt.core.AddFile">
- <simple name = "projectName" value="$(projectName)"/>
- <complex name="file">
- <simple name="source" value="src/Basename.upc"/>
- <simple name ="target" value ="$(sourceDir)/$(projectName).upc"/>
- <simple name ="replaceable" value="true"/>
- </complex>
- </process>
-</template> \ No newline at end of file
diff --git a/upc/pom.xml b/upc/pom.xml
deleted file mode 100644
index 7f50ccfd5b4..00000000000
--- a/upc/pom.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
- xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <groupId>org.eclipse.cdt</groupId>
- <artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
- </parent>
-
- <artifactId>org.eclipse.cdt.upc-parent</artifactId>
- <packaging>pom</packaging>
-</project>
diff --git a/util/org.eclipse.cdt.util/.classpath b/util/org.eclipse.cdt.util/.classpath
index 4f83b2397ec..e801ebfb468 100644
--- a/util/org.eclipse.cdt.util/.classpath
+++ b/util/org.eclipse.cdt.util/.classpath
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/util/org.eclipse.cdt.util/.project b/util/org.eclipse.cdt.util/.project
index e22b701caed..2567edce933 100644
--- a/util/org.eclipse.cdt.util/.project
+++ b/util/org.eclipse.cdt.util/.project
@@ -20,9 +20,15 @@
<arguments>
</arguments>
</buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.pde.PluginNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
</natures>
</projectDescription>
diff --git a/util/org.eclipse.cdt.util/.settings/org.eclipse.core.resources.prefs b/util/org.eclipse.cdt.util/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/util/org.eclipse.cdt.util/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/util/org.eclipse.cdt.util/.settings/org.eclipse.jdt.core.prefs b/util/org.eclipse.cdt.util/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/util/org.eclipse.cdt.util/.settings/org.eclipse.jdt.core.prefs
+++ b/util/org.eclipse.cdt.util/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/util/org.eclipse.cdt.util/.settings/org.eclipse.jdt.ui.prefs b/util/org.eclipse.cdt.util/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/util/org.eclipse.cdt.util/.settings/org.eclipse.jdt.ui.prefs
+++ b/util/org.eclipse.cdt.util/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/util/org.eclipse.cdt.util/META-INF/MANIFEST.MF b/util/org.eclipse.cdt.util/META-INF/MANIFEST.MF
index 3c2559e4464..94084dfbe38 100644
--- a/util/org.eclipse.cdt.util/META-INF/MANIFEST.MF
+++ b/util/org.eclipse.cdt.util/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.util;singleton:=true
-Bundle-Version: 5.0.101.qualifier
+Bundle-Version: 5.0.400.qualifier
Bundle-Vendor: %providerName
Require-Bundle: org.eclipse.cdt.core,
org.junit,
@@ -10,5 +10,5 @@ Require-Bundle: org.eclipse.cdt.core,
org.eclipse.core.resources
Export-Package: org.eclipse.cdt.internal.core.parser.util
Bundle-Localization: plugin
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Automatic-Module-Name: org.eclipse.cdt.util
diff --git a/util/org.eclipse.cdt.util/about.html b/util/org.eclipse.cdt.util/about.html
index 164f781a8fd..b3134865230 100644
--- a/util/org.eclipse.cdt.util/about.html
+++ b/util/org.eclipse.cdt.util/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/util/org.eclipse.cdt.util/about.mappings b/util/org.eclipse.cdt.util/about.mappings
index 0824105e69d..936a8039c3e 100644
--- a/util/org.eclipse.cdt.util/about.mappings
+++ b/util/org.eclipse.cdt.util/about.mappings
@@ -4,6 +4,6 @@
# This file does not need to be translated.
# The following should contain the build version.
-# e.g. "0=20020612"
-# This value will be added automaticaly via the build scripts
-0=@build@ \ No newline at end of file
+# e.g. "0=20200106-1728"
+# This value will be added automatically via the build scripts
+0=${buildId}
diff --git a/util/org.eclipse.cdt.util/src/org/eclipse/cdt/internal/core/parser/util/DOMSearchUtil.java b/util/org.eclipse.cdt.util/src/org/eclipse/cdt/internal/core/parser/util/DOMSearchUtil.java
index 4a27abe4e55..28dc5f580e4 100644
--- a/util/org.eclipse.cdt.util/src/org/eclipse/cdt/internal/core/parser/util/DOMSearchUtil.java
+++ b/util/org.eclipse.cdt.util/src/org/eclipse/cdt/internal/core/parser/util/DOMSearchUtil.java
@@ -137,7 +137,7 @@ public class DOMSearchUtil {
IBinding binding = searchName.resolveBinding();
if (binding instanceof IIndexBinding) {
- fail("Not implemented");
+ fail("Not implemented"); //$NON-NLS-1$
// try {
// ArrayList pdomNames = new ArrayList();
// IPDOMResolver pdom= ((PDOMBinding) binding).getPDOM();
diff --git a/util/pom.xml b/util/pom.xml
index c0a44c30d38..23400f25d44 100644
--- a/util/pom.xml
+++ b/util/pom.xml
@@ -1,4 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2017, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
@@ -7,7 +17,7 @@
<parent>
<groupId>org.eclipse.cdt</groupId>
<artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
+ <version>10.7.0-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.cdt.util-parent</artifactId>
diff --git a/visualizer/org.eclipse.cdt.visualizer-feature/.project b/visualizer/org.eclipse.cdt.visualizer-feature/.project
index 085bc9060c2..085bc9060c2 100755..100644
--- a/visualizer/org.eclipse.cdt.visualizer-feature/.project
+++ b/visualizer/org.eclipse.cdt.visualizer-feature/.project
diff --git a/visualizer/org.eclipse.cdt.visualizer-feature/.settings/org.eclipse.core.resources.prefs b/visualizer/org.eclipse.cdt.visualizer-feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/visualizer/org.eclipse.cdt.visualizer-feature/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/visualizer/org.eclipse.cdt.visualizer-feature/build.properties b/visualizer/org.eclipse.cdt.visualizer-feature/build.properties
index 5db1abf1669..5db1abf1669 100755..100644
--- a/visualizer/org.eclipse.cdt.visualizer-feature/build.properties
+++ b/visualizer/org.eclipse.cdt.visualizer-feature/build.properties
diff --git a/visualizer/org.eclipse.cdt.visualizer-feature/feature.xml b/visualizer/org.eclipse.cdt.visualizer-feature/feature.xml
index d9d070a6e84..cf12caba4b0 100644
--- a/visualizer/org.eclipse.cdt.visualizer-feature/feature.xml
+++ b/visualizer/org.eclipse.cdt.visualizer-feature/feature.xml
@@ -1,9 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2012, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<feature
id="org.eclipse.cdt.visualizer"
label="%featureName"
- version="9.10.0.qualifier"
+ version="10.7.0.qualifier"
provider-name="%providerName"
+ plugin="org.eclipse.cdt.visualizer.ui"
license-feature="org.eclipse.license"
license-feature-version="0.0.0">
diff --git a/visualizer/org.eclipse.cdt.visualizer.core/.classpath b/visualizer/org.eclipse.cdt.visualizer.core/.classpath
index 110168ffa19..df1b324f7f4 100755..100644
--- a/visualizer/org.eclipse.cdt.visualizer.core/.classpath
+++ b/visualizer/org.eclipse.cdt.visualizer.core/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="resources"/>
diff --git a/visualizer/org.eclipse.cdt.visualizer.core/.project b/visualizer/org.eclipse.cdt.visualizer.core/.project
index ea20711e014..ea20711e014 100755..100644
--- a/visualizer/org.eclipse.cdt.visualizer.core/.project
+++ b/visualizer/org.eclipse.cdt.visualizer.core/.project
diff --git a/visualizer/org.eclipse.cdt.visualizer.core/.settings/org.eclipse.core.resources.prefs b/visualizer/org.eclipse.cdt.visualizer.core/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/visualizer/org.eclipse.cdt.visualizer.core/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/visualizer/org.eclipse.cdt.visualizer.core/.settings/org.eclipse.jdt.core.prefs b/visualizer/org.eclipse.cdt.visualizer.core/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100755..100644
--- a/visualizer/org.eclipse.cdt.visualizer.core/.settings/org.eclipse.jdt.core.prefs
+++ b/visualizer/org.eclipse.cdt.visualizer.core/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/visualizer/org.eclipse.cdt.visualizer.core/.settings/org.eclipse.jdt.ui.prefs b/visualizer/org.eclipse.cdt.visualizer.core/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/visualizer/org.eclipse.cdt.visualizer.core/.settings/org.eclipse.jdt.ui.prefs
+++ b/visualizer/org.eclipse.cdt.visualizer.core/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/visualizer/org.eclipse.cdt.visualizer.core/ABOUT.txt b/visualizer/org.eclipse.cdt.visualizer.core/ABOUT.txt
index 23ee8d224da..23ee8d224da 100755..100644
--- a/visualizer/org.eclipse.cdt.visualizer.core/ABOUT.txt
+++ b/visualizer/org.eclipse.cdt.visualizer.core/ABOUT.txt
diff --git a/visualizer/org.eclipse.cdt.visualizer.core/META-INF/MANIFEST.MF b/visualizer/org.eclipse.cdt.visualizer.core/META-INF/MANIFEST.MF
index d70201c46e9..58e4c509860 100755..100644
--- a/visualizer/org.eclipse.cdt.visualizer.core/META-INF/MANIFEST.MF
+++ b/visualizer/org.eclipse.cdt.visualizer.core/META-INF/MANIFEST.MF
@@ -2,13 +2,13 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %plugin.name
Bundle-SymbolicName: org.eclipse.cdt.visualizer.core;singleton:=true
-Bundle-Version: 1.0.100.qualifier
+Bundle-Version: 1.1.200.qualifier
Bundle-Activator: org.eclipse.cdt.visualizer.core.plugin.CDTVisualizerCorePlugin
Bundle-Vendor: %provider.name
Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime,
org.eclipse.core.resources
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-ActivationPolicy: lazy
Bundle-Localization: plugin
Export-Package: org.eclipse.cdt.visualizer.core,
diff --git a/visualizer/org.eclipse.cdt.visualizer.core/about.html b/visualizer/org.eclipse.cdt.visualizer.core/about.html
index 164f781a8fd..b3134865230 100644
--- a/visualizer/org.eclipse.cdt.visualizer.core/about.html
+++ b/visualizer/org.eclipse.cdt.visualizer.core/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/visualizer/org.eclipse.cdt.visualizer.core/build.properties b/visualizer/org.eclipse.cdt.visualizer.core/build.properties
index e704e5c8246..e704e5c8246 100755..100644
--- a/visualizer/org.eclipse.cdt.visualizer.core/build.properties
+++ b/visualizer/org.eclipse.cdt.visualizer.core/build.properties
diff --git a/visualizer/org.eclipse.cdt.visualizer.core/src/org/eclipse/cdt/visualizer/core/ExtensionElement.java b/visualizer/org.eclipse.cdt.visualizer.core/src/org/eclipse/cdt/visualizer/core/ExtensionElement.java
index 49e4bdce1f7..59e1a272d33 100755..100644
--- a/visualizer/org.eclipse.cdt.visualizer.core/src/org/eclipse/cdt/visualizer/core/ExtensionElement.java
+++ b/visualizer/org.eclipse.cdt.visualizer.core/src/org/eclipse/cdt/visualizer/core/ExtensionElement.java
@@ -67,7 +67,7 @@ public class ExtensionElement {
/** Creates and returns instance of implementing class, using class name found in "class" attribute. */
public <T> T getClassAttribute() {
- return getClassAttribute("class");
+ return getClassAttribute("class"); //$NON-NLS-1$
}
/** Creates and returns instance of implementing class, using class name found in specified attribute. */
diff --git a/visualizer/org.eclipse.cdt.visualizer.core/src/org/eclipse/cdt/visualizer/core/ResourceManager.java b/visualizer/org.eclipse.cdt.visualizer.core/src/org/eclipse/cdt/visualizer/core/ResourceManager.java
index 4770ee46351..f5135173c7c 100755..100644
--- a/visualizer/org.eclipse.cdt.visualizer.core/src/org/eclipse/cdt/visualizer/core/ResourceManager.java
+++ b/visualizer/org.eclipse.cdt.visualizer.core/src/org/eclipse/cdt/visualizer/core/ResourceManager.java
@@ -56,7 +56,7 @@ public class ResourceManager {
* Assumes string resources are in the file "messages.properties".
*/
public ResourceManager(Plugin plugin) {
- this(plugin, "messages.properties");
+ this(plugin, "messages.properties"); //$NON-NLS-1$
}
/** Constructor */
@@ -102,7 +102,7 @@ public class ResourceManager {
String filename = m_stringResourceFilename;
// The ".properties" extension is assumed, so we trim it here
- String propertiesExtension = ".properties";
+ String propertiesExtension = ".properties"; //$NON-NLS-1$
if (filename.endsWith(propertiesExtension)) {
filename = filename.substring(0, filename.length() - propertiesExtension.length());
}
@@ -116,7 +116,7 @@ public class ResourceManager {
// we'll check for .properties file first
// in the same directory as the plugin activator class
- String propertyFileName1 = m_pluginID + ".plugin." + filename;
+ String propertyFileName1 = m_pluginID + ".plugin." + filename; //$NON-NLS-1$
try {
m_stringResources = ResourceBundle.getBundle(propertyFileName1, locale, classLoader);
} catch (MissingResourceException e) {
@@ -155,7 +155,7 @@ public class ResourceManager {
if (strings == null) {
// if we can't get the registry, display the key instead,
// so we know what's missing (e.g. the .properties file)
- result = "(" + key + ")";
+ result = "(" + key + ")"; //$NON-NLS-1$ //$NON-NLS-2$
} else {
try {
result = strings.getString(key);
@@ -175,7 +175,7 @@ public class ResourceManager {
// if we still fail, display the key instead,
// so we know what's missing
if (result == null)
- result = "[" + key + "]";
+ result = "[" + key + "]"; //$NON-NLS-1$ //$NON-NLS-2$
return result;
}
diff --git a/visualizer/org.eclipse.cdt.visualizer.core/src/org/eclipse/cdt/visualizer/core/plugin/CDTVisualizerCorePlugin.java b/visualizer/org.eclipse.cdt.visualizer.core/src/org/eclipse/cdt/visualizer/core/plugin/CDTVisualizerCorePlugin.java
index b696de4dc26..b696de4dc26 100755..100644
--- a/visualizer/org.eclipse.cdt.visualizer.core/src/org/eclipse/cdt/visualizer/core/plugin/CDTVisualizerCorePlugin.java
+++ b/visualizer/org.eclipse.cdt.visualizer.core/src/org/eclipse/cdt/visualizer/core/plugin/CDTVisualizerCorePlugin.java
diff --git a/visualizer/org.eclipse.cdt.visualizer.examples/.classpath b/visualizer/org.eclipse.cdt.visualizer.examples/.classpath
index 110168ffa19..df1b324f7f4 100644
--- a/visualizer/org.eclipse.cdt.visualizer.examples/.classpath
+++ b/visualizer/org.eclipse.cdt.visualizer.examples/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="resources"/>
diff --git a/visualizer/org.eclipse.cdt.visualizer.examples/.settings/org.eclipse.core.resources.prefs b/visualizer/org.eclipse.cdt.visualizer.examples/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/visualizer/org.eclipse.cdt.visualizer.examples/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/visualizer/org.eclipse.cdt.visualizer.examples/.settings/org.eclipse.jdt.core.prefs b/visualizer/org.eclipse.cdt.visualizer.examples/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/visualizer/org.eclipse.cdt.visualizer.examples/.settings/org.eclipse.jdt.core.prefs
+++ b/visualizer/org.eclipse.cdt.visualizer.examples/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/visualizer/org.eclipse.cdt.visualizer.examples/.settings/org.eclipse.jdt.ui.prefs b/visualizer/org.eclipse.cdt.visualizer.examples/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/visualizer/org.eclipse.cdt.visualizer.examples/.settings/org.eclipse.jdt.ui.prefs
+++ b/visualizer/org.eclipse.cdt.visualizer.examples/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/visualizer/org.eclipse.cdt.visualizer.examples/META-INF/MANIFEST.MF b/visualizer/org.eclipse.cdt.visualizer.examples/META-INF/MANIFEST.MF
index a0a48f39e28..cae6f708d1c 100644
--- a/visualizer/org.eclipse.cdt.visualizer.examples/META-INF/MANIFEST.MF
+++ b/visualizer/org.eclipse.cdt.visualizer.examples/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %plugin.name
Bundle-SymbolicName: org.eclipse.cdt.visualizer.examples;singleton:=true
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 1.0.100.qualifier
Bundle-Activator: org.eclipse.cdt.visualizer.examples.VisualizerExamplesPlugin
Bundle-Vendor: %provider.name
Require-Bundle: org.eclipse.ui,
@@ -11,9 +11,10 @@ Require-Bundle: org.eclipse.ui,
org.eclipse.jface.text,
org.eclipse.cdt.visualizer.ui,
org.eclipse.cdt.visualizer.core
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-ActivationPolicy: lazy
Export-Package: org.eclipse.cdt.visualizer.examples,
org.eclipse.cdt.visualizer.examples.problemvisualizer,
org.eclipse.cdt.visualizer.examples.sourcegraph
Automatic-Module-Name: org.eclipse.cdt.visualizer.examples
+Bundle-Localization: plugin
diff --git a/visualizer/org.eclipse.cdt.visualizer.examples/about.html b/visualizer/org.eclipse.cdt.visualizer.examples/about.html
index 164f781a8fd..b3134865230 100644
--- a/visualizer/org.eclipse.cdt.visualizer.examples/about.html
+++ b/visualizer/org.eclipse.cdt.visualizer.examples/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/visualizer/org.eclipse.cdt.visualizer.examples/build.properties b/visualizer/org.eclipse.cdt.visualizer.examples/build.properties
index aff27c032a4..964f0f110f6 100644
--- a/visualizer/org.eclipse.cdt.visualizer.examples/build.properties
+++ b/visualizer/org.eclipse.cdt.visualizer.examples/build.properties
@@ -3,5 +3,7 @@ source.. = src/,\
output.. = bin/
bin.includes = META-INF/,\
.,\
- plugin.xml
+ plugin.properties,\
+ plugin.xml,\
+ about.html
src.includes = about.html
diff --git a/visualizer/org.eclipse.cdt.visualizer.ui/.classpath b/visualizer/org.eclipse.cdt.visualizer.ui/.classpath
index 110168ffa19..df1b324f7f4 100755..100644
--- a/visualizer/org.eclipse.cdt.visualizer.ui/.classpath
+++ b/visualizer/org.eclipse.cdt.visualizer.ui/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="resources"/>
diff --git a/visualizer/org.eclipse.cdt.visualizer.ui/.project b/visualizer/org.eclipse.cdt.visualizer.ui/.project
index e89059272ad..e89059272ad 100755..100644
--- a/visualizer/org.eclipse.cdt.visualizer.ui/.project
+++ b/visualizer/org.eclipse.cdt.visualizer.ui/.project
diff --git a/visualizer/org.eclipse.cdt.visualizer.ui/.settings/org.eclipse.core.resources.prefs b/visualizer/org.eclipse.cdt.visualizer.ui/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/visualizer/org.eclipse.cdt.visualizer.ui/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/visualizer/org.eclipse.cdt.visualizer.ui/.settings/org.eclipse.jdt.core.prefs b/visualizer/org.eclipse.cdt.visualizer.ui/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100755..100644
--- a/visualizer/org.eclipse.cdt.visualizer.ui/.settings/org.eclipse.jdt.core.prefs
+++ b/visualizer/org.eclipse.cdt.visualizer.ui/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/visualizer/org.eclipse.cdt.visualizer.ui/.settings/org.eclipse.jdt.ui.prefs b/visualizer/org.eclipse.cdt.visualizer.ui/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/visualizer/org.eclipse.cdt.visualizer.ui/.settings/org.eclipse.jdt.ui.prefs
+++ b/visualizer/org.eclipse.cdt.visualizer.ui/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/visualizer/org.eclipse.cdt.visualizer.ui/ABOUT.txt b/visualizer/org.eclipse.cdt.visualizer.ui/ABOUT.txt
index ad3479a9a4a..ad3479a9a4a 100755..100644
--- a/visualizer/org.eclipse.cdt.visualizer.ui/ABOUT.txt
+++ b/visualizer/org.eclipse.cdt.visualizer.ui/ABOUT.txt
diff --git a/visualizer/org.eclipse.cdt.visualizer.ui/META-INF/MANIFEST.MF b/visualizer/org.eclipse.cdt.visualizer.ui/META-INF/MANIFEST.MF
index ea8e6241f30..ef534b6bbcf 100755..100644
--- a/visualizer/org.eclipse.cdt.visualizer.ui/META-INF/MANIFEST.MF
+++ b/visualizer/org.eclipse.cdt.visualizer.ui/META-INF/MANIFEST.MF
@@ -2,14 +2,14 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %plugin.name
Bundle-SymbolicName: org.eclipse.cdt.visualizer.ui;singleton:=true
-Bundle-Version: 1.3.100.qualifier
+Bundle-Version: 1.4.400.qualifier
Bundle-Activator: org.eclipse.cdt.visualizer.ui.plugin.CDTVisualizerUIPlugin
Bundle-Vendor: %provider.name
Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime,
org.eclipse.cdt.visualizer.core,
org.eclipse.core.resources
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-ActivationPolicy: lazy
Bundle-Localization: plugin
Export-Package: org.eclipse.cdt.visualizer.ui,
diff --git a/visualizer/org.eclipse.cdt.visualizer.ui/about.html b/visualizer/org.eclipse.cdt.visualizer.ui/about.html
index 164f781a8fd..b3134865230 100644
--- a/visualizer/org.eclipse.cdt.visualizer.ui/about.html
+++ b/visualizer/org.eclipse.cdt.visualizer.ui/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/visualizer/org.eclipse.cdt.visualizer.ui/about.ini b/visualizer/org.eclipse.cdt.visualizer.ui/about.ini
new file mode 100644
index 00000000000..e07a7bb377e
--- /dev/null
+++ b/visualizer/org.eclipse.cdt.visualizer.ui/about.ini
@@ -0,0 +1,24 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%blurb
+
+# Property "windowImage" contains path to window icon (16x16)
+# needed for primary features only
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=cdt_logo_icon32.png
+
+# Property "aboutImage" contains path to product image (500x330 or 115x164)
+# needed for primary features only
+
+# Property "appName" contains name of the application (translated)
+# needed for primary features only
+
+# Property "welcomePerspective" contains the id of the perspective in which the
+# welcome page is to be opened.
+# optional
diff --git a/visualizer/org.eclipse.cdt.visualizer.ui/about.mappings b/visualizer/org.eclipse.cdt.visualizer.ui/about.mappings
new file mode 100644
index 00000000000..936a8039c3e
--- /dev/null
+++ b/visualizer/org.eclipse.cdt.visualizer.ui/about.mappings
@@ -0,0 +1,9 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+# The following should contain the build version.
+# e.g. "0=20200106-1728"
+# This value will be added automatically via the build scripts
+0=${buildId}
diff --git a/visualizer/org.eclipse.cdt.visualizer.ui/about.properties b/visualizer/org.eclipse.cdt.visualizer.ui/about.properties
new file mode 100644
index 00000000000..460f20b7867
--- /dev/null
+++ b/visualizer/org.eclipse.cdt.visualizer.ui/about.properties
@@ -0,0 +1,32 @@
+###############################################################################
+# Copyright (c) 2012, 2022 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+# about.properties
+# contains externalized strings for about.ini
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# fill-ins are supplied by about.mappings
+# This file should be translated.
+# NOTE TO TRANSLATOR: Please do not translate the featureVersion variable.
+
+
+blurb=C/C++ Visualizer Framework\n\
+\n\
+Version: {featureVersion}\n\
+Build id: {0}\n\
+\n\
+Copyright (c) 2012, 2022 Contributors to the Eclipse Foundation
+\n\
+See the NOTICE file(s) distributed with this work for additional\n\
+information regarding copyright ownership.\n\
+\n\
+Visit http://www.eclipse.org/cdt
diff --git a/visualizer/org.eclipse.cdt.visualizer.ui/build.properties b/visualizer/org.eclipse.cdt.visualizer.ui/build.properties
index faff1b3cc02..e693459a510 100755..100644
--- a/visualizer/org.eclipse.cdt.visualizer.ui/build.properties
+++ b/visualizer/org.eclipse.cdt.visualizer.ui/build.properties
@@ -21,5 +21,9 @@ bin.includes = META-INF/,\
plugin.properties,\
about.html,\
icons/,\
- plugin.xml
+ plugin.xml,\
+ about.ini,\
+ about.mappings,\
+ about.properties,\
+ cdt_logo_icon32.png
src.includes = about.html
diff --git a/visualizer/org.eclipse.cdt.visualizer.ui/cdt_logo_icon32.png b/visualizer/org.eclipse.cdt.visualizer.ui/cdt_logo_icon32.png
new file mode 100644
index 00000000000..470ca81b327
--- /dev/null
+++ b/visualizer/org.eclipse.cdt.visualizer.ui/cdt_logo_icon32.png
Binary files differ
diff --git a/visualizer/org.eclipse.cdt.visualizer.ui/icons/full/view16/visualizer_view.png b/visualizer/org.eclipse.cdt.visualizer.ui/icons/full/view16/visualizer_view.png
index c7d0e9f44a5..c7d0e9f44a5 100755..100644
--- a/visualizer/org.eclipse.cdt.visualizer.ui/icons/full/view16/visualizer_view.png
+++ b/visualizer/org.eclipse.cdt.visualizer.ui/icons/full/view16/visualizer_view.png
Binary files differ
diff --git a/visualizer/org.eclipse.cdt.visualizer.ui/plugin.xml b/visualizer/org.eclipse.cdt.visualizer.ui/plugin.xml
index 5b5ea5e7d9c..5b5ea5e7d9c 100755..100644
--- a/visualizer/org.eclipse.cdt.visualizer.ui/plugin.xml
+++ b/visualizer/org.eclipse.cdt.visualizer.ui/plugin.xml
diff --git a/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/Visualizer.java b/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/Visualizer.java
index 0e2b856c257..0e2b856c257 100755..100644
--- a/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/Visualizer.java
+++ b/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/Visualizer.java
diff --git a/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/VisualizerAction.java b/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/VisualizerAction.java
index acfe3611efb..acfe3611efb 100755..100644
--- a/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/VisualizerAction.java
+++ b/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/VisualizerAction.java
diff --git a/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/VisualizerViewer.java b/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/VisualizerViewer.java
index 2aa59e9a0e6..b4330d49d36 100644
--- a/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/VisualizerViewer.java
+++ b/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/VisualizerViewer.java
@@ -274,7 +274,7 @@ public class VisualizerViewer extends PageBook
if (visualizers != null) {
for (Extension e : visualizers) {
- String id = e.getAttribute("id");
+ String id = e.getAttribute("id"); //$NON-NLS-1$
IVisualizer visualizerInstance = e.getClassAttribute();
if (id != null && visualizerInstance != null) {
// Add visualizer's control to viewer's "pagebook" of controls.
@@ -412,8 +412,8 @@ public class VisualizerViewer extends PageBook
public void paint(GC gc) {
gc.fillRectangle(getClientArea());
if (m_visualizers == null || m_visualizers.size() == 0) {
- String noVisualizersMessage = CDTVisualizerUIPlugin.getString("VisualizerViewer.no.visualizers.defined");
- gc.drawString("(" + noVisualizersMessage + ")", 10, 10);
+ String noVisualizersMessage = CDTVisualizerUIPlugin.getString("VisualizerViewer.no.visualizers.defined"); //$NON-NLS-1$
+ gc.drawString("(" + noVisualizersMessage + ")", 10, 10); //$NON-NLS-1$ //$NON-NLS-2$
}
}
diff --git a/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/canvas/BufferedCanvas.java b/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/canvas/BufferedCanvas.java
index 7264a15c8f4..fec929bfd5b 100755..100644
--- a/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/canvas/BufferedCanvas.java
+++ b/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/canvas/BufferedCanvas.java
@@ -165,7 +165,8 @@ public class BufferedCanvas extends Canvas implements PaintListener, ControlList
} catch (Throwable t) {
// Throwing an exception in painting code can hang Eclipse,
// so catch any exceptions here.
- System.err.println("BufferedCanvas: Exception thrown in painting code: \n" + t);
+ System.err.println("BufferedCanvas: Exception thrown in painting code: \n"); //$NON-NLS-1$
+ t.printStackTrace(System.err);
}
// then copy image buffer to actual canvas (reduces repaint flickering)
diff --git a/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/canvas/GraphicCanvas.java b/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/canvas/GraphicCanvas.java
index 28c5da4b28b..28c5da4b28b 100755..100644
--- a/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/canvas/GraphicCanvas.java
+++ b/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/canvas/GraphicCanvas.java
diff --git a/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/canvas/GraphicObject.java b/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/canvas/GraphicObject.java
index eb466698966..eb466698966 100755..100644
--- a/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/canvas/GraphicObject.java
+++ b/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/canvas/GraphicObject.java
diff --git a/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/canvas/IGraphicObject.java b/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/canvas/IGraphicObject.java
index c833ae0e742..c833ae0e742 100755..100644
--- a/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/canvas/IGraphicObject.java
+++ b/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/canvas/IGraphicObject.java
diff --git a/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/canvas/VirtualBoundsGraphicObject.java b/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/canvas/VirtualBoundsGraphicObject.java
index 2381c74fd7e..cede9d4a497 100644
--- a/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/canvas/VirtualBoundsGraphicObject.java
+++ b/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/canvas/VirtualBoundsGraphicObject.java
@@ -97,7 +97,7 @@ public class VirtualBoundsGraphicObject extends GraphicObject {
/** Returns string representation. */
@Override
public String toString() {
- return String.format("Class: %s, Real bounds: %s, Virtual bounds: %s" + ", Draw container bounds: %s ",
+ return String.format("Class: %s, Real bounds: %s, Virtual bounds: %s, Draw container bounds: %s ", //$NON-NLS-1$
this.getClass().getSimpleName(), this.getBounds().toString(), m_virtualBounds.toString(),
m_drawContainerBounds);
}
@@ -211,16 +211,16 @@ public class VirtualBoundsGraphicObject extends GraphicObject {
/** Performs a sanity check of the virtual bounds of this object */
private void checkVirtualBounds() {
if (m_virtualBounds.x < 0) {
- throw new IllegalArgumentException("Illegal x: " + m_virtualBounds.x);
+ throw new IllegalArgumentException("Illegal x: " + m_virtualBounds.x); //$NON-NLS-1$
}
if (m_virtualBounds.y < 0) {
- throw new IllegalArgumentException("Illegal y: " + m_virtualBounds.y);
+ throw new IllegalArgumentException("Illegal y: " + m_virtualBounds.y); //$NON-NLS-1$
}
if (m_virtualBounds.width <= 0) {
- throw new IllegalArgumentException("Illegal width: " + m_virtualBounds.width);
+ throw new IllegalArgumentException("Illegal width: " + m_virtualBounds.width); //$NON-NLS-1$
}
if (m_virtualBounds.height <= 0) {
- throw new IllegalArgumentException("Illegal height: " + m_virtualBounds.height);
+ throw new IllegalArgumentException("Illegal height: " + m_virtualBounds.height); //$NON-NLS-1$
}
}
diff --git a/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/events/VisualizerViewerEvent.java b/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/events/VisualizerViewerEvent.java
index 60264332124..cbe0fd93618 100644
--- a/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/events/VisualizerViewerEvent.java
+++ b/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/events/VisualizerViewerEvent.java
@@ -66,10 +66,10 @@ public class VisualizerViewerEvent extends Event {
/** Converts event type to string */
@Override
public String typeToString(int type) {
- String result = "";
+ String result = ""; //$NON-NLS-1$
switch (type) {
case VISUALIZER_CHANGED:
- result = "VISUALIZER_CHANGED";
+ result = "VISUALIZER_CHANGED"; //$NON-NLS-1$
break;
default:
result = super.typeToString(type);
diff --git a/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/plugin/CDTVisualizerUIPlugin.java b/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/plugin/CDTVisualizerUIPlugin.java
index cdac0456c95..cdac0456c95 100755..100644
--- a/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/plugin/CDTVisualizerUIPlugin.java
+++ b/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/plugin/CDTVisualizerUIPlugin.java
diff --git a/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/test/TestCanvas.java b/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/test/TestCanvas.java
index d6e3e273943..3f2698eed84 100755..100644
--- a/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/test/TestCanvas.java
+++ b/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/test/TestCanvas.java
@@ -93,7 +93,7 @@ public class TestCanvas extends GraphicCanvas {
/** Draw string, wrapping if there are any newline chars. */
public static void drawStringWrapNewlines(GC gc, String text, int x, int y, int lineHeight) {
if (text != null) {
- String[] lines = text.split("\n");
+ String[] lines = text.split("\n"); //$NON-NLS-1$
for (int i = 0; i < lines.length; i++) {
gc.drawString(lines[i], x, y, true); // transparent
y += lineHeight;
diff --git a/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/test/TestCanvasVisualizer.java b/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/test/TestCanvasVisualizer.java
index e6b68efd022..dee40d8ff6c 100644
--- a/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/test/TestCanvasVisualizer.java
+++ b/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/test/TestCanvasVisualizer.java
@@ -34,7 +34,7 @@ public class TestCanvasVisualizer extends GraphicCanvasVisualizer {
// --- constants ---
/** Eclipse ID for this visualizer */
- public static final String ECLIPSE_ID = "org.eclipse.cdt.visualizer.ui.test.TestCanvasVisualizer";
+ public static final String ECLIPSE_ID = "org.eclipse.cdt.visualizer.ui.test.TestCanvasVisualizer"; //$NON-NLS-1$
// --- members ---
@@ -55,7 +55,7 @@ public class TestCanvasVisualizer extends GraphicCanvasVisualizer {
/** Returns non-localized unique name for this visualizer. */
@Override
public String getName() {
- return "default";
+ return "default"; //$NON-NLS-1$
}
/** Returns localized name to display for this visualizer. */
diff --git a/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/util/Colors.java b/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/util/Colors.java
index 3425aaf5897..3425aaf5897 100755..100644
--- a/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/util/Colors.java
+++ b/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/util/Colors.java
diff --git a/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/util/Event.java b/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/util/Event.java
index f13e0973b63..14b3df83a92 100755..100644
--- a/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/util/Event.java
+++ b/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/util/Event.java
@@ -61,23 +61,23 @@ public class Event {
public String toString() {
StringBuilder result = new StringBuilder();
result.append(getClass().getSimpleName());
- result.append("[");
+ result.append("["); //$NON-NLS-1$
if (m_type != UNDEFINED) {
result.append(typeToString(m_type));
}
- result.append("]");
+ result.append("]"); //$NON-NLS-1$
return result.toString();
}
/** Converts event type to string */
public String typeToString(int type) {
- String result = "";
+ String result = ""; //$NON-NLS-1$
switch (type) {
case UNDEFINED:
- result = "UNDEFINED";
+ result = "UNDEFINED"; //$NON-NLS-1$
break;
default:
- result = "OTHER(" + type + ")";
+ result = "OTHER(" + type + ")"; //$NON-NLS-1$ //$NON-NLS-2$
break;
}
return result;
diff --git a/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/util/GUIUtils.java b/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/util/GUIUtils.java
index 9fdc311ec4f..9fdc311ec4f 100755..100644
--- a/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/util/GUIUtils.java
+++ b/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/util/GUIUtils.java
diff --git a/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/util/ListenerList.java b/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/util/ListenerList.java
index a2352fac2a0..a2352fac2a0 100755..100644
--- a/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/util/ListenerList.java
+++ b/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/util/ListenerList.java
diff --git a/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/util/SelectionManager.java b/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/util/SelectionManager.java
index 8dcf478f26e..8dcf478f26e 100755..100644
--- a/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/util/SelectionManager.java
+++ b/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/util/SelectionManager.java
diff --git a/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/util/SelectionProviderAdapter.java b/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/util/SelectionProviderAdapter.java
index f516f443db0..f516f443db0 100755..100644
--- a/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/util/SelectionProviderAdapter.java
+++ b/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/util/SelectionProviderAdapter.java
diff --git a/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/util/Timer.java b/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/util/Timer.java
index cbd06119ccb..cbd06119ccb 100755..100644
--- a/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/util/Timer.java
+++ b/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/util/Timer.java
diff --git a/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/util/UIResourceManager.java b/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/util/UIResourceManager.java
index 8a3b2eacc15..69096cfcaee 100755..100644
--- a/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/util/UIResourceManager.java
+++ b/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/util/UIResourceManager.java
@@ -258,7 +258,7 @@ public class UIResourceManager extends ResourceManager {
/** Gets/creates font with specified properties */
protected Font getCachedFont(String fontName, int height, int style) {
Font result = null;
- String fontID = fontName + "," + height + "," + style;
+ String fontID = fontName + "," + height + "," + style; //$NON-NLS-1$ //$NON-NLS-2$
// look for the cached font (this checks the parent manager too)
result = getCachedFont(fontID);
@@ -333,7 +333,7 @@ public class UIResourceManager extends ResourceManager {
/** Gets/creates color with specified properties */
protected Color getCachedColor(int red, int green, int blue) {
Color result = null;
- String colorID = "Color[R=" + red + ",G=" + green + ",B=" + blue + "]";
+ String colorID = "Color[R=" + red + ",G=" + green + ",B=" + blue + "]"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
// look for the cached color (this checks the parent manager too)
result = getCachedColor(colorID);
diff --git a/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/util/WorkbenchSelectionAdapter.java b/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/util/WorkbenchSelectionAdapter.java
index 8f557ee171d..8f557ee171d 100755..100644
--- a/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/util/WorkbenchSelectionAdapter.java
+++ b/visualizer/org.eclipse.cdt.visualizer.ui/src/org/eclipse/cdt/visualizer/ui/util/WorkbenchSelectionAdapter.java
diff --git a/visualizer/pom.xml b/visualizer/pom.xml
index 79725f1b41a..43bfc05162e 100644
--- a/visualizer/pom.xml
+++ b/visualizer/pom.xml
@@ -1,4 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2017, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
@@ -7,7 +17,7 @@
<parent>
<groupId>org.eclipse.cdt</groupId>
<artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
+ <version>10.7.0-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.cdt.visualizer-parent</artifactId>
diff --git a/windows/org.eclipse.cdt.msw-feature/.settings/org.eclipse.core.resources.prefs b/windows/org.eclipse.cdt.msw-feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/windows/org.eclipse.cdt.msw-feature/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/windows/org.eclipse.cdt.msw-feature/feature.properties b/windows/org.eclipse.cdt.msw-feature/feature.properties
index 029c3420ba3..88815012758 100644
--- a/windows/org.eclipse.cdt.msw-feature/feature.properties
+++ b/windows/org.eclipse.cdt.msw-feature/feature.properties
@@ -19,7 +19,7 @@
# This file should be translated.
# "featureName" property - name of the feature
-featureName=C/C++ Visual C++ Support
+featureName=C/C++ Visual C++ Support (experimental)
# "providerName" property - name of the company that provides the feature
providerName=Eclipse CDT
diff --git a/windows/org.eclipse.cdt.msw-feature/feature.xml b/windows/org.eclipse.cdt.msw-feature/feature.xml
index f18cf36ca2d..ec631b81fbc 100644
--- a/windows/org.eclipse.cdt.msw-feature/feature.xml
+++ b/windows/org.eclipse.cdt.msw-feature/feature.xml
@@ -1,9 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2010, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<feature
id="org.eclipse.cdt.msw"
- label="C/C++ Visual C++ Support"
- version="9.10.0.qualifier"
- provider-name="Eclipse CDT"
+ label="%featureName"
+ version="10.7.0.qualifier"
+ provider-name="%providerName"
+ plugin="org.eclipse.cdt.msw.build"
license-feature="org.eclipse.license"
license-feature-version="0.0.0">
diff --git a/windows/org.eclipse.cdt.msw.build.tests/.classpath b/windows/org.eclipse.cdt.msw.build.tests/.classpath
index 3e5654f17eb..a42a828e04a 100644
--- a/windows/org.eclipse.cdt.msw.build.tests/.classpath
+++ b/windows/org.eclipse.cdt.msw.build.tests/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src">
<attributes>
diff --git a/windows/org.eclipse.cdt.msw.build.tests/.settings/org.eclipse.core.resources.prefs b/windows/org.eclipse.cdt.msw.build.tests/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/windows/org.eclipse.cdt.msw.build.tests/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/windows/org.eclipse.cdt.msw.build.tests/.settings/org.eclipse.jdt.core.prefs b/windows/org.eclipse.cdt.msw.build.tests/.settings/org.eclipse.jdt.core.prefs
index ad05599159f..5b1c443114d 100644
--- a/windows/org.eclipse.cdt.msw.build.tests/.settings/org.eclipse.jdt.core.prefs
+++ b/windows/org.eclipse.cdt.msw.build.tests/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/windows/org.eclipse.cdt.msw.build.tests/.settings/org.eclipse.jdt.ui.prefs b/windows/org.eclipse.cdt.msw.build.tests/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/windows/org.eclipse.cdt.msw.build.tests/.settings/org.eclipse.jdt.ui.prefs
+++ b/windows/org.eclipse.cdt.msw.build.tests/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/windows/org.eclipse.cdt.msw.build.tests/META-INF/MANIFEST.MF b/windows/org.eclipse.cdt.msw.build.tests/META-INF/MANIFEST.MF
index 3b37214829d..9e7fd218125 100644
--- a/windows/org.eclipse.cdt.msw.build.tests/META-INF/MANIFEST.MF
+++ b/windows/org.eclipse.cdt.msw.build.tests/META-INF/MANIFEST.MF
@@ -1,11 +1,11 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
-Bundle-Name: MSVC Build Integration Plug-in Tests
+Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.msw.build.tests
Bundle-Version: 1.0.0.qualifier
-Bundle-Vendor: Eclipse CDT
+Bundle-Vendor: %providerName
Automatic-Module-Name: org.eclipse.cdt.msw.build.tests
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Require-Bundle: org.eclipse.core.runtime;bundle-version="3.15.0",
org.eclipse.core.resources;bundle-version="3.13.0",
org.eclipse.cdt.core;bundle-version="6.8.0",
@@ -14,3 +14,4 @@ Require-Bundle: org.eclipse.core.runtime;bundle-version="3.15.0",
org.junit,
org.eclipse.cdt.msw.build
Export-Package: org.eclipse.cdt.internal.msw.build.tests;x-internal:=true
+Bundle-Localization: plugin
diff --git a/windows/org.eclipse.cdt.msw.build.tests/about.html b/windows/org.eclipse.cdt.msw.build.tests/about.html
index 164f781a8fd..b3134865230 100644
--- a/windows/org.eclipse.cdt.msw.build.tests/about.html
+++ b/windows/org.eclipse.cdt.msw.build.tests/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/windows/org.eclipse.cdt.msw.build.tests/build.properties b/windows/org.eclipse.cdt.msw.build.tests/build.properties
index 774eb143934..86cda4414f3 100644
--- a/windows/org.eclipse.cdt.msw.build.tests/build.properties
+++ b/windows/org.eclipse.cdt.msw.build.tests/build.properties
@@ -1,5 +1,7 @@
source.. = src/
output.. = bin/
bin.includes = META-INF/,\
- .
+ plugin.properties,\
+ .,\
+ about.html
src.includes = about.html
diff --git a/windows/org.eclipse.cdt.msw.build.tests/plugin.properties b/windows/org.eclipse.cdt.msw.build.tests/plugin.properties
new file mode 100644
index 00000000000..5374456e6ab
--- /dev/null
+++ b/windows/org.eclipse.cdt.msw.build.tests/plugin.properties
@@ -0,0 +1,14 @@
+##################################################################################
+# Copyright (c) 2020 Torbjörn Svensson and others. All rights reserved.
+# This program and the accompanying materials are made available under the terms
+# of the Eclipse Public License 2.0 which accompanies this distribution, and is
+# available at https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Torbjörn Svensson - initial API and implementation
+##################################################################################
+
+pluginName = MSVC Build Integration Plug-in Tests
+providerName = Eclipse CDT
diff --git a/windows/org.eclipse.cdt.msw.build.tests/src/org/eclipse/cdt/internal/msw/build/tests/MSVCBuildCommandParserTests.java b/windows/org.eclipse.cdt.msw.build.tests/src/org/eclipse/cdt/internal/msw/build/tests/MSVCBuildCommandParserTests.java
index b0fd474150b..87e86fed4b1 100644
--- a/windows/org.eclipse.cdt.msw.build.tests/src/org/eclipse/cdt/internal/msw/build/tests/MSVCBuildCommandParserTests.java
+++ b/windows/org.eclipse.cdt.msw.build.tests/src/org/eclipse/cdt/internal/msw/build/tests/MSVCBuildCommandParserTests.java
@@ -231,7 +231,7 @@ public class MSVCBuildCommandParserTests {
}
/**
- * Parse /imsvc (clang-cl)
+ * Parse /imsvc, /clang:isystem (clang-cl)
*/
@Test
public void testCIncludePathEntry_ClangCLSystemIncludePaths() throws Exception {
@@ -252,7 +252,8 @@ public class MSVCBuildCommandParserTests {
parser.startup(cfgDescription, null);
parser.processLine("cl" + " /imsvcC:\\path0 " + " /imsvc C:\\path1 " + " /imsvc\"C:\\path with spaces\""
+ " /imsvc\"C:\\backslash at end\\\\\"" + " /imsvc\"..\\..\\relative\""
- + " /imsvc\"..\\..\\relative with spaces\"" + " file.cpp");
+ + " /imsvc\"..\\..\\relative with spaces\"" + " /clang:-isystemC:\\path2 "
+ + " /clang:-isystem\"C:\\path with spaces2\"" + " file.cpp");
parser.shutdown();
// check populated entries
@@ -273,6 +274,8 @@ public class MSVCBuildCommandParserTests {
assertEquals(
new CIncludePathEntry(project.getLocation().removeLastSegments(2).append("relative with spaces"), 0),
entries.get(5));
+ assertEquals(new CIncludePathEntry("C:/path2", 0), entries.get(6));
+ assertEquals(new CIncludePathEntry("C:/path with spaces2", 0), entries.get(7));
}
/**
diff --git a/windows/org.eclipse.cdt.msw.build/.classpath b/windows/org.eclipse.cdt.msw.build/.classpath
index 22f30643cba..e801ebfb468 100644
--- a/windows/org.eclipse.cdt.msw.build/.classpath
+++ b/windows/org.eclipse.cdt.msw.build/.classpath
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/windows/org.eclipse.cdt.msw.build/.project b/windows/org.eclipse.cdt.msw.build/.project
index e97910dcff7..e159b8c2d70 100644
--- a/windows/org.eclipse.cdt.msw.build/.project
+++ b/windows/org.eclipse.cdt.msw.build/.project
@@ -20,9 +20,15 @@
<arguments>
</arguments>
</buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.pde.PluginNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
</natures>
</projectDescription>
diff --git a/windows/org.eclipse.cdt.msw.build/.settings/org.eclipse.core.resources.prefs b/windows/org.eclipse.cdt.msw.build/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/windows/org.eclipse.cdt.msw.build/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/windows/org.eclipse.cdt.msw.build/.settings/org.eclipse.jdt.core.prefs b/windows/org.eclipse.cdt.msw.build/.settings/org.eclipse.jdt.core.prefs
index 2b6ecff8a01..e3a8104f9ca 100644
--- a/windows/org.eclipse.cdt.msw.build/.settings/org.eclipse.jdt.core.prefs
+++ b/windows/org.eclipse.cdt.msw.build/.settings/org.eclipse.jdt.core.prefs
@@ -30,9 +30,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -49,6 +49,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -107,6 +108,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -144,13 +146,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -158,21 +161,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -264,11 +270,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -299,6 +306,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -323,13 +332,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -377,6 +390,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -413,9 +428,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -454,10 +472,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/windows/org.eclipse.cdt.msw.build/.settings/org.eclipse.jdt.ui.prefs b/windows/org.eclipse.cdt.msw.build/.settings/org.eclipse.jdt.ui.prefs
index e44576346c4..d35ba9b5231 100644
--- a/windows/org.eclipse.cdt.msw.build/.settings/org.eclipse.jdt.ui.prefs
+++ b/windows/org.eclipse.cdt.msw.build/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,4 @@
+cleanup.add_all=false
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
@@ -11,25 +12,72 @@ cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=false
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
+cleanup.array_with_curly=false
+cleanup.arrays_fill=false
+cleanup.bitwise_conditional_expression=false
+cleanup.boolean_literal=false
+cleanup.boolean_value_rather_than_comparison=false
+cleanup.break_loop=false
+cleanup.collection_cloning=false
+cleanup.comparing_on_criteria=false
+cleanup.comparison_statement=false
+cleanup.controlflow_merge=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
+cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true
+cleanup.convert_to_switch_expressions=false
cleanup.correct_indentation=false
+cleanup.do_while_rather_than_while=true
+cleanup.double_negation=false
+cleanup.else_if=false
+cleanup.embedded_if=false
+cleanup.evaluate_nullable=false
+cleanup.extract_increment=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
+cleanup.hash=false
+cleanup.if_condition=false
cleanup.insert_inferred_type_arguments=false
+cleanup.instanceof=false
+cleanup.instanceof_keyword=false
+cleanup.invert_equals=false
+cleanup.join=false
+cleanup.lazy_logical_operator=false
cleanup.make_local_variable_final=true
cleanup.make_parameters_final=false
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=false
+cleanup.map_cloning=false
+cleanup.merge_conditional_blocks=false
+cleanup.multi_catch=false
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=true
+cleanup.no_string_creation=false
+cleanup.no_super=false
+cleanup.number_suffix=false
+cleanup.objects_equals=false
+cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+cleanup.operand_factorization=false
cleanup.organize_imports=true
+cleanup.overridden_assignment=false
+cleanup.plain_replacement=false
+cleanup.precompile_regex=false
+cleanup.primitive_comparison=false
+cleanup.primitive_parsing=false
+cleanup.primitive_rather_than_wrapper=false
+cleanup.primitive_serialization=false
+cleanup.pull_out_if_from_if_else=false
+cleanup.pull_up_assignment=false
+cleanup.push_down_negation=false
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=false
cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.reduce_indentation=false
+cleanup.redundant_comparator=false
+cleanup.redundant_falling_through_block_end=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_modifiers=false
cleanup.remove_redundant_semicolons=true
@@ -37,25 +85,57 @@ cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=true
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=false
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=false
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_method_parameters=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
+cleanup.return_expression=false
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.single_used_field=false
cleanup.sort_members=false
cleanup.sort_members_all=false
+cleanup.standard_comparison=false
+cleanup.static_inner_class=false
+cleanup.strictly_equal_or_different=false
+cleanup.stringbuffer_to_stringbuilder=false
+cleanup.stringbuilder=false
+cleanup.stringbuilder_for_local_vars=true
+cleanup.stringconcat_to_textblock=false
+cleanup.substring=false
+cleanup.switch=false
+cleanup.system_property=false
+cleanup.system_property_boolean=false
+cleanup.system_property_file_encoding=false
+cleanup.system_property_file_separator=false
+cleanup.system_property_line_separator=false
+cleanup.system_property_path_separator=false
+cleanup.ternary_operator=false
+cleanup.try_with_resource=false
+cleanup.unlooped_while=false
+cleanup.unreachable_block=false
cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
cleanup.use_blocks=false
cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=false
+cleanup.use_string_is_blank=false
cleanup.use_this_for_non_static_field_access=false
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=false
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup.use_var=false
+cleanup.useless_continue=false
+cleanup.useless_return=false
+cleanup.valueof_rather_than_instantiation=false
cleanup_profile=_CDT
cleanup_settings_version=2
eclipse.preferences.version=1
diff --git a/windows/org.eclipse.cdt.msw.build/META-INF/MANIFEST.MF b/windows/org.eclipse.cdt.msw.build/META-INF/MANIFEST.MF
index d3804804e45..a5d24401dc0 100644
--- a/windows/org.eclipse.cdt.msw.build/META-INF/MANIFEST.MF
+++ b/windows/org.eclipse.cdt.msw.build/META-INF/MANIFEST.MF
@@ -1,8 +1,8 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
-Bundle-Name: MSVC Build Integration Plug-in
+Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.msw.build;singleton:=true
-Bundle-Version: 1.1.100.qualifier
+Bundle-Version: 1.2.400.qualifier
Bundle-Activator: org.eclipse.cdt.msw.build.Activator
Bundle-Localization: plugin
Require-Bundle: org.eclipse.core.runtime,
@@ -14,8 +14,8 @@ Require-Bundle: org.eclipse.core.runtime,
org.eclipse.swt,
org.eclipse.jface
Eclipse-LazyStart: true
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Bundle-Vendor: Eclipse CDT
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Bundle-Vendor: %providerName
Automatic-Module-Name: org.eclipse.cdt.msw.build
Export-Package: org.eclipse.cdt.msw.build,
org.eclipse.cdt.msw.build.core
diff --git a/windows/org.eclipse.cdt.msw.build/about.html b/windows/org.eclipse.cdt.msw.build/about.html
index 164f781a8fd..b3134865230 100644
--- a/windows/org.eclipse.cdt.msw.build/about.html
+++ b/windows/org.eclipse.cdt.msw.build/about.html
@@ -1,10 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
+
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <title>About</title>
</head>
+
<body lang="EN-US">
<h2>About This Content</h2>
@@ -16,7 +17,7 @@
(&quot;Content&quot;). Unless otherwise indicated below, the Content
is provided to you under the terms and conditions of the Eclipse
Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>
@@ -29,8 +30,9 @@
license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source
code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ href="https://www.eclipse.org/">https://www.eclipse.org</a>.
</p>
</body>
+
</html> \ No newline at end of file
diff --git a/windows/org.eclipse.cdt.msw.build/about.ini b/windows/org.eclipse.cdt.msw.build/about.ini
new file mode 100644
index 00000000000..e07a7bb377e
--- /dev/null
+++ b/windows/org.eclipse.cdt.msw.build/about.ini
@@ -0,0 +1,24 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%blurb
+
+# Property "windowImage" contains path to window icon (16x16)
+# needed for primary features only
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=cdt_logo_icon32.png
+
+# Property "aboutImage" contains path to product image (500x330 or 115x164)
+# needed for primary features only
+
+# Property "appName" contains name of the application (translated)
+# needed for primary features only
+
+# Property "welcomePerspective" contains the id of the perspective in which the
+# welcome page is to be opened.
+# optional
diff --git a/windows/org.eclipse.cdt.msw.build/about.mappings b/windows/org.eclipse.cdt.msw.build/about.mappings
new file mode 100644
index 00000000000..936a8039c3e
--- /dev/null
+++ b/windows/org.eclipse.cdt.msw.build/about.mappings
@@ -0,0 +1,9 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+# The following should contain the build version.
+# e.g. "0=20200106-1728"
+# This value will be added automatically via the build scripts
+0=${buildId}
diff --git a/windows/org.eclipse.cdt.msw.build/about.properties b/windows/org.eclipse.cdt.msw.build/about.properties
new file mode 100644
index 00000000000..8f5399d4a66
--- /dev/null
+++ b/windows/org.eclipse.cdt.msw.build/about.properties
@@ -0,0 +1,32 @@
+###############################################################################
+# Copyright (c) 2007, 2022 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+# about.properties
+# contains externalized strings for about.ini
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# fill-ins are supplied by about.mappings
+# This file should be translated.
+# NOTE TO TRANSLATOR: Please do not translate the featureVersion variable.
+
+
+blurb=C/C++ Visual C++ Support (experimental)\n\
+\n\
+Version: {featureVersion}\n\
+Build id: {0}\n\
+\n\
+Copyright (c) 2007, 2022 Contributors to the Eclipse Foundation
+\n\
+See the NOTICE file(s) distributed with this work for additional\n\
+information regarding copyright ownership.\n\
+\n\
+Visit http://www.eclipse.org/cdt
diff --git a/windows/org.eclipse.cdt.msw.build/build.properties b/windows/org.eclipse.cdt.msw.build/build.properties
index a56b8388a71..3f3efd6d32b 100644
--- a/windows/org.eclipse.cdt.msw.build/build.properties
+++ b/windows/org.eclipse.cdt.msw.build/build.properties
@@ -5,5 +5,9 @@ bin.includes = META-INF/,\
plugin.properties,\
plugin.xml,\
about.html,\
- icons/
+ icons/,\
+ about.ini,\
+ about.mappings,\
+ about.properties,\
+ cdt_logo_icon32.png
src.includes = about.html
diff --git a/windows/org.eclipse.cdt.msw.build/cdt_logo_icon32.png b/windows/org.eclipse.cdt.msw.build/cdt_logo_icon32.png
new file mode 100644
index 00000000000..470ca81b327
--- /dev/null
+++ b/windows/org.eclipse.cdt.msw.build/cdt_logo_icon32.png
Binary files differ
diff --git a/windows/org.eclipse.cdt.msw.build/plugin.properties b/windows/org.eclipse.cdt.msw.build/plugin.properties
index c1e4cfe0a14..f4bbed266a6 100644
--- a/windows/org.eclipse.cdt.msw.build/plugin.properties
+++ b/windows/org.eclipse.cdt.msw.build/plugin.properties
@@ -1,3 +1,6 @@
+pluginName = MSVC Build Integration Plug-in
+providerName = Eclipse CDT
+
toolchain.name=Microsoft Visual C++
compiler.name.abstract=Abstract Compiler
@@ -11,3 +14,4 @@ config.debug=Debug
config.release=Release
MSVCOutputParser.name = MSVC Build Output Parser
+ClangCLBuiltinSpecsDetector.name = Clang-cl Built-in Compiler Settings \ No newline at end of file
diff --git a/windows/org.eclipse.cdt.msw.build/plugin.xml b/windows/org.eclipse.cdt.msw.build/plugin.xml
index 1476eaa756e..c8e8d75b575 100644
--- a/windows/org.eclipse.cdt.msw.build/plugin.xml
+++ b/windows/org.eclipse.cdt.msw.build/plugin.xml
@@ -762,4 +762,16 @@
prefer-non-shared="true">
</provider>
</extension>
+ <extension
+ point="org.eclipse.cdt.core.LanguageSettingsProvider">
+ <provider
+ class="org.eclipse.cdt.internal.msw.build.core.ClangClBuiltinSpecsDetector"
+ id="org.eclipse.cdt.msw.build.core.ClangCLBuiltinSpecsDetector"
+ name="%ClangCLBuiltinSpecsDetector.name"
+ parameter="${COMMAND} ${FLAGS} -E /clang:-P -v /clang:-dD &quot;${INPUTS}&quot;"
+ prefer-non-shared="true">
+ <language-scope id="org.eclipse.cdt.core.gcc"/>
+ <language-scope id="org.eclipse.cdt.core.g++"/>
+ </provider>
+ </extension>
</plugin>
diff --git a/windows/org.eclipse.cdt.msw.build/src/org/eclipse/cdt/internal/msw/build/IVSVersionConstants.java b/windows/org.eclipse.cdt.msw.build/src/org/eclipse/cdt/internal/msw/build/IVSVersionConstants.java
new file mode 100644
index 00000000000..1c4ae2f3f9e
--- /dev/null
+++ b/windows/org.eclipse.cdt.msw.build/src/org/eclipse/cdt/internal/msw/build/IVSVersionConstants.java
@@ -0,0 +1,19 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Marc-Andre Laperle.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.internal.msw.build;
+
+/**
+ * Constants related to Visual Studio versions.
+ */
+interface IVSVersionConstants {
+ VSVersionNumber VS2017_BASE_VER = new VSVersionNumber(15);
+ VSVersionNumber VS2019_BASE_VER = new VSVersionNumber(16);
+} \ No newline at end of file
diff --git a/windows/org.eclipse.cdt.msw.build/src/org/eclipse/cdt/internal/msw/build/MSVCToolChainInfo.java b/windows/org.eclipse.cdt.msw.build/src/org/eclipse/cdt/internal/msw/build/MSVCToolChainInfo.java
new file mode 100644
index 00000000000..6516b5bd7c2
--- /dev/null
+++ b/windows/org.eclipse.cdt.msw.build/src/org/eclipse/cdt/internal/msw/build/MSVCToolChainInfo.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Marc-Andre Laperle.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.internal.msw.build;
+
+/**
+ * Basic information about a MSVC toolchain as found under a VS installation.
+ * More information could be added here in order to support users selecting a specific
+ * toolchain (architecture, etc).
+ */
+public class MSVCToolChainInfo {
+ private String fPathEnvVar;
+ private String fIncludeEnvVar;
+ private String fLibEnvVar;
+
+ MSVCToolChainInfo(String pathEnvVar, String includeEnvVar, String libEnvVar) {
+ fPathEnvVar = pathEnvVar;
+ fIncludeEnvVar = includeEnvVar;
+ fLibEnvVar = libEnvVar;
+ }
+
+ /**
+ * @return The PATH environment variable containing paths needed for this toolchain. Delimited with ';' for multiple paths.
+ */
+ public String getPathEnvVar() {
+ return fPathEnvVar;
+ }
+
+ /**
+ * @return The INCLUDE environment variable containing paths needed for this toolchain. Delimited with ';' for multiple paths.
+ */
+ public String getIncludeEnvVar() {
+ return fIncludeEnvVar;
+ }
+
+ /**
+ * @return The LIB environment variable containing paths needed for this toolchain. Delimited with ';' for multiple paths.
+ */
+ public String getLibEnvVar() {
+ return fLibEnvVar;
+ }
+} \ No newline at end of file
diff --git a/windows/org.eclipse.cdt.msw.build/src/org/eclipse/cdt/internal/msw/build/ProcessOutputUtil.java b/windows/org.eclipse.cdt.msw.build/src/org/eclipse/cdt/internal/msw/build/ProcessOutputUtil.java
new file mode 100644
index 00000000000..0cce6f5b3a4
--- /dev/null
+++ b/windows/org.eclipse.cdt.msw.build/src/org/eclipse/cdt/internal/msw/build/ProcessOutputUtil.java
@@ -0,0 +1,43 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Marc-Andre Laperle.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.internal.msw.build;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Simple util for getting output out of a command. Only meant to be used in a few places to help detect things in the environment.
+ */
+final class ProcessOutputUtil {
+
+ static String[] getAllOutputFromCommand(String... command) {
+ try {
+ Process p = new ProcessBuilder(command).start();
+ List<String> lines = new ArrayList<>();
+ try (BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()))) {
+ String line = input.readLine();
+ while (line != null) {
+ lines.add(line);
+ line = input.readLine();
+ }
+ }
+ return lines.toArray(new String[0]);
+ } catch (IOException e) {
+ // Since this is mostly used to detect the presence of things in the environment,
+ // if anything goes wrong we just return null and we will fallback to undetected VS/MSVC.
+ }
+
+ return null;
+ }
+}
diff --git a/windows/org.eclipse.cdt.msw.build/src/org/eclipse/cdt/internal/msw/build/VSInstallation.java b/windows/org.eclipse.cdt.msw.build/src/org/eclipse/cdt/internal/msw/build/VSInstallation.java
new file mode 100644
index 00000000000..456bfa0c744
--- /dev/null
+++ b/windows/org.eclipse.cdt.msw.build/src/org/eclipse/cdt/internal/msw/build/VSInstallation.java
@@ -0,0 +1,93 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Marc-Andre Laperle.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.internal.msw.build;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.regex.Pattern;
+
+/**
+ * Information about a single Visual Studio installation (paths, toolchains, etc).
+ */
+public class VSInstallation {
+ private String fLocation;
+ private List<MSVCToolChainInfo> fToolChains = null;
+
+ VSInstallation(String location) {
+ super();
+ this.fLocation = location;
+ }
+
+ // Return a non-null String if there is a single non-empty line in the output of the command, null otherwise.
+ private static String getSingleLineOutputFromCommand(String... command) {
+ String allOutput[] = ProcessOutputUtil.getAllOutputFromCommand(command);
+ if (allOutput == null || allOutput.length != 1 || allOutput[0].isEmpty()) {
+ return null;
+ }
+ return allOutput[0];
+ }
+
+ private void detectToolchains() {
+ fToolChains = new ArrayList<>();
+
+ String vcVarsLocation = fLocation + "\\VC\\Auxiliary\\Build\\vcvarsall.bat"; //$NON-NLS-1$
+ //TODO: Support more toolchains/architectures (host and target) when we start giving the choice to the user.
+ final String arch = "amd64"; //$NON-NLS-1$
+ String vcVarsLocationCommands = "\"" + vcVarsLocation + "\" " + arch; //$NON-NLS-1$ //$NON-NLS-2$
+ String includeEnvVar = getSingleLineOutputFromCommand("cmd", "/v", "/c", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ "\"" + vcVarsLocationCommands + " > nul && echo !INCLUDE!\""); //$NON-NLS-1$ //$NON-NLS-2$
+ if (includeEnvVar == null) {
+ return;
+ }
+
+ String libEnvVar = getSingleLineOutputFromCommand("cmd", "/v", "/c", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ "\"" + vcVarsLocationCommands + " > nul && echo !LIB!\""); //$NON-NLS-1$//$NON-NLS-2$
+ if (libEnvVar == null) {
+ return;
+ }
+
+ // Get the normal PATH variable before calling vcvars then we'll extract the ones added by vcvars.
+ String normalPathVar = getSingleLineOutputFromCommand("cmd", "/c", "echo %PATH%"); //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
+ if (normalPathVar == null) {
+ return;
+ }
+
+ // In case PATH is not defined at all (quite unlikely!)
+ if (normalPathVar.equals("%PATH%")) { //$NON-NLS-1$
+ normalPathVar = ""; //$NON-NLS-1$
+ }
+
+ String vcEnvPath = getSingleLineOutputFromCommand("cmd", "/v", "/c", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ "\"" + vcVarsLocationCommands + " > nul && echo !PATH!\""); //$NON-NLS-1$//$NON-NLS-2$
+ if (vcEnvPath == null) {
+ return;
+ }
+
+ // Vcvars can put the user environment in the middle of its PATH values, not before of after.
+ String vcEnvPathOnly = vcEnvPath.replaceFirst(Pattern.quote(normalPathVar), ""); //$NON-NLS-1$
+ if (vcEnvPathOnly.isEmpty())
+ return;
+
+ fToolChains.add(new MSVCToolChainInfo(vcEnvPathOnly, includeEnvVar, libEnvVar));
+ }
+
+ /**
+ * @return Get all toolchains bundled with this installation of VS.
+ */
+ public List<MSVCToolChainInfo> getToolchains() {
+ if (fToolChains == null) {
+ detectToolchains();
+ }
+
+ return Collections.unmodifiableList(fToolChains);
+ }
+} \ No newline at end of file
diff --git a/windows/org.eclipse.cdt.msw.build/src/org/eclipse/cdt/internal/msw/build/VSInstallationRegistry.java b/windows/org.eclipse.cdt.msw.build/src/org/eclipse/cdt/internal/msw/build/VSInstallationRegistry.java
new file mode 100644
index 00000000000..ae7f4c0957d
--- /dev/null
+++ b/windows/org.eclipse.cdt.msw.build/src/org/eclipse/cdt/internal/msw/build/VSInstallationRegistry.java
@@ -0,0 +1,61 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Marc-Andre Laperle.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.internal.msw.build;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.NavigableMap;
+import java.util.TreeMap;
+
+/**
+ * Stores information about different Visual Studio installations detected on the system (paths, toolchains, etc).
+ */
+public class VSInstallationRegistry {
+ private static TreeMap<VSVersionNumber, VSInstallation> fVsInstallations;
+
+ /**
+ * @return Get all VS installations, ordered by ascending version numbers.
+ */
+ public static NavigableMap<VSVersionNumber, VSInstallation> getVsInstallations() {
+ if (fVsInstallations == null)
+ detectVSInstallations();
+
+ return Collections.unmodifiableNavigableMap(fVsInstallations);
+ }
+
+ private static void detectVSInstallations() {
+ fVsInstallations = new TreeMap<>();
+ // We are opting-in which versions to detect instead of trying to detect even unknown ones in order
+ // to allow proper testing for a new version before exposing it to users.
+ Arrays.asList(IVSVersionConstants.VS2017_BASE_VER, IVSVersionConstants.VS2019_BASE_VER).forEach(version -> {
+ VSInstallation insllation = detectVSInstallation(version);
+ if (insllation != null)
+ fVsInstallations.put(version, insllation);
+ });
+ }
+
+ private static VSInstallation detectVSInstallation(VSVersionNumber baseVersion) {
+ VSVersionNumber upperBound = new VSVersionNumber(baseVersion.get(0) + 1);
+ // E.g. [15,16) for 15 inclusive to 16 exclusive.
+ String versionFilterRange = "[" + baseVersion.toString() + "," + upperBound + ")"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ String vsInstallationLocation[] = ProcessOutputUtil.getAllOutputFromCommand("cmd", "/c", //$NON-NLS-1$//$NON-NLS-2$
+ "\"\"%ProgramFiles(x86)%\\Microsoft Visual Studio\\Installer\\vswhere.exe\"\"", //$NON-NLS-1$
+ "-version", versionFilterRange, "-property", "installationPath"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ if (vsInstallationLocation == null || vsInstallationLocation.length == 0
+ || vsInstallationLocation[0].isEmpty()) {
+ return null;
+ }
+
+ // We only support one installation per base (major) version for now.
+ // Supporting multiple is a bit of a niche case left to be determined if useful.
+ return new VSInstallation(vsInstallationLocation[0]);
+ }
+}
diff --git a/windows/org.eclipse.cdt.msw.build/src/org/eclipse/cdt/internal/msw/build/VSVersionNumber.java b/windows/org.eclipse.cdt.msw.build/src/org/eclipse/cdt/internal/msw/build/VSVersionNumber.java
new file mode 100644
index 00000000000..84aa13082cf
--- /dev/null
+++ b/windows/org.eclipse.cdt.msw.build/src/org/eclipse/cdt/internal/msw/build/VSVersionNumber.java
@@ -0,0 +1,62 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Marc-Andre Laperle.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.internal.msw.build;
+
+/**
+ * A VS version number (Integer tuple).
+ */
+public class VSVersionNumber implements Comparable<VSVersionNumber> {
+ private Integer[] fIntegers;
+
+ VSVersionNumber(Integer... integers) {
+ fIntegers = integers;
+ }
+
+ @Override
+ public int compareTo(VSVersionNumber o) {
+ for (int i = 0; i < fIntegers.length; i++) {
+ if (i >= o.fIntegers.length) {
+ // All numbers are the same up to now but the other tuple
+ // has less
+ return 1;
+ }
+
+ int compareTo = fIntegers[i].compareTo(o.fIntegers[i]);
+ if (compareTo != 0) {
+ return compareTo;
+ }
+ }
+
+ // All numbers are the same up to now but this tuple has less than
+ // the other
+ if (fIntegers.length < o.fIntegers.length) {
+ return -1;
+ }
+
+ return 0;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ for (int i = 0; i < fIntegers.length; i++) {
+ sb.append(fIntegers[i]);
+ if (i != fIntegers.length - 1) {
+ sb.append("."); //$NON-NLS-1$
+ }
+ }
+ return sb.toString();
+ }
+
+ Integer get(int index) {
+ return fIntegers[index];
+ }
+} \ No newline at end of file
diff --git a/windows/org.eclipse.cdt.msw.build/src/org/eclipse/cdt/internal/msw/build/core/ClangClBuiltinSpecsDetector.java b/windows/org.eclipse.cdt.msw.build/src/org/eclipse/cdt/internal/msw/build/core/ClangClBuiltinSpecsDetector.java
new file mode 100644
index 00000000000..da228061f6f
--- /dev/null
+++ b/windows/org.eclipse.cdt.msw.build/src/org/eclipse/cdt/internal/msw/build/core/ClangClBuiltinSpecsDetector.java
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Marc-Andre Laperle.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.internal.msw.build.core;
+
+import org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuiltinSpecsDetector;
+
+/**
+ * Language settings provider to detect built-in compiler settings for the Clang-cl compiler.
+ */
+public class ClangClBuiltinSpecsDetector extends GCCBuiltinSpecsDetector {
+
+ // This ID is mostly used for the global provider case to get the compiler command from the toolchain
+ // which will be wrong here (cl instead of clang-cl), although less wrong than GCC. We would need a dedicated
+ // Clang-cl toolchain to make the global case work.
+ // But it will correctly display whether or not the associated toolchain (MSVC) is installed and supported, instead of checking GCC.
+ private static final String TOOLCHAIN_ID = "org.eclipse.cdt.msvc.toolchain.base"; //$NON-NLS-1$
+
+ @Override
+ public String getToolchainId() {
+ return TOOLCHAIN_ID;
+ }
+}
diff --git a/windows/org.eclipse.cdt.msw.build/src/org/eclipse/cdt/msw/build/Activator.java b/windows/org.eclipse.cdt.msw.build/src/org/eclipse/cdt/msw/build/Activator.java
index b57feb32dfb..505572a3d0f 100644
--- a/windows/org.eclipse.cdt.msw.build/src/org/eclipse/cdt/msw/build/Activator.java
+++ b/windows/org.eclipse.cdt.msw.build/src/org/eclipse/cdt/msw/build/Activator.java
@@ -19,7 +19,7 @@ import org.osgi.framework.BundleContext;
public class Activator extends Plugin {
// The plug-in ID
- public static final String PLUGIN_ID = "net.sf.wascana.msvc.build";
+ public static final String PLUGIN_ID = "org.eclipse.cdt.msw.build"; //$NON-NLS-1$
// The shared instance
private static Activator plugin;
diff --git a/windows/org.eclipse.cdt.msw.build/src/org/eclipse/cdt/msw/build/WinEnvironmentVariableSupplier.java b/windows/org.eclipse.cdt.msw.build/src/org/eclipse/cdt/msw/build/WinEnvironmentVariableSupplier.java
index 7ec9e358730..7f9a7c44b28 100644
--- a/windows/org.eclipse.cdt.msw.build/src/org/eclipse/cdt/msw/build/WinEnvironmentVariableSupplier.java
+++ b/windows/org.eclipse.cdt.msw.build/src/org/eclipse/cdt/msw/build/WinEnvironmentVariableSupplier.java
@@ -10,18 +10,23 @@
*******************************************************************************/
package org.eclipse.cdt.msw.build;
-import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Map.Entry;
+import java.util.stream.Collectors;
+import org.eclipse.cdt.internal.msw.build.MSVCToolChainInfo;
+import org.eclipse.cdt.internal.msw.build.VSInstallation;
+import org.eclipse.cdt.internal.msw.build.VSInstallationRegistry;
+import org.eclipse.cdt.internal.msw.build.VSVersionNumber;
import org.eclipse.cdt.managedbuilder.core.IConfiguration;
import org.eclipse.cdt.managedbuilder.core.IManagedProject;
import org.eclipse.cdt.managedbuilder.envvar.IBuildEnvironmentVariable;
import org.eclipse.cdt.managedbuilder.envvar.IConfigurationEnvironmentVariableSupplier;
import org.eclipse.cdt.managedbuilder.envvar.IEnvironmentVariableProvider;
import org.eclipse.cdt.managedbuilder.envvar.IProjectEnvironmentVariableSupplier;
-import org.eclipse.cdt.utils.WindowsRegistry;
+import org.eclipse.cdt.utils.envvar.EnvVarOperationProcessor;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
@@ -31,10 +36,7 @@ import org.eclipse.core.runtime.Path;
*/
public class WinEnvironmentVariableSupplier
implements IConfigurationEnvironmentVariableSupplier, IProjectEnvironmentVariableSupplier {
-
private static Map<String, IBuildEnvironmentVariable> envvars;
- private static String sdkDir;
- private static String vcDir;
private static class WindowsBuildEnvironmentVariable implements IBuildEnvironmentVariable {
@@ -50,7 +52,7 @@ public class WinEnvironmentVariableSupplier
@Override
public String getDelimiter() {
- return ";";
+ return ";"; //$NON-NLS-1$
}
@Override
@@ -97,52 +99,15 @@ public class WinEnvironmentVariableSupplier
return envvars.values().toArray(new IBuildEnvironmentVariable[envvars.size()]);
}
- private static String getSoftwareKey(WindowsRegistry reg, String subkey, String name) {
- String value = reg.getLocalMachineValue("SOFTWARE\\" + subkey, name);
- // Visual Studio is a 32 bit application so on Windows 64 the keys will be in Wow6432Node
- if (value == null) {
- value = reg.getLocalMachineValue("SOFTWARE\\Wow6432Node\\" + subkey, name);
- }
- return value;
- }
-
- // Current support is for Windows SDK 8.0 with Visual C++ 11.0
- // or Windows SDK 7.1 with Visual C++ 10.0
- // or Windows SDK 7.0 with Visual C++ 9.0
- private static String getSDKDir() {
- WindowsRegistry reg = WindowsRegistry.getRegistry();
- String sdkDir = getSoftwareKey(reg, "Microsoft\\Microsoft SDKs\\Windows\\v8.0", "InstallationFolder");
- if (sdkDir != null)
- return sdkDir;
- sdkDir = getSoftwareKey(reg, "Microsoft\\Microsoft SDKs\\Windows\\v7.1", "InstallationFolder");
- if (sdkDir != null)
- return sdkDir;
- return getSoftwareKey(reg, "Microsoft SDKs\\Windows\\v7.0", "InstallationFolder");
- }
-
- private static String getVCDir() {
- WindowsRegistry reg = WindowsRegistry.getRegistry();
- String vcDir = getSoftwareKey(reg, "Microsoft\\VisualStudio\\SxS\\VC7", "11.0");
- if (vcDir != null)
- return vcDir;
- vcDir = getSoftwareKey(reg, "Microsoft\\VisualStudio\\SxS\\VC7", "10.0");
- if (vcDir != null)
- return vcDir;
- return getSoftwareKey(reg, "Microsoft\\VisualStudio\\SxS\\VC7", "9.0");
- }
-
public static IPath[] getIncludePath() {
- // Include paths
- List<IPath> includePaths = new ArrayList<>();
- if (sdkDir != null) {
- includePaths.add(new Path(sdkDir.concat("Include")));
- includePaths.add(new Path(sdkDir.concat("Include\\gl")));
- }
-
- if (vcDir != null) {
- includePaths.add(new Path(vcDir.concat("Include")));
- }
- return includePaths.toArray(new IPath[0]);
+ if (envvars == null)
+ return new IPath[0];
+
+ IBuildEnvironmentVariable var = envvars.get("INCLUDE"); //$NON-NLS-1$
+ if (var == null)
+ return new IPath[0];
+ return EnvVarOperationProcessor.convertToList(var.getValue(), var.getDelimiter()).stream()
+ .map(val -> Path.fromOSString(val)).collect(Collectors.toList()).toArray(new IPath[0]);
}
private static void addvar(IBuildEnvironmentVariable var) {
@@ -154,46 +119,22 @@ public class WinEnvironmentVariableSupplier
return;
envvars = new HashMap<>();
- // The SDK Location
- sdkDir = getSDKDir();
- vcDir = getVCDir();
-
- if (sdkDir == null && vcDir == null) {
- return;
+ Entry<VSVersionNumber, VSInstallation> vsInstallationEntry = VSInstallationRegistry.getVsInstallations()
+ .lastEntry();
+ if (vsInstallationEntry != null) {
+ List<MSVCToolChainInfo> toolchains = vsInstallationEntry.getValue().getToolchains();
+ if (toolchains.size() != 0) {
+ //TODO: Support more toolchains/architectures (host and target) when we start giving the choice to the user.
+ MSVCToolChainInfo toolChainInfo = toolchains.get(0);
+ addvar(new WindowsBuildEnvironmentVariable("INCLUDE", toolChainInfo.getIncludeEnvVar(), //$NON-NLS-1$
+ IBuildEnvironmentVariable.ENVVAR_PREPEND));
+ addvar(new WindowsBuildEnvironmentVariable("PATH", toolChainInfo.getPathEnvVar(), //$NON-NLS-1$
+ IBuildEnvironmentVariable.ENVVAR_PREPEND));
+ addvar(new WindowsBuildEnvironmentVariable("LIB", toolChainInfo.getLibEnvVar(), //$NON-NLS-1$
+ IBuildEnvironmentVariable.ENVVAR_PREPEND));
+ }
}
- // INCLUDE
- StringBuilder buff = new StringBuilder();
- IPath includePaths[] = getIncludePath();
- for (IPath path : includePaths) {
- buff.append(path.toOSString()).append(';');
- }
- addvar(new WindowsBuildEnvironmentVariable("INCLUDE", buff.toString(),
- IBuildEnvironmentVariable.ENVVAR_PREPEND));
-
- // LIB
- buff = new StringBuilder();
- if (vcDir != null)
- buff.append(vcDir).append("Lib;");
- if (sdkDir != null) {
- buff.append(sdkDir).append("Lib;");
- buff.append(sdkDir).append("Lib\\win8\\um\\x86;");
- }
-
- addvar(new WindowsBuildEnvironmentVariable("LIB", buff.toString(), IBuildEnvironmentVariable.ENVVAR_PREPEND));
-
- // PATH
- buff = new StringBuilder();
- if (vcDir != null) {
- buff.append(vcDir).append("..\\Common7\\IDE;");
- buff.append(vcDir).append("..\\Common7\\Tools;");
- buff.append(vcDir).append("Bin;");
- buff.append(vcDir).append("vcpackages;");
- }
- if (sdkDir != null) {
- buff.append(sdkDir).append("Bin;");
- }
- addvar(new WindowsBuildEnvironmentVariable("PATH", buff.toString(), IBuildEnvironmentVariable.ENVVAR_PREPEND));
}
}
diff --git a/windows/org.eclipse.cdt.msw.build/src/org/eclipse/cdt/msw/build/core/MSVCBuildCommandParser.java b/windows/org.eclipse.cdt.msw.build/src/org/eclipse/cdt/msw/build/core/MSVCBuildCommandParser.java
index 50d2a814f33..6b63ed8b70e 100644
--- a/windows/org.eclipse.cdt.msw.build/src/org/eclipse/cdt/msw/build/core/MSVCBuildCommandParser.java
+++ b/windows/org.eclipse.cdt.msw.build/src/org/eclipse/cdt/msw/build/core/MSVCBuildCommandParser.java
@@ -11,6 +11,8 @@
package org.eclipse.cdt.msw.build.core;
import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -26,11 +28,20 @@ import org.eclipse.cdt.managedbuilder.language.settings.providers.AbstractBuildC
*/
public class MSVCBuildCommandParser extends AbstractBuildCommandParser implements ILanguageSettingsEditableProvider {
+ private static final String DOUBLE_BACKSLASH = "\\\\"; //$NON-NLS-1$
+ private static final Pattern DOUBLE_BACKSLASH_PATTERN = Pattern.compile(Pattern.quote(DOUBLE_BACKSLASH));
+ private static final String BACKSLASH_REPLACEMENT_STRING = "\\\\"; //$NON-NLS-1$
+ private static final String BACKSLASH_QUOTE = "\\\""; //$NON-NLS-1$
+ private static final Pattern BACKSLASH_QUOTE_PATTERN = Pattern.compile(Pattern.quote(BACKSLASH_QUOTE));
+ private static final String QUOTE_REPLACEMENT_STRING = "\""; //$NON-NLS-1$
+
private static String unescapeString(String value) {
// There are probably many other things to unescape but these are the most
// common.
- value = value.replaceAll("\\\\\\\\", "\\\\"); //$NON-NLS-1$//$NON-NLS-2$
- value = value.replaceAll("\\\\\"", "\""); //$NON-NLS-1$ //$NON-NLS-2$
+ if (value.contains(DOUBLE_BACKSLASH))
+ value = DOUBLE_BACKSLASH_PATTERN.matcher(value).replaceAll(BACKSLASH_REPLACEMENT_STRING);
+ if (value.contains(BACKSLASH_QUOTE))
+ value = BACKSLASH_QUOTE_PATTERN.matcher(value).replaceAll(QUOTE_REPLACEMENT_STRING);
return value;
}
@@ -70,26 +81,28 @@ public class MSVCBuildCommandParser extends AbstractBuildCommandParser implement
}
}
- // TODO: Should these be considered "built-in" entries (ICSettingEntry.BUILTIN)?
- private static class ClangCLMSVCSystemPathOptionParser extends IncludePathOptionParser {
+ @SuppressWarnings("nls")
+ static final AbstractOptionParser[] includeOptionParsers = {
+ new MSVCIncludePathOptionParser("(-|/)I\\s*\"(.*)\"", "$2"),
+ new MSVCIncludePathOptionParser("(-|/)I\\s*([^\\s\"]*)", "$2"), };
- public ClangCLMSVCSystemPathOptionParser(String pattern, String nameExpression) {
- super(pattern, nameExpression);
- }
+ @SuppressWarnings("nls")
+ static final AbstractOptionParser[] forceIncludeOptionParsers = {
+ new MSVCForceIncludePathOptionParser("(-|/)FI\\s*\"(.*)\"", "$2"),
+ new MSVCForceIncludePathOptionParser("(-|/)FI\\s*([^\\s\"]*)", "$2"), };
- @Override
- public ICLanguageSettingEntry createEntry(String name, String value, int flag) {
- return super.createEntry(name, unescapeString(value), flag);
- }
- }
+ @SuppressWarnings("nls")
+ static final AbstractOptionParser[] msvcIncludeOptionParsers = {
+ new MSVCIncludePathOptionParser("(-|/)imsvc\\s*\"(.*)\"", "$2"),
+ new MSVCIncludePathOptionParser("(-|/)imsvc\\s*([^\\s\"]*)", "$2"), };
@SuppressWarnings("nls")
- static final AbstractOptionParser[] optionParsers = { new MSVCIncludePathOptionParser("(-|/)I\\s*\"(.*)\"", "$2"),
- new MSVCIncludePathOptionParser("(-|/)I\\s*([^\\s\"]*)", "$2"),
- new MSVCForceIncludePathOptionParser("(-|/)FI\\s*\"(.*)\"", "$2"),
- new MSVCForceIncludePathOptionParser("(-|/)FI\\s*([^\\s\"]*)", "$2"),
- new ClangCLMSVCSystemPathOptionParser("(-|/)imsvc\\s*\"(.*)\"", "$2"),
- new ClangCLMSVCSystemPathOptionParser("(-|/)imsvc\\s*([^\\s\"]*)", "$2"),
+ static final AbstractOptionParser[] clangISystemIncludeOptionParsers = {
+ new MSVCIncludePathOptionParser("(-|/)clang:-isystem\"(.*)\"", "$2"),
+ new MSVCIncludePathOptionParser("(-|/)clang:-isystem([^\\s\"]*)", "$2"), };
+
+ @SuppressWarnings("nls")
+ static final AbstractOptionParser[] defineOptionParsers = {
// /D "FOO=bar"
new MSVCMacroOptionParser("(-|/)D\\s*\"([^=]+)=(.*)\"", "$2", "$3"),
// /D FOO="bar"
@@ -99,12 +112,29 @@ public class MSVCBuildCommandParser extends AbstractBuildCommandParser implement
// /D FOO
new MSVCMacroOptionParser("(-|/)D\\s*([^\\s=\"]+)", "$2", "1"),
// /D"FOO"
- new MSVCMacroOptionParser("(-|/)D\\s*\"([^\\s=\"]+)\"", "$2", "1"),
+ new MSVCMacroOptionParser("(-|/)D\\s*\"([^\\s=\"]+)\"", "$2", "1"), };
+
+ @SuppressWarnings("nls")
+ static final AbstractOptionParser[] undefineOptionParsers = {
// /U FOO
new MacroOptionParser("(-|/)U\\s*([^\\s=\"]+)", "$2", ICSettingEntry.UNDEFINED),
// /U "FOO"
new MacroOptionParser("(-|/)U\\s*\"(.*?)\"", "$2", ICSettingEntry.UNDEFINED) };
+ static final AbstractOptionParser[] emptyParsers = new AbstractOptionParser[0];
+
+ static final AbstractOptionParser[] optionParsers;
+ static {
+ List<AbstractOptionParser> parsers = new ArrayList<>(Arrays.asList(includeOptionParsers));
+ Collections.addAll(parsers, defineOptionParsers);
+ Collections.addAll(parsers, msvcIncludeOptionParsers);
+ Collections.addAll(parsers, clangISystemIncludeOptionParsers);
+ Collections.addAll(parsers, forceIncludeOptionParsers);
+ Collections.addAll(parsers, undefineOptionParsers);
+
+ optionParsers = parsers.toArray(new AbstractOptionParser[0]);
+ }
+
/**
* "foo" or "C:\foo\\"
*
@@ -138,6 +168,43 @@ public class MSVCBuildCommandParser extends AbstractBuildCommandParser implement
return optionParsers;
}
+ @SuppressWarnings("nls")
+ @Override
+ protected AbstractOptionParser[] getOptionParsers(String optionToParse) {
+ if (optionToParse.length() <= 1) {
+ return emptyParsers;
+ }
+
+ // Skip - or /, we know it's there with the OPTIONS_PATTERN
+ String optionName = optionToParse.substring(1);
+
+ if (optionName.startsWith("I")) {
+ return includeOptionParsers;
+ }
+
+ if (optionName.startsWith("D")) {
+ return defineOptionParsers;
+ }
+
+ if (optionName.startsWith("imsvc")) {
+ return msvcIncludeOptionParsers;
+ }
+
+ if (optionName.startsWith("clang")) {
+ return clangISystemIncludeOptionParsers;
+ }
+
+ if (optionName.startsWith("FI")) {
+ return forceIncludeOptionParsers;
+ }
+
+ if (optionName.startsWith("U")) {
+ return undefineOptionParsers;
+ }
+
+ return emptyParsers;
+ }
+
@Override
public MSVCBuildCommandParser cloneShallow() throws CloneNotSupportedException {
return (MSVCBuildCommandParser) super.cloneShallow();
diff --git a/windows/pom.xml b/windows/pom.xml
index 2e282219934..0fc0cd59d03 100644
--- a/windows/pom.xml
+++ b/windows/pom.xml
@@ -1,4 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2017, 2021 Contributors to the Eclipse Foundation
+
+ This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+-->
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
@@ -7,7 +17,7 @@
<parent>
<groupId>org.eclipse.cdt</groupId>
<artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
+ <version>10.7.0-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.cdt.windows-parent</artifactId>
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/.classpath b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/.classpath
deleted file mode 100644
index eca7bdba8f0..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
- <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/.project b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/.project
deleted file mode 100644
index 78df19795f6..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.cdt.core.lrparser.xlc.tests</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.ManifestBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.SchemaBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.pde.PluginNature</nature>
- <nature>org.eclipse.jdt.core.javanature</nature>
- </natures>
-</projectDescription>
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/.settings/org.eclipse.jdt.core.prefs b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index ad05599159f..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,464 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
-org.eclipse.jdt.core.codeComplete.argumentPrefixes=
-org.eclipse.jdt.core.codeComplete.argumentSuffixes=
-org.eclipse.jdt.core.codeComplete.fieldPrefixes=
-org.eclipse.jdt.core.codeComplete.fieldSuffixes=
-org.eclipse.jdt.core.codeComplete.localPrefixes=
-org.eclipse.jdt.core.codeComplete.localSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
-org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
-org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
-org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
-org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
-org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
-org.eclipse.jdt.core.compiler.problem.APILeak=warning
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=ignore
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
-org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
-org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
-org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
-org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
-org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
-org.eclipse.jdt.core.compiler.problem.nullReference=error
-org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
-org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
-org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
-org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
-org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
-org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
-org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=ignore
-org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore
-org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
-org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
-org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
-org.eclipse.jdt.core.formatter.align_with_spaces=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
-org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
-org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
-org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
-org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=0
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
-org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
-org.eclipse.jdt.core.formatter.comment.format_block_comments=false
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
-org.eclipse.jdt.core.formatter.comment.format_line_comments=false
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
-org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
-org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
-org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.join_lines_in_comments=true
-org.eclipse.jdt.core.formatter.join_wrapped_lines=true
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=120
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_on_off_tags=true
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
-org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
-org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/.settings/org.eclipse.jdt.ui.prefs b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index e44576346c4..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,133 +0,0 @@
-cleanup.add_default_serial_version_id=true
-cleanup.add_generated_serial_version_id=false
-cleanup.add_missing_annotations=true
-cleanup.add_missing_deprecated_annotations=true
-cleanup.add_missing_methods=false
-cleanup.add_missing_nls_tags=false
-cleanup.add_missing_override_annotations=true
-cleanup.add_missing_override_annotations_interface_methods=true
-cleanup.add_serial_version_id=false
-cleanup.always_use_blocks=true
-cleanup.always_use_parentheses_in_expressions=false
-cleanup.always_use_this_for_non_static_field_access=false
-cleanup.always_use_this_for_non_static_method_access=false
-cleanup.convert_functional_interfaces=false
-cleanup.convert_to_enhanced_for_loop=false
-cleanup.correct_indentation=false
-cleanup.format_source_code=true
-cleanup.format_source_code_changes_only=false
-cleanup.insert_inferred_type_arguments=false
-cleanup.make_local_variable_final=true
-cleanup.make_parameters_final=false
-cleanup.make_private_fields_final=true
-cleanup.make_type_abstract_if_missing_method=false
-cleanup.make_variable_declarations_final=false
-cleanup.never_use_blocks=false
-cleanup.never_use_parentheses_in_expressions=true
-cleanup.organize_imports=true
-cleanup.qualify_static_field_accesses_with_declaring_class=false
-cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-cleanup.qualify_static_member_accesses_with_declaring_class=false
-cleanup.qualify_static_method_accesses_with_declaring_class=false
-cleanup.remove_private_constructors=true
-cleanup.remove_redundant_modifiers=false
-cleanup.remove_redundant_semicolons=true
-cleanup.remove_redundant_type_arguments=true
-cleanup.remove_trailing_whitespaces=true
-cleanup.remove_trailing_whitespaces_all=true
-cleanup.remove_trailing_whitespaces_ignore_empty=false
-cleanup.remove_unnecessary_casts=true
-cleanup.remove_unnecessary_nls_tags=false
-cleanup.remove_unused_imports=true
-cleanup.remove_unused_local_variables=false
-cleanup.remove_unused_private_fields=true
-cleanup.remove_unused_private_members=false
-cleanup.remove_unused_private_methods=true
-cleanup.remove_unused_private_types=true
-cleanup.sort_members=false
-cleanup.sort_members_all=false
-cleanup.use_anonymous_class_creation=false
-cleanup.use_blocks=false
-cleanup.use_blocks_only_for_return_and_throw=false
-cleanup.use_lambda=true
-cleanup.use_parentheses_in_expressions=false
-cleanup.use_this_for_non_static_field_access=false
-cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-cleanup.use_this_for_non_static_method_access=false
-cleanup.use_this_for_non_static_method_access_only_if_necessary=true
-cleanup_profile=_CDT
-cleanup_settings_version=2
-eclipse.preferences.version=1
-editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=_CDT
-formatter_settings_version=14
-internal.default.compliance=user
-org.eclipse.jdt.ui.exception.name=e
-org.eclipse.jdt.ui.gettersetter.use.is=true
-org.eclipse.jdt.ui.ignorelowercasenames=true
-org.eclipse.jdt.ui.importorder=java;javax;org;com;
-org.eclipse.jdt.ui.keywordthis=false
-org.eclipse.jdt.ui.ondemandthreshold=1000
-org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.staticondemandthreshold=1000
-org.eclipse.jdt.ui.text.custom_code_templates=
-sp_cleanup.add_default_serial_version_id=true
-sp_cleanup.add_generated_serial_version_id=false
-sp_cleanup.add_missing_annotations=true
-sp_cleanup.add_missing_deprecated_annotations=true
-sp_cleanup.add_missing_methods=false
-sp_cleanup.add_missing_nls_tags=false
-sp_cleanup.add_missing_override_annotations=true
-sp_cleanup.add_missing_override_annotations_interface_methods=true
-sp_cleanup.add_serial_version_id=false
-sp_cleanup.always_use_blocks=true
-sp_cleanup.always_use_parentheses_in_expressions=false
-sp_cleanup.always_use_this_for_non_static_field_access=false
-sp_cleanup.always_use_this_for_non_static_method_access=false
-sp_cleanup.convert_functional_interfaces=false
-sp_cleanup.convert_to_enhanced_for_loop=false
-sp_cleanup.correct_indentation=false
-sp_cleanup.format_source_code=true
-sp_cleanup.format_source_code_changes_only=false
-sp_cleanup.insert_inferred_type_arguments=false
-sp_cleanup.make_local_variable_final=true
-sp_cleanup.make_parameters_final=false
-sp_cleanup.make_private_fields_final=true
-sp_cleanup.make_type_abstract_if_missing_method=false
-sp_cleanup.make_variable_declarations_final=false
-sp_cleanup.never_use_blocks=false
-sp_cleanup.never_use_parentheses_in_expressions=true
-sp_cleanup.on_save_use_additional_actions=true
-sp_cleanup.organize_imports=true
-sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
-sp_cleanup.remove_private_constructors=true
-sp_cleanup.remove_redundant_modifiers=false
-sp_cleanup.remove_redundant_semicolons=true
-sp_cleanup.remove_redundant_type_arguments=true
-sp_cleanup.remove_trailing_whitespaces=true
-sp_cleanup.remove_trailing_whitespaces_all=true
-sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
-sp_cleanup.remove_unnecessary_casts=true
-sp_cleanup.remove_unnecessary_nls_tags=false
-sp_cleanup.remove_unused_imports=true
-sp_cleanup.remove_unused_local_variables=false
-sp_cleanup.remove_unused_private_fields=true
-sp_cleanup.remove_unused_private_members=false
-sp_cleanup.remove_unused_private_methods=true
-sp_cleanup.remove_unused_private_types=true
-sp_cleanup.sort_members=false
-sp_cleanup.sort_members_all=false
-sp_cleanup.use_anonymous_class_creation=false
-sp_cleanup.use_blocks=false
-sp_cleanup.use_blocks_only_for_return_and_throw=false
-sp_cleanup.use_lambda=true
-sp_cleanup.use_parentheses_in_expressions=false
-sp_cleanup.use_this_for_non_static_field_access=false
-sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-sp_cleanup.use_this_for_non_static_method_access=false
-sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/META-INF/MANIFEST.MF b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/META-INF/MANIFEST.MF
deleted file mode 100644
index fb5b4056d09..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,19 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Tests
-Bundle-SymbolicName: org.eclipse.cdt.core.lrparser.xlc.tests
-Bundle-Vendor: Eclipse CDT
-Bundle-Version: 1.0.0.qualifier
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Require-Bundle: org.junit,
- org.eclipse.cdt.core.lrparser;bundle-version="5.1.0",
- org.eclipse.cdt.core.lrparser.xlc;bundle-version="1.0.0",
- org.eclipse.cdt.core.tests;bundle-version="5.1.0",
- org.eclipse.cdt.core;bundle-version="5.1.0",
- org.eclipse.cdt.core.lrparser.tests;bundle-version="5.1.0",
- org.eclipse.core.runtime;bundle-version="3.5.0",
- org.eclipse.core.resources;bundle-version="3.5.0"
-Export-Package: org.eclipse.cdt.core.parser.xlc.tests,
- org.eclipse.cdt.core.parser.xlc.tests.base,
- org.eclipse.cdt.core.parser.xlc.tests.suite
-Automatic-Module-Name: org.eclipse.cdt.core.lrparser.xlc.tests
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/about.html b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/about.html
deleted file mode 100644
index 164f781a8fd..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/about.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
-</head>
-<body lang="EN-US">
- <h2>About This Content</h2>
-
- <p>November 30, 2017</p>
- <h3>License</h3>
-
- <p>
- The Eclipse Foundation makes available all content in this plug-in
- (&quot;Content&quot;). Unless otherwise indicated below, the Content
- is provided to you under the terms and conditions of the Eclipse
- Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
- For purposes of the EPL, &quot;Program&quot; will mean the Content.
- </p>
-
- <p>
- If you did not receive this Content directly from the Eclipse
- Foundation, the Content is being redistributed by another party
- (&quot;Redistributor&quot;) and different terms and conditions may
- apply to your use of any object code in the Content. Check the
- Redistributor's license that was provided with the Content. If no such
- license exists, contact the Redistributor. Unless otherwise indicated
- below, the terms and conditions of the EPL still apply to any source
- code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
- </p>
-
-</body>
-</html> \ No newline at end of file
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/build.properties b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/build.properties
deleted file mode 100644
index 765c0a2bea7..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/build.properties
+++ /dev/null
@@ -1,20 +0,0 @@
-###############################################################################
-# Copyright (c) 2009 IBM Corporation and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
- .,\
- about.html
-src.includes = about.html
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/VectorExtensionsTest.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/VectorExtensionsTest.java
deleted file mode 100644
index 63d91e07771..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/VectorExtensionsTest.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.parser.xlc.tests;
-
-import org.eclipse.cdt.core.dom.ast.IASTCompoundStatement;
-import org.eclipse.cdt.core.dom.ast.IASTDeclaration;
-import org.eclipse.cdt.core.dom.ast.IASTExpressionStatement;
-import org.eclipse.cdt.core.dom.ast.IASTFunctionCallExpression;
-import org.eclipse.cdt.core.dom.ast.IASTFunctionDefinition;
-import org.eclipse.cdt.core.dom.ast.IASTIdExpression;
-import org.eclipse.cdt.core.dom.ast.IASTName;
-import org.eclipse.cdt.core.dom.ast.IASTSimpleDeclaration;
-import org.eclipse.cdt.core.dom.ast.IASTStatement;
-import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
-
-public class VectorExtensionsTest extends XlcTestBase {
-
- public VectorExtensionsTest() {
- }
-
- public VectorExtensionsTest(String name) {
- super(name);
- }
-
- public void testVector1() {
- String code = "int test() { \n" + " vector unsigned int a = {1,2,3,4}; \n"
- + " vector unsigned int b = {2,4,6,8}; \n" + " vector unsigned int c = a + b; \n"
- + " int e = b > a; \n" + " int f = a[2]; \n"
- + " vector unsigned int d = ++a; \n" + "}\n";
-
- parse(code, getCLanguage(), true);
- parse(code, getCPPLanguage(), true);
- }
-
- public void testVectorDeclarations() {
- String code = "vector unsigned char a; \n" + "vector signed char b; \n" + "vector bool char c; \n"
- + "vector unsigned short d; \n" + "vector unsigned short int e; \n"
- + "vector signed short f; \n" + "vector signed short int g; \n" + "vector bool short h; \n"
- + "vector bool short int i; \n" + "vector unsigned int j; \n" + "vector unsigned long k; \n"
- + "vector unsigned long int l; \n" + "vector signed int m; \n" + "vector signed long n; \n"
- + "vector signed long int o; \n" + "vector bool int p; \n" + "vector bool long q; \n"
- + "vector bool long int r; \n" + "vector float s; \n" + "vector pixel t; \n"
- + "__vector __pixel u; \n";
-
- parse(code, getCLanguage(), true);
- parse(code, getCPPLanguage(), true);
- }
-
- // these are only treated as keywords inside a vector declaration
- public void testReservedWords() {
- String code = "int pixel; " + "int bool; ";
-
- parse(code, getCLanguage(), true);
- parse(code, getCPPLanguage(), true);
- }
-
- public void testVectorLiterals() {
- String code = "int test() {" + " (vector unsigned int)(10); "
- + " (vector unsigned int)(14, 82, 73, 700); " + " (vector pixel)(14, 82, 73, 700); "
- + " (vector bool int)(10); " + "}";
-
- parse(code, getCLanguage(), true);
- parse(code, getCPPLanguage(), true);
- }
-
- public void testVectorInitializers() {
- String code = "int test() {" + " vector unsigned int v3 = {1,2,3,4}; " + "}";
-
- parse(code, getCLanguage(), true);
- parse(code, getCPPLanguage(), true);
- }
-
- public void testVectorTypedefs() {
- String code = "int test() {" + " typedef vector pixel vint16; " + " vint16 v1;" + "}";
-
- parse(code, getCLanguage(), true);
- parse(code, getCPPLanguage(), true);
- }
-
- public void testVectorCompoundLiterals() {
- String code = "int test() {" + " (vector unsigned int){10}; "
- + " (vector unsigned int){14, 82, 73, 700}; " + " (vector pixel){14, 82, 73, 700}; "
- + " (vector bool int){10}; " + "}";
-
- parse(code, getCLanguage(), true);
- parse(code, getCPPLanguage(), true);
- }
-
- public void testVectorAlignof() {
- String code = "int test() {" + " vector unsigned int v1 = (vector unsigned int)(10); \n"
- + " vector unsigned int *pv1 = &v1; \n" + " __alignof__(v1); \n" + " __alignof__(&v1); \n"
- + " __alignof__(*pv1); \n" + " __alignof__(pv1); \n" + " __alignof__(vector signed char); \n"
- + "}";
-
- parse(code, getCLanguage(), true);
- parse(code, getCPPLanguage(), true);
- }
-
- public void testVectorTypeof() {
- String code = "int test() {" + " vector unsigned int v1 = (vector unsigned int)(10); \n"
- + " vector unsigned int *pv1 = &v1; \n" + " __typeof__(v1); \n" + " __typeof__(&v1); \n"
- + " __typeof__(*pv1); \n" + " __typeof__(pv1); \n" + " __typeof__(vector signed char); \n"
- + "}";
-
- parse(code, getCLanguage(), true);
- parse(code, getCPPLanguage(), true);
- }
-
- public void _testOverloads() {
- String code = "void foo(int); \n" + "void foo(vector unsigned int); \n" + "void foo(vector pixel) \n"
- + "int test() { \n" + " int x; \n" + " vector unsigned int y; \n" + " vector pixel z; \n"
- + " foo(x); \n" + " foo(y); \n" + " foo(z); \n" + "} \n";
-
- IASTTranslationUnit tu = parse(code, getCPPLanguage(), true);
-
- IASTDeclaration[] decls = tu.getDeclarations();
- IASTName foo1 = ((IASTSimpleDeclaration) decls[0]).getDeclarators()[0].getName();
- IASTName foo2 = ((IASTSimpleDeclaration) decls[1]).getDeclarators()[0].getName();
- IASTName foo3 = ((IASTSimpleDeclaration) decls[2]).getDeclarators()[0].getName();
-
- IASTFunctionDefinition func = (IASTFunctionDefinition) decls[4];
- IASTStatement[] stats = ((IASTCompoundStatement) func.getBody()).getStatements();
-
- IASTName fooCall1 = ((IASTIdExpression) ((IASTFunctionCallExpression) ((IASTExpressionStatement) stats[3])
- .getExpression()).getFunctionNameExpression()).getName();
- IASTName fooCall2 = ((IASTIdExpression) ((IASTFunctionCallExpression) ((IASTExpressionStatement) stats[4])
- .getExpression()).getFunctionNameExpression()).getName();
- IASTName fooCall3 = ((IASTIdExpression) ((IASTFunctionCallExpression) ((IASTExpressionStatement) stats[5])
- .getExpression()).getFunctionNameExpression()).getName();
-
- assertSame(foo1.resolveBinding(), fooCall1.resolveBinding());
- assertSame(foo2.resolveBinding(), fooCall2.resolveBinding());
- assertSame(foo3.resolveBinding(), fooCall3.resolveBinding());
- }
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/XlcExtensionsTest.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/XlcExtensionsTest.java
deleted file mode 100644
index 59e08e4958c..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/XlcExtensionsTest.java
+++ /dev/null
@@ -1,218 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2010 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.parser.xlc.tests;
-
-import org.eclipse.cdt.core.lrparser.xlc.preferences.XlcLanguagePreferences;
-import org.eclipse.cdt.core.lrparser.xlc.preferences.XlcPref;
-
-public class XlcExtensionsTest extends XlcTestBase {
-
- public XlcExtensionsTest() {
- }
-
- public XlcExtensionsTest(String name) {
- super(name);
- }
-
- public void testHexadecimalFloatingPointLiterals() throws Exception {
- String code = "int test() { \n" + " 0x0A2B.0FDp+2f; \n" + " 0X12D.p-44F; \n"
- + " 0xBACP+2L; \n" + "}\n";
-
- parse(code, getCLanguage(), true);
- parse(code, getCPPLanguage(), true);
- }
-
- public void testFuncPredefinedIdentifier() {
- String code = "void test() { \n" + " __func__; \n" + " } \n";
-
- parse(code, getCLanguage(), true);
- parse(code, getCPPLanguage(), true);
- }
-
- public void testStringConcatenation() {
- String code = "void test() { \n" + " \"hello \" \"there\"; \n" + " \"hello \" L\"there\"; \n"
- + " } \n";
-
- parse(code, getCLanguage(), true);
- parse(code, getCPPLanguage(), true);
- }
-
- public void testLongLong() {
- String code = "void test() { \n" + " long long x; \n" + " } \n";
-
- parse(code, getCLanguage(), true);
- parse(code, getCPPLanguage(), true);
- }
-
- public void testComplex() {
- String code = "void test() { \n" + " float _Complex x; \n" + " double _Complex y; \n"
- + " long double _Complex z; \n" + " } \n";
-
- parse(code, getCLanguage(), true);
- parse(code, getCPPLanguage(), true);
- }
-
- public void testBool() {
- String code = "_Bool f(int a, int b) { \n" + " return a==b; \n" + " } \n";
-
- parse(code, getCLanguage(), true);
- }
-
- public void testTrailingCommaInEnum() {
- String code = "void test() { \n" + " enum grain { oats, wheat, barley, corn, rice, }; \n"
- + " } \n";
-
- parse(code, getCLanguage(), true);
- parse(code, getCPPLanguage(), true);
- }
-
- public void testNonLValueArraySubscript() {
- String code = "struct trio{int a[3];}; \n" + "struct trio f(); \n" + "foo (int index) \n"
- + "{ \n" + " return f().a[index]; \n" + "} \n";
-
- parse(code, getCLanguage(), true);
- }
-
- public void testStaticArrayIndices() {
- String code = "void test() { \n" + " void foo1(int arr [static 10]); \n"
- + " int i = 10; \n" + " void foo2(int arr [static const i]); \n"
- + " } \n";
-
- parse(code, getCLanguage(), true);
- }
-
- public void testFunctionLikeMacrosVariableArguments() {
- String code = "#define debug(...) fprintf(stderr, __VA_ARGS__) \n" + "int test() { \n"
- + " debug(\"flag\"); \n" + " } \n";
-
- parse(code, getCLanguage(), false);
- }
-
- public void testFunctionLikeMacrosEmptyArgument() {
- String code = "#define SUM(a,b,c) a + b + c \n" + "int test() { \n" + " SUM(1,,3); \n" + " } \n";
-
- parse(code, getCLanguage(), true);
- }
-
- public void testPredefinedMacroNamesC() {
- String code = "void test() { \n" + " __DATE__; \n" + " __FILE__; \n"
- + " __LINE__; \n" + " __STDC_HOSTED__; \n" + " __STDC_VERSION__; \n"
- + " __TIME__; \n" + "} \n";
-
- parse(code, getCLanguage(), true);
- }
-
- public void testPredefinedMacroNamesCpp() {
- String code = "void test() { \n" + " __DATE__; \n" + " __FILE__; \n"
- + " __LINE__; \n" + " __TIME__; \n" +
- // " __cplusplus; \n" +
- "} \n";
-
- parse(code, getCPPLanguage(), true);
- }
-
- public void testCompoundLiterals() {
- String code = "void test() { \n" + " drawline((struct point){6,7}); \n" + " } \n";
-
- parse(code, getCLanguage(), false);
- }
-
- public void testPragma() {
- String code = "void test() { \n" + " _Pragma ( \"pack(full)\" ) \n" + " } \n";
-
- parse(code, getCLanguage(), true);
- }
-
- public void testStandardPragmas() {
- String code = "#pragma STDC FP_CONTRACT ON \n" + "#pragma STDC FENV_ACCESS OFF \n"
- + "#pragma STDC CX_LIMITED_RANGE DEFAULT \n";
-
- parse(code, getCLanguage(), true);
- }
-
- public void testLineDirective() {
- String code = "#define LINE200 200 \n" + "#line 100 \n" + "#line LINE200 \n";
-
- parse(code, getCLanguage(), true);
- }
-
- /**
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=228826
- * http://publib.boulder.ibm.com/infocenter/comphelp/v101v121/index.jsp?topic=/com.ibm.xlcpp101.aix.doc/language_ref/restrict_type_qualifier.html
- *
- * TODO Need a properties page so that things like this can be configured by the user.
- */
- public void testRestrictC() {
- String code = "void foo(int n, int * restrict a, int * __restrict b, int * __restrict__ c) {} ";
-
- parse(code, getCLanguage(), true);
- }
-
- public void testRestrictCPPOn() {
- String code = "void foo(int n, int * restrict a, int * __restrict b, int * __restrict__ c) {} ";
-
- parse(code, getCPPLanguage(), true);
- }
-
- public void testRestrictCPPOff() {
- XlcLanguagePreferences.setWorkspacePreference(XlcPref.SUPPORT_RESTRICT_IN_CPP, String.valueOf(false));
- String code = "void restrict(); \n " + "void foo(int n, int * __restrict b, int * __restrict__ c) {} ";
-
- parse(code, getCPPLanguage(), true);
- }
-
- public void testUTFLiterals() {
- String code = "void test() { \n " + " u\"ucs characters \\u1234 and \\u8180 \"; \n "
- + " U\"ucs characters \\u1234 and \\u8180 \"; \n "
- + " U\"concatenation \\u1234 \" u\"is allowed \\u8180 \"; \n " + " u'\\u1234'; \n "
- + " U'\\u1234'; \n " + "}";
-
- parse(code, getCLanguage(), true);
- parse(code, getCPPLanguage(), true);
- }
-
- public void testFloatingPointTypes() {
- String code = " _Decimal32 x = 22.2df; \n " + " _Decimal64 y = 33.3dd; \n " + " _Decimal128 z = 33.3dl; \n ";
-
- parse(code, getCLanguage(), true);
- parse(code, getCPPLanguage(), true);
- }
-
- public void testVariableLengthArrays() {
- String code = "double maximum1(int n, int m, double a[n][m]);\n"
- + "double maximum2(int n, int m, double a[*][*]);\n"
- + "double maximum3(int n, int m, double a[ ][*]);\n"
- + "double maximum4(int n, int m, double a[ ][m]);\n";
-
- parse(code, getCLanguage(), true);
- parse(code, getCPPLanguage(), true); // xlc supports this in C++
- }
-
- public void testV11Attributes() {
- String code = "#define __inline__ __inline__ __attribute__((gnu_inline)) \n" +
-
- "static int w() __attribute__ ((weakref (\"y\")));\n" +
- /* is equivalent to... */
- "static int x() __attribute__ ((weak, weakref, alias (\"y\")));\n" +
- /* and to... */
- "static int y() __attribute__ ((weakref));\n" + "static int z() __attribute__ ((alias (\"y\"))); \n" +
-
- "int foo() __attribute__((gnu_inline)); \n"
- + "static inline __attribute__((gnu_inline)) int ins (int *a){ \n" + " (*a)++; \n" + "} \n"
- + "inline __attribute__((gnu_inline)) int inc (int *a){ \n" + " (*a)++; \n" + "} ";
-
- parse(code, getCLanguage(), true);
- parse(code, getCPPLanguage(), true);
- }
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/XlcExtensionsTestSuite.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/XlcExtensionsTestSuite.java
deleted file mode 100644
index 42a42ae5268..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/XlcExtensionsTestSuite.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.parser.xlc.tests;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-public class XlcExtensionsTestSuite extends TestSuite {
-
- public static Test suite() {
- return new TestSuite() {
- {
- addTestSuite(VectorExtensionsTest.class);
- addTestSuite(XlcExtensionsTest.class);
- }
- };
- }
-} \ No newline at end of file
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/XlcTestBase.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/XlcTestBase.java
deleted file mode 100644
index 64a4fca6ddc..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/XlcTestBase.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.parser.xlc.tests;
-
-import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
-import org.eclipse.cdt.core.lrparser.tests.ParseHelper;
-import org.eclipse.cdt.core.lrparser.xlc.XlcCLanguage;
-import org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage;
-import org.eclipse.cdt.core.model.ILanguage;
-
-import junit.framework.TestCase;
-
-public class XlcTestBase extends TestCase {
-
- public XlcTestBase() {
- }
-
- public XlcTestBase(String name) {
- super(name);
- }
-
- protected IASTTranslationUnit parse(String code, ILanguage language, boolean checkBindings) {
- ParseHelper.Options options = new ParseHelper.Options();
- options.setCheckSyntaxProblems(true);
- options.setCheckPreprocessorProblems(true);
- options.setCheckBindings(checkBindings);
- return ParseHelper.parse(code, language, options);
- }
-
- protected XlcCLanguage getCLanguage() {
- return XlcCLanguage.getDefault();
- }
-
- protected XlcCPPLanguage getCPPLanguage() {
- return XlcCPPLanguage.getDefault();
- }
-
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcCompletionHangingTest.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcCompletionHangingTest.java
deleted file mode 100644
index b6bdfef9014..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcCompletionHangingTest.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.parser.xlc.tests.base;
-
-import org.eclipse.cdt.core.lrparser.tests.LRCompletionHangingTest;
-import org.eclipse.cdt.core.lrparser.xlc.XlcCLanguage;
-import org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage;
-
-import junit.framework.TestSuite;
-
-public class XlcCompletionHangingTest extends LRCompletionHangingTest {
-
- public static TestSuite suite() {
- return new TestSuite(XlcCompletionHangingTest.class);
- }
-
- //TODO ??? overwrite some failed test cases
- @Override
- public void testCompletionTemplateClassForCPP() throws Exception {
- }
-
- @Override
- public void testCompletionGnuCPP() throws Exception {
- }
-
- @Override
- protected XlcCLanguage getCLanguage() {
- return XlcCLanguage.getDefault();
- }
-
- @Override
- protected XlcCPPLanguage getCPPLanguage() {
- return XlcCPPLanguage.getDefault();
- }
-
- public void testCompletionXlc() throws Exception {
-
- String code = " __static_assert" + CONTENT_ASIST_CURSOR + "(a>" + CONTENT_ASIST_CURSOR
- + "b, \"no 64-bit support\"); \n" + " vector " + CONTENT_ASIST_CURSOR + "unsigned "
- + CONTENT_ASIST_CURSOR + "int d = ++a; \n";
- runTestCase(code, getCPPLanguage());
- }
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCPPImplicitNameTests.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCPPImplicitNameTests.java
deleted file mode 100644
index 47f0aa25cef..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCPPImplicitNameTests.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2010 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.parser.xlc.tests.base;
-
-import org.eclipse.cdt.core.lrparser.tests.LRCPPImplicitNameTests;
-import org.eclipse.cdt.core.lrparser.xlc.XlcCLanguage;
-import org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage;
-import org.eclipse.cdt.core.model.ILanguage;
-
-import junit.framework.TestSuite;
-
-public class XlcLRCPPImplicitNameTests extends LRCPPImplicitNameTests {
- public static TestSuite suite() {
- return suite(XlcLRCPPImplicitNameTests.class);
- }
-
- @Override
- protected ILanguage getCLanguage() {
- return XlcCLanguage.getDefault();
- }
-
- @Override
- protected ILanguage getCPPLanguage() {
- return XlcCPPLanguage.getDefault();
- }
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCPPSpecTest.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCPPSpecTest.java
deleted file mode 100644
index 9936cdfd898..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCPPSpecTest.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2010 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.parser.xlc.tests.base;
-
-import org.eclipse.cdt.core.lrparser.tests.LRCPPSpecTest;
-import org.eclipse.cdt.core.lrparser.xlc.XlcCLanguage;
-import org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage;
-import org.eclipse.cdt.core.model.ILanguage;
-
-import junit.framework.TestSuite;
-
-public class XlcLRCPPSpecTest extends LRCPPSpecTest {
- public static TestSuite suite() {
- return suite(XlcLRCPPSpecTest.class);
- }
-
- @Override
- protected ILanguage getCLanguage() {
- return XlcCLanguage.getDefault();
- }
-
- @Override
- protected ILanguage getCPPLanguage() {
- return XlcCPPLanguage.getDefault();
- }
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCPPTests.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCPPTests.java
deleted file mode 100644
index b9d4cbb7587..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCPPTests.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2010 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.parser.xlc.tests.base;
-
-import org.eclipse.cdt.core.lrparser.tests.LRCPPTests;
-import org.eclipse.cdt.core.lrparser.xlc.XlcCLanguage;
-import org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage;
-import org.eclipse.cdt.core.model.ILanguage;
-import org.eclipse.cdt.core.parser.ParserLanguage;
-
-import junit.framework.TestSuite;
-
-public class XlcLRCPPTests extends LRCPPTests {
- public static TestSuite suite() {
- return suite(XlcLRCPPTests.class);
- }
-
- //CDT_70_FIX_FROM_50-#9
- @Override
- public void testStaticAssertions_294730() throws Exception {
- String code = getAboveComment();
- code = code.replaceAll("static_assert", "__static_assert");
- parseAndCheckBindings(code, ParserLanguage.CPP);
- }
-
- @Override
- protected ILanguage getCLanguage() {
- return XlcCLanguage.getDefault();
- }
-
- @Override
- protected ILanguage getCPPLanguage() {
- return XlcCPPLanguage.getDefault();
- }
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCSpecTests.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCSpecTests.java
deleted file mode 100644
index d6498da5229..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCSpecTests.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.parser.xlc.tests.base;
-
-import org.eclipse.cdt.core.lrparser.tests.LRCSpecTests;
-import org.eclipse.cdt.core.lrparser.xlc.XlcCLanguage;
-import org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage;
-import org.eclipse.cdt.core.model.ILanguage;
-
-import junit.framework.TestSuite;
-
-public class XlcLRCSpecTests extends LRCSpecTests {
- public static TestSuite suite() {
- return suite(XlcLRCSpecTests.class);
- }
-
- @Override
- protected ILanguage getCLanguage() {
- return XlcCLanguage.getDefault();
- }
-
- @Override
- protected ILanguage getCPPLanguage() {
- return XlcCPPLanguage.getDefault();
- }
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCommentTests.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCommentTests.java
deleted file mode 100644
index 6e0a818e472..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCommentTests.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.parser.xlc.tests.base;
-
-import org.eclipse.cdt.core.lrparser.tests.LRCommentTests;
-import org.eclipse.cdt.core.lrparser.xlc.XlcCLanguage;
-import org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage;
-import org.eclipse.cdt.core.model.ILanguage;
-
-import junit.framework.TestSuite;
-
-public class XlcLRCommentTests extends LRCommentTests {
-
- public static TestSuite suite() {
- return suite(XlcLRCommentTests.class);
- }
-
- @Override
- protected ILanguage getCLanguage() {
- return XlcCLanguage.getDefault();
- }
-
- @Override
- protected ILanguage getCPPLanguage() {
- return XlcCPPLanguage.getDefault();
- }
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCompleteParser2Tests.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCompleteParser2Tests.java
deleted file mode 100644
index 9606a171601..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCompleteParser2Tests.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.parser.xlc.tests.base;
-
-import org.eclipse.cdt.core.lrparser.tests.LRCompleteParser2Tests;
-import org.eclipse.cdt.core.lrparser.xlc.XlcCLanguage;
-import org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage;
-import org.eclipse.cdt.core.model.ILanguage;
-
-import junit.framework.TestSuite;
-
-public class XlcLRCompleteParser2Tests extends LRCompleteParser2Tests {
-
- public static TestSuite suite() {
- return suite(XlcLRCompleteParser2Tests.class);
- }
-
- @Override
- protected ILanguage getCLanguage() {
- return XlcCLanguage.getDefault();
- }
-
- @Override
- protected ILanguage getCPPLanguage() {
- return XlcCPPLanguage.getDefault();
- }
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCompletionBasicTest.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCompletionBasicTest.java
deleted file mode 100644
index 0a53f887e7b..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCompletionBasicTest.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2010 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.parser.xlc.tests.base;
-
-import org.eclipse.cdt.core.lrparser.tests.LRCompletionBasicTest;
-import org.eclipse.cdt.core.lrparser.xlc.XlcCLanguage;
-import org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage;
-import org.eclipse.cdt.core.model.ILanguage;
-
-import junit.framework.TestSuite;
-
-public class XlcLRCompletionBasicTest extends LRCompletionBasicTest {
- public static TestSuite suite() {
- return suite(XlcLRCompletionBasicTest.class);
- }
-
- @Override
- protected ILanguage getCLanguage() {
- return XlcCLanguage.getDefault();
- }
-
- @Override
- protected ILanguage getCPPLanguage() {
- return XlcCPPLanguage.getDefault();
- }
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCompletionParseTest.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCompletionParseTest.java
deleted file mode 100644
index a943b3032a0..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCompletionParseTest.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.parser.xlc.tests.base;
-
-import org.eclipse.cdt.core.lrparser.tests.LRCompletionParseTest;
-import org.eclipse.cdt.core.lrparser.xlc.XlcCLanguage;
-import org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage;
-import org.eclipse.cdt.core.model.ILanguage;
-
-import junit.framework.TestSuite;
-
-public class XlcLRCompletionParseTest extends LRCompletionParseTest {
- public static TestSuite suite() {
- return new TestSuite(XlcLRCompletionParseTest.class);
- }
-
- @Override
- protected ILanguage getCLanguage() {
- return XlcCLanguage.getDefault();
- }
-
- protected ILanguage getCPPLanguage() {
- return XlcCPPLanguage.getDefault();
- }
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRDOMLocationMacroTests.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRDOMLocationMacroTests.java
deleted file mode 100644
index 2be4bce40ff..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRDOMLocationMacroTests.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.parser.xlc.tests.base;
-
-import org.eclipse.cdt.core.lrparser.tests.LRDOMLocationMacroTests;
-import org.eclipse.cdt.core.lrparser.xlc.XlcCLanguage;
-import org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage;
-import org.eclipse.cdt.core.model.ILanguage;
-
-import junit.framework.TestSuite;
-
-public class XlcLRDOMLocationMacroTests extends LRDOMLocationMacroTests {
- public static TestSuite suite() {
- return suite(XlcLRDOMLocationMacroTests.class);
- }
-
- @Override
- protected ILanguage getCLanguage() {
- return XlcCLanguage.getDefault();
- }
-
- @Override
- protected ILanguage getCPPLanguage() {
- return XlcCPPLanguage.getDefault();
- }
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRDOMLocationTests.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRDOMLocationTests.java
deleted file mode 100644
index 9920a915e09..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRDOMLocationTests.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2010 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.parser.xlc.tests.base;
-
-import org.eclipse.cdt.core.lrparser.tests.LRDOMLocationTests;
-import org.eclipse.cdt.core.lrparser.xlc.XlcCLanguage;
-import org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage;
-import org.eclipse.cdt.core.model.ILanguage;
-
-import junit.framework.TestSuite;
-
-public class XlcLRDOMLocationTests extends LRDOMLocationTests {
- public static TestSuite suite() {
- return suite(XlcLRDOMLocationTests.class);
- }
-
- @Override
- protected ILanguage getCLanguage() {
- return XlcCLanguage.getDefault();
- }
-
- @Override
- protected ILanguage getCPPLanguage() {
- return XlcCPPLanguage.getDefault();
- }
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRDOMPreprocessorInformationTest.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRDOMPreprocessorInformationTest.java
deleted file mode 100644
index 0ea3ab34d23..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRDOMPreprocessorInformationTest.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.parser.xlc.tests.base;
-
-import org.eclipse.cdt.core.lrparser.tests.LRDOMPreprocessorInformationTest;
-import org.eclipse.cdt.core.lrparser.xlc.XlcCLanguage;
-import org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage;
-import org.eclipse.cdt.core.model.ILanguage;
-
-import junit.framework.TestSuite;
-
-public class XlcLRDOMPreprocessorInformationTest extends LRDOMPreprocessorInformationTest {
- public static TestSuite suite() {
- return suite(XlcLRDOMPreprocessorInformationTest.class);
- }
-
- @Override
- protected ILanguage getCLanguage() {
- return XlcCLanguage.getDefault();
- }
-
- @Override
- protected ILanguage getCPPLanguage() {
- return XlcCPPLanguage.getDefault();
- }
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRDigraphTrigraphTests.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRDigraphTrigraphTests.java
deleted file mode 100644
index bfb7b3083d3..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRDigraphTrigraphTests.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.parser.xlc.tests.base;
-
-import org.eclipse.cdt.core.lrparser.tests.LRDigraphTrigraphTests;
-import org.eclipse.cdt.core.lrparser.xlc.XlcCLanguage;
-import org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage;
-import org.eclipse.cdt.core.model.ILanguage;
-
-import junit.framework.TestSuite;
-
-public class XlcLRDigraphTrigraphTests extends LRDigraphTrigraphTests {
-
- public static TestSuite suite() {
- return new TestSuite(XlcLRDigraphTrigraphTests.class);
- }
-
- @Override
- protected ILanguage getCLanguage() {
- return XlcCLanguage.getDefault();
- }
-
- protected ILanguage getCPPLanguage() {
- return XlcCPPLanguage.getDefault();
- }
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRGCCCompleteParseExtensionsTest.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRGCCCompleteParseExtensionsTest.java
deleted file mode 100644
index 593c137e193..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRGCCCompleteParseExtensionsTest.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.parser.xlc.tests.base;
-
-import org.eclipse.cdt.core.lrparser.tests.LRGCCCompleteParseExtensionsTest;
-import org.eclipse.cdt.core.lrparser.xlc.XlcCLanguage;
-import org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage;
-import org.eclipse.cdt.core.model.ILanguage;
-
-import junit.framework.TestSuite;
-
-public class XlcLRGCCCompleteParseExtensionsTest extends LRGCCCompleteParseExtensionsTest {
- public static TestSuite suite() {
- return suite(XlcLRGCCCompleteParseExtensionsTest.class);
- }
-
- @Override
- protected ILanguage getCLanguage() {
- return XlcCLanguage.getDefault();
- }
-
- @Override
- protected ILanguage getCPPLanguage() {
- return XlcCPPLanguage.getDefault();
- }
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRGCCTests.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRGCCTests.java
deleted file mode 100644
index f21a19a567d..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRGCCTests.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.parser.xlc.tests.base;
-
-import org.eclipse.cdt.core.lrparser.tests.LRGCCTests;
-import org.eclipse.cdt.core.lrparser.xlc.XlcCLanguage;
-import org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage;
-import org.eclipse.cdt.core.model.ILanguage;
-
-import junit.framework.TestSuite;
-
-public class XlcLRGCCTests extends LRGCCTests {
- public static TestSuite suite() {
- return suite(XlcLRGCCTests.class);
- }
-
- @Override
- protected ILanguage getCLanguage() {
- return XlcCLanguage.getDefault();
- }
-
- @Override
- protected ILanguage getCPPLanguage() {
- return XlcCPPLanguage.getDefault();
- }
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRImageLocationTests.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRImageLocationTests.java
deleted file mode 100644
index f77ab28e359..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRImageLocationTests.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.parser.xlc.tests.base;
-
-import org.eclipse.cdt.core.lrparser.tests.LRImageLocationTests;
-import org.eclipse.cdt.core.lrparser.xlc.XlcCLanguage;
-import org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage;
-import org.eclipse.cdt.core.model.ILanguage;
-
-import junit.framework.TestSuite;
-
-public class XlcLRImageLocationTests extends LRImageLocationTests {
- public static TestSuite suite() {
- return suite(XlcLRImageLocationTests.class);
- }
-
- @Override
- protected ILanguage getCLanguage() {
- return XlcCLanguage.getDefault();
- }
-
- @Override
- protected ILanguage getCPPLanguage() {
- return XlcCPPLanguage.getDefault();
- }
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRInactiveCodeTests.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRInactiveCodeTests.java
deleted file mode 100644
index 4c39e6a024d..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRInactiveCodeTests.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.parser.xlc.tests.base;
-
-import org.eclipse.cdt.core.lrparser.tests.LRInactiveCodeTests;
-import org.eclipse.cdt.core.lrparser.xlc.XlcCLanguage;
-import org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage;
-import org.eclipse.cdt.core.model.ILanguage;
-
-import junit.framework.TestSuite;
-
-public class XlcLRInactiveCodeTests extends LRInactiveCodeTests {
- public static TestSuite suite() {
- return suite(XlcLRInactiveCodeTests.class);
- }
-
- @Override
- protected ILanguage getCLanguage() {
- return XlcCLanguage.getDefault();
- }
-
- @Override
- protected ILanguage getCPPLanguage() {
- return XlcCPPLanguage.getDefault();
- }
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRKnRTests.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRKnRTests.java
deleted file mode 100644
index 9e1f5d2957f..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRKnRTests.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.parser.xlc.tests.base;
-
-import org.eclipse.cdt.core.lrparser.tests.LRKnRTests;
-import org.eclipse.cdt.core.lrparser.xlc.XlcCLanguage;
-import org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage;
-import org.eclipse.cdt.core.model.ILanguage;
-
-import junit.framework.TestSuite;
-
-public class XlcLRKnRTests extends LRKnRTests {
- public static TestSuite suite() {
- return suite(XlcLRKnRTests.class);
- }
-
- @Override
- protected ILanguage getCLanguage() {
- return XlcCLanguage.getDefault();
- }
-
- @Override
- protected ILanguage getCPPLanguage() {
- return XlcCPPLanguage.getDefault();
- }
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRNodeSelectorTest.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRNodeSelectorTest.java
deleted file mode 100644
index 6d394b7e3f1..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRNodeSelectorTest.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.parser.xlc.tests.base;
-
-import org.eclipse.cdt.core.lrparser.tests.LRNodeSelectorTest;
-import org.eclipse.cdt.core.lrparser.xlc.XlcCLanguage;
-import org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage;
-import org.eclipse.cdt.core.model.ILanguage;
-
-import junit.framework.TestSuite;
-
-public class XlcLRNodeSelectorTest extends LRNodeSelectorTest {
- public static TestSuite suite() {
- return suite(XlcLRNodeSelectorTest.class);
- }
-
- @Override
- protected ILanguage getCLanguage() {
- return XlcCLanguage.getDefault();
- }
-
- @Override
- protected ILanguage getCPPLanguage() {
- return XlcCPPLanguage.getDefault();
- }
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRParserTestSuite.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRParserTestSuite.java
deleted file mode 100644
index 4db01c58b36..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRParserTestSuite.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2010 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.parser.xlc.tests.base;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-public class XlcLRParserTestSuite extends TestSuite {
-
- // TODO: the following test are not being reused
- //
- // DOMGCCSelectionParseExtensionsTest
- // DOMSelectionParseTest
- // GCCCompleteParseExtensionsTest
- // QuickParser2Tests
- //
- // and perhaps others
-
- public static Test suite() {
- return new TestSuite() {
- {
-
- addTest(XlcLRCommentTests.suite());
- addTest(XlcLRCompleteParser2Tests.suite());
- addTest(XlcLRCompletionBasicTest.suite());
- addTest(XlcLRCompletionParseTest.suite());
- addTest(XlcLRCPPSpecTest.suite());
- addTest(XlcLRCPPTests.suite());
- addTest(XlcLRCSpecTests.suite()); // a couple of failures
- addTest(XlcLRDigraphTrigraphTests.suite());
- addTest(XlcLRDOMLocationMacroTests.suite());
- addTest(XlcLRDOMLocationTests.suite());
- addTest(XlcLRDOMPreprocessorInformationTest.suite());
- addTest(XlcLRGCCTests.suite());
- addTest(XlcLRGCCCompleteParseExtensionsTest.suite());
- addTest(XlcLRImageLocationTests.suite());
- addTest(XlcLRKnRTests.suite()); // mostly fail due to ambiguities
- addTest(XlcLRNodeSelectorTest.suite());
- addTest(XlcLRQuickParser2Tests.suite());
- addTest(XlcLRSelectionParseTest.suite()); // this one still has a lot of failing tests though
- addTest(XlcLRSemanticsTests.suite());
- addTest(XlcLRTaskParserTest.suite());
- addTest(XlcLRTemplateTests.suite());
- addTest(XlcLRTests.suite()); // has some tests that do fail
- addTest(XlcLRUtilOldTests.suite());
- addTest(XlcLRUtilTests.suite());
- addTest(XlcCompletionHangingTest.suite());
- addTest(XlcLRCPPImplicitNameTests.suite());
- //addTest(LRInactiveCodeTests.suite());
-
- }
- };
- }
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRQuickParser2Tests.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRQuickParser2Tests.java
deleted file mode 100644
index 76538c7f922..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRQuickParser2Tests.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.parser.xlc.tests.base;
-
-import org.eclipse.cdt.core.lrparser.tests.LRQuickParser2Tests;
-import org.eclipse.cdt.core.lrparser.xlc.XlcCLanguage;
-import org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage;
-import org.eclipse.cdt.core.model.ILanguage;
-
-import junit.framework.TestSuite;
-
-public class XlcLRQuickParser2Tests extends LRQuickParser2Tests {
- public static TestSuite suite() {
- return new TestSuite(XlcLRQuickParser2Tests.class);
- }
-
- @Override
- protected ILanguage getCLanguage() {
- return XlcCLanguage.getDefault();
- }
-
- @Override
- protected ILanguage getCPPLanguage() {
- return XlcCPPLanguage.getDefault();
- }
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRSelectionParseTest.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRSelectionParseTest.java
deleted file mode 100644
index 0ac2dc498bb..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRSelectionParseTest.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.parser.xlc.tests.base;
-
-import org.eclipse.cdt.core.lrparser.tests.LRSelectionParseTest;
-import org.eclipse.cdt.core.lrparser.xlc.XlcCLanguage;
-import org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage;
-import org.eclipse.cdt.core.model.ILanguage;
-
-import junit.framework.TestSuite;
-
-public class XlcLRSelectionParseTest extends LRSelectionParseTest {
-
- public XlcLRSelectionParseTest() {
- }
-
- public XlcLRSelectionParseTest(String name) {
- super(name);
- }
-
- public static TestSuite suite() {
- return new TestSuite(XlcLRSelectionParseTest.class);
- }
-
- @Override
- protected ILanguage getCLanguage() {
- return XlcCLanguage.getDefault();
- }
-
- @Override
- protected ILanguage getCPPLanguage() {
- return XlcCPPLanguage.getDefault();
- }
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRSemanticsTests.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRSemanticsTests.java
deleted file mode 100644
index 051df1b1f7e..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRSemanticsTests.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.parser.xlc.tests.base;
-
-import org.eclipse.cdt.core.lrparser.tests.LRSemanticsTests;
-import org.eclipse.cdt.core.lrparser.xlc.XlcCLanguage;
-import org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage;
-import org.eclipse.cdt.core.model.ILanguage;
-
-import junit.framework.TestSuite;
-
-public class XlcLRSemanticsTests extends LRSemanticsTests {
- public static TestSuite suite() {
- return suite(XlcLRSemanticsTests.class);
- }
-
- @Override
- protected ILanguage getCLanguage() {
- return XlcCLanguage.getDefault();
- }
-
- @Override
- protected ILanguage getCPPLanguage() {
- return XlcCPPLanguage.getDefault();
- }
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRTaskParserTest.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRTaskParserTest.java
deleted file mode 100644
index b2998bdb60a..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRTaskParserTest.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.parser.xlc.tests.base;
-
-import org.eclipse.cdt.core.lrparser.tests.LRTaskParserTest;
-import org.eclipse.cdt.core.lrparser.xlc.XlcCLanguage;
-import org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage;
-import org.eclipse.cdt.core.model.ILanguage;
-
-import junit.framework.TestSuite;
-
-public class XlcLRTaskParserTest extends LRTaskParserTest {
- public static TestSuite suite() {
- return suite(XlcLRTaskParserTest.class);
- }
-
- @Override
- protected ILanguage getCLanguage() {
- return XlcCLanguage.getDefault();
- }
-
- @Override
- protected ILanguage getCPPLanguage() {
- return XlcCPPLanguage.getDefault();
- }
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRTemplateTests.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRTemplateTests.java
deleted file mode 100644
index d6f5e0fb11b..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRTemplateTests.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2010 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.parser.xlc.tests.base;
-
-import org.eclipse.cdt.core.lrparser.tests.LRTemplateTests;
-import org.eclipse.cdt.core.lrparser.xlc.XlcCLanguage;
-import org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage;
-import org.eclipse.cdt.core.model.ILanguage;
-
-import junit.framework.TestSuite;
-
-public class XlcLRTemplateTests extends LRTemplateTests {
- public static TestSuite suite() {
- return suite(XlcLRTemplateTests.class);
- }
-
- @Override
- protected ILanguage getCLanguage() {
- return XlcCLanguage.getDefault();
- }
-
- @Override
- protected ILanguage getCPPLanguage() {
- return XlcCPPLanguage.getDefault();
- }
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRTests.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRTests.java
deleted file mode 100644
index c8a2d9617d2..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRTests.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2010 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.parser.xlc.tests.base;
-
-import org.eclipse.cdt.core.lrparser.tests.LRTests;
-import org.eclipse.cdt.core.lrparser.xlc.XlcCLanguage;
-import org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage;
-import org.eclipse.cdt.core.model.ILanguage;
-
-import junit.framework.TestSuite;
-
-public class XlcLRTests extends LRTests {
-
- public XlcLRTests(String name) {
- super(name);
- // TODO Auto-generated constructor stub
- }
-
- public static TestSuite suite() {
- return suite(XlcLRTests.class);
- }
-
- @Override
- protected ILanguage getCLanguage() {
- return XlcCLanguage.getDefault();
- }
-
- @Override
- protected ILanguage getCPPLanguage() {
- return XlcCPPLanguage.getDefault();
- }
-
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRUtilOldTests.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRUtilOldTests.java
deleted file mode 100644
index 65d13626662..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRUtilOldTests.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.parser.xlc.tests.base;
-
-import org.eclipse.cdt.core.lrparser.tests.LRUtilOldTests;
-import org.eclipse.cdt.core.lrparser.xlc.XlcCLanguage;
-import org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage;
-import org.eclipse.cdt.core.model.ILanguage;
-
-import junit.framework.TestSuite;
-
-public class XlcLRUtilOldTests extends LRUtilOldTests {
- public static TestSuite suite() {
- return suite(XlcLRUtilOldTests.class);
- }
-
- @Override
- protected ILanguage getCLanguage() {
- return XlcCLanguage.getDefault();
- }
-
- @Override
- protected ILanguage getCPPLanguage() {
- return XlcCPPLanguage.getDefault();
- }
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRUtilTests.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRUtilTests.java
deleted file mode 100644
index c6076bddb4e..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRUtilTests.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.parser.xlc.tests.base;
-
-import org.eclipse.cdt.core.lrparser.tests.LRUtilTests;
-import org.eclipse.cdt.core.lrparser.xlc.XlcCLanguage;
-import org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage;
-import org.eclipse.cdt.core.model.ILanguage;
-
-import junit.framework.TestSuite;
-
-public class XlcLRUtilTests extends LRUtilTests {
- public static TestSuite suite() {
- return suite(XlcLRUtilTests.class);
- }
-
- @Override
- protected ILanguage getCLanguage() {
- return XlcCLanguage.getDefault();
- }
-
- @Override
- protected ILanguage getCPPLanguage() {
- return XlcCPPLanguage.getDefault();
- }
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/suite/AutomatedIntegrationSuite.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/suite/AutomatedIntegrationSuite.java
deleted file mode 100644
index 9e612d97bc7..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/suite/AutomatedIntegrationSuite.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.parser.xlc.tests.suite;
-
-import org.eclipse.cdt.core.parser.xlc.tests.XlcExtensionsTestSuite;
-import org.eclipse.cdt.core.parser.xlc.tests.base.XlcLRParserTestSuite;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-public class AutomatedIntegrationSuite extends TestSuite {
-
- public static Test suite() {
- return new TestSuite() {
- {
- addTest(XlcExtensionsTestSuite.suite());
- addTest(XlcLRParserTestSuite.suite());
- }
- };
- }
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/.classpath b/xlc/org.eclipse.cdt.core.lrparser.xlc/.classpath
deleted file mode 100644
index a7e2cc574de..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc/.classpath
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
- <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="src" path="parser"/>
- <classpathentry kind="src" path="ui"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/.project b/xlc/org.eclipse.cdt.core.lrparser.xlc/.project
deleted file mode 100644
index 3bfc968624b..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.cdt.core.lrparser.xlc</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.ManifestBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.SchemaBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.pde.PluginNature</nature>
- <nature>org.eclipse.jdt.core.javanature</nature>
- </natures>
-</projectDescription>
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/.settings/org.eclipse.jdt.core.prefs b/xlc/org.eclipse.cdt.core.lrparser.xlc/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 2b6ecff8a01..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,464 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
-org.eclipse.jdt.core.codeComplete.argumentPrefixes=
-org.eclipse.jdt.core.codeComplete.argumentSuffixes=
-org.eclipse.jdt.core.codeComplete.fieldPrefixes=
-org.eclipse.jdt.core.codeComplete.fieldSuffixes=
-org.eclipse.jdt.core.codeComplete.localPrefixes=
-org.eclipse.jdt.core.codeComplete.localSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
-org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
-org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
-org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
-org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
-org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
-org.eclipse.jdt.core.compiler.problem.APILeak=warning
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
-org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
-org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
-org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
-org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
-org.eclipse.jdt.core.compiler.problem.nullReference=error
-org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
-org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
-org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
-org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
-org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
-org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
-org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
-org.eclipse.jdt.core.formatter.align_with_spaces=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
-org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
-org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
-org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
-org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=0
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
-org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
-org.eclipse.jdt.core.formatter.comment.format_block_comments=false
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
-org.eclipse.jdt.core.formatter.comment.format_line_comments=false
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
-org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
-org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
-org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.join_lines_in_comments=true
-org.eclipse.jdt.core.formatter.join_wrapped_lines=true
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=120
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_on_off_tags=true
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
-org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
-org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/.settings/org.eclipse.jdt.ui.prefs b/xlc/org.eclipse.cdt.core.lrparser.xlc/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index e44576346c4..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,133 +0,0 @@
-cleanup.add_default_serial_version_id=true
-cleanup.add_generated_serial_version_id=false
-cleanup.add_missing_annotations=true
-cleanup.add_missing_deprecated_annotations=true
-cleanup.add_missing_methods=false
-cleanup.add_missing_nls_tags=false
-cleanup.add_missing_override_annotations=true
-cleanup.add_missing_override_annotations_interface_methods=true
-cleanup.add_serial_version_id=false
-cleanup.always_use_blocks=true
-cleanup.always_use_parentheses_in_expressions=false
-cleanup.always_use_this_for_non_static_field_access=false
-cleanup.always_use_this_for_non_static_method_access=false
-cleanup.convert_functional_interfaces=false
-cleanup.convert_to_enhanced_for_loop=false
-cleanup.correct_indentation=false
-cleanup.format_source_code=true
-cleanup.format_source_code_changes_only=false
-cleanup.insert_inferred_type_arguments=false
-cleanup.make_local_variable_final=true
-cleanup.make_parameters_final=false
-cleanup.make_private_fields_final=true
-cleanup.make_type_abstract_if_missing_method=false
-cleanup.make_variable_declarations_final=false
-cleanup.never_use_blocks=false
-cleanup.never_use_parentheses_in_expressions=true
-cleanup.organize_imports=true
-cleanup.qualify_static_field_accesses_with_declaring_class=false
-cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-cleanup.qualify_static_member_accesses_with_declaring_class=false
-cleanup.qualify_static_method_accesses_with_declaring_class=false
-cleanup.remove_private_constructors=true
-cleanup.remove_redundant_modifiers=false
-cleanup.remove_redundant_semicolons=true
-cleanup.remove_redundant_type_arguments=true
-cleanup.remove_trailing_whitespaces=true
-cleanup.remove_trailing_whitespaces_all=true
-cleanup.remove_trailing_whitespaces_ignore_empty=false
-cleanup.remove_unnecessary_casts=true
-cleanup.remove_unnecessary_nls_tags=false
-cleanup.remove_unused_imports=true
-cleanup.remove_unused_local_variables=false
-cleanup.remove_unused_private_fields=true
-cleanup.remove_unused_private_members=false
-cleanup.remove_unused_private_methods=true
-cleanup.remove_unused_private_types=true
-cleanup.sort_members=false
-cleanup.sort_members_all=false
-cleanup.use_anonymous_class_creation=false
-cleanup.use_blocks=false
-cleanup.use_blocks_only_for_return_and_throw=false
-cleanup.use_lambda=true
-cleanup.use_parentheses_in_expressions=false
-cleanup.use_this_for_non_static_field_access=false
-cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-cleanup.use_this_for_non_static_method_access=false
-cleanup.use_this_for_non_static_method_access_only_if_necessary=true
-cleanup_profile=_CDT
-cleanup_settings_version=2
-eclipse.preferences.version=1
-editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=_CDT
-formatter_settings_version=14
-internal.default.compliance=user
-org.eclipse.jdt.ui.exception.name=e
-org.eclipse.jdt.ui.gettersetter.use.is=true
-org.eclipse.jdt.ui.ignorelowercasenames=true
-org.eclipse.jdt.ui.importorder=java;javax;org;com;
-org.eclipse.jdt.ui.keywordthis=false
-org.eclipse.jdt.ui.ondemandthreshold=1000
-org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.staticondemandthreshold=1000
-org.eclipse.jdt.ui.text.custom_code_templates=
-sp_cleanup.add_default_serial_version_id=true
-sp_cleanup.add_generated_serial_version_id=false
-sp_cleanup.add_missing_annotations=true
-sp_cleanup.add_missing_deprecated_annotations=true
-sp_cleanup.add_missing_methods=false
-sp_cleanup.add_missing_nls_tags=false
-sp_cleanup.add_missing_override_annotations=true
-sp_cleanup.add_missing_override_annotations_interface_methods=true
-sp_cleanup.add_serial_version_id=false
-sp_cleanup.always_use_blocks=true
-sp_cleanup.always_use_parentheses_in_expressions=false
-sp_cleanup.always_use_this_for_non_static_field_access=false
-sp_cleanup.always_use_this_for_non_static_method_access=false
-sp_cleanup.convert_functional_interfaces=false
-sp_cleanup.convert_to_enhanced_for_loop=false
-sp_cleanup.correct_indentation=false
-sp_cleanup.format_source_code=true
-sp_cleanup.format_source_code_changes_only=false
-sp_cleanup.insert_inferred_type_arguments=false
-sp_cleanup.make_local_variable_final=true
-sp_cleanup.make_parameters_final=false
-sp_cleanup.make_private_fields_final=true
-sp_cleanup.make_type_abstract_if_missing_method=false
-sp_cleanup.make_variable_declarations_final=false
-sp_cleanup.never_use_blocks=false
-sp_cleanup.never_use_parentheses_in_expressions=true
-sp_cleanup.on_save_use_additional_actions=true
-sp_cleanup.organize_imports=true
-sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
-sp_cleanup.remove_private_constructors=true
-sp_cleanup.remove_redundant_modifiers=false
-sp_cleanup.remove_redundant_semicolons=true
-sp_cleanup.remove_redundant_type_arguments=true
-sp_cleanup.remove_trailing_whitespaces=true
-sp_cleanup.remove_trailing_whitespaces_all=true
-sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
-sp_cleanup.remove_unnecessary_casts=true
-sp_cleanup.remove_unnecessary_nls_tags=false
-sp_cleanup.remove_unused_imports=true
-sp_cleanup.remove_unused_local_variables=false
-sp_cleanup.remove_unused_private_fields=true
-sp_cleanup.remove_unused_private_members=false
-sp_cleanup.remove_unused_private_methods=true
-sp_cleanup.remove_unused_private_types=true
-sp_cleanup.sort_members=false
-sp_cleanup.sort_members_all=false
-sp_cleanup.use_anonymous_class_creation=false
-sp_cleanup.use_blocks=false
-sp_cleanup.use_blocks_only_for_return_and_throw=false
-sp_cleanup.use_lambda=true
-sp_cleanup.use_parentheses_in_expressions=false
-sp_cleanup.use_this_for_non_static_field_access=false
-sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-sp_cleanup.use_this_for_non_static_method_access=false
-sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/META-INF/MANIFEST.MF b/xlc/org.eclipse.cdt.core.lrparser.xlc/META-INF/MANIFEST.MF
deleted file mode 100644
index db79790d4ef..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,26 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %Bundle-Name.1
-Bundle-SymbolicName: org.eclipse.cdt.core.lrparser.xlc;singleton:=true
-Bundle-Version: 5.1.100.qualifier
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Bundle-Localization: plugin
-Require-Bundle: org.eclipse.cdt.core;bundle-version="5.1.0",
- org.eclipse.cdt.core.lrparser;bundle-version="5.1.0",
- org.eclipse.core.runtime;bundle-version="3.5.0",
- org.eclipse.core.resources;bundle-version="3.5.0",
- org.eclipse.cdt.ui;bundle-version="5.1.0",
- org.eclipse.ui;bundle-version="3.5.0"
-Export-Package: org.eclipse.cdt.core.lrparser.xlc,
- org.eclipse.cdt.core.lrparser.xlc.action,
- org.eclipse.cdt.core.lrparser.xlc.activator,
- org.eclipse.cdt.core.lrparser.xlc.ast,
- org.eclipse.cdt.core.lrparser.xlc.preferences,
- org.eclipse.cdt.internal.core.lrparser.xlc.ast,
- org.eclipse.cdt.internal.core.lrparser.xlc.c,
- org.eclipse.cdt.internal.core.lrparser.xlc.cpp,
- org.eclipse.cdt.internal.core.lrparser.xlc.ui.preferences
-Bundle-ActivationPolicy: lazy
-Bundle-Activator: org.eclipse.cdt.core.lrparser.xlc.activator.XlcParserPlugin
-Bundle-Vendor: %Bundle-Vendor.0
-Automatic-Module-Name: org.eclipse.cdt.core.lrparser.xlc
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/about.html b/xlc/org.eclipse.cdt.core.lrparser.xlc/about.html
deleted file mode 100644
index 164f781a8fd..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc/about.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
-</head>
-<body lang="EN-US">
- <h2>About This Content</h2>
-
- <p>November 30, 2017</p>
- <h3>License</h3>
-
- <p>
- The Eclipse Foundation makes available all content in this plug-in
- (&quot;Content&quot;). Unless otherwise indicated below, the Content
- is provided to you under the terms and conditions of the Eclipse
- Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
- For purposes of the EPL, &quot;Program&quot; will mean the Content.
- </p>
-
- <p>
- If you did not receive this Content directly from the Eclipse
- Foundation, the Content is being redistributed by another party
- (&quot;Redistributor&quot;) and different terms and conditions may
- apply to your use of any object code in the Content. Check the
- Redistributor's license that was provided with the Content. If no such
- license exists, contact the Redistributor. Unless otherwise indicated
- below, the terms and conditions of the EPL still apply to any source
- code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
- </p>
-
-</body>
-</html> \ No newline at end of file
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/build.properties b/xlc/org.eclipse.cdt.core.lrparser.xlc/build.properties
deleted file mode 100644
index e27218e5989..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc/build.properties
+++ /dev/null
@@ -1,23 +0,0 @@
-###############################################################################
-# Copyright (c) 2009 IBM Corporation and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-
-source.. = parser/,\
- ui/
-output.. = bin/
-bin.includes = META-INF/,\
- .,\
- plugin.xml,\
- plugin.properties,\
- about.html
-src.includes = about.html
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/grammar/build.xml b/xlc/org.eclipse.cdt.core.lrparser.xlc/grammar/build.xml
deleted file mode 100644
index 8b6cc550cb0..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc/grammar/build.xml
+++ /dev/null
@@ -1,62 +0,0 @@
-<!--
- Copyright (c) 2009, 2010 IBM Corporation and others.
- This program and the accompanying materials
- are made available under the terms of the Eclipse Public License 2.0
- which accompanies this distribution, and is available at
- https://www.eclipse.org/legal/epl-2.0/
-
- SPDX-License-Identifier: EPL-2.0
-
- Contributors:
- IBM Corporation - initial API and implementation
--->
-
-<project name="XLC Parsers" default="c" basedir=".">
-
- <import file="../../org.eclipse.cdt.core.lrparser/grammar/generate.xml" />
-
- <property name="c_location" value="../parser/org/eclipse/cdt/internal/core/lrparser/xlc/c" />
- <property name="cpp_location" value="../parser/org/eclipse/cdt/internal/core/lrparser/xlc/cpp" />
-
-
- <target name="c">
- <antcall target="generate_c">
- <param name="grammar_name" value="XlcCParser" />
- </antcall>
- </target>
-
- <target name="cpp">
- <antcall target="generate_cpp">
- <param name="grammar_name" value="XlcCPPParser" />
- </antcall>
- </target>
-
-
- <target name="generate_c">
- <property name="lpg_include" value="${lpg_include_loc}/gcc" />
- <antcall target="generate">
- <param name="grammar_dir" value="xlc" />
- <param name="output_dir" value="${c_location}" />
- <param name="grammar_name" value="${grammar_name}" />
- </antcall>
- </target>
-
- <target name="generate_cpp">
- <property name="lpg_include" value="${lpg_include_loc}/gpp" />
- <antcall target="generate">
- <param name="grammar_dir" value="xlc" />
- <param name="output_dir" value="${cpp_location}" />
- <param name="grammar_name" value="${grammar_name}" />
- </antcall>
- </target>
-
- <target name="clean_l_files">
- <delete>
-
- <fileset dir="${c_location}" includes="**/*.l" />
- <fileset dir="${cpp_location}" includes="**/*.l" />
-
- </delete>
- </target>
-
-</project> \ No newline at end of file
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/grammar/parserBuild.properties b/xlc/org.eclipse.cdt.core.lrparser.xlc/grammar/parserBuild.properties
deleted file mode 100644
index 819371e3704..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc/grammar/parserBuild.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-###############################################################################
-# Copyright (c) 2010 IBM Corporation and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-
-lpg_exe=D:/lpg/lpgdistribution/lpgexe/lpg.exe
-lpg_template=D:/newWorkspace/rdp80_dev/org.eclipse.cdt.core.lrparser/grammar/template
-lpg_include_loc=D:/newWorkspace/rdp80_dev/org.eclipse.cdt.core.lrparser/grammar \ No newline at end of file
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/grammar/xlc/XlcCPPParser.g b/xlc/org.eclipse.cdt.core.lrparser.xlc/grammar/xlc/XlcCPPParser.g
deleted file mode 100644
index 17216a75493..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc/grammar/xlc/XlcCPPParser.g
+++ /dev/null
@@ -1,110 +0,0 @@
------------------------------------------------------------------------------------
--- Copyright (c) 2009, 2010 IBM Corporation and others.
--- This program and the accompanying materials
--- are made available under the terms of the Eclipse Public License 2.0
--- which accompanies this distribution, and is available at
--- https://www.eclipse.org/legal/epl-2.0/
---
--- SPDX-License-Identifier: EPL-2.0
---
--- Contributors:
--- IBM Corporation - initial API and implementation
------------------------------------------------------------------------------------
-
-%options la=2
-%options package=org.eclipse.cdt.internal.core.lrparser.xlc.cpp
-%options template=LRParserTemplate.g
-
-
-$Import
- GPPGrammar.g
-$End
-
-$Import
- XlcGrammarExtensions.g
-$End
-
-$Globals
-/.
- import org.eclipse.cdt.core.lrparser.xlc.action.XlcCPPBuildASTParserAction;
- import org.eclipse.cdt.core.dom.lrparser.action.gnu.GPPSecondaryParserFactory;
- import org.eclipse.cdt.internal.core.lrparser.xlc.ast.XlcCPPNodeFactory;
-./
-$End
-
-$Define
-
- $build_action_class /. XlcCPPBuildASTParserAction ./
- $parser_factory_create_expression /. GPPSecondaryParserFactory.getDefault() ./
- $node_factory_create_expression /. XlcCPPNodeFactory.getDefault() ./
-
-$End
-
-
-
-$Terminals
-
- restrict
-
-$End
-
-
-$Start
- translation_unit
-$End
-
-
-$Rules
-
-
-cv_qualifier
- ::= 'restrict'
-
-block_declaration
- ::= vector_declaration
- | static_assert_declaration
-
-
-identifier_token
- ::= 'vector'
- | 'pixel'
-
-
-specifier_qualifier
- ::= 'typedef'
- /. $Build consumeToken(); $EndBuild ./
-
-
-array_modifier
- ::= '[' <openscope-ast> array_modifier_type_qualifiers ']'
- /. $Build consumeDirectDeclaratorModifiedArrayModifier(false, false, true, false); $EndBuild ./
- | '[' <openscope-ast> array_modifier_type_qualifiers assignment_expression ']'
- /. $Build consumeDirectDeclaratorModifiedArrayModifier(false, false, true, true); $EndBuild ./
- | '[' 'static' assignment_expression ']'
- /. $Build consumeDirectDeclaratorModifiedArrayModifier(true, false, false, true); $EndBuild ./
- | '[' 'static' <openscope-ast> array_modifier_type_qualifiers assignment_expression ']'
- /. $Build consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true); $EndBuild ./
- | '[' <openscope-ast> array_modifier_type_qualifiers 'static' assignment_expression ']'
- /. $Build consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true); $EndBuild ./
- | '[' '*' ']'
- /. $Build consumeDirectDeclaratorModifiedArrayModifier(false, true, false, false); $EndBuild ./
- | '[' <openscope-ast> array_modifier_type_qualifiers '*' ']'
- /. $Build consumeDirectDeclaratorModifiedArrayModifier(false, true, true, false); $EndBuild ./
-
-
-array_modifier_type_qualifiers
- ::= type_qualifier_list
-
-type_qualifier_list
- ::= cv_qualifier
- | type_qualifier_list cv_qualifier
-
-member_declaration
- ::= static_assert_declaration
-
-static_assert_declaration
- ::= '__static_assert' '(' expression ',' literal ')' ';'
- /. $Build consumeCPPASTStaticAssertDeclaration(); $EndBuild ./
-
-
-$End \ No newline at end of file
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/grammar/xlc/XlcCParser.g b/xlc/org.eclipse.cdt.core.lrparser.xlc/grammar/xlc/XlcCParser.g
deleted file mode 100644
index 3f625389e77..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc/grammar/xlc/XlcCParser.g
+++ /dev/null
@@ -1,69 +0,0 @@
------------------------------------------------------------------------------------
--- Copyright (c) 2009 IBM Corporation and others.
--- This program and the accompanying materials
--- are made available under the terms of the Eclipse Public License 2.0
--- which accompanies this distribution, and is available at
--- https://www.eclipse.org/legal/epl-2.0/
---
--- SPDX-License-Identifier: EPL-2.0
---
--- Contributors:
--- IBM Corporation - initial API and implementation
------------------------------------------------------------------------------------
-
-%options la=2
-%options package=org.eclipse.cdt.internal.core.lrparser.xlc.c
-%options template=LRParserTemplate.g
-
-
-$Import
- GCCGrammar.g
-$End
-
-$Import
- XlcGrammarExtensions.g
-$End
-
-
-$Globals
-/.
- import org.eclipse.cdt.core.lrparser.xlc.action.XlcCBuildASTParserAction;
- import org.eclipse.cdt.core.dom.lrparser.action.gnu.GCCSecondaryParserFactory;
- import org.eclipse.cdt.internal.core.lrparser.xlc.ast.XlcCNodeFactory;
-./
-$End
-
-
-$Define
-
- $build_action_class /. XlcCBuildASTParserAction ./
- $parser_factory_create_expression /. GCCSecondaryParserFactory.getDefault() ./
- $node_factory_create_expression /. XlcCNodeFactory.getDefault() ./
-
-$End
-
-
-$Start
- translation_unit
-$End
-
-
-$Rules
-
-declaration
- ::= vector_declaration
-
-identifier_token
- ::= 'pixel'
- | 'vector'
- | 'bool'
-
-declarator_id_name
- ::= 'pixel'
- /. $Build consumeIdentifierName(); $EndBuild ./
- | 'vector'
- /. $Build consumeIdentifierName(); $EndBuild ./
- | 'bool'
- /. $Build consumeIdentifierName(); $EndBuild ./
-
-$End \ No newline at end of file
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/grammar/xlc/XlcGrammarExtensions.g b/xlc/org.eclipse.cdt.core.lrparser.xlc/grammar/xlc/XlcGrammarExtensions.g
deleted file mode 100644
index 96508f17d54..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc/grammar/xlc/XlcGrammarExtensions.g
+++ /dev/null
@@ -1,97 +0,0 @@
------------------------------------------------------------------------------------
--- Copyright (c) 2009, 2010 IBM Corporation and others.
--- This program and the accompanying materials
--- are made available under the terms of the Eclipse Public License 2.0
--- which accompanies this distribution, and is available at
--- https://www.eclipse.org/legal/epl-2.0/
---
--- SPDX-License-Identifier: EPL-2.0
---
--- Contributors:
--- IBM Corporation - initial API and implementation
------------------------------------------------------------------------------------
-
-
--- These are additional rules that allow for parsing of GNU extensions.
--- This file is intended to be mixed-in with C99Parser.g or GPPParser.g
-
-
-$Terminals
-
- vector
- pixel
- bool
-
- _Decimal32
- _Decimal64
- _Decimal128
- __static_assert
-
-$End
-
-
-
-
-
-$Rules
-
-
-
-simple_type_specifier_token
- ::= '_Decimal32'
- | '_Decimal64'
- | '_Decimal128'
-
-
-type_id
- ::= vector_type
- /. $Build consumeTypeId(false); $EndBuild ./
- | vector_type abstract_declarator
- /. $Build consumeTypeId(true); $EndBuild ./
-
-vector_declaration
- ::= vector_type <openscope-ast> init_declarator_list ';'
- /. $Build consumeDeclarationSimple(true); $EndBuild ./
-
-
-vector_type
- ::= <openscope-ast> no_type_declaration_specifiers_opt 'vector' vector_type_specifier all_specifier_qualifier_list_opt
- /. $Build consumeVectorTypeSpecifier(); $EndBuild ./
-
-
-vector_type_specifier
- ::= vector_type_specifier_token
- /. $Build consumeToken(); $EndBuild ./
-
-vector_type_specifier_token
- ::= 'pixel'
- | 'float'
- | 'bool'
- | 'signed'
- | 'unsigned'
- | 'char'
- | 'short'
- | 'int'
- | 'long'
-
-
-
-all_specifier_qualifiers
- ::= vector_type_specifier
- | no_type_declaration_specifiers
-
-all_specifier_qualifier_list
- ::= all_specifier_qualifiers
- | all_specifier_qualifier_list all_specifier_qualifiers
-
-all_specifier_qualifier_list_opt
- ::= all_specifier_qualifier_list
- | $empty
-
-no_type_declaration_specifiers_opt
- ::= no_type_declaration_specifiers
- | $empty
-
-
-$End
-
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCLanguage.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCLanguage.java
deleted file mode 100644
index 43e10c2cdea..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCLanguage.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2015 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.lrparser.xlc;
-
-import static org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage.getPref;
-import static org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage.getProject;
-
-import java.util.Map;
-
-import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
-import org.eclipse.cdt.core.dom.lrparser.IParser;
-import org.eclipse.cdt.core.dom.lrparser.gnu.GCCLanguage;
-import org.eclipse.cdt.core.dom.parser.IScannerExtensionConfiguration;
-import org.eclipse.cdt.core.index.IIndex;
-import org.eclipse.cdt.core.lrparser.xlc.preferences.XlcPref;
-import org.eclipse.cdt.core.model.ICLanguageKeywords;
-import org.eclipse.cdt.core.parser.IScanner;
-import org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParser;
-import org.eclipse.core.resources.IProject;
-
-/**
- *
- * @author Mike Kucera
- */
-public class XlcCLanguage extends GCCLanguage {
-
- public static final String ID = "org.eclipse.cdt.core.lrparser.xlc.c"; //$NON-NLS-1$
-
- private static XlcCLanguage DEFAULT = new XlcCLanguage();
-
- public static XlcCLanguage getDefault() {
- return DEFAULT;
- }
-
- @Override
- protected IParser<IASTTranslationUnit> getParser(IScanner scanner, IIndex index, Map<String, String> properties) {
- IProject project = getProject(properties);
- boolean supportVectors = getPref(XlcPref.SUPPORT_VECTOR_TYPES, project);
- boolean supportDecimals = getPref(XlcPref.SUPPORT_DECIMAL_FLOATING_POINT_TYPES, project);
-
- return new XlcCParser(scanner, new XlcCTokenMap(supportVectors, supportDecimals), getBuiltinBindingsProvider(),
- index, properties);
- }
-
- @Override
- public String getId() {
- return ID;
- }
-
- @Override
- protected IScannerExtensionConfiguration getScannerExtensionConfiguration() {
- return XlcCScannerExtensionConfiguration.getInstance();
- }
-
- @Override
- public <T> T getAdapter(Class<T> adapter) {
- if (ICLanguageKeywords.class.equals(adapter))
- return adapter.cast(XlcKeywords.ALL_C_KEYWORDS);
-
- return super.getAdapter(adapter);
- }
-
-} \ No newline at end of file
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCPPLanguage.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCPPLanguage.java
deleted file mode 100644
index 1c627f619c2..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCPPLanguage.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2015 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.lrparser.xlc;
-
-import java.util.Map;
-
-import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
-import org.eclipse.cdt.core.dom.lrparser.IDOMTokenMap;
-import org.eclipse.cdt.core.dom.lrparser.IParser;
-import org.eclipse.cdt.core.dom.lrparser.LRParserProperties;
-import org.eclipse.cdt.core.dom.lrparser.gnu.GPPLanguage;
-import org.eclipse.cdt.core.dom.parser.IScannerExtensionConfiguration;
-import org.eclipse.cdt.core.index.IIndex;
-import org.eclipse.cdt.core.lrparser.xlc.preferences.XlcLanguagePreferences;
-import org.eclipse.cdt.core.lrparser.xlc.preferences.XlcPref;
-import org.eclipse.cdt.core.model.ICLanguageKeywords;
-import org.eclipse.cdt.core.parser.IScanner;
-import org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParser;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.Path;
-
-/**
- *
- * @author Mike Kucera
- */
-public class XlcCPPLanguage extends GPPLanguage {
-
- public static final String ID = "org.eclipse.cdt.core.lrparser.xlc.cpp"; //$NON-NLS-1$
-
- private static XlcCPPLanguage DEFAULT = new XlcCPPLanguage();
-
- public static XlcCPPLanguage getDefault() {
- return DEFAULT;
- }
-
- static IProject getProject(Map<String, String> properties) {
- String path = properties.get(LRParserProperties.TRANSLATION_UNIT_PATH);
- IFile[] file = ResourcesPlugin.getWorkspace().getRoot().findFilesForLocation(new Path(path));
-
- IProject project = null;
- if (file != null && file.length > 0) {
- project = file[0].getProject();
- }
-
- return project;
- }
-
- static boolean getPref(XlcPref key, IProject project) {
- return Boolean.valueOf(XlcLanguagePreferences.get(key, project));
- }
-
- @Override
- protected IParser<IASTTranslationUnit> getParser(IScanner scanner, IIndex index, Map<String, String> properties) {
- IProject project = getProject(properties);
- boolean supportVectors = getPref(XlcPref.SUPPORT_VECTOR_TYPES, project);
- boolean supportDecimals = getPref(XlcPref.SUPPORT_DECIMAL_FLOATING_POINT_TYPES, project);
- boolean supportComplex = getPref(XlcPref.SUPPORT_COMPLEX_IN_CPP, project);
- boolean supportRestrict = getPref(XlcPref.SUPPORT_RESTRICT_IN_CPP, project);
- boolean supportStaticAssert = getPref(XlcPref.SUPPORT_STATIC_ASSERT, project);
- IDOMTokenMap tokenMap = new XlcCPPTokenMap(supportVectors, supportDecimals, supportComplex, supportRestrict,
- supportStaticAssert);
-
- XlcCPPParser parser = new XlcCPPParser(scanner, tokenMap, getBuiltinBindingsProvider(), index, properties);
- return parser;
- }
-
- @Override
- public String getId() {
- return ID;
- }
-
- @Override
- protected IScannerExtensionConfiguration getScannerExtensionConfiguration() {
- return XlcCPPScannerExtensionConfiguration.getInstance();
- }
-
- @Override
- public <T> T getAdapter(Class<T> adapter) {
- if (ICLanguageKeywords.class.equals(adapter))
- return adapter.cast(XlcKeywords.ALL_CPP_KEYWORDS);
-
- return super.getAdapter(adapter);
- }
-
-} \ No newline at end of file
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCPPScannerExtensionConfiguration.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCPPScannerExtensionConfiguration.java
deleted file mode 100644
index 632f5f4f1af..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCPPScannerExtensionConfiguration.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.lrparser.xlc;
-
-import org.eclipse.cdt.core.dom.parser.cpp.GPPScannerExtensionConfiguration;
-
-public class XlcCPPScannerExtensionConfiguration extends GPPScannerExtensionConfiguration {
-
- private static XlcCPPScannerExtensionConfiguration instance;
-
- private XlcCPPScannerExtensionConfiguration() {
- }
-
- public static synchronized XlcCPPScannerExtensionConfiguration getInstance() {
- if (instance == null)
- instance = new XlcCPPScannerExtensionConfiguration();
- return instance;
- }
-
- @Override
- public boolean supportUTFLiterals() {
- return true;
- }
-
- @Override
- public char[] supportAdditionalNumericLiteralSuffixes() {
- return "dflij".toCharArray(); //$NON-NLS-1$
- }
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCPPTokenMap.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCPPTokenMap.java
deleted file mode 100644
index 6e8a4495a8c..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCPPTokenMap.java
+++ /dev/null
@@ -1,599 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2011 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.lrparser.xlc;
-
-import static org.eclipse.cdt.core.parser.IToken.tAMPER;
-import static org.eclipse.cdt.core.parser.IToken.tAMPERASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tAND;
-import static org.eclipse.cdt.core.parser.IToken.tARROW;
-import static org.eclipse.cdt.core.parser.IToken.tARROWSTAR;
-import static org.eclipse.cdt.core.parser.IToken.tASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tBITCOMPLEMENT;
-import static org.eclipse.cdt.core.parser.IToken.tBITOR;
-import static org.eclipse.cdt.core.parser.IToken.tBITORASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tCHAR;
-import static org.eclipse.cdt.core.parser.IToken.tCOLON;
-import static org.eclipse.cdt.core.parser.IToken.tCOLONCOLON;
-import static org.eclipse.cdt.core.parser.IToken.tCOMMA;
-import static org.eclipse.cdt.core.parser.IToken.tCOMPLETION;
-import static org.eclipse.cdt.core.parser.IToken.tDECR;
-import static org.eclipse.cdt.core.parser.IToken.tDIV;
-import static org.eclipse.cdt.core.parser.IToken.tDIVASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tDOT;
-import static org.eclipse.cdt.core.parser.IToken.tDOTSTAR;
-import static org.eclipse.cdt.core.parser.IToken.tELLIPSIS;
-import static org.eclipse.cdt.core.parser.IToken.tEND_OF_INPUT;
-import static org.eclipse.cdt.core.parser.IToken.tEOC;
-import static org.eclipse.cdt.core.parser.IToken.tEQUAL;
-import static org.eclipse.cdt.core.parser.IToken.tFLOATINGPT;
-import static org.eclipse.cdt.core.parser.IToken.tGT;
-import static org.eclipse.cdt.core.parser.IToken.tGTEQUAL;
-import static org.eclipse.cdt.core.parser.IToken.tIDENTIFIER;
-import static org.eclipse.cdt.core.parser.IToken.tINCR;
-import static org.eclipse.cdt.core.parser.IToken.tINTEGER;
-import static org.eclipse.cdt.core.parser.IToken.tLBRACE;
-import static org.eclipse.cdt.core.parser.IToken.tLBRACKET;
-import static org.eclipse.cdt.core.parser.IToken.tLCHAR;
-import static org.eclipse.cdt.core.parser.IToken.tLPAREN;
-import static org.eclipse.cdt.core.parser.IToken.tLSTRING;
-import static org.eclipse.cdt.core.parser.IToken.tLT;
-import static org.eclipse.cdt.core.parser.IToken.tLTEQUAL;
-import static org.eclipse.cdt.core.parser.IToken.tMINUS;
-import static org.eclipse.cdt.core.parser.IToken.tMINUSASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tMOD;
-import static org.eclipse.cdt.core.parser.IToken.tMODASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tNOT;
-import static org.eclipse.cdt.core.parser.IToken.tNOTEQUAL;
-import static org.eclipse.cdt.core.parser.IToken.tOR;
-import static org.eclipse.cdt.core.parser.IToken.tPLUS;
-import static org.eclipse.cdt.core.parser.IToken.tPLUSASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tPOUND;
-import static org.eclipse.cdt.core.parser.IToken.tQUESTION;
-import static org.eclipse.cdt.core.parser.IToken.tRBRACE;
-import static org.eclipse.cdt.core.parser.IToken.tRBRACKET;
-import static org.eclipse.cdt.core.parser.IToken.tRPAREN;
-import static org.eclipse.cdt.core.parser.IToken.tSEMI;
-import static org.eclipse.cdt.core.parser.IToken.tSHIFTL;
-import static org.eclipse.cdt.core.parser.IToken.tSHIFTLASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tSHIFTR;
-import static org.eclipse.cdt.core.parser.IToken.tSHIFTRASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tSTAR;
-import static org.eclipse.cdt.core.parser.IToken.tSTARASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tSTRING;
-import static org.eclipse.cdt.core.parser.IToken.tUNKNOWN_CHAR;
-import static org.eclipse.cdt.core.parser.IToken.tUTF16CHAR;
-import static org.eclipse.cdt.core.parser.IToken.tUTF16STRING;
-import static org.eclipse.cdt.core.parser.IToken.tUTF32CHAR;
-import static org.eclipse.cdt.core.parser.IToken.tUTF32STRING;
-import static org.eclipse.cdt.core.parser.IToken.tXOR;
-import static org.eclipse.cdt.core.parser.IToken.tXORASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.t__Complex;
-import static org.eclipse.cdt.core.parser.IToken.t__Imaginary;
-import static org.eclipse.cdt.core.parser.IToken.t_asm;
-import static org.eclipse.cdt.core.parser.IToken.t_auto;
-import static org.eclipse.cdt.core.parser.IToken.t_bool;
-import static org.eclipse.cdt.core.parser.IToken.t_break;
-import static org.eclipse.cdt.core.parser.IToken.t_case;
-import static org.eclipse.cdt.core.parser.IToken.t_catch;
-import static org.eclipse.cdt.core.parser.IToken.t_char;
-import static org.eclipse.cdt.core.parser.IToken.t_class;
-import static org.eclipse.cdt.core.parser.IToken.t_const;
-import static org.eclipse.cdt.core.parser.IToken.t_const_cast;
-import static org.eclipse.cdt.core.parser.IToken.t_continue;
-import static org.eclipse.cdt.core.parser.IToken.t_default;
-import static org.eclipse.cdt.core.parser.IToken.t_delete;
-import static org.eclipse.cdt.core.parser.IToken.t_do;
-import static org.eclipse.cdt.core.parser.IToken.t_double;
-import static org.eclipse.cdt.core.parser.IToken.t_dynamic_cast;
-import static org.eclipse.cdt.core.parser.IToken.t_else;
-import static org.eclipse.cdt.core.parser.IToken.t_enum;
-import static org.eclipse.cdt.core.parser.IToken.t_explicit;
-import static org.eclipse.cdt.core.parser.IToken.t_export;
-import static org.eclipse.cdt.core.parser.IToken.t_extern;
-import static org.eclipse.cdt.core.parser.IToken.t_false;
-import static org.eclipse.cdt.core.parser.IToken.t_float;
-import static org.eclipse.cdt.core.parser.IToken.t_for;
-import static org.eclipse.cdt.core.parser.IToken.t_friend;
-import static org.eclipse.cdt.core.parser.IToken.t_goto;
-import static org.eclipse.cdt.core.parser.IToken.t_if;
-import static org.eclipse.cdt.core.parser.IToken.t_inline;
-import static org.eclipse.cdt.core.parser.IToken.t_int;
-import static org.eclipse.cdt.core.parser.IToken.t_long;
-import static org.eclipse.cdt.core.parser.IToken.t_mutable;
-import static org.eclipse.cdt.core.parser.IToken.t_namespace;
-import static org.eclipse.cdt.core.parser.IToken.t_new;
-import static org.eclipse.cdt.core.parser.IToken.t_operator;
-import static org.eclipse.cdt.core.parser.IToken.t_private;
-import static org.eclipse.cdt.core.parser.IToken.t_protected;
-import static org.eclipse.cdt.core.parser.IToken.t_public;
-import static org.eclipse.cdt.core.parser.IToken.t_register;
-import static org.eclipse.cdt.core.parser.IToken.t_reinterpret_cast;
-import static org.eclipse.cdt.core.parser.IToken.t_restrict;
-import static org.eclipse.cdt.core.parser.IToken.t_return;
-import static org.eclipse.cdt.core.parser.IToken.t_short;
-import static org.eclipse.cdt.core.parser.IToken.t_signed;
-import static org.eclipse.cdt.core.parser.IToken.t_sizeof;
-import static org.eclipse.cdt.core.parser.IToken.t_static;
-import static org.eclipse.cdt.core.parser.IToken.t_static_cast;
-import static org.eclipse.cdt.core.parser.IToken.t_struct;
-import static org.eclipse.cdt.core.parser.IToken.t_switch;
-import static org.eclipse.cdt.core.parser.IToken.t_template;
-import static org.eclipse.cdt.core.parser.IToken.t_this;
-import static org.eclipse.cdt.core.parser.IToken.t_throw;
-import static org.eclipse.cdt.core.parser.IToken.t_true;
-import static org.eclipse.cdt.core.parser.IToken.t_try;
-import static org.eclipse.cdt.core.parser.IToken.t_typedef;
-import static org.eclipse.cdt.core.parser.IToken.t_typeid;
-import static org.eclipse.cdt.core.parser.IToken.t_typename;
-import static org.eclipse.cdt.core.parser.IToken.t_union;
-import static org.eclipse.cdt.core.parser.IToken.t_unsigned;
-import static org.eclipse.cdt.core.parser.IToken.t_using;
-import static org.eclipse.cdt.core.parser.IToken.t_virtual;
-import static org.eclipse.cdt.core.parser.IToken.t_void;
-import static org.eclipse.cdt.core.parser.IToken.t_volatile;
-import static org.eclipse.cdt.core.parser.IToken.t_wchar_t;
-import static org.eclipse.cdt.core.parser.IToken.t_while;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_And;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_AndAnd;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_AndAssign;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_Arrow;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_ArrowStar;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_Assign;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_Bang;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_Caret;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_CaretAssign;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_Colon;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_ColonColon;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_Comma;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_Completion;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_Dot;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_DotDotDot;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_DotStar;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_EOF_TOKEN;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_EQ;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_EndOfCompletion;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_GE;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_GT;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_Invalid;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_LE;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_LT;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_LeftBrace;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_LeftBracket;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_LeftParen;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_LeftShift;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_LeftShiftAssign;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_MAX;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_MIN;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_Minus;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_MinusAssign;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_MinusMinus;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_NE;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_Or;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_OrAssign;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_OrOr;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_Percent;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_PercentAssign;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_Plus;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_PlusAssign;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_PlusPlus;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_Question;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_RightBrace;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_RightBracket;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_RightParen;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_RightShift;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_RightShiftAssign;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_SemiColon;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_Slash;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_SlashAssign;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_Star;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_StarAssign;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_Tilde;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK__Imaginary;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK___alignof__;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK___attribute__;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK___declspec;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_asm;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_auto;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_bool;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_break;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_case;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_catch;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_char;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_charconst;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_class;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_const;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_const_cast;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_continue;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_default;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_delete;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_do;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_double;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_dynamic_cast;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_else;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_enum;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_explicit;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_export;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_extern;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_false;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_float;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_floating;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_for;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_friend;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_goto;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_identifier;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_if;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_inline;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_int;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_integer;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_long;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_mutable;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_namespace;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_new;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_operator;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_private;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_protected;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_public;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_register;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_reinterpret_cast;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_restrict;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_return;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_short;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_signed;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_sizeof;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_static;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_static_cast;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_stringlit;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_struct;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_switch;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_template;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_this;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_throw;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_true;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_try;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_typedef;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_typeid;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_typename;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_typeof;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_union;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_unsigned;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_using;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_virtual;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_void;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_volatile;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_wchar_t;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.TK_while;
-
-import org.eclipse.cdt.core.dom.lrparser.IDOMTokenMap;
-import org.eclipse.cdt.core.parser.IGCCToken;
-import org.eclipse.cdt.core.parser.IToken;
-
-/**
- * Maps tokens types returned by CPreprocessor to token types
- * expected by the C++ parser.
- *
- * @author Mike Kucera
- */
-public class XlcCPPTokenMap implements IDOMTokenMap {
-
- private final XlcKeywords keywordMap;
-
- public XlcCPPTokenMap(boolean supportVectors, boolean supportDecimalFloatingPoint, boolean supportComplex,
- boolean supportRestrict, boolean supportStaticAssert) {
- keywordMap = XlcKeywords.createCPP(supportVectors, supportDecimalFloatingPoint, supportComplex, supportRestrict,
- supportStaticAssert);
- }
-
- @Override
- public int getEOFTokenKind() {
- return TK_EOF_TOKEN;
- }
-
- @Override
- public int getEOCTokenKind() {
- return TK_EndOfCompletion;
- }
-
- @Override
- public int mapKind(IToken token) {
-
- switch (token.getType()) {
- case t__Complex:
- case tIDENTIFIER:
- Integer keywordKind = keywordMap.getTokenKind(token.getCharImage());
- return keywordKind == null ? TK_identifier : keywordKind;
-
- case tINTEGER:
- return TK_integer;
- case tCOLONCOLON:
- return TK_ColonColon;
- case tCOLON:
- return TK_Colon;
- case tSEMI:
- return TK_SemiColon;
- case tCOMMA:
- return TK_Comma;
- case tQUESTION:
- return TK_Question;
- case tLPAREN:
- return TK_LeftParen;
- case tRPAREN:
- return TK_RightParen;
- case tLBRACKET:
- return TK_LeftBracket;
- case tRBRACKET:
- return TK_RightBracket;
- case tLBRACE:
- return TK_LeftBrace;
- case tRBRACE:
- return TK_RightBrace;
- case tPLUSASSIGN:
- return TK_PlusAssign;
- case tINCR:
- return TK_PlusPlus;
- case tPLUS:
- return TK_Plus;
- case tMINUSASSIGN:
- return TK_MinusAssign;
- case tDECR:
- return TK_MinusMinus;
- case tARROWSTAR:
- return TK_ArrowStar;
- case tARROW:
- return TK_Arrow;
- case tMINUS:
- return TK_Minus;
- case tSTARASSIGN:
- return TK_StarAssign;
- case tSTAR:
- return TK_Star;
- case tMODASSIGN:
- return TK_PercentAssign;
- case tMOD:
- return TK_Percent;
- case tXORASSIGN:
- return TK_CaretAssign;
- case tXOR:
- return TK_Caret;
- case tAMPERASSIGN:
- return TK_AndAssign;
- case tAND:
- return TK_AndAnd;
- case tAMPER:
- return TK_And;
- case tBITORASSIGN:
- return TK_OrAssign;
- case tOR:
- return TK_OrOr;
- case tBITOR:
- return TK_Or;
- case tBITCOMPLEMENT:
- return TK_Tilde;
- case tNOTEQUAL:
- return TK_NE;
- case tNOT:
- return TK_Bang;
- case tEQUAL:
- return TK_EQ;
- case tASSIGN:
- return TK_Assign;
- case tUNKNOWN_CHAR:
- return TK_Invalid;
- case tSHIFTL:
- return TK_LeftShift;
- case tLTEQUAL:
- return TK_LE;
- case tLT:
- return TK_LT;
- case tSHIFTRASSIGN:
- return TK_RightShiftAssign;
- case tSHIFTR:
- return TK_RightShift;
- case tGTEQUAL:
- return TK_GE;
- case tGT:
- return TK_GT;
- case tSHIFTLASSIGN:
- return TK_LeftShiftAssign;
- case tELLIPSIS:
- return TK_DotDotDot;
- case tDOTSTAR:
- return TK_DotStar;
- case tDOT:
- return TK_Dot;
- case tDIVASSIGN:
- return TK_SlashAssign;
- case tDIV:
- return TK_Slash;
-
- case t_asm:
- return TK_asm;
- case t_auto:
- return TK_auto;
- case t_bool:
- return TK_bool;
- case t_break:
- return TK_break;
- case t_case:
- return TK_case;
- case t_catch:
- return TK_catch;
- case t_char:
- return TK_char;
- case t_class:
- return TK_class;
- case t_const:
- return TK_const;
- case t_const_cast:
- return TK_const_cast;
- case t_continue:
- return TK_continue;
- case t_default:
- return TK_default;
- case t_delete:
- return TK_delete;
- case t_do:
- return TK_do;
- case t_double:
- return TK_double;
- case t_dynamic_cast:
- return TK_dynamic_cast;
- case t_else:
- return TK_else;
- case t_enum:
- return TK_enum;
- case t_explicit:
- return TK_explicit;
- case t_export:
- return TK_export;
- case t_extern:
- return TK_extern;
- case t_false:
- return TK_false;
- case t_float:
- return TK_float;
- case t_for:
- return TK_for;
- case t_friend:
- return TK_friend;
- case t_goto:
- return TK_goto;
- case t_if:
- return TK_if;
- case t_inline:
- return TK_inline;
- case t_int:
- return TK_int;
- case t_long:
- return TK_long;
- case t_mutable:
- return TK_mutable;
- case t_namespace:
- return TK_namespace;
- case t_new:
- return TK_new;
- case t_operator:
- return TK_operator;
- case t_private:
- return TK_private;
- case t_protected:
- return TK_protected;
- case t_public:
- return TK_public;
- case t_register:
- return TK_register;
- case t_reinterpret_cast:
- return TK_reinterpret_cast;
- case t_return:
- return TK_return;
- case t_short:
- return TK_short;
- case t_sizeof:
- return TK_sizeof;
- case t_static:
- return TK_static;
- case t_static_cast:
- return TK_static_cast;
- case t_signed:
- return TK_signed;
- case t_struct:
- return TK_struct;
- case t_switch:
- return TK_switch;
- case t_template:
- return TK_template;
- case t_this:
- return TK_this;
- case t_throw:
- return TK_throw;
- case t_true:
- return TK_true;
- case t_try:
- return TK_try;
- case t_typedef:
- return TK_typedef;
- case t_typeid:
- return TK_typeid;
- case t_typename:
- return TK_typename;
- case t_union:
- return TK_union;
- case t_unsigned:
- return TK_unsigned;
- case t_using:
- return TK_using;
- case t_virtual:
- return TK_virtual;
- case t_void:
- return TK_void;
- case t_volatile:
- return TK_volatile;
- case t_wchar_t:
- return TK_wchar_t;
- case t_while:
- return TK_while;
-
- case tFLOATINGPT:
- return TK_floating;
- case tSTRING:
- return TK_stringlit;
- case tLSTRING:
- return TK_stringlit;
- case tUTF16STRING:
- return TK_stringlit;
- case tUTF32STRING:
- return TK_stringlit;
- case tUTF16CHAR:
- return TK_charconst;
- case tUTF32CHAR:
- return TK_charconst;
- case tCHAR:
- return TK_charconst;
- case tLCHAR:
- return TK_charconst;
- case tCOMPLETION:
- return TK_Completion;
- case tEOC:
- return TK_EndOfCompletion;
- case tEND_OF_INPUT:
- return TK_EOF_TOKEN;
-
- case IGCCToken.t_typeof:
- return TK_typeof;
- case IGCCToken.t___alignof__:
- return TK___alignof__;
- case IGCCToken.tMAX:
- return TK_MAX;
- case IGCCToken.tMIN:
- return TK_MIN;
- case IGCCToken.t__attribute__:
- return TK___attribute__;
- case IGCCToken.t__declspec:
- return TK___declspec;
-
- // GNU supports these but they are not in the C++ spec
-
- case t__Imaginary:
- return TK__Imaginary;
- case t_restrict:
- return TK_restrict;
- case tPOUND:
- return TK_Invalid;
-
- default:
- assert false : "token not recognized: " + token.getType(); //$NON-NLS-1$
- return TK_Invalid;
- }
- }
-
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCScannerExtensionConfiguration.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCScannerExtensionConfiguration.java
deleted file mode 100644
index 64e6d9974b8..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCScannerExtensionConfiguration.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.lrparser.xlc;
-
-import org.eclipse.cdt.core.dom.parser.c.GCCScannerExtensionConfiguration;
-
-public class XlcCScannerExtensionConfiguration extends GCCScannerExtensionConfiguration {
-
- private static XlcCScannerExtensionConfiguration instance;
-
- private XlcCScannerExtensionConfiguration() {
- }
-
- public static synchronized XlcCScannerExtensionConfiguration getInstance() {
- if (instance == null)
- instance = new XlcCScannerExtensionConfiguration();
- return instance;
- }
-
- @Override
- public boolean supportUTFLiterals() {
- return true;
- }
-
- @Override
- public char[] supportAdditionalNumericLiteralSuffixes() {
- return "dflij".toCharArray(); //$NON-NLS-1$
- }
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCTokenMap.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCTokenMap.java
deleted file mode 100644
index 0234fc794fc..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCTokenMap.java
+++ /dev/null
@@ -1,468 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.lrparser.xlc;
-
-import static org.eclipse.cdt.core.parser.IToken.tAMPER;
-import static org.eclipse.cdt.core.parser.IToken.tAMPERASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tAND;
-import static org.eclipse.cdt.core.parser.IToken.tARROW;
-import static org.eclipse.cdt.core.parser.IToken.tASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tBITCOMPLEMENT;
-import static org.eclipse.cdt.core.parser.IToken.tBITOR;
-import static org.eclipse.cdt.core.parser.IToken.tBITORASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tCHAR;
-import static org.eclipse.cdt.core.parser.IToken.tCOLON;
-import static org.eclipse.cdt.core.parser.IToken.tCOMMA;
-import static org.eclipse.cdt.core.parser.IToken.tCOMPLETION;
-import static org.eclipse.cdt.core.parser.IToken.tDECR;
-import static org.eclipse.cdt.core.parser.IToken.tDIV;
-import static org.eclipse.cdt.core.parser.IToken.tDIVASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tDOT;
-import static org.eclipse.cdt.core.parser.IToken.tELLIPSIS;
-import static org.eclipse.cdt.core.parser.IToken.tEND_OF_INPUT;
-import static org.eclipse.cdt.core.parser.IToken.tEOC;
-import static org.eclipse.cdt.core.parser.IToken.tEQUAL;
-import static org.eclipse.cdt.core.parser.IToken.tFLOATINGPT;
-import static org.eclipse.cdt.core.parser.IToken.tGT;
-import static org.eclipse.cdt.core.parser.IToken.tGTEQUAL;
-import static org.eclipse.cdt.core.parser.IToken.tIDENTIFIER;
-import static org.eclipse.cdt.core.parser.IToken.tINCR;
-import static org.eclipse.cdt.core.parser.IToken.tINTEGER;
-import static org.eclipse.cdt.core.parser.IToken.tLBRACE;
-import static org.eclipse.cdt.core.parser.IToken.tLBRACKET;
-import static org.eclipse.cdt.core.parser.IToken.tLCHAR;
-import static org.eclipse.cdt.core.parser.IToken.tLPAREN;
-import static org.eclipse.cdt.core.parser.IToken.tLSTRING;
-import static org.eclipse.cdt.core.parser.IToken.tLT;
-import static org.eclipse.cdt.core.parser.IToken.tLTEQUAL;
-import static org.eclipse.cdt.core.parser.IToken.tMINUS;
-import static org.eclipse.cdt.core.parser.IToken.tMINUSASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tMOD;
-import static org.eclipse.cdt.core.parser.IToken.tMODASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tNOT;
-import static org.eclipse.cdt.core.parser.IToken.tNOTEQUAL;
-import static org.eclipse.cdt.core.parser.IToken.tOR;
-import static org.eclipse.cdt.core.parser.IToken.tPLUS;
-import static org.eclipse.cdt.core.parser.IToken.tPLUSASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tQUESTION;
-import static org.eclipse.cdt.core.parser.IToken.tRBRACE;
-import static org.eclipse.cdt.core.parser.IToken.tRBRACKET;
-import static org.eclipse.cdt.core.parser.IToken.tRPAREN;
-import static org.eclipse.cdt.core.parser.IToken.tSEMI;
-import static org.eclipse.cdt.core.parser.IToken.tSHIFTL;
-import static org.eclipse.cdt.core.parser.IToken.tSHIFTLASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tSHIFTR;
-import static org.eclipse.cdt.core.parser.IToken.tSHIFTRASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tSTAR;
-import static org.eclipse.cdt.core.parser.IToken.tSTARASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.tSTRING;
-import static org.eclipse.cdt.core.parser.IToken.tUNKNOWN_CHAR;
-import static org.eclipse.cdt.core.parser.IToken.tUTF16CHAR;
-import static org.eclipse.cdt.core.parser.IToken.tUTF16STRING;
-import static org.eclipse.cdt.core.parser.IToken.tUTF32CHAR;
-import static org.eclipse.cdt.core.parser.IToken.tUTF32STRING;
-import static org.eclipse.cdt.core.parser.IToken.tXOR;
-import static org.eclipse.cdt.core.parser.IToken.tXORASSIGN;
-import static org.eclipse.cdt.core.parser.IToken.t__Bool;
-import static org.eclipse.cdt.core.parser.IToken.t__Complex;
-import static org.eclipse.cdt.core.parser.IToken.t__Imaginary;
-import static org.eclipse.cdt.core.parser.IToken.t_asm;
-import static org.eclipse.cdt.core.parser.IToken.t_auto;
-import static org.eclipse.cdt.core.parser.IToken.t_break;
-import static org.eclipse.cdt.core.parser.IToken.t_case;
-import static org.eclipse.cdt.core.parser.IToken.t_char;
-import static org.eclipse.cdt.core.parser.IToken.t_const;
-import static org.eclipse.cdt.core.parser.IToken.t_continue;
-import static org.eclipse.cdt.core.parser.IToken.t_default;
-import static org.eclipse.cdt.core.parser.IToken.t_do;
-import static org.eclipse.cdt.core.parser.IToken.t_double;
-import static org.eclipse.cdt.core.parser.IToken.t_else;
-import static org.eclipse.cdt.core.parser.IToken.t_enum;
-import static org.eclipse.cdt.core.parser.IToken.t_extern;
-import static org.eclipse.cdt.core.parser.IToken.t_float;
-import static org.eclipse.cdt.core.parser.IToken.t_for;
-import static org.eclipse.cdt.core.parser.IToken.t_goto;
-import static org.eclipse.cdt.core.parser.IToken.t_if;
-import static org.eclipse.cdt.core.parser.IToken.t_inline;
-import static org.eclipse.cdt.core.parser.IToken.t_int;
-import static org.eclipse.cdt.core.parser.IToken.t_long;
-import static org.eclipse.cdt.core.parser.IToken.t_register;
-import static org.eclipse.cdt.core.parser.IToken.t_restrict;
-import static org.eclipse.cdt.core.parser.IToken.t_return;
-import static org.eclipse.cdt.core.parser.IToken.t_short;
-import static org.eclipse.cdt.core.parser.IToken.t_signed;
-import static org.eclipse.cdt.core.parser.IToken.t_sizeof;
-import static org.eclipse.cdt.core.parser.IToken.t_static;
-import static org.eclipse.cdt.core.parser.IToken.t_struct;
-import static org.eclipse.cdt.core.parser.IToken.t_switch;
-import static org.eclipse.cdt.core.parser.IToken.t_typedef;
-import static org.eclipse.cdt.core.parser.IToken.t_union;
-import static org.eclipse.cdt.core.parser.IToken.t_unsigned;
-import static org.eclipse.cdt.core.parser.IToken.t_void;
-import static org.eclipse.cdt.core.parser.IToken.t_volatile;
-import static org.eclipse.cdt.core.parser.IToken.t_while;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_And;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_AndAnd;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_AndAssign;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_Arrow;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_Assign;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_Bang;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_Caret;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_CaretAssign;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_Colon;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_Comma;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_Completion;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_Dot;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_DotDotDot;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_EOF_TOKEN;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_EQ;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_EndOfCompletion;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_GE;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_GT;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_Invalid;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_LE;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_LT;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_LeftBrace;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_LeftBracket;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_LeftParen;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_LeftShift;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_LeftShiftAssign;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_MAX;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_MIN;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_Minus;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_MinusAssign;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_MinusMinus;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_NE;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_Or;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_OrAssign;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_OrOr;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_Percent;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_PercentAssign;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_Plus;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_PlusAssign;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_PlusPlus;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_Question;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_RightBrace;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_RightBracket;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_RightParen;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_RightShift;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_RightShiftAssign;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_SemiColon;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_Slash;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_SlashAssign;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_Star;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_StarAssign;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_Tilde;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK__Bool;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK__Complex;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK__Imaginary;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK___alignof__;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK___attribute__;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK___declspec;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_asm;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_auto;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_break;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_case;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_char;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_charconst;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_const;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_continue;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_default;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_do;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_double;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_else;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_enum;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_extern;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_float;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_floating;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_for;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_goto;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_identifier;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_if;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_inline;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_int;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_integer;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_long;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_register;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_restrict;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_return;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_short;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_signed;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_sizeof;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_static;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_stringlit;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_struct;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_switch;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_typedef;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_typeof;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_union;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_unsigned;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_void;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_volatile;
-import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.TK_while;
-
-import org.eclipse.cdt.core.dom.lrparser.IDOMTokenMap;
-import org.eclipse.cdt.core.parser.IGCCToken;
-import org.eclipse.cdt.core.parser.IToken;
-
-/**
- * Maps tokens types returned by CPreprocessor to token types
- * expected by the C99 parser.
- *
- * @author Mike Kucera
- */
-public final class XlcCTokenMap implements IDOMTokenMap {
-
- private final XlcKeywords keywordMap;
-
- public XlcCTokenMap(boolean supportVectors, boolean supportDecimalFloatingPoint) {
- keywordMap = XlcKeywords.createC(supportVectors, supportDecimalFloatingPoint);
- }
-
- @Override
- public int getEOFTokenKind() {
- return TK_EOF_TOKEN;
- }
-
- @Override
- public int getEOCTokenKind() {
- return TK_EndOfCompletion;
- }
-
- @Override
- public int mapKind(IToken token) {
-
- switch (token.getType()) {
- case tIDENTIFIER:
- Integer keywordKind = keywordMap.getTokenKind(token.getCharImage());
- return keywordKind == null ? TK_identifier : keywordKind;
-
- case tINTEGER:
- return TK_integer;
- case tCOLON:
- return TK_Colon;
- case tSEMI:
- return TK_SemiColon;
- case tCOMMA:
- return TK_Comma;
- case tQUESTION:
- return TK_Question;
- case tLPAREN:
- return TK_LeftParen;
- case tRPAREN:
- return TK_RightParen;
- case tLBRACKET:
- return TK_LeftBracket;
- case tRBRACKET:
- return TK_RightBracket;
- case tLBRACE:
- return TK_LeftBrace;
- case tRBRACE:
- return TK_RightBrace;
- case tPLUSASSIGN:
- return TK_PlusAssign;
- case tINCR:
- return TK_PlusPlus;
- case tPLUS:
- return TK_Plus;
- case tMINUSASSIGN:
- return TK_MinusAssign;
- case tDECR:
- return TK_MinusMinus;
- case tARROW:
- return TK_Arrow;
- case tMINUS:
- return TK_Minus;
- case tSTARASSIGN:
- return TK_StarAssign;
- case tSTAR:
- return TK_Star;
- case tMODASSIGN:
- return TK_PercentAssign;
- case tMOD:
- return TK_Percent;
- case tXORASSIGN:
- return TK_CaretAssign;
- case tXOR:
- return TK_Caret;
- case tAMPERASSIGN:
- return TK_AndAssign;
- case tAND:
- return TK_AndAnd;
- case tAMPER:
- return TK_And;
- case tBITORASSIGN:
- return TK_OrAssign;
- case tOR:
- return TK_OrOr;
- case tBITOR:
- return TK_Or;
- case tBITCOMPLEMENT:
- return TK_Tilde;
- case tNOTEQUAL:
- return TK_NE;
- case tNOT:
- return TK_Bang;
- case tEQUAL:
- return TK_EQ;
- case tASSIGN:
- return TK_Assign;
- case tUNKNOWN_CHAR:
- return TK_Invalid;
- case tSHIFTL:
- return TK_LeftShift;
- case tLTEQUAL:
- return TK_LE;
- case tLT:
- return TK_LT;
- case tSHIFTRASSIGN:
- return TK_RightShiftAssign;
- case tSHIFTR:
- return TK_RightShift;
- case tGTEQUAL:
- return TK_GE;
- case tGT:
- return TK_GT;
- case tSHIFTLASSIGN:
- return TK_LeftShiftAssign;
- case tELLIPSIS:
- return TK_DotDotDot;
- case tDOT:
- return TK_Dot;
- case tDIVASSIGN:
- return TK_SlashAssign;
- case tDIV:
- return TK_Slash;
-
- case t_auto:
- return TK_auto;
- case t_break:
- return TK_break;
- case t_case:
- return TK_case;
- case t_char:
- return TK_char;
- case t_const:
- return TK_const;
- case t_continue:
- return TK_continue;
- case t_default:
- return TK_default;
- case t_do:
- return TK_do;
- case t_double:
- return TK_double;
- case t_else:
- return TK_else;
- case t_enum:
- return TK_enum;
- case t_extern:
- return TK_extern;
- case t_float:
- return TK_float;
- case t_for:
- return TK_for;
- case t_goto:
- return TK_goto;
- case t_if:
- return TK_if;
- case t_inline:
- return TK_inline;
- case t_int:
- return TK_int;
- case t_long:
- return TK_long;
- case t_register:
- return TK_register;
- case t_return:
- return TK_return;
- case t_short:
- return TK_short;
- case t_sizeof:
- return TK_sizeof;
- case t_static:
- return TK_static;
- case t_signed:
- return TK_signed;
- case t_struct:
- return TK_struct;
- case t_switch:
- return TK_switch;
- case t_typedef:
- return TK_typedef;
- case t_union:
- return TK_union;
- case t_unsigned:
- return TK_unsigned;
- case t_void:
- return TK_void;
- case t_volatile:
- return TK_volatile;
- case t_while:
- return TK_while;
- case tFLOATINGPT:
- return TK_floating;
- case tSTRING:
- return TK_stringlit;
- case tLSTRING:
- return TK_stringlit;
- case tUTF16STRING:
- return TK_stringlit;
- case tUTF32STRING:
- return TK_stringlit;
- case tCHAR:
- return TK_charconst;
- case tLCHAR:
- return TK_charconst;
- case tUTF16CHAR:
- return TK_charconst;
- case tUTF32CHAR:
- return TK_charconst;
- case t__Bool:
- return TK__Bool;
- case t__Complex:
- return TK__Complex;
- case t__Imaginary:
- return TK__Imaginary;
- case t_restrict:
- return TK_restrict;
- case tCOMPLETION:
- return TK_Completion;
- case tEOC:
- return TK_EndOfCompletion;
- case tEND_OF_INPUT:
- return TK_EOF_TOKEN;
-
- case IGCCToken.t_typeof:
- return TK_typeof;
- case IGCCToken.t___alignof__:
- return TK___alignof__;
- case IGCCToken.tMAX:
- return TK_MAX;
- case IGCCToken.tMIN:
- return TK_MIN;
- case IGCCToken.t__attribute__:
- return TK___attribute__;
- case IGCCToken.t__declspec:
- return TK___declspec;
-
- case t_asm:
- return TK_asm;
-
- default:
- assert false : "token not recognized by the XLC parser: " + token.getType(); //$NON-NLS-1$
- return TK_Invalid;
- }
- }
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcKeywords.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcKeywords.java
deleted file mode 100644
index d8984870628..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcKeywords.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2010 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.lrparser.xlc;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import org.eclipse.cdt.core.dom.parser.CLanguageKeywords;
-import org.eclipse.cdt.core.dom.parser.IScannerExtensionConfiguration;
-import org.eclipse.cdt.core.model.ICLanguageKeywords;
-import org.eclipse.cdt.core.parser.ParserLanguage;
-import org.eclipse.cdt.core.parser.util.CharArrayMap;
-import org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym;
-import org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym;
-
-public class XlcKeywords extends CLanguageKeywords {
-
- public static final XlcKeywords ALL_C_KEYWORDS = createC(true, true);
- public static final XlcKeywords ALL_CPP_KEYWORDS = createCPP(true, true, true, true, true);
-
- private final CharArrayMap<Integer> map = new CharArrayMap<>();
- private final ParserLanguage language;
- private String[] allKeywords = null;
-
- public static XlcKeywords createC(boolean supportVectors, boolean supportDecimalFloatingPoint) {
- XlcKeywords keywords = new XlcKeywords(ParserLanguage.C);
- CharArrayMap<Integer> map = keywords.map;
- if (supportVectors) {
- map.put("vector".toCharArray(), XlcCParsersym.TK_vector);
- map.put("__vector".toCharArray(), XlcCParsersym.TK_vector);
- map.put("pixel".toCharArray(), XlcCParsersym.TK_pixel);
- map.put("__pixel".toCharArray(), XlcCParsersym.TK_pixel);
- map.put("bool".toCharArray(), XlcCParsersym.TK_bool);
- }
- if (supportDecimalFloatingPoint) {
- map.put("_Decimal32".toCharArray(), XlcCParsersym.TK__Decimal32);
- map.put("_Decimal64".toCharArray(), XlcCParsersym.TK__Decimal64);
- map.put("_Decimal128".toCharArray(), XlcCParsersym.TK__Decimal128);
- }
- return keywords;
- }
-
- public static XlcKeywords createCPP(boolean supportVectors, boolean supportDecimalFloatingPoint,
- boolean supportComplex, boolean supportRestrict, boolean supportStaticAssert) {
- XlcKeywords keywords = new XlcKeywords(ParserLanguage.CPP);
- CharArrayMap<Integer> map = keywords.map;
- if (supportVectors) {
- map.put("vector".toCharArray(), XlcCPPParsersym.TK_vector);
- map.put("__vector".toCharArray(), XlcCPPParsersym.TK_vector);
- map.put("pixel".toCharArray(), XlcCPPParsersym.TK_pixel);
- map.put("__pixel".toCharArray(), XlcCPPParsersym.TK_pixel);
- }
- if (supportDecimalFloatingPoint) {
- map.put("_Decimal32".toCharArray(), XlcCPPParsersym.TK__Decimal32);
- map.put("_Decimal64".toCharArray(), XlcCPPParsersym.TK__Decimal64);
- map.put("_Decimal128".toCharArray(), XlcCPPParsersym.TK__Decimal128);
- }
- if (supportComplex) {
- map.put("_Complex".toCharArray(), XlcCPPParsersym.TK__Complex);
- }
- if (supportRestrict) {
- map.put("restrict".toCharArray(), XlcCPPParsersym.TK_restrict);
- map.put("__restrict".toCharArray(), XlcCPPParsersym.TK_restrict);
- map.put("__restrict__".toCharArray(), XlcCPPParsersym.TK_restrict);
- }
-
- if (supportStaticAssert) {
- map.put("__static_assert".toCharArray(), XlcCPPParsersym.TK___static_assert);
- }
-
- return keywords;
- }
-
- private XlcKeywords(ParserLanguage language) {
- super(language, getConfig(language));
- this.language = language;
- }
-
- private static IScannerExtensionConfiguration getConfig(ParserLanguage lang) {
- return lang.isCPP() ? XlcCPPScannerExtensionConfiguration.getInstance()
- : XlcCScannerExtensionConfiguration.getInstance();
- }
-
- /**
- * Returns the LPG token kind for additional keywords defined by
- * the XLC extensions, null otherwise.
- */
- public Integer getTokenKind(char[] keyword) {
- return map.get(keyword);
- }
-
- @Override
- public synchronized String[] getKeywords() {
- if (allKeywords == null) {
- ICLanguageKeywords base = new CLanguageKeywords(language, getConfig(language));
- String[] baseKeywords = base.getKeywords();
-
- List<String> keywords = new ArrayList<>();
- keywords.addAll(Arrays.asList(baseKeywords));
-
- for (char[] keyword : map.keys()) {
- keywords.add(String.valueOf(keyword));
- }
-
- allKeywords = keywords.toArray(new String[keywords.size()]);
- }
-
- return allKeywords;
- }
-
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/action/XlcCBuildASTParserAction.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/action/XlcCBuildASTParserAction.java
deleted file mode 100644
index f04c9f70cd1..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/action/XlcCBuildASTParserAction.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.lrparser.xlc.action;
-
-import org.eclipse.cdt.core.dom.lrparser.action.ISecondaryParserFactory;
-import org.eclipse.cdt.core.dom.lrparser.action.ITokenStream;
-import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack;
-import org.eclipse.cdt.core.dom.lrparser.action.gnu.GCCBuildASTParserAction;
-import org.eclipse.cdt.core.lrparser.xlc.ast.IXlcCASTVectorTypeSpecifier;
-import org.eclipse.cdt.core.lrparser.xlc.ast.IXlcCNodeFactory;
-import org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym;
-
-import lpg.lpgjavaruntime.IToken;
-
-public class XlcCBuildASTParserAction extends GCCBuildASTParserAction {
-
- private IXlcCNodeFactory nodeFactory;
-
- public XlcCBuildASTParserAction(ITokenStream parser, ScopedStack<Object> astStack, IXlcCNodeFactory nodeFactory,
- ISecondaryParserFactory parserFactory) {
- super(parser, astStack, nodeFactory, parserFactory);
- this.nodeFactory = nodeFactory;
- }
-
- /*
- * vector_type
- * ::= <openscope-ast> sqlist_op 'vector' vector_type_specifier all_specifier_qualifier_list
- */
- public void consumeVectorTypeSpecifier() {
- IXlcCASTVectorTypeSpecifier declSpec = nodeFactory.newVectorTypeSpecifier();
-
- for (Object specifier : astStack.closeScope()) {
- if (specifier instanceof IToken) {
- switch (((IToken) specifier).getKind()) {
- case XlcCParsersym.TK_pixel:
- declSpec.setPixel(true);
- continue;
- case XlcCParsersym.TK_bool:
- declSpec.setBool(true);
- continue;
- case XlcCParsersym.TK_vector:
- continue;
- }
- }
-
- setSpecifier(declSpec, specifier);
- }
-
- setOffsetAndLength(declSpec);
- astStack.push(declSpec);
- }
-
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/action/XlcCPPBuildASTParserAction.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/action/XlcCPPBuildASTParserAction.java
deleted file mode 100644
index 936ad10bc5e..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/action/XlcCPPBuildASTParserAction.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2010 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.lrparser.xlc.action;
-
-import org.eclipse.cdt.core.dom.ast.IASTExpression;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTLiteralExpression;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTStaticAssertDeclaration;
-import org.eclipse.cdt.core.dom.lrparser.action.ITokenMap;
-import org.eclipse.cdt.core.dom.lrparser.action.ITokenStream;
-import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack;
-import org.eclipse.cdt.core.dom.lrparser.action.TokenMap;
-import org.eclipse.cdt.core.dom.lrparser.action.cpp.ICPPSecondaryParserFactory;
-import org.eclipse.cdt.core.dom.lrparser.action.gnu.GPPBuildASTParserAction;
-import org.eclipse.cdt.core.lrparser.xlc.ast.IXlcCPPASTModifiedArrayModifier;
-import org.eclipse.cdt.core.lrparser.xlc.ast.IXlcCPPASTVectorTypeSpecifier;
-import org.eclipse.cdt.core.lrparser.xlc.ast.IXlcCPPNodeFactory;
-import org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym;
-
-import lpg.lpgjavaruntime.IToken;
-
-public class XlcCPPBuildASTParserAction extends GPPBuildASTParserAction {
-
- private IXlcCPPNodeFactory nodeFactory;
- private final ITokenMap tokenMap;
-
- public XlcCPPBuildASTParserAction(ITokenStream parser, ScopedStack<Object> astStack, IXlcCPPNodeFactory nodeFactory,
- ICPPSecondaryParserFactory parserFactory) {
- super(parser, astStack, nodeFactory, parserFactory);
- this.nodeFactory = nodeFactory;
- this.tokenMap = new TokenMap(XlcCPPParsersym.orderedTerminalSymbols, parser.getOrderedTerminalSymbols());
- }
-
- /*
- * vector_type
- * ::= <openscope-ast> sqlist_op 'vector' vector_type_specifier all_specifier_qualifier_list
- */
- public void consumeVectorTypeSpecifier() {
- IXlcCPPASTVectorTypeSpecifier declSpec = nodeFactory.newVectorTypeSpecifier();
-
- for (Object specifier : astStack.closeScope()) {
- if (specifier instanceof IToken) {
- switch (tokenMap.mapKind(((IToken) specifier).getKind())) {
- case XlcCPPParsersym.TK_pixel:
- declSpec.setPixel(true);
- continue;
- case XlcCPPParsersym.TK_vector:
- continue;
- }
- }
-
- setSpecifier(declSpec, specifier);
- }
-
- setOffsetAndLength(declSpec);
- astStack.push(declSpec);
- }
-
- public void consumeDirectDeclaratorModifiedArrayModifier(boolean isStatic, boolean isVarSized,
- boolean hasTypeQualifierList, boolean hasAssignmentExpr) {
- assert isStatic || isVarSized || hasTypeQualifierList;
-
- IXlcCPPASTModifiedArrayModifier arrayModifier = nodeFactory.newModifiedArrayModifier(null);
-
- // consume all the stuff between the square brackets into an array modifier
- arrayModifier.setStatic(isStatic);
- arrayModifier.setVariableSized(isVarSized);
-
- if (hasAssignmentExpr)
- arrayModifier.setConstantExpression((IASTExpression) astStack.pop());
-
- if (hasTypeQualifierList)
- collectArrayModifierTypeQualifiers(arrayModifier);
-
- setOffsetAndLength(arrayModifier);
- astStack.push(arrayModifier);
- }
-
- private void collectArrayModifierTypeQualifiers(IXlcCPPASTModifiedArrayModifier arrayModifier) {
- for (Object o : astStack.closeScope()) {
- switch (tokenMap.mapKind(((IToken) o).getKind())) {
- case XlcCPPParsersym.TK_const:
- arrayModifier.setConst(true);
- break;
- case XlcCPPParsersym.TK_restrict:
- arrayModifier.setRestrict(true);
- break;
- case XlcCPPParsersym.TK_volatile:
- arrayModifier.setVolatile(true);
- break;
- }
- }
- }
-
- /**
- * staticAssertDeclaration ::= '__static_assert' '(' expression ',' literal ')' ';'
- */
- public void consumeCPPASTStaticAssertDeclaration() {
- ICPPASTLiteralExpression message = (ICPPASTLiteralExpression) astStack.pop();
- IASTExpression condition = (IASTExpression) astStack.pop();
-
- ICPPASTStaticAssertDeclaration assertDeclaration = nodeFactory.newStaticAssertion(condition, message);
- setOffsetAndLength(assertDeclaration);
- astStack.push(assertDeclaration);
- }
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/activator/XlcParserPlugin.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/activator/XlcParserPlugin.java
deleted file mode 100644
index 171ba54c8bd..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/activator/XlcParserPlugin.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.lrparser.xlc.activator;
-
-import org.eclipse.core.runtime.Plugin;
-
-public class XlcParserPlugin extends Plugin {
-
- public static final String PLUGIN_ID = "org.eclipse.cdt.core.lrparser.xlc";
-
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCASTVectorTypeSpecifier.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCASTVectorTypeSpecifier.java
deleted file mode 100644
index 68a96369df1..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCASTVectorTypeSpecifier.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.lrparser.xlc.ast;
-
-import org.eclipse.cdt.core.dom.ast.c.ICASTDeclSpecifier;
-
-public interface IXlcCASTVectorTypeSpecifier extends ICASTDeclSpecifier {
-
- public boolean isPixel();
-
- public void setPixel(boolean isPixel);
-
- public boolean isBool();
-
- public void setBool(boolean isBool);
-
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCNodeFactory.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCNodeFactory.java
deleted file mode 100644
index f073516ada9..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCNodeFactory.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.lrparser.xlc.ast;
-
-import org.eclipse.cdt.core.dom.ast.c.ICNodeFactory;
-
-public interface IXlcCNodeFactory extends ICNodeFactory {
-
- public IXlcCASTVectorTypeSpecifier newVectorTypeSpecifier();
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCPPASTModifiedArrayModifier.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCPPASTModifiedArrayModifier.java
deleted file mode 100644
index d5aacc9675f..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCPPASTModifiedArrayModifier.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.lrparser.xlc.ast;
-
-import org.eclipse.cdt.core.dom.ast.IASTArrayModifier;
-
-/**
- * Allow C99 style variable length arrays in XL C++.
- *
- */
-public interface IXlcCPPASTModifiedArrayModifier extends IASTArrayModifier {
-
- /**
- * Is the const modifier used?
- *
- * @return boolean
- */
- public boolean isConst();
-
- /**
- * Is the static modifier used?
- *
- * @return boolean
- */
- public boolean isStatic();
-
- /**
- * Is the restrict modifier used?
- *
- * @return boolean
- */
- public boolean isRestrict();
-
- /**
- * Is the volatile modifier used?
- *
- * @return boolean
- */
- public boolean isVolatile();
-
- /**
- * Set true/false that the const modifier is used.
- *
- * @param value
- * boolean
- */
- public void setConst(boolean value);
-
- /**
- * Set true/false that the volatile modifier is used.
- *
- * @param value
- * boolean
- */
- public void setVolatile(boolean value);
-
- /**
- * Set true/false that the restrict modifier is used.
- *
- * @param value
- * boolean
- */
- public void setRestrict(boolean value);
-
- /**
- * Set true/false that the static modifier is used.
- *
- * @param value
- * boolean
- */
- public void setStatic(boolean value);
-
- /**
- * Is the array variable sized? ( used ... )
- *
- * @return boolean
- */
- public boolean isVariableSized();
-
- /**
- * Set the array to be variable sized dependent upon value.
- *
- * @param value
- * boolean
- */
- public void setVariableSized(boolean value);
-
- /**
- */
- @Override
- public IXlcCPPASTModifiedArrayModifier copy();
-
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCPPASTVectorTypeSpecifier.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCPPASTVectorTypeSpecifier.java
deleted file mode 100644
index 50cd9becaf0..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCPPASTVectorTypeSpecifier.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.lrparser.xlc.ast;
-
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTDeclSpecifier;
-
-public interface IXlcCPPASTVectorTypeSpecifier extends ICPPASTDeclSpecifier {
-
- public boolean isPixel();
-
- public void setPixel(boolean isPixel);
-
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCPPNodeFactory.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCPPNodeFactory.java
deleted file mode 100644
index 538fbbb32e8..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCPPNodeFactory.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.lrparser.xlc.ast;
-
-import org.eclipse.cdt.core.dom.ast.IASTExpression;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPNodeFactory;
-
-public interface IXlcCPPNodeFactory extends ICPPNodeFactory {
-
- public IXlcCPPASTVectorTypeSpecifier newVectorTypeSpecifier();
-
- public IXlcCPPASTModifiedArrayModifier newModifiedArrayModifier(IASTExpression expr);
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/preferences/PreferenceInitializer.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/preferences/PreferenceInitializer.java
deleted file mode 100644
index b3a8997f521..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/preferences/PreferenceInitializer.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.lrparser.xlc.preferences;
-
-import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
-
-public class PreferenceInitializer extends AbstractPreferenceInitializer {
-
- @Override
- public void initializeDefaultPreferences() {
- XlcLanguagePreferences.initializeDefaultPreferences();
- }
-
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/preferences/XlcLanguagePreferences.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/preferences/XlcLanguagePreferences.java
deleted file mode 100644
index 6e7c610ad11..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/preferences/XlcLanguagePreferences.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2015 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.lrparser.xlc.preferences;
-
-import org.eclipse.cdt.core.lrparser.xlc.activator.XlcParserPlugin;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.ProjectScope;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.preferences.DefaultScope;
-import org.eclipse.core.runtime.preferences.IScopeContext;
-import org.eclipse.core.runtime.preferences.InstanceScope;
-import org.osgi.service.prefs.Preferences;
-
-/**
- * TODO trigger the indexer?
- *
- * @author Mike Kucera
- */
-public class XlcLanguagePreferences {
-
- private static final String QUALIFIER = XlcParserPlugin.PLUGIN_ID;
- private static final String XLC_PREFERENCES_NODE = "xlc.preferences";
-
- static void initializeDefaultPreferences() {
- Preferences defaultNode = getDefaultPreferences();
-
- for (XlcPref p : XlcPref.values()) {
- defaultNode.put(p.toString(), p.getDefaultValue());
- }
- }
-
- public static void setProjectPreference(XlcPref key, String value, IProject project) {
- getProjectPreferences(project).put(key.toString(), value);
- }
-
- public static void setWorkspacePreference(XlcPref key, String value) {
- getWorkspacePreferences().put(key.toString(), value);
- }
-
- public static String getProjectPreference(XlcPref key, IProject project) {
- return getProjectPreferences(project).get(key.toString(), null);
- }
-
- public static String getWorkspacePreference(XlcPref key) {
- return getWorkspacePreferences().get(key.toString(), null);
- }
-
- public static String getDefaultPreference(XlcPref key) {
- return getDefaultPreferences().get(key.toString(), null);
- }
-
- /**
- * Returns the preference for the given key.
- *
- * @param project If null then just the workspace and default preferences will be checked.
- */
- public static String get(XlcPref key, IProject project) {
- return Platform.getPreferencesService().get(key.toString(), null, getPreferences(project));
- }
-
- private static Preferences[] getPreferences(IProject project) {
- if (project == null) {
- return new Preferences[] { getWorkspacePreferences(), getDefaultPreferences() };
- } else {
- return new Preferences[] { getProjectPreferences(project), getWorkspacePreferences(),
- getDefaultPreferences() };
- }
- }
-
- private static Preferences getDefaultPreferences() {
- return getPreferences(DefaultScope.INSTANCE);
- }
-
- private static Preferences getWorkspacePreferences() {
- return getPreferences(InstanceScope.INSTANCE);
- }
-
- private static Preferences getProjectPreferences(IProject project) {
- return getPreferences(new ProjectScope(project));
- }
-
- private static Preferences getPreferences(IScopeContext scope) {
- return scope.getNode(QUALIFIER).node(XLC_PREFERENCES_NODE);
- }
-
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/preferences/XlcPref.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/preferences/XlcPref.java
deleted file mode 100644
index 194532c185d..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/preferences/XlcPref.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2010 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.lrparser.xlc.preferences;
-
-public enum XlcPref {
-
- SUPPORT_VECTOR_TYPES("true"), SUPPORT_DECIMAL_FLOATING_POINT_TYPES("true"), SUPPORT_COMPLEX_IN_CPP("true"),
- SUPPORT_RESTRICT_IN_CPP("true"), SUPPORT_STATIC_ASSERT("true");
-
- private final String defaultVal;
-
- private XlcPref(String defaultVal) {
- this.defaultVal = defaultVal;
- }
-
- public String getDefaultValue() {
- return defaultVal;
- }
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCASTVectorTypeSpecifier.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCASTVectorTypeSpecifier.java
deleted file mode 100644
index daafff40eac..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCASTVectorTypeSpecifier.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2013 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.internal.core.lrparser.xlc.ast;
-
-import org.eclipse.cdt.core.lrparser.xlc.ast.IXlcCASTVectorTypeSpecifier;
-import org.eclipse.cdt.internal.core.dom.parser.c.CASTSimpleDeclSpecifier;
-
-@SuppressWarnings("restriction")
-public class XlcCASTVectorTypeSpecifier extends CASTSimpleDeclSpecifier implements IXlcCASTVectorTypeSpecifier {
- private boolean isPixel;
- private boolean isBool;
-
- public XlcCASTVectorTypeSpecifier() {
- super();
- }
-
- @Override
- public XlcCASTVectorTypeSpecifier copy() {
- return copy(CopyStyle.withoutLocations);
- }
-
- @Override
- public XlcCASTVectorTypeSpecifier copy(CopyStyle style) {
- XlcCASTVectorTypeSpecifier copy = new XlcCASTVectorTypeSpecifier();
- copy.isPixel = isPixel;
- copy.isBool = isBool;
- return copy(copy, style);
- }
-
- @Override
- public boolean isPixel() {
- return isPixel;
- }
-
- @Override
- public void setPixel(boolean isPixel) {
- this.isPixel = isPixel;
- }
-
- @Override
- public boolean isBool() {
- return isBool;
- }
-
- @Override
- public void setBool(boolean isBool) {
- this.isBool = isBool;
- }
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCNodeFactory.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCNodeFactory.java
deleted file mode 100644
index 694cdccc238..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCNodeFactory.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.internal.core.lrparser.xlc.ast;
-
-import org.eclipse.cdt.core.lrparser.xlc.ast.IXlcCASTVectorTypeSpecifier;
-import org.eclipse.cdt.core.lrparser.xlc.ast.IXlcCNodeFactory;
-import org.eclipse.cdt.internal.core.dom.parser.c.CNodeFactory;
-
-@SuppressWarnings("restriction")
-public class XlcCNodeFactory extends CNodeFactory implements IXlcCNodeFactory {
-
- private static final XlcCNodeFactory DEFAULT_INSTANCE = new XlcCNodeFactory();
-
- public static XlcCNodeFactory getDefault() {
- return DEFAULT_INSTANCE;
- }
-
- @Override
- public IXlcCASTVectorTypeSpecifier newVectorTypeSpecifier() {
- return new XlcCASTVectorTypeSpecifier();
- }
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCPPASTModifiedArrayModifier.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCPPASTModifiedArrayModifier.java
deleted file mode 100644
index 3d311bfbfdd..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCPPASTModifiedArrayModifier.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2013 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.internal.core.lrparser.xlc.ast;
-
-import org.eclipse.cdt.core.dom.ast.IASTExpression;
-import org.eclipse.cdt.core.lrparser.xlc.ast.IXlcCPPASTModifiedArrayModifier;
-import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTArrayModifier;
-
-@SuppressWarnings("restriction")
-public class XlcCPPASTModifiedArrayModifier extends CPPASTArrayModifier implements IXlcCPPASTModifiedArrayModifier {
-
- private boolean isVolatile;
- private boolean isRestrict;
- private boolean isStatic;
- private boolean isConst;
- private boolean varSized;
-
- public XlcCPPASTModifiedArrayModifier() {
- }
-
- public XlcCPPASTModifiedArrayModifier(IASTExpression exp) {
- super(exp);
- }
-
- @Override
- public XlcCPPASTModifiedArrayModifier copy() {
- return copy(CopyStyle.withoutLocations);
- }
-
- @Override
- public XlcCPPASTModifiedArrayModifier copy(CopyStyle style) {
- IASTExpression exp = getConstantExpression();
- XlcCPPASTModifiedArrayModifier copy = new XlcCPPASTModifiedArrayModifier(exp == null ? null : exp.copy());
- copy.isVolatile = isVolatile;
- copy.isRestrict = isRestrict;
- copy.isStatic = isStatic;
- copy.isConst = isConst;
- copy.varSized = varSized;
- return copy(copy, style);
- }
-
- @Override
- public boolean isConst() {
- return isConst;
- }
-
- @Override
- public boolean isStatic() {
- return isStatic;
- }
-
- @Override
- public boolean isRestrict() {
- return isRestrict;
- }
-
- @Override
- public boolean isVolatile() {
- return isVolatile;
- }
-
- @Override
- public void setConst(boolean value) {
- assertNotFrozen();
- this.isConst = value;
- }
-
- @Override
- public void setVolatile(boolean value) {
- assertNotFrozen();
- this.isVolatile = value;
- }
-
- @Override
- public void setRestrict(boolean value) {
- assertNotFrozen();
- this.isRestrict = value;
- }
-
- @Override
- public void setStatic(boolean value) {
- assertNotFrozen();
- this.isStatic = value;
- }
-
- @Override
- public boolean isVariableSized() {
- return varSized;
- }
-
- @Override
- public void setVariableSized(boolean value) {
- assertNotFrozen();
- varSized = value;
- }
-
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCPPASTVectorTypeSpecifier.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCPPASTVectorTypeSpecifier.java
deleted file mode 100644
index d1681f89a5a..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCPPASTVectorTypeSpecifier.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.internal.core.lrparser.xlc.ast;
-
-import org.eclipse.cdt.core.lrparser.xlc.ast.IXlcCPPASTVectorTypeSpecifier;
-import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTSimpleDeclSpecifier;
-
-@SuppressWarnings("restriction")
-public class XlcCPPASTVectorTypeSpecifier extends CPPASTSimpleDeclSpecifier implements IXlcCPPASTVectorTypeSpecifier {
-
- private boolean isPixel;
-
- public XlcCPPASTVectorTypeSpecifier() {
- super();
- }
-
- @Override
- public XlcCPPASTVectorTypeSpecifier copy() {
- return copy(CopyStyle.withoutLocations);
- }
-
- @Override
- public XlcCPPASTVectorTypeSpecifier copy(CopyStyle style) {
- XlcCPPASTVectorTypeSpecifier copy = new XlcCPPASTVectorTypeSpecifier();
- copy.isPixel = isPixel;
- return copy(copy, style);
- }
-
- @Override
- public boolean isPixel() {
- return isPixel;
- }
-
- @Override
- public void setPixel(boolean isPixel) {
- this.isPixel = isPixel;
- }
-
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCPPNodeFactory.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCPPNodeFactory.java
deleted file mode 100644
index 720d71076cb..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCPPNodeFactory.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.internal.core.lrparser.xlc.ast;
-
-import org.eclipse.cdt.core.dom.ast.IASTExpression;
-import org.eclipse.cdt.core.lrparser.xlc.ast.IXlcCPPASTModifiedArrayModifier;
-import org.eclipse.cdt.core.lrparser.xlc.ast.IXlcCPPASTVectorTypeSpecifier;
-import org.eclipse.cdt.core.lrparser.xlc.ast.IXlcCPPNodeFactory;
-import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPNodeFactory;
-
-@SuppressWarnings("restriction")
-public class XlcCPPNodeFactory extends CPPNodeFactory implements IXlcCPPNodeFactory {
-
- private static final XlcCPPNodeFactory DEFAULT_INSTANCE = new XlcCPPNodeFactory();
-
- public static XlcCPPNodeFactory getDefault() {
- return DEFAULT_INSTANCE;
- }
-
- @Override
- public IXlcCPPASTVectorTypeSpecifier newVectorTypeSpecifier() {
- return new XlcCPPASTVectorTypeSpecifier();
- }
-
- @Override
- public IXlcCPPASTModifiedArrayModifier newModifiedArrayModifier(IASTExpression expr) {
- return new XlcCPPASTModifiedArrayModifier(expr);
- }
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/c/XlcCParser.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/c/XlcCParser.java
deleted file mode 100644
index 19e0999a649..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/c/XlcCParser.java
+++ /dev/null
@@ -1,1878 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2010 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.lrparser.xlc.c;
-
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.cdt.core.dom.ast.IASTBinaryExpression;
-import org.eclipse.cdt.core.dom.ast.IASTCastExpression;
-import org.eclipse.cdt.core.dom.ast.IASTCompletionNode;
-import org.eclipse.cdt.core.dom.ast.IASTCompositeTypeSpecifier;
-import org.eclipse.cdt.core.dom.ast.IASTElaboratedTypeSpecifier;
-import org.eclipse.cdt.core.dom.ast.IASTLiteralExpression;
-import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
-import org.eclipse.cdt.core.dom.ast.IASTTypeIdExpression;
-import org.eclipse.cdt.core.dom.ast.IASTUnaryExpression;
-import org.eclipse.cdt.core.dom.lrparser.CPreprocessorAdapter;
-import org.eclipse.cdt.core.dom.lrparser.IDOMTokenMap;
-import org.eclipse.cdt.core.dom.lrparser.IParser;
-import org.eclipse.cdt.core.dom.lrparser.ITokenCollector;
-import org.eclipse.cdt.core.dom.lrparser.action.ITokenStream;
-import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack;
-import org.eclipse.cdt.core.dom.lrparser.action.gnu.GCCSecondaryParserFactory;
-import org.eclipse.cdt.core.dom.lrparser.action.gnu.GNUBuildASTParserAction;
-import org.eclipse.cdt.core.dom.lrparser.lpgextensions.FixedBacktrackingParser;
-import org.eclipse.cdt.core.dom.parser.IBuiltinBindingsProvider;
-import org.eclipse.cdt.core.index.IIndex;
-import org.eclipse.cdt.core.lrparser.xlc.action.XlcCBuildASTParserAction;
-import org.eclipse.cdt.core.parser.IScanner;
-import org.eclipse.cdt.internal.core.lrparser.xlc.ast.XlcCNodeFactory;
-
-import lpg.lpgjavaruntime.BadParseException;
-import lpg.lpgjavaruntime.BadParseSymFileException;
-import lpg.lpgjavaruntime.DiagnoseParser;
-import lpg.lpgjavaruntime.ErrorToken;
-import lpg.lpgjavaruntime.IToken;
-import lpg.lpgjavaruntime.LexStream;
-import lpg.lpgjavaruntime.Monitor;
-import lpg.lpgjavaruntime.NotBacktrackParseTableException;
-import lpg.lpgjavaruntime.NullExportedSymbolsException;
-import lpg.lpgjavaruntime.NullTerminalSymbolsException;
-import lpg.lpgjavaruntime.ParseErrorCodes;
-import lpg.lpgjavaruntime.ParseTable;
-import lpg.lpgjavaruntime.PrsStream;
-import lpg.lpgjavaruntime.RuleAction;
-import lpg.lpgjavaruntime.TokenStream;
-import lpg.lpgjavaruntime.UndefinedEofSymbolException;
-import lpg.lpgjavaruntime.UnimplementedTerminalsException;
-
-public class XlcCParser extends PrsStream
- implements RuleAction, ITokenStream, ITokenCollector, IParser<IASTTranslationUnit>
-
-{
- private static ParseTable prs = new XlcCParserprs();
- private FixedBacktrackingParser btParser;
-
- public FixedBacktrackingParser getParser() {
- return btParser;
- }
-
- private void setResult(Object object) {
- btParser.setSym1(object);
- }
-
- public Object getRhsSym(int i) {
- return btParser.getSym(i);
- }
-
- public int getRhsTokenIndex(int i) {
- return btParser.getToken(i);
- }
-
- public IToken getRhsIToken(int i) {
- return super.getIToken(getRhsTokenIndex(i));
- }
-
- public int getRhsFirstTokenIndex(int i) {
- return btParser.getFirstToken(i);
- }
-
- public IToken getRhsFirstIToken(int i) {
- return super.getIToken(getRhsFirstTokenIndex(i));
- }
-
- public int getRhsLastTokenIndex(int i) {
- return btParser.getLastToken(i);
- }
-
- public IToken getRhsLastIToken(int i) {
- return super.getIToken(getRhsLastTokenIndex(i));
- }
-
- public int getLeftSpan() {
- return btParser.getFirstToken();
- }
-
- @Override
- public IToken getLeftIToken() {
- return super.getIToken(getLeftSpan());
- }
-
- public int getRightSpan() {
- return btParser.getLastToken();
- }
-
- @Override
- public IToken getRightIToken() {
- return super.getIToken(getRightSpan());
- }
-
- public int getRhsErrorTokenIndex(int i) {
- int index = btParser.getToken(i);
- IToken err = super.getIToken(index);
- return (err instanceof ErrorToken ? index : 0);
- }
-
- public ErrorToken getRhsErrorIToken(int i) {
- int index = btParser.getToken(i);
- IToken err = super.getIToken(index);
- return (ErrorToken) (err instanceof ErrorToken ? err : null);
- }
-
- public XlcCParser(LexStream lexStream) {
- super(lexStream);
-
- try {
- super.remapTerminalSymbols(orderedTerminalSymbols(), XlcCParserprs.EOFT_SYMBOL);
- } catch (NullExportedSymbolsException e) {
- } catch (NullTerminalSymbolsException e) {
- } catch (UnimplementedTerminalsException e) {
- java.util.ArrayList unimplemented_symbols = e.getSymbols();
- System.out.println("The Lexer will not scan the following token(s):");
- for (int i = 0; i < unimplemented_symbols.size(); i++) {
- Integer id = (Integer) unimplemented_symbols.get(i);
- System.out.println(" " + XlcCParsersym.orderedTerminalSymbols[id.intValue()]);
- }
- System.out.println();
- } catch (UndefinedEofSymbolException e) {
- throw new Error(new UndefinedEofSymbolException("The Lexer does not implement the Eof symbol "
- + XlcCParsersym.orderedTerminalSymbols[XlcCParserprs.EOFT_SYMBOL]));
- }
- }
-
- @Override
- public String[] orderedTerminalSymbols() {
- return XlcCParsersym.orderedTerminalSymbols;
- }
-
- public String getTokenKindName(int kind) {
- return XlcCParsersym.orderedTerminalSymbols[kind];
- }
-
- public int getEOFTokenKind() {
- return XlcCParserprs.EOFT_SYMBOL;
- }
-
- public PrsStream getParseStream() {
- return this;
- }
-
- //
- // Report error message for given error_token.
- //
- public final void reportErrorTokenMessage(int error_token, String msg) {
- int firsttok = super.getFirstErrorToken(error_token), lasttok = super.getLastErrorToken(error_token);
- String location = super.getFileName() + ':'
- + (firsttok > lasttok ? (super.getEndLine(lasttok) + ":" + super.getEndColumn(lasttok))
- : (super.getLine(error_token) + ":" + super.getColumn(error_token) + ":"
- + super.getEndLine(error_token) + ":" + super.getEndColumn(error_token)))
- + ": ";
- super.reportError((firsttok > lasttok ? ParseErrorCodes.INSERTION_CODE : ParseErrorCodes.SUBSTITUTION_CODE),
- location, msg);
- }
-
- public void parser() {
- parser(null, 0);
- }
-
- public void parser(Monitor monitor) {
- parser(monitor, 0);
- }
-
- public void parser(int error_repair_count) {
- parser(null, error_repair_count);
- }
-
- public void parser(Monitor monitor, int error_repair_count) {
- try {
- btParser = new FixedBacktrackingParser(monitor, this, prs, this);
- } catch (NotBacktrackParseTableException e) {
- throw new Error(
- new NotBacktrackParseTableException("Regenerate XlcCParserprs.java with -BACKTRACK option"));
- } catch (BadParseSymFileException e) {
- throw new Error(new BadParseSymFileException("Bad Parser Symbol File -- XlcCParsersym.java"));
- }
-
- try {
- btParser.parse(error_repair_count);
- } catch (BadParseException e) {
- reset(e.error_token); // point to error token
- DiagnoseParser diagnoseParser = new DiagnoseParser(this, prs);
- diagnoseParser.diagnose(e.error_token);
- }
- }
-
- private XlcCBuildASTParserAction action;
- private IASTCompletionNode compNode;
-
- public XlcCParser(IScanner scanner, IDOMTokenMap tokenMap, IBuiltinBindingsProvider builtinBindingsProvider,
- IIndex index, Map<String, String> properties) {
- initActions(properties);
- action.initializeTranslationUnit(scanner, builtinBindingsProvider, index);
- CPreprocessorAdapter.runCPreprocessor(scanner, this, tokenMap);
- }
-
- private void initActions(Map<String, String> properties) {
- ScopedStack<Object> astStack = new ScopedStack<>();
-
- action = new XlcCBuildASTParserAction(this, astStack, XlcCNodeFactory.getDefault(),
- GCCSecondaryParserFactory.getDefault());
- action.setParserProperties(properties);
-
- gnuAction = new GNUBuildASTParserAction(this, astStack, XlcCNodeFactory.getDefault());
- gnuAction.setParserProperties(properties);
-
- }
-
- @Override
- public void addToken(IToken token) {
- token.setKind(mapKind(token.getKind())); // TODO does mapKind need to be called?
- super.addToken(token);
- }
-
- @Override
- public IASTTranslationUnit parse() {
- // this has to be done, or... kaboom!
- setStreamLength(getSize());
-
- final int errorRepairCount = -1; // -1 means full error handling
- parser(null, errorRepairCount); // do the actual parse
- super.resetTokenStream(); // allow tokens to be garbage collected
-
- compNode = action.getASTCompletionNode(); // the completion node may be null
- return (IASTTranslationUnit) action.getParseResult();
- }
-
- @Override
- public IASTCompletionNode getCompletionNode() {
- return compNode;
- }
-
- // uncomment this method to use with backtracking parser
- @Override
- public List<IToken> getRuleTokens() {
- return getTokens().subList(getLeftSpan(), getRightSpan() + 1);
- }
-
- @Override
- public String[] getOrderedTerminalSymbols() {
- return XlcCParsersym.orderedTerminalSymbols;
- }
-
- @Override
- @SuppressWarnings("nls")
- public String getName() {
- return "XlcCParser";
- }
-
- private GNUBuildASTParserAction gnuAction;
-
- @Override
- public void ruleAction(int ruleNumber) {
- switch (ruleNumber) {
-
- //
- // Rule 1: <openscope-ast> ::= $Empty
- //
- case 1: {
- action.openASTScope();
- break;
- }
-
- //
- // Rule 2: <empty> ::= $Empty
- //
- case 2: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 13: literal ::= integer
- //
- case 13: {
- action.consumeExpressionLiteral(IASTLiteralExpression.lk_integer_constant);
- break;
- }
-
- //
- // Rule 14: literal ::= floating
- //
- case 14: {
- action.consumeExpressionLiteral(IASTLiteralExpression.lk_float_constant);
- break;
- }
-
- //
- // Rule 15: literal ::= charconst
- //
- case 15: {
- action.consumeExpressionLiteral(IASTLiteralExpression.lk_char_constant);
- break;
- }
-
- //
- // Rule 16: literal ::= stringlit
- //
- case 16: {
- action.consumeExpressionLiteral(IASTLiteralExpression.lk_string_literal);
- break;
- }
-
- //
- // Rule 18: primary_expression ::= primary_expression_id
- //
- case 18: {
- action.consumeExpressionID();
- break;
- }
-
- //
- // Rule 19: primary_expression ::= ( expression )
- //
- case 19: {
- action.consumeExpressionBracketed();
- break;
- }
-
- //
- // Rule 22: postfix_expression ::= postfix_expression [ expression ]
- //
- case 22: {
- action.consumeExpressionArraySubscript();
- break;
- }
-
- //
- // Rule 23: postfix_expression ::= postfix_expression ( expression_list_opt )
- //
- case 23: {
- action.consumeExpressionFunctionCall();
- break;
- }
-
- //
- // Rule 24: postfix_expression ::= postfix_expression . member_name
- //
- case 24: {
- action.consumeExpressionFieldReference(false);
- break;
- }
-
- //
- // Rule 25: postfix_expression ::= postfix_expression -> member_name
- //
- case 25: {
- action.consumeExpressionFieldReference(true);
- break;
- }
-
- //
- // Rule 26: postfix_expression ::= postfix_expression ++
- //
- case 26: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixIncr);
- break;
- }
-
- //
- // Rule 27: postfix_expression ::= postfix_expression --
- //
- case 27: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixDecr);
- break;
- }
-
- //
- // Rule 28: postfix_expression ::= ( type_id ) initializer_list
- //
- case 28: {
- action.consumeExpressionTypeIdInitializer();
- break;
- }
-
- //
- // Rule 33: unary_expression ::= ++ unary_expression
- //
- case 33: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixIncr);
- break;
- }
-
- //
- // Rule 34: unary_expression ::= -- unary_expression
- //
- case 34: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixDecr);
- break;
- }
-
- //
- // Rule 35: unary_expression ::= & cast_expression
- //
- case 35: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_amper);
- break;
- }
-
- //
- // Rule 36: unary_expression ::= * cast_expression
- //
- case 36: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_star);
- break;
- }
-
- //
- // Rule 37: unary_expression ::= + cast_expression
- //
- case 37: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_plus);
- break;
- }
-
- //
- // Rule 38: unary_expression ::= - cast_expression
- //
- case 38: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_minus);
- break;
- }
-
- //
- // Rule 39: unary_expression ::= ~ cast_expression
- //
- case 39: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_tilde);
- break;
- }
-
- //
- // Rule 40: unary_expression ::= ! cast_expression
- //
- case 40: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_not);
- break;
- }
-
- //
- // Rule 41: unary_expression ::= sizeof unary_expression
- //
- case 41: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_sizeof);
- break;
- }
-
- //
- // Rule 42: unary_expression ::= sizeof ( type_id )
- //
- case 42: {
- action.consumeExpressionTypeId(IASTTypeIdExpression.op_sizeof);
- break;
- }
-
- //
- // Rule 44: cast_expression ::= ( type_id ) cast_expression
- //
- case 44: {
- action.consumeExpressionCast(IASTCastExpression.op_cast);
- break;
- }
-
- //
- // Rule 46: multiplicative_expression ::= multiplicative_expression * cast_expression
- //
- case 46: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_multiply);
- break;
- }
-
- //
- // Rule 47: multiplicative_expression ::= multiplicative_expression / cast_expression
- //
- case 47: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_divide);
- break;
- }
-
- //
- // Rule 48: multiplicative_expression ::= multiplicative_expression % cast_expression
- //
- case 48: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_modulo);
- break;
- }
-
- //
- // Rule 50: additive_expression ::= additive_expression + multiplicative_expression
- //
- case 50: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_plus);
- break;
- }
-
- //
- // Rule 51: additive_expression ::= additive_expression - multiplicative_expression
- //
- case 51: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_minus);
- break;
- }
-
- //
- // Rule 53: shift_expression ::= shift_expression << additive_expression
- //
- case 53: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftLeft);
- break;
- }
-
- //
- // Rule 54: shift_expression ::= shift_expression >> additive_expression
- //
- case 54: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftRight);
- break;
- }
-
- //
- // Rule 56: relational_expression ::= relational_expression < shift_expression
- //
- case 56: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_lessThan);
- break;
- }
-
- //
- // Rule 57: relational_expression ::= relational_expression > shift_expression
- //
- case 57: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_greaterThan);
- break;
- }
-
- //
- // Rule 58: relational_expression ::= relational_expression <= shift_expression
- //
- case 58: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_lessEqual);
- break;
- }
-
- //
- // Rule 59: relational_expression ::= relational_expression >= shift_expression
- //
- case 59: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_greaterEqual);
- break;
- }
-
- //
- // Rule 61: equality_expression ::= equality_expression == relational_expression
- //
- case 61: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_equals);
- break;
- }
-
- //
- // Rule 62: equality_expression ::= equality_expression != relational_expression
- //
- case 62: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_notequals);
- break;
- }
-
- //
- // Rule 64: and_expression ::= and_expression & equality_expression
- //
- case 64: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryAnd);
- break;
- }
-
- //
- // Rule 66: exclusive_or_expression ::= exclusive_or_expression ^ and_expression
- //
- case 66: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryXor);
- break;
- }
-
- //
- // Rule 68: inclusive_or_expression ::= inclusive_or_expression | exclusive_or_expression
- //
- case 68: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryOr);
- break;
- }
-
- //
- // Rule 70: logical_and_expression ::= logical_and_expression && inclusive_or_expression
- //
- case 70: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_logicalAnd);
- break;
- }
-
- //
- // Rule 72: logical_or_expression ::= logical_or_expression || logical_and_expression
- //
- case 72: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_logicalOr);
- break;
- }
-
- //
- // Rule 74: conditional_expression ::= logical_or_expression ? expression : assignment_expression
- //
- case 74: {
- action.consumeExpressionConditional();
- break;
- }
-
- //
- // Rule 76: assignment_expression ::= unary_expression = assignment_expression
- //
- case 76: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_assign);
- break;
- }
-
- //
- // Rule 77: assignment_expression ::= unary_expression *= assignment_expression
- //
- case 77: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_multiplyAssign);
- break;
- }
-
- //
- // Rule 78: assignment_expression ::= unary_expression /= assignment_expression
- //
- case 78: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_divideAssign);
- break;
- }
-
- //
- // Rule 79: assignment_expression ::= unary_expression %= assignment_expression
- //
- case 79: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_moduloAssign);
- break;
- }
-
- //
- // Rule 80: assignment_expression ::= unary_expression += assignment_expression
- //
- case 80: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_plusAssign);
- break;
- }
-
- //
- // Rule 81: assignment_expression ::= unary_expression -= assignment_expression
- //
- case 81: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_minusAssign);
- break;
- }
-
- //
- // Rule 82: assignment_expression ::= unary_expression <<= assignment_expression
- //
- case 82: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftLeftAssign);
- break;
- }
-
- //
- // Rule 83: assignment_expression ::= unary_expression >>= assignment_expression
- //
- case 83: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftRightAssign);
- break;
- }
-
- //
- // Rule 84: assignment_expression ::= unary_expression &= assignment_expression
- //
- case 84: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryAndAssign);
- break;
- }
-
- //
- // Rule 85: assignment_expression ::= unary_expression ^= assignment_expression
- //
- case 85: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryXorAssign);
- break;
- }
-
- //
- // Rule 86: assignment_expression ::= unary_expression |= assignment_expression
- //
- case 86: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryOrAssign);
- break;
- }
-
- //
- // Rule 89: expression_list ::= <openscope-ast> expression_list_actual
- //
- case 89: {
- action.consumeExpressionList();
- break;
- }
-
- //
- // Rule 91: expression_list_opt ::= $Empty
- //
- case 91: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 101: statement ::= ERROR_TOKEN
- //
- case 101: {
- action.consumeStatementProblem();
- break;
- }
-
- //
- // Rule 102: labeled_statement ::= identifier_token : statement
- //
- case 102: {
- action.consumeStatementLabeled();
- break;
- }
-
- //
- // Rule 103: labeled_statement ::= case constant_expression : statement
- //
- case 103: {
- action.consumeStatementCase();
- break;
- }
-
- //
- // Rule 104: labeled_statement ::= default : statement
- //
- case 104: {
- action.consumeStatementDefault();
- break;
- }
-
- //
- // Rule 105: compound_statement ::= { }
- //
- case 105: {
- action.consumeStatementCompoundStatement(false);
- break;
- }
-
- //
- // Rule 106: compound_statement ::= { <openscope-ast> block_item_list }
- //
- case 106: {
- action.consumeStatementCompoundStatement(true);
- break;
- }
-
- //
- // Rule 110: block_item ::= declaration
- //
- case 110: {
- action.consumeStatementDeclarationWithDisambiguation();
- break;
- }
-
- //
- // Rule 111: expression_statement ::= ;
- //
- case 111: {
- action.consumeStatementNull();
- break;
- }
-
- //
- // Rule 112: expression_statement ::= expression_in_statement ;
- //
- case 112: {
- action.consumeStatementExpression();
- break;
- }
-
- //
- // Rule 113: selection_statement ::= if ( expression ) statement
- //
- case 113: {
- action.consumeStatementIf(false);
- break;
- }
-
- //
- // Rule 114: selection_statement ::= if ( expression ) statement else statement
- //
- case 114: {
- action.consumeStatementIf(true);
- break;
- }
-
- //
- // Rule 115: selection_statement ::= switch ( expression ) statement
- //
- case 115: {
- action.consumeStatementSwitch();
- break;
- }
-
- //
- // Rule 117: expression_opt ::= $Empty
- //
- case 117: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 118: iteration_statement ::= do statement while ( expression ) ;
- //
- case 118: {
- action.consumeStatementDoLoop(true);
- break;
- }
-
- //
- // Rule 119: iteration_statement ::= do statement
- //
- case 119: {
- action.consumeStatementDoLoop(false);
- break;
- }
-
- //
- // Rule 120: iteration_statement ::= while ( expression ) statement
- //
- case 120: {
- action.consumeStatementWhileLoop();
- break;
- }
-
- //
- // Rule 121: iteration_statement ::= for ( expression_opt ; expression_opt ; expression_opt ) statement
- //
- case 121: {
- action.consumeStatementForLoop();
- break;
- }
-
- //
- // Rule 122: iteration_statement ::= for ( declaration expression_opt ; expression_opt ) statement
- //
- case 122: {
- action.consumeStatementForLoop();
- break;
- }
-
- //
- // Rule 123: jump_statement ::= goto identifier_token ;
- //
- case 123: {
- action.consumeStatementGoto();
- break;
- }
-
- //
- // Rule 124: jump_statement ::= continue ;
- //
- case 124: {
- action.consumeStatementContinue();
- break;
- }
-
- //
- // Rule 125: jump_statement ::= break ;
- //
- case 125: {
- action.consumeStatementBreak();
- break;
- }
-
- //
- // Rule 126: jump_statement ::= return ;
- //
- case 126: {
- action.consumeStatementReturn(false);
- break;
- }
-
- //
- // Rule 127: jump_statement ::= return expression ;
- //
- case 127: {
- action.consumeStatementReturn(true);
- break;
- }
-
- //
- // Rule 128: declaration ::= declaration_specifiers ;
- //
- case 128: {
- action.consumeDeclarationSimple(false);
- break;
- }
-
- //
- // Rule 129: declaration ::= declaration_specifiers <openscope-ast> init_declarator_list ;
- //
- case 129: {
- action.consumeDeclarationSimple(true);
- break;
- }
-
- //
- // Rule 130: declaration_specifiers ::= <openscope-ast> simple_declaration_specifiers
- //
- case 130: {
- action.consumeDeclarationSpecifiersSimple();
- break;
- }
-
- //
- // Rule 131: declaration_specifiers ::= <openscope-ast> struct_or_union_declaration_specifiers
- //
- case 131: {
- action.consumeDeclarationSpecifiersStructUnionEnum();
- break;
- }
-
- //
- // Rule 132: declaration_specifiers ::= <openscope-ast> elaborated_declaration_specifiers
- //
- case 132: {
- action.consumeDeclarationSpecifiersStructUnionEnum();
- break;
- }
-
- //
- // Rule 133: declaration_specifiers ::= <openscope-ast> enum_declaration_specifiers
- //
- case 133: {
- action.consumeDeclarationSpecifiersStructUnionEnum();
- break;
- }
-
- //
- // Rule 134: declaration_specifiers ::= <openscope-ast> typdef_name_declaration_specifiers
- //
- case 134: {
- action.consumeDeclarationSpecifiersTypedefName();
- break;
- }
-
- //
- // Rule 159: init_declarator ::= complete_declarator = initializer
- //
- case 159: {
- action.consumeDeclaratorWithInitializer(true);
- break;
- }
-
- //
- // Rule 161: storage_class_specifier ::= storage_class_specifier_token
- //
- case 161: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 167: simple_type_specifier ::= simple_type_specifier_token
- //
- case 167: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 180: type_name_specifier ::= identifier_token
- //
- case 180: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 181: struct_or_union_specifier ::= struct_or_union struct_or_union_specifier_hook { <openscope-ast> struct_declaration_list_opt }
- //
- case 181: {
- action.consumeTypeSpecifierComposite(false);
- break;
- }
-
- //
- // Rule 182: struct_or_union_specifier ::= struct_or_union struct_or_union_specifier_hook identifier_token struct_or_union_specifier_suffix_hook { <openscope-ast> struct_declaration_list_opt }
- //
- case 182: {
- action.consumeTypeSpecifierComposite(true);
- break;
- }
-
- //
- // Rule 187: elaborated_specifier ::= struct elaborated_specifier_hook identifier_token
- //
- case 187: {
- action.consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_struct);
- break;
- }
-
- //
- // Rule 188: elaborated_specifier ::= union elaborated_specifier_hook identifier_token
- //
- case 188: {
- action.consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_union);
- break;
- }
-
- //
- // Rule 189: elaborated_specifier ::= enum elaborated_specifier_hook identifier_token
- //
- case 189: {
- action.consumeTypeSpecifierElaborated(IASTElaboratedTypeSpecifier.k_enum);
- break;
- }
-
- //
- // Rule 195: struct_declaration ::= specifier_qualifier_list <openscope-ast> struct_declarator_list ;
- //
- case 195: {
- action.consumeStructDeclaration(true);
- break;
- }
-
- //
- // Rule 196: struct_declaration ::= specifier_qualifier_list ;
- //
- case 196: {
- action.consumeStructDeclaration(false);
- break;
- }
-
- //
- // Rule 197: struct_declaration ::= ERROR_TOKEN
- //
- case 197: {
- action.consumeDeclarationProblem();
- break;
- }
-
- //
- // Rule 203: struct_declarator ::= : constant_expression
- //
- case 203: {
- action.consumeBitField(false);
- break;
- }
-
- //
- // Rule 204: struct_declarator ::= declarator : constant_expression
- //
- case 204: {
- action.consumeBitField(true);
- break;
- }
-
- //
- // Rule 205: enum_specifier ::= enum enum_specifier_hook { <openscope-ast> enumerator_list_opt comma_opt }
- //
- case 205: {
- action.consumeTypeSpecifierEnumeration(false);
- break;
- }
-
- //
- // Rule 206: enum_specifier ::= enum enum_specifier_hook identifier_token { <openscope-ast> enumerator_list_opt comma_opt }
- //
- case 206: {
- action.consumeTypeSpecifierEnumeration(true);
- break;
- }
-
- //
- // Rule 212: enumerator ::= identifier_token
- //
- case 212: {
- action.consumeEnumerator(false);
- break;
- }
-
- //
- // Rule 213: enumerator ::= identifier_token = constant_expression
- //
- case 213: {
- action.consumeEnumerator(true);
- break;
- }
-
- //
- // Rule 214: type_qualifier ::= type_qualifier_token
- //
- case 214: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 218: function_specifier ::= inline
- //
- case 218: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 220: declarator ::= <openscope-ast> pointer_seq direct_declarator
- //
- case 220: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 225: basic_direct_declarator ::= declarator_id_name
- //
- case 225: {
- action.consumeDirectDeclaratorIdentifier();
- break;
- }
-
- //
- // Rule 226: basic_direct_declarator ::= ( declarator )
- //
- case 226: {
- action.consumeDirectDeclaratorBracketed();
- break;
- }
-
- //
- // Rule 227: declarator_id_name ::= identifier
- //
- case 227: {
- action.consumeIdentifierName();
- break;
- }
-
- //
- // Rule 228: array_direct_declarator ::= basic_direct_declarator array_modifier
- //
- case 228: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 229: array_direct_declarator ::= array_direct_declarator array_modifier
- //
- case 229: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 231: function_direct_declarator ::= basic_direct_declarator ( <openscope-ast> parameter_type_list )
- //
- case 231: {
- action.consumeDirectDeclaratorFunctionDeclarator(true, true);
- break;
- }
-
- //
- // Rule 232: function_direct_declarator ::= basic_direct_declarator ( )
- //
- case 232: {
- action.consumeDirectDeclaratorFunctionDeclarator(true, false);
- break;
- }
-
- //
- // Rule 234: function_declarator ::= <openscope-ast> pointer_seq function_direct_declarator
- //
- case 234: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 235: knr_direct_declarator ::= basic_direct_declarator ( <openscope-ast> identifier_list )
- //
- case 235: {
- action.consumeDirectDeclaratorFunctionDeclaratorKnR();
- break;
- }
-
- //
- // Rule 237: knr_function_declarator ::= <openscope-ast> pointer_seq knr_direct_declarator
- //
- case 237: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 238: identifier_list ::= identifier
- //
- case 238: {
- action.consumeIdentifierKnR();
- break;
- }
-
- //
- // Rule 239: identifier_list ::= identifier_list , identifier
- //
- case 239: {
- action.consumeIdentifierKnR();
- break;
- }
-
- //
- // Rule 240: array_modifier ::= [ ]
- //
- case 240: {
- action.consumeDirectDeclaratorArrayModifier(false);
- break;
- }
-
- //
- // Rule 241: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers ]
- //
- case 241: {
- action.consumeDirectDeclaratorModifiedArrayModifier(false, false, true, false);
- break;
- }
-
- //
- // Rule 242: array_modifier ::= [ assignment_expression ]
- //
- case 242: {
- action.consumeDirectDeclaratorArrayModifier(true);
- break;
- }
-
- //
- // Rule 243: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers assignment_expression ]
- //
- case 243: {
- action.consumeDirectDeclaratorModifiedArrayModifier(false, false, true, true);
- break;
- }
-
- //
- // Rule 244: array_modifier ::= [ static assignment_expression ]
- //
- case 244: {
- action.consumeDirectDeclaratorModifiedArrayModifier(true, false, false, true);
- break;
- }
-
- //
- // Rule 245: array_modifier ::= [ static <openscope-ast> array_modifier_type_qualifiers assignment_expression ]
- //
- case 245: {
- action.consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true);
- break;
- }
-
- //
- // Rule 246: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers static assignment_expression ]
- //
- case 246: {
- action.consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true);
- break;
- }
-
- //
- // Rule 247: array_modifier ::= [ * ]
- //
- case 247: {
- action.consumeDirectDeclaratorModifiedArrayModifier(false, true, false, false);
- break;
- }
-
- //
- // Rule 248: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers * ]
- //
- case 248: {
- action.consumeDirectDeclaratorModifiedArrayModifier(false, true, true, false);
- break;
- }
-
- //
- // Rule 250: pointer_seq ::= pointer_hook * pointer_hook
- //
- case 250: {
- action.consumePointer();
- break;
- }
-
- //
- // Rule 251: pointer_seq ::= pointer_seq pointer_hook * pointer_hook
- //
- case 251: {
- action.consumePointer();
- break;
- }
-
- //
- // Rule 252: pointer_seq ::= pointer_hook * pointer_hook <openscope-ast> type_qualifier_list
- //
- case 252: {
- action.consumePointerTypeQualifierList();
- break;
- }
-
- //
- // Rule 253: pointer_seq ::= pointer_seq pointer_hook * pointer_hook <openscope-ast> type_qualifier_list
- //
- case 253: {
- action.consumePointerTypeQualifierList();
- break;
- }
-
- //
- // Rule 257: parameter_type_list ::= parameter_list
- //
- case 257: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 258: parameter_type_list ::= parameter_list , ...
- //
- case 258: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 259: parameter_type_list ::= ...
- //
- case 259: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 262: parameter_declaration ::= declaration_specifiers complete_parameter_declarator
- //
- case 262: {
- action.consumeParameterDeclaration();
- break;
- }
-
- //
- // Rule 263: parameter_declaration ::= declaration_specifiers
- //
- case 263: {
- action.consumeParameterDeclarationWithoutDeclarator();
- break;
- }
-
- //
- // Rule 266: type_id ::= specifier_qualifier_list
- //
- case 266: {
- action.consumeTypeId(false);
- break;
- }
-
- //
- // Rule 267: type_id ::= specifier_qualifier_list abstract_declarator
- //
- case 267: {
- action.consumeTypeId(true);
- break;
- }
-
- //
- // Rule 269: abstract_declarator ::= <openscope-ast> pointer_seq
- //
- case 269: {
- action.consumeDeclaratorWithPointer(false);
- break;
- }
-
- //
- // Rule 270: abstract_declarator ::= <openscope-ast> pointer_seq direct_abstract_declarator
- //
- case 270: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 274: basic_direct_abstract_declarator ::= ( abstract_declarator )
- //
- case 274: {
- action.consumeDirectDeclaratorBracketed();
- break;
- }
-
- //
- // Rule 275: array_direct_abstract_declarator ::= array_modifier
- //
- case 275: {
- action.consumeDirectDeclaratorArrayDeclarator(false);
- break;
- }
-
- //
- // Rule 276: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier
- //
- case 276: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 277: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier
- //
- case 277: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 278: function_direct_abstract_declarator ::= ( )
- //
- case 278: {
- action.consumeDirectDeclaratorFunctionDeclarator(false, false);
- break;
- }
-
- //
- // Rule 279: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( )
- //
- case 279: {
- action.consumeDirectDeclaratorFunctionDeclarator(true, false);
- break;
- }
-
- //
- // Rule 280: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_type_list )
- //
- case 280: {
- action.consumeDirectDeclaratorFunctionDeclarator(false, true);
- break;
- }
-
- //
- // Rule 281: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( <openscope-ast> parameter_type_list )
- //
- case 281: {
- action.consumeDirectDeclaratorFunctionDeclarator(true, true);
- break;
- }
-
- //
- // Rule 282: initializer ::= assignment_expression
- //
- case 282: {
- action.consumeInitializer();
- break;
- }
-
- //
- // Rule 283: initializer ::= initializer_list
- //
- case 283: {
- action.consumeInitializer();
- break;
- }
-
- //
- // Rule 284: initializer_list ::= start_initializer_list { <openscope-ast> initializer_seq comma_opt } end_initializer_list
- //
- case 284: {
- action.consumeInitializerList();
- break;
- }
-
- //
- // Rule 285: initializer_list ::= { <openscope-ast> }
- //
- case 285: {
- action.consumeInitializerList();
- break;
- }
-
- //
- // Rule 286: start_initializer_list ::= $Empty
- //
- case 286: {
- action.initializerListStart();
- break;
- }
-
- //
- // Rule 287: end_initializer_list ::= $Empty
- //
- case 287: {
- action.initializerListEnd();
- break;
- }
-
- //
- // Rule 292: designated_initializer ::= <openscope-ast> designation = initializer
- //
- case 292: {
- action.consumeInitializerDesignated();
- break;
- }
-
- //
- // Rule 296: designator_base ::= [ constant_expression ]
- //
- case 296: {
- action.consumeDesignatorArray();
- break;
- }
-
- //
- // Rule 297: designator_base ::= . identifier_token
- //
- case 297: {
- action.consumeDesignatorField();
- break;
- }
-
- //
- // Rule 298: designator ::= [ constant_expression ]
- //
- case 298: {
- action.consumeDesignatorArray();
- break;
- }
-
- //
- // Rule 299: designator ::= . identifier_token
- //
- case 299: {
- action.consumeDesignatorField();
- break;
- }
-
- //
- // Rule 300: translation_unit ::= external_declaration_list
- //
- case 300: {
- action.consumeTranslationUnit();
- break;
- }
-
- //
- // Rule 301: translation_unit ::= $Empty
- //
- case 301: {
- action.consumeTranslationUnit();
- break;
- }
-
- //
- // Rule 306: external_declaration ::= ;
- //
- case 306: {
- action.consumeDeclarationEmpty();
- break;
- }
-
- //
- // Rule 307: external_declaration ::= ERROR_TOKEN
- //
- case 307: {
- action.consumeDeclarationProblem();
- break;
- }
-
- //
- // Rule 311: function_definition ::= <openscope-ast> function_declarator function_body
- //
- case 311: {
- action.consumeFunctionDefinition(false);
- break;
- }
-
- //
- // Rule 312: function_definition ::= declaration_specifiers <openscope-ast> knr_function_declarator <openscope-ast> declaration_list compound_statement
- //
- case 312: {
- action.consumeFunctionDefinitionKnR();
- break;
- }
-
- //
- // Rule 313: normal_function_definition ::= declaration_specifiers <openscope-ast> function_declarator function_body
- //
- case 313: {
- action.consumeFunctionDefinition(true);
- break;
- }
-
- //
- // Rule 314: function_body ::= { }
- //
- case 314: {
- action.consumeStatementCompoundStatement(false);
- break;
- }
-
- //
- // Rule 315: function_body ::= { <openscope-ast> block_item_list }
- //
- case 315: {
- action.consumeStatementCompoundStatement(true);
- break;
- }
-
- //
- // Rule 332: attribute_parameter ::= assignment_expression
- //
- case 332: {
- action.consumeIgnore();
- break;
- }
-
- //
- // Rule 343: extended_asm_declaration ::= asm volatile_opt ( extended_asm_param_seq ) ;
- //
- case 343: {
- gnuAction.consumeDeclarationASM();
- break;
- }
-
- //
- // Rule 354: unary_expression ::= __alignof__ unary_expression
- //
- case 354: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_alignOf);
- break;
- }
-
- //
- // Rule 355: unary_expression ::= __alignof__ ( type_id )
- //
- case 355: {
- action.consumeExpressionTypeId(IASTTypeIdExpression.op_alignof);
- break;
- }
-
- //
- // Rule 356: unary_expression ::= typeof unary_expression
- //
- case 356: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_typeof);
- break;
- }
-
- //
- // Rule 357: unary_expression ::= typeof ( type_id )
- //
- case 357: {
- action.consumeExpressionTypeId(IASTTypeIdExpression.op_typeof);
- break;
- }
-
- //
- // Rule 358: relational_expression ::= relational_expression >? shift_expression
- //
- case 358: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_max);
- break;
- }
-
- //
- // Rule 359: relational_expression ::= relational_expression <? shift_expression
- //
- case 359: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_min);
- break;
- }
-
- //
- // Rule 360: conditional_expression ::= logical_or_expression ? <empty> : assignment_expression
- //
- case 360: {
- action.consumeExpressionConditional();
- break;
- }
-
- //
- // Rule 361: primary_expression ::= ( compound_statement )
- //
- case 361: {
- gnuAction.consumeCompoundStatementExpression();
- break;
- }
-
- //
- // Rule 362: labeled_statement ::= case case_range_expression : statement
- //
- case 362: {
- action.consumeStatementCase();
- break;
- }
-
- //
- // Rule 363: case_range_expression ::= constant_expression ... constant_expression
- //
- case 363: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_assign);
- break;
- }
-
- //
- // Rule 367: typeof_type_specifier ::= typeof unary_expression
- //
- case 367: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_typeof);
- break;
- }
-
- //
- // Rule 368: typeof_type_specifier ::= typeof ( type_id )
- //
- case 368: {
- action.consumeExpressionTypeId(IASTTypeIdExpression.op_typeof);
- break;
- }
-
- //
- // Rule 369: declaration_specifiers ::= <openscope-ast> typeof_declaration_specifiers
- //
- case 369: {
- action.consumeDeclarationSpecifiersTypeof();
- break;
- }
-
- //
- // Rule 385: field_name_designator ::= identifier_token :
- //
- case 385: {
- action.consumeDesignatorFieldGCC();
- break;
- }
-
- //
- // Rule 386: array_range_designator ::= [ constant_expression ... constant_expression ]
- //
- case 386: {
- action.consumeDesignatorArrayRange();
- break;
- }
-
- //
- // Rule 387: designated_initializer ::= <openscope-ast> field_name_designator initializer
- //
- case 387: {
- action.consumeInitializerDesignated();
- break;
- }
-
- //
- // Rule 388: block_item ::= normal_function_definition
- //
- case 388: {
- action.consumeStatementDeclaration();
- break;
- }
-
- //
- // Rule 392: type_id ::= vector_type
- //
- case 392: {
- action.consumeTypeId(false);
- break;
- }
-
- //
- // Rule 393: type_id ::= vector_type abstract_declarator
- //
- case 393: {
- action.consumeTypeId(true);
- break;
- }
-
- //
- // Rule 394: vector_declaration ::= vector_type <openscope-ast> init_declarator_list ;
- //
- case 394: {
- action.consumeDeclarationSimple(true);
- break;
- }
-
- //
- // Rule 395: vector_type ::= <openscope-ast> no_type_declaration_specifiers_opt vector vector_type_specifier all_specifier_qualifier_list_opt
- //
- case 395: {
- action.consumeVectorTypeSpecifier();
- break;
- }
-
- //
- // Rule 396: vector_type_specifier ::= vector_type_specifier_token
- //
- case 396: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 418: declarator_id_name ::= pixel
- //
- case 418: {
- action.consumeIdentifierName();
- break;
- }
-
- //
- // Rule 419: declarator_id_name ::= vector
- //
- case 419: {
- action.consumeIdentifierName();
- break;
- }
-
- //
- // Rule 420: declarator_id_name ::= bool
- //
- case 420: {
- action.consumeIdentifierName();
- break;
- }
-
- default:
- break;
- }
- return;
- }
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/c/XlcCParserprs.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/c/XlcCParserprs.java
deleted file mode 100644
index 9b788d3c33a..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/c/XlcCParserprs.java
+++ /dev/null
@@ -1,1146 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2010 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.lrparser.xlc.c;
-
-public class XlcCParserprs implements lpg.lpgjavaruntime.ParseTable, XlcCParsersym {
-
- public interface IsKeyword {
- public final static byte isKeyword[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static byte isKeyword[] = IsKeyword.isKeyword;
-
- public final boolean isKeyword(int index) {
- return isKeyword[index] != 0;
- }
-
- public interface BaseCheck {
- public final static short baseCheck[] = { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 4,
- 4, 3, 3, 2, 2, 4, 1, 0, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 1, 4, 1, 3, 3, 3, 1, 3, 3, 1, 3, 3, 1, 3, 3,
- 3, 3, 1, 3, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 5, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 2, 1, 0, 1,
- 3, 1, 1, 1, 1, 1, 1, 1, 1, 3, 4, 3, 2, 4, 1, 2, 1, 1, 1, 2, 5, 7, 5, 1, 0, 7, 2, 5, 9, 8, 3, 2, 2, 2, 3,
- 2, 4, 2, 2, 2, 2, 2, 1, 1, 1, 1, 2, 1, 2, 2, 2, 1, 2, 2, 1, 2, 2, 1, 2, 2, 1, 2, 2, 1, 3, 1, 3, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 8, 0, 0, 1, 1, 3, 3, 3, 0, 1, 0, 1, 2, 4, 2, 1,
- 1, 1, 3, 1, 1, 2, 3, 7, 8, 0, 1, 0, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 3, 1, 2, 2, 1, 5, 3,
- 1, 3, 5, 1, 3, 1, 3, 2, 4, 3, 5, 4, 6, 6, 3, 5, 1, 3, 4, 5, 6, 0, 1, 2, 1, 3, 1, 1, 3, 2, 1, 1, 1, 1, 2,
- 1, 2, 3, 1, 1, 1, 3, 1, 2, 2, 2, 3, 4, 5, 1, 1, 7, 3, 0, 0, 1, 1, 3, 3, 4, 1, 1, 2, 3, 2, 3, 2, 1, 0, 1,
- 2, 1, 1, 1, 1, 1, 2, 1, 3, 6, 4, 2, 4, 1, 1, 1, 1, 2, 6, 3, 1, 3, 1, 4, 0, 1, 1, 1, 3, 1, 0, 4, 3, 1, 2,
- 1, 3, 4, 4, 4, 6, 1, 0, 1, 3, 1, 3, 0, 1, 4, 5, 2, 4, 2, 4, 3, 3, 5, 3, 4, 3, 1, 2, 2, 2, 4, 2, 1, 1, 2,
- 2, 3, 2, 2, 3, 1, 1, 1, 1, 1, 1, 1, 2, 5, 3, 1, 1, 1, 1, 1, 2, 4, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 2, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, -115, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 0,
- 0, 0, 0, 0, 0, -66, -94, 0, 0, -54, 0, 0, 0, -33, 0, -252, 0, 0, 0, 0, 0, -89, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -35, 0, 0, 0, 0, 0, 0, -49, 0, 0, 0, -87, -12, 0, 0, 0, 0, 0, 0, 0, -70, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -128, -11, 0, 0, 0, 0, 0, 0, 0, 0, -14, -43, -6, 0, 0, -52, 0, -352, -266, 0, 0,
- 0, 0, 0, 0, -15, 0, 0, 0, 0, -3, 0, 0, 0, -16, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, -365, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -145, 0, 0, 0, 0, 0, -55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -236, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, -56, 0, -158, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -50, -4, 0, 0, 0, 0, 0, 0, 0, 0, -233, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -185, 0, -117, 0, -28, -232, 0, -29, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -309, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -39, 0, 0,
- 0, 0, 0, 0, -40, 0, 0, 0, 0, -30, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, -258, -173, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -359, 0, 0, 0, 0, 0, 0, 0, 0, -31, 0, -95, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -126, 0, 0, 0, 0, 0, 0, 0, 0, -5, -270, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -262, 0, 0, 0, -279, -116, 0, 0, 0, -118, 0, -361, 0, 0, 0, 0, 0, 0, 0, 0, -339, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -234, 0, 0, 0, 0, 0, 0, 0, 0, -36, -42, 0, 0, 0, 0, 0, 0, 0, -45, 0, 0, 0, 0, 0,
- 0, -122, 0, 0, -260, 0, 0, 0, -375, 0, 0, 0, 0, 0, 0, 0, 0, -327, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -46, 0, 0, 0, -86, 0, 0, 0, 0, 0, 0, 0, 0, -48, 0, 0, -324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -254, 0, -53, 0, 0, 0, 0, 0, 0, -93, 0, 0, -65, 0, 0, 0, 0, 0, -80, 0, 0, 0, 0, 0, 0, 0, 0,
- -44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -58, 0, 0, 0, 0, -177, 0, 0, -151, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -130, 0, -124, 0, 0, 0, 0, 0, 0, -59, 0, 0, 0, 0, 0, 0, -60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -261, 0,
- -97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -127, -119, 0, 0, 0, -155, 0, 0, 0, -63, 0, 0, 0, -79, 0, 0, 0, 0, 0,
- -271, 0, -18, -81, -99, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, -82, -163, 0, 0, 0, 0, 0, 0, 0, 0, -96,
- -323, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, -231, 0, 0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, -68, 0, -188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -196, -195, 0, -102, 0, 0, 0, 0, 0, 0, -189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110,
- -153, -272, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, -152, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -273, 0, -38, 0, 0, -283, 0, 0, 0, 0, 0, 0, 0, 0, 0, -123, 0, 0, 0, -217,
- 0, -200, 0, 0, 0, 0, 0, 0, -129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -144, -131, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -348, 0, 0, -132, -23, -275, -357, -146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -347, 0,
- -133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10, -202, 0, 0, 0, 0, 0, -134,
- -111, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, -34, 0, -328, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -218, 0, -135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, 0, 0, -229, 0, -112, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -287, 0, 0, -199, 0, 0, 0, -154, 0, 0, -334, -172, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -355, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, -374, 0, 0, 0, 0, 0, 0, 0, -136, 0, 0, 0, 0, 0, 0, -259, -137,
- 0, 0, 0, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, -161, -326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138,
- -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, -175, -240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -139, -206, 0, 0, 0,
- 0, 0, 0, 0, 0, -237, 0, 0, 0, 0, 0, 0, 0, 0, -166, 0, 0, 0, 0, 0, 0, -140, -207, 0, 0, 0, 0, 0, 0, 0, 0,
- -257, 0, 0, -241, 0, 0, 0, 0, 0, -168, 0, 0, 0, 0, 0, 0, -143, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -176, 0, 0, 0, 0, 0, 0, -147, -209, 0, 0, 0, 0, 0, 0, 0, 0, -265, 0, 0, -311, 0, 0, 0, 0,
- 0, -180, 0, 0, 0, 0, 0, 0, -148, -210, 0, 0, 0, 0, 0, 0, 0, 0, -335, 0, 0, -338, 0, 0, 0, 0, 0, -181, 0,
- 0, 0, 0, 0, 0, -156, -211, 0, 0, 0, 0, 0, 0, 0, 0, -157, 0, -362, 0, 0, 0, 0, 0, 0, -182, 0, 0, 0, 0, 0,
- 0, -159, -212, 0, 0, 0, 0, 0, 0, 0, 0, -354, 0, 0, -340, 0, 0, 0, 0, 0, -183, 0, 0, 0, 0, 0, 0, -160,
- -213, 0, 0, 0, 0, 0, 0, 0, 0, -184, 0, 0, -194, 0, 0, 0, 0, 0, -349, 0, 0, 0, 0, 0, 0, -269, 0, 0, 0,
- -61, 0, -358, 0, -162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -164, -280, 0, -167, 0, 0, 0, 0, 0, 0, -198, -367,
- 0, 0, 0, 0, 0, 0, 0, -169, 0, 0, 0, 0, 0, 0, -377, 0, 0, 0, -179, 0, 0, 0, 0, -190, 0, -230, 0, -191, 0,
- 0, 0, 0, 0, 0, 0, -381, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -285, 0, 0, 0, 0, 0, 0, 0, 0, -376, -197,
- -239, 0, 0, 0, 0, 0, 0, -235, 0, 0, 0, 0, 0, 0, -244, -286, 0, 0, 0, 0, 0, 0, 0, 0, -385, 0, -248, -249,
- 0, 0, 0, 0, 0, -263, 0, 0, 0, 0, 0, 0, -264, -317, 0, 0, 0, 0, 0, 0, 0, 0, -253, -120, 0, 0, 0, 0, 0, 0,
- 0, -281, 0, 0, 0, 0, 0, 0, -325, 0, 0, 0, 0, 0, 0, 0, 0, -289, -290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -291, -292, -336, 0, -293, 0, 0, 0, 0, 0, 0, -388, -294, -295, 0, 0, 0, 0, 0, 0, -255, 0, 0, 0, 0,
- 0, 0, -296, -337, 0, 0, 0, 0, 0, 0, 0, 0, -297, 0, 0, -298, 0, 0, 0, 0, 0, -299, 0, 0, 0, 0, 0, 0, -300,
- -350, 0, 0, 0, 0, 0, 0, 0, 0, -256, -243, 0, 0, 0, 0, 0, 0, 0, -301, 0, 0, 0, 0, 0, 0, -363, 0, 0, 0, 0,
- 0, 0, 0, 0, -302, -303, 0, -304, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -305, -306, -371, 0, -307, 0, 0, 0,
- 0, 0, 0, -277, -308, -313, 0, 0, 0, 0, 0, 0, -284, 0, 0, 0, 0, 0, 0, -378, 0, 0, 0, 0, 0, 0, 0, 0, -351,
- -360, 0, 0, 0, 0, 0, 0, 0, -312, 0, 0, 0, 0, 0, 0, -364, -369, -384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -251, 0, 0, 0, 0, 0, 0, 0, -314, 0, 0, 0, 0,
- -92, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, -315, 0, -320, 0, 0, 0, 0, 0, 0, 0, 0, 0, -330,
- -331, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0, 0, 0, 0, -245, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -333, 0, 0, 0, -9, 0, 0, -356, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -238, 0, 0,
- 0, 0, 0, 0, 0, -368, 0, 0, 0, 0, -13, -379, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -387, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -274, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -322, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -246, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -83, 0, 0, 0, -187, 0, 0, 0, 0, 0, 0, 0, 0, 0, -370, 0, 0, -7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -267, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -310, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -150, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -84, 0, 0, 0, -346, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -250, 0, 0, 0, -288, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -278, 0,
- 0, 0, 0, 0, -343, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -104, 0, 0, 0, 0, -316, 0, 0, -171, 0, 0, 0, 0, 0, 0, -318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -342, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -329, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -344, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -345, 0, 0, 0, 0, 0, 0, 0, -382, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -386, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -25, 0, 0, 0, -389, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -220, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -222, 0, 0, 0, 0, 0, 0, 0, 0,
- -276, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -19, 0, 0, 0, -332, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -22, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -149, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -223, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -224, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -225, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -226, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -227, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, -228, 0, 0,
- 0, 0, 0, 0, 0, 0, -242, 0, 0, -20, 0, 0, 0, 0, -105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -282, 0, 0, 0, 0, 0, -125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -41, 0, 0, 0, -47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0,
- 0, 0, -90, -170, 0, 0, 0, 0, -186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -215, 0, 0, 0, 0, 0, 0, 0, 0, 0, -268, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, 0, -319, -321, 0, 0, 0, -21, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -37, 0, 0, 0, 0, -85, 0, 0, 0, 0, 0, 0, 0, -353, 0, 0, 0,
- 0, 0, -372, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -341, -366, 0, 0, 0, 0, 0, 0, 0, 0, -373, 0, -380, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -383, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static short baseCheck[] = BaseCheck.baseCheck;
-
- @Override
- public final int baseCheck(int index) {
- return baseCheck[index];
- }
-
- public final static short rhs[] = baseCheck;
-
- @Override
- public final int rhs(int index) {
- return rhs[index];
- }
-
- public interface BaseAction {
- public final static char baseAction[] = { 127, 2, 128, 54, 54, 18, 18, 59, 59, 25, 25, 1, 1, 3, 3, 3, 3, 4, 4,
- 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 98, 98, 108, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 13, 13, 13, 13, 14,
- 14, 14, 15, 15, 15, 16, 16, 16, 16, 16, 17, 17, 17, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 28,
- 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 43, 33, 26, 129, 129, 109, 109, 64, 44, 44, 44, 44, 44, 44,
- 44, 45, 45, 45, 30, 30, 110, 110, 89, 89, 46, 46, 47, 47, 47, 82, 82, 48, 48, 48, 48, 48, 49, 49, 49,
- 49, 49, 61, 61, 29, 29, 29, 29, 29, 50, 50, 50, 73, 73, 91, 91, 91, 91, 92, 92, 92, 93, 93, 93, 94, 94,
- 94, 95, 95, 95, 90, 90, 83, 83, 84, 51, 53, 53, 53, 53, 53, 67, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 77, 74, 74, 130, 131, 78, 78, 75, 75, 75, 99, 111, 111, 112, 112, 100, 100, 100, 60, 132, 132,
- 113, 101, 101, 101, 76, 76, 133, 114, 114, 115, 115, 102, 102, 31, 32, 32, 32, 52, 56, 56, 37, 37, 37,
- 37, 34, 34, 35, 38, 38, 39, 36, 36, 103, 103, 40, 135, 135, 134, 134, 58, 58, 58, 58, 58, 58, 58, 58,
- 58, 116, 65, 65, 65, 65, 41, 96, 96, 86, 86, 86, 87, 87, 79, 79, 136, 136, 66, 66, 88, 88, 88, 69, 69,
- 69, 70, 71, 71, 71, 72, 72, 72, 72, 85, 85, 55, 55, 57, 138, 137, 137, 137, 137, 117, 139, 140, 140,
- 141, 141, 142, 142, 127, 127, 143, 143, 118, 118, 118, 118, 144, 144, 119, 119, 119, 80, 120, 120, 9, 9,
- 9, 27, 27, 10, 10, 145, 145, 121, 121, 121, 122, 122, 146, 146, 123, 123, 11, 11, 147, 147, 124, 124,
- 124, 124, 12, 62, 148, 148, 149, 149, 125, 125, 125, 104, 104, 104, 7, 7, 7, 7, 16, 16, 24, 4, 45, 150,
- 97, 97, 97, 81, 81, 29, 61, 50, 84, 84, 84, 113, 113, 113, 133, 130, 131, 41, 99, 141, 141, 151, 152,
- 117, 89, 68, 68, 68, 66, 66, 63, 42, 106, 107, 107, 107, 107, 107, 107, 107, 107, 107, 126, 126, 154,
- 154, 153, 153, 105, 105, 61, 1, 1, 1, 35, 35, 35, 359, 1770, 452, 17, 21, 18, 1054, 1247, 45, 371, 316,
- 317, 318, 1264, 1297, 1278, 1363, 1327, 334, 1447, 1439, 1504, 1478, 1530, 75, 1506, 790, 2619, 92,
- 1323, 2144, 136, 214, 2517, 20, 790, 17, 21, 18, 1054, 367, 2306, 20, 232, 17, 21, 18, 1054, 1247, 45,
- 138, 135, 137, 161, 1264, 1297, 1278, 1363, 1327, 668, 1447, 1439, 1504, 1478, 1530, 75, 483, 140, 167,
- 282, 1506, 626, 2661, 1339, 144, 147, 150, 153, 1062, 2625, 20, 364, 17, 21, 18, 1054, 43, 40, 232, 503,
- 689, 2231, 2470, 2889, 2904, 2918, 283, 2951, 1556, 396, 626, 1310, 180, 2796, 1696, 511, 846, 503,
- 3207, 1766, 371, 316, 317, 318, 610, 320, 316, 317, 318, 337, 255, 214, 335, 685, 2544, 20, 159, 17, 21,
- 18, 1054, 356, 136, 214, 750, 767, 225, 233, 255, 214, 725, 225, 230, 219, 718, 222, 224, 323, 1734,
- 1452, 180, 138, 135, 137, 161, 1560, 324, 1734, 371, 316, 317, 318, 2033, 1076, 320, 316, 317, 318, 140,
- 167, 1364, 1523, 2095, 396, 1339, 144, 147, 150, 153, 1062, 136, 214, 364, 828, 346, 1321, 816, 188,
- 1523, 1731, 1153, 311, 2231, 2470, 2889, 2904, 2918, 1636, 2951, 138, 135, 137, 161, 1341, 492, 1194,
- 511, 3427, 960, 1182, 38, 951, 2177, 111, 87, 322, 140, 167, 96, 1697, 313, 1153, 1339, 144, 147, 150,
- 153, 1062, 336, 285, 364, 1463, 1816, 95, 97, 98, 99, 100, 1584, 180, 2231, 2470, 2889, 2904, 2918, 88,
- 2951, 371, 316, 317, 318, 769, 1998, 1936, 511, 816, 31, 957, 2625, 20, 999, 17, 21, 18, 1054, 43, 45,
- 439, 314, 136, 214, 1264, 1297, 1278, 1363, 1327, 295, 1447, 1984, 2436, 20, 834, 17, 21, 18, 1054,
- 1247, 45, 138, 135, 137, 161, 1264, 1297, 1278, 1363, 1327, 521, 1447, 1439, 1504, 1478, 1530, 75, 406,
- 140, 167, 282, 28, 1002, 1556, 1712, 144, 147, 150, 153, 1062, 2625, 20, 364, 17, 21, 18, 1054, 43, 39,
- 1364, 1356, 1835, 2231, 2470, 2889, 2904, 2918, 283, 2951, 1556, 927, 20, 834, 17, 21, 18, 1054, 1247,
- 45, 1017, 1997, 1696, 668, 1264, 1297, 1278, 1363, 1327, 229, 1447, 1439, 1504, 1478, 1530, 75, 228, 25,
- 288, 282, 334, 2725, 20, 1401, 17, 21, 18, 1054, 1247, 45, 893, 1019, 1320, 659, 1264, 1297, 1278, 1363,
- 1327, 181, 1447, 1439, 1504, 1478, 1530, 75, 283, 1704, 1556, 1240, 289, 1506, 1182, 2893, 1102, 128,
- 816, 31, 2463, 20, 987, 17, 21, 18, 1054, 1247, 45, 1181, 2049, 279, 1621, 1264, 1297, 1278, 1363, 1327,
- 290, 1447, 1439, 1504, 1478, 1530, 75, 210, 2625, 20, 282, 17, 21, 18, 1054, 43, 45, 684, 48, 814, 1842,
- 1264, 1297, 1278, 1363, 1327, 684, 1447, 1439, 1504, 2001, 1076, 291, 1191, 261, 105, 1166, 283, 659,
- 1556, 2490, 20, 394, 17, 21, 18, 1054, 1247, 45, 503, 337, 129, 347, 1264, 1297, 1278, 1363, 1327, 343,
- 1447, 1439, 1504, 1478, 1530, 75, 198, 1217, 387, 282, 925, 617, 20, 510, 17, 21, 18, 1054, 1247, 45,
- 771, 255, 214, 1364, 1264, 1297, 1278, 1363, 1327, 24, 1447, 1439, 1504, 1478, 1530, 75, 283, 1446,
- 1556, 1041, 2825, 20, 1039, 17, 21, 18, 1054, 1247, 45, 217, 1731, 421, 1269, 1264, 1297, 1278, 1363,
- 1327, 1483, 1447, 1439, 1504, 1478, 1530, 75, 240, 292, 38, 332, 3268, 226, 2034, 555, 294, 111, 87,
- 876, 194, 1377, 96, 816, 187, 205, 825, 384, 702, 1419, 3323, 1, 1731, 421, 631, 1463, 109, 95, 97, 98,
- 99, 100, 1010, 20, 1131, 17, 21, 18, 1054, 43, 36, 1394, 1129, 110, 370, 414, 111, 87, 816, 189, 1377,
- 96, 725, 225, 230, 219, 718, 222, 224, 1356, 1835, 1269, 388, 631, 1463, 109, 95, 97, 98, 99, 100, 107,
- 788, 1615, 264, 1153, 275, 816, 1543, 342, 315, 182, 110, 370, 414, 919, 247, 268, 1162, 1135, 273,
- 1969, 990, 590, 1060, 38, 330, 2627, 38, 90, 748, 388, 319, 316, 317, 318, 265, 1095, 2625, 20, 108, 17,
- 21, 18, 1054, 43, 45, 1119, 1704, 2113, 576, 1264, 1297, 1278, 1363, 1327, 242, 1447, 1439, 1504, 1478,
- 1530, 94, 288, 1731, 421, 2625, 20, 349, 17, 21, 18, 1054, 43, 45, 38, 28, 591, 1556, 1264, 1297, 1278,
- 1363, 1327, 262, 1447, 1439, 1982, 111, 87, 1348, 210, 1377, 96, 2571, 20, 1080, 17, 21, 18, 1054, 354,
- 1829, 1087, 1842, 631, 1463, 109, 95, 97, 98, 99, 100, 788, 2625, 20, 912, 17, 21, 18, 1054, 1247, 45,
- 587, 110, 370, 414, 1264, 1297, 1278, 1363, 1327, 1699, 1447, 1439, 1504, 1478, 1530, 75, 1269, 1191,
- 1988, 92, 388, 2598, 20, 1670, 17, 21, 18, 1054, 41, 107, 450, 276, 721, 20, 361, 17, 21, 18, 1054,
- 1247, 45, 893, 125, 1153, 22, 1264, 1297, 1278, 1363, 1327, 1224, 1447, 1439, 1504, 1478, 1530, 75,
- 1989, 277, 446, 1398, 3207, 145, 1731, 421, 1828, 126, 88, 320, 316, 317, 318, 691, 28, 1490, 1556,
- 2625, 20, 788, 17, 21, 18, 1054, 43, 45, 507, 241, 111, 87, 1264, 1877, 1377, 96, 725, 225, 230, 219,
- 718, 222, 224, 1766, 1400, 1684, 570, 631, 1463, 109, 95, 97, 98, 99, 100, 28, 1364, 1556, 3413, 47,
- 1048, 1997, 805, 893, 106, 2218, 110, 370, 414, 319, 316, 317, 318, 1282, 312, 244, 2825, 20, 635, 17,
- 21, 18, 1054, 1247, 45, 388, 631, 1716, 128, 1264, 1297, 1278, 1363, 1327, 108, 1447, 1439, 1504, 1478,
- 1530, 75, 446, 586, 3211, 332, 309, 370, 414, 405, 1269, 319, 316, 317, 318, 1594, 182, 28, 28, 1556,
- 1556, 1381, 180, 1187, 320, 316, 317, 318, 674, 1221, 371, 316, 317, 318, 256, 214, 725, 225, 922, 219,
- 718, 222, 909, 2625, 20, 1387, 17, 21, 18, 1054, 43, 45, 136, 214, 256, 214, 1264, 1878, 3408, 893,
- 1017, 2082, 2625, 20, 1269, 17, 21, 18, 1054, 43, 45, 139, 135, 137, 161, 1264, 1297, 1278, 1363, 1327,
- 788, 1965, 19, 503, 128, 156, 861, 1191, 141, 167, 788, 38, 869, 1028, 1010, 145, 148, 151, 154, 1062,
- 331, 1257, 365, 2625, 20, 521, 17, 21, 18, 1054, 1247, 45, 124, 50, 255, 214, 1264, 1297, 1278, 1363,
- 1327, 830, 1447, 1439, 1504, 1478, 1530, 75, 893, 1239, 2276, 86, 256, 214, 243, 2625, 20, 969, 17, 21,
- 18, 1054, 1247, 45, 245, 1191, 816, 1835, 1264, 1297, 1278, 1363, 1327, 196, 1447, 1439, 1504, 1478,
- 1530, 75, 1176, 2625, 20, 85, 17, 21, 18, 1054, 1247, 45, 112, 555, 1191, 528, 1264, 1297, 1278, 1363,
- 1327, 1321, 1447, 1439, 1504, 1478, 1530, 75, 419, 2625, 20, 84, 17, 21, 18, 1054, 1247, 45, 38, 127,
- 700, 1791, 1264, 1297, 1278, 1363, 1327, 797, 1447, 1439, 1504, 1478, 1530, 75, 554, 2625, 20, 83, 17,
- 21, 18, 1054, 1247, 45, 38, 1852, 3347, 1191, 1264, 1297, 1278, 1363, 1327, 482, 1447, 1439, 1504, 1478,
- 1530, 75, 1745, 2625, 20, 82, 17, 21, 18, 1054, 1247, 45, 211, 339, 123, 284, 1264, 1297, 1278, 1363,
- 1327, 1269, 1447, 1439, 1504, 1478, 1530, 75, 1289, 2625, 20, 81, 17, 21, 18, 1054, 1247, 45, 1125, 231,
- 892, 1191, 1264, 1297, 1278, 1363, 1327, 1269, 1447, 1439, 1504, 1478, 1530, 75, 1927, 2625, 20, 80, 17,
- 21, 18, 1054, 1247, 45, 788, 1060, 3441, 1786, 1264, 1297, 1278, 1363, 1327, 1269, 1447, 1439, 1504,
- 1478, 1530, 75, 1219, 2625, 20, 79, 17, 21, 18, 1054, 1247, 45, 1403, 1180, 816, 297, 1264, 1297, 1278,
- 1363, 1327, 1269, 1447, 1439, 1504, 1478, 1530, 75, 1598, 2625, 20, 78, 17, 21, 18, 1054, 1247, 45,
- 1364, 1219, 246, 1191, 1264, 1297, 1278, 1363, 1327, 1269, 1447, 1439, 1504, 1478, 1530, 75, 1663, 2625,
- 20, 77, 17, 21, 18, 1054, 1247, 45, 1269, 2265, 3442, 1269, 1264, 1297, 1278, 1363, 1327, 2685, 1447,
- 1439, 1504, 1478, 1530, 75, 1584, 180, 1280, 76, 1107, 23, 1364, 1718, 1357, 371, 316, 317, 318, 320,
- 316, 317, 318, 206, 195, 1453, 2625, 20, 1687, 17, 21, 18, 1054, 1247, 45, 1269, 1191, 136, 214, 1264,
- 1297, 1278, 1363, 1327, 1928, 1447, 1439, 1504, 1478, 1530, 75, 816, 299, 352, 93, 1391, 139, 135, 137,
- 161, 1505, 3453, 2625, 20, 2333, 17, 21, 18, 1054, 43, 45, 1431, 1191, 141, 167, 1264, 1297, 1278, 1363,
- 1981, 145, 148, 151, 154, 1062, 2625, 20, 365, 17, 21, 18, 1054, 1247, 45, 1330, 1290, 73, 118, 1264,
- 1297, 1278, 1363, 1327, 1759, 1447, 1439, 1504, 1478, 1530, 75, 1710, 2625, 20, 1408, 17, 21, 18, 1054,
- 1247, 45, 788, 235, 1819, 456, 1264, 1297, 1278, 1363, 1327, 752, 1447, 1439, 1504, 1478, 1530, 75,
- 1725, 2625, 20, 1618, 17, 21, 18, 1054, 43, 45, 1269, 38, 296, 1153, 1264, 1297, 1278, 1363, 1327, 2398,
- 1447, 1439, 1504, 1478, 1530, 94, 2625, 20, 321, 17, 21, 18, 1054, 43, 45, 1458, 1490, 88, 298, 1264,
- 1297, 1278, 1363, 1327, 1152, 1447, 1439, 1504, 1478, 1530, 94, 1807, 1865, 2625, 20, 1395, 17, 21, 18,
- 1054, 1247, 45, 788, 1552, 191, 363, 1264, 1297, 1278, 1363, 1327, 1269, 1447, 1439, 1504, 1478, 1530,
- 75, 845, 2625, 20, 360, 17, 21, 18, 1054, 1247, 45, 923, 341, 213, 1140, 1264, 1297, 1278, 1363, 1327,
- 1329, 1447, 1439, 1504, 1478, 1530, 75, 1368, 2625, 20, 74, 17, 21, 18, 1054, 43, 45, 1269, 38, 386,
- 1153, 1264, 1297, 1278, 1363, 1327, 1347, 1447, 1439, 1504, 1478, 1530, 94, 2625, 20, 340, 17, 21, 18,
- 1054, 43, 45, 1556, 1498, 88, 1104, 1264, 1297, 1278, 1363, 1327, 2042, 1447, 1439, 1504, 1478, 1530,
- 94, 1943, 1944, 2625, 20, 1294, 17, 21, 18, 1054, 43, 45, 1269, 1570, 1723, 203, 1264, 1297, 1278, 1363,
- 1327, 1269, 1447, 1439, 1504, 1478, 1530, 94, 2625, 20, 274, 17, 21, 18, 1054, 43, 45, 1999, 1874, 353,
- 1800, 1264, 1297, 1278, 1363, 1327, 1269, 1447, 1439, 1504, 1478, 1530, 94, 2000, 1824, 2625, 20, 3781,
- 17, 21, 18, 1054, 43, 45, 2674, 3781, 3781, 204, 1264, 1297, 1278, 1363, 1327, 1597, 1447, 1439, 1504,
- 1478, 1530, 94, 3781, 3781, 320, 316, 317, 318, 446, 3781, 3346, 3781, 3781, 3781, 1826, 3781, 1269,
- 319, 316, 317, 318, 2679, 2652, 20, 3781, 17, 21, 18, 1054, 34, 371, 316, 317, 318, 2707, 1221, 874,
- 1269, 421, 1820, 3781, 1904, 725, 225, 922, 219, 718, 222, 224, 408, 1269, 3781, 136, 214, 3781, 2734,
- 3781, 326, 319, 316, 317, 318, 88, 3781, 3408, 198, 1178, 3781, 280, 1382, 1692, 138, 135, 137, 161, 38,
- 2069, 1153, 2838, 319, 316, 317, 318, 725, 225, 230, 220, 718, 222, 224, 1155, 156, 861, 3781, 2964,
- 3781, 3224, 3269, 869, 1269, 3781, 88, 1328, 446, 3781, 3207, 1269, 275, 2090, 3781, 3781, 521, 319,
- 316, 317, 318, 3781, 1281, 270, 1162, 1135, 273, 1744, 3781, 281, 3781, 3781, 406, 396, 3781, 1221, 319,
- 316, 317, 318, 3781, 3781, 725, 225, 230, 219, 718, 222, 224, 446, 3781, 3207, 408, 3781, 2069, 3781,
- 3781, 1269, 319, 316, 317, 318, 2238, 1269, 3408, 3781, 3781, 3781, 1489, 3781, 3781, 371, 316, 317,
- 318, 1778, 1221, 1269, 3781, 395, 2410, 2773, 3781, 725, 225, 230, 219, 718, 222, 224, 3781, 156, 861,
- 136, 214, 2800, 2371, 20, 860, 17, 21, 18, 1054, 43, 44, 3408, 1750, 846, 3781, 3207, 3781, 3781, 143,
- 135, 137, 161, 319, 316, 317, 318, 2625, 20, 3781, 17, 21, 18, 1054, 43, 38, 142, 167, 3781, 156, 861,
- 527, 38, 3781, 1153, 3781, 869, 3781, 725, 225, 230, 219, 718, 222, 224, 446, 3781, 3207, 28, 2867,
- 1556, 2579, 3781, 3781, 319, 316, 317, 318, 88, 906, 2033, 3207, 508, 3781, 522, 2111, 3781, 278, 319,
- 316, 317, 318, 1221, 3781, 1142, 3781, 2684, 3781, 3781, 725, 225, 230, 219, 718, 222, 224, 527, 306,
- 3781, 3781, 3781, 797, 278, 725, 225, 230, 219, 718, 222, 224, 2244, 3408, 1153, 3781, 631, 3421, 3781,
- 275, 725, 225, 230, 219, 718, 222, 224, 2033, 3781, 199, 268, 1162, 1135, 273, 3781, 305, 370, 414, 88,
- 3781, 157, 861, 954, 3781, 275, 116, 3781, 3781, 1705, 2008, 2752, 3781, 3781, 3781, 310, 268, 1162,
- 1135, 273, 371, 316, 317, 318, 2625, 20, 3781, 17, 21, 18, 1054, 43, 45, 3421, 3781, 2008, 3781, 1893,
- 709, 3781, 3781, 3781, 136, 214, 3781, 200, 3781, 319, 316, 317, 318, 3781, 3781, 303, 304, 1673, 3781,
- 3781, 709, 3781, 3781, 138, 135, 137, 161, 2069, 3781, 319, 316, 317, 318, 2852, 725, 225, 230, 220,
- 718, 222, 224, 1155, 371, 316, 317, 318, 2964, 2069, 3781, 3781, 3781, 3781, 3781, 3781, 725, 225, 1608,
- 220, 718, 222, 1582, 1155, 1600, 3781, 136, 214, 709, 430, 3781, 522, 3781, 320, 316, 317, 318, 319,
- 316, 317, 318, 406, 396, 3781, 3781, 146, 135, 137, 161, 3781, 1655, 1731, 1153, 3781, 306, 2069, 3781,
- 3781, 797, 3781, 3781, 409, 725, 225, 1608, 220, 718, 222, 224, 1155, 3781, 631, 3781, 3781, 3781, 111,
- 87, 1716, 1731, 1153, 96, 1010, 20, 3781, 17, 21, 18, 1054, 43, 36, 305, 370, 414, 1463, 104, 95, 97,
- 98, 99, 100, 3781, 3781, 111, 87, 1501, 3781, 659, 96, 3781, 310, 38, 3781, 1153, 319, 316, 317, 318,
- 3781, 3781, 3781, 1463, 102, 95, 97, 98, 99, 100, 3781, 3781, 3781, 709, 2069, 3781, 987, 3781, 248, 88,
- 3781, 3781, 319, 316, 317, 318, 2226, 444, 1050, 659, 302, 304, 1777, 1731, 1153, 1094, 3781, 659, 3781,
- 423, 2069, 3781, 1838, 1731, 1153, 3781, 3781, 767, 225, 234, 3781, 3781, 2876, 3781, 1155, 2334, 987,
- 111, 87, 3781, 3781, 3781, 96, 3781, 198, 3781, 260, 111, 87, 502, 3781, 659, 96, 2124, 1761, 1463, 362,
- 95, 97, 98, 99, 100, 1899, 1731, 1153, 1463, 103, 95, 97, 98, 99, 100, 1555, 3781, 659, 1446, 3781,
- 3781, 987, 3781, 3781, 319, 316, 317, 318, 3781, 260, 111, 87, 3781, 3781, 3781, 96, 1575, 1761, 1960,
- 1731, 1153, 3781, 2069, 3781, 987, 3781, 3781, 3781, 1463, 120, 95, 97, 98, 99, 100, 3781, 1050, 3781,
- 193, 3781, 3781, 3781, 3781, 111, 87, 2021, 1731, 1153, 96, 747, 879, 260, 3781, 2082, 1731, 1153, 3781,
- 3781, 1575, 1761, 2123, 1463, 115, 95, 97, 98, 99, 100, 3781, 3781, 111, 87, 3781, 3781, 260, 96, 3781,
- 3781, 111, 87, 3781, 2124, 1761, 96, 2143, 1731, 1153, 3781, 1463, 2050, 95, 97, 98, 99, 100, 3781,
- 1463, 114, 95, 97, 98, 99, 100, 3781, 3781, 3781, 1809, 1324, 3781, 111, 87, 2204, 1731, 1153, 96, 3781,
- 319, 316, 317, 318, 3781, 3781, 3781, 3781, 3781, 3781, 3781, 1463, 122, 95, 97, 98, 99, 100, 2069,
- 3781, 111, 87, 3781, 2625, 20, 96, 17, 21, 18, 1054, 43, 45, 1050, 2696, 3781, 3274, 1894, 3781, 1463,
- 121, 95, 97, 98, 99, 100, 2625, 20, 3781, 17, 21, 18, 1054, 43, 45, 3781, 3781, 2605, 3781, 1264, 1297,
- 1278, 1897, 2625, 20, 3781, 17, 21, 18, 1054, 43, 45, 1251, 3781, 3781, 3781, 1264, 1297, 1278, 1905,
- 3781, 319, 316, 317, 318, 2862, 3781, 3781, 3781, 444, 3781, 659, 275, 3781, 371, 316, 317, 318, 3781,
- 2069, 2893, 3781, 3781, 268, 1162, 1135, 273, 3781, 3781, 371, 316, 317, 318, 1155, 2903, 3781, 136,
- 214, 987, 3781, 3781, 3781, 393, 371, 316, 317, 318, 3781, 3781, 3781, 275, 136, 214, 3781, 3781, 149,
- 135, 137, 161, 3781, 3781, 270, 1162, 1135, 273, 136, 214, 2934, 3781, 3781, 152, 135, 137, 161, 3781,
- 3781, 371, 316, 317, 318, 2944, 3781, 3781, 3781, 155, 135, 137, 161, 260, 371, 316, 317, 318, 3781,
- 3781, 2180, 1761, 3781, 136, 214, 2625, 20, 3781, 17, 21, 18, 1054, 43, 45, 3781, 3781, 136, 214, 1264,
- 1297, 1906, 3781, 366, 135, 137, 161, 2625, 20, 3781, 17, 21, 18, 1054, 43, 45, 139, 135, 137, 161,
- 1264, 1297, 1920, 2625, 20, 3781, 17, 21, 18, 1054, 43, 45, 3781, 3781, 3781, 3781, 1264, 1297, 1930,
- 2625, 20, 3781, 17, 21, 18, 1054, 43, 45, 3781, 3781, 3781, 3781, 1264, 1297, 1933, 2625, 20, 3781, 17,
- 21, 18, 1054, 43, 45, 476, 3781, 3207, 3781, 1264, 1297, 1939, 2625, 20, 3781, 17, 21, 18, 1054, 43, 45,
- 890, 3781, 421, 557, 1264, 1297, 1946, 3781, 874, 3781, 421, 3781, 319, 316, 317, 318, 3781, 3781, 725,
- 225, 230, 219, 718, 222, 224, 874, 88, 421, 3781, 1282, 1333, 3781, 3781, 116, 88, 3781, 3781, 198,
- 1178, 3781, 954, 1382, 631, 3781, 3781, 3781, 874, 3781, 421, 3781, 2838, 88, 3781, 3781, 198, 1178,
- 3781, 874, 1382, 421, 3781, 2372, 370, 414, 3781, 3781, 3781, 2838, 3224, 3781, 3781, 874, 88, 421,
- 1601, 198, 1178, 3781, 3781, 1382, 3781, 3781, 1595, 88, 3781, 3224, 198, 1178, 2838, 3781, 1382, 1627,
- 874, 3781, 421, 3781, 3781, 88, 1748, 2838, 198, 1178, 607, 3781, 1382, 3781, 3224, 320, 316, 317, 318,
- 3781, 1653, 2838, 3781, 3781, 3781, 3224, 88, 3781, 3781, 198, 1178, 1679, 3781, 1382, 3781, 3781, 3781,
- 1324, 3781, 3224, 3781, 1324, 2838, 3781, 3781, 1696, 319, 316, 317, 318, 319, 316, 317, 318, 2769,
- 3781, 3274, 3781, 3781, 3781, 3224, 3781, 3781, 3781, 2069, 3781, 2173, 3781, 2069, 2625, 20, 3781, 17,
- 21, 18, 1054, 43, 37, 1050, 3781, 2625, 20, 1050, 17, 21, 18, 1054, 43, 36, 2625, 20, 3781, 17, 21, 18,
- 1054, 43, 35, 1255, 1804, 570, 3781, 2437, 3781, 1324, 3781, 2457, 3781, 320, 316, 317, 318, 275, 319,
- 316, 317, 318, 3781, 3781, 3781, 3781, 3781, 3781, 268, 1162, 1135, 273, 1282, 3781, 2625, 20, 2069, 17,
- 21, 18, 1054, 43, 48, 3781, 3781, 631, 3781, 267, 2625, 20, 1050, 17, 21, 18, 1054, 43, 47, 3781, 1324,
- 3781, 3781, 3781, 3781, 3781, 308, 370, 414, 319, 316, 317, 318, 3781, 2625, 20, 2876, 17, 21, 18, 1054,
- 43, 46, 1324, 1238, 3781, 659, 2069, 1038, 3781, 3781, 3781, 319, 316, 317, 318, 3781, 319, 316, 317,
- 318, 1050, 2652, 20, 3781, 17, 21, 18, 1054, 33, 2069, 1744, 3781, 198, 3781, 1333, 3781, 3781, 3781,
- 3781, 319, 316, 317, 318, 1050, 2123, 2798, 20, 3781, 17, 21, 18, 1054, 1861, 3781, 3781, 3781, 3781,
- 2069, 3781, 3781, 3781, 3781, 3781, 1446, 1550, 3781, 3781, 2503, 1263, 1682, 3781, 1592, 3781, 319,
- 316, 317, 318, 1814, 319, 316, 317, 318, 3781, 1870, 3781, 3781, 319, 316, 317, 318, 3781, 2499, 319,
- 316, 317, 318, 3176, 2244, 2244, 1153, 1153, 3781, 3781, 193, 3451, 3781, 982, 1873, 3781, 2244, 3471,
- 1153, 3781, 3781, 1275, 879, 320, 316, 317, 318, 3781, 3781, 3781, 88, 88, 3781, 3781, 1926, 3781, 3781,
- 116, 116, 3781, 3781, 3781, 88, 320, 316, 317, 318, 3781, 3781, 116, 3781, 3781, 3781, 3781, 3781, 3781,
- 3781, 3781, 3781, 3781, 3781, 3781, 3781, 3781, 3781, 3781, 3781, 3781, 3781, 3781, 3781, 3781, 3781,
- 3781, 3781, 3781, 3781, 3781, 3781, 3781, 3781, 3781, 3781, 3781, 3781, 3781, 1742, 2232, 3781, 3781,
- 3781, 3781, 3781, 3781, 3781, 3781, 3781, 3781, 2246, 3781, 0, 1, 540, 0, 1, 520, 0, 1, 535, 0, 1, 544,
- 0, 678, 413, 0, 520, 130, 0, 535, 130, 0, 544, 130, 0, 520, 131, 0, 535, 131, 0, 544, 131, 0, 520, 132,
- 0, 535, 132, 0, 544, 132, 0, 544, 186, 0, 535, 186, 0, 520, 186, 0, 186, 190, 0, 544, 185, 0, 535, 185,
- 0, 520, 185, 0, 185, 190, 0, 520, 133, 0, 535, 133, 0, 544, 133, 0, 520, 134, 0, 535, 134, 0, 544, 134,
- 0, 417, 420, 0, 416, 419, 0, 415, 418, 0, 11, 227, 0, 520, 369, 0, 535, 369, 0, 544, 369, 0, 4197, 412,
- 0, 224, 236, 0, 3789, 1, 0, 544, 381, 0, 535, 381, 0, 520, 381, 0, 1042, 32, 0, 1853, 32, 0, 520, 411,
- 0, 535, 411, 0, 544, 411, 0, 4180, 411, 0, 4178, 411, 0, 544, 254, 0, 535, 254, 0, 520, 254, 0, 4197,
- 413, 0, 1, 4019, 0, 224, 237, 0, 520, 407, 0, 535, 407, 0, 544, 407, 0, 3999, 407, 0, 3998, 407, 0,
- 3997, 407, 0, 3996, 407, 0, 3947, 407, 0, 3946, 407, 0, 3945, 407, 0, 3944, 407, 0, 3943, 407, 0, 520,
- 410, 0, 535, 410, 0, 544, 410, 0, 4180, 410, 0, 4178, 410, 0, 180, 20, 0, 8, 10, 0, 2010, 119, 0, 1,
- 4201, 0, 1, 4200, 0, 1, 4199, 0, 1, 4008, 0, 367, 356, 0, 368, 357, 0, 113, 2742, 0 };
- }
-
- public final static char baseAction[] = BaseAction.baseAction;
-
- @Override
- public final int baseAction(int index) {
- return baseAction[index];
- }
-
- public final static char lhs[] = baseAction;
-
- @Override
- public final int lhs(int index) {
- return lhs[index];
- }
-
- public interface TermCheck {
- public final static byte termCheck[] = { 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 0, 38, 39, 40, 41, 42, 43, 44,
- 45, 0, 0, 48, 0, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
- 28, 29, 30, 31, 32, 33, 34, 35, 36, 0, 38, 39, 40, 41, 42, 43, 44, 45, 72, 73, 48, 74, 50, 51, 52, 53,
- 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
- 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
- 36, 0, 38, 39, 40, 41, 42, 43, 44, 45, 0, 10, 48, 0, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
- 63, 64, 65, 66, 67, 68, 69, 70, 71, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 0, 38, 39, 40, 41, 42, 43, 44,
- 45, 72, 73, 48, 0, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
- 28, 29, 30, 31, 32, 33, 34, 35, 36, 0, 38, 39, 40, 41, 42, 43, 44, 45, 0, 1, 48, 0, 50, 51, 52, 53, 54,
- 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 0, 1, 2, 3, 4, 5, 28, 7, 8, 9, 10, 11,
- 12, 13, 14, 15, 16, 17, 0, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 0, 32, 33, 34, 35, 36, 0, 1,
- 39, 40, 41, 42, 43, 44, 45, 0, 0, 1, 0, 1, 2, 3, 4, 5, 55, 7, 8, 9, 10, 0, 61, 62, 63, 64, 65, 66, 67,
- 68, 69, 70, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 37, 0, 37, 0, 1, 2, 3, 4, 5, 0, 7, 8, 9, 0, 27,
- 28, 29, 30, 31, 32, 33, 34, 35, 36, 0, 38, 39, 40, 41, 42, 43, 44, 45, 0, 1, 2, 3, 4, 5, 0, 0, 2, 55, 3,
- 4, 6, 84, 85, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 19, 0, 0, 2, 49, 87, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8,
- 9, 10, 11, 12, 0, 39, 40, 41, 42, 43, 44, 45, 47, 27, 28, 29, 89, 104, 27, 28, 29, 30, 31, 32, 33, 34,
- 35, 36, 89, 38, 39, 40, 41, 42, 43, 44, 45, 0, 0, 104, 0, 37, 2, 3, 4, 5, 55, 7, 8, 9, 0, 11, 61, 62,
- 63, 64, 65, 66, 67, 68, 69, 70, 0, 1, 74, 27, 28, 29, 6, 0, 0, 1, 10, 0, 89, 13, 14, 15, 16, 17, 7, 8,
- 9, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 0, 1, 104, 27, 28, 29, 37, 0, 1, 2, 3, 4, 5, 6, 37, 46, 0,
- 10, 11, 12, 13, 14, 15, 16, 17, 0, 19, 20, 21, 22, 23, 24, 25, 26, 18, 91, 92, 30, 13, 14, 71, 72, 73,
- 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 0, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
- 100, 101, 102, 0, 1, 0, 0, 1, 19, 6, 0, 6, 0, 10, 2, 5, 13, 14, 15, 16, 17, 0, 10, 0, 1, 2, 3, 4, 5, 6,
- 0, 1, 2, 3, 4, 5, 31, 7, 8, 9, 37, 103, 0, 1, 2, 3, 4, 5, 6, 46, 0, 46, 10, 11, 12, 13, 14, 15, 16, 17,
- 37, 19, 20, 21, 22, 23, 24, 25, 26, 46, 47, 0, 30, 0, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
- 83, 84, 85, 86, 87, 88, 0, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 0, 1, 37, 0, 18, 0, 6,
- 2, 0, 6, 10, 0, 0, 13, 14, 15, 16, 17, 6, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0, 27, 2, 3, 4, 5, 37,
- 18, 103, 75, 74, 11, 0, 1, 0, 46, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 46, 47, 0, 0, 1, 2, 3, 4,
- 5, 47, 7, 8, 9, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 0, 90, 91, 92,
- 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 0, 1, 0, 103, 18, 0, 6, 49, 6, 7, 10, 6, 0, 13, 14, 15, 16,
- 17, 0, 1, 2, 3, 4, 5, 0, 7, 8, 9, 86, 72, 73, 0, 1, 31, 10, 0, 31, 37, 0, 0, 1, 2, 3, 4, 5, 6, 46, 16,
- 17, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 0, 49, 37, 0, 1, 71, 72, 73, 74,
- 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 0, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
- 101, 102, 0, 1, 0, 75, 72, 73, 6, 71, 0, 1, 10, 0, 1, 13, 14, 15, 16, 17, 90, 0, 1, 2, 3, 4, 5, 6, 0, 1,
- 0, 10, 11, 12, 13, 14, 15, 16, 17, 37, 19, 20, 21, 22, 23, 24, 25, 26, 46, 0, 0, 2, 3, 4, 5, 0, 7, 8, 9,
- 0, 11, 2, 3, 4, 5, 0, 7, 8, 9, 19, 11, 0, 1, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
- 86, 87, 88, 0, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 0, 0, 2, 3, 4, 5, 6, 7, 8, 9, 0,
- 11, 12, 0, 89, 2, 3, 4, 5, 103, 7, 8, 9, 37, 11, 0, 1, 27, 28, 29, 30, 0, 32, 33, 34, 35, 36, 0, 38, 39,
- 40, 41, 42, 43, 44, 45, 0, 46, 0, 1, 2, 3, 4, 5, 6, 55, 19, 0, 27, 28, 29, 61, 62, 63, 64, 65, 66, 67,
- 68, 69, 70, 71, 0, 0, 2, 3, 4, 5, 6, 7, 8, 9, 0, 11, 12, 37, 0, 0, 0, 2, 3, 4, 5, 0, 6, 47, 86, 0, 11,
- 27, 28, 29, 30, 6, 32, 33, 34, 35, 36, 0, 38, 39, 40, 41, 42, 43, 44, 45, 72, 73, 27, 28, 29, 0, 37, 0,
- 1, 55, 31, 6, 7, 8, 9, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 0, 0, 2, 3, 4, 5, 6, 7, 8, 9, 31, 11,
- 12, 0, 1, 71, 15, 0, 75, 0, 7, 8, 9, 10, 7, 46, 88, 27, 28, 29, 30, 0, 32, 33, 34, 35, 36, 6, 38, 39,
- 40, 41, 42, 43, 44, 45, 27, 28, 29, 0, 37, 0, 0, 74, 2, 55, 0, 6, 7, 8, 9, 61, 62, 63, 64, 65, 66, 67,
- 68, 69, 70, 71, 0, 1, 2, 3, 4, 5, 47, 7, 8, 9, 31, 11, 12, 0, 0, 2, 3, 4, 5, 0, 0, 7, 8, 9, 11, 46, 6,
- 27, 28, 29, 30, 18, 32, 33, 34, 35, 36, 0, 0, 39, 40, 41, 42, 43, 44, 45, 0, 0, 2, 3, 4, 5, 15, 74, 0,
- 55, 18, 11, 0, 0, 6, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 0, 88, 2, 3, 4, 5, 0, 7, 8, 9, 0, 11, 12,
- 0, 0, 2, 3, 4, 5, 0, 72, 73, 0, 1, 11, 49, 7, 27, 28, 29, 30, 18, 32, 33, 34, 35, 36, 18, 89, 39, 40,
- 41, 42, 43, 44, 45, 0, 0, 2, 3, 4, 5, 103, 6, 71, 55, 46, 11, 0, 72, 73, 61, 62, 63, 64, 65, 66, 67, 68,
- 69, 70, 0, 0, 2, 3, 4, 5, 0, 7, 8, 9, 0, 11, 12, 78, 79, 80, 81, 82, 83, 13, 14, 78, 79, 80, 81, 82, 83,
- 27, 28, 29, 30, 0, 32, 33, 34, 35, 36, 6, 0, 39, 40, 41, 42, 43, 44, 45, 0, 71, 0, 0, 49, 13, 14, 0, 0,
- 55, 7, 8, 9, 10, 6, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 0, 1, 2, 3, 4, 5, 6, 47, 0, 49, 10, 11, 12,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 0, 46, 0, 47, 31, 0, 0, 7, 8, 9, 0, 38, 7, 8, 9,
- 10, 0, 7, 8, 9, 0, 48, 2, 50, 51, 52, 53, 54, 0, 56, 57, 58, 59, 60, 0, 87, 2, 3, 4, 5, 89, 7, 8, 9, 0,
- 11, 12, 0, 0, 1, 0, 7, 8, 9, 7, 8, 9, 7, 8, 9, 0, 27, 28, 29, 30, 0, 32, 33, 34, 35, 36, 6, 0, 39, 40,
- 41, 42, 43, 44, 45, 78, 79, 80, 81, 82, 83, 0, 1, 0, 55, 84, 85, 6, 0, 89, 61, 62, 63, 64, 65, 66, 67,
- 68, 69, 70, 0, 1, 2, 3, 4, 5, 6, 47, 0, 1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
- 25, 26, 0, 47, 0, 0, 31, 0, 1, 7, 8, 9, 0, 38, 10, 0, 0, 0, 2, 7, 8, 9, 6, 48, 0, 50, 51, 52, 53, 54, 0,
- 56, 57, 58, 59, 60, 0, 1, 2, 3, 4, 5, 6, 0, 1, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
- 23, 24, 25, 26, 47, 0, 0, 49, 31, 0, 0, 46, 7, 8, 9, 38, 7, 8, 9, 48, 0, 76, 77, 0, 18, 48, 6, 50, 51,
- 52, 53, 54, 46, 56, 57, 58, 59, 60, 0, 1, 2, 3, 4, 5, 6, 0, 0, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 0, 46, 47, 0, 31, 0, 0, 7, 8, 9, 0, 38, 0, 10, 0, 0, 0, 7, 8, 9, 0, 48,
- 6, 50, 51, 52, 53, 54, 46, 56, 57, 58, 59, 60, 0, 1, 2, 3, 4, 5, 6, 0, 0, 0, 10, 11, 12, 13, 14, 15, 16,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 0, 46, 47, 49, 31, 0, 0, 0, 0, 0, 10, 38, 7, 8, 9, 7, 8, 9, 76,
- 77, 0, 48, 0, 50, 51, 52, 53, 54, 0, 56, 57, 58, 59, 60, 0, 1, 2, 3, 4, 5, 6, 0, 0, 0, 10, 11, 12, 13,
- 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 0, 0, 0, 105, 31, 0, 0, 7, 8, 9, 0, 38, 0, 0, 0, 76,
- 77, 0, 0, 18, 18, 48, 74, 50, 51, 52, 53, 54, 18, 56, 57, 58, 59, 60, 0, 1, 2, 3, 4, 5, 6, 0, 0, 0, 10,
- 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 18, 0, 0, 0, 31, 49, 49, 0, 0, 0, 0, 38,
- 0, 0, 0, 0, 0, 0, 0, 18, 18, 48, 0, 50, 51, 52, 53, 54, 18, 56, 57, 58, 59, 60, 0, 1, 2, 3, 4, 5, 6, 0,
- 0, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 49, 49, 0, 49, 31, 49, 49, 0,
- 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 18, 48, 0, 50, 51, 52, 53, 54, 18, 56, 57, 58, 59, 60, 0, 1, 2, 3,
- 4, 5, 6, 0, 0, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 49, 49, 0, 0, 31,
- 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 51, 52, 53, 54, 0, 56, 57, 58, 59, 60, 0, 1,
- 2, 3, 4, 5, 6, 0, 0, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 0, 0, 0, 0,
- 31, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 51, 52, 53, 54, 0, 56, 57, 58, 59, 60,
- 0, 1, 2, 3, 4, 5, 6, 0, 0, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 0, 0,
- 0, 0, 31, 0, 0, 0, 0, 0, 0, 38, 0, 0, 7, 8, 9, 0, 0, 6, 0, 48, 0, 50, 51, 52, 53, 54, 0, 56, 57, 58, 59,
- 60, 27, 28, 29, 30, 0, 32, 33, 34, 35, 36, 31, 0, 39, 40, 41, 42, 43, 44, 45, 0, 0, 0, 0, 0, 0, 0, 47,
- 0, 55, 0, 0, 0, 0, 0, 61, 62, 63, 64, 65, 66, 67, 0, 1, 2, 3, 4, 5, 0, 0, 0, 0, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 0, 1, 2, 3, 4, 5, 0, 0, 0, 47, 10, 11,
- 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 0, 1, 2, 3, 4, 5, 0,
- 0, 0, 47, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 0, 1, 2, 3, 4, 5, 0, 0, 0,
- 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 0, 1, 2, 3, 4, 5, 0, 0, 0, 0, 10,
- 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 0, 1, 2, 3, 4, 5, 0, 0, 0, 0, 10, 11,
- 12, 13, 14, 15, 16, 17, 0, 19, 20, 21, 22, 23, 24, 25, 26, 0, 1, 2, 3, 4, 5, 0, 0, 0, 0, 10, 11, 12, 13,
- 14, 15, 16, 17, 0, 19, 20, 21, 22, 23, 24, 25, 26, 0, 1, 2, 3, 4, 5, 0, 0, 0, 0, 10, 11, 12, 13, 14, 15,
- 16, 17, 0, 19, 20, 21, 22, 23, 24, 25, 26, 0, 1, 2, 3, 4, 5, 0, 0, 0, 0, 10, 11, 12, 13, 14, 15, 16, 17,
- 0, 19, 20, 21, 22, 23, 24, 25, 26, 0, 1, 2, 3, 4, 5, 0, 0, 0, 0, 10, 11, 12, 13, 14, 15, 16, 17, 0, 19,
- 20, 21, 22, 23, 24, 25, 26, 0, 1, 2, 3, 4, 5, 0, 0, 0, 0, 10, 11, 12, 13, 14, 15, 16, 17, 0, 19, 20, 21,
- 22, 23, 24, 25, 26, 0, 0, 0, 3, 4, 0, 0, 7, 8, 9, 0, 0, 6, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 6, 0, 0, 0, 27,
- 28, 29, 30, 0, 32, 33, 34, 35, 36, 31, 0, 39, 40, 41, 42, 43, 44, 45, 0, 1, 2, 3, 4, 5, 46, 0, 37, 0,
- 10, 11, 12, 13, 14, 15, 16, 17, 47, 19, 20, 21, 22, 23, 24, 25, 26, 0, 0, 0, 3, 4, 0, 0, 7, 8, 9, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 6, 0, 0, 0, 27, 28, 29, 30, 0, 32, 33, 34, 35, 36, 0, 0, 39, 40, 41,
- 42, 43, 44, 45, 0, 1, 2, 3, 4, 5, 0, 0, 37, 0, 10, 11, 12, 13, 14, 15, 16, 17, 47, 19, 20, 21, 22, 23,
- 24, 25, 26, 0, 1, 2, 3, 4, 5, 0, 0, 0, 0, 10, 11, 12, 13, 14, 15, 16, 17, 0, 19, 20, 21, 22, 23, 24, 25,
- 26, 0, 0, 0, 0, 0, 0, 0, 7, 8, 9, 0, 0, 0, 0, 0, 0, 1, 7, 8, 9, 0, 6, 0, 0, 0, 0, 0, 27, 28, 29, 30, 0,
- 32, 33, 34, 35, 36, 27, 28, 29, 30, 0, 32, 33, 34, 35, 36, 0, 7, 8, 9, 0, 37, 0, 0, 0, 0, 0, 7, 8, 9, 0,
- 47, 0, 0, 0, 0, 0, 27, 28, 29, 30, 0, 32, 33, 34, 35, 36, 27, 28, 29, 30, 0, 32, 33, 34, 35, 36, 0, 7,
- 8, 9, 0, 0, 0, 0, 0, 0, 0, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 27, 28, 29, 30, 0, 32, 33, 34, 35, 36, 27, 28,
- 29, 30, 0, 32, 33, 34, 35, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static byte termCheck[] = TermCheck.termCheck;
-
- @Override
- public final int termCheck(int index) {
- return termCheck[index];
- }
-
- public interface TermAction {
- public final static char termAction[] = { 0, 3781, 1, 6262, 6206, 6203, 6205, 1802, 3538, 1, 1, 1, 6261, 1, 1,
- 1, 1, 1, 1, 819, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3790, 1, 1, 1, 1, 1, 1, 3882, 1, 1, 1, 1, 1, 1, 1,
- 55, 158, 1644, 287, 1179, 1077, 1405, 1720, 609, 1, 1634, 1046, 1686, 1203, 1660, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 3788, 8, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754,
- 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754,
- 3754, 3754, 3754, 3754, 3754, 3781, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 1238, 1361, 3754,
- 462, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754,
- 3754, 3754, 3754, 3754, 3754, 3754, 3781, 1, 6262, 6206, 6203, 6205, 1802, 3538, 1, 1, 1, 6261, 1, 1, 1,
- 1, 1, 1, 819, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3790, 1, 1, 1, 1, 1, 3781, 3882, 1, 1, 1, 1, 1, 1, 1,
- 359, 2196, 1644, 3781, 1179, 1077, 1405, 1720, 609, 1, 1634, 1046, 1686, 1203, 1660, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 3788, 3781, 1, 6262, 6206, 6203, 6205, 3791, 3538, 1, 1, 1, 6261, 1, 1, 1, 1, 1, 1, 819, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3790, 1, 1, 1, 1, 1, 3781, 3882, 1, 1, 1, 1, 1, 1, 1, 1238, 1361, 1644,
- 3781, 1179, 1077, 1405, 1720, 609, 1, 1634, 1046, 1686, 1203, 1660, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3781,
- 1, 6262, 6206, 6203, 6205, 3791, 3538, 1, 1, 1, 6261, 1, 1, 1, 1, 1, 1, 819, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 3790, 1, 1, 1, 1, 1, 3781, 3882, 1, 1, 1, 1, 1, 1, 1, 3781, 480, 1644, 345, 1179, 1077, 1405,
- 1720, 609, 1, 1634, 1046, 1686, 1203, 1660, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3781, 3135, 3792, 4196, 4198,
- 3691, 4125, 544, 520, 535, 3250, 3793, 3389, 3239, 2289, 3259, 3365, 2096, 3781, 3797, 1183, 3794, 3795,
- 3796, 738, 500, 1133, 3996, 3998, 3997, 3945, 3781, 3946, 3944, 3999, 3947, 3943, 3781, 618, 3950, 3954,
- 3952, 3953, 3951, 3956, 3957, 63, 223, 491, 269, 2346, 4008, 4199, 4201, 4200, 3955, 544, 520, 535, 254,
- 69, 3949, 3958, 3959, 3960, 4170, 4171, 4172, 1279, 3351, 3081, 3781, 1, 1, 1, 1, 1, 3791, 3538, 1, 1,
- 1, 1, 1, 913, 1, 913, 1, 3062, 4008, 4199, 4201, 4200, 3781, 3547, 3541, 3544, 3781, 1, 1, 1, 1, 3790,
- 1, 1, 1, 1, 1, 3781, 4088, 1, 1, 1, 1, 1, 1, 1, 1, 3062, 4008, 4199, 4201, 4200, 3781, 3781, 1956, 1,
- 4178, 4180, 3787, 2867, 2850, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1913, 1, 3781, 3694, 2634, 679, 43, 3781, 1,
- 1, 1, 1, 1, 3791, 3538, 1, 1, 1, 1, 1, 221, 4183, 4179, 4185, 4186, 4184, 4181, 4182, 3786, 3996, 3998,
- 3997, 4040, 301, 1, 1, 1, 1, 3790, 1, 1, 1, 1, 1, 1843, 4088, 1, 1, 1, 1, 1, 1, 1, 73, 250, 3537, 186,
- 913, 3589, 3589, 3589, 3589, 1, 3580, 3586, 3583, 3781, 3589, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4198,
- 1687, 1, 1, 1, 4198, 249, 271, 818, 4198, 183, 4040, 4198, 4198, 4198, 4198, 4198, 544, 520, 535, 1661,
- 1635, 1609, 1583, 1557, 1505, 1531, 1479, 1453, 1421, 3781, 525, 300, 3996, 3998, 3997, 4198, 1, 3135,
- 3792, 4196, 4198, 4197, 3785, 913, 4198, 3781, 1001, 3793, 545, 3239, 2289, 3259, 3365, 2096, 52, 3797,
- 1183, 3794, 3795, 3796, 738, 500, 1133, 630, 851, 640, 788, 2828, 2423, 4198, 4198, 4198, 4198, 4198,
- 4198, 4198, 4198, 4198, 4198, 4198, 4198, 4198, 4198, 4198, 4198, 4198, 4198, 350, 4198, 4198, 4198,
- 4198, 4198, 4198, 4198, 4198, 4198, 4198, 4198, 4198, 4198, 1, 4197, 3781, 3781, 944, 1063, 4197, 3781,
- 3791, 3781, 4197, 1741, 487, 4197, 4197, 4197, 4197, 4197, 3781, 1801, 1, 2346, 4008, 4199, 4201, 4200,
- 263, 254, 3062, 4008, 4199, 4201, 4200, 3790, 544, 520, 535, 4197, 3784, 3781, 3135, 3792, 4196, 4198,
- 4197, 3785, 4197, 3781, 2317, 2556, 3793, 545, 3239, 2289, 3259, 3365, 2096, 913, 3797, 1183, 3794,
- 3795, 3796, 738, 500, 1133, 263, 263, 293, 1817, 212, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197,
- 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 230, 4197, 4197, 4197, 4197, 4197, 4197,
- 4197, 4197, 4197, 4197, 4197, 4197, 4197, 1, 4196, 2024, 3781, 233, 327, 4196, 4109, 3781, 3785, 4196,
- 3781, 3781, 4196, 4196, 4196, 4196, 4196, 3787, 3781, 357, 368, 368, 368, 368, 368, 3775, 368, 368, 368,
- 3775, 3781, 4110, 3792, 4196, 4198, 4197, 4196, 5629, 3784, 1757, 1868, 3793, 417, 3622, 67, 4196, 368,
- 368, 368, 368, 3775, 368, 368, 368, 368, 368, 368, 456, 3786, 358, 1, 3062, 4008, 4199, 4201, 4200,
- 3775, 3547, 3541, 3544, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196,
- 4196, 4196, 4196, 4196, 4196, 1, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196,
- 4196, 1, 3793, 1, 3784, 819, 1, 3793, 1947, 117, 3538, 3793, 3791, 3781, 3793, 3793, 3793, 3793, 3793,
- 1, 3062, 4008, 4199, 4201, 4200, 3781, 3547, 3541, 3544, 1380, 1238, 1361, 32, 3661, 117, 3374, 59,
- 3790, 3793, 3781, 1, 3135, 5192, 4986, 4780, 4883, 29, 3793, 3807, 3808, 3250, 5089, 545, 3239, 2289,
- 3259, 3365, 2096, 5629, 3797, 1183, 3794, 3795, 3796, 738, 500, 1133, 3781, 1947, 3664, 416, 3625, 3793,
- 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793,
- 3781, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 1, 3792, 3781, 823,
- 1238, 1361, 3792, 29, 415, 3628, 3792, 11, 3631, 3792, 3792, 3792, 3792, 3792, 676, 3781, 3135, 3792,
- 4196, 4198, 4197, 3785, 3781, 446, 1, 3250, 3793, 545, 3239, 2289, 3259, 3365, 2096, 3792, 3797, 1183,
- 3794, 3795, 3796, 738, 500, 1133, 3792, 185, 3781, 3601, 3601, 3601, 3601, 3781, 3592, 3598, 3595, 207,
- 3601, 6251, 6251, 6251, 6251, 3781, 544, 520, 535, 1030, 6251, 351, 1234, 3792, 3792, 3792, 3792, 3792,
- 3792, 3792, 3792, 3792, 3792, 3792, 3792, 3792, 3792, 3792, 3792, 3792, 3792, 272, 3792, 3792, 3792,
- 3792, 3792, 3792, 3792, 3792, 3792, 3792, 3792, 3792, 3792, 3781, 348, 1, 1, 1, 1, 192, 1, 1, 1, 68, 1,
- 1, 378, 4039, 6259, 6259, 6259, 6259, 3784, 544, 520, 535, 913, 6259, 338, 1549, 1, 1, 1, 1, 251, 1, 1,
- 1, 1, 1, 3781, 3978, 1, 1, 1, 1, 1, 1, 1, 58, 1003, 1, 2346, 3769, 3766, 3760, 3763, 3787, 1, 1063,
- 3781, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 192, 3781, 3781, 1, 1, 1, 1, 191, 1, 1, 1, 71, 1, 1, 913,
- 3781, 3781, 1, 3792, 4196, 4198, 4197, 252, 3649, 3786, 1380, 3781, 3793, 1, 1, 1, 1, 3791, 1, 1, 1, 1,
- 1, 3781, 3978, 1, 1, 1, 1, 1, 1, 1, 1238, 1361, 3996, 3998, 3997, 236, 1972, 3781, 3078, 1, 3790, 224,
- 3646, 3646, 3646, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 191, 3781, 65, 1, 1, 1, 1, 192, 1, 1, 1, 224, 1, 1, 269,
- 2321, 3788, 1768, 1, 1646, 253, 544, 520, 535, 254, 3538, 224, 1105, 1, 1, 1, 1, 3781, 1, 1, 1, 1, 1,
- 3787, 3978, 1, 1, 1, 1, 1, 1, 1, 3996, 3998, 3997, 3781, 913, 237, 3781, 224, 2017, 1, 72, 224, 3697,
- 3697, 3697, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 192, 1, 3062, 730, 681, 604, 3550, 3786, 3547, 3541, 3544,
- 224, 3793, 454, 3781, 254, 3792, 4196, 4198, 4197, 57, 3781, 544, 520, 535, 3793, 224, 3785, 3996, 3998,
- 3997, 3945, 1064, 3946, 3944, 3999, 3947, 3943, 66, 3781, 3950, 3954, 3952, 3953, 3951, 3956, 3957, 209,
- 3781, 3792, 4196, 4198, 4197, 1768, 224, 3781, 3955, 1409, 3793, 56, 3781, 3789, 3949, 3958, 3959, 3960,
- 4170, 4171, 4172, 1279, 3351, 3081, 3781, 1105, 3792, 4196, 4198, 3643, 60, 544, 520, 535, 257, 3793,
- 454, 3781, 62, 3792, 4196, 4198, 4197, 1, 1238, 1361, 3781, 1957, 3793, 2525, 3538, 3996, 3998, 3997,
- 3945, 1067, 3946, 3944, 3999, 3947, 3943, 819, 2051, 3950, 3954, 3952, 3953, 3951, 3956, 3957, 208, 286,
- 1464, 1464, 1464, 1464, 3784, 1114, 3788, 3955, 798, 1464, 3781, 1238, 1361, 3949, 3958, 3959, 3960,
- 4170, 4171, 4172, 1279, 3351, 3081, 3781, 3781, 3792, 4196, 4198, 3691, 54, 544, 520, 535, 3781, 3793,
- 454, 3069, 3053, 3037, 3021, 3005, 2984, 2828, 2423, 3069, 3053, 3037, 3021, 3005, 2984, 3996, 3998,
- 3997, 3945, 3781, 3946, 3944, 3999, 3947, 3943, 3787, 53, 3950, 3954, 3952, 3953, 3951, 3956, 3957, 70,
- 1114, 3781, 1, 2552, 2828, 2423, 89, 1, 3955, 3547, 3541, 3544, 254, 3787, 3949, 3958, 3959, 3960, 4170,
- 4171, 4172, 1279, 3351, 3081, 3781, 1, 6262, 6206, 6203, 6205, 3791, 3786, 3781, 770, 1, 6261, 1, 1, 1,
- 1, 1, 1, 819, 1, 1, 1, 1, 1, 1, 1, 1, 160, 1732, 61, 3786, 3790, 1, 64, 544, 520, 535, 379, 3882, 3547,
- 3541, 3544, 254, 3781, 544, 520, 535, 3781, 1644, 4020, 1179, 1077, 1405, 1720, 609, 3781, 1634, 1046,
- 1686, 1203, 1660, 3781, 679, 3792, 4196, 4198, 4197, 4040, 544, 520, 535, 382, 3793, 454, 381, 3781,
- 2149, 373, 544, 520, 535, 3652, 3658, 3655, 544, 520, 535, 3781, 3996, 3998, 3997, 3945, 1, 3946, 3944,
- 3999, 3947, 3943, 91, 3781, 3950, 3954, 3952, 3953, 3951, 3956, 3957, 3069, 3053, 3037, 3021, 3005,
- 2984, 3781, 447, 3781, 3955, 2867, 2850, 3787, 3781, 4040, 3949, 3958, 3959, 3960, 4170, 4171, 4172,
- 1279, 3351, 3081, 3781, 1, 6262, 6206, 6203, 6205, 3791, 91, 3781, 2304, 1, 6261, 1, 1, 1, 1, 1, 1, 819,
- 1, 1, 1, 1, 1, 1, 1, 1, 372, 3786, 49, 3781, 3790, 325, 942, 544, 520, 535, 184, 3882, 3337, 3781, 3781,
- 1, 1086, 544, 520, 535, 3787, 1644, 30, 1179, 1077, 1405, 1720, 609, 119, 1634, 1046, 1686, 1203, 1660,
- 3781, 1, 6262, 6206, 6203, 6205, 3791, 3781, 2585, 208, 1, 6261, 1, 1, 1, 1, 1, 1, 819, 1, 1, 1, 1, 1,
- 1, 1, 1, 3786, 254, 3781, 2, 3790, 374, 3781, 3810, 3682, 3688, 3685, 3882, 544, 520, 535, 3757, 3781,
- 3313, 3299, 3781, 1514, 1644, 3787, 1179, 1077, 1405, 1720, 609, 5628, 1634, 1046, 1686, 1203, 1660,
- 3781, 1, 6262, 6206, 6203, 6205, 3791, 3781, 3781, 30, 1, 6261, 1, 1, 1, 1, 1, 1, 819, 1, 1, 1, 1, 1, 1,
- 1, 1, 380, 2009, 3786, 51, 3790, 3781, 3781, 544, 520, 535, 201, 3882, 3781, 3337, 3781, 3781, 3781,
- 544, 520, 535, 113, 1644, 3787, 1179, 1077, 1405, 1720, 609, 758, 1634, 1046, 1686, 1203, 1660, 3781, 1,
- 6262, 6206, 6203, 6205, 3791, 3781, 3781, 3781, 1, 6261, 1, 1, 1, 1, 1, 1, 819, 1, 1, 1, 1, 1, 1, 1, 1,
- 50, 1295, 3786, 2624, 3790, 375, 3781, 3781, 376, 3781, 3337, 3882, 544, 520, 535, 544, 520, 535, 3313,
- 3299, 3781, 1644, 3781, 1179, 1077, 1405, 1720, 609, 3781, 1634, 1046, 1686, 1203, 1660, 3781, 1, 6262,
- 6206, 6203, 6205, 3791, 3781, 3781, 3781, 1, 6261, 1, 1, 1, 1, 1, 1, 819, 1, 1, 1, 1, 1, 1, 1, 1, 377,
- 230, 3781, 3778, 3790, 3781, 3781, 544, 520, 535, 368, 3882, 3781, 3781, 3781, 3313, 3299, 3781, 3781,
- 234, 1540, 1644, 883, 1179, 1077, 1405, 1720, 609, 5629, 1634, 1046, 1686, 1203, 1660, 3781, 1, 6262,
- 6206, 6203, 6205, 3791, 3781, 3781, 357, 1, 6261, 1, 1, 1, 1, 1, 1, 819, 1, 1, 1, 1, 1, 1, 1, 1, 5629,
- 355, 42, 3781, 3790, 1895, 1921, 3781, 3781, 3781, 3781, 3882, 202, 3781, 3781, 1, 3781, 1, 1, 5629,
- 5629, 1644, 3781, 1179, 1077, 1405, 1720, 609, 5629, 1634, 1046, 1686, 1203, 1660, 3781, 1, 6262, 6206,
- 6203, 6205, 3791, 3781, 3781, 3781, 1, 6261, 1, 1, 1, 1, 1, 1, 819, 1, 1, 1, 1, 1, 1, 1, 1, 1999, 4166,
- 190, 4198, 3790, 4197, 4196, 3781, 3781, 3781, 382, 3882, 1, 1, 3781, 3781, 3781, 3781, 3781, 3781, 207,
- 1644, 3781, 1179, 1077, 1405, 1720, 609, 378, 1634, 1046, 1686, 1203, 1660, 3781, 1, 6262, 6206, 6203,
- 6205, 3791, 3781, 3781, 3781, 1, 6261, 1, 1, 1, 1, 1, 1, 819, 1, 1, 1, 1, 1, 1, 1, 1, 3793, 3792, 3781,
- 3781, 3790, 3781, 3781, 3781, 3781, 3781, 3781, 3882, 3781, 3781, 3781, 3781, 3781, 3781, 3781, 3781,
- 3781, 1644, 3781, 1179, 1077, 1405, 1720, 609, 3781, 1634, 1046, 1686, 1203, 1660, 3781, 1, 6262, 6206,
- 6203, 6205, 3791, 3781, 3781, 3781, 1, 6261, 1, 1, 1, 1, 1, 1, 819, 1, 1, 1, 1, 1, 1, 1, 1, 3781, 3781,
- 3781, 3781, 3790, 3781, 3781, 3781, 3781, 3781, 3781, 3882, 3781, 3781, 3781, 3781, 3781, 3781, 3781,
- 3781, 3781, 1644, 3781, 1179, 1077, 1405, 1720, 609, 3781, 1634, 1046, 1686, 1203, 1660, 3781, 1, 6262,
- 6206, 6203, 6205, 3791, 3781, 3781, 3781, 1, 6261, 1, 1, 1, 1, 1, 1, 819, 1, 1, 1, 1, 1, 1, 1, 1, 3781,
- 3781, 3781, 3781, 3790, 3781, 3781, 130, 3781, 3781, 3781, 3882, 3781, 1, 3559, 3553, 3556, 3781, 3781,
- 117, 3781, 1644, 3781, 1179, 1077, 1405, 1720, 609, 3781, 1634, 1046, 1686, 1203, 1660, 3996, 3998,
- 3997, 3945, 3781, 3946, 3944, 3999, 3947, 3943, 117, 3781, 3950, 3954, 3952, 3953, 3951, 3956, 3957,
- 3781, 3781, 3781, 3781, 3781, 3781, 3781, 117, 3781, 3955, 3781, 3781, 3781, 3781, 3781, 3949, 3958,
- 3959, 3960, 4170, 4171, 4172, 3781, 3135, 3792, 4196, 4198, 4197, 3781, 3781, 3781, 3781, 3250, 3793,
- 545, 3239, 2289, 3259, 3365, 2096, 5629, 3797, 1183, 3794, 3795, 3796, 738, 500, 1133, 20, 3751, 180,
- 180, 180, 180, 3751, 180, 180, 180, 3751, 3781, 3781, 3781, 3781, 3781, 3781, 3781, 3781, 3781, 3781,
- 3781, 3781, 3781, 3781, 3781, 3781, 180, 180, 180, 180, 3751, 180, 180, 180, 180, 180, 3751, 3781, 3135,
- 3792, 4196, 4198, 4197, 3781, 3781, 3781, 3751, 3250, 3793, 545, 3239, 2289, 3259, 3365, 2096, 5629,
- 3797, 1183, 3794, 3795, 3796, 738, 500, 1133, 356, 367, 367, 367, 367, 367, 3772, 367, 367, 367, 3772,
- 3781, 3781, 3781, 3781, 3781, 3781, 3781, 3781, 3781, 3781, 3781, 3781, 3781, 3781, 3781, 3781, 367,
- 367, 367, 367, 3772, 367, 367, 367, 367, 367, 367, 1, 3135, 5192, 4986, 4780, 4883, 3781, 3781, 3781,
- 3772, 3250, 5089, 545, 3239, 2289, 3259, 3365, 2096, 5629, 3797, 1183, 3794, 3795, 3796, 738, 500, 1133,
- 383, 3135, 3792, 4196, 4198, 4197, 3781, 3781, 3781, 3781, 3250, 3793, 545, 3239, 2289, 3259, 3365,
- 2096, 5629, 3797, 1183, 3794, 3795, 3796, 738, 500, 1133, 3781, 3135, 3792, 4196, 4198, 4197, 3781,
- 3781, 3781, 3781, 3250, 3793, 545, 3239, 2289, 3259, 3365, 2096, 5629, 3797, 1183, 3794, 3795, 3796,
- 738, 500, 1133, 3781, 2110, 3792, 4196, 4198, 4197, 3781, 3781, 3781, 3781, 3250, 3793, 545, 3239, 2289,
- 3259, 3365, 2096, 3781, 3797, 1183, 3794, 3795, 3796, 738, 500, 1133, 3781, 3086, 3792, 4196, 4198,
- 4197, 3781, 3781, 3781, 3781, 3250, 3793, 545, 3239, 2289, 3259, 3365, 2096, 3781, 3797, 1183, 3794,
- 3795, 3796, 738, 500, 1133, 3781, 3103, 3792, 4196, 4198, 4197, 3781, 3781, 3781, 3781, 3250, 3793, 545,
- 3239, 2289, 3259, 3365, 2096, 3781, 3797, 1183, 3794, 3795, 3796, 738, 500, 1133, 3781, 3124, 3792,
- 4196, 4198, 4197, 3781, 3781, 3781, 3781, 3250, 3793, 545, 3239, 2289, 3259, 3365, 2096, 3781, 3797,
- 1183, 3794, 3795, 3796, 738, 500, 1133, 3781, 3135, 3792, 4196, 4198, 4197, 3781, 3781, 3781, 3781,
- 3250, 3793, 545, 3239, 2289, 3259, 3365, 2096, 3781, 3797, 1183, 3794, 3795, 3796, 738, 500, 1133, 3781,
- 3149, 3792, 4196, 4198, 4197, 3781, 3781, 3781, 3781, 3250, 3793, 545, 3239, 2289, 3259, 3365, 2096,
- 3781, 3797, 1183, 3794, 3795, 3796, 738, 500, 1133, 411, 3781, 3781, 3679, 3676, 3781, 3781, 3673, 3667,
- 3670, 3781, 3781, 3791, 3781, 3781, 3781, 3781, 1, 2321, 3781, 3781, 3781, 3781, 392, 3781, 3781, 3781,
- 3996, 3998, 3997, 3945, 3781, 3946, 3944, 3999, 3947, 3943, 3790, 3781, 4183, 4179, 4185, 4186, 4184,
- 4181, 4182, 1, 3135, 3792, 4196, 4198, 4197, 2331, 3781, 913, 3781, 3250, 3793, 545, 3239, 2289, 3259,
- 3365, 2096, 392, 3797, 1183, 3794, 3795, 3796, 738, 500, 1133, 410, 3781, 3781, 3748, 3745, 3781, 3781,
- 3742, 3736, 3739, 3781, 3781, 3781, 3781, 3781, 3781, 3781, 1, 2321, 3781, 3781, 3781, 3781, 266, 3781,
- 3781, 3781, 3996, 3998, 3997, 3945, 3781, 3946, 3944, 3999, 3947, 3943, 3781, 3781, 4183, 4179, 4185,
- 4186, 4184, 4181, 4182, 3781, 3170, 3792, 4196, 4198, 4197, 3781, 3781, 913, 3781, 3250, 3793, 545,
- 3239, 2289, 3259, 3365, 2096, 266, 3797, 1183, 3794, 3795, 3796, 738, 500, 1133, 333, 3135, 3792, 4196,
- 4198, 4197, 3781, 3781, 3781, 3781, 3250, 3793, 545, 3239, 2289, 3259, 3365, 2096, 3781, 3797, 1183,
- 3794, 3795, 3796, 738, 500, 1133, 131, 3781, 3781, 3781, 3781, 3781, 3781, 3568, 3562, 3565, 132, 3781,
- 3781, 3781, 3781, 1, 2321, 3577, 3571, 3574, 3781, 3787, 3781, 3781, 3781, 3781, 3781, 3996, 3998, 3997,
- 3945, 3781, 3946, 3944, 3999, 3947, 3943, 3996, 3998, 3997, 3945, 133, 3946, 3944, 3999, 3947, 3943,
- 3781, 3610, 3604, 3607, 134, 913, 3781, 3781, 3781, 3781, 3781, 3619, 3613, 3616, 3781, 3786, 3781,
- 3781, 3781, 3781, 3781, 3996, 3998, 3997, 3945, 3781, 3946, 3944, 3999, 3947, 3943, 3996, 3998, 3997,
- 3945, 369, 3946, 3944, 3999, 3947, 3943, 3781, 3640, 3634, 3637, 407, 3781, 3781, 3781, 3781, 3781,
- 3781, 3706, 3700, 3703, 3781, 3781, 3781, 3781, 3781, 3781, 3781, 3996, 3998, 3997, 3945, 3781, 3946,
- 3944, 3999, 3947, 3943, 3718, 3712, 3715, 3727, 3781, 3724, 3730, 3709, 3721, 3733 };
- }
-
- public final static char termAction[] = TermAction.termAction;
-
- @Override
- public final int termAction(int index) {
- return termAction[index];
- }
-
- public interface Asb {
- public final static char asb[] = { 0, 751, 1, 165, 350, 348, 568, 751, 166, 350, 350, 831, 141, 668, 166, 166,
- 166, 79, 658, 79, 658, 658, 79, 658, 79, 355, 350, 339, 339, 339, 339, 166, 79, 33, 570, 9, 521, 227,
- 350, 105, 104, 355, 230, 141, 570, 521, 194, 355, 263, 597, 539, 416, 704, 53, 136, 658, 662, 659, 662,
- 136, 662, 658, 350, 358, 403, 417, 711, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 615, 297, 528, 420,
- 527, 350, 227, 227, 235, 711, 350, 120, 570, 350, 679, 540, 3, 704, 703, 417, 267, 426, 141, 466, 358,
- 403, 713, 615, 615, 615, 615, 615, 417, 417, 417, 411, 411, 555, 539, 662, 662, 273, 33, 9, 522, 791,
- 53, 227, 143, 260, 747, 481, 239, 492, 497, 495, 505, 499, 508, 507, 510, 509, 511, 713, 463, 141, 630,
- 570, 348, 194, 263, 679, 679, 539, 31, 522, 522, 662, 166, 166, 18, 166, 166, 522, 102, 33, 102, 348,
- 112, 476, 292, 141, 267, 426, 466, 466, 403, 403, 417, 406, 570, 112, 417, 417, 417, 417, 417, 78, 355,
- 708, 111, 475, 525, 301, 33, 540, 417, 33, 260, 666, 417, 747, 260, 238, 235, 33, 33, 33, 33, 33, 33,
- 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 55, 33,
- 112, 463, 118, 350, 536, 522, 522, 553, 33, 538, 33, 33, 18, 102, 607, 18, 350, 3, 417, 272, 417, 417,
- 426, 463, 91, 426, 466, 471, 610, 471, 403, 747, 708, 355, 570, 713, 360, 360, 360, 120, 141, 411, 417,
- 794, 711, 33, 305, 615, 539, 417, 33, 33, 260, 239, 495, 495, 492, 492, 499, 499, 497, 497, 497, 497,
- 497, 497, 507, 505, 509, 508, 102, 102, 510, 666, 118, 31, 522, 417, 166, 417, 417, 18, 33, 18, 355,
- 112, 426, 93, 471, 463, 33, 662, 747, 403, 794, 406, 417, 713, 417, 260, 260, 33, 33, 471, 186, 522, 31,
- 18, 33, 18, 18, 350, 272, 463, 521, 33, 517, 93, 518, 463, 403, 417, 364, 463, 116, 233, 168, 662, 33,
- 102, 14, 273, 522, 417, 538, 93, 33, 518, 518, 297, 120, 532, 662, 33, 417, 273, 522, 18, 518, 33, 260,
- 18, 417, 260, 18 };
- }
-
- public final static char asb[] = Asb.asb;
-
- @Override
- public final int asb(int index) {
- return asb[index];
- }
-
- public interface Asr {
- public final static byte asr[] = { 0, 104, 0, 6, 46, 47, 2, 27, 0, 6, 49, 47, 19, 0, 74, 37, 75, 0, 51, 53, 18,
- 58, 60, 54, 48, 56, 57, 52, 50, 59, 38, 31, 6, 1, 21, 22, 23, 2, 11, 3, 5, 4, 16, 17, 15, 10, 13, 14,
- 24, 25, 20, 26, 12, 19, 0, 20, 21, 22, 23, 19, 2, 11, 1, 16, 17, 15, 10, 13, 14, 24, 25, 12, 26, 5, 3,
- 4, 49, 0, 18, 37, 46, 47, 36, 33, 30, 32, 35, 27, 29, 28, 34, 31, 6, 10, 2, 3, 5, 4, 1, 7, 9, 8, 49, 0,
- 1, 49, 74, 31, 8, 9, 7, 37, 47, 6, 46, 0, 6, 71, 37, 75, 1, 21, 22, 23, 19, 16, 17, 15, 10, 13, 14, 24,
- 25, 20, 26, 12, 2, 11, 3, 5, 4, 18, 0, 27, 29, 16, 17, 15, 10, 13, 14, 24, 25, 20, 26, 12, 2, 11, 3, 5,
- 4, 21, 22, 23, 19, 28, 1, 0, 74, 1, 21, 22, 23, 19, 16, 17, 15, 10, 13, 14, 24, 25, 20, 26, 12, 18, 2,
- 11, 3, 5, 4, 37, 75, 0, 55, 68, 33, 40, 34, 41, 42, 35, 29, 43, 44, 30, 69, 36, 70, 45, 61, 28, 62, 63,
- 64, 2, 11, 12, 27, 39, 32, 5, 3, 4, 65, 66, 67, 8, 9, 7, 6, 46, 31, 74, 0, 27, 29, 28, 30, 16, 17, 15,
- 10, 13, 14, 24, 25, 20, 26, 12, 1, 2, 11, 3, 5, 4, 21, 22, 23, 19, 103, 6, 0, 6, 74, 46, 31, 18, 8, 9,
- 7, 0, 46, 20, 21, 22, 23, 11, 1, 16, 17, 15, 10, 13, 14, 24, 25, 12, 26, 5, 3, 4, 47, 6, 2, 19, 0, 49,
- 89, 103, 71, 75, 90, 16, 17, 37, 15, 13, 14, 76, 77, 72, 73, 78, 79, 80, 81, 84, 85, 86, 87, 88, 91, 92,
- 74, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 46, 82, 83, 47, 32, 27, 33, 34, 35, 29, 30, 36, 28, 31,
- 6, 2, 1, 5, 3, 4, 8, 9, 7, 10, 0, 49, 89, 103, 71, 35, 30, 36, 34, 33, 32, 15, 13, 14, 76, 77, 72, 73,
- 78, 79, 80, 81, 84, 85, 86, 87, 88, 91, 92, 74, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 82, 83, 18,
- 31, 27, 29, 28, 46, 2, 3, 5, 4, 10, 8, 9, 7, 37, 1, 47, 6, 0, 6, 49, 46, 47, 1, 0, 32, 39, 27, 55, 68,
- 33, 40, 34, 41, 42, 35, 29, 43, 44, 30, 69, 36, 70, 45, 61, 28, 62, 63, 64, 2, 11, 12, 8, 9, 7, 5, 3, 4,
- 65, 66, 67, 38, 6, 71, 0, 2, 11, 5, 3, 4, 6, 71, 46, 0, 37, 6, 46, 47, 1, 0, 74, 93, 94, 95, 96, 97, 99,
- 98, 100, 101, 102, 10, 76, 77, 13, 14, 73, 72, 78, 79, 80, 81, 82, 83, 84, 85, 15, 86, 87, 88, 89, 103,
- 47, 71, 91, 92, 49, 8, 9, 7, 46, 31, 6, 0, 103, 31, 46, 47, 6, 49, 0, 103, 6, 89, 0, 47, 104, 105, 71,
- 51, 53, 18, 58, 60, 54, 48, 56, 57, 52, 50, 59, 38, 6, 31, 21, 22, 23, 19, 16, 17, 15, 13, 14, 24, 25,
- 20, 26, 10, 1, 12, 2, 11, 68, 69, 70, 61, 55, 62, 63, 64, 65, 66, 67, 36, 33, 30, 32, 35, 27, 29, 28,
- 34, 7, 9, 8, 5, 3, 40, 4, 44, 45, 39, 43, 41, 42, 0, 49, 89, 0, 6, 46, 71, 74, 0, 20, 21, 22, 23, 19, 1,
- 16, 17, 15, 10, 13, 14, 24, 25, 26, 32, 39, 27, 55, 68, 33, 40, 34, 41, 42, 35, 29, 43, 44, 30, 69, 36,
- 70, 45, 61, 28, 62, 63, 64, 12, 65, 66, 67, 18, 8, 9, 7, 11, 3, 5, 4, 2, 0, 49, 46, 31, 61, 55, 62, 63,
- 64, 65, 66, 67, 37, 10, 5, 40, 44, 45, 39, 43, 41, 42, 36, 33, 30, 32, 35, 27, 29, 28, 34, 3, 4, 7, 9,
- 8, 1, 47, 6, 2, 0, 10, 1, 37, 47, 6, 32, 39, 55, 68, 33, 40, 34, 41, 42, 35, 43, 44, 30, 69, 36, 70, 45,
- 61, 62, 63, 64, 2, 11, 12, 8, 9, 7, 5, 3, 4, 65, 66, 67, 89, 27, 29, 28, 0, 104, 32, 39, 27, 55, 68, 33,
- 40, 34, 41, 42, 35, 29, 43, 44, 30, 69, 36, 70, 45, 61, 28, 62, 63, 64, 11, 1, 12, 8, 9, 5, 3, 4, 65,
- 66, 67, 31, 6, 38, 7, 2, 10, 0, 10, 32, 39, 27, 55, 68, 33, 40, 34, 41, 42, 35, 29, 43, 44, 30, 69, 36,
- 70, 45, 61, 28, 62, 63, 64, 2, 11, 12, 3, 4, 65, 66, 67, 89, 7, 9, 8, 5, 0 };
- }
-
- public final static byte asr[] = Asr.asr;
-
- @Override
- public final int asr(int index) {
- return asr[index];
- }
-
- public interface Nasb {
- public final static char nasb[] = { 0, 181, 34, 38, 94, 103, 23, 163, 34, 149, 117, 34, 19, 132, 34, 34, 34,
- 133, 122, 133, 122, 122, 133, 122, 133, 188, 107, 34, 34, 34, 34, 34, 133, 63, 126, 15, 104, 122, 106,
- 58, 58, 188, 34, 19, 94, 104, 34, 188, 34, 17, 49, 161, 35, 34, 8, 42, 8, 42, 8, 8, 8, 42, 177, 34, 42,
- 161, 160, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 137, 34, 161, 34, 34, 149, 42, 122, 77, 160, 120,
- 12, 205, 175, 33, 81, 10, 65, 34, 161, 122, 94, 34, 94, 34, 122, 93, 137, 137, 137, 137, 137, 161, 161,
- 161, 171, 171, 1, 49, 56, 56, 96, 140, 15, 104, 34, 15, 42, 62, 79, 21, 34, 78, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 195, 94, 34, 111, 26, 103, 34, 34, 133, 33, 88, 102, 104, 104, 8, 34, 34, 44, 34, 34,
- 104, 34, 99, 34, 103, 161, 34, 161, 34, 42, 191, 94, 8, 122, 94, 161, 169, 26, 34, 161, 161, 161, 161,
- 161, 155, 188, 158, 58, 58, 34, 34, 63, 81, 161, 63, 79, 34, 161, 21, 79, 78, 124, 63, 63, 63, 63, 63,
- 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 52,
- 63, 161, 50, 94, 149, 34, 104, 104, 199, 140, 34, 140, 140, 44, 34, 34, 44, 118, 10, 161, 63, 161, 161,
- 94, 50, 103, 73, 8, 68, 34, 34, 94, 21, 168, 188, 126, 93, 155, 155, 155, 154, 155, 145, 161, 186, 160,
- 63, 34, 137, 88, 161, 63, 63, 79, 78, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 61, 202, 104, 161, 34, 161, 161, 44, 63, 44, 188, 161, 191, 149, 68, 50, 63, 8, 21, 124,
- 186, 143, 161, 93, 161, 79, 79, 63, 63, 68, 70, 104, 202, 44, 140, 44, 44, 119, 63, 50, 104, 63, 34,
- 106, 122, 50, 124, 161, 155, 50, 60, 34, 12, 8, 63, 34, 40, 202, 104, 161, 34, 149, 63, 122, 42, 135,
- 12, 79, 8, 63, 161, 202, 104, 44, 42, 63, 79, 44, 161, 79, 44 };
- }
-
- public final static char nasb[] = Nasb.nasb;
-
- @Override
- public final int nasb(int index) {
- return nasb[index];
- }
-
- public interface Nasr {
- public final static char nasr[] = { 0, 73, 97, 94, 93, 78, 92, 91, 1, 0, 122, 0, 6, 57, 0, 104, 0, 106, 0, 120,
- 0, 96, 0, 34, 2, 103, 97, 95, 94, 93, 78, 92, 91, 73, 0, 147, 18, 0, 148, 0, 142, 0, 9, 0, 1, 43, 2, 44,
- 0, 2, 59, 0, 2, 33, 128, 0, 108, 0, 58, 0, 117, 57, 2, 6, 0, 18, 124, 0, 98, 0, 1, 151, 0, 2, 60, 100,
- 0, 2, 6, 54, 0, 29, 2, 42, 1, 43, 110, 0, 43, 1, 42, 89, 59, 29, 2, 0, 2, 129, 0, 6, 150, 0, 33, 2, 25,
- 0, 9, 38, 34, 2, 0, 2, 42, 29, 61, 30, 0, 40, 2, 36, 34, 38, 27, 0, 31, 0, 78, 74, 75, 76, 77, 81, 67,
- 50, 0, 138, 0, 60, 42, 30, 2, 33, 0, 34, 38, 71, 70, 27, 0, 2, 34, 38, 27, 0, 6, 57, 55, 0, 70, 71, 2,
- 18, 0, 2, 29, 42, 118, 0, 18, 34, 38, 70, 71, 2, 0, 38, 40, 27, 34, 36, 0, 143, 2, 29, 42, 0, 2, 29, 27,
- 65, 0, 112, 2, 60, 0, 134, 2, 29, 0, 42, 29, 61, 2, 82, 0, 29, 2, 42, 144, 0 };
- }
-
- public final static char nasr[] = Nasr.nasr;
-
- @Override
- public final int nasr(int index) {
- return nasr[index];
- }
-
- public interface TerminalIndex {
- public final static char terminalIndex[] = { 0, 2, 87, 101, 102, 100, 89, 99, 97, 98, 9, 88, 95, 10, 11, 8, 6,
- 7, 3, 86, 70, 83, 84, 85, 12, 13, 96, 50, 78, 66, 71, 94, 46, 57, 62, 65, 74, 1, 107, 49, 58, 63, 64,
- 68, 69, 76, 42, 92, 79, 29, 47, 48, 51, 52, 53, 54, 59, 60, 61, 67, 73, 77, 80, 81, 82, 103, 104, 105,
- 56, 72, 75, 93, 16, 17, 31, 4, 14, 15, 18, 19, 20, 21, 43, 44, 22, 23, 24, 25, 26, 30, 5, 27, 28, 32,
- 33, 34, 35, 36, 37, 38, 39, 40, 41, 91, 108, 55, 90, 106 };
- }
-
- public final static char terminalIndex[] = TerminalIndex.terminalIndex;
-
- @Override
- public final int terminalIndex(int index) {
- return terminalIndex[index];
- }
-
- public interface NonterminalIndex {
- public final static char nonterminalIndex[] = { 0, 113, 0, 0, 0, 0, 115, 119, 120, 197, 0, 0, 0, 121, 122, 123,
- 124, 125, 110, 126, 127, 128, 129, 130, 0, 112, 0, 198, 131, 140, 136, 148, 0, 114, 171, 0, 174, 168,
- 170, 0, 172, 0, 207, 132, 135, 0, 0, 0, 0, 0, 147, 0, 0, 0, 109, 118, 158, 0, 173, 111, 162, 139, 0, 0,
- 134, 169, 117, 150, 0, 185, 186, 187, 0, 149, 151, 152, 153, 154, 159, 182, 0, 205, 0, 155, 156, 157,
- 175, 181, 184, 138, 141, 142, 143, 144, 145, 146, 180, 204, 0, 0, 161, 165, 167, 176, 202, 0, 208, 0,
- 116, 133, 137, 0, 160, 164, 0, 166, 179, 189, 194, 0, 196, 0, 199, 0, 201, 0, 209, 0, 0, 0, 0, 0, 163,
- 0, 177, 178, 183, 188, 0, 190, 191, 0, 192, 193, 195, 0, 0, 200, 0, 0, 203, 206, 0, 0, 210, 0 };
- }
-
- public final static char nonterminalIndex[] = NonterminalIndex.nonterminalIndex;
-
- @Override
- public final int nonterminalIndex(int index) {
- return nonterminalIndex[index];
- }
-
- public interface ScopePrefix {
- public final static char scopePrefix[] = { 221, 275, 348, 239, 328, 144, 170, 176, 303, 118, 377, 399, 356, 20,
- 127, 160, 186, 206, 86, 283, 338, 8, 54, 54, 78, 82, 94, 100, 132, 182, 254, 319, 94, 435, 442, 446,
- 373, 395, 408, 422, 408, 362, 34, 46, 75, 27, 27, 136, 139, 191, 139, 216, 139, 264, 269, 272, 325, 450,
- 14, 69, 106, 112, 152, 258, 106, 419, 429, 429, 1, 27, 152, 293, 229, 386, 229, 293, 39, 39, 60, 252,
- 60, 60, 60, 60, 60, 323, 417, 39, 39, 64, 165, 194, 165, 194, 194 };
- }
-
- public final static char scopePrefix[] = ScopePrefix.scopePrefix;
-
- @Override
- public final int scopePrefix(int index) {
- return scopePrefix[index];
- }
-
- public interface ScopeSuffix {
- public final static char scopeSuffix[] = { 98, 98, 335, 98, 335, 150, 25, 25, 98, 124, 383, 405, 343, 25, 58,
- 150, 25, 58, 91, 288, 343, 12, 58, 58, 58, 58, 98, 104, 58, 25, 12, 12, 98, 58, 58, 25, 335, 335, 335,
- 426, 412, 366, 37, 37, 58, 25, 25, 58, 142, 25, 201, 58, 219, 267, 267, 267, 12, 58, 17, 72, 109, 115,
- 167, 261, 17, 72, 432, 439, 4, 30, 155, 288, 246, 389, 232, 296, 44, 52, 62, 12, 309, 311, 313, 315,
- 317, 12, 12, 41, 49, 66, 167, 203, 155, 196, 211 };
- }
-
- public final static char scopeSuffix[] = ScopeSuffix.scopeSuffix;
-
- @Override
- public final int scopeSuffix(int index) {
- return scopeSuffix[index];
- }
-
- public interface ScopeLhs {
- public final static char scopeLhs[] = { 76, 74, 48, 76, 48, 65, 58, 58, 74, 55, 48, 47, 48, 152, 72, 65, 58, 36,
- 10, 74, 48, 63, 81, 7, 7, 121, 120, 80, 72, 58, 100, 61, 30, 7, 6, 6, 48, 47, 47, 24, 47, 48, 113, 84,
- 4, 142, 141, 70, 88, 58, 103, 34, 56, 75, 75, 75, 49, 4, 63, 45, 80, 117, 65, 100, 61, 45, 8, 6, 42,
- 152, 65, 74, 76, 48, 76, 74, 113, 84, 97, 100, 95, 94, 93, 92, 91, 61, 46, 113, 84, 150, 65, 36, 65, 40,
- 36 };
- }
-
- public final static char scopeLhs[] = ScopeLhs.scopeLhs;
-
- @Override
- public final int scopeLhs(int index) {
- return scopeLhs[index];
- }
-
- public interface ScopeLa {
- public final static byte scopeLa[] = { 71, 71, 47, 71, 47, 27, 103, 103, 71, 71, 47, 105, 31, 103, 47, 27, 103,
- 47, 47, 18, 31, 31, 47, 47, 47, 47, 71, 18, 47, 103, 31, 31, 71, 47, 47, 103, 47, 47, 47, 49, 47, 31, 8,
- 8, 47, 103, 103, 47, 1, 103, 2, 47, 2, 2, 2, 2, 31, 47, 2, 49, 2, 74, 10, 2, 2, 49, 47, 47, 5, 89, 10,
- 18, 18, 48, 2, 2, 2, 2, 12, 31, 2, 68, 69, 69, 61, 31, 31, 2, 2, 89, 10, 1, 10, 1, 1 };
- }
-
- public final static byte scopeLa[] = ScopeLa.scopeLa;
-
- @Override
- public final int scopeLa(int index) {
- return scopeLa[index];
- }
-
- public interface ScopeStateSet {
- public final static char scopeStateSet[] = { 142, 142, 38, 142, 38, 218, 54, 54, 142, 17, 38, 38, 38, 3, 58,
- 218, 54, 149, 168, 142, 38, 238, 142, 66, 66, 14, 139, 241, 58, 54, 8, 238, 30, 66, 66, 66, 38, 38, 38,
- 102, 38, 38, 5, 162, 66, 1, 3, 58, 60, 54, 227, 149, 155, 142, 142, 142, 38, 66, 238, 38, 241, 136, 218,
- 8, 238, 38, 73, 66, 231, 3, 218, 142, 142, 38, 142, 142, 5, 162, 144, 8, 144, 144, 144, 144, 144, 238,
- 38, 5, 162, 12, 218, 149, 218, 151, 149 };
- }
-
- public final static char scopeStateSet[] = ScopeStateSet.scopeStateSet;
-
- @Override
- public final int scopeStateSet(int index) {
- return scopeStateSet[index];
- }
-
- public interface ScopeRhs {
- public final static char scopeRhs[] = { 0, 212, 109, 0, 100, 208, 0, 0, 197, 109, 149, 0, 112, 0, 109, 149, 0,
- 141, 112, 0, 171, 89, 171, 37, 0, 109, 0, 171, 37, 0, 30, 134, 109, 0, 208, 134, 0, 198, 0, 134, 0, 165,
- 198, 0, 165, 0, 163, 134, 0, 158, 198, 0, 158, 0, 173, 1, 12, 0, 110, 0, 180, 0, 205, 0, 171, 0, 30,
- 134, 0, 257, 51, 0, 29, 135, 0, 137, 1, 0, 173, 1, 26, 0, 253, 1, 229, 0, 252, 1, 1, 8, 0, 110, 110, 0,
- 217, 109, 18, 0, 111, 0, 210, 109, 136, 0, 196, 0, 109, 136, 0, 176, 196, 0, 246, 109, 0, 31, 157, 0,
- 205, 244, 109, 18, 164, 0, 111, 0, 0, 193, 109, 1, 177, 0, 193, 109, 1, 0, 195, 1, 0, 172, 109, 0, 185,
- 0, 109, 148, 10, 148, 172, 0, 180, 0, 148, 172, 0, 9, 0, 0, 180, 0, 109, 148, 10, 148, 0, 148, 0, 9, 0,
- 0, 135, 30, 223, 109, 37, 0, 135, 223, 109, 30, 37, 0, 135, 30, 37, 0, 135, 223, 109, 37, 0, 135, 37, 0,
- 141, 0, 2, 0, 177, 110, 0, 174, 0, 2, 110, 0, 193, 109, 1, 141, 0, 2, 0, 175, 110, 0, 163, 1, 0, 168, 0,
- 205, 221, 109, 18, 108, 240, 68, 0, 240, 68, 0, 113, 3, 0, 0, 0, 111, 0, 205, 221, 109, 18, 240, 68, 0,
- 3, 0, 0, 0, 111, 0, 167, 0, 239, 109, 167, 0, 109, 167, 0, 163, 112, 0, 206, 68, 0, 113, 0, 206, 70, 0,
- 206, 69, 0, 218, 109, 18, 238, 108, 237, 185, 0, 238, 108, 237, 185, 0, 3, 0, 0, 111, 0, 237, 185, 0,
- 113, 0, 3, 0, 0, 111, 0, 218, 109, 18, 237, 185, 0, 154, 0, 153, 0, 152, 0, 151, 0, 150, 0, 197, 109,
- 136, 0, 136, 0, 140, 59, 0, 189, 132, 189, 168, 1, 56, 0, 110, 135, 0, 189, 168, 1, 56, 0, 112, 0, 110,
- 135, 0, 189, 132, 189, 132, 189, 1, 56, 0, 189, 132, 189, 1, 56, 0, 189, 1, 56, 0, 112, 0, 112, 0, 110,
- 135, 0, 140, 1, 48, 0, 140, 1, 48, 151, 54, 0, 110, 112, 0, 151, 54, 0, 79, 2, 114, 110, 112, 0, 140, 1,
- 60, 0, 151, 125, 140, 1, 58, 0, 55, 135, 0, 140, 1, 58, 0, 110, 135, 55, 135, 0, 150, 0, 171, 51, 0,
- 140, 92, 130, 0, 29, 131, 0, 173, 1, 0, 110, 120, 0, 173, 1, 20, 0, 110, 118, 0, 236, 1, 113, 0, 140,
- 37, 113, 0, 140, 1, 0 };
- }
-
- public final static char scopeRhs[] = ScopeRhs.scopeRhs;
-
- @Override
- public final int scopeRhs(int index) {
- return scopeRhs[index];
- }
-
- public interface ScopeState {
- public final static char scopeState[] = { 0, 555, 0, 834, 0, 2331, 2276, 0, 3347, 879, 2627, 0, 1077, 0, 456,
- 447, 0, 883, 825, 758, 1281, 700, 1280, 2265, 1219, 1180, 1060, 674, 462, 0, 3170, 1263, 3149, 3135,
- 3124, 3103, 3086, 2110, 2800, 2773, 2742, 2734, 2707, 2674, 2634, 2624, 1224, 2552, 2525, 1102, 609,
- 990, 951, 0, 1162, 1135, 725, 718, 2123, 2876, 2346, 2321, 987, 3224, 2838, 0, 3389, 3365, 2096, 1183,
- 1133, 545, 454, 2556, 2265, 851, 679, 1105, 1768, 1380, 3069, 3053, 3037, 3021, 3005, 2984, 2867, 2850,
- 2828, 2423, 1361, 1238, 3337, 3313, 3299, 1001, 3259, 3250, 3239, 2289, 738, 500, 2051, 2024, 883, 1999,
- 1972, 825, 1947, 1295, 1921, 1895, 1868, 1843, 1817, 1791, 1732, 942, 1687, 1661, 1635, 1609, 1583,
- 1557, 1531, 1505, 1479, 1453, 1421, 1194, 1153, 1077, 788, 421, 462, 913, 758, 700, 0, 521, 492, 0,
- 1712, 1339, 659, 570, 421, 522, 0, 2605, 522, 2503, 2123, 2457, 2437, 2331, 527, 2276, 2346, 987, 1221,
- 3062, 2082, 2218, 2317, 1320, 2177, 0, 3471, 3451, 3427, 2331, 3421, 527, 2503, 2123, 2276, 2876, 1712,
- 2082, 2218, 659, 3374, 3269, 2410, 2964, 570, 3176, 421, 2196, 2144, 2095, 2457, 2437, 3413, 2499, 2317,
- 2069, 2605, 1716, 1333, 576, 1221, 3408, 1339, 2951, 2918, 1279, 2904, 3351, 3081, 2889, 1062, 2470,
- 2231, 1320, 2177, 522, 2684, 3346, 2579, 3323, 3274, 3211, 3207, 2796, 0, 2082, 1320, 522, 0, 3170,
- 3149, 3135, 3124, 3103, 3086, 2110, 3078, 1263, 3268, 1224, 1102, 990, 951, 2334, 2504, 0 };
- }
-
- public final static char scopeState[] = ScopeState.scopeState;
-
- @Override
- public final int scopeState(int index) {
- return scopeState[index];
- }
-
- public interface InSymb {
- public final static char inSymb[] = { 0, 0, 234, 7, 149, 136, 109, 250, 255, 109, 109, 212, 210, 198, 8, 9, 7,
- 199, 185, 200, 70, 69, 201, 68, 202, 109, 1, 4, 5, 3, 2, 141, 204, 12, 180, 1, 197, 163, 134, 145, 141,
- 109, 191, 210, 242, 197, 147, 109, 143, 5, 18, 1, 1, 1, 237, 134, 206, 134, 206, 240, 206, 134, 172,
- 148, 134, 163, 1, 12, 26, 20, 25, 24, 14, 13, 10, 15, 17, 16, 1, 113, 256, 19, 211, 46, 134, 163, 37, 1,
- 172, 74, 109, 172, 213, 109, 1, 254, 2, 19, 108, 18, 108, 18, 148, 10, 109, 1, 1, 1, 1, 1, 137, 173,
- 140, 149, 167, 109, 18, 90, 75, 1, 37, 49, 125, 1, 46, 134, 30, 135, 109, 114, 10, 120, 122, 121, 124,
- 123, 127, 126, 129, 128, 130, 109, 18, 164, 251, 109, 136, 147, 143, 180, 261, 217, 59, 50, 52, 57, 56,
- 48, 54, 60, 58, 150, 53, 51, 108, 136, 252, 229, 1, 238, 134, 109, 18, 109, 10, 148, 193, 136, 109, 194,
- 173, 173, 173, 173, 173, 125, 109, 1, 178, 177, 216, 108, 12, 109, 236, 109, 140, 10, 2, 109, 135, 223,
- 203, 102, 101, 100, 98, 99, 97, 96, 95, 94, 93, 74, 77, 76, 10, 72, 73, 14, 13, 85, 84, 83, 82, 81, 80,
- 79, 78, 86, 15, 88, 87, 92, 91, 241, 109, 18, 109, 6, 140, 108, 1, 1, 151, 1, 1, 49, 257, 171, 49, 109,
- 46, 125, 1, 19, 2, 18, 218, 167, 219, 109, 221, 108, 222, 148, 109, 1, 109, 180, 46, 125, 125, 125, 125,
- 125, 172, 195, 109, 1, 46, 114, 1, 217, 2, 223, 30, 135, 10, 121, 121, 120, 120, 123, 123, 122, 122,
- 122, 122, 122, 122, 126, 124, 128, 127, 235, 140, 129, 46, 109, 168, 189, 140, 48, 140, 140, 49, 89, 49,
- 109, 253, 109, 109, 221, 205, 74, 46, 109, 203, 109, 172, 193, 109, 173, 135, 135, 49, 49, 244, 109,
- 189, 132, 125, 1, 125, 125, 172, 46, 218, 239, 49, 163, 134, 208, 205, 203, 193, 125, 205, 46, 246, 258,
- 75, 37, 108, 247, 132, 189, 140, 151, 46, 49, 208, 134, 166, 74, 171, 75, 37, 189, 132, 125, 105, 134,
- 89, 171, 125, 189, 171, 125 };
- }
-
- public final static char inSymb[] = InSymb.inSymb;
-
- @Override
- public final int inSymb(int index) {
- return inSymb[index];
- }
-
- public interface Name {
- public final static String name[] = { "", "[", "(", "{", ".", "->", "++", "--", "&", "*", "+", "-", "~", "!",
- "/", "%", ">>", "<<", "<", ">", "<=", ">=", "==", "!=", "^", "|", "&&", "||", "?", ":", "...", "=",
- "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", ",", ">?", "<?", "$empty", "auto",
- "break", "case", "char", "const", "continue", "default", "do", "double", "else", "enum", "extern",
- "float", "for", "goto", "if", "inline", "int", "long", "register", "restrict", "return", "short",
- "signed", "sizeof", "static", "struct", "switch", "typedef", "union", "unsigned", "void", "volatile",
- "while", "_Bool", "_Complex", "_Imaginary", "integer", "floating", "charconst", "stringlit",
- "identifier", "Completion", "EndOfCompletion", "Invalid", "RightBracket", "RightParen", "RightBrace",
- "SemiColon", "typeof", "__alignof__", "__attribute__", "__declspec", "asm", "vector", "pixel", "bool",
- "_Decimal32", "_Decimal64", "_Decimal128", "__static_assert", "ERROR_TOKEN", "EOF_TOKEN", "]", ")", "}",
- ";", "identifier_token", "expression", "postfix_expression", "member_name", "type_id",
- "initializer_list", "unary_expression", "cast_expression", "multiplicative_expression",
- "additive_expression", "shift_expression", "relational_expression", "equality_expression",
- "and_expression", "exclusive_or_expression", "inclusive_or_expression", "logical_and_expression",
- "logical_or_expression", "assignment_expression", "expression_in_statement", "expression_list_actual",
- "constant_expression", "statement", "compound_statement", "block_item_list", "block_item",
- "declaration", "declaration_specifiers", "init_declarator_list", "simple_declaration_specifiers",
- "struct_or_union_declaration_sp" + "ecifiers", "elaborated_declaration_specifi" + "ers",
- "enum_declaration_specifiers", "typdef_name_declaration_specif" + "iers",
- "no_type_declaration_specifier", "type_qualifier", "no_type_declaration_specifiers",
- "simple_type_specifier", "struct_or_union_specifier", "elaborated_specifier", "enum_specifier",
- "type_name_specifier", "init_declarator", "complete_declarator", "initializer", "declarator",
- "struct_or_union", "struct_declaration_list", "struct_declaration", "specifier_qualifier_list",
- "struct_declarator_list", "complete_struct_declarator", "struct_declarator", "enumerator_list",
- "enumerator", "direct_declarator", "pointer_seq", "array_direct_declarator", "basic_direct_declarator",
- "knr_direct_declarator", "array_modifier", "function_direct_declarator", "parameter_type_list",
- "function_declarator", "identifier_list", "knr_function_declarator", "array_modifier_type_qualifiers",
- "type_qualifier_list", "parameter_list", "parameter_declaration", "complete_parameter_declarator",
- "abstract_declarator", "direct_abstract_declarator", "basic_direct_abstract_declarat" + "or",
- "array_direct_abstract_declarat" + "or", "initializer_seq", "designated_initializer", "designation",
- "designator_list", "designator", "external_declaration_list", "external_declaration",
- "declaration_list", "function_body", "attribute_or_decl_specifier",
- "attribute_or_decl_specifier_se" + "q", "word", "extended_decl_modifier_seq", "extended_decl_modifier",
- "extended_asm_param", "case_range_expression", "typeof_declaration_specifiers", "typeof_type_specifier",
- "field_name_designator", "vector_type", "vector_type_specifier", "all_specifier_qualifiers",
- "all_specifier_qualifier_list" };
- }
-
- public final static String name[] = Name.name;
-
- @Override
- public final String name(int index) {
- return name[index];
- }
-
- public final static int ERROR_SYMBOL = 38, SCOPE_UBOUND = 94, SCOPE_SIZE = 95, MAX_NAME_LENGTH = 38;
-
- @Override
- public final int getErrorSymbol() {
- return ERROR_SYMBOL;
- }
-
- @Override
- public final int getScopeUbound() {
- return SCOPE_UBOUND;
- }
-
- @Override
- public final int getScopeSize() {
- return SCOPE_SIZE;
- }
-
- @Override
- public final int getMaxNameLength() {
- return MAX_NAME_LENGTH;
- }
-
- public final static int NUM_STATES = 389, NT_OFFSET = 107, LA_STATE_OFFSET = 4201, MAX_LA = 2147483647,
- NUM_RULES = 420, NUM_NONTERMINALS = 155, NUM_SYMBOLS = 262, SEGMENT_SIZE = 8192, START_STATE = 2504,
- IDENTIFIER_SYMBOL = 0, EOFT_SYMBOL = 104, EOLT_SYMBOL = 104, ACCEPT_ACTION = 3537, ERROR_ACTION = 3781;
-
- public final static boolean BACKTRACK = true;
-
- @Override
- public final int getNumStates() {
- return NUM_STATES;
- }
-
- @Override
- public final int getNtOffset() {
- return NT_OFFSET;
- }
-
- @Override
- public final int getLaStateOffset() {
- return LA_STATE_OFFSET;
- }
-
- @Override
- public final int getMaxLa() {
- return MAX_LA;
- }
-
- @Override
- public final int getNumRules() {
- return NUM_RULES;
- }
-
- @Override
- public final int getNumNonterminals() {
- return NUM_NONTERMINALS;
- }
-
- @Override
- public final int getNumSymbols() {
- return NUM_SYMBOLS;
- }
-
- @Override
- public final int getSegmentSize() {
- return SEGMENT_SIZE;
- }
-
- @Override
- public final int getStartState() {
- return START_STATE;
- }
-
- @Override
- public final int getStartSymbol() {
- return lhs[0];
- }
-
- public final int getIdentifierSymbol() {
- return IDENTIFIER_SYMBOL;
- }
-
- @Override
- public final int getEoftSymbol() {
- return EOFT_SYMBOL;
- }
-
- @Override
- public final int getEoltSymbol() {
- return EOLT_SYMBOL;
- }
-
- @Override
- public final int getAcceptAction() {
- return ACCEPT_ACTION;
- }
-
- @Override
- public final int getErrorAction() {
- return ERROR_ACTION;
- }
-
- @Override
- public final boolean isValidForParser() {
- return isValidForParser;
- }
-
- @Override
- public final boolean getBacktrack() {
- return BACKTRACK;
- }
-
- @Override
- public final int originalState(int state) {
- return -baseCheck[state];
- }
-
- @Override
- public final int asi(int state) {
- return asb[originalState(state)];
- }
-
- @Override
- public final int nasi(int state) {
- return nasb[originalState(state)];
- }
-
- @Override
- public final int inSymbol(int state) {
- return inSymb[originalState(state)];
- }
-
- @Override
- public final int ntAction(int state, int sym) {
- return baseAction[state + sym];
- }
-
- @Override
- public final int tAction(int state, int sym) {
- int i = baseAction[state], k = i + sym;
- return termAction[termCheck[k] == sym ? k : i];
- }
-
- @Override
- public final int lookAhead(int la_state, int sym) {
- int k = la_state + sym;
- return termAction[termCheck[k] == sym ? k : la_state];
- }
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/c/XlcCParsersym.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/c/XlcCParsersym.java
deleted file mode 100644
index 9b4cb97baa0..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/c/XlcCParsersym.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2010 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.lrparser.xlc.c;
-
-public interface XlcCParsersym {
- public final static int TK_auto = 32, TK_break = 50, TK_case = 51, TK_char = 39, TK_const = 27, TK_continue = 52,
- TK_default = 53, TK_do = 54, TK_double = 55, TK_else = 105, TK_enum = 68, TK_extern = 33, TK_float = 40,
- TK_for = 56, TK_goto = 57, TK_if = 58, TK_inline = 34, TK_int = 41, TK_long = 42, TK_register = 35,
- TK_restrict = 29, TK_return = 59, TK_short = 43, TK_signed = 44, TK_sizeof = 20, TK_static = 30,
- TK_struct = 69, TK_switch = 60, TK_typedef = 36, TK_union = 70, TK_unsigned = 45, TK_void = 61,
- TK_volatile = 28, TK_while = 48, TK__Bool = 62, TK__Complex = 63, TK__Imaginary = 64, TK_integer = 21,
- TK_floating = 22, TK_charconst = 23, TK_stringlit = 19, TK_identifier = 2, TK_Completion = 11,
- TK_EndOfCompletion = 6, TK_Invalid = 106, TK_LeftBracket = 37, TK_LeftParen = 1, TK_LeftBrace = 18,
- TK_Dot = 75, TK_Arrow = 90, TK_PlusPlus = 16, TK_MinusMinus = 17, TK_And = 15, TK_Star = 10, TK_Plus = 13,
- TK_Minus = 14, TK_Tilde = 24, TK_Bang = 25, TK_Slash = 76, TK_Percent = 77, TK_RightShift = 72,
- TK_LeftShift = 73, TK_LT = 78, TK_GT = 79, TK_LE = 80, TK_GE = 81, TK_EQ = 84, TK_NE = 85, TK_Caret = 86,
- TK_Or = 87, TK_AndAnd = 88, TK_OrOr = 91, TK_Question = 92, TK_Colon = 49, TK_DotDotDot = 89,
- TK_Assign = 74, TK_StarAssign = 93, TK_SlashAssign = 94, TK_PercentAssign = 95, TK_PlusAssign = 96,
- TK_MinusAssign = 97, TK_RightShiftAssign = 98, TK_LeftShiftAssign = 99, TK_AndAssign = 100,
- TK_CaretAssign = 101, TK_OrAssign = 102, TK_Comma = 46, TK_RightBracket = 103, TK_RightParen = 47,
- TK_RightBrace = 71, TK_SemiColon = 31, TK_typeof = 12, TK___alignof__ = 26, TK___attribute__ = 8,
- TK___declspec = 9, TK_MAX = 82, TK_MIN = 83, TK_asm = 7, TK_vector = 5, TK_pixel = 3, TK_bool = 4,
- TK__Decimal32 = 65, TK__Decimal64 = 66, TK__Decimal128 = 67, TK___static_assert = 107, TK_ERROR_TOKEN = 38,
- TK_EOF_TOKEN = 104;
-
- public final static String orderedTerminalSymbols[] = { "", "LeftParen", "identifier", "pixel", "bool", "vector",
- "EndOfCompletion", "asm", "__attribute__", "__declspec", "Star", "Completion", "typeof", "Plus", "Minus",
- "And", "PlusPlus", "MinusMinus", "LeftBrace", "stringlit", "sizeof", "integer", "floating", "charconst",
- "Tilde", "Bang", "__alignof__", "const", "volatile", "restrict", "static", "SemiColon", "auto", "extern",
- "inline", "register", "typedef", "LeftBracket", "ERROR_TOKEN", "char", "float", "int", "long", "short",
- "signed", "unsigned", "Comma", "RightParen", "while", "Colon", "break", "case", "continue", "default", "do",
- "double", "for", "goto", "if", "return", "switch", "void", "_Bool", "_Complex", "_Imaginary", "_Decimal32",
- "_Decimal64", "_Decimal128", "enum", "struct", "union", "RightBrace", "RightShift", "LeftShift", "Assign",
- "Dot", "Slash", "Percent", "LT", "GT", "LE", "GE", "MAX", "MIN", "EQ", "NE", "Caret", "Or", "AndAnd",
- "DotDotDot", "Arrow", "OrOr", "Question", "StarAssign", "SlashAssign", "PercentAssign", "PlusAssign",
- "MinusAssign", "RightShiftAssign", "LeftShiftAssign", "AndAssign", "CaretAssign", "OrAssign",
- "RightBracket", "EOF_TOKEN", "else", "Invalid", "__static_assert" };
-
- public final static boolean isValidForParser = true;
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/cpp/XlcCPPParser.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/cpp/XlcCPPParser.java
deleted file mode 100644
index 89e38f2ba29..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/cpp/XlcCPPParser.java
+++ /dev/null
@@ -1,3128 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2010 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.lrparser.xlc.cpp;
-
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.cdt.core.dom.ast.IASTBinaryExpression;
-import org.eclipse.cdt.core.dom.ast.IASTCompletionNode;
-import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
-import org.eclipse.cdt.core.dom.ast.IASTTypeIdExpression;
-import org.eclipse.cdt.core.dom.ast.IASTUnaryExpression;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTBinaryExpression;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCastExpression;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTLiteralExpression;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTypeIdExpression;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTUnaryExpression;
-import org.eclipse.cdt.core.dom.ast.gnu.cpp.IGPPASTExplicitTemplateInstantiation;
-import org.eclipse.cdt.core.dom.lrparser.CPreprocessorAdapter;
-import org.eclipse.cdt.core.dom.lrparser.IDOMTokenMap;
-import org.eclipse.cdt.core.dom.lrparser.IParser;
-import org.eclipse.cdt.core.dom.lrparser.ITokenCollector;
-import org.eclipse.cdt.core.dom.lrparser.action.ITokenStream;
-import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack;
-import org.eclipse.cdt.core.dom.lrparser.action.gnu.GNUBuildASTParserAction;
-import org.eclipse.cdt.core.dom.lrparser.action.gnu.GPPSecondaryParserFactory;
-import org.eclipse.cdt.core.dom.lrparser.lpgextensions.FixedBacktrackingParser;
-import org.eclipse.cdt.core.dom.parser.IBuiltinBindingsProvider;
-import org.eclipse.cdt.core.index.IIndex;
-import org.eclipse.cdt.core.lrparser.xlc.action.XlcCPPBuildASTParserAction;
-import org.eclipse.cdt.core.parser.IScanner;
-import org.eclipse.cdt.internal.core.lrparser.xlc.ast.XlcCPPNodeFactory;
-
-import lpg.lpgjavaruntime.BadParseException;
-import lpg.lpgjavaruntime.BadParseSymFileException;
-import lpg.lpgjavaruntime.DiagnoseParser;
-import lpg.lpgjavaruntime.ErrorToken;
-import lpg.lpgjavaruntime.IToken;
-import lpg.lpgjavaruntime.LexStream;
-import lpg.lpgjavaruntime.Monitor;
-import lpg.lpgjavaruntime.NotBacktrackParseTableException;
-import lpg.lpgjavaruntime.NullExportedSymbolsException;
-import lpg.lpgjavaruntime.NullTerminalSymbolsException;
-import lpg.lpgjavaruntime.ParseErrorCodes;
-import lpg.lpgjavaruntime.ParseTable;
-import lpg.lpgjavaruntime.PrsStream;
-import lpg.lpgjavaruntime.RuleAction;
-import lpg.lpgjavaruntime.TokenStream;
-import lpg.lpgjavaruntime.UndefinedEofSymbolException;
-import lpg.lpgjavaruntime.UnimplementedTerminalsException;
-
-public class XlcCPPParser extends PrsStream
- implements RuleAction, ITokenStream, ITokenCollector, IParser<IASTTranslationUnit>
-
-{
- private static ParseTable prs = new XlcCPPParserprs();
- private FixedBacktrackingParser btParser;
-
- public FixedBacktrackingParser getParser() {
- return btParser;
- }
-
- private void setResult(Object object) {
- btParser.setSym1(object);
- }
-
- public Object getRhsSym(int i) {
- return btParser.getSym(i);
- }
-
- public int getRhsTokenIndex(int i) {
- return btParser.getToken(i);
- }
-
- public IToken getRhsIToken(int i) {
- return super.getIToken(getRhsTokenIndex(i));
- }
-
- public int getRhsFirstTokenIndex(int i) {
- return btParser.getFirstToken(i);
- }
-
- public IToken getRhsFirstIToken(int i) {
- return super.getIToken(getRhsFirstTokenIndex(i));
- }
-
- public int getRhsLastTokenIndex(int i) {
- return btParser.getLastToken(i);
- }
-
- public IToken getRhsLastIToken(int i) {
- return super.getIToken(getRhsLastTokenIndex(i));
- }
-
- public int getLeftSpan() {
- return btParser.getFirstToken();
- }
-
- @Override
- public IToken getLeftIToken() {
- return super.getIToken(getLeftSpan());
- }
-
- public int getRightSpan() {
- return btParser.getLastToken();
- }
-
- @Override
- public IToken getRightIToken() {
- return super.getIToken(getRightSpan());
- }
-
- public int getRhsErrorTokenIndex(int i) {
- int index = btParser.getToken(i);
- IToken err = super.getIToken(index);
- return (err instanceof ErrorToken ? index : 0);
- }
-
- public ErrorToken getRhsErrorIToken(int i) {
- int index = btParser.getToken(i);
- IToken err = super.getIToken(index);
- return (ErrorToken) (err instanceof ErrorToken ? err : null);
- }
-
- public XlcCPPParser(LexStream lexStream) {
- super(lexStream);
-
- try {
- super.remapTerminalSymbols(orderedTerminalSymbols(), XlcCPPParserprs.EOFT_SYMBOL);
- } catch (NullExportedSymbolsException e) {
- } catch (NullTerminalSymbolsException e) {
- } catch (UnimplementedTerminalsException e) {
- java.util.ArrayList unimplemented_symbols = e.getSymbols();
- System.out.println("The Lexer will not scan the following token(s):");
- for (int i = 0; i < unimplemented_symbols.size(); i++) {
- Integer id = (Integer) unimplemented_symbols.get(i);
- System.out.println(" " + XlcCPPParsersym.orderedTerminalSymbols[id.intValue()]);
- }
- System.out.println();
- } catch (UndefinedEofSymbolException e) {
- throw new Error(new UndefinedEofSymbolException("The Lexer does not implement the Eof symbol "
- + XlcCPPParsersym.orderedTerminalSymbols[XlcCPPParserprs.EOFT_SYMBOL]));
- }
- }
-
- @Override
- public String[] orderedTerminalSymbols() {
- return XlcCPPParsersym.orderedTerminalSymbols;
- }
-
- public String getTokenKindName(int kind) {
- return XlcCPPParsersym.orderedTerminalSymbols[kind];
- }
-
- public int getEOFTokenKind() {
- return XlcCPPParserprs.EOFT_SYMBOL;
- }
-
- public PrsStream getParseStream() {
- return this;
- }
-
- //
- // Report error message for given error_token.
- //
- public final void reportErrorTokenMessage(int error_token, String msg) {
- int firsttok = super.getFirstErrorToken(error_token), lasttok = super.getLastErrorToken(error_token);
- String location = super.getFileName() + ':'
- + (firsttok > lasttok ? (super.getEndLine(lasttok) + ":" + super.getEndColumn(lasttok))
- : (super.getLine(error_token) + ":" + super.getColumn(error_token) + ":"
- + super.getEndLine(error_token) + ":" + super.getEndColumn(error_token)))
- + ": ";
- super.reportError((firsttok > lasttok ? ParseErrorCodes.INSERTION_CODE : ParseErrorCodes.SUBSTITUTION_CODE),
- location, msg);
- }
-
- public void parser() {
- parser(null, 0);
- }
-
- public void parser(Monitor monitor) {
- parser(monitor, 0);
- }
-
- public void parser(int error_repair_count) {
- parser(null, error_repair_count);
- }
-
- public void parser(Monitor monitor, int error_repair_count) {
- try {
- btParser = new FixedBacktrackingParser(monitor, this, prs, this);
- } catch (NotBacktrackParseTableException e) {
- throw new Error(
- new NotBacktrackParseTableException("Regenerate XlcCPPParserprs.java with -BACKTRACK option"));
- } catch (BadParseSymFileException e) {
- throw new Error(new BadParseSymFileException("Bad Parser Symbol File -- XlcCPPParsersym.java"));
- }
-
- try {
- btParser.parse(error_repair_count);
- } catch (BadParseException e) {
- reset(e.error_token); // point to error token
- DiagnoseParser diagnoseParser = new DiagnoseParser(this, prs);
- diagnoseParser.diagnose(e.error_token);
- }
- }
-
- private XlcCPPBuildASTParserAction action;
- private IASTCompletionNode compNode;
-
- public XlcCPPParser(IScanner scanner, IDOMTokenMap tokenMap, IBuiltinBindingsProvider builtinBindingsProvider,
- IIndex index, Map<String, String> properties) {
- initActions(properties);
- action.initializeTranslationUnit(scanner, builtinBindingsProvider, index);
- CPreprocessorAdapter.runCPreprocessor(scanner, this, tokenMap);
- }
-
- private void initActions(Map<String, String> properties) {
- ScopedStack<Object> astStack = new ScopedStack<>();
-
- action = new XlcCPPBuildASTParserAction(this, astStack, XlcCPPNodeFactory.getDefault(),
- GPPSecondaryParserFactory.getDefault());
- action.setParserProperties(properties);
-
- gnuAction = new GNUBuildASTParserAction(this, astStack, XlcCPPNodeFactory.getDefault());
- gnuAction.setParserProperties(properties);
-
- }
-
- @Override
- public void addToken(IToken token) {
- token.setKind(mapKind(token.getKind())); // TODO does mapKind need to be called?
- super.addToken(token);
- }
-
- @Override
- public IASTTranslationUnit parse() {
- // this has to be done, or... kaboom!
- setStreamLength(getSize());
-
- final int errorRepairCount = -1; // -1 means full error handling
- parser(null, errorRepairCount); // do the actual parse
- super.resetTokenStream(); // allow tokens to be garbage collected
-
- compNode = action.getASTCompletionNode(); // the completion node may be null
- return (IASTTranslationUnit) action.getParseResult();
- }
-
- @Override
- public IASTCompletionNode getCompletionNode() {
- return compNode;
- }
-
- // uncomment this method to use with backtracking parser
- @Override
- public List<IToken> getRuleTokens() {
- return getTokens().subList(getLeftSpan(), getRightSpan() + 1);
- }
-
- @Override
- public String[] getOrderedTerminalSymbols() {
- return XlcCPPParsersym.orderedTerminalSymbols;
- }
-
- @Override
- @SuppressWarnings("nls")
- public String getName() {
- return "XlcCPPParser";
- }
-
- private GNUBuildASTParserAction gnuAction;
-
- @Override
- public void ruleAction(int ruleNumber) {
- switch (ruleNumber) {
-
- //
- // Rule 1: <openscope-ast> ::= $Empty
- //
- case 1: {
- action.openASTScope();
- break;
- }
-
- //
- // Rule 2: <empty> ::= $Empty
- //
- case 2: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 13: translation_unit ::= declaration_seq_opt
- //
- case 13: {
- action.consumeTranslationUnit();
- break;
- }
-
- //
- // Rule 16: literal ::= integer
- //
- case 16: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_integer_constant);
- break;
- }
-
- //
- // Rule 17: literal ::= floating
- //
- case 17: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_float_constant);
- break;
- }
-
- //
- // Rule 18: literal ::= charconst
- //
- case 18: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_char_constant);
- break;
- }
-
- //
- // Rule 19: literal ::= stringlit
- //
- case 19: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_string_literal);
- break;
- }
-
- //
- // Rule 20: literal ::= true
- //
- case 20: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_true);
- break;
- }
-
- //
- // Rule 21: literal ::= false
- //
- case 21: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_false);
- break;
- }
-
- //
- // Rule 22: literal ::= this
- //
- case 22: {
- action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_this);
- break;
- }
-
- //
- // Rule 24: primary_expression ::= ( expression )
- //
- case 24: {
- action.consumeExpressionBracketed();
- break;
- }
-
- //
- // Rule 26: id_expression ::= qualified_or_unqualified_name
- //
- case 26: {
- action.consumeExpressionName();
- break;
- }
-
- //
- // Rule 33: unqualified_id_name ::= ~ identifier_token
- //
- case 33: {
- action.consumeDestructorName();
- break;
- }
-
- //
- // Rule 34: unqualified_id_name ::= ~ template_id_name
- //
- case 34: {
- action.consumeDestructorNameTemplateId();
- break;
- }
-
- //
- // Rule 35: identifier_name ::= identifier_token
- //
- case 35: {
- action.consumeIdentifierName();
- break;
- }
-
- //
- // Rule 36: template_opt ::= template
- //
- case 36: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 37: template_opt ::= $Empty
- //
- case 37: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 38: dcolon_opt ::= ::
- //
- case 38: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 39: dcolon_opt ::= $Empty
- //
- case 39: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 40: qualified_id_name ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name
- //
- case 40: {
- action.consumeQualifiedId(true);
- break;
- }
-
- //
- // Rule 41: qualified_id_name ::= :: unqualified_id_name
- //
- case 41: {
- action.consumeGlobalQualifiedId();
- break;
- }
-
- //
- // Rule 42: nested_name_specifier ::= class_or_namespace_name :: nested_name_specifier_with_template
- //
- case 42: {
- action.consumeNestedNameSpecifier(true);
- break;
- }
-
- //
- // Rule 43: nested_name_specifier ::= class_or_namespace_name ::
- //
- case 43: {
- action.consumeNestedNameSpecifier(false);
- break;
- }
-
- //
- // Rule 44: nested_name_specifier_with_template ::= class_or_namespace_name_with_template :: nested_name_specifier_with_template
- //
- case 44: {
- action.consumeNestedNameSpecifier(true);
- break;
- }
-
- //
- // Rule 45: nested_name_specifier_with_template ::= class_or_namespace_name_with_template ::
- //
- case 45: {
- action.consumeNestedNameSpecifier(false);
- break;
- }
-
- //
- // Rule 46: class_or_namespace_name_with_template ::= template_opt class_or_namespace_name
- //
- case 46: {
- action.consumeNameWithTemplateKeyword();
- break;
- }
-
- //
- // Rule 48: nested_name_specifier_opt ::= $Empty
- //
- case 48: {
- action.consumeNestedNameSpecifierEmpty();
- break;
- }
-
- //
- // Rule 51: postfix_expression ::= postfix_expression [ expression ]
- //
- case 51: {
- action.consumeExpressionArraySubscript();
- break;
- }
-
- //
- // Rule 52: postfix_expression ::= postfix_expression ( expression_list_opt )
- //
- case 52: {
- action.consumeExpressionFunctionCall();
- break;
- }
-
- //
- // Rule 53: postfix_expression ::= simple_type_specifier ( expression_list_opt )
- //
- case 53: {
- action.consumeExpressionSimpleTypeConstructor();
- break;
- }
-
- //
- // Rule 54: postfix_expression ::= typename dcolon_opt nested_name_specifier <empty> identifier_name ( expression_list_opt )
- //
- case 54: {
- action.consumeExpressionTypeName();
- break;
- }
-
- //
- // Rule 55: postfix_expression ::= typename dcolon_opt nested_name_specifier template_opt template_id_name ( expression_list_opt )
- //
- case 55: {
- action.consumeExpressionTypeName();
- break;
- }
-
- //
- // Rule 56: postfix_expression ::= postfix_expression . qualified_or_unqualified_name
- //
- case 56: {
- action.consumeExpressionFieldReference(false, false);
- break;
- }
-
- //
- // Rule 57: postfix_expression ::= postfix_expression -> qualified_or_unqualified_name
- //
- case 57: {
- action.consumeExpressionFieldReference(true, false);
- break;
- }
-
- //
- // Rule 58: postfix_expression ::= postfix_expression . template qualified_or_unqualified_name
- //
- case 58: {
- action.consumeExpressionFieldReference(false, true);
- break;
- }
-
- //
- // Rule 59: postfix_expression ::= postfix_expression -> template qualified_or_unqualified_name
- //
- case 59: {
- action.consumeExpressionFieldReference(true, true);
- break;
- }
-
- //
- // Rule 60: postfix_expression ::= postfix_expression . pseudo_destructor_name
- //
- case 60: {
- action.consumeExpressionFieldReference(false, false);
- break;
- }
-
- //
- // Rule 61: postfix_expression ::= postfix_expression -> pseudo_destructor_name
- //
- case 61: {
- action.consumeExpressionFieldReference(true, false);
- break;
- }
-
- //
- // Rule 62: postfix_expression ::= postfix_expression ++
- //
- case 62: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixIncr);
- break;
- }
-
- //
- // Rule 63: postfix_expression ::= postfix_expression --
- //
- case 63: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixDecr);
- break;
- }
-
- //
- // Rule 64: postfix_expression ::= dynamic_cast < type_id > ( expression )
- //
- case 64: {
- action.consumeExpressionCast(ICPPASTCastExpression.op_dynamic_cast);
- break;
- }
-
- //
- // Rule 65: postfix_expression ::= static_cast < type_id > ( expression )
- //
- case 65: {
- action.consumeExpressionCast(ICPPASTCastExpression.op_static_cast);
- break;
- }
-
- //
- // Rule 66: postfix_expression ::= reinterpret_cast < type_id > ( expression )
- //
- case 66: {
- action.consumeExpressionCast(ICPPASTCastExpression.op_reinterpret_cast);
- break;
- }
-
- //
- // Rule 67: postfix_expression ::= const_cast < type_id > ( expression )
- //
- case 67: {
- action.consumeExpressionCast(ICPPASTCastExpression.op_const_cast);
- break;
- }
-
- //
- // Rule 68: postfix_expression ::= typeid ( expression )
- //
- case 68: {
- action.consumeExpressionUnaryOperator(ICPPASTUnaryExpression.op_typeid);
- break;
- }
-
- //
- // Rule 69: postfix_expression ::= typeid ( type_id )
- //
- case 69: {
- action.consumeExpressionTypeId(ICPPASTTypeIdExpression.op_typeid);
- break;
- }
-
- //
- // Rule 70: pseudo_destructor_name ::= dcolon_opt nested_name_specifier_opt type_name :: destructor_type_name
- //
- case 70: {
- action.consumePsudoDestructorName(true);
- break;
- }
-
- //
- // Rule 71: pseudo_destructor_name ::= dcolon_opt nested_name_specifier template template_id_name :: destructor_type_name
- //
- case 71: {
- action.consumePsudoDestructorName(true);
- break;
- }
-
- //
- // Rule 72: pseudo_destructor_name ::= dcolon_opt nested_name_specifier_opt destructor_type_name
- //
- case 72: {
- action.consumePsudoDestructorName(false);
- break;
- }
-
- //
- // Rule 73: destructor_type_name ::= ~ identifier_token
- //
- case 73: {
- action.consumeDestructorName();
- break;
- }
-
- //
- // Rule 74: destructor_type_name ::= ~ template_id_name
- //
- case 74: {
- action.consumeDestructorNameTemplateId();
- break;
- }
-
- //
- // Rule 78: unary_expression ::= ++ cast_expression
- //
- case 78: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixIncr);
- break;
- }
-
- //
- // Rule 79: unary_expression ::= -- cast_expression
- //
- case 79: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixDecr);
- break;
- }
-
- //
- // Rule 80: unary_expression ::= & cast_expression
- //
- case 80: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_amper);
- break;
- }
-
- //
- // Rule 81: unary_expression ::= * cast_expression
- //
- case 81: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_star);
- break;
- }
-
- //
- // Rule 82: unary_expression ::= + cast_expression
- //
- case 82: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_plus);
- break;
- }
-
- //
- // Rule 83: unary_expression ::= - cast_expression
- //
- case 83: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_minus);
- break;
- }
-
- //
- // Rule 84: unary_expression ::= ~ cast_expression
- //
- case 84: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_tilde);
- break;
- }
-
- //
- // Rule 85: unary_expression ::= ! cast_expression
- //
- case 85: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_not);
- break;
- }
-
- //
- // Rule 86: unary_expression ::= sizeof unary_expression
- //
- case 86: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_sizeof);
- break;
- }
-
- //
- // Rule 87: unary_expression ::= sizeof ( type_id )
- //
- case 87: {
- action.consumeExpressionTypeId(ICPPASTTypeIdExpression.op_sizeof);
- break;
- }
-
- //
- // Rule 88: new_expression ::= dcolon_opt new new_placement_opt new_type_id <openscope-ast> new_array_expressions_opt new_initializer_opt
- //
- case 88: {
- action.consumeExpressionNew(true);
- break;
- }
-
- //
- // Rule 89: new_expression ::= dcolon_opt new new_placement_opt ( type_id ) <openscope-ast> new_array_expressions_opt new_initializer_opt
- //
- case 89: {
- action.consumeExpressionNew(false);
- break;
- }
-
- //
- // Rule 91: new_placement_opt ::= $Empty
- //
- case 91: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 92: new_type_id ::= type_specifier_seq
- //
- case 92: {
- action.consumeTypeId(false);
- break;
- }
-
- //
- // Rule 93: new_type_id ::= type_specifier_seq new_declarator
- //
- case 93: {
- action.consumeTypeId(true);
- break;
- }
-
- //
- // Rule 94: new_declarator ::= <openscope-ast> new_pointer_operators
- //
- case 94: {
- action.consumeNewDeclarator();
- break;
- }
-
- //
- // Rule 101: new_initializer ::= ( expression_list_opt )
- //
- case 101: {
- action.consumeNewInitializer();
- break;
- }
-
- //
- // Rule 103: new_initializer_opt ::= $Empty
- //
- case 103: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 104: delete_expression ::= dcolon_opt delete cast_expression
- //
- case 104: {
- action.consumeExpressionDelete(false);
- break;
- }
-
- //
- // Rule 105: delete_expression ::= dcolon_opt delete [ ] cast_expression
- //
- case 105: {
- action.consumeExpressionDelete(true);
- break;
- }
-
- //
- // Rule 107: cast_expression ::= ( type_id ) cast_expression
- //
- case 107: {
- action.consumeExpressionCast(ICPPASTCastExpression.op_cast);
- break;
- }
-
- //
- // Rule 109: pm_expression ::= pm_expression .* cast_expression
- //
- case 109: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_pmdot);
- break;
- }
-
- //
- // Rule 110: pm_expression ::= pm_expression ->* cast_expression
- //
- case 110: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_pmarrow);
- break;
- }
-
- //
- // Rule 112: multiplicative_expression ::= multiplicative_expression * pm_expression
- //
- case 112: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_multiply);
- break;
- }
-
- //
- // Rule 113: multiplicative_expression ::= multiplicative_expression / pm_expression
- //
- case 113: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_divide);
- break;
- }
-
- //
- // Rule 114: multiplicative_expression ::= multiplicative_expression % pm_expression
- //
- case 114: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_modulo);
- break;
- }
-
- //
- // Rule 116: additive_expression ::= additive_expression + multiplicative_expression
- //
- case 116: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_plus);
- break;
- }
-
- //
- // Rule 117: additive_expression ::= additive_expression - multiplicative_expression
- //
- case 117: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_minus);
- break;
- }
-
- //
- // Rule 119: shift_expression ::= shift_expression << additive_expression
- //
- case 119: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftLeft);
- break;
- }
-
- //
- // Rule 120: shift_expression ::= shift_expression >> additive_expression
- //
- case 120: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftRight);
- break;
- }
-
- //
- // Rule 122: relational_expression ::= relational_expression < shift_expression
- //
- case 122: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessThan);
- break;
- }
-
- //
- // Rule 123: relational_expression ::= relational_expression > shift_expression
- //
- case 123: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterThan);
- break;
- }
-
- //
- // Rule 124: relational_expression ::= relational_expression <= shift_expression
- //
- case 124: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessEqual);
- break;
- }
-
- //
- // Rule 125: relational_expression ::= relational_expression >= shift_expression
- //
- case 125: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterEqual);
- break;
- }
-
- //
- // Rule 127: equality_expression ::= equality_expression == relational_expression
- //
- case 127: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_equals);
- break;
- }
-
- //
- // Rule 128: equality_expression ::= equality_expression != relational_expression
- //
- case 128: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_notequals);
- break;
- }
-
- //
- // Rule 130: and_expression ::= and_expression & equality_expression
- //
- case 130: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAnd);
- break;
- }
-
- //
- // Rule 132: exclusive_or_expression ::= exclusive_or_expression ^ and_expression
- //
- case 132: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXor);
- break;
- }
-
- //
- // Rule 134: inclusive_or_expression ::= inclusive_or_expression | exclusive_or_expression
- //
- case 134: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOr);
- break;
- }
-
- //
- // Rule 136: logical_and_expression ::= logical_and_expression && inclusive_or_expression
- //
- case 136: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalAnd);
- break;
- }
-
- //
- // Rule 138: logical_or_expression ::= logical_or_expression || logical_and_expression
- //
- case 138: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalOr);
- break;
- }
-
- //
- // Rule 140: conditional_expression ::= logical_or_expression ? expression : assignment_expression
- //
- case 140: {
- action.consumeExpressionConditional();
- break;
- }
-
- //
- // Rule 142: relational_expression_inTemplate ::= relational_expression_inTemplate < shift_expression
- //
- case 142: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessThan);
- break;
- }
-
- //
- // Rule 143: relational_expression_inTemplate ::= ( relational_expression_inTemplate > shift_expression )
- //
- case 143: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterThan);
- break;
- }
-
- //
- // Rule 144: relational_expression_inTemplate ::= relational_expression_inTemplate <= shift_expression
- //
- case 144: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessEqual);
- break;
- }
-
- //
- // Rule 145: relational_expression_inTemplate ::= relational_expression_inTemplate >= shift_expression
- //
- case 145: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterEqual);
- break;
- }
-
- //
- // Rule 147: equality_expression_inTemplate ::= equality_expression_inTemplate == relational_expression_inTemplate
- //
- case 147: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_equals);
- break;
- }
-
- //
- // Rule 148: equality_expression_inTemplate ::= equality_expression_inTemplate != relational_expression_inTemplate
- //
- case 148: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_notequals);
- break;
- }
-
- //
- // Rule 150: and_expression_inTemplate ::= and_expression_inTemplate & equality_expression_inTemplate
- //
- case 150: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAnd);
- break;
- }
-
- //
- // Rule 152: exclusive_or_expression_inTemplate ::= exclusive_or_expression_inTemplate ^ and_expression_inTemplate
- //
- case 152: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXor);
- break;
- }
-
- //
- // Rule 154: inclusive_or_expression_inTemplate ::= inclusive_or_expression_inTemplate | exclusive_or_expression_inTemplate
- //
- case 154: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOr);
- break;
- }
-
- //
- // Rule 156: logical_and_expression_inTemplate ::= logical_and_expression_inTemplate && inclusive_or_expression_inTemplate
- //
- case 156: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalAnd);
- break;
- }
-
- //
- // Rule 158: logical_or_expression_inTemplate ::= logical_or_expression_inTemplate || logical_and_expression_inTemplate
- //
- case 158: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalOr);
- break;
- }
-
- //
- // Rule 160: conditional_expression_inTemplate ::= logical_or_expression_inTemplate ? expression : assignment_expression_inTemplate
- //
- case 160: {
- action.consumeExpressionConditional();
- break;
- }
-
- //
- // Rule 163: assignment_expression_inTemplate ::= logical_or_expression_inTemplate = assignment_expression_inTemplate
- //
- case 163: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_assign);
- break;
- }
-
- //
- // Rule 164: assignment_expression_inTemplate ::= logical_or_expression_inTemplate *= assignment_expression_inTemplate
- //
- case 164: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_multiplyAssign);
- break;
- }
-
- //
- // Rule 165: assignment_expression_inTemplate ::= logical_or_expression_inTemplate /= assignment_expression_inTemplate
- //
- case 165: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_divideAssign);
- break;
- }
-
- //
- // Rule 166: assignment_expression_inTemplate ::= logical_or_expression_inTemplate %= assignment_expression_inTemplate
- //
- case 166: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_moduloAssign);
- break;
- }
-
- //
- // Rule 167: assignment_expression_inTemplate ::= logical_or_expression_inTemplate += assignment_expression_inTemplate
- //
- case 167: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_plusAssign);
- break;
- }
-
- //
- // Rule 168: assignment_expression_inTemplate ::= logical_or_expression_inTemplate -= assignment_expression_inTemplate
- //
- case 168: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_minusAssign);
- break;
- }
-
- //
- // Rule 169: assignment_expression_inTemplate ::= logical_or_expression_inTemplate >>= assignment_expression_inTemplate
- //
- case 169: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftRightAssign);
- break;
- }
-
- //
- // Rule 170: assignment_expression_inTemplate ::= logical_or_expression_inTemplate <<= assignment_expression_inTemplate
- //
- case 170: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftLeftAssign);
- break;
- }
-
- //
- // Rule 171: assignment_expression_inTemplate ::= logical_or_expression_inTemplate &= assignment_expression_inTemplate
- //
- case 171: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAndAssign);
- break;
- }
-
- //
- // Rule 172: assignment_expression_inTemplate ::= logical_or_expression_inTemplate ^= assignment_expression_inTemplate
- //
- case 172: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXorAssign);
- break;
- }
-
- //
- // Rule 173: assignment_expression_inTemplate ::= logical_or_expression_inTemplate |= assignment_expression_inTemplate
- //
- case 173: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOrAssign);
- break;
- }
-
- //
- // Rule 174: throw_expression ::= throw
- //
- case 174: {
- action.consumeExpressionThrow(false);
- break;
- }
-
- //
- // Rule 175: throw_expression ::= throw assignment_expression
- //
- case 175: {
- action.consumeExpressionThrow(true);
- break;
- }
-
- //
- // Rule 178: assignment_expression ::= logical_or_expression = assignment_expression
- //
- case 178: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_assign);
- break;
- }
-
- //
- // Rule 179: assignment_expression ::= logical_or_expression *= assignment_expression
- //
- case 179: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_multiplyAssign);
- break;
- }
-
- //
- // Rule 180: assignment_expression ::= logical_or_expression /= assignment_expression
- //
- case 180: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_divideAssign);
- break;
- }
-
- //
- // Rule 181: assignment_expression ::= logical_or_expression %= assignment_expression
- //
- case 181: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_moduloAssign);
- break;
- }
-
- //
- // Rule 182: assignment_expression ::= logical_or_expression += assignment_expression
- //
- case 182: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_plusAssign);
- break;
- }
-
- //
- // Rule 183: assignment_expression ::= logical_or_expression -= assignment_expression
- //
- case 183: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_minusAssign);
- break;
- }
-
- //
- // Rule 184: assignment_expression ::= logical_or_expression >>= assignment_expression
- //
- case 184: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftRightAssign);
- break;
- }
-
- //
- // Rule 185: assignment_expression ::= logical_or_expression <<= assignment_expression
- //
- case 185: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftLeftAssign);
- break;
- }
-
- //
- // Rule 186: assignment_expression ::= logical_or_expression &= assignment_expression
- //
- case 186: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAndAssign);
- break;
- }
-
- //
- // Rule 187: assignment_expression ::= logical_or_expression ^= assignment_expression
- //
- case 187: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXorAssign);
- break;
- }
-
- //
- // Rule 188: assignment_expression ::= logical_or_expression |= assignment_expression
- //
- case 188: {
- action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOrAssign);
- break;
- }
-
- //
- // Rule 190: expression_list ::= <openscope-ast> expression_list_actual
- //
- case 190: {
- action.consumeExpressionList();
- break;
- }
-
- //
- // Rule 194: expression_list_opt ::= $Empty
- //
- case 194: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 196: expression_opt ::= $Empty
- //
- case 196: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 199: constant_expression_opt ::= $Empty
- //
- case 199: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 208: statement ::= ERROR_TOKEN
- //
- case 208: {
- action.consumeStatementProblem();
- break;
- }
-
- //
- // Rule 209: labeled_statement ::= identifier : statement
- //
- case 209: {
- action.consumeStatementLabeled();
- break;
- }
-
- //
- // Rule 210: labeled_statement ::= case constant_expression : statement
- //
- case 210: {
- action.consumeStatementCase();
- break;
- }
-
- //
- // Rule 211: labeled_statement ::= default : statement
- //
- case 211: {
- action.consumeStatementDefault();
- break;
- }
-
- //
- // Rule 212: expression_statement ::= expression ;
- //
- case 212: {
- action.consumeStatementExpression();
- break;
- }
-
- //
- // Rule 213: expression_statement ::= ;
- //
- case 213: {
- action.consumeStatementNull();
- break;
- }
-
- //
- // Rule 214: compound_statement ::= { <openscope-ast> statement_seq }
- //
- case 214: {
- action.consumeStatementCompoundStatement(true);
- break;
- }
-
- //
- // Rule 215: compound_statement ::= { }
- //
- case 215: {
- action.consumeStatementCompoundStatement(false);
- break;
- }
-
- //
- // Rule 218: selection_statement ::= if ( condition ) statement
- //
- case 218: {
- action.consumeStatementIf(false);
- break;
- }
-
- //
- // Rule 219: selection_statement ::= if ( condition ) statement else statement
- //
- case 219: {
- action.consumeStatementIf(true);
- break;
- }
-
- //
- // Rule 220: selection_statement ::= switch ( condition ) statement
- //
- case 220: {
- action.consumeStatementSwitch();
- break;
- }
-
- //
- // Rule 222: condition ::= type_specifier_seq declarator = assignment_expression
- //
- case 222: {
- action.consumeConditionDeclaration();
- break;
- }
-
- //
- // Rule 224: condition_opt ::= $Empty
- //
- case 224: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 225: iteration_statement ::= while ( condition ) statement
- //
- case 225: {
- action.consumeStatementWhileLoop();
- break;
- }
-
- //
- // Rule 226: iteration_statement ::= do statement while ( expression ) ;
- //
- case 226: {
- action.consumeStatementDoLoop(true);
- break;
- }
-
- //
- // Rule 227: iteration_statement ::= do statement
- //
- case 227: {
- action.consumeStatementDoLoop(false);
- break;
- }
-
- //
- // Rule 228: iteration_statement ::= for ( for_init_statement condition_opt ; expression_opt ) statement
- //
- case 228: {
- action.consumeStatementForLoop();
- break;
- }
-
- //
- // Rule 230: for_init_statement ::= simple_declaration_with_declspec
- //
- case 230: {
- action.consumeStatementDeclaration();
- break;
- }
-
- //
- // Rule 231: jump_statement ::= break ;
- //
- case 231: {
- action.consumeStatementBreak();
- break;
- }
-
- //
- // Rule 232: jump_statement ::= continue ;
- //
- case 232: {
- action.consumeStatementContinue();
- break;
- }
-
- //
- // Rule 233: jump_statement ::= return expression ;
- //
- case 233: {
- action.consumeStatementReturn(true);
- break;
- }
-
- //
- // Rule 234: jump_statement ::= return ;
- //
- case 234: {
- action.consumeStatementReturn(false);
- break;
- }
-
- //
- // Rule 235: jump_statement ::= goto identifier_token ;
- //
- case 235: {
- action.consumeStatementGoto();
- break;
- }
-
- //
- // Rule 236: declaration_statement ::= block_declaration
- //
- case 236: {
- action.consumeStatementDeclarationWithDisambiguation();
- break;
- }
-
- //
- // Rule 237: declaration_statement ::= function_definition
- //
- case 237: {
- action.consumeStatementDeclaration();
- break;
- }
-
- //
- // Rule 245: declaration ::= ERROR_TOKEN
- //
- case 245: {
- action.consumeDeclarationProblem();
- break;
- }
-
- //
- // Rule 255: simple_declaration ::= declaration_specifiers_opt <openscope-ast> init_declarator_list_opt ;
- //
- case 255: {
- action.consumeDeclarationSimple(true);
- break;
- }
-
- //
- // Rule 256: simple_declaration_with_declspec ::= declaration_specifiers <openscope-ast> init_declarator_list_opt ;
- //
- case 256: {
- action.consumeDeclarationSimple(true);
- break;
- }
-
- //
- // Rule 257: declaration_specifiers ::= <openscope-ast> simple_declaration_specifiers
- //
- case 257: {
- action.consumeDeclarationSpecifiersSimple();
- break;
- }
-
- //
- // Rule 258: declaration_specifiers ::= <openscope-ast> class_declaration_specifiers
- //
- case 258: {
- action.consumeDeclarationSpecifiersComposite();
- break;
- }
-
- //
- // Rule 259: declaration_specifiers ::= <openscope-ast> elaborated_declaration_specifiers
- //
- case 259: {
- action.consumeDeclarationSpecifiersComposite();
- break;
- }
-
- //
- // Rule 260: declaration_specifiers ::= <openscope-ast> enum_declaration_specifiers
- //
- case 260: {
- action.consumeDeclarationSpecifiersComposite();
- break;
- }
-
- //
- // Rule 261: declaration_specifiers ::= <openscope-ast> type_name_declaration_specifiers
- //
- case 261: {
- action.consumeDeclarationSpecifiersTypeName();
- break;
- }
-
- //
- // Rule 263: declaration_specifiers_opt ::= $Empty
- //
- case 263: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 267: no_type_declaration_specifier ::= friend
- //
- case 267: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 268: no_type_declaration_specifier ::= typedef
- //
- case 268: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 288: storage_class_specifier ::= auto
- //
- case 288: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 289: storage_class_specifier ::= register
- //
- case 289: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 290: storage_class_specifier ::= static
- //
- case 290: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 291: storage_class_specifier ::= extern
- //
- case 291: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 292: storage_class_specifier ::= mutable
- //
- case 292: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 293: function_specifier ::= inline
- //
- case 293: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 294: function_specifier ::= virtual
- //
- case 294: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 295: function_specifier ::= explicit
- //
- case 295: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 296: simple_type_specifier ::= simple_type_specifier_token
- //
- case 296: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 310: type_name_specifier ::= dcolon_opt nested_name_specifier_opt type_name
- //
- case 310: {
- action.consumeQualifiedId(false);
- break;
- }
-
- //
- // Rule 311: type_name_specifier ::= dcolon_opt nested_name_specifier template template_id_name
- //
- case 311: {
- action.consumeQualifiedId(false);
- break;
- }
-
- //
- // Rule 312: type_name_specifier ::= typename dcolon_opt nested_name_specifier identifier_name
- //
- case 312: {
- action.consumeQualifiedId(false);
- break;
- }
-
- //
- // Rule 313: type_name_specifier ::= typename dcolon_opt nested_name_specifier template_opt template_id_name
- //
- case 313: {
- action.consumeQualifiedId(true);
- break;
- }
-
- //
- // Rule 315: elaborated_type_specifier ::= class_keyword elaborated_specifier_hook dcolon_opt nested_name_specifier_opt identifier_name
- //
- case 315: {
- action.consumeTypeSpecifierElaborated(false);
- break;
- }
-
- //
- // Rule 316: elaborated_type_specifier ::= class_keyword elaborated_specifier_hook dcolon_opt nested_name_specifier_opt template_opt template_id_name
- //
- case 316: {
- action.consumeTypeSpecifierElaborated(true);
- break;
- }
-
- //
- // Rule 317: elaborated_type_specifier ::= enum elaborated_specifier_hook dcolon_opt nested_name_specifier_opt identifier_name
- //
- case 317: {
- action.consumeTypeSpecifierElaborated(false);
- break;
- }
-
- //
- // Rule 321: enum_specifier ::= enum enum_specifier_hook { <openscope-ast> enumerator_list_opt comma_opt }
- //
- case 321: {
- action.consumeTypeSpecifierEnumeration(false);
- break;
- }
-
- //
- // Rule 322: enum_specifier ::= enum enum_specifier_hook identifier_token { <openscope-ast> enumerator_list_opt comma_opt }
- //
- case 322: {
- action.consumeTypeSpecifierEnumeration(true);
- break;
- }
-
- //
- // Rule 328: enumerator_definition ::= identifier_token
- //
- case 328: {
- action.consumeEnumerator(false);
- break;
- }
-
- //
- // Rule 329: enumerator_definition ::= identifier_token = constant_expression
- //
- case 329: {
- action.consumeEnumerator(true);
- break;
- }
-
- //
- // Rule 331: namespace_definition ::= namespace namespace_name namespace_definition_hook { <openscope-ast> declaration_seq_opt }
- //
- case 331: {
- action.consumeNamespaceDefinition(true);
- break;
- }
-
- //
- // Rule 332: namespace_definition ::= namespace namespace_definition_hook { <openscope-ast> declaration_seq_opt }
- //
- case 332: {
- action.consumeNamespaceDefinition(false);
- break;
- }
-
- //
- // Rule 334: namespace_alias_definition ::= namespace identifier_token = dcolon_opt nested_name_specifier_opt namespace_name ;
- //
- case 334: {
- action.consumeNamespaceAliasDefinition();
- break;
- }
-
- //
- // Rule 335: using_declaration ::= using typename_opt dcolon_opt nested_name_specifier_opt unqualified_id_name ;
- //
- case 335: {
- action.consumeUsingDeclaration();
- break;
- }
-
- //
- // Rule 336: typename_opt ::= typename
- //
- case 336: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 337: typename_opt ::= $Empty
- //
- case 337: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 338: using_directive ::= using namespace dcolon_opt nested_name_specifier_opt namespace_name ;
- //
- case 338: {
- action.consumeUsingDirective();
- break;
- }
-
- //
- // Rule 339: linkage_specification ::= extern stringlit { <openscope-ast> declaration_seq_opt }
- //
- case 339: {
- action.consumeLinkageSpecification();
- break;
- }
-
- //
- // Rule 340: linkage_specification ::= extern stringlit <openscope-ast> declaration
- //
- case 340: {
- action.consumeLinkageSpecification();
- break;
- }
-
- //
- // Rule 345: init_declarator_complete ::= init_declarator
- //
- case 345: {
- action.consumeInitDeclaratorComplete();
- break;
- }
-
- //
- // Rule 347: init_declarator ::= complete_declarator initializer
- //
- case 347: {
- action.consumeDeclaratorWithInitializer(true);
- break;
- }
-
- //
- // Rule 350: declarator ::= <openscope-ast> ptr_operator_seq direct_declarator
- //
- case 350: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 352: function_declarator ::= <openscope-ast> ptr_operator_seq direct_declarator
- //
- case 352: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 356: basic_direct_declarator ::= declarator_id_name
- //
- case 356: {
- action.consumeDirectDeclaratorIdentifier();
- break;
- }
-
- //
- // Rule 357: basic_direct_declarator ::= ( declarator )
- //
- case 357: {
- action.consumeDirectDeclaratorBracketed();
- break;
- }
-
- //
- // Rule 358: function_direct_declarator ::= basic_direct_declarator ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
- //
- case 358: {
- action.consumeDirectDeclaratorFunctionDeclarator(true);
- break;
- }
-
- //
- // Rule 359: array_direct_declarator ::= array_direct_declarator array_modifier
- //
- case 359: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 360: array_direct_declarator ::= basic_direct_declarator array_modifier
- //
- case 360: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 361: array_modifier ::= [ constant_expression ]
- //
- case 361: {
- action.consumeDirectDeclaratorArrayModifier(true);
- break;
- }
-
- //
- // Rule 362: array_modifier ::= [ ]
- //
- case 362: {
- action.consumeDirectDeclaratorArrayModifier(false);
- break;
- }
-
- //
- // Rule 363: ptr_operator ::= pointer_hook * pointer_hook <openscope-ast> cv_qualifier_seq_opt
- //
- case 363: {
- action.consumePointer();
- break;
- }
-
- //
- // Rule 364: ptr_operator ::= pointer_hook & pointer_hook
- //
- case 364: {
- action.consumeReferenceOperator();
- break;
- }
-
- //
- // Rule 365: ptr_operator ::= dcolon_opt nested_name_specifier pointer_hook * pointer_hook <openscope-ast> cv_qualifier_seq_opt
- //
- case 365: {
- action.consumePointerToMember();
- break;
- }
-
- //
- // Rule 372: cv_qualifier ::= const
- //
- case 372: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 373: cv_qualifier ::= volatile
- //
- case 373: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 375: declarator_id_name ::= dcolon_opt nested_name_specifier_opt type_name
- //
- case 375: {
- action.consumeQualifiedId(false);
- break;
- }
-
- //
- // Rule 376: type_id ::= type_specifier_seq
- //
- case 376: {
- action.consumeTypeId(false);
- break;
- }
-
- //
- // Rule 377: type_id ::= type_specifier_seq abstract_declarator
- //
- case 377: {
- action.consumeTypeId(true);
- break;
- }
-
- //
- // Rule 380: abstract_declarator ::= <openscope-ast> ptr_operator_seq
- //
- case 380: {
- action.consumeDeclaratorWithPointer(false);
- break;
- }
-
- //
- // Rule 381: abstract_declarator ::= <openscope-ast> ptr_operator_seq direct_abstract_declarator
- //
- case 381: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 385: basic_direct_abstract_declarator ::= ( abstract_declarator )
- //
- case 385: {
- action.consumeDirectDeclaratorBracketed();
- break;
- }
-
- //
- // Rule 386: basic_direct_abstract_declarator ::= ( )
- //
- case 386: {
- action.consumeAbstractDeclaratorEmpty();
- break;
- }
-
- //
- // Rule 387: array_direct_abstract_declarator ::= array_modifier
- //
- case 387: {
- action.consumeDirectDeclaratorArrayDeclarator(false);
- break;
- }
-
- //
- // Rule 388: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier
- //
- case 388: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 389: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier
- //
- case 389: {
- action.consumeDirectDeclaratorArrayDeclarator(true);
- break;
- }
-
- //
- // Rule 390: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
- //
- case 390: {
- action.consumeDirectDeclaratorFunctionDeclarator(true);
- break;
- }
-
- //
- // Rule 391: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
- //
- case 391: {
- action.consumeDirectDeclaratorFunctionDeclarator(false);
- break;
- }
-
- //
- // Rule 392: parameter_declaration_clause ::= parameter_declaration_list_opt ...
- //
- case 392: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 393: parameter_declaration_clause ::= parameter_declaration_list_opt
- //
- case 393: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 394: parameter_declaration_clause ::= parameter_declaration_list , ...
- //
- case 394: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 400: abstract_declarator_opt ::= $Empty
- //
- case 400: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 401: parameter_declaration ::= declaration_specifiers parameter_init_declarator
- //
- case 401: {
- action.consumeParameterDeclaration();
- break;
- }
-
- //
- // Rule 402: parameter_declaration ::= declaration_specifiers
- //
- case 402: {
- action.consumeParameterDeclarationWithoutDeclarator();
- break;
- }
-
- //
- // Rule 404: parameter_init_declarator ::= declarator = parameter_initializer
- //
- case 404: {
- action.consumeDeclaratorWithInitializer(true);
- break;
- }
-
- //
- // Rule 406: parameter_init_declarator ::= abstract_declarator = parameter_initializer
- //
- case 406: {
- action.consumeDeclaratorWithInitializer(true);
- break;
- }
-
- //
- // Rule 407: parameter_init_declarator ::= = parameter_initializer
- //
- case 407: {
- action.consumeDeclaratorWithInitializer(false);
- break;
- }
-
- //
- // Rule 408: parameter_initializer ::= assignment_expression
- //
- case 408: {
- action.consumeInitializer();
- break;
- }
-
- //
- // Rule 409: function_definition ::= declaration_specifiers_opt function_declarator <openscope-ast> ctor_initializer_list_opt function_body
- //
- case 409: {
- action.consumeFunctionDefinition(false);
- break;
- }
-
- //
- // Rule 410: function_definition ::= declaration_specifiers_opt function_declarator try <openscope-ast> ctor_initializer_list_opt function_body <openscope-ast> handler_seq
- //
- case 410: {
- action.consumeFunctionDefinition(true);
- break;
- }
-
- //
- // Rule 413: initializer ::= ( expression_list )
- //
- case 413: {
- action.consumeInitializerConstructor();
- break;
- }
-
- //
- // Rule 414: initializer_clause ::= assignment_expression
- //
- case 414: {
- action.consumeInitializer();
- break;
- }
-
- //
- // Rule 415: initializer_clause ::= initializer_list
- //
- case 415: {
- action.consumeInitializer();
- break;
- }
-
- //
- // Rule 416: initializer_list ::= start_initializer_list { <openscope-ast> initializer_seq , } end_initializer_list
- //
- case 416: {
- action.consumeInitializerList();
- break;
- }
-
- //
- // Rule 417: initializer_list ::= start_initializer_list { <openscope-ast> initializer_seq } end_initializer_list
- //
- case 417: {
- action.consumeInitializerList();
- break;
- }
-
- //
- // Rule 418: initializer_list ::= { <openscope-ast> }
- //
- case 418: {
- action.consumeInitializerList();
- break;
- }
-
- //
- // Rule 419: start_initializer_list ::= $Empty
- //
- case 419: {
- action.initializerListStart();
- break;
- }
-
- //
- // Rule 420: end_initializer_list ::= $Empty
- //
- case 420: {
- action.initializerListEnd();
- break;
- }
-
- //
- // Rule 425: class_specifier ::= class_head { <openscope-ast> member_declaration_list_opt }
- //
- case 425: {
- action.consumeClassSpecifier();
- break;
- }
-
- //
- // Rule 426: class_head ::= class_keyword composite_specifier_hook identifier_name_opt class_name_suffix_hook <openscope-ast> base_clause_opt
- //
- case 426: {
- action.consumeClassHead(false);
- break;
- }
-
- //
- // Rule 427: class_head ::= class_keyword composite_specifier_hook template_id_name class_name_suffix_hook <openscope-ast> base_clause_opt
- //
- case 427: {
- action.consumeClassHead(false);
- break;
- }
-
- //
- // Rule 428: class_head ::= class_keyword composite_specifier_hook nested_name_specifier identifier_name class_name_suffix_hook <openscope-ast> base_clause_opt
- //
- case 428: {
- action.consumeClassHead(true);
- break;
- }
-
- //
- // Rule 429: class_head ::= class_keyword composite_specifier_hook nested_name_specifier template_id_name class_name_suffix_hook <openscope-ast> base_clause_opt
- //
- case 429: {
- action.consumeClassHead(true);
- break;
- }
-
- //
- // Rule 433: identifier_name_opt ::= $Empty
- //
- case 433: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 437: visibility_label ::= access_specifier_keyword :
- //
- case 437: {
- action.consumeVisibilityLabel();
- break;
- }
-
- //
- // Rule 438: member_declaration ::= declaration_specifiers_opt <openscope-ast> member_declarator_list ;
- //
- case 438: {
- action.consumeDeclarationSimple(true);
- break;
- }
-
- //
- // Rule 439: member_declaration ::= declaration_specifiers_opt ;
- //
- case 439: {
- action.consumeDeclarationSimple(false);
- break;
- }
-
- //
- // Rule 442: member_declaration ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name ;
- //
- case 442: {
- action.consumeMemberDeclarationQualifiedId();
- break;
- }
-
- //
- // Rule 448: member_declaration ::= ERROR_TOKEN
- //
- case 448: {
- action.consumeDeclarationProblem();
- break;
- }
-
- //
- // Rule 457: member_declarator ::= declarator constant_initializer
- //
- case 457: {
- action.consumeMemberDeclaratorWithInitializer();
- break;
- }
-
- //
- // Rule 458: member_declarator ::= bit_field_declarator : constant_expression
- //
- case 458: {
- action.consumeBitField(true);
- break;
- }
-
- //
- // Rule 459: member_declarator ::= : constant_expression
- //
- case 459: {
- action.consumeBitField(false);
- break;
- }
-
- //
- // Rule 460: bit_field_declarator ::= identifier_name
- //
- case 460: {
- action.consumeDirectDeclaratorIdentifier();
- break;
- }
-
- //
- // Rule 461: constant_initializer ::= = constant_expression
- //
- case 461: {
- action.consumeInitializer();
- break;
- }
-
- //
- // Rule 467: base_specifier ::= dcolon_opt nested_name_specifier_opt class_name
- //
- case 467: {
- action.consumeBaseSpecifier(false, false);
- break;
- }
-
- //
- // Rule 468: base_specifier ::= virtual access_specifier_keyword_opt dcolon_opt nested_name_specifier_opt class_name
- //
- case 468: {
- action.consumeBaseSpecifier(true, true);
- break;
- }
-
- //
- // Rule 469: base_specifier ::= access_specifier_keyword virtual dcolon_opt nested_name_specifier_opt class_name
- //
- case 469: {
- action.consumeBaseSpecifier(true, true);
- break;
- }
-
- //
- // Rule 470: base_specifier ::= access_specifier_keyword dcolon_opt nested_name_specifier_opt class_name
- //
- case 470: {
- action.consumeBaseSpecifier(true, false);
- break;
- }
-
- //
- // Rule 471: access_specifier_keyword ::= private
- //
- case 471: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 472: access_specifier_keyword ::= protected
- //
- case 472: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 473: access_specifier_keyword ::= public
- //
- case 473: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 475: access_specifier_keyword_opt ::= $Empty
- //
- case 475: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 477: conversion_function_id_name ::= conversion_function_id < <openscope-ast> template_argument_list_opt >
- //
- case 477: {
- action.consumeTemplateId();
- break;
- }
-
- //
- // Rule 478: conversion_function_id ::= operator conversion_type_id
- //
- case 478: {
- action.consumeConversionName();
- break;
- }
-
- //
- // Rule 479: conversion_type_id ::= type_specifier_seq conversion_declarator
- //
- case 479: {
- action.consumeTypeId(true);
- break;
- }
-
- //
- // Rule 480: conversion_type_id ::= type_specifier_seq
- //
- case 480: {
- action.consumeTypeId(false);
- break;
- }
-
- //
- // Rule 481: conversion_declarator ::= <openscope-ast> ptr_operator_seq
- //
- case 481: {
- action.consumeDeclaratorWithPointer(false);
- break;
- }
-
- //
- // Rule 487: mem_initializer ::= mem_initializer_name ( expression_list_opt )
- //
- case 487: {
- action.consumeConstructorChainInitializer();
- break;
- }
-
- //
- // Rule 488: mem_initializer_name ::= dcolon_opt nested_name_specifier_opt class_name
- //
- case 488: {
- action.consumeQualifiedId(false);
- break;
- }
-
- //
- // Rule 491: operator_function_id_name ::= operator_id_name < <openscope-ast> template_argument_list_opt >
- //
- case 491: {
- action.consumeTemplateId();
- break;
- }
-
- //
- // Rule 492: operator_id_name ::= operator overloadable_operator
- //
- case 492: {
- action.consumeOperatorName();
- break;
- }
-
- //
- // Rule 535: template_declaration ::= export_opt template < <openscope-ast> template_parameter_list > declaration
- //
- case 535: {
- action.consumeTemplateDeclaration();
- break;
- }
-
- //
- // Rule 536: export_opt ::= export
- //
- case 536: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 537: export_opt ::= $Empty
- //
- case 537: {
- action.consumeEmpty();
- break;
- }
-
- //
- // Rule 541: template_parameter ::= parameter_declaration
- //
- case 541: {
- action.consumeTemplateParamterDeclaration();
- break;
- }
-
- //
- // Rule 542: type_parameter ::= class identifier_name_opt
- //
- case 542: {
- action.consumeSimpleTypeTemplateParameter(false);
- break;
- }
-
- //
- // Rule 543: type_parameter ::= class identifier_name_opt = type_id
- //
- case 543: {
- action.consumeSimpleTypeTemplateParameter(true);
- break;
- }
-
- //
- // Rule 544: type_parameter ::= typename identifier_name_opt
- //
- case 544: {
- action.consumeSimpleTypeTemplateParameter(false);
- break;
- }
-
- //
- // Rule 545: type_parameter ::= typename identifier_name_opt = type_id
- //
- case 545: {
- action.consumeSimpleTypeTemplateParameter(true);
- break;
- }
-
- //
- // Rule 546: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt
- //
- case 546: {
- action.consumeTemplatedTypeTemplateParameter(false);
- break;
- }
-
- //
- // Rule 547: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt = id_expression
- //
- case 547: {
- action.consumeTemplatedTypeTemplateParameter(true);
- break;
- }
-
- //
- // Rule 548: template_id_name ::= identifier_name < <openscope-ast> template_argument_list_opt >
- //
- case 548: {
- action.consumeTemplateId();
- break;
- }
-
- //
- // Rule 555: nested_name_specifier_inTemplate ::= class_or_namespace_name_inTemplate :: nested_name_specifier_with_template_inTemplate
- //
- case 555: {
- action.consumeNestedNameSpecifier(true);
- break;
- }
-
- //
- // Rule 556: nested_name_specifier_inTemplate ::= class_or_namespace_name_inTemplate ::
- //
- case 556: {
- action.consumeNestedNameSpecifier(false);
- break;
- }
-
- //
- // Rule 557: nested_name_specifier_with_template_inTemplate ::= class_or_namespace_name_with_template_inTemplate :: nested_name_specifier_with_template_inTemplate
- //
- case 557: {
- action.consumeNestedNameSpecifier(true);
- break;
- }
-
- //
- // Rule 558: nested_name_specifier_with_template_inTemplate ::= class_or_namespace_name_with_template_inTemplate ::
- //
- case 558: {
- action.consumeNestedNameSpecifier(false);
- break;
- }
-
- //
- // Rule 559: class_or_namespace_name_with_template_inTemplate ::= template_opt class_or_namespace_name_inTemplate
- //
- case 559: {
- action.consumeNameWithTemplateKeyword();
- break;
- }
-
- //
- // Rule 561: nested_name_specifier_opt_inTemplate ::= $Empty
- //
- case 561: {
- action.consumeNestedNameSpecifierEmpty();
- break;
- }
-
- //
- // Rule 564: type_name_specifier_inTemplate ::= typename dcolon_opt nested_name_specifier identifier_name
- //
- case 564: {
- action.consumeQualifiedId(false);
- break;
- }
-
- //
- // Rule 565: type_name_specifier_inTemplate ::= typename dcolon_opt nested_name_specifier template_opt template_id_name
- //
- case 565: {
- action.consumeQualifiedId(true);
- break;
- }
-
- //
- // Rule 570: declaration_specifiers_inTemplate ::= <openscope-ast> simple_declaration_specifiers
- //
- case 570: {
- action.consumeDeclarationSpecifiersSimple();
- break;
- }
-
- //
- // Rule 571: declaration_specifiers_inTemplate ::= <openscope-ast> class_declaration_specifiers
- //
- case 571: {
- action.consumeDeclarationSpecifiersComposite();
- break;
- }
-
- //
- // Rule 572: declaration_specifiers_inTemplate ::= <openscope-ast> elaborated_declaration_specifiers
- //
- case 572: {
- action.consumeDeclarationSpecifiersComposite();
- break;
- }
-
- //
- // Rule 573: declaration_specifiers_inTemplate ::= <openscope-ast> enum_declaration_specifiers
- //
- case 573: {
- action.consumeDeclarationSpecifiersComposite();
- break;
- }
-
- //
- // Rule 574: declaration_specifiers_inTemplate ::= <openscope-ast> type_name_declaration_specifiers_inTemplate
- //
- case 574: {
- action.consumeDeclarationSpecifiersTypeName();
- break;
- }
-
- //
- // Rule 576: type_id_inTemplate ::= type_specifier_seq_inTemplate
- //
- case 576: {
- action.consumeTypeId(false);
- break;
- }
-
- //
- // Rule 577: type_id_inTemplate ::= type_specifier_seq_inTemplate abstract_declarator
- //
- case 577: {
- action.consumeTypeId(true);
- break;
- }
-
- //
- // Rule 578: template_argument ::= assignment_expression_inTemplate
- //
- case 578: {
- action.consumeTemplateArgumentExpression();
- break;
- }
-
- //
- // Rule 579: template_argument ::= type_id_inTemplate
- //
- case 579: {
- action.consumeTemplateArgumentTypeId();
- break;
- }
-
- //
- // Rule 580: explicit_instantiation ::= template declaration
- //
- case 580: {
- action.consumeTemplateExplicitInstantiation();
- break;
- }
-
- //
- // Rule 581: explicit_specialization ::= template < > declaration
- //
- case 581: {
- action.consumeTemplateExplicitSpecialization();
- break;
- }
-
- //
- // Rule 582: try_block ::= try compound_statement <openscope-ast> handler_seq
- //
- case 582: {
- action.consumeStatementTryBlock(true);
- break;
- }
-
- //
- // Rule 583: try_block ::= try compound_statement
- //
- case 583: {
- action.consumeStatementTryBlock(false);
- break;
- }
-
- //
- // Rule 586: handler ::= catch ( exception_declaration ) compound_statement
- //
- case 586: {
- action.consumeStatementCatchHandler(false);
- break;
- }
-
- //
- // Rule 587: handler ::= catch ( ... ) compound_statement
- //
- case 587: {
- action.consumeStatementCatchHandler(true);
- break;
- }
-
- //
- // Rule 588: exception_declaration ::= type_specifier_seq <openscope-ast> declarator
- //
- case 588: {
- action.consumeDeclarationSimple(true);
- break;
- }
-
- //
- // Rule 589: exception_declaration ::= type_specifier_seq <openscope-ast> abstract_declarator
- //
- case 589: {
- action.consumeDeclarationSimple(true);
- break;
- }
-
- //
- // Rule 590: exception_declaration ::= type_specifier_seq
- //
- case 590: {
- action.consumeDeclarationSimple(false);
- break;
- }
-
- //
- // Rule 592: exception_specification ::= throw ( )
- //
- case 592: {
- action.consumePlaceHolder();
- break;
- }
-
- //
- // Rule 613: attribute_parameter ::= assignment_expression
- //
- case 613: {
- action.consumeIgnore();
- break;
- }
-
- //
- // Rule 624: extended_asm_declaration ::= asm volatile_opt ( extended_asm_param_seq ) ;
- //
- case 624: {
- gnuAction.consumeDeclarationASM();
- break;
- }
-
- //
- // Rule 635: unary_expression ::= __alignof__ unary_expression
- //
- case 635: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_alignOf);
- break;
- }
-
- //
- // Rule 636: unary_expression ::= __alignof__ ( type_id )
- //
- case 636: {
- action.consumeExpressionTypeId(IASTTypeIdExpression.op_alignof);
- break;
- }
-
- //
- // Rule 637: unary_expression ::= typeof unary_expression
- //
- case 637: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_typeof);
- break;
- }
-
- //
- // Rule 638: unary_expression ::= typeof ( type_id )
- //
- case 638: {
- action.consumeExpressionTypeId(IASTTypeIdExpression.op_typeof);
- break;
- }
-
- //
- // Rule 639: relational_expression ::= relational_expression >? shift_expression
- //
- case 639: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_max);
- break;
- }
-
- //
- // Rule 640: relational_expression ::= relational_expression <? shift_expression
- //
- case 640: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_min);
- break;
- }
-
- //
- // Rule 641: conditional_expression ::= logical_or_expression ? <empty> : assignment_expression
- //
- case 641: {
- action.consumeExpressionConditional();
- break;
- }
-
- //
- // Rule 642: primary_expression ::= ( compound_statement )
- //
- case 642: {
- gnuAction.consumeCompoundStatementExpression();
- break;
- }
-
- //
- // Rule 643: labeled_statement ::= case case_range_expression : statement
- //
- case 643: {
- action.consumeStatementCase();
- break;
- }
-
- //
- // Rule 644: case_range_expression ::= constant_expression ... constant_expression
- //
- case 644: {
- action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_assign);
- break;
- }
-
- //
- // Rule 648: typeof_type_specifier ::= typeof unary_expression
- //
- case 648: {
- action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_typeof);
- break;
- }
-
- //
- // Rule 649: typeof_type_specifier ::= typeof ( type_id )
- //
- case 649: {
- action.consumeExpressionTypeId(IASTTypeIdExpression.op_typeof);
- break;
- }
-
- //
- // Rule 650: declaration_specifiers ::= <openscope-ast> typeof_declaration_specifiers
- //
- case 650: {
- action.consumeDeclarationSpecifiersTypeof();
- break;
- }
-
- //
- // Rule 663: declarator ::= <openscope-ast> ptr_operator_seq attribute_or_decl_specifier_seq direct_declarator
- //
- case 663: {
- action.consumeDeclaratorWithPointer(true);
- break;
- }
-
- //
- // Rule 666: simple_type_specifier ::= _Complex
- //
- case 666: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 667: simple_type_specifier ::= _Imaginary
- //
- case 667: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 668: cv_qualifier ::= restrict
- //
- case 668: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 669: explicit_instantiation ::= extern template declaration
- //
- case 669: {
- action.consumeTemplateExplicitInstantiationGCC(IGPPASTExplicitTemplateInstantiation.ti_extern);
- break;
- }
-
- //
- // Rule 670: explicit_instantiation ::= static template declaration
- //
- case 670: {
- action.consumeTemplateExplicitInstantiationGCC(IGPPASTExplicitTemplateInstantiation.ti_static);
- break;
- }
-
- //
- // Rule 671: explicit_instantiation ::= inline template declaration
- //
- case 671: {
- action.consumeTemplateExplicitInstantiationGCC(IGPPASTExplicitTemplateInstantiation.ti_inline);
- break;
- }
-
- //
- // Rule 672: postfix_expression ::= ( type_id ) initializer_list
- //
- case 672: {
- action.consumeExpressionTypeIdInitializer();
- break;
- }
-
- //
- // Rule 676: type_id ::= vector_type
- //
- case 676: {
- action.consumeTypeId(false);
- break;
- }
-
- //
- // Rule 677: type_id ::= vector_type abstract_declarator
- //
- case 677: {
- action.consumeTypeId(true);
- break;
- }
-
- //
- // Rule 678: vector_declaration ::= vector_type <openscope-ast> init_declarator_list ;
- //
- case 678: {
- action.consumeDeclarationSimple(true);
- break;
- }
-
- //
- // Rule 679: vector_type ::= <openscope-ast> no_type_declaration_specifiers_opt vector vector_type_specifier all_specifier_qualifier_list_opt
- //
- case 679: {
- action.consumeVectorTypeSpecifier();
- break;
- }
-
- //
- // Rule 680: vector_type_specifier ::= vector_type_specifier_token
- //
- case 680: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 703: specifier_qualifier ::= typedef
- //
- case 703: {
- action.consumeToken();
- break;
- }
-
- //
- // Rule 704: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers ]
- //
- case 704: {
- action.consumeDirectDeclaratorModifiedArrayModifier(false, false, true, false);
- break;
- }
-
- //
- // Rule 705: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers assignment_expression ]
- //
- case 705: {
- action.consumeDirectDeclaratorModifiedArrayModifier(false, false, true, true);
- break;
- }
-
- //
- // Rule 706: array_modifier ::= [ static assignment_expression ]
- //
- case 706: {
- action.consumeDirectDeclaratorModifiedArrayModifier(true, false, false, true);
- break;
- }
-
- //
- // Rule 707: array_modifier ::= [ static <openscope-ast> array_modifier_type_qualifiers assignment_expression ]
- //
- case 707: {
- action.consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true);
- break;
- }
-
- //
- // Rule 708: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers static assignment_expression ]
- //
- case 708: {
- action.consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true);
- break;
- }
-
- //
- // Rule 709: array_modifier ::= [ * ]
- //
- case 709: {
- action.consumeDirectDeclaratorModifiedArrayModifier(false, true, false, false);
- break;
- }
-
- //
- // Rule 710: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers * ]
- //
- case 710: {
- action.consumeDirectDeclaratorModifiedArrayModifier(false, true, true, false);
- break;
- }
-
- //
- // Rule 715: static_assert_declaration ::= __static_assert ( expression , literal ) ;
- //
- case 715: {
- action.consumeCPPASTStaticAssertDeclaration();
- break;
- }
-
- default:
- break;
- }
- return;
- }
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/cpp/XlcCPPParserprs.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/cpp/XlcCPPParserprs.java
deleted file mode 100644
index 7ad453ab4de..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/cpp/XlcCPPParserprs.java
+++ /dev/null
@@ -1,2110 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2010 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.lrparser.xlc.cpp;
-
-public class XlcCPPParserprs implements lpg.lpgjavaruntime.ParseTable, XlcCPPParsersym {
-
- public interface IsKeyword {
- public final static byte isKeyword[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static byte isKeyword[] = IsKeyword.isKeyword;
-
- public final boolean isKeyword(int index) {
- return isKeyword[index] != 0;
- }
-
- public interface BaseCheck0 {
- public final static short baseCheck0[] = { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 0, 1, 0, 4, 2, 3, 2, 3, 2, 2, 1, 0, 1, 1, 4, 4, 4, 8, 8, 3, 3,
- 4, 4, 3, 3, 2, 2, 7, 7, 7, 7, 4, 4, 5, 6, 3, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 7, 9, 3, 0, 1,
- 2, 2, 1, 2, 3, 4, 1, 0, 3, 1, 0, 3, 5, 1, 4, 1, 3, 3, 1, 3, 3, 3, 1, 3, 3, 1, 3, 3, 1, 3, 3, 3, 3, 1, 3,
- 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 5, 1, 3, 5, 3, 3, 1, 3, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 5, 1, 1,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 2, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 2, 1, 3, 1, 0, 1, 0, 1,
- 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 4, 3, 2, 1, 4, 2, 1, 2, 5, 7, 5, 1, 4, 1, 0, 5, 7, 2, 8, 1, 1, 2, 2,
- 3, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 0, 4, 4, 2, 2, 2, 2, 2, 1, 0, 1, 1, 1, 1,
- 1, 1, 2, 1, 2, 2, 2, 1, 1, 2, 2, 1, 2, 2, 1, 2, 2, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 3, 4, 4, 5, 2, 5, 6, 5, 0, 1, 0, 7, 8, 0, 1, 3, 1, 0, 1, 3, 1, 7, 6, 0, 7, 6, 1, 0,
- 6, 6, 4, 1, 3, 1, 0, 1, 1, 2, 1, 1, 3, 1, 3, 1, 1, 1, 1, 3, 9, 2, 2, 3, 2, 5, 3, 7, 0, 1, 2, 2, 1, 0, 1,
- 1, 1, 3, 1, 2, 1, 1, 2, 3, 1, 1, 1, 3, 2, 1, 2, 2, 9, 8, 2, 1, 3, 1, 3, 1, 0, 1, 0, 2, 1, 1, 3, 1, 3, 2,
- 1, 5, 8, 1, 2, 3, 1, 1, 7, 6, 3, 0, 0, 1, 3, 1, 1, 5, 6, 6, 7, 7, 0, 0, 1, 0, 1, 1, 1, 2, 4, 2, 2, 1, 5,
- 1, 1, 1, 1, 1, 1, 1, 2, 1, 0, 1, 3, 1, 1, 2, 3, 2, 1, 2, 2, 1, 0, 1, 3, 3, 5, 5, 4, 1, 1, 1, 1, 0, 1, 5,
- 2, 2, 1, 2, 2, 1, 0, 1, 3, 4, 3, 1, 1, 5, 2, 1, 1, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 7, 1, 0, 1, 3, 1, 1, 2, 4, 2, 4, 7, 9,
- 5, 1, 3, 1, 0, 1, 1, 3, 2, 3, 2, 2, 1, 0, 1, 1, 4, 5, 2, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 1, 1, 2, 4, 4,
- 2, 1, 2, 5, 5, 3, 3, 1, 4, 3, 1, 0, 1, 3, 1, 1, 1, 1, 2, 6, 3, 1, 3, 1, 4, 0, 1, 1, 1, 3, 1, 0, 4, 3, 1,
- 2, 1, 3, 4, 4, 4, 6, 1, 0, 1, 3, 1, 3, 0, 1, 4, 5, 2, 4, 2, 4, 3, 3, 5, 3, 4, 3, 1, 2, 2, 2, 4, 2, 1, 1,
- 2, 2, 3, 2, 2, 3, 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 3, 3, 3, 4, 1, 1, 1, 1, 2, 4, 5, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 2, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 4, 5, 4, 6, 6, 3, 5, 1, 1, 2, 1, 7, -199, 0, 0, 0, 0,
- -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6, -139, 0, 0, -2, 0, 0,
- 0, 0, -73, -3, 0, -4, 0, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, -420, 0, 0, 0, 0, 0, 0, 0, -64, -265, -16,
- 0, 0, 0, 0, 0, -266, 0, 0, 0, 0, -123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -9, 0, 0, -47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10, -18, 0, 0, -111, 0, 0, -81, 0, 0, 0,
- 0, 0, 0, -43, 0, 0, 0, 0, -416, 0, 0, 0, 0, 0, -42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -11, 0, 0,
- -13, -627, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -329, 0, 0, -58, 0, 0, 0, 0, -170, -20, 0, -190, 0, 0, 0, -60, 0, 0, 0, 0, 0, 0, 0, 0, -306, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -221, 0, 0, 0, 0, 0, 0, 0, 0, -182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -499, 0, 0, 0, 0, 0, -28, 0, 0, 0, 0, -69, -19, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -174, 0, 0, 0, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -435, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -35,
- 0, 0, 0, 0, -474, 0, 0, 0, 0, 0, -183, 0, 0, -21, 0, -79, -185, -66, 0, 0, 0, 0, 0, 0, 0, 0, -155, 0, 0,
- 0, 0, 0, 0, -169, -218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -436, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -338, 0, 0, 0, 0,
- -23, -67, 0, 0, 0, 0, -573, 0, 0, 0, 0, -369, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, -130,
- -24, -453, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -240, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -493, 0, 0, 0, -163, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -429, 0, 0, 0, 0, 0, 0, -222, 0, 0, 0, -618, 0, 0, 0, -519, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -40, 0, 0, 0, -407, 0, 0, 0, -191, 0, 0, 0, 0, 0,
- 0, 0, -82, -25, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, -652, 0, 0, 0, 0, 0, 0, 0, 0, -540, 0, 0, 0, 0, 0,
- -223, 0, 0, 0, 0, -681, 0, 0, 0, 0, 0, -653, 0, 0, 0, 0, -412, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -303, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -693, -26, 0, 0, 0, 0, 0,
- -156, 0, 0, 0, 0, -585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -274, 0, -184, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -273, 0, 0, 0, 0, 0, 0, -84, -526, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -34, -409, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -680, 0, 0,
- 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -44, -536, -537, 0, 0, 0, 0, 0, -196, 0, 0, 0, 0, 0,
- -283, 0, 0, -57, 0, 0, -611, 0, 0, -160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -305, 0, 0, -660, 0, 0, 0, 0, 0, 0, 0, 0, 0, -107, -45, 0, 0, 0, 0, 0, -272, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -614, 0, 0, -80, -137, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -48, 0, 0, 0, -209, -688, 0, -50, -326, 0, -320, 0, 0, 0, 0, 0, 0, 0, 0, -280, 0, 0,
- -51, -417, 0, -718, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, -633, -403, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -54,
- 0, 0, -475, -404, 0, 0, 0, 0, 0, -504, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, 0, 0, 0, 0, 0, 0, -590, 0, 0, 0, 0,
- -59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 0, -61, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -610, 0, 0, 0, 0, 0, 0, -591, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -118, -83, -418, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, 0, 0, -76, -534, 0, 0, -289,
- -212, 0, -179, -86, 0, 0, 0, 0, 0, 0, 0, 0, -600, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -110, 0, 0, -535, 0, 0, 0, 0, 0, 0, 0, 0, 0, -658, -371, 0, -451, 0, 0, 0, 0, 0,
- 0, -152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -87, 0, -88,
- -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -269, 0, 0, -102, 0, 0, -103, 0, 0, -231, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -492, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -647, -354,
- 0, -576, -104, 0, 0, 0, 0, 0, -254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -105, 0, -56, -485, 0, 0, -353, 0, 0, 0, -124,
- -255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -574, 0, 0, 0, 0, 0,
- 0, 0, -131, 0, 0, 0, 0, 0, -372, 0, -577, -295, 0, 0, -106, 0, 0, -256, 0, 0, 0, 0, -454, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -583, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -108, 0,
- -578, 0, 0, 0, -165, 0, 0, -257, 0, 0, 0, 0, -109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -461, 0, 0, 0, -113, 0, 0, 0, -399, 0, 0, 0, 0, 0, -117, 0, -278, -125, 0, 0, 0, 0, 0, -258, 0,
- 0, 0, 0, -502, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -584, 0, 0, 0, -126, -333,
- 0, 0, -132, 0, 0, 0, 0, 0, 0, 0, -579, -127, 0, 0, -172, 0, 0, -259, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -708, 0, 0, 0, 0, 0, 0, 0, -644, 0, 0, 0, 0, 0, 0, 0, -620,
- -128, 0, 0, -193, 0, 0, -260, 0, 0, 0, 0, -588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -515, 0, -279, -656, 0, 0, -347, 0, 0, -261, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -636, 0, 0, 0, -478, 0, 0, 0, -679,
- 0, 0, 0, 0, -211, 0, 0, -136, 0, 0, 0, -140, 0, 0, -262, 0, 0, 0, 0, -142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -661, 0, 0, 0, 0, 0, 0, 0, -143, 0, 0, 0, 0, 0, 0, 0, -281, 0, 0, 0, 0,
- 0, 0, -263, 0, 0, 0, 0, -144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -370, 0,
- 0, -145, -146, 0, 0, -180, 0, 0, 0, 0, 0, 0, 0, -328, -530, 0, 0, -147, 0, 0, -264, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -228, 0, -716, -419, 0, 0, 0, 0, -148, 0, 0, 0,
- 0, 0, -291, 0, -268, 0, 0, 0, -479, 0, 0, -310, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -702, 0, 0, 0, 0, -374, 0, 0, 0, -334, 0, 0, 0, 0, 0, -349, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -149, 0, 0, 0, 0, -351, 0, 0, 0, 0, -538, 0, 0, 0, 0, 0, 0, 0, 0, -683, -440, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, -441, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -150, 0, -151, 0, 0, -175, 0, -129, 0, 0, 0, 0, -300, 0,
- -195, 0, -375, 0, -230, 0, 0, 0, -302, -232, 0, -153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -197, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, 0, 0, 0, 0, 0, -442, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -267, -443, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -171, -304, 0, 0, -589, 0, 0, -286, -322, 0, 0, 0, -288, -323, 0, -177, -359,
- -324, 0, 0, 0, 0, 0, 0, -192, 0, -400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -659, -198, 0, -276, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -555, 0, 0, 0, 0, 0, 0, 0, -444, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -325, -445, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -341, -282, -467, 0, 0, -710, 0, -685, 0, 0, 0, -703, 0, 0, 0, 0, -287, 0, 0, 0, 0, 0, -414, -496, 0,
- -292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -415, -476, -309, -460, -294, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -307, 0, 0, 0, 0, 0, -446, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -447, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -342, 0, 0, 0, 0,
- -711, 0, -704, 0, 0, 0, -483, -176, -348, -311, 0, 0, -497, -352, 0, 0, 0, 0, -312, 0, -313, 0, -314, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -315, -316, 0, 0, 0, 0, 0, -317, 0, 0, 0, 0, 0, 0, 0, 0, -597, 0, 0, 0, 0, 0,
- -448, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -363, -449, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -318, -649, -319, 0, 0, -30, 0,
- -662, -613, -321, -335, -336, -14, 0, 0, 0, -477, -503, -406, 0, -512, 0, 0, -337, 0, 0, 0, -343, 0, 0,
- 0, 0, 0, 0, 0, 0, -402, -522, -516, 0, 0, 0, 0, 0, 0, 0, -344, 0, 0, 0, 0, 0, 0, -345, 0, 0, 0, 0, 0,
- -450, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -253, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -570, -346, 0, 0, 0, 0, 0, -355, 0,
- 0, 0, 0, 0, 0, 0, -357, -587, -617, 0, -358, 0, 0, 0, 0, -455, 0, -408, 0, 0, 0, -465, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -360, 0, 0, -495, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -361, 0, 0, 0, 0, 0, -517, 0, 0, 0, 0, -364, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -158, -410, -366, -367, -368, 0, 0, -598, 0, 0, 0, 0, -377, 0, 0, -527, -567, 0, 0, -378, -379,
- 0, -78, 0, 0, 0, -568, 0, 0, 0, 0, 0, 0, 0, -518, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -380, 0, 0, 0, -381, 0, 0, 0, -382, 0, 0, 0, 0, 0, -383, 0, 0, 0, 0, 0, -411,
- -384, 0, -520, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -630, -385,
- 0, 0, -386, 0, 0, 0, -634, 0, 0, 0, 0, 0, -387, 0, -388, -601, 0, 0, -462, -481, 0, -524, -521, 0, 0, 0,
- 0, -389, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -390, 0, 0, -391, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -599, 0, 0, -650, -392, 0, 0, -393, 0, 0, -616, 0, 0, 0, 0, -394, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -525, -251, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -395, -500, -396, 0, 0, -673, 0, 0, -675, 0, 0, 0, -669, 0, -694, 0, -397, 0, -696,
- 0, -700, 0, -398, 0, 0, 0, 0, -554, 0, 0, 0, -691, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -405, 0, 0, -709, 0, -707, 0, 0, 0, 0, 0, 0, 0, -421, -422, 0, -671, -456, 0, 0,
- -571, 0, 0, -528, 0, 0, 0, 0, -665, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -430,
- 0, 0, 0, -464, -466, -468, 0, 0, 0, 0, 0, 0, 0, -469, 0, -575, 0, 0, 0, -539, 0, 0, 0, 0, -470, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -162, 0, -471, -510, -473, -486, 0, 0, 0, 0, 0, 0,
- 0, 0, -488, 0, -674, -489, 0, 0, -490, -457, -491, -36, 0, 0, 0, 0, 0, 0, 0, -586, 0, 0, 0, -603, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -505, -506, 0, 0, -513, 0,
- -514, 0, 0, 0, 0, -529, -531, 0, 0, 0, 0, 0, -604, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -277, -543, -544, -545, -546, -547, 0, -548, 0, 0, 0, 0, -549, 0, 0, -550,
- -551, 0, 0, -85, 0, 0, 0, 0, 0, -552, -553, 0, 0, 0, 0, -557, 0, 0, -623, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -559, -690, -560, -565, 0, -569, 0, 0, 0, 0, 0,
- 0, 0, -580, -581, 0, 0, -664, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -7, 0, 0, 0, 0, -301, -615, 0, -582, 0, 0, 0, 0, 0, 0, 0, -608, -609, 0, 0, -619, -213, 0, 0, -631,
- 0, -645, 0, 0, 0, 0, -646, 0, 0, 0, 0, -648, -651, 0, 0, 0, -625, -667, -628, 0, -38, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -498, 0, 0, 0, 0, 0, -676, -682, -684, -692, -701,
- -214, -235, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -637,
- -714, 0, 0, 0, 0, 0, 0, 0, 0, 0, -632, 0, 0, -635, -638, 0, 0, 0, 0, 0, -293, 0, 0, 0, 0, -72, -639,
- -41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -640, 0, -75, 0, -641, -241, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -677, 0, 0, -678, -452, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -605, 0, 0, 0, 0, -689, -122, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -642, 0, 0, 0, 0, 0, 0, 0, 0, -695, -698, 0, 0, 0, 0, 0, -655, 0, 0, 0, 0, 0, 0, 0, 0,
- -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -699, -706, -717, 0, -697, 0, 0, 0,
- 0, -556, 0, 0, 0, 0, -413, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -332, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -439, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -437, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -298, -330, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -438, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -463, 0, 0,
- 0, 0, 0, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -327, 0, 0, 0, 0, 0, 0, 0, 0, -219, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -225, 0, 0, 0, 0, 0, -29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -593, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -224, 0, 0, 0, 0, 0, 0, -99, 0, 0, 0, 0, 0, 0, 0, 0, -670,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -297, 0,
- 0, 0, 0, 0, -215, -594, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, 0, -17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -663, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -434, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -472, -159, 0, 0, 0, 0, -237, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -558, -205, 0, 0, 0, 0, 0, 0, 0, -270, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -271, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -561, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -622, -49, 0, 0, 0, 0, 0, -626, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -624, -70, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -666, -116, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -629, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -178,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -668, -181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -672, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -705, -339, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -350, 0, 0, 0, 0, 0, 0, 0, 0, 0, -501, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -715, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -22, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -154, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -242, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -308, 0, 0,
- 0, 0, 0, 0, 0, 0, -290, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, -484, 0, 0, 0, 0, 0, 0, 0, 0, -533, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -572, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -602, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -362, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -607, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -423, 0, 0, 0, 0, 0, 0, 0,
- -31, 0, 0, 0, 0, 0, 0, -494, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -243, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -365, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -245, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -532, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -431, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -432, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -433, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -507, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -356, 0, 0, 0, 0, 0, 0, -612, 0, 0, 0, 0, 0, 0, -542, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -299, 0, 0, 0, -541, 0, 0, 0, 0, 0, 0, -1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -89, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -246, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -247, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -376, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -712, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -39, 0, 0, 0, 0, 0,
- -202, 0, 0, 0, 0, 0, -621, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -33, 0, 0, 0, 0, 0, 0, -141, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -606, 0, 0, 0, 0, 0, 0, 0, 0, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -657, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -157, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -480, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -220, 0, 0, 0, 0, 0, 0, -186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -428, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -227, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -654, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -236, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -373, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -713, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -90, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -238, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -239, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -275, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -523, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -12, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -686, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -285, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -687, 0, 0, 0, -37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -53, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -284, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -95, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -133, 0, 0, 0, 0, 0, -424, 0, 0, 0, 0, 0, 0, 0, 0, -459, 0, -134, 0, -595, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -233, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -458, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -511, 0, 0, 0, 0, 0, -340, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public interface BaseCheck1 {
- public final static short baseCheck1[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -296, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -482, 0, 0, 0, 0, 0, -592, 0, -596, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, 0, 0, 0, 0, 0, 0, 0, -425, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -719, 0, 0, 0, 0, 0, -331, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -487, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -562, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, -508, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -426, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -427, 0, 0, 0, 0, 0, 0, -564, 0, -563, 0, 0, 0, 0,
- 0, 0, -566, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static short baseCheck[] = new short[BaseCheck0.baseCheck0.length + BaseCheck1.baseCheck1.length];
- {
- int index = 0;
- System.arraycopy(BaseCheck0.baseCheck0, 0, baseCheck, index, BaseCheck0.baseCheck0.length);
- index += BaseCheck0.baseCheck0.length;
- System.arraycopy(BaseCheck1.baseCheck1, 0, baseCheck, index, BaseCheck1.baseCheck1.length);
- }
-
- @Override
- public final int baseCheck(int index) {
- return baseCheck[index];
- }
-
- public final static short rhs[] = baseCheck;
-
- @Override
- public final int rhs(int index) {
- return rhs[index];
- }
-
- public interface BaseAction0 {
- public final static char baseAction0[] = { 214, 5, 158, 82, 82, 32, 32, 106, 106, 48, 48, 41, 41, 214, 1, 1, 15,
- 15, 15, 15, 15, 15, 15, 17, 17, 17, 16, 11, 11, 6, 6, 6, 6, 6, 6, 2, 93, 93, 4, 4, 12, 12, 56, 56, 175,
- 175, 176, 86, 86, 55, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
- 177, 177, 177, 159, 159, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 215, 215, 216, 216,
- 217, 180, 180, 181, 181, 178, 178, 182, 179, 179, 21, 21, 22, 22, 23, 23, 23, 24, 24, 24, 24, 25, 25,
- 25, 26, 26, 26, 34, 34, 34, 34, 34, 36, 36, 36, 37, 37, 38, 38, 39, 39, 42, 42, 45, 45, 46, 46, 58, 58,
- 58, 58, 58, 70, 70, 70, 74, 74, 76, 76, 79, 79, 81, 81, 83, 83, 84, 84, 85, 85, 85, 85, 85, 85, 85, 85,
- 85, 85, 85, 85, 85, 33, 33, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 47, 35, 160, 160, 124,
- 124, 218, 218, 114, 249, 249, 96, 96, 96, 96, 96, 96, 96, 96, 96, 97, 97, 97, 94, 94, 59, 59, 219, 219,
- 98, 98, 98, 135, 135, 220, 220, 99, 99, 99, 99, 221, 221, 100, 100, 100, 100, 100, 101, 101, 103, 103,
- 103, 103, 103, 103, 103, 103, 60, 60, 60, 60, 60, 136, 136, 134, 134, 61, 222, 31, 31, 31, 31, 31, 53,
- 53, 67, 67, 67, 67, 67, 122, 122, 129, 129, 129, 129, 129, 130, 130, 130, 131, 131, 131, 132, 132, 132,
- 137, 137, 137, 68, 68, 68, 68, 68, 69, 69, 69, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 107, 125,
- 125, 125, 125, 125, 125, 116, 116, 116, 184, 185, 185, 117, 117, 223, 187, 187, 186, 186, 161, 161, 138,
- 91, 91, 162, 63, 52, 188, 188, 64, 105, 105, 163, 163, 183, 183, 139, 140, 140, 141, 88, 88, 189, 189,
- 77, 77, 77, 72, 72, 71, 78, 78, 95, 95, 87, 87, 87, 75, 119, 119, 127, 126, 126, 50, 50, 73, 73, 80, 80,
- 57, 123, 123, 123, 108, 108, 108, 109, 109, 110, 110, 110, 111, 111, 142, 142, 142, 144, 144, 143, 143,
- 250, 250, 120, 120, 225, 225, 225, 225, 225, 165, 51, 51, 191, 224, 224, 166, 166, 112, 112, 112, 113,
- 193, 226, 226, 44, 44, 115, 121, 121, 121, 121, 228, 146, 145, 145, 118, 118, 118, 194, 195, 195, 195,
- 195, 195, 195, 195, 195, 195, 195, 195, 230, 230, 227, 227, 229, 229, 148, 149, 149, 149, 149, 150, 231,
- 151, 147, 147, 232, 232, 196, 196, 196, 196, 133, 133, 133, 233, 233, 8, 8, 9, 234, 234, 235, 197, 190,
- 190, 198, 198, 199, 200, 200, 7, 7, 10, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236,
- 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236,
- 236, 236, 236, 236, 236, 236, 236, 236, 89, 92, 92, 201, 201, 168, 168, 169, 169, 169, 169, 169, 169, 3,
- 170, 170, 167, 167, 202, 251, 252, 252, 253, 253, 254, 255, 255, 203, 204, 204, 204, 204, 237, 237, 237,
- 153, 153, 153, 153, 153, 154, 155, 155, 152, 152, 104, 90, 102, 102, 192, 192, 156, 156, 238, 238, 238,
- 171, 171, 164, 164, 239, 239, 27, 27, 27, 43, 43, 28, 28, 240, 240, 205, 205, 205, 206, 206, 241, 241,
- 207, 207, 29, 29, 242, 242, 208, 208, 208, 208, 30, 65, 243, 243, 244, 244, 209, 209, 209, 172, 172,
- 172, 19, 19, 19, 19, 34, 34, 46, 17, 97, 245, 157, 157, 157, 128, 128, 31, 62, 67, 141, 141, 141, 148,
- 148, 148, 223, 228, 146, 75, 88, 184, 162, 13, 13, 50, 104, 104, 104, 18, 14, 14, 14, 80, 80, 66, 40,
- 173, 174, 174, 174, 174, 174, 174, 174, 174, 174, 211, 211, 247, 247, 246, 246, 210, 210, 50, 60, 60, 1,
- 1, 256, 95, 95, 95, 95, 95, 95, 95, 212, 213, 213, 195, 54, 1834, 35, 3267, 3255, 5724, 2223, 27, 30,
- 31, 1654, 1590, 26, 28, 3254, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 2590, 652, 597,
- 598, 599, 2070, 1533, 177, 2589, 1620, 2643, 2605, 2788, 2713, 6304, 419, 2790, 77, 308, 2813, 176,
- 2806, 4961, 191, 266, 2505, 35, 1703, 32, 5759, 4085, 27, 30, 31, 1654, 1590, 57, 28, 1976, 1143, 77,
- 269, 264, 265, 1563, 1563, 5086, 35, 1703, 32, 4863, 2584, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296,
- 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 2590, 1907, 189, 189, 2055, 2402, 2352, 34, 2589,
- 309, 2643, 2605, 2788, 2713, 3720, 1878, 3726, 276, 279, 282, 3249, 2298, 520, 992, 6745, 939, 5436,
- 285, 5627, 1946, 645, 5837, 4375, 4784, 6180, 1630, 35, 1703, 32, 6769, 3083, 41, 30, 31, 1654, 1590,
- 3859, 35, 1703, 32, 5364, 4563, 27, 30, 31, 1654, 1590, 374, 28, 7538, 2437, 534, 2505, 4859, 1909, 35,
- 3267, 3255, 5724, 2593, 27, 30, 31, 1654, 1590, 26, 28, 3254, 296, 23, 25, 50, 2263, 106, 76, 77, 108,
- 2513, 2563, 2543, 2590, 652, 597, 598, 599, 998, 5741, 177, 2589, 521, 2643, 2605, 2788, 2713, 5738,
- 617, 2790, 1240, 308, 2813, 176, 623, 1117, 191, 266, 8297, 680, 354, 1199, 356, 2055, 35, 317, 349,
- 1121, 3706, 600, 597, 598, 599, 61, 269, 264, 265, 1923, 2584, 615, 2651, 601, 597, 598, 599, 925, 2723,
- 3559, 35, 1703, 32, 4863, 6013, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76,
- 77, 108, 2513, 2563, 2543, 3153, 309, 2055, 35, 1509, 424, 919, 162, 1535, 276, 279, 282, 3249, 725,
- 520, 992, 6964, 426, 5471, 285, 347, 463, 645, 5837, 4375, 4784, 6180, 1719, 35, 1703, 32, 6769, 3144,
- 2451, 30, 31, 1654, 1590, 672, 2047, 600, 597, 598, 599, 3157, 1944, 488, 496, 3155, 1430, 3168, 7538,
- 483, 3167, 2505, 3174, 3859, 3244, 161, 578, 2055, 35, 6535, 4635, 3559, 35, 1703, 32, 4863, 6013, 27,
- 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 3153, 1692,
- 5216, 35, 1703, 32, 4863, 162, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77,
- 108, 2513, 2563, 2543, 3153, 3765, 35, 314, 3144, 3988, 2055, 3480, 549, 575, 3055, 579, 3525, 35, 312,
- 78, 3157, 520, 4344, 1776, 3155, 5543, 3168, 3069, 618, 3167, 3246, 3174, 77, 3244, 161, 578, 3974,
- 1563, 4758, 2959, 3559, 35, 1703, 32, 4863, 6013, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50,
- 2263, 106, 76, 77, 108, 2513, 2563, 2543, 3153, 2874, 5216, 35, 1703, 32, 4863, 162, 27, 30, 31, 1654,
- 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 3153, 3765, 35, 314,
- 3144, 6035, 628, 1529, 549, 575, 3055, 579, 4672, 35, 312, 1713, 3157, 2323, 35, 432, 3155, 2911, 3168,
- 3416, 359, 3167, 3246, 3174, 5934, 3244, 161, 578, 3976, 1563, 2518, 719, 4162, 35, 1703, 32, 4863,
- 6013, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543,
- 3153, 193, 5086, 35, 1703, 32, 4863, 162, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263,
- 106, 76, 77, 108, 2513, 2563, 2543, 3533, 2055, 35, 4047, 3144, 2055, 35, 330, 549, 575, 3055, 579, 360,
- 42, 3253, 2485, 3157, 3765, 35, 566, 3155, 6539, 3168, 3430, 2584, 3167, 3246, 3174, 4337, 3244, 161,
- 578, 4237, 35, 1703, 32, 4863, 1384, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106,
- 76, 77, 108, 2513, 2563, 2543, 2590, 224, 604, 3032, 3143, 2959, 839, 177, 2589, 3735, 2643, 2605, 2788,
- 2713, 3927, 2651, 2790, 520, 730, 2813, 176, 5580, 1283, 414, 4533, 35, 1703, 32, 5759, 214, 27, 30, 31,
- 1654, 1590, 56, 28, 2910, 2055, 3775, 550, 575, 3055, 579, 1719, 35, 1703, 32, 495, 4500, 40, 30, 31,
- 1654, 1590, 3793, 35, 1703, 32, 4863, 3735, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263,
- 106, 76, 77, 108, 2513, 2563, 2543, 2590, 3525, 35, 315, 2301, 415, 2047, 177, 2589, 77, 2643, 2605,
- 2788, 2713, 8229, 2651, 2790, 5943, 1, 2813, 176, 1384, 1563, 414, 3946, 35, 1703, 32, 4863, 3631, 27,
- 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 2590, 2584,
- 189, 2055, 35, 2352, 311, 177, 2589, 421, 2643, 2605, 2788, 2713, 195, 2651, 2790, 1548, 88, 2813, 176,
- 102, 1496, 414, 77, 1719, 35, 1703, 32, 958, 2732, 3592, 30, 31, 1654, 1590, 415, 2047, 2502, 4087, 35,
- 1703, 32, 4863, 1925, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108,
- 2513, 2563, 2543, 2590, 3159, 712, 325, 3183, 60, 4340, 177, 2589, 5683, 2643, 2605, 2788, 2713, 605,
- 3032, 2790, 358, 361, 2813, 176, 415, 2047, 613, 593, 422, 417, 4501, 35, 1703, 32, 4863, 378, 27, 30,
- 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 2590, 2596,
- 4864, 4085, 678, 3724, 6501, 177, 2589, 2973, 2643, 2605, 2788, 2713, 4636, 2466, 2790, 584, 1535, 2813,
- 176, 4096, 412, 191, 3484, 35, 1703, 32, 4863, 1488, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25,
- 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 2590, 2459, 3775, 2096, 2055, 35, 1509, 424, 2589, 2501,
- 2643, 2605, 2788, 2713, 520, 2984, 2790, 4398, 5220, 2943, 197, 4012, 35, 1703, 32, 4863, 1825, 27, 30,
- 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 2590, 467,
- 4734, 35, 564, 4401, 1535, 177, 2589, 362, 2643, 2605, 2788, 2713, 1746, 1790, 2790, 3178, 215, 2813,
- 176, 5934, 4929, 3280, 821, 2584, 1563, 2055, 35, 2352, 313, 611, 601, 597, 598, 599, 2067, 2505, 1889,
- 3181, 3083, 1472, 4194, 35, 1703, 32, 6187, 2635, 27, 30, 31, 1654, 1590, 26, 28, 3179, 193, 474, 547,
- 3631, 3727, 35, 1703, 32, 4863, 3676, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106,
- 76, 77, 108, 2513, 2563, 2543, 2590, 603, 520, 4397, 630, 3252, 5687, 177, 2589, 2535, 2643, 2605, 2788,
- 2713, 946, 465, 2790, 5928, 2467, 2813, 176, 8126, 1563, 3281, 4501, 35, 1703, 32, 4863, 324, 27, 30,
- 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 2590, 4094,
- 189, 1548, 772, 3776, 704, 177, 2589, 3148, 2643, 2605, 2788, 2713, 3490, 234, 2790, 77, 713, 2813, 176,
- 2940, 1563, 408, 4501, 35, 1703, 32, 4863, 225, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50,
- 2263, 106, 76, 77, 108, 2513, 2563, 2543, 2590, 427, 189, 712, 3675, 463, 134, 177, 2589, 4767, 2643,
- 2605, 2788, 2713, 2153, 89, 2790, 4704, 102, 2813, 176, 6888, 2841, 408, 4501, 35, 1703, 32, 4863, 584,
- 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 2590,
- 5818, 3825, 2055, 35, 2352, 316, 177, 2589, 628, 2643, 2605, 2788, 2713, 68, 3709, 2790, 2201, 3083,
- 2813, 176, 3070, 1535, 408, 1535, 2055, 35, 1509, 424, 601, 597, 598, 599, 357, 4087, 35, 1703, 32,
- 4863, 407, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563,
- 2543, 2590, 77, 255, 1598, 3083, 2904, 2498, 177, 2589, 308, 2643, 2605, 2788, 2713, 520, 3070, 2790,
- 77, 7465, 2813, 176, 411, 1563, 613, 3871, 35, 1703, 32, 4863, 406, 27, 30, 31, 1654, 1590, 26, 28,
- 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 2590, 3573, 189, 928, 77, 3548, 1790,
- 177, 2589, 1048, 2643, 2605, 2788, 2713, 3994, 1535, 2790, 425, 832, 2813, 176, 3185, 310, 175, 4501,
- 35, 1703, 32, 4863, 404, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108,
- 2513, 2563, 2543, 2590, 2055, 35, 2352, 4046, 429, 2929, 177, 2589, 463, 2643, 2605, 2788, 2713, 4101,
- 1535, 2790, 77, 3290, 2813, 176, 339, 1563, 192, 4501, 35, 1703, 32, 4863, 479, 27, 30, 31, 1654, 1590,
- 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 2590, 428, 189, 409, 77, 463,
- 1598, 177, 2589, 1138, 2643, 2605, 2788, 2713, 4204, 3568, 2790, 3638, 4663, 2813, 176, 2584, 7951, 188,
- 411, 5818, 4501, 35, 1703, 32, 4863, 612, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263,
- 106, 76, 77, 108, 2513, 2563, 2543, 2590, 2681, 35, 2352, 311, 533, 2438, 177, 2589, 77, 2643, 2605,
- 2788, 2713, 4856, 3070, 2790, 77, 1331, 2813, 176, 3651, 1563, 187, 4501, 35, 1703, 32, 4863, 4604, 27,
- 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 2590, 51,
- 189, 2055, 4103, 2352, 74, 177, 2589, 1384, 2643, 2605, 2788, 2713, 4216, 1025, 2790, 77, 585, 2813,
- 176, 3364, 1563, 186, 4501, 35, 1703, 32, 4863, 6290, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25,
- 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 2590, 3903, 189, 2551, 3147, 742, 4406, 177, 2589, 3070,
- 2643, 2605, 2788, 2713, 4250, 2366, 2790, 68, 2364, 2813, 176, 332, 2911, 185, 4501, 35, 1703, 32, 4863,
- 3447, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543,
- 2590, 2681, 35, 2352, 4108, 2692, 3080, 177, 2589, 77, 2643, 2605, 2788, 2713, 4778, 338, 2790, 77,
- 3955, 2813, 176, 5818, 1563, 184, 4501, 35, 1703, 32, 4863, 2413, 27, 30, 31, 1654, 1590, 26, 28, 2249,
- 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 2590, 4500, 189, 623, 44, 3253, 998, 177,
- 2589, 3257, 2643, 2605, 2788, 2713, 4254, 418, 2790, 77, 1564, 2813, 176, 5818, 1563, 183, 4501, 35,
- 1703, 32, 4863, 3447, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108,
- 2513, 2563, 2543, 2590, 388, 189, 910, 77, 363, 370, 177, 2589, 7004, 2643, 2605, 2788, 2713, 3790,
- 3070, 2790, 68, 4864, 2813, 176, 4473, 6501, 182, 4501, 35, 1703, 32, 4863, 2413, 27, 30, 31, 1654,
- 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 2590, 2055, 35, 2352,
- 4153, 2055, 4038, 177, 2589, 3257, 2643, 2605, 2788, 2713, 939, 335, 2790, 77, 93, 2813, 176, 1048,
- 7083, 181, 4501, 35, 1703, 32, 4863, 222, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263,
- 106, 76, 77, 108, 2513, 2563, 2543, 2590, 2055, 35, 2352, 565, 369, 370, 177, 2589, 1546, 2643, 2605,
- 2788, 2713, 2083, 391, 2790, 68, 70, 2813, 176, 331, 593, 180, 4501, 35, 1703, 32, 4863, 203, 27, 30,
- 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 2590, 1889,
- 2323, 35, 432, 6277, 324, 177, 2589, 77, 2643, 2605, 2788, 2713, 1640, 624, 2790, 77, 5230, 2813, 176,
- 1125, 1563, 179, 4501, 35, 1703, 32, 4863, 1283, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50,
- 2263, 106, 76, 77, 108, 2513, 2563, 2543, 2590, 77, 3595, 4500, 2459, 3775, 7215, 177, 2589, 322, 2643,
- 2605, 2788, 2713, 466, 3455, 2790, 77, 71, 2813, 176, 1535, 2293, 178, 3643, 35, 1703, 32, 4863, 716,
- 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 3153,
- 2323, 35, 432, 2097, 378, 2055, 35, 330, 189, 2792, 483, 1598, 440, 2827, 1598, 4119, 35, 1703, 32,
- 6187, 2802, 27, 30, 31, 1654, 1590, 59, 28, 531, 3359, 2941, 3812, 2760, 4119, 35, 1703, 32, 6187, 3070,
- 27, 30, 31, 1654, 1590, 58, 28, 3929, 214, 4631, 35, 1703, 32, 4863, 2811, 27, 30, 31, 1654, 1590, 26,
- 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 3153, 5818, 4631, 35, 1703, 32,
- 4863, 162, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563,
- 2543, 3153, 1019, 389, 326, 3144, 642, 1133, 162, 2055, 35, 1509, 424, 324, 77, 390, 5818, 3157, 68,
- 854, 5818, 3155, 593, 3168, 77, 5818, 3167, 5681, 3174, 1726, 3244, 161, 173, 3144, 600, 597, 598, 599,
- 1592, 3776, 1036, 2597, 3282, 321, 4190, 3157, 8402, 457, 24, 3155, 4082, 3168, 2804, 308, 3167, 1150,
- 3174, 6709, 3244, 161, 172, 4631, 35, 1703, 32, 4863, 715, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296,
- 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 3153, 5818, 4631, 35, 1703, 32, 4863, 162, 27, 30,
- 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 3153, 375,
- 1229, 77, 3144, 413, 4050, 162, 2638, 5672, 2055, 35, 1509, 424, 3445, 5818, 3157, 4509, 77, 5818, 3155,
- 387, 3168, 2313, 416, 3167, 1699, 3174, 77, 3244, 161, 171, 3144, 1314, 379, 2694, 2340, 384, 2800, 520,
- 2985, 3385, 2674, 7534, 3157, 8402, 620, 3383, 3155, 677, 3168, 3779, 4131, 3167, 49, 3174, 2413, 3244,
- 161, 170, 4631, 35, 1703, 32, 4863, 46, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263,
- 106, 76, 77, 108, 2513, 2563, 2543, 3153, 5818, 4631, 35, 1703, 32, 4863, 162, 27, 30, 31, 1654, 1590,
- 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 3153, 5818, 208, 68, 3144,
- 3880, 1535, 162, 2055, 35, 1509, 424, 2055, 35, 1509, 424, 3157, 1325, 3642, 370, 3155, 387, 3168, 77,
- 1765, 3167, 1252, 3174, 1940, 3244, 161, 169, 3144, 69, 379, 2694, 2340, 384, 77, 68, 2694, 77, 4056,
- 1986, 3157, 8402, 2953, 1598, 3155, 377, 3168, 212, 470, 3167, 2599, 3174, 469, 3244, 161, 168, 4631,
- 35, 1703, 32, 4863, 587, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108,
- 2513, 2563, 2543, 3153, 232, 4631, 35, 1703, 32, 4863, 162, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296,
- 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 3153, 5818, 1310, 1384, 3144, 4097, 1535, 162,
- 2055, 35, 1509, 424, 77, 1638, 5818, 4731, 3157, 6062, 77, 5818, 3155, 387, 3168, 1450, 426, 3167, 1329,
- 3174, 509, 3244, 161, 167, 3144, 68, 379, 2694, 2340, 384, 1347, 1432, 600, 597, 598, 599, 3157, 1431,
- 53, 1598, 3155, 577, 3168, 52, 468, 3167, 5740, 3174, 4082, 3244, 161, 166, 4631, 35, 1703, 32, 4863,
- 586, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543,
- 3153, 5818, 4631, 35, 1703, 32, 4863, 162, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263,
- 106, 76, 77, 108, 2513, 2563, 2543, 3153, 6131, 3447, 2514, 3144, 3261, 4269, 162, 4341, 3070, 1126,
- 1444, 5867, 4044, 1851, 330, 3157, 68, 77, 5818, 3155, 77, 3168, 2907, 2302, 3167, 4911, 3174, 2696,
- 3244, 161, 165, 3144, 600, 597, 598, 599, 2584, 2584, 68, 600, 597, 598, 599, 3157, 2810, 1369, 2886,
- 3155, 1691, 3168, 633, 2413, 3167, 3685, 3174, 925, 3244, 161, 164, 4631, 35, 1703, 32, 4863, 231, 27,
- 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 3153, 334,
- 5086, 35, 1703, 32, 4863, 162, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77,
- 108, 2513, 2563, 2543, 2590, 322, 3594, 3759, 3144, 706, 705, 1745, 2589, 2793, 2643, 2605, 2788, 3704,
- 365, 370, 3157, 1901, 77, 77, 3155, 1724, 3168, 3245, 3251, 3167, 5766, 3174, 5818, 3244, 161, 163,
- 5086, 35, 1703, 32, 4863, 913, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77,
- 108, 2513, 2563, 2543, 2590, 3800, 602, 1607, 2576, 35, 1509, 424, 2589, 2651, 2643, 2605, 2788, 2713,
- 1708, 3941, 2790, 4097, 1119, 2943, 197, 4501, 35, 1703, 32, 4863, 2196, 27, 30, 31, 1654, 1590, 26, 28,
- 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 2590, 308, 827, 5818, 3719, 232, 4057,
- 177, 2589, 2584, 2643, 2605, 2788, 2713, 1716, 3486, 2790, 6128, 68, 2813, 176, 3168, 2588, 641, 2323,
- 35, 2918, 3142, 68, 601, 597, 598, 599, 672, 2047, 622, 4501, 35, 1703, 32, 4863, 4035, 27, 30, 31,
- 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 2590, 2863, 4085,
- 438, 235, 2976, 49, 177, 2589, 2983, 2643, 2605, 2788, 2713, 233, 3162, 2790, 2035, 1044, 2813, 176,
- 5818, 3166, 140, 4501, 35, 1703, 32, 4863, 707, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50,
- 2263, 106, 76, 77, 108, 2513, 2563, 2543, 2590, 77, 3177, 621, 72, 3274, 4872, 177, 2589, 77, 2643,
- 2605, 2788, 2713, 3875, 3372, 2790, 3554, 68, 2813, 176, 5818, 5818, 3471, 5818, 4501, 35, 1703, 32,
- 4863, 3866, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563,
- 2543, 2590, 611, 90, 385, 6279, 634, 2793, 177, 2589, 4033, 2643, 2605, 2788, 2713, 2584, 442, 2790, 77,
- 6285, 2813, 176, 2089, 1389, 3639, 4696, 35, 1703, 32, 4863, 3056, 27, 30, 31, 1654, 1590, 26, 28, 2249,
- 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 3153, 6291, 5086, 35, 1703, 32, 4863, 162,
- 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 2590,
- 2672, 5934, 1695, 3144, 607, 4378, 1563, 2589, 77, 2643, 2605, 3646, 68, 4401, 68, 3157, 2888, 708, 77,
- 3155, 5959, 3168, 2963, 2385, 3167, 6732, 3174, 5818, 3244, 161, 160, 4761, 35, 1703, 32, 4863, 193, 27,
- 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 2590, 131,
- 3376, 1438, 77, 256, 68, 177, 2589, 2637, 2643, 2605, 2788, 2713, 1745, 4206, 2790, 77, 6346, 2813, 176,
- 5818, 1563, 222, 5086, 35, 1703, 32, 4863, 2584, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50,
- 2263, 106, 76, 77, 108, 2513, 2563, 2543, 2590, 2791, 189, 3583, 226, 3276, 3686, 238, 2589, 2651, 2643,
- 2605, 2788, 2713, 4359, 2570, 2790, 5818, 3890, 2943, 197, 5086, 35, 1703, 32, 4863, 2668, 27, 30, 31,
- 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 2590, 1031, 4189,
- 2765, 3988, 3153, 5882, 585, 2589, 4340, 2643, 2605, 2788, 2713, 97, 3155, 2790, 4050, 3259, 2943, 197,
- 3374, 6354, 3470, 2044, 35, 1509, 424, 601, 597, 598, 599, 5818, 672, 2047, 6282, 5086, 35, 1703, 32,
- 4863, 459, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563,
- 2543, 2590, 2651, 487, 3772, 4282, 2413, 49, 5035, 2589, 5100, 2643, 2605, 2788, 2713, 5165, 2890, 2790,
- 2035, 2033, 2943, 197, 5086, 35, 1703, 32, 4863, 329, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25,
- 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 2590, 1947, 1439, 4510, 4640, 4965, 713, 4796, 2589, 4861,
- 2643, 2605, 2788, 2713, 3062, 541, 2790, 4233, 3373, 2943, 197, 2055, 35, 1509, 424, 672, 2047, 5295,
- 3483, 601, 597, 598, 599, 340, 3722, 370, 5086, 35, 1703, 32, 4863, 458, 27, 30, 31, 1654, 1590, 26, 28,
- 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 2590, 539, 540, 49, 5380, 2584, 5849,
- 1982, 2589, 5386, 2643, 2605, 2788, 2713, 2035, 1114, 2790, 3471, 4202, 2943, 197, 5346, 35, 1703, 32,
- 4863, 461, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563,
- 2543, 2590, 5411, 35, 1509, 424, 3882, 1773, 2782, 2589, 1899, 2643, 2605, 2788, 2713, 271, 296, 2790,
- 2350, 4339, 2943, 197, 4230, 3765, 35, 489, 4338, 6494, 4470, 652, 597, 598, 599, 3879, 601, 597, 598,
- 599, 4799, 844, 143, 98, 644, 5818, 5728, 5818, 308, 4826, 35, 1703, 32, 4863, 266, 27, 30, 31, 1654,
- 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 648, 76, 77, 269, 264, 265, 3936, 35, 489, 5507, 6494, 5579,
- 4925, 4310, 3636, 1558, 4989, 2368, 5086, 35, 1703, 32, 4863, 4034, 27, 30, 31, 1654, 1590, 26, 28,
- 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 3476, 309, 600, 597, 598, 599, 2438, 5743, 9900,
- 276, 279, 282, 3249, 9900, 9900, 992, 6745, 5818, 3464, 285, 5818, 5818, 645, 5837, 4375, 4784, 6180,
- 4044, 35, 330, 9900, 6769, 2067, 5818, 2485, 35, 1703, 32, 5508, 4563, 27, 30, 31, 1654, 1590, 374, 28,
- 2651, 9900, 5651, 3378, 7538, 3712, 67, 600, 597, 598, 599, 9900, 9900, 9900, 600, 597, 598, 599, 66,
- 9900, 5818, 1384, 5738, 925, 5818, 5086, 35, 1703, 32, 4863, 7150, 27, 30, 31, 1654, 1590, 26, 28, 2249,
- 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 3539, 65, 9900, 616, 9900, 64, 1117, 354,
- 1199, 356, 9900, 2299, 9900, 349, 1121, 482, 3366, 3374, 9900, 9900, 672, 2047, 5818, 367, 997, 5818,
- 5281, 35, 1703, 32, 4863, 9900, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76,
- 77, 108, 2513, 2563, 2543, 3153, 2203, 55, 6874, 9900, 54, 5818, 5523, 35, 1509, 424, 3882, 486, 3366,
- 3374, 913, 9900, 5934, 9900, 9900, 271, 296, 1563, 341, 345, 780, 5818, 5818, 601, 597, 598, 599, 3144,
- 6344, 652, 597, 598, 599, 101, 1607, 9900, 9900, 1583, 9900, 3157, 9900, 9900, 2289, 3155, 9900, 3168,
- 308, 193, 3167, 2841, 3995, 9900, 266, 3767, 3021, 601, 597, 598, 599, 5818, 5818, 6347, 1936, 4050,
- 652, 597, 598, 599, 3591, 269, 264, 265, 5148, 2030, 35, 3935, 32, 5508, 4563, 27, 30, 31, 1654, 1590,
- 374, 28, 627, 266, 9900, 9900, 9900, 3135, 5795, 591, 9900, 600, 597, 598, 599, 9900, 600, 597, 598,
- 599, 278, 264, 265, 3065, 9900, 309, 9900, 3464, 4340, 2413, 9900, 9900, 6044, 276, 279, 282, 3249,
- 2255, 617, 992, 6964, 9900, 9900, 285, 9900, 9900, 645, 5837, 4375, 4784, 6180, 3082, 4303, 9900, 6282,
- 6769, 8265, 9900, 9900, 2299, 354, 1199, 356, 9900, 2299, 9900, 349, 1121, 9900, 9900, 9900, 6757, 918,
- 9900, 9900, 7538, 367, 2602, 5216, 35, 1703, 32, 4863, 386, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296,
- 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 3153, 3765, 370, 9900, 6874, 5216, 35, 1703, 32,
- 4863, 9900, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563,
- 2543, 3153, 3144, 6356, 455, 3934, 9900, 3591, 9900, 396, 9900, 5148, 387, 9900, 3157, 9900, 9900, 9900,
- 3155, 9900, 3168, 9900, 9900, 3985, 9900, 379, 2694, 2340, 384, 9900, 94, 9900, 9900, 3144, 600, 597,
- 598, 599, 9900, 9900, 3596, 9900, 9900, 9900, 9900, 3157, 9900, 9900, 9900, 3155, 3464, 3981, 5086, 35,
- 1703, 32, 4863, 9900, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108,
- 2513, 2563, 2543, 2590, 1133, 442, 9900, 2299, 9900, 3479, 716, 2589, 9900, 2643, 3654, 9900, 9900,
- 9900, 9900, 367, 5934, 9900, 9900, 9900, 9900, 1563, 9900, 9900, 9900, 9900, 9900, 600, 597, 598, 599,
- 9900, 262, 9900, 9900, 9900, 189, 9900, 9900, 9900, 9900, 759, 1598, 4082, 9900, 9900, 9900, 6912, 3018,
- 213, 9900, 193, 237, 249, 4745, 700, 9900, 9900, 9900, 9900, 202, 236, 246, 247, 248, 250, 651, 699,
- 5216, 35, 1703, 32, 4863, 9900, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76,
- 77, 108, 2513, 2563, 2543, 3153, 201, 9900, 216, 200, 203, 204, 205, 206, 207, 136, 9900, 9900, 9900,
- 9900, 716, 3624, 35, 1703, 32, 5364, 4217, 27, 30, 31, 1654, 1590, 374, 28, 1433, 9900, 9900, 3144,
- 9900, 4340, 9900, 9900, 9900, 3591, 9900, 9900, 262, 5148, 9900, 3157, 189, 4306, 9900, 3984, 3988, 759,
- 1598, 3038, 9900, 4340, 1718, 9900, 3018, 213, 9900, 378, 237, 249, 4745, 700, 600, 597, 598, 599, 202,
- 236, 246, 247, 248, 250, 651, 699, 9900, 9900, 9900, 6282, 3464, 652, 597, 598, 599, 2285, 351, 1710,
- 356, 3382, 35, 1703, 32, 5508, 9900, 27, 30, 31, 1654, 1590, 374, 28, 9900, 201, 266, 217, 200, 203,
- 204, 205, 206, 207, 2299, 9900, 9900, 214, 600, 597, 598, 599, 9900, 281, 264, 265, 367, 4739, 5834,
- 9900, 9900, 9900, 9900, 4340, 5228, 4077, 35, 1509, 424, 9900, 9900, 9900, 9900, 9900, 5768, 35, 1703,
- 32, 5364, 4563, 27, 30, 31, 1654, 1590, 374, 28, 9900, 6136, 6282, 9900, 9900, 354, 1199, 356, 3549,
- 2299, 9900, 350, 1121, 541, 600, 597, 598, 599, 9900, 2118, 9900, 368, 49, 6022, 4340, 1235, 5355, 9900,
- 9900, 387, 5016, 4340, 9900, 2035, 1349, 600, 597, 598, 599, 9900, 9900, 9900, 381, 2694, 2340, 384,
- 9900, 9900, 9900, 1341, 262, 1924, 600, 597, 598, 599, 9900, 6282, 354, 1199, 356, 538, 540, 9900, 349,
- 1121, 9900, 9900, 3464, 1235, 2649, 443, 8216, 714, 9900, 997, 91, 35, 1703, 32, 5364, 4563, 27, 30, 31,
- 1654, 1590, 374, 28, 3056, 9900, 395, 9900, 9900, 3467, 9900, 600, 597, 598, 599, 364, 9900, 9900, 600,
- 597, 598, 599, 9900, 444, 445, 446, 815, 3464, 3216, 3441, 3466, 9900, 9900, 9900, 5016, 9900, 9900,
- 9900, 9900, 9900, 9900, 341, 345, 780, 9900, 9900, 91, 35, 1703, 32, 5364, 4563, 27, 30, 31, 1654, 1590,
- 374, 28, 2919, 9900, 541, 354, 1199, 356, 2289, 9900, 3041, 349, 1121, 9900, 9900, 9900, 601, 597, 598,
- 599, 9900, 9900, 997, 5086, 35, 1703, 32, 4863, 3718, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25,
- 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 2590, 1357, 5934, 538, 540, 9900, 9900, 1563, 2589, 9900,
- 3626, 354, 1199, 356, 9900, 9900, 9900, 349, 1121, 9900, 9900, 9900, 447, 450, 341, 345, 780, 9900,
- 6084, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 4114, 193, 9900, 9900, 842, 9900, 9900, 5216, 35, 1703,
- 32, 4863, 1545, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513,
- 2563, 2543, 3153, 9900, 544, 2055, 35, 1509, 424, 716, 5086, 35, 1703, 32, 4863, 9900, 27, 30, 31, 1654,
- 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 3484, 3144, 262, 9900, 9900, 9900, 189,
- 9900, 9900, 9900, 9900, 759, 1598, 3973, 9900, 9900, 49, 9900, 3018, 213, 9900, 9900, 237, 249, 4745,
- 700, 4339, 2035, 5265, 9900, 202, 236, 246, 247, 248, 250, 651, 699, 9900, 9900, 9900, 9900, 9900, 646,
- 2055, 35, 1509, 424, 716, 9900, 9900, 9900, 1789, 35, 1703, 32, 5364, 9900, 27, 30, 31, 1654, 1590, 374,
- 28, 201, 9900, 4036, 200, 203, 204, 205, 206, 207, 262, 9900, 9900, 9900, 189, 601, 597, 598, 599, 759,
- 1598, 9900, 9900, 9900, 49, 1337, 3018, 213, 9900, 9900, 237, 249, 4745, 700, 9900, 2035, 2455, 9900,
- 202, 236, 246, 247, 248, 250, 651, 699, 9900, 9900, 9900, 9900, 9900, 748, 600, 597, 598, 599, 716,
- 9900, 9900, 354, 1199, 356, 9900, 9900, 9900, 663, 1121, 9900, 3464, 9900, 9900, 9900, 9900, 201, 9900,
- 211, 200, 203, 204, 205, 206, 207, 262, 9900, 9900, 9900, 189, 9900, 9900, 77, 9900, 759, 1598, 9900,
- 4077, 9900, 9900, 9900, 3018, 213, 3378, 9900, 237, 249, 4745, 700, 9900, 9900, 9900, 9900, 202, 236,
- 246, 247, 248, 250, 651, 699, 9900, 9900, 378, 9900, 9900, 850, 2044, 35, 1509, 424, 716, 2827, 6041,
- 35, 1703, 32, 5364, 4563, 27, 30, 31, 1654, 1590, 374, 28, 9900, 9900, 201, 2941, 209, 200, 203, 204,
- 205, 206, 207, 262, 9900, 9900, 9900, 189, 9900, 9900, 9900, 9900, 759, 1598, 9900, 9900, 9900, 49,
- 3271, 3018, 213, 9900, 9900, 237, 249, 4745, 700, 9900, 2035, 1226, 9900, 202, 236, 246, 247, 248, 250,
- 651, 699, 9900, 9900, 9900, 9900, 9900, 952, 2178, 35, 1509, 424, 716, 354, 1199, 356, 9900, 9900, 9900,
- 349, 1121, 9900, 2795, 9900, 9900, 9900, 9900, 9900, 9900, 201, 4119, 643, 200, 203, 204, 205, 206, 207,
- 262, 9900, 9900, 9900, 189, 2189, 35, 1509, 424, 759, 1598, 9900, 9900, 9900, 49, 9900, 3018, 213, 9900,
- 9900, 237, 249, 4745, 700, 9900, 2035, 47, 9900, 202, 236, 246, 247, 248, 250, 651, 699, 9900, 9900,
- 9900, 9900, 9900, 1054, 2044, 35, 1509, 424, 716, 9900, 9900, 49, 9900, 9900, 5958, 9900, 9900, 9900,
- 1287, 878, 9900, 9900, 2035, 47, 9900, 201, 9900, 210, 200, 203, 204, 205, 206, 207, 262, 9900, 9900,
- 9900, 189, 2189, 35, 1509, 424, 759, 1598, 378, 9900, 9900, 49, 189, 3018, 213, 9900, 1011, 237, 249,
- 4745, 700, 9900, 2035, 4158, 221, 202, 236, 246, 247, 248, 250, 651, 699, 9900, 5370, 9900, 9900, 9900,
- 1156, 2044, 35, 1509, 424, 716, 9900, 9900, 49, 9900, 9900, 9900, 9900, 9900, 9900, 2795, 9900, 9900,
- 5737, 2035, 47, 9900, 201, 4340, 220, 200, 203, 204, 205, 206, 207, 262, 9900, 9900, 9900, 189, 9900,
- 9900, 77, 9900, 759, 1598, 9900, 716, 9900, 49, 9900, 3018, 213, 378, 1422, 237, 249, 4745, 700, 9900,
- 2035, 47, 9900, 202, 236, 246, 247, 248, 250, 651, 699, 9900, 9900, 378, 9900, 9900, 1258, 189, 223,
- 1876, 9900, 716, 2827, 9900, 9900, 9900, 9900, 9900, 9900, 3130, 9900, 934, 9900, 9900, 9900, 9900,
- 9900, 9900, 201, 2941, 4156, 200, 203, 204, 205, 206, 207, 262, 9900, 9900, 9900, 189, 2382, 35, 1509,
- 424, 759, 1598, 9900, 9900, 9900, 9900, 3016, 3018, 213, 9900, 9900, 237, 249, 4745, 700, 9900, 9900,
- 9900, 9900, 202, 236, 246, 247, 248, 250, 651, 699, 9900, 9900, 9900, 9900, 9900, 1360, 4152, 35, 1509,
- 424, 716, 9900, 9900, 49, 9900, 9900, 9900, 9900, 9900, 9900, 3716, 9900, 9900, 9900, 2035, 47, 9900,
- 201, 9900, 225, 200, 203, 204, 205, 206, 207, 262, 9900, 9900, 9900, 189, 2189, 35, 1509, 424, 759,
- 1598, 9900, 9900, 9900, 49, 1235, 3018, 213, 9900, 2690, 237, 249, 4745, 700, 9900, 2035, 2150, 9900,
- 202, 236, 246, 247, 248, 250, 651, 699, 9900, 9900, 9900, 9900, 9900, 1462, 600, 597, 598, 599, 716,
- 9900, 9900, 49, 9900, 9900, 9900, 9900, 9900, 9900, 1947, 9900, 3464, 9900, 2035, 3039, 9900, 201, 9900,
- 219, 200, 203, 204, 205, 206, 207, 262, 9900, 9900, 9900, 189, 478, 9900, 492, 9900, 759, 1598, 2066,
- 9900, 9900, 9900, 9900, 3018, 213, 3375, 3419, 237, 249, 4745, 700, 273, 296, 9900, 9900, 202, 236, 246,
- 247, 248, 250, 651, 699, 9900, 9900, 652, 597, 598, 599, 9900, 9900, 9900, 91, 35, 1703, 32, 5364, 4563,
- 27, 30, 31, 1654, 1590, 374, 28, 9900, 9900, 9900, 266, 9900, 201, 9900, 228, 200, 203, 204, 205, 206,
- 207, 600, 597, 598, 599, 9900, 9900, 274, 264, 265, 9900, 9900, 5086, 35, 1703, 32, 4863, 5016, 27, 30,
- 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 3546, 9900,
- 9900, 9900, 9900, 9900, 9900, 354, 1199, 356, 9900, 9900, 9900, 349, 1121, 9900, 9900, 9900, 9900, 5086,
- 35, 1703, 32, 4863, 997, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108,
- 2513, 2563, 2543, 2590, 9900, 9900, 5086, 35, 1703, 32, 4863, 3629, 27, 30, 31, 1654, 1590, 26, 28,
- 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 2590, 342, 345, 780, 5635, 35, 553,
- 9900, 3643, 9900, 9900, 9900, 9900, 2055, 35, 1509, 424, 271, 296, 9900, 4157, 9900, 9900, 9900, 9900,
- 716, 2055, 35, 1509, 424, 9900, 652, 597, 598, 599, 2164, 35, 3935, 32, 5364, 4563, 27, 30, 31, 1654,
- 1590, 374, 28, 9900, 9900, 9900, 378, 9900, 5834, 266, 189, 9900, 49, 4340, 9900, 2827, 1598, 4093, 597,
- 598, 599, 9900, 2802, 2035, 1400, 49, 269, 264, 265, 9900, 929, 9900, 2941, 6148, 2760, 9900, 2035,
- 1204, 9900, 6282, 9900, 9900, 6225, 35, 3935, 32, 5364, 4563, 27, 30, 31, 1654, 1590, 374, 28, 2405,
- 9900, 600, 597, 598, 599, 354, 1199, 356, 9900, 9900, 9900, 349, 1121, 600, 597, 598, 599, 3969, 276,
- 279, 282, 3249, 2602, 9900, 992, 7048, 3708, 9900, 9900, 6148, 5148, 9900, 6172, 7940, 8305, 8466, 9900,
- 9900, 6258, 35, 3935, 32, 5364, 4563, 27, 30, 31, 1654, 1590, 374, 28, 9900, 9900, 600, 597, 598, 599,
- 354, 1199, 356, 9900, 9900, 2200, 349, 1121, 4093, 597, 598, 599, 3464, 2574, 9900, 395, 9900, 2602,
- 273, 296, 2055, 35, 1509, 424, 6148, 6865, 455, 3934, 9900, 9900, 9900, 9900, 652, 597, 598, 599, 9900,
- 4203, 3441, 3466, 652, 597, 598, 599, 2299, 9900, 9900, 9900, 562, 563, 567, 9900, 354, 1199, 356, 266,
- 368, 9900, 349, 1121, 9900, 9900, 9900, 266, 49, 9900, 9900, 9900, 9900, 2602, 9900, 9900, 274, 264,
- 265, 2035, 1349, 7099, 455, 3934, 284, 264, 265, 8498, 5086, 35, 1703, 32, 4863, 9900, 27, 30, 31, 1654,
- 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 3576, 9900, 9900, 9900,
- 9900, 6210, 35, 1703, 32, 5364, 8454, 27, 30, 31, 1654, 1590, 374, 28, 9900, 6865, 455, 3934, 5086, 35,
- 1703, 32, 4863, 9900, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108,
- 2513, 2563, 2543, 3579, 5086, 35, 1703, 32, 4863, 9900, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23,
- 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 3589, 354, 1199, 356, 2069, 9900, 9900, 349, 1121,
- 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 3924, 9900, 9900, 9900, 9900, 9900, 9900, 387,
- 9900, 9900, 9900, 9900, 9900, 600, 597, 598, 599, 9900, 9900, 9900, 379, 2694, 2340, 384, 9900, 9900,
- 9900, 9900, 9900, 4334, 5086, 35, 1703, 32, 4863, 3923, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23,
- 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 3970, 5086, 35, 1703, 32, 4863, 9900, 27, 30, 31,
- 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 3971, 5086, 35,
- 1703, 32, 4863, 9900, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108,
- 2513, 2563, 2543, 3972, 6297, 35, 1703, 32, 5364, 8271, 27, 30, 31, 1654, 1590, 374, 28, 2044, 35, 1509,
- 424, 9900, 9900, 9900, 2044, 35, 1509, 424, 9900, 9900, 401, 5086, 35, 1703, 32, 4863, 386, 27, 30, 31,
- 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 4083, 4471, 9900,
- 9900, 49, 2055, 35, 1509, 424, 9900, 9900, 49, 2388, 9900, 9900, 2035, 47, 4077, 354, 1199, 356, 9900,
- 2035, 47, 349, 1121, 9900, 9900, 600, 597, 598, 599, 9900, 9900, 9900, 1923, 9900, 9900, 9900, 9900,
- 9900, 9900, 387, 262, 4082, 9900, 986, 9900, 9900, 49, 9900, 9900, 759, 1643, 9900, 379, 2694, 2340,
- 384, 9900, 2035, 1688, 9900, 239, 249, 4745, 700, 9900, 9900, 9900, 3596, 9900, 238, 246, 247, 248, 250,
- 651, 699, 4891, 35, 1703, 32, 4863, 9900, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263,
- 637, 76, 77, 240, 242, 244, 815, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 251, 241,
- 243, 5086, 35, 1703, 32, 4863, 9900, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106,
- 76, 77, 108, 2513, 2563, 3591, 9900, 9900, 13, 3053, 7439, 5086, 35, 1703, 32, 4863, 9900, 27, 30, 31,
- 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 3604, 4369, 35, 1703, 32,
- 4863, 9900, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 107, 6327, 35,
- 1703, 32, 5364, 8454, 27, 30, 31, 1654, 1590, 374, 28, 5467, 35, 1509, 424, 3882, 2651, 77, 9900, 9900,
- 9900, 9900, 4077, 3978, 272, 296, 751, 5148, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 2671, 9900, 9900,
- 652, 597, 598, 599, 4157, 9900, 9900, 9900, 9900, 716, 378, 9900, 600, 597, 598, 599, 9900, 308, 9900,
- 2827, 9900, 9900, 9900, 266, 652, 597, 598, 599, 3464, 9900, 9900, 354, 1199, 356, 9900, 378, 2941, 349,
- 1121, 189, 270, 264, 265, 9900, 2827, 1598, 9900, 266, 588, 672, 2047, 2802, 9900, 9900, 9900, 387,
- 9900, 9900, 9900, 3290, 2299, 2941, 9900, 2760, 287, 264, 265, 9900, 379, 2694, 2340, 384, 6757, 9900,
- 9900, 9900, 9900, 9900, 9900, 9900, 309, 9900, 9900, 589, 2811, 9900, 9900, 9900, 277, 280, 283, 3249,
- 9900, 2771, 992, 9900, 9900, 9900, 286, 9900, 9900, 646, 1654, 35, 1703, 32, 5508, 9900, 27, 30, 31,
- 1654, 1590, 374, 28, 9900, 2044, 35, 1509, 424, 600, 597, 598, 599, 9900, 9900, 9900, 9900, 9900, 600,
- 597, 598, 599, 9900, 9900, 9900, 4366, 9900, 9900, 9900, 1654, 35, 1703, 32, 5508, 3464, 27, 30, 31,
- 1654, 1590, 374, 28, 9900, 9900, 9900, 9900, 9900, 3444, 9900, 49, 9900, 5148, 9900, 9900, 96, 9900,
- 600, 597, 598, 599, 2035, 47, 354, 1199, 356, 9900, 2299, 9900, 352, 1121, 9900, 9900, 5228, 9900, 600,
- 597, 598, 599, 368, 9900, 9900, 5579, 35, 1509, 424, 3882, 9900, 9900, 4157, 9900, 3464, 3023, 9900,
- 716, 272, 296, 9900, 9900, 9900, 9900, 354, 1199, 356, 9900, 2299, 9900, 350, 1121, 652, 597, 598, 599,
- 9900, 9900, 9900, 9900, 368, 9900, 9900, 378, 9900, 2621, 2299, 189, 9900, 308, 4077, 9900, 2827, 1598,
- 9900, 266, 9900, 9900, 368, 2802, 9900, 9900, 9900, 9900, 9900, 9900, 387, 9900, 9900, 2941, 9900, 2760,
- 270, 264, 265, 9900, 262, 9900, 9900, 381, 2694, 2340, 384, 9900, 9900, 759, 9900, 9900, 9900, 5691, 35,
- 553, 2916, 9900, 9900, 9900, 239, 249, 4745, 700, 9900, 9900, 272, 296, 9900, 238, 246, 247, 248, 250,
- 651, 699, 309, 9900, 9900, 9900, 652, 597, 598, 599, 277, 280, 283, 3249, 2718, 9900, 992, 9900, 9900,
- 4077, 286, 9900, 9900, 646, 240, 242, 244, 815, 9900, 266, 2958, 9900, 9900, 9900, 9900, 9900, 9900,
- 9900, 251, 241, 243, 9900, 9900, 9900, 9900, 262, 270, 264, 265, 9900, 9900, 9900, 9900, 9900, 759,
- 9900, 9900, 600, 597, 598, 599, 9900, 9900, 9900, 9900, 239, 249, 4745, 700, 1997, 9900, 7439, 9900,
- 4334, 238, 246, 247, 248, 250, 651, 699, 3346, 35, 1703, 32, 5364, 4563, 27, 30, 31, 1654, 1590, 374,
- 28, 277, 280, 283, 3249, 9900, 9900, 992, 9900, 9900, 240, 242, 244, 815, 9900, 601, 597, 598, 599,
- 9900, 9900, 9900, 9900, 9900, 251, 241, 243, 5086, 35, 1703, 32, 4863, 9900, 27, 30, 31, 1654, 1590, 26,
- 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 3483, 9900, 2815, 9900, 2199, 9900, 7439, 4077,
- 354, 1199, 356, 9900, 9900, 9900, 349, 1121, 9900, 6108, 9900, 9900, 9900, 9900, 4077, 9900, 9900, 6084,
- 9900, 9900, 9900, 9900, 9900, 9900, 9900, 262, 9900, 9900, 9900, 562, 563, 568, 9900, 9900, 759, 9900,
- 9900, 9900, 9900, 9900, 378, 592, 9900, 9900, 9900, 239, 249, 4745, 700, 2827, 9900, 9900, 9900, 9900,
- 238, 246, 247, 248, 250, 651, 699, 4956, 35, 1703, 32, 4863, 2941, 27, 30, 31, 1654, 1590, 26, 28, 2249,
- 296, 23, 25, 50, 2263, 635, 76, 77, 240, 242, 244, 815, 9900, 9900, 595, 9900, 9900, 9900, 9900, 9900,
- 9900, 9900, 251, 241, 243, 5086, 35, 1703, 32, 4863, 9900, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296,
- 23, 25, 50, 2263, 106, 76, 77, 108, 3525, 9900, 9900, 9900, 9900, 2449, 9900, 7439, 5086, 35, 1703, 32,
- 4863, 9900, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 3529, 4303,
- 35, 1703, 32, 4863, 9900, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 81,
- 4435, 35, 1703, 32, 4863, 9900, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76,
- 77, 81, 2524, 9900, 9900, 9900, 9900, 4077, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900,
- 9900, 2252, 9900, 9900, 9900, 9900, 4077, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 262, 9900,
- 9900, 9900, 9900, 709, 9900, 9900, 9900, 759, 9900, 9900, 2044, 35, 1509, 424, 4399, 262, 9900, 9900,
- 239, 249, 4745, 700, 9900, 9900, 759, 9900, 710, 238, 246, 247, 248, 250, 651, 699, 6164, 239, 249,
- 4745, 700, 9900, 9900, 9900, 9900, 9900, 238, 246, 247, 248, 250, 651, 699, 9900, 9900, 9900, 49, 2912,
- 240, 242, 244, 815, 4077, 652, 597, 598, 599, 2035, 47, 9900, 9900, 9900, 580, 241, 243, 240, 242, 244,
- 815, 9900, 9900, 2044, 35, 1509, 424, 2768, 266, 9900, 262, 252, 241, 243, 9900, 9900, 9900, 9900, 9900,
- 759, 3027, 9900, 9900, 9900, 77, 269, 264, 265, 9900, 4077, 239, 249, 4745, 700, 652, 597, 598, 599,
- 9900, 238, 246, 247, 248, 250, 651, 699, 3009, 49, 77, 9900, 9900, 4077, 9900, 4077, 9900, 378, 9900,
- 266, 2035, 47, 9900, 9900, 9900, 9900, 2827, 9900, 9900, 9900, 240, 242, 244, 815, 9900, 9900, 647, 264,
- 265, 262, 9900, 378, 7623, 2941, 671, 241, 243, 9900, 759, 9900, 2827, 3137, 9900, 9900, 2865, 9900,
- 9900, 9900, 9900, 239, 249, 4745, 700, 9900, 9900, 9900, 3297, 2941, 238, 246, 247, 248, 250, 651, 699,
- 3106, 9900, 9900, 9900, 9900, 4077, 652, 597, 598, 599, 9900, 9900, 9900, 9900, 9900, 3360, 9900, 9900,
- 690, 680, 9900, 9900, 240, 242, 244, 815, 9900, 9900, 9900, 266, 9900, 262, 9900, 9900, 9900, 9900, 670,
- 241, 243, 9900, 759, 9900, 9900, 9900, 9900, 9900, 270, 264, 265, 9900, 9900, 239, 249, 4745, 700, 9900,
- 693, 9900, 9900, 9900, 238, 246, 247, 248, 250, 651, 699, 5021, 35, 1703, 32, 4863, 9900, 27, 30, 31,
- 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 86, 76, 77, 240, 242, 244, 815, 9900, 9900, 9900, 9900,
- 9900, 9900, 9900, 9900, 9900, 9900, 669, 241, 243, 5086, 35, 1703, 32, 4863, 9900, 27, 30, 31, 1654,
- 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 85, 5086, 35, 1703, 32, 4863, 9900, 27, 30, 31,
- 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 83, 5086, 35, 1703, 32, 4863, 9900, 27,
- 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 82, 5086, 35, 1703, 32, 4863,
- 9900, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 81, 5086, 35, 1703, 32,
- 4863, 9900, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 80, 5086, 35,
- 1703, 32, 4863, 9900, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 79,
- 5086, 35, 1703, 32, 4863, 9900, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76,
- 77, 78, 5086, 2402, 1703, 2927, 4863, 9900, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263,
- 106, 76, 77, 84, 3203, 9900, 9900, 9900, 9900, 4077, 2962, 9900, 9900, 9900, 9900, 9900, 9900, 9900,
- 9900, 77, 9900, 3300, 9900, 77, 4077, 9900, 4077, 9900, 4077, 9900, 9900, 9900, 9900, 9900, 9900, 262,
- 9900, 652, 597, 598, 599, 9900, 9900, 9900, 759, 9900, 9900, 9900, 9900, 9900, 378, 9900, 262, 9900,
- 378, 239, 249, 4745, 700, 2827, 266, 759, 9900, 2827, 238, 246, 247, 248, 250, 651, 699, 9900, 239, 249,
- 4745, 700, 2941, 278, 264, 265, 2941, 238, 246, 247, 248, 250, 651, 699, 9900, 9900, 9900, 9900, 9900,
- 240, 242, 244, 815, 9900, 9900, 3731, 9900, 9900, 9900, 545, 9900, 9900, 9900, 581, 241, 243, 240, 242,
- 244, 815, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 340, 241, 243, 4566, 35, 1703, 32,
- 4863, 9900, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 104, 5086, 35,
- 1703, 32, 4863, 9900, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 110,
- 5086, 35, 1703, 32, 4863, 9900, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76,
- 77, 109, 5086, 35, 1703, 32, 4863, 9900, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263,
- 106, 76, 77, 105, 3397, 9900, 9900, 9900, 9900, 4077, 5151, 35, 1703, 32, 4863, 9900, 27, 30, 31, 1654,
- 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 3864, 76, 77, 9900, 9900, 9900, 262, 9900, 9900, 9900, 9900,
- 9900, 9900, 9900, 9900, 759, 9900, 9900 };
- }
-
- public interface BaseAction1 {
- public final static char baseAction1[] = { 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 239, 249, 4745, 700,
- 9900, 9900, 9900, 9900, 9900, 238, 246, 247, 248, 250, 651, 699, 6270, 35, 1703, 32, 5364, 4411, 27, 30,
- 31, 1654, 1590, 374, 28, 1984, 9900, 9900, 9900, 6022, 4340, 9900, 9900, 9900, 240, 242, 244, 815, 9900,
- 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 535, 241, 243, 9900, 9900, 9900, 9900, 9900, 262,
- 9900, 9900, 9900, 439, 6086, 9900, 9900, 9900, 5148, 4340, 6086, 9900, 77, 9900, 5148, 4340, 9900, 4077,
- 9900, 2649, 443, 8216, 714, 9900, 9900, 9900, 351, 1710, 356, 9900, 9900, 600, 597, 598, 599, 6282,
- 6118, 600, 597, 598, 599, 6282, 9900, 378, 3059, 9900, 9900, 3464, 9900, 9900, 9900, 9900, 2827, 3464,
- 9900, 9900, 9900, 444, 445, 446, 815, 9900, 9900, 652, 597, 598, 599, 9900, 9900, 2941, 9900, 652, 597,
- 598, 599, 4157, 9900, 9900, 9900, 2299, 716, 9900, 9900, 9900, 9900, 2299, 266, 9900, 9900, 9900, 9900,
- 367, 543, 9900, 266, 9900, 9900, 367, 9900, 9900, 9900, 3041, 4157, 269, 264, 265, 378, 716, 9900, 9900,
- 189, 281, 264, 265, 9900, 2827, 1598, 9900, 9900, 9900, 9900, 9900, 2802, 6930, 395, 9900, 9900, 9900,
- 9900, 4819, 395, 9900, 2941, 378, 2760, 77, 9900, 189, 9900, 9900, 4077, 3591, 2827, 1598, 1341, 5148,
- 3782, 3441, 3466, 2802, 9900, 9900, 3782, 3441, 3466, 2920, 9900, 9900, 7623, 2941, 9900, 2760, 447,
- 449, 9900, 9900, 378, 9900, 600, 597, 598, 599, 4157, 9900, 9900, 2827, 9900, 716, 9900, 9900, 9900,
- 9900, 2988, 77, 3464, 9900, 9900, 9900, 878, 9900, 9900, 9900, 2941, 3591, 9900, 1943, 9900, 5148, 4904,
- 9900, 9900, 9900, 9900, 378, 9900, 3156, 9900, 189, 9900, 690, 680, 9900, 2827, 1598, 378, 596, 2299,
- 9900, 189, 2802, 600, 597, 598, 599, 9900, 9900, 9900, 9900, 367, 2941, 221, 2760, 652, 597, 598, 599,
- 3464, 3253, 9900, 9900, 5370, 9900, 9900, 9900, 5928, 9900, 77, 692, 9900, 878, 9900, 878, 3828, 77,
- 9900, 266, 9900, 9900, 878, 9900, 6930, 9900, 9900, 9900, 652, 597, 598, 599, 2299, 9900, 9900, 9900,
- 284, 264, 265, 3575, 9900, 378, 9900, 189, 367, 189, 679, 7489, 378, 9900, 9900, 266, 189, 9900, 9900,
- 3018, 213, 221, 9900, 9900, 9900, 9900, 9900, 9900, 221, 9900, 9900, 5370, 569, 264, 265, 9900, 9900,
- 9900, 5370, 9900, 4819, 9900, 9900, 9900, 9900, 9900, 4118, 9900, 9900, 9900, 9900, 9900, 9900, 9900,
- 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 229, 9900, 9900, 9900, 9900,
- 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900,
- 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900,
- 9900, 9900, 9900, 9900, 4120, 9900, 9900, 9900, 9900, 9900, 9900, 4200, 9900, 9900, 9900, 9900, 9900,
- 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900,
- 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900,
- 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900,
- 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900,
- 9900, 9900, 9900, 5518, 230, 9900, 0, 1, 263, 747, 0, 537, 7422, 0, 1, 263, 0, 39, 10602, 0, 39, 10601,
- 697, 0, 39, 9915, 0, 39, 9914, 0, 1, 860, 0, 849, 1, 0, 39, 1, 10602, 0, 39, 1, 10601, 0, 39, 1, 9915,
- 0, 39, 1, 9914, 0, 1, 5597, 0, 1, 818, 0, 263, 253, 0, 1, 1198, 0, 1, 1227, 0, 1, 1358, 0, 10168, 257,
- 0, 10167, 257, 0, 1198, 257, 0, 1227, 257, 0, 1358, 257, 0, 1439, 257, 0, 10273, 257, 0, 10272, 257, 0,
- 10195, 257, 0, 10194, 257, 0, 10193, 257, 0, 10192, 257, 0, 10191, 257, 0, 10190, 257, 0, 10189, 257, 0,
- 10188, 257, 0, 668, 698, 0, 10168, 258, 0, 10167, 258, 0, 1198, 258, 0, 1227, 258, 0, 1358, 258, 0,
- 1439, 258, 0, 10273, 258, 0, 10272, 258, 0, 10195, 258, 0, 10194, 258, 0, 10193, 258, 0, 10192, 258, 0,
- 10191, 258, 0, 10190, 258, 0, 10189, 258, 0, 10188, 258, 0, 10168, 259, 0, 10167, 259, 0, 1198, 259, 0,
- 1227, 259, 0, 1358, 259, 0, 1439, 259, 0, 10273, 259, 0, 10272, 259, 0, 10195, 259, 0, 10194, 259, 0,
- 10193, 259, 0, 10192, 259, 0, 10191, 259, 0, 10190, 259, 0, 10189, 259, 0, 10188, 259, 0, 1358, 430, 0,
- 1227, 430, 0, 1198, 430, 0, 318, 430, 0, 10168, 260, 0, 10167, 260, 0, 1198, 260, 0, 1227, 260, 0, 1358,
- 260, 0, 1439, 260, 0, 10273, 260, 0, 10272, 260, 0, 10195, 260, 0, 10194, 260, 0, 10193, 260, 0, 10192,
- 260, 0, 10191, 260, 0, 10190, 260, 0, 10189, 260, 0, 10188, 260, 0, 318, 323, 0, 10168, 261, 0, 10167,
- 261, 0, 1198, 261, 0, 1227, 261, 0, 1358, 261, 0, 1439, 261, 0, 10273, 261, 0, 10272, 261, 0, 10195,
- 261, 0, 10194, 261, 0, 10193, 261, 0, 10192, 261, 0, 10191, 261, 0, 10190, 261, 0, 10189, 261, 0, 10188,
- 261, 0, 1495, 423, 0, 39, 10601, 0, 10602, 48, 0, 10601, 48, 0, 9915, 48, 0, 9914, 48, 0, 10168, 650, 0,
- 10167, 650, 0, 1198, 650, 0, 1227, 650, 0, 1358, 650, 0, 1439, 650, 0, 10273, 650, 0, 10272, 650, 0,
- 10195, 650, 0, 10194, 650, 0, 10193, 650, 0, 10192, 650, 0, 10191, 650, 0, 10190, 650, 0, 10189, 650, 0,
- 10188, 650, 0, 10168, 275, 0, 10167, 275, 0, 1198, 275, 0, 1227, 275, 0, 1358, 275, 0, 1439, 275, 0,
- 10273, 275, 0, 10272, 275, 0, 10195, 275, 0, 10194, 275, 0, 10193, 275, 0, 10192, 275, 0, 10191, 275, 0,
- 10190, 275, 0, 10189, 275, 0, 10188, 275, 0, 10575, 275, 0, 10574, 275, 0, 10573, 275, 0, 10207, 275, 0,
- 10206, 275, 0, 10205, 275, 0, 10204, 275, 0, 10203, 275, 0, 10202, 275, 0, 10201, 275, 0, 10200, 275, 0,
- 10199, 275, 0, 10198, 275, 0, 10197, 275, 0, 10567, 275, 0, 10566, 275, 0, 39, 275, 10602, 0, 39, 275,
- 10601, 696, 0, 39, 275, 9915, 0, 39, 275, 9914, 0, 9938, 275, 0, 1, 366, 0, 38, 818, 0, 38, 10602, 0,
- 38, 10601, 0, 38, 9915, 0, 38, 9914, 0, 490, 2036, 0, 476, 2136, 0, 1495, 29, 0, 9912, 1, 0, 2193, 353,
- 0, 1358, 660, 0, 1227, 660, 0, 1198, 660, 0, 664, 660, 0, 664, 659, 0, 9963, 75, 0, 9962, 75, 0, 767,
- 75, 0, 1364, 75, 0, 1707, 75, 0, 1839, 75, 0, 1, 662, 0, 1, 480, 0, 494, 949, 0, 493, 1306, 0, 35, 33,
- 0, 47, 37, 0, 2056, 190, 0, 6299, 126, 0, 9912, 419, 0, 9911, 419, 0, 1358, 662, 0, 1227, 662, 0, 1198,
- 662, 0, 1198, 695, 0, 1227, 695, 0, 1358, 695, 0, 10581, 695, 0, 537, 3057, 0, 9938, 1, 263, 0, 39, 1,
- 263, 0, 263, 452, 0, 1, 1653, 0, 1, 10575, 0, 1, 10574, 0, 1, 10573, 0, 1, 10207, 0, 1, 10206, 0, 1,
- 10205, 0, 1, 10204, 0, 1, 10203, 0, 1, 10202, 0, 1, 10201, 0, 1, 10200, 0, 1, 10199, 0, 1, 10198, 0, 1,
- 10197, 0, 1, 10567, 0, 1, 10566, 0, 10602, 37, 0, 10601, 37, 0, 9915, 37, 0, 9914, 37, 0, 43, 9936, 0,
- 43, 37, 0, 2601, 91, 0, 32, 34, 0, 9908, 1, 0, 39, 818, 0, 1358, 366, 0, 1227, 366, 0, 1198, 366, 0, 39,
- 275, 10601, 0, 1, 1209, 0, 1, 2586, 0, 263, 254, 0, 10168, 691, 0, 10167, 691, 0, 1198, 691, 0, 1227,
- 691, 0, 1358, 691, 0, 1439, 691, 0, 10273, 691, 0, 10272, 691, 0, 10195, 691, 0, 10194, 691, 0, 10193,
- 691, 0, 10192, 691, 0, 10191, 691, 0, 10190, 691, 0, 10189, 691, 0, 10188, 691, 0, 1198, 694, 0, 1227,
- 694, 0, 1358, 694, 0, 10581, 694, 0, 9910, 441, 0, 9909, 441, 0, 263, 451, 0, 1, 6613, 0, 1, 7282, 0, 1,
- 7711, 0, 1, 7750, 0, 1, 7773, 0, 1, 7796, 0, 1, 7819, 0, 1, 7842, 0, 1, 7865, 0, 1, 7888, 0, 1, 7911, 0,
- 1, 9922, 0, 1, 9921, 0, 1, 9920, 0, 1, 9919, 0, 1, 9918, 0, 1, 9917, 0, 1, 9916, 0, 1, 2050, 0, 1, 2053,
- 0, 1, 2100, 0, 1, 2147, 0, 1, 2205, 0, 1, 2658, 0, 39, 1, 0, 9912, 649, 419, 0, 9911, 649, 419, 0, 1,
- 263, 3817, 0, 9909, 263, 0, 3818, 263, 0, 9906, 1, 0, 9905, 1, 0, 271, 1220, 0, 424, 32, 0, 423, 29, 0,
- 1358, 481, 0, 1227, 481, 0, 1198, 481, 0, 9938, 481, 0, 39, 481, 0, 366, 481, 0, 6299, 128, 0, 6299,
- 127, 0, 1198, 570, 0, 1227, 570, 0, 1358, 570, 0, 1198, 571, 0, 1227, 571, 0, 1358, 571, 0, 1198, 572,
- 0, 1227, 572, 0, 1358, 572, 0, 1198, 573, 0, 1227, 573, 0, 1358, 573, 0, 1198, 574, 0, 1227, 574, 0,
- 1358, 574, 0, 275, 10602, 0, 275, 10601, 0, 275, 9915, 0, 275, 9914, 0, 9936, 45, 0, 37, 45, 0, 9912,
- 638, 419, 0, 9911, 638, 419, 0, 9912, 636, 419, 0, 9911, 636, 419, 0, 9912, 87, 419, 0, 9911, 87, 419,
- 0, 1, 92, 0, 4000, 263, 0, 10, 12, 0, 9938, 1, 0, 648, 637, 0, 1439, 371, 0, 10273, 371, 0, 10272, 371,
- 0, 2401, 100, 0, 8, 10, 12, 0, 4101, 227, 0, 10602, 2, 37, 0, 10601, 2, 37, 0, 9915, 2, 37, 0, 9914, 2,
- 37, 0, 10602, 36, 0, 10601, 36, 0, 9915, 36, 0, 9914, 36, 0, 1358, 657, 0, 1227, 657, 0, 1198, 657, 0,
- 1358, 656, 0, 1227, 656, 0, 1198, 656, 0, 600, 601, 0, 5078, 103, 0, 4050, 99, 0, 1358, 95, 0, 1227, 95,
- 0, 1198, 95, 0, 9938, 95, 0, 39, 95, 0, 366, 95, 0, 9912, 649, 638, 419, 0, 649, 638, 0, 35, 73, 0,
- 4155, 419, 0, 1358, 657, 658, 0, 1227, 657, 658, 0, 1198, 657, 658, 0, 657, 658, 0, 313, 4350, 0, 8, 12,
- 0, 218, 5723, 0 };
- }
-
- public final static char baseAction[] = new char[BaseAction0.baseAction0.length + BaseAction1.baseAction1.length];
- {
- int index = 0;
- System.arraycopy(BaseAction0.baseAction0, 0, baseAction, index, BaseAction0.baseAction0.length);
- index += BaseAction0.baseAction0.length;
- System.arraycopy(BaseAction1.baseAction1, 0, baseAction, index, BaseAction1.baseAction1.length);
- }
-
- @Override
- public final int baseAction(int index) {
- return baseAction[index];
- }
-
- public final static char lhs[] = baseAction;
-
- @Override
- public final int lhs(int index) {
- return lhs[index];
- }
-
- public interface TermCheck {
- public final static char termCheck[] = { 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 0, 68, 69, 70,
- 71, 72, 73, 74, 75, 0, 0, 78, 79, 3, 14, 82, 83, 84, 85, 86, 87, 88, 89, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
- 10, 11, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
- 121, 122, 123, 124, 125, 126, 127, 128, 129, 0, 1, 65, 0, 134, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
- 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
- 65, 66, 0, 68, 69, 70, 73, 0, 1, 74, 75, 76, 77, 0, 12, 80, 81, 82, 83, 12, 85, 0, 87, 0, 0, 90, 91, 92,
- 93, 94, 95, 0, 97, 98, 99, 100, 101, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 73, 68, 69, 70,
- 85, 78, 86, 74, 75, 76, 77, 113, 114, 80, 81, 82, 83, 0, 85, 0, 87, 0, 105, 90, 91, 92, 93, 94, 95, 112,
- 97, 98, 99, 100, 101, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
- 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
- 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 0, 68, 69, 70, 0, 88, 89, 74,
- 75, 76, 77, 0, 0, 80, 81, 82, 83, 5, 85, 0, 87, 106, 107, 90, 91, 92, 93, 94, 95, 110, 97, 98, 99, 100,
- 101, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
- 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 0, 68, 69, 70, 0, 88, 89, 74, 75, 76, 77, 0, 0,
- 80, 81, 82, 83, 6, 85, 7, 8, 9, 0, 90, 91, 92, 93, 94, 95, 0, 97, 98, 99, 100, 101, 0, 1, 2, 3, 4, 5, 6,
- 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
- 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
- 60, 61, 62, 63, 64, 65, 66, 0, 68, 69, 70, 106, 107, 0, 74, 75, 76, 77, 5, 0, 80, 81, 82, 83, 0, 85, 7,
- 8, 9, 5, 90, 91, 92, 93, 94, 95, 109, 97, 98, 99, 100, 101, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
- 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
- 65, 66, 0, 68, 69, 70, 106, 107, 0, 74, 75, 76, 77, 5, 0, 80, 81, 82, 83, 0, 85, 7, 8, 9, 5, 90, 91, 92,
- 93, 94, 95, 0, 97, 98, 99, 100, 101, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 73, 68, 69, 70,
- 106, 107, 0, 74, 75, 76, 77, 5, 0, 80, 81, 82, 83, 0, 85, 7, 8, 9, 5, 90, 91, 92, 93, 94, 95, 0, 97, 98,
- 99, 100, 101, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
- 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
- 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 73, 68, 69, 70, 0, 78, 0, 74, 75, 76,
- 77, 0, 0, 80, 81, 82, 83, 6, 85, 7, 8, 9, 0, 90, 91, 92, 93, 94, 95, 0, 97, 98, 99, 100, 101, 0, 1, 2,
- 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
- 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
- 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 0, 68, 69, 70, 84, 78, 0, 74, 75, 76, 77, 5, 0, 80, 81, 82, 83,
- 0, 85, 7, 8, 9, 5, 90, 91, 92, 93, 94, 95, 0, 97, 98, 99, 100, 101, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
- 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
- 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
- 63, 64, 65, 66, 73, 68, 69, 70, 0, 0, 108, 74, 75, 76, 77, 6, 0, 80, 81, 82, 83, 13, 85, 7, 8, 9, 0, 90,
- 91, 92, 93, 94, 95, 0, 97, 98, 99, 100, 101, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
- 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 73, 68,
- 69, 70, 84, 0, 0, 74, 75, 76, 77, 5, 0, 80, 81, 82, 83, 0, 85, 7, 8, 9, 5, 90, 91, 92, 93, 94, 95, 0,
- 97, 98, 99, 100, 101, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
- 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
- 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 0, 68, 69, 70, 0, 5, 0, 74, 75,
- 76, 77, 84, 0, 80, 81, 82, 83, 13, 85, 7, 8, 9, 0, 90, 91, 92, 93, 94, 95, 23, 97, 98, 99, 100, 101, 0,
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
- 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
- 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 0, 68, 69, 70, 0, 0, 0, 74, 75, 76, 77, 5, 0, 80, 81,
- 82, 83, 0, 85, 7, 8, 9, 5, 90, 91, 92, 93, 94, 95, 109, 97, 98, 99, 100, 101, 0, 1, 2, 3, 4, 5, 6, 7, 8,
- 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
- 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
- 61, 62, 63, 64, 65, 66, 0, 68, 69, 70, 0, 5, 0, 74, 75, 76, 77, 108, 110, 80, 81, 82, 83, 0, 85, 0, 14,
- 0, 0, 90, 91, 92, 93, 94, 95, 0, 97, 98, 99, 100, 101, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
- 46, 32, 33, 34, 0, 51, 52, 53, 54, 55, 56, 7, 8, 9, 47, 48, 0, 32, 33, 34, 35, 36, 72, 38, 39, 40, 41,
- 42, 43, 44, 45, 75, 47, 48, 49, 50, 32, 33, 34, 35, 36, 0, 38, 39, 40, 41, 42, 43, 44, 45, 65, 0, 1, 2,
- 3, 4, 71, 72, 73, 0, 75, 10, 11, 78, 79, 6, 7, 8, 9, 84, 85, 86, 87, 88, 89, 0, 1, 2, 3, 4, 5, 6, 7, 8,
- 9, 10, 11, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
- 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 136, 0, 0, 0, 134, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
- 11, 12, 13, 14, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 0, 7, 8, 9, 12, 10, 11, 32, 33, 34, 35, 36, 12, 38, 39,
- 40, 41, 42, 43, 44, 45, 0, 47, 48, 49, 50, 32, 33, 34, 35, 36, 135, 38, 39, 40, 41, 42, 43, 44, 45, 65,
- 0, 1, 2, 3, 4, 71, 72, 73, 0, 75, 10, 0, 78, 79, 84, 7, 8, 9, 84, 85, 86, 87, 88, 89, 0, 1, 2, 3, 4, 5,
- 6, 7, 8, 9, 10, 11, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
- 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 113, 114, 86, 67, 134, 0, 1, 2, 3, 4, 5, 6, 7, 8,
- 9, 10, 11, 12, 13, 72, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
- 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
- 61, 62, 63, 64, 0, 66, 0, 68, 69, 70, 6, 5, 0, 74, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 0, 15,
- 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
- 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 67, 66, 0,
- 68, 69, 70, 0, 5, 0, 74, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
- 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 0, 1, 2,
- 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 0, 1, 2, 3, 4, 65, 66, 67, 68, 69, 70, 0, 1, 2, 3, 4, 76, 77, 86,
- 0, 80, 81, 0, 0, 84, 0, 0, 87, 90, 7, 8, 9, 7, 8, 9, 0, 96, 15, 16, 17, 18, 19, 20, 21, 22, 0, 24, 25,
- 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 33, 38, 39, 40, 41, 42, 43, 44, 45, 0, 46, 84, 131, 132,
- 133, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 0, 1, 2, 3, 4, 5, 6, 7, 8,
- 9, 10, 11, 12, 13, 0, 1, 2, 3, 4, 65, 66, 67, 68, 69, 70, 0, 1, 2, 3, 4, 76, 77, 0, 108, 80, 81, 0, 0,
- 84, 0, 0, 87, 0, 7, 8, 9, 7, 8, 9, 0, 96, 15, 16, 17, 18, 19, 20, 21, 22, 0, 24, 25, 26, 27, 28, 29, 30,
- 31, 32, 33, 34, 35, 36, 0, 38, 39, 40, 41, 42, 43, 44, 45, 23, 46, 84, 131, 132, 133, 0, 1, 2, 3, 4, 5,
- 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
- 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 0, 76, 104, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
- 12, 13, 14, 65, 66, 67, 68, 69, 70, 0, 1, 2, 3, 4, 76, 77, 0, 0, 80, 81, 32, 33, 34, 35, 36, 87, 38, 39,
- 40, 41, 42, 43, 44, 45, 96, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 0, 67, 0, 65, 0, 1, 2, 3,
- 4, 71, 72, 7, 8, 9, 12, 13, 12, 79, 0, 1, 2, 3, 4, 135, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
- 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
- 40, 41, 42, 43, 44, 45, 84, 67, 72, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 65, 66, 67, 68,
- 69, 70, 0, 1, 2, 3, 4, 76, 77, 0, 0, 80, 81, 32, 33, 34, 35, 36, 0, 38, 39, 40, 41, 42, 43, 44, 45, 96,
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 32, 33, 34, 0, 65, 67, 0, 1, 2, 3, 4, 72, 6, 46, 75, 0,
- 10, 11, 79, 0, 1, 2, 3, 4, 135, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
- 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
- 0, 0, 67, 71, 0, 5, 0, 1, 2, 3, 4, 7, 8, 9, 0, 67, 10, 73, 0, 65, 66, 67, 68, 69, 70, 71, 0, 0, 14, 0,
- 76, 77, 5, 0, 80, 81, 32, 33, 34, 35, 36, 14, 38, 39, 40, 41, 42, 43, 44, 45, 96, 0, 1, 2, 3, 4, 5, 6,
- 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
- 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 71, 0, 72, 73, 0, 0, 5, 0, 78, 79, 78, 7, 8, 9, 0, 1, 2,
- 3, 4, 65, 66, 67, 68, 69, 70, 0, 105, 0, 111, 0, 76, 77, 5, 112, 80, 81, 32, 33, 34, 35, 36, 87, 38, 39,
- 40, 41, 42, 43, 44, 45, 96, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
- 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 72,
- 0, 72, 73, 0, 0, 5, 0, 78, 0, 78, 7, 8, 9, 7, 8, 9, 109, 0, 65, 66, 67, 68, 69, 70, 115, 116, 0, 0, 0,
- 76, 77, 14, 5, 80, 81, 32, 33, 34, 35, 36, 87, 38, 39, 40, 41, 42, 43, 44, 45, 96, 0, 1, 2, 3, 4, 5, 6,
- 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
- 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 79, 71, 0, 72, 0, 73, 0, 0, 78, 88, 89, 7, 8, 9, 0, 1,
- 2, 3, 4, 65, 66, 67, 68, 69, 70, 0, 0, 0, 0, 0, 76, 77, 102, 103, 80, 81, 32, 33, 34, 35, 36, 87, 38,
- 39, 40, 41, 42, 43, 44, 45, 96, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
- 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
- 0, 0, 1, 71, 0, 0, 78, 7, 8, 9, 105, 7, 8, 9, 84, 0, 84, 112, 0, 65, 66, 67, 68, 69, 70, 0, 0, 0, 0, 14,
- 76, 77, 5, 32, 80, 81, 32, 33, 34, 35, 36, 14, 38, 39, 40, 41, 42, 43, 44, 45, 96, 0, 1, 2, 3, 4, 5, 6,
- 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
- 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 71, 0, 72, 73, 0, 87, 0, 0, 78, 79, 0, 7, 8, 9, 13, 0,
- 88, 89, 110, 65, 66, 67, 68, 69, 70, 0, 105, 0, 0, 14, 76, 77, 5, 112, 80, 81, 32, 33, 34, 35, 36, 14,
- 38, 39, 40, 41, 42, 43, 44, 45, 96, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
- 45, 72, 0, 72, 0, 0, 87, 5, 0, 5, 79, 0, 7, 8, 9, 0, 84, 0, 104, 108, 65, 66, 67, 68, 69, 70, 0, 0, 0,
- 12, 0, 76, 77, 5, 0, 80, 81, 32, 33, 34, 35, 36, 14, 38, 39, 40, 41, 42, 43, 44, 45, 96, 0, 1, 2, 3, 4,
- 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 71, 88, 89, 71, 0, 88, 89, 71, 0, 79, 0, 7, 8,
- 9, 104, 5, 88, 89, 10, 65, 66, 67, 68, 69, 70, 0, 0, 0, 0, 0, 76, 77, 113, 114, 80, 81, 32, 33, 34, 35,
- 36, 0, 38, 39, 40, 41, 42, 43, 44, 45, 96, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
- 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
- 44, 45, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 84, 71, 88, 89, 0, 65, 66, 67, 68, 69, 70, 0, 0,
- 0, 0, 0, 76, 77, 14, 5, 80, 81, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 96, 0, 1, 2, 3, 4, 5, 6,
- 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
- 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 79, 0, 0, 1, 0, 84, 5, 6, 7, 8, 9, 72, 0, 12, 13, 14,
- 14, 88, 89, 65, 66, 67, 68, 69, 70, 0, 14, 0, 0, 0, 76, 77, 5, 5, 80, 81, 32, 33, 34, 109, 0, 0, 1, 2,
- 3, 4, 5, 6, 46, 0, 96, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
- 30, 31, 72, 73, 0, 35, 65, 37, 78, 79, 79, 0, 1, 2, 3, 4, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
- 57, 58, 59, 60, 61, 62, 63, 64, 0, 1, 2, 3, 4, 0, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 82, 83, 0, 10, 11,
- 12, 13, 0, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0, 67, 110, 0, 111, 37,
- 6, 7, 8, 9, 47, 48, 12, 13, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
- 0, 1, 2, 3, 4, 5, 6, 0, 0, 74, 10, 11, 0, 78, 0, 71, 67, 82, 83, 0, 1, 2, 3, 4, 5, 6, 14, 0, 14, 10, 11,
- 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0, 1, 2, 3, 4, 37, 6, 7,
- 8, 9, 0, 0, 12, 13, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 0, 1, 2,
- 3, 4, 75, 6, 7, 8, 9, 75, 0, 12, 13, 71, 87, 130, 82, 83, 0, 1, 2, 3, 4, 5, 6, 0, 0, 0, 10, 11, 12, 13,
- 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0, 0, 130, 35, 78, 37, 0, 1, 2,
- 3, 4, 84, 6, 0, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 73, 0, 1, 2,
- 3, 4, 5, 6, 0, 74, 67, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
- 30, 31, 0, 1, 2, 3, 4, 37, 6, 7, 8, 9, 0, 0, 78, 111, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
- 58, 59, 60, 61, 62, 63, 64, 86, 0, 1, 2, 3, 4, 5, 6, 0, 74, 75, 10, 11, 0, 1, 2, 3, 4, 5, 6, 78, 0, 87,
- 10, 11, 12, 13, 6, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0, 1, 2, 3, 4,
- 37, 6, 7, 8, 9, 47, 48, 12, 13, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
- 64, 0, 1, 2, 3, 4, 0, 6, 0, 0, 74, 0, 1, 2, 3, 4, 5, 6, 82, 83, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0, 1, 2, 3, 4, 37, 6, 7, 8, 9, 0, 0, 12, 13, 46, 47,
- 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 23, 0, 1, 2, 3, 4, 5, 6, 78, 74, 75,
- 10, 11, 12, 13, 71, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0, 1, 2, 3, 4,
- 37, 0, 7, 8, 9, 66, 67, 0, 0, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
- 64, 0, 1, 2, 3, 4, 32, 33, 34, 0, 74, 0, 1, 2, 3, 4, 5, 6, 82, 83, 0, 10, 11, 12, 13, 0, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0, 1, 2, 3, 4, 37, 6, 0, 71, 71, 10, 11, 0, 0, 46,
- 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 0, 1, 2, 3, 4, 0, 73, 82, 83,
- 74, 0, 1, 2, 3, 4, 5, 6, 82, 83, 14, 10, 11, 12, 13, 0, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 0, 1, 2, 3, 4, 37, 6, 0, 0, 72, 10, 11, 0, 5, 46, 47, 48, 49, 50, 51, 52, 53, 54,
- 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 131, 132, 133, 0, 130, 75, 0, 82, 83, 74, 0, 1, 2, 3, 4, 5, 6,
- 82, 83, 13, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0,
- 1, 2, 3, 4, 37, 6, 7, 8, 9, 73, 0, 0, 0, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
- 62, 63, 64, 72, 0, 1, 2, 3, 4, 5, 6, 0, 74, 75, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
- 24, 25, 26, 27, 28, 29, 30, 31, 0, 67, 0, 0, 0, 37, 0, 5, 5, 0, 1, 2, 3, 4, 46, 47, 48, 49, 50, 51, 52,
- 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 86, 0, 1, 2, 3, 4, 5, 6, 66, 0, 0, 10, 11, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0, 1, 2, 3, 4, 37, 6, 7, 8, 9, 67,
- 73, 72, 111, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 0, 0, 1, 2, 3,
- 4, 5, 6, 0, 0, 75, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
- 31, 0, 67, 0, 0, 0, 37, 0, 1, 2, 3, 4, 7, 8, 9, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
- 60, 61, 62, 63, 64, 0, 0, 1, 2, 3, 4, 5, 6, 130, 0, 0, 10, 11, 12, 13, 6, 15, 16, 17, 18, 19, 20, 21,
- 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0, 1, 2, 3, 4, 37, 6, 67, 71, 71, 10, 11, 0, 111, 46, 47, 48,
- 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 0, 1, 2, 3, 4, 5, 6, 0, 74, 74, 10, 11,
- 12, 13, 71, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 88, 89, 67, 0, 0, 37, 0,
- 1, 2, 3, 4, 0, 0, 0, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 0, 1,
- 2, 3, 4, 5, 6, 72, 0, 0, 10, 11, 12, 13, 0, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
- 30, 31, 0, 1, 2, 3, 4, 37, 67, 0, 67, 0, 1, 2, 3, 4, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
- 59, 60, 61, 62, 63, 64, 0, 1, 2, 3, 4, 5, 6, 0, 0, 74, 10, 11, 12, 13, 6, 15, 16, 17, 18, 19, 20, 21,
- 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 88, 89, 67, 0, 0, 37, 0, 1, 2, 3, 4, 67, 36, 71, 46, 47, 48, 49,
- 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 0, 1, 2, 3, 4, 5, 6, 0, 0, 74, 10, 11, 12,
- 13, 6, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0, 0, 0, 0, 0, 37, 0, 6, 67,
- 71, 6, 5, 0, 0, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 0, 1, 2, 3,
- 4, 5, 6, 102, 103, 74, 10, 11, 12, 13, 71, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
- 30, 31, 0, 0, 0, 0, 67, 37, 0, 71, 6, 71, 71, 0, 6, 0, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
- 58, 59, 60, 61, 62, 63, 64, 0, 1, 2, 3, 4, 5, 6, 102, 103, 36, 10, 11, 12, 13, 46, 15, 16, 17, 18, 19,
- 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0, 0, 0, 67, 0, 37, 0, 5, 71, 71, 0, 5, 0, 0, 46, 47,
- 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 0, 1, 2, 3, 4, 5, 6, 102, 103, 0,
- 10, 11, 12, 13, 46, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0, 0, 0, 67, 0,
- 37, 5, 131, 132, 133, 0, 0, 0, 0, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
- 63, 64, 0, 1, 2, 3, 4, 5, 6, 0, 0, 0, 10, 11, 12, 13, 0, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 88, 89, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
- 56, 57, 58, 59, 60, 61, 62, 63, 64, 0, 1, 2, 3, 4, 5, 6, 0, 0, 0, 10, 11, 12, 13, 0, 15, 16, 17, 18, 19,
- 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0, 0, 0, 86, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 46, 47, 48,
- 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 0, 1, 2, 3, 4, 5, 6, 0, 0, 0, 10, 11,
- 12, 13, 0, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0, 0, 0, 86, 0, 37, 0, 0,
- 0, 0, 0, 0, 0, 0, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 0, 1, 2,
- 3, 4, 5, 6, 0, 0, 0, 10, 11, 12, 13, 0, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
- 31, 0, 84, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
- 60, 61, 62, 63, 64, 0, 1, 2, 3, 4, 5, 6, 0, 0, 0, 10, 11, 12, 13, 0, 15, 16, 17, 18, 19, 20, 21, 22, 23,
- 24, 25, 26, 27, 28, 29, 30, 31, 0, 0, 0, 86, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 46, 47, 48, 49, 50, 51, 52,
- 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 0, 1, 2, 3, 4, 5, 6, 0, 0, 0, 10, 11, 12, 13, 0, 15, 16,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 23, 84, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0,
- 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 0, 1, 2, 3, 4, 0, 6, 7, 8,
- 9, 66, 67, 0, 0, 0, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
- 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 1, 2, 3, 4, 86, 6, 7, 8, 9,
- 66, 0, 68, 69, 70, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
- 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 0, 6, 7, 8, 9, 66,
- 0, 68, 69, 70, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
- 37, 38, 39, 40, 41, 42, 43, 44, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 0, 6, 7, 8, 9, 66, 0,
- 68, 69, 70, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
- 38, 39, 40, 41, 42, 43, 44, 45, 0, 0, 0, 1, 2, 3, 4, 0, 0, 0, 0, 1, 2, 3, 4, 0, 14, 7, 8, 9, 66, 0, 68,
- 69, 70, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 0, 38,
- 39, 40, 41, 42, 43, 44, 45, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 1, 2, 3, 4, 0, 14, 7, 8, 9, 66, 75, 68,
- 69, 70, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 0, 38,
- 39, 40, 41, 42, 43, 44, 45, 0, 0, 1, 0, 0, 5, 0, 0, 73, 0, 10, 65, 12, 13, 79, 14, 0, 14, 14, 73, 66, 0,
- 68, 69, 70, 0, 0, 0, 0, 0, 86, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 14, 0, 14, 0, 47, 48, 49, 50, 0, 0,
- 0, 0, 0, 0, 57, 0, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 71, 72, 73, 0, 0, 73, 86,
- 78, 75, 79, 0, 82, 83, 0, 0, 86, 0, 88, 89, 87, 0, 86, 0, 0, 14, 65, 0, 0, 0, 0, 0, 102, 103, 75, 105,
- 106, 107, 108, 109, 110, 14, 0, 113, 114, 115, 0, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 0,
- 0, 129, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
- 14, 79, 0, 32, 33, 34, 35, 36, 0, 38, 39, 40, 41, 42, 43, 44, 45, 79, 32, 33, 34, 35, 36, 0, 38, 39, 40,
- 41, 42, 43, 44, 45, 0, 0, 0, 0, 65, 84, 0, 0, 0, 0, 104, 72, 0, 0, 14, 0, 0, 0, 79, 65, 14, 0, 0, 0, 0,
- 104, 72, 0, 0, 14, 0, 0, 0, 79, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 14, 14, 12, 13, 0, 1, 2, 3, 4, 5, 6, 7, 8,
- 9, 0, 0, 12, 13, 0, 0, 0, 65, 32, 33, 34, 35, 36, 0, 38, 39, 40, 41, 42, 43, 44, 45, 32, 33, 34, 35, 36,
- 79, 38, 39, 40, 41, 42, 43, 44, 45, 79, 65, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 72, 73, 12, 13, 79, 0, 78, 0,
- 1, 2, 3, 4, 5, 6, 72, 73, 0, 10, 11, 0, 78, 0, 32, 33, 34, 35, 36, 0, 38, 39, 40, 41, 42, 43, 44, 45, 0,
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0, 12, 13, 0, 0, 1, 2, 3, 4, 0, 6, 7, 8, 9, 72, 73, 12, 13, 14, 0, 78,
- 32, 33, 34, 35, 36, 0, 38, 39, 40, 41, 42, 43, 44, 45, 0, 0, 0, 2, 0, 14, 0, 0, 7, 8, 9, 0, 0, 0, 0, 0,
- 15, 16, 17, 18, 19, 20, 21, 22, 0, 14, 72, 73, 0, 0, 0, 0, 78, 32, 33, 34, 35, 36, 0, 38, 39, 40, 41,
- 42, 43, 44, 45, 0, 79, 2, 0, 0, 0, 0, 7, 8, 9, 0, 0, 0, 0, 0, 15, 16, 17, 18, 19, 20, 21, 22, 79, 0, 0,
- 104, 0, 0, 65, 0, 0, 32, 33, 34, 35, 36, 73, 38, 39, 40, 41, 42, 43, 44, 45, 0, 1, 2, 3, 4, 5, 6, 86, 0,
- 0, 10, 11, 0, 0, 14, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 116, 117,
- 118, 119, 120, 121, 122, 123, 124, 125, 126, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 1, 2, 3, 4, 5, 6,
- 0, 0, 0, 10, 11, 72, 73, 14, 0, 0, 0, 78, 79, 0, 0, 0, 0, 0, 5, 86, 0, 1, 2, 3, 4, 5, 6, 0, 14, 2, 10,
- 11, 84, 0, 14, 0, 0, 104, 0, 0, 0, 0, 15, 16, 17, 18, 19, 20, 21, 22, 0, 1, 2, 3, 4, 5, 6, 0, 65, 0, 10,
- 11, 49, 50, 0, 84, 0, 0, 0, 0, 0, 71, 0, 71, 7, 8, 9, 0, 78, 71, 78, 14, 0, 14, 14, 72, 78, 73, 0, 0, 0,
- 14, 72, 79, 0, 0, 0, 0, 0, 79, 0, 0, 102, 103, 102, 103, 0, 0, 0, 0, 102, 103, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 72, 0, 0, 0, 0, 127, 128, 127, 128, 0, 65, 0, 0, 127, 128, 0, 0, 0, 73, 0, 129, 73, 75, 0, 0, 134,
- 0, 79, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static char termCheck[] = TermCheck.termCheck;
-
- @Override
- public final int termCheck(int index) {
- return termCheck[index];
- }
-
- public interface TermAction {
- public final static char termAction[] = { 0, 9900, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841,
- 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841,
- 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841,
- 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841,
- 8841, 8841, 8841, 8841, 8841, 9900, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 1, 9900, 8841, 8841,
- 756, 9910, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 1, 8771, 8759, 8763, 8767, 860, 8756, 8790,
- 8784, 8787, 818, 5597, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841,
- 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 9900, 3598,
- 9909, 9900, 8841, 9900, 9619, 8737, 8737, 8737, 8737, 8737, 8730, 8737, 8737, 8737, 8737, 8737, 8737,
- 9758, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9623, 1, 115, 1, 1, 1, 748, 9900, 3262, 1, 9911,
- 2489, 721, 420, 7352, 757, 10108, 1, 1, 3762, 2655, 111, 9907, 1, 35, 3863, 3260, 3389, 3054, 3816,
- 5147, 9900, 3861, 1108, 3837, 1789, 3826, 10, 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761,
- 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761,
- 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761,
- 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761,
- 9761, 9761, 9761, 9761, 9761, 9761, 3862, 9761, 9761, 9761, 1983, 8149, 1774, 9761, 9761, 9761, 9761,
- 7321, 5153, 9761, 9761, 9761, 9761, 129, 9761, 121, 9761, 137, 8080, 9761, 9761, 9761, 9761, 9761, 9761,
- 8103, 9761, 9761, 9761, 9761, 9761, 8, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782,
- 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782,
- 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782,
- 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782,
- 9782, 9782, 9782, 9782, 9900, 9782, 9782, 9782, 9900, 6652, 6683, 9782, 9782, 9782, 9782, 9900, 9900,
- 9782, 9782, 9782, 9782, 782, 9782, 141, 9782, 5983, 5954, 9782, 9782, 9782, 9782, 9782, 9782, 3331,
- 9782, 9782, 9782, 9782, 9782, 9900, 9619, 8737, 8737, 8737, 8737, 8737, 8730, 8737, 8737, 8737, 8737,
- 8737, 8737, 9626, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9623, 1, 149, 1, 1, 1, 9900, 6652, 6683,
- 1, 9911, 2489, 721, 39, 333, 757, 10108, 1, 1, 9938, 2655, 1358, 1198, 1227, 135, 3863, 3260, 3389,
- 3054, 3816, 5147, 9900, 3861, 1108, 3837, 1789, 3826, 9900, 9619, 8737, 8737, 8737, 8737, 8737, 8730,
- 8737, 8737, 8737, 8737, 8737, 8737, 9626, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9623, 1, 130, 1,
- 1, 1, 1166, 1076, 9900, 1, 9911, 2489, 721, 4215, 665, 757, 10108, 1, 1, 9900, 2655, 1358, 1198, 1227,
- 1741, 3863, 3260, 3389, 3054, 3816, 5147, 3677, 3861, 1108, 3837, 1789, 3826, 9900, 9619, 8737, 8737,
- 8737, 8737, 8737, 8730, 8737, 8737, 8737, 8737, 8737, 8737, 9626, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 9623, 1, 150, 1, 1, 1, 5983, 5954, 9900, 1, 9911, 2489, 721, 4252, 348, 757, 10108, 1, 1, 9900,
- 2655, 1358, 1198, 1227, 1939, 3863, 3260, 3389, 3054, 3816, 5147, 343, 3861, 1108, 3837, 1789, 3826,
- 9900, 9619, 8737, 8737, 8737, 8737, 8737, 8730, 8737, 8737, 8737, 8737, 8737, 8737, 9626, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9623, 1, 5871, 1, 1, 1, 1166, 1076, 9900, 1, 9911, 2489, 721, 2193, 662,
- 757, 10108, 1, 1, 9900, 2655, 9329, 9335, 9332, 5617, 3863, 3260, 3389, 3054, 3816, 5147, 9900, 3861,
- 1108, 3837, 1789, 3826, 9900, 9619, 8737, 8737, 8737, 8737, 8737, 8730, 8737, 8737, 8737, 8737, 8737,
- 8737, 9626, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9623, 1, 3862, 1, 1, 1, 9900, 4154, 9900, 1,
- 9911, 2489, 721, 9900, 653, 757, 10108, 1, 1, 1120, 2655, 1358, 1198, 1227, 484, 3863, 3260, 3389, 3054,
- 3816, 5147, 9900, 3861, 1108, 3837, 1789, 3826, 9900, 9619, 8737, 8737, 8737, 8737, 8737, 8730, 8737,
- 8737, 8737, 8737, 8737, 8737, 9626, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9623, 1, 133, 1, 1, 1,
- 4098, 7934, 9900, 1, 9911, 2489, 721, 1220, 654, 757, 10108, 1, 1, 632, 2655, 1358, 1198, 1227, 3017,
- 3863, 3260, 3389, 3054, 3816, 5147, 190, 3861, 1108, 3837, 1789, 3826, 9900, 9619, 8737, 8737, 8737,
- 8737, 8737, 8730, 8737, 8737, 8737, 8737, 8737, 8737, 9626, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 9623, 1, 9317, 1, 1, 1, 131, 9900, 4608, 1, 9911, 2489, 721, 2213, 431, 757, 10108, 1, 1, 5050, 2655,
- 1358, 1198, 1227, 1, 3863, 3260, 3389, 3054, 3816, 5147, 629, 3861, 1108, 3837, 1789, 3826, 9900, 9619,
- 8737, 8737, 8737, 8737, 8737, 8730, 8737, 8737, 8737, 8737, 8737, 8737, 9626, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 9623, 1, 1604, 1, 1, 1, 2, 9900, 619, 1, 9911, 2489, 721, 2915, 366, 757, 10108, 1, 1,
- 91, 2655, 9445, 9451, 9448, 9433, 3863, 3260, 3389, 3054, 3816, 5147, 9900, 3861, 1108, 3837, 1789,
- 3826, 9900, 9619, 8737, 8737, 8737, 8737, 8737, 8730, 8737, 8737, 8737, 8737, 8737, 8737, 9626, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9623, 1, 606, 1, 1, 1, 151, 1510, 337, 1, 9911, 2489, 721, 10337,
- 366, 757, 10108, 1, 1, 5119, 2655, 1358, 1198, 1227, 155, 3863, 3260, 3389, 3054, 3816, 5147, 10236,
- 3861, 1108, 3837, 1789, 3826, 9900, 9619, 8737, 8737, 8737, 8737, 8737, 8730, 8737, 8737, 8737, 8737,
- 8737, 8737, 9626, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9623, 1, 9900, 1, 1, 1, 157, 153, 1, 1,
- 9911, 2489, 721, 7949, 655, 757, 10108, 1, 1, 271, 2655, 1358, 1198, 1227, 9635, 3863, 3260, 3389, 3054,
- 3816, 5147, 4531, 3861, 1108, 3837, 1789, 3826, 9900, 9619, 8737, 8737, 8737, 8737, 8737, 8730, 8737,
- 8737, 8737, 8737, 8737, 8737, 9626, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9623, 1, 353, 1, 1, 1,
- 9900, 9263, 9900, 1, 9911, 2489, 721, 4703, 4500, 757, 10108, 1, 1, 118, 2655, 9900, 9912, 9900, 9900,
- 3863, 3260, 3389, 3054, 3816, 5147, 218, 3861, 1108, 3837, 1789, 3826, 9900, 9311, 9311, 9311, 9311,
- 9311, 9311, 9311, 9311, 9311, 9311, 9311, 9311, 9311, 9311, 9919, 10272, 10273, 1439, 258, 9921, 9922,
- 9920, 9916, 9917, 9918, 8856, 8850, 8853, 7189, 4159, 9900, 9311, 9311, 9311, 9311, 9311, 1613, 9311,
- 9311, 9311, 9311, 9311, 9311, 9311, 9311, 9911, 9311, 9311, 9311, 9311, 8865, 8862, 8859, 8883, 8871,
- 9900, 8889, 8868, 8880, 8847, 8874, 8877, 8886, 8844, 9311, 38, 9248, 9239, 9242, 9245, 9311, 9311,
- 9311, 431, 9311, 9236, 5597, 9311, 9311, 424, 1358, 1198, 1227, 9311, 9311, 9311, 9311, 9311, 9311, 366,
- 8750, 8740, 9054, 8747, 860, 849, 1358, 1198, 1227, 818, 5597, 9311, 9311, 9311, 9311, 9311, 9311, 9311,
- 9311, 9311, 9311, 9311, 9311, 9311, 9311, 9311, 9311, 9311, 9311, 9311, 9311, 9311, 9311, 9311, 9311,
- 9311, 9311, 9311, 9311, 9897, 9900, 9900, 9900, 9311, 9900, 9436, 9436, 9436, 9436, 9436, 9436, 9436,
- 9436, 9436, 9436, 9436, 9436, 9436, 9436, 9900, 9900, 117, 9900, 259, 9900, 9914, 10602, 10601, 9915,
- 9900, 8904, 8898, 8901, 7352, 818, 5597, 9436, 9436, 9436, 9436, 9436, 5769, 9436, 9436, 9436, 9436,
- 9436, 9436, 9436, 9436, 328, 9436, 9436, 9436, 9436, 8913, 8910, 8907, 8931, 8919, 8729, 8937, 8916,
- 8928, 8895, 8922, 8925, 8934, 8892, 9436, 37, 9314, 9314, 9314, 9314, 9436, 9436, 9436, 661, 9436, 9314,
- 355, 9436, 9436, 3436, 1358, 1198, 1227, 9436, 9436, 9436, 9436, 9436, 9436, 662, 8750, 8740, 9054,
- 8747, 860, 849, 1358, 1198, 1227, 818, 5597, 9436, 9436, 9436, 9436, 9436, 9436, 9436, 9436, 9436, 9436,
- 9436, 9436, 9436, 9436, 9436, 9436, 9436, 9436, 9436, 9436, 9436, 9436, 9436, 9436, 9436, 9436, 9436,
- 9436, 7321, 5153, 3832, 2335, 9436, 39, 8750, 8740, 8743, 8747, 6776, 849, 1358, 1198, 1227, 7911, 5597,
- 7819, 7842, 1613, 10199, 10197, 10205, 10201, 10202, 10200, 10203, 10204, 1193, 10566, 10567, 10206,
- 10207, 10198, 10573, 10574, 10575, 10272, 10273, 1439, 10190, 10194, 8155, 10188, 10195, 10191, 10167,
- 10193, 10192, 10189, 10168, 9919, 7796, 7773, 7888, 7865, 9921, 9922, 9920, 9916, 9917, 9918, 7750,
- 2053, 2205, 2100, 7711, 2147, 2050, 7282, 9900, 10334, 9900, 4893, 10335, 10336, 2393, 3705, 9900, 2006,
- 39, 8750, 8740, 9054, 8747, 6776, 849, 1358, 1198, 1227, 7911, 5597, 7819, 7842, 9900, 10199, 10197,
- 10205, 10201, 10202, 10200, 10203, 10204, 1193, 10566, 10567, 10206, 10207, 10198, 10573, 10574, 10575,
- 10272, 10273, 1439, 10190, 10194, 8155, 10188, 10195, 10191, 10167, 10193, 10192, 10189, 10168, 9919,
- 7796, 7773, 7888, 7865, 9921, 9922, 9920, 9916, 9917, 9918, 7750, 2053, 2205, 2100, 7711, 2147, 2050,
- 7282, 1725, 10334, 346, 4893, 10335, 10336, 9900, 1130, 227, 2006, 9900, 9357, 9357, 9357, 9357, 263,
- 9353, 8737, 8737, 8737, 263, 263, 263, 263, 9361, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9900, 8771, 8759, 8763, 8767, 860, 8756, 8790, 8784, 8787, 818,
- 5597, 9233, 9233, 9900, 9066, 9057, 9060, 9063, 263, 1, 9350, 1, 1, 1, 9900, 9914, 10602, 10601, 9915,
- 4210, 2202, 1445, 9900, 757, 10348, 257, 631, 263, 453, 626, 452, 9786, 8805, 8799, 8802, 1358, 1198,
- 1227, 9900, 10436, 10199, 10197, 10205, 10201, 10202, 10200, 10203, 10204, 134, 10566, 10567, 10206,
- 10207, 10198, 10573, 10574, 10575, 8814, 8811, 8808, 8832, 8820, 10525, 8838, 8817, 8829, 8796, 8823,
- 8826, 8835, 8793, 9900, 2826, 3785, 10371, 10372, 10373, 9900, 9357, 9357, 9357, 9357, 263, 9353, 8737,
- 8737, 8737, 263, 263, 263, 263, 9533, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 9900, 8771, 8759, 8763, 8767, 860, 8756, 8790, 8784, 8787, 818, 5597, 9299,
- 9299, 9900, 15475, 15384, 15409, 15412, 263, 1, 9350, 1, 1, 1, 48, 9066, 9057, 9060, 9063, 4210, 2202,
- 393, 4608, 757, 10348, 570, 9900, 263, 657, 9900, 451, 9900, 9674, 9668, 9671, 9817, 9823, 9820, 9900,
- 10436, 10199, 10197, 10205, 10201, 10202, 10200, 10203, 10204, 337, 10566, 10567, 10206, 10207, 10198,
- 10573, 10574, 10575, 10272, 10273, 1439, 10190, 10194, 9900, 10188, 10195, 10191, 10167, 10193, 10192,
- 10189, 10168, 10236, 2355, 3785, 10371, 10372, 10373, 9900, 8737, 8737, 8737, 8737, 263, 8737, 8730,
- 8737, 8737, 263, 263, 263, 263, 8781, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 15410,
- 1, 1, 1, 1, 15539, 1, 15217, 1, 1, 1, 9900, 836, 10292, 9900, 29, 423, 423, 423, 423, 9641, 423, 423,
- 423, 423, 423, 423, 9641, 9641, 9641, 263, 1, 8734, 1, 1, 1, 433, 9914, 10602, 10601, 9915, 3256, 721,
- 9900, 9900, 757, 10145, 423, 423, 423, 423, 423, 253, 423, 423, 423, 423, 423, 423, 423, 423, 10436,
- 9900, 9900, 9835, 9835, 9835, 9835, 9835, 9835, 9835, 9835, 9835, 9835, 9835, 9835, 9835, 494, 7510,
- 9900, 9641, 37, 9314, 9314, 9314, 9314, 9257, 9641, 1358, 1198, 1227, 4954, 4910, 366, 9641, 9900,
- 15475, 15384, 15409, 15412, 253, 9900, 8737, 8737, 8737, 8737, 263, 8737, 8730, 8737, 8737, 263, 263,
- 263, 263, 263, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 15410, 1, 1, 1, 1, 15539, 1,
- 15217, 1, 1, 1, 9835, 9936, 9305, 9900, 638, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649,
- 9867, 9867, 9862, 263, 1, 8734, 1, 1, 1, 327, 9914, 10602, 10601, 9915, 3256, 721, 9900, 711, 757,
- 10145, 649, 649, 649, 649, 649, 9900, 649, 649, 649, 649, 649, 649, 649, 649, 10436, 344, 8771, 8759,
- 8763, 8767, 860, 8756, 8790, 8784, 8787, 818, 5597, 9233, 9233, 10272, 10273, 1439, 423, 9867, 7577,
- 9900, 8750, 8740, 9054, 8747, 649, 849, 2826, 9326, 551, 9442, 5597, 9867, 37, 9314, 9314, 9314, 9314,
- 254, 9900, 8737, 8737, 8737, 8737, 263, 8737, 8730, 8737, 8737, 263, 263, 263, 263, 263, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 15410, 1, 1, 1, 1, 15539, 1, 15217, 1, 1, 1, 9900, 9900,
- 2700, 9051, 260, 8444, 9900, 9914, 10602, 10601, 9915, 8964, 8958, 8961, 9900, 9936, 2237, 1228, 114,
- 263, 1, 8734, 1, 1, 1, 1786, 490, 1, 9904, 9900, 3256, 721, 4473, 9900, 757, 10145, 8973, 8970, 8967,
- 8991, 8979, 676, 8997, 8976, 8988, 8955, 8982, 8985, 8994, 8952, 10436, 9900, 8737, 8737, 8737, 8737,
- 263, 8737, 8730, 8737, 8737, 263, 263, 263, 263, 9464, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 15410, 1, 1, 1, 1, 15539, 1, 15217, 1, 1, 1, 9251, 9900, 1613, 676, 261, 136, 8507, 139,
- 676, 676, 10448, 9015, 9009, 9012, 36, 9814, 9805, 9808, 9811, 263, 1, 8734, 1, 1, 1, 493, 8080, 1,
- 9903, 9900, 3256, 721, 4473, 8103, 757, 10145, 9024, 9021, 9018, 9042, 9030, 254, 9048, 9027, 9039,
- 9006, 9033, 9036, 9045, 9003, 10436, 9900, 8737, 8737, 8737, 8737, 263, 8737, 8730, 8737, 8737, 263,
- 263, 263, 263, 9464, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 15410, 1, 1, 1, 1,
- 15539, 1, 15217, 1, 1, 1, 9308, 9900, 1613, 576, 650, 9900, 8505, 656, 576, 9900, 3873, 9081, 9075,
- 9078, 9826, 9832, 9829, 3677, 9900, 263, 1, 8734, 1, 1, 1, 788, 781, 9900, 382, 485, 3256, 721, 9906,
- 3141, 757, 10145, 9090, 9087, 9084, 9108, 9096, 254, 9114, 9093, 9105, 9072, 9099, 9102, 9111, 9069,
- 10436, 9900, 8737, 8737, 8737, 8737, 263, 8737, 8730, 8737, 8737, 263, 263, 263, 263, 9464, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 15410, 1, 1, 1, 1, 15539, 1, 15217, 1, 1, 1, 9905, 6454,
- 113, 1613, 691, 4147, 9900, 9900, 6508, 6652, 6683, 9479, 9473, 9476, 326, 1378, 1378, 1378, 1378, 263,
- 1, 8734, 1, 1, 1, 9900, 9900, 9900, 9900, 29, 3256, 721, 6427, 6400, 757, 10145, 9488, 9485, 9482, 9506,
- 9494, 254, 9512, 9491, 9503, 9470, 9497, 9500, 9509, 9467, 10436, 9900, 8737, 8737, 8737, 8737, 263,
- 8737, 8730, 8737, 8737, 263, 263, 263, 263, 263, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 15410, 1, 1, 1, 1, 15539, 1, 15217, 1, 1, 1, 454, 608, 10509, 1495, 571, 138, 3876, 1358, 1198,
- 1227, 8080, 9683, 9677, 9680, 3498, 1, 460, 8103, 112, 263, 1, 8734, 1, 1, 1, 640, 476, 1, 9900, 9439,
- 3256, 721, 4473, 10510, 757, 10145, 10272, 10273, 1439, 10190, 10194, 376, 10188, 10195, 10191, 10167,
- 10193, 10192, 10189, 10168, 10436, 9900, 8737, 8737, 8737, 8737, 263, 8737, 8730, 8737, 8737, 263, 263,
- 263, 263, 263, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 15410, 1, 1, 1, 1, 15539, 1,
- 15217, 1, 1, 1, 9254, 132, 1613, 376, 572, 9907, 9900, 154, 376, 376, 1, 9692, 9686, 9689, 5050, 9900,
- 6652, 6683, 3331, 263, 1, 8734, 1, 1, 1, 383, 8080, 1, 464, 9908, 3256, 721, 4473, 8103, 757, 10145,
- 10272, 10273, 1439, 10190, 10194, 9629, 10188, 10195, 10191, 10167, 10193, 10192, 10189, 10168, 10436,
- 9900, 8737, 8737, 8737, 8737, 263, 8737, 8730, 8737, 8737, 263, 263, 263, 263, 263, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 15410, 1, 1, 1, 1, 15539, 1, 15217, 1, 1, 1, 1613, 9900, 1613,
- 9900, 573, 9907, 8514, 1, 2099, 9632, 639, 9701, 9695, 9698, 125, 1591, 116, 10294, 4703, 263, 1, 8734,
- 1, 1, 1, 124, 29, 9900, 7352, 9900, 3256, 721, 1137, 9900, 757, 10145, 10272, 10273, 1439, 10190, 10194,
- 9906, 10188, 10195, 10191, 10167, 10193, 10192, 10189, 10168, 10436, 9900, 8737, 8737, 8737, 8737, 263,
- 8737, 8730, 8737, 8737, 263, 263, 263, 263, 263, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 15410, 1, 1, 1, 1, 15539, 1, 15217, 1, 1, 1, 9257, 6652, 6683, 2343, 574, 6652, 6683, 5329, 9900,
- 9905, 9900, 9710, 9704, 9707, 4360, 2201, 6652, 6683, 2237, 263, 1, 8734, 1, 1, 1, 123, 9900, 9900,
- 9900, 9900, 3256, 721, 7321, 5153, 757, 10145, 10272, 10273, 1439, 10190, 10194, 9900, 10188, 10195,
- 10191, 10167, 10193, 10192, 10189, 10168, 10436, 9900, 8737, 8737, 8737, 8737, 263, 8737, 8730, 8737,
- 8737, 263, 263, 263, 263, 263, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 15410, 1, 1,
- 1, 1, 15539, 1, 15217, 1, 1, 1, 9900, 8771, 8759, 8763, 8767, 860, 8756, 8790, 8784, 8787, 818, 5597,
- 9299, 9299, 5219, 6751, 6652, 6683, 9900, 263, 1, 8734, 1, 1, 1, 9900, 122, 156, 9900, 9900, 3256, 721,
- 9906, 2251, 757, 10145, 380, 8750, 8740, 9054, 8747, 6481, 849, 1358, 1198, 1227, 818, 5597, 366, 366,
- 10436, 9900, 8737, 8737, 8737, 8737, 263, 8737, 8730, 8737, 8737, 263, 263, 263, 263, 263, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 15410, 1, 1, 1, 1, 15539, 1, 15217, 1, 1, 1, 9905, 39,
- 9900, 3545, 371, 1722, 4473, 9938, 1358, 1198, 1227, 1613, 441, 366, 366, 380, 9906, 6652, 6683, 263, 1,
- 8734, 1, 1, 1, 9900, 9527, 9900, 9900, 9900, 3256, 721, 2351, 4350, 757, 10145, 9776, 9773, 9770, 4531,
- 158, 1, 8750, 8740, 9054, 8747, 6776, 849, 3465, 9900, 10436, 7911, 5597, 7376, 7842, 9904, 10199,
- 10197, 10205, 10201, 10202, 10200, 10203, 10204, 1653, 10566, 10567, 10206, 10207, 10198, 10573, 10574,
- 10575, 1613, 380, 9900, 1660, 9530, 6613, 380, 380, 9905, 9900, 9424, 9415, 9418, 9421, 9919, 7796,
- 7773, 7888, 7865, 9921, 9922, 9920, 9916, 9917, 9918, 7750, 2053, 2205, 2100, 7711, 2147, 2050, 7282,
- 323, 9000, 9000, 9000, 9000, 120, 318, 1358, 1198, 1227, 1, 8771, 8759, 8763, 8767, 2658, 849, 39, 39,
- 9900, 7911, 5597, 7819, 7842, 47, 9400, 9406, 9382, 9394, 9391, 9397, 9388, 9385, 9364, 9412, 9409,
- 9379, 9376, 9403, 9373, 9370, 9367, 39, 9936, 4500, 583, 9903, 6613, 9938, 1358, 1198, 1227, 7189, 4159,
- 366, 366, 9919, 7796, 7773, 7888, 7865, 9921, 9922, 9920, 9916, 9917, 9918, 7750, 2053, 2205, 2100,
- 7711, 2147, 2050, 7282, 1, 8771, 8759, 8763, 8767, 8753, 8756, 9900, 9900, 2006, 8778, 8775, 8, 552, 1,
- 7555, 1474, 39, 39, 1, 8771, 8759, 8763, 8767, 9605, 8756, 9894, 9900, 9260, 9566, 8775, 9554, 9557,
- 9912, 9400, 9406, 9382, 9394, 9391, 9397, 9388, 9385, 9364, 9412, 9409, 9379, 9376, 9403, 9373, 9370,
- 9367, 480, 9302, 9302, 9302, 9302, 9536, 9302, 9302, 9302, 9302, 9900, 9900, 9302, 9302, 9578, 9551,
- 9548, 9563, 9560, 9572, 9569, 9575, 9587, 9584, 9581, 9545, 9593, 9602, 9596, 9542, 9599, 9590, 9539,
- 481, 9656, 9656, 9656, 9656, 9911, 9653, 9644, 9650, 9647, 9911, 397, 9659, 9659, 7579, 9894, 1, 9608,
- 9608, 39, 8750, 8740, 9054, 8747, 6776, 849, 9900, 37, 9900, 7911, 5597, 7399, 7842, 9904, 10199, 10197,
- 10205, 10201, 10202, 10200, 10203, 10204, 1653, 10566, 10567, 10206, 10207, 10198, 10573, 10574, 10575,
- 9900, 9900, 4113, 3599, 3879, 6613, 9900, 8750, 8740, 9054, 8747, 5291, 9938, 405, 9919, 7796, 7773,
- 7888, 7865, 9921, 9922, 9920, 9916, 9917, 9918, 7750, 2053, 2205, 2100, 7711, 2147, 2050, 7282, 4445,
- 39, 8750, 8740, 9054, 8747, 6776, 849, 9900, 2006, 9936, 7911, 5597, 7819, 7842, 9873, 10199, 10197,
- 10205, 10201, 10202, 10200, 10203, 10204, 1653, 10566, 10567, 10206, 10207, 10198, 10573, 10574, 10575,
- 659, 9278, 9278, 9278, 9278, 6613, 664, 1358, 1198, 1227, 9900, 9900, 3881, 9903, 9919, 7796, 7773,
- 7888, 7865, 9921, 9922, 9920, 9916, 9917, 9918, 7750, 2053, 2205, 2100, 7711, 2147, 2050, 7282, 1846, 1,
- 8771, 8759, 8763, 8767, 860, 8756, 119, 2006, 9326, 818, 5597, 174, 8750, 8740, 9054, 8747, 6776, 849,
- 10391, 9900, 9907, 7911, 5597, 7819, 7842, 2493, 10199, 10197, 10205, 10201, 10202, 10200, 10203, 10204,
- 1653, 10566, 10567, 10206, 10207, 10198, 10573, 10574, 10575, 92, 9755, 9755, 9755, 9755, 6613, 9755,
- 9755, 9755, 9755, 7189, 4159, 9755, 9755, 9919, 7796, 7773, 7888, 7865, 9921, 9922, 9920, 9916, 9917,
- 9918, 7750, 2053, 2205, 2100, 7711, 2147, 2050, 7282, 9900, 8750, 8740, 9054, 8747, 9900, 9938, 9900,
- 9900, 2006, 39, 8750, 8740, 9054, 8747, 6776, 849, 39, 39, 9900, 7911, 5597, 7819, 7842, 9323, 10199,
- 10197, 10205, 10201, 10202, 10200, 10203, 10204, 1653, 10566, 10567, 10206, 10207, 10198, 10573, 10574,
- 10575, 95, 9856, 9856, 9856, 9856, 6613, 9853, 9844, 9850, 9847, 1, 9900, 9859, 9859, 9919, 7796, 7773,
- 7888, 7865, 9921, 9922, 9920, 9916, 9917, 9918, 7750, 2053, 2205, 2100, 7711, 2147, 2050, 7282, 9458, 1,
- 8750, 8740, 9054, 8747, 6776, 849, 10377, 2006, 9326, 7911, 5597, 7819, 7842, 1495, 10199, 10197, 10205,
- 10201, 10202, 10200, 10203, 10204, 1653, 10566, 10567, 10206, 10207, 10198, 10573, 10574, 10575, 333,
- 9914, 10602, 10601, 9915, 6613, 371, 1358, 1198, 1227, 9461, 3468, 9900, 9900, 9919, 7796, 7773, 7888,
- 7865, 9921, 9922, 9920, 9916, 9917, 9918, 7750, 2053, 2205, 2100, 7711, 2147, 2050, 7282, 9900, 9914,
- 10602, 10601, 9915, 10272, 10273, 1439, 320, 2006, 614, 8750, 8740, 9054, 8747, 6776, 849, 39, 39, 475,
- 7911, 5597, 7819, 7842, 410, 10199, 10197, 10205, 10201, 10202, 10200, 10203, 10204, 1653, 10566, 10567,
- 10206, 10207, 10198, 10573, 10574, 10575, 9900, 8750, 8740, 9054, 8747, 6613, 849, 9900, 1786, 3264,
- 818, 5597, 100, 9900, 9919, 7796, 7773, 7888, 7865, 9921, 9922, 9920, 9916, 9917, 9918, 7750, 2053,
- 2205, 2100, 7711, 2147, 2050, 7282, 9900, 9066, 9057, 9060, 9063, 1, 10219, 8057, 921, 2006, 1, 8771,
- 8759, 8763, 8767, 2658, 849, 39, 39, 9912, 7911, 5597, 7819, 7842, 9900, 9400, 9406, 9382, 9394, 9391,
- 9397, 9388, 9385, 9364, 9412, 9409, 9379, 9376, 9403, 9373, 9370, 9367, 9900, 8750, 8740, 9054, 8747,
- 6613, 849, 9900, 9900, 9779, 818, 5597, 326, 4651, 9919, 7796, 7773, 7888, 7865, 9921, 9922, 9920, 9916,
- 9917, 9918, 7750, 2053, 2205, 2100, 7711, 2147, 2050, 7282, 10371, 10372, 10373, 99, 4113, 9911, 152,
- 8057, 921, 2006, 39, 8750, 8740, 9054, 8747, 6776, 849, 39, 39, 5119, 7911, 5597, 7819, 7842, 9323,
- 10199, 10197, 10205, 10201, 10202, 10200, 10203, 10204, 1653, 10566, 10567, 10206, 10207, 10198, 10573,
- 10574, 10575, 430, 8949, 8949, 8949, 8949, 6613, 318, 8940, 8946, 8943, 13490, 9900, 9900, 403, 9919,
- 7796, 7773, 7888, 7865, 9921, 9922, 9920, 9916, 9917, 9918, 7750, 2053, 2205, 2100, 7711, 2147, 2050,
- 7282, 9841, 39, 8750, 8740, 9054, 8747, 6776, 849, 9900, 2006, 9326, 7911, 5597, 7819, 7842, 9904,
- 10199, 10197, 10205, 10201, 10202, 10200, 10203, 10204, 1653, 10566, 10567, 10206, 10207, 10198, 10573,
- 10574, 10575, 9900, 318, 103, 9900, 462, 6613, 100, 9838, 3778, 43, 9430, 9430, 9430, 9430, 9919, 7796,
- 7773, 7888, 7865, 9921, 9922, 9920, 9916, 9917, 9918, 7750, 2053, 2205, 2100, 7711, 2147, 2050, 7282,
- 1896, 39, 8750, 8740, 9054, 8747, 6776, 849, 2685, 9900, 582, 7911, 5597, 7819, 7842, 9323, 10199,
- 10197, 10205, 10201, 10202, 10200, 10203, 10204, 1653, 10566, 10567, 10206, 10207, 10198, 10573, 10574,
- 10575, 660, 9275, 9275, 9275, 9275, 6613, 664, 9266, 9272, 9269, 9427, 2452, 9779, 9903, 9919, 7796,
- 7773, 7888, 7865, 9921, 9922, 9920, 9916, 9917, 9918, 7750, 2053, 2205, 2100, 7711, 2147, 2050, 7282,
- 9900, 39, 8750, 8740, 9054, 8747, 6776, 849, 9900, 9900, 9326, 7911, 5597, 7819, 7842, 9904, 10199,
- 10197, 10205, 10201, 10202, 10200, 10203, 10204, 1653, 10566, 10567, 10206, 10207, 10198, 10573, 10574,
- 10575, 9900, 664, 9900, 73, 431, 6613, 9900, 15285, 15285, 15285, 15285, 1358, 1198, 1227, 9919, 7796,
- 7773, 7888, 7865, 9921, 9922, 9920, 9916, 9917, 9918, 7750, 2053, 2205, 2100, 7711, 2147, 2050, 7282,
- 594, 39, 8750, 8740, 9054, 8747, 6776, 849, 4113, 432, 145, 7911, 5597, 7819, 7842, 423, 10199, 10197,
- 10205, 10201, 10202, 10200, 10203, 10204, 1653, 10566, 10567, 10206, 10207, 10198, 10573, 10574, 10575,
- 9900, 8750, 8740, 9054, 8747, 6613, 849, 9936, 9870, 1495, 9442, 5597, 9900, 9903, 9919, 7796, 7773,
- 7888, 7865, 9921, 9922, 9920, 9916, 9917, 9918, 7750, 2053, 2205, 2100, 7711, 2147, 2050, 7282, 39,
- 8750, 8740, 9054, 8747, 6776, 849, 9900, 4157, 2006, 7911, 5597, 7819, 7842, 1495, 10199, 10197, 10205,
- 10201, 10202, 10200, 10203, 10204, 1653, 10566, 10567, 10206, 10207, 10198, 10573, 10574, 10575, 6652,
- 6683, 2718, 9900, 1, 6613, 45, 9728, 9728, 9728, 9728, 9900, 9900, 9900, 9919, 7796, 7773, 7888, 7865,
- 9921, 9922, 9920, 9916, 9917, 9918, 7750, 2053, 2205, 2100, 7711, 2147, 2050, 7282, 39, 8750, 8740,
- 9054, 8747, 2658, 849, 1711, 9900, 144, 7911, 5597, 7819, 7842, 9900, 10199, 10197, 10205, 10201, 10202,
- 10200, 10203, 10204, 1653, 10566, 10567, 10206, 10207, 10198, 10573, 10574, 10575, 37, 9314, 9314, 9314,
- 9314, 6613, 835, 2, 9725, 9900, 9801, 9789, 9793, 9797, 9919, 7796, 7773, 7888, 7865, 9921, 9922, 9920,
- 9916, 9917, 9918, 7750, 2053, 2205, 2100, 7711, 2147, 2050, 7282, 39, 8750, 8740, 9054, 8747, 2658, 849,
- 9900, 39, 2006, 7911, 5597, 7819, 7842, 9938, 10199, 10197, 10205, 10201, 10202, 10200, 10203, 10204,
- 1653, 10566, 10567, 10206, 10207, 10198, 10573, 10574, 10575, 6652, 6683, 2185, 146, 9900, 6613, 9900,
- 16686, 16577, 16591, 16639, 9936, 1996, 37, 9919, 7796, 7773, 7888, 7865, 9921, 9922, 9920, 9916, 9917,
- 9918, 7750, 2053, 2205, 2100, 7711, 2147, 2050, 7282, 39, 8750, 8740, 9054, 8747, 6776, 849, 9900, 48,
- 2006, 7911, 5597, 7819, 7842, 10602, 10199, 10197, 10205, 10201, 10202, 10200, 10203, 10204, 1653,
- 10566, 10567, 10206, 10207, 10198, 10573, 10574, 10575, 9900, 48, 1, 148, 48, 6613, 9900, 10601, 9936,
- 6454, 9915, 1537, 9900, 9900, 9919, 7796, 7773, 7888, 7865, 9921, 9922, 9920, 9916, 9917, 9918, 7750,
- 2053, 2205, 2100, 7711, 2147, 2050, 7282, 39, 8750, 8740, 9054, 8747, 6029, 849, 6427, 6400, 2006, 7911,
- 5597, 7819, 7842, 10602, 10199, 10197, 10205, 10201, 10202, 10200, 10203, 10204, 1653, 10566, 10567,
- 10206, 10207, 10198, 10573, 10574, 10575, 9900, 9900, 48, 147, 874, 6613, 39, 10601, 9914, 6454, 9915,
- 9900, 9938, 9900, 9919, 7796, 7773, 7888, 7865, 9921, 9922, 9920, 9916, 9917, 9918, 7750, 2053, 2205,
- 2100, 7711, 2147, 2050, 7282, 39, 8750, 8740, 9054, 8747, 6971, 849, 6427, 6400, 1610, 7911, 5597, 7819,
- 7842, 2149, 10199, 10197, 10205, 10201, 10202, 10200, 10203, 10204, 1653, 10566, 10567, 10206, 10207,
- 10198, 10573, 10574, 10575, 9900, 1, 313, 7644, 9900, 6613, 103, 9891, 9914, 6454, 9900, 9838, 9900,
- 9900, 9919, 7796, 7773, 7888, 7865, 9921, 9922, 9920, 9916, 9917, 9918, 7750, 2053, 2205, 2100, 7711,
- 2147, 2050, 7282, 39, 8750, 8740, 9054, 8747, 8336, 849, 6427, 6400, 142, 7911, 5597, 7819, 7842, 877,
- 10199, 10197, 10205, 10201, 10202, 10200, 10203, 10204, 1653, 10566, 10567, 10206, 10207, 10198, 10573,
- 10574, 10575, 9900, 9900, 9900, 877, 9900, 6613, 7230, 10371, 10372, 10373, 9900, 9900, 9900, 9900,
- 9919, 7796, 7773, 7888, 7865, 9921, 9922, 9920, 9916, 9917, 9918, 7750, 2053, 2205, 2100, 7711, 2147,
- 2050, 7282, 39, 8750, 8740, 9054, 8747, 8363, 849, 9900, 9900, 9900, 7911, 5597, 7819, 7842, 544, 10199,
- 10197, 10205, 10201, 10202, 10200, 10203, 10204, 1653, 10566, 10567, 10206, 10207, 10198, 10573, 10574,
- 10575, 6652, 6683, 9900, 9900, 9900, 6613, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9919, 7796,
- 7773, 7888, 7865, 9921, 9922, 9920, 9916, 9917, 9918, 7750, 2053, 2205, 2100, 7711, 2147, 2050, 7282,
- 39, 8750, 8740, 9054, 8747, 6776, 849, 9900, 9900, 9900, 7911, 5597, 7819, 7842, 542, 10199, 10197,
- 10205, 10201, 10202, 10200, 10203, 10204, 1653, 10566, 10567, 10206, 10207, 10198, 10573, 10574, 10575,
- 9900, 9900, 9900, 7953, 9900, 6613, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9919, 7796, 7773,
- 7888, 7865, 9921, 9922, 9920, 9916, 9917, 9918, 7750, 2053, 2205, 2100, 7711, 2147, 2050, 7282, 39,
- 8750, 8740, 9054, 8747, 8433, 849, 9900, 9900, 9900, 7911, 5597, 7819, 7842, 9900, 10199, 10197, 10205,
- 10201, 10202, 10200, 10203, 10204, 1653, 10566, 10567, 10206, 10207, 10198, 10573, 10574, 10575, 9900,
- 9900, 9900, 8273, 9900, 6613, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9919, 7796, 7773, 7888,
- 7865, 9921, 9922, 9920, 9916, 9917, 9918, 7750, 2053, 2205, 2100, 7711, 2147, 2050, 7282, 39, 8750,
- 8740, 9054, 8747, 2658, 849, 9900, 9900, 9900, 7911, 5597, 7819, 7842, 456, 10199, 10197, 10205, 10201,
- 10202, 10200, 10203, 10204, 1653, 10566, 10567, 10206, 10207, 10198, 10573, 10574, 10575, 9900, 3894,
- 9900, 9900, 9900, 6613, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9919, 7796, 7773, 7888, 7865,
- 9921, 9922, 9920, 9916, 9917, 9918, 7750, 2053, 2205, 2100, 7711, 2147, 2050, 7282, 39, 8750, 8740,
- 9054, 8747, 2658, 849, 9900, 9900, 9900, 7911, 5597, 7819, 7842, 9900, 10199, 10197, 10205, 10201,
- 10202, 10200, 10203, 10204, 1653, 10566, 10567, 10206, 10207, 10198, 10573, 10574, 10575, 9900, 9900,
- 9900, 3941, 9900, 6613, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9919, 7796, 7773, 7888, 7865,
- 9921, 9922, 9920, 9916, 9917, 9918, 7750, 2053, 2205, 2100, 7711, 2147, 2050, 7282, 39, 8750, 8740,
- 9054, 8747, 6776, 849, 9900, 9900, 1, 7911, 5597, 7819, 7842, 9900, 10199, 10197, 10205, 10201, 10202,
- 10200, 10203, 10204, 1653, 10566, 10567, 10206, 10207, 10198, 10573, 10574, 10575, 9458, 3649, 9900,
- 9900, 9900, 6613, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9919, 7796, 7773, 7888, 7865, 9921,
- 9922, 9920, 9916, 9917, 9918, 7750, 2053, 2205, 2100, 7711, 2147, 2050, 7282, 9900, 8750, 8740, 8743,
- 8747, 9900, 9938, 1358, 1198, 1227, 9461, 3468, 9900, 9900, 9900, 10199, 10197, 10205, 10201, 10202,
- 10200, 10203, 10204, 1103, 10566, 10567, 10206, 10207, 10198, 10573, 10574, 10575, 10272, 10273, 1439,
- 10190, 10194, 4122, 10188, 10195, 10191, 10167, 10193, 10192, 10189, 10168, 9900, 9900, 9900, 9900,
- 9900, 9900, 9900, 5363, 9900, 9900, 275, 9226, 9213, 9217, 9222, 1774, 9230, 9129, 9123, 9126, 10334,
- 9900, 4893, 10335, 10336, 9198, 9204, 9180, 9192, 9189, 9195, 9186, 9183, 1103, 9210, 9207, 9177, 9174,
- 9201, 9171, 9168, 9165, 9138, 9135, 9132, 9156, 9144, 4122, 9162, 9141, 9153, 9120, 9147, 9150, 9159,
- 9117, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 8750, 8740, 9054, 8747, 9900,
- 9938, 1358, 1198, 1227, 10334, 9900, 4893, 10335, 10336, 10199, 10197, 10205, 10201, 10202, 10200,
- 10203, 10204, 1103, 10566, 10567, 10206, 10207, 10198, 10573, 10574, 10575, 10272, 10273, 1439, 10190,
- 10194, 4122, 10188, 10195, 10191, 10167, 10193, 10192, 10189, 10168, 9900, 9900, 9900, 9900, 9900, 9900,
- 9900, 9900, 9900, 9900, 275, 9226, 9213, 9454, 9222, 9900, 9230, 9129, 9123, 9126, 10334, 9900, 4893,
- 10335, 10336, 9198, 9204, 9180, 9192, 9189, 9195, 9186, 9183, 1103, 9210, 9207, 9177, 9174, 9201, 9171,
- 9168, 9165, 9138, 9135, 9132, 9156, 9144, 4122, 9162, 9141, 9153, 9120, 9147, 9150, 9159, 9117, 9900,
- 9900, 9900, 9914, 10602, 10601, 9915, 9900, 9900, 9900, 9900, 9914, 10602, 10601, 9915, 9900, 9912,
- 1358, 1198, 1227, 10334, 9900, 4893, 10335, 10336, 10199, 10197, 10205, 10201, 10202, 10200, 10203,
- 10204, 1299, 10566, 10567, 10206, 10207, 10198, 10573, 10574, 10575, 10272, 10273, 1439, 10190, 10194,
- 9900, 10188, 10195, 10191, 10167, 10193, 10192, 10189, 10168, 139, 9900, 9900, 9900, 9900, 9906, 9900,
- 9900, 9900, 9900, 275, 9722, 9713, 9716, 9719, 9900, 9910, 9129, 9123, 9126, 10334, 9911, 4893, 10335,
- 10336, 9198, 9204, 9180, 9192, 9189, 9195, 9186, 9183, 1299, 9210, 9207, 9177, 9174, 9201, 9171, 9168,
- 9165, 9138, 9135, 9132, 9156, 9144, 9900, 9162, 9141, 9153, 9120, 9147, 9150, 9159, 9117, 1, 9900, 2903,
- 9900, 649, 2157, 546, 9900, 1345, 9900, 10405, 9909, 10399, 10403, 9905, 9906, 9900, 9908, 9611, 5871,
- 10334, 9900, 4893, 10335, 10336, 9900, 9900, 9900, 9900, 638, 2608, 1, 8771, 8759, 8763, 8767, 860,
- 8756, 8790, 8784, 8787, 818, 5597, 9731, 9900, 344, 9900, 10397, 10398, 10428, 10429, 9900, 9900, 9900,
- 9900, 9900, 9900, 10406, 9900, 788, 781, 2558, 2508, 2458, 2408, 2358, 2308, 2258, 2208, 2158, 2106,
- 10408, 793, 10430, 9900, 9900, 1395, 3735, 10409, 9615, 9905, 9900, 2302, 2339, 9900, 9900, 10407, 9900,
- 10419, 10418, 9907, 9900, 1728, 9900, 9900, 9906, 344, 1, 9900, 9900, 9900, 9900, 10424, 10425, 9735,
- 10431, 10422, 10423, 10402, 10404, 10426, 398, 9900, 10400, 10401, 10427, 9900, 10412, 10413, 10414,
- 10410, 10411, 10420, 10421, 10416, 10415, 10417, 9900, 9900, 10432, 32, 424, 424, 424, 424, 9638, 424,
- 424, 424, 424, 424, 424, 9638, 9638, 9638, 637, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648,
- 9767, 9767, 9767, 9905, 9900, 424, 424, 424, 424, 424, 9900, 424, 424, 424, 424, 424, 424, 424, 424,
- 398, 648, 648, 648, 648, 648, 9900, 648, 648, 648, 648, 648, 648, 648, 648, 1, 9900, 9900, 9900, 9638,
- 5435, 1, 9900, 9900, 9900, 398, 9638, 9900, 9900, 9910, 1, 9900, 9900, 9638, 9767, 194, 9900, 9900,
- 9900, 9900, 4003, 648, 9900, 9900, 196, 1, 1, 9900, 9767, 37, 10602, 10602, 10602, 10602, 10602, 10602,
- 10602, 10602, 10602, 224, 590, 10602, 10602, 37, 10601, 10601, 10601, 10601, 10601, 10601, 10601, 10601,
- 10601, 9900, 9900, 10601, 10601, 9900, 9900, 9900, 9909, 10602, 10602, 10602, 10602, 10602, 9900, 10602,
- 10602, 10602, 10602, 10602, 10602, 10602, 10602, 10601, 10601, 10601, 10601, 10601, 194, 10601, 10601,
- 10601, 10601, 10601, 10601, 10601, 10601, 196, 224, 37, 9915, 9915, 9915, 9915, 9915, 9915, 9915, 9915,
- 9915, 10602, 10602, 9915, 9915, 590, 9900, 10602, 1, 8771, 8759, 8763, 8767, 860, 8756, 10601, 10601,
- 9900, 818, 5597, 9900, 10601, 9900, 9915, 9915, 9915, 9915, 9915, 9900, 9915, 9915, 9915, 9915, 9915,
- 9915, 9915, 9915, 9900, 37, 9914, 9914, 9914, 9914, 9914, 9914, 9914, 9914, 9914, 9900, 9900, 9914,
- 9914, 9900, 1, 9608, 9608, 9608, 9608, 9900, 9764, 8790, 8784, 8787, 9915, 9915, 366, 366, 398, 9900,
- 9915, 9914, 9914, 9914, 9914, 9914, 1, 9914, 9914, 9914, 9914, 9914, 9914, 9914, 9914, 9900, 695, 9900,
- 9347, 9900, 9906, 9900, 9900, 9344, 9338, 9341, 9900, 9900, 9900, 159, 9900, 10583, 10586, 10582, 10588,
- 10589, 10587, 10584, 10585, 9900, 9910, 9914, 9914, 9900, 9900, 9900, 9900, 9914, 10272, 10273, 1439,
- 10190, 10194, 9900, 10188, 10195, 10191, 10167, 10193, 10192, 10189, 10168, 694, 398, 9524, 9900, 9900,
- 9900, 9900, 9521, 9515, 9518, 9900, 9900, 9900, 9900, 9900, 10583, 10586, 10582, 10588, 10589, 10587,
- 10584, 10585, 9905, 9900, 9900, 398, 9900, 9900, 9909, 9900, 9900, 10272, 10273, 1439, 10190, 10194,
- 6096, 10188, 10195, 10191, 10167, 10193, 10192, 10189, 10168, 1, 8771, 8759, 8763, 8767, 6481, 8756,
- 3303, 9900, 9900, 818, 5597, 9900, 9900, 402, 1, 8771, 8759, 8763, 8767, 860, 8756, 8790, 8784, 8787,
- 818, 5597, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 4307, 1999, 3217, 3189, 3103, 3075,
- 2989, 2961, 2875, 2847, 2761, 2733, 1, 8771, 8759, 8763, 8767, 860, 8756, 8790, 8784, 8787, 818, 5597,
- 1, 8771, 8759, 8763, 8767, 8753, 8756, 126, 9900, 128, 8778, 8775, 1613, 402, 9910, 127, 9900, 9900,
- 402, 402, 75, 9900, 9900, 9900, 9900, 9293, 1796, 1, 8771, 8759, 8763, 8767, 6481, 8756, 9900, 9906,
- 10581, 818, 5597, 3785, 9900, 9629, 9900, 9900, 402, 9900, 9900, 9900, 9900, 10583, 10586, 10582, 10588,
- 10589, 10587, 10584, 10585, 1, 8771, 8759, 8763, 8767, 6481, 8756, 9900, 9909, 9900, 818, 5597, 9284,
- 9281, 9900, 3785, 9900, 9900, 9900, 636, 9900, 6326, 9900, 6326, 9876, 9884, 9880, 87, 9320, 6326, 9662,
- 9888, 9900, 9739, 9906, 9296, 9665, 1956, 9900, 9900, 9900, 9747, 1613, 9905, 9900, 9900, 9900, 9900,
- 9900, 9632, 9900, 9900, 6251, 5909, 6251, 5909, 9900, 9900, 9900, 9900, 6251, 5909, 9900, 9900, 9900,
- 9900, 9900, 9900, 9900, 9900, 9900, 9900, 1613, 9900, 9900, 9900, 9900, 4255, 1256, 4255, 1256, 9900,
- 9888, 9900, 9900, 4255, 1256, 9900, 9900, 9900, 9888, 9900, 9287, 8396, 9743, 9900, 9900, 9290, 9900,
- 9905, 9900, 9900, 9751 };
- }
-
- public final static char termAction[] = TermAction.termAction;
-
- @Override
- public final int termAction(int index) {
- return termAction[index];
- }
-
- public interface Asb {
- public final static char asb[] = { 0, 1459, 4, 1566, 321, 1448, 1, 363, 1501, 707, 707, 707, 1400, 67, 878,
- 1458, 994, 321, 329, 1263, 1566, 649, 245, 1566, 1566, 1566, 221, 261, 156, 261, 875, 261, 1103, 261,
- 261, 329, 330, 261, 995, 1345, 100, 1501, 321, 642, 261, 261, 1114, 330, 261, 330, 1566, 930, 164, 164,
- 920, 164, 651, 156, 80, 581, 80, 782, 994, 833, 938, 324, 70, 70, 321, 898, 330, 1264, 1053, 1035, 847,
- 1396, 579, 159, 877, 8, 875, 152, 329, 1103, 335, 330, 330, 703, 219, 995, 995, 995, 995, 995, 995, 995,
- 995, 995, 995, 644, 995, 1198, 1566, 930, 930, 930, 930, 329, 1566, 261, 861, 861, 834, 833, 321, 321,
- 330, 521, 1397, 335, 335, 261, 363, 468, 1397, 261, 261, 930, 261, 330, 701, 1298, 176, 164, 164, 163,
- 163, 156, 329, 573, 784, 1198, 791, 796, 793, 800, 798, 807, 805, 809, 808, 810, 588, 811, 321, 994,
- 1218, 321, 261, 330, 525, 898, 898, 330, 1264, 787, 845, 786, 1585, 86, 1396, 1395, 1397, 159, 330, 79,
- 865, 856, 703, 156, 837, 330, 335, 703, 330, 697, 1198, 1198, 1198, 1517, 362, 701, 261, 1397, 1397,
- 1397, 954, 1608, 1608, 974, 974, 363, 363, 363, 363, 330, 598, 6, 6, 598, 994, 861, 156, 329, 697, 261,
- 261, 335, 335, 324, 239, 468, 468, 1264, 1298, 176, 163, 163, 163, 330, 1397, 994, 1397, 995, 995, 995,
- 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 994, 994, 994,
- 994, 994, 994, 994, 994, 994, 994, 994, 15, 995, 1397, 842, 156, 321, 1193, 991, 403, 468, 529, 824,
- 898, 834, 834, 1053, 834, 1514, 579, 1585, 1585, 1621, 1620, 851, 842, 330, 159, 65, 878, 930, 1262,
- 1568, 159, 79, 857, 861, 79, 861, 703, 837, 837, 330, 920, 365, 1183, 1198, 759, 757, 764, 762, 766,
- 765, 767, 768, 781, 330, 219, 330, 1397, 1397, 1397, 468, 362, 994, 261, 955, 324, 1294, 1284, 1283,
- 1353, 267, 267, 329, 644, 995, 1397, 1397, 920, 920, 920, 920, 703, 1397, 1263, 1265, 1263, 1397, 468,
- 156, 907, 330, 1566, 1196, 261, 920, 920, 261, 1397, 1288, 1271, 1287, 781, 930, 92, 92, 842, 842, 163,
- 330, 834, 1219, 793, 793, 791, 791, 791, 798, 798, 798, 798, 798, 798, 796, 796, 805, 800, 800, 808,
- 807, 809, 65, 65, 810, 842, 1218, 403, 468, 417, 524, 333, 1397, 86, 1397, 597, 1397, 1397, 701, 1570,
- 861, 861, 861, 861, 330, 837, 841, 922, 841, 1154, 1170, 1170, 1170, 1170, 1149, 329, 927, 995, 995,
- 995, 995, 995, 995, 995, 995, 995, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 995, 974,
- 697, 261, 261, 261, 995, 363, 261, 261, 1397, 954, 65, 995, 65, 834, 953, 1566, 1566, 1566, 955, 1566,
- 330, 471, 834, 834, 330, 156, 1608, 1397, 1296, 1298, 330, 701, 271, 1198, 1566, 1566, 1566, 1566, 330,
- 330, 330, 1265, 701, 873, 329, 330, 598, 261, 261, 888, 994, 1285, 1285, 1292, 324, 1058, 176, 164, 176,
- 780, 780, 842, 834, 994, 994, 1218, 994, 994, 468, 529, 1397, 1621, 1264, 833, 995, 65, 899, 932, 830,
- 1570, 861, 861, 407, 841, 842, 995, 330, 330, 995, 757, 757, 757, 762, 759, 759, 765, 764, 766, 65, 767,
- 1397, 261, 324, 944, 955, 65, 1045, 955, 974, 974, 972, 953, 974, 834, 834, 905, 952, 1397, 1298, 703,
- 1264, 1397, 994, 994, 994, 994, 1566, 1566, 219, 330, 1264, 873, 1397, 261, 709, 888, 994, 994, 1296,
- 1271, 176, 363, 363, 841, 468, 468, 597, 834, 1570, 995, 995, 830, 830, 1570, 1570, 907, 214, 408, 330,
- 842, 703, 1048, 994, 261, 261, 261, 994, 261, 955, 995, 955, 1397, 321, 974, 1397, 972, 1501, 1566,
- 1397, 873, 911, 1397, 330, 719, 1397, 1397, 1397, 1397, 598, 598, 1269, 261, 219, 945, 1566, 261, 891,
- 781, 261, 105, 830, 830, 407, 330, 329, 329, 330, 330, 261, 598, 995, 468, 955, 905, 955, 834, 1501,
- 994, 955, 952, 911, 911, 304, 1397, 1397, 1269, 1058, 891, 1343, 261, 261, 330, 330, 330, 261, 1397,
- 468, 994, 953, 598, 834, 1397, 914, 911, 1397, 1397, 318, 1566, 92, 330, 330, 955, 1397, 834, 914, 914,
- 156, 156, 320, 1299, 780, 955, 914, 1621, 1263, 363 };
- }
-
- public final static char asb[] = Asb.asb;
-
- @Override
- public final int asb(int index) {
- return asb[index];
- }
-
- public interface Asr {
- public final static char asr[] = { 0, 5, 33, 0, 135, 0, 11, 10, 67, 1, 4, 3, 2, 6, 0, 24, 25, 15, 16, 58, 82,
- 26, 59, 51, 17, 18, 19, 83, 11, 60, 20, 21, 61, 62, 52, 74, 53, 63, 23, 22, 27, 28, 54, 55, 56, 46, 1,
- 4, 5, 49, 50, 13, 12, 47, 48, 10, 57, 6, 37, 64, 3, 2, 29, 30, 31, 84, 0, 46, 67, 0, 85, 5, 78, 104, 86,
- 73, 79, 65, 72, 84, 14, 75, 8, 9, 7, 0, 14, 73, 79, 1, 32, 0, 78, 86, 73, 1, 4, 3, 2, 0, 14, 84, 75, 85,
- 0, 82, 83, 74, 49, 50, 13, 12, 47, 48, 10, 57, 61, 64, 37, 5, 6, 11, 54, 55, 56, 46, 53, 51, 52, 24, 25,
- 16, 28, 15, 20, 18, 19, 21, 22, 17, 26, 27, 29, 30, 31, 23, 59, 62, 60, 58, 63, 87, 1, 4, 3, 2, 75, 14,
- 0, 131, 132, 133, 84, 87, 11, 14, 5, 13, 12, 10, 65, 81, 76, 96, 77, 80, 24, 25, 34, 7, 38, 15, 16, 66,
- 32, 26, 68, 39, 40, 17, 41, 42, 18, 19, 43, 44, 20, 21, 35, 69, 67, 45, 23, 70, 22, 27, 33, 28, 37, 8,
- 9, 29, 30, 31, 1, 4, 3, 2, 36, 6, 0, 58, 82, 59, 51, 83, 60, 61, 62, 52, 74, 53, 63, 54, 55, 56, 46, 57,
- 64, 37, 23, 68, 66, 69, 70, 16, 28, 15, 20, 18, 19, 21, 22, 17, 26, 27, 29, 30, 31, 24, 25, 85, 84, 104,
- 111, 87, 75, 134, 129, 49, 50, 112, 105, 47, 48, 113, 114, 88, 89, 71, 78, 102, 103, 106, 107, 108, 109,
- 110, 115, 116, 86, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 73, 127, 128, 34, 38, 32, 39, 40,
- 41, 42, 43, 44, 35, 45, 36, 33, 65, 14, 79, 72, 11, 5, 10, 13, 12, 8, 9, 7, 6, 4, 3, 2, 1, 0, 58, 82,
- 59, 51, 83, 11, 60, 61, 62, 52, 74, 53, 63, 54, 55, 56, 46, 49, 50, 13, 12, 47, 48, 10, 57, 78, 64, 5,
- 37, 6, 23, 1, 4, 3, 2, 68, 66, 69, 70, 24, 25, 16, 28, 15, 20, 18, 19, 21, 22, 17, 26, 27, 29, 30, 31,
- 38, 44, 35, 40, 43, 42, 36, 39, 7, 9, 8, 41, 45, 32, 33, 34, 0, 36, 1, 4, 6, 3, 2, 131, 132, 133, 0, 82,
- 83, 5, 23, 59, 62, 60, 58, 63, 16, 28, 15, 20, 18, 19, 21, 22, 17, 26, 27, 29, 30, 31, 24, 25, 54, 55,
- 56, 46, 53, 51, 52, 10, 11, 6, 49, 50, 13, 12, 47, 48, 57, 61, 64, 37, 74, 35, 1, 4, 3, 2, 111, 14, 0,
- 24, 25, 15, 16, 58, 82, 26, 59, 51, 17, 18, 19, 83, 11, 60, 20, 21, 61, 62, 52, 74, 53, 63, 23, 22, 27,
- 28, 54, 55, 56, 46, 1, 4, 5, 49, 50, 47, 48, 10, 57, 6, 37, 64, 3, 2, 29, 30, 31, 65, 14, 12, 13, 0, 74,
- 34, 32, 33, 35, 82, 83, 111, 14, 49, 50, 13, 12, 47, 48, 10, 57, 61, 64, 37, 5, 6, 11, 24, 25, 16, 28,
- 15, 20, 18, 19, 21, 22, 17, 26, 27, 29, 30, 31, 23, 59, 62, 60, 58, 63, 1, 4, 3, 2, 54, 55, 56, 53, 51,
- 52, 46, 0, 7, 14, 75, 8, 9, 86, 0, 7, 78, 84, 104, 111, 87, 65, 8, 9, 73, 14, 79, 24, 25, 15, 16, 58,
- 26, 59, 51, 17, 18, 19, 60, 20, 21, 61, 62, 52, 74, 53, 63, 23, 22, 27, 28, 54, 55, 56, 46, 5, 49, 50,
- 13, 12, 47, 48, 57, 6, 37, 64, 29, 30, 31, 11, 10, 1, 4, 2, 83, 82, 3, 0, 24, 25, 34, 38, 15, 16, 66,
- 32, 26, 68, 39, 96, 40, 17, 41, 42, 18, 19, 43, 76, 44, 20, 21, 35, 69, 45, 23, 70, 22, 77, 36, 27, 33,
- 28, 5, 13, 6, 65, 37, 29, 30, 31, 80, 81, 75, 14, 12, 8, 9, 7, 11, 10, 1, 4, 3, 2, 67, 0, 74, 85, 134,
- 129, 49, 50, 84, 104, 111, 87, 39, 40, 41, 42, 43, 11, 44, 35, 45, 36, 33, 1, 4, 72, 5, 32, 38, 10, 6,
- 7, 34, 8, 9, 3, 2, 112, 105, 47, 48, 113, 114, 127, 128, 12, 79, 65, 75, 14, 89, 88, 71, 102, 103, 106,
- 107, 13, 108, 109, 110, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 86, 78, 73, 0, 111,
- 65, 73, 79, 14, 84, 0, 112, 105, 12, 113, 114, 47, 48, 89, 88, 71, 102, 103, 127, 128, 106, 107, 13,
- 108, 109, 110, 78, 79, 86, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 84, 104, 111, 87, 115, 116,
- 8, 9, 7, 73, 65, 14, 0, 1, 4, 3, 2, 73, 14, 87, 0, 84, 73, 79, 14, 5, 0, 79, 14, 1, 46, 0, 6, 8, 9, 7,
- 71, 14, 84, 75, 0, 6, 14, 84, 75, 8, 9, 7, 0, 130, 0, 6, 67, 84, 14, 75, 8, 9, 7, 1, 4, 3, 2, 0, 34, 32,
- 33, 74, 85, 78, 84, 104, 79, 75, 5, 7, 14, 73, 65, 8, 9, 86, 0, 14, 75, 73, 0, 34, 32, 33, 74, 14, 104,
- 86, 73, 79, 78, 0, 14, 73, 87, 86, 0, 78, 102, 103, 71, 0, 84, 7, 72, 8, 9, 71, 14, 73, 65, 86, 5, 0,
- 79, 96, 131, 132, 133, 67, 84, 135, 130, 136, 87, 81, 85, 80, 77, 76, 91, 93, 100, 98, 90, 95, 97, 99,
- 101, 75, 92, 94, 65, 14, 68, 66, 69, 70, 38, 44, 35, 40, 43, 42, 36, 39, 7, 9, 8, 41, 45, 34, 32, 33,
- 74, 82, 83, 23, 59, 62, 60, 58, 63, 5, 28, 26, 27, 29, 30, 31, 24, 25, 54, 55, 56, 46, 53, 51, 52, 10,
- 11, 6, 49, 50, 13, 12, 47, 48, 57, 61, 64, 37, 1, 4, 3, 2, 17, 15, 21, 22, 16, 20, 18, 19, 0, 84, 104,
- 0, 79, 14, 89, 88, 0, 14, 84, 79, 46, 0, 24, 25, 34, 7, 38, 15, 16, 66, 32, 26, 68, 39, 40, 17, 41, 42,
- 18, 19, 43, 44, 20, 21, 35, 69, 45, 23, 70, 22, 36, 27, 33, 28, 1, 4, 6, 37, 8, 9, 3, 2, 29, 30, 31,
- 104, 0, 6, 14, 75, 8, 9, 7, 1, 4, 3, 2, 0, 37, 83, 82, 47, 48, 113, 114, 108, 109, 10, 57, 86, 71, 120,
- 121, 117, 118, 119, 125, 124, 126, 89, 88, 122, 123, 106, 107, 102, 103, 110, 115, 49, 50, 105, 129, 23,
- 68, 66, 69, 70, 16, 28, 15, 20, 18, 19, 21, 22, 17, 26, 27, 29, 30, 31, 24, 25, 38, 44, 35, 40, 43, 42,
- 36, 39, 32, 33, 34, 41, 45, 78, 73, 1, 4, 13, 6, 3, 2, 5, 72, 8, 9, 7, 12, 0, 34, 7, 38, 66, 32, 68, 39,
- 40, 41, 42, 43, 44, 35, 69, 45, 70, 36, 33, 8, 9, 74, 82, 83, 49, 50, 13, 12, 47, 48, 57, 61, 64, 37, 5,
- 54, 55, 56, 46, 53, 51, 52, 24, 25, 16, 28, 15, 20, 18, 19, 21, 22, 17, 26, 27, 29, 30, 31, 59, 62, 60,
- 58, 63, 75, 14, 23, 6, 11, 1, 4, 3, 2, 10, 0, 7, 13, 12, 8, 9, 11, 10, 6, 1, 4, 3, 2, 5, 72, 78, 86, 73,
- 14, 79, 104, 0, 10, 11, 5, 72, 12, 13, 104, 24, 25, 34, 7, 38, 15, 16, 32, 26, 68, 39, 40, 17, 41, 42,
- 18, 19, 43, 44, 20, 21, 35, 69, 45, 23, 70, 22, 36, 27, 33, 28, 1, 4, 6, 37, 8, 9, 3, 2, 29, 30, 31, 79,
- 14, 66, 0, 78, 73, 37, 23, 68, 66, 69, 70, 24, 25, 34, 7, 38, 15, 16, 32, 26, 39, 40, 17, 41, 42, 18,
- 19, 43, 11, 44, 20, 21, 35, 45, 22, 36, 27, 33, 28, 4, 72, 13, 12, 10, 6, 65, 8, 9, 3, 2, 29, 30, 31, 5,
- 1, 79, 14, 0, 32, 26, 68, 39, 17, 41, 18, 19, 43, 44, 20, 21, 69, 45, 70, 22, 36, 27, 33, 28, 66, 16,
- 15, 37, 38, 34, 25, 24, 29, 30, 31, 14, 5, 13, 12, 65, 80, 77, 96, 40, 35, 42, 81, 71, 8, 9, 7, 67, 11,
- 1, 4, 10, 6, 3, 2, 23, 76, 0, 87, 24, 25, 34, 38, 15, 16, 66, 32, 26, 68, 39, 17, 41, 18, 19, 43, 44,
- 20, 21, 69, 45, 23, 70, 22, 36, 27, 33, 28, 37, 29, 30, 31, 135, 81, 76, 40, 35, 42, 96, 77, 80, 67, 7,
- 14, 13, 65, 8, 9, 10, 11, 4, 3, 2, 6, 5, 1, 12, 0, 82, 83, 49, 50, 13, 12, 47, 48, 10, 57, 61, 64, 37,
- 6, 11, 54, 55, 56, 46, 53, 51, 52, 24, 25, 16, 28, 15, 20, 18, 19, 21, 22, 17, 26, 27, 29, 30, 31, 23,
- 59, 62, 60, 58, 63, 72, 1, 4, 3, 2, 5, 0, 65, 14, 5, 11, 10, 84, 13, 12, 6, 1, 4, 3, 2, 8, 9, 7, 0, 11,
- 10, 17, 15, 21, 22, 16, 20, 18, 19, 38, 44, 35, 40, 43, 42, 36, 39, 32, 33, 34, 41, 45, 78, 7, 1, 4, 13,
- 12, 6, 8, 9, 3, 2, 72, 5, 79, 14, 73, 0 };
- }
-
- public final static char asr[] = Asr.asr;
-
- @Override
- public final int asr(int index) {
- return asr[index];
- }
-
- public interface Nasb {
- public final static char nasb[] = { 0, 275, 13, 13, 197, 14, 16, 5, 333, 13, 13, 13, 319, 13, 158, 319, 211,
- 191, 273, 273, 13, 13, 297, 13, 13, 13, 13, 298, 92, 298, 230, 298, 230, 298, 13, 11, 175, 298, 150,
- 290, 197, 190, 268, 152, 13, 13, 247, 329, 13, 175, 13, 13, 319, 319, 13, 319, 219, 92, 230, 13, 238,
- 13, 150, 120, 30, 349, 63, 63, 232, 230, 240, 240, 188, 20, 317, 199, 13, 197, 171, 273, 238, 38, 273,
- 238, 197, 175, 12, 13, 13, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 175, 325, 258, 13, 13, 13,
- 13, 13, 273, 13, 13, 197, 36, 120, 13, 224, 232, 175, 13, 317, 197, 197, 124, 5, 116, 317, 13, 13, 13,
- 13, 12, 72, 197, 197, 319, 319, 197, 197, 92, 273, 18, 13, 258, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
- 150, 13, 191, 65, 86, 224, 238, 175, 110, 230, 238, 186, 152, 317, 13, 13, 256, 68, 43, 13, 317, 340,
- 172, 230, 230, 13, 240, 92, 197, 240, 48, 56, 172, 59, 258, 258, 258, 150, 46, 72, 13, 317, 317, 317,
- 105, 203, 203, 1, 260, 261, 261, 261, 261, 175, 76, 22, 22, 76, 211, 36, 127, 178, 182, 230, 230, 48,
- 48, 349, 290, 116, 116, 152, 359, 359, 275, 275, 197, 240, 317, 150, 317, 150, 150, 150, 150, 150, 150,
- 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
- 150, 150, 150, 150, 150, 32, 150, 317, 197, 92, 233, 230, 149, 99, 116, 111, 13, 238, 120, 120, 188,
- 120, 13, 188, 298, 256, 317, 13, 317, 106, 175, 120, 13, 185, 13, 14, 332, 340, 230, 230, 197, 238, 197,
- 56, 197, 330, 12, 13, 251, 203, 144, 13, 13, 13, 13, 13, 13, 13, 13, 13, 172, 13, 12, 317, 317, 317,
- 116, 262, 65, 286, 207, 349, 202, 63, 63, 13, 13, 13, 11, 175, 150, 317, 317, 13, 13, 13, 13, 71, 317,
- 151, 175, 151, 317, 116, 127, 13, 240, 13, 13, 197, 13, 13, 228, 317, 13, 266, 13, 13, 13, 74, 74, 106,
- 106, 275, 186, 120, 281, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 106, 197, 99, 116, 111, 122, 13, 317, 68, 317, 150, 317, 317, 72, 190, 197, 197, 41, 41, 172,
- 330, 28, 13, 13, 297, 298, 298, 298, 298, 306, 11, 13, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
- 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 211, 150, 48, 59, 286, 286, 286, 150, 261, 197, 132,
- 317, 214, 13, 161, 13, 120, 13, 13, 13, 13, 215, 13, 330, 118, 120, 120, 330, 141, 300, 317, 347, 197,
- 175, 72, 13, 258, 13, 13, 13, 13, 172, 12, 175, 168, 72, 197, 178, 12, 76, 230, 122, 197, 150, 13, 13,
- 265, 349, 359, 359, 319, 197, 13, 13, 106, 120, 150, 150, 86, 150, 150, 116, 111, 317, 317, 152, 120,
- 150, 13, 139, 13, 230, 232, 41, 41, 101, 28, 106, 150, 330, 175, 150, 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 317, 156, 228, 13, 215, 13, 13, 215, 353, 353, 357, 13, 353, 120, 120, 13, 197, 317, 359,
- 70, 172, 317, 211, 211, 211, 211, 13, 13, 13, 329, 172, 97, 317, 197, 122, 122, 150, 150, 347, 222, 359,
- 261, 261, 106, 116, 116, 150, 120, 191, 150, 150, 238, 230, 232, 13, 13, 273, 108, 240, 106, 56, 317,
- 150, 197, 79, 13, 211, 228, 215, 150, 215, 317, 268, 1, 317, 243, 197, 13, 317, 97, 197, 317, 172, 286,
- 317, 317, 317, 317, 76, 76, 169, 13, 13, 130, 13, 122, 197, 13, 81, 85, 230, 238, 135, 240, 273, 273,
- 12, 172, 156, 76, 150, 116, 215, 13, 215, 120, 191, 211, 215, 130, 122, 197, 13, 317, 317, 169, 262, 83,
- 13, 81, 13, 12, 240, 240, 79, 317, 116, 150, 13, 94, 120, 317, 197, 122, 317, 317, 197, 13, 74, 12, 12,
- 215, 317, 120, 83, 197, 141, 141, 266, 314, 13, 215, 83, 317, 151, 261 };
- }
-
- public final static char nasb[] = Nasb.nasb;
-
- @Override
- public final int nasb(int index) {
- return nasb[index];
- }
-
- public interface Nasr {
- public final static char nasr[] = { 0, 3, 13, 10, 9, 122, 157, 132, 118, 131, 130, 4, 2, 0, 188, 0, 243, 0, 15,
- 0, 173, 0, 4, 2, 9, 10, 177, 0, 185, 0, 224, 0, 5, 47, 158, 0, 190, 0, 41, 1, 0, 147, 0, 32, 208, 0,
- 215, 0, 4, 10, 9, 2, 13, 154, 5, 0, 2, 93, 0, 93, 176, 175, 0, 95, 0, 5, 35, 0, 206, 0, 2, 158, 93, 0,
- 145, 0, 5, 124, 0, 179, 0, 193, 0, 164, 0, 106, 4, 10, 9, 2, 13, 113, 41, 0, 5, 218, 0, 192, 0, 213, 0,
- 4, 133, 232, 0, 5, 106, 0, 233, 0, 5, 4, 10, 9, 2, 13, 82, 0, 5, 47, 48, 0, 50, 0, 5, 235, 0, 41, 191,
- 0, 156, 0, 5, 217, 0, 4, 133, 196, 0, 231, 0, 41, 59, 0, 41, 57, 40, 47, 59, 5, 13, 4, 10, 9, 2, 0, 181,
- 0, 43, 1, 0, 13, 2, 9, 10, 4, 245, 0, 2, 159, 0, 56, 2, 3, 0, 2, 56, 0, 200, 4, 199, 0, 43, 93, 0, 43,
- 138, 0, 172, 0, 119, 43, 78, 4, 2, 9, 10, 5, 0, 242, 32, 0, 32, 109, 110, 5, 0, 40, 53, 41, 219, 5, 47,
- 0, 106, 47, 53, 40, 96, 41, 5, 0, 110, 109, 10, 9, 2, 78, 4, 87, 43, 0, 5, 4, 10, 9, 2, 78, 27, 0, 2,
- 86, 0, 57, 5, 220, 0, 5, 57, 236, 0, 237, 132, 118, 131, 130, 122, 0, 41, 59, 47, 40, 5, 57, 0, 32, 110,
- 109, 78, 2, 9, 10, 5, 4, 0, 136, 92, 53, 5, 40, 0, 4, 10, 9, 2, 13, 113, 41, 112, 0, 2, 4, 118, 115,
- 116, 117, 128, 13, 67, 0, 110, 109, 43, 4, 87, 0, 118, 67, 13, 115, 116, 117, 204, 0, 57, 40, 5, 32, 0,
- 5, 40, 53, 92, 103, 0, 4, 10, 9, 13, 3, 1, 0, 48, 4, 2, 9, 10, 5, 189, 0, 5, 53, 92, 133, 51, 4, 0, 31,
- 5, 4, 43, 119, 0, 5, 57, 135, 0, 47, 221, 31, 5, 0 };
- }
-
- public final static char nasr[] = Nasr.nasr;
-
- @Override
- public final int nasr(int index) {
- return nasr[index];
- }
-
- public interface TerminalIndex {
- public final static char terminalIndex[] = { 0, 118, 132, 131, 119, 2, 31, 51, 129, 130, 13, 84, 10, 9, 120, 53,
- 57, 73, 79, 80, 91, 92, 107, 105, 48, 49, 65, 110, 112, 133, 134, 135, 59, 111, 50, 94, 109, 127, 52,
- 69, 71, 75, 78, 81, 88, 103, 117, 11, 12, 7, 8, 72, 99, 102, 114, 115, 116, 14, 60, 66, 89, 93, 95, 104,
- 128, 125, 58, 98, 68, 96, 106, 19, 1, 44, 100, 126, 82, 108, 20, 123, 136, 137, 63, 83, 30, 101, 33,
- 124, 17, 18, 113, 54, 55, 61, 62, 64, 70, 74, 76, 77, 90, 97, 21, 22, 32, 6, 23, 24, 25, 26, 27, 122, 4,
- 15, 16, 28, 29, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 45, 46, 5, 56, 85, 86, 87, 3, 138, 67, 121 };
- }
-
- public final static char terminalIndex[] = TerminalIndex.terminalIndex;
-
- @Override
- public final int terminalIndex(int index) {
- return terminalIndex[index];
- }
-
- public interface NonterminalIndex {
- public final static char nonterminalIndex[] = { 0, 144, 150, 151, 0, 0, 149, 0, 0, 253, 259, 148, 0, 158, 0,
- 145, 147, 0, 157, 163, 0, 0, 164, 173, 174, 175, 176, 271, 0, 0, 0, 203, 140, 0, 177, 166, 178, 179,
- 180, 181, 280, 143, 182, 272, 156, 183, 0, 146, 142, 184, 210, 200, 0, 0, 0, 153, 152, 167, 185, 195, 0,
- 0, 0, 0, 0, 0, 0, 209, 0, 0, 186, 0, 227, 0, 187, 0, 188, 224, 228, 189, 160, 190, 139, 191, 0, 192, 0,
- 170, 198, 0, 0, 0, 0, 0, 0, 229, 194, 0, 0, 0, 0, 0, 0, 201, 0, 0, 141, 161, 231, 232, 233, 0, 241, 0,
- 172, 212, 213, 214, 216, 225, 235, 243, 211, 230, 0, 215, 0, 0, 279, 204, 205, 206, 207, 244, 0, 197,
- 202, 208, 219, 221, 0, 222, 0, 0, 234, 0, 0, 0, 248, 0, 250, 0, 264, 0, 267, 0, 268, 278, 0, 162, 193,
- 218, 0, 220, 0, 237, 240, 0, 262, 0, 263, 0, 276, 281, 0, 154, 155, 159, 0, 0, 169, 171, 0, 0, 0, 0, 0,
- 217, 0, 226, 0, 238, 239, 0, 0, 245, 252, 0, 256, 257, 258, 261, 0, 0, 265, 0, 273, 0, 275, 0, 0, 282,
- 284, 285, 0, 0, 165, 168, 0, 196, 0, 199, 0, 0, 223, 236, 242, 0, 0, 246, 247, 249, 251, 0, 254, 255,
- 260, 266, 269, 270, 0, 0, 274, 0, 0, 277, 0, 283, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- }
-
- public final static char nonterminalIndex[] = NonterminalIndex.nonterminalIndex;
-
- @Override
- public final int nonterminalIndex(int index) {
- return nonterminalIndex[index];
- }
-
- public interface ScopePrefix {
- public final static char scopePrefix[] = { 314, 476, 778, 797, 465, 494, 729, 745, 756, 767, 548, 10, 18, 420,
- 434, 451, 512, 184, 445, 568, 606, 322, 786, 672, 28, 149, 162, 193, 213, 222, 227, 232, 285, 350, 507,
- 518, 149, 640, 122, 299, 426, 440, 700, 169, 299, 558, 149, 805, 169, 372, 401, 24, 40, 58, 90, 90, 114,
- 118, 130, 141, 156, 203, 218, 246, 156, 537, 541, 624, 665, 694, 721, 725, 815, 819, 823, 237, 134, 237,
- 586, 602, 615, 633, 652, 713, 1, 256, 256, 384, 472, 615, 736, 752, 763, 774, 362, 683, 70, 82, 111,
- 198, 198, 311, 377, 64, 198, 398, 417, 64, 64, 198, 545, 662, 669, 311, 198, 838, 46, 52, 64, 105, 250,
- 523, 590, 630, 52, 33, 645, 198, 265, 457, 523, 265, 265, 484, 577, 332, 484, 75, 75, 96, 96, 244, 96,
- 96, 96, 96, 628, 827, 834, 75, 75, 100, 393, 827, 834, 207, 596, 292, 244, 393, 244, 406 };
- }
-
- public final static char scopePrefix[] = ScopePrefix.scopePrefix;
-
- @Override
- public final int scopePrefix(int index) {
- return scopePrefix[index];
- }
-
- public interface ScopeSuffix {
- public final static char scopeSuffix[] = { 145, 290, 94, 94, 290, 290, 94, 94, 94, 94, 555, 16, 16, 290, 44,
- 290, 154, 190, 431, 574, 612, 328, 209, 678, 16, 154, 167, 167, 167, 201, 201, 44, 290, 355, 160, 160,
- 154, 94, 127, 304, 431, 241, 705, 180, 307, 563, 792, 810, 174, 366, 366, 16, 44, 62, 94, 94, 94, 94,
- 94, 145, 160, 94, 201, 44, 160, 44, 44, 290, 16, 94, 94, 94, 94, 94, 16, 836, 138, 241, 555, 555, 555,
- 637, 656, 705, 5, 260, 274, 388, 460, 619, 740, 740, 740, 740, 366, 687, 73, 73, 94, 201, 201, 94, 94,
- 380, 382, 16, 94, 62, 62, 382, 44, 94, 16, 94, 698, 94, 49, 55, 67, 108, 253, 526, 593, 108, 659, 36,
- 648, 717, 260, 460, 708, 268, 279, 501, 580, 335, 487, 80, 88, 98, 147, 44, 529, 531, 533, 535, 44, 829,
- 829, 77, 85, 102, 395, 831, 831, 209, 598, 294, 357, 388, 342, 408 };
- }
-
- public final static char scopeSuffix[] = ScopeSuffix.scopeSuffix;
-
- @Override
- public final int scopeSuffix(int index) {
- return scopeSuffix[index];
- }
-
- public interface ScopeLhs {
- public final static char scopeLhs[] = { 51, 117, 18, 18, 91, 117, 18, 18, 18, 18, 99, 95, 95, 105, 52, 91, 116,
- 89, 63, 99, 98, 51, 18, 20, 95, 204, 3, 7, 8, 196, 196, 195, 115, 51, 116, 116, 125, 58, 28, 112, 64,
- 52, 177, 169, 112, 99, 18, 18, 169, 111, 71, 95, 66, 88, 128, 19, 19, 205, 171, 102, 204, 199, 196, 195,
- 125, 222, 61, 59, 181, 19, 18, 18, 18, 18, 18, 12, 156, 195, 99, 98, 98, 84, 46, 177, 54, 121, 121, 87,
- 91, 98, 18, 18, 18, 18, 111, 20, 148, 141, 17, 200, 196, 224, 109, 123, 73, 95, 72, 189, 88, 125, 100,
- 182, 181, 215, 177, 17, 66, 18, 88, 97, 195, 125, 135, 97, 22, 40, 58, 177, 121, 91, 177, 121, 121, 117,
- 99, 51, 117, 148, 141, 157, 237, 195, 137, 132, 131, 130, 94, 175, 56, 148, 141, 245, 87, 175, 56, 199,
- 135, 115, 51, 87, 51, 71 };
- }
-
- public final static char scopeLhs[] = ScopeLhs.scopeLhs;
-
- @Override
- public final int scopeLhs(int index) {
- return scopeLhs[index];
- }
-
- public interface ScopeLa {
- public final static char scopeLa[] = { 130, 87, 79, 79, 87, 87, 79, 79, 79, 79, 79, 111, 111, 87, 65, 87, 1, 78,
- 1, 79, 136, 75, 5, 79, 111, 1, 78, 78, 78, 1, 1, 65, 87, 75, 1, 1, 1, 79, 79, 87, 1, 1, 6, 78, 73, 65,
- 1, 1, 78, 79, 79, 111, 65, 1, 79, 79, 79, 79, 79, 130, 1, 79, 1, 65, 1, 65, 65, 87, 111, 79, 79, 79, 79,
- 79, 111, 1, 79, 1, 79, 79, 79, 84, 84, 6, 73, 1, 1, 12, 75, 79, 78, 78, 78, 78, 79, 5, 8, 8, 79, 1, 1,
- 79, 79, 5, 1, 111, 79, 1, 1, 1, 65, 79, 111, 79, 10, 79, 1, 79, 8, 84, 1, 67, 86, 84, 79, 3, 78, 1, 1,
- 75, 67, 1, 1, 75, 90, 85, 1, 1, 1, 37, 1, 65, 1, 68, 66, 66, 65, 6, 6, 1, 1, 104, 13, 6, 6, 5, 1, 75, 1,
- 12, 1, 5 };
- }
-
- public final static char scopeLa[] = ScopeLa.scopeLa;
-
- @Override
- public final int scopeLa(int index) {
- return scopeLa[index];
- }
-
- public interface ScopeStateSet {
- public final static char scopeStateSet[] = { 466, 376, 268, 268, 478, 376, 268, 268, 268, 268, 111, 124, 124,
- 522, 466, 478, 376, 478, 510, 111, 111, 466, 268, 268, 124, 43, 190, 238, 238, 21, 21, 490, 376, 466,
- 376, 376, 378, 61, 391, 89, 510, 466, 53, 46, 89, 111, 268, 268, 46, 128, 165, 124, 510, 171, 378, 268,
- 268, 86, 1, 111, 43, 50, 21, 490, 378, 41, 510, 99, 18, 268, 268, 268, 268, 268, 268, 242, 8, 490, 111,
- 111, 111, 69, 336, 53, 466, 376, 376, 450, 478, 111, 268, 268, 268, 268, 128, 268, 24, 182, 268, 50, 21,
- 138, 128, 130, 165, 124, 165, 187, 171, 378, 111, 5, 18, 56, 53, 268, 510, 268, 171, 111, 490, 378, 13,
- 111, 273, 493, 61, 53, 376, 478, 53, 376, 376, 376, 111, 466, 376, 24, 182, 380, 389, 490, 380, 385,
- 385, 385, 29, 58, 140, 24, 182, 374, 450, 58, 140, 50, 13, 376, 466, 450, 466, 165 };
- }
-
- public final static char scopeStateSet[] = ScopeStateSet.scopeStateSet;
-
- @Override
- public final int scopeStateSet(int index) {
- return scopeStateSet[index];
- }
-
- public interface ScopeRhs {
- public final static char scopeRhs[] = { 0, 184, 5, 80, 0, 44, 145, 140, 142, 0, 186, 35, 349, 142, 72, 0, 139,
- 0, 186, 349, 142, 35, 72, 0, 186, 35, 72, 0, 186, 349, 142, 72, 0, 347, 142, 0, 131, 281, 0, 0, 300,
- 142, 177, 0, 142, 0, 142, 177, 0, 220, 142, 0, 217, 5, 0, 140, 241, 0, 180, 256, 142, 0, 224, 0, 256,
- 142, 0, 272, 224, 0, 285, 180, 0, 272, 0, 180, 0, 248, 272, 0, 248, 0, 225, 180, 0, 198, 272, 0, 198, 0,
- 217, 5, 37, 0, 140, 0, 259, 0, 279, 0, 251, 0, 32, 172, 0, 382, 92, 0, 30, 194, 0, 196, 5, 0, 217, 5,
- 64, 0, 378, 5, 343, 0, 377, 5, 5, 8, 0, 140, 140, 0, 376, 5, 74, 0, 375, 5, 130, 0, 140, 195, 0, 142,
- 196, 85, 0, 239, 0, 265, 0, 230, 193, 141, 23, 0, 151, 0, 193, 141, 23, 0, 150, 0, 304, 142, 71, 139, 0,
- 20, 0, 338, 142, 71, 67, 0, 20, 58, 0, 33, 147, 0, 20, 58, 0, 0, 338, 142, 71, 67, 229, 0, 20, 201, 0,
- 304, 142, 71, 147, 0, 223, 141, 0, 156, 0, 261, 5, 337, 0, 337, 0, 2, 0, 140, 0, 304, 142, 71, 146, 0,
- 223, 141, 270, 0, 223, 141, 36, 270, 0, 223, 141, 370, 36, 0, 143, 230, 193, 141, 0, 230, 193, 141, 0,
- 149, 142, 0, 190, 0, 366, 142, 190, 0, 142, 190, 0, 246, 142, 0, 193, 365, 255, 0, 151, 0, 0, 0, 0, 365,
- 255, 0, 152, 151, 0, 0, 0, 0, 150, 0, 0, 0, 0, 152, 150, 0, 0, 0, 0, 364, 142, 178, 258, 0, 141, 0, 258,
- 0, 143, 0, 0, 141, 0, 363, 142, 178, 250, 0, 141, 0, 0, 44, 141, 0, 0, 172, 5, 0, 142, 328, 327, 142,
- 85, 326, 190, 0, 327, 142, 85, 326, 190, 0, 238, 0, 239, 0, 326, 190, 0, 101, 0, 0, 238, 0, 239, 0, 226,
- 101, 0, 0, 238, 0, 239, 0, 327, 142, 326, 190, 0, 238, 0, 226, 0, 0, 238, 0, 279, 142, 5, 0, 140, 0, 0,
- 0, 0, 0, 279, 142, 5, 246, 0, 260, 5, 0, 231, 0, 161, 0, 212, 193, 141, 0, 10, 0, 0, 0, 0, 212, 0, 9, 0,
- 0, 251, 72, 0, 279, 142, 5, 209, 0, 209, 0, 2, 0, 0, 140, 0, 0, 0, 0, 0, 225, 5, 0, 271, 142, 178, 46,
- 40, 0, 223, 141, 76, 77, 0, 219, 142, 0, 143, 223, 141, 325, 77, 0, 223, 141, 325, 77, 0, 223, 141, 86,
- 138, 76, 0, 271, 142, 178, 299, 76, 0, 299, 76, 0, 143, 0, 0, 141, 0, 271, 142, 178, 299, 275, 76, 0,
- 299, 275, 76, 0, 322, 323, 142, 178, 138, 360, 68, 0, 360, 68, 0, 144, 143, 0, 0, 0, 141, 0, 322, 323,
- 142, 178, 360, 68, 0, 143, 0, 0, 0, 141, 0, 223, 141, 321, 68, 0, 230, 223, 141, 321, 255, 0, 223, 141,
- 321, 255, 0, 193, 141, 0, 98, 151, 0, 215, 0, 214, 0, 213, 0, 212, 0, 320, 142, 168, 0, 320, 142, 190,
- 0, 184, 100, 0, 355, 185, 357, 358, 5, 97, 0, 140, 194, 0, 357, 358, 5, 97, 0, 142, 0, 140, 194, 0, 184,
- 5, 90, 233, 95, 0, 140, 142, 0, 233, 95, 0, 113, 2, 146, 140, 142, 0, 272, 5, 90, 0, 225, 194, 0, 33,
- 184, 0, 194, 0, 198, 33, 184, 0, 272, 5, 101, 0, 233, 169, 272, 5, 99, 0, 67, 194, 0, 272, 5, 99, 0,
- 140, 194, 67, 194, 0, 356, 142, 178, 0, 184, 0, 251, 92, 0, 184, 116, 220, 0, 30, 192, 0, 163, 78, 195,
- 5, 0, 195, 5, 0, 20, 176, 140, 0, 184, 116, 182, 0, 30, 184, 0, 140, 164, 0, 261, 5, 0, 251, 72, 318, 0,
- 184, 72, 0, 217, 5, 352, 83, 141, 0, 140, 0, 0, 0, 0, 352, 83, 141, 0, 2, 160, 140, 0, 0, 0, 0, 217, 5,
- 61, 0, 162, 0, 140, 67, 193, 141, 0, 31, 162, 0, 98, 151, 31, 162, 0, 244, 223, 141, 0, 161, 31, 162, 0,
- 217, 5, 63, 0, 184, 5, 63, 0, 184, 5, 78, 217, 71, 58, 0, 217, 71, 58, 0, 20, 2, 146, 140, 0, 184, 5,
- 78, 217, 71, 60, 0, 217, 71, 60, 0, 184, 5, 78, 217, 71, 62, 0, 217, 71, 62, 0, 184, 5, 78, 217, 71, 59,
- 0, 217, 71, 59, 0, 261, 5, 140, 230, 193, 141, 23, 0, 140, 230, 193, 141, 23, 0, 151, 2, 0, 140, 0, 261,
- 5, 139, 295, 193, 141, 23, 0, 295, 193, 141, 23, 0, 150, 2, 0, 140, 0, 261, 5, 150, 0, 261, 5, 155, 0,
- 184, 72, 155, 0, 313, 0, 31, 0, 31, 154, 0, 192, 0, 149, 0, 184, 5, 0 };
- }
-
- public final static char scopeRhs[] = ScopeRhs.scopeRhs;
-
- @Override
- public final int scopeRhs(int index) {
- return scopeRhs[index];
- }
-
- public interface ScopeState {
- public final static char scopeState[] = { 0, 2637, 2385, 1389, 0, 1708, 1310, 0, 3709, 2096, 1745, 1450, 0,
- 5518, 8514, 8507, 8444, 0, 3251, 2953, 0, 2452, 1591, 0, 6148, 6096, 6044, 4411, 0, 5795, 5723, 5651,
- 5579, 5507, 5435, 5363, 5291, 5219, 5147, 4739, 4636, 8505, 0, 7048, 6013, 0, 4911, 3862, 4778, 0, 4147,
- 4098, 0, 1364, 767, 0, 921, 0, 2213, 1120, 0, 4307, 4500, 4703, 4531, 1166, 1076, 5119, 2658, 3649,
- 1228, 3303, 3217, 3189, 3103, 3075, 2989, 2961, 2875, 2847, 2761, 2733, 1138, 1048, 958, 0, 1345, 1137,
- 0, 1395, 4189, 1314, 3880, 3779, 3383, 6709, 910, 1445, 0, 3135, 3021, 8433, 2655, 2097, 2658, 1944,
- 8363, 8336, 6971, 6776, 6029, 5795, 5723, 5651, 5579, 5507, 5435, 5363, 5291, 5219, 5147, 4739, 4636, 0,
- 2694, 2340, 1199, 1121, 4819, 6930, 6732, 6481, 6282, 4473, 3055, 2941, 2827, 0, 780, 0, 7534, 7465,
- 6888, 6501, 6539, 6187, 6035, 6494, 5759, 5724, 6022, 5687, 5220, 5580, 5543, 5148, 5508, 4863, 3988,
- 3486, 5471, 5436, 5364, 3882, 0, 4819, 8216, 5228, 6912, 6874, 4745, 6732, 5370, 6148, 6096, 6044, 6481,
- 4411, 6282, 7150, 5016, 860, 4872, 5871, 4217, 4961, 0, 8216, 4745, 0, 3137, 3027, 7534, 7465, 3023,
- 2535, 1643, 6888, 2485, 6501, 2335, 2237, 2185, 6539, 986, 3419, 6187, 2083, 6035, 1925, 6494, 5759,
- 5724, 2911, 1713, 6022, 5687, 6964, 5220, 1474, 5580, 5543, 1044, 5148, 2795, 4340, 5508, 4863, 1947,
- 3988, 3486, 5471, 5436, 5364, 818, 6745, 3882, 4077, 1496, 1384, 1011, 849, 1728, 6732, 4872, 5370,
- 6148, 6096, 4819, 6044, 6481, 4411, 6282, 2718, 2700, 8216, 5228, 1364, 767, 6912, 5871, 7150, 6874,
- 5016, 860, 4217, 4961, 4745, 8155, 7711, 7282, 6613, 4122, 3649, 6508, 7399, 8126, 1228, 4307, 3303,
- 3217, 3189, 3103, 3075, 2989, 2961, 2875, 2847, 2761, 2733, 4500, 4703, 4531, 1166, 1076, 5119, 6454,
- 6427, 6400, 6709, 2658, 7376, 788, 3331, 4608, 3677, 5983, 5954, 5050, 6683, 6652, 6326, 6299, 6251,
- 5909, 4255, 1256, 7352, 7321, 5153, 7189, 4159, 8103, 8080, 1138, 1048, 8057, 958, 7911, 7888, 7865,
- 7842, 7819, 7796, 7773, 7750, 3735, 4050, 1395, 878, 4003, 3941, 3894, 1956, 1896, 1846, 3832, 3785,
- 3599, 3548, 1314, 3498, 3436, 1796, 1510, 1746, 1660, 2608, 2558, 2508, 2458, 2408, 2358, 2308, 2258,
- 2208, 2158, 2106, 2056, 716, 1613, 1445, 2006, 1563, 3389, 0, 7048, 6013, 6964, 6745, 878, 716, 4340,
- 4077, 0, 878, 716, 4340, 4077, 6013, 0, 4872, 4366, 7099, 878, 6148, 6865, 4334, 6096, 6044, 6356, 5769,
- 7048, 8498, 8466, 8305, 7940, 6172, 6013, 4082, 6535, 4635, 4210, 7489, 7623, 3969, 5265, 5228, 6964,
- 4954, 4910, 4158, 716, 3142, 2793, 8297, 3859, 6084, 3464, 5871, 4340, 7150, 1924, 1691, 997, 5016, 925,
- 913, 6745, 7538, 6769, 4893, 6180, 3249, 4784, 4375, 5837, 4961, 3256, 4077, 6757, 4819, 8271, 4406,
- 8454, 8265, 6930, 4411, 6136, 8402, 4767, 6912, 6874, 4563, 4217, 0, 5795, 5723, 5651, 5579, 5507, 5435,
- 5363, 5291, 5219, 5147, 4739, 4636, 8149, 7215, 7083, 7004, 7951, 7934, 7644, 7577, 7510, 7439, 7422,
- 6546, 4904, 8229, 0, 8396, 7230, 8273, 7953, 8433, 7949, 2658, 7579, 7555, 6751, 5329, 5617, 8363, 8336,
- 6971, 6776, 6029, 5795, 5723, 5651, 5579, 5507, 5435, 5363, 5291, 5219, 5147, 4739, 4636, 8149, 7215,
- 7083, 7004, 7951, 7934, 7644, 7577, 7510, 7439, 7422, 6546, 0 };
- }
-
- public final static char scopeState[] = ScopeState.scopeState;
-
- @Override
- public final int scopeState(int index) {
- return scopeState[index];
- }
-
- public interface InSymb {
- public final static char inSymb[] = { 0, 0, 351, 80, 177, 77, 7, 142, 190, 229, 42, 35, 67, 40, 76, 273, 5, 142,
- 76, 325, 380, 347, 266, 8, 9, 7, 34, 267, 258, 268, 255, 269, 68, 274, 139, 23, 141, 294, 37, 259, 326,
- 142, 5, 6, 147, 146, 11, 10, 139, 141, 209, 67, 67, 67, 71, 67, 46, 299, 275, 138, 180, 184, 142, 300,
- 278, 142, 215, 209, 180, 225, 141, 141, 5, 3, 5, 5, 5, 178, 365, 321, 180, 360, 321, 180, 71, 141, 223,
- 193, 192, 37, 64, 61, 57, 48, 47, 12, 13, 50, 49, 141, 10, 5, 63, 58, 60, 62, 59, 23, 150, 155, 85, 142,
- 320, 300, 256, 180, 141, 212, 225, 71, 71, 194, 142, 72, 5, 82, 83, 139, 138, 223, 193, 5, 71, 78, 142,
- 178, 178, 299, 86, 73, 297, 5, 160, 162, 161, 171, 163, 174, 173, 176, 175, 179, 74, 182, 73, 5, 86,
- 256, 180, 141, 72, 225, 180, 223, 223, 381, 46, 309, 310, 5, 379, 1, 46, 142, 193, 282, 140, 139, 141,
- 138, 178, 141, 142, 193, 67, 6, 5, 5, 5, 82, 83, 193, 140, 217, 196, 184, 178, 177, 194, 142, 5, 71, 71,
- 71, 71, 141, 5, 129, 134, 5, 72, 142, 327, 84, 193, 13, 12, 142, 142, 142, 259, 72, 72, 230, 142, 142,
- 142, 142, 178, 141, 152, 73, 217, 105, 112, 48, 47, 114, 113, 12, 128, 127, 103, 102, 78, 71, 88, 89,
- 13, 107, 106, 109, 108, 110, 126, 125, 124, 123, 122, 121, 120, 119, 118, 117, 86, 116, 115, 172, 178,
- 250, 180, 193, 35, 142, 251, 12, 182, 180, 275, 143, 84, 169, 5, 73, 259, 384, 377, 343, 5, 364, 141,
- 188, 270, 76, 67, 77, 190, 367, 140, 139, 283, 180, 283, 223, 178, 142, 223, 304, 142, 291, 5, 195, 163,
- 211, 207, 216, 213, 218, 220, 307, 230, 313, 230, 217, 217, 217, 72, 352, 5, 169, 142, 142, 5, 247, 246,
- 150, 140, 139, 23, 141, 37, 217, 184, 217, 217, 217, 217, 193, 261, 67, 141, 67, 261, 184, 327, 336,
- 141, 337, 212, 212, 304, 304, 256, 279, 280, 168, 281, 338, 67, 23, 66, 271, 271, 142, 223, 169, 169,
- 161, 161, 160, 160, 160, 163, 163, 163, 163, 163, 163, 162, 162, 173, 171, 171, 175, 174, 176, 295, 184,
- 179, 142, 178, 142, 186, 349, 350, 12, 1, 73, 169, 5, 46, 1, 193, 142, 283, 283, 142, 142, 230, 142,
- 323, 138, 324, 266, 267, 268, 269, 374, 259, 23, 195, 103, 102, 71, 13, 107, 106, 109, 108, 110, 126,
- 125, 124, 123, 122, 121, 120, 119, 118, 117, 86, 116, 115, 73, 6, 169, 169, 169, 219, 5, 353, 194, 172,
- 356, 94, 92, 1, 184, 14, 101, 99, 97, 95, 90, 98, 100, 93, 91, 76, 85, 256, 260, 142, 5, 141, 193, 156,
- 5, 78, 78, 78, 78, 230, 295, 141, 223, 193, 328, 73, 223, 5, 12, 142, 169, 86, 260, 225, 5, 142, 73, 73,
- 78, 71, 282, 282, 271, 275, 84, 84, 142, 349, 35, 186, 12, 1, 378, 230, 366, 84, 287, 225, 139, 285,
- 180, 142, 142, 84, 323, 322, 86, 73, 141, 78, 163, 163, 163, 207, 195, 195, 213, 211, 216, 184, 218,
- 217, 142, 142, 14, 84, 382, 251, 84, 5, 5, 5, 233, 5, 138, 184, 138, 196, 279, 142, 193, 67, 217, 5, 5,
- 5, 5, 140, 139, 244, 10, 67, 142, 261, 212, 187, 142, 86, 86, 142, 256, 142, 86, 86, 363, 186, 186, 73,
- 143, 73, 84, 86, 180, 285, 180, 164, 369, 270, 36, 141, 322, 193, 163, 84, 169, 315, 318, 72, 224, 84,
- 104, 84, 272, 194, 142, 272, 358, 168, 90, 272, 142, 169, 279, 230, 169, 184, 184, 184, 184, 5, 5, 6,
- 138, 140, 329, 130, 142, 263, 338, 243, 73, 285, 180, 73, 141, 36, 370, 223, 230, 142, 5, 72, 184, 169,
- 225, 169, 357, 142, 5, 169, 329, 142, 169, 140, 261, 261, 6, 5, 142, 78, 243, 14, 223, 141, 141, 315,
- 261, 251, 86, 233, 185, 320, 184, 263, 142, 104, 375, 194, 74, 66, 223, 223, 136, 355, 169, 142, 263,
- 169, 169, 142, 5, 282, 169, 142, 376, 86, 73 };
- }
-
- public final static char inSymb[] = InSymb.inSymb;
-
- @Override
- public final int inSymb(int index) {
- return inSymb[index];
- }
-
- public interface Name {
- public final static String name[] = { "", "[", "(", ".", ".*", "->", "->*", "++", "--", "&", "*", "+", "-", "~",
- "!", "/", "%", ">>", "<<", "<", ">", "<=", ">=", "==", "!=", "^", "|", "&&", "||", "?", ":", "::",
- "...", "=", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", ",", ">?", "<?", "$empty",
- "_Complex", "_Imaginary", "restrict", "asm", "auto", "bool", "break", "case", "catch", "char", "class",
- "const", "const_cast", "continue", "default", "delete", "do", "double", "dynamic_cast", "else", "enum",
- "explicit", "export", "extern", "false", "float", "for", "friend", "goto", "if", "inline", "int",
- "long", "mutable", "namespace", "new", "operator", "private", "protected", "public", "register",
- "reinterpret_cast", "return", "short", "signed", "sizeof", "static", "static_cast", "struct", "switch",
- "template", "this", "throw", "try", "true", "typedef", "typeid", "typename", "union", "unsigned",
- "using", "virtual", "void", "volatile", "wchar_t", "while", "integer", "floating", "charconst",
- "stringlit", "identifier", "Completion", "EndOfCompletion", "Invalid", "RightBracket", "RightParen",
- "RightBrace", "SemiColon", "LeftBrace", "typeof", "__alignof__", "__attribute__", "__declspec",
- "vector", "pixel", "_Decimal32", "_Decimal64", "_Decimal128", "__static_assert", "ERROR_TOKEN",
- "EOF_TOKEN", "]", ")", "}", ";", "{", "identifier_token", "literal", "expression", "id_expression",
- "qualified_or_unqualified_name", "unqualified_id_name", "identifier_name", "template_id_name",
- "nested_name_specifier", "class_or_namespace_name", "nested_name_specifier_with_tem" + "plate",
- "class_or_namespace_name_with_t" + "emplate", "class_name", "postfix_expression",
- "simple_type_specifier", "pseudo_destructor_name", "type_id", "type_name", "destructor_type_name",
- "unary_expression", "cast_expression", "new_type_id", "expression_list", "type_specifier_seq",
- "new_declarator", "new_pointer_operators", "ptr_operator", "new_array_expressions",
- "constant_expression", "pm_expression", "multiplicative_expression", "additive_expression",
- "shift_expression", "relational_expression", "equality_expression", "and_expression",
- "exclusive_or_expression", "inclusive_or_expression", "logical_and_expression", "logical_or_expression",
- "assignment_expression", "relational_expression_inTempla" + "te", "equality_expression_inTemplate",
- "and_expression_inTemplate", "exclusive_or_expression_inTemp" + "late",
- "inclusive_or_expression_inTemp" + "late", "logical_and_expression_inTempl" + "ate",
- "logical_or_expression_inTempla" + "te", "assignment_expression_inTempla" + "te",
- "expression_list_actual", "statement", "compound_statement", "statement_seq", "condition", "declarator",
- "for_init_statement", "function_definition", "declaration", "declaration_seq", "declaration_specifiers",
- "simple_declaration_specifiers", "class_declaration_specifiers",
- "elaborated_declaration_specifi" + "ers", "enum_declaration_specifiers",
- "type_name_declaration_specifie" + "rs", "no_type_declaration_specifier", "cv_qualifier",
- "no_type_declaration_specifiers", "class_specifier", "elaborated_type_specifier", "enum_specifier",
- "type_name_specifier", "class_keyword", "enumerator_list", "enumerator_definition", "namespace_name",
- "init_declarator_list", "init_declarator_complete", "complete_declarator", "initializer",
- "direct_declarator", "ptr_operator_seq", "function_declarator", "basic_direct_declarator",
- "array_direct_declarator", "array_modifier", "abstract_declarator", "direct_abstract_declarator",
- "basic_direct_abstract_declarat" + "or", "array_direct_abstract_declarat" + "or",
- "parameter_declaration_list", "parameter_declaration", "parameter_init_declarator",
- "parameter_initializer", "function_body", "handler_seq", "initializer_clause", "initializer_list",
- "initializer_seq", "class_head", "access_specifier_keyword", "member_declaration",
- "member_declarator_list", "member_declaration_list", "member_declarator_complete",
- "constant_initializer", "bit_field_declarator", "base_specifier_list", "base_specifier",
- "conversion_function_id", "conversion_type_id", "conversion_declarator", "mem_initializer_list",
- "mem_initializer", "mem_initializer_name", "operator_id_name", "overloadable_operator",
- "template_parameter_list", "template_parameter", "template_argument_list", "template_argument",
- "type_name_specifier_inTemplate", "type_name_declaration_specifie" + "rs_inTemplate",
- "type_specifier_seq_inTemplate", "handler", "exception_declaration", "type_id_list",
- "attribute_or_decl_specifier", "attribute_or_decl_specifier_se" + "q", "word",
- "extended_decl_modifier_seq", "extended_decl_modifier", "extended_asm_param", "case_range_expression",
- "typeof_declaration_specifiers", "typeof_type_specifier", "vector_type", "vector_type_specifier",
- "all_specifier_qualifiers", "all_specifier_qualifier_list", "array_modifier_type_qualifiers",
- "type_qualifier_list" };
- }
-
- public final static String name[] = Name.name;
-
- @Override
- public final String name(int index) {
- return name[index];
- }
-
- public final static int ERROR_SYMBOL = 81, SCOPE_UBOUND = 161, SCOPE_SIZE = 162, MAX_NAME_LENGTH = 43;
-
- @Override
- public final int getErrorSymbol() {
- return ERROR_SYMBOL;
- }
-
- @Override
- public final int getScopeUbound() {
- return SCOPE_UBOUND;
- }
-
- @Override
- public final int getScopeSize() {
- return SCOPE_SIZE;
- }
-
- @Override
- public final int getMaxNameLength() {
- return MAX_NAME_LENGTH;
- }
-
- public final static int NUM_STATES = 719, NT_OFFSET = 137, LA_STATE_OFFSET = 10615, MAX_LA = 2147483647,
- NUM_RULES = 715, NUM_NONTERMINALS = 256, NUM_SYMBOLS = 393, SEGMENT_SIZE = 8192, START_STATE = 6546,
- IDENTIFIER_SYMBOL = 0, EOFT_SYMBOL = 135, EOLT_SYMBOL = 135, ACCEPT_ACTION = 8729, ERROR_ACTION = 9900;
-
- public final static boolean BACKTRACK = true;
-
- @Override
- public final int getNumStates() {
- return NUM_STATES;
- }
-
- @Override
- public final int getNtOffset() {
- return NT_OFFSET;
- }
-
- @Override
- public final int getLaStateOffset() {
- return LA_STATE_OFFSET;
- }
-
- @Override
- public final int getMaxLa() {
- return MAX_LA;
- }
-
- @Override
- public final int getNumRules() {
- return NUM_RULES;
- }
-
- @Override
- public final int getNumNonterminals() {
- return NUM_NONTERMINALS;
- }
-
- @Override
- public final int getNumSymbols() {
- return NUM_SYMBOLS;
- }
-
- @Override
- public final int getSegmentSize() {
- return SEGMENT_SIZE;
- }
-
- @Override
- public final int getStartState() {
- return START_STATE;
- }
-
- @Override
- public final int getStartSymbol() {
- return lhs[0];
- }
-
- public final int getIdentifierSymbol() {
- return IDENTIFIER_SYMBOL;
- }
-
- @Override
- public final int getEoftSymbol() {
- return EOFT_SYMBOL;
- }
-
- @Override
- public final int getEoltSymbol() {
- return EOLT_SYMBOL;
- }
-
- @Override
- public final int getAcceptAction() {
- return ACCEPT_ACTION;
- }
-
- @Override
- public final int getErrorAction() {
- return ERROR_ACTION;
- }
-
- @Override
- public final boolean isValidForParser() {
- return isValidForParser;
- }
-
- @Override
- public final boolean getBacktrack() {
- return BACKTRACK;
- }
-
- @Override
- public final int originalState(int state) {
- return -baseCheck[state];
- }
-
- @Override
- public final int asi(int state) {
- return asb[originalState(state)];
- }
-
- @Override
- public final int nasi(int state) {
- return nasb[originalState(state)];
- }
-
- @Override
- public final int inSymbol(int state) {
- return inSymb[originalState(state)];
- }
-
- @Override
- public final int ntAction(int state, int sym) {
- return baseAction[state + sym];
- }
-
- @Override
- public final int tAction(int state, int sym) {
- int i = baseAction[state], k = i + sym;
- return termAction[termCheck[k] == sym ? k : i];
- }
-
- @Override
- public final int lookAhead(int la_state, int sym) {
- int k = la_state + sym;
- return termAction[termCheck[k] == sym ? k : la_state];
- }
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/cpp/XlcCPPParsersym.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/cpp/XlcCPPParsersym.java
deleted file mode 100644
index c88a6b111d7..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/cpp/XlcCPPParsersym.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2006, 2010 IBM Corporation and others.
-*
-* This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License 2.0
-* which accompanies this distribution, and is available at
-* https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-*
-* Contributors:
-* IBM Corporation - initial API and implementation
-*********************************************************************************/
-
-// This file was generated by LPG
-
-package org.eclipse.cdt.internal.core.lrparser.xlc.cpp;
-
-public interface XlcCPPParsersym {
- public final static int TK__Complex = 24, TK__Imaginary = 25, TK_restrict = 34, TK_asm = 7, TK_auto = 38,
- TK_bool = 15, TK_break = 91, TK_case = 92, TK_catch = 130, TK_char = 16, TK_class = 66, TK_const = 32,
- TK_const_cast = 58, TK_continue = 93, TK_default = 94, TK_delete = 82, TK_do = 95, TK_double = 26,
- TK_dynamic_cast = 59, TK_else = 136, TK_enum = 68, TK_explicit = 39, TK_export = 96, TK_extern = 40,
- TK_false = 51, TK_float = 17, TK_for = 97, TK_friend = 41, TK_goto = 98, TK_if = 99, TK_inline = 42,
- TK_int = 18, TK_long = 19, TK_mutable = 43, TK_namespace = 76, TK_new = 83, TK_operator = 11,
- TK_private = 131, TK_protected = 132, TK_public = 133, TK_register = 44, TK_reinterpret_cast = 60,
- TK_return = 100, TK_short = 20, TK_signed = 21, TK_sizeof = 61, TK_static = 35, TK_static_cast = 62,
- TK_struct = 69, TK_switch = 101, TK_template = 67, TK_this = 52, TK_throw = 74, TK_try = 85, TK_true = 53,
- TK_typedef = 45, TK_typeid = 63, TK_typename = 23, TK_union = 70, TK_unsigned = 22, TK_using = 77,
- TK_virtual = 36, TK_void = 27, TK_volatile = 33, TK_wchar_t = 28, TK_while = 90, TK_integer = 54,
- TK_floating = 55, TK_charconst = 56, TK_stringlit = 46, TK_identifier = 1, TK_Completion = 4,
- TK_EndOfCompletion = 14, TK_Invalid = 137, TK_LeftBracket = 72, TK_LeftParen = 5, TK_Dot = 134,
- TK_DotStar = 112, TK_Arrow = 129, TK_ArrowStar = 105, TK_PlusPlus = 49, TK_MinusMinus = 50, TK_And = 13,
- TK_Star = 12, TK_Plus = 47, TK_Minus = 48, TK_Tilde = 10, TK_Bang = 57, TK_Slash = 113, TK_Percent = 114,
- TK_RightShift = 88, TK_LeftShift = 89, TK_LT = 71, TK_GT = 78, TK_LE = 102, TK_GE = 103, TK_EQ = 106,
- TK_NE = 107, TK_Caret = 108, TK_Or = 109, TK_AndAnd = 110, TK_OrOr = 115, TK_Question = 116, TK_Colon = 84,
- TK_ColonColon = 6, TK_DotDotDot = 104, TK_Assign = 86, TK_StarAssign = 117, TK_SlashAssign = 118,
- TK_PercentAssign = 119, TK_PlusAssign = 120, TK_MinusAssign = 121, TK_RightShiftAssign = 122,
- TK_LeftShiftAssign = 123, TK_AndAssign = 124, TK_CaretAssign = 125, TK_OrAssign = 126, TK_Comma = 73,
- TK_RightBracket = 111, TK_RightParen = 79, TK_RightBrace = 87, TK_SemiColon = 65, TK_LeftBrace = 75,
- TK_typeof = 37, TK___alignof__ = 64, TK___attribute__ = 8, TK___declspec = 9, TK_MAX = 127, TK_MIN = 128,
- TK_vector = 3, TK_pixel = 2, TK__Decimal32 = 29, TK__Decimal64 = 30, TK__Decimal128 = 31,
- TK___static_assert = 80, TK_ERROR_TOKEN = 81, TK_EOF_TOKEN = 135;
-
- public final static String orderedTerminalSymbols[] = { "", "identifier", "pixel", "vector", "Completion",
- "LeftParen", "ColonColon", "asm", "__attribute__", "__declspec", "Tilde", "operator", "Star", "And",
- "EndOfCompletion", "bool", "char", "float", "int", "long", "short", "signed", "unsigned", "typename",
- "_Complex", "_Imaginary", "double", "void", "wchar_t", "_Decimal32", "_Decimal64", "_Decimal128", "const",
- "volatile", "restrict", "static", "virtual", "typeof", "auto", "explicit", "extern", "friend", "inline",
- "mutable", "register", "typedef", "stringlit", "Plus", "Minus", "PlusPlus", "MinusMinus", "false", "this",
- "true", "integer", "floating", "charconst", "Bang", "const_cast", "dynamic_cast", "reinterpret_cast",
- "sizeof", "static_cast", "typeid", "__alignof__", "SemiColon", "class", "template", "enum", "struct",
- "union", "LT", "LeftBracket", "Comma", "throw", "LeftBrace", "namespace", "using", "GT", "RightParen",
- "__static_assert", "ERROR_TOKEN", "delete", "new", "Colon", "try", "Assign", "RightBrace", "RightShift",
- "LeftShift", "while", "break", "case", "continue", "default", "do", "export", "for", "goto", "if", "return",
- "switch", "LE", "GE", "DotDotDot", "ArrowStar", "EQ", "NE", "Caret", "Or", "AndAnd", "RightBracket",
- "DotStar", "Slash", "Percent", "OrOr", "Question", "StarAssign", "SlashAssign", "PercentAssign",
- "PlusAssign", "MinusAssign", "RightShiftAssign", "LeftShiftAssign", "AndAssign", "CaretAssign", "OrAssign",
- "MAX", "MIN", "Arrow", "catch", "private", "protected", "public", "Dot", "EOF_TOKEN", "else", "Invalid" };
-
- public final static boolean isValidForParser = true;
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/plugin.properties b/xlc/org.eclipse.cdt.core.lrparser.xlc/plugin.properties
deleted file mode 100644
index aa74cb57736..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc/plugin.properties
+++ /dev/null
@@ -1,23 +0,0 @@
-###############################################################################
-# Copyright (c) 2009 IBM Corporation and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-
-Bundle-Name.0 = XLCParser Plug-in
-Bundle-Vendor.0 = Eclipse CDT
-Bundle-Name.1 = XLC Parser Plug-in
-
-# built-in languages
-language.name.c=XL C
-language.name.cpp=XL C++
-
-preferences.page.title=XL C/C++ Language Options \ No newline at end of file
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/plugin.xml b/xlc/org.eclipse.cdt.core.lrparser.xlc/plugin.xml
deleted file mode 100644
index ffc0beb0ce4..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc/plugin.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.4"?>
-<plugin>
- <extension point="org.eclipse.cdt.core.language">
- <language
- class="org.eclipse.cdt.core.lrparser.xlc.XlcCLanguage"
- id="c"
- name="%language.name.c">
- </language>
-
- <language
- class="org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage"
- id="cpp"
- name="%language.name.cpp">
- </language>
- </extension>
- <extension
- point="org.eclipse.core.runtime.preferences">
- <initializer
- class="org.eclipse.cdt.core.lrparser.xlc.preferences.PreferenceInitializer">
- </initializer>
- </extension>
- <extension
- point="org.eclipse.ui.preferencePages">
- <page
- category="org.eclipse.cdt.ui.preferences.CPluginPreferencePage"
- class="org.eclipse.cdt.internal.core.lrparser.xlc.ui.preferences.XlcLanguageOptionsPreferencePage"
- id="org.eclipse.cdt.core.lrparser.xlc.ui.XlcLanguagePreferencePage"
- name="%preferences.page.title">
- </page>
- </extension>
- <extension
- point="org.eclipse.ui.propertyPages">
- <page
- category="org.eclipse.cdt.ui.newui.Page_head_general"
- class="org.eclipse.cdt.internal.core.lrparser.xlc.ui.preferences.XlcLanguageOptionsPreferencePage"
- id="org.eclipse.cdt.core.lrparser.xlc.ui.XlcLanguagePropertyPage"
- name="%preferences.page.title">
- <enabledWhen>
- <adapt
- type="org.eclipse.core.resources.IProject">
- <test
- property="org.eclipse.core.resources.projectNature"
- value="org.eclipse.cdt.core.cnature">
- </test>
- </adapt>
- </enabledWhen>
- </page>
- </extension>
-</plugin>
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/ui/org/eclipse/cdt/internal/core/lrparser/xlc/ui/preferences/PrefCheckbox.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/ui/org/eclipse/cdt/internal/core/lrparser/xlc/ui/preferences/PrefCheckbox.java
deleted file mode 100644
index a886dd26cc5..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc/ui/org/eclipse/cdt/internal/core/lrparser/xlc/ui/preferences/PrefCheckbox.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.internal.core.lrparser.xlc.ui.preferences;
-
-import org.eclipse.cdt.core.lrparser.xlc.preferences.XlcLanguagePreferences;
-import org.eclipse.cdt.core.lrparser.xlc.preferences.XlcPref;
-import org.eclipse.cdt.utils.ui.controls.ControlFactory;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-
-/**
- * A simple wrapper for a checkbox.
- *
- */
-class PrefCheckbox {
-
- private final XlcPref key;
- private final Button button;
-
- PrefCheckbox(Composite parent, XlcPref prefKey, String label) {
- button = ControlFactory.createCheckBox(parent, label);
- key = prefKey;
- }
-
- public XlcPref getKey() {
- return key;
- }
-
- public void setSelection(boolean selection) {
- button.setSelection(selection);
- }
-
- public boolean getSelection() {
- return button.getSelection();
- }
-
- public void setDefault() {
- setSelection(Boolean.valueOf(XlcLanguagePreferences.getDefaultPreference(key)));
- }
-} \ No newline at end of file
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/ui/org/eclipse/cdt/internal/core/lrparser/xlc/ui/preferences/PreferenceMessages.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/ui/org/eclipse/cdt/internal/core/lrparser/xlc/ui/preferences/PreferenceMessages.java
deleted file mode 100644
index 1b067b463fe..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc/ui/org/eclipse/cdt/internal/core/lrparser/xlc/ui/preferences/PreferenceMessages.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2010 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.internal.core.lrparser.xlc.ui.preferences;
-
-import java.lang.reflect.Field;
-
-import org.eclipse.osgi.util.NLS;
-
-public class PreferenceMessages extends NLS {
-
- private static final String BUNDLE_NAME = "org.eclipse.cdt.internal.core.lrparser.xlc.ui.preferences.PreferenceMessages"; //$NON-NLS-1$
-
- private PreferenceMessages() {
- }
-
- static {
- initializeMessages(BUNDLE_NAME, PreferenceMessages.class);
- }
-
- public static final String PREFIX = "XlcLanguageOptionsPreferencePage_";
-
- public static String getMessage(String suffix) {
- try {
- Field field = PreferenceMessages.class.getDeclaredField(PREFIX + suffix);
- return (String) field.get(null);
-
- } catch (NoSuchFieldException e) {
- return null;
- } catch (IllegalAccessException e) {
- return null;
- }
- }
-
- public static String XlcLanguageOptionsPreferencePage_link, XlcLanguageOptionsPreferencePage_group,
-
- XlcLanguageOptionsPreferencePage_SUPPORT_VECTOR_TYPES,
- XlcLanguageOptionsPreferencePage_SUPPORT_DECIMAL_FLOATING_POINT_TYPES,
- XlcLanguageOptionsPreferencePage_SUPPORT_COMPLEX_IN_CPP,
- XlcLanguageOptionsPreferencePage_SUPPORT_RESTRICT_IN_CPP,
- XlcLanguageOptionsPreferencePage_SUPPORT_STATIC_ASSERT;
-}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/ui/org/eclipse/cdt/internal/core/lrparser/xlc/ui/preferences/PreferenceMessages.properties b/xlc/org.eclipse.cdt.core.lrparser.xlc/ui/org/eclipse/cdt/internal/core/lrparser/xlc/ui/preferences/PreferenceMessages.properties
deleted file mode 100644
index 2562cc97196..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc/ui/org/eclipse/cdt/internal/core/lrparser/xlc/ui/preferences/PreferenceMessages.properties
+++ /dev/null
@@ -1,22 +0,0 @@
-###############################################################################
-# Copyright (c) 2009, 2010 IBM Corporation and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-
-XlcLanguageOptionsPreferencePage_link=These settings are project-specific. The settings listed here override <a href="org.eclipse.cdt.core.lrparser.xlc.ui.XlcLanguagePreferencePage">workspace-wide</a> language settings.
-XlcLanguageOptionsPreferencePage_group=Support For XL C/C++ Language Extensions
-
-XlcLanguageOptionsPreferencePage_SUPPORT_VECTOR_TYPES=Allow vector type declarations
-XlcLanguageOptionsPreferencePage_SUPPORT_DECIMAL_FLOATING_POINT_TYPES=Allow decimal floating-point types (_Decimal32, _Decimal64, _Decimal128)
-XlcLanguageOptionsPreferencePage_SUPPORT_COMPLEX_IN_CPP=Allow complex type in C++ (_Complex)
-XlcLanguageOptionsPreferencePage_SUPPORT_RESTRICT_IN_CPP=Allow 'restrict' keyword in C++ (restrict, __restrict, __restrict__)
-XlcLanguageOptionsPreferencePage_SUPPORT_STATIC_ASSERT=Allow static assert declarations (__static_assert)
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/ui/org/eclipse/cdt/internal/core/lrparser/xlc/ui/preferences/XlcLanguageOptionsPreferencePage.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/ui/org/eclipse/cdt/internal/core/lrparser/xlc/ui/preferences/XlcLanguageOptionsPreferencePage.java
deleted file mode 100644
index 141b70c57d9..00000000000
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc/ui/org/eclipse/cdt/internal/core/lrparser/xlc/ui/preferences/XlcLanguageOptionsPreferencePage.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.internal.core.lrparser.xlc.ui.preferences;
-
-import org.eclipse.cdt.core.lrparser.xlc.preferences.XlcLanguagePreferences;
-import org.eclipse.cdt.core.lrparser.xlc.preferences.XlcPref;
-import org.eclipse.cdt.utils.ui.controls.ControlFactory;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.jface.preference.PreferencePage;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Link;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferencePage;
-import org.eclipse.ui.IWorkbenchPropertyPage;
-import org.eclipse.ui.dialogs.PreferencesUtil;
-
-/**
- * TODO trigger reindex?
- *
- */
-public class XlcLanguageOptionsPreferencePage extends PreferencePage
- implements IWorkbenchPreferencePage, IWorkbenchPropertyPage {
-
- private IAdaptable element;
- private PrefCheckbox[] checkboxes;
-
- private void initializeCheckboxes(Composite group) {
- XlcPref[] prefs = XlcPref.values();
- int n = prefs.length;
- checkboxes = new PrefCheckbox[n];
- IProject project = getProject(); // null for preference page
-
- for (int i = 0; i < n; i++) {
- String message = PreferenceMessages.getMessage(prefs[i].toString());
- checkboxes[i] = new PrefCheckbox(group, prefs[i], message);
- String preference = XlcLanguagePreferences.get(prefs[i], project);
- checkboxes[i].setSelection(Boolean.valueOf(preference));
- }
- }
-
- @Override
- protected Control createContents(Composite parent) {
- Composite page = ControlFactory.createComposite(parent, 1);
-
- if (isPropertyPage()) {
- Link link = new Link(page, SWT.NONE);
- link.setText(PreferenceMessages.XlcLanguageOptionsPreferencePage_link);
- link.addListener(SWT.Selection, new Listener() {
- @Override
- public void handleEvent(Event event) {
- PreferencesUtil.createPreferenceDialogOn(getShell(), event.text, null, null).open();
- }
- });
- }
-
- Composite group = ControlFactory.createGroup(page, PreferenceMessages.XlcLanguageOptionsPreferencePage_group,
- 1);
- initializeCheckboxes(group);
-
- return page;
- }
-
- @Override
- protected void performDefaults() {
- for (PrefCheckbox button : checkboxes) {
- button.setDefault();
- }
- super.performDefaults();
- }
-
- @Override
- public boolean performOk() {
- IProject project = getProject();
- for (PrefCheckbox button : checkboxes) {
- setPreference(button.getKey(), button.getSelection(), project);
- }
- return true;
- }
-
- private static void setPreference(XlcPref key, boolean val, IProject project) {
- String s = String.valueOf(val);
- if (project != null)
- XlcLanguagePreferences.setProjectPreference(key, s, project);
- else
- XlcLanguagePreferences.setWorkspacePreference(key, s);
- }
-
- private IProject getProject() {
- return isPropertyPage() ? (IProject) element.getAdapter(IProject.class) : null;
- }
-
- @Override
- public IAdaptable getElement() {
- return element;
- }
-
- @Override
- public void setElement(IAdaptable element) {
- this.element = element;
- }
-
- public boolean isPropertyPage() {
- return element != null;
- }
-
- @Override
- public void init(IWorkbench workbench) {
- // TODO Auto-generated method stub
- }
-
-}
diff --git a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/.classpath b/xlc/org.eclipse.cdt.errorparsers.xlc.tests/.classpath
deleted file mode 100644
index eca7bdba8f0..00000000000
--- a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
- <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/.project b/xlc/org.eclipse.cdt.errorparsers.xlc.tests/.project
deleted file mode 100644
index ab9159afd4b..00000000000
--- a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.cdt.errorparsers.xlc.tests</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.ManifestBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.SchemaBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.pde.PluginNature</nature>
- <nature>org.eclipse.jdt.core.javanature</nature>
- </natures>
-</projectDescription>
diff --git a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/.settings/org.eclipse.jdt.core.prefs b/xlc/org.eclipse.cdt.errorparsers.xlc.tests/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index ad05599159f..00000000000
--- a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,464 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
-org.eclipse.jdt.core.codeComplete.argumentPrefixes=
-org.eclipse.jdt.core.codeComplete.argumentSuffixes=
-org.eclipse.jdt.core.codeComplete.fieldPrefixes=
-org.eclipse.jdt.core.codeComplete.fieldSuffixes=
-org.eclipse.jdt.core.codeComplete.localPrefixes=
-org.eclipse.jdt.core.codeComplete.localSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
-org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
-org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
-org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
-org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
-org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
-org.eclipse.jdt.core.compiler.problem.APILeak=warning
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=ignore
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
-org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
-org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
-org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
-org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
-org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
-org.eclipse.jdt.core.compiler.problem.nullReference=error
-org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
-org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
-org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
-org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
-org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
-org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
-org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=ignore
-org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore
-org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
-org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
-org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
-org.eclipse.jdt.core.formatter.align_with_spaces=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
-org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
-org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
-org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
-org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=0
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
-org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
-org.eclipse.jdt.core.formatter.comment.format_block_comments=false
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
-org.eclipse.jdt.core.formatter.comment.format_line_comments=false
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
-org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
-org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
-org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.join_lines_in_comments=true
-org.eclipse.jdt.core.formatter.join_wrapped_lines=true
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=120
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_on_off_tags=true
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
-org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
-org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/.settings/org.eclipse.jdt.ui.prefs b/xlc/org.eclipse.cdt.errorparsers.xlc.tests/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index e44576346c4..00000000000
--- a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,133 +0,0 @@
-cleanup.add_default_serial_version_id=true
-cleanup.add_generated_serial_version_id=false
-cleanup.add_missing_annotations=true
-cleanup.add_missing_deprecated_annotations=true
-cleanup.add_missing_methods=false
-cleanup.add_missing_nls_tags=false
-cleanup.add_missing_override_annotations=true
-cleanup.add_missing_override_annotations_interface_methods=true
-cleanup.add_serial_version_id=false
-cleanup.always_use_blocks=true
-cleanup.always_use_parentheses_in_expressions=false
-cleanup.always_use_this_for_non_static_field_access=false
-cleanup.always_use_this_for_non_static_method_access=false
-cleanup.convert_functional_interfaces=false
-cleanup.convert_to_enhanced_for_loop=false
-cleanup.correct_indentation=false
-cleanup.format_source_code=true
-cleanup.format_source_code_changes_only=false
-cleanup.insert_inferred_type_arguments=false
-cleanup.make_local_variable_final=true
-cleanup.make_parameters_final=false
-cleanup.make_private_fields_final=true
-cleanup.make_type_abstract_if_missing_method=false
-cleanup.make_variable_declarations_final=false
-cleanup.never_use_blocks=false
-cleanup.never_use_parentheses_in_expressions=true
-cleanup.organize_imports=true
-cleanup.qualify_static_field_accesses_with_declaring_class=false
-cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-cleanup.qualify_static_member_accesses_with_declaring_class=false
-cleanup.qualify_static_method_accesses_with_declaring_class=false
-cleanup.remove_private_constructors=true
-cleanup.remove_redundant_modifiers=false
-cleanup.remove_redundant_semicolons=true
-cleanup.remove_redundant_type_arguments=true
-cleanup.remove_trailing_whitespaces=true
-cleanup.remove_trailing_whitespaces_all=true
-cleanup.remove_trailing_whitespaces_ignore_empty=false
-cleanup.remove_unnecessary_casts=true
-cleanup.remove_unnecessary_nls_tags=false
-cleanup.remove_unused_imports=true
-cleanup.remove_unused_local_variables=false
-cleanup.remove_unused_private_fields=true
-cleanup.remove_unused_private_members=false
-cleanup.remove_unused_private_methods=true
-cleanup.remove_unused_private_types=true
-cleanup.sort_members=false
-cleanup.sort_members_all=false
-cleanup.use_anonymous_class_creation=false
-cleanup.use_blocks=false
-cleanup.use_blocks_only_for_return_and_throw=false
-cleanup.use_lambda=true
-cleanup.use_parentheses_in_expressions=false
-cleanup.use_this_for_non_static_field_access=false
-cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-cleanup.use_this_for_non_static_method_access=false
-cleanup.use_this_for_non_static_method_access_only_if_necessary=true
-cleanup_profile=_CDT
-cleanup_settings_version=2
-eclipse.preferences.version=1
-editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=_CDT
-formatter_settings_version=14
-internal.default.compliance=user
-org.eclipse.jdt.ui.exception.name=e
-org.eclipse.jdt.ui.gettersetter.use.is=true
-org.eclipse.jdt.ui.ignorelowercasenames=true
-org.eclipse.jdt.ui.importorder=java;javax;org;com;
-org.eclipse.jdt.ui.keywordthis=false
-org.eclipse.jdt.ui.ondemandthreshold=1000
-org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.staticondemandthreshold=1000
-org.eclipse.jdt.ui.text.custom_code_templates=
-sp_cleanup.add_default_serial_version_id=true
-sp_cleanup.add_generated_serial_version_id=false
-sp_cleanup.add_missing_annotations=true
-sp_cleanup.add_missing_deprecated_annotations=true
-sp_cleanup.add_missing_methods=false
-sp_cleanup.add_missing_nls_tags=false
-sp_cleanup.add_missing_override_annotations=true
-sp_cleanup.add_missing_override_annotations_interface_methods=true
-sp_cleanup.add_serial_version_id=false
-sp_cleanup.always_use_blocks=true
-sp_cleanup.always_use_parentheses_in_expressions=false
-sp_cleanup.always_use_this_for_non_static_field_access=false
-sp_cleanup.always_use_this_for_non_static_method_access=false
-sp_cleanup.convert_functional_interfaces=false
-sp_cleanup.convert_to_enhanced_for_loop=false
-sp_cleanup.correct_indentation=false
-sp_cleanup.format_source_code=true
-sp_cleanup.format_source_code_changes_only=false
-sp_cleanup.insert_inferred_type_arguments=false
-sp_cleanup.make_local_variable_final=true
-sp_cleanup.make_parameters_final=false
-sp_cleanup.make_private_fields_final=true
-sp_cleanup.make_type_abstract_if_missing_method=false
-sp_cleanup.make_variable_declarations_final=false
-sp_cleanup.never_use_blocks=false
-sp_cleanup.never_use_parentheses_in_expressions=true
-sp_cleanup.on_save_use_additional_actions=true
-sp_cleanup.organize_imports=true
-sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
-sp_cleanup.remove_private_constructors=true
-sp_cleanup.remove_redundant_modifiers=false
-sp_cleanup.remove_redundant_semicolons=true
-sp_cleanup.remove_redundant_type_arguments=true
-sp_cleanup.remove_trailing_whitespaces=true
-sp_cleanup.remove_trailing_whitespaces_all=true
-sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
-sp_cleanup.remove_unnecessary_casts=true
-sp_cleanup.remove_unnecessary_nls_tags=false
-sp_cleanup.remove_unused_imports=true
-sp_cleanup.remove_unused_local_variables=false
-sp_cleanup.remove_unused_private_fields=true
-sp_cleanup.remove_unused_private_members=false
-sp_cleanup.remove_unused_private_methods=true
-sp_cleanup.remove_unused_private_types=true
-sp_cleanup.sort_members=false
-sp_cleanup.sort_members_all=false
-sp_cleanup.use_anonymous_class_creation=false
-sp_cleanup.use_blocks=false
-sp_cleanup.use_blocks_only_for_return_and_throw=false
-sp_cleanup.use_lambda=true
-sp_cleanup.use_parentheses_in_expressions=false
-sp_cleanup.use_this_for_non_static_field_access=false
-sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-sp_cleanup.use_this_for_non_static_method_access=false
-sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/META-INF/MANIFEST.MF b/xlc/org.eclipse.cdt.errorparsers.xlc.tests/META-INF/MANIFEST.MF
deleted file mode 100644
index 9088d2c9ae7..00000000000
--- a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,18 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: xlC Error Parser Tests Plug-in
-Bundle-SymbolicName: org.eclipse.cdt.errorparsers.xlc.tests;singleton:=true
-Bundle-Version: 5.0.100.qualifier
-Bundle-Activator: org.eclipse.cdt.errorparsers.xlc.tests.TestsPlugin
-Require-Bundle: org.eclipse.ui,
- org.eclipse.core.runtime,
- org.eclipse.core.resources,
- org.eclipse.cdt.core,
- org.eclipse.cdt.errorparsers.xlc,
- org.junit
-Bundle-ActivationPolicy: lazy
-Export-Package: org.eclipse.cdt.errorparsers.xlc.tests
-Bundle-ClassPath: .
-Bundle-Vendor: Eclipse.org
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Automatic-Module-Name: org.eclipse.cdt.errorparsers.xlc.tests
diff --git a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/about.html b/xlc/org.eclipse.cdt.errorparsers.xlc.tests/about.html
deleted file mode 100644
index 164f781a8fd..00000000000
--- a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/about.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
-</head>
-<body lang="EN-US">
- <h2>About This Content</h2>
-
- <p>November 30, 2017</p>
- <h3>License</h3>
-
- <p>
- The Eclipse Foundation makes available all content in this plug-in
- (&quot;Content&quot;). Unless otherwise indicated below, the Content
- is provided to you under the terms and conditions of the Eclipse
- Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
- For purposes of the EPL, &quot;Program&quot; will mean the Content.
- </p>
-
- <p>
- If you did not receive this Content directly from the Eclipse
- Foundation, the Content is being redistributed by another party
- (&quot;Redistributor&quot;) and different terms and conditions may
- apply to your use of any object code in the Content. Check the
- Redistributor's license that was provided with the Content. If no such
- license exists, contact the Redistributor. Unless otherwise indicated
- below, the terms and conditions of the EPL still apply to any source
- code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
- </p>
-
-</body>
-</html> \ No newline at end of file
diff --git a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/build.properties b/xlc/org.eclipse.cdt.errorparsers.xlc.tests/build.properties
deleted file mode 100644
index 35a8eda06f5..00000000000
--- a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/build.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-###############################################################################
-# Copyright (c) 2006, 2009 IBM Corporation and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-bin.includes = META-INF/,\
- .
-jars.compile.order = org.eclipse.cdt.errorparsers.xlc.tests.jar
-src.includes = about.html
-source.. = src/
diff --git a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/AutomatedIntegrationSuite.java b/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/AutomatedIntegrationSuite.java
deleted file mode 100644
index 9070a4356d6..00000000000
--- a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/AutomatedIntegrationSuite.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2013 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.errorparsers.xlc.tests;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-public class AutomatedIntegrationSuite {
- public static void main(String[] args) {
- junit.textui.TestRunner.run(AutomatedIntegrationSuite.suite());
- }
-
- public static Test suite() {
- TestSuite suite = new TestSuite("Testsuite for xlc compiler error parser");
- //$JUnit-BEGIN$
- suite.addTestSuite(TestInformationalMessage_1.class);
- suite.addTestSuite(TestInformationalMessage_2.class);
- suite.addTestSuite(TestInformationalMessage_3.class);
- suite.addTestSuite(TestWarning_1.class);
- suite.addTestSuite(TestError_1.class);
- suite.addTestSuite(TestSevereError_1.class);
- suite.addTestSuite(TestSevereError_2.class);
- suite.addTestSuite(TestSevereError_3.class);
- suite.addTestSuite(TestSevereError_4.class);
- suite.addTestSuite(TestSevereError_5.class);
- suite.addTestSuite(TestUnrecoverableError_1.class);
- suite.addTestSuite(TestUnrecoverableError_2.class);
- suite.addTestSuite(TestUnrecoverableError_3.class);
-
- suite.addTestSuite(TestCompatibility.class);
- suite.addTestSuite(TestRedefinition.class);
- suite.addTestSuite(TestRedeclaration.class);
- suite.addTestSuite(TestCommandOptionNotRecognized.class);
-
- suite.addTestSuite(TestLinkerCommandOptionNotRecognized.class);
- suite.addTestSuite(TestLinkerUndefinedSymbol.class);
- suite.addTestSuite(TestLinkerDuplicateSymbol.class);
- suite.addTestSuite(TestLinkerSevereError.class);
- suite.addTestSuite(TestLinkerErrorWhileReading.class);
- suite.addTestSuite(TestLinkerInfo.class);
-
- //$JUnit-END$
- return suite;
- }
-} \ No newline at end of file
diff --git a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestCommandOptionNotRecognized.java b/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestCommandOptionNotRecognized.java
deleted file mode 100644
index a0e7b916ee5..00000000000
--- a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestCommandOptionNotRecognized.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2013, 2013 Andrew Gvozdev and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Andrew Gvozdev - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.errorparsers.xlc.tests;
-
-import org.eclipse.cdt.core.IMarkerGenerator;
-
-import junit.framework.TestCase;
-
-public class TestCommandOptionNotRecognized extends TestCase {
- String err_msg;
-
- /**
- * This function tests parseLine function of the
- * XlcErrorParser class. A warning message generated by
- * xlc compiler about command options is given as
- * input for testing.
- */
- public void testparseLine() {
- XlcErrorParserTester aix = new XlcErrorParserTester();
- aix.parseLine(err_msg);
- assertEquals("", aix.getFileName(0));
- assertEquals(0, aix.getLineNumber(0));
- assertEquals(IMarkerGenerator.SEVERITY_WARNING, aix.getSeverity(0));
- assertEquals("command option 9 is not recognized - passed to ld", aix.getMessage(0));
- }
-
- public TestCommandOptionNotRecognized(String name) {
- super(name);
- err_msg = "/usr/vacpp/bin/xlc: 1501-216 command option 9 is not recognized - passed to ld";
- }
-}
diff --git a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestCompatibility.java b/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestCompatibility.java
deleted file mode 100644
index 8110adb70bf..00000000000
--- a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestCompatibility.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2010 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.errorparsers.xlc.tests;
-
-import org.eclipse.cdt.core.IMarkerGenerator;
-
-import junit.framework.TestCase;
-
-public class TestCompatibility extends TestCase {
- String err_msg;
-
- /**
- * This function tests parseLine function of the
- * XlcErrorParser class. Error message generated by
- * xlC compiler without message number or quotes around file name
- * which was OK in older version.
- */
- public void testparseLine() {
- XlcErrorParserTester aix = new XlcErrorParserTester();
- aix.parseLine(err_msg);
- assertEquals("temp1.c", aix.getFileName(0));
- assertEquals(5, aix.getLineNumber(0));
- assertEquals(IMarkerGenerator.SEVERITY_INFO, aix.getSeverity(0));
- assertEquals("Compatibility test", aix.getMessage(0));
- }
-
- public TestCompatibility(String name) {
- super(name);
- err_msg = "temp1.c, line 5.1: (I) Compatibility test";
- }
-}
diff --git a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestError_1.java b/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestError_1.java
deleted file mode 100644
index 1c6024136c9..00000000000
--- a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestError_1.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2013 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.cdt.errorparsers.xlc.tests;
-
-import org.eclipse.cdt.core.IMarkerGenerator;
-
-import junit.framework.TestCase;
-
-public class TestError_1 extends TestCase {
- String err_msg;
-
- /**
- * This function tests parseLine function of the
- * XlcErrorParser class. Error message generated by
- * xlc compiler with medium severity (E) is given as
- * input for testing.
- */
- public void testparseLine() {
- XlcErrorParserTester aix = new XlcErrorParserTester();
- aix.parseLine(err_msg);
- assertEquals("temp8.c", aix.getFileName(0));
- assertEquals(9, aix.getLineNumber(0));
- assertEquals(IMarkerGenerator.SEVERITY_ERROR_RESOURCE, aix.getSeverity(0));
- assertEquals("Missing argument(s).", aix.getMessage(0));
- }
-
- public TestError_1(String name) {
- super(name);
- err_msg = "\"temp8.c\", line 9.17: 1506-098 (E) " + "Missing argument(s).";
- }
-} \ No newline at end of file
diff --git a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestInformationalMessage_1.java b/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestInformationalMessage_1.java
deleted file mode 100644
index f40127588f6..00000000000
--- a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestInformationalMessage_1.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2013 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.cdt.errorparsers.xlc.tests;
-
-import org.eclipse.cdt.core.IMarkerGenerator;
-
-import junit.framework.TestCase;
-
-public class TestInformationalMessage_1 extends TestCase {
- String err_msg;
-
- /**
- * This function tests parseLine function of the
- * XlcErrorParser class. Informative message generated
- * by the xlc compiler is given as input for testing.
- */
- public void testparseLine() {
- XlcErrorParserTester aix = new XlcErrorParserTester();
- aix.parseLine(err_msg);
- assertEquals("temp8.c", aix.getFileName(0));
- assertEquals(12, aix.getLineNumber(0));
- assertEquals(IMarkerGenerator.SEVERITY_INFO, aix.getSeverity(0));
- assertEquals("The then branch of conditional is an empty statement.", aix.getMessage(0));
- }
-
- public TestInformationalMessage_1(String name) {
- super(name);
- err_msg = "\"temp8.c\", line 12.9: 1506-478 (I) " + "The then branch of conditional is an empty statement.";
- }
-} \ No newline at end of file
diff --git a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestInformationalMessage_2.java b/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestInformationalMessage_2.java
deleted file mode 100644
index a1e44792fce..00000000000
--- a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestInformationalMessage_2.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2013, 2013 Andrew Gvozdev and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Andrew Gvozdev - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.errorparsers.xlc.tests;
-
-import org.eclipse.cdt.core.IMarkerGenerator;
-
-import junit.framework.TestCase;
-
-public class TestInformationalMessage_2 extends TestCase {
- String err_msg;
-
- /**
- * This function tests parseLine function of the
- * XlcErrorParser class. A variant of informational message generated by
- * xlc compiler with no file or line is given as
- * input for testing.
- */
- public void testparseLine() {
- XlcErrorParserTester aix = new XlcErrorParserTester();
- aix.parseLine(err_msg);
- assertEquals("", aix.getFileName(0));
- assertEquals(0, aix.getLineNumber(0));
- assertEquals(IMarkerGenerator.SEVERITY_INFO, aix.getSeverity(0));
- assertEquals(
- "clazz::fun(): Additional optimization may be attained by recompiling and specifying MAXMEM option with a value greater than 8192.",
- aix.getMessage(0));
- }
-
- public TestInformationalMessage_2(String name) {
- super(name);
- err_msg = " 1500-030: (I) INFORMATION: clazz::fun(): Additional optimization may be attained by recompiling and specifying MAXMEM option with a value greater than 8192.";
- }
-}
diff --git a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestInformationalMessage_3.java b/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestInformationalMessage_3.java
deleted file mode 100644
index 448ac65ec2f..00000000000
--- a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestInformationalMessage_3.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2013, 2013 Andrew Gvozdev and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Andrew Gvozdev - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.errorparsers.xlc.tests;
-
-import org.eclipse.cdt.core.IMarkerGenerator;
-
-import junit.framework.TestCase;
-
-public class TestInformationalMessage_3 extends TestCase {
- String err_msg;
-
- /**
- * This function tests parseLine function of the
- * XlcErrorParser class. A variant of informational message generated by
- * xlc compiler is given as input for testing.
- */
- public void testparseLine() {
- XlcErrorParserTester aix = new XlcErrorParserTester();
- aix.parseLine(err_msg);
- assertEquals("", aix.getFileName(0));
- assertEquals(0, aix.getLineNumber(0));
- assertEquals(IMarkerGenerator.SEVERITY_INFO, aix.getSeverity(0));
- assertEquals("Global variable \"__td __td__Q2_3std13runtime_error\" is not used.", aix.getMessage(0));
- }
-
- public TestInformationalMessage_3(String name) {
- super(name);
- err_msg = "1540-5336 (I) Global variable \"__td __td__Q2_3std13runtime_error\" is not used.";
- }
-}
diff --git a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestLinkerCommandOptionNotRecognized.java b/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestLinkerCommandOptionNotRecognized.java
deleted file mode 100644
index 5fd4f205e44..00000000000
--- a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestLinkerCommandOptionNotRecognized.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2013 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.cdt.errorparsers.xlc.tests;
-
-import org.eclipse.cdt.core.IMarkerGenerator;
-
-import junit.framework.TestCase;
-
-public class TestLinkerCommandOptionNotRecognized extends TestCase {
- String err_msg;
-
- /**
- * This function tests parseLine function of the
- * XlcErrorParser class. A warning message generated by
- * xlc linker about command options is given as
- * input for testing.
- */
- public void testparseLine() {
- XlcErrorParserTester aix = new XlcErrorParserTester();
- aix.parseLine(err_msg);
- assertEquals("", aix.getFileName(0));
- assertEquals(0, aix.getLineNumber(0));
- assertEquals(IMarkerGenerator.SEVERITY_WARNING, aix.getSeverity(0));
- assertEquals("The -9 flag is not recognized.", aix.getMessage(0));
- }
-
- public TestLinkerCommandOptionNotRecognized(String name) {
- super(name);
- err_msg = "ld: 0706-012 The -9 flag is not recognized.";
- }
-}
diff --git a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestLinkerDuplicateSymbol.java b/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestLinkerDuplicateSymbol.java
deleted file mode 100644
index f498ca864fd..00000000000
--- a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestLinkerDuplicateSymbol.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2010 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.cdt.errorparsers.xlc.tests;
-
-import org.eclipse.cdt.core.IMarkerGenerator;
-
-import junit.framework.TestCase;
-
-public class TestLinkerDuplicateSymbol extends TestCase {
- String err_msg;
-
- /**
- * This function tests parseLine function of the
- * XlcErrorParser class. Error message generated by
- * xlc linker with "WARNING" level is given as
- * input for testing.
- */
- public void testparseLine() {
- XlcErrorParserTester aix = new XlcErrorParserTester();
- aix.parseLine(err_msg);
- assertEquals("", aix.getFileName(0));
- assertEquals(0, aix.getLineNumber(0));
- assertEquals(IMarkerGenerator.SEVERITY_WARNING, aix.getSeverity(0));
- assertEquals("Duplicate symbol: dupefun", aix.getMessage(0));
- }
-
- public TestLinkerDuplicateSymbol(String name) {
- super(name);
- err_msg = "ld: 0711-224 WARNING: Duplicate symbol: dupefun";
- }
-}
diff --git a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestLinkerErrorWhileReading.java b/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestLinkerErrorWhileReading.java
deleted file mode 100644
index c8a3b116e88..00000000000
--- a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestLinkerErrorWhileReading.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2010 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.cdt.errorparsers.xlc.tests;
-
-import org.eclipse.cdt.core.IMarkerGenerator;
-
-import junit.framework.TestCase;
-
-public class TestLinkerErrorWhileReading extends TestCase {
- String err_msg;
-
- /**
- * This function tests parseLine function of the
- * XlcErrorParser class. Error message generated by
- * xlc linker with "ERROR" level is given as
- * input for testing.
- */
- public void testparseLine() {
- XlcErrorParserTester aix = new XlcErrorParserTester();
- aix.parseLine(err_msg);
- assertEquals("", aix.getFileName(0));
- assertEquals(0, aix.getLineNumber(0));
- assertEquals(IMarkerGenerator.SEVERITY_ERROR_RESOURCE, aix.getSeverity(0));
- assertEquals("Error occurred while reading file", aix.getMessage(0));
- }
-
- public TestLinkerErrorWhileReading(String name) {
- super(name);
- err_msg = "ld: 0711-987 Error occurred while reading file";
- }
-}
diff --git a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestLinkerInfo.java b/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestLinkerInfo.java
deleted file mode 100644
index 4c7fe713125..00000000000
--- a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestLinkerInfo.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2010 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.cdt.errorparsers.xlc.tests;
-
-import org.eclipse.cdt.core.IMarkerGenerator;
-
-import junit.framework.TestCase;
-
-public class TestLinkerInfo extends TestCase {
- String err_msg;
-
- /**
- * This function tests parseLine function of the
- * XlcErrorParser class. Informational message generated by
- * xlc linker is given as
- * input for testing.
- */
- public void testparseLine() {
- XlcErrorParserTester aix = new XlcErrorParserTester();
- aix.parseLine(err_msg);
- assertEquals("", aix.getFileName(0));
- assertEquals(0, aix.getLineNumber(0));
- assertEquals(IMarkerGenerator.SEVERITY_INFO, aix.getSeverity(0));
- assertEquals("Use the -bloadmap or -bnoquiet option to obtain more information.", aix.getMessage(0));
- }
-
- public TestLinkerInfo(String name) {
- super(name);
- err_msg = "ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information.";
- }
-}
diff --git a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestLinkerSevereError.java b/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestLinkerSevereError.java
deleted file mode 100644
index 15daa18f701..00000000000
--- a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestLinkerSevereError.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2010 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.cdt.errorparsers.xlc.tests;
-
-import org.eclipse.cdt.core.IMarkerGenerator;
-
-import junit.framework.TestCase;
-
-public class TestLinkerSevereError extends TestCase {
- String err_msg;
-
- /**
- * This function tests parseLine function of the
- * XlcErrorParser class. Error message generated by
- * xlc linker with "SEVERE ERROR" level is given as
- * input for testing.
- */
- public void testparseLine() {
- XlcErrorParserTester aix = new XlcErrorParserTester();
- aix.parseLine(err_msg);
- assertEquals("", aix.getFileName(0));
- assertEquals(0, aix.getLineNumber(0));
- assertEquals(IMarkerGenerator.SEVERITY_ERROR_RESOURCE, aix.getSeverity(0));
- assertEquals("EXEC binder commands nested too deeply.", aix.getMessage(0));
- }
-
- public TestLinkerSevereError(String name) {
- super(name);
- err_msg = "ld: 0711-634 SEVERE ERROR: EXEC binder commands nested too deeply.";
- }
-}
diff --git a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestLinkerUndefinedSymbol.java b/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestLinkerUndefinedSymbol.java
deleted file mode 100644
index 03059ae7d40..00000000000
--- a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestLinkerUndefinedSymbol.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2010 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.cdt.errorparsers.xlc.tests;
-
-import org.eclipse.cdt.core.IMarkerGenerator;
-
-import junit.framework.TestCase;
-
-public class TestLinkerUndefinedSymbol extends TestCase {
- String err_msg;
-
- /**
- * This function tests parseLine function of the
- * XlcErrorParser class. Error message generated by
- * xlc linker with "ERROR" level is given as
- * input for testing.
- */
- public void testparseLine() {
- XlcErrorParserTester aix = new XlcErrorParserTester();
- aix.parseLine(err_msg);
- assertEquals("", aix.getFileName(0));
- assertEquals(0, aix.getLineNumber(0));
- assertEquals(IMarkerGenerator.SEVERITY_ERROR_RESOURCE, aix.getSeverity(0));
- assertEquals("Undefined symbol: nofun()", aix.getMessage(0));
- }
-
- public TestLinkerUndefinedSymbol(String name) {
- super(name);
- err_msg = "ld: 0711-317 ERROR: Undefined symbol: nofun()";
- }
-}
diff --git a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestRedeclaration.java b/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestRedeclaration.java
deleted file mode 100644
index 4545f8f8aa7..00000000000
--- a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestRedeclaration.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2010 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.errorparsers.xlc.tests;
-
-import org.eclipse.cdt.core.IMarkerGenerator;
-
-import junit.framework.TestCase;
-
-public class TestRedeclaration extends TestCase {
- /**
- * This function tests parseLine function of the
- * XlcErrorParser class. The second message generated by
- * xlc compiler for symbol redeclaration problem is given as
- * input for testing.
- */
- public void testparseLine() {
- XlcErrorParserTester aix = new XlcErrorParserTester();
- // Redeclaration error generates 2 cross-referencing messages.
- String err_msg = "\"src/temp1.c\", line 6.6: 1506-343 (S) Redeclaration of my_fun differs from previous declaration on line 334 of \"include/temp1.h\".";
- aix.parseLine(err_msg);
- assertEquals(2, aix.getNumberOfMarkers());
-
- assertEquals("Redeclaration of my_fun differs from another declaration on line 6 of \"src/temp1.c\".",
- aix.getMessage(0));
- assertEquals("temp1.h", aix.getFileName(0));
- assertEquals(334, aix.getLineNumber(0));
- assertEquals(IMarkerGenerator.SEVERITY_ERROR_RESOURCE, aix.getSeverity(0));
-
- assertEquals("Redeclaration of my_fun differs from previous declaration on line 334 of \"include/temp1.h\".",
- aix.getMessage(1));
- assertEquals("temp1.c", aix.getFileName(1));
- assertEquals(6, aix.getLineNumber(1));
- assertEquals(IMarkerGenerator.SEVERITY_ERROR_RESOURCE, aix.getSeverity(1));
- }
-
- public TestRedeclaration(String name) {
- super(name);
- }
-} \ No newline at end of file
diff --git a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestRedefinition.java b/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestRedefinition.java
deleted file mode 100644
index d2fddf4c6be..00000000000
--- a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestRedefinition.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2010 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.errorparsers.xlc.tests;
-
-import org.eclipse.cdt.core.IMarkerGenerator;
-
-import junit.framework.TestCase;
-
-public class TestRedefinition extends TestCase {
- /**
- * This function tests parseLine function of the
- * XlcErrorParser class. The second message generated by
- * xlc compiler for macro/variable redefinition problem is given as
- * input for testing.
- */
- public void testparseLine() {
- XlcErrorParserTester aix = new XlcErrorParserTester();
- // Macro redefinition warning generates 2 messages. First line is ignored.
- // Second line is re-parsed to 2 warnings to cross-reference both.
- String err_msg1 = "\"temp1.c\", line 5.9: 1506-236 (W) Macro name TEMP_1 has been redefined.";
- String err_msg2 = "\"temp1.c\", line 5.9: 1506-358 (I) \"TEMP_1\" is defined on line 3 of temp1.h.";
- // variation of the message
- String err_msg3 = "\"temp2.c\", line 17.9: 1506-358 (I) \"MACRO_2\" is defined on line 10 of \"temp2.c\".";
- aix.parseLine(err_msg1);
- aix.parseLine(err_msg2);
- aix.parseLine(err_msg3);
- assertEquals(4, aix.getNumberOfMarkers());
-
- assertEquals("\"TEMP_1\" has been redefined on line 5 of temp1.c", aix.getMessage(0));
- assertEquals("temp1.h", aix.getFileName(0));
- assertEquals(3, aix.getLineNumber(0));
- assertEquals(IMarkerGenerator.SEVERITY_WARNING, aix.getSeverity(0));
-
- assertEquals("\"TEMP_1\" redefines original definition on line 3 of temp1.h", aix.getMessage(1));
- assertEquals("temp1.c", aix.getFileName(1));
- assertEquals(5, aix.getLineNumber(1));
- assertEquals(IMarkerGenerator.SEVERITY_WARNING, aix.getSeverity(1));
-
- assertEquals("\"MACRO_2\" has been redefined on line 17 of temp2.c", aix.getMessage(2));
- assertEquals("temp2.c", aix.getFileName(2));
- assertEquals(10, aix.getLineNumber(2));
- assertEquals(IMarkerGenerator.SEVERITY_WARNING, aix.getSeverity(2));
-
- assertEquals("\"MACRO_2\" redefines original definition on line 10 of temp2.c", aix.getMessage(3));
- assertEquals("temp2.c", aix.getFileName(3));
- assertEquals(17, aix.getLineNumber(3));
- assertEquals(IMarkerGenerator.SEVERITY_WARNING, aix.getSeverity(3));
- }
-
- public TestRedefinition(String name) {
- super(name);
- }
-} \ No newline at end of file
diff --git a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestSevereError_1.java b/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestSevereError_1.java
deleted file mode 100644
index 09358ce8a63..00000000000
--- a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestSevereError_1.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2013 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.errorparsers.xlc.tests;
-
-import org.eclipse.cdt.core.IMarkerGenerator;
-
-import junit.framework.TestCase;
-
-public class TestSevereError_1 extends TestCase {
- String err_msg;
-
- /**
- * This function tests parseLine function of the
- * XlcErrorParser class. Error message generated by
- * xlc compiler with high severity (S) is given as
- * input for testing.
- */
- public void testparseLine() {
- XlcErrorParserTester aix = new XlcErrorParserTester();
- aix.parseLine(err_msg);
- assertEquals("temp1.c", aix.getFileName(0));
- assertEquals(5, aix.getLineNumber(0));
- assertEquals(IMarkerGenerator.SEVERITY_ERROR_RESOURCE, aix.getSeverity(0));
- assertEquals("Syntax error: possible missing ')'?", aix.getMessage(0));
- }
-
- public TestSevereError_1(String name) {
- super(name);
- err_msg = "\"temp1.c\", line 5.1: 1506-276 (S) " + "Syntax error: possible missing ')'?";
- }
-} \ No newline at end of file
diff --git a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestSevereError_2.java b/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestSevereError_2.java
deleted file mode 100644
index cf7ab77bfab..00000000000
--- a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestSevereError_2.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2013 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.cdt.errorparsers.xlc.tests;
-
-import org.eclipse.cdt.core.IMarkerGenerator;
-
-import junit.framework.TestCase;
-
-public class TestSevereError_2 extends TestCase {
- String err_msg;
-
- /**
- * This function tests parseLine function of the
- * XlcErrorParser class. Error message generated by
- * xlc compiler with high severity (S) is given as
- * input for testing.
- */
- public void testparseLine() {
- XlcErrorParserTester aix = new XlcErrorParserTester();
- aix.parseLine(err_msg);
- assertEquals("temp5.c", aix.getFileName(0));
- assertEquals(5, aix.getLineNumber(0));
- assertEquals(IMarkerGenerator.SEVERITY_ERROR_RESOURCE, aix.getSeverity(0));
- assertEquals("Undeclared identifier y.", aix.getMessage(0));
- }
-
- public TestSevereError_2(String name) {
- super(name);
- err_msg = "\"temp5.c\", line 5.9: 1506-045 (S) " + "Undeclared identifier y.";
- }
-} \ No newline at end of file
diff --git a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestSevereError_3.java b/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestSevereError_3.java
deleted file mode 100644
index e2a32aa19e5..00000000000
--- a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestSevereError_3.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2013 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.cdt.errorparsers.xlc.tests;
-
-import org.eclipse.cdt.core.IMarkerGenerator;
-
-import junit.framework.TestCase;
-
-public class TestSevereError_3 extends TestCase {
- String err_msg;
-
- /**
- * This function tests parseLine function of the
- * XlcErrorParser class. Error message generated by
- * xlc compiler with high severity (S) is given as
- * input for testing.
- */
- public void testparseLine() {
- XlcErrorParserTester aix = new XlcErrorParserTester();
- aix.parseLine(err_msg);
- assertEquals("temp9.c", aix.getFileName(0));
- assertEquals(11, aix.getLineNumber(0));
- assertEquals(IMarkerGenerator.SEVERITY_ERROR_RESOURCE, aix.getSeverity(0));
- assertEquals("Floating point constant 10.23.3 is not valid", aix.getMessage(0));
- }
-
- public TestSevereError_3(String name) {
- super(name);
- err_msg = "\"temp9.c\", line 11.18: 1506-189 (S) " + "Floating point constant 10.23.3 is not valid";
- }
-} \ No newline at end of file
diff --git a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestSevereError_4.java b/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestSevereError_4.java
deleted file mode 100644
index ae723851fd7..00000000000
--- a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestSevereError_4.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2013 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.cdt.errorparsers.xlc.tests;
-
-import org.eclipse.cdt.core.IMarkerGenerator;
-
-import junit.framework.TestCase;
-
-public class TestSevereError_4 extends TestCase {
- String err_msg;
-
- /**
- * This function tests parseLine function of the
- * XlcErrorParser class. Error message generated by
- * xlc compiler with high severity (S) is given as
- * input for testing.
- */
- public void testparseLine() {
- XlcErrorParserTester aix = new XlcErrorParserTester();
- aix.parseLine(err_msg);
- assertEquals("temp9.c", aix.getFileName(0));
- assertEquals(12, aix.getLineNumber(0));
- assertEquals(IMarkerGenerator.SEVERITY_ERROR_RESOURCE, aix.getSeverity(0));
- assertEquals("Function argument assignment between types " + "\"int\" and \"char*\" is not allowed.",
- aix.getMessage(0));
- }
-
- public TestSevereError_4(String name) {
- super(name);
- err_msg = "\"temp9.c\", line 12.18: 1506-280 (S) " + "Function argument assignment between types "
- + "\"int\" and \"char*\" is not allowed.";
- }
-} \ No newline at end of file
diff --git a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestSevereError_5.java b/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestSevereError_5.java
deleted file mode 100644
index 87f6f35fea4..00000000000
--- a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestSevereError_5.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2013 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.errorparsers.xlc.tests;
-
-import org.eclipse.cdt.core.IMarkerGenerator;
-
-import junit.framework.TestCase;
-
-public class TestSevereError_5 extends TestCase {
- String err_msg;
-
- /**
- * This function tests parseLine function of the
- * XlcErrorParser class. Error message generated by
- * xlc compiler with high severity (S) is given as
- * input for testing.
- */
- public void testparseLine() {
- XlcErrorParserTester aix = new XlcErrorParserTester();
- aix.parseLine(err_msg);
- assertEquals("temp9.c", aix.getFileName(0));
- assertEquals(13, aix.getLineNumber(0));
- assertEquals(IMarkerGenerator.SEVERITY_ERROR_RESOURCE, aix.getSeverity(0));
- assertEquals("Operand must be a modifiable lvalue.", aix.getMessage(0));
- }
-
- public TestSevereError_5(String name) {
- super(name);
- err_msg = "\"temp9.c\", line 13.9: 1506-025 (S) " + "Operand must be a modifiable lvalue.";
- }
-} \ No newline at end of file
diff --git a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestUnrecoverableError_1.java b/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestUnrecoverableError_1.java
deleted file mode 100644
index 6ec0025598f..00000000000
--- a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestUnrecoverableError_1.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2013 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.errorparsers.xlc.tests;
-
-import org.eclipse.cdt.core.IMarkerGenerator;
-
-import junit.framework.TestCase;
-
-public class TestUnrecoverableError_1 extends TestCase {
- String err_msg;
-
- /**
- * This function tests parseLine function of the
- * XlcErrorParser class. Error message generated by
- * xlc compiler with unrecoverable severity (U) is given as
- * input for testing.
- */
- public void testparseLine() {
- XlcErrorParserTester aix = new XlcErrorParserTester();
- aix.parseLine(err_msg);
- assertEquals("temp1.c", aix.getFileName(0));
- assertEquals(5, aix.getLineNumber(0));
- assertEquals(IMarkerGenerator.SEVERITY_ERROR_RESOURCE, aix.getSeverity(0));
- assertEquals("INTERNAL COMPILER ERROR", aix.getMessage(0));
- }
-
- public TestUnrecoverableError_1(String name) {
- super(name);
- err_msg = "\"temp1.c\", line 5.1: 1506-001 (U) " + "INTERNAL COMPILER ERROR";
- }
-}
diff --git a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestUnrecoverableError_2.java b/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestUnrecoverableError_2.java
deleted file mode 100644
index ecaa304bc9c..00000000000
--- a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestUnrecoverableError_2.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2013, 2013 Andrew Gvozdev and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Andrew Gvozdev - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.errorparsers.xlc.tests;
-
-import org.eclipse.cdt.core.IMarkerGenerator;
-
-import junit.framework.TestCase;
-
-public class TestUnrecoverableError_2 extends TestCase {
- String err_msg;
-
- /**
- * This function tests parseLine function of the
- * XlcErrorParser class. A variant of error message generated by
- * xlc compiler with unrecoverable severity (U) is given as
- * input for testing.
- */
- public void testparseLine() {
- XlcErrorParserTester aix = new XlcErrorParserTester();
- aix.parseLine(err_msg);
- assertEquals("", aix.getFileName(0));
- assertEquals(0, aix.getLineNumber(0));
- assertEquals(IMarkerGenerator.SEVERITY_ERROR_RESOURCE, aix.getSeverity(0));
- assertEquals("An error occurred during code generation. The code generation return code was 1.",
- aix.getMessage(0));
- }
-
- public TestUnrecoverableError_2(String name) {
- super(name);
- err_msg = "1586-346 (U) An error occurred during code generation. The code generation return code was 1.";
- }
-}
diff --git a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestUnrecoverableError_3.java b/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestUnrecoverableError_3.java
deleted file mode 100644
index 41615b877db..00000000000
--- a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestUnrecoverableError_3.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2013, 2013 Andrew Gvozdev and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Andrew Gvozdev - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.errorparsers.xlc.tests;
-
-import org.eclipse.cdt.core.IMarkerGenerator;
-
-import junit.framework.TestCase;
-
-public class TestUnrecoverableError_3 extends TestCase {
- String err_msg;
-
- /**
- * This function tests parseLine function of the
- * XlcErrorParser class. A variant of error message generated by
- * xlc compiler with unrecoverable severity (U) is given as
- * input for testing.
- */
- public void testparseLine() {
- XlcErrorParserTester aix = new XlcErrorParserTester();
- aix.parseLine(err_msg);
- assertEquals("", aix.getFileName(0));
- assertEquals(0, aix.getLineNumber(0));
- assertEquals(IMarkerGenerator.SEVERITY_ERROR_RESOURCE, aix.getSeverity(0));
- assertEquals(
- "INTERNAL COMPILER ERROR while compiling ----. Compilation ended. Contact your Service Representative and provide the following information: Internal abort. For more information visit: http://www.ibm.com/support/docview.wss?uid=swg21110810",
- aix.getMessage(0));
- }
-
- public TestUnrecoverableError_3(String name) {
- super(name);
- err_msg = " 1500-004: (U) INTERNAL COMPILER ERROR while compiling ----. Compilation ended. Contact your Service Representative and provide the following information: Internal abort. For more information visit: http://www.ibm.com/support/docview.wss?uid=swg21110810";
- }
-}
diff --git a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestWarning_1.java b/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestWarning_1.java
deleted file mode 100644
index 632fb9254a3..00000000000
--- a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestWarning_1.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2013 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.errorparsers.xlc.tests;
-
-import org.eclipse.cdt.core.IMarkerGenerator;
-
-import junit.framework.TestCase;
-
-public class TestWarning_1 extends TestCase {
- String err_msg;
-
- /**
- * This function tests parseLine function of the
- * XlcErrorParser class. Warning message generated by
- * xlc compiler (W) is given as input for testing.
- */
- public void testparseLine() {
- XlcErrorParserTester aix = new XlcErrorParserTester();
- aix.parseLine(err_msg);
- assertEquals("temp1.c", aix.getFileName(0));
- assertEquals(5, aix.getLineNumber(0));
- assertEquals(IMarkerGenerator.SEVERITY_WARNING, aix.getSeverity(0));
- assertEquals("No function prototype given for \"printf\".", aix.getMessage(0));
- }
-
- public TestWarning_1(String name) {
- super(name);
- err_msg = "\"temp1.c\", line 5.9: 1506-304 (W) " + "No function prototype given for \"printf\".";
- }
-} \ No newline at end of file
diff --git a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestsPlugin.java b/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestsPlugin.java
deleted file mode 100644
index 00fa2c7161a..00000000000
--- a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/TestsPlugin.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.cdt.errorparsers.xlc.tests;
-
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-import org.osgi.framework.BundleContext;
-
-/**
- * The main plugin class to be used in the desktop.
- */
-public class TestsPlugin extends AbstractUIPlugin {
- //The shared instance.
- private static TestsPlugin plugin;
- //Resource bundle.
- private ResourceBundle resourceBundle;
-
- /**
- * The constructor.
- */
- public TestsPlugin() {
- super();
- plugin = this;
- }
-
- /**
- * This method is called upon plug-in activation
- */
- @Override
- public void start(BundleContext context) throws Exception {
- super.start(context);
- }
-
- /**
- * This method is called when the plug-in is stopped
- */
- @Override
- public void stop(BundleContext context) throws Exception {
- super.stop(context);
- plugin = null;
- resourceBundle = null;
- }
-
- /**
- * Returns the shared instance.
- */
- public static TestsPlugin getDefault() {
- return plugin;
- }
-
- /**
- * Returns the string from the plugin's resource bundle,
- * or 'key' if not found.
- */
- public static String getResourceString(String key) {
- ResourceBundle bundle = TestsPlugin.getDefault().getResourceBundle();
- try {
- return (bundle != null) ? bundle.getString(key) : key;
- } catch (MissingResourceException e) {
- return key;
- }
- }
-
- /**
- * Returns the plugin's resource bundle,
- */
- public ResourceBundle getResourceBundle() {
- try {
- if (resourceBundle == null)
- resourceBundle = ResourceBundle
- .getBundle("org.eclipse.cdt.errorparsers.xlc.tests.TestsPluginResources");
- } catch (MissingResourceException x) {
- resourceBundle = null;
- }
- return resourceBundle;
- }
-
- /**
- * Returns an image descriptor for the image file at the given
- * plug-in relative path.
- *
- * @param path the path
- * @return the image descriptor
- */
- public static ImageDescriptor getImageDescriptor(String path) {
- return AbstractUIPlugin.imageDescriptorFromPlugin("org.eclipse.cdt.errorparsers.xlc.tests", path);
- }
-}
diff --git a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/XlcErrorParserTester.java b/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/XlcErrorParserTester.java
deleted file mode 100644
index da531ab13ef..00000000000
--- a/xlc/org.eclipse.cdt.errorparsers.xlc.tests/src/org/eclipse/cdt/errorparsers/xlc/tests/XlcErrorParserTester.java
+++ /dev/null
@@ -1,160 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2014 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- * Andrew Gvozdev
- *******************************************************************************/
-
-package org.eclipse.cdt.errorparsers.xlc.tests;
-
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.fail;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.cdt.core.ErrorParserManager;
-import org.eclipse.cdt.core.IErrorParserNamed;
-import org.eclipse.cdt.core.IMarkerGenerator;
-import org.eclipse.cdt.core.ProblemMarkerInfo;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-
-/*
- * Helper tester class to be able to test XlcErrorParser which extends AbstractErrorParser.
- */
-
-public class XlcErrorParserTester {
- public static final String XLC_ERROR_PARSER_ID = "org.eclipse.cdt.errorparsers.xlc.XlcErrorParser";
-
- static private int counter = 0;
- IProject fTempProject = ResourcesPlugin.getWorkspace().getRoot()
- .getProject("XlcErrorParserTester.temp." + counter++);
-
- XlcErrorParserTester() {
- try {
- fTempProject.create(null);
- } catch (CoreException e) {
- e.printStackTrace();
- fail("Exception creating temporary project " + fTempProject.getName() + ": " + e);
- }
- }
-
- private class MarkerData {
- private String fileName;
- private int lineNumber;
- private int severity;
- private String message;
- }
-
- private List<MarkerData> markerDataList = new ArrayList<>();
-
- /*
- * Dummy class implementing IMarkerGenerator lets get through testing
- * without NPE.
- */
- private class MockMarkerGenerator implements IMarkerGenerator {
-
- @Override
- public void addMarker(IResource file, int lineNumber, String errorDesc, int severity, String errorVar) {
- // dummy
- }
-
- @Override
- public void addMarker(ProblemMarkerInfo problemMarkerInfo) {
- // dummy
- }
-
- }
-
- /*
- * Class MockErrorParserManager replaces ErrorParserManager
- * with the purpose to be able to inquire how the line was parsed.
- * fileName, lineNumber, message and severity are populated
- * to be accessed from the test cases.
- * Relying on internal implementation of ErrorPattern.RecordError()
- * to provide necessary data via generateExternalMarker() call
- */
- private class MockErrorParserManager extends ErrorParserManager {
-
- private MockErrorParserManager() {
- super(fTempProject, new MockMarkerGenerator());
- }
-
- /*
- * A stub function just to return non-null IFile.
- * Necessary to trick ErrorPattern.RecordError() to generate markers.
- */
- @Override
- public IFile findFileName(String fileName) {
- if (fileName != null && fileName.trim().length() > 0)
- return fTempProject.getFile(fileName);
- return null;
- }
-
- /**
- * Called by ErrorPattern.RecordError() for external problem markers
- */
- @Override
- public void generateExternalMarker(IResource rc, int lineNumb, String desc, int sev, String varName,
- IPath externalPath) {
- // if rc is this project it means that file was not found
- MarkerData markerData = new MarkerData();
- if (rc != null && rc != fTempProject) {
- markerData.fileName = rc.getName();
- } else {
- markerData.fileName = "";
- }
- markerData.lineNumber = lineNumb;
- markerData.message = desc;
- markerData.severity = sev;
-
- markerDataList.add(markerData);
- }
- }
-
- /**
- * Main method called by individual error parser tests.
- * @param line one xlC error message
- * @return
- */
- boolean parseLine(String line) {
- IErrorParserNamed errorParser = ErrorParserManager.getErrorParserCopy(XLC_ERROR_PARSER_ID);
- assertNotNull(errorParser);
-
- MockErrorParserManager epManager = new MockErrorParserManager();
- return errorParser.processLine(line, epManager);
- }
-
- int getNumberOfMarkers() {
- return markerDataList.size();
- }
-
- String getFileName(int i) {
- return markerDataList.get(i).fileName;
- }
-
- int getLineNumber(int i) {
- return markerDataList.get(i).lineNumber;
- }
-
- int getSeverity(int i) {
- return markerDataList.get(i).severity;
- }
-
- String getMessage(int i) {
- return markerDataList.get(i).message;
- }
-}
diff --git a/xlc/org.eclipse.cdt.errorparsers.xlc/.classpath b/xlc/org.eclipse.cdt.errorparsers.xlc/.classpath
deleted file mode 100644
index eca7bdba8f0..00000000000
--- a/xlc/org.eclipse.cdt.errorparsers.xlc/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
- <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/xlc/org.eclipse.cdt.errorparsers.xlc/.project b/xlc/org.eclipse.cdt.errorparsers.xlc/.project
deleted file mode 100644
index 510561ddc19..00000000000
--- a/xlc/org.eclipse.cdt.errorparsers.xlc/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.cdt.errorparsers.xlc</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.ManifestBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.SchemaBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.pde.PluginNature</nature>
- <nature>org.eclipse.jdt.core.javanature</nature>
- </natures>
-</projectDescription>
diff --git a/xlc/org.eclipse.cdt.errorparsers.xlc/.settings/org.eclipse.jdt.core.prefs b/xlc/org.eclipse.cdt.errorparsers.xlc/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 2b6ecff8a01..00000000000
--- a/xlc/org.eclipse.cdt.errorparsers.xlc/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,464 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
-org.eclipse.jdt.core.codeComplete.argumentPrefixes=
-org.eclipse.jdt.core.codeComplete.argumentSuffixes=
-org.eclipse.jdt.core.codeComplete.fieldPrefixes=
-org.eclipse.jdt.core.codeComplete.fieldSuffixes=
-org.eclipse.jdt.core.codeComplete.localPrefixes=
-org.eclipse.jdt.core.codeComplete.localSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
-org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
-org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
-org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
-org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
-org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
-org.eclipse.jdt.core.compiler.problem.APILeak=warning
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
-org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
-org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
-org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
-org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
-org.eclipse.jdt.core.compiler.problem.nullReference=error
-org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
-org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
-org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
-org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
-org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
-org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
-org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
-org.eclipse.jdt.core.formatter.align_with_spaces=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
-org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
-org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
-org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
-org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=0
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
-org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
-org.eclipse.jdt.core.formatter.comment.format_block_comments=false
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
-org.eclipse.jdt.core.formatter.comment.format_line_comments=false
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
-org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
-org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
-org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.join_lines_in_comments=true
-org.eclipse.jdt.core.formatter.join_wrapped_lines=true
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=120
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_on_off_tags=true
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
-org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
-org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/xlc/org.eclipse.cdt.errorparsers.xlc/.settings/org.eclipse.jdt.ui.prefs b/xlc/org.eclipse.cdt.errorparsers.xlc/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index e44576346c4..00000000000
--- a/xlc/org.eclipse.cdt.errorparsers.xlc/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,133 +0,0 @@
-cleanup.add_default_serial_version_id=true
-cleanup.add_generated_serial_version_id=false
-cleanup.add_missing_annotations=true
-cleanup.add_missing_deprecated_annotations=true
-cleanup.add_missing_methods=false
-cleanup.add_missing_nls_tags=false
-cleanup.add_missing_override_annotations=true
-cleanup.add_missing_override_annotations_interface_methods=true
-cleanup.add_serial_version_id=false
-cleanup.always_use_blocks=true
-cleanup.always_use_parentheses_in_expressions=false
-cleanup.always_use_this_for_non_static_field_access=false
-cleanup.always_use_this_for_non_static_method_access=false
-cleanup.convert_functional_interfaces=false
-cleanup.convert_to_enhanced_for_loop=false
-cleanup.correct_indentation=false
-cleanup.format_source_code=true
-cleanup.format_source_code_changes_only=false
-cleanup.insert_inferred_type_arguments=false
-cleanup.make_local_variable_final=true
-cleanup.make_parameters_final=false
-cleanup.make_private_fields_final=true
-cleanup.make_type_abstract_if_missing_method=false
-cleanup.make_variable_declarations_final=false
-cleanup.never_use_blocks=false
-cleanup.never_use_parentheses_in_expressions=true
-cleanup.organize_imports=true
-cleanup.qualify_static_field_accesses_with_declaring_class=false
-cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-cleanup.qualify_static_member_accesses_with_declaring_class=false
-cleanup.qualify_static_method_accesses_with_declaring_class=false
-cleanup.remove_private_constructors=true
-cleanup.remove_redundant_modifiers=false
-cleanup.remove_redundant_semicolons=true
-cleanup.remove_redundant_type_arguments=true
-cleanup.remove_trailing_whitespaces=true
-cleanup.remove_trailing_whitespaces_all=true
-cleanup.remove_trailing_whitespaces_ignore_empty=false
-cleanup.remove_unnecessary_casts=true
-cleanup.remove_unnecessary_nls_tags=false
-cleanup.remove_unused_imports=true
-cleanup.remove_unused_local_variables=false
-cleanup.remove_unused_private_fields=true
-cleanup.remove_unused_private_members=false
-cleanup.remove_unused_private_methods=true
-cleanup.remove_unused_private_types=true
-cleanup.sort_members=false
-cleanup.sort_members_all=false
-cleanup.use_anonymous_class_creation=false
-cleanup.use_blocks=false
-cleanup.use_blocks_only_for_return_and_throw=false
-cleanup.use_lambda=true
-cleanup.use_parentheses_in_expressions=false
-cleanup.use_this_for_non_static_field_access=false
-cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-cleanup.use_this_for_non_static_method_access=false
-cleanup.use_this_for_non_static_method_access_only_if_necessary=true
-cleanup_profile=_CDT
-cleanup_settings_version=2
-eclipse.preferences.version=1
-editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=_CDT
-formatter_settings_version=14
-internal.default.compliance=user
-org.eclipse.jdt.ui.exception.name=e
-org.eclipse.jdt.ui.gettersetter.use.is=true
-org.eclipse.jdt.ui.ignorelowercasenames=true
-org.eclipse.jdt.ui.importorder=java;javax;org;com;
-org.eclipse.jdt.ui.keywordthis=false
-org.eclipse.jdt.ui.ondemandthreshold=1000
-org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.staticondemandthreshold=1000
-org.eclipse.jdt.ui.text.custom_code_templates=
-sp_cleanup.add_default_serial_version_id=true
-sp_cleanup.add_generated_serial_version_id=false
-sp_cleanup.add_missing_annotations=true
-sp_cleanup.add_missing_deprecated_annotations=true
-sp_cleanup.add_missing_methods=false
-sp_cleanup.add_missing_nls_tags=false
-sp_cleanup.add_missing_override_annotations=true
-sp_cleanup.add_missing_override_annotations_interface_methods=true
-sp_cleanup.add_serial_version_id=false
-sp_cleanup.always_use_blocks=true
-sp_cleanup.always_use_parentheses_in_expressions=false
-sp_cleanup.always_use_this_for_non_static_field_access=false
-sp_cleanup.always_use_this_for_non_static_method_access=false
-sp_cleanup.convert_functional_interfaces=false
-sp_cleanup.convert_to_enhanced_for_loop=false
-sp_cleanup.correct_indentation=false
-sp_cleanup.format_source_code=true
-sp_cleanup.format_source_code_changes_only=false
-sp_cleanup.insert_inferred_type_arguments=false
-sp_cleanup.make_local_variable_final=true
-sp_cleanup.make_parameters_final=false
-sp_cleanup.make_private_fields_final=true
-sp_cleanup.make_type_abstract_if_missing_method=false
-sp_cleanup.make_variable_declarations_final=false
-sp_cleanup.never_use_blocks=false
-sp_cleanup.never_use_parentheses_in_expressions=true
-sp_cleanup.on_save_use_additional_actions=true
-sp_cleanup.organize_imports=true
-sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
-sp_cleanup.remove_private_constructors=true
-sp_cleanup.remove_redundant_modifiers=false
-sp_cleanup.remove_redundant_semicolons=true
-sp_cleanup.remove_redundant_type_arguments=true
-sp_cleanup.remove_trailing_whitespaces=true
-sp_cleanup.remove_trailing_whitespaces_all=true
-sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
-sp_cleanup.remove_unnecessary_casts=true
-sp_cleanup.remove_unnecessary_nls_tags=false
-sp_cleanup.remove_unused_imports=true
-sp_cleanup.remove_unused_local_variables=false
-sp_cleanup.remove_unused_private_fields=true
-sp_cleanup.remove_unused_private_members=false
-sp_cleanup.remove_unused_private_methods=true
-sp_cleanup.remove_unused_private_types=true
-sp_cleanup.sort_members=false
-sp_cleanup.sort_members_all=false
-sp_cleanup.use_anonymous_class_creation=false
-sp_cleanup.use_blocks=false
-sp_cleanup.use_blocks_only_for_return_and_throw=false
-sp_cleanup.use_lambda=true
-sp_cleanup.use_parentheses_in_expressions=false
-sp_cleanup.use_this_for_non_static_field_access=false
-sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-sp_cleanup.use_this_for_non_static_method_access=false
-sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/xlc/org.eclipse.cdt.errorparsers.xlc/META-INF/MANIFEST.MF b/xlc/org.eclipse.cdt.errorparsers.xlc/META-INF/MANIFEST.MF
deleted file mode 100644
index 9b79b73f553..00000000000
--- a/xlc/org.eclipse.cdt.errorparsers.xlc/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,16 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-SymbolicName: org.eclipse.cdt.errorparsers.xlc; singleton:=true
-Bundle-Version: 5.0.101.qualifier
-Bundle-Activator: org.eclipse.cdt.errorparsers.xlc.Activator
-Bundle-Localization: plugin
-Require-Bundle: org.eclipse.ui,
- org.eclipse.core.runtime,
- org.eclipse.cdt.core,
- org.eclipse.core.resources
-Bundle-ActivationPolicy: lazy
-Export-Package: org.eclipse.cdt.errorparsers.xlc
-Bundle-Vendor: %providerName
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Automatic-Module-Name: org.eclipse.cdt.errorparsers.xlc
diff --git a/xlc/org.eclipse.cdt.errorparsers.xlc/about.html b/xlc/org.eclipse.cdt.errorparsers.xlc/about.html
deleted file mode 100644
index 164f781a8fd..00000000000
--- a/xlc/org.eclipse.cdt.errorparsers.xlc/about.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
-</head>
-<body lang="EN-US">
- <h2>About This Content</h2>
-
- <p>November 30, 2017</p>
- <h3>License</h3>
-
- <p>
- The Eclipse Foundation makes available all content in this plug-in
- (&quot;Content&quot;). Unless otherwise indicated below, the Content
- is provided to you under the terms and conditions of the Eclipse
- Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
- For purposes of the EPL, &quot;Program&quot; will mean the Content.
- </p>
-
- <p>
- If you did not receive this Content directly from the Eclipse
- Foundation, the Content is being redistributed by another party
- (&quot;Redistributor&quot;) and different terms and conditions may
- apply to your use of any object code in the Content. Check the
- Redistributor's license that was provided with the Content. If no such
- license exists, contact the Redistributor. Unless otherwise indicated
- below, the terms and conditions of the EPL still apply to any source
- code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
- </p>
-
-</body>
-</html> \ No newline at end of file
diff --git a/xlc/org.eclipse.cdt.errorparsers.xlc/build.properties b/xlc/org.eclipse.cdt.errorparsers.xlc/build.properties
deleted file mode 100644
index cdba9cf7df1..00000000000
--- a/xlc/org.eclipse.cdt.errorparsers.xlc/build.properties
+++ /dev/null
@@ -1,21 +0,0 @@
-###############################################################################
-# Copyright (c) 2006, 2009 IBM Corporation and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
- .,\
- plugin.properties,\
- plugin.xml,\
- about.html
-src.includes = about.html
diff --git a/xlc/org.eclipse.cdt.errorparsers.xlc/plugin.properties b/xlc/org.eclipse.cdt.errorparsers.xlc/plugin.properties
deleted file mode 100755
index 8bed0bb728a..00000000000
--- a/xlc/org.eclipse.cdt.errorparsers.xlc/plugin.properties
+++ /dev/null
@@ -1,58 +0,0 @@
-###############################################################################
-# Copyright (c) 2006, 2010 IBM Corporation and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-# plugin.properties
-# contains externalized strings for plugin.xml
-# "%foo" in feature.xml corresponds to the key "foo" in this file
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# This file should be translated.
-pluginName=xlC Error Parser Test Plugin
-providerName=Eclipse CDT
-
-CDTXLCErrorParser.name=xlC Error Parser
-
-# Translators: do not translate patterns below. We currently do not support NL versions of the XL C/C++ compilers.
-# Following are patterns of xlC compiler messages. While translating the patterns should be replaced
-# with corresponding patterns matching localized compiler messages
-
-# START NON-TRANSLATABLE
-# "hello.c", line 5.9: 1506-358 (I) "MACRO" is defined on line 3 of hello.h.
-CDTXLCErrorParser.pattern.macro="?([^"]*)"?, line ([0-9]+)\\.[0-9]+:( [0-9]*-[0-9]*)? \\(I\\)\\s*(.*) is defined on line ([0-9]+) of "?([^"]*)"?\\.
-CDTXLCErrorParser.pattern.macro.replacement=$4 has been redefined on line $2 of $1
-CDTXLCErrorParser.pattern.macro.crossreference=$4 redefines original definition on line $5 of $6
-CDTXLCErrorParser.pattern.macro.ignore="?([^"]*)"?, line ([0-9]+)\\.[0-9]+:( [0-9]*-[0-9]*)? \\(W\\)\\s*Macro name .* has been redefined\\.
-# "src/temp1.c", line 6.6: 1506-343 (S) Redeclaration of fun differs from previous declaration on line 334 of "include/temp1.h".
-CDTXLCErrorParser.pattern.redeclaration="?([^"]*)"?, line ([0-9]+)\\.[0-9]+:( [0-9]*-[0-9]*)? \\(S\\)\\s*Redeclaration of (\\w+) differs from previous declaration on line (\\d+) of "?([^"]*)"?\\.
-CDTXLCErrorParser.pattern.redeclaration.crossreference=Redeclaration of $4 differs from another declaration on line $2 of "$1".
-# "main.cpp", line 10.6: 1540-0064 (S) Syntax error: "name" was expected but "char" was found.
-CDTXLCErrorParser.pattern.error="?([^"]*)"?, line ([0-9]+)\\.[0-9]+:( [0-9]*-[0-9]*)? \\([USE]\\)\\s*(.*)
-CDTXLCErrorParser.pattern.warning="?([^"]*)"?, line ([0-9]+)\\.[0-9]+:( [0-9]*-[0-9]*)? \\(W\\)\\s*(.*)
-CDTXLCErrorParser.pattern.info="?([^"]*)"?, line ([0-9]+)\\.[0-9]+:( [0-9]*-[0-9]*)? \\(I\\)\\s*(.*)
-# 1586-346 (U) An error occurred during code generation. The code generation return code was 1.
-CDTXLCErrorParser.pattern.error2=\\s*([0-9]*-[0-9]*:?)? \\([USE]\\)\\s*(.*)
-# /usr/vacpp/bin/xlc: 1501-216 command option 9 is not recognized - passed to ld
-CDTXLCErrorParser.pattern.warning2=/[/\\w]+: [0-9]+-[0-9]+\\s*(.*)
-# 1500-030: (I) INFORMATION: clazz::fun(): Additional optimization may be attained by recompiling and specifying MAXMEM option with a value greater than 8192.
-# 1540-5336 (I) Global variable "__td __td__Q2_3std13runtime_error" is not used.
-CDTXLCErrorParser.pattern.info2=\\s*([0-9]*-[0-9]*:?)? \\(I\\)( INFORMATION:)?\\s*(.*)
-# ld: 0711-224 WARNING: Duplicate symbol: symboldupe
-# WARNING, ERROR, SEVERE ERROR etc.
-CDTXLCErrorParser.pattern.ld.error=ld: ([0-9]+-[0-9]+).*ERROR:\\s*(.*)
-CDTXLCErrorParser.pattern.ld.warning=ld: ([0-9]+-[0-9]+)\\s*WARNING:\\s*(.*)
-# ld: 0706-012 The -9 flag is not recognized.
-CDTXLCErrorParser.pattern.ld.warning2=ld: 0706-012\\s*(.*)
-# ld: 0711-987 Error occurred while reading file
-CDTXLCErrorParser.pattern.ld.error2=ld: ([0-9]+-[0-9]+)\\s*(Error .*)
-# ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information.
-CDTXLCErrorParser.pattern.ld.info=ld: ([0-9]+-[0-9]+)\\s*(.*)
-# END NON-TRANSLATABLE
diff --git a/xlc/org.eclipse.cdt.errorparsers.xlc/plugin.xml b/xlc/org.eclipse.cdt.errorparsers.xlc/plugin.xml
deleted file mode 100644
index dff6bff116d..00000000000
--- a/xlc/org.eclipse.cdt.errorparsers.xlc/plugin.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.2"?>
-<plugin>
- <extension id="XlcErrorParser" name="%CDTXLCErrorParser.name" point="org.eclipse.cdt.core.ErrorParser">
- <errorparser
- class="org.eclipse.cdt.core.errorparsers.RegexErrorParser"
- id="org.eclipse.cdt.errorparsers.xlc.XlcErrorParser"
- name="%CDTXLCErrorParser.name">
- <pattern regex="%CDTXLCErrorParser.pattern.macro.ignore" severity="Ignore" file-expr="" line-expr="" description-expr="" eat-processed-line="true" />
- <pattern regex="%CDTXLCErrorParser.pattern.macro" severity="Warning" file-expr="$6" line-expr="$5" description-expr="%CDTXLCErrorParser.pattern.macro.replacement" eat-processed-line="false" />
- <pattern regex="%CDTXLCErrorParser.pattern.macro" severity="Warning" file-expr="$1" line-expr="$2" description-expr="%CDTXLCErrorParser.pattern.macro.crossreference" eat-processed-line="true" />
- <pattern regex="%CDTXLCErrorParser.pattern.redeclaration" severity="Error" file-expr="$6" line-expr="$5" description-expr="%CDTXLCErrorParser.pattern.redeclaration.crossreference" eat-processed-line="false" />
- <pattern regex="%CDTXLCErrorParser.pattern.error" severity="Error" file-expr="$1" line-expr="$2" description-expr="$4" eat-processed-line="true"/>
- <pattern regex="%CDTXLCErrorParser.pattern.error2" severity="Error" file-expr="" line-expr="" description-expr="$2" eat-processed-line="true"/>
- <pattern regex="%CDTXLCErrorParser.pattern.warning" severity="Warning" file-expr="$1" line-expr="$2" description-expr="$4" eat-processed-line="true"/>
- <pattern regex="%CDTXLCErrorParser.pattern.warning2" severity="Warning" file-expr="" line-expr="" description-expr="$1" eat-processed-line="true"/>
- <pattern regex="%CDTXLCErrorParser.pattern.info" severity="Info" file-expr="$1" line-expr="$2" description-expr="$4" eat-processed-line="true"/>
- <pattern regex="%CDTXLCErrorParser.pattern.info2" severity="Info" file-expr="" line-expr="" description-expr="$3" eat-processed-line="true"/>
- <pattern regex="%CDTXLCErrorParser.pattern.ld.error" severity="Error" file-expr="" line-expr="" description-expr="$2" eat-processed-line="true"/>
- <pattern regex="%CDTXLCErrorParser.pattern.ld.error2" severity="Error" file-expr="" line-expr="" description-expr="$2" eat-processed-line="true"/>
- <pattern regex="%CDTXLCErrorParser.pattern.ld.warning" severity="Warning" file-expr="" line-expr="" description-expr="$2" eat-processed-line="true"/>
- <pattern regex="%CDTXLCErrorParser.pattern.ld.warning2" severity="Warning" file-expr="" line-expr="" description-expr="$1" eat-processed-line="true"/>
- <pattern regex="%CDTXLCErrorParser.pattern.ld.info" severity="Info" file-expr="" line-expr="" description-expr="$2" eat-processed-line="true"/>
- </errorparser>
- </extension>
-</plugin>
diff --git a/xlc/org.eclipse.cdt.errorparsers.xlc/src/org/eclipse/cdt/errorparsers/xlc/Activator.java b/xlc/org.eclipse.cdt.errorparsers.xlc/src/org/eclipse/cdt/errorparsers/xlc/Activator.java
deleted file mode 100644
index b6b79497b3c..00000000000
--- a/xlc/org.eclipse.cdt.errorparsers.xlc/src/org/eclipse/cdt/errorparsers/xlc/Activator.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.cdt.errorparsers.xlc;
-
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-import org.osgi.framework.BundleContext;
-
-/**
- * The activator class controls the plug-in life cycle
- */
-public class Activator extends AbstractUIPlugin {
-
- // The plug-in ID
- public static final String PLUGIN_ID = "org.eclipse.cdt.errorparsers.xlc"; //$NON-NLS-1$
-
- // The shared instance
- private static Activator plugin;
-
- /**
- * The constructor
- */
- public Activator() {
- plugin = this;
- }
-
- @Override
- public void start(BundleContext context) throws Exception {
- super.start(context);
- }
-
- @Override
- public void stop(BundleContext context) throws Exception {
- plugin = null;
- super.stop(context);
- }
-
- /**
- * Returns the shared instance
- *
- * @return the shared instance
- */
- public static Activator getDefault() {
- return plugin;
- }
-
-}
diff --git a/xlc/org.eclipse.cdt.make.xlc.core/.classpath b/xlc/org.eclipse.cdt.make.xlc.core/.classpath
deleted file mode 100644
index 22f30643cba..00000000000
--- a/xlc/org.eclipse.cdt.make.xlc.core/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
- <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/xlc/org.eclipse.cdt.make.xlc.core/.project b/xlc/org.eclipse.cdt.make.xlc.core/.project
deleted file mode 100644
index 3c0a75dc578..00000000000
--- a/xlc/org.eclipse.cdt.make.xlc.core/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.cdt.make.xlc.core</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.ManifestBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.SchemaBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.pde.PluginNature</nature>
- <nature>org.eclipse.jdt.core.javanature</nature>
- </natures>
-</projectDescription>
diff --git a/xlc/org.eclipse.cdt.make.xlc.core/.settings/org.eclipse.jdt.core.prefs b/xlc/org.eclipse.cdt.make.xlc.core/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 2b6ecff8a01..00000000000
--- a/xlc/org.eclipse.cdt.make.xlc.core/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,464 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
-org.eclipse.jdt.core.codeComplete.argumentPrefixes=
-org.eclipse.jdt.core.codeComplete.argumentSuffixes=
-org.eclipse.jdt.core.codeComplete.fieldPrefixes=
-org.eclipse.jdt.core.codeComplete.fieldSuffixes=
-org.eclipse.jdt.core.codeComplete.localPrefixes=
-org.eclipse.jdt.core.codeComplete.localSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
-org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
-org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
-org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
-org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
-org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
-org.eclipse.jdt.core.compiler.problem.APILeak=warning
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
-org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
-org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
-org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
-org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
-org.eclipse.jdt.core.compiler.problem.nullReference=error
-org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
-org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
-org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
-org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
-org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
-org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
-org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
-org.eclipse.jdt.core.formatter.align_with_spaces=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
-org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
-org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
-org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
-org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=0
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
-org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
-org.eclipse.jdt.core.formatter.comment.format_block_comments=false
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
-org.eclipse.jdt.core.formatter.comment.format_line_comments=false
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
-org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
-org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
-org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.join_lines_in_comments=true
-org.eclipse.jdt.core.formatter.join_wrapped_lines=true
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=120
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_on_off_tags=true
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
-org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
-org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/xlc/org.eclipse.cdt.make.xlc.core/.settings/org.eclipse.jdt.ui.prefs b/xlc/org.eclipse.cdt.make.xlc.core/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index e44576346c4..00000000000
--- a/xlc/org.eclipse.cdt.make.xlc.core/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,133 +0,0 @@
-cleanup.add_default_serial_version_id=true
-cleanup.add_generated_serial_version_id=false
-cleanup.add_missing_annotations=true
-cleanup.add_missing_deprecated_annotations=true
-cleanup.add_missing_methods=false
-cleanup.add_missing_nls_tags=false
-cleanup.add_missing_override_annotations=true
-cleanup.add_missing_override_annotations_interface_methods=true
-cleanup.add_serial_version_id=false
-cleanup.always_use_blocks=true
-cleanup.always_use_parentheses_in_expressions=false
-cleanup.always_use_this_for_non_static_field_access=false
-cleanup.always_use_this_for_non_static_method_access=false
-cleanup.convert_functional_interfaces=false
-cleanup.convert_to_enhanced_for_loop=false
-cleanup.correct_indentation=false
-cleanup.format_source_code=true
-cleanup.format_source_code_changes_only=false
-cleanup.insert_inferred_type_arguments=false
-cleanup.make_local_variable_final=true
-cleanup.make_parameters_final=false
-cleanup.make_private_fields_final=true
-cleanup.make_type_abstract_if_missing_method=false
-cleanup.make_variable_declarations_final=false
-cleanup.never_use_blocks=false
-cleanup.never_use_parentheses_in_expressions=true
-cleanup.organize_imports=true
-cleanup.qualify_static_field_accesses_with_declaring_class=false
-cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-cleanup.qualify_static_member_accesses_with_declaring_class=false
-cleanup.qualify_static_method_accesses_with_declaring_class=false
-cleanup.remove_private_constructors=true
-cleanup.remove_redundant_modifiers=false
-cleanup.remove_redundant_semicolons=true
-cleanup.remove_redundant_type_arguments=true
-cleanup.remove_trailing_whitespaces=true
-cleanup.remove_trailing_whitespaces_all=true
-cleanup.remove_trailing_whitespaces_ignore_empty=false
-cleanup.remove_unnecessary_casts=true
-cleanup.remove_unnecessary_nls_tags=false
-cleanup.remove_unused_imports=true
-cleanup.remove_unused_local_variables=false
-cleanup.remove_unused_private_fields=true
-cleanup.remove_unused_private_members=false
-cleanup.remove_unused_private_methods=true
-cleanup.remove_unused_private_types=true
-cleanup.sort_members=false
-cleanup.sort_members_all=false
-cleanup.use_anonymous_class_creation=false
-cleanup.use_blocks=false
-cleanup.use_blocks_only_for_return_and_throw=false
-cleanup.use_lambda=true
-cleanup.use_parentheses_in_expressions=false
-cleanup.use_this_for_non_static_field_access=false
-cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-cleanup.use_this_for_non_static_method_access=false
-cleanup.use_this_for_non_static_method_access_only_if_necessary=true
-cleanup_profile=_CDT
-cleanup_settings_version=2
-eclipse.preferences.version=1
-editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=_CDT
-formatter_settings_version=14
-internal.default.compliance=user
-org.eclipse.jdt.ui.exception.name=e
-org.eclipse.jdt.ui.gettersetter.use.is=true
-org.eclipse.jdt.ui.ignorelowercasenames=true
-org.eclipse.jdt.ui.importorder=java;javax;org;com;
-org.eclipse.jdt.ui.keywordthis=false
-org.eclipse.jdt.ui.ondemandthreshold=1000
-org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.staticondemandthreshold=1000
-org.eclipse.jdt.ui.text.custom_code_templates=
-sp_cleanup.add_default_serial_version_id=true
-sp_cleanup.add_generated_serial_version_id=false
-sp_cleanup.add_missing_annotations=true
-sp_cleanup.add_missing_deprecated_annotations=true
-sp_cleanup.add_missing_methods=false
-sp_cleanup.add_missing_nls_tags=false
-sp_cleanup.add_missing_override_annotations=true
-sp_cleanup.add_missing_override_annotations_interface_methods=true
-sp_cleanup.add_serial_version_id=false
-sp_cleanup.always_use_blocks=true
-sp_cleanup.always_use_parentheses_in_expressions=false
-sp_cleanup.always_use_this_for_non_static_field_access=false
-sp_cleanup.always_use_this_for_non_static_method_access=false
-sp_cleanup.convert_functional_interfaces=false
-sp_cleanup.convert_to_enhanced_for_loop=false
-sp_cleanup.correct_indentation=false
-sp_cleanup.format_source_code=true
-sp_cleanup.format_source_code_changes_only=false
-sp_cleanup.insert_inferred_type_arguments=false
-sp_cleanup.make_local_variable_final=true
-sp_cleanup.make_parameters_final=false
-sp_cleanup.make_private_fields_final=true
-sp_cleanup.make_type_abstract_if_missing_method=false
-sp_cleanup.make_variable_declarations_final=false
-sp_cleanup.never_use_blocks=false
-sp_cleanup.never_use_parentheses_in_expressions=true
-sp_cleanup.on_save_use_additional_actions=true
-sp_cleanup.organize_imports=true
-sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
-sp_cleanup.remove_private_constructors=true
-sp_cleanup.remove_redundant_modifiers=false
-sp_cleanup.remove_redundant_semicolons=true
-sp_cleanup.remove_redundant_type_arguments=true
-sp_cleanup.remove_trailing_whitespaces=true
-sp_cleanup.remove_trailing_whitespaces_all=true
-sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
-sp_cleanup.remove_unnecessary_casts=true
-sp_cleanup.remove_unnecessary_nls_tags=false
-sp_cleanup.remove_unused_imports=true
-sp_cleanup.remove_unused_local_variables=false
-sp_cleanup.remove_unused_private_fields=true
-sp_cleanup.remove_unused_private_members=false
-sp_cleanup.remove_unused_private_methods=true
-sp_cleanup.remove_unused_private_types=true
-sp_cleanup.sort_members=false
-sp_cleanup.sort_members_all=false
-sp_cleanup.use_anonymous_class_creation=false
-sp_cleanup.use_blocks=false
-sp_cleanup.use_blocks_only_for_return_and_throw=false
-sp_cleanup.use_lambda=true
-sp_cleanup.use_parentheses_in_expressions=false
-sp_cleanup.use_this_for_non_static_field_access=false
-sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-sp_cleanup.use_this_for_non_static_method_access=false
-sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/xlc/org.eclipse.cdt.make.xlc.core/META-INF/MANIFEST.MF b/xlc/org.eclipse.cdt.make.xlc.core/META-INF/MANIFEST.MF
deleted file mode 100644
index 45d38bc94e2..00000000000
--- a/xlc/org.eclipse.cdt.make.xlc.core/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,20 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-SymbolicName: org.eclipse.cdt.make.xlc.core;singleton:=true
-Bundle-Version: 5.2.200.qualifier
-Bundle-Vendor: %providerName
-Bundle-Localization: plugin
-Require-Bundle: org.eclipse.cdt.make.core,
- org.eclipse.cdt.core,
- org.eclipse.core.resources,
- org.eclipse.core.runtime,
- org.eclipse.cdt.managedbuilder.core
-Export-Package: org.eclipse.cdt.make.xlc.core.activator,
- org.eclipse.cdt.make.xlc.core.messages,
- org.eclipse.cdt.make.xlc.core.scannerconfig,
- org.eclipse.cdt.make.xlc.core.scannerconfig.util
-Bundle-ActivationPolicy: lazy
-Bundle-Activator: org.eclipse.cdt.make.xlc.core.activator.Activator
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Automatic-Module-Name: org.eclipse.cdt.make.xlc.core
diff --git a/xlc/org.eclipse.cdt.make.xlc.core/about.html b/xlc/org.eclipse.cdt.make.xlc.core/about.html
deleted file mode 100644
index 164f781a8fd..00000000000
--- a/xlc/org.eclipse.cdt.make.xlc.core/about.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
-</head>
-<body lang="EN-US">
- <h2>About This Content</h2>
-
- <p>November 30, 2017</p>
- <h3>License</h3>
-
- <p>
- The Eclipse Foundation makes available all content in this plug-in
- (&quot;Content&quot;). Unless otherwise indicated below, the Content
- is provided to you under the terms and conditions of the Eclipse
- Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
- For purposes of the EPL, &quot;Program&quot; will mean the Content.
- </p>
-
- <p>
- If you did not receive this Content directly from the Eclipse
- Foundation, the Content is being redistributed by another party
- (&quot;Redistributor&quot;) and different terms and conditions may
- apply to your use of any object code in the Content. Check the
- Redistributor's license that was provided with the Content. If no such
- license exists, contact the Redistributor. Unless otherwise indicated
- below, the terms and conditions of the EPL still apply to any source
- code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
- </p>
-
-</body>
-</html> \ No newline at end of file
diff --git a/xlc/org.eclipse.cdt.make.xlc.core/build.properties b/xlc/org.eclipse.cdt.make.xlc.core/build.properties
deleted file mode 100644
index 8b7cd7910f7..00000000000
--- a/xlc/org.eclipse.cdt.make.xlc.core/build.properties
+++ /dev/null
@@ -1,21 +0,0 @@
-###############################################################################
-# Copyright (c) 2007, 2009 IBM Corporation and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
- .,\
- plugin.properties,\
- about.html
-src.includes = about.html
-
diff --git a/xlc/org.eclipse.cdt.make.xlc.core/plugin.properties b/xlc/org.eclipse.cdt.make.xlc.core/plugin.properties
deleted file mode 100644
index e5a6ec83529..00000000000
--- a/xlc/org.eclipse.cdt.make.xlc.core/plugin.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-###############################################################################
-# Copyright (c) 2006, 2009 IBM Corporation and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-
-# Plugin Name
-pluginName=XL C/C++ Make Core
-providerName=Eclipse CDT \ No newline at end of file
diff --git a/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/activator/Activator.java b/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/activator/Activator.java
deleted file mode 100644
index bf0781bbfee..00000000000
--- a/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/activator/Activator.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.make.xlc.core.activator;
-
-import org.eclipse.cdt.core.model.CModelException;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Plugin;
-import org.eclipse.core.runtime.Status;
-
-/**
- * @author crecoskie
- *
- */
-public class Activator extends Plugin {
-
- public static final String PLUGIN_ID = "org.eclipse.cdt.make.xlc.core"; //$NON-NLS-1$
- private static Activator fInstance;
-
- /**
- *
- */
- public Activator() {
- super();
- if (fInstance == null) {
- fInstance = this;
- }
- }
-
- public static void log(String e) {
- log(createStatus(e));
- }
-
- public static void log(Throwable e) {
- log("Error", e); //$NON-NLS-1$
- }
-
- public static void log(String message, Throwable e) {
- Throwable nestedException;
- if (e instanceof CModelException && (nestedException = ((CModelException) e).getException()) != null) {
- e = nestedException;
- }
- log(createStatus(message, e));
- }
-
- public static IStatus createStatus(String msg) {
- return createStatus(msg, null);
- }
-
- public static IStatus createStatus(String msg, Throwable e) {
- return new Status(IStatus.ERROR, PLUGIN_ID, IStatus.ERROR, msg, e);
- }
-
- public static void log(IStatus status) {
- getDefault().getLog().log(status);
- }
-
- private static Plugin getDefault() {
- return fInstance;
- }
-
-}
diff --git a/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/messages/Messages.java b/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/messages/Messages.java
deleted file mode 100644
index f27630e1f51..00000000000
--- a/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/messages/Messages.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2010 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.cdt.make.xlc.core.messages;
-
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
-
-public class Messages {
- private static final String BUNDLE_NAME = "org.eclipse.cdt.make.xlc.core.messages.Messages"; //$NON-NLS-1$
-
- private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle(BUNDLE_NAME);
-
- private Messages() {
- }
-
- public static String getString(String key) {
- try {
- return RESOURCE_BUNDLE.getString(key);
- } catch (MissingResourceException e) {
- return '!' + key + '!';
- }
- }
-}
diff --git a/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/messages/Messages.properties b/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/messages/Messages.properties
deleted file mode 100644
index 14a8b8f0222..00000000000
--- a/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/messages/Messages.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-###############################################################################
-# Copyright (c) 2009, 2010 IBM Corporation and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-PerFileXLCScannerInfoCollector.0=Updating discovered includes and macros
-PerFileXLCScannerInfoCollector.1=Error updating discovered info.
-ScannerInfoCollector.Processing=Processing discovered scanner configuration ...\u0020
-ScannerInfoCollector.Updating=Updating Scanner Configuration for project\u0020
diff --git a/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/AbstractXLCBuildOutputParser.java b/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/AbstractXLCBuildOutputParser.java
deleted file mode 100644
index 80ff83e9d4e..00000000000
--- a/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/AbstractXLCBuildOutputParser.java
+++ /dev/null
@@ -1,415 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.make.xlc.core.scannerconfig;
-
-import java.util.ArrayList;
-import java.util.LinkedList;
-import java.util.List;
-
-import org.eclipse.cdt.core.CCorePlugin;
-import org.eclipse.cdt.core.IMarkerGenerator;
-import org.eclipse.cdt.make.core.scannerconfig.IScannerInfoCollector;
-import org.eclipse.cdt.make.core.scannerconfig.IScannerInfoCollector2;
-import org.eclipse.cdt.make.core.scannerconfig.IScannerInfoConsoleParser;
-import org.eclipse.cdt.make.internal.core.scannerconfig.util.TraceUtil;
-import org.eclipse.cdt.make.internal.core.scannerconfig2.SCProfileInstance;
-import org.eclipse.cdt.make.internal.core.scannerconfig2.ScannerConfigProfile.BuildOutputProvider;
-import org.eclipse.cdt.make.internal.core.scannerconfig2.ScannerConfigProfileManager;
-import org.eclipse.cdt.make.xlc.core.activator.Activator;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.content.IContentType;
-import org.eclipse.core.runtime.content.IContentTypeManager;
-
-/**
- * @author crecoskie
- *
- */
-public abstract class AbstractXLCBuildOutputParser implements IScannerInfoConsoleParser {
-
- protected static final String[] COMPILER_INVOCATION = { "xlc", "xlC"//$NON-NLS-1$ //$NON-NLS-2$
- };
- protected static final String DASHIDASH = "-I-"; //$NON-NLS-1$
- protected static final String DASHI = "-I"; //$NON-NLS-1$
- protected static final String DASHD = "-D"; //$NON-NLS-1$
-
- protected IProject fProject;
- protected IScannerInfoCollector fCollector;
- protected IPath fWorkingDir;
- protected IMarkerGenerator fMarkerGenerator;
- protected XLCBuildOutputParserUtility fUtility;
-
- protected boolean fBMultiline = false;
- protected String fSMultiline = ""; //$NON-NLS-1$
-
- protected String[] fCompilerCommands = { "xlc", "xlC" }; //$NON-NLS-1$ //$NON-NLS-2$
-
- /**
- * @return Returns the fProject.
- */
- protected IProject getProject() {
- return fProject;
- }
-
- /**
- * @return Returns the fCollector.
- */
- protected IScannerInfoCollector getCollector() {
- return fCollector;
- }
-
- public void startup(IProject project, IScannerInfoCollector collector) {
- fProject = project;
- fCollector = collector;
- fCompilerCommands = computeCompilerCommands();
- }
-
- /**
- * Returns array of additional compiler commands to look for
- *
- * @return String[]
- */
- protected String[] computeCompilerCommands() {
- if (fProject != null) {
- SCProfileInstance profileInstance = ScannerConfigProfileManager.getInstance().getSCProfileInstance(fProject,
- ScannerConfigProfileManager.NULL_PROFILE_ID);
- BuildOutputProvider boProvider = profileInstance.getProfile().getBuildOutputProviderElement();
- if (boProvider != null) {
- String compilerCommandsString = boProvider.getScannerInfoConsoleParser().getCompilerCommands();
- if (compilerCommandsString != null && compilerCommandsString.length() > 0) {
- String[] compilerCommands = compilerCommandsString.split(",\\s*"); //$NON-NLS-1$
- if (compilerCommands.length > 0) {
- String[] compilerInvocation = new String[COMPILER_INVOCATION.length + compilerCommands.length];
- System.arraycopy(COMPILER_INVOCATION, 0, compilerInvocation, 0, COMPILER_INVOCATION.length);
- System.arraycopy(compilerCommands, 0, compilerInvocation, COMPILER_INVOCATION.length,
- compilerCommands.length);
- return compilerInvocation;
- }
- }
- }
- }
- return COMPILER_INVOCATION;
- }
-
- @Override
- public boolean processLine(String line) {
- if (line.trim().length() == 0) {
- return false;
- }
-
- boolean rc = false;
- int lineBreakPos = line.length() - 1;
- char[] lineChars = line.toCharArray();
- while (lineBreakPos >= 0 && Character.isWhitespace(lineChars[lineBreakPos])) {
- lineBreakPos--;
- }
- if (lineBreakPos >= 0) {
- if (lineChars[lineBreakPos] != '\\' || (lineBreakPos > 0 && lineChars[lineBreakPos - 1] == '\\')) {
- lineBreakPos = -1;
- }
- }
- // check for multiline commands (ends with '\')
- if (lineBreakPos >= 0) {
- fSMultiline += line.substring(0, lineBreakPos);
- fBMultiline = true;
- return rc;
- }
- if (fBMultiline) {
- line = fSMultiline + line;
- fBMultiline = false;
- fSMultiline = ""; //$NON-NLS-1$
- }
- line = line.trim();
- try {
- TraceUtil.outputTrace("XLCBuildOutputParser parsing line: [", line, "]"); //$NON-NLS-1$ //$NON-NLS-2$
- } catch (NoClassDefFoundError e) {
- //no problem, as this may be called from a standalone indexer
- }
- // make\[[0-9]*\]: error_desc
- int firstColon = line.indexOf(':');
- String make = line.substring(0, firstColon + 1);
- if (firstColon != -1 && make.indexOf("make") != -1) { //$NON-NLS-1$
- boolean enter = false;
- String msg = line.substring(firstColon + 1).trim();
- if ((enter = msg.startsWith("Entering directory")) || //$NON-NLS-1$
- (msg.startsWith("Leaving directory"))) { //$NON-NLS-1$
- int s = msg.indexOf('`');
- int e = msg.indexOf('\'');
- if (s != -1 && e != -1) {
- String dir = msg.substring(s + 1, e);
- if (getUtility() != null) {
- getUtility().changeMakeDirectory(dir, getDirectoryLevel(line), enter);
- }
- return rc;
- }
- }
- }
- // call sublclass to process a single line
- return processSingleLine(line.trim());
- }
-
- protected synchronized XLCBuildOutputParserUtility getUtility() {
- if (fUtility == null)
- fUtility = new XLCBuildOutputParserUtility(fProject, fWorkingDir, fMarkerGenerator);
-
- return fUtility;
- }
-
- protected int getDirectoryLevel(String line) {
- int s = line.indexOf('[');
- int num = 0;
- if (s != -1) {
- int e = line.indexOf(']');
- String number = line.substring(s + 1, e).trim();
- try {
- num = Integer.parseInt(number);
- } catch (NumberFormatException exc) {
- }
- }
- return num;
- }
-
- @Override
- public void shutdown() {
- if (getUtility() != null) {
- getUtility().reportProblems();
- }
-
- if (fCollector != null && fCollector instanceof IScannerInfoCollector2) {
- IScannerInfoCollector2 collector = (IScannerInfoCollector2) fCollector;
- try {
- collector.updateScannerConfiguration(null);
- } catch (CoreException e) {
- // TODO Auto-generated catch block
- Activator.log(e);
- }
- }
- }
-
- /**
- * Tokenizes a line into an array of commands. Commands are separated by
- * ';', '&&' or '||'. Tokens are separated by whitespace unless found inside
- * of quotes, back-quotes, or double quotes. Outside of single-, double- or
- * back-quotes a backslash escapes white-spaces, all quotes, the backslash,
- * '&' and '|'. A backslash used for escaping is removed. Quotes other than
- * the back-quote plus '&&', '||', ';' are removed, also.
- *
- * @param line
- * to tokenize
- * @return array of commands
- */
- protected String[][] tokenize(String line, boolean escapeInsideDoubleQuotes) {
- ArrayList<String[]> commands = new ArrayList<>();
- ArrayList<String> tokens = new ArrayList<>();
- StringBuffer token = new StringBuffer();
-
- final char[] input = line.toCharArray();
- boolean nextEscaped = false;
- char currentQuote = 0;
- for (int i = 0; i < input.length; i++) {
- final char c = input[i];
- final boolean escaped = nextEscaped;
- nextEscaped = false;
-
- if (currentQuote != 0) {
- if (c == currentQuote) {
- if (escaped) {
- token.append(c);
- } else {
- if (c == '`') {
- token.append(c); // preserve back-quotes
- }
- currentQuote = 0;
- }
- } else {
- if (escapeInsideDoubleQuotes && currentQuote == '"' && c == '\\') {
- nextEscaped = !escaped;
- if (escaped) {
- token.append(c);
- }
- } else {
- if (escaped) {
- token.append('\\');
- }
- token.append(c);
- }
- }
- } else {
- switch (c) {
- case '\\':
- if (escaped) {
- token.append(c);
- } else {
- nextEscaped = true;
- }
- break;
- case '\'':
- case '"':
- case '`':
- if (escaped) {
- token.append(c);
- } else {
- if (c == '`') {
- token.append(c);
- }
- currentQuote = c;
- }
- break;
- case ';':
- if (escaped) {
- token.append(c);
- } else {
- endCommand(token, tokens, commands);
- }
- break;
- case '&':
- case '|':
- if (escaped || i + 1 >= input.length || input[i + 1] != c) {
- token.append(c);
- } else {
- i++;
- endCommand(token, tokens, commands);
- }
- break;
-
- default:
- if (Character.isWhitespace(c)) {
- if (escaped) {
- token.append(c);
- } else {
- endToken(token, tokens);
- }
- } else {
- if (escaped) {
- token.append('\\'); // for windows put backslash
- // back onto the token.
- }
- token.append(c);
- }
- }
- }
- }
- endCommand(token, tokens, commands);
- return commands.toArray(new String[commands.size()][]);
- }
-
- protected void endCommand(StringBuffer token, ArrayList<String> tokens, ArrayList<String[]> commands) {
- endToken(token, tokens);
- if (!tokens.isEmpty()) {
- commands.add(tokens.toArray(new String[tokens.size()]));
- tokens.clear();
- }
- }
-
- protected void endToken(StringBuffer token, ArrayList<String> tokens) {
- if (token.length() > 0) {
- tokens.add(token.toString());
- token.setLength(0);
- }
- }
-
- protected boolean processSingleLine(String line) {
- boolean rc = false;
- String[][] tokens = tokenize(line, true);
- for (int i = 0; i < tokens.length; i++) {
- String[] command = tokens[i];
- if (processCommand(command)) {
- rc = true;
- } else { // go inside quotes, if the compiler is called per wrapper
- // or shell script
- for (int j = 0; j < command.length; j++) {
- String[][] subtokens = tokenize(command[j], true);
- for (int k = 0; k < subtokens.length; k++) {
- String[] subcommand = subtokens[k];
- if (subcommand.length > 1) { // only proceed if there is
- // any additional info
- if (processCommand(subcommand)) {
- rc = true;
- }
- }
- }
- }
- }
- }
- return rc;
- }
-
- protected int findCompilerInvocation(String[] tokens) {
- for (int i = 0; i < tokens.length; i++) {
- final String token = tokens[i].toLowerCase();
- final int searchFromOffset = Math.max(token.lastIndexOf('/'), token.lastIndexOf('\\')) + 1;
- for (int j = 0; j < fCompilerCommands.length; j++) {
- if (token.indexOf(fCompilerCommands[j], searchFromOffset) != -1) {
- return i;
- }
- }
- }
- return -1;
- }
-
- @Override
- public void startup(IProject project, IPath workingDirectory, IScannerInfoCollector collector,
- IMarkerGenerator markerGenerator) {
- fProject = project;
- fWorkingDir = workingDirectory;
- fCollector = collector;
- fMarkerGenerator = markerGenerator;
-
- }
-
- abstract protected boolean processCommand(String[] tokens);
-
- protected List<String> getFileExtensionsList() {
- IContentTypeManager manager = Platform.getContentTypeManager();
- List<String> extensions = new LinkedList<>();
- IContentType cSource = manager.getContentType(CCorePlugin.CONTENT_TYPE_CSOURCE);
- IContentType cppSource = manager.getContentType(CCorePlugin.CONTENT_TYPE_CXXSOURCE);
-
- String[] cExtensions = cSource.getFileSpecs(IContentType.FILE_EXTENSION_SPEC);
- String[] cppExtensions = cppSource.getFileSpecs(IContentType.FILE_EXTENSION_SPEC);
-
- for (int k = 0; k < cExtensions.length; k++) {
- extensions.add("." + cExtensions[k]); //$NON-NLS-1$
- }
-
- for (int k = 0; k < cppExtensions.length; k++) {
- extensions.add("." + cppExtensions[k]); //$NON-NLS-1$
- }
-
- return extensions;
- }
-
- protected String[] getFileExtensions() {
- IContentTypeManager manager = Platform.getContentTypeManager();
- List<String> extensions = new LinkedList<>();
- IContentType cSource = manager.getContentType(CCorePlugin.CONTENT_TYPE_CSOURCE);
- IContentType cppSource = manager.getContentType(CCorePlugin.CONTENT_TYPE_CXXSOURCE);
-
- String[] cExtensions = cSource.getFileSpecs(IContentType.FILE_EXTENSION_SPEC);
- String[] cppExtensions = cppSource.getFileSpecs(IContentType.FILE_EXTENSION_SPEC);
-
- for (int k = 0; k < cExtensions.length; k++) {
- extensions.add("." + cExtensions[k]); //$NON-NLS-1$
- }
-
- for (int k = 0; k < cppExtensions.length; k++) {
- extensions.add("." + cppExtensions[k]); //$NON-NLS-1$
- }
-
- return extensions.toArray(new String[0]);
- }
-
-}
diff --git a/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/PerFileXLCScannerInfoCollector.java b/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/PerFileXLCScannerInfoCollector.java
deleted file mode 100644
index 59ada9db417..00000000000
--- a/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/PerFileXLCScannerInfoCollector.java
+++ /dev/null
@@ -1,1664 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.make.xlc.core.scannerconfig;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.LinkedHashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
-import java.util.SortedSet;
-import java.util.TreeSet;
-
-import org.eclipse.cdt.core.model.CoreModel;
-import org.eclipse.cdt.core.settings.model.CIncludePathEntry;
-import org.eclipse.cdt.core.settings.model.CMacroEntry;
-import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
-import org.eclipse.cdt.core.settings.model.ICLanguageSetting;
-import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry;
-import org.eclipse.cdt.core.settings.model.ICProjectDescription;
-import org.eclipse.cdt.core.settings.model.ICProjectDescriptionManager;
-import org.eclipse.cdt.core.settings.model.ICSettingEntry;
-import org.eclipse.cdt.core.settings.model.util.CDataUtil;
-import org.eclipse.cdt.make.core.MakeCorePlugin;
-import org.eclipse.cdt.make.core.scannerconfig.IDiscoveredPathManager;
-import org.eclipse.cdt.make.core.scannerconfig.IDiscoveredPathManager.IDiscoveredPathInfo;
-import org.eclipse.cdt.make.core.scannerconfig.IDiscoveredPathManager.IDiscoveredScannerInfoSerializable;
-import org.eclipse.cdt.make.core.scannerconfig.IDiscoveredPathManager.IPerFileDiscoveredPathInfo;
-import org.eclipse.cdt.make.core.scannerconfig.IDiscoveredPathManager.IPerFileDiscoveredPathInfo2;
-import org.eclipse.cdt.make.core.scannerconfig.IScannerInfoCollector3;
-import org.eclipse.cdt.make.core.scannerconfig.InfoContext;
-import org.eclipse.cdt.make.core.scannerconfig.PathInfo;
-import org.eclipse.cdt.make.core.scannerconfig.ScannerInfoTypes;
-import org.eclipse.cdt.make.internal.core.scannerconfig.DiscoveredPathInfo;
-import org.eclipse.cdt.make.internal.core.scannerconfig.DiscoveredPathManager;
-import org.eclipse.cdt.make.internal.core.scannerconfig.DiscoveredScannerInfoStore;
-import org.eclipse.cdt.make.internal.core.scannerconfig.ScannerConfigUtil;
-import org.eclipse.cdt.make.internal.core.scannerconfig.util.CCommandDSC;
-import org.eclipse.cdt.make.internal.core.scannerconfig.util.CygpathTranslator;
-import org.eclipse.cdt.make.internal.core.scannerconfig.util.TraceUtil;
-import org.eclipse.cdt.make.xlc.core.activator.Activator;
-import org.eclipse.cdt.make.xlc.core.messages.Messages;
-import org.eclipse.cdt.make.xlc.core.scannerconfig.util.XLCCommandDSC;
-import org.eclipse.cdt.managedbuilder.core.IConfiguration;
-import org.eclipse.cdt.managedbuilder.core.IInputType;
-import org.eclipse.cdt.managedbuilder.core.IManagedBuildInfo;
-import org.eclipse.cdt.managedbuilder.core.ITool;
-import org.eclipse.cdt.managedbuilder.core.IToolChain;
-import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
-import org.eclipse.cdt.managedbuilder.scannerconfig.IManagedScannerInfoCollector;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.content.IContentType;
-import org.eclipse.core.runtime.jobs.ISchedulingRule;
-import org.eclipse.core.runtime.jobs.Job;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-/**
- * @author crecoskie
- *
- */
-public class PerFileXLCScannerInfoCollector implements IScannerInfoCollector3, IManagedScannerInfoCollector {
-
- protected class ScannerConfigUpdateJob extends Job {
-
- private InfoContext fContext;
- private IDiscoveredPathInfo fPathInfo;
- private boolean fIsDefaultContext;
- private List<IResource> fChangedResources;
-
- public ScannerConfigUpdateJob(InfoContext context, IDiscoveredPathInfo pathInfo, boolean isDefaultContext,
- List<IResource> changedResources) {
- super(Messages.getString("PerFileXLCScannerInfoCollector.0")); //$NON-NLS-1$);
- fContext = context;
- fPathInfo = pathInfo;
- fIsDefaultContext = isDefaultContext;
- fChangedResources = changedResources;
- }
-
- @Override
- protected IStatus run(IProgressMonitor monitor) {
- try {
-
- // get the scanner info profile ID
-
- IManagedBuildInfo info = ManagedBuildManager.getBuildInfo(project);
- IConfiguration config = info.getDefaultConfiguration();
-
- String profileID = config.getToolChain().getScannerConfigDiscoveryProfileId();
- IDiscoveredPathManager manager = MakeCorePlugin.getDefault().getDiscoveryManager();
-
- if (manager instanceof DiscoveredPathManager) {
- ((DiscoveredPathManager) manager).updateDiscoveredInfo(fContext, fPathInfo, fIsDefaultContext,
- fChangedResources, profileID);
- }
-
- // reload project description to hopefully get the data to take
- ICProjectDescriptionManager descriptionManager = CoreModel.getDefault().getProjectDescriptionManager();
- ICProjectDescription cProjectDescription = descriptionManager.getProjectDescription(project,
- true /* writable */);
- ICConfigurationDescription configDes = cProjectDescription.getActiveConfiguration();
-
- IToolChain toolchain = config.getToolChain();
- for (ITool tool : toolchain.getTools()) {
- for (IInputType inputType : tool.getInputTypes()) {
- IContentType contentType = inputType.getSourceContentType();
- if (contentType != null) {
- for (IResource resource : fChangedResources) {
- // get language settings for the resource
- ICLanguageSetting langSetting = configDes
- .getLanguageSettingForFile(resource.getProjectRelativePath(), false);
-
- if (langSetting == null) {
- continue;
- }
-
- // get content type IDs for the setting
- String[] contentTypeIDs = langSetting.getSourceContentTypeIds();
-
- // if the setting doesn't handle our content type ID, then go to the next resource
- boolean found = false;
- for (String id : contentTypeIDs) {
- if (id.equals(contentType.getId())) {
- found = true;
- break;
- }
- }
-
- if (!found) {
- continue;
- }
-
- // update all the scanner config entries on the setting
- updateIncludeSettings(langSetting);
- updateMacroSettings(langSetting);
-
- }
- }
-
- }
- }
-
- descriptionManager.setProjectDescription(project, cProjectDescription, true /* force */, monitor);
-
- } catch (CoreException e) {
- Activator.log(e);
- return Activator.createStatus(Messages.getString("PerFileXLCScannerInfoCollector.1")); //$NON-NLS-1$
- }
- return Status.OK_STATUS;
- }
-
- private boolean updateMacroSettings(ICLanguageSetting langSetting) {
- ICLanguageSettingEntry[] entries = langSetting.getSettingEntries(ICSettingEntry.MACRO);
- List<ICLanguageSettingEntry> newEntries = new LinkedList<>();
- for (ICLanguageSettingEntry entry : entries) {
- newEntries.add(entry);
- }
-
- boolean entriesChanged = false;
-
- // look for settings corresponding to each path we discovered
- Map<String, String> discSymbols = fPathInfo.getSymbols();
- for (String symbol : discSymbols.keySet()) {
- boolean symbolFound = false;
-
- for (ICLanguageSettingEntry entry : entries) {
- if (((CMacroEntry) entry).getName().equals(symbol)) {
- symbolFound = true; // it's already there, so don't set it
- break;
- }
- }
-
- // if we didn't find the path, add it
- if (!symbolFound) {
- entriesChanged = true;
- CMacroEntry newEntry = CDataUtil.createCMacroEntry(symbol, discSymbols.get(symbol),
- ICSettingEntry.BUILTIN | ICSettingEntry.READONLY | ICSettingEntry.RESOLVED);
- newEntries.add(newEntry);
- }
- }
-
- // if we changed the entries, then set the new ones
- if (entriesChanged) {
- langSetting.setSettingEntries(ICSettingEntry.MACRO, newEntries.toArray(new ICLanguageSettingEntry[0]));
- }
-
- return entriesChanged;
- }
-
- private boolean updateIncludeSettings(ICLanguageSetting langSetting) {
- ICLanguageSettingEntry[] entries = langSetting.getSettingEntries(ICSettingEntry.INCLUDE_PATH);
- List<ICLanguageSettingEntry> newEntries = new LinkedList<>();
- for (ICLanguageSettingEntry entry : entries) {
- newEntries.add(entry);
- }
-
- boolean entriesChanged = false;
-
- // look for settings corresponding to each path we discovered
- IPath[] discPaths = fPathInfo.getIncludePaths();
- for (IPath path : discPaths) {
- boolean pathFound = false;
-
- for (ICLanguageSettingEntry entry : entries) {
- if (((CIncludePathEntry) entry).getLocation().equals(path)) {
- pathFound = true; // it's already there, so don't set it
- break;
- }
- }
-
- // if we didn't find the path, add it
- if (!pathFound) {
- entriesChanged = true;
- CIncludePathEntry newEntry = CDataUtil.createCIncludePathEntry(path.toString(),
- ICSettingEntry.BUILTIN | ICSettingEntry.READONLY | ICSettingEntry.RESOLVED);
- newEntries.add(newEntry);
- }
- }
-
- // if we changed the entries, then set the new ones
- if (entriesChanged) {
- langSetting.setSettingEntries(ICSettingEntry.INCLUDE_PATH,
- newEntries.toArray(new ICLanguageSettingEntry[0]));
- }
-
- return entriesChanged;
- }
- }
-
- protected class MergedPerFileDiscoveredPathInfo implements IPerFileDiscoveredPathInfo2 {
- private IDiscoveredPathInfo fInfo1;
- private IPerFileDiscoveredPathInfo2 fInfo2;
-
- public MergedPerFileDiscoveredPathInfo(IDiscoveredPathInfo info1, IPerFileDiscoveredPathInfo2 info2) {
- fInfo1 = info1;
- fInfo2 = info2;
- }
-
- private IPerFileDiscoveredPathInfo2 getPerFileInfo1() {
- if (fInfo1 instanceof IPerFileDiscoveredPathInfo2) {
- return (IPerFileDiscoveredPathInfo2) fInfo1;
- }
-
- else {
- return null;
- }
- }
-
- @Override
- public Map<IResource, PathInfo> getPathInfoMap() {
- synchronized (fLock) {
- IPerFileDiscoveredPathInfo2 info1 = getPerFileInfo1();
- if (info1 != null) {
- Map<IResource, PathInfo> map = new HashMap<>();
- map.putAll(info1.getPathInfoMap());
- map.putAll(fInfo2.getPathInfoMap());
- return map;
- }
-
- else {
- return fInfo2.getPathInfoMap();
- }
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.make.core.scannerconfig.IDiscoveredPathManager.IPerFileDiscoveredPathInfo#getIncludeFiles(org.eclipse.core.runtime.IPath)
- */
- @Override
- public IPath[] getIncludeFiles(IPath path) {
- synchronized (fLock) {
- IPerFileDiscoveredPathInfo2 info1 = getPerFileInfo1();
- if (info1 != null) {
- List<IPath> list = new LinkedList<>();
- for (IPath path1 : info1.getIncludeFiles(path)) {
- list.add(path1);
- }
-
- for (IPath path1 : fInfo2.getIncludeFiles(path)) {
- list.add(path1);
- }
- return list.toArray(new IPath[0]);
- }
-
- else {
- return fInfo2.getIncludeFiles(path);
- }
- }
- }
-
- @Override
- public IPath[] getIncludePaths(IPath path) {
- synchronized (fLock) {
-
- Set<IPath> pathSet = new HashSet<>();
-
- // add project level settings if other info is per project
- if (fInfo1 instanceof DiscoveredPathInfo) {
- for (IPath path1 : fInfo1.getIncludePaths()) {
- pathSet.add(path1);
- }
- }
-
- else {
- IPerFileDiscoveredPathInfo2 info1 = getPerFileInfo1();
- if (info1 != null) {
- // add file level settings
- for (IPath path1 : info1.getIncludePaths(path)) {
- pathSet.add(path1);
- }
- }
- }
-
- // add file level settings
- for (IPath path2 : fInfo2.getIncludePaths(path)) {
- pathSet.add(path2);
- }
-
- return pathSet.toArray(new IPath[0]);
- }
- }
-
- @Override
- public IPath[] getMacroFiles(IPath path) {
- synchronized (fLock) {
- Set<IPath> pathSet = new HashSet<>();
-
- IPerFileDiscoveredPathInfo2 info1 = getPerFileInfo1();
- if (info1 != null) {
- // add file level settings
- for (IPath path1 : info1.getMacroFiles(path)) {
- pathSet.add(path1);
- }
- }
-
- // add file level settings
- for (IPath path2 : fInfo2.getMacroFiles(path)) {
- pathSet.add(path2);
- }
-
- return pathSet.toArray(new IPath[0]);
- }
- }
-
- @Override
- public IPath[] getQuoteIncludePaths(IPath path) {
- synchronized (fLock) {
-
- Set<IPath> pathSet = new HashSet<>();
-
- IPerFileDiscoveredPathInfo2 info1 = getPerFileInfo1();
- if (info1 != null) {
- // add file level settings
- for (IPath path1 : info1.getQuoteIncludePaths(path)) {
- pathSet.add(path1);
- }
- }
-
- // add file level settings
- for (IPath path2 : fInfo2.getQuoteIncludePaths(path)) {
- pathSet.add(path2);
- }
-
- return pathSet.toArray(new IPath[0]);
- }
- }
-
- @Override
- public Map<String, String> getSymbols(IPath path) {
- synchronized (fLock) {
-
- Map<String, String> symbols = new HashMap<>();
-
- // add project level settings
- Map<String, String> projectSymbols = fInfo1.getSymbols();
- for (String symbol : projectSymbols.keySet()) {
- symbols.put(symbol, projectSymbols.get(symbol));
- }
-
- IPerFileDiscoveredPathInfo2 info1 = getPerFileInfo1();
- if (info1 != null) {
- // add file level settings
- symbols.putAll(info1.getSymbols(path));
- }
-
- // add file level settings
- symbols.putAll(fInfo2.getSymbols(path));
-
- return symbols;
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.make.core.scannerconfig.IDiscoveredPathManager.IPerFileDiscoveredPathInfo#isEmpty(org.eclipse.core.runtime.IPath)
- */
- @Override
- public boolean isEmpty(IPath path) {
- synchronized (fLock) {
- boolean info1empty = false;
-
- IPerFileDiscoveredPathInfo2 info1 = getPerFileInfo1();
- if (info1 != null) {
- info1empty = info1.isEmpty(path);
- } else {
- info1empty = fInfo1.getIncludePaths().length == 0 && fInfo1.getSymbols().size() == 0;
- }
-
- return fInfo2.isEmpty(path) && info1empty;
- }
- }
-
- @Override
- public IPath[] getIncludePaths() {
- synchronized (fLock) {
- return fInfo1.getIncludePaths();
- }
- }
-
- @Override
- public IProject getProject() {
- return fInfo1.getProject();
- }
-
- @Override
- public IDiscoveredScannerInfoSerializable getSerializable() {
- return fInfo2.getSerializable();
- }
-
- @Override
- public Map<String, String> getSymbols() {
- synchronized (fLock) {
- return fInfo1.getSymbols();
- }
- }
-
- }
-
- /**
- * Per file DPI object
- *
- * @author vhirsl
- */
- protected class PerFileDiscoveredPathInfo implements IPerFileDiscoveredPathInfo2 {
- /* (non-Javadoc)
- * @see org.eclipse.cdt.make.core.scannerconfig.IDiscoveredPathManager.IDiscoveredPathInfo#getIncludeFiles(org.eclipse.core.runtime.IPath)
- */
- @Override
- public IPath[] getIncludeFiles(IPath path) {
- synchronized (fLock) {
-
- Set<IPath> pathSet = new LinkedHashSet<>();
- // get the command
- CCommandDSC cmd = getCommand(path);
- if (cmd != null) {
- IPath[] paths = stringListToPathArray(cmd.getIncludeFile());
- pathSet.addAll(Arrays.asList(paths));
- }
- // use project scope scanner info
- if (psi == null) {
- generateProjectScannerInfo();
- }
-
- for (IPath path2 : psi.includeFiles) {
- pathSet.add(path2);
- }
-
- return pathSet.toArray(new IPath[0]);
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.make.core.scannerconfig.IDiscoveredPathManager.IDiscoveredPathInfo#getIncludePaths()
- */
- @Override
- public IPath[] getIncludePaths() {
- final IPath[] includepaths;
- final IPath[] quotepaths;
- synchronized (fLock) {
- // return new IPath[0];
- includepaths = getAllIncludePaths(INCLUDE_PATH);
- quotepaths = getAllIncludePaths(QUOTE_INCLUDE_PATH);
- }
- if (quotepaths == null || quotepaths.length == 0) {
- return includepaths;
- }
- if (includepaths == null || includepaths.length == 0) {
- return quotepaths;
- }
- ArrayList<IPath> result = new ArrayList<>(includepaths.length + quotepaths.length);
- result.addAll(Arrays.asList(includepaths));
- result.addAll(Arrays.asList(quotepaths));
- return result.toArray(new IPath[result.size()]);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.make.core.scannerconfig.IDiscoveredPathManager.IDiscoveredPathInfo#getIncludePaths(org.eclipse.core.runtime.IPath)
- */
- @Override
- public IPath[] getIncludePaths(IPath path) {
- synchronized (fLock) {
- Set<IPath> pathSet = new LinkedHashSet<>();
- // get the command
- CCommandDSC cmd = getCommand(path);
- if (cmd != null) {
- IPath[] paths = stringListToPathArray(cmd.getIncludes());
- pathSet.addAll(Arrays.asList(paths));
- }
- // use project scope scanner info
- if (psi == null) {
- generateProjectScannerInfo();
- }
-
- for (IPath path2 : psi.includePaths) {
- pathSet.add(path2);
- }
-
- return pathSet.toArray(new IPath[0]);
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.make.core.scannerconfig.IDiscoveredPathManager.IPerFileDiscoveredPathInfo#getMacroFiles(org.eclipse.core.runtime.IPath)
- */
- @Override
- public IPath[] getMacroFiles(IPath path) {
- synchronized (fLock) {
- Set<IPath> pathSet = new LinkedHashSet<>();
- // get the command
- CCommandDSC cmd = getCommand(path);
- if (cmd != null) {
- IPath[] paths = stringListToPathArray(cmd.getImacrosFile());
- pathSet.addAll(Arrays.asList(paths));
- }
- // use project scope scanner info
- if (psi == null) {
- generateProjectScannerInfo();
- }
-
- for (IPath path2 : psi.macrosFiles) {
- pathSet.add(path2);
- }
-
- return pathSet.toArray(new IPath[0]);
- }
- }
-
- @Override
- public Map<IResource, PathInfo> getPathInfoMap() {
- synchronized (fLock) {
- //TODO: do we need to cache this?
- return calculatePathInfoMap();
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.make.core.scannerconfig.IDiscoveredPathManager.IDiscoveredPathInfo#getProject()
- */
- @Override
- public IProject getProject() {
- return project;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.make.core.scannerconfig.IDiscoveredPathManager.IPerFileDiscoveredPathInfo#getQuoteIncludePaths(org.eclipse.core.runtime.IPath)
- */
- @Override
- public IPath[] getQuoteIncludePaths(IPath path) {
- synchronized (fLock) {
- Set<IPath> pathSet = new LinkedHashSet<>();
- // get the command
- CCommandDSC cmd = getCommand(path);
- if (cmd != null) {
- IPath[] paths = stringListToPathArray(cmd.getQuoteIncludes());
- pathSet.addAll(Arrays.asList(paths));
- }
- // use project scope scanner info
- if (psi == null) {
- generateProjectScannerInfo();
- }
-
- for (IPath path2 : psi.quoteIncludePaths) {
- pathSet.add(path2);
- }
-
- return pathSet.toArray(new IPath[0]);
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.make.core.scannerconfig.IDiscoveredPathManager.IPerFileDiscoveredPathInfo#getSerializable()
- */
- @Override
- public IDiscoveredScannerInfoSerializable getSerializable() {
- synchronized (fLock) {
- return sid;
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.make.core.scannerconfig.IDiscoveredPathManager.IDiscoveredPathInfo#getSymbols()
- */
- @Override
- public Map<String, String> getSymbols() {
- // return new HashMap();
- synchronized (fLock) {
- return getAllSymbols();
- }
- }
-
- /*
- * (non-Javadoc)
- *
- * @seeorg.eclipse.cdt.make.core.scannerconfig.IDiscoveredPathManager.
- * IDiscoveredPathInfo#getSymbols(org.eclipse.core.runtime.IPath)
- */
- @Override
- public Map<String, String> getSymbols(IPath path) {
- synchronized (fLock) {
- Map<String, String> definedSymbols = new HashMap<>();
-
- // put project data in first so file level data can override it
- // use project scope scanner info
- if (psi == null) {
- generateProjectScannerInfo();
- }
- definedSymbols.putAll(psi.definedSymbols);
-
- // get the command
- CCommandDSC cmd = getCommand(path);
- if (cmd != null && cmd.isDiscovered()) {
- List<String> symbols = cmd.getSymbols();
- for (String symbol : symbols) {
- String key = ScannerConfigUtil.getSymbolKey(symbol);
- String value = ScannerConfigUtil.getSymbolValue(symbol);
- definedSymbols.put(key, value);
- }
-
- }
- // use project scope scanner info
- if (psi == null) {
- generateProjectScannerInfo();
- }
- definedSymbols.putAll(psi.definedSymbols);
- return definedSymbols;
- }
-
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.make.core.scannerconfig.IDiscoveredPathManager.IPerFileDiscoveredPathInfo#isEmpty(org.eclipse.core.runtime.IPath)
- */
- @Override
- public boolean isEmpty(IPath path) {
- synchronized (fLock) {
- boolean rc = true;
- IResource resource = project.getWorkspace().getRoot().findMember(path);
- if (resource != null) {
- if (resource instanceof IFile) {
- rc = (getCommand((IFile) resource) == null);
- } else if (resource instanceof IProject) {
- synchronized (fLock) {
- rc = (psi == null || psi.isEmpty());
- }
- }
- }
- return rc;
- }
- }
-
- }
-
- public static class ProjectScannerInfo {
- public Map<String, String> definedSymbols;
- public IPath[] includeFiles;
- public IPath[] includePaths;
- public IPath[] macrosFiles;
- public IPath[] quoteIncludePaths;
-
- public boolean isEmpty() {
- return (includePaths.length == 0 && quoteIncludePaths.length == 0 && includeFiles.length == 0
- && macrosFiles.length == 0 && definedSymbols.size() == 0);
- }
- }
-
- public class ScannerInfoData implements IDiscoveredScannerInfoSerializable {
- public static final String DEFINED_SYMBOL = "definedSymbol"; //$NON-NLS-1$
- public static final String ID_ATTR = "id"; //$NON-NLS-1$
- public static final String INCLUDE_PATH = "includePath"; //$NON-NLS-1$
-
- private static final String NAME = "name"; //$NON-NLS-1$
-
- public static final String PATH = "path"; //$NON-NLS-1$
- private static final String PROJECT = "project"; //$NON-NLS-1$
- public static final String REMOVED = "removed"; //$NON-NLS-1$
- public static final String SYMBOL = "symbol"; //$NON-NLS-1$
- public final Map<Integer, CCommandDSC> commandIdCommandMap; // map of all commands
- public final Map<Integer, Set<IFile>> commandIdToFilesMap; // command id and set of files it applies to
- public final Map<IFile, Integer> fileToCommandIdMap; // maps each file to the corresponding command id
-
- public ScannerInfoData() {
- commandIdCommandMap = new LinkedHashMap<>(); // [commandId, command]
- fileToCommandIdMap = new HashMap<>(); // [file, commandId]
- commandIdToFilesMap = new HashMap<>(); // [commandId, set of files]
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.make.internal.core.scannerconfig.DiscoveredScannerInfoStore.IDiscoveredScannerInfoSerializable#deserialize(org.w3c.dom.Element)
- */
- @Override
- public void deserialize(Element collectorElem) {
- synchronized (fLock) {
-
- for (Node child = collectorElem.getFirstChild(); child != null; child = child.getNextSibling()) {
- if (child.getNodeName().equals(PROJECT)) {
- Element projectElement = (Element) child;
- String projectName = projectElement.getAttribute(NAME);
-
- IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
-
- Map<ScannerInfoTypes, List<String>> scannerInfo = new HashMap<>();
-
- List<String> includes = new LinkedList<>();
- List<String> symbols = new LinkedList<>();
-
- // iterate over children
- for (Node projectChild = projectElement
- .getFirstChild(); projectChild != null; projectChild = projectChild.getNextSibling()) {
- if (projectChild.getNodeName().equals(INCLUDE_PATH)) {
- Element childElem = (Element) projectChild;
- String path = childElem.getAttribute(PATH);
- if (path != null) {
- includes.add(path);
- }
- } else if (projectChild.getNodeName().equals(DEFINED_SYMBOL)) {
- Element childElem = (Element) projectChild;
- String symbol = childElem.getAttribute(SYMBOL);
-
- if (symbol != null) {
- symbols.add(symbol);
- }
- }
- }
-
- // add loaded scanner info to project settings for this collector
- scannerInfo.put(ScannerInfoTypes.INCLUDE_PATHS, includes);
- scannerInfo.put(ScannerInfoTypes.SYMBOL_DEFINITIONS, symbols);
- fProjectSettingsMap.put(project, scannerInfo);
- }
-
- else if (child.getNodeName().equals(CC_ELEM)) {
- Element cmdElem = (Element) child;
- boolean cppFileType = cmdElem.getAttribute(FILE_TYPE_ATTR).equals("c++"); //$NON-NLS-1$
- XLCCommandDSC command = new XLCCommandDSC(cppFileType, project);
- command.setCommandId(Integer.parseInt(cmdElem.getAttribute(ID_ATTR)));
- // deserialize command
- command.deserialize(cmdElem);
- // get set of files the command applies to
- NodeList appliesList = cmdElem.getElementsByTagName(APPLIES_TO_ATTR);
- if (appliesList.getLength() > 0) {
- Element appliesElem = (Element) appliesList.item(0);
- NodeList fileList = appliesElem.getElementsByTagName(FILE_ELEM);
- for (int i = 0; i < fileList.getLength(); ++i) {
- Element fileElem = (Element) fileList.item(i);
- String fileName = fileElem.getAttribute(PATH_ATTR);
- IFile file = project.getFile(fileName);
- addCompilerCommand(file, command);
- }
- applyFileDeltas();
- }
- }
- }
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.make.internal.core.scannerconfig.DiscoveredScannerInfoStore.IDiscoveredScannerInfoSerializable#getCollectorId()
- */
- @Override
- public String getCollectorId() {
- return COLLECTOR_ID;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.make.internal.core.scannerconfig.DiscoveredScannerInfoStore.IDiscoveredScannerInfoSerializable#serialize(org.w3c.dom.Element)
- */
- @Override
- public void serialize(Element collectorElem) {
- try {
- synchronized (fLock) {
- Document doc = collectorElem.getOwnerDocument();
-
- // serialize project level info
- for (IProject project : fProjectSettingsMap.keySet()) {
- // create a project node
- Element projectElement = doc.createElement(PROJECT);
- projectElement.setAttribute(NAME, project.getName());
-
- Map<ScannerInfoTypes, List<String>> scannerInfo = (Map<ScannerInfoTypes, List<String>>) fProjectSettingsMap
- .get(project);
-
- List<String> includes = scannerInfo.get(ScannerInfoTypes.INCLUDE_PATHS);
- for (String include : includes) {
- Element pathElement = doc.createElement(INCLUDE_PATH);
- pathElement.setAttribute(PATH, include);
- //Boolean removed = (Boolean) includes.contains(include);
- //if (removed != null && removed.booleanValue() == true) {
- // pathElement.setAttribute(REMOVED, "true"); //$NON-NLS-1$
- //}
- pathElement.setAttribute(REMOVED, "false"); //$NON-NLS-1$
- projectElement.appendChild(pathElement);
- }
-
- // Now do the same for the symbols
- List<String> symbols = scannerInfo.get(ScannerInfoTypes.SYMBOL_DEFINITIONS);
-
- for (String symbol : symbols) {
- Element symbolElement = doc.createElement(DEFINED_SYMBOL);
- symbolElement.setAttribute(SYMBOL, symbol);
- projectElement.appendChild(symbolElement);
- }
- collectorElem.appendChild(projectElement);
- }
-
- // serialize file level info
- List<Integer> commandIds = new ArrayList<>(commandIdCommandMap.keySet());
- Collections.sort(commandIds);
- for (Iterator<Integer> i = commandIds.iterator(); i.hasNext();) {
- Integer commandId = i.next();
- CCommandDSC command = commandIdCommandMap.get(commandId);
-
- Element cmdElem = doc.createElement(CC_ELEM);
- collectorElem.appendChild(cmdElem);
- cmdElem.setAttribute(ID_ATTR, commandId.toString());
- cmdElem.setAttribute(FILE_TYPE_ATTR, command.appliesToCPPFileType() ? "c++" : "c"); //$NON-NLS-1$ //$NON-NLS-2$
- // write command and scanner info
- command.serialize(cmdElem);
- // write files command applies to
- Element filesElem = doc.createElement(APPLIES_TO_ATTR);
- cmdElem.appendChild(filesElem);
- Set<IFile> files = commandIdToFilesMap.get(commandId);
- if (files != null) {
- for (Iterator<IFile> j = files.iterator(); j.hasNext();) {
- Element fileElem = doc.createElement(FILE_ELEM);
- IFile file = j.next();
- IPath path = file.getProjectRelativePath();
- fileElem.setAttribute(PATH_ATTR, path.toString());
- filesElem.appendChild(fileElem);
- }
- }
- }
- }
-
- } catch (Throwable e) {
- e.printStackTrace();
- }
- }
-
- }
-
- protected static final String APPLIES_TO_ATTR = "appliesToFiles"; //$NON-NLS-1$
-
- protected static final String CC_ELEM = "compilerCommand"; //$NON-NLS-1$
-
- public static final String COLLECTOR_ID = Activator.PLUGIN_ID + ".PerFileXLCScannerInfoCollector"; //$NON-NLS-1$
-
- protected static final String FILE_ELEM = "file"; //$NON-NLS-1$
-
- protected static final String FILE_TYPE_ATTR = "fileType"; //$NON-NLS-1$
-
- protected static final String ID_ATTR = "id"; //$NON-NLS-1$
-
- protected static final int INCLUDE_FILE = 3;
-
- protected static final int INCLUDE_PATH = 1;
-
- protected static final int MACROS_FILE = 4;
-
- protected static final String PATH_ATTR = "path"; //$NON-NLS-1$
-
- protected static final int QUOTE_INCLUDE_PATH = 2;
-
- protected static PathInfo createFilePathInfo(CCommandDSC cmd) {
- IPath[] includes = stringListToPathArray(cmd.getIncludes());
- IPath[] quotedIncludes = stringListToPathArray(cmd.getQuoteIncludes());
- IPath[] incFiles = stringListToPathArray(cmd.getIncludeFile());
- IPath[] macroFiles = stringListToPathArray(cmd.getImacrosFile());
- List symbols = cmd.getSymbols();
- Map<String, String> definedSymbols = new HashMap<>(symbols.size());
- for (Iterator i = symbols.iterator(); i.hasNext();) {
- String symbol = (String) i.next();
- String key = ScannerConfigUtil.getSymbolKey(symbol);
- String value = ScannerConfigUtil.getSymbolValue(symbol);
- definedSymbols.put(key, value);
- }
-
- return new PathInfo(includes, quotedIncludes, definedSymbols, incFiles, macroFiles);
- }
-
- /**
- * @param discovered
- * @param allIncludes
- * @return
- */
- protected static IPath[] stringListToPathArray(List<String> discovered) {
- List<Path> allIncludes = new ArrayList<>(discovered.size());
- for (Iterator<String> j = discovered.iterator(); j.hasNext();) {
- String include = j.next();
- if (!allIncludes.contains(include)) {
- allIncludes.add(new Path(include));
- }
- }
- return allIncludes.toArray(new IPath[allIncludes.size()]);
- }
-
- protected int commandIdCounter = 0;
- protected InfoContext context;
-
- /** monitor for data access */
- protected final Object fLock = new Object();
-
- private Map<IProject, Map<?, ?>> fProjectSettingsMap = new HashMap<>();
-
- protected final SortedSet<Integer> freeCommandIdPool; // sorted set of free command ids
- protected IProject project;
- protected ProjectScannerInfo psi = null; // sum of all scanner info
- protected final List<Integer> siChangedForCommandIdList; // list of command ids for which scanner info has changed
- // protected List siChangedForFileList; // list of files for which scanner info has changed
- protected final Map<IResource, Integer> siChangedForFileMap; // (file, comandId) map for deltas
- protected ScannerInfoData sid; // scanner info data
-
- /**
- *
- */
- public PerFileXLCScannerInfoCollector() {
- sid = new ScannerInfoData();
-
- // siChangedForFileList = new ArrayList();
- siChangedForFileMap = new HashMap<>();
- siChangedForCommandIdList = new ArrayList<>();
-
- freeCommandIdPool = new TreeSet<>();
- }
-
- /**
- * @param file
- * @param object
- */
- protected void addCompilerCommand(IFile file, CCommandDSC cmd) {
- synchronized (fLock) {
- List<CCommandDSC> existingCommands = new ArrayList<>(sid.commandIdCommandMap.values());
- int index = existingCommands.indexOf(cmd);
- if (index != -1) {
- cmd = existingCommands.get(index);
- } else {
- int commandId = -1;
- if (!freeCommandIdPool.isEmpty()) {
- Integer freeCommandId = freeCommandIdPool.first();
- freeCommandIdPool.remove(freeCommandId);
- commandId = freeCommandId.intValue();
- } else {
- commandId = ++commandIdCounter;
- }
- cmd.setCommandId(commandId);
- sid.commandIdCommandMap.put(cmd.getCommandIdAsInteger(), cmd);
- }
-
- generateFileDelta(file, cmd);
- }
- }
-
- /**
- * @param commandId
- * @param scannerInfo
- */
- protected void addScannerInfo(Integer commandId, Map scannerInfo) {
- synchronized (fLock) {
- CCommandDSC cmd = sid.commandIdCommandMap.get(commandId);
- if (cmd != null) {
- List<String> siItem = (List<String>) scannerInfo.get(ScannerInfoTypes.SYMBOL_DEFINITIONS);
- cmd.setSymbols(siItem);
- siItem = (List<String>) scannerInfo.get(ScannerInfoTypes.INCLUDE_PATHS);
- siItem = CygpathTranslator.translateIncludePaths(project, siItem);
- siItem = CCommandDSC.makeRelative(project, siItem);
- cmd.setIncludes(siItem);
- siItem = (List<String>) scannerInfo.get(ScannerInfoTypes.QUOTE_INCLUDE_PATHS);
- siItem = CygpathTranslator.translateIncludePaths(project, siItem);
- siItem = CCommandDSC.makeRelative(project, siItem);
- cmd.setQuoteIncludes(siItem);
-
- cmd.setDiscovered(true);
- }
- }
- }
-
- /**
- * @param type
- * @param object
- */
- protected void addScannerInfo(ScannerInfoTypes type, List delta) {
- // TODO Auto-generated method stub
-
- }
-
- /**
- * @param file
- * @param cmd
- */
- protected void applyFileDeltas() {
- synchronized (fLock) {
- for (Iterator<IResource> i = siChangedForFileMap.keySet().iterator(); i.hasNext();) {
- IFile file = (IFile) i.next();
- Integer commandId = siChangedForFileMap.get(file);
- if (commandId != null) {
-
- // update sid.commandIdToFilesMap
- Set<IFile> fileSet = sid.commandIdToFilesMap.get(commandId);
- if (fileSet == null) {
- fileSet = new HashSet<>();
- sid.commandIdToFilesMap.put(commandId, fileSet);
- CCommandDSC cmd = sid.commandIdCommandMap.get(commandId);
- if (cmd != null) {
- cmd.resolveOptions(project);
- }
- }
- if (fileSet.add(file)) {
- // update fileToCommandIdsMap
- boolean change = true;
- Integer oldCommandId = sid.fileToCommandIdMap.get(file);
- if (oldCommandId != null) {
- if (oldCommandId.equals(commandId)) {
- change = false;
- } else {
- Set oldFileSet = sid.commandIdToFilesMap.get(oldCommandId);
- if (oldFileSet != null) {
- oldFileSet.remove(file);
- }
- }
- }
- if (change) {
- sid.fileToCommandIdMap.put(file, commandId);
- // TODO generate change event for this resource
- // IPath path = file.getFullPath();
- // if (!siChangedForFileList.contains(path)) {
- // siChangedForFileList.add(path);
- // }
- }
- }
- }
- }
- generateProjectScannerInfo();
- }
- }
-
- protected Map<IResource, PathInfo> calculatePathInfoMap() {
- synchronized (fLock) {
- Map<IResource, PathInfo> map = new HashMap<>(sid.fileToCommandIdMap.size() + 1);
- Map.Entry entry;
- IFile file;
- CCommandDSC cmd;
- PathInfo fpi;
- for (Iterator iter = sid.fileToCommandIdMap.entrySet().iterator(); iter.hasNext();) {
- entry = (Map.Entry) iter.next();
- file = (IFile) entry.getKey();
- if (file != null) {
- cmd = sid.commandIdCommandMap.get(entry.getValue());
- if (cmd != null) {
- fpi = createFilePathInfo(cmd);
- map.put(file, fpi);
- }
- }
- }
-
- if (project != null) {
- if (psi == null) {
- generateProjectScannerInfo();
- }
-
- fpi = new PathInfo(psi.includePaths, psi.quoteIncludePaths, psi.definedSymbols, psi.includeFiles,
- psi.macrosFiles);
- map.put(project, fpi);
- }
-
- return map;
- }
- }
-
- @Override
- public void contributeToScannerConfig(Object resource, Map scannerInfo) {
- // check the resource
- String errorMessage = null;
- if (resource == null) {
- errorMessage = "resource is null";//$NON-NLS-1$
- } else if (resource instanceof Integer) {
- synchronized (fLock) {
- addScannerInfo(((Integer) resource), scannerInfo);
- }
- return;
- }
-
- if ((resource instanceof IFile)) {
-
- if (((IFile) resource).getProject() == null) {
- errorMessage = "project is null";//$NON-NLS-1$
- } else if (!((IFile) resource).getProject().equals(project)) {
- errorMessage = "wrong project";//$NON-NLS-1$
- }
- if (errorMessage != null) {
- TraceUtil.outputError("PerFileSICollector.contributeToScannerConfig : ", errorMessage); //$NON-NLS-1$
- return;
- }
-
- IFile file = (IFile) resource;
-
- synchronized (fLock) {
- for (Iterator i = scannerInfo.keySet().iterator(); i.hasNext();) {
- ScannerInfoTypes type = (ScannerInfoTypes) i.next();
- if (type.equals(ScannerInfoTypes.COMPILER_COMMAND)) {
- List commands = (List) scannerInfo.get(type);
- for (Iterator j = commands.iterator(); j.hasNext();) {
- addCompilerCommand(file, (CCommandDSC) j.next());
- }
- } else {
- addScannerInfo(type, (List) scannerInfo.get(type));
- }
- }
- }
- }
-
- else if (resource instanceof IProject) {
- // save to project level settings
- synchronized (fLock) {
- fProjectSettingsMap.put(((IProject) resource), scannerInfo);
- }
- }
-
- else { // error
- TraceUtil.outputError("PerFileSICollector.contributeToScannerConfig : ", "Not a project or file."); //$NON-NLS-1$ //$NON-NLS-2$
- return;
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.make.core.scannerconfig.IScannerInfoCollector2#createPathInfoObject()
- */
- @Override
- public IDiscoveredPathInfo createPathInfoObject() {
- return new PerFileDiscoveredPathInfo();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.make.internal.core.scannerconfig2.PerFileSICollector#deleteAll(org.eclipse.core.resources.IResource)
- */
- public void deleteAll(IResource resource) {
- synchronized (fLock) {
- if (resource instanceof IProject) {
- fProjectSettingsMap.remove(resource);
- }
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.make.core.scannerconfig.IScannerInfoCollectorCleaner#deleteAll(org.eclipse.core.resources.IResource)
- */
- public void deleteAll1(IResource resource) {
- if (resource.equals(project)) {
- synchronized (fLock) {
- // siChangedForFileList = new ArrayList();
- siChangedForFileMap.clear();
- Set<IFile> changedFiles = sid.fileToCommandIdMap.keySet();
- for (Iterator<IFile> i = changedFiles.iterator(); i.hasNext();) {
- IFile file = i.next();
- // IPath path = file.getFullPath();
- // siChangedForFileList.add(path);
- siChangedForFileMap.put(file, null);
- }
-
- sid = new ScannerInfoData();
- psi = null;
-
- commandIdCounter = 0;
- freeCommandIdPool.clear();
- }
- }
- }
-
- public void deleteAllPaths(IResource resource) {
- synchronized (fLock) {
- if (resource instanceof IProject && fProjectSettingsMap != null) {
- fProjectSettingsMap.remove(resource);
- }
- }
- }
-
- public void deleteAllSymbols(IResource resource) {
- synchronized (fLock) {
- if (resource instanceof IProject && fProjectSettingsMap != null) {
- fProjectSettingsMap.remove(resource);
- }
- }
- }
-
- public void deletePath(IResource resource, String path) {
- synchronized (fLock) {
- if (resource instanceof IProject && fProjectSettingsMap != null) {
- fProjectSettingsMap.remove(resource);
- }
- }
- }
-
- public void deleteSymbol(IResource resource, String symbol) {
- synchronized (fLock) {
- if (resource instanceof IProject && fProjectSettingsMap != null) {
- fProjectSettingsMap.remove(resource);
- }
- }
- }
-
- /**
- * @param file
- * @param cmd
- */
- protected void generateFileDelta(IFile file, CCommandDSC cmd) {
- synchronized (fLock) {
- Integer commandId = cmd.getCommandIdAsInteger();
- Integer oldCommandId = sid.fileToCommandIdMap.get(file);
-
- if (oldCommandId != null && oldCommandId.equals(commandId)) {
- // already exists; remove form delta
- siChangedForFileMap.remove(file);
- } else {
- // new (file, commandId) pair
- siChangedForFileMap.put(file, commandId);
- }
- }
- }
-
- protected void generateProjectScannerInfo() {
- synchronized (fLock) {
- psi = new ProjectScannerInfo();
- psi.includePaths = getAllIncludePaths(INCLUDE_PATH);
- psi.quoteIncludePaths = getAllIncludePaths(QUOTE_INCLUDE_PATH);
- psi.includeFiles = getAllIncludePaths(INCLUDE_FILE);
- psi.macrosFiles = getAllIncludePaths(MACROS_FILE);
- psi.definedSymbols = getAllSymbols();
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.make.internal.core.scannerconfig2.PerFileSICollector#getAllIncludePaths(int)
- */
- protected IPath[] getAllIncludePaths(int type) {
- synchronized (fLock) {
- IProject project = this.getInfoContext().getProject();
-
- Map projectScannerInfo = fProjectSettingsMap.get(project);
- List<String> includes = null;
-
- if (projectScannerInfo != null) {
- includes = (List<String>) projectScannerInfo.get(ScannerInfoTypes.INCLUDE_PATHS);
- }
-
- List<IPath> pathList = new LinkedList<>();
-
- if (includes != null) {
- for (String include : includes) {
- pathList.add(new Path(include));
- }
- }
-
- IPath[] fileIncludes = getAllIncludePaths1(type);
-
- for (IPath include : fileIncludes) {
- pathList.add(include);
- }
-
- return pathList.toArray(new IPath[0]);
- }
- }
-
- /**
- * @param type can be one of the following:
- * <li><code>INCLUDE_PATH</code>
- * <li><code>QUOTE_INCLUDE_PATH</code>
- * <li><code>INCLUDE_FILE</code>
- * <li><code>MACROS_FILE</code>
- *
- * @return list of IPath(s).
- */
- protected IPath[] getAllIncludePaths1(int type) {
- synchronized (fLock) {
- List<String> allIncludes = new ArrayList<>();
- for (Iterator<Integer> i = sid.commandIdCommandMap.keySet().iterator(); i.hasNext();) {
- Integer cmdId = i.next();
- CCommandDSC cmd = sid.commandIdCommandMap.get(cmdId);
- if (cmd.isDiscovered()) {
- List<String> discovered = null;
- switch (type) {
- case INCLUDE_PATH:
- discovered = cmd.getIncludes();
- break;
- case QUOTE_INCLUDE_PATH:
- discovered = cmd.getQuoteIncludes();
- break;
- case INCLUDE_FILE:
- discovered = cmd.getIncludeFile();
- break;
- case MACROS_FILE:
- discovered = cmd.getImacrosFile();
- break;
- }
- for (Iterator<String> j = discovered.iterator(); j.hasNext();) {
- String include = j.next();
- // the following line degrades perfomance
- // see
- // https://bugs.eclipse.org/bugs/show_bug.cgi?id=189127
- // it is not necessary for renaming projects anyway
- // include = CCommandDSC.makeRelative(project, new
- // Path(include)).toPortableString();
- if (!allIncludes.contains(include)) {
- allIncludes.add(include);
- }
- }
- }
- }
- return stringListToPathArray(allIncludes);
- }
- }
-
- protected Map<String, String> getAllSymbols() {
- synchronized (fLock) {
- IProject project = this.getInfoContext().getProject();
-
- Map projectScannerInfo = fProjectSettingsMap.get(project);
-
- Map<String, String> symbols = new HashMap<>();
-
- if (projectScannerInfo != null) {
- List<String> projectSymbols = (List<String>) projectScannerInfo
- .get(ScannerInfoTypes.SYMBOL_DEFINITIONS);
-
- if (projectSymbols != null) {
-
- for (String symbol : projectSymbols) {
- if (symbol.matches("_Builtin")) //$NON-NLS-1$
- symbols.put(symbol, ""); //$NON-NLS-1$
- else
- symbols.put(symbol, "1"); //$NON-NLS-1$
- }
- }
- }
-
- Map<String, String> fileSymbols = getAllSymbols1();
-
- symbols.putAll(fileSymbols);
-
- return symbols;
- }
- }
-
- /**
- * @return
- */
- protected Map<String, String> getAllSymbols1() {
- synchronized (fLock) {
- Map<String, String> symbols = new HashMap<>();
- for (Iterator<Integer> i = sid.commandIdCommandMap.keySet().iterator(); i.hasNext();) {
- Integer cmdId = i.next();
- CCommandDSC cmd = sid.commandIdCommandMap.get(cmdId);
- if (cmd.isDiscovered()) {
- List discovered = cmd.getSymbols();
- for (Iterator j = discovered.iterator(); j.hasNext();) {
- String symbol = (String) j.next();
- String key = ScannerConfigUtil.getSymbolKey(symbol);
- String value = ScannerConfigUtil.getSymbolValue(symbol);
- symbols.put(key, value);
- }
- }
- }
- return symbols;
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.make.core.scannerconfig.IScannerInfoCollector#getCollectedScannerInfo(java.lang.Object, org.eclipse.cdt.make.core.scannerconfig.ScannerInfoTypes)
- */
- @Override
- public List<CCommandDSC> getCollectedScannerInfo(Object resource, ScannerInfoTypes type) {
-
- List<CCommandDSC> rv = new ArrayList<>();
- // check the resource
- String errorMessage = null;
- if (resource == null) {
- errorMessage = "resource is null";//$NON-NLS-1$
- } else if (!(resource instanceof IResource)) {
- errorMessage = "resource is not an IResource";//$NON-NLS-1$
- } else if (((IResource) resource).getProject() == null) {
- errorMessage = "project is null";//$NON-NLS-1$
- } else if (((IResource) resource).getProject() != project) {
- errorMessage = "wrong project";//$NON-NLS-1$
- }
-
- if (errorMessage != null) {
- TraceUtil.outputError("PerProjectSICollector.getCollectedScannerInfo : ", errorMessage); //$NON-NLS-1$
- return rv;
- }
- if (project.equals(((IResource) resource).getProject())) {
- if (type.equals(ScannerInfoTypes.COMPILER_COMMAND)) {
- synchronized (fLock) {
- for (Iterator<Integer> i = sid.commandIdCommandMap.keySet().iterator(); i.hasNext();) {
- Integer cmdId = i.next();
- Set<IFile> fileSet = sid.commandIdToFilesMap.get(cmdId);
- if (fileSet != null && !fileSet.isEmpty()) {
- rv.add(sid.commandIdCommandMap.get(cmdId));
- }
- }
- }
- } else if (type.equals(ScannerInfoTypes.UNDISCOVERED_COMPILER_COMMAND)) {
- // if (!siChangedForFileList.isEmpty()) {
- synchronized (fLock) {
- if (scannerInfoChanged()) {
- if (siChangedForCommandIdList.isEmpty()) {
- // for (Iterator i = siChangedForFileList.iterator(); i.hasNext(); ) {
- for (Iterator<IResource> i = siChangedForFileMap.keySet().iterator(); i.hasNext();) {
- // IPath path = (IPath) i.next();
- IFile file = (IFile) i.next();
- Integer cmdId = siChangedForFileMap.get(file);
- if (cmdId != null) {
- if (!siChangedForCommandIdList.contains(cmdId)) {
- siChangedForCommandIdList.add(cmdId);
- }
- }
- }
- }
- Collections.sort(siChangedForCommandIdList);
- for (Iterator<Integer> i = siChangedForCommandIdList.iterator(); i.hasNext();) {
- Integer cmdId = i.next();
- CCommandDSC command = sid.commandIdCommandMap.get(cmdId);
- rv.add(command);
- }
- }
- }
- }
- }
- return rv;
- }
-
- protected CCommandDSC getCommand(IFile file) {
- synchronized (fLock) {
- CCommandDSC cmd = null;
- if (file != null) {
- Integer cmdId = sid.fileToCommandIdMap.get(file);
- if (cmdId != null) {
- // get the command
- cmd = sid.commandIdCommandMap.get(cmdId);
- }
- }
- return cmd;
- }
- }
-
- /**
- * @param path
- * @return
- */
- protected CCommandDSC getCommand(IPath path) {
- synchronized (fLock) {
- try {
- IFile file = project.getWorkspace().getRoot().getFile(path);
- return getCommand(file);
- } catch (Exception e) {
- return null;
- }
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.scannerconfig.IManagedScannerInfoCollector#getDefinedSymbols()
- */
- @Override
- public Map getDefinedSymbols() {
- synchronized (fLock) {
- return getAllSymbols();
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.scannerconfig.IManagedScannerInfoCollector#getIncludePaths()
- */
- @Override
- public List<String> getIncludePaths() {
- synchronized (fLock) {
- List<String> pathStrings = new LinkedList<>();
-
- List<IPath> paths = Arrays.asList(getAllIncludePaths(INCLUDE_PATH));
- paths.addAll(Arrays.asList(getAllIncludePaths(QUOTE_INCLUDE_PATH)));
-
- for (IPath path : paths) {
- pathStrings.add(path.toString());
- }
-
- return pathStrings;
- }
- }
-
- protected InfoContext getInfoContext() {
- return context;
- }
-
- protected void removeUnusedCommands() {
- synchronized (fLock) {
- for (Iterator i = sid.commandIdToFilesMap.entrySet().iterator(); i.hasNext();) {
- Entry entry = (Entry) i.next();
- Integer cmdId = (Integer) entry.getKey();
- Set fileSet = (Set) entry.getValue();
- if (fileSet.isEmpty()) {
- // return cmdId to the free command id pool
- freeCommandIdPool.add(cmdId);
- }
- }
- for (Iterator<Integer> i = freeCommandIdPool.iterator(); i.hasNext();) {
- Integer cmdId = i.next();
- // the command does not have any files associated; remove
- sid.commandIdCommandMap.remove(cmdId);
- sid.commandIdToFilesMap.remove(cmdId);
- }
- while (!freeCommandIdPool.isEmpty()) {
- Integer last = freeCommandIdPool.last();
- if (last.intValue() == commandIdCounter) {
- freeCommandIdPool.remove(last);
- --commandIdCounter;
- } else
- break;
- }
- }
- }
-
- protected boolean scannerInfoChanged() {
- synchronized (fLock) {
- return (!fProjectSettingsMap.isEmpty()) || !siChangedForFileMap.isEmpty();
- }
- }
-
- @Override
- public void setInfoContext(InfoContext context) {
- synchronized (fLock) {
- this.project = context.getProject();
- this.context = context;
-
- try {
- // deserialize from SI store
- DiscoveredScannerInfoStore.getInstance().loadDiscoveredScannerInfoFromState(project, context, sid);
- } catch (CoreException e) {
- MakeCorePlugin.log(e);
- }
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.make.core.scannerconfig.IScannerInfoCollector2#setProject(org.eclipse.core.resources.IProject)
- */
- @Override
- public void setProject(IProject project) {
- synchronized (fLock) {
- setInfoContext(new InfoContext(project));
- }
- }
-
- @Override
- public void updateScannerConfiguration(IProgressMonitor monitor) throws CoreException {
- if (monitor == null) {
- monitor = new NullProgressMonitor();
- }
- monitor.beginTask(Messages.getString("ScannerInfoCollector.Processing"), 100); //$NON-NLS-1$
- monitor.subTask(Messages.getString("ScannerInfoCollector.Processing")); //$NON-NLS-1$
- ArrayList<IResource> changedResources = new ArrayList<>();
- synchronized (fLock) {
- if (scannerInfoChanged()) {
- applyFileDeltas();
- removeUnusedCommands();
- changedResources.addAll(siChangedForFileMap.keySet());
- siChangedForFileMap.clear();
- }
- siChangedForCommandIdList.clear();
-
- // add in any projects that got project level info (from the specs provider)
- changedResources.addAll(fProjectSettingsMap.keySet());
-
- monitor.worked(50);
- if (!changedResources.isEmpty()) {
- // update outside monitor scope
- try {
- // update scanner configuration
- monitor.subTask(Messages.getString("ScannerInfoCollector.Updating") + project.getName()); //$NON-NLS-1$
- IDiscoveredPathInfo pathInfo = MakeCorePlugin.getDefault().getDiscoveryManager()
- .getDiscoveredInfo(project, context);
- //IDiscoveredPathInfo pathInfo = new PerFileDiscoveredPathInfo();
- if (!(pathInfo instanceof IPerFileDiscoveredPathInfo)) {
- pathInfo = createPathInfoObject();
- } else {
- PerFileDiscoveredPathInfo perFilePathInfo = new PerFileDiscoveredPathInfo();
-
- // merge them
- if (!(pathInfo instanceof IPerFileDiscoveredPathInfo)) {
- pathInfo = new MergedPerFileDiscoveredPathInfo(pathInfo, perFilePathInfo);
- } else {
- pathInfo = perFilePathInfo;
- }
- }
-
- Job job = new ScannerConfigUpdateJob(context, pathInfo, context.isDefaultContext(),
- changedResources);
- ISchedulingRule rule = ResourcesPlugin.getWorkspace().getRoot();
- job.setRule(rule);
- job.schedule();
-
- // } finally {
- // manager.endRule(rule);
- // }
-
- } catch (CoreException e) {
- MakeCorePlugin.log(e);
- }
-
- catch (Throwable e) {
- e.printStackTrace();
- }
- }
- }
-
- monitor.worked(50);
- monitor.done();
- }
-
-} \ No newline at end of file
diff --git a/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/PerProjectXLCScannerInfoCollector.java b/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/PerProjectXLCScannerInfoCollector.java
deleted file mode 100644
index b5167d3a855..00000000000
--- a/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/PerProjectXLCScannerInfoCollector.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2010 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.make.xlc.core.scannerconfig;
-
-import org.eclipse.cdt.make.internal.core.scannerconfig2.PerProjectSICollector;
-import org.eclipse.cdt.managedbuilder.scannerconfig.IManagedScannerInfoCollector;
-
-/**
- * @author laggarcia
- *
- */
-public class PerProjectXLCScannerInfoCollector extends PerProjectSICollector implements IManagedScannerInfoCollector {
-}
diff --git a/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/XLCBuildOutputParserUtility.java b/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/XLCBuildOutputParserUtility.java
deleted file mode 100644
index dec8c2aebd4..00000000000
--- a/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/XLCBuildOutputParserUtility.java
+++ /dev/null
@@ -1,707 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2016 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.make.xlc.core.scannerconfig;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.URI;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Vector;
-
-import org.eclipse.cdt.core.IMarkerGenerator;
-import org.eclipse.cdt.core.ProblemMarkerInfo;
-import org.eclipse.cdt.make.core.MakeCorePlugin;
-import org.eclipse.cdt.make.internal.core.MakeMessages;
-import org.eclipse.cdt.make.internal.core.scannerconfig.util.CCommandDSC;
-import org.eclipse.cdt.make.internal.core.scannerconfig.util.KVStringPair;
-import org.eclipse.cdt.make.internal.core.scannerconfig.util.SCDOptionsEnum;
-import org.eclipse.cdt.make.internal.core.scannerconfig.util.TraceUtil;
-import org.eclipse.cdt.make.xlc.core.scannerconfig.util.XLCCommandDSC;
-import org.eclipse.cdt.utils.EFSExtensionManager;
-import org.eclipse.core.resources.IContainer;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IWorkspaceRoot;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
-
-/**
- * @author crecoskie
- *
- */
-public class XLCBuildOutputParserUtility {
- protected class Problem {
- protected String description;
- protected IResource file;
- protected int lineNumber;
- protected int severity;
- protected String variableName;
-
- public Problem(IResource file, int lineNumber, String desciption, int severity, String variableName) {
- this.file = file;
- this.lineNumber = lineNumber;
- this.description = desciption;
- this.severity = severity;
- this.variableName = variableName;
- }
- }
-
- public static IPath convertCygpath(IPath path) {
- if (path.segmentCount() > 1 && path.segment(0).equals("cygdrive")) { //$NON-NLS-1$
- StringBuilder buf = new StringBuilder(2);
- buf.append(Character.toUpperCase(path.segment(1).charAt(0)));
- buf.append(':');
- path = path.removeFirstSegments(2);
- path = path.setDevice(buf.toString());
- path = path.makeAbsolute();
- }
- return path;
- }
-
- private List commandsList2;
- private int commandsN = 0;
- private List compiledFileList;
-
- private Map directoryCommandListMap;
-
- private IPath fBaseDirectory;
- private String fDefaultMacroDefinitionValue = "1"; //$NON-NLS-1$
- private Vector<IPath> fDirectoryStack;
- private ArrayList<Problem> fErrors;
- private int filesN = 0;
-
- private IMarkerGenerator fMarkerGenerator;
-
- private IProject project;
-
- private int workingDirsN = 0;
-
- /*
- * For tracking the location of files being compiled
- */
- private Map<String, IFile> fFilesInProject;
- private List<String> fCollectedFiles;
- private List<String> fNameConflicts;
-
- protected XLCBuildOutputParserUtility(IPath baseDirectory, IPath workingDirectory) {
- fDirectoryStack = new Vector<>();
- fErrors = new ArrayList<>();
- this.fBaseDirectory = baseDirectory;
- if (workingDirectory != null) {
- pushDirectory(workingDirectory);
- }
-
- }
-
- /**
- *
- */
- public XLCBuildOutputParserUtility(IProject project, IPath workingDirectory, IMarkerGenerator markerGenerator) {
- fDirectoryStack = new Vector<>();
- fErrors = new ArrayList<>();
- this.project = project;
- fBaseDirectory = getPathForResource(project);
- if (workingDirectory != null) {
- pushDirectory(workingDirectory);
- }
- }
-
- private IPath getPathForResource(IResource resource) {
- // TODO: when the file system utility stuff is in, this will have to call it to get the path
- // for now, get the path from the URI
- URI locationURI = resource.getLocationURI();
- IPath path = new Path(locationURI.getPath());
- return path;
- }
-
- /**
- * Adds a mapping filename, generic_command
- * @param longFileName
- * @param genericLine
- */
- void addGenericCommandForFile(String longFileName, String genericCommand) {
- // if a file name has already been added once, return
- if (compiledFileList.contains(longFileName))
- return;
- compiledFileList.add(longFileName);
-
- String workingDir = getWorkingDirectory().toString();
- List directoryCommandList = (List) directoryCommandListMap.get(workingDir);
- if (directoryCommandList == null) {
- directoryCommandList = new ArrayList();
- directoryCommandListMap.put(workingDir, directoryCommandList);
- ++workingDirsN;
- }
- Map command21FileListMap = null;
- for (Iterator i = directoryCommandList.iterator(); i.hasNext();) {
- command21FileListMap = (Map) i.next();
- List fileList = (List) command21FileListMap.get(genericCommand);
- if (fileList != null) {
- if (!fileList.contains(longFileName)) {
- fileList.add(longFileName);
- ++filesN;
- }
- return;
- }
- }
- command21FileListMap = new HashMap(1);
- directoryCommandList.add(command21FileListMap);
- ++commandsN;
- List fileList = new ArrayList();
- command21FileListMap.put(genericCommand, fileList);
- fileList.add(longFileName);
- ++filesN;
- }
-
- /**
- * Adds a mapping command line -> file, this time without a dir
- * @param longFileName
- * @param genericLine
- */
- void addGenericCommandForFile2(String longFileName, String genericLine) {
- // if a file name has already been added once, return
- if (compiledFileList.contains(longFileName))
- return;
- compiledFileList.add(longFileName);
-
- String[] tokens = genericLine.split("\\s+"); //$NON-NLS-1$
- CCommandDSC command = getNewCCommandDSC(tokens, 0, false); // assume .c file type
- int index = commandsList2.indexOf(command);
- if (index == -1) {
- commandsList2.add(command);
- ++commandsN;
- } else {
- command = (CCommandDSC) commandsList2.get(index);
- }
- // // add a file
- // command.addFile(longFileName);
- // ++filesN;
- }
-
- public void changeMakeDirectory(String dir, int dirLevel, boolean enterDir) {
- if (enterDir) {
- /* Sometimes make screws up the output, so
- * "leave" events can't be seen. Double-check level
- * here.
- */
- for (int parseLevel = getDirectoryLevel(); dirLevel < parseLevel; parseLevel = getDirectoryLevel()) {
- popDirectory();
- }
- pushDirectory(new Path(dir));
- } else {
- popDirectory();
- /* Could check to see if they match */
- }
- }
-
- /**
- * Called by the console line parsers to generate a problem marker.
- */
- public void generateMarker(IResource file, int lineNumber, String desc, int severity, String varName) {
- // No need to collect markers if marker generator is not present
- if (fMarkerGenerator != null) {
- Problem problem = new Problem(file, lineNumber, desc, severity, varName);
- fErrors.add(problem);
- }
- }
-
- /**
- *
- */
- void generateReport() {
- TraceUtil.metricsTrace("Stats for directory ", //$NON-NLS-1$
- "Generic command: '", "' applicable for:", //$NON-NLS-1$ //$NON-NLS-2$
- directoryCommandListMap);
- TraceUtil.summaryTrace("Discovery summary", workingDirsN, commandsN, filesN); //$NON-NLS-1$
- }
-
- /**
- * @param filePath : String
- * @return filePath : IPath - not <code>null</code>
- */
- public IPath getAbsolutePath(String filePath) {
- IPath pFilePath;
- if (filePath.startsWith("/")) { //$NON-NLS-1$
- return convertCygpath(new Path(filePath));
- } else if (filePath.startsWith("\\") || //$NON-NLS-1$
- (!filePath.startsWith(".") && //$NON-NLS-1$
- filePath.length() > 2 && filePath.charAt(1) == ':'
- && (filePath.charAt(2) == '\\' || filePath.charAt(2) == '/'))) {
- // absolute path
- pFilePath = new Path(filePath);
- } else {
- // relative path
- IPath cwd = getWorkingDirectory();
- if (!cwd.isAbsolute()) {
- cwd = getBaseDirectory().append(cwd);
- }
- if (filePath.startsWith("`pwd`")) { //$NON-NLS-1$
- if (filePath.length() > 5 && (filePath.charAt(5) == '/' || filePath.charAt(5) == '\\')) {
- filePath = filePath.substring(6);
- } else {
- filePath = filePath.substring(5);
- }
- }
- pFilePath = cwd.append(filePath);
- }
- return pFilePath;
- }
-
- /**
- * @return Returns the fBaseDirectory.
- */
- public IPath getBaseDirectory() {
- return fBaseDirectory;
- }
-
- /**
- * Returns all CCommandDSC collected so far.
- * Currently this list is not filled, so it will always return an empty list.
- * @return List of CCommandDSC
- */
- public List getCCommandDSCList() {
- return new ArrayList(commandsList2);
- }
-
- protected int getDirectoryLevel() {
- return fDirectoryStack.size();
- }
-
- /**
- * @return Returns the fDirectoryStack.
- */
- protected Vector<IPath> getDirectoryStack() {
- return fDirectoryStack;
- }
-
- /**
- * @return Returns the fErrors.
- */
- protected ArrayList<Problem> getErrors() {
- return fErrors;
- }
-
- /**
- * @return Returns the fMarkerGenerator.
- */
- protected IMarkerGenerator getMarkerGenerator() {
- return fMarkerGenerator;
- }
-
- /**
- * @param genericLine
- * @param cppFileType
- * @return CCommandDSC compile command description
- */
- public CCommandDSC getNewCCommandDSC(String[] tokens, final int idxOfCompilerCommand, boolean cppFileType) {
- ArrayList dirafter = new ArrayList();
- ArrayList includes = new ArrayList();
- XLCCommandDSC command = new XLCCommandDSC(cppFileType, getProject());
- command.addSCOption(new KVStringPair(SCDOptionsEnum.COMMAND.toString(), tokens[idxOfCompilerCommand]));
- for (int i = idxOfCompilerCommand + 1; i < tokens.length; ++i) {
- String token = tokens[i];
- //Target specific options: see GccScannerInfoConsoleParser
- if (token.startsWith("-m") || //$NON-NLS-1$
- token.equals("-ansi") || //$NON-NLS-1$
- token.equals("-posix") || //$NON-NLS-1$
- token.equals("-pthread") || //$NON-NLS-1$
- token.startsWith("-O") || //$NON-NLS-1$
- token.equals("-fno-inline") || //$NON-NLS-1$
- token.startsWith("-finline") || //$NON-NLS-1$
- token.equals("-fno-exceptions") || //$NON-NLS-1$
- token.equals("-fexceptions") || //$NON-NLS-1$
- token.equals("-fshort-wchar") || //$NON-NLS-1$
- token.equals("-fshort-double") || //$NON-NLS-1$
- token.equals("-fno-signed-char") || //$NON-NLS-1$
- token.equals("-fsigned-char") || //$NON-NLS-1$
- token.startsWith("-fabi-version=") //$NON-NLS-1$
- ) {
- command.addSCOption(new KVStringPair(SCDOptionsEnum.COMMAND.toString(), token));
- continue;
- }
- for (int j = SCDOptionsEnum.MIN; j <= SCDOptionsEnum.MAX; ++j) {
- final SCDOptionsEnum optionKind = SCDOptionsEnum.getSCDOptionsEnum(j);
- if (token.startsWith(optionKind.toString())) {
- String option = token.substring(optionKind.toString().length()).trim();
- if (option.length() > 0) {
- // ex. -I/dir
- } else if (optionKind.equals(SCDOptionsEnum.IDASH)) {
- for (Iterator iter = includes.iterator(); iter.hasNext();) {
- option = (String) iter.next();
- KVStringPair pair = new KVStringPair(SCDOptionsEnum.IQUOTE.toString(), option);
- command.addSCOption(pair);
- }
- includes = new ArrayList();
- // -I- has no parameter
- } else {
- // ex. -I /dir
- // take a next token
- if (i + 1 < tokens.length && !tokens[i + 1].startsWith("-")) { //$NON-NLS-1$
- option = tokens[++i];
- } else
- break;
- }
-
- if (option.length() > 0 && (optionKind.equals(SCDOptionsEnum.INCLUDE)
- || optionKind.equals(SCDOptionsEnum.INCLUDE_FILE)
- || optionKind.equals(SCDOptionsEnum.IMACROS_FILE)
- || optionKind.equals(SCDOptionsEnum.IDIRAFTER) || optionKind.equals(SCDOptionsEnum.ISYSTEM)
- || optionKind.equals(SCDOptionsEnum.IQUOTE))) {
- option = (getAbsolutePath(option)).toString();
- }
-
- if (optionKind.equals(SCDOptionsEnum.IDIRAFTER)) {
- KVStringPair pair = new KVStringPair(SCDOptionsEnum.INCLUDE.toString(), option);
- dirafter.add(pair);
- } else if (optionKind.equals(SCDOptionsEnum.INCLUDE)) {
- includes.add(option);
- } else { // add the pair
- if (optionKind.equals(SCDOptionsEnum.DEFINE)) {
- if (option.indexOf('=') == -1) {
- option += '=' + fDefaultMacroDefinitionValue;
- }
- }
- KVStringPair pair = new KVStringPair(optionKind.toString(), option);
- command.addSCOption(pair);
- }
- break;
- }
- }
- }
- String option;
- for (Iterator iter = includes.iterator(); iter.hasNext();) {
- option = (String) iter.next();
- KVStringPair pair = new KVStringPair(SCDOptionsEnum.INCLUDE.toString(), option);
- command.addSCOption(pair);
- }
- for (Iterator iter = dirafter.iterator(); iter.hasNext();) {
- command.addSCOption((KVStringPair) iter.next());
- }
- return command;
- }
-
- /**
- * @return Returns the project.
- */
- protected IProject getProject() {
- return project;
- }
-
- public IPath getWorkingDirectory() {
- if (fDirectoryStack.size() != 0) {
- return fDirectoryStack.lastElement();
- }
- // Fallback to the Project Location
- // FIXME: if the build did not start in the Project ?
- return fBaseDirectory;
- }
-
- protected IPath popDirectory() {
- int i = getDirectoryLevel();
- if (i != 0) {
- IPath dir = fDirectoryStack.lastElement();
- fDirectoryStack.removeElementAt(i - 1);
- return dir;
- }
- return new Path(""); //$NON-NLS-1$
- }
-
- protected void pushDirectory(IPath dir) {
- if (dir != null) {
- IPath pwd = null;
- if (fBaseDirectory != null && fBaseDirectory.isPrefixOf(dir)) {
- pwd = dir.removeFirstSegments(fBaseDirectory.segmentCount());
- } else {
- // check if it is a cygpath
- pwd = convertCygpath(dir);
- }
- fDirectoryStack.addElement(pwd);
- }
- }
-
- public boolean reportProblems() {
- boolean reset = false;
- for (Iterator<Problem> iter = fErrors.iterator(); iter.hasNext();) {
- Problem problem = iter.next();
- if (problem.severity == IMarkerGenerator.SEVERITY_ERROR_BUILD) {
- reset = true;
- }
- if (problem.file == null) {
- fMarkerGenerator.addMarker(new ProblemMarkerInfo(project, problem.lineNumber, problem.description,
- problem.severity, problem.variableName));
- } else {
- fMarkerGenerator.addMarker(new ProblemMarkerInfo(problem.file, problem.lineNumber, problem.description,
- problem.severity, problem.variableName));
- }
- }
- fErrors.clear();
- return reset;
- }
-
- public void setDefaultMacroDefinitionValue(String val) {
- if (val != null) {
- fDefaultMacroDefinitionValue = val;
- }
- }
-
- public String getDefaultMacroDefinitionValue() {
- return fDefaultMacroDefinitionValue;
- }
-
- public String normalizePath(String path) {
- int column = path.indexOf(':');
- if (column > 0) {
- char driveLetter = path.charAt(column - 1);
- if (Character.isLowerCase(driveLetter)) {
- StringBuilder sb = new StringBuilder();
- if (column - 1 > 0) {
- sb.append(path.substring(0, column - 1));
- }
- sb.append(Character.toUpperCase(driveLetter));
- sb.append(path.substring(column));
- path = sb.toString();
- }
- }
- if (path.indexOf('.') == -1 || path.equals(".")) { //$NON-NLS-1$
- return (new Path(path)).toString(); // convert separators to '/'
- }
- // lose "./" segments since they confuse the Path normalization
- StringBuilder buf = new StringBuilder(path);
- int len = buf.length();
- StringBuilder newBuf = new StringBuilder(buf.length());
- int scp = 0; // starting copy point
- int ssp = 0; // starting search point
- int sdot;
- boolean validPrefix;
- while (ssp < len && (sdot = buf.indexOf(".", ssp)) != -1) { //$NON-NLS-1$
- validPrefix = false;
- int ddot = buf.indexOf("..", ssp);//$NON-NLS-1$
- if (sdot < ddot || ddot == -1) {
- newBuf.append(buf.substring(scp, sdot));
- scp = sdot;
- ssp = sdot + 1;
- if (ssp < len) {
- if (sdot == 0 || buf.charAt(sdot - 1) == '/' || buf.charAt(sdot - 1) == '\\') {
- validPrefix = true;
- }
- char nextChar = buf.charAt(ssp);
- if (validPrefix && nextChar == '/') {
- ++ssp;
- scp = ssp;
- } else if (validPrefix && nextChar == '\\') {
- ++ssp;
- if (ssp < len - 1 && buf.charAt(ssp) == '\\') {
- ++ssp;
- }
- scp = ssp;
- } else {
- // no path delimiter, must be '.' inside the path
- scp = ssp - 1;
- }
- }
- } else if (sdot == ddot) {
- ssp = sdot + 2;
- }
- }
- newBuf.append(buf.substring(scp, len));
-
- IPath orgPath = new Path(newBuf.toString());
- return orgPath.toString();
- }
-
- /**
- * Called by the console line parsers to find a file with a given name.
- * @param fileName
- * @return IFile or null
- */
- public IFile findFile(String fileName) {
- IFile file = findFilePath(fileName);
- if (file == null) {
- // Try the project's map.
- file = findFileName(fileName);
- if (file != null) {
- // If there is a conflict then try all files in the project.
- if (isConflictingName(fileName)) {
- file = null;
-
- // Create a problem marker
- final String error = MakeMessages.getString("ConsoleParser.Ambiguous_Filepath_Error_Message"); //$NON-NLS-1$
- TraceUtil.outputError(error, fileName);
- generateMarker(getProject(), -1, error + fileName, IMarkerGenerator.SEVERITY_WARNING, null);
- }
- }
- }
- return file;
- }
-
- /**
- * @param filePath
- * @return
- */
- protected IFile findFilePath(String filePath) {
- IPath path = null;
- IPath fp = new Path(filePath);
- if (fp.isAbsolute()) {
- if (getBaseDirectory().isPrefixOf(fp)) {
- int segments = getBaseDirectory().matchingFirstSegments(fp);
- path = fp.removeFirstSegments(segments);
- } else {
- path = fp;
- }
- } else {
- path = getWorkingDirectory().append(filePath);
- }
-
- IFile file = null;
- // The workspace may throw an IllegalArgumentException
- // Catch it and the parser should fallback to scan the entire project.
- try {
- file = findFileInWorkspace(path);
- } catch (Exception e) {
- }
-
- // We have to do another try, on Windows for cases like "TEST.C" vs "test.c"
- // We use the java.io.File canonical path.
- if (file == null || !file.exists()) {
- File f = path.toFile();
- try {
- String canon = f.getCanonicalPath();
- path = new Path(canon);
- file = findFileInWorkspace(path);
- } catch (IOException e1) {
- }
- }
- return (file != null && file.exists()) ? file : null;
- }
-
- /**
- * @param fileName
- * @return
- */
- protected IFile findFileName(String fileName) {
- IPath path = new Path(fileName);
- return fFilesInProject.get(path.lastSegment());
- }
-
- protected IFile findFileInWorkspace(IPath path) {
- IFile file = null;
- if (path.isAbsolute()) {
- IWorkspaceRoot root = getProject().getWorkspace().getRoot();
-
- // construct a URI, based on the project's locationURI, that points
- // to the given path
- URI projectURI = project.getLocationURI();
-
- URI newURI = EFSExtensionManager.getDefault().createNewURIFromPath(projectURI, path.toString());
-
- IFile[] files = root.findFilesForLocationURI(newURI);
-
- for (int i = 0; i < files.length; i++) {
- if (files[i].getProject().equals(getProject())) {
- file = files[i];
- break;
- }
- }
-
- } else {
- file = getProject().getFile(path);
- }
- return file;
- }
-
- protected void collectFiles(IContainer parent, List result) {
- try {
- IResource[] resources = parent.members();
- for (int i = 0; i < resources.length; i++) {
- IResource resource = resources[i];
- if (resource instanceof IFile) {
- result.add(resource);
- } else if (resource instanceof IContainer) {
- collectFiles((IContainer) resource, result);
- }
- }
- } catch (CoreException e) {
- MakeCorePlugin.log(e.getStatus());
- }
- }
-
- protected boolean isConflictingName(String fileName) {
- IPath path = new Path(fileName);
- return fNameConflicts.contains(path.lastSegment());
- }
-
- public List translateRelativePaths(IFile file, String fileName, List includes) {
- List translatedIncludes = new ArrayList(includes.size());
- for (Iterator i = includes.iterator(); i.hasNext();) {
- String include = (String) i.next();
- IPath includePath = new Path(include);
- if (!includePath.isAbsolute() && !includePath.isUNC()) { // do not translate UNC paths
- // First try the current working directory
- IPath cwd = getWorkingDirectory();
- if (!cwd.isAbsolute()) {
- cwd = getBaseDirectory().append(cwd);
- }
-
- IPath filePath = new Path(fileName);
- if (!filePath.isAbsolute()) {
- // check if the cwd is the right one
- // appending fileName to cwd should yield file path
- filePath = cwd.append(fileName);
- }
- if (!filePath.toString().equalsIgnoreCase(file.getLocation().toString())) {
- // must be the cwd is wrong
- // check if file name starts with ".."
- if (fileName.startsWith("..")) { //$NON-NLS-1$
- // probably multiple choices for cwd, hopeless
- final String error = MakeMessages.getString("ConsoleParser.Working_Directory_Error_Message"); //$NON-NLS-1$
- TraceUtil.outputError(error, fileName);
- generateMarker(file, -1, error, IMarkerGenerator.SEVERITY_WARNING, fileName);
- break;
- } else {
- // remove common segments at the end
- IPath tPath = new Path(fileName);
- if (fileName.startsWith(".")) { //$NON-NLS-1$
- tPath = tPath.removeFirstSegments(1);
- }
- // get the file path from the file
- filePath = file.getLocation();
- IPath lastFileSegment = filePath
- .removeFirstSegments(filePath.segmentCount() - tPath.segmentCount());
- if (lastFileSegment.matchingFirstSegments(tPath) == tPath.segmentCount()) {
- cwd = filePath.removeLastSegments(tPath.segmentCount());
- }
- }
- }
-
- IPath candidatePath = cwd.append(includePath);
- File dir = candidatePath.toFile();
- include = candidatePath.toString();
- if (!dir.exists()) {
- final String error = MakeMessages.getString("ConsoleParser.Nonexistent_Include_Path_Error_Message"); //$NON-NLS-1$
- TraceUtil.outputError(error, include);
- // generateMarker(file, -1, error+include, IMarkerGenerator.SEVERITY_WARNING, fileName);
- }
- }
- // TODO VMIR for now add unresolved paths as well
- translatedIncludes.add(include);
- }
- return translatedIncludes;
- }
-}
diff --git a/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/XLCPerFileBuildOutputParser.java b/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/XLCPerFileBuildOutputParser.java
deleted file mode 100644
index c0f7b78c395..00000000000
--- a/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/XLCPerFileBuildOutputParser.java
+++ /dev/null
@@ -1,211 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2013 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.make.xlc.core.scannerconfig;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.CopyOnWriteArrayList;
-
-import org.eclipse.cdt.make.core.scannerconfig.IScannerInfoCollector2;
-import org.eclipse.cdt.make.core.scannerconfig.ScannerInfoTypes;
-import org.eclipse.cdt.make.internal.core.scannerconfig.util.CCommandDSC;
-import org.eclipse.cdt.make.internal.core.scannerconfig.util.TraceUtil;
-import org.eclipse.cdt.make.xlc.core.activator.Activator;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-
-/**
- * @author crecoskie
- *
- */
-@SuppressWarnings("restriction")
-public class XLCPerFileBuildOutputParser extends AbstractXLCBuildOutputParser {
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.make.xlc.core.scannerconfig.AbstractXLCBuildOutputParser#processCommand(java.lang.String[])
- */
- @Override
- protected boolean processCommand(String[] tokens) {
- try {
-
- // GCC C/C++ compiler invocation
- int compilerInvocationIndex = findCompilerInvocation(tokens);
- if (compilerInvocationIndex < 0) {
- return false;
- }
-
- // find a file name
- int extensionsIndex = -1;
- boolean found = false;
- String filePath = null;
-
- // check for automake format first
- // e.g. line will start with
- // source='/some/path/source.cpp'
- int automakeSrcIndex = findAutoMakeSourceIndex(tokens);
- if (automakeSrcIndex != -1) {
- filePath = getAutoMakeSourcePath(tokens[automakeSrcIndex]);
- int k = filePath.lastIndexOf('.');
- if (k != -1 && (filePath.length() - k < 5)) {
- String fileExtension = filePath.substring(k);
- extensionsIndex = getFileExtensionsList().indexOf(fileExtension);
- if (extensionsIndex != -1) {
- found = true;
- }
- }
- }
-
- if (!found) {
- for (int i = compilerInvocationIndex + 1; i < tokens.length; i++) {
- String token = tokens[i];
- int k = token.lastIndexOf('.');
- if (k != -1 && (token.length() - k < 5)) {
- String fileExtension = token.substring(k);
- extensionsIndex = getFileExtensionsList().indexOf(fileExtension);
- if (extensionsIndex != -1) {
- filePath = token;
- found = true;
- break;
- }
- }
- }
- }
-
- if (!found) {
- TraceUtil.outputTrace("Error identifying file name :1", tokens, TraceUtil.EOL); //$NON-NLS-1$
- return false;
- }
- // sanity check
- if (filePath.indexOf(getFileExtensions()[extensionsIndex]) == -1) {
- TraceUtil.outputTrace("Error identifying file name :2", tokens, TraceUtil.EOL); //$NON-NLS-1$
- return false;
- }
- if (getUtility() != null) {
- IPath pFilePath = fUtility.getAbsolutePath(filePath);
- String shortFileName = pFilePath.removeFileExtension().lastSegment();
-
- // generalize occurrences of the file name
- for (int i = compilerInvocationIndex + 1; i < tokens.length; i++) {
- String token = tokens[i];
- if (token.equals("-include")) { //$NON-NLS-1$
- ++i;
- } else if (token.equals("-imacros")) { //$NON-NLS-1$
- ++i;
- } else if (token.equals(filePath)) {
- tokens[i] = "LONG_NAME"; //$NON-NLS-1$
- } else if (token.startsWith(shortFileName)) {
- tokens[i] = token.replaceFirst(shortFileName, "SHORT_NAME"); //$NON-NLS-1$
- }
- }
-
- IFile file = null;
- IPath baseDirectory = fUtility.getBaseDirectory();
- if (baseDirectory.isPrefixOf(pFilePath)) {
- IPath relPath = pFilePath.removeFirstSegments(baseDirectory.segmentCount());
- // Note: We add the scanner-config even if the resource doesn't
- // actually
- // exist below this project (which may happen when reading
- // existing
- // build logs, because resources can be created as part of the
- // build
- // and may not exist at the time of analyzing the config but
- // re-built
- // later on.
- // if (getProject().exists(relPath)) {
- file = getProject().getFile(relPath);
- } else {
- file = getUtility().findFileInWorkspace(pFilePath);
- }
- if (true /*file != null*/) {
- CCommandDSC cmd = getUtility().getNewCCommandDSC(tokens, compilerInvocationIndex,
- extensionsIndex > 0);
- List<CCommandDSC> cmdList = new CopyOnWriteArrayList<>();
- cmdList.add(cmd);
- Map<ScannerInfoTypes, List<CCommandDSC>> sc = new HashMap<>(1);
- sc.put(ScannerInfoTypes.COMPILER_COMMAND, cmdList);
- getCollector().contributeToScannerConfig(file, sc);
- if (fCollector != null && fCollector instanceof IScannerInfoCollector2) {
- IScannerInfoCollector2 collector = (IScannerInfoCollector2) fCollector;
- try {
- collector.updateScannerConfiguration(null);
- } catch (CoreException e) {
- // TODO Auto-generated catch block
- Activator.log(e);
- }
- }
- } else {
- /*
- //TraceUtil.outputError("Build command for file outside project: " + pFilePath.toString(), tokens); //$NON-NLS-1$
- // put the info on the project
- //CCommandDSC cmd = getUtility().getNewCCommandDSC(tokens, compilerInvocationIndex, extensionsIndex > 0);
- //List<CCommandDSC> cmdList = new ArrayList<CCommandDSC>();
- // cmdList.add(cmd);
- Map<ScannerInfoTypes, List<?>> sc = new HashMap<ScannerInfoTypes, List<?>>();
- // sc.put(ScannerInfoTypes.COMPILER_COMMAND, cmdList);
-
-
- // put in empty info for the other types
- sc.put(ScannerInfoTypes.INCLUDE_PATHS, new LinkedList<String>());
- sc.put(ScannerInfoTypes.SYMBOL_DEFINITIONS, new LinkedList<String>());
-
- getCollector().contributeToScannerConfig(getProject(), sc);
- if (fCollector != null && fCollector instanceof IScannerInfoCollector2) {
- IScannerInfoCollector2 collector = (IScannerInfoCollector2) fCollector;
- try {
- collector.updateScannerConfiguration(null);
- } catch (CoreException e) {
- // TODO Auto-generated catch block
- Activator.log(e);
- }
- }
-
- */
- }
- }
- return true;
-
- } catch (Throwable e) {
- e.printStackTrace();
- return false;
- }
- }
-
- protected String getAutoMakeSourcePath(String string) {
- // path may be enclosed in single quotes
- int firstQuoteIndex = string.indexOf('\'');
- int lastQuoteIndex = string.lastIndexOf('\'');
- if (firstQuoteIndex != -1 && lastQuoteIndex != -1)
- return string.substring(firstQuoteIndex, lastQuoteIndex);
- else {
- // just take everything after the equals sign
- int equalsIndex = string.indexOf('=');
- if (equalsIndex != -1 && equalsIndex < string.length())
- return string.substring(equalsIndex + 1);
-
- }
- return null;
- }
-
- protected int findAutoMakeSourceIndex(String[] tokens) {
- for (int i = 0; i < tokens.length; i++) {
- final String token = tokens[i].toLowerCase();
- if (token.indexOf("source=") != -1) //$NON-NLS-1$
- return i;
- }
- return -1;
- }
-
-}
diff --git a/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/XLCPerProjectBuildOutputParser.java b/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/XLCPerProjectBuildOutputParser.java
deleted file mode 100644
index c2a19dce496..00000000000
--- a/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/XLCPerProjectBuildOutputParser.java
+++ /dev/null
@@ -1,173 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2016 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.make.xlc.core.scannerconfig;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.CopyOnWriteArrayList;
-
-import org.eclipse.cdt.core.IMarkerGenerator;
-import org.eclipse.cdt.make.core.scannerconfig.IScannerInfoCollector2;
-import org.eclipse.cdt.make.core.scannerconfig.ScannerInfoTypes;
-import org.eclipse.cdt.make.internal.core.MakeMessages;
-import org.eclipse.cdt.make.internal.core.scannerconfig.util.TraceUtil;
-import org.eclipse.cdt.make.xlc.core.activator.Activator;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-
-/**
- * @author crecoskie
- *
- */
-public class XLCPerProjectBuildOutputParser extends AbstractXLCBuildOutputParser {
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.make.xlc.core.scannerconfig.AbstractXLCBuildOutputParser#processCommand(java.lang.String[])
- */
- @Override
- protected boolean processCommand(String[] tokens) {
- int compilerInvocationIdx = findCompilerInvocation(tokens);
- if (compilerInvocationIdx < 0) {
- return false;
- }
-
- if (compilerInvocationIdx + 1 >= tokens.length) {
- return false;
- }
-
- // Recognized gcc or g++ compiler invocation
- List<String> includes = new CopyOnWriteArrayList<>();
- List<String> symbols = new CopyOnWriteArrayList<>();
- List<String> targetSpecificOptions = new CopyOnWriteArrayList<>();
-
- String fileName = null;
- for (int j = compilerInvocationIdx + 1; j < tokens.length; j++) {
- String token = tokens[j];
- if (token.equals(DASHIDASH)) {
- } else if (token.startsWith(DASHI)) {
- String candidate = null;
- if (token.length() > 2) {
- candidate = token.substring(2).trim();
- } else if (j + 1 < tokens.length) {
- candidate = tokens[j + 1];
- if (candidate.startsWith("-")) { //$NON-NLS-1$
- candidate = null;
- } else {
- j++;
- }
- }
- if (candidate != null && candidate.length() > 0) {
- if (getUtility() != null) {
- candidate = getUtility().normalizePath(candidate);
- }
- if (!includes.contains(candidate)) {
- includes.add(candidate);
- }
- }
- } else if (token.startsWith(DASHD)) {
- String candidate = null;
- if (token.length() > 2) {
- candidate = token.substring(2).trim();
- } else if (j + 1 < tokens.length) {
- candidate = tokens[j + 1];
- if (candidate.startsWith("-")) { //$NON-NLS-1$
- candidate = null;
- } else {
- j++;
- }
- }
- if (candidate != null && candidate.length() > 0) {
- if (candidate.indexOf('=') == -1) {
- candidate += '=' + getUtility().getDefaultMacroDefinitionValue();
- }
- if (!symbols.contains(candidate)) {
- symbols.add(candidate);
- }
- }
- }
-
- else if (fileName == null) {
- int extIndex = token.lastIndexOf('.');
- String extension = null;
-
- if (extIndex != -1)
- extension = token.substring(extIndex);
-
- List<String> extensions = getFileExtensionsList();
- if (extension != null && extensions.contains(extension))
- fileName = token;
- }
- }
-
- if (fileName == null) {
- return false; // return when no file was given (analogous to GCCPerFileBOPConsoleParser)
- }
-
- IProject project = getProject();
- IFile file = null;
- List<String> translatedIncludes = includes;
- if (includes.size() > 0) {
- if (fileName != null) {
- if (getUtility() != null) {
- file = getUtility().findFile(fileName);
- if (file != null) {
- project = file.getProject();
- translatedIncludes = getUtility().translateRelativePaths(file, fileName, includes);
- }
- }
- } else {
- StringBuilder line = new StringBuilder();
- for (int j = 0; j < tokens.length; j++) {
- line.append(tokens[j]);
- line.append(' ');
- }
- final String error = MakeMessages.getString("ConsoleParser.Filename_Missing_Error_Message"); //$NON-NLS-1$
- TraceUtil.outputError(error, line.toString());
- if (getUtility() != null) {
- getUtility().generateMarker(getProject(), -1, error + line.toString(),
- IMarkerGenerator.SEVERITY_WARNING, null);
- }
- }
- if (file == null && getUtility() != null) { // real world case
- // remove include paths since there was no chance to translate them
- translatedIncludes.clear();
- }
- }
- // Contribute discovered includes and symbols to the ScannerInfoCollector
- if (translatedIncludes.size() > 0 || symbols.size() > 0) {
- Map<ScannerInfoTypes, List<String>> scannerInfo = new HashMap<>();
- scannerInfo.put(ScannerInfoTypes.INCLUDE_PATHS, translatedIncludes);
- scannerInfo.put(ScannerInfoTypes.SYMBOL_DEFINITIONS, symbols);
- scannerInfo.put(ScannerInfoTypes.TARGET_SPECIFIC_OPTION, targetSpecificOptions);
- getCollector().contributeToScannerConfig(project, scannerInfo);
- if (fCollector != null && fCollector instanceof IScannerInfoCollector2) {
- IScannerInfoCollector2 collector = (IScannerInfoCollector2) fCollector;
- try {
- collector.updateScannerConfiguration(null);
- } catch (CoreException e) {
- // TODO Auto-generated catch block
- Activator.log(e);
- }
- }
-
- TraceUtil.outputTrace("Discovered scanner info for file \'" + fileName + '\'', //$NON-NLS-1$
- "Include paths", includes, translatedIncludes, "Defined symbols", symbols); //$NON-NLS-1$ //$NON-NLS-2$
- }
- return true;
-
- }
-
-}
diff --git a/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/XlCSpecsConsoleParser.java b/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/XlCSpecsConsoleParser.java
deleted file mode 100644
index 097e6202b9a..00000000000
--- a/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/XlCSpecsConsoleParser.java
+++ /dev/null
@@ -1,187 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.make.xlc.core.scannerconfig;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.eclipse.cdt.core.CCProjectNature;
-import org.eclipse.cdt.core.IMarkerGenerator;
-import org.eclipse.cdt.make.core.scannerconfig.IScannerInfoCollector;
-import org.eclipse.cdt.make.core.scannerconfig.IScannerInfoCollector2;
-import org.eclipse.cdt.make.core.scannerconfig.IScannerInfoConsoleParser;
-import org.eclipse.cdt.make.core.scannerconfig.ScannerInfoTypes;
-import org.eclipse.cdt.make.internal.core.scannerconfig.util.TraceUtil;
-import org.eclipse.cdt.make.xlc.core.activator.Activator;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-
-/**
- * Parses output of ppuxlc -E -v specs.c or ppuxlc -E -v specs.cpp command
- *
- * @author laggarcia
- * @since 1.0.0
- */
-public class XlCSpecsConsoleParser implements IScannerInfoConsoleParser {
-
- // pattern for the output line of interest
- final Pattern linePattern = Pattern.compile("exec:\\s(?!export)(?:.*)\\((.*)\\)"); //$NON-NLS-1$
-
- // pattern for the symbols arguments
- final Pattern symbolPattern = Pattern.compile("-D(.*)"); //$NON-NLS-1$
-
- // pattern for the includes arguments
- final Pattern includePattern = Pattern.compile("-(?:qgcc_c_stdinc|qc_stdinc|qgcc_cpp_stdinc|qcpp_stdinc)=(.*)"); //$NON-NLS-1$
-
- final Pattern C_includePattern = Pattern.compile("-(?:qgcc_c_stdinc|qc_stdinc)=(.*)"); //$NON-NLS-1$
- final Pattern CXX_includePattern = Pattern.compile("-(?:qgcc_cpp_stdinc|qcpp_stdinc)=(.*)"); //$NON-NLS-1$
-
- // xlC compiler constants
- protected final static String[] compilerConstants = { "_Builtin", //$NON-NLS-1$
- "__IBMCPP__", //$NON-NLS-1$
- "__xlC__", //$NON-NLS-1$
- "__IBMC__", //$NON-NLS-1$
- "__xlc__" //$NON-NLS-1$
- };
-
- private IProject fProject = null;
-
- protected IScannerInfoCollector fCollector = null;
-
- protected List<String> symbols = new ArrayList<>();
-
- protected List<String> includes = new ArrayList<>();
- protected List<String> c_includes = new ArrayList<>();
- protected List<String> cpp_includes = new ArrayList<>();
-
- boolean c_lang; // if language is C only search for the C include paths from the XL Compiler, otherwise get the C++ ones.
-
- public boolean isC_lang() {
- return c_lang;
- }
-
- public void setC_lang(boolean c_lang) {
- this.c_lang = c_lang;
- }
-
- @Override
- public void startup(IProject project, IPath workingDirectory, IScannerInfoCollector collector,
- IMarkerGenerator markerGenerator) {
- this.fProject = project;
- this.fCollector = collector;
-
- try {
- if (project.hasNature(CCProjectNature.CC_NATURE_ID)) {
- // use C++ pattern
- c_lang = false;
- } else {
- // use C pattern
- c_lang = true;
- }
- } catch (CoreException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
-
- /*
- * Process an output line from the compiler command line used to retrieve
- * standard information about the compiler being used. <p> During the
- * processing, builds two List objects, one with the standard symbols
- * defined in the compiler and other with the standard include directories.
- *
- * @param line the output line from the compiler command line used @return
- * boolean
- *
- * @see org.eclipse.cdt.make.intrenal.core.scannerconfig.gnu.GCCSpecsConsoleParser#processLine(java.lang.String)
- * @since 1.0
- */
- @Override
- public boolean processLine(String line) {
- boolean rc = false;
- TraceUtil.outputTrace("XLCSpecsConsoleParser parsing line: [", line, "]"); //$NON-NLS-1$ //$NON-NLS-2$
-
- line = line.trim();
- if (line.length() == 0) {
- return false;
- }
-
- // testing the output line against the pattern of interest
- Matcher lineMatcher = linePattern.matcher(line);
- if (lineMatcher.matches()) {
- // getting the arguments from the line of interest from the
- // output
- // generated in command line
- String[] args = lineMatcher.group(1).split(","); //$NON-NLS-1$
- for (int i = 0; i < args.length; i++) {
- // getting the arguments of interest
- Matcher symbolMatcher = symbolPattern.matcher(args[i]);
- if (symbolMatcher.matches() && !symbols.contains(symbolMatcher.group(1))) {
- // if it is a symbol and it was not yet added
- symbols.add(symbolMatcher.group(1));
- } else {
- // if it is not a symbol, check to see if it is an
- // include
- Matcher includeMatcher = c_lang ? C_includePattern.matcher(args[i])
- : CXX_includePattern.matcher(args[i]);
- if (includeMatcher.matches()) {
- // if it is a set of include paths, split it
- String[] includePaths = includeMatcher.group(1).split(":"); //$NON-NLS-1$
- for (int j = 0; j < includePaths.length; j++) {
- if (!includes.contains(includePaths[j])) {
- // if the include path was not yet added
- includes.add(includePaths[j]);
- }
- }
- }
- }
- }
- }
- return rc;
- }
-
- @Override
- public void shutdown() {
- Map<ScannerInfoTypes, List<String>> scannerInfo = new HashMap<>();
-
- // insert compiler constants, work around buggy xlC option for dumping symbols (it misses a few)
- for (String constant : compilerConstants) {
- if (!symbols.contains(constant))
- symbols.add(constant);
- }
-
- // add the scanner info
- scannerInfo.put(ScannerInfoTypes.INCLUDE_PATHS, includes);
- scannerInfo.put(ScannerInfoTypes.SYMBOL_DEFINITIONS, symbols);
-
- fCollector.contributeToScannerConfig(fProject, scannerInfo);
- if (fCollector != null && fCollector instanceof IScannerInfoCollector2) {
- IScannerInfoCollector2 collector = (IScannerInfoCollector2) fCollector;
- try {
- collector.updateScannerConfiguration(null);
- } catch (CoreException e) {
- // TODO Auto-generated catch block
- Activator.log(e);
- }
- }
- TraceUtil.outputTrace("Scanner info from \'specs\' file", //$NON-NLS-1$
- "Include paths", includes, new ArrayList<String>(), "Defined symbols", symbols); //$NON-NLS-1$ //$NON-NLS-2$
- }
-
-}
diff --git a/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/XlCSpecsRunSIProvider.java b/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/XlCSpecsRunSIProvider.java
deleted file mode 100644
index 8f67f092d68..00000000000
--- a/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/XlCSpecsRunSIProvider.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.make.xlc.core.scannerconfig;
-
-import org.eclipse.cdt.make.internal.core.scannerconfig2.GCCSpecsRunSIProvider;
-import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
-import org.eclipse.cdt.managedbuilder.macros.BuildMacroException;
-import org.eclipse.cdt.managedbuilder.macros.IBuildMacroProvider;
-import org.eclipse.core.runtime.Path;
-
-/**
- * @author laggarcia
- *
- */
-public class XlCSpecsRunSIProvider extends GCCSpecsRunSIProvider {
-
- protected static final String EMPTY_STRING = ""; //$NON-NLS-1$
-
- @Override
- protected boolean initialize() {
-
- boolean rc = super.initialize();
-
- if (rc) {
- try {
- this.fCompileCommand = new Path(ManagedBuildManager.getBuildMacroProvider().resolveValue(
- this.fCompileCommand.toString(), EMPTY_STRING, null, IBuildMacroProvider.CONTEXT_CONFIGURATION,
- ManagedBuildManager.getBuildInfo(this.resource.getProject()).getDefaultConfiguration()));
- } catch (BuildMacroException e) {
- e.printStackTrace();
- return false;
- }
- }
-
- return rc;
-
- }
-
-}
diff --git a/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/util/XLCCommandDSC.java b/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/util/XLCCommandDSC.java
deleted file mode 100644
index cd4b6ad7262..00000000000
--- a/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/util/XLCCommandDSC.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.cdt.make.xlc.core.scannerconfig.util;
-
-import org.eclipse.cdt.make.internal.core.scannerconfig.util.CCommandDSC;
-import org.eclipse.cdt.make.internal.core.scannerconfig.util.KVStringPair;
-import org.eclipse.cdt.make.internal.core.scannerconfig.util.SCDOptionsEnum;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.Path;
-
-/**
- * Class that represents a XL C/C++ compiler command and related scanner configuration
- */
-public class XLCCommandDSC extends CCommandDSC {
-
- public XLCCommandDSC(boolean cppFileType) {
- super(cppFileType);
- }
-
- public XLCCommandDSC(boolean cppFileType, IProject project) {
- super(cppFileType, project);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.make.internal.core.scannerconfig.util.CCommandDSC#addSCOption(org.eclipse.cdt.make.internal.core.scannerconfig.util.KVStringPair)
- */
- @Override
- public void addSCOption(KVStringPair option) {
- if (project != null && (option.getKey().equals(SCDOptionsEnum.INCLUDE_FILE.toString())
- || option.getKey().equals(SCDOptionsEnum.INCLUDE.toString())
- || option.getKey().equals(SCDOptionsEnum.ISYSTEM.toString())
- || option.getKey().equals(SCDOptionsEnum.IMACROS_FILE.toString())
- || option.getKey().equals(SCDOptionsEnum.IQUOTE.toString()))) {
- String value = option.getValue();
- value = makeRelative(project, new Path(value)).toOSString();
- option = new KVStringPair(option.getKey(), value);
- }
- compilerCommand.add(option);
- }
-
-}
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.core/.classpath b/xlc/org.eclipse.cdt.managedbuilder.xlc.core/.classpath
deleted file mode 100644
index eca7bdba8f0..00000000000
--- a/xlc/org.eclipse.cdt.managedbuilder.xlc.core/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
- <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.core/.project b/xlc/org.eclipse.cdt.managedbuilder.xlc.core/.project
deleted file mode 100644
index ac6520e0a11..00000000000
--- a/xlc/org.eclipse.cdt.managedbuilder.xlc.core/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.cdt.managedbuilder.xlc.core</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.ManifestBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.SchemaBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.pde.PluginNature</nature>
- <nature>org.eclipse.jdt.core.javanature</nature>
- </natures>
-</projectDescription>
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.core/.settings/org.eclipse.jdt.core.prefs b/xlc/org.eclipse.cdt.managedbuilder.xlc.core/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 2b6ecff8a01..00000000000
--- a/xlc/org.eclipse.cdt.managedbuilder.xlc.core/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,464 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
-org.eclipse.jdt.core.codeComplete.argumentPrefixes=
-org.eclipse.jdt.core.codeComplete.argumentSuffixes=
-org.eclipse.jdt.core.codeComplete.fieldPrefixes=
-org.eclipse.jdt.core.codeComplete.fieldSuffixes=
-org.eclipse.jdt.core.codeComplete.localPrefixes=
-org.eclipse.jdt.core.codeComplete.localSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
-org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
-org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
-org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
-org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
-org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
-org.eclipse.jdt.core.compiler.problem.APILeak=warning
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
-org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
-org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
-org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
-org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
-org.eclipse.jdt.core.compiler.problem.nullReference=error
-org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
-org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
-org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
-org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
-org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
-org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
-org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
-org.eclipse.jdt.core.formatter.align_with_spaces=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
-org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
-org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
-org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
-org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=0
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
-org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
-org.eclipse.jdt.core.formatter.comment.format_block_comments=false
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
-org.eclipse.jdt.core.formatter.comment.format_line_comments=false
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
-org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
-org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
-org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.join_lines_in_comments=true
-org.eclipse.jdt.core.formatter.join_wrapped_lines=true
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=120
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_on_off_tags=true
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
-org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
-org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.core/.settings/org.eclipse.jdt.ui.prefs b/xlc/org.eclipse.cdt.managedbuilder.xlc.core/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index e44576346c4..00000000000
--- a/xlc/org.eclipse.cdt.managedbuilder.xlc.core/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,133 +0,0 @@
-cleanup.add_default_serial_version_id=true
-cleanup.add_generated_serial_version_id=false
-cleanup.add_missing_annotations=true
-cleanup.add_missing_deprecated_annotations=true
-cleanup.add_missing_methods=false
-cleanup.add_missing_nls_tags=false
-cleanup.add_missing_override_annotations=true
-cleanup.add_missing_override_annotations_interface_methods=true
-cleanup.add_serial_version_id=false
-cleanup.always_use_blocks=true
-cleanup.always_use_parentheses_in_expressions=false
-cleanup.always_use_this_for_non_static_field_access=false
-cleanup.always_use_this_for_non_static_method_access=false
-cleanup.convert_functional_interfaces=false
-cleanup.convert_to_enhanced_for_loop=false
-cleanup.correct_indentation=false
-cleanup.format_source_code=true
-cleanup.format_source_code_changes_only=false
-cleanup.insert_inferred_type_arguments=false
-cleanup.make_local_variable_final=true
-cleanup.make_parameters_final=false
-cleanup.make_private_fields_final=true
-cleanup.make_type_abstract_if_missing_method=false
-cleanup.make_variable_declarations_final=false
-cleanup.never_use_blocks=false
-cleanup.never_use_parentheses_in_expressions=true
-cleanup.organize_imports=true
-cleanup.qualify_static_field_accesses_with_declaring_class=false
-cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-cleanup.qualify_static_member_accesses_with_declaring_class=false
-cleanup.qualify_static_method_accesses_with_declaring_class=false
-cleanup.remove_private_constructors=true
-cleanup.remove_redundant_modifiers=false
-cleanup.remove_redundant_semicolons=true
-cleanup.remove_redundant_type_arguments=true
-cleanup.remove_trailing_whitespaces=true
-cleanup.remove_trailing_whitespaces_all=true
-cleanup.remove_trailing_whitespaces_ignore_empty=false
-cleanup.remove_unnecessary_casts=true
-cleanup.remove_unnecessary_nls_tags=false
-cleanup.remove_unused_imports=true
-cleanup.remove_unused_local_variables=false
-cleanup.remove_unused_private_fields=true
-cleanup.remove_unused_private_members=false
-cleanup.remove_unused_private_methods=true
-cleanup.remove_unused_private_types=true
-cleanup.sort_members=false
-cleanup.sort_members_all=false
-cleanup.use_anonymous_class_creation=false
-cleanup.use_blocks=false
-cleanup.use_blocks_only_for_return_and_throw=false
-cleanup.use_lambda=true
-cleanup.use_parentheses_in_expressions=false
-cleanup.use_this_for_non_static_field_access=false
-cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-cleanup.use_this_for_non_static_method_access=false
-cleanup.use_this_for_non_static_method_access_only_if_necessary=true
-cleanup_profile=_CDT
-cleanup_settings_version=2
-eclipse.preferences.version=1
-editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=_CDT
-formatter_settings_version=14
-internal.default.compliance=user
-org.eclipse.jdt.ui.exception.name=e
-org.eclipse.jdt.ui.gettersetter.use.is=true
-org.eclipse.jdt.ui.ignorelowercasenames=true
-org.eclipse.jdt.ui.importorder=java;javax;org;com;
-org.eclipse.jdt.ui.keywordthis=false
-org.eclipse.jdt.ui.ondemandthreshold=1000
-org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.staticondemandthreshold=1000
-org.eclipse.jdt.ui.text.custom_code_templates=
-sp_cleanup.add_default_serial_version_id=true
-sp_cleanup.add_generated_serial_version_id=false
-sp_cleanup.add_missing_annotations=true
-sp_cleanup.add_missing_deprecated_annotations=true
-sp_cleanup.add_missing_methods=false
-sp_cleanup.add_missing_nls_tags=false
-sp_cleanup.add_missing_override_annotations=true
-sp_cleanup.add_missing_override_annotations_interface_methods=true
-sp_cleanup.add_serial_version_id=false
-sp_cleanup.always_use_blocks=true
-sp_cleanup.always_use_parentheses_in_expressions=false
-sp_cleanup.always_use_this_for_non_static_field_access=false
-sp_cleanup.always_use_this_for_non_static_method_access=false
-sp_cleanup.convert_functional_interfaces=false
-sp_cleanup.convert_to_enhanced_for_loop=false
-sp_cleanup.correct_indentation=false
-sp_cleanup.format_source_code=true
-sp_cleanup.format_source_code_changes_only=false
-sp_cleanup.insert_inferred_type_arguments=false
-sp_cleanup.make_local_variable_final=true
-sp_cleanup.make_parameters_final=false
-sp_cleanup.make_private_fields_final=true
-sp_cleanup.make_type_abstract_if_missing_method=false
-sp_cleanup.make_variable_declarations_final=false
-sp_cleanup.never_use_blocks=false
-sp_cleanup.never_use_parentheses_in_expressions=true
-sp_cleanup.on_save_use_additional_actions=true
-sp_cleanup.organize_imports=true
-sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
-sp_cleanup.remove_private_constructors=true
-sp_cleanup.remove_redundant_modifiers=false
-sp_cleanup.remove_redundant_semicolons=true
-sp_cleanup.remove_redundant_type_arguments=true
-sp_cleanup.remove_trailing_whitespaces=true
-sp_cleanup.remove_trailing_whitespaces_all=true
-sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
-sp_cleanup.remove_unnecessary_casts=true
-sp_cleanup.remove_unnecessary_nls_tags=false
-sp_cleanup.remove_unused_imports=true
-sp_cleanup.remove_unused_local_variables=false
-sp_cleanup.remove_unused_private_fields=true
-sp_cleanup.remove_unused_private_members=false
-sp_cleanup.remove_unused_private_methods=true
-sp_cleanup.remove_unused_private_types=true
-sp_cleanup.sort_members=false
-sp_cleanup.sort_members_all=false
-sp_cleanup.use_anonymous_class_creation=false
-sp_cleanup.use_blocks=false
-sp_cleanup.use_blocks_only_for_return_and_throw=false
-sp_cleanup.use_lambda=true
-sp_cleanup.use_parentheses_in_expressions=false
-sp_cleanup.use_this_for_non_static_field_access=false
-sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-sp_cleanup.use_this_for_non_static_method_access=false
-sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.core/META-INF/MANIFEST.MF b/xlc/org.eclipse.cdt.managedbuilder.xlc.core/META-INF/MANIFEST.MF
deleted file mode 100644
index 3d15443b84e..00000000000
--- a/xlc/org.eclipse.cdt.managedbuilder.xlc.core/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,19 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-SymbolicName: org.eclipse.cdt.managedbuilder.xlc.core;singleton:=true
-Bundle-Version: 5.0.2.qualifier
-Bundle-Vendor: %providerName
-Bundle-Localization: plugin
-Require-Bundle: org.eclipse.cdt.managedbuilder.core,
- org.eclipse.core.resources,
- org.eclipse.core.runtime,
- org.eclipse.cdt.core,
- org.eclipse.cdt.make.xlc.core,
- org.eclipse.cdt.make.core,
- org.eclipse.ui
-Bundle-ActivationPolicy: lazy
-Bundle-Activator: org.eclipse.cdt.managedbuilder.xlc.core.XLCCorePlugin
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Export-Package: org.eclipse.cdt.managedbuilder.xlc.core
-Automatic-Module-Name: org.eclipse.cdt.managedbuilder.xlc.core
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.core/about.html b/xlc/org.eclipse.cdt.managedbuilder.xlc.core/about.html
deleted file mode 100644
index 164f781a8fd..00000000000
--- a/xlc/org.eclipse.cdt.managedbuilder.xlc.core/about.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
-</head>
-<body lang="EN-US">
- <h2>About This Content</h2>
-
- <p>November 30, 2017</p>
- <h3>License</h3>
-
- <p>
- The Eclipse Foundation makes available all content in this plug-in
- (&quot;Content&quot;). Unless otherwise indicated below, the Content
- is provided to you under the terms and conditions of the Eclipse
- Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
- For purposes of the EPL, &quot;Program&quot; will mean the Content.
- </p>
-
- <p>
- If you did not receive this Content directly from the Eclipse
- Foundation, the Content is being redistributed by another party
- (&quot;Redistributor&quot;) and different terms and conditions may
- apply to your use of any object code in the Content. Check the
- Redistributor's license that was provided with the Content. If no such
- license exists, contact the Redistributor. Unless otherwise indicated
- below, the terms and conditions of the EPL still apply to any source
- code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
- </p>
-
-</body>
-</html> \ No newline at end of file
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.core/about.mappings b/xlc/org.eclipse.cdt.managedbuilder.xlc.core/about.mappings
deleted file mode 100644
index 0824105e69d..00000000000
--- a/xlc/org.eclipse.cdt.managedbuilder.xlc.core/about.mappings
+++ /dev/null
@@ -1,9 +0,0 @@
-# about.mappings
-# contains fill-ins for about.properties
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# This file does not need to be translated.
-
-# The following should contain the build version.
-# e.g. "0=20020612"
-# This value will be added automaticaly via the build scripts
-0=@build@ \ No newline at end of file
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.core/about.properties b/xlc/org.eclipse.cdt.managedbuilder.xlc.core/about.properties
deleted file mode 100644
index fe5a951fd8f..00000000000
--- a/xlc/org.eclipse.cdt.managedbuilder.xlc.core/about.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-###############################################################################
-# Copyright (c) 2002, 2009 Wind River Systems and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# Wind River Systems - initial API and implementation
-###############################################################################
-# about.properties
-# contains externalized strings for about.ini
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# fill-ins are supplied by about.mappings
-# This file should be translated.
-# NOTE TO TRANSLATOR: Please do not translate the featureVersion variable.
-
-blurb=XL C/C++ Compiler Support\n\
-\n\
-Version: {featureVersion}\n\
-Build id: {0}\n\
-\n\
-(c) Copyright Eclipse contributors and others, 2000, 2010.\n\
-Visit http://www.eclipse.org/cdt
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.core/build.properties b/xlc/org.eclipse.cdt.managedbuilder.xlc.core/build.properties
deleted file mode 100644
index cb8d17b1e4e..00000000000
--- a/xlc/org.eclipse.cdt.managedbuilder.xlc.core/build.properties
+++ /dev/null
@@ -1,26 +0,0 @@
-###############################################################################
-# Copyright (c) 2007, 2009 IBM Corporation and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
- .,\
- plugin.xml,\
- plugin.properties,\
- about.html,\
- about.ini,\
- about.mappings,\
- about.properties,\
- cdt_logo_icon32.png
-src.includes = about.html
-
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.core/plugin.properties b/xlc/org.eclipse.cdt.managedbuilder.xlc.core/plugin.properties
deleted file mode 100644
index fd953f30990..00000000000
--- a/xlc/org.eclipse.cdt.managedbuilder.xlc.core/plugin.properties
+++ /dev/null
@@ -1,25 +0,0 @@
-###############################################################################
-# Copyright (c) 2006, 2009 IBM Corporation and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-
-# Plugin Name
-pluginName=XL C/C++ Managed Build Core
-providerName=Eclipse CDT
-
-objectFileName=Object File
-
-profileName=XL C managed make per project scanner discovery profile
-profileNameCPP=XL C++ managed make per project scanner discovery profile
-
-XlcBuiltinSpecsDetectorName=CDT XLC Built-in Compiler Settings
-XlcBuildCommandParserName=CDT XLC Build Output Parser
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.core/plugin.xml b/xlc/org.eclipse.cdt.managedbuilder.xlc.core/plugin.xml
deleted file mode 100644
index 272caf0579a..00000000000
--- a/xlc/org.eclipse.cdt.managedbuilder.xlc.core/plugin.xml
+++ /dev/null
@@ -1,98 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.2"?>
-<plugin>
-
- <!-- -->
- <!-- Xl C ScannerConfigurationDiscoveryProfile definitions -->
- <!-- -->
-
- <!-- We have to extend the core of CDT's make so that we can define a new ScannerConfigurationDiscoveryProfile -->
- <!-- A ScannerConfigurationDiscoveryProfile is used to discover information about the standard options used by the compiler, e.g. the standard include directories -->
-
- <!-- Xl C Managed Make Per Project Profile -->
- <!-- The Profile gathers together information about the standard include directories and standard definitions used by the compiler -->
- <extension
- id="XLCManagedMakePerProjectProfile"
- name="%profileName"
- point="org.eclipse.cdt.make.core.ScannerConfigurationDiscoveryProfile">
-
- <!-- The ScannerInfoCollector manages the information generated by the Profile so that it can be easily accessed afterwards -->
- <scannerInfoCollector
- class="org.eclipse.cdt.make.xlc.core.scannerconfig.PerFileXLCScannerInfoCollector"
- scope="project">
- </scannerInfoCollector>
-
- <!-- The ScannerInfoProvider search for the information needed by the profile and send it to the ScannerInfoCollector -->
- <scannerInfoProvider providerId="specsFile">
- <!-- Specifies the compiler command that returns the information about standard include directories and standard definitions -->
- <!-- The compiler command used will be always a C compiler command -->
- <!-- The output for C or C++ projects will be different as the ScannerInfoProvider substitute the ${specs_file} variable below with a dummy "c" file or "cpp" file -->
- <run
- arguments="-E -v &quot;${plugin_state_location}/${specs_file}&quot;"
- command="${XL_compilerRoot}/xlc"
- class="org.eclipse.cdt.make.xlc.core.scannerconfig.XlCSpecsRunSIProvider">
- </run>
- <!-- Specifies the parser for the output generated by the compiler with the above command line -->
- <scannerInfoConsoleParser
- class="org.eclipse.cdt.make.xlc.core.scannerconfig.XlCSpecsConsoleParser">
- </scannerInfoConsoleParser>
- </scannerInfoProvider>
-
- </extension>
- <!-- -->
- <!-- Xl C ScannerConfigurationDiscoveryProfile definitions -->
- <!-- -->
-
- <!-- We have to extend the core of CDT's make so that we can define a new ScannerConfigurationDiscoveryProfile -->
- <!-- A ScannerConfigurationDiscoveryProfile is used to discover information about the standard options used by the compiler, e.g. the standard include directories -->
-
- <!-- Xl C Managed Make Per Project Profile -->
- <!-- The Profile gathers together information about the standard include directories and standard definitions used by the compiler -->
- <extension
- id="XLCManagedMakePerProjectProfileCPP"
- name="%profileNameCPP"
- point="org.eclipse.cdt.make.core.ScannerConfigurationDiscoveryProfile">
-
- <!-- The ScannerInfoCollector manages the information generated by the Profile so that it can be easily accessed afterwards -->
- <scannerInfoCollector
- class="org.eclipse.cdt.make.xlc.core.scannerconfig.PerFileXLCScannerInfoCollector"
- scope="project">
- </scannerInfoCollector>
-
- <!-- The ScannerInfoProvider search for the information needed by the profile and send it to the ScannerInfoCollector -->
- <scannerInfoProvider providerId="specsFile">
- <!-- Specifies the compiler command that returns the information about standard include directories and standard definitions -->
- <!-- The compiler command used will be always a C compiler command -->
- <!-- The output for C or C++ projects will be different as the ScannerInfoProvider substitute the ${specs_file} variable below with a dummy "c" file or "cpp" file -->
- <run
- arguments="-E -v &quot;${plugin_state_location}/${specs_file}&quot;"
- command="${XL_compilerRoot}/xlC"
- class="org.eclipse.cdt.make.xlc.core.scannerconfig.XlCSpecsRunSIProvider">
- </run>
- <!-- Specifies the parser for the output generated by the compiler with the above command line -->
- <scannerInfoConsoleParser
- class="org.eclipse.cdt.make.xlc.core.scannerconfig.XlCSpecsConsoleParser">
- </scannerInfoConsoleParser>
- </scannerInfoProvider>
- </extension>
-
- <extension
- point="org.eclipse.cdt.core.LanguageSettingsProvider">
- <provider
- class="org.eclipse.cdt.managedbuilder.xlc.core.XlcBuiltinSpecsDetector"
- id="org.eclipse.cdt.managedbuilder.xlc.core.XlcBuiltinSpecsDetector"
- name="%XlcBuiltinSpecsDetectorName"
- parameter="${COMMAND} ${FLAGS} -E -V -P -w &quot;${INPUTS}&quot;">
- <language-scope id="org.eclipse.cdt.core.gcc"/>
- <language-scope id="org.eclipse.cdt.core.g++"/>
- </provider>
- <provider
- class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuildCommandParser"
- id="org.eclipse.cdt.managedbuilder.xlc.core.XlcBuildCommandParser"
- name="%XlcBuildCommandParserName"
- parameter="xl[cC]"
- prefer-non-shared="true">
- </provider>
- </extension>
-
-</plugin>
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.core/src/org/eclipse/cdt/managedbuilder/xlc/core/XLCCorePlugin.java b/xlc/org.eclipse.cdt.managedbuilder.xlc.core/src/org/eclipse/cdt/managedbuilder/xlc/core/XLCCorePlugin.java
deleted file mode 100644
index a996236c37b..00000000000
--- a/xlc/org.eclipse.cdt.managedbuilder.xlc.core/src/org/eclipse/cdt/managedbuilder/xlc/core/XLCCorePlugin.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.managedbuilder.xlc.core;
-
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-
-/**
- * @author crecoskie
- *
- */
-public class XLCCorePlugin extends AbstractUIPlugin {
-
- /**
- *
- */
- public XLCCorePlugin() {
- // TODO Auto-generated constructor stub
- }
-
-}
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.core/src/org/eclipse/cdt/managedbuilder/xlc/core/XlcBuiltinSpecsDetector.java b/xlc/org.eclipse.cdt.managedbuilder.xlc.core/src/org/eclipse/cdt/managedbuilder/xlc/core/XlcBuiltinSpecsDetector.java
deleted file mode 100644
index edc06ec460a..00000000000
--- a/xlc/org.eclipse.cdt.managedbuilder.xlc.core/src/org/eclipse/cdt/managedbuilder/xlc/core/XlcBuiltinSpecsDetector.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2012 Andrew Gvozdev and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Andrew Gvozdev - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.cdt.managedbuilder.xlc.core;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsEditableProvider;
-import org.eclipse.cdt.core.settings.model.ICSettingEntry;
-import org.eclipse.cdt.managedbuilder.language.settings.providers.ToolchainBuiltinSpecsDetector;
-
-/**
- * Language settings provider to detect built-in compiler settings for IBM XLC compiler.
- */
-public class XlcBuiltinSpecsDetector extends ToolchainBuiltinSpecsDetector
- implements ILanguageSettingsEditableProvider {
- // must match the toolchain definition in org.eclipse.cdt.managedbuilder.core.buildDefinitions extension point
- private static final String XLC_TOOLCHAIN_ID = "cdt.managedbuild.toolchain.xlc.exe.debug"; //$NON-NLS-1$
-
- private static final Pattern OPTIONS_PATTERN = Pattern
- .compile("-[^\\s\"']*(\\s*((\".*?\")|('.*?')|([^-\\s][^\\s]+)))?"); //$NON-NLS-1$
- private static final int OPTION_GROUP = 0;
-
- /* Sample output:
-
- > xlC -E -V -P -w ~/tmp/spec.C
- export XL_CONFIG=/etc/vac.cfg:xlC
- /usr/vac/exe/xlCcpp /home/me/tmp/spec.C - -qc++=/usr/vacpp/include -D_AIX -D_AIX32 -D_AIX41 -D_AIX43 -D_AIX50 -D_AIX51 -D_AIX52 -D_IBMR2 -D_POWER -E -P -w -qlanglvl=ansi -qansialias
- rm /tmp/xlcW0lt4Jia
- rm /tmp/xlcW1lt4Jib
- rm /tmp/xlcW2lt4Jic
- */
- @SuppressWarnings("nls")
- private static final AbstractOptionParser[] optionParsers = {
- new IncludePathOptionParser("-I\\s*([\"'])(.*)\\1", "$2",
- ICSettingEntry.BUILTIN | ICSettingEntry.READONLY | ICSettingEntry.LOCAL),
- new IncludePathOptionParser("-I\\s*([^\\s\"']*)", "$1", ICSettingEntry.BUILTIN | ICSettingEntry.READONLY),
- new IncludePathOptionParser("-qc\\+\\+=\\s*([^\\s\"']*)", "$1",
- ICSettingEntry.BUILTIN | ICSettingEntry.READONLY),
- new MacroOptionParser("-D\\s*([\"'])([^=]*)(=(.*))?\\1", "$2", "$4",
- ICSettingEntry.BUILTIN | ICSettingEntry.READONLY),
- new MacroOptionParser("-D\\s*([^\\s=\"']*)=(\\\\([\"']))(.*?)\\2", "$1", "$3$4$3",
- ICSettingEntry.BUILTIN | ICSettingEntry.READONLY),
- new MacroOptionParser("-D\\s*([^\\s=\"']*)=([\"'])(.*?)\\2", "$1", "$3",
- ICSettingEntry.BUILTIN | ICSettingEntry.READONLY),
- new MacroOptionParser("-D\\s*([^\\s=\"']*)(=([^\\s\"']*))?", "$1", "$3",
- ICSettingEntry.BUILTIN | ICSettingEntry.READONLY), };
-
- @Override
- public String getToolchainId() {
- return XLC_TOOLCHAIN_ID;
- }
-
- @Override
- protected AbstractOptionParser[] getOptionParsers() {
- return optionParsers;
- }
-
- @Override
- protected List<String> parseOptions(String line) {
- List<String> options = new ArrayList<>();
- Matcher optionMatcher = OPTIONS_PATTERN.matcher(line);
- while (optionMatcher.find()) {
- String option = optionMatcher.group(OPTION_GROUP);
- if (option != null) {
- options.add(option);
- }
- }
- return options;
- }
-
- @Override
- public XlcBuiltinSpecsDetector cloneShallow() throws CloneNotSupportedException {
- return (XlcBuiltinSpecsDetector) super.cloneShallow();
- }
-
- @Override
- public XlcBuiltinSpecsDetector clone() throws CloneNotSupportedException {
- return (XlcBuiltinSpecsDetector) super.clone();
- }
-
-}
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/.classpath b/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/.classpath
deleted file mode 100644
index eca7bdba8f0..00000000000
--- a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
- <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/.project b/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/.project
deleted file mode 100644
index dcc854caa74..00000000000
--- a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.cdt.managedbuilder.xlc.ui</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.ManifestBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.SchemaBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.pde.PluginNature</nature>
- <nature>org.eclipse.jdt.core.javanature</nature>
- </natures>
-</projectDescription>
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/.settings/org.eclipse.jdt.core.prefs b/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 2b6ecff8a01..00000000000
--- a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,464 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
-org.eclipse.jdt.core.codeComplete.argumentPrefixes=
-org.eclipse.jdt.core.codeComplete.argumentSuffixes=
-org.eclipse.jdt.core.codeComplete.fieldPrefixes=
-org.eclipse.jdt.core.codeComplete.fieldSuffixes=
-org.eclipse.jdt.core.codeComplete.localPrefixes=
-org.eclipse.jdt.core.codeComplete.localSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
-org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
-org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
-org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
-org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
-org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
-org.eclipse.jdt.core.compiler.problem.APILeak=warning
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
-org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
-org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
-org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
-org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
-org.eclipse.jdt.core.compiler.problem.nullReference=error
-org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
-org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
-org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
-org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
-org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
-org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
-org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
-org.eclipse.jdt.core.formatter.align_with_spaces=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
-org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
-org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
-org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
-org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=0
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
-org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
-org.eclipse.jdt.core.formatter.comment.format_block_comments=false
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
-org.eclipse.jdt.core.formatter.comment.format_line_comments=false
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
-org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
-org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
-org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.join_lines_in_comments=true
-org.eclipse.jdt.core.formatter.join_wrapped_lines=true
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=120
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_on_off_tags=true
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
-org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
-org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/.settings/org.eclipse.jdt.ui.prefs b/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index e44576346c4..00000000000
--- a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,133 +0,0 @@
-cleanup.add_default_serial_version_id=true
-cleanup.add_generated_serial_version_id=false
-cleanup.add_missing_annotations=true
-cleanup.add_missing_deprecated_annotations=true
-cleanup.add_missing_methods=false
-cleanup.add_missing_nls_tags=false
-cleanup.add_missing_override_annotations=true
-cleanup.add_missing_override_annotations_interface_methods=true
-cleanup.add_serial_version_id=false
-cleanup.always_use_blocks=true
-cleanup.always_use_parentheses_in_expressions=false
-cleanup.always_use_this_for_non_static_field_access=false
-cleanup.always_use_this_for_non_static_method_access=false
-cleanup.convert_functional_interfaces=false
-cleanup.convert_to_enhanced_for_loop=false
-cleanup.correct_indentation=false
-cleanup.format_source_code=true
-cleanup.format_source_code_changes_only=false
-cleanup.insert_inferred_type_arguments=false
-cleanup.make_local_variable_final=true
-cleanup.make_parameters_final=false
-cleanup.make_private_fields_final=true
-cleanup.make_type_abstract_if_missing_method=false
-cleanup.make_variable_declarations_final=false
-cleanup.never_use_blocks=false
-cleanup.never_use_parentheses_in_expressions=true
-cleanup.organize_imports=true
-cleanup.qualify_static_field_accesses_with_declaring_class=false
-cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-cleanup.qualify_static_member_accesses_with_declaring_class=false
-cleanup.qualify_static_method_accesses_with_declaring_class=false
-cleanup.remove_private_constructors=true
-cleanup.remove_redundant_modifiers=false
-cleanup.remove_redundant_semicolons=true
-cleanup.remove_redundant_type_arguments=true
-cleanup.remove_trailing_whitespaces=true
-cleanup.remove_trailing_whitespaces_all=true
-cleanup.remove_trailing_whitespaces_ignore_empty=false
-cleanup.remove_unnecessary_casts=true
-cleanup.remove_unnecessary_nls_tags=false
-cleanup.remove_unused_imports=true
-cleanup.remove_unused_local_variables=false
-cleanup.remove_unused_private_fields=true
-cleanup.remove_unused_private_members=false
-cleanup.remove_unused_private_methods=true
-cleanup.remove_unused_private_types=true
-cleanup.sort_members=false
-cleanup.sort_members_all=false
-cleanup.use_anonymous_class_creation=false
-cleanup.use_blocks=false
-cleanup.use_blocks_only_for_return_and_throw=false
-cleanup.use_lambda=true
-cleanup.use_parentheses_in_expressions=false
-cleanup.use_this_for_non_static_field_access=false
-cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-cleanup.use_this_for_non_static_method_access=false
-cleanup.use_this_for_non_static_method_access_only_if_necessary=true
-cleanup_profile=_CDT
-cleanup_settings_version=2
-eclipse.preferences.version=1
-editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=_CDT
-formatter_settings_version=14
-internal.default.compliance=user
-org.eclipse.jdt.ui.exception.name=e
-org.eclipse.jdt.ui.gettersetter.use.is=true
-org.eclipse.jdt.ui.ignorelowercasenames=true
-org.eclipse.jdt.ui.importorder=java;javax;org;com;
-org.eclipse.jdt.ui.keywordthis=false
-org.eclipse.jdt.ui.ondemandthreshold=1000
-org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.staticondemandthreshold=1000
-org.eclipse.jdt.ui.text.custom_code_templates=
-sp_cleanup.add_default_serial_version_id=true
-sp_cleanup.add_generated_serial_version_id=false
-sp_cleanup.add_missing_annotations=true
-sp_cleanup.add_missing_deprecated_annotations=true
-sp_cleanup.add_missing_methods=false
-sp_cleanup.add_missing_nls_tags=false
-sp_cleanup.add_missing_override_annotations=true
-sp_cleanup.add_missing_override_annotations_interface_methods=true
-sp_cleanup.add_serial_version_id=false
-sp_cleanup.always_use_blocks=true
-sp_cleanup.always_use_parentheses_in_expressions=false
-sp_cleanup.always_use_this_for_non_static_field_access=false
-sp_cleanup.always_use_this_for_non_static_method_access=false
-sp_cleanup.convert_functional_interfaces=false
-sp_cleanup.convert_to_enhanced_for_loop=false
-sp_cleanup.correct_indentation=false
-sp_cleanup.format_source_code=true
-sp_cleanup.format_source_code_changes_only=false
-sp_cleanup.insert_inferred_type_arguments=false
-sp_cleanup.make_local_variable_final=true
-sp_cleanup.make_parameters_final=false
-sp_cleanup.make_private_fields_final=true
-sp_cleanup.make_type_abstract_if_missing_method=false
-sp_cleanup.make_variable_declarations_final=false
-sp_cleanup.never_use_blocks=false
-sp_cleanup.never_use_parentheses_in_expressions=true
-sp_cleanup.on_save_use_additional_actions=true
-sp_cleanup.organize_imports=true
-sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
-sp_cleanup.remove_private_constructors=true
-sp_cleanup.remove_redundant_modifiers=false
-sp_cleanup.remove_redundant_semicolons=true
-sp_cleanup.remove_redundant_type_arguments=true
-sp_cleanup.remove_trailing_whitespaces=true
-sp_cleanup.remove_trailing_whitespaces_all=true
-sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
-sp_cleanup.remove_unnecessary_casts=true
-sp_cleanup.remove_unnecessary_nls_tags=false
-sp_cleanup.remove_unused_imports=true
-sp_cleanup.remove_unused_local_variables=false
-sp_cleanup.remove_unused_private_fields=true
-sp_cleanup.remove_unused_private_members=false
-sp_cleanup.remove_unused_private_methods=true
-sp_cleanup.remove_unused_private_types=true
-sp_cleanup.sort_members=false
-sp_cleanup.sort_members_all=false
-sp_cleanup.use_anonymous_class_creation=false
-sp_cleanup.use_blocks=false
-sp_cleanup.use_blocks_only_for_return_and_throw=false
-sp_cleanup.use_lambda=true
-sp_cleanup.use_parentheses_in_expressions=false
-sp_cleanup.use_this_for_non_static_field_access=false
-sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-sp_cleanup.use_this_for_non_static_method_access=false
-sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/META-INF/MANIFEST.MF b/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/META-INF/MANIFEST.MF
deleted file mode 100644
index abf2732eb63..00000000000
--- a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,26 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-SymbolicName: org.eclipse.cdt.managedbuilder.xlc.ui; singleton := true
-Bundle-Version: 6.4.1.qualifier
-Bundle-Activator: org.eclipse.cdt.managedbuilder.xlc.ui.XLCUIPlugin
-Bundle-Localization: plugin
-Require-Bundle: org.eclipse.ui,
- org.eclipse.core.runtime,
- org.eclipse.cdt.managedbuilder.core,
- org.eclipse.cdt.core,
- org.eclipse.core.resources,
- org.eclipse.cdt.managedbuilder.ui,
- org.eclipse.cdt.ui,
- org.eclipse.ui.ide,
- org.eclipse.core.variables
-Bundle-ActivationPolicy: lazy
-Export-Package: org.eclipse.cdt.managedbuilder.xlc.aix,
- org.eclipse.cdt.managedbuilder.xlc.ui,
- org.eclipse.cdt.managedbuilder.xlc.ui.preferences,
- org.eclipse.cdt.managedbuilder.xlc.ui.properties,
- org.eclipse.cdt.managedbuilder.xlc.ui.variables,
- org.eclipse.cdt.managedbuilder.xlc.ui.wizards
-Bundle-Vendor: %providerName
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Automatic-Module-Name: org.eclipse.cdt.managedbuilder.xlc.ui
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/about.html b/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/about.html
deleted file mode 100644
index 164f781a8fd..00000000000
--- a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/about.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
-</head>
-<body lang="EN-US">
- <h2>About This Content</h2>
-
- <p>November 30, 2017</p>
- <h3>License</h3>
-
- <p>
- The Eclipse Foundation makes available all content in this plug-in
- (&quot;Content&quot;). Unless otherwise indicated below, the Content
- is provided to you under the terms and conditions of the Eclipse
- Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
- For purposes of the EPL, &quot;Program&quot; will mean the Content.
- </p>
-
- <p>
- If you did not receive this Content directly from the Eclipse
- Foundation, the Content is being redistributed by another party
- (&quot;Redistributor&quot;) and different terms and conditions may
- apply to your use of any object code in the Content. Check the
- Redistributor's license that was provided with the Content. If no such
- license exists, contact the Redistributor. Unless otherwise indicated
- below, the terms and conditions of the EPL still apply to any source
- code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
- </p>
-
-</body>
-</html> \ No newline at end of file
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/about.mappings b/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/about.mappings
deleted file mode 100644
index 0824105e69d..00000000000
--- a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/about.mappings
+++ /dev/null
@@ -1,9 +0,0 @@
-# about.mappings
-# contains fill-ins for about.properties
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# This file does not need to be translated.
-
-# The following should contain the build version.
-# e.g. "0=20020612"
-# This value will be added automaticaly via the build scripts
-0=@build@ \ No newline at end of file
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/about.properties b/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/about.properties
deleted file mode 100644
index b2121faa8ed..00000000000
--- a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/about.properties
+++ /dev/null
@@ -1,28 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 IBM Corporation and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-# about.properties
-# contains externalized strings for about.ini
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# fill-ins are supplied by about.mappings
-# This file should be translated.
-# NOTE TO TRANSLATOR: Please do not translate the featureVersion variable.
-
-
-blurb=CDT XL C/C++ Compiler Support\n\
-\n\
-Version: {featureVersion}\n\
-Build id: {0}\n\
-\n\
-(c) Copyright Eclipse contributors and others, 2007, 2010.\n\
-Visit http://www.eclipse.org/cdt
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/build.properties b/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/build.properties
deleted file mode 100644
index 5d89bc231b3..00000000000
--- a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/build.properties
+++ /dev/null
@@ -1,25 +0,0 @@
-###############################################################################
-# Copyright (c) 2007, 2009 IBM Corporation and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
- .,\
- plugin.properties,\
- plugin.xml,\
- about.html,\
- about.ini,\
- about.mappings,\
- about.properties,\
- cdt_logo_icon32.png
-src.includes = about.html
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/plugin.properties b/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/plugin.properties
deleted file mode 100644
index 934ae57a426..00000000000
--- a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/plugin.properties
+++ /dev/null
@@ -1,454 +0,0 @@
-###############################################################################
-# Copyright (c) 2007, 2011 IBM Corporation and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-
-pluginName = XL C/C++ Managed Build UI Plugin
-providerName = Eclipse CDT
-
-variableDescription = XL C/C++ Compiler Root Location
-
-#Build model names
-TargetName.xlc.exe=Executable (XL C/C++)
-TargetName.xlc.so=Shared Library (XL C/C++)
-TargetName.xlc.lib=Static Library(XL C/C++)
-
-# Default Configuration Names
-# START NON-TRANSLATABLE
-ConfigName.Rel=Release
-ConfigName.Dbg=Debug
-# END NON-TRANSLATABLE
-
-# Generic tool-chain names
-ToolChainName.Rel=XL C/C++ Tool Chain
-ToolChainName.Dbg=XL C/C++ Tool Chain
-
-# Generic platform names
-PlatformName.Rel=Release Platform
-PlatformName.Dbg=Debug Platform
-
-# Generic builder names
-BuilderName.Rel=GNU Make
-BuilderName.Dbg=GNU Make
-
-# Tool names
-ToolName.compiler.xlc.c = XL C Compiler
-ToolName.compiler.xlc.cpp = XL C++ Compiler
-ToolName.linker.xlc.c = XL C Executable Linker
-ToolName.linker.xlc.cpp = XL C++ Executable Linker
-ToolName.archiver.xlc = Archiver
-ToolName.assembler.xlc = XL Assembler
-ToolName.linker.xlc.cpp.so = XL C++ Shared Object Linker
-ToolName.linker.xlc.c.so = XL C Shared Object Linker
-
-# Generic Category Names
-OptionCategory.Linking = Linking
-OptionCategory.Libs = Libraries and Paths
-OptionCategory.ifp = Integer and Floating Point
-OptionCategory.cc = Compiler Customization
-OptionCategory.lm = Listings and Messages
-OptionCategory.ecd = Error Checking and Debugging
-OptionCategory.Input = Input Control
-OptionCategory.Output = Output Control
-OptionCategory.Optimize=Optimization
-OptionCategory.Comp = Compatibility
-OptionCategory.Misc=Miscellaneous
-OptionCategory.Assembler=Assembler Options
-OptionCategory.General=General
-OptionCategory.objcc=Object code control
-
-# generic names used by multiple options
-Option.none = none
-Option.default = default
-
-# Miscellaneous options
-Option.compiler.other = Other compiler flags
-
-# Input Control options
-Option.Preproccomments = Preserve comments in pre-processed output (-C)
-Option.DefSym = Define a macro name (-D)
-Option.InclPaths = Specify an additional search path for #include s (-I)
-Option.UndefSym = Undefine a macro name (-U)
-Option.altivec = Enable compiler support for vector data types (-qaltivec)
-Option.asm = Control the interpretation of and subsequent generation of code for asm statement (-qasm)
-Option.asm.default = Default
-Option.asm.stdcpp = Standard (-qasm=stdcpp)
-Option.asm.gcc = GCC (-qasm=gcc)
-Option.Cstdinc = Specify C standard search location (-qc_stdinc)
-Option.cppstdinc = Specify C++ standard search location (-qcpp_stdinc)
-Option.qcomplexgccincl = Wrap include files in GCC pragmas (-qcomplexgccincl)
-Option.Nocplus = Don't recognize C++ comments in C source files(-qnocpluscmt)
-Option.Mbcs = Enable recognition of multi-byte characters (-qmbcs)
-Option.Digraph = Enable recognition of digraph characters (-qdigraph)
-Option.Dollar = Allow $ symbols to be used in identifiers (-qdollar)
-Option.Incdirfirst = Change the search path (-qidirfirst)
-Option.ignprag = Ignore certain pragmas (-qignprag=)
-Option.ignprag.disjoint = disjoint
-Option.ignprag.isolated = isolated
-Option.ignprag.all = all
-Option.ignprag.ibm = IBM(R)
-Option.ignprag.omp = omp
-Option.Keyword = Treat specified name as a keyword(-qkeyword)
-Option.langlvl = Language level (-qlanglvl=)
-Option.langlvl.classic = classic
-Option.langlvl.extended = extended
-Option.langlvl.saa = SAA
-Option.langlvl.saal2 = SAA Level 2
-Option.langlvl.stdc89 = C89 standard
-Option.langlvl.stdc99 = C99 standard
-Option.langlvl.extc89 = C89 with extensions
-Option.langlvl.extc99 = C99 with extensions
-Option.langlvl.ucs = UCS
-Option.Macpstr = Convert pascal string literals into null-terminated string literals (-qmacpstr)
-Option.Pascal = Recognize and accept the keyword pascal (-qpascal)
-Option.sourcetype = Override source type (-qsourcetype)
-Option.sourcetype.c = c
-Option.sourcetype.c++ = C++
-Option.sourcetype.assembler = assembler
-Option.stdframework = Search standard framework directories (-qstdframework)
-Option.frameworkdirs = Specify additional framework directories (-qframeworkdir)
-Option.Input = Don't search the default search path directories (-qnostdinc)
-Option.Warn.Syntax =Perform syntax checking without generating an object file(-qsyntaxonly)\u0020
-Option.Trigraph=Recognize tri-graph key combinations
-Option.Utf=Enable recognition of UTF literal syntax (-qutf)
-Option.plus = Compile any file as a C++ file (-+)
-Option.cinc = Insert extern "C" {} in the specified include files (-qcinc)
-Option.gcc_c_stdinc = Change GCC headers search location (-qgcc_c_stdinc)
-Option.gcc_cpp_stdinc = Change G++ headers search location (-qgcc_cpp_stdinc)
-
-# Output Control options
-
-Option.Trace=Preview the steps for compilation(-#)
-Option.bmaxdata=Maximum size of the area shared by the static data and the heap (-bmaxdata=)
-Option.c=Pass the source files through compiler component only(-c)
-Option.PreprocOnly=Preprocess the source files and create an output preprocessed source file (-E)
-Option.PreprocRemoveComments=Remove comments from preprocessed output (-C!)
-Option.M=Create an output file that contains targets for the make command (-M)
-Option.ma=Substitute inline code for calls to alloca (-ma)
-Option.o=Specify an output location for the files created by the compiler (-o)\u0020
-Option.P=Preprocess the source files and create an output preprocessed source file for each source file(-P)
-Option.Assem=Generate an assembler language file for each source file(-S)
-Option.Strip=Strip symbol table, line number information and relocation information from source file(-s)
-Option.64=Select 64-bit compiler mode(-q64)
-Option.Align=Specify what alignment rules compiler uses for compilation(-qalign)
-Option.Align.Full=full
-Option.Align.Natural=natural
-Option.Align.twobyte=two byte
-Option.Align.packed=packed
-Option.Align.bitpacked=bit packed
-Option.alloca=Substitute inline code for calls to function alloca(-qalloca)
-Option.Bitfields=Specify if bit fields are signed(-qbitfields)
-Option.Bitfields.signed = signed
-Option.Bitfields.unsigned = unsigned
-Option.Chars=Specify if chars are signed
-Option.chars.signed = signed (-qchars=signed)
-Option.chars.unsigned = unsigned (-qcharse=unsigned)
-Option.enablevmx=Enable generation of VMX instructions(-qenablevmx)
-Option.Enum=Specify the amount of storage occupied by enumerations(-qenum=)
-Option.enum.Int=Int
-Option.enum.Intlong=Intlong
-Option.enum.small=small
-Option.enum.1=1
-Option.enum.2=2
-Option.enum.4=4
-Option.enum.8=8
-Option.Pic=Generate position independent code suitable for use in libraries(-qpic=)
-Option.Pic.Small=Small
-Option.Pic.Large=Large
-Option.noro=Do not place string literals in read only storage (-qnoro)
-Option.noroconst=Do not place constant values in read only storage (-qnoroconst)
-Option.roptr=Place constant pointers in read only storage (-qroptr)\u0020
-Option.Statsym=Generate symbols for static variables (-qstatsym )
-Option.xcall=Generate code to treat static functions as external functions (-qxcall )
-Option.funcsect=Place instructions for each function in a separate object file control section or csect (-qfuncsect)
-Option.ppline=Enable generation of #line directive in the preprocessed output (-qppline)
-Option.upconv=Preserve the unsigned specification when performing integral promotions (-qupconv)
-Option.namemangling=Name mangling scheme for external symbol names (-qnamemangling=)
-Option.namemangling.v10.name=Name mangling scheme for external symbol names (-qnamemangling=)
-Option.namemangling.ansi = ANSI (-qnamemangling=ansi)
-Option.namemangling.v6 = VisualAge(R) C++ v6 (-qnamemangling=v6)
-Option.namemangling.v5 = VisualAge(R) C++ v5 (-qnamemangling=v5)
-Option.namemangling.v4 = VisualAge(R) C++ v4 (-qnamemangling=v4)
-Option.namemangling.v3 = Compatibility mode (-qnamemangling=v3)
-Option.namemangling.v7=IBM XL C/C++ v7 (-qnamemangling=v7)
-Option.namemangling.v8=IBM XL C/C++ v8 (-qnamemangling=v8)
-Option.namemangling.v9=IBM XL C/C++ v9 (-qnamemangling=v9)
-Option.namemangling.v10=IBM XL C/C++ v10 (-qnamemangling=v10)
-Option.objectmodel = Object model (-qobjmodel=)
-Option.objectmodel.classic = classic (-qobjmodel=classic)
-Option.objectmodel.ibm = IBM(R) (-qobjmodel=ibm)
-Option.rtti = Generate RunTime Type Information (-qrtti)
-Option.rtti.all = all (-qrrti=all)
-Option.rtti.type = type (-qrtti=type)
-Option.rtti.dynamiccast = dynamic cast (-qrtti=dynamiccast)
-Option.saveopt = Save the command line compiler options into an object file (-qsaveopt)
-Option.staticinline = Treat inline functions as static (-qstaticinline)
-Option.statsym = Add static variables to the symbol table (-qstatsym)
-Option.threaded = Enable multi-threaded execution (-qthreaded)
-Option.unique = Generate unique names for static constructor/deconstructor file compilation units (-qunique)
-Option.unique.v10 = Generate unique names for static constructor/deconstructor file compilation units (-qunique)
-Option.qconcurrentupdate.v11 = Update the operating system while the kernel is running (-qconcurrentupdate)
-Option.novftable = Do not generate virtual function table (-qnovftable)
-Option.vrsave = Maintain the VRSAVE register (-qvrsave)
-Option.weaksymbol = Generate weak symbols (-qweaksymbol)
-Option.macros=Emit macro definitions to preprocessed output (-qshowmacros)
-Option.macros.all=all (-qshowmacros=all)
-Option.macros.pre=predefined (-qshowmacros=pre)
-Option.macros.nopre=no macros (-qshowmacros=nopre)
-Option.qstackprotect = Protect against malicious code or programming errors that overwrite or corrupt the stack (-qstackprotect=)
-Options.timestamps=Suppress insert of implicit timestamps into an object file (-qnotimestamps)
-Option.qrestrict = Stop pointers from accessing the same memory that has been addressed by function parameter pointers (-qrestrict=)
-
-# Optimization options
-Option.OptLevel = Optimization level
-Option.Optimize.Optimize = -O
-Option.Optimize.Level2 = -O2
-Option.Optimize.Level3 = -O3
-Option.Optimize.Level4 = -O4
-Option.Optimize.Level5 = -O5
-Option.inlining = Function inlining
-Option.inlining.Q = inline all functions (-Q)
-Option.inlining.Qexclamation = disable inlining (-Q!)
-Option.Qplus = Specify functions to be inlined(-Q+name1:name2:...:nameN)
-Option.Qminus = Specify functions to not inline (-Q-name1:name2:...:nameN)
-Option.aggrcopy = Enable destructive copy operations for structs and unions
-Option.aggrcopy.nooverlap=no overlap (-qaggrcopy=nooverlap)
-Option.aggrcopy.overlap=overlap (-qaggrcopy=overlap)
-Option.alias= Apply aliasing instructions to compilation unit (-qalias=)
-Option.alias.addrtaken= Variables are not disjoint from pointers (-qalias=addrtaken)
-Option.alias.noaddrtaken=Variables are disjoint from pointers unless their address is taken (-qalias=notaddrtaken)
-Option.alias.allptrs=Pointers are aliased (-qalias=allptrs)
-Option.alias.noallptrs=Pointers are never aliased (-qalias=noallptrs)
-Option.alias.ansi=Pointers can only point to an object of the same type (-qalias=ansi)
-Option.alias.noansi=Pointers can point to an object of a different type (-qalias=notansi)
-Option.alias.typeptr=Pointers to different types are aliased (-qalias=typeptr)
-Option.alias.notypeptr=Pointers to different types are never aliased (-qalias=notypeptr)
-Option.optimization.arch = Specify the processor architecture to generate code and optimize for (-qarch=)
-Option.optimization.arch.ppc64 = PowerPC(R) 64-bit
-Option.optimization.arch.ppcgr = PowerPC(R) with graphics instructions
-Option.optimization.arch.ppc64gr = PowerPC(R) 64-bit with graphics instructions
-Option.optimization.arch.ppc64grsq = PowerPC(R) 64-bit with graphics and square root instructions
-Option.optimization.arch.ppc64v = PowerPC(R) 64-bit with AltiVec
-Option.optimization.tune = Specify the processor architecture to tune code for (-qtune=)
-Option.optimization.tune.auto = auto
-Option.optimization.assert = Assert program behaviours (-qassert=)
-Option.optimization.Cache = Specify the cache configuration (-qcache=option1:option2:...:optionN)
-Option.compact = Avoid transformations that lead to code expansion (-qcompact)
-Option.optimization.dataimported = Name the variables to be imported (-qdataimported=name1:name2:...:nameN)
-Option.optimization.datalocal = Name the variables which are local (-qdatalocal=name1:name2:...:nameN)
-Option.directstorage = Write-through enabled or cache-inhibited storage may be referenced (-qdirectstorage)
-Option.optimization.exceptionhandling = Exception handling
-Option.optimization.exceptionhandling.eh = Enable exception handling (-qeh)
-Option.optimization.exceptionhandling.noeh = Disable exception handling (-qnoeh)
-Option.optimization.exceptionhandling.v5 = VisualAge(R) C++ v5.0 compatibility
-Option.optimization.exceptionhandling.v6 = VisualAge(R) C++ v6.0 compatibility
-Option.fdpr = Include data required by fdpr utility (-qfdpr)
-Option.optimization.hot = Perform high-order loop analysis and transformations during optimization (-qhot=)
-Option.ignerrno = Perform optimizations which assume errno is not modified by system calls (-qignerrno)
-Option.optimization.inline = Attempt to inline functions (-qinline=)
-Option.optimization.ipa = Customize interprocedural analysis optimizations(-qipa=)
-Option.optimization.isolatedcall = Functions in source file that have no side effects (-qisolated_call=name1:name2:...:nameN)
-Option.optimization.keepinlines =\u0020
-Option.largepage = Exploit large page heaps available on POWER4(TM) systems running AIX(R) 5.1D or later (-qlargepage)
-Option.libansi = Assume all functions in the name of ansi C function are system functions (-qlibansi)
-Option.pdf1 = Tune optimizations through Profile Directed Feedback: first run (-qpdf1)
-Option.pdf2 = Tune optimizations through Profile Directed Feedback: second run (-qpdf2)
-Option.optimization.Prefetch = Disable generation of prefetching instructions in compiled code (-qnoprefetch)
-Option.optimization.procimported = Mark functions as imported (-qprocimported=)
-Option.optimization.proclocal = Mark functions as local (-qlocal=)
-Option.optimization.procunknown = Mark functions as unknown (-qprocunknown=)
-Option.optimization.showpdf = Add additional call and block count profiling information to the executable (-qshowpdf)
-Option.optimization.smallstack = Reduce the size of the stack frame (-qsmallstack)
-Option.optimization.smp = Enable parallelization of code (-qsmp)
-Option.optimization.smp.v10 = Specify parallelization of code (-qsmp=name1:name2:...:nameN)
-Option.optimization.smp.v10.tooltip=Possible values: nostackcheck, opt, norec_locks, noomp, nonested_par, \nexplicit, auto, omp, nested_par, noauto, noexplicit, noopt, rec_locks, \nschedule=(runtime | auto | affinity=n | dynamic=n | guided=n | static=n), stackcheck, threshold=n
-Option.optimization.Spill = Specify the register allocation spill area (-qspill=)
-Option.optimization.Strict=Turn off aggressive optimizations (-qstrict)
-Option.optimization.Strict.v10 = Specify the optimizations (-qstrict=name1:name2:...:nameN)
-Option.optimization.Strict.v10.tooltip=Possible values: all, none, precision, noprecision, exceptions, noexceptions, \nieeefp, noieeefp, nans, nonans, infinities, noinfinities, subnormals, nosubnormals, \nzerosigns, nozerosigns, operationprecision, nooperationprecision, order, noorder, \nassociation, noassociation, reductionorder, noreductionorder, guards, noguards, library, nolibrary
-Option.optimization.loopinduction = Loop induction settings
-Option.optimization.strict_induction = Strict induction
-Option.optimization.nostrict_induction = No induction
-Option.optimization.tocdata = Mark data as local
-Option.optimization.w = Specify options to pass to specific compiler components (-W)
-Option.optimization.qassert = Provide information about the characteristics of the files that can help to fine-tune optimizations (-qassert=)
-Option.optimization.qassert.norefalign = norefalign
-Option.optimization.qassert.refalign = refalign
-Option.optimization.qlibmpi = Assert that functions with MPI names are in fact MPI functions (-qlibmpi)
-Option.optimization.qsimd = Let the compiler automatically take advantage of vector instructions for processors that support them (-qsimd)
-Option.optimization.qprefetch = Insert prefetch instructions automatically where there are opportunities to improve code performance (-qprefetch)
-
-# Linker Options
-Option.Linking.b = Control how shared objects are processed by the editor (-b)
-Option.linking.brtl = Enable runtime linking for the output file (-brtl)
-Option.Linking.e = Set the entry name for the shared executable(-e )
-Option.Linking.f =\u0020
-Option.linking.G = Create a shared object enabled for runtime linking (-G)
-Option.Linking.L = Search the path directory for the library files specified by the -lkey option (-L)
-Option.Linking.l = Search the specified library file(-l)
-Option.linking.r = Produce a relocatable object (-r)
-Option.Linking.Z = Specify a prefix for library search path (-Z)
-Option.linking.inlglue = Generate fast external linkage (-qinlglue)
-Option.linking.lib = Link with standard system libraries (-qlib)
-Option.Linking.mkshrobj = Create a shared object from generated object files (-qmkshrobj)
-Option.Linking.priority = Specify the priority level for initialization of static objects (-qpriority)
-Option.Linker.EnableRun=Enable Run time linking (-brtl)
-Option.Linker.NoStartFiles=Do not use standard start files (-nostartfiles)
-Option.Linker.NoDefLibs=Do not use default libraries (-nodefaultlibs)
-Option.Linker.NoStdLibs=No startup or default libs (-nostdlib)
-Option.Linker.Strip=Strip all symbol information (-s)
-Option.Linker.Strip.debug=Strip debug symbol information (-S)
-Option.Linker.Static=No shared libraries (-bstatic)
-Option.Linker.WLinker=Other options (-Wl, [option1,option2,...optionN])
-Option.Linker.Flags=Other linker flags
-Option.Libs=Libraries (-l)
-Option.Libsearch=Library search path (-L)
-Option.UserObjs=Other objects
-Option.Linker.Shared=Shared (-qmkshrobj)
-Option.Linker.SOName=Shared object name (-o=)
-Option.Linker.Implib=Import Library name (-Wl,--out-implib=)
-Option.Linker.Defname=DEF file name (-Wl,--output-def=)
-Option.linking.bundle = Create a bundle (-bundle)
-Option.linking.bundle_loader = Specify the name of bundle loader program (-bundle_loader=)
-Option.linking.f = Specify file containing a list of object files for the compiler to pass to the linker (-f)
-Option.linking.expfile = Save all the exported symbols in the designated file (-qexpfile=)
-
-#Archiver options
-Option.Archiver.Flags=Other archiver flags
-
-# Integer and Floating Point options
-Option.y = Specify compile time rounding mode (-y)
-Option.y.n = n
-Option.y.m = m
-Option.y.p = p
-Option.y.z = z
-Option.float = Specify floating point options (-qfloat=)
-Option.flttrap = Trap floating point exceptions (-qflttrap=)
-Option.longlong = Allow long long integer types in the program
-Option.longlong.longlong = Allow long long (-qlonglong)
-Option.longlong.nolonglong = Do not allow long long (-qnolonglong)
-Option.rndflt = Control compile-time rounding mode of floating point expressions( -qrndflt)
-Option.rndflt.nearest = Nearest
-Option.rndflt.minusinf = Minus infinity
-Option.rndflt.plusinf = Plus infinity
-Option.rndflt.zero = Zero
-Option.dfp = Decimal floating-point support for types and literals
-Option.dfp.enabled = Enabled (-qdfp)
-Option.dfp.disabled = Disabled (-qnodfp)
-
-# Compiler Customization options
-Option.B = Determine substitute program path name (-B)
-Option.F = Specify alternate configuration file (-F)
-Option.t = Add prefix to designated programs (-t)
-Option.maxmem = Amount of memory used during optimization (-qmaxmem=)
-Option.path = Alternate program name for compiler components (-qpath=)
-Option.tls = Specify the thread local storage model (-qtls=)
-Option.tls.unsupported=unsupported
-Option.tls.default=default
-Option.tls.global-dynamic=global-dynamic
-Option.tls.initial-exec=initial-exec
-Option.tls.local-dynamic=local-dynamic
-Option.tls.local-exec=local-exec
-Option.tls.notls=No tls
-
-# Listings and Messages options
-Option.V = Report information on the progress of compilation (-V)
-Option.Warn.Pedandic=Pedantic (-pedantic)
-Option.Warn.PedErrors=Pedantic warnings as errors (-pedantic-errors)
-Option.Warn.nowarn=Inhibit all warnings (-w)
-Option.Warn.allwarn=All warnings (-Wall)
-Option.Warn.toerrs=Warnings as errors (-Werror)
-Option.attr = Produce a compiler listing (-qattr)
-Option.attr.noattr = Does not produce an attribute listing for identifiers in program (-qnoattr)
-Option.attr.fullattr = Report attributes of all identifiers (-qattr=full)
-Option.attr.attr = Report attributes of only used identifiers (-qattr)
-Option.flag = Specify the minimum severity level of the diagnostic messages (-qflag=)
-Option.format = Warn of possible problems with string input and output format specifications (-qformat=)
-Option.qskipsrc = Hide the source statements skipped by the compiler (-qskipsrc = hide)
-Option.halt = Instruct the compiler to stop after compilation if it encounters errors of specified severity or higher (-qhalt=)
-Option.halt.information = Information (-qhalt=i)
-Option.halt.warning = Warning (-qhalt=w)
-Option.halt.error = Error (-qhalt=e)
-Option.halt.severeError = Severe error (-qhalt=s)
-Option.halt.unrecoverableError = Unrecoverable error (-qhalt=u)
-Option.info = Produce informational messages (-qinfo=)
-Option.list = Produce a compiler listing that includes an object listing (-qlist)
-Option.listopt = Produce a compiler listing that displays all options in effect(-qlistopt)
-Option.phsinfo = Report the time taken in each compilation phase (-qphsinfo)
-Option.noprint = Suppress all listings (-qnoprint )
-Option.showinc = Show all included files in the source listing (-qshowinc)
-Option.source = Produce a compiler listing and include the source code (-qsource)
-Option.srcmsg = Add the corresponding source code lines to the diagnostic messages in stderr file (-qsrcmsg)
-Option.suppress = Suppress the specified informational or warning messages (-qsuppress=)
-Option.tabsize = Change the tab-size (-qtabsize=)
-Option.xref = Produce a cross reference listing of identifiers (-qxref)
-Option.xref.noxref = Do not report identifiers in the program (-qnoxref)
-Option.xref.fullxref = Report all the identifiers in the program (-qxref = full)
-Option.xref.xref = Report only those identifiers which are used (-qxref)
-Option.warnfourcharconsts = Enable warning of four-character constants in source
-Option.report = Produce listing files that show how sections of code have been optimized (-qreport)
-Option.qlistfmt = Creates a report to assist with finding optimization opportunities (-qlistfmt)
-
-# Error Checking and Debugging
-Option.g = Generate debugging information (-g)
-Option.optdebug = Enable debugging of optimized code (-qoptdebug)
-Option.DebugLevel=Debug Level
-Option.Debug.Min=Minimal (-g1)
-Option.Debug.Def=Default (-g)
-Option.Debug.Max=Maximum (-g3)
-Option.Debug.Other=Other debugging flags
-Option.Debug.gprof=Generate gprof information (-pg)
-Option.Debug.prof=Generate prof information (-p)
-Option.Debug.Unref=Include information about unreferenced symbols (-qdbxextra)
-Option.p = Generate prof information (-p)
-Option.pg = Generate gprof information (-pg)
-Option.check = Generate code which performs certain types of runtime checking (-qcheck)
-Option.dbxextra = Include all typedefs, structs, unions, enums for debugging (-qdbxextra)
-Option.extchk = Generate bind-time type checking information and check for compile time consistency (-qextchk)
-Option.fullpath = Preserve absolute path name of source files used with -g option (-qfullpath)
-Option.genproto = Produce ANSI prototypes from K&R definitions
-Option.genproto.general = Generate prototypes with parameter names
-Option.genproto.parmgenproto = Include parameter names in prototypes
-Option.heapdebug = Enable debug versions of memory management functions (-qheapdebug)
-Option.initauto = Initialize the automatic variables (-qinitauto=)
-Option.linedebug = Generate line number and source file name info for the debugger (-qlinedebug)
-Option.maxerr = Halt compilation after this many errors (-qmaxerr=)
-Option.proto = All functions are prototyped (-qproto)
-Option.qfunctrace = Enable tracing for all functions in your program (-qfunctrace)
-
-# Assembler options
-Option.Xlc.Assembler.Flags=Other assembler flags
-Option.Xlc.Assembler.warn.suppress=Suppress warnings (-W)
-Option.Xlc.Assembler.version=Announce version (-v)
-
-
-# XL C/C++ Preference page
-XLCompilerPreferencePage.name = XL C/C++ Compiler
-XLCompilerPropertyPage.name = XL C/C++ Compiler
-
-
-
-
-extension.name = Managed Build Tools Description
-tool.name = Abstract XL Compiler
-tool.name.0 = Abstract XL Linker
-tool.name.1 = Abstract XL Shared Object Linker
-tool.compiler.c.abstract = Abstract XL C Compiler
-tool.compiler.cpp.abstract = Abstract XL C++ Compiler
-tool.compiler.abstract = Abstract XL Compiler
-tool.linker.exe.abstract.name = Abstract XL Linker
-tool.linker.so.abstract.name = Abstract XL Shared Object Linker
-tool.c.compiler.name = Local XL C Compiler
-inputType.c.name = Local C Sources
-tool.cpp.compiler.name = Local XL C++ Compiler
-inputType.c.name.2 = Local C Sources
-inputType.cpp.name = Local C++ Sources \ No newline at end of file
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/plugin.xml b/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/plugin.xml
deleted file mode 100644
index c8efec759fe..00000000000
--- a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/plugin.xml
+++ /dev/null
@@ -1,3848 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.2"?>
-<plugin>
-
-
-<!-- Managed Make Builder Tool Specifications -->
- <extension
- id="cdt.managed.build.info"
- name="%extension.name"
- point="org.eclipse.cdt.managedbuilder.core.buildDefinitions">
- <managedBuildRevision
- fileVersion="4.0.0">
- </managedBuildRevision>
- <tool
- command="${XL_compilerRoot}/xlc"
- id="cdt.managedbuild.tool.xlc.c.linker"
- name="%ToolName.linker.xlc.c"
- natureFilter="cnature"
- superClass="org.eclipse.cdt.managedbuilder.xlc.ui.tool.abstractLinker">
- </tool>
- <tool
- command="${XL_compilerRoot}/xlC"
- id="cdt.managedbuild.tool.xlc.cpp.linker"
- name="%ToolName.linker.xlc.cpp"
- natureFilter="ccnature"
- superClass="org.eclipse.cdt.managedbuilder.xlc.ui.tool.abstractLinker">
- </tool>
- <tool
- natureFilter="both"
- isAbstract="true"
- name="%ToolName.archiver.xlc"
- command="ar -rv"
- id="cdt.managedbuild.tool.xlc.archiver">
- <optionCategory
- name="%OptionCategory.General"
- id="xlc.lib.category.general">
- </optionCategory>
- <option
- defaultValue="-r"
- name="%Option.Archiver.Flags"
- category="xlc.lib.category.general"
- valueType="string"
- id="xlc.both.lib.option.flags">
- </option>
- <inputType
- sourceContentType="org.eclipse.cdt.managedbuilder.core.compiledObjectFile"
- sources="o"
- multipleOfType="true"
- dependencyCalculator="org.eclipse.cdt.managedbuilder.makegen.internal.DefaultNoDependencyCalculator"
- buildVariable="OBJS"
- id="cdt.managedbuild.tool.xlc.archiver.input">
- <additionalInput
- paths="$(USER_OBJS)"
- kind="additionalinputdependency">
- </additionalInput>
- <additionalInput
- paths="$(LIBS)"
- kind="additionalinput">
- </additionalInput>
- </inputType>
- <outputType
- outputs="a"
- outputPrefix="lib"
- buildVariable="ARCHIVES"
- nameProvider="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuLinkOutputNameProvider"
- id="cdt.managedbuild.tool.xlc.archiver.output">
- </outputType>
- </tool>
- <tool
- command="${XL_compilerRoot}/xlc"
- id="cdt.managedbuild.tool.xlc.c.linker.so"
- isAbstract="false"
- name="%ToolName.linker.xlc.c.so"
- natureFilter="cnature"
- superClass="org.eclipse.cdt.managedbuilder.xlc.ui.tool.linker.abstractSOLinker">
- </tool>
- <tool
- command="${XL_compilerRoot}/xlC"
- id="cdt.managedbuild.tool.xlc.cpp.linker.so"
- isAbstract="false"
- name="%ToolName.linker.xlc.cpp.so"
- natureFilter="ccnature"
- superClass="org.eclipse.cdt.managedbuilder.xlc.ui.tool.linker.abstractSOLinker">
- </tool>
- <tool
- command="as"
- name="%ToolName.assembler.xlc"
- outputFlag="-o"
- id="cdt.managedbuild.tool.xlc.assembler"
- natureFilter="both">
- <optionCategory
- name="%OptionCategory.Assembler"
- id="xlc.asm.category.assembler">
- </optionCategory>
- <option
- command="-W"
- defaultValue="false"
- valueType="boolean"
- category="xlc.asm.category.assembler"
- name="%Option.Xlc.Assembler.warn.suppress"
- id="xlc.both.asm.option.warnings.nowarn"/>
- <option
- command="-v"
- defaultValue="false"
- valueType="boolean"
- category="xlc.asm.category.assembler"
- name="%Option.Xlc.Assembler.version"
- id="xlc.both.asm.option.version"/>
- <option
- name="%Option.Xlc.Assembler.Flags"
- category="xlc.asm.category.assembler"
- valueType="string"
- id="xlc.both.asm.option.flags">
- </option>
- <inputType
- sourceContentType="org.eclipse.cdt.core.asmSource"
- sources="s,S"
- id="cdt.managedbuild.tool.xlc.assembler.input">
- </inputType>
- <outputType
- outputs="o"
- buildVariable="OBJS"
- id="cdt.managedbuild.tool.xlc.assembler.output">
- </outputType>
- </tool>
- <tool
- command="${XL_compilerRoot}/xlc"
- id="cdt.managedbuild.tool.xlc.c.compiler.abstract"
- isAbstract="true"
- name="%tool.compiler.c.abstract"
- natureFilter="both"
- outputFlag="-o"
- superClass="org.eclipse.cdt.managedbuilder.xlc.ui.tool.abstractCompiler">
- <option
- name="%Option.Cstdinc"
- category="xlc.c.compiler.category.Input"
- command="-qc_stdinc"
- id="xlc.c.compiler.option.include.cstdinc"
- valueType="includePath"
- browseType="directory">
- </option>
- <option
- defaultValue="false"
- name="%Option.Nocplus"
- category="xlc.c.compiler.category.Input"
- command="-qnocpluscmt"
- id="xlc.c.compiler.option.input.nocplus"
- valueType="boolean">
- </option>
- <option
- browseType="directory"
- category="xlc.c.compiler.category.Input"
- command="-qgcc_c_stdinc"
- id="xlc.c.compiler.option.input.gcc_c_stdinc"
- isAbstract="false"
- name="%Option.gcc_c_stdinc"
- resourceFilter="all"
- valueType="includePath">
- </option>
- <option
- defaultValue="false"
- name="%Option.Pascal"
- category="xlc.c.compiler.category.Input"
- command="-qpascal"
- id="xlc.c.compiler.option.misc.pascal"
- valueType="boolean">
- </option>
- <option
- defaultValue="false"
- name="%Option.Warn.Syntax"
- category="xlc.c.compiler.category.Input"
- command="-qsyntaxonly"
- id="xlc.c.compiler.option.warnings.syntax"
- valueType="boolean">
- </option>
- <option
- defaultValue="false"
- name="%Option.ma"
- category="xlc.c.compiler.category.output"
- command="-ma"
- id="xlc.c.compiler.option.preprocessor.ma"
- valueType="boolean">
- </option>
- <option
- category="xlc.c.compiler.category.output"
- command="-qupconv"
- defaultValue="false"
- id="org.eclipse.cdt.managedbuilder.xlc.ui.option12"
- isAbstract="false"
- name="%Option.upconv"
- resourceFilter="all"
- valueType="boolean">
- </option>
- <option
- name="%Option.Qplus"
- category="xlc.c.compiler.category.optimization"
- command="-Q+="
- id="xlc.c.compiler.option.optimization.Qplus"
- valueType="string">
- </option>
- <option
- name="%Option.Qminus"
- category="xlc.c.compiler.category.optimization"
- command="-Q-="
- id="xlc.c.compiler.option.optimization.Qminus"
- valueType="string">
- </option>
- <option
- id="xlc.c.compiler.option.input.D.c"
- superClass="xlc.c.compiler.option.input.D">
- <listOptionValue
- builtIn="true"
- value="__xlc__">
- </listOptionValue>
- <listOptionValue
- builtIn="true"
- value="__IBMC__">
- </listOptionValue>
- </option>
- <option
- applicabilityCalculator="org.eclipse.cdt.managedbuilder.xlc.ui.properties.XLCApplicabilityCalculator"
- category="xlc.c.compiler.category.objcc"
- command="-qunique"
- defaultValue="false"
- id="org.eclipse.cdt.managedbuilder.xlc.ui.cpp.option.output.unique.v10"
- isAbstract="false"
- name="%Option.unique.v10"
- resourceFilter="all"
- valueType="boolean">
- </option>
- <option
- applicabilityCalculator="org.eclipse.cdt.managedbuilder.xlc.ui.properties.XLCApplicabilityCalculator"
- category="xlc.c.compiler.category.objcc"
- command="-qconcurrentupdate"
- defaultValue="false"
- id="org.eclipse.cdt.managedbuilder.xlc.ui.cpp.option.output.qconcurrentupdate"
- isAbstract="false"
- name="%Option.qconcurrentupdate.v11"
- resourceFilter="all"
- valueType="boolean">
- </option>
- <option
- applicabilityCalculator="org.eclipse.cdt.managedbuilder.xlc.ui.properties.XLCApplicabilityCalculator"
- category="xlc.c.compiler.category.optimization"
- command="-qrestrict"
- id="xlc.c.compiler.option.optimization.qrestrict"
- name="%Option.qrestrict"
- valueType="string">
- </option>
- </tool>
- <tool
- command="${XL_compilerRoot}/xlC"
- id="cdt.managedbuild.tool.xlc.cpp.compiler.abstract"
- isAbstract="true"
- name="%tool.compiler.cpp.abstract"
- natureFilter="ccnature"
- outputFlag="-o"
- superClass="org.eclipse.cdt.managedbuilder.xlc.ui.tool.abstractCompiler">
- <option
- category="xlc.c.compiler.category.Input"
- command="-+"
- defaultValue="false"
- id="org.eclipse.cdt.managedbuilder.xlc.cpp.option.plus"
- isAbstract="false"
- name="%Option.plus"
- resourceFilter="all"
- valueType="boolean">
- </option>
- <option
- category="xlc.c.compiler.category.Input"
- command="-qcinc"
- id="org.eclipse.cdt.managedbuilder.xlc.ui.cpp.opntion.qcinc"
- isAbstract="false"
- name="%Option.cinc"
- resourceFilter="all"
- valueType="stringList">
- </option>
- <option
- browseType="directory"
- category="xlc.c.compiler.category.Input"
- command="-qcpp_stdinc"
- id="org.eclipse.cdt.managedbuilder.xlc.ui.cpp.option.cpp_stdinc"
- isAbstract="false"
- name="%Option.cppstdinc"
- resourceFilter="all"
- valueType="includePath">
- </option>
- <option
- category="xlc.c.compiler.category.Input"
- command="-qgcc_cpp_stdinc"
- id="org.eclipse.cdt.managedbuilder.xlc.ui.cpp.option.gcc_cpp_stdinc"
- isAbstract="false"
- name="%Option.gcc_cpp_stdinc"
- resourceFilter="all"
- valueType="string">
- </option>
- <option
- applicabilityCalculator="org.eclipse.cdt.managedbuilder.xlc.ui.properties.XLCApplicabilityCalculator"
- category="xlc.c.compiler.category.output"
- id="org.eclipse.cdt.managedbuilder.xlc.ui.cpp.option.namemangling"
- isAbstract="false"
- name="%Option.namemangling"
- resourceFilter="all"
- valueType="enumerated">
- <enumeratedOptionValue
- id="org.eclipse.cdt.managedbuilder.xlc.ui.cpp.option.namemangling.default"
- isDefault="true"
- name="%Option.default">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qnamemangling=ansi"
- id="org.eclipse.cdt.managedbuilder.xlc.ui.cpp.option.namemangling.ansi"
- name="%Option.namemangling.ansi">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qnamemangling=v6"
- id="org.eclipse.cdt.managedbuilder.xlc.ui.enumeratedOptionValue22"
- name="%Option.namemangling.v6">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qnamemangling=v5"
- id="org.eclipse.cdt.managedbuilder.xlc.ui.cpp.option.namemangling.v5"
- name="%Option.namemangling.v5">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qnamemangling=v4"
- id="org.eclipse.cdt.managedbuilder.xlc.ui.cpp.option.namemangling.v4"
- name="%Option.namemangling.v4">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qnamemangling=v3"
- id="org.eclipse.cdt.managedbuilder.xlc.ui.cpp.option.namemangling.v3"
- name="%Option.namemangling.v3">
- </enumeratedOptionValue>
- </option>
- <option
- applicabilityCalculator="org.eclipse.cdt.managedbuilder.xlc.ui.properties.XLCApplicabilityCalculator"
- category="xlc.c.compiler.category.output"
- id="org.eclipse.cdt.managedbuilder.xlc.ui.cpp.option.namemangling.v10"
- isAbstract="false"
- name="%Option.namemangling.v10.name"
- resourceFilter="all"
- valueType="enumerated">
- <enumeratedOptionValue
- id="org.eclipse.cdt.managedbuilder.xlc.ui.cpp.option.namemangling.default"
- isDefault="true"
- name="%Option.default">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qnamemangling=ansi"
- id="org.eclipse.cdt.managedbuilder.xlc.ui.cpp.option.namemangling.ansi"
- name="%Option.namemangling.ansi">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qnamemangling=v10"
- id="org.eclipse.cdt.managedbuilder.xlc.ui.cpp.option.namemangling.v10"
- name="%Option.namemangling.v10">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qnamemangling=v9"
- id="org.eclipse.cdt.managedbuilder.xlc.ui.cpp.option.namemangling.v9"
- name="%Option.namemangling.v9">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qnamemangling=v8"
- id="org.eclipse.cdt.managedbuilder.xlc.ui.cpp.option.namemangling.v8"
- name="%Option.namemangling.v8">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qnamemangling=v7"
- id="org.eclipse.cdt.managedbuilder.xlc.ui.cpp.option.namemangling.v7"
- name="%Option.namemangling.v7">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qnamemangling=v6"
- id="org.eclipse.cdt.managedbuilder.xlc.ui.enumeratedOptionValue22"
- name="%Option.namemangling.v6">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qnamemangling=v5"
- id="org.eclipse.cdt.managedbuilder.xlc.ui.cpp.option.namemangling.v5"
- name="%Option.namemangling.v5">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qnamemangling=v4"
- id="org.eclipse.cdt.managedbuilder.xlc.ui.cpp.option.namemangling.v4"
- name="%Option.namemangling.v4">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qnamemangling=v3"
- id="org.eclipse.cdt.managedbuilder.xlc.ui.cpp.option.namemangling.v3"
- name="%Option.namemangling.v3">
- </enumeratedOptionValue>
- </option>
- <option
- category="xlc.c.compiler.category.output"
- id="org.eclipse.cdt.managedbuilder.xlc.ui.cpp.option.objectmodel"
- isAbstract="false"
- name="%Option.objectmodel"
- resourceFilter="all"
- valueType="enumerated">
- <enumeratedOptionValue
- id="org.eclipse.cdt.managedbuilder.xlc.ui.cpp.option.objectmodel.default"
- isDefault="true"
- name="%Option.default">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qobjmodel=classic"
- id="org.eclipse.cdt.managedbuilder.xlc.ui.cpp.option.objectmodel.classic"
- name="%Option.objectmodel.classic">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qobjmodel=ibm"
- id="org.eclipse.cdt.managedbuilder.xlc.ui.cpp.option.objectmodel.ibm"
- name="%Option.objectmodel.ibm">
- </enumeratedOptionValue>
- </option>
- <option
- category="xlc.c.compiler.category.output"
- id="org.eclipse.cdt.managedbuilder.xlc.ui.cpp.option.output.rtti"
- isAbstract="false"
- name="%Option.rtti"
- resourceFilter="all"
- valueType="enumerated">
- <enumeratedOptionValue
- id="org.eclipse.cdt.managedbuilder.xlc.ui.cpp.option.output.rtti.default"
- isDefault="true"
- name="%Option.default">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qnortti"
- id="org.eclipse.cdt.managedbuilder.xlc.ui.cpp.option.output.rtti.none"
- isDefault="false"
- name="%Option.none">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qrtti=all"
- id="org.eclipse.cdt.managedbuilder.xlc.ui.cpp.option.output.rtti.all"
- name="%Option.rtti.all">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qrtti=type"
- id="org.eclipse.cdt.managedbuilder.xlc.ui.cpp.option.output.rtti.type"
- name="%Option.rtti.type">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qrtti=dynamiccast"
- id="org.eclipse.cdt.managedbuilder.xlc.ui.cpp.option.output.rtti.dynamiccast"
- name="%Option.rtti.dynamiccast">
- </enumeratedOptionValue>
- </option>
- <option
- category="xlc.c.compiler.category.objcc"
- command="-qunique"
- defaultValue="false"
- id="org.eclipse.cdt.managedbuilder.xlc.ui.cpp.option.output.unique"
- isAbstract="false"
- name="%Option.unique"
- resourceFilter="all"
- valueType="boolean">
- </option>
- <option
- category="xlc.c.compiler.category.output"
- command="-qnovftable"
- defaultValue="false"
- id="org.eclipse.cdt.managedbuilder.xlc.ui.option6"
- isAbstract="false"
- name="%Option.novftable"
- resourceFilter="all"
- valueType="boolean">
- </option>
- <option
- id="xlc.c.compiler.option.optimization.exceptionhandling"
- isAbstract="false"
- name="%Option.optimization.exceptionhandling"
- resourceFilter="all"
- valueType="enumerated">
- <enumeratedOptionValue
- id="xlc.c.compiler.option.optimization.exceptionhandling.default"
- isDefault="true"
- name="%Option.default">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qeh"
- id="xlc.c.compiler.option.optimization.exceptionhandling.eh"
- name="%Option.optimization.exceptionhandling.eh">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qnoeh"
- id="xlc.c.compiler.option.optimization.exceptionhandling.noeh"
- name="%Option.optimization.exceptionhandling.noeh">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qeh=v5"
- id="xlc.c.compiler.option.optimization.exceptionhandling.v5"
- name="%Option.optimization.exceptionhandling.v5">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qeh=v6"
- id="xlc.c.compiler.option.optimization.exceptionhandling.v6"
- name="%Option.optimization.exceptionhandling.v6">
- </enumeratedOptionValue>
- </option>
- <option
- id="xlc.c.compiler.option.input.D.cpp"
- superClass="xlc.c.compiler.option.input.D">
- <listOptionValue
- builtIn="true"
- value="__xlC__">
- </listOptionValue>
- <listOptionValue
- builtIn="true"
- value="__IBMCPP__">
- </listOptionValue>
- </option>
- </tool>
- <projectType
- buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe"
- id="cdt.managedbuild.target.xlc.exe"
- isAbstract="false"
- isTest="false"
- name="%TargetName.xlc.exe"
- projectMacroSupplier="org.eclipse.cdt.managedbuilder.xlc.ui.XLCProjectMacroSupplier">
- <configuration
- artifactExtension="exe"
- cleanCommand="rm -rf"
- errorParsers="org.eclipse.cdt.errorparsers.xlc.XlcErrorParser"
- id="cdt.managedbuild.config.xlc.exe.debug"
- languageSettingsProviders="org.eclipse.cdt.ui.UserLanguageSettingsProvider;org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider;org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider;${Toolchain};-org.eclipse.cdt.managedbuilder.xlc.core.XlcBuildCommandParser"
- name="%ConfigName.Dbg">
- <toolChain
- archList="all"
- configurationEnvironmentSupplier="org.eclipse.cdt.managedbuilder.xlc.aix.AixConfigurationEnvironmentSupplier"
- id="cdt.managedbuild.toolchain.xlc.exe.debug"
- name="%ToolChainName.Dbg"
- osList="all"
- languageSettingsProviders="org.eclipse.cdt.managedbuilder.xlc.core.XlcBuildCommandParser;org.eclipse.cdt.managedbuilder.xlc.core.XlcBuiltinSpecsDetector"
- targetTool="cdt.managedbuild.tool.xlc.c.linker.exe.debug;cdt.managedbuild.tool.xlc.cpp.linker.exe.debug">
- <targetPlatform
- id="cdt.managedbuild.target.xlc.platform.exe.debug"
- name="%PlatformName.Dbg"
- osList="all"
- archList="all">
- </targetPlatform>
- <builder
- superClass="cdt.managedbuild.target.gnu.builder"
- id="org.eclipse.cdt.manangedbuilder.xlc.builder.exe.debug">
- </builder>
- <tool
- id="cdt.managedbuild.tool.xlc.cpp.compiler.exe.debug"
- superClass="cdt.managedbuild.tool.xlc.cpp.compiler">
- <option
- id="xlc.cpp.compiler.exe.debug.option.optimization.level"
- defaultValue="xlc.c.compiler.optimization.level.none"
- superClass="xlc.c.compiler.option.optimization.level">
- </option>
- <option
- id="xlc.cpp.compiler.exe.debug.option.debugging.g"
- defaultValue="true"
- superClass="xlc.c.compiler.option.ecd.g">
- </option>
- </tool>
- <tool
- id="cdt.managedbuild.tool.xlc.c.compiler.exe.debug"
- superClass="cdt.managedbuild.tool.xlc.c.compiler">
- <option
- id="xlc.c.compiler.exe.debug.option.optimization.level"
- defaultValue="xlc.c.optimization.level.none"
- superClass="xlc.c.compiler.option.optimization.level">
- </option>
- <option
- id="xlc.c.compiler.exe.debug.option.debugging.g"
- defaultValue="true"
- superClass="xlc.c.compiler.option.ecd.g">
- </option>
- </tool>
- <tool
- id="cdt.managedbuild.tool.xlc.c.linker.exe.debug"
- superClass="cdt.managedbuild.tool.xlc.c.linker">
- </tool>
- <tool
- id="cdt.managedbuild.tool.xlc.cpp.linker.exe.debug"
- superClass="cdt.managedbuild.tool.xlc.cpp.linker">
- </tool>
- <tool
- id="cdt.managedbuild.tool.xlc.assembler.exe.debug"
- superClass="cdt.managedbuild.tool.xlc.assembler">
- </tool>
- </toolChain>
- </configuration>
- <configuration
- name="%ConfigName.Rel"
- artifactExtension="exe"
- cleanCommand="rm -rf"
- errorParsers="org.eclipse.cdt.errorparsers.xlc.XlcErrorParser"
- languageSettingsProviders="org.eclipse.cdt.ui.UserLanguageSettingsProvider;org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider;org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider;${Toolchain};-org.eclipse.cdt.managedbuilder.xlc.core.XlcBuildCommandParser"
- id="cdt.managedbuild.config.xlc.exe.release">
- <toolChain
- archList="all"
- id="cdt.managedbuild.toolchain.xlc.exe.release"
- name="%ToolChainName.Rel"
- osList="all"
- languageSettingsProviders="org.eclipse.cdt.managedbuilder.xlc.core.XlcBuildCommandParser;org.eclipse.cdt.managedbuilder.xlc.core.XlcBuiltinSpecsDetector"
- targetTool="cdt.managedbuild.tool.xlc.c.linker.exe.release;cdt.managedbuild.tool.xlc.cpp.linker.exe.release">
- <targetPlatform
- id="cdt.managedbuild.target.xlc.platform.exe.release"
- name="%PlatformName.Rel"
- osList="all"
- archList="all">
- </targetPlatform>
- <builder
- superClass="cdt.managedbuild.target.gnu.builder"
- id="org.eclipse.cdt.managedbuilder.xlc.builder.release">
- </builder>
- <tool
- id="cdt.managedbuild.tool.xlc.cpp.compiler.exe.release"
- superClass="cdt.managedbuild.tool.xlc.cpp.compiler">
- <option
- id="xlc.cpp.compiler.exe.release.option.optimization.level"
- defaultValue="xlc.c.optimization.level.Level5"
- superClass="xlc.c.compiler.option.optimization.level">
- </option>
- <option
- id="xlc.cpp.compiler.exe.release.option.debugging.g"
- defaultValue="false"
- superClass="xlc.c.compiler.option.ecd.g">
- </option>
- </tool>
- <tool
- id="cdt.managedbuild.tool.xlc.c.compiler.exe.release"
- superClass="cdt.managedbuild.tool.xlc.c.compiler">
- <option
- id="xlc.c.compiler.exe.release.option.optimization.level"
- defaultValue="xlc.c.optimization.level.Level5"
- superClass="xlc.c.compiler.option.optimization.level">
- </option>
- <option
- id="xlc.c.compiler.exe.release.option.debugging.g"
- defaultValue="false"
- superClass="xlc.c.compiler.option.ecd.g">
- </option>
- </tool>
- <tool
- id="cdt.managedbuild.tool.xlc.c.linker.exe.release"
- superClass="cdt.managedbuild.tool.xlc.c.linker">
- </tool>
- <tool
- id="cdt.managedbuild.tool.xlc.cpp.linker.exe.release"
- superClass="cdt.managedbuild.tool.xlc.cpp.linker">
- </tool>
- <tool
- id="cdt.managedbuild.tool.xlc.assembler.exe.release"
- superClass="cdt.managedbuild.tool.xlc.assembler">
- </tool>
- </toolChain>
- </configuration>
- </projectType>
- <projectType
- buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.sharedLib"
- id="cdt.managedbuild.target.xlc.so"
- isAbstract="false"
- isTest="false"
- name="%TargetName.xlc.so"
- projectMacroSupplier="org.eclipse.cdt.managedbuilder.xlc.ui.XLCProjectMacroSupplier">
- <configuration
- name="%ConfigName.Dbg"
- cleanCommand="rm -rf"
- artifactExtension="so"
- errorParsers="org.eclipse.cdt.errorparsers.xlc.XlcErrorParser"
- languageSettingsProviders="org.eclipse.cdt.ui.UserLanguageSettingsProvider;org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider;org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider;${Toolchain};-org.eclipse.cdt.managedbuilder.xlc.core.XlcBuildCommandParser"
- id="cdt.managedbuild.config.xlc.so.debug">
- <toolChain
- id="cdt.managedbuild.toolchain.xlc.so.debug"
- languageSettingsProviders="org.eclipse.cdt.managedbuilder.xlc.core.XlcBuildCommandParser;org.eclipse.cdt.managedbuilder.xlc.core.XlcBuiltinSpecsDetector"
- name="%ToolChainName.Dbg"
- targetTool="cdt.managedbuild.tool.xlc.c.linker.so.debug;cdt.managedbuild.tool.xlc.cpp.linker.so.debug">
- <targetPlatform
- id="cdt.managedbuild.target.xlc.platform.so.debug"
- name="%PlatformName.Dbg"
- osList="all"
- archList="all">
- </targetPlatform>
- <builder
- superClass="cdt.managedbuild.target.gnu.builder"
- id="org.eclipse.cdt.managedbuilder.xlc.builder.so.debug">
- </builder>
- <tool
- id="cdt.managedbuild.tool.xlc.cpp.compiler.so.debug"
- superClass="cdt.managedbuild.tool.xlc.cpp.compiler">
- <option
- id="xlc.cpp.compiler.so.debug.option.optimization.level"
- defaultValue="xlc.ccompiler.optimization.level.none"
- superClass="xlc.c.compiler.option.optimization.level">
- </option>
- <option
- id="xlc.cpp.compiler.so.debug.option.debugging.g"
- defaultValue="true"
- superClass="xlc.c.compiler.option.ecd.g">
- </option>
- </tool>
- <tool
- id="cdt.managedbuild.tool.xlc.c.compiler.so.debug"
- superClass="cdt.managedbuild.tool.xlc.c.compiler">
- <option
- id="xlc.c.compiler.so.debug.option.optimization.level"
- defaultValue="xlc.c.optimization.level.none"
- superClass="xlc.c.compiler.option.optimization.level">
- </option>
- <option
- id="xlc.c.compiler.so.debug.option.debugging.g"
- defaultValue="true"
- superClass="xlc.c.compiler.option.ecd.g">
- </option>
- </tool>
- <tool
- id="cdt.managedbuild.tool.xlc.c.linker.so.debug"
- superClass="cdt.managedbuild.tool.xlc.c.linker.so">
- </tool>
- <tool
- id="cdt.managedbuild.tool.xlc.cpp.linker.so.debug"
- superClass="cdt.managedbuild.tool.xlc.cpp.linker.so">
- </tool>
- <tool
- id="cdt.managedbuild.tool.xlc.assembler.so.debug"
- superClass="cdt.managedbuild.tool.xlc.assembler">
- </tool>
- </toolChain>
- </configuration>
- <configuration
- name="%ConfigName.Rel"
- cleanCommand="rm -rf"
- artifactExtension="so"
- errorParsers="org.eclipse.cdt.errorparsers.xlc.XlcErrorParser"
- languageSettingsProviders="org.eclipse.cdt.ui.UserLanguageSettingsProvider;org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider;org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider;${Toolchain};-org.eclipse.cdt.managedbuilder.xlc.core.XlcBuildCommandParser"
- id="cdt.managedbuild.config.xlc.so.release">
- <toolChain
- id="cdt.managedbuild.toolchain.xlc.so.release"
- languageSettingsProviders="org.eclipse.cdt.managedbuilder.xlc.core.XlcBuildCommandParser;org.eclipse.cdt.managedbuilder.xlc.core.XlcBuiltinSpecsDetector"
- name="%ToolChainName.Rel"
- targetTool="cdt.managedbuild.tool.xlc.c.linker.so.release;cdt.managedbuild.tool.xlc.cpp.linker.so.release">
- <targetPlatform
- id="cdt.managedbuild.target.xlc.platform.so.release"
- name="%PlatformName.Rel"
- osList="all"
- archList="all">
- </targetPlatform>
- <builder
- superClass="cdt.managedbuild.target.gnu.builder"
- id="org.eclipse.cdt.managedbuilder.xlc.builder.so.release">
- </builder>
- <tool
- id="cdt.managedbuild.tool.xlc.cpp.compiler.so.release"
- superClass="cdt.managedbuild.tool.xlc.cpp.compiler">
- <option
- id="xlc.cpp.compiler.so.release.option.optimization.level"
- defaultValue="xlc.c.optimization.level.Level5"
- superClass="xlc.c.compiler.option.optimization.level">
- </option>
- <option
- id="xlc.cpp.compiler.so.release.option.g"
- defaultValue="false"
- superClass="xlc.c.compiler.option.ecd.g">
- </option>
- </tool>
- <tool
- id="cdt.managedbuild.tool.xlc.c.compiler.so.release"
- superClass="cdt.managedbuild.tool.xlc.c.compiler">
- <option
- id="xlc.c.compiler.so.release.option.optimization.level"
- defaultValue="xlc.c.optimization.level.Level5"
- superClass="xlc.c.compiler.option.optimization.level">
- </option>
- <option
- id="xlc.c.compiler.so.release.option.debugging.g"
- defaultValue="false"
- superClass="xlc.c.compiler.option.ecd.g">
- </option>
- </tool>
- <tool
- id="cdt.managedbuild.tool.xlc.c.linker.so.release"
- superClass="cdt.managedbuild.tool.xlc.c.linker.so">
- </tool>
- <tool
- id="cdt.managedbuild.tool.xlc.cpp.linker.so.release"
- superClass="cdt.managedbuild.tool.xlc.cpp.linker.so">
- </tool>
- <tool
- id="cdt.managedbuild.tool.xlc.assembler.so.release"
- superClass="cdt.managedbuild.tool.xlc.assembler">
- </tool>
- </toolChain>
- </configuration>
- </projectType>
- <projectType
- buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.staticLib"
- id="cdt.managedbuild.target.xlc.lib"
- isAbstract="false"
- isTest="false"
- name="%TargetName.xlc.lib"
- projectMacroSupplier="org.eclipse.cdt.managedbuilder.xlc.ui.XLCProjectMacroSupplier">
- <configuration
- name="%ConfigName.Dbg"
- cleanCommand="rm -rf"
- artifactExtension="lib"
- errorParsers="org.eclipse.cdt.errorparsers.xlc.XlcErrorParser"
- languageSettingsProviders="org.eclipse.cdt.ui.UserLanguageSettingsProvider;org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider;org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider;${Toolchain};-org.eclipse.cdt.managedbuilder.xlc.core.XlcBuildCommandParser"
- id="cdt.managedbuild.config.xlc.lib.debug">
- <toolChain
- id="cdt.managedbuild.toolchain.xlc.lib.debug"
- languageSettingsProviders="org.eclipse.cdt.managedbuilder.xlc.core.XlcBuildCommandParser;org.eclipse.cdt.managedbuilder.xlc.core.XlcBuiltinSpecsDetector"
- name="%ToolChainName.Dbg"
- targetTool="cdt.managedbuild.tool.xlc.archiver.lib.debug">
- <targetPlatform
- id="cdt.managedbuild.target.xlc.platform.lib.debug"
- name="%PlatformName.Dbg"
- osList="all"
- archList="all">
- </targetPlatform>
- <builder
- superClass="cdt.managedbuild.target.gnu.builder"
- id="org.eclipse.cdt.managedbuilder.xlc.builder.lib.debug">
- </builder>
- <tool
- id="cdt.managedbuild.tool.xlc.cpp.compiler.lib.debug"
- superClass="cdt.managedbuild.tool.xlc.cpp.compiler">
- <option
- id="xlc.cpp.compiler.lib.debug.option.optimization.level"
- defaultValue="xlc.c.compiler.optimization.level.none"
- superClass="xlc.c.compiler.option.optimization.level">
- </option>
- <option
- id="xlc.cpp.compiler.lib.debug.option.debugging.f"
- defaultValue="true"
- superClass="xlc.c.compiler.option.ecd.g">
- </option>
- </tool>
- <tool
- id="cdt.managedbuild.tool.xlc.c.compiler.lib.debug"
- superClass="cdt.managedbuild.tool.xlc.c.compiler">
- <option
- id="xlc.c.compiler.lib.debug.option.optimization.level"
- defaultValue="xlc.c.optimization.level.none"
- superClass="xlc.c.compiler.option.optimization.level">
- </option>
- <option
- id="xlc.c.compiler.lib.debug.option.debugging.g"
- defaultValue="true"
- superClass="xlc.c.compiler.option.ecd.g">
- </option>
- </tool>
- <tool
- id="cdt.managedbuild.tool.xlc.archiver.lib.debug"
- superClass="cdt.managedbuild.tool.xlc.archiver">
- </tool>
- <tool
- id="cdt.managedbuild.tool.xlc.assembler.lib.debug"
- superClass="cdt.managedbuild.tool.xlc.assembler">
- </tool>
- </toolChain>
- </configuration>
- <configuration
- name="%ConfigName.Rel"
- cleanCommand="rm -rf"
- artifactExtension="lib"
- errorParsers="org.eclipse.cdt.errorparsers.xlc.XlcErrorParser"
- languageSettingsProviders="org.eclipse.cdt.ui.UserLanguageSettingsProvider;org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider;org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider;${Toolchain};-org.eclipse.cdt.managedbuilder.xlc.core.XlcBuildCommandParser"
- id="cdt.managedbuild.config.xlc.lib.release">
- <toolChain
- id="cdt.managedbuild.toolchain.xlc.lib.release"
- languageSettingsProviders="org.eclipse.cdt.managedbuilder.xlc.core.XlcBuildCommandParser;org.eclipse.cdt.managedbuilder.xlc.core.XlcBuiltinSpecsDetector"
- name="%ToolChainName.Rel"
- targetTool="cdt.managedbuild.tool.xlc.archiver.lib.release">
- <targetPlatform
- id="cdt.managedbuild.target.xlc.platform.lib.release"
- name="%PlatformName.Rel"
- osList="all"
- archList="all">
- </targetPlatform>
- <builder
- superClass="cdt.managedbuild.target.gnu.builder"
- id="org.eclipse.cdt.managedbuilder.xlc.builder.lib.release">
- </builder>
- <tool
- id="cdt.managedbuild.tool.xlc.cpp.compiler.lib.release"
- superClass="cdt.managedbuild.tool.xlc.cpp.compiler">
- <option
- id="xlc.cpp.compiler.lib.release.option.optimization.level"
- defaultValue="xlc.c.optimization.level.Level5"
- superClass="xlc.c.compiler.option.optimization.level">
- </option>
- <option
- id="xlc.cpp.compiler.lib.release.option.debugging.g"
- defaultValue="false"
- superClass="xlc.c.compiler.option.ecd.g">
- </option>
- </tool>
- <tool
- id="cdt.managedbuild.tool.xlc.c.compiler.lib.release"
- superClass="cdt.managedbuild.tool.xlc.c.compiler">
- <option
- id="xlc.c.compiler.lib.release.option.optimization.level"
- defaultValue="xlc.c.optimization.level.Level5"
- superClass="xlc.c.compiler.option.optimization.level">
- </option>
- <option
- id="xlc.c.compiler.lib.release.option.debugging.g"
- defaultValue="false"
- superClass="xlc.c.compiler.option.ecd.g">
- </option>
- </tool>
- <tool
- id="cdt.managedbuild.tool.xlc.archiver.lib.release"
- superClass="cdt.managedbuild.tool.xlc.archiver">
- </tool>
- <tool
- id="cdt.managedbuild.tool.xlc.assembler.lib.release"
- superClass="cdt.managedbuild.tool.xlc.assembler">
- </tool>
- </toolChain>
- </configuration>
- </projectType>
- <tool
- errorParsers="org.eclipse.cdt.errorparsers.xlc.XlcErrorParser"
- id="org.eclipse.cdt.managedbuilder.xlc.ui.tool.abstractCompiler"
- isAbstract="true"
- name="%tool.compiler.abstract">
- <envVarBuildPath
- pathType="buildpathInclude"
- variableList="CPATH,C_INCLUDE_PATH">
- </envVarBuildPath>
- <optionCategory
- name="%OptionCategory.Input"
- id="xlc.c.compiler.category.Input">
- </optionCategory>
- <option
- defaultValue="false"
- name="%Option.Preproccomments"
- category="xlc.c.compiler.category.Input"
- command="-C"
- id="xlc.c.compiler.option.input.C"
- valueType="boolean">
- </option>
- <option
- name="%Option.DefSym"
- category="xlc.c.compiler.category.Input"
- command="-D"
- id="xlc.c.compiler.option.input.D"
- valueType="definedSymbols">
- </option>
- <option
- name="%Option.InclPaths"
- category="xlc.c.compiler.category.Input"
- command="-I"
- id="xlc.c.compiler.option.include.paths"
- valueType="includePath"
- browseType="directory">
- <listOptionValue
- builtIn="true"
- value="/usr/include">
- </listOptionValue>
- </option>
- <option
- name="%Option.UndefSym"
- category="xlc.c.compiler.category.Input"
- command="-U"
- id="xlc.c.compiler.option.preprocessor.undef.symbol"
- valueType="stringList">
- </option>
- <option
- defaultValue="false"
- name="%Option.altivec"
- category="xlc.c.compiler.category.Input"
- command="-qaltivec"
- id="xlc.c.compiler.option.input.altivec"
- valueType="boolean">
- </option>
- <option
- name="%Option.asm"
- category="xlc.c.compiler.category.Input"
- id="xlc.c.compiler.option.input.asm"
- valueType="enumerated">
- <enumeratedOptionValue
- id="xlc.c.compiler.option.input.asm.default"
- isDefault="true"
- name="%Option.asm.default">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qasm=stdcpp"
- id="xlc.c.compiler.option.input.asm.stdcpp"
- name="%Option.asm.stdcpp">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qasm=gcc"
- id="xlc.c.compiler.option.input.asm.gcc"
- name="%Option.asm.gcc">
- </enumeratedOptionValue>
- </option>
- <option
- name="%Option.qcomplexgccincl"
- category="xlc.c.compiler.category.Input"
- command="-qcomplexgccincl"
- id="xlc.c.compiler.option.input.qcomplexgccincl"
- valueType="includePath"
- browseType="directory">
- </option>
- <option
- defaultValue="false"
- name="%Option.Mbcs"
- category="xlc.c.compiler.category.Input"
- command="-qmbcs"
- id="xlc.c.compiler.option.input.mbcs"
- valueType="boolean">
- </option>
- <option
- defaultValue="false"
- name="%Option.Digraph"
- category="xlc.c.compiler.category.Input"
- command="-qdigraph"
- id="xlc.c.compiler.option.input.digraph"
- valueType="boolean">
- </option>
- <option
- defaultValue="false"
- name="%Option.Dollar"
- category="xlc.c.compiler.category.Input"
- command="-qdollar"
- id="xlc.c.compiler.option.input.dollar"
- valueType="boolean">
- </option>
- <option
- defaultValue="false"
- name="%Option.Incdirfirst"
- category="xlc.c.compiler.category.Input"
- command="-qidirfirst"
- id="xlc.c.compiler.option.input.dirfirst"
- valueType="boolean">
- </option>
- <option
- name="%Option.ignprag"
- category="xlc.c.compiler.category.Input"
- id="xlc.c.compiler.option.input.ignprag"
- valueType="enumerated">
- <enumeratedOptionValue
- name="%Option.none"
- isDefault="false"
- id="xlc.c.input.ignprag.none">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.ignprag.disjoint"
- isDefault="false"
- command="-qignprag=disjoint"
- id="xlc.c.input.ignprag.disjoint">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.ignprag.isolated"
- isDefault="false"
- command="-qignprag=isolated"
- id="xlc.c.input.ignprag.isolated">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.ignprag.all"
- isDefault="false"
- command="-qignprag=all"
- id="xlc.c.input.ignprag.all">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.ignprag.ibm"
- isDefault="false"
- command="-qignprag=ibm"
- id="xlc.c.input.ignprag.ibm">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.ignprag.omp"
- isDefault="false"
- id="xlc.c.input.ignprag.omp">
- </enumeratedOptionValue>
- </option>
- <option
- category="xlc.c.compiler.category.Input"
- command="-qkeyword="
- id="xlc.c.compiler.option.input.keyword"
- name="%Option.Keyword"
- valueType="boolean">
- </option>
- <option
- name="%Option.langlvl"
- category="xlc.c.compiler.category.Input"
- id="xlc.c.compiler.option.input.langlvl"
- valueType="enumerated">
- <enumeratedOptionValue
- name="%Option.default"
- isDefault="false"
- id="xlc.c.input.langlvl.">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.langlvl.classic"
- isDefault="false"
- command="-qlanglvl=classic"
- id="xlc.c.input.langlvl.classic">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.langlvl.extended"
- isDefault="false"
- command="-qlanglvl=extended"
- id="xlc.c.input.langlvl.extended">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.langlvl.saa"
- isDefault="false"
- command="-qlanglvl=saa"
- id="xlc.c.input.langlvl.saa">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.langlvl.saal2"
- isDefault="false"
- command="-qlanglvl=saal2"
- id="xlc.c.input.langlvl.saal2">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.langlvl.stdc89"
- isDefault="false"
- command="-qlanglvl=stdc89"
- id="xlc.c.input.langlvl.stdc89">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.langlvl.stdc99"
- isDefault="false"
- command="-qlanglvl=stdc99"
- id="xlc.c.input.langlvl.stdc99">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.langlvl.extc89"
- isDefault="false"
- command="-qlanglvl=extc89"
- id="xlc.c.input.langlvl.extc89">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.langlvl.extc99"
- isDefault="false"
- command="-qlanglvl=extc99"
- id="xlc.c.input.langlvl.extc99">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.langlvl.ucs"
- isDefault="false"
- command="-qlanglvl=ucs"
- id="xlc.c.input.langlvl.ucs">
- </enumeratedOptionValue>
- </option>
- <option
- defaultValue="false"
- name="%Option.Macpstr"
- category="xlc.c.compiler.category.Input"
- command="-qmacpstr"
- id="xlc.c.compiler.option.input.macpstr"
- valueType="boolean">
- </option>
- <option
- name="%Option.sourcetype"
- category="xlc.c.compiler.category.Input"
- id="xlc.c.compiler.option.input.sourcetype"
- valueType="enumerated">
- <enumeratedOptionValue
- name="%Option.none"
- isDefault="false"
- id="xlc.c.input.sourcetype.none">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.default"
- isDefault="false"
- command="-qsourcetype=default"
- id="xlc.c.input.sourcetype.default">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.sourcetype.c"
- isDefault="false"
- command="-qsourcetype=c"
- id="xlc.c.input.sourcetype.c">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.sourcetype.c++"
- isDefault="false"
- command="-qsourcetype=c++"
- id="xlc.c.input.sourcetype.c++">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.sourcetype.assembler"
- isDefault="false"
- command="-qsourcetype=assembler"
- id="xlc.c.input.sourcetype.assembler">
- </enumeratedOptionValue>
- </option>
- <option
- category="xlc.c.compiler.category.Input"
- command="-qstdframework"
- id="xlc.c.compiler.option.input.qstdframework"
- isAbstract="false"
- name="%Option.stdframework"
- resourceFilter="all"
- valueType="boolean">
- </option>
- <option
- command="-qframeworkdir"
- id="xlc.c.compiler.option.input.qframeworkdir"
- isAbstract="false"
- name="%Option.frameworkdirs"
- resourceFilter="all"
- valueType="includePath">
- </option>
- <option
- defaultValue="false"
- name="%Option.Input"
- category="xlc.c.compiler.category.Input"
- command="-qnostdinc"
- id="xlc.c.compiler.option.input.nostdinc"
- valueType="boolean">
- </option>
- <option
- defaultValue="false"
- name="%Option.Trigraph"
- category="xlc.c.compiler.category.Input"
- command="-qtrigraph"
- id="xlc.c.compiler.option.input.trigraph"
- valueType="boolean">
- </option>
- <option
- defaultValue="false"
- name="%Option.Utf"
- category="xlc.c.compiler.category.Input"
- command="-qutf"
- id="xlc.c.compiler.option.input.utf"
- valueType="boolean">
- </option>
- <optionCategory
- name="%OptionCategory.Output"
- id="xlc.c.compiler.category.output">
- </optionCategory>
- <option
- defaultValue="false"
- name="%Option.Trace"
- category="xlc.c.compiler.category.output"
- command="-#"
- id="xlc.c.compiler.option.output.trace"
- valueType="boolean">
- </option>
- <option
- name="%Option.bmaxdata"
- category="xlc.c.compiler.category.output"
- command="-bmaxdata="
- id="xlc.c.compiler.option.output.bmaxdata"
- valueType="string">
- </option>
- <option
- applicabilityCalculator="org.eclipse.cdt.managedbuilder.xlc.ui.properties.HiddenOptionApplicabilityCalculator"
- category="xlc.c.compiler.category.output"
- command="-c"
- defaultValue="true"
- id="xlc.c.compiler.option.output.c"
- name="%Option.c"
- valueType="boolean">
- </option>
- <option
- defaultValue="false"
- name="%Option.PreprocOnly"
- category="xlc.c.compiler.category.output"
- command="-E"
- id="xlc.c.compiler.option.preprocessor.preprocess"
- valueType="boolean">
- </option>
- <option
- defaultValue="false"
- name="%Option.M"
- category="xlc.c.compiler.category.output"
- command="-M"
- id="xlc.c.compiler.option.output.M"
- valueType="boolean">
- </option>
- <option
- defaultValue="false"
- name="%Option.P"
- category="xlc.c.compiler.category.output"
- command="-P"
- id="xlc.c.compiler.option.output.P"
- valueType="boolean">
- </option>
- <option
- defaultValue="false"
- name="%Option.Assem"
- category="xlc.c.compiler.category.output"
- command="-S"
- id="xlc.c.compiler.option.output.assem"
- valueType="boolean">
- </option>
- <option
- defaultValue="false"
- name="%Option.Strip"
- category="xlc.c.compiler.category.output"
- command="-s"
- id="xlc.c.compiler.option.output.strip"
- valueType="boolean">
- </option>
- <option
- name="%Option.64"
- category="xlc.c.compiler.category.output"
- command="-q64"
- id="xlc.c.compiler.option.output.64"
- valueType="boolean">
- </option>
- <option
- name="%Option.Align"
- category="xlc.c.compiler.category.output"
- id="xlc.c.compiler.option.alignment.align"
- valueType="enumerated">
- <enumeratedOptionValue
- name="%Option.none"
- isDefault="false"
- id="xlc.c.alignment.align.none">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.Align.Full"
- isDefault="false"
- command="-qalign=full"
- id="xlc.c.alignment.align.full">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="POWERâ„¢"
- isDefault="false"
- command="-qalign=power"
- id="xlc.c.alignment.align.power">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.Align.Natural"
- isDefault="false"
- command="-qalign=natural"
- id="xlc.c.alignment.align.natural">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.Align.twobyte"
- isDefault="false"
- command="-qalign=twobyte"
- id="xlc.c.alignment.align.twobyte">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.Align.packed"
- isDefault="false"
- command="-qalign=packed"
- id="xlc.c.alignment.align.packed">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.Align.bitpacked"
- isDefault="false"
- command="-qalign=bitpacked"
- id="xlc.c.alignment.align.bitpacked">
- </enumeratedOptionValue>
- </option>
- <option
- name="%Option.alloca"
- category="xlc.c.compiler.category.output"
- command="-qalloca"
- id="xlc.c.compiler.option.output.alloca"
- valueType="boolean">
- </option>
- <option
- defaultValue="false"
- name="%Option.Bitfields"
- category="xlc.c.compiler.category.output"
- id="xlc.c.compiler.option.output.bitfields"
- valueType="enumerated">
- <enumeratedOptionValue
- id="xlc.c.compiler.option.output.bitfields.default"
- isDefault="true"
- name="%Option.default">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qbitfields=signed"
- id="xlc.c.compiler.option.output.bitfields.signed"
- name="%Option.Bitfields.signed">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qbitfields=unsigned"
- id="xlc.c.compiler.option.output.bitfields.unsigned"
- name="%Option.Bitfields.unsigned">
- </enumeratedOptionValue>
- </option>
- <option
- defaultValue="false"
- name="%Option.Chars"
- category="xlc.c.compiler.category.output"
- id="xlc.c.compiler.option.output.chars"
- valueType="enumerated">
- <enumeratedOptionValue
- id="xlc.c.compiler.option.output.chars.default"
- name="%Option.default">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qchars=signed"
- id="xlc.c.compiler.option.output.chars.signed"
- name="%Option.chars.signed">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qchars=unsigned"
- id="xlc.c.compiler.option.output.chars.unsigned"
- name="%Option.chars.unsigned">
- </enumeratedOptionValue>
- </option>
- <option
- applicabilityCalculator="org.eclipse.cdt.managedbuilder.xlc.ui.properties.HiddenOptionApplicabilityCalculator"
- category="xlc.c.compiler.category.output"
- command="-qenablevmx"
- defaultValue="false"
- id="xlc.c.compiler.option.output.enablevmx"
- name="%Option.enablevmx"
- valueType="boolean">
- </option>
- <option
- name="%Option.Enum"
- category="xlc.c.compiler.category.output"
- id="xlc.c.compiler.option.output.alignment.enum"
- valueType="enumerated">
- <enumeratedOptionValue
- name="%Option.none"
- isDefault="false"
- id="xlc.c.option.output.alignment.enum.none">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.enum.Int"
- isDefault="false"
- command="-qenum=int"
- id="xlc.c.option.output.alignment.enum.int">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.enum.Intlong"
- isDefault="false"
- command="-qenum=intlong"
- id="xlc.c.option.output.alignment.enum.intlong">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.enum.small"
- isDefault="false"
- command="-qenum=small"
- id="xlc.c.option.output.alignment.enum.small">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.enum.1"
- isDefault="false"
- command="-qenum=1"
- id="xlc.c.option.output.alignment.enum.1">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.enum.2"
- isDefault="false"
- command="-qenum=2"
- id="xlc.c.option.output.alignment.enum.2">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.enum.4"
- isDefault="false"
- command="-qenum=4"
- id="xlc.c.option.output.alignment.enum.4">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.enum.8"
- isDefault="false"
- command="-qenum=8"
- id="xlc.c.option.output.alignment.enum.8">
- </enumeratedOptionValue>
- </option>
- <option
- name="%Option.Pic"
- category="xlc.c.compiler.category.output"
- id="xlc.c.compiler.option.output.pic"
- valueType="enumerated">
- <enumeratedOptionValue
- name="%Option.none"
- isDefault="false"
- id="xlc.c.output.pic.none">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.Pic.Small"
- isDefault="false"
- command="-qpic=small"
- id="xlc.c.output.pic.small">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.Pic.Large"
- isDefault="false"
- command="-qpic=large"
- id="xlc.c.output.pic.large">
- </enumeratedOptionValue>
- </option>
- <option
- category="xlc.c.compiler.category.output"
- command="-qfuncsect"
- defaultValue="false"
- id="xlc.c.compiler.option.output.funcsect"
- name="%Option.funcsect"
- valueType="boolean">
- </option>
- <option
- category="xlc.c.compiler.category.output"
- command="-qppline"
- defaultValue="false"
- id="xlc.c.compiler.option.output.ppline"
- name="%Option.ppline"
- valueType="boolean">
- </option>
- <option
- category="xlc.c.compiler.category.output"
- command="-qnoro"
- defaultValue="false"
- id="xlc.c.compiler.option.output.noro"
- name="%Option.noro"
- valueType="boolean">
- </option>
- <option
- category="xlc.c.compiler.category.output"
- command="-qnoroconst"
- defaultValue="false"
- id="xlc.c.compiler.option.output.noroconst"
- name="%Option.noroconst"
- valueType="boolean">
- </option>
- <option
- category="xlc.c.compiler.category.output"
- command="-qroptr"
- defaultValue="false"
- id="xlc.c.compiler.option.output.roptr"
- name="%Option.roptr"
- valueType="boolean">
- </option>
- <option
- category="xlc.c.compiler.category.output"
- command="-qsaveopt"
- defaultValue="false"
- id="xlc.c.compiler.option.output.saveopt"
- name="%Option.saveopt"
- valueType="boolean">
- </option>
- <option
- category="xlc.c.compiler.category.output"
- command="-qstaticinline"
- defaultValue="false"
- id="xlc.c.compiler.option.output.staticinline"
- name="%Option.staticinline"
- valueType="boolean">
- </option>
- <option
- category="xlc.c.compiler.category.output"
- command="-qstatsym"
- defaultValue="false"
- id="xlc.c.compiler.option.output.statsym"
- name="%Option.statsym"
- valueType="boolean">
- </option>
- <option
- category="xlc.c.compiler.category.output"
- command="-qthreaded"
- defaultValue="false"
- id="xlc.c.compiler.option.output.threaded"
- name="%Option.threaded"
- valueType="boolean">
- </option>
- <option
- category="xlc.c.compiler.category.output"
- command="-qvrsave"
- defaultValue="false"
- id="xlc.c.compiler.option.output.vrsave"
- name="%Option.vrsave"
- valueType="boolean">
- </option>
- <option
- category="xlc.c.compiler.category.output"
- command="-qweaksymbol"
- defaultValue="false"
- id="xlc.c.compiler.option.output.weaksymbol"
- name="%Option.weaksymbol"
- valueType="boolean">
- </option>
- <option
- category="xlc.c.compiler.category.output"
- command="-qxcall"
- defaultValue="false"
- id="xlc.c.compiler.option.output.xcall"
- name="%Option.xcall"
- valueType="boolean">
- </option>
- <optionCategory
- name="%OptionCategory.Optimize"
- id="xlc.c.compiler.category.optimization">
- </optionCategory>
- <option
- name="%Option.OptLevel"
- category="xlc.c.compiler.category.optimization"
- id="xlc.c.compiler.option.optimization.level"
- valueType="enumerated">
- <enumeratedOptionValue
- name="%Option.none"
- isDefault="true"
- command="-O0"
- id="xlc.c.optimization.level.none">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.Optimize.Optimize"
- command="-O"
- id="xlc.c.optimization.level.optimize">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.Optimize.Level2"
- command="-O2"
- id="xlc.c.optimization.level.Level2">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.Optimize.Level3"
- command="-O3"
- id="xlc.c.optimization.level.Level3">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.Optimize.Level4"
- command="-O4"
- id="xlc.c.optimization.level.Level4">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.Optimize.Level5"
- command="-O5"
- id="xlc.c.optimization.level.Level5">
- </enumeratedOptionValue>
- </option>
- <option
- name="%Option.inlining"
- category="xlc.c.compiler.category.optimization"
- id="xlc.c.compiler.option.optimization.inlining"
- valueType="enumerated">
- <enumeratedOptionValue
- id="xlc.c.compiler.option.optimization.inlining.default"
- isDefault="true"
- name="%Option.default">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-Q"
- id="xlc.c.compiler.option.optimization.inlining.Q"
- name="%Option.inlining.Q">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-Q!"
- id="xlc.c.compiler.option.optimization.inlining.Qexclamation"
- name="%Option.inlining.Qexclamation">
- </enumeratedOptionValue>
- </option>
- <option
- applicabilityCalculator="org.eclipse.cdt.managedbuilder.xlc.ui.properties.XLCApplicabilityCalculator"
- category="xlc.c.compiler.category.optimization"
- id="xlc.c.compiler.option.optimization.arch"
- name="%Option.optimization.arch"
- valueType="enumerated">
- <enumeratedOptionValue
- id="xlc.c.compiler.option.optimization.arch.default"
- isDefault="true"
- name="%Option.default">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=auto"
- id="xlc.c.compiler.option.optimization.arch.auto"
- name="auto">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=com"
- id="xlc.c.compiler.option.optimization.arch.com"
- name="com">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=403"
- id="xlc.c.compiler.option.optimization.arch.403"
- name="PowerPC® 403">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=601"
- id="xlc.c.compiler.option.optimization.arch.601"
- name="PowerPC® 601">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=602"
- id="xlc.c.compiler.option.optimization.arch.602"
- name="PowerPC® 602">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=603"
- id="xlc.c.compiler.option.optimization.arch.603"
- name="PowerPC® 603">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=604"
- id="xlc.c.compiler.option.optimization.arch.604"
- name="PowerPC® 604">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=pwr"
- id="xlc.c.compiler.option.optimization.arch.pwr"
- name="POWER(TM)">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=pwr2"
- id="xlc.c.compiler.option.optimization.arch.pwr2"
- name="POWER2(TM)">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=pwr2s"
- id="xlc.c.compiler.option.optimization.arch.pwr2s"
- name="POWER2(TM) s">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=pwr2sc"
- id="xlc.c.compiler.option.optimization.arch.pwr2sc"
- name="POWER2(TM) Super Chip">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=pwr3"
- id="xlc.c.compiler.option.optimization.arch.pwr3"
- name="POWER3(TM)">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=pwr4"
- id="xlc.c.compiler.option.optimization.arch.pwr4"
- name="POWER4(TM)">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=pwr5"
- id="xlc.c.compiler.option.optimization.arch.pwr5"
- name="POWER5(TM)">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=ppc"
- id="xlc.c.compiler.option.optimization.arch.ppc"
- name="PowerPC®">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=ppc64"
- id="xlc.c.compiler.option.optimization.arch.ppc64"
- name="%Option.optimization.arch.ppc64">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=ppcgr"
- id="xlc.c.compiler.option.optimization.arch.ppcgr"
- name="%Option.optimization.arch.ppcgr">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=ppc64gr"
- id="xlc.c.compiler.option.optimization.arch.ppc64gr"
- name="%Option.optimization.arch.ppc64gr">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=ppcs4grsq"
- id="xlc.c.compiler.option.optimization.arch.ppc64grsq"
- name="%Option.optimization.arch.ppc64grsq">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=ppc64v"
- id="xlc.c.compiler.option.optimization.arch.ppc64v"
- name="%Option.optimization.arch.ppc64v">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=ppc970"
- id="xlc.c.compiler.option.optimization.arch.ppc970"
- name="PowerPC® 970">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=rs64a"
- id="xlc.c.compiler.option.optimization.arch.rs64a"
- name="RS64I">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=rs64b"
- id="xlc.c.compiler.option.optimization.arch.rs64b"
- name="RS64II">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=rs64c"
- id="xlc.c.compiler.option.optimization.arch.rs64c"
- name="RS64III">
- </enumeratedOptionValue>
- </option>
- <option
- applicabilityCalculator="org.eclipse.cdt.managedbuilder.xlc.ui.properties.XLCApplicabilityCalculator"
- category="xlc.c.compiler.category.optimization"
- id="xlc.c.compiler.option.optimization.arch.9.0"
- name="%Option.optimization.arch"
- valueType="enumerated">
- <enumeratedOptionValue
- id="xlc.c.compiler.option.optimization.arch.default"
- isDefault="true"
- name="%Option.default">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=auto"
- id="xlc.c.compiler.option.optimization.arch.auto"
- name="auto">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=403"
- id="xlc.c.compiler.option.optimization.arch.403"
- name="PowerPC® 403">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=604"
- id="xlc.c.compiler.option.optimization.arch.604"
- name="PowerPC® 604">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=pwr3"
- id="xlc.c.compiler.option.optimization.arch.pwr3"
- name="POWER3(TM)">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=pwr4"
- id="xlc.c.compiler.option.optimization.arch.pwr4"
- name="POWER4(TM)">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=pwr5"
- id="xlc.c.compiler.option.optimization.arch.pwr5"
- name="POWER5(TM)">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=ppc"
- id="xlc.c.compiler.option.optimization.arch.ppc"
- name="PowerPC®">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=ppc64"
- id="xlc.c.compiler.option.optimization.arch.ppc64"
- name="%Option.optimization.arch.ppc64">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=ppcgr"
- id="xlc.c.compiler.option.optimization.arch.ppcgr"
- name="%Option.optimization.arch.ppcgr">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=ppc64gr"
- id="xlc.c.compiler.option.optimization.arch.ppc64gr"
- name="%Option.optimization.arch.ppc64gr">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=ppcs4grsq"
- id="xlc.c.compiler.option.optimization.arch.ppc64grsq"
- name="%Option.optimization.arch.ppc64grsq">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=ppc64v"
- id="xlc.c.compiler.option.optimization.arch.ppc64v"
- name="%Option.optimization.arch.ppc64v">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=ppc970"
- id="xlc.c.compiler.option.optimization.arch.ppc970"
- name="PowerPC® 970">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=rs64a"
- id="xlc.c.compiler.option.optimization.arch.rs64a"
- name="RS64I">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=rs64b"
- id="xlc.c.compiler.option.optimization.arch.rs64b"
- name="RS64II">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=rs64c"
- id="xlc.c.compiler.option.optimization.arch.rs64c"
- name="RS64III">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=pwr6"
- id="xlc.c.compiler.option.optimization.arch.pwr6"
- name="POWER6 (TM)">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=pwr6e"
- id="xlc.c.compiler.option.optimization.arch.pwr6e"
- name="POWER6 (TM) e">
- </enumeratedOptionValue>
- </option>
- <option
- applicabilityCalculator="org.eclipse.cdt.managedbuilder.xlc.ui.properties.XLCApplicabilityCalculator"
- category="xlc.c.compiler.category.optimization"
- id="xlc.c.compiler.option.optimization.arch.11.1"
- name="%Option.optimization.arch"
- valueType="enumerated">
- <enumeratedOptionValue
- id="xlc.c.compiler.option.optimization.arch.default"
- isDefault="true"
- name="%Option.default">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=auto"
- id="xlc.c.compiler.option.optimization.arch.auto"
- name="auto">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=403"
- id="xlc.c.compiler.option.optimization.arch.403"
- name="PowerPC® 403">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=604"
- id="xlc.c.compiler.option.optimization.arch.604"
- name="PowerPC® 604">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=pwr3"
- id="xlc.c.compiler.option.optimization.arch.pwr3"
- name="POWER3(TM)">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=pwr4"
- id="xlc.c.compiler.option.optimization.arch.pwr4"
- name="POWER4(TM)">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=pwr5"
- id="xlc.c.compiler.option.optimization.arch.pwr5"
- name="POWER5(TM)">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=pwr5"
- id="xlc.c.compiler.option.optimization.arch.pwr5"
- name="POWER5(TM)">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=ppc"
- id="xlc.c.compiler.option.optimization.arch.ppc"
- name="PowerPC®">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=ppc64"
- id="xlc.c.compiler.option.optimization.arch.ppc64"
- name="%Option.optimization.arch.ppc64">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=ppcgr"
- id="xlc.c.compiler.option.optimization.arch.ppcgr"
- name="%Option.optimization.arch.ppcgr">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=ppc64gr"
- id="xlc.c.compiler.option.optimization.arch.ppc64gr"
- name="%Option.optimization.arch.ppc64gr">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=ppcs4grsq"
- id="xlc.c.compiler.option.optimization.arch.ppc64grsq"
- name="%Option.optimization.arch.ppc64grsq">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=ppc64v"
- id="xlc.c.compiler.option.optimization.arch.ppc64v"
- name="%Option.optimization.arch.ppc64v">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=ppc970"
- id="xlc.c.compiler.option.optimization.arch.ppc970"
- name="PowerPC® 970">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=rs64a"
- id="xlc.c.compiler.option.optimization.arch.rs64a"
- name="RS64I">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=rs64b"
- id="xlc.c.compiler.option.optimization.arch.rs64b"
- name="RS64II">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=rs64c"
- id="xlc.c.compiler.option.optimization.arch.rs64c"
- name="RS64III">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=pwr6"
- id="xlc.c.compiler.option.optimization.arch.pwr6"
- name="POWER6 (TM)">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=pwr6e"
- id="xlc.c.compiler.option.optimization.arch.pwr6e"
- name="POWER6 (TM) e">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=pwr7"
- id="xlc.c.compiler.option.optimization.arch.pwr7"
- name="POWER7 (TM)">
- </enumeratedOptionValue>
- </option>
- <option
- applicabilityCalculator="org.eclipse.cdt.managedbuilder.xlc.ui.properties.XLCApplicabilityCalculator"
- category="xlc.c.compiler.category.optimization"
- id="xlc.c.compiler.option.optimization.tune"
- name="%Option.optimization.tune"
- valueType="enumerated">
- <enumeratedOptionValue
- id="xlc.c.compiler.option.optimization.tune.default"
- isDefault="true"
- name="%Option.default">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtune=auto"
- id="xlc.c.compiler.option.optimization.tune.auto"
- name="%Option.optimization.tune.auto">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtune=403"
- id="xlc.c.compiler.option.optimization.tune.403"
- name="PowerPC® 403">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtune=601"
- id="xlc.c.compiler.option.optimization.tune.601"
- name="PowerPC® 601">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtune=602"
- id="xlc.c.compiler.option.optimization.tune.602"
- name="PowerPC® 602">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtune=603"
- id="xlc.c.compiler.option.optimization.tune.603"
- name="PowerPC® 603">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtune=604"
- id="xlc.c.compiler.option.optimization.tune.604"
- name="PowerPC® 604">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtune=pwr"
- id="xlc.c.compiler.option.optimization.tune.pwr"
- name="POWER(TM)">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtune=pwr2"
- id="xlc.c.compiler.option.optimization.tune.pwr2"
- name="POWER2(TM)">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtune=pwr2s"
- id="xlc.c.compiler.option.optimization.tune.pwr2s"
- name="POWER2(TM) s">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtune=pwr2sc"
- id="xlc.c.compiler.option.optimization.tune.pwr2sc"
- name="POWER2(TM) Super Chip">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtune=pwr3"
- id="xlc.c.compiler.option.optimization.tune.pwr3"
- name="POWER3(TM)">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtune=pwr4"
- id="xlc.c.compiler.option.optimization.tune.pwr4"
- name="POWER4(TM)">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtune=pwr5"
- id="xlc.c.compiler.option.optimization.tune.pwr5"
- name="POWER5(TM)">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtune=ppc"
- id="xlc.c.compiler.option.optimization.tune.ppc"
- name="PowerPC®">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtune=ppc64"
- id="xlc.c.compiler.option.optimization.tune.ppc64"
- name="%Option.optimization.arch.ppc64">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtune=ppcgr"
- id="xlc.c.compiler.option.optimization.tune.ppcgr"
- name="%Option.optimization.arch.ppcgr">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtune=ppc64gr"
- id="xlc.c.compiler.option.optimization.tune.ppc64gr"
- name="%Option.optimization.arch.ppc64gr">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtune=ppcs4grsq"
- id="xlc.c.compiler.option.optimization.tune.ppc64grsq"
- name="%Option.optimization.arch.ppc64grsq">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtune=ppc64v"
- id="xlc.c.compiler.option.optimization.tune.ppc64v"
- name="%Option.optimization.arch.ppc64v">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtune=ppc970"
- id="xlc.c.compiler.option.optimization.tune.ppc970"
- name="PowerPC® 970">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtune=rs64a"
- id="xlc.c.compiler.option.optimization.tune.rs64a"
- name="RS64I">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtune=rs64b"
- id="xlc.c.compiler.option.optimization.tune.rs64b"
- name="RS64II">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtune=rs64c"
- id="xlc.c.compiler.option.optimization.tune.rs64c"
- name="RS64III">
- </enumeratedOptionValue>
- </option>
- <option
- applicabilityCalculator="org.eclipse.cdt.managedbuilder.xlc.ui.properties.XLCApplicabilityCalculator"
- category="xlc.c.compiler.category.optimization"
- id="xlc.c.compiler.option.optimization.tune.9.0"
- name="%Option.optimization.tune"
- valueType="enumerated">
- <enumeratedOptionValue
- id="xlc.c.compiler.option.optimization.tune.default"
- isDefault="true"
- name="%Option.default">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtune=auto"
- id="xlc.c.compiler.option.optimization.tune.auto"
- name="%Option.optimization.tune.auto">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtune=403"
- id="xlc.c.compiler.option.optimization.tune.403"
- name="PowerPC® 403">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtune=604"
- id="xlc.c.compiler.option.optimization.tune.604"
- name="PowerPC® 604">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtune=pwr3"
- id="xlc.c.compiler.option.optimization.tune.pwr3"
- name="POWER3(TM)">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtune=pwr4"
- id="xlc.c.compiler.option.optimization.tune.pwr4"
- name="POWER4(TM)">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtune=pwr5"
- id="xlc.c.compiler.option.optimization.tune.pwr5"
- name="POWER5(TM)">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtune=ppc"
- id="xlc.c.compiler.option.optimization.tune.ppc"
- name="PowerPC®">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtune=ppc64"
- id="xlc.c.compiler.option.optimization.tune.ppc64"
- name="%Option.optimization.arch.ppc64">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtune=ppcgr"
- id="xlc.c.compiler.option.optimization.tune.ppcgr"
- name="%Option.optimization.arch.ppcgr">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtune=ppc64gr"
- id="xlc.c.compiler.option.optimization.tune.ppc64gr"
- name="%Option.optimization.arch.ppc64gr">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtune=ppcs4grsq"
- id="xlc.c.compiler.option.optimization.tune.ppc64grsq"
- name="%Option.optimization.arch.ppc64grsq">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtune=ppc64v"
- id="xlc.c.compiler.option.optimization.tune.ppc64v"
- name="%Option.optimization.arch.ppc64v">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtune=ppc970"
- id="xlc.c.compiler.option.optimization.tune.ppc970"
- name="PowerPC® 970">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtune=rs64a"
- id="xlc.c.compiler.option.optimization.tune.rs64a"
- name="RS64I">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtune=rs64b"
- id="xlc.c.compiler.option.optimization.tune.rs64b"
- name="RS64II">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtune=rs64c"
- id="xlc.c.compiler.option.optimization.tune.rs64c"
- name="RS64III">
- </enumeratedOptionValue>
- </option>
- <option
- applicabilityCalculator="org.eclipse.cdt.managedbuilder.xlc.ui.properties.XLCApplicabilityCalculator"
- category="xlc.c.compiler.category.optimization"
- id="xlc.c.compiler.option.optimization.tune.11.1"
- name="%Option.optimization.tune"
- valueType="enumerated">
- <enumeratedOptionValue
- id="xlc.c.compiler.option.optimization.tune.default"
- isDefault="true"
- name="%Option.default">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtune=auto"
- id="xlc.c.compiler.option.optimization.tune.auto"
- name="%Option.optimization.tune.auto">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtune=403"
- id="xlc.c.compiler.option.optimization.tune.403"
- name="PowerPC® 403">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtune=604"
- id="xlc.c.compiler.option.optimization.tune.604"
- name="PowerPC® 604">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtune=pwr3"
- id="xlc.c.compiler.option.optimization.tune.pwr3"
- name="POWER3(TM)">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtune=pwr4"
- id="xlc.c.compiler.option.optimization.tune.pwr4"
- name="POWER4(TM)">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtune=pwr5"
- id="xlc.c.compiler.option.optimization.tune.pwr5"
- name="POWER5(TM)">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtune=pwr7"
- id="xlc.c.compiler.option.optimization.tune.pwr7"
- name="POWER7(TM)">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtune=ppc"
- id="xlc.c.compiler.option.optimization.tune.ppc"
- name="PowerPC®">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtune=ppc64"
- id="xlc.c.compiler.option.optimization.tune.ppc64"
- name="%Option.optimization.arch.ppc64">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtune=ppcgr"
- id="xlc.c.compiler.option.optimization.tune.ppcgr"
- name="%Option.optimization.arch.ppcgr">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtune=ppc64gr"
- id="xlc.c.compiler.option.optimization.tune.ppc64gr"
- name="%Option.optimization.arch.ppc64gr">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtune=ppcs4grsq"
- id="xlc.c.compiler.option.optimization.tune.ppc64grsq"
- name="%Option.optimization.arch.ppc64grsq">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtune=ppc64v"
- id="xlc.c.compiler.option.optimization.tune.ppc64v"
- name="%Option.optimization.arch.ppc64v">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtune=ppc970"
- id="xlc.c.compiler.option.optimization.tune.ppc970"
- name="PowerPC® 970">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtune=rs64a"
- id="xlc.c.compiler.option.optimization.tune.rs64a"
- name="RS64I">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtune=rs64b"
- id="xlc.c.compiler.option.optimization.tune.rs64b"
- name="RS64II">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtune=rs64c"
- id="xlc.c.compiler.option.optimization.tune.rs64c"
- name="RS64III">
- </enumeratedOptionValue>
- </option>
- <option
- name="%Option.aggrcopy"
- category="xlc.c.compiler.category.optimization"
- id="xlc.c.compiler.option.optimization.aggrcopy"
- valueType="enumerated">
- <enumeratedOptionValue
- name="%Option.none"
- isDefault="false"
- id="xlc.c.optimization.aggrcopy.none">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.aggrcopy.nooverlap"
- command="-qaggrcopy=nooverlap"
- id="xlc.c.optimization.aggrcopy.nooverlap">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.aggrcopy.overlap"
- command="-qaggrcopy=overlap"
- id="xlc.c.optimization.aggrcopy.overlap">
- </enumeratedOptionValue>
- </option>
- <option
- name="%Option.alias"
- category="xlc.c.compiler.category.optimization"
- command="-qalias="
- id="xlc.c.compiler.option.optimization.alias"
- valueType="string">
- </option>
- <option
- name="%Option.optimization.Cache"
- category="xlc.c.compiler.category.optimization"
- command="-qcache="
- id="xlc.c.compiler.option.optimization.cache"
- valueType="string">
- </option>
- <option
- name="%Option.compact"
- category="xlc.c.compiler.category.optimization"
- command="-qcompact"
- id="xlc.c.compiler.option.optimization.compact"
- valueType="boolean">
- </option>
- <option
- name="%Option.optimization.dataimported"
- category="xlc.c.compiler.category.optimization"
- command="-qdataimported="
- id="xlc.c.compiler.option.optimization.dataimported"
- valueType="string">
- </option>
- <option
- name="%Option.optimization.datalocal"
- category="xlc.c.compiler.category.optimization"
- command="-qdatalocal="
- id="xlc.c.compiler.option.optimization.datalocal"
- valueType="string">
- </option>
- <option
- name="%Option.directstorage"
- category="xlc.c.compiler.category.optimization"
- command="-qdirectstorage"
- id="xlc.c.compiler.option.optimization.directstorage"
- valueType="boolean">
- </option>
- <option
- name="%Option.fdpr"
- category="xlc.c.compiler.category.optimization"
- command="-qfdpr"
- id="xlc.c.compiler.option.optimization.fdpr"
- valueType="boolean">
- </option>
- <option
- name="%Option.optimization.hot"
- category="xlc.c.compiler.category.optimization"
- command="-qhot="
- id="xlc.c.compiler.option.optimization.hot"
- valueType="string">
- </option>
- <option
- name="%Option.ignerrno"
- category="xlc.c.compiler.category.optimization"
- command="-qignerrno"
- id="xlc.c.compiler.option.optimization.ignerrno"
- valueType="boolean">
- </option>
- <option
- name="%Option.optimization.ipa"
- category="xlc.c.compiler.category.optimization"
- command="-qipa="
- id="xlc.c.compiler.option.optimization.ipa"
- valueType="string">
- </option>
- <option
- name="%Option.optimization.isolatedcall"
- category="xlc.c.compiler.category.optimization"
- command="-qisolated_call="
- id="xlc.c.compiler.option.optimization.isolatedcall"
- valueType="string">
- </option>
- <option
- name="%Option.largepage"
- category="xlc.c.compiler.category.optimization"
- command="-qlargepage"
- id="xlc.c.compiler.option.optimization.largepage"
- valueType="boolean">
- </option>
- <option
- name="%Option.libansi"
- category="xlc.c.compiler.category.optimization"
- command="-qlibansi"
- id="xlc.c.compiler.option.optimization.libansi"
- valueType="boolean">
- </option>
- <option
- name="%Option.pdf1"
- category="xlc.c.compiler.category.optimization"
- command="-qpdf1"
- id="xlc.c.compiler.option.optimization.pdf1"
- valueType="boolean">
- </option>
- <option
- name="%Option.pdf2"
- category="xlc.c.compiler.category.optimization"
- command="-qpdf2"
- id="xlc.c.compiler.option.optimization.pdf2"
- valueType="boolean">
- </option>
- <option
- defaultValue="false"
- name="%Option.optimization.Prefetch"
- category="xlc.c.compiler.category.optimization"
- command="-qnoprefetch"
- id="xlc.c.compiler.option.optimization.prefetch"
- valueType="boolean">
- </option>
- <option
- name="%Option.optimization.procimported"
- category="xlc.c.compiler.category.optimization"
- command="-qprocunknown"
- id="xlc.c.compiler.option.optimization.procimported"
- valueType="string">
- </option>
- <option
- name="%Option.optimization.procunknown"
- category="xlc.c.compiler.category.optimization"
- command="-qprocunknown="
- id="xlc.c.compiler.option.optimization.procunknown"
- valueType="string">
- </option>
- <option
- defaultValue="false"
- name="%Option.optimization.showpdf"
- category="xlc.c.compiler.category.optimization"
- command="-qshowpdf"
- id="xlc.c.compiler.option.optimization.showpdf"
- valueType="boolean">
- </option>
- <option
- defaultValue="false"
- name="%Option.optimization.smallstack"
- category="xlc.c.compiler.category.optimization"
- command="-qsmallstack"
- id="xlc.c.compiler.option.optimization.smallstack"
- valueType="boolean">
- </option>
- <option
- applicabilityCalculator="org.eclipse.cdt.managedbuilder.xlc.ui.properties.XLCApplicabilityCalculator"
- category="xlc.c.compiler.category.optimization"
- command="-qsmp"
- defaultValue="false"
- id="xlc.c.compiler.option.optimization.smp"
- name="%Option.optimization.smp"
- valueType="boolean">
- </option>
- <option
- applicabilityCalculator="org.eclipse.cdt.managedbuilder.xlc.ui.properties.XLCApplicabilityCalculator"
- category="xlc.c.compiler.category.optimization"
- command="-qsmp="
- id="xlc.c.compiler.option.optimization.smp.v10"
- name="%Option.optimization.smp.v10"
- tip="%Option.optimization.smp.v10.tooltip"
- valueType="string">
- </option>
- <option
- name="%Option.optimization.Spill"
- category="xlc.c.compiler.category.optimization"
- command="-qspill="
- id="xlc.c.compiler.option.optimization.spill"
- valueType="string">
- </option>
- <option
- applicabilityCalculator="org.eclipse.cdt.managedbuilder.xlc.ui.properties.XLCApplicabilityCalculator"
- category="xlc.c.compiler.category.optimization"
- command="-qstrict"
- defaultValue="false"
- id="xlc.c.compiler.option.optimization.strict"
- name="%Option.optimization.Strict"
- valueType="boolean">
- </option>
- <option
- applicabilityCalculator="org.eclipse.cdt.managedbuilder.xlc.ui.properties.XLCApplicabilityCalculator"
- category="xlc.c.compiler.category.optimization"
- command="-qstrict="
- id="xlc.c.compiler.option.optimization.strict.v10"
- name="%Option.optimization.Strict.v10"
- tip="%Option.optimization.Strict.v10.tooltip"
- valueType="string">
- </option>
- <option
- name="%Option.optimization.loopinduction"
- category="xlc.c.compiler.category.optimization"
- id="xlc.c.compiler.option.optimization.loopinduction"
- valueType="enumerated">
- <enumeratedOptionValue
- id="org.eclipse.cdt.managedbuilder.xlc.ui.enumeratedOptionValue10"
- isDefault="true"
- name="%Option.default">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.optimization.strict_induction"
- command="-qstrict_induction"
- id="xlc.c.optimization.optimize.strict_induction">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.optimization.nostrict_induction"
- isDefault="false"
- command="-qnostrict_induction"
- id="xlc.c.optimization.optimize.nostrict_induction">
- </enumeratedOptionValue>
- </option>
- <option
- defaultValue="false"
- name="%Option.optimization.tocdata"
- category="xlc.c.compiler.category.optimization"
- command="-qtocdata"
- id="xlc.c.compiler.option.optimization.tocdata"
- valueType="boolean">
- </option>
- <optionCategory
- name="%OptionCategory.ifp"
- id="xlc.c.compiler.category.ifp">
- </optionCategory>
- <option
- name="%Option.y"
- category="xlc.c.compiler.category.ifp"
- id="xlc.c.compiler.option.ifp.y"
- valueType="enumerated">
- <enumeratedOptionValue
- name="%Option.none"
- isDefault="false"
- id="xlc.c.compiler.option.ifp.y.none">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.y.n"
- isDefault="false"
- command="-yn"
- id="xlc.c.compiler.option.ifp.y.n">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.y.m"
- isDefault="false"
- command="-ym"
- id="xlc.c.compiler.option.ifp.y.m">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.y.p"
- isDefault="false"
- command="-yp"
- id="xlc.c.compiler.option.ifp.y.p">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.y.z"
- isDefault="false"
- command="-yz"
- id="xlc.c.compiler.option.ifp.y.z">
- </enumeratedOptionValue>
- </option>
- <option
- name="%Option.float"
- category="xlc.c.compiler.category.ifp"
- command="-qfloat="
- id="xlc.c.compiler.option.ifp.qfloat"
- valueType="string">
- </option>
- <option
- name="%Option.flttrap"
- category="xlc.c.compiler.category.ifp"
- command="-qflttrap="
- id="xlc.c.compiler.option.ifp.qflttrap"
- valueType="string">
- </option>
- <option
- name="%Option.longlong"
- category="xlc.c.compiler.category.ifp"
- id="xlc.c.compiler.option.ifp.longlong"
- valueType="enumerated">
- <enumeratedOptionValue
- name="%Option.default"
- isDefault="true"
- id="xlc.c.ifp.y.default">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.longlong"
- command="-qlonglong"
- id="xlc.c.ifp.qlonglong">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.longlong.nolonglong"
- command="-qnolonglong"
- id="xlc.c.ifp.qnolonglong">
- </enumeratedOptionValue>
- </option>
- <option
- name="%Option.rndflt"
- category="xlc.c.compiler.category.ifp"
- id="xlc.c.compiler.option.ifp.rndflt"
- valueType="enumerated">
- <enumeratedOptionValue
- name="%Option.none"
- isDefault="false"
- id="xlc.c.ifp.rndflt.none">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.rndflt.nearest"
- isDefault="false"
- command="-qrndflt=nearest"
- id="xlc.c.ifp.qrndflt.nearest">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.rndflt.minusinf"
- isDefault="false"
- command="-qrndflt=minusinf"
- id="xlc.c.ifp.qrndflt.minusinf">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.rndflt.plusinf"
- isDefault="false"
- command="-qrndflt=plusinf"
- id="xlc.c.ifp.qrndflt.plusinf">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.rndflt.zero"
- isDefault="false"
- command="-qrndflt=zero"
- id="xlc.c.ifp.qrndflt.zero">
- </enumeratedOptionValue>
- </option>
- <optionCategory
- name="%OptionCategory.cc"
- id="xlc.c.compiler.category.cc">
- </optionCategory>
- <option
- name="%Option.B"
- category="xlc.c.compiler.category.cc"
- command="-B"
- id="xlc.c.compiler.option.cc.B"
- valueType="string">
- </option>
- <option
- name="%Option.F"
- category="xlc.c.compiler.category.cc"
- command="-F"
- id="xlc.c.compiler.option.cc.F"
- valueType="string">
- </option>
- <option
- name="%Option.t"
- category="xlc.c.compiler.category.cc"
- command="-t"
- id="xlc.c.compiler.option.cc.t"
- valueType="string">
- </option>
- <option
- name="%Option.optimization.w"
- category="xlc.c.compiler.category.cc"
- command="-W"
- id="xlc.c.compiler.option.cc.W"
- valueType="string">
- </option>
- <option
- name="%Option.maxmem"
- category="xlc.c.compiler.category.cc"
- command="-qmaxmem="
- id="xlc.c.compiler.option.cc.maxmem"
- valueType="string">
- </option>
- <option
- browseType="directory"
- category="xlc.c.compiler.category.cc"
- command="-qpath="
- id="xlc.c.compiler.option.cc.path"
- name="%Option.path"
- valueType="string">
- </option>
- <option
- applicabilityCalculator="org.eclipse.cdt.managedbuilder.xlc.ui.properties.XLCApplicabilityCalculator"
- category="xlc.c.compiler.category.cc"
- command="-qtls="
- id="xlc.c.compiler.option.cc.tls"
- name="%Option.tls"
- valueType="string">
- </option>
- <option
- applicabilityCalculator="org.eclipse.cdt.managedbuilder.xlc.ui.properties.XLCApplicabilityCalculator"
- category="xlc.c.compiler.category.objcc"
- id="xlc.c.compiler.option.cc.tls.v10"
- name="%Option.tls"
- valueType="enumerated">
- <enumeratedOptionValue
- id="xlc.c.compiler.option.cc.tls.none"
- isDefault="true"
- name="%Option.none">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtls=unsupported"
- id="xlc.c.compiler.option.cc.tls.unsupported"
- isDefault="true"
- name="%Option.tls.unsupported">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtls=default"
- id="xlc.c.compiler.option.cc.tls.default"
- name="%Option.tls.default">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtls=global-dynamic"
- id="xlc.c.compiler.option.cc.tls.global-dynamic"
- name="%Option.tls.global-dynamic">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtls=initial-exec"
- id="xlc.c.compiler.option.cc.tls.initial-exec"
- name="%Option.tls.initial-exec">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtls=local-exec"
- id="xlc.c.compiler.option.cc.tls.local-exec"
- name="%Option.tls.local-exec">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qtls=local-dynamic"
- id="xlc.c.compiler.option.cc.tls.local-dynamic"
- name="%Option.tls.local-dynamic">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qnotls"
- id="xlc.c.compiler.option.cc.tls.notls"
- name="%Option.tls.notls">
- </enumeratedOptionValue>
- </option>
- <optionCategory
- name="%OptionCategory.lm"
- id="xlc.c.compiler.category.lm">
- </optionCategory>
- <option
- name="%Option.V"
- category="xlc.c.compiler.category.lm"
- command="-V"
- id="xlc.c.compiler.option.lm.V"
- valueType="boolean">
- </option>
- <option
- defaultValue="false"
- name="%Option.Warn.nowarn"
- category="xlc.c.compiler.category.lm"
- command="-w"
- id="xlc.c.compiler.option.lm.w"
- valueType="boolean">
- </option>
- <option
- name="%Option.attr"
- category="xlc.c.compiler.category.lm"
- id="xlc.c.compiler.option.lm.attr"
- valueType="enumerated">
- <enumeratedOptionValue
- name="%Option.none"
- isDefault="false"
- id="xlc.c.lm.attr.none">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.attr.noattr"
- isDefault="false"
- command="-qnoattr"
- id="xlc.c.lm.attr.noattr">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.attr.fullattr"
- isDefault="false"
- command="-qattr=full"
- id="xlc.c.lm.attr.fullattr">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.attr.attr"
- isDefault="false"
- command="-qattr"
- id="xlc.c.lm.attr.attr">
- </enumeratedOptionValue>
- </option>
- <option
- name="%Option.flag"
- category="xlc.c.compiler.category.lm"
- command="-qflag="
- id="xlc.c.compiler.option.lm.flag"
- valueType="string">
- </option>
- <option
- name="%Option.format"
- category="xlc.c.compiler.category.lm"
- command="-qformat="
- id="xlc.c.compiler.option.lm.format"
- valueType="string">
- </option>
- <option
- name="%Option.halt"
- category="xlc.c.compiler.category.lm"
- id="xlc.c.compiler.option.lm.halt"
- valueType="enumerated">
- <enumeratedOptionValue
- id="org.eclipse.cdt.managedbuilder.xlc.ui.enumeratedOptionValue1"
- isDefault="true"
- name="%Option.default">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qhalt=i"
- id="xlc.c.compiler.option.lm.halt.information"
- name="%Option.halt.information">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qhalt=w"
- id="xlc.c.compiler.option.lm.halt.warning"
- name="%Option.halt.warning">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qhalt=e"
- id="xlc.c.compiler.option.lm.halt.error"
- name="%Option.halt.error">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qhalt=s"
- id="xlc.c.compiler.option.lm.halt.severeError"
- name="%Option.halt.severeError">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qhalt=u"
- id="xlc.c.compiler.option.lm.halt.unrecoverableError"
- name="%Option.halt.unrecoverableError">
- </enumeratedOptionValue>
- </option>
- <option
- name="%Option.info"
- category="xlc.c.compiler.category.ecd"
- command="-qinfo="
- id="xlc.c.compiler.option.lm.info"
- valueType="string">
- </option>
- <option
- name="%Option.list"
- category="xlc.c.compiler.category.lm"
- command="-qlist"
- id="xlc.c.compiler.option.lm.list"
- valueType="boolean">
- </option>
- <option
- name="%Option.listopt"
- category="xlc.c.compiler.category.lm"
- command="-qlistopt"
- id="xlc.c.compiler.option.lm.listopt"
- valueType="boolean">
- </option>
- <option
- name="%Option.phsinfo"
- category="xlc.c.compiler.category.lm"
- command="-qphsinfo"
- id="xlc.c.compiler.option.lm.phsinfo"
- valueType="boolean">
- </option>
- <option
- name="%Option.noprint"
- category="xlc.c.compiler.category.lm"
- command="-qnoprint"
- id="xlc.c.compiler.option.lm.noprint"
- valueType="boolean">
- </option>
- <option
- name="%Option.report"
- category="xlc.c.compiler.category.lm"
- command="-qreport"
- id="xlc.c.compiler.option.lm.report"
- valueType="boolean">
- </option>
- <option
- name="%Option.showinc"
- category="xlc.c.compiler.category.lm"
- command="-qshowinc"
- id="xlc.c.compiler.option.lm.showinc"
- valueType="boolean">
- </option>
- <option
- name="%Option.source"
- category="xlc.c.compiler.category.lm"
- command="-qsource"
- id="xlc.c.compiler.option.lm.source"
- valueType="boolean">
- </option>
- <option
- name="%Option.srcmsg"
- category="xlc.c.compiler.category.lm"
- command="-qsrcmsg"
- id="xlc.c.compiler.option.lm.srcmsg"
- valueType="boolean">
- </option>
- <option
- name="%Option.suppress"
- category="xlc.c.compiler.category.lm"
- command="-qsuppress="
- id="xlc.c.compiler.option.lm.suppress"
- valueType="string">
- </option>
- <option
- name="%Option.tabsize"
- category="xlc.c.compiler.category.lm"
- command="-qtabsize="
- id="xlc.c.compiler.option.lm.tabsize"
- valueType="string">
- </option>
- <option
- name="%Option.warnfourcharconsts"
- category="xlc.c.compiler.category.lm"
- command="-qwarnfourcharconsts"
- id="xlc.c.compiler.option.lm.warnfourcharconsts"
- valueType="boolean">
- </option>
- <option
- name="%Option.xref"
- category="xlc.c.compiler.category.lm"
- id="xlc.c.compiler.option.lm.xref"
- valueType="enumerated">
- <enumeratedOptionValue
- name="%Option.none"
- isDefault="false"
- id="xlc.c.lm.xref.none">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.xref.noxref"
- isDefault="false"
- command="-qnoxref"
- id="xlc.c.lm.attr.noattr">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.xref.fullxref"
- isDefault="false"
- command="-qxref=full"
- id="xlc.c.lm.xref.fullxref">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.xref.xref"
- isDefault="false"
- command="-qxref"
- id="xlc.c.lm.xref.xref">
- </enumeratedOptionValue>
- </option>
- <optionCategory
- name="%OptionCategory.ecd"
- id="xlc.c.compiler.category.ecd">
- </optionCategory>
- <option
- name="%Option.g"
- category="xlc.c.compiler.category.ecd"
- command="-g"
- id="xlc.c.compiler.option.ecd.g"
- valueType="boolean">
- </option>
- <option
- name="%Option.p"
- category="xlc.c.compiler.category.ecd"
- command="-p"
- id="xlc.c.compiler.option.ecd.p"
- valueType="boolean">
- </option>
- <option
- name="%Option.pg"
- category="xlc.c.compiler.category.ecd"
- command="-pg"
- id="xlc.c.compiler.option.ecd.pg"
- valueType="boolean">
- </option>
- <option
- name="%Option.check"
- category="xlc.c.compiler.category.ecd"
- command="-qcheck"
- id="xlc.c.compiler.option.ecd.check"
- valueType="boolean">
- </option>
- <option
- name="%Option.dbxextra"
- category="xlc.c.compiler.category.ecd"
- command="-qdbxextra"
- id="xlc.c.compiler.option.ecd.dbxextra"
- valueType="boolean">
- </option>
- <option
- name="%Option.extchk"
- category="xlc.c.compiler.category.ecd"
- command="-qextchk"
- id="xlc.c.compiler.option.ecd.extchk"
- valueType="boolean">
- </option>
- <option
- name="%Option.fullpath"
- category="xlc.c.compiler.category.ecd"
- command="-qfullpath"
- id="xlc.c.compiler.option.ecd.fullpath"
- valueType="boolean">
- </option>
- <option
- name="%Option.genproto"
- category="xlc.c.compiler.category.ecd"
- id="xlc.c.compiler.option.ecd.genproto"
- valueType="enumerated">
- <enumeratedOptionValue
- name="%Option.none"
- isDefault="false"
- id="xlc.c.ecd.genproto.none">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.genproto.general"
- isDefault="false"
- command="-qgenproto"
- id="xlc.c.ecd.genproto">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- name="%Option.genproto.parmgenproto"
- isDefault="false"
- command="-qgenproto=parmnames"
- id="xlc.c.ecd.genproto.parmnames">
- </enumeratedOptionValue>
- </option>
- <option
- name="%Option.heapdebug"
- category="xlc.c.compiler.category.ecd"
- command="-qheapdebug"
- id="xlc.c.compiler.option.ecd.heapdebug"
- valueType="boolean">
- </option>
- <option
- name="%Option.initauto"
- category="xlc.c.compiler.category.ecd"
- command="-qinitauto="
- id="xlc.c.compiler.option.ecd.initauto"
- valueType="string">
- </option>
- <option
- name="%Option.linedebug"
- category="xlc.c.compiler.category.ecd"
- command="-qlinedebug"
- id="xlc.c.compiler.option.ecd.linedebug"
- valueType="boolean">
- </option>
- <option
- name="%Option.maxerr"
- category="xlc.c.compiler.category.ecd"
- command="-qmaxerr="
- id="xlc.c.compiler.option.ecd.maxerr"
- valueType="string">
- </option>
- <option
- name="%Option.proto"
- category="xlc.c.compiler.category.ecd"
- command="-qproto"
- id="xlc.c.compiler.option.ecd.proto"
- valueType="boolean">
- </option>
- <optionCategory
- name="%OptionCategory.Misc"
- id="xlc.c.compiler.category.other">
- </optionCategory>
- <option
- name="%Option.compiler.other"
- category="xlc.c.compiler.category.other"
- id="xlc.c.compiler.option.misc.other"
- valueType="string">
- </option>
-
-
- <!-- Version 9 Options -->
- <option
- applicabilityCalculator="org.eclipse.cdt.managedbuilder.xlc.ui.properties.XLCApplicabilityCalculator"
- category="xlc.c.compiler.category.ifp"
- id="xlc.c.compiler.option.ifp.dfp"
- name="%Option.dfp"
- valueType="enumerated">
- <enumeratedOptionValue
- id="xlc.c.compiler.option.ifp.dfp.default"
- isDefault="true"
- name="%Option.default">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qdfp"
- id="xlc.c.compiler.option.ifp.dfp.enabled"
- name="%Option.dfp.enabled">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qnodfp"
- id="xlc.c.compiler.option.ifp.dfp.disabled"
- name="%Option.dfp.disabled">
- </enumeratedOptionValue>
- </option>
- <option
- applicabilityCalculator="org.eclipse.cdt.managedbuilder.xlc.ui.properties.XLCApplicabilityCalculator"
- category="xlc.c.compiler.category.output"
- command="-C!"
- defaultValue="false"
- id="xlc.c.compiler.option.preprocessor.PreprocessRemoveComments"
- name="%Option.PreprocRemoveComments"
- valueType="boolean">
- </option>
- <option
- applicabilityCalculator="org.eclipse.cdt.managedbuilder.xlc.ui.properties.XLCApplicabilityCalculator"
- category="xlc.c.compiler.category.ecd"
- command="-qoptdebug"
- defaultValue="false"
- id="xlc.c.compiler.option.ecd.optdebug"
- name="%Option.optdebug"
- valueType="boolean">
- </option>
- <option
- applicabilityCalculator="org.eclipse.cdt.managedbuilder.xlc.ui.properties.XLCApplicabilityCalculator"
- category="xlc.c.compiler.category.output"
- id="xlc.c.compiler.option.output.macros"
- name="%Option.macros"
- valueType="enumerated">
- <enumeratedOptionValue
- id="xlc.c.compiler.option.output.macros.none"
- isDefault="true"
- name="%Option.none">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qshowmacros=all"
- id="xlc.c.compiler.option.output.macros.all"
- name="%Option.macros.all">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qshowmacros=pre"
- id="xlc.c.compiler.option.output.macros.pre"
- name="%Option.macros.pre">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qshowmacros=nopre"
- id="xlc.c.compiler.option.output.macros.nopre"
- name="%Option.macros.nopre">
- </enumeratedOptionValue>
- </option>
- <option
- applicabilityCalculator="org.eclipse.cdt.managedbuilder.xlc.ui.properties.XLCApplicabilityCalculator"
- category="xlc.c.compiler.category.output"
- command="-qnotimestamps"
- id="xlc.c.compiler.option.output.timestamps"
- name="%Options.timestamps"
- valueType="boolean">
- </option>
- <optionCategory
- id="xlc.c.compiler.category.objcc"
- name="%OptionCategory.objcc">
- </optionCategory>
- <option
- applicabilityCalculator="org.eclipse.cdt.managedbuilder.xlc.ui.properties.XLCApplicabilityCalculator"
- category="xlc.c.compiler.category.optimization"
- id="xlc.c.compiler.option.optimization.qassert"
- name="%Option.optimization.qassert"
- valueType="enumerated">
- <enumeratedOptionValue
- command="-qassert=norefalign"
- id="xlc.c.compiler.option.optimization.qassert.norefalign"
- isDefault="false"
- name="%Option.optimization.qassert.norefalign">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qassert=refalign"
- id="xlc.c.compiler.option.optimization.qassert.refalign"
- isDefault="false"
- name="%Option.optimization.qassert.refalign">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- id="xlc.c.compiler.option.optimization.qassert.defaut"
- isDefault="true"
- name="%Option.default">
- </enumeratedOptionValue>
- </option>
- <option
- applicabilityCalculator="org.eclipse.cdt.managedbuilder.xlc.ui.properties.XLCApplicabilityCalculator"
- category="xlc.c.compiler.category.ecd"
- command="-qfunctrace"
- id="xlc.c.compiler.option.qfunctrace"
- name="%Option.qfunctrace"
- valueType="boolean">
- </option>
- <option
- applicabilityCalculator="org.eclipse.cdt.managedbuilder.xlc.ui.properties.XLCApplicabilityCalculator"
- category="xlc.c.compiler.category.optimization"
- command="-qinline"
- id="xlc.c.compiler.option.optimization.qinline"
- name="%Option.optimization.inline"
- valueType="string">
- <enumeratedOptionValue
- id="xlc.c.compiler.option.optimization.arch.default"
- isDefault="true"
- name="%Option.default">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=auto"
- id="xlc.c.compiler.option.optimization.arch.auto"
- name="auto">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=com"
- id="xlc.c.compiler.option.optimization.arch.com"
- name="com">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=403"
- id="xlc.c.compiler.option.optimization.arch.403"
- name="PowerPC® 403">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=601"
- id="xlc.c.compiler.option.optimization.arch.601"
- name="PowerPC® 601">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=602"
- id="xlc.c.compiler.option.optimization.arch.602"
- name="PowerPC® 602">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=603"
- id="xlc.c.compiler.option.optimization.arch.603"
- name="PowerPC® 603">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=604"
- id="xlc.c.compiler.option.optimization.arch.604"
- name="PowerPC® 604">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=pwr"
- id="xlc.c.compiler.option.optimization.arch.pwr"
- name="POWER(TM)">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=pwr2"
- id="xlc.c.compiler.option.optimization.arch.pwr2"
- name="POWER2(TM)">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=pwr2s"
- id="xlc.c.compiler.option.optimization.arch.pwr2s"
- name="POWER2(TM) s">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=pwr2sc"
- id="xlc.c.compiler.option.optimization.arch.pwr2sc"
- name="POWER2(TM) Super Chip">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=pwr3"
- id="xlc.c.compiler.option.optimization.arch.pwr3"
- name="POWER3(TM)">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=pwr4"
- id="xlc.c.compiler.option.optimization.arch.pwr4"
- name="POWER4(TM)">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=pwr5"
- id="xlc.c.compiler.option.optimization.arch.pwr5"
- name="POWER5(TM)">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=ppc"
- id="xlc.c.compiler.option.optimization.arch.ppc"
- name="PowerPC®">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=ppc64"
- id="xlc.c.compiler.option.optimization.arch.ppc64"
- name="%Option.optimization.arch.ppc64">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=ppcgr"
- id="xlc.c.compiler.option.optimization.arch.ppcgr"
- name="%Option.optimization.arch.ppcgr">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=ppc64gr"
- id="xlc.c.compiler.option.optimization.arch.ppc64gr"
- name="%Option.optimization.arch.ppc64gr">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=ppcs4grsq"
- id="xlc.c.compiler.option.optimization.arch.ppc64grsq"
- name="%Option.optimization.arch.ppc64grsq">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=ppc64v"
- id="xlc.c.compiler.option.optimization.arch.ppc64v"
- name="%Option.optimization.arch.ppc64v">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=ppc970"
- id="xlc.c.compiler.option.optimization.arch.ppc970"
- name="PowerPC® 970">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=rs64a"
- id="xlc.c.compiler.option.optimization.arch.rs64a"
- name="RS64I">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=rs64b"
- id="xlc.c.compiler.option.optimization.arch.rs64b"
- name="RS64II">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=rs64c"
- id="xlc.c.compiler.option.optimization.arch.rs64c"
- name="RS64III">
- </enumeratedOptionValue>
- </option>
- <option
- applicabilityCalculator="org.eclipse.cdt.managedbuilder.xlc.ui.properties.XLCApplicabilityCalculator"
- category="xlc.c.compiler.category.lm"
- command="-qlistfmt"
- id="xlc.c.compiler.option.lm.qlistfmt"
- name="%Option.qlistfmt"
- valueType="string">
- </option>
- <option
- category="xlc.c.compiler.category.optimization"
- command="-qlibmpi"
- defaultValue="false"
- id="xlc.c.compiler.option.optimization.qlibmpi"
- name="%Option.optimization.qlibmpi"
- valueType="boolean">
- </option>
- <option
- applicabilityCalculator="org.eclipse.cdt.managedbuilder.xlc.ui.properties.XLCApplicabilityCalculator"
- category="xlc.c.compiler.category.optimization"
- command="-qsimd=auto"
- id="xlc.c.compiler.option.optimization.qsimd"
- name="%Option.optimization.qsimd"
- valueType="boolean">
- </option>
- <option
- category="xlc.c.compiler.category.lm"
- command="-qskipsrc=hide"
- id="xlc.c.compiler.option.lm.qskipsrc"
- name="%Option.qskipsrc"
- valueType="boolean">
- </option>
- <option
- applicabilityCalculator="org.eclipse.cdt.managedbuilder.xlc.ui.properties.XLCApplicabilityCalculator"
- category="xlc.c.compiler.category.optimization"
- id="xlc.c.compiler.option.optimization.qprefetch"
- name="%Option.optimization.qprefetch"
- valueType="string">
- <enumeratedOptionValue
- id="xlc.c.compiler.option.optimization.arch.default"
- isDefault="true"
- name="%Option.default">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=auto"
- id="xlc.c.compiler.option.optimization.arch.auto"
- name="auto">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=com"
- id="xlc.c.compiler.option.optimization.arch.com"
- name="com">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=403"
- id="xlc.c.compiler.option.optimization.arch.403"
- name="PowerPC® 403">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=601"
- id="xlc.c.compiler.option.optimization.arch.601"
- name="PowerPC® 601">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=602"
- id="xlc.c.compiler.option.optimization.arch.602"
- name="PowerPC® 602">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=603"
- id="xlc.c.compiler.option.optimization.arch.603"
- name="PowerPC® 603">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=604"
- id="xlc.c.compiler.option.optimization.arch.604"
- name="PowerPC® 604">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=pwr"
- id="xlc.c.compiler.option.optimization.arch.pwr"
- name="POWER(TM)">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=pwr2"
- id="xlc.c.compiler.option.optimization.arch.pwr2"
- name="POWER2(TM)">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=pwr2s"
- id="xlc.c.compiler.option.optimization.arch.pwr2s"
- name="POWER2(TM) s">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=pwr2sc"
- id="xlc.c.compiler.option.optimization.arch.pwr2sc"
- name="POWER2(TM) Super Chip">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=pwr3"
- id="xlc.c.compiler.option.optimization.arch.pwr3"
- name="POWER3(TM)">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=pwr4"
- id="xlc.c.compiler.option.optimization.arch.pwr4"
- name="POWER4(TM)">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=pwr5"
- id="xlc.c.compiler.option.optimization.arch.pwr5"
- name="POWER5(TM)">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=ppc"
- id="xlc.c.compiler.option.optimization.arch.ppc"
- name="PowerPC®">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=ppc64"
- id="xlc.c.compiler.option.optimization.arch.ppc64"
- name="%Option.optimization.arch.ppc64">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=ppcgr"
- id="xlc.c.compiler.option.optimization.arch.ppcgr"
- name="%Option.optimization.arch.ppcgr">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=ppc64gr"
- id="xlc.c.compiler.option.optimization.arch.ppc64gr"
- name="%Option.optimization.arch.ppc64gr">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=ppcs4grsq"
- id="xlc.c.compiler.option.optimization.arch.ppc64grsq"
- name="%Option.optimization.arch.ppc64grsq">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=ppc64v"
- id="xlc.c.compiler.option.optimization.arch.ppc64v"
- name="%Option.optimization.arch.ppc64v">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=ppc970"
- id="xlc.c.compiler.option.optimization.arch.ppc970"
- name="PowerPC® 970">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=rs64a"
- id="xlc.c.compiler.option.optimization.arch.rs64a"
- name="RS64I">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=rs64b"
- id="xlc.c.compiler.option.optimization.arch.rs64b"
- name="RS64II">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qarch=rs64c"
- id="xlc.c.compiler.option.optimization.arch.rs64c"
- name="RS64III">
- </enumeratedOptionValue>
- </option>
- <option
- applicabilityCalculator="org.eclipse.cdt.managedbuilder.xlc.ui.properties.XLCApplicabilityCalculator"
- category="xlc.c.compiler.category.objcc"
- id="xlc.c.compiler.option.output.qstackprotect"
- name="%Option.qstackprotect"
- valueType="string">
- </option>
- </tool>
- <tool
- errorParsers="org.eclipse.cdt.errorparsers.xlc.XlcErrorParser"
- id="org.eclipse.cdt.managedbuilder.xlc.ui.tool.abstractLinker"
- isAbstract="true"
- name="%tool.linker.exe.abstract.name"
- outputFlag="-o">
- <envVarBuildPath
- pathType="buildpathLibrary"
- variableList="LIBRARY_PATH">
- </envVarBuildPath>
- <optionCategory
- name="%OptionCategory.Libs"
- id="xlc.c.link.category.libs">
- </optionCategory>
- <option
- name="%Option.Libs"
- category="xlc.c.link.category.libs"
- command="-l"
- id="xlc.c.link.option.libs"
- browseType="none"
- valueType="libs">
- </option>
- <option
- name="%Option.Libsearch"
- category="xlc.c.link.category.libs"
- command="-L"
- id="xlc.c.link.option.paths"
- browseType="directory"
- valueType="libPaths">
- </option>
- <option
- name="%Option.UserObjs"
- category="xlc.c.link.category.libs"
- browseType="file"
- valueType="userObjs"
- id="xlc.c.link.option.userobjs">
- </option>
- <optionCategory
- name="%OptionCategory.Linking"
- id="xlc.c.compiler.category.linking">
- </optionCategory>
- <option
- name="%Option.Linking.b"
- category="xlc.c.compiler.category.linking"
- command="-b"
- id="xlc.c.compiler.option.linking.b"
- valueType="string">
- </option>
- <option
- defaultValue="false"
- name="%Option.linking.brtl"
- category="xlc.c.compiler.category.linking"
- command="-brtl"
- id="xlc.c.compiler.option.linking.brtl"
- valueType="boolean">
- </option>
- <option
- defaultValue="false"
- name="%Option.linking.bundle"
- category="xlc.c.compiler.category.linking"
- command="-bundle"
- id="xlc.c.compiler.option.linking.bundle"
- valueType="boolean">
- </option>
- <option
- name="%Option.linking.bundle_loader"
- category="xlc.c.compiler.category.linking"
- command="-bundle_loader="
- id="xlc.c.compiler.option.linking.bundle_loader"
- valueType="string">
- </option>
- <option
- browseType="file"
- category="xlc.c.compiler.category.linking"
- command="-f="
- id="xlc.c.compiler.option.linking.f"
- name="%Option.linking.f"
- valueType="string">
- </option>
- <option
- name="%Option.Linking.L"
- category="xlc.c.compiler.category.linking"
- command="-L"
- id="xlc.c.compiler.option.linking.L"
- valueType="string">
- </option>
- <option
- name="%Option.Linking.l"
- category="xlc.c.compiler.category.linking"
- command="-l"
- id="xlc.c.compiler.option.linking.l"
- valueType="string">
- </option>
- <option
- defaultValue="false"
- name="%Option.linking.r"
- category="xlc.c.compiler.category.linking"
- command="-r"
- id="xlc.c.compiler.option.linking.r"
- valueType="boolean">
- </option>
- <option
- name="%Option.Linking.Z"
- category="xlc.c.compiler.category.linking"
- command="-Z"
- id="xlc.c.compiler.option.linking.Z"
- valueType="string">
- </option>
- <option
- defaultValue="false"
- name="%Option.linking.inlglue"
- category="xlc.c.compiler.category.linking"
- command="-qinlglue"
- id="xlc.c.compiler.option.linking.qinlglue"
- valueType="boolean">
- </option>
- <option
- defaultValue="false"
- name="%Option.linking.lib"
- category="xlc.c.compiler.category.linking"
- command="-qlib"
- id="xlc.c.compiler.option.linking.qlib"
- valueType="boolean">
- </option>
- <option
- name="%Option.Linking.priority"
- category="xlc.c.compiler.category.linking"
- command="-qpriority="
- id="xlc.c.compiler.option.linking.priority"
- valueType="string">
- </option>
- <option
- defaultValue="false"
- name="%Option.Linker.Shared"
- category="xlc.c.compiler.category.linking"
- command="-qmkshrobj"
- id="xlc.c.link.option.mkshrobj"
- applicabilityCalculator="org.eclipse.cdt.managedbuilder.xlc.ui.properties.HiddenOptionApplicabilityCalculator"
- valueType="boolean">
- </option>
- <option
- defaultValue="false"
- name="%Option.Linker.Strip"
- category="xlc.c.compiler.category.linking"
- command="-s"
- id="xlc.c.link.option.strip"
- valueType="boolean">
- </option>
- <optionCategory
- name="%OptionCategory.Misc"
- id="xlc.c.link.category.other">
- </optionCategory>
- <option
- name="%Option.Linker.Flags"
- category="xlc.c.link.category.other"
- valueType="string"
- id="xlc.c.link.option.ldflags">
- </option>
- <inputType
- sourceContentType="org.eclipse.cdt.managedbuilder.core.compiledObjectFile"
- sources="o"
- multipleOfType="true"
- dependencyCalculator="org.eclipse.cdt.managedbuilder.makegen.internal.DefaultNoDependencyCalculator"
- buildVariable="OBJS"
- id="cdt.managedbuild.tool.xlc.c.linker.input">
- <additionalInput
- paths="$(USER_OBJS)"
- kind="additionalinputdependency">
- </additionalInput>
- <additionalInput
- paths="$(LIBS)"
- kind="additionalinput">
- </additionalInput>
- </inputType>
- <outputType
- outputs=""
- buildVariable="EXECUTABLES"
- nameProvider="org.eclipse.cdt.managedbuilder.makegen.gnu.GnuLinkOutputNameProvider"
- id="cdt.managedbuild.tool.xlc.c.linker.output">
- </outputType>
- </tool>
- <tool
- errorParsers="org.eclipse.cdt.errorparsers.xlc.XlcErrorParser"
- id="org.eclipse.cdt.managedbuilder.xlc.ui.tool.linker.abstractSOLinker"
- isAbstract="true"
- name="%tool.linker.so.abstract.name"
- superClass="org.eclipse.cdt.managedbuilder.xlc.ui.tool.abstractLinker">
- <option
- name="%Option.Linking.mkshrobj"
- id="xlc.c.link.so.option.shared"
- defaultValue="true"
- superClass="xlc.c.link.option.mkshrobj">
- </option>
- <option
- name="%Option.Linking.e"
- category="xlc.c.compiler.category.linking"
- command="-e "
- id="xlc.c.compiler.option.linking.e"
- valueType="string">
- </option>
- <option
- defaultValue="false"
- name="%Option.linking.G"
- category="xlc.c.compiler.category.linking"
- command="-G"
- id="xlc.c.compiler.option.linking.G"
- valueType="boolean">
- </option>
- <option
- browseType="file"
- category="xlc.c.compiler.category.linking"
- command="-qexpfile="
- id="xlc.c.compiler.option.linking.expfile"
- name="%Option.linking.expfile"
- valueType="string">
- </option>
- <outputType
- outputs="so"
- outputPrefix="lib"
- buildVariable="LIBRARIES"
- superClass="cdt.managedbuild.tool.xlc.c.linker.output"
- id="cdt.managedbuild.tool.xlc.c.linker.so.debug.output">
- </outputType>
- </tool>
- <tool
- id="cdt.managedbuild.tool.xlc.c.compiler"
- isAbstract="false"
- name="%tool.c.compiler.name"
- superClass="cdt.managedbuild.tool.xlc.c.compiler.abstract">
- <inputType
- dependencyContentType="org.eclipse.cdt.core.cHeader"
- dependencyExtensions="h"
- id="cdt.managedbuild.tool.xlc.c.compiler.input"
- name="%inputType.c.name"
- primaryInput="true"
- sourceContentType="org.eclipse.cdt.core.cSource"
- sources="c">
- </inputType>
- <outputType
- buildVariable="OBJS"
- id="cdt.managedbuild.tool.xlc.c.compiler.output"
- outputs="o">
- </outputType>
- </tool>
- <tool
- id="cdt.managedbuild.tool.xlc.cpp.compiler"
- isAbstract="false"
- name="%tool.cpp.compiler.name"
- superClass="cdt.managedbuild.tool.xlc.cpp.compiler.abstract">
- <inputType
- dependencyContentType="org.eclipse.cdt.core.cHeader"
- dependencyExtensions="h"
- id="cdt.managedbuild.tool.xlc.cpp.c.compiler.input"
- name="%inputType.c.name.2"
- primaryInput="true"
- sourceContentType="org.eclipse.cdt.core.cSource"
- sources="c">
- </inputType>
- <inputType
- dependencyContentType="org.eclipse.cdt.core.cxxHeader"
- dependencyExtensions="h,H,hpp"
- id="cdt.managedbuild.tool.xlc.cpp.compiler.input"
- name="%inputType.cpp.name"
- primaryInput="true"
- sourceContentType="org.eclipse.cdt.core.cxxSource"
- sources="c,C,cc,cxx,cpp">
- </inputType>
- <outputType
- buildVariable="OBJS"
- id="org.eclipse.cdt.managedbuilder.xlc.cpp.compiler.output"
- outputs="o">
- </outputType>
- </tool>
- </extension>
- <extension
- point="org.eclipse.ui.preferencePages">
- <page
- category="org.eclipse.cdt.ui.preferences.CPluginPreferencePage"
- class="org.eclipse.cdt.managedbuilder.xlc.ui.preferences.XLCompilerPreferencePage"
- id="org.eclipse.cdt.managedbuilder.xlc.ui.preferences.XLCompilerPreferencePage"
- name="%XLCompilerPreferencePage.name">
- </page>
- </extension>
- <extension
- point="org.eclipse.core.runtime.preferences">
- <initializer
- class="org.eclipse.cdt.managedbuilder.xlc.ui.preferences.PreferenceInitializer">
- </initializer>
- </extension>
- <extension
- point="org.eclipse.ui.propertyPages">
- <page
- category="org.eclipse.cdt.managedbuilder.ui.properties.Page_head_build"
- class="org.eclipse.cdt.managedbuilder.xlc.ui.properties.XLCompilerPropertyPage"
- id="org.eclipse.cdt.managedbuilder.xlc.ui.properties.samplePropertyPage"
- name="%XLCompilerPropertyPage.name">
- <filter
- name="projectNature"
- value="org.eclipse.cdt.managedbuilder.core.managedBuildNature">
- </filter>
- <enabledWhen>
- <or>
- <instanceof value="org.eclipse.core.resources.IProject"/>
- <instanceof value="org.eclipse.cdt.core.model.ICProject"/>
- <instanceof value="org.eclipse.core.resources.IFolder"/>
- <instanceof value="org.eclipse.cdt.core.model.ICContainer"/>
- <instanceof value="org.eclipse.cdt.core.model.ITranslationUnit"/>
- <instanceof value="org.eclipse.core.resources.IFile"/>
- </or>
- </enabledWhen>
- </page>
- </extension>
- <extension
- point="org.eclipse.cdt.managedbuilder.ui.newWizardPages">
- <wizardPage
- ID="org.eclipse.cdt.managedbuilder.xlc.ui.XlcSettingsWizardPage"
- operationClass="org.eclipse.cdt.managedbuilder.xlc.ui.wizards.XLCSettingsWizardRunnable"
- pageClass="org.eclipse.cdt.managedbuilder.xlc.ui.wizards.XLCSettingsWizardPage">
- <projectType
- projectTypeID="cdt.managedbuild.target.xlc.exe">
- </projectType>
- <projectType
- projectTypeID="cdt.managedbuild.target.xlc.so">
- </projectType>
- <projectType
- projectTypeID="cdt.managedbuild.target.xlc.lib">
- </projectType>
- </wizardPage>
- </extension>
- <!--extension
- point="org.eclipse.core.variables.dynamicVariables">
- <variable
- description="%variableDescription"
- name="XL_compilerRoot"
- resolver="org.eclipse.cdt.managedbuilder.xlc.ui.variables.DynamicVariableResolver"
- supportsArgument="true">
- </variable>
- </extension -->
-</plugin>
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/aix/AixConfigurationEnvironmentSupplier.java b/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/aix/AixConfigurationEnvironmentSupplier.java
deleted file mode 100644
index d65417ddc94..00000000000
--- a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/aix/AixConfigurationEnvironmentSupplier.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.cdt.managedbuilder.xlc.aix;
-
-import org.eclipse.cdt.managedbuilder.core.IConfiguration;
-import org.eclipse.cdt.managedbuilder.envvar.IBuildEnvironmentVariable;
-import org.eclipse.cdt.managedbuilder.envvar.IConfigurationEnvironmentVariableSupplier;
-import org.eclipse.cdt.managedbuilder.envvar.IEnvironmentVariableProvider;
-import org.eclipse.cdt.managedbuilder.internal.envvar.BuildEnvVar;
-
-public class AixConfigurationEnvironmentSupplier implements IConfigurationEnvironmentVariableSupplier {
- static final String VARNAME = "PATH";
- static final String BINPATH = "/usr/vac/bin";
- static final String DELIMITER_AIX = ":";
- static final String PROPERTY_DELIMITER = "path.separator";
- static final String PROPERTY_OSNAME = "os.name";
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.envvar.IConfigurationEnvironmentVariableSupplier#getVariable(java.lang.String, org.eclipse.cdt.managedbuilder.core.IConfiguration, org.eclipse.cdt.managedbuilder.envvar.IEnvironmentVariableProvider)
- */
- @Override
- public IBuildEnvironmentVariable getVariable(String variableName, IConfiguration configuration,
- IEnvironmentVariableProvider provider) {
-
- if (variableName == null)
- return null;
- if (!VARNAME.equalsIgnoreCase(variableName))
- return null;
- return new BuildEnvVar(VARNAME, BINPATH, IBuildEnvironmentVariable.ENVVAR_PREPEND,
- System.getProperty(PROPERTY_DELIMITER, DELIMITER_AIX));
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.envvar.IConfigurationEnvironmentVariableSupplier#getVariables(org.eclipse.cdt.managedbuilder.core.IConfiguration, org.eclipse.cdt.managedbuilder.envvar.IEnvironmentVariableProvider)
- */
- @Override
- public IBuildEnvironmentVariable[] getVariables(IConfiguration configuration,
- IEnvironmentVariableProvider provider) {
-
- IBuildEnvironmentVariable[] tmp = new IBuildEnvironmentVariable[1];
- tmp[0] = getVariable(VARNAME, configuration, provider);
- if (tmp[0] != null)
- return tmp;
- return null;
- }
-}
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/aix/AixPathResolver.java b/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/aix/AixPathResolver.java
deleted file mode 100644
index 0a5f64f6558..00000000000
--- a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/aix/AixPathResolver.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.cdt.managedbuilder.xlc.aix;
-
-import org.eclipse.cdt.managedbuilder.core.IBuildPathResolver;
-import org.eclipse.cdt.managedbuilder.core.IConfiguration;
-
-public class AixPathResolver implements IBuildPathResolver {
- static final String DELIMITER_AIX = ":";
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.core.IBuildPathResolver#resolveBuildPaths(int, java.lang.String, java.lang.String, org.eclipse.cdt.managedbuilder.core.IConfiguration)
- */
- @Override
- public String[] resolveBuildPaths(int pathType, String variableName, String variableValue,
- IConfiguration configuration) {
- return variableValue.split(DELIMITER_AIX);
- }
-}
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/Messages.java b/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/Messages.java
deleted file mode 100644
index e450d67e429..00000000000
--- a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/Messages.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2011 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.cdt.managedbuilder.xlc.ui;
-
-import org.eclipse.osgi.util.NLS;
-
-public class Messages extends NLS {
- private static final String BUNDLE_NAME = "org.eclipse.cdt.managedbuilder.xlc.ui.messages"; //$NON-NLS-1$
- public static String XLCompiler_v8;
- public static String XLCompiler_v9;
- public static String XLCompiler_v10;
- public static String XLCompiler_v11;
- public static String XLCompilerPreferencePage_0;
- public static String XLCompilerPreferencePage_1;
- public static String XLCompilerPreferencePage_2;
- public static String XLCompilerPreferencePage_3;
- public static String XLCompilerPropertyPage_0;
- public static String XLCompilerPropertyPage_1;
- public static String XLCompilerPropertyPage_2;
- public static String XLCSettingsWizardPage_0;
- public static String XLCSettingsWizardPage_1;
- public static String XLCSettingsWizardPage_2;
- public static String XLCSettingsWizardPage_3;
- public static String XLCSettingsWizardPage_4;
- public static String XLCSettingsWizardPage_5;
- static {
- // initialize resource bundle
- NLS.initializeMessages(BUNDLE_NAME, Messages.class);
- }
-
- private Messages() {
- }
-}
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/XLCProjectMacroSupplier.java b/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/XLCProjectMacroSupplier.java
deleted file mode 100644
index b156d235a70..00000000000
--- a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/XLCProjectMacroSupplier.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.managedbuilder.xlc.ui;
-
-import org.eclipse.cdt.core.cdtvariables.ICdtVariable;
-import org.eclipse.cdt.managedbuilder.core.IManagedProject;
-import org.eclipse.cdt.managedbuilder.internal.macros.BuildMacro;
-import org.eclipse.cdt.managedbuilder.macros.IBuildMacro;
-import org.eclipse.cdt.managedbuilder.macros.IBuildMacroProvider;
-import org.eclipse.cdt.managedbuilder.macros.IProjectBuildMacroSupplier;
-import org.eclipse.cdt.managedbuilder.xlc.ui.preferences.PreferenceConstants;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.QualifiedName;
-import org.eclipse.jface.preference.IPreferenceStore;
-
-/**
- * @author crecoskie
- *
- */
-public class XLCProjectMacroSupplier implements IProjectBuildMacroSupplier {
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.macros.IProjectBuildMacroSupplier#getMacro(java.lang.String, org.eclipse.cdt.managedbuilder.core.IManagedProject, org.eclipse.cdt.managedbuilder.macros.IBuildMacroProvider)
- */
- @Override
- public IBuildMacro getMacro(String macroName, IManagedProject project, IBuildMacroProvider provider) {
-
- if (macroName.equals(PreferenceConstants.P_XL_COMPILER_ROOT)) {
- String compilerPath = null;
-
- // figure out compiler path from properties and preferences
-
- // search for property first
- IProject theProject = (IProject) project.getOwner();
- try {
- compilerPath = theProject
- .getPersistentProperty(new QualifiedName("", PreferenceConstants.P_XL_COMPILER_ROOT));
- } catch (CoreException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
-
- if (compilerPath == null) {
- // use the workbench preference
- IPreferenceStore prefStore = XLCUIPlugin.getDefault().getPreferenceStore();
- compilerPath = prefStore.getString(PreferenceConstants.P_XL_COMPILER_ROOT);
- }
-
- BuildMacro macro = new BuildMacro(macroName, ICdtVariable.VALUE_PATH_DIR, compilerPath);
-
- return macro;
- }
-
- else
- return provider.getMacro(macroName, IBuildMacroProvider.CONTEXT_PROJECT, project, true);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.macros.IProjectBuildMacroSupplier#getMacros(org.eclipse.cdt.managedbuilder.core.IManagedProject, org.eclipse.cdt.managedbuilder.macros.IBuildMacroProvider)
- */
- @Override
- public IBuildMacro[] getMacros(IManagedProject project, IBuildMacroProvider provider) {
-
- String macroName = PreferenceConstants.P_XL_COMPILER_ROOT;
-
- String compilerPath = null;
-
- // figure out compiler path from properties and preferences
-
- // search for property first
- IProject theProject = (IProject) project.getOwner();
- try {
- compilerPath = theProject
- .getPersistentProperty(new QualifiedName("", PreferenceConstants.P_XL_COMPILER_ROOT));
- } catch (CoreException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
-
- if (compilerPath == null) {
- // use the workbench preference
- IPreferenceStore prefStore = XLCUIPlugin.getDefault().getPreferenceStore();
- compilerPath = prefStore.getString(PreferenceConstants.P_XL_COMPILER_ROOT);
- }
-
- BuildMacro macro = new BuildMacro(macroName, ICdtVariable.VALUE_PATH_DIR, compilerPath);
-
- // our array consists of our macro, plus all the macros from our parent
- IBuildMacro[] parentMacros = provider.getMacros(IBuildMacroProvider.CONTEXT_PROJECT, project, true);
-
- // look for an existing macro definition
- int foundIndex = -1;
- for (int k = 0; k < parentMacros.length; k++) {
-
- if (parentMacros[k].getName().equals(macro.getName())) {
- foundIndex = k;
- break;
- }
- }
-
- int numMacros = (foundIndex == -1) ? parentMacros.length + 1 : parentMacros.length;
-
- IBuildMacro[] macros = new IBuildMacro[numMacros];
-
- // if there was no existing value then add it to the front
- if (foundIndex == -1) {
- macros[0] = macro;
- for (int k = 1; k < macros.length; k++) {
- macros[k] = parentMacros[k - 1];
- }
- }
-
- else { // replace the old value
- for (int k = 0; k < macros.length; k++) {
- macros[k] = parentMacros[k];
- }
- macros[foundIndex] = macro;
- }
-
- return macros;
-
- }
-
-}
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/XLCUIPlugin.java b/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/XLCUIPlugin.java
deleted file mode 100644
index e616b72b05d..00000000000
--- a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/XLCUIPlugin.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.cdt.managedbuilder.xlc.ui;
-
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
-
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-import org.osgi.framework.BundleContext;
-
-/**
- * The main plugin class to be used in the desktop.
- */
-public class XLCUIPlugin extends AbstractUIPlugin {
- //The shared instance.
- private static XLCUIPlugin plugin;
- //Resource bundle.
- private ResourceBundle resourceBundle;
-
- /**
- * The constructor.
- */
- public XLCUIPlugin() {
- super();
- plugin = this;
- }
-
- /**
- * This method is called upon plug-in activation
- */
- @Override
- public void start(BundleContext context) throws Exception {
- super.start(context);
- }
-
- /**
- * This method is called when the plug-in is stopped
- */
- @Override
- public void stop(BundleContext context) throws Exception {
- super.stop(context);
- plugin = null;
- resourceBundle = null;
- }
-
- /**
- * Returns the shared instance.
- */
- public static XLCUIPlugin getDefault() {
- return plugin;
- }
-
- /**
- * Returns the string from the plugin's resource bundle,
- * or 'key' if not found.
- */
- public static String getResourceString(String key) {
- ResourceBundle bundle = XLCUIPlugin.getDefault().getResourceBundle();
- try {
- return (bundle != null) ? bundle.getString(key) : key;
- } catch (MissingResourceException e) {
- return key;
- }
- }
-
- /**
- * Returns the plugin's resource bundle,
- */
- public ResourceBundle getResourceBundle() {
- try {
- if (resourceBundle == null)
- resourceBundle = ResourceBundle.getBundle("org.eclipse.cdt.managedbuilder.gnu.ui.XlcUIPluginResources"); //$NON-NLS-1$
- } catch (MissingResourceException x) {
- resourceBundle = null;
- }
- return resourceBundle;
- }
-
-}
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/messages.properties b/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/messages.properties
deleted file mode 100644
index 7bb36f0a17d..00000000000
--- a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/messages.properties
+++ /dev/null
@@ -1,31 +0,0 @@
-###############################################################################
-# Copyright (c) 2007, 2011 IBM Corporation and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-
-XLCompiler_v8=v8.0
-XLCompiler_v9=v9.0
-XLCompiler_v10=v10.1
-XLCompiler_v11=v11.1
-XLCompilerPreferencePage_0=XL C/C++ Compiler Preferences
-XLCompilerPreferencePage_1=Compiler Root Path:
-XLCompilerPreferencePage_2=Compiler Version:
-XLCompilerPreferencePage_3=Compiler path does not exist on the local machine.
-XLCompilerPropertyPage_0=Compiler Root Path:
-XLCompilerPropertyPage_1=Compiler Version:
-XLCompilerPropertyPage_2=Compiler path does not exist on the local machine.
-XLCSettingsWizardPage_0=XL C/C++ Settings
-XLCSettingsWizardPage_1=Compiler Root Path:
-XLCSettingsWizardPage_2=Browse...
-XLCSettingsWizardPage_3=Compiler Version:
-XLCSettingsWizardPage_4=Please select the path to your compiler, and the version of the compiler that you are using.
-XLCSettingsWizardPage_5=XL Compiler Settings
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/preferences/PreferenceConstants.java b/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/preferences/PreferenceConstants.java
deleted file mode 100644
index e40749d2d1f..00000000000
--- a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/preferences/PreferenceConstants.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.cdt.managedbuilder.xlc.ui.preferences;
-
-import org.eclipse.cdt.managedbuilder.xlc.ui.Messages;
-
-/**
- * Constant definitions for plug-in preferences
- */
-public class PreferenceConstants {
-
- public static final String P_XL_COMPILER_ROOT = "XL_compilerRoot"; //$NON-NLS-1$
-
- public static final String P_XLC_COMPILER_VERSION = "XLC_compilerVersion"; //$NON-NLS-1$
-
- public static final String P_XL_COMPILER_VERSION_8 = "v8.0"; //$NON-NLS-1$
- public static final String P_XL_COMPILER_VERSION_9 = "v9.0"; //$NON-NLS-1$
- public static final String P_XL_COMPILER_VERSION_10 = "v10.1"; //$NON-NLS-1$
- public static final String P_XL_COMPILER_VERSION_11 = "v11.1"; //$NON-NLS-1$
-
- public static final String P_XL_COMPILER_VERSION_8_NAME = Messages.XLCompiler_v8;
- public static final String P_XL_COMPILER_VERSION_9_NAME = Messages.XLCompiler_v9;
- public static final String P_XL_COMPILER_VERSION_10_NAME = Messages.XLCompiler_v10;
- public static final String P_XL_COMPILER_VERSION_11_NAME = Messages.XLCompiler_v11;
-
- public static String getVersion(String label) {
- if (label.equalsIgnoreCase(P_XL_COMPILER_VERSION_11_NAME))
- return P_XL_COMPILER_VERSION_11;
- else if (label.equalsIgnoreCase(P_XL_COMPILER_VERSION_10_NAME))
- return P_XL_COMPILER_VERSION_10;
- else if (label.equalsIgnoreCase(P_XL_COMPILER_VERSION_9_NAME))
- return P_XL_COMPILER_VERSION_9;
- else
- return P_XL_COMPILER_VERSION_8;
- }
-
- public static String getVersionLabel(String version) {
- if (version.equalsIgnoreCase(P_XL_COMPILER_VERSION_11))
- return P_XL_COMPILER_VERSION_11_NAME;
- else if (version.equalsIgnoreCase(P_XL_COMPILER_VERSION_10))
- return P_XL_COMPILER_VERSION_10_NAME;
- else if (version.equalsIgnoreCase(P_XL_COMPILER_VERSION_9))
- return P_XL_COMPILER_VERSION_9_NAME;
- else
- return P_XL_COMPILER_VERSION_8_NAME;
- }
-
-}
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/preferences/PreferenceInitializer.java b/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/preferences/PreferenceInitializer.java
deleted file mode 100644
index 6bb39a928a9..00000000000
--- a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/preferences/PreferenceInitializer.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.cdt.managedbuilder.xlc.ui.preferences;
-
-import org.eclipse.cdt.managedbuilder.xlc.ui.XLCUIPlugin;
-import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
-import org.eclipse.jface.preference.IPreferenceStore;
-
-/**
- * Class used to initialize default preference values.
- */
-public class PreferenceInitializer extends AbstractPreferenceInitializer {
-
- @Override
- public void initializeDefaultPreferences() {
- IPreferenceStore store = XLCUIPlugin.getDefault().getPreferenceStore();
- store.setDefault(PreferenceConstants.P_XL_COMPILER_ROOT, "/usr/vacpp/bin"); //$NON-NLS-1$
- store.setDefault(PreferenceConstants.P_XLC_COMPILER_VERSION, PreferenceConstants.P_XL_COMPILER_VERSION_8);
- }
-
-}
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/preferences/XLCompilerPreferencePage.java b/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/preferences/XLCompilerPreferencePage.java
deleted file mode 100644
index 08404edf390..00000000000
--- a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/preferences/XLCompilerPreferencePage.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.cdt.managedbuilder.xlc.ui.preferences;
-
-import org.eclipse.cdt.managedbuilder.xlc.ui.Messages;
-import org.eclipse.cdt.managedbuilder.xlc.ui.XLCUIPlugin;
-import org.eclipse.jface.dialogs.IMessageProvider;
-import org.eclipse.jface.preference.ComboFieldEditor;
-import org.eclipse.jface.preference.DirectoryFieldEditor;
-import org.eclipse.jface.preference.FieldEditorPreferencePage;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferencePage;
-
-/**
- * This class represents a preference page that
- * is contributed to the Preferences dialog. By
- * subclassing <samp>FieldEditorPreferencePage</samp>, we
- * can use the field support built into JFace that allows
- * us to create a page that is small and knows how to
- * save, restore and apply itself.
- * <p>
- * This page is used to modify preferences only. They
- * are stored in the preference store that belongs to
- * the main plug-in class. That way, preferences can
- * be accessed directly via the preference store.
- */
-
-public class XLCompilerPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {
-
- private String originalMessage;
-
- public XLCompilerPreferencePage() {
- super(FLAT);
- setPreferenceStore(XLCUIPlugin.getDefault().getPreferenceStore());
- setDescription(Messages.XLCompilerPreferencePage_0);
- }
-
- /**
- * Creates the field editors. Field editors are abstractions of
- * the common GUI blocks needed to manipulate various types
- * of preferences. Each field editor knows how to save and
- * restore itself.
- */
- @Override
- public void createFieldEditors() {
-
- DirectoryFieldEditor pathEditor = new DirectoryFieldEditor(PreferenceConstants.P_XL_COMPILER_ROOT,
- Messages.XLCompilerPreferencePage_1, getFieldEditorParent()) {
- @Override
- protected boolean doCheckState() {
- // always return true, as we don't want to fail cases when compiler is installed remotely
- // just warn user
- if (!super.doCheckState()) {
- setMessage(Messages.XLCompilerPreferencePage_3, IMessageProvider.WARNING);
- } else {
- setMessage(originalMessage);
- }
-
- return true;
- }
-
- @Override
- protected boolean checkState() {
- return doCheckState();
- }
-
- };
-
- addField(pathEditor);
-
- String[][] versionEntries = {
- { PreferenceConstants.P_XL_COMPILER_VERSION_8_NAME, PreferenceConstants.P_XL_COMPILER_VERSION_8 },
- { PreferenceConstants.P_XL_COMPILER_VERSION_9_NAME, PreferenceConstants.P_XL_COMPILER_VERSION_9 },
- { PreferenceConstants.P_XL_COMPILER_VERSION_10_NAME, PreferenceConstants.P_XL_COMPILER_VERSION_10 },
- { PreferenceConstants.P_XL_COMPILER_VERSION_11_NAME, PreferenceConstants.P_XL_COMPILER_VERSION_11 } };
-
- addField(new ComboFieldEditor(PreferenceConstants.P_XLC_COMPILER_VERSION, Messages.XLCompilerPreferencePage_2,
- versionEntries, getFieldEditorParent()));
-
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
- */
- @Override
- public void init(IWorkbench workbench) {
- originalMessage = getMessage();
- }
-
-} \ No newline at end of file
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/properties/HiddenOptionApplicabilityCalculator.java b/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/properties/HiddenOptionApplicabilityCalculator.java
deleted file mode 100644
index 62e6e821015..00000000000
--- a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/properties/HiddenOptionApplicabilityCalculator.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.cdt.managedbuilder.xlc.ui.properties;
-
-import org.eclipse.cdt.managedbuilder.core.IBuildObject;
-import org.eclipse.cdt.managedbuilder.core.IHoldsOptions;
-import org.eclipse.cdt.managedbuilder.core.IOption;
-import org.eclipse.cdt.managedbuilder.core.IOptionApplicability;
-
-/**
- This class decides whether the make shared object
- option is visible,enabled or used in command line or not */
-
-public class HiddenOptionApplicabilityCalculator implements IOptionApplicability {
-
- /**
- * This function decides if the option for which this class
- * is option applicability calculator is enabled or not.
- */
- @Override
- public boolean isOptionEnabled(IBuildObject configuration, IHoldsOptions holder, IOption option) {
- return false;
- }
-
- /**
- * This function decides if the option for which this class
- * is option applicability calculator is used in command line
- * or not.
- */
-
- @Override
- public boolean isOptionUsedInCommandLine(IBuildObject configuration, IHoldsOptions holder, IOption option) {
- return true;
- }
-
- /**
- * This function decides if the option for which this class
- * is option applicability calculator is visible or not.
- */
-
- @Override
- public boolean isOptionVisible(IBuildObject configuration, IHoldsOptions holder, IOption option) {
-
- return false;
- }
-
-}
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/properties/XLCApplicabilityCalculator.java b/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/properties/XLCApplicabilityCalculator.java
deleted file mode 100644
index a7163ebcd0d..00000000000
--- a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/properties/XLCApplicabilityCalculator.java
+++ /dev/null
@@ -1,249 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.managedbuilder.xlc.ui.properties;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Set;
-
-import org.eclipse.cdt.managedbuilder.core.IBuildObject;
-import org.eclipse.cdt.managedbuilder.core.IConfiguration;
-import org.eclipse.cdt.managedbuilder.core.IFolderInfo;
-import org.eclipse.cdt.managedbuilder.core.IHoldsOptions;
-import org.eclipse.cdt.managedbuilder.core.IManagedProject;
-import org.eclipse.cdt.managedbuilder.core.IOption;
-import org.eclipse.cdt.managedbuilder.core.IOptionApplicability;
-import org.eclipse.cdt.managedbuilder.xlc.ui.XLCUIPlugin;
-import org.eclipse.cdt.managedbuilder.xlc.ui.preferences.PreferenceConstants;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.QualifiedName;
-import org.eclipse.jface.preference.IPreferenceStore;
-
-/**
- * @author rkerimov
- *
- * This applicability calculator hides/shows options that are specific to the XL compiler versions
- *
- */
-
-public class XLCApplicabilityCalculator implements IOptionApplicability {
- private static final String BUNDLE_NAME = "org/eclipse/cdt/managedbuilder/xlc/ui/properties/applicability.properties";
- private static final String PROP_NAME_VERSION_ORDER = "xlc.applicability.version.order";
- private static final String PROP_VALUE_PLUS = "+";
-
- private static boolean initialized;
- private static List versionOrder;
- private static Map applicabilityMap;
-
- public XLCApplicabilityCalculator() {
- if (!initialized) {
- Properties props = null;
-
- ClassLoader loader = this.getClass().getClassLoader();
- InputStream input = null;
-
- if (loader != null)
- input = loader.getResourceAsStream(BUNDLE_NAME);
-
- if (input == null)
- input = ClassLoader.getSystemResourceAsStream(BUNDLE_NAME);
-
- try {
- if (input != null) {
- props = new Properties();
- props.load(input);
-
- Set entrySet = props.entrySet();
- Iterator iterator = entrySet.iterator();
- while (iterator.hasNext()) {
- Map.Entry entry = (Map.Entry) iterator.next();
-
- String key = (String) entry.getKey();
- String value = (String) entry.getValue();
-
- if (value == null)
- value = "";
-
- if (key.equals(PROP_NAME_VERSION_ORDER)) {
- versionOrder = new ArrayList();
- String[] versions = value.split(",");
-
- if (versions != null) {
- for (int i = 0; i < versions.length; i++) {
- versionOrder.add(versions[i].trim());
- }
- }
- } else {
- if (applicabilityMap == null)
- applicabilityMap = new HashMap();
-
- List applicList = (List) applicabilityMap.get(key);
- if (applicList == null) {
- applicList = new ArrayList();
- applicabilityMap.put(key, applicList);
- }
-
- boolean hasGreaterOption = false;
- //find if ends with + and set as separate option
- if (value.endsWith(PROP_VALUE_PLUS)) {
- hasGreaterOption = true;
- value = value.substring(0, value.length() - PROP_VALUE_PLUS.length());
- }
-
- String[] versions = value.split(",");
-
- if (versions != null) {
- for (int i = 0; i < versions.length; i++) {
- applicList.add(versions[i].trim());
- }
-
- }
-
- if (hasGreaterOption)
- applicList.add(PROP_VALUE_PLUS);
- }
- }
- }
- } catch (IOException e) {
- e.printStackTrace();
- } finally {
- if (input != null) {
- try {
- input.close();
- } catch (IOException e) {
- // ignore
- }
- }
- }
-
- initialized = true;
-
- }
- }
-
- private boolean isApplicable(IBuildObject configuration, IHoldsOptions holder, IOption option) {
- // first we check the preference for this project, if it exists
- IProject project = null;
- if (configuration instanceof IConfiguration) {
- IConfiguration config = (IConfiguration) configuration;
- IManagedProject managedProject = config.getManagedProject();
-
- project = (IProject) managedProject.getOwner();
- } else if (configuration instanceof IFolderInfo) {
- IFolderInfo folderInfo = (IFolderInfo) configuration;
-
- IConfiguration config = folderInfo.getParent();
-
- IManagedProject managedProject = config.getManagedProject();
-
- project = (IProject) managedProject.getOwner();
-
- }
-
- if (project == null)
- return false;
-
- String currentVersion = null;
- try {
- currentVersion = project
- .getPersistentProperty(new QualifiedName("", PreferenceConstants.P_XLC_COMPILER_VERSION));
- } catch (CoreException e) {
- e.printStackTrace();
- }
-
- if (currentVersion == null) {
- // if the property isn't set, then use the workbench preference
- IPreferenceStore prefStore = XLCUIPlugin.getDefault().getPreferenceStore();
- currentVersion = prefStore.getString(PreferenceConstants.P_XLC_COMPILER_VERSION);
- }
-
- //if applicability list is empty that means all options applicable to all versions
- if (applicabilityMap == null)
- return true;
-
- //if applicability list for this option is not defined then option has no applicability restrictions
- List applicList = (List) applicabilityMap.get(option.getId());
- if (applicList == null || applicList.isEmpty())
- return true;
-
- //if version is defined in the list - perfect match
- if (applicList.contains(currentVersion))
- return true;
-
- //if applicability is defined as 'starting from this version and greater', i.e. 'v8.0+',
- //then we need to find out if current version is greater than the last valid in the list
- String lastOption = (String) applicList.get(applicList.size() - 1);
-
- if (lastOption != null && lastOption.equals(PROP_VALUE_PLUS)) {
- //if 'greater than' option is specified but no version order exists, consider config error and return false
- if (versionOrder == null)
- return false;
-
- //check for the last valid version in applicability list
- String validVersion = null;
- //start with element before the +
- for (int k = applicList.size() - 2; k >= 0; k--) {
- String version = (String) applicList.get(k);
-
- if (versionOrder.contains(version)) {
- validVersion = version;
- break;
- }
- }
-
- //if version that applicability starts with doesn't exist - config error
- if (validVersion == null)
- return false;
-
- //compare if current compiler version is greater than the applicability version
- if (versionOrder.indexOf(currentVersion) > versionOrder.indexOf(validVersion))
- return true;
- }
-
- return false;
-
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.core.IOptionApplicability#isOptionEnabled(org.eclipse.cdt.managedbuilder.core.IBuildObject, org.eclipse.cdt.managedbuilder.core.IHoldsOptions, org.eclipse.cdt.managedbuilder.core.IOption)
- */
- @Override
- public boolean isOptionEnabled(IBuildObject configuration, IHoldsOptions holder, IOption option) {
- return isApplicable(configuration, holder, option);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.core.IOptionApplicability#isOptionUsedInCommandLine(org.eclipse.cdt.managedbuilder.core.IBuildObject, org.eclipse.cdt.managedbuilder.core.IHoldsOptions, org.eclipse.cdt.managedbuilder.core.IOption)
- */
- @Override
- public boolean isOptionUsedInCommandLine(IBuildObject configuration, IHoldsOptions holder, IOption option) {
- return isApplicable(configuration, holder, option);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.core.IOptionApplicability#isOptionVisible(org.eclipse.cdt.managedbuilder.core.IBuildObject, org.eclipse.cdt.managedbuilder.core.IHoldsOptions, org.eclipse.cdt.managedbuilder.core.IOption)
- */
- @Override
- public boolean isOptionVisible(IBuildObject configuration, IHoldsOptions holder, IOption option) {
- return isApplicable(configuration, holder, option);
- }
-
-}
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/properties/XLCompilerPropertyPage.java b/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/properties/XLCompilerPropertyPage.java
deleted file mode 100644
index 44ff5824c09..00000000000
--- a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/properties/XLCompilerPropertyPage.java
+++ /dev/null
@@ -1,212 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.managedbuilder.xlc.ui.properties;
-
-import org.eclipse.cdt.managedbuilder.ui.properties.BuildOptionComboFieldEditor;
-import org.eclipse.cdt.managedbuilder.xlc.ui.Messages;
-import org.eclipse.cdt.managedbuilder.xlc.ui.XLCUIPlugin;
-import org.eclipse.cdt.managedbuilder.xlc.ui.preferences.PreferenceConstants;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.QualifiedName;
-import org.eclipse.jface.dialogs.IMessageProvider;
-import org.eclipse.jface.preference.DirectoryFieldEditor;
-import org.eclipse.jface.preference.FieldEditorPreferencePage;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.swt.widgets.Combo;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.IWorkbenchPropertyPage;
-
-public class XLCompilerPropertyPage extends FieldEditorPreferencePage implements IWorkbenchPropertyPage {
-
- protected String originalMessage;
-
- protected Composite versionParent;
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.preference.FieldEditorPreferencePage#createFieldEditors()
- */
- @Override
- protected void createFieldEditors() {
- createPathEditor();
- createVersionEditor();
-
- }
-
- protected void createPathEditor() {
-
- Composite parent = getFieldEditorParent();
-
- fPathEditor = new DirectoryFieldEditor(PreferenceConstants.P_XL_COMPILER_ROOT,
- Messages.XLCompilerPropertyPage_0, parent) {
- @Override
- protected boolean doCheckState() {
- // always return true, as we don't want to fail cases when
- // compiler is installed remotely
- // just warn user
- if (!super.doCheckState()) {
- setMessage(Messages.XLCompilerPropertyPage_2, IMessageProvider.WARNING);
- } else {
- setMessage(originalMessage);
- }
-
- return true;
- }
-
- @Override
- protected boolean checkState() {
- return doCheckState();
- }
-
- };
-
- addField(fPathEditor);
-
- IProject project = (getElement().getAdapter(IResource.class)).getProject();
-
- String currentPath = null;
-
- try {
- currentPath = project.getPersistentProperty(new QualifiedName("", //$NON-NLS-1$
- PreferenceConstants.P_XL_COMPILER_ROOT));
- } catch (CoreException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
-
- if (currentPath == null) {
- // if the property isn't set, then use the workbench preference
- IPreferenceStore prefStore = XLCUIPlugin.getDefault().getPreferenceStore();
- currentPath = prefStore.getString(PreferenceConstants.P_XL_COMPILER_ROOT);
- }
-
- fPathEditor.setStringValue(currentPath);
-
- }
-
- protected void createVersionEditor() {
-
- IProject project = (getElement().getAdapter(IResource.class)).getProject();
- String[] versionEntries = { PreferenceConstants.P_XL_COMPILER_VERSION_8_NAME,
- PreferenceConstants.P_XL_COMPILER_VERSION_9_NAME, PreferenceConstants.P_XL_COMPILER_VERSION_10_NAME,
- PreferenceConstants.P_XL_COMPILER_VERSION_11_NAME };
-
- versionParent = getFieldEditorParent();
-
- fVersionEditor = new BuildOptionComboFieldEditor(PreferenceConstants.P_XLC_COMPILER_VERSION,
- Messages.XLCompilerPropertyPage_1, versionEntries, null, versionParent);
-
- addField(fVersionEditor);
-
- String currentVersion = null;
- try {
- currentVersion = project.getPersistentProperty(new QualifiedName("", //$NON-NLS-1$
- PreferenceConstants.P_XLC_COMPILER_VERSION));
- } catch (CoreException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
-
- if (currentVersion == null) {
- // if the property isn't set, then use the workbench preference
- IPreferenceStore prefStore = XLCUIPlugin.getDefault().getPreferenceStore();
- currentVersion = prefStore.getString(PreferenceConstants.P_XLC_COMPILER_VERSION);
- }
-
- Combo versionCombo = fVersionEditor.getComboControl(versionParent);
- versionCombo.setText(PreferenceConstants.getVersionLabel(currentVersion));
-
- }
-
- protected DirectoryFieldEditor fPathEditor;
-
- protected BuildOptionComboFieldEditor fVersionEditor;
-
- // private Composite parent;
-
- /**
- * Constructor for SamplePropertyPage.
- */
- public XLCompilerPropertyPage() {
- super(FieldEditorPreferencePage.FLAT);
-
- originalMessage = getMessage();
- }
-
- @Override
- protected void performDefaults() {
- // default to whatever is set on the workbench preference
- IPreferenceStore prefStore = XLCUIPlugin.getDefault().getPreferenceStore();
- String currentPath = prefStore.getString(PreferenceConstants.P_XL_COMPILER_ROOT);
- String currentVersion = prefStore.getString(PreferenceConstants.P_XLC_COMPILER_VERSION);
- String currentVersionLabel = PreferenceConstants.getVersionLabel(currentVersion);
- if (fPathEditor != null) {
- fPathEditor.setStringValue(currentPath);
- }
- //set the selection to default setting
- fVersionEditor.setPreferenceStore(prefStore);
- fVersionEditor.setPreferenceName(PreferenceConstants.P_XLC_COMPILER_VERSION);
- fVersionEditor.loadDefault();
- //set the text entry to default setting
- fVersionEditor.getComboControl(versionParent).setText(currentVersionLabel);
-
- }
-
- @Override
- public boolean performOk() {
- // store the value in the owner text field
- try {
- IProject project = (getElement().getAdapter(IResource.class)).getProject();
-
- if (fPathEditor != null) {
- project.setPersistentProperty(new QualifiedName("", //$NON-NLS-1$
- PreferenceConstants.P_XL_COMPILER_ROOT), fPathEditor.getStringValue());
- }
- String version = null;
- if (fVersionEditor.getSelection() != null) {
- version = PreferenceConstants.getVersion(fVersionEditor.getSelection());
-
- project.setPersistentProperty(new QualifiedName("", //$NON-NLS-1$
- PreferenceConstants.P_XLC_COMPILER_VERSION), version);
- }
- } catch (CoreException e) {
- return false;
- }
- return true;
- }
-
- /**
- * The element.
- */
- private IAdaptable element;
-
- @Override
- public IAdaptable getElement() {
- return element;
- }
-
- /**
- * Sets the element that owns properties shown on this page.
- *
- * @param element
- * the element
- */
- @Override
- public void setElement(IAdaptable element) {
- this.element = element;
- }
-
-} \ No newline at end of file
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/properties/XLCv8ApplicabiltyCalculator.java b/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/properties/XLCv8ApplicabiltyCalculator.java
deleted file mode 100644
index 001e009359f..00000000000
--- a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/properties/XLCv8ApplicabiltyCalculator.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.managedbuilder.xlc.ui.properties;
-
-import org.eclipse.cdt.managedbuilder.core.IBuildObject;
-import org.eclipse.cdt.managedbuilder.core.IConfiguration;
-import org.eclipse.cdt.managedbuilder.core.IFolderInfo;
-import org.eclipse.cdt.managedbuilder.core.IHoldsOptions;
-import org.eclipse.cdt.managedbuilder.core.IManagedProject;
-import org.eclipse.cdt.managedbuilder.core.IOption;
-import org.eclipse.cdt.managedbuilder.core.IOptionApplicability;
-import org.eclipse.cdt.managedbuilder.xlc.ui.XLCUIPlugin;
-import org.eclipse.cdt.managedbuilder.xlc.ui.preferences.PreferenceConstants;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.QualifiedName;
-import org.eclipse.jface.preference.IPreferenceStore;
-
-/**
- * @author crecoskie
- *
- */
-public class XLCv8ApplicabiltyCalculator implements IOptionApplicability {
-
- private boolean isVersion8(IBuildObject configuration) {
- // first we check the preference for this project, if it exists
- if (configuration instanceof IConfiguration) {
- IConfiguration config = (IConfiguration) configuration;
- IManagedProject managedProject = config.getManagedProject();
-
- IProject project = (IProject) managedProject.getOwner();
-
- String currentVersion = null;
- try {
- currentVersion = project
- .getPersistentProperty(new QualifiedName("", PreferenceConstants.P_XLC_COMPILER_VERSION));
- } catch (CoreException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
-
- if (currentVersion == null) {
- // if the property isn't set, then use the workbench preference
- IPreferenceStore prefStore = XLCUIPlugin.getDefault().getPreferenceStore();
- currentVersion = prefStore.getString(PreferenceConstants.P_XLC_COMPILER_VERSION);
- }
-
- if (currentVersion.equals(PreferenceConstants.P_XL_COMPILER_VERSION_8))
- return true;
- }
-
- if (configuration instanceof IFolderInfo) {
- IFolderInfo folderInfo = (IFolderInfo) configuration;
-
- IConfiguration config = folderInfo.getParent();
-
- IManagedProject managedProject = config.getManagedProject();
-
- IProject project = (IProject) managedProject.getOwner();
-
- String currentVersion = null;
- try {
- currentVersion = project
- .getPersistentProperty(new QualifiedName("", PreferenceConstants.P_XLC_COMPILER_VERSION));
- } catch (CoreException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
-
- if (currentVersion == null) {
- // if the property isn't set, then use the workbench preference
- IPreferenceStore prefStore = XLCUIPlugin.getDefault().getPreferenceStore();
- currentVersion = prefStore.getString(PreferenceConstants.P_XLC_COMPILER_VERSION);
- }
-
- if (currentVersion.equals(PreferenceConstants.P_XL_COMPILER_VERSION_8))
- return true;
-
- }
-
- return false;
-
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.core.IOptionApplicability#isOptionEnabled(org.eclipse.cdt.managedbuilder.core.IBuildObject, org.eclipse.cdt.managedbuilder.core.IHoldsOptions, org.eclipse.cdt.managedbuilder.core.IOption)
- */
- @Override
- public boolean isOptionEnabled(IBuildObject configuration, IHoldsOptions holder, IOption option) {
- return isVersion8(configuration);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.core.IOptionApplicability#isOptionUsedInCommandLine(org.eclipse.cdt.managedbuilder.core.IBuildObject, org.eclipse.cdt.managedbuilder.core.IHoldsOptions, org.eclipse.cdt.managedbuilder.core.IOption)
- */
- @Override
- public boolean isOptionUsedInCommandLine(IBuildObject configuration, IHoldsOptions holder, IOption option) {
- return isVersion8(configuration);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.core.IOptionApplicability#isOptionVisible(org.eclipse.cdt.managedbuilder.core.IBuildObject, org.eclipse.cdt.managedbuilder.core.IHoldsOptions, org.eclipse.cdt.managedbuilder.core.IOption)
- */
- @Override
- public boolean isOptionVisible(IBuildObject configuration, IHoldsOptions holder, IOption option) {
- return isVersion8(configuration);
- }
-}
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/properties/XLCv9ApplicabilityCalculator.java b/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/properties/XLCv9ApplicabilityCalculator.java
deleted file mode 100644
index 533e9b182e0..00000000000
--- a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/properties/XLCv9ApplicabilityCalculator.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.managedbuilder.xlc.ui.properties;
-
-import org.eclipse.cdt.managedbuilder.core.IBuildObject;
-import org.eclipse.cdt.managedbuilder.core.IConfiguration;
-import org.eclipse.cdt.managedbuilder.core.IFolderInfo;
-import org.eclipse.cdt.managedbuilder.core.IHoldsOptions;
-import org.eclipse.cdt.managedbuilder.core.IManagedProject;
-import org.eclipse.cdt.managedbuilder.core.IOption;
-import org.eclipse.cdt.managedbuilder.core.IOptionApplicability;
-import org.eclipse.cdt.managedbuilder.xlc.ui.XLCUIPlugin;
-import org.eclipse.cdt.managedbuilder.xlc.ui.preferences.PreferenceConstants;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.QualifiedName;
-import org.eclipse.jface.preference.IPreferenceStore;
-
-/**
- * @author crecoskie
- *
- * This applicability calculator hides/shows options that are specific to the XL compilers, v9.0
- *
- */
-public class XLCv9ApplicabilityCalculator implements IOptionApplicability {
-
- private boolean isVersion9(IBuildObject configuration) {
- // first we check the preference for this project, if it exists
- if (configuration instanceof IConfiguration) {
- IConfiguration config = (IConfiguration) configuration;
- IManagedProject managedProject = config.getManagedProject();
-
- IProject project = (IProject) managedProject.getOwner();
-
- String currentVersion = null;
- try {
- currentVersion = project
- .getPersistentProperty(new QualifiedName("", PreferenceConstants.P_XLC_COMPILER_VERSION));
- } catch (CoreException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
-
- if (currentVersion == null) {
- // if the property isn't set, then use the workbench preference
- IPreferenceStore prefStore = XLCUIPlugin.getDefault().getPreferenceStore();
- currentVersion = prefStore.getString(PreferenceConstants.P_XLC_COMPILER_VERSION);
- }
-
- if (currentVersion.equals(PreferenceConstants.P_XL_COMPILER_VERSION_9))
- return true;
- }
-
- if (configuration instanceof IFolderInfo) {
- IFolderInfo folderInfo = (IFolderInfo) configuration;
-
- IConfiguration config = folderInfo.getParent();
-
- IManagedProject managedProject = config.getManagedProject();
-
- IProject project = (IProject) managedProject.getOwner();
-
- String currentVersion = null;
- try {
- currentVersion = project
- .getPersistentProperty(new QualifiedName("", PreferenceConstants.P_XLC_COMPILER_VERSION));
- } catch (CoreException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
-
- if (currentVersion == null) {
- // if the property isn't set, then use the workbench preference
- IPreferenceStore prefStore = XLCUIPlugin.getDefault().getPreferenceStore();
- currentVersion = prefStore.getString(PreferenceConstants.P_XLC_COMPILER_VERSION);
- }
-
- if (currentVersion.equals(PreferenceConstants.P_XL_COMPILER_VERSION_9))
- return true;
-
- }
-
- return false;
-
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.core.IOptionApplicability#isOptionEnabled(org.eclipse.cdt.managedbuilder.core.IBuildObject, org.eclipse.cdt.managedbuilder.core.IHoldsOptions, org.eclipse.cdt.managedbuilder.core.IOption)
- */
- @Override
- public boolean isOptionEnabled(IBuildObject configuration, IHoldsOptions holder, IOption option) {
- return isVersion9(configuration);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.core.IOptionApplicability#isOptionUsedInCommandLine(org.eclipse.cdt.managedbuilder.core.IBuildObject, org.eclipse.cdt.managedbuilder.core.IHoldsOptions, org.eclipse.cdt.managedbuilder.core.IOption)
- */
- @Override
- public boolean isOptionUsedInCommandLine(IBuildObject configuration, IHoldsOptions holder, IOption option) {
- return isVersion9(configuration);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.core.IOptionApplicability#isOptionVisible(org.eclipse.cdt.managedbuilder.core.IBuildObject, org.eclipse.cdt.managedbuilder.core.IHoldsOptions, org.eclipse.cdt.managedbuilder.core.IOption)
- */
- @Override
- public boolean isOptionVisible(IBuildObject configuration, IHoldsOptions holder, IOption option) {
- return isVersion9(configuration);
- }
-
-}
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/properties/applicability.properties b/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/properties/applicability.properties
deleted file mode 100644
index b8de624fe46..00000000000
--- a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/properties/applicability.properties
+++ /dev/null
@@ -1,49 +0,0 @@
-###############################################################################
-# Copyright (c) 2007, 2011 IBM Corporation and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-# START NON-TRANSLATABLE
-xlc.applicability.version.order=v8.0,v9.0,v10.1,v11.1
-
-xlc.c.compiler.option.optimization.arch=v8.0
-xlc.c.compiler.option.optimization.arch.9.0=v9.0,v10.1
-xlc.c.compiler.option.optimization.arch.11.1=v11.1+
-xlc.c.compiler.option.optimization.qassert=v11.1+
-xlc.c.compiler.option.optimization.tune=v8.0
-xlc.c.compiler.option.optimization.tune.9.0=v9.0,v10.1
-xlc.c.compiler.option.optimization.tune.11.1=v11.1+
-xlc.c.compiler.option.optimization.qinline=v11.1+
-xlc.c.compiler.option.optimization.qsimd=v11.1+
-xlc.c.compiler.option.optimization.qprefetch=v11.1+
-xlc.c.compiler.option.ifp.dfp=v9.0+
-xlc.c.compiler.option.preprocessor.PreprocessRemoveComments=v9.0+
-xlc.c.compiler.option.ecd.optdebug=v9.0+
-xlc.c.compiler.option.optimization.smp=v8.0,v9.0
-xlc.c.compiler.option.optimization.smp.v10=v10.1
-xlc.c.compiler.option.optimization.strict=v8.0,v9.0
-xlc.c.compiler.option.optimization.strict.v10=v10.1+
-org.eclipse.cdt.managedbuilder.xlc.ui.cpp.option.output.unique.v10=v10.1
-org.eclipse.cdt.managedbuilder.xlc.ui.cpp.option.namemangling=v8.0,v9.0
-org.eclipse.cdt.managedbuilder.xlc.ui.cpp.option.namemangling.v10=v10.1
-org.eclipse.cdt.managedbuilder.xlc.ui.cpp.option.output.qconcurrentupdate=v11.1
-xlc.c.compiler.option.cc.tls=v8.0,v9.0
-xlc.c.compiler.option.cc.tls.v10=v10.1
-xlc.c.compiler.option.output.macros=v10.1
-xlc.c.compiler.option.output.timestamps=v10.1
-xlc.c.compiler.option.output.qstackprotect=v11.1+
-xlc.c.compiler.option.output.enablevmx=v8.0,v9.0,v10.1,v11.1
-xlc.ui.cpp.option.output.qconcurrentupdate
-xlc.c.compiler.option.qfunctrace=v11.1+
-xlc.c.compiler.option.optimization.qrestrict=v11.1+
-xlc.c.compiler.option.lm.qlistfmt=v11.1+
-
-# END NON-TRANSLATABLE
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/variables/DynamicVariableResolver.java b/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/variables/DynamicVariableResolver.java
deleted file mode 100644
index 1557a6744fe..00000000000
--- a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/variables/DynamicVariableResolver.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.managedbuilder.xlc.ui.variables;
-
-import org.eclipse.cdt.managedbuilder.xlc.ui.XLCUIPlugin;
-import org.eclipse.cdt.managedbuilder.xlc.ui.preferences.PreferenceConstants;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.variables.IDynamicVariable;
-import org.eclipse.core.variables.IDynamicVariableResolver;
-import org.eclipse.jface.preference.IPreferenceStore;
-
-/**
- * @author crecoskie
- *
- */
-public class DynamicVariableResolver implements IDynamicVariableResolver {
-
- /* (non-Javadoc)
- * @see org.eclipse.core.variables.IDynamicVariableResolver#resolveValue(org.eclipse.core.variables.IDynamicVariable, java.lang.String)
- */
- @Override
- public String resolveValue(IDynamicVariable variable, String argument) throws CoreException {
-
- if (variable.getName().equals((PreferenceConstants.P_XL_COMPILER_ROOT))) {
- IPreferenceStore prefStore = XLCUIPlugin.getDefault().getPreferenceStore();
- return prefStore.getString(PreferenceConstants.P_XL_COMPILER_ROOT);
- }
-
- return null;
- }
-
-}
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/wizards/XLCSettingsWizardPage.java b/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/wizards/XLCSettingsWizardPage.java
deleted file mode 100644
index 1f934ef390a..00000000000
--- a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/wizards/XLCSettingsWizardPage.java
+++ /dev/null
@@ -1,319 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2015 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.managedbuilder.xlc.ui.wizards;
-
-import org.eclipse.cdt.managedbuilder.ui.wizards.MBSCustomPage;
-import org.eclipse.cdt.managedbuilder.ui.wizards.MBSCustomPageManager;
-import org.eclipse.cdt.managedbuilder.xlc.ui.Messages;
-import org.eclipse.cdt.managedbuilder.xlc.ui.XLCUIPlugin;
-import org.eclipse.cdt.managedbuilder.xlc.ui.preferences.PreferenceConstants;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Combo;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.DirectoryDialog;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Text;
-
-/**
- * @author crecoskie
- *
- */
-public class XLCSettingsWizardPage extends MBSCustomPage {
-
- public static final String PAGE_ID = "org.eclipse.cdt.managedbuilder.xlc.ui.XlcSettingsWizardPage"; //$NON-NLS-1$
-
- private final class BrowseButtonSelectionListener implements SelectionListener {
- private final Composite composite;
-
- private BrowseButtonSelectionListener(Composite composite) {
- this.composite = composite;
- }
-
- @Override
- public void widgetDefaultSelected(SelectionEvent e) {
- // meaningless for a button... do nothing
-
- }
-
- @Override
- public void widgetSelected(SelectionEvent e) {
- // open a browse dialog
- DirectoryDialog dirDialog = new DirectoryDialog(composite.getShell(), SWT.APPLICATION_MODAL);
- String browsedDirectory = dirDialog.open();
- if (browsedDirectory != null) {
- fDirTextBox.setText(browsedDirectory);
- }
- }
- }
-
- private Composite fComposite = null;
-
- private Text fDirTextBox;
-
- private Combo fVersionCombo;
-
- /**
- * @param pageID
- */
- public XLCSettingsWizardPage(String pageID) {
- super(pageID);
- setDefaultPreferences(pageID);
- }
-
- /**
- *
- */
- public XLCSettingsWizardPage() {
- super(PAGE_ID);
- setDefaultPreferences(PAGE_ID);
- }
-
- private void setDefaultPreferences(String pageID) {
- String compilerPath = XLCUIPlugin.getDefault().getPreferenceStore()
- .getString(PreferenceConstants.P_XL_COMPILER_ROOT);
- MBSCustomPageManager.addPageProperty(pageID, PreferenceConstants.P_XL_COMPILER_ROOT, compilerPath);
- MBSCustomPageManager.addPageProperty(pageID, PreferenceConstants.P_XLC_COMPILER_VERSION,
- PreferenceConstants.P_XL_COMPILER_VERSION_8);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.managedbuilder.ui.wizards.MBSCustomPage#isCustomPageComplete()
- */
- @Override
- protected boolean isCustomPageComplete() {
- return true;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.wizard.IWizardPage#getName()
- */
- @Override
- public String getName() {
- String name = Messages.XLCSettingsWizardPage_0;
- return name;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
- */
- @Override
- public void createControl(Composite parent) {
- // create a new composite
- fComposite = new Composite(parent, SWT.NONE);
- fComposite.setBounds(parent.getBounds());
- GridLayout layout = new GridLayout(3, false);
- fComposite.setLayout(layout);
- fComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
-
- // create the first label
- Label label1 = new Label(fComposite, SWT.NONE);
- label1.setText(Messages.XLCSettingsWizardPage_1);
- label1.setVisible(true);
-
- // create the text box for the path
- GridData dirBoxGridData = new GridData();
- dirBoxGridData.grabExcessHorizontalSpace = true;
- dirBoxGridData.horizontalAlignment = SWT.FILL;
- fDirTextBox = new Text(fComposite, SWT.SINGLE | SWT.BORDER);
- fDirTextBox.setLayoutData(dirBoxGridData);
- fDirTextBox.setVisible(true);
-
- // set the default compiler location based on preferences
- IPreferenceStore prefStore = XLCUIPlugin.getDefault().getPreferenceStore();
- String compilerPath = prefStore.getString(PreferenceConstants.P_XL_COMPILER_ROOT);
- fDirTextBox.setText(compilerPath);
-
- // update the page manager with the setting
- MBSCustomPageManager.addPageProperty(pageID, PreferenceConstants.P_XL_COMPILER_ROOT, fDirTextBox.getText());
-
- fDirTextBox.addModifyListener(new ModifyListener() {
-
- @Override
- public void modifyText(ModifyEvent e) {
- // update the page manager with the setting
- MBSCustomPageManager.addPageProperty(pageID, PreferenceConstants.P_XL_COMPILER_ROOT,
- fDirTextBox.getText());
-
- }
-
- });
-
- // create the browse button
- //String selectedPath = null;
- GridData buttonData = new GridData();
- buttonData.horizontalAlignment = SWT.RIGHT;
- Button browseButton = new Button(fComposite, SWT.PUSH);
- browseButton.setAlignment(SWT.CENTER);
- browseButton.setText(Messages.XLCSettingsWizardPage_2);
- browseButton.addSelectionListener(new BrowseButtonSelectionListener(fComposite));
-
- browseButton.setVisible(true);
-
- // create the second label
- Label label2 = new Label(fComposite, SWT.NONE);
- label2.setText(Messages.XLCSettingsWizardPage_3);
-
- label2.setVisible(true);
-
- // create the version dropdown
- GridData comboData = new GridData();
- comboData.grabExcessHorizontalSpace = true;
- comboData.horizontalAlignment = SWT.FILL;
-
- fVersionCombo = new Combo(fComposite, SWT.READ_ONLY);
- fVersionCombo.setLayoutData(comboData);
-
- // populate the combo
- fVersionCombo.add(PreferenceConstants.P_XL_COMPILER_VERSION_8_NAME);
- fVersionCombo.add(PreferenceConstants.P_XL_COMPILER_VERSION_9_NAME);
- fVersionCombo.add(PreferenceConstants.P_XL_COMPILER_VERSION_10_NAME);
- fVersionCombo.add(PreferenceConstants.P_XL_COMPILER_VERSION_11_NAME);
-
- // set the default based on the workbench preference
- String compilerVersion = prefStore.getString(PreferenceConstants.P_XLC_COMPILER_VERSION);
- fVersionCombo.setText(PreferenceConstants.getVersionLabel(compilerVersion));
-
- // update the page manager with the setting
- MBSCustomPageManager.addPageProperty(pageID, PreferenceConstants.P_XLC_COMPILER_VERSION,
- PreferenceConstants.getVersion(fVersionCombo.getText()));
-
- fVersionCombo.addModifyListener(new ModifyListener() {
-
- @Override
- public void modifyText(ModifyEvent e) {
- // update the page manager with the setting
- MBSCustomPageManager.addPageProperty(pageID, PreferenceConstants.P_XLC_COMPILER_VERSION,
- PreferenceConstants.getVersion(fVersionCombo.getText()));
-
- }
-
- });
-
- fVersionCombo.setVisible(true);
-
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.dialogs.IDialogPage#dispose()
- */
- @Override
- public void dispose() {
- fComposite.dispose();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.dialogs.IDialogPage#getControl()
- */
- @Override
- public Control getControl() {
- return fComposite;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.dialogs.IDialogPage#getDescription()
- */
- @Override
- public String getDescription() {
- return Messages.XLCSettingsWizardPage_4;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.dialogs.IDialogPage#getErrorMessage()
- */
- @Override
- public String getErrorMessage() {
- // TODO Auto-generated method stub
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.dialogs.IDialogPage#getImage()
- */
- @Override
- public Image getImage() {
- return wizard.getDefaultPageImage();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.dialogs.IDialogPage#getMessage()
- */
- @Override
- public String getMessage() {
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.dialogs.IDialogPage#getTitle()
- */
- @Override
- public String getTitle() {
- return Messages.XLCSettingsWizardPage_5;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.dialogs.IDialogPage#performHelp()
- */
- @Override
- public void performHelp() {
- // TODO Auto-generated method stub
-
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.dialogs.IDialogPage#setDescription(java.lang.String)
- */
- @Override
- public void setDescription(String description) {
- // TODO Auto-generated method stub
-
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.dialogs.IDialogPage#setImageDescriptor(org.eclipse.jface.resource.ImageDescriptor)
- */
- @Override
- public void setImageDescriptor(ImageDescriptor image) {
- // TODO Auto-generated method stub
-
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.dialogs.IDialogPage#setTitle(java.lang.String)
- */
- @Override
- public void setTitle(String title) {
- // TODO Auto-generated method stub
-
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.dialogs.IDialogPage#setVisible(boolean)
- */
- @Override
- public void setVisible(boolean visible) {
- fComposite.setVisible(visible);
- }
-
-}
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/wizards/XLCSettingsWizardRunnable.java b/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/wizards/XLCSettingsWizardRunnable.java
deleted file mode 100644
index f8f74dc7a0a..00000000000
--- a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/wizards/XLCSettingsWizardRunnable.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.managedbuilder.xlc.ui.wizards;
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.cdt.core.CCorePlugin;
-import org.eclipse.cdt.internal.ui.wizards.ICDTCommonProjectWizard;
-import org.eclipse.cdt.managedbuilder.ui.wizards.MBSCustomPageManager;
-import org.eclipse.cdt.managedbuilder.xlc.ui.preferences.PreferenceConstants;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.QualifiedName;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.wizard.IWizardPage;
-
-/**
- * @author crecoskie
- *
- */
-public class XLCSettingsWizardRunnable implements IRunnableWithProgress {
-
- protected String pageId = XLCSettingsWizardPage.PAGE_ID;
-
- public XLCSettingsWizardRunnable() {
- }
-
- @Override
- public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- // take the data from the page manager, and set the project properties with it
- String compilerPath = MBSCustomPageManager.getPageProperty(pageId, PreferenceConstants.P_XL_COMPILER_ROOT)
- .toString();
- String compilerVersion = MBSCustomPageManager
- .getPageProperty(pageId, PreferenceConstants.P_XLC_COMPILER_VERSION).toString();
-
- // get a handle to the wizard
- IWizardPage[] pages = MBSCustomPageManager.getPages();
-
- if (pages != null && pages.length > 0) {
-
- ICDTCommonProjectWizard wizard = (ICDTCommonProjectWizard) pages[0].getWizard();
- IProject project = wizard.getLastProject();
-
- try {
- project.setPersistentProperty(new QualifiedName("", PreferenceConstants.P_XL_COMPILER_ROOT),
- compilerPath);
- project.setPersistentProperty(new QualifiedName("", PreferenceConstants.P_XLC_COMPILER_VERSION),
- compilerVersion);
-
- } catch (CoreException e) {
- CCorePlugin.log(e);
- }
- }
- }
-
-}
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/.classpath b/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/.classpath
deleted file mode 100644
index 4f83b2397ec..00000000000
--- a/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/.project b/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/.project
deleted file mode 100644
index 92de6441e00..00000000000
--- a/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.cdt.managedbuilder.xlupc.ui</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.ManifestBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.SchemaBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.pde.PluginNature</nature>
- <nature>org.eclipse.jdt.core.javanature</nature>
- </natures>
-</projectDescription>
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/.settings/org.eclipse.jdt.core.prefs b/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 2b6ecff8a01..00000000000
--- a/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,464 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
-org.eclipse.jdt.core.codeComplete.argumentPrefixes=
-org.eclipse.jdt.core.codeComplete.argumentSuffixes=
-org.eclipse.jdt.core.codeComplete.fieldPrefixes=
-org.eclipse.jdt.core.codeComplete.fieldSuffixes=
-org.eclipse.jdt.core.codeComplete.localPrefixes=
-org.eclipse.jdt.core.codeComplete.localSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
-org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
-org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
-org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
-org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
-org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
-org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
-org.eclipse.jdt.core.compiler.problem.APILeak=warning
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
-org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
-org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
-org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
-org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
-org.eclipse.jdt.core.compiler.problem.nullReference=error
-org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
-org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
-org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
-org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
-org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
-org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
-org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
-org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
-org.eclipse.jdt.core.formatter.align_with_spaces=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
-org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
-org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
-org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
-org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=0
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
-org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
-org.eclipse.jdt.core.formatter.comment.format_block_comments=false
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
-org.eclipse.jdt.core.formatter.comment.format_line_comments=false
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
-org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
-org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
-org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.join_lines_in_comments=true
-org.eclipse.jdt.core.formatter.join_wrapped_lines=true
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=120
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_on_off_tags=true
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
-org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
-org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/.settings/org.eclipse.jdt.ui.prefs b/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index e44576346c4..00000000000
--- a/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,133 +0,0 @@
-cleanup.add_default_serial_version_id=true
-cleanup.add_generated_serial_version_id=false
-cleanup.add_missing_annotations=true
-cleanup.add_missing_deprecated_annotations=true
-cleanup.add_missing_methods=false
-cleanup.add_missing_nls_tags=false
-cleanup.add_missing_override_annotations=true
-cleanup.add_missing_override_annotations_interface_methods=true
-cleanup.add_serial_version_id=false
-cleanup.always_use_blocks=true
-cleanup.always_use_parentheses_in_expressions=false
-cleanup.always_use_this_for_non_static_field_access=false
-cleanup.always_use_this_for_non_static_method_access=false
-cleanup.convert_functional_interfaces=false
-cleanup.convert_to_enhanced_for_loop=false
-cleanup.correct_indentation=false
-cleanup.format_source_code=true
-cleanup.format_source_code_changes_only=false
-cleanup.insert_inferred_type_arguments=false
-cleanup.make_local_variable_final=true
-cleanup.make_parameters_final=false
-cleanup.make_private_fields_final=true
-cleanup.make_type_abstract_if_missing_method=false
-cleanup.make_variable_declarations_final=false
-cleanup.never_use_blocks=false
-cleanup.never_use_parentheses_in_expressions=true
-cleanup.organize_imports=true
-cleanup.qualify_static_field_accesses_with_declaring_class=false
-cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-cleanup.qualify_static_member_accesses_with_declaring_class=false
-cleanup.qualify_static_method_accesses_with_declaring_class=false
-cleanup.remove_private_constructors=true
-cleanup.remove_redundant_modifiers=false
-cleanup.remove_redundant_semicolons=true
-cleanup.remove_redundant_type_arguments=true
-cleanup.remove_trailing_whitespaces=true
-cleanup.remove_trailing_whitespaces_all=true
-cleanup.remove_trailing_whitespaces_ignore_empty=false
-cleanup.remove_unnecessary_casts=true
-cleanup.remove_unnecessary_nls_tags=false
-cleanup.remove_unused_imports=true
-cleanup.remove_unused_local_variables=false
-cleanup.remove_unused_private_fields=true
-cleanup.remove_unused_private_members=false
-cleanup.remove_unused_private_methods=true
-cleanup.remove_unused_private_types=true
-cleanup.sort_members=false
-cleanup.sort_members_all=false
-cleanup.use_anonymous_class_creation=false
-cleanup.use_blocks=false
-cleanup.use_blocks_only_for_return_and_throw=false
-cleanup.use_lambda=true
-cleanup.use_parentheses_in_expressions=false
-cleanup.use_this_for_non_static_field_access=false
-cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-cleanup.use_this_for_non_static_method_access=false
-cleanup.use_this_for_non_static_method_access_only_if_necessary=true
-cleanup_profile=_CDT
-cleanup_settings_version=2
-eclipse.preferences.version=1
-editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=_CDT
-formatter_settings_version=14
-internal.default.compliance=user
-org.eclipse.jdt.ui.exception.name=e
-org.eclipse.jdt.ui.gettersetter.use.is=true
-org.eclipse.jdt.ui.ignorelowercasenames=true
-org.eclipse.jdt.ui.importorder=java;javax;org;com;
-org.eclipse.jdt.ui.keywordthis=false
-org.eclipse.jdt.ui.ondemandthreshold=1000
-org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.staticondemandthreshold=1000
-org.eclipse.jdt.ui.text.custom_code_templates=
-sp_cleanup.add_default_serial_version_id=true
-sp_cleanup.add_generated_serial_version_id=false
-sp_cleanup.add_missing_annotations=true
-sp_cleanup.add_missing_deprecated_annotations=true
-sp_cleanup.add_missing_methods=false
-sp_cleanup.add_missing_nls_tags=false
-sp_cleanup.add_missing_override_annotations=true
-sp_cleanup.add_missing_override_annotations_interface_methods=true
-sp_cleanup.add_serial_version_id=false
-sp_cleanup.always_use_blocks=true
-sp_cleanup.always_use_parentheses_in_expressions=false
-sp_cleanup.always_use_this_for_non_static_field_access=false
-sp_cleanup.always_use_this_for_non_static_method_access=false
-sp_cleanup.convert_functional_interfaces=false
-sp_cleanup.convert_to_enhanced_for_loop=false
-sp_cleanup.correct_indentation=false
-sp_cleanup.format_source_code=true
-sp_cleanup.format_source_code_changes_only=false
-sp_cleanup.insert_inferred_type_arguments=false
-sp_cleanup.make_local_variable_final=true
-sp_cleanup.make_parameters_final=false
-sp_cleanup.make_private_fields_final=true
-sp_cleanup.make_type_abstract_if_missing_method=false
-sp_cleanup.make_variable_declarations_final=false
-sp_cleanup.never_use_blocks=false
-sp_cleanup.never_use_parentheses_in_expressions=true
-sp_cleanup.on_save_use_additional_actions=true
-sp_cleanup.organize_imports=true
-sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
-sp_cleanup.remove_private_constructors=true
-sp_cleanup.remove_redundant_modifiers=false
-sp_cleanup.remove_redundant_semicolons=true
-sp_cleanup.remove_redundant_type_arguments=true
-sp_cleanup.remove_trailing_whitespaces=true
-sp_cleanup.remove_trailing_whitespaces_all=true
-sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
-sp_cleanup.remove_unnecessary_casts=true
-sp_cleanup.remove_unnecessary_nls_tags=false
-sp_cleanup.remove_unused_imports=true
-sp_cleanup.remove_unused_local_variables=false
-sp_cleanup.remove_unused_private_fields=true
-sp_cleanup.remove_unused_private_members=false
-sp_cleanup.remove_unused_private_methods=true
-sp_cleanup.remove_unused_private_types=true
-sp_cleanup.sort_members=false
-sp_cleanup.sort_members_all=false
-sp_cleanup.use_anonymous_class_creation=false
-sp_cleanup.use_blocks=false
-sp_cleanup.use_blocks_only_for_return_and_throw=false
-sp_cleanup.use_lambda=true
-sp_cleanup.use_parentheses_in_expressions=false
-sp_cleanup.use_this_for_non_static_field_access=false
-sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-sp_cleanup.use_this_for_non_static_method_access=false
-sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/META-INF/MANIFEST.MF b/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/META-INF/MANIFEST.MF
deleted file mode 100644
index 89b6eafa033..00000000000
--- a/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,24 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %Bundle-Name.0
-Bundle-SymbolicName: org.eclipse.cdt.managedbuilder.xlupc.ui;singleton:=true
-Bundle-Version: 1.1.1.qualifier
-Bundle-Activator: org.eclipse.cdt.managedbuilder.xlupc.ui.Activator
-Require-Bundle: org.eclipse.ui,
- org.eclipse.core.runtime,
- org.eclipse.cdt.managedbuilder.core;bundle-version="5.0.1",
- org.eclipse.cdt.core;bundle-version="5.0.2",
- org.eclipse.core.resources;bundle-version="3.4.1",
- org.eclipse.cdt.managedbuilder.ui;bundle-version="5.0.1",
- org.eclipse.cdt.ui;bundle-version="5.0.2",
- org.eclipse.ui.ide;bundle-version="3.4.1",
- org.eclipse.core.variables;bundle-version="3.2.100",
- org.eclipse.cdt.core.parser.upc;bundle-version="5.0.0",
- org.eclipse.cdt.managedbuilder.xlc.ui;bundle-version="6.0.0"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Bundle-ActivationPolicy: lazy
-Bundle-Vendor: %Bundle-Vendor.0
-Export-Package: org.eclipse.cdt.managedbuilder.xlupc.ui,
- org.eclipse.cdt.managedbuilder.xlupc.ui.wizards
-Bundle-Localization: plugin
-Automatic-Module-Name: org.eclipse.cdt.managedbuilder.xlupc.ui
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/about.html b/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/about.html
deleted file mode 100644
index 164f781a8fd..00000000000
--- a/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/about.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
-</head>
-<body lang="EN-US">
- <h2>About This Content</h2>
-
- <p>November 30, 2017</p>
- <h3>License</h3>
-
- <p>
- The Eclipse Foundation makes available all content in this plug-in
- (&quot;Content&quot;). Unless otherwise indicated below, the Content
- is provided to you under the terms and conditions of the Eclipse
- Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
- available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
- For purposes of the EPL, &quot;Program&quot; will mean the Content.
- </p>
-
- <p>
- If you did not receive this Content directly from the Eclipse
- Foundation, the Content is being redistributed by another party
- (&quot;Redistributor&quot;) and different terms and conditions may
- apply to your use of any object code in the Content. Check the
- Redistributor's license that was provided with the Content. If no such
- license exists, contact the Redistributor. Unless otherwise indicated
- below, the terms and conditions of the EPL still apply to any source
- code in the Content and such source code may be obtained at <a
- href="http://www.eclipse.org/">http://www.eclipse.org</a>.
- </p>
-
-</body>
-</html> \ No newline at end of file
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/build.properties b/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/build.properties
deleted file mode 100644
index 5d28cf185b3..00000000000
--- a/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/build.properties
+++ /dev/null
@@ -1,21 +0,0 @@
-###############################################################################
-# Copyright (c) 2009 IBM Corporation and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
- .,\
- plugin.xml,\
- plugin.properties,\
- about.html
-src.includes = about.html
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/icons/c-project.gif b/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/icons/c-project.gif
deleted file mode 100644
index 0b693cb5f60..00000000000
--- a/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/icons/c-project.gif
+++ /dev/null
Binary files differ
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/plugin.properties b/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/plugin.properties
deleted file mode 100644
index b0ba262e7bb..00000000000
--- a/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/plugin.properties
+++ /dev/null
@@ -1,66 +0,0 @@
-###############################################################################
-# Copyright (c) 2009, 2011 IBM Corporation and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-
-#Properties file for org.eclipse.cdt.managedbuilder.xlupc.ui
-Bundle-Vendor.0 = Eclipse CDT
-Bundle-Name.0 = XL UPC Managed Build UI Plugin
-category.name.1=XL UPC
-wizard.name.1=XL UPC Project
-
-ToolName.compiler.xlupc = XL UPC Compiler
-ToolName.linker.xlupc = XL UPC Linker
-tool.name.0 = Abstract XL UPC Linker
-
-TargetName.xlupc.exe=Executable (XL UPC)
-TargetName.xlupc.so=Shared Library (XL UPC)
-TargetName.xlupc.lib=Static Library(XL UPC)
-
-ToolChainName.Upc=XL UPC Tool Chain
-
-ConfigName.Dbg=Debug
-ConfigName.Rel=Release
-
-PlatformName.Rel=Release Platform
-PlatformName.Dbg=Debug Platform
-
-BuildProperty.type.name.xlupc.executable=Executable (XL UPC)
-BuildProperty.type.name.xlupc.staticLibrary=Static Library (XL UPC)
-BuildProperty.type.name.xlupc.sharedLibrary=Shared Library (XL UPC)
-
-OptionCategory.upc=XL UPC Compiler Options
-
-Option.qsourcetype=Use filename suffix to determine the programming language (-qsourcetype)
-Option.qsourcetype.default=default
-Option.qsourcetype.upc=upc
-
-Option.runtime=UPC runtime implementation (-qupc=rts=<suboption>)
-Option.runtime.default=default
-Option.runtime.lapi=lapi
-Option.runtime.smp=smp
-
-Option.threads=Number of static THREADS (-qupc=threads=<n>)
-
-Option.compilation=Select either 32-bit or 64-bit compilation mode
-Option.compilation.q32=-q32
-Option.compilation.q64=-q64
-
-
-extension.name = Base Build Properties Definition
-tool.linker.exe.name = XL UPC Executable Linker
-tool.linker.so.name = XL UPC Shared Object Linker
-tool.compiler.abstract.name = Abstract XL UPC Compiler
-tool.compiler.name = Local XL UPC Compiler
-inputType.upc.name = Local UPC Sources
-inputType.c.name = Local C Sources
-wizard.description = Create a new XL UPC project \ No newline at end of file
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/plugin.xml b/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/plugin.xml
deleted file mode 100644
index 521340097fa..00000000000
--- a/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/plugin.xml
+++ /dev/null
@@ -1,499 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.2"?>
-<plugin>
- <extension
- point="org.eclipse.cdt.managedbuilder.core.buildDefinitions">
- <projectType
- buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.xlupc.exe"
- id="cdt.managedbuild.target.xlupc.exe"
- isAbstract="false"
- isTest="false"
- name="%TargetName.xlupc.exe"
- projectMacroSupplier="org.eclipse.cdt.managedbuilder.xlc.ui.XLCProjectMacroSupplier">
- <configuration
- artifactExtension="exe"
- cleanCommand="rm -rf"
- errorParsers="org.eclipse.cdt.errorparsers.xlc.XlcErrorParser"
- id="cdt.managedbuild.config.xlupc.exe.debug"
- name="%ConfigName.Dbg">
- <toolChain
- archList="all"
- configurationEnvironmentSupplier="org.eclipse.cdt.managedbuilder.xlc.aix.AixConfigurationEnvironmentSupplier"
- id="cdt.managedbuild.toolchain.xlupc.exe.debug"
- name="%ToolChainName.Upc"
- osList="all"
- targetTool="cdt.managedbuild.tool.linker.xlupc.exe.debug">
- <targetPlatform
- archList="all"
- id="cdt.managedbuild.targetplatform.xlupc.exe.debug"
- name="%PlatformName.Dbg"
- osList="all">
- </targetPlatform>
- <builder
- id="cdt.managedbuild.builder.xlupc.exe.debug"
- superClass="cdt.managedbuild.target.gnu.builder">
- </builder>
- <tool
- id="cdt.managedbuild.tool.compiler.xlupc.exe.debug"
- superClass="org.eclipse.cdt.managedbuilder.xlupc.ui.compiler">
- <option
- defaultValue="xlc.c.optimization.level.none"
- id="cdt.managedbuild.compiler.option.xlupc.exe.debug.optimization.level"
- superClass="xlc.c.compiler.option.optimization.level">
- </option>
- <option
- defaultValue="true"
- id="cdt.managedbuild.compiler.option.xlupc.exe.debug.debugging.g"
- superClass="xlc.c.compiler.option.ecd.g">
- </option>
- </tool>
- <tool
- id="cdt.managedbuild.tool.linker.xlupc.exe.debug"
- superClass="cdt.managedbuild.tool.xlupc.linker.exe">
- </tool>
- <tool
- id="cdt.managedbuild.tool.assembler.xlupc.exe.debug"
- superClass="cdt.managedbuild.tool.xlc.assembler">
- </tool>
- </toolChain>
- </configuration>
- <configuration
- artifactExtension="exe"
- cleanCommand="rm -rf"
- errorParsers="org.eclipse.cdt.errorparsers.xlc.XlcErrorParser"
- id="cdt.managedbuild.config.xlupc.exe.release"
- name="%ConfigName.Rel">
- <toolChain
- archList="all"
- configurationEnvironmentSupplier="org.eclipse.cdt.managedbuilder.xlc.aix.AixConfigurationEnvironmentSupplier"
- id="cdt.managedbuild.toolchain.xlupc.exe.release"
- name="%ToolChainName.Upc"
- osList="all"
- targetTool="cdt.managedbuild.tool.linker.xlupc.exe.release">
- <targetPlatform
- archList="all"
- id="cdt.managedbuild.targetplatform.xlupc.exe.release"
- name="%PlatformName.Rel"
- osList="all">
- </targetPlatform>
- <builder
- id="cdt.managedbuild.builder.xlupc.exe.release"
- superClass="cdt.managedbuild.target.gnu.builder">
- </builder>
- <tool
- id="cdt.managedbuild.tool.compiler.xlupc.exe.release"
- superClass="org.eclipse.cdt.managedbuilder.xlupc.ui.compiler">
- <option
- defaultValue="xlc.c.optimization.level.Level5"
- id="cdt.managedbuild.compiler.option.xlupc.exe.release.optimization.level"
- superClass="xlc.c.compiler.option.optimization.level">
- </option>
- <option
- defaultValue="false"
- id="cdt.managedbuild.compiler.option.xlupc.exe.release.debugging.g"
- superClass="xlc.c.compiler.option.ecd.g">
- </option>
- </tool>
- <tool
- id="cdt.managedbuild.tool.linker.xlupc.exe.release"
- superClass="cdt.managedbuild.tool.xlupc.linker.exe">
- </tool>
- <tool
- id="cdt.managedbuild.tool.assembler.xlupc.exe.release"
- superClass="cdt.managedbuild.tool.xlc.assembler">
- </tool>
- </toolChain>
- </configuration>
- </projectType>
- <projectType
- buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.xlupc.sharedLib"
- id="cdt.managedbuild.target.xlupc.so"
- isAbstract="false"
- isTest="false"
- name="%TargetName.xlupc.so"
- projectMacroSupplier="org.eclipse.cdt.managedbuilder.xlc.ui.XLCProjectMacroSupplier">
- <configuration
- artifactExtension="so"
- cleanCommand="rm -rf"
- errorParsers="org.eclipse.cdt.errorparsers.xlc.XlcErrorParser"
- id="cdt.managedbuild.config.xlupc.so.debug"
- name="%ConfigName.Dbg">
- <toolChain
- id="cdt.managedbuild.toolchain.xlupc.so.debug"
- name="%ToolChainName.Upc"
- targetTool="cdt.managedbuild.tool.linker.xlupc.so.debug">
- <targetPlatform
- archList="all"
- id="cdt.managedbuild.targetplatform.xlupc.so.debug"
- name="%PlatformName.Dbg"
- osList="all">
- </targetPlatform>
- <builder
- id="cdt.managedbuild.builder.xlupc.so.debug"
- superClass="cdt.managedbuild.target.gnu.builder">
- </builder>
- <tool
- id="cdt.managedbuild.tool.compiler.xlupc.so.debug"
- superClass="org.eclipse.cdt.managedbuilder.xlupc.ui.compiler">
- <option
- defaultValue="xlc.c.optimization.level.none"
- id="cdt.managedbuild.compiler.option.xlupc.so.debug.optimization.level"
- superClass="xlc.c.compiler.option.optimization.level">
- </option>
- <option
- defaultValue="true"
- id="cdt.managedbuild.compiler.option.xlupc.so.debug.debugging.g"
- superClass="xlc.c.compiler.option.ecd.g">
- </option>
- </tool>
- <tool
- id="cdt.managedbuild.tool.linker.xlupc.so.debug"
- superClass="cdt.managedbuild.tool.xlupc.linker.so">
- </tool>
- <tool
- id="cdt.managedbuild.tool.assembler.xlupc.so.debug"
- superClass="cdt.managedbuild.tool.xlc.assembler">
- </tool>
- </toolChain>
- </configuration>
- <configuration
- artifactExtension="so"
- cleanCommand="rm -rf"
- errorParsers="org.eclipse.cdt.errorparsers.xlc.XlcErrorParser"
- id="cdt.managedbuild.config.xlupc.so.release"
- name="%ConfigName.Rel">
- <toolChain
- id="cdt.managedbuild.toolchain.xlupc.so.release"
- name="%ToolChainName.Upc"
- targetTool="cdt.managedbuild.tool.linker.xlupc.so.release">
- <targetPlatform
- archList="all"
- id="cdt.managedbuild.targetplatform.xlupc.so.release"
- name="%PlatformName.Rel"
- osList="all">
- </targetPlatform>
- <builder
- id="cdt.managedbuild.builder.xlupc.so.release"
- superClass="cdt.managedbuild.target.gnu.builder">
- </builder>
- <tool
- id="cdt.managedbuild.tool.compiler.xlupc.so.release"
- superClass="org.eclipse.cdt.managedbuilder.xlupc.ui.compiler">
- <option
- defaultValue="xlc.c.optimization.level.Level5"
- id="cdt.managedbuild.compiler.option.xlupc.so.release.optimization.level"
- superClass="xlc.c.compiler.option.optimization.level">
- </option>
- <option
- defaultValue="false"
- id="cdt.managedbuild.compiler.option.xlupc.so.release.debugging.g"
- superClass="xlc.c.compiler.option.ecd.g">
- </option>
- </tool>
- <tool
- id="cdt.managedbuild.tool.linker.xlupc.so.release"
- superClass="cdt.managedbuild.tool.xlupc.linker.so">
- </tool>
- <tool
- id="cdt.managedbuild.tool.assembler.xlupc.so.release"
- superClass="cdt.managedbuild.tool.xlc.assembler">
- </tool>
- </toolChain>
- </configuration>
- </projectType>
- <projectType
- buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.xlupc.staticLib"
- id="cdt.managedbuild.target.xlupc.lib"
- isAbstract="false"
- isTest="false"
- name="%TargetName.xlupc.lib"
- projectMacroSupplier="org.eclipse.cdt.managedbuilder.xlc.ui.XLCProjectMacroSupplier">
- <configuration
- artifactExtension="lib"
- cleanCommand="rm -rf"
- errorParsers="org.eclipse.cdt.errorparsers.xlc.XlcErrorParser"
- id="cdt.managedbuild.config.xlupc.lib.debug"
- name="%ConfigName.Dbg">
- <toolChain
- id="cdt.managedbuild.toolchain.xlupc.lib.debug"
- name="%ToolChainName.Upc"
- targetTool="cdt.managedbuild.tool.archiver.xlupc.lib.debug">
- <targetPlatform
- archList="all"
- id="cdt.managedbuild.targetplatform.xlupc.lib.debug"
- name="%PlatformName.Dbg"
- osList="all">
- </targetPlatform>
- <builder
- id="cdt.managedbuild.builder.xlupc.lib.debug"
- superClass="cdt.managedbuild.target.gnu.builder">
- </builder>
- <tool
- id="cdt.managedbuild.tool.compiler.xlupc.lib.debug"
- superClass="org.eclipse.cdt.managedbuilder.xlupc.ui.compiler">
- <option
- defaultValue="xlc.c.optimization.level.none"
- id="cdt.managedbuild.compiler.option.xlupc.lib.debug.optimization.level"
- superClass="xlc.c.compiler.option.optimization.level">
- </option>
- <option
- defaultValue="true"
- id="cdt.managedbuild.compiler.option.xlupc.lib.debug.debugging.g"
- superClass="xlc.c.compiler.option.ecd.g">
- </option>
- </tool>
- <tool
- id="cdt.managedbuild.tool.archiver.xlupc.lib.debug"
- superClass="cdt.managedbuild.tool.xlc.archiver">
- </tool>
- <tool
- id="cdt.managedbuild.tool.assembler.xlupc.lib.debug"
- superClass="cdt.managedbuild.tool.xlc.assembler">
- </tool>
- </toolChain>
- </configuration>
- <configuration
- artifactExtension="lib"
- cleanCommand="rm -rf"
- errorParsers="org.eclipse.cdt.errorparsers.xlc.XlcErrorParser"
- id="cdt.managedbuild.config.xlupc.lib.release"
- name="%ConfigName.Rel">
- <toolChain
- id="cdt.managedbuild.toolchain.xlupc.lib.release"
- name="%ToolChainName.Upc"
- targetTool="cdt.managedbuild.tool.archiver.xlupc.lib.release">
- <targetPlatform
- archList="all"
- id="cdt.managedbuild.targetplatform.xlupc.lib.release"
- name="%PlatformName.Rel"
- osList="all">
- </targetPlatform>
- <builder
- id="cdt.managedbuild.builder.xlupc.lib.release"
- superClass="cdt.managedbuild.target.gnu.builder">
- </builder>
- <tool
- id="cdt.managedbuild.tool.compiler.xlupc.lib.release"
- superClass="org.eclipse.cdt.managedbuilder.xlupc.ui.compiler">
- <option
- defaultValue="xlc.c.optimization.level.Level5"
- id="cdt.managedbuild.compiler.option.xlupc.lib.release.optimization.level"
- superClass="xlc.c.compiler.option.optimization.level">
- </option>
- <option
- defaultValue="false"
- id="cdt.managedbuild.compiler.option.xlupc.lib.release.debugging.g"
- superClass="xlc.c.compiler.option.ecd.g">
- </option>
- </tool>
- <tool
- id="cdt.managedbuild.tool.archiver.xlupc.lib.release"
- superClass="cdt.managedbuild.tool.xlc.archiver">
- </tool>
- <tool
- id="cdt.managedbuild.tool.assembler.xlupc.lib.release"
- superClass="cdt.managedbuild.tool.xlc.assembler">
- </tool>
- </toolChain>
- </configuration>
- </projectType>
-
- <tool
- command="${XL_compilerRoot}/xlupc"
- id="cdt.managedbuild.tool.xlupc.linker.exe"
- isAbstract="false"
- name="%tool.linker.exe.name"
- natureFilter="cnature"
- superClass="cdt.managedbuild.tool.xlc.c.linker">
- </tool>
- <tool
- id="cdt.managedbuild.tool.xlupc.linker.so"
- isAbstract="false"
- name="%tool.linker.so.name">
- </tool>
-
-
- <tool
- command="${XL_compilerRoot}/xlupc"
- id="org.eclipse.cdt.managedbuilder.xlupc.ui.compiler.abstract"
- isAbstract="true"
- name="%tool.compiler.abstract.name"
- natureFilter="cnature"
- outputFlag="-o"
- superClass="cdt.managedbuild.tool.xlc.c.compiler.abstract">
- <optionCategory
- id="org.eclipse.cdt.managedbuilder.xlupc.ui.optionCategory.upc"
- name="%OptionCategory.upc">
- </optionCategory>
- <option
- category="org.eclipse.cdt.managedbuilder.xlupc.ui.optionCategory.upc"
- id="org.eclipse.cdt.managedbuilder.xlupc.ui.qsourcetype"
- isAbstract="false"
- name="%Option.qsourcetype"
- valueType="enumerated">
- <enumeratedOptionValue
- id="org.eclipse.cdt.managedbuilder.xlupc.ui.qsourcetype.empty"
- isDefault="true"
- name="">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qsourcetype=default"
- id="org.eclipse.cdt.managedbuilder.xlupc.ui.qsourcetype.default"
- name="%Option.qsourcetype.default">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qsourcetype=upc"
- id="org.eclipse.cdt.managedbuilder.xlupc.ui.qsourcetype.upc"
- name="%Option.qsourcetype.upc">
- </enumeratedOptionValue>
- </option>
- <option
- category="org.eclipse.cdt.managedbuilder.xlupc.ui.optionCategory.upc"
- id="org.eclipse.cdt.managedbuilder.xlupc.ui.runtime"
- isAbstract="false"
- name="%Option.runtime"
- valueType="enumerated">
- <enumeratedOptionValue
- id="org.eclipse.cdt.managedbuilder.xlupc.ui.runtime.empty"
- isDefault="true"
- name="">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qupc=rts=default"
- id="org.eclipse.cdt.managedbuilder.xlupc.ui.runtime.default"
- name="%Option.runtime.default">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qupc=rts=lapi"
- id="org.eclipse.cdt.managedbuilder.xlupc.ui.runtime.lapi"
- name="%Option.runtime.lapi">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-qupc=rts=smp"
- id="org.eclipse.cdt.managedbuilder.xlupc.ui.runtime.smp"
- name="%Option.runtime.smp">
- </enumeratedOptionValue>
- </option>
- <option
- category="org.eclipse.cdt.managedbuilder.xlupc.ui.optionCategory.upc"
- id="org.eclipse.cdt.managedbuilder.xlupc.ui.compilation"
- isAbstract="false"
- name="%Option.compilation"
- valueType="enumerated">
- <enumeratedOptionValue
- id="org.eclipse.cdt.managedbuilder.xlupc.ui.compilation.empty"
- isDefault="true"
- name="">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-q32"
- id="org.eclipse.cdt.managedbuilder.xlupc.ui.compilation.q32"
- name="%Option.compilation.q32">
- </enumeratedOptionValue>
- <enumeratedOptionValue
- command="-q64"
- id="org.eclipse.cdt.managedbuilder.xlupc.ui.compilation.q64"
- name="%Option.compilation.q64">
- </enumeratedOptionValue>
- </option>
- <option
- category="org.eclipse.cdt.managedbuilder.xlupc.ui.optionCategory.upc"
- command="-qupc=threads="
- id="org.eclipse.cdt.managedbuilder.xlupc.ui.threads"
- isAbstract="false"
- name="%Option.threads"
- valueType="string">
- </option>
-
- </tool>
- <tool
- id="org.eclipse.cdt.managedbuilder.xlupc.ui.compiler"
- isAbstract="false"
- name="%tool.compiler.name"
- superClass="org.eclipse.cdt.managedbuilder.xlupc.ui.compiler.abstract">
- <inputType
- dependencyContentType="org.eclipse.cdt.core.cHeader"
- dependencyExtensions="h"
- id="org.eclipse.cdt.managedbuilder.xlupc.ui.inputType.upc"
- name="%inputType.upc.name"
- primaryInput="true"
- scannerConfigDiscoveryProfileId="org.eclipse.cdt.managedbuilder.xlc.core.XLCManagedMakePerProjectProfile"
- sourceContentType="org.eclipse.cdt.core.parser.upc.upcSource"
- sources="upc">
- </inputType>
- <inputType
- dependencyContentType="org.eclipse.cdt.core.cHeader"
- dependencyExtensions="h"
- id="org.eclipse.cdt.managedbuilder.xlupc.ui.inputType.c"
- name="%inputType.c.name"
- primaryInput="true"
- scannerConfigDiscoveryProfileId="org.eclipse.cdt.managedbuilder.xlc.core.XLCManagedMakePerProjectProfile"
- sourceContentType="org.eclipse.cdt.core.cSource"
- sources="c">
- </inputType>
- <outputType
- buildVariable="OBJS"
- id="org.eclipse.cdt.managedbuilder.xlupc.ui.outputType.objectFile"
- outputs="o">
- </outputType>
- </tool>
- </extension>
- <extension
- point="org.eclipse.cdt.managedbuilder.ui.newWizardPages">
- <wizardPage
- ID="org.eclipse.cdt.managedbuilder.xlupc.ui.wizards.XLUpcSettingsWizardPage"
- operationClass="org.eclipse.cdt.managedbuilder.xlupc.ui.wizards.XLUpcSettingsWizardRunnable"
- pageClass="org.eclipse.cdt.managedbuilder.xlupc.ui.wizards.XLUpcSettingsWizardPage">
- <projectType
- projectTypeID="cdt.managedbuild.target.xlupc.exe">
- </projectType>
- <projectType
- projectTypeID="cdt.managedbuild.target.xlupc.so">
- </projectType>
- <projectType
- projectTypeID="cdt.managedbuild.target.xlupc.lib">
- </projectType>
- </wizardPage>
- </extension>
- <extension
- point="org.eclipse.ui.newWizards">
- <category
- id="cdt.managedbuild.wizardcategory.upc"
- name="%category.name.1">
- </category>
- <wizard
- canFinishEarly="false"
- category="cdt.managedbuild.wizardcategory.upc"
- class="org.eclipse.cdt.managedbuilder.xlupc.ui.wizards.UpcProjectWizard"
- hasPages="true"
- icon="icons/c-project.gif"
- id="cdt.managedbuilder.wizard.upc"
- name="%wizard.name.1"
- project="true">
- <description>
- %wizard.description
- </description>
- </wizard>
- </extension>
- <extension
- id="baseProperties"
- name="%extension.name"
- point="org.eclipse.cdt.managedbuilder.core.buildProperties">
- <propertyValue
- id="org.eclipse.cdt.build.core.buildArtefactType.xlupc.exe"
- name="%BuildProperty.type.name.xlupc.executable"
- property="org.eclipse.cdt.build.core.buildArtefactType">
- </propertyValue>
- <propertyValue
- id="org.eclipse.cdt.build.core.buildArtefactType.xlupc.staticLib"
- name="%BuildProperty.type.name.xlupc.staticLibrary"
- property="org.eclipse.cdt.build.core.buildArtefactType">
- </propertyValue>
- <propertyValue
- id="org.eclipse.cdt.build.core.buildArtefactType.xlupc.sharedLib"
- name="%BuildProperty.type.name.xlupc.sharedLibrary"
- property="org.eclipse.cdt.build.core.buildArtefactType">
- </propertyValue>
- </extension>
-
-</plugin>
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/src/org/eclipse/cdt/managedbuilder/xlupc/ui/Activator.java b/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/src/org/eclipse/cdt/managedbuilder/xlupc/ui/Activator.java
deleted file mode 100644
index 0c60ca8b38b..00000000000
--- a/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/src/org/eclipse/cdt/managedbuilder/xlupc/ui/Activator.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.managedbuilder.xlupc.ui;
-
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-import org.osgi.framework.BundleContext;
-
-public class Activator extends AbstractUIPlugin {
-
- public static final String PLUGIN_ID = "org.eclipse.cdt.managedbuilder.xlupc.ui"; //$NON-NLS-1$
-
- private static Activator plugin;
-
- public Activator() {
- }
-
- @Override
- public void start(BundleContext context) throws Exception {
- super.start(context);
- plugin = this;
- }
-
- @Override
- public void stop(BundleContext context) throws Exception {
- plugin = null;
- super.stop(context);
- }
-
- public static Activator getDefault() {
- return plugin;
- }
-
-}
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/src/org/eclipse/cdt/managedbuilder/xlupc/ui/Messages.java b/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/src/org/eclipse/cdt/managedbuilder/xlupc/ui/Messages.java
deleted file mode 100644
index c51cc76e54f..00000000000
--- a/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/src/org/eclipse/cdt/managedbuilder/xlupc/ui/Messages.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.cdt.managedbuilder.xlupc.ui;
-
-import org.eclipse.osgi.util.NLS;
-
-public class Messages extends NLS {
-
- private static final String BUNDLE_NAME = "org.eclipse.cdt.managedbuilder.xlupc.ui.messages"; //$NON-NLS-1$
-
- static {
- NLS.initializeMessages(BUNDLE_NAME, Messages.class);
- }
-
- private Messages() {
- }
-
- public static String UpcProjectWizard_0;
- public static String UpcProjectWizard_1;
- public static String XLUpcSettingsWizardPage_0;
- public static String XLUpcSettingsWizardPage_1;
-}
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/src/org/eclipse/cdt/managedbuilder/xlupc/ui/messages.properties b/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/src/org/eclipse/cdt/managedbuilder/xlupc/ui/messages.properties
deleted file mode 100644
index 17f1ba746bc..00000000000
--- a/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/src/org/eclipse/cdt/managedbuilder/xlupc/ui/messages.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-###############################################################################
-# Copyright (c) 2009 IBM Corporation and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-
-UpcProjectWizard_0=UPC Project
-UpcProjectWizard_1=Create UPC project of selected type
-
-XLUpcSettingsWizardPage_0=XL UPC Settings
-XLUpcSettingsWizardPage_1=XL Compiler Settings \ No newline at end of file
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/src/org/eclipse/cdt/managedbuilder/xlupc/ui/wizards/UpcProjectWizard.java b/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/src/org/eclipse/cdt/managedbuilder/xlupc/ui/wizards/UpcProjectWizard.java
deleted file mode 100644
index ee914ce5390..00000000000
--- a/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/src/org/eclipse/cdt/managedbuilder/xlupc/ui/wizards/UpcProjectWizard.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.managedbuilder.xlupc.ui.wizards;
-
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.cdt.core.CCorePlugin;
-import org.eclipse.cdt.core.CProjectNature;
-import org.eclipse.cdt.core.dom.upc.UPCLanguage;
-import org.eclipse.cdt.managedbuilder.xlupc.ui.Messages;
-import org.eclipse.cdt.ui.wizards.CDTCommonProjectWizard;
-import org.eclipse.cdt.ui.wizards.CDTMainWizardPage;
-import org.eclipse.cdt.ui.wizards.EntryDescriptor;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.NullProgressMonitor;
-
-@SuppressWarnings({ "nls", "serial" })
-public class UpcProjectWizard extends CDTCommonProjectWizard {
-
- private static final String ARTIFACT_TYPE_UPC_EXE = "org.eclipse.cdt.build.core.buildArtefactType.xlupc.exe";
- private static final String ARTIFACT_TYPE_UPC_EXE_DEFAULT = ARTIFACT_TYPE_UPC_EXE + ".default";
-
- private static final String ARTIFACT_TYPE_UPC_SO = "org.eclipse.cdt.build.core.buildArtefactType.xlupc.sharedLib";
- private static final String ARTIFACT_TYPE_UPC_SO_DEFAULT = ARTIFACT_TYPE_UPC_SO + ".default";
-
- private static final String ARTIFACT_TYPE_UPC_LIB = "org.eclipse.cdt.build.core.buildArtefactType.xlupc.staticLib";
- private static final String ARTIFACT_TYPE_UPC_LIB_DEFAULT = ARTIFACT_TYPE_UPC_LIB + ".default";
-
- private final static String PAGE_NAME = "org.eclipse.cdt.managedbuilder.xlupc.ui.mainpage";
-
- private static final Set<String> ALL_TYPES = new HashSet<String>() {
- {
- add(ARTIFACT_TYPE_UPC_EXE);
- add(ARTIFACT_TYPE_UPC_EXE_DEFAULT);
- add(ARTIFACT_TYPE_UPC_SO);
- add(ARTIFACT_TYPE_UPC_SO_DEFAULT);
- add(ARTIFACT_TYPE_UPC_LIB);
- add(ARTIFACT_TYPE_UPC_LIB_DEFAULT);
- }
- };
-
- public UpcProjectWizard() {
- super(Messages.UpcProjectWizard_0, Messages.UpcProjectWizard_1);
- }
-
- @Override
- public void addPages() {
- fMainPage = new CDTMainWizardPage(PAGE_NAME) {
- @Override
- public List<EntryDescriptor> filterItems(List<EntryDescriptor> items) {
- // filter out all non-UPC project types
- if (items != null) {
- Iterator<EntryDescriptor> iter = items.iterator();
- while (iter.hasNext()) {
- EntryDescriptor entryDescriptor = iter.next();
- if (!ALL_TYPES.contains(entryDescriptor.getId()))
- iter.remove();
- }
- }
- return items;
- }
- };
-
- fMainPage.setTitle(Messages.UpcProjectWizard_0);
- fMainPage.setDescription(Messages.UpcProjectWizard_1);
- addPage(fMainPage);
- }
-
- @Override
- protected IProject continueCreation(IProject prj) {
- try {
- CProjectNature.addCNature(prj, new NullProgressMonitor());
- } catch (CoreException e) {
- }
- return prj;
- }
-
- @Override
- public String[] getNatures() {
- return new String[] {
- CProjectNature.C_NATURE_ID/*, CCProjectNature.CC_NATURE_ID, RemoteNature.REMOTE_NATURE_ID*/ };
- }
-
- @Override
- public String[] getContentTypeIDs() {
- return new String[] { CCorePlugin.CONTENT_TYPE_CSOURCE, CCorePlugin.CONTENT_TYPE_CHEADER,
- UPCLanguage.UPC_CONTENT_TYPE_ID };
- }
-}
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/src/org/eclipse/cdt/managedbuilder/xlupc/ui/wizards/XLUpcSettingsWizardPage.java b/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/src/org/eclipse/cdt/managedbuilder/xlupc/ui/wizards/XLUpcSettingsWizardPage.java
deleted file mode 100644
index d0a1111f9a6..00000000000
--- a/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/src/org/eclipse/cdt/managedbuilder/xlupc/ui/wizards/XLUpcSettingsWizardPage.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.managedbuilder.xlupc.ui.wizards;
-
-import org.eclipse.cdt.managedbuilder.xlc.ui.wizards.XLCSettingsWizardPage;
-import org.eclipse.cdt.managedbuilder.xlupc.ui.Messages;
-
-/**
- *
- */
-public class XLUpcSettingsWizardPage extends XLCSettingsWizardPage {
-
- public static final String PAGE_ID = "org.eclipse.cdt.managedbuilder.xlupc.ui.wizards.XLUpcSettingsWizardPage"; //$NON-NLS-1$
-
- public XLUpcSettingsWizardPage(String pageID) {
- super(pageID);
- }
-
- public XLUpcSettingsWizardPage() {
- super();
- pageID = PAGE_ID;
- }
-
- @Override
- public String getName() {
- return Messages.XLUpcSettingsWizardPage_0;
- }
-
- @Override
- public String getTitle() {
- return Messages.XLUpcSettingsWizardPage_1;
- }
-
-}
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/src/org/eclipse/cdt/managedbuilder/xlupc/ui/wizards/XLUpcSettingsWizardRunnable.java b/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/src/org/eclipse/cdt/managedbuilder/xlupc/ui/wizards/XLUpcSettingsWizardRunnable.java
deleted file mode 100644
index 39c52c6e8c4..00000000000
--- a/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/src/org/eclipse/cdt/managedbuilder/xlupc/ui/wizards/XLUpcSettingsWizardRunnable.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2012 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.managedbuilder.xlupc.ui.wizards;
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.cdt.core.CCorePlugin;
-import org.eclipse.cdt.core.dom.upc.UPCLanguage;
-import org.eclipse.cdt.core.language.ProjectLanguageConfiguration;
-import org.eclipse.cdt.core.model.CoreModel;
-import org.eclipse.cdt.core.model.LanguageManager;
-import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
-import org.eclipse.cdt.core.settings.model.ICProjectDescription;
-import org.eclipse.cdt.managedbuilder.ui.wizards.MBSCustomPageManager;
-import org.eclipse.cdt.managedbuilder.xlc.ui.wizards.XLCSettingsWizardRunnable;
-import org.eclipse.cdt.ui.wizards.CDTCommonProjectWizard;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.content.IContentType;
-import org.eclipse.core.runtime.content.IContentTypeManager;
-import org.eclipse.jface.wizard.IWizardPage;
-
-public class XLUpcSettingsWizardRunnable extends XLCSettingsWizardRunnable {
-
- // now add UPC language mapping to the project
- private static final String[] CONTENT_TYPE_IDS = { CCorePlugin.CONTENT_TYPE_CHEADER,
- CCorePlugin.CONTENT_TYPE_CSOURCE };
-
- public XLUpcSettingsWizardRunnable() {
- pageId = XLUpcSettingsWizardPage.PAGE_ID;
- }
-
- @Override
- public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- super.run(monitor);
- // get a handle to the wizard
- IWizardPage[] pages = MBSCustomPageManager.getPages();
-
- if (pages != null && pages.length > 0) {
-
- CDTCommonProjectWizard wizard = (CDTCommonProjectWizard) pages[0].getWizard();
- IProject project = wizard.getLastProject();
- LanguageManager langManager = LanguageManager.getInstance();
-
- try {
- ProjectLanguageConfiguration langConfig = langManager.getLanguageConfiguration(project);
-
- ICProjectDescription projectDescription = CoreModel.getDefault().getProjectDescription(project, false);
- ICConfigurationDescription configDescription = projectDescription.getActiveConfiguration();
-
- IContentTypeManager contentTypeManager = Platform.getContentTypeManager();
-
- for (String id : CONTENT_TYPE_IDS) {
- if (contentTypeManager.getContentType(id) != null) {
- langConfig.addContentTypeMapping(configDescription, id, UPCLanguage.ID);
- }
- }
-
- langManager.storeLanguageMappingConfiguration(project, new IContentType[0]);
-
- } catch (CoreException e) {
- CCorePlugin.log(e);
- }
- }
- }
-}
diff --git a/xlc/org.eclipse.cdt.xlc.feature/.project b/xlc/org.eclipse.cdt.xlc.feature/.project
deleted file mode 100644
index 7405ef994aa..00000000000
--- a/xlc/org.eclipse.cdt.xlc.feature/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.cdt.xlc.feature</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.pde.FeatureBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.pde.FeatureNature</nature>
- </natures>
-</projectDescription>
diff --git a/xlc/org.eclipse.cdt.xlc.feature/build.properties b/xlc/org.eclipse.cdt.xlc.feature/build.properties
deleted file mode 100644
index cbfee450a7d..00000000000
--- a/xlc/org.eclipse.cdt.xlc.feature/build.properties
+++ /dev/null
@@ -1,16 +0,0 @@
-###############################################################################
-# Copyright (c) 2006, 2008 IBM Corporation and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-bin.includes = feature.xml,\
- feature.properties
-root = rootfiles
diff --git a/xlc/org.eclipse.cdt.xlc.feature/feature.properties b/xlc/org.eclipse.cdt.xlc.feature/feature.properties
deleted file mode 100644
index b502882cfa4..00000000000
--- a/xlc/org.eclipse.cdt.xlc.feature/feature.properties
+++ /dev/null
@@ -1,36 +0,0 @@
-###############################################################################
-# Copyright (c) 2006, 2010 IBM Corporation and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-# feature.properties
-# contains externalized strings for feature.xml
-# "%foo" in feature.xml corresponds to the key "foo" in this file
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# This file should be translated.
-
-# "featureName" property - name of the feature
-featureName=C/C++ IBM XLC Compiler Support
-
-# "providerName" property - name of the company that provides the feature
-providerName=Eclipse CDT
-
-# "description" property - description of the feature
-description=Support for the IBM XL C/C++ compilers.
-
-# copyright
-copyright=\
-Copyright (c) 2006, 2011 IBM Corporation and others.\n\
-This program and the accompanying materials\n\
-are made available under the terms of the Eclipse Public License 2.0\n\
-which accompanies this distribution, and is available at\n\
-https://www.eclipse.org/legal/epl-2.0/
-
diff --git a/xlc/org.eclipse.cdt.xlc.feature/feature.xml b/xlc/org.eclipse.cdt.xlc.feature/feature.xml
deleted file mode 100644
index 4df382bf991..00000000000
--- a/xlc/org.eclipse.cdt.xlc.feature/feature.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
- id="org.eclipse.cdt.xlc.feature"
- label="%featureName"
- version="9.10.0.qualifier"
- provider-name="%providerName"
- plugin="org.eclipse.cdt.managedbuilder.xlc.core"
- license-feature="org.eclipse.license"
- license-feature-version="0.0.0">
-
- <description>
- %description
- </description>
-
- <copyright>
- %copyright
- </copyright>
-
- <license url="%licenseURL">
- %license
- </license>
-
- <plugin
- id="org.eclipse.cdt.errorparsers.xlc"
- download-size="0"
- install-size="0"
- version="0.0.0"
- unpack="false"/>
-
- <plugin
- id="org.eclipse.cdt.managedbuilder.xlc.ui"
- download-size="0"
- install-size="0"
- version="0.0.0"
- unpack="false"/>
-
- <plugin
- id="org.eclipse.cdt.make.xlc.core"
- download-size="0"
- install-size="0"
- version="0.0.0"
- unpack="false"/>
-
- <plugin
- id="org.eclipse.cdt.managedbuilder.xlc.core"
- download-size="0"
- install-size="0"
- version="0.0.0"
- unpack="false"/>
-
- <plugin
- id="org.eclipse.cdt.core.lrparser.xlc"
- download-size="0"
- install-size="0"
- version="0.0.0"
- unpack="false"/>
-
- <plugin
- id="org.eclipse.cdt.managedbuilder.xlupc.ui"
- download-size="0"
- install-size="0"
- version="0.0.0"
- unpack="false"/>
-
-</feature>
diff --git a/xlc/org.eclipse.cdt.xlc.feature/sourceTemplateFeature/p2.inf b/xlc/org.eclipse.cdt.xlc.feature/sourceTemplateFeature/p2.inf
deleted file mode 100644
index edf5d0d1ab3..00000000000
--- a/xlc/org.eclipse.cdt.xlc.feature/sourceTemplateFeature/p2.inf
+++ /dev/null
@@ -1 +0,0 @@
-update.matchExp=providedCapabilities.exists(pc | pc.namespace == 'org.eclipse.equinox.p2.iu' && (pc.name == 'org.eclipse.cdt.xlc.source.feature.group' || pc.name == 'org.eclipse.cdt.xlc.feature.source.feature.group'))
diff --git a/xlc/org.eclipse.cdt.xlc.sdk-feature/.project b/xlc/org.eclipse.cdt.xlc.sdk-feature/.project
deleted file mode 100644
index 7df5619a80a..00000000000
--- a/xlc/org.eclipse.cdt.xlc.sdk-feature/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.cdt.xlc.sdk-feature</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.pde.FeatureBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.pde.FeatureNature</nature>
- </natures>
-</projectDescription>
diff --git a/xlc/org.eclipse.cdt.xlc.sdk-feature/build.properties b/xlc/org.eclipse.cdt.xlc.sdk-feature/build.properties
deleted file mode 100644
index 75fcb048d29..00000000000
--- a/xlc/org.eclipse.cdt.xlc.sdk-feature/build.properties
+++ /dev/null
@@ -1,17 +0,0 @@
- ###############################################################################
-# Copyright (c) 2006, 2008 IBM Corporation and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-bin.includes = feature.xml,\
- feature.properties
-root = rootfiles
-generate.feature@org.eclipse.cdt.xlc.source = org.eclipse.cdt.xlc.feature
diff --git a/xlc/org.eclipse.cdt.xlc.sdk-feature/feature-no-source.properties b/xlc/org.eclipse.cdt.xlc.sdk-feature/feature-no-source.properties
deleted file mode 100644
index 8c2b2f70c57..00000000000
--- a/xlc/org.eclipse.cdt.xlc.sdk-feature/feature-no-source.properties
+++ /dev/null
@@ -1 +0,0 @@
-# This file tells the Maven build to not generate sources for this feature
diff --git a/xlc/org.eclipse.cdt.xlc.sdk-feature/feature.properties b/xlc/org.eclipse.cdt.xlc.sdk-feature/feature.properties
deleted file mode 100644
index 6123503cfc3..00000000000
--- a/xlc/org.eclipse.cdt.xlc.sdk-feature/feature.properties
+++ /dev/null
@@ -1,36 +0,0 @@
-###############################################################################
-# Copyright (c) 2006, 2010 IBM Corporation and others.
-#
-# This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License 2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-2.0/
-#
-# SPDX-License-Identifier: EPL-2.0
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-# feature.properties
-# contains externalized strings for feature.xml
-# "%foo" in feature.xml corresponds to the key "foo" in this file
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# This file should be translated.
-
-# "featureName" property - name of the feature
-featureName=C/C++ IBM XLC Compiler Support SDK
-
-# "providerName" property - name of the company that provides the feature
-providerName=Eclipse CDT
-
-# "description" property - description of the feature
-description=Support for the IBM XL C/C++ compilers. Software development kit including source code and developer documentation.
-
-# copyright
-copyright=\
-Copyright (c) 2006, 2011 IBM Corporation and others.\n\
-This program and the accompanying materials\n\
-are made available under the terms of the Eclipse Public License 2.0\n\
-which accompanies this distribution, and is available at\n\
-https://www.eclipse.org/legal/epl-2.0/
-
diff --git a/xlc/org.eclipse.cdt.xlc.sdk-feature/feature.xml b/xlc/org.eclipse.cdt.xlc.sdk-feature/feature.xml
deleted file mode 100644
index f3fc5ecf950..00000000000
--- a/xlc/org.eclipse.cdt.xlc.sdk-feature/feature.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
- id="org.eclipse.cdt.xlc.sdk"
- label="%featureName"
- version="9.10.0.qualifier"
- provider-name="%providerName"
- license-feature="org.eclipse.license"
- license-feature-version="0.0.0">
-
- <description>
- %description
- </description>
-
- <copyright>
- %copyright
- </copyright>
-
- <license url="%licenseURL">
- %license
- </license>
-
- <includes
- id="org.eclipse.cdt.xlc.feature.source"
- version="0.0.0"/>
-
- <includes
- id="org.eclipse.cdt.xlc.feature"
- version="0.0.0"/>
-
-</feature>
diff --git a/xlc/pom.xml b/xlc/pom.xml
deleted file mode 100644
index 01e38d80fa1..00000000000
--- a/xlc/pom.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
- xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <groupId>org.eclipse.cdt</groupId>
- <artifactId>cdt-parent</artifactId>
- <version>9.10.0-SNAPSHOT</version>
- </parent>
-
- <artifactId>org.eclipse.cdt.xlc-parent</artifactId>
- <packaging>pom</packaging>
-</project>

Back to the top